summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--AdminSettings.sample32
-rw-r--r--CREDITS41
-rw-r--r--FAQ7
-rw-r--r--HISTORY410
-rw-r--r--Makefile28
-rw-r--r--RELEASE-NOTES1376
-rw-r--r--StartProfiler.sample (renamed from StartProfiler.php)3
-rw-r--r--UPGRADE23
-rw-r--r--api.php87
-rw-r--r--cache/.htaccess (renamed from t/.htaccess)0
-rw-r--r--config/Installer.php2350
-rw-r--r--config/index.php2191
-rw-r--r--config/index.php52
-rw-r--r--docs/design.txt2
-rw-r--r--docs/distributors.txt192
-rw-r--r--docs/export-0.4.xsd212
-rw-r--r--docs/export-demo.xml21
-rw-r--r--docs/hooks.txt755
-rw-r--r--docs/maintenance.txt57
-rw-r--r--docs/memcached.txt15
-rw-r--r--docs/php-memcached/ChangeLog65
-rw-r--r--docs/php-memcached/README1
-rw-r--r--docs/scripts.txt7
-rw-r--r--docs/skin.txt2
-rw-r--r--docs/upload.txt42
-rw-r--r--extensions/FluxBBAuthPlugin.php15
-rw-r--r--img_auth.php128
-rw-r--r--includes/AjaxDispatcher.php35
-rw-r--r--includes/AjaxFunctions.php96
-rw-r--r--includes/AjaxResponse.php44
-rw-r--r--includes/Article.php2217
-rw-r--r--includes/AuthPlugin.php47
-rw-r--r--includes/AutoLoader.php217
-rw-r--r--includes/Autopromote.php7
-rw-r--r--includes/BacklinkCache.php73
-rw-r--r--includes/BagOStuff.php660
-rw-r--r--includes/Block.php185
-rw-r--r--includes/CacheDependency.php43
-rw-r--r--includes/Category.php80
-rw-r--r--includes/CategoryPage.php233
-rw-r--r--includes/Categoryfinder.php142
-rw-r--r--includes/Cdb.php149
-rw-r--r--includes/Cdb_PHP.php374
-rw-r--r--includes/ChangeTags.php98
-rw-r--r--includes/ChangesFeed.php68
-rw-r--r--includes/ChangesList.php519
-rw-r--r--includes/ConfEditor.php1058
-rw-r--r--includes/Credits.php70
-rw-r--r--includes/DatabaseFunctions.php2
-rw-r--r--includes/DefaultSettings.php850
-rw-r--r--includes/Defines.php5
-rw-r--r--includes/DjVuImage.php26
-rw-r--r--includes/DoubleRedirectJob.php12
-rw-r--r--includes/EditPage.php1575
-rw-r--r--includes/Exception.php18
-rw-r--r--includes/Exif.php18
-rw-r--r--includes/Export.php73
-rw-r--r--includes/ExternalStore.php48
-rw-r--r--includes/ExternalStoreDB.php49
-rw-r--r--includes/ExternalStoreHttp.php18
-rw-r--r--includes/ExternalUser.php304
-rw-r--r--includes/FakeTitle.php83
-rw-r--r--includes/Feed.php111
-rw-r--r--includes/FeedUtils.php76
-rw-r--r--includes/FileDeleteForm.php60
-rw-r--r--includes/FileRevertForm.php13
-rw-r--r--includes/FileStore.php360
-rw-r--r--includes/ForkController.php24
-rw-r--r--includes/GlobalFunctions.php847
-rw-r--r--includes/HTMLCacheUpdate.php143
-rw-r--r--includes/HTMLFileCache.php21
-rw-r--r--includes/HTMLForm.php1391
-rw-r--r--includes/HistoryPage.php730
-rw-r--r--includes/Hooks.php80
-rw-r--r--includes/Html.php539
-rw-r--r--includes/HttpFunctions.php929
-rw-r--r--includes/IP.php160
-rw-r--r--includes/ImageFunctions.php6
-rw-r--r--includes/ImageGallery.php37
-rw-r--r--includes/ImagePage.php361
-rw-r--r--includes/ImageQueryPage.php18
-rw-r--r--includes/Import.php63
-rw-r--r--includes/Interwiki.php133
-rw-r--r--includes/JSMin.php290
-rw-r--r--includes/JobQueue.php42
-rw-r--r--includes/Licenses.php79
-rw-r--r--includes/LinkCache.php22
-rw-r--r--includes/LinkFilter.php84
-rw-r--r--includes/Linker.php1135
-rw-r--r--includes/LinksUpdate.php7
-rw-r--r--includes/LocalisationCache.php999
-rw-r--r--includes/LogEventsList.php628
-rw-r--r--includes/LogPage.php115
-rw-r--r--includes/MagicWord.php91
-rw-r--r--includes/Math.php39
-rw-r--r--includes/MediaTransformOutput.php30
-rw-r--r--includes/MessageCache.php295
-rw-r--r--includes/MimeMagic.php40
-rw-r--r--includes/Namespace.php47
-rw-r--r--includes/ObjectCache.php13
-rw-r--r--includes/OutputHandler.php22
-rw-r--r--includes/OutputPage.php1738
-rw-r--r--includes/PageHistory.php630
-rw-r--r--includes/Pager.php213
-rw-r--r--includes/PatrolLog.php36
-rw-r--r--includes/PoolCounter.php64
-rw-r--r--includes/Preferences.php1389
-rw-r--r--includes/PrefixSearch.php53
-rw-r--r--includes/Profiler.php15
-rw-r--r--includes/ProfilerSimpleText.php4
-rw-r--r--includes/ProtectionForm.php104
-rw-r--r--includes/ProxyTools.php29
-rw-r--r--includes/QueryPage.php174
-rw-r--r--includes/RawPage.php35
-rw-r--r--includes/RecentChange.php273
-rw-r--r--includes/RefreshLinksJob.php3
-rw-r--r--includes/Revision.php356
-rw-r--r--includes/Sanitizer.php392
-rw-r--r--includes/SearchMySQL.php270
-rw-r--r--includes/Setup.php100
-rw-r--r--includes/SiteConfiguration.php17
-rw-r--r--includes/SiteStats.php168
-rw-r--r--includes/Skin.php1064
-rw-r--r--includes/SkinTemplate.php593
-rw-r--r--includes/SpecialPage.php104
-rw-r--r--includes/SquidPurgeClient.php380
-rw-r--r--includes/SquidUpdate.php137
-rw-r--r--includes/Status.php16
-rw-r--r--includes/StreamFile.php7
-rw-r--r--includes/StubObject.php16
-rw-r--r--includes/Title.php740
-rw-r--r--includes/User.php829
-rw-r--r--includes/UserMailer.php19
-rw-r--r--includes/UserRightsProxy.php73
-rw-r--r--includes/WatchedItem.php4
-rw-r--r--includes/WatchlistEditor.php37
-rw-r--r--includes/WebRequest.php190
-rw-r--r--includes/WebResponse.php30
-rw-r--r--includes/WebStart.php7
-rw-r--r--includes/Wiki.php96
-rw-r--r--includes/WikiMap.php161
-rw-r--r--includes/Xml.php75
-rw-r--r--includes/ZhConversion.php1781
-rw-r--r--includes/api/ApiBase.php955
-rw-r--r--includes/api/ApiBlock.php105
-rw-r--r--includes/api/ApiDelete.php203
-rw-r--r--includes/api/ApiDisabled.php23
-rw-r--r--includes/api/ApiEditPage.php385
-rw-r--r--includes/api/ApiEmailUser.php34
-rw-r--r--includes/api/ApiExpandTemplates.php17
-rw-r--r--includes/api/ApiFeedWatchlist.php80
-rw-r--r--includes/api/ApiFormatBase.php115
-rw-r--r--includes/api/ApiFormatDbg.php18
-rw-r--r--includes/api/ApiFormatJson.php44
-rw-r--r--includes/api/ApiFormatPhp.php12
-rw-r--r--includes/api/ApiFormatRaw.php28
-rw-r--r--includes/api/ApiFormatTxt.php18
-rw-r--r--includes/api/ApiFormatWddx.php77
-rw-r--r--includes/api/ApiFormatXml.php117
-rw-r--r--includes/api/ApiFormatYaml.php12
-rw-r--r--includes/api/ApiFormatYaml_spyc.php98
-rw-r--r--includes/api/ApiHelp.php12
-rw-r--r--includes/api/ApiImport.php98
-rw-r--r--includes/api/ApiLogin.php99
-rw-r--r--includes/api/ApiLogout.php12
-rw-r--r--includes/api/ApiMain.php347
-rw-r--r--includes/api/ApiMove.php159
-rw-r--r--includes/api/ApiOpenSearch.php38
-rw-r--r--includes/api/ApiPageSet.php257
-rw-r--r--includes/api/ApiParamInfo.php134
-rw-r--r--includes/api/ApiParse.php194
-rw-r--r--includes/api/ApiPatrol.php50
-rw-r--r--includes/api/ApiProtect.php146
-rw-r--r--includes/api/ApiPurge.php41
-rw-r--r--includes/api/ApiQuery.php243
-rw-r--r--includes/api/ApiQueryAllCategories.php92
-rw-r--r--includes/api/ApiQueryAllLinks.php135
-rw-r--r--includes/api/ApiQueryAllUsers.php148
-rw-r--r--includes/api/ApiQueryAllimages.php121
-rw-r--r--includes/api/ApiQueryAllmessages.php118
-rw-r--r--includes/api/ApiQueryAllpages.php162
-rw-r--r--includes/api/ApiQueryBacklinks.php338
-rw-r--r--includes/api/ApiQueryBase.php196
-rw-r--r--includes/api/ApiQueryBlocks.php205
-rw-r--r--includes/api/ApiQueryCategories.php179
-rw-r--r--includes/api/ApiQueryCategoryInfo.php66
-rw-r--r--includes/api/ApiQueryCategoryMembers.php186
-rw-r--r--includes/api/ApiQueryDeletedrevs.php257
-rw-r--r--includes/api/ApiQueryDisabled.php12
-rw-r--r--includes/api/ApiQueryDuplicateFiles.php97
-rw-r--r--includes/api/ApiQueryExtLinksUsage.php125
-rw-r--r--includes/api/ApiQueryExternalLinks.php50
-rw-r--r--includes/api/ApiQueryImageInfo.php229
-rw-r--r--includes/api/ApiQueryImages.php101
-rw-r--r--includes/api/ApiQueryInfo.php447
-rw-r--r--includes/api/ApiQueryLangLinks.php75
-rw-r--r--includes/api/ApiQueryLinks.php120
-rw-r--r--includes/api/ApiQueryLogEvents.php274
-rw-r--r--includes/api/ApiQueryProtectedTitles.php112
-rw-r--r--includes/api/ApiQueryRandom.php82
-rw-r--r--includes/api/ApiQueryRecentChanges.php383
-rw-r--r--includes/api/ApiQueryRevisions.php435
-rw-r--r--includes/api/ApiQuerySearch.php129
-rw-r--r--includes/api/ApiQuerySiteinfo.php198
-rw-r--r--includes/api/ApiQueryTags.php181
-rw-r--r--includes/api/ApiQueryUserContributions.php305
-rw-r--r--includes/api/ApiQueryUserInfo.php99
-rw-r--r--includes/api/ApiQueryUsers.php202
-rw-r--r--includes/api/ApiQueryWatchlist.php316
-rw-r--r--includes/api/ApiQueryWatchlistRaw.php118
-rw-r--r--includes/api/ApiResult.php168
-rw-r--r--includes/api/ApiRollback.php76
-rw-r--r--includes/api/ApiUnblock.php59
-rw-r--r--includes/api/ApiUndelete.php87
-rw-r--r--includes/api/ApiUpload.php325
-rw-r--r--includes/api/ApiUserrights.php128
-rw-r--r--includes/api/ApiWatch.php46
-rw-r--r--includes/cbt/CBTCompiler.php366
-rw-r--r--includes/cbt/CBTProcessor.php539
-rw-r--r--includes/cbt/README108
-rw-r--r--includes/db/Database.php812
-rw-r--r--includes/db/DatabaseIbm_db2.php908
-rw-r--r--includes/db/DatabaseMssql.php86
-rw-r--r--includes/db/DatabaseMysql.php453
-rw-r--r--includes/db/DatabaseOracle.php1049
-rw-r--r--includes/db/DatabasePostgres.php184
-rw-r--r--includes/db/DatabaseSqlite.php432
-rw-r--r--includes/db/LBFactory.php14
-rw-r--r--includes/db/LoadBalancer.php21
-rw-r--r--includes/diff/DifferenceEngine.php933
-rw-r--r--includes/diff/DifferenceInterface.php1021
-rw-r--r--includes/diff/HTMLDiff.php1009
-rw-r--r--includes/diff/Nodes.php439
-rw-r--r--includes/extauth/Hardcoded.php79
-rw-r--r--includes/extauth/MediaWiki.php141
-rw-r--r--includes/extauth/vB.php140
-rw-r--r--includes/filerepo/ArchivedFile.php68
-rw-r--r--includes/filerepo/FSRepo.php103
-rw-r--r--includes/filerepo/File.php76
-rw-r--r--includes/filerepo/FileCache.php156
-rw-r--r--includes/filerepo/FileRepo.php175
-rw-r--r--includes/filerepo/ForeignAPIFile.php11
-rw-r--r--includes/filerepo/ForeignAPIRepo.php114
-rw-r--r--includes/filerepo/ForeignDBFile.php10
-rw-r--r--includes/filerepo/ForeignDBRepo.php15
-rw-r--r--includes/filerepo/ForeignDBViaLBRepo.php15
-rw-r--r--includes/filerepo/Image.php4
-rw-r--r--includes/filerepo/LocalFile.php224
-rw-r--r--includes/filerepo/LocalRepo.php97
-rw-r--r--includes/filerepo/NullRepo.php8
-rw-r--r--includes/filerepo/OldLocalFile.php24
-rw-r--r--includes/filerepo/RepoGroup.php124
-rw-r--r--includes/json/FormatJson.php32
-rw-r--r--includes/json/Services_JSON.php (renamed from includes/api/ApiFormatJson_json.php)20
-rw-r--r--includes/media/Bitmap.php121
-rw-r--r--includes/media/DjVu.php48
-rw-r--r--includes/media/GIF.php72
-rw-r--r--includes/media/GIFMetadataExtractor.php175
-rw-r--r--includes/media/Generic.php44
-rw-r--r--includes/media/SVG.php2
-rw-r--r--includes/memcached-client.php1990
-rw-r--r--includes/mime.types6
-rw-r--r--includes/normal/RandomTest.php2
-rw-r--r--includes/normal/Utf8CaseGenerate.php2
-rw-r--r--includes/normal/Utf8Test.php2
-rw-r--r--includes/normal/UtfNormal.php8
-rw-r--r--includes/normal/UtfNormalData.inc10
-rw-r--r--includes/normal/UtfNormalDataK.inc4
-rw-r--r--includes/normal/UtfNormalGenerate.php8
-rw-r--r--includes/parser/CoreParserFunctions.php148
-rw-r--r--includes/parser/CoreTagHooks.php49
-rw-r--r--includes/parser/DateFormatter.php10
-rw-r--r--includes/parser/LinkHolderArray.php3
-rw-r--r--includes/parser/Parser.php1121
-rw-r--r--includes/parser/ParserCache.php75
-rw-r--r--includes/parser/ParserOptions.php27
-rw-r--r--includes/parser/ParserOutput.php31
-rw-r--r--includes/parser/Preprocessor.php15
-rw-r--r--includes/parser/Preprocessor_DOM.php31
-rw-r--r--includes/parser/Preprocessor_Hash.php18
-rw-r--r--includes/search/SearchEngine.php (renamed from includes/SearchEngine.php)325
-rw-r--r--includes/search/SearchIBM_DB2.php (renamed from includes/SearchIBM_DB2.php)89
-rw-r--r--includes/search/SearchMySQL.php412
-rw-r--r--includes/search/SearchMySQL4.php (renamed from includes/SearchMySQL4.php)0
-rw-r--r--includes/search/SearchOracle.php (renamed from includes/SearchOracle.php)136
-rw-r--r--includes/search/SearchPostgres.php (renamed from includes/SearchPostgres.php)21
-rw-r--r--includes/search/SearchSqlite.php344
-rw-r--r--includes/search/SearchUpdate.php (renamed from includes/SearchUpdate.php)6
-rw-r--r--includes/specials/SpecialActiveusers.php195
-rw-r--r--includes/specials/SpecialAllmessages.php581
-rw-r--r--includes/specials/SpecialAllpages.php180
-rw-r--r--includes/specials/SpecialAncientpages.php28
-rw-r--r--includes/specials/SpecialBlankpage.php19
-rw-r--r--includes/specials/SpecialBlockip.php433
-rw-r--r--includes/specials/SpecialBooksources.php4
-rw-r--r--includes/specials/SpecialBrokenRedirects.php42
-rw-r--r--includes/specials/SpecialCategories.php13
-rw-r--r--includes/specials/SpecialConfirmemail.php14
-rw-r--r--includes/specials/SpecialContributions.php318
-rw-r--r--includes/specials/SpecialDeletedContributions.php243
-rw-r--r--includes/specials/SpecialDisambiguations.php2
-rw-r--r--includes/specials/SpecialDoubleRedirects.php28
-rw-r--r--includes/specials/SpecialEmailuser.php23
-rw-r--r--includes/specials/SpecialExport.php69
-rw-r--r--includes/specials/SpecialFewestrevisions.php21
-rw-r--r--includes/specials/SpecialFileDuplicateSearch.php23
-rw-r--r--includes/specials/SpecialFilepath.php4
-rw-r--r--includes/specials/SpecialImport.php15
-rw-r--r--includes/specials/SpecialIpblocklist.php64
-rw-r--r--includes/specials/SpecialLinkSearch.php18
-rw-r--r--includes/specials/SpecialListUserRestrictions.php162
-rw-r--r--includes/specials/SpecialListfiles.php22
-rw-r--r--includes/specials/SpecialListgrouprights.php74
-rw-r--r--includes/specials/SpecialListredirects.php9
-rw-r--r--includes/specials/SpecialListusers.php34
-rw-r--r--includes/specials/SpecialLockdb.php6
-rw-r--r--includes/specials/SpecialLog.php12
-rw-r--r--includes/specials/SpecialMIMEsearch.php20
-rw-r--r--includes/specials/SpecialMergeHistory.php38
-rw-r--r--includes/specials/SpecialMostlinked.php37
-rw-r--r--includes/specials/SpecialMostlinkedcategories.php2
-rw-r--r--includes/specials/SpecialMostlinkedtemplates.php33
-rw-r--r--includes/specials/SpecialMostrevisions.php9
-rw-r--r--includes/specials/SpecialMovepage.php138
-rw-r--r--includes/specials/SpecialNewimages.php81
-rw-r--r--includes/specials/SpecialNewpages.php38
-rw-r--r--includes/specials/SpecialPopularpages.php12
-rw-r--r--includes/specials/SpecialPreferences.php1315
-rw-r--r--includes/specials/SpecialPrefixindex.php28
-rw-r--r--includes/specials/SpecialProtectedpages.php47
-rw-r--r--includes/specials/SpecialProtectedtitles.php6
-rw-r--r--includes/specials/SpecialRandompage.php61
-rw-r--r--includes/specials/SpecialRandomredirect.php5
-rw-r--r--includes/specials/SpecialRecentchanges.php112
-rw-r--r--includes/specials/SpecialRecentchangeslinked.php72
-rw-r--r--includes/specials/SpecialRemoveRestrictions.php10
-rw-r--r--includes/specials/SpecialResetpass.php76
-rw-r--r--includes/specials/SpecialRestrictUser.php190
-rw-r--r--includes/specials/SpecialRevisiondelete.php2801
-rw-r--r--includes/specials/SpecialSearch.php1417
-rw-r--r--includes/specials/SpecialShortpages.php11
-rw-r--r--includes/specials/SpecialSpecialpages.php6
-rw-r--r--includes/specials/SpecialStatistics.php70
-rw-r--r--includes/specials/SpecialTags.php12
-rw-r--r--includes/specials/SpecialUncategorizedtemplates.php2
-rw-r--r--includes/specials/SpecialUndelete.php366
-rw-r--r--includes/specials/SpecialUnlockdb.php6
-rw-r--r--includes/specials/SpecialUnusedcategories.php2
-rw-r--r--includes/specials/SpecialUnusedimages.php16
-rw-r--r--includes/specials/SpecialUnusedtemplates.php13
-rw-r--r--includes/specials/SpecialUnwatchedpages.php12
-rw-r--r--includes/specials/SpecialUpload.php2374
-rw-r--r--includes/specials/SpecialUploadMogile.php135
-rw-r--r--includes/specials/SpecialUserlogin.php215
-rw-r--r--includes/specials/SpecialUserlogout.php10
-rw-r--r--includes/specials/SpecialUserrights.php390
-rw-r--r--includes/specials/SpecialVersion.php312
-rw-r--r--includes/specials/SpecialWantedcategories.php39
-rw-r--r--includes/specials/SpecialWantedfiles.php59
-rw-r--r--includes/specials/SpecialWantedpages.php93
-rw-r--r--includes/specials/SpecialWantedtemplates.php59
-rw-r--r--includes/specials/SpecialWatchlist.php120
-rw-r--r--includes/specials/SpecialWhatlinkshere.php84
-rw-r--r--includes/specials/SpecialWithoutinterwiki.php11
-rw-r--r--includes/templates/NoLocalSettings.php4
-rw-r--r--includes/templates/PHP4.php4
-rw-r--r--includes/templates/Userlogin.php111
-rw-r--r--includes/upload/UploadBase.php1091
-rw-r--r--includes/upload/UploadFromFile.php32
-rw-r--r--includes/upload/UploadFromStash.php84
-rw-r--r--includes/upload/UploadFromUrl.php137
-rw-r--r--includes/zhtable/Makefile2
-rw-r--r--includes/zhtable/Makefile.py83
-rw-r--r--includes/zhtable/simp2trad.manual459
-rw-r--r--includes/zhtable/simpphrases.manual122
-rw-r--r--includes/zhtable/simpphrases_exclude.manual4
-rw-r--r--includes/zhtable/toCN.manual12
-rw-r--r--includes/zhtable/toHK.manual206
-rw-r--r--includes/zhtable/toSimp.manual25
-rw-r--r--includes/zhtable/toTW.manual59
-rw-r--r--includes/zhtable/toTrad.manual77
-rw-r--r--includes/zhtable/trad2simp.manual265
-rw-r--r--includes/zhtable/tradphrases.manual972
-rw-r--r--includes/zhtable/tradphrases_exclude.manual53
-rw-r--r--index.php7
-rw-r--r--languages/Language.php1075
-rw-r--r--languages/LanguageConverter.php1533
-rw-r--r--languages/Names.php84
-rw-r--r--languages/classes/LanguageAm.php16
-rw-r--r--languages/classes/LanguageAr.php31
-rw-r--r--languages/classes/LanguageBe.php3
-rw-r--r--languages/classes/LanguageBe_tarask.php3
-rw-r--r--languages/classes/LanguageBh.php16
-rw-r--r--languages/classes/LanguageBs.php2
-rw-r--r--languages/classes/LanguageCy.php3
-rw-r--r--languages/classes/LanguageEo.php3
-rw-r--r--languages/classes/LanguageGa.php16
-rw-r--r--languages/classes/LanguageGan.php30
-rw-r--r--languages/classes/LanguageGd.php35
-rw-r--r--languages/classes/LanguageHi.php16
-rw-r--r--languages/classes/LanguageHr.php2
-rw-r--r--languages/classes/LanguageJa.php27
-rw-r--r--languages/classes/LanguageKk.php13
-rw-r--r--languages/classes/LanguageKu.php10
-rw-r--r--languages/classes/LanguageLn.php18
-rw-r--r--languages/classes/LanguageLv.php3
-rw-r--r--languages/classes/LanguageMg.php16
-rw-r--r--languages/classes/LanguageMk.php21
-rw-r--r--languages/classes/LanguageMl.php22
-rw-r--r--languages/classes/LanguageMo.php23
-rw-r--r--languages/classes/LanguageNso.php16
-rw-r--r--languages/classes/LanguagePl.php8
-rw-r--r--languages/classes/LanguageRo.php23
-rw-r--r--languages/classes/LanguageRu.php2
-rw-r--r--languages/classes/LanguageSe.php22
-rw-r--r--languages/classes/LanguageSh.php29
-rw-r--r--languages/classes/LanguageSma.php22
-rw-r--r--languages/classes/LanguageSr.php36
-rw-r--r--languages/classes/LanguageTi.php16
-rw-r--r--languages/classes/LanguageTl.php16
-rw-r--r--languages/classes/LanguageTr.php2
-rw-r--r--languages/classes/LanguageUk.php2
-rw-r--r--languages/classes/LanguageWa.php12
-rw-r--r--languages/classes/LanguageYue.php31
-rw-r--r--languages/classes/LanguageZh.php39
-rw-r--r--languages/classes/LanguageZh_hans.php43
-rw-r--r--languages/messages/MessagesAb.php45
-rw-r--r--languages/messages/MessagesAce.php107
-rw-r--r--languages/messages/MessagesAf.php1034
-rw-r--r--languages/messages/MessagesAk.php2
-rw-r--r--languages/messages/MessagesAln.php457
-rw-r--r--languages/messages/MessagesAls.php3
-rw-r--r--languages/messages/MessagesAm.php268
-rw-r--r--languages/messages/MessagesAn.php987
-rw-r--r--languages/messages/MessagesAng.php260
-rw-r--r--languages/messages/MessagesAr.php1175
-rw-r--r--languages/messages/MessagesArc.php437
-rw-r--r--languages/messages/MessagesArn.php89
-rw-r--r--languages/messages/MessagesArz.php1290
-rw-r--r--languages/messages/MessagesAs.php394
-rw-r--r--languages/messages/MessagesAst.php376
-rw-r--r--languages/messages/MessagesAv.php17
-rw-r--r--languages/messages/MessagesAvk.php217
-rw-r--r--languages/messages/MessagesAy.php22
-rw-r--r--languages/messages/MessagesAz.php533
-rw-r--r--languages/messages/MessagesBa.php608
-rw-r--r--languages/messages/MessagesBar.php110
-rw-r--r--languages/messages/MessagesBat_smg.php232
-rw-r--r--languages/messages/MessagesBcc.php713
-rw-r--r--languages/messages/MessagesBcl.php423
-rw-r--r--languages/messages/MessagesBe.php509
-rw-r--r--languages/messages/MessagesBe_tarask.php964
-rw-r--r--languages/messages/MessagesBe_x_old.php3
-rw-r--r--languages/messages/MessagesBg.php923
-rw-r--r--languages/messages/MessagesBh.php119
-rw-r--r--languages/messages/MessagesBi.php10
-rw-r--r--languages/messages/MessagesBm.php15
-rw-r--r--languages/messages/MessagesBn.php612
-rw-r--r--languages/messages/MessagesBo.php24
-rw-r--r--languages/messages/MessagesBpy.php359
-rw-r--r--languages/messages/MessagesBqi.php104
-rw-r--r--languages/messages/MessagesBr.php971
-rw-r--r--languages/messages/MessagesBs.php1054
-rw-r--r--languages/messages/MessagesBug.php72
-rw-r--r--languages/messages/MessagesCa.php958
-rw-r--r--languages/messages/MessagesCbk_zam.php9
-rw-r--r--languages/messages/MessagesCdo.php213
-rw-r--r--languages/messages/MessagesCe.php200
-rw-r--r--languages/messages/MessagesCeb.php485
-rw-r--r--languages/messages/MessagesCh.php197
-rw-r--r--languages/messages/MessagesChr.php14
-rw-r--r--languages/messages/MessagesCkb.php12
-rw-r--r--languages/messages/MessagesCkb_arab.php2997
-rw-r--r--languages/messages/MessagesCkb_latn.php12
-rw-r--r--languages/messages/MessagesCo.php55
-rw-r--r--languages/messages/MessagesCps.php946
-rw-r--r--languages/messages/MessagesCrh.php3
-rw-r--r--languages/messages/MessagesCrh_cyrl.php555
-rw-r--r--languages/messages/MessagesCrh_latn.php556
-rw-r--r--languages/messages/MessagesCs.php1116
-rw-r--r--languages/messages/MessagesCsb.php117
-rw-r--r--languages/messages/MessagesCu.php125
-rw-r--r--languages/messages/MessagesCv.php224
-rw-r--r--languages/messages/MessagesCy.php1039
-rw-r--r--languages/messages/MessagesDa.php968
-rw-r--r--languages/messages/MessagesDe.php1084
-rw-r--r--languages/messages/MessagesDe_ch.php5
-rw-r--r--languages/messages/MessagesDe_formal.php125
-rw-r--r--languages/messages/MessagesDiq.php933
-rw-r--r--languages/messages/MessagesDk.php3
-rw-r--r--languages/messages/MessagesDsb.php963
-rw-r--r--languages/messages/MessagesDv.php50
-rw-r--r--languages/messages/MessagesDz.php95
-rw-r--r--languages/messages/MessagesEe.php134
-rw-r--r--languages/messages/MessagesEl.php974
-rw-r--r--languages/messages/MessagesEml.php12
-rw-r--r--languages/messages/MessagesEn.php1192
-rw-r--r--languages/messages/MessagesEnRTL.php3
-rw-r--r--languages/messages/MessagesEn_gb.php2
-rw-r--r--languages/messages/MessagesEo.php964
-rw-r--r--languages/messages/MessagesEs.php1112
-rw-r--r--languages/messages/MessagesEt.php1134
-rw-r--r--languages/messages/MessagesEu.php922
-rw-r--r--languages/messages/MessagesExt.php327
-rw-r--r--languages/messages/MessagesFa.php984
-rw-r--r--languages/messages/MessagesFf.php2
-rw-r--r--languages/messages/MessagesFi.php956
-rw-r--r--languages/messages/MessagesFiu_vro.php3
-rw-r--r--languages/messages/MessagesFj.php18
-rw-r--r--languages/messages/MessagesFo.php151
-rw-r--r--languages/messages/MessagesFr.php1186
-rw-r--r--languages/messages/MessagesFrc.php245
-rw-r--r--languages/messages/MessagesFrp.php1235
-rw-r--r--languages/messages/MessagesFrr.php1213
-rw-r--r--languages/messages/MessagesFur.php603
-rw-r--r--languages/messages/MessagesFy.php496
-rw-r--r--languages/messages/MessagesGa.php438
-rw-r--r--languages/messages/MessagesGag.php184
-rw-r--r--languages/messages/MessagesGan.php2179
-rw-r--r--languages/messages/MessagesGan_hans.php347
-rw-r--r--languages/messages/MessagesGan_hant.php372
-rw-r--r--languages/messages/MessagesGd.php151
-rw-r--r--languages/messages/MessagesGl.php1090
-rw-r--r--languages/messages/MessagesGlk.php8
-rw-r--r--languages/messages/MessagesGn.php43
-rw-r--r--languages/messages/MessagesGot.php44
-rw-r--r--languages/messages/MessagesGrc.php746
-rw-r--r--languages/messages/MessagesGsw.php966
-rw-r--r--languages/messages/MessagesGu.php420
-rw-r--r--languages/messages/MessagesGv.php175
-rw-r--r--languages/messages/MessagesHa.php721
-rw-r--r--languages/messages/MessagesHak.php272
-rw-r--r--languages/messages/MessagesHaw.php287
-rw-r--r--languages/messages/MessagesHe.php1321
-rw-r--r--languages/messages/MessagesHi.php758
-rw-r--r--languages/messages/MessagesHif.php3
-rw-r--r--languages/messages/MessagesHif_latn.php949
-rw-r--r--languages/messages/MessagesHil.php52
-rw-r--r--languages/messages/MessagesHr.php967
-rw-r--r--languages/messages/MessagesHsb.php951
-rw-r--r--languages/messages/MessagesHt.php178
-rw-r--r--languages/messages/MessagesHu.php1022
-rw-r--r--languages/messages/MessagesHy.php699
-rw-r--r--languages/messages/MessagesIa.php960
-rw-r--r--languages/messages/MessagesId.php1366
-rw-r--r--languages/messages/MessagesIe.php36
-rw-r--r--languages/messages/MessagesIg.php274
-rw-r--r--languages/messages/MessagesIke_cans.php57
-rw-r--r--languages/messages/MessagesIke_latn.php53
-rw-r--r--languages/messages/MessagesIlo.php225
-rw-r--r--languages/messages/MessagesInh.php28
-rw-r--r--languages/messages/MessagesIo.php496
-rw-r--r--languages/messages/MessagesIs.php501
-rw-r--r--languages/messages/MessagesIt.php1006
-rw-r--r--languages/messages/MessagesIu.php3
-rw-r--r--languages/messages/MessagesJa.php1096
-rw-r--r--languages/messages/MessagesJbo.php25
-rw-r--r--languages/messages/MessagesJut.php130
-rw-r--r--languages/messages/MessagesJv.php733
-rw-r--r--languages/messages/MessagesKa.php958
-rw-r--r--languages/messages/MessagesKaa.php248
-rw-r--r--languages/messages/MessagesKab.php238
-rw-r--r--languages/messages/MessagesKg.php12
-rw-r--r--languages/messages/MessagesKiu.php1411
-rw-r--r--languages/messages/MessagesKk_arab.php564
-rw-r--r--languages/messages/MessagesKk_cn.php3
-rw-r--r--languages/messages/MessagesKk_cyrl.php595
-rw-r--r--languages/messages/MessagesKk_kz.php3
-rw-r--r--languages/messages/MessagesKk_latn.php562
-rw-r--r--languages/messages/MessagesKk_tr.php3
-rw-r--r--languages/messages/MessagesKl.php197
-rw-r--r--languages/messages/MessagesKm.php943
-rw-r--r--languages/messages/MessagesKn.php389
-rw-r--r--languages/messages/MessagesKo.php1029
-rw-r--r--languages/messages/MessagesKo_kp.php33
-rw-r--r--languages/messages/MessagesKoi.php630
-rw-r--r--languages/messages/MessagesKrc.php3219
-rw-r--r--languages/messages/MessagesKri.php41
-rw-r--r--languages/messages/MessagesKrj.php33
-rw-r--r--languages/messages/MessagesKs.php3
-rw-r--r--languages/messages/MessagesKsh.php975
-rw-r--r--languages/messages/MessagesKu.php3
-rw-r--r--languages/messages/MessagesKu_arab.php1065
-rw-r--r--languages/messages/MessagesKu_latn.php239
-rw-r--r--languages/messages/MessagesKv.php4
-rw-r--r--languages/messages/MessagesKw.php355
-rw-r--r--languages/messages/MessagesKy.php78
-rw-r--r--languages/messages/MessagesLa.php510
-rw-r--r--languages/messages/MessagesLad.php112
-rw-r--r--languages/messages/MessagesLb.php1015
-rw-r--r--languages/messages/MessagesLbe.php13
-rw-r--r--languages/messages/MessagesLez.php15
-rw-r--r--languages/messages/MessagesLfn.php148
-rw-r--r--languages/messages/MessagesLg.php76
-rw-r--r--languages/messages/MessagesLi.php745
-rw-r--r--languages/messages/MessagesLij.php192
-rw-r--r--languages/messages/MessagesLld.php9
-rw-r--r--languages/messages/MessagesLmo.php425
-rw-r--r--languages/messages/MessagesLn.php88
-rw-r--r--languages/messages/MessagesLo.php97
-rw-r--r--languages/messages/MessagesLoz.php304
-rw-r--r--languages/messages/MessagesLt.php989
-rw-r--r--languages/messages/MessagesLtg.php746
-rw-r--r--languages/messages/MessagesLv.php472
-rw-r--r--languages/messages/MessagesLzh.php891
-rw-r--r--languages/messages/MessagesLzz.php78
-rw-r--r--languages/messages/MessagesMai.php11
-rw-r--r--languages/messages/MessagesMap_bms.php4
-rw-r--r--languages/messages/MessagesMdf.php387
-rw-r--r--languages/messages/MessagesMg.php876
-rw-r--r--languages/messages/MessagesMhr.php260
-rw-r--r--languages/messages/MessagesMi.php12
-rw-r--r--languages/messages/MessagesMk.php974
-rw-r--r--languages/messages/MessagesMl.php1336
-rw-r--r--languages/messages/MessagesMn.php556
-rw-r--r--languages/messages/MessagesMo.php13
-rw-r--r--languages/messages/MessagesMr.php419
-rw-r--r--languages/messages/MessagesMrj.php716
-rw-r--r--languages/messages/MessagesMs.php762
-rw-r--r--languages/messages/MessagesMt.php718
-rw-r--r--languages/messages/MessagesMwl.php184
-rw-r--r--languages/messages/MessagesMy.php43
-rw-r--r--languages/messages/MessagesMyv.php533
-rw-r--r--languages/messages/MessagesMzn.php301
-rw-r--r--languages/messages/MessagesNa.php14
-rw-r--r--languages/messages/MessagesNah.php324
-rw-r--r--languages/messages/MessagesNan.php154
-rw-r--r--languages/messages/MessagesNap.php54
-rw-r--r--languages/messages/MessagesNb.php3
-rw-r--r--languages/messages/MessagesNds.php691
-rw-r--r--languages/messages/MessagesNds_nl.php1076
-rw-r--r--languages/messages/MessagesNe.php630
-rw-r--r--languages/messages/MessagesNew.php47
-rw-r--r--languages/messages/MessagesNiu.php24
-rw-r--r--languages/messages/MessagesNl.php1032
-rw-r--r--languages/messages/MessagesNn.php931
-rw-r--r--languages/messages/MessagesNo.php985
-rw-r--r--languages/messages/MessagesNov.php54
-rw-r--r--languages/messages/MessagesNso.php221
-rw-r--r--languages/messages/MessagesNv.php41
-rw-r--r--languages/messages/MessagesOc.php1074
-rw-r--r--languages/messages/MessagesOr.php4
-rw-r--r--languages/messages/MessagesOs.php289
-rw-r--r--languages/messages/MessagesPa.php218
-rw-r--r--languages/messages/MessagesPag.php66
-rw-r--r--languages/messages/MessagesPam.php309
-rw-r--r--languages/messages/MessagesPap.php43
-rw-r--r--languages/messages/MessagesPcd.php856
-rw-r--r--languages/messages/MessagesPdc.php254
-rw-r--r--languages/messages/MessagesPdt.php80
-rw-r--r--languages/messages/MessagesPfl.php41
-rw-r--r--languages/messages/MessagesPih.php4
-rw-r--r--languages/messages/MessagesPl.php975
-rw-r--r--languages/messages/MessagesPms.php1006
-rw-r--r--languages/messages/MessagesPnb.php269
-rw-r--r--languages/messages/MessagesPnt.php286
-rw-r--r--languages/messages/MessagesPrg.php2846
-rw-r--r--languages/messages/MessagesPs.php472
-rw-r--r--languages/messages/MessagesPt.php1262
-rw-r--r--languages/messages/MessagesPt_br.php1123
-rw-r--r--languages/messages/MessagesQqq.php1096
-rw-r--r--languages/messages/MessagesQu.php1116
-rw-r--r--languages/messages/MessagesRgn.php683
-rw-r--r--languages/messages/MessagesRif.php114
-rw-r--r--languages/messages/MessagesRm.php358
-rw-r--r--languages/messages/MessagesRmy.php136
-rw-r--r--languages/messages/MessagesRo.php1111
-rw-r--r--languages/messages/MessagesRoa_rup.php22
-rw-r--r--languages/messages/MessagesRoa_tara.php940
-rw-r--r--languages/messages/MessagesRu.php1052
-rw-r--r--languages/messages/MessagesRue.php2069
-rw-r--r--languages/messages/MessagesRuq.php3
-rw-r--r--languages/messages/MessagesRuq_cyrl.php10
-rw-r--r--languages/messages/MessagesRuq_grek.php9
-rw-r--r--languages/messages/MessagesRuq_latn.php10
-rw-r--r--languages/messages/MessagesSa.php115
-rw-r--r--languages/messages/MessagesSah.php977
-rw-r--r--languages/messages/MessagesSc.php352
-rw-r--r--languages/messages/MessagesScn.php743
-rw-r--r--languages/messages/MessagesSco.php228
-rw-r--r--languages/messages/MessagesSd.php157
-rw-r--r--languages/messages/MessagesSdc.php323
-rw-r--r--languages/messages/MessagesSe.php195
-rw-r--r--languages/messages/MessagesSei.php197
-rw-r--r--languages/messages/MessagesSg.php6
-rw-r--r--languages/messages/MessagesSh.php584
-rw-r--r--languages/messages/MessagesShi.php177
-rw-r--r--languages/messages/MessagesSi.php941
-rw-r--r--languages/messages/MessagesSimple.php3
-rw-r--r--languages/messages/MessagesSk.php1034
-rw-r--r--languages/messages/MessagesSl.php1125
-rw-r--r--languages/messages/MessagesSli.php2856
-rw-r--r--languages/messages/MessagesSm.php6
-rw-r--r--languages/messages/MessagesSma.php115
-rw-r--r--languages/messages/MessagesSn.php16
-rw-r--r--languages/messages/MessagesSo.php86
-rw-r--r--languages/messages/MessagesSq.php552
-rw-r--r--languages/messages/MessagesSr_ec.php1020
-rw-r--r--languages/messages/MessagesSr_el.php1014
-rw-r--r--languages/messages/MessagesSrn.php359
-rw-r--r--languages/messages/MessagesSs.php60
-rw-r--r--languages/messages/MessagesSt.php4
-rw-r--r--languages/messages/MessagesStq.php954
-rw-r--r--languages/messages/MessagesSu.php608
-rw-r--r--languages/messages/MessagesSv.php993
-rw-r--r--languages/messages/MessagesSw.php792
-rw-r--r--languages/messages/MessagesSzl.php286
-rw-r--r--languages/messages/MessagesTa.php278
-rw-r--r--languages/messages/MessagesTcy.php85
-rw-r--r--languages/messages/MessagesTe.php1059
-rw-r--r--languages/messages/MessagesTet.php158
-rw-r--r--languages/messages/MessagesTg.php3
-rw-r--r--languages/messages/MessagesTg_cyrl.php416
-rw-r--r--languages/messages/MessagesTg_latn.php2417
-rw-r--r--languages/messages/MessagesTh.php910
-rw-r--r--languages/messages/MessagesTi.php21
-rw-r--r--languages/messages/MessagesTk.php972
-rw-r--r--languages/messages/MessagesTl.php999
-rw-r--r--languages/messages/MessagesTlh.php28
-rw-r--r--languages/messages/MessagesTn.php8
-rw-r--r--languages/messages/MessagesTo.php113
-rw-r--r--languages/messages/MessagesTokipona.php11
-rw-r--r--languages/messages/MessagesTp.php3
-rw-r--r--languages/messages/MessagesTpi.php16
-rw-r--r--languages/messages/MessagesTr.php1137
-rw-r--r--languages/messages/MessagesTs.php40
-rw-r--r--languages/messages/MessagesTt.php5
-rw-r--r--languages/messages/MessagesTt_cyrl.php500
-rw-r--r--languages/messages/MessagesTt_latn.php222
-rw-r--r--languages/messages/MessagesTy.php23
-rw-r--r--languages/messages/MessagesTyv.php177
-rw-r--r--languages/messages/MessagesUdm.php17
-rw-r--r--languages/messages/MessagesUg.php3
-rw-r--r--languages/messages/MessagesUg_arab.php3212
-rw-r--r--languages/messages/MessagesUg_latn.php27
-rw-r--r--languages/messages/MessagesUk.php1074
-rw-r--r--languages/messages/MessagesUr.php522
-rw-r--r--languages/messages/MessagesUz.php96
-rw-r--r--languages/messages/MessagesVe.php2
-rw-r--r--languages/messages/MessagesVec.php983
-rw-r--r--languages/messages/MessagesVep.php913
-rw-r--r--languages/messages/MessagesVi.php1002
-rw-r--r--languages/messages/MessagesVls.php34
-rw-r--r--languages/messages/MessagesVmf.php985
-rw-r--r--languages/messages/MessagesVo.php480
-rw-r--r--languages/messages/MessagesVot.php642
-rw-r--r--languages/messages/MessagesVro.php315
-rw-r--r--languages/messages/MessagesWa.php381
-rw-r--r--languages/messages/MessagesWar.php105
-rw-r--r--languages/messages/MessagesWo.php555
-rw-r--r--languages/messages/MessagesWuu.php458
-rw-r--r--languages/messages/MessagesXal.php363
-rw-r--r--languages/messages/MessagesXh.php15
-rw-r--r--languages/messages/MessagesXmf.php61
-rw-r--r--languages/messages/MessagesYdd.php10
-rw-r--r--languages/messages/MessagesYi.php880
-rw-r--r--languages/messages/MessagesYo.php623
-rw-r--r--languages/messages/MessagesYue.php982
-rw-r--r--languages/messages/MessagesZa.php33
-rw-r--r--languages/messages/MessagesZea.php384
-rw-r--r--languages/messages/MessagesZh.php16
-rw-r--r--languages/messages/MessagesZh_classical.php3
-rw-r--r--languages/messages/MessagesZh_cn.php4
-rw-r--r--languages/messages/MessagesZh_hans.php1011
-rw-r--r--languages/messages/MessagesZh_hant.php1068
-rw-r--r--languages/messages/MessagesZh_hk.php111
-rw-r--r--languages/messages/MessagesZh_min_nan.php3
-rw-r--r--languages/messages/MessagesZh_mo.php3
-rw-r--r--languages/messages/MessagesZh_my.php3
-rw-r--r--languages/messages/MessagesZh_sg.php3
-rw-r--r--languages/messages/MessagesZh_tw.php1748
-rw-r--r--languages/messages/MessagesZh_yue.php3
-rw-r--r--languages/messages/MessagesZu.php33
-rw-r--r--maintenance/7zip.inc69
-rw-r--r--maintenance/Doxyfile2
-rw-r--r--maintenance/FiveUpgrade.inc2
-rw-r--r--maintenance/Maintenance.php860
-rw-r--r--maintenance/README6
-rw-r--r--maintenance/addwiki.php412
-rw-r--r--maintenance/apache-ampersand.diff53
-rw-r--r--maintenance/archives/patch-change_tag-indexes.sql21
-rw-r--r--maintenance/archives/patch-eu_local_id.sql3
-rw-r--r--maintenance/archives/patch-external_user.sql9
-rw-r--r--maintenance/archives/patch-filearchive-user-index.sql (renamed from maintenance/archives/patch-filearhive-user-index.sql)0
-rw-r--r--maintenance/archives/patch-job.sql18
-rw-r--r--maintenance/archives/patch-l10n_cache.sql8
-rw-r--r--maintenance/archives/patch-log_search-rename-index.sql7
-rw-r--r--maintenance/archives/patch-log_search.sql10
-rw-r--r--maintenance/archives/patch-log_user_text.sql5
-rw-r--r--maintenance/archives/patch-mime_minor_length.sql10
-rw-r--r--maintenance/archives/patch-rd_interwiki.sql6
-rw-r--r--maintenance/archives/patch-tc-timestamp.sql4
-rw-r--r--maintenance/archives/patch-transcache.sql2
-rw-r--r--maintenance/archives/patch-user_properties.sql22
-rw-r--r--maintenance/archives/populateSha1.php59
-rw-r--r--maintenance/archives/rebuildRecentchanges.inc123
-rw-r--r--maintenance/archives/upgradeWatchlist.php67
-rw-r--r--maintenance/attachLatest.php96
-rw-r--r--maintenance/attribute.php106
-rw-r--r--maintenance/backup.inc18
-rw-r--r--maintenance/benchmarkPurge.php157
-rw-r--r--maintenance/changePassword.php78
-rw-r--r--maintenance/checkAutoLoader.php70
-rw-r--r--maintenance/checkBadRedirects.php75
-rw-r--r--maintenance/checkImages.php121
-rw-r--r--maintenance/checkSyntax.php296
-rw-r--r--maintenance/checkUsernames.php44
-rw-r--r--maintenance/cleanupCaps.php57
-rw-r--r--maintenance/cleanupImages.php88
-rw-r--r--maintenance/cleanupSpam.php211
-rw-r--r--maintenance/cleanupTable.inc161
-rw-r--r--maintenance/cleanupTitles.php67
-rw-r--r--maintenance/cleanupWatchlist.php60
-rw-r--r--maintenance/clear_interwiki_cache.php56
-rw-r--r--maintenance/clear_stats.php71
-rw-r--r--maintenance/commandLine.inc269
-rw-r--r--maintenance/convertLinks.inc6
-rw-r--r--maintenance/convertLinks.php239
-rw-r--r--maintenance/convertUserOptions.php72
-rw-r--r--maintenance/counter.php12
-rw-r--r--maintenance/createAndPromote.php111
-rw-r--r--maintenance/deleteArchivedFiles.inc56
-rw-r--r--maintenance/deleteArchivedFiles.php85
-rw-r--r--maintenance/deleteArchivedRevisions.inc34
-rw-r--r--maintenance/deleteArchivedRevisions.php71
-rw-r--r--maintenance/deleteBatch.php172
-rw-r--r--maintenance/deleteDefaultMessages.php90
-rw-r--r--maintenance/deleteImageMemcached.php73
-rw-r--r--maintenance/deleteOldRevisions.inc68
-rw-r--r--maintenance/deleteOldRevisions.php102
-rw-r--r--maintenance/deleteOrphanedRevisions.inc.php32
-rw-r--r--maintenance/deleteOrphanedRevisions.php118
-rw-r--r--maintenance/deleteRevision.php104
-rw-r--r--maintenance/deleteSelfExternals.php54
-rw-r--r--maintenance/doMaintenance.php102
-rw-r--r--maintenance/dumpBackup.php20
-rw-r--r--maintenance/dumpInterwiki.inc3
-rw-r--r--maintenance/dumpInterwiki.php7
-rw-r--r--maintenance/dumpLinks.php60
-rw-r--r--maintenance/dumpSisterSites.php47
-rw-r--r--maintenance/dumpTextPass.php80
-rw-r--r--maintenance/dumpUploads.php87
-rw-r--r--maintenance/edit.php144
-rw-r--r--maintenance/fetchInterwiki.pl102
-rw-r--r--maintenance/fetchText.php82
-rw-r--r--maintenance/findhooks.php285
-rw-r--r--maintenance/fixSlaveDesync.php335
-rw-r--r--maintenance/fixTimestamps.php200
-rw-r--r--maintenance/fixUserRegistration.php61
-rw-r--r--maintenance/fuzz-tester.php8
-rw-r--r--maintenance/gearman/gearman.inc2
-rw-r--r--maintenance/gearman/gearmanWorker.php2
-rw-r--r--maintenance/generateSitemap.php158
-rw-r--r--maintenance/getLagTimes.php59
-rw-r--r--maintenance/getSlaveServer.php60
-rw-r--r--maintenance/getText.php58
-rw-r--r--maintenance/httpSessionDownload.php57
-rw-r--r--maintenance/ibm_db2/README40
-rw-r--r--maintenance/ibm_db2/tables.sql551
-rw-r--r--maintenance/importDump.php13
-rw-r--r--maintenance/importImages.inc (renamed from maintenance/importImages.inc.php)30
-rw-r--r--maintenance/importImages.php168
-rw-r--r--maintenance/importLogs.inc144
-rw-r--r--maintenance/importLogs.php27
-rw-r--r--maintenance/importTextFile.php4
-rw-r--r--maintenance/importUseModWiki.php16
-rw-r--r--maintenance/initEditCount.php161
-rw-r--r--maintenance/initStats.inc57
-rw-r--r--maintenance/initStats.php87
-rw-r--r--maintenance/install-utils.inc (renamed from install-utils.inc)124
-rw-r--r--maintenance/installExtension.php2
-rw-r--r--maintenance/interwiki.sql18
-rw-r--r--maintenance/lag.php51
-rw-r--r--maintenance/language/StatOutputs.php14
-rw-r--r--maintenance/language/alltrans.php40
-rw-r--r--maintenance/language/checkDupeMessages.php118
-rw-r--r--maintenance/language/checkExtensions.php4
-rw-r--r--maintenance/language/checkLanguage.inc39
-rw-r--r--maintenance/language/countMessages.php87
-rw-r--r--maintenance/language/date-formats.php102
-rw-r--r--maintenance/language/diffLanguage.php6
-rw-r--r--maintenance/language/digit2html.php68
-rw-r--r--maintenance/language/dumpMessages.php48
-rw-r--r--maintenance/language/generateNormalizerData.php137
-rw-r--r--maintenance/language/lang2po.php225
-rw-r--r--maintenance/language/langmemusage.php58
-rw-r--r--maintenance/language/languages.inc18
-rw-r--r--maintenance/language/makeMessageDB.php45
-rw-r--r--maintenance/language/messageTypes.inc25
-rw-r--r--maintenance/language/messages.inc520
-rw-r--r--maintenance/language/rebuildLanguage.php55
-rw-r--r--maintenance/language/transstat.php71
-rw-r--r--maintenance/language/writeMessagesArray.inc25
-rw-r--r--maintenance/mcc.php84
-rw-r--r--maintenance/mctest.php112
-rw-r--r--maintenance/mergeMessageFileList.php72
-rw-r--r--maintenance/migrateUserGroup.php70
-rw-r--r--maintenance/minify.php111
-rw-r--r--maintenance/moveBatch.php157
-rw-r--r--maintenance/mwdocgen.php15
-rw-r--r--maintenance/namespace2sql.php18
-rw-r--r--maintenance/namespaceDupes.php244
-rw-r--r--maintenance/nextJobDB.php127
-rw-r--r--maintenance/nukeNS.php158
-rw-r--r--maintenance/nukePage.inc91
-rw-r--r--maintenance/nukePage.php114
-rw-r--r--maintenance/ora/patch_seq_names_pre1.16.sql8
-rw-r--r--maintenance/ora/tables.sql1129
-rw-r--r--maintenance/ora/user.sql16
-rw-r--r--maintenance/orphans.php371
-rw-r--r--maintenance/ourusers.php1
-rw-r--r--maintenance/parserTests.inc731
-rw-r--r--maintenance/parserTests.php15
-rw-r--r--maintenance/parserTests.txt972
-rw-r--r--maintenance/patchSql.php69
-rw-r--r--maintenance/populateCategory.php128
-rw-r--r--maintenance/populateLogSearch.inc80
-rw-r--r--maintenance/populateLogSearch.php153
-rw-r--r--maintenance/populateLogUsertext.php82
-rw-r--r--maintenance/populateParentId.php119
-rw-r--r--maintenance/populateSha1.php101
-rw-r--r--maintenance/postgres/archives/patch-l10n_cache.sql8
-rw-r--r--maintenance/postgres/archives/patch-log_search.sql9
-rw-r--r--maintenance/postgres/archives/patch-update_sequences.sql20
-rw-r--r--maintenance/postgres/archives/patch-user_properties.sql8
-rw-r--r--maintenance/postgres/compare_schemas.pl15
-rw-r--r--maintenance/postgres/mediawiki_mysql2postgres.pl6
-rw-r--r--maintenance/postgres/tables.sql71
-rw-r--r--maintenance/preprocessorFuzzTest.php5
-rw-r--r--maintenance/protect.php68
-rw-r--r--maintenance/purgeList.php74
-rw-r--r--maintenance/purgeOldText.inc4
-rw-r--r--maintenance/purgeOldText.php46
-rw-r--r--maintenance/reassignEdits.inc.php143
-rw-r--r--maintenance/reassignEdits.php197
-rw-r--r--maintenance/rebuildFileCache.php179
-rw-r--r--maintenance/rebuildImages.php8
-rw-r--r--maintenance/rebuildInterwiki.inc1
-rw-r--r--maintenance/rebuildInterwiki.php3
-rw-r--r--maintenance/rebuildLocalisationCache.php133
-rw-r--r--maintenance/rebuildall.php78
-rw-r--r--maintenance/rebuildmessages.php56
-rw-r--r--maintenance/rebuildrecentchanges.inc246
-rw-r--r--maintenance/rebuildrecentchanges.php292
-rw-r--r--maintenance/rebuildtextindex.inc66
-rw-r--r--maintenance/rebuildtextindex.php132
-rw-r--r--maintenance/refreshImageCount.php65
-rw-r--r--maintenance/refreshLinks.inc202
-rw-r--r--maintenance/refreshLinks.php313
-rw-r--r--maintenance/removeUnusedAccounts.inc46
-rw-r--r--maintenance/removeUnusedAccounts.php150
-rw-r--r--maintenance/renameDbPrefix.php129
-rw-r--r--maintenance/renamewiki.php115
-rw-r--r--maintenance/renderDump.php75
-rw-r--r--maintenance/rollbackEdits.php97
-rw-r--r--maintenance/runBatchedQuery.php60
-rw-r--r--maintenance/runJobs.php141
-rw-r--r--maintenance/showJobs.php49
-rw-r--r--maintenance/showStats.php78
-rw-r--r--maintenance/sql.php108
-rw-r--r--maintenance/sqlite.php113
-rw-r--r--maintenance/sqlite/archives/initial-indexes.sql39
-rw-r--r--maintenance/sqlite/archives/patch-log_user_text.sql5
-rw-r--r--maintenance/sqlite/archives/patch-rd_interwiki.sql5
-rw-r--r--maintenance/sqlite/archives/patch-tc-timestamp.sql3
-rw-r--r--maintenance/sqlite/archives/searchindex-fts3.sql18
-rw-r--r--maintenance/sqlite/archives/searchindex-no-fts.sql25
-rw-r--r--maintenance/stats.php127
-rw-r--r--maintenance/storage/compressOld.inc6
-rw-r--r--maintenance/storage/compressOld.php2
-rw-r--r--maintenance/storage/dumpRev.php111
-rw-r--r--maintenance/storage/fixBug20757.php314
-rwxr-xr-xmaintenance/storage/make-blobs11
-rw-r--r--maintenance/storage/moveToExternal.php2
-rw-r--r--maintenance/storage/orphanStats.php43
-rw-r--r--maintenance/storage/recompressTracked.php57
-rw-r--r--maintenance/storage/resolveStubs.php10
-rw-r--r--maintenance/storage/storageTypeStats.php98
-rw-r--r--maintenance/storage/trackBlobs.php28
-rw-r--r--maintenance/tables.sql99
-rw-r--r--maintenance/testRunner.ora.sql37
-rw-r--r--maintenance/tests/.svnignore (renamed from tests/.svnignore)0
-rw-r--r--maintenance/tests/ApiSetup.php39
-rw-r--r--maintenance/tests/ApiTest.php164
-rw-r--r--maintenance/tests/CdbTest.php79
-rw-r--r--maintenance/tests/DatabaseSqliteTest.php57
-rw-r--r--maintenance/tests/DatabaseTest.php (renamed from tests/DatabaseTest.php)32
-rw-r--r--maintenance/tests/GlobalTest.php (renamed from tests/GlobalTest.php)0
-rw-r--r--maintenance/tests/HttpTest.php567
-rw-r--r--maintenance/tests/IPTest.php52
-rw-r--r--maintenance/tests/ImageFunctionsTest.php (renamed from tests/ImageFunctionsTest.php)0
-rw-r--r--maintenance/tests/LanguageConverterTest.php148
-rw-r--r--maintenance/tests/LicensesTest.php17
-rw-r--r--maintenance/tests/LocalFileTest.php (renamed from tests/LocalFileTest.php)15
-rw-r--r--maintenance/tests/Makefile23
-rw-r--r--maintenance/tests/MediaWikiParserTest.php283
-rw-r--r--maintenance/tests/MediaWiki_Setup.php28
-rw-r--r--maintenance/tests/README24
-rw-r--r--maintenance/tests/RevisionTest.php (renamed from tests/ArticleTest.php)6
-rw-r--r--maintenance/tests/SanitizerTest.php73
-rw-r--r--maintenance/tests/SearchEngineTest.php (renamed from tests/SearchEngineTest.php)98
-rw-r--r--maintenance/tests/SearchMySQLTest.php (renamed from tests/SearchMySQL4Test.php)13
-rw-r--r--maintenance/tests/SearchUpdateTest.php103
-rw-r--r--maintenance/tests/SiteConfigurationTest.php311
-rw-r--r--maintenance/tests/TimeAdjustTest.php40
-rw-r--r--maintenance/tests/TitleTest.php17
-rw-r--r--maintenance/tests/XmlTest.php115
-rw-r--r--maintenance/tests/bootstrap.php15
-rw-r--r--maintenance/tests/phpunit.xml17
-rw-r--r--maintenance/tests/test-prefetch-current.xml (renamed from tests/test-prefetch-current.xml)0
-rw-r--r--maintenance/tests/test-prefetch-previous.xml (renamed from tests/test-prefetch-previous.xml)0
-rw-r--r--maintenance/tests/test-prefetch-stub.xml (renamed from tests/test-prefetch-stub.xml)0
-rw-r--r--maintenance/undelete.php51
-rw-r--r--maintenance/update.php56
-rw-r--r--maintenance/updateArticleCount.inc.php61
-rw-r--r--maintenance/updateArticleCount.php113
-rw-r--r--maintenance/updateRestrictions.php160
-rw-r--r--maintenance/updateSearchIndex.inc115
-rw-r--r--maintenance/updateSearchIndex.php186
-rw-r--r--maintenance/updateSpecialPages.php215
-rw-r--r--maintenance/updaters.inc532
-rw-r--r--maintenance/upgrade1_5.php2
-rw-r--r--maintenance/userOptions.inc10
-rw-r--r--maintenance/users.sql6
-rw-r--r--maintenance/waitForSlave.php35
-rw-r--r--maintenance/wikipedia-interwiki.sql7
-rw-r--r--math/README4
-rw-r--r--math/render.ml6
-rw-r--r--math/texutil.ml4
-rw-r--r--math/texvc.ml6
-rw-r--r--php5.php52
-rw-r--r--profileinfo.php132
-rw-r--r--redirect.phtml1
-rw-r--r--serialized/Makefile16
-rw-r--r--serialized/README37
-rw-r--r--serialized/normalize-ar.ser1
-rw-r--r--serialized/normalize-ml.ser1
-rw-r--r--serialized/serialize-localisation.php35
-rw-r--r--skins/ArchLinux.php199
-rw-r--r--skins/Chick.php16
-rw-r--r--skins/CologneBlue.php274
-rw-r--r--skins/Modern.php107
-rw-r--r--skins/MonoBook.php154
-rw-r--r--skins/MySkin.php14
-rw-r--r--skins/Nostalgia.php29
-rw-r--r--skins/Simple.php31
-rw-r--r--skins/Skin.sample19
-rw-r--r--skins/Standard.php182
-rw-r--r--skins/Vector.deps.php11
-rw-r--r--skins/Vector.php767
-rw-r--r--skins/archlinux/IEMacFixes.css44
-rw-r--r--skins/archlinux/discussionitem_icon.gifbin949 -> 549 bytes
-rw-r--r--skins/archlinux/file_icon.gifbin921 -> 323 bytes
-rw-r--r--skins/archlinux/link_icon.gifbin942 -> 342 bytes
-rw-r--r--skins/archlinux/lock_icon.gifbin918 -> 918 bytes
-rw-r--r--skins/archlinux/magnify-clip.pngbin237 -> 170 bytes
-rw-r--r--skins/archlinux/mail_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/archlinux/main.css318
-rw-r--r--skins/archlinux/rtl.css18
-rw-r--r--skins/archlinux/user.gifbin923 -> 325 bytes
-rw-r--r--skins/archlinux/video.pngbin215 -> 169 bytes
-rw-r--r--skins/archlinux/wiki.pngbin23064 -> 22987 bytes
-rw-r--r--skins/chick/main.css390
-rw-r--r--skins/common/IE80Fixes.css15
-rw-r--r--skins/common/IEFixes.js205
-rw-r--r--skins/common/Makefile2
-rw-r--r--skins/common/ajaxwatch.js53
-rw-r--r--skins/common/allmessages.js83
-rw-r--r--skins/common/block.js37
-rw-r--r--skins/common/commonPrint.css36
-rw-r--r--skins/common/common_rtl.css7
-rw-r--r--skins/common/edit.js209
-rw-r--r--skins/common/history.js11
-rw-r--r--skins/common/htmlform.js40
-rw-r--r--skins/common/images/Arr_.pngbin918 -> 246 bytes
-rw-r--r--skins/common/images/Arr_r.xcfbin1437 -> 0 bytes
-rw-r--r--skins/common/images/Arr_u.pngbin1044 -> 425 bytes
-rw-r--r--skins/common/images/Zoom_sans.gifbin901 -> 901 bytes
-rw-r--r--skins/common/images/add.pngbin0 -> 3329 bytes
-rw-r--r--skins/common/images/ajax-loader.gifbin0 -> 3208 bytes
-rw-r--r--skins/common/images/arrow_first.svg85
-rw-r--r--skins/common/images/arrow_left.svg78
-rw-r--r--skins/common/images/be-tarask/button_bold.pngbin575 -> 554 bytes
-rw-r--r--skins/common/images/be-tarask/button_italic.pngbin638 -> 592 bytes
-rw-r--r--skins/common/images/be-tarask/button_link.pngbin550 -> 466 bytes
-rw-r--r--skins/common/images/button_bold.pngbin978 -> 288 bytes
-rw-r--r--skins/common/images/button_extlink.pngbin1093 -> 494 bytes
-rw-r--r--skins/common/images/button_headline.pngbin497 -> 465 bytes
-rw-r--r--skins/common/images/button_hr.pngbin372 -> 251 bytes
-rw-r--r--skins/common/images/button_image.pngbin1110 -> 584 bytes
-rw-r--r--skins/common/images/button_italic.pngbin975 -> 292 bytes
-rw-r--r--skins/common/images/button_link.pngbin434 -> 337 bytes
-rw-r--r--skins/common/images/button_math.pngbin730 -> 617 bytes
-rw-r--r--skins/common/images/button_media.pngbin1155 -> 780 bytes
-rw-r--r--skins/common/images/button_nowiki.pngbin375 -> 352 bytes
-rw-r--r--skins/common/images/button_sig.pngbin1217 -> 953 bytes
-rw-r--r--skins/common/images/button_template.pngbin362 -> 233 bytes
-rw-r--r--skins/common/images/cyrl/button_italic.pngbin461 -> 460 bytes
-rw-r--r--skins/common/images/cyrl/button_link.pngbin353 -> 347 bytes
-rw-r--r--skins/common/images/de/button_bold.pngbin1013 -> 328 bytes
-rw-r--r--skins/common/images/de/button_italic.pngbin1021 -> 351 bytes
-rw-r--r--skins/common/images/fa/button_bold.pngbin504 -> 500 bytes
-rw-r--r--skins/common/images/fa/button_headline.pngbin438 -> 434 bytes
-rw-r--r--skins/common/images/fa/button_italic.pngbin577 -> 573 bytes
-rw-r--r--skins/common/images/fa/button_link.pngbin538 -> 535 bytes
-rw-r--r--skins/common/images/fileicon.xcfbin26160 -> 0 bytes
-rw-r--r--skins/common/images/gnu-fdl.pngbin1748 -> 1730 bytes
-rw-r--r--skins/common/images/gnu-fdl.xcfbin5578 -> 0 bytes
-rw-r--r--skins/common/images/icons/fileicon-c.pngbin2995 -> 2211 bytes
-rw-r--r--skins/common/images/icons/fileicon-cpp.pngbin2250 -> 1882 bytes
-rw-r--r--skins/common/images/icons/fileicon-deb.pngbin5528 -> 4801 bytes
-rw-r--r--skins/common/images/icons/fileicon-djvu.pngbin11137 -> 10752 bytes
-rw-r--r--skins/common/images/icons/fileicon-dvi.pngbin13042 -> 12778 bytes
-rw-r--r--skins/common/images/icons/fileicon-exe.pngbin5864 -> 5680 bytes
-rw-r--r--skins/common/images/icons/fileicon-h.pngbin1195 -> 1191 bytes
-rw-r--r--skins/common/images/icons/fileicon-html.pngbin7601 -> 7422 bytes
-rw-r--r--skins/common/images/icons/fileicon-iso.pngbin6673 -> 6450 bytes
-rw-r--r--skins/common/images/icons/fileicon-java.pngbin6825 -> 5989 bytes
-rw-r--r--skins/common/images/icons/fileicon-mid.pngbin7191 -> 6657 bytes
-rw-r--r--skins/common/images/icons/fileicon-mov.pngbin7946 -> 7716 bytes
-rw-r--r--skins/common/images/icons/fileicon-o.pngbin2893 -> 2204 bytes
-rw-r--r--skins/common/images/icons/fileicon-ogg.pngbin6143 -> 3750 bytes
-rw-r--r--skins/common/images/icons/fileicon-pdf.pngbin5138 -> 4976 bytes
-rw-r--r--skins/common/images/icons/fileicon-ps.pngbin3293 -> 3012 bytes
-rw-r--r--skins/common/images/icons/fileicon-rm.pngbin4977 -> 2851 bytes
-rw-r--r--skins/common/images/icons/fileicon-rpm.pngbin4753 -> 4103 bytes
-rw-r--r--skins/common/images/icons/fileicon-svg.pngbin5193 -> 5094 bytes
-rw-r--r--skins/common/images/icons/fileicon-tar.pngbin6544 -> 6347 bytes
-rw-r--r--skins/common/images/icons/fileicon-tex.pngbin4203 -> 3997 bytes
-rw-r--r--skins/common/images/icons/fileicon-ttf.pngbin3625 -> 3469 bytes
-rw-r--r--skins/common/images/icons/fileicon-txt.pngbin6801 -> 3638 bytes
-rw-r--r--skins/common/images/ksh/button_S_italic.pngbin3812 -> 3206 bytes
-rw-r--r--skins/common/images/link_icon.gifbin942 -> 342 bytes
-rw-r--r--skins/common/images/magnify-clip.pngbin267 -> 204 bytes
-rw-r--r--skins/common/images/mediawiki-small.xcfbin36011 -> 0 bytes
-rw-r--r--skins/common/images/mediawiki.pngbin23064 -> 22987 bytes
-rw-r--r--skins/common/images/poweredby_mediawiki_88x31.pngbin1933 -> 1927 bytes
-rw-r--r--skins/common/images/public-domain.pngbin2892 -> 2251 bytes
-rw-r--r--skins/common/images/redirectltr.pngbin1024 -> 381 bytes
-rw-r--r--skins/common/images/redirectrtl.pngbin1017 -> 381 bytes
-rw-r--r--skins/common/images/remove.pngbin0 -> 3346 bytes
-rw-r--r--skins/common/images/sort_down.gifbin879 -> 464 bytes
-rw-r--r--skins/common/images/sort_none.gifbin877 -> 462 bytes
-rw-r--r--skins/common/images/sort_up.gifbin881 -> 466 bytes
-rw-r--r--skins/common/images/spinner.gifbin586 -> 4648 bytes
-rw-r--r--skins/common/images/wiki.pngbin24954 -> 24801 bytes
-rw-r--r--skins/common/jquery.js4384
-rw-r--r--skins/common/jquery.min.js433
-rw-r--r--skins/common/metadata.js36
-rw-r--r--skins/common/mwsuggest.js1312
-rw-r--r--skins/common/oldshared.css61
-rw-r--r--skins/common/prefs.js205
-rw-r--r--skins/common/preview.js208
-rw-r--r--skins/common/protect.js2
-rw-r--r--skins/common/search.js50
-rw-r--r--skins/common/shared.css587
-rw-r--r--skins/common/sticky.js124
-rw-r--r--skins/common/upload.js203
-rw-r--r--skins/common/wikibits.js782
-rw-r--r--skins/disabled/MonoBook.tpl200
-rw-r--r--skins/disabled/MonoBookCBT.php1389
-rw-r--r--skins/modern/discussionitem_icon.gifbin949 -> 549 bytes
-rw-r--r--skins/modern/file_icon.gifbin921 -> 323 bytes
-rw-r--r--skins/modern/link_icon.gifbin942 -> 342 bytes
-rw-r--r--skins/modern/lock_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/modern/mail_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/modern/main.css193
-rw-r--r--skins/modern/rtl.css6
-rw-r--r--skins/monobook/IEMacFixes.css44
-rw-r--r--skins/monobook/discussionitem_icon.gifbin949 -> 549 bytes
-rw-r--r--skins/monobook/file_icon.gifbin921 -> 323 bytes
-rw-r--r--skins/monobook/link_icon.gifbin942 -> 342 bytes
-rw-r--r--skins/monobook/lock_icon.gifbin918 -> 918 bytes
-rw-r--r--skins/monobook/magnify-clip.pngbin237 -> 170 bytes
-rw-r--r--skins/monobook/mail_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/monobook/main.css318
-rw-r--r--skins/monobook/rtl.css18
-rw-r--r--skins/monobook/user.gifbin923 -> 325 bytes
-rw-r--r--skins/monobook/video.pngbin215 -> 169 bytes
-rw-r--r--skins/monobook/wiki.pngbin23064 -> 22987 bytes
-rw-r--r--skins/simple/discussionitem_icon.gifbin949 -> 549 bytes
-rw-r--r--skins/simple/file_icon.gifbin921 -> 323 bytes
-rw-r--r--skins/simple/link_icon.gifbin942 -> 342 bytes
-rw-r--r--skins/simple/lock_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/simple/mail_icon.gifbin918 -> 321 bytes
-rw-r--r--skins/simple/main.css11
-rw-r--r--skins/simple/rtl.css6
-rw-r--r--skins/vector/Makefile18
-rw-r--r--skins/vector/csshover.htc262
-rw-r--r--skins/vector/cssjanus/COPYING13
-rw-r--r--skins/vector/cssjanus/LICENSE202
-rw-r--r--skins/vector/cssjanus/README91
-rw-r--r--skins/vector/cssjanus/cssjanus.py574
-rw-r--r--skins/vector/cssjanus/csslex.py114
-rw-r--r--skins/vector/experiments/babaco-colors-a.css109
-rw-r--r--skins/vector/experiments/babaco-colors-b.css67
-rw-r--r--skins/vector/experiments/babaco-colors-c.css91
-rw-r--r--skins/vector/experiments/images/new-border.pngbin0 -> 124 bytes
-rw-r--r--skins/vector/experiments/images/new-portal-break-ltr.pngbin0 -> 891 bytes
-rw-r--r--skins/vector/experiments/images/new-portal-break-rtl.pngbin0 -> 891 bytes
-rw-r--r--skins/vector/experiments/images/page-base-fade.pngbin0 -> 306 bytes
-rw-r--r--skins/vector/experiments/images/page-base-updated.pngbin0 -> 124 bytes
-rw-r--r--skins/vector/experiments/images/tab-active-first.pngbin0 -> 981 bytes
-rw-r--r--skins/vector/experiments/images/tab-active-last.pngbin0 -> 980 bytes
-rw-r--r--skins/vector/experiments/images/tab-fade.pngbin0 -> 226 bytes
-rw-r--r--skins/vector/experiments/images/tab-first.pngbin0 -> 1057 bytes
-rw-r--r--skins/vector/experiments/images/tab-last.pngbin0 -> 1057 bytes
-rw-r--r--skins/vector/experiments/images/tab-new-fade.pngbin0 -> 216 bytes
-rw-r--r--skins/vector/experiments/new-tabs.css322
-rw-r--r--skins/vector/images/arrow-down-icon.pngbin0 -> 181 bytes
-rw-r--r--skins/vector/images/audio-icon.pngbin0 -> 345 bytes
-rw-r--r--skins/vector/images/border.pngbin0 -> 119 bytes
-rw-r--r--skins/vector/images/bullet-icon.pngbin0 -> 152 bytes
-rw-r--r--skins/vector/images/document-icon.pngbin0 -> 345 bytes
-rw-r--r--skins/vector/images/edit-icon.pngbin0 -> 358 bytes
-rw-r--r--skins/vector/images/external-link-ltr-icon.pngbin0 -> 279 bytes
-rw-r--r--skins/vector/images/external-link-rtl-icon.pngbin0 -> 277 bytes
-rw-r--r--skins/vector/images/file-icon.pngbin0 -> 402 bytes
-rw-r--r--skins/vector/images/link-icon.pngbin0 -> 429 bytes
-rw-r--r--skins/vector/images/lock-icon.pngbin0 -> 370 bytes
-rw-r--r--skins/vector/images/magnify-clip.pngbin0 -> 204 bytes
-rw-r--r--skins/vector/images/mail-icon.pngbin0 -> 375 bytes
-rw-r--r--skins/vector/images/news-icon.pngbin0 -> 359 bytes
-rw-r--r--skins/vector/images/page-base.pngbin0 -> 119 bytes
-rw-r--r--skins/vector/images/page-fade.pngbin0 -> 253 bytes
-rw-r--r--skins/vector/images/portal-break-ltr.pngbin0 -> 287 bytes
-rw-r--r--skins/vector/images/portal-break-rtl.pngbin0 -> 280 bytes
-rw-r--r--skins/vector/images/portal-break.pngbin0 -> 242 bytes
-rw-r--r--skins/vector/images/preferences-base.pngbin0 -> 119 bytes
-rw-r--r--skins/vector/images/preferences-break.pngbin0 -> 286 bytes
-rw-r--r--skins/vector/images/preferences-edge.pngbin0 -> 119 bytes
-rw-r--r--skins/vector/images/preferences-fade.pngbin0 -> 248 bytes
-rw-r--r--skins/vector/images/search-fade.pngbin0 -> 185 bytes
-rw-r--r--skins/vector/images/search-ltr.pngbin0 -> 214 bytes
-rw-r--r--skins/vector/images/search-rtl.pngbin0 -> 214 bytes
-rw-r--r--skins/vector/images/tab-break.pngbin0 -> 263 bytes
-rw-r--r--skins/vector/images/tab-current-fade.pngbin0 -> 121 bytes
-rw-r--r--skins/vector/images/tab-normal-fade.pngbin0 -> 254 bytes
-rw-r--r--skins/vector/images/talk-icon.pngbin0 -> 377 bytes
-rw-r--r--skins/vector/images/user-icon.pngbin0 -> 345 bytes
-rw-r--r--skins/vector/images/video-icon.pngbin0 -> 395 bytes
-rw-r--r--skins/vector/images/watch-icon-loading.gifbin0 -> 840 bytes
-rw-r--r--skins/vector/images/watch-icons.pngbin0 -> 1745 bytes
-rw-r--r--skins/vector/main-ltr.css1128
-rw-r--r--skins/vector/main-rtl.css1128
-rw-r--r--skins/vector/wiki-indexed.pngbin0 -> 8205 bytes
-rw-r--r--skins/vector/wiki.pngbin0 -> 22987 bytes
-rw-r--r--t/00-test.t10
-rw-r--r--t/README52
-rw-r--r--t/Search.inc161
-rw-r--r--t/Test.php496
-rw-r--r--t/inc/Database.t53
-rw-r--r--t/inc/Global.t154
-rw-r--r--t/inc/IP.t60
-rw-r--r--t/inc/ImageFunctions.t56
-rw-r--r--t/inc/Language.t58
-rw-r--r--t/inc/Licenses.t26
-rw-r--r--t/inc/LocalFile.t77
-rw-r--r--t/inc/Parser.t39
-rw-r--r--t/inc/Revision.t79
-rw-r--r--t/inc/Sanitizer.t64
-rw-r--r--t/inc/Search.t14
-rw-r--r--t/inc/Title.t32
-rw-r--r--t/inc/Xml.t56
-rw-r--r--t/maint/bom.t38
-rw-r--r--t/maint/eol-style.t35
-rw-r--r--t/maint/php-lint.t33
-rw-r--r--t/maint/php-tag.t29
-rw-r--r--t/maint/unix-newlines.t33
-rw-r--r--tests/.htaccess1
-rw-r--r--tests/Makefile19
-rw-r--r--tests/MediaWiki_TestCase.php51
-rw-r--r--tests/README9
-rw-r--r--tests/run-test.php7
-rw-r--r--wiki.phtml1
1276 files changed, 191230 insertions, 107703 deletions
diff --git a/.gitignore b/.gitignore
index 9e90d89e..a94ae0af 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
/images/
+/cache/
*~
/LocalSettings.php
/AdminSettings.php
diff --git a/AdminSettings.sample b/AdminSettings.sample
deleted file mode 100644
index 8b6fe993..00000000
--- a/AdminSettings.sample
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * This file should be copied to AdminSettings.php, and modified
- * to reflect local settings. It is required for the maintenance
- * scripts which run on the command line, as an extra security
- * measure to allow using a separate user account with higher
- * privileges to do maintenance work.
- *
- * Developers: Do not check AdminSettings.php into Subversion
- */
-
-/*
- * This data is used by all database maintenance scripts
- * (see directory maintenance/). The SQL user MUST BE
- * MANUALLY CREATED or set to an existing user with
- * necessary permissions.
- *
- * This is not to be confused with sysop accounts for the
- * wiki.
- *
- * NOTE: for PostgreSQL this should be set to the same user and
- * password as the web user, that is, the same as $wgDBuser and
- * $wgDBpassword in LocalSettings.php. This is necessary to
- * ensure that the owner for new tables is set correctly.
- */
-$wgDBadminuser = 'wikiadmin';
-$wgDBadminpassword = 'adminpass';
-
-/*
- * Whether to enable the profileinfo.php script.
- */
-$wgEnableProfileInfo = false;
diff --git a/CREDITS b/CREDITS
index 5d407aad..2205032b 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1,4 +1,4 @@
-MediaWiki 1.15 is a collaborative project released under the
+MediaWiki 1.16 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
@@ -14,24 +14,30 @@ following names for their contribution to the product.
* Bryan Tong Minh
* Chad Horohoe
* Charles Melbye
+* church of emacs
* Daniel Friesen
* Daniel Kinzler
* Danny B.
* David McCabe
* Derk-Jan Hartman
* Domas Mituzas
+* Emufarmers
* Fran Rogers
* Greg Sabino Mullane
* Guy Van den Broeck
+* Happy-melon
* Hojjat
* Ilmari Karonen
* Jack D. Pond
* Jack Phoenix
* Jason Richey
* Jon Harald Søby
+* Juliano F. Ravasi
* Leon Weber
* Marco Schuster
+* Matěj Grabovský
* Matt Johnston
+* Max Semenik
* Meno25
* MinuteElectron
* Mohamed Magdy
@@ -41,55 +47,76 @@ following names for their contribution to the product.
* Platonides
* Purodha Blissenbach
* Raimond Spekking
+* Remember the dot
* Roan Kattouw
* Robert Stojnić
* Rotem Liss
* Ryan Lane
* Ryan Schmidt
+* Sam Reed
* Shinjiman
* Siebrand Mazeland
* SQL
* Soxred93
* Thomas Bleher
* Tim Starling
+* Tom Gries
* Victor Vasiliev
== Patch Contributors ==
* Agbad
+* Ahmad Sherif
+* Antonio Ospite
+* Azliq7
+* Borislav Manolov
* Brad Jorsch
* Brent G
* Brianna Laugher
* Carlin
-* church of emacs
+* Conrad Irwin
+* Dan Nessett
* Daniel Arnold
-* Danny B.
+* Denny Vrandecic
+* Derk-Jan Hartman
* FunPika
-* Happy-melon
+* Ireas
* Jeremy Baron
* Jidanni
-* Juliano F. Ravasi
+* Jimmy Xu
+* Karun Dambietz
+* Kim Hyun-Joon
+* liangent
* Lucas Garczewski
* Louperivois
* Luigi Corsaro
* Manuel Menal
* Marcin Cieślak
+* Marcus Buck
* Marooned
-* Max Semenik
+* Matthew Britton
+* mati
+* Max Sikström
* Michael De La Rue
* Michael Walsh
* Mike Horvath
* Mormegil
+* MrPete
* Nakon
* Nathan Larson
+* nephele
* Nikolaos S. Karastathis
* Olaf Lenz
* Paul Copperman
-* RememberTheDot
+* PieRRoMaN
* René Kijewski
+* Robert Treat
+* RockMFR
* ST47
+* Scott Colcord
* Simon Walker
* Stefano Codari
* Str4nd
+* svip
== Translators ==
* Anders Wegge Jakobsen
diff --git a/FAQ b/FAQ
index ea1d6243..0aedb7e3 100644
--- a/FAQ
+++ b/FAQ
@@ -1,5 +1,2 @@
-The original MediaWiki FAQ can be found at
-http://meta.wikimedia.org/wiki/MediaWiki_FAQ.
-
-A newer version is available at
-http://www.mediawiki.org/wiki/Manual:FAQ.
+The MediaWiki FAQ can be found at:
+http://www.mediawiki.org/wiki/Manual:FAQ
diff --git a/HISTORY b/HISTORY
index 6851fcf5..05ad1b29 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,14 +1,404 @@
Change notes from older releases. For current info see RELEASE-NOTES.
-== MediaWiki 1.14 ==
-
-=== Changes since 1.14.0rc1 ===
-
-* Fixed the performance of the backlinks API module
+== MediaWiki 1.15 ==
+
+=== Changes since 1.15.1 ===
+
+* The installer now includes a check for a data corruption issue with certain
+ versions of libxml2 2.7 and PHP earlier than 5.2.9, and also for a PHP bug
+ present in the official release of PHP 5.3.1.
+* (bug 20239) MediaWiki:Imagemaxsize does not contain anymore a <br /> tag which
+ was displayed to the user
+* (bug 21150) SQLite no longer raise an error when deleting files
+* (bug 20880) Fixed updater failure on SQLite backend
+* upgrade1_5.php now requires to be run --update option to prevent confusion
+* Fixed a CSS validation issue which allowed external images to be included
+ into wikis where that is disallowed by configuration.
+* Fixed a data leakage vulnerability for private wikis using img_auth.php or
+ similar image access authentication schemes. Check user permissions before
+ streaming out scaled images from thumb.php.
+
+=== Changes since 1.15.0 ===
+
+* Fixed fatal errors for unusual file repository configurations, such as
+ ForeignAPIRepo.
+* Fixed the "change password" link on Special:Preferences to have the correct
+ returnto parameter.
+* (bug 19693) Fixed cross-site scripting vulnerability in Special:Block
+
+=== Changes since 1.15.0rc1 ===
+
+* Removed category redirect feature, implementation was incomplete.
+* (bug 18846) Remove update_password_format(), unnecessary, destroys all
+ passwords if a wiki with $wgPasswordSalt=false is upgraded with the web
+ installer.
+* (bug 19127) Documentation warning for PostgreSQL users who run update.php:
+ use the same user in AdminSettings.php as in LocalSettings.php.
+* Fixed possible web invocation of some maintenance scripts, due to the use of
+ include() instead of require(). A full exploit would require a very strange
+ web server configuration.
+* Localisation updates.
+
+=== Configuration changes in 1.15 ===
+
+* Added $wgNewPasswordExpiry, to specify an expiry time (in seconds) to
+ temporary passwords
+* Added $wgUseTwoButtonsSearchForm to choose the Search form behavior/look
+* Added $wgNoFollowDomainExceptions to allow exempting particular domain names
+ from rel="nofollow" on external links
+* (bug 12970) Brought back $wgUseImageResize.
+* Added $wgRedirectOnLogin to allow specifying a specifc page to redirect users
+ to upon logging in (ex: "Main Page")
+* Add $wgExportFromNamespaces for enabling/disabling the "export all from
+ namespace" option (disabled by default)
+
+=== New features in 1.15 ===
+
+* (bug 2242) Add an expiry time to temporary passwords
+* (bug 9947) Add PROTECTIONLEVEL parser function to return the protection level
+ for the current page for a given action
+* (bug 17002) Add &minor= and &summary= as parameters in the url when editing,
+ to automatically add a summary or a minor edit.
+* (bug 16852) padleft and padright now accept multiletter pad characters
+* When using 'UserCreateForm' hook to add new checkboxes into
+ Special:UserLogin/signup, the messages can now contain HTML to allow
+ hyperlinking to the site's Terms of Service page, for example
+* Add new hook 'UserLoadFromDatabase' that is called while loading a user
+ from the database.
+* (bug 17045) Options on the block form are prefilled with the options of the
+ existing block when modifying an existing block.
+* (bug 17055) "(show/hide)" links to Special:RevisionDelete now use a CSS class
+ rather than hardcoded HTML tags
+* Added new hook 'WantedPages::getSQL' into SpecialWantedpages.php to allow
+ extensions to alter the SQL query which is used to get the list of wanted
+ pages
+* (bugs 16957/16969) Add show/hide to preferences for RC patrol options on
+ specialpages
+* (bug 11443) Auto-noindex user/user talk pages for blocked user
+* (bug 11644) Add $wgMaxRedirects variable to control how many redirects are
+ recursed through until the "destination" page is reached.
+* Add $wgInvalidRedirectTargets variable to prevent redirects to certain
+ special pages.
+* Use HTML5 rel attributes for some links, where appropriate
+* Added optional alternative Search form look - Go button & Advanced search
+ link instead of Go button & Search button
+* (bug 2314) Add links to user custom CSS and JS to Special:Preferences
+* More helpful error message on raw page access if PHP_SELF isn't set
+* (bug 13040) Gender switch in user preferences
+* (bug 13040) {{GENDER:}} magic word for interface messages
+* (bug 3301) Optionally sort user list according to account creation time
+* Remote description pages for foreign file repos are now fetched in the
+ content language.
+* (bug 17180) If $wgUseFileCache is enabled, $wgShowIPinHeader is automatically
+ set to false.
+* (bug 16604) Mark non-patrolled edits in feeds with "!"
+* (bug 16604) Show title/rev in IRC for patrol log
+* (bug 16854) Whether a page is being parsed as a preview or section preview
+ can now be determined and set with ParserOptions.
+* Wrap message 'confirmemail_pending' into a div with CSS classes "error" and
+ "mw-confirmemail-pending"
+* (bug 8249) The magic words for namespaces and pagenames can now be used as
+ parser functions to return the desired namespace or normalized title/title
+ part for a given title.
+* (bug 17110) Styled #mw-data-after-content in cologneblue.css to match the
+ rest of the font
+* (bug 7556) Time zone names in signatures lack i18n
+* (bug 3311) Automatic category redirects
+* (bug 17236) Suppress 'watch user page link' for IP range blocks
+* Wrap message 'searchresulttext' (Special:Search) into a div with
+ class "mw-searchresult"
+* (bug 15283) Interwiki imports can now fetch included templates
+* Treat svn:// URLs as external links by default
+* New function to convert namespace text for display (only applies on wiki with
+ LanguageConverter class)
+* (bug 17379) Contributions-title is now parsed for magic words.
+* Preprocessor output now cached in memcached.
+* (bug 14468) Lines in classic RecentChanges and Watchlist have classes
+ "mw-line-odd" and "mw-line-even" to make styling using css possible.
+* (bug 17311) Add a note beside the gender selection menu to tell users that
+ this information will be public
+* Localize time zone regions in Special:Preferences
+* Add NUMBEROFACTIVEUSERS magic word, which is like NUMBEROFUSERS, but uses
+ the active users data from site_stats.
+* Add a <link rel="canonical"> tag on redirected page views
+* Replace hardcoded '...' as indication of a truncation with the
+ 'ellipsis' message
+* Wrap warning message 'editinginterface' into a div with class
+ 'mw-editinginterface'
+* (bug 17497) Oasis opendocument added to mime.types
+* Remove the link to Special:FileDuplicateSearch from the "file history" section
+ of image description pages as the list of duplicated files is shown in the
+ next section anyway.
+* Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from
+ rate limits.
+* (bug 14981) Shared repositories can now have display names, located at
+ Mediawiki:Shared-repo-name-REPONAME, where REPONAME is the name in
+ $wgForeignFileRepos
+* Special:ListUsers: Sort list of usergroups by alphabet
+* (bug 16762) Special:Movepage now shows a list of subpages when possible
+* (bug 17585) Hide legend on Special:Specialpages from non-privileged users
+* Added $wgUseTagFilter to control enabling of filter-by-change-tag
+* (bug 17291) MediaWiki:Nocontribs now has an optional $1 parameter for the
+ username
+* Wrap special page summary message '$specialPageName-summary' into a div
+ with class 'mw-specialpage-summary'
+* $wgSummarySpamRegex added to handle edit summary spam. This is used *instead*
+ of $wgSpamRegex for edit summary checks. Text checks still use $wgSpamRegex.
+* New function to convert content text to specified language (only applies on wiki with
+ LanguageConverter class)
+* (bug 17844) Redirect users to a specific page when they log in, see
+ $wgRedirectOnLogin
+* Added a link to Special:UserRights on Special:Contributions for privileged users
+* (bug 10336) Added new magic word {{REVISIONUSER}}, which displays the editor
+ of the displayed revision's author user name
+* LinkerMakeExternalLink now has an $attribs parameter for link attributes and
+ a $linkType parameter for the type of external link being made
+* (bug 17785) Dynamic dates surrounded with a <span> tag, fixing sortable tables with
+ dynamic dates.
+* (bug 4582) Provide preference-based autoformatting of unlinked dates with the dateformat
+ parser function.
+* (bug 17886) Special:Export now allows you to export a whole namespace (limited to 5000 pages)
+* (bug 17714) Limited TIFF upload support now built in if 'tif' extension is
+ enabled. Image width and height are now recognized, and when using ImageMagick,
+ optional flattening to PNG or JPEG for inline display can be enabled by setting
+ $wgTiffThumbnailType
+* Renamed two input IDs on Special:Log from 'page' and 'user' to 'mw-log-page' and
+ 'mw-log-user', respectively
+* Added $wgInvalidUsernameCharacters to disallow certain characters in
+ usernames during registration (such as "@")
+* Added $wgUserrightsInterwikiDelimiter to allow changing the delimiter
+ used in Special:UserRights to denote the user should be searched for
+ on a different database
+* Add a class if 'missingsummary' is triggered to allow styling of the summary
+ line
+* Title attributes are now always blank on framed and thumbnailed images, and default to blank
+ on inline images instead of defaulting to the image's filename. Additionally, the alt
+ attribute now defaults to the filename on framed and thumbnailed images if no caption or alt
+ attribute is specified.
+
+=== Bug fixes in 1.15 ===
+* (bug 16968) Special:Upload no longer throws useless warnings.
+* (bug 17000) Special:RevisionDelete now checks if the database is locked
+ before trying to delete the edit.
+* (bug 16852) padleft and padright now handle multibyte characters correctly
+* (bug 17010) maintenance/namespaceDupes.php now add the suffix recursively if
+ the destination page exists
+* (bug 17035) Special:Upload now fails gracefully if PHP's file_uploads has
+ been disabled
+* Fixing the caching issue by using -{T|xxx}- syntax (only applies on wiki with
+ LanguageConverter class)
+* Improving the efficiency by using -{A|xxx}- syntax (only applies on wiki with
+ LanguageConverter class)
+* (bug 17054) Added more descriptive errors in Special:RevisionDelete
+* (bug 11527) Diff on page with one revision shows "Next" link to same diff
+* (bug 8065) Fix summary forcing for new pages
+* (bug 10569) redirects to Special:Mypage and Special:Mytalk are no longer
+ allowed by default. Change $wgInvalidRedirectTargets to re-enable.
+* (bug 3043) Feed links of given page are now preceded by standard feed icon
+* (bug 17150) escapeLike now escapes literal \ properly
+* Inconsistent use of sysop, admin, administrator in system messages changed
+ to 'administrator'
+* (bug 14423) Check block flag validity for block logging
+* DB transaction and slave-lag avoidance tweaks for Email Notifications
+* (bug 17104) Removed [Mark as patrolled] link for already patrolled revisions
+* (bug 17106) Added 'redirect=no' and 'mw-redirect' class to redirects at
+ "user contributions"
+* Rollback links on new pages removed from "user contributions"
+* (bug 15811) Re-upload form tweaks: license fields removed, destination locked,
+ comment label uses better message
+* Whole HTML validation ($wgValidateAllHtml) now works with external tidy
+* Parser tests no longer fail when $wgExternalLinkTarget is set in
+ LocalSettings
+* (bug 15391) catch DBQueryErrors on external storage insertion. This avoids
+ error messages on save were the edit in fact is saved.
+* (bug 17184) Remove duplicate "z" accesskey in MonoBook
+* Parser tests no longer fail when $wgAlwaysUseTidy is set in LocalSettings.php
+* Removed redundant dupe warnings on reupload for the same title. Dupe warnings
+ for identical files at different titles are still given.
+* Add 'change tagging' facility, where changes can be tagged internally with
+ certain designations, which are displayed on various summaries of changes,
+ and the entries can be styled with CSS.
+* (bug 17207) Fix regression breaking category page display on PHP 5.1
+* Categoryfinder utility class no longer fails on invalid input or gives wrong
+ results for category names that include pseudo-namespaces
+* (bug 17252) Galician numbering format
+* (bug 17146) Fix for UTF-8 and short word search for some possible MySQL
+ configs
+* (bug 7480) Internationalize database error message
+* (bug 16555) Number of links to mediawiki.org scaled back on post-installation
+* (bug 14938) Removing a section no longer leaves excess whitespace
+* (bug 17304) Fixed fatal error when thumbnails couldn't be generated for file
+ history
+* (bug 17283) Remove double URL escaping in show/hide links for log entries
+ and RevisionDeleteForm::__construct
+* (bug 17105) Numeric table sorting broken
+* (bug 17231) Transcluding special pages on wikis using language conversion no
+ longer affects the page title
+* (bug 6702) Default system messages updated/improved
+* (bug 17190) User ID on preference page no longer has delimeters
+* (bug 17341) "Powered by MediaWiki" should be on the left on RTL wikis
+* (bug 17404) "userrights-interwiki" right was missing in User::$mCoreRights
+* (bug 7509) Separation strings should be configurable
* (bug 17420) Send the correct content type from action=raw when the HTML file
cache is enabled.
+* (bug 12746) Do not allow new password e-mails when wiki is in read-only mode
+* (bug 17478) Fixed a PHP Strict standards error in
+ maintenance/cleanupWatchlist.php
+* (bug 17488) RSS/Atom links in left toolbar are now localized in classic skin
+* (bug 17472) use print <<<EOF in maintenance/importTextFile.php
+* Special:PrefixIndex: Move table styling to shared.css, add CSS IDs to tables
+ use correct message 'allpagesprefix' for input form label, replace _ with ' '
+ in next page link
+* (bug 17506) Exceptions within exceptions now respect $wgShowExceptionDetails
+* Fixed excessive job queue utilisation
+* File dupe messages for remote repos are now shown only once.
+* (bug 14980) Messages 'shareduploadwiki' and 'shareduploadwiki-desc' are now
+ used as a parameter in 'sharedupload' for easier styling and customization.
+* (bug 17482) Formatting error in Special:Preferences#Misc (Opera)
+* (bug 17556) <link> parameters in Special:Contributions feeds (RSS and Atom)
+ now point to the actual contributors' feed.
+* ForeignApiRepos now fetch MIME types, rather than trying to figure it locally
+* Special:Import: Do not show input field for import depth if
+ $wgExportMaxLinkDepth == 0
+* (bug 17570) $wgMaxRedirects is now correctly respected when following
+ redirects (was previously one more than $wgMaxRedirects)
+* (bug 16335) __NONEWSECTIONLINK__ magic word to suppress new section link.
+* (bug 17581) Wrong index name in PostgreSQL's updater: was rc_timestamp_nobot,
+ changed to rc_timestamp_bot
* (bug 17437) Fixed incorrect link to web-based installer
-* (bug 17527) Fixed missing MySQL-specific options in installer
+* (bug 17538) Use shorter URLs in <link> elements
+* (bug 13778) Hidden input added to the search form so that using the Enter key
+ on IE will do a fulltext search like clicking the button does
+* (bug 1061) CSS-added icons next to links display through the text and makes
+ it unreadable in RTL
+* Special:Wantedtemplates now works on PostgreSQL
+* (bug 14414) maintenance/updateSpecialPages.php no longer throws error with
+ PostgreSQL
+* (bug 17546) Correct Tongan language native name is "lea faka-Tonga"
+* (bug 17621) Special:WantedFiles has no link to Special:Whatlinkshere
+* (bug 17460) Client ecoding is now correctly set for PostgreSQL
+* (bug 17648) Prevent floats from intruding into edit area in previews if no
+ toolbar present
+* (bug 17692) Added (list of members) link to 'user' in Special:Listgrouprights
+* (bug 17707) Show file destination as plain text if &wpForReUpload=1
+* (bug 10172) Moved setting of "changed since last visit" flags out of the job
+ queue
+* (bug 17761) "show/hide" link in page history in now works for the first
+ displayed revision if it's not the current one
+* (bug 17722) Fix regression where users are unable to change temporary passwords
+* (bug 17799) Special:Random no longer throws a database error when a non-
+ namespace is given, silently falls back to NS_MAIN
+* (bug 17751) The message for bad titles in WantedPages is now localized
+* (bug 17860) Moving a page in the "MediaWiki" namespace using SuppressRedirect
+ no longer corrupts the message cache
+* (bug 17900) Fixed User Groups interface log display after saving groups.
+* (bug 17897) Fixed string offset error in <pre> tags
+* (bug 17778) MediaWiki:Catseparator can now have HTML entities
+* (bug 17676) Error on Special:ListFiles when using Postgres
+* Special:Export doesn't use raw SQL queries anymore
+* (bug 14771) Thumbnail links to individual DjVu pages have two no longer have
+ two "page" parameters
+* (bug 17972) Special:FileDuplicateSearch form now works correctly on wikis that
+ don't use PathInfo or short urls
+* (bug 17990) trackback.php now has a trackback.php5 alias and works with
+ $wgScriptExtension
+* (bug 14990) Parser tests works again with PostgreSQL
+* (bug 11487) Special:Protectedpages doesn't list protections with pr_expiry
+ IS NULL
+* (bug 18018) Deleting a file redirect leaves behind a malfunctioning redirect
+* (bug 17537) Disable bad zlib.output_compression output on HTTP 304 responses
+* (bug 11213) [edit] section links in printable version no longer appear when you cut-and-paste article text
+* (bug 17405) "Did you mean" to mirror Go/Search behavior of original request
+* (bug 18116) 'edittools' is now output identically on edit and upload pages
+* (bug 17241) The diffonly URI parameter should cascade to "Next edit" and "Previous edit" diff links
+* (bug 16823) 'Sidebar search form should not use Special:Search view URL as target'
+* (bug 16343) Non-existing, but in use, category pages can be "go" match hits
+* Fixed a CSS validation issue which allowed external images to be included
+ into wikis where that is disallowed by configuration.
+* Fixed a data leakage vulnerability for private wikis using img_auth.php or
+ similar image access authentication schemes. Check user permissions before
+ streaming out scaled images from thumb.php.
+
+== API changes in 1.15 ==
+* (bug 16858) Revamped list=deletedrevs to make listing deleted contributions
+ and listing all deleted pages possible
+* (bug 16844) Added clcategories parameter to prop=categories
+* (bug 17025) Add "fileextension" parameter to meta=siteinfo&siprop=
+* (bug 17048) Show the 'new' flag in list=usercontribs for the revision that
+ created the page, even if it's not the top revision
+* (bug 17069) Added ucshow=patrolled|!patrolled to list=usercontribs
+* action=delete respects $wgDeleteRevisionsLimit and the bigdelete user right
+* (bug 15949) Add undo functionality to action=edit
+* (bug 16483) Kill filesort in ApiQueryBacklinks caused by missing parentheses.
+ Building query properly now using makeList()
+* (bug 17182) Fix pretty printer so URLs with parentheses in them are
+ autolinked correctly
+* (bug 17224) Added siprop=rightsinfo to meta=siteinfo
+* (bug 17239) Added prop=displaytitle to action=parse
+* (bug 17317) Added watch parameter to action=protect
+* (bug 17007) Added export and exportnowrap parameters to action=query
+* (bug 17326) BREAKING CHANGE: Changed output format for iiprop=metadata
+* (bug 17355) Added auwitheditsonly parameter to list=allusers
+* (bug 17007) Added action=import
+* BREAKING CHANGE: Removed rctitles parameter from list=recentchanges because
+ of performance concerns
+* Listing (semi-)deleted revisions and log entries as well in prop=revisions
+ and list=logevents
+* (bug 11430) BREAKING CHANGE: Modules may return fewer results than the
+ limit and still set a query-continue in some cases
+* (bug 17357) Added movesubpages parameter to action=move
+* (bug 17433) Added bot flag to list=watchlist&wlprop=flags output
+* (bug 16740) Added list=protectedtitles
+* Added mainmodule and pagesetmodule parameters to action=paraminfo
+* (bug 17502) meta=siteinfo&siprop=namespacealiases no longer lists namespace
+ aliases already listed in siprop=namespaces
+* (bug 17529) rvend ignored when rvstartid is specified
+* (bug 17626) Added uiprop=email to list=userinfo
+* (bug 13209) Added rvdiffto parameter to prop=revisions
+* Manual language conversion improve: Now we can include both ";" and ":" in
+ conversion rules
+* (bug 17795) Don't report views count on meta=siteinfo if $wgDisableCounters
+ is set
+* (bug 17774) Don't hide read-restricted modules like action=query from users
+ without read rights, but throw an error when they try to use them.
+* Don't hide write modules when $wgEnableWriteAPI is false, but throw an error
+ when someone tries to use them
+* BREAKING CHANGE: action=purge requires write rights and, for anonymous users,
+ a POST request
+* (bug 18099) Using appendtext to edit a non-existent page causes an interface
+ message to be included in the page text
+* Fixed the circular template inclusion check, was broken when the loop
+ involved redirects. Without this, infinite recursion within the parser is
+ possible.
+* (bug 18601) generator=backlinks returns invalid continue parameter
+* (bug 18597) Internal error with empty generator= parameter
+* (bug 18617) Add xml:space="preserve" attribute to relevant tags in XML output
+* (bug 17611) Provide a sensible error message on install when the SQLite data
+ directory is wrong.
+
+=== Languages updated in 1.15 ===
+
+MediaWiki supports over 300 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of MediaZilla reports.
+
+* Austrian German (de-at) (new)
+* Swiss Standard German (de-ch) (new)
+* Simplified Gan Chinese (gan-hans) (new)
+* Traditional Gan Chinese (gan-hant) (new)
+* Literary Chinese (lzh) (new)
+* Uyghur (Latin script) (ug-latn) (renamed from 'ug')
+* Veps (vep) (new)
+* Võro (vro) (renamed from fiu-vro)
+* (bug 17151) Add magic word alias for #redirect for Vietnamese
+* (bug 17288) Messages improved for default language (English)
+* (bug 12937) Update native name for Afar
+* (bug 16909) 'histlegend' now reuses messages instead of copying them
+* (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied' when
+ the user is blocked
+* Traditional/Simplified Gan Chinese conversion support
+
+== MediaWiki 1.14 ==
=== Configuration changes in 1.14 ===
@@ -5408,7 +5798,7 @@ User accounts:
groups. Note that this does *not* allow you to make pages which are only
accessible to certain groups.
- For details see: http://meta.wikimedia.org/wiki/Help:User_rights
+ For details see: http://www.mediawiki.org/wiki/Manual:User_rights
E-mail:
User-to-user e-mail can now be restricted to require a mail-back confirmation
@@ -5658,8 +6048,8 @@ Various bugfixes, small features, and a few experimental things:
* 'live preview' reduces preview reload burden on supported browsers
* support for external editors for files and wiki pages:
- http://meta.wikimedia.org/wiki/Help:External_editors
-* Schema reworking: http://meta.wikimedia.org/wiki/Proposed_Database_Schema_Changes/October_2004
+ http://www.mediawiki.org/wiki/Manual:External_editors
+* Schema reworking: http://www.mediawiki.org/wiki/Proposed_Database_Schema_Changes/October_2004
* (bug 15) Allow editors to view diff of their change before actually submitting an edit
* (bug 190) Hide your own edits on the watchlist
* (bug 510): Special:Randompage now works for other namespaces than NS_MAIN.
@@ -6342,7 +6732,7 @@ release for relevant bug fixes; see the changelog later in this file.
If you have trouble, remember to read this whole file and the online FAQ page
before asking for help:
-http://meta.wikimedia.org/wiki/MediaWiki_FAQ
+http://www.mediawiki.org/wiki/Manual:FAQ
=== READ THIS FIRST: Upgrading ===
diff --git a/Makefile b/Makefile
deleted file mode 100644
index b414ffa3..00000000
--- a/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# This Makefile is used to test some MediaWiki functions. If you
-# want to install MediaWiki, point your browser to ./config/
-#
-
-# Configuration:
-PROVE_BIN="prove"
-
-# Describe our tests:
-BASE_TEST=$(wildcard t/*.t)
-INCLUDES_TESTS=$(wildcard t/inc/*t)
-MAINTENANCE_TESTS=$(wildcard t/maint/*t)
-
-# Build groups:
-FAST_TESTS=$(BASE_TEST) $(INCLUDES_TESTS)
-ALL_TESTS=$(BASE_TEST) $(INCLUDES_TESTS) $(MAINTENANCE_TESTS)
-
-test: t/Test.php
- $(PROVE_BIN) $(ALL_TESTS)
-
-fast: t/Test.php
- $(PROVE_BIN) $(FAST_TESTS)
-
-maint:
- $(PROVE_BIN) $(MAINTENANCE_TESTS)
-
-verbose: t/Test.php
- $(PROVE_BIN) -v $(ALL_TESTS) | egrep -v '^ok'
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 4e5effb2..d3983380 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,461 +1,995 @@
= MediaWiki release notes =
-Security reminder: MediaWiki does not require PHP's register_globals
-setting since version 1.2.0. If you have it on, turn it *off* if you can.
-
-== MediaWiki 1.15.5 ==
+== MediaWiki 1.16.0 ==
2010-07-28
-This is a security and maintenance release.
+This is a stable release of the MediaWiki 1.16 branch.
+
+=== Summary of selected changes in 1.16 ===
+
+Selected changes since MediaWiki 1.15 that may be of interest:
+
+* Watchlists now have RSS/Atom feeds. RSS feeds generally are now hidden,
+ since Atom is a better protocol and is supported by virtually all clients.
+
+* It's now possible to block users from sending email via Special:Emailuser.
+
+* The maintenance script system was overhauled. Most maintenance scripts now
+ have a useful help page when you run them with --help.
-MediaWiki is now using a "continuous integration" development model with
-quarterly snapshot releases. The latest development code is always kept
-"ready to run", and in fact runs our own sites on Wikipedia.
+* AdminSettings.php is no longer required in order to run maintenance scripts.
+ You can just set $wgDBadminuser and $wgDBadminpassword in your
+ LocalSettings.php instead.
-Release branches will continue to receive security updates for about a year
-from first release, but nonessential bugfixes and feature developments
-will be made on the development trunk and appear in the next quarterly release.
+* The preferences system was overhauled. Preferences are stored in a more
+ compact format. Changes to site default preferences will automatically
+ affect all users who have not chosen a different preference.
-Those wishing to use the latest code instead of a branch release can obtain
-it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
+* Support for SQLite was improved. Some broken features were fixed, and it
+ now has an efficient full-text search.
-== Changes since 1.15.4 ==
+* The user groups ACL system was improved by allowing rights to be revoked,
+ instead of just granted.
+* A new localisation caching system was introduced, which will make MediaWiki
+ faster for almost everyone, especially when lots of extensions are enabled.
+
+By default, this new system makes a lot of database queries. If your database
+is particularly slow, or if your system administrator limits your query count,
+or if you want to squeeze as much performance as possible out of Mediawiki,
+set $wgCacheDirectory to a writable path on the local filesystem. Make sure
+you have the DBA extension for PHP installed, this will improve performance
+further.
+
+== Changes since 1.16 beta 3 ==
+
+* (bug 23769) Disabled HTML 5 client-side form validation. Was introduced in
+ 1.16 beta 1, but is currently poorly supported by browsers.
+* (bug 23175) Re-added window.ta variable for backwards compatibility.
+* (bug 23264) Fixed breakage of various command line scripts due to extra line
+ endings being inserted by Maintenance::output().
+* Fixed HTTP client functionality with safe_mode=On.
+* Fixed parser tests broken in 1.16 beta 3.
+* For Oracle DB backend: fixed parser tests and table prefix feature.
+* (bug 23767) Fixed PHP warning when REQUEST_URI is blank (IIS issue).
+* Fixed plural function for Northern Sami (se)
+* (bug 23597) Fixed conflicts between ID attributes in the Vector skin and
+ parser-generated heading IDs. Renamed head, panel, head-base and page-base.
+* Disabled $wgHitcounterUpdateFreq>1 feature on SQLite, does not work yet.
+* (bug 23465) Don't ignore the predefined destination filename on
+ Special:Upload after following a red link to a file.
+* In SQLite full-text search feature: fixed "move page" feature, was non-
+ functional.
* (bug 24565) Fixed Cache-Control headers sent from API modules, to protect
user privacy in the case where an attacker can access the wiki through the
same HTTP proxy as a logged-in user.
-* Fixed a minor cookie header parsing issue causing incorrect Cache-Control
- headers to be sent.
* Fixed an XSS vulnerability in profileinfo.php for installations with
$wgEnableProfileInfo = true (false by default)
-* For backwards compatibility with extensions from 1.14.x or before, restored
- the original function ApiMain::requestWriteMode().
-* In API login "need token" responses, added the cookieprefix and sessionid
- fields, as in MediaWiki 1.16.x. This is an improvement to the CSRF fix
- introduced in 1.15.3.
+* Fixed a case where an X-Vary-Options header was sent despite $wgUseXVO being
+ false. Fixed a minor header parsing issue when $wgUseXVO = true.
+* Fixed a register_globals arbitrary inclusion vulnerability in
+ MediaWikiParserTest.php, introduced in 1.16 beta 1.
-== Changes since 1.15.3 ==
+== Changes since 1.16 beta 2 ==
+* Fixed bugs in the [[Special:Userlogin]] and [[Special:Emailuser]] handling of
+ invalid usernames.
+* Fixed sorting in [[Special:Allmessages]]
+* (bug 23113) Fixed title in the show/hide links on diff pages
+* (bug 23117) Fixed API rollback, was returning "badtoken" for valid requests
+* (bug 23127) Re-added missing $1 parameter to the uploadtext message
+* Fixed a bug in the Vector skin where personal tools display behind the logo
+* (bug 23139) Fixed a bug in edit conflict resolution, where both textboxes
+ showed the same text.
+* (bug 23115, bug 23124) Fixed various problems with <title> and <h1> elements
+ in page views and previews when the language converter is enabled.
+* (bug 23148) Fixed a local path disclosure vulnerability in ImageMagick image
+ scaling, which was introduced in 1.16 beta 1.
+* Improved error checking on installer.
+* (bug 22970) Fixed a JavaScript error in the upload destination conflict
+ check.
+* (bug 23167) Check the watch checkbox by default if the watchcreations
+ preference is set.
+* (bug 23171) Improve IE6 version check to avoid false positives.
+* (bug 23176) Fixed upload warning override feature "upload new version",
+ broken in 1.16 beta 1.
+* Fixed regression in unwatch links sent out in notification emails. When the
+ mailing job was deferred via the job queue, the title was incorrect.
* (bug 23534) Fixed SQL query error in API list=allusers.
+* Fixed a bug in uploads for non-JavaScript clients. An empty string was used
+ as the default destination filename, instead of the source filename as
+ expected.
* (bug 23371) Fixed CSRF vulnerability in "e-mail me my password", "create
account" and "create by e-mail" features of [[Special:Userlogin]]
* (bug 23687) Fixed XSS vulnerability affecting IE clients only, due to a CSS
validation issue.
+* Fixed a DoS vulnerability in ImageMagick image scaling. ImageMagick
+ expanded wildcard characters "?" and "*" in image filenames, potentially
+ causing large numbers of images to be scaled in response to a single request.
+ The fix for this involves breaking the scaling of such image filenames until
+ ImageMagick 6.6.1-5 or later is deployed, see bug 23361 for more details.
+* (bug 23608) Fixed invalid HTML in diff pages.
-=== Changes since 1.15.2 ===
+=== Changes since 1.16 beta 1 ===
-* (bug 22828) Fixed deletion on SQLite.
+* Fixed errors in maintenance/patchSql.php
+* (bug 19627) Fix regression from r57867 where HTMLForm would output
+ <element classes="foo bar"> rather than <element class="foo bar">
+* Fixed broken "-r" option to maintenance/lag.php
* (bug 23076) Fixed login CSRF vulnerability. Logins now require a token to
be submitted along with the user name and password.
-=== Changes since 1.15.1 ===
+=== Configuration changes in 1.16 ===
-* The installer now includes a check for a data corruption issue with certain
- versions of libxml2 2.7 and PHP earlier than 5.2.9, and also for a PHP bug
- present in the official release of PHP 5.3.1.
-* (bug 20239) MediaWiki:Imagemaxsize does not contain anymore a <br /> tag which
- was displayed to the user
-* (bug 21150) SQLite no longer raise an error when deleting files
-* (bug 20880) Fixed updater failure on SQLite backend
-* upgrade1_5.php now requires to be run --update option to prevent confusion
-* Fixed a CSS validation issue which allowed external images to be included
- into wikis where that is disallowed by configuration.
-* Fixed a data leakage vulnerability for private wikis using img_auth.php or
- similar image access authentication schemes. Check user permissions before
- streaming out scaled images from thumb.php.
-
-=== Changes since 1.15.0 ===
-
-* Fixed fatal errors for unusual file repository configurations, such as
- ForeignAPIRepo.
-* Fixed the "change password" link on Special:Preferences to have the correct
- returnto parameter.
-* (bug 19693) Fixed cross-site scripting vulnerability in Special:Block
-
-=== Changes since 1.15.0rc1 ===
-
-* Removed category redirect feature, implementation was incomplete.
-* (bug 18846) Remove update_password_format(), unnecessary, destroys all
- passwords if a wiki with $wgPasswordSalt=false is upgraded with the web
- installer.
-* (bug 19127) Documentation warning for PostgreSQL users who run update.php:
- use the same user in AdminSettings.php as in LocalSettings.php.
-* Fixed possible web invocation of some maintenance scripts, due to the use of
- include() instead of require(). A full exploit would require a very strange
- web server configuration.
-* Localisation updates.
-
-=== Configuration changes in 1.15 ===
-
-* Added $wgNewPasswordExpiry, to specify an expiry time (in seconds) to
- temporary passwords
-* Added $wgUseTwoButtonsSearchForm to choose the Search form behavior/look
-* Added $wgNoFollowDomainExceptions to allow exempting particular domain names
- from rel="nofollow" on external links
-* (bug 12970) Brought back $wgUseImageResize.
-* Added $wgRedirectOnLogin to allow specifying a specifc page to redirect users
- to upon logging in (ex: "Main Page")
-* Add $wgExportFromNamespaces for enabling/disabling the "export all from
- namespace" option (disabled by default)
-
-=== New features in 1.15 ===
-
-* (bug 2242) Add an expiry time to temporary passwords
-* (bug 9947) Add PROTECTIONLEVEL parser function to return the protection level
- for the current page for a given action
-* (bug 17002) Add &minor= and &summary= as parameters in the url when editing,
- to automatically add a summary or a minor edit.
-* (bug 16852) padleft and padright now accept multiletter pad characters
-* When using 'UserCreateForm' hook to add new checkboxes into
- Special:UserLogin/signup, the messages can now contain HTML to allow
- hyperlinking to the site's Terms of Service page, for example
-* Add new hook 'UserLoadFromDatabase' that is called while loading a user
- from the database.
-* (bug 17045) Options on the block form are prefilled with the options of the
- existing block when modifying an existing block.
-* (bug 17055) "(show/hide)" links to Special:RevisionDelete now use a CSS class
- rather than hardcoded HTML tags
-* Added new hook 'WantedPages::getSQL' into SpecialWantedpages.php to allow
- extensions to alter the SQL query which is used to get the list of wanted
- pages
-* (bugs 16957/16969) Add show/hide to preferences for RC patrol options on
- specialpages
-* (bug 11443) Auto-noindex user/user talk pages for blocked user
-* (bug 11644) Add $wgMaxRedirects variable to control how many redirects are
- recursed through until the "destination" page is reached.
-* Add $wgInvalidRedirectTargets variable to prevent redirects to certain
- special pages.
-* Use HTML5 rel attributes for some links, where appropriate
-* Added optional alternative Search form look - Go button & Advanced search
- link instead of Go button & Search button
-* (bug 2314) Add links to user custom CSS and JS to Special:Preferences
-* More helpful error message on raw page access if PHP_SELF isn't set
-* (bug 13040) Gender switch in user preferences
-* (bug 13040) {{GENDER:}} magic word for interface messages
-* (bug 3301) Optionally sort user list according to account creation time
-* Remote description pages for foreign file repos are now fetched in the
- content language.
-* (bug 17180) If $wgUseFileCache is enabled, $wgShowIPinHeader is automatically
- set to false.
-* (bug 16604) Mark non-patrolled edits in feeds with "!"
-* (bug 16604) Show title/rev in IRC for patrol log
-* (bug 16854) Whether a page is being parsed as a preview or section preview
- can now be determined and set with ParserOptions.
-* Wrap message 'confirmemail_pending' into a div with CSS classes "error" and
- "mw-confirmemail-pending"
-* (bug 8249) The magic words for namespaces and pagenames can now be used as
- parser functions to return the desired namespace or normalized title/title
- part for a given title.
-* (bug 17110) Styled #mw-data-after-content in cologneblue.css to match the
- rest of the font
-* (bug 7556) Time zone names in signatures lack i18n
-* (bug 3311) Automatic category redirects
-* (bug 17236) Suppress 'watch user page link' for IP range blocks
-* Wrap message 'searchresulttext' (Special:Search) into a div with
- class "mw-searchresult"
-* (bug 15283) Interwiki imports can now fetch included templates
-* Treat svn:// URLs as external links by default
-* New function to convert namespace text for display (only applies on wiki with
- LanguageConverter class)
-* (bug 17379) Contributions-title is now parsed for magic words.
-* Preprocessor output now cached in memcached.
-* (bug 14468) Lines in classic RecentChanges and Watchlist have classes
- "mw-line-odd" and "mw-line-even" to make styling using css possible.
-* (bug 17311) Add a note beside the gender selection menu to tell users that
- this information will be public
-* Localize time zone regions in Special:Preferences
-* Add NUMBEROFACTIVEUSERS magic word, which is like NUMBEROFUSERS, but uses
- the active users data from site_stats.
-* Add a <link rel="canonical"> tag on redirected page views
-* Replace hardcoded '...' as indication of a truncation with the
- 'ellipsis' message
-* Wrap warning message 'editinginterface' into a div with class
- 'mw-editinginterface'
-* (bug 17497) Oasis opendocument added to mime.types
-* Remove the link to Special:FileDuplicateSearch from the "file history" section
- of image description pages as the list of duplicated files is shown in the
- next section anyway.
+* (bug 18222) $wgMinimalPasswordLength default is now 1
+* $wgSessionHandler can be used to configure session.save_handler
+* $wgLocalFileRepo/$wgForeignFileRepos now have a 'fileMode' parameter to
+ be used when uploading/moving files
+* (bug 18761) $wgHiddenPrefs is a new array for specifying preferences not
+ to be shown to users
+* $wgAllowRealName and $wgAllowUserSkin were deprecated in favor of
+ $wgHiddenPrefs[] = 'realname', but the former are still retained
+ for backwards-compatibility
+* (bug 9257) $wgRCMaxAge now defaults to three months
+* $wgDevelopmentWarnings can be set to true to show warnings about deprecated
+ functions and other potential errors when developing.
+* Subpages are now enabled in the MediaWiki namespace by default. This is
+ mainly a cosmetic change, and does not in any way affect the MessageCache,
+ which was already effectively treating the namespace as if it had subpages.
+* Oracle: maintenance/ora/user.sql script for creating DB user on oracle with
+ appropriate privileges. Creating this user with web-install page requires
+ oci8.privileged_connect set to On in php.ini.
+* Removed UserrightsChangeableGroups hook introduced in 1.14
+* Added $wgCacheDirectory, to replace $wgFileCacheDirectory,
+ $wgLocalMessageCache, and any other local caches which need a place to put
+ files.
+* $wgFileCacheDirectory is no longer set to anything by default, and so either
+ needs to be set explicitly, or $wgCacheDirectory needs to be set instead.
+* $wgLocalMessageCache has been removed. Instead, set $wgUseLocalMessageCache
+ to true
+* Removed $wgEnableSerializedMessages and $wgCheckSerialized. Similar
+ functionality is now available via $wgLocalisationCacheConf.
+* $wgMessageCache->addMessages() is deprecated. Messages added via this
+ interface will not appear in Special:AllMessages.
+* $wgRegisterInternalExternals can be used to record external links pointing
+ to same server
+* (bug 19907) $wgCrossSiteAJAXdomains and $wgCrossSiteAJAXdomainExceptions added
+ to control which external domains may access the API via cross-site AJAX.
+* $wgMaintenanceScripts for extensions to add their scripts to the default list
+* $wgMemoryLimit has been added, default value '50M'
+* $wgExtraRandompageSQL is deprecated, the SpecialRandomGetRandomTitle hook
+ should be used instead
+* (bug 20489) $wgIllegalFileChars added to override the default list of illegal
+ characters in file names.
+* (bug 19646) $wgImgAuthDetails added to display reason access to uploaded file
+ was denied to users(img_auth only)
+* (bug 19646) $wgImgAuthPublicTest added to test to see if img_auth set up
+ correctly (img_auth only)
+* $wgUploadMaintenance added to disable file deletions and restorations during
+ maintenance
+* $wgCapitalLinkOverrides added to configure per-namespace capitalization
+* (bug 21172) $wgSorbsUrl can now be an array with multiple DNSBL and renamed
+ to $wgDnsBlacklistUrls (backward compatibility kept)
+* $wgEnableHtmlDiff has been removed
+* (bug 3340) $wgBlockCIDRLimit added (default: 16) to configure the low end of
+ CIDR ranges for blocking
+* $wgUseInstantCommons added for quick and easy enabling of Commons as a remote
+ file repository
+* $wgDBAhandler added to choose a DBA handler when using CACHE_DBA
+* $wgPreviewOnOpenNamespaces for extensions that create namespaces that behave
+ similarly to the category namespace.
+* $wgEnableSorbs renamed to $wgDnsBlacklistUrls ($wgEnableSorbs kept for
+ backward compatibility)
+* $wgUploadNavigationUrl now also affects images inline images that do not
+ exist. In that case the URL will get (?|&)wpDestFile=<filename> appended to
+ it as appropriate.
+* If $wgLocaltimezone is null, use the server's timezone as the default for
+ signatures. This was always the behaviour documented in DefaultSettings.php
+ but has not been the actual behaviour for some time: instead, UTC was used
+ by default.
+* Added $wgExtensionAssetsPath, to decouple assets serving from $wgScriptPath.
+ If not specified it will default to $wgScriptPath/extensions
+* Added $wgCountTotalSearchHits to make search UI display total number of hits
+ with some search engines.
+* Added $wgAdvertisedFeedTypes to decide what feed types (RSS, Atom, both, or
+ neither) MediaWiki advertises. Default is array( 'atom' ), so RSS is no
+ longer advertised by default (but it still works).
+* Added $wgMemCachedTimeout, controls how long to wait for data from the
+ memcached servers.
+* New configuration variables $wgDebugTimestamps and $wgDebugPrintHttpHeaders
+ for controlling debug output.
+* New $wgBlockDisablesLogin when set to true disallows blocked users from
+ logging in.
+* (bug 8790) Metadata edition ($wgUseMetadataEdit) has been moved to a separate
+ extension "MetadataEdit".
+
+=== New features in 1.16 ===
+
+* Add CSS defintion of the 'wikitable' class to shared.css
+* (bug 17163) Added MediaWiki:Talkpageheader which will be displayed when
+ viewing talk pages
+* Superfluous border="0" removed from images
+* Added new hook 'MessageCacheReplace' into MessageCache.php. For instance
+ to allow extensions to update caches in similar way as MediaWiki invalidates
+ a cached MonoBook sidebar
+* Special:AllPages: Move hardcoded styles from code to CSS
+* (bug 18529) New hook: SoftwareInfo for adding information about the software
+ to Special:Version
+* Added $wgExtPGAlteredFields to allow extensions to easily alter the data
+ type of columns when using the Postgres backend.
+* (bug 16950) Show move log when viewing/creating a deleted page
+* (bug 18242) Show the Subversion revision number per extensions in
+ Special:Version
+* (bug 18420) Missing file revisions are handled gracefully now
+* (bug 9219) Auth plugins can control editing RealName/Email/Nick preferences
+* (bug 18466) Add note or warning when overruling a move (semi-)protection
+* (bug 18342) insertTags works in edit summary box
+* (bug 18411) The upload form also checks post_max_size
+* Watchlist now has a specialized <div> tag that contains a unique class for
+ each page
+* Added Minguo calendar support for the Taiwan Chinese language
+* Database: unionQueries function to be used for UNION sql construction, so
+ it can be overloaded on DB abstraction level for DB specific functionality
+* (bug 18849) Implement Japanese and North Korean calendars
+* (bug 5755) Introduce {{CURRENTMONTH1}} and {{LOCALMONTH1}} to display the
+ month number without the leading zero
+* (bug 13456) categoriespagetext supports PLURAL
+* (bug 18860) Blocks of IPs affecting registered users can now block email
+* (bug 17093) Date and time are separate parameters in Special:BlockList
+* (bug 11484) Added ISO speed rating to default collapsed EXIF metadata view
+* (bug 14866) Messages 'recentchangeslinked-toolbox' and
+ 'recentchangeslinked-toolbox' were added to allow more fine grained
+ customisation of the user interface
+* DISPLAYTITLE now accepts a limited amount of wiki markup (the single-quote
+ items)
+* Special:Search now could search terms in all variant-forms. ONLY apply on
+ wikis enabled LanguageConverter.
+* Add autopromote condition APCOND_BLOCKED to autopromote blocked users to
+ various user groups.
+* Add $wgRevokePermissions as a means of restricting a group's rights. The
+ syntax is identical to $wgGroupPermissions, but users in these groups will
+ have these rights stripped from them.
+* Added a PHP port of CDB (constant database), for improved local caching when
+ the DBA extension is not available.
+* Introduced a new system for localisation caching. The system is based around
+ fast fetches of individual messages, minimising memory overhead and startup
+ time in the typical case. The database backend will be used by default, but
+ set $wgCacheDirectory to get a faster CDB-based implementation.
+* Expanded the number of variables which can be set in the extension messages
+ files.
+* Added a feature to allow per-article process pool size control for the parsing
+ task, to limit resource usage when the cache for a heavily-viewed article is
+ invalidated. Requires an external daemon.
+* (bug 19576) Moved the id attribues from the anchors accompanying section
+ headers to the <span class="mw-headline"> elements within the section headers,
+ removing the redundant anchor elements.
+* Parser::setFunctionTagHook now can be used to add a new tag which is parsed at
+ preprocesor level.
+* Added $wgShowArchiveThumbnails, allowing sysadmins to disable thumbnail
+ display for old versions of images.
+* In watchlists and Special:RecentChanges, the difference in page size now
+ appears in dark green if bytes were added and dark red if bytes were removed.
+* Added FSRepo configuration properties thumbUrl and thumbDir, to allow the
+ thumbnails to be stored in a separate location to the source images.
+* If config/ directory is not executable, the command to make it executable
+ now asks the user to cd to the correct directory
+* Add experimental new external authentication framework, ExternalAuth
+* (bug 18768) Remove AdminSettings requirements. Maintenance environment
+ will still load it if it exists, but it's not required for anything
+* (bug 19900) The "listgrouprights-key" message is now wrapped in a div with
+ class "mw-listgrouprights-key"
+* (bug 471) Allow RSS feeds for watchlist, using an opt-in security token
+* (bug 10812) Interwiki links can have names and descriptions, fetched from
+ message 'interwiki-desc-PREFIX', not really used anywhere yet though
+* (bug 9691) Add type (signup or login) parameter to
+ AuthPlugin::ModifyUITemplate()
+* (bug 14454) "Member of group(s)" in Special:Preferences causes language
+ difficulties
+* (bug 16697) Unicode combining characters are difficult to edit in some
+ browsers
+* Parser test supports uploading results to remote CodeReview instance
+* (bug 20013) Added CSS class "mw-version-ext-version" is wrapped on the
+ extension version in Special:Version
+* (bug 20014) Added CSS class "mw-listgrouprights-right-name" is wrapped on the
+ right name in Special:ListGroupRights
+* (bug 12920) New CoreParserFunction {{nse:...}} as an url-friendly equivalent
+ to {{ns:...}}
+* (bug 16322) Allow maintenance scripts to accept DB user/pass over input or
+ params
+* (bug 18566) Maintenance script to un/protect pages
+* (bug 671) The HTML <abbr> tag is now permitted.
+* RecentChanges now has a legend to explain what the Nmb! flags mean, and the
+ flags have tooltips.
+* (bug 15209) New hook BeforeInitialize called after everything has been setup
+ but before Mediawiki::performRequestForTitle()
+* wgMainPageTitle variable now available to JavaScript code to identify the main
+ page link, so it doesn't have to be extracted from the link URLs.
+* (bug 16836) Display preview of signature in user preferences and describe its
+ use
+* The default output format is now HTML 5 instead of XHTML 1.0 Transitional.
+ This can be disabled by setting $wgHtml5 = false;. Specific features enabled
+ if HTML 5 is used:
+** Some extra inputs will be autofocused, in supporting browsers.
+** The summary attribute has been removed from tables of contents. summary is
+ obsolete in HTML 5 and wasn't useful here anyway.
+** Unnecessary type="" attribute removed for CSS and JS.
+** If $wgWellFormedXml is set to false, some bytes will be shaved off of HTML
+ output by omitting some things like quotation marks where HTML 5 allows.
+** (bug 16921) maxlength enabled for page move comments
+* The description message in $wgExtensionCredits can be an array with parameters
+* New hook SpecialRandomGetRandomTitle allows extensions to modify the selection
+ criteria used by Special:Random and subclasses, or substitute a custom result,
+ deprecating the $wgExtraRandompageSQL config variable
+* (bug 20318) Distinct CSS classes for ISBN/RFC/PMID special links added
+* (bug 20404) Custom fields in the user creation form template can now have
+ detail labels in prefsectiontip divs.
+* MakeSysop and MakeBot are now aliases for Special:UserRights
+* IndexPager->mLimitsShown can now be an associative array of limit => text-to-
+ display-in-limit-form.
+* (bug 18880) LogEventsList::showLogExtract() can now take a string-by-reference
+ and add its HTML to it, rather than having to go straight to $wgOut.
+* Added $wgShowDBErrorBacktrace, to allow users to easily gather backtraces for
+ database connection and query errors.
+* Show change block / unblock link on Special:Contributions if user is blocked
+* Display note on Special:Contributions if the user is blocked, and provide an
+ excerpt from the block log.
+* (bug 19646) New hook: ImgAuthBeforeStream for tests and functionality before
+ file is streamed to user, but only when using img_auth
+* Note on non-existing user and user talk pages if user does not exist
+* New hook ShowMissingArticle so extensions can modify the output for
+ non-existent pages.
+* Admins could disable some variants using $wgDisabledVariants now. ONLY apply
+ on wikis enabled LanguageConverter.
+* (bug 16310) Credits page now lists IP addresses rather than saying the number
+ of anonymous users that edited the page
+* New permission 'sendemail' added. Default right for all registered users. Can
+ for example be used to prevent new accounts from sending spam.
+* (bug 16979) Tracking categories for __INDEX__ and __NOINDEX__
+* Two new hooks, ConfirmEmailComplete and InvalidateEmailComplete, which are
+ called after a user's email has been successfully confirmed or invalidated.
+* (bug 19741) Moved the XCF files out of the main MediaWiki distribution, for
+ a smaller subversion checkout.
+* (bug 13750) First letter capitalization can now be a per-namespace setting
+* (bug 21073) "User does not exist" message no longer displayed on sub-sub-pages
+ of existing users
+* (bug 21095) Tracking categories produced by the parser (expensive parser
+ function limit exceeded, __NOINDEX__ tracking, etc) can now be disabled by
+ setting the system message ([[MediaWiki:expensive-parserfunction-category]]
+ etc) to "-".
+* Added maintenance script sqlite.php for SQLite-specific maintenance tasks.
+* Rewrote Special:Upload to allow easier extension.
+* Upload errors that can be solved by changing the filename now do not require
+ reuploading.
* Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from
rate limits.
-* (bug 14981) Shared repositories can now have display names, located at
- Mediawiki:Shared-repo-name-REPONAME, where REPONAME is the name in
- $wgForeignFileRepos
-* Special:ListUsers: Sort list of usergroups by alphabet
-* (bug 16762) Special:Movepage now shows a list of subpages when possible
-* (bug 17585) Hide legend on Special:Specialpages from non-privileged users
-* Added $wgUseTagFilter to control enabling of filter-by-change-tag
-* (bug 17291) MediaWiki:Nocontribs now has an optional $1 parameter for the
- username
-* Wrap special page summary message '$specialPageName-summary' into a div
- with class 'mw-specialpage-summary'
-* $wgSummarySpamRegex added to handle edit summary spam. This is used *instead*
- of $wgSpamRegex for edit summary checks. Text checks still use $wgSpamRegex.
-* New function to convert content text to specified language (only applies on wiki with
- LanguageConverter class)
-* (bug 17844) Redirect users to a specific page when they log in, see
- $wgRedirectOnLogin
-* Added a link to Special:UserRights on Special:Contributions for privileged users
-* (bug 10336) Added new magic word {{REVISIONUSER}}, which displays the editor
- of the displayed revision's author user name
-* LinkerMakeExternalLink now has an $attribs parameter for link attributes and
- a $linkType parameter for the type of external link being made
-* (bug 17785) Dynamic dates surrounded with a <span> tag, fixing sortable tables
- with dynamic dates.
-* (bug 4582) Provide preference-based autoformatting of unlinked dates with the
- dateformat parser function.
-* (bug 17886) Special:Export now allows you to export a whole namespace (limited
- to 5000 pages)
-* (bug 17714) Limited TIFF upload support now built in if 'tif' extension is
- enabled. Image width and height are now recognized, and when using ImageMagick,
- optional flattening to PNG or JPEG for inline display can be enabled by setting
- $wgTiffThumbnailType
-* Renamed two input IDs on Special:Log from 'page' and 'user' to 'mw-log-page' and
- 'mw-log-user', respectively
-* Added $wgInvalidUsernameCharacters to disallow certain characters in
- usernames during registration (such as "@")
-* Added $wgUserrightsInterwikiDelimiter to allow changing the delimiter
- used in Special:UserRights to denote the user should be searched for
- on a different database
-* Add a class if 'missingsummary' is triggered to allow styling of the summary
- line
-
-=== Bug fixes in 1.15 ===
-
-* (bug 16968) Special:Upload no longer throws useless warnings.
-* (bug 17000) Special:RevisionDelete now checks if the database is locked
- before trying to delete the edit.
-* (bug 16852) padleft and padright now handle multibyte characters correctly
-* (bug 17010) maintenance/namespaceDupes.php now add the suffix recursively if
- the destination page exists
-* (bug 17035) Special:Upload now fails gracefully if PHP's file_uploads has
- been disabled
-* Fixing the caching issue by using -{T|xxx}- syntax (only applies on wiki with
- LanguageConverter class)
-* Improving the efficiency by using -{A|xxx}- syntax (only applies on wiki with
- LanguageConverter class)
-* (bug 17054) Added more descriptive errors in Special:RevisionDelete
-* (bug 11527) Diff on page with one revision shows "Next" link to same diff
-* (bug 8065) Fix summary forcing for new pages
-* (bug 10569) redirects to Special:Mypage and Special:Mytalk are no longer
- allowed by default. Change $wgInvalidRedirectTargets to re-enable.
-* (bug 3043) Feed links of given page are now preceded by standard feed icon
-* (bug 17150) escapeLike now escapes literal \ properly
-* Inconsistent use of sysop, admin, administrator in system messages changed
- to 'administrator'
-* (bug 14423) Check block flag validity for block logging
-* DB transaction and slave-lag avoidance tweaks for Email Notifications
-* (bug 17104) Removed [Mark as patrolled] link for already patrolled revisions
-* (bug 17106) Added 'redirect=no' and 'mw-redirect' class to redirects at
- "user contributions"
-* Rollback links on new pages removed from "user contributions"
-* (bug 15811) Re-upload form tweaks: license fields removed, destination locked,
- comment label uses better message
-* Whole HTML validation ($wgValidateAllHtml) now works with external tidy
-* Parser tests no longer fail when $wgExternalLinkTarget is set in
- LocalSettings
-* (bug 15391) catch DBQueryErrors on external storage insertion. This avoids
- error messages on save were the edit in fact is saved.
-* (bug 17184) Remove duplicate "z" accesskey in MonoBook
-* Parser tests no longer fail when $wgAlwaysUseTidy is set in LocalSettings.php
-* Removed redundant dupe warnings on reupload for the same title. Dupe warnings
- for identical files at different titles are still given.
-* Add 'change tagging' facility, where changes can be tagged internally with
- certain designations, which are displayed on various summaries of changes,
- and the entries can be styled with CSS.
-* (bug 17207) Fix regression breaking category page display on PHP 5.1
-* Categoryfinder utility class no longer fails on invalid input or gives wrong
- results for category names that include pseudo-namespaces
-* (bug 17252) Galician numbering format
-* (bug 17146) Fix for UTF-8 and short word search for some possible MySQL
- configs
-* (bug 7480) Internationalize database error message
-* (bug 16555) Number of links to mediawiki.org scaled back on post-installation
-* (bug 14938) Removing a section no longer leaves excess whitespace
-* (bug 17304) Fixed fatal error when thumbnails couldn't be generated for file
- history
-* (bug 17283) Remove double URL escaping in show/hide links for log entries
- and RevisionDeleteForm::__construct
-* (bug 17105) Numeric table sorting broken
-* (bug 17231) Transcluding special pages on wikis using language conversion no
- longer affects the page title
-* (bug 6702) Default system messages updated/improved
-* (bug 17190) User ID on preference page no longer has delimeters
-* (bug 17341) "Powered by MediaWiki" should be on the left on RTL wikis
-* (bug 17404) "userrights-interwiki" right was missing in User::$mCoreRights
-* (bug 7509) Separation strings should be configurable
-* (bug 17420) Send the correct content type from action=raw when the HTML file
- cache is enabled.
-* (bug 12746) Do not allow new password e-mails when wiki is in read-only mode
-* (bug 17478) Fixed a PHP Strict standards error in
- maintenance/cleanupWatchlist.php
-* (bug 17488) RSS/Atom links in left toolbar are now localized in classic skin
-* (bug 17472) use print <<<EOF in maintenance/importTextFile.php
-* Special:PrefixIndex: Move table styling to shared.css, add CSS IDs to tables
- use correct message 'allpagesprefix' for input form label, replace _ with ' '
- in next page link
-* (bug 17506) Exceptions within exceptions now respect $wgShowExceptionDetails
-* Fixed excessive job queue utilisation
-* File dupe messages for remote repos are now shown only once.
-* (bug 14980) Messages 'shareduploadwiki' and 'shareduploadwiki-desc' are now
- used as a parameter in 'sharedupload' for easier styling and customization.
-* (bug 17482) Formatting error in Special:Preferences#Misc (Opera)
-* (bug 17556) <link> parameters in Special:Contributions feeds (RSS and Atom)
- now point to the actual contributors' feed.
-* ForeignApiRepos now fetch MIME types, rather than trying to figure it locally
-* Special:Import: Do not show input field for import depth if
- $wgExportMaxLinkDepth == 0
-* (bug 17570) $wgMaxRedirects is now correctly respected when following
- redirects (was previously one more than $wgMaxRedirects)
-* (bug 16335) __NONEWSECTIONLINK__ magic word to suppress new section link.
-* (bug 17581) Wrong index name in PostgreSQL's updater: was rc_timestamp_nobot,
- changed to rc_timestamp_bot
-* (bug 17437) Fixed incorrect link to web-based installer
-* (bug 17538) Use shorter URLs in <link> elements
-* (bug 13778) Hidden input added to the search form so that using the Enter key
- on IE will do a fulltext search like clicking the button does
-* (bug 1061) CSS-added icons next to links display through the text and makes
- it unreadable in RTL
-* Special:Wantedtemplates now works on PostgreSQL
-* (bug 14414) maintenance/updateSpecialPages.php no longer throws error with
- PostgreSQL
-* (bug 17546) Correct Tongan language native name is "lea faka-Tonga"
-* (bug 17621) Special:WantedFiles has no link to Special:Whatlinkshere
-* (bug 17460) Client ecoding is now correctly set for PostgreSQL
-* (bug 17648) Prevent floats from intruding into edit area in previews if no
- toolbar present
-* (bug 17692) Added (list of members) link to 'user' in Special:Listgrouprights
-* (bug 17707) Show file destination as plain text if &wpForReUpload=1
-* (bug 10172) Moved setting of "changed since last visit" flags out of the job
- queue
-* (bug 17761) "show/hide" link in page history in now works for the first
- displayed revision if it's not the current one
-* (bug 17722) Fix regression where users are unable to change temporary passwords
-* (bug 17799) Special:Random no longer throws a database error when a non-
- namespace is given, silently falls back to NS_MAIN
-* (bug 17751) The message for bad titles in WantedPages is now localized
-* (bug 17860) Moving a page in the "MediaWiki" namespace using SuppressRedirect
- no longer corrupts the message cache
-* (bug 17900) Fixed User Groups interface log display after saving groups.
-* (bug 17897) Fixed string offset error in <pre> tags
-* (bug 17778) MediaWiki:Catseparator can now have HTML entities
-* (bug 17676) Error on Special:ListFiles when using Postgres
-* Special:Export doesn't use raw SQL queries anymore
-* (bug 14771) Thumbnail links to individual DjVu pages have two no longer have
- two "page" parameters
-* (bug 17972) Special:FileDuplicateSearch form now works correctly on wikis that
- don't use PathInfo or short urls
-* (bug 17990) trackback.php now has a trackback.php5 alias and works with
- $wgScriptExtension
-* (bug 14990) Parser tests works again with PostgreSQL
-* (bug 11487) Special:Protectedpages doesn't list protections with pr_expiry
- IS NULL
-* (bug 18018) Deleting a file redirect leaves behind a malfunctioning redirect
-* (bug 17537) Disable bad zlib.output_compression output on HTTP 304 responses
-* (bug 11213) [edit] section links in printable version no longer appear when
- you cut-and-paste article text
-* (bug 17405) "Did you mean" to mirror Go/Search behavior of original request
-* (bug 18116) 'edittools' is now output identically on edit and upload pages
-* (bug 17241) The diffonly URI parameter should cascade to "Next edit" and
- "Previous edit" diff links
-* (bug 16823) 'Sidebar search form should not use Special:Search view URL as
- target'
-* (bug 16343) Non-existing, but in use, category pages can be "go" match hits
-* Fixed the circular template inclusion check, was broken when the loop
- involved redirects. Without this, infinite recursion within the parser is
- possible.
-* (bug 17611) Provide a sensible error message on install when the SQLite data
- directory is wrong.
-* (bug 16937) Fixed PostgreSQL installation on Windows, workaround for upstream
- pg_version() bug.
-* (bug 11451) Fix upgrade from MediaWiki 1.2 or earlier (imagelinks schema).
-* Fixed SQLite indexes, installation and upgrade. Reintroduced it as an option
- to the installer.
+* (bug 21222) When $wgUseTeX is not enabled, <math> is no longer registered with
+ the parser so extensions are free to implement their own <math> tag
+* (bug 21047) Wrap 'cannotdelete' into a div with the generic 'error' class and
+ an own 'mw-error-cannotdelete' class
+* New hook AbortNewAccountAuto, called before account creation from AuthPlugin-
+ or ExtUser-driven requests.
+* (bug 3480) The warning saying that the page has a history when deleting it now
+ contains the number of revisions in the history
+* $wgStylePath and $wgLogo are now set in the default LocalSettings.php file.
+* (bug 20186) Allow filtering history for revision deletion.
+* New hook OtherBlockLogLink, called in Special:IPBlockList and Special:Block
+ to show links to block logs of other blocking extensions, i.e. GlobalBlocking
+* Added search capabilities to SQLite backend
+* rebuildtextindex.php maintenance script now supports databases other than
+ MySQL
+* upgrade1_5.php now requires to be run --update option to prevent confusion
+* (bug 17662) Customizable default preload/editintro for new sections in the
+ respective addsection-preload and addsection-editintro messages
+* Added maintenance script checkSyntax.php that checks for PHP syntax errors
+ and common coding mistakes
+* Updated Unicode normalization tables
+* (bug 21604) Spellcheck attribute for editsummary
+* New wgCategories JavaScript global variable for userscripts.
+* (bug 20717) Added checkboxes to hide users with bot and/or sysop group
+ membership in SpecialActiveusers
+* Allow \pagecolor and \definecolor in texvc
+* $wgTexvcBackgroundColor contains background color for texvc call
+* (bug 21574) Redirects can now have "303 See Other" HTTP status
+* EditPage refactored to allow extensions to derive new edit modes much easier.
+* (bug 21826) Subsections of Special:Version now also have anchors
+* (bug 19791) Add URL of file source as comment to thumbs (for ImageMagick)
+* (bug 21946) Sorted wikitables do not properly handle minus signs
+* (bug 18885) Red links for media files do not support shared repositories
+* Added $wgFixArabicUnicode, to convert deprecated presentation forms in
+ Arabic text to their modern equivalents, and $wgFixMalayalamUnicode, to
+ convert ZWJ-based chillu sequences in Malayalam text to their Unicode 5.1
+ equivalents.
+* (bug 22051) Returing false in SpecialContributionsBeforeMainOutput hook now
+ stops normal output
+* Send new password e-mail in users preference language
+* LanguageConverter now support nested using of manual convert syntax like
+ "-{-{}-}-"
+* Upload license preview now uses the API instead of action=ajax
+* (bug 7346) Add <guid> to RSS to avoid duplicates
+* (bug 19996) Added new hooks for Special:Search, which allow to further
+ restrict/expand it.
+* (bug 21936) When a revision has been patrolled, there's now a link back to the
+ article
+* (bug 22315) SpecialRecentChangesQuery hook now pass $query_options and checks
+ the return value
+* Separate unit test suites under t/ and tests/ were merged and moved to
+ maintenance/tests/.
+* importImages.php maintenance script can now use the original uploader and
+comment from another wiki.
+* Support for Turck MMCache was removed
+* (bug 14592) Warn users when they try to move their user page that their
+ account will not be renamed
+* Show block log on non-existing user (talk) pages of currently blocked users
+
+=== Bug fixes in 1.16 ===
+
+* (bug 18031) Make namespace selector on Special:Export remember the previous
+ selection
+* The svn-version version numbers on Special:Version have been removed
+* (bug 17374) Special:Export no longer exports two copies of the same page
+* (bug 18190) Proper parsing in MediaWiki:Sharedupload message
+* (bug 17617) HTML cleanup for ImagePage
+* (bug 17964) namespaceDupes.php no longer fails on an empty interwiki table
+* Improved error handling for image moving
+* (bug 17974) On Special:SpecialPages, restricted special pages are now marked
+ with <strong> tags, helps with text-based browsers
+* (bug 18259) Special:DeletedContributions now also uses
+ MediaWiki:Sp-contributions-logs for the link to Special:Log
+* Don't add empty title="" attributes to links to anchors on the current page
+* (bug 18291) rebuildrecentchanges.php failed to add deletion log entries
+* (bug 18304) rebuildrecentchanges.php got size changes wrong
* (bug 18170) Fixed a PHP warning in Parser::preSaveTransform() in PHP 5.3
+* (bug 18289) Database connection error page now returns correct HTML
+* "successbox", "errorbox" and related CSS classes are now available in all
+ skins
+* (bug 18316) Removed superfluous name="fulltext" from Special:Search
+* (bug 18331) MediaWiki:Undelete-revision can now have wikitext
+* The "noautoblock" flag is no longer displayed in the block log when blocking
+ an IP address
+* (bug 18009) $wgHooks and $wgExtensionFunctions now support closures
+* (bug 17948) Maintenance scripts now exit(0) or exit(1) as appropriate
+* (bug 18377) Time in Enhanced ChangesList lacking localisation
+* (bug 12998) Allow <sup>, <sub>, etc. in DISPLAYTITLE
+* (bug 1553) Lowercase navigation headings in German
+* (bug 7830) Pending transactions failed to commit on loginToUse() error
+* (bug 11613) session.save_handler being over-ridden
+* (bug 11381) session.save_handler being set twice (causes error)
+* (bug 17835) ForeignAPIRepo throwing error on first page load for file
+* (bug 18115) ForeignAPIRepo cache isn't working
+* Fixed a bug caused by LanguageConverter.php, which brings an abnormal '}-'
+ after some parsed math syntax.
+* (bug 18441) rebuildrecentchanges.inc no longer ignores $wgLogRestrictions
+* (bug 18317) Bolded selections in 1 | 3 | etc days on RecentChanges now use
+ <strong> instead of hardcoded styles
+* (bug 18449) Fixed items number per column on category pages when the total is
+ divisible by 3
+* (bug 18121) maintenance/deleteArchivedRevisions.php no longer deletes
+ revisions when --delete is not passed
+* (bug 13172) GPS coordinates in image Exif data are now actually displayed
+* Overhaul of preferences system, includes the following bug fixes:
+** (bug 5363) Changes to default preferences now impact registered users.
+** (bug 14806) Hook to enable putting preferences in existing tabs.
+** (bug 17191) Registration date now listed on preferences page.
+** The user_properties table (now used for storing preferences) has been added
+ to $wgSharedTables.
+** Note that this change will break some extensions which have not been adapted
+ for it.
+* (bug 17020) Adding fallback encodings for Traditional and Simplified Chinese
+ languages while the the text is typed as URLs.
+* (bug 17614) Prev / Next links are not shown if all results are shown
+* (bug 18207) Strange spacing before [[irc:...]] links
+* Removed float from the user login form in RTL interface - caused display
+ problems in FF2
+* (bug 15008) Redirect images are now subject to Bad image list rules
+* (bug 6802) profileinfo.php now also work on other database servers than MySQL
+* (bug 16925) Diffs no longer fail when $wgExternalDiffEngine is set to
+ 'wikidiff' or 'wikidiff2' but extension is not installed
+* (bug 18326) Chmod errors in file repos have been hidden
+* (bug 18718) Comma after a } create a error in IE
+* (bug 18716) Removed redundant class in Modern skin CSS for category links and
+ tweaked spacing.
+* (bug 18656) Use proper directory separators in wfMkdirParents()
+* (bug 18549) Make Special:Blockip respect $wgEnableUserEmail and
+ $wgSysopEmailBans
+* (bug 16912) Tooltips on images with link= disappear
+* (bug 18389) Localise numbers in EXIF data
+* (bug 18522) Wrap MediaWiki:Protect-cascadeon in a div for identification
+* (bug 18438) Tweak HTML for preview bar for consistency and accessibility
+* (bug 18432) Updated documentation for dumpBackup.php
+* Fix array logic in Sanitizer::removeHTMLtags so that it doesn't strip good
+ tags that were redundantly defined.
+* (bug 14118) SpecialPage::getTitleFor does not return a localised name
+* (bug 18698) Renaming non entry point maintenance scripts from .inc.php to
+ .inc
+* Deprecated methods Title::getInterwikiLink, Title::userCanCreate(),
+ Title::userCanEdit() and Title::userCanMove() have been removed
+* Only show upload links on file description if $wgEnableUploads = true
+ and user can upload
+* Don't say "You need to log in to upload/move", because it's possible that
+ uploading/moving is disabled for registered users as well (e.g. only sysops)
+* (bug 18943) Handle invalid titles gracefully at Special:Mostlinked
* (bug 8873) Enable variant conversion in text on 'alt' and 'title' attributes
+* (bug 10837) Introducing the StubUserVariant class to determine the variant
+ variable instead of using this to overrules the user language preference.
+* (bug 19014) If user had deletedhistory right, but not undeleted right, then
+ show "view" instead of "view/restore" on logs.
+* (bug 19017) TOC level calculation error in an odd case
+* (bug 18999) CSS update for RTL interwiki links
+* (bug 18925) history.js removes class names of list elements on initialization
+* Multiple whitespace in TOC anchors is now stripped, for consistency with the
+ link from the edit comment
+* (bug 19112) Preferences now respects $wgUseExternalEditor
+* (bug 18173) MediaWiki now fails when unable to determine a client IP
+* (bug 19170) Special:Version should follow the content language direction
+* (bug 19160) maintenance/purgeOldText.inc is now compatible with PostgreSQL
+* Fixed performance regression in "bad image list" feature
+* Show user preference 'Use live preview' if $wgLivePreview is enabled only
+* (bug 17014) Blocked users can no longer use Special:UserRights unless they
+ can add/remove *all* groups (have 'userrights' permission).
+* (bug 19294) Always show Sp-contributions-footer(-anon)
+* Attempts to restrict reading of pages while anonymous viewing is allowed
+ via extensions not using the userCan hook and via $wgRevokePermissions now
+ work.
+* (bug 8445) Multiple-character search terms are now handled properly for
+ Chinese
+* (bug 19450) Use formatNum for "Number of edits" in Special:Preferences
+* (bug 11242) Check for MySQL storage engines during installation now checks
+ whether the engines are actually available
+* (bug 19390) Omit the "printable version" link on the printable version
+* (bug 18394) img_auth.php now respects userCan
+* (bug 19509) Uploading to a file named '0' previously treated it as null input
+ and attempted to upload with the source name. Now warns about not having an
+ extension (since 0.ext is perfectly valid)
+* (bug 19468) Enotif preferences are now only displayed when they are turned on
+* (bug 19442) Show/hide options on watchlist only work once
+* (bug 19602) PubMed Magic links now use updated NIH url
+* (bug 19637) externallinks have links to self
+* Don't load Opera 9.5 RTL fixes for Opera 9.6
+* Remove five-year-old KHTMLFixes.css, which is unlikely to be relevant anymore
+ and was causing problems.
+* Removed repetition of URIs in the title attributes of external links.
+* (bug 19693) User name is now escaped in "Contributions for ..." link on
+ Special:BlockIP
+* (bug 19571) Override buildConcat for SQLite.
+* Log in and log out links no longer return to page view when clicked from
+ history view, edit page, or something similar
+* (bug 19513) RTL fixes for new Search UI
+* (bug 16497) Special:Allmessages is paginated
+* (bug 18708) CSS plainlinks class now available to all skins
+* (bug 19590) Database error messages no longer have "MySQL" hardcoded as the
+ database type
+* (bug 19759) successbox on Special:Preferences now correctly aligned on
+ standard, nostalgia and cologneblue skin
+* (bug 19814) interwiki links from file links ([[File:Foo.jpg|link=de:Test]])
+ are no longer recorded in the pagelinks table
+* (bug 19784) date option "ISO 8601" produced illegal id
+* (bug 19761) Removed autogenerated <meta keywords> tag with link data.
+ Keyword set was not useful, and is ignored by modern search engines anway.
+* (bug 19827) Special:SpecialPages title is "Upload file
+* (bug 19355) Added .xhtml, .xht to upload file extension blacklist
+* (bug 19287) Workaround for lag on history page in Firefox 3.5
+* (bug 19564) Updated docs/hooks.txt
+* (bug 18751) Fix for buggage in profiling setup for some extensions on PHP 5.1
+* (bug 17139) ts_resortTable inconsistent trimming makes date sorting fragile
+* (bug 19445) Change oldimage table to use ON UPDATE CASCADE for FK to image
+ table.
+* (bug 14080) Short notation links to subpages didn't work in edit summaries
+* (bug 17374) Special:Export no longer exports multiple copies of pages
+* (bug 19818) Edits to user CSS/JS subpages can now be marked as patrolled by
+ users who can't edit them
+* (bug 19839) Comments in log items are no more double escaped
+* (bug 18161) Fix inconsistent separators in watchlist link toolbars with
+ "enhanced recent changes"
+* (bug 16877) Moving a page over a redirect no longer leaves an orphan entry in
+ the recentchanges table
+* (bug 16009) Limit selection forms based on Pager now links to the correct page
+ when using long urls
+* The display of the language list on the preferences is more comply with the
+ BCP 47 standards.
+* (bug 19849) Custom X-Vary-Options header now disabled unless $wgUseXVO is set
+* (bug 19301) Duplicates entries in $wgAddGroups, $wgRemoveGroups,
+ $wgGroupsAddToSelf and $wgGroupsRemoveFromSelf are no more displayed on
+ Special:ListGroupRights
+* (bug 18799) Special:Userlogin now handles correctly the returnto parameter
+ to not link back to Special:Userlogout when user's language isn't the same as
+ content's language
+* (bug 19479) Show proper error message when unable to connect to PostgreSQL
+ database with username/password in MediaWiki's setup
+* (bugs 18407, 18409) Special:Upload is now listed on Special:Specialpages only
+ if uploads are enabled and the user can access it
+* (bug 17988) Spaces before [[Category:]] links are no longer ignored
+* (bug 19957) All known-failing tests now marked disabled; added --run-disabled
+ option to parser test suite to run disabled tests if desired.
+* (bug 16311) Make recent change flags (n/m/b) <abbr>s instead of <span>s
+* (bug 15680) Split the edit tip message of user CSS/JS subpage into
+ "usercssyoucanpreview" and "userjsyoucanpreview" respectively.
+* (bug 12110) Split the rights for editing users' CSS/JS subpage from
+ "editusercssjs" into "editusercss" and edituserjs" respectively.
+* (bug 19394) RecentChanges feed URLs for log items with no revisions
+ (eg Newuser, Userrights) are no longer broken
+* (bug 17395) Remote file descriptions use user language ($wgLang), not wiki
+ language ($wgContLang)
+* (bug 11867) Lock error on redirect table when running orphans.php
+* (bug 18930) initStats.php now refreshes active users count
+* (bug 18699) Using the nosummary URL option no longer triggers the "You have
+ not provided a summary" warning for those who activated it in their
+ preferences
+* (bug 18855) commandLine.inc and Maintenance.php are now properly included
+ using the full path
+* (bug 18497) Fixed broken style sheets in Opera fullscreen mode
+* (bug 16084) Default memory limit has be increased to 50M, see $wgMemoryLimit
+* (bug 17864/19519) Added proper input normalization in Special:UserRights
+* (bug 20086) Add Hook to add extra statistics at the end of Special:Statistics
+* (bug 19289) importDump.php can now handle bzip2 and 7zip
+* (bug 20131) Fixed a PHP notice for users having the "rollback" right on
+ Special:RecentChangesLinked
+* Do not transform EXIF fields with pure text to avoid results like
+ foo,bar@example,com
+* (bug 20176) Fix login/logout links in skin CologneBlue
+* (bug 20203) "Powered by Mediawiki" now has height/width on image tag
+* (bug 20273) Fix broken output when no pages are found in the content
+ namespaces
+* (bug 20265) Make AncientPages and UnusedFiles work on SQLite
+* Fixed XSS vulnerability for Internet Explorer clients (only pre-release
+ versions of MediaWiki were affected).
+* (bug 14817) Moving a page to a subpage of itself moves it twice
+* (bug 20289) $wgMaximumMovedPages should only count pages actually moved
+* (bug 15248) Non-breaking spaces and certain other Unicode space characters
+ are now normalized to ordinary spaces in titles; if your wiki has existing
+ titles with such characters, run cleanupTitles.php and/or cleanupImages.php
+* (bug 11143) Links containing invalid UTF-8 percent-code sequences are now
+ cleanly disabled instead of breaking parsing entirely on PHP 5.2.
+* (bug 20296) Fixed an PHP warning in Language::getMagic() in PHP 5.3
+* (bug 20358) Unprotect tab was missing accesskey; now same as protect tab.
+* (bug 20317) Cleaned up default main page link accesskey settings
+* (bug 20362) Special:Statistics now produces valid HTML when view counters are
+ enabled
+* (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks
+ target page
+* (bug 20365) Page name with with c/g/h/j/s/u + x are now correctly handled in
+ Special:MovePage with Esperanto as content language
+* (bug 20364) Fixed regression in GIF metadata loading
+* (bug 20299) MediaWiki:Move-subpages and MediaWiki:Move-talk-subpages can now
+ use wikitext
+* (bug 15475) DatabaseBase::setFlag(), DatabaseBase::clearFlag() and
+ DatabaseBase::getFlag() now have documentation
+* (bug 19966) MediaWiki:License-header is now used for the licensing header in
+ the file description page instead of MediaWiki:License
+* (bug 20380) Links to history/deleted edits at the top of
+ Special:RevisionDelete are no more displayed when when doing log suppression
+* (bug 8143) Localised parser function names are now correctly case insensitive
+ if they contain non-ASCII characters
+* (bug 19055) maintenance/rebuildrecentchanges.php now purges
+ Special:Recentchanges's RSS and Atom feed cache
+* The installer will now try to bypass PHP's max_execution_time
+* (bug 20260) SQLite no longer tries to automatically create the database at
+ execution time, this now happens only at install time; if it is not available
+ at script execution, it now throws an exception
+* Fixed EditFilterMerged hook so the hookError parameter serves a purpose
+ (analogous to EditFilter hook)
+* (bug 2257) Tag extensions can expand template parameters provided to the tag,
+ by using a new parameter added to the recursiveTagParse function
+* (bug 14900) __INDEX__ and __NOINDEX__ no longer override site config set in
+ $wgArticleRobotPolicies.
+* (bug 20466) Hidden categories are no more displayed when printing
+* (bug 20446) When changing user rights with User@remotewiki and remotewiki is
+ the local wiki, the user is now treated as the local user
+* (bug 20494) OutputPage::getArticleBodyOnly() no longer requires an useless
+ argument
+* (bug 20136) Protection form JavaScript now synchronizes the expiry boxes on
+ any change, in addition to onkeyup.
+* Don't link to "edit this page" on MediaWiki:Noarticletext if user is not
+ allowed to create page. Done via new message
+ MediaWiki:Noarticletext-nopermission
+* Improved compatibility between the Vector skin and addPortletLink() from
+ wikibits.js: empty portlets are now present but hidden, adding an element to a
+ portlet unhides it
+* (bug 19531) addPortletLink() now wraps inserted labels in a <span> element to
+ be compatible with the CSS for the Vector skin
+* (bug 20578) Wrong localized image metadata - duplicated string?
+* (bug 20556) Stub threshold's "other" <input> in Special:Preferences now has a
+ correct type="text" parameter
+* (bug 482) Don't include TOC in the printable version if it has been hidden
+* Adjust the time according to the user configuration on Special:Revisiondelete
+* (bug 20624) Installation no longer allows "qqq" as the chosen language
+* (bug 20634) The installer-created database user will now have all rights on
+ the database so that upgrades will go more smoothly.
+* (bug 18180) Special:Export ignores limit, dir, offset parameters
+* User::getBlockedStatus() works for all kinds of user objects and doesn't
+ assume the user object is equal to the current-user object ($wgUser)
+* (bug 20517) Cancel link from edit page now returns to the old version when
+ editing an old version
+* (bug 16902) Installer no longer shows warnings when exec() has been disabled
+ by disable_functions
+* (bug 20726) Title::getLatestRevID's documentation now says that the function
+ returns false if the page doesn't exist
+* (bug 20751) ForeignApiRepo now urldecodes filenames when saving to local cache
+* (bug 20730) Fix to Special:Version ViewVC link for branch checkouts
+* (bug 20353) wfShellExec() was adding extra quotes on Windows Vista, causing
+ command line scripts to fail
+* (bug 20702) Parser functions can now be used correctly in
+ MediaWiki:Missing-article
+* (bug 14117) "redirected from" is now also shown on foreign file redirects
+* (bug 17747) Only display thumbnail column in file history if the image can
+ be rendered.
+* (bug 3421) Live preview no longer breaks user CSS/JS previews
+* (bug 11264) The file logo on a file description page for documents (PDF, ...)
+ now links to the file rather than the file description page
+* Password fields built with HTMLForm now still have the type="password"
+ attribute if $wgHtml5=false.
+* (bug 20836) Preload now works for MediaWiki namespace
+* (bug 20885) Search box no longer suggests unavailable special pages
+* (bug 20948) "Create this page" on Special:Search is no longer displayed when
+ searching for special pages
+* (bug 20524) Hideuser: Show nice error when trying to block hidden user without
+ hideuser right
+* (bug 21026) Fixed file redirects on shared repos on non-English client wikis
+* (bug 21030) Fixed schema choices from being overwritten by defining unique
+ field names per driver.
+* (bug 21115) wgCanonicalSpecialPageName javascript variable is now always
+ false on non-special pages
+* (bug 21113) "Other statistics" header on Special:Statistics is no more
+ displayed when there isn't any entry in it
+* (bug 21114) Special:Contributions no longer shows diff links for new
+ revisions
+* (bug 21116) MediaWiki:Templatesused, MediaWiki:Templatesusedpreview and
+ MediaWiki:Templatesusedsection now support plural
+* (bug 21079) There is no more line wrapping between label and field in
+ Special:Log
+* (bug 20256) Fixed SQL errors on Special:Recentchanges and
+ Special:Recentchangeslinked on SQLite backend
+* (bug 20880) Fixed updater failure on SQLite backend
+* (bug 21182) Fixed invalid HTML in Special:Listgrouprights
+* (bug 20242) Installer no longer promts for user credentials for SQLite
+ databases
+* (bug 20911) Installer failed to create a SQLite database
+* (bug 20847) Deprecated deprecated akeytt() removed in wikibits.js leaving
+ dummy
+* (bug 21161) Changing $wgCacheEpoch now always invalidates file cache
+* (bug 20268) Fixed row count estimation on SQLite backend
+* (bug 20275) Fixed LIKE queries on SQLite backend
+* (bug 21234) Moving subpages of titles containing \\ now works properly
+* (bug 21006) maintenance/updateArticleCount.php now works again on PostgreSQL
+* (bug 19319) Add activeusers-intro message at top of SpecialActiveUsers page
+* (bug 21255) Fixed hostname construction for DNSBL checking
+* (bug 18019) Users are now warned when moving a file to a name in use on a
+ shared repository and only users with the 'reupload-shared' permission can
+ complete the move.
+* (bug 18909) Add missing Postgres INSERT SELECT wrapper
+* User::isValidPassword now only returns boolean results,
+ User::getPasswordValidity can be used to get an error message string
+* The error message shown in Special:ChangePassword now parses wiki markup
+* (bug 19859) Removed experimental HTMLDiff feature
+* Removed section edit links in edit conflict form
+* Allow SpecialActiveusers to work on non-MySQL databases
+* (bug 6579) Fixed protecting images from uploading only
+* (bug 18609) Search index was empty for some pages
+* (bug 13453) rebuildrecentchanges maintenance script works on PG again
+* (bug 16583) Reduce false positives when checking for PHP (on upload, etc.)
+* (bug 20112) Bitrotted tests in the t/ directory were failing.
+* (bug 21470) MediaWiki:Sp-contributions-explain is now wrapped in a <p> with
+ id "mw-sp-contributions-explain"
+* (bug 19159) Fixed \overleftrightarrow in texvc
+* (bug 19391) Fix caching for Recent ChangesFeed.
+* (bug 21455) Fixed "Watch this page" checkbox appearing on some special pages
+ even to non-logged in users
+* (bug 21551) Rewrote the Squid purge HTTP client to provide a more robust and
+ general implementation of HTTP, allowing it to purge non-Squid caches such as
+ Varnish.
+* Fixed corruption of long UDP debug log messages by using socket_sendto()
+ instead of fsockopen() with fwrite().
+* (bug 16884) Fixed feed links in sidebar not complying with URL parameters
+ of the displayed page
+* (bug 21403) memcached class renamed to MWMemecached to avoid conflict with
+ PHP's memcached extension
+* (bug 21650) Both calls to SkinTemplateTabs hook are now compatible
+* (bug 21672) Add missing Accept-Language to both Vary and XVO headers
+* (bug 21679) "Edit block reasons" link at the bottom of Special:Blockip is now
+ only displayed to the users that have "editinterface" right
+* (bug 21740) Attempting to protect a page that doesn't exist (salting) returns
+ "unknown error"
+* (bug 18762) both redirects and links get fixed one after another if
+ redirects-only switch is not present
+* (bug 20159) thumbnails rerendered if older that $wgThumbnailEpoch
+* Fixed a bug which in some situations causes the job queue to grow forever,
+ due to an infinite loop of job requeues.
+* (bug 21523) File that can have multiple pages (djvu, pdf, ...) no longer have
+ the page selector when they have only one page
+* (bug 21559) "logempty" message is now wrapped in a div with class
+ "mw-warning-logempty" when used in log extract
+* (bug 20549) Parser tests were broken on SQLite backend
+* (bug 21776) Interwiki urls like http://en.wikibooks.org/wiki/cs: should give
+ a redirect instead of a baderror.
+* (bug 21803) Special:MyContributions now keeps the query string parameters
+* Redirecting special pages now keep query string paramters set to "0" (e.g.
+ for namespace)
+* (bug 20765) Special:ListGroupRights no longer misses addables and removables
+ groups if there are duplicate entries
+* (bug 21814) Message shown when rolling back an edit with a deleted username
+ now shows '(username deleted)' instead of broken user tool links
+* (bug 21536) Fixed JavaScript error on Special:Search caused by an incorrect ID
+* (bug 21535) RecentChanges RSS feed now always recognises the namespace filter,
+ previously it sometimes didn't due to caching.
+* (bug 20388) ProfilerSimpleText no longer outputs comment on action=raw
+* refreshLinks.php now purges orphaned redirect table rows
+* (bug 2971) Swap links of hist & diff location on Special:Contributions for
+ consistency with RC/WL
+* (bug 21986) Special page names were are now capitalized by content language
+* If two log type have the same description, they're now both displayed in the
+ type selector on Special:Log
+* (bug 20115) Special:Userlogin title says "Log in / create account" even if the
+ user can't create an account
+* (bug 2658) Don't attempt to set the TZ environment variable.
+* (bug 9794) User rights log entries for foreign user now links to the foreign
+ user's page if possible
+* (bug 14717) Don't load nonexistent CSS fix files for non-Monobook skins
+* (bug 22034) Use wfClientAcceptsGzip() in wfGzipHandler instead of
+ reimplementing it.
+* (bug 19226) First line renders differently on many UI messages.
+* (bug 21303) Comments are no longer stripped from MediaWiki:Common.js and
+ skin-specific JS pages
+* (bug 5061) Use the more precise thumbcaption thumbimage and thumbinner classes
+ for image divs.
+* Fixed bug involving unclosed "-{" markup in the language converter
+* (bug 21870) No longer include Google logo from an external server on wiki error.
+* (bug 22181) Do not truncate if the ellipsis actually make the string longer
+* (bug 16039) Text disappearing after a bad image
+* (bug 18784) Internal links like [[File:Foo|caption]] should read 'caption',
+ not 'File:Foo' when Foo is not an image
+* (bug 21518) Special:UserRights no longer displays the user name box for users
+ that can only change their rights
+* (bug 21593) Special:UserRights now lists automatic groups membership
+* (bug 22364) Setting $wgUseExternalEditor to false no longer hides the reupload
+ link from file pages
+* Fix bug introduced in MediaWiki 1.12: The author field in
+ $wgExtensionCredits is no longer sorted with sort() but rather used
+ as it appears in extensions as was the case before r30117 where it
+ was unintentionally sorted along with other fields.
+* (bug 19334) Textarea no longer jumps when editing longer articles in IE8
+* Truncate summary of page moves in revision comment field to avoid broken
+ multibyte characters
+* (bug 22540) ForeignApiRepos no longer try to store thumbnails that don't exist
+* (bug 22551) Special:Resetpass now has a "Cancel" button that sends the user to
+ the page set in the &returnto parameter.
+* (bug 19194) Search box in Modern skin doesn't focus with Safari/Chrome
+* (bug 17790) Users instantly logged off on HughesNet
+
+== API changes in 1.16 ==
-== API changes in 1.15 ==
-
-* (bug 16858) Revamped list=deletedrevs to make listing deleted contributions
- and listing all deleted pages possible
-* (bug 16844) Added clcategories parameter to prop=categories
-* (bug 17025) Add "fileextension" parameter to meta=siteinfo&siprop=
-* (bug 17048) Show the 'new' flag in list=usercontribs for the revision that
- created the page, even if it's not the top revision
-* (bug 17069) Added ucshow=patrolled|!patrolled to list=usercontribs
-* action=delete respects $wgDeleteRevisionsLimit and the bigdelete user right
-* (bug 15949) Add undo functionality to action=edit
-* (bug 16483) Kill filesort in ApiQueryBacklinks caused by missing parentheses.
- Building query properly now using makeList()
-* (bug 17182) Fix pretty printer so URLs with parentheses in them are
- autolinked correctly
-* (bug 17224) Added siprop=rightsinfo to meta=siteinfo
-* (bug 17239) Added prop=displaytitle to action=parse
-* (bug 17317) Added watch parameter to action=protect
-* (bug 17007) Added export and exportnowrap parameters to action=query
-* (bug 17326) BREAKING CHANGE: Changed output format for iiprop=metadata
-* (bug 17355) Added auwitheditsonly parameter to list=allusers
-* (bug 17007) Added action=import
-* BREAKING CHANGE: Removed rctitles parameter from list=recentchanges because
- of performance concerns
-* Listing (semi-)deleted revisions and log entries as well in prop=revisions
- and list=logevents
-* (bug 11430) BREAKING CHANGE: Modules may return fewer results than the
- limit and still set a query-continue in some cases
-* (bug 17357) Added movesubpages parameter to action=move
-* (bug 17433) Added bot flag to list=watchlist&wlprop=flags output
-* (bug 16740) Added list=protectedtitles
-* Added mainmodule and pagesetmodule parameters to action=paraminfo
-* (bug 17502) meta=siteinfo&siprop=namespacealiases no longer lists namespace
- aliases already listed in siprop=namespaces
-* (bug 17529) rvend ignored when rvstartid is specified
-* (bug 17626) Added uiprop=email to list=userinfo
-* (bug 13209) Added rvdiffto parameter to prop=revisions
-* Manual language conversion improve: Now we can include both ";" and ":" in
- conversion rules
-* (bug 17795) Don't report views count on meta=siteinfo if $wgDisableCounters
- is set
-* (bug 17774) Don't hide read-restricted modules like action=query from users
- without read rights, but throw an error when they try to use them.
-* Don't hide write modules when $wgEnableWriteAPI is false, but throw an error
- when someone tries to use them
-* BREAKING CHANGE: action=purge requires write rights and, for anonymous users,
- a POST request
-* (bug 18099) Using appendtext to edit a non-existent page causes an interface
- message to be included in the page text
-* (bug 18601) generator=backlinks returns invalid continue parameter
-* (bug 18597) Internal error with empty generator= parameter
-* (bug 18617) Add xml:space="preserve" attribute to relevant tags in XML output
-
-=== Languages updated in 1.15 ===
-
-MediaWiki supports over 300 languages. Many localisations are updated
+* Added uiprop=changeablegroups to meta=userinfo
+* Added usprop=gender to list=users
+* (bug 18311) action=purge now works for images too
+* Add parentid to prop=revisions output
+* (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied'
+ when the user is blocked
+* (bug 18546) Added timestamp of new revision to action=edit output
+* (bug 18554) Also list hidden revisions in list=usercontribs for privileged
+ users
+* (bug 13049) "API must be accessed from the primary script entry point" error
+* (bug 16422) Don't display help for format=jsonfm unless specifically requested
+* Added PHP and database version to meta=siteinfo output
+* (bug 18533) Add readonly message to meta=siteinfo output
+* (bug 18518) Add clprop=hidden to prop=categories
+* (bug 18710) Fixed internal error with empty parameter in action=paraminfo
+* (bug 18709) Missing descriptions for some parameters in action=paraminfo
+ output
+* (bug 18731) Show correct SVN links for extension modules in api.php?version
+* (bug 18730) Add version information to action=paraminfo output
+* (bug 18743) Add ucprop=size to list=usercontribs
+* (bug 18749) Add generator flag to action=paraminfo output
+* Make action=block respect $wgEnableUserEmail and $wgSysopEmailBans
+* Made deleting file description pages without files possible
+* (bug 18773) Add content flag to siprop=namespaces output
+* (bug 18785) Add siprop=languages to meta=siteinfo
+* (bug 14200) Added user and excludeuser parameters to list=watchlist and
+ list=recentchanges
+* Added index, fromtitle and byteoffset fields to action=parse&prop=sections
+ output
+* (bug 19313) action=rollback returns wrong revid on master/slave setups
+* (bug 19323) action=parse doesn't return section tree on pages with Cite
+ warnings
+* (bug 18720) Add anchor field to action=parse&prop=sections output
+* (bug 19423) The initial file description page used caption in user lang
+ rather than UI lang
+* (bug 17809) Add number of users in user groups to meta=siteinfo
+* (bug 18533) Add readonly reason to readonly exception
+* (bug 19528) Added XSLT parameter to API queries in format=xml
+* (bug 19040) Fix prependtext and appendtext in combination with section
+ parameter in action=edit
+* (bug 19090) Added watchlist parameter, deprecated watch and unwatch
+ parameter in action=edit
+* Added fields to list=search output: size, wordcount, timestamp, snippet
+* Where supported by backend, list=search adds a 'searchinfo' element with
+ optional info: 'totalhits' count and 'suggestion' alternate query term
+* (bug 19907) $wgCrossSiteAJAXdomains added to allow specified (or all)
+ external domains to access api.php via AJAX, if the browser supports the
+ Access-Control-Allow-Origin HTTP header
+* (bug 19999) Made metadata and properties of search results optional. Added
+ srprop and srinfo.
+* (bug 20700) Add amprop=default to meta=allmessages to list default value for
+ customized messages
+* Don't parse magic words in meta=allmessages, output messages unparsed
+* (bug 21105) list=usercontribs can now list contribs for User:0
+* (bug 21085) list=deletedrevs no longer returns only one revision when
+ drcontinue param is passed
+* (bug 21106) Deprecated parameters now tagged in action=paraminfo
+* (bug 19004) Added support for tags
+* (bug 21083) list=allusers no longer returns current timestamp for users
+ without registration date
+* (bug 20967) action=edit allows creation of invalid titles
+* (bug 19523) Add inprop=watched to prop=info
+* (bug 21589) API: Separate summary and initial page text for uploads
+* (bug 21817) list=usercontribs returns empty result for empty ucuser
+* (bug 21441) meta=userinfo&uiprop=options no longer returns default options
+ for logged-in users under certain circumstances
+* (bug 21945) Add chomp control in YAML
+* Expand the thumburl to an absolute url to make it consistent with url and
+ descriptionurl
+* (bug 20233) ApiLogin::execute() doesn't handle LoginForm :: RESET_PASS
+* (bug 22061) API: add prop=headitems to action=parse
+* (bug 22240) API: include time in siteinfo
+* (bug 22241) Quick edit is still using the deprecated watch parameter (API: Setting default for watch/unwatch wrongly set)
+* (bug 22245) blfilterredirect=nonredirects in blredirect mode wrongly filtering
+* (bug 22248) Output extension URLs in meta=siteinfo&siprop=extensions
+* Support key-params arrays in 'descriptionmsg' in meta=siteinfo&siprop=extensions
+* (bug 21922) YAML output should quote asterisk when used as key
+* (bug 22297) safesubst: to allow substitution without breaking transclusion
+* (bug 18758) API read of watchlist's wl_notificationtimestamp
+* (bug 20809) Expose EditFormPreloadText via the API
+* (bug 18427) Comment (edit summary) parser option for API
+* (bug 18608) API should provide list of CSS styles to apply to rendered output
+* (bug 18771) List possible errors in action=paraminfo
+
+=== Languages updated in 1.16 ===
+
+MediaWiki supports over 330 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of MediaZilla reports.
-* Austrian German (de-at) (new)
-* Swiss Standard German (de-ch) (new)
-* Simplified Gan Chinese (gan-hans) (new)
-* Traditional Gan Chinese (gan-hant) (new)
-* Literary Chinese (lzh) (new)
-* Uyghur (Latin script) (ug-latn) (renamed from 'ug')
-* Veps (vep) (new)
-* Võro (vro) (renamed from fiu-vro)
-* (bug 17151) Add magic word alias for #redirect for Vietnamese
-* (bug 17288) Messages improved for default language (English)
-* (bug 12937) Update native name for Afar
-* (bug 16909) 'histlegend' now reuses messages instead of copying them
-* (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied'
- when the user is blocked
-* Traditional/Simplified Gan Chinese conversion support
+* Capiznon (cps) (new)
+* North Frisian (frr) (new)
+* Kirmanjki (kiu) (new)
+* Komi-Permyak (koi) (new)
+* Karachay-Balkar (krc) (new)
+* Latgalian (ltg) (new)
+* Hill Mari (mrj) (new)
+* Prussian (prg) (new)
+* Romagnol (rgn) (new)
+* Rusyn (rue) (new)
+* Lower Silesian (sli) (new)
+* Picard (pcd) (new)
+* Uyghur (Arabic script) (ug-arab) (new)
+* Upper Franconian (vmf) (new)
+* Votic (vot) (new)
+* Eastern Yiddish (ydd) (removed)
+* Iriga Bicolano (bto) (removed)
+* Ladin (lld) (removed)
+* Palembang (plm) (removed)
+* Megleno-Romanian (Greek script) (ruq-grek) (removed)
+* Tamazight (tzm) (removed)
-== Compatibility ==
+* (bug 18474) Sorani (ckb - Central Kurdish) (renamed from ku-arab)
+* Add PLURAL function for Scots Gaelic (gd)
+* Add Estonian letters äöõšüž to linktrail (et)
+* (bug 18776) Native name of Burmese language (my)
+* (bug 18806) Use correct unicode characters in spelling of native Chuvash
+ (Чӑвашла)
+* (bug 18864) Updated autonym for Zhuang language
+* (bug 18308) Updated date formatting in Occitan (oc)
+* (bug 19080) Added ăâîşţșțĂÂÎŞŢȘȚ to Romanion (ro) linktrail
+* (bug 19286) Correct commafying function in Polish (pl)
+* (bug 19441) Updated date formatting for Lithuanian
+* (bug 19630) Added ÄäÇçĞğŇňÖöŞşÜüÝýŽž to Turkmen (tk) linktrail
+* (bug 19949) New linktrail for Greek (el)
+* (bug 19809) Korean (North Korea) (ko-kp) (new)
+* (bug 19968) Fixed "Project talk" namespace name for Maltese (mt)
+* (bug 21168) Added áâãàéêçíóôõúü to Portuguese (pt) linktrail
+* (bug 21596) Change interwiki link for Kurdish (ku)
-MediaWiki 1.15 requires PHP 5 (5.2 recommended). PHP 4 is no longer supported.
+== Compatibility ==
-PHP 5.0.x fails on 64-bit systems due to serious bugs with array processing:
-http://bugs.php.net/bug.php?id=34879
-Upgrade affected systems to PHP 5.1 or higher.
+MediaWiki 1.16 requires PHP 5.1 (5.2 recommended). PHP 4 is no longer supported.
MySQL 3.23.x is no longer supported; some older hosts may need to upgrade.
At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
@@ -463,7 +997,7 @@ At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases.
== Upgrading ==
-1.15 has several database changes since 1.14, and will not work without schema
+1.16 has several database changes since 1.15, and will not work without schema
updates.
If upgrading from before 1.11, and you are using a wiki as a commons reposito-
@@ -488,7 +1022,7 @@ set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
cases, but this is not recommended on live sites. (This must be set for
MathML to display properly in Mozilla.)
-For notes on 1.14.x and older releases, see HISTORY.
+For notes on 1.15.x and older releases, see HISTORY.
=== Online documentation ===
diff --git a/StartProfiler.php b/StartProfiler.sample
index 3fcf69e6..f91aeb92 100644
--- a/StartProfiler.php
+++ b/StartProfiler.sample
@@ -3,7 +3,8 @@
require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
/**
- * To use a profiler, delete the line above and add something like this:
+ * To use a profiler, copy this file to StartProfiler.php,
+ * delete the PHP line above, and add something like this:
*
* require_once( dirname(__FILE__).'/includes/Profiler.php' );
* $wgProfiler = new Profiler;
diff --git a/UPGRADE b/UPGRADE
index 9d0e0521..7cd302e9 100644
--- a/UPGRADE
+++ b/UPGRADE
@@ -42,8 +42,7 @@ You can also obtain the new files directly from our Subversion source code
repository, via a checkout or export operation.
Replace the existing MediaWiki files with the new. You should preserve the
-LocalSettings.php file, AdminSettings.php file (if present), and the
-"extensions" and "images" directories.
+LocalSettings.php file and the "extensions" and "images" directories.
Depending upon your configuration, you may also need to preserve additional
directories, including a custom upload directory ($wgUploadDirectory),
@@ -51,8 +50,8 @@ deleted file archives, and any custom skins.
=== Perform the database upgrade ===
-You will need an AdminSettings.php file set up in the correct format; see
-AdminSettings.sample in the wiki root for more information and examples.
+You will need to have $wgDBadminuser and $wgDBadminpassword set in your
+LocalSettings.php, see there for more info.
From the command line, browse to the "maintenance" directory and run the
update.php script to check and update the schema. This will insert missing
@@ -69,8 +68,8 @@ behaviour of MediaWiki.
=== Check installed extensions ===
In MediaWiki 1.14 some extensions are migrated into the core. Please see the
-RELEASE-NOTES section "Migrated extensions" and disable these extensions in your
-localSettings.php
+HISTORY section "Migrated extensions" and disable these extensions in your
+LocalSettings.php
=== Test ===
@@ -172,10 +171,10 @@ should be replaced with:
=== Web installer ===
You can use the web-based installer wizard if you first remove the
-LocalSettings.php (and AdminSettings.php, if any) files; be sure to
-give the installer the same information as you did on the original
-install (language/encoding, database name, password, etc). This will
-also generate a fresh LocalSettings.php, which you may need to customize.
+LocalSettings.php file; be sure to give the installer the same
+information as you did on the original install (language/encoding,
+database name, password, etc). This will also generate a fresh
+LocalSettings.php, which you may need to customize.
You may change some settings during the install, but be very careful!
Changing the encoding in particular will generally leave you with a
@@ -185,8 +184,8 @@ lot of corrupt pages, particularly if your wiki is not in English.
Additionally, as of 1.4.0 you can run an in-place upgrade script from
the command line, keeping your existing LocalSettings.php. This requires
-that you create an AdminSettings.php giving an appropriate database user
-and password with privileges to modify the database structure.
+that you set $wgDBadminuser and $wgDBadminpassword with an appropriate
+database user and password with privileges to modify the database structure.
Once the new files are in place, go into the maintenance subdirectory and
run the script:
diff --git a/api.php b/api.php
index 58e06d88..10baa13e 100644
--- a/api.php
+++ b/api.php
@@ -23,8 +23,8 @@
* @file
*/
-/**
- * This file is the entry point for all API queries. It begins by checking
+/**
+ * This file is the entry point for all API queries. It begins by checking
* whether the API is enabled on this wiki; if not, it informs the user that
* s/he should set $wgEnableAPI to true and exits. Otherwise, it constructs
* a new ApiMain using the parameter passed to it as an argument in the URL
@@ -35,9 +35,10 @@
*/
// Initialise common code
-require (dirname(__FILE__) . '/includes/WebStart.php');
+require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
-wfProfileIn('api.php');
+wfProfileIn( 'api.php' );
+$starttime = microtime( true );
// URL safety checks
//
@@ -49,38 +50,67 @@ wfProfileIn('api.php');
// which will end up triggering HTML detection and execution, hence
// XSS injection and all that entails.
//
-// Ensure that all access is through the canonical entry point...
-//
-if( isset( $_SERVER['SCRIPT_URL'] ) ) {
- $url = $_SERVER['SCRIPT_URL'];
-} else {
- $url = $_SERVER['PHP_SELF'];
-}
-if( strcmp( "$wgScriptPath/api$wgScriptExtension", $url ) ) {
+if ( $wgRequest->isPathInfoBad() ) {
wfHttpError( 403, 'Forbidden',
- 'API must be accessed through the primary script entry point.' );
+ 'Invalid file extension found in PATH_INFO. ' .
+ 'The API must be accessed through the primary script entry point.' );
return;
}
// Verify that the API has not been disabled
-if (!$wgEnableAPI) {
+if ( !$wgEnableAPI ) {
echo 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php';
echo '<pre><b>$wgEnableAPI=true;</b></pre>';
- die(1);
+ die( 1 );
+}
+
+// Selectively allow cross-site AJAX
+
+/*
+ * Helper function to convert wildcard string into a regex
+ * '*' => '.*?'
+ * '?' => '.'
+ * @ return string
+ */
+function convertWildcard( $search ) {
+ $search = preg_quote( $search, '/' );
+ $search = str_replace(
+ array( '\*', '\?' ),
+ array( '.*?', '.' ),
+ $search
+ );
+ return "/$search/";
+}
+
+if ( $wgCrossSiteAJAXdomains && isset( $_SERVER['HTTP_ORIGIN'] ) ) {
+ $exceptions = array_map( 'convertWildcard', $wgCrossSiteAJAXdomainExceptions );
+ $regexes = array_map( 'convertWildcard', $wgCrossSiteAJAXdomains );
+ foreach ( $regexes as $regex ) {
+ if ( preg_match( $regex, $_SERVER['HTTP_ORIGIN'] ) ) {
+ foreach ( $exceptions as $exc ) { // Check against exceptions
+ if ( preg_match( $exc, $_SERVER['HTTP_ORIGIN'] ) ) {
+ break 2;
+ }
+ }
+ header( "Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}" );
+ header( 'Access-Control-Allow-Credentials: true' );
+ break;
+ }
+ }
}
// So extensions can check whether they're running in API mode
-define('MW_API', true);
+define( 'MW_API', true );
// Set a dummy $wgTitle, because $wgTitle == null breaks various things
// In a perfect world this wouldn't be necessary
-$wgTitle = Title::newFromText('API');
+$wgTitle = Title::makeTitle( NS_MAIN, 'API' );
/* Construct an ApiMain with the arguments passed via the URL. What we get back
* is some form of an ApiMain, possibly even one that produces an error message,
* but we don't care here, as that is handled by the ctor.
*/
-$processor = new ApiMain($wgRequest, $wgEnableWriteAPI);
+$processor = new ApiMain( $wgRequest, $wgEnableWriteAPI );
// Process data & print results
$processor->execute();
@@ -89,9 +119,28 @@ $processor->execute();
wfDoUpdates();
// Log what the user did, for book-keeping purposes.
-wfProfileOut('api.php');
+$endtime = microtime( true );
+wfProfileOut( 'api.php' );
wfLogProfilingData();
+// Log the request
+if ( $wgAPIRequestLog ) {
+ $items = array(
+ wfTimestamp( TS_MW ),
+ $endtime - $starttime,
+ wfGetIP(),
+ $_SERVER['HTTP_USER_AGENT']
+ );
+ $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';
+ if ( $processor->getModule()->mustBePosted() ) {
+ $items[] = "action=" . $wgRequest->getVal( 'action' );
+ } else {
+ $items[] = wfArrayToCGI( $wgRequest->getValues() );
+ }
+ wfErrorLog( implode( ',', $items ) . "\n", $wgAPIRequestLog );
+ wfDebug( "Logged API request to $wgAPIRequestLog\n" );
+}
+
// Shut down the database
wfGetLBFactory()->shutdown();
diff --git a/t/.htaccess b/cache/.htaccess
index 3a428827..3a428827 100644
--- a/t/.htaccess
+++ b/cache/.htaccess
diff --git a/config/Installer.php b/config/Installer.php
new file mode 100644
index 00000000..293a1a6c
--- /dev/null
+++ b/config/Installer.php
@@ -0,0 +1,2350 @@
+<?php
+
+# MediaWiki web-based config/installation
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>, 2006 Rob Church <robchur@gmail.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+if( !defined( 'MEDIAWIKI_INSTALL' ) ) {
+ die( 'Not an entry point.' );
+}
+
+error_reporting( E_ALL | E_STRICT );
+header( "Content-type: text/html; charset=utf-8" );
+@ini_set( "display_errors", true );
+
+# In case of errors, let output be clean.
+$wgRequestTime = microtime( true );
+
+// Run version checks before including other files
+// so people don't see a scary parse error.
+require_once( "$IP/maintenance/install-utils.inc" );
+install_version_checks();
+
+require_once( "$IP/includes/Defines.php" );
+require_once( "$IP/includes/DefaultSettings.php" );
+require_once( "$IP/includes/AutoLoader.php" );
+require_once( "$IP/includes/MagicWord.php" );
+require_once( "$IP/includes/Namespace.php" );
+require_once( "$IP/includes/ProfilerStub.php" );
+require_once( "$IP/includes/GlobalFunctions.php" );
+require_once( "$IP/includes/Hooks.php" );
+require_once( "$IP/includes/Exception.php" );
+require_once( "$IP/includes/json/Services_JSON.php" );
+require_once( "$IP/includes/json/FormatJson.php" );
+
+# If we get an exception, the user needs to know
+# all the details
+$wgShowExceptionDetails = true;
+$wgShowSQLErrors = true;
+wfInstallExceptionHandler();
+## Databases we support:
+
+$ourdb = array();
+
+$ourdb['mysql'] = array(
+ 'fullname' => 'MySQL',
+ 'havedriver' => 0,
+ 'compile' => 'mysql',
+ 'bgcolor' => '#ffe5a7',
+ 'rootuser' => 'root',
+ 'serverless' => false
+);
+
+$ourdb['postgres'] = array(
+ 'fullname' => 'PostgreSQL',
+ 'havedriver' => 0,
+ 'compile' => 'pgsql',
+ 'bgcolor' => '#aaccff',
+ 'rootuser' => 'postgres',
+ 'serverless' => false
+);
+
+$ourdb['sqlite'] = array(
+ 'fullname' => 'SQLite',
+ 'havedriver' => 0,
+ 'compile' => 'pdo_sqlite',
+ 'bgcolor' => '#b1ebb1',
+ 'rootuser' => '',
+ 'serverless' => true
+);
+
+$ourdb['mssql'] = array(
+ 'fullname' => 'MSSQL',
+ 'havedriver' => 0,
+ 'compile' => 'mssql_not_ready', # Change to 'mssql' after includes/DatabaseMssql.php added;
+ 'bgcolor' => '#ffc0cb',
+ 'rootuser' => 'administrator',
+ 'serverless' => false
+);
+
+$ourdb['ibm_db2'] = array(
+ 'fullname' => 'DB2',
+ 'havedriver' => 0,
+ 'compile' => 'ibm_db2',
+ 'bgcolor' => '#ffeba1',
+ 'rootuser' => 'db2admin',
+ 'serverless' => false
+);
+
+$ourdb['oracle'] = array(
+ 'fullname' => 'Oracle',
+ 'havedriver' => 0,
+ 'compile' => 'oci8',
+ 'bgcolor' => '#ffeba1',
+ 'rootuser' => 'sys',
+ 'serverless' => false
+);
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr">
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta name="robots" content="noindex,nofollow"/>
+ <title>MediaWiki <?php echo htmlspecialchars( $wgVersion ); ?> Installation</title>
+ <style type="text/css">
+
+ @import "../skins/monobook/main.css";
+
+ .env-check {
+ font-size: 90%;
+ margin: 1em 0 1em 2.5em;
+ }
+
+ .config-section {
+ margin-top: 2em;
+ }
+
+ .config-section label.column {
+ clear: left;
+ font-weight: bold;
+ width: 13em;
+ float: left;
+ text-align: right;
+ padding-right: 1em;
+ padding-top: .2em;
+ }
+
+ .config-input {
+ clear: left;
+ zoom: 100%; /* IE hack */
+ }
+
+ .config-section .config-desc {
+ clear: left;
+ margin: 0 0 2em 18em;
+ padding-top: 1em;
+ font-size: 85%;
+ }
+
+ .iput-text, .iput-password {
+ width: 14em;
+ margin-right: 1em;
+ }
+
+ .error {
+ color: red;
+ background-color: #fff;
+ font-weight: bold;
+ left: 1em;
+ font-size: 100%;
+ }
+
+ .error-top {
+ color: red;
+ background-color: #FFF0F0;
+ border: 2px solid red;
+ font-size: 130%;
+ font-weight: bold;
+ padding: 1em 1.5em;
+ margin: 2em 0 1em;
+ }
+
+ ul.plain {
+ list-style-type: none;
+ list-style-image: none;
+ float: left;
+ margin: 0;
+ padding: 0;
+ }
+
+ .btn-install {
+ font-weight: bold;
+ font-size: 110%;
+ padding: .2em .3em;
+ }
+
+ .license {
+ font-size: 85%;
+ padding-top: 3em;
+ }
+
+ span.success-message {
+ font-weight: bold;
+ font-size: 110%;
+ color: green;
+ }
+
+ .success-box {
+ font-size: 130%;
+ }
+
+ </style>
+ <script type="text/javascript">
+ <!--
+ <?php echo 'var databases = ' . FormatJson::encode( $ourdb ) . ';'; ?>
+
+ function show(id, showOrHide) {
+ var i = document.getElementById(id);
+ if (i) i.style.display = showOrHide ? 'block' : 'none';
+ }
+ function hideall() {
+ for (db in databases) {
+ show(db, false);
+ }
+ }
+ function toggleDBarea(id, defaultroot) {
+ hideall();
+ var dbarea = document.getElementById(id);
+ if (dbarea) dbarea.style.display = (dbarea.style.display == 'none') ? 'block' : 'none';
+ var db = document.getElementById('RootUser');
+ db.value = databases[id].rootuser;
+ show('db-server-settings1', !databases[id].serverless);
+ show('db-server-settings2', !databases[id].serverless);
+ }
+ // -->
+ </script>
+</head>
+
+<body>
+<div id="globalWrapper">
+<div id="column-content">
+<div id="content">
+<div id="bodyContent">
+
+<h1>MediaWiki <?php print htmlspecialchars( $wgVersion ) ?> Installation</h1>
+
+<?php
+$mainListOpened = false; # Is the main list (environement checking) opend ? Used by dieout
+
+/* Check for existing configurations and bug out! */
+
+if( file_exists( "../LocalSettings.php" ) ) {
+ $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
+ dieout( "<p><strong>Setup has completed, <a href='../$script'>your wiki</a> is configured.</strong></p>
+ <p>Please delete the /config directory for extra security.</p>" );
+}
+
+if( file_exists( "./LocalSettings.php" ) ) {
+ writeSuccessMessage();
+ dieout( '' );
+}
+
+if( !is_writable( "." ) ) {
+ dieout( "<h2>Can't write config file, aborting</h2>
+
+ <p>In order to configure the wiki you have to make the <tt>config</tt> subdirectory
+ writable by the web server. Once configuration is done you'll move the created
+ <tt>LocalSettings.php</tt> to the parent directory, and for added safety you can
+ then remove the <tt>config</tt> subdirectory entirely.</p>
+
+ <p>To make the directory writable on a Unix/Linux system:</p>
+
+ <pre>
+ cd <i>" . htmlspecialchars( dirname( dirname( __FILE__ ) ) ) . "</i>
+ chmod a+w config
+ </pre>
+
+ <p>Afterwards retry to start the <a href=\"\">setup</a>.</p>" );
+}
+
+
+require_once( "$IP/maintenance/updaters.inc" );
+
+class ConfigData {
+ function getEncoded( $data ) {
+ # removing latin1 support, no need...
+ return $data;
+ }
+ function getSitename() { return $this->getEncoded( $this->Sitename ); }
+ function getSysopName() { return $this->getEncoded( $this->SysopName ); }
+ function getSysopPass() { return $this->getEncoded( $this->SysopPass ); }
+
+ function setSchema( $schema, $engine ) {
+ $this->DBschema = $schema;
+ if ( !preg_match( '/^\w*$/', $engine ) ){
+ $engine = 'InnoDB';
+ }
+ switch ( $this->DBschema ) {
+ case 'mysql5':
+ $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=utf8";
+ $this->DBmysql5 = 'true';
+ break;
+ case 'mysql5-binary':
+ $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=binary";
+ $this->DBmysql5 = 'true';
+ break;
+ default:
+ $this->DBTableOptions = "TYPE=$engine";
+ $this->DBmysql5 = 'false';
+ }
+ $this->DBengine = $engine;
+
+ # Set the global for use during install
+ global $wgDBTableOptions;
+ $wgDBTableOptions = $this->DBTableOptions;
+ }
+}
+
+?>
+
+<ul>
+ <li>
+ <b>Don't forget security updates!</b> Keep an eye on the
+ <a href="http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce">low-traffic
+ release announcements mailing list</a>.
+ </li>
+</ul>
+
+
+<h2>Checking environment...</h2>
+<p><em>Please include all of the lines below when reporting installation problems.</em></p>
+<ul class="env-check">
+<?php
+$mainListOpened = true;
+
+$endl = "
+";
+define( 'MW_NO_OUTPUT_BUFFER', 1 );
+$conf = new ConfigData;
+
+install_version_checks();
+$self = 'Installer'; # Maintenance script name, to please Setup.php
+
+print "<li>PHP " . htmlspecialchars( phpversion() ) . " installed</li>\n";
+
+error_reporting( 0 );
+$phpdatabases = array();
+foreach (array_keys($ourdb) as $db) {
+ $compname = $ourdb[$db]['compile'];
+ if( extension_loaded( $compname ) || ( mw_have_dl() && dl( "{$compname}." . PHP_SHLIB_SUFFIX ) ) ) {
+ array_push($phpdatabases, $db);
+ $ourdb[$db]['havedriver'] = 1;
+ }
+}
+error_reporting( E_ALL | E_STRICT );
+
+if (!$phpdatabases) {
+ print "Could not find a suitable database driver!<ul>";
+ foreach (array_keys($ourdb) AS $db) {
+ $comp = $ourdb[$db]['compile'];
+ $full = $ourdb[$db]['fullname'];
+ print "<li>For <b>$full</b>, compile PHP using <b>--with-$comp</b>, "
+ ."or install the $comp.so module</li>\n";
+ }
+ echo '</ul>';
+ dieout( '' );
+}
+
+print "<li>Found database drivers for:";
+$DefaultDBtype = '';
+foreach (array_keys($ourdb) AS $db) {
+ if ($ourdb[$db]['havedriver']) {
+ if ( $DefaultDBtype == '' ) {
+ $DefaultDBtype = $db;
+ }
+ print " ".$ourdb[$db]['fullname'];
+ }
+}
+print "</li>\n";
+
+if( wfIniGetBool( "register_globals" ) ) {
+ ?>
+ <li>
+ <div style="font-size:110%">
+ <strong class="error">Warning:</strong>
+ <strong>PHP's <tt><a href="http://php.net/register_globals">register_globals</a></tt> option is enabled. Disable it if you can.</strong>
+ </div>
+ MediaWiki will work, but your server is more exposed to PHP-based security vulnerabilities.
+ </li>
+ <?php
+}
+
+$fatal = false;
+
+if( wfIniGetBool( "magic_quotes_runtime" ) ) {
+ $fatal = true;
+ ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime'>magic_quotes_runtime</a> is active!</strong>
+ This option corrupts data input unpredictably; you cannot install or use
+ MediaWiki unless this option is disabled.</li>
+ <?php
+}
+
+if( wfIniGetBool( "magic_quotes_sybase" ) ) {
+ $fatal = true;
+ ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.sybase.php#ini.magic-quotes-sybase'>magic_quotes_sybase</a> is active!</strong>
+ This option corrupts data input unpredictably; you cannot install or use
+ MediaWiki unless this option is disabled.</li>
+ <?php
+}
+
+if( wfIniGetBool( "mbstring.func_overload" ) ) {
+ $fatal = true;
+ ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload'>mbstring.func_overload</a> is active!</strong>
+ This option causes errors and may corrupt data unpredictably;
+ you cannot install or use MediaWiki unless this option is disabled.</li>
+ <?php
+}
+
+if( wfIniGetBool( "zend.ze1_compatibility_mode" ) ) {
+ $fatal = true;
+ ?><li class="error"><strong>Fatal: <a href="http://www.php.net/manual/en/ini.core.php">zend.ze1_compatibility_mode</a> is active!</strong>
+ This option causes horrible bugs with MediaWiki; you cannot install or use
+ MediaWiki unless this option is disabled.</li>
+ <?php
+}
+
+if( $fatal ) {
+ dieout( "Cannot install MediaWiki." );
+}
+
+if( wfIniGetBool( "safe_mode" ) ) {
+ $conf->safeMode = true;
+ ?>
+ <li><b class='error'>Warning:</b> <strong>PHP's
+ <a href='http://www.php.net/features.safe-mode'>safe mode</a> is active.</strong>
+ You may have problems caused by this, particularly if using image uploads.
+ </li>
+ <?php
+} else {
+ $conf->safeMode = false;
+}
+
+$sapi = htmlspecialchars( php_sapi_name() );
+print "<li>PHP server API is $sapi; ";
+$script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
+if( $wgUsePathInfo ) {
+ print "ok, using pretty URLs (<tt>$script/Page_Title</tt>)";
+} else {
+ print "using ugly URLs (<tt>$script?title=Page_Title</tt>)";
+}
+print "</li>\n";
+
+$conf->xml = function_exists( "utf8_encode" );
+if( $conf->xml ) {
+ print "<li>Have XML / Latin1-UTF-8 conversion support.</li>\n";
+} else {
+ dieout( "PHP's XML module is missing; the wiki requires functions in
+ this module and won't work in this configuration.
+ If you're running Mandrake, install the php-xml package." );
+}
+
+# Check for session support
+if( !function_exists( 'session_name' ) )
+ dieout( "PHP's session module is missing. MediaWiki requires session support in order to function." );
+
+# session.save_path doesn't *have* to be set, but if it is, and it's
+# not valid/writable/etc. then it can cause problems
+$sessionSavePath = mw_get_session_save_path();
+$ssp = htmlspecialchars( $sessionSavePath );
+# Warn the user if it's not set, but let them proceed
+if( !$sessionSavePath ) {
+ print "<li><strong>Warning:</strong> A value for <tt>session.save_path</tt>
+ has not been set in PHP.ini. If the default value causes problems with
+ saving session data, set it to a valid path which is read/write/execute
+ for the user your web server is running under.</li>";
+} elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) {
+ # All good? Let the user know
+ print "<li>Session save path (<tt>{$ssp}</tt>) appears to be valid.</li>";
+} else {
+ # Something not right? Warn the user, but let them proceed
+ print "<li><strong>Warning:</strong> Your <tt>session.save_path</tt> value (<tt>{$ssp}</tt>)
+ appears to be invalid or is not writable. PHP needs to be able to save data to
+ this location for correct session operation.</li>";
+}
+
+# Check for PCRE support
+if( !function_exists( 'preg_match' ) )
+ dieout( "The PCRE support module appears to be missing. MediaWiki requires the
+ Perl-compatible regular expression functions." );
+
+# The installer can take a while, and we really don't want it to time out
+wfSuppressWarnings();
+set_time_limit( 0 );
+wfRestoreWarnings();
+
+$memlimit = ini_get( "memory_limit" );
+if( $memlimit == -1 ) {
+ print "<li>PHP is configured with no <tt>memory_limit</tt>.</li>\n";
+} else {
+ print "<li>PHP's <tt>memory_limit</tt> is " . htmlspecialchars( $memlimit ). " bytes. ";
+ $newlimit = wfMemoryLimit();
+ $memlimit = wfShorthandToInteger( $memlimit );
+ if( $newlimit < $memlimit ) {
+ print "<b>Failed raising limit, installation may fail.</b>";
+ } elseif ( $newlimit > $memlimit ) {
+ print "Raised <tt>memory_limit</tt> to " . htmlspecialchars( $newlimit ) . " bytes. ";
+ }
+ print "</li>\n";
+}
+
+$conf->xcache = function_exists( 'xcache_get' );
+if( $conf->xcache )
+ print "<li><a href=\"http://trac.lighttpd.net/xcache/\">XCache</a> installed</li>\n";
+
+$conf->apc = function_exists('apc_fetch');
+if ($conf->apc ) {
+ print "<li><a href=\"http://www.php.net/apc\">APC</a> installed</li>\n";
+}
+
+$conf->eaccel = function_exists( 'eaccelerator_get' );
+if ( $conf->eaccel ) {
+ print "<li><a href=\"http://eaccelerator.sourceforge.net/\">eAccelerator</a> installed</li>\n";
+}
+
+$conf->dba = function_exists( 'dba_open' );
+
+if( !( $conf->eaccel || $conf->apc || $conf->xcache ) ) {
+ echo( '<li>Couldn\'t find <a href="http://eaccelerator.sourceforge.net">eAccelerator</a>,
+ <a href="http://www.php.net/apc">APC</a> or <a href="http://trac.lighttpd.net/xcache/">XCache</a>;
+ cannot use these for object caching.</li>' );
+}
+
+$conf->diff3 = false;
+$diff3locations = array_merge(
+ array(
+ "/usr/bin",
+ "/usr/local/bin",
+ "/opt/csw/bin",
+ "/usr/gnu/bin",
+ "/usr/sfw/bin" ),
+ explode( PATH_SEPARATOR, getenv( "PATH" ) ) );
+$diff3names = array( "gdiff3", "diff3", "diff3.exe" );
+
+$diff3versioninfo = array( '$1 --version 2>&1', 'diff3 (GNU diffutils)' );
+foreach ($diff3locations as $loc) {
+ $exe = locate_executable($loc, $diff3names, $diff3versioninfo);
+ if ($exe !== false) {
+ $conf->diff3 = $exe;
+ break;
+ }
+}
+
+if ($conf->diff3)
+ print "<li>Found GNU diff3: <tt>$conf->diff3</tt>.</li>";
+else
+ print "<li>GNU diff3 not found.</li>";
+
+$conf->ImageMagick = false;
+$imcheck = array( "/usr/bin", "/opt/csw/bin", "/usr/local/bin", "/sw/bin", "/opt/local/bin" );
+foreach( $imcheck as $dir ) {
+ $im = "$dir/convert";
+ if( @file_exists( $im ) ) {
+ print "<li>Found ImageMagick: <tt>$im</tt>; image thumbnailing will be enabled if you enable uploads.</li>\n";
+ $conf->ImageMagick = $im;
+ break;
+ }
+}
+
+$conf->HaveGD = function_exists( "imagejpeg" );
+if( $conf->HaveGD ) {
+ print "<li>Found GD graphics library built-in";
+ if( !$conf->ImageMagick ) {
+ print ", image thumbnailing will be enabled if you enable uploads";
+ }
+ print ".</li>\n";
+} else {
+ if( !$conf->ImageMagick ) {
+ print "<li>Couldn't find GD library or ImageMagick; image thumbnailing disabled.</li>\n";
+ }
+}
+
+$conf->IP = dirname( dirname( __FILE__ ) );
+print "<li>Installation directory: <tt>" . htmlspecialchars( $conf->IP ) . "</tt></li>\n";
+
+
+// PHP_SELF isn't available sometimes, such as when PHP is CGI but
+// cgi.fix_pathinfo is disabled. In that case, fall back to SCRIPT_NAME
+// to get the path to the current script... hopefully it's reliable. SIGH
+$path = ($_SERVER["PHP_SELF"] === '')
+ ? $_SERVER["SCRIPT_NAME"]
+ : $_SERVER["PHP_SELF"];
+
+$conf->ScriptPath = preg_replace( '{^(.*)/config.*$}', '$1', $path );
+print "<li>Script URI path: <tt>" . htmlspecialchars( $conf->ScriptPath ) . "</tt></li>\n";
+
+
+
+// We may be installing from *.php5 extension file, if so, print message
+$conf->ScriptExtension = '.php';
+if (defined('MW_INSTALL_PHP5_EXT')) {
+ $conf->ScriptExtension = '.php5';
+ print "<li>Installing MediaWiki with <tt>php5</tt> file extensions</li>\n";
+} else {
+ print "<li>Installing MediaWiki with <tt>php</tt> file extensions</li>\n";
+}
+
+
+print "<li style='font-weight:bold;color:green;font-size:110%'>Environment checked. You can install MediaWiki.</li>\n";
+ $conf->posted = ($_SERVER["REQUEST_METHOD"] == "POST");
+
+ $conf->Sitename = ucfirst( importPost( "Sitename", "" ) );
+ $defaultEmail = empty( $_SERVER["SERVER_ADMIN"] )
+ ? 'root@localhost'
+ : $_SERVER["SERVER_ADMIN"];
+ $conf->EmergencyContact = importPost( "EmergencyContact", $defaultEmail );
+ $conf->DBtype = importPost( "DBtype", $DefaultDBtype );
+ if ( !isset( $ourdb[$conf->DBtype] ) ) {
+ $conf->DBtype = $DefaultDBtype;
+ }
+
+ $conf->DBserver = importPost( "DBserver", "localhost" );
+ $conf->DBname = importPost( "DBname", "wikidb" );
+ $conf->DBuser = importPost( "DBuser", "wikiuser" );
+ $conf->DBpassword = importPost( "DBpassword" );
+ $conf->DBpassword2 = importPost( "DBpassword2" );
+ $conf->SysopName = importPost( "SysopName", "WikiSysop" );
+ $conf->SysopPass = importPost( "SysopPass" );
+ $conf->SysopPass2 = importPost( "SysopPass2" );
+ $conf->RootUser = importPost( "RootUser" );
+ $conf->RootPW = importPost( "RootPW", "" );
+ $useRoot = importCheck( 'useroot', false );
+ $conf->LanguageCode = importPost( "LanguageCode", "en" );
+ ## MySQL specific:
+ $conf->DBprefix = importPost( "DBprefix" );
+ $conf->setSchema(
+ importPost( "DBschema", "mysql5-binary" ),
+ importPost( "DBengine", "InnoDB" ) );
+
+ ## Postgres specific:
+ $conf->DBport = importPost( "DBport", "5432" );
+ $conf->DBts2schema = importPost( "DBts2schema", "public" );
+ $conf->DBpgschema = importPost( "DBpgschema", "mediawiki" );
+
+ ## SQLite specific
+ $conf->SQLiteDataDir = importPost( "SQLiteDataDir", "$IP/../data" );
+
+ ## MSSQL specific
+ // We need a second field so it doesn't overwrite the MySQL one
+ $conf->DBprefix2 = importPost( "DBprefix2" );
+
+ ## DB2 specific:
+ // New variable in order to have a different default port number
+ $conf->DBport_db2 = importPost( "DBport_db2", "50000" );
+ $conf->DBcataloged = importPost( "DBcataloged", "cataloged" );
+ $conf->DBdb2schema = importPost( "DBdb2schema", "mediawiki" );
+
+ // Oracle specific
+ $conf->DBprefix_ora = importPost( "DBprefix_ora" );
+ $conf->DBdefTS_ora = importPost( "DBdefTS_ora", "USERS" );
+ $conf->DBtempTS_ora = importPost( "DBtempTS_ora", "TEMP" );
+
+ $conf->ShellLocale = getShellLocale( $conf->LanguageCode );
+
+/* Check for validity */
+$errs = array();
+
+if( preg_match( '/^$|^mediawiki$|#/i', $conf->Sitename ) ) {
+ $errs["Sitename"] = "Must not be blank or \"MediaWiki\" and may not contain \"#\"";
+}
+if( !$ourdb[$conf->DBtype]['serverless'] ) {
+ if( $conf->DBuser == "" ) {
+ $errs["DBuser"] = "Must not be blank";
+ }
+ if( ($conf->DBtype == 'mysql') && (strlen($conf->DBuser) > 16) ) {
+ $errs["DBuser"] = "Username too long";
+ }
+ if( $conf->DBpassword == "" && $conf->DBtype != "postgres" ) {
+ $errs["DBpassword"] = "Must not be blank";
+ }
+ if( $conf->DBpassword != $conf->DBpassword2 ) {
+ $errs["DBpassword2"] = "Passwords don't match!";
+ }
+}
+if( !preg_match( '/^[A-Za-z_0-9]*$/', $conf->DBprefix ) ) {
+ $errs["DBprefix"] = "Invalid table prefix";
+} else {
+ untaint( $conf->DBprefix, TC_MYSQL );
+}
+if( !preg_match( '/^[A-Za-z_0-9]*$/', $conf->DBprefix_ora ) ) {
+ $errs["DBprefix_ora"] = "Invalid table prefix";
+}
+
+error_reporting( E_ALL | E_STRICT );
+
+/**
+ * Initialise $wgLang and $wgContLang to something so we can
+ * call case-folding methods. Per Brion, this is English for
+ * now, although we could be clever and initialise to the
+ * user-selected language.
+ */
+$wgContLang = Language::factory( 'en' );
+$wgLang = $wgContLang;
+
+/**
+ * We're messing about with users, so we need a stub
+ * authentication plugin...
+ */
+$wgAuth = new AuthPlugin();
+
+/**
+ * Validate the initial administrator account; username,
+ * password checks, etc.
+ */
+if( $conf->SysopName ) {
+ # Check that the user can be created
+ $u = User::newFromName( $conf->SysopName );
+ if( $u instanceof User ) {
+ # Various password checks
+ if( $conf->SysopPass != '' ) {
+ if( $conf->SysopPass == $conf->SysopPass2 ) {
+ if( !$u->isValidPassword( $conf->SysopPass ) ) {
+ $errs['SysopPass'] = "Bad password";
+ }
+ } else {
+ $errs['SysopPass2'] = "Passwords don't match";
+ }
+ } else {
+ $errs['SysopPass'] = "Cannot be blank";
+ }
+ unset( $u );
+ } else {
+ $errs['SysopName'] = "Bad username";
+ }
+}
+
+$conf->License = importRequest( "License", "none" );
+if( $conf->License == "gfdl1_2" ) {
+ $conf->RightsUrl = "http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt";
+ $conf->RightsText = "GNU Free Documentation License 1.2";
+ $conf->RightsCode = "gfdl1_2";
+ $conf->RightsIcon = '${wgScriptPath}/skins/common/images/gnu-fdl.png';
+} elseif( $conf->License == "gfdl1_3" ) {
+ $conf->RightsUrl = "http://www.gnu.org/copyleft/fdl.html";
+ $conf->RightsText = "GNU Free Documentation License 1.3";
+ $conf->RightsCode = "gfdl1_3";
+ $conf->RightsIcon = '${wgScriptPath}/skins/common/images/gnu-fdl.png';
+} elseif( $conf->License == "none" ) {
+ $conf->RightsUrl = $conf->RightsText = $conf->RightsCode = $conf->RightsIcon = "";
+} elseif( $conf->License == "pd" ) {
+ $conf->RightsUrl = "http://creativecommons.org/licenses/publicdomain/";
+ $conf->RightsText = "Public Domain";
+ $conf->RightsCode = "pd";
+ $conf->RightsIcon = '${wgScriptPath}/skins/common/images/public-domain.png';
+} else {
+ $conf->RightsUrl = importRequest( "RightsUrl", "" );
+ $conf->RightsText = importRequest( "RightsText", "" );
+ $conf->RightsCode = importRequest( "RightsCode", "" );
+ $conf->RightsIcon = importRequest( "RightsIcon", "" );
+}
+
+$conf->Shm = importRequest( "Shm", "none" );
+$conf->MCServers = importRequest( "MCServers" );
+
+/* Test memcached servers */
+
+if ( $conf->Shm == 'memcached' && $conf->MCServers ) {
+ $conf->MCServerArray = wfArrayMap( 'trim', explode( ',', $conf->MCServers ) );
+ foreach ( $conf->MCServerArray as $server ) {
+ $error = testMemcachedServer( $server );
+ if ( $error ) {
+ $errs["MCServers"] = $error;
+ break;
+ }
+ }
+} else if ( $conf->Shm == 'memcached' ) {
+ $errs["MCServers"] = "Please specify at least one server if you wish to use memcached";
+}
+
+/* default values for installation */
+$conf->Email = importRequest("Email", "email_enabled");
+$conf->Emailuser = importRequest("Emailuser", "emailuser_enabled");
+$conf->Enotif = importRequest("Enotif", "enotif_allpages");
+$conf->Eauthent = importRequest("Eauthent", "eauthent_enabled");
+
+if( $conf->posted && ( 0 == count( $errs ) ) ) {
+ do { /* So we can 'continue' to end prematurely */
+ $conf->Root = ($conf->RootPW != "");
+
+ /* Load up the settings and get installin' */
+ $local = writeLocalSettings( $conf );
+ echo "<li style=\"list-style: none\">\n";
+ echo "<p><b>Generating configuration file...</b></p>\n";
+ echo "</li>\n";
+
+ $wgCommandLineMode = false;
+ chdir( ".." );
+ $ok = eval( $local );
+ if( $ok === false ) {
+ dieout( "<p>Errors in generated configuration; " .
+ "most likely due to a bug in the installer... " .
+ "Config file was: </p>" .
+ "<pre>" .
+ htmlspecialchars( $local ) .
+ "</pre>" );
+ }
+ $conf->DBtypename = '';
+ foreach (array_keys($ourdb) as $db) {
+ if ($conf->DBtype === $db)
+ $conf->DBtypename = $ourdb[$db]['fullname'];
+ }
+ if ( ! strlen($conf->DBtype)) {
+ $errs["DBpicktype"] = "Please choose a database type";
+ continue;
+ }
+
+ if (! $conf->DBtypename) {
+ $errs["DBtype"] = "Unknown database type '$conf->DBtype'";
+ continue;
+ }
+ print "<li>Database type: " . htmlspecialchars( $conf->DBtypename ) . "</li>\n";
+ $dbclass = 'Database'.ucfirst($conf->DBtype);
+ $wgDBtype = $conf->DBtype;
+ $wgDBadminuser = "root";
+ $wgDBadminpassword = $conf->RootPW;
+
+ ## Mysql specific:
+ $wgDBprefix = $conf->DBprefix;
+
+ ## Postgres specific:
+ $wgDBport = $conf->DBport;
+ $wgDBts2schema = $conf->DBts2schema;
+
+ if( $wgDBtype == 'postgres' ) {
+ $wgDBmwschema = $conf->DBpgschema;
+ } elseif ( $wgDBtype == 'ibm_db2' ) {
+ $wgDBmwschema = $conf->DBdb2schema;
+ }
+
+ if( $conf->DBprefix2 != '' ) {
+ // For MSSQL
+ $wgDBprefix = $conf->DBprefix2;
+ } elseif( $conf->DBprefix_ora != '' ) {
+ // For Oracle
+ $wgDBprefix = $conf->DBprefix_ora;
+ }
+
+ ## DB2 specific:
+ $wgDBcataloged = $conf->DBcataloged;
+
+ $wgCommandLineMode = true;
+ if (! defined ( 'STDERR' ) )
+ define( 'STDERR', fopen("php://stderr", "wb"));
+ $wgUseDatabaseMessages = false; /* FIXME: For database failure */
+ require_once( "$IP/includes/Setup.php" );
+ Language::getLocalisationCache()->disableBackend();
+
+ chdir( "config" );
+
+ $wgTitle = Title::newFromText( "Installation script" );
+ error_reporting( E_ALL | E_STRICT );
+ print "<li>Loading class: " . htmlspecialchars( $dbclass ) . "</li>\n";
+ if ( $conf->DBtype != 'sqlite' ) {
+ $dbc = new $dbclass;
+ }
+
+ if( $conf->DBtype == 'mysql' ) {
+ $mysqlOldClient = version_compare( mysql_get_client_info(), "4.1.0", "lt" );
+ if( $mysqlOldClient ) {
+ print "<li><b>PHP is linked with old MySQL client libraries. If you are
+ using a MySQL 4.1 server and have problems connecting to the database,
+ see <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'
+ >http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b></li>\n";
+ }
+ $ok = true; # Let's be optimistic
+
+ # Decide if we're going to use the superuser or the regular database user
+ $conf->Root = $useRoot;
+ if( $conf->Root ) {
+ $db_user = $conf->RootUser;
+ $db_pass = $conf->RootPW;
+ } else {
+ $db_user = $wgDBuser;
+ $db_pass = $wgDBpassword;
+ }
+
+ # Attempt to connect
+ echo( "<li>Attempting to connect to database server as " . htmlspecialchars( $db_user ) . "..." );
+ $wgDatabase = Database::newFromParams( $wgDBserver, $db_user, $db_pass, '', 1 );
+
+ # Check the connection and respond to errors
+ if( $wgDatabase->isOpen() ) {
+ # Seems OK
+ $ok = true;
+ $wgDBadminuser = $db_user;
+ $wgDBadminpassword = $db_pass;
+ echo( "success.</li>\n" );
+ $wgDatabase->ignoreErrors( true );
+ $myver = $wgDatabase->getServerVersion();
+ } else {
+ # There were errors, report them and back out
+ $ok = false;
+ $errno = mysql_errno();
+ $errtx = htmlspecialchars( mysql_error() );
+ switch( $errno ) {
+ case 1045:
+ case 2000:
+ echo( "failed due to authentication errors. Check passwords.</li>" );
+ if( $conf->Root ) {
+ # The superuser details are wrong
+ $errs["RootUser"] = "Check username";
+ $errs["RootPW"] = "and password";
+ } else {
+ # The regular user details are wrong
+ $errs["DBuser"] = "Check username";
+ $errs["DBpassword"] = "and password";
+ }
+ break;
+ case 2002:
+ case 2003:
+ default:
+ # General connection problem
+ echo( htmlspecialchars( "failed with error [$errno] $errtx." ) . "</li>\n" );
+ $errs["DBserver"] = "Connection failed";
+ break;
+ } # switch
+ } #conn. att.
+
+ if( !$ok ) { continue; }
+ }
+ else if( $conf->DBtype == 'ibm_db2' ) {
+ if( $useRoot ) {
+ $db_user = $conf->RootUser;
+ $db_pass = $conf->RootPW;
+ } else {
+ $db_user = $wgDBuser;
+ $db_pass = $wgDBpassword;
+ }
+
+ echo( "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) .
+ "\" as \"" . htmlspecialchars( $db_user ) . "\"..." );
+ $wgDatabase = $dbc->newFromParams($wgDBserver, $db_user, $db_pass, $wgDBname, 1);
+ // enable extra debug messages
+ $dbc->setMode(DatabaseIbm_db2::INSTALL_MODE);
+ $wgDatabase->setMode(DatabaseIbm_db2::INSTALL_MODE);
+
+ if (!$wgDatabase->isOpen()) {
+ print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
+ } else {
+ $myver = $wgDatabase->getServerVersion();
+ }
+ if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname);
+
+ } elseif ( $conf->DBtype == 'sqlite' ) {
+ $wgSQLiteDataDir = $conf->SQLiteDataDir;
+ echo '<li>Attempting to connect to SQLite database at "' .
+ htmlspecialchars( $wgSQLiteDataDir ) . '": ';
+ if ( !is_dir( $wgSQLiteDataDir ) ) {
+ if ( is_writable( dirname( $wgSQLiteDataDir ) ) ) {
+ $ok = wfMkdirParents( $wgSQLiteDataDir, $wgSQLiteDataDirMode );
+ } else {
+ $ok = false;
+ }
+ if ( !$ok ) {
+ echo "cannot create data directory</li>";
+ $errs['SQLiteDataDir'] = 'Enter a valid data directory';
+ continue;
+ }
+ }
+ if ( !is_writable( $wgSQLiteDataDir ) ) {
+ echo "data directory not writable</li>";
+ $errs['SQLiteDataDir'] = 'Enter a writable data directory';
+ continue;
+ }
+ $dataFile = DatabaseSqlite::generateFileName( $wgSQLiteDataDir, $wgDBname );
+ if ( file_exists( $dataFile ) ) {
+ if ( !is_writable( $dataFile ) ) {
+ echo "data file not writable</li>";
+ $errs['SQLiteDataDir'] = basename( $dataFile ) . " is not writable";
+ continue;
+ }
+ } else {
+ if ( file_put_contents( $dataFile, '' ) === false ) {
+ echo 'could not create database file "' . htmlspecialchars( basename( $dataFile ) ) . "\"</li>\n";
+ $errs['SQLiteDataDir'] = "couldn't create " . basename( $dataFile );
+ continue;
+ }
+ }
+ try {
+ $wgDatabase = new DatabaseSqlite( false, false, false, $wgDBname, 1 );
+ }
+ catch( MWException $ex ) {
+ echo 'error: ' . htmlspecialchars( $ex->getMessage() ) . "</li>\n";
+ continue;
+ }
+
+ if (!$wgDatabase->isOpen()) {
+ print "error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
+ $errs['SQLiteDataDir'] = 'Could not connect to database';
+ continue;
+ } else {
+ $myver = $wgDatabase->getServerVersion();
+ }
+ if ( is_callable( array( $wgDatabase, 'initial_setup' ) ) ) {
+ $wgDatabase->initial_setup('', $wgDBname);
+ }
+ echo "ok</li>\n";
+ } elseif ( $conf->DBtype == 'oracle' ) {
+ echo "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) ."\"</li>";
+ $old_error_level = error_reporting();
+ wfSuppressWarnings();
+ $wgDatabase = $dbc->newFromParams('DUMMY', $wgDBuser, $wgDBpassword, $wgDBname, 1);
+ wfRestoreWarnings();
+ if (!$wgDatabase->isOpen()) {
+ $ok = true;
+ echo "<li>Connect failed.</li>";
+ if ($useRoot) {
+ if (ini_get('oci8.privileged_connect') === false) {
+ echo "<li>Privileged connect disabled, please set oci8.privileged_connect or run maintenance/ora/user.sql script manually prior to continuing.</li>";
+ $ok = false;
+ } else {
+ $wgDBadminuser = $conf->RootUser;
+ $wgDBadminpassword = $conf->RootPW;
+ echo "<li>Attempting to create DB user.</li>";
+ $wgDatabase = $dbc->newFromParams('DUMMY', $wgDBadminuser, $wgDBadminpassword, $wgDBname, 1, 64);
+ if ($wgDatabase->isOpen()) {
+ $wgDBOracleDefTS = $conf->DBdefTS_ora;
+ $wgDBOracleTempTS = $conf->DBtempTS_ora;
+ $res = $wgDatabase->sourceFile( "../maintenance/ora/user.sql" );
+ if ($res !== true) dieout($res);
+ } else {
+ echo "<li>Invalid database superuser, please supply a valid superuser account.</li>";
+ echo "<li>ERR: ".print_r(oci_error(), true)."</li>";
+ $ok = false;
+ }
+ }
+ } else {
+ echo "<li>Database superuser missing, please supply a valid superuser account.</li>";
+ $ok = false;
+ }
+ if (!$ok) {
+ $errs["RootUser"] = "Check username";
+ $errs["RootPW"] = "and password";
+ } else {
+ echo "<li>Attempting to connect to database with new user \"" . htmlspecialchars( $wgDBname ) ."\"</li>";
+ $wgDatabase = $dbc->newFromParams('DUMMY', $wgDBuser, $wgDBpassword, $wgDBname, 1);
+ }
+ }
+ if ($ok) {
+ $myver = $wgDatabase->getServerVersion();
+ }
+ } else { # not mysql
+ error_reporting( E_ALL | E_STRICT );
+ $wgSuperUser = '';
+ ## Possible connect as a superuser
+ // Changed !mysql to postgres check since it seems to only apply to postgres
+ if( $useRoot && $conf->DBtype == 'postgres' ) {
+ $wgDBsuperuser = $conf->RootUser;
+ echo( "<li>Attempting to connect to database \"postgres\" as superuser \"" .
+ htmlspecialchars( $wgDBsuperuser ) . "\"..." );
+ $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBsuperuser, $conf->RootPW, "postgres", 1);
+ if (!$wgDatabase->isOpen()) {
+ print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
+ $errs["DBserver"] = "Could not connect to database as superuser";
+ $errs["RootUser"] = "Check username";
+ $errs["RootPW"] = "and password";
+ continue;
+ }
+ $wgDatabase->initial_setup($conf->RootPW, 'postgres');
+ }
+ echo( "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) .
+ "\" as \"" . htmlspecialchars( $wgDBuser ) . "\"..." );
+ $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1);
+ if (!$wgDatabase->isOpen()) {
+ print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
+ $errs["DBserver"] = "Could not connect to database as user";
+ $errs["DBuser"] = "Check username";
+ $errs["DBpassword"] = "and password";
+ continue;
+ } else {
+ $myver = $wgDatabase->getServerVersion();
+ }
+ if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname);
+ }
+
+ if ( !$wgDatabase->isOpen() ) {
+ $errs["DBserver"] = "Couldn't connect to database";
+ continue;
+ }
+
+ print "<li>Connected to " . htmlspecialchars( "{$conf->DBtype} $myver" );
+ if ($conf->DBtype == 'mysql') {
+ if( version_compare( $myver, "4.0.14" ) < 0 ) {
+ print "</li>\n";
+ dieout( "-- mysql 4.0.14 or later required. Aborting." );
+ }
+ $mysqlNewAuth = version_compare( $myver, "4.1.0", "ge" );
+ if( $mysqlNewAuth && $mysqlOldClient ) {
+ print "; <b class='error'>You are using MySQL 4.1 server, but PHP is linked
+ to old client libraries; if you have trouble with authentication, see
+ <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'
+ >http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b>";
+ }
+ if( $wgDBmysql5 ) {
+ if( $mysqlNewAuth ) {
+ print "; enabling MySQL 4.1/5.0 charset mode";
+ } else {
+ print "; <b class='error'>MySQL 4.1/5.0 charset mode enabled,
+ but older version detected; will likely fail.</b>";
+ }
+ }
+ print "</li>\n";
+
+ @$sel = $wgDatabase->selectDB( $wgDBname );
+ if( $sel ) {
+ print "<li>Database <tt>" . htmlspecialchars( $wgDBname ) . "</tt> exists</li>\n";
+ } else {
+ $err = mysql_errno();
+ $databaseSafe = htmlspecialchars( $wgDBname );
+ if( $err == 1102 /* Invalid database name */ ) {
+ print "<ul><li><strong>{$databaseSafe}</strong> is not a valid database name.</li></ul>";
+ continue;
+ } elseif( $err != 1049 /* Database doesn't exist */ ) {
+ print "<ul><li>Error selecting database <strong>{$databaseSafe}</strong>: {$err} ";
+ print htmlspecialchars( mysql_error() ) . "</li></ul>";
+ continue;
+ }
+ print "<li>Attempting to create database...</li>";
+ $res = $wgDatabase->query( "CREATE DATABASE `$wgDBname`" );
+ if( !$res ) {
+ print "<li>Couldn't create database <tt>" .
+ htmlspecialchars( $wgDBname ) .
+ "</tt>; try with root access or check your username/pass.</li>\n";
+ $errs["RootPW"] = "<- Enter";
+ continue;
+ }
+ print "<li>Created database <tt>" . htmlspecialchars( $wgDBname ) . "</tt></li>\n";
+ }
+ $wgDatabase->selectDB( $wgDBname );
+ }
+ else if ($conf->DBtype == 'postgres') {
+ if( version_compare( $myver, "8.0" ) < 0 ) {
+ dieout( "<b>Postgres 8.0 or later is required</b>. Aborting." );
+ }
+ }
+
+ if( $wgDatabase->tableExists( "cur" ) || $wgDatabase->tableExists( "revision" ) ) {
+ print "<li>There are already MediaWiki tables in this database. Checking if updates are needed...</li>\n";
+
+ if ( $conf->DBtype == 'mysql') {
+ # Determine existing default character set
+ if ( $wgDatabase->tableExists( "revision" ) ) {
+ $revision = $wgDatabase->escapeLike( $conf->DBprefix . 'revision' );
+ $res = $wgDatabase->query( "SHOW TABLE STATUS LIKE '$revision'" );
+ $row = $wgDatabase->fetchObject( $res );
+ if ( !$row ) {
+ echo "<li>SHOW TABLE STATUS query failed!</li>\n";
+ $existingSchema = false;
+ $existingEngine = false;
+ } else {
+ if ( preg_match( '/^latin1/', $row->Collation ) ) {
+ $existingSchema = 'mysql4';
+ } elseif ( preg_match( '/^utf8/', $row->Collation ) ) {
+ $existingSchema = 'mysql5';
+ } elseif ( preg_match( '/^binary/', $row->Collation ) ) {
+ $existingSchema = 'mysql5-binary';
+ } else {
+ $existingSchema = false;
+ echo "<li><strong>Warning:</strong> Unrecognised existing collation</li>\n";
+ }
+ if ( isset( $row->Engine ) ) {
+ $existingEngine = $row->Engine;
+ } else {
+ $existingEngine = $row->Type;
+ }
+ }
+ if ( $existingSchema && $existingSchema != $conf->DBschema ) {
+ $encExisting = htmlspecialchars( $existingSchema );
+ $encRequested = htmlspecialchars( $conf->DBschema );
+ print "<li><strong>Warning:</strong> you requested the $encRequested schema, " .
+ "but the existing database has the $encExisting schema. This upgrade script ".
+ "can't convert it, so it will remain $encExisting.</li>\n";
+ $conf->setSchema( $existingSchema, $conf->DBengine );
+ }
+ if ( $existingEngine && $existingEngine != $conf->DBengine ) {
+ $encExisting = htmlspecialchars( $existingEngine );
+ $encRequested = htmlspecialchars( $conf->DBengine );
+ print "<li><strong>Warning:</strong> you requested the $encRequested storage " .
+ "engine, but the existing database uses the $encExisting engine. This upgrade " .
+ "script can't convert it, so it will remain $encExisting.</li>\n";
+ $conf->setSchema( $conf->DBschema, $existingEngine );
+ }
+ }
+
+ # Create user if required
+ if ( $conf->Root ) {
+ $conn = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 );
+ if ( $conn->isOpen() ) {
+ print "<li>DB user account ok</li>\n";
+ $conn->close();
+ } else {
+ print "<li>Granting user permissions...";
+ if( $mysqlOldClient && $mysqlNewAuth ) {
+ print " <b class='error'>If the next step fails, see <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'>http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b>";
+ }
+ print "</li>\n";
+ $res = $wgDatabase->sourceFile( "../maintenance/users.sql" );
+ if ($res !== true) dieout($res);
+ }
+ }
+ }
+ print "</ul><pre>\n";
+ chdir( ".." );
+ flush();
+ do_all_updates();
+ chdir( "config" );
+ print "</pre>\n";
+ print "<ul><li>Finished update checks.</li>\n";
+ // if tables don't yet exist
+ } else {
+ # Determine available storage engines if possible
+ if ( $conf->DBtype == 'mysql' && version_compare( $myver, "4.1.2", "ge" ) ) {
+ $res = $wgDatabase->query( 'SHOW ENGINES' );
+ $found = false;
+ while ( $row = $wgDatabase->fetchObject( $res ) ) {
+ if ( $row->Engine == $conf->DBengine && ( $row->Support == 'YES' || $row->Support == 'DEFAULT' ) ) {
+ $found = true;
+ break;
+ }
+ }
+ $wgDatabase->freeResult( $res );
+ if ( !$found && $conf->DBengine != 'MyISAM' ) {
+ echo "<li><strong>Warning:</strong> " . htmlspecialchars( $conf->DBengine ) .
+ " storage engine not available, " .
+ "using MyISAM instead</li>\n";
+ $conf->setSchema( $conf->DBschema, 'MyISAM' );
+ }
+ }
+
+ # FIXME: Check for errors
+ print "<li>Creating tables...";
+ if ($conf->DBtype == 'mysql') {
+ $res = $wgDatabase->sourceFile( "../maintenance/tables.sql" );
+ if ($res === true) {
+ print " done.</li>\n<li>Populating interwiki table... \n";
+ $res = $wgDatabase->sourceFile( "../maintenance/interwiki.sql" );
+ }
+ if ($res === true) {
+ print " done.</li>\n";
+ } else {
+ print " <b>FAILED</b></li>\n";
+ dieout( htmlspecialchars( $res ) );
+ }
+ } elseif (is_callable(array($wgDatabase, 'setup_database'))) {
+ $wgDatabase->setup_database();
+ }
+ else {
+ $errs["DBtype"] = "Do not know how to handle database type '$conf->DBtype'";
+ continue;
+ }
+
+
+ if ( $conf->DBtype == 'ibm_db2' ) {
+ // Now that table creation is done, make sure everything is committed
+ // Do this before doing inserts through API
+ if ($wgDatabase->lastError()) {
+ print "<li>Errors encountered during table creation -- rolled back</li>\n";
+ $wgDatabase->rollback();
+ }
+ else {
+ print "<li>MediaWiki tables successfully created</li>\n";
+ $wgDatabase->commit();
+ }
+ } elseif ( $conf->DBtype == 'sqlite' ) {
+ // Ensure proper searchindex format. We have to do that separately because
+ // if SQLite is compiled without the FTS3 module, table creation syntax will be invalid.
+ sqlite_setup_searchindex();
+ }
+
+ print "<li>Initializing statistics...</li>\n";
+ $wgDatabase->insert( 'site_stats',
+ array ( 'ss_row_id' => 1,
+ 'ss_total_views' => 0,
+ 'ss_total_edits' => 1, # Main page first edit
+ 'ss_good_articles' => 0, # Main page is not a good article - no internal link
+ 'ss_total_pages' => 1, # Main page
+ 'ss_users' => $conf->SysopName ? 1 : 0, # Sysop account, if created
+ 'ss_admins' => $conf->SysopName ? 1 : 0, # Sysop account, if created
+ 'ss_images' => 0 ) );
+
+ # Set up the "regular user" account *if we can, and if we need to*
+ if( $conf->Root and $conf->DBtype == 'mysql') {
+ # See if we need to
+ $wgDatabase2 = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 );
+ if( $wgDatabase2->isOpen() ) {
+ # Nope, just close the test connection and continue
+ $wgDatabase2->close();
+ echo( "<li>User " . htmlspecialchars( $wgDBuser ) . " exists. Skipping grants.</li>\n" );
+ } else {
+ # Yes, so run the grants
+ echo( "<li>" . htmlspecialchars( "Granting user permissions to $wgDBuser on $wgDBname..." ) );
+ $res = $wgDatabase->sourceFile( "../maintenance/users.sql" );
+ if ( $res === true ) {
+ echo( " success.</li>\n" );
+ } else {
+ echo( " <b>FAILED</b>.</li>\n" );
+ dieout( $res );
+ }
+ }
+ }
+
+ if( $conf->SysopName ) {
+ $u = User::newFromName( $conf->getSysopName() );
+ if ( !$u ) {
+ print "<li><strong class=\"error\">Warning:</strong> Skipped sysop account creation - invalid username!</li>\n";
+ }
+ else if ( 0 == $u->idForName() ) {
+ $u->addToDatabase();
+ $u->setPassword( $conf->getSysopPass() );
+ $u->saveSettings();
+
+ $u->addGroup( "sysop" );
+ $u->addGroup( "bureaucrat" );
+
+ print "<li>Created sysop account <tt>" .
+ htmlspecialchars( $conf->SysopName ) . "</tt>.</li>\n";
+ } else {
+ print "<li>Could not create user - already exists!</li>\n";
+ }
+ } else {
+ print "<li>Skipped sysop account creation, no name given.</li>\n";
+ }
+
+ $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) );
+ $article = new Article( $titleobj );
+ $newid = $article->insertOn( $wgDatabase );
+ $revision = new Revision( array(
+ 'page' => $newid,
+ 'text' => wfMsg( 'mainpagetext' ) . "\n\n" . wfMsgNoTrans( 'mainpagedocfooter' ),
+ 'comment' => '',
+ 'user' => 0,
+ 'user_text' => 'MediaWiki default',
+ ) );
+ $revid = $revision->insertOn( $wgDatabase );
+ $article->updateRevisionOn( $wgDatabase, $revision );
+ }
+
+ /* Write out the config file now that all is well */
+ print "<li style=\"list-style: none\">\n";
+ print "<p>Creating LocalSettings.php...</p>\n\n";
+ $localSettings = "<" . "?php$endl$local";
+ // Fix up a common line-ending problem (due to CVS on Windows)
+ $localSettings = str_replace( "\r\n", "\n", $localSettings );
+ $f = fopen( "LocalSettings.php", 'xt' );
+
+ if( $f == false ) {
+ print( "</li>\n" );
+ dieout( "<p>Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a file of that name here...</p>\n" .
+ "<p>Here's the file that would have been written, try to paste it into place manually:</p>\n" .
+ "<pre>\n" . htmlspecialchars( $localSettings ) . "</pre>\n" );
+ }
+ if(fwrite( $f, $localSettings ) ) {
+ fclose( $f );
+ print "<hr/>\n";
+ writeSuccessMessage();
+ print "</li>\n";
+ } else {
+ fclose( $f );
+ dieout( "<p class='error'>An error occured while writing the config/LocalSettings.php file. Check user rights and disk space then try again.</p></li>\n" );
+ }
+
+ } while( false );
+}
+
+print "</ul>\n";
+$mainListOpened = false;
+
+if( count( $errs ) ) {
+ /* Display options form */
+
+ if( $conf->posted ) {
+ echo "<p class='error-top'>Something's not quite right yet; make sure everything below is filled out correctly.</p>\n";
+ }
+?>
+
+<form action="<?php echo defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php'; ?>" name="config" method="post">
+
+<h2>Site config</h2>
+
+<div class="config-section">
+ <div class="config-input">
+ <?php aField( $conf, "Sitename", "Wiki name:" ); ?>
+ </div>
+ <p class="config-desc">
+ Preferably a short word without punctuation, i.e. "Wikipedia".<br />
+ Will appear as the namespace name for "meta" pages, and throughout the interface.
+ </p>
+ <div class="config-input"><?php aField( $conf, "EmergencyContact", "Contact e-mail:" ); ?></div>
+ <p class="config-desc">
+ Displayed to users in some error messages, used as the return address for password reminders, and used as the default sender address of e-mail notifications.
+ </p>
+
+ <div class="config-input">
+ <label class='column' for="LanguageCode">Language:</label>
+ <select id="LanguageCode" name="LanguageCode"><?php
+ $list = getLanguageList();
+ foreach( $list as $code => $name ) {
+ $sel = ($code == $conf->LanguageCode) ? 'selected="selected"' : '';
+ $encCode = htmlspecialchars( $code );
+ $encName = htmlspecialchars( $name );
+ echo "\n\t\t<option value=\"$encCode\" $sel>$encName</option>";
+ }
+ echo "\n";
+ ?>
+ </select>
+ </div>
+ <p class="config-desc">
+ Select the language for your wiki's interface. Some localizations aren't fully complete. Unicode (UTF-8) is used for all localizations.
+ </p>
+
+ <div class="config-input">
+ <label class='column'>Copyright/license:</label>
+
+ <ul class="plain">
+ <li><?php aField( $conf, "License", "No license metadata", "radio", "none" ); ?></li>
+ <li><?php aField( $conf, "License", "Public Domain", "radio", "pd" ); ?></li>
+ <li><?php aField( $conf, "License", "GNU Free Documentation License 1.2", "radio", "gfdl1_2" ); ?></li>
+ <li><?php aField( $conf, "License", "GNU Free Documentation License 1.3", "radio", "gfdl1_3" ); ?></li>
+ <li><?php
+ aField( $conf, "License", "A Creative Commons license - ", "radio", "cc" );
+ $partner = "MediaWiki";
+ $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
+ $exit = urlencode( "$wgServer{$conf->ScriptPath}/config/$script?License=cc&RightsUrl=[license_url]&RightsText=[license_name]&RightsCode=[license_code]&RightsIcon=[license_button]" );
+ $icon = urlencode( "$wgServer$wgUploadPath/wiki.png" );
+ $ccApp = htmlspecialchars( "http://creativecommons.org/license/?partner=$partner&exit_url=$exit&partner_icon_url=$icon" );
+ print "<a href=\"$ccApp\" target='_blank'>choose</a>";
+ if( $conf->License == "cc" ) { ?>
+ <ul>
+ <li><?php aField( $conf, "RightsIcon", "<img src=\"" . htmlspecialchars( $conf->RightsIcon ) . "\" alt='(Creative Commons icon)' />", "hidden" ); ?></li>
+ <li><?php aField( $conf, "RightsText", htmlspecialchars( $conf->RightsText ), "hidden" ); ?></li>
+ <li><?php aField( $conf, "RightsCode", "code: " . htmlspecialchars( $conf->RightsCode ), "hidden" ); ?></li>
+ <li><?php aField( $conf, "RightsUrl", "<a href=\"" . htmlspecialchars( $conf->RightsUrl ) . "\">" . htmlspecialchars( $conf->RightsUrl ) . "</a>", "hidden" ); ?></li>
+ </ul>
+ <?php } ?>
+ </li>
+ </ul>
+ </div>
+ <p class="config-desc">
+ A notice, icon, and machine-readable copyright metadata will be displayed for the license you pick.
+ </p>
+
+
+ <div class="config-input">
+ <?php aField( $conf, "SysopName", "Admin username:" ) ?>
+ </div>
+ <div class="config-input">
+ <?php aField( $conf, "SysopPass", "Password:", "password" ) ?>
+ </div>
+ <div class="config-input">
+ <?php aField( $conf, "SysopPass2", "Password confirm:", "password" ) ?>
+ </div>
+ <p class="config-desc">
+ An admin can lock/delete pages, block users from editing, and do other maintenance tasks.<br />
+ A new account will be added only when creating a new wiki database.
+ <br /><br />
+ The password cannot be the same as the username.
+ </p>
+
+ <div class="config-input">
+ <label class='column'>Object caching:</label>
+
+ <ul class="plain">
+ <li><?php aField( $conf, "Shm", "No caching", "radio", "none" ); ?></li>
+ <?php
+ if( $conf->xcache ) {
+ echo "<li>";
+ aField( $conf, 'Shm', 'XCache', 'radio', 'xcache' );
+ echo "</li>\n";
+ }
+ if ( $conf->apc ) {
+ echo "<li>";
+ aField( $conf, "Shm", "APC", "radio", "apc" );
+ echo "</li>\n";
+ }
+ if ( $conf->eaccel ) {
+ echo "<li>";
+ aField( $conf, "Shm", "eAccelerator", "radio", "eaccel" );
+ echo "</li>\n";
+ }
+ if ( $conf->dba ) {
+ echo "<li>";
+ aField( $conf, "Shm", "DBA (not recommended)", "radio", "dba" );
+ echo "</li>";
+ }
+ ?>
+ <li><?php aField( $conf, "Shm", "Memcached", "radio", "memcached" ); ?></li>
+ </ul>
+ <div style="clear:left"><?php aField( $conf, "MCServers", "Memcached servers:", "text" ) ?></div>
+ </div>
+ <p class="config-desc">
+ An object caching system such as memcached will provide a significant performance boost,
+ but needs to be installed. Provide the server addresses and ports in a comma-separated list.
+ <br /><br />
+ MediaWiki can also detect and support eAccelerator, APC, and XCache, but
+ these should not be used if the wiki will be running on multiple application servers.
+ <br /><br />
+ DBA (Berkeley-style DB) is generally slower than using no cache at all, and is only
+ recommended for testing.
+ </p>
+</div>
+
+<h2>E-mail, e-mail notification and authentication setup</h2>
+
+<div class="config-section">
+ <div class="config-input">
+ <label class='column'>E-mail features (global):</label>
+ <ul class="plain">
+ <li><?php aField( $conf, "Email", "Enabled", "radio", "email_enabled" ); ?></li>
+ <li><?php aField( $conf, "Email", "Disabled", "radio", "email_disabled" ); ?></li>
+ </ul>
+ </div>
+ <p class="config-desc">
+ Use this to disable all e-mail functions (password reminders, user-to-user e-mail, and e-mail notifications)
+ if sending mail doesn't work on your server.
+ </p>
+
+ <div class="config-input">
+ <label class='column'>User-to-user e-mail:</label>
+ <ul class="plain">
+ <li><?php aField( $conf, "Emailuser", "Enabled", "radio", "emailuser_enabled" ); ?></li>
+ <li><?php aField( $conf, "Emailuser", "Disabled", "radio", "emailuser_disabled" ); ?></li>
+ </ul>
+ </div>
+ <p class="config-desc">
+ The user-to-user e-mail feature (Special:Emailuser) lets the wiki act as a relay to allow users to exchange e-mail without publicly advertising their e-mail address.
+ </p>
+ <div class="config-input">
+ <label class='column'>E-mail notification about changes:</label>
+ <ul class="plain">
+ <li><?php aField( $conf, "Enotif", "Disabled", "radio", "enotif_disabled" ); ?></li>
+ <li><?php aField( $conf, "Enotif", "Enabled for changes to user discussion pages only", "radio", "enotif_usertalk" ); ?></li>
+ <li><?php aField( $conf, "Enotif", "Enabled for changes to user discussion pages, and to pages on watchlists (not recommended for large wikis)", "radio", "enotif_allpages" ); ?></li>
+ </ul>
+ </div>
+ <div class="config-desc">
+ <p>
+ For this feature to work, an e-mail address must be present for the user account, and the notification
+ options in the user's preferences must be enabled. Also note the
+ authentication option below. When testing the feature, keep in mind that your own changes will never trigger notifications to be sent to yourself.</p>
+
+ <p>There are additional options for fine tuning in /includes/DefaultSettings.php; copy these to your LocalSettings.php and edit them there to change them.</p>
+ </div>
+
+ <div class="config-input">
+ <label class='column'>E-mail address authentication:</label>
+ <ul class="plain">
+ <li><?php aField( $conf, "Eauthent", "Disabled", "radio", "eauthent_disabled" ); ?></li>
+ <li><?php aField( $conf, "Eauthent", "Enabled", "radio", "eauthent_enabled" ); ?></li>
+ </ul>
+ </div>
+ <div class="config-desc">
+ <p>If this option is enabled, users have to confirm their e-mail address using a magic link sent to them whenever they set or change it, and only authenticated e-mail addresses can receive mails from other users and/or
+ change notification mails. Setting this option is <b>recommended</b> for public wikis because of potential abuse of the e-mail features above.</p>
+ </div>
+
+</div>
+
+<h2>Database config</h2>
+
+<div class="config-section">
+<div class="config-input">
+ <label class='column'>Database type:</label>
+<?php
+ if (isset($errs['DBpicktype'])) {
+ print "\t<span class='error'>" . htmlspecialchars( $errs['DBpicktype'] ) . "</span>\n";
+ }
+?>
+ <ul class='plain'><?php
+ database_picker($conf);
+ ?></ul>
+ </div>
+
+ <div id="db-server-settings1">
+ <div class="config-input" style="clear:left">
+ <?php aField( $conf, "DBserver", "Database host:" ); ?>
+ </div>
+ <p class="config-desc">
+ If your database server isn't on your web server, enter the name or IP address here.
+ </p>
+ </div>
+
+ <div class="config-input"><?php aField( $conf, "DBname", "Database name:" ); ?></div>
+ <div id="db-server-settings2">
+ <div class="config-input"><?php aField( $conf, "DBuser", "DB username:" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "DBpassword", "DB password:", "password" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "DBpassword2", "DB password confirm:", "password" ); ?></div>
+ <p class="config-desc">
+ If you only have a single user account and database available,
+ enter those here. If you have database root access (see below)
+ you can specify new accounts/databases to be created. This account
+ will not be created if it pre-exists. If this is the case, ensure that it
+ has SELECT, INSERT, UPDATE, and DELETE permissions on the MediaWiki database.
+ </p>
+
+ <div class="config-input">
+ <label class="column">Superuser account:</label>
+ <input type="checkbox" name="useroot" id="useroot" <?php if( $useRoot ) { ?>checked="checked" <?php } ?> />
+ &nbsp;<label for="useroot">Use superuser account</label>
+ </div>
+ <div class="config-input"><?php aField( $conf, "RootUser", "Superuser name:", "text" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "RootPW", "Superuser password:", "password" ); ?></div>
+
+ <p class="config-desc">
+ If the database user specified above does not exist, or does not have access to create
+ the database (if needed) or tables within it, please check the box and provide details
+ of a superuser account, such as <strong>root</strong>, which does.
+ </p>
+ </div>
+
+ <?php database_switcher('mysql'); ?>
+ <div class="config-input"><?php aField( $conf, "DBprefix", "Database table prefix:" ); ?></div>
+ <div class="config-desc">
+ <p>If you need to share one database between multiple wikis, or
+ between MediaWiki and another web application, you may choose to
+ add a prefix to all the table names to avoid conflicts.</p>
+
+ <p>Avoid exotic characters; something like <tt>mw_</tt> is good.</p>
+ </div>
+
+ <div class="config-input"><label class="column">Storage Engine</label>
+ <div>Select one:</div>
+ <ul class="plain">
+ <li><?php aField( $conf, "DBengine", "InnoDB", "radio", "InnoDB" ); ?></li>
+ <li><?php aField( $conf, "DBengine", "MyISAM", "radio", "MyISAM" ); ?></li>
+ </ul>
+ </div>
+ <p class="config-desc">
+ InnoDB is best for public web installations, since it has good concurrency
+ support. MyISAM may be faster in single-user installations. MyISAM databases
+ tend to get corrupted more often than InnoDB databases.
+ </p>
+ <div class="config-input"><label class="column">Database character set</label>
+ <div>Select one:</div>
+ <ul class="plain">
+ <li><?php aField( $conf, "DBschema", "MySQL 4.1/5.0 binary", "radio", "mysql5-binary" ); ?></li>
+ <li><?php aField( $conf, "DBschema", "MySQL 4.1/5.0 UTF-8", "radio", "mysql5" ); ?></li>
+ <li><?php aField( $conf, "DBschema", "MySQL 4.0 backwards-compatible UTF-8", "radio", "mysql4" ); ?></li>
+ </ul>
+ </div>
+ <p class="config-desc">
+ This option is ignored on upgrade, the same character set will be kept.
+ <br /><br />
+ <b>WARNING:</b> If you use <b>backwards-compatible UTF-8</b> on MySQL 4.1+, and subsequently back up the database with <tt>mysqldump</tt>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!.
+ <br /><br />
+ In <b>binary mode</b>, MediaWiki stores UTF-8 text to the database in binary fields. This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters. In <b>UTF-8 mode</b>, MySQL will know what character set your data is in, and can present and convert it appropriately, but it won't let you store characters above the <a target="_blank" href="http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes">Basic Multilingual Plane</a>.
+ </p>
+ </fieldset>
+
+ <?php database_switcher('postgres'); ?>
+ <div class="config-input"><?php aField( $conf, "DBport", "Database port:" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "DBpgschema", "Schema for mediawiki:" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "DBts2schema", "Schema for tsearch2:" ); ?></div>
+ <div class="config-desc">
+ <p>The username specified above (at "DB username") will have its search path set to the above schemas,
+ so it is recommended that you create a new user. The above schemas are generally correct:
+ only change them if you are sure you need to.</p>
+ </div>
+ </fieldset>
+
+ <?php database_switcher('sqlite'); ?>
+ <div class="config-input"><?php
+ aField( $conf, "SQLiteDataDir", "SQLite data directory:" );
+ ?></div>
+ <div class="config-desc">
+ <p>SQLite stores table data into files in the
+ filesystem.</p>
+
+ <p>This directory must exist and be writable by the web server.</p>
+ </div>
+ </fieldset>
+
+ <?php database_switcher('mssql'); ?>
+ <div class="config-input"><?php
+ aField( $conf, "DBprefix2", "Database table prefix:" );
+ ?></div>
+ <div class="config-desc">
+ <p>If you need to share one database between multiple wikis, or
+ between MediaWiki and another web application, you may choose to
+ add a prefix to all the table names to avoid conflicts.</p>
+
+ <p>Avoid exotic characters; something like <tt>mw_</tt> is good.</p>
+ </div>
+ </fieldset>
+
+ <?php database_switcher('ibm_db2'); ?>
+ <div class="config-input"><?php
+ aField( $conf, "DBport_db2", "Database port:" );
+ ?></div>
+ <div class="config-input"><?php
+ aField( $conf, "DBdb2schema", "Schema for mediawiki:" );
+ ?></div>
+ <div>Select one:</div>
+ <ul class="plain">
+ <li><?php aField( $conf, "DBcataloged", "Cataloged (DB2 installed locally)", "radio", "cataloged" ); ?></li>
+ <li><?php aField( $conf, "DBcataloged", "Uncataloged (remote DB2 through ODBC)", "radio", "uncataloged" ); ?></li>
+ </ul>
+ <div class="config-desc">
+ <p>If you need to share one database between multiple wikis, or
+ between MediaWiki and another web application, you may specify
+ a different schema to avoid conflicts.</p>
+ </div>
+ </fieldset>
+
+ <?php database_switcher('oracle'); ?>
+ <div class="config-input"><?php aField( $conf, "DBprefix_ora", "Database table prefix:" ); ?></div>
+ <div class="config-desc">
+ <p>If you need to share one database between multiple wikis, or
+ between MediaWiki and another web application, you may choose to
+ add a prefix to all the table names to avoid conflicts.</p>
+
+ <p>Avoid exotic characters; something like <tt>mw_</tt> is good.</p>
+ </div>
+ <div class="config-input"><?php aField( $conf, "DBdefTS_ora", "Default tablespace:" ); ?></div>
+ <div class="config-input"><?php aField( $conf, "DBtempTS_ora", "Temporary tablespace:" ); ?></div>
+ </fieldset>
+
+ <div class="config-input" style="padding:2em 0 3em">
+ <label class='column'>&nbsp;</label>
+ <input type="submit" value="Install MediaWiki!" class="btn-install" />
+ </div>
+</div>
+</form>
+<script type="text/javascript">
+window.onload = toggleDBarea( <?php echo Xml::encodeJsVar( $conf->DBtype ); ?>,
+<?php
+ ## If they passed in a root user name, don't populate it on page load
+ echo strlen(importPost('RootUser', '')) ? 0 : 1;
+?>);
+</script>
+<?php
+}
+
+/* -------------------------------------------------------------------------------------- */
+function writeSuccessMessage() {
+ $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
+ if ( wfIniGetBool( 'safe_mode' ) && !ini_get( 'open_basedir' ) ) {
+ echo <<<HTML
+<div class="success-box">
+<p>Installation successful!</p>
+<p>To complete the installation, please do the following:
+<ol>
+ <li>Download config/LocalSettings.php with your FTP client or file manager</li>
+ <li>Upload it to the parent directory</li>
+ <li>Delete config/LocalSettings.php</li>
+ <li>Start using <a href='../$script'>your wiki</a>!
+</ol>
+<p>If you are in a shared hosting environment, do <strong>not</strong> just move LocalSettings.php
+remotely. LocalSettings.php is currently owned by the user your webserver is running under,
+which means that anyone on the same server can read your database password! Downloading
+it and uploading it again will hopefully change the ownership to a user ID specific to you.</p>
+</div>
+HTML;
+ } else {
+ echo <<<HTML
+<div class="success-box">
+<p>
+<span class="success-message">Installation successful!</span>
+Move the <tt>config/LocalSettings.php</tt> file to the parent directory, then follow
+<a href="../$script"> this link</a> to your wiki.</p>
+<p>You should change file permissions for <tt>LocalSettings.php</tt> as required to
+prevent other users on the server reading passwords and altering configuration data.</p>
+</div>
+HTML;
+ }
+}
+
+
+function escapePhpString( $string ) {
+ if ( is_array( $string ) || is_object( $string ) ) {
+ return false;
+ }
+ return strtr( $string,
+ array(
+ "\n" => "\\n",
+ "\r" => "\\r",
+ "\t" => "\\t",
+ "\\" => "\\\\",
+ "\$" => "\\\$",
+ "\"" => "\\\""
+ ));
+}
+
+function writeLocalSettings( $conf ) {
+ $conf->PasswordSender = $conf->EmergencyContact;
+ $magic = ($conf->ImageMagick ? "" : "# ");
+ $convert = ($conf->ImageMagick ? $conf->ImageMagick : "/usr/bin/convert" );
+ $rights = ($conf->RightsUrl) ? "" : "# ";
+ $hashedUploads = $conf->safeMode ? '' : '# ';
+ $dir = realpath( $conf->SQLiteDataDir );
+ if ( !$dir ) {
+ $dir = $conf->SQLiteDataDir; // dumb realpath sometimes fails
+ }
+ $sqliteDataDir = escapePhpString( $dir );
+
+ if ( $conf->ShellLocale ) {
+ $locale = '';
+ } else {
+ $locale = '# ';
+ $conf->ShellLocale = 'en_US.UTF-8';
+ }
+
+ switch ( $conf->Shm ) {
+ case 'memcached':
+ $cacheType = 'CACHE_MEMCACHED';
+ $mcservers = var_export( $conf->MCServerArray, true );
+ break;
+ case 'xcache':
+ case 'apc':
+ case 'eaccel':
+ $cacheType = 'CACHE_ACCEL';
+ $mcservers = 'array()';
+ break;
+ case 'dba':
+ $cacheType = 'CACHE_DBA';
+ $mcservers = 'array()';
+ break;
+ default:
+ $cacheType = 'CACHE_NONE';
+ $mcservers = 'array()';
+ }
+
+ if ( $conf->Email == 'email_enabled' ) {
+ $enableemail = 'true';
+ $enableuseremail = ( $conf->Emailuser == 'emailuser_enabled' ) ? 'true' : 'false' ;
+ $eauthent = ( $conf->Eauthent == 'eauthent_enabled' ) ? 'true' : 'false' ;
+ switch ( $conf->Enotif ) {
+ case 'enotif_usertalk':
+ $enotifusertalk = 'true';
+ $enotifwatchlist = 'false';
+ break;
+ case 'enotif_allpages':
+ $enotifusertalk = 'true';
+ $enotifwatchlist = 'true';
+ break;
+ default:
+ $enotifusertalk = 'false';
+ $enotifwatchlist = 'false';
+ }
+ } else {
+ $enableuseremail = 'false';
+ $enableemail = 'false';
+ $eauthent = 'false';
+ $enotifusertalk = 'false';
+ $enotifwatchlist = 'false';
+ }
+
+ $file = @fopen( "/dev/urandom", "r" );
+ if ( $file ) {
+ $secretKey = bin2hex( fread( $file, 32 ) );
+ fclose( $file );
+ } else {
+ $secretKey = "";
+ for ( $i=0; $i<8; $i++ ) {
+ $secretKey .= dechex(mt_rand(0, 0x7fffffff));
+ }
+ print "<li>Warning: \$wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.</li>\n";
+ }
+
+ # Add slashes to strings for double quoting
+ $slconf = wfArrayMap( "escapePhpString", get_object_vars( $conf ) );
+ if( $conf->License == 'gfdl1_2' || $conf->License == 'pd' || $conf->License == 'gfdl1_3' ) {
+ # Needs literal string interpolation for the current style path
+ $slconf['RightsIcon'] = $conf->RightsIcon;
+ }
+
+ if( $conf->DBtype == 'mysql' ) {
+ $dbsettings =
+"# MySQL specific settings
+\$wgDBprefix = \"{$slconf['DBprefix']}\";
+
+# MySQL table options to use during installation or update
+\$wgDBTableOptions = \"{$slconf['DBTableOptions']}\";
+
+# Experimental charset support for MySQL 4.1/5.0.
+\$wgDBmysql5 = {$conf->DBmysql5};";
+ } elseif( $conf->DBtype == 'postgres' ) {
+ $dbsettings =
+"# Postgres specific settings
+\$wgDBport = \"{$slconf['DBport']}\";
+\$wgDBmwschema = \"{$slconf['DBpgschema']}\";
+\$wgDBts2schema = \"{$slconf['DBts2schema']}\";";
+ } elseif( $conf->DBtype == 'sqlite' ) {
+ $dbsettings =
+"# SQLite-specific settings
+\$wgSQLiteDataDir = \"{$sqliteDataDir}\";";
+ } elseif( $conf->DBtype == 'mssql' ) {
+ $dbsettings =
+"# MSSQL specific settings
+\$wgDBprefix = \"{$slconf['DBprefix2']}\";";
+ } elseif( $conf->DBtype == 'ibm_db2' ) {
+ $dbsettings =
+"# DB2 specific settings
+\$wgDBport_db2 = \"{$slconf['DBport_db2']}\";
+\$wgDBmwschema = \"{$slconf['DBdb2schema']}\";
+\$wgDBcataloged = \"{$slconf['DBcataloged']}\";";
+ } elseif( $conf->DBtype == 'oracle' ) {
+ $dbsettings =
+"# Oracle specific settings
+\$wgDBprefix = \"{$slconf['DBprefix_ora']}\";";
+ } else {
+ // ummm... :D
+ $dbsettings = '';
+ }
+
+
+ $localsettings = "
+# This file was automatically generated by the MediaWiki installer.
+# If you make manual changes, please keep track in case you need to
+# recreate them later.
+#
+# See includes/DefaultSettings.php for all configurable settings
+# and their default values, but don't forget to make changes in _this_
+# file, not there.
+#
+# Further documentation for configuration settings may be found at:
+# http://www.mediawiki.org/wiki/Manual:Configuration_settings
+
+# If you customize your file layout, set \$IP to the directory that contains
+# the other MediaWiki files. It will be used as a base to locate files.
+if( defined( 'MW_INSTALL_PATH' ) ) {
+ \$IP = MW_INSTALL_PATH;
+} else {
+ \$IP = dirname( __FILE__ );
+}
+
+\$path = array( \$IP, \"\$IP/includes\", \"\$IP/languages\" );
+set_include_path( implode( PATH_SEPARATOR, \$path ) . PATH_SEPARATOR . get_include_path() );
+
+require_once( \"\$IP/includes/DefaultSettings.php\" );
+
+if ( \$wgCommandLineMode ) {
+ if ( isset( \$_SERVER ) && array_key_exists( 'REQUEST_METHOD', \$_SERVER ) ) {
+ die( \"This script must be run from the command line\\n\" );
+ }
+}
+## Uncomment this to disable output compression
+# \$wgDisableOutputCompression = true;
+
+\$wgSitename = \"{$slconf['Sitename']}\";
+
+## The URL base path to the directory containing the wiki;
+## defaults for all runtime URL paths are based off of this.
+## For more information on customizing the URLs please see:
+## http://www.mediawiki.org/wiki/Manual:Short_URL
+\$wgScriptPath = \"{$slconf['ScriptPath']}\";
+\$wgScriptExtension = \"{$slconf['ScriptExtension']}\";
+
+## The relative URL path to the skins directory
+\$wgStylePath = \"\$wgScriptPath/skins\";
+
+## The relative URL path to the logo. Make sure you change this from the default,
+## or else you'll overwrite your logo when you upgrade!
+\$wgLogo = \"\$wgStylePath/common/images/wiki.png\";
+
+## UPO means: this is also a user preference option
+
+\$wgEnableEmail = $enableemail;
+\$wgEnableUserEmail = $enableuseremail; # UPO
+
+\$wgEmergencyContact = \"{$slconf['EmergencyContact']}\";
+\$wgPasswordSender = \"{$slconf['PasswordSender']}\";
+
+\$wgEnotifUserTalk = $enotifusertalk; # UPO
+\$wgEnotifWatchlist = $enotifwatchlist; # UPO
+\$wgEmailAuthentication = $eauthent;
+
+## Database settings
+\$wgDBtype = \"{$slconf['DBtype']}\";
+\$wgDBserver = \"{$slconf['DBserver']}\";
+\$wgDBname = \"{$slconf['DBname']}\";
+\$wgDBuser = \"{$slconf['DBuser']}\";
+\$wgDBpassword = \"{$slconf['DBpassword']}\";
+
+{$dbsettings}
+
+## Shared memory settings
+\$wgMainCacheType = $cacheType;
+\$wgMemCachedServers = $mcservers;
+
+## To enable image uploads, make sure the 'images' directory
+## is writable, then set this to true:
+\$wgEnableUploads = false;
+{$magic}\$wgUseImageMagick = true;
+{$magic}\$wgImageMagickConvertCommand = \"{$convert}\";
+
+## If you use ImageMagick (or any other shell command) on a
+## Linux server, this will need to be set to the name of an
+## available UTF-8 locale
+{$locale}\$wgShellLocale = \"{$slconf['ShellLocale']}\";
+
+## If you want to use image uploads under safe mode,
+## create the directories images/archive, images/thumb and
+## images/temp, and make them all writable. Then uncomment
+## this, if it's not already uncommented:
+{$hashedUploads}\$wgHashedUploadDirectory = false;
+
+## If you have the appropriate support software installed
+## you can enable inline LaTeX equations:
+\$wgUseTeX = false;
+
+## Set \$wgCacheDirectory to a writable directory on the web server
+## to make your wiki go slightly faster. The directory should not
+## be publically accessible from the web.
+#\$wgCacheDirectory = \"\$IP/cache\";
+
+\$wgLocalInterwiki = strtolower( \$wgSitename );
+
+\$wgLanguageCode = \"{$slconf['LanguageCode']}\";
+
+\$wgSecretKey = \"$secretKey\";
+
+## Default skin: you can change the default skin. Use the internal symbolic
+## names, ie 'vector', 'monobook':
+\$wgDefaultSkin = 'monobook';
+
+## For attaching licensing metadata to pages, and displaying an
+## appropriate copyright notice / icon. GNU Free Documentation
+## License and Creative Commons licenses are supported so far.
+{$rights}\$wgEnableCreativeCommonsRdf = true;
+\$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright
+\$wgRightsUrl = \"{$slconf['RightsUrl']}\";
+\$wgRightsText = \"{$slconf['RightsText']}\";
+\$wgRightsIcon = \"{$slconf['RightsIcon']}\";
+# \$wgRightsCode = \"{$slconf['RightsCode']}\"; # Not yet used
+
+\$wgDiff3 = \"{$slconf['diff3']}\";
+
+# When you make changes to this configuration file, this will make
+# sure that cached pages are cleared.
+\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );
+"; ## End of setting the $localsettings string
+
+ // Keep things in Unix line endings internally;
+ // the system will write out as local text type.
+ return str_replace( "\r\n", "\n", $localsettings );
+}
+
+function dieout( $text ) {
+ global $mainListOpened;
+ if( $mainListOpened ) echo( "</ul>" );
+ if( $text != '' && substr( $text, 0, 2 ) != '<p' && substr( $text, 0, 2 ) != '<h' ){
+ echo "<p>$text</p>\n";
+ } else {
+ echo $text;
+ }
+ die( "\n\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>" );
+}
+
+function importVar( &$var, $name, $default = "" ) {
+ if( isset( $var[$name] ) ) {
+ $retval = $var[$name];
+ if ( get_magic_quotes_gpc() ) {
+ $retval = stripslashes( $retval );
+ }
+ } else {
+ $retval = $default;
+ }
+ taint( $retval );
+ return $retval;
+}
+
+function importPost( $name, $default = "" ) {
+ return importVar( $_POST, $name, $default );
+}
+
+function importCheck( $name ) {
+ return isset( $_POST[$name] );
+}
+
+function importRequest( $name, $default = "" ) {
+ return importVar( $_REQUEST, $name, $default );
+}
+
+function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick = '' ) {
+ static $radioCount = 0;
+ if( $type != "" ) {
+ $xtype = "type=\"$type\"";
+ } else {
+ $xtype = "";
+ }
+
+ $id = $field;
+ $nolabel = ($type == "radio") || ($type == "hidden");
+
+ if ($type == 'radio')
+ $id .= $radioCount++;
+
+ if( !$nolabel ) {
+ echo "<label class='column' for=\"$id\">$text</label>";
+ }
+
+ if( $type == "radio" && $value == $conf->$field ) {
+ $checked = "checked='checked'";
+ } else {
+ $checked = "";
+ }
+ echo "<input $xtype name=\"$field\" id=\"$id\" class=\"iput-$type\" $checked ";
+ if ($onclick) {
+ echo " onclick='toggleDBarea(\"$value\",1)' " ;
+ }
+ echo "value=\"";
+ if( $type == "radio" ) {
+ echo htmlspecialchars( $value );
+ } else {
+ echo htmlspecialchars( $conf->$field );
+ }
+
+
+ echo "\" />";
+ if( $nolabel ) {
+ echo "<label for=\"$id\">$text</label>";
+ }
+
+ global $errs;
+ if(isset($errs[$field])) {
+ echo "<span class='error'>" . htmlspecialchars( $errs[$field] ) . "</span>\n";
+ }
+}
+
+function getLanguageList() {
+ global $wgDummyLanguageCodes;
+
+ $codes = array();
+ foreach ( Language::getLanguageNames() as $code => $name ) {
+ if( in_array( $code, $wgDummyLanguageCodes ) ) continue;
+ $codes[$code] = $code . ' - ' . $name;
+ }
+ ksort( $codes );
+ return $codes;
+}
+
+#Check for location of an executable
+# @param string $loc single location to check
+# @param array $names filenames to check for.
+# @param mixed $versioninfo array of details to use when checking version, use false for no version checking
+function locate_executable($loc, $names, $versioninfo = false) {
+ if (!is_array($names))
+ $names = array($names);
+
+ foreach ($names as $name) {
+ $command = "$loc".DIRECTORY_SEPARATOR."$name";
+ if (@file_exists($command)) {
+ if (!$versioninfo)
+ return $command;
+
+ $file = str_replace('$1', $command, $versioninfo[0]);
+ if (strstr(`$file`, $versioninfo[1]) !== false)
+ return $command;
+ }
+ }
+ return false;
+}
+
+# Test a memcached server
+function testMemcachedServer( $server ) {
+ $hostport = explode(":", $server);
+ $errstr = false;
+ $fp = false;
+ if ( !function_exists( 'fsockopen' ) ) {
+ $errstr = "Can't connect to memcached, fsockopen() not present";
+ }
+ if ( !$errstr && count( $hostport ) != 2 ) {
+ $errstr = 'Please specify host and port';
+ }
+ if ( !$errstr ) {
+ list( $host, $port ) = $hostport;
+ $errno = 0;
+ $fsockerr = '';
+
+ $fp = @fsockopen( $host, $port, $errno, $fsockerr, 1.0 );
+ if ( $fp === false ) {
+ $errstr = "Cannot connect to memcached on $host:$port : $fsockerr";
+ }
+ }
+ if ( !$errstr ) {
+ $command = "version\r\n";
+ $bytes = fwrite( $fp, $command );
+ if ( $bytes != strlen( $command ) ) {
+ $errstr = "Cannot write to memcached socket on $host:$port";
+ }
+ }
+ if ( !$errstr ) {
+ $expected = "VERSION ";
+ $response = fread( $fp, strlen( $expected ) );
+ if ( $response != $expected ) {
+ $errstr = "Didn't get correct memcached response from $host:$port";
+ }
+ }
+ if ( $fp ) {
+ fclose( $fp );
+ }
+ if ( !$errstr ) {
+ echo "<li>Connected to memcached on " . htmlspecialchars( "$host:$port" ) ." successfully</li>";
+ }
+ return $errstr;
+}
+
+function database_picker($conf) {
+ global $ourdb;
+ print "\n";
+ foreach(array_keys($ourdb) as $db) {
+ if ($ourdb[$db]['havedriver']) {
+ print "\t<li>";
+ aField( $conf, "DBtype", $ourdb[$db]['fullname'], 'radio', $db, 'onclick');
+ print "</li>\n";
+ }
+ }
+ print "\n\t";
+}
+
+function database_switcher($db) {
+ global $ourdb;
+ $color = $ourdb[$db]['bgcolor'];
+ $full = $ourdb[$db]['fullname'];
+ print "<fieldset id='$db' style='clear:both'><legend>$full-specific options</legend>\n";
+}
+
+function printListItem( $item ) {
+ print "<li>$item</li>";
+}
+
+# Determine a suitable value for $wgShellLocale
+function getShellLocale( $wikiLang ) {
+ # Give up now if we're in safe mode or open_basedir
+ # It's theoretically possible but tricky to work with
+ if ( wfIniGetBool( "safe_mode" ) || ini_get( 'open_basedir' ) || !function_exists('exec') ) {
+ return false;
+ }
+
+ $os = php_uname( 's' );
+ $supported = array( 'Linux', 'SunOS', 'HP-UX' ); # Tested these
+ if ( !in_array( $os, $supported ) ) {
+ return false;
+ }
+
+ # Get a list of available locales
+ $lines = $ret = false;
+ exec( '/usr/bin/locale -a', $lines, $ret );
+ if ( $ret ) {
+ return false;
+ }
+
+ $lines = wfArrayMap( 'trim', $lines );
+ $candidatesByLocale = array();
+ $candidatesByLang = array();
+ foreach ( $lines as $line ) {
+ if ( $line === '' ) {
+ continue;
+ }
+ if ( !preg_match( '/^([a-zA-Z]+)(_[a-zA-Z]+|)\.(utf8|UTF-8)(@[a-zA-Z_]*|)$/i', $line, $m ) ) {
+ continue;
+ }
+ list( $all, $lang, $territory, $charset, $modifier ) = $m;
+ $candidatesByLocale[$m[0]] = $m;
+ $candidatesByLang[$lang][] = $m;
+ }
+
+ # Try the current value of LANG
+ if ( isset( $candidatesByLocale[ getenv( 'LANG' ) ] ) ) {
+ return getenv( 'LANG' );
+ }
+
+ # Try the most common ones
+ $commonLocales = array( 'en_US.UTF-8', 'en_US.utf8', 'de_DE.UTF-8', 'de_DE.utf8' );
+ foreach ( $commonLocales as $commonLocale ) {
+ if ( isset( $candidatesByLocale[$commonLocale] ) ) {
+ return $commonLocale;
+ }
+ }
+
+ # Is there an available locale in the Wiki's language?
+ if ( isset( $candidatesByLang[$wikiLang] ) ) {
+ $m = reset( $candidatesByLang[$wikiLang] );
+ return $m[0];
+ }
+
+ # Are there any at all?
+ if ( count( $candidatesByLocale ) ) {
+ $m = reset( $candidatesByLocale );
+ return $m[0];
+ }
+
+ # Give up
+ return false;
+}
+
+function wfArrayMap( $function, $input ) {
+ $ret = array_map( $function, $input );
+ foreach ( $ret as $key => $value ) {
+ $taint = istainted( $input[$key] );
+ if ( $taint ) {
+ taint( $ret[$key], $taint );
+ }
+ }
+ return $ret;
+}
+
+?>
+
+ <div class="license">
+ <hr/>
+ <p>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.</p>
+
+ <p>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.</p>
+
+ <p>You should have received <a href="../COPYING">a copy of the GNU General Public License</a>
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ or <a href="http://www.gnu.org/copyleft/gpl.html">read it online</a></p>
+ </div>
+
+</div></div></div>
+
+
+<div id="column-one">
+ <div class="portlet" id="p-logo">
+ <a style="background-image: url(../skins/common/images/mediawiki.png);"
+ href="../"
+ title="Main Page"></a>
+ </div>
+ <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
+ <div class='portlet'><div class='pBody'>
+ <ul>
+ <li><a href="../README">Readme</a></li>
+ <li><a href="../RELEASE-NOTES">Release notes</a></li>
+ <li><a href="../docs/">Documentation</a></li>
+ <li><a href="http://www.mediawiki.org/wiki/Help:Contents">User's Guide</a></li>
+ <li><a href="http://www.mediawiki.org/wiki/Manual:Contents">Administrator's Guide</a></li>
+ <li><a href="http://www.mediawiki.org/wiki/Manual:FAQ">FAQ</a></li>
+ </ul>
+ <p style="font-size:90%;margin-top:1em">MediaWiki is Copyright © 2001-2009 by Magnus Manske, Brion Vibber,
+ Lee Daniel Crocker, Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason, Niklas Laxström,
+ Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor, Aaron Schulz and others.</p>
+ </div></div>
+</div>
+
+</div>
+
+</body>
+</html>
diff --git a/config/index.php b/config/index.php
index 85fdb86f..d913bbb1 100644
--- a/config/index.php
+++ b/config/index.php
@@ -19,13 +19,6 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# http://www.gnu.org/copyleft/gpl.html
-error_reporting( E_ALL );
-header( "Content-type: text/html; charset=utf-8" );
-@ini_set( "display_errors", true );
-
-# In case of errors, let output be clean.
-$wgRequestTime = microtime( true );
-
# Attempt to set up the include path, to fix problems with relative includes
$IP = dirname( dirname( __FILE__ ) );
define( 'MW_INSTALL_PATH', $IP );
@@ -34,2177 +27,17 @@ define( 'MW_INSTALL_PATH', $IP );
define( "MEDIAWIKI", true );
define( "MEDIAWIKI_INSTALL", true );
-// Run version checks before including other files
-// so people don't see a scary parse error.
-require_once( "$IP/install-utils.inc" );
-install_version_checks();
-
-require_once( "$IP/includes/Defines.php" );
-require_once( "$IP/includes/DefaultSettings.php" );
-require_once( "$IP/includes/AutoLoader.php" );
-require_once( "$IP/includes/MagicWord.php" );
-require_once( "$IP/includes/Namespace.php" );
-require_once( "$IP/includes/ProfilerStub.php" );
-require_once( "$IP/includes/GlobalFunctions.php" );
-require_once( "$IP/includes/Hooks.php" );
-require_once( "$IP/includes/Exception.php" );
-
-# If we get an exception, the user needs to know
-# all the details
-$wgShowExceptionDetails = true;
-$wgShowSQLErrors = true;
-wfInstallExceptionHandler();
-## Databases we support:
-
-$ourdb = array();
-$ourdb['mysql']['fullname'] = 'MySQL';
-$ourdb['mysql']['havedriver'] = 0;
-$ourdb['mysql']['compile'] = 'mysql';
-$ourdb['mysql']['bgcolor'] = '#ffe5a7';
-$ourdb['mysql']['rootuser'] = 'root';
-
-$ourdb['postgres']['fullname'] = 'PostgreSQL';
-$ourdb['postgres']['havedriver'] = 0;
-$ourdb['postgres']['compile'] = 'pgsql';
-$ourdb['postgres']['bgcolor'] = '#aaccff';
-$ourdb['postgres']['rootuser'] = 'postgres';
-
-$ourdb['sqlite']['fullname'] = 'SQLite';
-$ourdb['sqlite']['havedriver'] = 0;
-$ourdb['sqlite']['compile'] = 'pdo_sqlite';
-$ourdb['sqlite']['bgcolor'] = '#b1ebb1';
-$ourdb['sqlite']['rootuser'] = '';
-
-$ourdb['mssql']['fullname'] = 'MSSQL';
-$ourdb['mssql']['havedriver'] = 0;
-$ourdb['mssql']['compile'] = 'mssql not ready'; # Change to 'mssql' after includes/DatabaseMssql.php added;
-$ourdb['mssql']['bgcolor'] = '#ffc0cb';
-$ourdb['mssql']['rootuser'] = 'administrator';
-
-$ourdb['ibm_db2']['fullname'] = 'DB2';
-$ourdb['ibm_db2']['havedriver'] = 0;
-$ourdb['ibm_db2']['compile'] = 'ibm_db2';
-$ourdb['ibm_db2']['bgcolor'] = '#ffeba1';
-$ourdb['ibm_db2']['rootuser'] = 'db2admin';
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex,nofollow"/>
- <title>MediaWiki <?php echo htmlspecialchars( $wgVersion ); ?> Installation</title>
- <style type="text/css">
-
- @import "../skins/monobook/main.css";
-
- .env-check {
- font-size: 90%;
- margin: 1em 0 1em 2.5em;
- }
-
- .config-section {
- margin-top: 2em;
- }
-
- .config-section label.column {
- clear: left;
- font-weight: bold;
- width: 13em;
- float: left;
- text-align: right;
- padding-right: 1em;
- padding-top: .2em;
- }
-
- .config-input {
- clear: left;
- zoom: 100%; /* IE hack */
- }
-
- .config-section .config-desc {
- clear: left;
- margin: 0 0 2em 18em;
- padding-top: 1em;
- font-size: 85%;
- }
-
- .iput-text, .iput-password {
- width: 14em;
- margin-right: 1em;
- }
-
- .error {
- color: red;
- background-color: #fff;
- font-weight: bold;
- left: 1em;
- font-size: 100%;
- }
-
- .error-top {
- color: red;
- background-color: #FFF0F0;
- border: 2px solid red;
- font-size: 130%;
- font-weight: bold;
- padding: 1em 1.5em;
- margin: 2em 0 1em;
- }
-
- ul.plain {
- list-style-type: none;
- list-style-image: none;
- float: left;
- margin: 0;
- padding: 0;
- }
-
- .btn-install {
- font-weight: bold;
- font-size: 110%;
- padding: .2em .3em;
- }
-
- .license {
- font-size: 85%;
- padding-top: 3em;
- }
-
- span.success-message {
- font-weight: bold;
- font-size: 110%;
- color: green;
- }
- .success-box {
- font-size: 130%;
- }
-
- </style>
- <script type="text/javascript">
- <!--
- function hideall() {
- <?php foreach (array_keys($ourdb) as $db) {
- echo "\n var i = document.getElementById('$db'); if (i) i.style.display='none';";
- }
- ?>
-
- }
- function toggleDBarea(id,defaultroot) {
- hideall();
- var dbarea = document.getElementById(id);
- if (dbarea) dbarea.style.display = (dbarea.style.display == 'none') ? 'block' : 'none';
- var db = document.getElementById('RootUser');
- if (defaultroot) {
-<?php foreach (array_keys($ourdb) as $db) {
- echo " if (id == '$db') { db.value = '".$ourdb[$db]['rootuser']."';}\n";
-}?>
- }
- }
- // -->
- </script>
-</head>
-
-<body>
-<div id="globalWrapper">
-<div id="column-content">
-<div id="content">
-<div id="bodyContent">
-
-<h1>MediaWiki <?php print htmlspecialchars( $wgVersion ) ?> Installation</h1>
-
-<?php
-$mainListOpened = false; # Is the main list (environement checking) opend ? Used by dieout
-
-/* Check for existing configurations and bug out! */
-
-if( file_exists( "../LocalSettings.php" ) ) {
- $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
- dieout( "<p><strong>Setup has completed, <a href='../$script'>your wiki</a> is configured.</strong></p>
- <p>Please delete the /config directory for extra security.</p>" );
-}
-
-if( file_exists( "./LocalSettings.php" ) ) {
- writeSuccessMessage();
- dieout( '' );
-}
-
-if( !is_writable( "." ) ) {
- dieout( "<h2>Can't write config file, aborting</h2>
-
- <p>In order to configure the wiki you have to make the <tt>config</tt> subdirectory
- writable by the web server. Once configuration is done you'll move the created
- <tt>LocalSettings.php</tt> to the parent directory, and for added safety you can
- then remove the <tt>config</tt> subdirectory entirely.</p>
-
- <p>To make the directory writable on a Unix/Linux system:</p>
-
- <pre>
- cd <i>/path/to/wiki</i>
- chmod a+w config
- </pre>
-
- <p>Afterwards retry to start the <a href=\"\">setup</a>.</p>" );
-}
-
-
-require_once( "$IP/install-utils.inc" );
-require_once( "$IP/maintenance/updaters.inc" );
-
-class ConfigData {
- function getEncoded( $data ) {
- # removing latin1 support, no need...
- return $data;
- }
- function getSitename() { return $this->getEncoded( $this->Sitename ); }
- function getSysopName() { return $this->getEncoded( $this->SysopName ); }
- function getSysopPass() { return $this->getEncoded( $this->SysopPass ); }
-
- function setSchema( $schema, $engine ) {
- $this->DBschema = $schema;
- if ( !preg_match( '/^\w*$/', $engine ) ){
- $engine = 'InnoDB';
- }
- switch ( $this->DBschema ) {
- case 'mysql5':
- $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=utf8";
- $this->DBmysql5 = 'true';
- break;
- case 'mysql5-binary':
- $this->DBTableOptions = "ENGINE=$engine, DEFAULT CHARSET=binary";
- $this->DBmysql5 = 'true';
- break;
- default:
- $this->DBTableOptions = "TYPE=$engine";
- $this->DBmysql5 = 'false';
- }
- $this->DBengine = $engine;
-
- # Set the global for use during install
- global $wgDBTableOptions;
- $wgDBTableOptions = $this->DBTableOptions;
- }
-}
-
-?>
-
-<ul>
- <li>
- <b>Don't forget security updates!</b> Keep an eye on the
- <a href="http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce">low-traffic
- release announcements mailing list</a>.
- </li>
-</ul>
-
-
-<h2>Checking environment...</h2>
-<p><em>Please include all of the lines below when reporting installation problems.</em></p>
-<ul class="env-check">
-<?php
-$mainListOpened = true;
-
-$endl = "
-";
-define( 'MW_NO_OUTPUT_BUFFER', 1 );
-$conf = new ConfigData;
-
-install_version_checks();
-$self = 'Installer'; # Maintenance script name, to please Setup.php
-
-print "<li>PHP " . htmlspecialchars( phpversion() ) . " installed</li>\n";
-
-error_reporting( 0 );
-$phpdatabases = array();
-foreach (array_keys($ourdb) as $db) {
- $compname = $ourdb[$db]['compile'];
- if( extension_loaded( $compname ) || ( mw_have_dl() && dl( "{$compname}." . PHP_SHLIB_SUFFIX ) ) ) {
- array_push($phpdatabases, $db);
- $ourdb[$db]['havedriver'] = 1;
- }
-}
-error_reporting( E_ALL );
-
-if (!$phpdatabases) {
- print "Could not find a suitable database driver!<ul>";
- foreach (array_keys($ourdb) AS $db) {
- $comp = $ourdb[$db]['compile'];
- $full = $ourdb[$db]['fullname'];
- print "<li>For <b>$full</b>, compile PHP using <b>--with-$comp</b>, "
- ."or install the $comp.so module</li>\n";
- }
- echo '</ul>';
- dieout( '' );
-}
-
-print "<li>Found database drivers for:";
-$DefaultDBtype = '';
-foreach (array_keys($ourdb) AS $db) {
- if ($ourdb[$db]['havedriver']) {
- if ( $DefaultDBtype == '' ) {
- $DefaultDBtype = $db;
- }
- print " ".$ourdb[$db]['fullname'];
- }
-}
-print "</li>\n";
-
-if( wfIniGetBool( "register_globals" ) ) {
- ?>
- <li>
- <div style="font-size:110%">
- <strong class="error">Warning:</strong>
- <strong>PHP's <tt><a href="http://php.net/register_globals">register_globals</a></tt> option is enabled. Disable it if you can.</strong>
- </div>
- MediaWiki will work, but your server is more exposed to PHP-based security vulnerabilities.
- </li>
- <?php
-}
-
-$fatal = false;
-
-if( wfIniGetBool( "magic_quotes_runtime" ) ) {
- $fatal = true;
- ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime'>magic_quotes_runtime</a> is active!</strong>
- This option corrupts data input unpredictably; you cannot install or use
- MediaWiki unless this option is disabled.</li>
- <?php
-}
-
-if( wfIniGetBool( "magic_quotes_sybase" ) ) {
- $fatal = true;
- ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.sybase.php#ini.magic-quotes-sybase'>magic_quotes_sybase</a> is active!</strong>
- This option corrupts data input unpredictably; you cannot install or use
- MediaWiki unless this option is disabled.</li>
- <?php
-}
-
-if( wfIniGetBool( "mbstring.func_overload" ) ) {
- $fatal = true;
- ?><li class='error'><strong>Fatal: <a href='http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload'>mbstring.func_overload</a> is active!</strong>
- This option causes errors and may corrupt data unpredictably;
- you cannot install or use MediaWiki unless this option is disabled.</li>
- <?php
-}
-
-if( wfIniGetBool( "zend.ze1_compatibility_mode" ) ) {
- $fatal = true;
- ?><li class="error"><strong>Fatal: <a href="http://www.php.net/manual/en/ini.core.php">zend.ze1_compatibility_mode</a> is active!</strong>
- This option causes horrible bugs with MediaWiki; you cannot install or use
- MediaWiki unless this option is disabled.</li>
- <?php
-}
-
-
-if( $fatal ) {
- dieout( "Cannot install MediaWiki." );
-}
-
-if( wfIniGetBool( "safe_mode" ) ) {
- $conf->safeMode = true;
- ?>
- <li><b class='error'>Warning:</b> <strong>PHP's
- <a href='http://www.php.net/features.safe-mode'>safe mode</a> is active.</strong>
- You may have problems caused by this, particularly if using image uploads.
- </li>
- <?php
-} else {
- $conf->safeMode = false;
-}
-
-$sapi = htmlspecialchars( php_sapi_name() );
-print "<li>PHP server API is $sapi; ";
-$script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
-if( $wgUsePathInfo ) {
- print "ok, using pretty URLs (<tt>$script/Page_Title</tt>)";
-} else {
- print "using ugly URLs (<tt>$script?title=Page_Title</tt>)";
-}
-print "</li>\n";
-
-$conf->xml = function_exists( "utf8_encode" );
-if( $conf->xml ) {
- print "<li>Have XML / Latin1-UTF-8 conversion support.</li>\n";
-} else {
- dieout( "PHP's XML module is missing; the wiki requires functions in
- this module and won't work in this configuration.
- If you're running Mandrake, install the php-xml package." );
+# Check for PHP 5
+if ( !function_exists( 'version_compare' )
+ || version_compare( phpversion(), '5.0.0' ) < 0
+) {
+ define( 'MW_PHP4', '1' );
+ require( "$IP/includes/DefaultSettings.php" );
+ require( "$IP/includes/templates/PHP4.php" );
+ exit;
}
-# Check for session support
-if( !function_exists( 'session_name' ) )
- dieout( "PHP's session module is missing. MediaWiki requires session support in order to function." );
-
-# session.save_path doesn't *have* to be set, but if it is, and it's
-# not valid/writable/etc. then it can cause problems
-$sessionSavePath = mw_get_session_save_path();
-$ssp = htmlspecialchars( $sessionSavePath );
-# Warn the user if it's not set, but let them proceed
-if( !$sessionSavePath ) {
- print "<li><strong>Warning:</strong> A value for <tt>session.save_path</tt>
- has not been set in PHP.ini. If the default value causes problems with
- saving session data, set it to a valid path which is read/write/execute
- for the user your web server is running under.</li>";
-} elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) {
- # All good? Let the user know
- print "<li>Session save path (<tt>{$ssp}</tt>) appears to be valid.</li>";
-} else {
- # Something not right? Warn the user, but let them proceed
- print "<li><strong>Warning:</strong> Your <tt>session.save_path</tt> value (<tt>{$ssp}</tt>)
- appears to be invalid or is not writable. PHP needs to be able to save data to
- this location for correct session operation.</li>";
-}
-
-# Check for PCRE support
-if( !function_exists( 'preg_match' ) )
- dieout( "The PCRE support module appears to be missing. MediaWiki requires the
- Perl-compatible regular expression functions." );
-
-$memlimit = ini_get( "memory_limit" );
-$conf->raiseMemory = false;
-if( empty( $memlimit ) || $memlimit == -1 ) {
- print "<li>PHP is configured with no <tt>memory_limit</tt>.</li>\n";
-} else {
- print "<li>PHP's <tt>memory_limit</tt> is " . htmlspecialchars( $memlimit ) . ". ";
- $n = intval( $memlimit );
- if( preg_match( '/^([0-9]+)[Mm]$/', trim( $memlimit ), $m ) ) {
- $n = intval( $m[1] * (1024*1024) );
- }
- if( $n < 20*1024*1024 ) {
- print "Attempting to raise limit to 20M... ";
- if( false === ini_set( "memory_limit", "20M" ) ) {
- print "failed.<br /><b>" . htmlspecialchars( $memlimit ) . " seems too low, installation may fail!</b>";
- } else {
- $conf->raiseMemory = true;
- print "ok.";
- }
- }
- print "</li>\n";
-}
-
-$conf->turck = function_exists( 'mmcache_get' );
-if ( $conf->turck ) {
- print "<li><a href=\"http://turck-mmcache.sourceforge.net/\">Turck MMCache</a> installed</li>\n";
-}
-
-$conf->xcache = function_exists( 'xcache_get' );
-if( $conf->xcache )
- print "<li><a href=\"http://trac.lighttpd.net/xcache/\">XCache</a> installed</li>\n";
-
-$conf->apc = function_exists('apc_fetch');
-if ($conf->apc ) {
- print "<li><a href=\"http://www.php.net/apc\">APC</a> installed</li>\n";
-}
-
-$conf->eaccel = function_exists( 'eaccelerator_get' );
-if ( $conf->eaccel ) {
- $conf->turck = 'eaccelerator';
- print "<li><a href=\"http://eaccelerator.sourceforge.net/\">eAccelerator</a> installed</li>\n";
-}
-
-$conf->dba = function_exists( 'dba_open' );
-
-if( !( $conf->turck || $conf->eaccel || $conf->apc || $conf->xcache ) ) {
- echo( '<li>Couldn\'t find <a href="http://turck-mmcache.sourceforge.net">Turck MMCache</a>,
- <a href="http://eaccelerator.sourceforge.net">eAccelerator</a>,
- <a href="http://www.php.net/apc">APC</a> or <a href="http://trac.lighttpd.net/xcache/">XCache</a>;
- cannot use these for object caching.</li>' );
-}
-
-$conf->diff3 = false;
-$diff3locations = array_merge(
- array(
- "/usr/bin",
- "/usr/local/bin",
- "/opt/csw/bin",
- "/usr/gnu/bin",
- "/usr/sfw/bin" ),
- explode( PATH_SEPARATOR, getenv( "PATH" ) ) );
-$diff3names = array( "gdiff3", "diff3", "diff3.exe" );
-
-$diff3versioninfo = array( '$1 --version 2>&1', 'diff3 (GNU diffutils)' );
-foreach ($diff3locations as $loc) {
- $exe = locate_executable($loc, $diff3names, $diff3versioninfo);
- if ($exe !== false) {
- $conf->diff3 = $exe;
- break;
- }
-}
-
-if ($conf->diff3)
- print "<li>Found GNU diff3: <tt>$conf->diff3</tt>.</li>";
-else
- print "<li>GNU diff3 not found.</li>";
-
-$conf->ImageMagick = false;
-$imcheck = array( "/usr/bin", "/opt/csw/bin", "/usr/local/bin", "/sw/bin", "/opt/local/bin" );
-foreach( $imcheck as $dir ) {
- $im = "$dir/convert";
- if( @file_exists( $im ) ) {
- print "<li>Found ImageMagick: <tt>$im</tt>; image thumbnailing will be enabled if you enable uploads.</li>\n";
- $conf->ImageMagick = $im;
- break;
- }
-}
-
-$conf->HaveGD = function_exists( "imagejpeg" );
-if( $conf->HaveGD ) {
- print "<li>Found GD graphics library built-in";
- if( !$conf->ImageMagick ) {
- print ", image thumbnailing will be enabled if you enable uploads";
- }
- print ".</li>\n";
-} else {
- if( !$conf->ImageMagick ) {
- print "<li>Couldn't find GD library or ImageMagick; image thumbnailing disabled.</li>\n";
- }
-}
-
-$conf->IP = dirname( dirname( __FILE__ ) );
-print "<li>Installation directory: <tt>" . htmlspecialchars( $conf->IP ) . "</tt></li>\n";
-
-
-// PHP_SELF isn't available sometimes, such as when PHP is CGI but
-// cgi.fix_pathinfo is disabled. In that case, fall back to SCRIPT_NAME
-// to get the path to the current script... hopefully it's reliable. SIGH
-$path = ($_SERVER["PHP_SELF"] === '')
- ? $_SERVER["SCRIPT_NAME"]
- : $_SERVER["PHP_SELF"];
-
-$conf->ScriptPath = preg_replace( '{^(.*)/config.*$}', '$1', $path );
-print "<li>Script URI path: <tt>" . htmlspecialchars( $conf->ScriptPath ) . "</tt></li>\n";
-
-
-
-// We may be installing from *.php5 extension file, if so, print message
-$conf->ScriptExtension = '.php';
-if (defined('MW_INSTALL_PHP5_EXT')) {
- $conf->ScriptExtension = '.php5';
- print "<li>Installing MediaWiki with <tt>php5</tt> file extensions</li>\n";
-} else {
- print "<li>Installing MediaWiki with <tt>php</tt> file extensions</li>\n";
-}
-
-
-print "<li style='font-weight:bold;color:green;font-size:110%'>Environment checked. You can install MediaWiki.</li>\n";
- $conf->posted = ($_SERVER["REQUEST_METHOD"] == "POST");
-
- $conf->Sitename = ucfirst( importPost( "Sitename", "" ) );
- $defaultEmail = empty( $_SERVER["SERVER_ADMIN"] )
- ? 'root@localhost'
- : $_SERVER["SERVER_ADMIN"];
- $conf->EmergencyContact = importPost( "EmergencyContact", $defaultEmail );
- $conf->DBtype = importPost( "DBtype", $DefaultDBtype );
- if ( !isset( $ourdb[$conf->DBtype] ) ) {
- $conf->DBtype = $DefaultDBtype;
- }
-
- $conf->DBserver = importPost( "DBserver", "localhost" );
- $conf->DBname = importPost( "DBname", "wikidb" );
- $conf->DBuser = importPost( "DBuser", "wikiuser" );
- $conf->DBpassword = importPost( "DBpassword" );
- $conf->DBpassword2 = importPost( "DBpassword2" );
- $conf->SysopName = importPost( "SysopName", "WikiSysop" );
- $conf->SysopPass = importPost( "SysopPass" );
- $conf->SysopPass2 = importPost( "SysopPass2" );
- $conf->RootUser = importPost( "RootUser", "root" );
- $conf->RootPW = importPost( "RootPW", "" );
- $useRoot = importCheck( 'useroot', false );
- $conf->LanguageCode = importPost( "LanguageCode", "en" );
- ## MySQL specific:
- $conf->DBprefix = importPost( "DBprefix" );
- $conf->setSchema(
- importPost( "DBschema", "mysql5-binary" ),
- importPost( "DBengine", "InnoDB" ) );
-
- ## Postgres specific:
- $conf->DBport = importPost( "DBport", "5432" );
- $conf->DBmwschema = importPost( "DBmwschema", "mediawiki" );
- $conf->DBts2schema = importPost( "DBts2schema", "public" );
-
- ## SQLite specific
- $conf->SQLiteDataDir = importPost( "SQLiteDataDir", "" );
-
- ## MSSQL specific
- // We need a second field so it doesn't overwrite the MySQL one
- $conf->DBprefix2 = importPost( "DBprefix2" );
-
- ## DB2 specific:
- // New variable in order to have a different default port number
- $conf->DBport_db2 = importPost( "DBport_db2", "50000" );
- $conf->DBmwschema = importPost( "DBmwschema", "mediawiki" );
- $conf->DBcataloged = importPost( "DBcataloged", "cataloged" );
-
- $conf->ShellLocale = getShellLocale( $conf->LanguageCode );
-
-/* Check for validity */
-$errs = array();
-
-if( preg_match( '/^$|^mediawiki$|#/i', $conf->Sitename ) ) {
- $errs["Sitename"] = "Must not be blank or \"MediaWiki\" and may not contain \"#\"";
-}
-if( $conf->DBuser == "" ) {
- $errs["DBuser"] = "Must not be blank";
-}
-if( ($conf->DBtype == 'mysql') && (strlen($conf->DBuser) > 16) ) {
- $errs["DBuser"] = "Username too long";
-}
-if( $conf->DBpassword == "" && $conf->DBtype != "postgres" ) {
- $errs["DBpassword"] = "Must not be blank";
-}
-if( $conf->DBpassword != $conf->DBpassword2 ) {
- $errs["DBpassword2"] = "Passwords don't match!";
-}
-if( !preg_match( '/^[A-Za-z_0-9]*$/', $conf->DBprefix ) ) {
- $errs["DBprefix"] = "Invalid table prefix";
-} else {
- untaint( $conf->DBprefix, TC_MYSQL );
-}
-
-error_reporting( E_ALL );
-
-/**
- * Initialise $wgLang and $wgContLang to something so we can
- * call case-folding methods. Per Brion, this is English for
- * now, although we could be clever and initialise to the
- * user-selected language.
- */
-$wgContLang = Language::factory( 'en' );
-$wgLang = $wgContLang;
-
-/**
- * We're messing about with users, so we need a stub
- * authentication plugin...
- */
-$wgAuth = new AuthPlugin();
-
-/**
- * Validate the initial administrator account; username,
- * password checks, etc.
- */
-if( $conf->SysopName ) {
- # Check that the user can be created
- $u = User::newFromName( $conf->SysopName );
- if( is_a($u, 'User') ) { // please do not use instanceof, it breaks PHP4
- # Various password checks
- if( $conf->SysopPass != '' ) {
- if( $conf->SysopPass == $conf->SysopPass2 ) {
- if( !$u->isValidPassword( $conf->SysopPass ) ) {
- $errs['SysopPass'] = "Bad password";
- }
- } else {
- $errs['SysopPass2'] = "Passwords don't match";
- }
- } else {
- $errs['SysopPass'] = "Cannot be blank";
- }
- unset( $u );
- } else {
- $errs['SysopName'] = "Bad username";
- }
-}
-
-$conf->License = importRequest( "License", "none" );
-if( $conf->License == "gfdl1_2" ) {
- $conf->RightsUrl = "http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt";
- $conf->RightsText = "GNU Free Documentation License 1.2";
- $conf->RightsCode = "gfdl1_2";
- $conf->RightsIcon = '${wgScriptPath}/skins/common/images/gnu-fdl.png';
-} elseif( $conf->License == "gfdl1_3" ) {
- $conf->RightsUrl = "http://www.gnu.org/copyleft/fdl.html";
- $conf->RightsText = "GNU Free Documentation License 1.3";
- $conf->RightsCode = "gfdl1_3";
- $conf->RightsIcon = '${wgScriptPath}/skins/common/images/gnu-fdl.png';
-} elseif( $conf->License == "none" ) {
- $conf->RightsUrl = $conf->RightsText = $conf->RightsCode = $conf->RightsIcon = "";
-} elseif( $conf->License == "pd" ) {
- $conf->RightsUrl = "http://creativecommons.org/licenses/publicdomain/";
- $conf->RightsText = "Public Domain";
- $conf->RightsCode = "pd";
- $conf->RightsIcon = '${wgScriptPath}/skins/common/images/public-domain.png';
-} else {
- $conf->RightsUrl = importRequest( "RightsUrl", "" );
- $conf->RightsText = importRequest( "RightsText", "" );
- $conf->RightsCode = importRequest( "RightsCode", "" );
- $conf->RightsIcon = importRequest( "RightsIcon", "" );
-}
-
-$conf->Shm = importRequest( "Shm", "none" );
-$conf->MCServers = importRequest( "MCServers" );
-
-/* Test memcached servers */
-
-if ( $conf->Shm == 'memcached' && $conf->MCServers ) {
- $conf->MCServerArray = wfArrayMap( 'trim', explode( ',', $conf->MCServers ) );
- foreach ( $conf->MCServerArray as $server ) {
- $error = testMemcachedServer( $server );
- if ( $error ) {
- $errs["MCServers"] = $error;
- break;
- }
- }
-} else if ( $conf->Shm == 'memcached' ) {
- $errs["MCServers"] = "Please specify at least one server if you wish to use memcached";
-}
-
-/* default values for installation */
-$conf->Email = importRequest("Email", "email_enabled");
-$conf->Emailuser = importRequest("Emailuser", "emailuser_enabled");
-$conf->Enotif = importRequest("Enotif", "enotif_allpages");
-$conf->Eauthent = importRequest("Eauthent", "eauthent_enabled");
-
-if( $conf->posted && ( 0 == count( $errs ) ) ) {
- do { /* So we can 'continue' to end prematurely */
- $conf->Root = ($conf->RootPW != "");
-
- /* Load up the settings and get installin' */
- $local = writeLocalSettings( $conf );
- echo "<li style=\"list-style: none\">\n";
- echo "<p><b>Generating configuration file...</b></p>\n";
- echo "</li>\n";
-
- $wgCommandLineMode = false;
- chdir( ".." );
- $ok = eval( $local );
- if( $ok === false ) {
- dieout( "<p>Errors in generated configuration; " .
- "most likely due to a bug in the installer... " .
- "Config file was: </p>" .
- "<pre>" .
- htmlspecialchars( $local ) .
- "</pre>" );
- }
- $conf->DBtypename = '';
- foreach (array_keys($ourdb) as $db) {
- if ($conf->DBtype === $db)
- $conf->DBtypename = $ourdb[$db]['fullname'];
- }
- if ( ! strlen($conf->DBtype)) {
- $errs["DBpicktype"] = "Please choose a database type";
- continue;
- }
-
- if (! $conf->DBtypename) {
- $errs["DBtype"] = "Unknown database type '$conf->DBtype'";
- continue;
- }
- print "<li>Database type: " . htmlspecialchars( $conf->DBtypename ) . "</li>\n";
- $dbclass = 'Database'.ucfirst($conf->DBtype);
- $wgDBtype = $conf->DBtype;
- $wgDBadminuser = "root";
- $wgDBadminpassword = $conf->RootPW;
-
- ## Mysql specific:
- $wgDBprefix = $conf->DBprefix;
-
- ## Postgres specific:
- $wgDBport = $conf->DBport;
- $wgDBmwschema = $conf->DBmwschema;
- $wgDBts2schema = $conf->DBts2schema;
-
- if( $conf->DBprefix2 != '' ) {
- // For MSSQL
- $wgDBprefix = $conf->DBprefix2;
- }
-
- ## DB2 specific:
- $wgDBcataloged = $conf->DBcataloged;
-
- $wgCommandLineMode = true;
- if (! defined ( 'STDERR' ) )
- define( 'STDERR', fopen("php://stderr", "wb"));
- $wgUseDatabaseMessages = false; /* FIXME: For database failure */
- require_once( "$IP/includes/Setup.php" );
- chdir( "config" );
-
- $wgTitle = Title::newFromText( "Installation script" );
- error_reporting( E_ALL );
- print "<li>Loading class: " . htmlspecialchars( $dbclass ) . "</li>\n";
- if ( $conf->DBtype != 'sqlite' ) {
- $dbc = new $dbclass;
- }
-
- if( $conf->DBtype == 'mysql' ) {
- $mysqlOldClient = version_compare( mysql_get_client_info(), "4.1.0", "lt" );
- if( $mysqlOldClient ) {
- print "<li><b>PHP is linked with old MySQL client libraries. If you are
- using a MySQL 4.1 server and have problems connecting to the database,
- see <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'
- >http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b></li>\n";
- }
- $ok = true; # Let's be optimistic
-
- # Decide if we're going to use the superuser or the regular database user
- $conf->Root = $useRoot;
- if( $conf->Root ) {
- $db_user = $conf->RootUser;
- $db_pass = $conf->RootPW;
- } else {
- $db_user = $wgDBuser;
- $db_pass = $wgDBpassword;
- }
-
- # Attempt to connect
- echo( "<li>Attempting to connect to database server as " . htmlspecialchars( $db_user ) . "..." );
- $wgDatabase = Database::newFromParams( $wgDBserver, $db_user, $db_pass, '', 1 );
-
- # Check the connection and respond to errors
- if( $wgDatabase->isOpen() ) {
- # Seems OK
- $ok = true;
- $wgDBadminuser = $db_user;
- $wgDBadminpassword = $db_pass;
- echo( "success.</li>\n" );
- $wgDatabase->ignoreErrors( true );
- $myver = $wgDatabase->getServerVersion();
- } else {
- # There were errors, report them and back out
- $ok = false;
- $errno = mysql_errno();
- $errtx = htmlspecialchars( mysql_error() );
- switch( $errno ) {
- case 1045:
- case 2000:
- echo( "failed due to authentication errors. Check passwords.</li>" );
- if( $conf->Root ) {
- # The superuser details are wrong
- $errs["RootUser"] = "Check username";
- $errs["RootPW"] = "and password";
- } else {
- # The regular user details are wrong
- $errs["DBuser"] = "Check username";
- $errs["DBpassword"] = "and password";
- }
- break;
- case 2002:
- case 2003:
- default:
- # General connection problem
- echo( htmlspecialchars( "failed with error [$errno] $errtx." ) . "</li>\n" );
- $errs["DBserver"] = "Connection failed";
- break;
- } # switch
- } #conn. att.
-
- if( !$ok ) { continue; }
- }
- else if( $conf->DBtype == 'ibm_db2' ) {
- if( $useRoot ) {
- $db_user = $conf->RootUser;
- $db_pass = $conf->RootPW;
- } else {
- $db_user = $wgDBuser;
- $db_pass = $wgDBpassword;
- }
-
- echo( "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) .
- "\" as \"" . htmlspecialchars( $db_user ) . "\"..." );
- $wgDatabase = $dbc->newFromParams($wgDBserver, $db_user, $db_pass, $wgDBname, 1);
- if (!$wgDatabase->isOpen()) {
- print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
- } else {
- $myver = $wgDatabase->getServerVersion();
- }
- if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname);
-
- } elseif ( $conf->DBtype == 'sqlite' ) {
- if ("$wgSQLiteDataDir" == '') {
- $wgSQLiteDataDir = dirname($_SERVER['DOCUMENT_ROOT']).'/data';
- }
- echo "<li>Attempting to connect to SQLite database at \"" .
- htmlspecialchars( $wgSQLiteDataDir ) . "\"";
- if ( !is_dir( $wgSQLiteDataDir ) ) {
- if ( is_writable( dirname( $wgSQLiteDataDir ) ) ) {
- $ok = wfMkdirParents( $wgSQLiteDataDir, $wgSQLiteDataDirMode );
- } else {
- $ok = false;
- }
- if ( !$ok ) {
- echo ": cannot create data directory</li>";
- $errs['SQLiteDataDir'] = 'Enter a valid data directory';
- continue;
- }
- }
- if ( !is_writable( $wgSQLiteDataDir ) ) {
- echo ": data directory not writable</li>";
- $errs['SQLiteDataDir'] = 'Enter a writable data directory';
- continue;
- }
- $dataFile = "$wgSQLiteDataDir/$wgDBname.sqlite";
- if ( file_exists( $dataFile ) && !is_writable( $dataFile ) ) {
- echo ": data file not writable</li>";
- $errs['SQLiteDataDir'] = "$wgDBname.sqlite is not writable";
- continue;
- }
- $wgDatabase = new DatabaseSqlite( false, false, false, $wgDBname, 1 );
- if (!$wgDatabase->isOpen()) {
- print ": error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
- $errs['SQLiteDataDir'] = 'Could not connect to database';
- continue;
- } else {
- $myver = $wgDatabase->getServerVersion();
- }
- if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname);
- echo "ok</li>\n";
- } else { # not mysql
- error_reporting( E_ALL );
- $wgSuperUser = '';
- ## Possible connect as a superuser
- // Changed !mysql to postgres check since it seems to only apply to postgres
- if( $useRoot && $conf->DBtype == 'postgres' ) {
- $wgDBsuperuser = $conf->RootUser;
- echo( "<li>Attempting to connect to database \"postgres\" as superuser \"" .
- htmlspecialchars( $wgDBsuperuser ) . "\"..." );
- $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBsuperuser, $conf->RootPW, "postgres", 1);
- if (!$wgDatabase->isOpen()) {
- print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
- $errs["DBserver"] = "Could not connect to database as superuser";
- $errs["RootUser"] = "Check username";
- $errs["RootPW"] = "and password";
- continue;
- }
- $wgDatabase->initial_setup($conf->RootPW, 'postgres');
- }
- echo( "<li>Attempting to connect to database \"" . htmlspecialchars( $wgDBname ) .
- "\" as \"" . htmlspecialchars( $wgDBuser ) . "\"..." );
- $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1);
- if (!$wgDatabase->isOpen()) {
- print " error: " . htmlspecialchars( $wgDatabase->lastError() ) . "</li>\n";
- } else {
- $myver = $wgDatabase->getServerVersion();
- }
- if (is_callable(array($wgDatabase, 'initial_setup'))) $wgDatabase->initial_setup('', $wgDBname);
- }
-
- if ( !$wgDatabase->isOpen() ) {
- $errs["DBserver"] = "Couldn't connect to database";
- continue;
- }
-
- print "<li>Connected to " . htmlspecialchars( "{$conf->DBtype} $myver" );
- if ($conf->DBtype == 'mysql') {
- if( version_compare( $myver, "4.0.14" ) < 0 ) {
- print "</li>\n";
- dieout( "-- mysql 4.0.14 or later required. Aborting." );
- }
- $mysqlNewAuth = version_compare( $myver, "4.1.0", "ge" );
- if( $mysqlNewAuth && $mysqlOldClient ) {
- print "; <b class='error'>You are using MySQL 4.1 server, but PHP is linked
- to old client libraries; if you have trouble with authentication, see
- <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'
- >http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b>";
- }
- if( $wgDBmysql5 ) {
- if( $mysqlNewAuth ) {
- print "; enabling MySQL 4.1/5.0 charset mode";
- } else {
- print "; <b class='error'>MySQL 4.1/5.0 charset mode enabled,
- but older version detected; will likely fail.</b>";
- }
- }
- print "</li>\n";
-
- @$sel = $wgDatabase->selectDB( $wgDBname );
- if( $sel ) {
- print "<li>Database <tt>" . htmlspecialchars( $wgDBname ) . "</tt> exists</li>\n";
- } else {
- $err = mysql_errno();
- $databaseSafe = htmlspecialchars( $wgDBname );
- if( $err == 1102 /* Invalid database name */ ) {
- print "<ul><li><strong>{$databaseSafe}</strong> is not a valid database name.</li></ul>";
- continue;
- } elseif( $err != 1049 /* Database doesn't exist */ ) {
- print "<ul><li>Error selecting database <strong>{$databaseSafe}</strong>: {$err} ";
- print htmlspecialchars( mysql_error() ) . "</li></ul>";
- continue;
- }
- print "<li>Attempting to create database...</li>";
- $res = $wgDatabase->query( "CREATE DATABASE `$wgDBname`" );
- if( !$res ) {
- print "<li>Couldn't create database <tt>" .
- htmlspecialchars( $wgDBname ) .
- "</tt>; try with root access or check your username/pass.</li>\n";
- $errs["RootPW"] = "&lt;- Enter";
- continue;
- }
- print "<li>Created database <tt>" . htmlspecialchars( $wgDBname ) . "</tt></li>\n";
- }
- $wgDatabase->selectDB( $wgDBname );
- }
- else if ($conf->DBtype == 'postgres') {
- if( version_compare( $myver, "8.0" ) < 0 ) {
- dieout( "<b>Postgres 8.0 or later is required</b>. Aborting." );
- }
- }
-
- if( $wgDatabase->tableExists( "cur" ) || $wgDatabase->tableExists( "revision" ) ) {
- print "<li>There are already MediaWiki tables in this database. Checking if updates are needed...</li>\n";
-
- if ( $conf->DBtype == 'mysql') {
- # Determine existing default character set
- if ( $wgDatabase->tableExists( "revision" ) ) {
- $revision = $wgDatabase->escapeLike( $conf->DBprefix . 'revision' );
- $res = $wgDatabase->query( "SHOW TABLE STATUS LIKE '$revision'" );
- $row = $wgDatabase->fetchObject( $res );
- if ( !$row ) {
- echo "<li>SHOW TABLE STATUS query failed!</li>\n";
- $existingSchema = false;
- $existingEngine = false;
- } else {
- if ( preg_match( '/^latin1/', $row->Collation ) ) {
- $existingSchema = 'mysql4';
- } elseif ( preg_match( '/^utf8/', $row->Collation ) ) {
- $existingSchema = 'mysql5';
- } elseif ( preg_match( '/^binary/', $row->Collation ) ) {
- $existingSchema = 'mysql5-binary';
- } else {
- $existingSchema = false;
- echo "<li><strong>Warning:</strong> Unrecognised existing collation</li>\n";
- }
- if ( isset( $row->Engine ) ) {
- $existingEngine = $row->Engine;
- } else {
- $existingEngine = $row->Type;
- }
- }
- if ( $existingSchema && $existingSchema != $conf->DBschema ) {
- $encExisting = htmlspecialchars( $existingSchema );
- $encRequested = htmlspecialchars( $conf->DBschema );
- print "<li><strong>Warning:</strong> you requested the $encRequested schema, " .
- "but the existing database has the $encExisting schema. This upgrade script ".
- "can't convert it, so it will remain $encExisting.</li>\n";
- $conf->setSchema( $existingSchema, $conf->DBengine );
- }
- if ( $existingEngine && $existingEngine != $conf->DBengine ) {
- $encExisting = htmlspecialchars( $existingEngine );
- $encRequested = htmlspecialchars( $conf->DBengine );
- print "<li><strong>Warning:</strong> you requested the $encRequested storage " .
- "engine, but the existing database uses the $encExisting engine. This upgrade " .
- "script can't convert it, so it will remain $encExisting.</li>\n";
- $conf->setSchema( $conf->DBschema, $existingEngine );
- }
- }
-
- # Create user if required
- if ( $conf->Root ) {
- $conn = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 );
- if ( $conn->isOpen() ) {
- print "<li>DB user account ok</li>\n";
- $conn->close();
- } else {
- print "<li>Granting user permissions...";
- if( $mysqlOldClient && $mysqlNewAuth ) {
- print " <b class='error'>If the next step fails, see <a href='http://dev.mysql.com/doc/mysql/en/old-client.html'>http://dev.mysql.com/doc/mysql/en/old-client.html</a> for help.</b>";
- }
- print "</li>\n";
- dbsource( "../maintenance/users.sql", $wgDatabase );
- }
- }
- }
- print "</ul><pre>\n";
- chdir( ".." );
- flush();
- do_all_updates();
- chdir( "config" );
- print "</pre>\n";
- print "<ul><li>Finished update checks.</li>\n";
- } else {
- # Determine available storage engines if possible
- if ( $conf->DBtype == 'mysql' && version_compare( $myver, "4.1.2", "ge" ) ) {
- $res = $wgDatabase->query( 'SHOW ENGINES' );
- $found = false;
- while ( $row = $wgDatabase->fetchObject( $res ) ) {
- if ( $row->Engine == $conf->DBengine ) {
- $found = true;
- break;
- }
- }
- $wgDatabase->freeResult( $res );
- if ( !$found && $conf->DBengine != 'MyISAM' ) {
- echo "<li><strong>Warning:</strong> " . htmlspecialchars( $conf->DBengine ) .
- " storage engine not available, " .
- "using MyISAM instead</li>\n";
- $conf->setSchema( $conf->DBschema, 'MyISAM' );
- }
- }
-
- # FIXME: Check for errors
- print "<li>Creating tables...";
- if ($conf->DBtype == 'mysql') {
- dbsource( "../maintenance/tables.sql", $wgDatabase );
- dbsource( "../maintenance/interwiki.sql", $wgDatabase );
- } elseif (is_callable(array($wgDatabase, 'setup_database'))) {
- $wgDatabase->setup_database();
- }
- else {
- $errs["DBtype"] = "Do not know how to handle database type '$conf->DBtype'";
- continue;
- }
-
- print " done.</li>\n";
-
- print "<li>Initializing statistics...</li>\n";
- $wgDatabase->insert( 'site_stats',
- array ( 'ss_row_id' => 1,
- 'ss_total_views' => 0,
- 'ss_total_edits' => 1, # Main page first edit
- 'ss_good_articles' => 0, # Main page is not a good article - no internal link
- 'ss_total_pages' => 1, # Main page
- 'ss_users' => $conf->SysopName ? 1 : 0, # Sysop account, if created
- 'ss_admins' => $conf->SysopName ? 1 : 0, # Sysop account, if created
- 'ss_images' => 0 ) );
-
- # Set up the "regular user" account *if we can, and if we need to*
- if( $conf->Root and $conf->DBtype == 'mysql') {
- # See if we need to
- $wgDatabase2 = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 );
- if( $wgDatabase2->isOpen() ) {
- # Nope, just close the test connection and continue
- $wgDatabase2->close();
- echo( "<li>User " . htmlspecialchars( $wgDBuser ) . " exists. Skipping grants.</li>\n" );
- } else {
- # Yes, so run the grants
- echo( "<li>" . htmlspecialchars( "Granting user permissions to $wgDBuser on $wgDBname..." ) );
- dbsource( "../maintenance/users.sql", $wgDatabase );
- echo( "success.</li>\n" );
- }
- }
-
- if( $conf->SysopName ) {
- $u = User::newFromName( $conf->getSysopName() );
- if ( !$u ) {
- print "<li><strong class=\"error\">Warning:</strong> Skipped sysop account creation - invalid username!</li>\n";
- }
- else if ( 0 == $u->idForName() ) {
- $u->addToDatabase();
- $u->setPassword( $conf->getSysopPass() );
- $u->saveSettings();
-
- $u->addGroup( "sysop" );
- $u->addGroup( "bureaucrat" );
-
- print "<li>Created sysop account <tt>" .
- htmlspecialchars( $conf->SysopName ) . "</tt>.</li>\n";
- } else {
- print "<li>Could not create user - already exists!</li>\n";
- }
- } else {
- print "<li>Skipped sysop account creation, no name given.</li>\n";
- }
-
- $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) );
- $article = new Article( $titleobj );
- $newid = $article->insertOn( $wgDatabase );
- $revision = new Revision( array(
- 'page' => $newid,
- 'text' => wfMsg( 'mainpagetext' ) . "\n\n" . wfMsgNoTrans( 'mainpagedocfooter' ),
- 'comment' => '',
- 'user' => 0,
- 'user_text' => 'MediaWiki default',
- ) );
- $revid = $revision->insertOn( $wgDatabase );
- $article->updateRevisionOn( $wgDatabase, $revision );
- }
- // Now that all database work is done, make sure everything is committed
- $wgDatabase->commit();
-
- /* Write out the config file now that all is well */
- print "<li style=\"list-style: none\">\n";
- print "<p>Creating LocalSettings.php...</p>\n\n";
- $localSettings = "<" . "?php$endl$local";
- // Fix up a common line-ending problem (due to CVS on Windows)
- $localSettings = str_replace( "\r\n", "\n", $localSettings );
- $f = fopen( "LocalSettings.php", 'xt' );
-
- if( $f == false ) {
- print( "</li>\n" );
- dieout( "<p>Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a file of that name here...</p>\n" .
- "<p>Here's the file that would have been written, try to paste it into place manually:</p>\n" .
- "<pre>\n" . htmlspecialchars( $localSettings ) . "</pre>\n" );
- }
- if(fwrite( $f, $localSettings ) ) {
- fclose( $f );
- print "<hr/>\n";
- writeSuccessMessage();
- print "</li>\n";
- } else {
- fclose( $f );
- dieout( "<p class='error'>An error occured while writing the config/LocalSettings.php file. Check user rights and disk space then try again.</p></li>\n" );
- }
-
- } while( false );
-}
-
-print "</ul>\n";
-$mainListOpened = false;
-
-if( count( $errs ) ) {
- /* Display options form */
-
- if( $conf->posted ) {
- echo "<p class='error-top'>Something's not quite right yet; make sure everything below is filled out correctly.</p>\n";
- }
-?>
-
-<form action="<?php echo defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php'; ?>" name="config" method="post">
-
-<h2>Site config</h2>
-
-<div class="config-section">
- <div class="config-input">
- <?php aField( $conf, "Sitename", "Wiki name:" ); ?>
- </div>
- <p class="config-desc">
- Preferably a short word without punctuation, i.e. "Wikipedia".<br />
- Will appear as the namespace name for "meta" pages, and throughout the interface.
- </p>
- <div class="config-input"><?php aField( $conf, "EmergencyContact", "Contact e-mail:" ); ?></div>
- <p class="config-desc">
- Displayed to users in some error messages, used as the return address for password reminders, and used as the default sender address of e-mail notifications.
- </p>
-
- <div class="config-input">
- <label class='column' for="LanguageCode">Language:</label>
- <select id="LanguageCode" name="LanguageCode"><?php
- $list = getLanguageList();
- foreach( $list as $code => $name ) {
- $sel = ($code == $conf->LanguageCode) ? 'selected="selected"' : '';
- $encCode = htmlspecialchars( $code );
- $encName = htmlspecialchars( $name );
- echo "\n\t\t<option value=\"$encCode\" $sel>$encName</option>";
- }
- echo "\n";
- ?>
- </select>
- </div>
- <p class="config-desc">
- Select the language for your wiki's interface. Some localizations aren't fully complete. Unicode (UTF-8) is used for all localizations.
- </p>
-
- <div class="config-input">
- <label class='column'>Copyright/license:</label>
-
- <ul class="plain">
- <li><?php aField( $conf, "License", "No license metadata", "radio", "none" ); ?></li>
- <li><?php aField( $conf, "License", "Public Domain", "radio", "pd" ); ?></li>
- <li><?php aField( $conf, "License", "GNU Free Documentation License 1.2 (Wikipedia-compatible)", "radio", "gfdl1_2" ); ?></li>
- <li><?php aField( $conf, "License", "GNU Free Documentation License 1.3", "radio", "gfdl1_3" ); ?></li>
- <li><?php
- aField( $conf, "License", "A Creative Commons license - ", "radio", "cc" );
- $partner = "MediaWiki";
- $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
- $exit = urlencode( "$wgServer{$conf->ScriptPath}/config/$script?License=cc&RightsUrl=[license_url]&RightsText=[license_name]&RightsCode=[license_code]&RightsIcon=[license_button]" );
- $icon = urlencode( "$wgServer$wgUploadPath/wiki.png" );
- $ccApp = htmlspecialchars( "http://creativecommons.org/license/?partner=$partner&exit_url=$exit&partner_icon_url=$icon" );
- print "<a href=\"$ccApp\" target='_blank'>choose</a>";
- if( $conf->License == "cc" ) { ?>
- <ul>
- <li><?php aField( $conf, "RightsIcon", "<img src=\"" . htmlspecialchars( $conf->RightsIcon ) . "\" alt='(Creative Commons icon)' />", "hidden" ); ?></li>
- <li><?php aField( $conf, "RightsText", htmlspecialchars( $conf->RightsText ), "hidden" ); ?></li>
- <li><?php aField( $conf, "RightsCode", "code: " . htmlspecialchars( $conf->RightsCode ), "hidden" ); ?></li>
- <li><?php aField( $conf, "RightsUrl", "<a href=\"" . htmlspecialchars( $conf->RightsUrl ) . "\">" . htmlspecialchars( $conf->RightsUrl ) . "</a>", "hidden" ); ?></li>
- </ul>
- <?php } ?>
- </li>
- </ul>
- </div>
- <p class="config-desc">
- A notice, icon, and machine-readable copyright metadata will be displayed for the license you pick.
- </p>
-
-
- <div class="config-input">
- <?php aField( $conf, "SysopName", "Admin username:" ) ?>
- </div>
- <div class="config-input">
- <?php aField( $conf, "SysopPass", "Password:", "password" ) ?>
- </div>
- <div class="config-input">
- <?php aField( $conf, "SysopPass2", "Password confirm:", "password" ) ?>
- </div>
- <p class="config-desc">
- An admin can lock/delete pages, block users from editing, and do other maintenance tasks.<br />
- A new account will be added only when creating a new wiki database.
- <br /><br />
- The password cannot be the same as the username.
- </p>
-
- <div class="config-input">
- <label class='column'>Object caching:</label>
-
- <ul class="plain">
- <li><?php aField( $conf, "Shm", "No caching", "radio", "none" ); ?></li>
- <?php
- if ( $conf->turck ) {
- echo "<li>";
- aField( $conf, "Shm", "Turck MMCache", "radio", "turck" );
- echo "</li>\n";
- }
- if( $conf->xcache ) {
- echo "<li>";
- aField( $conf, 'Shm', 'XCache', 'radio', 'xcache' );
- echo "</li>\n";
- }
- if ( $conf->apc ) {
- echo "<li>";
- aField( $conf, "Shm", "APC", "radio", "apc" );
- echo "</li>\n";
- }
- if ( $conf->eaccel ) {
- echo "<li>";
- aField( $conf, "Shm", "eAccelerator", "radio", "eaccel" );
- echo "</li>\n";
- }
- if ( $conf->dba ) {
- echo "<li>";
- aField( $conf, "Shm", "DBA (not recommended)", "radio", "dba" );
- echo "</li>";
- }
- ?>
- <li><?php aField( $conf, "Shm", "Memcached", "radio", "memcached" ); ?></li>
- </ul>
- <div style="clear:left"><?php aField( $conf, "MCServers", "Memcached servers:", "text" ) ?></div>
- </div>
- <p class="config-desc">
- An object caching system such as memcached will provide a significant performance boost,
- but needs to be installed. Provide the server addresses and ports in a comma-separated list.
- <br /><br />
- MediaWiki can also detect and support eAccelerator, Turck MMCache, APC, and XCache, but
- these should not be used if the wiki will be running on multiple application servers.
- <br/><br/>
- DBA (Berkeley-style DB) is generally slower than using no cache at all, and is only
- recommended for testing.
- </p>
-</div>
-
-<h2>E-mail, e-mail notification and authentication setup</h2>
-
-<div class="config-section">
- <div class="config-input">
- <label class='column'>E-mail features (global):</label>
- <ul class="plain">
- <li><?php aField( $conf, "Email", "Enabled", "radio", "email_enabled" ); ?></li>
- <li><?php aField( $conf, "Email", "Disabled", "radio", "email_disabled" ); ?></li>
- </ul>
- </div>
- <p class="config-desc">
- Use this to disable all e-mail functions (password reminders, user-to-user e-mail, and e-mail notifications)
- if sending mail doesn't work on your server.
- </p>
-
- <div class="config-input">
- <label class='column'>User-to-user e-mail:</label>
- <ul class="plain">
- <li><?php aField( $conf, "Emailuser", "Enabled", "radio", "emailuser_enabled" ); ?></li>
- <li><?php aField( $conf, "Emailuser", "Disabled", "radio", "emailuser_disabled" ); ?></li>
- </ul>
- </div>
- <p class="config-desc">
- The user-to-user e-mail feature (Special:Emailuser) lets the wiki act as a relay to allow users to exchange e-mail without publicly advertising their e-mail address.
- </p>
- <div class="config-input">
- <label class='column'>E-mail notification about changes:</label>
- <ul class="plain">
- <li><?php aField( $conf, "Enotif", "Disabled", "radio", "enotif_disabled" ); ?></li>
- <li><?php aField( $conf, "Enotif", "Enabled for changes to user discussion pages only", "radio", "enotif_usertalk" ); ?></li>
- <li><?php aField( $conf, "Enotif", "Enabled for changes to user discussion pages, and to pages on watchlists (not recommended for large wikis)", "radio", "enotif_allpages" ); ?></li>
- </ul>
- </div>
- <div class="config-desc">
- <p>
- For this feature to work, an e-mail address must be present for the user account, and the notification
- options in the user's preferences must be enabled. Also note the
- authentication option below. When testing the feature, keep in mind that your own changes will never trigger notifications to be sent to yourself.</p>
-
- <p>There are additional options for fine tuning in /includes/DefaultSettings.php; copy these to your LocalSettings.php and edit them there to change them.</p>
- </div>
-
- <div class="config-input">
- <label class='column'>E-mail address authentication:</label>
- <ul class="plain">
- <li><?php aField( $conf, "Eauthent", "Disabled", "radio", "eauthent_disabled" ); ?></li>
- <li><?php aField( $conf, "Eauthent", "Enabled", "radio", "eauthent_enabled" ); ?></li>
- </ul>
- </div>
- <div class="config-desc">
- <p>If this option is enabled, users have to confirm their e-mail address using a magic link sent to them whenever they set or change it, and only authenticated e-mail addresses can receive mails from other users and/or
- change notification mails. Setting this option is <b>recommended</b> for public wikis because of potential abuse of the e-mail features above.</p>
- </div>
-
-</div>
-
-<h2>Database config</h2>
-
-<div class="config-section">
-<div class="config-input">
- <label class='column'>Database type:</label>
-<?php
- if (isset($errs['DBpicktype'])) {
- print "\t<span class='error'>" . htmlspecialchars( $errs['DBpicktype'] ) . "</span>\n";
- }
-?>
- <ul class='plain'><?php
- database_picker($conf);
- ?></ul>
- </div>
-
- <div class="config-input" style="clear:left">
- <?php aField( $conf, "DBserver", "Database host:" ); ?>
- </div>
- <p class="config-desc">
- If your database server isn't on your web server, enter the name or IP address here.
- </p>
-
- <div class="config-input"><?php aField( $conf, "DBname", "Database name:" ); ?></div>
- <div class="config-input"><?php aField( $conf, "DBuser", "DB username:" ); ?></div>
- <div class="config-input"><?php aField( $conf, "DBpassword", "DB password:", "password" ); ?></div>
- <div class="config-input"><?php aField( $conf, "DBpassword2", "DB password confirm:", "password" ); ?></div>
- <p class="config-desc">
- If you only have a single user account and database available,
- enter those here. If you have database root access (see below)
- you can specify new accounts/databases to be created. This account
- will not be created if it pre-exists. If this is the case, ensure that it
- has SELECT, INSERT, UPDATE, and DELETE permissions on the MediaWiki database.
- </p>
-
- <div class="config-input">
- <label class="column">Superuser account:</label>
- <input type="checkbox" name="useroot" id="useroot" <?php if( $useRoot ) { ?>checked="checked" <?php } ?> />
- &nbsp;<label for="useroot">Use superuser account</label>
- </div>
- <div class="config-input"><?php aField( $conf, "RootUser", "Superuser name:", "text" ); ?></div>
- <div class="config-input"><?php aField( $conf, "RootPW", "Superuser password:", "password" ); ?></div>
-
- <p class="config-desc">
- If the database user specified above does not exist, or does not have access to create
- the database (if needed) or tables within it, please check the box and provide details
- of a superuser account, such as <strong>root</strong>, which does.
- </p>
-
- <?php database_switcher('mysql'); ?>
- <div class="config-input"><?php aField( $conf, "DBprefix", "Database table prefix:" ); ?></div>
- <div class="config-desc">
- <p>If you need to share one database between multiple wikis, or
- between MediaWiki and another web application, you may choose to
- add a prefix to all the table names to avoid conflicts.</p>
-
- <p>Avoid exotic characters; something like <tt>mw_</tt> is good.</p>
- </div>
-
- <div class="config-input"><label class="column">Storage Engine</label>
- <div>Select one:</div>
- <ul class="plain">
- <li><?php aField( $conf, "DBengine", "InnoDB", "radio", "InnoDB" ); ?></li>
- <li><?php aField( $conf, "DBengine", "MyISAM", "radio", "MyISAM" ); ?></li>
- </ul>
- </div>
- <p class="config-desc">
- InnoDB is best for public web installations, since it has good concurrency
- support. MyISAM may be faster in single-user installations. MyISAM databases
- tend to get corrupted more often than InnoDB databases.
- </p>
- <div class="config-input"><label class="column">Database character set</label>
- <div>Select one:</div>
- <ul class="plain">
- <li><?php aField( $conf, "DBschema", "MySQL 4.1/5.0 binary", "radio", "mysql5-binary" ); ?></li>
- <li><?php aField( $conf, "DBschema", "MySQL 4.1/5.0 UTF-8", "radio", "mysql5" ); ?></li>
- <li><?php aField( $conf, "DBschema", "MySQL 4.0 backwards-compatible UTF-8", "radio", "mysql4" ); ?></li>
- </ul>
- </div>
- <p class="config-desc">
- This option is ignored on upgrade, the same character set will be kept.
- <br/><br/>
- <b>WARNING:</b> If you use <b>backwards-compatible UTF-8</b> on MySQL 4.1+, and subsequently back up the database with <tt>mysqldump</tt>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!.
- <br/><br/>
- In <b>binary mode</b>, MediaWiki stores UTF-8 text to the database in binary fields. This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters. In <b>UTF-8 mode</b>, MySQL will know what character set your data is in, and can present and convert it appropriately, but it won't let you store characters above the <a target="_blank" href="http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes">Basic Multilingual Plane</a>.
- </p>
- </fieldset>
-
- <?php database_switcher('postgres'); ?>
- <div class="config-input"><?php aField( $conf, "DBport", "Database port:" ); ?></div>
- <div class="config-input"><?php aField( $conf, "DBmwschema", "Schema for mediawiki:" ); ?></div>
- <div class="config-input"><?php aField( $conf, "DBts2schema", "Schema for tsearch2:" ); ?></div>
- <div class="config-desc">
- <p>The username specified above (at "DB username") will have its search path set to the above schemas,
- so it is recommended that you create a new user. The above schemas are generally correct:
- only change them if you are sure you need to.</p>
- </div>
- </fieldset>
-
- <?php database_switcher('sqlite'); ?>
- <div class="config-desc">
- <b>NOTE:</b> SQLite only uses the <i>Database name</i> setting above, the user, password and root settings are ignored.
- </div>
- <div class="config-input"><?php
- aField( $conf, "SQLiteDataDir", "SQLite data directory:" );
- ?></div>
- <div class="config-desc">
- <p>SQLite stores table data into files in the filesystem.
- If you do not provide an explicit path, a "data" directory in
- the parent of your document root will be used.</p>
-
- <p>This directory must exist and be writable by the web server.</p>
- </div>
- </fieldset>
-
- <?php database_switcher('mssql'); ?>
- <div class="config-input"><?php
- aField( $conf, "DBprefix2", "Database table prefix:" );
- ?></div>
- <div class="config-desc">
- <p>If you need to share one database between multiple wikis, or
- between MediaWiki and another web application, you may choose to
- add a prefix to all the table names to avoid conflicts.</p>
-
- <p>Avoid exotic characters; something like <tt>mw_</tt> is good.</p>
- </div>
- </fieldset>
-
- <?php database_switcher('ibm_db2'); ?>
- <div class="config-input"><?php
- aField( $conf, "DBport_db2", "Database port:" );
- ?></div>
- <div class="config-input"><?php
- aField( $conf, "DBmwschema", "Schema for mediawiki:" );
- ?></div>
- <div>Select one:</div>
- <ul class="plain">
- <li><?php aField( $conf, "DBcataloged", "Cataloged (DB2 installed locally)", "radio", "cataloged" ); ?></li>
- <li><?php aField( $conf, "DBcataloged", "Uncataloged (remote DB2 through ODBC)", "radio", "uncataloged" ); ?></li>
- </ul>
- <div class="config-desc">
- <p>If you need to share one database between multiple wikis, or
- between MediaWiki and another web application, you may specify
- a different schema to avoid conflicts.</p>
- </div>
- </fieldset>
-
- <div class="config-input" style="padding:2em 0 3em">
- <label class='column'>&nbsp;</label>
- <input type="submit" value="Install MediaWiki!" class="btn-install" />
- </div>
-</div>
-</form>
-<script type="text/javascript">
-window.onload = toggleDBarea( <?php echo Xml::encodeJsVar( $conf->DBtype ); ?>,
-<?php
- ## If they passed in a root user name, don't populate it on page load
- echo strlen(importPost('RootUser', '')) ? 0 : 1;
-?>);
-</script>
-<?php
-}
-
-/* -------------------------------------------------------------------------------------- */
-function writeSuccessMessage() {
- $script = defined('MW_INSTALL_PHP5_EXT') ? 'index.php5' : 'index.php';
- if ( wfIniGetBool( 'safe_mode' ) && !ini_get( 'open_basedir' ) ) {
- echo <<<EOT
-<div class="success-box">
-<p>Installation successful!</p>
-<p>To complete the installation, please do the following:
-<ol>
- <li>Download config/LocalSettings.php with your FTP client or file manager</li>
- <li>Upload it to the parent directory</li>
- <li>Delete config/LocalSettings.php</li>
- <li>Start using <a href='../$script'>your wiki</a>!
-</ol>
-<p>If you are in a shared hosting environment, do <strong>not</strong> just move LocalSettings.php
-remotely. LocalSettings.php is currently owned by the user your webserver is running under,
-which means that anyone on the same server can read your database password! Downloading
-it and uploading it again will hopefully change the ownership to a user ID specific to you.</p>
-</div>
-EOT;
- } else {
- echo <<<EOT
-<div class="success-box">
-<p>
-<span class="success-message">Installation successful!</span>
-Move the <tt>config/LocalSettings.php</tt> file to the parent directory, then follow
-<a href="../$script"> this link</a> to your wiki.</p>
-<p>You should change file permissions for <tt>LocalSettings.php</tt> as required to
-prevent other users on the server reading passwords and altering configuration data.</p>
-</div>
-EOT;
- }
-}
-
-
-function escapePhpString( $string ) {
- if ( is_array( $string ) || is_object( $string ) ) {
- return false;
- }
- return strtr( $string,
- array(
- "\n" => "\\n",
- "\r" => "\\r",
- "\t" => "\\t",
- "\\" => "\\\\",
- "\$" => "\\\$",
- "\"" => "\\\""
- ));
-}
-
-function writeLocalSettings( $conf ) {
- $conf->PasswordSender = $conf->EmergencyContact;
- $magic = ($conf->ImageMagick ? "" : "# ");
- $convert = ($conf->ImageMagick ? $conf->ImageMagick : "/usr/bin/convert" );
- $rights = ($conf->RightsUrl) ? "" : "# ";
- $hashedUploads = $conf->safeMode ? '' : '# ';
-
- if ( $conf->ShellLocale ) {
- $locale = '';
- } else {
- $locale = '# ';
- $conf->ShellLocale = 'en_US.UTF-8';
- }
-
- switch ( $conf->Shm ) {
- case 'memcached':
- $cacheType = 'CACHE_MEMCACHED';
- $mcservers = var_export( $conf->MCServerArray, true );
- break;
- case 'turck':
- case 'xcache':
- case 'apc':
- case 'eaccel':
- $cacheType = 'CACHE_ACCEL';
- $mcservers = 'array()';
- break;
- case 'dba':
- $cacheType = 'CACHE_DBA';
- $mcservers = 'array()';
- break;
- default:
- $cacheType = 'CACHE_NONE';
- $mcservers = 'array()';
- }
-
- if ( $conf->Email == 'email_enabled' ) {
- $enableemail = 'true';
- $enableuseremail = ( $conf->Emailuser == 'emailuser_enabled' ) ? 'true' : 'false' ;
- $eauthent = ( $conf->Eauthent == 'eauthent_enabled' ) ? 'true' : 'false' ;
- switch ( $conf->Enotif ) {
- case 'enotif_usertalk':
- $enotifusertalk = 'true';
- $enotifwatchlist = 'false';
- break;
- case 'enotif_allpages':
- $enotifusertalk = 'true';
- $enotifwatchlist = 'true';
- break;
- default:
- $enotifusertalk = 'false';
- $enotifwatchlist = 'false';
- }
- } else {
- $enableuseremail = 'false';
- $enableemail = 'false';
- $eauthent = 'false';
- $enotifusertalk = 'false';
- $enotifwatchlist = 'false';
- }
-
- $file = @fopen( "/dev/urandom", "r" );
- if ( $file ) {
- $secretKey = bin2hex( fread( $file, 32 ) );
- fclose( $file );
- } else {
- $secretKey = "";
- for ( $i=0; $i<8; $i++ ) {
- $secretKey .= dechex(mt_rand(0, 0x7fffffff));
- }
- print "<li>Warning: \$wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.</li>\n";
- }
-
- # Add slashes to strings for double quoting
- $slconf = wfArrayMap( "escapePhpString", get_object_vars( $conf ) );
- if( $conf->License == 'gfdl1_2' || $conf->License == 'pd' || $conf->License == 'gfdl1_3' ) {
- # Needs literal string interpolation for the current style path
- $slconf['RightsIcon'] = $conf->RightsIcon;
- }
-
- if( $conf->DBtype == 'mysql' ) {
- $dbsettings =
-"# MySQL specific settings
-\$wgDBprefix = \"{$slconf['DBprefix']}\";
-
-# MySQL table options to use during installation or update
-\$wgDBTableOptions = \"{$slconf['DBTableOptions']}\";
-
-# Experimental charset support for MySQL 4.1/5.0.
-\$wgDBmysql5 = {$conf->DBmysql5};";
- } elseif( $conf->DBtype == 'postgres' ) {
- $dbsettings =
-"# Postgres specific settings
-\$wgDBport = \"{$slconf['DBport']}\";
-\$wgDBmwschema = \"{$slconf['DBmwschema']}\";
-\$wgDBts2schema = \"{$slconf['DBts2schema']}\";";
- } elseif( $conf->DBtype == 'sqlite' ) {
- $dbsettings =
-"# SQLite-specific settings
-\$wgSQLiteDataDir = \"{$slconf['SQLiteDataDir']}\";";
- } elseif( $conf->DBtype == 'mssql' ) {
- $dbsettings =
-"# MSSQL specific settings
-\$wgDBprefix = \"{$slconf['DBprefix2']}\";";
- } elseif( $conf->DBtype == 'ibm_db2' ) {
- $dbsettings =
-"# DB2 specific settings
-\$wgDBport_db2 = \"{$slconf['DBport_db2']}\";
-\$wgDBmwschema = \"{$slconf['DBmwschema']}\";
-\$wgDBcataloged = \"{$slconf['DBcataloged']}\";";
- } else {
- // ummm... :D
- $dbsettings = '';
- }
-
-
- $localsettings = "
-# This file was automatically generated by the MediaWiki installer.
-# If you make manual changes, please keep track in case you need to
-# recreate them later.
-#
-# See includes/DefaultSettings.php for all configurable settings
-# and their default values, but don't forget to make changes in _this_
-# file, not there.
-#
-# Further documentation for configuration settings may be found at:
-# http://www.mediawiki.org/wiki/Manual:Configuration_settings
-
-# If you customize your file layout, set \$IP to the directory that contains
-# the other MediaWiki files. It will be used as a base to locate files.
-if( defined( 'MW_INSTALL_PATH' ) ) {
- \$IP = MW_INSTALL_PATH;
-} else {
- \$IP = dirname( __FILE__ );
-}
-
-\$path = array( \$IP, \"\$IP/includes\", \"\$IP/languages\" );
-set_include_path( implode( PATH_SEPARATOR, \$path ) . PATH_SEPARATOR . get_include_path() );
-
-require_once( \"\$IP/includes/DefaultSettings.php\" );
-
-# If PHP's memory limit is very low, some operations may fail.
-" . ($conf->raiseMemory ? '' : '# ' ) . "ini_set( 'memory_limit', '20M' );" . "
-
-if ( \$wgCommandLineMode ) {
- if ( isset( \$_SERVER ) && array_key_exists( 'REQUEST_METHOD', \$_SERVER ) ) {
- die( \"This script must be run from the command line\\n\" );
- }
-}
-## Uncomment this to disable output compression
-# \$wgDisableOutputCompression = true;
-
-\$wgSitename = \"{$slconf['Sitename']}\";
-
-## The URL base path to the directory containing the wiki;
-## defaults for all runtime URL paths are based off of this.
-## For more information on customizing the URLs please see:
-## http://www.mediawiki.org/wiki/Manual:Short_URL
-\$wgScriptPath = \"{$slconf['ScriptPath']}\";
-\$wgScriptExtension = \"{$slconf['ScriptExtension']}\";
-
-## UPO means: this is also a user preference option
-
-\$wgEnableEmail = $enableemail;
-\$wgEnableUserEmail = $enableuseremail; # UPO
-
-\$wgEmergencyContact = \"{$slconf['EmergencyContact']}\";
-\$wgPasswordSender = \"{$slconf['PasswordSender']}\";
-
-\$wgEnotifUserTalk = $enotifusertalk; # UPO
-\$wgEnotifWatchlist = $enotifwatchlist; # UPO
-\$wgEmailAuthentication = $eauthent;
-
-## Database settings
-\$wgDBtype = \"{$slconf['DBtype']}\";
-\$wgDBserver = \"{$slconf['DBserver']}\";
-\$wgDBname = \"{$slconf['DBname']}\";
-\$wgDBuser = \"{$slconf['DBuser']}\";
-\$wgDBpassword = \"{$slconf['DBpassword']}\";
-
-{$dbsettings}
-
-## Shared memory settings
-\$wgMainCacheType = $cacheType;
-\$wgMemCachedServers = $mcservers;
-
-## To enable image uploads, make sure the 'images' directory
-## is writable, then set this to true:
-\$wgEnableUploads = false;
-{$magic}\$wgUseImageMagick = true;
-{$magic}\$wgImageMagickConvertCommand = \"{$convert}\";
-
-## If you use ImageMagick (or any other shell command) on a
-## Linux server, this will need to be set to the name of an
-## available UTF-8 locale
-{$locale}\$wgShellLocale = \"{$slconf['ShellLocale']}\";
-
-## If you want to use image uploads under safe mode,
-## create the directories images/archive, images/thumb and
-## images/temp, and make them all writable. Then uncomment
-## this, if it's not already uncommented:
-{$hashedUploads}\$wgHashedUploadDirectory = false;
-
-## If you have the appropriate support software installed
-## you can enable inline LaTeX equations:
-\$wgUseTeX = false;
-
-\$wgLocalInterwiki = strtolower( \$wgSitename );
-
-\$wgLanguageCode = \"{$slconf['LanguageCode']}\";
-
-\$wgSecretKey = \"$secretKey\";
-
-## Default skin: you can change the default skin. Use the internal symbolic
-## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook':
-\$wgDefaultSkin = 'monobook';
-
-## For attaching licensing metadata to pages, and displaying an
-## appropriate copyright notice / icon. GNU Free Documentation
-## License and Creative Commons licenses are supported so far.
-{$rights}\$wgEnableCreativeCommonsRdf = true;
-\$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright
-\$wgRightsUrl = \"{$slconf['RightsUrl']}\";
-\$wgRightsText = \"{$slconf['RightsText']}\";
-\$wgRightsIcon = \"{$slconf['RightsIcon']}\";
-# \$wgRightsCode = \"{$slconf['RightsCode']}\"; # Not yet used
-
-\$wgDiff3 = \"{$slconf['diff3']}\";
-
-# When you make changes to this configuration file, this will make
-# sure that cached pages are cleared.
-\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );
-"; ## End of setting the $localsettings string
-
- // Keep things in Unix line endings internally;
- // the system will write out as local text type.
- return str_replace( "\r\n", "\n", $localsettings );
-}
-
-function dieout( $text ) {
- global $mainListOpened;
- if( $mainListOpened ) echo( "</ul>" );
- if( $text != '' && substr( $text, 0, 2 ) != '<p' && substr( $text, 0, 2 ) != '<h' ){
- echo "<p>$text</p>\n";
- } else {
- echo $text;
- }
- die( "\n\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>" );
-}
-
-function importVar( &$var, $name, $default = "" ) {
- if( isset( $var[$name] ) ) {
- $retval = $var[$name];
- if ( get_magic_quotes_gpc() ) {
- $retval = stripslashes( $retval );
- }
- } else {
- $retval = $default;
- }
- taint( $retval );
- return $retval;
-}
-
-function importPost( $name, $default = "" ) {
- return importVar( $_POST, $name, $default );
-}
-
-function importCheck( $name ) {
- return isset( $_POST[$name] );
-}
-
-function importRequest( $name, $default = "" ) {
- return importVar( $_REQUEST, $name, $default );
-}
-
-function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick = '' ) {
- static $radioCount = 0;
- if( $type != "" ) {
- $xtype = "type=\"$type\"";
- } else {
- $xtype = "";
- }
-
- $id = $field;
- $nolabel = ($type == "radio") || ($type == "hidden");
-
- if ($type == 'radio')
- $id .= $radioCount++;
-
- if( !$nolabel ) {
- echo "<label class='column' for=\"$id\">$text</label>";
- }
-
- if( $type == "radio" && $value == $conf->$field ) {
- $checked = "checked='checked'";
- } else {
- $checked = "";
- }
- echo "<input $xtype name=\"$field\" id=\"$id\" class=\"iput-$type\" $checked ";
- if ($onclick) {
- echo " onclick='toggleDBarea(\"$value\",1)' " ;
- }
- echo "value=\"";
- if( $type == "radio" ) {
- echo htmlspecialchars( $value );
- } else {
- echo htmlspecialchars( $conf->$field );
- }
-
-
- echo "\" />";
- if( $nolabel ) {
- echo "<label for=\"$id\">$text</label>";
- }
-
- global $errs;
- if(isset($errs[$field])) {
- echo "<span class='error'>" . htmlspecialchars( $errs[$field] ) . "</span>\n";
- }
-}
-
-function getLanguageList() {
- global $wgLanguageNames, $IP;
- if( !isset( $wgLanguageNames ) ) {
- require_once( "$IP/languages/Names.php" );
- }
-
- $codes = array();
-
- $d = opendir( "../languages/messages" );
- /* In case we are called from the root directory */
- if (!$d)
- $d = opendir( "languages/messages");
- while( false !== ($f = readdir( $d ) ) ) {
- $m = array();
- if( preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $f, $m ) ) {
- $code = str_replace( '_', '-', strtolower( $m[1] ) );
- if( isset( $wgLanguageNames[$code] ) ) {
- $name = $code . ' - ' . $wgLanguageNames[$code];
- } else {
- $name = $code;
- }
- $codes[$code] = $name;
- }
- }
- closedir( $d );
- ksort( $codes );
- return $codes;
-}
-
-#Check for location of an executable
-# @param string $loc single location to check
-# @param array $names filenames to check for.
-# @param mixed $versioninfo array of details to use when checking version, use false for no version checking
-function locate_executable($loc, $names, $versioninfo = false) {
- if (!is_array($names))
- $names = array($names);
-
- foreach ($names as $name) {
- $command = "$loc".DIRECTORY_SEPARATOR."$name";
- if (@file_exists($command)) {
- if (!$versioninfo)
- return $command;
-
- $file = str_replace('$1', $command, $versioninfo[0]);
- if (strstr(`$file`, $versioninfo[1]) !== false)
- return $command;
- }
- }
- return false;
-}
-
-# Test a memcached server
-function testMemcachedServer( $server ) {
- $hostport = explode(":", $server);
- $errstr = false;
- $fp = false;
- if ( !function_exists( 'fsockopen' ) ) {
- $errstr = "Can't connect to memcached, fsockopen() not present";
- }
- if ( !$errstr && count( $hostport ) != 2 ) {
- $errstr = 'Please specify host and port';
- }
- if ( !$errstr ) {
- list( $host, $port ) = $hostport;
- $errno = 0;
- $fsockerr = '';
-
- $fp = @fsockopen( $host, $port, $errno, $fsockerr, 1.0 );
- if ( $fp === false ) {
- $errstr = "Cannot connect to memcached on $host:$port : $fsockerr";
- }
- }
- if ( !$errstr ) {
- $command = "version\r\n";
- $bytes = fwrite( $fp, $command );
- if ( $bytes != strlen( $command ) ) {
- $errstr = "Cannot write to memcached socket on $host:$port";
- }
- }
- if ( !$errstr ) {
- $expected = "VERSION ";
- $response = fread( $fp, strlen( $expected ) );
- if ( $response != $expected ) {
- $errstr = "Didn't get correct memcached response from $host:$port";
- }
- }
- if ( $fp ) {
- fclose( $fp );
- }
- if ( !$errstr ) {
- echo "<li>Connected to memcached on " . htmlspecialchars( "$host:$port" ) ." successfully</li>";
- }
- return $errstr;
-}
-
-function database_picker($conf) {
- global $ourdb;
- print "\n";
- foreach(array_keys($ourdb) as $db) {
- if ($ourdb[$db]['havedriver']) {
- print "\t<li>";
- aField( $conf, "DBtype", $ourdb[$db]['fullname'], 'radio', $db, 'onclick');
- print "</li>\n";
- }
- }
- print "\n\t";
-}
-
-function database_switcher($db) {
- global $ourdb;
- $color = $ourdb[$db]['bgcolor'];
- $full = $ourdb[$db]['fullname'];
- print "<fieldset id='$db'><legend>$full specific options</legend>\n";
-}
-
-function printListItem( $item ) {
- print "<li>$item</li>";
-}
-
-# Determine a suitable value for $wgShellLocale
-function getShellLocale( $wikiLang ) {
- # Give up now if we're in safe mode or open_basedir
- # It's theoretically possible but tricky to work with
- if ( wfIniGetBool( "safe_mode" ) || ini_get( 'open_basedir' ) ) {
- return false;
- }
-
- $os = php_uname( 's' );
- $supported = array( 'Linux', 'SunOS', 'HP-UX' ); # Tested these
- if ( !in_array( $os, $supported ) ) {
- return false;
- }
-
- # Get a list of available locales
- $lines = $ret = false;
- exec( '/usr/bin/locale -a', $lines, $ret );
- if ( $ret ) {
- return false;
- }
-
- $lines = wfArrayMap( 'trim', $lines );
- $candidatesByLocale = array();
- $candidatesByLang = array();
- foreach ( $lines as $line ) {
- if ( $line === '' ) {
- continue;
- }
- if ( !preg_match( '/^([a-zA-Z]+)(_[a-zA-Z]+|)\.(utf8|UTF-8)(@[a-zA-Z_]*|)$/i', $line, $m ) ) {
- continue;
- }
- list( $all, $lang, $territory, $charset, $modifier ) = $m;
- $candidatesByLocale[$m[0]] = $m;
- $candidatesByLang[$lang][] = $m;
- }
-
- # Try the current value of LANG
- if ( isset( $candidatesByLocale[ getenv( 'LANG' ) ] ) ) {
- return getenv( 'LANG' );
- }
-
- # Try the most common ones
- $commonLocales = array( 'en_US.UTF-8', 'en_US.utf8', 'de_DE.UTF-8', 'de_DE.utf8' );
- foreach ( $commonLocales as $commonLocale ) {
- if ( isset( $candidatesByLocale[$commonLocale] ) ) {
- return $commonLocale;
- }
- }
-
- # Is there an available locale in the Wiki's language?
- if ( isset( $candidatesByLang[$wikiLang] ) ) {
- $m = reset( $candidatesByLang[$wikiLang] );
- return $m[0];
- }
-
- # Are there any at all?
- if ( count( $candidatesByLocale ) ) {
- $m = reset( $candidatesByLocale );
- return $m[0];
- }
-
- # Give up
- return false;
-}
-
-function wfArrayMap( $function, $input ) {
- $ret = array_map( $function, $input );
- foreach ( $ret as $key => $value ) {
- $taint = istainted( $input[$key] );
- if ( $taint ) {
- taint( $ret[$key], $taint );
- }
- }
- return $ret;
-}
-
-?>
-
- <div class="license">
- <hr/>
- <p>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.</p>
-
- <p>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.</p>
-
- <p>You should have received <a href="../COPYING">a copy of the GNU General Public License</a>
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- or <a href="http://www.gnu.org/copyleft/gpl.html">read it online</a></p>
- </div>
-
-</div></div></div>
-
-
-<div id="column-one">
- <div class="portlet" id="p-logo">
- <a style="background-image: url(../skins/common/images/mediawiki.png);"
- href="../"
- title="Main Page"></a>
- </div>
- <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
- <div class='portlet'><div class='pBody'>
- <ul>
- <li><a href="../README">Readme</a></li>
- <li><a href="../RELEASE-NOTES">Release notes</a></li>
- <li><a href="../docs/">Documentation</a></li>
- <li><a href="http://www.mediawiki.org/wiki/Help:Contents">User's Guide</a></li>
- <li><a href="http://www.mediawiki.org/wiki/Manual:Contents">Administrator's Guide</a></li>
- <li><a href="http://www.mediawiki.org/wiki/Manual:FAQ">FAQ</a></li>
- </ul>
- <p style="font-size:90%;margin-top:1em">MediaWiki is Copyright © 2001-2009 by Magnus Manske, Brion Vibber,
- Lee Daniel Crocker, Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason, Niklas Laxström,
- Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor, Aaron Schulz and others.</p>
- </div></div>
-</div>
-
-</div>
-
-</body>
-</html>
+// Isolate the rest of the code so this file can die out cleanly
+// if we find we're running under PHP 4.x... We use PHP 5 syntax
+// which doesn't parse under 4.
+require( dirname( __FILE__ ) . "/Installer.php" );
diff --git a/config/index.php5 b/config/index.php5
index 1be08780..8e6ceda9 100644
--- a/config/index.php5
+++ b/config/index.php5
@@ -2,5 +2,3 @@
define('MW_INSTALL_PHP5_EXT', 1);
require './index.php';
-
-?>
diff --git a/docs/design.txt b/docs/design.txt
index d1904e1e..192e8c6a 100644
--- a/docs/design.txt
+++ b/docs/design.txt
@@ -56,7 +56,7 @@ Primary classes:
interface language is instantiated as $wgLang, and the local content
language as $wgContLang; be sure to use the *correct* language object
depending upon the circumstances.
- See also language.txt.
+ See also language.txt.
Parser
Class used to transform wikitext to html.
diff --git a/docs/distributors.txt b/docs/distributors.txt
new file mode 100644
index 00000000..5586df12
--- /dev/null
+++ b/docs/distributors.txt
@@ -0,0 +1,192 @@
+This document is intended to provide useful advice for parties seeking to
+redistribute MediaWiki to end users. It's targeted particularly at maintainers
+for Linux distributions, since it's been observed that distribution packages of
+MediaWiki often break. We've consistently had to recommend that users seeking
+support use official tarballs instead of their distribution's packages, and
+this often solves whatever problem the user is having. It would be nice if
+this could change.
+
+== Background: why web applications are different ==
+
+MediaWiki is intended to be usable on any web host that provides support for
+PHP and a database. Many users of low-end shared hosting have very limited
+access to their machine: often only FTP access to some subdirectory of the web
+root. Support for these users entails several restrictions, such as:
+
+ 1) We cannot require installation of any files outside the web root. Few of
+ our users have access to directories like /usr or /etc.
+ 2) We cannot require the ability to run any utility on the command line.
+ Many shared hosts have exec() and similar PHP functions disabled.
+ 3) We cannot assume that the software has write access anywhere useful. The
+ user account that MediaWiki (including its installer) runs under is often
+ different from the account the user used to upload the files, and we might be
+ restricted by PHP settings such as safe mode or open_basedir.
+ 4) We cannot assume that the software even has read access anywhere useful.
+ Many shared hosts run all users' web applications under the same user, so
+ they can't rely on Unix permissions, and must forbid reads to even standard
+ directories like /tmp lest users read each others' files.
+ 5) We cannot assume that the user has the ability to install or run any
+ programs not written as web-accessible PHP scripts.
+
+Since anything that works on cheap shared hosting will work if you have shell
+or root access too, MediaWiki's design is based around catering to the lowest
+common denominator. Although we support higher-end setups as well (like
+Wikipedia!), the way many things work by default is tailored toward shared
+hosting. These defaults are unconventional from the point of view of normal
+(non-web) applications -- they might conflict with distributors' policies, and
+they certainly aren't ideal for someone who's installing MediaWiki as root.
+
+== Directory structure ==
+
+Because of constraint (1) above, MediaWiki does not conform to normal
+Unix filesystem layout. Hopefully we'll offer direct support for standard
+layouts in the future, but for now *any change to the location of files is
+unsupported*. Moving things and leaving symlinks will *probably* not break
+anything, but it is *strongly* advised not to try any more intrusive changes to
+get MediaWiki to conform more closely to your filesystem hierarchy. Any such
+attempt will almost certainly result in unnecessary bugs.
+
+The standard recommended location to install MediaWiki, relative to the web
+root, is /w (so, e.g., /var/www/w). Rewrite rules can then be used to enable
+"pretty URLs" like /wiki/Article instead of /w/index.php?title=Article. (This
+is the convention Wikipedia uses.) In theory, it should be possible to enable
+the appropriate rewrite rules by default, if you can reconfigure the web
+server, but you'd need to alter LocalSettings.php too. See
+<http://www.mediawiki.org/wiki/Manual:Short_URL> for details on short URLs.
+
+If you really must mess around with the directory structure, note that the
+following files *must* all be web-accessible for MediaWiki to function
+correctly:
+
+ * api.php, img_auth.php, index.php, mwScriptLoader.php, opensearch_desc.php,
+ profileinfo.php, redirect.php, thumb.php, trackback.php. These are the entry
+ points for normal usage. This list may be incomplete and is subject to
+ change.
+ * config/index.php: Used for web-based installation (sets up the database,
+ prompts for the name of the wiki, etc.). No command-line installation is
+ currently available.
+ * images/: Used for uploaded files. This could be somewhere else if
+ $wgUploadDirectory and $wgUploadPath are changed appropriately.
+ * skins/*/: Subdirectories of skins/ contain CSS and JavaScript files that
+ must be accessible to web browsers. The PHP files and Skin.sample in skins/
+ don't need to be accessible. This could be somewhere else if
+ $wgStyleDirectory and $wgStylePath are changed appropriately.
+ * extensions/: Many extensions include CSS and JavaScript files in their
+ extensions directory, and will break if they aren't web-accessible. Some
+ extensions might theoretically provide additional entry points as well, at
+ least in principle.
+
+But all files should keep their position relative to the web-visible
+installation directory no matter what. If you must move includes/ somewhere in
+/usr/share, provide a symlink from /var/www/w. If you don't, you *will* break
+something. You have been warned.
+
+== Configuration ==
+
+MediaWiki is configured using LocalSettings.php. This is a PHP file that's
+generated when the user visits config/index.php to install the software, and
+which the user can edit by hand thereafter. It's just a plain old PHP file,
+and can contain any PHP statements. It usually sets global variables that are
+used for configuration, and includes files used by any extensions.
+
+Distributors cannot easily add extra statements to the autogenerated
+LocalSettings.php at the present time -- although hacking config/index.php
+would work. It would be nice if this situation could be improved.
+
+Some configuration options that distributors might be in a position to set
+intelligently:
+
+ * $wgEmergencyContact: An e-mail address that can be used to contact the wiki
+ administrator. By default, "wikiadmin@$wgServerName".
+ * $wgPasswordSender: The e-mail address to use when sending password e-mails.
+ By default, "MediaWiki Mail <apache@$wgServerName>".
+ * $wgSMTP: Can be configured to use SMTP for mail sending instead of PHP
+ mail().
+
+== Documentation ==
+
+MediaWiki's official documentation is split between two places: the source
+code, and <http://www.mediawiki.org/>. The source code documentation is written
+exclusively by developers, and so is likely to be reliable (at worst,
+outdated). However, it can be pretty sparse. mediawiki.org documentation is
+often much more thorough, but it's maintained by a wiki that's open to
+anonymous edits, so its quality is sometimes sketchy -- don't assume that
+anything there is officially endorsed!
+
+== Upstream ==
+
+MediaWiki is a project hosted and led by the Wikimedia Foundation, the
+not-for-profit charity that operates Wikipedia. Wikimedia employs the lead
+developer and several other paid developers, but commit access is given out
+liberally and there are multiple very active volunteer developers as well. A
+list of developers can be found at <http://www.mediawiki.org/wiki/Developers>.
+
+MediaWiki's bug tracker is at <https://bugzilla.wikimedia.org>. However, most
+developers follow the bug tracker little or not at all. The best place to
+post if you want to get developers' attention is the wikitech-l mailing list
+<https://lists.wikimedia.org/mailman/listinfo/wikitech-l>. Posts to wikitech-l
+will inevitably be read by multiple experienced MediaWiki developers. There's
+also an active IRC chat at <irc://irc.freenode.net/mediawiki>, where there are
+usually several developers at reasonably busy times of day.
+
+Unfortunately, we don't have a very good system for patch review. Patches
+should be submitted on Bugzilla (as unified diffs produced with "svn diff"
+against the latest trunk revision), but many patches languish without review
+until they bitrot into uselessness. You might want to get a developer to
+commit to reviewing your patch before you put too much effort into it.
+Reasonably straightforward patches shouldn't be too hard to get accepted if
+there's an interested developer, however -- posting to Bugzilla and then
+dropping a note on wikitech-l if nobody responds is a good tactic.
+
+All redistributors of MediaWiki should be subscribed to mediawiki-announce
+<https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce>. It's
+extremely low-traffic, with an average of less than one post per month. All
+new releases are announced here, including critical security updates.
+
+== Useful software to install ==
+
+There are several other pieces of software that MediaWiki can make good use of.
+Distributors might choose to install these automatically with MediaWiki and
+perhaps configure it to use them (see Configuration section of this document):
+
+ * APC (Alternative PHP Cache), XCache, or similar: Will greatly speed up the
+ execution of MediaWiki, and all other PHP applications, at some cost in
+ memory usage. Will be used automatically for the most part.
+ * clamav: Can be used for virus scanning of uploaded files. Enable with
+ "$wgAntivirus = 'clamav';".
+ * DjVuLibre: Allows processing of DjVu files. To enable this, set
+ "$wgDjvuDump = 'djvudump'; $wgDjvuRenderer = 'ddjvu'; $wgDjvuTxt = 'djvutxt';".
+ * HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with "$wgUseTidy
+ = true;".
+ * ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable
+ it. PHP's GD can also be used, but ImageMagick is preferable.
+ * Squid: Can provide a drastic speedup and a major cut in resource
+ consumption, but enabling it may interfere with other applications. It might
+ be suitable for a separate mediawiki-squid package. For setup details, see:
+ <http://www.mediawiki.org/wiki/Manual:Squid_caching>
+ * rsvg or other SVG rasterizer: ImageMagick can be used for SVG support, but
+ is not ideal. Wikipedia (as of the time of this writing) uses rsvg. To
+ enable, set "$wgSVGConverter = 'rsvg';" (or other as appropriate).
+ * texvc: Included with MediaWiki. Instructions for compiling and
+ installing it are in the math/ directory.
+
+MediaWiki uses some standard GNU utilities as well, such as diff and diff3. If
+these are present in /usr/bin or some other reasonable location, they will be
+used automatically.
+
+MediaWiki also has a "job queue" that handles background processing. Because
+shared hosts often don't provide access to cron, the job queue is run on every
+page view by default. This means the background tasks aren't really done in
+the background. Busy wikis can set $wgJobRunRate to 0 and run
+maintenance/runJobs.php periodically out of cron. Distributors probably
+shouldn't set this up as a default, however, since the extra cron job is
+unnecessary overhead for a little-used wiki.
+
+== Web server configuration ==
+
+MediaWiki includes several .htaccess files to restrict access to some
+directories. If the web server is not configured to support these files, and
+the relevant directories haven't been moved someplace inaccessible anyway (e.g.
+symlinked in /usr/share with the web server configured to not follow symlinks),
+then it might be useful to deny web access to those directories in the web
+server's configuration.
diff --git a/docs/export-0.4.xsd b/docs/export-0.4.xsd
new file mode 100644
index 00000000..9ff39254
--- /dev/null
+++ b/docs/export-0.4.xsd
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ This is an XML Schema description of the format
+ output by MediaWiki's Special:Export system.
+
+ Version 0.2 adds optional basic file upload info support,
+ which is used by our OAI export/import submodule.
+
+ Version 0.3 adds some site configuration information such
+ as a list of defined namespaces.
+
+ Version 0.4 adds per-revision delete flags, log exports,
+ discussion threading data, a per-page redirect flag, and
+ per-namespace capitalization.
+
+ The canonical URL to the schema document is:
+ http://www.mediawiki.org/xml/export-0.4.xsd
+
+ Use the namespace:
+ http://www.mediawiki.org/xml/export-0.4/
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:mw="http://www.mediawiki.org/xml/export-0.4/"
+ targetNamespace="http://www.mediawiki.org/xml/export-0.4/"
+ elementFormDefault="qualified">
+
+ <annotation>
+ <documentation xml:lang="en">
+ MediaWiki's page export format
+ </documentation>
+ </annotation>
+
+ <!-- Need this to reference xml:lang -->
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ <!-- Our root element -->
+ <element name="mediawiki" type="mw:MediaWikiType"/>
+
+ <complexType name="MediaWikiType">
+ <sequence>
+ <element name="siteinfo" type="mw:SiteInfoType"
+ minOccurs="0" maxOccurs="1"/>
+ <element name="page" type="mw:PageType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="version" type="string" use="required"/>
+ <attribute ref="xml:lang" use="required"/>
+ </complexType>
+
+ <complexType name="SiteInfoType">
+ <sequence>
+ <element name="sitename" type="string" minOccurs="0" />
+ <element name="base" type="anyURI" minOccurs="0" />
+ <element name="generator" type="string" minOccurs="0" />
+ <element name="case" type="mw:CaseType" minOccurs="0" />
+ <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
+ </sequence>
+ </complexType>
+
+ <simpleType name="CaseType">
+ <restriction base="NMTOKEN">
+ <!-- Cannot have two titles differing only by case of first letter. -->
+ <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
+ <enumeration value="first-letter" />
+
+ <!-- Complete title is case-sensitive -->
+ <!-- Behavior when $wgCapitalLinks = false -->
+ <enumeration value="case-sensitive" />
+
+ <!-- Cannot have two titles differing only by case. -->
+ <!-- Not yet implemented as of MediaWiki 1.5 -->
+ <enumeration value="case-insensitive" />
+ </restriction>
+ </simpleType>
+
+ <simpleType name="DeletedFlagType">
+ <restriction base="NMTOKEN">
+ <enumeration value="deleted"/>
+ </restriction>
+ </simpleType>
+
+ <complexType name="NamespacesType">
+ <sequence>
+ <element name="namespace" type="mw:NamespaceType"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+
+ <complexType name="NamespaceType">
+ <simpleContent>
+ <extension base="string">
+ <attribute name="key" type="integer" />
+ <attribute name="case" type="mw:CaseType" />
+ </extension>
+ </simpleContent>
+ </complexType>
+
+ <complexType name="PageType">
+ <sequence>
+ <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
+ <element name="title" type="string"/>
+
+ <!-- optional page ID number -->
+ <element name="id" type="positiveInteger" minOccurs="0"/>
+
+ <!-- flag if the current revision is a redirect -->
+ <element name="redirect" minOccurs="0"/>
+
+ <!-- comma-separated list of string tokens, if present -->
+ <element name="restrictions" type="string" minOccurs="0"/>
+
+ <!-- Zero or more sets of revision or upload data -->
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element name="revision" type="mw:RevisionType" />
+ <element name="upload" type="mw:UploadType" />
+ <element name="logitem" type="mw:LogItemType" />
+ </choice>
+
+ <!-- Zero or One sets of discussion threading data -->
+ <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" />
+ </sequence>
+ </complexType>
+
+ <complexType name="RevisionType">
+ <sequence>
+ <element name="id" type="positiveInteger" minOccurs="0"/>
+ <element name="timestamp" type="dateTime"/>
+ <element name="contributor" type="mw:ContributorType"/>
+ <element name="minor" minOccurs="0" />
+ <element name="comment" type="mw:CommentType" minOccurs="0"/>
+ <element name="text" type="mw:TextType" />
+ </sequence>
+ </complexType>
+
+ <complexType name="LogItemType">
+ <sequence>
+ <element name="id" type="positiveInteger" minOccurs="0"/>
+ <element name="timestamp" type="dateTime"/>
+ <element name="contributor" type="mw:ContributorType"/>
+ <element name="comment" type="mw:CommentType" minOccurs="0"/>
+ <element name="type" type="string" />
+ <element name="action" type="string" />
+ <element name="text" type="mw:TextType" />
+ </sequence>
+ </complexType>
+
+ <complexType name="CommentType">
+ <simpleContent>
+ <extension base="string">
+ <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+ <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+
+
+ <complexType name="TextType">
+ <simpleContent>
+ <extension base="string">
+ <attribute ref="xml:space" use="optional" default="preserve" />
+ <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+ <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+
+ <complexType name="ContributorType">
+ <sequence>
+ <element name="username" type="string" minOccurs="0"/>
+ <element name="id" type="positiveInteger" minOccurs="0" />
+
+ <element name="ip" type="string" minOccurs="0"/>
+ </sequence>
+ <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+ <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+ </complexType>
+
+ <complexType name="UploadType">
+ <sequence>
+ <!-- Revision-style data... -->
+ <element name="timestamp" type="dateTime"/>
+ <element name="contributor" type="mw:ContributorType"/>
+ <element name="comment" type="string" minOccurs="0"/>
+
+ <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
+ <element name="filename" type="string"/>
+
+ <!-- URI at which this resource can be obtained -->
+ <element name="src" type="anyURI"/>
+
+ <element name="size" type="positiveInteger" />
+
+ <!-- TODO: add other metadata fields -->
+ </sequence>
+ </complexType>
+
+ <!-- Discussion threading data for LiquidThreads -->
+ <complexType name="DiscussionThreadingInfo">
+ <sequence>
+ <element name="ThreadSubject" type="string" />
+ <element name="ThreadParent" type="positiveInteger" />
+ <element name="ThreadAncestor" type="positiveInteger" />
+ <element name="ThreadPage" type="string" />
+ <element name="ThreadID" type="positiveInteger" />
+ <element name="ThreadAuthor" type="string" />
+ <element name="ThreadEditStatus" type="string" />
+ <element name="ThreadType" type="string" />
+ </sequence>
+ </complexType>
+
+</schema>
diff --git a/docs/export-demo.xml b/docs/export-demo.xml
index 1b4bd7cf..77b26a41 100644
--- a/docs/export-demo.xml
+++ b/docs/export-demo.xml
@@ -1,4 +1,4 @@
-<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.3/ http://www.mediawiki.org/xml/export-0.3.xsd" version="0.3" xml:lang="en">
+<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.4/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.4/ http://www.mediawiki.org/xml/export-0.4.xsd" version="0.4" xml:lang="en">
<!-- Optional global configuration info -->
<siteinfo>
@@ -49,6 +49,10 @@
<!-- Page ID numbers are kept across page moves, but may change -->
<!-- if a page is deleted and recreated. -->
<id>1</id>
+
+ <!-- Tag wether this article is a redirect -->
+ <!-- This corresponds to the page_is_redirect in the page table -->
+ <redirect />
<!-- If restricted, the ACL is listed here raw. -->
<restrictions>edit=sysop:move=sysop</restrictions>
@@ -112,4 +116,19 @@
</upload>
</page>
+<logitem>
+ <id>15</id>
+ <timestamp>2008-10-23T03:20:32Z</timestamp>
+ <contributor>
+ <username>Wikimedian</username>
+ <id>12345</id>
+ </contributor>
+ <comment>content was: 'I think this was a silly edit'</comment>
+ <type>delete</type>
+ <action>delete</action>
+ <logtitle>Silly page name</logtitle>
+ <params xml:space="preserve" />
+</logitem>
+
+
</mediawiki>
diff --git a/docs/hooks.txt b/docs/hooks.txt
index f973d6b8..174fb7d9 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -16,10 +16,10 @@ event
hook
A clump of code and data that should be run when an event happens. This can
be either a function and a chunk of data, or an object and a method.
-
+
hook function
The function part of a hook.
-
+
==Rationale==
Hooks allow us to decouple optionally-run code from code that is run for
@@ -54,21 +54,21 @@ email notification when an article is shown may add:
function showAnArticle($article) {
global $wgReverseTitle, $wgCapitalizeTitle, $wgNotifyArticle;
-
+
if ($wgReverseTitle) {
wfReverseTitle($article);
}
-
+
if ($wgCapitalizeTitle) {
wfCapitalizeTitle($article);
}
# code to actually show the article goes here
-
+
if ($wgNotifyArticle) {
wfNotifyArticleShow($article));
}
- }
+ }
Using a hook-running strategy, we can avoid having all this option-specific
stuff in our mainline code. Using hooks, the function becomes:
@@ -87,7 +87,7 @@ We've cleaned up the code here by removing clumps of weird, infrequently used
code and moving them off somewhere else. It's much easier for someone working
with this code to see what's _really_ going on, and make changes or fix bugs.
-In addition, we can take all the code that deals with the little-used
+In addition, we can take all the code that deals with the little-used
title-reversing options (say) and put it in one place. Instead of having little
title-reversing if-blocks spread all over the codebase in showAnArticle,
deleteAnArticle, exportArticle, etc., we can concentrate it all in an extension
@@ -116,8 +116,8 @@ Having all this code related to the title-reversion option in one place means
that it's easier to read and understand; you don't have to do a grep-find to see
where the $wgReverseTitle variable is used, say.
-If the code is well enough isolated, it can even be excluded when not used --
-making for some slight savings in memory and load-up performance at runtime.
+If the code is well enough isolated, it can even be excluded when not used --
+making for some slight savings in memory and load-up performance at runtime.
Admins who want to have all the reversed titles can add:
require_once('extensions/ReverseTitle.php');
@@ -162,7 +162,7 @@ would result in the following code being executed when 'EventName' happened:
$object->someMethod($param1, $param2)
# object with method and data
$object->someMethod($someData, $param1, $param2)
-
+
Note that when an object is the hook, and there's no specified method, the
default method called is 'onEventName'. For different events this would be
different: 'onArticleSave', 'onUserLogin', etc.
@@ -183,13 +183,13 @@ Hooks can return three possible values:
should be shown to the user
* false: the hook has successfully done the work necessary and the calling
function should skip
-
+
The last result would be for cases where the hook function replaces the main
functionality. For example, if you wanted to authenticate users to a custom
system (LDAP, another PHP program, whatever), you could do:
$wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
-
+
function ldapLogin($username, $password) {
# log user into LDAP
return false;
@@ -199,7 +199,7 @@ Returning false makes less sense for events where the action is complete, and
will normally be ignored.
Note that none of the examples made use of create_function() as a way to
-attach a function to a hook. This is known to cause problems (notably with
+attach a function to a hook. This is known to cause problems (notably with
Special:Version), and should be avoided when at all possible.
==Using hooks==
@@ -207,7 +207,7 @@ Special:Version), and should be avoided when at all possible.
A calling function or method uses the wfRunHooks() function to run the hooks
related to a particular event, like so:
- class Article {
+ class Article {
# ...
function protect() {
global $wgUser;
@@ -217,7 +217,7 @@ related to a particular event, like so:
}
}
}
-
+
wfRunHooks() returns true if the calling function should continue processing
(the hooks ran OK, or there are no hooks to run), or false if it shouldn't (an
error occurred, or one of the hooks handled the action already). Checking the
@@ -270,7 +270,7 @@ is enabled ( $wgUseAjax = true; ).
'AlternateEdit': before checking if an user can edit a page and
before showing the edit form ( EditPage::edit() ). This is triggered
on &action=edit.
-$EditPage : the EditPage object
+$EditPage: the EditPage object
'APIAfterExecute': after calling the execute() method of an API module.
Use this to extend core API modules.
@@ -282,7 +282,7 @@ fail, returning an error message or an <edit result="Failure"> tag
if $resultArr was filled.
$EditPage : the EditPage object
$text : the new text of the article (has yet to be saved)
-$resultArr : data in this array will be added to the API result
+&$resultArr : data in this array will be added to the API result
'APIGetAllowedParams': use this hook to modify a module's parameters.
&$module: Module object
@@ -324,7 +324,8 @@ associated Revision object. In the hook, just add your callback to the
$tokenFunctions array and return true (returning false makes no sense)
$tokenFunctions: array(action => callback)
-'APIQueryRecentChangesTokens': use this hook to add custom tokens to list=recentchanges.
+'APIQueryRecentChangesTokens': use this hook to add custom tokens to
+list=recentchanges.
Every token has an action, which will be used in the rctoken parameter
and in the output (actiontoken="..."), and a callback function which
should return the token, or false if the user isn't allowed to obtain
@@ -335,10 +336,26 @@ associated RecentChange object. In the hook, just add your callback to the
$tokenFunctions array and return true (returning false makes no sense)
$tokenFunctions: array(action => callback)
-'ArticleAfterFetchContent': after fetching content of an article from the database
+'APIQueryUsersTokens': use this hook to add custom token to list=users.
+Every token has an action, which will be used in the ustoken parameter
+and in the output (actiontoken="..."), and a callback function which
+should return the token, or false if the user isn't allowed to obtain
+it. The prototype of the callback function is func($user) where $user
+is the User object. In the hook, just add your callback to the
+$tokenFunctions array and return true (returning false makes no sense)
+$tokenFunctions: array(action => callback)
+
+'ArticleAfterFetchContent': after fetching content of an article from
+the database
$article: the article (object) being loaded from the database
$content: the content (string) of the article
+'ArticleConfirmDelete': before writing the confirmation form for article
+ deletion
+$article: the article (object) being deleted
+$output: the OutputPage object ($wgOut)
+&$reason: the reason (string) the article is being deleted
+
'ArticleDelete': before an article is deleted
$article: the article (object) being deleted
$user: the user (object) deleting the article
@@ -352,18 +369,23 @@ $user: the user that deleted the article
$reason: the reason the article was deleted
$id: id of the article that was deleted
-'ArticleEditUpdateNewTalk': before updating user_newtalk when a user talk page was changed
+'ArticleEditUpdateNewTalk': before updating user_newtalk when a user talk page
+was changed
$article: article (object) of the user talk page
-'ArticleEditUpdates': when edit updates (mainly link tracking) are made when an article has been changed
+'ArticleEditUpdates': when edit updates (mainly link tracking) are made when an
+article has been changed
$article: the article (object)
-$editInfo: data holder that includes the parser output ($editInfo->output) for that page after the change
+$editInfo: data holder that includes the parser output ($editInfo->output) for
+that page after the change
$changed: bool for if the page was changed
-'ArticleEditUpdatesDeleteFromRecentchanges': before deleting old entries from recentchanges table, return false to not delete old entries
+'ArticleEditUpdatesDeleteFromRecentchanges': before deleting old entries from
+recentchanges table, return false to not delete old entries
$article: article (object) being modified
-'ArticleFromTitle': when creating an article object from a title object using Wiki::articleFromTitle()
+'ArticleFromTitle': when creating an article object from a title object using
+Wiki::articleFromTitle()
$title: title (object) used to create the article object
$article: article (object) that will be returned
@@ -380,7 +402,7 @@ $revision: New Revision of the article
'ArticleMergeComplete': after merging to article using Special:Mergehistory
$targetTitle: target title (object)
-$destTitle: destination title (object)
+$destTitle: destination title (object)
'ArticlePageDataAfter': after loading data of an article from the database
$article: article (object) whose data were loaded
@@ -404,7 +426,7 @@ $protect: boolean whether it was a protect or an unprotect
$reason: Reason for protect
$moveonly: boolean whether it was for move only or not
-'ArticlePurge': before executing "&action=purge"
+'ArticlePurge': before executing "&action=purge"
$article: article (object) to purge
'ArticleRevisionVisiblitySet': called when changing visibility of one or more
@@ -447,18 +469,22 @@ $baseRevId: the rev ID (or false) this edit was based on
$title: Title corresponding to the article restored
$create: Whether or not the restoration caused the page to be created
(i.e. it didn't exist before)
+$comment: The comment associated with the undeletion.
-'ArticleUpdateBeforeRedirect': After a page is updated (usually on save), before the user is redirected back to the page
+'ArticleUpdateBeforeRedirect': After a page is updated (usually on save),
+before the user is redirected back to the page
&$article: the article
&$sectionanchor: The section anchor link (e.g. "#overview" )
&$extraq: Extra query parameters which can be added via hooked functions
-'ArticleViewHeader': Before the parser cache is about to be tried for article viewing.
+'ArticleViewHeader': Before the parser cache is about to be tried for article
+viewing.
&$article: the article
&$pcache: whether to try the parser cache or not
&$outputDone: whether the output for this page finished or not
-'ArticleViewRedirect': before setting "Redirected from ..." subtitle when follwed an redirect
+'ArticleViewRedirect': before setting "Redirected from ..." subtitle when
+follwed an redirect
$article: target article (object)
'AuthPluginAutoCreate': Called when creating a local account for an user logged
@@ -484,9 +510,17 @@ rendered inline in wiki pages or galleries in category pages.
'BeforeGalleryFindFile': before an image is fetched for a gallery
&$gallery,: the gallery object
-&$nt: the image title
+&$nt: the image title
&$time: image timestamp
+'BeforeInitialize': before anything is initialized in performRequestForTitle()
+&$title: Title being used for request
+&$article: The associated Article object
+&$output: OutputPage object
+&$user: User
+$request: WebRequest object
+$mediaWiki: Mediawiki object
+
'BeforePageDisplay': Prior to outputting a page
&$out: OutputPage object
&$skin: Skin object
@@ -518,18 +552,21 @@ $user: the user who did the block (not the one being blocked)
'BookInformation': Before information output on Special:Booksources
$isbn: ISBN to show information for
$output: OutputPage object in use
-
+
'CategoryPageView': before viewing a categorypage in CategoryPage::view
$catpage: CategoryPage instance
'ChangesListInsertArticleLink': Override or augment link to article in RC list.
-&$this: ChangesList instance.
+&$changesList: ChangesList instance.
&$articlelink: HTML of link to article (already filled-in).
&$s: HTML of row that is being constructed.
&$rc: RecentChange instance.
$unpatrolled: Whether or not we are showing unpatrolled changes.
$watched: Whether or not the change is watched by the user.
+'ConfirmEmailComplete': Called after a user's email has been confirmed successfully
+$user: user (object) whose email is being confirmed
+
'ContribsPager::getQueryInfo': Before the contributions query is about to run
&$pager: Pager object for contributions
&queryInfo: The query for the contribs Pager
@@ -552,6 +589,9 @@ Return true to allow the normal editor to be used, or false
if implementing a custom editor, e.g. for a special namespace,
etc.
+'DatabaseOraclePostInit': Called after initialising an Oracle database
+&$db: the DatabaseOracle object
+
'NewDifferenceEngine': Called when a new DifferenceEngine object is made
$title: the diff page title (nullable)
&$oldId: the actual old Id to use in the diff
@@ -564,7 +604,8 @@ $diff: DifferenceEngine object that's calling
$oldRev: Revision object of the "old" revision (may be null/invalid)
$newRev: Revision object of the "new" revision
-'DisplayOldSubtitle': before creating subtitle when browsing old versions of an article
+'DisplayOldSubtitle': before creating subtitle when browsing old versions of
+an article
$article: article (object) being viewed
$oldid: oldid (int) being viewed
@@ -589,16 +630,27 @@ $summary: Edit summary for page
'EditFilterMerged': Post-section-merge edit filter
$editor: EditPage instance (object)
$text: content of the edit box
-$error: error message to return
+&$error: error message to return
$summary: Edit summary for page
-'EditFormPreloadText': Allows population of the edit form when creating new pages
+'EditFormPreloadText': Allows population of the edit form when creating
+new pages
&$text: Text to preload with
&$title: Title object representing the page being created
+'EditFormInitialText': Allows modifying the edit form when editing existing
+pages
+$editPage: EditPage object
+
'EditPage::attemptSave': called before an article is
saved, that is before insertNewArticle() is called
-&$editpage_Obj: the current EditPage object
+$editpage_Obj: the current EditPage object
+
+'EditPage::importFormData': allow extensions to read additional data
+posted in the form
+$editpage: EditPage instance
+$request: Webrequest
+return value is ignored (should always return true)
'EditPage::showEditForm:fields': allows injection of form field into edit form
&$editor: the EditPage instance for reference
@@ -608,10 +660,10 @@ return value is ignored (should always return true)
'EditPage::showEditForm:initial': before showing the edit form
$editor: EditPage instance (object)
-Return false to halt editing; you'll need to handle error messages, etc. yourself.
-Alternatively, modifying $error and returning true will cause the contents of $error
-to be echoed at the top of the edit form as wikitext. Return true without altering
-$error to allow the edit to proceed.
+Return false to halt editing; you'll need to handle error messages, etc.
+yourself. Alternatively, modifying $error and returning true will cause the
+contents of $error to be echoed at the top of the edit form as wikitext.
+Return true without altering $error to allow the edit to proceed.
'EditPageBeforeConflictDiff': allows modifying the EditPage object and output
when there's an edit conflict. Return false to halt normal diff output; in
@@ -621,16 +673,45 @@ sections.
&$editor: EditPage instance
&$out: OutputPage instance
-'EditPageBeforeEditButtons': allows modifying the edit buttons below the textarea in the edit form
+'EditPageBeforeEditButtons': allows modifying the edit buttons below the
+textarea in the edit form
&$editpage: The current EditPage object
&$buttons: Array of edit buttons "Save", "Preview", "Live", and "Diff"
&$tabindex: HTML tabindex of the last edit check/button
-'EditPageBeforeEditChecks': allows modifying the edit checks below the textarea in the edit form
+'EditPageBeforeEditChecks': allows modifying the edit checks below the
+textarea in the edit form
&$editpage: The current EditPage object
&$checks: Array of edit checks like "watch this page"/"minor edit"
&$tabindex: HTML tabindex of the last edit check/button
+'EditPageBeforeEditToolbar': allows modifying the edit toolbar above the
+textarea in the edit form
+&$toolbar: The toolbar HTMl
+
+'EditPageCopyrightWarning': Allow for site and per-namespace customization of contribution/copyright notice.
+$title: title of page being edited
+&$msg: localization message name, overridable. Default is either 'copyrightwarning' or 'copyrightwarning2'
+
+'EditPageGetDiffText': Allow modifying the wikitext that will be used in
+"Show changes"
+$editPage: EditPage object
+&$newtext: wikitext that will be used as "your version"
+
+'EditPageGetPreviewText': Allow modifying the wikitext that will be previewed
+$editPage: EditPage object
+&$toparse: wikitext that will be parsed
+
+'EditPageNoSuchSection': When a section edit request is given for an non-existent section
+&$editpage: The current EditPage object
+&$res: the HTML of the error text
+
+'EditPageTosSummary': Give a chance for site and per-namespace customizations
+of terms of service summary link that might exist separately from the copyright
+notice.
+$title: title of page being edited
+&$msg: localization message name, overridable. Default is 'editpage-tos-summary'
+
'EditSectionLink': Do not use, use DoEditSectionLink instead.
$skin: Skin rendering the UI
$title: Title being linked to
@@ -656,17 +737,23 @@ $from: address of sending user
$subject: subject of the mail
$text: text of the mail
-'FetchChangesList': When fetching the ChangesList derivative for a particular user
+'EmailUserPermissionsErrors': to retrieve permissions errors for emailing a user.
+$user: The user who is trying to email another user.
+$editToken: The user's edit token.
+&$hookErr: Out-param for the error. Passed as the parameters to OutputPage::showErrorPage.
+
+'FetchChangesList': When fetching the ChangesList derivative for
+a particular user
&$user: User the list is being fetched for
&$skin: Skin object to be used with the list
-&$list: List object (defaults to NULL, change it to an object instance and return
-false override the list derivative used)
+&$list: List object (defaults to NULL, change it to an object
+ instance and return false override the list derivative used)
'FileDeleteComplete': When a file is deleted
$file: reference to the deleted file
$oldimage: in case of the deletion of an old image, the name of the old file
-$article: in case all revisions of the file are deleted a reference to the article
- associated with the file.
+$article: in case all revisions of the file are deleted a reference to the
+ article associated with the file.
$user: user who performed the deletion
$reason: reason
@@ -679,7 +766,8 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored
$user: user who performed the undeletion
$reason: reason
-'GetAutoPromoteGroups': When determining which autopromote groups a user is entitled to be in.
+'GetAutoPromoteGroups': When determining which autopromote groups a user
+is entitled to be in.
&$user: user to promote.
&$promote: groups that will be added.
@@ -702,7 +790,8 @@ $url: string value as output (out parameter, can modify)
$query: query options passed to Title::getInternalURL()
'GetLinkColours': modify the CSS class of an array of page links
-$linkcolour_ids: array of prefixed DB keys of the pages linked to, indexed by page_id.
+$linkcolour_ids: array of prefixed DB keys of the pages linked to,
+ indexed by page_id.
&$colours: (output) array of CSS classes, indexed by prefixed DB keys
'GetLocalURL': modify local URLs as output into page links
@@ -710,6 +799,10 @@ $title: Title object of page
$url: string value as output (out parameter, can modify)
$query: query options passed to Title::getLocalURL()
+'GetPreferences': modify user preferences
+$user: User whose preferences are being modified.
+&$preferences: Preferences description array, to be fed to an HTMLForm object
+
'getUserPermissionsErrors': Add a permissions error when permissions errors are
checked for. Use instead of userCan for most cases. Return false if the
user can't do it, and populate $result with the reason in the form of
@@ -725,13 +818,14 @@ $result: User permissions error to add. If none, return true.
'getUserPermissionsErrorsExpensive': Absolutely the same, but is called only
if expensive checks are enabled.
-'HTMLCacheUpdate::doUpdate': After cache invalidation updates are inserted into the job queue.
+'HTMLCacheUpdate::doUpdate': After cache invalidation updates are inserted
+into the job queue.
$title: Title object, pages linked to this title are purged.
'ImageBeforeProduceHTML': Called before producing the HTML created by a wiki
image insertion. You can skip the default logic entirely by returning
false, or just modify a few things using call-by-reference.
-&$this: Skin object
+&$skin: Skin object
&$title: Title object of the image
&$file: File object, or false if it doesn't exist
&$frameParams: Various parameters with special meanings; see documentation in
@@ -747,6 +841,11 @@ $title: Title object, pages linked to this title are purged.
$imagePage: ImagePage object ($this)
$output: $wgOut
+'ImagePageAfterImageLinks': called after the image links section on an image
+ page is built
+$imagePage: ImagePage object ($this)
+&$html: HTML for the hook to add
+
'ImagePageFileHistoryLine': called when a file history line is contructed
$file: the file
$line: the HTML of the history line
@@ -757,6 +856,24 @@ $page: ImagePage object
&$file: File object
&$displayFile: displayed File object
+'ImagePageShowTOC': called when the file toc on an image page is generated
+$page: ImagePage object
+&$toc: Array of <li> strings
+
+'ImgAuthBeforeStream': executed before file is streamed to user, but only when
+ using img_auth.php
+&$title: the Title object of the file as it would appear for the upload page
+&$path: the original file and path name when img_auth was invoked by the the web
+ server
+&$name: the name only component of the file
+&$result: The location to pass back results of the hook routine (only used if
+ failed)
+ $result[0]=The index of the header message
+ $result[1]=The index of the body text message
+ $result[2 through n]=Parameters passed to body text message. Please note the
+ header message cannot receive/use parameters.
+
+
'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect
$title: Title object ($wgTitle)
$request: WebRequest
@@ -764,15 +881,14 @@ $ignoreRedirect: boolean to skip redirect check
$target: Title/string of redirect target
$article: Article object
-'InitPreferencesForm': called at the end of PreferencesForm's constructor
-$form: the PreferencesForm
-$request: the web request to initialized from
-
-'InternalParseBeforeLinks': during Parser's internalParse method before links but
-after noinclude/includeonly/onlyinclude and other processing.
-&$this: Parser object
+'InternalParseBeforeLinks': during Parser's internalParse method before links
+but after noinclude/includeonly/onlyinclude and other processing.
+&$parser: Parser object
&$text: string containing partially parsed text
-&$this->mStripState: Parser's internal StripState object
+&$stripState: Parser's internal StripState object
+
+'InvalidateEmailComplete': Called after a user's email has been invalidated successfully
+$user: user (object) whose email is being invalidated
'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
$article: article (object) being checked
@@ -791,11 +907,15 @@ $password: The password entered by the user
&$result: Set this and return false to override the internal checks
$user: User the password is being validated for
-'LanguageGetMagic': Use this to define synonyms of magic words depending of the language
+'LanguageGetMagic': DEPRECATED, use $magicWords in a file listed in
+$wgExtensionMessagesFiles instead.
+Use this to define synonyms of magic words depending of the language
$magicExtensions: associative array of magic words synonyms
$lang: laguage code (string)
-'LanguageGetSpecialPageAliases': Use to define aliases of special pages names depending of the language
+'LanguageGetSpecialPageAliases': DEPRECATED, use $specialPageAliases in a file
+listed in $wgExtensionMessagesFiles instead.
+Use to define aliases of special pages names depending of the language
$specialPageAliases: associative array of magic words synonyms
$lang: laguage code (string)
@@ -828,22 +948,26 @@ $options: the options. Will always include either 'known' or 'broken', and may
ciative array form.
&$ret: the value to return if your hook returns false.
-'LinkerMakeExternalImage': At the end of Linker::makeExternalImage() just before the return
+'LinkerMakeExternalImage': At the end of Linker::makeExternalImage() just
+before the return
&$url: the image url
&$alt: the image's alt text
&$img: the new image HTML (if returning false)
-'LinkerMakeExternalLink': At the end of Linker::makeExternalLink() just before the return
+'LinkerMakeExternalLink': At the end of Linker::makeExternalLink() just
+before the return
&$url: the link url
&$text: the link text
&$link: the new link HTML (if returning false)
&$attribs: the attributes to be applied.
$linkType: The external link type
-'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the actual update
+'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the
+actual update
&$linksUpdate: the LinkUpdate object
-'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating has completed
+'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating has
+completed
&$linksUpdate: the LinkUpdate object
'LinksUpdateConstructed': At the end of LinksUpdate() is contruction.
@@ -852,9 +976,8 @@ $linkType: The external link type
'ListDefinedTags': When trying to find all defined tags.
&$tags: The list of tags.
-'LoadAllMessages': called by MessageCache::loadAllMessages() to load extensions messages
-
-'LoadExtensionSchemaUpdates': called by maintenance/updaters.inc when upgrading database schema
+'LoadExtensionSchemaUpdates': called by maintenance/updaters.inc when upgrading
+database schema
'LocalFile::getHistory': called before file history query performed
$file: the file
@@ -864,96 +987,129 @@ $conds: conditions
$opts: query options
$join_conds: JOIN conditions
-'LoginAuthenticateAudit': a login attempt for a valid user account either succeeded or failed.
- No return data is accepted; this hook is for auditing only.
+'LocalisationCacheRecache': Called when loading the localisation data into cache
+$cache: The LocalisationCache object
+$code: language code
+&$alldata: The localisation data from core and extensions
+
+'LoginAuthenticateAudit': a login attempt for a valid user account either
+succeeded or failed. No return data is accepted; this hook is for auditing only.
$user: the User object being authenticated against
$password: the password being submitted and found wanting
-$retval: a LoginForm class constant with authenticateUserData() return value (SUCCESS, WRONG_PASS, etc)
+$retval: a LoginForm class constant with authenticateUserData() return
+ value (SUCCESS, WRONG_PASS, etc)
'LogLine': Processes a single log entry on Special:Log
-$log_type: string for the type of log entry (e.g. 'move'). Corresponds to logging.log_type
- database field.
-$log_action: string for the type of log action (e.g. 'delete', 'block', 'create2'). Corresponds
- to logging.log_action database field.
-$title: Title object that corresponds to logging.log_namespace and logging.log_title database fields.
-$paramArray: Array of parameters that corresponds to logging.log_params field. Note that only $paramArray[0]
- appears to contain anything.
-&$comment: string that corresponds to logging.log_comment database field, and which is displayed in the UI.
+$log_type: string for the type of log entry (e.g. 'move'). Corresponds to
+ logging.log_type database field.
+$log_action: string for the type of log action (e.g. 'delete', 'block',
+ 'create2'). Corresponds to logging.log_action database field.
+$title: Title object that corresponds to logging.log_namespace and
+ logging.log_title database fields.
+$paramArray: Array of parameters that corresponds to logging.log_params field.
+ Note that only $paramArray[0] appears to contain anything.
+&$comment: string that corresponds to logging.log_comment database field, and
+ which is displayed in the UI.
&$revert: string that is displayed in the UI, similar to $comment.
-$time: timestamp of the log entry (added in 1.12)
+$time: timestamp of the log entry (added in 1.12)
-'LogPageValidTypes': action being logged. DEPRECATED: Use $wgLogTypes
+'LogPageValidTypes': action being logged.
+DEPRECATED: Use $wgLogTypes
&$type: array of strings
-'LogPageLogName': name of the logging page(s). DEPRECATED: Use $wgLogNames
+'LogPageLogName': name of the logging page(s).
+DEPRECATED: Use $wgLogNames
&$typeText: array of strings
-'LogPageLogHeader': strings used by wfMsg as a header. DEPRECATED: Use $wgLogHeaders
+'LogPageLogHeader': strings used by wfMsg as a header.
+DEPRECATED: Use $wgLogHeaders
&$headerText: array of strings
-'LogPageActionText': strings used by wfMsg as a header. DEPRECATED: Use $wgLogActions
+'LogPageActionText': strings used by wfMsg as a header.
+DEPRECATED: Use $wgLogActions
&$actionText: array of strings
-'MagicWordMagicWords': When defining new magic word. DEPRECATED: Use LanguageGetMagic hook instead
+'MagicWordMagicWords': When defining new magic word.
+DEPRECATED: use $magicWords in a file listed in
+$wgExtensionMessagesFiles instead.
$magicWords: array of strings
'MagicWordwgVariableIDs': When definig new magic words IDs.
$variableIDs: array of strings
-'MakeGlobalVariablesScript': called right before Skin::makeVariablesScript is executed
-&$vars: variable (or multiple variables) to be added into the output
- of Skin::makeVariablesScript
+'MakeGlobalVariablesScript': called right before Skin::makeVariablesScript
+is executed
+&$vars: variable (or multiple variables) to be added into the output
+ of Skin::makeVariablesScript
'MarkPatrolled': before an edit is marked patrolled
$rcid: ID of the revision to be marked patrolled
$user: the user (object) marking the revision as patrolled
$wcOnlySysopsCanPatrol: config setting indicating whether the user
- needs to be a sysop in order to mark an edit patrolled
+ needs to be a sysop in order to mark an edit patrolled
'MarkPatrolledComplete': after an edit is marked patrolled
$rcid: ID of the revision marked as patrolled
$user: user (object) who marked the edit patrolled
$wcOnlySysopsCanPatrol: config setting indicating whether the user
- must be a sysop to patrol the edit
+ must be a sysop to patrol the edit
'MathAfterTexvc': after texvc is executed when rendering mathematics
$mathRenderer: instance of MathRenderer
$errmsg: error message, in HTML (string). Nonempty indicates failure
- of rendering the formula
+ of rendering the formula
'MediaWikiPerformAction': Override MediaWiki::performAction().
Use this to do something completely different, after the basic
globals have been set up, but before ordinary actions take place.
-$output: $wgOut
+$output: $wgOut
$article: $wgArticle
-$title: $wgTitle
-$user: $wgUser
+$title: $wgTitle
+$user: $wgUser
$request: $wgRequest
-$this: The $mediawiki object
+$mediaWiki: The $mediawiki object
'MessagesPreLoad': When loading a message from the database
$title: title of the message (string)
$message: value (string), change it to the message you want to define
-'MonoBookTemplateToolboxEnd': Called by Monobook skin after toolbox links have been rendered (useful for adding more)
-Note: this is only run for the Monobook skin. To add items to the toolbox
-for all 'SkinTemplate'-type skins, use the SkinTemplateToolboxEnd hook
-instead.
+'MessageCacheReplace': When a message page is changed.
+Useful for updating caches.
+$title: name of the page changed.
+$text: new contents of the page.
+
+'ModifyExportQuery': Modify the query used by the exporter.
+$db: The database object to be queried.
+&$tables: Tables in the query.
+&$conds: Conditions in the query.
+&$opts: Options for the query.
+&$join_conds: Join conditions for the query.
+
+'MonoBookTemplateToolboxEnd': Called by Monobook skin after toolbox links have
+been rendered (useful for adding more)
+Note: this is only run for the Monobook skin. This hook is deprecated and
+may be removed in the future. To add items to the toolbox you should use
+the SkinTemplateToolboxEnd hook instead, which works for all
+'SkinTemplate'-type skins.
$tools: array of tools
-'NewRevisionFromEditComplete': called when a revision was inserted due to an edit
+'NewRevisionFromEditComplete': called when a revision was inserted
+due to an edit
$article: the article edited
$rev: the new revision
$baseID: the revision ID this was based off, if any
$user: the editing user
'NormalizeMessageKey': Called before the software gets the text of a message
- (stuff in the MediaWiki: namespace), useful for changing WHAT message gets displayed
-&$key: the message being looked up. Change this to something else to change what message gets displayed (string)
+(stuff in the MediaWiki: namespace), useful for changing WHAT message gets
+displayed
+&$key: the message being looked up. Change this to something else to change
+ what message gets displayed (string)
&$useDB: whether or not to look up the message in the database (bool)
&$langCode: the language code to get the message for (string) - or -
- whether to use the content language (true) or site language (false) (bool)
-&$transform: whether or not to expand variables and templates in the message (bool)
+ whether to use the content language (true) or site language (false) (bool)
+&$transform: whether or not to expand variables and templates
+ in the message (bool)
'OldChangesListRecentChangesLine': Customize entire Recent Changes line.
&$changeslist: The OldChangesList instance.
@@ -964,23 +1120,33 @@ $user: the editing user
Hooks can alter or append to the array of URLs for search & suggestion formats.
&$urls: array of associative arrays with Url element attributes
+'OtherBlockLogLink': Get links to the block log from extensions which blocks
+ users and/or IP addresses too
+$otherBlockLink: An array with links to other block logs
+$ip: The requested IP address or username
+
'OutputPageBeforeHTML': a page has been processed by the parser and
-the resulting HTML is about to be displayed.
-$parserOutput: the parserOutput (object) that corresponds to the page
+the resulting HTML is about to be displayed.
+$parserOutput: the parserOutput (object) that corresponds to the page
$text: the text that will be displayed, in HTML (string)
-'OutputPageCheckLastModified': when checking if the page has been modified since the last visit
-&$modifiedTimes: array of timestamps, the following keys are set: page, user, epoch
+'OutputPageCheckLastModified': when checking if the page has been modified
+since the last visit
+&$modifiedTimes: array of timestamps.
+ The following keys are set: page, user, epoch
'OutputPageParserOutput': after adding a parserOutput to $wgOut
$out: OutputPage instance (object)
$parserOutput: parserOutput instance being added in $out
-'OutputPageMakeCategoryLinks': links are about to be generated for the page's categories.
- Implementations should return false if they generate the category links, so the default link generation is skipped.
+'OutputPageMakeCategoryLinks': links are about to be generated for the page's
+categories. Implementations should return false if they generate the category
+links, so the default link generation is skipped.
$out: OutputPage instance (object)
-$categories: associative array, keys are category names, values are category types ("normal" or "hidden")
-$links: array, intended to hold the result. Must be an associative array with category types as keys and arrays of HTML links as values.
+$categories: associative array, keys are category names, values are category
+ types ("normal" or "hidden")
+$links: array, intended to hold the result. Must be an associative array with
+ category types as keys and arrays of HTML links as values.
'PageHistoryBeforeList': When a history page list is about to be constructed.
$article: the article that the history is loading for
@@ -988,20 +1154,22 @@ $article: the article that the history is loading for
'PageHistoryLineEnding' : right before the end <li> is added to a history line
$row: the revision row for this line
$s: the string representing this parsed line
+$classes: array containing the <li> element classes
-'PageHistoryPager::getQueryInfo': when a history pager query parameter set is constructed
+'PageHistoryPager::getQueryInfo': when a history pager query parameter set
+is constructed
$pager: the pager
$queryInfo: the query parameters
'PageRenderingHash': alter the parser cache option hash key
- A parser extension which depends on user options should install
- this hook and append its values to the key.
+A parser extension which depends on user options should install
+this hook and append its values to the key.
$hash: reference to a hash key string which can be modified
'ParserAfterStrip': Same as ParserBeforeStrip
'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
-$parser: Parser object being used
+$parser: Parser object being used
$text: text that'll be returned
'ParserBeforeInternalParse': called at the beginning of Parser::internalParse()
@@ -1009,13 +1177,14 @@ $parser: Parser object
$text: text to parse
$stripState: StripState instance being used
-'ParserBeforeStrip': Called at start of parsing time (no more strip, deprecated ?)
+'ParserBeforeStrip': Called at start of parsing time
+(no more strip, deprecated ?)
$parser: parser object
$text: text being parsed
$stripState: stripState used (object)
'ParserBeforeTidy': called before tidy and custom tags replacements
-$parser: Parser object being used
+$parser: Parser object being used
$text: actual text
'ParserClearState': called at the end of Parser::clearState()
@@ -1024,30 +1193,38 @@ $parser: Parser object being cleared
'ParserFirstCallInit': called when the parser initialises for the first time
&$parser: Parser object being cleared
-'ParserGetVariableValueSwitch': called when the parser need the value of a custom magic word
+'ParserGetVariableValueSwitch': called when the parser need the value of a
+custom magic word
$parser: Parser object
-$varCache: array to store the value in case of multiples calls of the same magic word
+$varCache: array to store the value in case of multiples calls of the
+ same magic word
$index: index (string) of the magic
$ret: value of the magic word (the hook should set it)
+$frame: PPFrame object to use for expanding any template variables
-'ParserGetVariableValueTs': use this to change the value of the time for the {{LOCAL...}} magic word
+'ParserGetVariableValueTs': use this to change the value of the time for the
+{{LOCAL...}} magic word
$parser: Parser object
$time: actual time (timestamp)
-'ParserGetVariableValueVarCache': use this to change the value of the variable cache or return false to not use it
+'ParserGetVariableValueVarCache': use this to change the value of the
+variable cache or return false to not use it
$parser: Parser object
$varCache: varaiable cache (array)
-'ParserLimitReport': called at the end of Parser:parse() when the parser will include comments about size of the text parsed
+'ParserLimitReport': called at the end of Parser:parse() when the parser will
+include comments about size of the text parsed
$parser: Parser object
$limitReport: text that will be included (without comment tags)
-'ParserMakeImageParams': Called before the parser make an image link, use this to modify the parameters of the image.
+'ParserMakeImageParams': Called before the parser make an image link, use this
+to modify the parameters of the image.
$title: title object representing the file
$file: file object that will be used to create the image
&$params: 2-D array of parameters
-'ParserTestParser': called when creating a new instance of Parser in maintenance/parserTests.inc
+'ParserTestParser': called when creating a new instance of Parser in
+maintenance/parserTests.inc
$parser: Parser object created
'ParserTestTables': alter the list of tables to duplicate when parser tests
@@ -1068,10 +1245,6 @@ $action : Action being performed
Change $result and return false to give a definitive answer, otherwise
the built-in rate limiting checks are used, if enabled.
-'PreferencesUserInformationPanel': Add HTML bits to user information list in preferences form
-$form : PreferencesForm object
-&$html : HTML to append to
-
'PrefixSearchBackend': Override the title prefix search used for OpenSearch and
AJAX search suggestions. Put results into &$results outparam and return false.
$ns : array of int namespace keys to search in
@@ -1089,6 +1262,18 @@ $user: User (object) changing his passoword
$newPass: new password
$error: error (string) 'badretype', 'wrongpassword', 'error' or 'success'
+'ProtectionForm::buildForm': called after all protection type fieldsets are made in the form
+$article: the title being (un)protected
+$output: a string of the form HTML so far
+
+'ProtectionForm::save': called when a protection form is submitted
+$article: the title being (un)protected
+$errorMsg: an html message string of an error
+
+'ProtectionForm::showLogExtract': called after the protection log extract is shown
+$article: the page the form is shown for
+$out: OutputPage object
+
'RawPageViewBeforeOutput': Right before the text is blown out in action=raw
&$obj: RawPage object
&$text: The text that's going to be the output
@@ -1096,14 +1281,6 @@ $error: error (string) 'badretype', 'wrongpassword', 'error' or 'success'
'RecentChange_save': called at the end of RecenChange::save()
$recentChange: RecentChange object
-'RenderPreferencesForm': called at the end of PreferencesForm::mainPrefsForm
-$form: the PreferencesForm
-$out: output page to render to, probably $wgOut
-
-'ResetPreferences': called at the end of PreferencesForm::resetPrefs
-$form: the PreferencesForm
-$user: the User object to load preferences from
-
'RevisionInsertComplete': called after a revision is inserted into the DB
&$revision: the Revision
$data: the data stored in old_text. The meaning depends on $flags: if external
@@ -1113,30 +1290,50 @@ $data: the data stored in old_text. The meaning depends on $flags: if external
$flags: a comma-delimited list of strings representing the options used. May
include: utf8 (this will always be set for new revisions); gzip; external.
-'SavePreferences': called at the end of PreferencesForm::savePreferences;
- returning false prevents the preferences from being saved.
-$form: the PreferencesForm
-$user: the User object to save preferences to
-$message: change this to set an error message (ignored if the hook does not return false)
-$old: old preferences of the user
-
'SearchUpdate': Prior to search update completion
$id : Page id
$namespace : Page namespace
$title : Page title
$text : Current text being indexed
-'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches
+'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before the normal operations
+$allSearchTerms : Array of the search terms in all content languages
+&$titleResult : Outparam; the value to return. A Title object or null.
+
+'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches if nothing was found
$term : Search term string
&$title : Outparam; set to $title object and return false for a match
+'SearchGetNearMatchComplete': A chance to modify exact-title-matches in "go" searches
+$term : Search term string
+&$title : Current Title object that is being returned (null if none found).
+
+'SearchEngineReplacePrefixesComplete': Run after SearchEngine::replacePrefixes().
+$searchEngine : The SearchEngine object. Users of this hooks will be interested
+in the $searchEngine->namespaces array.
+$query : Original query.
+&$parsed : Resultant query with the prefixes stripped.
+
+'SearchableNamespaces': An option to modify which namespaces are searchable.
+&$arr : Array of namespaces ($nsId => $name) which will be used.
+
'SetupAfterCache': Called in Setup.php, after cache objects are set
+'ShowMissingArticle': Called when generating the output for a non-existent page
+$article: The article object corresponding to the page
+
'ShowRawCssJs': Customise the output of raw CSS and JavaScript in page views
$text: Text being shown
$title: Title of the custom script/stylesheet page
$output: Current OutputPage object
+'ShowSearchHitTitle': Customise display of search hit title/link.
+&$title: Title to link to
+&$text: Text to use for the link
+$result: The search result
+$terms: The search terms entered
+$page: The SpecialSearch object.
+
'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
&$siteNotice: HTML returned as the sitenotice
Return true to allow the normal method of notice selection/rendering to work,
@@ -1162,17 +1359,27 @@ $skin: Skin object
&$bar: Sidebar contents
Modify $bar to add or modify sidebar portlets.
+'SkinCopyrightFooter': Allow for site and per-namespace customization of copyright notice.
+$title: displayed page title
+$type: 'normal' or 'history' for old/diff views
+&$msg: overridable message; usually 'copyright' or 'history_copyright'. This message must be in HTML format, not wikitext!
+&$link: overridable HTML link to be passed into the message as $1
+
'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
$skin: Skin object
&$subpages: Subpage links HTML
-If false is returned $subpages will be used instead of the HTML subPageSubtitle() generates.
-If true is returned, $subpages will be ignored and the rest of subPageSubtitle() will run.
+If false is returned $subpages will be used instead of the HTML
+subPageSubtitle() generates.
+If true is returned, $subpages will be ignored and the rest of
+subPageSubtitle() will run.
-'SkinTemplateBuildContentActionUrlsAfterSpecialPage': after the single tab when showing a special page
+'SkinTemplateBuildContentActionUrlsAfterSpecialPage': after the single tab
+when showing a special page
$sktemplate: SkinTemplate object
$content_actions: array of tabs
-'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the "permanent link" tab
+'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the
+"permanent link" tab
$sktemplate: SkinTemplate object
$nav_urls: array of tabs
@@ -1181,7 +1388,13 @@ $nav_urls: array of tabs
[See http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/examples/Content_action.php
for an example]
-'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage() starts page output
+'SkinTemplateNavigation': Alter the structured navigation links in SkinTemplates
+&$sktemplate: SkinTemplate object
+&$links: Structured navigation links
+This is used to alter the navigation for skins which use buildNavigationUrls such as Vector.
+
+'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage()
+starts page output
&$sktemplate: SkinTemplate object
&$tpl: Template engine object
@@ -1193,44 +1406,56 @@ $res: set to true to prevent active tabs
$out: Css to return
'SkinTemplateTabAction': Override SkinTemplate::tabAction().
- You can either create your own array, or alter the parameters for the normal one.
-&$this: The SkinTemplate instance.
-$title: Title instance for the page.
-$message: Visible label of tab.
-$selected: Whether this is a selected tab.
+You can either create your own array, or alter the parameters for
+the normal one.
+&$sktemplate: The SkinTemplate instance.
+$title: Title instance for the page.
+$message: Visible label of tab.
+$selected: Whether this is a selected tab.
$checkEdit: Whether or not the action=edit query should be added if appropriate.
-&$classes: Array of CSS classes to apply.
-&$query: Query string to add to link.
-&$text: Link text.
-&$result: Complete assoc. array if you want to return true.
+&$classes: Array of CSS classes to apply.
+&$query: Query string to add to link.
+&$text: Link text.
+&$result: Complete assoc. array if you want to return true.
'SkinTemplateTabs': called when finished to build the actions tabs
$sktemplate: SkinTemplate object
$content_actions: array of tabs
-'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have been rendered (useful for adding more)
+'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have
+been rendered (useful for adding more)
$tools: array of tools
+'SoftwareInfo': Called by Special:Version for returning information about
+the software
+$software: The array of software in format 'name' => 'version'.
+ See SpecialVersion::softwareInformation()
+
'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
$id: User identifier
-'SpecialListusersDefaultQuery': called right before the end of UsersPager::getDefaultQuery()
+'SpecialListusersDefaultQuery': called right before the end of
+UsersPager::getDefaultQuery()
$pager: The UsersPager instance
$query: The query array to be returned
-'SpecialListusersFormatRow': called right before the end of UsersPager::formatRow()
+'SpecialListusersFormatRow': called right before the end of
+UsersPager::formatRow()
$item: HTML to be returned. Will be wrapped in <li></li> after the hook finishes
$row: Database row object
-'SpecialListusersHeader': called before closing the <fieldset> in UsersPager::getPageHeader()
+'SpecialListusersHeader': called before closing the <fieldset> in
+UsersPager::getPageHeader()
$pager: The UsersPager instance
$out: The header HTML
-'SpecialListusersHeaderForm': called before adding the submit button in UsersPager::getPageHeader()
+'SpecialListusersHeaderForm': called before adding the submit button in
+UsersPager::getPageHeader()
$pager: The UsersPager instance
$out: The header HTML
-'SpecialListusersQueryInfo': called right before the end of UsersPager::getQueryInfo()
+'SpecialListusersQueryInfo': called right before the end of
+UsersPager::getQueryInfo()
$pager: The UsersPager instance
$query: The query array to be returned
@@ -1239,31 +1464,59 @@ $movePage: MovePageForm object
$oldTitle: old title (object)
$newTitle: new title (object)
-'SpecialPage_initList': called when setting up SpecialPage::$mList, use this hook to remove a core special page
+'SpecialPage_initList': called when setting up SpecialPage::$mList, use this
+hook to remove a core special page
$list: list (array) of core special pages
-'SpecialRecentChangesPanel': called when building form options in SpecialRecentChanges
+'SpecialRandomGetRandomTitle': called during the execution of Special:Random,
+use this to change some selection criteria or substitute a different title
+&$randstr: The random number from wfRandom()
+&$isRedir: Boolean, whether to select a redirect or non-redirect
+&$namespaces: An array of namespace indexes to get the title from
+&$extra: An array of extra SQL statements
+&$title: If the hook returns false, a Title object to use instead of the
+result from the normal query
+
+'SpecialRecentChangesPanel': called when building form options in
+SpecialRecentChanges
&$extraOpts: array of added items, to which can be added
$opts: FormOptions for this request
-'SpecialRecentChangesQuery': called when building sql query for SpecialRecentChanges
+'SpecialRecentChangesQuery': called when building sql query for
+SpecialRecentChanges
&$conds: array of WHERE conditionals for query
&$tables: array of tables to be queried
&$join_conds: join conditions for the tables
$opts: FormOptions for this request
+&$query_options: array of options for the database request
-'SpecialSearchNogomatch': called when user clicked the "Go" button but the target doesn't exist
+'SpecialSearchNogomatch': called when user clicked the "Go" button but the
+target doesn't exist
$title: title object generated from the text entred by the user
-'SpecialSearchResults': called before search result display when there are matches
+'SpecialSearchProfiles': allows modification of search profiles
+&$profiles: profiles, which can be modified.
+
+'SpecialSearchResults': called before search result display when there
+are matches
$term: string of search term
&$titleMatches: empty or SearchResultSet object
&$textMatches: empty or SearchResultSet object
-'SpecialSearchNoResults': called before search result display when there are no matches
+'SpecialSearchNoResults': called before search result display when there are
+no matches
$term: string of search term
-'SpecialVersionExtensionTypes': called when generating the extensions credits, use this to change the tables headers
+'SpecialStatsAddExtra': add extra statistic at the end of Special:Statistics
+&$extraStats: Array to save the new stats
+ ( $extraStats['<name of statistic>'] => <value>; )
+
+'SpecialUploadComplete': Called after successfully uploading a file from
+Special:Upload
+$form: The SpecialUpload object
+
+'SpecialVersionExtensionTypes': called when generating the extensions credits,
+use this to change the tables headers
$extTypes: associative array of extensions types
'SpecialWatchlistQuery': called when building sql query for SpecialWatchlist
@@ -1272,10 +1525,16 @@ $extTypes: associative array of extensions types
&$join_conds: join conditions for the tables
&$fields: array of query fields
-'TitleArrayFromResult': called when creating an TitleArray object from a database result
+'TitleArrayFromResult': called when creating an TitleArray object from a
+database result
&$titleArray: set this to an object to override the default object returned
$res: database result used to create the object
+'TitleGetRestrictionTypes': Allows extensions to modify the types of protection
+ that can be applied.
+$title: The title in question.
+&$types: The types of protection available.
+
'TitleMoveComplete': after moving an article (title)
$old: old title
$nt: new title
@@ -1306,61 +1565,87 @@ $article: article object that was watched
'UploadForm:initial': before the upload form is generated
$form: UploadForm object
-You might set the member-variables $uploadFormTextTop and
+You might set the member-variables $uploadFormTextTop and
$uploadFormTextAfterSummary to inject text (HTML) either before
or after the editform.
-'UploadForm:BeforeProcessing': at the beginning of processUpload()
+'UploadForm:BeforeProcessing': DEPRECATED! at the beginning of processUpload()
$form: UploadForm object
Lets you poke at member variables like $mUploadDescription before the
file is saved.
+'UploadCreateFromRequest': when UploadBase::createFromRequest has been called
+$type: (string) the requested upload type
+&$className: the class name of the Upload instance to be created
+
+'UploadComplete': when Upload completes an upload
+&$upload: an UploadBase child instance
+
+'UploadFormInitDescriptor': after the descriptor for the upload form as been
+ assembled
+$descriptor: (array) the HTMLForm descriptor
+
+'UploadFormSourceDescriptors': after the standard source inputs have been
+added to the descriptor
+$descriptor: (array) the HTMLForm descriptor
+
'UploadVerification': additional chances to reject an uploaded file
string $saveName: destination file name
string $tempName: filesystem path to the temporary file for checks
-string &$error: output: HTML error to show if upload canceled by returning false
+string &$error: output: message key for message to show if upload canceled
+ by returning false. May also be an array, where the first element
+ is the message key and the remaining elements are used as parameters to
+ the message.
'UploadComplete': Upon completion of a file upload
-$uploadForm: Upload form object. File can be accessed by $uploadForm->mLocalFile.
+$uploadBase: UploadBase (or subclass) object. File can be accessed by
+ $uploadBase->getLocalFile().
-'User::mailPasswordInternal': before creation and mailing of a user's new temporary password
+'User::mailPasswordInternal': before creation and mailing of a user's new
+temporary password
$user: the user who sent the message out
$ip: IP of the user who sent the message out
$u: the account whose new password will be set
-'UserArrayFromResult': called when creating an UserArray object from a database result
+'UserArrayFromResult': called when creating an UserArray object from a
+database result
&$userArray: set this to an object to override the default object returned
$res: database result used to create the object
'userCan': To interrupt/advise the "user can do X to Y article" check.
- If you want to display an error message, try getUserPermissionsErrors.
+If you want to display an error message, try getUserPermissionsErrors.
$title: Title object being checked against
$user : Current user object
$action: Action being checked
$result: Pointer to result returned if hook returns false. If null is returned,
- userCan checks are continued by internal code.
+ userCan checks are continued by internal code.
'UserCanSendEmail': To override User::canSendEmail() permission check
$user: User (object) whose permission is being checked
&$canSend: bool set on input, can override on output
-
-'UserClearNewTalkNotification': called when clearing the "You have new messages!" message, return false to not delete it
+'UserClearNewTalkNotification': called when clearing the
+"You have new messages!" message, return false to not delete it
$user: User (object) that'll clear the message
-'UserComparePasswords': called when checking passwords, return false to override the default password checks
+'UserComparePasswords': called when checking passwords, return false to
+override the default password checks
&$hash: String of the password hash (from the database)
&$password: String of the plaintext password the user entered
-&$userId: Integer of the user's ID or Boolean false if the user ID was not supplied
-&$result: If the hook returns false, this Boolean value will be checked to determine if the password was valid
+&$userId: Integer of the user's ID or Boolean false if the user ID was not
+ supplied
+&$result: If the hook returns false, this Boolean value will be checked to
+ determine if the password was valid
'UserCreateForm': change to manipulate the login form
$template: SimpleTemplate instance for the form
-'UserCryptPassword': called when hashing a password, return false to implement your own hashing method
+'UserCryptPassword': called when hashing a password, return false to implement
+your own hashing method
&$password: String of the plaintext password to encrypt
&$salt: String of the password salt or Boolean false if no salt is provided
-&$wgPasswordSalt: Boolean of whether the salt is used in the default hashing method
+&$wgPasswordSalt: Boolean of whether the salt is used in the default
+ hashing method
&$hash: If the hook returns false, this String will be used as the hash
'UserEffectiveGroups': Called in User::getEffectiveGroups()
@@ -1374,25 +1659,39 @@ $user: User to get groups for
$user: User object
&$email: email, change this to override local email
-'UserGetEmailAuthenticationTimestamp': called when getting the timestamp of email authentification
+'UserGetEmailAuthenticationTimestamp': called when getting the timestamp of
+email authentification
$user: User object
-&$timestamp: timestamp, change this to override local email authentification timestamp
+&$timestamp: timestamp, change this to override local email authentification
+ timestamp
'UserGetImplicitGroups': Called in User::getImplicitGroups()
&$groups: List of implicit (automatically-assigned) groups
'UserGetReservedNames': allows to modify $wgReservedUsernames at run time
-*&$reservedUsernames: $wgReservedUsernames
+&$reservedUsernames: $wgReservedUsernames
'UserGetRights': Called in User::getRights()
$user: User to get rights for
&$rights: Current rights
+'UserIsBlockedFrom': Check if a user is blocked from a specific page (for specific block
+ exemptions).
+$user: User in question
+$title: Title of the page in question
+&$blocked: Out-param, whether or not the user is blocked from that page.
+&$allowUsertalk: If the user is blocked, whether or not the block allows users to edit their
+ own user talk pages.
+
'UserIsBlockedGlobally': Check if user is blocked on all wikis.
&$user: User object
$ip: User's IP address
&$blocked: Whether the user is blocked, to be modified by the hook
+'UserLoadAfterLoadFromSession': called to authenticate users on
+external/environmental means; occurs after session is loaded
+$user: user object being loaded
+
'UserLoadDefaults': called when loading a default user
$user: user object
$name: user name
@@ -1401,23 +1700,31 @@ $name: user name
$user: user object
&$s: database query object
-'UserLoadFromSession': called to authenticate users on external/environmental means; occurs before session is loaded
+'UserLoadFromSession': called to authenticate users on external/environmental
+means; occurs before session is loaded
$user: user object being loaded
-&$result: set this to a boolean value to abort the normal authentification process
+&$result: set this to a boolean value to abort the normal authentification
+ process
-'UserLoadAfterLoadFromSession': called to authenticate users on external/environmental means; occurs after session is loaded
-$user: user object being loaded
+'UserLoadOptions': when user options/preferences are being loaded from
+the database.
+$user: User object
+&$options: Options, can be modified.
'UserLoginComplete': after a user has logged in
$user: the user object that was created on login
$inject_html: Any HTML to inject after the "logged in" message.
-
+
'UserLoginForm': change to manipulate the login form
$template: SimpleTemplate instance for the form
+'UserLoginMailPassword': Block users from emailing passwords
+$name: the username to email the password of.
+&$error: out-param - the error message to return.
+
'UserLogout': before a user logs out
$user: the user object that is about to be logged out
-
+
'UserLogoutComplete': after a user has logged out
$user: the user object _after_ logout (won't have name, ID, etc.)
$inject_html: Any HTML to inject after the "logged out" message.
@@ -1428,24 +1735,18 @@ $user : User object that was changed
$add : Array of strings corresponding to groups added
$remove: Array of strings corresponding to groups removed
-'UserrightsChangeableGroups': allows modification of the groups a user may add or remove via Special:UserRights
-$userrights : UserrightsPage object
-$user : User object of the current user
-$addergroups : Array of groups that the user is in
-&$groups : Array of groups that can be added or removed. In format of
- array(
- 'add' => array( addablegroups ),
- 'remove' => array( removablegroups ),
- 'add-self' => array( addablegroups to self ),
- 'remove-self' => array( removable groups from self )
- )
-'UserRetrieveNewTalks': called when retrieving "You have new messages!" message(s)
+'UserRetrieveNewTalks': called when retrieving "You have new messages!"
+message(s)
$user: user retrieving new talks messages
$talks: array of new talks page(s)
'UserSaveSettings': called when saving user settings
$user: User object
+'UserSaveOptions': Called just before saving user preferences/options.
+$user: User object
+&$options: Options, modifiable
+
'UserSetCookies': called when setting user cookies
$user: User object
&$session: session array, will be added to $_SESSION
@@ -1455,14 +1756,18 @@ $user: User object
$user: User object
&$email: new email, change this to override new email address
-'UserSetEmailAuthenticationTimestamp': called when setting the timestamp of email authentification
+'UserSetEmailAuthenticationTimestamp': called when setting the timestamp
+of email authentification
$user: User object
-&$timestamp: new timestamp, change this to override local email authentification timestamp
+&$timestamp: new timestamp, change this to override local email
+authentification timestamp
-'UserToggles': called when initialising User::$mToggles, use this to add new toggles
+'UserToggles': called when initialising User::$mToggles, use this to add
+new toggles
$toggles: array of toggles to add
-'WantedPages::getSQL': called in WantedPagesPage::getSQL(), can be used to alter the SQL query which gets the list of wanted pages
+'WantedPages::getSQL': called in WantedPagesPage::getSQL(), can be used to
+alter the SQL query which gets the list of wanted pages
&$wantedPages: WantedPagesPage object
&$sql: raw SQL query used to get the list of wanted pages
@@ -1474,8 +1779,30 @@ $article: article object to be watched
$user: user that watched
$article: article object watched
-'wgQueryPages': called when initialising $wgQueryPages, use this to add new query pages to be updated with maintenance/updateSpecialPages.php
+'WikiExporter::dumpStableQuery': Get the SELECT query for "stable" revisions
+dumps
+One, and only one hook should set this, and return false.
+&$tables: Database tables to use in the SELECT query
+&$opts: Options to use for the query
+&$join: Join conditions
+
+'wgQueryPages': called when initialising $wgQueryPages, use this to add new
+query pages to be updated with maintenance/updateSpecialPages.php
$query: $wgQueryPages itself
+'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow extra
+ metadata to be added.
+$obj: The XmlDumpWriter object.
+&$out: The output string.
+$row: The database row for the page.
+$title: The title of the page.
+
+'XmlDumpWriterWriteRevision': Called at the end of a revision in an XML dump, to add extra
+ metadata.
+$obj: The XmlDumpWriter object.
+&$out: The text being output.
+$row: The database row for the revision.
+$text: The revision text.
+
More hooks might be available but undocumented, you can execute
./maintenance/findhooks.php to find hidden one.
diff --git a/docs/maintenance.txt b/docs/maintenance.txt
new file mode 100644
index 00000000..039c71c5
--- /dev/null
+++ b/docs/maintenance.txt
@@ -0,0 +1,57 @@
+Prior to version 1.16, maintenance scripts were a hodgepodge of code that
+had no cohesion or formal method of action. Beginning in 1.16, maintenance
+scripts have been cleaned up to use a unified class.
+
+1. Directory structure
+2. How to run a script
+3. How to write your own
+
+1. DIRECTORY STRUCTURE
+ The /maintenance directory of a MediaWiki installation contains several
+subdirectories, all of which have unique purposes.
+
+2. HOW TO RUN A SCRIPT
+ Ridiculously simple, just call 'php someScript.php' that's in the top-
+level /maintenance directory.
+
+Example:
+ php clear_stats.php
+
+The following parameters are available to all maintenance scripts
+--help : Print a help message
+--quiet : Quiet non-error output
+--dbuser : The database user to use for the script (if needed)
+--dbpass : Same as above (if needed)
+--conf : Location of LocalSettings.php, if not default
+--wiki : For specifying the wiki ID
+--batch-size : If the script supports batch operations, do this many per batch
+
+3. HOW TO WRITE YOUR OWN
+Make a file in the maintenance directory called myScript.php or something.
+In it, write the following:
+
+==BEGIN==
+
+<?php
+
+require_once( "Maintenance.php" );
+
+class DemoMaint extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ }
+
+ public function execute() {
+ }
+}
+
+$maintClass = "DemoMaint";
+require_once( DO_MAINTENANCE );
+
+==END==
+
+That's it. In the execute() method, you have access to all of the normal
+MediaWiki functions, so you can get a DB connection, use the cache, etc.
+For full docs on the Maintenance class, see the auto-generated docs at
+http://svn.wikimedia.org/doc/classMaintenance.html
diff --git a/docs/memcached.txt b/docs/memcached.txt
index 2a904872..da6add66 100644
--- a/docs/memcached.txt
+++ b/docs/memcached.txt
@@ -56,7 +56,7 @@ To start the daemon manually, use something like:
memcached -d -l 127.0.0.1 -p 11211 -m 64
(to run in daemon mode, accessible only via loopback interface,
-on port 11000, using up to 64MB of memory)
+on port 11211, using up to 64MB of memory)
In your LocalSettings.php file, set:
@@ -71,8 +71,8 @@ it has twice the memory of the others and you want to spread
usage evenly), make its entry a subarray:
$wgMemCachedServers = array(
- "127.0.0.1:11000", # one gig on this box
- array("192.168.0.1:11000", 2 ) # two gigs on the other box
+ "127.0.0.1:11211", # one gig on this box
+ array("192.168.0.1:11211", 2 ) # two gigs on the other box
);
== PHP client for memcached ==
@@ -219,12 +219,15 @@ Special:Allpages:
Special:Recentchanges (feed):
stored in: $messageMemc
- key: $wgDBname:rcfeed:$format:limit:$imit:minor:$hideminor and
+ key: $wgDBname:rcfeed:$format:$limit:$hideminor:$target and
rcfeed:$format:timestamp
- ex: wikidb:rcfeed:rss:limit:50:minor:0 and rcfeed:rss:timestamp
+ ex: wikidb:rcfeed:rss:50:: and rcfeed:rss:timestamp
stores: xml output of feed
expiry: one day
- clear by: calling Special:Recentchanges?action=purge
+ clear by: maintenance/rebuildrecentchanges.php script, or
+ calling Special:Recentchanges?action=purge&feed=rss,
+ Special:Recentchanges?action=purge&feed=atom,
+ but note need $wgGroupPermissions[...]['purge'] permission.
Statistics:
controlled by: $wgStatsMethod
diff --git a/docs/php-memcached/ChangeLog b/docs/php-memcached/ChangeLog
index 86792f60..553aaa19 100644
--- a/docs/php-memcached/ChangeLog
+++ b/docs/php-memcached/ChangeLog
@@ -1,45 +1,28 @@
-Release 1.0.10
---------------
-* bug fix: changes hashing function to crc32, sprintf %u
-* feature: optional compression
+09 Oct 2003:
+ 1455 UTC:
+ Released version 0.1.2
+ Fixed bug in get_multi; when debugging was enabled but no keys were fetched,
+ script execution would halt (uninitialized $val)
-Release 1.0.9
--------------
-* protocol parsing bug
+08 Oct 2003:
+ 1848 UTC:
+ Released version 0.1.1
-Release 1.0.8
--------------
-* whitespace/punctuation/wording cleanups
+ 1825 UTC:
+ Fixed bug in memcached::memcached; was attempting to initialize
+ memcached::_dead_sock (function) instead of memcached::_dead_hosts
+ (oops!)
-Release 1.0.7
--------------
-* added 3 functions which handle error reporting
- error() - returns error number of last error generated, else returns 0
- error_string() - returns a string description of error number retuned
- error_clear() - clears the last error number and error string
-* removed call to preg_match() in _loaditems()
-* only non-scalar values are serialize() before being
- sent to the server
-* added the optional timestamp argument for delete()
- read Documentation file for details
-* PHPDocs/PEAR style comments added
-* abstract debugging (Brion Vibber <brion@pobox.com>)
-
-Release 1.0.6
--------------
-* removed all array_push() calls
-* applied patch provided by Stuart Herbert<stuart@gentoo.org>
- corrects possible endless loop. Available at
- http://bugs.gentoo.org/show_bug.cgi?id=25385
-* fixed problem with storing large binary files
-* added more error checking, specifically on all socket functions
-* added support for the INCR and DECR commands
- which increment or decrement a value stored in MemCached
-* Documentation removed from source and is now available
- in the file Documentation
+ 1812 UTC:
+ Fixed memcached::enable_compression;
+ thanks to Justin Matlock <jmat@shutdown.net> for pointing it out
+
+07 Oct 2003:
+ 1635 UTC:
+ Fixed call to memcached::_dead_sock in memcached::delete
+ Added documentation for class variable $_buckets
+
+06 Oct 2003:
+ 2039 UTC:
+ Initial release of memcached-client-php; version 0.1
-Release 1.0.4
--------------
-* initial release, version numbers kept
- in sync with MemCached version
-* capable of storing any datatype in MemCached
diff --git a/docs/php-memcached/README b/docs/php-memcached/README
new file mode 100644
index 00000000..07812dda
--- /dev/null
+++ b/docs/php-memcached/README
@@ -0,0 +1 @@
+HTML documentation is under http://phpca.cytherianage.net/memcached/doc/
diff --git a/docs/scripts.txt b/docs/scripts.txt
index f8228a46..2027d176 100644
--- a/docs/scripts.txt
+++ b/docs/scripts.txt
@@ -35,10 +35,9 @@ Primary scripts:
to force the profiler to save the informations in the database and apply the
maintenance/archives/patch-profiling.sql patch to the database.
- To enable the profileinfo.php itself, you'll need to create the
- AdminSettings.php file (see AdminSettings.sample for more information) and
- set $wgEnableProfileInfo to true in that file. See also
- http://www.mediawiki.org/wiki/How_to_debug#Profiling.
+ To enable the profileinfo.php itself, you'll need to set $wgDBadminuser
+ and $wgDBadminpassword in your LocalSettings.php, as well as $wgEnableProfileInfo
+ See also http://www.mediawiki.org/wiki/How_to_debug#Profiling.
redirect.php
Script that only redirect to the article passed in the wpDropdown parameter
diff --git a/docs/skin.txt b/docs/skin.txt
index 524a0397..a42369ce 100644
--- a/docs/skin.txt
+++ b/docs/skin.txt
@@ -47,7 +47,7 @@ These can also be customised on a per-user basis, by editing
This feature has led to a wide variety of "user styles" becoming available,
which change the appearance of Monobook or MySkin:
-http://meta.wikimedia.org/wiki/Gallery_of_user_styles
+http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles
If you want a different look for your wiki, that gallery is a good place to start.
diff --git a/docs/upload.txt b/docs/upload.txt
index e92ca786..a0f0a594 100644
--- a/docs/upload.txt
+++ b/docs/upload.txt
@@ -1,40 +1,2 @@
-Special:Upload:
-
-wfSpecialUpload
- new UploadForm
- mUpload = new UploadFrom...
- execute()
- $wgEnableUploads
- isAllowed(upload)
- isBlocked()
- wfReadOnly()
- processUpload()
- internalProcessUpload()
- wfRunHooks(UploadForm:BeforeProcessing)
- mUpload->getTitle()
- wfStripIllegalFilenameChars
- splitExtensions()
- checkFileExtension()
- Title::makeTitleSafe
- getUserPermissionsErrors(edit; upload; create)
- mUpload->verifyUpload()
- empty(mFileSize)
- getTitle()
- checkOverwrite()
- verifyFile()
- checkMacBinary()
- wfRunHooks(UploadVerification)
- if(!ignoreWarning) mUpload->checkWarnings()
- getInitialPageText()
- mUpload->performUpload()
- mLocalFile->upload()
- if(isGood() && $watch) addWatch()
- if(isGood()) wfRunHooks(UploadComplete)
- wfRunHooks(SpecialUploadComplete)
-
-Changes:
- * "Your file will be renamed to $1" check now done on the result of
- Title::makeTitleSafe instead of filteredName
- * getExistWarning only really does existence checks
- * Other stuff forgotten to be documented
- \ No newline at end of file
+This document describes how the current uploading system is build up and how
+custom backends can be built. (At least someday it will).
diff --git a/extensions/FluxBBAuthPlugin.php b/extensions/FluxBBAuthPlugin.php
index 0b1319eb..17bc2f24 100644
--- a/extensions/FluxBBAuthPlugin.php
+++ b/extensions/FluxBBAuthPlugin.php
@@ -4,7 +4,7 @@ $wgHooks['isValidPassword'][] = 'FluxBBAuthPlugin::isValidPassword';
$wgExtensionCredits['other'][] = array(
'name' => 'FluxBBAuthPlugin',
- 'version' => '1.0',
+ 'version' => '1.1',
'description' => 'Use FluxBB accounts in MediaWiki',
'author' => 'Pierre Schmitz',
'url' => 'https://users.archlinux.de/~pierre/'
@@ -58,7 +58,7 @@ public function authenticate( $username, $password ) {
return $authenticated;
}
-public function modifyUITemplate( &$template ) {
+public function modifyUITemplate( &$template, &$type ) {
$template->set( 'usedomain', false );
$template->set('link', 'Um Dich hier anzumelden, nutze Deine Konto-Daten aus dem <a href="https://bbs.archlinux.de/">archlinux.de-Forum</a>.');
}
@@ -79,6 +79,17 @@ public function autoCreate() {
return true;
}
+public function allowPropChange( $prop = '' ) {
+ if( $prop == 'realname' ) {
+ return false;
+ } elseif( $prop == 'emailaddress' ) {
+ return false;
+ } elseif( $prop == 'nickname' ) {
+ return false;
+ } else {
+ return true;
+ }
+}
public function allowPasswordChange() {
return false;
}
diff --git a/img_auth.php b/img_auth.php
index e5d8d888..bc4464d4 100644
--- a/img_auth.php
+++ b/img_auth.php
@@ -3,118 +3,112 @@
/**
* Image authorisation script
*
- * To use this:
+ * To use this, see http://www.mediawiki.org/wiki/Manual:Image_Authorization
*
* - Set $wgUploadDirectory to a non-public directory (not web accessible)
* - Set $wgUploadPath to point to this file
*
- * Your server needs to support PATH_INFO; CGI-based configurations
- * usually don't.
+ * Optional Parameters
+ *
+ * - Set $wgImgAuthDetails = true if you want the reason the access was denied messages to be displayed
+ * instead of just the 403 error (doesn't work on IE anyway), otherwise will only appear in error logs
+ * - Set $wgImgAuthPublicTest false if you don't want to just check and see if all are public
+ * must be set to false if using specific restrictions such as LockDown or NSFileRepo
+ *
+ * For security reasons, you usually don't want your user to know *why* access was denied, just that it was.
+ * If you want to change this, you can set $wgImgAuthDetails to 'true' in localsettings.php and it will give the user the reason
+ * why access was denied.
+ *
+ * Your server needs to support PATH_INFO; CGI-based configurations usually don't.
*
* @file
- */
-
+ *
+ **/
+
define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
require_once( dirname( __FILE__ ) . '/includes/WebStart.php' );
wfProfileIn( 'img_auth.php' );
require_once( dirname( __FILE__ ) . '/includes/StreamFile.php' );
-$perms = User::getGroupPermissions( array( '*' ) );
-if ( in_array( 'read', $perms, true ) ) {
- wfDebugLog( 'img_auth', 'Public wiki' );
- wfPublicError();
+// See if this is a public Wiki (no protections)
+if ( $wgImgAuthPublicTest
+ && in_array( 'read', User::getGroupPermissions( array( '*' ) ), true ) )
+{
+ wfForbidden('img-auth-accessdenied','img-auth-public');
}
// Extract path and image information
-if( !isset( $_SERVER['PATH_INFO'] ) ) {
- wfDebugLog( 'img_auth', 'Missing PATH_INFO' );
- wfForbidden();
-}
+if( !isset( $_SERVER['PATH_INFO'] ) )
+ wfForbidden('img-auth-accessdenied','img-auth-nopathinfo');
$path = $_SERVER['PATH_INFO'];
$filename = realpath( $wgUploadDirectory . $_SERVER['PATH_INFO'] );
$realUpload = realpath( $wgUploadDirectory );
-wfDebugLog( 'img_auth', "\$path is {$path}" );
-wfDebugLog( 'img_auth', "\$filename is {$filename}" );
// Basic directory traversal check
-if( substr( $filename, 0, strlen( $realUpload ) ) != $realUpload ) {
- wfDebugLog( 'img_auth', 'Requested path not in upload directory' );
- wfForbidden();
-}
+if( substr( $filename, 0, strlen( $realUpload ) ) != $realUpload )
+ wfForbidden('img-auth-accessdenied','img-auth-notindir');
// Extract the file name and chop off the size specifier
// (e.g. 120px-Foo.png => Foo.png)
$name = wfBaseName( $path );
if( preg_match( '!\d+px-(.*)!i', $name, $m ) )
$name = $m[1];
-wfDebugLog( 'img_auth', "\$name is {$name}" );
+
+// Check to see if the file exists
+if( !file_exists( $filename ) )
+ wfForbidden('img-auth-accessdenied','img-auth-nofile',$filename);
+
+// Check to see if tried to access a directory
+if( is_dir( $filename ) )
+ wfForbidden('img-auth-accessdenied','img-auth-isdir',$filename);
+
$title = Title::makeTitleSafe( NS_FILE, $name );
-if( !$title instanceof Title ) {
- wfDebugLog( 'img_auth', "Unable to construct a valid Title from `{$name}`" );
- wfForbidden();
-}
-$title = $title->getPrefixedText();
-// Check the whitelist if needed
-if( !$wgUser->getId() && ( !is_array( $wgWhitelistRead ) || !in_array( $title, $wgWhitelistRead ) ) ) {
- wfDebugLog( 'img_auth', "Not logged in and `{$title}` not in whitelist." );
- wfForbidden();
-}
+// See if could create the title object
+if( !$title instanceof Title )
+ wfForbidden('img-auth-accessdenied','img-auth-badtitle',$name);
-if( !file_exists( $filename ) ) {
- wfDebugLog( 'img_auth', "`{$filename}` does not exist" );
- wfForbidden();
-}
-if( is_dir( $filename ) ) {
- wfDebugLog( 'img_auth', "`{$filename}` is a directory" );
- wfForbidden();
-}
+// Run hook
+if (!wfRunHooks( 'ImgAuthBeforeStream', array( &$title, &$path, &$name, &$result ) ) )
+ wfForbidden($result[0],$result[1],array_slice($result,2));
+
+// Check user authorization for this title
+// UserCanRead Checks Whitelist too
+if( !$title->userCanRead() )
+ wfForbidden('img-auth-accessdenied','img-auth-noread',$name);
// Stream the requested file
-wfDebugLog( 'img_auth', "Streaming `{$filename}`" );
+wfDebugLog( 'img_auth', "Streaming `".$filename."`." );
wfStreamFile( $filename, array( 'Cache-Control: private', 'Vary: Cookie' ) );
wfLogProfilingData();
/**
- * Issue a standard HTTP 403 Forbidden header and a basic
- * error message, then end the script
+ * Issue a standard HTTP 403 Forbidden header ($msg1-a message index, not a message) and an
+ * error message ($msg2, also a message index), (both required) then end the script
+ * subsequent arguments to $msg2 will be passed as parameters only for replacing in $msg2
*/
-function wfForbidden() {
+function wfForbidden($msg1,$msg2) {
+ global $wgImgAuthDetails;
+ $args = func_get_args();
+ array_shift( $args );
+ array_shift( $args );
+ $MsgHdr = htmlspecialchars(wfMsg($msg1));
+ $detailMsg = (htmlspecialchars(wfMsg(($wgImgAuthDetails ? $msg2 : 'badaccess-group0'),$args)));
+ wfDebugLog('img_auth', "wfForbidden Hdr:".wfMsgExt( $msg1, array('language' => 'en'))." Msg: ".
+ wfMsgExt($msg2,array('language' => 'en'),$args));
header( 'HTTP/1.0 403 Forbidden' );
- header( 'Vary: Cookie' );
+ header( 'Cache-Control: no-cache' );
header( 'Content-Type: text/html; charset=utf-8' );
echo <<<ENDS
<html>
<body>
-<h1>Access Denied</h1>
-<p>You need to log in to access files on this server.</p>
+<h1>$MsgHdr</h1>
+<p>$detailMsg</p>
</body>
</html>
ENDS;
wfLogProfilingData();
exit();
}
-
-/**
- * Show a 403 error for use when the wiki is public
- */
-function wfPublicError() {
- header( 'HTTP/1.0 403 Forbidden' );
- header( 'Content-Type: text/html; charset=utf-8' );
- echo <<<ENDS
-<html>
-<body>
-<h1>Access Denied</h1>
-<p>The function of img_auth.php is to output files from a private wiki. This wiki
-is configured as a public wiki. For optimal security, img_auth.php is disabled in
-this case.
-</p>
-</body>
-</html>
-ENDS;
- wfLogProfilingData();
- exit;
-}
-
diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php
index c489cf1c..5bd7cfa4 100644
--- a/includes/AjaxDispatcher.php
+++ b/includes/AjaxDispatcher.php
@@ -7,7 +7,7 @@
* Handle ajax requests and send them to the proper handler.
*/
-if( !(defined( 'MEDIAWIKI' ) && $wgUseAjax ) ) {
+if ( !( defined( 'MEDIAWIKI' ) && $wgUseAjax ) ) {
die( 1 );
}
@@ -33,11 +33,11 @@ class AjaxDispatcher {
$this->mode = "";
- if (! empty($_GET["rs"])) {
+ if ( ! empty( $_GET["rs"] ) ) {
$this->mode = "get";
}
- if (!empty($_POST["rs"])) {
+ if ( !empty( $_POST["rs"] ) ) {
$this->mode = "post";
}
@@ -45,7 +45,7 @@ class AjaxDispatcher {
case 'get':
$this->func_name = isset( $_GET["rs"] ) ? $_GET["rs"] : '';
- if (! empty($_GET["rsargs"])) {
+ if ( ! empty( $_GET["rsargs"] ) ) {
$this->args = $_GET["rsargs"];
} else {
$this->args = array();
@@ -54,7 +54,7 @@ class AjaxDispatcher {
case 'post':
$this->func_name = isset( $_POST["rs"] ) ? $_POST["rs"] : '';
- if (! empty($_POST["rsargs"])) {
+ if ( ! empty( $_POST["rsargs"] ) ) {
$this->args = $_POST["rsargs"];
} else {
$this->args = array();
@@ -65,7 +65,7 @@ class AjaxDispatcher {
wfProfileOut( __METHOD__ );
return;
# Or we could throw an exception:
- #throw new MWException( __METHOD__ . ' called without any data (mode empty).' );
+ # throw new MWException( __METHOD__ . ' called without any data (mode empty).' );
}
@@ -83,9 +83,10 @@ class AjaxDispatcher {
if ( empty( $this->mode ) ) {
return;
}
+
wfProfileIn( __METHOD__ );
- if (! in_array( $this->func_name, $wgAjaxExportList ) ) {
+ if ( ! in_array( $this->func_name, $wgAjaxExportList ) ) {
wfDebug( __METHOD__ . ' Bad Request for unknown function ' . $this->func_name . "\n" );
wfHttpError( 400, 'Bad Request',
@@ -99,11 +100,11 @@ class AjaxDispatcher {
$func = $this->func_name;
}
try {
- $result = call_user_func_array($func, $this->args);
+ $result = call_user_func_array( $func, $this->args );
- if ( $result === false || $result === NULL ) {
- wfDebug( __METHOD__ . ' ERROR while dispatching '
- . $this->func_name . "(" . var_export( $this->args, true ) . "): "
+ if ( $result === false || $result === null ) {
+ wfDebug( __METHOD__ . ' ERROR while dispatching '
+ . $this->func_name . "(" . var_export( $this->args, true ) . "): "
. "no data returned\n" );
wfHttpError( 500, 'Internal Error',
@@ -111,7 +112,7 @@ class AjaxDispatcher {
}
else {
if ( is_string( $result ) ) {
- $result= new AjaxResponse( $result );
+ $result = new AjaxResponse( $result );
}
$result->sendHeaders();
@@ -120,12 +121,12 @@ class AjaxDispatcher {
wfDebug( __METHOD__ . ' dispatch complete for ' . $this->func_name . "\n" );
}
- } catch (Exception $e) {
- wfDebug( __METHOD__ . ' ERROR while dispatching '
- . $this->func_name . "(" . var_export( $this->args, true ) . "): "
- . get_class($e) . ": " . $e->getMessage() . "\n" );
+ } catch ( Exception $e ) {
+ wfDebug( __METHOD__ . ' ERROR while dispatching '
+ . $this->func_name . "(" . var_export( $this->args, true ) . "): "
+ . get_class( $e ) . ": " . $e->getMessage() . "\n" );
- if (!headers_sent()) {
+ if ( !headers_sent() ) {
wfHttpError( 500, 'Internal Error',
$e->getMessage() );
} else {
diff --git a/includes/AjaxFunctions.php b/includes/AjaxFunctions.php
index 1a9adbca..e3180e0a 100644
--- a/includes/AjaxFunctions.php
+++ b/includes/AjaxFunctions.php
@@ -4,7 +4,7 @@
* @ingroup Ajax
*/
-if( !defined( 'MEDIAWIKI' ) ) {
+if ( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
}
@@ -14,31 +14,31 @@ if( !defined( 'MEDIAWIKI' ) ) {
* Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
*
* @param $source String escaped with Javascript's escape() function
- * @param $iconv_to String destination character set will be used as second parameter
+ * @param $iconv_to String destination character set will be used as second parameter
* in the iconv function. Default is UTF-8.
* @return string
*/
-function js_unescape($source, $iconv_to = 'UTF-8') {
+function js_unescape( $source, $iconv_to = 'UTF-8' ) {
$decodedStr = '';
$pos = 0;
- $len = strlen ($source);
+ $len = strlen ( $source );
- while ($pos < $len) {
- $charAt = substr ($source, $pos, 1);
- if ($charAt == '%') {
+ while ( $pos < $len ) {
+ $charAt = substr ( $source, $pos, 1 );
+ if ( $charAt == '%' ) {
$pos++;
- $charAt = substr ($source, $pos, 1);
- if ($charAt == 'u') {
+ $charAt = substr ( $source, $pos, 1 );
+ if ( $charAt == 'u' ) {
// we got a unicode character
$pos++;
- $unicodeHexVal = substr ($source, $pos, 4);
- $unicode = hexdec ($unicodeHexVal);
- $decodedStr .= code2utf($unicode);
+ $unicodeHexVal = substr ( $source, $pos, 4 );
+ $unicode = hexdec ( $unicodeHexVal );
+ $decodedStr .= code2utf( $unicode );
$pos += 4;
} else {
// we have an escaped ascii character
- $hexVal = substr ($source, $pos, 2);
- $decodedStr .= chr (hexdec ($hexVal));
+ $hexVal = substr ( $source, $pos, 2 );
+ $decodedStr .= chr ( hexdec ( $hexVal ) );
$pos += 2;
}
} else {
@@ -47,8 +47,8 @@ function js_unescape($source, $iconv_to = 'UTF-8') {
}
}
- if ($iconv_to != "UTF-8") {
- $decodedStr = iconv("UTF-8", $iconv_to, $decodedStr);
+ if ( $iconv_to != "UTF-8" ) {
+ $decodedStr = iconv( "UTF-8", $iconv_to, $decodedStr );
}
return $decodedStr;
@@ -61,16 +61,16 @@ function js_unescape($source, $iconv_to = 'UTF-8') {
* @param $num Integer
* @return utf8char
*/
-function code2utf($num){
- if ( $num<128 )
- return chr($num);
- if ( $num<2048 )
- return chr(($num>>6)+192).chr(($num&63)+128);
- if ( $num<65536 )
- return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
- if ( $num<2097152 )
- return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
- return '';
+function code2utf( $num ) {
+ if ( $num < 128 )
+ return chr( $num );
+ if ( $num < 2048 )
+ return chr( ( $num >> 6 ) + 192 ) . chr( ( $num&63 ) + 128 );
+ if ( $num < 65536 )
+ return chr( ( $num >> 12 ) + 224 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 );
+ if ( $num < 2097152 )
+ return chr( ( $num >> 18 ) + 240 ) . chr( ( ( $num >> 12 )&63 ) + 128 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 );
+ return '';
}
/**
@@ -81,49 +81,49 @@ function code2utf($num){
* respectively, followed by an HTML message to display in the alert box; or
* '<err#>' on error
*/
-function wfAjaxWatch($pagename = "", $watch = "") {
- if(wfReadOnly()) {
+function wfAjaxWatch( $pagename = "", $watch = "" ) {
+ if ( wfReadOnly() ) {
// redirect to action=(un)watch, which will display the database lock
// message
return '<err#>';
}
- if('w' !== $watch && 'u' !== $watch) {
+ if ( 'w' !== $watch && 'u' !== $watch ) {
return '<err#>';
}
$watch = 'w' === $watch;
- $title = Title::newFromDBkey($pagename);
- if(!$title) {
+ $title = Title::newFromDBkey( $pagename );
+ if ( !$title ) {
// Invalid title
return '<err#>';
}
- $article = new Article($title);
+ $article = new Article( $title );
$watching = $title->userIsWatching();
- if($watch) {
- if(!$watching) {
- $dbw = wfGetDB(DB_MASTER);
+ if ( $watch ) {
+ if ( !$watching ) {
+ $dbw = wfGetDB( DB_MASTER );
$dbw->begin();
$ok = $article->doWatch();
$dbw->commit();
}
} else {
- if($watching) {
- $dbw = wfGetDB(DB_MASTER);
+ if ( $watching ) {
+ $dbw = wfGetDB( DB_MASTER );
$dbw->begin();
$ok = $article->doUnwatch();
$dbw->commit();
}
}
// Something stopped the change
- if( isset($ok) && !$ok ) {
+ if ( isset( $ok ) && !$ok ) {
return '<err#>';
}
- if( $watch ) {
- return '<w#>'.wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() );
+ if ( $watch ) {
+ return '<w#>' . wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() );
} else {
- return '<u#>'.wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() );
+ return '<u#>' . wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() );
}
}
@@ -133,12 +133,12 @@ function wfAjaxWatch($pagename = "", $watch = "") {
*/
function wfAjaxGetThumbnailUrl( $file, $width, $height ) {
$file = wfFindFile( $file );
-
+
if ( !$file || !$file->exists() )
return null;
-
+
$url = $file->getThumbnail( $width, $height )->url;
-
+
return $url;
}
@@ -148,11 +148,11 @@ function wfAjaxGetThumbnailUrl( $file, $width, $height ) {
*/
function wfAjaxGetFileUrl( $file ) {
$file = wfFindFile( $file );
-
+
if ( !$file || !$file->exists() )
return null;
-
+
$url = $file->getUrl();
-
+
return $url;
-} \ No newline at end of file
+}
diff --git a/includes/AjaxResponse.php b/includes/AjaxResponse.php
index 26b6f443..f7495666 100644
--- a/includes/AjaxResponse.php
+++ b/includes/AjaxResponse.php
@@ -4,14 +4,14 @@
* @ingroup Ajax
*/
-if( !defined( 'MEDIAWIKI' ) ) {
+if ( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
}
/**
* Handle responses for Ajax requests (send headers, print
* content, that sort of thing)
- *
+ *
* @ingroup Ajax
*/
class AjaxResponse {
@@ -37,15 +37,15 @@ class AjaxResponse {
/** Content of our HTTP response */
private $mText;
- function __construct( $text = NULL ) {
- $this->mCacheDuration = NULL;
- $this->mVary = NULL;
+ function __construct( $text = null ) {
+ $this->mCacheDuration = null;
+ $this->mVary = null;
$this->mDisabled = false;
$this->mText = '';
$this->mResponseCode = '200 OK';
$this->mLastModified = false;
- $this->mContentType= 'application/x-wiki';
+ $this->mContentType = 'application/x-wiki';
if ( $text ) {
$this->addText( $text );
@@ -95,13 +95,13 @@ class AjaxResponse {
header( "Status: " . $this->mResponseCode, true, (int)$n );
}
- header ("Content-Type: " . $this->mContentType );
+ header ( "Content-Type: " . $this->mContentType );
if ( $this->mLastModified ) {
- header ("Last-Modified: " . $this->mLastModified );
+ header ( "Last-Modified: " . $this->mLastModified );
}
else {
- header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
+ header ( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
}
if ( $this->mCacheDuration ) {
@@ -110,31 +110,31 @@ class AjaxResponse {
# and tell the client to always check with the squid. Otherwise,
# tell the client to use a cached copy, without a way to purge it.
- if( $wgUseSquid ) {
+ if ( $wgUseSquid ) {
# Expect explicite purge of the proxy cache, but require end user agents
# to revalidate against the proxy on each visit.
# Surrogate-Control controls our Squid, Cache-Control downstream caches
if ( $wgUseESI ) {
- header( 'Surrogate-Control: max-age='.$this->mCacheDuration.', content="ESI/1.0"');
+ header( 'Surrogate-Control: max-age=' . $this->mCacheDuration . ', content="ESI/1.0"' );
header( 'Cache-Control: s-maxage=0, must-revalidate, max-age=0' );
} else {
- header( 'Cache-Control: s-maxage='.$this->mCacheDuration.', must-revalidate, max-age=0' );
+ header( 'Cache-Control: s-maxage=' . $this->mCacheDuration . ', must-revalidate, max-age=0' );
}
} else {
# Let the client do the caching. Cache is not purged.
- header ("Expires: " . gmdate( "D, d M Y H:i:s", time() + $this->mCacheDuration ) . " GMT");
- header ("Cache-Control: s-max-age={$this->mCacheDuration},public,max-age={$this->mCacheDuration}");
+ header ( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $this->mCacheDuration ) . " GMT" );
+ header ( "Cache-Control: s-max-age={$this->mCacheDuration},public,max-age={$this->mCacheDuration}" );
}
} else {
# always expired, always modified
- header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
- header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
- header ("Pragma: no-cache"); // HTTP/1.0
+ header ( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // Date in the past
+ header ( "Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1
+ header ( "Pragma: no-cache" ); // HTTP/1.0
}
if ( $this->mVary ) {
@@ -156,11 +156,11 @@ class AjaxResponse {
wfDebug( "$fname: CACHE DISABLED, NO TIMESTAMP\n" );
return;
}
- if( !$wgCachePages ) {
+ if ( !$wgCachePages ) {
wfDebug( "$fname: CACHE DISABLED\n", false );
return;
}
- if( $wgUser->getOption( 'nocache' ) ) {
+ if ( $wgUser->getOption( 'nocache' ) ) {
wfDebug( "$fname: USER DISABLED CACHE\n", false );
return;
}
@@ -168,7 +168,7 @@ class AjaxResponse {
$timestamp = wfTimestamp( TS_MW, $timestamp );
$lastmod = wfTimestamp( TS_RFC2822, max( $timestamp, $wgUser->mTouched, $wgCacheEpoch ) );
- if( !empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) {
+ if ( !empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) {
# IE sends sizes after the date like this:
# Wed, 20 Aug 2003 06:51:19 GMT; length=5202
# this breaks strtotime().
@@ -177,8 +177,8 @@ class AjaxResponse {
$ismodsince = wfTimestamp( TS_MW, $modsinceTime ? $modsinceTime : 1 );
wfDebug( "$fname: -- client send If-Modified-Since: " . $modsince . "\n", false );
wfDebug( "$fname: -- we might send Last-Modified : $lastmod\n", false );
- if( ($ismodsince >= $timestamp ) && $wgUser->validateCache( $ismodsince ) && $ismodsince >= $wgCacheEpoch ) {
- ini_set('zlib.output_compression', 0);
+ if ( ( $ismodsince >= $timestamp ) && $wgUser->validateCache( $ismodsince ) && $ismodsince >= $wgCacheEpoch ) {
+ ini_set( 'zlib.output_compression', 0 );
$this->setResponseCode( "304 Not Modified" );
$this->disable();
$this->mLastModified = $lastmod;
diff --git a/includes/Article.php b/includes/Article.php
index ef219ea3..d3863c77 100644
--- a/includes/Article.php
+++ b/includes/Article.php
@@ -16,30 +16,32 @@ class Article {
/**@{{
* @private
*/
- var $mComment = ''; //!<
- var $mContent; //!<
- var $mContentLoaded = false; //!<
- var $mCounter = -1; //!< Not loaded
- var $mCurID = -1; //!< Not loaded
- var $mDataLoaded = false; //!<
- var $mForUpdate = false; //!<
- var $mGoodAdjustment = 0; //!<
- var $mIsRedirect = false; //!<
- var $mLatest = false; //!<
- var $mMinorEdit; //!<
- var $mOldId; //!<
- var $mPreparedEdit = false; //!< Title object if set
- var $mRedirectedFrom = null; //!< Title object if set
- var $mRedirectTarget = null; //!< Title object if set
- var $mRedirectUrl = false; //!<
- var $mRevIdFetched = 0; //!<
- var $mRevision; //!<
- var $mTimestamp = ''; //!<
- var $mTitle; //!<
- var $mTotalAdjustment = 0; //!<
- var $mTouched = '19700101000000'; //!<
- var $mUser = -1; //!< Not loaded
- var $mUserText = ''; //!<
+ var $mComment = ''; // !<
+ var $mContent; // !<
+ var $mContentLoaded = false; // !<
+ var $mCounter = -1; // !< Not loaded
+ var $mCurID = -1; // !< Not loaded
+ var $mDataLoaded = false; // !<
+ var $mForUpdate = false; // !<
+ var $mGoodAdjustment = 0; // !<
+ var $mIsRedirect = false; // !<
+ var $mLatest = false; // !<
+ var $mMinorEdit; // !<
+ var $mOldId; // !<
+ var $mPreparedEdit = false; // !< Title object if set
+ var $mRedirectedFrom = null; // !< Title object if set
+ var $mRedirectTarget = null; // !< Title object if set
+ var $mRedirectUrl = false; // !<
+ var $mRevIdFetched = 0; // !<
+ var $mRevision; // !<
+ var $mTimestamp = ''; // !<
+ var $mTitle; // !<
+ var $mTotalAdjustment = 0; // !<
+ var $mTouched = '19700101000000'; // !<
+ var $mUser = -1; // !< Not loaded
+ var $mUserText = ''; // !<
+ var $mParserOptions; // !<
+ var $mParserOutput; // !<
/**@}}*/
/**
@@ -58,7 +60,9 @@ class Article {
*/
public static function newFromID( $id ) {
$t = Title::newFromID( $id );
- return $t == null ? null : new Article( $t );
+ # FIXME: doesn't inherit right
+ return $t == null ? null : new self( $t );
+ # return $t == null ? null : new static( $t ); // PHP 5.3
}
/**
@@ -78,19 +82,19 @@ class Article {
* @return mixed Title object, or null if this page is not a redirect
*/
public function getRedirectTarget() {
- if( !$this->mTitle || !$this->mTitle->isRedirect() )
+ if ( !$this->mTitle || !$this->mTitle->isRedirect() )
return null;
- if( !is_null($this->mRedirectTarget) )
+ if ( !is_null( $this->mRedirectTarget ) )
return $this->mRedirectTarget;
# Query the redirect table
$dbr = wfGetDB( DB_SLAVE );
$row = $dbr->selectRow( 'redirect',
- array('rd_namespace', 'rd_title'),
- array('rd_from' => $this->getID() ),
+ array( 'rd_namespace', 'rd_title' ),
+ array( 'rd_from' => $this->getID() ),
__METHOD__
);
- if( $row ) {
- return $this->mRedirectTarget = Title::makeTitle($row->rd_namespace, $row->rd_title);
+ if ( $row ) {
+ return $this->mRedirectTarget = Title::makeTitle( $row->rd_namespace, $row->rd_title );
}
# This page doesn't have an entry in the redirect table
return $this->mRedirectTarget = $this->insertRedirect();
@@ -104,15 +108,15 @@ class Article {
*/
public function insertRedirect() {
$retval = Title::newFromRedirect( $this->getContent() );
- if( !$retval ) {
+ if ( !$retval ) {
return null;
}
$dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'redirect', array('rd_from'),
+ $dbw->replace( 'redirect', array( 'rd_from' ),
array(
'rd_from' => $this->getID(),
'rd_namespace' => $retval->getNamespace(),
- 'rd_title' => $retval->getDBKey()
+ 'rd_title' => $retval->getDBkey()
),
__METHOD__
);
@@ -137,9 +141,9 @@ class Article {
public function followRedirectText( $text ) {
$rt = Title::newFromRedirectRecurse( $text ); // recurse through to only get the final target
# process if title object is valid and not special:userlogout
- if( $rt ) {
- if( $rt->getInterwiki() != '' ) {
- if( $rt->isLocal() ) {
+ if ( $rt ) {
+ if ( $rt->getInterwiki() != '' ) {
+ if ( $rt->isLocal() ) {
// Offsite wikis need an HTTP redirect.
//
// This can be hard to reverse and may produce loops,
@@ -148,13 +152,13 @@ class Article {
return $rt->getFullURL( 'rdfrom=' . urlencode( $source ) );
}
} else {
- if( $rt->getNamespace() == NS_SPECIAL ) {
+ if ( $rt->getNamespace() == NS_SPECIAL ) {
// Gotta handle redirects to special pages differently:
// Fill the HTTP response "Location" header and ignore
// the rest of the page we're on.
//
// This can be hard to reverse, so they may be disabled.
- if( $rt->isSpecial( 'Userlogout' ) ) {
+ if ( $rt->isSpecial( 'Userlogout' ) ) {
// rolleyes
} else {
return $rt->getFullURL();
@@ -203,19 +207,19 @@ class Article {
* the shortcut in Article::followContent()
*
* @return Return the text of this revision
- */
+ */
public function getContent() {
global $wgUser, $wgContLang, $wgOut, $wgMessageCache;
wfProfileIn( __METHOD__ );
- if( $this->getID() === 0 ) {
+ if ( $this->getID() === 0 ) {
# If this is a MediaWiki:x message, then load the messages
# and return the message value for x.
- if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
# If this is a system message, get the default text.
list( $message, $lang ) = $wgMessageCache->figureMessage( $wgContLang->lcfirst( $this->mTitle->getText() ) );
$wgMessageCache->loadAllMessages( $lang );
$text = wfMsgGetKey( $message, false, $lang, false );
- if( wfEmptyMsg( $message, $text ) )
+ if ( wfEmptyMsg( $message, $text ) )
$text = '';
} else {
$text = wfMsgExt( $wgUser->isLoggedIn() ? 'noarticletext' : 'noarticletextanon', 'parsemag' );
@@ -228,15 +232,15 @@ class Article {
return $this->mContent;
}
}
-
+
/**
* Get the text of the current revision. No side-effects...
*
* @return Return the text of the current revision
- */
+ */
public function getRawText() {
// Check process cache for current revision
- if( $this->mContentLoaded && $this->mOldId == 0 ) {
+ if ( $this->mContentLoaded && $this->mOldId == 0 ) {
return $this->mContent;
}
$rev = Revision::newFromTitle( $this->mTitle );
@@ -260,12 +264,12 @@ class Article {
global $wgParser;
return $wgParser->getSection( $text, $section );
}
-
+
/**
* Get the text that needs to be saved in order to undo all revisions
* between $undo and $undoafter. Revisions must belong to the same page,
* must exist and must not be deleted
- * @param $undo Revision
+ * @param $undo Revision
* @param $undoafter Revision Must be an earlier revision than $undo
* @return mixed string on success, false on failure
*/
@@ -288,7 +292,7 @@ class Article {
* current revision
*/
public function getOldID() {
- if( is_null( $this->mOldId ) ) {
+ if ( is_null( $this->mOldId ) ) {
$this->mOldId = $this->getOldIDFromRequest();
}
return $this->mOldId;
@@ -303,23 +307,23 @@ class Article {
global $wgRequest;
$this->mRedirectUrl = false;
$oldid = $wgRequest->getVal( 'oldid' );
- if( isset( $oldid ) ) {
+ if ( isset( $oldid ) ) {
$oldid = intval( $oldid );
- if( $wgRequest->getVal( 'direction' ) == 'next' ) {
+ if ( $wgRequest->getVal( 'direction' ) == 'next' ) {
$nextid = $this->mTitle->getNextRevisionID( $oldid );
- if( $nextid ) {
+ if ( $nextid ) {
$oldid = $nextid;
} else {
$this->mRedirectUrl = $this->mTitle->getFullURL( 'redirect=no' );
}
- } elseif( $wgRequest->getVal( 'direction' ) == 'prev' ) {
+ } elseif ( $wgRequest->getVal( 'direction' ) == 'prev' ) {
$previd = $this->mTitle->getPreviousRevisionID( $oldid );
- if( $previd ) {
+ if ( $previd ) {
$oldid = $previd;
}
}
}
- if( !$oldid ) {
+ if ( !$oldid ) {
$oldid = 0;
}
return $oldid;
@@ -329,7 +333,7 @@ class Article {
* Load the revision (including text) into this object
*/
function loadContent() {
- if( $this->mContentLoaded ) return;
+ if ( $this->mContentLoaded ) return;
wfProfileIn( __METHOD__ );
# Query variables :P
$oldid = $this->getOldID();
@@ -396,26 +400,26 @@ class Article {
* @param $data Database row object or "fromdb"
*/
public function loadPageData( $data = 'fromdb' ) {
- if( $data === 'fromdb' ) {
+ if ( $data === 'fromdb' ) {
$dbr = wfGetDB( DB_MASTER );
$data = $this->pageDataFromId( $dbr, $this->getId() );
}
$lc = LinkCache::singleton();
- if( $data ) {
+ if ( $data ) {
$lc->addGoodLinkObj( $data->page_id, $this->mTitle, $data->page_len, $data->page_is_redirect );
- $this->mTitle->mArticleID = $data->page_id;
+ $this->mTitle->mArticleID = intval( $data->page_id );
# Old-fashioned restrictions
$this->mTitle->loadRestrictions( $data->page_restrictions );
- $this->mCounter = $data->page_counter;
+ $this->mCounter = intval( $data->page_counter );
$this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
- $this->mIsRedirect = $data->page_is_redirect;
- $this->mLatest = $data->page_latest;
+ $this->mIsRedirect = intval( $data->page_is_redirect );
+ $this->mLatest = intval( $data->page_latest );
} else {
- if( is_object( $this->mTitle ) ) {
+ if ( is_object( $this->mTitle ) ) {
$lc->addBadLinkObj( $this->mTitle );
}
$this->mTitle->mArticleID = 0;
@@ -431,7 +435,7 @@ class Article {
* @return string
*/
function fetchContent( $oldid = 0 ) {
- if( $this->mContentLoaded ) {
+ if ( $this->mContentLoaded ) {
return $this->mContent;
}
@@ -441,33 +445,33 @@ class Article {
# fails we'll have something telling us what we intended.
$t = $this->mTitle->getPrefixedText();
$d = $oldid ? wfMsgExt( 'missingarticle-rev', array( 'escape' ), $oldid ) : '';
- $this->mContent = wfMsg( 'missing-article', $t, $d ) ;
+ $this->mContent = wfMsgNoTrans( 'missing-article', $t, $d ) ;
- if( $oldid ) {
+ if ( $oldid ) {
$revision = Revision::newFromId( $oldid );
- if( is_null( $revision ) ) {
- wfDebug( __METHOD__." failed to retrieve specified revision, id $oldid\n" );
+ if ( is_null( $revision ) ) {
+ wfDebug( __METHOD__ . " failed to retrieve specified revision, id $oldid\n" );
return false;
}
$data = $this->pageDataFromId( $dbr, $revision->getPage() );
- if( !$data ) {
- wfDebug( __METHOD__." failed to get page data linked to revision id $oldid\n" );
+ if ( !$data ) {
+ wfDebug( __METHOD__ . " failed to get page data linked to revision id $oldid\n" );
return false;
}
$this->mTitle = Title::makeTitle( $data->page_namespace, $data->page_title );
$this->loadPageData( $data );
} else {
- if( !$this->mDataLoaded ) {
+ if ( !$this->mDataLoaded ) {
$data = $this->pageDataFromTitle( $dbr, $this->mTitle );
- if( !$data ) {
- wfDebug( __METHOD__." failed to find page data for title " . $this->mTitle->getPrefixedText() . "\n" );
+ if ( !$data ) {
+ wfDebug( __METHOD__ . " failed to find page data for title " . $this->mTitle->getPrefixedText() . "\n" );
return false;
}
$this->loadPageData( $data );
}
$revision = Revision::newFromId( $this->mLatest );
- if( is_null( $revision ) ) {
- wfDebug( __METHOD__." failed to retrieve current page, rev_id {$this->mLatest}\n" );
+ if ( is_null( $revision ) ) {
+ wfDebug( __METHOD__ . " failed to retrieve current page, rev_id {$this->mLatest}\n" );
return false;
}
}
@@ -495,7 +499,7 @@ class Article {
*
* @param $x Mixed: FIXME
*/
- public function forUpdate( $x = NULL ) {
+ public function forUpdate( $x = null ) {
return wfSetVar( $this->mForUpdate, $x );
}
@@ -518,8 +522,8 @@ class Article {
* @return Array: options
*/
protected function getSelectOptions( $options = '' ) {
- if( $this->mForUpdate ) {
- if( is_array( $options ) ) {
+ if ( $this->mForUpdate ) {
+ if ( is_array( $options ) ) {
$options[] = 'FOR UPDATE';
} else {
$options = 'FOR UPDATE';
@@ -532,7 +536,7 @@ class Article {
* @return int Page ID
*/
public function getID() {
- if( $this->mTitle ) {
+ if ( $this->mTitle ) {
return $this->mTitle->getArticleID();
} else {
return 0;
@@ -545,7 +549,7 @@ class Article {
public function exists() {
return $this->getId() > 0;
}
-
+
/**
* Check if this page is something we're going to be showing
* some sort of sensible content for. If we return false, page
@@ -562,16 +566,16 @@ class Article {
* @return int The view count for the page
*/
public function getCount() {
- if( -1 == $this->mCounter ) {
+ if ( -1 == $this->mCounter ) {
$id = $this->getID();
- if( $id == 0 ) {
+ if ( $id == 0 ) {
$this->mCounter = 0;
} else {
$dbr = wfGetDB( DB_SLAVE );
- $this->mCounter = $dbr->selectField( 'page',
- 'page_counter',
- array( 'page_id' => $id ),
- __METHOD__,
+ $this->mCounter = $dbr->selectField( 'page',
+ 'page_counter',
+ array( 'page_id' => $id ),
+ __METHOD__,
$this->getSelectOptions()
);
}
@@ -590,7 +594,7 @@ class Article {
global $wgUseCommaCount;
$token = $wgUseCommaCount ? ',' : '[[';
- return $this->mTitle->isContentPage() && !$this->isRedirect($text) && in_string($token,$text);
+ return $this->mTitle->isContentPage() && !$this->isRedirect( $text ) && in_string( $token, $text );
}
/**
@@ -600,8 +604,8 @@ class Article {
* @return bool
*/
public function isRedirect( $text = false ) {
- if( $text === false ) {
- if( $this->mDataLoaded ) {
+ if ( $text === false ) {
+ if ( $this->mDataLoaded ) {
return $this->mIsRedirect;
}
// Apparently loadPageData was never called
@@ -610,7 +614,7 @@ class Article {
} else {
$titleObj = Title::newFromRedirect( $text );
}
- return $titleObj !== NULL;
+ return $titleObj !== null;
}
/**
@@ -620,10 +624,10 @@ class Article {
*/
public function isCurrent() {
# If no oldid, this is the current version.
- if( $this->getOldID() == 0 ) {
+ if ( $this->getOldID() == 0 ) {
return true;
}
- return $this->exists() && isset($this->mRevision) && $this->mRevision->isCurrent();
+ return $this->exists() && isset( $this->mRevision ) && $this->mRevision->isCurrent();
}
/**
@@ -631,15 +635,15 @@ class Article {
* This isn't necessary for all uses, so it's only done if needed.
*/
protected function loadLastEdit() {
- if( -1 != $this->mUser )
+ if ( -1 != $this->mUser )
return;
# New or non-existent articles have no user information
$id = $this->getID();
- if( 0 == $id ) return;
+ if ( 0 == $id ) return;
$this->mLastRevision = Revision::loadFromPageId( wfGetDB( DB_MASTER ), $id );
- if( !is_null( $this->mLastRevision ) ) {
+ if ( !is_null( $this->mLastRevision ) ) {
$this->mUser = $this->mLastRevision->getUser();
$this->mUserText = $this->mLastRevision->getUserText();
$this->mTimestamp = $this->mLastRevision->getTimestamp();
@@ -651,10 +655,10 @@ class Article {
public function getTimestamp() {
// Check if the field has been filled by ParserCache::get()
- if( !$this->mTimestamp ) {
+ if ( !$this->mTimestamp ) {
$this->loadLastEdit();
}
- return wfTimestamp(TS_MW, $this->mTimestamp);
+ return wfTimestamp( TS_MW, $this->mTimestamp );
}
public function getUser() {
@@ -687,69 +691,77 @@ class Article {
* @param $limit Integer: default 0.
* @param $offset Integer: default 0.
*/
- public function getContributors($limit = 0, $offset = 0) {
+ public function getContributors( $limit = 0, $offset = 0 ) {
# XXX: this is expensive; cache this info somewhere.
- $contribs = array();
$dbr = wfGetDB( DB_SLAVE );
$revTable = $dbr->tableName( 'revision' );
$userTable = $dbr->tableName( 'user' );
- $user = $this->getUser();
+
$pageId = $this->getId();
- $hideBit = Revision::DELETED_USER; // username hidden?
+ $user = $this->getUser();
+ if ( $user ) {
+ $excludeCond = "AND rev_user != $user";
+ } else {
+ $userText = $dbr->addQuotes( $this->getUserText() );
+ $excludeCond = "AND rev_user_text != $userText";
+ }
- $sql = "SELECT {$userTable}.*, MAX(rev_timestamp) as timestamp
+ $deletedBit = $dbr->bitAnd( 'rev_deleted', Revision::DELETED_USER ); // username hidden?
+
+ $sql = "SELECT {$userTable}.*, rev_user_text as user_name, MAX(rev_timestamp) as timestamp
FROM $revTable LEFT JOIN $userTable ON rev_user = user_id
WHERE rev_page = $pageId
- AND rev_user != $user
- AND rev_deleted & $hideBit = 0
- GROUP BY rev_user, rev_user_text, user_real_name
+ $excludeCond
+ AND $deletedBit = 0
+ GROUP BY rev_user, rev_user_text
ORDER BY timestamp DESC";
- if($limit > 0) { $sql .= ' LIMIT '.$limit; }
- if($offset > 0) { $sql .= ' OFFSET '.$offset; }
-
- $sql .= ' '. $this->getSelectOptions();
+ if ( $limit > 0 )
+ $sql = $dbr->limitResult( $sql, $limit, $offset );
- $res = $dbr->query($sql, __METHOD__ );
+ $sql .= ' ' . $this->getSelectOptions();
+ $res = $dbr->query( $sql, __METHOD__ );
return new UserArrayFromResult( $res );
}
/**
- * This is the default action of the script: just view the page of
- * the given title.
- */
+ * This is the default action of the index.php entry point: just view the
+ * page of the given title.
+ */
public function view() {
global $wgUser, $wgOut, $wgRequest, $wgContLang;
global $wgEnableParserCache, $wgStylePath, $wgParser;
- global $wgUseTrackbacks, $wgNamespaceRobotPolicies, $wgArticleRobotPolicies;
- global $wgDefaultRobotPolicy;
+ global $wgUseTrackbacks, $wgUseFileCache;
- # Let the parser know if this is the printable version
- if( $wgOut->isPrintable() ) {
- $wgOut->parserOptions()->setIsPrintable( true );
- }
-
wfProfileIn( __METHOD__ );
# Get variables from query string
$oldid = $this->getOldID();
+ $parserCache = ParserCache::singleton();
+
+ $parserOptions = clone $this->getParserOptions();
+ # Render printable version, use printable version cache
+ if ( $wgOut->isPrintable() ) {
+ $parserOptions->setIsPrintable( true );
+ }
# Try client and file cache
- if( $oldid === 0 && $this->checkTouched() ) {
+ if ( $oldid === 0 && $this->checkTouched() ) {
global $wgUseETag;
- if( $wgUseETag ) {
- $parserCache = ParserCache::singleton();
- $wgOut->setETag( $parserCache->getETag($this, $wgOut->parserOptions()) );
+ if ( $wgUseETag ) {
+ $wgOut->setETag( $parserCache->getETag( $this, $parserOptions ) );
}
# Is is client cached?
- if( $wgOut->checkLastModified( $this->getTouched() ) ) {
+ if ( $wgOut->checkLastModified( $this->getTouched() ) ) {
+ wfDebug( __METHOD__ . ": done 304\n" );
wfProfileOut( __METHOD__ );
return;
# Try file cache
- } else if( $this->tryFileCache() ) {
+ } else if ( $wgUseFileCache && $this->tryFileCache() ) {
+ wfDebug( __METHOD__ . ": done file cache\n" );
# tell wgOut that output is taken care of
$wgOut->disable();
$this->viewUpdates();
@@ -758,91 +770,355 @@ class Article {
}
}
- $ns = $this->mTitle->getNamespace(); # shortcut
$sk = $wgUser->getSkin();
# getOldID may want us to redirect somewhere else
- if( $this->mRedirectUrl ) {
+ if ( $this->mRedirectUrl ) {
$wgOut->redirect( $this->mRedirectUrl );
+ wfDebug( __METHOD__ . ": redirecting due to oldid\n" );
wfProfileOut( __METHOD__ );
return;
}
+ $wgOut->setArticleFlag( true );
+ # Set page title (may be overridden by DISPLAYTITLE)
+ $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
+
+ # If we got diff in the query, we want to see a diff page instead of the article.
+ if ( !is_null( $wgRequest->getVal( 'diff' ) ) ) {
+ wfDebug( __METHOD__ . ": showing diff page\n" );
+ $this->showDiffPage();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ # Should the parser cache be used?
+ $useParserCache = $this->useParserCache( $oldid );
+ wfDebug( 'Article::view using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
+ if ( $wgUser->getOption( 'stubthreshold' ) ) {
+ wfIncrStats( 'pcache_miss_stub' );
+ }
+
+ $wasRedirected = $this->showRedirectedFromHeader();
+ $this->showNamespaceHeader();
+
+ # Iterate through the possible ways of constructing the output text.
+ # Keep going until $outputDone is set, or we run out of things to do.
+ $pass = 0;
+ $outputDone = false;
+ $this->mParserOutput = false;
+ while ( !$outputDone && ++$pass ) {
+ switch( $pass ) {
+ case 1:
+ wfRunHooks( 'ArticleViewHeader', array( &$this, &$outputDone, &$useParserCache ) );
+ break;
+
+ case 2:
+ # Try the parser cache
+ if ( $useParserCache ) {
+ $this->mParserOutput = $parserCache->get( $this, $parserOptions );
+ if ( $this->mParserOutput !== false ) {
+ wfDebug( __METHOD__ . ": showing parser cache contents\n" );
+ $wgOut->addParserOutput( $this->mParserOutput );
+ # Ensure that UI elements requiring revision ID have
+ # the correct version information.
+ $wgOut->setRevisionId( $this->mLatest );
+ $outputDone = true;
+ }
+ }
+ break;
+
+ case 3:
+ $text = $this->getContent();
+ if ( $text === false || $this->getID() == 0 ) {
+ wfDebug( __METHOD__ . ": showing missing article\n" );
+ $this->showMissingArticle();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ # Another whitelist check in case oldid is altering the title
+ if ( !$this->mTitle->userCanRead() ) {
+ wfDebug( __METHOD__ . ": denied on secondary read check\n" );
+ $wgOut->loginToUse();
+ $wgOut->output();
+ $wgOut->disable();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ # Are we looking at an old revision
+ if ( $oldid && !is_null( $this->mRevision ) ) {
+ $this->setOldSubtitle( $oldid );
+ if ( !$this->showDeletedRevisionHeader() ) {
+ wfDebug( __METHOD__ . ": cannot view deleted revision\n" );
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+ # If this "old" version is the current, then try the parser cache...
+ if ( $oldid === $this->getLatest() && $this->useParserCache( false ) ) {
+ $this->mParserOutput = $parserCache->get( $this, $parserOptions );
+ if ( $this->mParserOutput ) {
+ wfDebug( __METHOD__ . ": showing parser cache for current rev permalink\n" );
+ $wgOut->addParserOutput( $this->mParserOutput );
+ $wgOut->setRevisionId( $this->mLatest );
+ $this->showViewFooter();
+ $this->viewUpdates();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+ }
+ }
+
+ # Ensure that UI elements requiring revision ID have
+ # the correct version information.
+ $wgOut->setRevisionId( $this->getRevIdFetched() );
+
+ # Pages containing custom CSS or JavaScript get special treatment
+ if ( $this->mTitle->isCssOrJsPage() || $this->mTitle->isCssJsSubpage() ) {
+ wfDebug( __METHOD__ . ": showing CSS/JS source\n" );
+ $this->showCssOrJsPage();
+ $outputDone = true;
+ } else if ( $rt = Title::newFromRedirectArray( $text ) ) {
+ wfDebug( __METHOD__ . ": showing redirect=no page\n" );
+ # Viewing a redirect page (e.g. with parameter redirect=no)
+ # Don't append the subtitle if this was an old revision
+ $wgOut->addHTML( $this->viewRedirect( $rt, !$wasRedirected && $this->isCurrent() ) );
+ # Parse just to get categories, displaytitle, etc.
+ $this->mParserOutput = $wgParser->parse( $text, $this->mTitle, $parserOptions );
+ $wgOut->addParserOutputNoText( $this->mParserOutput );
+ $outputDone = true;
+ }
+ break;
+
+ case 4:
+ # Run the parse, protected by a pool counter
+ wfDebug( __METHOD__ . ": doing uncached parse\n" );
+ $key = $parserCache->getKey( $this, $parserOptions );
+ $poolCounter = PoolCounter::factory( 'Article::view', $key );
+ $dirtyCallback = $useParserCache ? array( $this, 'tryDirtyCache' ) : false;
+ $status = $poolCounter->executeProtected( array( $this, 'doViewParse' ), $dirtyCallback );
+
+ if ( !$status->isOK() ) {
+ # Connection or timeout error
+ $this->showPoolError( $status );
+ wfProfileOut( __METHOD__ );
+ return;
+ } else {
+ $outputDone = true;
+ }
+ break;
+
+ # Should be unreachable, but just in case...
+ default:
+ break 2;
+ }
+ }
+
+ # Adjust the title if it was set by displaytitle, -{T|}- or language conversion
+ if ( $this->mParserOutput ) {
+ $titleText = $this->mParserOutput->getTitleText();
+ if ( strval( $titleText ) !== '' ) {
+ $wgOut->setPageTitle( $titleText );
+ }
+ }
+
+ # For the main page, overwrite the <title> element with the con-
+ # tents of 'pagetitle-view-mainpage' instead of the default (if
+ # that's not empty).
+ if ( $this->mTitle->equals( Title::newMainPage() )
+ && ( $m = wfMsgForContent( 'pagetitle-view-mainpage' ) ) !== '' )
+ {
+ $wgOut->setHTMLTitle( $m );
+ }
+
+ # Now that we've filled $this->mParserOutput, we know whether
+ # there are any __NOINDEX__ tags on the page
+ $policy = $this->getRobotPolicy( 'view' );
+ $wgOut->setIndexPolicy( $policy['index'] );
+ $wgOut->setFollowPolicy( $policy['follow'] );
+
+ $this->showViewFooter();
+ $this->viewUpdates();
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Show a diff page according to current request variables. For use within
+ * Article::view() only, other callers should use the DifferenceEngine class.
+ */
+ public function showDiffPage() {
+ global $wgOut, $wgRequest, $wgUser;
+
$diff = $wgRequest->getVal( 'diff' );
$rcid = $wgRequest->getVal( 'rcid' );
- $rdfrom = $wgRequest->getVal( 'rdfrom' );
$diffOnly = $wgRequest->getBool( 'diffonly', $wgUser->getOption( 'diffonly' ) );
$purge = $wgRequest->getVal( 'action' ) == 'purge';
- $return404 = false;
+ $unhide = $wgRequest->getInt( 'unhide' ) == 1;
+ $oldid = $this->getOldID();
- $wgOut->setArticleFlag( true );
+ $de = new DifferenceEngine( $this->mTitle, $oldid, $diff, $rcid, $purge, $unhide );
+ // DifferenceEngine directly fetched the revision:
+ $this->mRevIdFetched = $de->mNewid;
+ $de->showDiffPage( $diffOnly );
- # Discourage indexing of printable versions, but encourage following
- if( $wgOut->isPrintable() ) {
- $policy = 'noindex,follow';
- } elseif( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ) {
- $policy = $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()];
- } elseif( isset( $wgNamespaceRobotPolicies[$ns] ) ) {
- # Honour customised robot policies for this namespace
- $policy = $wgNamespaceRobotPolicies[$ns];
- } else {
- $policy = $wgDefaultRobotPolicy;
+ // Needed to get the page's current revision
+ $this->loadPageData();
+ if ( $diff == 0 || $diff == $this->mLatest ) {
+ # Run view updates for current revision only
+ $this->viewUpdates();
}
- $wgOut->setRobotPolicy( $policy );
+ }
- # Allow admins to see deleted content if explicitly requested
- $delId = $diff ? $diff : $oldid;
- $unhide = $wgRequest->getInt('unhide') == 1
- && $wgUser->matchEditToken( $wgRequest->getVal('token'), $delId );
- # If we got diff and oldid in the query, we want to see a
- # diff page instead of the article.
- if( !is_null( $diff ) ) {
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
+ /**
+ * Show a page view for a page formatted as CSS or JavaScript. To be called by
+ * Article::view() only.
+ *
+ * This is hooked by SyntaxHighlight_GeSHi to do syntax highlighting of these
+ * page views.
+ */
+ public function showCssOrJsPage() {
+ global $wgOut;
+ $wgOut->addHTML( wfMsgExt( 'clearyourcache', 'parse' ) );
+ // Give hooks a chance to customise the output
+ if ( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->mTitle, $wgOut ) ) ) {
+ // Wrap the whole lot in a <pre> and don't parse
+ $m = array();
+ preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
+ $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
+ $wgOut->addHTML( htmlspecialchars( $this->mContent ) );
+ $wgOut->addHTML( "\n</pre>\n" );
+ }
+ }
- $htmldiff = $wgRequest->getVal( 'htmldiff' , false);
- $de = new DifferenceEngine( $this->mTitle, $oldid, $diff, $rcid, $purge, $htmldiff, $unhide );
- // DifferenceEngine directly fetched the revision:
- $this->mRevIdFetched = $de->mNewid;
- $de->showDiffPage( $diffOnly );
+ /**
+ * Get the robot policy to be used for the current action=view request.
+ * @return String the policy that should be set
+ * @deprecated use getRobotPolicy() instead, which returns an associative
+ * array
+ */
+ public function getRobotPolicyForView() {
+ wfDeprecated( __FUNC__ );
+ $policy = $this->getRobotPolicy( 'view' );
+ return $policy['index'] . ',' . $policy['follow'];
+ }
- // Needed to get the page's current revision
- $this->loadPageData();
- if( $diff == 0 || $diff == $this->mLatest ) {
- # Run view updates for current revision only
- $this->viewUpdates();
- }
- wfProfileOut( __METHOD__ );
- return;
- }
-
- if( $ns == NS_USER || $ns == NS_USER_TALK ) {
- # User/User_talk subpages are not modified. (bug 11443)
- if( !$this->mTitle->isSubpage() ) {
+ /**
+ * Get the robot policy to be used for the current view
+ * @param $action String the action= GET parameter
+ * @return Array the policy that should be set
+ * TODO: actions other than 'view'
+ */
+ public function getRobotPolicy( $action ) {
+
+ global $wgOut, $wgArticleRobotPolicies, $wgNamespaceRobotPolicies;
+ global $wgDefaultRobotPolicy, $wgRequest;
+
+ $ns = $this->mTitle->getNamespace();
+ if ( $ns == NS_USER || $ns == NS_USER_TALK ) {
+ # Don't index user and user talk pages for blocked users (bug 11443)
+ if ( !$this->mTitle->isSubpage() ) {
$block = new Block();
- if( $block->load( $this->mTitle->getBaseText() ) ) {
- $wgOut->setRobotpolicy( 'noindex,nofollow' );
+ if ( $block->load( $this->mTitle->getText() ) ) {
+ return array( 'index' => 'noindex',
+ 'follow' => 'nofollow' );
}
}
}
- # Should the parser cache be used?
- $pcache = $this->useParserCache( $oldid );
- wfDebug( 'Article::view using parser cache: ' . ($pcache ? 'yes' : 'no' ) . "\n" );
- if( $wgUser->getOption( 'stubthreshold' ) ) {
- wfIncrStats( 'pcache_miss_stub' );
+ if ( $this->getID() === 0 || $this->getOldID() ) {
+ # Non-articles (special pages etc), and old revisions
+ return array( 'index' => 'noindex',
+ 'follow' => 'nofollow' );
+ } elseif ( $wgOut->isPrintable() ) {
+ # Discourage indexing of printable versions, but encourage following
+ return array( 'index' => 'noindex',
+ 'follow' => 'follow' );
+ } elseif ( $wgRequest->getInt( 'curid' ) ) {
+ # For ?curid=x urls, disallow indexing
+ return array( 'index' => 'noindex',
+ 'follow' => 'follow' );
}
- $wasRedirected = false;
- if( isset( $this->mRedirectedFrom ) ) {
+ # Otherwise, construct the policy based on the various config variables.
+ $policy = self::formatRobotPolicy( $wgDefaultRobotPolicy );
+
+ if ( isset( $wgNamespaceRobotPolicies[$ns] ) ) {
+ # Honour customised robot policies for this namespace
+ $policy = array_merge( $policy,
+ self::formatRobotPolicy( $wgNamespaceRobotPolicies[$ns] ) );
+ }
+ if ( $this->mTitle->canUseNoindex() && is_object( $this->mParserOutput ) && $this->mParserOutput->getIndexPolicy() ) {
+ # __INDEX__ and __NOINDEX__ magic words, if allowed. Incorporates
+ # a final sanity check that we have really got the parser output.
+ $policy = array_merge( $policy,
+ array( 'index' => $this->mParserOutput->getIndexPolicy() ) );
+ }
+
+ if ( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ) {
+ # (bug 14900) site config can override user-defined __INDEX__ or __NOINDEX__
+ $policy = array_merge( $policy,
+ self::formatRobotPolicy( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) );
+ }
+
+ return $policy;
+
+ }
+
+ /**
+ * Converts a String robot policy into an associative array, to allow
+ * merging of several policies using array_merge().
+ * @param $policy Mixed, returns empty array on null/false/'', transparent
+ * to already-converted arrays, converts String.
+ * @return associative Array: 'index' => <indexpolicy>, 'follow' => <followpolicy>
+ */
+ public static function formatRobotPolicy( $policy ) {
+ if ( is_array( $policy ) ) {
+ return $policy;
+ } elseif ( !$policy ) {
+ return array();
+ }
+
+ $policy = explode( ',', $policy );
+ $policy = array_map( 'trim', $policy );
+
+ $arr = array();
+ foreach ( $policy as $var ) {
+ if ( in_array( $var, array( 'index', 'noindex' ) ) ) {
+ $arr['index'] = $var;
+ } elseif ( in_array( $var, array( 'follow', 'nofollow' ) ) ) {
+ $arr['follow'] = $var;
+ }
+ }
+ return $arr;
+ }
+
+ /**
+ * If this request is a redirect view, send "redirected from" subtitle to
+ * $wgOut. Returns true if the header was needed, false if this is not a
+ * redirect view. Handles both local and remote redirects.
+ */
+ public function showRedirectedFromHeader() {
+ global $wgOut, $wgUser, $wgRequest, $wgRedirectSources;
+
+ $rdfrom = $wgRequest->getVal( 'rdfrom' );
+ $sk = $wgUser->getSkin();
+ if ( isset( $this->mRedirectedFrom ) ) {
// This is an internally redirected page view.
// We'll need a backlink to the source page for navigation.
- if( wfRunHooks( 'ArticleViewRedirect', array( &$this ) ) ) {
- $redir = $sk->makeKnownLinkObj( $this->mRedirectedFrom, '', 'redirect=no' );
+ if ( wfRunHooks( 'ArticleViewRedirect', array( &$this ) ) ) {
+ $redir = $sk->link(
+ $this->mRedirectedFrom,
+ null,
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ );
$s = wfMsgExt( 'redirectedfrom', array( 'parseinline', 'replaceafter' ), $redir );
$wgOut->setSubtitle( $s );
// Set the fragment if one was specified in the redirect
- if( strval( $this->mTitle->getFragment() ) != '' ) {
+ if ( strval( $this->mTitle->getFragment() ) != '' ) {
$fragment = Xml::escapeJsString( $this->mTitle->getFragmentForURL() );
$wgOut->addInlineScript( "redirectToFragment(\"$fragment\");" );
}
@@ -851,225 +1127,198 @@ class Article {
$wgOut->addLink( array( 'rel' => 'canonical',
'href' => $this->mTitle->getLocalURL() )
);
- $wasRedirected = true;
+ return true;
}
- } elseif( !empty( $rdfrom ) ) {
+ } elseif ( $rdfrom ) {
// This is an externally redirected view, from some other wiki.
// If it was reported from a trusted site, supply a backlink.
- global $wgRedirectSources;
- if( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) {
+ if ( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) {
$redir = $sk->makeExternalLink( $rdfrom, $rdfrom );
$s = wfMsgExt( 'redirectedfrom', array( 'parseinline', 'replaceafter' ), $redir );
$wgOut->setSubtitle( $s );
- $wasRedirected = true;
- }
- }
-
- $outputDone = false;
- wfRunHooks( 'ArticleViewHeader', array( &$this, &$outputDone, &$pcache ) );
- if( $pcache && $wgOut->tryParserCache( $this ) ) {
- // Ensure that UI elements requiring revision ID have
- // the correct version information.
- $wgOut->setRevisionId( $this->mLatest );
- $outputDone = true;
- }
- # Fetch content and check for errors
- if( !$outputDone ) {
- # If the article does not exist and was deleted, show the log
- if( $this->getID() == 0 ) {
- $this->showDeletionLog();
- }
- $text = $this->getContent();
- // For now, check also for ID until getContent actually returns
- // false for pages that do not exists
- if( $text === false || $this->getID() === 0 ) {
- # Failed to load, replace text with error message
- $t = $this->mTitle->getPrefixedText();
- if( $oldid ) {
- $d = wfMsgExt( 'missingarticle-rev', 'escape', $oldid );
- $text = wfMsgExt( 'missing-article', 'parsemag', $t, $d );
- // Always use page content for pages in the MediaWiki namespace
- // since it contains the default message
- } elseif ( $this->mTitle->getNamespace() != NS_MEDIAWIKI ) {
- $text = wfMsgExt( 'noarticletext', 'parsemag' );
- }
- }
-
- # Non-existent pages
- if( $this->getID() === 0 ) {
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $text = "<div class='noarticletext'>\n$text\n</div>";
- if( !$this->hasViewableContent() ) {
- // If there's no backing content, send a 404 Not Found
- // for better machine handling of broken links.
- $return404 = true;
- }
- }
-
- if( $return404 ) {
- $wgRequest->response()->header( "HTTP/1.x 404 Not Found" );
- }
-
- # Another whitelist check in case oldid is altering the title
- if( !$this->mTitle->userCanRead() ) {
- $wgOut->loginToUse();
- $wgOut->output();
- $wgOut->disable();
- wfProfileOut( __METHOD__ );
- return;
- }
-
- # For ?curid=x urls, disallow indexing
- if( $wgRequest->getInt('curid') )
- $wgOut->setRobotPolicy( 'noindex,follow' );
-
- # We're looking at an old revision
- if( !empty( $oldid ) ) {
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- if( is_null( $this->mRevision ) ) {
- // FIXME: This would be a nice place to load the 'no such page' text.
- } else {
- $this->setOldSubtitle( isset($this->mOldId) ? $this->mOldId : $oldid );
- # Allow admins to see deleted content if explicitly requested
- if( $this->mRevision->isDeleted( Revision::DELETED_TEXT ) ) {
- if( !$unhide || !$this->mRevision->userCan(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' );
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
- wfProfileOut( __METHOD__ );
- return;
- } else {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
- // and we are allowed to see...
- }
- }
- // Is this the current revision and otherwise cacheable? Try the parser cache...
- if( $oldid === $this->getLatest() && $this->useParserCache( false )
- && $wgOut->tryParserCache( $this ) )
- {
- $outputDone = true;
- }
- }
- }
-
- // Ensure that UI elements requiring revision ID have
- // the correct version information.
- $wgOut->setRevisionId( $this->getRevIdFetched() );
-
- if( $outputDone ) {
- // do nothing...
- // Pages containing custom CSS or JavaScript get special treatment
- } else if( $this->mTitle->isCssOrJsPage() || $this->mTitle->isCssJsSubpage() ) {
- $wgOut->addHTML( wfMsgExt( 'clearyourcache', 'parse' ) );
- // Give hooks a chance to customise the output
- if( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->mTitle, $wgOut ) ) ) {
- // Wrap the whole lot in a <pre> and don't parse
- $m = array();
- preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
- $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
- $wgOut->addHTML( htmlspecialchars( $this->mContent ) );
- $wgOut->addHTML( "\n</pre>\n" );
- }
- } else if( $rt = Title::newFromRedirectArray( $text ) ) { # get an array of redirect targets
- # Don't append the subtitle if this was an old revision
- $wgOut->addHTML( $this->viewRedirect( $rt, !$wasRedirected && $this->isCurrent() ) );
- $parseout = $wgParser->parse($text, $this->mTitle, ParserOptions::newFromUser($wgUser));
- $wgOut->addParserOutputNoText( $parseout );
- } else if( $pcache ) {
- # Display content and save to parser cache
- $this->outputWikiText( $text );
- } else {
- # Display content, don't attempt to save to parser cache
- # Don't show section-edit links on old revisions... this way lies madness.
- if( !$this->isCurrent() ) {
- $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
- }
- # Display content and don't save to parser cache
- # With timing hack -- TS 2006-07-26
- $time = -wfTime();
- $this->outputWikiText( $text, false );
- $time += wfTime();
-
- # Timing hack
- if( $time > 3 ) {
- wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
- $this->mTitle->getPrefixedDBkey()));
- }
-
- if( !$this->isCurrent() ) {
- $wgOut->parserOptions()->setEditSection( $oldEditSectionSetting );
- }
+ return true;
}
}
- /* title may have been set from the cache */
- $t = $wgOut->getPageTitle();
- if( empty( $t ) ) {
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
+ return false;
+ }
- # For the main page, overwrite the <title> element with the con-
- # tents of 'pagetitle-view-mainpage' instead of the default (if
- # that's not empty).
- if( $this->mTitle->equals( Title::newMainPage() ) &&
- wfMsgForContent( 'pagetitle-view-mainpage' ) !== '' ) {
- $wgOut->setHTMLTitle( wfMsgForContent( 'pagetitle-view-mainpage' ) );
+ /**
+ * Show a header specific to the namespace currently being viewed, like
+ * [[MediaWiki:Talkpagetext]]. For Article::view().
+ */
+ public function showNamespaceHeader() {
+ global $wgOut;
+ if ( $this->mTitle->isTalkPage() ) {
+ $msg = wfMsgNoTrans( 'talkpageheader' );
+ if ( $msg !== '-' && !wfEmptyMsg( 'talkpageheader', $msg ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"mw-talkpageheader\">\n$1</div>", array( 'talkpageheader' ) );
}
}
+ }
+ /**
+ * Show the footer section of an ordinary page view
+ */
+ public function showViewFooter() {
+ global $wgOut, $wgUseTrackbacks, $wgRequest;
# check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page
- if( $ns == NS_USER_TALK && IP::isValid( $this->mTitle->getText() ) ) {
- $wgOut->addWikiMsg('anontalkpagetext');
+ if ( $this->mTitle->getNamespace() == NS_USER_TALK && IP::isValid( $this->mTitle->getText() ) ) {
+ $wgOut->addWikiMsg( 'anontalkpagetext' );
}
# If we have been passed an &rcid= parameter, we want to give the user a
# chance to mark this new article as patrolled.
- if( !empty($rcid) && $this->mTitle->exists() && $this->mTitle->quickUserCan('patrol') ) {
- $wgOut->addHTML(
- "<div class='patrollink'>" .
- wfMsgHtml( 'markaspatrolledlink',
- $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml('markaspatrolledtext'),
- "action=markpatrolled&rcid=$rcid" )
- ) .
- '</div>'
- );
- }
+ $this->showPatrolFooter();
# Trackbacks
- if( $wgUseTrackbacks ) {
+ if ( $wgUseTrackbacks ) {
$this->addTrackbacks();
}
+ }
- $this->viewUpdates();
- wfProfileOut( __METHOD__ );
+ /**
+ * If patrol is possible, output a patrol UI box. This is called from the
+ * footer section of ordinary page views. If patrol is not possible or not
+ * desired, does nothing.
+ */
+ public function showPatrolFooter() {
+ global $wgOut, $wgRequest, $wgUser;
+ $rcid = $wgRequest->getVal( 'rcid' );
+
+ if ( !$rcid || !$this->mTitle->exists() || !$this->mTitle->quickUserCan( 'patrol' ) ) {
+ return;
+ }
+
+ $sk = $wgUser->getSkin();
+
+ $wgOut->addHTML(
+ "<div class='patrollink'>" .
+ wfMsgHtml(
+ 'markaspatrolledlink',
+ $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'markaspatrolledtext' ),
+ array(),
+ array(
+ 'action' => 'markpatrolled',
+ 'rcid' => $rcid
+ ),
+ array( 'known', 'noclasses' )
+ )
+ ) .
+ '</div>'
+ );
}
-
- protected function showDeletionLog() {
- global $wgUser, $wgOut;
- $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut );
- $pager = new LogPager( $loglist, 'delete', false, $this->mTitle->getPrefixedText() );
- if( $pager->getNumRows() > 0 ) {
- $pager->mLimit = 10;
- $wgOut->addHTML( '<div class="mw-warning-with-logexcerpt">' );
- $wgOut->addWikiMsg( 'deleted-notice' );
- $wgOut->addHTML(
- $loglist->beginLogEventsList() .
- $pager->getBody() .
- $loglist->endLogEventsList()
- );
- if( $pager->getNumRows() > 10 ) {
- $wgOut->addHTML( $wgUser->getSkin()->link(
- SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'deletelog-fulllog' ),
- array(),
- array( 'type' => 'delete', 'page' => $this->mTitle->getPrefixedText() )
- ) );
+
+ /**
+ * Show the error text for a missing article. For articles in the MediaWiki
+ * namespace, show the default message text. To be called from Article::view().
+ */
+ public function showMissingArticle() {
+ global $wgOut, $wgRequest, $wgUser;
+
+ # Show info in user (talk) namespace. Does the user exist? Is he blocked?
+ if ( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
+ $parts = explode( '/', $this->mTitle->getText() );
+ $rootPart = $parts[0];
+ $user = User::newFromName( $rootPart, false /* allow IP users*/ );
+ $ip = User::isIP( $rootPart );
+ if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
+ $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1</div>",
+ array( 'userpage-userdoesnotexist-view', $rootPart ) );
+ } else if ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'block',
+ $user->getUserPage()->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 1,
+ 'showIfEmpty' => false,
+ 'msgKey' => array(
+ 'blocked-notice-logextract',
+ $user->getName() # Support GENDER in notice
+ )
+ )
+ );
}
- $wgOut->addHTML( '</div>' );
+ }
+ wfRunHooks( 'ShowMissingArticle', array( $this ) );
+ # Show delete and move logs
+ LogEventsList::showLogExtract( $wgOut, array( 'delete', 'move' ), $this->mTitle->getPrefixedText(), '',
+ array( 'lim' => 10,
+ 'conds' => array( "log_action != 'revision'" ),
+ 'showIfEmpty' => false,
+ 'msgKey' => array( 'moveddeleted-notice' ) )
+ );
+
+ # Show error message
+ $oldid = $this->getOldID();
+ if ( $oldid ) {
+ $text = wfMsgNoTrans( 'missing-article',
+ $this->mTitle->getPrefixedText(),
+ wfMsgNoTrans( 'missingarticle-rev', $oldid ) );
+ } elseif ( $this->mTitle->getNamespace() === NS_MEDIAWIKI ) {
+ // Use the default message text
+ $text = $this->getContent();
+ } else {
+ $createErrors = $this->mTitle->getUserPermissionsErrors( 'create', $wgUser );
+ $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
+ $errors = array_merge( $createErrors, $editErrors );
+
+ if ( !count( $errors ) )
+ $text = wfMsgNoTrans( 'noarticletext' );
+ else
+ $text = wfMsgNoTrans( 'noarticletext-nopermission' );
+ }
+ $text = "<div class='noarticletext'>\n$text\n</div>";
+ if ( !$this->hasViewableContent() ) {
+ // If there's no backing content, send a 404 Not Found
+ // for better machine handling of broken links.
+ $wgRequest->response()->header( "HTTP/1.x 404 Not Found" );
+ }
+ $wgOut->addWikiText( $text );
+ }
+
+ /**
+ * If the revision requested for view is deleted, check permissions.
+ * Send either an error message or a warning header to $wgOut.
+ * Returns true if the view is allowed, false if not.
+ */
+ public function showDeletedRevisionHeader() {
+ global $wgOut, $wgRequest;
+ if ( !$this->mRevision->isDeleted( Revision::DELETED_TEXT ) ) {
+ // Not deleted
+ return true;
+ }
+ // If the user is not allowed to see it...
+ if ( !$this->mRevision->userCan( Revision::DELETED_TEXT ) ) {
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n",
+ 'rev-deleted-text-permission' );
+ return false;
+ // If the user needs to confirm that they want to see it...
+ } else if ( $wgRequest->getInt( 'unhide' ) != 1 ) {
+ # Give explanation and add a link to view the revision...
+ $oldid = intval( $this->getOldID() );
+ $link = $this->mTitle->getFullUrl( "oldid={$oldid}&unhide=1" );
+ $msg = $this->mRevision->isDeleted( Revision::DELETED_RESTRICTED ) ?
+ 'rev-suppressed-text-unhide' : 'rev-deleted-text-unhide';
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n",
+ array( $msg, $link ) );
+ return false;
+ // We are allowed to see...
+ } else {
+ $msg = $this->mRevision->isDeleted( Revision::DELETED_RESTRICTED ) ?
+ 'rev-suppressed-text-view' : 'rev-deleted-text-view';
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", $msg );
+ return true;
}
}
/*
* Should the parser cache be used?
*/
- protected function useParserCache( $oldid ) {
+ public function useParserCache( $oldid ) {
global $wgUser, $wgEnableParserCache;
return $wgEnableParserCache
@@ -1081,45 +1330,116 @@ class Article {
}
/**
+ * Execute the uncached parse for action=view
+ */
+ public function doViewParse() {
+ global $wgOut;
+ $oldid = $this->getOldID();
+ $useParserCache = $this->useParserCache( $oldid );
+ $parserOptions = clone $this->getParserOptions();
+ # Render printable version, use printable version cache
+ $parserOptions->setIsPrintable( $wgOut->isPrintable() );
+ # Don't show section-edit links on old revisions... this way lies madness.
+ $parserOptions->setEditSection( $this->isCurrent() );
+ $useParserCache = $this->useParserCache( $oldid );
+ $this->outputWikiText( $this->getContent(), $useParserCache, $parserOptions );
+ }
+
+ /**
+ * Try to fetch an expired entry from the parser cache. If it is present,
+ * output it and return true. If it is not present, output nothing and
+ * return false. This is used as a callback function for
+ * PoolCounter::executeProtected().
+ */
+ public function tryDirtyCache() {
+ global $wgOut;
+ $parserCache = ParserCache::singleton();
+ $options = $this->getParserOptions();
+ $options->setIsPrintable( $wgOut->isPrintable() );
+ $output = $parserCache->getDirty( $this, $options );
+ if ( $output ) {
+ wfDebug( __METHOD__ . ": sending dirty output\n" );
+ wfDebugLog( 'dirty', "dirty output " . $parserCache->getKey( $this, $options ) . "\n" );
+ $wgOut->setSquidMaxage( 0 );
+ $this->mParserOutput = $output;
+ $wgOut->addParserOutput( $output );
+ $wgOut->addHTML( "<!-- parser cache is expired, sending anyway due to pool overload-->\n" );
+ return true;
+ } else {
+ wfDebugLog( 'dirty', "dirty missing\n" );
+ wfDebug( __METHOD__ . ": no dirty cache\n" );
+ return false;
+ }
+ }
+
+ /**
+ * Show an error page for an error from the pool counter.
+ * @param $status Status
+ */
+ public function showPoolError( $status ) {
+ global $wgOut;
+ $wgOut->clearHTML(); // for release() errors
+ $wgOut->enableClientCache( false );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
+ $wgOut->addWikiText(
+ '<div class="errorbox">' .
+ $status->getWikiText( false, 'view-pool-error' ) .
+ '</div>'
+ );
+ }
+
+ /**
* View redirect
* @param $target Title object or Array of destination(s) to redirect
* @param $appendSubtitle Boolean [optional]
* @param $forceKnown Boolean: should the image be shown as a bluelink regardless of existence?
*/
public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
- global $wgParser, $wgOut, $wgContLang, $wgStylePath, $wgUser;
+ global $wgOut, $wgContLang, $wgStylePath, $wgUser;
# Display redirect
- if( !is_array( $target ) ) {
+ if ( !is_array( $target ) ) {
$target = array( $target );
}
- $imageDir = $wgContLang->isRTL() ? 'rtl' : 'ltr';
+ $imageDir = $wgContLang->getDir();
$imageUrl = $wgStylePath . '/common/images/redirect' . $imageDir . '.png';
$imageUrl2 = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png';
$alt2 = $wgContLang->isRTL() ? '&larr;' : '&rarr;'; // should -> and <- be used instead of entities?
-
- if( $appendSubtitle ) {
+
+ if ( $appendSubtitle ) {
$wgOut->appendSubtitle( wfMsgHtml( 'redirectpagesub' ) );
}
$sk = $wgUser->getSkin();
// the loop prepends the arrow image before the link, so the first case needs to be outside
$title = array_shift( $target );
- if( $forceKnown ) {
- $link = $sk->makeKnownLinkObj( $title, htmlspecialchars( $title->getFullText() ) );
+ if ( $forceKnown ) {
+ $link = $sk->link(
+ $title,
+ htmlspecialchars( $title->getFullText() ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
} else {
- $link = $sk->makeLinkObj( $title, htmlspecialchars( $title->getFullText() ) );
+ $link = $sk->link( $title, htmlspecialchars( $title->getFullText() ) );
}
// automatically append redirect=no to each link, since most of them are redirect pages themselves
- foreach( $target as $rt ) {
- if( $forceKnown ) {
- $link .= '<img src="'.$imageUrl2.'" alt="'.$alt2.' " />'
- . $sk->makeKnownLinkObj( $rt, htmlspecialchars( $rt->getFullText() ) );
+ foreach ( $target as $rt ) {
+ if ( $forceKnown ) {
+ $link .= '<img src="' . $imageUrl2 . '" alt="' . $alt2 . ' " />'
+ . $sk->link(
+ $rt,
+ htmlspecialchars( $rt->getFullText() ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
} else {
- $link .= '<img src="'.$imageUrl2.'" alt="'.$alt2.' " />'
- . $sk->makeLinkObj( $rt, htmlspecialchars( $rt->getFullText() ) );
+ $link .= '<img src="' . $imageUrl2 . '" alt="' . $alt2 . ' " />'
+ . $sk->link( $rt, htmlspecialchars( $rt->getFullText() ) );
}
}
- return '<img src="'.$imageUrl.'" alt="#REDIRECT " />' .
- '<span class="redirectText">'.$link.'</span>';
+ return '<img src="' . $imageUrl . '" alt="#REDIRECT " />' .
+ '<span class="redirectText">' . $link . '</span>';
}
@@ -1127,46 +1447,46 @@ class Article {
global $wgOut, $wgUser;
$dbr = wfGetDB( DB_SLAVE );
$tbs = $dbr->select( 'trackbacks',
- array('tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name'),
- array('tb_page' => $this->getID() )
+ array( 'tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name' ),
+ array( 'tb_page' => $this->getID() )
);
- if( !$dbr->numRows($tbs) ) return;
+ if ( !$dbr->numRows( $tbs ) ) return;
$tbtext = "";
- while( $o = $dbr->fetchObject($tbs) ) {
+ while ( $o = $dbr->fetchObject( $tbs ) ) {
$rmvtxt = "";
- if( $wgUser->isAllowed( 'trackback' ) ) {
- $delurl = $this->mTitle->getFullURL("action=deletetrackback&tbid=" .
+ if ( $wgUser->isAllowed( 'trackback' ) ) {
+ $delurl = $this->mTitle->getFullURL( "action=deletetrackback&tbid=" .
$o->tb_id . "&token=" . urlencode( $wgUser->editToken() ) );
$rmvtxt = wfMsg( 'trackbackremove', htmlspecialchars( $delurl ) );
}
$tbtext .= "\n";
- $tbtext .= wfMsg(strlen($o->tb_ex) ? 'trackbackexcerpt' : 'trackback',
+ $tbtext .= wfMsg( strlen( $o->tb_ex ) ? 'trackbackexcerpt' : 'trackback',
$o->tb_title,
$o->tb_url,
$o->tb_ex,
$o->tb_name,
- $rmvtxt);
+ $rmvtxt );
}
$wgOut->wrapWikiMsg( "<div id='mw_trackbacks'>$1</div>\n", array( 'trackbackbox', $tbtext ) );
$this->mTitle->invalidateCache();
}
public function deletetrackback() {
- global $wgUser, $wgRequest, $wgOut, $wgTitle;
- if( !$wgUser->matchEditToken($wgRequest->getVal('token')) ) {
+ global $wgUser, $wgRequest, $wgOut;
+ if ( !$wgUser->matchEditToken( $wgRequest->getVal( 'token' ) ) ) {
$wgOut->addWikiMsg( 'sessionfailure' );
return;
}
$permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser );
- if( count($permission_errors) ) {
+ if ( count( $permission_errors ) ) {
$wgOut->showPermissionsErrorPage( $permission_errors );
return;
}
$db = wfGetDB( DB_MASTER );
- $db->delete( 'trackbacks', array('tb_id' => $wgRequest->getInt('tbid')) );
+ $db->delete( 'trackbacks', array( 'tb_id' => $wgRequest->getInt( 'tbid' ) ) );
$wgOut->addWikiMsg( 'trackbackdeleteok' );
$this->mTitle->invalidateCache();
@@ -1174,7 +1494,7 @@ class Article {
public function render() {
global $wgOut;
- $wgOut->setArticleBodyOnly(true);
+ $wgOut->setArticleBodyOnly( true );
$this->view();
}
@@ -1183,19 +1503,19 @@ class Article {
*/
public function purge() {
global $wgUser, $wgRequest, $wgOut;
- if( $wgUser->isAllowed( 'purge' ) || $wgRequest->wasPosted() ) {
- if( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) {
+ if ( $wgUser->isAllowed( 'purge' ) || $wgRequest->wasPosted() ) {
+ if ( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) {
$this->doPurge();
$this->view();
}
} else {
$action = htmlspecialchars( $wgRequest->getRequestURL() );
- $button = wfMsgExt( 'confirm_purge_button', array('escapenoentities') );
+ $button = wfMsgExt( 'confirm_purge_button', array( 'escapenoentities' ) );
$form = "<form method=\"post\" action=\"$action\">\n" .
"<input type=\"submit\" name=\"submit\" value=\"$button\" />\n" .
"</form>\n";
- $top = wfMsgExt( 'confirm-purge-top', array('parse') );
- $bottom = wfMsgExt( 'confirm-purge-bottom', array('parse') );
+ $top = wfMsgExt( 'confirm-purge-top', array( 'parse' ) );
+ $bottom = wfMsgExt( 'confirm-purge-bottom', array( 'parse' ) );
$wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addHTML( $top . $form . $bottom );
@@ -1210,18 +1530,18 @@ class Article {
// Invalidate the cache
$this->mTitle->invalidateCache();
- if( $wgUseSquid ) {
+ if ( $wgUseSquid ) {
// Commit the transaction before the purge is sent
$dbw = wfGetDB( DB_MASTER );
- $dbw->immediateCommit();
+ $dbw->commit();
// Send purge
$update = SquidUpdate::newSimplePurge( $this->mTitle );
$update->doUpdate();
}
- if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
global $wgMessageCache;
- if( $this->getID() == 0 ) {
+ if ( $this->getID() == 0 ) {
$text = false;
} else {
$text = $this->getRawText();
@@ -1260,7 +1580,7 @@ class Article {
), __METHOD__, 'IGNORE' );
$affected = $dbw->affectedRows();
- if( $affected ) {
+ if ( $affected ) {
$newid = $dbw->insertId();
$this->mTitle->resetArticleId( $newid );
}
@@ -1279,7 +1599,7 @@ class Article {
* Giving 0 indicates the new page flag should be set
* on.
* @param $lastRevIsRedirect Boolean: if given, will optimize adding and
- * removing rows in redirect table.
+ * removing rows in redirect table.
* @return bool true on success, false on failure
* @private
*/
@@ -1290,7 +1610,7 @@ class Article {
$rt = Title::newFromRedirect( $text );
$conditions = array( 'page_id' => $this->getId() );
- if( !is_null( $lastRevision ) ) {
+ if ( !is_null( $lastRevision ) ) {
# An extra check against threads stepping on each other
$conditions['page_latest'] = $lastRevision;
}
@@ -1299,15 +1619,15 @@ class Article {
array( /* SET */
'page_latest' => $revision->getId(),
'page_touched' => $dbw->timestamp(),
- 'page_is_new' => ($lastRevision === 0) ? 1 : 0,
- 'page_is_redirect' => $rt !== NULL ? 1 : 0,
+ 'page_is_new' => ( $lastRevision === 0 ) ? 1 : 0,
+ 'page_is_redirect' => $rt !== null ? 1 : 0,
'page_len' => strlen( $text ),
),
$conditions,
__METHOD__ );
$result = $dbw->affectedRows() != 0;
- if( $result ) {
+ if ( $result ) {
$this->updateRedirectOn( $dbw, $rt, $lastRevIsRedirect );
}
@@ -1320,9 +1640,9 @@ class Article {
*
* @param $dbw Database
* @param $redirectTitle a title object pointing to the redirect target,
- * or NULL if this is not a redirect
+ * or NULL if this is not a redirect
* @param $lastRevIsRedirect If given, will optimize adding and
- * removing rows in redirect table.
+ * removing rows in redirect table.
* @return bool true on success, false on failure
* @private
*/
@@ -1330,10 +1650,10 @@ class Article {
// Always update redirects (target link might have changed)
// Update/Insert if we don't know if the last revision was a redirect or not
// Delete if changing from redirect to non-redirect
- $isRedirect = !is_null($redirectTitle);
- if($isRedirect || is_null($lastRevIsRedirect) || $lastRevIsRedirect !== $isRedirect) {
+ $isRedirect = !is_null( $redirectTitle );
+ if ( $isRedirect || is_null( $lastRevIsRedirect ) || $lastRevIsRedirect !== $isRedirect ) {
wfProfileIn( __METHOD__ );
- if( $isRedirect ) {
+ if ( $isRedirect ) {
// This title is a redirect, Add/Update row in the redirect table
$set = array( /* SET */
'rd_namespace' => $redirectTitle->getNamespace(),
@@ -1344,9 +1664,9 @@ class Article {
} else {
// This is not a redirect, remove row from redirect table
$where = array( 'rd_from' => $this->getId() );
- $dbw->delete( 'redirect', $where, __METHOD__);
+ $dbw->delete( 'redirect', $where, __METHOD__ );
}
- if( $this->getTitle()->getNamespace() == NS_FILE ) {
+ if ( $this->getTitle()->getNamespace() == NS_FILE ) {
RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $this->getTitle() );
}
wfProfileOut( __METHOD__ );
@@ -1371,8 +1691,8 @@ class Article {
'page_id' => $this->getId(),
'page_latest=rev_id' ),
__METHOD__ );
- if( $row ) {
- if( wfTimestamp(TS_MW, $row->rev_timestamp) >= $revision->getTimestamp() ) {
+ if ( $row ) {
+ if ( wfTimestamp( TS_MW, $row->rev_timestamp ) >= $revision->getTimestamp() ) {
wfProfileOut( __METHOD__ );
return false;
}
@@ -1392,27 +1712,27 @@ class Article {
* @param $section empty/null/false or a section number (0, 1, 2, T1, T2...)
* @return string Complete article text, or null if error
*/
- public function replaceSection( $section, $text, $summary = '', $edittime = NULL ) {
+ public function replaceSection( $section, $text, $summary = '', $edittime = null ) {
wfProfileIn( __METHOD__ );
- if( strval( $section ) == '' ) {
+ if ( strval( $section ) == '' ) {
// Whole-page edit; let the whole text through
} else {
- if( is_null($edittime) ) {
+ if ( is_null( $edittime ) ) {
$rev = Revision::newFromTitle( $this->mTitle );
} else {
$dbw = wfGetDB( DB_MASTER );
$rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime );
}
- if( !$rev ) {
+ if ( !$rev ) {
wfDebug( "Article::replaceSection asked for bogus section (page: " .
$this->getId() . "; section: $section; edittime: $edittime)\n" );
return null;
}
$oldtext = $rev->getText();
- if( $section == 'new' ) {
+ if ( $section == 'new' ) {
# Inserting a new section
- $subject = $summary ? wfMsgForContent('newsectionheaderdefaultlevel',$summary) . "\n\n" : '';
+ $subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : '';
$text = strlen( trim( $oldtext ) ) > 0
? "{$oldtext}\n\n{$subject}{$text}"
: "{$subject}{$text}";
@@ -1427,31 +1747,31 @@ class Article {
}
/**
- * @deprecated use Article::doEdit()
+ * This function is not deprecated until somebody fixes the core not to use
+ * it. Nevertheless, use Article::doEdit() instead.
*/
- function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC=false, $comment=false, $bot=false ) {
- wfDeprecated( __METHOD__ );
+ function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC = false, $comment = false, $bot = false ) {
$flags = EDIT_NEW | EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY |
( $isminor ? EDIT_MINOR : 0 ) |
( $suppressRC ? EDIT_SUPPRESS_RC : 0 ) |
( $bot ? EDIT_FORCE_BOT : 0 );
# If this is a comment, add the summary as headline
- if( $comment && $summary != "" ) {
- $text = wfMsgForContent('newsectionheaderdefaultlevel',$summary) . "\n\n".$text;
+ if ( $comment && $summary != "" ) {
+ $text = wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" . $text;
}
$this->doEdit( $text, $summary, $flags );
$dbw = wfGetDB( DB_MASTER );
- if($watchthis) {
- if(!$this->mTitle->userIsWatching()) {
+ if ( $watchthis ) {
+ if ( !$this->mTitle->userIsWatching() ) {
$dbw->begin();
$this->doWatch();
$dbw->commit();
}
} else {
- if( $this->mTitle->userIsWatching() ) {
+ if ( $this->mTitle->userIsWatching() ) {
$dbw->begin();
$this->doUnwatch();
$dbw->commit();
@@ -1464,25 +1784,24 @@ class Article {
* @deprecated use Article::doEdit()
*/
function updateArticle( $text, $summary, $minor, $watchthis, $forceBot = false, $sectionanchor = '' ) {
- wfDeprecated( __METHOD__ );
$flags = EDIT_UPDATE | EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY |
( $minor ? EDIT_MINOR : 0 ) |
( $forceBot ? EDIT_FORCE_BOT : 0 );
$status = $this->doEdit( $text, $summary, $flags );
- if( !$status->isOK() ) {
+ if ( !$status->isOK() ) {
return false;
}
$dbw = wfGetDB( DB_MASTER );
- if( $watchthis ) {
- if(!$this->mTitle->userIsWatching()) {
+ if ( $watchthis ) {
+ if ( !$this->mTitle->userIsWatching() ) {
$dbw->begin();
$this->doWatch();
$dbw->commit();
}
} else {
- if( $this->mTitle->userIsWatching() ) {
+ if ( $this->mTitle->userIsWatching() ) {
$dbw->begin();
$this->doUnwatch();
$dbw->commit();
@@ -1523,9 +1842,9 @@ class Article {
* Fill in blank summaries with generated text where possible
*
* If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the article will be detected.
- * If EDIT_UPDATE is specified and the article doesn't exist, the function will an
- * edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an
- * edit-already-exists error will be returned. These two conditions are also possible with
+ * If EDIT_UPDATE is specified and the article doesn't exist, the function will an
+ * edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an
+ * edit-already-exists error will be returned. These two conditions are also possible with
* auto-detection due to MediaWiki's performance-optimised locking strategy.
*
* @param $baseRevId the revision ID this edit was based off, if any
@@ -1550,47 +1869,47 @@ class Article {
global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries;
# Low-level sanity check
- if( $this->mTitle->getText() == '' ) {
+ if ( $this->mTitle->getText() == '' ) {
throw new MWException( 'Something is trying to edit an article with an empty title' );
}
wfProfileIn( __METHOD__ );
- $user = is_null($user) ? $wgUser : $user;
+ $user = is_null( $user ) ? $wgUser : $user;
$status = Status::newGood( array() );
# Load $this->mTitle->getArticleID() and $this->mLatest if it's not already
- $this->loadPageData();
+ $this->loadPageData();
- if( !($flags & EDIT_NEW) && !($flags & EDIT_UPDATE) ) {
+ if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) {
$aid = $this->mTitle->getArticleID();
- if( $aid ) {
+ if ( $aid ) {
$flags |= EDIT_UPDATE;
} else {
$flags |= EDIT_NEW;
}
}
- if( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary,
+ if ( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary,
$flags & EDIT_MINOR, null, null, &$flags, &$status ) ) )
{
wfDebug( __METHOD__ . ": ArticleSave hook aborted save!\n" );
wfProfileOut( __METHOD__ );
- if( $status->isOK() ) {
- $status->fatal( 'edit-hook-aborted');
+ if ( $status->isOK() ) {
+ $status->fatal( 'edit-hook-aborted' );
}
return $status;
}
# Silently ignore EDIT_MINOR if not allowed
- $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed('minoredit');
+ $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' );
$bot = $flags & EDIT_FORCE_BOT;
$oldtext = $this->getRawText(); // current revision
$oldsize = strlen( $oldtext );
# Provide autosummaries if one is not provided and autosummaries are enabled.
- if( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) {
+ if ( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) {
$summary = $this->getAutosummary( $oldtext, $text, $flags );
}
@@ -1600,12 +1919,13 @@ class Article {
$dbw = wfGetDB( DB_MASTER );
$now = wfTimestampNow();
+ $this->mTimestamp = $now;
- if( $flags & EDIT_UPDATE ) {
+ if ( $flags & EDIT_UPDATE ) {
# Update article, but only if changed.
$status->value['new'] = false;
# Make sure the revision is either completely inserted or not inserted at all
- if( !$wgDBtransactions ) {
+ if ( !$wgDBtransactions ) {
$userAbort = ignore_user_abort( true );
}
@@ -1613,14 +1933,14 @@ class Article {
$changed = ( strcmp( $text, $oldtext ) != 0 );
- if( $changed ) {
+ if ( $changed ) {
$this->mGoodAdjustment = (int)$this->isCountable( $text )
- (int)$this->isCountable( $oldtext );
$this->mTotalAdjustment = 0;
- if( !$this->mLatest ) {
+ if ( !$this->mLatest ) {
# Article gone missing
- wfDebug( __METHOD__.": EDIT_UPDATE specified but article doesn't exist\n" );
+ wfDebug( __METHOD__ . ": EDIT_UPDATE specified but article doesn't exist\n" );
$status->fatal( 'edit-gone-missing' );
wfProfileOut( __METHOD__ );
return $status;
@@ -1641,36 +1961,36 @@ class Article {
# Update page
#
- # Note that we use $this->mLatest instead of fetching a value from the master DB
- # during the course of this function. This makes sure that EditPage can detect
- # edit conflicts reliably, either by $ok here, or by $article->getTimestamp()
+ # Note that we use $this->mLatest instead of fetching a value from the master DB
+ # during the course of this function. This makes sure that EditPage can detect
+ # edit conflicts reliably, either by $ok here, or by $article->getTimestamp()
# before this function is called. A previous function used a separate query, this
# creates a window where concurrent edits can cause an ignored edit conflict.
$ok = $this->updateRevisionOn( $dbw, $revision, $this->mLatest );
- if( !$ok ) {
+ if ( !$ok ) {
/* Belated edit conflict! Run away!! */
$status->fatal( 'edit-conflict' );
# Delete the invalid revision if the DB is not transactional
- if( !$wgDBtransactions ) {
+ if ( !$wgDBtransactions ) {
$dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ );
}
$revisionId = 0;
$dbw->rollback();
} else {
global $wgUseRCPatrol;
- wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, $baseRevId, $user) );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, $baseRevId, $user ) );
# Update recentchanges
- if( !( $flags & EDIT_SUPPRESS_RC ) ) {
+ if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
# Mark as patrolled if the user can do so
- $patrolled = $wgUseRCPatrol && $this->mTitle->userCan('autopatrol');
+ $patrolled = $wgUseRCPatrol && $this->mTitle->userCan( 'autopatrol' );
# Add RC row to the DB
$rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary,
$this->mLatest, $this->getTimestamp(), $bot, '', $oldsize, $newsize,
$revisionId, $patrolled
);
# Log auto-patrolled edits
- if( $patrolled ) {
+ if ( $patrolled ) {
PatrolLog::record( $rc, true );
}
}
@@ -1687,11 +2007,11 @@ class Article {
$this->mTitle->invalidateCache();
}
- if( !$wgDBtransactions ) {
+ if ( !$wgDBtransactions ) {
ignore_user_abort( $userAbort );
}
// Now that ignore_user_abort is restored, we can respond to fatal errors
- if( !$status->isOK() ) {
+ if ( !$status->isOK() ) {
wfProfileOut( __METHOD__ );
return $status;
}
@@ -1717,7 +2037,7 @@ class Article {
# This will return false if the article already exists
$newid = $this->insertOn( $dbw );
- if( $newid === false ) {
+ if ( $newid === false ) {
$dbw->rollback();
$status->fatal( 'edit-already-exists' );
wfProfileOut( __METHOD__ );
@@ -1740,17 +2060,17 @@ class Article {
# Update the page record with revision data
$this->updateRevisionOn( $dbw, $revision, 0 );
- wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, false, $user) );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) );
# Update recentchanges
- if( !( $flags & EDIT_SUPPRESS_RC ) ) {
+ if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
global $wgUseRCPatrol, $wgUseNPPatrol;
# Mark as patrolled if the user can do so
- $patrolled = ($wgUseRCPatrol || $wgUseNPPatrol) && $this->mTitle->userCan('autopatrol');
+ $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && $this->mTitle->userCan( 'autopatrol' );
# Add RC row to the DB
$rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot,
- '', strlen($text), $revisionId, $patrolled );
+ '', strlen( $text ), $revisionId, $patrolled );
# Log auto-patrolled edits
- if( $patrolled ) {
+ if ( $patrolled ) {
PatrolLog::record( $rc, true );
}
}
@@ -1768,7 +2088,7 @@ class Article {
}
# Do updates right now unless deferral was requested
- if( !( $flags & EDIT_DEFER_UPDATES ) ) {
+ if ( !( $flags & EDIT_DEFER_UPDATES ) ) {
wfDoUpdates();
}
@@ -1800,9 +2120,9 @@ class Article {
*/
public function doRedirect( $noRedir = false, $sectionAnchor = '', $extraQuery = '' ) {
global $wgOut;
- if( $noRedir ) {
+ if ( $noRedir ) {
$query = 'redirect=no';
- if( $extraQuery )
+ if ( $extraQuery )
$query .= "&$query";
} else {
$query = $extraQuery;
@@ -1818,63 +2138,62 @@ class Article {
$wgOut->setRobotPolicy( 'noindex,nofollow' );
# If we haven't been given an rc_id value, we can't do anything
- $rcid = (int) $wgRequest->getVal('rcid');
- $rc = RecentChange::newFromId($rcid);
- if( is_null($rc) ) {
+ $rcid = (int) $wgRequest->getVal( 'rcid' );
+ $rc = RecentChange::newFromId( $rcid );
+ if ( is_null( $rc ) ) {
$wgOut->showErrorPage( 'markedaspatrollederror', 'markedaspatrollederrortext' );
return;
}
- #It would be nice to see where the user had actually come from, but for now just guess
+ # It would be nice to see where the user had actually come from, but for now just guess
$returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
$return = SpecialPage::getTitleFor( $returnto );
$dbw = wfGetDB( DB_MASTER );
$errors = $rc->doMarkPatrolled();
- if( in_array(array('rcpatroldisabled'), $errors) ) {
+ if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
$wgOut->showErrorPage( 'rcpatroldisabled', 'rcpatroldisabledtext' );
return;
}
-
- if( in_array(array('hookaborted'), $errors) ) {
+
+ if ( in_array( array( 'hookaborted' ), $errors ) ) {
// The hook itself has handled any output
return;
}
-
- if( in_array(array('markedaspatrollederror-noautopatrol'), $errors) ) {
+
+ if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
$wgOut->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
$wgOut->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
$wgOut->returnToMain( false, $return );
return;
}
- if( !empty($errors) ) {
+ if ( !empty( $errors ) ) {
$wgOut->showPermissionsErrorPage( $errors );
return;
}
# Inform the user
$wgOut->setPageTitle( wfMsg( 'markedaspatrolled' ) );
- $wgOut->addWikiMsg( 'markedaspatrolledtext' );
+ $wgOut->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
$wgOut->returnToMain( false, $return );
}
/**
* User-interface handler for the "watch" action
*/
-
public function watch() {
global $wgUser, $wgOut;
- if( $wgUser->isAnon() ) {
+ if ( $wgUser->isAnon() ) {
$wgOut->showErrorPage( 'watchnologin', 'watchnologintext' );
return;
}
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
- if( $this->doWatch() ) {
+ if ( $this->doWatch() ) {
$wgOut->setPagetitle( wfMsg( 'addedwatch' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addWikiMsg( 'addedwatchtext', $this->mTitle->getPrefixedText() );
@@ -1888,12 +2207,12 @@ class Article {
*/
public function doWatch() {
global $wgUser;
- if( $wgUser->isAnon() ) {
+ if ( $wgUser->isAnon() ) {
return false;
}
- if( wfRunHooks('WatchArticle', array(&$wgUser, &$this)) ) {
+ if ( wfRunHooks( 'WatchArticle', array( &$wgUser, &$this ) ) ) {
$wgUser->addWatch( $this->mTitle );
- return wfRunHooks('WatchArticleComplete', array(&$wgUser, &$this));
+ return wfRunHooks( 'WatchArticleComplete', array( &$wgUser, &$this ) );
}
return false;
}
@@ -1903,15 +2222,15 @@ class Article {
*/
public function unwatch() {
global $wgUser, $wgOut;
- if( $wgUser->isAnon() ) {
+ if ( $wgUser->isAnon() ) {
$wgOut->showErrorPage( 'watchnologin', 'watchnologintext' );
return;
}
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
- if( $this->doUnwatch() ) {
+ if ( $this->doUnwatch() ) {
$wgOut->setPagetitle( wfMsg( 'removedwatch' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addWikiMsg( 'removedwatchtext', $this->mTitle->getPrefixedText() );
@@ -1925,12 +2244,12 @@ class Article {
*/
public function doUnwatch() {
global $wgUser;
- if( $wgUser->isAnon() ) {
+ if ( $wgUser->isAnon() ) {
return false;
}
- if( wfRunHooks('UnwatchArticle', array(&$wgUser, &$this)) ) {
+ if ( wfRunHooks( 'UnwatchArticle', array( &$wgUser, &$this ) ) ) {
$wgUser->removeWatch( $this->mTitle );
- return wfRunHooks('UnwatchArticleComplete', array(&$wgUser, &$this));
+ return wfRunHooks( 'UnwatchArticleComplete', array( &$wgUser, &$this ) );
}
return false;
}
@@ -1960,25 +2279,27 @@ class Article {
* @return bool true on success
*/
public function updateRestrictions( $limit = array(), $reason = '', &$cascade = 0, $expiry = array() ) {
- global $wgUser, $wgRestrictionTypes, $wgContLang;
+ global $wgUser, $wgContLang;
+
+ $restrictionTypes = $this->mTitle->getRestrictionTypes();
$id = $this->mTitle->getArticleID();
if ( $id <= 0 ) {
wfDebug( "updateRestrictions failed: $id <= 0\n" );
return false;
}
-
+
if ( wfReadOnly() ) {
wfDebug( "updateRestrictions failed: read-only\n" );
return false;
}
-
+
if ( !$this->mTitle->userCan( 'protect' ) ) {
wfDebug( "updateRestrictions failed: insufficient permissions\n" );
return false;
}
- if( !$cascade ) {
+ if ( !$cascade ) {
$cascade = false;
}
@@ -1990,17 +2311,17 @@ class Article {
$current = array();
$updated = Article::flattenRestrictions( $limit );
$changed = false;
- foreach( $wgRestrictionTypes as $action ) {
- if( isset( $expiry[$action] ) ) {
+ foreach ( $restrictionTypes as $action ) {
+ if ( isset( $expiry[$action] ) ) {
# Get current restrictions on $action
$aLimits = $this->mTitle->getRestrictions( $action );
$current[$action] = implode( '', $aLimits );
# Are any actual restrictions being dealt with here?
- $aRChanged = count($aLimits) || !empty($limit[$action]);
+ $aRChanged = count( $aLimits ) || !empty( $limit[$action] );
# If something changed, we need to log it. Checking $aRChanged
# assures that "unprotecting" a page that is not protected does
# not log just because the expiry was "changed".
- if( $aRChanged && $this->mTitle->mRestrictionsExpiry[$action] != $expiry[$action] ) {
+ if ( $aRChanged && $this->mTitle->mRestrictionsExpiry[$action] != $expiry[$action] ) {
$changed = true;
}
}
@@ -2008,19 +2329,19 @@ class Article {
$current = Article::flattenRestrictions( $current );
- $changed = ($changed || $current != $updated );
- $changed = $changed || ($updated && $this->mTitle->areRestrictionsCascading() != $cascade);
+ $changed = ( $changed || $current != $updated );
+ $changed = $changed || ( $updated && $this->mTitle->areRestrictionsCascading() != $cascade );
$protect = ( $updated != '' );
# If nothing's changed, do nothing
- if( $changed ) {
- if( wfRunHooks( 'ArticleProtect', array( &$this, &$wgUser, $limit, $reason ) ) ) {
+ if ( $changed ) {
+ if ( wfRunHooks( 'ArticleProtect', array( &$this, &$wgUser, $limit, $reason ) ) ) {
$dbw = wfGetDB( DB_MASTER );
-
+
# Prepare a null revision to be added to the history
$modified = $current != '' && $protect;
- if( $protect ) {
+ if ( $protect ) {
$comment_type = $modified ? 'modifiedarticleprotection' : 'protectedarticle';
} else {
$comment_type = 'unprotectedarticle';
@@ -2031,51 +2352,51 @@ class Article {
# Otherwise, people who cannot normally protect can "protect" pages via transclusion
$editrestriction = isset( $limit['edit'] ) ? array( $limit['edit'] ) : $this->mTitle->getRestrictions( 'edit' );
# The schema allows multiple restrictions
- if(!in_array('protect', $editrestriction) && !in_array('sysop', $editrestriction))
+ if ( !in_array( 'protect', $editrestriction ) && !in_array( 'sysop', $editrestriction ) )
$cascade = false;
- $cascade_description = '';
- if( $cascade ) {
- $cascade_description = ' ['.wfMsgForContent('protect-summary-cascade').']';
+ $cascade_description = '';
+ if ( $cascade ) {
+ $cascade_description = ' [' . wfMsgForContent( 'protect-summary-cascade' ) . ']';
}
- if( $reason )
+ if ( $reason )
$comment .= ": $reason";
$editComment = $comment;
$encodedExpiry = array();
$protect_description = '';
- foreach( $limit as $action => $restrictions ) {
- if ( !isset($expiry[$action]) )
+ foreach ( $limit as $action => $restrictions ) {
+ if ( !isset( $expiry[$action] ) )
$expiry[$action] = 'infinite';
-
- $encodedExpiry[$action] = Block::encodeExpiry($expiry[$action], $dbw );
- if( $restrictions != '' ) {
+
+ $encodedExpiry[$action] = Block::encodeExpiry( $expiry[$action], $dbw );
+ if ( $restrictions != '' ) {
$protect_description .= "[$action=$restrictions] (";
- if( $encodedExpiry[$action] != 'infinity' ) {
- $protect_description .= wfMsgForContent( 'protect-expiring',
+ if ( $encodedExpiry[$action] != 'infinity' ) {
+ $protect_description .= wfMsgForContent( 'protect-expiring',
$wgContLang->timeanddate( $expiry[$action], false, false ) ,
$wgContLang->date( $expiry[$action], false, false ) ,
- $wgContLang->time( $expiry[$action], false, false ) );
+ $wgContLang->time( $expiry[$action], false, false ) );
} else {
$protect_description .= wfMsgForContent( 'protect-expiry-indefinite' );
}
$protect_description .= ') ';
}
}
- $protect_description = trim($protect_description);
-
- if( $protect_description && $protect )
+ $protect_description = trim( $protect_description );
+
+ if ( $protect_description && $protect )
$editComment .= " ($protect_description)";
- if( $cascade )
+ if ( $cascade )
$editComment .= "$cascade_description";
# Update restrictions table
- foreach( $limit as $action => $restrictions ) {
- if($restrictions != '' ) {
- $dbw->replace( 'page_restrictions', array(array('pr_page', 'pr_type')),
- array( 'pr_page' => $id,
- 'pr_type' => $action,
- 'pr_level' => $restrictions,
- 'pr_cascade' => ($cascade && $action == 'edit') ? 1 : 0,
+ foreach ( $limit as $action => $restrictions ) {
+ if ( $restrictions != '' ) {
+ $dbw->replace( 'page_restrictions', array( array( 'pr_page', 'pr_type' ) ),
+ array( 'pr_page' => $id,
+ 'pr_type' => $action,
+ 'pr_level' => $restrictions,
+ 'pr_cascade' => ( $cascade && $action == 'edit' ) ? 1 : 0,
'pr_expiry' => $encodedExpiry[$action] ), __METHOD__ );
} else {
$dbw->delete( 'page_restrictions', array( 'pr_page' => $id,
@@ -2099,14 +2420,14 @@ class Article {
), 'Article::protect'
);
- wfRunHooks( 'NewRevisionFromEditComplete', array($this, $nullRevision, $latest, $wgUser) );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $nullRevision, $latest, $wgUser ) );
wfRunHooks( 'ArticleProtectComplete', array( &$this, &$wgUser, $limit, $reason ) );
# Update the protection log
$log = new LogPage( 'protect' );
- if( $protect ) {
- $params = array($protect_description,$cascade ? 'cascade' : '');
- $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason), $params );
+ if ( $protect ) {
+ $params = array( $protect_description, $cascade ? 'cascade' : '' );
+ $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason ), $params );
} else {
$log->addEntry( 'unprotect', $this->mTitle, $reason );
}
@@ -2124,13 +2445,13 @@ class Article {
* @return String
*/
protected static function flattenRestrictions( $limit ) {
- if( !is_array( $limit ) ) {
+ if ( !is_array( $limit ) ) {
throw new MWException( 'Article::flattenRestrictions given non-array restriction set' );
}
$bits = array();
ksort( $limit );
- foreach( $limit as $action => $restrictions ) {
- if( $restrictions != '' ) {
+ foreach ( $limit as $action => $restrictions ) {
+ if ( $restrictions != '' ) {
$bits[] = "$action=$restrictions";
}
}
@@ -2146,7 +2467,7 @@ class Article {
$dbw = wfGetDB( DB_MASTER );
// Get the last revision
$rev = Revision::newFromTitle( $this->mTitle );
- if( is_null( $rev ) )
+ if ( is_null( $rev ) )
return false;
// Get the article's contents
@@ -2154,9 +2475,9 @@ class Article {
$blank = false;
// If the page is blank, use the text from the previous revision,
// which can only be blank if there's a move/import/protect dummy revision involved
- if( $contents == '' ) {
+ if ( $contents == '' ) {
$prev = $rev->getPrevious();
- if( $prev ) {
+ if ( $prev ) {
$contents = $prev->getText();
$blank = true;
}
@@ -2164,23 +2485,21 @@ class Article {
// Find out if there was only one contributor
// Only scan the last 20 revisions
- $limit = 20;
$res = $dbw->select( 'revision', 'rev_user_text',
- array( 'rev_page' => $this->getID() ), __METHOD__,
- array( 'LIMIT' => $limit )
+ array( 'rev_page' => $this->getID(), $dbw->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' ),
+ __METHOD__,
+ array( 'LIMIT' => 20 )
);
- if( $res === false )
+ if ( $res === false )
// This page has no revisions, which is very weird
return false;
- if( $res->numRows() > 1 )
- $hasHistory = true;
- else
- $hasHistory = false;
+
+ $hasHistory = ( $res->numRows() > 1 );
$row = $dbw->fetchObject( $res );
$onlyAuthor = $row->rev_user_text;
// Try to find a second contributor
- foreach( $res as $row ) {
- if( $row->rev_user_text != $onlyAuthor ) {
+ foreach ( $res as $row ) {
+ if ( $row->rev_user_text != $onlyAuthor ) {
$onlyAuthor = false;
break;
}
@@ -2188,18 +2507,18 @@ class Article {
$dbw->freeResult( $res );
// Generate the summary with a '$1' placeholder
- if( $blank ) {
+ if ( $blank ) {
// The current revision is blank and the one before is also
// blank. It's just not our lucky day
$reason = wfMsgForContent( 'exbeforeblank', '$1' );
} else {
- if( $onlyAuthor )
+ if ( $onlyAuthor )
$reason = wfMsgForContent( 'excontentauthor', '$1', $onlyAuthor );
else
$reason = wfMsgForContent( 'excontent', '$1' );
}
-
- if( $reason == '-' ) {
+
+ if ( $reason == '-' ) {
// Allow these UI messages to be blanked out cleanly
return '';
}
@@ -2208,7 +2527,7 @@ class Article {
$contents = preg_replace( "/[\n\r]/", ' ', $contents );
// Calculate the maximum amount of chars to get
// Max content length = max comment length - length of the comment (excl. $1) - '...'
- $maxLength = 255 - (strlen( $reason ) - 2) - 3;
+ $maxLength = 255 - ( strlen( $reason ) - 2 ) - 3;
$contents = $wgContLang->truncate( $contents, $maxLength );
// Remove possible unfinished links
$contents = preg_replace( '/\[\[([^\]]*)\]?$/', '$1', $contents );
@@ -2232,10 +2551,10 @@ class Article {
$reason = $this->DeleteReasonList;
- if( $reason != 'other' && $this->DeleteReason != '' ) {
+ if ( $reason != 'other' && $this->DeleteReason != '' ) {
// Entry from drop down menu + additional comment
$reason .= wfMsgForContent( 'colon-separator' ) . $this->DeleteReason;
- } elseif( $reason == 'other' ) {
+ } elseif ( $reason == 'other' ) {
$reason = $this->DeleteReason;
}
# Flag to hide all contents of the archived revisions
@@ -2244,7 +2563,7 @@ class Article {
# This code desperately needs to be totally rewritten
# Read-only check...
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
@@ -2252,7 +2571,7 @@ class Article {
# Check permissions
$permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser );
- if( count( $permission_errors ) > 0 ) {
+ if ( count( $permission_errors ) > 0 ) {
$wgOut->showPermissionsErrorPage( $permission_errors );
return;
}
@@ -2263,27 +2582,37 @@ class Article {
$dbw = wfGetDB( DB_MASTER );
$conds = $this->mTitle->pageCond();
$latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
- if( $latest === false ) {
- $wgOut->showFatalError( wfMsgExt( 'cannotdelete', array( 'parse' ) ) );
+ if ( $latest === false ) {
+ $wgOut->showFatalError(
+ Html::rawElement(
+ 'div',
+ array( 'class' => 'error mw-error-cannotdelete' ),
+ wfMsgExt( 'cannotdelete', array( 'parse' ), $this->mTitle->getPrefixedText() )
+ )
+ );
$wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
- LogEventsList::showLogExtract( $wgOut, 'delete', $this->mTitle->getPrefixedText() );
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'delete',
+ $this->mTitle->getPrefixedText()
+ );
return;
}
# Hack for big sites
$bigHistory = $this->isBigDeletion();
- if( $bigHistory && !$this->mTitle->userCan( 'bigdelete' ) ) {
+ if ( $bigHistory && !$this->mTitle->userCan( 'bigdelete' ) ) {
global $wgLang, $wgDeleteRevisionsLimit;
$wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n",
array( 'delete-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) ) );
return;
}
- if( $confirm ) {
+ if ( $confirm ) {
$this->doDelete( $reason, $suppress );
- if( $wgRequest->getCheck( 'wpWatch' ) ) {
+ if ( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
$this->doWatch();
- } elseif( $this->mTitle->userIsWatching() ) {
+ } elseif ( $this->mTitle->userIsWatching() ) {
$this->doUnwatch();
}
return;
@@ -2291,14 +2620,20 @@ class Article {
// Generate deletion reason
$hasHistory = false;
- if( !$reason ) $reason = $this->generateReason($hasHistory);
+ if ( !$reason ) $reason = $this->generateReason( $hasHistory );
// If the page has a history, insert a warning
- if( $hasHistory && !$confirm ) {
+ if ( $hasHistory && !$confirm ) {
+ global $wgLang;
$skin = $wgUser->getSkin();
- $wgOut->addHTML( '<strong>' . wfMsgExt( 'historywarning', array( 'parseinline' ) ) . ' ' . $skin->historyLink() . '</strong>' );
- if( $bigHistory ) {
- global $wgLang, $wgDeleteRevisionsLimit;
+ $revisions = $this->estimateRevisionCount();
+ $wgOut->addHTML( '<strong class="mw-delete-warning-revisions">' .
+ wfMsgExt( 'historywarning', array( 'parseinline' ), $wgLang->formatNum( $revisions ) ) .
+ wfMsgHtml( 'word-separator' ) . $skin->historyLink() .
+ '</strong>'
+ );
+ if ( $bigHistory ) {
+ global $wgDeleteRevisionsLimit;
$wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n",
array( 'delete-warning-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) ) );
}
@@ -2312,7 +2647,7 @@ class Article {
*/
public function isBigDeletion() {
global $wgDeleteRevisionsLimit;
- if( $wgDeleteRevisionsLimit ) {
+ if ( $wgDeleteRevisionsLimit ) {
$revCount = $this->estimateRevisionCount();
return $revCount > $wgDeleteRevisionsLimit;
}
@@ -2325,10 +2660,10 @@ class Article {
public function estimateRevisionCount() {
$dbr = wfGetDB( DB_SLAVE );
// For an exact count...
- //return $dbr->selectField( 'revision', 'COUNT(*)',
+ // return $dbr->selectField( 'revision', 'COUNT(*)',
// array( 'rev_page' => $this->getId() ), __METHOD__ );
return $dbr->estimateRowCount( 'revision', '*',
- array( 'rev_page' => $this->getId() ), __METHOD__ );
+ array( 'rev_page' => $this->getId() ), __METHOD__ );
}
/**
@@ -2355,12 +2690,12 @@ class Article {
'LIMIT' => $num
) )
);
- if( !$res ) {
+ if ( !$res ) {
wfProfileOut( __METHOD__ );
return array();
}
$row = $db->fetchObject( $res );
- if( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) {
+ if ( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) {
$db = wfGetDB( DB_MASTER );
$continue--;
} else {
@@ -2385,24 +2720,33 @@ class Article {
wfDebug( "Article::confirmDelete\n" );
- $wgOut->setSubtitle( wfMsgHtml( 'delete-backlink', $wgUser->getSkin()->makeKnownLinkObj( $this->mTitle ) ) );
+ $deleteBackLink = $wgUser->getSkin()->link(
+ $this->mTitle,
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ $wgOut->setSubtitle( wfMsgHtml( 'delete-backlink', $deleteBackLink ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addWikiMsg( 'confirmdeletetext' );
- if( $wgUser->isAllowed( 'suppressrevision' ) ) {
+ wfRunHooks( 'ArticleConfirmDelete', array( $this, $wgOut, &$reason ) );
+
+ if ( $wgUser->isAllowed( 'suppressrevision' ) ) {
$suppress = "<tr id=\"wpDeleteSuppressRow\" name=\"wpDeleteSuppressRow\">
<td></td>
- <td class='mw-input'>" .
+ <td class='mw-input'><strong>" .
Xml::checkLabel( wfMsg( 'revdelete-suppress' ),
'wpSuppress', 'wpSuppress', false, array( 'tabindex' => '4' ) ) .
- "</td>
+ "</strong></td>
</tr>";
} else {
$suppress = '';
}
$checkWatch = $wgUser->getBoolOption( 'watchdeletion' ) || $this->mTitle->userIsWatching();
- $form = Xml::openElement( 'form', array( 'method' => 'post',
+ $form = Xml::openElement( 'form', array( 'method' => 'post',
'action' => $this->mTitle->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
Xml::openElement( 'fieldset', array( 'id' => 'mw-delete-table' ) ) .
Xml::tags( 'legend', null, wfMsgExt( 'delete-legend', array( 'parsemag', 'escapenoentities' ) ) ) .
@@ -2422,17 +2766,27 @@ class Article {
Xml::label( wfMsg( 'deleteotherreason' ), 'wpReason' ) .
"</td>
<td class='mw-input'>" .
- Xml::input( 'wpReason', 60, $reason, array( 'type' => 'text', 'maxlength' => '255',
- 'tabindex' => '2', 'id' => 'wpReason' ) ) .
+ Html::input( 'wpReason', $reason, 'text', array(
+ 'size' => '60',
+ 'maxlength' => '255',
+ 'tabindex' => '2',
+ 'id' => 'wpReason',
+ 'autofocus'
+ ) ) .
"</td>
- </tr>
+ </tr>";
+ # Dissalow watching is user is not logged in
+ if ( $wgUser->isLoggedIn() ) {
+ $form .= "
<tr>
<td></td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'watchthis' ),
'wpWatch', 'wpWatch', $checkWatch, array( 'tabindex' => '3' ) ) .
"</td>
- </tr>
+ </tr>";
+ }
+ $form .= "
$suppress
<tr>
<td></td>
@@ -2446,14 +2800,25 @@ class Article {
Xml::hidden( 'wpEditToken', $wgUser->editToken() ) .
Xml::closeElement( 'form' );
- if( $wgUser->isAllowed( 'editinterface' ) ) {
+ if ( $wgUser->isAllowed( 'editinterface' ) ) {
$skin = $wgUser->getSkin();
- $link = $skin->makeLink ( 'MediaWiki:Deletereason-dropdown', wfMsgHtml( 'delete-edit-reasonlist' ) );
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
+ $link = $skin->link(
+ $title,
+ wfMsgHtml( 'delete-edit-reasonlist' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
$form .= '<p class="mw-delete-editreasons">' . $link . '</p>';
}
$wgOut->addHTML( $form );
- LogEventsList::showLogExtract( $wgOut, 'delete', $this->mTitle->getPrefixedText() );
+ $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'delete',
+ $this->mTitle->getPrefixedText()
+ );
}
/**
@@ -2464,8 +2829,8 @@ class Article {
$id = $this->mTitle->getArticleID( GAID_FOR_UPDATE );
$error = '';
- if( wfRunHooks('ArticleDelete', array(&$this, &$wgUser, &$reason, &$error)) ) {
- if( $this->doDeleteArticle( $reason, $suppress, $id ) ) {
+ if ( wfRunHooks( 'ArticleDelete', array( &$this, &$wgUser, &$reason, &$error ) ) ) {
+ if ( $this->doDeleteArticle( $reason, $suppress, $id ) ) {
$deleted = $this->mTitle->getPrefixedText();
$wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
@@ -2475,15 +2840,25 @@ class Article {
$wgOut->addWikiMsg( 'deletedtext', $deleted, $loglink );
$wgOut->returnToMain( false );
- wfRunHooks('ArticleDeleteComplete', array(&$this, &$wgUser, $reason, $id));
+ wfRunHooks( 'ArticleDeleteComplete', array( &$this, &$wgUser, $reason, $id ) );
+ }
+ } else {
+ if ( $error == '' ) {
+ $wgOut->showFatalError(
+ Html::rawElement(
+ 'div',
+ array( 'class' => 'error mw-error-cannotdelete' ),
+ wfMsgExt( 'cannotdelete', array( 'parse' ), $this->mTitle->getPrefixedText() )
+ )
+ );
+ $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'delete',
+ $this->mTitle->getPrefixedText()
+ );
} else {
- if( $error == '' ) {
- $wgOut->showFatalError( wfMsgExt( 'cannotdelete', array( 'parse' ) ) );
- $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
- LogEventsList::showLogExtract( $wgOut, 'delete', $this->mTitle->getPrefixedText() );
- } else {
- $wgOut->showFatalError( $error );
- }
+ $wgOut->showFatalError( $error );
}
}
}
@@ -2497,22 +2872,22 @@ class Article {
global $wgUseSquid, $wgDeferredUpdateList;
global $wgUseTrackbacks;
- wfDebug( __METHOD__."\n" );
+ wfDebug( __METHOD__ . "\n" );
$dbw = wfGetDB( DB_MASTER );
$ns = $this->mTitle->getNamespace();
$t = $this->mTitle->getDBkey();
$id = $id ? $id : $this->mTitle->getArticleID( GAID_FOR_UPDATE );
- if( $t == '' || $id == 0 ) {
+ if ( $t == '' || $id == 0 ) {
return false;
}
- $u = new SiteStatsUpdate( 0, 1, -(int)$this->isCountable( $this->getRawText() ), -1 );
+ $u = new SiteStatsUpdate( 0, 1, - (int)$this->isCountable( $this->getRawText() ), -1 );
array_push( $wgDeferredUpdateList, $u );
// Bitfields to further suppress the content
- if( $suppress ) {
+ if ( $suppress ) {
$bitfield = 0;
// This should be 15...
$bitfield |= Revision::DELETED_TEXT;
@@ -2560,26 +2935,26 @@ class Article {
$dbw->delete( 'page_restrictions', array ( 'pr_page' => $id ), __METHOD__ );
# Now that it's safely backed up, delete it
- $dbw->delete( 'page', array( 'page_id' => $id ), __METHOD__);
+ $dbw->delete( 'page', array( 'page_id' => $id ), __METHOD__ );
$ok = ( $dbw->affectedRows() > 0 ); // getArticleId() uses slave, could be laggy
- if( !$ok ) {
+ if ( !$ok ) {
$dbw->rollback();
return false;
}
-
+
# Fix category table counts
$cats = array();
$res = $dbw->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ );
- foreach( $res as $row ) {
- $cats []= $row->cl_to;
+ foreach ( $res as $row ) {
+ $cats [] = $row->cl_to;
}
$this->updateCategoryCounts( array(), $cats );
# If using cascading deletes, we can skip some explicit deletes
- if( !$dbw->cascadingDeletes() ) {
+ if ( !$dbw->cascadingDeletes() ) {
$dbw->delete( 'revision', array( 'rev_page' => $id ), __METHOD__ );
- if($wgUseTrackbacks)
+ if ( $wgUseTrackbacks )
$dbw->delete( 'trackbacks', array( 'tb_page' => $id ), __METHOD__ );
# Delete outgoing links
@@ -2593,15 +2968,15 @@ class Article {
}
# If using cleanup triggers, we can skip some manual deletes
- if( !$dbw->cleanupTriggers() ) {
+ if ( !$dbw->cleanupTriggers() ) {
# Clean up recentchanges entries...
$dbw->delete( 'recentchanges',
- array( 'rc_type != '.RC_LOG,
+ array( 'rc_type != ' . RC_LOG,
'rc_namespace' => $this->mTitle->getNamespace(),
- 'rc_title' => $this->mTitle->getDBKey() ),
+ 'rc_title' => $this->mTitle->getDBkey() ),
__METHOD__ );
$dbw->delete( 'recentchanges',
- array( 'rc_type != '.RC_LOG, 'rc_cur_id' => $id ),
+ array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ),
__METHOD__ );
}
@@ -2653,17 +3028,17 @@ class Article {
$rollbackErrors = $this->mTitle->getUserPermissionsErrors( 'rollback', $wgUser );
$errors = array_merge( $editErrors, wfArrayDiff2( $rollbackErrors, $editErrors ) );
- if( !$wgUser->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) )
+ if ( !$wgUser->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) )
$errors[] = array( 'sessionfailure' );
- if( $wgUser->pingLimiter( 'rollback' ) || $wgUser->pingLimiter() ) {
+ if ( $wgUser->pingLimiter( 'rollback' ) || $wgUser->pingLimiter() ) {
$errors[] = array( 'actionthrottledtext' );
}
# If there were errors, bail out now
- if( !empty( $errors ) )
+ if ( !empty( $errors ) )
return $errors;
- return $this->commitRollback($fromP, $summary, $bot, $resultDetails);
+ return $this->commitRollback( $fromP, $summary, $bot, $resultDetails );
}
/**
@@ -2675,95 +3050,102 @@ class Article {
* ly if you want to use custom permissions checks. If you don't, use
* doRollback() instead.
*/
- public function commitRollback($fromP, $summary, $bot, &$resultDetails) {
+ public function commitRollback( $fromP, $summary, $bot, &$resultDetails ) {
global $wgUseRCPatrol, $wgUser, $wgLang;
$dbw = wfGetDB( DB_MASTER );
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
return array( array( 'readonlytext' ) );
}
# Get the last editor
$current = Revision::newFromTitle( $this->mTitle );
- if( is_null( $current ) ) {
+ if ( is_null( $current ) ) {
# Something wrong... no page?
- return array(array('notanarticle'));
+ return array( array( 'notanarticle' ) );
}
$from = str_replace( '_', ' ', $fromP );
- if( $from != $current->getUserText() ) {
+ # User name given should match up with the top revision.
+ # If the user was deleted then $from should be empty.
+ if ( $from != $current->getUserText() ) {
$resultDetails = array( 'current' => $current );
- return array(array('alreadyrolled',
- htmlspecialchars($this->mTitle->getPrefixedText()),
- htmlspecialchars($fromP),
- htmlspecialchars($current->getUserText())
- ));
+ return array( array( 'alreadyrolled',
+ htmlspecialchars( $this->mTitle->getPrefixedText() ),
+ htmlspecialchars( $fromP ),
+ htmlspecialchars( $current->getUserText() )
+ ) );
}
- # Get the last edit not by this guy
- $user = intval( $current->getUser() );
- $user_text = $dbw->addQuotes( $current->getUserText() );
+ # Get the last edit not by this guy...
+ # Note: these may not be public values
+ $user = intval( $current->getRawUser() );
+ $user_text = $dbw->addQuotes( $current->getRawUserText() );
$s = $dbw->selectRow( 'revision',
array( 'rev_id', 'rev_timestamp', 'rev_deleted' ),
- array( 'rev_page' => $current->getPage(),
+ array( 'rev_page' => $current->getPage(),
"rev_user != {$user} OR rev_user_text != {$user_text}"
), __METHOD__,
- array( 'USE INDEX' => 'page_timestamp',
+ array( 'USE INDEX' => 'page_timestamp',
'ORDER BY' => 'rev_timestamp DESC' )
);
- if( $s === false ) {
+ if ( $s === false ) {
# No one else ever edited this page
- return array(array('cantrollback'));
- } else if( $s->rev_deleted & REVISION::DELETED_TEXT || $s->rev_deleted & REVISION::DELETED_USER ) {
+ return array( array( 'cantrollback' ) );
+ } else if ( $s->rev_deleted & REVISION::DELETED_TEXT || $s->rev_deleted & REVISION::DELETED_USER ) {
# Only admins can see this text
- return array(array('notvisiblerev'));
+ return array( array( 'notvisiblerev' ) );
}
$set = array();
- if( $bot && $wgUser->isAllowed('markbotedits') ) {
+ if ( $bot && $wgUser->isAllowed( 'markbotedits' ) ) {
# Mark all reverted edits as bot
$set['rc_bot'] = 1;
}
- if( $wgUseRCPatrol ) {
+ if ( $wgUseRCPatrol ) {
# Mark all reverted edits as patrolled
$set['rc_patrolled'] = 1;
}
- if( $set ) {
+ if ( count( $set ) ) {
$dbw->update( 'recentchanges', $set,
- array( /* WHERE */
- 'rc_cur_id' => $current->getPage(),
- 'rc_user_text' => $current->getUserText(),
- "rc_timestamp > '{$s->rev_timestamp}'",
- ), __METHOD__
- );
+ array( /* WHERE */
+ 'rc_cur_id' => $current->getPage(),
+ 'rc_user_text' => $current->getUserText(),
+ "rc_timestamp > '{$s->rev_timestamp}'",
+ ), __METHOD__
+ );
}
# Generate the edit summary if necessary
$target = Revision::newFromId( $s->rev_id );
- if( empty( $summary ) ){
- $summary = wfMsgForContent( 'revertpage' );
+ if ( empty( $summary ) ) {
+ if ( $from == '' ) { // no public user name
+ $summary = wfMsgForContent( 'revertpage-nouser' );
+ } else {
+ $summary = wfMsgForContent( 'revertpage' );
+ }
}
# Allow the custom summary to use the same args as the default message
$args = array(
$target->getUserText(), $from, $s->rev_id,
- $wgLang->timeanddate(wfTimestamp(TS_MW, $s->rev_timestamp), true),
- $current->getId(), $wgLang->timeanddate($current->getTimestamp())
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ), true ),
+ $current->getId(), $wgLang->timeanddate( $current->getTimestamp() )
);
$summary = wfMsgReplaceArgs( $summary, $args );
# Save
$flags = EDIT_UPDATE;
- if( $wgUser->isAllowed('minoredit') )
+ if ( $wgUser->isAllowed( 'minoredit' ) )
$flags |= EDIT_MINOR;
- if( $bot && ($wgUser->isAllowed('markbotedits') || $wgUser->isAllowed('bot')) )
+ if ( $bot && ( $wgUser->isAllowed( 'markbotedits' ) || $wgUser->isAllowed( 'bot' ) ) )
$flags |= EDIT_FORCE_BOT;
# Actually store the edit
$status = $this->doEdit( $target->getText(), $summary, $flags, $target->getId() );
- if( !empty( $status->value['revision'] ) ) {
+ if ( !empty( $status->value['revision'] ) ) {
$revId = $status->value['revision']->getId();
} else {
$revId = false;
@@ -2774,8 +3156,8 @@ class Article {
$resultDetails = array(
'summary' => $summary,
'current' => $current,
- 'target' => $target,
- 'newid' => $revId
+ 'target' => $target,
+ 'newid' => $revId
);
return array();
}
@@ -2795,19 +3177,19 @@ class Article {
$details
);
- if( in_array( array( 'actionthrottledtext' ), $result ) ) {
+ if ( in_array( array( 'actionthrottledtext' ), $result ) ) {
$wgOut->rateLimited();
return;
}
- if( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) {
+ if ( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) {
$wgOut->setPageTitle( wfMsg( 'rollbackfailed' ) );
$errArray = $result[0];
$errMsg = array_shift( $errArray );
$wgOut->addWikiMsgArray( $errMsg, $errArray );
- if( isset( $details['current'] ) ){
+ if ( isset( $details['current'] ) ) {
$current = $details['current'];
- if( $current->getComment() != '' ) {
- $wgOut->addWikiMsgArray( 'editcomment', array(
+ if ( $current->getComment() != '' ) {
+ $wgOut->addWikiMsgArray( 'editcomment', array(
$wgUser->getSkin()->formatComment( $current->getComment() ) ), array( 'replaceafter' ) );
}
}
@@ -2816,19 +3198,19 @@ class Article {
# Display permissions errors before read-only message -- there's no
# point in misleading the user into thinking the inability to rollback
# is only temporary.
- if( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) {
+ if ( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) {
# array_diff is completely broken for arrays of arrays, sigh. Re-
# move any 'readonlytext' error manually.
$out = array();
- foreach( $result as $error ) {
- if( $error != array( 'readonlytext' ) ) {
- $out []= $error;
+ foreach ( $result as $error ) {
+ if ( $error != array( 'readonlytext' ) ) {
+ $out [] = $error;
}
}
$wgOut->showPermissionsErrorPage( $out );
return;
}
- if( $result == array( array( 'readonlytext' ) ) ) {
+ if ( $result == array( array( 'readonlytext' ) ) ) {
$wgOut->readOnlyPage();
return;
}
@@ -2838,14 +3220,18 @@ class Article {
$newId = $details['newid'];
$wgOut->setPageTitle( wfMsg( 'actioncomplete' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
- $old = $wgUser->getSkin()->userLink( $current->getUser(), $current->getUserText() )
- . $wgUser->getSkin()->userToolLinks( $current->getUser(), $current->getUserText() );
+ if ( $current->getUserText() === '' ) {
+ $old = wfMsg( 'rev-deleted-user' );
+ } else {
+ $old = $wgUser->getSkin()->userLink( $current->getUser(), $current->getUserText() )
+ . $wgUser->getSkin()->userToolLinks( $current->getUser(), $current->getUserText() );
+ }
$new = $wgUser->getSkin()->userLink( $target->getUser(), $target->getUserText() )
. $wgUser->getSkin()->userToolLinks( $target->getUser(), $target->getUserText() );
$wgOut->addHTML( wfMsgExt( 'rollback-success', array( 'parse', 'replaceafter' ), $old, $new ) );
$wgOut->returnToMain( false, $this->mTitle );
- if( !$wgRequest->getBool( 'hidediff', false ) && !$wgUser->getBoolOption( 'norollbackdiff', false ) ) {
+ if ( !$wgRequest->getBool( 'hidediff', false ) && !$wgUser->getBoolOption( 'norollbackdiff', false ) ) {
$de = new DifferenceEngine( $this->mTitle, $current->getId(), $newId, false, true );
$de->showDiff( '', '' );
}
@@ -2857,8 +3243,11 @@ class Article {
*/
public function viewUpdates() {
global $wgDeferredUpdateList, $wgDisableCounters, $wgUser;
+ if ( wfReadOnly() ) {
+ return;
+ }
# Don't update page view counters on views from bot users (bug 14044)
- if( !$wgDisableCounters && !$wgUser->isAllowed('bot') && $this->getID() ) {
+ if ( !$wgDisableCounters && !$wgUser->isAllowed( 'bot' ) && $this->getID() ) {
Article::incViewCount( $this->getID() );
$u = new SiteStatsUpdate( 1, 0, 0 );
array_push( $wgDeferredUpdateList, $u );
@@ -2871,8 +3260,8 @@ class Article {
* Prepare text which is about to be saved.
* Returns a stdclass with source, pst and output members
*/
- public function prepareTextForEdit( $text, $revid=null ) {
- if( $this->mPreparedEdit && $this->mPreparedEdit->newText == $text && $this->mPreparedEdit->revid == $revid) {
+ public function prepareTextForEdit( $text, $revid = null ) {
+ if ( $this->mPreparedEdit && $this->mPreparedEdit->newText == $text && $this->mPreparedEdit->revid == $revid ) {
// Already prepared
return $this->mPreparedEdit;
}
@@ -2881,9 +3270,7 @@ class Article {
$edit->revid = $revid;
$edit->newText = $text;
$edit->pst = $this->preSaveTransform( $text );
- $options = new ParserOptions;
- $options->setTidy( true );
- $options->enableLimitReport();
+ $options = $this->getParserOptions();
$edit->output = $wgParser->parse( $edit->pst, $this->mTitle, $options, true, true, $revid );
$edit->oldText = $this->getContent();
$this->mPreparedEdit = $edit;
@@ -2905,13 +3292,13 @@ class Article {
* @param $changed Whether or not the content actually changed
*/
public function editUpdates( $text, $summary, $minoredit, $timestamp_of_pagechange, $newid, $changed = true ) {
- global $wgDeferredUpdateList, $wgMessageCache, $wgUser, $wgParser, $wgEnableParserCache;
+ global $wgDeferredUpdateList, $wgMessageCache, $wgUser, $wgEnableParserCache;
wfProfileIn( __METHOD__ );
# Parse the text
# Be careful not to double-PST: $text is usually already PST-ed once
- if( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) {
+ if ( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) {
wfDebug( __METHOD__ . ": No prepared edit or vary-revision is set...\n" );
$editInfo = $this->prepareTextForEdit( $text, $newid );
} else {
@@ -2920,10 +3307,8 @@ class Article {
}
# Save it to the parser cache
- if( $wgEnableParserCache ) {
- $popts = new ParserOptions;
- $popts->setTidy( true );
- $popts->enableLimitReport();
+ if ( $wgEnableParserCache ) {
+ $popts = $this->getParserOptions();
$parserCache = ParserCache::singleton();
$parserCache->save( $editInfo->output, $this, $popts );
}
@@ -2931,11 +3316,11 @@ class Article {
# Update the links tables
$u = new LinksUpdate( $this->mTitle, $editInfo->output );
$u->doUpdate();
-
+
wfRunHooks( 'ArticleEditUpdates', array( &$this, &$editInfo, $changed ) );
- if( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) {
- if( 0 == mt_rand( 0, 99 ) ) {
+ if ( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) {
+ if ( 0 == mt_rand( 0, 99 ) ) {
// Flush old entries from the `recentchanges` table; we do this on
// random requests so as to avoid an increase in writes for no good reason
global $wgRCMaxAge;
@@ -2951,7 +3336,7 @@ class Article {
$title = $this->mTitle->getPrefixedDBkey();
$shortTitle = $this->mTitle->getDBkey();
- if( 0 == $id ) {
+ if ( 0 == $id ) {
wfProfileOut( __METHOD__ );
return;
}
@@ -2965,24 +3350,24 @@ class Article {
# Don't do this if $changed = false otherwise some idiot can null-edit a
# load of user talk pages and piss people off, nor if it's a minor edit
# by a properly-flagged bot.
- if( $this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getTitleKey() && $changed
+ if ( $this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getTitleKey() && $changed
&& !( $minoredit && $wgUser->isAllowed( 'nominornewtalk' ) ) ) {
- if( wfRunHooks('ArticleEditUpdateNewTalk', array( &$this ) ) ) {
+ if ( wfRunHooks( 'ArticleEditUpdateNewTalk', array( &$this ) ) ) {
$other = User::newFromName( $shortTitle, false );
- if( !$other ) {
- wfDebug( __METHOD__.": invalid username\n" );
- } elseif( User::isIP( $shortTitle ) ) {
+ if ( !$other ) {
+ wfDebug( __METHOD__ . ": invalid username\n" );
+ } elseif ( User::isIP( $shortTitle ) ) {
// An anonymous user
$other->setNewtalk( true );
- } elseif( $other->isLoggedIn() ) {
+ } elseif ( $other->isLoggedIn() ) {
$other->setNewtalk( true );
} else {
- wfDebug( __METHOD__. ": don't need to notify a nonexistent user\n" );
+ wfDebug( __METHOD__ . ": don't need to notify a nonexistent user\n" );
}
}
}
- if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
$wgMessageCache->replace( $shortTitle, $text );
}
@@ -3016,56 +3401,112 @@ class Article {
public function setOldSubtitle( $oldid = 0 ) {
global $wgLang, $wgOut, $wgUser, $wgRequest;
- if( !wfRunHooks( 'DisplayOldSubtitle', array( &$this, &$oldid ) ) ) {
+ if ( !wfRunHooks( 'DisplayOldSubtitle', array( &$this, &$oldid ) ) ) {
return;
}
+ $unhide = $wgRequest->getInt( 'unhide' ) == 1 &&
+ $wgUser->matchEditToken( $wgRequest->getVal( 'token' ), $oldid );
+ # Cascade unhide param in links for easy deletion browsing
+ $extraParams = array();
+ if ( $wgRequest->getVal( 'unhide' ) ) {
+ $extraParams['unhide'] = 1;
+ }
$revision = Revision::newFromId( $oldid );
$current = ( $oldid == $this->mLatest );
$td = $wgLang->timeanddate( $this->mTimestamp, true );
+ $tddate = $wgLang->date( $this->mTimestamp, true );
+ $tdtime = $wgLang->time( $this->mTimestamp, true );
$sk = $wgUser->getSkin();
$lnk = $current
? wfMsgHtml( 'currentrevisionlink' )
- : $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'currentrevisionlink' ) );
+ : $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'currentrevisionlink' ),
+ array(),
+ $extraParams,
+ array( 'known', 'noclasses' )
+ );
$curdiff = $current
? wfMsgHtml( 'diff' )
- : $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'diff' ), 'diff=cur&oldid='.$oldid );
+ : $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'diff' ),
+ array(),
+ array(
+ 'diff' => 'cur',
+ 'oldid' => $oldid
+ ) + $extraParams,
+ array( 'known', 'noclasses' )
+ );
$prev = $this->mTitle->getPreviousRevisionID( $oldid ) ;
$prevlink = $prev
- ? $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'previousrevision' ), 'direction=prev&oldid='.$oldid )
+ ? $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'previousrevision' ),
+ array(),
+ array(
+ 'direction' => 'prev',
+ 'oldid' => $oldid
+ ) + $extraParams,
+ array( 'known', 'noclasses' )
+ )
: wfMsgHtml( 'previousrevision' );
$prevdiff = $prev
- ? $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'diff' ), 'diff=prev&oldid='.$oldid )
+ ? $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'diff' ),
+ array(),
+ array(
+ 'diff' => 'prev',
+ 'oldid' => $oldid
+ ) + $extraParams,
+ array( 'known', 'noclasses' )
+ )
: wfMsgHtml( 'diff' );
$nextlink = $current
? wfMsgHtml( 'nextrevision' )
- : $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'nextrevision' ), 'direction=next&oldid='.$oldid );
+ : $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'nextrevision' ),
+ array(),
+ array(
+ 'direction' => 'next',
+ 'oldid' => $oldid
+ ) + $extraParams,
+ array( 'known', 'noclasses' )
+ );
$nextdiff = $current
? wfMsgHtml( 'diff' )
- : $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'diff' ), 'diff=next&oldid='.$oldid );
-
- $cdel='';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
- if( $revision->isCurrent() ) {
- // We don't handle top deleted edits too well
- $cdel = wfMsgHtml( 'rev-delundel' );
- } else if( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $cdel = wfMsgHtml( 'rev-delundel' );
+ : $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'diff' ),
+ array(),
+ array(
+ 'diff' => 'next',
+ 'oldid' => $oldid
+ ) + $extraParams,
+ array( 'known', 'noclasses' )
+ );
+
+ $cdel = '';
+ // User can delete revisions or view deleted revisions...
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if ( $canHide || ( $revision->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) ) {
+ if ( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $cdel = $sk->revDeleteLinkDisabled( $canHide ); // rev was hidden from Sysops
} else {
- $cdel = $sk->makeKnownLinkObj( $revdel,
- wfMsgHtml('rev-delundel'),
- 'target=' . urlencode( $this->mTitle->getPrefixedDbkey() ) .
- '&oldid=' . urlencode( $oldid ) );
- // Bolden oversighted content
- if( $revision->isDeleted( Revision::DELETED_RESTRICTED ) )
- $cdel = "<strong>$cdel</strong>";
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $this->mTitle->getPrefixedDbkey(),
+ 'ids' => $oldid
+ );
+ $cdel = $sk->revDeleteLink( $query, $revision->isDeleted( File::DELETED_RESTRICTED ), $canHide );
}
- $cdel = "(<small>$cdel</small>) ";
+ $cdel .= ' ';
}
- $unhide = $wgRequest->getInt('unhide') == 1 && $wgUser->matchEditToken( $wgRequest->getVal('token'), $oldid );
+
# Show user links if allowed to see them. If hidden, then show them only if requested...
$userlinks = $sk->revUserTools( $revision, !$unhide );
@@ -3074,11 +3515,20 @@ class Article {
? 'revision-info-current'
: 'revision-info';
- $r = "\n\t\t\t\t<div id=\"mw-{$infomsg}\">" . wfMsgExt( $infomsg, array( 'parseinline', 'replaceafter' ),
- $td, $userlinks, $revision->getID() ) . "</div>\n" .
-
- "\n\t\t\t\t<div id=\"mw-revision-nav\">" . $cdel . wfMsgExt( 'revision-nav', array( 'escapenoentities', 'parsemag', 'replaceafter' ),
- $prevdiff, $prevlink, $lnk, $curdiff, $nextlink, $nextdiff ) . "</div>\n\t\t\t";
+ $r = "\n\t\t\t\t<div id=\"mw-{$infomsg}\">" .
+ wfMsgExt(
+ $infomsg,
+ array( 'parseinline', 'replaceafter' ),
+ $td,
+ $userlinks,
+ $revision->getID(),
+ $tddate,
+ $tdtime,
+ $revision->getUser()
+ ) .
+ "</div>\n" .
+ "\n\t\t\t\t<div id=\"mw-revision-nav\">" . $cdel . wfMsgExt( 'revision-nav', array( 'escapenoentities', 'parsemag', 'replaceafter' ),
+ $prevdiff, $prevlink, $lnk, $curdiff, $nextlink, $nextdiff ) . "</div>\n\t\t\t";
$wgOut->setSubtitle( $r );
}
@@ -3102,20 +3552,20 @@ class Article {
*/
protected function tryFileCache() {
static $called = false;
- if( $called ) {
+ if ( $called ) {
wfDebug( "Article::tryFileCache(): called twice!?\n" );
return false;
}
$called = true;
- if( $this->isFileCacheable() ) {
+ if ( $this->isFileCacheable() ) {
$cache = new HTMLFileCache( $this->mTitle );
- if( $cache->isFileCacheGood( $this->mTouched ) ) {
+ if ( $cache->isFileCacheGood( $this->mTouched ) ) {
wfDebug( "Article::tryFileCache(): about to load file\n" );
$cache->loadFromFileCache();
return true;
} else {
wfDebug( "Article::tryFileCache(): starting buffer\n" );
- ob_start( array(&$cache, 'saveToFileCache' ) );
+ ob_start( array( &$cache, 'saveToFileCache' ) );
}
} else {
wfDebug( "Article::tryFileCache(): not cacheable\n" );
@@ -3129,10 +3579,10 @@ class Article {
*/
public function isFileCacheable() {
$cacheable = false;
- if( HTMLFileCache::useFileCache() ) {
+ if ( HTMLFileCache::useFileCache() ) {
$cacheable = $this->getID() && !$this->mRedirectedFrom;
// Extension may have reason to disable file caching on some pages.
- if( $cacheable ) {
+ if ( $cacheable ) {
$cacheable = wfRunHooks( 'IsFileCacheable', array( &$this ) );
}
}
@@ -3144,7 +3594,7 @@ class Article {
*
*/
public function checkTouched() {
- if( !$this->mDataLoaded ) {
+ if ( !$this->mDataLoaded ) {
$this->loadPageData();
}
return !$this->mIsRedirect;
@@ -3155,7 +3605,7 @@ class Article {
*/
public function getTouched() {
# Ensure that page data has been loaded
- if( !$this->mDataLoaded ) {
+ if ( !$this->mDataLoaded ) {
$this->loadPageData();
}
return $this->mTouched;
@@ -3165,7 +3615,7 @@ class Article {
* Get the page_latest field
*/
public function getLatest() {
- if( !$this->mDataLoaded ) {
+ if ( !$this->mDataLoaded ) {
$this->loadPageData();
}
return (int)$this->mLatest;
@@ -3193,7 +3643,7 @@ class Article {
$revision->insertOn( $dbw );
$this->updateRevisionOn( $dbw, $revision );
- wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, false, $wgUser) );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $wgUser ) );
wfProfileOut( __METHOD__ );
}
@@ -3205,14 +3655,15 @@ class Article {
*/
public static function incViewCount( $id ) {
$id = intval( $id );
- global $wgHitcounterUpdateFreq, $wgDBtype;
+ global $wgHitcounterUpdateFreq;
$dbw = wfGetDB( DB_MASTER );
$pageTable = $dbw->tableName( 'page' );
$hitcounterTable = $dbw->tableName( 'hitcounter' );
$acchitsTable = $dbw->tableName( 'acchits' );
+ $dbType = $dbw->getType();
- if( $wgHitcounterUpdateFreq <= 1 ) {
+ if ( $wgHitcounterUpdateFreq <= 1 || $dbType == 'sqlite' ) {
$dbw->query( "UPDATE $pageTable SET page_counter = page_counter + 1 WHERE page_id = $id" );
return;
}
@@ -3222,37 +3673,36 @@ class Article {
$dbw->query( "INSERT INTO $hitcounterTable (hc_id) VALUES ({$id})" );
- $checkfreq = intval( $wgHitcounterUpdateFreq/25 + 1 );
- if( (rand() % $checkfreq != 0) or ($dbw->lastErrno() != 0) ){
+ $checkfreq = intval( $wgHitcounterUpdateFreq / 25 + 1 );
+ if ( ( rand() % $checkfreq != 0 ) or ( $dbw->lastErrno() != 0 ) ) {
# Most of the time (or on SQL errors), skip row count check
$dbw->ignoreErrors( $oldignore );
return;
}
- $res = $dbw->query("SELECT COUNT(*) as n FROM $hitcounterTable");
+ $res = $dbw->query( "SELECT COUNT(*) as n FROM $hitcounterTable" );
$row = $dbw->fetchObject( $res );
$rown = intval( $row->n );
- if( $rown >= $wgHitcounterUpdateFreq ){
+ if ( $rown >= $wgHitcounterUpdateFreq ) {
wfProfileIn( 'Article::incViewCount-collect' );
$old_user_abort = ignore_user_abort( true );
- if($wgDBtype == 'mysql')
- $dbw->query("LOCK TABLES $hitcounterTable WRITE");
- $tabletype = $wgDBtype == 'mysql' ? "ENGINE=HEAP " : '';
- $dbw->query("CREATE TEMPORARY TABLE $acchitsTable $tabletype AS ".
- "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable ".
- 'GROUP BY hc_id');
- $dbw->query("DELETE FROM $hitcounterTable");
- if($wgDBtype == 'mysql') {
- $dbw->query('UNLOCK TABLES');
- $dbw->query("UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n ".
- 'WHERE page_id = hc_id');
+ $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false );
+ $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : '';
+ $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS " .
+ "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable " .
+ 'GROUP BY hc_id', __METHOD__ );
+ $dbw->delete( 'hitcounter', '*', __METHOD__ );
+ $dbw->unlockTables( __METHOD__ );
+ if ( $dbType == 'mysql' ) {
+ $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n " .
+ 'WHERE page_id = hc_id', __METHOD__ );
}
else {
- $dbw->query("UPDATE $pageTable SET page_counter=page_counter + hc_n ".
- "FROM $acchitsTable WHERE page_id = hc_id");
+ $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n " .
+ "FROM $acchitsTable WHERE page_id = hc_id", __METHOD__ );
}
- $dbw->query("DROP TABLE $acchitsTable");
+ $dbw->query( "DROP TABLE $acchitsTable", __METHOD__ );
ignore_user_abort( $old_user_abort );
wfProfileOut( 'Article::incViewCount-collect' );
@@ -3271,10 +3721,9 @@ class Article {
*
* @param $title a title object
*/
-
public static function onArticleCreate( $title ) {
# Update existence markers on article/talk tabs...
- if( $title->isTalkPage() ) {
+ if ( $title->isTalkPage() ) {
$other = $title->getSubjectPage();
} else {
$other = $title->getTalkPage();
@@ -3290,7 +3739,7 @@ class Article {
public static function onArticleDelete( $title ) {
global $wgMessageCache;
# Update existence markers on article/talk tabs...
- if( $title->isTalkPage() ) {
+ if ( $title->isTalkPage() ) {
$other = $title->getSubjectPage();
} else {
$other = $title->getTalkPage();
@@ -3305,16 +3754,16 @@ class Article {
HTMLFileCache::clearFileCache( $title );
# Messages
- if( $title->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $title->getNamespace() == NS_MEDIAWIKI ) {
$wgMessageCache->replace( $title->getDBkey(), false );
}
# Images
- if( $title->getNamespace() == NS_FILE ) {
+ if ( $title->getNamespace() == NS_FILE ) {
$update = new HTMLCacheUpdate( $title, 'imagelinks' );
$update->doUpdate();
}
# User talk pages
- if( $title->getNamespace() == NS_USER_TALK ) {
+ if ( $title->getNamespace() == NS_USER_TALK ) {
$user = User::newFromName( $title->getText(), false );
$user->setNewtalk( false );
}
@@ -3359,7 +3808,7 @@ class Article {
public function info() {
global $wgLang, $wgOut, $wgAllowPageInfo, $wgUser;
- if( !$wgAllowPageInfo ) {
+ if ( !$wgAllowPageInfo ) {
$wgOut->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
return;
}
@@ -3370,9 +3819,9 @@ class Article {
$wgOut->setPageTitleActionText( wfMsg( 'info_short' ) );
$wgOut->setSubtitle( wfMsgHtml( 'infosubtitle' ) );
- if( !$this->mTitle->exists() ) {
+ if ( !$this->mTitle->exists() ) {
$wgOut->addHTML( '<div class="noarticletext">' );
- if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
// This doesn't quite make sense; the user is asking for
// information about the _page_, not the message... -- RC
$wgOut->addHTML( htmlspecialchars( wfMsgWeirdKey( $this->mTitle->getText() ) ) );
@@ -3398,14 +3847,14 @@ class Article {
$pageInfo = $this->pageCountInfo( $page );
$talkInfo = $this->pageCountInfo( $page->getTalkPage() );
- $wgOut->addHTML( "<ul><li>" . wfMsg("numwatchers", $wgLang->formatNum( $numwatchers ) ) . '</li>' );
- $wgOut->addHTML( "<li>" . wfMsg('numedits', $wgLang->formatNum( $pageInfo['edits'] ) ) . '</li>');
- if( $talkInfo ) {
- $wgOut->addHTML( '<li>' . wfMsg("numtalkedits", $wgLang->formatNum( $talkInfo['edits'] ) ) . '</li>');
+ $wgOut->addHTML( "<ul><li>" . wfMsg( "numwatchers", $wgLang->formatNum( $numwatchers ) ) . '</li>' );
+ $wgOut->addHTML( "<li>" . wfMsg( 'numedits', $wgLang->formatNum( $pageInfo['edits'] ) ) . '</li>' );
+ if ( $talkInfo ) {
+ $wgOut->addHTML( '<li>' . wfMsg( "numtalkedits", $wgLang->formatNum( $talkInfo['edits'] ) ) . '</li>' );
}
- $wgOut->addHTML( '<li>' . wfMsg("numauthors", $wgLang->formatNum( $pageInfo['authors'] ) ) . '</li>' );
- if( $talkInfo ) {
- $wgOut->addHTML( '<li>' . wfMsg('numtalkauthors', $wgLang->formatNum( $talkInfo['authors'] ) ) . '</li>' );
+ $wgOut->addHTML( '<li>' . wfMsg( "numauthors", $wgLang->formatNum( $pageInfo['authors'] ) ) . '</li>' );
+ if ( $talkInfo ) {
+ $wgOut->addHTML( '<li>' . wfMsg( 'numtalkauthors', $wgLang->formatNum( $talkInfo['authors'] ) ) . '</li>' );
}
$wgOut->addHTML( '</ul>' );
}
@@ -3418,9 +3867,9 @@ class Article {
* @param $title Title object
* @return array
*/
- protected function pageCountInfo( $title ) {
+ public function pageCountInfo( $title ) {
$id = $title->getArticleId();
- if( $id == 0 ) {
+ if ( $id == 0 ) {
return false;
}
$dbr = wfGetDB( DB_SLAVE );
@@ -3451,7 +3900,7 @@ class Article {
public function getUsedTemplates() {
$result = array();
$id = $this->mTitle->getArticleID();
- if( $id == 0 ) {
+ if ( $id == 0 ) {
return array();
}
$dbr = wfGetDB( DB_SLAVE );
@@ -3459,8 +3908,8 @@ class Article {
array( 'tl_namespace', 'tl_title' ),
array( 'tl_from' => $id ),
__METHOD__ );
- if( $res !== false ) {
- foreach( $res as $row ) {
+ if ( $res !== false ) {
+ foreach ( $res as $row ) {
$result[] = Title::makeTitle( $row->tl_namespace, $row->tl_title );
}
}
@@ -3477,17 +3926,17 @@ class Article {
public function getHiddenCategories() {
$result = array();
$id = $this->mTitle->getArticleID();
- if( $id == 0 ) {
+ if ( $id == 0 ) {
return array();
}
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( array( 'categorylinks', 'page_props', 'page' ),
array( 'cl_to' ),
array( 'cl_from' => $id, 'pp_page=page_id', 'pp_propname' => 'hiddencat',
- 'page_namespace' => NS_CATEGORY, 'page_title=cl_to'),
+ 'page_namespace' => NS_CATEGORY, 'page_title=cl_to' ),
__METHOD__ );
- if( $res !== false ) {
- foreach( $res as $row ) {
+ if ( $res !== false ) {
+ foreach ( $res as $row ) {
$result[] = Title::makeTitle( NS_CATEGORY, $row->cl_to );
}
}
@@ -3508,24 +3957,24 @@ class Article {
# Redirect autosummaries
$ot = Title::newFromRedirect( $oldtext );
$rt = Title::newFromRedirect( $newtext );
- if( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) {
+ if ( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) {
return wfMsgForContent( 'autoredircomment', $rt->getFullText() );
}
# New page autosummaries
- if( $flags & EDIT_NEW && strlen( $newtext ) ) {
+ if ( $flags & EDIT_NEW && strlen( $newtext ) ) {
# If they're making a new article, give its text, truncated, in the summary.
global $wgContLang;
$truncatedtext = $wgContLang->truncate(
- str_replace("\n", ' ', $newtext),
+ str_replace( "\n", ' ', $newtext ),
max( 0, 200 - strlen( wfMsgForContent( 'autosumm-new' ) ) ) );
return wfMsgForContent( 'autosumm-new', $truncatedtext );
}
# Blanking autosummaries
- if( $oldtext != '' && $newtext == '' ) {
+ if ( $oldtext != '' && $newtext == '' ) {
return wfMsgForContent( 'autosumm-blank' );
- } elseif( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500) {
+ } elseif ( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500 ) {
# Removing more than 90% of the article
global $wgContLang;
$truncatedtext = $wgContLang->truncate(
@@ -3547,72 +3996,108 @@ class Article {
* @param $text String
* @param $cache Boolean
*/
- public function outputWikiText( $text, $cache = true ) {
- global $wgParser, $wgUser, $wgOut, $wgEnableParserCache, $wgUseFileCache;
-
- $popts = $wgOut->parserOptions();
- $popts->setTidy(true);
- $popts->enableLimitReport();
- $parserOutput = $wgParser->parse( $text, $this->mTitle,
- $popts, true, true, $this->getRevIdFetched() );
- $popts->setTidy(false);
- $popts->enableLimitReport( false );
- if( $wgEnableParserCache && $cache && $this && $parserOutput->getCacheTime() != -1 ) {
+ public function outputWikiText( $text, $cache = true, $parserOptions = false ) {
+ global $wgOut;
+
+ $this->mParserOutput = $this->getOutputFromWikitext( $text, $cache, $parserOptions );
+ $wgOut->addParserOutput( $this->mParserOutput );
+ }
+
+ /**
+ * This does all the heavy lifting for outputWikitext, except it returns the parser
+ * output instead of sending it straight to $wgOut. Makes things nice and simple for,
+ * say, embedding thread pages within a discussion system (LiquidThreads)
+ */
+ public function getOutputFromWikitext( $text, $cache = true, $parserOptions = false ) {
+ global $wgParser, $wgOut, $wgEnableParserCache, $wgUseFileCache;
+
+ if ( !$parserOptions ) {
+ $parserOptions = $this->getParserOptions();
+ }
+
+ $time = - wfTime();
+ $this->mParserOutput = $wgParser->parse( $text, $this->mTitle,
+ $parserOptions, true, true, $this->getRevIdFetched() );
+ $time += wfTime();
+
+ # Timing hack
+ if ( $time > 3 ) {
+ wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
+ $this->mTitle->getPrefixedDBkey() ) );
+ }
+
+ if ( $wgEnableParserCache && $cache && $this && $this->mParserOutput->getCacheTime() != -1 ) {
$parserCache = ParserCache::singleton();
- $parserCache->save( $parserOutput, $this, $popts );
+ $parserCache->save( $this->mParserOutput, $this, $parserOptions );
}
// Make sure file cache is not used on uncacheable content.
// Output that has magic words in it can still use the parser cache
// (if enabled), though it will generally expire sooner.
- if( $parserOutput->getCacheTime() == -1 || $parserOutput->containsOldMagic() ) {
+ if ( $this->mParserOutput->getCacheTime() == -1 || $this->mParserOutput->containsOldMagic() ) {
$wgUseFileCache = false;
}
+ $this->doCascadeProtectionUpdates( $this->mParserOutput );
+ return $this->mParserOutput;
+ }
- if( $this->isCurrent() && !wfReadOnly() && $this->mTitle->areRestrictionsCascading() ) {
- // templatelinks table may have become out of sync,
- // especially if using variable-based transclusions.
- // For paranoia, check if things have changed and if
- // so apply updates to the database. This will ensure
- // that cascaded protections apply as soon as the changes
- // are visible.
+ /**
+ * Get parser options suitable for rendering the primary article wikitext
+ */
+ public function getParserOptions() {
+ global $wgUser;
+ if ( !$this->mParserOptions ) {
+ $this->mParserOptions = new ParserOptions( $wgUser );
+ $this->mParserOptions->setTidy( true );
+ $this->mParserOptions->enableLimitReport();
+ }
+ return $this->mParserOptions;
+ }
- # Get templates from templatelinks
- $id = $this->mTitle->getArticleID();
+ protected function doCascadeProtectionUpdates( $parserOutput ) {
+ if ( !$this->isCurrent() || wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) {
+ return;
+ }
- $tlTemplates = array();
+ // templatelinks table may have become out of sync,
+ // especially if using variable-based transclusions.
+ // For paranoia, check if things have changed and if
+ // so apply updates to the database. This will ensure
+ // that cascaded protections apply as soon as the changes
+ // are visible.
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( array( 'templatelinks' ),
- array( 'tl_namespace', 'tl_title' ),
- array( 'tl_from' => $id ),
- __METHOD__ );
+ # Get templates from templatelinks
+ $id = $this->mTitle->getArticleID();
- global $wgContLang;
- foreach( $res as $row ) {
- $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
- }
+ $tlTemplates = array();
- # Get templates from parser output.
- $poTemplates = array();
- foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
- foreach ( $templates as $dbk => $id ) {
- $key = $row->tl_namespace . ':'. $row->tl_title;
- $poTemplates["$ns:$dbk"] = true;
- }
- }
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'templatelinks' ),
+ array( 'tl_namespace', 'tl_title' ),
+ array( 'tl_from' => $id ),
+ __METHOD__ );
- # Get the diff
- # Note that we simulate array_diff_key in PHP <5.0.x
- $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
+ global $wgContLang;
+ foreach ( $res as $row ) {
+ $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
+ }
- if( count( $templates_diff ) > 0 ) {
- # Whee, link updates time.
- $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
- $u->doUpdate();
+ # Get templates from parser output.
+ $poTemplates = array();
+ foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
+ foreach ( $templates as $dbk => $id ) {
+ $poTemplates["$ns:$dbk"] = true;
}
}
- $wgOut->addParserOutput( $parserOutput );
+ # Get the diff
+ # Note that we simulate array_diff_key in PHP <5.0.x
+ $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
+
+ if ( count( $templates_diff ) > 0 ) {
+ # Whee, link updates time.
+ $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
+ $u->doUpdate();
+ }
}
/**
@@ -3634,27 +4119,30 @@ class Article {
#
# Sometimes I wish we had INSERT ... ON DUPLICATE KEY UPDATE.
$insertCats = array_merge( $added, $deleted );
- if( !$insertCats ) {
+ if ( !$insertCats ) {
# Okay, nothing to do
return;
}
$insertRows = array();
- foreach( $insertCats as $cat ) {
- $insertRows[] = array( 'cat_title' => $cat );
+ foreach ( $insertCats as $cat ) {
+ $insertRows[] = array(
+ 'cat_id' => $dbw->nextSequenceValue( 'category_cat_id_seq' ),
+ 'cat_title' => $cat
+ );
}
$dbw->insert( 'category', $insertRows, __METHOD__, 'IGNORE' );
$addFields = array( 'cat_pages = cat_pages + 1' );
$removeFields = array( 'cat_pages = cat_pages - 1' );
- if( $ns == NS_CATEGORY ) {
+ if ( $ns == NS_CATEGORY ) {
$addFields[] = 'cat_subcats = cat_subcats + 1';
$removeFields[] = 'cat_subcats = cat_subcats - 1';
- } elseif( $ns == NS_FILE ) {
+ } elseif ( $ns == NS_FILE ) {
$addFields[] = 'cat_files = cat_files + 1';
$removeFields[] = 'cat_files = cat_files - 1';
}
- if( $added ) {
+ if ( $added ) {
$dbw->update(
'category',
$addFields,
@@ -3662,7 +4150,7 @@ class Article {
__METHOD__
);
}
- if( $deleted ) {
+ if ( $deleted ) {
$dbw->update(
'category',
$removeFields,
@@ -3671,4 +4159,37 @@ class Article {
);
}
}
+
+ /** Lightweight method to get the parser output for a page, checking the parser cache
+ * and so on. Doesn't consider most of the stuff that Article::view is forced to
+ * consider, so it's not appropriate to use there.
+ */
+ function getParserOutput( $oldid = null ) {
+ global $wgEnableParserCache, $wgUser, $wgOut;
+
+ // Should the parser cache be used?
+ $useParserCache = $wgEnableParserCache &&
+ intval( $wgUser->getOption( 'stubthreshold' ) ) == 0 &&
+ $this->exists() &&
+ $oldid === null;
+
+ wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
+ if ( $wgUser->getOption( 'stubthreshold' ) ) {
+ wfIncrStats( 'pcache_miss_stub' );
+ }
+
+ $parserOutput = false;
+ if ( $useParserCache ) {
+ $parserOutput = ParserCache::singleton()->get( $this, $this->getParserOptions() );
+ }
+
+ if ( $parserOutput === false ) {
+ // Cache miss; parse and output it.
+ $rev = Revision::newFromTitle( $this->getTitle(), $oldid );
+
+ return $this->getOutputFromWikitext( $rev->getText(), $useParserCache );
+ } else {
+ return $parserOutput;
+ }
+ }
}
diff --git a/includes/AuthPlugin.php b/includes/AuthPlugin.php
index b29e13f2..87ac8adb 100644
--- a/includes/AuthPlugin.php
+++ b/includes/AuthPlugin.php
@@ -63,8 +63,9 @@ class AuthPlugin {
* Modify options in the login template.
*
* @param $template UserLoginTemplate object.
+ * @param $type String 'signup' or 'login'.
*/
- public function modifyUITemplate( &$template ) {
+ public function modifyUITemplate( &$template, &$type ) {
# Override this!
$template->set( 'usedomain', false );
}
@@ -97,7 +98,7 @@ class AuthPlugin {
* The User object is passed by reference so it can be modified; don't
* forget the & on your function declaration.
*
- * @param User $user
+ * @param $user User object
*/
public function updateUser( &$user ) {
# Override this and do something
@@ -116,13 +117,32 @@ class AuthPlugin {
*
* This is just a question, and shouldn't perform any actions.
*
- * @return bool
+ * @return Boolean
*/
public function autoCreate() {
return false;
}
/**
+ * Allow a property change? Properties are the same as preferences
+ * and use the same keys. 'Realname' 'Emailaddress' and 'Nickname'
+ * all reference this.
+ *
+ * @return Boolean
+ */
+ public function allowPropChange( $prop = '' ) {
+ if( $prop == 'realname' && is_callable( array( $this, 'allowRealNameChange' ) ) ) {
+ return $this->allowRealNameChange();
+ } elseif( $prop == 'emailaddress' && is_callable( array( $this, 'allowEmailChange' ) ) ) {
+ return $this->allowEmailChange();
+ } elseif( $prop == 'nickname' && is_callable( array( $this, 'allowNickChange' ) ) ) {
+ return $this->allowNickChange();
+ } else {
+ return true;
+ }
+ }
+
+ /**
* Can users change their passwords?
*
* @return bool
@@ -152,7 +172,7 @@ class AuthPlugin {
* Return true if successful.
*
* @param $user User object.
- * @return bool
+ * @return Boolean
*/
public function updateExternalDB( $user ) {
return true;
@@ -161,7 +181,7 @@ class AuthPlugin {
/**
* Check to see if external accounts can be created.
* Return true if external accounts can be created.
- * @return bool
+ * @return Boolean
*/
public function canCreateAccounts() {
return false;
@@ -171,11 +191,11 @@ class AuthPlugin {
* Add a user to the external authentication database.
* Return true if successful.
*
- * @param User $user - only the name should be assumed valid at this point
- * @param string $password
- * @param string $email
- * @param string $realname
- * @return bool
+ * @param $user User: only the name should be assumed valid at this point
+ * @param $password String
+ * @param $email String
+ * @param $realname String
+ * @return Boolean
*/
public function addUser( $user, $password, $email='', $realname='' ) {
return true;
@@ -188,7 +208,7 @@ class AuthPlugin {
*
* This is just a question, and shouldn't perform any actions.
*
- * @return bool
+ * @return Boolean
*/
public function strict() {
return false;
@@ -199,7 +219,7 @@ class AuthPlugin {
* If either this or strict() returns true, local authentication is not used.
*
* @param $username String: username.
- * @return bool
+ * @return Boolean
*/
public function strictUserAuth( $username ) {
return false;
@@ -214,7 +234,7 @@ class AuthPlugin {
* forget the & on your function declaration.
*
* @param $user User object.
- * @param $autocreate bool True if user is being autocreated on login
+ * @param $autocreate Boolean: True if user is being autocreated on login
*/
public function initUser( &$user, $autocreate=false ) {
# Override this to do something.
@@ -232,7 +252,6 @@ class AuthPlugin {
* Get an instance of a User object
*
* @param $user User
- * @public
*/
public function getUserInstance( User &$user ) {
return new AuthPluginUser( $user );
diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php
index 85e7e668..cecb53f9 100644
--- a/includes/AutoLoader.php
+++ b/includes/AutoLoader.php
@@ -1,9 +1,6 @@
<?php
-
/* This defines autoloading handler for whole MediaWiki framework */
-ini_set('unserialize_callback_func', '__autoload' );
-
# Locations of core classes
# Extension classes are specified with $wgAutoloadClasses
# This array is a global instead of a static member of AutoLoader to work around a bug in APC
@@ -27,11 +24,23 @@ $wgAutoloadLocalClasses = array(
'Categoryfinder' => 'includes/Categoryfinder.php',
'CategoryPage' => 'includes/CategoryPage.php',
'CategoryViewer' => 'includes/CategoryPage.php',
+ 'CdbFunctions' => 'includes/Cdb_PHP.php',
+ 'CdbReader' => 'includes/Cdb.php',
+ 'CdbReader_DBA' => 'includes/Cdb.php',
+ 'CdbReader_PHP' => 'includes/Cdb_PHP.php',
+ 'CdbWriter' => 'includes/Cdb.php',
+ 'CdbWriter_DBA' => 'includes/Cdb.php',
+ 'CdbWriter_PHP' => 'includes/Cdb_PHP.php',
'ChangesList' => 'includes/ChangesList.php',
'ChangesFeed' => 'includes/ChangesFeed.php',
'ChangeTags' => 'includes/ChangeTags.php',
'ChannelFeed' => 'includes/Feed.php',
+ 'Cookie' => 'includes/HttpFunctions.php',
+ 'CookieJar' => 'includes/HttpFunctions.php',
'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
+ 'ConfEditor' => 'includes/ConfEditor.php',
+ 'ConfEditorParseError' => 'includes/ConfEditor.php',
+ 'ConfEditorToken' => 'includes/ConfEditor.php',
'ConstantDependency' => 'includes/CacheDependency.php',
'CreativeCommonsRdf' => 'includes/Metadata.php',
'Credits' => 'includes/Credits.php',
@@ -66,33 +75,58 @@ $wgAutoloadLocalClasses = array(
'ExternalStoreDB' => 'includes/ExternalStoreDB.php',
'ExternalStoreHttp' => 'includes/ExternalStoreHttp.php',
'ExternalStore' => 'includes/ExternalStore.php',
+ 'ExternalUser' => 'includes/ExternalUser.php',
+ 'ExternalUser_Hardcoded' => 'includes/extauth/Hardcoded.php',
+ 'ExternalUser_MediaWiki' => 'includes/extauth/MediaWiki.php',
+ 'ExternalUser_vB' => 'includes/extauth/vB.php',
'FatalError' => 'includes/Exception.php',
'FakeTitle' => 'includes/FakeTitle.php',
+ 'FakeMemCachedClient' => 'includes/ObjectCache.php',
'FauxRequest' => 'includes/WebRequest.php',
+ 'FauxResponse' => 'includes/WebResponse.php',
'FeedItem' => 'includes/Feed.php',
'FeedUtils' => 'includes/FeedUtils.php',
'FileDeleteForm' => 'includes/FileDeleteForm.php',
'FileDependency' => 'includes/CacheDependency.php',
'FileRevertForm' => 'includes/FileRevertForm.php',
- 'FileStore' => 'includes/FileStore.php',
'ForkController' => 'includes/ForkController.php',
'FormatExif' => 'includes/Exif.php',
'FormOptions' => 'includes/FormOptions.php',
- 'FSException' => 'includes/FileStore.php',
- 'FSTransaction' => 'includes/FileStore.php',
+ 'GIFMetadataExtractor' => 'includes/media/GIFMetadataExtractor.php',
+ 'GIFHandler' => 'includes/media/GIF.php',
'GlobalDependency' => 'includes/CacheDependency.php',
'HashBagOStuff' => 'includes/BagOStuff.php',
'HashtableReplacer' => 'includes/StringUtils.php',
'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
'HistoryBlob' => 'includes/HistoryBlob.php',
'HistoryBlobStub' => 'includes/HistoryBlob.php',
+ 'HistoryPage' => 'includes/HistoryPage.php',
+ 'HistoryPager' => 'includes/HistoryPage.php',
+ 'Html' => 'includes/Html.php',
'HTMLCacheUpdate' => 'includes/HTMLCacheUpdate.php',
'HTMLCacheUpdateJob' => 'includes/HTMLCacheUpdate.php',
'HTMLFileCache' => 'includes/HTMLFileCache.php',
+ 'HTMLForm' => 'includes/HTMLForm.php',
+ 'HTMLFormField' => 'includes/HTMLForm.php',
+ 'HTMLTextField' => 'includes/HTMLForm.php',
+ 'HTMLIntField' => 'includes/HTMLForm.php',
+ 'HTMLTextAreaField' => 'includes/HTMLForm.php',
+ 'HTMLFloatField' => 'includes/HTMLForm.php',
+ 'HTMLHiddenField' => 'includes/HTMLForm.php',
+ 'HTMLSubmitField' => 'includes/HTMLForm.php',
+ 'HTMLEditTools' => 'includes/HTMLForm.php',
+ 'HTMLCheckField' => 'includes/HTMLForm.php',
+ 'HTMLSelectField' => 'includes/HTMLForm.php',
+ 'HTMLSelectOrOtherField' => 'includes/HTMLForm.php',
+ 'HTMLMultiSelectField' => 'includes/HTMLForm.php',
+ 'HTMLRadioField' => 'includes/HTMLForm.php',
+ 'HTMLInfoField' => 'includes/HTMLForm.php',
'Http' => 'includes/HttpFunctions.php',
+ 'HttpRequest' => 'includes/HttpFunctions.php',
'IEContentAnalyzer' => 'includes/IEContentAnalyzer.php',
'ImageGallery' => 'includes/ImageGallery.php',
'ImageHistoryList' => 'includes/ImagePage.php',
+ 'ImageHistoryPseudoPager' => 'includes/ImagePage.php',
'ImagePage' => 'includes/ImagePage.php',
'ImageQueryPage' => 'includes/ImageQueryPage.php',
'IncludableSpecialPage' => 'includes/SpecialPage.php',
@@ -100,6 +134,10 @@ $wgAutoloadLocalClasses = array(
'Interwiki' => 'includes/Interwiki.php',
'IP' => 'includes/IP.php',
'Job' => 'includes/JobQueue.php',
+ 'JSMin' => 'includes/JSMin.php',
+ 'LCStore_DB' => 'includes/LocalisationCache.php',
+ 'LCStore_CDB' => 'includes/LocalisationCache.php',
+ 'LCStore_Null' => 'includes/LocalisationCache.php',
'License' => 'includes/Licenses.php',
'Licenses' => 'includes/Licenses.php',
'LinkBatch' => 'includes/LinkBatch.php',
@@ -107,6 +145,8 @@ $wgAutoloadLocalClasses = array(
'Linker' => 'includes/Linker.php',
'LinkFilter' => 'includes/LinkFilter.php',
'LinksUpdate' => 'includes/LinksUpdate.php',
+ 'LocalisationCache' => 'includes/LocalisationCache.php',
+ 'LocalisationCache_BulkLoad' => 'includes/LocalisationCache.php',
'LogPage' => 'includes/LogPage.php',
'LogPager' => 'includes/LogEventsList.php',
'LogEventsList' => 'includes/LogEventsList.php',
@@ -122,24 +162,24 @@ $wgAutoloadLocalClasses = array(
'MediaWikiBagOStuff' => 'includes/BagOStuff.php',
'MediaWiki_I18N' => 'includes/SkinTemplate.php',
'MediaWiki' => 'includes/Wiki.php',
- 'memcached' => 'includes/memcached-client.php',
+ 'MemCachedClientforWiki' => 'includes/memcached-client.php',
'MessageCache' => 'includes/MessageCache.php',
'MimeMagic' => 'includes/MimeMagic.php',
'MWException' => 'includes/Exception.php',
+ 'MWMemcached' => 'includes/memcached-client.php',
'MWNamespace' => 'includes/Namespace.php',
- 'MySQLSearchResultSet' => 'includes/SearchMySQL.php',
'Namespace' => 'includes/NamespaceCompat.php', // Compat
'OldChangesList' => 'includes/ChangesList.php',
- 'OracleSearchResultSet' => 'includes/SearchOracle.php',
'OutputPage' => 'includes/OutputPage.php',
- 'PageHistory' => 'includes/PageHistory.php',
- 'PageHistoryPager' => 'includes/PageHistory.php',
'PageQueryPage' => 'includes/PageQueryPage.php',
+ 'PageHistory' => 'includes/HistoryPage.php',
+ 'PageHistoryPager' => 'includes/HistoryPage.php',
'Pager' => 'includes/Pager.php',
'PasswordError' => 'includes/User.php',
'PatrolLog' => 'includes/PatrolLog.php',
- 'PostgresSearchResult' => 'includes/SearchPostgres.php',
- 'PostgresSearchResultSet' => 'includes/SearchPostgres.php',
+ 'PoolCounter' => 'includes/PoolCounter.php',
+ 'PoolCounter_Stub' => 'includes/PoolCounter.php',
+ 'Preferences' => 'includes/Preferences.php',
'PrefixSearch' => 'includes/PrefixSearch.php',
'Profiler' => 'includes/Profiler.php',
'ProfilerSimple' => 'includes/ProfilerSimple.php',
@@ -161,20 +201,9 @@ $wgAutoloadLocalClasses = array(
'Revision' => 'includes/Revision.php',
'RSSFeed' => 'includes/Feed.php',
'Sanitizer' => 'includes/Sanitizer.php',
- 'SearchEngineDummy' => 'includes/SearchEngine.php',
- 'SearchEngine' => 'includes/SearchEngine.php',
- 'SearchHighlighter' => 'includes/SearchEngine.php',
- 'SearchMySQL4' => 'includes/SearchMySQL4.php',
- 'SearchMySQL' => 'includes/SearchMySQL.php',
- 'SearchOracle' => 'includes/SearchOracle.php',
- 'SearchPostgres' => 'includes/SearchPostgres.php',
- 'SearchResult' => 'includes/SearchEngine.php',
- 'SearchResultSet' => 'includes/SearchEngine.php',
- 'SearchResultTooMany' => 'includes/SearchEngine.php',
- 'SearchUpdate' => 'includes/SearchUpdate.php',
- 'SearchUpdateMyISAM' => 'includes/SearchUpdate.php',
'SiteConfiguration' => 'includes/SiteConfiguration.php',
'SiteStats' => 'includes/SiteStats.php',
+ 'SiteStatsInit' => 'includes/SiteStats.php',
'SiteStatsUpdate' => 'includes/SiteStats.php',
'Skin' => 'includes/Skin.php',
'SkinTemplate' => 'includes/SkinTemplate.php',
@@ -185,7 +214,13 @@ $wgAutoloadLocalClasses = array(
'SpecialRedirectToSpecial' => 'includes/SpecialPage.php',
'SqlBagOStuff' => 'includes/BagOStuff.php',
'SquidUpdate' => 'includes/SquidUpdate.php',
+ 'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
+ 'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
'Status' => 'includes/Status.php',
+ 'StubContLang' => 'includes/StubObject.php',
+ 'StubUser' => 'includes/StubObject.php',
+ 'StubUserLang' => 'includes/StubObject.php',
+ 'StubObject' => 'includes/StubObject.php',
'StringUtils' => 'includes/StringUtils.php',
'TablePager' => 'includes/Pager.php',
'ThumbnailImage' => 'includes/MediaTransformOutput.php',
@@ -193,15 +228,20 @@ $wgAutoloadLocalClasses = array(
'TitleDependency' => 'includes/CacheDependency.php',
'Title' => 'includes/Title.php',
'TitleArray' => 'includes/TitleArray.php',
+ 'TitleArrayFromResult' => 'includes/TitleArray.php',
'TitleListDependency' => 'includes/CacheDependency.php',
'TransformParameterError' => 'includes/MediaTransformOutput.php',
- 'TurckBagOStuff' => 'includes/BagOStuff.php',
'UnlistedSpecialPage' => 'includes/SpecialPage.php',
+ 'UploadBase' => 'includes/upload/UploadBase.php',
+ 'UploadFromStash' => 'includes/upload/UploadFromStash.php',
+ 'UploadFromFile' => 'includes/upload/UploadFromFile.php',
+ 'UploadFromUrl' => 'includes/upload/UploadFromUrl.php',
'User' => 'includes/User.php',
'UserArray' => 'includes/UserArray.php',
'UserArrayFromResult' => 'includes/UserArray.php',
'UserMailer' => 'includes/UserMailer.php',
'UserRightsProxy' => 'includes/UserRightsProxy.php',
+ 'WantedQueryPage' => 'includes/QueryPage.php',
'WatchedItem' => 'includes/WatchedItem.php',
'WatchlistEditor' => 'includes/WatchlistEditor.php',
'WebRequest' => 'includes/WebRequest.php',
@@ -209,6 +249,8 @@ $wgAutoloadLocalClasses = array(
'WikiError' => 'includes/WikiError.php',
'WikiErrorMsg' => 'includes/WikiError.php',
'WikiExporter' => 'includes/Export.php',
+ 'WikiMap' => 'includes/WikiMap.php',
+ 'WikiReference' => 'includes/WikiMap.php',
'WikiXmlError' => 'includes/WikiError.php',
'XCacheBagOStuff' => 'includes/BagOStuff.php',
'XmlDumpWriter' => 'includes/Export.php',
@@ -282,6 +324,7 @@ $wgAutoloadLocalClasses = array(
'ApiQueryRevisions' => 'includes/api/ApiQueryRevisions.php',
'ApiQuerySearch' => 'includes/api/ApiQuerySearch.php',
'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php',
+ 'ApiQueryTags' => 'includes/api/ApiQueryTags.php',
'ApiQueryUserInfo' => 'includes/api/ApiQueryUserInfo.php',
'ApiQueryUsers' => 'includes/api/ApiQueryUsers.php',
'ApiQueryWatchlist' => 'includes/api/ApiQueryWatchlist.php',
@@ -290,56 +333,58 @@ $wgAutoloadLocalClasses = array(
'ApiRollback' => 'includes/api/ApiRollback.php',
'ApiUnblock' => 'includes/api/ApiUnblock.php',
'ApiUndelete' => 'includes/api/ApiUndelete.php',
+ 'ApiUserrights' => 'includes/api/ApiUserrights.php',
+ 'ApiUpload' => 'includes/api/ApiUpload.php',
'ApiWatch' => 'includes/api/ApiWatch.php',
- 'Services_JSON' => 'includes/api/ApiFormatJson_json.php',
- 'Services_JSON_Error' => 'includes/api/ApiFormatJson_json.php',
+
'Spyc' => 'includes/api/ApiFormatYaml_spyc.php',
'UsageException' => 'includes/api/ApiMain.php',
+ # includes/json
+ 'Services_JSON' => 'includes/json/Services_JSON.php',
+ 'Services_JSON_Error' => 'includes/json/Services_JSON.php',
+ 'FormatJson' => 'includes/json/FormatJson.php',
+
# includes/db
'Blob' => 'includes/db/Database.php',
'ChronologyProtector' => 'includes/db/LBFactory.php',
- 'Database' => 'includes/db/Database.php',
+ 'Database' => 'includes/db/DatabaseMysql.php',
+ 'DatabaseBase' => 'includes/db/Database.php',
'DatabaseMssql' => 'includes/db/DatabaseMssql.php',
- 'DatabaseMysql' => 'includes/db/Database.php',
+ 'DatabaseMysql' => 'includes/db/DatabaseMysql.php',
'DatabaseOracle' => 'includes/db/DatabaseOracle.php',
'DatabasePostgres' => 'includes/db/DatabasePostgres.php',
'DatabaseSqlite' => 'includes/db/DatabaseSqlite.php',
+ 'DatabaseSqliteStandalone' => 'includes/db/DatabaseSqlite.php',
'DBConnectionError' => 'includes/db/Database.php',
'DBError' => 'includes/db/Database.php',
'DBObject' => 'includes/db/Database.php',
'DBQueryError' => 'includes/db/Database.php',
'DBUnexpectedError' => 'includes/db/Database.php',
+ 'IBM_DB2Blob' => 'includes/db/DatabaseIbm_db2.php',
'LBFactory' => 'includes/db/LBFactory.php',
'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
'LBFactory_Simple' => 'includes/db/LBFactory.php',
+ 'LikeMatch' => 'includes/db/Database.php',
'LoadBalancer' => 'includes/db/LoadBalancer.php',
'LoadMonitor' => 'includes/db/LoadMonitor.php',
'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
'MSSQLField' => 'includes/db/DatabaseMssql.php',
'MySQLField' => 'includes/db/Database.php',
- 'MySQLMasterPos' => 'includes/db/Database.php',
+ 'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
'ORABlob' => 'includes/db/DatabaseOracle.php',
+ 'ORAField' => 'includes/db/DatabaseOracle.php',
'ORAResult' => 'includes/db/DatabaseOracle.php',
'PostgresField' => 'includes/db/DatabasePostgres.php',
'ResultWrapper' => 'includes/db/Database.php',
'SQLiteField' => 'includes/db/DatabaseSqlite.php',
-
'DatabaseIbm_db2' => 'includes/db/DatabaseIbm_db2.php',
'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
- 'IBM_DB2SearchResultSet' => 'includes/SearchIBM_DB2.php',
- 'SearchIBM_DB2' => 'includes/SearchIBM_DB2.php',
# includes/diff
- 'AncestorComparator' => 'includes/diff/HTMLDiff.php',
- 'AnchorToString' => 'includes/diff/HTMLDiff.php',
'ArrayDiffFormatter' => 'includes/diff/DifferenceEngine.php',
- 'BodyNode' => 'includes/diff/Nodes.php',
- 'ChangeText' => 'includes/diff/HTMLDiff.php',
- 'ChangeTextGenerator' => 'includes/diff/HTMLDiff.php',
- 'DelegatingContentHandler' => 'includes/diff/HTMLDiff.php',
'_DiffEngine' => 'includes/diff/DifferenceEngine.php',
- 'DifferenceEngine' => 'includes/diff/DifferenceEngine.php',
+ 'DifferenceEngine' => 'includes/diff/DifferenceInterface.php',
'DiffFormatter' => 'includes/diff/DifferenceEngine.php',
'Diff' => 'includes/diff/DifferenceEngine.php',
'_DiffOp_Add' => 'includes/diff/DifferenceEngine.php',
@@ -347,34 +392,17 @@ $wgAutoloadLocalClasses = array(
'_DiffOp_Copy' => 'includes/diff/DifferenceEngine.php',
'_DiffOp_Delete' => 'includes/diff/DifferenceEngine.php',
'_DiffOp' => 'includes/diff/DifferenceEngine.php',
- 'DomTreeBuilder' => 'includes/diff/HTMLDiff.php',
- 'DummyNode' => 'includes/diff/Nodes.php',
- 'HTMLDiffer' => 'includes/diff/HTMLDiff.php',
- 'HTMLOutput' => 'includes/diff/HTMLDiff.php',
'_HWLDF_WordAccumulator' => 'includes/diff/DifferenceEngine.php',
- 'ImageNode' => 'includes/diff/Nodes.php',
- 'LastCommonParentResult' => 'includes/diff/HTMLDiff.php',
'MappedDiff' => 'includes/diff/DifferenceEngine.php',
- 'Modification' => 'includes/diff/HTMLDiff.php',
- 'NoContentTagToString' => 'includes/diff/HTMLDiff.php',
- 'Node' => 'includes/diff/Nodes.php',
'RangeDifference' => 'includes/diff/Diff.php',
'TableDiffFormatter' => 'includes/diff/DifferenceEngine.php',
- 'TagNode' => 'includes/diff/Nodes.php',
- 'TagToString' => 'includes/diff/HTMLDiff.php',
- 'TagToStringFactory' => 'includes/diff/HTMLDiff.php',
- 'TextNode' => 'includes/diff/Nodes.php',
- 'TextNodeDiffer' => 'includes/diff/HTMLDiff.php',
- 'TextOnlyComparator' => 'includes/diff/HTMLDiff.php',
'UnifiedDiffFormatter' => 'includes/diff/DifferenceEngine.php',
- 'WhiteSpaceNode' => 'includes/diff/Nodes.php',
'WikiDiff3' => 'includes/diff/Diff.php',
'WordLevelDiff' => 'includes/diff/DifferenceEngine.php',
# includes/filerepo
'ArchivedFile' => 'includes/filerepo/ArchivedFile.php',
'File' => 'includes/filerepo/File.php',
- 'FileCache' => 'includes/filerepo/FileCache.php',
'FileRepo' => 'includes/filerepo/FileRepo.php',
'FileRepoStatus' => 'includes/filerepo/FileRepoStatus.php',
'ForeignAPIFile' => 'includes/filerepo/ForeignAPIFile.php',
@@ -408,10 +436,13 @@ $wgAutoloadLocalClasses = array(
# includes/parser
'CoreLinkFunctions' => 'includes/parser/CoreLinkFunctions.php',
'CoreParserFunctions' => 'includes/parser/CoreParserFunctions.php',
+ 'CoreTagHooks' => 'includes/parser/CoreTagHooks.php',
'DateFormatter' => 'includes/parser/DateFormatter.php',
'LinkHolderArray' => 'includes/parser/LinkHolderArray.php',
- 'LinkMarkerReplacer' => 'includes/parser/LinkMarkerReplacer.php',
+ 'LinkMarkerReplacer' => 'includes/parser/Parser_LinkHooks.php',
'OnlyIncludeReplacer' => 'includes/parser/Parser.php',
+ 'PPCustomFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPCustomFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
'PPDAccum_Hash' => 'includes/parser/Preprocessor_Hash.php',
'PPDPart' => 'includes/parser/Preprocessor_DOM.php',
'PPDPart_Hash' => 'includes/parser/Preprocessor_Hash.php',
@@ -442,7 +473,31 @@ $wgAutoloadLocalClasses = array(
'StripState' => 'includes/parser/Parser.php',
'MWTidy' => 'includes/parser/Tidy.php',
+ # includes/search
+ 'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
+ 'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
+ 'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
+ 'SearchEngineDummy' => 'includes/search/SearchEngine.php',
+ 'SearchEngine' => 'includes/search/SearchEngine.php',
+ 'SearchHighlighter' => 'includes/search/SearchEngine.php',
+ 'SearchIBM_DB2' => 'includes/search/SearchIBM_DB2.php',
+ 'SearchMySQL4' => 'includes/search/SearchMySQL4.php',
+ 'SearchMySQL' => 'includes/search/SearchMySQL.php',
+ 'SearchOracle' => 'includes/search/SearchOracle.php',
+ 'SearchPostgres' => 'includes/search/SearchPostgres.php',
+ 'SearchResult' => 'includes/search/SearchEngine.php',
+ 'SearchResultSet' => 'includes/search/SearchEngine.php',
+ 'SearchResultTooMany' => 'includes/search/SearchEngine.php',
+ 'SearchSqlite' => 'includes/search/SearchSqlite.php',
+ 'SearchUpdate' => 'includes/search/SearchUpdate.php',
+ 'SearchUpdateMyISAM' => 'includes/search/SearchUpdate.php',
+ 'SqliteSearchResultSet' => 'includes/search/SearchSqlite.php',
+ 'SqlSearchResultSet' => 'includes/search/SearchEngine.php',
+
# includes/specials
+ 'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php',
+ 'ActiveUsersPager' => 'includes/specials/SpecialActiveusers.php',
+ 'AllmessagesTablePager' => 'includes/specials/SpecialAllmessages.php',
'AncientPagesPage' => 'includes/specials/SpecialAncientpages.php',
'BrokenRedirectsPage' => 'includes/specials/SpecialBrokenRedirects.php',
'ContribsPager' => 'includes/specials/SpecialContributions.php',
@@ -456,6 +511,7 @@ $wgAutoloadLocalClasses = array(
'EmailConfirmation' => 'includes/specials/SpecialConfirmemail.php',
'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
'EmailUserForm' => 'includes/specials/SpecialEmailuser.php',
+ 'FakeResultWrapper' => 'includes/specials/SpecialAllmessages.php',
'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
'IPBlockForm' => 'includes/specials/SpecialBlockip.php',
@@ -482,26 +538,41 @@ $wgAutoloadLocalClasses = array(
'PageArchive' => 'includes/specials/SpecialUndelete.php',
'SpecialResetpass' => 'includes/specials/SpecialResetpass.php',
'PopularPagesPage' => 'includes/specials/SpecialPopularpages.php',
- 'PreferencesForm' => 'includes/specials/SpecialPreferences.php',
+ 'PreferencesForm' => 'includes/Preferences.php',
'RandomPage' => 'includes/specials/SpecialRandompage.php',
'SpecialRevisionDelete' => 'includes/specials/SpecialRevisiondelete.php',
'RevisionDeleter' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_RevisionList' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_RevisionItem' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_ArchiveList' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_ArchiveItem' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_FileList' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_FileItem' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_ArchivedFileList' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_ArchivedFileItem' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_LogList' => 'includes/specials/SpecialRevisiondelete.php',
+ 'RevDel_LogItem' => 'includes/specials/SpecialRevisiondelete.php',
'ShortPagesPage' => 'includes/specials/SpecialShortpages.php',
+ 'SpecialActiveUsers' => 'includes/specials/SpecialActiveusers.php',
'SpecialAllpages' => 'includes/specials/SpecialAllpages.php',
+ 'SpecialBlankpage' => 'includes/specials/SpecialBlankpage.php',
'SpecialBookSources' => 'includes/specials/SpecialBooksources.php',
'SpecialExport' => 'includes/specials/SpecialExport.php',
'SpecialImport' => 'includes/specials/SpecialImport.php',
'SpecialListGroupRights' => 'includes/specials/SpecialListgrouprights.php',
'SpecialMostlinkedtemplates' => 'includes/specials/SpecialMostlinkedtemplates.php',
+ 'SpecialPreferences' => 'includes/specials/SpecialPreferences.php',
'SpecialPrefixindex' => 'includes/specials/SpecialPrefixindex.php',
'SpecialRandomredirect' => 'includes/specials/SpecialRandomredirect.php',
- 'SpecialRecentchanges' => 'includes/specials/SpecialRecentchanges.php',
+ 'SpecialRecentChanges' => 'includes/specials/SpecialRecentchanges.php',
'SpecialRecentchangeslinked' => 'includes/specials/SpecialRecentchangeslinked.php',
'SpecialSearch' => 'includes/specials/SpecialSearch.php',
- 'SpecialSearchOld' => 'includes/specials/SpecialSearch.php',
'SpecialStatistics' => 'includes/specials/SpecialStatistics.php',
'SpecialTags' => 'includes/specials/SpecialTags.php',
+ 'SpecialUpload' => 'includes/specials/SpecialUpload.php',
'SpecialVersion' => 'includes/specials/SpecialVersion.php',
+ 'SpecialWhatlinkshere' => 'includes/specials/SpecialWhatlinkshere.php',
+ 'SpecialWhatLinksHere' => 'includes/specials/SpecialWhatlinkshere.php',
'UncategorizedCategoriesPage' => 'includes/specials/SpecialUncategorizedcategories.php',
'UncategorizedPagesPage' => 'includes/specials/SpecialUncategorizedpages.php',
'UncategorizedTemplatesPage' => 'includes/specials/SpecialUncategorizedtemplates.php',
@@ -511,7 +582,7 @@ $wgAutoloadLocalClasses = array(
'UnusedtemplatesPage' => 'includes/specials/SpecialUnusedtemplates.php',
'UnwatchedpagesPage' => 'includes/specials/SpecialUnwatchedpages.php',
'UploadForm' => 'includes/specials/SpecialUpload.php',
- 'UploadFormMogile' => 'includes/specials/SpecialUploadMogile.php',
+ 'UploadSourceField' => 'includes/specials/SpecialUpload.php',
'UserrightsPage' => 'includes/specials/SpecialUserrights.php',
'UsersPager' => 'includes/specials/SpecialListusers.php',
'WantedCategoriesPage' => 'includes/specials/SpecialWantedcategories.php',
@@ -530,13 +601,14 @@ $wgAutoloadLocalClasses = array(
# languages
'Language' => 'languages/Language.php',
'FakeConverter' => 'languages/Language.php',
+ 'LanguageConverter' => 'languages/LanguageConverter.php',
# maintenance/language
'statsOutput' => 'maintenance/language/StatOutputs.php',
'wikiStatsOutput' => 'maintenance/language/StatOutputs.php',
- 'metawikiStatsOutput' => 'maintenance/language/StatOutputs.php',
'textStatsOutput' => 'maintenance/language/StatOutputs.php',
'csvStatsOutput' => 'maintenance/language/StatOutputs.php',
+ 'SevenZipStream' => 'maintenance/7zip.inc',
);
@@ -544,7 +616,7 @@ class AutoLoader {
/**
* autoload - take a class name and attempt to load it
*
- * @param string $className Name of class we're looking for.
+ * @param $className String: name of class we're looking for.
* @return bool Returning false is important on failure as
* it allows Zend to try and look in other registered autoloaders
* as well.
@@ -567,7 +639,7 @@ class AutoLoader {
}
}
if ( !$filename ) {
- if( function_exists( 'wfDebug' ) )
+ if( function_exists( 'wfDebug' ) )
wfDebug( "Class {$className} not found; skipped loading\n" );
# Give up
return false;
@@ -592,6 +664,17 @@ class AutoLoader {
}
}
}
+
+ /**
+ * Force a class to be run through the autoloader, helpful for things like
+ * Sanitizer that have define()s outside of their class definition. Of course
+ * this wouldn't be necessary if everything in MediaWiki was class-based. Sigh.
+ *
+ * @return Boolean Return the results of class_exists() so we know if we were successful
+ */
+ static function loadClass( $class ) {
+ return class_exists( $class );
+ }
}
function wfLoadAllExtensions() {
@@ -604,4 +687,6 @@ if ( function_exists( 'spl_autoload_register' ) ) {
function __autoload( $class ) {
AutoLoader::autoload( $class );
}
+
+ ini_set( 'unserialize_callback_func', '__autoload' );
}
diff --git a/includes/Autopromote.php b/includes/Autopromote.php
index c8a4c03b..c0adff43 100644
--- a/includes/Autopromote.php
+++ b/includes/Autopromote.php
@@ -1,5 +1,4 @@
<?php
-
/**
* This class checks if user can get extra rights
* because of conditions specified in $wgAutopromote
@@ -18,9 +17,9 @@ class Autopromote {
if( self::recCheckCondition( $cond, $user ) )
$promote[] = $group;
}
-
+
wfRunHooks( 'GetAutoPromoteGroups', array( $user, &$promote ) );
-
+
return $promote;
}
@@ -116,6 +115,8 @@ class Autopromote {
return $cond[1] == wfGetIP();
case APCOND_IPINRANGE:
return IP::isInRange( wfGetIP(), $cond[1] );
+ case APCOND_BLOCKED:
+ return $user->isBlocked();
default:
$result = null;
wfRunHooks( 'AutopromoteCondition', array( $cond[0], array_slice( $cond, 1 ), $user, &$result ) );
diff --git a/includes/BacklinkCache.php b/includes/BacklinkCache.php
index a7bcd858..53f92dd9 100644
--- a/includes/BacklinkCache.php
+++ b/includes/BacklinkCache.php
@@ -1,10 +1,9 @@
<?php
-
/**
* Class for fetching backlink lists, approximate backlink counts and partitions.
* Instances of this class should typically be fetched with $title->getBacklinkCache().
*
- * Ideally you should only get your backlinks from here when you think there is some
+ * Ideally you should only get your backlinks from here when you think there is some
* advantage in caching them. Otherwise it's just a waste of memory.
*/
class BacklinkCache {
@@ -47,44 +46,53 @@ class BacklinkCache {
/**
* Get the backlinks for a given table. Cached in process memory only.
- * @param string $table
+ * @param $table String
+ * @param $startId Integer or false
+ * @param $endId Integer or false
* @return TitleArray
*/
public function getLinks( $table, $startId = false, $endId = false ) {
wfProfileIn( __METHOD__ );
+ $fromField = $this->getPrefix( $table ) . '_from';
+
if ( $startId || $endId ) {
// Partial range, not cached
- wfDebug( __METHOD__.": from DB (uncacheable range)\n" );
+ wfDebug( __METHOD__ . ": from DB (uncacheable range)\n" );
$conds = $this->getConditions( $table );
// Use the from field in the condition rather than the joined page_id,
// because databases are stupid and don't necessarily propagate indexes.
- $fromField = $this->getPrefix( $table ) . '_from';
if ( $startId ) {
$conds[] = "$fromField >= " . intval( $startId );
}
if ( $endId ) {
$conds[] = "$fromField <= " . intval( $endId );
}
- $res = $this->getDB()->select(
+ $res = $this->getDB()->select(
array( $table, 'page' ),
- array( 'page_namespace', 'page_title', 'page_id'),
+ array( 'page_namespace', 'page_title', 'page_id' ),
$conds,
__METHOD__,
- array('STRAIGHT_JOIN') );
+ array(
+ 'STRAIGHT_JOIN',
+ 'ORDER BY' => $fromField
+ ) );
$ta = TitleArray::newFromResult( $res );
wfProfileOut( __METHOD__ );
return $ta;
}
if ( !isset( $this->fullResultCache[$table] ) ) {
- wfDebug( __METHOD__.": from DB\n" );
- $res = $this->getDB()->select(
+ wfDebug( __METHOD__ . ": from DB\n" );
+ $res = $this->getDB()->select(
array( $table, 'page' ),
array( 'page_namespace', 'page_title', 'page_id' ),
$this->getConditions( $table ),
__METHOD__,
- array('STRAIGHT_JOIN') );
+ array(
+ 'STRAIGHT_JOIN',
+ 'ORDER BY' => $fromField,
+ ) );
$this->fullResultCache[$table] = $res;
}
$ta = TitleArray::newFromResult( $this->fullResultCache[$table] );
@@ -103,6 +111,7 @@ class BacklinkCache {
'templatelinks' => 'tl',
'redirect' => 'rd',
);
+
if ( isset( $prefixes[$table] ) ) {
return $prefixes[$table];
} else {
@@ -115,6 +124,7 @@ class BacklinkCache {
*/
protected function getConditions( $table ) {
$prefix = $this->getPrefix( $table );
+
switch ( $table ) {
case 'pagelinks':
case 'templatelinks':
@@ -126,13 +136,13 @@ class BacklinkCache {
);
break;
case 'imagelinks':
- $conds = array(
+ $conds = array(
'il_to' => $this->title->getDBkey(),
'page_id=il_from'
);
break;
case 'categorylinks':
- $conds = array(
+ $conds = array(
'cl_to' => $this->title->getDBkey(),
'page_id=cl_from',
);
@@ -150,10 +160,12 @@ class BacklinkCache {
if ( isset( $this->fullResultCache[$table] ) ) {
return $this->fullResultCache[$table]->numRows();
}
+
if ( isset( $this->partitionCache[$table] ) ) {
$entry = reset( $this->partitionCache[$table] );
return $entry['numRows'];
}
+
$titleArray = $this->getLinks( $table );
return $titleArray->count();
}
@@ -163,33 +175,40 @@ class BacklinkCache {
* Returns an array giving the start and end of each range. The first batch has
* a start of false, and the last batch has an end of false.
*
- * @param string $table The links table name
- * @param integer $batchSize
- * @return array
+ * @param $table String: the links table name
+ * @param $batchSize Integer
+ * @return Array
*/
public function partition( $table, $batchSize ) {
// Try cache
if ( isset( $this->partitionCache[$table][$batchSize] ) ) {
- wfDebug( __METHOD__.": got from partition cache\n" );
+ wfDebug( __METHOD__ . ": got from partition cache\n" );
return $this->partitionCache[$table][$batchSize]['batches'];
}
+
$this->partitionCache[$table][$batchSize] = false;
$cacheEntry =& $this->partitionCache[$table][$batchSize];
// Try full result cache
if ( isset( $this->fullResultCache[$table] ) ) {
$cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
- wfDebug( __METHOD__.": got from full result cache\n" );
+ wfDebug( __METHOD__ . ": got from full result cache\n" );
return $cacheEntry['batches'];
}
+
// Try memcached
global $wgMemc;
- $memcKey = wfMemcKey( 'backlinks', md5( $this->title->getPrefixedDBkey() ),
- $table, $batchSize );
+ $memcKey = wfMemcKey(
+ 'backlinks',
+ md5( $this->title->getPrefixedDBkey() ),
+ $table,
+ $batchSize
+ );
$memcValue = $wgMemc->get( $memcKey );
+
if ( is_array( $memcValue ) ) {
$cacheEntry = $memcValue;
- wfDebug( __METHOD__.": got from memcached $memcKey\n" );
+ wfDebug( __METHOD__ . ": got from memcached $memcKey\n" );
return $cacheEntry['batches'];
}
// Fetch from database
@@ -197,17 +216,18 @@ class BacklinkCache {
$cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
// Save to memcached
$wgMemc->set( $memcKey, $cacheEntry, self::CACHE_EXPIRY );
- wfDebug( __METHOD__.": got from database\n" );
+ wfDebug( __METHOD__ . ": got from database\n" );
return $cacheEntry['batches'];
}
- /**
+ /**
* Partition a DB result with backlinks in it into batches
*/
protected function partitionResult( $res, $batchSize ) {
$batches = array();
$numRows = $res->numRows();
$numBatches = ceil( $numRows / $batchSize );
+
for ( $i = 0; $i < $numBatches; $i++ ) {
if ( $i == 0 ) {
$start = false;
@@ -217,6 +237,7 @@ class BacklinkCache {
$row = $res->fetchObject();
$start = $row->page_id;
}
+
if ( $i == $numBatches - 1 ) {
$end = false;
} else {
@@ -225,6 +246,12 @@ class BacklinkCache {
$row = $res->fetchObject();
$end = $row->page_id - 1;
}
+
+ # Sanity check order
+ if ( $start && $end && $start > $end ) {
+ throw new MWException( __METHOD__ . ': Internal error: query result out of order' );
+ }
+
$batches[] = array( $start, $end );
}
return array( 'numRows' => $numRows, 'batches' => $batches );
diff --git a/includes/BagOStuff.php b/includes/BagOStuff.php
index ffa8a0bb..ac0263d8 100644
--- a/includes/BagOStuff.php
+++ b/includes/BagOStuff.php
@@ -32,134 +32,129 @@
* backends for local hash array and SQL table included:
* <code>
* $bag = new HashBagOStuff();
- * $bag = new MediaWikiBagOStuff($tablename); # connect to db first
+ * $bag = new SqlBagOStuff(); # connect to db first
* </code>
*
* @ingroup Cache
*/
-class BagOStuff {
- var $debugmode;
+abstract class BagOStuff {
+ var $debugMode = false;
- function __construct() {
- $this->set_debug( false );
- }
-
- function set_debug($bool) {
- $this->debugmode = $bool;
+ public function set_debug( $bool ) {
+ $this->debugMode = $bool;
}
/* *** THE GUTS OF THE OPERATION *** */
/* Override these with functional things in subclasses */
- function get($key) {
- /* stub */
- return false;
- }
+ /**
+ * Get an item with the given key. Returns false if it does not exist.
+ * @param $key string
+ */
+ abstract public function get( $key );
- function set($key, $value, $exptime=0) {
- /* stub */
- return false;
- }
+ /**
+ * Set an item.
+ * @param $key string
+ * @param $value mixed
+ * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+ */
+ abstract public function set( $key, $value, $exptime = 0 );
- function delete($key, $time=0) {
- /* stub */
- return false;
- }
+ /*
+ * Delete an item.
+ * @param $key string
+ * @param $time int Amount of time to delay the operation (mostly memcached-specific)
+ */
+ abstract public function delete( $key, $time = 0 );
- function lock($key, $timeout = 0) {
+ public function lock( $key, $timeout = 0 ) {
/* stub */
return true;
}
- function unlock($key) {
+ public function unlock( $key ) {
/* stub */
return true;
}
- function keys() {
+ public function keys() {
/* stub */
return array();
}
/* *** Emulated functions *** */
/* Better performance can likely be got with custom written versions */
- function get_multi($keys) {
+ public function get_multi( $keys ) {
$out = array();
- foreach($keys as $key)
- $out[$key] = $this->get($key);
+
+ foreach ( $keys as $key ) {
+ $out[$key] = $this->get( $key );
+ }
+
return $out;
}
- function set_multi($hash, $exptime=0) {
- foreach($hash as $key => $value)
- $this->set($key, $value, $exptime);
+ public function set_multi( $hash, $exptime = 0 ) {
+ foreach ( $hash as $key => $value ) {
+ $this->set( $key, $value, $exptime );
+ }
}
- function add($key, $value, $exptime=0) {
- if( $this->get($key) == false ) {
- $this->set($key, $value, $exptime);
+ public function add( $key, $value, $exptime = 0 ) {
+ if ( $this->get( $key ) == false ) {
+ $this->set( $key, $value, $exptime );
return true;
}
}
- function add_multi($hash, $exptime=0) {
- foreach($hash as $key => $value)
- $this->add($key, $value, $exptime);
+ public function add_multi( $hash, $exptime = 0 ) {
+ foreach ( $hash as $key => $value ) {
+ $this->add( $key, $value, $exptime );
+ }
}
- function delete_multi($keys, $time=0) {
- foreach($keys as $key)
- $this->delete($key, $time);
+ public function delete_multi( $keys, $time = 0 ) {
+ foreach ( $keys as $key ) {
+ $this->delete( $key, $time );
+ }
}
- function replace($key, $value, $exptime=0) {
- if( $this->get($key) !== false )
- $this->set($key, $value, $exptime);
+ public function replace( $key, $value, $exptime = 0 ) {
+ if ( $this->get( $key ) !== false ) {
+ $this->set( $key, $value, $exptime );
+ }
}
- function incr($key, $value=1) {
- if ( !$this->lock($key) ) {
+ public function incr( $key, $value = 1 ) {
+ if ( !$this->lock( $key ) ) {
return false;
}
- $value = intval($value);
- if($value < 0) $value = 0;
+ $value = intval( $value );
$n = false;
- if( ($n = $this->get($key)) !== false ) {
+ if ( ( $n = $this->get( $key ) ) !== false ) {
$n += $value;
- $this->set($key, $n); // exptime?
+ $this->set( $key, $n ); // exptime?
}
- $this->unlock($key);
+ $this->unlock( $key );
return $n;
}
- function decr($key, $value=1) {
- if ( !$this->lock($key) ) {
- return false;
- }
- $value = intval($value);
- if($value < 0) $value = 0;
-
- $m = false;
- if( ($n = $this->get($key)) !== false ) {
- $m = $n - $value;
- if($m < 0) $m = 0;
- $this->set($key, $m); // exptime?
- }
- $this->unlock($key);
- return $m;
+ public function decr( $key, $value = 1 ) {
+ return $this->incr( $key, - $value );
}
- function _debug($text) {
- if($this->debugmode)
- wfDebug("BagOStuff debug: $text\n");
+ public function debug( $text ) {
+ if ( $this->debugMode )
+ wfDebug( "BagOStuff debug: $text\n" );
}
/**
* Convert an optionally relative time to an absolute time
*/
- static function convertExpiry( $exptime ) {
- if(($exptime != 0) && ($exptime < 3600*24*30)) {
+ protected function convertExpiry( $exptime ) {
+ if ( ( $exptime != 0 ) && ( $exptime < 3600 * 24 * 30 ) ) {
return time() + $exptime;
} else {
return $exptime;
@@ -167,7 +162,6 @@ class BagOStuff {
}
}
-
/**
* Functional versions!
* This is a test of the interface, mainly. It stores things in an associative
@@ -182,30 +176,34 @@ class HashBagOStuff extends BagOStuff {
$this->bag = array();
}
- function _expire($key) {
+ protected function expire( $key ) {
$et = $this->bag[$key][1];
- if(($et == 0) || ($et > time()))
+ if ( ( $et == 0 ) || ( $et > time() ) ) {
return false;
- $this->delete($key);
+ }
+ $this->delete( $key );
return true;
}
- function get($key) {
- if(!$this->bag[$key])
+ function get( $key ) {
+ if ( !isset( $this->bag[$key] ) ) {
return false;
- if($this->_expire($key))
+ }
+ if ( $this->expire( $key ) ) {
return false;
+ }
return $this->bag[$key][0];
}
- function set($key,$value,$exptime=0) {
- $this->bag[$key] = array( $value, BagOStuff::convertExpiry( $exptime ) );
+ function set( $key, $value, $exptime = 0 ) {
+ $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
}
- function delete($key,$time=0) {
- if(!$this->bag[$key])
+ function delete( $key, $time = 0 ) {
+ if ( !isset( $this->bag[$key] ) ) {
return false;
- unset($this->bag[$key]);
+ }
+ unset( $this->bag[$key] );
return true;
}
@@ -215,182 +213,196 @@ class HashBagOStuff extends BagOStuff {
}
/**
- * Generic class to store objects in a database
+ * Class to store objects in the database
*
* @ingroup Cache
*/
-abstract class SqlBagOStuff extends BagOStuff {
- var $table;
- var $lastexpireall = 0;
+class SqlBagOStuff extends BagOStuff {
+ var $lb, $db;
+ var $lastExpireAll = 0;
- /**
- * Constructor
- *
- * @param $tablename String: name of the table to use
- */
- function __construct($tablename = 'objectcache') {
- $this->table = $tablename;
+ protected function getDB() {
+ global $wgDBtype;
+ if ( !isset( $this->db ) ) {
+ /* We must keep a separate connection to MySQL in order to avoid deadlocks
+ * However, SQLite has an opposite behaviour.
+ * @todo Investigate behaviour for other databases
+ */
+ if ( $wgDBtype == 'sqlite' ) {
+ $this->db = wfGetDB( DB_MASTER );
+ } else {
+ $this->lb = wfGetLBFactory()->newMainLB();
+ $this->db = $this->lb->getConnection( DB_MASTER );
+ $this->db->clearFlag( DBO_TRX );
+ }
+ }
+ return $this->db;
}
- function get($key) {
- /* expire old entries if any */
+ public function get( $key ) {
+ # expire old entries if any
$this->garbageCollect();
-
- $res = $this->_query(
- "SELECT value,exptime FROM $0 WHERE keyname='$1'", $key);
- if(!$res) {
- $this->_debug("get: ** error: " . $this->_dberror($res) . " **");
+ $db = $this->getDB();
+ $row = $db->selectRow( 'objectcache', array( 'value', 'exptime' ),
+ array( 'keyname' => $key ), __METHOD__ );
+ if ( !$row ) {
+ $this->debug( 'get: no matching rows' );
return false;
}
- if($row=$this->_fetchobject($res)) {
- $this->_debug("get: retrieved data; exp time is " . $row->exptime);
- if ( $row->exptime != $this->_maxdatetime() &&
- wfTimestamp( TS_UNIX, $row->exptime ) < time() )
- {
- $this->_debug("get: key has expired, deleting");
- $this->delete($key);
- return false;
+
+ $this->debug( "get: retrieved data; expiry time is " . $row->exptime );
+ if ( $this->isExpired( $row->exptime ) ) {
+ $this->debug( "get: key has expired, deleting" );
+ try {
+ $db->begin();
+ # Put the expiry time in the WHERE condition to avoid deleting a
+ # newly-inserted value
+ $db->delete( 'objectcache',
+ array(
+ 'keyname' => $key,
+ 'exptime' => $row->exptime
+ ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
}
- return $this->_unserialize($this->_blobdecode($row->value));
- } else {
- $this->_debug('get: no matching rows');
+ return false;
}
- return false;
+ return $this->unserialize( $db->decodeBlob( $row->value ) );
}
- function set($key,$value,$exptime=0) {
- if ( $this->_readonly() ) {
- return false;
- }
- $exptime = intval($exptime);
- if($exptime < 0) $exptime = 0;
- if($exptime == 0) {
- $exp = $this->_maxdatetime();
+ public function set( $key, $value, $exptime = 0 ) {
+ $db = $this->getDB();
+ $exptime = intval( $exptime );
+ if ( $exptime < 0 ) $exptime = 0;
+ if ( $exptime == 0 ) {
+ $encExpiry = $this->getMaxDateTime();
} else {
- if($exptime < 3.16e8) # ~10 years
+ if ( $exptime < 3.16e8 ) # ~10 years
$exptime += time();
- $exp = $this->_fromunixtime($exptime);
+ $encExpiry = $db->timestamp( $exptime );
}
- $this->_begin();
- $this->_query(
- "DELETE FROM $0 WHERE keyname='$1'", $key );
- $this->_doinsert($this->getTableName(), array(
+ try {
+ $db->begin();
+ $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ );
+ $db->insert( 'objectcache',
+ array(
'keyname' => $key,
- 'value' => $this->_blobencode($this->_serialize($value)),
- 'exptime' => $exp
- ));
- $this->_commit();
- return true; /* ? */
+ 'value' => $db->encodeBlob( $this->serialize( $value ) ),
+ 'exptime' => $encExpiry
+ ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+ return false;
+ }
+ return true;
}
- function delete($key,$time=0) {
- if ( $this->_readonly() ) {
+ public function delete( $key, $time = 0 ) {
+ $db = $this->getDB();
+ try {
+ $db->begin();
+ $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
return false;
}
- $this->_begin();
- $this->_query(
- "DELETE FROM $0 WHERE keyname='$1'", $key );
- $this->_commit();
- return true; /* ? */
+ return true;
}
- function keys() {
- $res = $this->_query( "SELECT keyname FROM $0" );
- if(!$res) {
- $this->_debug("keys: ** error: " . $this->_dberror($res) . " **");
- return array();
+ public function incr( $key, $step = 1 ) {
+ $db = $this->getDB();
+ $step = intval( $step );
+
+ try {
+ $db->begin();
+ $row = $db->selectRow( 'objectcache', array( 'value', 'exptime' ),
+ array( 'keyname' => $key ), __METHOD__, array( 'FOR UPDATE' ) );
+ if ( $row === false ) {
+ // Missing
+ $db->commit();
+ return false;
+ }
+ $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ );
+ if ( $this->isExpired( $row->exptime ) ) {
+ // Expired, do not reinsert
+ $db->commit();
+ return false;
+ }
+
+ $oldValue = intval( $this->unserialize( $db->decodeBlob( $row->value ) ) );
+ $newValue = $oldValue + $step;
+ $db->insert( 'objectcache',
+ array(
+ 'keyname' => $key,
+ 'value' => $db->encodeBlob( $this->serialize( $newValue ) ),
+ 'exptime' => $row->exptime
+ ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+ return false;
}
+ return $newValue;
+ }
+
+ public function keys() {
+ $db = $this->getDB();
+ $res = $db->select( 'objectcache', array( 'keyname' ), false, __METHOD__ );
$result = array();
- while( $row = $this->_fetchobject($res) ) {
+ foreach ( $res as $row ) {
$result[] = $row->keyname;
}
return $result;
}
- function getTableName() {
- return $this->table;
+ protected function isExpired( $exptime ) {
+ return $exptime != $this->getMaxDateTime() && wfTimestamp( TS_UNIX, $exptime ) < time();
}
- function _query($sql) {
- $reps = func_get_args();
- $reps[0] = $this->getTableName();
- // ewwww
- for($i=0;$i<count($reps);$i++) {
- $sql = str_replace(
- '$' . $i,
- $i > 0 ? $this->_strencode($reps[$i]) : $reps[$i],
- $sql);
- }
- $res = $this->_doquery($sql);
- if($res == false) {
- $this->_debug('query failed: ' . $this->_dberror($res));
+ protected function getMaxDateTime() {
+ if ( time() > 0x7fffffff ) {
+ return $this->getDB()->timestamp( 1 << 62 );
+ } else {
+ return $this->getDB()->timestamp( 0x7fffffff );
}
- return $res;
- }
-
- function _strencode($str) {
- /* Protect strings in SQL */
- return str_replace( "'", "''", $str );
- }
- function _blobencode($str) {
- return $str;
- }
- function _blobdecode($str) {
- return $str;
- }
-
- abstract function _doinsert($table, $vals);
- abstract function _doquery($sql);
-
- abstract function _readonly();
-
- function _begin() {}
- function _commit() {}
-
- function _freeresult($result) {
- /* stub */
- return false;
}
- function _dberror($result) {
- /* stub */
- return 'unknown error';
- }
-
- abstract function _maxdatetime();
- abstract function _fromunixtime($ts);
-
- function garbageCollect() {
+ protected function garbageCollect() {
/* Ignore 99% of requests */
if ( !mt_rand( 0, 100 ) ) {
- $nowtime = time();
+ $now = time();
/* Avoid repeating the delete within a few seconds */
- if ( $nowtime > ($this->lastexpireall + 1) ) {
- $this->lastexpireall = $nowtime;
- $this->expireall();
+ if ( $now > ( $this->lastExpireAll + 1 ) ) {
+ $this->lastExpireAll = $now;
+ $this->expireAll();
}
}
}
- function expireall() {
- /* Remove any items that have expired */
- if ( $this->_readonly() ) {
- return false;
+ public function expireAll() {
+ $db = $this->getDB();
+ $now = $db->timestamp();
+ try {
+ $db->begin();
+ $db->delete( 'objectcache', array( 'exptime < ' . $db->addQuotes( $now ) ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
}
- $now = $this->_fromunixtime( time() );
- $this->_begin();
- $this->_query( "DELETE FROM $0 WHERE exptime < '$now'" );
- $this->_commit();
}
- function deleteall() {
- /* Clear *all* items from cache table */
- if ( $this->_readonly() ) {
- return false;
+ public function deleteAll() {
+ $db = $this->getDB();
+ try {
+ $db->begin();
+ $db->delete( 'objectcache', '*', __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
}
- $this->_begin();
- $this->_query( "DELETE FROM $0" );
- $this->_commit();
}
/**
@@ -401,9 +413,9 @@ abstract class SqlBagOStuff extends BagOStuff {
* @param $data mixed
* @return string
*/
- function _serialize( &$data ) {
+ protected function serialize( &$data ) {
$serial = serialize( $data );
- if( function_exists( 'gzdeflate' ) ) {
+ if ( function_exists( 'gzdeflate' ) ) {
return gzdeflate( $serial );
} else {
return $serial;
@@ -415,156 +427,39 @@ abstract class SqlBagOStuff extends BagOStuff {
* @param $serial string
* @return mixed
*/
- function _unserialize( $serial ) {
- if( function_exists( 'gzinflate' ) ) {
+ protected function unserialize( $serial ) {
+ if ( function_exists( 'gzinflate' ) ) {
$decomp = @gzinflate( $serial );
- if( false !== $decomp ) {
+ if ( false !== $decomp ) {
$serial = $decomp;
}
}
$ret = unserialize( $serial );
return $ret;
}
-}
-/**
- * Stores objects in the main database of the wiki
- *
- * @ingroup Cache
- */
-class MediaWikiBagOStuff extends SqlBagOStuff {
- var $tableInitialised = false;
- var $lb, $db;
-
- function _getDB(){
- global $wgDBtype;
- if ( !isset( $this->db ) ) {
- /* We must keep a separate connection to MySQL in order to avoid deadlocks
- * However, SQLite has an opposite behaviour.
- * @todo Investigate behaviour for other databases
- */
- if ( $wgDBtype == 'sqlite' ) {
- $this->db = wfGetDB( DB_MASTER );
- } else {
- $this->lb = wfGetLBFactory()->newMainLB();
- $this->db = $this->lb->getConnection( DB_MASTER );
- $this->db->clearFlag( DBO_TRX );
- }
- }
- return $this->db;
- }
- function _begin() {
- $this->_getDB()->begin();
- }
- function _commit() {
- $this->_getDB()->commit();
- }
- function _doquery($sql) {
- return $this->_getDB()->query( $sql, __METHOD__ );
- }
- function _doinsert($t, $v) {
- return $this->_getDB()->insert($t, $v, __METHOD__, array( 'IGNORE' ) );
- }
- function _fetchobject($result) {
- return $this->_getDB()->fetchObject($result);
- }
- function _freeresult($result) {
- return $this->_getDB()->freeResult($result);
- }
- function _dberror($result) {
- return $this->_getDB()->lastError();
- }
- function _maxdatetime() {
- if ( time() > 0x7fffffff ) {
- return $this->_fromunixtime( 1<<62 );
- } else {
- return $this->_fromunixtime( 0x7fffffff );
- }
- }
- function _fromunixtime($ts) {
- return $this->_getDB()->timestamp($ts);
- }
- /***
- * Note -- this should *not* check wfReadOnly().
- * Read-only mode has been repurposed from the original
- * "nothing must write to the database" to "users should not
- * be able to edit or alter anything user-visible".
- *
- * Backend bits like the object cache should continue
- * to work in this mode, otherwise things will blow up
- * like the message cache failing to save its state,
- * causing long delays (bug 11533).
+ /**
+ * Handle a DBQueryError which occurred during a write operation.
+ * Ignore errors which are due to a read-only database, rethrow others.
*/
- function _readonly(){
- return false;
- }
- function _strencode($s) {
- return $this->_getDB()->strencode($s);
- }
- function _blobencode($s) {
- return $this->_getDB()->encodeBlob($s);
- }
- function _blobdecode($s) {
- return $this->_getDB()->decodeBlob($s);
- }
- function getTableName() {
- if ( !$this->tableInitialised ) {
- $dbw = $this->_getDB();
- /* This is actually a hack, we should be able
- to use Language classes here... or not */
- if (!$dbw)
- throw new MWException("Could not connect to database");
- $this->table = $dbw->tableName( $this->table );
- $this->tableInitialised = true;
+ protected function handleWriteError( $exception ) {
+ $db = $this->getDB();
+ if ( !$db->wasReadOnlyError() ) {
+ throw $exception;
}
- return $this->table;
+ try {
+ $db->rollback();
+ } catch ( DBQueryError $e ) {
+ }
+ wfDebug( __METHOD__ . ": ignoring query error\n" );
+ $db->ignoreErrors( false );
}
}
/**
- * This is a wrapper for Turck MMCache's shared memory functions.
- *
- * You can store objects with mmcache_put() and mmcache_get(), but Turck seems
- * to use a weird custom serializer that randomly segfaults. So we wrap calls
- * with serialize()/unserialize().
- *
- * The thing I noticed about the Turck serialized data was that unlike ordinary
- * serialize(), it contained the names of methods, and judging by the amount of
- * binary data, perhaps even the bytecode of the methods themselves. It may be
- * that Turck's serializer is faster, so a possible future extension would be
- * to use it for arrays but not for objects.
- *
- * @ingroup Cache
+ * Backwards compatibility alias
*/
-class TurckBagOStuff extends BagOStuff {
- function get($key) {
- $val = mmcache_get( $key );
- if ( is_string( $val ) ) {
- $val = unserialize( $val );
- }
- return $val;
- }
-
- function set($key, $value, $exptime=0) {
- mmcache_put( $key, serialize( $value ), $exptime );
- return true;
- }
-
- function delete($key, $time=0) {
- mmcache_rm( $key );
- return true;
- }
-
- function lock($key, $waitTimeout = 0 ) {
- mmcache_lock( $key );
- return true;
- }
-
- function unlock($key) {
- mmcache_unlock( $key );
- return true;
- }
-}
+class MediaWikiBagOStuff extends SqlBagOStuff { }
/**
* This is a wrapper for APC's shared memory functions
@@ -572,36 +467,45 @@ class TurckBagOStuff extends BagOStuff {
* @ingroup Cache
*/
class APCBagOStuff extends BagOStuff {
- function get($key) {
- $val = apc_fetch($key);
+ public function get( $key ) {
+ $val = apc_fetch( $key );
if ( is_string( $val ) ) {
$val = unserialize( $val );
}
return $val;
}
- function set($key, $value, $exptime=0) {
- apc_store($key, serialize($value), $exptime);
+ public function set( $key, $value, $exptime = 0 ) {
+ apc_store( $key, serialize( $value ), $exptime );
return true;
}
- function delete($key, $time=0) {
- apc_delete($key);
+ public function delete( $key, $time = 0 ) {
+ apc_delete( $key );
return true;
}
-}
+ public function keys() {
+ $info = apc_cache_info( 'user' );
+ $list = $info['cache_list'];
+ $keys = array();
+ foreach ( $list as $entry ) {
+ $keys[] = $entry['info'];
+ }
+ return $keys;
+ }
+}
/**
* This is a wrapper for eAccelerator's shared memory functions.
*
- * This is basically identical to the Turck MMCache version,
+ * This is basically identical to the deceased Turck MMCache version,
* mostly because eAccelerator is based on Turck MMCache.
*
* @ingroup Cache
*/
class eAccelBagOStuff extends BagOStuff {
- function get($key) {
+ public function get( $key ) {
$val = eaccelerator_get( $key );
if ( is_string( $val ) ) {
$val = unserialize( $val );
@@ -609,22 +513,22 @@ class eAccelBagOStuff extends BagOStuff {
return $val;
}
- function set($key, $value, $exptime=0) {
+ public function set( $key, $value, $exptime = 0 ) {
eaccelerator_put( $key, serialize( $value ), $exptime );
return true;
}
- function delete($key, $time=0) {
+ public function delete( $key, $time = 0 ) {
eaccelerator_rm( $key );
return true;
}
- function lock($key, $waitTimeout = 0 ) {
+ public function lock( $key, $waitTimeout = 0 ) {
eaccelerator_lock( $key );
return true;
}
- function unlock($key) {
+ public function unlock( $key ) {
eaccelerator_unlock( $key );
return true;
}
@@ -646,7 +550,7 @@ class XCacheBagOStuff extends BagOStuff {
*/
public function get( $key ) {
$val = xcache_get( $key );
- if( is_string( $val ) )
+ if ( is_string( $val ) )
$val = unserialize( $val );
return $val;
}
@@ -675,25 +579,29 @@ class XCacheBagOStuff extends BagOStuff {
xcache_unset( $key );
return true;
}
-
}
/**
- * @todo document
+ * Cache that uses DBA as a backend.
+ * Slow due to the need to constantly open and close the file to avoid holding
+ * writer locks. Intended for development use only, as a memcached workalike
+ * for systems that don't have it.
+ *
* @ingroup Cache
*/
class DBABagOStuff extends BagOStuff {
var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
- function __construct( $handler = 'db3', $dir = false ) {
+ public function __construct( $dir = false ) {
+ global $wgDBAhandler;
if ( $dir === false ) {
global $wgTmpDirectory;
$dir = $wgTmpDirectory;
}
$this->mFile = "$dir/mw-cache-" . wfWikiID();
$this->mFile .= '.db';
- wfDebug( __CLASS__.": using cache file {$this->mFile}\n" );
- $this->mHandler = $handler;
+ wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
+ $this->mHandler = $wgDBAhandler;
}
/**
@@ -701,7 +609,7 @@ class DBABagOStuff extends BagOStuff {
*/
function encode( $value, $expiry ) {
# Convert to absolute time
- $expiry = BagOStuff::convertExpiry( $expiry );
+ $expiry = $this->convertExpiry( $expiry );
return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
}
@@ -715,7 +623,7 @@ class DBABagOStuff extends BagOStuff {
return array(
unserialize( substr( $blob, 11 ) ),
intval( substr( $blob, 0, 10 ) )
- );
+ );
}
}
@@ -741,7 +649,7 @@ class DBABagOStuff extends BagOStuff {
function get( $key ) {
wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__."($key)\n" );
+ wfDebug( __METHOD__ . "($key)\n" );
$handle = $this->getReader();
if ( !$handle ) {
return null;
@@ -756,16 +664,16 @@ class DBABagOStuff extends BagOStuff {
$handle = $this->getWriter();
dba_delete( $key, $handle );
dba_close( $handle );
- wfDebug( __METHOD__.": $key expired\n" );
+ wfDebug( __METHOD__ . ": $key expired\n" );
$val = null;
}
wfProfileOut( __METHOD__ );
return $val;
}
- function set( $key, $value, $exptime=0 ) {
+ function set( $key, $value, $exptime = 0 ) {
wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__."($key)\n" );
+ wfDebug( __METHOD__ . "($key)\n" );
$blob = $this->encode( $value, $exptime );
$handle = $this->getWriter();
if ( !$handle ) {
@@ -779,7 +687,7 @@ class DBABagOStuff extends BagOStuff {
function delete( $key, $time = 0 ) {
wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__."($key)\n" );
+ wfDebug( __METHOD__ . "($key)\n" );
$handle = $this->getWriter();
if ( !$handle ) {
return false;
@@ -817,11 +725,11 @@ class DBABagOStuff extends BagOStuff {
function keys() {
$reader = $this->getReader();
$k1 = dba_firstkey( $reader );
- if( !$k1 ) {
+ if ( !$k1 ) {
return array();
}
$result[] = $k1;
- while( $key = dba_nextkey( $reader ) ) {
+ while ( $key = dba_nextkey( $reader ) ) {
$result[] = $key;
}
return $result;
diff --git a/includes/Block.php b/includes/Block.php
index a44941f1..187ff2db 100644
--- a/includes/Block.php
+++ b/includes/Block.php
@@ -34,7 +34,7 @@ class Block {
$this->mUser = $user;
$this->mBy = $by;
$this->mReason = $reason;
- $this->mTimestamp = wfTimestamp(TS_MW,$timestamp);
+ $this->mTimestamp = wfTimestamp( TS_MW, $timestamp );
$this->mAuto = $auto;
$this->mAnonOnly = $anonOnly;
$this->mCreateAccount = $createAccount;
@@ -54,7 +54,7 @@ class Block {
* Load a block from the database, using either the IP address or
* user ID. Tries the user ID first, and if that doesn't work, tries
* the address.
- *
+ *
* @param $address String: IP address of user/anon
* @param $user Integer: user id of user
* @param $killExpired Boolean: delete expired blocks on load
@@ -87,14 +87,14 @@ class Block {
return null;
}
}
-
+
/**
* Check if two blocks are effectively equal
*
* @return Boolean
*/
public function equals( Block $block ) {
- return (
+ return (
$this->mAddress == $block->mAddress
&& $this->mUser == $block->mUser
&& $this->mAuto == $block->mAuto
@@ -130,9 +130,10 @@ class Block {
*/
protected function &getDBOptions( &$options ) {
global $wgAntiLockFlags;
+
if ( $this->mForUpdate || $this->mFromMaster ) {
$db = wfGetDB( DB_MASTER );
- if ( !$this->mForUpdate || ($wgAntiLockFlags & ALF_NO_BLOCK_LOCK) ) {
+ if ( !$this->mForUpdate || ( $wgAntiLockFlags & ALF_NO_BLOCK_LOCK ) ) {
$options = array();
} else {
$options = array( 'FOR UPDATE' );
@@ -180,12 +181,13 @@ class Block {
if ( $address ) {
$conds = array( 'ipb_address' => $address, 'ipb_auto' => 0 );
$res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) );
+
if ( $this->loadFromResult( $res, $killExpired ) ) {
if ( $user && $this->mAnonOnly ) {
# Block is marked anon-only
# Whitelist this IP address against autoblocks and range blocks
# (but not account creation blocks -- bug 13611)
- if( !$this->mCreateAccount ) {
+ if ( !$this->mCreateAccount ) {
$this->clear();
}
return false;
@@ -199,7 +201,7 @@ class Block {
if ( $this->loadRange( $address, $killExpired, $user ) ) {
if ( $user && $this->mAnonOnly ) {
# Respect account creation blocks on logged-in users -- bug 13611
- if( !$this->mCreateAccount ) {
+ if ( !$this->mCreateAccount ) {
$this->clear();
}
return false;
@@ -211,10 +213,13 @@ class Block {
# Try autoblock
if ( $address ) {
$conds = array( 'ipb_address' => $address, 'ipb_auto' => 1 );
+
if ( $user ) {
$conds['ipb_anon_only'] = 0;
}
+
$res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) );
+
if ( $this->loadFromResult( $res, $killExpired ) ) {
return true;
}
@@ -234,6 +239,7 @@ class Block {
*/
protected function loadFromResult( ResultWrapper $res, $killExpired = true ) {
$ret = false;
+
if ( 0 != $res->numRows() ) {
# Get first block
$row = $res->fetchObject();
@@ -274,6 +280,7 @@ class Block {
*/
public function loadRange( $address, $killExpired = true, $user = 0 ) {
$iaddr = IP::toHex( $address );
+
if ( $iaddr === false ) {
# Invalid address
return false;
@@ -286,7 +293,7 @@ class Block {
$options = array();
$db =& $this->getDBOptions( $options );
$conds = array(
- "ipb_range_start LIKE '$range%'",
+ 'ipb_range_start' . $db->buildLike( $range, $db->anyString() ),
"ipb_range_start <= '$iaddr'",
"ipb_range_end >= '$iaddr'"
);
@@ -309,7 +316,7 @@ class Block {
public function initFromRow( $row ) {
$this->mAddress = $row->ipb_address;
$this->mReason = $row->ipb_reason;
- $this->mTimestamp = wfTimestamp(TS_MW,$row->ipb_timestamp);
+ $this->mTimestamp = wfTimestamp( TS_MW, $row->ipb_timestamp );
$this->mUser = $row->ipb_user;
$this->mBy = $row->ipb_by;
$this->mAuto = $row->ipb_auto;
@@ -321,17 +328,19 @@ class Block {
$this->mHideName = $row->ipb_deleted;
$this->mId = $row->ipb_id;
$this->mExpiry = self::decodeExpiry( $row->ipb_expiry );
+
if ( isset( $row->user_name ) ) {
$this->mByName = $row->user_name;
} else {
$this->mByName = $row->ipb_by_text;
}
+
$this->mRangeStart = $row->ipb_range_start;
$this->mRangeEnd = $row->ipb_range_end;
}
/**
- * Once $mAddress has been set, get the range they came from.
+ * Once $mAddress has been set, get the range they came from.
* Wrapper for IP::parseRange
*/
protected function initialiseRange() {
@@ -352,6 +361,7 @@ class Block {
if ( wfReadOnly() ) {
return false;
}
+
if ( !$this->mId ) {
throw new MWException( "Block::delete() now requires that the mId member be filled\n" );
}
@@ -377,8 +387,9 @@ class Block {
# Don't collide with expired blocks
Block::purgeExpired();
- $ipb_id = $dbw->nextSequenceValue('ipblocks_ipb_id_val');
- $dbw->insert( 'ipblocks',
+ $ipb_id = $dbw->nextSequenceValue( 'ipblocks_ipb_id_seq' );
+ $dbw->insert(
+ 'ipblocks',
array(
'ipb_id' => $ipb_id,
'ipb_address' => $this->mAddress,
@@ -386,7 +397,7 @@ class Block {
'ipb_by' => $this->mBy,
'ipb_by_text' => $this->mByName,
'ipb_reason' => $this->mReason,
- 'ipb_timestamp' => $dbw->timestamp($this->mTimestamp),
+ 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
'ipb_auto' => $this->mAuto,
'ipb_anon_only' => $this->mAnonOnly,
'ipb_create_account' => $this->mCreateAccount,
@@ -394,14 +405,16 @@ class Block {
'ipb_expiry' => self::encodeExpiry( $this->mExpiry, $dbw ),
'ipb_range_start' => $this->mRangeStart,
'ipb_range_end' => $this->mRangeEnd,
- 'ipb_deleted' => $this->mHideName,
+ 'ipb_deleted' => intval( $this->mHideName ), // typecast required for SQLite
'ipb_block_email' => $this->mBlockEmail,
'ipb_allow_usertalk' => $this->mAllowUsertalk
- ), 'Block::insert', array( 'IGNORE' )
+ ),
+ 'Block::insert',
+ array( 'IGNORE' )
);
$affected = $dbw->affectedRows();
- if ($affected)
+ if ( $affected )
$this->doRetroactiveAutoblock();
return (bool)$affected;
@@ -417,13 +430,14 @@ class Block {
$this->validateBlockParams();
- $dbw->update( 'ipblocks',
+ $dbw->update(
+ 'ipblocks',
array(
'ipb_user' => $this->mUser,
'ipb_by' => $this->mBy,
'ipb_by_text' => $this->mByName,
'ipb_reason' => $this->mReason,
- 'ipb_timestamp' => $dbw->timestamp($this->mTimestamp),
+ 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
'ipb_auto' => $this->mAuto,
'ipb_anon_only' => $this->mAnonOnly,
'ipb_create_account' => $this->mCreateAccount,
@@ -433,13 +447,15 @@ class Block {
'ipb_range_end' => $this->mRangeEnd,
'ipb_deleted' => $this->mHideName,
'ipb_block_email' => $this->mBlockEmail,
- 'ipb_allow_usertalk' => $this->mAllowUsertalk ),
+ 'ipb_allow_usertalk' => $this->mAllowUsertalk
+ ),
array( 'ipb_id' => $this->mId ),
- 'Block::update' );
+ 'Block::update'
+ );
return $dbw->affectedRows();
}
-
+
/**
* Make sure all the proper members are set to sane values
* before adding/updating a block
@@ -453,11 +469,14 @@ class Block {
# Unset ipb_enable_autoblock for IP blocks, makes no sense
if ( !$this->mUser ) {
$this->mEnableAutoblock = 0;
- $this->mBlockEmail = 0; //Same goes for email...
}
- if( !$this->mByName ) {
- if( $this->mBy ) {
+ # bug 18860: non-anon-only IP blocks should be allowed to block email
+ if ( !$this->mUser && $this->mAnonOnly ) {
+ $this->mBlockEmail = 0;
+ }
+ if ( !$this->mByName ) {
+ if ( $this->mBy ) {
$this->mByName = User::whoIs( $this->mBy );
} else {
global $wgUser;
@@ -465,28 +484,27 @@ class Block {
}
}
}
-
-
+
/**
- * Retroactively autoblocks the last IP used by the user (if it is a user)
- * blocked by this Block.
- *
- * @return Boolean: whether or not a retroactive autoblock was made.
- */
+ * Retroactively autoblocks the last IP used by the user (if it is a user)
+ * blocked by this Block.
+ *
+ * @return Boolean: whether or not a retroactive autoblock was made.
+ */
public function doRetroactiveAutoblock() {
$dbr = wfGetDB( DB_SLAVE );
- #If autoblock is enabled, autoblock the LAST IP used
+ # If autoblock is enabled, autoblock the LAST IP used
# - stolen shamelessly from CheckUser_body.php
- if ($this->mEnableAutoblock && $this->mUser) {
- wfDebug("Doing retroactive autoblocks for " . $this->mAddress . "\n");
-
+ if ( $this->mEnableAutoblock && $this->mUser ) {
+ wfDebug( "Doing retroactive autoblocks for " . $this->mAddress . "\n" );
+
$options = array( 'ORDER BY' => 'rc_timestamp DESC' );
$conds = array( 'rc_user_text' => $this->mAddress );
-
- if ($this->mAngryAutoblock) {
+
+ if ( $this->mAngryAutoblock ) {
// Block any IP used in the last 7 days. Up to five IPs.
- $conds[] = 'rc_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( time() - (7*86400) ) );
+ $conds[] = 'rc_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( time() - ( 7 * 86400 ) ) );
$options['LIMIT'] = 5;
} else {
// Just the last IP used.
@@ -494,11 +512,11 @@ class Block {
}
$res = $dbr->select( 'recentchanges', array( 'rc_ip' ), $conds,
- __METHOD__ , $options);
+ __METHOD__ , $options );
if ( !$dbr->numRows( $res ) ) {
- #No results, don't autoblock anything
- wfDebug("No IP found to retroactively autoblock\n");
+ # No results, don't autoblock anything
+ wfDebug( "No IP found to retroactively autoblock\n" );
} else {
while ( $row = $dbr->fetchObject( $res ) ) {
if ( $row->rc_ip )
@@ -507,7 +525,7 @@ class Block {
}
}
}
-
+
/**
* Checks whether a given IP is on the autoblock whitelist.
*
@@ -516,7 +534,7 @@ class Block {
*/
public static function isWhitelistedFromAutoblocks( $ip ) {
global $wgMemc;
-
+
// Try to get the autoblock_whitelist from the cache, as it's faster
// than getting the msg raw and explode()'ing it.
$key = wfMemcKey( 'ipb', 'autoblock', 'whitelist' );
@@ -526,28 +544,28 @@ class Block {
$wgMemc->set( $key, $lines, 3600 * 24 );
}
- wfDebug("Checking the autoblock whitelist..\n");
+ wfDebug( "Checking the autoblock whitelist..\n" );
- foreach( $lines as $line ) {
+ foreach ( $lines as $line ) {
# List items only
if ( substr( $line, 0, 1 ) !== '*' ) {
continue;
}
- $wlEntry = substr($line, 1);
- $wlEntry = trim($wlEntry);
+ $wlEntry = substr( $line, 1 );
+ $wlEntry = trim( $wlEntry );
- wfDebug("Checking $ip against $wlEntry...");
+ wfDebug( "Checking $ip against $wlEntry..." );
# Is the IP in this range?
- if (IP::isInRange( $ip, $wlEntry )) {
- wfDebug(" IP $ip matches $wlEntry, not autoblocking\n");
+ if ( IP::isInRange( $ip, $wlEntry ) ) {
+ wfDebug( " IP $ip matches $wlEntry, not autoblocking\n" );
return true;
} else {
wfDebug( " No match\n" );
}
}
-
+
return false;
}
@@ -565,12 +583,12 @@ class Block {
}
# Check for presence on the autoblock whitelist
- if (Block::isWhitelistedFromAutoblocks($autoblockIP)) {
+ if ( Block::isWhitelistedFromAutoblocks( $autoblockIP ) ) {
return;
}
-
- ## Allow hooks to cancel the autoblock.
- if (!wfRunHooks( 'AbortAutoblock', array( $autoblockIP, &$this ) )) {
+
+ # # Allow hooks to cancel the autoblock.
+ if ( !wfRunHooks( 'AbortAutoblock', array( $autoblockIP, &$this ) ) ) {
wfDebug( "Autoblock aborted by hook.\n" );
return false;
}
@@ -582,8 +600,8 @@ class Block {
# If the user is already blocked. Then check if the autoblock would
# exceed the user block. If it would exceed, then do nothing, else
# prolong block time
- if ($this->mExpiry &&
- ($this->mExpiry < Block::getAutoblockExpiry($ipblock->mTimestamp))) {
+ if ( $this->mExpiry &&
+ ( $this->mExpiry < Block::getAutoblockExpiry( $ipblock->mTimestamp ) ) ) {
return;
}
# Just update the timestamp
@@ -610,8 +628,8 @@ class Block {
$ipblock->mAllowUsertalk = $this->mAllowUsertalk;
# If the user is already blocked with an expiry date, we don't
# want to pile on top of that!
- if($this->mExpiry) {
- $ipblock->mExpiry = min ( $this->mExpiry, Block::getAutoblockExpiry( $this->mTimestamp ));
+ if ( $this->mExpiry ) {
+ $ipblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $this->mTimestamp ) );
} else {
$ipblock->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp );
}
@@ -624,8 +642,7 @@ class Block {
* @return Boolean
*/
public function deleteIfExpired() {
- $fname = 'Block::deleteIfExpired';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
if ( $this->isExpired() ) {
wfDebug( "Block::deleteIfExpired() -- deleting\n" );
$this->delete();
@@ -634,7 +651,7 @@ class Block {
wfDebug( "Block::deleteIfExpired() -- not expired\n" );
$retVal = false;
}
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return $retVal;
}
@@ -660,7 +677,7 @@ class Block {
}
/**
- * Update the timestamp on autoblocks.
+ * Update the timestamp on autoblocks.
*/
public function updateTimestamp() {
if ( $this->mAuto ) {
@@ -670,8 +687,8 @@ class Block {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'ipblocks',
array( /* SET */
- 'ipb_timestamp' => $dbw->timestamp($this->mTimestamp),
- 'ipb_expiry' => $dbw->timestamp($this->mExpiry),
+ 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
+ 'ipb_expiry' => $dbw->timestamp( $this->mExpiry ),
), array( /* WHERE */
'ipb_address' => $this->mAddress
), 'Block::updateTimestamp'
@@ -700,14 +717,14 @@ class Block {
/**
* Get/set the SELECT ... FOR UPDATE flag
*/
- public function forUpdate( $x = NULL ) {
+ public function forUpdate( $x = null ) {
return wfSetVar( $this->mForUpdate, $x );
}
/**
* Get/set a flag determining whether the master is used for reads
*/
- public function fromMaster( $x = NULL ) {
+ public function fromMaster( $x = null ) {
return wfSetVar( $this->mFromMaster, $x );
}
@@ -726,7 +743,7 @@ class Block {
/**
* Encode expiry for DB
*
- * @param $expiry String: timestamp for expiry, or
+ * @param $expiry String: timestamp for expiry, or
* @param $db Database object
* @return String
*/
@@ -773,10 +790,10 @@ class Block {
$parts = explode( '/', $range );
if ( count( $parts ) == 2 ) {
// IPv6
- if ( IP::isIPv6($range) && $parts[1] >= 64 && $parts[1] <= 128 ) {
+ if ( IP::isIPv6( $range ) && $parts[1] >= 64 && $parts[1] <= 128 ) {
$bits = $parts[1];
$ipint = IP::toUnsigned6( $parts[0] );
- # Native 32 bit functions WONT work here!!!
+ # Native 32 bit functions WON'T work here!!!
# Convert to a padded binary number
$network = wfBaseConvert( $ipint, 10, 2, 128 );
# Truncate the last (128-$bits) bits and replace them with zeros
@@ -787,7 +804,7 @@ class Block {
$newip = IP::toOctet( $network );
$range = "$newip/{$parts[1]}";
} // IPv4
- else if ( IP::isIPv4($range) && $parts[1] >= 16 && $parts[1] <= 32 ) {
+ elseif ( IP::isIPv4( $range ) && $parts[1] >= 16 && $parts[1] <= 32 ) {
$shift = 32 - $parts[1];
$ipint = IP::toUnsigned( $parts[0] );
$ipint = $ipint >> $shift << $shift;
@@ -808,7 +825,7 @@ class Block {
/**
* Get a value to insert into expiry field of the database when infinite expiry
- * is desired. In principle this could be DBMS-dependant, but currently all
+ * is desired. In principle this could be DBMS-dependant, but currently all
* supported DBMS's support the string "infinity", so we just use that.
*
* @return String
@@ -818,35 +835,36 @@ class Block {
# works with CHAR(14) as well because "i" sorts after all numbers.
return 'infinity';
}
-
+
/**
* Convert a DB-encoded expiry into a real string that humans can read.
*
* @param $encoded_expiry String: Database encoded expiry time
- * @return String
+ * @return Html-escaped String
*/
public static function formatExpiry( $encoded_expiry ) {
static $msg = null;
-
- if( is_null( $msg ) ) {
+
+ if ( is_null( $msg ) ) {
$msg = array();
$keys = array( 'infiniteblock', 'expiringblock' );
- foreach( $keys as $key ) {
+ foreach ( $keys as $key ) {
$msg[$key] = wfMsgHtml( $key );
}
}
-
+
$expiry = Block::decodeExpiry( $encoded_expiry );
- if ($expiry == 'infinity') {
+ if ( $expiry == 'infinity' ) {
$expirystr = $msg['infiniteblock'];
} else {
global $wgLang;
- $expiretimestr = $wgLang->timeanddate( $expiry, true );
- $expirystr = wfMsgReplaceArgs( $msg['expiringblock'], array($expiretimestr) );
+ $expiredatestr = htmlspecialchars( $wgLang->date( $expiry, true ) );
+ $expiretimestr = htmlspecialchars( $wgLang->time( $expiry, true ) );
+ $expirystr = wfMsgReplaceArgs( $msg['expiringblock'], array( $expiredatestr, $expiretimestr ) );
}
return $expirystr;
}
-
+
/**
* Convert a typed-in expiry time into something we can put into the database.
* @param $expiry_input String: whatever was typed into the form
@@ -857,7 +875,8 @@ class Block {
$expiry = 'infinity';
} else {
$expiry = strtotime( $expiry_input );
- if ($expiry < 0 || $expiry === false) {
+
+ if ( $expiry < 0 || $expiry === false ) {
return false;
}
}
diff --git a/includes/CacheDependency.php b/includes/CacheDependency.php
index b050c46d..11e70738 100644
--- a/includes/CacheDependency.php
+++ b/includes/CacheDependency.php
@@ -1,5 +1,4 @@
<?php
-
/**
* This class stores an arbitrary value along with its dependencies.
* Users should typically only use DependencyWrapper::getFromCache(), rather
@@ -12,8 +11,8 @@ class DependencyWrapper {
/**
* Create an instance.
- * @param mixed $value The user-supplied value
- * @param mixed $deps A dependency or dependency array. All dependencies
+ * @param $value Mixed: the user-supplied value
+ * @param $deps Mixed: a dependency or dependency array. All dependencies
* must be objects implementing CacheDependency.
*/
function __construct( $value = false, $deps = array() ) {
@@ -66,12 +65,12 @@ class DependencyWrapper {
* it will be generated with the callback function (if present), and the newly
* calculated value will be stored to the cache in a wrapper.
*
- * @param object $cache A cache object such as $wgMemc
- * @param string $key The cache key
- * @param integer $expiry The expiry timestamp or interval in seconds
- * @param mixed $callback The callback for generating the value, or false
- * @param array $callbackParams The function parameters for the callback
- * @param array $deps The dependencies to store on a cache miss. Note: these
+ * @param $cache Object: a cache object such as $wgMemc
+ * @param $key String: the cache key
+ * @param $expiry Integer: the expiry timestamp or interval in seconds
+ * @param $callback Mixed: the callback for generating the value, or false
+ * @param $callbackParams Array: the function parameters for the callback
+ * @param $deps Array: the dependencies to store on a cache miss. Note: these
* are not the dependencies used on a cache hit! Cache hits use the stored
* dependency array.
*
@@ -108,7 +107,7 @@ abstract class CacheDependency {
/**
* Hook to perform any expensive pre-serialize loading of dependency values.
*/
- function loadDependencyValues() {}
+ function loadDependencyValues() { }
}
/**
@@ -120,8 +119,8 @@ class FileDependency extends CacheDependency {
/**
* Create a file dependency
*
- * @param string $filename The name of the file, preferably fully qualified
- * @param mixed $timestamp The unix last modified timestamp, or false if the
+ * @param $filename String: the name of the file, preferably fully qualified
+ * @param $timestamp Mixed: the unix last modified timestamp, or false if the
* file does not exist. If omitted, the timestamp will be loaded from
* the file.
*
@@ -134,6 +133,11 @@ class FileDependency extends CacheDependency {
$this->timestamp = $timestamp;
}
+ function __sleep() {
+ $this->loadDependencyValues();
+ return array( 'filename', 'timestamp' );
+ }
+
function loadDependencyValues() {
if ( is_null( $this->timestamp ) ) {
if ( !file_exists( $this->filename ) ) {
@@ -180,7 +184,7 @@ class TitleDependency extends CacheDependency {
/**
* Construct a title dependency
- * @param Title $title
+ * @param $title Title
*/
function __construct( Title $title ) {
$this->titleObj = $title;
@@ -208,6 +212,7 @@ class TitleDependency extends CacheDependency {
function isExpired() {
$touched = $this->getTitle()->getTouched();
+
if ( $this->touched === false ) {
if ( $touched === false ) {
# Still missing
@@ -246,6 +251,7 @@ class TitleListDependency extends CacheDependency {
function calculateTimestamps() {
# Initialise values to false
$timestamps = array();
+
foreach ( $this->getLinkBatch()->data as $ns => $dbks ) {
if ( count( $dbks ) > 0 ) {
$timestamps[$ns] = array();
@@ -259,9 +265,13 @@ class TitleListDependency extends CacheDependency {
if ( count( $timestamps ) ) {
$dbr = wfGetDB( DB_SLAVE );
$where = $this->getLinkBatch()->constructSet( 'page', $dbr );
- $res = $dbr->select( 'page',
+ $res = $dbr->select(
+ 'page',
array( 'page_namespace', 'page_title', 'page_touched' ),
- $where, __METHOD__ );
+ $where,
+ __METHOD__
+ );
+
while ( $row = $dbr->fetchObject( $res ) ) {
$timestamps[$row->page_namespace][$row->page_title] = $row->page_touched;
}
@@ -278,7 +288,7 @@ class TitleListDependency extends CacheDependency {
}
function getLinkBatch() {
- if ( !isset( $this->linkBatch ) ){
+ if ( !isset( $this->linkBatch ) ) {
$this->linkBatch = new LinkBatch;
$this->linkBatch->setArray( $this->timestamps );
}
@@ -290,6 +300,7 @@ class TitleListDependency extends CacheDependency {
foreach ( $this->timestamps as $ns => $dbks ) {
foreach ( $dbks as $dbk => $oldTimestamp ) {
$newTimestamp = $newTimestamps[$ns][$dbk];
+
if ( $oldTimestamp === false ) {
if ( $newTimestamp === false ) {
# Still missing
diff --git a/includes/Category.php b/includes/Category.php
index 50efdbc1..e9ffaecf 100644
--- a/includes/Category.php
+++ b/includes/Category.php
@@ -1,6 +1,6 @@
<?php
/**
- * Category objects are immutable, strictly speaking. If you call methods that change the database,
+ * Category objects are immutable, strictly speaking. If you call methods that change the database,
* like to refresh link counts, the objects will be appropriately reinitialized.
* Member variables are lazy-initialized.
*
@@ -18,21 +18,21 @@ class Category {
/** Counts of membership (cat_pages, cat_subcats, cat_files) */
private $mPages = null, $mSubcats = null, $mFiles = null;
- private function __construct() {}
+ private function __construct() { }
/**
* Set up all member variables using a database query.
* @return bool True on success, false on failure.
*/
protected function initialize() {
- if ( $this->mName === null && $this->mTitle )
- $this->mName = $title->getDBKey();
+ if ( $this->mName === null && $this->mTitle )
+ $this->mName = $title->getDBkey();
- if( $this->mName === null && $this->mID === null ) {
- throw new MWException( __METHOD__.' has both names and IDs null' );
- } elseif( $this->mID === null ) {
+ if ( $this->mName === null && $this->mID === null ) {
+ throw new MWException( __METHOD__ . ' has both names and IDs null' );
+ } elseif ( $this->mID === null ) {
$where = array( 'cat_title' => $this->mName );
- } elseif( $this->mName === null ) {
+ } elseif ( $this->mName === null ) {
$where = array( 'cat_id' => $this->mID );
} else {
# Already initialized
@@ -45,12 +45,13 @@ class Category {
$where,
__METHOD__
);
- if( !$row ) {
+
+ if ( !$row ) {
# Okay, there were no contents. Nothing to initialize.
if ( $this->mTitle ) {
# If there is a title object but no record in the category table, treat this as an empty category
$this->mID = false;
- $this->mName = $this->mTitle->getDBKey();
+ $this->mName = $this->mTitle->getDBkey();
$this->mPages = 0;
$this->mSubcats = 0;
$this->mFiles = 0;
@@ -60,6 +61,7 @@ class Category {
return false; # Fail
}
}
+
$this->mID = $row->cat_id;
$this->mName = $row->cat_title;
$this->mPages = $row->cat_pages;
@@ -69,7 +71,7 @@ class Category {
# (bug 13683) If the count is negative, then 1) it's obviously wrong
# and should not be kept, and 2) we *probably* don't have to scan many
# rows to obtain the correct figure, so let's risk a one-time recount.
- if( $this->mPages < 0 || $this->mSubcats < 0 || $this->mFiles < 0 ) {
+ if ( $this->mPages < 0 || $this->mSubcats < 0 || $this->mFiles < 0 ) {
$this->refreshCounts();
}
@@ -86,12 +88,13 @@ class Category {
public static function newFromName( $name ) {
$cat = new self();
$title = Title::makeTitleSafe( NS_CATEGORY, $name );
- if( !is_object( $title ) ) {
+
+ if ( !is_object( $title ) ) {
return false;
}
$cat->mTitle = $title;
- $cat->mName = $title->getDBKey();
+ $cat->mName = $title->getDBkey();
return $cat;
}
@@ -106,7 +109,7 @@ class Category {
$cat = new self();
$cat->mTitle = $title;
- $cat->mName = $title->getDBKey();
+ $cat->mName = $title->getDBkey();
return $cat;
}
@@ -126,7 +129,7 @@ class Category {
/**
* Factory function, for constructing a Category object from a result set
*
- * @param $row result set row, must contain the cat_xxx fields. If the fields are null,
+ * @param $row result set row, must contain the cat_xxx fields. If the fields are null,
* the resulting Category object will represent an empty category if a title object
* was given. If the fields are null and no title was given, this method fails and returns false.
* @param $title optional title object for the category represented by the given row.
@@ -137,8 +140,7 @@ class Category {
$cat = new self();
$cat->mTitle = $title;
-
- # NOTE: the row often results from a LEFT JOIN on categorylinks. This may result in
+ # NOTE: the row often results from a LEFT JOIN on categorylinks. This may result in
# all the cat_xxx fields being null, if the category page exists, but nothing
# was ever added to the category. This case should be treated linke an empty
# category, if possible.
@@ -149,7 +151,7 @@ class Category {
# but we can't know that here...
return false;
} else {
- $cat->mName = $title->getDBKey(); # if we have a title object, fetch the category name from there
+ $cat->mName = $title->getDBkey(); # if we have a title object, fetch the category name from there
}
$cat->mID = false;
@@ -169,12 +171,16 @@ class Category {
/** @return mixed DB key name, or false on failure */
public function getName() { return $this->getX( 'mName' ); }
+
/** @return mixed Category ID, or false on failure */
public function getID() { return $this->getX( 'mID' ); }
+
/** @return mixed Total number of member pages, or false on failure */
public function getPageCount() { return $this->getX( 'mPages' ); }
+
/** @return mixed Number of subcategories, or false on failure */
public function getSubcatCount() { return $this->getX( 'mSubcats' ); }
+
/** @return mixed Number of member files, or false on failure */
public function getFileCount() { return $this->getX( 'mFiles' ); }
@@ -182,9 +188,9 @@ class Category {
* @return mixed The Title for this category, or false on failure.
*/
public function getTitle() {
- if( $this->mTitle ) return $this->mTitle;
-
- if( !$this->initialize() ) {
+ if ( $this->mTitle ) return $this->mTitle;
+
+ if ( !$this->initialize() ) {
return false;
}
@@ -204,13 +210,19 @@ class Category {
$conds = array( 'cl_to' => $this->getName(), 'cl_from = page_id' );
$options = array( 'ORDER BY' => 'cl_sortkey' );
- if( $limit ) $options[ 'LIMIT' ] = $limit;
- if( $offset !== '' ) $conds[] = 'cl_sortkey > ' . $dbr->addQuotes( $offset );
+
+ if ( $limit ) {
+ $options[ 'LIMIT' ] = $limit;
+ }
+
+ if ( $offset !== '' ) {
+ $conds[] = 'cl_sortkey > ' . $dbr->addQuotes( $offset );
+ }
return TitleArray::newFromResult(
$dbr->select(
array( 'page', 'categorylinks' ),
- array( 'page_id', 'page_namespace','page_title', 'page_len',
+ array( 'page_id', 'page_namespace', 'page_title', 'page_len',
'page_is_redirect', 'page_latest' ),
$conds,
__METHOD__,
@@ -221,10 +233,10 @@ class Category {
/** Generic accessor */
private function getX( $key ) {
- if( !$this->initialize() ) {
+ if ( !$this->initialize() ) {
return false;
}
- return $this->{$key};
+ return $this-> { $key } ;
}
/**
@@ -233,29 +245,33 @@ class Category {
* @return bool True on success, false on failure
*/
public function refreshCounts() {
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
return false;
}
$dbw = wfGetDB( DB_MASTER );
$dbw->begin();
# Note, we must use names for this, since categorylinks does.
- if( $this->mName === null ) {
- if( !$this->initialize() ) {
+ if ( $this->mName === null ) {
+ if ( !$this->initialize() ) {
return false;
}
} else {
# Let's be sure that the row exists in the table. We don't need to
# do this if we got the row from the table in initialization!
+ $seqVal = $dbw->nextSequenceValue( 'category_cat_id_seq' );
$dbw->insert(
'category',
- array( 'cat_title' => $this->mName ),
+ array(
+ 'cat_id' => $seqVal,
+ 'cat_title' => $this->mName
+ ),
__METHOD__,
'IGNORE'
);
}
- $cond1 = $dbw->conditional( 'page_namespace='.NS_CATEGORY, 1, 'NULL' );
- $cond2 = $dbw->conditional( 'page_namespace='.NS_FILE, 1, 'NULL' );
+ $cond1 = $dbw->conditional( 'page_namespace=' . NS_CATEGORY, 1, 'NULL' );
+ $cond2 = $dbw->conditional( 'page_namespace=' . NS_FILE, 1, 'NULL' );
$result = $dbw->selectRow(
array( 'categorylinks', 'page' ),
array( 'COUNT(*) AS pages',
diff --git a/includes/CategoryPage.php b/includes/CategoryPage.php
index 03ecb5dc..56f85faa 100644
--- a/includes/CategoryPage.php
+++ b/includes/CategoryPage.php
@@ -5,7 +5,7 @@
*
*/
-if( !defined( 'MEDIAWIKI' ) )
+if ( !defined( 'MEDIAWIKI' ) )
die( 1 );
/**
@@ -20,7 +20,7 @@ class CategoryPage extends Article {
if ( isset( $diff ) && $diffOnly )
return Article::view();
- if( !wfRunHooks( 'CategoryPageView', array( &$this ) ) )
+ if ( !wfRunHooks( 'CategoryPageView', array( &$this ) ) )
return;
if ( NS_CATEGORY == $this->mTitle->getNamespace() ) {
@@ -33,18 +33,17 @@ class CategoryPage extends Article {
$this->closeShowCategory();
}
}
-
+
/**
* Don't return a 404 for categories in use.
*/
function hasViewableContent() {
- if( parent::hasViewableContent() ) {
+ if ( parent::hasViewableContent() ) {
return true;
} else {
$cat = Category::newFromTitle( $this->mTitle );
return $cat->getId() != 0;
}
-
}
function openShowCategory() {
@@ -86,7 +85,7 @@ class CategoryViewer {
* @private
*/
function getHTML() {
- global $wgOut, $wgCategoryMagicGallery, $wgCategoryPagingLimit;
+ global $wgOut, $wgCategoryMagicGallery, $wgCategoryPagingLimit, $wgContLang;
wfProfileIn( __METHOD__ );
$this->showGallery = $wgCategoryMagicGallery && !$wgOut->mNoGallery;
@@ -95,11 +94,22 @@ class CategoryViewer {
$this->doCategoryQuery();
$this->finaliseCategoryState();
- $r = $this->getCategoryTop() .
- $this->getSubcategorySection() .
+ $r = $this->getSubcategorySection() .
$this->getPagesSection() .
- $this->getImageSection() .
- $this->getCategoryBottom();
+ $this->getImageSection();
+
+ if ( $r == '' ) {
+ // If there is no category content to display, only
+ // show the top part of the navigation links.
+ // FIXME: cannot be completely suppressed because it
+ // is unknown if 'until' or 'from' makes this
+ // give 0 results.
+ $r = $r . $this->getCategoryTop();
+ } else {
+ $r = $this->getCategoryTop() .
+ $r .
+ $this->getCategoryBottom();
+ }
// Give a proper message if category is empty
if ( $r == '' ) {
@@ -107,7 +117,7 @@ class CategoryViewer {
}
wfProfileOut( __METHOD__ );
- return $r;
+ return $wgContLang->convert( $r );
}
function clearCategoryState() {
@@ -115,7 +125,7 @@ class CategoryViewer {
$this->articles_start_char = array();
$this->children = array();
$this->children_start_char = array();
- if( $this->showGallery ) {
+ if ( $this->showGallery ) {
$this->gallery = new ImageGallery();
$this->gallery->setHideBadImages();
}
@@ -138,14 +148,18 @@ class CategoryViewer {
}
/**
- * Add a subcategory to the internal lists, using a title object
+ * Add a subcategory to the internal lists, using a title object
* @deprecated kept for compatibility, please use addSubcategoryObject instead
*/
function addSubcategory( $title, $sortkey, $pageLength ) {
- global $wgContLang;
// Subcategory; strip the 'Category' namespace from the link text.
- $this->children[] = $this->getSkin()->makeKnownLinkObj(
- $title, $wgContLang->convertHtml( $title->getText() ) );
+ $this->children[] = $this->getSkin()->link(
+ $title,
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
$this->children_start_char[] = $this->getSubcategorySortChar( $title, $sortkey );
}
@@ -160,7 +174,7 @@ class CategoryViewer {
function getSubcategorySortChar( $title, $sortkey ) {
global $wgContLang;
- if( $title->getPrefixedText() == $sortkey ) {
+ if ( $title->getPrefixedText() == $sortkey ) {
$firstChar = $wgContLang->firstChar( $title->getDBkey() );
} else {
$firstChar = $wgContLang->firstChar( $sortkey );
@@ -174,7 +188,7 @@ class CategoryViewer {
*/
function addImage( Title $title, $sortkey, $pageLength, $isRedirect = false ) {
if ( $this->showGallery ) {
- if( $this->flip ) {
+ if ( $this->flip ) {
$this->gallery->insert( $title );
} else {
$this->gallery->add( $title );
@@ -189,15 +203,21 @@ class CategoryViewer {
*/
function addPage( $title, $sortkey, $pageLength, $isRedirect = false ) {
global $wgContLang;
- $titletext = $wgContLang->convert( $title->getPrefixedText() );
$this->articles[] = $isRedirect
- ? '<span class="redirect-in-category">' . $this->getSkin()->makeKnownLinkObj( $title, $titletext ) . '</span>'
- : $this->getSkin()->makeSizeLinkObj( $pageLength, $title, $titletext );
+ ? '<span class="redirect-in-category">' .
+ $this->getSkin()->link(
+ $title,
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . '</span>'
+ : $this->getSkin()->makeSizeLinkObj( $pageLength, $title );
$this->articles_start_char[] = $wgContLang->convert( $wgContLang->firstChar( $sortkey ) );
}
function finaliseCategoryState() {
- if( $this->flip ) {
+ if ( $this->flip ) {
$this->children = array_reverse( $this->children );
$this->children_start_char = array_reverse( $this->children_start_char );
$this->articles = array_reverse( $this->articles );
@@ -207,16 +227,17 @@ class CategoryViewer {
function doCategoryQuery() {
$dbr = wfGetDB( DB_SLAVE, 'category' );
- if( $this->from != '' ) {
+ if ( $this->from != '' ) {
$pageCondition = 'cl_sortkey >= ' . $dbr->addQuotes( $this->from );
$this->flip = false;
- } elseif( $this->until != '' ) {
+ } elseif ( $this->until != '' ) {
$pageCondition = 'cl_sortkey < ' . $dbr->addQuotes( $this->until );
$this->flip = true;
} else {
$pageCondition = '1 = 1';
$this->flip = false;
}
+
$res = $dbr->select(
array( 'page', 'categorylinks', 'category' ),
array( 'page_title', 'page_namespace', 'page_len', 'page_is_redirect', 'cl_sortkey',
@@ -232,8 +253,9 @@ class CategoryViewer {
$count = 0;
$this->nextPage = null;
- while( $x = $dbr->fetchObject ( $res ) ) {
- if( ++$count > $this->limit ) {
+
+ while ( $x = $dbr->fetchObject ( $res ) ) {
+ if ( ++$count > $this->limit ) {
// We've reached the one extra which shows that there are
// additional pages to be had. Stop here...
$this->nextPage = $x->cl_sortkey;
@@ -242,26 +264,20 @@ class CategoryViewer {
$title = Title::makeTitle( $x->page_namespace, $x->page_title );
- if( $title->getNamespace() == NS_CATEGORY ) {
+ if ( $title->getNamespace() == NS_CATEGORY ) {
$cat = Category::newFromRow( $x, $title );
$this->addSubcategoryObject( $cat, $x->cl_sortkey, $x->page_len );
- } elseif( $this->showGallery && $title->getNamespace() == NS_FILE ) {
+ } elseif ( $this->showGallery && $title->getNamespace() == NS_FILE ) {
$this->addImage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect );
} else {
$this->addPage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect );
}
}
- $dbr->freeResult( $res );
}
function getCategoryTop() {
- $r = '';
- if( $this->until != '' ) {
- $r .= $this->pagingLinks( $this->title, $this->nextPage, $this->until, $this->limit );
- } elseif( $this->nextPage != '' || $this->from != '' ) {
- $r .= $this->pagingLinks( $this->title, $this->from, $this->nextPage, $this->limit );
- }
- return $r == ''
+ $r = $this->getCategoryBottom();
+ return $r === ''
? $r
: "<br style=\"clear:both;\"/>\n" . $r;
}
@@ -272,7 +288,8 @@ class CategoryViewer {
$rescnt = count( $this->children );
$dbcnt = $this->cat->getSubcatCount();
$countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'subcat' );
- if( $rescnt > 0 ) {
+
+ if ( $rescnt > 0 ) {
# Showing subcategories
$r .= "<div id=\"mw-subcategories\">\n";
$r .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n";
@@ -297,7 +314,7 @@ class CategoryViewer {
$rescnt = count( $this->articles );
$countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'article' );
- if( $rescnt > 0 ) {
+ if ( $rescnt > 0 ) {
$r = "<div id=\"mw-pages\">\n";
$r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\n";
$r .= $countmsg;
@@ -308,7 +325,7 @@ class CategoryViewer {
}
function getImageSection() {
- if( $this->showGallery && ! $this->gallery->isEmpty() ) {
+ if ( $this->showGallery && ! $this->gallery->isEmpty() ) {
$dbcnt = $this->cat->getFileCount();
$rescnt = $this->gallery->count();
$countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'file' );
@@ -322,9 +339,9 @@ class CategoryViewer {
}
function getCategoryBottom() {
- if( $this->until != '' ) {
+ if ( $this->until != '' ) {
return $this->pagingLinks( $this->title, $this->nextPage, $this->until, $this->limit );
- } elseif( $this->nextPage != '' || $this->from != '' ) {
+ } elseif ( $this->nextPage != '' || $this->from != '' ) {
return $this->pagingLinks( $this->title, $this->from, $this->nextPage, $this->limit );
} else {
return '';
@@ -344,7 +361,7 @@ class CategoryViewer {
function formatList( $articles, $articles_start_char, $cutoff = 6 ) {
if ( count ( $articles ) > $cutoff ) {
return $this->columnList( $articles, $articles_start_char );
- } elseif ( count($articles) > 0) {
+ } elseif ( count( $articles ) > 0 ) {
// for short lists of articles in categories.
return $this->shortList( $articles, $articles_start_char );
}
@@ -355,61 +372,60 @@ class CategoryViewer {
* Format a list of articles chunked by letter in a three-column
* list, ordered vertically.
*
+ * TODO: Take the headers into account when creating columns, so they're
+ * more visually equal.
+ *
+ * More distant TODO: Scrap this and use CSS columns, whenever IE finally
+ * supports those.
+ *
* @param $articles Array
* @param $articles_start_char Array
* @return String
* @private
*/
function columnList( $articles, $articles_start_char ) {
- // divide list into three equal chunks
- $chunk = (int) (count ( $articles ) / 3);
+ $columns = array_combine( $articles, $articles_start_char );
+ # Split into three columns
+ $columns = array_chunk( $columns, ceil( count( $columns ) / 3 ), true /* preserve keys */ );
- // get and display header
- $r = '<table width="100%"><tr valign="top">';
+ $ret = '<table width="100%"><tr valign="top"><td>';
+ $prevchar = null;
- $prev_start_char = 'none';
+ foreach ( $columns as $column ) {
+ $colContents = array();
- // loop through the chunks
- for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0;
- $chunkIndex < 3;
- $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1)
- {
- $r .= "<td>\n";
- $atColumnTop = true;
+ # Kind of like array_flip() here, but we keep duplicates in an
+ # array instead of dropping them.
+ foreach ( $column as $article => $char ) {
+ if ( !isset( $colContents[$char] ) ) {
+ $colContents[$char] = array();
+ }
+ $colContents[$char][] = $article;
+ }
- // output all articles in category
- for ($index = $startChunk ;
- $index < $endChunk && $index < count($articles);
- $index++ )
- {
- // check for change of starting letter or begining of chunk
- if ( ($index == $startChunk) ||
- ($articles_start_char[$index] != $articles_start_char[$index - 1]) )
-
- {
- if( $atColumnTop ) {
- $atColumnTop = false;
- } else {
- $r .= "</ul>\n";
- }
- $cont_msg = "";
- if ( $articles_start_char[$index] == $prev_start_char )
- $cont_msg = ' ' . wfMsgHtml( 'listingcontinuesabbrev' );
- $r .= "<h3>" . htmlspecialchars( $articles_start_char[$index] ) . "$cont_msg</h3>\n<ul>";
- $prev_start_char = $articles_start_char[$index];
+ $first = true;
+ foreach ( $colContents as $char => $articles ) {
+ $ret .= '<h3>' . htmlspecialchars( $char );
+ if ( $first && $char === $prevchar ) {
+ # We're continuing a previous chunk at the top of a new
+ # column, so add " cont." after the letter.
+ $ret .= ' ' . wfMsgHtml( 'listingcontinuesabbrev' );
}
+ $ret .= "</h3>\n";
- $r .= "<li>{$articles[$index]}</li>";
- }
- if( !$atColumnTop ) {
- $r .= "</ul>\n";
- }
- $r .= "</td>\n";
+ $ret .= '<ul><li>';
+ $ret .= implode( "</li>\n<li>", $articles );
+ $ret .= '</li></ul>';
+ $first = false;
+ $prevchar = $char;
+ }
+ $ret .= "</td>\n<td>";
}
- $r .= '</tr></table>';
- return $r;
+
+ $ret .= '</td></tr></table>';
+ return $ret;
}
/**
@@ -421,10 +437,10 @@ class CategoryViewer {
*/
function shortList( $articles, $articles_start_char ) {
$r = '<h3>' . htmlspecialchars( $articles_start_char[0] ) . "</h3>\n";
- $r .= '<ul><li>'.$articles[0].'</li>';
- for ($index = 1; $index < count($articles); $index++ )
+ $r .= '<ul><li>' . $articles[0] . '</li>';
+ for ( $index = 1; $index < count( $articles ); $index++ )
{
- if ($articles_start_char[$index] != $articles_start_char[$index - 1])
+ if ( $articles_start_char[$index] != $articles_start_char[$index - 1] )
{
$r .= "</ul><h3>" . htmlspecialchars( $articles_start_char[$index] ) . "</h3>\n<ul>";
}
@@ -450,14 +466,29 @@ class CategoryViewer {
$limitText = $wgLang->formatNum( $limit );
$prevLink = wfMsgExt( 'prevn', array( 'escape', 'parsemag' ), $limitText );
- if( $first != '' ) {
- $prevLink = $sk->makeLinkObj( $title, $prevLink,
- wfArrayToCGI( $query + array( 'until' => $first ) ) );
+
+ if ( $first != '' ) {
+ $prevQuery = $query;
+ $prevQuery['until'] = $first;
+ $prevLink = $sk->linkKnown(
+ $title,
+ $prevLink,
+ array(),
+ $prevQuery
+ );
}
+
$nextLink = wfMsgExt( 'nextn', array( 'escape', 'parsemag' ), $limitText );
- if( $last != '' ) {
- $nextLink = $sk->makeLinkObj( $title, $nextLink,
- wfArrayToCGI( $query + array( 'from' => $last ) ) );
+
+ if ( $last != '' ) {
+ $lastQuery = $query;
+ $lastQuery['from'] = $last;
+ $nextLink = $sk->linkKnown(
+ $title,
+ $nextLink,
+ array(),
+ $lastQuery
+ );
}
return "($prevLink) ($nextLink)";
@@ -490,12 +521,14 @@ class CategoryViewer {
# know the right figure.
# 3) We have no idea.
$totalrescnt = count( $this->articles ) + count( $this->children ) +
- ($this->showGallery ? $this->gallery->count() : 0);
- if($dbcnt == $rescnt || (($totalrescnt == $this->limit || $this->from
- || $this->until) && $dbcnt > $rescnt)){
+ ( $this->showGallery ? $this->gallery->count() : 0 );
+
+ if ( $dbcnt == $rescnt || ( ( $totalrescnt == $this->limit || $this->from
+ || $this->until ) && $dbcnt > $rescnt ) )
+ {
# Case 1: seems sane.
$totalcnt = $dbcnt;
- } elseif($totalrescnt < $this->limit && !$this->from && !$this->until){
+ } elseif ( $totalrescnt < $this->limit && !$this->from && !$this->until ) {
# Case 2: not sane, but salvageable. Use the number of results.
# Since there are fewer than 200, we can also take this opportunity
# to refresh the incorrect category table entry -- which should be
@@ -504,10 +537,14 @@ class CategoryViewer {
$this->cat->refreshCounts();
} else {
# Case 3: hopeless. Don't give a total count at all.
- return wfMsgExt("category-$type-count-limited", 'parse',
+ return wfMsgExt( "category-$type-count-limited", 'parse',
$wgLang->formatNum( $rescnt ) );
}
- return wfMsgExt( "category-$type-count", 'parse', $wgLang->formatNum( $rescnt ),
- $wgLang->formatNum( $totalcnt ) );
+ return wfMsgExt(
+ "category-$type-count",
+ 'parse',
+ $wgLang->formatNum( $rescnt ),
+ $wgLang->formatNum( $totalcnt )
+ );
}
}
diff --git a/includes/Categoryfinder.php b/includes/Categoryfinder.php
index 7c1c2856..5ac8a9be 100644
--- a/includes/Categoryfinder.php
+++ b/includes/Categoryfinder.php
@@ -1,5 +1,4 @@
<?php
-
/**
* The "Categoryfinder" class takes a list of articles, creates an internal
* representation of all their parent categories (as well as parents of
@@ -23,15 +22,14 @@
*
*/
class Categoryfinder {
-
- var $articles = array () ; # The original article IDs passed to the seed function
- var $deadend = array () ; # Array of DBKEY category names for categories that don't have a page
- var $parents = array () ; # Array of [ID => array()]
- var $next = array () ; # Array of article/category IDs
- var $targets = array () ; # Array of DBKEY category names
- var $name2id = array () ;
- var $mode ; # "AND" or "OR"
- var $dbr ; # Read-DB slave
+ var $articles = array(); # The original article IDs passed to the seed function
+ var $deadend = array(); # Array of DBKEY category names for categories that don't have a page
+ var $parents = array(); # Array of [ID => array()]
+ var $next = array(); # Array of article/category IDs
+ var $targets = array(); # Array of DBKEY category names
+ var $name2id = array();
+ var $mode; # "AND" or "OR"
+ var $dbr; # Read-DB slave
/**
* Constructor (currently empty).
@@ -45,16 +43,16 @@ class Categoryfinder {
* @param $categories FIXME
* @param $mode String: FIXME, default 'AND'.
*/
- function seed ( $article_ids , $categories , $mode = "AND" ) {
- $this->articles = $article_ids ;
- $this->next = $article_ids ;
- $this->mode = $mode ;
+ function seed( $article_ids, $categories, $mode = "AND" ) {
+ $this->articles = $article_ids;
+ $this->next = $article_ids;
+ $this->mode = $mode;
# Set the list of target categories; convert them to DBKEY form first
- $this->targets = array () ;
- foreach ( $categories AS $c ) {
+ $this->targets = array();
+ foreach ( $categories as $c ) {
$ct = Title::makeTitleSafe( NS_CATEGORY, $c );
- if( $ct ) {
+ if ( $ct ) {
$c = $ct->getDBkey();
$this->targets[$c] = $c;
}
@@ -69,19 +67,20 @@ class Categoryfinder {
function run () {
$this->dbr = wfGetDB( DB_SLAVE );
while ( count ( $this->next ) > 0 ) {
- $this->scan_next_layer () ;
+ $this->scan_next_layer();
}
# Now check if this applies to the individual articles
- $ret = array () ;
- foreach ( $this->articles AS $article ) {
- $conds = $this->targets ;
- if ( $this->check ( $article , $conds ) ) {
+ $ret = array();
+
+ foreach ( $this->articles as $article ) {
+ $conds = $this->targets;
+ if ( $this->check( $article, $conds ) ) {
# Matches the conditions
- $ret[] = $article ;
+ $ret[] = $article;
}
}
- return $ret ;
+ return $ret;
}
/**
@@ -91,108 +90,111 @@ class Categoryfinder {
* @param $path used to check for recursion loops
* @return bool Does this match the conditions?
*/
- function check ( $id , &$conds, $path=array() ) {
+ function check( $id , &$conds, $path = array() ) {
// Check for loops and stop!
- if( in_array( $id, $path ) )
+ if ( in_array( $id, $path ) ) {
return false;
+ }
+
$path[] = $id;
# Shortcut (runtime paranoia): No contitions=all matched
- if ( count ( $conds ) == 0 ) return true ;
+ if ( count( $conds ) == 0 ) {
+ return true;
+ }
- if ( !isset ( $this->parents[$id] ) ) return false ;
+ if ( !isset( $this->parents[$id] ) ) {
+ return false;
+ }
# iterate through the parents
- foreach ( $this->parents[$id] AS $p ) {
+ foreach ( $this->parents[$id] as $p ) {
$pname = $p->cl_to ;
# Is this a condition?
- if ( isset ( $conds[$pname] ) ) {
+ if ( isset( $conds[$pname] ) ) {
# This key is in the category list!
if ( $this->mode == "OR" ) {
# One found, that's enough!
- $conds = array () ;
- return true ;
+ $conds = array();
+ return true;
} else {
# Assuming "AND" as default
- unset ( $conds[$pname] ) ;
- if ( count ( $conds ) == 0 ) {
+ unset( $conds[$pname] ) ;
+ if ( count( $conds ) == 0 ) {
# All conditions met, done
- return true ;
+ return true;
}
}
}
# Not done yet, try sub-parents
- if ( !isset ( $this->name2id[$pname] ) ) {
+ if ( !isset( $this->name2id[$pname] ) ) {
# No sub-parent
continue ;
}
- $done = $this->check ( $this->name2id[$pname] , $conds, $path );
- if ( $done OR count ( $conds ) == 0 ) {
+ $done = $this->check( $this->name2id[$pname], $conds, $path );
+ if ( $done || count( $conds ) == 0 ) {
# Subparents have done it!
- return true ;
+ return true;
}
}
- return false ;
+ return false;
}
/**
* Scans a "parent layer" of the articles/categories in $this->next
*/
- function scan_next_layer () {
- $fname = "Categoryfinder::scan_next_layer" ;
-
+ function scan_next_layer() {
# Find all parents of the article currently in $this->next
- $layer = array () ;
+ $layer = array();
$res = $this->dbr->select(
- /* FROM */ 'categorylinks',
- /* SELECT */ '*',
- /* WHERE */ array( 'cl_from' => $this->next ),
- $fname."-1"
+ /* FROM */ 'categorylinks',
+ /* SELECT */ '*',
+ /* WHERE */ array( 'cl_from' => $this->next ),
+ __METHOD__ . "-1"
);
while ( $o = $this->dbr->fetchObject( $res ) ) {
$k = $o->cl_to ;
# Update parent tree
- if ( !isset ( $this->parents[$o->cl_from] ) ) {
- $this->parents[$o->cl_from] = array () ;
+ if ( !isset( $this->parents[$o->cl_from] ) ) {
+ $this->parents[$o->cl_from] = array();
}
- $this->parents[$o->cl_from][$k] = $o ;
+ $this->parents[$o->cl_from][$k] = $o;
# Ignore those we already have
- if ( in_array ( $k , $this->deadend ) ) continue ;
- if ( isset ( $this->name2id[$k] ) ) continue ;
+ if ( in_array ( $k , $this->deadend ) ) continue;
+
+ if ( isset ( $this->name2id[$k] ) ) continue;
# Hey, new category!
- $layer[$k] = $k ;
+ $layer[$k] = $k;
}
- $this->dbr->freeResult( $res ) ;
- $this->next = array() ;
+ $this->next = array();
# Find the IDs of all category pages in $layer, if they exist
if ( count ( $layer ) > 0 ) {
$res = $this->dbr->select(
- /* FROM */ 'page',
- /* SELECT */ 'page_id,page_title',
- /* WHERE */ array( 'page_namespace' => NS_CATEGORY , 'page_title' => $layer ),
- $fname."-2"
+ /* FROM */ 'page',
+ /* SELECT */ array( 'page_id', 'page_title' ),
+ /* WHERE */ array( 'page_namespace' => NS_CATEGORY , 'page_title' => $layer ),
+ __METHOD__ . "-2"
);
while ( $o = $this->dbr->fetchObject( $res ) ) {
- $id = $o->page_id ;
- $name = $o->page_title ;
- $this->name2id[$name] = $id ;
- $this->next[] = $id ;
- unset ( $layer[$name] ) ;
- }
- $this->dbr->freeResult( $res ) ;
+ $id = $o->page_id;
+ $name = $o->page_title;
+ $this->name2id[$name] = $id;
+ $this->next[] = $id;
+ unset( $layer[$name] );
}
+ }
# Mark dead ends
- foreach ( $layer AS $v ) {
- $this->deadend[$v] = $v ;
+ foreach ( $layer as $v ) {
+ $this->deadend[$v] = $v;
}
}
-} # END OF CLASS "Categoryfinder"
+}
diff --git a/includes/Cdb.php b/includes/Cdb.php
new file mode 100644
index 00000000..ab429872
--- /dev/null
+++ b/includes/Cdb.php
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * Read from a CDB file.
+ * Native and pure PHP implementations are provided.
+ * http://cr.yp.to/cdb.html
+ */
+abstract class CdbReader {
+ /**
+ * Open a file and return a subclass instance
+ */
+ public static function open( $fileName ) {
+ if ( self::haveExtension() ) {
+ return new CdbReader_DBA( $fileName );
+ } else {
+ wfDebug( "Warning: no dba extension found, using emulation.\n" );
+ return new CdbReader_PHP( $fileName );
+ }
+ }
+
+ /**
+ * Returns true if the native extension is available
+ */
+ public static function haveExtension() {
+ if ( !function_exists( 'dba_handlers' ) ) {
+ return false;
+ }
+ $handlers = dba_handlers();
+ if ( !in_array( 'cdb', $handlers ) || !in_array( 'cdb_make', $handlers ) ) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Construct the object and open the file
+ */
+ abstract function __construct( $fileName );
+
+ /**
+ * Close the file. Optional, you can just let the variable go out of scope.
+ */
+ abstract function close();
+
+ /**
+ * Get a value with a given key. Only string values are supported.
+ */
+ abstract public function get( $key );
+}
+
+/**
+ * Write to a CDB file.
+ * Native and pure PHP implementations are provided.
+ */
+abstract class CdbWriter {
+ /**
+ * Open a writer and return a subclass instance.
+ * The user must have write access to the directory, for temporary file creation.
+ */
+ public static function open( $fileName ) {
+ if ( CdbReader::haveExtension() ) {
+ return new CdbWriter_DBA( $fileName );
+ } else {
+ wfDebug( "Warning: no dba extension found, using emulation.\n" );
+ return new CdbWriter_PHP( $fileName );
+ }
+ }
+
+ /**
+ * Create the object and open the file
+ */
+ abstract function __construct( $fileName );
+
+ /**
+ * Set a key to a given value. The value will be converted to string.
+ */
+ abstract public function set( $key, $value );
+
+ /**
+ * Close the writer object. You should call this function before the object
+ * goes out of scope, to write out the final hashtables.
+ */
+ abstract public function close();
+}
+
+
+/**
+ * Reader class which uses the DBA extension
+ */
+class CdbReader_DBA {
+ var $handle;
+
+ function __construct( $fileName ) {
+ $this->handle = dba_open( $fileName, 'r-', 'cdb' );
+ if ( !$this->handle ) {
+ throw new MWException( 'Unable to open DB file "' . $fileName . '"' );
+ }
+ }
+
+ function close() {
+ if( isset($this->handle) )
+ dba_close( $this->handle );
+ unset( $this->handle );
+ }
+
+ function get( $key ) {
+ return dba_fetch( $key, $this->handle );
+ }
+}
+
+
+/**
+ * Writer class which uses the DBA extension
+ */
+class CdbWriter_DBA {
+ var $handle, $realFileName, $tmpFileName;
+
+ function __construct( $fileName ) {
+ $this->realFileName = $fileName;
+ $this->tmpFileName = $fileName . '.tmp.' . mt_rand( 0, 0x7fffffff );
+ $this->handle = dba_open( $this->tmpFileName, 'n', 'cdb_make' );
+ if ( !$this->handle ) {
+ throw new MWException( 'Unable to open DB file for write "' . $fileName . '"' );
+ }
+ }
+
+ function set( $key, $value ) {
+ return dba_insert( $key, $value, $this->handle );
+ }
+
+ function close() {
+ if( isset($this->handle) )
+ dba_close( $this->handle );
+ if ( wfIsWindows() ) {
+ unlink( $this->realFileName );
+ }
+ if ( !rename( $this->tmpFileName, $this->realFileName ) ) {
+ throw new MWException( 'Unable to move the new CDB file into place.' );
+ }
+ unset( $this->handle );
+ }
+
+ function __destruct() {
+ if ( isset( $this->handle ) ) {
+ $this->close();
+ }
+ }
+}
+
diff --git a/includes/Cdb_PHP.php b/includes/Cdb_PHP.php
new file mode 100644
index 00000000..49294f71
--- /dev/null
+++ b/includes/Cdb_PHP.php
@@ -0,0 +1,374 @@
+<?php
+
+/**
+ * This is a port of D.J. Bernstein's CDB to PHP. It's based on the copy that
+ * appears in PHP 5.3. Changes are:
+ * * Error returns replaced with exceptions
+ * * Exception thrown if sizes or offsets are between 2GB and 4GB
+ * * Some variables renamed
+ */
+
+/**
+ * Common functions for readers and writers
+ */
+class CdbFunctions {
+ /**
+ * Take a modulo of a signed integer as if it were an unsigned integer.
+ * $b must be less than 0x40000000 and greater than 0
+ */
+ public static function unsignedMod( $a, $b ) {
+ if ( $a & 0x80000000 ) {
+ $m = ( $a & 0x7fffffff ) % $b + 2 * ( 0x40000000 % $b );
+ return $m % $b;
+ } else {
+ return $a % $b;
+ }
+ }
+
+ /**
+ * Shift a signed integer right as if it were unsigned
+ */
+ public static function unsignedShiftRight( $a, $b ) {
+ if ( $b == 0 ) {
+ return $a;
+ }
+ if ( $a & 0x80000000 ) {
+ return ( ( $a & 0x7fffffff ) >> $b ) | ( 0x40000000 >> ( $b - 1 ) );
+ } else {
+ return $a >> $b;
+ }
+ }
+
+ /**
+ * The CDB hash function.
+ */
+ public static function hash( $s ) {
+ $h = 5381;
+ for ( $i = 0; $i < strlen( $s ); $i++ ) {
+ $h5 = ($h << 5) & 0xffffffff;
+ // Do a 32-bit sum
+ // Inlined here for speed
+ $sum = ($h & 0x3fffffff) + ($h5 & 0x3fffffff);
+ $h =
+ (
+ ( $sum & 0x40000000 ? 1 : 0 )
+ + ( $h & 0x80000000 ? 2 : 0 )
+ + ( $h & 0x40000000 ? 1 : 0 )
+ + ( $h5 & 0x80000000 ? 2 : 0 )
+ + ( $h5 & 0x40000000 ? 1 : 0 )
+ ) << 30
+ | ( $sum & 0x3fffffff );
+ $h ^= ord( $s[$i] );
+ $h &= 0xffffffff;
+ }
+ return $h;
+ }
+}
+
+/**
+ * CDB reader class
+ */
+class CdbReader_PHP extends CdbReader {
+ /** The file handle */
+ var $handle;
+
+ /* number of hash slots searched under this key */
+ var $loop;
+
+ /* initialized if loop is nonzero */
+ var $khash;
+
+ /* initialized if loop is nonzero */
+ var $kpos;
+
+ /* initialized if loop is nonzero */
+ var $hpos;
+
+ /* initialized if loop is nonzero */
+ var $hslots;
+
+ /* initialized if findNext() returns true */
+ var $dpos;
+
+ /* initialized if cdb_findnext() returns 1 */
+ var $dlen;
+
+ function __construct( $fileName ) {
+ $this->handle = fopen( $fileName, 'rb' );
+ if ( !$this->handle ) {
+ throw new MWException( 'Unable to open DB file "' . $fileName . '"' );
+ }
+ $this->findStart();
+ }
+
+ function close() {
+ if( isset($this->handle) )
+ fclose( $this->handle );
+ unset( $this->handle );
+ }
+
+ public function get( $key ) {
+ // strval is required
+ if ( $this->find( strval( $key ) ) ) {
+ return $this->read( $this->dlen, $this->dpos );
+ } else {
+ return false;
+ }
+ }
+
+ protected function match( $key, $pos ) {
+ $buf = $this->read( strlen( $key ), $pos );
+ return $buf === $key;
+ }
+
+ protected function findStart() {
+ $this->loop = 0;
+ }
+
+ protected function read( $length, $pos ) {
+ if ( fseek( $this->handle, $pos ) == -1 ) {
+ // This can easily happen if the internal pointers are incorrect
+ throw new MWException( __METHOD__.': seek failed, file may be corrupted.' );
+ }
+
+ if ( $length == 0 ) {
+ return '';
+ }
+
+ $buf = fread( $this->handle, $length );
+ if ( $buf === false || strlen( $buf ) !== $length ) {
+ throw new MWException( __METHOD__.': read from cdb file failed, file may be corrupted' );
+ }
+ return $buf;
+ }
+
+ /**
+ * Unpack an unsigned integer and throw an exception if it needs more than 31 bits
+ */
+ protected function unpack31( $s ) {
+ $data = unpack( 'V', $s );
+ if ( $data[1] > 0x7fffffff ) {
+ throw new MWException( __METHOD__.': error in CDB file, integer too big' );
+ }
+ return $data[1];
+ }
+
+ /**
+ * Unpack a 32-bit signed integer
+ */
+ protected function unpackSigned( $s ) {
+ $data = unpack( 'va/vb', $s );
+ return $data['a'] | ( $data['b'] << 16 );
+ }
+
+ protected function findNext( $key ) {
+ if ( !$this->loop ) {
+ $u = CdbFunctions::hash( $key );
+ $buf = $this->read( 8, ( $u << 3 ) & 2047 );
+ $this->hslots = $this->unpack31( substr( $buf, 4 ) );
+ if ( !$this->hslots ) {
+ return false;
+ }
+ $this->hpos = $this->unpack31( substr( $buf, 0, 4 ) );
+ $this->khash = $u;
+ $u = CdbFunctions::unsignedShiftRight( $u, 8 );
+ $u = CdbFunctions::unsignedMod( $u, $this->hslots );
+ $u <<= 3;
+ $this->kpos = $this->hpos + $u;
+ }
+
+ while ( $this->loop < $this->hslots ) {
+ $buf = $this->read( 8, $this->kpos );
+ $pos = $this->unpack31( substr( $buf, 4 ) );
+ if ( !$pos ) {
+ return false;
+ }
+ $this->loop += 1;
+ $this->kpos += 8;
+ if ( $this->kpos == $this->hpos + ( $this->hslots << 3 ) ) {
+ $this->kpos = $this->hpos;
+ }
+ $u = $this->unpackSigned( substr( $buf, 0, 4 ) );
+ if ( $u === $this->khash ) {
+ $buf = $this->read( 8, $pos );
+ $keyLen = $this->unpack31( substr( $buf, 0, 4 ) );
+ if ( $keyLen == strlen( $key ) && $this->match( $key, $pos + 8 ) ) {
+ // Found
+ $this->dlen = $this->unpack31( substr( $buf, 4 ) );
+ $this->dpos = $pos + 8 + $keyLen;
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ protected function find( $key ) {
+ $this->findStart();
+ return $this->findNext( $key );
+ }
+}
+
+/**
+ * CDB writer class
+ */
+class CdbWriter_PHP extends CdbWriter {
+ var $handle, $realFileName, $tmpFileName;
+
+ var $hplist;
+ var $numEntries, $pos;
+
+ function __construct( $fileName ) {
+ $this->realFileName = $fileName;
+ $this->tmpFileName = $fileName . '.tmp.' . mt_rand( 0, 0x7fffffff );
+ $this->handle = fopen( $this->tmpFileName, 'wb' );
+ if ( !$this->handle ) {
+ throw new MWException( 'Unable to open DB file for write "' . $fileName . '"' );
+ }
+ $this->hplist = array();
+ $this->numentries = 0;
+ $this->pos = 2048; // leaving space for the pointer array, 256 * 8
+ if ( fseek( $this->handle, $this->pos ) == -1 ) {
+ throw new MWException( __METHOD__.': fseek failed' );
+ }
+ }
+
+ function __destruct() {
+ if ( isset( $this->handle ) ) {
+ $this->close();
+ }
+ }
+
+ public function set( $key, $value ) {
+ if ( strval( $key ) === '' ) {
+ // DBA cross-check hack
+ return;
+ }
+ $this->addbegin( strlen( $key ), strlen( $value ) );
+ $this->write( $key );
+ $this->write( $value );
+ $this->addend( strlen( $key ), strlen( $value ), CdbFunctions::hash( $key ) );
+ }
+
+ public function close() {
+ $this->finish();
+ if( isset($this->handle) )
+ fclose( $this->handle );
+ if ( wfIsWindows() && file_exists($this->realFileName) ) {
+ unlink( $this->realFileName );
+ }
+ if ( !rename( $this->tmpFileName, $this->realFileName ) ) {
+ throw new MWException( 'Unable to move the new CDB file into place.' );
+ }
+ unset( $this->handle );
+ }
+
+ protected function write( $buf ) {
+ $len = fwrite( $this->handle, $buf );
+ if ( $len !== strlen( $buf ) ) {
+ throw new MWException( 'Error writing to CDB file.' );
+ }
+ }
+
+ protected function posplus( $len ) {
+ $newpos = $this->pos + $len;
+ if ( $newpos > 0x7fffffff ) {
+ throw new MWException( 'A value in the CDB file is too large' );
+ }
+ $this->pos = $newpos;
+ }
+
+ protected function addend( $keylen, $datalen, $h ) {
+ $this->hplist[] = array(
+ 'h' => $h,
+ 'p' => $this->pos
+ );
+
+ $this->numentries++;
+ $this->posplus( 8 );
+ $this->posplus( $keylen );
+ $this->posplus( $datalen );
+ }
+
+ protected function addbegin( $keylen, $datalen ) {
+ if ( $keylen > 0x7fffffff ) {
+ throw new MWException( __METHOD__.': key length too long' );
+ }
+ if ( $datalen > 0x7fffffff ) {
+ throw new MWException( __METHOD__.': data length too long' );
+ }
+ $buf = pack( 'VV', $keylen, $datalen );
+ $this->write( $buf );
+ }
+
+ protected function finish() {
+ // Hack for DBA cross-check
+ $this->hplist = array_reverse( $this->hplist );
+
+ // Calculate the number of items that will be in each hashtable
+ $counts = array_fill( 0, 256, 0 );
+ foreach ( $this->hplist as $item ) {
+ ++ $counts[ 255 & $item['h'] ];
+ }
+
+ // Fill in $starts with the *end* indexes
+ $starts = array();
+ $pos = 0;
+ for ( $i = 0; $i < 256; ++$i ) {
+ $pos += $counts[$i];
+ $starts[$i] = $pos;
+ }
+
+ // Excessively clever and indulgent code to simultaneously fill $packedTables
+ // with the packed hashtables, and adjust the elements of $starts
+ // to actually point to the starts instead of the ends.
+ $packedTables = array_fill( 0, $this->numentries, false );
+ foreach ( $this->hplist as $item ) {
+ $packedTables[--$starts[255 & $item['h']]] = $item;
+ }
+
+ $final = '';
+ for ( $i = 0; $i < 256; ++$i ) {
+ $count = $counts[$i];
+
+ // The size of the hashtable will be double the item count.
+ // The rest of the slots will be empty.
+ $len = $count + $count;
+ $final .= pack( 'VV', $this->pos, $len );
+
+ $hashtable = array();
+ for ( $u = 0; $u < $len; ++$u ) {
+ $hashtable[$u] = array( 'h' => 0, 'p' => 0 );
+ }
+
+ // Fill the hashtable, using the next empty slot if the hashed slot
+ // is taken.
+ for ( $u = 0; $u < $count; ++$u ) {
+ $hp = $packedTables[$starts[$i] + $u];
+ $where = CdbFunctions::unsignedMod(
+ CdbFunctions::unsignedShiftRight( $hp['h'], 8 ), $len );
+ while ( $hashtable[$where]['p'] )
+ if ( ++$where == $len )
+ $where = 0;
+ $hashtable[$where] = $hp;
+ }
+
+ // Write the hashtable
+ for ( $u = 0; $u < $len; ++$u ) {
+ $buf = pack( 'vvV',
+ $hashtable[$u]['h'] & 0xffff,
+ CdbFunctions::unsignedShiftRight( $hashtable[$u]['h'], 16 ),
+ $hashtable[$u]['p'] );
+ $this->write( $buf );
+ $this->posplus( 8 );
+ }
+ }
+
+ // Write the pointer array at the start of the file
+ rewind( $this->handle );
+ if ( ftell( $this->handle ) != 0 ) {
+ throw new MWException( __METHOD__.': Error rewinding to start of file' );
+ }
+ $this->write( $final );
+ }
+}
diff --git a/includes/ChangeTags.php b/includes/ChangeTags.php
index de804c5c..8dce679b 100644
--- a/includes/ChangeTags.php
+++ b/includes/ChangeTags.php
@@ -1,56 +1,63 @@
<?php
-if (!defined( 'MEDIAWIKI' ))
+if( !defined( 'MEDIAWIKI' ) )
die;
class ChangeTags {
static function formatSummaryRow( $tags, $page ) {
- if (!$tags)
- return array('',array());
+ if( !$tags )
+ return array( '', array() );
$classes = array();
-
+
$tags = explode( ',', $tags );
$displayTags = array();
foreach( $tags as $tag ) {
- $displayTags[] = self::tagDescription( $tag );
- $classes[] = "mw-tag-$tag";
+ $displayTags[] = Xml::tags(
+ 'span',
+ array( 'class' => 'mw-tag-marker ' .
+ Sanitizer::escapeClass( "mw-tag-marker-$tag" ) ),
+ self::tagDescription( $tag )
+ );
+ $classes[] = Sanitizer::escapeClass( "mw-tag-$tag" );
}
- return array( '(' . implode( ', ', $displayTags ) . ')', $classes );
+ $markers = '(' . implode( ', ', $displayTags ) . ')';
+ $markers = Xml::tags( 'span', array( 'class' => 'mw-tag-markers' ), $markers );
+ return array( $markers, $classes );
}
static function tagDescription( $tag ) {
$msg = wfMsgExt( "tag-$tag", 'parseinline' );
if ( wfEmptyMsg( "tag-$tag", $msg ) ) {
- return htmlspecialchars($tag);
+ return htmlspecialchars( $tag );
}
return $msg;
}
## Basic utility method to add tags to a particular change, given its rc_id, rev_id and/or log_id.
- static function addTags( $tags, $rc_id=null, $rev_id=null, $log_id=null, $params = null ) {
- if ( !is_array($tags) ) {
+ static function addTags( $tags, $rc_id = null, $rev_id = null, $log_id = null, $params = null ) {
+ if ( !is_array( $tags ) ) {
$tags = array( $tags );
}
$tags = array_filter( $tags ); // Make sure we're submitting all tags...
- if (!$rc_id && !$rev_id && !$log_id) {
+ if( !$rc_id && !$rev_id && !$log_id ) {
throw new MWException( "At least one of: RCID, revision ID, and log ID MUST be specified when adding a tag to a change!" );
}
$dbr = wfGetDB( DB_SLAVE );
// Might as well look for rcids and so on.
- if (!$rc_id) {
+ if( !$rc_id ) {
$dbr = wfGetDB( DB_MASTER ); // Info might be out of date, somewhat fractionally, on slave.
- if ($log_id) {
+ if( $log_id ) {
$rc_id = $dbr->selectField( 'recentchanges', 'rc_id', array( 'rc_logid' => $log_id ), __METHOD__ );
- } elseif ($rev_id) {
+ } elseif( $rev_id ) {
$rc_id = $dbr->selectField( 'recentchanges', 'rc_id', array( 'rc_this_oldid' => $rev_id ), __METHOD__ );
}
- } elseif (!$log_id && !$rev_id) {
+ } elseif( !$log_id && !$rev_id ) {
$dbr = wfGetDB( DB_MASTER ); // Info might be out of date, somewhat fractionally, on slave.
$log_id = $dbr->selectField( 'recentchanges', 'rc_logid', array( 'rc_id' => $rc_id ), __METHOD__ );
$rev_id = $dbr->selectField( 'recentchanges', 'rc_this_oldid', array( 'rc_id' => $rc_id ), __METHOD__ );
@@ -63,8 +70,8 @@ class ChangeTags {
$prevTags = $prevTags ? $prevTags : '';
$prevTags = array_filter( explode( ',', $prevTags ) );
$newTags = array_unique( array_merge( $prevTags, $tags ) );
- sort($prevTags);
- sort($newTags);
+ sort( $prevTags );
+ sort( $newTags );
if ( $prevTags == $newTags ) {
// No change.
@@ -72,15 +79,28 @@ class ChangeTags {
}
$dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'tag_summary', array( 'ts_rev_id', 'ts_rc_id', 'ts_log_id' ), array_filter( array_merge( $tsConds, array( 'ts_tags' => implode( ',', $newTags ) ) ) ), __METHOD__ );
+ $dbw->replace(
+ 'tag_summary',
+ array( 'ts_rev_id', 'ts_rc_id', 'ts_log_id' ),
+ array_filter( array_merge( $tsConds, array( 'ts_tags' => implode( ',', $newTags ) ) ) ),
+ __METHOD__
+ );
// Insert the tags rows.
$tagsRows = array();
foreach( $tags as $tag ) { // Filter so we don't insert NULLs as zero accidentally.
- $tagsRows[] = array_filter( array( 'ct_tag' => $tag, 'ct_rc_id' => $rc_id, 'ct_log_id' => $log_id, 'ct_rev_id' => $rev_id, 'ct_params' => $params ) );
+ $tagsRows[] = array_filter(
+ array(
+ 'ct_tag' => $tag,
+ 'ct_rc_id' => $rc_id,
+ 'ct_log_id' => $log_id,
+ 'ct_rev_id' => $rev_id,
+ 'ct_params' => $params
+ )
+ );
}
- $dbw->insert( 'change_tag', $tagsRows, __METHOD__, array('IGNORE') );
+ $dbw->insert( 'change_tag', $tagsRows, __METHOD__, array( 'IGNORE' ) );
return true;
}
@@ -89,38 +109,40 @@ class ChangeTags {
* Applies all tags-related changes to a query.
* Handles selecting tags, and filtering.
* Needs $tables to be set up properly, so we can figure out which join conditions to use.
- */
+ */
static function modifyDisplayQuery( &$tables, &$fields, &$conds,
&$join_conds, &$options, $filter_tag = false ) {
global $wgRequest, $wgUseTagFilter;
-
- if ($filter_tag === false) {
+
+ if( $filter_tag === false ) {
$filter_tag = $wgRequest->getVal( 'tagfilter' );
}
// Figure out which conditions can be done.
$join_field = '';
- if ( in_array('recentchanges', $tables) ) {
+ if ( in_array( 'recentchanges', $tables ) ) {
$join_cond = 'rc_id';
- } elseif( in_array('logging', $tables) ) {
+ } elseif( in_array( 'logging', $tables ) ) {
$join_cond = 'log_id';
- } elseif ( in_array('revision', $tables) ) {
+ } elseif ( in_array( 'revision', $tables ) ) {
$join_cond = 'rev_id';
} else {
- throw new MWException( "Unable to determine appropriate JOIN condition for tagging." );
+ throw new MWException( 'Unable to determine appropriate JOIN condition for tagging.' );
}
// JOIN on tag_summary
$tables[] = 'tag_summary';
$join_conds['tag_summary'] = array( 'LEFT JOIN', "ts_$join_cond=$join_cond" );
$fields[] = 'ts_tags';
-
- if ($wgUseTagFilter && $filter_tag) {
+
+ if( $wgUseTagFilter && $filter_tag ) {
// Somebody wants to filter on a tag.
// Add an INNER JOIN on change_tag
// FORCE INDEX -- change_tags will almost ALWAYS be the correct query plan.
- $options['USE INDEX'] = array( 'change_tag' => 'change_tag_tag_id' );
+ global $wgOldChangeTagsIndex;
+ $index = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
+ $options['USE INDEX'] = array( 'change_tag' => $index );
unset( $options['FORCE INDEX'] );
$tables[] = 'change_tag';
$join_conds['change_tag'] = array( 'INNER JOIN', "ct_$join_cond=$join_cond" );
@@ -134,15 +156,15 @@ class ChangeTags {
*/
static function buildTagFilterSelector( $selected='', $fullForm = false /* used to put a full form around the selector */ ) {
global $wgUseTagFilter;
-
+
if ( !$wgUseTagFilter || !count( self::listDefinedTags() ) )
return $fullForm ? '' : array();
-
+
global $wgTitle;
-
+
$data = array( wfMsgExt( 'tag-filter', 'parseinline' ), Xml::input( 'tagfilter', 20, $selected ) );
- if (!$fullForm) {
+ if ( !$fullForm ) {
return $data;
}
@@ -160,9 +182,9 @@ class ChangeTags {
global $wgMemc;
$key = wfMemcKey( 'valid-tags' );
- if ($tags = $wgMemc->get( $key ))
+ if ( $tags = $wgMemc->get( $key ) )
return $tags;
-
+
$emptyTags = array();
// Some DB stuff
@@ -171,8 +193,8 @@ class ChangeTags {
while( $row = $res->fetchObject() ) {
$emptyTags[] = $row->vt_tag;
}
-
- wfRunHooks( 'ListDefinedTags', array(&$emptyTags) );
+
+ wfRunHooks( 'ListDefinedTags', array( &$emptyTags ) );
$emptyTags = array_filter( array_unique( $emptyTags ) );
diff --git a/includes/ChangesFeed.php b/includes/ChangesFeed.php
index a0c2767a..bc50fe02 100644
--- a/includes/ChangesFeed.php
+++ b/includes/ChangesFeed.php
@@ -1,14 +1,31 @@
<?php
+/**
+ * Feed to Special:RecentChanges and Special:RecentChangesLiked
+ *
+ * @ingroup Feed
+ */
class ChangesFeed {
-
public $format, $type, $titleMsg, $descMsg;
+ /**
+ * Constructor
+ *
+ * @param $format String: feed's format (either 'rss' or 'atom')
+ * @param $type String: type of feed (for cache keys)
+ */
public function __construct( $format, $type ) {
$this->format = $format;
$this->type = $type;
}
+ /**
+ * Get a ChannelFeed subclass object to use
+ *
+ * @param $title String: feed's title
+ * @param $description String: feed's description
+ * @return ChannelFeed subclass or false on failure
+ */
public function getFeedObject( $title, $description ) {
global $wgSitename, $wgContLanguageCode, $wgFeedClasses, $wgTitle;
$feedTitle = "$wgSitename - {$title} [$wgContLanguageCode]";
@@ -18,16 +35,26 @@ class ChangesFeed {
$feedTitle, htmlspecialchars( $description ), $wgTitle->getFullUrl() );
}
- public function execute( $feed, $rows, $limit=0, $hideminor=false, $lastmod=false, $target='' ) {
+ /**
+ * Generates feed's content
+ *
+ * @param $feed ChannelFeed subclass object (generally the one returned by getFeedObject())
+ * @param $rows ResultWrapper object with rows in recentchanges table
+ * @param $lastmod Integer: timestamp of the last item in the recentchanges table (only used for the cache key)
+ * @param $opts FormOptions as in SpecialRecentChanges::getDefaultOptions()
+ * @return null or true
+ */
+ public function execute( $feed, $rows, $lastmod, $opts ) {
global $messageMemc, $wgFeedCacheTimeout;
- global $wgSitename, $wgContLanguageCode;
+ global $wgSitename, $wgLang;
if ( !FeedUtils::checkFeedOutput( $this->format ) ) {
return;
}
$timekey = wfMemcKey( $this->type, $this->format, 'timestamp' );
- $key = wfMemcKey( $this->type, $this->format, $limit, $hideminor, $target );
+ $optionsHash = md5( serialize( $opts->getAllValues() ) );
+ $key = wfMemcKey( $this->type, $this->format, $wgLang->getCode(), $optionsHash );
FeedUtils::checkPurge($timekey, $key);
@@ -52,13 +79,28 @@ class ChangesFeed {
return true;
}
+ /**
+ * Save to feed result to $messageMemc
+ *
+ * @param $feed String: feed's content
+ * @param $timekey String: memcached key of the last modification
+ * @param $key String: memcached key of the content
+ */
public function saveToCache( $feed, $timekey, $key ) {
global $messageMemc;
$expire = 3600 * 24; # One day
- $messageMemc->set( $key, $feed );
+ $messageMemc->set( $key, $feed, $expire );
$messageMemc->set( $timekey, wfTimestamp( TS_MW ), $expire );
}
+ /**
+ * Try to load the feed result from $messageMemc
+ *
+ * @param $lastmod Integer: timestamp of the last item in the recentchanges table
+ * @param $timekey String: memcached key of the last modification
+ * @param $key String: memcached key of the content
+ * @return feed's content on cache hit or false on cache miss
+ */
public function loadFromCache( $lastmod, $timekey, $key ) {
global $wgFeedCacheTimeout, $messageMemc;
$feedLastmod = $messageMemc->get( $timekey );
@@ -86,10 +128,10 @@ class ChangesFeed {
}
/**
- * Generate the feed items given a row from the database.
- * @param $rows Database resource with recentchanges rows
- * @param $feed Feed object
- */
+ * Generate the feed items given a row from the database.
+ * @param $rows DatabaseBase resource with recentchanges rows
+ * @param $feed Feed object
+ */
public static function generateFeed( $rows, &$feed ) {
wfProfileIn( __METHOD__ );
@@ -113,18 +155,20 @@ class ChangesFeed {
foreach( $sorted as $obj ) {
$title = Title::makeTitle( $obj->rc_namespace, $obj->rc_title );
$talkpage = $title->getTalkPage();
+ // Skip items with deleted content (avoids partially complete/inconsistent output)
+ if( $obj->rc_deleted ) continue;
$item = new FeedItem(
$title->getPrefixedText(),
FeedUtils::formatDiff( $obj ),
- $title->getFullURL( 'diff=' . $obj->rc_this_oldid . '&oldid=prev' ),
+ $obj->rc_this_oldid ? $title->getFullURL( 'diff=' . $obj->rc_this_oldid . '&oldid=prev' ) : $title->getFullURL(),
$obj->rc_timestamp,
($obj->rc_deleted & Revision::DELETED_USER) ? wfMsgHtml('rev-deleted-user') : $obj->rc_user_text,
$talkpage->getFullURL()
- );
+ );
$feed->outItem( $item );
}
$feed->outFooter();
wfProfileOut( __METHOD__ );
}
-} \ No newline at end of file
+}
diff --git a/includes/ChangesList.php b/includes/ChangesList.php
index 4eda1dbd..9f092991 100644
--- a/includes/ChangesList.php
+++ b/includes/ChangesList.php
@@ -25,13 +25,14 @@ class RCCacheEntry extends RecentChange {
class ChangesList {
# Called by history lists and recent changes
public $skin;
+ protected $watchlist = false;
/**
* Changeslist contructor
- * @param Skin $skin
+ * @param $skin Skin
*/
- public function __construct( &$skin ) {
- $this->skin =& $skin;
+ public function __construct( $skin ) {
+ $this->skin = $skin;
$this->preCacheMessages();
}
@@ -44,7 +45,7 @@ class ChangesList {
*/
public static function newFromUser( &$user ) {
$sk = $user->getSkin();
- $list = NULL;
+ $list = null;
if( wfRunHooks( 'FetchChangesList', array( &$user, &$sk, &$list ) ) ) {
return $user->getOption( 'usenewrc' ) ?
new EnhancedChangesList( $sk ) : new OldChangesList( $sk );
@@ -52,6 +53,14 @@ class ChangesList {
return $list;
}
}
+
+ /**
+ * Sets the list to use a <li class="watchlist-(namespace)-(page)"> tag
+ * @param $value Boolean
+ */
+ public function setWatchlistDivs( $value = true ) {
+ $this->watchlist = $value;
+ }
/**
* As we use the same small set of messages in various methods and that
@@ -59,8 +68,8 @@ class ChangesList {
*/
private function preCacheMessages() {
if( !isset( $this->message ) ) {
- foreach( explode(' ', 'cur diff hist minoreditletter newpageletter last '.
- 'blocklink history boteditletter semicolon-separator' ) as $msg ) {
+ foreach ( explode( ' ', 'cur diff hist last blocklink history ' .
+ 'semicolon-separator pipe-separator' ) as $msg ) {
$this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
}
}
@@ -69,26 +78,95 @@ class ChangesList {
/**
* Returns the appropriate flags for new page, minor change and patrolling
- * @param bool $new
- * @param bool $minor
- * @param bool $patrolled
- * @param string $nothing, string to use for empty space
- * @param bool $bot
- * @return string
+ * @param $new Boolean
+ * @param $minor Boolean
+ * @param $patrolled Boolean
+ * @param $nothing String to use for empty space
+ * @param $bot Boolean
+ * @return String
*/
protected function recentChangesFlags( $new, $minor, $patrolled, $nothing = '&nbsp;', $bot = false ) {
- $f = $new ?
- '<span class="newpage">' . $this->message['newpageletter'] . '</span>' : $nothing;
- $f .= $minor ?
- '<span class="minor">' . $this->message['minoreditletter'] . '</span>' : $nothing;
- $f .= $bot ? '<span class="bot">' . $this->message['boteditletter'] . '</span>' : $nothing;
- $f .= $patrolled ? '<span class="unpatrolled">!</span>' : $nothing;
+ $f = $new ? self::flag( 'newpage' ) : $nothing;
+ $f .= $minor ? self::flag( 'minor' ) : $nothing;
+ $f .= $bot ? self::flag( 'bot' ) : $nothing;
+ $f .= $patrolled ? self::flag( 'unpatrolled' ) : $nothing;
return $f;
}
/**
+ * Provide the <abbr> element appropriate to a given abbreviated flag,
+ * namely the flag indicating a new page, a minor edit, a bot edit, or an
+ * unpatrolled edit. By default in English it will contain "N", "m", "b",
+ * "!" respectively, plus it will have an appropriate title and class.
+ *
+ * @param $key String: 'newpage', 'unpatrolled', 'minor', or 'bot'
+ * @return String: Raw HTML
+ */
+ public static function flag( $key ) {
+ static $messages = null;
+ if ( is_null( $messages ) ) {
+ foreach ( explode( ' ', 'minoreditletter boteditletter newpageletter ' .
+ 'unpatrolledletter recentchanges-label-minor recentchanges-label-bot ' .
+ 'recentchanges-label-newpage recentchanges-label-unpatrolled' ) as $msg ) {
+ $messages[$msg] = wfMsgExt( $msg, 'escapenoentities' );
+ }
+ }
+ # Inconsistent naming, bleh
+ if ( $key == 'newpage' || $key == 'unpatrolled' ) {
+ $key2 = $key;
+ } else {
+ $key2 = $key . 'edit';
+ }
+ return "<abbr class=\"$key\" title=\""
+ . $messages["recentchanges-label-$key"] . "\">"
+ . $messages["${key2}letter"]
+ . '</abbr>';
+ }
+
+ /**
+ * Some explanatory wrapper text for the given flag, to be used in a legend
+ * explaining what the flags mean. For instance, "N - new page". See
+ * also flag().
+ *
+ * @param $key String: 'newpage', 'unpatrolled', 'minor', or 'bot'
+ * @return String: Raw HTML
+ */
+ private static function flagLine( $key ) {
+ return wfMsgExt( "recentchanges-legend-$key", array( 'escapenoentities',
+ 'replaceafter' ), self::flag( $key ) );
+ }
+
+ /**
+ * A handy legend to tell users what the little "m", "b", and so on mean.
+ *
+ * @return String: Raw HTML
+ */
+ public static function flagLegend() {
+ global $wgGroupPermissions, $wgLang;
+
+ $flags = array( self::flagLine( 'newpage' ),
+ self::flagLine( 'minor' ) );
+
+ # Don't show info on bot edits unless there's a bot group of some kind
+ foreach ( $wgGroupPermissions as $rights ) {
+ if ( isset( $rights['bot'] ) && $rights['bot'] ) {
+ $flags[] = self::flagLine( 'bot' );
+ break;
+ }
+ }
+
+ if ( self::usePatrol() ) {
+ $flags[] = self::flagLine( 'unpatrolled' );
+ }
+
+ return '<div class="mw-rc-label-legend">' .
+ wfMsgExt( 'recentchanges-label-legend', 'parseinline',
+ $wgLang->commaList( $flags ) ) . '</div>';
+ }
+
+ /**
* Returns text for the start of the tabular part of RC
- * @return string
+ * @return String
*/
public function beginRecentChangesList() {
$this->rc_cache = array();
@@ -101,14 +179,26 @@ class ChangesList {
/**
* Show formatted char difference
- * @param int $old bytes
- * @param int $new bytes
- * @returns string
+ * @param $old Integer: bytes
+ * @param $new Integer: bytes
+ * @returns String
*/
public static function showCharacterDifference( $old, $new ) {
- global $wgRCChangedSizeThreshold, $wgLang;
+ global $wgRCChangedSizeThreshold, $wgLang, $wgMiserMode;
$szdiff = $new - $old;
- $formatedSize = wfMsgExt( 'rc-change-size', array( 'parsemag', 'escape' ), $wgLang->formatNum( $szdiff ) );
+
+ $code = $wgLang->getCode();
+ static $fastCharDiff = array();
+ if ( !isset($fastCharDiff[$code]) ) {
+ $fastCharDiff[$code] = $wgMiserMode || wfMsgNoTrans( 'rc-change-size' ) === '$1';
+ }
+
+ $formatedSize = $wgLang->formatNum($szdiff);
+
+ if ( !$fastCharDiff[$code] ) {
+ $formatedSize = wfMsgExt( 'rc-change-size', array( 'parsemag', 'escape' ), $formatedSize );
+ }
+
if( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) {
$tag = 'strong';
} else {
@@ -125,7 +215,7 @@ class ChangesList {
/**
* Returns text for the end of RC
- * @return string
+ * @return String
*/
public function endRecentChangesList() {
if( $this->rclistOpen ) {
@@ -135,73 +225,130 @@ class ChangesList {
}
}
- protected function insertMove( &$s, $rc ) {
+ public function insertMove( &$s, $rc ) {
# Diff
$s .= '(' . $this->message['diff'] . ') (';
# Hist
- $s .= $this->skin->makeKnownLinkObj( $rc->getMovedToTitle(), $this->message['hist'],
- 'action=history' ) . ') . . ';
+ $s .= $this->skin->link(
+ $rc->getMovedToTitle(),
+ $this->message['hist'],
+ array(),
+ array( 'action' => 'history' ),
+ array( 'known', 'noclasses' )
+ ) . ') . . ';
# "[[x]] moved to [[y]]"
$msg = ( $rc->mAttribs['rc_type'] == RC_MOVE ) ? '1movedto2' : '1movedto2_redir';
- $s .= wfMsg( $msg, $this->skin->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' ),
- $this->skin->makeKnownLinkObj( $rc->getMovedToTitle(), '' ) );
+ $s .= wfMsg(
+ $msg,
+ $this->skin->link(
+ $rc->getTitle(),
+ null,
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ ),
+ $this->skin->link(
+ $rc->getMovedToTitle(),
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ )
+ );
}
- protected function insertDateHeader( &$s, $rc_timestamp ) {
+ public function insertDateHeader( &$s, $rc_timestamp ) {
global $wgLang;
# Make date header if necessary
$date = $wgLang->date( $rc_timestamp, true, true );
if( $date != $this->lastdate ) {
- if( '' != $this->lastdate ) {
+ if( $this->lastdate != '' ) {
$s .= "</ul>\n";
}
- $s .= '<h4>'.$date."</h4>\n<ul class=\"special\">";
+ $s .= Xml::element( 'h4', null, $date ) . "\n<ul class=\"special\">";
$this->lastdate = $date;
$this->rclistOpen = true;
}
}
- protected function insertLog( &$s, $title, $logtype ) {
+ public function insertLog( &$s, $title, $logtype ) {
$logname = LogPage::logName( $logtype );
- $s .= '(' . $this->skin->makeKnownLinkObj($title, $logname ) . ')';
+ $s .= '(' . $this->skin->link(
+ $title,
+ $logname,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . ')';
}
- protected function insertDiffHist( &$s, &$rc, $unpatrolled ) {
+ public function insertDiffHist( &$s, &$rc, $unpatrolled ) {
# Diff link
if( $rc->mAttribs['rc_type'] == RC_NEW || $rc->mAttribs['rc_type'] == RC_LOG ) {
$diffLink = $this->message['diff'];
- } else if( !$this->userCan($rc,Revision::DELETED_TEXT) ) {
+ } else if( !self::userCan($rc,Revision::DELETED_TEXT) ) {
$diffLink = $this->message['diff'];
} else {
- $rcidparam = $unpatrolled ? array( 'rcid' => $rc->mAttribs['rc_id'] ) : array();
- $diffLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['diff'],
- wfArrayToCGI( array(
- 'curid' => $rc->mAttribs['rc_cur_id'],
- 'diff' => $rc->mAttribs['rc_this_oldid'],
- 'oldid' => $rc->mAttribs['rc_last_oldid'] ),
- $rcidparam ),
- '', '', ' tabindex="'.$rc->counter.'"');
- }
- $s .= '('.$diffLink.') (';
+ $query = array(
+ 'curid' => $rc->mAttribs['rc_cur_id'],
+ 'diff' => $rc->mAttribs['rc_this_oldid'],
+ 'oldid' => $rc->mAttribs['rc_last_oldid']
+ );
+
+ if( $unpatrolled ) {
+ $query['rcid'] = $rc->mAttribs['rc_id'];
+ };
+
+ $diffLink = $this->skin->link(
+ $rc->getTitle(),
+ $this->message['diff'],
+ array( 'tabindex' => $rc->counter ),
+ $query,
+ array( 'known', 'noclasses' )
+ );
+ }
+ $s .= '(' . $diffLink . $this->message['pipe-separator'];
# History link
- $s .= $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['hist'],
- wfArrayToCGI( array(
+ $s .= $this->skin->link(
+ $rc->getTitle(),
+ $this->message['hist'],
+ array(),
+ array(
'curid' => $rc->mAttribs['rc_cur_id'],
- 'action' => 'history' ) ) );
+ 'action' => 'history'
+ ),
+ array( 'known', 'noclasses' )
+ );
$s .= ') . . ';
}
- protected function insertArticleLink( &$s, &$rc, $unpatrolled, $watched ) {
+ public function insertArticleLink( &$s, &$rc, $unpatrolled, $watched ) {
global $wgContLang;
# If it's a new article, there is no diff link, but if it hasn't been
# patrolled yet, we need to give users a way to do so
- $params = ( $unpatrolled && $rc->mAttribs['rc_type'] == RC_NEW ) ?
- 'rcid='.$rc->mAttribs['rc_id'] : '';
+ $params = array();
+
+ if ( $unpatrolled && $rc->mAttribs['rc_type'] == RC_NEW ) {
+ $params['rcid'] = $rc->mAttribs['rc_id'];
+ }
+
if( $this->isDeleted($rc,Revision::DELETED_TEXT) ) {
- $articlelink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '', $params );
- $articlelink = '<span class="history-deleted">'.$articlelink.'</span>';
+ $articlelink = $this->skin->link(
+ $rc->getTitle(),
+ null,
+ array(),
+ $params,
+ array( 'known', 'noclasses' )
+ );
+ $articlelink = '<span class="history-deleted">' . $articlelink . '</span>';
} else {
- $articlelink = ' '. $this->skin->makeKnownLinkObj( $rc->getTitle(), '', $params );
+ $articlelink = ' '. $this->skin->link(
+ $rc->getTitle(),
+ null,
+ array(),
+ $params,
+ array( 'known', 'noclasses' )
+ );
}
# Bolden pages watched by this user
if( $watched ) {
@@ -216,7 +363,7 @@ class ChangesList {
$s .= " $articlelink";
}
- protected function insertTimestamp( &$s, $rc ) {
+ public function insertTimestamp( &$s, $rc ) {
global $wgLang;
$s .= $this->message['semicolon-separator'] .
$wgLang->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
@@ -233,7 +380,7 @@ class ChangesList {
}
/** insert a formatted action */
- protected function insertAction( &$s, &$rc ) {
+ public function insertAction( &$s, &$rc ) {
if( $rc->mAttribs['rc_type'] == RC_LOG ) {
if( $this->isDeleted( $rc, LogPage::DELETED_ACTION ) ) {
$s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-event' ) . '</span>';
@@ -245,7 +392,7 @@ class ChangesList {
}
/** insert a formatted comment */
- protected function insertComment( &$s, &$rc ) {
+ public function insertComment( &$s, &$rc ) {
if( $rc->mAttribs['rc_type'] != RC_MOVE && $rc->mAttribs['rc_type'] != RC_MOVE_OVER_REDIRECT ) {
if( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) {
$s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
@@ -257,7 +404,7 @@ class ChangesList {
/**
* Check whether to enable recent changes patrol features
- * @return bool
+ * @return Boolean
*/
public static function usePatrol() {
global $wgUser;
@@ -283,9 +430,9 @@ class ChangesList {
/**
* Determine if said field of a revision is hidden
- * @param RCCacheEntry $rc
- * @param int $field one of DELETED_* bitfield constants
- * @return bool
+ * @param $rc RCCacheEntry
+ * @param $field Integer: one of DELETED_* bitfield constants
+ * @return Boolean
*/
public static function isDeleted( $rc, $field ) {
return ( $rc->mAttribs['rc_deleted'] & $field ) == $field;
@@ -294,24 +441,19 @@ class ChangesList {
/**
* Determine if the current user is allowed to view a particular
* field of this revision, if it's marked as deleted.
- * @param RCCacheEntry $rc
- * @param int $field
- * @return bool
+ * @param $rc RCCacheEntry
+ * @param $field Integer
+ * @return Boolean
*/
public static function userCan( $rc, $field ) {
- if( ( $rc->mAttribs['rc_deleted'] & $field ) == $field ) {
- global $wgUser;
- $permission = ( $rc->mAttribs['rc_deleted'] & Revision::DELETED_RESTRICTED ) == Revision::DELETED_RESTRICTED
- ? 'suppressrevision'
- : 'deleterevision';
- wfDebug( "Checking for $permission due to $field match on {$rc->mAttribs['rc_deleted']}\n" );
- return $wgUser->isAllowed( $permission );
+ if( $rc->mAttribs['rc_type'] == RC_LOG ) {
+ return LogEventsList::userCanBitfield( $rc->mAttribs['rc_deleted'], $field );
} else {
- return true;
+ return Revision::userCanBitfield( $rc->mAttribs['rc_deleted'], $field );
}
}
- protected function maybeWatchedLink( $link, $watched=false ) {
+ protected function maybeWatchedLink( $link, $watched = false ) {
if( $watched ) {
return '<strong class="mw-watched">' . $link . '</strong>';
} else {
@@ -320,7 +462,7 @@ class ChangesList {
}
/** Inserts a rollback link */
- protected function insertRollback( &$s, &$rc ) {
+ public function insertRollback( &$s, &$rc ) {
global $wgUser;
if( !$rc->mAttribs['rc_new'] && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) {
$page = $rc->getTitle();
@@ -340,7 +482,7 @@ class ChangesList {
}
}
- protected function insertTags( &$s, &$rc, &$classes ) {
+ public function insertTags( &$s, &$rc, &$classes ) {
if ( empty($rc->mAttribs['ts_tags']) )
return;
@@ -349,7 +491,7 @@ class ChangesList {
$s .= ' ' . $tagSummary;
}
- protected function insertExtra( &$s, &$rc, &$classes ) {
+ public function insertExtra( &$s, &$rc, &$classes ) {
## Empty, used for subclassers to add anything special.
}
}
@@ -362,8 +504,8 @@ class OldChangesList extends ChangesList {
/**
* Format a line using the old system (aka without any javascript).
*/
- public function recentChangesLine( &$rc, $watched = false, $linenumber = NULL ) {
- global $wgContLang, $wgLang, $wgRCShowChangedSize, $wgUser;
+ public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
+ global $wgLang, $wgRCShowChangedSize, $wgUser;
wfProfileIn( __METHOD__ );
# Should patrol-related stuff be shown?
$unpatrolled = $wgUser->useRCPatrol() && !$rc->mAttribs['rc_patrolled'];
@@ -426,20 +568,20 @@ class OldChangesList extends ChangesList {
# For subclasses
$this->insertExtra( $s, $rc, $classes );
- # Mark revision as deleted if so
- if( !$rc->mAttribs['rc_log_type'] && $this->isDeleted($rc,Revision::DELETED_TEXT) ) {
- $s .= ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- }
# How many users watch this page
if( $rc->numberofWatchingusers > 0 ) {
$s .= ' ' . wfMsgExt( 'number_of_watching_users_RCview',
array( 'parsemag', 'escape' ), $wgLang->formatNum( $rc->numberofWatchingusers ) );
}
-
+
+ if( $this->watchlist ) {
+ $classes[] = Sanitizer::escapeClass( 'watchlist-'.$rc->mAttribs['rc_namespace'].'-'.$rc->mAttribs['rc_title'] );
+ }
+
wfRunHooks( 'OldChangesListRecentChangesLine', array(&$this, &$s, $rc) );
wfProfileOut( __METHOD__ );
- return "$dateheader<li class=\"".implode( ' ', $classes )."\">$s</li>\n";
+ return "$dateheader<li class=\"".implode( ' ', $classes )."\">".$s."</li>\n";
}
}
@@ -449,26 +591,24 @@ class OldChangesList extends ChangesList {
*/
class EnhancedChangesList extends ChangesList {
/**
- * Add the JavaScript file for enhanced changeslist
- * @ return string
- */
+ * Add the JavaScript file for enhanced changeslist
+ * @return String
+ */
public function beginRecentChangesList() {
- global $wgStylePath, $wgJsMimeType, $wgStyleVersion;
+ global $wgStylePath, $wgStyleVersion;
$this->rc_cache = array();
$this->rcMoveIndex = 0;
$this->rcCacheIndex = 0;
$this->lastdate = '';
$this->rclistOpen = false;
- $script = Xml::tags( 'script', array(
- 'type' => $wgJsMimeType,
- 'src' => $wgStylePath . "/common/enhancedchanges.js?$wgStyleVersion" ), '' );
+ $script = Html::linkedScript( $wgStylePath . "/common/enhancedchanges.js?$wgStyleVersion" );
return $script;
}
/**
* Format a line for enhanced recentchange (aka with javascript and block of lines).
*/
public function recentChangesLine( &$baseRC, $watched = false ) {
- global $wgLang, $wgContLang, $wgUser;
+ global $wgLang, $wgUser;
wfProfileIn( __METHOD__ );
@@ -479,7 +619,7 @@ class EnhancedChangesList extends ChangesList {
// FIXME: Would be good to replace this extract() call with something
// that explicitly initializes variables.
extract( $rc->mAttribs );
- $curIdEq = 'curid=' . $rc_cur_id;
+ $curIdEq = array( 'curid' => $rc_cur_id );
# If it's a new day, add the headline and flush the cache
$date = $wgLang->date( $rc_timestamp, true );
@@ -488,7 +628,7 @@ class EnhancedChangesList extends ChangesList {
# Process current cache
$ret = $this->recentChangesBlock();
$this->rc_cache = array();
- $ret .= "<h4>{$date}</h4>\n";
+ $ret .= Xml::element( 'h4', null, $date );
$this->lastdate = $date;
}
@@ -504,19 +644,21 @@ class EnhancedChangesList extends ChangesList {
// Page moves
if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
$msg = ( $rc_type == RC_MOVE ) ? "1movedto2" : "1movedto2_redir";
- $clink = wfMsg( $msg, $this->skin->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' ),
- $this->skin->makeKnownLinkObj( $rc->getMovedToTitle(), '' ) );
+ $clink = wfMsg( $msg, $this->skin->linkKnown( $rc->getTitle(), null,
+ array(), array( 'redirect' => 'no' ) ),
+ $this->skin->linkKnown( $rc->getMovedToTitle() ) );
// New unpatrolled pages
} else if( $rc->unpatrolled && $rc_type == RC_NEW ) {
- $clink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '', "rcid={$rc_id}" );
+ $clink = $this->skin->linkKnown( $rc->getTitle(), null, array(),
+ array( 'rcid' => $rc_id ) );
// Log entries
} else if( $rc_type == RC_LOG ) {
if( $rc_log_type ) {
$logtitle = SpecialPage::getTitleFor( 'Log', $rc_log_type );
- $clink = '(' . $this->skin->makeKnownLinkObj( $logtitle,
+ $clink = '(' . $this->skin->linkKnown( $logtitle,
LogPage::logName($rc_log_type) ) . ')';
} else {
- $clink = $this->skin->makeLinkObj( $rc->getTitle(), '' );
+ $clink = $this->skin->link( $rc->getTitle() );
}
$watched = false;
// Log entries (old format) and special pages
@@ -525,14 +667,14 @@ class EnhancedChangesList extends ChangesList {
if ( $specialName == 'Log' ) {
# Log updates, etc
$logname = LogPage::logName( $logtype );
- $clink = '(' . $this->skin->makeKnownLinkObj( $rc->getTitle(), $logname ) . ')';
+ $clink = '(' . $this->skin->linkKnown( $rc->getTitle(), $logname ) . ')';
} else {
wfDebug( "Unexpected special page in recentchanges\n" );
$clink = '';
}
// Edits
} else {
- $clink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '' );
+ $clink = $this->skin->linkKnown( $rc->getTitle() );
}
# Don't show unusable diff links
@@ -540,44 +682,49 @@ class EnhancedChangesList extends ChangesList {
$showdifflinks = false;
}
- $time = $wgContLang->time( $rc_timestamp, true, true );
+ $time = $wgLang->time( $rc_timestamp, true, true );
$rc->watched = $watched;
$rc->link = $clink;
$rc->timestamp = $time;
$rc->numberofWatchingusers = $baseRC->numberofWatchingusers;
- # Make "cur" and "diff" links
+ # Make "cur" and "diff" links. Do not use link(), it is too slow if
+ # called too many times (50% of CPU time on RecentChanges!).
if( $rc->unpatrolled ) {
- $rcIdQuery = "&rcid={$rc_id}";
+ $rcIdQuery = array( 'rcid' => $rc_id );
} else {
- $rcIdQuery = '';
+ $rcIdQuery = array();
}
- $querycur = $curIdEq."&diff=0&oldid=$rc_this_oldid";
- $querydiff = $curIdEq."&diff=$rc_this_oldid&oldid=$rc_last_oldid$rcIdQuery";
- $aprops = ' tabindex="'.$baseRC->counter.'"';
- $curLink = $this->skin->makeKnownLinkObj( $rc->getTitle(),
- $this->message['cur'], $querycur, '' ,'', $aprops );
+ $querycur = $curIdEq + array( 'diff' => '0', 'oldid' => $rc_this_oldid );
+ $querydiff = $curIdEq + array( 'diff' => $rc_this_oldid, 'oldid' =>
+ $rc_last_oldid ) + $rcIdQuery;
- # Make "diff" an "cur" links
if( !$showdifflinks ) {
- $curLink = $this->message['cur'];
- $diffLink = $this->message['diff'];
+ $curLink = $this->message['cur'];
+ $diffLink = $this->message['diff'];
} else if( in_array( $rc_type, array(RC_NEW,RC_LOG,RC_MOVE,RC_MOVE_OVER_REDIRECT) ) ) {
- $curLink = ($rc_type != RC_NEW) ? $this->message['cur'] : $curLink;
+ if ( $rc_type != RC_NEW ) {
+ $curLink = $this->message['cur'];
+ } else {
+ $curUrl = htmlspecialchars( $rc->getTitle()->getLinkUrl( $querycur ) );
+ $curLink = "<a href=\"$curUrl\" tabindex=\"{$baseRC->counter}\">{$this->message['cur']}</a>";
+ }
$diffLink = $this->message['diff'];
} else {
- $diffLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['diff'],
- $querydiff, '' ,'', $aprops );
+ $diffUrl = htmlspecialchars( $rc->getTitle()->getLinkUrl( $querydiff ) );
+ $curUrl = htmlspecialchars( $rc->getTitle()->getLinkUrl( $querycur ) );
+ $diffLink = "<a href=\"$diffUrl\" tabindex=\"{$baseRC->counter}\">{$this->message['diff']}</a>";
+ $curLink = "<a href=\"$curUrl\" tabindex=\"{$baseRC->counter}\">{$this->message['cur']}</a>";
}
# Make "last" link
if( !$showdifflinks || !$rc_last_oldid ) {
- $lastLink = $this->message['last'];
+ $lastLink = $this->message['last'];
} else if( $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
$lastLink = $this->message['last'];
} else {
- $lastLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['last'],
- $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid . $rcIdQuery );
+ $lastLink = $this->skin->linkKnown( $rc->getTitle(), $this->message['last'],
+ array(), $curIdEq + array('diff' => $rc_this_oldid, 'oldid' => $rc_last_oldid) + $rcIdQuery );
}
# Make user links
@@ -624,7 +771,7 @@ class EnhancedChangesList extends ChangesList {
wfProfileIn( __METHOD__ );
- $r = '<table cellpadding="0" cellspacing="0" border="0" style="background: none"><tr>';
+ $r = '<table class="mw-enhanced-rc"><tr>';
# Collate list of users
$userlinks = array();
@@ -694,13 +841,13 @@ class EnhancedChangesList extends ChangesList {
$tl = "<span id='mw-rc-openarrow-$jsid' class='mw-changeslist-expanded' style='visibility:hidden'><a href='#' $toggleLink title='$expandTitle'>" . $this->sideArrow() . "</a></span>";
$tl .= "<span id='mw-rc-closearrow-$jsid' class='mw-changeslist-hidden' style='display:none'><a href='#' $toggleLink title='$closeTitle'>" . $this->downArrow() . "</a></span>";
- $r .= '<td valign="top" style="white-space: nowrap"><tt>'.$tl.'&nbsp;';
+ $r .= '<td class="mw-enhanced-rc">'.$tl.'&nbsp;';
# Main line
$r .= $this->recentChangesFlags( $isnew, false, $unpatrolled, '&nbsp;', $bot );
# Timestamp
- $r .= '&nbsp;'.$block[0]->timestamp.'&nbsp;</tt></td><td>';
+ $r .= '&nbsp;'.$block[0]->timestamp.'&nbsp;</td><td style="padding:0px;">';
# Article link
if( $namehidden ) {
@@ -713,7 +860,7 @@ class EnhancedChangesList extends ChangesList {
$r .= $wgContLang->getDirMark();
- $curIdEq = 'curid=' . $curId;
+ $queryParams['curid'] = $curId;
# Changes message
$n = count($block);
static $nchanges = array();
@@ -729,8 +876,17 @@ class EnhancedChangesList extends ChangesList {
} else if( $isnew ) {
$r .= $nchanges[$n];
} else {
- $r .= $this->skin->makeKnownLinkObj( $block[0]->getTitle(),
- $nchanges[$n], $curIdEq."&diff=$currentRevision&oldid=$oldid" );
+ $params = $queryParams;
+ $params['diff'] = $currentRevision;
+ $params['oldid'] = $oldid;
+
+ $r .= $this->skin->link(
+ $block[0]->getTitle(),
+ $nchanges[$n],
+ array(),
+ $params,
+ array( 'known', 'noclasses' )
+ );
}
}
@@ -738,10 +894,19 @@ class EnhancedChangesList extends ChangesList {
if( $allLogs ) {
// don't show history link for logs
} else if( $namehidden || !$block[0]->getTitle()->exists() ) {
- $r .= $this->message['semicolon-separator'] . $this->message['hist'] . ')';
+ $r .= $this->message['pipe-separator'] . $this->message['hist'] . ')';
} else {
- $r .= $this->message['semicolon-separator'] . $this->skin->makeKnownLinkObj( $block[0]->getTitle(),
- $this->message['hist'], $curIdEq . '&action=history' ) . ')';
+ $params = $queryParams;
+ $params['action'] = 'history';
+
+ $r .= $this->message['pipe-separator'] .
+ $this->skin->link(
+ $block[0]->getTitle(),
+ $this->message['hist'],
+ array(),
+ $params,
+ array( 'known', 'noclasses' )
+ ) . ')';
}
$r .= ' . . ';
@@ -750,10 +915,10 @@ class EnhancedChangesList extends ChangesList {
$last = 0;
$first = count($block) - 1;
# Some events (like logs) have an "empty" size, so we need to skip those...
- while( $last < $first && $block[$last]->mAttribs['rc_new_len'] === NULL ) {
+ while( $last < $first && $block[$last]->mAttribs['rc_new_len'] === null ) {
$last++;
}
- while( $first > $last && $block[$first]->mAttribs['rc_old_len'] === NULL ) {
+ while( $first > $last && $block[$first]->mAttribs['rc_old_len'] === null ) {
$first--;
}
# Get net change
@@ -774,7 +939,7 @@ class EnhancedChangesList extends ChangesList {
# Sub-entries
$r .= '<div id="mw-rc-subentries-'.$jsid.'" class="mw-changeslist-hidden">';
- $r .= '<table cellpadding="0" cellspacing="0" border="0" style="background: none">';
+ $r .= '<table class="mw-enhanced-rc">';
foreach( $block as $rcObj ) {
# Extract fields from DB into the function scope (rc_xxxx variables)
// FIXME: Would be good to replace this extract() call with something
@@ -784,35 +949,44 @@ class EnhancedChangesList extends ChangesList {
extract( $rcObj->mAttribs );
#$r .= '<tr><td valign="top">'.$this->spacerArrow();
- $r .= '<tr><td valign="top">';
- $r .= '<tt>'.$this->spacerIndent() . $this->spacerIndent();
+ $r .= '<tr><td style="vertical-align:top;font-family:monospace; padding:0px;">';
+ $r .= $this->spacerIndent() . $this->spacerIndent();
$r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );
- $r .= '&nbsp;</tt></td><td valign="top">';
+ $r .= '&nbsp;</td><td style="vertical-align:top; padding:0px;"><span style="font-family:monospace">';
+
+ $params = $queryParams;
- $o = '';
if( $rc_this_oldid != 0 ) {
- $o = 'oldid='.$rc_this_oldid;
+ $params['oldid'] = $rc_this_oldid;
}
+
# Log timestamp
if( $rc_type == RC_LOG ) {
- $link = '<tt>'.$rcObj->timestamp.'</tt> ';
+ $link = $rcObj->timestamp;
# Revision link
} else if( !ChangesList::userCan($rcObj,Revision::DELETED_TEXT) ) {
- $link = '<span class="history-deleted"><tt>'.$rcObj->timestamp.'</tt></span> ';
+ $link = '<span class="history-deleted">'.$rcObj->timestamp.'</span> ';
} else {
- $rcIdEq = ($rcObj->unpatrolled && $rc_type == RC_NEW) ?
- '&rcid='.$rcObj->mAttribs['rc_id'] : '';
- $link = '<tt>'.$this->skin->makeKnownLinkObj( $rcObj->getTitle(),
- $rcObj->timestamp, $curIdEq.'&'.$o.$rcIdEq ).'</tt>';
+ if ( $rcObj->unpatrolled && $rc_type == RC_NEW) {
+ $params['rcid'] = $rcObj->mAttribs['rc_id'];
+ }
+
+ $link = $this->skin->link(
+ $rcObj->getTitle(),
+ $rcObj->timestamp,
+ array(),
+ $params,
+ array( 'known', 'noclasses' )
+ );
if( $this->isDeleted($rcObj,Revision::DELETED_TEXT) )
$link = '<span class="history-deleted">'.$link.'</span> ';
}
- $r .= $link;
+ $r .= $link . '</span>';
if ( !$rc_type == RC_LOG || $rc_type == RC_NEW ) {
$r .= ' (';
$r .= $rcObj->curlink;
- $r .= $this->message['semicolon-separator'];
+ $r .= $this->message['pipe-separator'];
$r .= $rcObj->lastlink;
$r .= ')';
}
@@ -833,11 +1007,6 @@ class EnhancedChangesList extends ChangesList {
$this->insertRollback( $r, $rcObj );
# Tags
$this->insertTags( $r, $rcObj, $classes );
-
- # Mark revision as deleted
- if( !$rc_log_type && $this->isDeleted($rcObj,Revision::DELETED_TEXT) ) {
- $r .= ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- }
$r .= "</td></tr>\n";
}
@@ -852,10 +1021,10 @@ class EnhancedChangesList extends ChangesList {
/**
* Generate HTML for an arrow or placeholder graphic
- * @param string $dir one of '', 'd', 'l', 'r'
- * @param string $alt text
- * @param string $title text
- * @return string HTML <img> tag
+ * @param $dir String: one of '', 'd', 'l', 'r'
+ * @param $alt String: text
+ * @param $title String: text
+ * @return String: HTML <img> tag
*/
protected function arrow( $dir, $alt='', $title='' ) {
global $wgStylePath;
@@ -868,7 +1037,7 @@ class EnhancedChangesList extends ChangesList {
/**
* Generate HTML for a right- or left-facing arrow,
* depending on language direction.
- * @return string HTML <img> tag
+ * @return String: HTML <img> tag
*/
protected function sideArrow() {
global $wgContLang;
@@ -879,7 +1048,7 @@ class EnhancedChangesList extends ChangesList {
/**
* Generate HTML for a down-facing arrow
* depending on language direction.
- * @return string HTML <img> tag
+ * @return String: HTML <img> tag
*/
protected function downArrow() {
return $this->arrow( 'd', '-', wfMsg( 'rc-enhanced-hide' ) );
@@ -887,7 +1056,7 @@ class EnhancedChangesList extends ChangesList {
/**
* Generate HTML for a spacer image
- * @return string HTML <img> tag
+ * @return String: HTML <img> tag
*/
protected function spacerArrow() {
return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space
@@ -895,7 +1064,7 @@ class EnhancedChangesList extends ChangesList {
/**
* Add a set of spaces
- * @return string HTML <td> tag
+ * @return String: HTML <td> tag
*/
protected function spacerIndent() {
return '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
@@ -903,10 +1072,10 @@ class EnhancedChangesList extends ChangesList {
/**
* Enhanced RC ungrouped line.
- * @return string a HTML formated line (generated using $r)
+ * @return String: a HTML formated line (generated using $r)
*/
protected function recentChangesBlockLine( $rcObj ) {
- global $wgContLang, $wgRCShowChangedSize;
+ global $wgRCShowChangedSize;
wfProfileIn( __METHOD__ );
@@ -915,30 +1084,42 @@ class EnhancedChangesList extends ChangesList {
// that explicitly initializes variables.
$classes = array(); // TODO implement
extract( $rcObj->mAttribs );
- $curIdEq = "curid={$rc_cur_id}";
+ $query['curid'] = $rc_cur_id;
- $r = '<table cellspacing="0" cellpadding="0" border="0" style="background: none"><tr>';
- $r .= '<td valign="top" style="white-space: nowrap"><tt>' . $this->spacerArrow() . '&nbsp;';
+ $r = '<table class="mw-enhanced-rc"><tr>';
+ $r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow() . '&nbsp;';
# Flag and Timestamp
if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
$r .= '&nbsp;&nbsp;&nbsp;&nbsp;'; // 4 flags -> 4 spaces
} else {
$r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );
}
- $r .= '&nbsp;'.$rcObj->timestamp.'&nbsp;</tt></td><td>';
+ $r .= '&nbsp;'.$rcObj->timestamp.'&nbsp;</td><td style="padding:0px;">';
# Article or log link
if( $rc_log_type ) {
$logtitle = Title::newFromText( "Log/$rc_log_type", NS_SPECIAL );
$logname = LogPage::logName( $rc_log_type );
- $r .= '(' . $this->skin->makeKnownLinkObj($logtitle, $logname ) . ')';
+ $r .= '(' . $this->skin->link(
+ $logtitle,
+ $logname,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . ')';
} else {
$this->insertArticleLink( $r, $rcObj, $rcObj->unpatrolled, $rcObj->watched );
}
# Diff and hist links
if ( $rc_type != RC_LOG ) {
- $r .= ' ('. $rcObj->difflink . $this->message['semicolon-separator'];
- $r .= $this->skin->makeKnownLinkObj( $rcObj->getTitle(), $this->message['hist'],
- $curIdEq.'&action=history' ) . ')';
+ $r .= ' ('. $rcObj->difflink . $this->message['pipe-separator'];
+ $query['action'] = 'history';
+ $r .= $this->skin->link(
+ $rcObj->getTitle(),
+ $this->message['hist'],
+ array(),
+ $query,
+ array( 'known', 'noclasses' )
+ ) . ')';
}
$r .= ' . . ';
# Character diff
diff --git a/includes/ConfEditor.php b/includes/ConfEditor.php
new file mode 100644
index 00000000..f862ebb7
--- /dev/null
+++ b/includes/ConfEditor.php
@@ -0,0 +1,1058 @@
+<?php
+
+/**
+ * This is a state machine style parser with two internal stacks:
+ * * A next state stack, which determines the state the machine will progress to next
+ * * A path stack, which keeps track of the logical location in the file.
+ *
+ * Reference grammar:
+ *
+ * file = T_OPEN_TAG *statement
+ * statement = T_VARIABLE "=" expression ";"
+ * expression = array / scalar / T_VARIABLE
+ * array = T_ARRAY "(" [ element *( "," element ) [ "," ] ] ")"
+ * element = assoc-element / expression
+ * assoc-element = scalar T_DOUBLE_ARROW expression
+ * scalar = T_LNUMBER / T_DNUMBER / T_STRING / T_CONSTANT_ENCAPSED_STRING
+ */
+class ConfEditor {
+ /** The text to parse */
+ var $text;
+
+ /** The token array from token_get_all() */
+ var $tokens;
+
+ /** The current position in the token array */
+ var $pos;
+
+ /** The current 1-based line number */
+ var $lineNum;
+
+ /** The current 1-based column number */
+ var $colNum;
+
+ /** The current 0-based byte number */
+ var $byteNum;
+
+ /** The current ConfEditorToken object */
+ var $currentToken;
+
+ /** The previous ConfEditorToken object */
+ var $prevToken;
+
+ /**
+ * The state machine stack. This is an array of strings where the topmost
+ * element will be popped off and become the next parser state.
+ */
+ var $stateStack;
+
+
+ /**
+ * The path stack is a stack of associative arrays with the following elements:
+ * name The name of top level of the path
+ * level The level (number of elements) of the path
+ * startByte The byte offset of the start of the path
+ * startToken The token offset of the start
+ * endByte The byte offset of thee
+ * endToken The token offset of the end, plus one
+ * valueStartToken The start token offset of the value part
+ * valueStartByte The start byte offset of the value part
+ * valueEndToken The end token offset of the value part, plus one
+ * valueEndByte The end byte offset of the value part, plus one
+ * nextArrayIndex The next numeric array index at this level
+ * hasComma True if the array element ends with a comma
+ * arrowByte The byte offset of the "=>", or false if there isn't one
+ */
+ var $pathStack;
+
+ /**
+ * The elements of the top of the pathStack for every path encountered, indexed
+ * by slash-separated path.
+ */
+ var $pathInfo;
+
+ /**
+ * Next serial number for whitespace placeholder paths (@extra-N)
+ */
+ var $serial;
+
+ /**
+ * Editor state. This consists of the internal copy/insert operations which
+ * are applied to the source string to obtain the destination string.
+ */
+ var $edits;
+
+ /**
+ * Simple entry point for command-line testing
+ */
+ static function test( $text ) {
+ try {
+ $ce = new self( $text );
+ $ce->parse();
+ } catch ( ConfEditorParseError $e ) {
+ return $e->getMessage() . "\n" . $e->highlight( $text );
+ }
+ return "OK";
+ }
+
+ /**
+ * Construct a new parser
+ */
+ public function __construct( $text ) {
+ $this->text = $text;
+ }
+
+ /**
+ * Edit the text. Returns the edited text.
+ * @param array $ops Array of operations.
+ *
+ * Operations are given as an associative array, with members:
+ * type: One of delete, set, append or insert (required)
+ * path: The path to operate on (required)
+ * key: The array key to insert/append, with PHP quotes
+ * value: The value, with PHP quotes
+ *
+ * delete
+ * Deletes an array element or statement with the specified path.
+ * e.g.
+ * array('type' => 'delete', 'path' => '$foo/bar/baz' )
+ * is equivalent to the runtime PHP code:
+ * unset( $foo['bar']['baz'] );
+ *
+ * set
+ * Sets the value of an array element. If the element doesn't exist, it
+ * is appended to the array. If it does exist, the value is set, with
+ * comments and indenting preserved.
+ *
+ * append
+ * Appends a new element to the end of the array. Adds a trailing comma.
+ * e.g.
+ * array( 'type' => 'append', 'path', '$foo/bar',
+ * 'key' => 'baz', 'value' => "'x'" )
+ * is like the PHP code:
+ * $foo['bar']['baz'] = 'x';
+ *
+ * insert
+ * Insert a new element at the start of the array.
+ *
+ */
+ public function edit( $ops ) {
+ $this->parse();
+
+ $this->edits = array(
+ array( 'copy', 0, strlen( $this->text ) )
+ );
+ foreach ( $ops as $op ) {
+ $type = $op['type'];
+ $path = $op['path'];
+ $value = isset( $op['value'] ) ? $op['value'] : null;
+ $key = isset( $op['key'] ) ? $op['key'] : null;
+
+ switch ( $type ) {
+ case 'delete':
+ list( $start, $end ) = $this->findDeletionRegion( $path );
+ $this->replaceSourceRegion( $start, $end, false );
+ break;
+ case 'set':
+ if ( isset( $this->pathInfo[$path] ) ) {
+ list( $start, $end ) = $this->findValueRegion( $path );
+ $encValue = $value; // var_export( $value, true );
+ $this->replaceSourceRegion( $start, $end, $encValue );
+ break;
+ }
+ // No existing path, fall through to append
+ $slashPos = strrpos( $path, '/' );
+ $key = var_export( substr( $path, $slashPos + 1 ), true );
+ $path = substr( $path, 0, $slashPos );
+ // Fall through
+ case 'append':
+ // Find the last array element
+ $lastEltPath = $this->findLastArrayElement( $path );
+ if ( $lastEltPath === false ) {
+ throw new MWException( "Can't find any element of array \"$path\"" );
+ }
+ $lastEltInfo = $this->pathInfo[$lastEltPath];
+
+ // Has it got a comma already?
+ if ( strpos( $lastEltPath, '@extra' ) === false && !$lastEltInfo['hasComma'] ) {
+ // No comma, insert one after the value region
+ list( $start, $end ) = $this->findValueRegion( $lastEltPath );
+ $this->replaceSourceRegion( $end - 1, $end - 1, ',' );
+ }
+
+ // Make the text to insert
+ list( $start, $end ) = $this->findDeletionRegion( $lastEltPath );
+
+ if ( $key === null ) {
+ list( $indent, $arrowIndent ) = $this->getIndent( $start );
+ $textToInsert = "$indent$value,";
+ } else {
+ list( $indent, $arrowIndent ) =
+ $this->getIndent( $start, $key, $lastEltInfo['arrowByte'] );
+ $textToInsert = "$indent$key$arrowIndent=> $value,";
+ }
+ $textToInsert .= ( $indent === false ? ' ' : "\n" );
+
+ // Insert the item
+ $this->replaceSourceRegion( $end, $end, $textToInsert );
+ break;
+ case 'insert':
+ // Find first array element
+ $firstEltPath = $this->findFirstArrayElement( $path );
+ if ( $firstEltPath === false ) {
+ throw new MWException( "Can't find array element of \"$path\"" );
+ }
+ list( $start, $end ) = $this->findDeletionRegion( $firstEltPath );
+ $info = $this->pathInfo[$firstEltPath];
+
+ // Make the text to insert
+ if ( $key === null ) {
+ list( $indent, $arrowIndent ) = $this->getIndent( $start );
+ $textToInsert = "$indent$value,";
+ } else {
+ list( $indent, $arrowIndent ) =
+ $this->getIndent( $start, $key, $info['arrowByte'] );
+ $textToInsert = "$indent$key$arrowIndent=> $value,";
+ }
+ $textToInsert .= ( $indent === false ? ' ' : "\n" );
+
+ // Insert the item
+ $this->replaceSourceRegion( $start, $start, $textToInsert );
+ break;
+ default:
+ throw new MWException( "Unrecognised operation: \"$type\"" );
+ }
+ }
+
+ // Do the edits
+ $out = '';
+ foreach ( $this->edits as $edit ) {
+ if ( $edit[0] == 'copy' ) {
+ $out .= substr( $this->text, $edit[1], $edit[2] - $edit[1] );
+ } else { // if ( $edit[0] == 'insert' )
+ $out .= $edit[1];
+ }
+ }
+
+ // Do a second parse as a sanity check
+ $this->text = $out;
+ try {
+ $this->parse();
+ } catch ( ConfEditorParseError $e ) {
+ throw new MWException(
+ "Sorry, ConfEditor broke the file during editing and it won't parse anymore: " .
+ $e->getMessage() );
+ }
+ return $out;
+ }
+
+ /**
+ * Get the variables defined in the text
+ * @return array( varname => value )
+ */
+ function getVars() {
+ $vars = array();
+ $this->parse();
+ foreach( $this->pathInfo as $path => $data ) {
+ if ( $path[0] != '$' )
+ continue;
+ $trimmedPath = substr( $path, 1 );
+ $name = $data['name'];
+ if ( $name[0] == '@' )
+ continue;
+ if ( $name[0] == '$' )
+ $name = substr( $name, 1 );
+ $parentPath = substr( $trimmedPath, 0,
+ strlen( $trimmedPath ) - strlen( $name ) );
+ if( substr( $parentPath, -1 ) == '/' )
+ $parentPath = substr( $parentPath, 0, -1 );
+
+ $value = substr( $this->text, $data['valueStartByte'],
+ $data['valueEndByte'] - $data['valueStartByte']
+ );
+ $this->setVar( $vars, $parentPath, $name,
+ $this->parseScalar( $value ) );
+ }
+ return $vars;
+ }
+
+ /**
+ * Set a value in an array, unless it's set already. For instance,
+ * setVar( $arr, 'foo/bar', 'baz', 3 ); will set
+ * $arr['foo']['bar']['baz'] = 3;
+ * @param $array array
+ * @param $path string slash-delimited path
+ * @param $key mixed Key
+ * @param $value mixed Value
+ */
+ function setVar( &$array, $path, $key, $value ) {
+ $pathArr = explode( '/', $path );
+ $target =& $array;
+ if ( $path !== '' ) {
+ foreach ( $pathArr as $p ) {
+ if( !isset( $target[$p] ) )
+ $target[$p] = array();
+ $target =& $target[$p];
+ }
+ }
+ if ( !isset( $target[$key] ) )
+ $target[$key] = $value;
+ }
+
+ /**
+ * Parse a scalar value in PHP
+ * @return mixed Parsed value
+ */
+ function parseScalar( $str ) {
+ if ( $str !== '' && $str[0] == '\'' )
+ // Single-quoted string
+ // @todo Fixme: trim() call is due to mystery bug where whitespace gets
+ // appended to the token; without it we ended up reading in the
+ // extra quote on the end!
+ return strtr( substr( trim( $str ), 1, -1 ),
+ array( '\\\'' => '\'', '\\\\' => '\\' ) );
+ if ( $str !== '' && @$str[0] == '"' )
+ // Double-quoted string
+ // @todo Fixme: trim() call is due to mystery bug where whitespace gets
+ // appended to the token; without it we ended up reading in the
+ // extra quote on the end!
+ return stripcslashes( substr( trim( $str ), 1, -1 ) );
+ if ( substr( $str, 0, 4 ) == 'true' )
+ return true;
+ if ( substr( $str, 0, 5 ) == 'false' )
+ return false;
+ if ( substr( $str, 0, 4 ) == 'null' )
+ return null;
+ // Must be some kind of numeric value, so let PHP's weak typing
+ // be useful for a change
+ return $str;
+ }
+
+ /**
+ * Replace the byte offset region of the source with $newText.
+ * Works by adding elements to the $this->edits array.
+ */
+ function replaceSourceRegion( $start, $end, $newText = false ) {
+ // Split all copy operations with a source corresponding to the region
+ // in question.
+ $newEdits = array();
+ foreach ( $this->edits as $i => $edit ) {
+ if ( $edit[0] !== 'copy' ) {
+ $newEdits[] = $edit;
+ continue;
+ }
+ $copyStart = $edit[1];
+ $copyEnd = $edit[2];
+ if ( $start >= $copyEnd || $end <= $copyStart ) {
+ // Outside this region
+ $newEdits[] = $edit;
+ continue;
+ }
+ if ( ( $start < $copyStart && $end > $copyStart )
+ || ( $start < $copyEnd && $end > $copyEnd )
+ ) {
+ throw new MWException( "Overlapping regions found, can't do the edit" );
+ }
+ // Split the copy
+ $newEdits[] = array( 'copy', $copyStart, $start );
+ if ( $newText !== false ) {
+ $newEdits[] = array( 'insert', $newText );
+ }
+ $newEdits[] = array( 'copy', $end, $copyEnd );
+ }
+ $this->edits = $newEdits;
+ }
+
+ /**
+ * Finds the source byte region which you would want to delete, if $pathName
+ * was to be deleted. Includes the leading spaces and tabs, the trailing line
+ * break, and any comments in between.
+ */
+ function findDeletionRegion( $pathName ) {
+ if ( !isset( $this->pathInfo[$pathName] ) ) {
+ throw new MWException( "Can't find path \"$pathName\"" );
+ }
+ $path = $this->pathInfo[$pathName];
+ // Find the start
+ $this->firstToken();
+ while ( $this->pos != $path['startToken'] ) {
+ $this->nextToken();
+ }
+ $regionStart = $path['startByte'];
+ for ( $offset = -1; $offset >= -$this->pos; $offset-- ) {
+ $token = $this->getTokenAhead( $offset );
+ if ( !$token->isSkip() ) {
+ // If there is other content on the same line, don't move the start point
+ // back, because that will cause the regions to overlap.
+ $regionStart = $path['startByte'];
+ break;
+ }
+ $lfPos = strrpos( $token->text, "\n" );
+ if ( $lfPos === false ) {
+ $regionStart -= strlen( $token->text );
+ } else {
+ // The line start does not include the LF
+ $regionStart -= strlen( $token->text ) - $lfPos - 1;
+ break;
+ }
+ }
+ // Find the end
+ while ( $this->pos != $path['endToken'] ) {
+ $this->nextToken();
+ }
+ $regionEnd = $path['endByte']; // past the end
+ for ( $offset = 0; $offset < count( $this->tokens ) - $this->pos; $offset++ ) {
+ $token = $this->getTokenAhead( $offset );
+ if ( !$token->isSkip() ) {
+ break;
+ }
+ $lfPos = strpos( $token->text, "\n" );
+ if ( $lfPos === false ) {
+ $regionEnd += strlen( $token->text );
+ } else {
+ // This should point past the LF
+ $regionEnd += $lfPos + 1;
+ break;
+ }
+ }
+ return array( $regionStart, $regionEnd );
+ }
+
+ /**
+ * Find the byte region in the source corresponding to the value part.
+ * This includes the quotes, but does not include the trailing comma
+ * or semicolon.
+ *
+ * The end position is the past-the-end (end + 1) value as per convention.
+ */
+ function findValueRegion( $pathName ) {
+ if ( !isset( $this->pathInfo[$pathName] ) ) {
+ throw new MWEXception( "Can't find path \"$pathName\"" );
+ }
+ $path = $this->pathInfo[$pathName];
+ if ( $path['valueStartByte'] === false || $path['valueEndByte'] === false ) {
+ throw new MWException( "Can't find value region for path \"$pathName\"" );
+ }
+ return array( $path['valueStartByte'], $path['valueEndByte'] );
+ }
+
+ /**
+ * Find the path name of the last element in the array.
+ * If the array is empty, this will return the @extra interstitial element.
+ * If the specified path is not found or is not an array, it will return false.
+ */
+ function findLastArrayElement( $path ) {
+ // Try for a real element
+ $lastEltPath = false;
+ foreach ( $this->pathInfo as $candidatePath => $info ) {
+ $part1 = substr( $candidatePath, 0, strlen( $path ) + 1 );
+ $part2 = substr( $candidatePath, strlen( $path ) + 1, 1 );
+ if ( $part2 == '@' ) {
+ // Do nothing
+ } elseif ( $part1 == "$path/" ) {
+ $lastEltPath = $candidatePath;
+ } elseif ( $lastEltPath !== false ) {
+ break;
+ }
+ }
+ if ( $lastEltPath !== false ) {
+ return $lastEltPath;
+ }
+
+ // Try for an interstitial element
+ $extraPath = false;
+ foreach ( $this->pathInfo as $candidatePath => $info ) {
+ $part1 = substr( $candidatePath, 0, strlen( $path ) + 1 );
+ if ( $part1 == "$path/" ) {
+ $extraPath = $candidatePath;
+ } elseif ( $extraPath !== false ) {
+ break;
+ }
+ }
+ return $extraPath;
+ }
+
+ /*
+ * Find the path name of first element in the array.
+ * If the array is empty, this will return the @extra interstitial element.
+ * If the specified path is not found or is not an array, it will return false.
+ */
+ function findFirstArrayElement( $path ) {
+ // Try for an ordinary element
+ foreach ( $this->pathInfo as $candidatePath => $info ) {
+ $part1 = substr( $candidatePath, 0, strlen( $path ) + 1 );
+ $part2 = substr( $candidatePath, strlen( $path ) + 1, 1 );
+ if ( $part1 == "$path/" && $part2 != '@' ) {
+ return $candidatePath;
+ }
+ }
+
+ // Try for an interstitial element
+ foreach ( $this->pathInfo as $candidatePath => $info ) {
+ $part1 = substr( $candidatePath, 0, strlen( $path ) + 1 );
+ if ( $part1 == "$path/" ) {
+ return $candidatePath;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Get the indent string which sits after a given start position.
+ * Returns false if the position is not at the start of the line.
+ */
+ function getIndent( $pos, $key = false, $arrowPos = false ) {
+ $arrowIndent = ' ';
+ if ( $pos == 0 || $this->text[$pos-1] == "\n" ) {
+ $indentLength = strspn( $this->text, " \t", $pos );
+ $indent = substr( $this->text, $pos, $indentLength );
+ } else {
+ $indent = false;
+ }
+ if ( $indent !== false && $arrowPos !== false ) {
+ $textToInsert = "$indent$key ";
+ $arrowIndentLength = $arrowPos - $pos - $indentLength - strlen( $key );
+ if ( $arrowIndentLength > 0 ) {
+ $arrowIndent = str_repeat( ' ', $arrowIndentLength );
+ }
+ }
+ return array( $indent, $arrowIndent );
+ }
+
+ /**
+ * Run the parser on the text. Throws an exception if the string does not
+ * match our defined subset of PHP syntax.
+ */
+ public function parse() {
+ $this->initParse();
+ $this->pushState( 'file' );
+ $this->pushPath( '@extra-' . ($this->serial++) );
+ $token = $this->firstToken();
+
+ while ( !$token->isEnd() ) {
+ $state = $this->popState();
+ if ( !$state ) {
+ $this->error( 'internal error: empty state stack' );
+ }
+
+ switch ( $state ) {
+ case 'file':
+ $token = $this->expect( T_OPEN_TAG );
+ $token = $this->skipSpace();
+ if ( $token->isEnd() ) {
+ break 2;
+ }
+ $this->pushState( 'statement', 'file 2' );
+ break;
+ case 'file 2':
+ $token = $this->skipSpace();
+ if ( $token->isEnd() ) {
+ break 2;
+ }
+ $this->pushState( 'statement', 'file 2' );
+ break;
+ case 'statement':
+ $token = $this->skipSpace();
+ if ( !$this->validatePath( $token->text ) ) {
+ $this->error( "Invalid variable name \"{$token->text}\"" );
+ }
+ $this->nextPath( $token->text );
+ $this->expect( T_VARIABLE );
+ $this->skipSpace();
+ $arrayAssign = false;
+ if ( $this->currentToken()->type == '[' ) {
+ $this->nextToken();
+ $token = $this->skipSpace();
+ if ( !$token->isScalar() ) {
+ $this->error( "expected a string or number for the array key" );
+ }
+ if ( $token->type == T_CONSTANT_ENCAPSED_STRING ) {
+ $text = $this->parseScalar( $token->text );
+ } else {
+ $text = $token->text;
+ }
+ if ( !$this->validatePath( $text ) ) {
+ $this->error( "Invalid associative array name \"$text\"" );
+ }
+ $this->pushPath( $text );
+ $this->nextToken();
+ $this->skipSpace();
+ $this->expect( ']' );
+ $this->skipSpace();
+ $arrayAssign = true;
+ }
+ $this->expect( '=' );
+ $this->skipSpace();
+ $this->startPathValue();
+ if ( $arrayAssign )
+ $this->pushState( 'expression', 'array assign end' );
+ else
+ $this->pushState( 'expression', 'statement end' );
+ break;
+ case 'array assign end':
+ case 'statement end':
+ $this->endPathValue();
+ if ( $state == 'array assign end' )
+ $this->popPath();
+ $this->skipSpace();
+ $this->expect( ';' );
+ $this->nextPath( '@extra-' . ($this->serial++) );
+ break;
+ case 'expression':
+ $token = $this->skipSpace();
+ if ( $token->type == T_ARRAY ) {
+ $this->pushState( 'array' );
+ } elseif ( $token->isScalar() ) {
+ $this->nextToken();
+ } elseif ( $token->type == T_VARIABLE ) {
+ $this->nextToken();
+ } else {
+ $this->error( "expected simple expression" );
+ }
+ break;
+ case 'array':
+ $this->skipSpace();
+ $this->expect( T_ARRAY );
+ $this->skipSpace();
+ $this->expect( '(' );
+ $this->skipSpace();
+ $this->pushPath( '@extra-' . ($this->serial++) );
+ if ( $this->isAhead( ')' ) ) {
+ // Empty array
+ $this->pushState( 'array end' );
+ } else {
+ $this->pushState( 'element', 'array end' );
+ }
+ break;
+ case 'array end':
+ $this->skipSpace();
+ $this->popPath();
+ $this->expect( ')' );
+ break;
+ case 'element':
+ $token = $this->skipSpace();
+ // Look ahead to find the double arrow
+ if ( $token->isScalar() && $this->isAhead( T_DOUBLE_ARROW, 1 ) ) {
+ // Found associative element
+ $this->pushState( 'assoc-element', 'element end' );
+ } else {
+ // Not associative
+ $this->nextPath( '@next' );
+ $this->startPathValue();
+ $this->pushState( 'expression', 'element end' );
+ }
+ break;
+ case 'element end':
+ $token = $this->skipSpace();
+ if ( $token->type == ',' ) {
+ $this->endPathValue();
+ $this->markComma();
+ $this->nextToken();
+ $this->nextPath( '@extra-' . ($this->serial++) );
+ // Look ahead to find ending bracket
+ if ( $this->isAhead( ")" ) ) {
+ // Found ending bracket, no continuation
+ $this->skipSpace();
+ } else {
+ // No ending bracket, continue to next element
+ $this->pushState( 'element' );
+ }
+ } elseif ( $token->type == ')' ) {
+ // End array
+ $this->endPathValue();
+ } else {
+ $this->error( "expected the next array element or the end of the array" );
+ }
+ break;
+ case 'assoc-element':
+ $token = $this->skipSpace();
+ if ( !$token->isScalar() ) {
+ $this->error( "expected a string or number for the array key" );
+ }
+ if ( $token->type == T_CONSTANT_ENCAPSED_STRING ) {
+ $text = $this->parseScalar( $token->text );
+ } else {
+ $text = $token->text;
+ }
+ if ( !$this->validatePath( $text ) ) {
+ $this->error( "Invalid associative array name \"$text\"" );
+ }
+ $this->nextPath( $text );
+ $this->nextToken();
+ $this->skipSpace();
+ $this->markArrow();
+ $this->expect( T_DOUBLE_ARROW );
+ $this->skipSpace();
+ $this->startPathValue();
+ $this->pushState( 'expression' );
+ break;
+ }
+ }
+ if ( count( $this->stateStack ) ) {
+ $this->error( 'unexpected end of file' );
+ }
+ $this->popPath();
+ }
+
+ /**
+ * Initialise a parse.
+ */
+ protected function initParse() {
+ $this->tokens = token_get_all( $this->text );
+ $this->stateStack = array();
+ $this->pathStack = array();
+ $this->firstToken();
+ $this->pathInfo = array();
+ $this->serial = 1;
+ }
+
+ /**
+ * Set the parse position. Do not call this except from firstToken() and
+ * nextToken(), there is more to update than just the position.
+ */
+ protected function setPos( $pos ) {
+ $this->pos = $pos;
+ if ( $this->pos >= count( $this->tokens ) ) {
+ $this->currentToken = ConfEditorToken::newEnd();
+ } else {
+ $this->currentToken = $this->newTokenObj( $this->tokens[$this->pos] );
+ }
+ return $this->currentToken;
+ }
+
+ /**
+ * Create a ConfEditorToken from an element of token_get_all()
+ */
+ function newTokenObj( $internalToken ) {
+ if ( is_array( $internalToken ) ) {
+ return new ConfEditorToken( $internalToken[0], $internalToken[1] );
+ } else {
+ return new ConfEditorToken( $internalToken, $internalToken );
+ }
+ }
+
+ /**
+ * Reset the parse position
+ */
+ function firstToken() {
+ $this->setPos( 0 );
+ $this->prevToken = ConfEditorToken::newEnd();
+ $this->lineNum = 1;
+ $this->colNum = 1;
+ $this->byteNum = 0;
+ return $this->currentToken;
+ }
+
+ /**
+ * Get the current token
+ */
+ function currentToken() {
+ return $this->currentToken;
+ }
+
+ /**
+ * Advance the current position and return the resulting next token
+ */
+ function nextToken() {
+ if ( $this->currentToken ) {
+ $text = $this->currentToken->text;
+ $lfCount = substr_count( $text, "\n" );
+ if ( $lfCount ) {
+ $this->lineNum += $lfCount;
+ $this->colNum = strlen( $text ) - strrpos( $text, "\n" );
+ } else {
+ $this->colNum += strlen( $text );
+ }
+ $this->byteNum += strlen( $text );
+ }
+ $this->prevToken = $this->currentToken;
+ $this->setPos( $this->pos + 1 );
+ return $this->currentToken;
+ }
+
+ /**
+ * Get the token $offset steps ahead of the current position.
+ * $offset may be negative, to get tokens behind the current position.
+ */
+ function getTokenAhead( $offset ) {
+ $pos = $this->pos + $offset;
+ if ( $pos >= count( $this->tokens ) || $pos < 0 ) {
+ return ConfEditorToken::newEnd();
+ } else {
+ return $this->newTokenObj( $this->tokens[$pos] );
+ }
+ }
+
+ /**
+ * Advances the current position past any whitespace or comments
+ */
+ function skipSpace() {
+ while ( $this->currentToken && $this->currentToken->isSkip() ) {
+ $this->nextToken();
+ }
+ return $this->currentToken;
+ }
+
+ /**
+ * Throws an error if the current token is not of the given type, and
+ * then advances to the next position.
+ */
+ function expect( $type ) {
+ if ( $this->currentToken && $this->currentToken->type == $type ) {
+ return $this->nextToken();
+ } else {
+ $this->error( "expected " . $this->getTypeName( $type ) .
+ ", got " . $this->getTypeName( $this->currentToken->type ) );
+ }
+ }
+
+ /**
+ * Push a state or two on to the state stack.
+ */
+ function pushState( $nextState, $stateAfterThat = null ) {
+ if ( $stateAfterThat !== null ) {
+ $this->stateStack[] = $stateAfterThat;
+ }
+ $this->stateStack[] = $nextState;
+ }
+
+ /**
+ * Pop a state from the state stack.
+ */
+ function popState() {
+ return array_pop( $this->stateStack );
+ }
+
+ /**
+ * Returns true if the user input path is valid.
+ * This exists to allow "/" and "@" to be reserved for string path keys
+ */
+ function validatePath( $path ) {
+ return strpos( $path, '/' ) === false && substr( $path, 0, 1 ) != '@';
+ }
+
+ /**
+ * Internal function to update some things at the end of a path region. Do
+ * not call except from popPath() or nextPath().
+ */
+ function endPath() {
+ $i = count( $this->pathStack ) - 1;
+ $key = '';
+ foreach ( $this->pathStack as $pathInfo ) {
+ if ( $key !== '' ) {
+ $key .= '/';
+ }
+ $key .= $pathInfo['name'];
+ }
+ $pathInfo['endByte'] = $this->byteNum;
+ $pathInfo['endToken'] = $this->pos;
+ $this->pathInfo[$key] = $pathInfo;
+ }
+
+ /**
+ * Go up to a new path level, for example at the start of an array.
+ */
+ function pushPath( $path ) {
+ $this->pathStack[] = array(
+ 'name' => $path,
+ 'level' => count( $this->pathStack ) + 1,
+ 'startByte' => $this->byteNum,
+ 'startToken' => $this->pos,
+ 'valueStartToken' => false,
+ 'valueStartByte' => false,
+ 'valueEndToken' => false,
+ 'valueEndByte' => false,
+ 'nextArrayIndex' => 0,
+ 'hasComma' => false,
+ 'arrowByte' => false
+ );
+ }
+
+ /**
+ * Go down a path level, for example at the end of an array.
+ */
+ function popPath() {
+ $this->endPath();
+ array_pop( $this->pathStack );
+ }
+
+ /**
+ * Go to the next path on the same level. This ends the current path and
+ * starts a new one. If $path is @next, the new path is set to the next
+ * numeric array element.
+ */
+ function nextPath( $path ) {
+ $this->endPath();
+ $i = count( $this->pathStack ) - 1;
+ if ( $path == '@next' ) {
+ $nextArrayIndex =& $this->pathStack[$i]['nextArrayIndex'];
+ $this->pathStack[$i]['name'] = $nextArrayIndex;
+ $nextArrayIndex++;
+ } else {
+ $this->pathStack[$i]['name'] = $path;
+ }
+ $this->pathStack[$i] =
+ array(
+ 'startByte' => $this->byteNum,
+ 'startToken' => $this->pos,
+ 'valueStartToken' => false,
+ 'valueStartByte' => false,
+ 'valueEndToken' => false,
+ 'valueEndByte' => false,
+ 'hasComma' => false,
+ 'arrowByte' => false,
+ ) + $this->pathStack[$i];
+ }
+
+ /**
+ * Mark the start of the value part of a path.
+ */
+ function startPathValue() {
+ $path =& $this->pathStack[count( $this->pathStack ) - 1];
+ $path['valueStartToken'] = $this->pos;
+ $path['valueStartByte'] = $this->byteNum;
+ }
+
+ /**
+ * Mark the end of the value part of a path.
+ */
+ function endPathValue() {
+ $path =& $this->pathStack[count( $this->pathStack ) - 1];
+ $path['valueEndToken'] = $this->pos;
+ $path['valueEndByte'] = $this->byteNum;
+ }
+
+ /**
+ * Mark the comma separator in an array element
+ */
+ function markComma() {
+ $path =& $this->pathStack[count( $this->pathStack ) - 1];
+ $path['hasComma'] = true;
+ }
+
+ /**
+ * Mark the arrow separator in an associative array element
+ */
+ function markArrow() {
+ $path =& $this->pathStack[count( $this->pathStack ) - 1];
+ $path['arrowByte'] = $this->byteNum;
+ }
+
+ /**
+ * Generate a parse error
+ */
+ function error( $msg ) {
+ throw new ConfEditorParseError( $this, $msg );
+ }
+
+ /**
+ * Get a readable name for the given token type.
+ */
+ function getTypeName( $type ) {
+ if ( is_int( $type ) ) {
+ return token_name( $type );
+ } else {
+ return "\"$type\"";
+ }
+ }
+
+ /**
+ * Looks ahead to see if the given type is the next token type, starting
+ * from the current position plus the given offset. Skips any intervening
+ * whitespace.
+ */
+ function isAhead( $type, $offset = 0 ) {
+ $ahead = $offset;
+ $token = $this->getTokenAhead( $offset );
+ while ( !$token->isEnd() ) {
+ if ( $token->isSkip() ) {
+ $ahead++;
+ $token = $this->getTokenAhead( $ahead );
+ continue;
+ } elseif ( $token->type == $type ) {
+ // Found the type
+ return true;
+ } else {
+ // Not found
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Get the previous token object
+ */
+ function prevToken() {
+ return $this->prevToken;
+ }
+
+ /**
+ * Echo a reasonably readable representation of the tokenizer array.
+ */
+ function dumpTokens() {
+ $out = '';
+ foreach ( $this->tokens as $token ) {
+ $obj = $this->newTokenObj( $token );
+ $out .= sprintf( "%-28s %s\n",
+ $this->getTypeName( $obj->type ),
+ addcslashes( $obj->text, "\0..\37" ) );
+ }
+ echo "<pre>" . htmlspecialchars( $out ) . "</pre>";
+ }
+}
+
+/**
+ * Exception class for parse errors
+ */
+class ConfEditorParseError extends MWException {
+ var $lineNum, $colNum;
+ function __construct( $editor, $msg ) {
+ $this->lineNum = $editor->lineNum;
+ $this->colNum = $editor->colNum;
+ parent::__construct( "Parse error on line {$editor->lineNum} " .
+ "col {$editor->colNum}: $msg" );
+ }
+
+ function highlight( $text ) {
+ $lines = StringUtils::explode( "\n", $text );
+ foreach ( $lines as $lineNum => $line ) {
+ if ( $lineNum == $this->lineNum - 1 ) {
+ return "$line\n" .str_repeat( ' ', $this->colNum - 1 ) . "^\n";
+ }
+ }
+ }
+
+}
+
+/**
+ * Class to wrap a token from the tokenizer.
+ */
+class ConfEditorToken {
+ var $type, $text;
+
+ static $scalarTypes = array( T_LNUMBER, T_DNUMBER, T_STRING, T_CONSTANT_ENCAPSED_STRING );
+ static $skipTypes = array( T_WHITESPACE, T_COMMENT, T_DOC_COMMENT );
+
+ static function newEnd() {
+ return new self( 'END', '' );
+ }
+
+ function __construct( $type, $text ) {
+ $this->type = $type;
+ $this->text = $text;
+ }
+
+ function isSkip() {
+ return in_array( $this->type, self::$skipTypes );
+ }
+
+ function isScalar() {
+ return in_array( $this->type, self::$scalarTypes );
+ }
+
+ function isEnd() {
+ return $this->type == 'END';
+ }
+}
+
diff --git a/includes/Credits.php b/includes/Credits.php
index ae9377f2..91ba3f16 100644
--- a/includes/Credits.php
+++ b/includes/Credits.php
@@ -55,13 +55,13 @@ class Credits {
* @param $showIfMax Bool: whether to contributors if there more than $cnt
* @return String: html
*/
- public static function getCredits($article, $cnt, $showIfMax=true) {
+ public static function getCredits( Article $article, $cnt, $showIfMax = true ) {
wfProfileIn( __METHOD__ );
$s = '';
if( isset( $cnt ) && $cnt != 0 ){
$s = self::getAuthor( $article );
- if ($cnt > 1 || $cnt < 0) {
+ if ( $cnt > 1 || $cnt < 0 ) {
$s .= ' ' . self::getContributors( $article, $cnt - 1, $showIfMax );
}
}
@@ -75,7 +75,7 @@ class Credits {
* @param $article Article object
*/
protected static function getAuthor( Article $article ){
- global $wgLang, $wgAllowRealName;
+ global $wgLang;
$user = User::newFromId( $article->getUser() );
@@ -87,7 +87,7 @@ class Credits {
$d = '';
$t = '';
}
- return wfMsg( 'lastmodifiedatby', $d, $t, self::userLink( $user ) );
+ return wfMsgExt( 'lastmodifiedatby', 'parsemag', $d, $t, self::userLink( $user ), $user->getName() );
}
/**
@@ -98,11 +98,11 @@ class Credits {
* @return String: html
*/
protected static function getContributors( Article $article, $cnt, $showIfMax ) {
- global $wgLang, $wgAllowRealName;
+ global $wgLang, $wgHiddenPrefs;
$contributors = $article->getContributors();
- $others_link = '';
+ $others_link = false;
# Hmm... too many to fit!
if( $cnt > 0 && $contributors->count() > $cnt ){
@@ -113,38 +113,48 @@ class Credits {
$real_names = array();
$user_names = array();
- $anon = 0;
+ $anon_ips = array();
# Sift for real versus user names
foreach( $contributors as $user ) {
$cnt--;
if( $user->isLoggedIn() ){
$link = self::link( $user );
- if( $wgAllowRealName && $user->getRealName() )
+ if( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() )
$real_names[] = $link;
else
$user_names[] = $link;
} else {
- $anon++;
+ $anon_ips[] = self::link( $user );
}
if( $cnt == 0 ) break;
}
- # Two strings: real names, and user names
- $real = $wgLang->listToText( $real_names );
- $user = $wgLang->listToText( $user_names );
- if( $anon )
- $anon = wfMsgExt( 'anonymous', array( 'parseinline' ), $anon );
+ if ( count( $real_names ) ) {
+ $real = $wgLang->listToText( $real_names );
+ } else {
+ $real = false;
+ }
# "ThisSite user(s) A, B and C"
- if( !empty( $user ) ){
- $user = wfMsgExt( 'siteusers', array( 'parsemag' ), $user, count( $user_names ) );
+ if( count( $user_names ) ){
+ $user = wfMsgExt( 'siteusers', array( 'parsemag' ),
+ $wgLang->listToText( $user_names ), count( $user_names ) );
+ } else {
+ $user = false;
+ }
+
+ if( count( $anon_ips ) ){
+ $anon = wfMsgExt( 'anonusers', array( 'parsemag' ),
+ $wgLang->listToText( $anon_ips ), count( $anon_ips ) );
+ } else {
+ $anon = false;
}
# This is the big list, all mooshed together. We sift for blank strings
$fulllist = array();
foreach( array( $real, $user, $anon, $others_link ) as $s ){
- if( !empty( $s ) ){
+ if( $s ){
array_push( $fulllist, $s );
}
}
@@ -153,40 +163,42 @@ class Credits {
$creds = $wgLang->listToText( $fulllist );
# "Based on work by ..."
- return empty( $creds ) ? '' : wfMsg( 'othercontribs', $creds );
+ return strlen( $creds ) ? wfMsg( 'othercontribs', $creds ) : '';
}
/**
- * Get a link to $user_name page
+ * Get a link to $user's user page
* @param $user User object
* @return String: html
*/
protected static function link( User $user ) {
- global $wgUser, $wgAllowRealName;
- if( $wgAllowRealName )
+ global $wgUser, $wgHiddenPrefs;
+ if( !in_array( 'realname', $wgHiddenPrefs ) && !$user->isAnon() )
$real = $user->getRealName();
else
$real = false;
$skin = $wgUser->getSkin();
- $page = $user->getUserPage();
-
+ $page = $user->isAnon() ?
+ SpecialPage::getTitleFor( 'Contributions', $user->getName() ) :
+ $user->getUserPage();
+
return $skin->link( $page, htmlspecialchars( $real ? $real : $user->getName() ) );
}
/**
- * Get a link to $user_name page
+ * Get a link to $user's user page
* @param $user_name String: user name
* @param $linkText String: optional display
* @return String: html
*/
protected static function userLink( User $user ) {
- global $wgUser, $wgAllowRealName;
+ $link = self::link( $user );
if( $user->isAnon() ){
- return wfMsgExt( 'anonymous', array( 'parseinline' ), 1 );
+ return wfMsgExt( 'anonuser', array( 'parseinline', 'replaceafter' ), $link );
} else {
- $link = self::link( $user );
- if( $wgAllowRealName && $user->getRealName() )
+ global $wgHiddenPrefs;
+ if( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() )
return $link;
else
return wfMsgExt( 'siteuser', array( 'parseinline', 'replaceafter' ), $link );
@@ -203,4 +215,4 @@ class Credits {
$skin = $wgUser->getSkin();
return $skin->link( $article->getTitle(), wfMsgHtml( 'others' ), array(), array( 'action' => 'credits' ), array( 'known' ) );
}
-} \ No newline at end of file
+}
diff --git a/includes/DatabaseFunctions.php b/includes/DatabaseFunctions.php
index 52e9a8c8..2df56115 100644
--- a/includes/DatabaseFunctions.php
+++ b/includes/DatabaseFunctions.php
@@ -58,7 +58,7 @@ function wfIgnoreSQLErrors( $newstate, $dbi = DB_LAST ) {
if ( $db !== false ) {
return $db->ignoreErrors( $newstate );
} else {
- return NULL;
+ return null;
}
}
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 160273b8..a369fccd 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -33,7 +33,7 @@ if ( !defined( 'MW_PHP4' ) ) {
}
/** MediaWiki version number */
-$wgVersion = '1.15.5';
+$wgVersion = '1.16.0';
/** Name of the site. It must be changed in LocalSettings.php */
$wgSitename = 'MediaWiki';
@@ -142,16 +142,17 @@ $wgRedirectScript = false; ///< defaults to "{$wgScriptPath}/redirect{$wgScrip
* splitting style sheets or images outside the main document root.
*/
/**
- * style path as seen by users
+ * asset paths as seen by users
*/
$wgStylePath = false; ///< defaults to "{$wgScriptPath}/skins"
+$wgExtensionAssetsPath = false; ///< defaults to "{$wgScriptPath}/extensions"
+
/**
* filesystem stylesheets directory
*/
$wgStyleDirectory = false; ///< defaults to "{$IP}/skins"
$wgStyleSheetPath = &$wgStylePath;
$wgArticlePath = false; ///< default to "{$wgScript}/$1" or "{$wgScript}?title=$1", depending on $wgUsePathInfo
-$wgVariantArticlePath = false;
$wgUploadPath = false; ///< defaults to "{$wgScriptPath}/images"
$wgUploadDirectory = false; ///< defaults to "{$IP}/images"
$wgHashedUploadDirectory = true;
@@ -165,6 +166,16 @@ $wgUploadBaseUrl = "";
/**@}*/
/**
+ * Directory for caching data in the local filesystem. Should not be accessible
+ * from the web. Set this to false to not use any local caches.
+ *
+ * Note: if multiple wikis share the same localisation cache directory, they
+ * must all have the same set of extensions. You can set a directory just for
+ * the localisation cache using $wgLocalisationCacheConf['storeDirectory'].
+ */
+$wgCacheDirectory = false;
+
+/**
* Default value for chmoding of new directories.
*/
$wgDirectoryMode = 0777;
@@ -181,11 +192,14 @@ $wgFileStore['deleted']['directory'] = false;///< Defaults to $wgUploadDirectory
$wgFileStore['deleted']['url'] = null; ///< Private
$wgFileStore['deleted']['hash'] = 3; ///< 3-level subdirectory split
+$wgImgAuthDetails = false; ///< defaults to false - only set to true if you use img_auth and want the user to see details on why access failed
+$wgImgAuthPublicTest = true; ///< defaults to true - if public read is turned on, no need for img_auth, config error unless other access is used
+
/**@{
* File repository structures
*
- * $wgLocalFileRepo is a single repository structure, and $wgForeignFileRepo is
- * a an array of such structures. Each repository structure is an associative
+ * $wgLocalFileRepo is a single repository structure, and $wgForeignFileRepos is
+ * an array of such structures. Each repository structure is an associative
* array of properties configuring the repository.
*
* Properties required for all repos:
@@ -194,20 +208,27 @@ $wgFileStore['deleted']['hash'] = 3; ///< 3-level subdirectory split
*
* name A unique name for the repository.
*
- * For all core repos:
+ * For most core repos:
* url Base public URL
* hashLevels The number of directory levels for hash-based division of files
* thumbScriptUrl The URL for thumb.php (optional, not recommended)
* transformVia404 Whether to skip media file transformation on parse and rely on a 404
* handler instead.
- * initialCapital Equivalent to $wgCapitalLinks, determines whether filenames implicitly
- * start with a capital letter. The current implementation may give incorrect
- * description page links when the local $wgCapitalLinks and initialCapital
- * are mismatched.
+ * initialCapital Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE],
+ * determines whether filenames implicitly start with a capital letter.
+ * The current implementation may give incorrect description page links
+ * when the local $wgCapitalLinks and initialCapital are mismatched.
* pathDisclosureProtection
* May be 'paranoid' to remove all parameters from error messages, 'none' to
* leave the paths in unchanged, or 'simple' to replace paths with
* placeholders. Default for LocalRepo is 'simple'.
+ * fileMode This allows wikis to set the file mode when uploading/moving files. Default
+ * is 0644.
+ * directory The local filesystem directory where public files are stored. Not used for
+ * some remote repos.
+ * thumbDir The base thumbnail directory. Defaults to <directory>/thumb.
+ * thumbUrl The base thumbnail URL. Defaults to <url>/thumb.
+ *
*
* These settings describe a foreign MediaWiki installation. They are optional, and will be ignored
* for local repositories:
@@ -224,7 +245,7 @@ $wgFileStore['deleted']['hash'] = 3; ///< 3-level subdirectory split
* equivalent to the corresponding member of $wgDBservers
* tablePrefix Table prefix, the foreign wiki's $wgDBprefix
* hasSharedCache True if the wiki's shared cache is accessible via the local $wgMemc
- *
+ *
* ForeignAPIRepo:
* apibase Use for the foreign API's URL
* apiThumbCacheExpiry How long to locally cache thumbs for
@@ -237,6 +258,13 @@ $wgForeignFileRepos = array();
/**@}*/
/**
+ * Use Commons as a remote file repository. Essentially a wrapper, when this
+ * is enabled $wgForeignFileRepos will point at Commons with a set of default
+ * settings
+ */
+$wgUseInstantCommons = false;
+
+/**
* Allowed title characters -- regex character class
* Don't change this unless you know what you're doing
*
@@ -263,6 +291,7 @@ $wgForeignFileRepos = array();
* this breaks interlanguage links
*/
$wgLegalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+";
+$wgIllegalFileChars = ":"; // These are additional characters that should be replaced with '-' in file names
/**
@@ -285,7 +314,7 @@ $wgUrlProtocols = array(
/** internal name of virus scanner. This servers as a key to the $wgAntivirusSetup array.
* Set this to NULL to disable virus scanning. If not null, every file uploaded will be scanned for viruses.
*/
-$wgAntivirus= NULL;
+$wgAntivirus= null;
/** Configuration for different virus scanners. This an associative array of associative arrays:
* it contains on setup array per known scanner type. The entry is selected by $wgAntivirus, i.e.
@@ -352,11 +381,11 @@ $wgVerifyMimeType= true;
/** Sets the mime type definition file to use by MimeMagic.php. */
$wgMimeTypeFile= "includes/mime.types";
#$wgMimeTypeFile= "/etc/mime.types";
-#$wgMimeTypeFile= NULL; #use built-in defaults only.
+#$wgMimeTypeFile= null; #use built-in defaults only.
/** Sets the mime type info file to use by MimeMagic.php. */
$wgMimeInfoFile= "includes/mime.info";
-#$wgMimeInfoFile= NULL; #use built-in defaults only.
+#$wgMimeInfoFile= null; #use built-in defaults only.
/** Switch for loading the FileInfo extension by PECL at runtime.
* This should be used only if fileinfo is installed as a shared object
@@ -369,7 +398,7 @@ $wgLoadFileinfoExtension= false;
* The name of the file to process will be appended to the command given here.
* If not set or NULL, mime_content_type will be used if available.
*/
-$wgMimeDetectorCommand= NULL; # use internal mime_content_type function, available since php 4.3.0
+$wgMimeDetectorCommand= null; # use internal mime_content_type function, available since php 4.3.0
#$wgMimeDetectorCommand= "file -bi"; #use external mime detector (Linux)
/** Switch for trivial mime detection. Used by thumb.php to disable all fance
@@ -426,8 +455,12 @@ $wgSharedUploadDBname = false;
$wgSharedUploadDBprefix = '';
/** Cache shared metadata in memcached. Don't do this if the commons wiki is in a different memcached domain */
$wgCacheSharedUploads = true;
-/** Allow for upload to be copied from an URL. Requires Special:Upload?source=web */
+/**
+* Allow for upload to be copied from an URL. Requires Special:Upload?source=web
+* The timeout for copy uploads is set by $wgHTTPTimeout.
+*/
$wgAllowCopyUploads = false;
+
/**
* Max size for uploads, in bytes. Currently only works for uploads from URL
* via CURL (see $wgAllowCopyUploads). The only way to impose limits on
@@ -440,6 +473,9 @@ $wgMaxUploadSize = 1024*1024*100; # 100MB
* Useful if you want to use a shared repository by default
* without disabling local uploads (use $wgEnableUploads = false for that)
* e.g. $wgUploadNavigationUrl = 'http://commons.wikimedia.org/wiki/Special:Upload';
+ *
+ * This also affects images inline images that do not exist. In that case the URL will get
+ * (?|&)wpDestFile=<filename> appended to it as appropriate.
*/
$wgUploadNavigationUrl = false;
@@ -564,6 +600,10 @@ $wgDBpassword = '';
/** Database type */
$wgDBtype = 'mysql';
+/** Separate username and password for maintenance tasks. Leave as null to use the default */
+$wgDBadminuser = null;
+$wgDBadminpassword = null;
+
/** Search type
* Leave as null to select the default search engine for the
* selected database type (eg SearchMySQL), or set to a class
@@ -610,6 +650,8 @@ $wgCheckDBSchema = true;
* main database.
* For backwards compatibility the shared prefix is set to the same as the local
* prefix, and the user table is listed in the default list of shared tables.
+ * The user_properties table is also added so that users will continue to have their
+ * preferences shared (preferences were stored in the user table prior to 1.16)
*
* $wgSharedTables may be customized with a list of tables to share in the shared
* datbase. However it is advised to limit what tables you do share as many of
@@ -618,7 +660,7 @@ $wgCheckDBSchema = true;
*/
$wgSharedDB = null;
$wgSharedPrefix = false; # Defaults to $wgDBprefix
-$wgSharedTables = array( 'user' );
+$wgSharedTables = array( 'user', 'user_properties' );
/**
* Database load balancer
@@ -732,8 +774,17 @@ $wgParserCacheType = CACHE_ANYTHING;
$wgParserCacheExpireTime = 86400;
+// Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php> to use as CACHE_DBA backend
+$wgDBAhandler = 'db3';
+
$wgSessionsInMemcached = false;
+/** This is used for setting php's session.save_handler. In practice, you will
+ * almost never need to change this ever. Other options might be 'user' or
+ * 'session_mysql.' Setting to null skips setting this entirely (which might be
+ * useful if you're doing cross-application sessions, see bug 11381) */
+$wgSessionHandler = 'files';
+
/**@{
* Memcached-specific settings
* See docs/memcached.txt
@@ -742,12 +793,15 @@ $wgUseMemCached = false;
$wgMemCachedDebug = false; ///< Will be set to false in Setup.php, if the server isn't working
$wgMemCachedServers = array( '127.0.0.1:11000' );
$wgMemCachedPersistent = false;
+$wgMemCachedTimeout = 100000; //Data timeout in microseconds
/**@}*/
/**
- * Directory for local copy of message cache, for use in addition to memcached
+ * Set this to true to make a local copy of the message cache, for use in
+ * addition to memcached. The files will be put in $wgCacheDirectory.
*/
-$wgLocalMessageCache = false;
+$wgUseLocalMessageCache = false;
+
/**
* Defines format of local cache
* true - Serialized object
@@ -755,6 +809,34 @@ $wgLocalMessageCache = false;
*/
$wgLocalMessageCacheSerialized = true;
+/**
+ * Localisation cache configuration. Associative array with keys:
+ * class: The class to use. May be overridden by extensions.
+ *
+ * store: The location to store cache data. May be 'files', 'db' or
+ * 'detect'. If set to "files", data will be in CDB files. If set
+ * to "db", data will be stored to the database. If set to
+ * "detect", files will be used if $wgCacheDirectory is set,
+ * otherwise the database will be used.
+ *
+ * storeClass: The class name for the underlying storage. If set to a class
+ * name, it overrides the "store" setting.
+ *
+ * storeDirectory: If the store class puts its data in files, this is the
+ * directory it will use. If this is false, $wgCacheDirectory
+ * will be used.
+ *
+ * manualRecache: Set this to true to disable cache updates on web requests.
+ * Use maintenance/rebuildLocalisationCache.php instead.
+ */
+$wgLocalisationCacheConf = array(
+ 'class' => 'LocalisationCache',
+ 'store' => 'detect',
+ 'storeClass' => false,
+ 'storeDirectory' => false,
+ 'manualRecache' => false,
+);
+
# Language settings
#
/** Site language code, should be one of ./languages/Language(.*).php */
@@ -776,14 +858,42 @@ $wgHideInterlanguageLinks = false;
/** List of language names or overrides for default names in Names.php */
$wgExtraLanguageNames = array();
+/**
+ * List of language codes that don't correspond to an actual language.
+ * These codes are leftoffs from renames, or other legacy things.
+ * Also, qqq is a dummy "language" for documenting messages.
+ */
+$wgDummyLanguageCodes = array( 'qqq', 'als', 'be-x-old', 'dk', 'fiu-vro', 'iu', 'nb', 'simple', 'tp' );
+
/** We speak UTF-8 all the time now, unless some oddities happen */
$wgInputEncoding = 'UTF-8';
$wgOutputEncoding = 'UTF-8';
$wgEditEncoding = '';
/**
+ * Set this to true to replace Arabic presentation forms with their standard
+ * forms in the U+0600-U+06FF block. This only works if $wgLanguageCode is
+ * set to "ar".
+ *
+ * Note that pages with titles containing presentation forms will become
+ * inaccessible, run maintenance/cleanupTitles.php to fix this.
+ */
+$wgFixArabicUnicode = true;
+
+/**
+ * Set this to true to replace ZWJ-based chillu sequences in Malayalam text
+ * with their Unicode 5.1 equivalents. This only works if $wgLanguageCode is
+ * set to "ml". Note that some clients (even new clients as of 2010) do not
+ * support these characters.
+ *
+ * If you enable this on an existing wiki, run maintenance/cleanupTitles.php to
+ * fix any ZWJ sequences in existing page titles.
+ */
+$wgFixMalayalamUnicode = true;
+
+/**
* Locale for LC_CTYPE, to work around http://bugs.php.net/bug.php?id=45132
- * For Unix-like operating systems, set this to to a locale that has a UTF-8
+ * For Unix-like operating systems, set this to to a locale that has a UTF-8
* character set. Only the character set is relevant.
*/
$wgShellLocale = 'en_US.utf8';
@@ -817,11 +927,54 @@ $wgLegacyEncoding = false;
*/
$wgLegacySchemaConversion = false;
-$wgMimeType = 'text/html';
-$wgJsMimeType = 'text/javascript';
-$wgDocType = '-//W3C//DTD XHTML 1.0 Transitional//EN';
-$wgDTD = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd';
-$wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
+$wgMimeType = 'text/html';
+$wgJsMimeType = 'text/javascript';
+$wgDocType = '-//W3C//DTD XHTML 1.0 Transitional//EN';
+$wgDTD = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd';
+$wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
+
+/**
+ * Should we output an HTML5 doctype? This mode is still experimental, but
+ * all indications are that it should be usable, so it's enabled by default.
+ * If all goes well, it will be removed and become always true before the 1.16
+ * release.
+ */
+$wgHtml5 = true;
+
+/**
+ * Defines the value of the version attribute in the &lt;html&gt; tag, if any.
+ * Will be initialized later if not set explicitly.
+ */
+$wgHtml5Version = null;
+
+/**
+ * Enabled RDFa attributes for use in wikitext.
+ * NOTE: Interaction with HTML5 is somewhat underspecified.
+ */
+$wgAllowRdfaAttributes = false;
+
+/**
+ * Enabled HTML5 microdata attributes for use in wikitext, if $wgHtml5 is also true.
+ */
+$wgAllowMicrodataAttributes = false;
+
+/**
+ * Should we try to make our HTML output well-formed XML? If set to false,
+ * output will be a few bytes shorter, and the HTML will arguably be more
+ * readable. If set to true, life will be much easier for the authors of
+ * screen-scraping bots, and the HTML will arguably be more readable.
+ *
+ * Setting this to false may omit quotation marks on some attributes, omit
+ * slashes from some self-closing tags, omit some ending tags, etc., where
+ * permitted by HTML5. Setting it to true will not guarantee that all pages
+ * will be well-formed, although non-well-formed pages should be rare and it's
+ * a bug if you find one. Conversely, setting it to false doesn't mean that
+ * all XML-y constructs will be omitted, just that they might be.
+ *
+ * Because of compatibility with screen-scraping bots, and because it's
+ * controversial, this is currently left to true by default.
+ */
+$wgWellFormedXml = true;
/**
* Permit other namespaces in addition to the w3.org default.
@@ -831,7 +984,7 @@ $wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
* Normally we wouldn't have to define this in the root <html>
* element, but IE needs it there in some circumstances.
*/
-$wgXhtmlNamespaces = array();
+$wgXhtmlNamespaces = array();
/** Enable to allow rewriting dates in page text.
* DOES NOT FORMAT CORRECTLY FOR MOST LANGUAGES */
@@ -885,6 +1038,32 @@ $wgDisableTitleConversion = false;
/** Default variant code, if false, the default will be the language code */
$wgDefaultLanguageVariant = false;
+/** Disabled variants array of language variant conversion.
+ * example:
+ * $wgDisabledVariants[] = 'zh-mo';
+ * $wgDisabledVariants[] = 'zh-my';
+ *
+ * or:
+ * $wgDisabledVariants = array('zh-mo', 'zh-my');
+ */
+$wgDisabledVariants = array();
+
+/**
+ * Like $wgArticlePath, but on multi-variant wikis, this provides a
+ * path format that describes which parts of the URL contain the
+ * language variant. For Example:
+ *
+ * $wgLanguageCode = 'sr';
+ * $wgVariantArticlePath = '/$2/$1';
+ * $wgArticlePath = '/wiki/$1';
+ *
+ * A link to /wiki/ would be redirected to /sr/Главна_страна
+ *
+ * It is important that $wgArticlePath not overlap with possible values
+ * of $wgVariantArticlePath.
+ */
+$wgVariantArticlePath = false;///< defaults to false
+
/**
* Show a bar of language selection links in the user login and user
* registration forms; edit the "loginlanguagelinks" message to
@@ -970,11 +1149,11 @@ $wgExtraSubtitle = '';
$wgSiteSupportPage = ''; # A page where you users can receive donations
/**
- * Set this to a string to put the wiki into read-only mode. The text will be
- * used as an explanation to users.
+ * Set this to a string to put the wiki into read-only mode. The text will be
+ * used as an explanation to users.
*
- * This prevents most write operations via the web interface. Cache updates may
- * still be possible. To prevent database writes completely, use the read_only
+ * This prevents most write operations via the web interface. Cache updates may
+ * still be possible. To prevent database writes completely, use the read_only
* option in MySQL.
*/
$wgReadOnly = null;
@@ -989,7 +1168,7 @@ $wgReadOnlyFile = false; ///< defaults to "{$wgUploadDirectory}/lock_yBg
/**
* Filename for debug logging. See http://www.mediawiki.org/wiki/How_to_debug
* The debug log file should be not be publicly accessible if it is used, as it
- * may contain private data.
+ * may contain private data.
*/
$wgDebugLogFile = '';
@@ -999,14 +1178,14 @@ $wgDebugLogFile = '';
$wgDebugLogPrefix = '';
/**
- * If true, instead of redirecting, show a page with a link to the redirect
+ * If true, instead of redirecting, show a page with a link to the redirect
* destination. This allows for the inspection of PHP error messages, and easy
* resubmission of form data. For developer use only.
*/
$wgDebugRedirects = false;
/**
- * If true, log debugging data from action=raw.
+ * If true, log debugging data from action=raw.
* This is normally false to avoid overlapping debug entries due to gen=css and
* gen=js requests.
*/
@@ -1017,14 +1196,11 @@ $wgDebugRawPage = false;
*
* This may occasionally be useful when supporting a non-technical end-user. It's
* more secure than exposing the debug log file to the web, since the output only
- * contains private data for the current user. But it's not ideal for development
+ * contains private data for the current user. But it's not ideal for development
* use since data is lost on fatal errors and redirects.
*/
$wgDebugComments = false;
-/** Does nothing. Obsolete? */
-$wgLogQueries = false;
-
/**
* Write SQL queries to the debug log
*/
@@ -1046,6 +1222,16 @@ $wgDebugLogGroups = array();
$wgShowDebug = false;
/**
+ * Prefix debug messages with relative timestamp. Very-poor man's profiler.
+ */
+$wgDebugTimestamps = false;
+
+/**
+ * Print HTTP headers for every request in the debug information.
+ */
+$wgDebugPrintHttpHeaders = true;
+
+/**
* Show the contents of $wgHooks in Special:Version
*/
$wgSpecialVersionShowHooks = false;
@@ -1073,22 +1259,33 @@ $wgColorErrors = true;
$wgShowExceptionDetails = false;
/**
+ * If true, show a backtrace for database errors
+ */
+$wgShowDBErrorBacktrace = false;
+
+/**
* Expose backend server host names through the API and various HTML comments
*/
$wgShowHostnames = false;
/**
+ * If set to true MediaWiki will throw notices for some possible error
+ * conditions and for deprecated functions.
+ */
+$wgDevelopmentWarnings = false;
+
+/**
* Use experimental, DMOZ-like category browser
*/
$wgUseCategoryBrowser = false;
/**
- * Keep parsed pages in a cache (objectcache table, turck, or memcached)
+ * Keep parsed pages in a cache (objectcache table or memcached)
* to speed up output of the same page viewed by another user with the
* same options.
*
* This can provide a significant speedup for medium to large pages,
- * so you probably want to keep it on. Extensions that conflict with the
+ * so you probably want to keep it on. Extensions that conflict with the
* parser cache should disable the cache on a per-page basis instead.
*/
$wgEnableParserCache = true;
@@ -1120,7 +1317,7 @@ $wgSidebarCacheExpiry = 86400;
* as a valid article? If $wgUseCommaCount is set to true, it will be
* counted if it contains at least one comma. If it is set to false
* (default), it will only be counted if it contains at least one [[wiki
- * link]]. See http://meta.wikimedia.org/wiki/Help:Article_count
+ * link]]. See http://www.mediawiki.org/wiki/Manual:Article_count
*
* Retroactively changing this variable will not affect
* the existing count (cf. maintenance/recount.sql).
@@ -1142,6 +1339,19 @@ $wgSysopRangeBans = true; # Allow sysops to ban IP ranges
$wgAutoblockExpiry = 86400; # Number of seconds before autoblock entries expire
$wgBlockAllowsUTEdit = false; # Default setting for option on block form to allow self talkpage editing whilst blocked
$wgSysopEmailBans = true; # Allow sysops to ban users from accessing Emailuser
+$wgBlockCIDRLimit = array(
+ 'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed
+ 'IPv6' => 64, # 2^64 = ~1.8x10^19 addresses
+);
+
+/**
+ * If true, blocked users will not be allowed to login. When using this with
+ * a public wiki, the effect of logging out blocked users may actually be
+ * avers: unless the user's address is also blocked (e.g. auto-block),
+ * logging the user out will again allow reading and editing, just as for
+ * anonymous visitors.
+ */
+$wgBlockDisablesLogin = false; #
# Pages anonymous user may see as an array, e.g.:
# array ( "Main Page", "Wikipedia:Help");
@@ -1186,6 +1396,7 @@ $wgGroupPermissions['*']['edit'] = true;
$wgGroupPermissions['*']['createpage'] = true;
$wgGroupPermissions['*']['createtalk'] = true;
$wgGroupPermissions['*']['writeapi'] = true;
+//$wgGroupPermissions['*']['patrolmarks'] = false; // let anons see what was patrolled
// Implicit group for all logged-in accounts
$wgGroupPermissions['user']['move'] = true;
@@ -1202,6 +1413,7 @@ $wgGroupPermissions['user']['reupload'] = true;
$wgGroupPermissions['user']['reupload-shared'] = true;
$wgGroupPermissions['user']['minoredit'] = true;
$wgGroupPermissions['user']['purge'] = true; // can use ?action=purge without clicking "ok"
+$wgGroupPermissions['user']['sendemail'] = true;
// Implicit group for accounts that pass $wgAutoConfirmAge
$wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;
@@ -1223,9 +1435,11 @@ $wgGroupPermissions['sysop']['createaccount'] = true;
$wgGroupPermissions['sysop']['delete'] = true;
$wgGroupPermissions['sysop']['bigdelete'] = true; // can be separately configured for pages with > $wgDeleteRevisionsLimit revs
$wgGroupPermissions['sysop']['deletedhistory'] = true; // can view deleted history entries, but not see or restore the text
+$wgGroupPermissions['sysop']['deletedtext'] = true; // can view deleted revision text
$wgGroupPermissions['sysop']['undelete'] = true;
$wgGroupPermissions['sysop']['editinterface'] = true;
-$wgGroupPermissions['sysop']['editusercssjs'] = true;
+$wgGroupPermissions['sysop']['editusercss'] = true;
+$wgGroupPermissions['sysop']['edituserjs'] = true;
$wgGroupPermissions['sysop']['import'] = true;
$wgGroupPermissions['sysop']['importupload'] = true;
$wgGroupPermissions['sysop']['move'] = true;
@@ -1249,6 +1463,7 @@ $wgGroupPermissions['sysop']['markbotedits'] = true;
$wgGroupPermissions['sysop']['apihighlimits'] = true;
$wgGroupPermissions['sysop']['browsearchive'] = true;
$wgGroupPermissions['sysop']['noratelimit'] = true;
+$wgGroupPermissions['sysop']['versiondetail'] = true;
$wgGroupPermissions['sysop']['movefile'] = true;
#$wgGroupPermissions['sysop']['mergehistory'] = true;
@@ -1276,6 +1491,15 @@ $wgGroupPermissions['bureaucrat']['noratelimit'] = true;
*/
# $wgGroupPermissions['developer']['siteadmin'] = true;
+/**
+ * Permission keys revoked from users in each group.
+ * This acts the same way as wgGroupPermissions above, except that
+ * if the user is in a group here, the permission will be removed from them.
+ *
+ * Improperly setting this could mean that your users will be unable to perform
+ * certain essential tasks, so use at your own risk!
+ */
+$wgRevokePermissions = array();
/**
* Implicit groups, aren't shown on Special:Listusers or somewhere else
@@ -1287,7 +1511,7 @@ $wgImplicitGroups = array( '*', 'user', 'autoconfirmed' );
* are allowed to add or revoke.
*
* Setting the list of groups to add or revoke to true is equivalent to "any group".
- *
+ *
* For example, to allow sysops to add themselves to the "bot" group:
*
* $wgGroupsAddToSelf = array( 'sysop' => array( 'bot' ) );
@@ -1298,7 +1522,7 @@ $wgImplicitGroups = array( '*', 'user', 'autoconfirmed' );
*
* This allows users in the '*' group (i.e. any user) to remove themselves from
* any group that they happen to be in.
- *
+ *
*/
$wgGroupsAddToSelf = array();
$wgGroupsRemoveFromSelf = array();
@@ -1372,6 +1596,7 @@ $wgAutoConfirmCount = 0;
* array( APCOND_ISIP, ip ), *OR*
* array( APCOND_IPINRANGE, range ), *OR*
* array( APCOND_AGE_FROM_EDIT, seconds since first edit ), *OR*
+ * array( APCOND_BLOCKED ), *OR*
* similar constructs defined by extensions.
*
* If $wgEmailAuthentication is off, APCOND_EMAILCONFIRMED will be true for any
@@ -1412,14 +1637,6 @@ $wgAvailableRights = array();
*/
$wgDeleteRevisionsLimit = 0;
-/**
- * Used to figure out if a user is "active" or not. User::isActiveEditor()
- * sees if a user has made at least $wgActiveUserEditCount number of edits
- * within the last $wgActiveUserDays days.
- */
-$wgActiveUserEditCount = 30;
-$wgActiveUserDays = 30;
-
# Proxy scanner settings
#
@@ -1466,10 +1683,10 @@ $wgCacheEpoch = '20030516000000';
/**
* Bump this number when changing the global style sheets and JavaScript.
* It should be appended in the query string of static CSS and JS includes,
- * to ensure that client-side caches don't keep obsolete copies of global
+ * to ensure that client-side caches do not keep obsolete copies of global
* styles.
*/
-$wgStyleVersion = '207';
+$wgStyleVersion = '270';
# Server-side caching:
@@ -1482,7 +1699,7 @@ $wgStyleVersion = '207';
$wgUseFileCache = false;
/** Directory where the cached page will be saved */
-$wgFileCacheDirectory = false; ///< defaults to "{$wgUploadDirectory}/cache";
+$wgFileCacheDirectory = false; ///< defaults to "$wgCacheDirectory/html";
/**
* When using the file cache, we can store the cached HTML gzipped to save disk
@@ -1581,6 +1798,9 @@ $wgUseSquid = false;
/** If you run Squid3 with ESI support, enable this (default:false): */
$wgUseESI = false;
+/** Send X-Vary-Options header for better caching (requires patched Squid) */
+$wgUseXVO = false;
+
/** Internal server name as known to Squid, if different */
# $wgInternalServer = 'http://yourinternal.tld:8000';
$wgInternalServer = $wgServer;
@@ -1692,7 +1912,7 @@ $wgAllowExternalImagesFrom = '';
* Or false to disable it
*/
$wgEnableImageWhitelist = true;
-
+
/** Allows to move images and other media files */
$wgAllowImageMoving = true;
@@ -1738,6 +1958,26 @@ $wgSpecialPageCacheUpdates = array(
$wgUseTeX = false;
/** Location of the texvc binary */
$wgTexvc = './math/texvc';
+/**
+ * Texvc background color
+ * use LaTeX color format as used in \special function
+ * for transparent background use value 'Transparent' for alpha transparency or
+ * 'transparent' for binary transparency.
+ */
+$wgTexvcBackgroundColor = 'transparent';
+
+/**
+ * Normally when generating math images, we double-check that the
+ * directories we want to write to exist, and that files that have
+ * been generated still exist when we need to bring them up again.
+ *
+ * This lets us give useful error messages in case of permission
+ * problems, and automatically rebuild images that have been lost.
+ *
+ * On a big site with heavy NFS traffic this can be slow and flaky,
+ * so sometimes we want to short-circuit it by setting this to false.
+ */
+$wgMathCheckFiles = true;
#
# Profiling / debugging
@@ -1766,8 +2006,6 @@ $wgUDPProfilerPort = '3811';
$wgDebugProfiling = false;
/** Output debug message on every wfProfileIn/wfProfileOut */
$wgDebugFunctionEntry = 0;
-/** Lots of debugging output from SquidUpdate.php */
-$wgDebugSquid = false;
/*
* Destination for wfIncrStats() data...
@@ -1800,6 +2038,18 @@ $wgSearchHighlightBoundaries = version_compare("5.1", PHP_VERSION, "<")? '[\p{Z}
: '[ ,.;:!?~!@#$%\^&*\(\)+=\-\\|\[\]"\'<>\n\r\/{}]'; // PHP 5.0 workaround
/**
+ * Set to true to have the search engine count total
+ * search matches to present in the Special:Search UI.
+ * Not supported by every search engine shipped with MW.
+ *
+ * This could however be slow on larger wikis, and is pretty flaky
+ * with the current title vs content split. Recommend avoiding until
+ * that's been worked out cleanly; but this may aid in testing the
+ * search UI and API to confirm that the result count works.
+ */
+$wgCountTotalSearchHits = false;
+
+/**
* Template for OpenSearch suggestions, defaults to API action=opensearch
*
* Sites with heavy load would tipically have these point to a custom
@@ -1813,10 +2063,23 @@ $wgOpenSearchTemplate = false;
/**
* Enable suggestions while typing in search boxes
* (results are passed around in OpenSearch format)
+ * Requires $wgEnableOpenSearchSuggest = true;
*/
$wgEnableMWSuggest = false;
/**
+ * Enable OpenSearch suggestions requested by MediaWiki. Set this to
+ * false if you've disabled MWSuggest or another suggestion script and
+ * want reduce load caused by cached scripts pulling suggestions.
+ */
+$wgEnableOpenSearchSuggest = true;
+
+/**
+ * Expiry time for search suggestion responses
+ */
+$wgSearchSuggestCacheExpiry = 1200;
+
+/**
* Template for internal MediaWiki suggestion engine, defaults to API action=opensearch
*
* Placeholders: {searchTerms}, {namespaces}, {dbname}
@@ -1850,6 +2113,11 @@ $wgShowEXIF = function_exists( 'exif_read_data' );
* uploads do work.
*/
$wgRemoteUploads = false;
+
+/**
+ * Disable links to talk pages of anonymous users (IPs) in listings on special
+ * pages like page history, Special:Recentchanges, etc.
+ */
$wgDisableAnonTalk = false;
/**
* Do DELETE/INSERT for link updates instead of incremental
@@ -1900,7 +2168,7 @@ $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' );
/** Files with these extensions will never be allowed as uploads. */
$wgFileBlacklist = array(
# HTML may contain cookie-stealing JavaScript and web bugs
- 'html', 'htm', 'js', 'jsb', 'mhtml', 'mht',
+ 'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht',
# PHP scripts may execute arbitrary code on the server
'php', 'phtml', 'php3', 'php4', 'php5', 'phps',
# Other types that may be interpreted by some servers
@@ -1951,37 +2219,50 @@ $wgNamespacesWithSubpages = array(
NS_USER_TALK => true,
NS_PROJECT_TALK => true,
NS_FILE_TALK => true,
+ NS_MEDIAWIKI => true,
NS_MEDIAWIKI_TALK => true,
NS_TEMPLATE_TALK => true,
NS_HELP_TALK => true,
NS_CATEGORY_TALK => true
);
+/**
+ * Which namespaces have special treatment where they should be preview-on-open
+ * Internaly only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki)
+ * can specify namespaces of pages they have special treatment for
+ */
+$wgPreviewOnOpenNamespaces = array(
+ NS_CATEGORY => true
+);
+
$wgNamespacesToBeSearchedDefault = array(
NS_MAIN => true,
);
/**
- * Additional namespaces to those in $wgNamespacesToBeSearchedDefault that
- * will be added to default search for "project" page inclusive searches
- *
+ * Namespaces to be searched when user clicks the "Help" tab
+ * on Special:Search
+ *
* Same format as $wgNamespacesToBeSearchedDefault
- */
-$wgNamespacesToBeSearchedProject = array(
- NS_USER => true,
- NS_PROJECT => true,
+ */
+$wgNamespacesToBeSearchedHelp = array(
+ NS_PROJECT => true,
NS_HELP => true,
- NS_CATEGORY => true,
);
-$wgUseOldSearchUI = true; // temp testing variable
+/**
+ * If set to true the 'searcheverything' preference will be effective only for logged-in users.
+ * Useful for big wikis to maintain different search profiles for anonymous and logged-in users.
+ *
+ */
+$wgSearchEverythingOnlyLoggedIn = false;
/**
* Site notice shown at the top of each page
*
- * This message can contain wiki text, and can also be set through the
- * MediaWiki:Sitenotice page. You can also provide a separate message for
- * logged-out users using the MediaWiki:Anonnotice page.
+ * MediaWiki:Sitenotice page, which will override this. You can also
+ * provide a separate message for logged-out users using the
+ * MediaWiki:Anonnotice page.
*/
$wgSiteNotice = '';
@@ -1996,7 +2277,7 @@ $wgSiteNotice = '';
$wgMediaHandlers = array(
'image/jpeg' => 'BitmapHandler',
'image/png' => 'BitmapHandler',
- 'image/gif' => 'BitmapHandler',
+ 'image/gif' => 'GIFHandler',
'image/tiff' => 'TiffHandler',
'image/x-ms-bmp' => 'BmpHandler',
'image/x-bmp' => 'BmpHandler',
@@ -2026,8 +2307,8 @@ $wgSharpenParameter = '0x0.4';
/** Reduction in linear dimensions below which sharpening will be enabled */
$wgSharpenReductionThreshold = 0.85;
-/**
- * Temporary directory used for ImageMagick. The directory must exist. Leave
+/**
+ * Temporary directory used for ImageMagick. The directory must exist. Leave
* this set to false to let ImageMagick decide for itself.
*/
$wgImageMagickTempDir = false;
@@ -2084,7 +2365,8 @@ $wgMaxAnimatedGifArea = 1.0e6;
* // JPEG is good for photos, but has no transparency support. Bad for diagrams.
* $wgTiffThumbnailType = array( 'jpg', 'image/jpeg' );
*/
-$wgTiffThumbnailType = false;
+ $wgTiffThumbnailType = false;
+
/**
* If rendered thumbnail files are older than this timestamp, they
* will be rerendered on demand as if the file didn't already exist.
@@ -2115,9 +2397,15 @@ $wgIgnoreImageErrors = false;
*/
$wgGenerateThumbnailOnParse = true;
-/** Whether or not to use image resizing */
+/**
+* Show thumbnails for old images on the image description page
+*/
+$wgShowArchiveThumbnails = true;
+
+/** Obsolete, always true, kept for compatibility with extensions */
$wgUseImageResize = true;
+
/** Set $wgCommandLineMode if it's not set already, to avoid notices */
if( !isset( $wgCommandLineMode ) ) {
$wgCommandLineMode = false;
@@ -2126,6 +2414,13 @@ if( !isset( $wgCommandLineMode ) ) {
/** For colorized maintenance script output, is your terminal background dark ? */
$wgCommandLineDarkBg = false;
+/**
+ * Array for extensions to register their maintenance scripts with the
+ * system. The key is the name of the class and the value is the full
+ * path to the file
+ */
+$wgMaintenanceScripts = array();
+
#
# Recent changes settings
#
@@ -2136,9 +2431,9 @@ $wgPutIPinRC = true;
/**
* Recentchanges items are periodically purged; entries older than this many
* seconds will go.
- * For one week : 7 * 24 * 3600
+ * Default: 13 weeks = about three months
*/
-$wgRCMaxAge = 7 * 24 * 3600;
+$wgRCMaxAge = 13 * 7 * 24 * 3600;
/**
* Filter $wgRCLinkDays by $wgRCMaxAge to avoid showing links for numbers higher than what will be stored.
@@ -2167,19 +2462,19 @@ $wgRC2UDPPort = false;
/**
* Prefix to prepend to each UDP packet.
* This can be used to identify the wiki. A script is available called
- * mxircecho.py which listens on a UDP port, and uses a prefix ending in a
+ * mxircecho.py which listens on a UDP port, and uses a prefix ending in a
* tab to identify the IRC channel to send the log line to.
*/
$wgRC2UDPPrefix = '';
/**
- * If this is set to true, $wgLocalInterwiki will be prepended to links in the
+ * If this is set to true, $wgLocalInterwiki will be prepended to links in the
* IRC feed. If this is set to a string, that string will be used as the prefix.
*/
$wgRC2UDPInterwikiPrefix = false;
/**
- * Set to true to omit "bot" edits (by users with the bot permission) from the
+ * Set to true to omit "bot" edits (by users with the bot permission) from the
* UDP feed.
*/
$wgRC2UDPOmitBots = false;
@@ -2191,16 +2486,6 @@ $wgRC2UDPOmitBots = false;
*/
$wgEnableNewpagesUserFilter = true;
-/**
- * Whether to use metadata edition
- * This will put categories, language links and allowed templates in a separate text box
- * while editing pages
- * EXPERIMENTAL
- */
-$wgUseMetadataEdit = false;
-/** Full name (including namespace) of the page containing templates names that will be allowed as metadata */
-$wgMetadataWhitelist = '';
-
#
# Copyright and credits settings
#
@@ -2212,13 +2497,13 @@ $wgEnableCreativeCommonsRdf = false;
/** Override for copyright metadata.
* TODO: these options need documentation
*/
-$wgRightsPage = NULL;
-$wgRightsUrl = NULL;
-$wgRightsText = NULL;
-$wgRightsIcon = NULL;
+$wgRightsPage = null;
+$wgRightsUrl = null;
+$wgRightsText = null;
+$wgRightsIcon = null;
/** Set this to some HTML to override the rights icon with an arbitrary logo */
-$wgCopyrightIcon = NULL;
+$wgCopyrightIcon = null;
/** Set this to true if you want detailed copyright information forms on Upload. */
$wgUseCopyrightUpload = false;
@@ -2251,6 +2536,18 @@ $wgShowCreditsIfMax = true;
$wgCapitalLinks = true;
/**
+ * @since 1.16 - This can now be set per-namespace. Some special namespaces (such
+ * as Special, see MWNamespace::$alwaysCapitalizedNamespaces for the full list) must be
+ * true by default (and setting them has no effect), due to various things that
+ * require them to be so. Also, since Talk namespaces need to directly mirror their
+ * associated content namespaces, the values for those are ignored in favor of the
+ * subject namespace's setting. Setting for NS_MEDIA is taken automatically from
+ * NS_FILE.
+ * EX: $wgCapitalLinkOverrides[ NS_FILE ] = false;
+ */
+$wgCapitalLinkOverrides = array();
+
+/**
* List of interwiki prefixes for wikis we'll accept as sources for
* Special:Import (for sysops). Since complete page history can be imported,
* these should be 'trusted'.
@@ -2283,6 +2580,9 @@ $wgExportAllowHistory = true;
*/
$wgExportMaxHistory = 0;
+/**
+* Return distinct author list (when not returning full history)
+*/
$wgExportAllowListContributors = false ;
/**
@@ -2299,8 +2599,8 @@ $wgExportAllowListContributors = false ;
$wgExportMaxLinkDepth = 0;
/**
- * Whether to allow the "export all pages in namespace" option
- */
+* Whether to allow the "export all pages in namespace" option
+*/
$wgExportFromNamespaces = false;
/**
@@ -2311,6 +2611,7 @@ $wgExportFromNamespaces = false;
* May be an array of regexes or a single string for backwards compatibility.
*
* See http://en.wikipedia.org/wiki/Regular_expression
+ * Note that each regex needs a beginning/end delimiter, eg: # or /
*/
$wgSpamRegex = array();
@@ -2375,7 +2676,10 @@ $wgValidateAllHtml = false;
/** See list of skins and their symbolic names in languages/Language.php */
$wgDefaultSkin = 'monobook';
-/** Should we allow the user's to select their own skin that will override the default? */
+/**
+* Should we allow the user's to select their own skin that will override the default?
+* @deprecated in 1.16, use $wgHiddenPrefs[] = 'skin' to disable it
+*/
$wgAllowUserSkin = true;
/**
@@ -2475,11 +2779,21 @@ $wgDefaultUserOptions = array(
'watchdeletion' => 0,
'noconvertlink' => 0,
'gender' => 'unknown',
+ 'ccmeonemails' => 0,
+ 'disablemail' => 0,
+ 'editfont' => 'default',
);
-/** Whether or not to allow and use real name fields. Defaults to true. */
+/**
+ * Whether or not to allow and use real name fields.
+ * @deprecated in 1.16, use $wgHiddenPrefs[] = 'realname' below to disable real
+ * names
+ */
$wgAllowRealName = true;
+/** An array of preferences to not show for the user */
+$wgHiddenPrefs = array();
+
/*****************************************************************************
* Extensions
*/
@@ -2496,10 +2810,15 @@ $wgExtensionFunctions = array();
$wgSkinExtensionFunctions = array();
/**
- * Extension messages files
- * Associative array mapping extension name to the filename where messages can be found.
- * The file must create a variable called $messages.
- * When the messages are needed, the extension should call wfLoadExtensionMessages().
+ * Extension messages files.
+ *
+ * Associative array mapping extension name to the filename where messages can be
+ * found. The file should contain variable assignments. Any of the variables
+ * present in languages/messages/MessagesEn.php may be defined, but $messages
+ * is the most common.
+ *
+ * Variables defined in extensions will override conflicting variables defined
+ * in the core.
*
* Example:
* $wgExtensionMessagesFiles['ConfirmEdit'] = dirname(__FILE__).'/ConfirmEdit.i18n.php';
@@ -2509,13 +2828,7 @@ $wgExtensionMessagesFiles = array();
/**
* Aliases for special pages provided by extensions.
- * Associative array mapping special page to array of aliases. First alternative
- * for each special page will be used as the normalised name for it. English
- * aliases will be added to the end of the list so that they always work. The
- * file must define a variable $aliases.
- *
- * Example:
- * $wgExtensionAliasesFiles['Translate'] = dirname(__FILE__).'/Translate.alias.php';
+ * @deprecated Use $specialPageAliases in a file referred to by $wgExtensionMessagesFiles
*/
$wgExtensionAliasesFiles = array();
@@ -2560,8 +2873,8 @@ $wgAutoloadClasses = array();
* <code>
* $wgExtensionCredits[$type][] = array(
* 'name' => 'Example extension',
- * 'version' => 1.9,
- * 'svn-revision' => '$LastChangedRevision: 70070 $',
+ * 'version' => 1.9,
+ * 'path' => __FILE__,
* 'author' => 'Foo Barstein',
* 'url' => 'http://wwww.example.com/Example%20Extension/',
* 'description' => 'An example extension',
@@ -2570,6 +2883,8 @@ $wgAutoloadClasses = array();
* </code>
*
* Where $type is 'specialpage', 'parserhook', 'variable', 'media' or 'other'.
+ * Where 'descriptionmsg' can be an array with message key and parameters:
+ * 'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),
*/
$wgExtensionCredits = array();
/*
@@ -2596,7 +2911,11 @@ $wgUseSiteJs = true;
/** Use the site's Cascading Style Sheets (CSS)? */
$wgUseSiteCss = true;
-/** Filter for Special:Randompage. Part of a WHERE clause */
+/**
+ * Filter for Special:Randompage. Part of a WHERE clause
+ * @deprecated as of 1.16, use the SpecialRandomGetRandomTitle hook
+*/
+
$wgExtraRandompageSQL = false;
/** Allow the "info" action, very inefficient at the moment */
@@ -2608,9 +2927,6 @@ $wgMaxTocLevel = 999;
/** Name of the external diff engine to use */
$wgExternalDiffEngine = false;
-/** Whether to use inline diff */
-$wgEnableHtmlDiff = false;
-
/** Use RC Patrolling to check for vandalism */
$wgUseRCPatrol = true;
@@ -2646,6 +2962,12 @@ $wgFeedDiffCutoff = 32768;
$wgOverrideSiteFeed = array();
/**
+ * Which feed types should we provide by default? This can include 'rss',
+ * 'atom', neither, or both.
+ */
+$wgAdvertisedFeedTypes = array( 'atom' );
+
+/**
* Additional namespaces. If the namespaces defined in Language.php and
* Namespace.php are insufficient, you can create new ones here, for example,
* to import Help files in other languages.
@@ -2662,7 +2984,7 @@ $wgOverrideSiteFeed = array();
# 102 => "Aide",
# 103 => "Discussion_Aide"
# );
-$wgExtraNamespaces = NULL;
+$wgExtraNamespaces = null;
/**
* Namespace aliases
@@ -2777,10 +3099,10 @@ $wgBrowserBlackList = array(
/**
* Fake out the timezone that the server thinks it's in. This will be used for
* date display and not for what's stored in the DB. Leave to null to retain
- * your server's OS-based timezone value. This is the same as the timezone.
+ * your server's OS-based timezone value.
*
- * This variable is currently used ONLY for signature formatting, not for
- * anything else.
+ * This variable is currently used only for signature formatting and for local
+ * time/date parser variables ({{LOCALTIME}} etc.)
*
* Timezones can be translated by editing MediaWiki messages of type
* timezone-nameinlowercase like timezone-utc.
@@ -2802,10 +3124,10 @@ $wgLocaltimezone = null;
* $wgLocalTZoffset = date("Z") / 60;
*
* If your server is not configured for the timezone you want, you can set
- * this in conjunction with the signature timezone and override the TZ
- * environment variable like so:
+ * this in conjunction with the signature timezone and override the PHP default
+ * timezone like so:
* $wgLocaltimezone="Europe/Berlin";
- * putenv("TZ=$wgLocaltimezone");
+ * date_default_timezone_set( $wgLocaltimezone );
* $wgLocalTZoffset = date("Z") / 60;
*
* Leave at NULL to show times in universal time (UTC/GMT).
@@ -2871,6 +3193,7 @@ $wgLogTypes = array( '',
* Users without this will not see it in the option menu and can not view it
* Restricted logs are not added to recent changes
* Logs should remain non-transcludable
+ * Format: logtype => permissiontype
*/
$wgLogRestrictions = array(
'suppress' => 'suppressionlog'
@@ -2881,7 +3204,7 @@ $wgLogRestrictions = array(
*
* This is associative array of log type => boolean "hide by default"
*
- * See $wgLogTypes for a list of available log types.
+ * See $wgLogTypes for a list of available log types.
*
* For example:
* $wgFilterLogTypes => array(
@@ -2890,7 +3213,7 @@ $wgLogRestrictions = array(
* );
*
* Will display show/hide links for the move and import logs. Move logs will be
- * hidden by default unless the link is clicked. Import logs will be shown by
+ * hidden by default unless the link is clicked. Import logs will be shown by
* default, and hidden when the link is clicked.
*
* A message of the form log-show-hide-<type> should be added, and will be used
@@ -3025,7 +3348,7 @@ $wgSpecialPageGroups = array(
'Newimages' => 'changes',
'Newpages' => 'changes',
'Log' => 'changes',
- 'Tags' => 'changes',
+ 'Tags' => 'changes',
'Upload' => 'media',
'Listfiles' => 'media',
@@ -3034,6 +3357,7 @@ $wgSpecialPageGroups = array(
'Filepath' => 'media',
'Listusers' => 'users',
+ 'Activeusers' => 'users',
'Listgrouprights' => 'users',
'Ipblocklist' => 'users',
'Contributions' => 'users',
@@ -3088,14 +3412,6 @@ $wgSpecialPageGroups = array(
);
/**
- * Experimental preview feature to fetch rendered text
- * over an XMLHttpRequest from JavaScript instead of
- * forcing a submit and reload of the whole page.
- * Leave disabled unless you're testing it.
- */
-$wgLivePreview = false;
-
-/**
* Disable the internal MySQL-based search, to allow it to be
* implemented by an extension instead.
*/
@@ -3180,7 +3496,7 @@ $wgNamespaceRobotPolicies = array();
* 'Main_Page' => 'noindex,follow',
* # "Project", not the actual project name!
* 'Project:X' => 'index,follow',
- * # Needs to be "Abc", not "abc" (unless $wgCapitalLinks is false)!
+ * # Needs to be "Abc", not "abc" (unless $wgCapitalLinks is false for that namespace)!
* 'abc' => 'noindex,nofollow'
* );
*/
@@ -3199,11 +3515,11 @@ $wgExemptFromUserRobotsControl = null;
* Specifies the minimal length of a user password. If set to 0, empty pass-
* words are allowed.
*/
-$wgMinimalPasswordLength = 0;
+$wgMinimalPasswordLength = 1;
/**
* Activate external editor interface for files and pages
- * See http://meta.wikimedia.org/wiki/Help:External_editors
+ * See http://www.mediawiki.org/wiki/Manual:External_editors
*/
$wgUseExternalEditor = true;
@@ -3231,10 +3547,35 @@ $wgDisabledActions = array();
$wgDisableHardRedirects = false;
/**
- * Use http.dnsbl.sorbs.net to check for open proxies
+ * Set to false to disable application of access keys and tooltips,
+ * eg to avoid keyboard conflicts with system keys or as a low-level
+ * optimization.
+ */
+$wgEnableTooltipsAndAccesskeys = true;
+
+/**
+ * Whether to use DNS blacklists in $wgDnsBlacklistUrls to check for open proxies
+ * @since 1.16
+ */
+$wgEnableDnsBlacklist = false;
+
+/**
+ * @deprecated Use $wgEnableDnsBlacklist instead, only kept for backward
+ * compatibility
*/
$wgEnableSorbs = false;
-$wgSorbsUrl = 'http.dnsbl.sorbs.net.';
+
+/**
+ * List of DNS blacklists to use, if $wgEnableDnsBlacklist is true
+ * @since 1.16
+ */
+$wgDnsBlacklistUrls = array( 'http.dnsbl.sorbs.net.' );
+
+/**
+ * @deprecated Use $wgDnsBlacklistUrls instead, only kept for backward
+ * compatibility
+ */
+$wgSorbsUrl = array();
/**
* Proxy whitelist, list of addresses that are assumed to be non-proxy despite
@@ -3266,7 +3607,7 @@ $wgRateLimits = array(
'subnet' => null,
),
'mailpassword' => array(
- 'anon' => NULL,
+ 'anon' => null,
),
'emailuser' => array(
'user' => null,
@@ -3364,9 +3705,14 @@ $wgTrustedMediaFormats= array(
$wgAllowSpecialInclusion = true;
/**
- * Timeout for HTTP requests done via CURL
+ * Timeout for HTTP requests done internally
+ */
+$wgHTTPTimeout = 25;
+
+/**
+ * Timeout for Asynchronous (background) HTTP requests
*/
-$wgHTTPTimeout = 3;
+$wgAsyncHTTPTimeout = 25;
/**
* Proxy to use for CURL requests.
@@ -3409,7 +3755,7 @@ $wgUpdateRowsPerJob = 500;
/**
* Number of rows to update per query
*/
-$wgUpdateRowsPerQuery = 10;
+$wgUpdateRowsPerQuery = 100;
/**
* Enable AJAX framework
@@ -3435,7 +3781,7 @@ $wgAjaxWatch = true;
$wgAjaxUploadDestCheck = true;
/**
- * Enable previewing licences via AJAX
+ * Enable previewing licences via AJAX. Also requires $wgEnableAPI to be true.
*/
$wgAjaxLicensePreview = true;
@@ -3495,9 +3841,9 @@ $wgMaxShellFileSize = 102400;
$wgMaxShellTime = 180;
/**
-* Executable name of PHP cli client (php/php5)
-*/
-$wgPhpCli = 'php';
+ * Executable path of the PHP cli binary (php/php5). Should be set up on install.
+ */
+$wgPhpCli = '/usr/bin/php';
/**
* DJVU settings
@@ -3515,6 +3861,13 @@ $wgDjvuDump = null;
$wgDjvuRenderer = null;
/**
+ * Path of the djvutxt DJVU text extraction utility
+ * Enable this and $wgDjvuDump to enable text layer extraction from djvu files
+ */
+# $wgDjvuTxt = 'djvutxt';
+$wgDjvuTxt = null;
+
+/**
* Path of the djvutoxml executable
* This works like djvudump except much, much slower as of version 3.5.
*
@@ -3582,6 +3935,24 @@ $wgAPIMaxResultSize = 8388608;
$wgAPIMaxUncachedDiffs = 1;
/**
+ * Log file or URL (TCP or UDP) to log API requests to, or false to disable
+ * API request logging
+ */
+$wgAPIRequestLog = false;
+
+/**
+ * Cache the API help text for up to an hour. Disable this during API
+ * debugging and development
+ */
+$wgAPICacheHelp = true;
+
+/**
+ * Set the timeout for the API help text cache. Ignored if $wgAPICacheHelp
+ * is false.
+ */
+$wgAPICacheHelpTimeout = 60*60;
+
+/**
* Parser test suite files to be run by parserTests.php when no specific
* filename is passed to it.
*
@@ -3595,6 +3966,21 @@ $wgParserTestFiles = array(
);
/**
+ * If configured, specifies target CodeReview installation to send test
+ * result data from 'parserTests.php --upload'
+ *
+ * Something like this:
+ * $wgParserTestRemote = array(
+ * 'api-url' => 'http://www.mediawiki.org/w/api.php',
+ * 'repo' => 'MediaWiki',
+ * 'suite' => 'ParserTests',
+ * 'path' => '/trunk/phase3', // not used client-side; for reference
+ * 'secret' => 'qmoicj3mc4mcklmqw', // Shared secret used in HMAC validation
+ * );
+ */
+$wgParserTestRemote = false;
+
+/**
* Break out of framesets. This can be used to prevent external sites from
* framing your site with ads.
*/
@@ -3652,6 +4038,12 @@ $wgParserConf = array(
$wgLinkHolderBatchSize = 1000;
/**
+ * By default MediaWiki does not register links pointing to same server in externallinks dataset,
+ * use this value to override:
+ */
+$wgRegisterInternalExternals = false;
+
+/**
* Hooks that are used for outputting exceptions. Format is:
* $wgExceptionHooks[] = $funcname
* or:
@@ -3661,8 +4053,11 @@ $wgLinkHolderBatchSize = 1000;
$wgExceptionHooks = array();
/**
- * Page property link table invalidation lists. Should only be set by exten-
- * sions.
+ * Page property link table invalidation lists. When a page property
+ * changes, this may require other link tables to be updated (eg
+ * adding __HIDDENCAT__ means the hiddencat tracking category will
+ * have been added, so the categorylinks table needs to be rebuilt).
+ * This array can be added to by extensions.
*/
$wgPagePropLinkInvalidations = array(
'hiddencat' => 'categorylinks',
@@ -3687,7 +4082,7 @@ $wgMaximumMovedPages = 100;
/**
* Fix double redirects after a page move.
- * Tends to conflict with page move vandalism, use only on a private wiki.
+ * Tends to conflict with page move vandalism, use only on a private wiki.
*/
$wgFixDoubleRedirects = false;
@@ -3709,7 +4104,7 @@ $wgMaxRedirects = 1;
* other namespaces cannot be invalidated by this variable.
*/
$wgInvalidRedirectTargets = array( 'Filepath', 'Mypage', 'Mytalk' );
-
+
/**
* Array of namespaces to generate a sitemap for when the
* maintenance/generateSitemap.php script is run, or false if one is to be ge-
@@ -3744,11 +4139,15 @@ $wgEdititis = false;
$wgUniversalEditButton = true;
/**
- * Allow id's that don't conform to HTML4 backward compatibility requirements.
- * This is currently for testing; if all goes well, this option will be removed
- * and the functionality will be enabled universally.
+ * Should we allow a broader set of characters in id attributes, per HTML5? If
+ * not, use only HTML 4-compatible IDs. This option is for testing -- when the
+ * functionality is ready, it will be on by default with no option.
+ *
+ * Currently this appears to work fine in Chrome 4 and 5, Firefox 3.5 and 3.6, IE6
+ * and 8, and Opera 10.50, but it fails in Opera 10.10: Unicode IDs don't seem
+ * to work as anchors. So not quite ready for general use yet.
*/
-$wgEnforceHtmlIds = true;
+$wgExperimentalHtmlIds = false;
/**
* Search form behavior
@@ -3758,6 +4157,28 @@ $wgEnforceHtmlIds = true;
$wgUseTwoButtonsSearchForm = true;
/**
+ * Search form behavior for Vector skin only
+ * true = use an icon search button
+ * false = use Go & Search buttons
+ */
+$wgVectorUseSimpleSearch = false;
+
+/**
+ * Watch and unwatch as an icon rather than a link for Vector skin only
+ * true = use an icon watch/unwatch button
+ * false = use watch/unwatch text link
+ */
+$wgVectorUseIconWatch = false;
+
+/**
+ * Add extra stylesheets for Vector - This is only being used so that we can play around with different options while
+ * keeping our CSS code in the SVN and not having to change the main Vector styles. This will probably go away later on.
+ * null = add no extra styles
+ * array = list of style paths relative to skins/vector/
+ */
+$wgVectorExtraStyles = null;
+
+/**
* Preprocessor caching threshold
*/
$wgPreprocessorCacheThreshold = 1000;
@@ -3791,3 +4212,122 @@ $wgInvalidUsernameCharacters = '@';
* modify the user rights of those users via Special:UserRights
*/
$wgUserrightsInterwikiDelimiter = '@';
+
+/**
+ * Configuration for processing pool control, for use in high-traffic wikis.
+ * An implementation is provided in the PoolCounter extension.
+ *
+ * This configuration array maps pool types to an associative array. The only
+ * defined key in the associative array is "class", which gives the class name.
+ * The remaining elements are passed through to the class as constructor
+ * parameters. Example:
+ *
+ * $wgPoolCounterConf = array( 'Article::view' => array(
+ * 'class' => 'PoolCounter_Client',
+ * ... any extension-specific options...
+ * );
+ */
+$wgPoolCounterConf = null;
+
+/**
+ * Use some particular type of external authentication. The specific
+ * authentication module you use will normally require some extra settings to
+ * be specified.
+ *
+ * null indicates no external authentication is to be used. Otherwise,
+ * $wgExternalAuthType must be the name of a non-abstract class that extends
+ * ExternalUser.
+ *
+ * Core authentication modules can be found in includes/extauth/.
+ */
+$wgExternalAuthType = null;
+
+/**
+ * Configuration for the external authentication. This may include arbitrary
+ * keys that depend on the authentication mechanism. For instance,
+ * authentication against another web app might require that the database login
+ * info be provided. Check the file where your auth mechanism is defined for
+ * info on what to put here.
+ */
+$wgExternalAuthConfig = array();
+
+/**
+ * When should we automatically create local accounts when external accounts
+ * already exist, if using ExternalAuth? Can have three values: 'never',
+ * 'login', 'view'. 'view' requires the external database to support cookies,
+ * and implies 'login'.
+ *
+ * TODO: Implement 'view' (currently behaves like 'login').
+ */
+$wgAutocreatePolicy = 'login';
+
+/**
+ * Policies for how each preference is allowed to be changed, in the presence
+ * of external authentication. The keys are preference keys, e.g., 'password'
+ * or 'emailaddress' (see Preferences.php et al.). The value can be one of the
+ * following:
+ *
+ * - local: Allow changes to this pref through the wiki interface but only
+ * apply them locally (default).
+ * - semiglobal: Allow changes through the wiki interface and try to apply them
+ * to the foreign database, but continue on anyway if that fails.
+ * - global: Allow changes through the wiki interface, but only let them go
+ * through if they successfully update the foreign database.
+ * - message: Allow no local changes for linked accounts; replace the change
+ * form with a message provided by the auth plugin, telling the user how to
+ * change the setting externally (maybe providing a link, etc.). If the auth
+ * plugin provides no message for this preference, hide it entirely.
+ *
+ * Accounts that are not linked to an external account are never affected by
+ * this setting. You may want to look at $wgHiddenPrefs instead.
+ * $wgHiddenPrefs supersedes this option.
+ *
+ * TODO: Implement message, global.
+ */
+$wgAllowPrefChange = array();
+
+
+/**
+ * Settings for incoming cross-site AJAX requests:
+ * Newer browsers support cross-site AJAX when the target resource allows requests
+ * from the origin domain by the Access-Control-Allow-Origin header.
+ * This is currently only used by the API (requests to api.php)
+ * $wgCrossSiteAJAXdomains can be set using a wildcard syntax:
+ *
+ * '*' matches any number of characters
+ * '?' matches any 1 character
+ *
+ * Example:
+ $wgCrossSiteAJAXdomains = array(
+ 'www.mediawiki.org',
+ '*.wikipedia.org',
+ '*.wikimedia.org',
+ '*.wiktionary.org',
+ );
+ *
+ */
+$wgCrossSiteAJAXdomains = array();
+
+/**
+ * Domains that should not be allowed to make AJAX requests,
+ * even if they match one of the domains allowed by $wgCrossSiteAJAXdomains
+ * Uses the same syntax as $wgCrossSiteAJAXdomains
+ */
+
+$wgCrossSiteAJAXdomainExceptions = array();
+
+/**
+ * The minimum amount of memory that MediaWiki "needs"; MediaWiki will try to raise PHP's memory limit if it's below this amount.
+ */
+$wgMemoryLimit = "50M";
+
+/**
+ * To disable file delete/restore temporarily
+ */
+$wgUploadMaintenance = false;
+
+/**
+ * Use old names for change_tags indices.
+ */
+$wgOldChangeTagsIndex = false;
+
diff --git a/includes/Defines.php b/includes/Defines.php
index 8de6c5a1..7be569af 100644
--- a/includes/Defines.php
+++ b/includes/Defines.php
@@ -18,6 +18,7 @@ define( 'DBO_IGNORE', 4 );
define( 'DBO_TRX', 8 );
define( 'DBO_DEFAULT', 16 );
define( 'DBO_PERSISTENT', 32 );
+define( 'DBO_SYSDBA', 64 ); //for oracle maintenance
/**#@-*/
# Valid database indexes
@@ -102,7 +103,7 @@ define( 'CACHE_ANYTHING', -1 ); // Use anything, as long as it works
define( 'CACHE_NONE', 0 ); // Do not cache
define( 'CACHE_DB', 1 ); // Store cache objects in the DB
define( 'CACHE_MEMCACHED', 2 ); // MemCached, must specify servers in $wgMemCacheServers
-define( 'CACHE_ACCEL', 3 ); // eAccelerator or Turck, whichever is available
+define( 'CACHE_ACCEL', 3 ); // eAccelerator
define( 'CACHE_DBA', 4 ); // Use PHP's DBA extension to store in a DBM-style database
/**#@-*/
@@ -200,6 +201,7 @@ require_once dirname(__FILE__).'/normal/UtfNormalDefines.php';
# Hook support constants
define( 'MW_SUPPORTS_EDITFILTERMERGED', 1 );
define( 'MW_SUPPORTS_PARSERFIRSTCALLINIT', 1 );
+define( 'MW_SUPPORTS_LOCALISATIONCACHE', 1 );
# Allowed values for Parser::$mOutputType
# Parameter to Parser::startExternalParse().
@@ -227,3 +229,4 @@ define( 'APCOND_INGROUPS', 4 );
define( 'APCOND_ISIP', 5 );
define( 'APCOND_IPINRANGE', 6 );
define( 'APCOND_AGE_FROM_EDIT', 7 );
+define( 'APCOND_BLOCKED', 8 );
diff --git a/includes/DjVuImage.php b/includes/DjVuImage.php
index 8e7caf63..75df0fd5 100644
--- a/includes/DjVuImage.php
+++ b/includes/DjVuImage.php
@@ -224,7 +224,7 @@ class DjVuImage {
* @return string
*/
function retrieveMetaData() {
- global $wgDjvuToXML, $wgDjvuDump;
+ global $wgDjvuToXML, $wgDjvuDump, $wgDjvuTxt;
if ( isset( $wgDjvuDump ) ) {
# djvudump is faster as of version 3.5
# http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
@@ -242,6 +242,30 @@ class DjVuImage {
} else {
$xml = null;
}
+ # Text layer
+ if ( isset( $wgDjvuTxt ) ) {
+ wfProfileIn( 'djvutxt' );
+ $cmd = wfEscapeShellArg( $wgDjvuTxt ) . ' --detail=page ' . wfEscapeShellArg( $this->mFilename ) ;
+ wfDebug( __METHOD__.": $cmd\n" );
+ $txt = wfShellExec( $cmd, $retval );
+ wfProfileOut( 'djvutxt' );
+ if( $retval == 0) {
+ # Get rid of invalid UTF-8, strip control characters
+ if( is_callable( 'iconv' ) ) {
+ wfSuppressWarnings();
+ $txt = iconv( "UTF-8","UTF-8//IGNORE", $txt );
+ wfRestoreWarnings();
+ } else {
+ $txt = UtfNormal::cleanUp( $txt );
+ }
+ $txt = preg_replace( "/[\013\035\037]/", "", $txt );
+ $txt = htmlspecialchars($txt);
+ $txt = preg_replace( "/\((page\s[\d-]*\s[\d-]*\s[\d-]*\s[\d-]*\s*\&quot;([^<]*?)\&quot;\s*|)\)/s", "<PAGE value=\"$2\" />", $txt );
+ $txt = "<DjVuTxt>\n<HEAD></HEAD>\n<BODY>\n" . $txt . "</BODY>\n</DjVuTxt>\n";
+ $xml = preg_replace( "/<DjVuXML>/", "<mw-djvu><DjVuXML>", $xml );
+ $xml = $xml . $txt. '</mw-djvu>' ;
+ }
+ }
return $xml;
}
diff --git a/includes/DoubleRedirectJob.php b/includes/DoubleRedirectJob.php
index 889beecf..0857408a 100644
--- a/includes/DoubleRedirectJob.php
+++ b/includes/DoubleRedirectJob.php
@@ -1,13 +1,19 @@
<?php
+/**
+ * Job to fix double redirects after moving a page
+ *
+ * @ingroup JobQueue
+ */
class DoubleRedirectJob extends Job {
var $reason, $redirTitle, $destTitleText;
static $user;
/**
* Insert jobs into the job queue to fix redirects to the given title
- * @param string $type The reason for the fix, see message double-redirect-fixed-<reason>
- * @param Title $redirTitle The title which has changed, redirects pointing to this title are fixed
+ * @param $reason String: the reason for the fix, see message double-redirect-fixed-<reason>
+ * @param $redirTitle Title: the title which has changed, redirects pointing to this title are fixed
+ * @param $destTitle Not used
*/
public static function fixRedirects( $reason, $redirTitle, $destTitle = false ) {
# Need to use the master to get the redirect table updated in the same transaction
@@ -116,7 +122,7 @@ class DoubleRedirectJob extends Job {
/**
* Get the final destination of a redirect
- * Returns false if the specified title is not a redirect, or if it is a circular redirect
+ * @return false if the specified title is not a redirect, or if it is a circular redirect
*/
public static function getFinalDestination( $title ) {
$dbw = wfGetDB( DB_MASTER );
diff --git a/includes/EditPage.php b/includes/EditPage.php
index 3589b52d..b4cbf0de 100644
--- a/includes/EditPage.php
+++ b/includes/EditPage.php
@@ -17,37 +17,38 @@
* usually the same, but they are now allowed to be different.
*/
class EditPage {
- const AS_SUCCESS_UPDATE = 200;
- const AS_SUCCESS_NEW_ARTICLE = 201;
- const AS_HOOK_ERROR = 210;
- const AS_FILTERING = 211;
- const AS_HOOK_ERROR_EXPECTED = 212;
- const AS_BLOCKED_PAGE_FOR_USER = 215;
- const AS_CONTENT_TOO_BIG = 216;
- const AS_USER_CANNOT_EDIT = 217;
- const AS_READ_ONLY_PAGE_ANON = 218;
- const AS_READ_ONLY_PAGE_LOGGED = 219;
- const AS_READ_ONLY_PAGE = 220;
- const AS_RATE_LIMITED = 221;
- const AS_ARTICLE_WAS_DELETED = 222;
- const AS_NO_CREATE_PERMISSION = 223;
- const AS_BLANK_ARTICLE = 224;
- const AS_CONFLICT_DETECTED = 225;
- const AS_SUMMARY_NEEDED = 226;
- const AS_TEXTBOX_EMPTY = 228;
- const AS_MAX_ARTICLE_SIZE_EXCEEDED = 229;
- const AS_OK = 230;
- const AS_END = 231;
- const AS_SPAM_ERROR = 232;
- const AS_IMAGE_REDIRECT_ANON = 233;
- const AS_IMAGE_REDIRECT_LOGGED = 234;
+ const AS_SUCCESS_UPDATE = 200;
+ const AS_SUCCESS_NEW_ARTICLE = 201;
+ const AS_HOOK_ERROR = 210;
+ const AS_FILTERING = 211;
+ const AS_HOOK_ERROR_EXPECTED = 212;
+ const AS_BLOCKED_PAGE_FOR_USER = 215;
+ const AS_CONTENT_TOO_BIG = 216;
+ const AS_USER_CANNOT_EDIT = 217;
+ const AS_READ_ONLY_PAGE_ANON = 218;
+ const AS_READ_ONLY_PAGE_LOGGED = 219;
+ const AS_READ_ONLY_PAGE = 220;
+ const AS_RATE_LIMITED = 221;
+ const AS_ARTICLE_WAS_DELETED = 222;
+ const AS_NO_CREATE_PERMISSION = 223;
+ const AS_BLANK_ARTICLE = 224;
+ const AS_CONFLICT_DETECTED = 225;
+ const AS_SUMMARY_NEEDED = 226;
+ const AS_TEXTBOX_EMPTY = 228;
+ const AS_MAX_ARTICLE_SIZE_EXCEEDED = 229;
+ const AS_OK = 230;
+ const AS_END = 231;
+ const AS_SPAM_ERROR = 232;
+ const AS_IMAGE_REDIRECT_ANON = 233;
+ const AS_IMAGE_REDIRECT_LOGGED = 234;
var $mArticle;
var $mTitle;
var $action;
- var $mMetaData = '';
var $isConflict = false;
var $isCssJsSubpage = false;
+ var $isCssSubpage = false;
+ var $isJsSubpage = false;
var $deletedSinceEdit = false;
var $formtype;
var $firsttime;
@@ -65,13 +66,14 @@ class EditPage {
#var $mPreviewTemplates;
var $mParserOutput;
var $mBaseRevision = false;
+ var $mShowSummaryField = true;
# Form values
var $save = false, $preview = false, $diff = false;
var $minoredit = false, $watchthis = false, $recreate = false;
- var $textbox1 = '', $textbox2 = '', $summary = '';
+ var $textbox1 = '', $textbox2 = '', $summary = '', $nosummary = false;
var $edittime = '', $section = '', $starttime = '';
- var $oldid = 0, $editintro = '', $scrolltop = null;
+ var $oldid = 0, $editintro = '', $scrolltop = null, $bot = true;
# Placeholders for text injection by hooks (must be HTML)
# extensions should take care to _append_ to the present value
@@ -81,6 +83,8 @@ class EditPage {
public $editFormTextAfterWarn;
public $editFormTextAfterTools;
public $editFormTextBottom;
+ public $editFormTextAfterContent;
+ public $previewTextAfterContent;
/* $didSave should be set to true whenever an article was succesfully altered. */
public $didSave = false;
@@ -103,15 +107,20 @@ class EditPage {
$this->editFormTextBeforeContent =
$this->editFormTextAfterWarn =
$this->editFormTextAfterTools =
- $this->editFormTextBottom = "";
+ $this->editFormTextBottom =
+ $this->editFormTextAfterContent =
+ $this->previewTextAfterContent =
+ $this->mPreloadText = "";
}
-
+
function getArticle() {
return $this->mArticle;
}
+
/**
* Fetch initial editing page content.
+ * @returns mixed string on success, $def_text for invalid sections
* @private
*/
function getContent( $def_text = '' ) {
@@ -120,7 +129,10 @@ class EditPage {
wfProfileIn( __METHOD__ );
# Get variables from query string :P
$section = $wgRequest->getVal( 'section' );
- $preload = $wgRequest->getVal( 'preload' );
+
+ $preload = $wgRequest->getVal( 'preload',
+ // Custom preload text for new sections
+ $section === 'new' ? 'MediaWiki:addsection-preload' : '' );
$undoafter = $wgRequest->getVal( 'undoafter' );
$undo = $wgRequest->getVal( 'undo' );
@@ -134,7 +146,7 @@ class EditPage {
$wgMessageCache->loadAllMessages( $lang );
$text = wfMsgGetKey( $message, false, $lang, false );
if( wfEmptyMsg( $message, $text ) )
- $text = '';
+ $text = $this->getPreloadedText( $preload );
} else {
# If requested, preload some text.
$text = $this->getPreloadedText( $preload );
@@ -150,10 +162,10 @@ class EditPage {
# Undoing a specific edit overrides section editing; section-editing
# doesn't work with undoing.
if ( $undoafter ) {
- $undorev = Revision::newFromId($undo);
- $oldrev = Revision::newFromId($undoafter);
+ $undorev = Revision::newFromId( $undo );
+ $oldrev = Revision::newFromId( $undoafter );
} else {
- $undorev = Revision::newFromId($undo);
+ $undorev = Revision::newFromId( $undo );
$oldrev = $undorev ? $undorev->getPrevious() : null;
}
@@ -165,7 +177,7 @@ class EditPage {
$undorev->getPage() == $this->mArticle->getID() &&
!$undorev->isDeleted( Revision::DELETED_TEXT ) &&
!$oldrev->isDeleted( Revision::DELETED_TEXT ) ) {
-
+
$undotext = $this->mArticle->getUndoText( $undorev, $oldrev );
if ( $undotext === false ) {
# Warn the user that something went wrong
@@ -192,6 +204,7 @@ class EditPage {
if ( $section == 'new' ) {
$text = $this->getPreloadedText( $preload );
} else {
+ // Get section edit text (returns $def_text for invalid sections)
$text = $wgParser->getSection( $text, $section, $def_text );
}
}
@@ -201,6 +214,11 @@ class EditPage {
return $text;
}
+ /** Use this method before edit() to preload some text into the edit box */
+ public function setPreloadedText( $text ) {
+ $this->mPreloadText = $text;
+ }
+
/**
* Get the contents of a page from its title and remove includeonly tags
*
@@ -208,12 +226,14 @@ class EditPage {
* @return string The contents of the page.
*/
protected function getPreloadedText( $preload ) {
- if ( $preload === '' ) {
+ if ( !empty( $this->mPreloadText ) ) {
+ return $this->mPreloadText;
+ } elseif ( $preload === '' ) {
return '';
} else {
$preloadTitle = Title::newFromText( $preload );
if ( isset( $preloadTitle ) && $preloadTitle->userCanRead() ) {
- $rev = Revision::newFromTitle($preloadTitle);
+ $rev = Revision::newFromTitle( $preloadTitle );
if ( is_object( $rev ) ) {
$text = $rev->getText();
// TODO FIXME: AAAAAAAAAAA, this shouldn't be implementing
@@ -226,96 +246,7 @@ class EditPage {
}
}
- /**
- * This is the function that extracts metadata from the article body on the first view.
- * To turn the feature on, set $wgUseMetadataEdit = true ; in LocalSettings
- * and set $wgMetadataWhitelist to the *full* title of the template whitelist
- */
- function extractMetaDataFromArticle () {
- global $wgUseMetadataEdit, $wgMetadataWhitelist, $wgContLang;
- $this->mMetaData = '';
- if ( !$wgUseMetadataEdit ) return;
- if ( $wgMetadataWhitelist == '' ) return;
- $s = '';
- $t = $this->getContent();
-
- # MISSING : <nowiki> filtering
-
- # Categories and language links
- $t = explode ( "\n" , $t );
- $catlow = strtolower ( $wgContLang->getNsText( NS_CATEGORY ) );
- $cat = $ll = array();
- foreach ( $t AS $key => $x ) {
- $y = trim ( strtolower ( $x ) );
- while ( substr ( $y , 0 , 2 ) == '[[' ) {
- $y = explode ( ']]' , trim ( $x ) );
- $first = array_shift ( $y );
- $first = explode ( ':' , $first );
- $ns = array_shift ( $first );
- $ns = trim ( str_replace ( '[' , '' , $ns ) );
- if ( $wgContLang->getLanguageName( $ns ) || strtolower ( $ns ) == $catlow ) {
- $add = '[[' . $ns . ':' . implode ( ':' , $first ) . ']]';
- if ( strtolower ( $ns ) == $catlow ) $cat[] = $add;
- else $ll[] = $add;
- $x = implode ( ']]' , $y );
- $t[$key] = $x;
- $y = trim ( strtolower ( $x ) );
- } else {
- $x = implode ( ']]' , $y );
- $y = trim ( strtolower ( $x ) );
- }
- }
- }
- if ( count ( $cat ) ) $s .= implode ( ' ' , $cat ) . "\n";
- if ( count ( $ll ) ) $s .= implode ( ' ' , $ll ) . "\n";
- $t = implode ( "\n" , $t );
-
- # Load whitelist
- $sat = array () ; # stand-alone-templates; must be lowercase
- $wl_title = Title::newFromText ( $wgMetadataWhitelist );
- $wl_article = new Article ( $wl_title );
- $wl = explode ( "\n" , $wl_article->getContent() );
- foreach ( $wl AS $x ) {
- $isentry = false;
- $x = trim ( $x );
- while ( substr ( $x , 0 , 1 ) == '*' ) {
- $isentry = true;
- $x = trim ( substr ( $x , 1 ) );
- }
- if ( $isentry ) {
- $sat[] = strtolower ( $x );
- }
-
- }
-
- # Templates, but only some
- $t = explode ( '{{' , $t );
- $tl = array () ;
- foreach ( $t AS $key => $x ) {
- $y = explode ( '}}' , $x , 2 );
- if ( count ( $y ) == 2 ) {
- $z = $y[0];
- $z = explode ( '|' , $z );
- $tn = array_shift ( $z );
- if ( in_array ( strtolower ( $tn ) , $sat ) ) {
- $tl[] = '{{' . $y[0] . '}}';
- $t[$key] = $y[1];
- $y = explode ( '}}' , $y[1] , 2 );
- }
- else $t[$key] = '{{' . $x;
- }
- else if ( $key != 0 ) $t[$key] = '{{' . $x;
- else $t[$key] = $x;
- }
- if ( count ( $tl ) ) $s .= implode ( ' ' , $tl );
- $t = implode ( '' , $t );
-
- $t = str_replace ( "\n\n\n" , "\n" , $t );
- $this->mArticle->mContent = $t;
- $this->mMetaData = $s;
- }
-
- /*
+ /*
* Check if a page was deleted while the user was editing it, before submit.
* Note that we rely on the logging table, which hasn't been always there,
* but that doesn't matter, because this only applies to brand new
@@ -352,9 +283,9 @@ class EditPage {
* the newly-edited page.
*/
function edit() {
- global $wgOut, $wgUser, $wgRequest;
+ global $wgOut, $wgRequest, $wgUser;
// Allow extensions to modify/prevent this form or submission
- if ( !wfRunHooks( 'AlternateEdit', array( &$this ) ) ) {
+ if ( !wfRunHooks( 'AlternateEdit', array( $this ) ) ) {
return;
}
@@ -374,16 +305,24 @@ class EditPage {
}
if ( wfReadOnly() && $this->save ) {
- // Force preview
- $this->save = false;
- $this->preview = true;
+ // Force preview
+ $this->save = false;
+ $this->preview = true;
}
$wgOut->addScriptFile( 'edit.js' );
+
+ if ( $wgUser->getOption( 'uselivepreview', false ) ) {
+ $wgOut->includeJQuery();
+ $wgOut->addScriptFile( 'preview.js' );
+ }
+ // Bug #19334: textarea jumps when editing articles in IE8
+ $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
+
$permErrors = $this->getEditPermissionErrors();
if ( $permErrors ) {
- wfDebug( __METHOD__.": User can't edit\n" );
- $this->readOnlyPage( $this->getContent(), true, $permErrors, 'edit' );
+ wfDebug( __METHOD__ . ": User can't edit\n" );
+ $this->readOnlyPage( $this->getContent( false ), true, $permErrors, 'edit' );
wfProfileOut( __METHOD__ );
return;
} else {
@@ -398,12 +337,11 @@ class EditPage {
if ( $this->previewOnOpen() ) {
$this->formtype = 'preview';
} else {
- $this->extractMetaDataFromArticle () ;
$this->formtype = 'initial';
}
}
}
-
+
// If they used redlink=1 and the page exists, redirect to the main article
if ( $wgRequest->getBool( 'redlink' ) && $this->mTitle->exists() ) {
$wgOut->redirect( $this->mTitle->getFullURL() );
@@ -414,6 +352,8 @@ class EditPage {
$this->isConflict = false;
// css / js subpages of user pages get a special treatment
$this->isCssJsSubpage = $this->mTitle->isCssJsSubpage();
+ $this->isCssSubpage = $this->mTitle->isCssSubpage();
+ $this->isJsSubpage = $this->mTitle->isJsSubpage();
$this->isValidCssJsSubpage = $this->mTitle->isValidCssJsSubpage();
# Show applicable editing introductions
@@ -456,7 +396,7 @@ class EditPage {
# First time through: get contents, set time for conflict
# checking, etc.
if ( 'initial' == $this->formtype || $this->firsttime ) {
- if ( $this->initialiseForm() === false) {
+ if ( $this->initialiseForm() === false ) {
$this->noSuchSectionPage();
wfProfileOut( __METHOD__."-business-end" );
wfProfileOut( __METHOD__ );
@@ -464,13 +404,15 @@ class EditPage {
}
if ( !$this->mTitle->getArticleId() )
wfRunHooks( 'EditFormPreloadText', array( &$this->textbox1, &$this->mTitle ) );
+ else
+ wfRunHooks( 'EditFormInitialText', array( $this ) );
}
$this->showEditForm();
wfProfileOut( __METHOD__."-business-end" );
wfProfileOut( __METHOD__ );
}
-
+
protected function getEditPermissionErrors() {
global $wgUser;
$permErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
@@ -482,8 +424,8 @@ class EditPage {
# Ignore some permissions errors when a user is just previewing/viewing diffs
$remove = array();
foreach( $permErrors as $error ) {
- if ( ($this->preview || $this->diff) &&
- ($error[0] == 'blockedtext' || $error[0] == 'autoblockedtext') )
+ if ( ( $this->preview || $this->diff ) &&
+ ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' ) )
{
$remove[] = $error;
}
@@ -515,7 +457,7 @@ class EditPage {
* @return bool
*/
protected function previewOnOpen() {
- global $wgRequest, $wgUser;
+ global $wgRequest, $wgUser, $wgPreviewOnOpenNamespaces;
if ( $wgRequest->getVal( 'preview' ) == 'yes' ) {
// Explicit override from request
return true;
@@ -528,7 +470,10 @@ class EditPage {
} elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
// Standard preference behaviour
return true;
- } elseif ( !$this->mTitle->exists() && $this->mTitle->getNamespace() == NS_CATEGORY ) {
+ } elseif ( !$this->mTitle->exists() &&
+ isset($wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()]) &&
+ $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
+ {
// Categories are special
return true;
} else {
@@ -537,13 +482,36 @@ class EditPage {
}
/**
+ * Does this EditPage class support section editing?
+ * This is used by EditPage subclasses to indicate their ui cannot handle section edits
+ *
+ * @return bool
+ */
+ protected function isSectionEditSupported() {
+ return true;
+ }
+
+ /**
+ * Returns the URL to use in the form's action attribute.
+ * This is used by EditPage subclasses when simply customizing the action
+ * variable in the constructor is not enough. This can be used when the
+ * EditPage lives inside of a Special page rather than a custom page action.
+ *
+ * @param Title $title The title for which is being edited (where we go to for &action= links)
+ * @return string
+ */
+ protected function getActionURL( Title $title ) {
+ return $title->getLocalURL( array( 'action' => $this->action ) );
+ }
+
+ /**
* @todo document
* @param $request
*/
function importFormData( &$request ) {
global $wgLang, $wgUser;
- $fname = 'EditPage::importFormData';
- wfProfileIn( $fname );
+
+ wfProfileIn( __METHOD__ );
# Section edit can come from either the form or a link
$this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) );
@@ -553,8 +521,17 @@ class EditPage {
# Also remove trailing whitespace, but don't remove _initial_
# whitespace from the text boxes. This may be significant formatting.
$this->textbox1 = $this->safeUnicodeInput( $request, 'wpTextbox1' );
- $this->textbox2 = $this->safeUnicodeInput( $request, 'wpTextbox2' );
- $this->mMetaData = rtrim( $request->getText( 'metadata' ) );
+ if ( !$request->getCheck('wpTextbox2') ) {
+ // Skip this if wpTextbox2 has input, it indicates that we came
+ // from a conflict page with raw page text, not a custom form
+ // modified by subclasses
+ wfProfileIn( get_class($this)."::importContentFormData" );
+ $textbox1 = $this->importContentFormData( $request );
+ if ( isset($textbox1) )
+ $this->textbox1 = $textbox1;
+ wfProfileOut( get_class($this)."::importContentFormData" );
+ }
+
# Truncate for whole multibyte characters. +5 bytes for ellipsis
$this->summary = $wgLang->truncate( $request->getText( 'wpSummary' ), 250, '' );
@@ -568,7 +545,7 @@ class EditPage {
if ( is_null( $this->edittime ) ) {
# If the form is incomplete, force to preview.
- wfDebug( "$fname: Form data appears to be incomplete\n" );
+ wfDebug( __METHOD__ . ": Form data appears to be incomplete\n" );
wfDebug( "POST DATA: " . var_export( $_POST, true ) . "\n" );
$this->preview = true;
} else {
@@ -585,23 +562,23 @@ class EditPage {
# if the user hits enter in the comment box.
# The unmarked state will be assumed to be a save,
# if the form seems otherwise complete.
- wfDebug( "$fname: Passed token check.\n" );
+ wfDebug( __METHOD__ . ": Passed token check.\n" );
} else if ( $this->diff ) {
# Failed token check, but only requested "Show Changes".
- wfDebug( "$fname: Failed token check; Show Changes requested.\n" );
+ wfDebug( __METHOD__ . ": Failed token check; Show Changes requested.\n" );
} else {
# Page might be a hack attempt posted from
# an external site. Preview instead of saving.
- wfDebug( "$fname: Failed token check; forcing preview\n" );
+ wfDebug( __METHOD__ . ": Failed token check; forcing preview\n" );
$this->preview = true;
}
}
$this->save = !$this->preview && !$this->diff;
- if ( !preg_match( '/^\d{14}$/', $this->edittime )) {
+ if ( !preg_match( '/^\d{14}$/', $this->edittime ) ) {
$this->edittime = null;
}
- if ( !preg_match( '/^\d{14}$/', $this->starttime )) {
+ if ( !preg_match( '/^\d{14}$/', $this->starttime ) ) {
$this->starttime = null;
}
@@ -611,8 +588,8 @@ class EditPage {
$this->watchthis = $request->getCheck( 'wpWatchthis' );
# Don't force edit summaries when a user is editing their own user or talk page
- if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) &&
- $this->mTitle->getText() == $wgUser->getName() )
+ if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) &&
+ $this->mTitle->getText() == $wgUser->getName() )
{
$this->allowBlankSummary = true;
} else {
@@ -622,10 +599,8 @@ class EditPage {
$this->autoSumm = $request->getText( 'wpAutoSummary' );
} else {
# Not a posted form? Start with nothing.
- wfDebug( "$fname: Not a posted form.\n" );
+ wfDebug( __METHOD__ . ": Not a posted form.\n" );
$this->textbox1 = '';
- $this->textbox2 = '';
- $this->mMetaData = '';
$this->summary = '';
$this->edittime = '';
$this->starttime = wfTimestampNow();
@@ -634,7 +609,7 @@ class EditPage {
$this->save = false;
$this->diff = false;
$this->minoredit = false;
- $this->watchthis = false;
+ $this->watchthis = $request->getBool( 'watchthis', false ); // Watch may be overriden by request parameters
$this->recreate = false;
if ( $this->section == 'new' && $request->getVal( 'preloadtitle' ) ) {
@@ -643,18 +618,39 @@ class EditPage {
elseif ( $this->section != 'new' && $request->getVal( 'summary' ) ) {
$this->summary = $request->getText( 'summary' );
}
-
+
if ( $request->getVal( 'minor' ) ) {
$this->minoredit = true;
}
}
+ $this->bot = $request->getBool( 'bot', true );
+ $this->nosummary = $request->getBool( 'nosummary' );
+
+ // FIXME: unused variable?
$this->oldid = $request->getInt( 'oldid' );
$this->live = $request->getCheck( 'live' );
- $this->editintro = $request->getText( 'editintro' );
+ $this->editintro = $request->getText( 'editintro',
+ // Custom edit intro for new sections
+ $this->section === 'new' ? 'MediaWiki:addsection-editintro' : '' );
+
+ wfProfileOut( __METHOD__ );
- wfProfileOut( $fname );
+ // Allow extensions to modify form data
+ wfRunHooks( 'EditPage::importFormData', array( $this, $request ) );
+ }
+
+ /**
+ * Subpage overridable method for extracting the page content data from the
+ * posted form to be placed in $this->textbox1, if using customized input
+ * this method should be overrided and return the page text that will be used
+ * for saving, preview parsing and so on...
+ *
+ * @praram WebRequest $request
+ */
+ protected function importContentFormData( &$request ) {
+ return; // Don't do anything, EditPage already extracted wpTextbox1
}
/**
@@ -688,28 +684,49 @@ class EditPage {
$wgOut->wrapWikiMsg( "<div class='mw-editinginterface'>\n$1</div>", 'editinginterface' );
}
- # Show a warning message when someone creates/edits a user (talk) page but the user does not exists
+ # Show a warning message when someone creates/edits a user (talk) page but the user does not exist
+ # Show log extract when the user is currently blocked
if ( $namespace == NS_USER || $namespace == NS_USER_TALK ) {
$parts = explode( '/', $this->mTitle->getText(), 2 );
$username = $parts[0];
- $id = User::idFromName( $username );
+ $user = User::newFromName( $username, false /* allow IP users*/ );
$ip = User::isIP( $username );
- if ( $id == 0 && !$ip ) {
- $wgOut->wrapWikiMsg( '<div class="mw-userpage-userdoesnotexist error">$1</div>',
+ if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
+ $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1</div>",
array( 'userpage-userdoesnotexist', $username ) );
+ } else if ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'block',
+ $user->getUserPage()->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 1,
+ 'showIfEmpty' => false,
+ 'msgKey' => array(
+ 'blocked-notice-logextract',
+ $user->getName() # Support GENDER in notice
+ )
+ )
+ );
}
}
# Try to add a custom edit intro, or use the standard one if this is not possible.
if ( !$this->showCustomIntro() && !$this->mTitle->exists() ) {
if ( $wgUser->isLoggedIn() ) {
- $wgOut->wrapWikiMsg( '<div class="mw-newarticletext">$1</div>', 'newarticletext' );
+ $wgOut->wrapWikiMsg( "<div class=\"mw-newarticletext\">\n$1</div>", 'newarticletext' );
} else {
- $wgOut->wrapWikiMsg( '<div class="mw-newarticletextanon">$1</div>', 'newarticletextanon' );
+ $wgOut->wrapWikiMsg( "<div class=\"mw-newarticletextanon\">\n$1</div>", 'newarticletextanon' );
}
}
- # Give a notice if the user is editing a deleted page...
+ # Give a notice if the user is editing a deleted/moved page...
if ( !$this->mTitle->exists() ) {
- $this->showDeletionLog( $wgOut );
+ LogEventsList::showLogExtract( $wgOut, array( 'delete', 'move' ), $this->mTitle->getPrefixedText(),
+ '', array( 'lim' => 10,
+ 'conds' => array( "log_action != 'revision'" ),
+ 'showIfEmpty' => false,
+ 'msgKey' => array( 'recreate-moveddeleted-warn') )
+ );
}
}
@@ -742,12 +759,10 @@ class EditPage {
global $wgFilterCallback, $wgUser, $wgOut, $wgParser;
global $wgMaxArticleSize;
- $fname = 'EditPage::attemptSave';
- wfProfileIn( $fname );
- wfProfileIn( "$fname-checks" );
+ wfProfileIn( __METHOD__ );
+ wfProfileIn( __METHOD__ . '-checks' );
- if ( !wfRunHooks( 'EditPage::attemptSave', array( &$this ) ) )
- {
+ if ( !wfRunHooks( 'EditPage::attemptSave', array( $this ) ) ) {
wfDebug( "Hook 'EditPage::attemptSave' aborted article saving\n" );
return self::AS_HOOK_ERROR;
}
@@ -763,10 +778,6 @@ class EditPage {
}
}
- # Reintegrate metadata
- if ( $this->mMetaData != '' ) $this->textbox1 .= "\n" . $this->mMetaData ;
- $this->mMetaData = '' ;
-
# Check for spam
$match = self::matchSummarySpamRegex( $this->summary );
if ( $match === false ) {
@@ -778,104 +789,107 @@ class EditPage {
$pdbk = $this->mTitle->getPrefixedDBkey();
$match = str_replace( "\n", '', $match );
wfDebugLog( 'SpamRegex', "$ip spam regex hit [[$pdbk]]: \"$match\"" );
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_SPAM_ERROR;
}
if ( $wgFilterCallback && $wgFilterCallback( $this->mTitle, $this->textbox1, $this->section, $this->hookError, $this->summary ) ) {
# Error messages or other handling should be performed by the filter function
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_FILTERING;
}
if ( !wfRunHooks( 'EditFilter', array( $this, $this->textbox1, $this->section, &$this->hookError, $this->summary ) ) ) {
# Error messages etc. could be handled within the hook...
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_HOOK_ERROR;
} elseif ( $this->hookError != '' ) {
# ...or the hook could be expecting us to produce an error
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_HOOK_ERROR_EXPECTED;
}
if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
# Check block state against master, thus 'false'.
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_BLOCKED_PAGE_FOR_USER;
}
- $this->kblength = (int)(strlen( $this->textbox1 ) / 1024);
+ $this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
if ( $this->kblength > $wgMaxArticleSize ) {
// Error will be displayed by showEditForm()
$this->tooBig = true;
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_CONTENT_TOO_BIG;
}
- if ( !$wgUser->isAllowed('edit') ) {
+ if ( !$wgUser->isAllowed( 'edit' ) ) {
if ( $wgUser->isAnon() ) {
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_READ_ONLY_PAGE_ANON;
- }
- else {
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ } else {
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_READ_ONLY_PAGE_LOGGED;
}
}
if ( wfReadOnly() ) {
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_READ_ONLY_PAGE;
}
if ( $wgUser->pingLimiter() ) {
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_RATE_LIMITED;
}
# If the article has been deleted while editing, don't save it without
# confirmation
if ( $this->wasDeletedSinceLastEdit() && !$this->recreate ) {
- wfProfileOut( "$fname-checks" );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-checks' );
+ wfProfileOut( __METHOD__ );
return self::AS_ARTICLE_WAS_DELETED;
}
- wfProfileOut( "$fname-checks" );
+ wfProfileOut( __METHOD__ . '-checks' );
# If article is new, insert it.
$aid = $this->mTitle->getArticleID( GAID_FOR_UPDATE );
if ( 0 == $aid ) {
// Late check for create permission, just in case *PARANOIA*
if ( !$this->mTitle->userCan( 'create' ) ) {
- wfDebug( "$fname: no create permission\n" );
- wfProfileOut( $fname );
+ wfDebug( __METHOD__ . ": no create permission\n" );
+ wfProfileOut( __METHOD__ );
return self::AS_NO_CREATE_PERMISSION;
}
# Don't save a new article if it's blank.
- if ( '' == $this->textbox1 ) {
- wfProfileOut( $fname );
+ if ( $this->textbox1 == '' ) {
+ wfProfileOut( __METHOD__ );
return self::AS_BLANK_ARTICLE;
}
// Run post-section-merge edit filter
if ( !wfRunHooks( 'EditFilterMerged', array( $this, $this->textbox1, &$this->hookError, $this->summary ) ) ) {
# Error messages etc. could be handled within the hook...
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_HOOK_ERROR;
+ } elseif ( $this->hookError != '' ) {
+ # ...or the hook could be expecting us to produce an error
+ wfProfileOut( __METHOD__ );
+ return self::AS_HOOK_ERROR_EXPECTED;
}
-
+
# Handle the user preference to force summaries here. Check if it's not a redirect.
if ( !$this->allowBlankSummary && !Title::newFromRedirect( $this->textbox1 ) ) {
if ( md5( $this->summary ) == $this->autoSumm ) {
$this->missingSummary = true;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_SUMMARY_NEEDED;
}
}
@@ -885,7 +899,7 @@ class EditPage {
$this->mArticle->insertNewArticle( $this->textbox1, $this->summary,
$this->minoredit, $this->watchthis, false, $isComment, $bot );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_SUCCESS_NEW_ARTICLE;
}
@@ -894,7 +908,7 @@ class EditPage {
$this->mArticle->clear(); # Force reload of dates, etc.
$this->mArticle->forUpdate( true ); # Lock the article
- wfDebug("timestamp: {$this->mArticle->getTimestamp()}, edittime: {$this->edittime}\n");
+ wfDebug( "timestamp: {$this->mArticle->getTimestamp()}, edittime: {$this->edittime}\n" );
if ( $this->mArticle->getTimestamp() != $this->edittime ) {
$this->isConflict = true;
@@ -904,32 +918,32 @@ class EditPage {
// Probably a duplicate submission of a new comment.
// This can happen when squid resends a request after
// a timeout but the first one actually went through.
- wfDebug( "EditPage::editForm duplicate new section submission; trigger edit conflict!\n" );
+ wfDebug( __METHOD__ . ": duplicate new section submission; trigger edit conflict!\n" );
} else {
// New comment; suppress conflict.
$this->isConflict = false;
- wfDebug( "EditPage::editForm conflict suppressed; new section\n" );
+ wfDebug( __METHOD__ .": conflict suppressed; new section\n" );
}
}
}
$userid = $wgUser->getId();
-
+
# Suppress edit conflict with self, except for section edits where merging is required.
- if ( $this->isConflict && $this->section == '' && $this->userWasLastToEdit($userid,$this->edittime) ) {
- wfDebug( "EditPage::editForm Suppressing edit conflict, same user.\n" );
+ if ( $this->isConflict && $this->section == '' && $this->userWasLastToEdit( $userid, $this->edittime ) ) {
+ wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
$this->isConflict = false;
}
if ( $this->isConflict ) {
- wfDebug( "EditPage::editForm conflict! getting section '$this->section' for time '$this->edittime' (article time '" .
+ wfDebug( __METHOD__ . ": conflict! getting section '$this->section' for time '$this->edittime' (article time '" .
$this->mArticle->getTimestamp() . "')\n" );
$text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary, $this->edittime );
} else {
- wfDebug( "EditPage::editForm getting section '$this->section'\n" );
+ wfDebug( __METHOD__ . ": getting section '$this->section'\n" );
$text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary );
}
if ( is_null( $text ) ) {
- wfDebug( "EditPage::editForm activating conflict; section replace failed.\n" );
+ wfDebug( __METHOD__ . ": activating conflict; section replace failed.\n" );
$this->isConflict = true;
$text = $this->textbox1; // do not try to merge here!
} else if ( $this->isConflict ) {
@@ -937,16 +951,16 @@ class EditPage {
if ( $this->mergeChangesInto( $text ) ) {
// Successful merge! Maybe we should tell the user the good news?
$this->isConflict = false;
- wfDebug( "EditPage::editForm Suppressing edit conflict, successful merge.\n" );
+ wfDebug( __METHOD__ . ": Suppressing edit conflict, successful merge.\n" );
} else {
$this->section = '';
$this->textbox1 = $text;
- wfDebug( "EditPage::editForm Keeping edit conflict, failed merge.\n" );
+ wfDebug( __METHOD__ . ": Keeping edit conflict, failed merge.\n" );
}
}
if ( $this->isConflict ) {
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_CONFLICT_DETECTED;
}
@@ -955,36 +969,42 @@ class EditPage {
// Run post-section-merge edit filter
if ( !wfRunHooks( 'EditFilterMerged', array( $this, $text, &$this->hookError, $this->summary ) ) ) {
# Error messages etc. could be handled within the hook...
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_HOOK_ERROR;
+ } elseif ( $this->hookError != '' ) {
+ # ...or the hook could be expecting us to produce an error
+ wfProfileOut( __METHOD__ );
+ return self::AS_HOOK_ERROR_EXPECTED;
}
# Handle the user preference to force summaries here, but not for null edits
- if ( $this->section != 'new' && !$this->allowBlankSummary && 0 != strcmp($oldtext,$text)
+ if ( $this->section != 'new' && !$this->allowBlankSummary && 0 != strcmp( $oldtext, $text )
&& !Title::newFromRedirect( $text ) ) # check if it's not a redirect
{
if ( md5( $this->summary ) == $this->autoSumm ) {
$this->missingSummary = true;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_SUMMARY_NEEDED;
}
}
# And a similar thing for new sections
if ( $this->section == 'new' && !$this->allowBlankSummary ) {
- if (trim($this->summary) == '') {
+ if ( trim( $this->summary ) == '' ) {
$this->missingSummary = true;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_SUMMARY_NEEDED;
}
}
# All's well
- wfProfileIn( "$fname-sectionanchor" );
+ wfProfileIn( __METHOD__ . '-sectionanchor' );
$sectionanchor = '';
if ( $this->section == 'new' ) {
if ( $this->textbox1 == '' ) {
$this->missingComment = true;
+ wfProfileOut( __METHOD__ . '-sectionanchor' );
+ wfProfileOut( __METHOD__ );
return self::AS_TEXTBOX_EMPTY;
}
if ( $this->summary != '' ) {
@@ -1001,11 +1021,11 @@ class EditPage {
$hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
# we can't deal with anchors, includes, html etc in the header for now,
# headline would need to be parsed to improve this
- if ( $hasmatch and strlen($matches[2]) > 0 ) {
+ if ( $hasmatch and strlen( $matches[2] ) > 0 ) {
$sectionanchor = $wgParser->guessSectionNameFromWikiText( $matches[2] );
}
}
- wfProfileOut( "$fname-sectionanchor" );
+ wfProfileOut( __METHOD__ . '-sectionanchor' );
// Save errors may fall down to the edit form, but we've now
// merged the section into full text. Clear the section field
@@ -1015,26 +1035,26 @@ class EditPage {
$this->section = '';
// Check for length errors again now that the section is merged in
- $this->kblength = (int)(strlen( $text ) / 1024);
+ $this->kblength = (int)( strlen( $text ) / 1024 );
if ( $this->kblength > $wgMaxArticleSize ) {
$this->tooBig = true;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_MAX_ARTICLE_SIZE_EXCEEDED;
}
# update the article here
if ( $this->mArticle->updateArticle( $text, $this->summary, $this->minoredit,
- $this->watchthis, $bot, $sectionanchor ) )
+ $this->watchthis, $bot, $sectionanchor ) )
{
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_SUCCESS_UPDATE;
} else {
$this->isConflict = true;
}
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return self::AS_END;
}
-
+
/**
* Check if no edits were made by other users since
* the time a user started editing the page. Limit to
@@ -1045,7 +1065,7 @@ class EditPage {
$dbw = wfGetDB( DB_MASTER );
$res = $dbw->select( 'revision',
'rev_user',
- array(
+ array(
'rev_page' => $this->mArticle->getId(),
'rev_timestamp > '.$dbw->addQuotes( $dbw->timestamp($edittime) )
),
@@ -1058,7 +1078,7 @@ class EditPage {
}
return true;
}
-
+
/**
* Check given input text against $wgSpamRegex, and return the text of the first match.
* @return mixed -- matching string or false
@@ -1069,7 +1089,7 @@ class EditPage {
$regexes = (array)$wgSpamRegex;
return self::matchSpamRegexInternal( $text, $regexes );
}
-
+
/**
* Check given input text against $wgSpamRegex, and return the text of the first match.
* @return mixed -- matching string or false
@@ -1079,7 +1099,7 @@ class EditPage {
$regexes = (array)$wgSummarySpamRegex;
return self::matchSpamRegexInternal( $text, $regexes );
}
-
+
protected static function matchSpamRegexInternal( $text, $regexes ) {
foreach( $regexes as $regex ) {
$matches = array();
@@ -1093,10 +1113,25 @@ class EditPage {
/**
* Initialise form fields in the object
* Called on the first invocation, e.g. when a user clicks an edit link
+ * @returns bool -- if the requested section is valid
*/
function initialiseForm() {
+ global $wgUser;
$this->edittime = $this->mArticle->getTimestamp();
$this->textbox1 = $this->getContent( false );
+ // activate checkboxes if user wants them to be always active
+ # Sort out the "watch" checkbox
+ if ( $wgUser->getOption( 'watchdefault' ) ) {
+ # Watch all edits
+ $this->watchthis = true;
+ } elseif ( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) {
+ # Watch creations
+ $this->watchthis = true;
+ } elseif ( $this->mTitle->userIsWatching() ) {
+ # Already watched
+ $this->watchthis = true;
+ }
+ if ( $wgUser->getOption( 'minordefault' ) ) $this->minoredit = true;
if ( $this->textbox1 === false ) return false;
wfProxyCheck();
return true;
@@ -1115,7 +1150,7 @@ class EditPage {
$wgOut->setPageTitle( wfMsg( $msg, $wgTitle->getPrefixedText() ) );
} else {
# Use the title defined by DISPLAYTITLE magic word when present
- if ( isset($this->mParserOutput)
+ if ( isset( $this->mParserOutput )
&& ( $dt = $this->mParserOutput->getDisplayTitle() ) !== false ) {
$title = $dt;
} else {
@@ -1132,22 +1167,19 @@ class EditPage {
* near the top, for captchas and the like.
*/
function showEditForm( $formCallback=null ) {
- global $wgOut, $wgUser, $wgLang, $wgContLang, $wgMaxArticleSize, $wgTitle, $wgRequest;
+ global $wgOut, $wgUser, $wgTitle;
# If $wgTitle is null, that means we're in API mode.
# Some hook probably called this function without checking
# for is_null($wgTitle) first. Bail out right here so we don't
# do lots of work just to discard it right after.
- if (is_null($wgTitle))
+ if ( is_null( $wgTitle ) )
return;
- $fname = 'EditPage::showEditForm';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
$sk = $wgUser->getSkin();
- wfRunHooks( 'EditPage::showEditForm:initial', array( &$this ) ) ;
-
#need to parse the preview early so that we know which templates are used,
#otherwise users with "show preview after edit box" will get a blank list
#we parse this near the beginning so that setHeaders can do the title
@@ -1157,18 +1189,158 @@ class EditPage {
$previewOutput = $this->getPreviewText();
}
+ wfRunHooks( 'EditPage::showEditForm:initial', array( &$this ) );
+
$this->setHeaders();
# Enabled article-related sidebar, toplinks, etc.
$wgOut->setArticleRelated( true );
+ if ( $this->showHeader() === false )
+ return;
+
+ $action = htmlspecialchars($this->getActionURL($wgTitle));
+
+ if ( $wgUser->getOption( 'showtoolbar' ) and !$this->isCssJsSubpage ) {
+ # prepare toolbar for edit buttons
+ $toolbar = EditPage::getEditToolbar();
+ } else {
+ $toolbar = '';
+ }
+
+
+ $wgOut->addHTML( $this->editFormPageTop );
+
+ if ( $wgUser->getOption( 'previewontop' ) ) {
+ $this->displayPreviewArea( $previewOutput, true );
+ }
+
+ $wgOut->addHTML( $this->editFormTextTop );
+
+ $templates = $this->getTemplates();
+ $formattedtemplates = $sk->formatTemplates( $templates, $this->preview, $this->section != '');
+
+ $hiddencats = $this->mArticle->getHiddenCategories();
+ $formattedhiddencats = $sk->formatHiddenCategories( $hiddencats );
+
+ if ( $this->wasDeletedSinceLastEdit() && 'save' != $this->formtype ) {
+ $wgOut->wrapWikiMsg(
+ "<div class='error mw-deleted-while-editing'>\n$1</div>",
+ 'deletedwhileediting' );
+ } elseif ( $this->wasDeletedSinceLastEdit() ) {
+ // Hide the toolbar and edit area, user can click preview to get it back
+ // Add an confirmation checkbox and explanation.
+ $toolbar = '';
+ // @todo move this to a cleaner conditional instead of blanking a variable
+ }
+ $wgOut->addHTML( <<<HTML
+{$toolbar}
+<form id="editform" name="editform" method="post" action="$action" enctype="multipart/form-data">
+HTML
+);
+
+ if ( is_callable( $formCallback ) ) {
+ call_user_func_array( $formCallback, array( &$wgOut ) );
+ }
+
+ wfRunHooks( 'EditPage::showEditForm:fields', array( &$this, &$wgOut ) );
+
+ // Put these up at the top to ensure they aren't lost on early form submission
+ $this->showFormBeforeText();
+
+ if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) {
+ $wgOut->addHTML(
+ '<div class="mw-confirm-recreate">' .
+ $wgOut->parse( wfMsg( 'confirmrecreate', $this->lastDelete->user_name , $this->lastDelete->log_comment ) ) .
+ Xml::checkLabel( wfMsg( 'recreate' ), 'wpRecreate', 'wpRecreate', false,
+ array( 'title' => $sk->titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
+ ) .
+ '</div>'
+ );
+ }
+
+ # If a blank edit summary was previously provided, and the appropriate
+ # user preference is active, pass a hidden tag as wpIgnoreBlankSummary. This will stop the
+ # user being bounced back more than once in the event that a summary
+ # is not required.
+ #####
+ # For a bit more sophisticated detection of blank summaries, hash the
+ # automatic one and pass that in the hidden field wpAutoSummary.
+ if ( $this->missingSummary ||
+ ( $this->section == 'new' && $this->nosummary ) )
+ $wgOut->addHTML( Xml::hidden( 'wpIgnoreBlankSummary', true ) );
+ $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary );
+ $wgOut->addHTML( Xml::hidden( 'wpAutoSummary', $autosumm ) );
+
+ $wgOut->addHTML( Xml::hidden( 'oldid', $this->mArticle->getOldID() ) );
+
+ if ( $this->section == 'new' ) {
+ $this->showSummaryInput( true, $this->summary );
+ $wgOut->addHTML( $this->getSummaryPreview( true, $this->summary ) );
+ }
+
+ $wgOut->addHTML( $this->editFormTextBeforeContent );
+
if ( $this->isConflict ) {
- $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1</div>", 'explainconflict' );
+ // In an edit conflict bypass the overrideable content form method
+ // and fallback to the raw wpTextbox1 since editconflicts can't be
+ // resolved between page source edits and custom ui edits using the
+ // custom edit ui.
+ $this->showTextbox1( null, $this->getContent() );
+ } else {
+ $this->showContentForm();
+ }
+
+ $wgOut->addHTML( $this->editFormTextAfterContent );
+
+ $wgOut->addWikiText( $this->getCopywarn() );
+ if ( isset($this->editFormTextAfterWarn) && $this->editFormTextAfterWarn !== '' )
+ $wgOut->addHTML( $this->editFormTextAfterWarn );
+
+ $this->showStandardInputs();
+
+ $this->showFormAfterText();
+
+ $this->showTosSummary();
+ $this->showEditTools();
+
+ $wgOut->addHTML( <<<HTML
+{$this->editFormTextAfterTools}
+<div class='templatesUsed'>
+{$formattedtemplates}
+</div>
+<div class='hiddencats'>
+{$formattedhiddencats}
+</div>
+HTML
+);
+
+ if ( $this->isConflict )
+ $this->showConflict();
+
+ $wgOut->addHTML( $this->editFormTextBottom );
+ $wgOut->addHTML( "</form>\n" );
+ if ( !$wgUser->getOption( 'previewontop' ) ) {
+ $this->displayPreviewArea( $previewOutput, false );
+ }
- $this->textbox2 = $this->textbox1;
- $this->textbox1 = $this->getContent();
+ wfProfileOut( __METHOD__ );
+ }
+
+ protected function showHeader() {
+ global $wgOut, $wgUser, $wgTitle, $wgMaxArticleSize, $wgLang;
+ if ( $this->isConflict ) {
+ $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1</div>", 'explainconflict' );
$this->edittime = $this->mArticle->getTimestamp();
} else {
+ if ( $this->section != '' && !$this->isSectionEditSupported() ) {
+ // We use $this->section to much before this and getVal('wgSection') directly in other places
+ // at this point we can't reset $this->section to '' to fallback to non-section editing.
+ // Someone is welcome to try refactoring though
+ $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
+ return false;
+ }
+
if ( $this->section != '' && $this->section != 'new' ) {
$matches = array();
if ( !$this->summary && !$this->preview && !$this->diff ) {
@@ -1183,15 +1355,15 @@ class EditPage {
}
if ( $this->missingComment ) {
- $wgOut->wrapWikiMsg( '<div id="mw-missingcommenttext">$1</div>', 'missingcommenttext' );
+ $wgOut->wrapWikiMsg( "<div id='mw-missingcommenttext'>\n$1</div>", 'missingcommenttext' );
}
if ( $this->missingSummary && $this->section != 'new' ) {
- $wgOut->wrapWikiMsg( '<div id="mw-missingsummary">$1</div>', 'missingsummary' );
+ $wgOut->wrapWikiMsg( "<div id='mw-missingsummary'>\n$1</div>", 'missingsummary' );
}
if ( $this->missingSummary && $this->section == 'new' ) {
- $wgOut->wrapWikiMsg( '<div id="mw-missingcommentheader">$1</div>', 'missingcommentheader' );
+ $wgOut->wrapWikiMsg( "<div id='mw-missingcommentheader'>\n$1</div>", 'missingcommentheader' );
}
if ( $this->hookError !== '' ) {
@@ -1201,6 +1373,7 @@ class EditPage {
if ( !$this->checkUnicodeCompliantBrowser() ) {
$wgOut->addWikiMsg( 'nonunicodebrowser' );
}
+
if ( isset( $this->mArticle ) && isset( $this->mArticle->mRevision ) ) {
// Let sysop know that this will make private content public if saved
@@ -1220,41 +1393,37 @@ class EditPage {
if ( wfReadOnly() ) {
$wgOut->wrapWikiMsg( "<div id=\"mw-read-only-warning\">\n$1\n</div>", array( 'readonlywarning', wfReadOnlyReason() ) );
} elseif ( $wgUser->isAnon() && $this->formtype != 'preview' ) {
- $wgOut->wrapWikiMsg( '<div id="mw-anon-edit-warning">$1</div>', 'anoneditwarning' );
+ $wgOut->wrapWikiMsg( "<div id=\"mw-anon-edit-warning\">\n$1</div>", 'anoneditwarning' );
} else {
if ( $this->isCssJsSubpage ) {
# Check the skin exists
- if ( $this->isValidCssJsSubpage ) {
- if ( $this->formtype !== 'preview' ) {
- $wgOut->addWikiMsg( 'usercssjsyoucanpreview' );
- }
- } else {
+ if ( !$this->isValidCssJsSubpage ) {
$wgOut->addWikiMsg( 'userinvalidcssjstitle', $wgTitle->getSkinFromCssJsSubpage() );
}
+ if ( $this->formtype !== 'preview' ) {
+ if ( $this->isCssSubpage )
+ $wgOut->addWikiMsg( 'usercssyoucanpreview' );
+ if ( $this->isJsSubpage )
+ $wgOut->addWikiMsg( 'userjsyoucanpreview' );
+ }
}
}
- $classes = array(); // Textarea CSS
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- } elseif ( $this->mTitle->isProtected( 'edit' ) ) {
+ if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
# Is the title semi-protected?
if ( $this->mTitle->isSemiProtected() ) {
$noticeMsg = 'semiprotectedpagewarning';
- $classes[] = 'mw-textarea-sprotected';
} else {
# Then it must be protected based on static groups (regular)
$noticeMsg = 'protectedpagewarning';
- $classes[] = 'mw-textarea-protected';
}
- $wgOut->addHTML( "<div class='mw-warning-with-logexcerpt'>\n" );
- $wgOut->addWikiMsg( $noticeMsg );
- LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle->getPrefixedText(), '', 1 );
- $wgOut->addHTML( "</div>\n" );
+ LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle->getPrefixedText(), '',
+ array( 'lim' => 1, 'msgKey' => array( $noticeMsg ) ) );
}
if ( $this->mTitle->isCascadeProtected() ) {
# Is this page under cascading protection from some source pages?
list($cascadeSources, /* $restrictions */) = $this->mTitle->getCascadeProtectionSources();
- $notice = "<div class='mw-cascadeprotectedwarning'>$1\n";
+ $notice = "<div class='mw-cascadeprotectedwarning'>\n$1\n";
$cascadeSourcesCount = count( $cascadeSources );
if ( $cascadeSourcesCount > 0 ) {
# Explain, and list the titles responsible
@@ -1266,12 +1435,17 @@ class EditPage {
$wgOut->wrapWikiMsg( $notice, array( 'cascadeprotectedwarning', $cascadeSourcesCount ) );
}
if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) {
- $wgOut->wrapWikiMsg( '<div class="mw-titleprotectedwarning">$1</div>', 'titleprotectedwarning' );
+ LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle->getPrefixedText(), '',
+ array( 'lim' => 1,
+ 'showIfEmpty' => false,
+ 'msgKey' => array( 'titleprotectedwarning' ),
+ 'wrap' => "<div class=\"mw-titleprotectedwarning\">\n$1</div>" ) );
}
if ( $this->kblength === false ) {
- $this->kblength = (int)(strlen( $this->textbox1 ) / 1024);
+ $this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
}
+
if ( $this->tooBig || $this->kblength > $wgMaxArticleSize ) {
$wgOut->addHTML( "<div class='error' id='mw-edit-longpageerror'>\n" );
$wgOut->addWikiMsg( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) );
@@ -1281,245 +1455,109 @@ class EditPage {
$wgOut->addWikiMsg( 'longpagewarning', $wgLang->formatNum( $this->kblength ) );
$wgOut->addHTML( "</div>\n" );
}
+ }
- $q = 'action='.$this->action;
- #if ( "no" == $redirect ) { $q .= "&redirect=no"; }
- $action = $wgTitle->escapeLocalURL( $q );
-
- $summary = wfMsg( 'summary' );
- $subject = wfMsg( 'subject' );
-
- $cancel = $sk->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsgExt('cancel', array('parseinline')) );
- $separator = wfMsgExt( 'pipe-separator' , 'escapenoentities' );
- $edithelpurl = Skin::makeInternalOrExternalUrl( wfMsgForContent( 'edithelppage' ));
- $edithelp = '<a target="helpwindow" href="'.$edithelpurl.'">'.
- htmlspecialchars( wfMsg( 'edithelp' ) ).'</a> '.
- htmlspecialchars( wfMsg( 'newwindow' ) );
-
- global $wgRightsText;
- if ( $wgRightsText ) {
- $copywarnMsg = array( 'copyrightwarning',
- '[[' . wfMsgForContent( 'copyrightpage' ) . ']]',
- $wgRightsText );
- } else {
- $copywarnMsg = array( 'copyrightwarning2',
- '[[' . wfMsgForContent( 'copyrightpage' ) . ']]' );
- }
-
- if ( $wgUser->getOption('showtoolbar') and !$this->isCssJsSubpage ) {
- # prepare toolbar for edit buttons
- $toolbar = EditPage::getEditToolbar();
- } else {
- $toolbar = '';
- }
-
- // activate checkboxes if user wants them to be always active
- if ( !$this->preview && !$this->diff ) {
- # Sort out the "watch" checkbox
- if ( $wgUser->getOption( 'watchdefault' ) ) {
- # Watch all edits
- $this->watchthis = true;
- } elseif ( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) {
- # Watch creations
- $this->watchthis = true;
- } elseif ( $this->mTitle->userIsWatching() ) {
- # Already watched
- $this->watchthis = true;
- }
-
- # May be overriden by request parameters
- if( $wgRequest->getBool( 'watchthis' ) ) {
- $this->watchthis = true;
- }
-
- if ( $wgUser->getOption( 'minordefault' ) ) $this->minoredit = true;
- }
-
- $wgOut->addHTML( $this->editFormPageTop );
+ /**
+ * Standard summary input and label (wgSummary), abstracted so EditPage
+ * subclasses may reorganize the form.
+ * Note that you do not need to worry about the label's for=, it will be
+ * inferred by the id given to the input. You can remove them both by
+ * passing array( 'id' => false ) to $userInputAttrs.
+ *
+ * @param $summary The value of the summary input
+ * @param $labelText The html to place inside the label
+ * @param $userInputAttrs An array of attrs to use on the input
+ * @param $userSpanAttrs An array of attrs to use on the span inside the label
+ *
+ * @return array An array in the format array( $label, $input )
+ */
+ function getSummaryInput($summary = "", $labelText = null, $inputAttrs = null, $spanLabelAttrs = null) {
+ $inputAttrs = ( is_array($inputAttrs) ? $inputAttrs : array() ) + array(
+ 'id' => 'wpSummary',
+ 'maxlength' => '200',
+ 'tabindex' => '1',
+ 'size' => 60,
+ 'spellcheck' => 'true',
+ );
+
+ $spanLabelAttrs = ( is_array($spanLabelAttrs) ? $spanLabelAttrs : array() ) + array(
+ 'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary',
+ 'id' => "wpSummaryLabel"
+ );
- if ( $wgUser->getOption( 'previewontop' ) ) {
- $this->displayPreviewArea( $previewOutput, true );
+ $label = null;
+ if ( $labelText ) {
+ $label = Xml::tags( 'label', $inputAttrs['id'] ? array( 'for' => $inputAttrs['id'] ) : null, $labelText );
+ $label = Xml::tags( 'span', $spanLabelAttrs, $label );
}
+ $input = Html::input( 'wpSummary', $summary, 'text', $inputAttrs );
- $wgOut->addHTML( $this->editFormTextTop );
-
- # if this is a comment, show a subject line at the top, which is also the edit summary.
- # Otherwise, show a summary field at the bottom
- $summarytext = $wgContLang->recodeForEdit( $this->summary );
+ return array( $label, $input );
+ }
- # If a blank edit summary was previously provided, and the appropriate
- # user preference is active, pass a hidden tag as wpIgnoreBlankSummary. This will stop the
- # user being bounced back more than once in the event that a summary
- # is not required.
- #####
- # For a bit more sophisticated detection of blank summaries, hash the
- # automatic one and pass that in the hidden field wpAutoSummary.
- $summaryhiddens = '';
- if ( $this->missingSummary ) $summaryhiddens .= Xml::hidden( 'wpIgnoreBlankSummary', true );
- $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary );
- $summaryhiddens .= Xml::hidden( 'wpAutoSummary', $autosumm );
- if ( $this->section == 'new' ) {
- $commentsubject = '';
- if ( !$wgRequest->getBool( 'nosummary' ) ) {
- # Add a class if 'missingsummary' is triggered to allow styling of the summary line
- $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary';
-
- $commentsubject =
- Xml::tags( 'label', array( 'for' => 'wpSummary' ), $subject );
- $commentsubject =
- Xml::tags( 'span', array( 'class' => $summaryClass, 'id' => "wpSummaryLabel" ),
- $commentsubject );
- $commentsubject .= '&nbsp;';
- $commentsubject .= Xml::input( 'wpSummary',
- 60,
- $summarytext,
- array(
- 'id' => 'wpSummary',
- 'maxlength' => '200',
- 'tabindex' => '1'
- ) );
- }
- $editsummary = "<div class='editOptions'>\n";
- global $wgParser;
- $formattedSummary = wfMsgForContent( 'newsectionsummary', $wgParser->stripSectionName( $this->summary ) );
- $subjectpreview = $summarytext && $this->preview ? "<div class=\"mw-summary-preview\">". wfMsg('subject-preview') . $sk->commentBlock( $formattedSummary, $this->mTitle, true )."</div>\n" : '';
- $summarypreview = '';
+ /**
+ * @param bool $isSubjectPreview true if this is the section subject/title
+ * up top, or false if this is the comment
+ * summary down below the textarea
+ * @param string $summary The text of the summary to display
+ * @return string
+ */
+ protected function showSummaryInput( $isSubjectPreview, $summary = "" ) {
+ global $wgOut, $wgContLang;
+ # Add a class if 'missingsummary' is triggered to allow styling of the summary line
+ $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary';
+ if ( $isSubjectPreview ) {
+ if ( $this->nosummary )
+ return;
} else {
- $commentsubject = '';
-
- # Add a class if 'missingsummary' is triggered to allow styling of the summary line
- $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary';
-
- $editsummary = Xml::tags( 'label', array( 'for' => 'wpSummary' ), $summary );
- $editsummary = Xml::tags( 'span', array( 'class' => $summaryClass, 'id' => "wpSummaryLabel" ),
- $editsummary ) . ' ';
-
- $editsummary .= Xml::input( 'wpSummary',
- 60,
- $summarytext,
- array(
- 'id' => 'wpSummary',
- 'maxlength' => '200',
- 'tabindex' => '1'
- ) );
-
- // No idea where this is closed.
- $editsummary = Xml::openElement( 'div', array( 'class' => 'editOptions' ) )
- . $editsummary . '<br/>';
-
- $summarypreview = '';
- if ( $summarytext && $this->preview ) {
- $summarypreview =
- Xml::tags( 'div',
- array( 'class' => 'mw-summary-preview' ),
- wfMsg( 'summary-preview' ) .
- $sk->commentBlock( $this->summary, $this->mTitle )
- );
- }
- $subjectpreview = '';
- }
- $commentsubject .= $summaryhiddens;
-
- # Set focus to the edit box on load, except on preview or diff, where it would interfere with the display
- if ( !$this->preview && !$this->diff ) {
- $wgOut->setOnloadHandler( 'document.editform.wpTextbox1.focus()' );
- }
- $templates = $this->getTemplates();
- $formattedtemplates = $sk->formatTemplates( $templates, $this->preview, $this->section != '');
-
- $hiddencats = $this->mArticle->getHiddenCategories();
- $formattedhiddencats = $sk->formatHiddenCategories( $hiddencats );
-
- global $wgUseMetadataEdit ;
- if ( $wgUseMetadataEdit ) {
- $metadata = $this->mMetaData ;
- $metadata = htmlspecialchars( $wgContLang->recodeForEdit( $metadata ) ) ;
- $top = wfMsgWikiHtml( 'metadata_help' );
- /* ToDo: Replace with clean code */
- $ew = $wgUser->getOption( 'editwidth' );
- if ( $ew ) $ew = " style=\"width:100%\"";
- else $ew = '';
- $cols = $wgUser->getIntOption( 'cols' );
- /* /ToDo */
- $metadata = $top . "<textarea name='metadata' rows='3' cols='{$cols}'{$ew}>{$metadata}</textarea>" ;
- }
- else $metadata = "" ;
-
- $recreate = '';
- if ( $this->wasDeletedSinceLastEdit() ) {
- if ( 'save' != $this->formtype ) {
- $wgOut->wrapWikiMsg(
- "<div class='error mw-deleted-while-editing'>\n$1</div>",
- 'deletedwhileediting' );
- } else {
- // Hide the toolbar and edit area, user can click preview to get it back
- // Add an confirmation checkbox and explanation.
- $toolbar = '';
- $recreate = '<div class="mw-confirm-recreate">' .
- $wgOut->parse( wfMsg( 'confirmrecreate', $this->lastDelete->user_name , $this->lastDelete->log_comment ) ) .
- Xml::checkLabel( wfMsg( 'recreate' ), 'wpRecreate', 'wpRecreate', false,
- array( 'title' => $sk->titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
- ) . '</div>';
- }
- }
-
- $tabindex = 2;
-
- $checkboxes = $this->getCheckboxes( $tabindex, $sk,
- array( 'minor' => $this->minoredit, 'watch' => $this->watchthis ) );
-
- $checkboxhtml = implode( $checkboxes, "\n" );
-
- $buttons = $this->getEditButtons( $tabindex );
- $buttonshtml = implode( $buttons, "\n" );
-
- $safemodehtml = $this->checkUnicodeCompliantBrowser()
- ? '' : Xml::hidden( 'safemode', '1' );
-
- $wgOut->addHTML( <<<END
-{$toolbar}
-<form id="editform" name="editform" method="post" action="$action" enctype="multipart/form-data">
-END
-);
-
- if ( is_callable( $formCallback ) ) {
- call_user_func_array( $formCallback, array( &$wgOut ) );
+ if ( !$this->mShowSummaryField )
+ return;
}
+ $summary = $wgContLang->recodeForEdit( $summary );
+ $labelText = wfMsgExt( $isSubjectPreview ? 'subject' : 'summary', 'parseinline' );
+ list($label, $input) = $this->getSummaryInput($summary, $labelText, array( 'class' => $summaryClass ), array());
+ $wgOut->addHTML("{$label} {$input}");
+ }
- wfRunHooks( 'EditPage::showEditForm:fields', array( &$this, &$wgOut ) );
-
- // Put these up at the top to ensure they aren't lost on early form submission
- $this->showFormBeforeText();
-
- $wgOut->addHTML( <<<END
-{$recreate}
-{$commentsubject}
-{$subjectpreview}
-{$this->editFormTextBeforeContent}
-END
-);
- $this->showTextbox1( $classes );
-
- $wgOut->wrapWikiMsg( "<div id=\"editpage-copywarn\">\n$1\n</div>", $copywarnMsg );
- $wgOut->addHTML( <<<END
-{$this->editFormTextAfterWarn}
-{$metadata}
-{$editsummary}
-{$summarypreview}
-{$checkboxhtml}
-{$safemodehtml}
-END
-);
+ /**
+ * @param bool $isSubjectPreview true if this is the section subject/title
+ * up top, or false if this is the comment
+ * summary down below the textarea
+ * @param string $summary The text of the summary to display
+ * @return string
+ */
+ protected function getSummaryPreview( $isSubjectPreview, $summary = "" ) {
+ if ( !$summary || ( !$this->preview && !$this->diff ) )
+ return "";
+
+ global $wgParser, $wgUser;
+ $sk = $wgUser->getSkin();
+
+ if ( $isSubjectPreview )
+ $summary = wfMsgForContent( 'newsectionsummary', $wgParser->stripSectionName( $summary ) );
- $wgOut->addHTML(
-"<div class='editButtons'>
-{$buttonshtml}
- <span class='editHelp'>{$cancel}{$separator}{$edithelp}</span>
-</div><!-- editButtons -->
-</div><!-- editOptions -->");
+ $summary = wfMsgExt( 'subject-preview', 'parseinline' ) . $sk->commentBlock( $summary, $this->mTitle, !!$isSubjectPreview );
+ return Xml::tags( 'div', array( 'class' => 'mw-summary-preview' ), $summary );
+ }
+ protected function showFormBeforeText() {
+ global $wgOut;
+ $section = htmlspecialchars( $this->section );
+ $wgOut->addHTML( <<<INPUTS
+<input type='hidden' value="{$section}" name="wpSection" />
+<input type='hidden' value="{$this->starttime}" name="wpStarttime" />
+<input type='hidden' value="{$this->edittime}" name="wpEdittime" />
+<input type='hidden' value="{$this->scrolltop}" name="wpScrolltop" id="wpScrolltop" />
+
+INPUTS
+ );
+ if ( !$this->checkUnicodeCompliantBrowser() )
+ $wgOut->addHTML(Xml::hidden( 'safemode', '1' ));
+ }
+
+ protected function showFormAfterText() {
+ global $wgOut, $wgUser;
/**
* To make it harder for someone to slip a user a page
* which submits an edit form to the wiki without their
@@ -1532,68 +1570,64 @@ END
* include the constant suffix to prevent editing from
* broken text-mangling proxies.
*/
- $token = htmlspecialchars( $wgUser->editToken() );
- $wgOut->addHTML( "\n<input type='hidden' value=\"$token\" name=\"wpEditToken\" />\n" );
-
- $this->showEditTools();
-
- $wgOut->addHTML( <<<END
-{$this->editFormTextAfterTools}
-<div class='templatesUsed'>
-{$formattedtemplates}
-</div>
-<div class='hiddencats'>
-{$formattedhiddencats}
-</div>
-END
-);
-
- if ( $this->isConflict && wfRunHooks( 'EditPageBeforeConflictDiff', array( &$this, &$wgOut ) ) ) {
- $wgOut->wrapWikiMsg( '==$1==', "yourdiff" );
-
- $de = new DifferenceEngine( $this->mTitle );
- $de->setText( $this->textbox2, $this->textbox1 );
- $de->showDiff( wfMsg( "yourtext" ), wfMsg( "storedversion" ) );
-
- $wgOut->wrapWikiMsg( '==$1==', "yourtext" );
- $this->showTextbox2();
- }
- $wgOut->addHTML( $this->editFormTextBottom );
- $wgOut->addHTML( "</form>\n" );
- if ( !$wgUser->getOption( 'previewontop' ) ) {
- $this->displayPreviewArea( $previewOutput, false );
- }
-
- wfProfileOut( $fname );
+ $wgOut->addHTML( "\n" . Xml::hidden( "wpEditToken", $wgUser->editToken() ) . "\n" );
}
- protected function showFormBeforeText() {
- global $wgOut;
- $wgOut->addHTML( "
-<input type='hidden' value=\"" . htmlspecialchars( $this->section ) . "\" name=\"wpSection\" />
-<input type='hidden' value=\"{$this->starttime}\" name=\"wpStarttime\" />\n
-<input type='hidden' value=\"{$this->edittime}\" name=\"wpEdittime\" />\n
-<input type='hidden' value=\"{$this->scrolltop}\" name=\"wpScrolltop\" id=\"wpScrolltop\" />\n" );
+ /**
+ * Subpage overridable method for printing the form for page content editing
+ * By default this simply outputs wpTextbox1
+ * Subclasses can override this to provide a custom UI for editing;
+ * be it a form, or simply wpTextbox1 with a modified content that will be
+ * reverse modified when extracted from the post data.
+ * Note that this is basically the inverse for importContentFormData
+ *
+ * @praram WebRequest $request
+ */
+ protected function showContentForm() {
+ $this->showTextbox1();
}
-
- protected function showTextbox1( $classes ) {
+
+ /**
+ * Method to output wpTextbox1
+ * The $textoverride method can be used by subclasses overriding showContentForm
+ * to pass back to this method.
+ *
+ * @param array $customAttribs An array of html attributes to use in the textarea
+ * @param string $textoverride Optional text to override $this->textarea1 with
+ */
+ protected function showTextbox1($customAttribs = null, $textoverride = null) {
+ $classes = array(); // Textarea CSS
+ if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+ # Is the title semi-protected?
+ if ( $this->mTitle->isSemiProtected() ) {
+ $classes[] = 'mw-textarea-sprotected';
+ } else {
+ # Then it must be protected based on static groups (regular)
+ $classes[] = 'mw-textarea-protected';
+ }
+ }
$attribs = array( 'tabindex' => 1 );
-
+ if ( is_array($customAttribs) )
+ $attribs += $customAttribs;
+
if ( $this->wasDeletedSinceLastEdit() )
$attribs['type'] = 'hidden';
- if ( !empty($classes) )
- $attribs['class'] = implode(' ',$classes);
+ if ( !empty( $classes ) ) {
+ if ( isset($attribs['class']) )
+ $classes[] = $attribs['class'];
+ $attribs['class'] = implode( ' ', $classes );
+ }
- $this->showTextbox( $this->textbox1, 'wpTextbox1', $attribs );
+ $this->showTextbox( isset($textoverride) ? $textoverride : $this->textbox1, 'wpTextbox1', $attribs );
}
-
+
protected function showTextbox2() {
$this->showTextbox( $this->textbox2, 'wpTextbox2', array( 'tabindex' => 6 ) );
}
-
- protected function showTextbox( $content, $name, $attribs = array() ) {
+
+ protected function showTextbox( $content, $name, $customAttribs = array() ) {
global $wgOut, $wgUser;
-
+
$wikitext = $this->safeUnicodeOutput( $content );
if ( $wikitext !== '' ) {
// Ensure there's a newline at the end, otherwise adding lines
@@ -1602,18 +1636,19 @@ END
// mode will show an extra newline. A bit annoying.
$wikitext .= "\n";
}
-
- $attribs['accesskey'] = ',';
- $attribs['id'] = $name;
-
+
+ $attribs = $customAttribs + array(
+ 'accesskey' => ',',
+ 'id' => $name,
+ 'cols' => $wgUser->getIntOption( 'cols' ),
+ 'rows' => $wgUser->getIntOption( 'rows' ),
+ 'style' => '' // avoid php notices when appending for editwidth preference (appending allows customAttribs['style'] to still work
+ );
+
if ( $wgUser->getOption( 'editwidth' ) )
- $attribs['style'] = 'width: 100%';
-
- $wgOut->addHTML( Xml::textarea(
- $name,
- $wikitext,
- $wgUser->getIntOption( 'cols' ), $wgUser->getIntOption( 'rows' ),
- $attribs ) );
+ $attribs['style'] .= 'width: 100%';
+
+ $wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) );
}
protected function displayPreviewArea( $previewOutput, $isOnTop = false ) {
@@ -1660,23 +1695,22 @@ END
}
}
- /**
- * Live Preview lets us fetch rendered preview page content and
- * add it to the page without refreshing the whole page.
- * If not supported by the browser it will fall through to the normal form
- * submission method.
- *
- * This function outputs a script tag to support live preview, and
- * returns an onclick handler which should be added to the attributes
- * of the preview button
- */
- function doLivePreviewScript() {
- global $wgOut, $wgTitle;
- $wgOut->addScriptFile( 'preview.js' );
- $liveAction = $wgTitle->getLocalUrl( "action={$this->action}&wpPreview=true&live=true" );
- return "return !lpDoPreview(" .
- "editform.wpTextbox1.value," .
- '"' . $liveAction . '"' . ")";
+ protected function showTosSummary() {
+ $msg = 'editpage-tos-summary';
+ // Give a chance for site and per-namespace customizations of
+ // terms of service summary link that might exist separately
+ // from the copyright notice.
+ //
+ // This will display between the save button and the edit tools,
+ // so should remain short!
+ wfRunHooks( 'EditPageTosSummary', array( $this->mTitle, &$msg ) );
+ $text = wfMsg( $msg );
+ if( !wfEmptyMsg( $msg, $text ) && $text !== '-' ) {
+ global $wgOut;
+ $wgOut->addHTML( '<div class="mw-tos-summary">' );
+ $wgOut->addWikiMsgArray( $msg, array() );
+ $wgOut->addHTML( '</div>' );
+ }
}
protected function showEditTools() {
@@ -1685,6 +1719,67 @@ END
$wgOut->addWikiMsgArray( 'edittools', array(), array( 'content' ) );
$wgOut->addHTML( '</div>' );
}
+
+ protected function getCopywarn() {
+ global $wgRightsText;
+ if ( $wgRightsText ) {
+ $copywarnMsg = array( 'copyrightwarning',
+ '[[' . wfMsgForContent( 'copyrightpage' ) . ']]',
+ $wgRightsText );
+ } else {
+ $copywarnMsg = array( 'copyrightwarning2',
+ '[[' . wfMsgForContent( 'copyrightpage' ) . ']]' );
+ }
+ // Allow for site and per-namespace customization of contribution/copyright notice.
+ wfRunHooks( 'EditPageCopyrightWarning', array( $this->mTitle, &$copywarnMsg ) );
+
+ return "<div id=\"editpage-copywarn\">\n" . call_user_func_array("wfMsgNoTrans", $copywarnMsg) . "\n</div>";
+ }
+
+ protected function showStandardInputs( &$tabindex = 2 ) {
+ global $wgOut, $wgUser;
+ $wgOut->addHTML( "<div class='editOptions'>\n" );
+
+ if ( $this->section != 'new' ) {
+ $this->showSummaryInput( false, $this->summary );
+ $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) );
+ }
+
+ $checkboxes = $this->getCheckboxes( $tabindex, $wgUser->getSkin(),
+ array( 'minor' => $this->minoredit, 'watch' => $this->watchthis ) );
+ $wgOut->addHTML( "<div class='editCheckboxes'>" . implode( $checkboxes, "\n" ) . "</div>\n" );
+ $wgOut->addHTML( "<div class='editButtons'>\n" );
+ $wgOut->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" );
+
+ $cancel = $this->getCancelLink();
+ $separator = wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ $edithelpurl = Skin::makeInternalOrExternalUrl( wfMsgForContent( 'edithelppage' ) );
+ $edithelp = '<a target="helpwindow" href="'.$edithelpurl.'">'.
+ htmlspecialchars( wfMsg( 'edithelp' ) ).'</a> '.
+ htmlspecialchars( wfMsg( 'newwindow' ) );
+ $wgOut->addHTML( " <span class='editHelp'>{$cancel}{$separator}{$edithelp}</span>\n" );
+ $wgOut->addHTML( "</div><!-- editButtons -->\n</div><!-- editOptions -->\n" );
+ }
+
+ /*
+ * Show an edit conflict. textbox1 is already shown in showEditForm().
+ * If you want to use another entry point to this function, be careful.
+ */
+ protected function showConflict() {
+ global $wgOut;
+ $this->textbox2 = $this->textbox1;
+ $this->textbox1 = $this->getContent();
+ if ( wfRunHooks( 'EditPageBeforeConflictDiff', array( &$this, &$wgOut ) ) ) {
+ $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
+
+ $de = new DifferenceEngine( $this->mTitle );
+ $de->setText( $this->textbox2, $this->textbox1 );
+ $de->showDiff( wfMsg( "yourtext" ), wfMsg( "storedversion" ) );
+
+ $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
+ $this->showTextbox2();
+ }
+ }
protected function getLastDelete() {
$dbr = wfGetDB( DB_SLAVE );
@@ -1698,7 +1793,7 @@ END
'log_title',
'log_comment',
'log_params',
- 'log_deleted',
+ 'log_deleted',
'user_name' ),
array( 'log_namespace' => $this->mTitle->getNamespace(),
'log_title' => $this->mTitle->getDBkey(),
@@ -1709,11 +1804,11 @@ END
array( 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' )
);
// Quick paranoid permission checks...
- if( is_object($data) ) {
+ if( is_object( $data ) ) {
if( $data->log_deleted & LogPage::DELETED_USER )
- $data->user_name = wfMsgHtml('rev-deleted-user');
+ $data->user_name = wfMsgHtml( 'rev-deleted-user' );
if( $data->log_deleted & LogPage::DELETED_COMMENT )
- $data->log_comment = wfMsgHtml('rev-deleted-comment');
+ $data->log_comment = wfMsgHtml( 'rev-deleted-comment' );
}
return $data;
}
@@ -1754,12 +1849,12 @@ END
# XXX: stupid php bug won't let us use $wgTitle->isCssJsSubpage() here
if ( $this->isCssJsSubpage ) {
- if (preg_match("/\\.css$/", $this->mTitle->getText() ) ) {
- $previewtext = wfMsg('usercsspreview');
- } else if (preg_match("/\\.js$/", $this->mTitle->getText() ) ) {
- $previewtext = wfMsg('userjspreview');
+ if (preg_match( "/\\.css$/", $this->mTitle->getText() ) ) {
+ $previewtext = wfMsg( 'usercsspreview' );
+ } else if (preg_match( "/\\.js$/", $this->mTitle->getText() ) ) {
+ $previewtext = wfMsg( 'userjspreview' );
}
- $parserOptions->setTidy(true);
+ $parserOptions->setTidy( true );
$parserOutput = $wgParser->parse( $previewtext, $this->mTitle, $parserOptions );
$previewHTML = $parserOutput->mText;
} elseif ( $rt = Title::newFromRedirectArray( $this->textbox1 ) ) {
@@ -1769,11 +1864,11 @@ END
# If we're adding a comment, we need to show the
# summary as the headline
- if ( $this->section=="new" && $this->summary!="" ) {
- $toparse="== {$this->summary} ==\n\n".$toparse;
+ if ( $this->section == "new" && $this->summary != "" ) {
+ $toparse = "== {$this->summary} ==\n\n" . $toparse;
}
- if ( $this->mMetaData != "" ) $toparse .= "\n" . $this->mMetaData;
+ wfRunHooks( 'EditPageGetPreviewText', array( $this, &$toparse ) );
// Parse mediawiki messages with correct target language
if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
@@ -1783,7 +1878,7 @@ END
}
- $parserOptions->setTidy(true);
+ $parserOptions->setTidy( true );
$parserOptions->enableLimitReport();
$parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $toparse ),
$this->mTitle, $parserOptions );
@@ -1797,20 +1892,24 @@ END
}
}
- $previewhead = '<h2>' . htmlspecialchars( wfMsg( 'preview' ) ) . "</h2>\n" .
- "<div class='previewnote'>" . $wgOut->parse( $note ) . "</div>\n";
- if ( $this->isConflict ) {
- $previewhead .='<h2>' . htmlspecialchars( wfMsg( 'previewconflict' ) ) . "</h2>\n";
+ if( $this->isConflict ) {
+ $conflict = '<h2 id="mw-previewconflict">' . htmlspecialchars( wfMsg( 'previewconflict' ) ) . "</h2>\n";
+ } else {
+ $conflict = '<hr />';
}
+ $previewhead = "<div class='previewnote'>\n" .
+ '<h2 id="mw-previewheader">' . htmlspecialchars( wfMsg( 'preview' ) ) . "</h2>" .
+ $wgOut->parse( $note ) . $conflict . "</div>\n";
+
wfProfileOut( __METHOD__ );
- return $previewhead . $previewHTML;
+ return $previewhead . $previewHTML . $this->previewTextAfterContent;
}
-
+
function getTemplates() {
if ( $this->preview || $this->section != '' ) {
$templates = array();
- if ( !isset($this->mParserOutput) ) return $templates;
+ if ( !isset( $this->mParserOutput ) ) return $templates;
foreach( $this->mParserOutput->getTemplates() as $ns => $template) {
foreach( array_keys( $template ) as $dbk ) {
$templates[] = Title::makeTitle($ns, $dbk);
@@ -1826,7 +1925,7 @@ END
* Call the stock "user is blocked" page
*/
function blockedPage() {
- global $wgOut, $wgUser;
+ global $wgOut;
$wgOut->blockedPage( false ); # Standard block notice on the top, don't 'return'
# If the user made changes, preserve them when showing the markup
@@ -1840,14 +1939,9 @@ END
# Spit out the source or the user's modified version
if ( $source !== false ) {
- $rows = $wgUser->getIntOption( 'rows' );
- $cols = $wgUser->getIntOption( 'cols' );
- $attribs = array( 'id' => 'wpTextbox1', 'name' => 'wpTextbox1', 'cols' => $cols, 'rows' => $rows, 'readonly' => 'readonly' );
$wgOut->addHTML( '<hr />' );
$wgOut->addWikiMsg( $first ? 'blockedoriginalsource' : 'blockededitsource', $this->mTitle->getPrefixedText() );
- # Why we don't use Xml::element here?
- # Is it because if $source is '', it returns <textarea />?
- $wgOut->addHTML( Xml::openElement( 'textarea', $attribs ) . htmlspecialchars( $source ) . Xml::closeElement( 'textarea' ) );
+ $this->showTextbox1( array( 'readonly' ), $source );
}
}
@@ -1859,7 +1953,13 @@ END
$skin = $wgUser->getSkin();
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
- $loginLink = $skin->makeKnownLinkObj( $loginTitle, wfMsgHtml( 'loginreqlink' ), 'returnto=' . $wgTitle->getPrefixedUrl() );
+ $loginLink = $skin->link(
+ $loginTitle,
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $wgTitle->getPrefixedText() ),
+ array( 'known', 'noclasses' )
+ );
$wgOut->setPageTitle( wfMsg( 'whitelistedittitle' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
@@ -1874,14 +1974,17 @@ END
* they have attempted to edit a nonexistent section.
*/
function noSuchSectionPage() {
- global $wgOut, $wgTitle;
+ global $wgOut;
$wgOut->setPageTitle( wfMsg( 'nosuchsectiontitle' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->setArticleRelated( false );
- $wgOut->addWikiMsg( 'nosuchsectiontext', $this->section );
- $wgOut->returnToMain( false, $wgTitle );
+ $res = wfMsgExt( 'nosuchsectiontext', 'parse', $this->section );
+ wfRunHooks( 'EditPageNoSuchSection', array( &$this, &$res ) );
+ $wgOut->addHTML( $res );
+
+ $wgOut->returnToMain( false, $this->mTitle );
}
/**
@@ -1910,15 +2013,14 @@ END
* @todo document
*/
function mergeChangesInto( &$editText ){
- $fname = 'EditPage::mergeChangesInto';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
$db = wfGetDB( DB_MASTER );
// This is the revision the editor started from
$baseRevision = $this->getBaseRevision();
if ( is_null( $baseRevision ) ) {
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return false;
}
$baseText = $baseRevision->getText();
@@ -1926,7 +2028,7 @@ END
// The current state, we want to merge updates into it
$currentRevision = Revision::loadFromTitle( $db, $this->mTitle );
if ( is_null( $currentRevision ) ) {
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return false;
}
$currentText = $currentRevision->getText();
@@ -1934,10 +2036,10 @@ END
$result = '';
if ( wfMerge( $baseText, $editText, $currentText, $result ) ) {
$editText = $result;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return true;
} else {
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return false;
}
}
@@ -1987,13 +2089,14 @@ END
* Shows a bulletin board style toolbar for common editing functions.
* It can be disabled in the user preferences.
* The necessary JavaScript code can be found in skins/common/edit.js.
- *
+ *
* @return string
*/
static function getEditToolbar() {
- global $wgStylePath, $wgContLang, $wgLang, $wgJsMimeType;
+ global $wgStylePath, $wgContLang, $wgLang;
/**
+
* toolarray an array of arrays which each include the filename of
* the button image (without path), the opening tag, the closing tag,
* and optionally a sample text that is inserted between the two when no
@@ -2006,111 +2109,111 @@ END
*/
$toolarray = array(
array(
- 'image' => $wgLang->getImageFile('button-bold'),
+ 'image' => $wgLang->getImageFile( 'button-bold' ),
'id' => 'mw-editbutton-bold',
'open' => '\'\'\'',
'close' => '\'\'\'',
- 'sample' => wfMsg('bold_sample'),
- 'tip' => wfMsg('bold_tip'),
+ 'sample' => wfMsg( 'bold_sample' ),
+ 'tip' => wfMsg( 'bold_tip' ),
'key' => 'B'
),
array(
- 'image' => $wgLang->getImageFile('button-italic'),
+ 'image' => $wgLang->getImageFile( 'button-italic' ),
'id' => 'mw-editbutton-italic',
'open' => '\'\'',
'close' => '\'\'',
- 'sample' => wfMsg('italic_sample'),
- 'tip' => wfMsg('italic_tip'),
+ 'sample' => wfMsg( 'italic_sample' ),
+ 'tip' => wfMsg( 'italic_tip' ),
'key' => 'I'
),
array(
- 'image' => $wgLang->getImageFile('button-link'),
+ 'image' => $wgLang->getImageFile( 'button-link' ),
'id' => 'mw-editbutton-link',
'open' => '[[',
'close' => ']]',
- 'sample' => wfMsg('link_sample'),
- 'tip' => wfMsg('link_tip'),
+ 'sample' => wfMsg( 'link_sample' ),
+ 'tip' => wfMsg( 'link_tip' ),
'key' => 'L'
),
array(
- 'image' => $wgLang->getImageFile('button-extlink'),
+ 'image' => $wgLang->getImageFile( 'button-extlink' ),
'id' => 'mw-editbutton-extlink',
'open' => '[',
'close' => ']',
- 'sample' => wfMsg('extlink_sample'),
- 'tip' => wfMsg('extlink_tip'),
+ 'sample' => wfMsg( 'extlink_sample' ),
+ 'tip' => wfMsg( 'extlink_tip' ),
'key' => 'X'
),
array(
- 'image' => $wgLang->getImageFile('button-headline'),
+ 'image' => $wgLang->getImageFile( 'button-headline' ),
'id' => 'mw-editbutton-headline',
'open' => "\n== ",
'close' => " ==\n",
- 'sample' => wfMsg('headline_sample'),
- 'tip' => wfMsg('headline_tip'),
+ 'sample' => wfMsg( 'headline_sample' ),
+ 'tip' => wfMsg( 'headline_tip' ),
'key' => 'H'
),
array(
- 'image' => $wgLang->getImageFile('button-image'),
+ 'image' => $wgLang->getImageFile( 'button-image' ),
'id' => 'mw-editbutton-image',
- 'open' => '[['.$wgContLang->getNsText(NS_FILE).':',
+ 'open' => '[[' . $wgContLang->getNsText( NS_FILE ) . ':',
'close' => ']]',
- 'sample' => wfMsg('image_sample'),
- 'tip' => wfMsg('image_tip'),
+ 'sample' => wfMsg( 'image_sample' ),
+ 'tip' => wfMsg( 'image_tip' ),
'key' => 'D'
),
array(
- 'image' => $wgLang->getImageFile('button-media'),
+ 'image' => $wgLang->getImageFile( 'button-media' ),
'id' => 'mw-editbutton-media',
- 'open' => '[['.$wgContLang->getNsText(NS_MEDIA).':',
+ 'open' => '[[' . $wgContLang->getNsText( NS_MEDIA ) . ':',
'close' => ']]',
- 'sample' => wfMsg('media_sample'),
- 'tip' => wfMsg('media_tip'),
+ 'sample' => wfMsg( 'media_sample' ),
+ 'tip' => wfMsg( 'media_tip' ),
'key' => 'M'
),
array(
- 'image' => $wgLang->getImageFile('button-math'),
+ 'image' => $wgLang->getImageFile( 'button-math' ),
'id' => 'mw-editbutton-math',
'open' => "<math>",
'close' => "</math>",
- 'sample' => wfMsg('math_sample'),
- 'tip' => wfMsg('math_tip'),
+ 'sample' => wfMsg( 'math_sample' ),
+ 'tip' => wfMsg( 'math_tip' ),
'key' => 'C'
),
array(
- 'image' => $wgLang->getImageFile('button-nowiki'),
+ 'image' => $wgLang->getImageFile( 'button-nowiki' ),
'id' => 'mw-editbutton-nowiki',
'open' => "<nowiki>",
'close' => "</nowiki>",
- 'sample' => wfMsg('nowiki_sample'),
- 'tip' => wfMsg('nowiki_tip'),
+ 'sample' => wfMsg( 'nowiki_sample' ),
+ 'tip' => wfMsg( 'nowiki_tip' ),
'key' => 'N'
),
array(
- 'image' => $wgLang->getImageFile('button-sig'),
+ 'image' => $wgLang->getImageFile( 'button-sig' ),
'id' => 'mw-editbutton-signature',
'open' => '--~~~~',
'close' => '',
'sample' => '',
- 'tip' => wfMsg('sig_tip'),
+ 'tip' => wfMsg( 'sig_tip' ),
'key' => 'Y'
),
array(
- 'image' => $wgLang->getImageFile('button-hr'),
+ 'image' => $wgLang->getImageFile( 'button-hr' ),
'id' => 'mw-editbutton-hr',
'open' => "\n----\n",
'close' => '',
'sample' => '',
- 'tip' => wfMsg('hr_tip'),
+ 'tip' => wfMsg( 'hr_tip' ),
'key' => 'R'
)
);
$toolbar = "<div id='toolbar'>\n";
- $toolbar.="<script type='$wgJsMimeType'>\n/*<![CDATA[*/\n";
- foreach($toolarray as $tool) {
+ $script = '';
+ foreach ( $toolarray as $tool ) {
$params = array(
- $image = $wgStylePath.'/common/images/'.$tool['image'],
+ $image = $wgStylePath . '/common/images/' . $tool['image'],
// Note that we use the tip both for the ALT tag and the TITLE tag of the image.
// Older browsers show a "speedtip" type message only for ALT.
// Ideally these should be different, realistically they
@@ -2124,11 +2227,14 @@ END
$paramList = implode( ',',
array_map( array( 'Xml', 'encodeJsVar' ), $params ) );
- $toolbar.="addButton($paramList);\n";
+ $script .= "addButton($paramList);\n";
}
+ $toolbar .= Html::inlineScript( "\n$script\n" );
+
+ $toolbar .= "\n</div>";
+
+ wfRunHooks( 'EditPageBeforeEditToolbar', array( &$toolbar ) );
- $toolbar.="/*]]>*/\n</script>";
- $toolbar.="\n</div>";
return $toolbar;
}
@@ -2149,8 +2255,8 @@ END
$checkboxes = array();
$checkboxes['minor'] = '';
- $minorLabel = wfMsgExt('minoredit', array('parseinline'));
- if ( $wgUser->isAllowed('minoredit') ) {
+ $minorLabel = wfMsgExt( 'minoredit', array( 'parseinline' ) );
+ if ( $wgUser->isAllowed( 'minoredit' ) ) {
$attribs = array(
'tabindex' => ++$tabindex,
'accesskey' => wfMsg( 'accesskey-minoredit' ),
@@ -2158,10 +2264,10 @@ END
);
$checkboxes['minor'] =
Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
- "&nbsp;<label for='wpMinoredit'".$skin->tooltip('minoredit', 'withaccess').">{$minorLabel}</label>";
+ "&nbsp;<label for='wpMinoredit'" . $skin->tooltip( 'minoredit', 'withaccess' ) . ">{$minorLabel}</label>";
}
- $watchLabel = wfMsgExt('watchthis', array('parseinline'));
+ $watchLabel = wfMsgExt( 'watchthis', array( 'parseinline' ) );
$checkboxes['watch'] = '';
if ( $wgUser->isLoggedIn() ) {
$attribs = array(
@@ -2171,7 +2277,7 @@ END
);
$checkboxes['watch'] =
Xml::check( 'wpWatchthis', $checked['watch'], $attribs ) .
- "&nbsp;<label for='wpWatchthis'".$skin->tooltip('watch', 'withaccess').">{$watchLabel}</label>";
+ "&nbsp;<label for='wpWatchthis'" . $skin->tooltip( 'watch', 'withaccess' ) . ">{$watchLabel}</label>";
}
wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
return $checkboxes;
@@ -2186,8 +2292,6 @@ END
* @return array
*/
public function getEditButtons(&$tabindex) {
- global $wgLivePreview, $wgUser;
-
$buttons = array();
$temp = array(
@@ -2195,61 +2299,35 @@ END
'name' => 'wpSave',
'type' => 'submit',
'tabindex' => ++$tabindex,
- 'value' => wfMsg('savearticle'),
- 'accesskey' => wfMsg('accesskey-save'),
+ 'value' => wfMsg( 'savearticle' ),
+ 'accesskey' => wfMsg( 'accesskey-save' ),
'title' => wfMsg( 'tooltip-save' ).' ['.wfMsg( 'accesskey-save' ).']',
);
$buttons['save'] = Xml::element('input', $temp, '');
++$tabindex; // use the same for preview and live preview
- if ( $wgLivePreview && $wgUser->getOption( 'uselivepreview' ) ) {
- $temp = array(
- 'id' => 'wpPreview',
- 'name' => 'wpPreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg('showpreview'),
- 'accesskey' => '',
- 'title' => wfMsg( 'tooltip-preview' ).' ['.wfMsg( 'accesskey-preview' ).']',
- 'style' => 'display: none;',
- );
- $buttons['preview'] = Xml::element('input', $temp, '');
-
- $temp = array(
- 'id' => 'wpLivePreview',
- 'name' => 'wpLivePreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg('showlivepreview'),
- 'accesskey' => wfMsg('accesskey-preview'),
- 'title' => '',
- 'onclick' => $this->doLivePreviewScript(),
- );
- $buttons['live'] = Xml::element('input', $temp, '');
- } else {
- $temp = array(
- 'id' => 'wpPreview',
- 'name' => 'wpPreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg('showpreview'),
- 'accesskey' => wfMsg('accesskey-preview'),
- 'title' => wfMsg( 'tooltip-preview' ).' ['.wfMsg( 'accesskey-preview' ).']',
- );
- $buttons['preview'] = Xml::element('input', $temp, '');
- $buttons['live'] = '';
- }
+ $temp = array(
+ 'id' => 'wpPreview',
+ 'name' => 'wpPreview',
+ 'type' => 'submit',
+ 'tabindex' => $tabindex,
+ 'value' => wfMsg( 'showpreview' ),
+ 'accesskey' => wfMsg( 'accesskey-preview' ),
+ 'title' => wfMsg( 'tooltip-preview' ) . ' [' . wfMsg( 'accesskey-preview' ) . ']',
+ );
+ $buttons['preview'] = Xml::element( 'input', $temp, '' );
+ $buttons['live'] = '';
$temp = array(
'id' => 'wpDiff',
'name' => 'wpDiff',
'type' => 'submit',
'tabindex' => ++$tabindex,
- 'value' => wfMsg('showdiff'),
- 'accesskey' => wfMsg('accesskey-diff'),
- 'title' => wfMsg( 'tooltip-diff' ).' ['.wfMsg( 'accesskey-diff' ).']',
+ 'value' => wfMsg( 'showdiff' ),
+ 'accesskey' => wfMsg( 'accesskey-diff' ),
+ 'title' => wfMsg( 'tooltip-diff' ) . ' [' . wfMsg( 'accesskey-diff' ) . ']',
);
- $buttons['diff'] = Xml::element('input', $temp, '');
+ $buttons['diff'] = Xml::element( 'input', $temp, '' );
wfRunHooks( 'EditPageBeforeEditButtons', array( &$this, &$buttons, &$tabindex ) );
return $buttons;
@@ -2286,6 +2364,23 @@ END
}
+ public function getCancelLink() {
+ global $wgUser, $wgTitle;
+
+ $cancelParams = array();
+ if ( !$this->isConflict && $this->mArticle->getOldID() > 0 ) {
+ $cancelParams['oldid'] = $this->mArticle->getOldID();
+ }
+
+ return $wgUser->getSkin()->link(
+ $wgTitle,
+ wfMsgExt( 'cancel', array( 'parseinline' ) ),
+ array( 'id' => 'mw-editform-cancel' ),
+ $cancelParams,
+ array( 'known', 'noclasses' )
+ );
+ }
+
/**
* Get a diff between the current contents of the edit box and the
* version of the page we're editing from.
@@ -2297,9 +2392,12 @@ END
$oldtext = $this->mArticle->fetchContent();
$newtext = $this->mArticle->replaceSection(
$this->section, $this->textbox1, $this->summary, $this->edittime );
+
+ wfRunHooks( 'EditPageGetDiffText', array( $this, &$newtext ) );
+
$newtext = $this->mArticle->preSaveTransform( $newtext );
- $oldtitle = wfMsgExt( 'currentrev', array('parseinline') );
- $newtitle = wfMsgExt( 'yourtext', array('parseinline') );
+ $oldtitle = wfMsgExt( 'currentrev', array( 'parseinline' ) );
+ $newtitle = wfMsgExt( 'yourtext', array( 'parseinline' ) );
if ( $oldtext !== false || $newtext != '' ) {
$de = new DifferenceEngine( $this->mTitle );
$de->setText( $oldtext, $newtext );
@@ -2329,6 +2427,13 @@ END
: $text;
}
+ function safeUnicodeText( $request, $text ) {
+ $text = rtrim( $text );
+ return $request->getBool( 'safemode' )
+ ? $this->unmakesafe( $text )
+ : $text;
+ }
+
/**
* Filter an output field through a Unicode armoring process if it is
* going to an old browser with known broken Unicode editing issues.
@@ -2435,58 +2540,22 @@ END
}
/**
- * If there are rows in the deletion log for this page, show them,
- * along with a nice little note for the user
- *
- * @param OutputPage $out
- */
- protected function showDeletionLog( $out ) {
- global $wgUser;
- $loglist = new LogEventsList( $wgUser->getSkin(), $out );
- $pager = new LogPager( $loglist, 'delete', false, $this->mTitle->getPrefixedText() );
- $count = $pager->getNumRows();
- if ( $count > 0 ) {
- $pager->mLimit = 10;
- $out->addHTML( '<div class="mw-warning-with-logexcerpt">' );
- $out->addWikiMsg( 'recreate-deleted-warn' );
- $out->addHTML(
- $loglist->beginLogEventsList() .
- $pager->getBody() .
- $loglist->endLogEventsList()
- );
- if($count > 10){
- $out->addHTML( $wgUser->getSkin()->link(
- SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'deletelog-fulllog' ),
- array(),
- array(
- 'type' => 'delete',
- 'page' => $this->mTitle->getPrefixedText() ) ) );
- }
- $out->addHTML( '</div>' );
- return true;
- }
-
- return false;
- }
-
- /**
* Attempt submission
* @return bool false if output is done, true if the rest of the form should be displayed
*/
function attemptSave() {
- global $wgUser, $wgOut, $wgTitle, $wgRequest;
+ global $wgUser, $wgOut, $wgTitle;
$resultDetails = false;
# Allow bots to exempt some edits from bot flagging
- $bot = $wgUser->isAllowed('bot') && $wgRequest->getBool('bot',true);
+ $bot = $wgUser->isAllowed( 'bot' ) && $this->bot;
$value = $this->internalAttemptSave( $resultDetails, $bot );
if ( $value == self::AS_SUCCESS_UPDATE || $value == self::AS_SUCCESS_NEW_ARTICLE ) {
$this->didSave = true;
}
- switch ($value) {
+ switch ( $value ) {
case self::AS_HOOK_ERROR_EXPECTED:
case self::AS_CONTENT_TOO_BIG:
case self::AS_ARTICLE_WAS_DELETED:
@@ -2504,7 +2573,7 @@ END
return false;
case self::AS_SPAM_ERROR:
- $this->spamPage ( $resultDetails['spam'] );
+ $this->spamPage( $resultDetails['spam'] );
return false;
case self::AS_BLOCKED_PAGE_FOR_USER:
@@ -2528,7 +2597,7 @@ END
$wgOut->rateLimited();
return false;
- case self::AS_NO_CREATE_PERMISSION;
+ case self::AS_NO_CREATE_PERMISSION:
$this->noCreatePermission();
return;
@@ -2541,7 +2610,7 @@ END
return false;
}
}
-
+
function getBaseRevision() {
if ( $this->mBaseRevision == false ) {
$db = wfGetDB( DB_MASTER );
@@ -2551,5 +2620,5 @@ END
} else {
return $this->mBaseRevision;
}
- }
+ }
}
diff --git a/includes/Exception.php b/includes/Exception.php
index 5f808b20..f6bc6f87 100644
--- a/includes/Exception.php
+++ b/includes/Exception.php
@@ -8,13 +8,13 @@
* @ingroup Exception
*/
class MWException extends Exception {
-
/**
* Should the exception use $wgOut to output the error ?
* @return bool
*/
function useOutputPage() {
- return !empty( $GLOBALS['wgFullyInitialised'] ) &&
+ return $this->useMessageCache() &&
+ !empty( $GLOBALS['wgFullyInitialised'] ) &&
( !empty( $GLOBALS['wgArticle'] ) || ( !empty( $GLOBALS['wgOut'] ) && !$GLOBALS['wgOut']->isArticle() ) ) &&
!empty( $GLOBALS['wgTitle'] );
}
@@ -25,6 +25,11 @@ class MWException extends Exception {
*/
function useMessageCache() {
global $wgLang;
+ foreach ( $this->getTrace() as $frame ) {
+ if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) {
+ return false;
+ }
+ }
return is_object( $wgLang );
}
@@ -202,7 +207,7 @@ class MWException extends Exception {
header( 'Pragma: nocache' );
}
$title = $this->getPageTitle();
- echo "<html>
+ return "<html>
<head>
<title>$title</title>
</head>
@@ -215,7 +220,7 @@ class MWException extends Exception {
* print the end of the html page if not using $wgOut.
*/
function htmlFooter() {
- echo "</body></html>";
+ return "</body></html>";
}
/**
@@ -297,7 +302,7 @@ function wfReportException( Exception $e ) {
wfPrintError( $message );
} else {
echo nl2br( htmlspecialchars( $message ) ). "\n";
- }
+ }
}
} else {
$message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class( $e ) . "\"\n" .
@@ -322,8 +327,7 @@ function wfPrintError( $message ) {
# Try to produce meaningful output anyway. Using echo may corrupt output to STDOUT though.
if ( defined( 'STDERR' ) ) {
fwrite( STDERR, $message );
- }
- else {
+ } else {
echo( $message );
}
}
diff --git a/includes/Exif.php b/includes/Exif.php
index 9e54bd55..594e633a 100644
--- a/includes/Exif.php
+++ b/includes/Exif.php
@@ -558,7 +558,7 @@ class Exif {
* @param $fname String:
* @param $action Mixed: , default NULL.
*/
- function debug( $in, $fname, $action = NULL ) {
+ function debug( $in, $fname, $action = null ) {
if ( !$this->log ) {
return;
}
@@ -1043,6 +1043,14 @@ class FormatExif {
$this->formatNum( $val ) );
break;
+ // Do not transform fields with pure text.
+ // For some languages the formatNum() conversion results to wrong output like
+ // foo,bar@example,com or foo٫bar@example٫com
+ case 'ImageDescription':
+ case 'Artist':
+ case 'Copyright':
+ $tags[$tag] = htmlspecialchars( $val );
+ break;
default:
$tags[$tag] = $this->formatNum( $val );
break;
@@ -1080,11 +1088,13 @@ class FormatExif {
* @return mixed A floating point number or whatever we were fed
*/
function formatNum( $num ) {
+ global $wgLang;
+
$m = array();
if ( preg_match( '/^(\d+)\/(\d+)$/', $num, $m ) )
- return $m[2] != 0 ? $m[1] / $m[2] : $num;
+ return $wgLang->formatNum( $m[2] != 0 ? $m[1] / $m[2] : $num );
else
- return $num;
+ return $wgLang->formatNum( $num );
}
/**
@@ -1103,7 +1113,7 @@ class FormatExif {
$gcd = $this->gcd( $numerator, $denominator );
if( $gcd != 0 ) {
// 0 shouldn't happen! ;)
- return $numerator / $gcd . '/' . $denominator / $gcd;
+ return $this->formatNum( $numerator / $gcd ) . '/' . $this->formatNum( $denominator / $gcd );
}
}
return $this->formatNum( $num );
diff --git a/includes/Export.php b/includes/Export.php
index 909804cf..e8e74289 100644
--- a/includes/Export.php
+++ b/includes/Export.php
@@ -55,6 +55,7 @@ class WikiExporter {
* limit: maximum number of rows to return
* dir: "asc" or "desc" timestamp order
* @param $buffer Int: one of WikiExporter::BUFFER or WikiExporter::STREAM
+ * @param $text Int: one of WikiExporter::TEXT or WikiExporter::STUB
*/
function __construct( &$db, $history = WikiExporter::CURRENT,
$buffer = WikiExporter::BUFFER, $text = WikiExporter::TEXT ) {
@@ -155,7 +156,7 @@ class WikiExporter {
wfProfileIn( $fname );
$this->author_list = "<contributors>";
//rev_deleted
- $nothidden = '(rev_deleted & '.Revision::DELETED_USER.') = 0';
+ $nothidden = '('.$this->db->bitAnd('rev_deleted', Revision::DELETED_USER) . ') = 0';
$sql = "SELECT DISTINCT rev_user_text,rev_user FROM {$page},{$revision}
WHERE page_id=rev_page AND $nothidden AND " . $cond ;
@@ -197,37 +198,18 @@ class WikiExporter {
array( 'ORDER BY' => 'log_id', 'USE INDEX' => array('logging' => 'PRIMARY') )
);
$wrapper = $this->db->resultObject( $result );
+ $this->outputLogStream( $wrapper );
if( $this->buffer == WikiExporter::STREAM ) {
$this->db->bufferResults( $prev );
}
- $this->outputLogStream( $wrapper );
# For page dumps...
} else {
$tables = array( 'page', 'revision' );
$opts = array( 'ORDER BY' => 'page_id ASC' );
$opts['USE INDEX'] = array();
$join = array();
- # Full history dumps...
- if( $this->history & WikiExporter::FULL ) {
- $join['revision'] = array('INNER JOIN','page_id=rev_page');
- # Latest revision dumps...
- } elseif( $this->history & WikiExporter::CURRENT ) {
- if( $this->list_authors && $cond != '' ) { // List authors, if so desired
- list($page,$revision) = $this->db->tableNamesN('page','revision');
- $this->do_list_authors( $page, $revision, $cond );
- }
- $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
- # "Stable" revision dumps...
- } elseif( $this->history & WikiExporter::STABLE ) {
- # Default JOIN, to be overridden...
- $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
- # One, and only one hook should set this, and return false
- if( wfRunHooks( 'WikiExporter::dumpStableQuery', array(&$tables,&$opts,&$join) ) ) {
- wfProfileOut( __METHOD__ );
- return new WikiError( __METHOD__." given invalid history dump type." );
- }
- # Time offset/limit for all pages/history...
- } elseif( is_array( $this->history ) ) {
+ if( is_array( $this->history ) ) {
+ # Time offset/limit for all pages/history...
$revJoin = 'page_id=rev_page';
# Set time order
if( $this->history['dir'] == 'asc' ) {
@@ -247,8 +229,27 @@ class WikiExporter {
if( !empty( $this->history['limit'] ) ) {
$opts['LIMIT'] = intval( $this->history['limit'] );
}
- # Uknown history specification parameter?
+ } elseif( $this->history & WikiExporter::FULL ) {
+ # Full history dumps...
+ $join['revision'] = array('INNER JOIN','page_id=rev_page');
+ } elseif( $this->history & WikiExporter::CURRENT ) {
+ # Latest revision dumps...
+ if( $this->list_authors && $cond != '' ) { // List authors, if so desired
+ list($page,$revision) = $this->db->tableNamesN('page','revision');
+ $this->do_list_authors( $page, $revision, $cond );
+ }
+ $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
+ } elseif( $this->history & WikiExporter::STABLE ) {
+ # "Stable" revision dumps...
+ # Default JOIN, to be overridden...
+ $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
+ # One, and only one hook should set this, and return false
+ if( wfRunHooks( 'WikiExporter::dumpStableQuery', array(&$tables,&$opts,&$join) ) ) {
+ wfProfileOut( __METHOD__ );
+ return new WikiError( __METHOD__." given invalid history dump type." );
+ }
} else {
+ # Uknown history specification parameter?
wfProfileOut( __METHOD__ );
return new WikiError( __METHOD__." given invalid history dump type." );
}
@@ -266,6 +267,9 @@ class WikiExporter {
if( $this->buffer == WikiExporter::STREAM ) {
$prev = $this->db->bufferResults( false );
}
+
+ wfRunHooks( 'ModifyExportQuery',
+ array( $this->db, &$tables, &$cond, &$opts, &$join ) );
# Do the query!
$result = $this->db->select( $tables, '*', $cond, __METHOD__, $opts, $join );
@@ -325,7 +329,6 @@ class WikiExporter {
$output .= $this->writer->closePage();
$this->sink->writeClosePage( $output );
}
- $resultset->free();
}
protected function outputLogStream( $resultset ) {
@@ -333,7 +336,6 @@ class WikiExporter {
$output = $this->writer->writeLogItem( $row );
$this->sink->writeLogItem( $row, $output );
}
- $resultset->free();
}
}
@@ -347,7 +349,7 @@ class XmlDumpWriter {
* @return string
*/
function schemaVersion() {
- return "0.3"; // FIXME: upgrade to 0.4 when updated XSD is ready, for the revision deletion bits
+ return "0.4";
}
/**
@@ -412,7 +414,11 @@ class XmlDumpWriter {
global $wgContLang;
$spaces = "<namespaces>\n";
foreach( $wgContLang->getFormattedNamespaces() as $ns => $title ) {
- $spaces .= ' ' . Xml::element( 'namespace', array( 'key' => $ns ), $title ) . "\n";
+ $spaces .= ' ' .
+ Xml::element( 'namespace',
+ array( 'key' => $ns,
+ 'case' => MWNamespace::isCapitalized( $ns ) ? 'first-letter' : 'case-sensitive',
+ ), $title ) . "\n";
}
$spaces .= " </namespaces>";
return $spaces;
@@ -440,10 +446,16 @@ class XmlDumpWriter {
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
$out .= ' ' . Xml::elementClean( 'title', array(), $title->getPrefixedText() ) . "\n";
$out .= ' ' . Xml::element( 'id', array(), strval( $row->page_id ) ) . "\n";
- if( '' != $row->page_restrictions ) {
+ if( $row->page_is_redirect ) {
+ $out .= ' ' . Xml::element( 'redirect', array() ) . "\n";
+ }
+ if( $row->page_restrictions != '' ) {
$out .= ' ' . Xml::element( 'restrictions', array(),
strval( $row->page_restrictions ) ) . "\n";
}
+
+ wfRunHooks( 'XmlDumpWriterOpenPage', array( $this, &$out, $row, $title ) );
+
return $out;
}
@@ -488,6 +500,7 @@ class XmlDumpWriter {
$out .= " " . Xml::elementClean( 'comment', null, strval( $row->rev_comment ) ) . "\n";
}
+ $text = '';
if( $row->rev_deleted & Revision::DELETED_TEXT ) {
$out .= " " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
} elseif( isset( $row->old_text ) ) {
@@ -503,6 +516,8 @@ class XmlDumpWriter {
"" ) . "\n";
}
+ wfRunHooks( 'XmlDumpWriterWriteRevision', array( &$this, &$out, $row, $text ) );
+
$out .= " </revision>\n";
wfProfileOut( $fname );
diff --git a/includes/ExternalStore.php b/includes/ExternalStore.php
index 1e750bb5..6a779079 100644
--- a/includes/ExternalStore.php
+++ b/includes/ExternalStore.php
@@ -13,8 +13,20 @@
* @ingroup ExternalStorage
*/
class ExternalStore {
- /* Fetch data from given URL */
- static function fetchFromURL( $url ) {
+ var $mParams;
+
+ function __construct( $params = array() ) {
+ $this->mParams = $params;
+ }
+
+ /**
+ * Fetch data from given URL
+ *
+ * @param $url String: The URL of the text to get
+ * @param $params Array: associative array of parameters for the ExternalStore object.
+ * @return The text stored or false on error
+ */
+ static function fetchFromURL( $url, $params = array() ) {
global $wgExternalStores;
if( !$wgExternalStores )
@@ -25,16 +37,20 @@ class ExternalStore {
if( $path == '' )
return false;
- $store = self::getStoreObject( $proto );
+ $store = self::getStoreObject( $proto, $params );
if ( $store === false )
return false;
return $store->fetchFromURL( $url );
}
/**
- * Get an external store object of the given type
+ * Get an external store object of the given type, with the given parameters
+ *
+ * @param $proto String: type of external storage, should be a value in $wgExternalStores
+ * @param $params Array: associative array of parameters for the ExternalStore object.
+ * @return ExternalStore subclass or false on error
*/
- static function getStoreObject( $proto ) {
+ static function getStoreObject( $proto, $params = array() ) {
global $wgExternalStores;
if( !$wgExternalStores )
return false;
@@ -48,18 +64,18 @@ class ExternalStore {
return false;
}
- return new $class();
+ return new $class($params);
}
/**
* Store a data item to an external store, identified by a partial URL
* The protocol part is used to identify the class, the rest is passed to the
* class itself as a parameter.
- * Returns the URL of the stored data item, or false on error
+ * @return The URL of the stored data item, or false on error
*/
- static function insert( $url, $data ) {
+ static function insert( $url, $data, $params = array() ) {
list( $proto, $params ) = explode( '://', $url, 2 );
- $store = self::getStoreObject( $proto );
+ $store = self::getStoreObject( $proto, $params );
if ( $store === false ) {
return false;
} else {
@@ -72,10 +88,11 @@ class ExternalStore {
* This function does not need a url param, it builds it by
* itself. It also fails-over to the next possible clusters.
*
- * @param string $data
- * Returns the URL of the stored data item, or false on error
+ * @param $data String
+ * @param $storageParams Array: associative array of parameters for the ExternalStore object.
+ * @return The URL of the stored data item, or false on error
*/
- public static function insertToDefault( $data ) {
+ public static function insertToDefault( $data, $storageParams = array() ) {
global $wgDefaultExternalStore;
$tryStores = (array)$wgDefaultExternalStore;
$error = false;
@@ -84,7 +101,7 @@ class ExternalStore {
$storeUrl = $tryStores[$index];
wfDebug( __METHOD__.": trying $storeUrl\n" );
list( $proto, $params ) = explode( '://', $storeUrl, 2 );
- $store = self::getStoreObject( $proto );
+ $store = self::getStoreObject( $proto, $storageParams );
if ( $store === false ) {
throw new MWException( "Invalid external storage protocol - $storeUrl" );
}
@@ -111,4 +128,9 @@ class ExternalStore {
throw new MWException( "Unable to store text to external storage" );
}
}
+
+ /** Like insertToDefault, but inserts on another wiki */
+ public static function insertToForeignDefault( $data, $wiki ) {
+ return self::insertToDefault( $data, array( 'wiki' => $wiki ) );
+ }
}
diff --git a/includes/ExternalStoreDB.php b/includes/ExternalStoreDB.php
index 9fa7d1b1..769c64da 100644
--- a/includes/ExternalStoreDB.php
+++ b/includes/ExternalStoreDB.php
@@ -26,24 +26,52 @@ $wgExternalBlobCache = array();
*/
class ExternalStoreDB {
- /** @todo Document.*/
+ function __construct( $params = array() ) {
+ $this->mParams = $params;
+ }
+
+ /**
+ * Get a LoadBalancer for the specified cluster
+ *
+ * @param $cluster String: cluster name
+ * @return LoadBalancer object
+ */
function &getLoadBalancer( $cluster ) {
- return wfGetLBFactory()->getExternalLB( $cluster );
+ $wiki = isset($this->mParams['wiki']) ? $this->mParams['wiki'] : false;
+
+ return wfGetLBFactory()->getExternalLB( $cluster, $wiki );
}
- /** @todo Document.*/
+ /**
+ * Get a slave database connection for the specified cluster
+ *
+ * @param $cluster String: cluster name
+ * @return DatabaseBase object
+ */
function &getSlave( $cluster ) {
+ $wiki = isset($this->mParams['wiki']) ? $this->mParams['wiki'] : false;
$lb =& $this->getLoadBalancer( $cluster );
- return $lb->getConnection( DB_SLAVE );
+ return $lb->getConnection( DB_SLAVE, array(), $wiki );
}
- /** @todo Document.*/
+ /**
+ * Get a master database connection for the specified cluster
+ *
+ * @param $cluster String: cluster name
+ * @return DatabaseBase object
+ */
function &getMaster( $cluster ) {
+ $wiki = isset($this->mParams['wiki']) ? $this->mParams['wiki'] : false;
$lb =& $this->getLoadBalancer( $cluster );
- return $lb->getConnection( DB_MASTER );
+ return $lb->getConnection( DB_MASTER, array(), $wiki );
}
- /** @todo Document.*/
+ /**
+ * Get the 'blobs' table name for this database
+ *
+ * @param $db DatabaseBase
+ * @return String: table name ('blobs' by default)
+ */
function getTable( &$db ) {
$table = $db->getLBInfo( 'blobs table' );
if ( is_null( $table ) ) {
@@ -54,7 +82,7 @@ class ExternalStoreDB {
/**
* Fetch data from given URL
- * @param string $url An url of the form DB://cluster/id or DB://cluster/id/itemid for concatened storage.
+ * @param $url String: an url of the form DB://cluster/id or DB://cluster/id/itemid for concatened storage.
*/
function fetchFromURL( $url ) {
$path = explode( '/', $url );
@@ -128,8 +156,11 @@ class ExternalStoreDB {
array( 'blob_id' => $id, 'blob_text' => $data ),
__METHOD__ );
$id = $dbw->insertId();
+ if ( !$id ) {
+ throw new MWException( __METHOD__.': no insert ID' );
+ }
if ( $dbw->getFlag( DBO_TRX ) ) {
- $dbw->immediateCommit();
+ $dbw->commit();
}
return "DB://$cluster/$id";
}
diff --git a/includes/ExternalStoreHttp.php b/includes/ExternalStoreHttp.php
index 6eb33b39..092ff7d8 100644
--- a/includes/ExternalStoreHttp.php
+++ b/includes/ExternalStoreHttp.php
@@ -1,15 +1,21 @@
<?php
+
/**
- * Example class for HTTP accessable external objects
+ * Example class for HTTP accessable external objects.
+ * Only supports reading, not storing.
*
* @ingroup ExternalStorage
*/
class ExternalStoreHttp {
- /* Fetch data from given URL */
- function fetchFromURL($url) {
- ini_set( "allow_url_fopen", true );
- $ret = file_get_contents( $url );
- ini_set( "allow_url_fopen", false );
+
+ /**
+ * Fetch data from given URL
+ *
+ * @param $url String: the URL
+ * @return String: the content at $url
+ */
+ function fetchFromURL( $url ) {
+ $ret = Http::get( $url );
return $ret;
}
diff --git a/includes/ExternalUser.php b/includes/ExternalUser.php
new file mode 100644
index 00000000..65dae617
--- /dev/null
+++ b/includes/ExternalUser.php
@@ -0,0 +1,304 @@
+<?php
+
+# Copyright (C) 2009 Aryeh Gregor
+#
+# 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
+
+/**
+ * @defgroup ExternalUser ExternalUser
+ */
+
+/**
+ * A class intended to supplement, and perhaps eventually replace, AuthPlugin.
+ * See: http://www.mediawiki.org/wiki/ExternalAuth
+ *
+ * The class represents a user whose data is in a foreign database. The
+ * database may have entirely different conventions from MediaWiki, but it's
+ * assumed to at least support the concept of a user id (possibly not an
+ * integer), a user name (possibly not meeting MediaWiki's username
+ * requirements), and a password.
+ *
+ * @ingroup ExternalUser
+ */
+abstract class ExternalUser {
+ protected function __construct() {}
+
+ /**
+ * Wrappers around initFrom*().
+ */
+
+ /**
+ * @param $name string
+ * @return mixed ExternalUser, or false on failure
+ */
+ public static function newFromName( $name ) {
+ global $wgExternalAuthType;
+ if ( is_null( $wgExternalAuthType ) ) {
+ return false;
+ }
+ $obj = new $wgExternalAuthType;
+ if ( !$obj->initFromName( $name ) ) {
+ return false;
+ }
+ return $obj;
+ }
+
+ /**
+ * @param $id string
+ * @return mixed ExternalUser, or false on failure
+ */
+ public static function newFromId( $id ) {
+ global $wgExternalAuthType;
+ if ( is_null( $wgExternalAuthType ) ) {
+ return false;
+ }
+ $obj = new $wgExternalAuthType;
+ if ( !$obj->initFromId( $id ) ) {
+ return false;
+ }
+ return $obj;
+ }
+
+ /**
+ * @return mixed ExternalUser, or false on failure
+ */
+ public static function newFromCookie() {
+ global $wgExternalAuthType;
+ if ( is_null( $wgExternalAuthType ) ) {
+ return false;
+ }
+ $obj = new $wgExternalAuthType;
+ if ( !$obj->initFromCookie() ) {
+ return false;
+ }
+ return $obj;
+ }
+
+ /**
+ * Creates the object corresponding to the given User object, assuming the
+ * user exists on the wiki and is linked to an external account. If either
+ * of these is false, this will return false.
+ *
+ * This is a wrapper around newFromId().
+ *
+ * @param $user User
+ * @return mixed ExternalUser or false
+ */
+ public static function newFromUser( $user ) {
+ global $wgExternalAuthType;
+ if ( is_null( $wgExternalAuthType ) ) {
+ # Short-circuit to avoid database query in common case so no one
+ # kills me
+ return false;
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $id = $dbr->selectField( 'external_user', 'eu_external_id',
+ array( 'eu_local_id' => $user->getId() ), __METHOD__ );
+ if ( $id === false ) {
+ return false;
+ }
+ return self::newFromId( $id );
+ }
+
+ /**
+ * Given a name, which is a string exactly as input by the user in the
+ * login form but with whitespace stripped, initialize this object to be
+ * the corresponding ExternalUser. Return true if successful, otherwise
+ * false.
+ *
+ * @param $name string
+ * @return bool Success?
+ */
+ protected abstract function initFromName( $name );
+
+ /**
+ * Given an id, which was at some previous point in history returned by
+ * getId(), initialize this object to be the corresponding ExternalUser.
+ * Return true if successful, false otherwise.
+ *
+ * @param $id string
+ * @return bool Success?
+ */
+ protected abstract function initFromId( $id );
+
+ /**
+ * Try to magically initialize the user from cookies or similar information
+ * so he or she can be logged in on just viewing the wiki. If this is
+ * impossible to do, just return false.
+ *
+ * TODO: Actually use this.
+ *
+ * @return bool Success?
+ */
+ protected function initFromCookie() {
+ return false;
+ }
+
+ /**
+ * This must return some identifier that stably, uniquely identifies the
+ * user. In a typical web application, this could be an integer
+ * representing the "user id". In other cases, it might be a string. In
+ * any event, the return value should be a string between 1 and 255
+ * characters in length; must uniquely identify the user in the foreign
+ * database; and, if at all possible, should be permanent.
+ *
+ * This will only ever be used to reconstruct this ExternalUser object via
+ * newFromId(). The resulting object in that case should correspond to the
+ * same user, even if details have changed in the interim (e.g., renames or
+ * preference changes).
+ *
+ * @return string
+ */
+ abstract public function getId();
+
+ /**
+ * This must return the name that the user would normally use for login to
+ * the external database. It is subject to no particular restrictions
+ * beyond rudimentary sanity, and in particular may be invalid as a
+ * MediaWiki username. It's used to auto-generate an account name that
+ * *is* valid for MediaWiki, either with or without user input, but
+ * basically is only a hint.
+ *
+ * @return string
+ */
+ abstract public function getName();
+
+ /**
+ * Is the given password valid for the external user? The password is
+ * provided in plaintext.
+ *
+ * @param $password string
+ * @return bool
+ */
+ abstract public function authenticate( $password );
+
+ /**
+ * Retrieve the value corresponding to the given preference key. The most
+ * important values are:
+ *
+ * - emailaddress
+ * - language
+ *
+ * The value must meet MediaWiki's requirements for values of this type,
+ * and will be checked for validity before use. If the preference makes no
+ * sense for the backend, or it makes sense but is unset for this user, or
+ * is unrecognized, return null.
+ *
+ * $pref will never equal 'password', since passwords are usually hashed
+ * and cannot be directly retrieved. authenticate() is used for this
+ * instead.
+ *
+ * TODO: Currently this is only called for 'emailaddress'; generalize! Add
+ * some config option to decide which values are grabbed on user
+ * initialization.
+ *
+ * @param $pref string
+ * @return mixed
+ */
+ public function getPref( $pref ) {
+ return null;
+ }
+
+ /**
+ * Return an array of identifiers for all the foreign groups that this user
+ * has. The identifiers are opaque objects that only need to be
+ * specifiable by the administrator in LocalSettings.php when configuring
+ * $wgAutopromote. They may be, for instance, strings or integers.
+ *
+ * TODO: Support this in $wgAutopromote.
+ *
+ * @return array
+ */
+ public function getGroups() {
+ return array();
+ }
+
+ /**
+ * Given a preference key (e.g., 'emailaddress'), provide an HTML message
+ * telling the user how to change it in the external database. The
+ * administrator has specified that this preference cannot be changed on
+ * the wiki, and may only be changed in the foreign database. If no
+ * message is available, such as for an unrecognized preference, return
+ * false.
+ *
+ * TODO: Use this somewhere.
+ *
+ * @param $pref string
+ * @return mixed String or false
+ */
+ public static function getPrefMessage( $pref ) {
+ return false;
+ }
+
+ /**
+ * Set the given preference key to the given value. Two important
+ * preference keys that you might want to implement are 'password' and
+ * 'emailaddress'. If the set fails, such as because the preference is
+ * unrecognized or because the external database can't be changed right
+ * now, return false. If it succeeds, return true.
+ *
+ * If applicable, you should make sure to validate the new value against
+ * any constraints the external database may have, since MediaWiki may have
+ * more limited constraints (e.g., on password strength).
+ *
+ * TODO: Untested.
+ *
+ * @param $key string
+ * @param $value string
+ * @return bool Success?
+ */
+ public static function setPref( $key, $value ) {
+ return false;
+ }
+
+ /**
+ * Create a link for future reference between this object and the provided
+ * user_id. If the user was already linked, the old link will be
+ * overwritten.
+ *
+ * This is part of the core code and is not overridable by specific
+ * plugins. It's in this class only for convenience.
+ *
+ * @param $id int user_id
+ */
+ public final function linkToLocal( $id ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->replace( 'external_user',
+ array( 'eu_local_id', 'eu_external_id' ),
+ array( 'eu_local_id' => $id,
+ 'eu_external_id' => $this->getId() ),
+ __METHOD__ );
+ }
+
+ /**
+ * Check whether this external user id is already linked with
+ * a local user.
+ * @return Mixed User if the account is linked, Null otherwise.
+ */
+ public final function getLocalUser(){
+ $dbr = wfGetDb( DB_SLAVE );
+ $row = $dbr->selectRow(
+ 'external_user',
+ '*',
+ array( 'eu_external_id' => $this->getId() )
+ );
+ return $row
+ ? User::newFromId( $row->eu_local_id )
+ : null;
+ }
+
+}
diff --git a/includes/FakeTitle.php b/includes/FakeTitle.php
index 10bfa538..21b49bde 100644
--- a/includes/FakeTitle.php
+++ b/includes/FakeTitle.php
@@ -17,17 +17,25 @@ class FakeTitle extends Title {
function getDBkey() { $this->error(); }
function getNamespace() { $this->error(); }
function getNsText() { $this->error(); }
+ function getUserCaseDBKey() { $this->error(); }
function getSubjectNsText() { $this->error(); }
+ function getTalkNsText() { $this->error(); }
+ function canTalk() { $this->error(); }
function getInterwiki() { $this->error(); }
function getFragment() { $this->error(); }
+ function getFragmentForURL() { $this->error(); }
function getDefaultNamespace() { $this->error(); }
function getIndexTitle() { $this->error(); }
function getPrefixedDBkey() { $this->error(); }
function getPrefixedText() { $this->error(); }
function getFullText() { $this->error(); }
+ function getBaseText() { $this->error(); }
+ function getSubpageText() { $this->error(); }
+ function getSubpageUrlForm() { $this->error(); }
function getPrefixedURL() { $this->error(); }
function getFullURL( $query = '', $variant = false ) {$this->error(); }
function getLocalURL( $query = '', $variant = false ) { $this->error(); }
+ function getLinkUrl( $query = array(), $variant = false ) { $this->error(); }
function escapeLocalURL( $query = '' ) { $this->error(); }
function escapeFullURL( $query = '' ) { $this->error(); }
function getInternalURL( $query = '', $variant = false ) { $this->error(); }
@@ -36,49 +44,88 @@ class FakeTitle extends Title {
function isExternal() { $this->error(); }
function isSemiProtected( $action = 'edit' ) { $this->error(); }
function isProtected( $action = '' ) { $this->error(); }
+ function isConversionTable() { $this->error(); }
function userIsWatching() { $this->error(); }
+ function quickUserCan( $action ) { $this->error(); }
+ function isNamespaceProtected() { $this->error(); }
function userCan( $action, $doExpensiveQueries = true ) { $this->error(); }
- function userCanCreate() { $this->error(); }
- function userCanEdit( $doExpensiveQueries = true ) { $this->error(); }
- function userCanMove() { $this->error(); }
+ function getUserPermissionsErrors( $action, $user, $doExpensiveQueries = true, $ignoreErrors = array() ) { $this->error(); }
+ function updateTitleProtection( $create_perm, $reason, $expiry ) { $this->error(); }
+ function deleteTitleProtection() { $this->error(); }
function isMovable() { $this->error(); }
function userCanRead() { $this->error(); }
function isTalkPage() { $this->error(); }
+ function isSubpage() { $this->error(); }
+ function hasSubpages() { $this->error(); }
+ function getSubpages( $limit = -1 ) { $this->error(); }
function isCssJsSubpage() { $this->error(); }
+ function isCssOrJsPage() { $this->error(); }
function isValidCssJsSubpage() { $this->error(); }
function getSkinFromCssJsSubpage() { $this->error(); }
function isCssSubpage() { $this->error(); }
function isJsSubpage() { $this->error(); }
function userCanEditCssJsSubpage() { $this->error(); }
- function loadRestrictions( $res ) { $this->error(); }
- function getRestrictions($action) { $this->error(); }
+ function userCanEditCssSubpage() { $this->error(); }
+ function userCanEditJsSubpage() { $this->error(); }
+ function isCascadeProtected() { $this->error(); }
+ function getCascadeProtectionSources( $get_pages = true ) { $this->error(); }
+ function areRestrictionsCascading() { $this->error(); }
+ function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions = null ) { $this->error(); }
+ function loadRestrictions( $res = null ) { $this->error(); }
+ function getRestrictions( $action ) { $this->error(); }
+ function getRestrictionExpiry( $action ) { $this->error(); }
function isDeleted() { $this->error(); }
+ function isDeletedQuick() { $this->error(); }
function getArticleID( $flags = 0 ) { $this->error(); }
- function getLatestRevID() { $this->error(); }
+ function isRedirect( $flags = 0 ) { $this->error(); }
+ function getLength( $flags = 0 ) { $this->error(); }
+ function getLatestRevID( $flags = 0 ) { $this->error(); }
function resetArticleID( $newid ) { $this->error(); }
function invalidateCache() { $this->error(); }
function getTalkPage() { $this->error(); }
+ function setFragment( $fragment ) { $this->error(); }
function getSubjectPage() { $this->error(); }
- function getLinksTo() { $this->error(); }
- function getTemplateLinksTo() { $this->error(); }
+ function getLinksTo( $options = array(), $table = 'pagelinks', $prefix = 'pl' ) { $this->error(); }
+ function getTemplateLinksTo( $options = array() ) { $this->error(); }
function getBrokenLinksFrom() { $this->error(); }
function getSquidURLs() { $this->error(); }
- function moveNoAuth() { $this->error(); }
- function isValidMoveOperation() { $this->error(); }
- function moveTo() { $this->error(); }
- function moveOverExistingRedirect() { $this->error(); }
- function moveToNewTitle() { $this->error(); }
- function isValidMoveTarget() { $this->error(); }
+ function purgeSquid() { $this->error(); }
+ function moveNoAuth( &$nt ) { $this->error(); }
+ function isValidMoveOperation( &$nt, $auth = true, $reason = '' ) { $this->error(); }
+ function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true ) { $this->error(); }
+ function moveOverExistingRedirect( &$nt, $reason = '', $createRedirect = true ) { $this->error(); }
+ function moveToNewTitle( &$nt, $reason = '', $createRedirect = true ) { $this->error(); }
+ function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true ) { $this->error(); }
+ function isSingleRevRedirect() { $this->error(); }
+ function isValidMoveTarget( $nt ) { $this->error(); }
+ function isWatchable() { $this->error(); }
function getParentCategories() { $this->error(); }
- function getParentCategoryTree() { $this->error(); }
+ function getParentCategoryTree( $children = array() ) { $this->error(); }
function pageCond() { $this->error(); }
- function getPreviousRevisionID() { $this->error(); }
- function getNextRevisionID() { $this->error(); }
- function equals() { $this->error(); }
+ function getPreviousRevisionID( $revId, $flags=0 ) { $this->error(); }
+ function getNextRevisionID( $revId, $flags=0 ) { $this->error(); }
+ function getFirstRevision( $flags=0 ) { $this->error(); }
+ function isNewPage() { $this->error(); }
+ function getEarliestRevTime() { $this->error(); }
+ function countRevisionsBetween( $old, $new ) { $this->error(); }
+ function equals( Title $title ) { $this->error(); }
function exists() { $this->error(); }
function isAlwaysKnown() { $this->error(); }
function isKnown() { $this->error(); }
+ function canExist() { $this->error(); }
function touchLinks() { $this->error(); }
+ function getTouched( $db = null ) { $this->error(); }
+ function getNotificationTimestamp( $user = null ) { $this->error(); }
function trackbackURL() { $this->error(); }
function trackbackRDF() { $this->error(); }
+ function getNamespaceKey( $prepend = 'nstab-' ) { $this->error(); }
+ function isSpecialPage() { $this->error(); }
+ function isSpecial( $name ) { $this->error(); }
+ function fixSpecialName() { $this->error(); }
+ function isContentPage() { $this->error(); }
+ function getRedirectsHere( $ns = null ) { $this->error(); }
+ function isValidRedirectTarget() { $this->error(); }
+ function getBacklinkCache() { $this->error(); }
+ function canUseNoindex() { $this->error(); }
+ function getRestrictionTypes() { $this->error(); }
}
diff --git a/includes/Feed.php b/includes/Feed.php
index fe6d8feb..782b6428 100644
--- a/includes/Feed.php
+++ b/includes/Feed.php
@@ -19,13 +19,19 @@
# http://www.gnu.org/copyleft/gpl.html
/**
+ * @defgroup Feed Feed
+ *
* Basic support for outputting syndication feeds in RSS, other formats.
* Contain a feed class as well as classes to build rss / atom ... feeds
* Available feeds are defined in Defines.php
+ *
+ * @file
*/
/**
* A base class for basic support for outputting syndication feeds in RSS and other formats.
+ *
+ * @ingroup Feed
*/
class FeedItem {
/**#@+
@@ -37,56 +43,134 @@ class FeedItem {
var $Url = '';
var $Date = '';
var $Author = '';
+ var $UniqueId = '';
+ var $RSSIsPermalink;
/**#@-*/
- /**#@+
- * @todo document
- * @param $Url URL uniquely designating the item.
+ /**
+ * Constructor
+ *
+ * @param $Title String: Item's title
+ * @param $Description String
+ * @param $Url String: URL uniquely designating the item.
+ * @param $Date String: Item's date
+ * @param $Author String: Author's user name
+ * @param $Comments String
*/
function __construct( $Title, $Description, $Url, $Date = '', $Author = '', $Comments = '' ) {
$this->Title = $Title;
$this->Description = $Description;
$this->Url = $Url;
+ $this->UniqueId = $Url;
+ $this->RSSIsPermalink = false;
$this->Date = $Date;
$this->Author = $Author;
$this->Comments = $Comments;
}
+ /**
+ * Encode $string so that it can be safely embedded in a XML document
+ *
+ * @param $string String: string to encode
+ * @return String
+ */
public function xmlEncode( $string ) {
$string = str_replace( "\r\n", "\n", $string );
$string = preg_replace( '/[\x00-\x08\x0b\x0c\x0e-\x1f]/', '', $string );
return htmlspecialchars( $string );
}
+ /**
+ * Get the unique id of this item
+ *
+ * @return String
+ */
+ public function getUniqueId() {
+ if ( $this->UniqueId ) {
+ return $this->xmlEncode( $this->UniqueId );
+ }
+ }
+
+ /**
+ * set the unique id of an item
+ *
+ * @param $uniqueId String: unique id for the item
+ * @param $RSSisPermalink Boolean: set to true if the guid (unique id) is a permalink (RSS feeds only)
+ */
+ public function setUniqueId($uniqueId, $RSSisPermalink = False) {
+ $this->UniqueId = $uniqueId;
+ $this->RSSIsPermalink = $isPermalink;
+ }
+
+ /**
+ * Get the title of this item; already xml-encoded
+ *
+ * @return String
+ */
public function getTitle() {
return $this->xmlEncode( $this->Title );
}
+ /**
+ * Get the URL of this item; already xml-encoded
+ *
+ * @return String
+ */
public function getUrl() {
return $this->xmlEncode( $this->Url );
}
+ /**
+ * Get the description of this item; already xml-encoded
+ *
+ * @return String
+ */
public function getDescription() {
return $this->xmlEncode( $this->Description );
}
+ /**
+ * Get the language of this item
+ *
+ * @return String
+ */
public function getLanguage() {
global $wgContLanguageCode;
return $wgContLanguageCode;
}
+ /**
+ * Get the title of this item
+ *
+ * @return String
+ */
public function getDate() {
return $this->Date;
}
+
+ /**
+ * Get the author of this item; already xml-encoded
+ *
+ * @return String
+ */
public function getAuthor() {
return $this->xmlEncode( $this->Author );
}
+
+ /**
+ * Get the comment of this item; already xml-encoded
+ *
+ * @return String
+ */
public function getComments() {
return $this->xmlEncode( $this->Comments );
}
-
+
/**
* Quickie hack... strip out wikilinks to more legible form from the comment.
+ *
+ * @param $text String: wikitext
+ * @return String
*/
public static function stripComment( $text ) {
return preg_replace( '/\[\[([^]]*\|)?([^]]+)\]\]/', '\2', $text );
@@ -96,6 +180,7 @@ class FeedItem {
/**
* @todo document (needs one-sentence top-level class description).
+ * @ingroup Feed
*/
class ChannelFeed extends FeedItem {
/**#@+
@@ -133,10 +218,8 @@ class ChannelFeed extends FeedItem {
*
* This should be called from the outHeader() method,
* but can also be called separately.
- *
- * @public
*/
- function httpHeaders() {
+ public function httpHeaders() {
global $wgOut;
# We take over from $wgOut, excepting its cache header info
@@ -178,13 +261,16 @@ class ChannelFeed extends FeedItem {
/**
* Generate a RSS feed
+ *
+ * @ingroup Feed
*/
class RSSFeed extends ChannelFeed {
/**
* Format a date given a timestamp
- * @param integer $ts Timestamp
- * @return string Date string
+ *
+ * @param $ts Integer: timestamp
+ * @return String: date string
*/
function formatTime( $ts ) {
return gmdate( 'D, d M Y H:i:s \G\M\T', wfTimestamp( TS_UNIX, $ts ) );
@@ -210,13 +296,14 @@ class RSSFeed extends ChannelFeed {
/**
* Output an RSS 2.0 item
- * @param FeedItem item to be output
+ * @param $item FeedItem: item to be output
*/
function outItem( $item ) {
?>
<item>
<title><?php print $item->getTitle() ?></title>
<link><?php print $item->getUrl() ?></link>
+ <guid<?php if( $item->RSSIsPermalink ) print ' isPermaLink="true"' ?>><?php print $item->getUniqueId() ?></guid>
<description><?php print $item->getDescription() ?></description>
<?php if( $item->getDate() ) { ?><pubDate><?php print $this->formatTime( $item->getDate() ) ?></pubDate><?php } ?>
<?php if( $item->getAuthor() ) { ?><dc:creator><?php print $item->getAuthor() ?></dc:creator><?php }?>
@@ -237,6 +324,8 @@ class RSSFeed extends ChannelFeed {
/**
* Generate an Atom feed
+ *
+ * @ingroup Feed
*/
class AtomFeed extends ChannelFeed {
/**
@@ -297,7 +386,7 @@ class AtomFeed extends ChannelFeed {
global $wgMimeType;
?>
<entry>
- <id><?php print $item->getUrl() ?></id>
+ <id><?php print $item->getUniqueId() ?></id>
<title><?php print $item->getTitle() ?></title>
<link rel="alternate" type="<?php print $wgMimeType ?>" href="<?php print $item->getUrl() ?>"/>
<?php if( $item->getDate() ) { ?>
diff --git a/includes/FeedUtils.php b/includes/FeedUtils.php
index 38bff363..7e841f32 100644
--- a/includes/FeedUtils.php
+++ b/includes/FeedUtils.php
@@ -1,8 +1,20 @@
<?php
-// TODO: document
+/**
+ * Helper functions for feeds
+ *
+ * @ingroup Feed
+ */
class FeedUtils {
+ /**
+ * Check whether feed's cache should be cleared; for changes feeds
+ * If the feed should be purged; $timekey and $key will be removed from
+ * $messageMemc
+ *
+ * @param $timekey String: cache key of the timestamp of the last item
+ * @param $key String: cache key of feed's content
+ */
public static function checkPurge( $timekey, $key ) {
global $wgRequest, $wgUser, $messageMemc;
$purge = $wgRequest->getVal( 'action' ) === 'purge';
@@ -12,8 +24,14 @@ class FeedUtils {
}
}
+ /**
+ * Check whether feeds can be used and that $type is a valid feed type
+ *
+ * @param $type String: feed type, as requested by the user
+ * @return Boolean
+ */
public static function checkFeedOutput( $type ) {
- global $wgFeed, $wgOut, $wgFeedClasses;
+ global $wgFeed, $wgFeedClasses;
if ( !$wgFeed ) {
global $wgOut;
@@ -30,8 +48,11 @@ class FeedUtils {
}
/**
- * Format a diff for the newsfeed
- */
+ * Format a diff for the newsfeed
+ *
+ * @param $row Object: row from the recentchanges table
+ * @return String
+ */
public static function formatDiff( $row ) {
global $wgUser;
@@ -53,9 +74,20 @@ class FeedUtils {
$actiontext );
}
+ /**
+ * Really format a diff for the newsfeed
+ *
+ * @param $title Title object
+ * @param $oldid Integer: old revision's id
+ * @param $newid Integer: new revision's id
+ * @param $timestamp Integer: new revision's timestamp
+ * @param $comment String: new revision's comment
+ * @param $actiontext String: text of the action; in case of log event
+ * @return String
+ */
public static function formatDiffRow( $title, $oldid, $newid, $timestamp, $comment, $actiontext='' ) {
global $wgFeedDiffCutoff, $wgContLang, $wgUser;
- wfProfileIn( __FUNCTION__ );
+ wfProfileIn( __METHOD__ );
$skin = $wgUser->getSkin();
# log enties
@@ -71,12 +103,14 @@ class FeedUtils {
$anon = new User();
$accErrors = $title->getUserPermissionsErrors( 'read', $anon, true );
- if( $title->getNamespace() >= 0 && !$accErrors ) {
+ if( $title->getNamespace() >= 0 && !$accErrors && $newid ) {
if( $oldid ) {
- wfProfileIn( __FUNCTION__."-dodiff" );
+ wfProfileIn( __METHOD__."-dodiff" );
#$diffText = $de->getDiff( wfMsg( 'revisionasof',
- # $wgContLang->timeanddate( $timestamp ) ),
+ # $wgContLang->timeanddate( $timestamp ),
+ # $wgContLang->date( $timestamp ),
+ # $wgContLang->time( $timestamp ) ),
# wfMsg( 'currentrev' ) );
// Don't bother generating the diff if we won't be able to show it
@@ -85,7 +119,9 @@ class FeedUtils {
$diffText = $de->getDiff(
wfMsg( 'previousrevision' ), // hack
wfMsg( 'revisionasof',
- $wgContLang->timeanddate( $timestamp ) ) );
+ $wgContLang->timeanddate( $timestamp ),
+ $wgContLang->date( $timestamp ),
+ $wgContLang->time( $timestamp ) ) );
}
if ( ( strlen( $diffText ) > $wgFeedDiffCutoff ) || ( $wgFeedDiffCutoff <= 0 ) ) {
@@ -106,7 +142,7 @@ class FeedUtils {
$diffText = UtfNormal::cleanUp( $diffText );
$diffText = self::applyDiffStyle( $diffText );
}
- wfProfileOut( __FUNCTION__."-dodiff" );
+ wfProfileOut( __METHOD__."-dodiff" );
} else {
$rev = Revision::newFromId( $newid );
if( is_null( $rev ) ) {
@@ -120,19 +156,19 @@ class FeedUtils {
$completeText .= $diffText;
}
- wfProfileOut( __FUNCTION__ );
+ wfProfileOut( __METHOD__ );
return $completeText;
}
/**
- * Hacky application of diff styles for the feeds.
- * Might be 'cleaner' to use DOM or XSLT or something,
- * but *gack* it's a pain in the ass.
- *
- * @param $text String:
- * @return string
- * @private
- */
+ * Hacky application of diff styles for the feeds.
+ * Might be 'cleaner' to use DOM or XSLT or something,
+ * but *gack* it's a pain in the ass.
+ *
+ * @param $text String: diff's HTML output
+ * @return String: modified HTML
+ * @private
+ */
public static function applyDiffStyle( $text ) {
$styles = array(
'diff' => 'background-color: white; color:black;',
@@ -152,4 +188,4 @@ class FeedUtils {
return $text;
}
-} \ No newline at end of file
+}
diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php
index 5177d35f..dad19524 100644
--- a/includes/FileDeleteForm.php
+++ b/includes/FileDeleteForm.php
@@ -17,7 +17,7 @@ class FileDeleteForm {
/**
* Constructor
*
- * @param File $file File we're deleting
+ * @param $file File object we're deleting
*/
public function __construct( $file ) {
$this->title = $file->getTitle();
@@ -90,7 +90,17 @@ class FileDeleteForm {
$this->showLogEntries();
}
+ /**
+ * Really delete the file
+ *
+ * @param $title Title object
+ * @param $file File object
+ * @param $oldimage String: archive name
+ * @param $reason String: reason of the deletion
+ * @param $suppress Boolean: whether to mark all deleted versions as restricted
+ */
public static function doDelete( &$title, &$file, &$oldimage, $reason, $suppress ) {
+ global $wgUser;
$article = null;
if( $oldimage ) {
$status = $file->deleteOld( $oldimage, $reason, $suppress );
@@ -99,7 +109,7 @@ class FileDeleteForm {
$log = new LogPage( 'delete' );
$logComment = wfMsgForContent( 'deletedrevision', $oldimage );
if( trim( $reason ) != '' )
- $logComment .= ": {$reason}";
+ $logComment .= wfMsgForContent( 'colon-separator' ) . $reason;
$log->addEntry( 'delete', $title, $logComment );
}
} else {
@@ -112,7 +122,7 @@ class FileDeleteForm {
if( wfRunHooks('ArticleDelete', array(&$article, &$wgUser, &$reason, &$error)) ) {
if( $article->doDeleteArticle( $reason, $suppress, $id ) ) {
global $wgRequest;
- if( $wgRequest->getCheck( 'wpWatch' ) ) {
+ if( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
$article->doWatch();
} elseif( $title->userIsWatching() ) {
$article->doUnwatch();
@@ -137,10 +147,10 @@ class FileDeleteForm {
if( $wgUser->isAllowed( 'suppressrevision' ) ) {
$suppress = "<tr id=\"wpDeleteSuppressRow\">
<td></td>
- <td class='mw-input'>" .
+ <td class='mw-input'><strong>" .
Xml::checkLabel( wfMsg( 'revdelete-suppress' ),
'wpSuppress', 'wpSuppress', false, array( 'tabindex' => '3' ) ) .
- "</td>
+ "</strong></td>
</tr>";
} else {
$suppress = '';
@@ -173,14 +183,18 @@ class FileDeleteForm {
array( 'type' => 'text', 'maxlength' => '255', 'tabindex' => '2', 'id' => 'wpReason' ) ) .
"</td>
</tr>
- {$suppress}
+ {$suppress}";
+ if( $wgUser->isLoggedIn() ) {
+ $form .= "
<tr>
<td></td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'watchthis' ),
'wpWatch', 'wpWatch', $checkWatch, array( 'tabindex' => '3' ) ) .
"</td>
- </tr>
+ </tr>";
+ }
+ $form .= "
<tr>
<td></td>
<td class='mw-submit'>" .
@@ -194,7 +208,13 @@ class FileDeleteForm {
if ( $wgUser->isAllowed( 'editinterface' ) ) {
$skin = $wgUser->getSkin();
- $link = $skin->makeLink ( 'MediaWiki:Filedelete-reason-dropdown', wfMsgHtml( 'filedelete-edit-reasonlist' ) );
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Filedelete-reason-dropdown' );
+ $link = $skin->link(
+ $title,
+ wfMsgHtml( 'filedelete-edit-reasonlist' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
$form .= '<p class="mw-filedelete-editreasons">' . $link . '</p>';
}
@@ -215,8 +235,8 @@ class FileDeleteForm {
* showing an appropriate message depending upon whether
* it's a current file or an old version
*
- * @param string $message Message base
- * @return string
+ * @param $message String: message base
+ * @return String
*/
private function prepareMessage( $message ) {
global $wgLang;
@@ -245,7 +265,16 @@ class FileDeleteForm {
global $wgOut, $wgUser;
$wgOut->setPageTitle( wfMsg( 'filedelete', $this->title->getText() ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setSubtitle( wfMsg( 'filedelete-backlink', $wgUser->getSkin()->makeKnownLinkObj( $this->title ) ) );
+ $wgOut->setSubtitle( wfMsg(
+ 'filedelete-backlink',
+ $wgUser->getSkin()->link(
+ $this->title,
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ )
+ ) );
}
/**
@@ -279,10 +308,12 @@ class FileDeleteForm {
*/
private function getAction() {
$q = array();
- $q[] = 'action=delete';
+ $q['action'] = 'delete';
+
if( $this->oldimage )
- $q[] = 'oldimage=' . urlencode( $this->oldimage );
- return $this->title->getLocalUrl( implode( '&', $q ) );
+ $q['oldimage'] = $this->oldimage;
+
+ return $this->title->getLocalUrl( $q );
}
/**
@@ -293,5 +324,4 @@ class FileDeleteForm {
private function getTimestamp() {
return $this->oldfile->getTimestamp();
}
-
}
diff --git a/includes/FileRevertForm.php b/includes/FileRevertForm.php
index c7c73246..eb16693a 100644
--- a/includes/FileRevertForm.php
+++ b/includes/FileRevertForm.php
@@ -17,7 +17,7 @@ class FileRevertForm {
/**
* Constructor
*
- * @param File $file File we're reverting
+ * @param $file File we're reverting
*/
public function __construct( $file ) {
$this->title = $file->getTitle();
@@ -114,7 +114,16 @@ class FileRevertForm {
global $wgOut, $wgUser;
$wgOut->setPageTitle( wfMsg( 'filerevert', $this->title->getText() ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setSubtitle( wfMsg( 'filerevert-backlink', $wgUser->getSkin()->makeKnownLinkObj( $this->title ) ) );
+ $wgOut->setSubtitle( wfMsg(
+ 'filerevert-backlink',
+ $wgUser->getSkin()->link(
+ $this->title,
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ )
+ ) );
}
/**
diff --git a/includes/FileStore.php b/includes/FileStore.php
deleted file mode 100644
index 278777b4..00000000
--- a/includes/FileStore.php
+++ /dev/null
@@ -1,360 +0,0 @@
-<?php
-
-/**
- * @todo document (needs one-sentence top-level class description).
- */
-class FileStore {
- const DELETE_ORIGINAL = 1;
-
- /**
- * Fetch the FileStore object for a given storage group
- */
- static function get( $group ) {
- global $wgFileStore;
-
- if( isset( $wgFileStore[$group] ) ) {
- $info = $wgFileStore[$group];
- return new FileStore( $group,
- $info['directory'],
- $info['url'],
- intval( $info['hash'] ) );
- } else {
- return null;
- }
- }
-
- private function __construct( $group, $directory, $path, $hash ) {
- $this->mGroup = $group;
- $this->mDirectory = $directory;
- $this->mPath = $path;
- $this->mHashLevel = $hash;
- }
-
- /**
- * Acquire a lock; use when performing write operations on a store.
- * This is attached to your master database connection, so if you
- * suffer an uncaught error the lock will be released when the
- * connection is closed.
- * @see Database::lock()
- */
- static function lock() {
- $dbw = wfGetDB( DB_MASTER );
- $lockname = $dbw->addQuotes( FileStore::lockName() );
- return $dbw->lock( $lockname, __METHOD__ );
- }
-
- /**
- * Release the global file store lock.
- * @see Database::unlock()
- */
- static function unlock() {
- $dbw = wfGetDB( DB_MASTER );
- $lockname = $dbw->addQuotes( FileStore::lockName() );
- return $dbw->unlock( $lockname, __METHOD__ );
- }
-
- private static function lockName() {
- return 'MediaWiki.' . wfWikiID() . '.FileStore';
- }
-
- /**
- * Copy a file into the file store from elsewhere in the filesystem.
- * Should be protected by FileStore::lock() to avoid race conditions.
- *
- * @param $key storage key string
- * @param $flags
- * DELETE_ORIGINAL - remove the source file on transaction commit.
- *
- * @throws FSException if copy can't be completed
- * @return FSTransaction
- */
- function insert( $key, $sourcePath, $flags=0 ) {
- $destPath = $this->filePath( $key );
- return $this->copyFile( $sourcePath, $destPath, $flags );
- }
-
- /**
- * Copy a file from the file store to elsewhere in the filesystem.
- * Should be protected by FileStore::lock() to avoid race conditions.
- *
- * @param $key storage key string
- * @param $flags
- * DELETE_ORIGINAL - remove the source file on transaction commit.
- *
- * @throws FSException if copy can't be completed
- * @return FSTransaction on success
- */
- function export( $key, $destPath, $flags=0 ) {
- $sourcePath = $this->filePath( $key );
- return $this->copyFile( $sourcePath, $destPath, $flags );
- }
-
- private function copyFile( $sourcePath, $destPath, $flags=0 ) {
- if( !file_exists( $sourcePath ) ) {
- // Abort! Abort!
- throw new FSException( "missing source file '$sourcePath'" );
- }
-
- $transaction = new FSTransaction();
-
- if( $flags & self::DELETE_ORIGINAL ) {
- $transaction->addCommit( FSTransaction::DELETE_FILE, $sourcePath );
- }
-
- if( file_exists( $destPath ) ) {
- // An identical file is already present; no need to copy.
- } else {
- if( !file_exists( dirname( $destPath ) ) ) {
- wfSuppressWarnings();
- $ok = wfMkdirParents( dirname( $destPath ) );
- wfRestoreWarnings();
-
- if( !$ok ) {
- throw new FSException(
- "failed to create directory for '$destPath'" );
- }
- }
-
- wfSuppressWarnings();
- $ok = copy( $sourcePath, $destPath );
- wfRestoreWarnings();
-
- if( $ok ) {
- wfDebug( __METHOD__." copied '$sourcePath' to '$destPath'\n" );
- $transaction->addRollback( FSTransaction::DELETE_FILE, $destPath );
- } else {
- throw new FSException(
- __METHOD__." failed to copy '$sourcePath' to '$destPath'" );
- }
- }
-
- return $transaction;
- }
-
- /**
- * Delete a file from the file store.
- * Caller's responsibility to make sure it's not being used by another row.
- *
- * File is not actually removed until transaction commit.
- * Should be protected by FileStore::lock() to avoid race conditions.
- *
- * @param $key storage key string
- * @throws FSException if file can't be deleted
- * @return FSTransaction
- */
- function delete( $key ) {
- $destPath = $this->filePath( $key );
- if( false === $destPath ) {
- throw new FSException( "file store does not contain file '$key'" );
- } else {
- return FileStore::deleteFile( $destPath );
- }
- }
-
- /**
- * Delete a non-managed file on a transactional basis.
- *
- * File is not actually removed until transaction commit.
- * Should be protected by FileStore::lock() to avoid race conditions.
- *
- * @param $path file to remove
- * @throws FSException if file can't be deleted
- * @return FSTransaction
- *
- * @todo Might be worth preliminary permissions check
- */
- static function deleteFile( $path ) {
- if( file_exists( $path ) ) {
- $transaction = new FSTransaction();
- $transaction->addCommit( FSTransaction::DELETE_FILE, $path );
- return $transaction;
- } else {
- throw new FSException( "cannot delete missing file '$path'" );
- }
- }
-
- /**
- * Stream a contained file directly to HTTP output.
- * Will throw a 404 if file is missing; 400 if invalid key.
- * @return true on success, false on failure
- */
- function stream( $key ) {
- $path = $this->filePath( $key );
- if( $path === false ) {
- wfHttpError( 400, "Bad request", "Invalid or badly-formed filename." );
- return false;
- }
-
- if( file_exists( $path ) ) {
- // Set the filename for more convenient save behavior from browsers
- // FIXME: Is this safe?
- header( 'Content-Disposition: inline; filename="' . $key . '"' );
-
- require_once 'StreamFile.php';
- wfStreamFile( $path );
- } else {
- return wfHttpError( 404, "Not found",
- "The requested resource does not exist." );
- }
- }
-
- /**
- * Confirm that the given file key is valid.
- * Note that a valid key may refer to a file that does not exist.
- *
- * Key should consist of a 31-digit base-36 SHA-1 hash and
- * an optional alphanumeric extension, all lowercase.
- * The whole must not exceed 64 characters.
- *
- * @param $key
- * @return boolean
- */
- static function validKey( $key ) {
- return preg_match( '/^[0-9a-z]{31,32}(\.[0-9a-z]{1,31})?$/', $key );
- }
-
-
- /**
- * Calculate file storage key from a file on disk.
- * You must pass an extension to it, as some files may be calculated
- * out of a temporary file etc.
- *
- * @param $path to file
- * @param $extension
- * @return string or false if could not open file or bad extension
- */
- static function calculateKey( $path, $extension ) {
- wfSuppressWarnings();
- $hash = sha1_file( $path );
- wfRestoreWarnings();
- if( $hash === false ) {
- wfDebug( __METHOD__.": couldn't hash file '$path'\n" );
- return false;
- }
-
- $base36 = wfBaseConvert( $hash, 16, 36, 31 );
- if( $extension == '' ) {
- $key = $base36;
- } else {
- $key = $base36 . '.' . $extension;
- }
-
- // Sanity check
- if( self::validKey( $key ) ) {
- return $key;
- } else {
- wfDebug( __METHOD__.": generated bad key '$key'\n" );
- return false;
- }
- }
-
- /**
- * Return filesystem path to the given file.
- * Note that the file may or may not exist.
- * @return string or false if an invalid key
- */
- function filePath( $key ) {
- if( self::validKey( $key ) ) {
- return $this->mDirectory . DIRECTORY_SEPARATOR .
- $this->hashPath( $key, DIRECTORY_SEPARATOR );
- } else {
- return false;
- }
- }
-
- /**
- * Return URL path to the given file, if the store is public.
- * @return string or false if not public
- */
- function urlPath( $key ) {
- if( $this->mUrl && self::validKey( $key ) ) {
- return $this->mUrl . '/' . $this->hashPath( $key, '/' );
- } else {
- return false;
- }
- }
-
- private function hashPath( $key, $separator ) {
- $parts = array();
- for( $i = 0; $i < $this->mHashLevel; $i++ ) {
- $parts[] = $key{$i};
- }
- $parts[] = $key;
- return implode( $separator, $parts );
- }
-}
-
-/**
- * Wrapper for file store transaction stuff.
- *
- * FileStore methods may return one of these for undoable operations;
- * you can then call its rollback() or commit() methods to perform
- * final cleanup if dependent database work fails or succeeds.
- */
-class FSTransaction {
- const DELETE_FILE = 1;
-
- /**
- * Combine more items into a fancier transaction
- */
- function add( FSTransaction $transaction ) {
- $this->mOnCommit = array_merge(
- $this->mOnCommit, $transaction->mOnCommit );
- $this->mOnRollback = array_merge(
- $this->mOnRollback, $transaction->mOnRollback );
- }
-
- /**
- * Perform final actions for success.
- * @return true if actions applied ok, false if errors
- */
- function commit() {
- return $this->apply( $this->mOnCommit );
- }
-
- /**
- * Perform final actions for failure.
- * @return true if actions applied ok, false if errors
- */
- function rollback() {
- return $this->apply( $this->mOnRollback );
- }
-
- // --- Private and friend functions below...
-
- function __construct() {
- $this->mOnCommit = array();
- $this->mOnRollback = array();
- }
-
- function addCommit( $action, $path ) {
- $this->mOnCommit[] = array( $action, $path );
- }
-
- function addRollback( $action, $path ) {
- $this->mOnRollback[] = array( $action, $path );
- }
-
- private function apply( $actions ) {
- $result = true;
- foreach( $actions as $item ) {
- list( $action, $path ) = $item;
- if( $action == self::DELETE_FILE ) {
- wfSuppressWarnings();
- $ok = unlink( $path );
- wfRestoreWarnings();
- if( $ok )
- wfDebug( __METHOD__.": deleting file '$path'\n" );
- else
- wfDebug( __METHOD__.": failed to delete file '$path'\n" );
- $result = $result && $ok;
- }
- }
- return $result;
- }
-}
-
-/**
- * @ingroup Exception
- */
-class FSException extends MWException { }
diff --git a/includes/ForkController.php b/includes/ForkController.php
index 09e1788b..7b889228 100644
--- a/includes/ForkController.php
+++ b/includes/ForkController.php
@@ -2,10 +2,12 @@
/**
* Class for managing forking command line scripts.
- * Currently just does forking and process control, but it could easily be extended
+ * Currently just does forking and process control, but it could easily be extended
* to provide IPC and job dispatch.
*
* This class requires the posix and pcntl extensions.
+ *
+ * @ingroup Maintenance
*/
class ForkController {
var $children = array();
@@ -39,13 +41,13 @@ class ForkController {
}
/**
- * Start the child processes.
+ * Start the child processes.
*
- * This should only be called from the command line. It should be called
+ * This should only be called from the command line. It should be called
* as early as possible during execution.
*
- * This will return 'child' in the child processes. In the parent process,
- * it will run until all the child processes exit or a TERM signal is
+ * This will return 'child' in the child processes. In the parent process,
+ * it will run until all the child processes exit or a TERM signal is
* received. It will then return 'done'.
*/
public function start() {
@@ -73,16 +75,18 @@ class ForkController {
// Restart if the signal was abnormal termination
// Don't restart if it was deliberately killed
$signal = pcntl_wtermsig( $status );
- if ( in_array( $signal, self::$restartableSignals ) ) {
+ if ( in_array( $signal, self::$restartableSignals ) ) {
echo "Worker exited with signal $signal, restarting\n";
$this->procsToStart++;
}
} elseif ( pcntl_wifexited( $status ) ) {
// Restart on non-zero exit status
$exitStatus = pcntl_wexitstatus( $status );
- if ( $exitStatus > 0 ) {
+ if ( $exitStatus != 0 ) {
echo "Worker exited with status $exitStatus, restarting\n";
$this->procsToStart++;
+ } else {
+ echo "Worker exited normally\n";
}
}
}
@@ -96,7 +100,7 @@ class ForkController {
if ( function_exists( 'pcntl_signal_dispatch' ) ) {
pcntl_signal_dispatch();
} else {
- declare (ticks=1) { $status = $status; }
+ declare (ticks=1) { $status = $status; }
}
// Respond to TERM signal
if ( $this->termReceived ) {
@@ -123,7 +127,7 @@ class ForkController {
*/
protected function forkWorkers( $numProcs ) {
global $wgMemc, $wgCaches, $wgMainCacheType;
-
+
$this->prepareEnvironment();
// Create the child processes
@@ -151,7 +155,7 @@ class ForkController {
global $wgMemc, $wgMainCacheType;
$wgMemc = wfGetCache( $wgMainCacheType );
$this->children = null;
- pcntl_signal( SIGTERM, SIG_DFL );
+ pcntl_signal( SIGTERM, SIG_DFL );
}
protected function handleTermSignal( $signal ) {
diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php
index 0807f0be..d6e0f5b4 100644
--- a/includes/GlobalFunctions.php
+++ b/includes/GlobalFunctions.php
@@ -33,18 +33,71 @@ if( !function_exists('iconv') ) {
}
}
-# UTF-8 substr function based on a PHP manual comment
if ( !function_exists( 'mb_substr' ) ) {
- function mb_substr( $str, $start ) {
- $ar = array();
- preg_match_all( '/./us', $str, $ar );
-
- if( func_num_args() >= 3 ) {
- $end = func_get_arg( 2 );
- return join( '', array_slice( $ar[0], $start, $end ) );
+ /**
+ * Fallback implementation for mb_substr, hardcoded to UTF-8.
+ * Attempts to be at least _moderately_ efficient; best optimized
+ * for relatively small offset and count values -- about 5x slower
+ * than native mb_string in my testing.
+ *
+ * Larger offsets are still fairly efficient for Latin text, but
+ * can be up to 100x slower than native if the text is heavily
+ * multibyte and we have to slog through a few hundred kb.
+ */
+ function mb_substr( $str, $start, $count='end' ) {
+ if( $start != 0 ) {
+ $split = mb_substr_split_unicode( $str, intval( $start ) );
+ $str = substr( $str, $split );
+ }
+
+ if( $count !== 'end' ) {
+ $split = mb_substr_split_unicode( $str, intval( $count ) );
+ $str = substr( $str, 0, $split );
+ }
+
+ return $str;
+ }
+
+ function mb_substr_split_unicode( $str, $splitPos ) {
+ if( $splitPos == 0 ) {
+ return 0;
+ }
+
+ $byteLen = strlen( $str );
+
+ if( $splitPos > 0 ) {
+ if( $splitPos > 256 ) {
+ // Optimize large string offsets by skipping ahead N bytes.
+ // This will cut out most of our slow time on Latin-based text,
+ // and 1/2 to 1/3 on East European and Asian scripts.
+ $bytePos = $splitPos;
+ while ($bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0")
+ ++$bytePos;
+ $charPos = mb_strlen( substr( $str, 0, $bytePos ) );
+ } else {
+ $charPos = 0;
+ $bytePos = 0;
+ }
+
+ while( $charPos++ < $splitPos ) {
+ ++$bytePos;
+ // Move past any tail bytes
+ while ($bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0")
+ ++$bytePos;
+ }
} else {
- return join( '', array_slice( $ar[0], $start ) );
+ $splitPosX = $splitPos + 1;
+ $charPos = 0; // relative to end of string; we don't care about the actual char position here
+ $bytePos = $byteLen;
+ while( $bytePos > 0 && $charPos-- >= $splitPosX ) {
+ --$bytePos;
+ // Move past any tail bytes
+ while ($bytePos > 0 && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0")
+ --$bytePos;
+ }
}
+
+ return $bytePos;
}
}
@@ -72,6 +125,54 @@ if ( !function_exists( 'mb_strlen' ) ) {
}
}
+
+if( !function_exists( 'mb_strpos' ) ) {
+ /**
+ * Fallback implementation of mb_strpos, hardcoded to UTF-8.
+ * @param $haystack String
+ * @param $needle String
+ * @param $offset String: optional start position
+ * @param $encoding String: optional encoding; ignored
+ * @return int
+ */
+ function mb_strpos( $haystack, $needle, $offset = 0, $encoding="" ) {
+ $needle = preg_quote( $needle, '/' );
+
+ $ar = array();
+ preg_match( '/'.$needle.'/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
+
+ if( isset( $ar[0][1] ) ) {
+ return $ar[0][1];
+ } else {
+ return false;
+ }
+ }
+}
+
+if( !function_exists( 'mb_strrpos' ) ) {
+ /**
+ * Fallback implementation of mb_strrpos, hardcoded to UTF-8.
+ * @param $haystack String
+ * @param $needle String
+ * @param $offset String: optional start position
+ * @param $encoding String: optional encoding; ignored
+ * @return int
+ */
+ function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = "" ) {
+ $needle = preg_quote( $needle, '/' );
+
+ $ar = array();
+ preg_match_all( '/'.$needle.'/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
+
+ if( isset( $ar[0] ) && count( $ar[0] ) > 0 &&
+ isset( $ar[0][count($ar[0])-1][1] ) ) {
+ return $ar[0][count($ar[0])-1][1];
+ } else {
+ return false;
+ }
+ }
+}
+
if ( !function_exists( 'array_diff_key' ) ) {
/**
* Exists in PHP 5.1.0+
@@ -89,6 +190,37 @@ if ( !function_exists( 'array_diff_key' ) ) {
}
}
+if ( !function_exists( 'array_intersect_key' ) ) {
+ /**
+ * Exists in 5.1.0+
+ * Define our own array_intersect_key function
+ */
+ function array_intersect_key( $isec, $keys ) {
+ $argc = func_num_args();
+
+ if ( $argc > 2 ) {
+ for ( $i = 1; $isec && $i < $argc; $i++ ) {
+ $arr = func_get_arg( $i );
+
+ foreach ( array_keys( $isec ) as $key ) {
+ if ( !isset( $arr[$key] ) )
+ unset( $isec[$key] );
+ }
+ }
+
+ return $isec;
+ } else {
+ $res = array();
+ foreach ( array_keys( $isec ) as $key ) {
+ if ( isset( $keys[$key] ) )
+ $res[$key] = $isec[$key];
+ }
+
+ return $res;
+ }
+ }
+}
+
// Support for Wietse Venema's taint feature
if ( !function_exists( 'istainted' ) ) {
function istainted( $var ) {
@@ -130,15 +262,6 @@ function wfArrayDiff2_cmp( $a, $b ) {
}
/**
- * Wrapper for clone(), for compatibility with PHP4-friendly extensions.
- * PHP 5 won't let you declare a 'clone' function, even conditionally,
- * so it has to be a wrapper with a different name.
- */
-function wfClone( $object ) {
- return clone( $object );
-}
-
-/**
* Seed Mersenne Twister
* No-op for compatibility; only necessary in PHP < 4.2.0
*/
@@ -207,17 +330,18 @@ function wfUrlencode( $s ) {
*/
function wfDebug( $text, $logonly = false ) {
global $wgOut, $wgDebugLogFile, $wgDebugComments, $wgProfileOnly, $wgDebugRawPage;
- global $wgDebugLogPrefix;
+ global $wgDebugLogPrefix, $wgShowDebug;
static $recursion = 0;
static $cache = array(); // Cache of unoutputted messages
+ $text = wfDebugTimer() . $text;
# Check for raw action using $_GET not $wgRequest, since the latter might not be initialised yet
if ( isset( $_GET['action'] ) && $_GET['action'] == 'raw' && !$wgDebugRawPage ) {
return;
}
- if ( $wgDebugComments && !$logonly ) {
+ if ( ( $wgDebugComments || $wgShowDebug ) && !$logonly ) {
$cache[] = $text;
if ( !isset( $wgOut ) ) {
@@ -236,7 +360,7 @@ function wfDebug( $text, $logonly = false ) {
array_map( array( $wgOut, 'debug' ), $cache );
$cache = array();
}
- if ( '' != $wgDebugLogFile && !$wgProfileOnly ) {
+ if ( $wgDebugLogFile != '' && !$wgProfileOnly ) {
# Strip unprintables; they can switch terminal modes when binary data
# gets dumped, which is pretty annoying.
$text = preg_replace( '![\x00-\x08\x0b\x0c\x0e-\x1f]!', ' ', $text );
@@ -245,9 +369,24 @@ function wfDebug( $text, $logonly = false ) {
}
}
+function wfDebugTimer() {
+ global $wgDebugTimestamps;
+ if ( !$wgDebugTimestamps ) return '';
+ static $start = null;
+
+ if ( $start === null ) {
+ $start = microtime( true );
+ $prefix = "\n$start";
+ } else {
+ $prefix = sprintf( "%6.4f", microtime( true ) - $start );
+ }
+
+ return $prefix . ' ';
+}
+
/**
* Send a line giving PHP memory usage.
- * @param $exact Bool : print exact values instead of kilobytes (default: false)
+ * @param $exact Bool: print exact values instead of kilobytes (default: false)
*/
function wfDebugMem( $exact = false ) {
$mem = memory_get_usage();
@@ -310,13 +449,18 @@ function wfErrorLog( $text, $file ) {
// IPv6 bracketed host
$protocol = $m[1];
$host = $m[2];
- $port = $m[3];
+ $port = intval( $m[3] );
$prefix = isset( $m[4] ) ? $m[4] : false;
+ $domain = AF_INET6;
} elseif ( preg_match( '!^(tcp|udp):(?://)?([a-zA-Z0-9.-]+):(\d+)(?:/(.*))?$!', $file, $m ) ) {
$protocol = $m[1];
$host = $m[2];
- $port = $m[3];
+ if ( !IP::isIPv4( $host ) ) {
+ $host = gethostbyname( $host );
+ }
+ $port = intval( $m[3] );
$prefix = isset( $m[4] ) ? $m[4] : false;
+ $domain = AF_INET;
} else {
throw new MWException( __METHOD__.": Invalid UDP specification" );
}
@@ -328,12 +472,12 @@ function wfErrorLog( $text, $file ) {
}
}
- $sock = fsockopen( "$protocol://$host", $port );
+ $sock = socket_create( $domain, SOCK_DGRAM, SOL_UDP );
if ( !$sock ) {
return;
}
- fwrite( $sock, $text );
- fclose( $sock );
+ socket_sendto( $sock, $text, strlen( $text ), 0, $host, $port );
+ socket_close( $sock );
} else {
wfSuppressWarnings();
$exists = file_exists( $file );
@@ -374,7 +518,7 @@ function wfLogProfilingData() {
$log = sprintf( "%s\t%04.3f\t%s\n",
gmdate( 'YmdHis' ), $elapsed,
urldecode( $wgRequest->getRequestURL() . $forward ) );
- if ( '' != $wgDebugLogFile && ( $wgRequest->getVal('action') != 'raw' || $wgDebugRawPage ) ) {
+ if ( $wgDebugLogFile != '' && ( $wgRequest->getVal('action') != 'raw' || $wgDebugRawPage ) ) {
wfErrorLog( $log . $prof, $wgDebugLogFile );
}
}
@@ -391,7 +535,7 @@ function wfReadOnly() {
if ( !is_null( $wgReadOnly ) ) {
return (bool)$wgReadOnly;
}
- if ( '' == $wgReadOnlyFile ) {
+ if ( $wgReadOnlyFile == '' ) {
return false;
}
// Set $wgReadOnly for faster access next time
@@ -555,10 +699,10 @@ function wfMsgNoDBForContent( $key ) {
* @param $args
* @param $useDB Boolean
* @param $transform Boolean: Whether or not to transform the message.
- * @param $forContent Boolean
+ * @param $forContent Mixed: Language code, or false for user lang, true for content lang.
* @return String: the requested message.
*/
-function wfMsgReal( $key, $args, $useDB = true, $forContent=false, $transform = true ) {
+function wfMsgReal( $key, $args, $useDB = true, $forContent = false, $transform = true ) {
wfProfileIn( __METHOD__ );
$message = wfMsgGetKey( $key, $useDB, $forContent, $transform );
$message = wfMsgReplaceArgs( $message, $args );
@@ -570,7 +714,7 @@ function wfMsgReal( $key, $args, $useDB = true, $forContent=false, $transform =
* This function provides the message source for messages to be edited which are *not* stored in the database.
* @param $key String:
*/
-function wfMsgWeirdKey ( $key ) {
+function wfMsgWeirdKey( $key ) {
$source = wfMsgGetKey( $key, false, true, false );
if ( wfEmptyMsg( $key, $source ) )
return "";
@@ -580,11 +724,11 @@ function wfMsgWeirdKey ( $key ) {
/**
* Fetch a message string value, but don't replace any keys yet.
- * @param string $key
- * @param bool $useDB
- * @param string $langcode Code of the language to get the message for, or
- * behaves as a content language switch if it is a
- * boolean.
+ * @param $key String
+ * @param $useDB Bool
+ * @param $langCode String: Code of the language to get the message for, or
+ * behaves as a content language switch if it is a boolean.
+ * @param $transform Boolean: whether to parse magic words, etc.
* @return string
* @private
*/
@@ -619,8 +763,8 @@ function wfMsgGetKey( $key, $useDB, $langCode = false, $transform = true ) {
/**
* Replace message parameter keys on the given formatted output.
*
- * @param string $message
- * @param array $args
+ * @param $message String
+ * @param $args Array
* @return string
* @private
*/
@@ -651,7 +795,7 @@ function wfMsgReplaceArgs( $message, $args ) {
* to pre-escape them if you really do want plaintext, or just wrap
* the whole thing in htmlspecialchars().
*
- * @param string $key
+ * @param $key String
* @param string ... parameters
* @return string
*/
@@ -668,7 +812,7 @@ function wfMsgHtml( $key ) {
* to pre-escape them if you really do want plaintext, or just wrap
* the whole thing in htmlspecialchars().
*
- * @param string $key
+ * @param $key String
* @param string ... parameters
* @return string
*/
@@ -681,8 +825,8 @@ function wfMsgWikiHtml( $key ) {
/**
* Returns message in the requested format
- * @param string $key Key of the message
- * @param array $options Processing rules. Can take the following options:
+ * @param $key String: key of the message
+ * @param $options Array: processing rules. Can take the following options:
* <i>parse</i>: parses wikitext to html
* <i>parseinline</i>: parses wikitext to html and removes the surrounding
* p's added by parser or tidy
@@ -708,12 +852,12 @@ function wfMsgExt( $key, $options ) {
foreach( $options as $arrayKey => $option ) {
if( !preg_match( '/^[0-9]+|language$/', $arrayKey ) ) {
# An unknown index, neither numeric nor "language"
- trigger_error( "wfMsgExt called with incorrect parameter key $arrayKey", E_USER_WARNING );
+ wfWarn( "wfMsgExt called with incorrect parameter key $arrayKey", 1, E_USER_WARNING );
} elseif( preg_match( '/^[0-9]+$/', $arrayKey ) && !in_array( $option,
array( 'parse', 'parseinline', 'escape', 'escapenoentities',
'replaceafter', 'parsemag', 'content' ) ) ) {
# A numeric index with unknown value
- trigger_error( "wfMsgExt called with incorrect parameter $option", E_USER_WARNING );
+ wfWarn( "wfMsgExt called with incorrect parameter $option", 1, E_USER_WARNING );
}
}
@@ -807,7 +951,7 @@ function wfErrorExit() {
/**
* Print a simple message and die, returning nonzero to the shell if any.
* Plain die() fails to return nonzero to the shell if you pass a string.
- * @param string $msg
+ * @param $msg String
*/
function wfDie( $msg='' ) {
echo $msg;
@@ -818,7 +962,7 @@ function wfDie( $msg='' ) {
* Throw a debugging exception. This function previously once exited the process,
* but now throws an exception instead, with similar results.
*
- * @param string $msg Message shown when dieing.
+ * @param $msg String: message shown when dieing.
*/
function wfDebugDieBacktrace( $msg = '' ) {
throw new MWException( $msg );
@@ -852,21 +996,21 @@ function wfHostname() {
return $host;
}
- /**
- * Returns a HTML comment with the elapsed time since request.
- * This method has no side effects.
- * @return string
- */
- function wfReportTime() {
- global $wgRequestTime, $wgShowHostnames;
+/**
+ * Returns a HTML comment with the elapsed time since request.
+ * This method has no side effects.
+ * @return string
+ */
+function wfReportTime() {
+ global $wgRequestTime, $wgShowHostnames;
- $now = wfTime();
- $elapsed = $now - $wgRequestTime;
+ $now = wfTime();
+ $elapsed = $now - $wgRequestTime;
- return $wgShowHostnames
- ? sprintf( "<!-- Served by %s in %01.3f secs. -->", wfHostname(), $elapsed )
- : sprintf( "<!-- Served in %01.3f secs. -->", $elapsed );
- }
+ return $wgShowHostnames
+ ? sprintf( "<!-- Served by %s in %01.3f secs. -->", wfHostname(), $elapsed )
+ : sprintf( "<!-- Served in %01.3f secs. -->", $elapsed );
+}
/**
* Safety wrapper for debug_backtrace().
@@ -974,18 +1118,19 @@ function wfShowingResultsNum( $offset, $limit, $num ) {
/**
* Generate (prev x| next x) (20|50|100...) type links for paging
- * @param $offset string
- * @param $limit int
- * @param $link string
- * @param $query string, optional URL query parameter string
- * @param $atend bool, optional param for specified if this is the last page
+ * @param $offset String
+ * @param $limit Integer
+ * @param $link String
+ * @param $query String: optional URL query parameter string
+ * @param $atend Bool: optional param for specified if this is the last page
*/
function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) {
global $wgLang;
$fmtLimit = $wgLang->formatNum( $limit );
+ // FIXME: Why on earth this needs one message for the text and another one for tooltip??
# Get prev/next link display text
- $prev = wfMsgHtml( 'prevn', $fmtLimit );
- $next = wfMsgHtml( 'nextn', $fmtLimit );
+ $prev = wfMsgExt( 'prevn', array('parsemag','escape'), $fmtLimit );
+ $next = wfMsgExt( 'nextn', array('parsemag','escape'), $fmtLimit );
# Get prev/next link title text
$pTitle = wfMsgExt( 'prevn-title', array('parsemag','escape'), $fmtLimit );
$nTitle = wfMsgExt( 'nextn-title', array('parsemag','escape'), $fmtLimit );
@@ -1029,15 +1174,15 @@ function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) {
wfNumLink( $offset, 250, $title, $query ),
wfNumLink( $offset, 500, $title, $query )
) );
- return wfMsg( 'viewprevnext', $plink, $nlink, $nums );
+ return wfMsgHtml( 'viewprevnext', $plink, $nlink, $nums );
}
/**
* Generate links for (20|50|100...) items-per-page links
- * @param $offset string
- * @param $limit int
+ * @param $offset String
+ * @param $limit Integer
* @param $title Title
- * @param $query string, optional URL query parameter string
+ * @param $query String: optional URL query parameter string
*/
function wfNumLink( $offset, $limit, $title, $query = '' ) {
global $wgLang;
@@ -1060,8 +1205,7 @@ function wfNumLink( $offset, $limit, $title, $query = '' ) {
* @return bool Whereas client accept gzip compression
*/
function wfClientAcceptsGzip() {
- global $wgUseGzip;
- if( $wgUseGzip ) {
+ if( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) ) {
# FIXME: we may want to blacklist some broken browsers
$m = array();
if( preg_match(
@@ -1098,7 +1242,7 @@ function wfCheckLimits( $deflimit = 50, $optionname = 'rclimit' ) {
* not filter out characters which have special meaning only at the
* start of a line, such as "*".
*
- * @param string $text Text to be escaped
+ * @param $text String: text to be escaped
*/
function wfEscapeWikiText( $text ) {
$text = str_replace(
@@ -1170,7 +1314,7 @@ function wfSetBit( &$dest, $bit, $state = true ) {
* "days=7&limit=100". Options in the first array override options in the second.
* Options set to "" will not be output.
*/
-function wfArrayToCGI( $array1, $array2 = NULL )
+function wfArrayToCGI( $array1, $array2 = null )
{
if ( !is_null( $array2 ) ) {
$array1 = $array1 + $array2;
@@ -1178,24 +1322,25 @@ function wfArrayToCGI( $array1, $array2 = NULL )
$cgi = '';
foreach ( $array1 as $key => $value ) {
- if ( '' !== $value ) {
- if ( '' != $cgi ) {
+ if ( $value !== '' ) {
+ if ( $cgi != '' ) {
$cgi .= '&';
}
- if(is_array($value))
- {
+ if ( is_array( $value ) ) {
$firstTime = true;
- foreach($value as $v)
- {
- $cgi .= ($firstTime ? '' : '&') .
+ foreach ( $value as $v ) {
+ $cgi .= ( $firstTime ? '' : '&') .
urlencode( $key . '[]' ) . '=' .
urlencode( $v );
$firstTime = false;
}
- }
- else
+ } else {
+ if ( is_object( $value ) ) {
+ $value = $value->__toString();
+ }
$cgi .= urlencode( $key ) . '=' .
urlencode( $value );
+ }
}
}
return $cgi;
@@ -1208,7 +1353,7 @@ function wfArrayToCGI( $array1, $array2 = NULL )
* arrays. Of course, keys and values are urldecode()d. Don't try passing in-
* valid query strings, or it will explode.
*
- * @param $query string Query string
+ * @param $query String: query string
* @return array Array version of input
*/
function wfCgiToArray( $query ) {
@@ -1233,11 +1378,14 @@ function wfCgiToArray( $query ) {
* Append a query string to an existing URL, which may or may not already
* have query string parameters already. If so, they will be combined.
*
- * @param string $url
- * @param string $query
+ * @param $url String
+ * @param $query Mixed: string or associative array
* @return string
*/
function wfAppendQuery( $url, $query ) {
+ if ( is_array( $query ) ) {
+ $query = wfArrayToCGI( $query );
+ }
if( $query != '' ) {
if( false === strpos( $url, '?' ) ) {
$url .= '?';
@@ -1250,9 +1398,13 @@ function wfAppendQuery( $url, $query ) {
}
/**
- * Expand a potentially local URL to a fully-qualified URL.
- * Assumes $wgServer is correct. :)
- * @param string $url, either fully-qualified or a local path + query
+ * Expand a potentially local URL to a fully-qualified URL. Assumes $wgServer
+ * is correct. Also doesn't handle any type of relative URL except one
+ * starting with a single "/": this won't work with current-path-relative URLs
+ * like "subdir/foo.html", protocol-relative URLs like
+ * "//en.wikipedia.org/wiki/", etc. TODO: improve this!
+ *
+ * @param $url String: either fully-qualified or a local path + query
* @return string Fully-qualified URL
*/
function wfExpandUrl( $url ) {
@@ -1387,12 +1539,16 @@ function wfMerge( $old, $mine, $yours, &$result ){
/**
* Returns unified plain-text diff of two texts.
* Useful for machine processing of diffs.
- * @param $before string The text before the changes.
- * @param $after string The text after the changes.
- * @param $params string Command-line options for the diff command.
- * @return string Unified diff of $before and $after
+ * @param $before String: the text before the changes.
+ * @param $after String: the text after the changes.
+ * @param $params String: command-line options for the diff command.
+ * @return String: unified diff of $before and $after
*/
function wfDiff( $before, $after, $params = '-u' ) {
+ if ($before == $after) {
+ return '';
+ }
+
global $wgDiff;
# This check may also protect against code injection in
@@ -1498,7 +1654,7 @@ function wfHttpError( $code, $label, $desc ) {
* Note that some PHP configuration options may add output buffer
* layers which cannot be removed; these are left in place.
*
- * @param bool $resetGzipEncoding
+ * @param $resetGzipEncoding Bool
*/
function wfResetOutputBuffers( $resetGzipEncoding=true ) {
if( $resetGzipEncoding ) {
@@ -1583,8 +1739,8 @@ function wfAcceptToPrefs( $accept, $def = '*/*' ) {
* Returns the matching MIME type (or wildcard) if a match, otherwise
* NULL if no match.
*
- * @param string $type
- * @param array $avail
+ * @param $type String
+ * @param $avail Array
* @return string
* @private
*/
@@ -1598,7 +1754,7 @@ function mimeTypeMatch( $type, $avail ) {
} elseif( array_key_exists( '*/*', $avail ) ) {
return '*/*';
} else {
- return NULL;
+ return null;
}
}
}
@@ -1609,8 +1765,8 @@ function mimeTypeMatch( $type, $avail ) {
* array of type to preference (preference is a float between 0.0 and 1.0).
* Wildcards in the types are acceptable.
*
- * @param array $cprefs Client's acceptable type list
- * @param array $sprefs Server's offered types
+ * @param $cprefs Array: client's acceptable type list
+ * @param $sprefs Array: server's offered types
* @return string
*
* @todo FIXME: doesn't handle params like 'text/plain; charset=UTF-8'
@@ -1640,7 +1796,7 @@ function wfNegotiateType( $cprefs, $sprefs ) {
}
$bestq = 0;
- $besttype = NULL;
+ $besttype = null;
foreach( array_keys( $combine ) as $type ) {
if( $combine[$type] > $bestq ) {
@@ -1755,12 +1911,13 @@ define('TS_POSTGRES', 7);
define('TS_DB2', 8);
/**
- * @param mixed $outputtype A timestamp in one of the supported formats, the
- * function will autodetect which format is supplied
- * and act accordingly.
- * @return string Time in the format specified in $outputtype
+ * @param $outputtype Mixed: A timestamp in one of the supported formats, the
+ * function will autodetect which format is supplied and act
+ * accordingly.
+ * @param $ts Mixed: the timestamp to convert or 0 for the current timestamp
+ * @return String: in the format specified in $outputtype
*/
-function wfTimestamp($outputtype=TS_UNIX,$ts=0) {
+function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
$uts = 0;
$da = array();
if ($ts==0) {
@@ -1774,8 +1931,8 @@ function wfTimestamp($outputtype=TS_UNIX,$ts=0) {
} elseif (preg_match('/^\d{1,13}$/D',$ts)) {
# TS_UNIX
$uts = $ts;
- } elseif (preg_match('/^\d{1,2}-...-\d\d(?:\d\d)? \d\d\.\d\d\.\d\d/', $ts)) {
- # TS_ORACLE
+ } elseif (preg_match('/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts)) {
+ # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
$uts = strtotime(preg_replace('/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
str_replace("+00:00", "UTC", $ts)));
} elseif (preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z$/', $ts, $da)) {
@@ -1812,7 +1969,8 @@ function wfTimestamp($outputtype=TS_UNIX,$ts=0) {
case TS_RFC2822:
return gmdate( 'D, d M Y H:i:s', $uts ) . ' GMT';
case TS_ORACLE:
- return gmdate( 'd-M-y h.i.s A', $uts) . ' +00:00';
+ return gmdate( 'd-m-Y H:i:s.000000', $uts);
+ //return gmdate( 'd-M-y h.i.s A', $uts) . ' +00:00';
case TS_POSTGRES:
return gmdate( 'Y-m-d H:i:s', $uts) . ' GMT';
case TS_DB2:
@@ -1825,9 +1983,9 @@ function wfTimestamp($outputtype=TS_UNIX,$ts=0) {
/**
* Return a formatted timestamp, or null if input is null.
* For dealing with nullable timestamp columns in the database.
- * @param int $outputtype
- * @param string $ts
- * @return string
+ * @param $outputtype Integer
+ * @param $ts String
+ * @return String
*/
function wfTimestampOrNull( $outputtype = TS_UNIX, $ts = null ) {
if( is_null( $ts ) ) {
@@ -1840,7 +1998,7 @@ function wfTimestampOrNull( $outputtype = TS_UNIX, $ts = null ) {
/**
* Check if the operating system is Windows
*
- * @return bool True if it's Windows, False otherwise.
+ * @return Bool: true if it's Windows, False otherwise.
*/
function wfIsWindows() {
if (substr(php_uname(), 0, 7) == 'Windows') {
@@ -1968,16 +2126,20 @@ function &wfGetMimeMagic() {
}
/**
- * Tries to get the system directory for temporary files.
- * The TMPDIR, TMP, and TEMP environment variables are checked in sequence,
- * and if none are set /tmp is returned as the generic Unix default.
+ * Tries to get the system directory for temporary files. For PHP >= 5.2.1,
+ * we'll use sys_get_temp_dir(). The TMPDIR, TMP, and TEMP environment
+ * variables are then checked in sequence, and if none are set /tmp is
+ * returned as the generic Unix default.
*
* NOTE: When possible, use the tempfile() function to create temporary
* files to avoid race conditions on file creation, etc.
*
- * @return string
+ * @return String
*/
function wfTempDir() {
+ if( function_exists( 'sys_get_temp_dir' ) ) {
+ return sys_get_temp_dir();
+ }
foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
$tmp = getenv( $var );
if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
@@ -1991,9 +2153,9 @@ function wfTempDir() {
/**
* Make directory, and make all parent directories if they don't exist
*
- * @param string $dir Full path to directory to create
- * @param int $mode Chmod value to use, default is $wgDirectoryMode
- * @param string $caller Optional caller param for debugging.
+ * @param $dir String: full path to directory to create
+ * @param $mode Integer: chmod value to use, default is $wgDirectoryMode
+ * @param $caller String: optional caller param for debugging.
* @return bool
*/
function wfMkdirParents( $dir, $mode = null, $caller = null ) {
@@ -2006,10 +2168,17 @@ function wfMkdirParents( $dir, $mode = null, $caller = null ) {
if( strval( $dir ) === '' || file_exists( $dir ) )
return true;
+ $dir = str_replace( array( '\\', '/' ), DIRECTORY_SEPARATOR, $dir );
+
if ( is_null( $mode ) )
$mode = $wgDirectoryMode;
- return mkdir( $dir, $mode, true ); // PHP5 <3
+ $ok = mkdir( $dir, $mode, true ); // PHP5 <3
+ if( !$ok ) {
+ // PHP doesn't report the path in its warning message, so add our own to aid in diagnosis.
+ trigger_error( __FUNCTION__ . ": failed to mkdir \"$dir\" mode $mode", E_USER_WARNING );
+ }
+ return $ok;
}
/**
@@ -2040,9 +2209,9 @@ function wfIncrStats( $key ) {
}
/**
- * @param mixed $nr The number to format
- * @param int $acc The number of digits after the decimal point, default 2
- * @param bool $round Whether or not to round the value, default true
+ * @param $nr Mixed: the number to format
+ * @param $acc Integer: the number of digits after the decimal point, default 2
+ * @param $round Boolean: whether or not to round the value, default true
* @return float
*/
function wfPercent( $nr, $acc = 2, $round = true ) {
@@ -2053,9 +2222,9 @@ function wfPercent( $nr, $acc = 2, $round = true ) {
/**
* Encrypt a username/password.
*
- * @param string $userid ID of the user
- * @param string $password Password of the user
- * @return string Hashed password
+ * @param $userid Integer: ID of the user
+ * @param $password String: password of the user
+ * @return String: hashed password
* @deprecated Use User::crypt() or User::oldCrypt() instead
*/
function wfEncryptPassword( $userid, $password ) {
@@ -2081,9 +2250,9 @@ function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) {
* looked up didn't exist but a XHTML string, this function checks for the
* nonexistance of messages by looking at wfMsg() output
*
- * @param $msg The message key looked up
- * @param $wfMsgOut The output of wfMsg*()
- * @return bool
+ * @param $msg String: the message key looked up
+ * @param $wfMsgOut String: the output of wfMsg*()
+ * @return Boolean
*/
function wfEmptyMsg( $msg, $wfMsgOut ) {
return $wfMsgOut === htmlspecialchars( "<$msg>" );
@@ -2092,9 +2261,9 @@ function wfEmptyMsg( $msg, $wfMsgOut ) {
/**
* Find out whether or not a mixed variable exists in a string
*
- * @param mixed needle
- * @param string haystack
- * @return bool
+ * @param $needle String
+ * @param $str String
+ * @return Boolean
*/
function in_string( $needle, $str ) {
return strpos( $str, $needle ) !== false;
@@ -2109,11 +2278,15 @@ function wfSpecialList( $page, $details ) {
/**
* Returns a regular expression of url protocols
*
- * @return string
+ * @return String
*/
function wfUrlProtocols() {
global $wgUrlProtocols;
+ static $retval = null;
+ if ( !is_null( $retval ) )
+ return $retval;
+
// Support old-style $wgUrlProtocols strings, for backwards compatibility
// with LocalSettings files from 1.5
if ( is_array( $wgUrlProtocols ) ) {
@@ -2121,10 +2294,11 @@ function wfUrlProtocols() {
foreach ($wgUrlProtocols as $protocol)
$protocols[] = preg_quote( $protocol, '/' );
- return implode( '|', $protocols );
+ $retval = implode( '|', $protocols );
} else {
- return $wgUrlProtocols;
+ $retval = $wgUrlProtocols;
}
+ return $retval;
}
/**
@@ -2147,8 +2321,8 @@ function wfUrlProtocols() {
*
* I frickin' hate PHP... :P
*
- * @param string $setting
- * @return bool
+ * @param $setting String
+ * @return Bool
*/
function wfIniGetBool( $setting ) {
$val = ini_get( $setting );
@@ -2203,9 +2377,12 @@ function wfShellExec( $cmd, &$retval=null ) {
$cmd = escapeshellarg( $script ) . " $time $mem $filesize " . escapeshellarg( $cmd );
}
}
- } elseif ( php_uname( 's' ) == 'Windows NT' ) {
+ } elseif ( php_uname( 's' ) == 'Windows NT' &&
+ version_compare( PHP_VERSION, '5.3.0', '<' ) )
+ {
# This is a hack to work around PHP's flawed invocation of cmd.exe
# http://news.php.net/php.internals/21796
+ # Which is fixed in 5.3.0 :)
$cmd = '"' . $cmd . '"';
}
wfDebug( "wfShellExec: $cmd\n" );
@@ -2249,8 +2426,8 @@ function wfInitShellLocale() {
*
* @see perldoc -f use
*
- * @param mixed $version The version to check, can be a string, an integer, or
- * a float
+ * @param $req_ver Mixed: the version to check, can be a string, an integer, or
+ * a float
*/
function wfUsePHP( $req_ver ) {
$php_ver = PHP_VERSION;
@@ -2269,8 +2446,8 @@ function wfUsePHP( $req_ver ) {
*
* @see perldoc -f use
*
- * @param mixed $version The version to check, can be a string, an integer, or
- * a float
+ * @param $req_ver Mixed: the version to check, can be a string, an integer, or
+ * a float
*/
function wfUseMW( $req_ver ) {
global $wgVersion;
@@ -2294,9 +2471,9 @@ function wfRegexReplacement( $string ) {
* PHP's basename() only considers '\' a pathchar on Windows and Netware.
* We'll consider it so always, as we don't want \s in our Unix paths either.
*
- * @param string $path
- * @param string $suffix to remove if present
- * @return string
+ * @param $path String
+ * @param $suffix String: to remove if present
+ * @return String
*/
function wfBaseName( $path, $suffix='' ) {
$encSuffix = ($suffix == '')
@@ -2315,9 +2492,9 @@ function wfBaseName( $path, $suffix='' ) {
* May explode on non-matching case-insensitive paths,
* funky symlinks, etc.
*
- * @param string $path Absolute destination path including target filename
- * @param string $from Absolute source path, directory only
- * @return string
+ * @param $path String: absolute destination path including target filename
+ * @param $from String: Absolute source path, directory only
+ * @return String
*/
function wfRelativePath( $path, $from ) {
// Normalize mixed input on Windows...
@@ -2359,8 +2536,9 @@ function wfRelativePath( $path, $from ) {
* Backwards array plus for people who haven't bothered to read the PHP manual
* XXX: will not darn your socks for you.
*
- * @param array $array1, [$array2, [...]]
- * @return array
+ * @param $array1 Array
+ * @param [$array2, [...]] Arrays
+ * @return Array
*/
function wfArrayMerge( $array1/* ... */ ) {
$args = func_get_args();
@@ -2407,8 +2585,8 @@ function wfMergeErrorArrays(/*...*/) {
* 2) Handles protocols that don't use :// (e.g., mailto: and news:) correctly
* 3) Adds a "delimiter" element to the array, either '://' or ':' (see (2))
*
- * @param string $url A URL to parse
- * @return array Bits of the URL in an associative array, per PHP docs
+ * @param $url String: a URL to parse
+ * @return Array: bits of the URL in an associative array, per PHP docs
*/
function wfParseUrl( $url ) {
global $wgUrlProtocols; // Allow all protocols defined in DefaultSettings/LocalSettings.php
@@ -2508,12 +2686,12 @@ function wfExplodeMarkup( $separator, $text ) {
* Supports base 2 through 36; digit values 10-36 are represented
* as lowercase letters a-z. Input is case-insensitive.
*
- * @param $input string of digits
- * @param $sourceBase int 2-36
- * @param $destBase int 2-36
- * @param $pad int 1 or greater
- * @param $lowercase bool
- * @return string or false on invalid input
+ * @param $input String: of digits
+ * @param $sourceBase Integer: 2-36
+ * @param $destBase Integer: 2-36
+ * @param $pad Integer: 1 or greater
+ * @param $lowercase Boolean
+ * @return String or false on invalid input
*/
function wfBaseConvert( $input, $sourceBase, $destBase, $pad=1, $lowercase=true ) {
$input = strval( $input );
@@ -2590,8 +2768,8 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad=1, $lowercase=true
/**
* Create an object with a given name and an array of construct parameters
- * @param string $name
- * @param array $p parameters
+ * @param $name String
+ * @param $p Array: parameters
*/
function wfCreateObject( $name, $p ){
$p = array_values( $p );
@@ -2619,9 +2797,9 @@ function wfCreateObject( $name, $p ){
* Alias for modularized function
* @deprecated Use Http::get() instead
*/
-function wfGetHTTP( $url, $timeout = 'default' ) {
+function wfGetHTTP( $url ) {
wfDeprecated(__FUNCTION__);
- return Http::get( $url, $timeout );
+ return Http::get( $url );
}
/**
@@ -2653,13 +2831,14 @@ function wfHttpOnlySafe() {
* Initialise php session
*/
function wfSetupSession() {
- global $wgSessionsInMemcached, $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly;
+ global $wgSessionsInMemcached, $wgCookiePath, $wgCookieDomain,
+ $wgCookieSecure, $wgCookieHttpOnly, $wgSessionHandler;
if( $wgSessionsInMemcached ) {
require_once( 'MemcachedSessions.php' );
- } elseif( 'files' != ini_get( 'session.save_handler' ) ) {
- # If it's left on 'user' or another setting from another
- # application, it will end up failing. Try to recover.
- ini_set ( 'session.save_handler', 'files' );
+ } elseif( $wgSessionHandler && $wgSessionHandler != ini_get( 'session.save_handler' ) ) {
+ # Only set this if $wgSessionHandler isn't null and session.save_handler
+ # hasn't already been set to the desired value (that causes errors)
+ ini_set ( 'session.save_handler', $wgSessionHandler );
}
$httpOnlySafe = wfHttpOnlySafe();
wfDebugLog( 'cookie',
@@ -2685,7 +2864,7 @@ function wfSetupSession() {
/**
* Get an object from the precompiled serialized directory
*
- * @return mixed The variable on success, false on failure
+ * @return Mixed: the variable on success, false on failure
*/
function wfGetPrecompiledData( $name ) {
global $IP;
@@ -2710,12 +2889,17 @@ function wfGetCaller( $level = 2 ) {
return $caller;
}
-/** Return a string consisting all callers in stack, somewhat useful sometimes for profiling specific points */
+/**
+ * Return a string consisting all callers in stack, somewhat useful sometimes
+ * for profiling specific points
+ */
function wfGetAllCallers() {
return implode('/', array_map('wfFormatStackFrame',array_reverse(wfDebugBacktrace())));
}
-/** Return a string representation of frame */
+/**
+ * Return a string representation of frame
+ */
function wfFormatStackFrame($frame) {
return isset( $frame["class"] )?
$frame["class"]."::".$frame["function"]:
@@ -2728,6 +2912,7 @@ function wfFormatStackFrame($frame) {
function wfMemcKey( /*... */ ) {
$args = func_get_args();
$key = wfWikiID() . ':' . implode( ':', $args );
+ $key = str_replace( ' ', '_', $key );
return $key;
}
@@ -2748,16 +2933,12 @@ function wfForeignMemcKey( $db, $prefix /*, ... */ ) {
* Get an ASCII string identifying this wiki
* This is used as a prefix in memcached keys
*/
-function wfWikiID( $db = null ) {
- if( $db instanceof Database ) {
- return $db->getWikiID();
- } else {
+function wfWikiID() {
global $wgDBprefix, $wgDBname;
- if ( $wgDBprefix ) {
- return "$wgDBname-$wgDBprefix";
- } else {
- return $wgDBname;
- }
+ if ( $wgDBprefix ) {
+ return "$wgDBname-$wgDBprefix";
+ } else {
+ return $wgDBname;
}
}
@@ -2774,15 +2955,15 @@ function wfSplitWikiID( $wiki ) {
/*
* Get a Database object.
- * @param integer $db Index of the connection to get. May be DB_MASTER for the
- * master (for write queries), DB_SLAVE for potentially lagged
- * read queries, or an integer >= 0 for a particular server.
+ * @param $db Integer: index of the connection to get. May be DB_MASTER for the
+ * master (for write queries), DB_SLAVE for potentially lagged read
+ * queries, or an integer >= 0 for a particular server.
*
- * @param mixed $groups Query groups. An array of group names that this query
- * belongs to. May contain a single string if the query is only
- * in one group.
+ * @param $groups Mixed: query groups. An array of group names that this query
+ * belongs to. May contain a single string if the query is only
+ * in one group.
*
- * @param string $wiki The wiki ID, or false for the current wiki
+ * @param $wiki String: the wiki ID, or false for the current wiki
*
* Note: multiple calls to wfGetDB(DB_SLAVE) during the course of one request
* will always return the same object, unless the underlying connection or load
@@ -2795,8 +2976,7 @@ function &wfGetDB( $db, $groups = array(), $wiki = false ) {
/**
* Get a load balancer object.
*
- * @param array $groups List of query groups
- * @param string $wiki Wiki ID, or false for the current wiki
+ * @param $wiki String: wiki ID, or false for the current wiki
* @return LoadBalancer
*/
function wfGetLB( $wiki = false ) {
@@ -2813,25 +2993,31 @@ function &wfGetLBFactory() {
/**
* Find a file.
* Shortcut for RepoGroup::singleton()->findFile()
- * @param mixed $title Title object or string. May be interwiki.
- * @param mixed $time Requested time for an archived image, or false for the
- * current version. An image object will be returned which
- * was created at the specified time.
- * @param mixed $flags FileRepo::FIND_ flags
- * @param boolean $bypass Bypass the file cache even if it could be used
+ * @param $title Either a string or Title object
+ * @param $options Associative array of options:
+ * time: requested time for an archived image, or false for the
+ * current version. An image object will be returned which was
+ * created at the specified time.
+ *
+ * ignoreRedirect: If true, do not follow file redirects
+ *
+ * private: If true, return restricted (deleted) files if the current
+ * user is allowed to view them. Otherwise, such files will not
+ * be found.
+ *
+ * bypassCache: If true, do not use the process-local cache of File objects
+ *
* @return File, or false if the file does not exist
*/
-function wfFindFile( $title, $time = false, $flags = 0, $bypass = false ) {
- if( !$time && !$flags && !$bypass ) {
- return FileCache::singleton()->findFile( $title );
- } else {
- return RepoGroup::singleton()->findFile( $title, $time, $flags );
- }
+function wfFindFile( $title, $options = array() ) {
+ return RepoGroup::singleton()->findFile( $title, $options );
}
/**
* Get an object referring to a locally registered file.
* Returns a valid placeholder object if the file does not exist.
+ * @param $title Either a string or Title object
+ * @return File, or null if passed an invalid Title
*/
function wfLocalFile( $title ) {
return RepoGroup::singleton()->getLocalRepo()->newFile( $title );
@@ -2840,7 +3026,7 @@ function wfLocalFile( $title ) {
/**
* Should low-performance queries be disabled?
*
- * @return bool
+ * @return Boolean
*/
function wfQueriesMustScale() {
global $wgMiserMode;
@@ -2854,20 +3040,42 @@ function wfQueriesMustScale() {
* Get the path to a specified script file, respecting file
* extensions; this is a wrapper around $wgScriptExtension etc.
*
- * @param string $script Script filename, sans extension
- * @return string
+ * @param $script String: script filename, sans extension
+ * @return String
*/
function wfScript( $script = 'index' ) {
global $wgScriptPath, $wgScriptExtension;
return "{$wgScriptPath}/{$script}{$wgScriptExtension}";
}
+/**
+ * Get the script url.
+ *
+ * @return script url
+ */
+function wfGetScriptUrl(){
+ if( isset( $_SERVER['SCRIPT_NAME'] ) ) {
+ #
+ # as it was called, minus the query string.
+ #
+ # Some sites use Apache rewrite rules to handle subdomains,
+ # and have PHP set up in a weird way that causes PHP_SELF
+ # to contain the rewritten URL instead of the one that the
+ # outside world sees.
+ #
+ # If in this mode, use SCRIPT_URL instead, which mod_rewrite
+ # provides containing the "before" URL.
+ return $_SERVER['SCRIPT_NAME'];
+ } else {
+ return $_SERVER['URL'];
+ }
+}
/**
* Convenience function converts boolean values into "true"
* or "false" (string) values
*
- * @param bool $value
- * @return string
+ * @param $value Boolean
+ * @return String
*/
function wfBoolToStr( $value ) {
return $value ? 'true' : 'false';
@@ -2875,42 +3083,9 @@ function wfBoolToStr( $value ) {
/**
* Load an extension messages file
- *
- * @param string $extensionName Name of extension to load messages from\for.
- * @param string $langcode Language to load messages for, or false for default
- * behvaiour (en, content language and user language).
- * @since r24808 (v1.11) Using this method of loading extension messages will not work
- * on MediaWiki prior to that
+ * @deprecated
*/
function wfLoadExtensionMessages( $extensionName, $langcode = false ) {
- global $wgExtensionMessagesFiles, $wgMessageCache, $wgLang, $wgContLang;
-
- #For recording whether extension message files have been loaded in a given language.
- static $loaded = array();
-
- if( !array_key_exists( $extensionName, $loaded ) ) {
- $loaded[$extensionName] = array();
- }
-
- if ( !isset($wgExtensionMessagesFiles[$extensionName]) ) {
- throw new MWException( "Messages file for extensions $extensionName is not defined" );
- }
-
- if( !$langcode && !array_key_exists( '*', $loaded[$extensionName] ) ) {
- # Just do en, content language and user language.
- $wgMessageCache->loadMessagesFile( $wgExtensionMessagesFiles[$extensionName], false );
- # Mark that they have been loaded.
- $loaded[$extensionName]['en'] = true;
- $loaded[$extensionName][$wgLang->getCode()] = true;
- $loaded[$extensionName][$wgContLang->getCode()] = true;
- # Mark that this part has been done to avoid weird if statements.
- $loaded[$extensionName]['*'] = true;
- } elseif( is_string( $langcode ) && !array_key_exists( $langcode, $loaded[$extensionName] ) ) {
- # Load messages for specified language.
- $wgMessageCache->loadMessagesFile( $wgExtensionMessagesFiles[$extensionName], $langcode );
- # Mark that they have been loaded.
- $loaded[$extensionName][$langcode] = true;
- }
}
/**
@@ -2928,9 +3103,9 @@ function wfGetNull() {
/**
* Displays a maxlag error
*
- * @param string $host Server that lags the most
- * @param int $lag Maxlag (actual)
- * @param int $maxLag Maxlag (requested)
+ * @param $host String: server that lags the most
+ * @param $lag Integer: maxlag (actual)
+ * @param $maxLag Integer: maxlag (requested)
*/
function wfMaxlagError( $host, $lag, $maxLag ) {
global $wgShowHostnames;
@@ -2946,19 +3121,33 @@ function wfMaxlagError( $host, $lag, $maxLag ) {
}
/**
- * Throws an E_USER_NOTICE saying that $function is deprecated
- * @param string $function
+ * Throws a warning that $function is deprecated
+ * @param $function String
* @return null
*/
function wfDeprecated( $function ) {
- global $wgDebugLogFile;
- if ( !$wgDebugLogFile ) {
- return;
+ static $functionsWarned = array();
+ if ( !isset( $functionsWarned[$function] ) ) {
+ $functionsWarned[$function] = true;
+ wfWarn( "Use of $function is deprecated.", 2 );
}
+}
+
+/**
+ * Send a warning either to the debug log or in a PHP error depending on
+ * $wgDevelopmentWarnings
+ *
+ * @param $msg String: message to send
+ * @param $callerOffset Integer: number of itmes to go back in the backtrace to
+ * find the correct caller (1 = function calling wfWarn, ...)
+ * @param $level Integer: PHP error level; only used when $wgDevelopmentWarnings
+ * is true
+ */
+function wfWarn( $msg, $callerOffset = 1, $level = E_USER_NOTICE ) {
$callers = wfDebugBacktrace();
- if( isset( $callers[2] ) ){
- $callerfunc = $callers[2];
- $callerfile = $callers[1];
+ if( isset( $callers[$callerOffset+1] ) ){
+ $callerfunc = $callers[$callerOffset+1];
+ $callerfile = $callers[$callerOffset];
if( isset( $callerfile['file'] ) && isset( $callerfile['line'] ) ){
$file = $callerfile['file'] . ' at line ' . $callerfile['line'];
} else {
@@ -2968,11 +3157,15 @@ function wfDeprecated( $function ) {
if( isset( $callerfunc['class'] ) )
$func .= $callerfunc['class'] . '::';
$func .= @$callerfunc['function'];
- $msg = "Use of $function is deprecated. Called from $func in $file";
+ $msg .= " [Called from $func in $file]";
+ }
+
+ global $wgDevelopmentWarnings;
+ if ( $wgDevelopmentWarnings ) {
+ trigger_error( $msg, $level );
} else {
- $msg = "Use of $function is deprecated.";
+ wfDebug( "$msg\n" );
}
- wfDebug( "$msg\n" );
}
/**
@@ -2985,13 +3178,14 @@ function wfDeprecated( $function ) {
* that effect (and then sleep for a little while), so it's probably not best
* to use this outside maintenance scripts in its present form.
*
- * @param int $maxLag
+ * @param $maxLag Integer
+ * @param $wiki mixed Wiki identifier accepted by wfGetLB
* @return null
*/
-function wfWaitForSlaves( $maxLag ) {
+function wfWaitForSlaves( $maxLag, $wiki = false ) {
if( $maxLag ) {
- $lb = wfGetLB();
- list( $host, $lag ) = $lb->getMaxLag();
+ $lb = wfGetLB( $wiki );
+ list( $host, $lag ) = $lb->getMaxLag( $wiki );
while( $lag > $maxLag ) {
$name = @gethostbyaddr( $host );
if( $name !== false ) {
@@ -3019,8 +3213,27 @@ function wfOut( $s ) {
flush();
}
+/**
+ * Count down from $n to zero on the terminal, with a one-second pause
+ * between showing each number. For use in command-line scripts.
+ */
+function wfCountDown( $n ) {
+ for ( $i = $n; $i >= 0; $i-- ) {
+ if ( $i != $n ) {
+ echo str_repeat( "\x08", strlen( $i + 1 ) );
+ }
+ echo $i;
+ flush();
+ if ( $i ) {
+ sleep( 1 );
+ }
+ }
+ echo "\n";
+}
+
/** Generate a random 32-character hexadecimal token.
- * @param mixed $salt Some sort of salt, if necessary, to add to random characters before hashing.
+ * @param $salt Mixed: some sort of salt, if necessary, to add to random
+ * characters before hashing.
*/
function wfGenerateToken( $salt = '' ) {
$salt = serialize($salt);
@@ -3030,10 +3243,122 @@ function wfGenerateToken( $salt = '' ) {
/**
* Replace all invalid characters with -
- * @param mixed $title Filename to process
+ * @param $name Mixed: filename to process
*/
function wfStripIllegalFilenameChars( $name ) {
+ global $wgIllegalFileChars;
$name = wfBaseName( $name );
- $name = preg_replace ( "/[^".Title::legalChars()."]|:/", '-', $name );
+ $name = preg_replace("/[^".Title::legalChars()."]".($wgIllegalFileChars ? "|[".$wgIllegalFileChars."]":"")."/",'-',$name);
return $name;
}
+
+/**
+ * Insert array into another array after the specified *KEY*
+ * @param $array Array: The array.
+ * @param $insert Array: The array to insert.
+ * @param $after Mixed: The key to insert after
+ */
+function wfArrayInsertAfter( $array, $insert, $after ) {
+ // Find the offset of the element to insert after.
+ $keys = array_keys($array);
+ $offsetByKey = array_flip( $keys );
+
+ $offset = $offsetByKey[$after];
+
+ // Insert at the specified offset
+ $before = array_slice( $array, 0, $offset + 1, true );
+ $after = array_slice( $array, $offset + 1, count($array)-$offset, true );
+
+ $output = $before + $insert + $after;
+
+ return $output;
+}
+
+/* Recursively converts the parameter (an object) to an array with the same data */
+function wfObjectToArray( $object, $recursive = true ) {
+ $array = array();
+ foreach ( get_object_vars($object) as $key => $value ) {
+ if ( is_object($value) && $recursive ) {
+ $value = wfObjectToArray( $value );
+ }
+
+ $array[$key] = $value;
+ }
+
+ return $array;
+}
+
+/**
+ * Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit;
+ * @return Integer value memory was set to.
+ */
+
+function wfMemoryLimit () {
+ global $wgMemoryLimit;
+ $memlimit = wfShorthandToInteger( ini_get( "memory_limit" ) );
+ $conflimit = wfShorthandToInteger( $wgMemoryLimit );
+ if( $memlimit != -1 ) {
+ if( $conflimit == -1 ) {
+ wfDebug( "Removing PHP's memory limit\n" );
+ wfSuppressWarnings();
+ ini_set( "memory_limit", $conflimit );
+ wfRestoreWarnings();
+ return $conflimit;
+ } elseif ( $conflimit > $memlimit ) {
+ wfDebug( "Raising PHP's memory limit to $conflimit bytes\n" );
+ wfSuppressWarnings();
+ ini_set( "memory_limit", $conflimit );
+ wfRestoreWarnings();
+ return $conflimit;
+ }
+ }
+ return $memlimit;
+}
+
+/**
+ * Converts shorthand byte notation to integer form
+ * @param $string String
+ * @return Integer
+ */
+function wfShorthandToInteger ( $string = '' ) {
+ $string = trim($string);
+ if( empty($string) ) { return -1; }
+ $last = strtolower($string[strlen($string)-1]);
+ $val = intval($string);
+ switch($last) {
+ case 'g':
+ $val *= 1024;
+ case 'm':
+ $val *= 1024;
+ case 'k':
+ $val *= 1024;
+ }
+
+ return $val;
+}
+
+/* Get the normalised IETF language tag
+ * @param $code String: The language code.
+ * @return $langCode String: The language code which complying with BCP 47 standards.
+ */
+function wfBCP47( $code ) {
+ $codeSegment = explode( '-', $code );
+ foreach ( $codeSegment as $segNo => $seg ) {
+ if ( count( $codeSegment ) > 0 ) {
+ // ISO 3166 country code
+ if ( ( strlen( $seg ) == 2 ) && ( $segNo > 0 ) )
+ $codeBCP[$segNo] = strtoupper( $seg );
+ // ISO 15924 script code
+ else if ( ( strlen( $seg ) == 4 ) && ( $segNo > 0 ) )
+ $codeBCP[$segNo] = ucfirst( $seg );
+ // Use lowercase for other cases
+ else
+ $codeBCP[$segNo] = strtolower( $seg );
+ } else {
+ // Use lowercase for single segment
+ $codeBCP[$segNo] = strtolower( $seg );
+ }
+ }
+ $langCode = implode ( '-' , $codeBCP );
+ return $langCode;
+}
diff --git a/includes/HTMLCacheUpdate.php b/includes/HTMLCacheUpdate.php
index bd63c072..6f90b2d9 100644
--- a/includes/HTMLCacheUpdate.php
+++ b/includes/HTMLCacheUpdate.php
@@ -25,38 +25,119 @@
*/
class HTMLCacheUpdate
{
- public $mTitle, $mTable, $mPrefix;
+ public $mTitle, $mTable, $mPrefix, $mStart, $mEnd;
public $mRowsPerJob, $mRowsPerQuery;
- function __construct( $titleTo, $table ) {
+ function __construct( $titleTo, $table, $start = false, $end = false ) {
global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
$this->mTitle = $titleTo;
$this->mTable = $table;
+ $this->mStart = $start;
+ $this->mEnd = $end;
$this->mRowsPerJob = $wgUpdateRowsPerJob;
$this->mRowsPerQuery = $wgUpdateRowsPerQuery;
$this->mCache = $this->mTitle->getBacklinkCache();
}
public function doUpdate() {
- # Fetch the IDs
- $numRows = $this->mCache->getNumLinks( $this->mTable );
+ if ( $this->mStart || $this->mEnd ) {
+ $this->doPartialUpdate();
+ return;
+ }
- if ( $numRows != 0 ) {
- if ( $numRows > $this->mRowsPerJob ) {
- $this->insertJobs();
+ # Get an estimate of the number of rows from the BacklinkCache
+ $numRows = $this->mCache->getNumLinks( $this->mTable );
+ if ( $numRows > $this->mRowsPerJob * 2 ) {
+ # Do fast cached partition
+ $this->insertJobs();
+ } else {
+ # Get the links from the DB
+ $titleArray = $this->mCache->getLinks( $this->mTable );
+ # Check if the row count estimate was correct
+ if ( $titleArray->count() > $this->mRowsPerJob * 2 ) {
+ # Not correct, do accurate partition
+ wfDebug( __METHOD__.": row count estimate was incorrect, repartitioning\n" );
+ $this->insertJobsFromTitles( $titleArray );
} else {
- $this->invalidate();
+ $this->invalidateTitles( $titleArray );
}
}
wfRunHooks( 'HTMLCacheUpdate::doUpdate', array($this->mTitle) );
}
+ /**
+ * Update some of the backlinks, defined by a page ID range
+ */
+ protected function doPartialUpdate() {
+ $titleArray = $this->mCache->getLinks( $this->mTable, $this->mStart, $this->mEnd );
+ if ( $titleArray->count() <= $this->mRowsPerJob * 2 ) {
+ # This partition is small enough, do the update
+ $this->invalidateTitles( $titleArray );
+ } else {
+ # Partitioning was excessively inaccurate. Divide the job further.
+ # This can occur when a large number of links are added in a short
+ # period of time, say by updating a heavily-used template.
+ $this->insertJobsFromTitles( $titleArray );
+ }
+ }
+
+ /**
+ * Partition the current range given by $this->mStart and $this->mEnd,
+ * using a pre-calculated title array which gives the links in that range.
+ * Queue the resulting jobs.
+ */
+ protected function insertJobsFromTitles( $titleArray ) {
+ # We make subpartitions in the sense that the start of the first job
+ # will be the start of the parent partition, and the end of the last
+ # job will be the end of the parent partition.
+ $jobs = array();
+ $start = $this->mStart; # start of the current job
+ $numTitles = 0;
+ foreach ( $titleArray as $title ) {
+ $id = $title->getArticleID();
+ # $numTitles is now the number of titles in the current job not
+ # including the current ID
+ if ( $numTitles >= $this->mRowsPerJob ) {
+ # Add a job up to but not including the current ID
+ $params = array(
+ 'table' => $this->mTable,
+ 'start' => $start,
+ 'end' => $id - 1
+ );
+ $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params );
+ $start = $id;
+ $numTitles = 0;
+ }
+ $numTitles++;
+ }
+ # Last job
+ $params = array(
+ 'table' => $this->mTable,
+ 'start' => $start,
+ 'end' => $this->mEnd
+ );
+ $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params );
+ wfDebug( __METHOD__.": repartitioning into " . count( $jobs ) . " jobs\n" );
+
+ if ( count( $jobs ) < 2 ) {
+ # I don't think this is possible at present, but handling this case
+ # makes the code a bit more robust against future code updates and
+ # avoids a potential infinite loop of repartitioning
+ wfDebug( __METHOD__.": repartitioning failed!\n" );
+ $this->invalidateTitles( $titleArray );
+ return;
+ }
+
+ Job::batchInsert( $jobs );
+ }
+
protected function insertJobs() {
$batches = $this->mCache->partition( $this->mTable, $this->mRowsPerJob );
if ( !$batches ) {
return;
}
+ $jobs = array();
foreach ( $batches as $batch ) {
$params = array(
'table' => $this->mTable,
@@ -68,17 +149,20 @@ class HTMLCacheUpdate
Job::batchInsert( $jobs );
}
-
/**
- * Invalidate a set of pages, right now
+ * Invalidate a range of pages, right now
+ * @deprecated
*/
public function invalidate( $startId = false, $endId = false ) {
- global $wgUseFileCache, $wgUseSquid;
-
$titleArray = $this->mCache->getLinks( $this->mTable, $startId, $endId );
- if ( $titleArray->count() == 0 ) {
- return;
- }
+ $this->invalidateTitles( $titleArray );
+ }
+
+ /**
+ * Invalidate an array (or iterator) of Title objects, right now
+ */
+ protected function invalidateTitles( $titleArray ) {
+ global $wgUseFileCache, $wgUseSquid;
$dbw = wfGetDB( DB_MASTER );
$timestamp = $dbw->timestamp();
@@ -88,12 +172,20 @@ class HTMLCacheUpdate
foreach ( $titleArray as $title ) {
$ids[] = $title->getArticleID();
}
+
+ if ( !$ids ) {
+ return;
+ }
+
# Update page_touched
- $dbw->update( 'page',
- array( 'page_touched' => $timestamp ),
- array( 'page_id IN (' . $dbw->makeList( $ids ) . ')' ),
- __METHOD__
- );
+ $batches = array_chunk( $ids, $this->mRowsPerQuery );
+ foreach ( $batches as $batch ) {
+ $dbw->update( 'page',
+ array( 'page_touched' => $timestamp ),
+ array( 'page_id IN (' . $dbw->makeList( $batch ) . ')' ),
+ __METHOD__
+ );
+ }
# Update squid
if ( $wgUseSquid ) {
@@ -108,6 +200,7 @@ class HTMLCacheUpdate
}
}
}
+
}
/**
@@ -121,9 +214,9 @@ class HTMLCacheUpdateJob extends Job {
/**
* Construct a job
- * @param Title $title The title linked to
- * @param array $params Job parameters (table, start and end page_ids)
- * @param integer $id job_id
+ * @param $title Title: the title linked to
+ * @param $params Array: job parameters (table, start and end page_ids)
+ * @param $id Integer: job id
*/
function __construct( $title, $params, $id = 0 ) {
parent::__construct( 'htmlCacheUpdate', $title, $params, $id );
@@ -133,8 +226,8 @@ class HTMLCacheUpdateJob extends Job {
}
public function run() {
- $update = new HTMLCacheUpdate( $this->title, $this->table );
- $update->invalidate( $this->start, $this->end );
+ $update = new HTMLCacheUpdate( $this->title, $this->table, $this->start, $this->end );
+ $update->doUpdate();
return true;
}
}
diff --git a/includes/HTMLFileCache.php b/includes/HTMLFileCache.php
index 68cafa24..53af1e6e 100644
--- a/includes/HTMLFileCache.php
+++ b/includes/HTMLFileCache.php
@@ -14,6 +14,7 @@
* - $wgCachePages
* - $wgCacheEpoch
* - $wgUseFileCache
+ * - $wgCacheDirectory
* - $wgFileCacheDirectory
* - $wgUseGzip
*
@@ -30,7 +31,16 @@ class HTMLFileCache {
public function fileCacheName() {
if( !$this->mFileCache ) {
- global $wgFileCacheDirectory, $wgRequest;
+ global $wgCacheDirectory, $wgFileCacheDirectory, $wgRequest;
+
+ if ( $wgFileCacheDirectory ) {
+ $dir = $wgFileCacheDirectory;
+ } elseif ( $wgCacheDirectory ) {
+ $dir = "$wgCacheDirectory/html";
+ } else {
+ throw new MWException( 'Please set $wgCacheDirectory in LocalSettings.php if you wish to use the HTML file cache' );
+ }
+
# Store raw pages (like CSS hits) elsewhere
$subdir = ($this->mType === 'raw') ? 'raw/' : '';
$key = $this->mTitle->getPrefixedDbkey();
@@ -45,7 +55,7 @@ class HTMLFileCache {
if( $this->useGzip() )
$this->mFileCache .= '.gz';
- wfDebug( " fileCacheName() - {$this->mFileCache}\n" );
+ wfDebug( __METHOD__ . ": {$this->mFileCache}\n" );
}
return $this->mFileCache;
}
@@ -96,12 +106,11 @@ class HTMLFileCache {
global $wgCacheEpoch;
if( !$this->isFileCached() ) return false;
- if( !$timestamp ) return true; // should be invalidated on change
$cachetime = $this->fileCacheTime();
$good = $timestamp <= $cachetime && $wgCacheEpoch <= $cachetime;
- wfDebug(" isFileCacheGood() - cachetime $cachetime, touched '{$timestamp}' epoch {$wgCacheEpoch}, good $good\n");
+ wfDebug( __METHOD__ . ": cachetime $cachetime, touched '{$timestamp}' epoch {$wgCacheEpoch}, good $good\n");
return $good;
}
@@ -127,7 +136,7 @@ class HTMLFileCache {
/* Working directory to/from output */
public function loadFromFileCache() {
global $wgOut, $wgMimeType, $wgOutputEncoding, $wgContLanguageCode;
- wfDebug(" loadFromFileCache()\n");
+ wfDebug( __METHOD__ . "()\n");
$filename = $this->fileCacheName();
// Raw pages should handle cache control on their own,
// even when using file cache. This reduces hits from clients.
@@ -166,7 +175,7 @@ class HTMLFileCache {
return $text;
}
- wfDebug(" saveToFileCache()\n", false);
+ wfDebug( __METHOD__ . "()\n", false);
$this->checkCacheDirs();
diff --git a/includes/HTMLForm.php b/includes/HTMLForm.php
new file mode 100644
index 00000000..fddc887b
--- /dev/null
+++ b/includes/HTMLForm.php
@@ -0,0 +1,1391 @@
+<?php
+
+/**
+ * Object handling generic submission, CSRF protection, layout and
+ * other logic for UI forms. in a reusable manner.
+ *
+ * In order to generate the form, the HTMLForm object takes an array
+ * structure detailing the form fields available. Each element of the
+ * array is a basic property-list, including the type of field, the
+ * label it is to be given in the form, callbacks for validation and
+ * 'filtering', and other pertinent information.
+ *
+ * Field types are implemented as subclasses of the generic HTMLFormField
+ * object, and typically implement at least getInputHTML, which generates
+ * the HTML for the input field to be placed in the table.
+ *
+ * The constructor input is an associative array of $fieldname => $info,
+ * where $info is an Associative Array with any of the following:
+ *
+ * 'class' -- the subclass of HTMLFormField that will be used
+ * to create the object. *NOT* the CSS class!
+ * 'type' -- roughly translates into the <select> type attribute.
+ * if 'class' is not specified, this is used as a map
+ * through HTMLForm::$typeMappings to get the class name.
+ * 'default' -- default value when the form is displayed
+ * 'id' -- HTML id attribute
+ * 'options' -- varies according to the specific object.
+ * 'label-message' -- message key for a message to use as the label.
+ * can be an array of msg key and then parameters to
+ * the message.
+ * 'label' -- alternatively, a raw text message. Overridden by
+ * label-message
+ * 'help-message' -- message key for a message to use as a help text.
+ * can be an array of msg key and then parameters to
+ * the message.
+ * 'required' -- passed through to the object, indicating that it
+ * is a required field.
+ * 'size' -- the length of text fields
+ * 'filter-callback -- a function name to give you the chance to
+ * massage the inputted value before it's processed.
+ * @see HTMLForm::filter()
+ * 'validation-callback' -- a function name to give you the chance
+ * to impose extra validation on the field input.
+ * @see HTMLForm::validate()
+ *
+ * TODO: Document 'section' / 'subsection' stuff
+ */
+class HTMLForm {
+ static $jsAdded = false;
+
+ # A mapping of 'type' inputs onto standard HTMLFormField subclasses
+ static $typeMappings = array(
+ 'text' => 'HTMLTextField',
+ 'textarea' => 'HTMLTextAreaField',
+ 'select' => 'HTMLSelectField',
+ 'radio' => 'HTMLRadioField',
+ 'multiselect' => 'HTMLMultiSelectField',
+ 'check' => 'HTMLCheckField',
+ 'toggle' => 'HTMLCheckField',
+ 'int' => 'HTMLIntField',
+ 'float' => 'HTMLFloatField',
+ 'info' => 'HTMLInfoField',
+ 'selectorother' => 'HTMLSelectOrOtherField',
+ 'submit' => 'HTMLSubmitField',
+ 'hidden' => 'HTMLHiddenField',
+ 'edittools' => 'HTMLEditTools',
+
+ # HTMLTextField will output the correct type="" attribute automagically.
+ # There are about four zillion other HTML5 input types, like url, but
+ # we don't use those at the moment, so no point in adding all of them.
+ 'email' => 'HTMLTextField',
+ 'password' => 'HTMLTextField',
+ );
+
+ protected $mMessagePrefix;
+ protected $mFlatFields;
+ protected $mFieldTree;
+ protected $mShowReset = false;
+ public $mFieldData;
+
+ protected $mSubmitCallback;
+ protected $mValidationErrorMessage;
+
+ protected $mPre = '';
+ protected $mHeader = '';
+ protected $mPost = '';
+ protected $mId;
+
+ protected $mSubmitID;
+ protected $mSubmitName;
+ protected $mSubmitText;
+ protected $mSubmitTooltip;
+ protected $mTitle;
+
+ protected $mUseMultipart = false;
+ protected $mHiddenFields = array();
+ protected $mButtons = array();
+
+ protected $mWrapperLegend = false;
+
+ /**
+ * Build a new HTMLForm from an array of field attributes
+ * @param $descriptor Array of Field constructs, as described above
+ * @param $messagePrefix String a prefix to go in front of default messages
+ */
+ public function __construct( $descriptor, $messagePrefix='' ) {
+ $this->mMessagePrefix = $messagePrefix;
+
+ // Expand out into a tree.
+ $loadedDescriptor = array();
+ $this->mFlatFields = array();
+
+ foreach( $descriptor as $fieldname => $info ) {
+ $section = '';
+ if ( isset( $info['section'] ) )
+ $section = $info['section'];
+
+ $info['name'] = $fieldname;
+
+ if ( isset( $info['type'] ) && $info['type'] == 'file' )
+ $this->mUseMultipart = true;
+
+ $field = self::loadInputFromParameters( $info );
+ $field->mParent = $this;
+
+ $setSection =& $loadedDescriptor;
+ if( $section ) {
+ $sectionParts = explode( '/', $section );
+
+ while( count( $sectionParts ) ) {
+ $newName = array_shift( $sectionParts );
+
+ if ( !isset( $setSection[$newName] ) ) {
+ $setSection[$newName] = array();
+ }
+
+ $setSection =& $setSection[$newName];
+ }
+ }
+
+ $setSection[$fieldname] = $field;
+ $this->mFlatFields[$fieldname] = $field;
+ }
+
+ $this->mFieldTree = $loadedDescriptor;
+ }
+
+ /**
+ * Add the HTMLForm-specific JavaScript, if it hasn't been
+ * done already.
+ */
+ static function addJS() {
+ if( self::$jsAdded ) return;
+
+ global $wgOut, $wgStylePath;
+
+ $wgOut->addScriptFile( "$wgStylePath/common/htmlform.js" );
+ }
+
+ /**
+ * Initialise a new Object for the field
+ * @param $descriptor input Descriptor, as described above
+ * @return HTMLFormField subclass
+ */
+ static function loadInputFromParameters( $descriptor ) {
+ if ( isset( $descriptor['class'] ) ) {
+ $class = $descriptor['class'];
+ } elseif ( isset( $descriptor['type'] ) ) {
+ $class = self::$typeMappings[$descriptor['type']];
+ $descriptor['class'] = $class;
+ }
+
+ if( !$class ) {
+ throw new MWException( "Descriptor with no class: " . print_r( $descriptor, true ) );
+ }
+
+ $obj = new $class( $descriptor );
+
+ return $obj;
+ }
+
+ /**
+ * The here's-one-I-made-earlier option: do the submission if
+ * posted, or display the form with or without funky valiation
+ * errors
+ * @return Bool whether submission was successful.
+ */
+ function show() {
+ $html = '';
+
+ self::addJS();
+
+ # Load data from the request.
+ $this->loadData();
+
+ # Try a submission
+ global $wgUser, $wgRequest;
+ $editToken = $wgRequest->getVal( 'wpEditToken' );
+
+ $result = false;
+ if ( $wgUser->matchEditToken( $editToken ) )
+ $result = $this->trySubmit();
+
+ if( $result === true )
+ return $result;
+
+ # Display form.
+ $this->displayForm( $result );
+ return false;
+ }
+
+ /**
+ * Validate all the fields, and call the submision callback
+ * function if everything is kosher.
+ * @return Mixed Bool true == Successful submission, Bool false
+ * == No submission attempted, anything else == Error to
+ * display.
+ */
+ function trySubmit() {
+ # Check for validation
+ foreach( $this->mFlatFields as $fieldname => $field ) {
+ if ( !empty( $field->mParams['nodata'] ) )
+ continue;
+ if ( $field->validate(
+ $this->mFieldData[$fieldname],
+ $this->mFieldData )
+ !== true )
+ {
+ return isset( $this->mValidationErrorMessage )
+ ? $this->mValidationErrorMessage
+ : array( 'htmlform-invalid-input' );
+ }
+ }
+
+ $callback = $this->mSubmitCallback;
+
+ $data = $this->filterDataForSubmit( $this->mFieldData );
+
+ $res = call_user_func( $callback, $data );
+
+ return $res;
+ }
+
+ /**
+ * Set a callback to a function to do something with the form
+ * once it's been successfully validated.
+ * @param $cb String function name. The function will be passed
+ * the output from HTMLForm::filterDataForSubmit, and must
+ * return Bool true on success, Bool false if no submission
+ * was attempted, or String HTML output to display on error.
+ */
+ function setSubmitCallback( $cb ) {
+ $this->mSubmitCallback = $cb;
+ }
+
+ /**
+ * Set a message to display on a validation error.
+ * @param $msg Mixed String or Array of valid inputs to wfMsgExt()
+ * (so each entry can be either a String or Array)
+ */
+ function setValidationErrorMessage( $msg ) {
+ $this->mValidationErrorMessage = $msg;
+ }
+
+ /**
+ * Set the introductory message, overwriting any existing message.
+ * @param $msg String complete text of message to display
+ */
+ function setIntro( $msg ) { $this->mPre = $msg; }
+
+ /**
+ * Add introductory text.
+ * @param $msg String complete text of message to display
+ */
+ function addPreText( $msg ) { $this->mPre .= $msg; }
+
+ /**
+ * Add header text, inside the form.
+ * @param $msg String complete text of message to display
+ */
+ function addHeaderText( $msg ) { $this->mHeader .= $msg; }
+
+ /**
+ * Add text to the end of the display.
+ * @param $msg String complete text of message to display
+ */
+ function addPostText( $msg ) { $this->mPost .= $msg; }
+
+ /**
+ * Add a hidden field to the output
+ * @param $name String field name
+ * @param $value String field value
+ */
+ public function addHiddenField( $name, $value ){
+ $this->mHiddenFields[ $name ] = $value;
+ }
+
+ public function addButton( $name, $value, $id=null, $attribs=null ){
+ $this->mButtons[] = compact( 'name', 'value', 'id', 'attribs' );
+ }
+
+ /**
+ * Display the form (sending to wgOut), with an appropriate error
+ * message or stack of messages, and any validation errors, etc.
+ * @param $submitResult Mixed output from HTMLForm::trySubmit()
+ */
+ function displayForm( $submitResult ) {
+ global $wgOut;
+
+ if ( $submitResult !== false ) {
+ $this->displayErrors( $submitResult );
+ }
+
+ $html = ''
+ . $this->mHeader
+ . $this->getBody()
+ . $this->getHiddenFields()
+ . $this->getButtons()
+ ;
+
+ $html = $this->wrapForm( $html );
+
+ $wgOut->addHTML( ''
+ . $this->mPre
+ . $html
+ . $this->mPost
+ );
+ }
+
+ /**
+ * Wrap the form innards in an actual <form> element
+ * @param $html String HTML contents to wrap.
+ * @return String wrapped HTML.
+ */
+ function wrapForm( $html ) {
+
+ # Include a <fieldset> wrapper for style, if requested.
+ if ( $this->mWrapperLegend !== false ){
+ $html = Xml::fieldset( $this->mWrapperLegend, $html );
+ }
+ # Use multipart/form-data
+ $encType = $this->mUseMultipart
+ ? 'multipart/form-data'
+ : 'application/x-www-form-urlencoded';
+ # Attributes
+ $attribs = array(
+ 'action' => $this->getTitle()->getFullURL(),
+ 'method' => 'post',
+ 'class' => 'visualClear',
+ 'enctype' => $encType,
+ );
+ if ( !empty( $this->mId ) )
+ $attribs['id'] = $this->mId;
+
+ return Html::rawElement( 'form', $attribs, $html );
+ }
+
+ /**
+ * Get the hidden fields that should go inside the form.
+ * @return String HTML.
+ */
+ function getHiddenFields() {
+ global $wgUser;
+ $html = '';
+
+ $html .= Html::hidden( 'wpEditToken', $wgUser->editToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
+ $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+
+ foreach( $this->mHiddenFields as $name => $value ){
+ $html .= Html::hidden( $name, $value ) . "\n";
+ }
+
+ return $html;
+ }
+
+ /**
+ * Get the submit and (potentially) reset buttons.
+ * @return String HTML.
+ */
+ function getButtons() {
+ $html = '';
+
+ $attribs = array();
+
+ if ( isset( $this->mSubmitID ) )
+ $attribs['id'] = $this->mSubmitID;
+ if ( isset( $this->mSubmitName ) )
+ $attribs['name'] = $this->mSubmitName;
+ if ( isset( $this->mSubmitTooltip ) ) {
+ global $wgUser;
+ $attribs += $wgUser->getSkin()->tooltipAndAccessKeyAttribs( $this->mSubmitTooltip );
+ }
+
+ $attribs['class'] = 'mw-htmlform-submit';
+
+ $html .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
+
+ if( $this->mShowReset ) {
+ $html .= Html::element(
+ 'input',
+ array(
+ 'type' => 'reset',
+ 'value' => wfMsg( 'htmlform-reset' )
+ )
+ ) . "\n";
+ }
+
+ foreach( $this->mButtons as $button ){
+ $attrs = array(
+ 'type' => 'submit',
+ 'name' => $button['name'],
+ 'value' => $button['value']
+ );
+ if ( $button['attribs'] )
+ $attrs += $button['attribs'];
+ if( isset( $button['id'] ) )
+ $attrs['id'] = $button['id'];
+ $html .= Html::element( 'input', $attrs );
+ }
+
+ return $html;
+ }
+
+ /**
+ * Get the whole body of the form.
+ */
+ function getBody() {
+ return $this->displaySection( $this->mFieldTree );
+ }
+
+ /**
+ * Format and display an error message stack.
+ * @param $errors Mixed String or Array of message keys
+ */
+ function displayErrors( $errors ) {
+ if ( is_array( $errors ) ) {
+ $errorstr = $this->formatErrors( $errors );
+ } else {
+ $errorstr = $errors;
+ }
+
+ $errorstr = Html::rawElement( 'div', array( 'class' => 'error' ), $errorstr );
+
+ global $wgOut;
+ $wgOut->addHTML( $errorstr );
+ }
+
+ /**
+ * Format a stack of error messages into a single HTML string
+ * @param $errors Array of message keys/values
+ * @return String HTML, a <ul> list of errors
+ */
+ static function formatErrors( $errors ) {
+ $errorstr = '';
+ foreach ( $errors as $error ) {
+ if( is_array( $error ) ) {
+ $msg = array_shift( $error );
+ } else {
+ $msg = $error;
+ $error = array();
+ }
+ $errorstr .= Html::rawElement(
+ 'li',
+ null,
+ wfMsgExt( $msg, array( 'parseinline' ), $error )
+ );
+ }
+
+ $errorstr = Html::rawElement( 'ul', array(), $errorstr );
+
+ return $errorstr;
+ }
+
+ /**
+ * Set the text for the submit button
+ * @param $t String plaintext.
+ */
+ function setSubmitText( $t ) {
+ $this->mSubmitText = $t;
+ }
+
+ /**
+ * Get the text for the submit button, either customised or a default.
+ * @return unknown_type
+ */
+ function getSubmitText() {
+ return $this->mSubmitText
+ ? $this->mSubmitText
+ : wfMsg( 'htmlform-submit' );
+ }
+
+ public function setSubmitName( $name ) {
+ $this->mSubmitName = $name;
+ }
+
+ public function setSubmitTooltip( $name ) {
+ $this->mSubmitTooltip = $name;
+ }
+
+
+ /**
+ * Set the id for the submit button.
+ * @param $t String. FIXME: Integrity is *not* validated
+ */
+ function setSubmitID( $t ) {
+ $this->mSubmitID = $t;
+ }
+
+ public function setId( $id ) {
+ $this->mId = $id;
+ }
+ /**
+ * Prompt the whole form to be wrapped in a <fieldset>, with
+ * this text as its <legend> element.
+ * @param $legend String HTML to go inside the <legend> element.
+ * Will be escaped
+ */
+ public function setWrapperLegend( $legend ){ $this->mWrapperLegend = $legend; }
+
+ /**
+ * Set the prefix for various default messages
+ * TODO: currently only used for the <fieldset> legend on forms
+ * with multiple sections; should be used elsewhre?
+ * @param $p String
+ */
+ function setMessagePrefix( $p ) {
+ $this->mMessagePrefix = $p;
+ }
+
+ /**
+ * Set the title for form submission
+ * @param $t Title of page the form is on/should be posted to
+ */
+ function setTitle( $t ) {
+ $this->mTitle = $t;
+ }
+
+ /**
+ * Get the title
+ * @return Title
+ */
+ function getTitle() {
+ return $this->mTitle;
+ }
+
+ /**
+ * TODO: Document
+ * @param $fields
+ */
+ function displaySection( $fields, $sectionName = '' ) {
+ $tableHtml = '';
+ $subsectionHtml = '';
+ $hasLeftColumn = false;
+
+ foreach( $fields as $key => $value ) {
+ if ( is_object( $value ) ) {
+ $v = empty( $value->mParams['nodata'] )
+ ? $this->mFieldData[$key]
+ : $value->getDefault();
+ $tableHtml .= $value->getTableRow( $v );
+
+ if( $value->getLabel() != '&nbsp;' )
+ $hasLeftColumn = true;
+ } elseif ( is_array( $value ) ) {
+ $section = $this->displaySection( $value, $key );
+ $legend = wfMsg( "{$this->mMessagePrefix}-$key" );
+ $subsectionHtml .= Xml::fieldset( $legend, $section ) . "\n";
+ }
+ }
+
+ $classes = array();
+ if( !$hasLeftColumn ) // Avoid strange spacing when no labels exist
+ $classes[] = 'mw-htmlform-nolabel';
+ $attribs = array(
+ 'class' => implode( ' ', $classes ),
+ );
+ if ( $sectionName )
+ $attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
+
+ $tableHtml = Html::rawElement( 'table', $attribs,
+ Html::rawElement( 'tbody', array(), "\n$tableHtml\n" ) ) . "\n";
+
+ return $subsectionHtml . "\n" . $tableHtml;
+ }
+
+ /**
+ * Construct the form fields from the Descriptor array
+ */
+ function loadData() {
+ global $wgRequest;
+
+ $fieldData = array();
+
+ foreach( $this->mFlatFields as $fieldname => $field ) {
+ if ( !empty( $field->mParams['nodata'] ) ) continue;
+ if ( !empty( $field->mParams['disabled'] ) ) {
+ $fieldData[$fieldname] = $field->getDefault();
+ } else {
+ $fieldData[$fieldname] = $field->loadDataFromRequest( $wgRequest );
+ }
+ }
+
+ # Filter data.
+ foreach( $fieldData as $name => &$value ) {
+ $field = $this->mFlatFields[$name];
+ $value = $field->filter( $value, $this->mFlatFields );
+ }
+
+ $this->mFieldData = $fieldData;
+ }
+
+ /**
+ * Stop a reset button being shown for this form
+ * @param $suppressReset Bool set to false to re-enable the
+ * button again
+ */
+ function suppressReset( $suppressReset = true ) {
+ $this->mShowReset = !$suppressReset;
+ }
+
+ /**
+ * Overload this if you want to apply special filtration routines
+ * to the form as a whole, after it's submitted but before it's
+ * processed.
+ * @param $data
+ * @return unknown_type
+ */
+ function filterDataForSubmit( $data ) {
+ return $data;
+ }
+}
+
+/**
+ * The parent class to generate form fields. Any field type should
+ * be a subclass of this.
+ */
+abstract class HTMLFormField {
+
+ protected $mValidationCallback;
+ protected $mFilterCallback;
+ protected $mName;
+ public $mParams;
+ protected $mLabel; # String label. Set on construction
+ protected $mID;
+ protected $mDefault;
+ public $mParent;
+
+ /**
+ * This function must be implemented to return the HTML to generate
+ * the input object itself. It should not implement the surrounding
+ * table cells/rows, or labels/help messages.
+ * @param $value String the value to set the input to; eg a default
+ * text for a text input.
+ * @return String valid HTML.
+ */
+ abstract function getInputHTML( $value );
+
+ /**
+ * Override this function to add specific validation checks on the
+ * field input. Don't forget to call parent::validate() to ensure
+ * that the user-defined callback mValidationCallback is still run
+ * @param $value String the value the field was submitted with
+ * @param $alldata $all the data collected from the form
+ * @return Mixed Bool true on success, or String error to display.
+ */
+ function validate( $value, $alldata ) {
+ if ( isset( $this->mValidationCallback ) ) {
+ return call_user_func( $this->mValidationCallback, $value, $alldata );
+ }
+
+ return true;
+ }
+
+ function filter( $value, $alldata ) {
+ if( isset( $this->mFilterCallback ) ) {
+ $value = call_user_func( $this->mFilterCallback, $value, $alldata );
+ }
+
+ return $value;
+ }
+
+ /**
+ * Should this field have a label, or is there no input element with the
+ * appropriate id for the label to point to?
+ *
+ * @return bool True to output a label, false to suppress
+ */
+ protected function needsLabel() {
+ return true;
+ }
+
+ /**
+ * Get the value that this input has been set to from a posted form,
+ * or the input's default value if it has not been set.
+ * @param $request WebRequest
+ * @return String the value
+ */
+ function loadDataFromRequest( $request ) {
+ if( $request->getCheck( $this->mName ) ) {
+ return $request->getText( $this->mName );
+ } else {
+ return $this->getDefault();
+ }
+ }
+
+ /**
+ * Initialise the object
+ * @param $params Associative Array. See HTMLForm doc for syntax.
+ */
+ function __construct( $params ) {
+ $this->mParams = $params;
+
+ # Generate the label from a message, if possible
+ if( isset( $params['label-message'] ) ) {
+ $msgInfo = $params['label-message'];
+
+ if ( is_array( $msgInfo ) ) {
+ $msg = array_shift( $msgInfo );
+ } else {
+ $msg = $msgInfo;
+ $msgInfo = array();
+ }
+
+ $this->mLabel = wfMsgExt( $msg, 'parseinline', $msgInfo );
+ } elseif ( isset( $params['label'] ) ) {
+ $this->mLabel = $params['label'];
+ }
+
+ if ( isset( $params['name'] ) ) {
+ $name = $params['name'];
+ $validName = Sanitizer::escapeId( $name );
+ if( $name != $validName ) {
+ throw new MWException("Invalid name '$name' passed to " . __METHOD__ );
+ }
+ $this->mName = 'wp'.$name;
+ $this->mID = 'mw-input-'.$name;
+ }
+
+ if ( isset( $params['default'] ) ) {
+ $this->mDefault = $params['default'];
+ }
+
+ if ( isset( $params['id'] ) ) {
+ $id = $params['id'];
+ $validId = Sanitizer::escapeId( $id );
+ if( $id != $validId ) {
+ throw new MWException("Invalid id '$id' passed to " . __METHOD__ );
+ }
+ $this->mID = $id;
+ }
+
+ if ( isset( $params['validation-callback'] ) ) {
+ $this->mValidationCallback = $params['validation-callback'];
+ }
+
+ if ( isset( $params['filter-callback'] ) ) {
+ $this->mFilterCallback = $params['filter-callback'];
+ }
+ }
+
+ /**
+ * Get the complete table row for the input, including help text,
+ * labels, and whatever.
+ * @param $value String the value to set the input to.
+ * @return String complete HTML table row.
+ */
+ function getTableRow( $value ) {
+ # Check for invalid data.
+ global $wgRequest;
+
+ $errors = $this->validate( $value, $this->mParent->mFieldData );
+ if ( $errors === true || !$wgRequest->wasPosted() ) {
+ $errors = '';
+ } else {
+ $errors = Html::rawElement( 'span', array( 'class' => 'error' ), $errors );
+ }
+
+ $html = $this->getLabelHtml();
+ $html .= Html::rawElement( 'td', array( 'class' => 'mw-input' ),
+ $this->getInputHTML( $value ) ."\n$errors" );
+
+ $fieldType = get_class( $this );
+
+ $html = Html::rawElement( 'tr', array( 'class' => "mw-htmlform-field-$fieldType" ),
+ $html ) . "\n";
+
+ $helptext = null;
+ if ( isset( $this->mParams['help-message'] ) ) {
+ $msg = $this->mParams['help-message'];
+ $helptext = wfMsgExt( $msg, 'parseinline' );
+ if ( wfEmptyMsg( $msg, $helptext ) ) {
+ # Never mind
+ $helptext = null;
+ }
+ } elseif ( isset( $this->mParams['help'] ) ) {
+ $helptext = $this->mParams['help'];
+ }
+
+ if ( !is_null( $helptext ) ) {
+ $row = Html::rawElement( 'td', array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
+ $helptext );
+ $row = Html::rawElement( 'tr', array(), $row );
+ $html .= "$row\n";
+ }
+
+ return $html;
+ }
+
+ function getLabel() {
+ return $this->mLabel;
+ }
+ function getLabelHtml() {
+ # Don't output a for= attribute for labels with no associated input.
+ # Kind of hacky here, possibly we don't want these to be <label>s at all.
+ $for = array();
+ if ( $this->needsLabel() ) {
+ $for['for'] = $this->mID;
+ }
+ return Html::rawElement( 'td', array( 'class' => 'mw-label' ),
+ Html::rawElement( 'label', $for, $this->getLabel() )
+ );
+ }
+
+ function getDefault() {
+ if ( isset( $this->mDefault ) ) {
+ return $this->mDefault;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the attributes required for the tooltip and accesskey.
+ *
+ * @return array Attributes
+ */
+ public function getTooltipAndAccessKey() {
+ if ( empty( $this->mParams['tooltip'] ) )
+ return array();
+
+ global $wgUser;
+ return $wgUser->getSkin()->tooltipAndAccessKeyAttribs();
+ }
+
+ /**
+ * flatten an array of options to a single array, for instance,
+ * a set of <options> inside <optgroups>.
+ * @param $options Associative Array with values either Strings
+ * or Arrays
+ * @return Array flattened input
+ */
+ public static function flattenOptions( $options ) {
+ $flatOpts = array();
+
+ foreach( $options as $key => $value ) {
+ if ( is_array( $value ) ) {
+ $flatOpts = array_merge( $flatOpts, self::flattenOptions( $value ) );
+ } else {
+ $flatOpts[] = $value;
+ }
+ }
+
+ return $flatOpts;
+ }
+
+}
+
+class HTMLTextField extends HTMLFormField {
+
+ function getSize() {
+ return isset( $this->mParams['size'] )
+ ? $this->mParams['size']
+ : 45;
+ }
+
+ function getInputHTML( $value ) {
+ $attribs = array(
+ 'id' => $this->mID,
+ 'name' => $this->mName,
+ 'size' => $this->getSize(),
+ 'value' => $value,
+ ) + $this->getTooltipAndAccessKey();
+
+ if ( isset( $this->mParams['maxlength'] ) ) {
+ $attribs['maxlength'] = $this->mParams['maxlength'];
+ }
+
+ if ( !empty( $this->mParams['disabled'] ) ) {
+ $attribs['disabled'] = 'disabled';
+ }
+
+ # TODO: Enforce pattern, step, required, readonly on the server side as
+ # well
+ foreach ( array( 'min', 'max', 'pattern', 'title', 'step',
+ 'placeholder' ) as $param ) {
+ if ( isset( $this->mParams[$param] ) ) {
+ $attribs[$param] = $this->mParams[$param];
+ }
+ }
+ foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as
+ $param ) {
+ if ( isset( $this->mParams[$param] ) ) {
+ $attribs[$param] = '';
+ }
+ }
+
+ # Implement tiny differences between some field variants
+ # here, rather than creating a new class for each one which
+ # is essentially just a clone of this one.
+ if ( isset( $this->mParams['type'] ) ) {
+ switch ( $this->mParams['type'] ) {
+ case 'email':
+ $attribs['type'] = 'email';
+ break;
+ case 'int':
+ $attribs['type'] = 'number';
+ break;
+ case 'float':
+ $attribs['type'] = 'number';
+ $attribs['step'] = 'any';
+ break;
+ # Pass through
+ case 'password':
+ case 'file':
+ $attribs['type'] = $this->mParams['type'];
+ break;
+ }
+ }
+
+ return Html::element( 'input', $attribs );
+ }
+}
+class HTMLTextAreaField extends HTMLFormField {
+
+ function getCols() {
+ return isset( $this->mParams['cols'] )
+ ? $this->mParams['cols']
+ : 80;
+ }
+ function getRows() {
+ return isset( $this->mParams['rows'] )
+ ? $this->mParams['rows']
+ : 25;
+ }
+
+ function getInputHTML( $value ) {
+ $attribs = array(
+ 'id' => $this->mID,
+ 'name' => $this->mName,
+ 'cols' => $this->getCols(),
+ 'rows' => $this->getRows(),
+ ) + $this->getTooltipAndAccessKey();
+
+
+ if ( !empty( $this->mParams['disabled'] ) ) {
+ $attribs['disabled'] = 'disabled';
+ }
+ if ( !empty( $this->mParams['readonly'] ) ) {
+ $attribs['readonly'] = 'readonly';
+ }
+
+ foreach ( array( 'required', 'autofocus' ) as $param ) {
+ if ( isset( $this->mParams[$param] ) ) {
+ $attribs[$param] = '';
+ }
+ }
+
+ return Html::element( 'textarea', $attribs, $value );
+ }
+}
+
+/**
+ * A field that will contain a numeric value
+ */
+class HTMLFloatField extends HTMLTextField {
+
+ function getSize() {
+ return isset( $this->mParams['size'] )
+ ? $this->mParams['size']
+ : 20;
+ }
+
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+
+ if ( $p !== true ) return $p;
+
+ if ( floatval( $value ) != $value ) {
+ return wfMsgExt( 'htmlform-float-invalid', 'parse' );
+ }
+
+ $in_range = true;
+
+ # The "int" part of these message names is rather confusing.
+ # They make equal sense for all numbers.
+ if ( isset( $this->mParams['min'] ) ) {
+ $min = $this->mParams['min'];
+ if ( $min > $value )
+ return wfMsgExt( 'htmlform-int-toolow', 'parse', array( $min ) );
+ }
+
+ if ( isset( $this->mParams['max'] ) ) {
+ $max = $this->mParams['max'];
+ if( $max < $value )
+ return wfMsgExt( 'htmlform-int-toohigh', 'parse', array( $max ) );
+ }
+
+ return true;
+ }
+}
+
+/**
+ * A field that must contain a number
+ */
+class HTMLIntField extends HTMLFloatField {
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+
+ if ( $p !== true ) return $p;
+
+ if ( intval( $value ) != $value ) {
+ return wfMsgExt( 'htmlform-int-invalid', 'parse' );
+ }
+
+ return true;
+ }
+}
+
+/**
+ * A checkbox field
+ */
+class HTMLCheckField extends HTMLFormField {
+ function getInputHTML( $value ) {
+ if ( !empty( $this->mParams['invert'] ) )
+ $value = !$value;
+
+ $attr = $this->getTooltipAndAccessKey();
+ $attr['id'] = $this->mID;
+ if( !empty( $this->mParams['disabled'] ) ) {
+ $attr['disabled'] = 'disabled';
+ }
+
+ return Xml::check( $this->mName, $value, $attr ) . '&nbsp;' .
+ Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
+ }
+
+ /**
+ * For a checkbox, the label goes on the right hand side, and is
+ * added in getInputHTML(), rather than HTMLFormField::getRow()
+ */
+ function getLabel() {
+ return '&nbsp;';
+ }
+
+ function loadDataFromRequest( $request ) {
+ $invert = false;
+ if ( isset( $this->mParams['invert'] ) && $this->mParams['invert'] ) {
+ $invert = true;
+ }
+
+ // GetCheck won't work like we want for checks.
+ if( $request->getCheck( 'wpEditToken' ) ) {
+ // XOR has the following truth table, which is what we want
+ // INVERT VALUE | OUTPUT
+ // true true | false
+ // false true | true
+ // false false | false
+ // true false | true
+ return $request->getBool( $this->mName ) xor $invert;
+ } else {
+ return $this->getDefault();
+ }
+ }
+}
+
+/**
+ * A select dropdown field. Basically a wrapper for Xmlselect class
+ */
+class HTMLSelectField extends HTMLFormField {
+
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+ if( $p !== true ) return $p;
+
+ $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+ if ( in_array( $value, $validOptions ) )
+ return true;
+ else
+ return wfMsgExt( 'htmlform-select-badoption', 'parseinline' );
+ }
+
+ function getInputHTML( $value ) {
+ $select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
+
+ # If one of the options' 'name' is int(0), it is automatically selected.
+ # because PHP sucks and things int(0) == 'some string'.
+ # Working around this by forcing all of them to strings.
+ $options = array_map( 'strval', $this->mParams['options'] );
+
+ if( !empty( $this->mParams['disabled'] ) ) {
+ $select->setAttribute( 'disabled', 'disabled' );
+ }
+
+ $select->addOptions( $options );
+
+ return $select->getHTML();
+ }
+}
+
+/**
+ * Select dropdown field, with an additional "other" textbox.
+ */
+class HTMLSelectOrOtherField extends HTMLTextField {
+ static $jsAdded = false;
+
+ function __construct( $params ) {
+ if( !in_array( 'other', $params['options'], true ) ) {
+ $params['options'][wfMsg( 'htmlform-selectorother-other' )] = 'other';
+ }
+
+ parent::__construct( $params );
+ }
+
+ static function forceToStringRecursive( $array ) {
+ if ( is_array($array) ) {
+ return array_map( array( __CLASS__, 'forceToStringRecursive' ), $array);
+ } else {
+ return strval($array);
+ }
+ }
+
+ function getInputHTML( $value ) {
+ $valInSelect = false;
+
+ if( $value !== false )
+ $valInSelect = in_array( $value,
+ HTMLFormField::flattenOptions( $this->mParams['options'] ) );
+
+ $selected = $valInSelect ? $value : 'other';
+
+ $opts = self::forceToStringRecursive( $this->mParams['options'] );
+
+ $select = new XmlSelect( $this->mName, $this->mID, $selected );
+ $select->addOptions( $opts );
+
+ $select->setAttribute( 'class', 'mw-htmlform-select-or-other' );
+
+ $tbAttribs = array( 'id' => $this->mID . '-other', 'size' => $this->getSize() );
+ if( !empty( $this->mParams['disabled'] ) ) {
+ $select->setAttribute( 'disabled', 'disabled' );
+ $tbAttribs['disabled'] = 'disabled';
+ }
+
+ $select = $select->getHTML();
+
+ if ( isset( $this->mParams['maxlength'] ) ) {
+ $tbAttribs['maxlength'] = $this->mParams['maxlength'];
+ }
+
+ $textbox = Html::input( $this->mName . '-other',
+ $valInSelect ? '' : $value,
+ 'text',
+ $tbAttribs );
+
+ return "$select<br />\n$textbox";
+ }
+
+ function loadDataFromRequest( $request ) {
+ if( $request->getCheck( $this->mName ) ) {
+ $val = $request->getText( $this->mName );
+
+ if( $val == 'other' ) {
+ $val = $request->getText( $this->mName . '-other' );
+ }
+
+ return $val;
+ } else {
+ return $this->getDefault();
+ }
+ }
+}
+
+/**
+ * Multi-select field
+ */
+class HTMLMultiSelectField extends HTMLFormField {
+
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+ if( $p !== true ) return $p;
+
+ if( !is_array( $value ) ) return false;
+
+ # If all options are valid, array_intersect of the valid options
+ # and the provided options will return the provided options.
+ $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+ $validValues = array_intersect( $value, $validOptions );
+ if ( count( $validValues ) == count( $value ) )
+ return true;
+ else
+ return wfMsgExt( 'htmlform-select-badoption', 'parseinline' );
+ }
+
+ function getInputHTML( $value ) {
+ $html = $this->formatOptions( $this->mParams['options'], $value );
+
+ return $html;
+ }
+
+ function formatOptions( $options, $value ) {
+ $html = '';
+
+ $attribs = array();
+ if ( !empty( $this->mParams['disabled'] ) ) {
+ $attribs['disabled'] = 'disabled';
+ }
+
+ foreach( $options as $label => $info ) {
+ if( is_array( $info ) ) {
+ $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
+ $html .= $this->formatOptions( $info, $value );
+ } else {
+ $thisAttribs = array( 'id' => $this->mID . "-$info", 'value' => $info );
+
+ $checkbox = Xml::check( $this->mName . '[]', in_array( $info, $value ),
+ $attribs + $thisAttribs );
+ $checkbox .= '&nbsp;' . Html::rawElement( 'label', array( 'for' => $this->mID . "-$info" ), $label );
+
+ $html .= $checkbox . '<br />';
+ }
+ }
+
+ return $html;
+ }
+
+ function loadDataFromRequest( $request ) {
+ # won't work with getCheck
+ if( $request->getCheck( 'wpEditToken' ) ) {
+ $arr = $request->getArray( $this->mName );
+
+ if( !$arr )
+ $arr = array();
+
+ return $arr;
+ } else {
+ return $this->getDefault();
+ }
+ }
+
+ function getDefault() {
+ if ( isset( $this->mDefault ) ) {
+ return $this->mDefault;
+ } else {
+ return array();
+ }
+ }
+
+ protected function needsLabel() {
+ return false;
+ }
+}
+
+/**
+ * Radio checkbox fields.
+ */
+class HTMLRadioField extends HTMLFormField {
+ function validate( $value, $alldata ) {
+ $p = parent::validate( $value, $alldata );
+ if( $p !== true ) return $p;
+
+ if( !is_string( $value ) && !is_int( $value ) )
+ return false;
+
+ $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+ if ( in_array( $value, $validOptions ) )
+ return true;
+ else
+ return wfMsgExt( 'htmlform-select-badoption', 'parseinline' );
+ }
+
+ /**
+ * This returns a block of all the radio options, in one cell.
+ * @see includes/HTMLFormField#getInputHTML()
+ */
+ function getInputHTML( $value ) {
+ $html = $this->formatOptions( $this->mParams['options'], $value );
+
+ return $html;
+ }
+
+ function formatOptions( $options, $value ) {
+ $html = '';
+
+ $attribs = array();
+ if ( !empty( $this->mParams['disabled'] ) ) {
+ $attribs['disabled'] = 'disabled';
+ }
+
+ # TODO: should this produce an unordered list perhaps?
+ foreach( $options as $label => $info ) {
+ if( is_array( $info ) ) {
+ $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
+ $html .= $this->formatOptions( $info, $value );
+ } else {
+ $id = Sanitizer::escapeId( $this->mID . "-$info" );
+ $html .= Xml::radio( $this->mName, $info, $info == $value,
+ $attribs + array( 'id' => $id ) );
+ $html .= '&nbsp;' .
+ Html::rawElement( 'label', array( 'for' => $id ), $label );
+
+ $html .= "<br />\n";
+ }
+ }
+
+ return $html;
+ }
+
+ protected function needsLabel() {
+ return false;
+ }
+}
+
+/**
+ * An information field (text blob), not a proper input.
+ */
+class HTMLInfoField extends HTMLFormField {
+ function __construct( $info ) {
+ $info['nodata'] = true;
+
+ parent::__construct( $info );
+ }
+
+ function getInputHTML( $value ) {
+ return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
+ }
+
+ function getTableRow( $value ) {
+ if ( !empty( $this->mParams['rawrow'] ) ) {
+ return $value;
+ }
+
+ return parent::getTableRow( $value );
+ }
+
+ protected function needsLabel() {
+ return false;
+ }
+}
+
+class HTMLHiddenField extends HTMLFormField {
+
+ public function getTableRow( $value ){
+ $this->mParent->addHiddenField(
+ $this->mParams['name'],
+ $this->mParams['default']
+ );
+ return '';
+ }
+
+ public function getInputHTML( $value ){ return ''; }
+}
+
+class HTMLSubmitField extends HTMLFormField {
+
+ public function getTableRow( $value ){
+ $this->mParent->addButton(
+ $this->mParams['name'],
+ $this->mParams['default'],
+ isset($this->mParams['id']) ? $this->mParams['id'] : null,
+ $this->getTooltipAndAccessKey()
+ );
+ }
+
+ public function getInputHTML( $value ){ return ''; }
+}
+
+class HTMLEditTools extends HTMLFormField {
+ public function getInputHTML( $value ) {
+ return '';
+ }
+ public function getTableRow( $value ) {
+ return "<tr><td></td><td class=\"mw-input\">"
+ . '<div class="mw-editTools">'
+ . wfMsgExt( empty( $this->mParams['message'] )
+ ? 'edittools' : $this->mParams['message'],
+ array( 'parse', 'content' ) )
+ . "</div></td></tr>\n";
+ }
+}
diff --git a/includes/HistoryPage.php b/includes/HistoryPage.php
new file mode 100644
index 00000000..e515d3dd
--- /dev/null
+++ b/includes/HistoryPage.php
@@ -0,0 +1,730 @@
+<?php
+/**
+ * Page history
+ *
+ * Split off from Article.php and Skin.php, 2003-12-22
+ * @file
+ */
+
+/**
+ * This class handles printing the history page for an article. In order to
+ * be efficient, it uses timestamps rather than offsets for paging, to avoid
+ * costly LIMIT,offset queries.
+ *
+ * Construct it by passing in an Article, and call $h->history() to print the
+ * history.
+ *
+ */
+class HistoryPage {
+ const DIR_PREV = 0;
+ const DIR_NEXT = 1;
+
+ var $article, $title, $skin;
+
+ /**
+ * Construct a new HistoryPage.
+ *
+ * @param $article Article
+ */
+ function __construct( $article ) {
+ global $wgUser;
+ $this->article = $article;
+ $this->title = $article->getTitle();
+ $this->skin = $wgUser->getSkin();
+ $this->preCacheMessages();
+ }
+
+ function getArticle() {
+ return $this->article;
+ }
+
+ function getTitle() {
+ return $this->title;
+ }
+
+ /**
+ * As we use the same small set of messages in various methods and that
+ * they are called often, we call them once and save them in $this->message
+ */
+ function preCacheMessages() {
+ // Precache various messages
+ if( !isset( $this->message ) ) {
+ $msgs = array( 'cur', 'last', 'pipe-separator' );
+ foreach( $msgs as $msg ) {
+ $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities') );
+ }
+ }
+ }
+
+ /**
+ * Print the history page for an article.
+ * @return nothing
+ */
+ function history() {
+ global $wgOut, $wgRequest, $wgScript;
+
+ /*
+ * Allow client caching.
+ */
+ if( $wgOut->checkLastModified( $this->article->getTouched() ) )
+ return; // Client cache fresh and headers sent, nothing more to do.
+
+ wfProfileIn( __METHOD__ );
+
+ /*
+ * Setup page variables.
+ */
+ $wgOut->setPageTitle( wfMsg( 'history-title', $this->title->getPrefixedText() ) );
+ $wgOut->setPageTitleActionText( wfMsg( 'history_short' ) );
+ $wgOut->setArticleFlag( false );
+ $wgOut->setArticleRelated( true );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
+ $wgOut->setSyndicated( true );
+ $wgOut->setFeedAppendQuery( 'action=history' );
+ $wgOut->addScriptFile( 'history.js' );
+
+ $logPage = SpecialPage::getTitleFor( 'Log' );
+ $logLink = $this->skin->link(
+ $logPage,
+ wfMsgHtml( 'viewpagelogs' ),
+ array(),
+ array( 'page' => $this->title->getPrefixedText() ),
+ array( 'known', 'noclasses' )
+ );
+ $wgOut->setSubtitle( $logLink );
+
+ $feedType = $wgRequest->getVal( 'feed' );
+ if( $feedType ) {
+ wfProfileOut( __METHOD__ );
+ return $this->feed( $feedType );
+ }
+
+ /*
+ * Fail if article doesn't exist.
+ */
+ if( !$this->title->exists() ) {
+ $wgOut->addWikiMsg( 'nohistory' );
+ # show deletion/move log if there is an entry
+ LogEventsList::showLogExtract(
+ $wgOut,
+ array( 'delete', 'move' ),
+ $this->title->getPrefixedText(),
+ '',
+ array( 'lim' => 10,
+ 'conds' => array( "log_action != 'revision'" ),
+ 'showIfEmpty' => false,
+ 'msgKey' => array( 'moveddeleted-notice' )
+ )
+ );
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ /**
+ * Add date selector to quickly get to a certain time
+ */
+ $year = $wgRequest->getInt( 'year' );
+ $month = $wgRequest->getInt( 'month' );
+ $tagFilter = $wgRequest->getVal( 'tagfilter' );
+ $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
+ /**
+ * Option to show only revisions that have been (partially) hidden via RevisionDelete
+ */
+ if ( $wgRequest->getBool( 'deleted' ) ) {
+ $conds = array("rev_deleted != '0'");
+ } else {
+ $conds = array();
+ }
+ $checkDeleted = Xml::checkLabel( wfMsg( 'history-show-deleted' ),
+ 'deleted', 'mw-show-deleted-only', $wgRequest->getBool( 'deleted' ) ) . "\n";
+
+ $action = htmlspecialchars( $wgScript );
+ $wgOut->addHTML(
+ "<form action=\"$action\" method=\"get\" id=\"mw-history-searchform\">" .
+ Xml::fieldset(
+ wfMsg( 'history-fieldset-title' ),
+ false,
+ array( 'id' => 'mw-history-search' )
+ ) .
+ Xml::hidden( 'title', $this->title->getPrefixedDBKey() ) . "\n" .
+ Xml::hidden( 'action', 'history' ) . "\n" .
+ Xml::dateMenu( $year, $month ) . '&nbsp;' .
+ ( $tagSelector ? ( implode( '&nbsp;', $tagSelector ) . '&nbsp;' ) : '' ) .
+ $checkDeleted .
+ Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
+ '</fieldset></form>'
+ );
+
+ wfRunHooks( 'PageHistoryBeforeList', array( &$this->article ) );
+
+ /**
+ * Do the list
+ */
+ $pager = new HistoryPager( $this, $year, $month, $tagFilter, $conds );
+ $wgOut->addHTML(
+ $pager->getNavigationBar() .
+ $pager->getBody() .
+ $pager->getNavigationBar()
+ );
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Fetch an array of revisions, specified by a given limit, offset and
+ * direction. This is now only used by the feeds. It was previously
+ * used by the main UI but that's now handled by the pager.
+ *
+ * @param $limit Integer: the limit number of revisions to get
+ * @param $offset Integer
+ * @param $direction Integer: either HistoryPage::DIR_PREV or HistoryPage::DIR_NEXT
+ * @return ResultWrapper
+ */
+ function fetchRevisions( $limit, $offset, $direction ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ if( $direction == HistoryPage::DIR_PREV )
+ list($dirs, $oper) = array("ASC", ">=");
+ else /* $direction == HistoryPage::DIR_NEXT */
+ list($dirs, $oper) = array("DESC", "<=");
+
+ if( $offset )
+ $offsets = array("rev_timestamp $oper '$offset'");
+ else
+ $offsets = array();
+
+ $page_id = $this->title->getArticleID();
+
+ return $dbr->select( 'revision',
+ Revision::selectFields(),
+ array_merge(array("rev_page=$page_id"), $offsets),
+ __METHOD__,
+ array( 'ORDER BY' => "rev_timestamp $dirs",
+ 'USE INDEX' => 'page_timestamp', 'LIMIT' => $limit)
+ );
+ }
+
+ /**
+ * Output a subscription feed listing recent edits to this page.
+ *
+ * @param $type String: feed type
+ */
+ function feed( $type ) {
+ global $wgFeedClasses, $wgRequest, $wgFeedLimit;
+ if( !FeedUtils::checkFeedOutput($type) ) {
+ return;
+ }
+
+ $feed = new $wgFeedClasses[$type](
+ $this->title->getPrefixedText() . ' - ' .
+ wfMsgForContent( 'history-feed-title' ),
+ wfMsgForContent( 'history-feed-description' ),
+ $this->title->getFullUrl( 'action=history' )
+ );
+
+ // Get a limit on number of feed entries. Provide a sane default
+ // of 10 if none is defined (but limit to $wgFeedLimit max)
+ $limit = $wgRequest->getInt( 'limit', 10 );
+ if( $limit > $wgFeedLimit || $limit < 1 ) {
+ $limit = 10;
+ }
+ $items = $this->fetchRevisions($limit, 0, HistoryPage::DIR_NEXT);
+
+ $feed->outHeader();
+ if( $items ) {
+ foreach( $items as $row ) {
+ $feed->outItem( $this->feedItem( $row ) );
+ }
+ } else {
+ $feed->outItem( $this->feedEmpty() );
+ }
+ $feed->outFooter();
+ }
+
+ function feedEmpty() {
+ global $wgOut;
+ return new FeedItem(
+ wfMsgForContent( 'nohistory' ),
+ $wgOut->parse( wfMsgForContent( 'history-feed-empty' ) ),
+ $this->title->getFullUrl(),
+ wfTimestamp( TS_MW ),
+ '',
+ $this->title->getTalkPage()->getFullUrl()
+ );
+ }
+
+ /**
+ * Generate a FeedItem object from a given revision table row
+ * Borrows Recent Changes' feed generation functions for formatting;
+ * includes a diff to the previous revision (if any).
+ *
+ * @param $row Object: database row
+ * @return FeedItem
+ */
+ function feedItem( $row ) {
+ $rev = new Revision( $row );
+ $rev->setTitle( $this->title );
+ $text = FeedUtils::formatDiffRow(
+ $this->title,
+ $this->title->getPreviousRevisionID( $rev->getId() ),
+ $rev->getId(),
+ $rev->getTimestamp(),
+ $rev->getComment()
+ );
+ if( $rev->getComment() == '' ) {
+ global $wgContLang;
+ $title = wfMsgForContent( 'history-feed-item-nocomment',
+ $rev->getUserText(),
+ $wgContLang->timeanddate( $rev->getTimestamp() ),
+ $wgContLang->date( $rev->getTimestamp() ),
+ $wgContLang->time( $rev->getTimestamp() )
+ );
+ } else {
+ $title = $rev->getUserText() .
+ wfMsgForContent( 'colon-separator' ) .
+ FeedItem::stripComment( $rev->getComment() );
+ }
+ return new FeedItem(
+ $title,
+ $text,
+ $this->title->getFullUrl( 'diff=' . $rev->getId() . '&oldid=prev' ),
+ $rev->getTimestamp(),
+ $rev->getUserText(),
+ $this->title->getTalkPage()->getFullUrl()
+ );
+ }
+}
+
+/**
+ * @ingroup Pager
+ */
+class HistoryPager extends ReverseChronologicalPager {
+ public $lastRow = false, $counter, $historyPage, $title, $buttons, $conds;
+ protected $oldIdChecked;
+
+ function __construct( $historyPage, $year='', $month='', $tagFilter = '', $conds = array() ) {
+ parent::__construct();
+ $this->historyPage = $historyPage;
+ $this->title = $this->historyPage->title;
+ $this->tagFilter = $tagFilter;
+ $this->getDateCond( $year, $month );
+ $this->conds = $conds;
+ }
+
+ // For hook compatibility...
+ function getArticle() {
+ return $this->historyPage->getArticle();
+ }
+
+ function getSqlComment() {
+ if ( $this->conds ) {
+ return 'history page filtered'; // potentially slow, see CR r58153
+ } else {
+ return 'history page unfiltered';
+ }
+ }
+
+ function getQueryInfo() {
+ $queryInfo = array(
+ 'tables' => array('revision'),
+ 'fields' => Revision::selectFields(),
+ 'conds' => array_merge(
+ array( 'rev_page' => $this->historyPage->title->getArticleID() ),
+ $this->conds ),
+ 'options' => array( 'USE INDEX' => array('revision' => 'page_timestamp') ),
+ 'join_conds' => array( 'tag_summary' => array( 'LEFT JOIN', 'ts_rev_id=rev_id' ) ),
+ );
+ ChangeTags::modifyDisplayQuery(
+ $queryInfo['tables'],
+ $queryInfo['fields'],
+ $queryInfo['conds'],
+ $queryInfo['join_conds'],
+ $queryInfo['options'],
+ $this->tagFilter
+ );
+ wfRunHooks( 'PageHistoryPager::getQueryInfo', array( &$this, &$queryInfo ) );
+ return $queryInfo;
+ }
+
+ function getIndexField() {
+ return 'rev_timestamp';
+ }
+
+ function formatRow( $row ) {
+ if( $this->lastRow ) {
+ $latest = ($this->counter == 1 && $this->mIsFirst);
+ $firstInList = $this->counter == 1;
+ $s = $this->historyLine( $this->lastRow, $row, $this->counter++,
+ $this->title->getNotificationTimestamp(), $latest, $firstInList );
+ } else {
+ $s = '';
+ }
+ $this->lastRow = $row;
+ return $s;
+ }
+
+ /**
+ * Creates begin of history list with a submit button
+ *
+ * @return string HTML output
+ */
+ function getStartBody() {
+ global $wgScript, $wgUser, $wgOut, $wgContLang;
+ $this->lastRow = false;
+ $this->counter = 1;
+ $this->oldIdChecked = 0;
+
+ $wgOut->wrapWikiMsg( "<div class='mw-history-legend'>\n$1</div>", 'histlegend' );
+ $s = Xml::openElement( 'form', array( 'action' => $wgScript,
+ 'id' => 'mw-history-compare' ) ) . "\n";
+ $s .= Xml::hidden( 'title', $this->title->getPrefixedDbKey() ) . "\n";
+ $s .= Xml::hidden( 'action', 'historysubmit' ) . "\n";
+
+ $this->buttons = '<div>';
+ if( $wgUser->isAllowed('deleterevision') ) {
+ $float = $wgContLang->alignEnd();
+ # Note bug #20966, <button> is non-standard in IE<8
+ $this->buttons .= Xml::element( 'button',
+ array(
+ 'type' => 'submit',
+ 'name' => 'revisiondelete',
+ 'value' => '1',
+ 'style' => "float: $float;",
+ 'class' => 'mw-history-revisiondelete-button',
+ ),
+ wfMsg( 'showhideselectedversions' )
+ ) . "\n";
+ }
+ $this->buttons .= $this->submitButton( wfMsg( 'compareselectedversions'),
+ array(
+ 'class' => 'historysubmit',
+ 'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
+ 'title' => wfMsg( 'tooltip-compareselectedversions' ),
+ )
+ ) . "\n";
+ $this->buttons .= '</div>';
+ $s .= $this->buttons . '<ul id="pagehistory">' . "\n";
+ return $s;
+ }
+
+ function getEndBody() {
+ if( $this->lastRow ) {
+ $latest = $this->counter == 1 && $this->mIsFirst;
+ $firstInList = $this->counter == 1;
+ if( $this->mIsBackwards ) {
+ # Next row is unknown, but for UI reasons, probably exists if an offset has been specified
+ if( $this->mOffset == '' ) {
+ $next = null;
+ } else {
+ $next = 'unknown';
+ }
+ } else {
+ # The next row is the past-the-end row
+ $next = $this->mPastTheEndRow;
+ }
+ $s = $this->historyLine( $this->lastRow, $next, $this->counter++,
+ $this->title->getNotificationTimestamp(), $latest, $firstInList );
+ } else {
+ $s = '';
+ }
+ $s .= "</ul>\n";
+ # Add second buttons only if there is more than one rev
+ if( $this->getNumRows() > 2 ) {
+ $s .= $this->buttons;
+ }
+ $s .= '</form>';
+ return $s;
+ }
+
+ /**
+ * Creates a submit button
+ *
+ * @param $message String: text of the submit button, will be escaped
+ * @param $attributes Array: attributes
+ * @return String: HTML output for the submit button
+ */
+ function submitButton( $message, $attributes = array() ) {
+ # Disable submit button if history has 1 revision only
+ if( $this->getNumRows() > 1 ) {
+ return Xml::submitButton( $message , $attributes );
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * Returns a row from the history printout.
+ *
+ * @todo document some more, and maybe clean up the code (some params redundant?)
+ *
+ * @param $row Object: the database row corresponding to the previous line.
+ * @param $next Mixed: the database row corresponding to the next line.
+ * @param $counter Integer: apparently a counter of what row number we're at, counted from the top row = 1.
+ * @param $notificationtimestamp
+ * @param $latest Boolean: whether this row corresponds to the page's latest revision.
+ * @param $firstInList Boolean: whether this row corresponds to the first displayed on this history page.
+ * @return String: HTML output for the row
+ */
+ function historyLine( $row, $next, $counter = '', $notificationtimestamp = false,
+ $latest = false, $firstInList = false )
+ {
+ global $wgUser, $wgLang;
+ $rev = new Revision( $row );
+ $rev->setTitle( $this->title );
+
+ $curlink = $this->curLink( $rev, $latest );
+ $lastlink = $this->lastLink( $rev, $next, $counter );
+ $diffButtons = $this->diffButtons( $rev, $firstInList, $counter );
+ $histLinks = Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-history-histlinks' ),
+ '(' . $curlink . $this->historyPage->message['pipe-separator'] . $lastlink . ') '
+ );
+ $s = $histLinks . $diffButtons;
+
+ $link = $this->revLink( $rev );
+ $classes = array();
+
+ $del = '';
+ // User can delete revisions...
+ if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // If revision was hidden from sysops, disable the checkbox
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
+ // Otherwise, enable the checkbox...
+ } else {
+ $del = Xml::check( 'showhiderevisions', false,
+ array( 'name' => 'ids['.$rev->getId().']' ) );
+ }
+ // User can only view deleted revisions...
+ } else if( $rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) {
+ // If revision was hidden from sysops, disable the link
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $cdel = $this->getSkin()->revDeleteLinkDisabled( false );
+ // Otherwise, show the link...
+ } else {
+ $query = array( 'type' => 'revision',
+ 'target' => $this->title->getPrefixedDbkey(), 'ids' => $rev->getId() );
+ $del .= $this->getSkin()->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), false );
+ }
+ }
+ if( $del ) $s .= " $del ";
+
+ $s .= " $link";
+ $s .= " <span class='history-user'>" .
+ $this->getSkin()->revUserTools( $rev, true ) . "</span>";
+
+ if( $rev->isMinor() ) {
+ $s .= ' ' . ChangesList::flag( 'minor' );
+ }
+
+ if( !is_null( $size = $rev->getSize() ) && !$rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $s .= ' ' . $this->getSkin()->formatRevisionSize( $size );
+ }
+
+ $s .= $this->getSkin()->revComment( $rev, false, true );
+
+ if( $notificationtimestamp && ($row->rev_timestamp >= $notificationtimestamp) ) {
+ $s .= ' <span class="updatedmarker">' . wfMsgHtml( 'updatedmarker' ) . '</span>';
+ }
+
+ $tools = array();
+
+ # Rollback and undo links
+ if( !is_null( $next ) && is_object( $next ) ) {
+ if( $latest && $this->title->userCan( 'rollback' ) && $this->title->userCan( 'edit' ) ) {
+ $tools[] = '<span class="mw-rollback-link">'.
+ $this->getSkin()->buildRollbackLink( $rev ).'</span>';
+ }
+
+ if( $this->title->quickUserCan( 'edit' )
+ && !$rev->isDeleted( Revision::DELETED_TEXT )
+ && !$next->rev_deleted & Revision::DELETED_TEXT )
+ {
+ # Create undo tooltip for the first (=latest) line only
+ $undoTooltip = $latest
+ ? array( 'title' => wfMsg( 'tooltip-undo' ) )
+ : array();
+ $undolink = $this->getSkin()->link(
+ $this->title,
+ wfMsgHtml( 'editundo' ),
+ $undoTooltip,
+ array(
+ 'action' => 'edit',
+ 'undoafter' => $next->rev_id,
+ 'undo' => $rev->getId()
+ ),
+ array( 'known', 'noclasses' )
+ );
+ $tools[] = "<span class=\"mw-history-undo\">{$undolink}</span>";
+ }
+ }
+
+ if( $tools ) {
+ $s .= ' (' . $wgLang->pipeList( $tools ) . ')';
+ }
+
+ # Tags
+ list($tagSummary, $newClasses) = ChangeTags::formatSummaryRow( $row->ts_tags, 'history' );
+ $classes = array_merge( $classes, $newClasses );
+ $s .= " $tagSummary";
+
+ wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s, &$classes ) );
+
+ $attribs = array();
+ if ( $classes ) {
+ $attribs['class'] = implode( ' ', $classes );
+ }
+
+ return Xml::tags( 'li', $attribs, $s ) . "\n";
+ }
+
+ /**
+ * Create a link to view this revision of the page
+ *
+ * @param $rev Revision
+ * @return String
+ */
+ function revLink( $rev ) {
+ global $wgLang;
+ $date = $wgLang->timeanddate( wfTimestamp(TS_MW, $rev->getTimestamp()), true );
+ $date = htmlspecialchars( $date );
+ if( !$rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $link = $this->getSkin()->link(
+ $this->title,
+ $date,
+ array(),
+ array( 'oldid' => $rev->getId() ),
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ $link = "<span class=\"history-deleted\">$date</span>";
+ }
+ return $link;
+ }
+
+ /**
+ * Create a diff-to-current link for this revision for this page
+ *
+ * @param $rev Revision
+ * @param $latest Boolean: this is the latest revision of the page?
+ * @return String
+ */
+ function curLink( $rev, $latest ) {
+ $cur = $this->historyPage->message['cur'];
+ if( $latest || !$rev->userCan( Revision::DELETED_TEXT ) ) {
+ return $cur;
+ } else {
+ return $this->getSkin()->link(
+ $this->title,
+ $cur,
+ array(),
+ array(
+ 'diff' => $this->title->getLatestRevID(),
+ 'oldid' => $rev->getId()
+ ),
+ array( 'known', 'noclasses' )
+ );
+ }
+ }
+
+ /**
+ * Create a diff-to-previous link for this revision for this page.
+ *
+ * @param $prevRev Revision: the previous revision
+ * @param $next Mixed: the newer revision
+ * @param $counter Integer: what row on the history list this is
+ * @return String
+ */
+ function lastLink( $prevRev, $next, $counter ) {
+ $last = $this->historyPage->message['last'];
+ # $next may either be a Row, null, or "unkown"
+ $nextRev = is_object($next) ? new Revision( $next ) : $next;
+ if( is_null($next) ) {
+ # Probably no next row
+ return $last;
+ } elseif( $next === 'unknown' ) {
+ # Next row probably exists but is unknown, use an oldid=prev link
+ return $this->getSkin()->link(
+ $this->title,
+ $last,
+ array(),
+ array(
+ 'diff' => $prevRev->getId(),
+ 'oldid' => 'prev'
+ ),
+ array( 'known', 'noclasses' )
+ );
+ } elseif( !$prevRev->userCan(Revision::DELETED_TEXT)
+ || !$nextRev->userCan(Revision::DELETED_TEXT) )
+ {
+ return $last;
+ } else {
+ return $this->getSkin()->link(
+ $this->title,
+ $last,
+ array(),
+ array(
+ 'diff' => $prevRev->getId(),
+ 'oldid' => $next->rev_id
+ ),
+ array( 'known', 'noclasses' )
+ );
+ }
+ }
+
+ /**
+ * Create radio buttons for page history
+ *
+ * @param $rev Revision object
+ * @param $firstInList Boolean: is this version the first one?
+ * @param $counter Integer: a counter of what row number we're at, counted from the top row = 1.
+ * @return String: HTML output for the radio buttons
+ */
+ function diffButtons( $rev, $firstInList, $counter ) {
+ if( $this->getNumRows() > 1 ) {
+ $id = $rev->getId();
+ $radio = array( 'type' => 'radio', 'value' => $id );
+ /** @todo: move title texts to javascript */
+ if( $firstInList ) {
+ $first = Xml::element( 'input',
+ array_merge( $radio, array(
+ 'style' => 'visibility:hidden',
+ 'name' => 'oldid',
+ 'id' => 'mw-oldid-null' ) )
+ );
+ $checkmark = array( 'checked' => 'checked' );
+ } else {
+ # Check visibility of old revisions
+ if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
+ $radio['disabled'] = 'disabled';
+ $checkmark = array(); // We will check the next possible one
+ } else if( $counter == 2 || !$this->oldIdChecked ) {
+ $checkmark = array( 'checked' => 'checked' );
+ $this->oldIdChecked = $id;
+ } else {
+ $checkmark = array();
+ }
+ $first = Xml::element( 'input',
+ array_merge( $radio, $checkmark, array(
+ 'name' => 'oldid',
+ 'id' => "mw-oldid-$id" ) ) );
+ $checkmark = array();
+ }
+ $second = Xml::element( 'input',
+ array_merge( $radio, $checkmark, array(
+ 'name' => 'diff',
+ 'id' => "mw-diff-$id" ) ) );
+ return $first . $second;
+ } else {
+ return '';
+ }
+ }
+}
+
+/**
+ * Backwards-compatibility aliases
+ */
+class PageHistory extends HistoryPage {}
+class PageHistoryPager extends HistoryPager {}
diff --git a/includes/Hooks.php b/includes/Hooks.php
index 046a149d..dec1c442 100644
--- a/includes/Hooks.php
+++ b/includes/Hooks.php
@@ -32,15 +32,16 @@ function wfRunHooks($event, $args = array()) {
global $wgHooks;
+ // Return quickly in the most common case
+ if ( !isset( $wgHooks[$event] ) ) {
+ return true;
+ }
+
if (!is_array($wgHooks)) {
throw new MWException("Global hooks array is not an array!\n");
return false;
}
- if (!array_key_exists($event, $wgHooks)) {
- return true;
- }
-
if (!is_array($wgHooks[$event])) {
throw new MWException("Hooks array for event '$event' is not an array!\n");
return false;
@@ -48,59 +49,74 @@ function wfRunHooks($event, $args = array()) {
foreach ($wgHooks[$event] as $index => $hook) {
- $object = NULL;
- $method = NULL;
- $func = NULL;
- $data = NULL;
+ $object = null;
+ $method = null;
+ $func = null;
+ $data = null;
$have_data = false;
+ $closure = false;
/* $hook can be: a function, an object, an array of $function and $data,
* an array of just a function, an array of object and method, or an
* array of object, method, and data.
*/
- if (is_array($hook)) {
- if (count($hook) < 1) {
+ if ( is_array( $hook ) ) {
+ if ( count( $hook ) < 1 ) {
throw new MWException("Empty array in hooks for " . $event . "\n");
- } else if (is_object($hook[0])) {
+ } else if ( is_object( $hook[0] ) ) {
$object = $wgHooks[$event][$index][0];
- if (count($hook) < 2) {
- $method = "on" . $event;
- } else {
- $method = $hook[1];
- if (count($hook) > 2) {
- $data = $hook[2];
+ if ( $object instanceof Closure ) {
+ $closure = true;
+ if ( count( $hook ) > 1 ) {
+ $data = $hook[1];
$have_data = true;
}
+ } else {
+ if ( count( $hook ) < 2 ) {
+ $method = "on" . $event;
+ } else {
+ $method = $hook[1];
+ if ( count( $hook ) > 2 ) {
+ $data = $hook[2];
+ $have_data = true;
+ }
+ }
}
- } else if (is_string($hook[0])) {
+ } else if ( is_string( $hook[0] ) ) {
$func = $hook[0];
- if (count($hook) > 1) {
+ if ( count( $hook ) > 1) {
$data = $hook[1];
$have_data = true;
}
} else {
- var_dump( $wgHooks );
- throw new MWException("Unknown datatype in hooks for " . $event . "\n");
+ throw new MWException( "Unknown datatype in hooks for " . $event . "\n" );
}
- } else if (is_string($hook)) { # functions look like strings, too
+ } else if ( is_string( $hook ) ) { # functions look like strings, too
$func = $hook;
- } else if (is_object($hook)) {
+ } else if ( is_object( $hook ) ) {
$object = $wgHooks[$event][$index];
- $method = "on" . $event;
+ if ( $object instanceof Closure ) {
+ $closure = true;
+ } else {
+ $method = "on" . $event;
+ }
} else {
- throw new MWException("Unknown datatype in hooks for " . $event . "\n");
+ throw new MWException( "Unknown datatype in hooks for " . $event . "\n" );
}
/* We put the first data element on, if needed. */
- if ($have_data) {
+ if ( $have_data ) {
$hook_args = array_merge(array($data), $args);
} else {
$hook_args = $args;
}
- if ( isset( $object ) ) {
+ if ( $closure ) {
+ $callback = $object;
+ $func = "hook-$event-closure";
+ } elseif ( isset( $object ) ) {
$func = get_class( $object ) . '::' . $method;
$callback = array( $object, $method );
} elseif ( false !== ( $pos = strpos( $func, '::' ) ) ) {
@@ -119,12 +135,14 @@ function wfRunHooks($event, $args = array()) {
/* String return is an error; false return means stop processing. */
- if (is_string($retval)) {
+ if ( is_string( $retval ) ) {
global $wgOut;
- $wgOut->showFatalError($retval);
+ $wgOut->showFatalError( $retval );
return false;
} elseif( $retval === null ) {
- if( is_array( $callback ) ) {
+ if ( $closure ) {
+ $prettyFunc = "$event closure";
+ } elseif( is_array( $callback ) ) {
if( is_object( $callback[0] ) ) {
$prettyClass = get_class( $callback[0] );
} else {
@@ -137,7 +155,7 @@ function wfRunHooks($event, $args = array()) {
throw new MWException( "Detected bug in an extension! " .
"Hook $prettyFunc failed to return a value; " .
"should return true to continue hook processing or false to abort." );
- } else if (!$retval) {
+ } else if ( !$retval ) {
return false;
}
}
diff --git a/includes/Html.php b/includes/Html.php
new file mode 100644
index 00000000..00183b31
--- /dev/null
+++ b/includes/Html.php
@@ -0,0 +1,539 @@
+<?php
+# Copyright (C) 2009 Aryeh Gregor
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+/**
+ * This class is a collection of static functions that serve two purposes:
+ *
+ * 1) Implement any algorithms specified by HTML5, or other HTML
+ * specifications, in a convenient and self-contained way.
+ *
+ * 2) Allow HTML elements to be conveniently and safely generated, like the
+ * current Xml class but a) less confused (Xml supports HTML-specific things,
+ * but only sometimes!) and b) not necessarily confined to XML-compatible
+ * output.
+ *
+ * There are two important configuration options this class uses:
+ *
+ * $wgHtml5: If this is set to false, then all output should be valid XHTML 1.0
+ * Transitional.
+ * $wgWellFormedXml: If this is set to true, then all output should be
+ * well-formed XML (quotes on attributes, self-closing tags, etc.).
+ *
+ * This class is meant to be confined to utility functions that are called from
+ * trusted code paths. It does not do enforcement of policy like not allowing
+ * <a> elements.
+ */
+class Html {
+ # List of void elements from HTML5, section 9.1.2 as of 2009-08-10
+ private static $voidElements = array(
+ 'area',
+ 'base',
+ 'br',
+ 'col',
+ 'command',
+ 'embed',
+ 'hr',
+ 'img',
+ 'input',
+ 'keygen',
+ 'link',
+ 'meta',
+ 'param',
+ 'source',
+ );
+
+ # Boolean attributes, which may have the value omitted entirely. Manually
+ # collected from the HTML5 spec as of 2009-08-10.
+ private static $boolAttribs = array(
+ 'async',
+ 'autobuffer',
+ 'autofocus',
+ 'autoplay',
+ 'checked',
+ 'controls',
+ 'defer',
+ 'disabled',
+ 'formnovalidate',
+ 'hidden',
+ 'ismap',
+ 'loop',
+ 'multiple',
+ 'novalidate',
+ 'open',
+ 'readonly',
+ 'required',
+ 'reversed',
+ 'scoped',
+ 'seamless',
+ );
+
+ /**
+ * Returns an HTML element in a string. The major advantage here over
+ * manually typing out the HTML is that it will escape all attribute
+ * values. If you're hardcoding all the attributes, or there are none, you
+ * should probably type out the string yourself.
+ *
+ * This is quite similar to Xml::tags(), but it implements some useful
+ * HTML-specific logic. For instance, there is no $allowShortTag
+ * parameter: the closing tag is magically omitted if $element has an empty
+ * content model. If $wgWellFormedXml is false, then a few bytes will be
+ * shaved off the HTML output as well. In the future, other HTML-specific
+ * features might be added, like allowing arrays for the values of
+ * attributes like class= and media=.
+ *
+ * @param $element string The element's name, e.g., 'a'
+ * @param $attribs array Associative array of attributes, e.g., array(
+ * 'href' => 'http://www.mediawiki.org/' ). See expandAttributes() for
+ * further documentation.
+ * @param $contents string The raw HTML contents of the element: *not*
+ * escaped!
+ * @return string Raw HTML
+ */
+ public static function rawElement( $element, $attribs = array(), $contents = '' ) {
+ global $wgWellFormedXml;
+ $start = self::openElement( $element, $attribs );
+ if ( in_array( $element, self::$voidElements ) ) {
+ if ( $wgWellFormedXml ) {
+ # Silly XML.
+ return substr( $start, 0, -1 ) . ' />';
+ }
+ return $start;
+ } else {
+ return "$start$contents</$element>";
+ }
+ }
+
+ /**
+ * Identical to rawElement(), but HTML-escapes $contents (like
+ * Xml::element()).
+ */
+ public static function element( $element, $attribs = array(), $contents = '' ) {
+ return self::rawElement( $element, $attribs, strtr( $contents, array(
+ # There's no point in escaping quotes, >, etc. in the contents of
+ # elements.
+ '&' => '&amp;',
+ '<' => '&lt;'
+ ) ) );
+ }
+
+ /**
+ * Identical to rawElement(), but has no third parameter and omits the end
+ * tag (and the self-closing / in XML mode for empty elements).
+ */
+ public static function openElement( $element, $attribs = array() ) {
+ global $wgHtml5;
+ $attribs = (array)$attribs;
+ # This is not required in HTML5, but let's do it anyway, for
+ # consistency and better compression.
+ $element = strtolower( $element );
+
+ # Remove HTML5-only attributes if we aren't doing HTML5, and disable
+ # form validation regardless (see bug 23769 and the more detailed
+ # comment in expandAttributes())
+ if ( $element == 'input' ) {
+ # Whitelist of types that don't cause validation. All except
+ # 'search' are valid in XHTML1.
+ $validTypes = array(
+ 'hidden',
+ 'text',
+ 'password',
+ 'checkbox',
+ 'radio',
+ 'file',
+ 'submit',
+ 'image',
+ 'reset',
+ 'button',
+ 'search',
+ );
+ if ( isset( $attribs['type'] )
+ && !in_array( $attribs['type'], $validTypes ) ) {
+ unset( $attribs['type'] );
+ }
+ if ( isset( $attribs['type'] ) && $attribs['type'] == 'search'
+ && !$wgHtml5 ) {
+ unset( $attribs['type'] );
+ }
+ # Here we're blacklisting some HTML5-only attributes...
+ $html5attribs = array(
+ 'autocomplete',
+ 'autofocus',
+ 'max',
+ 'min',
+ 'multiple',
+ 'pattern',
+ 'placeholder',
+ 'required',
+ 'step',
+ 'spellcheck',
+ );
+ foreach ( $html5attribs as $badAttr ) {
+ unset( $attribs[$badAttr] );
+ }
+ }
+ if ( !$wgHtml5 && $element == 'textarea' && isset( $attribs['maxlength'] ) ) {
+ unset( $attribs['maxlength'] );
+ }
+
+ return "<$element" . self::expandAttributes(
+ self::dropDefaults( $element, $attribs ) ) . '>';
+ }
+
+ /**
+ * Given an element name and an associative array of element attributes,
+ * return an array that is functionally identical to the input array, but
+ * possibly smaller. In particular, attributes might be stripped if they
+ * are given their default values.
+ *
+ * This method is not guaranteed to remove all redundant attributes, only
+ * some common ones and some others selected arbitrarily at random. It
+ * only guarantees that the output array should be functionally identical
+ * to the input array (currently per the HTML 5 draft as of 2009-09-06).
+ *
+ * @param $element string Name of the element, e.g., 'a'
+ * @param $attribs array Associative array of attributes, e.g., array(
+ * 'href' => 'http://www.mediawiki.org/' ). See expandAttributes() for
+ * further documentation.
+ * @return array An array of attributes functionally identical to $attribs
+ */
+ private static function dropDefaults( $element, $attribs ) {
+ # Don't bother doing anything if we aren't outputting HTML5; it's too
+ # much of a pain to maintain two sets of defaults.
+ global $wgHtml5;
+ if ( !$wgHtml5 ) {
+ return $attribs;
+ }
+
+ static $attribDefaults = array(
+ 'area' => array( 'shape' => 'rect' ),
+ 'button' => array(
+ 'formaction' => 'GET',
+ 'formenctype' => 'application/x-www-form-urlencoded',
+ 'type' => 'submit',
+ ),
+ 'canvas' => array(
+ 'height' => '150',
+ 'width' => '300',
+ ),
+ 'command' => array( 'type' => 'command' ),
+ 'form' => array(
+ 'action' => 'GET',
+ 'autocomplete' => 'on',
+ 'enctype' => 'application/x-www-form-urlencoded',
+ ),
+ 'input' => array(
+ 'formaction' => 'GET',
+ 'type' => 'text',
+ 'value' => '',
+ ),
+ 'keygen' => array( 'keytype' => 'rsa' ),
+ 'link' => array( 'media' => 'all' ),
+ 'menu' => array( 'type' => 'list' ),
+ # Note: the use of text/javascript here instead of other JavaScript
+ # MIME types follows the HTML5 spec.
+ 'script' => array( 'type' => 'text/javascript' ),
+ 'style' => array(
+ 'media' => 'all',
+ 'type' => 'text/css',
+ ),
+ 'textarea' => array( 'wrap' => 'soft' ),
+ );
+
+ $element = strtolower( $element );
+
+ foreach ( $attribs as $attrib => $value ) {
+ $lcattrib = strtolower( $attrib );
+ $value = strval( $value );
+
+ # Simple checks using $attribDefaults
+ if ( isset( $attribDefaults[$element][$lcattrib] ) &&
+ $attribDefaults[$element][$lcattrib] == $value ) {
+ unset( $attribs[$attrib] );
+ }
+
+ if ( $lcattrib == 'class' && $value == '' ) {
+ unset( $attribs[$attrib] );
+ }
+ }
+
+ # More subtle checks
+ if ( $element === 'link' && isset( $attribs['type'] )
+ && strval( $attribs['type'] ) == 'text/css' ) {
+ unset( $attribs['type'] );
+ }
+ if ( $element === 'select' && isset( $attribs['size'] ) ) {
+ if ( in_array( 'multiple', $attribs )
+ || ( isset( $attribs['multiple'] ) && $attribs['multiple'] !== false )
+ ) {
+ # A multi-select
+ if ( strval( $attribs['size'] ) == '4' ) {
+ unset( $attribs['size'] );
+ }
+ } else {
+ # Single select
+ if ( strval( $attribs['size'] ) == '1' ) {
+ unset( $attribs['size'] );
+ }
+ }
+ }
+
+ return $attribs;
+ }
+
+ /**
+ * Given an associative array of element attributes, generate a string
+ * to stick after the element name in HTML output. Like array( 'href' =>
+ * 'http://www.mediawiki.org/' ) becomes something like
+ * ' href="http://www.mediawiki.org"'. Again, this is like
+ * Xml::expandAttributes(), but it implements some HTML-specific logic.
+ * For instance, it will omit quotation marks if $wgWellFormedXml is false,
+ * and will treat boolean attributes specially.
+ *
+ * @param $attribs array Associative array of attributes, e.g., array(
+ * 'href' => 'http://www.mediawiki.org/' ). Values will be HTML-escaped.
+ * A value of false means to omit the attribute. For boolean attributes,
+ * you can omit the key, e.g., array( 'checked' ) instead of
+ * array( 'checked' => 'checked' ) or such.
+ * @return string HTML fragment that goes between element name and '>'
+ * (starting with a space if at least one attribute is output)
+ */
+ public static function expandAttributes( $attribs ) {
+ global $wgHtml5, $wgWellFormedXml;
+
+ $ret = '';
+ $attribs = (array)$attribs;
+ foreach ( $attribs as $key => $value ) {
+ if ( $value === false ) {
+ continue;
+ }
+
+ # For boolean attributes, support array( 'foo' ) instead of
+ # requiring array( 'foo' => 'meaningless' ).
+ if ( is_int( $key )
+ && in_array( strtolower( $value ), self::$boolAttribs ) ) {
+ $key = $value;
+ }
+
+ # Not technically required in HTML5, but required in XHTML 1.0,
+ # and we'd like consistency and better compression anyway.
+ $key = strtolower( $key );
+
+ # Bug 23769: Blacklist all form validation attributes for now. Current
+ # (June 2010) WebKit has no UI, so the form just refuses to submit
+ # without telling the user why, which is much worse than failing
+ # server-side validation. Opera is the only other implementation at
+ # this time, and has ugly UI, so just kill the feature entirely until
+ # we have at least one good implementation.
+ if ( in_array( $key, array( 'max', 'min', 'pattern', 'required', 'step' ) ) ) {
+ continue;
+ }
+
+ # See the "Attributes" section in the HTML syntax part of HTML5,
+ # 9.1.2.3 as of 2009-08-10. Most attributes can have quotation
+ # marks omitted, but not all. (Although a literal " is not
+ # permitted, we don't check for that, since it will be escaped
+ # anyway.)
+ #
+ # See also research done on further characters that need to be
+ # escaped: http://code.google.com/p/html5lib/issues/detail?id=93
+ $badChars = "\\x00- '=<>`/\x{00a0}\x{1680}\x{180e}\x{180F}\x{2000}\x{2001}"
+ . "\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}"
+ . "\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}";
+ if ( $wgWellFormedXml || $value === ''
+ || preg_match( "![$badChars]!u", $value ) ) {
+ $quote = '"';
+ } else {
+ $quote = '';
+ }
+
+ if ( in_array( $key, self::$boolAttribs ) ) {
+ # In XHTML 1.0 Transitional, the value needs to be equal to the
+ # key. In HTML5, we can leave the value empty instead. If we
+ # don't need well-formed XML, we can omit the = entirely.
+ if ( !$wgWellFormedXml ) {
+ $ret .= " $key";
+ } elseif ( $wgHtml5 ) {
+ $ret .= " $key=\"\"";
+ } else {
+ $ret .= " $key=\"$key\"";
+ }
+ } else {
+ # Apparently we need to entity-encode \n, \r, \t, although the
+ # spec doesn't mention that. Since we're doing strtr() anyway,
+ # and we don't need <> escaped here, we may as well not call
+ # htmlspecialchars(). FIXME: verify that we actually need to
+ # escape \n\r\t here, and explain why, exactly.
+ #
+ # We could call Sanitizer::encodeAttribute() for this, but we
+ # don't because we're stubborn and like our marginal savings on
+ # byte size from not having to encode unnecessary quotes.
+ $map = array(
+ '&' => '&amp;',
+ '"' => '&quot;',
+ "\n" => '&#10;',
+ "\r" => '&#13;',
+ "\t" => '&#9;'
+ );
+ if ( $wgWellFormedXml ) {
+ # This is allowed per spec: <http://www.w3.org/TR/xml/#NT-AttValue>
+ # But reportedly it breaks some XML tools? FIXME: is this
+ # really true?
+ $map['<'] = '&lt;';
+ }
+ $ret .= " $key=$quote" . strtr( $value, $map ) . $quote;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * Output a <script> tag with the given contents. TODO: do some useful
+ * escaping as well, like if $contents contains literal '</script>' or (for
+ * XML) literal "]]>".
+ *
+ * @param $contents string JavaScript
+ * @return string Raw HTML
+ */
+ public static function inlineScript( $contents ) {
+ global $wgHtml5, $wgJsMimeType, $wgWellFormedXml;
+
+ $attrs = array();
+ if ( !$wgHtml5 ) {
+ $attrs['type'] = $wgJsMimeType;
+ }
+ if ( $wgWellFormedXml && preg_match( '/[<&]/', $contents ) ) {
+ $contents = "/*<![CDATA[*/$contents/*]]>*/";
+ }
+ return self::rawElement( 'script', $attrs, $contents );
+ }
+
+ /**
+ * Output a <script> tag linking to the given URL, e.g.,
+ * <script src=foo.js></script>.
+ *
+ * @param $url string
+ * @return string Raw HTML
+ */
+ public static function linkedScript( $url ) {
+ global $wgHtml5, $wgJsMimeType;
+
+ $attrs = array( 'src' => $url );
+ if ( !$wgHtml5 ) {
+ $attrs['type'] = $wgJsMimeType;
+ }
+ return self::element( 'script', $attrs );
+ }
+
+ /**
+ * Output a <style> tag with the given contents for the given media type
+ * (if any). TODO: do some useful escaping as well, like if $contents
+ * contains literal '</style>' (admittedly unlikely).
+ *
+ * @param $contents string CSS
+ * @param $media mixed A media type string, like 'screen'
+ * @return string Raw HTML
+ */
+ public static function inlineStyle( $contents, $media = 'all' ) {
+ global $wgWellFormedXml;
+
+ if ( $wgWellFormedXml && preg_match( '/[<&]/', $contents ) ) {
+ $contents = "/*<![CDATA[*/$contents/*]]>*/";
+ }
+ return self::rawElement( 'style', array(
+ 'type' => 'text/css',
+ 'media' => $media,
+ ), $contents );
+ }
+
+ /**
+ * Output a <link rel=stylesheet> linking to the given URL for the given
+ * media type (if any).
+ *
+ * @param $url string
+ * @param $media mixed A media type string, like 'screen'
+ * @return string Raw HTML
+ */
+ public static function linkedStyle( $url, $media = 'all' ) {
+ return self::element( 'link', array(
+ 'rel' => 'stylesheet',
+ 'href' => $url,
+ 'type' => 'text/css',
+ 'media' => $media,
+ ) );
+ }
+
+ /**
+ * Convenience function to produce an <input> element. This supports the
+ * new HTML5 input types and attributes, and will silently strip them if
+ * $wgHtml5 is false.
+ *
+ * @param $name string name attribute
+ * @param $value mixed value attribute
+ * @param $type string type attribute
+ * @param $attribs array Associative array of miscellaneous extra
+ * attributes, passed to Html::element()
+ * @return string Raw HTML
+ */
+ public static function input( $name, $value = '', $type = 'text', $attribs = array() ) {
+ $attribs['type'] = $type;
+ $attribs['value'] = $value;
+ $attribs['name'] = $name;
+
+ return self::element( 'input', $attribs );
+ }
+
+ /**
+ * Convenience function to produce an input element with type=hidden, like
+ * Xml::hidden.
+ *
+ * @param $name string name attribute
+ * @param $value string value attribute
+ * @param $attribs array Associative array of miscellaneous extra
+ * attributes, passed to Html::element()
+ * @return string Raw HTML
+ */
+ public static function hidden( $name, $value, $attribs = array() ) {
+ return self::input( $name, $value, 'hidden', $attribs );
+ }
+
+ /**
+ * Convenience function to produce an <input> element. This supports leaving
+ * out the cols= and rows= which Xml requires and are required by HTML4/XHTML
+ * but not required by HTML5 and will silently set cols="" and rows="" if
+ * $wgHtml5 is false and cols and rows are omitted (HTML4 validates present
+ * but empty cols="" and rows="" as valid).
+ *
+ * @param $name string name attribute
+ * @param $value string value attribute
+ * @param $attribs array Associative array of miscellaneous extra
+ * attributes, passed to Html::element()
+ * @return string Raw HTML
+ */
+ public static function textarea( $name, $value = '', $attribs = array() ) {
+ global $wgHtml5;
+ $attribs['name'] = $name;
+ if ( !$wgHtml5 ) {
+ if ( !isset( $attribs['cols'] ) )
+ $attribs['cols'] = "";
+ if ( !isset( $attribs['rows'] ) )
+ $attribs['rows'] = "";
+ }
+ return self::element( 'textarea', $attribs, $value );
+ }
+}
diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php
index 269d45ff..d5983635 100644
--- a/includes/HttpFunctions.php
+++ b/includes/HttpFunctions.php
@@ -1,9 +1,6 @@
<?php
-
/**
* @defgroup HTTP HTTP
- * @file
- * @ingroup HTTP
*/
/**
@@ -11,111 +8,54 @@
* @ingroup HTTP
*/
class Http {
+ static $httpEngine = false;
/**
- * Simple wrapper for Http::request( 'GET' )
- * @see Http::request()
+ * Perform an HTTP request
+ * @param $method string HTTP method. Usually GET/POST
+ * @param $url string Full URL to act on
+ * @param $options options to pass to HttpRequest object
+ * Possible keys for the array:
+ * timeout Timeout length in seconds
+ * postData An array of key-value pairs or a url-encoded form data
+ * proxy The proxy to use. Will use $wgHTTPProxy (if set) otherwise.
+ * noProxy Override $wgHTTPProxy (if set) and don't use any proxy at all.
+ * sslVerifyHost (curl only) Verify the SSL certificate
+ * caInfo (curl only) Provide CA information
+ * maxRedirects Maximum number of redirects to follow (defaults to 5)
+ * followRedirects Whether to follow redirects (defaults to true)
+ * @returns mixed (bool)false on failure or a string on success
*/
- public static function get( $url, $timeout = 'default', $opts = array() ) {
- return Http::request( "GET", $url, $timeout, $opts );
+ public static function request( $method, $url, $options = array() ) {
+ wfDebug( "HTTP: $method: $url" );
+ $options['method'] = strtoupper( $method );
+ if ( !isset( $options['timeout'] ) ) {
+ $options['timeout'] = 'default';
+ }
+ $req = HttpRequest::factory( $url, $options );
+ $status = $req->execute();
+ if ( $status->isOK() ) {
+ return $req->getContent();
+ } else {
+ return false;
+ }
}
/**
- * Simple wrapper for Http::request( 'POST' )
+ * Simple wrapper for Http::request( 'GET' )
* @see Http::request()
*/
- public static function post( $url, $timeout = 'default', $opts = array() ) {
- return Http::request( "POST", $url, $timeout, $opts );
+ public static function get( $url, $timeout = 'default', $options = array() ) {
+ $options['timeout'] = $timeout;
+ return Http::request( 'GET', $url, $options );
}
/**
- * Get the contents of a file by HTTP
- * @param $method string HTTP method. Usually GET/POST
- * @param $url string Full URL to act on
- * @param $timeout int Seconds to timeout. 'default' falls to $wgHTTPTimeout
- * @param $curlOptions array Optional array of extra params to pass
- * to curl_setopt()
- */
- public static function request( $method, $url, $timeout = 'default', $curlOptions = array() ) {
- global $wgHTTPTimeout, $wgHTTPProxy, $wgTitle;
-
- // Go ahead and set the timeout if not otherwise specified
- if ( $timeout == 'default' ) {
- $timeout = $wgHTTPTimeout;
- }
-
- wfDebug( __METHOD__ . ": $method $url\n" );
- # Use curl if available
- if ( function_exists( 'curl_init' ) ) {
- $c = curl_init( $url );
- if ( self::isLocalURL( $url ) ) {
- curl_setopt( $c, CURLOPT_PROXY, 'localhost:80' );
- } else if ($wgHTTPProxy) {
- curl_setopt($c, CURLOPT_PROXY, $wgHTTPProxy);
- }
-
- curl_setopt( $c, CURLOPT_TIMEOUT, $timeout );
- curl_setopt( $c, CURLOPT_USERAGENT, self :: userAgent() );
- if ( $method == 'POST' ) {
- curl_setopt( $c, CURLOPT_POST, true );
- curl_setopt( $c, CURLOPT_POSTFIELDS, '' );
- }
- else
- curl_setopt( $c, CURLOPT_CUSTOMREQUEST, $method );
-
- # Set the referer to $wgTitle, even in command-line mode
- # This is useful for interwiki transclusion, where the foreign
- # server wants to know what the referring page is.
- # $_SERVER['REQUEST_URI'] gives a less reliable indication of the
- # referring page.
- if ( is_object( $wgTitle ) ) {
- curl_setopt( $c, CURLOPT_REFERER, $wgTitle->getFullURL() );
- }
-
- if ( is_array( $curlOptions ) ) {
- foreach( $curlOptions as $option => $value ) {
- curl_setopt( $c, $option, $value );
- }
- }
-
- ob_start();
- curl_exec( $c );
- $text = ob_get_contents();
- ob_end_clean();
-
- # Don't return the text of error messages, return false on error
- $retcode = curl_getinfo( $c, CURLINFO_HTTP_CODE );
- if ( $retcode != 200 ) {
- wfDebug( __METHOD__ . ": HTTP return code $retcode\n" );
- $text = false;
- }
- # Don't return truncated output
- $errno = curl_errno( $c );
- if ( $errno != CURLE_OK ) {
- $errstr = curl_error( $c );
- wfDebug( __METHOD__ . ": CURL error code $errno: $errstr\n" );
- $text = false;
- }
- curl_close( $c );
- } else {
- # Otherwise use file_get_contents...
- # This doesn't have local fetch capabilities...
-
- $headers = array( "User-Agent: " . self :: userAgent() );
- if( strcasecmp( $method, 'post' ) == 0 ) {
- // Required for HTTP 1.0 POSTs
- $headers[] = "Content-Length: 0";
- }
- $opts = array(
- 'http' => array(
- 'method' => $method,
- 'header' => implode( "\r\n", $headers ),
- 'timeout' => $timeout ) );
- $ctx = stream_context_create($opts);
-
- $text = file_get_contents( $url, false, $ctx );
- }
- return $text;
+ * Simple wrapper for Http::request( 'POST' )
+ * @see Http::request()
+ */
+ public static function post( $url, $options = array() ) {
+ return Http::request( 'POST', $url, $options );
}
/**
@@ -151,12 +91,803 @@ class Http {
}
return false;
}
-
+
/**
- * Return a standard user-agent we can use for external requests.
+ * A standard user-agent we can use for external requests.
+ * @returns string
*/
public static function userAgent() {
global $wgVersion;
return "MediaWiki/$wgVersion";
}
+
+ /**
+ * Checks that the given URI is a valid one
+ * @param $uri Mixed: URI to check for validity
+ * @returns bool
+ */
+ public static function isValidURI( $uri ) {
+ return preg_match(
+ '/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/',
+ $uri,
+ $matches
+ );
+ }
+}
+
+/**
+ * This wrapper class will call out to curl (if available) or fallback
+ * to regular PHP if necessary for handling internal HTTP requests.
+ */
+class HttpRequest {
+ protected $content;
+ protected $timeout = 'default';
+ protected $headersOnly = null;
+ protected $postData = null;
+ protected $proxy = null;
+ protected $noProxy = false;
+ protected $sslVerifyHost = true;
+ protected $caInfo = null;
+ protected $method = "GET";
+ protected $reqHeaders = array();
+ protected $url;
+ protected $parsedUrl;
+ protected $callback;
+ protected $maxRedirects = 5;
+ protected $followRedirects = true;
+
+ protected $cookieJar;
+
+ protected $headerList = array();
+ protected $respVersion = "0.9";
+ protected $respStatus = "200 Ok";
+ protected $respHeaders = array();
+
+ public $status;
+
+ /**
+ * @param $url string url to use
+ * @param $options array (optional) extra params to pass (see Http::request())
+ */
+ function __construct( $url, $options = array() ) {
+ global $wgHTTPTimeout;
+
+ $this->url = $url;
+ $this->parsedUrl = parse_url( $url );
+
+ if ( !Http::isValidURI( $this->url ) ) {
+ $this->status = Status::newFatal('http-invalid-url');
+ } else {
+ $this->status = Status::newGood( 100 ); // continue
+ }
+
+ if ( isset($options['timeout']) && $options['timeout'] != 'default' ) {
+ $this->timeout = $options['timeout'];
+ } else {
+ $this->timeout = $wgHTTPTimeout;
+ }
+
+ $members = array( "postData", "proxy", "noProxy", "sslVerifyHost", "caInfo",
+ "method", "followRedirects", "maxRedirects" );
+ foreach ( $members as $o ) {
+ if ( isset($options[$o]) ) {
+ $this->$o = $options[$o];
+ }
+ }
+ }
+
+ /**
+ * Generate a new request object
+ * @see HttpRequest::__construct
+ */
+ public static function factory( $url, $options = null ) {
+ if ( !Http::$httpEngine ) {
+ Http::$httpEngine = function_exists( 'curl_init' ) ? 'curl' : 'php';
+ } elseif ( Http::$httpEngine == 'curl' && !function_exists( 'curl_init' ) ) {
+ throw new MWException( __METHOD__.': curl (http://php.net/curl) is not installed, but'.
+ ' Http::$httpEngine is set to "curl"' );
+ }
+
+ switch( Http::$httpEngine ) {
+ case 'curl':
+ return new CurlHttpRequest( $url, $options );
+ case 'php':
+ if ( !wfIniGetBool( 'allow_url_fopen' ) ) {
+ throw new MWException( __METHOD__.': allow_url_fopen needs to be enabled for pure PHP'.
+ ' http requests to work. If possible, curl should be used instead. See http://php.net/curl.' );
+ }
+ return new PhpHttpRequest( $url, $options );
+ default:
+ throw new MWException( __METHOD__.': The setting of Http::$httpEngine is not valid.' );
+ }
+ }
+
+ /**
+ * Get the body, or content, of the response to the request
+ * @return string
+ */
+ public function getContent() {
+ return $this->content;
+ }
+
+ /**
+ * Take care of setting up the proxy
+ * (override in subclass)
+ * @return string
+ */
+ public function proxySetup() {
+ global $wgHTTPProxy;
+
+ if ( $this->proxy ) {
+ return;
+ }
+ if ( Http::isLocalURL( $this->url ) ) {
+ $this->proxy = 'http://localhost:80/';
+ } elseif ( $wgHTTPProxy ) {
+ $this->proxy = $wgHTTPProxy ;
+ } elseif ( getenv( "http_proxy" ) ) {
+ $this->proxy = getenv( "http_proxy" );
+ }
+ }
+
+ /**
+ * Set the refererer header
+ */
+ public function setReferer( $url ) {
+ $this->setHeader('Referer', $url);
+ }
+
+ /**
+ * Set the user agent
+ */
+ public function setUserAgent( $UA ) {
+ $this->setHeader('User-Agent', $UA);
+ }
+
+ /**
+ * Set an arbitrary header
+ */
+ public function setHeader($name, $value) {
+ // I feel like I should normalize the case here...
+ $this->reqHeaders[$name] = $value;
+ }
+
+ /**
+ * Get an array of the headers
+ */
+ public function getHeaderList() {
+ $list = array();
+
+ if( $this->cookieJar ) {
+ $this->reqHeaders['Cookie'] =
+ $this->cookieJar->serializeToHttpRequest($this->parsedUrl['path'],
+ $this->parsedUrl['host']);
+ }
+ foreach($this->reqHeaders as $name => $value) {
+ $list[] = "$name: $value";
+ }
+ return $list;
+ }
+
+ /**
+ * Set the callback
+ * @param $callback callback
+ */
+ public function setCallback( $callback ) {
+ $this->callback = $callback;
+ }
+
+ /**
+ * A generic callback to read the body of the response from a remote
+ * server.
+ * @param $fh handle
+ * @param $content string
+ */
+ public function read( $fh, $content ) {
+ $this->content .= $content;
+ return strlen( $content );
+ }
+
+ /**
+ * Take care of whatever is necessary to perform the URI request.
+ * @return Status
+ */
+ public function execute() {
+ global $wgTitle;
+
+ if( strtoupper($this->method) == "HEAD" ) {
+ $this->headersOnly = true;
+ }
+
+ if ( is_array( $this->postData ) ) {
+ $this->postData = wfArrayToCGI( $this->postData );
+ }
+
+ if ( is_object( $wgTitle ) && !isset($this->reqHeaders['Referer']) ) {
+ $this->setReferer( $wgTitle->getFullURL() );
+ }
+
+ if ( !$this->noProxy ) {
+ $this->proxySetup();
+ }
+
+ if ( !$this->callback ) {
+ $this->setCallback( array( $this, 'read' ) );
+ }
+
+ if ( !isset($this->reqHeaders['User-Agent']) ) {
+ $this->setUserAgent(Http::userAgent());
+ }
+ }
+
+ /**
+ * Parses the headers, including the HTTP status code and any
+ * Set-Cookie headers. This function expectes the headers to be
+ * found in an array in the member variable headerList.
+ * @returns nothing
+ */
+ protected function parseHeader() {
+ $lastname = "";
+ foreach( $this->headerList as $header ) {
+ if( preg_match( "#^HTTP/([0-9.]+) (.*)#", $header, $match ) ) {
+ $this->respVersion = $match[1];
+ $this->respStatus = $match[2];
+ } elseif( preg_match( "#^[ \t]#", $header ) ) {
+ $last = count($this->respHeaders[$lastname]) - 1;
+ $this->respHeaders[$lastname][$last] .= "\r\n$header";
+ } elseif( preg_match( "#^([^:]*):[\t ]*(.*)#", $header, $match ) ) {
+ $this->respHeaders[strtolower( $match[1] )][] = $match[2];
+ $lastname = strtolower( $match[1] );
+ }
+ }
+
+ $this->parseCookies();
+ }
+
+ /**
+ * Sets the member variable status to a fatal status if the HTTP
+ * status code was not 200.
+ * @returns nothing
+ */
+ protected function setStatus() {
+ if( !$this->respHeaders ) {
+ $this->parseHeader();
+ }
+
+ if((int)$this->respStatus !== 200) {
+ list( $code, $message ) = explode(" ", $this->respStatus, 2);
+ $this->status->fatal("http-bad-status", $code, $message );
+ }
+ }
+
+
+ /**
+ * Returns true if the last status code was a redirect.
+ * @return bool
+ */
+ public function isRedirect() {
+ if( !$this->respHeaders ) {
+ $this->parseHeader();
+ }
+
+ $status = (int)$this->respStatus;
+ if ( $status >= 300 && $status < 400 ) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns an associative array of response headers after the
+ * request has been executed. Because some headers
+ * (e.g. Set-Cookie) can appear more than once the, each value of
+ * the associative array is an array of the values given.
+ * @return array
+ */
+ public function getResponseHeaders() {
+ if( !$this->respHeaders ) {
+ $this->parseHeader();
+ }
+ return $this->respHeaders;
+ }
+
+ /**
+ * Returns the value of the given response header.
+ * @param $header string
+ * @return string
+ */
+ public function getResponseHeader($header) {
+ if( !$this->respHeaders ) {
+ $this->parseHeader();
+ }
+ if ( isset( $this->respHeaders[strtolower ( $header ) ] ) ) {
+ $v = $this->respHeaders[strtolower ( $header ) ];
+ return $v[count( $v ) - 1];
+ }
+ return null;
+ }
+
+ /**
+ * Tells the HttpRequest object to use this pre-loaded CookieJar.
+ * @param $jar CookieJar
+ */
+ public function setCookieJar( $jar ) {
+ $this->cookieJar = $jar;
+ }
+
+ /**
+ * Returns the cookie jar in use.
+ * @returns CookieJar
+ */
+ public function getCookieJar() {
+ if( !$this->respHeaders ) {
+ $this->parseHeader();
+ }
+ return $this->cookieJar;
+ }
+
+ /**
+ * Sets a cookie. Used before a request to set up any individual
+ * cookies. Used internally after a request to parse the
+ * Set-Cookie headers.
+ * @see Cookie::set
+ */
+ public function setCookie( $name, $value = null, $attr = null) {
+ if( !$this->cookieJar ) {
+ $this->cookieJar = new CookieJar;
+ }
+ $this->cookieJar->setCookie($name, $value, $attr);
+ }
+
+ /**
+ * Parse the cookies in the response headers and store them in the cookie jar.
+ */
+ protected function parseCookies() {
+ if( !$this->cookieJar ) {
+ $this->cookieJar = new CookieJar;
+ }
+ if( isset( $this->respHeaders['set-cookie'] ) ) {
+ $url = parse_url( $this->getFinalUrl() );
+ foreach( $this->respHeaders['set-cookie'] as $cookie ) {
+ $this->cookieJar->parseCookieResponseHeader( $cookie, $url['host'] );
+ }
+ }
+ }
+
+ /**
+ * Returns the final URL after all redirections.
+ * @returns string
+ */
+ public function getFinalUrl() {
+ $location = $this->getResponseHeader("Location");
+ if ( $location ) {
+ return $location;
+ }
+
+ return $this->url;
+ }
+}
+
+
+class Cookie {
+ protected $name;
+ protected $value;
+ protected $expires;
+ protected $path;
+ protected $domain;
+ protected $isSessionKey = true;
+ // TO IMPLEMENT protected $secure
+ // TO IMPLEMENT? protected $maxAge (add onto expires)
+ // TO IMPLEMENT? protected $version
+ // TO IMPLEMENT? protected $comment
+
+ function __construct( $name, $value, $attr ) {
+ $this->name = $name;
+ $this->set( $value, $attr );
+ }
+
+ /**
+ * Sets a cookie. Used before a request to set up any individual
+ * cookies. Used internally after a request to parse the
+ * Set-Cookie headers.
+ * @param $name string the name of the cookie
+ * @param $value string the value of the cookie
+ * @param $attr array possible key/values:
+ * expires A date string
+ * path The path this cookie is used on
+ * domain Domain this cookie is used on
+ */
+ public function set( $value, $attr ) {
+ $this->value = $value;
+ if( isset( $attr['expires'] ) ) {
+ $this->isSessionKey = false;
+ $this->expires = strtotime( $attr['expires'] );
+ }
+ if( isset( $attr['path'] ) ) {
+ $this->path = $attr['path'];
+ } else {
+ $this->path = "/";
+ }
+ if( isset( $attr['domain'] ) ) {
+ if( self::validateCookieDomain( $attr['domain'] ) ) {
+ $this->domain = $attr['domain'];
+ }
+ } else {
+ throw new MWException("You must specify a domain.");
+ }
+ }
+
+ /**
+ * Return the true if the cookie is valid is valid. Otherwise,
+ * false. The uses a method similar to IE cookie security
+ * described here:
+ * http://kuza55.blogspot.com/2008/02/understanding-cookie-security.html
+ * A better method might be to use a blacklist like
+ * http://publicsuffix.org/
+ *
+ * @param $domain string the domain to validate
+ * @param $originDomain string (optional) the domain the cookie originates from
+ * @return bool
+ */
+ public static function validateCookieDomain( $domain, $originDomain = null) {
+ // Don't allow a trailing dot
+ if( substr( $domain, -1 ) == "." ) return false;
+
+ $dc = explode(".", $domain);
+
+ // Don't allow cookies for "localhost", "ls" or other dot-less hosts
+ if( count($dc) < 2 ) return false;
+
+ // Only allow full, valid IP addresses
+ if( preg_match( '/^[0-9.]+$/', $domain ) ) {
+ if( count( $dc ) != 4 ) return false;
+
+ if( ip2long( $domain ) === false ) return false;
+
+ if( $originDomain == null || $originDomain == $domain ) return true;
+
+ }
+
+ // Don't allow cookies for "co.uk" or "gov.uk", etc, but allow "supermarket.uk"
+ if( strrpos( $domain, "." ) - strlen( $domain ) == -3 ) {
+ if( (count($dc) == 2 && strlen( $dc[0] ) <= 2 )
+ || (count($dc) == 3 && strlen( $dc[0] ) == "" && strlen( $dc[1] ) <= 2 ) ) {
+ return false;
+ }
+ if( (count($dc) == 2 || (count($dc) == 3 && $dc[0] == "") )
+ && preg_match( '/(com|net|org|gov|edu)\...$/', $domain) ) {
+ return false;
+ }
+ }
+
+ if( $originDomain != null ) {
+ if( substr( $domain, 0, 1 ) != "." && $domain != $originDomain ) {
+ return false;
+ }
+ if( substr( $domain, 0, 1 ) == "."
+ && substr_compare( $originDomain, $domain, -strlen( $domain ),
+ strlen( $domain ), TRUE ) != 0 ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Serialize the cookie jar into a format useful for HTTP Request headers.
+ * @param $path string the path that will be used. Required.
+ * @param $domain string the domain that will be used. Required.
+ * @return string
+ */
+ public function serializeToHttpRequest( $path, $domain ) {
+ $ret = "";
+
+ if( $this->canServeDomain( $domain )
+ && $this->canServePath( $path )
+ && $this->isUnExpired() ) {
+ $ret = $this->name ."=". $this->value;
+ }
+
+ return $ret;
+ }
+
+ protected function canServeDomain( $domain ) {
+ if( $domain == $this->domain
+ || ( strlen( $domain) > strlen( $this->domain )
+ && substr( $this->domain, 0, 1) == "."
+ && substr_compare( $domain, $this->domain, -strlen( $this->domain ),
+ strlen( $this->domain ), TRUE ) == 0 ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ protected function canServePath( $path ) {
+ if( $this->path && substr_compare( $this->path, $path, 0, strlen( $this->path ) ) == 0 ) {
+ return true;
+ }
+ return false;
+ }
+
+ protected function isUnExpired() {
+ if( $this->isSessionKey || $this->expires > time() ) {
+ return true;
+ }
+ return false;
+ }
+
+}
+
+class CookieJar {
+ private $cookie = array();
+
+ /**
+ * Set a cookie in the cookie jar. Make sure only one cookie per-name exists.
+ * @see Cookie::set()
+ */
+ public function setCookie ($name, $value, $attr) {
+ /* cookies: case insensitive, so this should work.
+ * We'll still send the cookies back in the same case we got them, though.
+ */
+ $index = strtoupper($name);
+ if( isset( $this->cookie[$index] ) ) {
+ $this->cookie[$index]->set( $value, $attr );
+ } else {
+ $this->cookie[$index] = new Cookie( $name, $value, $attr );
+ }
+ }
+
+ /**
+ * @see Cookie::serializeToHttpRequest
+ */
+ public function serializeToHttpRequest( $path, $domain ) {
+ $cookies = array();
+
+ foreach( $this->cookie as $c ) {
+ $serialized = $c->serializeToHttpRequest( $path, $domain );
+ if ( $serialized ) $cookies[] = $serialized;
+ }
+
+ return implode("; ", $cookies);
+ }
+
+ /**
+ * Parse the content of an Set-Cookie HTTP Response header.
+ * @param $cookie string
+ */
+ public function parseCookieResponseHeader ( $cookie, $domain ) {
+ $len = strlen( "Set-Cookie:" );
+ if ( substr_compare( "Set-Cookie:", $cookie, 0, $len, TRUE ) === 0 ) {
+ $cookie = substr( $cookie, $len );
+ }
+
+ $bit = array_map( 'trim', explode( ";", $cookie ) );
+ if ( count($bit) >= 1 ) {
+ list($name, $value) = explode( "=", array_shift( $bit ), 2 );
+ $attr = array();
+ foreach( $bit as $piece ) {
+ $parts = explode( "=", $piece );
+ if( count( $parts ) > 1 ) {
+ $attr[strtolower( $parts[0] )] = $parts[1];
+ } else {
+ $attr[strtolower( $parts[0] )] = true;
+ }
+ }
+
+ if( !isset( $attr['domain'] ) ) {
+ $attr['domain'] = $domain;
+ } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
+ return null;
+ }
+
+ $this->setCookie( $name, $value, $attr );
+ }
+ }
+}
+
+
+/**
+ * HttpRequest implemented using internal curl compiled into PHP
+ */
+class CurlHttpRequest extends HttpRequest {
+ static $curlMessageMap = array(
+ 6 => 'http-host-unreachable',
+ 28 => 'http-timed-out'
+ );
+
+ protected $curlOptions = array();
+ protected $headerText = "";
+
+ protected function readHeader( $fh, $content ) {
+ $this->headerText .= $content;
+ return strlen( $content );
+ }
+
+ public function execute() {
+ parent::execute();
+ if ( !$this->status->isOK() ) {
+ return $this->status;
+ }
+ $this->curlOptions[CURLOPT_PROXY] = $this->proxy;
+ $this->curlOptions[CURLOPT_TIMEOUT] = $this->timeout;
+ $this->curlOptions[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
+ $this->curlOptions[CURLOPT_WRITEFUNCTION] = $this->callback;
+ $this->curlOptions[CURLOPT_HEADERFUNCTION] = array($this, "readHeader");
+ $this->curlOptions[CURLOPT_MAXREDIRS] = $this->maxRedirects;
+
+ /* not sure these two are actually necessary */
+ if(isset($this->reqHeaders['Referer'])) {
+ $this->curlOptions[CURLOPT_REFERER] = $this->reqHeaders['Referer'];
+ }
+ $this->curlOptions[CURLOPT_USERAGENT] = $this->reqHeaders['User-Agent'];
+
+ if ( $this->sslVerifyHost ) {
+ $this->curlOptions[CURLOPT_SSL_VERIFYHOST] = $this->sslVerifyHost;
+ }
+
+ if ( $this->caInfo ) {
+ $this->curlOptions[CURLOPT_CAINFO] = $this->caInfo;
+ }
+
+ if ( $this->headersOnly ) {
+ $this->curlOptions[CURLOPT_NOBODY] = true;
+ $this->curlOptions[CURLOPT_HEADER] = true;
+ } elseif ( $this->method == 'POST' ) {
+ $this->curlOptions[CURLOPT_POST] = true;
+ $this->curlOptions[CURLOPT_POSTFIELDS] = $this->postData;
+ // Suppress 'Expect: 100-continue' header, as some servers
+ // will reject it with a 417 and Curl won't auto retry
+ // with HTTP 1.0 fallback
+ $this->reqHeaders['Expect'] = '';
+ } else {
+ $this->curlOptions[CURLOPT_CUSTOMREQUEST] = $this->method;
+ }
+
+ $this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
+
+ $curlHandle = curl_init( $this->url );
+ if ( !curl_setopt_array( $curlHandle, $this->curlOptions ) ) {
+ throw new MWException("Error setting curl options.");
+ }
+ if ( ! @curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, $this->followRedirects ) ) {
+ wfDebug("Couldn't set CURLOPT_FOLLOWLOCATION. Probably safe_mode or open_basedir is set.");
+ /* Continue the processing. If it were in curl_setopt_array, processing would have halted on its entry */
+ }
+
+ if ( false === curl_exec( $curlHandle ) ) {
+ $code = curl_error( $curlHandle );
+
+ if ( isset( self::$curlMessageMap[$code] ) ) {
+ $this->status->fatal( self::$curlMessageMap[$code] );
+ } else {
+ $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
+ }
+ } else {
+ $this->headerList = explode("\r\n", $this->headerText);
+ }
+
+ curl_close( $curlHandle );
+
+ $this->parseHeader();
+ $this->setStatus();
+ return $this->status;
+ }
+}
+
+class PhpHttpRequest extends HttpRequest {
+ protected $manuallyRedirect = false;
+
+ protected function urlToTcp( $url ) {
+ $parsedUrl = parse_url( $url );
+
+ return 'tcp://' . $parsedUrl['host'] . ':' . $parsedUrl['port'];
+ }
+
+ public function execute() {
+ parent::execute();
+
+ // At least on Centos 4.8 with PHP 5.1.6, using max_redirects to follow redirects
+ // causes a segfault
+ if ( version_compare( '5.1.7', phpversion(), '>' ) ) {
+ $this->manuallyRedirect = true;
+ }
+
+ if ( $this->parsedUrl['scheme'] != 'http' ) {
+ $this->status->fatal( 'http-invalid-scheme', $this->parsedUrl['scheme'] );
+ }
+
+ $this->reqHeaders['Accept'] = "*/*";
+ if ( $this->method == 'POST' ) {
+ // Required for HTTP 1.0 POSTs
+ $this->reqHeaders['Content-Length'] = strlen( $this->postData );
+ $this->reqHeaders['Content-type'] = "application/x-www-form-urlencoded";
+ }
+
+ $options = array();
+ if ( $this->proxy && !$this->noProxy ) {
+ $options['proxy'] = $this->urlToTCP( $this->proxy );
+ $options['request_fulluri'] = true;
+ }
+
+ if ( !$this->followRedirects || $this->manuallyRedirect ) {
+ $options['max_redirects'] = 0;
+ } else {
+ $options['max_redirects'] = $this->maxRedirects;
+ }
+
+ $options['method'] = $this->method;
+ $options['header'] = implode("\r\n", $this->getHeaderList());
+ // Note that at some future point we may want to support
+ // HTTP/1.1, but we'd have to write support for chunking
+ // in version of PHP < 5.3.1
+ $options['protocol_version'] = "1.0";
+
+ // This is how we tell PHP we want to deal with 404s (for example) ourselves.
+ // Only works on 5.2.10+
+ $options['ignore_errors'] = true;
+
+ if ( $this->postData ) {
+ $options['content'] = $this->postData;
+ }
+
+ $oldTimeout = false;
+ if ( version_compare( '5.2.1', phpversion(), '>' ) ) {
+ $oldTimeout = ini_set('default_socket_timeout', $this->timeout);
+ } else {
+ $options['timeout'] = $this->timeout;
+ }
+
+ $context = stream_context_create( array( 'http' => $options ) );
+
+ $this->headerList = array();
+ $reqCount = 0;
+ $url = $this->url;
+ do {
+ $again = false;
+ $reqCount++;
+ wfSuppressWarnings();
+ $fh = fopen( $url, "r", false, $context );
+ wfRestoreWarnings();
+ if ( $fh ) {
+ $result = stream_get_meta_data( $fh );
+ $this->headerList = $result['wrapper_data'];
+ $this->parseHeader();
+ $url = $this->getResponseHeader("Location");
+ $again = $this->manuallyRedirect && $this->followRedirects && $url
+ && $this->isRedirect() && $this->maxRedirects > $reqCount;
+ }
+ } while ( $again );
+
+ if ( $oldTimeout !== false ) {
+ ini_set('default_socket_timeout', $oldTimeout);
+ }
+ $this->setStatus();
+
+ if ( $fh === false ) {
+ $this->status->fatal( 'http-request-error' );
+ return $this->status;
+ }
+
+ if ( $result['timed_out'] ) {
+ $this->status->fatal( 'http-timed-out', $this->url );
+ return $this->status;
+ }
+
+ if($this->status->isOK()) {
+ while ( !feof( $fh ) ) {
+ $buf = fread( $fh, 8192 );
+ if ( $buf === false ) {
+ $this->status->fatal( 'http-read-error' );
+ break;
+ }
+ if ( strlen( $buf ) ) {
+ call_user_func( $this->callback, $fh, $buf );
+ }
+ }
+ }
+ fclose( $fh );
+
+ return $this->status;
+ }
}
diff --git a/includes/IP.php b/includes/IP.php
index e5973c2b..bbe70339 100644
--- a/includes/IP.php
+++ b/includes/IP.php
@@ -18,16 +18,24 @@ define( 'RE_IPV6_GAP', ':(?:0+:)*(?::(?:0+:)*)?' );
define( 'RE_IPV6_V4_PREFIX', '0*' . RE_IPV6_GAP . '(?:ffff:)?' );
// An IPv6 block is an IP address and a prefix (d1 to d128)
define( 'RE_IPV6_PREFIX', '(12[0-8]|1[01][0-9]|[1-9]?\d)');
-// An IPv6 IP is made up of 8 octets. However abbreviations like "::" can be used. This is lax!
-define( 'RE_IPV6_ADD', '(:(:' . RE_IPV6_WORD . '){1,7}|' . RE_IPV6_WORD . '(:{1,2}' . RE_IPV6_WORD . '|::$){1,7})' );
+// An IPv6 IP is made up of 8 octets. However abbreviations like "::" can be used.
+// This is lax! Number of octets/double colons validation not done.
+define( 'RE_IPV6_ADD',
+ '(' .
+ ':(:' . RE_IPV6_WORD . '){1,7}' . // IPs that start with ":"
+ '|' .
+ RE_IPV6_WORD . '(:{1,2}' . RE_IPV6_WORD . '|::$){1,7}' . // IPs that don't start with ":"
+ ')'
+);
define( 'RE_IPV6_BLOCK', RE_IPV6_ADD . '\/' . RE_IPV6_PREFIX );
// This might be useful for regexps used elsewhere, matches any IPv6 or IPv6 address or network
define( 'IP_ADDRESS_STRING',
'(?:' .
- RE_IP_ADD . '(\/' . RE_IP_PREFIX . '|)' .
+ RE_IP_ADD . '(\/' . RE_IP_PREFIX . '|)' . // IPv4
'|' .
- RE_IPV6_ADD . '(\/' . RE_IPV6_PREFIX . '|)' .
- ')' );
+ RE_IPV6_ADD . '(\/' . RE_IPV6_PREFIX . '|)' . // IPv6
+ ')'
+);
/**
* A collection of public static functions to play with IP address
@@ -52,10 +60,12 @@ class IP {
public static function isIPv6( $ip ) {
if ( !$ip ) return false;
if( is_array( $ip ) ) {
- throw new MWException( "invalid value passed to " . __METHOD__ );
+ throw new MWException( "invalid value passed to " . __METHOD__ );
}
+ $doubleColons = substr_count($ip, '::');
// IPv6 IPs with two "::" strings are ambiguous and thus invalid
- return preg_match( '/^' . RE_IPV6_ADD . '(\/' . RE_IPV6_PREFIX . '|)$/', $ip) && ( substr_count($ip, '::') < 2);
+ return preg_match( '/^' . RE_IPV6_ADD . '(\/' . RE_IPV6_PREFIX . '|)$/', $ip)
+ && ( $doubleColons == 1 || substr_count($ip,':') == 7 );
}
public static function isIPv4( $ip ) {
@@ -98,13 +108,13 @@ class IP {
*/
public static function toUnsigned6( $ip ) {
if ( !$ip ) return null;
- $ip = explode(':', self::sanitizeIP( $ip ) );
- $r_ip = '';
- foreach ($ip as $v) {
- $r_ip .= str_pad( $v, 4, 0, STR_PAD_LEFT );
- }
- $r_ip = wfBaseConvert( $r_ip, 16, 10 );
- return $r_ip;
+ $ip = explode(':', self::sanitizeIP( $ip ) );
+ $r_ip = '';
+ foreach ($ip as $v) {
+ $r_ip .= str_pad( $v, 4, 0, STR_PAD_LEFT );
+ }
+ $r_ip = wfBaseConvert( $r_ip, 16, 10 );
+ return $r_ip;
}
/**
@@ -123,14 +133,23 @@ class IP {
// Remove any whitespaces, convert to upper case
$ip = strtoupper( $ip );
// Expand zero abbreviations
- if ( strpos( $ip, '::' ) !== false ) {
- $ip = str_replace('::', str_repeat(':0', 8 - substr_count($ip, ':')) . ':', $ip);
- }
- // For IPs that start with "::", correct the final IP so that it starts with '0' and not ':'
- if ( $ip[0] == ':' ) $ip = "0$ip";
- // Remove leading zereos from each bloc as needed
- $ip = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip );
- return $ip;
+ $abbrevPos = strpos( $ip, '::' );
+ if ( $abbrevPos !== false ) {
+ // If the '::' is at the beginning...
+ if( $abbrevPos == 0 ) {
+ $repeat = '0:'; $extra = ''; $pad = 9; // 7+2 (due to '::')
+ // If the '::' is at the end...
+ } else if( $abbrevPos == (strlen($ip)-2) ) {
+ $repeat = ':0'; $extra = ''; $pad = 9; // 7+2 (due to '::')
+ // If the '::' is at the end...
+ } else {
+ $repeat = ':0'; $extra = ':'; $pad = 8; // 6+2 (due to '::')
+ }
+ $ip = str_replace('::', str_repeat($repeat, $pad-substr_count($ip,':')).$extra, $ip);
+ }
+ // Remove leading zereos from each bloc as needed
+ $ip = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip );
+ return $ip;
}
/**
@@ -148,7 +167,18 @@ class IP {
}
// NO leading zeroes
$ip_oct = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip_oct );
- return $ip_oct;
+ return $ip_oct;
+ }
+
+ /**
+ * Convert an IPv4 or IPv6 hexadecimal representation back to readable format
+ */
+ public static function formatHex( $hex ) {
+ if ( substr( $hex, 0, 3 ) == 'v6-' ) {
+ return self::hexToOctet( $hex );
+ } else {
+ return self::hexToQuad( $hex );
+ }
}
/**
@@ -156,7 +186,7 @@ class IP {
* @param $ip string hex IP
* @return string
*/
- public static function HextoOctet( $ip_hex ) {
+ public static function hextoOctet( $ip_hex ) {
// Convert to padded uppercase hex
$ip_hex = str_pad( strtoupper($ip_hex), 32, '0');
// Separate into 8 octets
@@ -166,7 +196,7 @@ class IP {
}
// NO leading zeroes
$ip_oct = preg_replace( '/(^|:)0+' . RE_IPV6_WORD . '/', '$1$2', $ip_oct );
- return $ip_oct;
+ return $ip_oct;
}
/**
@@ -176,14 +206,14 @@ class IP {
*/
public static function hexToQuad( $ip ) {
// Converts a hexadecimal IP to nnn.nnn.nnn.nnn format
- $dec = wfBaseConvert( $ip, 16, 10 );
- $parts[3] = $dec % 256;
- $dec /= 256;
- $parts[2] = $dec % 256;
- $dec /= 256;
- $parts[1] = $dec % 256;
- $parts[0] = $dec / 256;
- return implode( '.', array_reverse( $parts ) );
+ $s = '';
+ for ( $i = 0; $i < 4; $i++ ) {
+ if ( $s !== '' ) {
+ $s .= '.';
+ }
+ $s .= base_convert( substr( $ip, $i * 2, 2 ), 16, 10 );
+ }
+ return $s;
}
/**
@@ -267,7 +297,7 @@ class IP {
} else {
return array( $start, $end );
}
- }
+ }
/**
* Validate an IP address.
@@ -481,40 +511,40 @@ class IP {
} else {
return array( $start, $end );
}
- }
+ }
- /**
- * Determine if a given IPv4/IPv6 address is in a given CIDR network
- * @param $addr The address to check against the given range.
- * @param $range The range to check the given address against.
- * @return bool Whether or not the given address is in the given range.
- */
- public static function isInRange( $addr, $range ) {
- // Convert to IPv6 if needed
- $unsignedIP = self::toHex( $addr );
- list( $start, $end ) = self::parseRange( $range );
- return (($unsignedIP >= $start) && ($unsignedIP <= $end));
- }
+ /**
+ * Determine if a given IPv4/IPv6 address is in a given CIDR network
+ * @param $addr The address to check against the given range.
+ * @param $range The range to check the given address against.
+ * @return bool Whether or not the given address is in the given range.
+ */
+ public static function isInRange( $addr, $range ) {
+ // Convert to IPv6 if needed
+ $hexIP = self::toHex( $addr );
+ list( $start, $end ) = self::parseRange( $range );
+ return (strcmp($hexIP, $start) >= 0 &&
+ strcmp($hexIP, $end) <= 0);
+ }
- /**
- * Convert some unusual representations of IPv4 addresses to their
- * canonical dotted quad representation.
- *
- * This currently only checks a few IPV4-to-IPv6 related cases. More
- * unusual representations may be added later.
- *
- * @param $addr something that might be an IP address
- * @return valid dotted quad IPv4 address or null
- */
- public static function canonicalize( $addr ) {
+ /**
+ * Convert some unusual representations of IPv4 addresses to their
+ * canonical dotted quad representation.
+ *
+ * This currently only checks a few IPV4-to-IPv6 related cases. More
+ * unusual representations may be added later.
+ *
+ * @param $addr something that might be an IP address
+ * @return valid dotted quad IPv4 address or null
+ */
+ public static function canonicalize( $addr ) {
if ( self::isValid( $addr ) )
return $addr;
- // Annoying IPv6 representations like ::ffff:1.2.3.4
+ // Turn mapped addresses from ::ce:ffff:1.2.3.4 to 1.2.3.4
if ( strpos($addr,':') !==false && strpos($addr,'.') !==false ) {
- $addr = str_replace( '.', ':', $addr );
- if( IP::isIPv6( $addr ) )
- return $addr;
+ $addr = substr( $addr, strrpos($addr,':')+1 );
+ if( self::isIPv4($addr) ) return $addr;
}
// IPv6 loopback address
@@ -524,10 +554,10 @@ class IP {
// IPv4-mapped and IPv4-compatible IPv6 addresses
if ( preg_match( '/^' . RE_IPV6_V4_PREFIX . '(' . RE_IP_ADD . ')$/i', $addr, $m ) )
- return $m[1];
+ return $m[1];
if ( preg_match( '/^' . RE_IPV6_V4_PREFIX . RE_IPV6_WORD . ':' . RE_IPV6_WORD . '$/i', $addr, $m ) )
- return long2ip( ( hexdec( $m[1] ) << 16 ) + hexdec( $m[2] ) );
+ return long2ip( ( hexdec( $m[1] ) << 16 ) + hexdec( $m[2] ) );
return null; // give up
- }
+ }
}
diff --git a/includes/ImageFunctions.php b/includes/ImageFunctions.php
index 73d935a7..5f01ab6e 100644
--- a/includes/ImageFunctions.php
+++ b/includes/ImageFunctions.php
@@ -123,6 +123,12 @@ function wfIsBadImage( $name, $contextTitle = false ) {
static $badImages = false;
wfProfileIn( __METHOD__ );
+ # Handle redirects
+ $redirectTitle = RepoGroup::singleton()->checkRedirect( Title::makeTitle( NS_FILE, $name ) );
+ if( $redirectTitle ) {
+ $name = $redirectTitle->getDbKey();
+ }
+
# Run the extension hook
$bad = false;
if( !wfRunHooks( 'BadImage', array( $name, &$bad ) ) ) {
diff --git a/includes/ImageGallery.php b/includes/ImageGallery.php
index 8a38bed7..5bff0ae3 100644
--- a/includes/ImageGallery.php
+++ b/includes/ImageGallery.php
@@ -236,13 +236,13 @@ class ImageGallery
$i = 0;
foreach ( $this->mImages as $pair ) {
$nt = $pair[0];
- $text = $pair[1];
+ $text = $pair[1]; # "text" means "caption" here
# Give extensions a chance to select the file revision for us
$time = $descQuery = false;
wfRunHooks( 'BeforeGalleryFindFile', array( &$this, &$nt, &$time, &$descQuery ) );
- $img = wfFindFile( $nt, $time );
+ $img = wfFindFile( $nt, array( 'time' => $time ) );
if( $nt->getNamespace() != NS_FILE || !$img ) {
# We're dealing with a non-image, spit out the name and be done with it.
@@ -250,14 +250,30 @@ class ImageGallery
. htmlspecialchars( $nt->getText() ) . '</div>';
} elseif( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
# The image is blacklisted, just show it as a text link.
- $thumbhtml = "\n\t\t\t".'<div style="height: '.($this->mHeights*1.25+2).'px;">'
- . $sk->makeKnownLinkObj( $nt, htmlspecialchars( $nt->getText() ) ) . '</div>';
+ $thumbhtml = "\n\t\t\t".'<div style="height: '.($this->mHeights*1.25+2).'px;">' .
+ $sk->link(
+ $nt,
+ htmlspecialchars( $nt->getText() ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) .
+ '</div>';
} elseif( !( $thumb = $img->transform( $params ) ) ) {
# Error generating thumbnail.
$thumbhtml = "\n\t\t\t".'<div style="height: '.($this->mHeights*1.25+2).'px;">'
. htmlspecialchars( $img->getLastError() ) . '</div>';
} else {
$vpad = floor( ( 1.25*$this->mHeights - $thumb->height ) /2 ) - 2;
+
+ $imageParameters = array(
+ 'desc-link' => true,
+ 'desc-query' => $descQuery
+ );
+ # In the absence of a caption, fall back on providing screen readers with the filename as alt text
+ if ( $text == '' ) {
+ $imageParameters['alt'] = $nt->getText();
+ }
$thumbhtml = "\n\t\t\t".
'<div class="thumb" style="padding: ' . $vpad . 'px 0; width: ' .($this->mWidths+30).'px;">'
@@ -265,7 +281,7 @@ class ImageGallery
# handlers since they may emit block-level elements as opposed to simple <img> tags.
# ref http://css-discuss.incutio.com/?page=CenteringBlockElement
. '<div style="margin-left: auto; margin-right: auto; width: ' .$this->mWidths.'px;">'
- . $thumb->toHtml( array( 'desc-link' => true, 'desc-query' => $descQuery ) ) . '</div></div>';
+ . $thumb->toHtml( $imageParameters ) . '</div></div>';
// Call parser transform hook
if ( $this->mParser && $img->getHandler() ) {
@@ -274,7 +290,8 @@ class ImageGallery
}
//TODO
- //$ul = $sk->makeLink( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}", $ut );
+ // $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}" );
+ // $ul = $sk->link( $linkTarget, $ut );
if( $this->mShowBytes ) {
if( $img ) {
@@ -289,7 +306,13 @@ class ImageGallery
}
$textlink = $this->mShowFilename ?
- $sk->makeKnownLinkObj( $nt, htmlspecialchars( $wgLang->truncate( $nt->getText(), 20 ) ) ) . "<br />\n" :
+ $sk->link(
+ $nt,
+ htmlspecialchars( $wgLang->truncate( $nt->getText(), 20 ) ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . "<br />\n" :
'' ;
# ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
diff --git a/includes/ImagePage.php b/includes/ImagePage.php
index 4f3b859a..dd2c2ab1 100644
--- a/includes/ImagePage.php
+++ b/includes/ImagePage.php
@@ -84,6 +84,8 @@ class ImagePage extends Article {
if( $this->mTitle->getNamespace() != NS_FILE || ( isset( $diff ) && $diffOnly ) )
return Article::view();
+
+ $this->showRedirectedFromHeader();
if( $wgShowEXIF && $this->displayImg->exists() ) {
// FIXME: bad interface, see note on MediaHandler::formatMetadata().
@@ -115,7 +117,7 @@ class ImagePage extends Article {
if( $fol != '-' && !wfEmptyMsg( 'shareddescriptionfollows', $fol ) ) {
$wgOut->addWikiText( $fol );
}
- $wgOut->addHTML( '<div id="shared-image-desc">' . $this->mExtraDescription . '</div>' );
+ $wgOut->addHTML( '<div id="shared-image-desc">' . $this->mExtraDescription . "</div>\n" );
}
$this->closeShowImage();
@@ -130,12 +132,18 @@ class ImagePage extends Article {
# Yet we return metadata about the target. Definitely an issue in the FileRepo
$this->imageRedirects();
$this->imageLinks();
+
+ # Allow extensions to add something after the image links
+ $html = '';
+ wfRunHooks( 'ImagePageAfterImageLinks', array( $this, &$html ) );
+ if ( $html)
+ $wgOut->addHTML( $html );
if( $showmeta ) {
global $wgStylePath, $wgStyleVersion;
$expand = htmlspecialchars( Xml::escapeJsString( wfMsg( 'metadata-expand' ) ) );
$collapse = htmlspecialchars( Xml::escapeJsString( wfMsg( 'metadata-collapse' ) ) );
- $wgOut->addHTML( Xml::element( 'h2', array( 'id' => 'metadata' ), wfMsg( 'metadata' ) ). "\n" );
+ $wgOut->addHTML( Xml::element( 'h2', array( 'id' => 'metadata' ), wfMsg( 'metadata' ) ) . "\n" );
$wgOut->addWikiText( $this->makeMetadataTable( $formattedMetadata ) );
$wgOut->addScriptFile( 'metadata.js' );
$wgOut->addHTML(
@@ -222,14 +230,18 @@ class ImagePage extends Article {
* @return string
*/
protected function showTOC( $metadata ) {
- global $wgLang;
- $r = '<ul id="filetoc">
- <li><a href="#file">' . $wgLang->getNsText( NS_FILE ) . '</a></li>
- <li><a href="#filehistory">' . wfMsgHtml( 'filehist' ) . '</a></li>
- <li><a href="#filelinks">' . wfMsgHtml( 'imagelinks' ) . '</a></li>' .
- ($metadata ? ' <li><a href="#metadata">' . wfMsgHtml( 'metadata' ) . '</a></li>' : '') . '
- </ul>';
- return $r;
+ $r = array(
+ '<li><a href="#file">' . wfMsgHtml( 'file-anchor-link' ) . '</a></li>',
+ '<li><a href="#filehistory">' . wfMsgHtml( 'filehist' ) . '</a></li>',
+ '<li><a href="#filelinks">' . wfMsgHtml( 'imagelinks' ) . '</a></li>',
+ );
+ if ( $metadata ) {
+ $r[] = '<li><a href="#metadata">' . wfMsgHtml( 'metadata' ) . '</a></li>';
+ }
+
+ wfRunHooks( 'ImagePageShowTOC', array( $this, &$r ) );
+
+ return '<ul id="filetoc">' . implode( "\n", $r ) . '</ul>';
}
/**
@@ -241,8 +253,9 @@ class ImagePage extends Article {
* @return string
*/
protected function makeMetadataTable( $metadata ) {
- $r = wfMsg( 'metadata-help' ) . "\n\n";
- $r .= "{| id=mw_metadata class=mw_metadata\n";
+ $r = "<div class=\"mw-imagepage-section-metadata\">";
+ $r .= wfMsgNoTrans( 'metadata-help' );
+ $r .= "<table id=\"mw_metadata\" class=\"mw_metadata\">\n";
foreach ( $metadata as $type => $stuff ) {
foreach ( $stuff as $v ) {
# FIXME, why is this using escapeId for a class?!
@@ -250,12 +263,12 @@ class ImagePage extends Article {
if( $type == 'collapsed' ) {
$class .= ' collapsable';
}
- $r .= "|- class=\"$class\"\n";
- $r .= "!| {$v['name']}\n";
- $r .= "|| {$v['value']}\n";
+ $r .= "<tr class=\"$class\">\n";
+ $r .= "<th>{$v['name']}</th>\n";
+ $r .= "<td>{$v['value']}</td>\n</tr>";
}
}
- $r .= '|}';
+ $r .= "</table>\n</div>\n";
return $r;
}
@@ -274,7 +287,8 @@ class ImagePage extends Article {
}
protected function openShowImage() {
- global $wgOut, $wgUser, $wgImageLimits, $wgRequest, $wgLang, $wgContLang;
+ global $wgOut, $wgUser, $wgImageLimits, $wgRequest,
+ $wgLang, $wgContLang, $wgEnableUploads;
$this->loadFile();
@@ -315,7 +329,7 @@ class ImagePage extends Article {
$linkAttribs = array( 'href' => $full_url );
$longDesc = $this->displayImg->getLongDesc();
- wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this , &$wgOut ) ) ;
+ wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this, &$wgOut ) );
if( $this->displayImg->allowInlineDisplay() ) {
# image
@@ -360,7 +374,8 @@ class ImagePage extends Article {
'<br />' . Xml::tags( 'a', $linkAttribs, $msgbig ) . "$dirmark " . $longDesc;
}
- if( $this->displayImg->isMultipage() ) {
+ $isMulti = $this->displayImg->isMultipage() && $this->displayImg->pageCount() > 1;
+ if( $isMulti ) {
$wgOut->addHTML( '<table class="multipageimage"><tr><td>' );
}
@@ -371,15 +386,21 @@ class ImagePage extends Article {
);
$wgOut->addHTML( '<div class="fullImageLink" id="file">' .
$thumbnail->toHtml( $options ) .
- $anchorclose . '</div>' );
+ $anchorclose . "</div>\n" );
}
- if( $this->displayImg->isMultipage() ) {
+ if( $isMulti ) {
$count = $this->displayImg->pageCount();
if( $page > 1 ) {
$label = $wgOut->parse( wfMsg( 'imgmultipageprev' ), false );
- $link = $sk->makeKnownLinkObj( $this->mTitle, $label, 'page='. ($page-1) );
+ $link = $sk->link(
+ $this->mTitle,
+ $label,
+ array(),
+ array( 'page' => $page - 1 ),
+ array( 'known', 'noclasses' )
+ );
$thumb1 = $sk->makeThumbLinkObj( $this->mTitle, $this->displayImg, $link, $label, 'none',
array( 'page' => $page - 1 ) );
} else {
@@ -388,7 +409,13 @@ class ImagePage extends Article {
if( $page < $count ) {
$label = wfMsg( 'imgmultipagenext' );
- $link = $sk->makeKnownLinkObj( $this->mTitle, $label, 'page='. ($page+1) );
+ $link = $sk->link(
+ $this->mTitle,
+ $label,
+ array(),
+ array( 'page' => $page + 1 ),
+ array( 'known', 'noclasses' )
+ );
$thumb2 = $sk->makeThumbLinkObj( $this->mTitle, $this->displayImg, $link, $label, 'none',
array( 'page' => $page + 1 ) );
} else {
@@ -427,8 +454,8 @@ class ImagePage extends Article {
$icon= $this->displayImg->iconThumb();
$wgOut->addHTML( '<div class="fullImageLink" id="file">' .
- $icon->toHtml( array( 'desc-link' => true ) ) .
- '</div>' );
+ $icon->toHtml( array( 'file-link' => true ) ) .
+ "</div>\n" );
}
$showLink = true;
@@ -437,25 +464,26 @@ class ImagePage extends Article {
if($showLink) {
$filename = wfEscapeWikiText( $this->displayImg->getName() );
+ $medialink = "[[Media:$filename|$filename]]";
if( !$this->displayImg->isSafeFile() ) {
$warning = wfMsgNoTrans( 'mediawarning' );
$wgOut->addWikiText( <<<EOT
<div class="fullMedia">
-<span class="dangerousLink">[[Media:$filename|$filename]]</span>$dirmark
-<span class="fileInfo"> $longDesc</span>
+<span class="dangerousLink">{$medialink}</span>$dirmark
+<span class="fileInfo">$longDesc</span>
</div>
-
<div class="mediaWarning">$warning</div>
EOT
);
} else {
$wgOut->addWikiText( <<<EOT
<div class="fullMedia">
-[[Media:$filename|$filename]]$dirmark <span class="fileInfo"> $longDesc</span>
+{$medialink}{$dirmark}
+<span class="fileInfo">$longDesc</span>
</div>
EOT
- );
+ );
}
}
@@ -464,12 +492,20 @@ EOT
}
} else {
# Image does not exist
-
- $title = SpecialPage::getTitleFor( 'Upload' );
- $link = $sk->makeKnownLinkObj($title, wfMsgHtml('noimage-linktext'),
- 'wpDestFile=' . urlencode( $this->displayImg->getName() ) );
+ if ( $wgEnableUploads && $wgUser->isAllowed( 'upload' ) ) {
+ // Only show an upload link if the user can upload
+ $uploadTitle = SpecialPage::getTitleFor( 'Upload' );
+ $nofile = array(
+ 'filepage-nofile-link',
+ $uploadTitle->getFullUrl( array( 'wpDestFile' => $this->img->getName() ) )
+ );
+ }
+ else
+ {
+ $nofile = 'filepage-nofile';
+ }
$wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->addHTML( wfMsgWikiHtml( 'noimage', $link ) );
+ $wgOut->wrapWikiMsg( "<div id='mw-imagepage-nofile' class='plainlinks'>\n$1\n</div>", $nofile );
}
}
@@ -477,26 +513,24 @@ EOT
* Show a notice that the file is from a shared repository
*/
protected function printSharedImageText() {
- global $wgOut, $wgUser;
+ global $wgOut;
$this->loadFile();
$descUrl = $this->img->getDescriptionUrl();
$descText = $this->img->getDescriptionText();
+
+ $wrap = "<div class=\"sharedUploadNotice\">\n$1\n</div>\n";
+ $repo = $this->img->getRepo()->getDisplayName();
+
$msg = '';
- if( $descUrl ) {
- $sk = $wgUser->getSkin();
- $link = $sk->makeExternalLink( $descUrl, wfMsg( 'shareduploadwiki-linktext' ) );
- $msg = ( $descText ) ? 'shareduploadwiki-desc' : 'shareduploadwiki';
- $msg = wfMsgExt( $msg, array( 'parseinline', 'replaceafter' ), $link );
- if( $msg == '-' ) {
- $msg = '';
- }
+ if( $descUrl && $descText && wfMsgNoTrans( 'sharedupload-desc-here' ) !== '-' ) {
+ $wgOut->wrapWikiMsg( $wrap, array( 'sharedupload-desc-here', $repo, $descUrl ) );
+ } elseif ( $descUrl && wfMsgNoTrans( 'sharedupload-desc-there' ) !== '-' ) {
+ $wgOut->wrapWikiMsg( $wrap, array( 'sharedupload-desc-there', $repo, $descUrl ) );
+ } else {
+ $wgOut->wrapWikiMsg( $wrap, array( 'sharedupload', $repo ), ''/*BACKCOMPAT*/ );
}
- $s = "<div class='sharedUploadNotice'>";
- $s .= wfMsgWikiHtml( 'sharedupload', $this->img->getRepo()->getDisplayName(), $msg );
- $s .= "</div>";
- $wgOut->addHTML( $s );
if( $descText ) {
$this->mExtraDescription = $descText;
@@ -506,7 +540,10 @@ EOT
public function getUploadUrl() {
$this->loadFile();
$uploadTitle = SpecialPage::getTitleFor( 'Upload' );
- return $uploadTitle->getFullUrl( 'wpDestFile=' . urlencode( $this->img->getName() ) . '&wpForReUpload=1' );
+ return $uploadTitle->getFullUrl( array(
+ 'wpDestFile' => $this->img->getName(),
+ 'wpForReUpload' => 1
+ ) );
}
/**
@@ -514,7 +551,9 @@ EOT
* external editing (and instructions link) etc.
*/
protected function uploadLinksBox() {
- global $wgUser, $wgOut;
+ global $wgUser, $wgOut, $wgEnableUploads, $wgUseExternalEditor;
+
+ if( !$wgEnableUploads ) { return; }
$this->loadFile();
if( !$this->img->isLocal() )
@@ -522,19 +561,31 @@ EOT
$sk = $wgUser->getSkin();
- $wgOut->addHTML( '<br /><ul>' );
+ $wgOut->addHTML( "<br /><ul>\n" );
# "Upload a new version of this file" link
- if( UploadForm::userCanReUpload($wgUser,$this->img->name) ) {
+ if( UploadBase::userCanReUpload($wgUser,$this->img->name) ) {
$ulink = $sk->makeExternalLink( $this->getUploadUrl(), wfMsg( 'uploadnewversion-linktext' ) );
- $wgOut->addHTML( "<li><div class='plainlinks'>{$ulink}</div></li>" );
+ $wgOut->addHTML( "<li id=\"mw-imagepage-reupload-link\"><div class=\"plainlinks\">{$ulink}</div></li>\n" );
}
# External editing link
- $elink = $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'edit-externally' ), 'action=edit&externaledit=true&mode=file' );
- $wgOut->addHTML( '<li>' . $elink . ' <small>' . wfMsgExt( 'edit-externally-help', array( 'parseinline' ) ) . '</small></li>' );
+ if ( $wgUseExternalEditor ) {
+ $elink = $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'edit-externally' ),
+ array(),
+ array(
+ 'action' => 'edit',
+ 'externaledit' => 'true',
+ 'mode' => 'file'
+ ),
+ array( 'known', 'noclasses' )
+ );
+ $wgOut->addHTML( '<li id="mw-imagepage-edit-external">' . $elink . ' <small>' . wfMsgExt( 'edit-externally-help', array( 'parseinline' ) ) . "</small></li>\n" );
+ }
- $wgOut->addHTML( '</ul>' );
+ $wgOut->addHTML( "</ul>\n" );
}
protected function closeShowImage() {} # For overloading
@@ -544,7 +595,7 @@ EOT
* we follow it with an upload history of the image and its usage.
*/
protected function imageHistory() {
- global $wgOut, $wgUseExternalEditor;
+ global $wgOut;
$this->loadFile();
$pager = new ImageHistoryPseudoPager( $this );
@@ -554,7 +605,7 @@ EOT
# Exist check because we don't want to show this on pages where an image
# doesn't exist along with the noimage message, that would suck. -ævar
- if( $wgUseExternalEditor && $this->img->exists() ) {
+ if( $this->img->exists() ) {
$this->uploadLinksBox();
}
}
@@ -599,17 +650,23 @@ EOT
$count++;
if( $count <= $limit ) {
// We have not yet reached the extra one that tells us there is more to fetch
- $name = Title::makeTitle( $s->page_namespace, $s->page_title );
- $link = $sk->makeKnownLinkObj( $name, "" );
+ $link = $sk->link(
+ Title::makeTitle( $s->page_namespace, $s->page_title ),
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
$wgOut->addHTML( "<li>{$link}</li>\n" );
}
}
- $wgOut->addHTML( "</ul></div>\n" );
+ $wgOut->addHTML( "</ul>\n" );
$res->free();
// Add a links to [[Special:Whatlinkshere]]
if( $count > $limit )
$wgOut->addWikiMsg( 'morelinkstoimage', $this->mTitle->getPrefixedDBkey() );
+ $wgOut->addHTML( "</div>\n" );
}
protected function imageRedirects() {
@@ -626,7 +683,13 @@ EOT
$sk = $wgUser->getSkin();
foreach ( $redirects as $title ) {
- $link = $sk->makeKnownLinkObj( $title, "", "redirect=no" );
+ $link = $sk->link(
+ $title,
+ null,
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ );
$wgOut->addHTML( "<li>{$link}</li>\n" );
}
$wgOut->addHTML( "</ul></div>\n" );
@@ -650,9 +713,15 @@ EOT
$sk = $wgUser->getSkin();
foreach ( $dupes as $file ) {
$fromSrc = '';
- if( $file->isLocal() )
- $link = $sk->makeKnownLinkObj( $file->getTitle(), "" );
- else {
+ if( $file->isLocal() ) {
+ $link = $sk->link(
+ $file->getTitle(),
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ } else {
$link = $sk->makeExternalLink( $file->getDescriptionUrl(),
$file->getTitle()->getPrefixedText() );
$fromSrc = wfMsg( 'shared-repo-from', $file->getRepo()->getDisplayName() );
@@ -666,6 +735,13 @@ EOT
* Delete the file, or an earlier version of it
*/
public function delete() {
+ global $wgUploadMaintenance;
+ if( $wgUploadMaintenance && $this->mTitle && $this->mTitle->getNamespace() == NS_FILE ) {
+ global $wgOut;
+ $wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n", array( 'filedelete-maintenance' ) );
+ return;
+ }
+
$this->loadFile();
if( !$this->img->exists() || !$this->img->isLocal() || $this->img->getRedirected() ) {
// Standard article deletion
@@ -697,7 +773,10 @@ EOT
$this->img->upgradeRow();
$this->img->purgeCache();
} else {
- wfDebug( "ImagePage::doPurge no image\n" );
+ wfDebug( "ImagePage::doPurge no image for " . $this->img->getName() . "; limiting purge to cache only\n" );
+ // even if the file supposedly doesn't exist, force any cached information
+ // to be updated (in case the cached information is wrong)
+ $this->img->purgeCache();
}
parent::doPurge();
}
@@ -723,15 +802,16 @@ EOT
*/
class ImageHistoryList {
- protected $imagePage, $img, $skin, $title, $repo;
+ protected $imagePage, $img, $skin, $title, $repo, $showThumb;
public function __construct( $imagePage ) {
- global $wgUser;
+ global $wgUser, $wgShowArchiveThumbnails;
$this->skin = $wgUser->getSkin();
$this->current = $imagePage->getFile();
$this->img = $imagePage->getDisplayedFile();
$this->title = $imagePage->getTitle();
$this->imagePage = $imagePage;
+ $this->showThumb = $wgShowArchiveThumbnails && $this->img->canRender();
}
public function getImagePage() {
@@ -748,14 +828,15 @@ class ImageHistoryList {
public function beginImageHistoryList( $navLinks = '' ) {
global $wgOut, $wgUser;
- return Xml::element( 'h2', array( 'id' => 'filehistory' ), wfMsg( 'filehist' ) )
+ return Xml::element( 'h2', array( 'id' => 'filehistory' ), wfMsg( 'filehist' ) ) . "\n"
+ . "<div id=\"mw-imagepage-section-filehistory\">\n"
. $wgOut->parse( wfMsgNoTrans( 'filehist-help' ) )
- . $navLinks
- . Xml::openElement( 'table', array( 'class' => 'filehistory' ) ) . "\n"
+ . $navLinks . "\n"
+ . Xml::openElement( 'table', array( 'class' => 'wikitable filehistory' ) ) . "\n"
. '<tr><td></td>'
- . ( $this->current->isLocal() && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deleterevision') ) ? '<td></td>' : '' )
+ . ( $this->current->isLocal() && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deletedhistory') ) ? '<td></td>' : '' )
. '<th>' . wfMsgHtml( 'filehist-datetime' ) . '</th>'
- . '<th>' . wfMsgHtml( 'filehist-thumb' ) . '</th>'
+ . ( $this->showThumb ? '<th>' . wfMsgHtml( 'filehist-thumb' ) . '</th>' : '' )
. '<th>' . wfMsgHtml( 'filehist-dimensions' ) . '</th>'
. '<th>' . wfMsgHtml( 'filehist-user' ) . '</th>'
. '<th>' . wfMsgHtml( 'filehist-comment' ) . '</th>'
@@ -763,7 +844,7 @@ class ImageHistoryList {
}
public function endImageHistoryList( $navLinks = '' ) {
- return "</table>\n$navLinks\n";
+ return "</table>\n$navLinks\n</div>\n";
}
public function imageHistoryLine( $iscur, $file ) {
@@ -773,49 +854,45 @@ class ImageHistoryList {
$img = $iscur ? $file->getName() : $file->getArchiveName();
$user = $file->getUser('id');
$usertext = $file->getUser('text');
- $size = $file->getSize();
$description = $file->getDescription();
- $dims = $file->getDimensionsString();
- $sha1 = $file->getSha1();
$local = $this->current->isLocal();
$row = $css = $selected = '';
// Deletion link
- if( $local && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deleterevision') ) ) {
+ if( $local && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deletedhistory') ) ) {
$row .= '<td>';
# Link to remove from history
if( $wgUser->isAllowed( 'delete' ) ) {
- $q = array();
- $q[] = 'action=delete';
+ $q = array( 'action' => 'delete' );
if( !$iscur )
- $q[] = 'oldimage=' . urlencode( $img );
- $row .= $this->skin->makeKnownLinkObj(
+ $q['oldimage'] = $img;
+ $row .= $this->skin->link(
$this->title,
wfMsgHtml( $iscur ? 'filehist-deleteall' : 'filehist-deleteone' ),
- implode( '&', $q )
+ array(), $q, array( 'known' )
);
}
- # Link to hide content
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ # Link to hide content. Don't show useless link to people who cannot hide revisions.
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($wgUser->isAllowed('deletedhistory') && $file->getVisibility()) ) {
if( $wgUser->isAllowed('delete') ) {
- $row .= '<br/>';
+ $row .= '<br />';
}
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
// If file is top revision or locked from this user, don't link
if( $iscur || !$file->userCan(File::DELETED_RESTRICTED) ) {
- $del = wfMsgHtml( 'rev-delundel' );
+ $del = $this->skin->revDeleteLinkDisabled( $canHide );
} else {
- // If the file was hidden, link to sha-1
- list($ts,$name) = explode('!',$img,2);
- $del = $this->skin->makeKnownLinkObj( $revdel, wfMsg( 'rev-delundel' ),
- 'target=' . urlencode( $wgTitle->getPrefixedText() ) .
- '&oldimage=' . urlencode( $ts ) );
- // Bolden oversighted content
- if( $file->isDeleted(File::DELETED_RESTRICTED) )
- $del = "<strong>$del</strong>";
+ list( $ts, $name ) = explode( '!', $img, 2 );
+ $query = array(
+ 'type' => 'oldimage',
+ 'target' => $wgTitle->getPrefixedText(),
+ 'ids' => $ts,
+ );
+ $del = $this->skin->revDeleteLink( $query,
+ $file->isDeleted(File::DELETED_RESTRICTED), $canHide );
}
- $row .= "<tt style='white-space: nowrap;'><small>$del</small></tt>";
+ $row .= $del;
}
$row .= '</td>';
}
@@ -828,13 +905,17 @@ class ImageHistoryList {
if( $file->isDeleted(File::DELETED_FILE) ) {
$row .= wfMsgHtml('filehist-revert');
} else {
- $q = array();
- $q[] = 'action=revert';
- $q[] = 'oldimage=' . urlencode( $img );
- $q[] = 'wpEditToken=' . urlencode( $wgUser->editToken( $img ) );
- $row .= $this->skin->makeKnownLinkObj( $this->title,
+ $row .= $this->skin->link(
+ $this->title,
wfMsgHtml( 'filehist-revert' ),
- implode( '&', $q ) );
+ array(),
+ array(
+ 'action' => 'revert',
+ 'oldimage' => $img,
+ 'wpEditToken' => $wgUser->editToken( $img )
+ ),
+ array( 'known', 'noclasses' )
+ );
}
}
$row .= '</td>';
@@ -847,43 +928,40 @@ class ImageHistoryList {
if( !$file->userCan(File::DELETED_FILE) ) {
# Don't link to unviewable files
$row .= '<span class="history-deleted">' . $wgLang->timeAndDate( $timestamp, true ) . '</span>';
- } else if( $file->isDeleted(File::DELETED_FILE) ) {
+ } elseif( $file->isDeleted(File::DELETED_FILE) ) {
$revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
# Make a link to review the image
- $url = $this->skin->makeKnownLinkObj( $revdel, $wgLang->timeAndDate( $timestamp, true ),
- "target=".$wgTitle->getPrefixedText()."&file=$sha1.".$this->current->getExtension() );
+ $url = $this->skin->link(
+ $revdel,
+ $wgLang->timeAndDate( $timestamp, true ),
+ array(),
+ array(
+ 'target' => $wgTitle->getPrefixedText(),
+ 'file' => $img,
+ 'token' => $wgUser->editToken( $img )
+ ),
+ array( 'known', 'noclasses' )
+ );
$row .= '<span class="history-deleted">'.$url.'</span>';
} else {
$url = $iscur ? $this->current->getUrl() : $this->current->getArchiveUrl( $img );
$row .= Xml::element( 'a', array( 'href' => $url ), $wgLang->timeAndDate( $timestamp, true ) );
}
+ $row .= "</td>";
// Thumbnail
- if( $file->allowInlineDisplay() && $file->userCan( File::DELETED_FILE ) && !$file->isDeleted( File::DELETED_FILE ) ) {
- $params = array(
- 'width' => '120',
- 'height' => '120',
- );
- $thumbnail = $file->transform( $params );
- $options = array(
- 'alt' => wfMsg( 'filehist-thumbtext', $wgLang->timeAndDate( $timestamp, true ) ),
- 'file-link' => true,
- );
- $row .= '</td><td>' . ( $thumbnail ? $thumbnail->toHtml( $options ) :
- wfMsgHtml( 'filehist-nothumb' ) );
- } else {
- $row .= '</td><td>' . wfMsgHtml( 'filehist-nothumb' );
+ if ( $this->showThumb ) {
+ $row .= '<td>' . $this->getThumbForLine( $file ) . '</td>';
}
- $row .= "</td><td>";
-
- // Image dimensions
- $row .= htmlspecialchars( $dims );
- // File size
- $row .= " <span style='white-space: nowrap;'>(" . $this->skin->formatSize( $size ) . ')</span>';
+ // Image dimensions + size
+ $row .= '<td>';
+ $row .= htmlspecialchars( $file->getDimensionsString() );
+ $row .= " <span style='white-space: nowrap;'>(" . $this->skin->formatSize( $file->getSize() ) . ')</span>';
+ $row .= '</td>';
// Uploading user
- $row .= '</td><td>';
+ $row .= '<td>';
if( $local ) {
// Hide deleted usernames
if( $file->isDeleted(File::DELETED_USER) ) {
@@ -910,6 +988,33 @@ class ImageHistoryList {
return "<tr{$classAttr}>{$row}</tr>\n";
}
+
+ protected function getThumbForLine( $file ) {
+ global $wgLang;
+
+ if( $file->allowInlineDisplay() && $file->userCan( File::DELETED_FILE ) && !$file->isDeleted( File::DELETED_FILE ) ) {
+ $params = array(
+ 'width' => '120',
+ 'height' => '120',
+ );
+ $timestamp = wfTimestamp(TS_MW, $file->getTimestamp());
+
+ $thumbnail = $file->transform( $params );
+ $options = array(
+ 'alt' => wfMsg( 'filehist-thumbtext',
+ $wgLang->timeAndDate( $timestamp, true ),
+ $wgLang->date( $timestamp, true ),
+ $wgLang->time( $timestamp, true ) ),
+ 'file-link' => true,
+ );
+
+ if ( !$thumbnail ) return wfMsgHtml( 'filehist-nothumb' );
+
+ return $thumbnail->toHtml( $options );
+ } else {
+ return wfMsgHtml( 'filehist-nothumb' );
+ }
+ }
}
class ImageHistoryPseudoPager extends ReverseChronologicalPager {
@@ -918,7 +1023,7 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
$this->mImagePage = $imagePage;
$this->mTitle = clone( $imagePage->getTitle() );
$this->mTitle->setFragment( '#filehistory' );
- $this->mImg = NULL;
+ $this->mImg = null;
$this->mHist = array();
$this->mRange = array( 0, 0 ); // display range
}
diff --git a/includes/ImageQueryPage.php b/includes/ImageQueryPage.php
index 3ab0b858..180201a2 100644
--- a/includes/ImageQueryPage.php
+++ b/includes/ImageQueryPage.php
@@ -13,12 +13,12 @@ class ImageQueryPage extends QueryPage {
* Format and output report results using the given information plus
* OutputPage
*
- * @param OutputPage $out OutputPage to print to
- * @param Skin $skin User skin to use
- * @param Database $dbr Database (read) connection to use
- * @param int $res Result pointer
- * @param int $num Number of available result rows
- * @param int $offset Paging offset
+ * @param $out OutputPage to print to
+ * @param $skin Skin: user skin to use
+ * @param $dbr Database (read) connection to use
+ * @param $res Integer: result pointer
+ * @param $num Integer: number of available result rows
+ * @param $offset Integer: paging offset
*/
protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
if( $num > 0 ) {
@@ -41,7 +41,7 @@ class ImageQueryPage extends QueryPage {
/**
* Prepare an image object given a result row
*
- * @param object $row Result row
+ * @param $row Object: result row
* @return Image
*/
private function prepareImage( $row ) {
@@ -55,8 +55,8 @@ class ImageQueryPage extends QueryPage {
/**
* Get additional HTML to be shown in a results' cell
*
- * @param object $row Result row
- * @return string
+ * @param $row Object: result row
+ * @return String
*/
protected function getCellHtml( $row ) {
return '';
diff --git a/includes/Import.php b/includes/Import.php
index 973866df..45908a66 100644
--- a/includes/Import.php
+++ b/includes/Import.php
@@ -265,7 +265,7 @@ class WikiRevision {
$this->timestamp . "\n" );
return false;
}
- $log_id = $dbw->nextSequenceValue( 'log_log_id_seq' );
+ $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
$data = array(
'log_id' => $log_id,
'log_type' => $this->type,
@@ -304,7 +304,7 @@ class WikiRevision {
$resultDetails = array( 'internal' => $status->getWikiText() );
*/
- // @fixme upload() uses $wgUser, which is wrong here
+ // @todo Fixme: upload() uses $wgUser, which is wrong here
// it may also create a page without our desire, also wrong potentially.
// and, it will record a *current* upload, but we might want an archive version here
@@ -352,7 +352,7 @@ class WikiRevision {
return false;
}
- // @fixme!
+ // @todo Fixme!
$src = $this->getSrc();
$data = Http::get( $src );
if( !$data ) {
@@ -400,21 +400,21 @@ class WikiImporter {
}
function handleXmlNamespace ( $parser, $data, $prefix=false, $uri=false ) {
- if( preg_match( '/www.mediawiki.org/',$prefix ) ) {
- $prefix = str_replace( '/','\/',$prefix );
+ if( preg_match( '/www.mediawiki.org/',$prefix ) ) {
+ $prefix = str_replace( '/','\/',$prefix );
$this->mXmlNamespace='/^'.$prefix.':/';
}
}
function stripXmlNamespace($name) {
if( $this->mXmlNamespace ) {
- return(preg_replace($this->mXmlNamespace,'',$name,1));
+ return(preg_replace($this->mXmlNamespace,'',$name,1));
}
else {
- return($name);
- }
+ return($name);
+ }
}
-
+
# --------------
function doImport() {
@@ -554,7 +554,7 @@ class WikiImporter {
/**
* Default per-revision callback, performs the import.
- * @param $revision WikiRevision
+ * @param $rev WikiRevision
* @private
*/
function importLogItem( $rev ) {
@@ -621,7 +621,7 @@ class WikiImporter {
}
function in_start( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_start $name" );
if( $name != "mediawiki" ) {
return $this->throwXMLerror( "Expected <mediawiki>, got <$name>" );
@@ -630,7 +630,7 @@ class WikiImporter {
}
function in_mediawiki( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_mediawiki $name" );
if( $name == 'siteinfo' ) {
xml_set_element_handler( $parser, "in_siteinfo", "out_siteinfo" );
@@ -650,7 +650,7 @@ class WikiImporter {
}
}
function out_mediawiki( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_mediawiki $name" );
if( $name != "mediawiki" ) {
return $this->throwXMLerror( "Expected </mediawiki>, got </$name>" );
@@ -661,7 +661,7 @@ class WikiImporter {
function in_siteinfo( $parser, $name, $attribs ) {
// no-ops for now
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_siteinfo $name" );
switch( $name ) {
case "sitename":
@@ -677,7 +677,7 @@ class WikiImporter {
}
function out_siteinfo( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
if( $name == "siteinfo" ) {
xml_set_element_handler( $parser, "in_mediawiki", "out_mediawiki" );
}
@@ -685,11 +685,12 @@ class WikiImporter {
function in_page( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_page $name" );
switch( $name ) {
case "id":
case "title":
+ case "redirect":
case "restrictions":
$this->appendfield = $name;
$this->appenddata = "";
@@ -726,7 +727,7 @@ class WikiImporter {
}
function out_page( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_page $name" );
$this->pop();
if( $name != "page" ) {
@@ -746,7 +747,7 @@ class WikiImporter {
}
function in_nothing( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_nothing $name" );
return $this->throwXMLerror( "No child elements allowed here; got <$name>" );
}
@@ -757,7 +758,7 @@ class WikiImporter {
}
function out_append( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_append $name" );
if( $name != $this->appendfield ) {
return $this->throwXMLerror( "Expected </{$this->appendfield}>, got </$name>" );
@@ -853,7 +854,7 @@ class WikiImporter {
}
function in_revision( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_revision $name" );
switch( $name ) {
case "id":
@@ -875,7 +876,7 @@ class WikiImporter {
}
function out_revision( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_revision $name" );
$this->pop();
if( $name != "revision" ) {
@@ -891,9 +892,9 @@ class WikiImporter {
}
}
}
-
+
function in_logitem( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_logitem $name" );
switch( $name ) {
case "id":
@@ -917,7 +918,7 @@ class WikiImporter {
}
function out_logitem( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_logitem $name" );
$this->pop();
if( $name != "logitem" ) {
@@ -935,7 +936,7 @@ class WikiImporter {
}
function in_upload( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_upload $name" );
switch( $name ) {
case "timestamp":
@@ -958,7 +959,7 @@ class WikiImporter {
}
function out_upload( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_revision $name" );
$this->pop();
if( $name != "upload" ) {
@@ -976,7 +977,7 @@ class WikiImporter {
}
function in_contributor( $parser, $name, $attribs ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "in_contributor $name" );
switch( $name ) {
case "username":
@@ -992,7 +993,7 @@ class WikiImporter {
}
function out_contributor( $parser, $name ) {
- $name = $this->stripXmlNamespace($name);
+ $name = $this->stripXmlNamespace($name);
$this->debug( "out_contributor $name" );
$this->pop();
if( $name != "contributor" ) {
@@ -1084,9 +1085,9 @@ class ImportStreamSource {
return new WikiErrorMsg( 'importuploaderrorsize' );
case 3: # The uploaded file was only partially uploaded
return new WikiErrorMsg( 'importuploaderrorpartial' );
- case 6: #Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
- return new WikiErrorMsg( 'importuploaderrortemp' );
- # case else: # Currently impossible
+ case 6: #Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
+ return new WikiErrorMsg( 'importuploaderrortemp' );
+ # case else: # Currently impossible
}
}
diff --git a/includes/Interwiki.php b/includes/Interwiki.php
index 3522fadb..3c71f6ee 100644
--- a/includes/Interwiki.php
+++ b/includes/Interwiki.php
@@ -17,8 +17,7 @@ class Interwiki {
protected $mPrefix, $mURL, $mLocal, $mTrans;
- function __construct( $prefix = null, $url = '', $local = 0, $trans = 0 )
- {
+ public function __construct( $prefix = null, $url = '', $local = 0, $trans = 0 ) {
$this->mPrefix = $prefix;
$this->mURL = $url;
$this->mLocal = $local;
@@ -27,20 +26,20 @@ class Interwiki {
/**
* Check whether an interwiki prefix exists
- *
- * @return bool Whether it exists
- * @param $prefix string Interwiki prefix to use
+ *
+ * @param $prefix String: interwiki prefix to use
+ * @return Boolean: whether it exists
*/
- static public function isValidInterwiki( $prefix ){
+ static public function isValidInterwiki( $prefix ) {
$result = self::fetch( $prefix );
return (bool)$result;
}
/**
* Fetch an Interwiki object
- *
+ *
+ * @param $prefix String: interwiki prefix to use
* @return Interwiki Object, or null if not valid
- * @param $prefix string Interwiki prefix to use
*/
static public function fetch( $prefix ) {
global $wgContLang;
@@ -48,85 +47,85 @@ class Interwiki {
return null;
}
$prefix = $wgContLang->lc( $prefix );
- if( isset( self::$smCache[$prefix] ) ){
+ if( isset( self::$smCache[$prefix] ) ) {
return self::$smCache[$prefix];
}
global $wgInterwikiCache;
- if ($wgInterwikiCache) {
+ if( $wgInterwikiCache ) {
$iw = Interwiki::getInterwikiCached( $prefix );
} else {
$iw = Interwiki::load( $prefix );
- if( !$iw ){
+ if( !$iw ) {
$iw = false;
}
}
- if( self::CACHE_LIMIT && count( self::$smCache ) >= self::CACHE_LIMIT ){
+ if( self::CACHE_LIMIT && count( self::$smCache ) >= self::CACHE_LIMIT ) {
reset( self::$smCache );
unset( self::$smCache[ key( self::$smCache ) ] );
}
self::$smCache[$prefix] = $iw;
return $iw;
}
-
+
/**
* Fetch interwiki prefix data from local cache in constant database.
*
* @note More logic is explained in DefaultSettings.
*
- * @param $prefix \type{\string} Interwiki prefix
- * @return \type{\Interwiki} An interwiki object
+ * @param $prefix String: interwiki prefix
+ * @return Interwiki object
*/
protected static function getInterwikiCached( $prefix ) {
$value = self::getInterwikiCacheEntry( $prefix );
-
+
$s = new Interwiki( $prefix );
if ( $value != '' ) {
// Split values
list( $local, $url ) = explode( ' ', $value, 2 );
$s->mURL = $url;
$s->mLocal = (int)$local;
- }else{
+ } else {
$s = false;
}
return $s;
}
-
+
/**
* Get entry from interwiki cache
*
* @note More logic is explained in DefaultSettings.
*
- * @param $prefix \type{\string} Database key
- * @return \type{\string) The entry
+ * @param $prefix String: database key
+ * @return String: the entry
*/
- protected static function getInterwikiCacheEntry( $prefix ){
+ protected static function getInterwikiCacheEntry( $prefix ) {
global $wgInterwikiCache, $wgInterwikiScopes, $wgInterwikiFallbackSite;
static $db, $site;
wfDebug( __METHOD__ . "( $prefix )\n" );
- if( !$db ){
- $db = dba_open( $wgInterwikiCache, 'r', 'cdb' );
+ if( !$db ) {
+ $db = CdbReader::open( $wgInterwikiCache );
}
/* Resolve site name */
if( $wgInterwikiScopes>=3 && !$site ) {
- $site = dba_fetch( '__sites:' . wfWikiID(), $db );
- if ( $site == "" ){
+ $site = $db->get( '__sites:' . wfWikiID() );
+ if ( $site == '' ) {
$site = $wgInterwikiFallbackSite;
}
}
-
- $value = dba_fetch( wfMemcKey( $prefix ), $db );
+
+ $value = $db->get( wfMemcKey( $prefix ) );
// Site level
if ( $value == '' && $wgInterwikiScopes >= 3 ) {
- $value = dba_fetch( "_{$site}:{$prefix}", $db );
+ $value = $db->get( "_{$site}:{$prefix}" );
}
// Global Level
if ( $value == '' && $wgInterwikiScopes >= 2 ) {
- $value = dba_fetch( "__global:{$prefix}", $db );
+ $value = $db->get( "__global:{$prefix}" );
}
if ( $value == 'undef' )
$value = '';
-
+
return $value;
}
@@ -134,24 +133,22 @@ class Interwiki {
* Load the interwiki, trying first memcached then the DB
*
* @param $prefix The interwiki prefix
- * @return bool The prefix is valid
- * @static
- *
+ * @return Boolean: the prefix is valid
*/
protected static function load( $prefix ) {
global $wgMemc, $wgInterwikiExpiry;
$key = wfMemcKey( 'interwiki', $prefix );
$mc = $wgMemc->get( $key );
$iw = false;
- if( $mc && is_array( $mc ) ){ // is_array is hack for old keys
+ if( $mc && is_array( $mc ) ) { // is_array is hack for old keys
$iw = Interwiki::loadFromArray( $mc );
- if( $iw ){
+ if( $iw ) {
return $iw;
}
}
-
+
$db = wfGetDB( DB_SLAVE );
-
+
$row = $db->fetchRow( $db->select( 'interwiki', '*', array( 'iw_prefix' => $prefix ),
__METHOD__ ) );
$iw = Interwiki::loadFromArray( $row );
@@ -160,19 +157,18 @@ class Interwiki {
$wgMemc->add( $key, $mc, $wgInterwikiExpiry );
return $iw;
}
-
+
return false;
}
/**
* Fill in member variables from an array (e.g. memcached result, Database::fetchRow, etc)
*
- * @return bool Whether everything was there
- * @param $res ResultWrapper Row from the interwiki table
- * @static
+ * @param $mc Associative array: row from the interwiki table
+ * @return Boolean: whether everything was there
*/
protected static function loadFromArray( $mc ) {
- if( isset( $mc['iw_url'] ) && isset( $mc['iw_local'] ) && isset( $mc['iw_trans'] ) ){
+ if( isset( $mc['iw_url'] ) && isset( $mc['iw_local'] ) && isset( $mc['iw_trans'] ) ) {
$iw = new Interwiki();
$iw->mURL = $mc['iw_url'];
$iw->mLocal = $mc['iw_local'];
@@ -181,27 +177,60 @@ class Interwiki {
}
return false;
}
-
- /**
+
+ /**
* Get the URL for a particular title (or with $1 if no title given)
*
- * @param $title string What text to put for the article name
- * @return string The URL
+ * @param $title String: what text to put for the article name
+ * @return String: the URL
*/
- function getURL( $title = null ){
+ public function getURL( $title = null ) {
$url = $this->mURL;
- if( $title != null ){
+ if( $title != null ) {
$url = str_replace( "$1", $title, $url );
}
return $url;
}
-
- function isLocal(){
+
+ /**
+ * Is this a local link from a sister project, or is
+ * it something outside, like Google
+ *
+ * @return Boolean
+ */
+ public function isLocal() {
return $this->mLocal;
}
-
- function isTranscludable(){
+
+ /**
+ * Can pages from this wiki be transcluded?
+ * Still requires $wgEnableScaryTransclusion
+ *
+ * @return Boolean
+ */
+ public function isTranscludable() {
return $this->mTrans;
}
+ /**
+ * Get the name for the interwiki site
+ *
+ * @return String
+ */
+ public function getName() {
+ $key = 'interwiki-name-' . $this->mPrefix;
+ $msg = wfMsgForContent( $key );
+ return wfEmptyMsg( $key, $msg ) ? '' : $msg;
+ }
+
+ /**
+ * Get a description for this interwiki
+ *
+ * @return String
+ */
+ public function getDescription() {
+ $key = 'interwiki-desc-' . $this->mPrefix;
+ $msg = wfMsgForContent( $key );
+ return wfEmptyMsg( $key, $msg ) ? '' : $msg;
+ }
}
diff --git a/includes/JSMin.php b/includes/JSMin.php
new file mode 100644
index 00000000..70db7022
--- /dev/null
+++ b/includes/JSMin.php
@@ -0,0 +1,290 @@
+<?php
+/**
+ * jsmin.php - PHP implementation of Douglas Crockford's JSMin.
+ *
+ * This is pretty much a direct port of jsmin.c to PHP with just a few
+ * PHP-specific performance tweaks. Also, whereas jsmin.c reads from stdin and
+ * outputs to stdout, this library accepts a string as input and returns another
+ * string as output.
+ *
+ * PHP 5 or higher is required.
+ *
+ * Permission is hereby granted to use this version of the library under the
+ * same terms as jsmin.c, which has the following license:
+ *
+ * --
+ * Copyright (c) 2002 Douglas Crockford (www.crockford.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * The Software shall be used for Good, not Evil.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * --
+ *
+ * @package JSMin
+ * @author Ryan Grove <ryan@wonko.com>
+ * @copyright 2002 Douglas Crockford <douglas@crockford.com> (jsmin.c)
+ * @copyright 2008 Ryan Grove <ryan@wonko.com> (PHP port)
+ * @license http://opensource.org/licenses/mit-license.php MIT License
+ * @version 1.1.1 (2008-03-02)
+ * @link http://code.google.com/p/jsmin-php/
+ */
+
+class JSMin {
+ const ORD_LF = 10;
+ const ORD_SPACE = 32;
+
+ protected $a = '';
+ protected $b = '';
+ protected $input = '';
+ protected $inputIndex = 0;
+ protected $inputLength = 0;
+ protected $lookAhead = null;
+ protected $output = '';
+
+ // -- Public Static Methods --------------------------------------------------
+
+ public static function minify( $js ) {
+ $jsmin = new JSMin( $js );
+ return $jsmin->min();
+ }
+
+ // -- Public Instance Methods ------------------------------------------------
+
+ public function __construct( $input ) {
+ $this->input = str_replace( "\r\n", "\n", $input );
+ $this->inputLength = strlen( $this->input );
+ }
+
+ // -- Protected Instance Methods ---------------------------------------------
+
+ protected function action( $d ) {
+ switch( $d ) {
+ case 1:
+ $this->output .= $this->a;
+
+ case 2:
+ $this->a = $this->b;
+
+ if ( $this->a === "'" || $this->a === '"' ) {
+ for ( ; ; ) {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+
+ if ( $this->a === $this->b ) {
+ break;
+ }
+
+ if ( ord( $this->a ) <= self::ORD_LF ) {
+ throw new JSMinException( 'Unterminated string literal.' );
+ }
+
+ if ( $this->a === '\\' ) {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+ }
+ }
+ }
+
+ case 3:
+ $this->b = $this->next();
+
+ if ( $this->b === '/' && (
+ $this->a === '(' || $this->a === ',' || $this->a === '=' ||
+ $this->a === ':' || $this->a === '[' || $this->a === '!' ||
+ $this->a === '&' || $this->a === '|' || $this->a === '?' ) ) {
+
+ $this->output .= $this->a . $this->b;
+
+ for ( ; ; ) {
+ $this->a = $this->get();
+
+ if ( $this->a === '/' ) {
+ break;
+ } elseif ( $this->a === '\\' ) {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+ } elseif ( ord( $this->a ) <= self::ORD_LF ) {
+ throw new JSMinException( 'Unterminated regular expression ' .
+ 'literal.' );
+ }
+
+ $this->output .= $this->a;
+ }
+
+ $this->b = $this->next();
+ }
+ }
+ }
+
+ protected function get() {
+ $c = $this->lookAhead;
+ $this->lookAhead = null;
+
+ if ( $c === null ) {
+ if ( $this->inputIndex < $this->inputLength ) {
+ $c = substr( $this->input, $this->inputIndex, 1 );
+ $this->inputIndex += 1;
+ } else {
+ $c = null;
+ }
+ }
+
+ if ( $c === "\r" ) {
+ return "\n";
+ }
+
+ if ( $c === null || $c === "\n" || ord( $c ) >= self::ORD_SPACE ) {
+ return $c;
+ }
+
+ return ' ';
+ }
+
+ protected function isAlphaNum( $c ) {
+ return ord( $c ) > 126 || $c === '\\' || preg_match( '/^[\w\$]$/', $c ) === 1;
+ }
+
+ protected function min() {
+ $this->a = "\n";
+ $this->action( 3 );
+
+ while ( $this->a !== null ) {
+ switch ( $this->a ) {
+ case ' ':
+ if ( $this->isAlphaNum( $this->b ) ) {
+ $this->action( 1 );
+ } else {
+ $this->action( 2 );
+ }
+ break;
+
+ case "\n":
+ switch ( $this->b ) {
+ case '{':
+ case '[':
+ case '(':
+ case '+':
+ case '-':
+ $this->action( 1 );
+ break;
+
+ case ' ':
+ $this->action( 3 );
+ break;
+
+ default:
+ if ( $this->isAlphaNum( $this->b ) ) {
+ $this->action( 1 );
+ }
+ else {
+ $this->action( 2 );
+ }
+ }
+ break;
+
+ default:
+ switch ( $this->b ) {
+ case ' ':
+ if ( $this->isAlphaNum( $this->a ) ) {
+ $this->action( 1 );
+ break;
+ }
+
+ $this->action( 3 );
+ break;
+
+ case "\n":
+ switch ( $this->a ) {
+ case '}':
+ case ']':
+ case ')':
+ case '+':
+ case '-':
+ case '"':
+ case "'":
+ $this->action( 1 );
+ break;
+
+ default:
+ if ( $this->isAlphaNum( $this->a ) ) {
+ $this->action( 1 );
+ }
+ else {
+ $this->action( 3 );
+ }
+ }
+ break;
+
+ default:
+ $this->action( 1 );
+ break;
+ }
+ }
+ }
+
+ return $this->output;
+ }
+
+ protected function next() {
+ $c = $this->get();
+
+ if ( $c === '/' ) {
+ switch( $this->peek() ) {
+ case '/':
+ for ( ; ; ) {
+ $c = $this->get();
+
+ if ( ord( $c ) <= self::ORD_LF ) {
+ return $c;
+ }
+ }
+
+ case '*':
+ $this->get();
+
+ for ( ; ; ) {
+ switch( $this->get() ) {
+ case '*':
+ if ( $this->peek() === '/' ) {
+ $this->get();
+ return ' ';
+ }
+ break;
+
+ case null:
+ throw new JSMinException( 'Unterminated comment.' );
+ }
+ }
+
+ default:
+ return $c;
+ }
+ }
+
+ return $c;
+ }
+
+ protected function peek() {
+ $this->lookAhead = $this->get();
+ return $this->lookAhead;
+ }
+}
+
+// -- Exceptions ---------------------------------------------------------------
+class JSMinException extends Exception {}
diff --git a/includes/JobQueue.php b/includes/JobQueue.php
index afa757d7..4ab5eac6 100644
--- a/includes/JobQueue.php
+++ b/includes/JobQueue.php
@@ -46,16 +46,20 @@ abstract class Job {
* actually find a job; it may be adversely affected by concurrent job
* runners.
*/
- static function pop_type($type) {
+ static function pop_type( $type ) {
wfProfilein( __METHOD__ );
$dbw = wfGetDB( DB_MASTER );
+ $row = $dbw->selectRow(
+ 'job',
+ '*',
+ array( 'job_cmd' => $type ),
+ __METHOD__,
+ array( 'LIMIT' => 1 )
+ );
- $row = $dbw->selectRow( 'job', '*', array( 'job_cmd' => $type ), __METHOD__,
- array( 'LIMIT' => 1 ));
-
- if ($row === false) {
+ if ( $row === false ) {
wfProfileOut( __METHOD__ );
return false;
}
@@ -64,7 +68,7 @@ abstract class Job {
$dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
$affected = $dbw->affectedRows();
- if ($affected == 0) {
+ if ( $affected == 0 ) {
wfProfileOut( __METHOD__ );
return false;
}
@@ -75,7 +79,7 @@ abstract class Job {
$job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
$dbw->delete( 'job', $job->insertFields(), __METHOD__ );
- $dbw->immediateCommit();
+ $dbw->commit();
wfProfileOut( __METHOD__ );
return $job;
@@ -84,10 +88,10 @@ abstract class Job {
/**
* Pop a job off the front of the queue
*
- * @param $offset Number of jobs to skip
+ * @param $offset Integer: Number of jobs to skip
* @return Job or false if there's no jobs
*/
- static function pop($offset=0) {
+ static function pop( $offset = 0 ) {
wfProfileIn( __METHOD__ );
$dbr = wfGetDB( DB_SLAVE );
@@ -100,17 +104,18 @@ abstract class Job {
*/
$row = $dbr->selectRow( 'job', '*', "job_id >= ${offset}", __METHOD__,
- array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ));
+ array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ) );
// Refetching without offset is needed as some of job IDs could have had delayed commits
// and have lower IDs than jobs already executed, blame concurrency :)
//
- if ( $row === false) {
- if ($offset!=0)
+ if ( $row === false ) {
+ if ( $offset != 0 ) {
$row = $dbr->selectRow( 'job', '*', '', __METHOD__,
- array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ));
+ array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ) );
+ }
- if ($row === false ) {
+ if ( $row === false ) {
wfProfileOut( __METHOD__ );
return false;
}
@@ -121,7 +126,7 @@ abstract class Job {
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
$affected = $dbw->affectedRows();
- $dbw->immediateCommit();
+ $dbw->commit();
if ( !$affected ) {
// Failed, someone else beat us to it
@@ -135,7 +140,7 @@ abstract class Job {
}
// Get the random row
$row = $dbw->selectRow( 'job', '*',
- 'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
+ 'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
if ( $row === false ) {
// Random job gone before we got the chance to select it
// Give up
@@ -145,7 +150,7 @@ abstract class Job {
// Delete the random row
$dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
$affected = $dbw->affectedRows();
- $dbw->immediateCommit();
+ $dbw->commit();
if ( !$affected ) {
// Random job gone before we exclusively deleted it
@@ -267,12 +272,13 @@ abstract class Job {
return;
}
}
- $fields['job_id'] = $dbw->nextSequenceValue( 'job_job_id_seq' );
$dbw->insert( 'job', $fields, __METHOD__ );
}
protected function insertFields() {
+ $dbw = wfGetDB( DB_MASTER );
return array(
+ 'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
'job_cmd' => $this->command,
'job_namespace' => $this->title->getNamespace(),
'job_title' => $this->title->getDBkey(),
diff --git a/includes/Licenses.php b/includes/Licenses.php
index 6398c887..12a1f938 100644
--- a/includes/Licenses.php
+++ b/includes/Licenses.php
@@ -9,46 +9,39 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
-class Licenses {
- /**#@+
- * @private
- */
+class Licenses extends HTMLFormField {
/**
* @var string
*/
- var $msg;
+ protected $msg;
/**
* @var array
*/
- var $licenses = array();
+ protected $licenses = array();
/**
* @var string
*/
- var $html;
+ protected $html;
/**#@-*/
/**
* Constructor
- *
- * @param $str String: the string to build the licenses member from, will use
- * wfMsgForContent( 'licenses' ) if null (default: null)
*/
- function __construct( $str = null ) {
- // PHP sucks, this should be possible in the constructor
- $this->msg = is_null( $str ) ? wfMsgForContent( 'licenses' ) : $str;
- $this->html = '';
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ $this->msg = empty( $params['licenses'] ) ? wfMsgForContent( 'licenses' ) : $params['licenses'];
+ $this->selected = null;
$this->makeLicenses();
- $tmp = $this->getLicenses();
- $this->makeHtml( $tmp );
}
/**#@+
* @private
*/
- function makeLicenses() {
+ protected function makeLicenses() {
$levels = array();
$lines = explode( "\n", $this->msg );
@@ -75,18 +68,14 @@ class Licenses {
}
}
- function trimStars( $str ) {
+ protected function trimStars( $str ) {
$i = $count = 0;
- wfSuppressWarnings();
- while ($str[$i++] == '*')
- ++$count;
- wfRestoreWarnings();
-
- return array( $count, ltrim( $str, '* ' ) );
+ $numStars = strspn( $str, '*' );
+ return array( $numStars, ltrim( substr( $str, $numStars ), ' ' ) );
}
- function stackItem( &$list, $path, $item ) {
+ protected function stackItem( &$list, $path, $item ) {
$position =& $list;
if ( $path )
foreach( $path as $key )
@@ -94,13 +83,12 @@ class Licenses {
$position[] = $item;
}
- function makeHtml( &$tagset, $depth = 0 ) {
+ protected function makeHtml( $tagset, $depth = 0 ) {
foreach ( $tagset as $key => $val )
if ( is_array( $val ) ) {
$this->html .= $this->outputOption(
- $this->msg( $key ),
+ $this->msg( $key ), '',
array(
- 'value' => '',
'disabled' => 'disabled',
'style' => 'color: GrayText', // for MSIE
),
@@ -109,22 +97,22 @@ class Licenses {
$this->makeHtml( $val, $depth + 1 );
} else {
$this->html .= $this->outputOption(
- $this->msg( $val->text ),
- array(
- 'value' => $val->template,
- 'title' => '{{' . $val->template . '}}'
- ),
+ $this->msg( $val->text ), $val->template,
+ array( 'title' => '{{' . $val->template . '}}' ),
$depth
);
}
}
- function outputOption( $val, $attribs = null, $depth ) {
- $val = str_repeat( /* &nbsp */ "\xc2\xa0", $depth * 2 ) . $val;
+ protected function outputOption( $text, $value, $attribs = null, $depth = 0 ) {
+ $attribs['value'] = $value;
+ if ( $value === $this->selected )
+ $attribs['selected'] = 'selected';
+ $val = str_repeat( /* &nbsp */ "\xc2\xa0", $depth * 2 ) . $text;
return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n";
}
- function msg( $str ) {
+ protected function msg( $str ) {
$out = wfMsg( $str );
return wfEmptyMsg( $str, $out ) ? $str : $out;
}
@@ -136,14 +124,29 @@ class Licenses {
*
* @return array
*/
- function getLicenses() { return $this->licenses; }
+ public function getLicenses() { return $this->licenses; }
/**
* Accessor for $this->html
*
* @return string
*/
- function getHtml() { return $this->html; }
+ public function getInputHTML( $value ) {
+ $this->selected = $value;
+
+ $this->html = $this->outputOption( wfMsg( 'nolicense' ), '',
+ (bool)$this->selected ? null : array( 'selected' => 'selected' ) );
+ $this->makeHtml( $this->getLicenses() );
+
+ $attribs = array(
+ 'name' => $this->mName,
+ 'id' => $this->mID
+ );
+ if ( !empty( $this->mParams['disabled'] ) )
+ $attibs['disabled'] = 'disabled';
+
+ return Html::rawElement( 'select', $attribs, $this->html );
+ }
}
/**
diff --git a/includes/LinkCache.php b/includes/LinkCache.php
index 4f74cdd7..8d035763 100644
--- a/includes/LinkCache.php
+++ b/includes/LinkCache.php
@@ -33,7 +33,7 @@ class LinkCache {
/**
* General accessor to get/set whether SELECT FOR UPDATE should be used
*/
- public function forUpdate( $update = NULL ) {
+ public function forUpdate( $update = null ) {
return wfSetVar( $this->mForUpdate, $update );
}
@@ -57,7 +57,7 @@ class LinkCache {
if ( array_key_exists( $dbkey, $this->mGoodLinkFields ) ) {
return $this->mGoodLinkFields[$dbkey][$field];
} else {
- return NULL;
+ return null;
}
}
@@ -72,10 +72,12 @@ class LinkCache {
* @param int $len
* @param int $redir
*/
- public function addGoodLinkObj( $id, $title, $len = -1, $redir = NULL ) {
+ public function addGoodLinkObj( $id, $title, $len = -1, $redir = null ) {
$dbkey = $title->getPrefixedDbKey();
- $this->mGoodLinks[$dbkey] = $id;
- $this->mGoodLinkFields[$dbkey] = array( 'length' => $len, 'redirect' => $redir );
+ $this->mGoodLinks[$dbkey] = intval( $id );
+ $this->mGoodLinkFields[$dbkey] = array(
+ 'length' => intval( $len ),
+ 'redirect' => intval( $redir ) );
}
public function addBadLinkObj( $title ) {
@@ -112,7 +114,7 @@ class LinkCache {
* @param $redir bool, is redirect?
* @return integer
*/
- public function addLink( $title, $len = -1, $redir = NULL ) {
+ public function addLink( $title, $len = -1, $redir = null ) {
$nt = Title::newFromDBkey( $title );
if( $nt ) {
return $this->addLinkObj( $nt, $len, $redir );
@@ -128,7 +130,7 @@ class LinkCache {
* @param $redir bool, is redirect?
* @return integer
*/
- public function addLinkObj( &$nt, $len = -1, $redirect = NULL ) {
+ public function addLinkObj( &$nt, $len = -1, $redirect = null ) {
global $wgAntiLockFlags, $wgProfiler;
wfProfileIn( __METHOD__ );
@@ -167,9 +169,9 @@ class LinkCache {
__METHOD__, $options );
# Set fields...
if ( $s !== false ) {
- $id = $s->page_id;
- $len = $s->page_len;
- $redirect = $s->page_is_redirect;
+ $id = intval( $s->page_id );
+ $len = intval( $s->page_len );
+ $redirect = intval( $s->page_is_redirect );
} else {
$len = -1;
$redirect = 0;
diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php
index dc4c1256..53841df1 100644
--- a/includes/LinkFilter.php
+++ b/includes/LinkFilter.php
@@ -3,7 +3,7 @@
/**
* Some functions to help implement an external link filter for spam control.
*
- * TODO: implement the filter. Currently these are just some functions to help
+ * @todo implement the filter. Currently these are just some functions to help
* maintenance/cleanupSpam.php remove links to a single specified domain. The
* next thing is to implement functions for checking a given page against a big
* list of domains.
@@ -11,8 +11,13 @@
* Another cool thing to do would be a web interface for fast spam removal.
*/
class LinkFilter {
+
/**
- * @static
+ * Check whether $text contains a link to $filterEntry
+ *
+ * @param $text String: text to check
+ * @param $filterEntry String: domainparts, see makeRegex() for more details
+ * @return Integer: 0 if no match or 1 if there's at least one match
*/
static function matchEntry( $text, $filterEntry ) {
$regex = LinkFilter::makeRegex( $filterEntry );
@@ -20,7 +25,11 @@ class LinkFilter {
}
/**
- * @static
+ * Builds a regex pattern for $filterEntry.
+ *
+ * @param $filterEntry String: URL, if it begins with "*.", it'll be
+ * replaced to match any subdomain
+ * @return String: regex pattern, for preg_match()
*/
private static function makeRegex( $filterEntry ) {
$regex = '!http://';
@@ -46,11 +55,47 @@ class LinkFilter {
*
* Asterisks in any other location are considered invalid.
*
- * @static
* @param $filterEntry String: domainparts
* @param $prot String: protocol
+ * @return String
+ * @deprecated Use makeLikeArray() and pass result to Database::buildLike() instead
*/
public static function makeLike( $filterEntry , $prot = 'http://' ) {
+ wfDeprecated( __METHOD__ );
+
+ $like = self::makeLikeArray( $filterEntry , $prot );
+ if ( !$like ) {
+ return false;
+ }
+ $dbw = wfGetDB( DB_MASTER );
+ $s = $dbw->buildLike( $like );
+ $m = false;
+ if ( preg_match( "/^ *LIKE '(.*)' *$/", $s, $m ) ) {
+ return $m[1];
+ } else {
+ throw new MWException( __METHOD__.': this DBMS is not supported by this function.' );
+ }
+ }
+
+ /**
+ * Make an array to be used for calls to DatabaseBase::buildLike(), which
+ * will match the specified string. There are several kinds of filter entry:
+ * *.domain.com - Produces http://com.domain.%, matches domain.com
+ * and www.domain.com
+ * domain.com - Produces http://com.domain./%, matches domain.com
+ * or domain.com/ but not www.domain.com
+ * *.domain.com/x - Produces http://com.domain.%/x%, matches
+ * www.domain.com/xy
+ * domain.com/x - Produces http://com.domain./x%, matches
+ * domain.com/xy but not www.domain.com/xy
+ *
+ * Asterisks in any other location are considered invalid.
+ *
+ * @param $filterEntry String: domainparts
+ * @param $prot String: protocol
+ * @return Array to be passed to DatabaseBase::buildLike() or false on error
+ */
+ public static function makeLikeArray( $filterEntry , $prot = 'http://' ) {
$db = wfGetDB( DB_MASTER );
if ( substr( $filterEntry, 0, 2 ) == '*.' ) {
$subdomains = true;
@@ -84,25 +129,46 @@ class LinkFilter {
$mailparts = explode( '@', $host );
$domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
$host = $domainpart . '@' . $mailparts[0];
- $like = $db->escapeLike( "$prot$host" ) . "%";
+ $like = array( "$prot$host", $db->anyString() );
} elseif ( $prot == 'mailto:' ) {
// domainpart of email adress only. do not add '.'
$host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
- $like = $db->escapeLike( "$prot$host" ) . "%";
+ $like = array( "$prot$host", $db->anyString() );
} else {
$host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
if ( substr( $host, -1, 1 ) !== '.' ) {
$host .= '.';
}
- $like = $db->escapeLike( "$prot$host" );
+ $like = array( "$prot$host" );
if ( $subdomains ) {
- $like .= '%';
+ $like[] = $db->anyString();
}
if ( !$subdomains || $path !== '/' ) {
- $like .= $db->escapeLike( $path ) . '%';
+ $like[] = $path;
+ $like[] = $db->anyString();
}
}
return $like;
}
+
+ /**
+ * Filters an array returned by makeLikeArray(), removing everything past first pattern placeholder.
+ *
+ * @param $arr array: array to filter
+ * @return filtered array
+ */
+ public static function keepOneWildcard( $arr ) {
+ if( !is_array( $arr ) ) {
+ return $arr;
+ }
+
+ foreach( $arr as $key => $value ) {
+ if ( $value instanceof LikeMatch ) {
+ return array_slice( $arr, 0, $key + 1 );
+ }
+ }
+
+ return $arr;
+ }
}
diff --git a/includes/Linker.php b/includes/Linker.php
index b739244b..fe193011 100644
--- a/includes/Linker.php
+++ b/includes/Linker.php
@@ -18,24 +18,14 @@ class Linker {
function __construct() {}
/**
- * @deprecated
- */
- function postParseLinkColour( $s = null ) {
- wfDeprecated( __METHOD__ );
- return null;
- }
-
- /**
* Get the appropriate HTML attributes to add to the "a" element of an ex-
* ternal link, as created by [wikisyntax].
*
- * @param string $title The (unescaped) title text for the link
- * @param string $unused Unused
* @param string $class The contents of the class attribute; if an empty
* string is passed, which is the default value, defaults to 'external'.
*/
- function getExternalLinkAttributes( $title, $unused = null, $class='' ) {
- return $this->getLinkAttributesInternal( $title, $class, 'external' );
+ function getExternalLinkAttributes( $class = 'external' ) {
+ return $this->getLinkAttributesInternal( '', $class );
}
/**
@@ -48,7 +38,7 @@ class Linker {
* @param string $class The contents of the class attribute; if an empty
* string is passed, which is the default value, defaults to 'external'.
*/
- function getInterwikiLinkAttributes( $title, $unused = null, $class='' ) {
+ function getInterwikiLinkAttributes( $title, $unused = null, $class = 'external' ) {
global $wgContLang;
# FIXME: We have a whole bunch of handling here that doesn't happen in
@@ -57,7 +47,7 @@ class Linker {
$title = $wgContLang->checkTitleEncoding( $title );
$title = preg_replace( '/[\\x00-\\x1f]/', ' ', $title );
- return $this->getLinkAttributesInternal( $title, $class, 'external' );
+ return $this->getLinkAttributesInternal( $title, $class );
}
/**
@@ -95,20 +85,16 @@ class Linker {
/**
* Common code for getLinkAttributesX functions
*/
- private function getLinkAttributesInternal( $title, $class, $classDefault = false ) {
+ private function getLinkAttributesInternal( $title, $class ) {
$title = htmlspecialchars( $title );
- if( $class === '' and $classDefault !== false ) {
- # FIXME: Parameter defaults the hard way! We should just have
- # $class = 'external' or whatever as the default in the externally-
- # exposed functions, not $class = ''.
- $class = $classDefault;
- }
$class = htmlspecialchars( $class );
$r = '';
- if( $class !== '' ) {
+ if ( $class != '' ) {
$r .= " class=\"$class\"";
}
- $r .= " title=\"$title\"";
+ if ( $title != '') {
+ $r .= " title=\"$title\"";
+ }
return $r;
}
@@ -124,7 +110,7 @@ class Linker {
if ( $t->isRedirect() ) {
# Page is a redirect
$colour = 'mw-redirect';
- } elseif ( $threshold > 0 &&
+ } elseif ( $threshold > 0 &&
$t->exists() && $t->getLength() < $threshold &&
MWNamespace::isContent( $t->getNamespace() ) ) {
# Page is a stub
@@ -220,13 +206,23 @@ class Linker {
$ret = null;
if( wfRunHooks( 'LinkEnd', array( $this, $target, $options, &$text, &$attribs, &$ret ) ) ) {
- $ret = Xml::openElement( 'a', $attribs ) . $text . Xml::closeElement( 'a' );
+ $ret = Html::rawElement( 'a', $attribs, $text );
}
wfProfileOut( __METHOD__ );
return $ret;
}
+ /**
+ * Identical to link(), except $options defaults to 'known'.
+ */
+ public function linkKnown( $target, $text = null, $customAttribs = array(), $query = array(), $options = array('known','noclasses') ) {
+ return $this->link( $target, $text, $customAttribs, $query, $options );
+ }
+
+ /**
+ * Returns the Url used to link to a Title
+ */
private function linkUrl( $target, $query, $options ) {
wfProfileIn( __METHOD__ );
# We don't want to include fragments for broken links, because they
@@ -249,6 +245,9 @@ class Linker {
return $ret;
}
+ /**
+ * Returns the array of attributes used when linking to the Title $target
+ */
private function linkAttribs( $target, $attribs, $options ) {
wfProfileIn( __METHOD__ );
global $wgUser;
@@ -268,7 +267,7 @@ class Linker {
}
# Note that redirects never count as stubs here.
- if ( $target->isRedirect() ) {
+ if ( !in_array( 'broken', $options ) && $target->isRedirect() ) {
$classes[] = 'mw-redirect';
} elseif( $target->isContentPage() ) {
# Check for stub.
@@ -284,7 +283,10 @@ class Linker {
}
# Get a default title attribute.
- if( in_array( 'known', $options ) ) {
+ if( $target->getPrefixedText() == '' ) {
+ # A link like [[#Foo]]. This used to mean an empty title
+ # attribute, but that's silly. Just don't output a title.
+ } elseif( in_array( 'known', $options ) ) {
$defaults['title'] = $target->getPrefixedText();
} else {
$defaults['title'] = wfMsg( 'red-link-title', $target->getPrefixedText() );
@@ -305,6 +307,9 @@ class Linker {
return $ret;
}
+ /**
+ * Default text of the links to the Title $target
+ */
private function linkText( $target ) {
# We might be passed a non-Title by make*LinkObj(). Fail gracefully.
if( !$target instanceof Title ) {
@@ -320,236 +325,6 @@ class Linker {
}
/**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeLink( $title, $text = '', $query = '', $trail = '' ) {
- wfProfileIn( __METHOD__ );
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- $result = $this->makeLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeLink(): "'.$title."\"\n" );
- $result = $text == "" ? $title : $text;
- }
-
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeKnownLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeKnownLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeKnownLink( $title, $text = '', $query = '', $trail = '', $prefix = '',$aprops = '') {
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix , $aprops );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeKnownLink(): "'.$title."\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
- /**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
- *
- * @param string $title The text of the title
- * @param string $text Link text
- * @param string $query Optional query part
- * @param string $trail Optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return $this->makeBrokenLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeBrokenLink(): "'.$title."\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
- /**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeStubLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeStubLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeStubLink( $title, $text = '', $query = '', $trail = '' ) {
- wfDeprecated( __METHOD__ );
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return $this->makeStubLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeStubLink(): "'.$title."\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
- /**
- * @deprecated Use link()
- *
- * Make a link for a title which may or may not be in the database. If you need to
- * call this lots of times, pre-fill the link cache with a LinkBatch, otherwise each
- * call to this will result in a DB query.
- *
- * @param $nt Title: the title object to make the link from, e.g. from
- * Title::newFromText.
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @param $prefix String: optional prefix. As trail, only before instead of after.
- */
- function makeLinkObj( $nt, $text= '', $query = '', $trail = '', $prefix = '' ) {
- global $wgUser;
- wfProfileIn( __METHOD__ );
-
- $query = wfCgiToArray( $query );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
- if( $text === '' ) {
- $text = $this->linkText( $nt );
- }
-
- $ret = $this->link( $nt, "$prefix$text$inside", array(), $query ) . $trail;
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @deprecated Use link()
- *
- * Make a link for a title which definitely exists. This is faster than makeLinkObj because
- * it doesn't have to do a database query. It's also valid for interwiki titles and special
- * pages.
- *
- * @param $nt Title object of target page
- * @param $text String: text to replace the title
- * @param $query String: link target
- * @param $trail String: text after link
- * @param $prefix String: text before link text
- * @param $aprops String: extra attributes to the a-element
- * @param $style String: style to apply - if empty, use getInternalLinkAttributesObj instead
- * @return the a-element
- */
- function makeKnownLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = '' ) {
- wfProfileIn( __METHOD__ );
-
- if ( $text == '' ) {
- $text = $this->linkText( $title );
- }
- $attribs = Sanitizer::mergeAttributes(
- Sanitizer::decodeTagAttributes( $aprops ),
- Sanitizer::decodeTagAttributes( $style )
- );
- $query = wfCgiToArray( $query );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
-
- $ret = $this->link( $title, "$prefix$text$inside", $attribs, $query,
- array( 'known', 'noclasses' ) ) . $trail;
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @deprecated Use link()
- *
- * Make a red link to the edit page of a given title.
- *
- * @param $nt Title object of the target page
- * @param $text String: Link text
- * @param $query String: Optional query part
- * @param $trail String: Optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
- wfProfileIn( __METHOD__ );
-
- list( $inside, $trail ) = Linker::splitTrail( $trail );
- if( $text === '' ) {
- $text = $this->linkText( $title );
- }
- $nt = $this->normaliseSpecialPage( $title );
-
- $ret = $this->link( $title, "$prefix$text$inside", array(),
- wfCgiToArray( $query ), 'broken' ) . $trail;
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @deprecated Use link()
- *
- * Make a brown link to a short article.
- *
- * @param $nt Title object of the target page
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeStubLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- wfDeprecated( __METHOD__ );
- return $this->makeColouredLinkObj( $nt, 'stub', $text, $query, $trail, $prefix );
- }
-
- /**
- * @deprecated Use link()
- *
- * Make a coloured link.
- *
- * @param $nt Title object of the target page
- * @param $colour Integer: colour of the link
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
- if($colour != ''){
- $style = $this->getInternalLinkAttributesObj( $nt, $text, $colour );
- } else $style = '';
- return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
- }
-
- /**
* Generate either a normal exists-style link or a stub link, depending
* on the given page size.
*
@@ -565,6 +340,7 @@ class Linker {
global $wgUser;
$threshold = intval( $wgUser->getOption( 'stubthreshold' ) );
$colour = ( $size < $threshold ) ? 'stub' : '';
+ // FIXME: replace deprecated makeColouredLinkObj by link()
return $this->makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
}
@@ -574,7 +350,7 @@ class Linker {
* despite $query not being used.
*/
function makeSelfLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- if ( '' == $text ) {
+ if ( $text == '' ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
list( $inside, $trail ) = Linker::splitTrail( $trail );
@@ -593,7 +369,10 @@ class Linker {
}
}
- /** @todo document */
+ /**
+ * Returns the filename part of an url.
+ * Used as alternative text for external images.
+ */
function fnamePart( $url ) {
$basename = strrchr( $url, '/' );
if ( false === $basename ) {
@@ -604,15 +383,12 @@ class Linker {
return $basename;
}
- /** Obsolete alias */
- function makeImage( $url, $alt = '' ) {
- wfDeprecated( __METHOD__ );
- return $this->makeExternalImage( $url, $alt );
- }
-
- /** @todo document */
+ /**
+ * Return the code for images which were added via external links,
+ * via Parser::maybeMakeExternalImage().
+ */
function makeExternalImage( $url, $alt = '' ) {
- if ( '' == $alt ) {
+ if ( $alt == '' ) {
$alt = $this->fnamePart( $url );
}
$img = '';
@@ -621,52 +397,13 @@ class Linker {
wfDebug("Hook LinkerMakeExternalImage changed the output of external image with url {$url} and alt text {$alt} to {$img}\n", true);
return $img;
}
- return Xml::element( 'img',
+ return Html::element( 'img',
array(
'src' => $url,
'alt' => $alt ) );
}
/**
- * Creates the HTML source for images
- * @deprecated use makeImageLink2
- *
- * @param object $title
- * @param string $label label text
- * @param string $alt alt text
- * @param string $align horizontal alignment: none, left, center, right)
- * @param array $handlerParams Parameters to be passed to the media handler
- * @param boolean $framed shows image in original size in a frame
- * @param boolean $thumb shows image as thumbnail in a frame
- * @param string $manualthumb image name for the manual thumbnail
- * @param string $valign vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
- * @param string $time, timestamp of the file, set as false for current
- * @return string
- */
- function makeImageLinkObj( $title, $label, $alt, $align = '', $handlerParams = array(), $framed = false,
- $thumb = false, $manualthumb = '', $valign = '', $time = false )
- {
- $frameParams = array( 'alt' => $alt, 'caption' => $label );
- if ( $align ) {
- $frameParams['align'] = $align;
- }
- if ( $framed ) {
- $frameParams['framed'] = true;
- }
- if ( $thumb ) {
- $frameParams['thumbnail'] = true;
- }
- if ( $manualthumb ) {
- $frameParams['manualthumb'] = $manualthumb;
- }
- if ( $valign ) {
- $frameParams['valign'] = $valign;
- }
- $file = wfFindFile( $title, $time );
- return $this->makeImageLink2( $title, $file, $frameParams, $handlerParams, $time );
- }
-
- /**
* Given parameters derived from [[Image:Foo|options...]], generate the
* HTML that that syntax inserts in the page.
*
@@ -719,8 +456,7 @@ class Linker {
$page = isset( $hp['page'] ) ? $hp['page'] : false;
if ( !isset( $fp['align'] ) ) $fp['align'] = '';
if ( !isset( $fp['alt'] ) ) $fp['alt'] = '';
- # Backward compatibility, title used to always be equal to alt text
- if ( !isset( $fp['title'] ) ) $fp['title'] = $fp['alt'];
+ if ( !isset( $fp['title'] ) ) $fp['title'] = '';
$prefix = $postfix = '';
@@ -763,7 +499,7 @@ class Linker {
# If thumbnail width has not been provided, it is set
# to the default user option as specified in Language*.php
if ( $fp['align'] == '' ) {
- $fp['align'] = $wgContLang->isRTL() ? 'left' : 'right';
+ $fp['align'] = $wgContLang->alignEnd();
}
return $prefix.$this->makeThumbLink2( $title, $file, $fp, $hp, $time, $query ).$postfix;
}
@@ -785,7 +521,7 @@ class Linker {
}
if ( !$thumb ) {
- $s = $this->makeBrokenImageLinkObj( $title, '', '', '', '', $time==true );
+ $s = $this->makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time==true );
} else {
$params = array(
'alt' => $fp['alt'],
@@ -805,7 +541,7 @@ class Linker {
$s = $thumb->toHtml( $params );
}
- if ( '' != $fp['align'] ) {
+ if ( $fp['align'] != '' ) {
$s = "<div class=\"float{$fp['align']}\">{$s}</div>";
}
return str_replace("\n", ' ',$prefix.$s.$postfix);
@@ -838,8 +574,7 @@ class Linker {
$page = isset( $hp['page'] ) ? $hp['page'] : false;
if ( !isset( $fp['align'] ) ) $fp['align'] = 'right';
if ( !isset( $fp['alt'] ) ) $fp['alt'] = '';
- # Backward compatibility, title used to always be equal to alt text
- if ( !isset( $fp['title'] ) ) $fp['title'] = $fp['alt'];
+ if ( !isset( $fp['title'] ) ) $fp['title'] = '';
if ( !isset( $fp['caption'] ) ) $fp['caption'] = '';
if ( empty( $hp['width'] ) ) {
@@ -886,7 +621,7 @@ class Linker {
# So we don't need to pass it here in $query. However, the URL for the
# zoom icon still needs it, so we make a unique query for it. See bug 14771
$url = $title->getLocalURL( $query );
- if( $page ) {
+ if( $page ) {
$url = wfAppendQuery( $url, 'page=' . urlencode( $page ) );
}
@@ -894,7 +629,7 @@ class Linker {
$s = "<div class=\"thumb t{$fp['align']}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
if( !$exists ) {
- $s .= $this->makeBrokenImageLinkObj( $title, '', '', '', '', $time==true );
+ $s .= $this->makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time==true );
$zoomicon = '';
} elseif ( !$thumb ) {
$s .= htmlspecialchars( wfMsg( 'thumbnail_error', '' ) );
@@ -931,26 +666,31 @@ class Linker {
* @return string
*/
public function makeBrokenImageLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '', $time = false ) {
- global $wgEnableUploads;
+ global $wgEnableUploads, $wgUploadNavigationUrl;
if( $title instanceof Title ) {
wfProfileIn( __METHOD__ );
$currentExists = $time ? ( wfFindFile( $title ) != false ) : false;
- if( $wgEnableUploads && !$currentExists ) {
- $upload = SpecialPage::getTitleFor( 'Upload' );
+ if( ( $wgUploadNavigationUrl || $wgEnableUploads ) && !$currentExists ) {
if( $text == '' )
$text = htmlspecialchars( $title->getPrefixedText() );
+
$redir = RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
if( $redir ) {
+ wfProfileOut( __METHOD__ );
return $this->makeKnownLinkObj( $title, $text, $query, $trail, $prefix );
}
- $q = 'wpDestFile=' . $title->getPartialUrl();
- if( $query != '' )
- $q .= '&' . $query;
+
+ $href = $this->getUploadUrl( $title, $query );
+
+
list( $inside, $trail ) = self::splitTrail( $trail );
- $style = $this->getInternalLinkAttributesObj( $title, $text, 'new' );
+
wfProfileOut( __METHOD__ );
- return '<a href="' . $upload->escapeLocalUrl( $q ) . '"'
- . $style . '>' . $prefix . $text . $inside . '</a>' . $trail;
+ return Html::element( 'a', array(
+ 'href' => $href,
+ 'class' => 'new',
+ 'title' => $title->getPrefixedText()
+ ), $prefix . $text . $inside ) . $trail;
} else {
wfProfileOut( __METHOD__ );
return $this->makeKnownLinkObj( $title, $text, $query, $trail, $prefix );
@@ -959,11 +699,26 @@ class Linker {
return "<!-- ERROR -->{$prefix}{$text}{$trail}";
}
}
-
- /** @deprecated use Linker::makeMediaLinkObj() */
- function makeMediaLink( $name, $unused = '', $text = '', $time = false ) {
- $nt = Title::makeTitleSafe( NS_FILE, $name );
- return $this->makeMediaLinkObj( $nt, $text, $time );
+
+ /**
+ * Get the URL to upload a certain file
+ *
+ * @param $destFile Title Title of the file to upload
+ * @param $query string Urlencoded query string to prepend
+ * @return string Urlencoded URL
+ */
+ protected function getUploadUrl( $destFile, $query = '' ) {
+ global $wgUploadNavigationUrl;
+ $q = 'wpDestFile=' . $destFile->getPartialUrl();
+ if( $query != '' )
+ $q .= '&' . $query;
+
+ if( $wgUploadNavigationUrl ) {
+ return wfAppendQuery( $wgUploadNavigationUrl, $q );
+ } else {
+ $upload = SpecialPage::getTitleFor( 'Upload' );
+ return $upload->getLocalUrl( $q );
+ }
}
/**
@@ -982,13 +737,12 @@ class Linker {
### HOTFIX. Instead of breaking, return empty string.
return $text;
} else {
- $img = wfFindFile( $title, $time );
+ $img = wfFindFile( $title, array( 'time' => $time ) );
if( $img ) {
$url = $img->getURL();
$class = 'internal';
} else {
- $upload = SpecialPage::getTitleFor( 'Upload' );
- $url = $upload->getLocalUrl( 'wpDestFile=' . urlencode( $title->getDBkey() ) );
+ $url = $this->getUploadUrl( $title );
$class = 'new';
}
$alt = htmlspecialchars( $title->getText() );
@@ -1000,11 +754,15 @@ class Linker {
}
}
- /** @todo document */
+ /**
+ * Make a link to a special page given its name and, optionally,
+ * a message key from the link text.
+ * Usage example: $skin->specialLink( 'recentchanges' )
+ */
function specialLink( $name, $key = '' ) {
global $wgContLang;
- if ( '' == $key ) { $key = strtolower( $name ); }
+ if ( $key == '' ) { $key = strtolower( $name ); }
$pn = $wgContLang->ucfirst( $name );
return $this->makeKnownLink( $wgContLang->specialPage( $pn ),
wfMsg( $key ) );
@@ -1017,17 +775,20 @@ class Linker {
* @param boolean $escape Do we escape the link text?
* @param String $linktype Type of external link. Gets added to the classes
* @param array $attribs Array of extra attributes to <a>
- *
- * @TODO! @FIXME! This is a really crappy implementation. $linktype and
+ *
+ * @todo FIXME: This is a really crappy implementation. $linktype and
* 'external' are mashed into the class attrib for the link (which is made
- * into a string). Then, if we've got additional params in $attribs, we
+ * into a string). Then, if we've got additional params in $attribs, we
* add to it. People using this might want to change the classes (or other
- * default link attributes), but passing $attribsText is just messy. Would
- * make a lot more sense to make put the classes into $attribs, let the
- * hook play with them, *then* expand it all at once.
+ * default link attributes), but passing $attribsText is just messy. Would
+ * make a lot more sense to make put the classes into $attribs, let the
+ * hook play with them, *then* expand it all at once.
*/
function makeExternalLink( $url, $text, $escape = true, $linktype = '', $attribs = array() ) {
- $attribsText = $this->getExternalLinkAttributes( $url, $text, 'external ' . $linktype );
+ if ( isset( $attribs[ 'class' ] ) ) $class = $attribs[ 'class' ]; # yet another hack :(
+ else $class = 'external ' . $linktype;
+
+ $attribsText = $this->getExternalLinkAttributes( $class );
$url = htmlspecialchars( $url );
if( $escape ) {
$text = htmlspecialchars( $text );
@@ -1039,7 +800,7 @@ class Linker {
return $link;
}
if ( $attribs ) {
- $attribsText .= Xml::expandAttributes( $attribs );
+ $attribsText .= Html::expandAttributes( $attribs );
}
return '<a href="'.$url.'"'.$attribsText.'>'.$text.'</a>';
}
@@ -1148,7 +909,7 @@ class Linker {
if( $rev->isDeleted( Revision::DELETED_USER ) && $isPublic ) {
$link = wfMsgHtml( 'rev-deleted-user' );
} else if( $rev->userCan( Revision::DELETED_USER ) ) {
- $link = $this->userLink( $rev->getUser( Revision::FOR_THIS_USER ),
+ $link = $this->userLink( $rev->getUser( Revision::FOR_THIS_USER ),
$rev->getUserText( Revision::FOR_THIS_USER ) );
} else {
$link = wfMsgHtml( 'rev-deleted-user' );
@@ -1170,7 +931,7 @@ class Linker {
$link = wfMsgHtml( 'rev-deleted-user' );
} else if( $rev->userCan( Revision::DELETED_USER ) ) {
$userId = $rev->getUser( Revision::FOR_THIS_USER );
- $userText = $rev->getUserText( Revision::FOR_THIS_USER );
+ $userText = $rev->getUserText( Revision::FOR_THIS_USER );
$link = $this->userLink( $userId, $userText ) .
' ' . $this->userToolLinks( $userId, $userText );
} else {
@@ -1198,7 +959,7 @@ class Linker {
* @param mixed $title Title object (to generate link to the section in autocomment) or null
* @param bool $local Whether section links should refer to local page
*/
- function formatComment($comment, $title = NULL, $local = false) {
+ function formatComment($comment, $title = null, $local = false) {
wfProfileIn( __METHOD__ );
# Sanitize text a bit:
@@ -1207,8 +968,8 @@ class Linker {
$comment = Sanitizer::escapeHtmlAllowEntities( $comment );
# Render autocomments and make links:
- $comment = $this->formatAutoComments( $comment, $title, $local );
- $comment = $this->formatLinksInComment( $comment );
+ $comment = $this->formatAutocomments( $comment, $title, $local );
+ $comment = $this->formatLinksInComment( $comment, $title, $local );
wfProfileOut( __METHOD__ );
return $comment;
@@ -1239,16 +1000,16 @@ class Linker {
unset( $this->autocommentLocal );
return $comment;
}
-
+
private function formatAutocommentsCallback( $match ) {
$title = $this->autocommentTitle;
$local = $this->autocommentLocal;
-
- $pre=$match[1];
- $auto=$match[2];
- $post=$match[3];
- $link='';
- if( $title ) {
+
+ $pre = $match[1];
+ $auto = $match[2];
+ $post = $match[3];
+ $link = '';
+ if ( $title ) {
$section = $auto;
# Generate a valid anchor name from the section title.
@@ -1262,12 +1023,12 @@ class Linker {
if ( $local ) {
$sectionTitle = Title::newFromText( '#' . $section );
} else {
- $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
+ $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
$title->getDBkey(), $section );
}
if ( $sectionTitle ) {
$link = $this->link( $sectionTitle,
- wfMsgForContent( 'sectionlink' ), array(), array(),
+ htmlspecialchars( wfMsgForContent( 'sectionlink' ) ), array(), array(),
'noclasses' );
} else {
$link = '';
@@ -1291,15 +1052,20 @@ class Linker {
* Formats wiki links and media links in text; all other wiki formatting
* is ignored
*
- * @fixme doesn't handle sub-links as in image thumb texts like the main parser
+ * @todo Fixme: doesn't handle sub-links as in image thumb texts like the main parser
* @param string $comment Text to format links in
* @return string
*/
- public function formatLinksInComment( $comment ) {
- return preg_replace_callback(
+ public function formatLinksInComment( $comment, $title = null, $local = false ) {
+ $this->commentContextTitle = $title;
+ $this->commentLocal = $local;
+ $html = preg_replace_callback(
'/\[\[:?(.*?)(\|(.*?))*\]\]([^[]*)/',
array( $this, 'formatLinksInCommentCallback' ),
$comment );
+ unset( $this->commentContextTitle );
+ unset( $this->commentLocal );
+ return $html;
}
protected function formatLinksInCommentCallback( $match ) {
@@ -1316,16 +1082,18 @@ class Linker {
}
# Handle link renaming [[foo|text]] will show link as "text"
- if( "" != $match[3] ) {
+ if( $match[3] != "" ) {
$text = $match[3];
} else {
$text = $match[1];
}
$submatch = array();
+ $thelink = null;
if( preg_match( '/^' . $medians . '(.*)$/i', $match[1], $submatch ) ) {
# Media link; trail not supported.
$linkRegexp = '/\[\[(.*?)\]\]/';
- $thelink = $this->makeMediaLink( $submatch[1], "", $text );
+ $title = Title::makeTitleSafe( NS_FILE, $submatch[1] );
+ $thelink = $this->makeMediaLinkObj( $title, $text );
} else {
# Other kind of link
if( preg_match( $wgContLang->linkTrail(), $match[4], $submatch ) ) {
@@ -1336,13 +1104,105 @@ class Linker {
$linkRegexp = '/\[\[(.*?)\]\]' . preg_quote( $trail, '/' ) . '/';
if (isset($match[1][0]) && $match[1][0] == ':')
$match[1] = substr($match[1], 1);
- $thelink = $this->makeLink( $match[1], $text, "", $trail );
+ list( $inside, $trail ) = Linker::splitTrail( $trail );
+
+ $linkText = $text;
+ $linkTarget = Linker::normalizeSubpageLink( $this->commentContextTitle,
+ $match[1], $linkText );
+
+ $target = Title::newFromText( $linkTarget );
+ if( $target ) {
+ if( $target->getText() == '' && !$this->commentLocal && $this->commentContextTitle ) {
+ $newTarget = clone( $this->commentContextTitle );
+ $newTarget->setFragment( '#' . $target->getFragment() );
+ $target = $newTarget;
+ }
+ $thelink = $this->link(
+ $target,
+ $linkText . $inside
+ ) . $trail;
+ }
+ }
+ if( $thelink ) {
+ // If the link is still valid, go ahead and replace it in!
+ $comment = preg_replace( $linkRegexp, StringUtils::escapeRegexReplacement( $thelink ), $comment, 1 );
}
- $comment = preg_replace( $linkRegexp, StringUtils::escapeRegexReplacement( $thelink ), $comment, 1 );
return $comment;
}
+ static function normalizeSubpageLink( $contextTitle, $target, &$text ) {
+ # Valid link forms:
+ # Foobar -- normal
+ # :Foobar -- override special treatment of prefix (images, language links)
+ # /Foobar -- convert to CurrentPage/Foobar
+ # /Foobar/ -- convert to CurrentPage/Foobar, strip the initial / from text
+ # ../ -- convert to CurrentPage, from CurrentPage/CurrentSubPage
+ # ../Foobar -- convert to CurrentPage/Foobar, from CurrentPage/CurrentSubPage
+
+ wfProfileIn( __METHOD__ );
+ $ret = $target; # default return value is no change
+
+ # Some namespaces don't allow subpages,
+ # so only perform processing if subpages are allowed
+ if( $contextTitle && MWNamespace::hasSubpages( $contextTitle->getNamespace() ) ) {
+ $hash = strpos( $target, '#' );
+ if( $hash !== false ) {
+ $suffix = substr( $target, $hash );
+ $target = substr( $target, 0, $hash );
+ } else {
+ $suffix = '';
+ }
+ # bug 7425
+ $target = trim( $target );
+ # Look at the first character
+ if( $target != '' && $target{0} === '/' ) {
+ # / at end means we don't want the slash to be shown
+ $m = array();
+ $trailingSlashes = preg_match_all( '%(/+)$%', $target, $m );
+ if( $trailingSlashes ) {
+ $noslash = $target = substr( $target, 1, -strlen($m[0][0]) );
+ } else {
+ $noslash = substr( $target, 1 );
+ }
+
+ $ret = $contextTitle->getPrefixedText(). '/' . trim($noslash) . $suffix;
+ if( $text === '' ) {
+ $text = $target . $suffix;
+ } # this might be changed for ugliness reasons
+ } else {
+ # check for .. subpage backlinks
+ $dotdotcount = 0;
+ $nodotdot = $target;
+ while( strncmp( $nodotdot, "../", 3 ) == 0 ) {
+ ++$dotdotcount;
+ $nodotdot = substr( $nodotdot, 3 );
+ }
+ if($dotdotcount > 0) {
+ $exploded = explode( '/', $contextTitle->GetPrefixedText() );
+ if( count( $exploded ) > $dotdotcount ) { # not allowed to go below top level page
+ $ret = implode( '/', array_slice( $exploded, 0, -$dotdotcount ) );
+ # / at the end means don't show full path
+ if( substr( $nodotdot, -1, 1 ) === '/' ) {
+ $nodotdot = substr( $nodotdot, 0, -1 );
+ if( $text === '' ) {
+ $text = $nodotdot . $suffix;
+ }
+ }
+ $nodotdot = trim( $nodotdot );
+ if( $nodotdot != '' ) {
+ $ret .= '/' . $nodotdot;
+ }
+ $ret .= $suffix;
+ }
+ }
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
/**
* Wrap a comment in standard punctuation and formatting if
* it's non-empty, otherwise return empty string.
@@ -1353,7 +1213,7 @@ class Linker {
*
* @return string
*/
- function commentBlock( $comment, $title = NULL, $local = false ) {
+ function commentBlock( $comment, $title = null, $local = false ) {
// '*' used to be the comment inserted by the software way back
// in antiquity in case none was provided, here for backwards
// compatability, acc. to brion -ævar
@@ -1375,6 +1235,7 @@ class Linker {
* @return string HTML
*/
function revComment( Revision $rev, $local = false, $isPublic = false ) {
+ if( $rev->getRawComment() == "" ) return "";
if( $rev->isDeleted( Revision::DELETED_COMMENT ) && $isPublic ) {
$block = " <span class=\"comment\">" . wfMsgHtml( 'rev-deleted-comment' ) . "</span>";
} else if( $rev->userCan( Revision::DELETED_COMMENT ) ) {
@@ -1401,12 +1262,16 @@ class Linker {
return "<span class=\"history-size\">$stxt</span>";
}
- /** @todo document */
+ /**
+ * Add another level to the Table of Contents
+ */
function tocIndent() {
return "\n<ul>";
}
- /** @todo document */
+ /**
+ * Finish one or more sublevels on the Table of Contents
+ */
function tocUnindent($level) {
return "</li>\n" . str_repeat( "</ul>\n</li>\n", $level>0 ? $level : 0 );
}
@@ -1414,64 +1279,73 @@ class Linker {
/**
* parameter level defines if we are on an indentation level
*/
- function tocLine( $anchor, $tocline, $tocnumber, $level ) {
- return "\n<li class=\"toclevel-$level\"><a href=\"#" .
+ function tocLine( $anchor, $tocline, $tocnumber, $level, $sectionIndex = false ) {
+ $classes = "toclevel-$level";
+ if ( $sectionIndex !== false )
+ $classes .= " tocsection-$sectionIndex";
+ return "\n<li class=\"$classes\"><a href=\"#" .
$anchor . '"><span class="tocnumber">' .
$tocnumber . '</span> <span class="toctext">' .
$tocline . '</span></a>';
}
- /** @todo document */
+ /**
+ * End a Table Of Contents line.
+ * tocUnindent() will be used instead if we're ending a line below
+ * the new level.
+ */
function tocLineEnd() {
return "</li>\n";
}
- /** @todo document */
+ /**
+ * Wraps the TOC in a table and provides the hide/collapse javascript.
+ * @param string $toc html of the Table Of Contents
+ * @return string Full html of the TOC
+ */
function tocList($toc) {
- global $wgJsMimeType;
$title = wfMsgHtml('toc') ;
return
- '<table id="toc" class="toc" summary="' . $title .'"><tr><td>'
+ '<table id="toc" class="toc"><tr><td>'
. '<div id="toctitle"><h2>' . $title . "</h2></div>\n"
. $toc
# no trailing newline, script should not be wrapped in a
# paragraph
. "</ul>\n</td></tr></table>"
- . '<script type="' . $wgJsMimeType . '">'
- . ' if (window.showTocToggle) {'
- . ' var tocShowText = "' . Xml::escapeJsString( wfMsg('showtoc') ) . '";'
- . ' var tocHideText = "' . Xml::escapeJsString( wfMsg('hidetoc') ) . '";'
- . ' showTocToggle();'
- . ' } '
- . "</script>\n";
- }
-
- /**
- * Used to generate section edit links that point to "other" pages
- * (sections that are really part of included pages).
- *
- * @param $title Title string.
- * @param $section Integer: section number.
- */
- public function editSectionLinkForOther( $title, $section ) {
- wfDeprecated( __METHOD__ );
- $title = Title::newFromText( $title );
- return $this->doEditSectionLink( $title, $section );
+ . Html::inlineScript(
+ 'if (window.showTocToggle) {'
+ . ' var tocShowText = "' . Xml::escapeJsString( wfMsg('showtoc') ) . '";'
+ . ' var tocHideText = "' . Xml::escapeJsString( wfMsg('hidetoc') ) . '";'
+ . ' showTocToggle();'
+ . ' } ' )
+ . "\n";
}
/**
- * @param $nt Title object.
- * @param $section Integer: section number.
- * @param $hint Link String: title, or default if omitted or empty
+ * Generate a table of contents from a section tree
+ * Currently unused.
+ * @param $tree Return value of ParserOutput::getSections()
+ * @return string HTML
*/
- public function editSectionLink( Title $nt, $section, $hint = '' ) {
- wfDeprecated( __METHOD__ );
- if( $hint === '' ) {
- # No way to pass an actual empty $hint here! The new interface al-
- # lows this, so we have to do this for compatibility.
- $hint = null;
- }
- return $this->doEditSectionLink( $nt, $section, $hint );
+ public function generateTOC( $tree ) {
+ $toc = '';
+ $lastLevel = 0;
+ foreach ( $tree as $section ) {
+ if ( $section['toclevel'] > $lastLevel )
+ $toc .= $this->tocIndent();
+ else if ( $section['toclevel'] < $lastLevel )
+ $toc .= $this->tocUnindent(
+ $lastLevel - $section['toclevel'] );
+ else
+ $toc .= $this->tocLineEnd();
+
+ $toc .= $this->tocLine( $section['anchor'],
+ $section['line'], $section['number'],
+ $section['toclevel'], $section['index'] );
+ $lastLevel = $section['toclevel'];
+ }
+ $toc .= $this->tocLineEnd();
+ return $this->tocList( $toc );
}
/**
@@ -1487,6 +1361,8 @@ class Linker {
* @return string HTML to use for edit link
*/
public function doEditSectionLink( Title $nt, $section, $tooltip = null ) {
+ // HTML generated here should probably have userlangattributes
+ // added to it for LTR text on RTL pages
$attribs = array();
if( !is_null( $tooltip ) ) {
$attribs['title'] = wfMsg( 'editsectionhint', $tooltip );
@@ -1539,13 +1415,12 @@ class Linker {
* @return string HTML headline
*/
public function makeHeadline( $level, $attribs, $anchor, $text, $link, $legacyAnchor = false ) {
- $ret = "<a name=\"$anchor\" id=\"$anchor\"></a>"
- . "<h$level$attribs"
+ $ret = "<h$level$attribs"
. $link
- . " <span class=\"mw-headline\">$text</span>"
+ . " <span class=\"mw-headline\" id=\"$anchor\">$text</span>"
. "</h$level>";
if ( $legacyAnchor !== false ) {
- $ret = "<a name=\"$legacyAnchor\" id=\"$legacyAnchor\"></a>$ret";
+ $ret = "<a id=\"$legacyAnchor\"></a>$ret";
}
return $ret;
}
@@ -1563,7 +1438,7 @@ class Linker {
$regex = $wgContLang->linkTrail();
}
$inside = '';
- if ( '' != $trail ) {
+ if ( $trail != '' ) {
$m = array();
if ( preg_match( $regex, $trail, $m ) ) {
$inside = $m[1];
@@ -1640,11 +1515,11 @@ class Linker {
# Construct the HTML
$outText = '<div class="mw-templatesUsedExplanation">';
if ( $preview ) {
- $outText .= wfMsgExt( 'templatesusedpreview', array( 'parse' ) );
+ $outText .= wfMsgExt( 'templatesusedpreview', array( 'parse' ), count( $templates ) );
} elseif ( $section ) {
- $outText .= wfMsgExt( 'templatesusedsection', array( 'parse' ) );
+ $outText .= wfMsgExt( 'templatesusedsection', array( 'parse' ), count( $templates ) );
} else {
- $outText .= wfMsgExt( 'templatesused', array( 'parse' ) );
+ $outText .= wfMsgExt( 'templatesused', array( 'parse' ), count( $templates ) );
}
$outText .= "</div><ul>\n";
@@ -1659,9 +1534,19 @@ class Linker {
$protected = '';
}
if( $titleObj->quickUserCan( 'edit' ) ) {
- $editLink = $this->makeLinkObj( $titleObj, wfMsg('editlink'), 'action=edit' );
+ $editLink = $this->link(
+ $titleObj,
+ wfMsg( 'editlink' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
} else {
- $editLink = $this->makeLinkObj( $titleObj, wfMsg('viewsourcelink'), 'action=edit' );
+ $editLink = $this->link(
+ $titleObj,
+ wfMsg( 'viewsourcelink' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
}
$outText .= '<li>' . $this->link( $titleObj ) . ' (' . $editLink . ') ' . $protected . '</li>';
}
@@ -1711,40 +1596,6 @@ class Linker {
}
/**
- * @deprecated Returns raw bits of HTML, use titleAttrib() and accesskey()
- */
- public function tooltipAndAccesskey( $name ) {
- # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
- # no attribute" instead of "output '' as value for attribute", this
- # would be three lines.
- $attribs = array(
- 'title' => $this->titleAttrib( $name, 'withaccess' ),
- 'accesskey' => $this->accesskey( $name )
- );
- if ( $attribs['title'] === false ) {
- unset( $attribs['title'] );
- }
- if ( $attribs['accesskey'] === false ) {
- unset( $attribs['accesskey'] );
- }
- return Xml::expandAttributes( $attribs );
- }
-
- /** @deprecated Returns raw bits of HTML, use titleAttrib() */
- public function tooltip( $name, $options = null ) {
- # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
- # no attribute" instead of "output '' as value for attribute", this
- # would be two lines.
- $tooltip = $this->titleAttrib( $name, $options );
- if ( $tooltip === false ) {
- return '';
- }
- return Xml::expandAttributes( array(
- 'title' => $this->titleAttrib( $name, $options )
- ) );
- }
-
- /**
* Given the id of an interface element, constructs the appropriate title
* attribute from the system messages. (Note, this is usually the id but
* isn't always, because sometimes the accesskey needs to go on a different
@@ -1809,21 +1660,403 @@ class Linker {
wfProfileOut( __METHOD__ );
return false;
}
-
+
/**
* Creates a (show/hide) link for deleting revisions/log entries
*
* @param array $query Query parameters to be passed to link()
* @param bool $restricted Set to true to use a <strong> instead of a <span>
+ * @param bool $delete Set to true to use (show/hide) rather than (show)
*
* @return string HTML <a> link to Special:Revisiondelete, wrapped in a
* span to allow for customization of appearance with CSS
*/
- public function revDeleteLink( $query = array(), $restricted = false ) {
+ public function revDeleteLink( $query = array(), $restricted = false, $delete = true ) {
$sp = SpecialPage::getTitleFor( 'Revisiondelete' );
- $text = wfMsgHtml( 'rev-delundel' );
+ $text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' );
$tag = $restricted ? 'strong' : 'span';
$link = $this->link( $sp, $text, array(), $query, array( 'known', 'noclasses' ) );
return Xml::tags( $tag, array( 'class' => 'mw-revdelundel-link' ), "($link)" );
}
+
+ /**
+ * Creates a dead (show/hide) link for deleting revisions/log entries
+ *
+ * @param bool $delete Set to true to use (show/hide) rather than (show)
+ *
+ * @return string HTML text wrapped in a span to allow for customization
+ * of appearance with CSS
+ */
+ public function revDeleteLinkDisabled( $delete = true ) {
+ $text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' );
+ return Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ), "($text)" );
+ }
+
+ /* Deprecated methods */
+
+ /**
+ * @deprecated
+ */
+ function postParseLinkColour( $s = null ) {
+ wfDeprecated( __METHOD__ );
+ return null;
+ }
+
+
+ /**
+ * @deprecated Use link()
+ *
+ * This function is a shortcut to makeLinkObj(Title::newFromText($title),...). Do not call
+ * it if you already have a title object handy. See makeLinkObj for further documentation.
+ *
+ * @param $title String: the text of the title
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeLink( $title, $text = '', $query = '', $trail = '' ) {
+ wfProfileIn( __METHOD__ );
+ $nt = Title::newFromText( $title );
+ if ( $nt instanceof Title ) {
+ $result = $this->makeLinkObj( $nt, $text, $query, $trail );
+ } else {
+ wfDebug( 'Invalid title passed to Linker::makeLink(): "'.$title."\"\n" );
+ $result = $text == "" ? $title : $text;
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * This function is a shortcut to makeKnownLinkObj(Title::newFromText($title),...). Do not call
+ * it if you already have a title object handy. See makeKnownLinkObj for further documentation.
+ *
+ * @param $title String: the text of the title
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeKnownLink( $title, $text = '', $query = '', $trail = '', $prefix = '',$aprops = '') {
+ $nt = Title::newFromText( $title );
+ if ( $nt instanceof Title ) {
+ return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix , $aprops );
+ } else {
+ wfDebug( 'Invalid title passed to Linker::makeKnownLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
+ }
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
+ * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
+ *
+ * @param string $title The text of the title
+ * @param string $text Link text
+ * @param string $query Optional query part
+ * @param string $trail Optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
+ $nt = Title::newFromText( $title );
+ if ( $nt instanceof Title ) {
+ return $this->makeBrokenLinkObj( $nt, $text, $query, $trail );
+ } else {
+ wfDebug( 'Invalid title passed to Linker::makeBrokenLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
+ }
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * This function is a shortcut to makeStubLinkObj(Title::newFromText($title),...). Do not call
+ * it if you already have a title object handy. See makeStubLinkObj for further documentation.
+ *
+ * @param $title String: the text of the title
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeStubLink( $title, $text = '', $query = '', $trail = '' ) {
+ wfDeprecated( __METHOD__ );
+ $nt = Title::newFromText( $title );
+ if ( $nt instanceof Title ) {
+ return $this->makeStubLinkObj( $nt, $text, $query, $trail );
+ } else {
+ wfDebug( 'Invalid title passed to Linker::makeStubLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
+ }
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * Make a link for a title which may or may not be in the database. If you need to
+ * call this lots of times, pre-fill the link cache with a LinkBatch, otherwise each
+ * call to this will result in a DB query.
+ *
+ * @param $nt Title: the title object to make the link from, e.g. from
+ * Title::newFromText.
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ * @param $prefix String: optional prefix. As trail, only before instead of after.
+ */
+ function makeLinkObj( $nt, $text= '', $query = '', $trail = '', $prefix = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ $query = wfCgiToArray( $query );
+ list( $inside, $trail ) = Linker::splitTrail( $trail );
+ if( $text === '' ) {
+ $text = $this->linkText( $nt );
+ }
+
+ $ret = $this->link( $nt, "$prefix$text$inside", array(), $query ) . $trail;
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * Make a link for a title which definitely exists. This is faster than makeLinkObj because
+ * it doesn't have to do a database query. It's also valid for interwiki titles and special
+ * pages.
+ *
+ * @param $nt Title object of target page
+ * @param $text String: text to replace the title
+ * @param $query String: link target
+ * @param $trail String: text after link
+ * @param $prefix String: text before link text
+ * @param $aprops String: extra attributes to the a-element
+ * @param $style String: style to apply - if empty, use getInternalLinkAttributesObj instead
+ * @return the a-element
+ */
+ function makeKnownLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( $text == '' ) {
+ $text = $this->linkText( $title );
+ }
+ $attribs = Sanitizer::mergeAttributes(
+ Sanitizer::decodeTagAttributes( $aprops ),
+ Sanitizer::decodeTagAttributes( $style )
+ );
+ $query = wfCgiToArray( $query );
+ list( $inside, $trail ) = Linker::splitTrail( $trail );
+
+ $ret = $this->link( $title, "$prefix$text$inside", $attribs, $query,
+ array( 'known', 'noclasses' ) ) . $trail;
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * Make a red link to the edit page of a given title.
+ *
+ * @param $nt Title object of the target page
+ * @param $text String: Link text
+ * @param $query String: Optional query part
+ * @param $trail String: Optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ list( $inside, $trail ) = Linker::splitTrail( $trail );
+ if( $text === '' ) {
+ $text = $this->linkText( $title );
+ }
+ $nt = $this->normaliseSpecialPage( $title );
+
+ $ret = $this->link( $title, "$prefix$text$inside", array(),
+ wfCgiToArray( $query ), 'broken' ) . $trail;
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * Make a brown link to a short article.
+ *
+ * @param $nt Title object of the target page
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeStubLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ wfDeprecated( __METHOD__ );
+ return $this->makeColouredLinkObj( $nt, 'stub', $text, $query, $trail, $prefix );
+ }
+
+ /**
+ * @deprecated Use link()
+ *
+ * Make a coloured link.
+ *
+ * @param $nt Title object of the target page
+ * @param $colour Integer: colour of the link
+ * @param $text String: link text
+ * @param $query String: optional query part
+ * @param $trail String: optional trail. Alphabetic characters at the start of this string will
+ * be included in the link text. Other characters will be appended after
+ * the end of the link.
+ */
+ function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ if($colour != ''){
+ $style = $this->getInternalLinkAttributesObj( $nt, $text, $colour );
+ } else $style = '';
+ return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
+ }
+
+ /** Obsolete alias */
+ function makeImage( $url, $alt = '' ) {
+ wfDeprecated( __METHOD__ );
+ return $this->makeExternalImage( $url, $alt );
+ }
+
+ /**
+ * Creates the HTML source for images
+ * @deprecated use makeImageLink2
+ *
+ * @param object $title
+ * @param string $label label text
+ * @param string $alt alt text
+ * @param string $align horizontal alignment: none, left, center, right)
+ * @param array $handlerParams Parameters to be passed to the media handler
+ * @param boolean $framed shows image in original size in a frame
+ * @param boolean $thumb shows image as thumbnail in a frame
+ * @param string $manualthumb image name for the manual thumbnail
+ * @param string $valign vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
+ * @param string $time, timestamp of the file, set as false for current
+ * @return string
+ */
+ function makeImageLinkObj( $title, $label, $alt, $align = '', $handlerParams = array(), $framed = false,
+ $thumb = false, $manualthumb = '', $valign = '', $time = false )
+ {
+ $frameParams = array( 'alt' => $alt, 'caption' => $label );
+ if ( $align ) {
+ $frameParams['align'] = $align;
+ }
+ if ( $framed ) {
+ $frameParams['framed'] = true;
+ }
+ if ( $thumb ) {
+ $frameParams['thumbnail'] = true;
+ }
+ if ( $manualthumb ) {
+ $frameParams['manualthumb'] = $manualthumb;
+ }
+ if ( $valign ) {
+ $frameParams['valign'] = $valign;
+ }
+ $file = wfFindFile( $title, array( 'time' => $time ) );
+ return $this->makeImageLink2( $title, $file, $frameParams, $handlerParams, $time );
+ }
+
+ /** @deprecated use Linker::makeMediaLinkObj() */
+ function makeMediaLink( $name, $unused = '', $text = '', $time = false ) {
+ $nt = Title::makeTitleSafe( NS_FILE, $name );
+ return $this->makeMediaLinkObj( $nt, $text, $time );
+ }
+
+ /**
+ * Used to generate section edit links that point to "other" pages
+ * (sections that are really part of included pages).
+ *
+ * @deprecated use Linker::doEditSectionLink()
+ * @param $title Title string.
+ * @param $section Integer: section number.
+ */
+ public function editSectionLinkForOther( $title, $section ) {
+ wfDeprecated( __METHOD__ );
+ $title = Title::newFromText( $title );
+ return $this->doEditSectionLink( $title, $section );
+ }
+
+ /**
+ * @deprecated use Linker::doEditSectionLink()
+ * @param $nt Title object.
+ * @param $section Integer: section number.
+ * @param $hint Link String: title, or default if omitted or empty
+ */
+ public function editSectionLink( Title $nt, $section, $hint = '' ) {
+ wfDeprecated( __METHOD__ );
+ if( $hint === '' ) {
+ # No way to pass an actual empty $hint here! The new interface al-
+ # lows this, so we have to do this for compatibility.
+ $hint = null;
+ }
+ return $this->doEditSectionLink( $nt, $section, $hint );
+ }
+
+ /**
+ * Returns the attributes for the tooltip and access key
+ */
+ public function tooltipAndAccesskeyAttribs( $name ) {
+ global $wgEnableTooltipsAndAccesskeys;
+ if ( !$wgEnableTooltipsAndAccesskeys )
+ return array();
+ # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
+ # no attribute" instead of "output '' as value for attribute", this
+ # would be three lines.
+ $attribs = array(
+ 'title' => $this->titleAttrib( $name, 'withaccess' ),
+ 'accesskey' => $this->accesskey( $name )
+ );
+ if ( $attribs['title'] === false ) {
+ unset( $attribs['title'] );
+ }
+ if ( $attribs['accesskey'] === false ) {
+ unset( $attribs['accesskey'] );
+ }
+ return $attribs;
+ }
+ /**
+ * @deprecated Returns raw bits of HTML, use titleAttrib() and accesskey()
+ */
+ public function tooltipAndAccesskey( $name ) {
+ return Xml::expandAttributes( $this->tooltipAndAccesskeyAttribs( $name ) );
+ }
+
+
+ /** @deprecated Returns raw bits of HTML, use titleAttrib() */
+ public function tooltip( $name, $options = null ) {
+ global $wgEnableTooltipsAndAccesskeys;
+ if ( !$wgEnableTooltipsAndAccesskeys )
+ return '';
+ # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
+ # no attribute" instead of "output '' as value for attribute", this
+ # would be two lines.
+ $tooltip = $this->titleAttrib( $name, $options );
+ if ( $tooltip === false ) {
+ return '';
+ }
+ return Xml::expandAttributes( array(
+ 'title' => $this->titleAttrib( $name, $options )
+ ) );
+ }
}
diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php
index caacb49c..ef3374d9 100644
--- a/includes/LinksUpdate.php
+++ b/includes/LinksUpdate.php
@@ -673,6 +673,13 @@ class LinksUpdate {
function getTitle() {
return $this->mTitle;
}
+
+ /**
+ * Return the list of images used as generated by the parser
+ */
+ public function getImages() {
+ return $this->mImages;
+ }
/**
* Invalidate any necessary link lists related to page property changes
diff --git a/includes/LocalisationCache.php b/includes/LocalisationCache.php
new file mode 100644
index 00000000..12925b68
--- /dev/null
+++ b/includes/LocalisationCache.php
@@ -0,0 +1,999 @@
+<?php
+
+define( 'MW_LC_VERSION', 1 );
+
+/**
+ * Class for caching the contents of localisation files, Messages*.php
+ * and *.i18n.php.
+ *
+ * An instance of this class is available using Language::getLocalisationCache().
+ *
+ * The values retrieved from here are merged, containing items from extension
+ * files, core messages files and the language fallback sequence (e.g. zh-cn ->
+ * zh-hans -> en ). Some common errors are corrected, for example namespace
+ * names with spaces instead of underscores, but heavyweight processing, such
+ * as grammatical transformation, is done by the caller.
+ */
+class LocalisationCache {
+ /** Configuration associative array */
+ var $conf;
+
+ /**
+ * True if recaching should only be done on an explicit call to recache().
+ * Setting this reduces the overhead of cache freshness checking, which
+ * requires doing a stat() for every extension i18n file.
+ */
+ var $manualRecache = false;
+
+ /**
+ * True to treat all files as expired until they are regenerated by this object.
+ */
+ var $forceRecache = false;
+
+ /**
+ * The cache data. 3-d array, where the first key is the language code,
+ * the second key is the item key e.g. 'messages', and the third key is
+ * an item specific subkey index. Some items are not arrays and so for those
+ * items, there are no subkeys.
+ */
+ var $data = array();
+
+ /**
+ * The persistent store object. An instance of LCStore.
+ */
+ var $store;
+
+ /**
+ * A 2-d associative array, code/key, where presence indicates that the item
+ * is loaded. Value arbitrary.
+ *
+ * For split items, if set, this indicates that all of the subitems have been
+ * loaded.
+ */
+ var $loadedItems = array();
+
+ /**
+ * A 3-d associative array, code/key/subkey, where presence indicates that
+ * the subitem is loaded. Only used for the split items, i.e. messages.
+ */
+ var $loadedSubitems = array();
+
+ /**
+ * An array where presence of a key indicates that that language has been
+ * initialised. Initialisation includes checking for cache expiry and doing
+ * any necessary updates.
+ */
+ var $initialisedLangs = array();
+
+ /**
+ * An array mapping non-existent pseudo-languages to fallback languages. This
+ * is filled by initShallowFallback() when data is requested from a language
+ * that lacks a Messages*.php file.
+ */
+ var $shallowFallbacks = array();
+
+ /**
+ * An array where the keys are codes that have been recached by this instance.
+ */
+ var $recachedLangs = array();
+
+ /**
+ * Data added by extensions using the deprecated $wgMessageCache->addMessages()
+ * interface.
+ */
+ var $legacyData = array();
+
+ /**
+ * All item keys
+ */
+ static public $allKeys = array(
+ 'fallback', 'namespaceNames', 'mathNames', 'bookstoreList',
+ 'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable',
+ 'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension',
+ 'defaultUserOptionOverrides', 'linkTrail', 'namespaceAliases',
+ 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
+ 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
+ 'imageFiles', 'preloadedMessages',
+ );
+
+ /**
+ * Keys for items which consist of associative arrays, which may be merged
+ * by a fallback sequence.
+ */
+ static public $mergeableMapKeys = array( 'messages', 'namespaceNames', 'mathNames',
+ 'dateFormats', 'defaultUserOptionOverrides', 'magicWords', 'imageFiles',
+ 'preloadedMessages',
+ );
+
+ /**
+ * Keys for items which are a numbered array.
+ */
+ static public $mergeableListKeys = array( 'extraUserToggles' );
+
+ /**
+ * Keys for items which contain an array of arrays of equivalent aliases
+ * for each subitem. The aliases may be merged by a fallback sequence.
+ */
+ static public $mergeableAliasListKeys = array( 'specialPageAliases' );
+
+ /**
+ * Keys for items which contain an associative array, and may be merged if
+ * the primary value contains the special array key "inherit". That array
+ * key is removed after the first merge.
+ */
+ static public $optionalMergeKeys = array( 'bookstoreList' );
+
+ /**
+ * Keys for items where the subitems are stored in the backend separately.
+ */
+ static public $splitKeys = array( 'messages' );
+
+ /**
+ * Keys which are loaded automatically by initLanguage()
+ */
+ static public $preloadedKeys = array( 'dateFormats', 'namespaceNames',
+ 'defaultUserOptionOverrides' );
+
+ /**
+ * Constructor.
+ * For constructor parameters, see the documentation in DefaultSettings.php
+ * for $wgLocalisationCacheConf.
+ */
+ function __construct( $conf ) {
+ global $wgCacheDirectory;
+
+ $this->conf = $conf;
+ $storeConf = array();
+ if ( !empty( $conf['storeClass'] ) ) {
+ $storeClass = $conf['storeClass'];
+ } else {
+ switch ( $conf['store'] ) {
+ case 'files':
+ case 'file':
+ $storeClass = 'LCStore_CDB';
+ break;
+ case 'db':
+ $storeClass = 'LCStore_DB';
+ break;
+ case 'detect':
+ $storeClass = $wgCacheDirectory ? 'LCStore_CDB' : 'LCStore_DB';
+ break;
+ default:
+ throw new MWException(
+ 'Please set $wgLocalisationCacheConf[\'store\'] to something sensible.' );
+ }
+ }
+
+ wfDebug( get_class( $this ) . ": using store $storeClass\n" );
+ if ( !empty( $conf['storeDirectory'] ) ) {
+ $storeConf['directory'] = $conf['storeDirectory'];
+ }
+
+ $this->store = new $storeClass( $storeConf );
+ foreach ( array( 'manualRecache', 'forceRecache' ) as $var ) {
+ if ( isset( $conf[$var] ) ) {
+ $this->$var = $conf[$var];
+ }
+ }
+ }
+
+ /**
+ * Returns true if the given key is mergeable, that is, if it is an associative
+ * array which can be merged through a fallback sequence.
+ */
+ public function isMergeableKey( $key ) {
+ if ( !isset( $this->mergeableKeys ) ) {
+ $this->mergeableKeys = array_flip( array_merge(
+ self::$mergeableMapKeys,
+ self::$mergeableListKeys,
+ self::$mergeableAliasListKeys,
+ self::$optionalMergeKeys
+ ) );
+ }
+ return isset( $this->mergeableKeys[$key] );
+ }
+
+ /**
+ * Get a cache item.
+ *
+ * Warning: this may be slow for split items (messages), since it will
+ * need to fetch all of the subitems from the cache individually.
+ */
+ public function getItem( $code, $key ) {
+ if ( !isset( $this->loadedItems[$code][$key] ) ) {
+ wfProfileIn( __METHOD__.'-load' );
+ $this->loadItem( $code, $key );
+ wfProfileOut( __METHOD__.'-load' );
+ }
+ if ( $key === 'fallback' && isset( $this->shallowFallbacks[$code] ) ) {
+ return $this->shallowFallbacks[$code];
+ }
+ return $this->data[$code][$key];
+ }
+
+ /**
+ * Get a subitem, for instance a single message for a given language.
+ */
+ public function getSubitem( $code, $key, $subkey ) {
+ if ( isset( $this->legacyData[$code][$key][$subkey] ) ) {
+ return $this->legacyData[$code][$key][$subkey];
+ }
+ if ( !isset( $this->loadedSubitems[$code][$key][$subkey] )
+ && !isset( $this->loadedItems[$code][$key] ) )
+ {
+ wfProfileIn( __METHOD__.'-load' );
+ $this->loadSubitem( $code, $key, $subkey );
+ wfProfileOut( __METHOD__.'-load' );
+ }
+ if ( isset( $this->data[$code][$key][$subkey] ) ) {
+ return $this->data[$code][$key][$subkey];
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Get the list of subitem keys for a given item.
+ *
+ * This is faster than array_keys($lc->getItem(...)) for the items listed in
+ * self::$splitKeys.
+ *
+ * Will return null if the item is not found, or false if the item is not an
+ * array.
+ */
+ public function getSubitemList( $code, $key ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ return $this->getSubitem( $code, 'list', $key );
+ } else {
+ $item = $this->getItem( $code, $key );
+ if ( is_array( $item ) ) {
+ return array_keys( $item );
+ } else {
+ return false;
+ }
+ }
+ }
+
+ /**
+ * Load an item into the cache.
+ */
+ protected function loadItem( $code, $key ) {
+ if ( !isset( $this->initialisedLangs[$code] ) ) {
+ $this->initLanguage( $code );
+ }
+ // Check to see if initLanguage() loaded it for us
+ if ( isset( $this->loadedItems[$code][$key] ) ) {
+ return;
+ }
+ if ( isset( $this->shallowFallbacks[$code] ) ) {
+ $this->loadItem( $this->shallowFallbacks[$code], $key );
+ return;
+ }
+ if ( in_array( $key, self::$splitKeys ) ) {
+ $subkeyList = $this->getSubitem( $code, 'list', $key );
+ foreach ( $subkeyList as $subkey ) {
+ if ( isset( $this->data[$code][$key][$subkey] ) ) {
+ continue;
+ }
+ $this->data[$code][$key][$subkey] = $this->getSubitem( $code, $key, $subkey );
+ }
+ } else {
+ $this->data[$code][$key] = $this->store->get( $code, $key );
+ }
+ $this->loadedItems[$code][$key] = true;
+ }
+
+ /**
+ * Load a subitem into the cache
+ */
+ protected function loadSubitem( $code, $key, $subkey ) {
+ if ( !in_array( $key, self::$splitKeys ) ) {
+ $this->loadItem( $code, $key );
+ return;
+ }
+ if ( !isset( $this->initialisedLangs[$code] ) ) {
+ $this->initLanguage( $code );
+ }
+ // Check to see if initLanguage() loaded it for us
+ if ( isset( $this->loadedItems[$code][$key] )
+ || isset( $this->loadedSubitems[$code][$key][$subkey] ) )
+ {
+ return;
+ }
+ if ( isset( $this->shallowFallbacks[$code] ) ) {
+ $this->loadSubitem( $this->shallowFallbacks[$code], $key, $subkey );
+ return;
+ }
+ $value = $this->store->get( $code, "$key:$subkey" );
+ $this->data[$code][$key][$subkey] = $value;
+ $this->loadedSubitems[$code][$key][$subkey] = true;
+ }
+
+ /**
+ * Returns true if the cache identified by $code is missing or expired.
+ */
+ public function isExpired( $code ) {
+ if ( $this->forceRecache && !isset( $this->recachedLangs[$code] ) ) {
+ wfDebug( __METHOD__."($code): forced reload\n" );
+ return true;
+ }
+
+ $deps = $this->store->get( $code, 'deps' );
+ if ( $deps === null ) {
+ wfDebug( __METHOD__."($code): cache missing, need to make one\n" );
+ return true;
+ }
+ foreach ( $deps as $dep ) {
+ // Because we're unserializing stuff from cache, we
+ // could receive objects of classes that don't exist
+ // anymore (e.g. uninstalled extensions)
+ // When this happens, always expire the cache
+ if ( !$dep instanceof CacheDependency || $dep->isExpired() ) {
+ wfDebug( __METHOD__."($code): cache for $code expired due to " .
+ get_class( $dep ) . "\n" );
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Initialise a language in this object. Rebuild the cache if necessary.
+ */
+ protected function initLanguage( $code ) {
+ if ( isset( $this->initialisedLangs[$code] ) ) {
+ return;
+ }
+ $this->initialisedLangs[$code] = true;
+
+ # Recache the data if necessary
+ if ( !$this->manualRecache && $this->isExpired( $code ) ) {
+ if ( file_exists( Language::getMessagesFileName( $code ) ) ) {
+ $this->recache( $code );
+ } elseif ( $code === 'en' ) {
+ throw new MWException( 'MessagesEn.php is missing.' );
+ } else {
+ $this->initShallowFallback( $code, 'en' );
+ }
+ return;
+ }
+
+ # Preload some stuff
+ $preload = $this->getItem( $code, 'preload' );
+ if ( $preload === null ) {
+ if ( $this->manualRecache ) {
+ // No Messages*.php file. Do shallow fallback to en.
+ if ( $code === 'en' ) {
+ throw new MWException( 'No localisation cache found for English. ' .
+ 'Please run maintenance/rebuildLocalisationCache.php.' );
+ }
+ $this->initShallowFallback( $code, 'en' );
+ return;
+ } else {
+ throw new MWException( 'Invalid or missing localisation cache.' );
+ }
+ }
+ $this->data[$code] = $preload;
+ foreach ( $preload as $key => $item ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ foreach ( $item as $subkey => $subitem ) {
+ $this->loadedSubitems[$code][$key][$subkey] = true;
+ }
+ } else {
+ $this->loadedItems[$code][$key] = true;
+ }
+ }
+ }
+
+ /**
+ * Create a fallback from one language to another, without creating a
+ * complete persistent cache.
+ */
+ public function initShallowFallback( $primaryCode, $fallbackCode ) {
+ $this->data[$primaryCode] =& $this->data[$fallbackCode];
+ $this->loadedItems[$primaryCode] =& $this->loadedItems[$fallbackCode];
+ $this->loadedSubitems[$primaryCode] =& $this->loadedSubitems[$fallbackCode];
+ $this->shallowFallbacks[$primaryCode] = $fallbackCode;
+ }
+
+ /**
+ * Read a PHP file containing localisation data.
+ */
+ protected function readPHPFile( $_fileName, $_fileType ) {
+ // Disable APC caching
+ $_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
+ include( $_fileName );
+ ini_set( 'apc.cache_by_default', $_apcEnabled );
+
+ if ( $_fileType == 'core' || $_fileType == 'extension' ) {
+ $data = compact( self::$allKeys );
+ } elseif ( $_fileType == 'aliases' ) {
+ $data = compact( 'aliases' );
+ } else {
+ throw new MWException( __METHOD__.": Invalid file type: $_fileType" );
+ }
+ return $data;
+ }
+
+ /**
+ * Merge two localisation values, a primary and a fallback, overwriting the
+ * primary value in place.
+ */
+ protected function mergeItem( $key, &$value, $fallbackValue ) {
+ if ( !is_null( $value ) ) {
+ if ( !is_null( $fallbackValue ) ) {
+ if ( in_array( $key, self::$mergeableMapKeys ) ) {
+ $value = $value + $fallbackValue;
+ } elseif ( in_array( $key, self::$mergeableListKeys ) ) {
+ $value = array_unique( array_merge( $fallbackValue, $value ) );
+ } elseif ( in_array( $key, self::$mergeableAliasListKeys ) ) {
+ $value = array_merge_recursive( $value, $fallbackValue );
+ } elseif ( in_array( $key, self::$optionalMergeKeys ) ) {
+ if ( !empty( $value['inherit'] ) ) {
+ $value = array_merge( $fallbackValue, $value );
+ }
+ if ( isset( $value['inherit'] ) ) {
+ unset( $value['inherit'] );
+ }
+ }
+ }
+ } else {
+ $value = $fallbackValue;
+ }
+ }
+
+ /**
+ * Given an array mapping language code to localisation value, such as is
+ * found in extension *.i18n.php files, iterate through a fallback sequence
+ * to merge the given data with an existing primary value.
+ *
+ * Returns true if any data from the extension array was used, false
+ * otherwise.
+ */
+ protected function mergeExtensionItem( $codeSequence, $key, &$value, $fallbackValue ) {
+ $used = false;
+ foreach ( $codeSequence as $code ) {
+ if ( isset( $fallbackValue[$code] ) ) {
+ $this->mergeItem( $key, $value, $fallbackValue[$code] );
+ $used = true;
+ }
+ }
+ return $used;
+ }
+
+ /**
+ * Load localisation data for a given language for both core and extensions
+ * and save it to the persistent cache store and the process cache
+ */
+ public function recache( $code ) {
+ static $recursionGuard = array();
+ global $wgExtensionMessagesFiles, $wgExtensionAliasesFiles;
+ wfProfileIn( __METHOD__ );
+
+ if ( !$code ) {
+ throw new MWException( "Invalid language code requested" );
+ }
+ $this->recachedLangs[$code] = true;
+
+ # Initial values
+ $initialData = array_combine(
+ self::$allKeys,
+ array_fill( 0, count( self::$allKeys ), null ) );
+ $coreData = $initialData;
+ $deps = array();
+
+ # Load the primary localisation from the source file
+ $fileName = Language::getMessagesFileName( $code );
+ if ( !file_exists( $fileName ) ) {
+ wfDebug( __METHOD__.": no localisation file for $code, using fallback to en\n" );
+ $coreData['fallback'] = 'en';
+ } else {
+ $deps[] = new FileDependency( $fileName );
+ $data = $this->readPHPFile( $fileName, 'core' );
+ wfDebug( __METHOD__.": got localisation for $code from source\n" );
+
+ # Merge primary localisation
+ foreach ( $data as $key => $value ) {
+ $this->mergeItem( $key, $coreData[$key], $value );
+ }
+ }
+
+ # Fill in the fallback if it's not there already
+ if ( is_null( $coreData['fallback'] ) ) {
+ $coreData['fallback'] = $code === 'en' ? false : 'en';
+ }
+
+ if ( $coreData['fallback'] !== false ) {
+ # Guard against circular references
+ if ( isset( $recursionGuard[$code] ) ) {
+ throw new MWException( "Error: Circular fallback reference in language code $code" );
+ }
+ $recursionGuard[$code] = true;
+
+ # Load the fallback localisation item by item and merge it
+ $deps = array_merge( $deps, $this->getItem( $coreData['fallback'], 'deps' ) );
+ foreach ( self::$allKeys as $key ) {
+ if ( is_null( $coreData[$key] ) || $this->isMergeableKey( $key ) ) {
+ $fallbackValue = $this->getItem( $coreData['fallback'], $key );
+ $this->mergeItem( $key, $coreData[$key], $fallbackValue );
+ }
+ }
+ $fallbackSequence = $this->getItem( $coreData['fallback'], 'fallbackSequence' );
+ array_unshift( $fallbackSequence, $coreData['fallback'] );
+ $coreData['fallbackSequence'] = $fallbackSequence;
+ unset( $recursionGuard[$code] );
+ } else {
+ $coreData['fallbackSequence'] = array();
+ }
+ $codeSequence = array_merge( array( $code ), $coreData['fallbackSequence'] );
+
+ # Load the extension localisations
+ # This is done after the core because we know the fallback sequence now.
+ # But it has a higher precedence for merging so that we can support things
+ # like site-specific message overrides.
+ $allData = $initialData;
+ foreach ( $wgExtensionMessagesFiles as $fileName ) {
+ $data = $this->readPHPFile( $fileName, 'extension' );
+ $used = false;
+ foreach ( $data as $key => $item ) {
+ if( $this->mergeExtensionItem( $codeSequence, $key, $allData[$key], $item ) ) {
+ $used = true;
+ }
+ }
+ if ( $used ) {
+ $deps[] = new FileDependency( $fileName );
+ }
+ }
+
+ # Load deprecated $wgExtensionAliasesFiles
+ foreach ( $wgExtensionAliasesFiles as $fileName ) {
+ $data = $this->readPHPFile( $fileName, 'aliases' );
+ if ( !isset( $data['aliases'] ) ) {
+ continue;
+ }
+ $used = $this->mergeExtensionItem( $codeSequence, 'specialPageAliases',
+ $allData['specialPageAliases'], $data['aliases'] );
+ if ( $used ) {
+ $deps[] = new FileDependency( $fileName );
+ }
+ }
+
+ # Merge core data into extension data
+ foreach ( $coreData as $key => $item ) {
+ $this->mergeItem( $key, $allData[$key], $item );
+ }
+
+ # Add cache dependencies for any referenced globals
+ $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
+ $deps['wgExtensionAliasesFiles'] = new GlobalDependency( 'wgExtensionAliasesFiles' );
+ $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
+
+ # Add dependencies to the cache entry
+ $allData['deps'] = $deps;
+
+ # Replace spaces with underscores in namespace names
+ $allData['namespaceNames'] = str_replace( ' ', '_', $allData['namespaceNames'] );
+
+ # And do the same for special page aliases. $page is an array.
+ foreach ( $allData['specialPageAliases'] as &$page ) {
+ $page = str_replace( ' ', '_', $page );
+ }
+ # Decouple the reference to prevent accidental damage
+ unset($page);
+
+ # Fix broken defaultUserOptionOverrides
+ if ( !is_array( $allData['defaultUserOptionOverrides'] ) ) {
+ $allData['defaultUserOptionOverrides'] = array();
+ }
+
+ # Set the list keys
+ $allData['list'] = array();
+ foreach ( self::$splitKeys as $key ) {
+ $allData['list'][$key] = array_keys( $allData[$key] );
+ }
+
+ # Run hooks
+ wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
+
+ if ( is_null( $allData['defaultUserOptionOverrides'] ) ) {
+ throw new MWException( __METHOD__.': Localisation data failed sanity check! ' .
+ 'Check that your languages/messages/MessagesEn.php file is intact.' );
+ }
+
+ # Set the preload key
+ $allData['preload'] = $this->buildPreload( $allData );
+
+ # Save to the process cache and register the items loaded
+ $this->data[$code] = $allData;
+ foreach ( $allData as $key => $item ) {
+ $this->loadedItems[$code][$key] = true;
+ }
+
+ # Save to the persistent cache
+ $this->store->startWrite( $code );
+ foreach ( $allData as $key => $value ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ foreach ( $value as $subkey => $subvalue ) {
+ $this->store->set( "$key:$subkey", $subvalue );
+ }
+ } else {
+ $this->store->set( $key, $value );
+ }
+ }
+ $this->store->finishWrite();
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Build the preload item from the given pre-cache data.
+ *
+ * The preload item will be loaded automatically, improving performance
+ * for the commonly-requested items it contains.
+ */
+ protected function buildPreload( $data ) {
+ $preload = array( 'messages' => array() );
+ foreach ( self::$preloadedKeys as $key ) {
+ $preload[$key] = $data[$key];
+ }
+ foreach ( $data['preloadedMessages'] as $subkey ) {
+ if ( isset( $data['messages'][$subkey] ) ) {
+ $subitem = $data['messages'][$subkey];
+ } else {
+ $subitem = null;
+ }
+ $preload['messages'][$subkey] = $subitem;
+ }
+ return $preload;
+ }
+
+ /**
+ * Unload the data for a given language from the object cache.
+ * Reduces memory usage.
+ */
+ public function unload( $code ) {
+ unset( $this->data[$code] );
+ unset( $this->loadedItems[$code] );
+ unset( $this->loadedSubitems[$code] );
+ unset( $this->initialisedLangs[$code] );
+ // We don't unload legacyData because there's no way to get it back
+ // again, it's not really a cache
+ foreach ( $this->shallowFallbacks as $shallowCode => $fbCode ) {
+ if ( $fbCode === $code ) {
+ $this->unload( $shallowCode );
+ }
+ }
+ }
+
+ /**
+ * Unload all data
+ */
+ public function unloadAll() {
+ foreach ( $this->initialisedLangs as $lang => $unused ) {
+ $this->unload( $lang );
+ }
+ }
+
+ /**
+ * Add messages to the cache, from an extension that has not yet been
+ * migrated to $wgExtensionMessages or the LocalisationCacheRecache hook.
+ * Called by deprecated function $wgMessageCache->addMessages().
+ */
+ public function addLegacyMessages( $messages ) {
+ foreach ( $messages as $lang => $langMessages ) {
+ if ( isset( $this->legacyData[$lang]['messages'] ) ) {
+ $this->legacyData[$lang]['messages'] =
+ $langMessages + $this->legacyData[$lang]['messages'];
+ } else {
+ $this->legacyData[$lang]['messages'] = $langMessages;
+ }
+ }
+ }
+
+ /**
+ * Disable the storage backend
+ */
+ public function disableBackend() {
+ $this->store = new LCStore_Null;
+ $this->manualRecache = false;
+ }
+}
+
+/**
+ * Interface for the persistence layer of LocalisationCache.
+ *
+ * The persistence layer is two-level hierarchical cache. The first level
+ * is the language, the second level is the item or subitem.
+ *
+ * Since the data for a whole language is rebuilt in one operation, it needs
+ * to have a fast and atomic method for deleting or replacing all of the
+ * current data for a given language. The interface reflects this bulk update
+ * operation. Callers writing to the cache must first call startWrite(), then
+ * will call set() a couple of thousand times, then will call finishWrite()
+ * to commit the operation. When finishWrite() is called, the cache is
+ * expected to delete all data previously stored for that language.
+ *
+ * The values stored are PHP variables suitable for serialize(). Implementations
+ * of LCStore are responsible for serializing and unserializing.
+ */
+interface LCStore {
+ /**
+ * Get a value.
+ * @param $code Language code
+ * @param $key Cache key
+ */
+ public function get( $code, $key );
+
+ /**
+ * Start a write transaction.
+ * @param $code Language code
+ */
+ public function startWrite( $code );
+
+ /**
+ * Finish a write transaction.
+ */
+ public function finishWrite();
+
+ /**
+ * Set a key to a given value. startWrite() must be called before this
+ * is called, and finishWrite() must be called afterwards.
+ */
+ public function set( $key, $value );
+
+}
+
+/**
+ * LCStore implementation which uses the standard DB functions to store data.
+ * This will work on any MediaWiki installation.
+ */
+class LCStore_DB implements LCStore {
+ var $currentLang;
+ var $writesDone = false;
+ var $dbw, $batch;
+ var $readOnly = false;
+
+ public function get( $code, $key ) {
+ if ( $this->writesDone ) {
+ $db = wfGetDB( DB_MASTER );
+ } else {
+ $db = wfGetDB( DB_SLAVE );
+ }
+ $row = $db->selectRow( 'l10n_cache', array( 'lc_value' ),
+ array( 'lc_lang' => $code, 'lc_key' => $key ), __METHOD__ );
+ if ( $row ) {
+ return unserialize( $row->lc_value );
+ } else {
+ return null;
+ }
+ }
+
+ public function startWrite( $code ) {
+ if ( $this->readOnly ) {
+ return;
+ }
+ if ( !$code ) {
+ throw new MWException( __METHOD__.": Invalid language \"$code\"" );
+ }
+ $this->dbw = wfGetDB( DB_MASTER );
+ try {
+ $this->dbw->begin();
+ $this->dbw->delete( 'l10n_cache', array( 'lc_lang' => $code ), __METHOD__ );
+ } catch ( DBQueryError $e ) {
+ if ( $this->dbw->wasReadOnlyError() ) {
+ $this->readOnly = true;
+ $this->dbw->rollback();
+ $this->dbw->ignoreErrors( false );
+ return;
+ } else {
+ throw $e;
+ }
+ }
+ $this->currentLang = $code;
+ $this->batch = array();
+ }
+
+ public function finishWrite() {
+ if ( $this->readOnly ) {
+ return;
+ }
+ if ( $this->batch ) {
+ $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
+ }
+ $this->dbw->commit();
+ $this->currentLang = null;
+ $this->dbw = null;
+ $this->batch = array();
+ $this->writesDone = true;
+ }
+
+ public function set( $key, $value ) {
+ if ( $this->readOnly ) {
+ return;
+ }
+ if ( is_null( $this->currentLang ) ) {
+ throw new MWException( __CLASS__.': must call startWrite() before calling set()' );
+ }
+ $this->batch[] = array(
+ 'lc_lang' => $this->currentLang,
+ 'lc_key' => $key,
+ 'lc_value' => serialize( $value ) );
+ if ( count( $this->batch ) >= 100 ) {
+ $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
+ $this->batch = array();
+ }
+ }
+}
+
+/**
+ * LCStore implementation which stores data as a collection of CDB files in the
+ * directory given by $wgCacheDirectory. If $wgCacheDirectory is not set, this
+ * will throw an exception.
+ *
+ * Profiling indicates that on Linux, this implementation outperforms MySQL if
+ * the directory is on a local filesystem and there is ample kernel cache
+ * space. The performance advantage is greater when the DBA extension is
+ * available than it is with the PHP port.
+ *
+ * See Cdb.php and http://cr.yp.to/cdb.html
+ */
+class LCStore_CDB implements LCStore {
+ var $readers, $writer, $currentLang, $directory;
+
+ function __construct( $conf = array() ) {
+ global $wgCacheDirectory;
+ if ( isset( $conf['directory'] ) ) {
+ $this->directory = $conf['directory'];
+ } else {
+ $this->directory = $wgCacheDirectory;
+ }
+ }
+
+ public function get( $code, $key ) {
+ if ( !isset( $this->readers[$code] ) ) {
+ $fileName = $this->getFileName( $code );
+ if ( !file_exists( $fileName ) ) {
+ $this->readers[$code] = false;
+ } else {
+ $this->readers[$code] = CdbReader::open( $fileName );
+ }
+ }
+ if ( !$this->readers[$code] ) {
+ return null;
+ } else {
+ $value = $this->readers[$code]->get( $key );
+ if ( $value === false ) {
+ return null;
+ }
+ return unserialize( $value );
+ }
+ }
+
+ public function startWrite( $code ) {
+ if ( !file_exists( $this->directory ) ) {
+ if ( !wfMkdirParents( $this->directory ) ) {
+ throw new MWException( "Unable to create the localisation store " .
+ "directory \"{$this->directory}\"" );
+ }
+ }
+ // Close reader to stop permission errors on write
+ if( !empty($this->readers[$code]) ) {
+ $this->readers[$code]->close();
+ }
+ $this->writer = CdbWriter::open( $this->getFileName( $code ) );
+ $this->currentLang = $code;
+ }
+
+ public function finishWrite() {
+ // Close the writer
+ $this->writer->close();
+ $this->writer = null;
+ unset( $this->readers[$this->currentLang] );
+ $this->currentLang = null;
+ }
+
+ public function set( $key, $value ) {
+ if ( is_null( $this->writer ) ) {
+ throw new MWException( __CLASS__.': must call startWrite() before calling set()' );
+ }
+ $this->writer->set( $key, serialize( $value ) );
+ }
+
+ protected function getFileName( $code ) {
+ if ( !$code || strpos( $code, '/' ) !== false ) {
+ throw new MWException( __METHOD__.": Invalid language \"$code\"" );
+ }
+ return "{$this->directory}/l10n_cache-$code.cdb";
+ }
+}
+
+/**
+ * Null store backend, used to avoid DB errors during install
+ */
+class LCStore_Null implements LCStore {
+ public function get( $code, $key ) {
+ return null;
+ }
+
+ public function startWrite( $code ) {}
+ public function finishWrite() {}
+ public function set( $key, $value ) {}
+}
+
+/**
+ * A localisation cache optimised for loading large amounts of data for many
+ * languages. Used by rebuildLocalisationCache.php.
+ */
+class LocalisationCache_BulkLoad extends LocalisationCache {
+ /**
+ * A cache of the contents of data files.
+ * Core files are serialized to avoid using ~1GB of RAM during a recache.
+ */
+ var $fileCache = array();
+
+ /**
+ * Most recently used languages. Uses the linked-list aspect of PHP hashtables
+ * to keep the most recently used language codes at the end of the array, and
+ * the language codes that are ready to be deleted at the beginning.
+ */
+ var $mruLangs = array();
+
+ /**
+ * Maximum number of languages that may be loaded into $this->data
+ */
+ var $maxLoadedLangs = 10;
+
+ protected function readPHPFile( $fileName, $fileType ) {
+ $serialize = $fileType === 'core';
+ if ( !isset( $this->fileCache[$fileName][$fileType] ) ) {
+ $data = parent::readPHPFile( $fileName, $fileType );
+ if ( $serialize ) {
+ $encData = serialize( $data );
+ } else {
+ $encData = $data;
+ }
+ $this->fileCache[$fileName][$fileType] = $encData;
+ return $data;
+ } elseif ( $serialize ) {
+ return unserialize( $this->fileCache[$fileName][$fileType] );
+ } else {
+ return $this->fileCache[$fileName][$fileType];
+ }
+ }
+
+ public function getItem( $code, $key ) {
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+ return parent::getItem( $code, $key );
+ }
+
+ public function getSubitem( $code, $key, $subkey ) {
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+ return parent::getSubitem( $code, $key, $subkey );
+ }
+
+ public function recache( $code ) {
+ parent::recache( $code );
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+ $this->trimCache();
+ }
+
+ public function unload( $code ) {
+ unset( $this->mruLangs[$code] );
+ parent::unload( $code );
+ }
+
+ /**
+ * Unload cached languages until there are less than $this->maxLoadedLangs
+ */
+ protected function trimCache() {
+ while ( count( $this->data ) > $this->maxLoadedLangs && count( $this->mruLangs ) ) {
+ reset( $this->mruLangs );
+ $code = key( $this->mruLangs );
+ wfDebug( __METHOD__.": unloading $code\n" );
+ $this->unload( $code );
+ }
+ }
+}
diff --git a/includes/LogEventsList.php b/includes/LogEventsList.php
index 95109eb5..4bfdc2a3 100644
--- a/includes/LogEventsList.php
+++ b/includes/LogEventsList.php
@@ -39,7 +39,7 @@ class LogEventsList {
// Precache various messages
if( !isset( $this->message ) ) {
$messages = array( 'revertmerge', 'protect_change', 'unblocklink', 'change-blocklink',
- 'revertmove', 'undeletelink', 'revdel-restore', 'rev-delundel', 'hist', 'diff',
+ 'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff',
'pipe-separator' );
foreach( $messages as $msg ) {
$this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
@@ -49,18 +49,22 @@ class LogEventsList {
/**
* Set page title and show header for this log type
- * @param $type String
+ * @param $type Array
*/
public function showHeader( $type ) {
- if( LogPage::isLogType( $type ) ) {
- $this->out->setPageTitle( LogPage::logName( $type ) );
- $this->out->addHTML( LogPage::logHeader( $type ) );
+ // If only one log type is used, then show a special message...
+ $headerType = (count($type) == 1) ? $type[0] : '';
+ if( LogPage::isLogType( $headerType ) ) {
+ $this->out->setPageTitle( LogPage::logName( $headerType ) );
+ $this->out->addHTML( LogPage::logHeader( $headerType ) );
+ } else {
+ $this->out->addHTML( wfMsgExt('alllogstext',array('parseinline')) );
}
}
/**
* Show options for the log list
- * @param $type String
+ * @param $types string or Array
* @param $user String
* @param $page String
* @param $pattern String
@@ -69,32 +73,64 @@ class LogEventsList {
* @param $filter: array
* @param $tagFilter: array?
*/
- public function showOptions( $type = '', $user = '', $page = '', $pattern = '', $year = '',
- $month = '', $filter = null, $tagFilter='' )
+ public function showOptions( $types=array(), $user='', $page='', $pattern='', $year='',
+ $month = '', $filter = null, $tagFilter='' )
{
global $wgScript, $wgMiserMode;
- $action = htmlspecialchars( $wgScript );
+
+ $action = $wgScript;
$title = SpecialPage::getTitleFor( 'Log' );
- $special = htmlspecialchars( $title->getPrefixedDBkey() );
+ $special = $title->getPrefixedDBkey();
+
+ // For B/C, we take strings, but make sure they are converted...
+ $types = ($types === '') ? array() : (array)$types;
$tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
- $this->out->addHTML( "<form action=\"$action\" method=\"get\"><fieldset>" .
- Xml::element( 'legend', array(), wfMsg( 'log' ) ) .
- Xml::hidden( 'title', $special ) . "\n" .
- $this->getTypeMenu( $type ) . "\n" .
- $this->getUserInput( $user ) . "\n" .
- $this->getTitleInput( $page ) . "\n" .
- ( !$wgMiserMode ? ($this->getTitlePattern( $pattern )."\n") : "" ) .
- "<p>" . Xml::dateMenu( $year, $month ) . "\n" .
- ( $tagSelector ? Xml::tags( 'p', null, implode( '&nbsp;', $tagSelector ) ) :'' ). "\n" .
- ( $filter ? "</p><p>".$this->getFilterLinks( $type, $filter )."\n" : "" ) . "\n" .
- Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "</p>\n" .
- "</fieldset></form>"
- );
+ $html = '';
+ $html .= Xml::hidden( 'title', $special );
+
+ // Basic selectors
+ $html .= $this->getTypeMenu( $types ) . "\n";
+ $html .= $this->getUserInput( $user ) . "\n";
+ $html .= $this->getTitleInput( $page ) . "\n";
+ $html .= $this->getExtraInputs( $types ) . "\n";
+
+ // Title pattern, if allowed
+ if (!$wgMiserMode) {
+ $html .= $this->getTitlePattern( $pattern ) . "\n";
+ }
+
+ // date menu
+ $html .= Xml::tags( 'p', null, Xml::dateMenu( $year, $month ) );
+
+ // Tag filter
+ if ($tagSelector) {
+ $html .= Xml::tags( 'p', null, implode( '&nbsp;', $tagSelector ) );
+ }
+
+ // Filter links
+ if ($filter) {
+ $html .= Xml::tags( 'p', null, $this->getFilterLinks( $filter ) );
+ }
+
+ // Submit button
+ $html .= Xml::submitButton( wfMsg( 'allpagessubmit' ) );
+
+ // Fieldset
+ $html = Xml::fieldset( wfMsg( 'log' ), $html );
+
+ // Form wrapping
+ $html = Xml::tags( 'form', array( 'action' => $action, 'method' => 'get' ), $html );
+
+ $this->out->addHTML( $html );
}
-
- private function getFilterLinks( $logType, $filter ) {
+
+ /**
+ * @param $filter Array
+ * @return String: Formatted HTML
+ */
+ private function getFilterLinks( $filter ) {
global $wgTitle, $wgLang;
// show/hide links
$messages = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
@@ -102,17 +138,29 @@ class LogEventsList {
$links = array();
$hiddens = ''; // keep track for "go" button
foreach( $filter as $type => $val ) {
+ // Should the below assignment be outside the foreach?
+ // Then it would have to be copied. Not certain what is more expensive.
+ $query = $this->getDefaultQuery();
+ $queryKey = "hide_{$type}_log";
+
$hideVal = 1 - intval($val);
- $link = $this->skin->makeKnownLinkObj( $wgTitle, $messages[$hideVal],
- wfArrayToCGI( array( "hide_{$type}_log" => $hideVal ), $this->getDefaultQuery() )
+ $query[$queryKey] = $hideVal;
+
+ $link = $this->skin->link(
+ $wgTitle,
+ $messages[$hideVal],
+ array(),
+ $query,
+ array( 'known', 'noclasses' )
);
+
$links[$type] = wfMsgHtml( "log-show-hide-{$type}", $link );
$hiddens .= Xml::hidden( "hide_{$type}_log", $val ) . "\n";
}
// Build links
return '<small>'.$wgLang->pipeList( $links ) . '</small>' . $hiddens;
}
-
+
private function getDefaultQuery() {
if ( !isset( $this->mDefaultQuery ) ) {
$this->mDefaultQuery = $_GET;
@@ -128,10 +176,10 @@ class LogEventsList {
}
/**
- * @param $queryType String
+ * @param $queryTypes Array
* @return String: Formatted HTML
*/
- private function getTypeMenu( $queryType ) {
+ private function getTypeMenu( $queryTypes ) {
global $wgLogRestrictions, $wgUser;
$html = "<select name='type'>\n";
@@ -142,14 +190,16 @@ class LogEventsList {
// First pass to load the log names
foreach( $validTypes as $type ) {
$text = LogPage::logName( $type );
- $typesByName[$text] = $type;
+ $typesByName[$type] = $text;
}
// Second pass to sort by name
- ksort($typesByName);
+ asort($typesByName);
+ // Note the query type
+ $queryType = count($queryTypes) == 1 ? $queryTypes[0] : '';
// Third pass generates sorted XHTML content
- foreach( $typesByName as $text => $type ) {
+ foreach( $typesByName as $type => $text ) {
$selected = ($type == $queryType);
// Restricted types
if ( isset($wgLogRestrictions[$type]) ) {
@@ -170,7 +220,9 @@ class LogEventsList {
* @return String: Formatted HTML
*/
private function getUserInput( $user ) {
- return Xml::inputLabel( wfMsg( 'specialloguserlabel' ), 'user', 'mw-log-user', 15, $user );
+ return '<span style="white-space: nowrap">' .
+ Xml::inputLabel( wfMsg( 'specialloguserlabel' ), 'user', 'mw-log-user', 15, $user ) .
+ '</span>';
}
/**
@@ -178,7 +230,9 @@ class LogEventsList {
* @return String: Formatted HTML
*/
private function getTitleInput( $title ) {
- return Xml::inputLabel( wfMsg( 'speciallogtitlelabel' ), 'page', 'mw-log-page', 20, $title );
+ return '<span style="white-space: nowrap">' .
+ Xml::inputLabel( wfMsg( 'speciallogtitlelabel' ), 'page', 'mw-log-page', 20, $title ) .
+ '</span>';
}
/**
@@ -190,6 +244,20 @@ class LogEventsList {
'</span>';
}
+ private function getExtraInputs( $types ) {
+ global $wgRequest;
+ $offender = $wgRequest->getVal('offender');
+ $user = User::newFromName( $offender, false );
+ if( !$user || ($user->getId() == 0 && !IP::isIPAddress($offender) ) ) {
+ $offender = ''; // Blank field if invalid
+ }
+ if( count($types) == 1 && $types[0] == 'suppress' ) {
+ return Xml::inputLabel( wfMsg('revdelete-offender'), 'offender',
+ 'mw-log-offender', 20, $offender );
+ }
+ return '';
+ }
+
public function beginLogEventsList() {
return "<ul>\n";
}
@@ -207,17 +275,17 @@ class LogEventsList {
$title = Title::makeTitle( $row->log_namespace, $row->log_title );
$classes = array( "mw-logline-{$row->log_type}" );
- $time = $wgLang->timeanddate( wfTimestamp(TS_MW, $row->log_timestamp), true );
+ $time = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->log_timestamp ), true );
// User links
- if( self::isDeleted($row,LogPage::DELETED_USER) ) {
+ if( self::isDeleted( $row, LogPage::DELETED_USER ) ) {
$userLink = '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
$userLink = $this->skin->userLink( $row->log_user, $row->user_name ) .
$this->skin->userToolLinks( $row->log_user, $row->user_name, true, 0, $row->user_editcount );
}
// Comment
- if( self::isDeleted($row,LogPage::DELETED_COMMENT) ) {
- $comment = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-comment') . '</span>';
+ if( self::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
+ $comment = '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
} else {
$comment = $wgContLang->getDirMark() . $this->skin->commentBlock( $row->log_comment );
}
@@ -225,46 +293,79 @@ class LogEventsList {
$paramArray = LogPage::extractParams( $row->log_params );
$revert = $del = '';
// Some user can hide log items and have review links
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- $del = $this->getShowHideLinks( $row ) . ' ';
+ if( !( $this->flags & self::NO_ACTION_LINK ) && $wgUser->isAllowed( 'deletedhistory' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
+ $del = $this->getShowHideLinks( $row ) . ' ';
+ }
}
// Add review links and such...
- if( ($this->flags & self::NO_ACTION_LINK) || ($row->log_deleted & LogPage::DELETED_ACTION) ) {
+ if( ( $this->flags & self::NO_ACTION_LINK ) || ( $row->log_deleted & LogPage::DELETED_ACTION ) ) {
// Action text is suppressed...
- } else if( self::typeAction($row,'move','move','move') && !empty($paramArray[0]) ) {
+ } else if( self::typeAction( $row, 'move', 'move', 'move' ) && !empty( $paramArray[0] ) ) {
$destTitle = Title::newFromText( $paramArray[0] );
if( $destTitle ) {
- $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Movepage' ),
+ $revert = '(' . $this->skin->link(
+ SpecialPage::getTitleFor( 'Movepage' ),
$this->message['revertmove'],
- 'wpOldTitle=' . urlencode( $destTitle->getPrefixedDBkey() ) .
- '&wpNewTitle=' . urlencode( $title->getPrefixedDBkey() ) .
- '&wpReason=' . urlencode( wfMsgForContent( 'revertmove' ) ) .
- '&wpMovetalk=0' ) . ')';
+ array(),
+ array(
+ 'wpOldTitle' => $destTitle->getPrefixedDBkey(),
+ 'wpNewTitle' => $title->getPrefixedDBkey(),
+ 'wpReason' => wfMsgForContent( 'revertmove' ),
+ 'wpMovetalk' => 0
+ ),
+ array( 'known', 'noclasses' )
+ ) . ')';
}
// Show undelete link
- } else if( self::typeAction($row,array('delete','suppress'),'delete','delete') ) {
- $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Undelete' ),
- $this->message['undeletelink'], 'target='. urlencode( $title->getPrefixedDBkey() ) ) . ')';
+ } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
+ if( !$wgUser->isAllowed( 'undelete' ) ) {
+ $viewdeleted = $this->message['undeleteviewlink'];
+ } else {
+ $viewdeleted = $this->message['undeletelink'];
+ }
+
+ $revert = '(' . $this->skin->link(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $viewdeleted,
+ array(),
+ array( 'target' => $title->getPrefixedDBkey() ),
+ array( 'known', 'noclasses' )
+ ) . ')';
// Show unblock/change block link
- } else if( self::typeAction($row,array('block','suppress'),array('block','reblock'),'block') ) {
+ } else if( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
$revert = '(' .
- $this->skin->link( SpecialPage::getTitleFor( 'Ipblocklist' ),
+ $this->skin->link(
+ SpecialPage::getTitleFor( 'Ipblocklist' ),
$this->message['unblocklink'],
array(),
- array( 'action' => 'unblock', 'ip' => $row->log_title ),
- 'known' )
- . $this->message['pipe-separator'] .
- $this->skin->link( SpecialPage::getTitleFor( 'Blockip', $row->log_title ),
+ array(
+ 'action' => 'unblock',
+ 'ip' => $row->log_title
+ ),
+ 'known'
+ ) .
+ $this->message['pipe-separator'] .
+ $this->skin->link(
+ SpecialPage::getTitleFor( 'Blockip', $row->log_title ),
$this->message['change-blocklink'],
- array(), array(), 'known' ) .
+ array(),
+ array(),
+ 'known'
+ ) .
')';
// Show change protection link
} else if( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
- $revert .= ' (' .
+ $revert .= ' (' .
$this->skin->link( $title,
$this->message['hist'],
array(),
- array( 'action' => 'history', 'offset' => $row->log_timestamp ) );
+ array(
+ 'action' => 'history',
+ 'offset' => $row->log_timestamp
+ )
+ );
if( $wgUser->isAllowed( 'protect' ) ) {
$revert .= $this->message['pipe-separator'] .
$this->skin->link( $title,
@@ -275,50 +376,94 @@ class LogEventsList {
}
$revert .= ')';
// Show unmerge link
- } else if( self::typeAction($row,'merge','merge','mergehistory') ) {
+ } else if( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
$merge = SpecialPage::getTitleFor( 'Mergehistory' );
- $revert = '(' . $this->skin->makeKnownLinkObj( $merge, $this->message['revertmerge'],
- wfArrayToCGI( array('target' => $paramArray[0], 'dest' => $title->getPrefixedDBkey(),
- 'mergepoint' => $paramArray[1] ) ) ) . ')';
+ $revert = '(' . $this->skin->link(
+ $merge,
+ $this->message['revertmerge'],
+ array(),
+ array(
+ 'target' => $paramArray[0],
+ 'dest' => $title->getPrefixedDBkey(),
+ 'mergepoint' => $paramArray[1]
+ ),
+ array( 'known', 'noclasses' )
+ ) . ')';
// If an edit was hidden from a page give a review link to the history
- } else if( self::typeAction($row,array('delete','suppress'),'revision','deleterevision') ) {
- if( count($paramArray) == 2 ) {
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
+ } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
+ if( count($paramArray) >= 2 ) {
// Different revision types use different URL params...
$key = $paramArray[0];
- // Link to each hidden object ID, $paramArray[1] is the url param
+ // $paramArray[1] is a CSV of the IDs
$Ids = explode( ',', $paramArray[1] );
- $revParams = '';
- foreach( $Ids as $n => $id ) {
- $revParams .= '&' . urlencode($key) . '[]=' . urlencode($id);
- }
+ $query = $paramArray[1];
$revert = array();
// Diff link for single rev deletions
- if( $key === 'oldid' && count($Ids) == 1 ) {
- $token = urlencode( $wgUser->editToken( intval($Ids[0]) ) );
- $revert[] = $this->skin->makeKnownLinkObj( $title, $this->message['diff'],
- 'diff='.intval($Ids[0])."&unhide=1&token=$token" );
+ if( count($Ids) == 1 ) {
+ // Live revision diffs...
+ if( in_array( $key, array( 'oldid', 'revision' ) ) ) {
+ $revert[] = $this->skin->link(
+ $title,
+ $this->message['diff'],
+ array(),
+ array(
+ 'diff' => intval( $Ids[0] ),
+ 'unhide' => 1
+ ),
+ array( 'known', 'noclasses' )
+ );
+ // Deleted revision diffs...
+ } else if( in_array( $key, array( 'artimestamp','archive' ) ) ) {
+ $revert[] = $this->skin->link(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $this->message['diff'],
+ array(),
+ array(
+ 'target' => $title->getPrefixedDBKey(),
+ 'diff' => 'prev',
+ 'timestamp' => $Ids[0]
+ ),
+ array( 'known', 'noclasses' )
+ );
+ }
}
// View/modify link...
- $revert[] = $this->skin->makeKnownLinkObj( $revdel, $this->message['revdel-restore'],
- 'target=' . $title->getPrefixedUrl() . $revParams );
- $revert = '(' . implode(' | ',$revert) . ')';
+ $revert[] = $this->skin->link(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ $this->message['revdel-restore'],
+ array(),
+ array(
+ 'target' => $title->getPrefixedText(),
+ 'type' => $key,
+ 'ids' => $query
+ ),
+ array( 'known', 'noclasses' )
+ );
+ // Pipe links
+ $revert = wfMsg( 'parentheses', $wgLang->pipeList( $revert ) );
}
// Hidden log items, give review link
- } else if( self::typeAction($row,array('delete','suppress'),'event','deleterevision') ) {
- if( count($paramArray) == 1 ) {
+ } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'event', 'deletedhistory' ) ) {
+ if( count($paramArray) >= 1 ) {
$revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
+ // $paramArray[1] is a CSV of the IDs
$Ids = explode( ',', $paramArray[0] );
+ $query = $paramArray[0];
// Link to each hidden object ID, $paramArray[1] is the url param
- $logParams = '';
- foreach( $Ids as $n => $id ) {
- $logParams .= '&logid[]=' . intval($id);
- }
- $revert = '(' . $this->skin->makeKnownLinkObj( $revdel, $this->message['revdel-restore'],
- 'target=' . $title->getPrefixedUrl() . $logParams ) . ')';
+ $revert = '(' . $this->skin->link(
+ $revdel,
+ $this->message['revdel-restore'],
+ array(),
+ array(
+ 'target' => $title->getPrefixedText(),
+ 'type' => 'logging',
+ 'ids' => $query
+ ),
+ array( 'known', 'noclasses' )
+ ) . ')';
}
// Self-created users
- } else if( self::typeAction($row,'newusers','create2') ) {
+ } else if( self::typeAction( $row, 'newusers', 'create2' ) ) {
if( isset( $paramArray[0] ) ) {
$revert = $this->skin->userToolLinks( $paramArray[0], $title->getDBkey(), true );
} else {
@@ -336,21 +481,23 @@ class LogEventsList {
&$comment, &$revert, $row->log_timestamp ) );
}
// Event description
- if( self::isDeleted($row,LogPage::DELETED_ACTION) ) {
- $action = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
+ if( self::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
+ $action = '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-event' ) . '</span>';
} else {
$action = LogPage::actionText( $row->log_type, $row->log_action, $title,
$this->skin, $paramArray, true );
}
// Any tags...
- list($tagDisplay, $newClasses) = ChangeTags::formatSummaryRow( $row->ts_tags, 'logevent' );
+ list( $tagDisplay, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'logevent' );
$classes = array_merge( $classes, $newClasses );
if( $revert != '' ) {
$revert = '<span class="mw-logevent-actionlink">' . $revert . '</span>';
}
+ $time = htmlspecialchars( $time );
+
return Xml::tags( 'li', array( "class" => implode( ' ', $classes ) ),
$del . $time . ' ' . $userLink . ' ' . $action . ' ' . $comment . ' ' . $revert . " $tagDisplay" ) . "\n";
}
@@ -360,19 +507,24 @@ class LogEventsList {
* @return string
*/
private function getShowHideLinks( $row ) {
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
+ global $wgUser;
+ if( $row->log_type == 'suppress' ) {
+ return ''; // No one can hide items from the oversight log
+ }
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
// If event was hidden from sysops
if( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) {
- $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.$this->message['rev-delundel'].')' );
- } else if( $row->log_type == 'suppress' ) {
- // No one should be hiding from the oversight log
- $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.$this->message['rev-delundel'].')' );
+ $del = $this->skin->revDeleteLinkDisabled( $canHide );
} else {
$target = SpecialPage::getTitleFor( 'Log', $row->log_type );
- $query = array( 'target' => $target->getPrefixedDBkey(),
- 'logid[]' => $row->log_id
+ $page = Title::makeTitle( $row->log_namespace, $row->log_title );
+ $query = array(
+ 'target' => $target->getPrefixedDBkey(),
+ 'type' => 'logging',
+ 'ids' => $row->log_id,
);
- $del = $this->skin->revDeleteLink( $query, self::isDeleted( $row, LogPage::DELETED_RESTRICTED ) );
+ $del = $this->skin->revDeleteLink( $query,
+ self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
}
return $del;
}
@@ -385,10 +537,11 @@ class LogEventsList {
* @return bool
*/
public static function typeAction( $row, $type, $action, $right='' ) {
- $match = is_array($type) ? in_array($row->log_type,$type) : $row->log_type == $type;
+ $match = is_array($type) ?
+ in_array( $row->log_type, $type ) : $row->log_type == $type;
if( $match ) {
- $match = is_array($action) ?
- in_array($row->log_action,$action) : $row->log_action == $action;
+ $match = is_array( $action ) ?
+ in_array( $row->log_action, $action ) : $row->log_action == $action;
if( $match && $right ) {
global $wgUser;
$match = $wgUser->isAllowed( $right );
@@ -405,12 +558,26 @@ class LogEventsList {
* @return Boolean
*/
public static function userCan( $row, $field ) {
- if( ( $row->log_deleted & $field ) == $field ) {
+ return self::userCanBitfield( $row->log_deleted, $field );
+ }
+
+ /**
+ * Determine if the current user is allowed to view a particular
+ * field of this log row, if it's marked as deleted.
+ * @param $bitfield Integer (current field)
+ * @param $field Integer
+ * @return Boolean
+ */
+ public static function userCanBitfield( $bitfield, $field ) {
+ if( $bitfield & $field ) {
global $wgUser;
- $permission = ( $row->log_deleted & LogPage::DELETED_RESTRICTED ) == LogPage::DELETED_RESTRICTED
- ? 'suppressrevision'
- : 'deleterevision';
- wfDebug( "Checking for $permission due to $field match on $row->log_deleted\n" );
+ $permission = '';
+ if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
+ $permission = 'suppressrevision';
+ } else {
+ $permission = 'deletedhistory';
+ }
+ wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
return $wgUser->isAllowed( $permission );
} else {
return true;
@@ -423,33 +590,111 @@ class LogEventsList {
* @return Boolean
*/
public static function isDeleted( $row, $field ) {
- return ($row->log_deleted & $field) == $field;
+ return ( $row->log_deleted & $field ) == $field;
}
/**
- * Quick function to show a short log extract
- * @param $out OutputPage
- * @param $type String
- * @param $page String
- * @param $user String
- * @param $lim Integer
- * @param $conds Array
+ * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey)
+ * @param $out OutputPage or String-by-reference
+ * @param $types String or Array
+ * @param $page String The page title to show log entries for
+ * @param $user String The user who made the log entries
+ * @param $param Associative Array with the following additional options:
+ * - lim Integer Limit of items to show, default is 50
+ * - conds Array Extra conditions for the query (e.g. "log_action != 'revision'")
+ * - showIfEmpty boolean Set to false if you don't want any output in case the loglist is empty
+ * if set to true (default), "No matching items in log" is displayed if loglist is empty
+ * - msgKey Array If you want a nice box with a message, set this to the key of the message.
+ * First element is the message key, additional optional elements are parameters for the key
+ * that are processed with wgMsgExt and option 'parse'
+ * - offset Set to overwrite offset parameter in $wgRequest
+ * set to '' to unset offset
+ * - wrap String: Wrap the message in html (usually something like "<div ...>$1</div>").
+ * @return Integer Number of total log items (not limited by $lim)
*/
- public static function showLogExtract( $out, $type='', $page='', $user='', $lim=0, $conds=array() ) {
- global $wgUser;
- # Insert list of top 50 or so items
- $loglist = new LogEventsList( $wgUser->getSkin(), $out, 0 );
- $pager = new LogPager( $loglist, $type, $user, $page, '', $conds );
+ public static function showLogExtract( &$out, $types=array(), $page='', $user='',
+ $param = array() ) {
+
+ $defaultParameters = array(
+ 'lim' => 25,
+ 'conds' => array(),
+ 'showIfEmpty' => true,
+ 'msgKey' => array(''),
+ 'wrap' => "$1"
+ );
+
+ # The + operator appends elements of remaining keys from the right
+ # handed array to the left handed, whereas duplicated keys are NOT overwritten.
+ $param += $defaultParameters;
+
+ global $wgUser, $wgOut;
+ # Convert $param array to individual variables
+ $lim = $param['lim'];
+ $conds = $param['conds'];
+ $showIfEmpty = $param['showIfEmpty'];
+ $msgKey = $param['msgKey'];
+ $wrap = $param['wrap'];
+ if ( !is_array( $msgKey ) )
+ $msgKey = array( $msgKey );
+ # Insert list of top 50 (or top $lim) items
+ $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 );
+ $pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
+ if ( isset( $param['offset'] ) ) # Tell pager to ignore $wgRequest offset
+ $pager->setOffset( $param['offset'] );
if( $lim > 0 ) $pager->mLimit = $lim;
$logBody = $pager->getBody();
+ $s = '';
if( $logBody ) {
- $out->addHTML(
- $loglist->beginLogEventsList() .
- $logBody .
- $loglist->endLogEventsList()
+ if ( $msgKey[0] ) {
+ $s = '<div class="mw-warning-with-logexcerpt">';
+
+ if ( count( $msgKey ) == 1 ) {
+ $s .= wfMsgExt( $msgKey[0], array( 'parse' ) );
+ } else { // Process additional arguments
+ $args = $msgKey;
+ array_shift( $args );
+ $s .= wfMsgExt( $msgKey[0], array( 'parse' ), $args );
+ }
+ }
+ $s .= $loglist->beginLogEventsList() .
+ $logBody .
+ $loglist->endLogEventsList();
+ } else {
+ if ( $showIfEmpty )
+ $s = Html::rawElement( 'div', array( 'class' => 'mw-warning-logempty' ),
+ wfMsgExt( 'logempty', array( 'parseinline' ) ) );
+ }
+ if( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
+ $urlParam = array();
+ if ( $page != '')
+ $urlParam['page'] = $page;
+ if ( $user != '')
+ $urlParam['user'] = $user;
+ if ( !is_array( $types ) ) # Make it an array, if it isn't
+ $types = array( $types );
+ # If there is exactly one log type, we can link to Special:Log?type=foo
+ if ( count( $types ) == 1 )
+ $urlParam['type'] = $types[0];
+ $s .= $wgUser->getSkin()->link(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'log-fulllog' ),
+ array(),
+ $urlParam
);
+
+ }
+ if ( $logBody && $msgKey[0] )
+ $s .= '</div>';
+
+ if ( $wrap!='' ) { // Wrap message in html
+ $s = str_replace( '$1', $s, $wrap );
+ }
+
+ // $out can be either an OutputPage object or a String-by-reference
+ if( $out instanceof OutputPage ){
+ $out->addHTML( $s );
} else {
- $out->addWikiMsg( 'logempty' );
+ $out = $s;
}
return $pager->getNumRows();
}
@@ -484,21 +729,22 @@ class LogEventsList {
* @ingroup Pager
*/
class LogPager extends ReverseChronologicalPager {
- private $type = '', $user = '', $title = '', $pattern = '';
+ private $types = array(), $user = '', $title = '', $pattern = '';
+ private $typeCGI = '';
public $mLogEventsList;
/**
* constructor
* @param $list LogEventsList
- * @param $type String
- * @param $user String
- * @param $title String
- * @param $pattern String
- * @param $conds Array
- * @param $year Integer
- * @param $month Integer
+ * @param $types String or Array log types to show
+ * @param $user String The user who made the log entries
+ * @param $title String The page title the log entries are for
+ * @param $pattern String Do a prefix search rather than an exact title match
+ * @param $conds Array Extra conditions for the query
+ * @param $year Integer The year to start from
+ * @param $month Integer The month to start from
*/
- public function __construct( $list, $type = '', $user = '', $title = '', $pattern = '',
+ public function __construct( $list, $types = array(), $user = '', $title = '', $pattern = '',
$conds = array(), $year = false, $month = false, $tagFilter = '' )
{
parent::__construct();
@@ -506,7 +752,7 @@ class LogPager extends ReverseChronologicalPager {
$this->mLogEventsList = $list;
- $this->limitType( $type ); // also excludes hidden types
+ $this->limitType( $types ); // also excludes hidden types
$this->limitUser( $user );
$this->limitTitle( $title, $pattern );
$this->getDateCond( $year, $month );
@@ -515,17 +761,18 @@ class LogPager extends ReverseChronologicalPager {
public function getDefaultQuery() {
$query = parent::getDefaultQuery();
- $query['type'] = $this->type;
+ $query['type'] = $this->typeCGI; // arrays won't work here
$query['user'] = $this->user;
$query['month'] = $this->mMonth;
$query['year'] = $this->mYear;
return $query;
}
+ // Call ONLY after calling $this->limitType() already!
public function getFilterParams() {
global $wgFilterLogTypes, $wgUser, $wgRequest;
$filters = array();
- if( $this->type ) {
+ if( count($this->types) ) {
return $filters;
}
foreach( $wgFilterLogTypes as $type => $default ) {
@@ -543,24 +790,33 @@ class LogPager extends ReverseChronologicalPager {
/**
* Set the log reader to return only entries of the given type.
* Type restrictions enforced here
- * @param $type String: A log type ('upload', 'delete', etc)
+ * @param $types String or array: Log types ('upload', 'delete', etc);
+ * empty string means no restriction
*/
- private function limitType( $type ) {
+ private function limitType( $types ) {
global $wgLogRestrictions, $wgUser;
+ // If $types is not an array, make it an array
+ $types = ($types === '') ? array() : (array)$types;
// Don't even show header for private logs; don't recognize it...
- if( isset($wgLogRestrictions[$type]) && !$wgUser->isAllowed($wgLogRestrictions[$type]) ) {
- $type = '';
+ foreach ( $types as $type ) {
+ if( isset( $wgLogRestrictions[$type] )
+ && !$wgUser->isAllowed($wgLogRestrictions[$type])
+ ) {
+ $types = array_diff( $types, array( $type ) );
+ }
}
- // Don't show private logs to unpriviledged users.
+ $this->types = $types;
+ // Don't show private logs to unprivileged users.
// Also, only show them upon specific request to avoid suprises.
- $audience = $type ? 'user' : 'public';
+ $audience = $types ? 'user' : 'public';
$hideLogs = LogEventsList::getExcludeClause( $this->mDb, $audience );
if( $hideLogs !== false ) {
$this->mConds[] = $hideLogs;
}
- if( $type ) {
- $this->type = $type;
- $this->mConds['log_type'] = $type;
+ if( count($types) ) {
+ $this->mConds['log_type'] = $types;
+ // Set typeCGI; used in url param for paging
+ if( count($types) == 1 ) $this->typeCGI = $types[0];
}
}
@@ -586,8 +842,11 @@ class LogPager extends ReverseChronologicalPager {
global $wgUser;
$this->mConds['log_user'] = $userid;
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
- $this->mConds[] = 'log_deleted & ' . LogPage::DELETED_USER . ' = 0';
+ if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
+ $this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::DELETED_USER) . ' = 0';
+ } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ $this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::SUPPRESSED_USER) .
+ ' != ' . LogPage::SUPPRESSED_USER;
}
$this->user = $usertitle->getText();
}
@@ -603,11 +862,13 @@ class LogPager extends ReverseChronologicalPager {
global $wgMiserMode, $wgUser;
$title = Title::newFromText( $page );
- if( strlen($page) == 0 || !$title instanceof Title )
+ if( strlen( $page ) == 0 || !$title instanceof Title )
return false;
$this->title = $title->getPrefixedText();
$ns = $title->getNamespace();
+ $db = $this->mDb;
+
# Using the (log_namespace, log_title, log_timestamp) index with a
# range scan (LIKE) on the first two parts, instead of simple equality,
# makes it unusable for sorting. Sorted retrieval using another index
@@ -620,43 +881,64 @@ class LogPager extends ReverseChronologicalPager {
# log entries for even the busiest pages, so it can be safely scanned
# in full to satisfy an impossible condition on user or similar.
if( $pattern && !$wgMiserMode ) {
- # use escapeLike to avoid expensive search patterns like 't%st%'
- $safetitle = $this->mDb->escapeLike( $title->getDBkey() );
$this->mConds['log_namespace'] = $ns;
- $this->mConds[] = "log_title LIKE '$safetitle%'";
+ $this->mConds[] = 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() );
$this->pattern = $pattern;
} else {
$this->mConds['log_namespace'] = $ns;
$this->mConds['log_title'] = $title->getDBkey();
}
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
- $this->mConds[] = 'log_deleted & ' . LogPage::DELETED_ACTION . ' = 0';
+ if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
+ $this->mConds[] = $db->bitAnd('log_deleted', LogPage::DELETED_ACTION) . ' = 0';
+ } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ $this->mConds[] = $db->bitAnd('log_deleted', LogPage::SUPPRESSED_ACTION) .
+ ' != ' . LogPage::SUPPRESSED_ACTION;
}
}
public function getQueryInfo() {
+ global $wgOut;
+ $tables = array( 'logging', 'user' );
$this->mConds[] = 'user_id = log_user';
- # Don't use the wrong logging index
- if( $this->title || $this->pattern || $this->user ) {
- $index = array( 'USE INDEX' => array( 'logging' => array('page_time','user_time') ) );
- } else if( $this->type ) {
- $index = array( 'USE INDEX' => array( 'logging' => 'type_time' ) );
+ $index = array();
+ $options = array();
+ # Add log_search table if there are conditions on it
+ if( array_key_exists('ls_field',$this->mConds) ) {
+ $tables[] = 'log_search';
+ $index['log_search'] = 'ls_field_val';
+ $index['logging'] = 'PRIMARY';
+ $options[] = 'DISTINCT';
+ # Avoid usage of the wrong index by limiting
+ # the choices of available indexes. This mainly
+ # avoids site-breaking filesorts.
+ } else if( $this->title || $this->pattern || $this->user ) {
+ $index['logging'] = array( 'page_time', 'user_time' );
+ if( count($this->types) == 1 ) {
+ $index['logging'][] = 'log_user_type_time';
+ }
+ } else if( count($this->types) == 1 ) {
+ $index['logging'] = 'type_time';
} else {
- $index = array( 'USE INDEX' => array( 'logging' => 'times' ) );
+ $index['logging'] = 'times';
}
+ $options['USE INDEX'] = $index;
+ # Don't show duplicate rows when using log_search
$info = array(
- 'tables' => array( 'logging', 'user' ),
- 'fields' => array( 'log_type', 'log_action', 'log_user', 'log_namespace', 'log_title', 'log_params',
- 'log_comment', 'log_id', 'log_deleted', 'log_timestamp', 'user_name', 'user_editcount' ),
- 'conds' => $this->mConds,
- 'options' => $index,
- 'join_conds' => array( 'user' => array( 'INNER JOIN', 'user_id=log_user' ) ),
+ 'tables' => $tables,
+ 'fields' => array( 'log_type', 'log_action', 'log_user', 'log_namespace',
+ 'log_title', 'log_params', 'log_comment', 'log_id', 'log_deleted',
+ 'log_timestamp', 'user_name', 'user_editcount' ),
+ 'conds' => $this->mConds,
+ 'options' => $options,
+ 'join_conds' => array(
+ 'user' => array( 'INNER JOIN', 'user_id=log_user' ),
+ 'log_search' => array( 'INNER JOIN', 'ls_log_id=log_id' )
+ )
);
-
+ # Add ChangeTags filter query
ChangeTags::modifyDisplayQuery( $info['tables'], $info['fields'], $info['conds'],
$info['join_conds'], $info['options'], $this->mTagFilter );
-
return $info;
}
@@ -686,7 +968,7 @@ class LogPager extends ReverseChronologicalPager {
}
public function getType() {
- return $this->type;
+ return $this->types;
}
public function getUser() {
@@ -712,6 +994,13 @@ class LogPager extends ReverseChronologicalPager {
public function getTagFilter() {
return $this->mTagFilter;
}
+
+ public function doQuery() {
+ // Workaround MySQL optimizer bug
+ $this->mDb->setBigSelects();
+ parent::doQuery();
+ $this->mDb->setBigSelects( 'default' );
+ }
}
/**
@@ -772,7 +1061,6 @@ class LogViewer {
* LogEventsList::NO_ACTION_LINK Don't show restore/unblock/block links
*/
function __construct( &$reader, $flags = 0 ) {
- global $wgUser;
wfDeprecated(__METHOD__);
$this->reader =& $reader;
$this->reader->pager->mLogEventsList->flags = $flags;
diff --git a/includes/LogPage.php b/includes/LogPage.php
index 0d572385..1d8d6c1c 100644
--- a/includes/LogPage.php
+++ b/includes/LogPage.php
@@ -33,7 +33,10 @@ class LogPage {
const DELETED_ACTION = 1;
const DELETED_COMMENT = 2;
const DELETED_USER = 4;
- const DELETED_RESTRICTED = 8;
+ const DELETED_RESTRICTED = 8;
+ // Convenience fields
+ const SUPPRESSED_USER = 12;
+ const SUPPRESSED_ACTION = 9;
/* @access private */
var $type, $action, $comment, $params, $target, $doer;
/* @acess public */
@@ -57,7 +60,7 @@ class LogPage {
global $wgLogRestrictions;
$dbw = wfGetDB( DB_MASTER );
- $log_id = $dbw->nextSequenceValue( 'log_log_id_seq' );
+ $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
$this->timestamp = $now = wfTimestampNow();
$data = array(
@@ -66,8 +69,10 @@ class LogPage {
'log_action' => $this->action,
'log_timestamp' => $dbw->timestamp( $now ),
'log_user' => $this->doer->getId(),
+ 'log_user_text' => $this->doer->getName(),
'log_namespace' => $this->target->getNamespace(),
'log_title' => $this->target->getDBkey(),
+ 'log_page' => $this->target->getArticleId(),
'log_comment' => $this->comment,
'log_params' => $this->params
);
@@ -91,7 +96,7 @@ class LogPage {
$this->type, $this->action, $this->target, $this->comment, $this->params, $newId );
$rc->notifyRC2UDP();
}
- return true;
+ return $newId;
}
/**
@@ -99,7 +104,7 @@ class LogPage {
*/
public function getRcComment() {
$rcComment = $this->actionText;
- if( '' != $this->comment ) {
+ if( $this->comment != '' ) {
if ($rcComment == '')
$rcComment = $this->comment;
else
@@ -132,6 +137,7 @@ class LogPage {
/**
* @static
+ * @param string $type logtype
*/
public static function logName( $type ) {
global $wgLogNames, $wgMessageCache;
@@ -160,7 +166,7 @@ class LogPage {
* @static
* @return HTML string
*/
- public static function actionText( $type, $action, $title = NULL, $skin = NULL,
+ public static function actionText( $type, $action, $title = null, $skin = null,
$params = array(), $filterWikilinks = false )
{
global $wgLang, $wgContLang, $wgLogActions, $wgMessageCache;
@@ -173,7 +179,7 @@ class LogPage {
}
if( isset( $wgLogActions[$key] ) ) {
if( is_null( $title ) ) {
- $rv = wfMsg( $wgLogActions[$key] );
+ $rv = wfMsgHtml( $wgLogActions[$key] );
} else {
$titleLink = self::getTitleLink( $type, $skin, $title, $params );
if( $key == 'rights/rights' ) {
@@ -194,13 +200,14 @@ class LogPage {
}
if( count( $params ) == 0 ) {
if ( $skin ) {
- $rv = wfMsg( $wgLogActions[$key], $titleLink );
+ $rv = wfMsgHtml( $wgLogActions[$key], $titleLink );
} else {
- $rv = wfMsgForContent( $wgLogActions[$key], $titleLink );
+ $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'content' ), $titleLink );
}
} else {
$details = '';
array_unshift( $params, $titleLink );
+ // User suppression
if ( preg_match( '/^(block|suppress)\/(block|reblock)$/', $key ) ) {
if ( $skin ) {
$params[1] = '<span title="' . htmlspecialchars( $params[1] ). '">' .
@@ -210,8 +217,15 @@ class LogPage {
}
$params[2] = isset( $params[2] ) ?
self::formatBlockFlags( $params[2], is_null( $skin ) ) : '';
+ // Page protections
} else if ( $type == 'protect' && count($params) == 3 ) {
- $details .= " {$params[1]}"; // restrictions and expiries
+ // Restrictions and expiries
+ if( $skin ) {
+ $details .= htmlspecialchars( " {$params[1]}" );
+ } else {
+ $details .= " {$params[1]}";
+ }
+ // Cascading flag...
if( $params[2] ) {
if ( $skin ) {
$details .= ' ['.wfMsg('protect-summary-cascade').']';
@@ -219,6 +233,7 @@ class LogPage {
$details .= ' ['.wfMsgForContent('protect-summary-cascade').']';
}
}
+ // Page moves
} else if ( $type == 'move' && count( $params ) == 3 ) {
if( $params[2] ) {
if ( $skin ) {
@@ -227,8 +242,24 @@ class LogPage {
$details .= ' [' . wfMsgForContent( 'move-redirect-suppressed' ) . ']';
}
}
+ // Revision deletion
+ } else if ( preg_match( '/^(delete|suppress)\/revision$/', $key ) && count( $params ) == 5 ) {
+ $count = substr_count( $params[2], ',' ) + 1; // revisions
+ $ofield = intval( substr( $params[3], 7 ) ); // <ofield=x>
+ $nfield = intval( substr( $params[4], 7 ) ); // <nfield=x>
+ $details .= ': '.RevisionDeleter::getLogMessage( $count, $nfield, $ofield, false );
+ // Log deletion
+ } else if ( preg_match( '/^(delete|suppress)\/event$/', $key ) && count( $params ) == 4 ) {
+ $count = substr_count( $params[1], ',' ) + 1; // log items
+ $ofield = intval( substr( $params[2], 7 ) ); // <ofield=x>
+ $nfield = intval( substr( $params[3], 7 ) ); // <nfield=x>
+ $details .= ': '.RevisionDeleter::getLogMessage( $count, $nfield, $ofield, true );
+ }
+ if ( $skin ) {
+ $rv = wfMsgHtml( $wgLogActions[$key], $params ) . $details;
+ } else {
+ $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'content' ), $params ) . $details;
}
- $rv = wfMsgReal( $wgLogActions[$key], $params, true, !$skin ) . $details;
}
}
} else {
@@ -260,20 +291,27 @@ class LogPage {
}
protected static function getTitleLink( $type, $skin, $title, &$params ) {
- global $wgLang, $wgContLang;
+ global $wgLang, $wgContLang, $wgUserrightsInterwikiDelimiter;
if( !$skin ) {
return $title->getPrefixedText();
}
switch( $type ) {
case 'move':
- $titleLink = $skin->makeLinkObj( $title,
- htmlspecialchars( $title->getPrefixedText() ), 'redirect=no' );
+ $titleLink = $skin->link(
+ $title,
+ htmlspecialchars( $title->getPrefixedText() ),
+ array(),
+ array( 'redirect' => 'no' )
+ );
$targetTitle = Title::newFromText( $params[0] );
if ( !$targetTitle ) {
# Workaround for broken database
$params[0] = htmlspecialchars( $params[0] );
} else {
- $params[0] = $skin->makeLinkObj( $targetTitle, htmlspecialchars( $params[0] ) );
+ $params[0] = $skin->link(
+ $targetTitle,
+ htmlspecialchars( $params[0] )
+ );
}
break;
case 'block':
@@ -289,24 +327,39 @@ class LogPage {
break;
case 'rights':
$text = $wgContLang->ucfirst( $title->getText() );
- $titleLink = $skin->makeLinkObj( Title::makeTitle( NS_USER, $text ) );
+ $parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
+ if ( count( $parts ) == 2 ) {
+ $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
+ htmlspecialchars( $title->getPrefixedText() ) );
+ if ( $titleLink !== false )
+ break;
+ }
+ $titleLink = $skin->link( Title::makeTitle( NS_USER, $text ) );
break;
case 'merge':
- $titleLink = $skin->makeLinkObj( $title, $title->getPrefixedText(), 'redirect=no' );
- $params[0] = $skin->makeLinkObj( Title::newFromText( $params[0] ), htmlspecialchars( $params[0] ) );
+ $titleLink = $skin->link(
+ $title,
+ $title->getPrefixedText(),
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $params[0] = $skin->link(
+ Title::newFromText( $params[0] ),
+ htmlspecialchars( $params[0] )
+ );
$params[1] = $wgLang->timeanddate( $params[1] );
break;
default:
if( $title->getNamespace() == NS_SPECIAL ) {
- list( $name, $par ) = SpecialPage::resolveAliasWithSubpage( $title->getDBKey() );
+ list( $name, $par ) = SpecialPage::resolveAliasWithSubpage( $title->getDBkey() );
# Use the language name for log titles, rather than Log/X
if( $name == 'Log' ) {
- $titleLink = '('.$skin->makeLinkObj( $title, LogPage::logName( $par ) ).')';
+ $titleLink = '('.$skin->link( $title, LogPage::logName( $par ) ).')';
} else {
- $titleLink = $skin->makeLinkObj( $title );
+ $titleLink = $skin->link( $title );
}
} else {
- $titleLink = $skin->makeLinkObj( $title );
+ $titleLink = $skin->link( $title );
}
}
return $titleLink;
@@ -325,6 +378,8 @@ class LogPage {
$params = array( $params );
}
+ if ( $comment === null ) $comment = "";
+
$this->action = $action;
$this->target = $target;
$this->comment = $comment;
@@ -339,10 +394,26 @@ class LogPage {
$this->doer = $doer;
- $this->actionText = LogPage::actionText( $this->type, $action, $target, NULL, $params );
+ $this->actionText = LogPage::actionText( $this->type, $action, $target, null, $params );
return $this->saveContent();
}
+
+ /**
+ * Add relations to log_search table
+ * @static
+ */
+ public function addRelations( $field, $values, $logid ) {
+ if( !strlen($field) || empty($values) )
+ return false; // nothing
+ $data = array();
+ foreach( $values as $value ) {
+ $data[] = array('ls_field' => $field,'ls_value' => $value,'ls_log_id' => $logid);
+ }
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->insert( 'log_search', $data, __METHOD__, 'IGNORE' );
+ return true;
+ }
/**
* Create a blob from a parameter array
diff --git a/includes/MagicWord.php b/includes/MagicWord.php
index 4e97016d..d741832f 100644
--- a/includes/MagicWord.php
+++ b/includes/MagicWord.php
@@ -36,6 +36,7 @@ class MagicWord {
static public $mVariableIDsInitialised = false;
static public $mVariableIDs = array(
'currentmonth',
+ 'currentmonth1',
'currentmonthname',
'currentmonthnamegen',
'currentmonthabbrev',
@@ -46,6 +47,7 @@ class MagicWord {
'currenttime',
'currenthour',
'localmonth',
+ 'localmonth1',
'localmonthname',
'localmonthnamegen',
'localmonthabbrev',
@@ -62,6 +64,7 @@ class MagicWord {
'server',
'servername',
'scriptpath',
+ 'stylepath',
'pagename',
'pagenamee',
'fullpagename',
@@ -81,7 +84,6 @@ class MagicWord {
'revisionuser',
'subpagename',
'subpagenamee',
- 'displaytitle',
'talkspace',
'talkspacee',
'subjectspace',
@@ -92,31 +94,22 @@ class MagicWord {
'subjectpagenamee',
'numberofusers',
'numberofactiveusers',
- 'newsectionlink',
- 'nonewsectionlink',
'numberofpages',
'currentversion',
'basepagename',
'basepagenamee',
- 'urlencode',
'currenttimestamp',
'localtimestamp',
'directionmark',
- 'language',
'contentlanguage',
- 'pagesinnamespace',
'numberofadmins',
'numberofviews',
- 'defaultsort',
- 'pagesincategory',
- 'index',
- 'noindex',
- 'numberingroup',
);
/* Array of caching hints for ParserCache */
static public $mCacheTTLs = array (
'currentmonth' => 86400,
+ 'currentmonth1' => 86400,
'currentmonthname' => 86400,
'currentmonthnamegen' => 86400,
'currentmonthabbrev' => 86400,
@@ -127,6 +120,7 @@ class MagicWord {
'currenttime' => 3600,
'currenthour' => 3600,
'localmonth' => 86400,
+ 'localmonth1' => 86400,
'localmonthname' => 86400,
'localmonthnamegen' => 86400,
'localmonthabbrev' => 86400,
@@ -167,8 +161,14 @@ class MagicWord {
'index',
'noindex',
'staticredirect',
+ 'notitleconvert',
+ 'nocontentconvert',
);
+ static public $mSubstIDs = array(
+ 'subst',
+ 'safesubst',
+ );
static public $mObjects = array();
static public $mDoubleUnderscoreArray = null;
@@ -192,7 +192,7 @@ class MagicWord {
*/
static function &get( $id ) {
wfProfileIn( __METHOD__ );
- if (!array_key_exists( $id, self::$mObjects ) ) {
+ if ( !isset( self::$mObjects[$id] ) ) {
$mw = new MagicWord();
$mw->load( $id );
self::$mObjects[$id] = $mw;
@@ -220,6 +220,13 @@ class MagicWord {
return self::$mVariableIDs;
}
+ /**
+ * Get an array of parser substitution modifier IDs
+ */
+ static function getSubstIDs() {
+ return self::$mSubstIDs;
+ }
+
/* Allow external reads of TTL array */
static function getCacheTTL($id) {
if (array_key_exists($id,self::$mCacheTTLs)) {
@@ -237,6 +244,14 @@ class MagicWord {
return self::$mDoubleUnderscoreArray;
}
+ /**
+ * Clear the self::$mObjects variable
+ * For use in parser tests
+ */
+ public static function clearCache() {
+ self::$mObjects = array();
+ }
+
# Initialises this object with an ID
function load( $id ) {
global $wgContLang;
@@ -320,7 +335,7 @@ class MagicWord {
* @return bool
*/
function match( $text ) {
- return preg_match( $this->getRegex(), $text );
+ return (bool)preg_match( $this->getRegex(), $text );
}
/**
@@ -328,7 +343,7 @@ class MagicWord {
* @return bool
*/
function matchStart( $text ) {
- return preg_match( $this->getRegexStart(), $text );
+ return (bool)preg_match( $this->getRegexStart(), $text );
}
/**
@@ -341,7 +356,7 @@ class MagicWord {
$matches = array();
$matchcount = preg_match( $this->getVariableStartToEndRegex(), $text, $matches );
if ( $matchcount == 0 ) {
- return NULL;
+ return null;
} else {
# multiple matched parts (variable match); some will be empty because of
# synonyms. The variable will be the second non-empty one so remove any
@@ -555,7 +570,7 @@ class MagicWordArray {
}
/**
- * Get an unanchored regex
+ * Get an unanchored regex that does not match parameters
*/
function getRegex() {
if ( is_null( $this->regex ) ) {
@@ -572,14 +587,29 @@ class MagicWordArray {
}
/**
- * Get a regex for matching variables
+ * Get a regex for matching variables with parameters
*/
function getVariableRegex() {
return str_replace( "\\$1", "(.*?)", $this->getRegex() );
}
/**
- * Get an anchored regex for matching variables
+ * Get a regex anchored to the start of the string that does not match parameters
+ */
+ function getRegexStart() {
+ $base = $this->getBaseRegex();
+ $newRegex = array( '', '' );
+ if ( $base[0] !== '' ) {
+ $newRegex[0] = "/^(?:{$base[0]})/iuS";
+ }
+ if ( $base[1] !== '' ) {
+ $newRegex[1] = "/^(?:{$base[1]})/S";
+ }
+ return $newRegex;
+ }
+
+ /**
+ * Get an anchored regex for matching variables with parameters
*/
function getVariableStartToEndRegex() {
$base = $this->getBaseRegex();
@@ -676,4 +706,29 @@ class MagicWordArray {
}
return $found;
}
+
+ /**
+ * Return the ID of the magic word at the start of $text, and remove
+ * the prefix from $text.
+ * Return false if no match found and $text is not modified.
+ * Does not match parameters.
+ */
+ public function matchStartAndRemove( &$text ) {
+ $regexes = $this->getRegexStart();
+ foreach ( $regexes as $regex ) {
+ if ( $regex === '' ) {
+ continue;
+ }
+ if ( preg_match( $regex, $text, $m ) ) {
+ list( $id, $param ) = $this->parseMatch( $m );
+ if ( strlen( $m[0] ) >= strlen( $text ) ) {
+ $text = '';
+ } else {
+ $text = substr( $text, strlen( $m[0] ) );
+ }
+ return $id;
+ }
+ }
+ return false;
+ }
}
diff --git a/includes/Math.php b/includes/Math.php
index 2ed16033..8cf9b8d8 100644
--- a/includes/Math.php
+++ b/includes/Math.php
@@ -33,8 +33,7 @@ class MathRenderer {
function render() {
global $wgTmpDirectory, $wgInputEncoding;
- global $wgTexvc;
- $fname = 'MathRenderer::render';
+ global $wgTexvc, $wgMathCheckFiles, $wgTexvcBackgroundColor;
if( $this->mode == MW_MATH_SOURCE ) {
# No need to render or parse anything more!
@@ -45,13 +44,15 @@ class MathRenderer {
}
if( !$this->_recall() ) {
- # Ensure that the temp and output directories are available before continuing...
- if( !file_exists( $wgTmpDirectory ) ) {
- if( !wfMkdirParents( $wgTmpDirectory ) ) {
+ if( $wgMathCheckFiles ) {
+ # Ensure that the temp and output directories are available before continuing...
+ if( !file_exists( $wgTmpDirectory ) ) {
+ if( !wfMkdirParents( $wgTmpDirectory ) ) {
+ return $this->_error( 'math_bad_tmpdir' );
+ }
+ } elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) {
return $this->_error( 'math_bad_tmpdir' );
}
- } elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) {
- return $this->_error( 'math_bad_tmpdir' );
}
if( function_exists( 'is_executable' ) && !is_executable( $wgTexvc ) ) {
@@ -61,7 +62,8 @@ class MathRenderer {
escapeshellarg( $wgTmpDirectory ).' '.
escapeshellarg( $wgTmpDirectory ).' '.
escapeshellarg( $this->tex ).' '.
- escapeshellarg( $wgInputEncoding );
+ escapeshellarg( $wgInputEncoding ).' '.
+ escapeshellarg( $wgTexvcBackgroundColor );
if ( wfIsWindows() ) {
# Invoke it within cygwin sh, because texvc expects sh features in its default shell
@@ -101,14 +103,14 @@ class MathRenderer {
} else {
$this->conservativeness = 0;
}
- $this->mathml = NULL;
+ $this->mathml = null;
} else if ($retval == 'X') {
- $this->html = NULL;
+ $this->html = null;
$this->mathml = substr ($contents, 33);
$this->conservativeness = 0;
} else if ($retval == '+') {
- $this->html = NULL;
- $this->mathml = NULL;
+ $this->html = null;
+ $this->mathml = null;
$this->conservativeness = 0;
} else {
$errbit = htmlspecialchars( substr($contents, 1) );
@@ -176,7 +178,7 @@ class MathRenderer {
'math_html_conservativeness' => $this->conservativeness,
'math_html' => $this->html,
'math_mathml' => $this->mathml,
- ), $fname
+ ), __METHOD__
);
}
@@ -200,15 +202,14 @@ class MathRenderer {
}
function _recall() {
- global $wgMathDirectory;
- $fname = 'MathRenderer::_recall';
+ global $wgMathDirectory, $wgMathCheckFiles;
$this->md5 = md5( $this->tex );
$dbr = wfGetDB( DB_SLAVE );
$rpage = $dbr->selectRow( 'math',
array( 'math_outputhash','math_html_conservativeness','math_html','math_mathml' ),
array( 'math_inputhash' => $dbr->encodeBlob(pack("H32", $this->md5))), # Binary packed, not hex
- $fname
+ __METHOD__
);
if( $rpage !== false ) {
@@ -221,6 +222,12 @@ class MathRenderer {
$this->mathml = $rpage->math_mathml;
$filename = $this->_getHashPath() . "/{$this->hash}.png";
+
+ if( !$wgMathCheckFiles ) {
+ // Short-circuit the file existence & migration checks
+ return true;
+ }
+
if( file_exists( $filename ) ) {
if( filesize( $filename ) == 0 ) {
// Some horrible error corrupted stuff :(
diff --git a/includes/MediaTransformOutput.php b/includes/MediaTransformOutput.php
index 0367494f..a3fcc96e 100644
--- a/includes/MediaTransformOutput.php
+++ b/includes/MediaTransformOutput.php
@@ -80,20 +80,19 @@ abstract class MediaTransformOutput {
}
}
- function getDescLinkAttribs( $alt = false, $params = '' ) {
+ function getDescLinkAttribs( $title = null, $params = '' ) {
$query = $this->page ? ( 'page=' . urlencode( $this->page ) ) : '';
if( $params ) {
$query .= $query ? '&'.$params : $params;
}
- $title = $this->file->getTitle();
- if ( strval( $alt ) === '' ) {
- $alt = $title->getText();
- }
- return array(
+ $attribs = array(
'href' => $this->file->getTitle()->getLocalURL( $query ),
'class' => 'image',
- 'title' => $alt
);
+ if ( $title ) {
+ $attribs['title'] = $title;
+ }
+ return $attribs;
}
}
@@ -151,18 +150,22 @@ class ThumbnailImage extends MediaTransformOutput {
}
$alt = empty( $options['alt'] ) ? '' : $options['alt'];
- # Note: if title is empty and alt is not, make the title empty, don't
- # use alt; only use alt if title is not set
- $title = !isset( $options['title'] ) ? $alt : $options['title'];
- $query = empty($options['desc-query']) ? '' : $options['desc-query'];
+
+ $query = empty( $options['desc-query'] ) ? '' : $options['desc-query'];
if ( !empty( $options['custom-url-link'] ) ) {
$linkAttribs = array( 'href' => $options['custom-url-link'] );
+ if ( !empty( $options['title'] ) ) {
+ $linkAttribs['title'] = $options['title'];
+ }
} elseif ( !empty( $options['custom-title-link'] ) ) {
$title = $options['custom-title-link'];
- $linkAttribs = array( 'href' => $title->getLinkUrl(), 'title' => $title->getFullText() );
+ $linkAttribs = array(
+ 'href' => $title->getLinkUrl(),
+ 'title' => empty( $options['title'] ) ? $title->getFullText() : $options['title']
+ );
} elseif ( !empty( $options['desc-link'] ) ) {
- $linkAttribs = $this->getDescLinkAttribs( $title, $query );
+ $linkAttribs = $this->getDescLinkAttribs( empty( $options['title'] ) ? null : $options['title'], $query );
} elseif ( !empty( $options['file-link'] ) ) {
$linkAttribs = array( 'href' => $this->file->getURL() );
} else {
@@ -174,7 +177,6 @@ class ThumbnailImage extends MediaTransformOutput {
'src' => $this->url,
'width' => $this->width,
'height' => $this->height,
- 'border' => 0,
);
if ( !empty( $options['valign'] ) ) {
$attribs['style'] = "vertical-align: {$options['valign']}";
diff --git a/includes/MessageCache.php b/includes/MessageCache.php
index 2236bdd7..2c53430f 100644
--- a/includes/MessageCache.php
+++ b/includes/MessageCache.php
@@ -23,9 +23,6 @@ class MessageCache {
var $mUseCache, $mDisable, $mExpiry;
var $mKeys, $mParserOptions, $mParser;
- var $mExtensionMessages = array();
- var $mInitialised = false;
- var $mAllMessagesLoaded = array(); // Extension messages
// Variable for tracking which variables are loaded
var $mLoadedLanguages = array();
@@ -37,7 +34,6 @@ class MessageCache {
$this->mExpiry = $expiry;
$this->mDisableTransform = false;
$this->mKeys = false; # initialised on demand
- $this->mInitialised = true;
$this->mParser = null;
}
@@ -62,9 +58,9 @@ class MessageCache {
* @return false on failure.
*/
function loadFromLocal( $hash, $code ) {
- global $wgLocalMessageCache, $wgLocalMessageCacheSerialized;
+ global $wgCacheDirectory, $wgLocalMessageCacheSerialized;
- $filename = "$wgLocalMessageCache/messages-" . wfWikiID() . "-$code";
+ $filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
# Check file existence
wfSuppressWarnings();
@@ -106,10 +102,10 @@ class MessageCache {
* Save the cache to a local file.
*/
function saveToLocal( $serialized, $hash, $code ) {
- global $wgLocalMessageCache;
+ global $wgCacheDirectory;
- $filename = "$wgLocalMessageCache/messages-" . wfWikiID() . "-$code";
- wfMkdirParents( $wgLocalMessageCache ); // might fail
+ $filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
+ wfMkdirParents( $wgCacheDirectory ); // might fail
wfSuppressWarnings();
$file = fopen( $filename, 'w' );
@@ -126,11 +122,11 @@ class MessageCache {
}
function saveToScript( $array, $hash, $code ) {
- global $wgLocalMessageCache;
+ global $wgCacheDirectory;
- $filename = "$wgLocalMessageCache/messages-" . wfWikiID() . "-$code";
+ $filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
$tempFilename = $filename . '.tmp';
- wfMkdirParents( $wgLocalMessageCache ); // might fail
+ wfMkdirParents( $wgCacheDirectory ); // might fail
wfSuppressWarnings();
$file = fopen( $tempFilename, 'w');
@@ -174,7 +170,7 @@ class MessageCache {
/**
* Loads messages from caches or from database in this order:
- * (1) local message cache (if $wgLocalMessageCache is enabled)
+ * (1) local message cache (if $wgUseLocalMessageCache is enabled)
* (2) memcached
* (3) from the database.
*
@@ -191,7 +187,7 @@ class MessageCache {
* @param $code String: language to which load messages
*/
function load( $code = false ) {
- global $wgLocalMessageCache;
+ global $wgUseLocalMessageCache;
if ( !$this->mUseCache ) {
return true;
@@ -227,7 +223,7 @@ class MessageCache {
# (1) local cache
# Hash of the contents is stored in memcache, to detect if local cache goes
# out of date (due to update in other thread?)
- if ( $wgLocalMessageCache !== false ) {
+ if ( $wgUseLocalMessageCache ) {
wfProfileIn( __METHOD__ . '-fromlocal' );
$hash = $this->mMemc->get( wfMemcKey( 'messages', $code, 'hash' ) );
@@ -260,7 +256,7 @@ class MessageCache {
$this->lock($cacheKey);
- # Limit the concurrency of loadFromDB to a single process
+ # Limit the concurrency of loadFromDB to a single process
# This prevents the site from going down when the cache expires
$statusKey = wfMemcKey( 'messages', $code, 'status' );
$success = $this->mMemc->add( $statusKey, 'loading', MSG_LOAD_TIMEOUT );
@@ -322,12 +318,11 @@ class MessageCache {
# database or in code.
if ( $code !== $wgContLanguageCode ) {
# Messages for particular language
- $escapedCode = $dbr->escapeLike( $code );
- $conds[] = "page_title like '%%/$escapedCode'";
+ $conds[] = 'page_title' . $dbr->buildLike( $dbr->anyString(), "/$code" );
} else {
# Effectively disallows use of '/' character in NS_MEDIAWIKI for uses
# other than language code.
- $conds[] = "page_title not like '%%/%%'";
+ $conds[] = 'page_title NOT' . $dbr->buildLike( $dbr->anyString(), '/', $dbr->anyString() );
}
}
@@ -350,7 +345,7 @@ class MessageCache {
$res = $dbr->select( array( 'page', 'revision', 'text' ),
array( 'page_title', 'old_text', 'old_flags' ),
- $smallConds, __METHOD__ );
+ $smallConds, __METHOD__. "($code)" );
for ( $row = $dbr->fetchObject( $res ); $row; $row = $dbr->fetchObject( $res ) ) {
$cache[$row->page_title] = ' ' . Revision::getRevisionText( $row );
@@ -404,8 +399,19 @@ class MessageCache {
// Also delete cached sidebar... just in case it is affected
global $parserMemc;
- $sidebarKey = wfMemcKey( 'sidebar', $code );
- $parserMemc->delete( $sidebarKey );
+ $codes = array( $code );
+ if ( $code === 'en' ) {
+ // Delete all sidebars, like for example on action=purge on the
+ // sidebar messages
+ $codes = array_keys( Language::getLanguageNames() );
+ }
+
+ foreach ( $codes as $code ) {
+ $sidebarKey = wfMemcKey( 'sidebar', $code );
+ $parserMemc->delete( $sidebarKey );
+ }
+
+ wfRunHooks( "MessageCacheReplace", array( $title, $text ) );
wfProfileOut( __METHOD__ );
}
@@ -421,24 +427,18 @@ class MessageCache {
*/
protected function saveToCaches( $cache, $memc = true, $code = false ) {
wfProfileIn( __METHOD__ );
- global $wgLocalMessageCache, $wgLocalMessageCacheSerialized;
+ global $wgUseLocalMessageCache, $wgLocalMessageCacheSerialized;
$cacheKey = wfMemcKey( 'messages', $code );
- $i = 0;
if ( $memc ) {
- # Save in memcached
- # Keep trying if it fails, this is kind of important
-
- for ($i=0; $i<20 &&
- !$this->mMemc->set( $cacheKey, $cache, $this->mExpiry );
- $i++ ) {
- usleep(mt_rand(500000,1500000));
- }
+ $success = $this->mMemc->set( $cacheKey, $cache, $this->mExpiry );
+ } else {
+ $success = true;
}
# Save to local cache
- if ( $wgLocalMessageCache !== false ) {
+ if ( $wgUseLocalMessageCache ) {
$serialized = serialize( $cache );
$hash = md5( $serialized );
$this->mMemc->set( wfMemcKey( 'messages', $code, 'hash' ), $hash, $this->mExpiry );
@@ -449,11 +449,6 @@ class MessageCache {
}
}
- if ( $i == 20 ) {
- $success = false;
- } else {
- $success = true;
- }
wfProfileOut( __METHOD__ );
return $success;
}
@@ -498,42 +493,40 @@ class MessageCache {
* functionality), or if it is a true boolean then
* use the wikis content language (also as a
* fallback).
- * @param bool $isFullKey Specifies whether $key is a two part key "lang/msg".
+ * @param bool $isFullKey Specifies whether $key is a two part key "msg/lang".
*/
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
global $wgContLanguageCode, $wgContLang;
+ if ( strval( $key ) === '' ) {
+ # Shortcut: the empty key is always missing
+ return '&lt;&gt;';
+ }
+
$lang = wfGetLangObj( $langcode );
$langcode = $lang->getCode();
- # If uninitialised, someone is trying to call this halfway through Setup.php
- if( !$this->mInitialised ) {
- return '&lt;' . htmlspecialchars($key) . '&gt;';
- }
-
$message = false;
- # Normalise title-case input
- $lckey = $wgContLang->lcfirst( $key );
- $lckey = str_replace( ' ', '_', $lckey );
+ # Normalise title-case input (with some inlining)
+ $lckey = str_replace( ' ', '_', $key );
+ if ( ord( $key ) < 128 ) {
+ $lckey[0] = strtolower( $lckey[0] );
+ $uckey = ucfirst( $lckey );
+ } else {
+ $lckey = $wgContLang->lcfirst( $lckey );
+ $uckey = $wgContLang->ucfirst( $lckey );
+ }
# Try the MediaWiki namespace
if( !$this->mDisable && $useDB ) {
- $title = $wgContLang->ucfirst( $lckey );
- if(!$isFullKey && ($langcode != $wgContLanguageCode) ) {
+ $title = $uckey;
+ if(!$isFullKey && ( $langcode != $wgContLanguageCode ) ) {
$title .= '/' . $langcode;
}
$message = $this->getMsgFromNamespace( $title, $langcode );
}
- # Try the extension array
- if ( $message === false && isset( $this->mExtensionMessages[$langcode][$lckey] ) ) {
- $message = $this->mExtensionMessages[$langcode][$lckey];
- }
- if ( $message === false && isset( $this->mExtensionMessages['en'][$lckey] ) ) {
- $message = $this->mExtensionMessages['en'][$lckey];
- }
-
# Try the array in the language object
if ( $message === false ) {
$message = $lang->getMessage( $lckey );
@@ -543,19 +536,15 @@ class MessageCache {
}
# Try the array of another language
- $pos = strrpos( $lckey, '/' );
- if( $message === false && $pos !== false) {
- $mkey = substr( $lckey, 0, $pos );
- $code = substr( $lckey, $pos+1 );
- if ( $code ) {
- # We may get calls for things that are http-urls from sidebar
- # Let's not load nonexistent languages for those
- $validCodes = array_keys( Language::getLanguageNames() );
- if ( in_array( $code, $validCodes ) ) {
- $message = Language::getMessageFor( $mkey, $code );
- if ( is_null( $message ) ) {
- $message = false;
- }
+ if( $message === false ) {
+ $parts = explode( '/', $lckey );
+ # We may get calls for things that are http-urls from sidebar
+ # Let's not load nonexistent languages for those
+ # They usually have more than one slash.
+ if ( count( $parts ) == 2 && $parts[1] !== '' ) {
+ $message = Language::getMessageFor( $parts[0], $parts[1] );
+ if ( is_null( $message ) ) {
+ $message = false;
}
}
}
@@ -564,13 +553,23 @@ class MessageCache {
if( ($message === false || $message === '-' ) &&
!$this->mDisable && $useDB &&
!$isFullKey && ($langcode != $wgContLanguageCode) ) {
- $message = $this->getMsgFromNamespace( $wgContLang->ucfirst( $lckey ), $wgContLanguageCode );
+ $message = $this->getMsgFromNamespace( $uckey, $wgContLanguageCode );
}
# Final fallback
if( $message === false ) {
return '&lt;' . htmlspecialchars($key) . '&gt;';
}
+
+ # Fix whitespace
+ $message = strtr( $message,
+ array(
+ # Fix for trailing whitespace, removed by textarea
+ '&#32;' => ' ',
+ # Fix for NBSP, converted to space by firefox
+ '&nbsp;' => "\xc2\xa0",
+ ) );
+
return $message;
}
@@ -636,7 +635,7 @@ class MessageCache {
$message = $revision->getText();
if ($this->mUseCache) {
$this->mCache[$code][$title] = ' ' . $message;
- $this->mMemc->set( $titleKey, $message, $this->mExpiry );
+ $this->mMemc->set( $titleKey, ' ' . $message, $this->mExpiry );
}
} else {
# Negative caching
@@ -648,7 +647,7 @@ class MessageCache {
}
function transform( $message, $interface = false, $language = null ) {
- // Avoid creating parser if nothing to transfrom
+ // Avoid creating parser if nothing to transform
if( strpos( $message, '{{' ) === false ) {
return $message;
}
@@ -678,7 +677,7 @@ class MessageCache {
function disable() { $this->mDisable = true; }
function enable() { $this->mDisable = false; }
-
+
/** @deprecated */
function disableTransform(){
wfDeprecated( __METHOD__ );
@@ -695,160 +694,76 @@ class MessageCache {
}
/**
+ * Clear all stored messages. Mainly used after a mass rebuild.
+ */
+ function clear() {
+ if( $this->mUseCache ) {
+ $langs = Language::getLanguageNames( false );
+ foreach ( array_keys($langs) as $code ) {
+ # Global cache
+ $this->mMemc->delete( wfMemcKey( 'messages', $code ) );
+ # Invalidate all local caches
+ $this->mMemc->delete( wfMemcKey( 'messages', $code, 'hash' ) );
+ }
+ }
+ }
+
+ /**
* Add a message to the cache
+ * @deprecated Use $wgExtensionMessagesFiles
*
* @param mixed $key
* @param mixed $value
* @param string $lang The messages language, English by default
*/
function addMessage( $key, $value, $lang = 'en' ) {
- global $wgContLang;
- # Normalise title-case input
- $lckey = str_replace( ' ', '_', $wgContLang->lcfirst( $key ) );
- $this->mExtensionMessages[$lang][$lckey] = $value;
+ wfDeprecated( __METHOD__ );
+ $lc = Language::getLocalisationCache();
+ $lc->addLegacyMessages( array( $lang => array( $key => $value ) ) );
}
/**
* Add an associative array of message to the cache
+ * @deprecated Use $wgExtensionMessagesFiles
*
* @param array $messages An associative array of key => values to be added
* @param string $lang The messages language, English by default
*/
function addMessages( $messages, $lang = 'en' ) {
- wfProfileIn( __METHOD__ );
- if ( !is_array( $messages ) ) {
- throw new MWException( __METHOD__.': Invalid message array' );
- }
- if ( isset( $this->mExtensionMessages[$lang] ) ) {
- $this->mExtensionMessages[$lang] = $messages + $this->mExtensionMessages[$lang];
- } else {
- $this->mExtensionMessages[$lang] = $messages;
- }
- wfProfileOut( __METHOD__ );
+ wfDeprecated( __METHOD__ );
+ $lc = Language::getLocalisationCache();
+ $lc->addLegacyMessages( array( $lang => $messages ) );
}
/**
* Add a 2-D array of messages by lang. Useful for extensions.
+ * @deprecated Use $wgExtensionMessagesFiles
*
* @param array $messages The array to be added
*/
function addMessagesByLang( $messages ) {
- wfProfileIn( __METHOD__ );
- foreach ( $messages as $key => $value ) {
- $this->addMessages( $value, $key );
- }
- wfProfileOut( __METHOD__ );
+ wfDeprecated( __METHOD__ );
+ $lc = Language::getLocalisationCache();
+ $lc->addLegacyMessages( $messages );
}
/**
- * Get the extension messages for a specific language. Only English, interface
- * and content language are guaranteed to be loaded.
- *
- * @param string $lang The messages language, English by default
+ * Set a hook for addMessagesByLang()
*/
- function getExtensionMessagesFor( $lang = 'en' ) {
- wfProfileIn( __METHOD__ );
- $messages = array();
- if ( isset( $this->mExtensionMessages[$lang] ) ) {
- $messages = $this->mExtensionMessages[$lang];
- }
- if ( $lang != 'en' ) {
- $messages = $messages + $this->mExtensionMessages['en'];
- }
- wfProfileOut( __METHOD__ );
- return $messages;
+ function setExtensionMessagesHook( $callback ) {
+ $this->mAddMessagesHook = $callback;
}
/**
- * Clear all stored messages. Mainly used after a mass rebuild.
+ * @deprecated
*/
- function clear() {
- if( $this->mUseCache ) {
- $langs = Language::getLanguageNames( false );
- foreach ( array_keys($langs) as $code ) {
- # Global cache
- $this->mMemc->delete( wfMemcKey( 'messages', $code ) );
- # Invalidate all local caches
- $this->mMemc->delete( wfMemcKey( 'messages', $code, 'hash' ) );
- }
- }
- }
-
function loadAllMessages( $lang = false ) {
- global $wgExtensionMessagesFiles;
- $key = $lang === false ? '*' : $lang;
- if ( isset( $this->mAllMessagesLoaded[$key] ) ) {
- return;
- }
- $this->mAllMessagesLoaded[$key] = true;
-
- # Some extensions will load their messages when you load their class file
- wfLoadAllExtensions();
- # Others will respond to this hook
- wfRunHooks( 'LoadAllMessages' );
- # Some register their messages in $wgExtensionMessagesFiles
- foreach ( $wgExtensionMessagesFiles as $name => $file ) {
- wfLoadExtensionMessages( $name, $lang );
- }
- # Still others will respond to neither, they are EVIL. We sometimes need to know!
}
/**
- * Load messages from a given file
- *
- * @param string $filename Filename of file to load.
- * @param string $langcode Language to load messages for, or false for
- * default behvaiour (en, content language and user
- * language).
+ * @deprecated
*/
function loadMessagesFile( $filename, $langcode = false ) {
- global $wgLang, $wgContLang;
- wfProfileIn( __METHOD__ );
- $messages = $magicWords = false;
- require( $filename );
-
- $validCodes = Language::getLanguageNames();
- if( is_string( $langcode ) && array_key_exists( $langcode, $validCodes ) ) {
- # Load messages for given language code.
- $this->processMessagesArray( $messages, $langcode );
- } elseif( is_string( $langcode ) && !array_key_exists( $langcode, $validCodes ) ) {
- wfDebug( "Invalid language '$langcode' code passed to MessageCache::loadMessagesFile()" );
- } else {
- # Load only languages that are usually used, and merge all
- # fallbacks, except English.
- $langs = array_unique( array( 'en', $wgContLang->getCode(), $wgLang->getCode() ) );
- foreach( $langs as $code ) {
- $this->processMessagesArray( $messages, $code );
- }
- }
-
- if ( $magicWords !== false ) {
- global $wgContLang;
- $wgContLang->addMagicWordsByLang( $magicWords );
- }
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Process an array of messages, loading it into the message cache.
- *
- * @param array $messages Messages array.
- * @param string $langcode Language code to process.
- */
- function processMessagesArray( $messages, $langcode ) {
- wfProfileIn( __METHOD__ );
- $fallbackCode = $langcode;
- $mergedMessages = array();
- do {
- if ( isset($messages[$fallbackCode]) ) {
- $mergedMessages += $messages[$fallbackCode];
- }
- $fallbackCode = Language::getFallbackfor( $fallbackCode );
- } while( $fallbackCode && $fallbackCode !== 'en' );
-
- if ( !empty($mergedMessages) )
- $this->addMessages( $mergedMessages, $langcode );
- wfProfileOut( __METHOD__ );
}
public function figureMessage( $key ) {
diff --git a/includes/MimeMagic.php b/includes/MimeMagic.php
index d52de994..39c82c9d 100644
--- a/includes/MimeMagic.php
+++ b/includes/MimeMagic.php
@@ -118,19 +118,19 @@ class MimeMagic {
* Mapping of media types to arrays of mime types.
* This is used by findMediaType and getMediaType, respectively
*/
- var $mMediaTypes= NULL;
+ var $mMediaTypes= null;
/** Map of mime type aliases
*/
- var $mMimeTypeAliases= NULL;
+ var $mMimeTypeAliases= null;
/** map of mime types to file extensions (as a space seprarated list)
*/
- var $mMimeToExt= NULL;
+ var $mMimeToExt= null;
/** map of file extensions types to mime types (as a space seprarated list)
*/
- var $mExtToMime= NULL;
+ var $mExtToMime= null;
/** IEContentAnalyzer instance
*/
@@ -328,7 +328,7 @@ class MimeMagic {
*/
function guessTypesForExtension( $ext ) {
$m = $this->getTypesForExtension( $ext );
- if ( is_null( $m ) ) return NULL;
+ if ( is_null( $m ) ) return null;
$m = trim( $m );
$m = preg_replace( '/\s.*$/', '', $m );
@@ -345,7 +345,7 @@ class MimeMagic {
$ext = $this->getExtensionsForType( $mime );
if ( !$ext ) {
- return NULL; //unknown
+ return null; //unknown
}
$ext = explode( ' ', $ext );
@@ -469,16 +469,18 @@ class MimeMagic {
}
/*
- * look for PHP
- * Check for this before HTML/XML...
- * Warning: this is a heuristic, and won't match a file with a lot of non-PHP before.
- * It will also match text files which could be PHP. :)
+ * Look for PHP. Check for this before HTML/XML... Warning: this is a
+ * heuristic, and won't match a file with a lot of non-PHP before. It
+ * will also match text files which could be PHP. :)
+ *
+ * FIXME: For this reason, the check is probably useless -- an attacker
+ * could almost certainly just pad the file with a lot of nonsense to
+ * circumvent the check in any case where it would be a security
+ * problem. On the other hand, it causes harmful false positives (bug
+ * 16583). The heuristic has been cut down to exclude three-character
+ * strings like "<? ", but should it be axed completely?
*/
if( ( strpos( $head, '<?php' ) !== false ) ||
- ( strpos( $head, '<? ' ) !== false ) ||
- ( strpos( $head, "<?\n" ) !== false ) ||
- ( strpos( $head, "<?\t" ) !== false ) ||
- ( strpos( $head, "<?=" ) !== false ) ||
( strpos( $head, "<\x00?\x00p\x00h\x00p" ) !== false ) ||
( strpos( $head, "<\x00?\x00 " ) !== false ) ||
@@ -506,7 +508,7 @@ class MimeMagic {
/*
* look for shell scripts
*/
- $script_type = NULL;
+ $script_type = null;
# detect by shebang
if ( substr( $head, 0, 2) == "#!" ) {
@@ -629,7 +631,7 @@ class MimeMagic {
function detectMimeType( $file, $ext = true ) {
global $wgMimeDetectorCommand;
- $m = NULL;
+ $m = null;
if ( $wgMimeDetectorCommand ) {
$fn = wfEscapeShellArg( $file );
$m = `$wgMimeDetectorCommand $fn`;
@@ -676,7 +678,7 @@ class MimeMagic {
$m = strtolower( $m );
if ( strpos( $m, 'unknown' ) !== false ) {
- $m = NULL;
+ $m = null;
} else {
wfDebug( __METHOD__.": magic mime type of $file: $m\n" );
return $m;
@@ -721,7 +723,7 @@ class MimeMagic {
*
* @return (int?string?) a value to be used with the MEDIATYPE_xxx constants.
*/
- function getMediaType( $path = NULL, $mime = NULL ) {
+ function getMediaType( $path = null, $mime = null ) {
if( !$mime && !$path ) return MEDIATYPE_UNKNOWN;
# If mime type is unknown, guess it
@@ -754,7 +756,7 @@ class MimeMagic {
}
# Check for entry for file extension
- $e = NULL;
+ $e = null;
if ( $path ) {
$i = strrpos( $path, '.' );
$e = strtolower( $i ? substr( $path, $i + 1 ) : '' );
diff --git a/includes/Namespace.php b/includes/Namespace.php
index 3d618e64..e8e7523f 100644
--- a/includes/Namespace.php
+++ b/includes/Namespace.php
@@ -28,7 +28,7 @@ $wgCanonicalNamespaceNames = array(
NS_CATEGORY_TALK => 'Category_talk',
);
-if( is_array( $wgExtraNamespaces ) ) {
+if( isset( $wgExtraNamespaces ) && is_array( $wgExtraNamespaces ) ) {
$wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces;
}
@@ -46,6 +46,13 @@ if( is_array( $wgExtraNamespaces ) ) {
class MWNamespace {
/**
+ * These namespaces should always be first-letter capitalized, now and
+ * forevermore. Historically, they could've probably been lowercased too,
+ * but some things are just too ingrained now. :)
+ */
+ private static $alwaysCapitalizedNamespaces = array( NS_SPECIAL, NS_USER, NS_MEDIAWIKI );
+
+ /**
* Can pages in the given namespace be moved?
*
* @param $index Int: namespace index
@@ -102,6 +109,15 @@ class MWNamespace {
}
/**
+ * Returns whether the specified namespace exists
+ */
+ public static function exists( $index ) {
+ global $wgCanonicalNamespaceNames;
+ return isset( $wgCanonicalNamespaceNames[$index] );
+ }
+
+
+ /**
* Returns the canonical (English Wikipedia) name for a given index
*
* @param $index Int: namespace index
@@ -135,7 +151,7 @@ class MWNamespace {
if ( array_key_exists( $name, $xNamespaces ) ) {
return $xNamespaces[$name];
} else {
- return NULL;
+ return null;
}
}
@@ -146,7 +162,7 @@ class MWNamespace {
* @return bool
*/
public static function canTalk( $index ) {
- return $index >= NS_MAIN;
+ return $index >= NS_MAIN;
}
/**
@@ -182,4 +198,29 @@ class MWNamespace {
return !empty( $wgNamespacesWithSubpages[$index] );
}
+ /**
+ * Is the namespace first-letter capitalized?
+ *
+ * @param $index int Index to check
+ * @return bool
+ */
+ public static function isCapitalized( $index ) {
+ global $wgCapitalLinks, $wgCapitalLinkOverrides;
+ // Turn NS_MEDIA into NS_FILE
+ $index = $index === NS_MEDIA ? NS_FILE : $index;
+
+ // Make sure to get the subject of our namespace
+ $index = self::getSubject( $index );
+
+ // Some namespaces are special and should always be upper case
+ if ( in_array( $index, self::$alwaysCapitalizedNamespaces ) ) {
+ return true;
+ }
+ if ( isset( $wgCapitalLinkOverrides[ $index ] ) ) {
+ // $wgCapitalLinkOverrides is explicitly set
+ return $wgCapitalLinkOverrides[ $index ];
+ }
+ // Default to the global setting
+ return $wgCapitalLinks;
+ }
}
diff --git a/includes/ObjectCache.php b/includes/ObjectCache.php
index 6cfb2340..f83e0020 100644
--- a/includes/ObjectCache.php
+++ b/includes/ObjectCache.php
@@ -34,7 +34,7 @@ $wgCaches = array();
/**
* Get a cache object.
- * @param int $inputType cache type, one the the CACHE_* constants.
+ * @param $inputType Integer: cache type, one the the CACHE_* constants.
*/
function &wfGetCache( $inputType ) {
global $wgCaches, $wgMemCachedServers, $wgMemCachedDebug, $wgMemCachedPersistent;
@@ -52,13 +52,6 @@ function &wfGetCache( $inputType ) {
if ( $type == CACHE_MEMCACHED ) {
if ( !array_key_exists( CACHE_MEMCACHED, $wgCaches ) ) {
- if ( !class_exists( 'MemcachedClientforWiki' ) ) {
- class MemCachedClientforWiki extends memcached {
- function _debugprint( $text ) {
- wfDebug( "memcached: $text" );
- }
- }
- }
$wgCaches[CACHE_MEMCACHED] = new MemCachedClientforWiki(
array('persistant' => $wgMemCachedPersistent, 'compress_threshold' => 1500 ) );
$wgCaches[CACHE_MEMCACHED]->set_servers( $wgMemCachedServers );
@@ -73,8 +66,6 @@ function &wfGetCache( $inputType ) {
$wgCaches[CACHE_ACCEL] = new APCBagOStuff;
} elseif( function_exists( 'xcache_get' ) ) {
$wgCaches[CACHE_ACCEL] = new XCacheBagOStuff();
- } elseif ( function_exists( 'mmcache_get' ) ) {
- $wgCaches[CACHE_ACCEL] = new TurckBagOStuff;
} else {
$wgCaches[CACHE_ACCEL] = false;
}
@@ -91,7 +82,7 @@ function &wfGetCache( $inputType ) {
if ( $type == CACHE_DB || ( $inputType == CACHE_ANYTHING && $cache === false ) ) {
if ( !array_key_exists( CACHE_DB, $wgCaches ) ) {
- $wgCaches[CACHE_DB] = new MediaWikiBagOStuff('objectcache');
+ $wgCaches[CACHE_DB] = new SqlBagOStuff('objectcache');
}
$cache =& $wgCaches[CACHE_DB];
}
diff --git a/includes/OutputHandler.php b/includes/OutputHandler.php
index 1f4798b7..91819cc7 100644
--- a/includes/OutputHandler.php
+++ b/includes/OutputHandler.php
@@ -5,8 +5,8 @@
*/
function wfOutputHandler( $s ) {
global $wgDisableOutputCompression, $wgValidateAllHtml;
- $s = wfMangleFlashPolicy( $s );
- if ( $wgValidateAllHtml ) {
+ $s = wfMangleFlashPolicy( $s );
+ if ( $wgValidateAllHtml ) {
$headers = apache_response_headers();
$isHTML = true;
foreach ( $headers as $name => $value ) {
@@ -37,7 +37,7 @@ function wfOutputHandler( $s ) {
* @private
*/
function wfRequestExtension() {
- /// @fixme -- this sort of dupes some code in WebRequest::getRequestUrl()
+ /// @todo Fixme: this sort of dupes some code in WebRequest::getRequestUrl()
if( isset( $_SERVER['REQUEST_URI'] ) ) {
// Strip the query string...
list( $path ) = explode( '?', $_SERVER['REQUEST_URI'], 2 );
@@ -74,12 +74,9 @@ function wfGzipHandler( $s ) {
return $s;
}
- if( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) ) {
- $tokens = preg_split( '/[,; ]/', $_SERVER['HTTP_ACCEPT_ENCODING'] );
- if ( in_array( 'gzip', $tokens ) ) {
- header( 'Content-Encoding: gzip' );
- $s = gzencode( $s, 3 );
- }
+ if( wfClientAcceptsGzip() ) {
+ header( 'Content-Encoding: gzip' );
+ $s = gzencode( $s, 6 );
}
// Set vary header if it hasn't been set already
@@ -93,7 +90,10 @@ function wfGzipHandler( $s ) {
}
if ( !$foundVary ) {
header( 'Vary: Accept-Encoding' );
- header( 'X-Vary-Options: Accept-Encoding;list-contains=gzip' );
+ global $wgUseXVO;
+ if ( $wgUseXVO ) {
+ header( 'X-Vary-Options: Accept-Encoding;list-contains=gzip' );
+ }
}
return $s;
}
@@ -133,7 +133,7 @@ function wfHtmlValidationHandler( $s ) {
$out = <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr">
<head>
<title>HTML validation error</title>
<style>
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index 046a01a8..4333383c 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -9,22 +9,25 @@ class OutputPage {
var $mMetatags = array(), $mKeywords = array(), $mLinktags = array();
var $mExtStyles = array();
var $mPagetitle = '', $mBodytext = '', $mDebugtext = '';
- var $mHTMLtitle = '', $mIsarticle = true, $mPrintable = false;
+ var $mHTMLtitle = '', $mHTMLtitleFromPagetitle = true, $mIsarticle = true, $mPrintable = false;
var $mSubtitle = '', $mRedirect = '', $mStatusCode;
var $mLastModified = '', $mETag = false;
- var $mCategoryLinks = array(), $mLanguageLinks = array();
+ var $mCategoryLinks = array(), $mCategories = array(), $mLanguageLinks = array();
+
var $mScripts = '', $mLinkColours, $mPageLinkTitle = '', $mHeadItems = array();
+ var $mInlineMsg = array();
+
var $mTemplateIds = array();
var $mAllowUserJs;
var $mSuppressQuickbar = false;
- var $mOnloadHandler = '';
var $mDoNothing = false;
var $mContainsOldMagic = 0, $mContainsNewMagic = 0;
var $mIsArticleRelated = true;
protected $mParserOptions = null; // lazy initialised, use parserOptions()
- var $mShowFeedLinks = false;
- var $mFeedLinksAppendQuery = false;
+
+ var $mFeedLinks = array();
+
var $mEnableClientCache = true;
var $mArticleBodyOnly = false;
@@ -35,6 +38,7 @@ class OutputPage {
var $mParseWarnings = array();
var $mSquidMaxage = 0;
var $mRevisionId = null;
+ protected $mTitle = null;
/**
* An array of stylesheet filenames (relative from skins path), with options
@@ -43,8 +47,16 @@ class OutputPage {
*/
var $styles = array();
+ /**
+ * Whether to load jQuery core.
+ */
+ protected $mJQueryDone = false;
+
private $mIndexPolicy = 'index';
private $mFollowPolicy = 'follow';
+ private $mVaryHeader = array( 'Accept-Encoding' => array('list-contains=gzip'),
+ 'Cookie' => null );
+
/**
* Constructor
@@ -55,12 +67,23 @@ class OutputPage {
$this->mAllowUserJs = $wgAllowUserJs;
}
+ /**
+ * Redirect to $url rather than displaying the normal page
+ *
+ * @param $url String: URL
+ * @param $responsecode String: HTTP status code
+ */
public function redirect( $url, $responsecode = '302' ) {
# Strip newlines as a paranoia check for header injection in PHP<5.1.2
$this->mRedirect = str_replace( "\n", '', $url );
$this->mRedirectCode = $responsecode;
}
+ /**
+ * Get the URL to redirect to, or an empty string if not redirect URL set
+ *
+ * @return String
+ */
public function getRedirect() {
return $this->mRedirect;
}
@@ -68,10 +91,13 @@ class OutputPage {
/**
* Set the HTTP status code to send with the output.
*
- * @param int $statusCode
+ * @param $statusCode Integer
* @return nothing
*/
- function setStatusCode( $statusCode ) { $this->mStatusCode = $statusCode; }
+ public function setStatusCode( $statusCode ) {
+ $this->mStatusCode = $statusCode;
+ }
+
/**
* Add a new <meta> tag
@@ -84,41 +110,113 @@ class OutputPage {
array_push( $this->mMetatags, array( $name, $val ) );
}
- function addKeyword( $text ) { array_push( $this->mKeywords, $text ); }
- function addScript( $script ) { $this->mScripts .= "\t\t".$script; }
-
- function addExtensionStyle( $url ) {
- $linkarr = array( 'rel' => 'stylesheet', 'href' => $url, 'type' => 'text/css' );
- array_push( $this->mExtStyles, $linkarr );
+ /**
+ * Add a keyword or a list of keywords in the page header
+ *
+ * @param $text String or array of strings
+ */
+ function addKeyword( $text ) {
+ if( is_array( $text ) ) {
+ $this->mKeywords = array_merge( $this->mKeywords, $text );
+ } else {
+ array_push( $this->mKeywords, $text );
+ }
+ }
+
+ /**
+ * Add a new \<link\> tag to the page header
+ *
+ * @param $linkarr Array: associative array of attributes.
+ */
+ function addLink( $linkarr ) {
+ array_push( $this->mLinktags, $linkarr );
+ }
+
+ /**
+ * Add a new \<link\> with "rel" attribute set to "meta"
+ *
+ * @param $linkarr Array: associative array mapping attribute names to their
+ * values, both keys and values will be escaped, and the
+ * "rel" attribute will be automatically added
+ */
+ function addMetadataLink( $linkarr ) {
+ # note: buggy CC software only reads first "meta" link
+ static $haveMeta = false;
+ $linkarr['rel'] = $haveMeta ? 'alternate meta' : 'meta';
+ $this->addLink( $linkarr );
+ $haveMeta = true;
+ }
+
+
+ /**
+ * Add raw HTML to the list of scripts (including \<script\> tag, etc.)
+ *
+ * @param $script String: raw HTML
+ */
+ function addScript( $script ) {
+ $this->mScripts .= $script . "\n";
+ }
+
+ /**
+ * Register and add a stylesheet from an extension directory.
+ *
+ * @param $url String path to sheet. Provide either a full url (beginning
+ * with 'http', etc) or a relative path from the document root
+ * (beginning with '/'). Otherwise it behaves identically to
+ * addStyle() and draws from the /skins folder.
+ */
+ public function addExtensionStyle( $url ) {
+ array_push( $this->mExtStyles, $url );
+ }
+
+ /**
+ * Get all links added by extensions
+ *
+ * @return Array
+ */
+ function getExtStyle() {
+ return $this->mExtStyles;
}
/**
* Add a JavaScript file out of skins/common, or a given relative path.
- * @param string $file filename in skins/common or complete on-server path (/foo/bar.js)
+ *
+ * @param $file String: filename in skins/common or complete on-server path
+ * (/foo/bar.js)
*/
- function addScriptFile( $file ) {
- global $wgStylePath, $wgStyleVersion, $wgJsMimeType;
- if( substr( $file, 0, 1 ) == '/' ) {
+ public function addScriptFile( $file ) {
+ global $wgStylePath, $wgStyleVersion;
+ if( substr( $file, 0, 1 ) == '/' || substr( $file, 0, 7 ) == 'http://' ) {
$path = $file;
} else {
$path = "{$wgStylePath}/common/{$file}";
}
- $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"$path?$wgStyleVersion\"></script>\n" );
+ $this->addScript( Html::linkedScript( wfAppendQuery( $path, $wgStyleVersion ) ) );
}
-
+
/**
* Add a self-contained script tag with the given contents
- * @param string $script JavaScript text, no <script> tags
+ *
+ * @param $script String: JavaScript text, no <script> tags
*/
- function addInlineScript( $script ) {
- global $wgJsMimeType;
- $this->mScripts .= "<script type=\"$wgJsMimeType\">/*<![CDATA[*/\n$script\n/*]]>*/</script>";
+ public function addInlineScript( $script ) {
+ $this->mScripts .= Html::inlineScript( "\n$script\n" ) . "\n";
}
+ /**
+ * Get all registered JS and CSS tags for the header.
+ *
+ * @return String
+ */
function getScript() {
return $this->mScripts . $this->getHeadItems();
}
+ /**
+ * Get all header items in a string
+ *
+ * @return String
+ */
function getHeadItems() {
$s = '';
foreach ( $this->mHeadItems as $item ) {
@@ -127,36 +225,56 @@ class OutputPage {
return $s;
}
- function addHeadItem( $name, $value ) {
+ /**
+ * Add or replace an header item to the output
+ *
+ * @param $name String: item name
+ * @param $value String: raw HTML
+ */
+ public function addHeadItem( $name, $value ) {
$this->mHeadItems[$name] = $value;
}
- function hasHeadItem( $name ) {
+ /**
+ * Check if the header item $name is already set
+ *
+ * @param $name String: item name
+ * @return Boolean
+ */
+ public function hasHeadItem( $name ) {
return isset( $this->mHeadItems[$name] );
}
- function setETag($tag) { $this->mETag = $tag; }
- function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; }
- function getArticleBodyOnly($only) { return $this->mArticleBodyOnly; }
-
- function addLink( $linkarr ) {
- # $linkarr should be an associative array of attributes. We'll escape on output.
- array_push( $this->mLinktags, $linkarr );
+ /**
+ * Set the value of the ETag HTTP header, only used if $wgUseETag is true
+ *
+ * @param $tag String: value of "ETag" header
+ */
+ function setETag( $tag ) {
+ $this->mETag = $tag;
}
-
- # Get all links added by extensions
- function getExtStyle() {
- return $this->mExtStyles;
+
+ /**
+ * Set whether the output should only contain the body of the article,
+ * without any skin, sidebar, etc.
+ * Used e.g. when calling with "action=render".
+ *
+ * @param $only Boolean: whether to output only the body of the article
+ */
+ public function setArticleBodyOnly( $only ) {
+ $this->mArticleBodyOnly = $only;
}
- function addMetadataLink( $linkarr ) {
- # note: buggy CC software only reads first "meta" link
- static $haveMeta = false;
- $linkarr['rel'] = ($haveMeta) ? 'alternate meta' : 'meta';
- $this->addLink( $linkarr );
- $haveMeta = true;
+ /**
+ * Return whether the output will contain only the body of the article
+ *
+ * @return Boolean
+ */
+ public function getArticleBodyOnly() {
+ return $this->mArticleBodyOnly;
}
+
/**
* checkLastModified tells the client to use the client-cached page if
* possible. If sucessful, the OutputPage is disabled so that
@@ -164,11 +282,11 @@ class OutputPage {
*
* Side effect: sets mLastModified for Last-Modified header
*
- * @return bool True iff cache-ok headers was sent.
+ * @return Boolean: true iff cache-ok headers was sent.
*/
- function checkLastModified( $timestamp ) {
+ public function checkLastModified( $timestamp ) {
global $wgCachePages, $wgCacheEpoch, $wgUser, $wgRequest;
-
+
if ( !$timestamp || $timestamp == '19700101000000' ) {
wfDebug( __METHOD__ . ": CACHE DISABLED, NO TIMESTAMP\n" );
return false;
@@ -221,9 +339,9 @@ class OutputPage {
}
$clientHeaderTime = wfTimestamp( TS_MW, $clientHeaderTime );
- wfDebug( __METHOD__ . ": client sent If-Modified-Since: " .
+ wfDebug( __METHOD__ . ": client sent If-Modified-Since: " .
wfTimestamp( TS_ISO_8601, $clientHeaderTime ) . "\n", false );
- wfDebug( __METHOD__ . ": effective Last-Modified: " .
+ wfDebug( __METHOD__ . ": effective Last-Modified: " .
wfTimestamp( TS_ISO_8601, $maxModified ) . "\n", false );
if( $clientHeaderTime < $maxModified ) {
wfDebug( __METHOD__ . ": STALE, $info\n", false );
@@ -231,7 +349,7 @@ class OutputPage {
}
# Not modified
- # Give a 304 response code and disable body output
+ # Give a 304 response code and disable body output
wfDebug( __METHOD__ . ": NOT MODIFIED, $info\n", false );
ini_set('zlib.output_compression', 0);
$wgRequest->response()->header( "HTTP/1.1 304 Not Modified" );
@@ -246,40 +364,23 @@ class OutputPage {
return true;
}
- function setPageTitleActionText( $text ) {
- $this->mPageTitleActionText = $text;
- }
-
- function getPageTitleActionText () {
- if ( isset( $this->mPageTitleActionText ) ) {
- return $this->mPageTitleActionText;
- }
- }
/**
* Set the robot policy for the page: <http://www.robotstxt.org/meta.html>
*
- * @param $policy string The literal string to output as the contents of
+ * @param $policy String: the literal string to output as the contents of
* the meta tag. Will be parsed according to the spec and output in
* standardized form.
* @return null
*/
public function setRobotPolicy( $policy ) {
- $policy = explode( ',', $policy );
- $policy = array_map( 'trim', $policy );
+ $policy = Article::formatRobotPolicy( $policy );
- # The default policy is follow, so if nothing is said explicitly, we
- # do that.
- if( in_array( 'nofollow', $policy ) ) {
- $this->mFollowPolicy = 'nofollow';
- } else {
- $this->mFollowPolicy = 'follow';
+ if( isset( $policy['index'] ) ){
+ $this->setIndexPolicy( $policy['index'] );
}
-
- if( in_array( 'noindex', $policy ) ) {
- $this->mIndexPolicy = 'noindex';
- } else {
- $this->mIndexPolicy = 'index';
+ if( isset( $policy['follow'] ) ){
+ $this->setFollowPolicy( $policy['follow'] );
}
}
@@ -301,7 +402,7 @@ class OutputPage {
* Set the follow policy for the page, but leave the index policy un-
* touched.
*
- * @param $policy string Either 'follow' or 'nofollow'.
+ * @param $policy String: either 'follow' or 'nofollow'.
* @return null
*/
public function setFollowPolicy( $policy ) {
@@ -311,43 +412,270 @@ class OutputPage {
}
}
- public function setHTMLTitle( $name ) { $this->mHTMLtitle = $name; }
+
+ /**
+ * Set the new value of the "action text", this will be added to the
+ * "HTML title", separated from it with " - ".
+ *
+ * @param $text String: new value of the "action text"
+ */
+ public function setPageTitleActionText( $text ) {
+ $this->mPageTitleActionText = $text;
+ }
+
+ /**
+ * Get the value of the "action text"
+ *
+ * @return String
+ */
+ public function getPageTitleActionText() {
+ if ( isset( $this->mPageTitleActionText ) ) {
+ return $this->mPageTitleActionText;
+ }
+ }
+
+ /**
+ * "HTML title" means the contents of <title>.
+ * It is stored as plain, unescaped text and will be run through htmlspecialchars in the skin file.
+ * If $name is from page title, it can only override names which are also from page title,
+ * but if it is not from page title, it can override all other names.
+ */
+ public function setHTMLTitle( $name, $frompagetitle = false ) {
+ if ( $frompagetitle && $this->mHTMLtitleFromPagetitle ) {
+ $this->mHTMLtitle = $name;
+ }
+ elseif ( $this->mHTMLtitleFromPagetitle ) {
+ $this->mHTMLtitle = $name;
+ $this->mHTMLtitleFromPagetitle = false;
+ }
+ }
+
+ /**
+ * Return the "HTML title", i.e. the content of the <title> tag.
+ *
+ * @return String
+ */
+ public function getHTMLTitle() {
+ return $this->mHTMLtitle;
+ }
+
+ /**
+ * "Page title" means the contents of \<h1\>. It is stored as a valid HTML fragment.
+ * This function allows good tags like \<sup\> in the \<h1\> tag, but not bad tags like \<script\>.
+ * This function automatically sets \<title\> to the same content as \<h1\> but with all tags removed.
+ * Bad tags that were escaped in \<h1\> will still be escaped in \<title\>, and good tags like \<i\> will be dropped entirely.
+ */
public function setPageTitle( $name ) {
- global $wgContLang;
- $name = $wgContLang->convert( $name, true );
- $this->mPagetitle = $name;
+ # change "<script>foo&bar</script>" to "&lt;script&gt;foo&amp;bar&lt;/script&gt;"
+ # but leave "<i>foobar</i>" alone
+ $nameWithTags = Sanitizer::normalizeCharReferences( Sanitizer::removeHTMLtags( $name ) );
+ $this->mPagetitle = $nameWithTags;
$taction = $this->getPageTitleActionText();
if( !empty( $taction ) ) {
$name .= ' - '.$taction;
}
- $this->setHTMLTitle( wfMsg( 'pagetitle', $name ) );
+ # change "<i>foo&amp;bar</i>" to "foo&bar"
+ $this->setHTMLTitle( wfMsg( 'pagetitle', Sanitizer::stripAllTags( $nameWithTags ) ) );
}
- public function getHTMLTitle() { return $this->mHTMLtitle; }
- public function getPageTitle() { return $this->mPagetitle; }
- public function setSubtitle( $str ) { $this->mSubtitle = /*$this->parse(*/$str/*)*/; } // @bug 2514
- public function appendSubtitle( $str ) { $this->mSubtitle .= /*$this->parse(*/$str/*)*/; } // @bug 2514
- public function getSubtitle() { return $this->mSubtitle; }
- public function isArticle() { return $this->mIsarticle; }
- public function setPrintable() { $this->mPrintable = true; }
- public function isPrintable() { return $this->mPrintable; }
- public function setSyndicated( $show = true ) { $this->mShowFeedLinks = $show; }
- public function isSyndicated() { return $this->mShowFeedLinks; }
- public function setFeedAppendQuery( $val ) { $this->mFeedLinksAppendQuery = $val; }
- public function getFeedAppendQuery() { return $this->mFeedLinksAppendQuery; }
- public function setOnloadHandler( $js ) { $this->mOnloadHandler = $js; }
- public function getOnloadHandler() { return $this->mOnloadHandler; }
- public function disable() { $this->mDoNothing = true; }
- public function isDisabled() { return $this->mDoNothing; }
+ /**
+ * Return the "page title", i.e. the content of the \<h1\> tag.
+ *
+ * @return String
+ */
+ public function getPageTitle() {
+ return $this->mPagetitle;
+ }
- public function setArticleRelated( $v ) {
- $this->mIsArticleRelated = $v;
- if ( !$v ) {
- $this->mIsarticle = false;
+ /**
+ * Set the Title object to use
+ *
+ * @param $t Title object
+ */
+ public function setTitle( $t ) {
+ $this->mTitle = $t;
+ }
+
+ /**
+ * Get the Title object used in this instance
+ *
+ * @return Title
+ */
+ public function getTitle() {
+ if ( $this->mTitle instanceof Title ) {
+ return $this->mTitle;
+ } else {
+ wfDebug( __METHOD__ . ' called and $mTitle is null. Return $wgTitle for sanity' );
+ global $wgTitle;
+ return $wgTitle;
+ }
+ }
+
+ /**
+ * Replace the subtile with $str
+ *
+ * @param $str String: new value of the subtitle
+ */
+ public function setSubtitle( $str ) {
+ $this->mSubtitle = /*$this->parse(*/ $str /*)*/; // @bug 2514
+ }
+
+ /**
+ * Add $str to the subtitle
+ *
+ * @param $str String to add to the subtitle
+ */
+ public function appendSubtitle( $str ) {
+ $this->mSubtitle .= /*$this->parse(*/ $str /*)*/; // @bug 2514
+ }
+
+ /**
+ * Get the subtitle
+ *
+ * @return String
+ */
+ public function getSubtitle() {
+ return $this->mSubtitle;
+ }
+
+
+ /**
+ * Set the page as printable, i.e. it'll be displayed with with all
+ * print styles included
+ */
+ public function setPrintable() {
+ $this->mPrintable = true;
+ }
+
+ /**
+ * Return whether the page is "printable"
+ *
+ * @return Boolean
+ */
+ public function isPrintable() {
+ return $this->mPrintable;
+ }
+
+
+ /**
+ * Disable output completely, i.e. calling output() will have no effect
+ */
+ public function disable() {
+ $this->mDoNothing = true;
+ }
+
+ /**
+ * Return whether the output will be completely disabled
+ *
+ * @return Boolean
+ */
+ public function isDisabled() {
+ return $this->mDoNothing;
+ }
+
+
+ /**
+ * Show an "add new section" link?
+ *
+ * @return Boolean
+ */
+ public function showNewSectionLink() {
+ return $this->mNewSectionLink;
+ }
+
+ /**
+ * Forcibly hide the new section link?
+ *
+ * @return Boolean
+ */
+ public function forceHideNewSectionLink() {
+ return $this->mHideNewSectionLink;
+ }
+
+
+ /**
+ * Add or remove feed links in the page header
+ * This is mainly kept for backward compatibility, see OutputPage::addFeedLink()
+ * for the new version
+ * @see addFeedLink()
+ *
+ * @param $show Boolean: true: add default feeds, false: remove all feeds
+ */
+ public function setSyndicated( $show = true ) {
+ if ( $show ) {
+ $this->setFeedAppendQuery( false );
+ } else {
+ $this->mFeedLinks = array();
}
}
+
+ /**
+ * Add default feeds to the page header
+ * This is mainly kept for backward compatibility, see OutputPage::addFeedLink()
+ * for the new version
+ * @see addFeedLink()
+ *
+ * @param $val String: query to append to feed links or false to output
+ * default links
+ */
+ public function setFeedAppendQuery( $val ) {
+ global $wgAdvertisedFeedTypes;
+
+ $this->mFeedLinks = array();
+
+ foreach ( $wgAdvertisedFeedTypes as $type ) {
+ $query = "feed=$type";
+ if ( is_string( $val ) ) {
+ $query .= '&' . $val;
+ }
+ $this->mFeedLinks[$type] = $this->getTitle()->getLocalURL( $query );
+ }
+ }
+
+ /**
+ * Add a feed link to the page header
+ *
+ * @param $format String: feed type, should be a key of $wgFeedClasses
+ * @param $href String: URL
+ */
+ public function addFeedLink( $format, $href ) {
+ $this->mFeedLinks[$format] = $href;
+ }
+
+ /**
+ * Should we output feed links for this page?
+ * @return Boolean
+ */
+ public function isSyndicated() {
+ return count( $this->mFeedLinks ) > 0;
+ }
+
+ /**
+ * Return URLs for each supported syndication format for this page.
+ * @return array associating format keys with URLs
+ */
+ public function getSyndicationLinks() {
+ return $this->mFeedLinks;
+ }
+
+ /**
+ * Will currently always return null
+ *
+ * @return null
+ */
+ public function getFeedAppendQuery() {
+ return $this->mFeedLinksAppendQuery;
+ }
+
+ /**
+ * Set whether the displayed content is related to the source of the
+ * corresponding article on the wiki
+ * Setting true will cause the change "article related" toggle to true
+ *
+ * @param $v Boolean
+ */
public function setArticleFlag( $v ) {
$this->mIsarticle = $v;
if ( $v ) {
@@ -355,22 +683,73 @@ class OutputPage {
}
}
- public function isArticleRelated() { return $this->mIsArticleRelated; }
+ /**
+ * Return whether the content displayed page is related to the source of
+ * the corresponding article on the wiki
+ *
+ * @return Boolean
+ */
+ public function isArticle() {
+ return $this->mIsarticle;
+ }
- public function getLanguageLinks() { return $this->mLanguageLinks; }
- public function addLanguageLinks($newLinkArray) {
+ /**
+ * Set whether this page is related an article on the wiki
+ * Setting false will cause the change of "article flag" toggle to false
+ *
+ * @param $v Boolean
+ */
+ public function setArticleRelated( $v ) {
+ $this->mIsArticleRelated = $v;
+ if ( !$v ) {
+ $this->mIsarticle = false;
+ }
+ }
+
+ /**
+ * Return whether this page is related an article on the wiki
+ *
+ * @return Boolean
+ */
+ public function isArticleRelated() {
+ return $this->mIsArticleRelated;
+ }
+
+
+ /**
+ * Add new language links
+ *
+ * @param $newLinkArray Associative array mapping language code to the page
+ * name
+ */
+ public function addLanguageLinks( $newLinkArray ) {
$this->mLanguageLinks += $newLinkArray;
}
- public function setLanguageLinks($newLinkArray) {
+
+ /**
+ * Reset the language links and add new language links
+ *
+ * @param $newLinkArray Associative array mapping language code to the page
+ * name
+ */
+ public function setLanguageLinks( $newLinkArray ) {
$this->mLanguageLinks = $newLinkArray;
}
- public function getCategoryLinks() {
- return $this->mCategoryLinks;
+ /**
+ * Get the list of language links
+ *
+ * @return Associative array mapping language code to the page name
+ */
+ public function getLanguageLinks() {
+ return $this->mLanguageLinks;
}
+
/**
* Add an array of categories, with names in the keys
+ *
+ * @param $categories Associative array mapping category name to its sort key
*/
public function addCategoryLinks( $categories ) {
global $wgUser, $wgContLang;
@@ -418,34 +797,139 @@ class OutputPage {
if ( array_key_exists( $category, $categories ) )
continue;
$text = $wgContLang->convertHtml( $title->getText() );
- $this->mCategoryLinks[$type][] = $sk->makeLinkObj( $title, $text );
+ $this->mCategories[] = $title->getText();
+ $this->mCategoryLinks[$type][] = $sk->link( $title, $text );
}
}
}
- public function setCategoryLinks($categories) {
+ /**
+ * Reset the category links (but not the category list) and add $categories
+ *
+ * @param $categories Associative array mapping category name to its sort key
+ */
+ public function setCategoryLinks( $categories ) {
$this->mCategoryLinks = array();
- $this->addCategoryLinks($categories);
+ $this->addCategoryLinks( $categories );
+ }
+
+ /**
+ * Get the list of category links, in a 2-D array with the following format:
+ * $arr[$type][] = $link, where $type is either "normal" or "hidden" (for
+ * hidden categories) and $link a HTML fragment with a link to the category
+ * page
+ *
+ * @return Array
+ */
+ public function getCategoryLinks() {
+ return $this->mCategoryLinks;
+ }
+
+ /**
+ * Get the list of category names this page belongs to
+ *
+ * @return Array of strings
+ */
+ public function getCategories() {
+ return $this->mCategories;
+ }
+
+
+ /**
+ * Suppress the quickbar from the output, only for skin supporting
+ * the quickbar
+ */
+ public function suppressQuickbar() {
+ $this->mSuppressQuickbar = true;
+ }
+
+ /**
+ * Return whether the quickbar should be suppressed from the output
+ *
+ * @return Boolean
+ */
+ public function isQuickbarSuppressed() {
+ return $this->mSuppressQuickbar;
+ }
+
+
+ /**
+ * Remove user JavaScript from scripts to load
+ */
+ public function disallowUserJs() {
+ $this->mAllowUserJs = false;
+ }
+
+ /**
+ * Return whether user JavaScript is allowed for this page
+ *
+ * @return Boolean
+ */
+ public function isUserJsAllowed() {
+ return $this->mAllowUserJs;
+ }
+
+
+ /**
+ * Prepend $text to the body HTML
+ *
+ * @param $text String: HTML
+ */
+ public function prependHTML( $text ) {
+ $this->mBodytext = $text . $this->mBodytext;
+ }
+
+ /**
+ * Append $text to the body HTML
+ *
+ * @param $text String: HTML
+ */
+ public function addHTML( $text ) {
+ $this->mBodytext .= $text;
+ }
+
+ /**
+ * Clear the body HTML
+ */
+ public function clearHTML() {
+ $this->mBodytext = '';
}
- public function suppressQuickbar() { $this->mSuppressQuickbar = true; }
- public function isQuickbarSuppressed() { return $this->mSuppressQuickbar; }
+ /**
+ * Get the body HTML
+ *
+ * @return String: HTML
+ */
+ public function getHTML() {
+ return $this->mBodytext;
+ }
- public function disallowUserJs() { $this->mAllowUserJs = false; }
- public function isUserJsAllowed() { return $this->mAllowUserJs; }
- public function prependHTML( $text ) { $this->mBodytext = $text . $this->mBodytext; }
- public function addHTML( $text ) { $this->mBodytext .= $text; }
- public function clearHTML() { $this->mBodytext = ''; }
- public function getHTML() { return $this->mBodytext; }
- public function debug( $text ) { $this->mDebugtext .= $text; }
+ /**
+ * Add $text to the debug output
+ *
+ * @param $text String: debug text
+ */
+ public function debug( $text ) {
+ $this->mDebugtext .= $text;
+ }
- /* @deprecated */
+
+ /**
+ * @deprecated use parserOptions() instead
+ */
public function setParserOptions( $options ) {
wfDeprecated( __METHOD__ );
return $this->parserOptions( $options );
}
+ /**
+ * Get/set the ParserOptions object to use for wikitext parsing
+ *
+ * @param $options either the ParserOption to use or null to only get the
+ * current ParserOption object
+ * @return current ParserOption object
+ */
public function parserOptions( $options = null ) {
if ( !$this->mParserOptions ) {
$this->mParserOptions = new ParserOptions;
@@ -456,40 +940,78 @@ class OutputPage {
/**
* Set the revision ID which will be seen by the wiki text parser
* for things such as embedded {{REVISIONID}} variable use.
- * @param mixed $revid an integer, or NULL
- * @return mixed previous value
+ *
+ * @param $revid Mixed: an positive integer, or null
+ * @return Mixed: previous value
*/
public function setRevisionId( $revid ) {
$val = is_null( $revid ) ? null : intval( $revid );
return wfSetVar( $this->mRevisionId, $val );
}
-
+
+ /**
+ * Get the current revision ID
+ *
+ * @return Integer
+ */
public function getRevisionId() {
return $this->mRevisionId;
}
/**
* Convert wikitext to HTML and add it to the buffer
- * Default assumes that the current page title will
- * be used.
+ * Default assumes that the current page title will be used.
*
- * @param string $text
- * @param bool $linestart
+ * @param $text String
+ * @param $linestart Boolean: is this the start of a line?
*/
public function addWikiText( $text, $linestart = true ) {
- global $wgTitle;
- $this->addWikiTextTitle($text, $wgTitle, $linestart);
+ $title = $this->getTitle(); // Work arround E_STRICT
+ $this->addWikiTextTitle( $text, $title, $linestart );
}
- public function addWikiTextWithTitle($text, &$title, $linestart = true) {
- $this->addWikiTextTitle($text, $title, $linestart);
+ /**
+ * Add wikitext with a custom Title object
+ *
+ * @param $text String: wikitext
+ * @param $title Title object
+ * @param $linestart Boolean: is this the start of a line?
+ */
+ public function addWikiTextWithTitle( $text, &$title, $linestart = true ) {
+ $this->addWikiTextTitle( $text, $title, $linestart );
}
- function addWikiTextTitleTidy($text, &$title, $linestart = true) {
+ /**
+ * Add wikitext with a custom Title object and
+ *
+ * @param $text String: wikitext
+ * @param $title Title object
+ * @param $linestart Boolean: is this the start of a line?
+ */
+ function addWikiTextTitleTidy( $text, &$title, $linestart = true ) {
$this->addWikiTextTitle( $text, $title, $linestart, true );
}
- public function addWikiTextTitle($text, &$title, $linestart, $tidy = false) {
+ /**
+ * Add wikitext with tidy enabled
+ *
+ * @param $text String: wikitext
+ * @param $linestart Boolean: is this the start of a line?
+ */
+ public function addWikiTextTidy( $text, $linestart = true ) {
+ $title = $this->getTitle();
+ $this->addWikiTextTitleTidy($text, $title, $linestart);
+ }
+
+ /**
+ * Add wikitext with a custom Title object
+ *
+ * @param $text String: wikitext
+ * @param $title Title object
+ * @param $linestart Boolean: is this the start of a line?
+ * @param $tidy Boolean: whether to use tidy
+ */
+ public function addWikiTextTitle( $text, &$title, $linestart, $tidy = false ) {
global $wgParser;
wfProfileIn( __METHOD__ );
@@ -510,35 +1032,60 @@ class OutputPage {
}
/**
- * @todo document
- * @param ParserOutput object &$parserOutput
+ * Add wikitext to the buffer, assuming that this is the primary text for a page view
+ * Saves the text into the parser cache if possible.
+ *
+ * @param $text String: wikitext
+ * @param $article Article object
+ * @param $cache Boolean
+ * @deprecated Use Article::outputWikitext
+ */
+ public function addPrimaryWikiText( $text, $article, $cache = true ) {
+ global $wgParser;
+
+ wfDeprecated( __METHOD__ );
+
+ $popts = $this->parserOptions();
+ $popts->setTidy(true);
+ $parserOutput = $wgParser->parse( $text, $article->mTitle,
+ $popts, true, true, $this->mRevisionId );
+ $popts->setTidy(false);
+ if ( $cache && $article && $parserOutput->getCacheTime() != -1 ) {
+ $parserCache = ParserCache::singleton();
+ $parserCache->save( $parserOutput, $article, $popts);
+ }
+
+ $this->addParserOutput( $parserOutput );
+ }
+
+ /**
+ * @deprecated use addWikiTextTidy()
+ */
+ public function addSecondaryWikiText( $text, $linestart = true ) {
+ wfDeprecated( __METHOD__ );
+ $this->addWikiTextTitleTidy($text, $this->getTitle(), $linestart);
+ }
+
+
+ /**
+ * Add a ParserOutput object, but without Html
+ *
+ * @param $parserOutput ParserOutput object
*/
public function addParserOutputNoText( &$parserOutput ) {
- global $wgTitle, $wgExemptFromUserRobotsControl, $wgContentNamespaces;
+ global $wgExemptFromUserRobotsControl, $wgContentNamespaces;
$this->mLanguageLinks += $parserOutput->getLanguageLinks();
$this->addCategoryLinks( $parserOutput->getCategories() );
$this->mNewSectionLink = $parserOutput->getNewSection();
$this->mHideNewSectionLink = $parserOutput->getHideNewSection();
- if( is_null( $wgExemptFromUserRobotsControl ) ) {
- $bannedNamespaces = $wgContentNamespaces;
- } else {
- $bannedNamespaces = $wgExemptFromUserRobotsControl;
- }
- if( !in_array( $wgTitle->getNamespace(), $bannedNamespaces ) ) {
- # FIXME (bug 14900): This overrides $wgArticleRobotPolicies, and it
- # shouldn't
- $this->setIndexPolicy( $parserOutput->getIndexPolicy() );
- }
-
- $this->addKeywords( $parserOutput );
$this->mParseWarnings = $parserOutput->getWarnings();
if ( $parserOutput->getCacheTime() == -1 ) {
$this->enableClientCache( false );
}
$this->mNoGallery = $parserOutput->getNoGallery();
- $this->mHeadItems = array_merge( $this->mHeadItems, (array)$parserOutput->mHeadItems );
+ $this->mHeadItems = array_merge( $this->mHeadItems, $parserOutput->getHeadItems() );
// Versioning...
foreach ( (array)$parserOutput->mTemplateIds as $ns => $dbks ) {
if ( isset( $this->mTemplateIds[$ns] ) ) {
@@ -548,10 +1095,10 @@ class OutputPage {
}
}
// Page title
- if( ( $dt = $parserOutput->getDisplayTitle() ) !== false )
- $this->setPageTitle( $dt );
- else if ( ( $title = $parserOutput->getTitleText() ) != '' )
+ $title = $parserOutput->getTitleText();
+ if ( $title != '' ) {
$this->setPageTitle( $title );
+ }
// Hooks registered in the object
global $wgParserOutputHooks;
@@ -566,65 +1113,22 @@ class OutputPage {
}
/**
- * @todo document
- * @param ParserOutput &$parserOutput
+ * Add a ParserOutput object
+ *
+ * @param $parserOutput ParserOutput
*/
function addParserOutput( &$parserOutput ) {
$this->addParserOutputNoText( $parserOutput );
- $text = $parserOutput->getText();
+ $text = $parserOutput->getText();
wfRunHooks( 'OutputPageBeforeHTML',array( &$this, &$text ) );
$this->addHTML( $text );
}
- /**
- * Add wikitext to the buffer, assuming that this is the primary text for a page view
- * Saves the text into the parser cache if possible.
- *
- * @param string $text
- * @param Article $article
- * @param bool $cache
- * @deprecated Use Article::outputWikitext
- */
- public function addPrimaryWikiText( $text, $article, $cache = true ) {
- global $wgParser, $wgUser;
-
- wfDeprecated( __METHOD__ );
-
- $popts = $this->parserOptions();
- $popts->setTidy(true);
- $parserOutput = $wgParser->parse( $text, $article->mTitle,
- $popts, true, true, $this->mRevisionId );
- $popts->setTidy(false);
- if ( $cache && $article && $parserOutput->getCacheTime() != -1 ) {
- $parserCache = ParserCache::singleton();
- $parserCache->save( $parserOutput, $article, $popts);
- }
-
- $this->addParserOutput( $parserOutput );
- }
-
- /**
- * @deprecated use addWikiTextTidy()
- */
- public function addSecondaryWikiText( $text, $linestart = true ) {
- global $wgTitle;
- wfDeprecated( __METHOD__ );
- $this->addWikiTextTitleTidy($text, $wgTitle, $linestart);
- }
-
- /**
- * Add wikitext with tidy enabled
- */
- public function addWikiTextTidy( $text, $linestart = true ) {
- global $wgTitle;
- $this->addWikiTextTitleTidy($text, $wgTitle, $linestart);
- }
-
/**
* Add the output of a QuickTemplate to the output buffer
*
- * @param QuickTemplate $template
+ * @param $template QuickTemplate
*/
public function addTemplate( &$template ) {
ob_start();
@@ -636,24 +1140,36 @@ class OutputPage {
/**
* Parse wikitext and return the HTML.
*
- * @param string $text
- * @param bool $linestart Is this the start of a line?
- * @param bool $interface ??
+ * @param $text String
+ * @param $linestart Boolean: is this the start of a line?
+ * @param $interface Boolean: use interface language ($wgLang instead of
+ * $wgContLang) while parsing language sensitive magic
+ * words like GRAMMAR and PLURAL
+ * @return String: HTML
*/
public function parse( $text, $linestart = true, $interface = false ) {
- global $wgParser, $wgTitle;
- if( is_null( $wgTitle ) ) {
- throw new MWException( 'Empty $wgTitle in ' . __METHOD__ );
+ global $wgParser;
+ if( is_null( $this->getTitle() ) ) {
+ throw new MWException( 'Empty $mTitle in ' . __METHOD__ );
}
$popts = $this->parserOptions();
if ( $interface) { $popts->setInterfaceMessage(true); }
- $parserOutput = $wgParser->parse( $text, $wgTitle, $popts,
+ $parserOutput = $wgParser->parse( $text, $this->getTitle(), $popts,
$linestart, true, $this->mRevisionId );
if ( $interface) { $popts->setInterfaceMessage(false); }
return $parserOutput->getText();
}
- /** Parse wikitext, strip paragraphs, and return the HTML. */
+ /**
+ * Parse wikitext, strip paragraphs, and return the HTML.
+ *
+ * @param $text String
+ * @param $linestart Boolean: is this the start of a line?
+ * @param $interface Boolean: use interface language ($wgLang instead of
+ * $wgContLang) while parsing language sensitive magic
+ * words like GRAMMAR and PLURAL
+ * @return String: HTML
+ */
public function parseInline( $text, $linestart = true, $interface = false ) {
$parsed = $this->parse( $text, $linestart, $interface );
@@ -666,15 +1182,16 @@ class OutputPage {
}
/**
- * @param Article $article
- * @param User $user
+ * @deprecated
*
- * @return bool True if successful, else false.
+ * @param $article Article
+ * @return Boolean: true if successful, else false.
*/
public function tryParserCache( &$article ) {
- $parserCache = ParserCache::singleton();
- $parserOutput = $parserCache->get( $article, $this->parserOptions() );
- if ( $parserOutput !== false ) {
+ wfDeprecated( __METHOD__ );
+ $parserOutput = ParserCache::singleton()->get( $article, $article->getParserOptions() );
+
+ if ($parserOutput !== false) {
$this->addParserOutput( $parserOutput );
return true;
} else {
@@ -683,7 +1200,9 @@ class OutputPage {
}
/**
- * @param int $maxage Maximum cache time on the Squid, in seconds.
+ * Set the value of the "s-maxage" part of the "Cache-control" HTTP header
+ *
+ * @param $maxage Integer: maximum cache time on the Squid, in seconds.
*/
public function setSquidMaxage( $maxage ) {
$this->mSquidMaxage = $maxage;
@@ -691,12 +1210,18 @@ class OutputPage {
/**
* Use enableClientCache(false) to force it to send nocache headers
+ *
* @param $state ??
*/
public function enableClientCache( $state ) {
return wfSetVar( $this->mEnableClientCache, $state );
}
+ /**
+ * Get the list of cookies that will influence on the cache
+ *
+ * @return Array
+ */
function getCacheVaryCookies() {
global $wgCookiePrefix, $wgCacheVaryCookies;
static $cookies;
@@ -714,15 +1239,23 @@ class OutputPage {
return $cookies;
}
+ /**
+ * Return whether this page is not cacheable because "useskin" or "uselang"
+ * url parameters were passed
+ *
+ * @return Boolean
+ */
function uncacheableBecauseRequestVars() {
global $wgRequest;
- return $wgRequest->getText('useskin', false) === false
+ return $wgRequest->getText('useskin', false) === false
&& $wgRequest->getText('uselang', false) === false;
}
/**
* Check if the request has a cache-varying cookie header
* If it does, it's very important that we don't allow public caching
+ *
+ * @return Boolean
*/
function haveCacheVaryCookies() {
global $wgRequest;
@@ -742,35 +1275,98 @@ class OutputPage {
return false;
}
- /** Get a complete X-Vary-Options header */
+ /**
+ * Add an HTTP header that will influence on the cache
+ *
+ * @param $header String: header name
+ * @param $option either an Array or null
+ */
+ public function addVaryHeader( $header, $option = null ) {
+ if ( !array_key_exists( $header, $this->mVaryHeader ) ) {
+ $this->mVaryHeader[$header] = $option;
+ }
+ elseif( is_array( $option ) ) {
+ if( is_array( $this->mVaryHeader[$header] ) ) {
+ $this->mVaryHeader[$header] = array_merge( $this->mVaryHeader[$header], $option );
+ }
+ else {
+ $this->mVaryHeader[$header] = $option;
+ }
+ }
+ $this->mVaryHeader[$header] = array_unique( $this->mVaryHeader[$header] );
+ }
+
+ /**
+ * Get a complete X-Vary-Options header
+ *
+ * @return String
+ */
public function getXVO() {
$cvCookies = $this->getCacheVaryCookies();
- $xvo = 'X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;';
- $first = true;
+
+ $cookiesOption = array();
foreach ( $cvCookies as $cookieName ) {
- if ( $first ) {
- $first = false;
- } else {
- $xvo .= ';';
- }
- $xvo .= 'string-contains=' . $cookieName;
+ $cookiesOption[] = 'string-contains=' . $cookieName;
}
+ $this->addVaryHeader( 'Cookie', $cookiesOption );
+
+ $headers = array();
+ foreach( $this->mVaryHeader as $header => $option ) {
+ $newheader = $header;
+ if( is_array( $option ) )
+ $newheader .= ';' . implode( ';', $option );
+ $headers[] = $newheader;
+ }
+ $xvo = 'X-Vary-Options: ' . implode( ',', $headers );
+
return $xvo;
}
+ /**
+ * bug 21672: Add Accept-Language to Vary and XVO headers
+ * if there's no 'variant' parameter existed in GET.
+ *
+ * For example:
+ * /w/index.php?title=Main_page should always be served; but
+ * /w/index.php?title=Main_page&variant=zh-cn should never be served.
+ *
+ * patched by Liangent and Philip
+ */
+ function addAcceptLanguage() {
+ global $wgRequest, $wgContLang;
+ if( !$wgRequest->getCheck('variant') && $wgContLang->hasVariants() ) {
+ $variants = $wgContLang->getVariants();
+ $aloption = array();
+ foreach ( $variants as $variant ) {
+ if( $variant === $wgContLang->getCode() )
+ continue;
+ else
+ $aloption[] = "string-contains=$variant";
+ }
+ $this->addVaryHeader( 'Accept-Language', $aloption );
+ }
+ }
+
+ /**
+ * Send cache control HTTP headers
+ */
public function sendCacheControl() {
- global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgRequest;
+ global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgRequest, $wgUseXVO;
$response = $wgRequest->response();
if ($wgUseETag && $this->mETag)
$response->header("ETag: $this->mETag");
+ $this->addAcceptLanguage();
+
# don't serve compressed data to clients who can't handle it
# maintain different caches for logged-in users and non-logged in ones
- $response->header( 'Vary: Accept-Encoding, Cookie' );
+ $response->header( 'Vary: ' . join( ', ', array_keys( $this->mVaryHeader ) ) );
- # Add an X-Vary-Options header for Squid with Wikimedia patches
- $response->header( $this->getXVO() );
+ if ( $wgUseXVO ) {
+ # Add an X-Vary-Options header for Squid with Wikimedia patches
+ $response->header( $this->getXVO() );
+ }
if( !$this->uncacheableBecauseRequestVars() && $this->mEnableClientCache ) {
if( $wgUseSquid && session_id() == '' &&
@@ -817,99 +1413,106 @@ class OutputPage {
}
/**
+ * Get the message associed with the HTTP response code $code
+ *
+ * @param $code Integer: status code
+ * @return String or null: message or null if $code is not in the list of
+ * messages
+ */
+ public static function getStatusMessage( $code ) {
+ static $statusMessage = array(
+ 100 => 'Continue',
+ 101 => 'Switching Protocols',
+ 102 => 'Processing',
+ 200 => 'OK',
+ 201 => 'Created',
+ 202 => 'Accepted',
+ 203 => 'Non-Authoritative Information',
+ 204 => 'No Content',
+ 205 => 'Reset Content',
+ 206 => 'Partial Content',
+ 207 => 'Multi-Status',
+ 300 => 'Multiple Choices',
+ 301 => 'Moved Permanently',
+ 302 => 'Found',
+ 303 => 'See Other',
+ 304 => 'Not Modified',
+ 305 => 'Use Proxy',
+ 307 => 'Temporary Redirect',
+ 400 => 'Bad Request',
+ 401 => 'Unauthorized',
+ 402 => 'Payment Required',
+ 403 => 'Forbidden',
+ 404 => 'Not Found',
+ 405 => 'Method Not Allowed',
+ 406 => 'Not Acceptable',
+ 407 => 'Proxy Authentication Required',
+ 408 => 'Request Timeout',
+ 409 => 'Conflict',
+ 410 => 'Gone',
+ 411 => 'Length Required',
+ 412 => 'Precondition Failed',
+ 413 => 'Request Entity Too Large',
+ 414 => 'Request-URI Too Large',
+ 415 => 'Unsupported Media Type',
+ 416 => 'Request Range Not Satisfiable',
+ 417 => 'Expectation Failed',
+ 422 => 'Unprocessable Entity',
+ 423 => 'Locked',
+ 424 => 'Failed Dependency',
+ 500 => 'Internal Server Error',
+ 501 => 'Not Implemented',
+ 502 => 'Bad Gateway',
+ 503 => 'Service Unavailable',
+ 504 => 'Gateway Timeout',
+ 505 => 'HTTP Version Not Supported',
+ 507 => 'Insufficient Storage'
+ );
+ return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null;
+ }
+
+ /**
* Finally, all the text has been munged and accumulated into
* the object, let's actually output it:
*/
public function output() {
global $wgUser, $wgOutputEncoding, $wgRequest;
global $wgContLanguageCode, $wgDebugRedirects, $wgMimeType;
- global $wgJsMimeType, $wgUseAjax, $wgAjaxWatch;
+ global $wgUseAjax, $wgAjaxWatch;
global $wgEnableMWSuggest, $wgUniversalEditButton;
- global $wgArticle, $wgTitle;
+ global $wgArticle;
if( $this->mDoNothing ){
return;
}
-
wfProfileIn( __METHOD__ );
-
- if ( '' != $this->mRedirect ) {
+ if ( $this->mRedirect != '' ) {
# Standards require redirect URLs to be absolute
$this->mRedirect = wfExpandUrl( $this->mRedirect );
- if( $this->mRedirectCode == '301') {
+ if( $this->mRedirectCode == '301' || $this->mRedirectCode == '303' ) {
if( !$wgDebugRedirects ) {
- $wgRequest->response()->header("HTTP/1.1 {$this->mRedirectCode} Moved Permanently");
+ $message = self::getStatusMessage( $this->mRedirectCode );
+ $wgRequest->response()->header( "HTTP/1.1 {$this->mRedirectCode} $message" );
}
$this->mLastModified = wfTimestamp( TS_RFC2822 );
}
-
$this->sendCacheControl();
- $wgRequest->response()->header("Content-Type: text/html; charset=utf-8");
+ $wgRequest->response()->header( "Content-Type: text/html; charset=utf-8" );
if( $wgDebugRedirects ) {
$url = htmlspecialchars( $this->mRedirect );
print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
print "<p>Location: <a href=\"$url\">$url</a></p>\n";
print "</body>\n</html>\n";
} else {
- $wgRequest->response()->header( 'Location: '.$this->mRedirect );
+ $wgRequest->response()->header( 'Location: ' . $this->mRedirect );
}
wfProfileOut( __METHOD__ );
return;
- }
- elseif ( $this->mStatusCode )
- {
- $statusMessage = array(
- 100 => 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-Status',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 307 => 'Temporary Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Timeout',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
- 415 => 'Unsupported Media Type',
- 416 => 'Request Range Not Satisfiable',
- 417 => 'Expectation Failed',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported',
- 507 => 'Insufficient Storage'
- );
-
- if ( $statusMessage[$this->mStatusCode] )
- $wgRequest->response()->header( 'HTTP/1.1 ' . $this->mStatusCode . ' ' . $statusMessage[$this->mStatusCode] );
+ } elseif ( $this->mStatusCode ) {
+ $message = self::getStatusMessage( $this->mStatusCode );
+ if ( $message )
+ $wgRequest->response()->header( 'HTTP/1.1 ' . $this->mStatusCode . ' ' . $message );
}
$sk = $wgUser->getSkin();
@@ -922,35 +1525,36 @@ class OutputPage {
if( $wgAjaxWatch && $wgUser->isLoggedIn() ) {
$this->addScriptFile( 'ajaxwatch.js' );
}
-
+
if ( $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ){
$this->addScriptFile( 'mwsuggest.js' );
}
}
-
+
if( $wgUser->getBoolOption( 'editsectiononrightclick' ) ) {
$this->addScriptFile( 'rightclickedit.js' );
}
if( $wgUniversalEditButton ) {
- if( isset( $wgArticle ) && isset( $wgTitle ) && $wgTitle->quickUserCan( 'edit' )
- && ( $wgTitle->exists() || $wgTitle->quickUserCan( 'create' ) ) ) {
+ if( isset( $wgArticle ) && $this->getTitle() && $this->getTitle()->quickUserCan( 'edit' )
+ && ( $this->getTitle()->exists() || $this->getTitle()->quickUserCan( 'create' ) ) ) {
// Original UniversalEditButton
+ $msg = wfMsg('edit');
$this->addLink( array(
'rel' => 'alternate',
'type' => 'application/x-wiki',
- 'title' => wfMsg( 'edit' ),
- 'href' => $wgTitle->getLocalURL( 'action=edit' )
+ 'title' => $msg,
+ 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
) );
// Alternate edit link
$this->addLink( array(
'rel' => 'edit',
- 'title' => wfMsg( 'edit' ),
- 'href' => $wgTitle->getLocalURL( 'action=edit' )
+ 'title' => $msg,
+ 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
) );
}
}
-
+
# Buffer output; final headers may depend on later processing
ob_start();
@@ -975,8 +1579,10 @@ class OutputPage {
}
/**
- * @todo document
- * @param string $ins
+ * Actually output something with print(). Performs an iconv to the
+ * output encoding, if needed.
+ *
+ * @param $ins String: the string to output
*/
public function out( $ins ) {
global $wgInputEncoding, $wgOutputEncoding, $wgContLang;
@@ -994,7 +1600,7 @@ class OutputPage {
*/
public static function setEncodings() {
global $wgInputEncoding, $wgOutputEncoding;
- global $wgUser, $wgContLang;
+ global $wgContLang;
$wgInputEncoding = strtolower( $wgInputEncoding );
@@ -1006,9 +1612,9 @@ class OutputPage {
}
/**
- * Deprecated, use wfReportTime() instead.
- * @return string
- * @deprecated
+ * @deprecated use wfReportTime() instead.
+ *
+ * @return String
*/
public function reportTime() {
wfDeprecated( __METHOD__ );
@@ -1019,11 +1625,11 @@ class OutputPage {
/**
* Produce a "user is blocked" page.
*
- * @param bool $return Whether to have a "return to $wgTitle" message or not.
+ * @param $return Boolean: whether to have a "return to $wgTitle" message or not.
* @return nothing
*/
function blockedPage( $return = true ) {
- global $wgUser, $wgContLang, $wgTitle, $wgLang;
+ global $wgUser, $wgContLang, $wgLang;
$this->setPageTitle( wfMsg( 'blockedtitle' ) );
$this->setRobotPolicy( 'noindex,nofollow' );
@@ -1073,7 +1679,7 @@ class OutputPage {
# Don't auto-return to special pages
if( $return ) {
- $return = $wgTitle->getNamespace() > -1 ? $wgTitle : NULL;
+ $return = $this->getTitle()->getNamespace() > -1 ? $this->getTitle() : null;
$this->returnToMain( null, $return );
}
}
@@ -1081,14 +1687,13 @@ class OutputPage {
/**
* Output a standard error page
*
- * @param string $title Message key for page title
- * @param string $msg Message key for page text
- * @param array $params Message parameters
+ * @param $title String: message key for page title
+ * @param $msg String: message key for page text
+ * @param $params Array: message parameters
*/
public function showErrorPage( $title, $msg, $params = array() ) {
- global $wgTitle;
- if ( isset($wgTitle) ) {
- $this->mDebugtext .= 'Original title: ' . $wgTitle->getPrefixedText() . "\n";
+ if ( $this->getTitle() ) {
+ $this->mDebugtext .= 'Original title: ' . $this->getTitle()->getPrefixedText() . "\n";
}
$this->setPageTitle( wfMsg( $title ) );
$this->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
@@ -1108,14 +1713,12 @@ class OutputPage {
/**
* Output a standard permission error page
*
- * @param array $errors Error message keys
+ * @param $errors Array: error message keys
+ * @param $action String: action that was denied or null if unknown
*/
- public function showPermissionsErrorPage( $errors, $action = null )
- {
- global $wgTitle;
-
+ public function showPermissionsErrorPage( $errors, $action = null ) {
$this->mDebugtext .= 'Original title: ' .
- $wgTitle->getPrefixedText() . "\n";
+ $this->getTitle()->getPrefixedText() . "\n";
$this->setPageTitle( wfMsg( 'permissionserrors' ) );
$this->setHTMLTitle( wfMsg( 'permissionserrors' ) );
$this->setRobotPolicy( 'noindex,nofollow' );
@@ -1126,17 +1729,11 @@ class OutputPage {
$this->addWikiText( $this->formatPermissionsErrorMessage( $errors, $action ) );
}
- /** @deprecated */
- public function errorpage( $title, $msg ) {
- wfDeprecated( __METHOD__ );
- throw new ErrorPageError( $title, $msg );
- }
-
/**
* Display an error page indicating that a given version of MediaWiki is
* required to use it
*
- * @param mixed $version The version of MediaWiki needed to use the page
+ * @param $version Mixed: the version of MediaWiki needed to use the page
*/
public function versionRequired( $version ) {
$this->setPageTitle( wfMsg( 'versionrequired', $version ) );
@@ -1152,10 +1749,10 @@ class OutputPage {
/**
* Display an error page noting that a given permission bit is required.
*
- * @param string $permission key required
+ * @param $permission String: key required
*/
public function permissionRequired( $permission ) {
- global $wgUser, $wgLang;
+ global $wgLang;
$this->setPageTitle( wfMsg( 'badaccess' ) );
$this->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
@@ -1176,16 +1773,14 @@ class OutputPage {
}
/**
- * Use permissionRequired.
- * @deprecated
+ * @deprecated use permissionRequired()
*/
public function sysopRequired() {
throw new MWException( "Call to deprecated OutputPage::sysopRequired() method\n" );
}
/**
- * Use permissionRequired.
- * @deprecated
+ * @deprecated use permissionRequired()
*/
public function developerRequired() {
throw new MWException( "Call to deprecated OutputPage::developerRequired() method\n" );
@@ -1195,7 +1790,7 @@ class OutputPage {
* Produce the stock "please login to use the wiki" page
*/
public function loginToUse() {
- global $wgUser, $wgTitle, $wgContLang;
+ global $wgUser, $wgContLang;
if( $wgUser->isLoggedIn() ) {
$this->permissionRequired( 'read' );
@@ -1210,9 +1805,15 @@ class OutputPage {
$this->setArticleFlag( false );
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
- $loginLink = $skin->makeKnownLinkObj( $loginTitle, wfMsgHtml( 'loginreqlink' ), 'returnto=' . $wgTitle->getPrefixedUrl() );
+ $loginLink = $skin->link(
+ $loginTitle,
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $this->getTitle()->getPrefixedText() ),
+ array( 'known', 'noclasses' )
+ );
$this->addHTML( wfMsgWikiHtml( 'loginreqpagetext', $loginLink ) );
- $this->addHTML( "\n<!--" . $wgTitle->getPrefixedUrl() . "-->" );
+ $this->addHTML( "\n<!--" . $this->getTitle()->getPrefixedUrl() . "-->" );
# Don't return to the main page if the user can't read it
# otherwise we'll end up in a pointless loop
@@ -1221,21 +1822,19 @@ class OutputPage {
$this->returnToMain( null, $mainPage );
}
- /** @deprecated */
- public function databaseError( $fname, $sql, $error, $errno ) {
- throw new MWException( "OutputPage::databaseError is obsolete\n" );
- }
-
/**
- * @param array $errors An array of arrays returned by Title::getUserPermissionsErrors
- * @return string The wikitext error-messages, formatted into a list.
+ * Format a list of error messages
+ *
+ * @param $errors An array of arrays returned by Title::getUserPermissionsErrors
+ * @param $action String: action that was denied or null if unknown
+ * @return String: the wikitext error-messages, formatted into a list.
*/
public function formatPermissionsErrorMessage( $errors, $action = null ) {
if ($action == null) {
$text = wfMsgNoTrans( 'permissionserrorstext', count($errors)). "\n\n";
} else {
global $wgLang;
- $action_desc = wfMsg( "action-$action" );
+ $action_desc = wfMsgNoTrans( "action-$action" );
$text = wfMsgNoTrans( 'permissionserrorstext-withaction', count($errors), $action_desc ) . "\n\n";
}
@@ -1250,7 +1849,7 @@ class OutputPage {
}
$text .= '</ul>';
} else {
- $text .= '<div class="permissions-errors">' . call_user_func_array( 'wfMsgNoTrans', reset( $errors ) ) . '</div>';
+ $text .= "<div class=\"permissions-errors\">\n" . call_user_func_array( 'wfMsgNoTrans', reset( $errors ) ) . "\n</div>";
}
return $text;
@@ -1271,12 +1870,13 @@ class OutputPage {
*
* @todo Needs to be split into multiple functions.
*
- * @param string $source Source code to show (or null).
- * @param bool $protected Is this a permissions error?
- * @param array $reasons List of reasons for this error, as returned by Title::getUserPermissionsErrors().
+ * @param $source String: source code to show (or null).
+ * @param $protected Boolean: is this a permissions error?
+ * @param $reasons Array: list of reasons for this error, as returned by Title::getUserPermissionsErrors().
+ * @param $action String: action that was denied or null if unknown
*/
public function readOnlyPage( $source = null, $protected = false, $reasons = array(), $action = null ) {
- global $wgUser, $wgTitle;
+ global $wgUser;
$skin = $wgUser->getSkin();
$this->setRobotPolicy( 'noindex,nofollow' );
@@ -1292,7 +1892,18 @@ class OutputPage {
// Permissions error
if( $source ) {
$this->setPageTitle( wfMsg( 'viewsource' ) );
- $this->setSubtitle( wfMsg( 'viewsourcefor', $skin->makeKnownLinkObj( $wgTitle ) ) );
+ $this->setSubtitle(
+ wfMsg(
+ 'viewsourcefor',
+ $skin->link(
+ $this->getTitle(),
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ )
+ )
+ );
} else {
$this->setPageTitle( wfMsg( 'badaccess' ) );
}
@@ -1301,25 +1912,25 @@ class OutputPage {
// Wiki is read only
$this->setPageTitle( wfMsg( 'readonly' ) );
$reason = wfReadOnlyReason();
- $this->wrapWikiMsg( '<div class="mw-readonly-error">$1</div>', array( 'readonlytext', $reason ) );
+ $this->wrapWikiMsg( '<div class="mw-readonly-error">\n$1</div>', array( 'readonlytext', $reason ) );
}
// Show source, if supplied
if( is_string( $source ) ) {
$this->addWikiMsg( 'viewsourcetext' );
- $text = Xml::openElement( 'textarea',
- array( 'id' => 'wpTextbox1',
- 'name' => 'wpTextbox1',
- 'cols' => $wgUser->getOption( 'cols' ),
- 'rows' => $wgUser->getOption( 'rows' ),
- 'readonly' => 'readonly' ) );
- $text .= htmlspecialchars( $source );
- $text .= Xml::closeElement( 'textarea' );
- $this->addHTML( $text );
+
+ $params = array(
+ 'id' => 'wpTextbox1',
+ 'name' => 'wpTextbox1',
+ 'cols' => $wgUser->getOption( 'cols' ),
+ 'rows' => $wgUser->getOption( 'rows' ),
+ 'readonly' => 'readonly'
+ );
+ $this->addHTML( Html::element( 'textarea', $params, $source ) );
// Show templates used by this article
$skin = $wgUser->getSkin();
- $article = new Article( $wgTitle );
+ $article = new Article( $this->getTitle() );
$this->addHTML( "<div class='templatesUsed'>
{$skin->formatTemplates( $article->getUsedTemplates() )}
</div>
@@ -1329,12 +1940,23 @@ class OutputPage {
# If the title doesn't exist, it's fairly pointless to print a return
# link to it. After all, you just tried editing it and couldn't, so
# what's there to do there?
- if( $wgTitle->exists() ) {
- $this->returnToMain( null, $wgTitle );
+ if( $this->getTitle()->exists() ) {
+ $this->returnToMain( null, $this->getTitle() );
}
}
/** @deprecated */
+ public function errorpage( $title, $msg ) {
+ wfDeprecated( __METHOD__ );
+ throw new ErrorPageError( $title, $msg );
+ }
+
+ /** @deprecated */
+ public function databaseError( $fname, $sql, $error, $errno ) {
+ throw new MWException( "OutputPage::databaseError is obsolete\n" );
+ }
+
+ /** @deprecated */
public function fatalError( $message ) {
wfDeprecated( __METHOD__ );
throw new FatalError( $message );
@@ -1402,30 +2024,37 @@ class OutputPage {
/**
* Add a "return to" link pointing to a specified title
*
- * @param Title $title Title to link
+ * @param $title Title to link
+ * @param $query String: query string
*/
- public function addReturnTo( $title ) {
+ public function addReturnTo( $title, $query = array() ) {
global $wgUser;
$this->addLink( array( 'rel' => 'next', 'href' => $title->getFullUrl() ) );
- $link = wfMsg( 'returnto', $wgUser->getSkin()->makeLinkObj( $title ) );
- $this->addHTML( "<p>{$link}</p>\n" );
+ $link = wfMsgHtml( 'returnto', $wgUser->getSkin()->link(
+ $title, null, array(), $query ) );
+ $this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
}
/**
* Add a "return to" link pointing to a specified title,
* or the title indicated in the request, or else the main page
*
- * @param null $unused No longer used
- * @param Title $returnto Title to return to
+ * @param $unused No longer used
+ * @param $returnto Title or String to return to
+ * @param $returntoquery String: query string for the return to link
*/
- public function returnToMain( $unused = null, $returnto = NULL ) {
+ public function returnToMain( $unused = null, $returnto = null, $returntoquery = null ) {
global $wgRequest;
- if ( $returnto == NULL ) {
+ if ( $returnto == null ) {
$returnto = $wgRequest->getText( 'returnto' );
}
- if ( '' === $returnto ) {
+ if ( $returntoquery == null ) {
+ $returntoquery = $wgRequest->getText( 'returntoquery' );
+ }
+
+ if ( $returnto === '' ) {
$returnto = Title::newMainPage();
}
@@ -1438,43 +2067,24 @@ class OutputPage {
$titleObj = Title::newMainPage();
}
- $this->addReturnTo( $titleObj );
- }
-
- /**
- * This function takes the title (first item of mGoodLinks), categories, existing and broken links for the page
- * and uses the first 10 of them for META keywords
- *
- * @param ParserOutput &$parserOutput
- */
- private function addKeywords( &$parserOutput ) {
- global $wgTitle;
- $this->addKeyword( $wgTitle->getPrefixedText() );
- $count = 1;
- $links2d =& $parserOutput->getLinks();
- if ( !is_array( $links2d ) ) {
- return;
- }
- foreach ( $links2d as $dbkeys ) {
- foreach( $dbkeys as $dbkey => $unused ) {
- $this->addKeyword( $dbkey );
- if ( ++$count > 10 ) {
- break 2;
- }
- }
- }
+ $this->addReturnTo( $titleObj, $returntoquery );
}
/**
- * @return string The doctype, opening <html>, and head element.
+ * @param $sk Skin The given Skin
+ * @param $includeStyle Unused (?)
+ * @return String: The doctype, opening <html>, and head element.
*/
- public function headElement( Skin $sk ) {
+ public function headElement( Skin $sk, $includeStyle = true ) {
global $wgDocType, $wgDTD, $wgContLanguageCode, $wgOutputEncoding, $wgMimeType;
- global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces;
- global $wgUser, $wgContLang, $wgUseTrackbacks, $wgTitle, $wgStyleVersion;
+ global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
+ global $wgContLang, $wgUseTrackbacks, $wgStyleVersion, $wgHtml5, $wgWellFormedXml;
+ global $wgUser, $wgRequest, $wgLang;
- $this->addMeta( "http:Content-type", "$wgMimeType; charset={$wgOutputEncoding}" );
- $this->addStyle( 'common/wikiprintable.css', 'print' );
+ $this->addMeta( "http:Content-Type", "$wgMimeType; charset={$wgOutputEncoding}" );
+ if ( $sk->commonPrintStylesheet() ) {
+ $this->addStyle( 'common/wikiprintable.css', 'print' );
+ }
$sk->setupUserCss( $this );
$ret = '';
@@ -1483,42 +2093,154 @@ class OutputPage {
$ret .= "<?xml version=\"1.0\" encoding=\"$wgOutputEncoding\" ?" . ">\n";
}
- $ret .= "<!DOCTYPE html PUBLIC \"$wgDocType\"\n \"$wgDTD\">\n";
-
- if ( '' == $this->getHTMLTitle() ) {
+ if ( $this->getHTMLTitle() == '' ) {
$this->setHTMLTitle( wfMsg( 'pagetitle', $this->getPageTitle() ));
}
- $rtl = $wgContLang->isRTL() ? " dir='RTL'" : '';
- $ret .= "<html xmlns=\"{$wgXhtmlDefaultNamespace}\" ";
- foreach($wgXhtmlNamespaces as $tag => $ns) {
- $ret .= "xmlns:{$tag}=\"{$ns}\" ";
+ $dir = $wgContLang->getDir();
+
+ if ( $wgHtml5 ) {
+ if ( $wgWellFormedXml ) {
+ # Unknown elements and attributes are okay in XML, but unknown
+ # named entities are well-formedness errors and will break XML
+ # parsers. Thus we need a doctype that gives us appropriate
+ # entity definitions. The HTML5 spec permits four legacy
+ # doctypes as obsolete but conforming, so let's pick one of
+ # those, although it makes our pages look like XHTML1 Strict.
+ # Isn't compatibility great?
+ $ret .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+ } else {
+ # Much saner.
+ $ret .= "<!doctype html>\n";
+ }
+ $ret .= "<html lang=\"$wgContLanguageCode\" dir=\"$dir\"";
+ if ( $wgHtml5Version ) $ret .= " version=\"$wgHtml5Version\"";
+ $ret .= ">\n";
+ } else {
+ $ret .= "<!DOCTYPE html PUBLIC \"$wgDocType\" \"$wgDTD\">\n";
+ $ret .= "<html xmlns=\"{$wgXhtmlDefaultNamespace}\" ";
+ foreach($wgXhtmlNamespaces as $tag => $ns) {
+ $ret .= "xmlns:{$tag}=\"{$ns}\" ";
+ }
+ $ret .= "lang=\"$wgContLanguageCode\" dir=\"$dir\">\n";
}
- $ret .= "xml:lang=\"$wgContLanguageCode\" lang=\"$wgContLanguageCode\" $rtl>\n";
- $ret .= "<head>\n<title>" . htmlspecialchars( $this->getHTMLTitle() ) . "</title>\n\t\t";
- $ret .= implode( "\t\t", array(
+
+ $ret .= "<head>\n";
+ $ret .= "<title>" . htmlspecialchars( $this->getHTMLTitle() ) . "</title>\n";
+ $ret .= implode( "\n", array(
$this->getHeadLinks(),
$this->buildCssLinks(),
- $sk->getHeadScripts( $this->mAllowUserJs ),
- $this->mScripts,
+ $this->getHeadScripts( $sk ),
$this->getHeadItems(),
));
if( $sk->usercss ){
- $ret .= "<style type='text/css'>{$sk->usercss}</style>";
+ $ret .= Html::inlineStyle( $sk->usercss );
}
if ($wgUseTrackbacks && $this->isArticleRelated())
- $ret .= $wgTitle->trackbackRDF();
+ $ret .= $this->getTitle()->trackbackRDF();
$ret .= "</head>\n";
+
+ $bodyAttrs = array();
+
+ # Crazy edit-on-double-click stuff
+ $action = $wgRequest->getVal( 'action', 'view' );
+
+ if ( $this->getTitle()->getNamespace() != NS_SPECIAL
+ && !in_array( $action, array( 'edit', 'submit' ) )
+ && $wgUser->getOption( 'editondblclick' ) ) {
+ $bodyAttrs['ondblclick'] = "document.location = '" . Xml::escapeJsString( $this->getTitle()->getEditURL() ) . "'";
+ }
+
+ # Class bloat
+ $bodyAttrs['class'] = "mediawiki $dir";
+
+ if ( $wgLang->capitalizeAllNouns() ) {
+ # A <body> class is probably not the best way to do this . . .
+ $bodyAttrs['class'] .= ' capitalize-all-nouns';
+ }
+ $bodyAttrs['class'] .= ' ns-' . $this->getTitle()->getNamespace();
+ if ( $this->getTitle()->getNamespace() == NS_SPECIAL ) {
+ $bodyAttrs['class'] .= ' ns-special';
+ } elseif ( $this->getTitle()->isTalkPage() ) {
+ $bodyAttrs['class'] .= ' ns-talk';
+ } else {
+ $bodyAttrs['class'] .= ' ns-subject';
+ }
+ $bodyAttrs['class'] .= ' ' . Sanitizer::escapeClass( 'page-' . $this->getTitle()->getPrefixedText() );
+ $bodyAttrs['class'] .= ' skin-' . Sanitizer::escapeClass( $wgUser->getSkin()->getSkinName() );
+
+ $ret .= Html::openElement( 'body', $bodyAttrs ) . "\n";
+
return $ret;
}
-
+
+ /**
+ * Gets the global variables and mScripts; also adds userjs to the end if
+ * enabled
+ *
+ * @param $sk Skin object to use
+ * @return String: HTML fragment
+ */
+ function getHeadScripts( Skin $sk ) {
+ global $wgUser, $wgRequest, $wgJsMimeType, $wgUseSiteJs;
+ global $wgStylePath, $wgStyleVersion;
+
+ $scripts = Skin::makeGlobalVariablesScript( $sk->getSkinName() );
+ $scripts .= Html::linkedScript( "{$wgStylePath}/common/wikibits.js?$wgStyleVersion" );
+
+ //add site JS if enabled:
+ if( $wgUseSiteJs ) {
+ $jsCache = $wgUser->isLoggedIn() ? '&smaxage=0' : '';
+ $this->addScriptFile( Skin::makeUrl( '-',
+ "action=raw$jsCache&gen=js&useskin=" .
+ urlencode( $sk->getSkinName() )
+ )
+ );
+ }
+
+ //add user js if enabled:
+ if( $this->isUserJsAllowed() && $wgUser->isLoggedIn() ) {
+ $action = $wgRequest->getVal( 'action', 'view' );
+ if( $this->mTitle && $this->mTitle->isJsSubpage() and $sk->userCanPreview( $action ) ) {
+ # XXX: additional security check/prompt?
+ $this->addInlineScript( $wgRequest->getText( 'wpTextbox1' ) );
+ } else {
+ $userpage = $wgUser->getUserPage();
+ $scriptpage = Title::makeTitleSafe(
+ NS_USER,
+ $userpage->getDBkey() . '/' . $sk->getSkinName() . '.js'
+ );
+ if ( $scriptpage && $scriptpage->exists() ) {
+ $userjs = Skin::makeUrl( $scriptpage->getPrefixedText(), 'action=raw&ctype=' . $wgJsMimeType );
+ $this->addScriptFile( $userjs );
+ }
+ }
+ }
+
+ $scripts .= "\n" . $this->mScripts;
+ return $scripts;
+ }
+
+ /**
+ * Add default \<meta\> tags
+ */
protected function addDefaultMeta() {
- global $wgVersion;
- $this->addMeta( 'http:Content-Style-Type', 'text/css' ); //bug 15835
+ global $wgVersion, $wgHtml5;
+
+ static $called = false;
+ if ( $called ) {
+ # Don't run this twice
+ return;
+ }
+ $called = true;
+
+ if ( !$wgHtml5 ) {
+ $this->addMeta( 'http:Content-Style-Type', 'text/css' ); //bug 15835
+ }
$this->addMeta( 'generator', "MediaWiki $wgVersion" );
-
+
$p = "{$this->mIndexPolicy},{$this->mFollowPolicy}";
if( $p !== 'index,follow' ) {
// http://www.robotstxt.org/wc/meta-user.html
@@ -1540,12 +2262,12 @@ class OutputPage {
*/
public function getHeadLinks() {
global $wgRequest, $wgFeed;
-
+
// Ideally this should happen earlier, somewhere. :P
$this->addDefaultMeta();
-
+
$tags = array();
-
+
foreach ( $this->mMetatags as $tag ) {
if ( 0 == strcasecmp( 'http:', substr( $tag[0], 0, 5 ) ) ) {
$a = 'http-equiv';
@@ -1553,17 +2275,16 @@ class OutputPage {
} else {
$a = 'name';
}
- $tags[] = Xml::element( 'meta',
+ $tags[] = Html::element( 'meta',
array(
$a => $tag[0],
'content' => $tag[1] ) );
}
foreach ( $this->mLinktags as $tag ) {
- $tags[] = Xml::element( 'link', $tag );
+ $tags[] = Html::element( 'link', $tag );
}
if( $wgFeed ) {
- global $wgTitle;
foreach( $this->getSyndicationLinks() as $format => $link ) {
# Use the page name for the title (accessed through $wgTitle since
# there's no other way). In principle, this could lead to issues
@@ -1573,30 +2294,30 @@ class OutputPage {
$tags[] = $this->feedLink(
$format,
$link,
- wfMsg( "page-{$format}-feed", $wgTitle->getPrefixedText() ) ); # Used messages: 'page-rss-feed' and 'page-atom-feed' (for an easier grep)
+ # Used messages: 'page-rss-feed' and 'page-atom-feed' (for an easier grep)
+ wfMsg( "page-{$format}-feed", $this->getTitle()->getPrefixedText() ) );
}
- # Recent changes feed should appear on every page (except recentchanges,
- # that would be redundant). Put it after the per-page feed to avoid
- # changing existing behavior. It's still available, probably via a
+ # Recent changes feed should appear on every page (except recentchanges,
+ # that would be redundant). Put it after the per-page feed to avoid
+ # changing existing behavior. It's still available, probably via a
# menu in your browser. Some sites might have a different feed they'd
# like to promote instead of the RC feed (maybe like a "Recent New Articles"
# or "Breaking news" one). For this, we see if $wgOverrideSiteFeed is defined.
# If so, use it instead.
-
- global $wgOverrideSiteFeed, $wgSitename, $wgFeedClasses;
+
+ global $wgOverrideSiteFeed, $wgSitename, $wgAdvertisedFeedTypes;
$rctitle = SpecialPage::getTitleFor( 'Recentchanges' );
-
+
if ( $wgOverrideSiteFeed ) {
- foreach ( $wgOverrideSiteFeed as $type => $feedUrl ) {
+ foreach ( $wgOverrideSiteFeed as $type => $feedUrl ) {
$tags[] = $this->feedLink (
$type,
htmlspecialchars( $feedUrl ),
wfMsg( "site-{$type}-feed", $wgSitename ) );
}
- }
- else if ( $wgTitle->getPrefixedText() != $rctitle->getPrefixedText() ) {
- foreach( $wgFeedClasses as $format => $class ) {
+ } elseif ( $this->getTitle()->getPrefixedText() != $rctitle->getPrefixedText() ) {
+ foreach ( $wgAdvertisedFeedTypes as $format ) {
$tags[] = $this->feedLink(
$format,
$rctitle->getLocalURL( "feed={$format}" ),
@@ -1605,36 +2326,19 @@ class OutputPage {
}
}
- return implode( "\n\t\t", $tags ) . "\n";
- }
-
- /**
- * Return URLs for each supported syndication format for this page.
- * @return array associating format keys with URLs
- */
- public function getSyndicationLinks() {
- global $wgTitle, $wgFeedClasses;
- $links = array();
-
- if( $this->isSyndicated() ) {
- if( is_string( $this->getFeedAppendQuery() ) ) {
- $appendQuery = "&" . $this->getFeedAppendQuery();
- } else {
- $appendQuery = "";
- }
-
- foreach( $wgFeedClasses as $format => $class ) {
- $links[$format] = $wgTitle->getLocalUrl( "feed=$format{$appendQuery}" );
- }
- }
- return $links;
+ return implode( "\n", $tags );
}
/**
- * Generate a <link rel/> for an RSS feed.
+ * Generate a <link rel/> for a feed.
+ *
+ * @param $type String: feed type
+ * @param $url String: URL to the feed
+ * @param $text String: value of the "title" attribute
+ * @return String: HTML fragment
*/
private function feedLink( $type, $url, $text ) {
- return Xml::element( 'link', array(
+ return Html::element( 'link', array(
'rel' => 'alternate',
'type' => "application/$type+xml",
'title' => $text,
@@ -1645,12 +2349,15 @@ class OutputPage {
* Add a local or specified stylesheet, with the given media options.
* Meant primarily for internal use...
*
- * @param $media -- to specify a media type, 'screen', 'printable', 'handheld' or any.
- * @param $conditional -- for IE conditional comments, specifying an IE version
- * @param $dir -- set to 'rtl' or 'ltr' for direction-specific sheets
+ * @param $style String: URL to the file
+ * @param $media String: to specify a media type, 'screen', 'printable', 'handheld' or any.
+ * @param $condition String: for IE conditional comments, specifying an IE version
+ * @param $dir String: set to 'rtl' or 'ltr' for direction-specific sheets
*/
public function addStyle( $style, $media='', $condition='', $dir='' ) {
$options = array();
+ // Even though we expect the media type to be lowercase, but here we
+ // force it to lowercase to be safe.
if( $media )
$options['media'] = $media;
if( $condition )
@@ -1661,6 +2368,14 @@ class OutputPage {
}
/**
+ * Adds inline CSS styles
+ * @param $style_css Mixed: inline CSS
+ */
+ public function addInlineStyle( $style_css ){
+ $this->mScripts .= Html::inlineStyle( $style_css );
+ }
+
+ /**
* Build a set of <link>s for the stylesheets specified in the $this->styles array.
* These will be applied to various media & IE conditionals.
*/
@@ -1672,15 +2387,23 @@ class OutputPage {
$links[] = $link;
}
- return implode( "\n\t\t", $links );
+ return implode( "\n", $links );
}
+ /**
+ * Generate \<link\> tags for stylesheets
+ *
+ * @param $style String: URL to the file
+ * @param $options Array: option, can contain 'condition', 'dir', 'media'
+ * keys
+ * @return String: HTML fragment
+ */
protected function styleLink( $style, $options ) {
global $wgRequest;
if( isset( $options['dir'] ) ) {
global $wgContLang;
- $siteDir = $wgContLang->isRTL() ? 'rtl' : 'ltr';
+ $siteDir = $wgContLang->getDir();
if( $siteDir != $options['dir'] )
return '';
}
@@ -1691,7 +2414,7 @@ class OutputPage {
return '';
}
} else {
- $media = '';
+ $media = 'all';
}
if( substr( $style, 0, 1 ) == '/' ||
@@ -1703,15 +2426,7 @@ class OutputPage {
$url = $wgStylePath . '/' . $style . '?' . $wgStyleVersion;
}
- $attribs = array(
- 'rel' => 'stylesheet',
- 'href' => $url,
- 'type' => 'text/css' );
- if( $media ) {
- $attribs['media'] = $media;
- }
-
- $link = Xml::element( 'link', $attribs );
+ $link = Html::linkedStyle( $url, $media );
if( isset( $options['condition'] ) ) {
$condition = htmlspecialchars( $options['condition'] );
@@ -1720,6 +2435,12 @@ class OutputPage {
return $link;
}
+ /**
+ * Transform "media" attribute based on request parameters
+ *
+ * @param $media String: current value of the "media" attribute
+ * @return String: modified value of the "media" attribute
+ */
function transformCssMedia( $media ) {
global $wgRequest, $wgHandheldForIPhone;
@@ -1758,8 +2479,6 @@ class OutputPage {
* for when rate limiting has triggered.
*/
public function rateLimited() {
- global $wgTitle;
-
$this->setPageTitle(wfMsg('actionthrottled'));
$this->setRobotPolicy( 'noindex,follow' );
$this->setArticleRelated( false );
@@ -1769,25 +2488,7 @@ class OutputPage {
$this->setStatusCode(503);
$this->addWikiMsg( 'actionthrottledtext' );
- $this->returnToMain( null, $wgTitle );
- }
-
- /**
- * Show an "add new section" link?
- *
- * @return bool
- */
- public function showNewSectionLink() {
- return $this->mNewSectionLink;
- }
-
- /**
- * Forcibly hide the new section link?
- *
- * @return bool
- */
- public function forceHideNewSectionLink() {
- return $this->mHideNewSectionLink;
+ $this->returnToMain( null, $this->getTitle() );
}
/**
@@ -1797,16 +2498,16 @@ class OutputPage {
* then the warning is a bit more obvious. If the lag is
* lower than $wgSlaveLagWarning, then no warning is shown.
*
- * @param int $lag Slave lag
+ * @param $lag Integer: slave lag
*/
public function showLagWarning( $lag ) {
- global $wgSlaveLagWarning, $wgSlaveLagCritical;
+ global $wgSlaveLagWarning, $wgSlaveLagCritical, $wgLang;
if( $lag >= $wgSlaveLagWarning ) {
$message = $lag < $wgSlaveLagCritical
? 'lag-warn-normal'
: 'lag-warn-high';
- $warning = wfMsgExt( $message, 'parse', $lag );
- $this->addHTML( "<div class=\"mw-{$message}\">\n{$warning}\n</div>\n" );
+ $wrap = Html::rawElement( 'div', array( 'class' => "mw-{$message}" ), "\n$1\n" );
+ $this->wrapWikiMsg( "$wrap\n", array( $message, $wgLang->formatNum( $lag ) ) );
}
}
@@ -1841,7 +2542,7 @@ class OutputPage {
*
* In the $wrap, $1 is replaced with the first message, $2 with the second, and so
* on. The subsequent arguments may either be strings, in which case they are the
- * message names, or an arrays, in which case the first element is the message name,
+ * message names, or arrays, in which case the first element is the message name,
* and subsequent elements are the parameters to that message.
*
* The special named parameter 'options' in a message specification array is passed
@@ -1851,11 +2552,13 @@ class OutputPage {
*
* For example:
*
- * $wgOut->wrapWikiMsg( '<div class="error">$1</div>', 'some-error' );
+ * $wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>", 'some-error' );
*
* Is equivalent to:
*
- * $wgOut->addWikiText( '<div class="error">' . wfMsgNoTrans( 'some-error' ) . '</div>' );
+ * $wgOut->addWikiText( "<div class='error'>\n" . wfMsgNoTrans( 'some-error' ) . "</div>" );
+ *
+ * The newline after opening div is needed in some wikitext. See bug 19226.
*/
public function wrapWikiMsg( $wrap /*, ...*/ ) {
$msgSpecs = func_get_args();
@@ -1879,4 +2582,29 @@ class OutputPage {
}
$this->addHTML( $this->parse( $s, /*linestart*/true, /*uilang*/true ) );
}
+
+ /**
+ * Include jQuery core. Use this to avoid loading it multiple times
+ * before we get a usable script loader.
+ *
+ * @param $modules Array: list of jQuery modules which should be loaded
+ * @return Array: the list of modules which were not loaded.
+ */
+ public function includeJQuery( $modules = array() ) {
+ global $wgStylePath, $wgStyleVersion, $wgJsMimeType;
+
+ $supportedModules = array( /** TODO: add things here */ );
+ $unsupported = array_diff( $modules, $supportedModules );
+
+ $params = array(
+ 'type' => $wgJsMimeType,
+ 'src' => "$wgStylePath/common/jquery.min.js?$wgStyleVersion",
+ );
+ if ( !$this->mJQueryDone ) {
+ $this->mJQueryDone = true;
+ $this->mScripts = Html::element( 'script', $params ) . "\n" . $this->mScripts;
+ }
+ return $unsupported;
+ }
+
}
diff --git a/includes/PageHistory.php b/includes/PageHistory.php
deleted file mode 100644
index 9477981f..00000000
--- a/includes/PageHistory.php
+++ /dev/null
@@ -1,630 +0,0 @@
-<?php
-/**
- * Page history
- *
- * Split off from Article.php and Skin.php, 2003-12-22
- * @file
- */
-
-/**
- * This class handles printing the history page for an article. In order to
- * be efficient, it uses timestamps rather than offsets for paging, to avoid
- * costly LIMIT,offset queries.
- *
- * Construct it by passing in an Article, and call $h->history() to print the
- * history.
- *
- */
-class PageHistory {
- const DIR_PREV = 0;
- const DIR_NEXT = 1;
-
- var $mArticle, $mTitle, $mSkin;
- var $lastdate;
- var $linesonpage;
- var $mLatestId = null;
-
- private $mOldIdChecked = 0;
-
- /**
- * Construct a new PageHistory.
- *
- * @param Article $article
- * @returns nothing
- */
- function __construct( $article ) {
- global $wgUser;
- $this->mArticle =& $article;
- $this->mTitle =& $article->mTitle;
- $this->mSkin = $wgUser->getSkin();
- $this->preCacheMessages();
- }
-
- function getArticle() {
- return $this->mArticle;
- }
-
- function getTitle() {
- return $this->mTitle;
- }
-
- /**
- * As we use the same small set of messages in various methods and that
- * they are called often, we call them once and save them in $this->message
- */
- function preCacheMessages() {
- // Precache various messages
- if( !isset( $this->message ) ) {
- foreach( explode(' ', 'cur last rev-delundel' ) as $msg ) {
- $this->message[$msg] = wfMsgExt( $msg, array( 'escape') );
- }
- }
- }
-
- /**
- * Print the history page for an article.
- *
- * @returns nothing
- */
- function history() {
- global $wgOut, $wgRequest, $wgTitle, $wgScript;
-
- /*
- * Allow client caching.
- */
- if( $wgOut->checkLastModified( $this->mArticle->getTouched() ) )
- return; // Client cache fresh and headers sent, nothing more to do.
-
- wfProfileIn( __METHOD__ );
-
- /*
- * Setup page variables.
- */
- $wgOut->setPageTitle( wfMsg( 'history-title', $this->mTitle->getPrefixedText() ) );
- $wgOut->setPageTitleActionText( wfMsg( 'history_short' ) );
- $wgOut->setArticleFlag( false );
- $wgOut->setArticleRelated( true );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setSyndicated( true );
- $wgOut->setFeedAppendQuery( 'action=history' );
- $wgOut->addScriptFile( 'history.js' );
-
- $logPage = SpecialPage::getTitleFor( 'Log' );
- $logLink = $this->mSkin->makeKnownLinkObj( $logPage, wfMsgHtml( 'viewpagelogs' ),
- 'page=' . $this->mTitle->getPrefixedUrl() );
- $wgOut->setSubtitle( $logLink );
-
- $feedType = $wgRequest->getVal( 'feed' );
- if( $feedType ) {
- wfProfileOut( __METHOD__ );
- return $this->feed( $feedType );
- }
-
- /*
- * Fail if article doesn't exist.
- */
- if( !$this->mTitle->exists() ) {
- $wgOut->addWikiMsg( 'nohistory' );
- wfProfileOut( __METHOD__ );
- return;
- }
-
- /**
- * Add date selector to quickly get to a certain time
- */
- $year = $wgRequest->getInt( 'year' );
- $month = $wgRequest->getInt( 'month' );
- $tagFilter = $wgRequest->getVal( 'tagfilter' );
- $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
-
- $action = htmlspecialchars( $wgScript );
- $wgOut->addHTML(
- "<form action=\"$action\" method=\"get\" id=\"mw-history-searchform\">" .
- Xml::fieldset( wfMsg( 'history-fieldset-title' ), false, array( 'id' => 'mw-history-search' ) ) .
- Xml::hidden( 'title', $this->mTitle->getPrefixedDBKey() ) . "\n" .
- Xml::hidden( 'action', 'history' ) . "\n" .
- xml::dateMenu( $year, $month ) . '&nbsp;' .
- ( $tagSelector ? ( implode( '&nbsp;', $tagSelector ) . '&nbsp;' ) : '' ) .
- Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
- '</fieldset></form>'
- );
-
- wfRunHooks( 'PageHistoryBeforeList', array( &$this->mArticle ) );
-
- /**
- * Do the list
- */
- $pager = new PageHistoryPager( $this, $year, $month, $tagFilter );
- $this->linesonpage = $pager->getNumRows();
- $wgOut->addHTML(
- $pager->getNavigationBar() .
- $this->beginHistoryList() .
- $pager->getBody() .
- $this->endHistoryList() .
- $pager->getNavigationBar()
- );
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Creates begin of history list with a submit button
- *
- * @return string HTML output
- */
- function beginHistoryList() {
- global $wgTitle, $wgScript, $wgEnableHtmlDiff;
- $this->lastdate = '';
- $s = wfMsgExt( 'histlegend', array( 'parse') );
- $s .= Xml::openElement( 'form', array( 'action' => $wgScript, 'id' => 'mw-history-compare' ) );
- $s .= Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() );
- if( $wgEnableHtmlDiff ) {
- $s .= $this->submitButton( wfMsg( 'visualcomparison'),
- array(
- 'name' => 'htmldiff',
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-visualcomparison' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- $s .= $this->submitButton( wfMsg( 'wikicodecomparison'),
- array(
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- } else {
- $s .= $this->submitButton( wfMsg( 'compareselectedversions'),
- array(
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- }
- $s .= '<ul id="pagehistory">' . "\n";
- return $s;
- }
-
- /**
- * Creates end of history list with a submit button
- *
- * @return string HTML output
- */
- function endHistoryList() {
- global $wgEnableHtmlDiff;
- $s = '</ul>';
- if( $wgEnableHtmlDiff ) {
- $s .= $this->submitButton( wfMsg( 'visualcomparison'),
- array(
- 'name' => 'htmldiff',
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-visualcomparison' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- $s .= $this->submitButton( wfMsg( 'wikicodecomparison'),
- array(
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- } else {
- $s .= $this->submitButton( wfMsg( 'compareselectedversions'),
- array(
- 'class' => 'historysubmit',
- 'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
- )
- );
- }
- $s .= '</form>';
- return $s;
- }
-
- /**
- * Creates a submit button
- *
- * @param array $attributes attributes
- * @return string HTML output for the submit button
- */
- function submitButton($message, $attributes = array() ) {
- # Disable submit button if history has 1 revision only
- if( $this->linesonpage > 1 ) {
- return Xml::submitButton( $message , $attributes );
- } else {
- return '';
- }
- }
-
- /**
- * Returns a row from the history printout.
- *
- * @todo document some more, and maybe clean up the code (some params redundant?)
- *
- * @param Row $row The database row corresponding to the previous line.
- * @param mixed $next The database row corresponding to the next line.
- * @param int $counter Apparently a counter of what row number we're at, counted from the top row = 1.
- * @param $notificationtimestamp
- * @param bool $latest Whether this row corresponds to the page's latest revision.
- * @param bool $firstInList Whether this row corresponds to the first displayed on this history page.
- * @return string HTML output for the row
- */
- function historyLine( $row, $next, $counter = '', $notificationtimestamp = false, $latest = false, $firstInList = false ) {
- global $wgUser, $wgLang;
- $rev = new Revision( $row );
- $rev->setTitle( $this->mTitle );
-
- $curlink = $this->curLink( $rev, $latest );
- $lastlink = $this->lastLink( $rev, $next, $counter );
- $arbitrary = $this->diffButtons( $rev, $firstInList, $counter );
- $link = $this->revLink( $rev );
- $classes = array();
-
- $s = "($curlink) ($lastlink) $arbitrary";
-
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- if( $latest ) {
- // We don't currently handle well changing the top revision's settings
- $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.$this->message['rev-delundel'].')' );
- } else if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.$this->message['rev-delundel'].')' );
- } else {
- $query = array( 'target' => $this->mTitle->getPrefixedDbkey(),
- 'oldid' => $rev->getId()
- );
- $del = $this->mSkin->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) );
- }
- $s .= " $del ";
- }
-
- $s .= " $link";
- $s .= " <span class='history-user'>" . $this->mSkin->revUserTools( $rev, true ) . "</span>";
-
- if( $rev->isMinor() ) {
- $s .= ' ' . Xml::element( 'span', array( 'class' => 'minor' ), wfMsg( 'minoreditletter') );
- }
-
- if( !is_null( $size = $rev->getSize() ) && !$rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $s .= ' ' . $this->mSkin->formatRevisionSize( $size );
- }
-
- $s .= $this->mSkin->revComment( $rev, false, true );
-
- if( $notificationtimestamp && ($row->rev_timestamp >= $notificationtimestamp) ) {
- $s .= ' <span class="updatedmarker">' . wfMsgHtml( 'updatedmarker' ) . '</span>';
- }
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $s .= ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- }
-
- $tools = array();
-
- if( !is_null( $next ) && is_object( $next ) ) {
- if( $latest && $this->mTitle->userCan( 'rollback' ) && $this->mTitle->userCan( 'edit' ) ) {
- $tools[] = '<span class="mw-rollback-link">'.$this->mSkin->buildRollbackLink( $rev ).'</span>';
- }
-
- if( $this->mTitle->quickUserCan( 'edit' ) && !$rev->isDeleted( Revision::DELETED_TEXT ) &&
- !$next->rev_deleted & Revision::DELETED_TEXT )
- {
- # Create undo tooltip for the first (=latest) line only
- $undoTooltip = $latest
- ? array( 'title' => wfMsg( 'tooltip-undo' ) )
- : array();
- $undolink = $this->mSkin->link(
- $this->mTitle,
- wfMsgHtml( 'editundo' ),
- $undoTooltip,
- array( 'action' => 'edit', 'undoafter' => $next->rev_id, 'undo' => $rev->getId() ),
- array( 'known', 'noclasses' )
- );
- $tools[] = "<span class=\"mw-history-undo\">{$undolink}</span>";
- }
- }
-
- if( $tools ) {
- $s .= ' (' . $wgLang->pipeList( $tools ) . ')';
- }
-
- # Tags
- list($tagSummary, $newClasses) = ChangeTags::formatSummaryRow( $row->ts_tags, 'history' );
- $classes = array_merge( $classes, $newClasses );
- $s .= " $tagSummary";
-
- wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s ) );
-
- $classes = implode( ' ', $classes );
-
- return "<li class=\"$classes\">$s</li>\n";
- }
-
- /**
- * Create a link to view this revision of the page
- * @param Revision $rev
- * @returns string
- */
- function revLink( $rev ) {
- global $wgLang;
- $date = $wgLang->timeanddate( wfTimestamp(TS_MW, $rev->getTimestamp()), true );
- if( !$rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $link = $this->mSkin->makeKnownLinkObj( $this->mTitle, $date, "oldid=" . $rev->getId() );
- } else {
- $link = '<span class="history-deleted">' . $date . '</span>';
- }
- return $link;
- }
-
- /**
- * Create a diff-to-current link for this revision for this page
- * @param Revision $rev
- * @param Bool $latest, this is the latest revision of the page?
- * @returns string
- */
- function curLink( $rev, $latest ) {
- $cur = $this->message['cur'];
- if( $latest || $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- return $cur;
- } else {
- return $this->mSkin->makeKnownLinkObj( $this->mTitle, $cur,
- 'diff=' . $this->mTitle->getLatestRevID() . "&oldid=" . $rev->getId() );
- }
- }
-
- /**
- * Create a diff-to-previous link for this revision for this page.
- * @param Revision $prevRev, the previous revision
- * @param mixed $next, the newer revision
- * @param int $counter, what row on the history list this is
- * @returns string
- */
- function lastLink( $prevRev, $next, $counter ) {
- $last = $this->message['last'];
- # $next may either be a Row, null, or "unkown"
- $nextRev = is_object($next) ? new Revision( $next ) : $next;
- if( is_null($next) ) {
- # Probably no next row
- return $last;
- } elseif( $next === 'unknown' ) {
- # Next row probably exists but is unknown, use an oldid=prev link
- return $this->mSkin->makeKnownLinkObj( $this->mTitle, $last,
- "diff=" . $prevRev->getId() . "&oldid=prev" );
- } elseif( $prevRev->isDeleted(Revision::DELETED_TEXT) || $nextRev->isDeleted(Revision::DELETED_TEXT) ) {
- return $last;
- } else {
- return $this->mSkin->makeKnownLinkObj( $this->mTitle, $last,
- "diff=" . $prevRev->getId() . "&oldid={$next->rev_id}" );
- }
- }
-
- /**
- * Create radio buttons for page history
- *
- * @param object $rev Revision
- * @param bool $firstInList Is this version the first one?
- * @param int $counter A counter of what row number we're at, counted from the top row = 1.
- * @return string HTML output for the radio buttons
- */
- function diffButtons( $rev, $firstInList, $counter ) {
- if( $this->linesonpage > 1 ) {
- $radio = array( 'type' => 'radio', 'value' => $rev->getId() );
- /** @todo: move title texts to javascript */
- if( $firstInList ) {
- $first = Xml::element( 'input',
- array_merge( $radio, array( 'style' => 'visibility:hidden', 'name' => 'oldid' ) )
- );
- $checkmark = array( 'checked' => 'checked' );
- } else {
- # Check visibility of old revisions
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $radio['disabled'] = 'disabled';
- $checkmark = array(); // We will check the next possible one
- } else if( $counter == 2 || !$this->mOldIdChecked ) {
- $checkmark = array( 'checked' => 'checked' );
- $this->mOldIdChecked = $rev->getId();
- } else {
- $checkmark = array();
- }
- $first = Xml::element( 'input', array_merge( $radio, $checkmark, array( 'name' => 'oldid' ) ) );
- $checkmark = array();
- }
- $second = Xml::element( 'input', array_merge( $radio, $checkmark, array( 'name' => 'diff' ) ) );
- return $first . $second;
- } else {
- return '';
- }
- }
-
- /**
- * Fetch an array of revisions, specified by a given limit, offset and
- * direction. This is now only used by the feeds. It was previously
- * used by the main UI but that's now handled by the pager.
- */
- function fetchRevisions($limit, $offset, $direction) {
- $dbr = wfGetDB( DB_SLAVE );
-
- if( $direction == PageHistory::DIR_PREV )
- list($dirs, $oper) = array("ASC", ">=");
- else /* $direction == PageHistory::DIR_NEXT */
- list($dirs, $oper) = array("DESC", "<=");
-
- if( $offset )
- $offsets = array("rev_timestamp $oper '$offset'");
- else
- $offsets = array();
-
- $page_id = $this->mTitle->getArticleID();
-
- return $dbr->select( 'revision',
- Revision::selectFields(),
- array_merge(array("rev_page=$page_id"), $offsets),
- __METHOD__,
- array( 'ORDER BY' => "rev_timestamp $dirs",
- 'USE INDEX' => 'page_timestamp', 'LIMIT' => $limit)
- );
- }
-
- /**
- * Output a subscription feed listing recent edits to this page.
- * @param string $type
- */
- function feed( $type ) {
- global $wgFeedClasses, $wgRequest, $wgFeedLimit;
- if( !FeedUtils::checkFeedOutput($type) ) {
- return;
- }
-
- $feed = new $wgFeedClasses[$type](
- $this->mTitle->getPrefixedText() . ' - ' .
- wfMsgForContent( 'history-feed-title' ),
- wfMsgForContent( 'history-feed-description' ),
- $this->mTitle->getFullUrl( 'action=history' ) );
-
- // Get a limit on number of feed entries. Provide a sane default
- // of 10 if none is defined (but limit to $wgFeedLimit max)
- $limit = $wgRequest->getInt( 'limit', 10 );
- if( $limit > $wgFeedLimit || $limit < 1 ) {
- $limit = 10;
- }
- $items = $this->fetchRevisions($limit, 0, PageHistory::DIR_NEXT);
-
- $feed->outHeader();
- if( $items ) {
- foreach( $items as $row ) {
- $feed->outItem( $this->feedItem( $row ) );
- }
- } else {
- $feed->outItem( $this->feedEmpty() );
- }
- $feed->outFooter();
- }
-
- function feedEmpty() {
- global $wgOut;
- return new FeedItem(
- wfMsgForContent( 'nohistory' ),
- $wgOut->parse( wfMsgForContent( 'history-feed-empty' ) ),
- $this->mTitle->getFullUrl(),
- wfTimestamp( TS_MW ),
- '',
- $this->mTitle->getTalkPage()->getFullUrl() );
- }
-
- /**
- * Generate a FeedItem object from a given revision table row
- * Borrows Recent Changes' feed generation functions for formatting;
- * includes a diff to the previous revision (if any).
- *
- * @param $row
- * @return FeedItem
- */
- function feedItem( $row ) {
- $rev = new Revision( $row );
- $rev->setTitle( $this->mTitle );
- $text = FeedUtils::formatDiffRow( $this->mTitle,
- $this->mTitle->getPreviousRevisionID( $rev->getId() ),
- $rev->getId(),
- $rev->getTimestamp(),
- $rev->getComment() );
-
- if( $rev->getComment() == '' ) {
- global $wgContLang;
- $title = wfMsgForContent( 'history-feed-item-nocomment',
- $rev->getUserText(),
- $wgContLang->timeanddate( $rev->getTimestamp() ) );
- } else {
- $title = $rev->getUserText() . wfMsgForContent( 'colon-separator' ) . FeedItem::stripComment( $rev->getComment() );
- }
-
- return new FeedItem(
- $title,
- $text,
- $this->mTitle->getFullUrl( 'diff=' . $rev->getId() . '&oldid=prev' ),
- $rev->getTimestamp(),
- $rev->getUserText(),
- $this->mTitle->getTalkPage()->getFullUrl() );
- }
-}
-
-
-/**
- * @ingroup Pager
- */
-class PageHistoryPager extends ReverseChronologicalPager {
- public $mLastRow = false, $mPageHistory, $mTitle;
-
- function __construct( $pageHistory, $year='', $month='', $tagFilter = '' ) {
- parent::__construct();
- $this->mPageHistory = $pageHistory;
- $this->mTitle =& $this->mPageHistory->mTitle;
- $this->tagFilter = $tagFilter;
- $this->getDateCond( $year, $month );
- }
-
- function getQueryInfo() {
- $queryInfo = array(
- 'tables' => array('revision'),
- 'fields' => array_merge( Revision::selectFields(), array('ts_tags') ),
- 'conds' => array('rev_page' => $this->mPageHistory->mTitle->getArticleID() ),
- 'options' => array( 'USE INDEX' => array('revision' => 'page_timestamp') ),
- 'join_conds' => array( 'tag_summary' => array( 'LEFT JOIN', 'ts_rev_id=rev_id' ) ),
- );
- ChangeTags::modifyDisplayQuery( $queryInfo['tables'],
- $queryInfo['fields'],
- $queryInfo['conds'],
- $queryInfo['join_conds'],
- $queryInfo['options'],
- $this->tagFilter );
- wfRunHooks( 'PageHistoryPager::getQueryInfo', array( &$this, &$queryInfo ) );
- return $queryInfo;
- }
-
- function getIndexField() {
- return 'rev_timestamp';
- }
-
- function formatRow( $row ) {
- if( $this->mLastRow ) {
- $latest = $this->mCounter == 1 && $this->mIsFirst;
- $firstInList = $this->mCounter == 1;
- $s = $this->mPageHistory->historyLine( $this->mLastRow, $row, $this->mCounter++,
- $this->mTitle->getNotificationTimestamp(), $latest, $firstInList );
- } else {
- $s = '';
- }
- $this->mLastRow = $row;
- return $s;
- }
-
- function getStartBody() {
- $this->mLastRow = false;
- $this->mCounter = 1;
- return '';
- }
-
- function getEndBody() {
- if( $this->mLastRow ) {
- $latest = $this->mCounter == 1 && $this->mIsFirst;
- $firstInList = $this->mCounter == 1;
- if( $this->mIsBackwards ) {
- # Next row is unknown, but for UI reasons, probably exists if an offset has been specified
- if( $this->mOffset == '' ) {
- $next = null;
- } else {
- $next = 'unknown';
- }
- } else {
- # The next row is the past-the-end row
- $next = $this->mPastTheEndRow;
- }
- $s = $this->mPageHistory->historyLine( $this->mLastRow, $next, $this->mCounter++,
- $this->mTitle->getNotificationTimestamp(), $latest, $firstInList );
- } else {
- $s = '';
- }
- return $s;
- }
-}
diff --git a/includes/Pager.php b/includes/Pager.php
index 8faec533..e5eef1fc 100644
--- a/includes/Pager.php
+++ b/includes/Pager.php
@@ -50,7 +50,7 @@ interface Pager {
* last page depending on the dir parameter.
*
* Subclassing the pager to implement concrete functionality should be fairly
- * simple, please see the examples in PageHistory.php and
+ * simple, please see the examples in HistoryPage.php and
* SpecialIpblocklist.php. You just need to override formatRow(),
* getQueryInfo() and getIndexField(). Don't forget to call the parent
* constructor if you override it.
@@ -67,11 +67,12 @@ abstract class IndexPager implements Pager {
public $mPastTheEndRow;
/**
- * The index to actually be used for ordering. This is a single string e-
- * ven if multiple orderings are supported.
+ * The index to actually be used for ordering. This is a single string
+ * even if multiple orderings are supported.
*/
protected $mIndexField;
- /** For pages that support multiple types of ordering, which one to use. */
+ /** For pages that support multiple types of ordering, which one to use.
+ */
protected $mOrderType;
/**
* $mDefaultDirection gives the direction to use when sorting results:
@@ -87,6 +88,9 @@ abstract class IndexPager implements Pager {
public $mDefaultDirection;
public $mIsBackwards;
+ /** True if the current result set is the first one */
+ public $mIsFirst;
+
/**
* Result object for the query. Warning: seek before use.
*/
@@ -145,7 +149,11 @@ abstract class IndexPager implements Pager {
# Plus an extra row so that we can tell the "next" link should be shown
$queryLimit = $this->mLimit + 1;
- $this->mResult = $this->reallyDoQuery( $this->mOffset, $queryLimit, $descending );
+ $this->mResult = $this->reallyDoQuery(
+ $this->mOffset,
+ $queryLimit,
+ $descending
+ );
$this->extractResultInfo( $this->mOffset, $queryLimit, $this->mResult );
$this->mQueryDone = true;
@@ -154,14 +162,14 @@ abstract class IndexPager implements Pager {
wfProfileOut( $fname );
}
-
+
/**
* Return the result wrapper.
*/
function getResult() {
return $this->mResult;
}
-
+
/**
* Set the offset from an other source than $wgRequest
*/
@@ -226,6 +234,13 @@ abstract class IndexPager implements Pager {
}
/**
+ * Get some text to go in brackets in the "function name" part of the SQL comment
+ */
+ function getSqlComment() {
+ return get_class( $this );
+ }
+
+ /**
* Do a query with specified parameters, rather than using the object
* context
*
@@ -235,7 +250,7 @@ abstract class IndexPager implements Pager {
* @return ResultWrapper
*/
function reallyDoQuery( $offset, $limit, $descending ) {
- $fname = __METHOD__ . ' (' . get_class( $this ) . ')';
+ $fname = __METHOD__ . ' (' . $this->getSqlComment() . ')';
$info = $this->getQueryInfo();
$tables = $info['tables'];
$fields = $info['fields'];
@@ -314,8 +329,13 @@ abstract class IndexPager implements Pager {
if( $type ) {
$attrs['class'] = "mw-{$type}link";
}
- return $this->getSkin()->link( $this->getTitle(), $text,
- $attrs, $query + $this->getDefaultQuery(), array('noclasses','known') );
+ return $this->getSkin()->link(
+ $this->getTitle(),
+ $text,
+ $attrs,
+ $query + $this->getDefaultQuery(),
+ array( 'noclasses', 'known' )
+ );
}
/**
@@ -404,7 +424,11 @@ abstract class IndexPager implements Pager {
$prev = false;
$first = false;
} else {
- $prev = array( 'dir' => 'prev', 'offset' => $this->mFirstShown, 'limit' => $urlLimit );
+ $prev = array(
+ 'dir' => 'prev',
+ 'offset' => $this->mFirstShown,
+ 'limit' => $urlLimit
+ );
$first = array( 'limit' => $urlLimit );
}
if ( $this->mIsLast ) {
@@ -414,7 +438,20 @@ abstract class IndexPager implements Pager {
$next = array( 'offset' => $this->mLastShown, 'limit' => $urlLimit );
$last = array( 'dir' => 'prev', 'limit' => $urlLimit );
}
- return array( 'prev' => $prev, 'next' => $next, 'first' => $first, 'last' => $last );
+ return array(
+ 'prev' => $prev,
+ 'next' => $next,
+ 'first' => $first,
+ 'last' => $last
+ );
+ }
+
+ function isNavigationBarShown() {
+ if ( !$this->mQueryDone ) {
+ $this->doQuery();
+ }
+ // Hide navigation by default if there is nothing to page
+ return !($this->mIsFirst && $this->mIsLast);
}
/**
@@ -428,7 +465,11 @@ abstract class IndexPager implements Pager {
$links = array();
foreach ( $queries as $type => $query ) {
if ( $query !== false ) {
- $links[$type] = $this->makeLink( $linkTexts[$type], $queries[$type], $type );
+ $links[$type] = $this->makeLink(
+ $linkTexts[$type],
+ $queries[$type],
+ $type
+ );
} elseif ( isset( $disabledTexts[$type] ) ) {
$links[$type] = $disabledTexts[$type];
} else {
@@ -447,8 +488,11 @@ abstract class IndexPager implements Pager {
$offset = $this->mOffset;
}
foreach ( $this->mLimitsShown as $limit ) {
- $links[] = $this->makeLink( $wgLang->formatNum( $limit ),
- array( 'offset' => $offset, 'limit' => $limit ), 'num' );
+ $links[] = $this->makeLink(
+ $wgLang->formatNum( $limit ),
+ array( 'offset' => $offset, 'limit' => $limit ),
+ 'num'
+ );
}
return $links;
}
@@ -468,6 +512,7 @@ abstract class IndexPager implements Pager {
* fields => Field(s) for passing to Database::select(), may be *
* conds => WHERE conditions
* options => option array
+ * join_conds => JOIN conditions
*/
abstract function getQueryInfo();
@@ -516,14 +561,24 @@ abstract class AlphabeticPager extends IndexPager {
function getNavigationBar() {
global $wgLang;
+ if ( !$this->isNavigationBarShown() ) return '';
+
if( isset( $this->mNavigationBar ) ) {
return $this->mNavigationBar;
}
$opts = array( 'parsemag', 'escapenoentities' );
$linkTexts = array(
- 'prev' => wfMsgExt( 'prevn', $opts, $wgLang->formatNum( $this->mLimit ) ),
- 'next' => wfMsgExt( 'nextn', $opts, $wgLang->formatNum($this->mLimit ) ),
+ 'prev' => wfMsgExt(
+ 'prevn',
+ $opts,
+ $wgLang->formatNum( $this->mLimit )
+ ),
+ 'next' => wfMsgExt(
+ 'nextn',
+ $opts,
+ $wgLang->formatNum($this->mLimit )
+ ),
'first' => wfMsgExt( 'page_first', $opts ),
'last' => wfMsgExt( 'page_last', $opts )
);
@@ -533,7 +588,10 @@ abstract class AlphabeticPager extends IndexPager {
$limits = $wgLang->pipeList( $limitLinks );
$this->mNavigationBar =
- "(" . $wgLang->pipeList( array( $pagingLinks['first'], $pagingLinks['last'] ) ) . ") " .
+ "(" . $wgLang->pipeList(
+ array( $pagingLinks['first'],
+ $pagingLinks['last'] )
+ ) . ") " .
wfMsgHtml( 'viewprevnext', $pagingLinks['prev'],
$pagingLinks['next'], $limits );
@@ -597,13 +655,23 @@ abstract class ReverseChronologicalPager extends IndexPager {
function getNavigationBar() {
global $wgLang;
+ if ( !$this->isNavigationBarShown() ) return '';
+
if ( isset( $this->mNavigationBar ) ) {
return $this->mNavigationBar;
}
$nicenumber = $wgLang->formatNum( $this->mLimit );
$linkTexts = array(
- 'prev' => wfMsgExt( 'pager-newer-n', array( 'parsemag' ), $nicenumber ),
- 'next' => wfMsgExt( 'pager-older-n', array( 'parsemag' ), $nicenumber ),
+ 'prev' => wfMsgExt(
+ 'pager-newer-n',
+ array( 'parsemag', 'escape' ),
+ $nicenumber
+ ),
+ 'next' => wfMsgExt(
+ 'pager-older-n',
+ array( 'parsemag', 'escape' ),
+ $nicenumber
+ ),
'first' => wfMsgHtml( 'histlast' ),
'last' => wfMsgHtml( 'histfirst' )
);
@@ -612,11 +680,17 @@ abstract class ReverseChronologicalPager extends IndexPager {
$limitLinks = $this->getLimitLinks();
$limits = $wgLang->pipeList( $limitLinks );
- $this->mNavigationBar = "({$pagingLinks['first']}" . wfMsgExt( 'pipe-separator' , 'escapenoentities' ) . "{$pagingLinks['last']}) " .
- wfMsgHtml("viewprevnext", $pagingLinks['prev'], $pagingLinks['next'], $limits);
+ $this->mNavigationBar = "({$pagingLinks['first']}" .
+ wfMsgExt( 'pipe-separator' , 'escapenoentities' ) .
+ "{$pagingLinks['last']}) " .
+ wfMsgHTML(
+ 'viewprevnext',
+ $pagingLinks['prev'], $pagingLinks['next'],
+ $limits
+ );
return $this->mNavigationBar;
}
-
+
function getDateCond( $year, $month ) {
$year = intval($year);
$month = intval($month);
@@ -745,27 +819,50 @@ abstract class TablePager extends IndexPager {
}
function formatRow( $row ) {
- $rowClass = $this->getRowClass( $row );
- $s = "<tr class=\"$rowClass\">\n";
+ $this->mCurrentRow = $row; # In case formatValue etc need to know
+ $s = Xml::openElement( 'tr', $this->getRowAttrs($row) );
$fieldNames = $this->getFieldNames();
- $this->mCurrentRow = $row; # In case formatValue needs to know
foreach ( $fieldNames as $field => $name ) {
$value = isset( $row->$field ) ? $row->$field : null;
$formatted = strval( $this->formatValue( $field, $value ) );
if ( $formatted == '' ) {
$formatted = '&nbsp;';
}
- $class = 'TablePager_col_' . htmlspecialchars( $field );
- $s .= "<td class=\"$class\">$formatted</td>\n";
+ $s .= Xml::tags( 'td', $this->getCellAttrs( $field, $value ), $formatted );
}
$s .= "</tr>\n";
return $s;
}
- function getRowClass($row) {
+ /**
+ * Get a class name to be applied to the given row.
+ * @param object $row The database result row
+ */
+ function getRowClass( $row ) {
return '';
}
+ /**
+ * Get attributes to be applied to the given row.
+ * @param object $row The database result row
+ * @return associative array
+ */
+ function getRowAttrs( $row ) {
+ return array( 'class' => $this->getRowClass( $row ) );
+ }
+
+ /**
+ * Get any extra attributes to be applied to the given cell. Don't
+ * take this as an excuse to hardcode styles; use classes and
+ * CSS instead. Row context is available in $this->mCurrentRow
+ * @param $field The column
+ * @param $value The cell contents
+ * @return associative array
+ */
+ function getCellAttrs( $field, $value ) {
+ return array( 'class' => 'TablePager_col_' . $field );
+ }
+
function getIndexField() {
return $this->mSort;
}
@@ -787,6 +884,9 @@ abstract class TablePager extends IndexPager {
*/
function getNavigationBar() {
global $wgStylePath, $wgContLang;
+
+ if ( !$this->isNavigationBarShown() ) return '';
+
$path = "$wgStylePath/common/images";
$labels = array(
'first' => 'table_pager_first',
@@ -795,24 +895,29 @@ abstract class TablePager extends IndexPager {
'last' => 'table_pager_last',
);
$images = array(
- 'first' => $wgContLang->isRTL() ? 'arrow_last_25.png' : 'arrow_first_25.png',
- 'prev' => $wgContLang->isRTL() ? 'arrow_right_25.png' : 'arrow_left_25.png',
- 'next' => $wgContLang->isRTL() ? 'arrow_left_25.png' : 'arrow_right_25.png',
- 'last' => $wgContLang->isRTL() ? 'arrow_first_25.png' : 'arrow_last_25.png',
+ 'first' => 'arrow_first_25.png',
+ 'prev' => 'arrow_left_25.png',
+ 'next' => 'arrow_right_25.png',
+ 'last' => 'arrow_last_25.png',
);
$disabledImages = array(
- 'first' => $wgContLang->isRTL() ? 'arrow_disabled_last_25.png' : 'arrow_disabled_first_25.png',
- 'prev' => $wgContLang->isRTL() ? 'arrow_disabled_right_25.png' : 'arrow_disabled_left_25.png',
- 'next' => $wgContLang->isRTL() ? 'arrow_disabled_left_25.png' : 'arrow_disabled_right_25.png',
- 'last' => $wgContLang->isRTL() ? 'arrow_disabled_first_25.png' : 'arrow_disabled_last_25.png',
+ 'first' => 'arrow_disabled_first_25.png',
+ 'prev' => 'arrow_disabled_left_25.png',
+ 'next' => 'arrow_disabled_right_25.png',
+ 'last' => 'arrow_disabled_last_25.png',
);
+ if( $wgContLang->isRTL() ) {
+ $keys = array_keys( $labels );
+ $images = array_combine( $keys, array_reverse( $images ) );
+ $disabledImages = array_combine( $keys, array_reverse( $disabledImages ) );
+ }
$linkTexts = array();
$disabledTexts = array();
foreach ( $labels as $type => $label ) {
$msgLabel = wfMsgHtml( $label );
- $linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br/>$msgLabel";
- $disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br/>$msgLabel";
+ $linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
+ $disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
}
$links = $this->getPagingLinks( $linkTexts, $disabledTexts );
@@ -832,10 +937,19 @@ abstract class TablePager extends IndexPager {
function getLimitSelect() {
global $wgLang;
$s = "<select name=\"limit\">";
- foreach ( $this->mLimitsShown as $limit ) {
- $selected = $limit == $this->mLimit ? 'selected="selected"' : '';
- $formattedLimit = $wgLang->formatNum( $limit );
- $s .= "<option value=\"$limit\" $selected>$formattedLimit</option>\n";
+ foreach ( $this->mLimitsShown as $key => $value ) {
+ # The pair is either $index => $limit, in which case the $value
+ # will be numeric, or $limit => $text, in which case the $value
+ # will be a string.
+ if( is_int( $value ) ){
+ $limit = $value;
+ $text = $wgLang->formatNum( $limit );
+ } else {
+ $limit = $key;
+ $text = $value;
+ }
+ $selected = ( $limit == $this->mLimit ? 'selected="selected"' : '' );
+ $s .= "<option value=\"$limit\" $selected>$text</option>\n";
}
$s .= "</select>";
return $s;
@@ -865,14 +979,21 @@ abstract class TablePager extends IndexPager {
* Get a form containing a limit selection dropdown
*/
function getLimitForm() {
+ global $wgScript;
+
# Make the select with some explanatory text
- $url = $this->getTitle()->escapeLocalURL();
$msgSubmit = wfMsgHtml( 'table_pager_limit_submit' );
return
- "<form method=\"get\" action=\"$url\">" .
+ Xml::openElement(
+ 'form',
+ array(
+ 'method' => 'get',
+ 'action' => $wgScript
+ )
+ ) . "\n" .
wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) .
"\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
- $this->getHiddenFields( array('limit','title') ) .
+ $this->getHiddenFields( array( 'limit' ) ) .
"</form>\n";
}
diff --git a/includes/PatrolLog.php b/includes/PatrolLog.php
index 978821c1..5727853e 100644
--- a/includes/PatrolLog.php
+++ b/includes/PatrolLog.php
@@ -11,8 +11,8 @@ class PatrolLog {
/**
* Record a log event for a change being patrolled
*
- * @param mixed $change Change identifier or RecentChange object
- * @param bool $auto Was this patrol event automatic?
+ * @param $rc Mixed: change identifier or RecentChange object
+ * @param $auto Boolean: was this patrol event automatic?
*/
public static function record( $rc, $auto = false ) {
if( !( $rc instanceof RecentChange ) ) {
@@ -33,22 +33,30 @@ class PatrolLog {
/**
* Generate the log action text corresponding to a patrol log item
*
- * @param Title $title Title of the page that was patrolled
- * @param array $params Log parameters (from logging.log_params)
- * @param Skin $skin Skin to use for building links, etc.
- * @return string
+ * @param $title Title of the page that was patrolled
+ * @param $params Array: log parameters (from logging.log_params)
+ * @param $skin Skin to use for building links, etc.
+ * @return String
*/
public static function makeActionText( $title, $params, $skin ) {
list( $cur, /* $prev */, $auto ) = $params;
if( is_object( $skin ) ) {
# Standard link to the page in question
- $link = $skin->makeLinkObj( $title );
+ $link = $skin->link( $title );
if( $title->exists() ) {
# Generate a diff link
- $bits[] = 'oldid=' . urlencode( $cur );
- $bits[] = 'diff=prev';
- $bits = implode( '&', $bits );
- $diff = $skin->makeKnownLinkObj( $title, htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) ), $bits );
+ $query = array(
+ 'oldid' => $cur,
+ 'diff' => 'prev'
+ );
+
+ $diff = $skin->link(
+ $title,
+ htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) ),
+ array(),
+ $query,
+ array( 'known', 'noclasses' )
+ );
} else {
# Don't bother with a diff link, it's useless
$diff = htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) );
@@ -66,9 +74,9 @@ class PatrolLog {
/**
* Prepare log parameters for a patrolled change
*
- * @param RecentChange $change RecentChange to represent
- * @param bool $auto Whether the patrol event was automatic
- * @return array
+ * @param $change RecentChange to represent
+ * @param $auto Boolean: whether the patrol event was automatic
+ * @return Array
*/
private static function buildParams( $change, $auto ) {
return array(
diff --git a/includes/PoolCounter.php b/includes/PoolCounter.php
new file mode 100644
index 00000000..2564fbc6
--- /dev/null
+++ b/includes/PoolCounter.php
@@ -0,0 +1,64 @@
+<?php
+
+abstract class PoolCounter {
+ public static function factory( $type, $key ) {
+ global $wgPoolCounterConf;
+ if ( !isset( $wgPoolCounterConf[$type] ) ) {
+ return new PoolCounter_Stub;
+ }
+ $conf = $wgPoolCounterConf[$type];
+ $class = $conf['class'];
+ return new $class( $conf, $type, $key );
+ }
+
+ abstract public function acquire();
+ abstract public function release();
+ abstract public function wait();
+
+ public function executeProtected( $mainCallback, $dirtyCallback = false ) {
+ $status = $this->acquire();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ if ( !empty( $status->value['overload'] ) ) {
+ # Overloaded. Try a dirty cache entry.
+ if ( $dirtyCallback ) {
+ if ( call_user_func( $dirtyCallback ) ) {
+ $this->release();
+ return Status::newGood();
+ }
+ }
+
+ # Wait for a thread
+ $status = $this->wait();
+ if ( !$status->isOK() ) {
+ $this->release();
+ return $status;
+ }
+ }
+ # Call the main callback
+ call_user_func( $mainCallback );
+ return $this->release();
+ }
+}
+
+class PoolCounter_Stub extends PoolCounter {
+ public function acquire() {
+ return Status::newGood();
+ }
+
+ public function release() {
+ return Status::newGood();
+ }
+
+ public function wait() {
+ return Status::newGood();
+ }
+
+ public function executeProtected( $mainCallback, $dirtyCallback = false ) {
+ call_user_func( $mainCallback );
+ return Status::newGood();
+ }
+}
+
+
diff --git a/includes/Preferences.php b/includes/Preferences.php
new file mode 100644
index 00000000..70d88ec9
--- /dev/null
+++ b/includes/Preferences.php
@@ -0,0 +1,1389 @@
+<?php
+
+/**
+ * We're now using the HTMLForm object with some customisation to generate the
+ * Preferences form. This object handles generic submission, CSRF protection,
+ * layout and other logic in a reusable manner. We subclass it as a PreferencesForm
+ * to make some minor customisations.
+ *
+ * In order to generate the form, the HTMLForm object needs an array structure
+ * detailing the form fields available, and that's what this class is for. Each
+ * element of the array is a basic property-list, including the type of field,
+ * the label it is to be given in the form, callbacks for validation and
+ * 'filtering', and other pertinent information. Note that the 'default' field
+ * is named for generic forms, and does not represent the preference's default
+ * (which is stored in $wgDefaultUserOptions), but the default for the form
+ * field, which should be whatever the user has set for that preference. There
+ * is no need to override it unless you have some special storage logic (for
+ * instance, those not presently stored as options, but which are best set from
+ * the user preferences view).
+ *
+ * Field types are implemented as subclasses of the generic HTMLFormField
+ * object, and typically implement at least getInputHTML, which generates the
+ * HTML for the input field to be placed in the table.
+ *
+ * Once fields have been retrieved and validated, submission logic is handed
+ * over to the tryUISubmit static method of this class.
+ */
+class Preferences {
+ static $defaultPreferences = null;
+ static $saveFilters =
+ array(
+ 'timecorrection' => array( 'Preferences', 'filterTimezoneInput' ),
+ );
+
+ static function getPreferences( $user ) {
+ if ( self::$defaultPreferences )
+ return self::$defaultPreferences;
+
+ global $wgRCMaxAge;
+
+ $defaultPreferences = array();
+
+ self::profilePreferences( $user, $defaultPreferences );
+ self::skinPreferences( $user, $defaultPreferences );
+ self::filesPreferences( $user, $defaultPreferences );
+ self::mathPreferences( $user, $defaultPreferences );
+ self::datetimePreferences( $user, $defaultPreferences );
+ self::renderingPreferences( $user, $defaultPreferences );
+ self::editingPreferences( $user, $defaultPreferences );
+ self::rcPreferences( $user, $defaultPreferences );
+ self::watchlistPreferences( $user, $defaultPreferences );
+ self::searchPreferences( $user, $defaultPreferences );
+ self::miscPreferences( $user, $defaultPreferences );
+
+ wfRunHooks( 'GetPreferences', array( $user, &$defaultPreferences ) );
+
+ ## Remove preferences that wikis don't want to use
+ global $wgHiddenPrefs;
+ foreach ( $wgHiddenPrefs as $pref ) {
+ if ( isset( $defaultPreferences[$pref] ) ) {
+ unset( $defaultPreferences[$pref] );
+ }
+ }
+
+ ## Prod in defaults from the user
+ global $wgDefaultUserOptions;
+ foreach( $defaultPreferences as $name => &$info ) {
+ $prefFromUser = self::getOptionFromUser( $name, $info, $user );
+ $field = HTMLForm::loadInputFromParameters( $info ); // For validation
+ $defaultOptions = User::getDefaultOptions();
+ $globalDefault = isset( $defaultOptions[$name] )
+ ? $defaultOptions[$name]
+ : null;
+
+ // If it validates, set it as the default
+ if ( isset( $info['default'] ) ) {
+ // Already set, no problem
+ continue;
+ } elseif ( !is_null( $prefFromUser ) && // Make sure we're not just pulling nothing
+ $field->validate( $prefFromUser, $user->mOptions ) === true ) {
+ $info['default'] = $prefFromUser;
+ } elseif( $field->validate( $globalDefault, $user->mOptions ) === true ) {
+ $info['default'] = $globalDefault;
+ } else {
+ throw new MWException( "Global default '$globalDefault' is invalid for field $name" );
+ }
+ }
+
+ self::$defaultPreferences = $defaultPreferences;
+
+ return $defaultPreferences;
+ }
+
+ // Pull option from a user account. Handles stuff like array-type preferences.
+ static function getOptionFromUser( $name, $info, $user ) {
+ $val = $user->getOption( $name );
+
+ // Handling for array-type preferences
+ if ( ( isset( $info['type'] ) && $info['type'] == 'multiselect' ) ||
+ ( isset( $info['class'] ) && $info['class'] == 'HTMLMultiSelectField' ) ) {
+
+ $options = HTMLFormField::flattenOptions( $info['options'] );
+ $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
+ $val = array();
+
+ foreach( $options as $label => $value ) {
+ if( $user->getOption( "$prefix$value" ) ) {
+ $val[] = $value;
+ }
+ }
+ }
+
+ return $val;
+ }
+
+ static function profilePreferences( $user, &$defaultPreferences ) {
+ global $wgLang, $wgUser;
+ ## User info #####################################
+ // Information panel
+ $defaultPreferences['username'] =
+ array(
+ 'type' => 'info',
+ 'label-message' => 'username',
+ 'default' => $user->getName(),
+ 'section' => 'personal/info',
+ );
+
+ $defaultPreferences['userid'] =
+ array(
+ 'type' => 'info',
+ 'label-message' => 'uid',
+ 'default' => $user->getId(),
+ 'section' => 'personal/info',
+ );
+
+ # Get groups to which the user belongs
+ $userEffectiveGroups = $user->getEffectiveGroups();
+ $userGroups = $userMembers = array();
+ foreach( $userEffectiveGroups as $ueg ) {
+ if( $ueg == '*' ) {
+ // Skip the default * group, seems useless here
+ continue;
+ }
+ $groupName = User::getGroupName( $ueg );
+ $userGroups[] = User::makeGroupLinkHTML( $ueg, $groupName );
+
+ $memberName = User::getGroupMember( $ueg );
+ $userMembers[] = User::makeGroupLinkHTML( $ueg, $memberName );
+ }
+ asort( $userGroups );
+ asort( $userMembers );
+
+ $defaultPreferences['usergroups'] =
+ array(
+ 'type' => 'info',
+ 'label' => wfMsgExt( 'prefs-memberingroups', 'parseinline',
+ $wgLang->formatNum( count($userGroups) ) ),
+ 'default' => wfMsgExt( 'prefs-memberingroups-type', array(),
+ $wgLang->commaList( $userGroups ),
+ $wgLang->commaList( $userMembers )
+ ),
+ 'raw' => true,
+ 'section' => 'personal/info',
+ );
+
+ $defaultPreferences['editcount'] =
+ array(
+ 'type' => 'info',
+ 'label-message' => 'prefs-edits',
+ 'default' => $wgLang->formatNum( $user->getEditCount() ),
+ 'section' => 'personal/info',
+ );
+
+ if( $user->getRegistration() ) {
+ $defaultPreferences['registrationdate'] =
+ array(
+ 'type' => 'info',
+ 'label-message' => 'prefs-registration',
+ 'default' => wfMsgExt( 'prefs-registration-date-time', 'parsemag',
+ $wgLang->timeanddate( $user->getRegistration(), true ),
+ $wgLang->date( $user->getRegistration(), true ),
+ $wgLang->time( $user->getRegistration(), true ) ),
+ 'section' => 'personal/info',
+ );
+ }
+
+ // Actually changeable stuff
+ global $wgAuth;
+ $defaultPreferences['realname'] =
+ array(
+ 'type' => $wgAuth->allowPropChange( 'realname' ) ? 'text' : 'info',
+ 'default' => $user->getRealName(),
+ 'section' => 'personal/info',
+ 'label-message' => 'yourrealname',
+ 'help-message' => 'prefs-help-realname',
+ );
+
+ $defaultPreferences['gender'] =
+ array(
+ 'type' => 'select',
+ 'section' => 'personal/info',
+ 'options' => array(
+ wfMsg( 'gender-male' ) => 'male',
+ wfMsg( 'gender-female' ) => 'female',
+ wfMsg( 'gender-unknown' ) => 'unknown',
+ ),
+ 'label-message' => 'yourgender',
+ 'help-message' => 'prefs-help-gender',
+ );
+
+ if( $wgAuth->allowPasswordChange() ) {
+ $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'Resetpass' ),
+ wfMsgHtml( 'prefs-resetpass' ), array(),
+ array( 'returnto' => SpecialPage::getTitleFor( 'Preferences' ) ) );
+
+ $defaultPreferences['password'] =
+ array(
+ 'type' => 'info',
+ 'raw' => true,
+ 'default' => $link,
+ 'label-message' => 'yourpassword',
+ 'section' => 'personal/info',
+ );
+ }
+
+ $defaultPreferences['rememberpassword'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'tog-rememberpassword',
+ 'section' => 'personal/info',
+ );
+
+ // Language
+ global $wgContLanguageCode;
+ $languages = array_reverse( Language::getLanguageNames( false ) );
+ if( !array_key_exists( $wgContLanguageCode, $languages ) ) {
+ $languages[$wgContLanguageCode] = $wgContLanguageCode;
+ }
+ ksort( $languages );
+
+ $options = array();
+ foreach( $languages as $code => $name ) {
+ $display = wfBCP47( $code ) . ' - ' . $name;
+ $options[$display] = $code;
+ }
+ $defaultPreferences['language'] =
+ array(
+ 'type' => 'select',
+ 'section' => 'personal/i18n',
+ 'options' => $options,
+ 'label-message' => 'yourlanguage',
+ );
+
+ global $wgContLang, $wgDisableLangConversion;
+ global $wgDisableTitleConversion;
+ /* see if there are multiple language variants to choose from*/
+ $variantArray = array();
+ if( !$wgDisableLangConversion ) {
+ $variants = $wgContLang->getVariants();
+
+ $languages = Language::getLanguageNames( true );
+ foreach( $variants as $v ) {
+ $v = str_replace( '_', '-', strtolower( $v ) );
+ if( array_key_exists( $v, $languages ) ) {
+ // If it doesn't have a name, we'll pretend it doesn't exist
+ $variantArray[$v] = $languages[$v];
+ }
+ }
+
+ $options = array();
+ foreach( $variantArray as $code => $name ) {
+ $display = wfBCP47( $code ) . ' - ' . $name;
+ $options[$display] = $code;
+ }
+
+ if( count( $variantArray ) > 1 ) {
+ $defaultPreferences['variant'] =
+ array(
+ 'label-message' => 'yourvariant',
+ 'type' => 'select',
+ 'options' => $options,
+ 'section' => 'personal/i18n',
+ );
+ }
+ }
+
+ if( count( $variantArray ) > 1 && !$wgDisableLangConversion && !$wgDisableTitleConversion ) {
+ $defaultPreferences['noconvertlink'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/i18n',
+ 'label-message' => 'tog-noconvertlink',
+ );
+ }
+
+ global $wgMaxSigChars, $wgOut, $wgParser;
+
+ // show a preview of the old signature first
+ $oldsigWikiText = $wgParser->preSaveTransform( "~~~", new Title , $user, new ParserOptions );
+ $oldsigHTML = $wgOut->parseInline( $oldsigWikiText );
+ $defaultPreferences['oldsig'] =
+ array(
+ 'type' => 'info',
+ 'raw' => true,
+ 'label-message' => 'tog-oldsig',
+ 'default' => $oldsigHTML,
+ 'section' => 'personal/signature',
+ );
+ $defaultPreferences['nickname'] =
+ array(
+ 'type' => $wgAuth->allowPropChange( 'nickname' ) ? 'text' : 'info',
+ 'maxlength' => $wgMaxSigChars,
+ 'label-message' => 'yournick',
+ 'validation-callback' =>
+ array( 'Preferences', 'validateSignature' ),
+ 'section' => 'personal/signature',
+ 'filter-callback' => array( 'Preferences', 'cleanSignature' ),
+ );
+ $defaultPreferences['fancysig'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'tog-fancysig',
+ 'help-message' => 'prefs-help-signature', // show general help about signature at the bottom of the section
+ 'section' => 'personal/signature'
+ );
+
+ ## Email stuff
+
+ global $wgEnableEmail;
+ if ($wgEnableEmail) {
+
+ global $wgEmailConfirmToEdit;
+
+ $defaultPreferences['emailaddress'] =
+ array(
+ 'type' => $wgAuth->allowPropChange( 'emailaddress' ) ? 'email' : 'info',
+ 'default' => $user->getEmail(),
+ 'section' => 'personal/email',
+ 'label-message' => 'youremail',
+ 'help-message' => $wgEmailConfirmToEdit
+ ? 'prefs-help-email-required'
+ : 'prefs-help-email',
+ 'validation-callback' => array( 'Preferences', 'validateEmail' ),
+ );
+
+ global $wgEnableUserEmail, $wgEmailAuthentication;
+
+ $disableEmailPrefs = false;
+
+ if ( $wgEmailAuthentication ) {
+ if ( $user->getEmail() ) {
+ if( $user->getEmailAuthenticationTimestamp() ) {
+ // date and time are separate parameters to facilitate localisation.
+ // $time is kept for backward compat reasons.
+ // 'emailauthenticated' is also used in SpecialConfirmemail.php
+ $time = $wgLang->timeAndDate( $user->getEmailAuthenticationTimestamp(), true );
+ $d = $wgLang->date( $user->getEmailAuthenticationTimestamp(), true );
+ $t = $wgLang->time( $user->getEmailAuthenticationTimestamp(), true );
+ $emailauthenticated = wfMsgExt( 'emailauthenticated', 'parseinline',
+ array($time, $d, $t ) ) . '<br />';
+ $disableEmailPrefs = false;
+ } else {
+ $disableEmailPrefs = true;
+ $skin = $wgUser->getSkin();
+ $emailauthenticated = wfMsgExt( 'emailnotauthenticated', 'parseinline' ) . '<br />' .
+ $skin->link(
+ SpecialPage::getTitleFor( 'Confirmemail' ),
+ wfMsg( 'emailconfirmlink' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . '<br />';
+ }
+ } else {
+ $disableEmailPrefs = true;
+ $emailauthenticated = wfMsgHtml( 'noemailprefs' );
+ }
+
+ $defaultPreferences['emailauthentication'] =
+ array(
+ 'type' => 'info',
+ 'raw' => true,
+ 'section' => 'personal/email',
+ 'label-message' => 'prefs-emailconfirm-label',
+ 'default' => $emailauthenticated,
+ );
+
+ }
+
+ if( $wgEnableUserEmail && $user->isAllowed( 'sendemail' ) ) {
+ $defaultPreferences['disablemail'] =
+ array(
+ 'type' => 'toggle',
+ 'invert' => true,
+ 'section' => 'personal/email',
+ 'label-message' => 'allowemail',
+ 'disabled' => $disableEmailPrefs,
+ );
+ $defaultPreferences['ccmeonemails'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-ccmeonemails',
+ 'disabled' => $disableEmailPrefs,
+ );
+ }
+
+ global $wgEnotifWatchlist;
+ if ( $wgEnotifWatchlist ) {
+ $defaultPreferences['enotifwatchlistpages'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifwatchlistpages',
+ 'disabled' => $disableEmailPrefs,
+ );
+ }
+ global $wgEnotifUserTalk;
+ if( $wgEnotifUserTalk ) {
+ $defaultPreferences['enotifusertalkpages'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifusertalkpages',
+ 'disabled' => $disableEmailPrefs,
+ );
+ }
+ if( $wgEnotifUserTalk || $wgEnotifWatchlist ) {
+ $defaultPreferences['enotifminoredits'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifminoredits',
+ 'disabled' => $disableEmailPrefs,
+ );
+ }
+ $defaultPreferences['enotifrevealaddr'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifrevealaddr',
+ 'disabled' => $disableEmailPrefs,
+ );
+ }
+ }
+
+ static function skinPreferences( $user, &$defaultPreferences ) {
+ ## Skin #####################################
+ $defaultPreferences['skin'] =
+ array(
+ 'type' => 'radio',
+ 'options' => self::generateSkinOptions( $user ),
+ 'label' => '&nbsp;',
+ 'section' => 'rendering/skin',
+ );
+
+ $selectedSkin = $user->getOption( 'skin' );
+ if ( in_array( $selectedSkin, array( 'cologneblue', 'standard' ) ) ) {
+ global $wgLang;
+ $settings = array_flip( $wgLang->getQuickbarSettings() );
+
+ $defaultPreferences['quickbar'] =
+ array(
+ 'type' => 'radio',
+ 'options' => $settings,
+ 'section' => 'rendering/skin',
+ 'label-message' => 'qbsettings',
+ );
+ }
+ }
+
+ static function mathPreferences( $user, &$defaultPreferences ) {
+ ## Math #####################################
+ global $wgUseTeX, $wgLang;
+ if( $wgUseTeX ) {
+ $defaultPreferences['math'] =
+ array(
+ 'type' => 'radio',
+ 'options' =>
+ array_flip( array_map( 'wfMsgHtml', $wgLang->getMathNames() ) ),
+ 'label' => '&nbsp;',
+ 'section' => 'rendering/math',
+ );
+ }
+ }
+
+ static function filesPreferences( $user, &$defaultPreferences ) {
+ ## Files #####################################
+ $defaultPreferences['imagesize'] =
+ array(
+ 'type' => 'select',
+ 'options' => self::getImageSizes(),
+ 'label-message' => 'imagemaxsize',
+ 'section' => 'rendering/files',
+ );
+ $defaultPreferences['thumbsize'] =
+ array(
+ 'type' => 'select',
+ 'options' => self::getThumbSizes(),
+ 'label-message' => 'thumbsize',
+ 'section' => 'rendering/files',
+ );
+ }
+
+ static function datetimePreferences( $user, &$defaultPreferences ) {
+ global $wgLang;
+
+ ## Date and time #####################################
+ $dateOptions = self::getDateOptions();
+ if( $dateOptions ) {
+ $defaultPreferences['date'] =
+ array(
+ 'type' => 'radio',
+ 'options' => $dateOptions,
+ 'label' => '&nbsp;',
+ 'section' => 'datetime/dateformat',
+ );
+ }
+
+ // Info
+ $nowlocal = Xml::element( 'span', array( 'id' => 'wpLocalTime' ),
+ $wgLang->time( $now = wfTimestampNow(), true ) );
+ $nowserver = $wgLang->time( $now, false ) .
+ Xml::hidden( 'wpServerTime', substr( $now, 8, 2 ) * 60 + substr( $now, 10, 2 ) );
+
+ $defaultPreferences['nowserver'] =
+ array(
+ 'type' => 'info',
+ 'raw' => 1,
+ 'label-message' => 'servertime',
+ 'default' => $nowserver,
+ 'section' => 'datetime/timeoffset',
+ );
+
+ $defaultPreferences['nowlocal'] =
+ array(
+ 'type' => 'info',
+ 'raw' => 1,
+ 'label-message' => 'localtime',
+ 'default' => $nowlocal,
+ 'section' => 'datetime/timeoffset',
+ );
+
+ // Grab existing pref.
+ $tzOffset = $user->getOption( 'timecorrection' );
+ $tz = explode( '|', $tzOffset, 2 );
+
+ $tzSetting = $tzOffset;
+ if( count( $tz ) > 1 && $tz[0] == 'Offset' ) {
+ $minDiff = $tz[1];
+ $tzSetting = sprintf( '%+03d:%02d', floor( $minDiff/60 ), abs( $minDiff )%60 );
+ }
+
+ $defaultPreferences['timecorrection'] =
+ array(
+ 'class' => 'HTMLSelectOrOtherField',
+ 'label-message' => 'timezonelegend',
+ 'options' => self::getTimezoneOptions(),
+ 'default' => $tzSetting,
+ 'size' => 20,
+ 'section' => 'datetime/timeoffset',
+ );
+ }
+
+ static function renderingPreferences( $user, &$defaultPreferences ) {
+ ## Page Rendering ##############################
+ $defaultPreferences['underline'] =
+ array(
+ 'type' => 'select',
+ 'options' => array(
+ wfMsg( 'underline-never' ) => 0,
+ wfMsg( 'underline-always' ) => 1,
+ wfMsg( 'underline-default' ) => 2,
+ ),
+ 'label-message' => 'tog-underline',
+ 'section' => 'rendering/advancedrendering',
+ );
+
+ $stubThresholdValues = array( 0, 50, 100, 500, 1000, 2000, 5000, 10000 );
+ $stubThresholdOptions = array();
+ foreach( $stubThresholdValues as $value ) {
+ $stubThresholdOptions[wfMsg( 'size-bytes', $value )] = $value;
+ }
+
+ $defaultPreferences['stubthreshold'] =
+ array(
+ 'type' => 'selectorother',
+ 'section' => 'rendering/advancedrendering',
+ 'options' => $stubThresholdOptions,
+ 'size' => 20,
+ 'label' => wfMsg( 'stub-threshold' ), // Raw HTML message. Yay?
+ );
+ $defaultPreferences['highlightbroken'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label' => wfMsg( 'tog-highlightbroken' ), // Raw HTML
+ );
+ $defaultPreferences['showtoc'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label-message' => 'tog-showtoc',
+ );
+ $defaultPreferences['nocache'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'tog-nocache',
+ 'section' => 'rendering/advancedrendering',
+ );
+ $defaultPreferences['showhiddencats'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label-message' => 'tog-showhiddencats'
+ );
+ $defaultPreferences['showjumplinks'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label-message' => 'tog-showjumplinks',
+ );
+ $defaultPreferences['justify'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label-message' => 'tog-justify',
+ );
+ $defaultPreferences['numberheadings'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rendering/advancedrendering',
+ 'label-message' => 'tog-numberheadings',
+ );
+ }
+
+ static function editingPreferences( $user, &$defaultPreferences ) {
+ global $wgUseExternalEditor, $wgLivePreview;
+
+ ## Editing #####################################
+ $defaultPreferences['cols'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'columns',
+ 'section' => 'editing/textboxsize',
+ 'min' => 4,
+ 'max' => 1000,
+ );
+ $defaultPreferences['rows'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'rows',
+ 'section' => 'editing/textboxsize',
+ 'min' => 4,
+ 'max' => 1000,
+ );
+
+ $defaultPreferences['editfont'] =
+ array(
+ 'type' => 'select',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'editfont-style',
+ 'options' => array(
+ wfMsg( 'editfont-default' ) => 'default',
+ wfMsg( 'editfont-monospace' ) => 'monospace',
+ wfMsg( 'editfont-sansserif' ) => 'sans-serif',
+ wfMsg( 'editfont-serif' ) => 'serif',
+ )
+ );
+ $defaultPreferences['previewontop'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-previewontop',
+ );
+ $defaultPreferences['previewonfirst'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-previewonfirst',
+ );
+ $defaultPreferences['editsection'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-editsection',
+ );
+ $defaultPreferences['editsectiononrightclick'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-editsectiononrightclick',
+ );
+ $defaultPreferences['editondblclick'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-editondblclick',
+ );
+ $defaultPreferences['editwidth'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-editwidth',
+ );
+ $defaultPreferences['showtoolbar'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-showtoolbar',
+ );
+ $defaultPreferences['minordefault'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-minordefault',
+ );
+
+ if ( $wgUseExternalEditor ) {
+ $defaultPreferences['externaleditor'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-externaleditor',
+ );
+ $defaultPreferences['externaldiff'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-externaldiff',
+ );
+ }
+
+ $defaultPreferences['forceeditsummary'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-forceeditsummary',
+ );
+ if ( $wgLivePreview ) {
+ $defaultPreferences['uselivepreview'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-uselivepreview',
+ );
+ }
+ }
+
+ static function rcPreferences( $user, &$defaultPreferences ) {
+ global $wgRCMaxAge, $wgUseRCPatrol, $wgLang;
+ ## RecentChanges #####################################
+ $defaultPreferences['rcdays'] =
+ array(
+ 'type' => 'float',
+ 'label-message' => 'recentchangesdays',
+ 'section' => 'rc/display',
+ 'min' => 1,
+ 'max' => ceil( $wgRCMaxAge / ( 3600*24 ) ),
+ 'help' => wfMsgExt( 'recentchangesdays-max', array( 'parsemag' ), $wgLang->formatNum( ceil( $wgRCMaxAge / ( 3600*24 ) ) ) ),
+ );
+ $defaultPreferences['rclimit'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'recentchangescount',
+ 'help-message' => 'prefs-help-recentchangescount',
+ 'section' => 'rc/display',
+ );
+ $defaultPreferences['usenewrc'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'tog-usenewrc',
+ 'section' => 'rc/advancedrc',
+ );
+ $defaultPreferences['hideminor'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'tog-hideminor',
+ 'section' => 'rc/advancedrc',
+ );
+
+ if( $wgUseRCPatrol ) {
+ $defaultPreferences['hidepatrolled'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rc/advancedrc',
+ 'label-message' => 'tog-hidepatrolled',
+ );
+ $defaultPreferences['newpageshidepatrolled'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rc/advancedrc',
+ 'label-message' => 'tog-newpageshidepatrolled',
+ );
+ }
+
+ global $wgRCShowWatchingUsers;
+ if( $wgRCShowWatchingUsers ) {
+ $defaultPreferences['shownumberswatching'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'rc/advancedrc',
+ 'label-message' => 'tog-shownumberswatching',
+ );
+ }
+ }
+
+ static function watchlistPreferences( $user, &$defaultPreferences ) {
+ global $wgUseRCPatrol, $wgEnableAPI;
+ ## Watchlist #####################################
+ $defaultPreferences['watchlistdays'] =
+ array(
+ 'type' => 'float',
+ 'min' => 0,
+ 'max' => 7,
+ 'section' => 'watchlist/display',
+ 'help' => wfMsgHtml( 'prefs-watchlist-days-max' ),
+ 'label-message' => 'prefs-watchlist-days',
+ );
+ $defaultPreferences['wllimit'] =
+ array(
+ 'type' => 'int',
+ 'min' => 0,
+ 'max' => 1000,
+ 'label-message' => 'prefs-watchlist-edits',
+ 'help' => wfMsgHtml( 'prefs-watchlist-edits-max' ),
+ 'section' => 'watchlist/display',
+ );
+ $defaultPreferences['extendwatchlist'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-extendwatchlist',
+ );
+ $defaultPreferences['watchlisthideminor'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthideminor',
+ );
+ $defaultPreferences['watchlisthidebots'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthidebots',
+ );
+ $defaultPreferences['watchlisthideown'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthideown',
+ );
+ $defaultPreferences['watchlisthideanons'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthideanons',
+ );
+ $defaultPreferences['watchlisthideliu'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthideliu',
+ );
+ if ( $wgEnableAPI ) {
+ # Some random gibberish as a proposed default
+ $hash = sha1( mt_rand() . microtime( true ) );
+ $defaultPreferences['watchlisttoken'] =
+ array(
+ 'type' => 'text',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'prefs-watchlist-token',
+ 'help' => wfMsgHtml( 'prefs-help-watchlist-token', $hash )
+ );
+ }
+
+ if ( $wgUseRCPatrol ) {
+ $defaultPreferences['watchlisthidepatrolled'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => 'tog-watchlisthidepatrolled',
+ );
+ }
+
+ $watchTypes = array(
+ 'edit' => 'watchdefault',
+ 'move' => 'watchmoves',
+ 'delete' => 'watchdeletion'
+ );
+
+ // Kinda hacky
+ if( $user->isAllowed( 'createpage' ) || $user->isAllowed( 'createtalk' ) ) {
+ $watchTypes['read'] = 'watchcreations';
+ }
+
+ foreach( $watchTypes as $action => $pref ) {
+ if ( $user->isAllowed( $action ) ) {
+ $defaultPreferences[$pref] = array(
+ 'type' => 'toggle',
+ 'section' => 'watchlist/advancedwatchlist',
+ 'label-message' => "tog-$pref",
+ );
+ }
+ }
+ }
+
+ static function searchPreferences( $user, &$defaultPreferences ) {
+ global $wgContLang;
+
+ ## Search #####################################
+ $defaultPreferences['searchlimit'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'resultsperpage',
+ 'section' => 'searchoptions/display',
+ 'min' => 0,
+ );
+ $defaultPreferences['contextlines'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'contextlines',
+ 'section' => 'searchoptions/display',
+ 'min' => 0,
+ );
+ $defaultPreferences['contextchars'] =
+ array(
+ 'type' => 'int',
+ 'label-message' => 'contextchars',
+ 'section' => 'searchoptions/display',
+ 'min' => 0,
+ );
+ global $wgEnableMWSuggest;
+ if( $wgEnableMWSuggest ) {
+ $defaultPreferences['disablesuggest'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'mwsuggest-disable',
+ 'section' => 'searchoptions/display',
+ );
+ }
+
+ $defaultPreferences['searcheverything'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'searcheverything-enable',
+ 'section' => 'searchoptions/advancedsearchoptions',
+ );
+
+ // Searchable namespaces back-compat with old format
+ $searchableNamespaces = SearchEngine::searchableNamespaces();
+
+ $nsOptions = array();
+ foreach( $wgContLang->getNamespaces() as $ns => $name ) {
+ if( $ns < 0 ) continue;
+ $displayNs = str_replace( '_', ' ', $name );
+
+ if( !$displayNs ) $displayNs = wfMsg( 'blanknamespace' );
+
+ $displayNs = htmlspecialchars( $displayNs );
+ $nsOptions[$displayNs] = $ns;
+ }
+
+ $defaultPreferences['searchnamespaces'] =
+ array(
+ 'type' => 'multiselect',
+ 'label-message' => 'defaultns',
+ 'options' => $nsOptions,
+ 'section' => 'searchoptions/advancedsearchoptions',
+ 'prefix' => 'searchNs',
+ );
+ }
+
+ static function miscPreferences( $user, &$defaultPreferences ) {
+ ## Misc #####################################
+ $defaultPreferences['diffonly'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'misc/diffs',
+ 'label-message' => 'tog-diffonly',
+ );
+ $defaultPreferences['norollbackdiff'] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'misc/diffs',
+ 'label-message' => 'tog-norollbackdiff',
+ );
+
+ // Stuff from Language::getExtraUserToggles()
+ global $wgContLang;
+
+ $toggles = $wgContLang->getExtraUserToggles();
+
+ foreach( $toggles as $toggle ) {
+ $defaultPreferences[$toggle] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/i18n',
+ 'label-message' => "tog-$toggle",
+ );
+ }
+ }
+
+ /**
+ * @param object $user The user object
+ * @return array Text/links to display as key; $skinkey as value
+ */
+ static function generateSkinOptions( $user ) {
+ global $wgDefaultSkin, $wgLang, $wgAllowUserCss, $wgAllowUserJs;
+ $ret = array();
+
+ $mptitle = Title::newMainPage();
+ $previewtext = wfMsgHtml( 'skin-preview' );
+ # Only show members of Skin::getSkinNames() rather than
+ # $skinNames (skins is all skin names from Language.php)
+ $validSkinNames = Skin::getUsableSkins();
+ # Sort by UI skin name. First though need to update validSkinNames as sometimes
+ # the skinkey & UI skinname differ (e.g. "standard" skinkey is "Classic" in the UI).
+ foreach ( $validSkinNames as $skinkey => &$skinname ) {
+ $msgName = "skinname-{$skinkey}";
+ $localisedSkinName = wfMsg( $msgName );
+ if ( !wfEmptyMsg( $msgName, $localisedSkinName ) ) {
+ $skinname = htmlspecialchars( $localisedSkinName );
+ }
+ }
+ asort( $validSkinNames );
+ $sk = $user->getSkin();
+
+ foreach( $validSkinNames as $skinkey => $sn ) {
+ $linkTools = array();
+
+ # Mark the default skin
+ if( $skinkey == $wgDefaultSkin ) {
+ $linkTools[] = wfMsgHtml( 'default' );
+ }
+
+ # Create preview link
+ $mplink = htmlspecialchars( $mptitle->getLocalURL( "useskin=$skinkey" ) );
+ $linkTools[] = "<a target='_blank' href=\"$mplink\">$previewtext</a>";
+
+ # Create links to user CSS/JS pages
+ if( $wgAllowUserCss ) {
+ $cssPage = Title::makeTitleSafe( NS_USER, $user->getName() . '/' . $skinkey . '.css' );
+ $linkTools[] = $sk->link( $cssPage, wfMsgHtml( 'prefs-custom-css' ) );
+ }
+ if( $wgAllowUserJs ) {
+ $jsPage = Title::makeTitleSafe( NS_USER, $user->getName() . '/' . $skinkey . '.js' );
+ $linkTools[] = $sk->link( $jsPage, wfMsgHtml( 'prefs-custom-js' ) );
+ }
+
+ $display = $sn . ' ' . wfMsg( 'parentheses', $wgLang->pipeList( $linkTools ) );
+ $ret[$display] = $skinkey;
+ }
+
+ return $ret;
+ }
+
+ static function getDateOptions() {
+ global $wgLang;
+ $dateopts = $wgLang->getDatePreferences();
+
+ $ret = array();
+
+ if( $dateopts ) {
+ if ( !in_array( 'default', $dateopts ) ) {
+ $dateopts[] = 'default'; // Make sure default is always valid
+ // Bug 19237
+ }
+
+ $idCnt = 0;
+ $epoch = wfTimestampNow();
+ foreach( $dateopts as $key ) {
+ if( $key == 'default' ) {
+ $formatted = wfMsgHtml( 'datedefault' );
+ } else {
+ $formatted = htmlspecialchars( $wgLang->timeanddate( $epoch, false, $key ) );
+ }
+ $ret[$formatted] = $key;
+ }
+ }
+ return $ret;
+ }
+
+ static function getImageSizes() {
+ global $wgImageLimits;
+
+ $ret = array();
+
+ foreach ( $wgImageLimits as $index => $limits ) {
+ $display = "{$limits[0]}×{$limits[1]}" . wfMsg( 'unit-pixel' );
+ $ret[$display] = $index;
+ }
+
+ return $ret;
+ }
+
+ static function getThumbSizes() {
+ global $wgThumbLimits;
+
+ $ret = array();
+
+ foreach ( $wgThumbLimits as $index => $size ) {
+ $display = $size . wfMsg( 'unit-pixel' );
+ $ret[$display] = $index;
+ }
+
+ return $ret;
+ }
+
+ static function validateSignature( $signature, $alldata ) {
+ global $wgParser, $wgMaxSigChars, $wgLang;
+ if( mb_strlen( $signature ) > $wgMaxSigChars ) {
+ return
+ Xml::element( 'span', array( 'class' => 'error' ),
+ wfMsgExt( 'badsiglength', 'parsemag',
+ $wgLang->formatNum( $wgMaxSigChars )
+ )
+ );
+ } elseif( !empty( $alldata['fancysig'] ) &&
+ false === $wgParser->validateSig( $signature ) ) {
+ return Xml::element( 'span', array( 'class' => 'error' ), wfMsg( 'badsig' ) );
+ } else {
+ return true;
+ }
+ }
+
+ static function cleanSignature( $signature, $alldata ) {
+ global $wgParser;
+ if( $alldata['fancysig'] ) {
+ $signature = $wgParser->cleanSig( $signature );
+ } else {
+ // When no fancy sig used, make sure ~{3,5} get removed.
+ $signature = $wgParser->cleanSigInSig( $signature );
+ }
+
+ return $signature;
+ }
+
+ static function validateEmail( $email, $alldata ) {
+ if ( $email && !User::isValidEmailAddr( $email ) ) {
+ return wfMsgExt( 'invalidemailaddress', 'parseinline' );
+ }
+
+ global $wgEmailConfirmToEdit;
+ if( $wgEmailConfirmToEdit && !$email ) {
+ return wfMsgExt( 'noemailtitle', 'parseinline' );
+ }
+ return true;
+ }
+
+ static function getFormObject( $user ) {
+ $formDescriptor = Preferences::getPreferences( $user );
+ $htmlForm = new PreferencesForm( $formDescriptor, 'prefs' );
+
+ $htmlForm->setSubmitText( wfMsg( 'saveprefs' ) );
+ $htmlForm->setTitle( SpecialPage::getTitleFor( 'Preferences' ) );
+ $htmlForm->setSubmitID( 'prefsubmit' );
+ $htmlForm->setSubmitCallback( array( 'Preferences', 'tryFormSubmit' ) );
+
+ return $htmlForm;
+ }
+
+ static function getTimezoneOptions() {
+ $opt = array();
+
+ global $wgLocalTZoffset;
+
+ $opt[wfMsg( 'timezoneuseserverdefault' )] = "System|$wgLocalTZoffset";
+ $opt[wfMsg( 'timezoneuseoffset' )] = 'other';
+ $opt[wfMsg( 'guesstimezone' )] = 'guess';
+
+ if ( function_exists( 'timezone_identifiers_list' ) ) {
+ # Read timezone list
+ $tzs = timezone_identifiers_list();
+ sort( $tzs );
+
+ $tzRegions = array();
+ $tzRegions['Africa'] = wfMsg( 'timezoneregion-africa' );
+ $tzRegions['America'] = wfMsg( 'timezoneregion-america' );
+ $tzRegions['Antarctica'] = wfMsg( 'timezoneregion-antarctica' );
+ $tzRegions['Arctic'] = wfMsg( 'timezoneregion-arctic' );
+ $tzRegions['Asia'] = wfMsg( 'timezoneregion-asia' );
+ $tzRegions['Atlantic'] = wfMsg( 'timezoneregion-atlantic' );
+ $tzRegions['Australia'] = wfMsg( 'timezoneregion-australia' );
+ $tzRegions['Europe'] = wfMsg( 'timezoneregion-europe' );
+ $tzRegions['Indian'] = wfMsg( 'timezoneregion-indian' );
+ $tzRegions['Pacific'] = wfMsg( 'timezoneregion-pacific' );
+ asort( $tzRegions );
+
+ $prefill = array_fill_keys( array_values( $tzRegions ), array() );
+ $opt = array_merge( $opt, $prefill );
+
+ $now = date_create( 'now' );
+
+ foreach ( $tzs as $tz ) {
+ $z = explode( '/', $tz, 2 );
+
+ # timezone_identifiers_list() returns a number of
+ # backwards-compatibility entries. This filters them out of the
+ # list presented to the user.
+ if ( count( $z ) != 2 || !array_key_exists( $z[0], $tzRegions ) )
+ continue;
+
+ # Localize region
+ $z[0] = $tzRegions[$z[0]];
+
+ $minDiff = floor( timezone_offset_get( timezone_open( $tz ), $now ) / 60 );
+
+ $display = str_replace( '_', ' ', $z[0] . '/' . $z[1] );
+ $value = "ZoneInfo|$minDiff|$tz";
+
+ $opt[$z[0]][$display] = $value;
+ }
+ }
+ return $opt;
+ }
+
+ static function filterTimezoneInput( $tz, $alldata ) {
+ $data = explode( '|', $tz, 3 );
+ switch ( $data[0] ) {
+ case 'ZoneInfo':
+ case 'System':
+ return $tz;
+ default:
+ $data = explode( ':', $tz, 2 );
+ $minDiff = 0;
+ if( count( $data ) == 2 ) {
+ $data[0] = intval( $data[0] );
+ $data[1] = intval( $data[1] );
+ $minDiff = abs( $data[0] ) * 60 + $data[1];
+ if ( $data[0] < 0 ) $minDiff = -$minDiff;
+ } else {
+ $minDiff = intval( $data[0] ) * 60;
+ }
+
+ # Max is +14:00 and min is -12:00, see:
+ # http://en.wikipedia.org/wiki/Timezone
+ $minDiff = min( $minDiff, 840 ); # 14:00
+ $minDiff = max( $minDiff, -720 ); # -12:00
+ return 'Offset|'.$minDiff;
+ }
+ }
+
+ static function tryFormSubmit( $formData, $entryPoint = 'internal' ) {
+ global $wgUser, $wgEmailAuthentication, $wgEnableEmail;
+
+ $result = true;
+
+ // Filter input
+ foreach( array_keys( $formData ) as $name ) {
+ if ( isset( self::$saveFilters[$name] ) ) {
+ $formData[$name] =
+ call_user_func( self::$saveFilters[$name], $formData[$name], $formData );
+ }
+ }
+
+ // Stuff that shouldn't be saved as a preference.
+ $saveBlacklist = array(
+ 'realname',
+ 'emailaddress',
+ );
+
+ if( $wgEnableEmail ) {
+ $newadr = $formData['emailaddress'];
+ $oldadr = $wgUser->getEmail();
+ if( ( $newadr != '' ) && ( $newadr != $oldadr ) ) {
+ # the user has supplied a new email address on the login page
+ # new behaviour: set this new emailaddr from login-page into user database record
+ $wgUser->setEmail( $newadr );
+ # but flag as "dirty" = unauthenticated
+ $wgUser->invalidateEmail();
+ if( $wgEmailAuthentication ) {
+ # Mail a temporary password to the dirty address.
+ # User can come back through the confirmation URL to re-enable email.
+ $result = $wgUser->sendConfirmationMail();
+ if( WikiError::isError( $result ) ) {
+ return wfMsg( 'mailerror', htmlspecialchars( $result->getMessage() ) );
+ } elseif( $entryPoint == 'ui' ) {
+ $result = 'eauth';
+ }
+ }
+ } else {
+ $wgUser->setEmail( $newadr );
+ }
+ if( $oldadr != $newadr ) {
+ wfRunHooks( 'PrefsEmailAudit', array( $wgUser, $oldadr, $newadr ) );
+ }
+ }
+
+ // Fortunately, the realname field is MUCH simpler
+ global $wgHiddenPrefs;
+ if ( !in_array( 'realname', $wgHiddenPrefs ) ) {
+ $realName = $formData['realname'];
+ $wgUser->setRealName( $realName );
+ }
+
+ foreach( $saveBlacklist as $b )
+ unset( $formData[$b] );
+
+ // Keeps old preferences from interfering due to back-compat
+ // code, etc.
+ $wgUser->resetOptions();
+
+ foreach( $formData as $key => $value ) {
+ $wgUser->setOption( $key, $value );
+ }
+
+ $wgUser->saveSettings();
+
+ return $result;
+ }
+
+ public static function tryUISubmit( $formData ) {
+ $res = self::tryFormSubmit( $formData, 'ui' );
+
+ if( $res ) {
+ $urlOptions = array( 'success' );
+ if( $res === 'eauth' )
+ $urlOptions[] = 'eauth';
+
+ $queryString = implode( '&', $urlOptions );
+
+ $url = SpecialPage::getTitleFor( 'Preferences' )->getFullURL( $queryString );
+ global $wgOut;
+ $wgOut->redirect( $url );
+ }
+
+ return true;
+ }
+
+ public static function loadOldSearchNs( $user ) {
+ $searchableNamespaces = SearchEngine::searchableNamespaces();
+ // Back compat with old format
+ $arr = array();
+
+ foreach( $searchableNamespaces as $ns => $name ) {
+ if( $user->getOption( 'searchNs' . $ns ) ) {
+ $arr[] = $ns;
+ }
+ }
+
+ return $arr;
+ }
+}
+
+/** Some tweaks to allow js prefs to work */
+class PreferencesForm extends HTMLForm {
+
+ function wrapForm( $html ) {
+ $html = Xml::tags( 'div', array( 'id' => 'preferences' ), $html );
+
+ return parent::wrapForm( $html );
+ }
+
+ function getButtons() {
+ $html = parent::getButtons();
+
+ global $wgUser;
+
+ $sk = $wgUser->getSkin();
+ $t = SpecialPage::getTitleFor( 'Preferences', 'reset' );
+
+ $html .= "\n" . $sk->link( $t, wfMsgHtml( 'restoreprefs' ) );
+
+ $html = Xml::tags( 'div', array( 'class' => 'mw-prefs-buttons' ), $html );
+
+ return $html;
+ }
+
+ function filterDataForSubmit( $data ) {
+ // Support for separating MultiSelect preferences into multiple preferences
+ // Due to lack of array support.
+ foreach( $this->mFlatFields as $fieldname => $field ) {
+ $info = $field->mParams;
+ if( $field instanceof HTMLMultiSelectField ) {
+ $options = HTMLFormField::flattenOptions( $info['options'] );
+ $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $fieldname;
+
+ foreach( $options as $opt ) {
+ $data["$prefix$opt"] = in_array( $opt, $data[$fieldname] );
+ }
+
+ unset( $data[$fieldname] );
+ }
+ }
+
+ return $data;
+ }
+}
diff --git a/includes/PrefixSearch.php b/includes/PrefixSearch.php
index 10c85930..930b29d4 100644
--- a/includes/PrefixSearch.php
+++ b/includes/PrefixSearch.php
@@ -3,17 +3,18 @@
/**
* PrefixSearch - Handles searching prefixes of titles and finding any page
* names that match. Used largely by the OpenSearch implementation.
- *
+ *
* @ingroup Search
*/
class PrefixSearch {
/**
* Do a prefix search of titles and return a list of matching page names.
- * @param string $search
- * @param int $limit
- * @param array $namespaces - used if query is not explicitely prefixed
- * @return array of strings
+ *
+ * @param $search String
+ * @param $limit Integer
+ * @param $namespaces Array: used if query is not explicitely prefixed
+ * @return Array of strings
*/
public static function titleSearch( $search, $limit, $namespaces=array() ) {
$search = trim( $search );
@@ -21,11 +22,11 @@ class PrefixSearch {
return array(); // Return empty result
}
$namespaces = self::validateNamespaces( $namespaces );
-
+
$title = Title::newFromText( $search );
if( $title && $title->getInterwiki() == '' ) {
$ns = array($title->getNamespace());
- if($ns[0] == NS_MAIN)
+ if($ns[0] == NS_MAIN)
$ns = $namespaces; // no explicit prefix, use default namespaces
return self::searchBackend(
$ns, $title->getText(), $limit );
@@ -39,17 +40,17 @@ class PrefixSearch {
return self::searchBackend(
array($title->getNamespace()), '', $limit );
}
-
+
return self::searchBackend( $namespaces, $search, $limit );
}
/**
* Do a prefix search of titles and return a list of matching page names.
- * @param array $namespaces
- * @param string $search
- * @param int $limit
- * @return array of strings
+ * @param $namespaces Array
+ * @param $search String
+ * @param $limit Integer
+ * @return Array of strings
*/
protected static function searchBackend( $namespaces, $search, $limit ) {
if( count($namespaces) == 1 ){
@@ -69,6 +70,10 @@ class PrefixSearch {
/**
* Prefix search special-case for Special: namespace.
+ *
+ * @param $search String: term
+ * @param $limit Integer: max number of items to return
+ * @return Array
*/
protected static function specialSearch( $search, $limit ) {
global $wgContLang;
@@ -83,6 +88,9 @@ class PrefixSearch {
$keys[$wgContLang->caseFold( $page )] = $page;
}
foreach( $wgContLang->getSpecialPageAliases() as $page => $aliases ) {
+ if( !array_key_exists( $page, SpecialPage::$mList ) ) # bug 20885
+ continue;
+
foreach( $aliases as $alias ) {
$keys[$wgContLang->caseFold( $alias )] = $alias;
}
@@ -107,16 +115,16 @@ class PrefixSearch {
* be automatically capitalized by Title::secureAndSpit()
* later on depending on $wgCapitalLinks)
*
- * @param array $namespaces Namespaces to search in
- * @param string $search term
- * @param int $limit max number of items to return
- * @return array of title strings
+ * @param $namespaces Array: namespaces to search in
+ * @param $search String: term
+ * @param $limit Integer: max number of items to return
+ * @return Array of title strings
*/
protected static function defaultSearchBackend( $namespaces, $search, $limit ) {
$ns = array_shift($namespaces); // support only one namespace
if( in_array(NS_MAIN,$namespaces))
- $ns = NS_MAIN; // if searching on many always default to main
-
+ $ns = NS_MAIN; // if searching on many always default to main
+
// Prepare nested request
$req = new FauxRequest(array (
'action' => 'query',
@@ -143,11 +151,12 @@ class PrefixSearch {
return $srchres;
}
-
+
/**
* Validate an array of numerical namespace indexes
- *
- * @param array $namespaces
+ *
+ * @param $namespaces Array
+ * @return Array
*/
protected static function validateNamespaces($namespaces){
global $wgContLang;
@@ -161,7 +170,7 @@ class PrefixSearch {
if( count($valid) > 0 )
return $valid;
}
-
+
return array( NS_MAIN );
}
}
diff --git a/includes/Profiler.php b/includes/Profiler.php
index 80a6a68a..817b71ab 100644
--- a/includes/Profiler.php
+++ b/includes/Profiler.php
@@ -12,7 +12,7 @@ $wgProfiling = true;
/**
* Begin profiling of a function
- * @param $functioname name of the function we will profile
+ * @param $functionname name of the function we will profile
*/
function wfProfileIn( $functionname ) {
global $wgProfiler;
@@ -21,7 +21,7 @@ function wfProfileIn( $functionname ) {
/**
* Stop profiling of a function
- * @param $functioname name of the function we have profiled
+ * @param $functionname name of the function we have profiled
*/
function wfProfileOut( $functionname = 'missing' ) {
global $wgProfiler;
@@ -31,8 +31,8 @@ function wfProfileOut( $functionname = 'missing' ) {
/**
* Returns a profiling output to be stored in debug file
*
- * @param float $start
- * @param float $elapsed time elapsed since the beginning of the request
+ * @param $start Float
+ * @param $elapsed Float: time elapsed since the beginning of the request
*/
function wfGetProfilingOutput( $start, $elapsed ) {
global $wgProfiler;
@@ -128,6 +128,12 @@ class Profiler {
* called by wfProfileClose()
*/
function close() {
+ global $wgProfiling;
+
+ # Avoid infinite loop
+ if( !$wgProfiling )
+ return;
+
while( count( $this->mWorkStack ) ){
$this->profileOut( 'close' );
}
@@ -253,6 +259,7 @@ class Profiler {
wfProfileOut( '-overhead-total' );
# First, subtract the overhead!
+ $overheadTotal = $overheadMemory = $overheadInternal = array();
foreach( $this->mStack as $entry ){
$fname = $entry[0];
$start = $entry[2];
diff --git a/includes/ProfilerSimpleText.php b/includes/ProfilerSimpleText.php
index 9252e302..d3df3908 100644
--- a/includes/ProfilerSimpleText.php
+++ b/includes/ProfilerSimpleText.php
@@ -21,6 +21,10 @@ class ProfilerSimpleText extends ProfilerSimple {
public $visible=false; /* Show as <PRE> or <!-- ? */
function getFunctionReport() {
+ global $wgRequest;
+ if ( $wgRequest->getVal( 'action' ) == 'raw' ) # bug 20388
+ return;
+
if ($this->visible) print "<pre>";
else print "<!--\n";
uasort($this->mCollated,array('self','sort'));
diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php
index 5fe3cbc7..28df01ac 100644
--- a/includes/ProtectionForm.php
+++ b/includes/ProtectionForm.php
@@ -38,9 +38,9 @@ class ProtectionForm {
/** Map of action to "other" expiry time. Used in preference to mExpirySelection. */
var $mExpiry = array();
- /**
- * Map of action to value selected in expiry drop-down list.
- * Will be set to 'othertime' whenever mExpiry is set.
+ /**
+ * Map of action to value selected in expiry drop-down list.
+ * Will be set to 'othertime' whenever mExpiry is set.
*/
var $mExpirySelection = array();
@@ -54,20 +54,29 @@ class ProtectionForm {
var $mExistingExpiry = array();
function __construct( Article $article ) {
- global $wgRequest, $wgUser;
- global $wgRestrictionTypes, $wgRestrictionLevels;
+ global $wgUser;
+ // Set instance variables.
$this->mArticle = $article;
$this->mTitle = $article->mTitle;
- $this->mApplicableTypes = $this->mTitle->exists() ? $wgRestrictionTypes : array('create');
-
- $this->mCascade = $this->mTitle->areRestrictionsCascading();
-
- // The form will be available in read-only to show levels.
+ $this->mApplicableTypes = $this->mTitle->getRestrictionTypes();
+
+ // Check if the form should be disabled.
+ // If it is, the form will be available in read-only to show levels.
$this->mPermErrors = $this->mTitle->getUserPermissionsErrors('protect',$wgUser);
$this->disabled = wfReadOnly() || $this->mPermErrors != array();
$this->disabledAttrib = $this->disabled
? array( 'disabled' => 'disabled' )
: array();
+
+ $this->loadData();
+ }
+
+ // Loads the current state of protection into the object.
+ function loadData() {
+ global $wgRequest, $wgUser;
+ global $wgRestrictionLevels;
+
+ $this->mCascade = $this->mTitle->areRestrictionsCascading();
$this->mReason = $wgRequest->getText( 'mwProtect-reason' );
$this->mReasonSelection = $wgRequest->getText( 'wpProtectReasonSelection' );
@@ -76,6 +85,8 @@ class ProtectionForm {
foreach( $this->mApplicableTypes as $action ) {
// Fixme: this form currently requires individual selections,
// but the db allows multiples separated by commas.
+
+ // Pull the actual restriction from the DB
$this->mRestrictions[$action] = implode( '', $this->mTitle->getRestrictions( $action ) );
if ( !$this->mRestrictions[$action] ) {
@@ -127,7 +138,7 @@ class ProtectionForm {
}
}
- /**
+ /**
* Get the expiry time for a given action, by combining the relevant inputs.
* Returns a 14-char timestamp or "infinity", or false if the input was invalid
*/
@@ -180,7 +191,7 @@ class ProtectionForm {
list( $cascadeSources, /* $restrictions */ ) = $this->mTitle->getCascadeProtectionSources();
- if ( "" != $err ) {
+ if ( $err != "" ) {
$wgOut->setSubtitle( wfMsgHtml( 'formerror' ) );
$wgOut->addHTML( "<p class='error'>{$err}</p>\n" );
}
@@ -192,11 +203,11 @@ class ProtectionForm {
$titles .= '* [[:' . $title->getPrefixedText() . "]]\n";
}
- $wgOut->wrapWikiMsg( "$1\n$titles", array( 'protect-cascadeon', count($cascadeSources) ) );
+ $wgOut->wrapWikiMsg( "<div id=\"mw-protect-cascadeon\">\n$1\n" . $titles . "</div>", array( 'protect-cascadeon', count($cascadeSources) ) );
}
$sk = $wgUser->getSkin();
- $titleLink = $sk->makeLinkObj( $this->mTitle );
+ $titleLink = $sk->link( $this->mTitle );
$wgOut->setPageTitle( wfMsg( 'protect-title', $this->mTitle->getPrefixedText() ) );
$wgOut->setSubtitle( wfMsg( 'protect-backlink', $titleLink ) );
@@ -218,7 +229,7 @@ class ProtectionForm {
}
function save() {
- global $wgRequest, $wgUser, $wgOut;
+ global $wgRequest, $wgUser;
# Permission check!
if ( $this->disabled ) {
$this->show();
@@ -230,7 +241,7 @@ class ProtectionForm {
$this->show( wfMsg( 'sessionfailure' ) );
return false;
}
-
+
# Create reason string. Use list and/or custom string.
$reasonstr = $this->mReasonSelection;
if ( $reasonstr != 'other' && $this->mReason != '' ) {
@@ -258,7 +269,7 @@ class ProtectionForm {
# to a semi-protected page.
global $wgGroupPermissions;
- $edit_restriction = $this->mRestrictions['edit'];
+ $edit_restriction = isset( $this->mRestrictions['edit'] ) ? $this->mRestrictions['edit'] : '';
$this->mCascade = $wgRequest->getBool( 'mwProtect-cascade' );
if ($this->mCascade && ($edit_restriction != 'protect') &&
!(isset($wgGroupPermissions[$edit_restriction]['protect']) && $wgGroupPermissions[$edit_restriction]['protect'] ) )
@@ -274,7 +285,17 @@ class ProtectionForm {
throw new FatalError( "Unknown error at restriction save time." );
}
- if( $wgRequest->getCheck( 'mwProtectWatch' ) ) {
+ $errorMsg = '';
+ # Give extensions a change to handle added form items
+ if( !wfRunHooks( 'ProtectionForm::save', array($this->mArticle,&$errorMsg) ) ) {
+ throw new FatalError( "Unknown hook error at restriction save time." );
+ }
+ if( $errorMsg != '' ) {
+ $this->show( $errorMsg );
+ return false;
+ }
+
+ if( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
$this->mArticle->doWatch();
} elseif( $this->mTitle->userIsWatching() ) {
$this->mArticle->doUnwatch();
@@ -296,8 +317,8 @@ class ProtectionForm {
$out = '';
if( !$this->disabled ) {
$out .= $this->buildScript();
- $out .= Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->mTitle->getLocalUrl( 'action=protect' ),
+ $out .= Xml::openElement( 'form', array( 'method' => 'post',
+ 'action' => $this->mTitle->getLocalUrl( 'action=protect' ),
'id' => 'mw-Protect-Form', 'onsubmit' => 'ProtectionForm.enableUnchainedInputs(true)' ) );
$out .= Xml::hidden( 'wpEditToken',$wgUser->editToken() );
}
@@ -321,7 +342,7 @@ class ProtectionForm {
$reasonDropDown = Xml::listDropDown( 'wpProtectReasonSelection',
wfMsgForContent( 'protect-dropdown' ),
- wfMsgForContent( 'protect-otherreason-op' ),
+ wfMsgForContent( 'protect-otherreason-op' ),
$this->mReasonSelection,
'mwProtect-reason', 4 );
$scExpiryOptions = wfMsgForContent( 'protect-expiry-options' );
@@ -336,14 +357,14 @@ class ProtectionForm {
$timestamp = $wgLang->timeanddate( $this->mExistingExpiry[$action] );
$d = $wgLang->date( $this->mExistingExpiry[$action] );
$t = $wgLang->time( $this->mExistingExpiry[$action] );
- $expiryFormOptions .=
- Xml::option(
+ $expiryFormOptions .=
+ Xml::option(
wfMsg( 'protect-existing-expiry', $timestamp, $d, $t ),
'existing',
$this->mExpirySelection[$action] == 'existing'
) . "\n";
}
-
+
$expiryFormOptions .= Xml::option( wfMsg( 'protect-othertime-op' ), "othertime" ) . "\n";
foreach( explode(',', $scExpiryOptions) as $option ) {
if ( strpos($option, ":") === false ) {
@@ -375,7 +396,8 @@ class ProtectionForm {
}
# Add custom expiry field
$attribs = array( 'id' => "mwProtect-$action-expires",
- 'onkeyup' => 'ProtectionForm.updateExpiry(this)' ) + $this->disabledAttrib;
+ 'onkeyup' => 'ProtectionForm.updateExpiry(this)',
+ 'onchange' => 'ProtectionForm.updateExpiry(this)' ) + $this->disabledAttrib;
$out .= "<table><tr>
<td class='mw-label'>" .
$mProtectother .
@@ -389,6 +411,8 @@ class ProtectionForm {
Xml::closeElement( 'fieldset' ) .
"</td></tr>";
}
+ # Give extensions a chance to add items to the form
+ wfRunHooks( 'ProtectionForm::buildForm', array($this->mArticle,&$out) );
$out .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' );
@@ -399,13 +423,13 @@ class ProtectionForm {
$out .= '<tr>
<td></td>
<td class="mw-input">' .
- Xml::checkLabel( wfMsg( 'protect-cascade' ), 'mwProtect-cascade', 'mwProtect-cascade',
+ Xml::checkLabel( wfMsg( 'protect-cascade' ), 'mwProtect-cascade', 'mwProtect-cascade',
$this->mCascade, $this->disabledAttrib ) .
"</td>
</tr>\n";
$out .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' );
}
-
+
# Add manual and custom reason field/selects as well as submit
if( !$this->disabled ) {
$out .= Xml::openElement( 'table', array( 'id' => 'mw-protect-table3' ) ) .
@@ -424,10 +448,13 @@ class ProtectionForm {
{$mProtectreason}
</td>
<td class='mw-input'>" .
- Xml::input( 'mwProtect-reason', 60, $this->mReason, array( 'type' => 'text',
+ Xml::input( 'mwProtect-reason', 60, $this->mReason, array( 'type' => 'text',
'id' => 'mwProtect-reason', 'maxlength' => 255 ) ) .
"</td>
- </tr>
+ </tr>";
+ # Disallow watching is user is not logged in
+ if( $wgUser->isLoggedIn() ) {
+ $out .= "
<tr>
<td></td>
<td class='mw-input'>" .
@@ -435,7 +462,9 @@ class ProtectionForm {
'mwProtectWatch', 'mwProtectWatch',
$this->mTitle->userIsWatching() || $wgUser->getOption( 'watchdefault' ) ) .
"</td>
- </tr>
+ </tr>";
+ }
+ $out .= "
<tr>
<td></td>
<td class='mw-submit'>" .
@@ -447,8 +476,13 @@ class ProtectionForm {
$out .= Xml::closeElement( 'fieldset' );
if ( $wgUser->isAllowed( 'editinterface' ) ) {
- $linkTitle = Title::makeTitleSafe( NS_MEDIAWIKI, 'protect-dropdown' );
- $link = $wgUser->getSkin()->Link ( $linkTitle, wfMsgHtml( 'protect-edit-reasonlist' ) );
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Protect-dropdown' );
+ $link = $wgUser->getSkin()->link(
+ $title,
+ wfMsgHtml( 'protect-edit-reasonlist' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
$out .= '<p class="mw-protect-editreasons">' . $link . '</p>';
}
@@ -529,8 +563,8 @@ class ProtectionForm {
}
$script .= "[" . implode(',',$CascadeableLevels) . "];\n";
$options = (object)array(
- 'tableId' => 'mw-protect-table-move',
- 'labelText' => wfMsg( 'protect-unchain' ),
+ 'tableId' => 'mwProtectSet',
+ 'labelText' => wfMsg( 'protect-unchain-permissions' ),
'numTypes' => count($this->mApplicableTypes),
'existingMatch' => 1 == count( array_unique( $this->mExistingExpiry ) ),
);
@@ -548,5 +582,7 @@ class ProtectionForm {
# Show relevant lines from the protection log:
$out->addHTML( Xml::element( 'h2', null, LogPage::logName( 'protect' ) ) );
LogEventsList::showLogExtract( $out, 'protect', $this->mTitle->getPrefixedText() );
+ # Let extensions add other relevant log extracts
+ wfRunHooks( 'ProtectionForm::showLogExtract', array($this->mArticle,$out) );
}
}
diff --git a/includes/ProxyTools.php b/includes/ProxyTools.php
index 771fd577..5719e3e8 100644
--- a/includes/ProxyTools.php
+++ b/includes/ProxyTools.php
@@ -67,22 +67,26 @@ function wfGetAgent() {
* @return string
*/
function wfGetIP() {
- global $wgIP, $wgUsePrivateIPs;
+ global $wgIP, $wgUsePrivateIPs, $wgCommandLineMode;
# Return cached result
if ( !empty( $wgIP ) ) {
return $wgIP;
}
+ $ipchain = array();
+ $ip = false;
+
/* collect the originating ips */
# Client connecting to this webserver
if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
- $ipchain = array( IP::canonicalize( $_SERVER['REMOTE_ADDR'] ) );
- } else {
- # Running on CLI?
- $ipchain = array( '127.0.0.1' );
+ $ip = IP::canonicalize( $_SERVER['REMOTE_ADDR'] );
+ } elseif( $wgCommandLineMode ) {
+ $ip = '127.0.0.1';
+ }
+ if( $ip ) {
+ $ipchain[] = $ip;
}
- $ip = $ipchain[0];
# Append XFF on to $ipchain
$forwardedFor = wfGetForwardedFor();
@@ -107,6 +111,10 @@ function wfGetIP() {
}
}
+ if( !$ip ) {
+ throw new MWException( "Unable to determine IP" );
+ }
+
wfDebug( "IP: $ip\n" );
$wgIP = $ip;
return $ip;
@@ -116,7 +124,7 @@ function wfGetIP() {
* Checks if an IP is a trusted proxy providor
* Useful to tell if X-Fowarded-For data is possibly bogus
* Squid cache servers for the site and AOL are whitelisted
- * @param string $ip
+ * @param $ip String
* @return bool
*/
function wfIsTrustedProxy( $ip ) {
@@ -166,7 +174,7 @@ function wfProxyCheck() {
escapeshellarg( $port ),
escapeshellarg( $url )
));
- exec( "php $params &>/dev/null &" );
+ exec( "php $params >" . wfGetNull() . " 2>&1 &" );
}
# Set MemCached key
$wgMemc->set( $mcKey, 1, $wgProxyMemcExpiry );
@@ -187,12 +195,11 @@ function wfParseCIDR( $range ) {
*/
function wfIsLocallyBlockedProxy( $ip ) {
global $wgProxyList;
- $fname = 'wfIsLocallyBlockedProxy';
if ( !$wgProxyList ) {
return false;
}
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
if ( !is_array( $wgProxyList ) ) {
# Load from the specified file
@@ -209,7 +216,7 @@ function wfIsLocallyBlockedProxy( $ip ) {
} else {
$ret = false;
}
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return $ret;
}
diff --git a/includes/QueryPage.php b/includes/QueryPage.php
index 1cef31ea..827264be 100644
--- a/includes/QueryPage.php
+++ b/includes/QueryPage.php
@@ -22,36 +22,36 @@ $wgQueryPages = array(
array( 'DisambiguationsPage', 'Disambiguations' ),
array( 'DoubleRedirectsPage', 'DoubleRedirects' ),
array( 'LinkSearchPage', 'LinkSearch' ),
- array( 'ListredirectsPage', 'Listredirects' ),
+ array( 'ListredirectsPage', 'Listredirects' ),
array( 'LonelyPagesPage', 'Lonelypages' ),
array( 'LongPagesPage', 'Longpages' ),
array( 'MostcategoriesPage', 'Mostcategories' ),
array( 'MostimagesPage', 'Mostimages' ),
array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
- array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ),
+ array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ),
array( 'MostlinkedPage', 'Mostlinked' ),
array( 'MostrevisionsPage', 'Mostrevisions' ),
array( 'FewestrevisionsPage', 'Fewestrevisions' ),
array( 'ShortPagesPage', 'Shortpages' ),
array( 'UncategorizedCategoriesPage', 'Uncategorizedcategories' ),
array( 'UncategorizedPagesPage', 'Uncategorizedpages' ),
- array( 'UncategorizedImagesPage', 'Uncategorizedimages' ),
- array( 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ),
+ array( 'UncategorizedImagesPage', 'Uncategorizedimages' ),
+ array( 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ),
array( 'UnusedCategoriesPage', 'Unusedcategories' ),
array( 'UnusedimagesPage', 'Unusedimages' ),
array( 'WantedCategoriesPage', 'Wantedcategories' ),
array( 'WantedFilesPage', 'Wantedfiles' ),
array( 'WantedPagesPage', 'Wantedpages' ),
- array( 'WantedTemplatesPage', 'Wantedtemplates' ),
+ array( 'WantedTemplatesPage', 'Wantedtemplates' ),
array( 'UnwatchedPagesPage', 'Unwatchedpages' ),
- array( 'UnusedtemplatesPage', 'Unusedtemplates' ),
- array( 'WithoutInterwikiPage', 'Withoutinterwiki' ),
+ array( 'UnusedtemplatesPage', 'Unusedtemplates' ),
+ array( 'WithoutInterwikiPage', 'Withoutinterwiki' ),
);
wfRunHooks( 'wgQueryPages', array( &$wgQueryPages ) );
global $wgDisableCounters;
if ( !$wgDisableCounters )
- $wgQueryPages[] = array( 'PopularPagesPage', 'Popularpages' );
+ $wgQueryPages[] = array( 'PopularPagesPage', 'Popularpages' );
/**
@@ -79,7 +79,7 @@ class QueryPage {
/**
* A mutator for $this->listoutput;
*
- * @param bool $bool
+ * @param $bool Boolean
*/
function setListoutput( $bool ) {
$this->listoutput = $bool;
@@ -89,6 +89,8 @@ class QueryPage {
* Subclasses return their name here. Make sure the name is also
* specified in SpecialPage.php and in Language.php as a language message
* param.
+ *
+ * @return String
*/
function getName() {
return '';
@@ -124,6 +126,8 @@ class QueryPage {
/**
* Override to sort by increasing values
+ *
+ * @return Boolean
*/
function sortDescending() {
return true;
@@ -138,8 +142,10 @@ class QueryPage {
* Is this query expensive (for some definition of expensive)? Then we
* don't let it run in miser mode. $wgDisableQueryPages causes all query
* pages to be declared expensive. Some query pages are always expensive.
+ *
+ * @return Boolean
*/
- function isExpensive( ) {
+ function isExpensive() {
global $wgDisableQueryPages;
return $wgDisableQueryPages;
}
@@ -148,7 +154,7 @@ class QueryPage {
* Whether or not the output of the page in question is retrived from
* the database cache.
*
- * @return bool
+ * @return Boolean
*/
function isCached() {
global $wgMiserMode;
@@ -158,6 +164,8 @@ class QueryPage {
/**
* Sometime we dont want to build rss / atom feeds.
+ *
+ * @return Boolean
*/
function isSyndicated() {
return true;
@@ -168,6 +176,9 @@ class QueryPage {
* skin; you can use it for making links. The result is a single row of
* result data. You should be able to grab SQL results off of it.
* If the function return "false", the line output will be skipped.
+ *
+ * @param $skin Skin object
+ * @param $result Object: database row
*/
function formatResult( $skin, $result ) {
return '';
@@ -175,8 +186,10 @@ class QueryPage {
/**
* The content returned by this function will be output before any result
+ *
+ * @return String
*/
- function getPageHeader( ) {
+ function getPageHeader() {
return '';
}
@@ -184,7 +197,8 @@ class QueryPage {
* If using extra form wheely-dealies, return a set of parameters here
* as an associative array. They will be encoded and added to the paging
* links (prev/next/lengths).
- * @return array
+ *
+ * @return Array
*/
function linkParameters() {
return array();
@@ -196,17 +210,20 @@ class QueryPage {
* Setting this to return true, will call one more time wfFormatResult to
* be sure that the very last result is formatted and shown.
*/
- function tryLastResult( ) {
+ function tryLastResult() {
return false;
}
/**
* Clear the cache and save new results
+ *
+ * @param $limit Integer: limit for SQL statement
+ * @param $ignoreErrors Boolean: whether to ignore database errors
*/
function recache( $limit, $ignoreErrors = true ) {
$fname = get_class( $this ) . '::recache';
$dbw = wfGetDB( DB_MASTER );
- $dbr = wfGetDB( DB_SLAVE, array( $this->getName(), 'QueryPage::recache', 'vslow' ) );
+ $dbr = wfGetDB( DB_SLAVE, array( $this->getName(), __METHOD__, 'vslow' ) );
if ( !$dbw || !$dbr ) {
return false;
}
@@ -229,30 +246,23 @@ class QueryPage {
if ( $res ) {
$num = $dbr->numRows( $res );
# Fetch results
- $insertSql = "INSERT INTO $querycache (qc_type,qc_namespace,qc_title,qc_value) VALUES ";
- $first = true;
+ $vals = array();
while ( $res && $row = $dbr->fetchObject( $res ) ) {
- if ( $first ) {
- $first = false;
- } else {
- $insertSql .= ',';
- }
if ( isset( $row->value ) ) {
$value = intval( $row->value ); // @bug 14414
} else {
$value = 0;
}
-
- $insertSql .= '(' .
- $dbw->addQuotes( $row->type ) . ',' .
- $dbw->addQuotes( $row->namespace ) . ',' .
- $dbw->addQuotes( $row->title ) . ',' .
- $dbw->addQuotes( $value ) . ')';
+
+ $vals[] = array('qc_type' => $row->type,
+ 'qc_namespace' => $row->namespace,
+ 'qc_title' => $row->title,
+ 'qc_value' => $value);
}
# Save results into the querycache table on the master
- if ( !$first ) {
- if ( !$dbw->query( $insertSql, $fname ) ) {
+ if ( count( $vals ) ) {
+ if ( !$dbw->insert( 'querycache', $vals, __METHOD__ ) ) {
// Set result to false to indicate error
$dbr->freeResult( $res );
$res = false;
@@ -311,10 +321,12 @@ class QueryPage {
$tRow = $dbr->fetchObject( $tRes );
if( $tRow ) {
- $updated = $wgLang->timeAndDate( $tRow->qci_timestamp, true, true );
+ $updated = $wgLang->timeanddate( $tRow->qci_timestamp, true, true );
+ $updateddate = $wgLang->date( $tRow->qci_timestamp, true, true );
+ $updatedtime = $wgLang->time( $tRow->qci_timestamp, true, true );
$wgOut->addMeta( 'Data-Cache-Time', $tRow->qci_timestamp );
$wgOut->addInlineScript( "var dataCacheTime = '{$tRow->qci_timestamp}';" );
- $wgOut->addWikiMsg( 'perfcachedts', $updated );
+ $wgOut->addWikiMsg( 'perfcachedts', $updated, $updateddate, $updatedtime );
} else {
$wgOut->addWikiMsg( 'perfcached' );
}
@@ -381,12 +393,12 @@ class QueryPage {
* Format and output report results using the given information plus
* OutputPage
*
- * @param OutputPage $out OutputPage to print to
- * @param Skin $skin User skin to use
- * @param Database $dbr Database (read) connection to use
- * @param int $res Result pointer
- * @param int $num Number of available result rows
- * @param int $offset Paging offset
+ * @param $out OutputPage to print to
+ * @param $skin Skin: user skin to use
+ * @param $dbr Database (read) connection to use
+ * @param $res Integer: result pointer
+ * @param $num Integer: number of available result rows
+ * @param $offset Integer: paging offset
*/
protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
global $wgContLang;
@@ -495,7 +507,7 @@ class QueryPage {
*/
function feedResult( $row ) {
if( !isset( $row->title ) ) {
- return NULL;
+ return null;
}
$title = Title::MakeTitle( intval( $row->namespace ), $row->title );
if( $title ) {
@@ -514,7 +526,7 @@ class QueryPage {
$this->feedItemAuthor( $row ),
$comments);
} else {
- return NULL;
+ return null;
}
}
@@ -542,3 +554,85 @@ class QueryPage {
return $title->getFullURL();
}
}
+
+/**
+ * Class definition for a wanted query page like
+ * WantedPages, WantedTemplates, etc
+ */
+abstract class WantedQueryPage extends QueryPage {
+
+ function isExpensive() {
+ return true;
+ }
+
+ function isSyndicated() {
+ return false;
+ }
+
+ /**
+ * Cache page existence for performance
+ */
+ function preprocessResults( $db, $res ) {
+ $batch = new LinkBatch;
+ while ( $row = $db->fetchObject( $res ) )
+ $batch->add( $row->namespace, $row->title );
+ $batch->execute();
+
+ // Back to start for display
+ if ( $db->numRows( $res ) > 0 )
+ // If there are no rows we get an error seeking.
+ $db->dataSeek( $res, 0 );
+ }
+
+ /**
+ * Format an individual result
+ *
+ * @param $skin Skin to use for UI elements
+ * @param $result Result row
+ * @return string
+ */
+ public function formatResult( $skin, $result ) {
+ $title = Title::makeTitleSafe( $result->namespace, $result->title );
+ if( $title instanceof Title ) {
+ if( $this->isCached() ) {
+ $pageLink = $title->exists()
+ ? '<s>' . $skin->link( $title ) . '</s>'
+ : $skin->link(
+ $title,
+ null,
+ array(),
+ array(),
+ array( 'broken' )
+ );
+ } else {
+ $pageLink = $skin->link(
+ $title,
+ null,
+ array(),
+ array(),
+ array( 'broken' )
+ );
+ }
+ return wfSpecialList( $pageLink, $this->makeWlhLink( $title, $skin, $result ) );
+ } else {
+ $tsafe = htmlspecialchars( $result->title );
+ return wfMsgHtml( 'wantedpages-badtitle', $tsafe );
+ }
+ }
+
+ /**
+ * Make a "what links here" link for a given title
+ *
+ * @param $title Title to make the link for
+ * @param $skin Skin object to use
+ * @param $result Object: result row
+ * @return string
+ */
+ private function makeWlhLink( $title, $skin, $result ) {
+ global $wgLang;
+ $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
+ $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
+ $wgLang->formatNum( $result->value ) );
+ return $skin->link( $wlh, $label, array(), array( 'target' => $title->getPrefixedText() ) );
+ }
+}
diff --git a/includes/RawPage.php b/includes/RawPage.php
index b422d49e..8e515af3 100644
--- a/includes/RawPage.php
+++ b/includes/RawPage.php
@@ -2,7 +2,7 @@
/**
* Copyright (C) 2004 Gabriel Wicke <wicke@wikidev.net>
* http://wikidev.net/
- * Based on PageHistory and SpecialExport
+ * Based on HistoryPage and SpecialExport
*
* License: GPL (http://www.gnu.org/copyleft/gpl.html)
*
@@ -109,34 +109,9 @@ class RawPage {
}
function view() {
- global $wgOut, $wgScript;
+ global $wgOut, $wgScript, $wgRequest;
- if( isset( $_SERVER['SCRIPT_URL'] ) ) {
- # Normally we use PHP_SELF to get the URL to the script
- # as it was called, minus the query string.
- #
- # Some sites use Apache rewrite rules to handle subdomains,
- # and have PHP set up in a weird way that causes PHP_SELF
- # to contain the rewritten URL instead of the one that the
- # outside world sees.
- #
- # If in this mode, use SCRIPT_URL instead, which mod_rewrite
- # provides containing the "before" URL.
- $url = $_SERVER['SCRIPT_URL'];
- } else {
- $url = $_SERVER['PHP_SELF'];
- }
-
- if( $url == '' ) {
- # This will make the next check fail with a confusing error
- # message, so we should mention it separately.
- wfHttpError( 500, 'Internal Server Error',
- "\$_SERVER['PHP_SELF'] is not set. Perhaps you're using CGI" .
- " and haven't set cgi.fix_pathinfo = 1 in php.ini?" );
- return;
- }
-
- if( strcmp( $wgScript, $url ) ) {
+ if( $wgRequest->isPathInfoBad() ) {
# Internet Explorer will ignore the Content-Type header if it
# thinks it sees a file extension it recognizes. Make sure that
# all raw requests are done through the script node, which will
@@ -150,6 +125,7 @@ class RawPage {
#
# Just return a 403 Forbidden and get it over with.
wfHttpError( 403, 'Forbidden',
+ 'Invalid file extension found in PATH_INFO. ' .
'Raw pages must be accessed through the primary script entry point.' );
return;
}
@@ -159,7 +135,8 @@ class RawPage {
$mode = $this->mPrivateCache ? 'private' : 'public';
header( 'Cache-Control: '.$mode.', s-maxage='.$this->mSmaxage.', max-age='.$this->mMaxage );
- if( HTMLFileCache::useFileCache() ) {
+ global $wgUseFileCache;
+ if( $wgUseFileCache and HTMLFileCache::useFileCache() ) {
$cache = new HTMLFileCache( $this->mTitle, 'raw' );
if( $cache->isFileCacheGood( /* Assume up to date */ ) ) {
$cache->loadFromFileCache();
diff --git a/includes/RecentChange.php b/includes/RecentChange.php
index 8e3f1107..51b608d8 100644
--- a/includes/RecentChange.php
+++ b/includes/RecentChange.php
@@ -3,46 +3,45 @@
/**
* Utility class for creating new RC entries
* mAttribs:
- * rc_id id of the row in the recentchanges table
- * rc_timestamp time the entry was made
- * rc_cur_time timestamp on the cur row
- * rc_namespace namespace #
- * rc_title non-prefixed db key
- * rc_type is new entry, used to determine whether updating is necessary
- * rc_minor is minor
- * rc_cur_id page_id of associated page entry
- * rc_user user id who made the entry
- * rc_user_text user name who made the entry
- * rc_comment edit summary
- * rc_this_oldid rev_id associated with this entry (or zero)
- * rc_last_oldid rev_id associated with the entry before this one (or zero)
- * rc_bot is bot, hidden
- * rc_ip IP address of the user in dotted quad notation
- * rc_new obsolete, use rc_type==RC_NEW
- * rc_patrolled boolean whether or not someone has marked this edit as patrolled
- * rc_old_len integer byte length of the text before the edit
- * rc_new_len the same after the edit
- * rc_deleted partial deletion
- * rc_logid the log_id value for this log entry (or zero)
- * rc_log_type the log type (or null)
- * rc_log_action the log action (or null)
- * rc_params log params
+ * rc_id id of the row in the recentchanges table
+ * rc_timestamp time the entry was made
+ * rc_cur_time timestamp on the cur row
+ * rc_namespace namespace #
+ * rc_title non-prefixed db key
+ * rc_type is new entry, used to determine whether updating is necessary
+ * rc_minor is minor
+ * rc_cur_id page_id of associated page entry
+ * rc_user user id who made the entry
+ * rc_user_text user name who made the entry
+ * rc_comment edit summary
+ * rc_this_oldid rev_id associated with this entry (or zero)
+ * rc_last_oldid rev_id associated with the entry before this one (or zero)
+ * rc_bot is bot, hidden
+ * rc_ip IP address of the user in dotted quad notation
+ * rc_new obsolete, use rc_type==RC_NEW
+ * rc_patrolled boolean whether or not someone has marked this edit as patrolled
+ * rc_old_len integer byte length of the text before the edit
+ * rc_new_len the same after the edit
+ * rc_deleted partial deletion
+ * rc_logid the log_id value for this log entry (or zero)
+ * rc_log_type the log type (or null)
+ * rc_log_action the log action (or null)
+ * rc_params log params
*
* mExtra:
- * prefixedDBkey prefixed db key, used by external app via msg queue
- * lastTimestamp timestamp of previous entry, used in WHERE clause during update
- * lang the interwiki prefix, automatically set in save()
+ * prefixedDBkey prefixed db key, used by external app via msg queue
+ * lastTimestamp timestamp of previous entry, used in WHERE clause during update
+ * lang the interwiki prefix, automatically set in save()
* oldSize text size before the change
* newSize text size after the change
*
- * temporary: not stored in the database
+ * temporary: not stored in the database
* notificationtimestamp
* numberofWatchingusers
*
* @todo document functions and variables
*/
-class RecentChange
-{
+class RecentChange {
var $mAttribs = array(), $mExtra = array();
var $mTitle = false, $mMovedToTitle = false;
var $numberofWatchingusers = 0 ; # Dummy to prevent error message in SpecialRecentchangeslinked
@@ -77,15 +76,15 @@ class RecentChange
$dbr->freeResult( $res );
return self::newFromRow( $row );
} else {
- return NULL;
+ return null;
}
}
/**
* Find the first recent change matching some specific conditions
*
- * @param array $conds Array of conditions
- * @param mixed $fname Override the method name in profiling/logs
+ * @param $conds Array of conditions
+ * @param $fname Mixed: override the method name in profiling/logs
* @return RecentChange
*/
public static function newFromConds( $conds, $fname = false ) {
@@ -119,6 +118,8 @@ class RecentChange
public function &getTitle() {
if( $this->mTitle === false ) {
$this->mTitle = Title::makeTitle( $this->mAttribs['rc_namespace'], $this->mAttribs['rc_title'] );
+ # Make sure the correct page ID is process cached
+ $this->mTitle->resetArticleID( $this->mAttribs['rc_cur_id'] );
}
return $this->mTitle;
}
@@ -154,11 +155,11 @@ class RecentChange
# Fixup database timestamps
$this->mAttribs['rc_timestamp'] = $dbw->timestamp($this->mAttribs['rc_timestamp']);
$this->mAttribs['rc_cur_time'] = $dbw->timestamp($this->mAttribs['rc_cur_time']);
- $this->mAttribs['rc_id'] = $dbw->nextSequenceValue( 'rc_rc_id_seq' );
+ $this->mAttribs['rc_id'] = $dbw->nextSequenceValue( 'recentchanges_rc_id_seq' );
## If we are using foreign keys, an entry of 0 for the page_id will fail, so use NULL
if( $dbw->cascadingDeletes() and $this->mAttribs['rc_cur_id']==0 ) {
- unset ( $this->mAttribs['rc_cur_id'] );
+ unset( $this->mAttribs['rc_cur_id'] );
}
# Insert new row
@@ -208,10 +209,10 @@ class RecentChange
/**
* Send some text to UDP
- * @param string $line
- * @param string $prefix
- * @param string $address
- * @return bool success
+ * @param $line String: text to send
+ * @param $prefix String
+ * @param $address String: address
+ * @return Boolean: success
*/
public static function sendToUDP( $line, $address = '', $prefix = '' ) {
global $wgRC2UDPAddress, $wgRC2UDPPrefix, $wgRC2UDPPort;
@@ -236,8 +237,8 @@ class RecentChange
/**
* Remove newlines, carriage returns and decode html entites
- * @param string $line
- * @return string
+ * @param $text String
+ * @return String
*/
public static function cleanupForIRC( $text ) {
return Sanitizer::decodeCharReferences( str_replace( array( "\n", "\r" ), array( "", "" ), $text ) );
@@ -246,8 +247,8 @@ class RecentChange
/**
* Mark a given change as patrolled
*
- * @param mixed $change RecentChange or corresponding rc_id
- * @param bool $auto for automatic patrol
+ * @param $change Mixed: RecentChange or corresponding rc_id
+ * @param $auto Boolean: for automatic patrol
* @return See doMarkPatrolled(), or null if $change is not an existing rc_id
*/
public static function markPatrolled( $change, $auto = false ) {
@@ -264,7 +265,7 @@ class RecentChange
* Mark this RecentChange as patrolled
*
* NOTE: Can also return 'rcpatroldisabled', 'hookaborted' and 'markedaspatrollederror-noautopatrol' as errors
- * @param bool $auto for automatic patrol
+ * @param $auto Boolean: for automatic patrol
* @return array of permissions errors, see Title::getUserPermissionsErrors()
*/
public function doMarkPatrolled( $auto = false ) {
@@ -303,7 +304,7 @@ class RecentChange
/**
* Mark this RecentChange patrolled, without error checking
- * @return int Number of affected rows
+ * @return Integer: number of affected rows
*/
public function reallyMarkPatrolled() {
$dbw = wfGetDB( DB_MASTER );
@@ -331,35 +332,35 @@ class RecentChange
$rc = new RecentChange;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_cur_time' => $timestamp,
- 'rc_namespace' => $title->getNamespace(),
- 'rc_title' => $title->getDBkey(),
- 'rc_type' => RC_EDIT,
- 'rc_minor' => $minor ? 1 : 0,
- 'rc_cur_id' => $title->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $comment,
- 'rc_this_oldid' => $newId,
- 'rc_last_oldid' => $oldId,
- 'rc_bot' => $bot ? 1 : 0,
- 'rc_moved_to_ns' => 0,
- 'rc_moved_to_title' => '',
- 'rc_ip' => $ip,
- 'rc_patrolled' => intval($patrol),
- 'rc_new' => 0, # obsolete
- 'rc_old_len' => $oldSize,
- 'rc_new_len' => $newSize,
- 'rc_deleted' => 0,
- 'rc_logid' => 0,
- 'rc_log_type' => null,
- 'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_timestamp' => $timestamp,
+ 'rc_cur_time' => $timestamp,
+ 'rc_namespace' => $title->getNamespace(),
+ 'rc_title' => $title->getDBkey(),
+ 'rc_type' => RC_EDIT,
+ 'rc_minor' => $minor ? 1 : 0,
+ 'rc_cur_id' => $title->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $comment,
+ 'rc_this_oldid' => $newId,
+ 'rc_last_oldid' => $oldId,
+ 'rc_bot' => $bot ? 1 : 0,
+ 'rc_moved_to_ns' => 0,
+ 'rc_moved_to_title' => '',
+ 'rc_ip' => $ip,
+ 'rc_patrolled' => intval($patrol),
+ 'rc_new' => 0, # obsolete
+ 'rc_old_len' => $oldSize,
+ 'rc_new_len' => $newSize,
+ 'rc_deleted' => 0,
+ 'rc_logid' => 0,
+ 'rc_log_type' => null,
+ 'rc_log_action' => '',
+ 'rc_params' => ''
);
$rc->mExtra = array(
- 'prefixedDBkey' => $title->getPrefixedDBkey(),
+ 'prefixedDBkey' => $title->getPrefixedDBkey(),
'lastTimestamp' => $lastTimestamp,
'oldSize' => $oldSize,
'newSize' => $newSize,
@@ -400,18 +401,18 @@ class RecentChange
'rc_moved_to_title' => '',
'rc_ip' => $ip,
'rc_patrolled' => intval($patrol),
- 'rc_new' => 1, # obsolete
+ 'rc_new' => 1, # obsolete
'rc_old_len' => 0,
- 'rc_new_len' => $size,
- 'rc_deleted' => 0,
- 'rc_logid' => 0,
- 'rc_log_type' => null,
- 'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_new_len' => $size,
+ 'rc_deleted' => 0,
+ 'rc_logid' => 0,
+ 'rc_log_type' => null,
+ 'rc_log_action' => '',
+ 'rc_params' => ''
);
$rc->mExtra = array(
- 'prefixedDBkey' => $title->getPrefixedDBkey(),
+ 'prefixedDBkey' => $title->getPrefixedDBkey(),
'lastTimestamp' => 0,
'oldSize' => 0,
'newSize' => $size
@@ -431,37 +432,37 @@ class RecentChange
$rc = new RecentChange;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_cur_time' => $timestamp,
- 'rc_namespace' => $oldTitle->getNamespace(),
- 'rc_title' => $oldTitle->getDBkey(),
- 'rc_type' => $overRedir ? RC_MOVE_OVER_REDIRECT : RC_MOVE,
- 'rc_minor' => 0,
- 'rc_cur_id' => $oldTitle->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $comment,
- 'rc_this_oldid' => 0,
- 'rc_last_oldid' => 0,
- 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot' , true ) : 0,
- 'rc_moved_to_ns' => $newTitle->getNamespace(),
- 'rc_moved_to_title' => $newTitle->getDBkey(),
- 'rc_ip' => $ip,
- 'rc_new' => 0, # obsolete
- 'rc_patrolled' => 1,
- 'rc_old_len' => NULL,
- 'rc_new_len' => NULL,
- 'rc_deleted' => 0,
- 'rc_logid' => 0, # notifyMove not used anymore
- 'rc_log_type' => null,
- 'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_timestamp' => $timestamp,
+ 'rc_cur_time' => $timestamp,
+ 'rc_namespace' => $oldTitle->getNamespace(),
+ 'rc_title' => $oldTitle->getDBkey(),
+ 'rc_type' => $overRedir ? RC_MOVE_OVER_REDIRECT : RC_MOVE,
+ 'rc_minor' => 0,
+ 'rc_cur_id' => $oldTitle->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $comment,
+ 'rc_this_oldid' => 0,
+ 'rc_last_oldid' => 0,
+ 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot' , true ) : 0,
+ 'rc_moved_to_ns' => $newTitle->getNamespace(),
+ 'rc_moved_to_title' => $newTitle->getDBkey(),
+ 'rc_ip' => $ip,
+ 'rc_new' => 0, # obsolete
+ 'rc_patrolled' => 1,
+ 'rc_old_len' => null,
+ 'rc_new_len' => null,
+ 'rc_deleted' => 0,
+ 'rc_logid' => 0, # notifyMove not used anymore
+ 'rc_log_type' => null,
+ 'rc_log_action' => '',
+ 'rc_params' => ''
);
$rc->mExtra = array(
- 'prefixedDBkey' => $oldTitle->getPrefixedDBkey(),
+ 'prefixedDBkey' => $oldTitle->getPrefixedDBkey(),
'lastTimestamp' => 0,
- 'prefixedMoveTo' => $newTitle->getPrefixedDBkey()
+ 'prefixedMoveTo' => $newTitle->getPrefixedDBkey()
);
$rc->save();
}
@@ -499,34 +500,34 @@ class RecentChange
$rc = new RecentChange;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_cur_time' => $timestamp,
- 'rc_namespace' => $target->getNamespace(),
- 'rc_title' => $target->getDBkey(),
- 'rc_type' => RC_LOG,
- 'rc_minor' => 0,
- 'rc_cur_id' => $target->getArticleID(),
- 'rc_user' => $user->getId(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $logComment,
- 'rc_this_oldid' => 0,
- 'rc_last_oldid' => 0,
- 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
- 'rc_moved_to_ns' => 0,
- 'rc_moved_to_title' => '',
- 'rc_ip' => $ip,
- 'rc_patrolled' => 1,
- 'rc_new' => 0, # obsolete
- 'rc_old_len' => NULL,
- 'rc_new_len' => NULL,
- 'rc_deleted' => 0,
- 'rc_logid' => $newId,
- 'rc_log_type' => $type,
- 'rc_log_action' => $action,
- 'rc_params' => $params
+ 'rc_timestamp' => $timestamp,
+ 'rc_cur_time' => $timestamp,
+ 'rc_namespace' => $target->getNamespace(),
+ 'rc_title' => $target->getDBkey(),
+ 'rc_type' => RC_LOG,
+ 'rc_minor' => 0,
+ 'rc_cur_id' => $target->getArticleID(),
+ 'rc_user' => $user->getId(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $logComment,
+ 'rc_this_oldid' => 0,
+ 'rc_last_oldid' => 0,
+ 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot', true ) : 0,
+ 'rc_moved_to_ns' => 0,
+ 'rc_moved_to_title' => '',
+ 'rc_ip' => $ip,
+ 'rc_patrolled' => 1,
+ 'rc_new' => 0, # obsolete
+ 'rc_old_len' => null,
+ 'rc_new_len' => null,
+ 'rc_deleted' => 0,
+ 'rc_logid' => $newId,
+ 'rc_log_type' => $type,
+ 'rc_log_action' => $action,
+ 'rc_params' => $params
);
$rc->mExtra = array(
- 'prefixedDBkey' => $title->getPrefixedDBkey(),
+ 'prefixedDBkey' => $title->getPrefixedDBkey(),
'lastTimestamp' => 0,
'actionComment' => $actionComment, // the comment appended to the action, passed from LogPage
);
@@ -579,7 +580,11 @@ class RecentChange
* @return mixed
*/
public function getAttribute( $name ) {
- return isset( $this->mAttribs[$name] ) ? $this->mAttribs[$name] : NULL;
+ return isset( $this->mAttribs[$name] ) ? $this->mAttribs[$name] : null;
+ }
+
+ public function getAttributes() {
+ return $this->mAttribs;
}
/**
@@ -694,7 +699,7 @@ class RecentChange
if( $new === 0 ) {
$new = $this->mAttribs['rc_new_len'];
}
- if( $old === NULL || $new === NULL ) {
+ if( $old === null || $new === null ) {
return '';
}
return ChangesList::showCharacterDifference( $old, $new );
diff --git a/includes/RefreshLinksJob.php b/includes/RefreshLinksJob.php
index 91cff40b..aba18362 100644
--- a/includes/RefreshLinksJob.php
+++ b/includes/RefreshLinksJob.php
@@ -111,8 +111,9 @@ class RefreshLinksJob2 extends Job {
$update = new LinksUpdate( $title, $parserOutput, false );
$update->doUpdate();
wfProfileOut( __METHOD__.'-update' );
- wfProfileOut( __METHOD__ );
+ wfWaitForSlaves( 5 );
}
+ wfProfileOut( __METHOD__ );
return true;
}
diff --git a/includes/Revision.php b/includes/Revision.php
index 8a2149c0..8d2c7e9d 100644
--- a/includes/Revision.php
+++ b/includes/Revision.php
@@ -1,8 +1,4 @@
<?php
-/**
- * @todo document
- * @file
- */
/**
* @todo document
@@ -12,7 +8,8 @@ class Revision {
const DELETED_COMMENT = 2;
const DELETED_USER = 4;
const DELETED_RESTRICTED = 8;
-
+ // Convenience field
+ const SUPPRESSED_USER = 12;
// Audience options for Revision::getText()
const FOR_PUBLIC = 1;
const FOR_THIS_USER = 2;
@@ -22,9 +19,8 @@ class Revision {
* Load a page revision from a given revision ID number.
* Returns null if no such revision can be found.
*
- * @param int $id
- * @access public
- * @static
+ * @param $id Integer
+ * @return Revision or null
*/
public static function newFromId( $id ) {
return Revision::newFromConds(
@@ -37,9 +33,9 @@ class Revision {
* that's attached to a given title. If not attached
* to that title, will return null.
*
- * @param Title $title
- * @param int $id
- * @return Revision
+ * @param $title Title
+ * @param $id Integer
+ * @return Revision or null
*/
public static function newFromTitle( $title, $id = 0 ) {
$conds = array(
@@ -67,13 +63,36 @@ class Revision {
}
/**
+ * Make a fake revision object from an archive table row. This is queried
+ * for permissions or even inserted (as in Special:Undelete)
+ * @todo Fixme: should be a subclass for RevisionDelete. [TS]
+ */
+ public static function newFromArchiveRow( $row, $overrides = array() ) {
+ $attribs = $overrides + array(
+ 'page' => isset( $row->page_id ) ? $row->page_id : null,
+ 'id' => isset( $row->ar_rev_id ) ? $row->ar_rev_id : null,
+ 'comment' => $row->ar_comment,
+ 'user' => $row->ar_user,
+ 'user_text' => $row->ar_user_text,
+ 'timestamp' => $row->ar_timestamp,
+ 'minor_edit' => $row->ar_minor_edit,
+ 'text_id' => isset( $row->ar_text_id ) ? $row->ar_text_id : null,
+ 'deleted' => $row->ar_deleted,
+ 'len' => $row->ar_len);
+ if ( isset( $row->ar_text ) && !$row->ar_text_id ) {
+ // Pre-1.5 ar_text row
+ $attribs['text'] = self::getRevisionText( $row, 'ar_' );
+ }
+ return new self( $attribs );
+ }
+
+ /**
* Load a page revision from a given revision ID number.
* Returns null if no such revision can be found.
*
- * @param Database $db
- * @param int $id
- * @access public
- * @static
+ * @param $db DatabaseBase
+ * @param $id Integer
+ * @return Revision or null
*/
public static function loadFromId( $db, $id ) {
return Revision::loadFromConds( $db,
@@ -86,19 +105,17 @@ class Revision {
* that's attached to a given page. If not attached
* to that page, will return null.
*
- * @param Database $db
- * @param int $pageid
- * @param int $id
- * @return Revision
- * @access public
- * @static
+ * @param $db DatabaseBase
+ * @param $pageid Integer
+ * @param $id Integer
+ * @return Revision or null
*/
public static function loadFromPageId( $db, $pageid, $id = 0 ) {
- $conds=array('page_id=rev_page','rev_page'=>intval( $pageid ), 'page_id'=>intval( $pageid ));
+ $conds = array( 'page_id=rev_page','rev_page' => intval( $pageid ), 'page_id'=>intval( $pageid ) );
if( $id ) {
- $conds['rev_id']=intval($id);
+ $conds['rev_id'] = intval( $id );
} else {
- $conds[]='rev_id=page_latest';
+ $conds[] = 'rev_id=page_latest';
}
return Revision::loadFromConds( $db, $conds );
}
@@ -108,12 +125,10 @@ class Revision {
* that's attached to a given page. If not attached
* to that page, will return null.
*
- * @param Database $db
- * @param Title $title
- * @param int $id
- * @return Revision
- * @access public
- * @static
+ * @param $db DatabaseBase
+ * @param $title Title
+ * @param $id Integer
+ * @return Revision or null
*/
public static function loadFromTitle( $db, $title, $id = 0 ) {
if( $id ) {
@@ -134,12 +149,10 @@ class Revision {
* WARNING: Timestamps may in some circumstances not be unique,
* so this isn't the best key to use.
*
- * @param Database $db
- * @param Title $title
- * @param string $timestamp
- * @return Revision
- * @access public
- * @static
+ * @param $db Database
+ * @param $title Title
+ * @param $timestamp String
+ * @return Revision or null
*/
public static function loadFromTimestamp( $db, $title, $timestamp ) {
return Revision::loadFromConds(
@@ -153,12 +166,10 @@ class Revision {
/**
* Given a set of conditions, fetch a revision.
*
- * @param array $conditions
- * @return Revision
- * @access private
- * @static
+ * @param $conditions Array
+ * @return Revision or null
*/
- private static function newFromConds( $conditions ) {
+ public static function newFromConds( $conditions ) {
$db = wfGetDB( DB_SLAVE );
$row = Revision::loadFromConds( $db, $conditions );
if( is_null( $row ) && wfGetLB()->getServerCount() > 1 ) {
@@ -172,11 +183,9 @@ class Revision {
* Given a set of conditions, fetch a revision from
* the given database connection.
*
- * @param Database $db
- * @param array $conditions
- * @return Revision
- * @access private
- * @static
+ * @param $db Database
+ * @param $conditions Array
+ * @return Revision or null
*/
private static function loadFromConds( $db, $conditions ) {
$res = Revision::fetchFromConds( $db, $conditions );
@@ -197,28 +206,8 @@ class Revision {
* fetch all of a given page's revisions in turn.
* Each row can be fed to the constructor to get objects.
*
- * @param Title $title
+ * @param $title Title
* @return ResultWrapper
- * @access public
- * @static
- */
- public static function fetchAllRevisions( $title ) {
- return Revision::fetchFromConds(
- wfGetDB( DB_SLAVE ),
- array( 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey(),
- 'page_id=rev_page' ) );
- }
-
- /**
- * Return a wrapper for a series of database rows to
- * fetch all of a given page's revisions in turn.
- * Each row can be fed to the constructor to get objects.
- *
- * @param Title $title
- * @return ResultWrapper
- * @access public
- * @static
*/
public static function fetchRevision( $title ) {
return Revision::fetchFromConds(
@@ -234,11 +223,9 @@ class Revision {
* which will return matching database rows with the
* fields necessary to build Revision objects.
*
- * @param Database $db
- * @param array $conditions
+ * @param $db Database
+ * @param $conditions Array
* @return ResultWrapper
- * @access private
- * @static
*/
private static function fetchFromConds( $db, $conditions ) {
$fields = self::selectFields();
@@ -285,6 +272,7 @@ class Revision {
'old_flags'
);
}
+
/**
* Return the list of page fields that should be selected from page table
*/
@@ -297,7 +285,9 @@ class Revision {
}
/**
- * @param object $row
+ * Constructor
+ *
+ * @param $row Mixed: either a database row or an array
* @access private
*/
function Revision( $row ) {
@@ -363,20 +353,17 @@ class Revision {
$this->mCurrent = false;
# If we still have no len_size, see it we have the text to figure it out
if ( !$this->mSize )
- $this->mSize = is_null($this->mText) ? null : strlen($this->mText);
+ $this->mSize = is_null( $this->mText ) ? null : strlen( $this->mText );
} else {
throw new MWException( 'Revision constructor passed invalid row format.' );
}
- $this->mUnpatrolled = NULL;
+ $this->mUnpatrolled = null;
}
- /**#@+
- * @access public
- */
-
/**
* Get revision ID
- * @return int
+ *
+ * @return Integer
*/
public function getId() {
return $this->mId;
@@ -384,7 +371,8 @@ class Revision {
/**
* Get text row ID
- * @return int
+ *
+ * @return Integer
*/
public function getTextId() {
return $this->mTextId;
@@ -392,7 +380,8 @@ class Revision {
/**
* Get parent revision ID (the original previous page revision)
- * @return int
+ *
+ * @return Integer
*/
public function getParentId() {
return $this->mParentId;
@@ -400,7 +389,8 @@ class Revision {
/**
* Returns the length of the text in this revision, or null if unknown.
- * @return int
+ *
+ * @return Integer
*/
public function getSize() {
return $this->mSize;
@@ -408,6 +398,7 @@ class Revision {
/**
* Returns the title of the page associated with this entry.
+ *
* @return Title
*/
public function getTitle() {
@@ -430,7 +421,8 @@ class Revision {
/**
* Set the title of the revision
- * @param Title $title
+ *
+ * @param $title Title
*/
public function setTitle( $title ) {
$this->mTitle = $title;
@@ -438,7 +430,8 @@ class Revision {
/**
* Get the page ID
- * @return int
+ *
+ * @return Integer
*/
public function getPage() {
return $this->mPage;
@@ -449,13 +442,13 @@ class Revision {
* If the specified audience does not have access to it, zero will be
* returned.
*
- * @param integer $audience One of:
+ * @param $audience Integer: one of:
* Revision::FOR_PUBLIC to be displayed to all users
* Revision::FOR_THIS_USER to be displayed to $wgUser
* Revision::RAW get the ID regardless of permissions
*
*
- * @return int
+ * @return Integer
*/
public function getUser( $audience = self::FOR_PUBLIC ) {
if( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_USER ) ) {
@@ -469,7 +462,8 @@ class Revision {
/**
* Fetch revision's user id without regard for the current user's permissions
- * @return string
+ *
+ * @return String
*/
public function getRawUser() {
return $this->mUser;
@@ -480,7 +474,7 @@ class Revision {
* If the specified audience does not have access to the username, an
* empty string will be returned.
*
- * @param integer $audience One of:
+ * @param $audience Integer: one of:
* Revision::FOR_PUBLIC to be displayed to all users
* Revision::FOR_THIS_USER to be displayed to $wgUser
* Revision::RAW get the text regardless of permissions
@@ -489,9 +483,9 @@ class Revision {
*/
public function getUserText( $audience = self::FOR_PUBLIC ) {
if( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_USER ) ) {
- return "";
+ return '';
} elseif( $audience == self::FOR_THIS_USER && !$this->userCan( self::DELETED_USER ) ) {
- return "";
+ return '';
} else {
return $this->mUserText;
}
@@ -499,7 +493,8 @@ class Revision {
/**
* Fetch revision's username without regard for view restrictions
- * @return string
+ *
+ * @return String
*/
public function getRawUserText() {
return $this->mUserText;
@@ -510,18 +505,18 @@ class Revision {
* If the specified audience does not have access to the comment, an
* empty string will be returned.
*
- * @param integer $audience One of:
+ * @param $audience Integer: one of:
* Revision::FOR_PUBLIC to be displayed to all users
* Revision::FOR_THIS_USER to be displayed to $wgUser
* Revision::RAW get the text regardless of permissions
*
- * @return string
+ * @return String
*/
function getComment( $audience = self::FOR_PUBLIC ) {
if( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_COMMENT ) ) {
- return "";
+ return '';
} elseif( $audience == self::FOR_THIS_USER && !$this->userCan( self::DELETED_COMMENT ) ) {
- return "";
+ return '';
} else {
return $this->mComment;
}
@@ -529,24 +524,25 @@ class Revision {
/**
* Fetch revision comment without regard for the current user's permissions
- * @return string
+ *
+ * @return String
*/
public function getRawComment() {
return $this->mComment;
}
/**
- * @return bool
+ * @return Boolean
*/
public function isMinor() {
return (bool)$this->mMinorEdit;
}
/**
- * @return int rcid of the unpatrolled row, zero if there isn't one
+ * @return Integer rcid of the unpatrolled row, zero if there isn't one
*/
public function isUnpatrolled() {
- if( $this->mUnpatrolled !== NULL ) {
+ if( $this->mUnpatrolled !== null ) {
return $this->mUnpatrolled;
}
$dbr = wfGetDB( DB_SLAVE );
@@ -565,15 +561,16 @@ class Revision {
/**
* int $field one of DELETED_* bitfield constants
- * @return bool
+ *
+ * @return Boolean
*/
public function isDeleted( $field ) {
- return ($this->mDeleted & $field) == $field;
+ return ( $this->mDeleted & $field ) == $field;
}
-
+
/**
* Get the deletion bitfield of the revision
- */
+ */
public function getVisibility() {
return (int)$this->mDeleted;
}
@@ -583,19 +580,19 @@ class Revision {
* If the specified audience does not have the ability to view this
* revision, an empty string will be returned.
*
- * @param integer $audience One of:
+ * @param $audience Integer: one of:
* Revision::FOR_PUBLIC to be displayed to all users
* Revision::FOR_THIS_USER to be displayed to $wgUser
* Revision::RAW get the text regardless of permissions
*
*
- * @return string
+ * @return String
*/
public function getText( $audience = self::FOR_PUBLIC ) {
if( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_TEXT ) ) {
- return "";
+ return '';
} elseif( $audience == self::FOR_THIS_USER && !$this->userCan( self::DELETED_TEXT ) ) {
- return "";
+ return '';
} else {
return $this->getRawText();
}
@@ -603,6 +600,8 @@ class Revision {
/**
* Alias for getText(Revision::FOR_THIS_USER)
+ *
+ * @return String
*/
public function revText() {
return $this->getText( self::FOR_THIS_USER );
@@ -610,7 +609,8 @@ class Revision {
/**
* Fetch revision text without regard for view restrictions
- * @return string
+ *
+ * @return String
*/
public function getRawText() {
if( is_null( $this->mText ) ) {
@@ -621,14 +621,14 @@ class Revision {
}
/**
- * @return string
+ * @return String
*/
public function getTimestamp() {
- return wfTimestamp(TS_MW, $this->mTimestamp);
+ return wfTimestamp( TS_MW, $this->mTimestamp );
}
/**
- * @return bool
+ * @return Boolean
*/
public function isCurrent() {
return $this->mCurrent;
@@ -636,7 +636,8 @@ class Revision {
/**
* Get previous revision for this title
- * @return Revision
+ *
+ * @return Revision or null
*/
public function getPrevious() {
if( $this->getTitle() ) {
@@ -649,7 +650,9 @@ class Revision {
}
/**
- * @return Revision
+ * Get next revision for this title
+ *
+ * @return Revision or null
*/
public function getNext() {
if( $this->getTitle() ) {
@@ -664,11 +667,12 @@ class Revision {
/**
* Get previous revision Id for this page_id
* This is used to populate rev_parent_id on save
- * @param Database $db
- * @return int
+ *
+ * @param $db DatabaseBase
+ * @return Integer
*/
private function getPreviousRevisionId( $db ) {
- if( is_null($this->mPage) ) {
+ if( is_null( $this->mPage ) ) {
return 0;
}
# Use page_latest if ID is not given
@@ -682,7 +686,7 @@ class Revision {
__METHOD__,
array( 'ORDER BY' => 'rev_id DESC' ) );
}
- return intval($prevId);
+ return intval( $prevId );
}
/**
@@ -690,9 +694,9 @@ class Revision {
* $row is usually an object from wfFetchRow(), both the flags and the text
* field must be included
*
- * @param object $row The text data
- * @param string $prefix table prefix (default 'old_')
- * @return string $text|false the text requested
+ * @param $row Object: the text data
+ * @param $prefix String: table prefix (default 'old_')
+ * @return String: text the text requested or false on failure
*/
public static function getRevisionText( $row, $prefix = 'old_' ) {
wfProfileIn( __METHOD__ );
@@ -716,13 +720,13 @@ class Revision {
# Use external methods for external objects, text in table is URL-only then
if ( in_array( 'external', $flags ) ) {
- $url=$text;
- @list(/* $proto */,$path)=explode('://',$url,2);
- if ($path=="") {
+ $url = $text;
+ @list(/* $proto */, $path ) = explode( '://', $url, 2 );
+ if( $path == '' ) {
wfProfileOut( __METHOD__ );
return false;
}
- $text=ExternalStore::fetchFromURL($url);
+ $text = ExternalStore::fetchFromURL( $url );
}
// If the text was fetched without an error, convert it
@@ -746,7 +750,9 @@ class Revision {
}
global $wgLegacyEncoding;
- if( $wgLegacyEncoding && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) ) {
+ if( $text !== false && $wgLegacyEncoding
+ && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
+ {
# Old revisions kept around in a legacy encoding?
# Upconvert on demand.
# ("utf8" checked for compatibility with some broken
@@ -766,8 +772,8 @@ class Revision {
* data is compressed, and 'utf-8' if we're saving in UTF-8
* mode.
*
- * @param mixed $text reference to a text
- * @return string
+ * @param $text Mixed: reference to a text
+ * @return String
*/
public static function compressRevisionText( &$text ) {
global $wgCompressRevisions;
@@ -792,8 +798,8 @@ class Revision {
* Insert a new revision into the database, returning the new revision ID
* number on success and dies horribly on failure.
*
- * @param Database $dbw
- * @return int
+ * @param $dbw DatabaseBase (master connection)
+ * @return Integer
*/
public function insertOn( $dbw ) {
global $wgDefaultExternalStore;
@@ -818,7 +824,7 @@ class Revision {
# Record the text (or external storage URL) to the text table
if( !isset( $this->mTextId ) ) {
- $old_id = $dbw->nextSequenceValue( 'text_old_id_val' );
+ $old_id = $dbw->nextSequenceValue( 'text_old_id_seq' );
$dbw->insert( 'text',
array(
'old_id' => $old_id,
@@ -829,10 +835,12 @@ class Revision {
$this->mTextId = $dbw->insertId();
}
+ if ( $this->mComment === null ) $this->mComment = "";
+
# Record the edit in revisions
$rev_id = isset( $this->mId )
? $this->mId
- : $dbw->nextSequenceValue( 'rev_rev_id_val' );
+ : $dbw->nextSequenceValue( 'revision_rev_id_seq' );
$dbw->insert( 'revision',
array(
'rev_id' => $rev_id,
@@ -844,16 +852,16 @@ class Revision {
'rev_user_text' => $this->mUserText,
'rev_timestamp' => $dbw->timestamp( $this->mTimestamp ),
'rev_deleted' => $this->mDeleted,
- 'rev_len' => $this->mSize,
+ 'rev_len' => $this->mSize,
'rev_parent_id' => is_null($this->mParentId) ?
$this->getPreviousRevisionId( $dbw ) : $this->mParentId
), __METHOD__
);
- $this->mId = !is_null($rev_id) ? $rev_id : $dbw->insertId();
-
+ $this->mId = !is_null( $rev_id ) ? $rev_id : $dbw->insertId();
+
wfRunHooks( 'RevisionInsertComplete', array( &$this, $data, $flags ) );
-
+
wfProfileOut( __METHOD__ );
return $this->mId;
}
@@ -862,17 +870,19 @@ class Revision {
* Lazy-load the revision's text.
* Currently hardcoded to the 'text' table storage engine.
*
- * @return string
+ * @return String
*/
- private function loadText() {
+ protected function loadText() {
wfProfileIn( __METHOD__ );
// Caching may be beneficial for massive use of external storage
global $wgRevisionCacheExpiry, $wgMemc;
- $key = wfMemcKey( 'revisiontext', 'textid', $this->getTextId() );
+ $textId = $this->getTextId();
+ $key = wfMemcKey( 'revisiontext', 'textid', $textId );
if( $wgRevisionCacheExpiry ) {
$text = $wgMemc->get( $key );
if( is_string( $text ) ) {
+ wfDebug( __METHOD__ . ": got id $textId from cache\n" );
wfProfileOut( __METHOD__ );
return $text;
}
@@ -924,11 +934,11 @@ class Revision {
* Such revisions can for instance identify page rename
* operations and other such meta-modifications.
*
- * @param Database $dbw
- * @param int $pageId ID number of the page to read from
- * @param string $summary
- * @param bool $minor
- * @return Revision
+ * @param $dbw DatabaseBase
+ * @param $pageId Integer: ID number of the page to read from
+ * @param $summary String: revision's summary
+ * @param $minor Boolean: whether the revision should be considered as minor
+ * @return Mixed: Revision, or null on error
*/
public static function newNullRevision( $dbw, $pageId, $summary, $minor ) {
wfProfileIn( __METHOD__ );
@@ -962,34 +972,56 @@ class Revision {
/**
* Determine if the current user is allowed to view a particular
* field of this revision, if it's marked as deleted.
- * @param int $field one of self::DELETED_TEXT,
- * self::DELETED_COMMENT,
- * self::DELETED_USER
- * @return bool
+ *
+ * @param $field Integer:one of self::DELETED_TEXT,
+ * self::DELETED_COMMENT,
+ * self::DELETED_USER
+ * @return Boolean
*/
public function userCan( $field ) {
- if( ( $this->mDeleted & $field ) == $field ) {
+ return self::userCanBitfield( $this->mDeleted, $field );
+ }
+
+ /**
+ * Determine if the current user is allowed to view a particular
+ * field of this revision, if it's marked as deleted. This is used
+ * by various classes to avoid duplication.
+ *
+ * @param $bitfield Integer: current field
+ * @param $field Integer: one of self::DELETED_TEXT = File::DELETED_FILE,
+ * self::DELETED_COMMENT = File::DELETED_COMMENT,
+ * self::DELETED_USER = File::DELETED_USER
+ * @return Boolean
+ */
+ public static function userCanBitfield( $bitfield, $field ) {
+ if( $bitfield & $field ) { // aspect is deleted
global $wgUser;
- $permission = ( $this->mDeleted & self::DELETED_RESTRICTED ) == self::DELETED_RESTRICTED
- ? 'suppressrevision'
- : 'deleterevision';
- wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
+ $permission = '';
+ if ( $bitfield & self::DELETED_RESTRICTED ) {
+ $permission = 'suppressrevision';
+ } elseif ( $field & self::DELETED_TEXT ) {
+ $permission = 'deletedtext';
+ } else {
+ $permission = 'deletedhistory';
+ }
+ wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
return $wgUser->isAllowed( $permission );
} else {
return true;
}
}
-
/**
* Get rev_timestamp from rev_id, without loading the rest of the row
- * @param Title $title
- * @param integer $id
+ *
+ * @param $title Title
+ * @param $id Integer
+ * @return String
*/
static function getTimestampFromId( $title, $id ) {
$dbr = wfGetDB( DB_SLAVE );
// Casting fix for DB2
- if ($id == '') {
+ if ( $id == '' ) {
$id = 0;
}
$conds = array( 'rev_id' => $id );
@@ -1005,8 +1037,10 @@ class Revision {
/**
* Get count of revisions per page...not very efficient
- * @param Database $db
- * @param int $id, page id
+ *
+ * @param $db DatabaseBase
+ * @param $id Integer: page id
+ * @return Integer
*/
static function countByPageId( $db, $id ) {
$row = $db->selectRow( 'revision', 'COUNT(*) AS revCount',
@@ -1019,8 +1053,10 @@ class Revision {
/**
* Get count of revisions per page...not very efficient
- * @param Database $db
- * @param Title $title
+ *
+ * @param $db DatabaseBase
+ * @param $title Title
+ * @return Integer
*/
static function countByTitle( $db, $title ) {
$id = $title->getArticleId();
diff --git a/includes/Sanitizer.php b/includes/Sanitizer.php
index 678bfcfb..f6a9773d 100644
--- a/includes/Sanitizer.php
+++ b/includes/Sanitizer.php
@@ -43,7 +43,7 @@ define( 'MW_CHAR_REFS_REGEX',
$attrib = '[A-Za-z0-9]';
$space = '[\x09\x0a\x0d\x20]';
define( 'MW_ATTRIBS_REGEX',
- "/(?:^|$space)($attrib+)
+ "/(?:^|$space)((?:xml:|xmlns:)?$attrib+)
($space*=$space*
(?:
# The attribute value: quoted or alone
@@ -57,6 +57,16 @@ define( 'MW_ATTRIBS_REGEX',
)?(?=$space|\$)/sx" );
/**
+ * Regular expression to match URIs that could trigger script execution
+ */
+define( 'MW_EVIL_URI_PATTERN', '!(^|\s|\*/\s*)(javascript|vbscript)([^\w]|$)!i' );
+
+/**
+ * Regular expression to match namespace attributes
+ */
+define( 'MW_XMLNS_ATTRIBUTE_PATTRN', "/^xmlns:$attrib+$/" );
+
+/**
* List of all named character entities defined in HTML 4.01
* http://www.w3.org/TR/html4/sgml/entities.html
* @private
@@ -335,28 +345,30 @@ class Sanitizer {
* Cleans up HTML, removes dangerous tags and attributes, and
* removes HTML comments
* @private
- * @param string $text
- * @param callback $processCallback to do any variable or parameter replacements in HTML attribute values
- * @param array $args for the processing callback
+ * @param $text String
+ * @param $processCallback Callback to do any variable or parameter replacements in HTML attribute values
+ * @param $args Array for the processing callback
+ * @param $extratags Array for any extra tags to include
+ * @param $removetags Array for any tags (default or extra) to exclude
* @return string
*/
- static function removeHTMLtags( $text, $processCallback = null, $args = array(), $extratags = array() ) {
+ static function removeHTMLtags( $text, $processCallback = null, $args = array(), $extratags = array(), $removetags = array() ) {
global $wgUseTidy;
- static $htmlpairs, $htmlsingle, $htmlsingleonly, $htmlnest, $tabletags,
- $htmllist, $listtags, $htmlsingleallowed, $htmlelements, $staticInitialised;
+ static $htmlpairsStatic, $htmlsingle, $htmlsingleonly, $htmlnest, $tabletags,
+ $htmllist, $listtags, $htmlsingleallowed, $htmlelementsStatic, $staticInitialised;
wfProfileIn( __METHOD__ );
if ( !$staticInitialised ) {
- $htmlpairs = array_merge( $extratags, array( # Tags that must be closed
+ $htmlpairsStatic = array( # Tags that must be closed
'b', 'del', 'i', 'ins', 'u', 'font', 'big', 'small', 'sub', 'sup', 'h1',
'h2', 'h3', 'h4', 'h5', 'h6', 'cite', 'code', 'em', 's',
'strike', 'strong', 'tt', 'var', 'div', 'center',
'blockquote', 'ol', 'ul', 'dl', 'table', 'caption', 'pre',
- 'ruby', 'rt' , 'rb' , 'rp', 'p', 'span', 'u'
- ) );
+ 'ruby', 'rt' , 'rb' , 'rp', 'p', 'span', 'u', 'abbr'
+ );
$htmlsingle = array(
'br', 'hr', 'li', 'dt', 'dd'
);
@@ -377,53 +389,64 @@ class Sanitizer {
'li',
);
- $htmlsingleallowed = array_merge( $htmlsingle, $tabletags );
- $htmlelements = array_merge( $htmlsingle, $htmlpairs, $htmlnest );
+ $htmlsingleallowed = array_unique( array_merge( $htmlsingle, $tabletags ) );
+ $htmlelementsStatic = array_unique( array_merge( $htmlsingle, $htmlpairsStatic, $htmlnest ) );
# Convert them all to hashtables for faster lookup
- $vars = array( 'htmlpairs', 'htmlsingle', 'htmlsingleonly', 'htmlnest', 'tabletags',
- 'htmllist', 'listtags', 'htmlsingleallowed', 'htmlelements' );
+ $vars = array( 'htmlpairsStatic', 'htmlsingle', 'htmlsingleonly', 'htmlnest', 'tabletags',
+ 'htmllist', 'listtags', 'htmlsingleallowed', 'htmlelementsStatic' );
foreach ( $vars as $var ) {
$$var = array_flip( $$var );
}
$staticInitialised = true;
}
+ # Populate $htmlpairs and $htmlelements with the $extratags and $removetags arrays
+ $extratags = array_flip( $extratags );
+ $removetags = array_flip( $removetags );
+ $htmlpairs = array_merge( $extratags, $htmlpairsStatic );
+ $htmlelements = array_diff_key( array_merge( $extratags, $htmlelementsStatic ) , $removetags );
# Remove HTML comments
$text = Sanitizer::removeHTMLcomments( $text );
$bits = explode( '<', $text );
$text = str_replace( '>', '&gt;', array_shift( $bits ) );
- if(!$wgUseTidy) {
+ if ( !$wgUseTidy ) {
$tagstack = $tablestack = array();
foreach ( $bits as $x ) {
$regs = array();
+ # $slash: Does the current element start with a '/'?
+ # $t: Current element name
+ # $params: String between element name and >
+ # $brace: Ending '>' or '/>'
+ # $rest: Everything until the next element of $bits
if( preg_match( '!^(/?)(\\w+)([^>]*?)(/{0,1}>)([^<]*)$!', $x, $regs ) ) {
list( /* $qbar */, $slash, $t, $params, $brace, $rest ) = $regs;
} else {
$slash = $t = $params = $brace = $rest = null;
}
- $badtag = 0 ;
+ $badtag = false;
if ( isset( $htmlelements[$t = strtolower( $t )] ) ) {
# Check our stack
- if ( $slash ) {
- # Closing a tag...
- if( isset( $htmlsingleonly[$t] ) ) {
- $badtag = 1;
- } elseif ( ( $ot = @array_pop( $tagstack ) ) != $t ) {
+ if ( $slash && isset( $htmlsingleonly[$t] ) ) {
+ $badtag = true;
+ } elseif ( $slash ) {
+ # Closing a tag... is it the one we just opened?
+ $ot = @array_pop( $tagstack );
+ if ( $ot != $t ) {
if ( isset( $htmlsingleallowed[$ot] ) ) {
# Pop all elements with an optional close tag
# and see if we find a match below them
$optstack = array();
- array_push ($optstack, $ot);
- while ( ( ( $ot = @array_pop( $tagstack ) ) != $t ) &&
- isset( $htmlsingleallowed[$ot] ) )
- {
- array_push ($optstack, $ot);
+ array_push( $optstack, $ot );
+ $ot = @array_pop( $tagstack );
+ while ( $ot != $t && isset( $htmlsingleallowed[$ot] ) ) {
+ array_push( $optstack, $ot );
+ $ot = @array_pop( $tagstack );
}
if ( $t != $ot ) {
- # No match. Push the optinal elements back again
- $badtag = 1;
+ # No match. Push the optional elements back again
+ $badtag = true;
while ( $ot = @array_pop( $optstack ) ) {
array_push( $tagstack, $ot );
}
@@ -431,8 +454,8 @@ class Sanitizer {
} else {
@array_push( $tagstack, $ot );
# <li> can be nested in <ul> or <ol>, skip those cases:
- if(!(isset( $htmllist[$ot] ) && isset( $listtags[$t] ) )) {
- $badtag = 1;
+ if ( !isset( $htmllist[$ot] ) || !isset( $listtags[$t] ) ) {
+ $badtag = true;
}
}
} else {
@@ -444,23 +467,23 @@ class Sanitizer {
} else {
# Keep track for later
if ( isset( $tabletags[$t] ) &&
- ! in_array( 'table', $tagstack ) ) {
- $badtag = 1;
- } else if ( in_array( $t, $tagstack ) &&
- ! isset( $htmlnest [$t ] ) ) {
- $badtag = 1 ;
+ !in_array( 'table', $tagstack ) ) {
+ $badtag = true;
+ } elseif ( in_array( $t, $tagstack ) &&
+ !isset( $htmlnest [$t ] ) ) {
+ $badtag = true;
# Is it a self closed htmlpair ? (bug 5487)
- } else if( $brace == '/>' &&
+ } elseif ( $brace == '/>' &&
isset( $htmlpairs[$t] ) ) {
- $badtag = 1;
- } elseif( isset( $htmlsingleonly[$t] ) ) {
+ $badtag = true;
+ } elseif ( isset( $htmlsingleonly[$t] ) ) {
# Hack to force empty tag for uncloseable elements
$brace = '/>';
- } else if( isset( $htmlsingle[$t] ) ) {
+ } elseif ( isset( $htmlsingle[$t] ) ) {
# Hack to not close $htmlsingle tags
- $brace = NULL;
- } else if( isset( $tabletags[$t] )
- && in_array($t ,$tagstack) ) {
+ $brace = null;
+ } elseif ( isset( $tabletags[$t] )
+ && in_array( $t, $tagstack ) ) {
// New table tag but forgot to close the previous one
$text .= "</$t>";
} else {
@@ -480,7 +503,7 @@ class Sanitizer {
# Strip non-approved attributes from the tag
$newparams = Sanitizer::fixTagAttributes( $params, $t );
}
- if ( ! $badtag ) {
+ if ( !$badtag ) {
$rest = str_replace( '>', '&gt;', $rest );
$close = ( $brace == '/>' && !$slash ) ? ' /' : '';
$text .= "<$slash$t$newparams$close>$rest";
@@ -523,7 +546,7 @@ class Sanitizer {
* trailing spaces and one of the newlines.
*
* @private
- * @param string $text
+ * @param $text String
* @return string
*/
static function removeHTMLcomments( $text ) {
@@ -569,9 +592,9 @@ class Sanitizer {
* - Unsafe style attributes are discarded
* - Invalid id attributes are reencoded
*
- * @param array $attribs
- * @param string $element
- * @return array
+ * @param $attribs Array
+ * @param $element String
+ * @return Array
*
* @todo Check for legal values where the DTD limits things.
* @todo Check for unique id attribute :P
@@ -589,20 +612,34 @@ class Sanitizer {
* - Unsafe style attributes are discarded
* - Invalid id attributes are reencoded
*
- * @param array $attribs
- * @param array $whitelist list of allowed attribute names
- * @return array
+ * @param $attribs Array
+ * @param $whitelist Array: list of allowed attribute names
+ * @return Array
*
* @todo Check for legal values where the DTD limits things.
* @todo Check for unique id attribute :P
*/
static function validateAttributes( $attribs, $whitelist ) {
+ global $wgAllowRdfaAttributes, $wgAllowMicrodataAttributes;
+
$whitelist = array_flip( $whitelist );
+ $hrefExp = '/^(' . wfUrlProtocols() . ')[^\s]+$/';
+
$out = array();
foreach( $attribs as $attribute => $value ) {
+ #allow XML namespace declaration if RDFa is enabled
+ if ( $wgAllowRdfaAttributes && preg_match( MW_XMLNS_ATTRIBUTE_PATTRN, $attribute ) ) {
+ if ( !preg_match( MW_EVIL_URI_PATTERN, $value ) ) {
+ $out[$attribute] = $value;
+ }
+
+ continue;
+ }
+
if( !isset( $whitelist[$attribute] ) ) {
continue;
}
+
# Strip javascript "expression" from stylesheets.
# http://msdn.microsoft.com/workshop/author/dhtml/overview/recalc.asp
if( $attribute == 'style' ) {
@@ -610,15 +647,58 @@ class Sanitizer {
}
if ( $attribute === 'id' ) {
- global $wgEnforceHtmlIds;
- $value = Sanitizer::escapeId( $value,
- $wgEnforceHtmlIds ? 'noninitial' : 'xml' );
+ $value = Sanitizer::escapeId( $value, 'noninitial' );
+ }
+
+ //RDFa and microdata properties allow URLs, URIs and/or CURIs. check them for sanity
+ if ( $attribute === 'rel' || $attribute === 'rev' ||
+ $attribute === 'about' || $attribute === 'property' || $attribute === 'resource' || #RDFa
+ $attribute === 'datatype' || $attribute === 'typeof' || #RDFa
+ $attribute === 'itemid' || $attribute === 'itemprop' || $attribute === 'itemref' || #HTML5 microdata
+ $attribute === 'itemscope' || $attribute === 'itemtype' ) { #HTML5 microdata
+
+ //Paranoia. Allow "simple" values but suppress javascript
+ if ( preg_match( MW_EVIL_URI_PATTERN, $value ) ) {
+ continue;
+ }
+ }
+
+ # NOTE: even though elements using href/src are not allowed directly, supply
+ # validation code that can be used by tag hook handlers, etc
+ if ( $attribute === 'href' || $attribute === 'src' ) {
+ if ( !preg_match( $hrefExp, $value ) ) {
+ continue; //drop any href or src attributes not using an allowed protocol.
+ //NOTE: this also drops all relative URLs
+ }
}
// If this attribute was previously set, override it.
// Output should only have one attribute of each name.
$out[$attribute] = $value;
}
+
+ if ( $wgAllowMicrodataAttributes ) {
+ # There are some complicated validity constraints we need to
+ # enforce here. First of all, we don't want to allow non-standard
+ # itemtypes.
+ $allowedTypes = array(
+ 'http://microformats.org/profile/hcard',
+ 'http://microformats.org/profile/hcalendar#vevent',
+ 'http://n.whatwg.org/work',
+ );
+ if ( isset( $out['itemtype'] ) && !in_array( $out['itemtype'],
+ $allowedTypes ) ) {
+ # Kill everything
+ unset( $out['itemscope'] );
+ }
+ # itemtype, itemid, itemref don't make sense without itemscope
+ if ( !array_key_exists( 'itemscope', $out ) ) {
+ unset( $out['itemtype'] );
+ unset( $out['itemid'] );
+ unset( $out['itemref'] );
+ }
+ # TODO: Strip itemprop if we aren't descendants of an itemscope.
+ }
return $out;
}
@@ -628,8 +708,8 @@ class Sanitizer {
* will be combined (if they're both strings).
*
* @todo implement merging for other attributes such as style
- * @param array $a
- * @param array $b
+ * @param $a Array
+ * @param $b Array
* @return array
*/
static function mergeAttributes( $a, $b ) {
@@ -650,8 +730,8 @@ class Sanitizer {
*
* Currently URL references, 'expression', 'tps' are forbidden.
*
- * @param string $value
- * @return mixed
+ * @param $value String
+ * @return Mixed
*/
static function checkCss( $value ) {
$value = Sanitizer::decodeCharReferences( $value );
@@ -722,9 +802,9 @@ class Sanitizer {
* - Unsafe style attributes are discarded
* - Prepends space if there are attributes.
*
- * @param string $text
- * @param string $element
- * @return string
+ * @param $text String
+ * @param $element String
+ * @return String
*/
static function fixTagAttributes( $text, $element ) {
if( trim( $text ) == '' ) {
@@ -746,7 +826,7 @@ class Sanitizer {
/**
* Encode an attribute value for HTML output.
- * @param $text
+ * @param $text String
* @return HTML-encoded text fragment
*/
static function encodeAttribute( $text ) {
@@ -767,7 +847,7 @@ class Sanitizer {
/**
* Encode an attribute value for HTML tags, with extra armoring
* against further wiki processing.
- * @param $text
+ * @param $text String
* @return HTML-encoded text fragment
*/
static function safeEncodeAttribute( $text ) {
@@ -798,63 +878,64 @@ class Sanitizer {
}
/**
- * Given a value escape it so that it can be used in an id attribute and
- * return it, this does not validate the value however (see first link)
+ * Given a value, escape it so that it can be used in an id attribute and
+ * return it. This will use HTML5 validation if $wgExperimentalHtmlIds is
+ * true, allowing anything but ASCII whitespace. Otherwise it will use
+ * HTML 4 rules, which means a narrow subset of ASCII, with bad characters
+ * escaped with lots of dots.
+ *
+ * To ensure we don't have to bother escaping anything, we also strip ', ",
+ * & even if $wgExperimentalIds is true. TODO: Is this the best tactic?
+ * We also strip # because it upsets IE6.
*
* @see http://www.w3.org/TR/html401/types.html#type-name Valid characters
* in the id and
* name attributes
* @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with the id attribute
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-id-attribute
+ * HTML5 definition of id attribute
*
- * @param string $id Id to validate
- * @param mixed $options String or array of strings (default is array()):
+ * @param $id String: id to escape
+ * @param $options Mixed: string or array of strings (default is array()):
* 'noninitial': This is a non-initial fragment of an id, not a full id,
* so don't pay attention if the first character isn't valid at the
- * beginning of an id.
- * 'xml': Don't restrict the id to be HTML4-compatible. This option
- * allows any alphabetic character to be used, per the XML standard.
- * Therefore, it also completely changes the type of escaping: instead
- * of weird dot-encoding, runs of invalid characters (mostly
- * whitespace) are just compressed into a single underscore.
- * @return string
+ * beginning of an id. Only matters if $wgExperimentalHtmlIds is
+ * false.
+ * 'legacy': Behave the way the old HTML 4-based ID escaping worked even
+ * if $wgExperimentalHtmlIds is used, so we can generate extra
+ * anchors and links won't break.
+ * @return String
*/
static function escapeId( $id, $options = array() ) {
+ global $wgHtml5, $wgExperimentalHtmlIds;
$options = (array)$options;
- if ( !in_array( 'xml', $options ) ) {
- # HTML4-style escaping
- static $replace = array(
- '%3A' => ':',
- '%' => '.'
- );
-
- $id = urlencode( Sanitizer::decodeCharReferences( strtr( $id, ' ', '_' ) ) );
- $id = str_replace( array_keys( $replace ), array_values( $replace ), $id );
-
- if ( !preg_match( '/^[a-zA-Z]/', $id )
- && !in_array( 'noninitial', $options ) ) {
- // Initial character must be a letter!
- $id = "x$id";
+ if ( $wgHtml5 && $wgExperimentalHtmlIds && !in_array( 'legacy', $options ) ) {
+ $id = Sanitizer::decodeCharReferences( $id );
+ $id = preg_replace( '/[ \t\n\r\f_\'"&#]+/', '_', $id );
+ $id = trim( $id, '_' );
+ if ( $id === '' ) {
+ # Must have been all whitespace to start with.
+ return '_';
+ } else {
+ return $id;
}
- return $id;
}
- # XML-style escaping. For the patterns used, see the XML 1.0 standard,
- # 5th edition, NameStartChar and NameChar: <http://www.w3.org/TR/REC-xml/>
- $nameStartChar = ':a-zA-Z_\xC0-\xD6\xD8-\xF6\xF8-\x{2FF}\x{370}-\x{37D}'
- . '\x{37F}-\x{1FFF}\x{200C}-\x{200D}\x{2070}-\x{218F}\x{2C00}-\x{2FEF}'
- . '\x{3001}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFFD}\x{10000}-\x{EFFFF}';
- $nameChar = $nameStartChar . '.\-0-9\xB7\x{0300}-\x{036F}'
- . '\x{203F}-\x{2040}';
- # Replace _ as well so we don't get multiple consecutive underscores
- $id = preg_replace( "/([^$nameChar]|_)+/u", '_', $id );
- $id = trim( $id, '_' );
-
- if ( !preg_match( "/^[$nameStartChar]/u", $id )
- && !in_array( 'noninitial', $options ) ) {
- $id = "_$id";
- }
+ # HTML4-style escaping
+ static $replace = array(
+ '%3A' => ':',
+ '%' => '.'
+ );
+
+ $id = urlencode( Sanitizer::decodeCharReferences( strtr( $id, ' ', '_' ) ) );
+ $id = str_replace( array_keys( $replace ), array_values( $replace ), $id );
+ if ( !preg_match( '/^[a-zA-Z]/', $id )
+ && !in_array( 'noninitial', $options ) ) {
+ // Initial character must be a letter!
+ $id = "x$id";
+ }
return $id;
}
@@ -866,8 +947,8 @@ class Sanitizer {
*
* @see http://www.w3.org/TR/CSS21/syndata.html Valid characters/format
*
- * @param string $class
- * @return string
+ * @param $class String
+ * @return String
*/
static function escapeClass( $class ) {
// Convert ugly stuff to underscores and kill underscores in ugly places
@@ -881,8 +962,8 @@ class Sanitizer {
* Given HTML input, escape with htmlspecialchars but un-escape entites.
* This allows (generally harmless) entities like &nbsp; to survive.
*
- * @param string $html String to escape
- * @return string Escaped input
+ * @param $html String to escape
+ * @return String: escaped input
*/
static function escapeHtmlAllowEntities( $html ) {
# It seems wise to escape ' as well as ", as a matter of course. Can't
@@ -895,9 +976,8 @@ class Sanitizer {
/**
* Regex replace callback for armoring links against further processing.
- * @param array $matches
+ * @param $matches Array
* @return string
- * @private
*/
private static function armorLinksCallback( $matches ) {
return str_replace( ':', '&#58;', $matches[1] );
@@ -908,16 +988,15 @@ class Sanitizer {
* a partial tag string. Attribute names are forces to lowercase,
* character references are decoded to UTF-8 text.
*
- * @param string
- * @return array
+ * @param $text String
+ * @return Array
*/
public static function decodeTagAttributes( $text ) {
- $attribs = array();
-
if( trim( $text ) == '' ) {
- return $attribs;
+ return array();
}
+ $attribs = array();
$pairs = array();
if( !preg_match_all(
MW_ATTRIBS_REGEX,
@@ -945,9 +1024,8 @@ class Sanitizer {
* Pick the appropriate attribute value from a match set from the
* MW_ATTRIBS_REGEX matches.
*
- * @param array $set
- * @return string
- * @private
+ * @param $set Array
+ * @return String
*/
private static function getTagAttributeCallback( $set ) {
if( isset( $set[6] ) ) {
@@ -979,9 +1057,8 @@ class Sanitizer {
* but note that we're not returning the value, but are returning
* XML source fragments that will be slapped into output.
*
- * @param string $text
- * @return string
- * @private
+ * @param $text String
+ * @return String
*/
private static function normalizeAttributeValue( $text ) {
return str_replace( '"', '&quot;',
@@ -1006,8 +1083,8 @@ class Sanitizer {
* c. use &#x, not &#X
* d. fix or reject non-valid attributes
*
- * @param string $text
- * @return string
+ * @param $text String
+ * @return String
* @private
*/
static function normalizeCharReferences( $text ) {
@@ -1017,8 +1094,8 @@ class Sanitizer {
$text );
}
/**
- * @param string $matches
- * @return string
+ * @param $matches String
+ * @return String
*/
static function normalizeCharReferencesCallback( $matches ) {
$ret = null;
@@ -1044,9 +1121,8 @@ class Sanitizer {
* MediaWiki-specific alias, returns the HTML equivalent. Otherwise,
* returns HTML-escaped text of pseudo-entity source (eg &amp;foo;)
*
- * @param string $name
- * @return string
- * @static
+ * @param $name String
+ * @return String
*/
static function normalizeEntity( $name ) {
global $wgHtmlEntities, $wgHtmlEntityAliases;
@@ -1079,8 +1155,8 @@ class Sanitizer {
/**
* Returns true if a given Unicode codepoint is a valid character in XML.
- * @param int $codepoint
- * @return bool
+ * @param $codepoint Integer
+ * @return Boolean
*/
private static function validateCodepoint( $codepoint ) {
return ($codepoint == 0x09)
@@ -1095,10 +1171,8 @@ class Sanitizer {
* Decode any character references, numeric or named entities,
* in the text and return a UTF-8 string.
*
- * @param string $text
- * @return string
- * @public
- * @static
+ * @param $text String
+ * @return String
*/
public static function decodeCharReferences( $text ) {
return preg_replace_callback(
@@ -1108,8 +1182,8 @@ class Sanitizer {
}
/**
- * @param string $matches
- * @return string
+ * @param $matches String
+ * @return String
*/
static function decodeCharReferencesCallback( $matches ) {
if( $matches[1] != '' ) {
@@ -1128,8 +1202,8 @@ class Sanitizer {
/**
* Return UTF-8 string for a codepoint if that is a valid
* character reference, otherwise U+FFFD REPLACEMENT CHARACTER.
- * @param int $codepoint
- * @return string
+ * @param $codepoint Integer
+ * @return String
* @private
*/
static function decodeChar( $codepoint ) {
@@ -1145,8 +1219,8 @@ class Sanitizer {
* return the UTF-8 encoding of that character. Otherwise, returns
* pseudo-entity source (eg &foo;)
*
- * @param string $name
- * @return string
+ * @param $name Strings
+ * @return String
*/
static function decodeEntity( $name ) {
global $wgHtmlEntities, $wgHtmlEntityAliases;
@@ -1161,11 +1235,10 @@ class Sanitizer {
}
/**
- * Fetch the whitelist of acceptable attributes for a given
- * element name.
+ * Fetch the whitelist of acceptable attributes for a given element name.
*
- * @param string $element
- * @return array
+ * @param $element String
+ * @return Array
*/
static function attributeWhitelist( $element ) {
static $list;
@@ -1180,10 +1253,27 @@ class Sanitizer {
/**
* Foreach array key (an allowed HTML element), return an array
* of allowed attributes
- * @return array
+ * @return Array
*/
static function setupAttributeWhitelist() {
+ global $wgAllowRdfaAttributes, $wgHtml5, $wgAllowMicrodataAttributes;
+
$common = array( 'id', 'class', 'lang', 'dir', 'title', 'style' );
+
+ if ( $wgAllowRdfaAttributes ) {
+ #RDFa attributes as specified in section 9 of http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014
+ $common = array_merge( $common, array(
+ 'about', 'property', 'resource', 'datatype', 'typeof',
+ ) );
+ }
+
+ if ( $wgHtml5 && $wgAllowMicrodataAttributes ) {
+ # add HTML5 microdata tages as pecified by http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#the-microdata-model
+ $common = array_merge( $common, array(
+ 'itemid', 'itemprop', 'itemref', 'itemscope', 'itemtype'
+ ) );
+ }
+
$block = array_merge( $common, array( 'align' ) );
$tablealign = array( 'align', 'char', 'charoff', 'valign' );
$tablecell = array( 'abbr',
@@ -1229,7 +1319,7 @@ class Sanitizer {
# samp
# kbd
'var' => $common,
- # abbr
+ 'abbr' => $common,
# acronym
# 9.2.2
@@ -1289,6 +1379,9 @@ class Sanitizer {
'td' => array_merge( $common, $tablecell, $tablealign ),
'th' => array_merge( $common, $tablecell, $tablealign ),
+ # 12.2 # NOTE: <a> is not allowed directly, but the attrib whitelist is used from the Parser object
+ 'a' => array_merge( $common, array( 'href', 'rel', 'rev' ) ), # rel/rev esp. for RDFa
+
# 13.2
# Not usually allowed, but may be used for extension-style hooks
# such as <math> when it is rasterized
@@ -1335,8 +1428,8 @@ class Sanitizer {
* Warning: this return value must be further escaped for literal
* inclusion in HTML output as of 1.10!
*
- * @param string $text HTML fragment
- * @return string
+ * @param $text String: HTML fragment
+ * @return String
*/
static function stripAllTags( $text ) {
# Actual <tags>
@@ -1356,8 +1449,7 @@ class Sanitizer {
*
* Use for passing XHTML fragments to PHP's XML parsing functions
*
- * @return string
- * @static
+ * @return String
*/
static function hackDocType() {
global $wgHtmlEntities;
@@ -1403,7 +1495,7 @@ class Sanitizer {
$host = preg_replace( $strip, '', $host );
- // @fixme: validate hostnames here
+ // @todo Fixme: validate hostnames here
return $protocol . $host . $rest;
} else {
diff --git a/includes/SearchMySQL.php b/includes/SearchMySQL.php
deleted file mode 100644
index 5fc06790..00000000
--- a/includes/SearchMySQL.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
-
-/**
- * @file
- * @ingroup Search
- */
-
-/**
- * Search engine hook for MySQL 4+
- * @ingroup Search
- */
-class SearchMySQL extends SearchEngine {
- var $strictMatching = true;
-
- /** @todo document */
- function __construct( $db ) {
- $this->db = $db;
- }
-
- /**
- * Parse the user's query and transform it into an SQL fragment which will
- * become part of a WHERE clause
- */
- function parseQuery( $filteredText, $fulltext ) {
- global $wgContLang;
- $lc = SearchEngine::legalSearchChars(); // Minus format chars
- $searchon = '';
- $this->searchTerms = array();
-
- # FIXME: This doesn't handle parenthetical expressions.
- $m = array();
- if( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
- $filteredText, $m, PREG_SET_ORDER ) ) {
- foreach( $m as $terms ) {
- if( $searchon !== '' ) $searchon .= ' ';
- if( $this->strictMatching && ($terms[1] == '') ) {
- $terms[1] = '+';
- }
- $searchon .= $terms[1] . $wgContLang->stripForSearch( $terms[2] );
- if( !empty( $terms[3] ) ) {
- // Match individual terms in result highlighting...
- $regexp = preg_quote( $terms[3], '/' );
- if( $terms[4] ) {
- $regexp = "\b$regexp"; // foo*
- } else {
- $regexp = "\b$regexp\b";
- }
- } else {
- // Match the quoted term in result highlighting...
- $regexp = preg_quote( str_replace( '"', '', $terms[2] ), '/' );
- }
- $this->searchTerms[] = $regexp;
- }
- wfDebug( "Would search with '$searchon'\n" );
- wfDebug( 'Match with /' . implode( '|', $this->searchTerms ) . "/\n" );
- } else {
- wfDebug( "Can't understand search query '{$filteredText}'\n" );
- }
-
- $searchon = $this->db->strencode( $searchon );
- $field = $this->getIndexField( $fulltext );
- return " MATCH($field) AGAINST('$searchon' IN BOOLEAN MODE) ";
- }
-
- public static function legalSearchChars() {
- return "\"*" . parent::legalSearchChars();
- }
-
- /**
- * Perform a full text search query and return a result set.
- *
- * @param string $term - Raw search term
- * @return MySQLSearchResultSet
- * @access public
- */
- function searchText( $term ) {
- $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), true ) ) );
- return new MySQLSearchResultSet( $resultSet, $this->searchTerms );
- }
-
- /**
- * Perform a title-only search query and return a result set.
- *
- * @param string $term - Raw search term
- * @return MySQLSearchResultSet
- * @access public
- */
- function searchTitle( $term ) {
- $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), false ) ) );
- return new MySQLSearchResultSet( $resultSet, $this->searchTerms );
- }
-
-
- /**
- * Return a partial WHERE clause to exclude redirects, if so set
- * @return string
- * @private
- */
- function queryRedirect() {
- if( $this->showRedirects ) {
- return '';
- } else {
- return 'AND page_is_redirect=0';
- }
- }
-
- /**
- * Return a partial WHERE clause to limit the search to the given namespaces
- * @return string
- * @private
- */
- function queryNamespaces() {
- if( is_null($this->namespaces) )
- return ''; # search all
- if ( !count( $this->namespaces ) ) {
- $namespaces = '0';
- } else {
- $namespaces = $this->db->makeList( $this->namespaces );
- }
- return 'AND page_namespace IN (' . $namespaces . ')';
- }
-
- /**
- * Return a LIMIT clause to limit results on the query.
- * @return string
- * @private
- */
- function queryLimit() {
- return $this->db->limitResult( '', $this->limit, $this->offset );
- }
-
- /**
- * Does not do anything for generic search engine
- * subclasses may define this though
- * @return string
- * @private
- */
- function queryRanking( $filteredTerm, $fulltext ) {
- return '';
- }
-
- /**
- * Construct the full SQL query to do the search.
- * The guts shoulds be constructed in queryMain()
- * @param string $filteredTerm
- * @param bool $fulltext
- * @private
- */
- function getQuery( $filteredTerm, $fulltext ) {
- return $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
- $this->queryRedirect() . ' ' .
- $this->queryNamespaces() . ' ' .
- $this->queryRanking( $filteredTerm, $fulltext ) . ' ' .
- $this->queryLimit();
- }
-
-
- /**
- * Picks which field to index on, depending on what type of query.
- * @param bool $fulltext
- * @return string
- */
- function getIndexField( $fulltext ) {
- return $fulltext ? 'si_text' : 'si_title';
- }
-
- /**
- * Get the base part of the search query.
- * The actual match syntax will depend on the server
- * version; MySQL 3 and MySQL 4 have different capabilities
- * in their fulltext search indexes.
- *
- * @param string $filteredTerm
- * @param bool $fulltext
- * @return string
- * @private
- */
- function queryMain( $filteredTerm, $fulltext ) {
- $match = $this->parseQuery( $filteredTerm, $fulltext );
- $page = $this->db->tableName( 'page' );
- $searchindex = $this->db->tableName( 'searchindex' );
- return 'SELECT page_id, page_namespace, page_title ' .
- "FROM $page,$searchindex " .
- 'WHERE page_id=si_page AND ' . $match;
- }
-
- /**
- * Create or update the search index record for the given page.
- * Title and text should be pre-processed.
- *
- * @param int $id
- * @param string $title
- * @param string $text
- */
- function update( $id, $title, $text ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'searchindex',
- array( 'si_page' ),
- array(
- 'si_page' => $id,
- 'si_title' => $title,
- 'si_text' => $text
- ), __METHOD__ );
- }
-
- /**
- * Update a search index record's title only.
- * Title should be pre-processed.
- *
- * @param int $id
- * @param string $title
- */
- function updateTitle( $id, $title ) {
- $dbw = wfGetDB( DB_MASTER );
-
- $dbw->update( 'searchindex',
- array( 'si_title' => $title ),
- array( 'si_page' => $id ),
- __METHOD__,
- array( $dbw->lowPriorityOption() ) );
- }
-}
-
-/**
- * @ingroup Search
- */
-class MySQLSearchResultSet extends SearchResultSet {
- function MySQLSearchResultSet( $resultSet, $terms ) {
- $this->mResultSet = $resultSet;
- $this->mTerms = $terms;
- }
-
- function termMatches() {
- return $this->mTerms;
- }
-
- function numRows() {
- return $this->mResultSet->numRows();
- }
-
- function next() {
- $row = $this->mResultSet->fetchObject();
- if( $row === false ) {
- return false;
- } else {
- return new SearchResult( $row );
- }
- }
-
- function free() {
- $this->mResultSet->free();
- }
-}
diff --git a/includes/Setup.php b/includes/Setup.php
index d450dfdb..cd9146ab 100644
--- a/includes/Setup.php
+++ b/includes/Setup.php
@@ -8,7 +8,6 @@
* MEDIAWIKI is defined
*/
if( !defined( 'MEDIAWIKI' ) ) {
- echo "This file is part of MediaWiki, it is not a valid entry point.\n";
exit( 1 );
}
@@ -41,6 +40,7 @@ if( $wgArticlePath === false ) {
if( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins";
if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins";
+if( $wgExtensionAssetsPath === false ) $wgExtensionAssetsPath = "$wgScriptPath/extensions";
if( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
@@ -59,10 +59,10 @@ if ( empty( $wgFileStore['deleted']['directory'] ) ) {
}
/**
- * Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a
- * sysadmin to set $wgNamespaceProtection incorrectly and leave the wiki insecure.
+ * Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a
+ * sysadmin to set $wgNamespaceProtection incorrectly and leave the wiki insecure.
*
- * Note that this is the definition of editinterface and it can be granted to
+ * Note that this is the definition of editinterface and it can be granted to
* all users if desired.
*/
$wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface';
@@ -87,7 +87,6 @@ if ( !$wgLocalFileRepo ) {
'hashLevels' => $wgHashedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
- 'initialCapital' => $wgCapitalLinks,
'deletedDir' => $wgFileStore['deleted']['directory'],
'deletedHashLevels' => $wgFileStore['deleted']['hash']
);
@@ -130,6 +129,18 @@ if ( $wgUseSharedUploads ) {
);
}
}
+if( $wgUseInstantCommons ) {
+ $wgForeignFileRepos[] = array(
+ 'class' => 'ForeignAPIRepo',
+ 'name' => 'wikimediacommons',
+ 'apibase' => 'http://commons.wikimedia.org/w/api.php',
+ 'hashLevels' => 2,
+ 'fetchDescription' => true,
+ 'descriptionCacheExpiry' => 43200,
+ 'apiThumbCacheExpiry' => 86400,
+ );
+}
+
if ( !class_exists( 'AutoLoader' ) ) {
require_once( "$IP/includes/AutoLoader.php" );
}
@@ -150,6 +161,17 @@ require_once( "$IP/includes/StubObject.php" );
wfProfileOut( $fname.'-includes' );
wfProfileIn( $fname.'-misc1' );
+# Raise the memory limit if it's too low
+wfMemoryLimit();
+
+/**
+ * Set up the timezone, suppressing the pseudo-security warning in PHP 5.1+
+ * that happens whenever you use a date function without the timezone being
+ * explicitly set. Inspired by phpMyAdmin's treatment of the problem.
+ */
+wfSuppressWarnings();
+date_default_timezone_set( date_default_timezone_get() );
+wfRestoreWarnings();
$wgIP = false; # Load on demand
# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor
@@ -158,16 +180,28 @@ $wgRequest = new WebRequest;
# Useful debug output
if ( $wgCommandLineMode ) {
wfDebug( "\n\nStart command line script $self\n" );
-} elseif ( function_exists( 'getallheaders' ) ) {
- wfDebug( "\n\nStart request\n" );
+} else {
+ wfDebug( "Start request\n\n" );
wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" );
- $headers = getallheaders();
- foreach ($headers as $name => $value) {
- wfDebug( "$name: $value\n" );
+
+ if ( $wgDebugPrintHttpHeaders ) {
+ $headerOut = "HTTP HEADERS:\n";
+
+ if ( function_exists( 'getallheaders' ) ) {
+ $headers = getallheaders();
+ foreach ( $headers as $name => $value ) {
+ $headerOut .= "$name: $value\n";
+ }
+ } else {
+ $headers = $_SERVER;
+ foreach ( $headers as $name => $value ) {
+ if ( substr( $name, 0, 5 ) !== 'HTTP_' ) continue;
+ $name = substr( $name, 5 );
+ $headerOut .= "$name: $value\n";
+ }
+ }
+ wfDebug( "$headerOut\n" );
}
- wfDebug( "\n" );
-} elseif( isset( $_SERVER['REQUEST_URI'] ) ) {
- wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" );
}
if( $wgRCFilterByAge ) {
@@ -201,6 +235,23 @@ $wgContLanguageCode = $wgLanguageCode;
# If file cache or squid cache is on, just disable this (DWIMD).
if( $wgUseFileCache || $wgUseSquid ) $wgShowIPinHeader = false;
+# $wgAllowRealName and $wgAllowUserSkin were removed in 1.16
+# in favor of $wgHiddenPrefs, handle b/c here
+if( !$wgAllowRealName ) {
+ $wgHiddenPrefs[] = 'realname';
+}
+
+if( !$wgAllowUserSkin ) {
+ $wgHiddenPrefs[] = 'skin';
+}
+
+if ( !$wgHtml5Version && $wgHtml5 && $wgAllowRdfaAttributes ) {
+ # see http://www.w3.org/TR/rdfa-in-html/#document-conformance
+ if ( $wgMimeType == 'application/xhtml+xml' ) $wgHtml5Version = 'XHTML+RDFa 1.0';
+ else $wgHtml5Version = 'HTML+RDFa 1.0';
+}
+
+
wfProfileOut( $fname.'-misc1' );
wfProfileIn( $fname.'-memcached' );
@@ -208,9 +259,9 @@ $wgMemc =& wfGetMainCache();
$messageMemc =& wfGetMessageCacheStorage();
$parserMemc =& wfGetParserCacheStorage();
-wfDebug( 'Main cache: ' . get_class( $wgMemc ) .
- "\nMessage cache: " . get_class( $messageMemc ) .
- "\nParser cache: " . get_class( $parserMemc ) . "\n" );
+wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
+ get_class( $messageMemc ) . '[message] ' .
+ get_class( $parserMemc ) . "[parser]\n" );
wfProfileOut( $fname.'-memcached' );
@@ -289,9 +340,7 @@ $wgDeferredUpdateList = array();
$wgPostCommitUpdateList = array();
if ( $wgAjaxWatch ) $wgAjaxExportList[] = 'wfAjaxWatch';
-if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'UploadForm::ajaxGetExistsWarning';
-if( $wgAjaxLicensePreview )
- $wgAjaxExportList[] = 'UploadForm::ajaxGetLicensePreview';
+if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning';
# Placeholders in case of DB error
$wgTitle = null;
@@ -305,7 +354,18 @@ wfProfileIn( $fname.'-extensions' );
# of the extension file. This allows the extension to perform
# any necessary initialisation in the fully initialised environment
foreach ( $wgExtensionFunctions as $func ) {
- $profName = $fname.'-extensions-'.strval( $func );
+ # Allow closures in PHP 5.3+
+ if ( is_object( $func ) && $func instanceof Closure ) {
+ $profName = $fname.'-extensions-closure';
+ } elseif( is_array( $func ) ) {
+ if ( is_object( $func[0] ) )
+ $profName = $fname.'-extensions-'.get_class( $func[0] ).'::'.$func[1];
+ else
+ $profName = $fname.'-extensions-'.implode( '::', $func );
+ } else {
+ $profName = $fname.'-extensions-'.strval( $func );
+ }
+
wfProfileIn( $profName );
call_user_func( $func );
wfProfileOut( $profName );
diff --git a/includes/SiteConfiguration.php b/includes/SiteConfiguration.php
index 2ed28139..b6d83670 100644
--- a/includes/SiteConfiguration.php
+++ b/includes/SiteConfiguration.php
@@ -36,6 +36,14 @@ class SiteConfiguration {
* Array of domains that are local and can be handled by the same server
*/
public $localVHosts = array();
+
+ /**
+ * Optional callback to load full configuration data.
+ */
+ public $fullLoadCallback = null;
+
+ /** Whether or not all data has been loaded */
+ public $fullLoadDone = false;
/**
* A callback function that returns an array with the following keys (all
@@ -387,5 +395,12 @@ class SiteConfiguration {
return $out;
}
+
+ public function loadFullData() {
+ if ($this->fullLoadCallback && !$this->fullLoadDone) {
+ call_user_func( $this->fullLoadCallback, $this );
+ $this->fullLoadDone = true;
+ }
+ }
}
-}
+} // End of multiple inclusion guard
diff --git a/includes/SiteStats.php b/includes/SiteStats.php
index 9427536f..16e3c5f2 100644
--- a/includes/SiteStats.php
+++ b/includes/SiteStats.php
@@ -49,12 +49,7 @@ class SiteStats {
// clean schema with mwdumper.
wfDebug( __METHOD__ . ": initializing damaged or missing site_stats\n" );
- global $IP;
- require_once "$IP/maintenance/initStats.inc";
-
- ob_start();
- wfInitStats();
- ob_end_clean();
+ SiteStatsInit::doAllAndCommit( false );
$row = self::doLoad( wfGetDB( DB_MASTER ) );
}
@@ -93,7 +88,7 @@ class SiteStats {
self::load();
return self::$row->ss_users;
}
-
+
static function activeUsers() {
self::load();
return self::$row->ss_active_users;
@@ -111,7 +106,7 @@ class SiteStats {
wfDeprecated(__METHOD__);
return self::numberingroup('sysop');
}
-
+
/**
* Find the number of users in a given user group.
* @param string $group Name of group
@@ -124,13 +119,13 @@ class SiteStats {
$hit = $wgMemc->get( $key );
if ( !$hit ) {
$dbr = wfGetDB( DB_SLAVE );
- $hit = $dbr->selectField( 'user_groups', 'COUNT(*)',
- array( 'ug_group' => $group ), __METHOD__ );
+ $hit = $dbr->selectField( 'user_groups', 'COUNT(*)',
+ array( 'ug_group' => $group ), __METHOD__ );
$wgMemc->set( $key, $hit, 3600 );
}
self::$groupMemberCounts[$group] = $hit;
}
- return self::$groupMemberCounts[$group];
+ return self::$groupMemberCounts[$group];
}
static function jobs() {
@@ -209,7 +204,6 @@ class SiteStatsUpdate {
}
function doUpdate() {
- $fname = 'SiteStatsUpdate::doUpdate';
$dbw = wfGetDB( DB_MASTER );
$updates = '';
@@ -226,11 +220,11 @@ class SiteStatsUpdate {
# Need a separate transaction because this a global lock
$dbw->begin();
- $dbw->query( $sql, $fname );
+ $dbw->query( $sql, __METHOD__ );
$dbw->commit();
}
}
-
+
public static function cacheUpdate( $dbw ) {
$dbr = wfGetDB( DB_SLAVE, array( 'SpecialStatistics', 'vslow') );
# Get non-bot users than did some recent action other than making accounts.
@@ -238,9 +232,153 @@ class SiteStatsUpdate {
$activeUsers = $dbr->selectField( 'recentchanges', 'COUNT( DISTINCT rc_user_text )',
array( 'rc_user != 0', 'rc_bot' => 0, "rc_log_type != 'newusers' OR rc_log_type IS NULL" ),
__METHOD__ );
- $dbw->update( 'site_stats',
+ $dbw->update( 'site_stats',
array( 'ss_active_users' => intval($activeUsers) ),
array( 'ss_row_id' => 1 ), __METHOD__
);
+ return $activeUsers;
+ }
+}
+
+/**
+ * Class designed for counting of stats.
+ */
+class SiteStatsInit {
+
+ // Db connection
+ private $db;
+
+ // Various stats
+ private $mEdits, $mArticles, $mPages, $mUsers, $mViews, $mFiles = 0;
+
+ /**
+ * Constructor
+ * @param $useMaster bool Whether to use the master db
+ */
+ public function __construct( $useMaster = false ) {
+ $this->db = wfGetDB( $useMaster ? DB_MASTER : DB_SLAVE );
+ }
+
+ /**
+ * Count the total number of edits
+ * @return int
+ */
+ public function edits() {
+ $this->mEdits = $this->db->selectField( 'revision', 'COUNT(*)', '', __METHOD__ );
+ $this->mEdits += $this->db->selectField( 'archive', 'COUNT(*)', '', __METHOD__ );
+ return $this->mEdits;
+ }
+
+ /**
+ * Count pages in article space
+ * @return int
+ */
+ public function articles() {
+ global $wgContentNamespaces;
+ $this->mArticles = $this->db->selectField( 'page', 'COUNT(*)', array( 'page_namespace' => $wgContentNamespaces, 'page_is_redirect' => 0, 'page_len > 0' ), __METHOD__ );
+ return $this->mArticles;
+ }
+
+ /**
+ * Count total pages
+ * @return int
+ */
+ public function pages() {
+ $this->mPages = $this->db->selectField( 'page', 'COUNT(*)', '', __METHOD__ );
+ return $this->mPages;
+ }
+
+ /**
+ * Count total users
+ * @return int
+ */
+ public function users() {
+ $this->mUsers = $this->db->selectField( 'user', 'COUNT(*)', '', __METHOD__ );
+ return $this->mUsers;
+ }
+
+ /**
+ * Count views
+ * @return int
+ */
+ public function views() {
+ $this->mViews = $this->db->selectField( 'page', 'SUM(page_counter)', '', __METHOD__ );
+ return $this->mViews;
+ }
+
+ /**
+ * Count total files
+ * @return int
+ */
+ public function files() {
+ $this->mFiles = $this->db->selectField( 'image', 'COUNT(*)', '', __METHOD__ );
+ return $this->mFiles;
+ }
+
+ /**
+ * Do all updates and commit them. More or less a replacement
+ * for the original initStats, but without the calls to wfOut()
+ * @param $update bool Whether to update the current stats or write fresh
+ * @param $noViews bool When true, do not update the number of page views
+ * @param $activeUsers Whether to update the number of active users
+ */
+ public static function doAllAndCommit( $update, $noViews = false, $activeUsers = false ) {
+ // Grab the object and count everything
+ $counter = new SiteStatsInit( false );
+ $counter->edits();
+ $counter->articles();
+ $counter->pages();
+ $counter->users();
+ $counter->files();
+
+ // Only do views if we don't want to not count them
+ if( !$noViews )
+ $counter->views();
+
+ // Update/refresh
+ if( $update )
+ $counter->update();
+ else
+ $counter->refresh();
+
+ // Count active users if need be
+ if( $activeUsers )
+ SiteStatsUpdate::cacheUpdate( wfGetDB( DB_MASTER ) );
+ }
+
+ /**
+ * Update the current row with the selected values
+ */
+ public function update() {
+ list( $values, $conds ) = $this->getDbParams();
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'site_stats', $values, $conds, __METHOD__ );
+ }
+
+ /**
+ * Refresh site_stats. Erase the current record and save all
+ * the new values.
+ */
+ public function refresh() {
+ list( $values, $conds, $views ) = $this->getDbParams();
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->delete( 'site_stats', $conds, __METHOD__ );
+ $dbw->insert( 'site_stats', array_merge( $values, $conds, $views ), __METHOD__ );
+ }
+
+ /**
+ * Return three arrays of params for the db queries
+ * @return array
+ */
+ private function getDbParams() {
+ $values = array( 'ss_total_edits' => $this->mEdits,
+ 'ss_good_articles' => $this->mArticles,
+ 'ss_total_pages' => $this->mPages,
+ 'ss_users' => $this->mUsers,
+ 'ss_admins' => SiteStats::numberingroup( 'sysop' ), // @todo make this go away
+ 'ss_images' => $this->mFiles );
+ $conds = array( 'ss_row_id' => 1 );
+ $views = array( 'ss_total_views' => $this->mViews );
+ return array( $values, $conds, $views );
}
}
diff --git a/includes/Skin.php b/includes/Skin.php
index 47285acc..d1a0016d 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -3,8 +3,9 @@
* @defgroup Skins Skins
*/
-if ( ! defined( 'MEDIAWIKI' ) )
+if ( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
+}
/**
* The main skin class that provide methods and properties for all other skins.
@@ -23,15 +24,18 @@ class Skin extends Linker {
protected $searchboxes = '';
/**#@-*/
protected $mRevisionId; // The revision ID we're looking at, null if not applicable.
- protected $skinname = 'standard' ;
+ protected $skinname = 'standard';
+ // @todo Fixme: should be protected :-\
+ var $mTitle = null;
/** Constructor, call parent constructor */
- function Skin() { parent::__construct(); }
+ function __construct() {
+ parent::__construct();
+ }
/**
* Fetch the set of available skins.
* @return array of strings
- * @static
*/
static function getSkinNames() {
global $wgValidSkinNames;
@@ -46,12 +50,12 @@ class Skin extends Linker {
$skinDir = dir( $wgStyleDirectory );
# while code from www.php.net
- while (false !== ($file = $skinDir->read())) {
+ while( false !== ( $file = $skinDir->read() ) ) {
// Skip non-PHP files, hidden files, and '.dep' includes
$matches = array();
- if(preg_match('/^([^.]*)\.php$/',$file, $matches)) {
+ if( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
$aSkin = $matches[1];
- $wgValidSkinNames[strtolower($aSkin)] = $aSkin;
+ $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
}
}
$skinDir->close();
@@ -60,7 +64,7 @@ class Skin extends Linker {
}
return $wgValidSkinNames;
}
-
+
/**
* Fetch the list of usable skins in regards to $wgSkipSkins.
* Useful for Special:Preferences and other places where you
@@ -80,9 +84,8 @@ class Skin extends Linker {
* Normalize a skin preference value to a form that can be loaded.
* If a skin can't be found, it will fall back to the configured
* default (or the old 'Classic' skin if that's broken).
- * @param string $key
+ * @param $key String: 'monobook', 'standard', etc.
* @return string
- * @static
*/
static function normalizeKey( $key ) {
global $wgDefaultSkin;
@@ -103,9 +106,10 @@ class Skin extends Linker {
$fallback = array(
0 => $wgDefaultSkin,
1 => 'nostalgia',
- 2 => 'cologneblue' );
+ 2 => 'cologneblue'
+ );
- if( isset( $fallback[$key] ) ){
+ if( isset( $fallback[$key] ) ) {
$key = $fallback[$key];
}
@@ -118,9 +122,8 @@ class Skin extends Linker {
/**
* Factory method for loading a skin of a given type
- * @param string $key 'monobook', 'standard', etc
+ * @param $key String: 'monobook', 'standard', etc.
* @return Skin
- * @static
*/
static function &newFromKey( $key ) {
global $wgStyleDirectory;
@@ -129,13 +132,15 @@ class Skin extends Linker {
$skinNames = Skin::getSkinNames();
$skinName = $skinNames[$key];
- $className = 'Skin'.ucfirst($key);
+ $className = 'Skin' . ucfirst( $key );
# Grab the skin class and initialise it.
if ( !class_exists( $className ) ) {
// Preload base classes to work around APC/PHP5 bug
$deps = "{$wgStyleDirectory}/{$skinName}.deps.php";
- if( file_exists( $deps ) ) include_once( $deps );
+ if( file_exists( $deps ) ) {
+ include_once( $deps );
+ }
require_once( "{$wgStyleDirectory}/{$skinName}.php" );
# Check if we got if not failback to default skin
@@ -166,7 +171,9 @@ class Skin extends Linker {
function qbSetting() {
global $wgOut, $wgUser;
- if ( $wgOut->isQuickbarSuppressed() ) { return 0; }
+ if ( $wgOut->isQuickbarSuppressed() ) {
+ return 0;
+ }
$q = $wgUser->getOption( 'quickbar', 0 );
return $q;
}
@@ -178,7 +185,7 @@ class Skin extends Linker {
# Generally the order of the favicon and apple-touch-icon links
# should not matter, but Konqueror (3.5.9 at least) incorrectly
- # uses whichever one appears later in the HTML source. Make sure
+ # uses whichever one appears later in the HTML source. Make sure
# apple-touch-icon is specified first to avoid this.
if( false !== $wgAppleTouchIcon ) {
$out->addLink( array( 'rel' => 'apple-touch-icon', 'href' => $wgAppleTouchIcon ) );
@@ -196,7 +203,7 @@ class Skin extends Linker {
'title' => wfMsgForContent( 'opensearch-desc' ),
));
- $this->addMetadataLinks($out);
+ $this->addMetadataLinks( $out );
$this->mRevisionId = $out->mRevisionId;
@@ -209,26 +216,31 @@ class Skin extends Linker {
* Preload the existence of three commonly-requested pages in a single query
*/
function preloadExistence() {
- global $wgUser, $wgTitle;
+ global $wgUser;
// User/talk link
$titles = array( $wgUser->getUserPage(), $wgUser->getTalkPage() );
// Other tab link
- if ( $wgTitle->getNamespace() == NS_SPECIAL ) {
+ if ( $this->mTitle->getNamespace() == NS_SPECIAL ) {
// nothing
- } elseif ( $wgTitle->isTalkPage() ) {
- $titles[] = $wgTitle->getSubjectPage();
+ } elseif ( $this->mTitle->isTalkPage() ) {
+ $titles[] = $this->mTitle->getSubjectPage();
} else {
- $titles[] = $wgTitle->getTalkPage();
+ $titles[] = $this->mTitle->getTalkPage();
}
$lb = new LinkBatch( $titles );
$lb->execute();
}
+ /**
+ * Adds metadata links (Creative Commons/Dublin Core/copyright) to the HTML
+ * output.
+ * @param $out Object: instance of OutputPage
+ */
function addMetadataLinks( OutputPage $out ) {
- global $wgTitle, $wgEnableDublinCoreRdf, $wgEnableCreativeCommonsRdf;
+ global $wgEnableDublinCoreRdf, $wgEnableCreativeCommonsRdf;
global $wgRightsPage, $wgRightsUrl;
if( $out->isArticleRelated() ) {
@@ -237,13 +249,15 @@ class Skin extends Linker {
$out->addMetadataLink( array(
'title' => 'Creative Commons',
'type' => 'application/rdf+xml',
- 'href' => $wgTitle->getLocalURL( 'action=creativecommons') ) );
+ 'href' => $this->mTitle->getLocalURL( 'action=creativecommons' ) )
+ );
}
if( $wgEnableDublinCoreRdf ) {
$out->addMetadataLink( array(
'title' => 'Dublin Core',
'type' => 'application/rdf+xml',
- 'href' => $wgTitle->getLocalURL( 'action=dublincore' ) ) );
+ 'href' => $this->mTitle->getLocalURL( 'action=dublincore' ) )
+ );
}
}
$copyright = '';
@@ -259,18 +273,38 @@ class Skin extends Linker {
if( $copyright ) {
$out->addLink( array(
'rel' => 'copyright',
- 'href' => $copyright ) );
+ 'href' => $copyright )
+ );
}
}
- function setMembers(){
- global $wgTitle, $wgUser;
- $this->mTitle = $wgTitle;
+ /**
+ * Set some local variables
+ */
+ protected function setMembers() {
+ global $wgUser;
$this->mUser = $wgUser;
$this->userpage = $wgUser->getUserPage()->getPrefixedText();
$this->usercss = false;
}
+ /**
+ * Set the title
+ * @param Title $t The title to use
+ */
+ public function setTitle( $t ) {
+ $this->mTitle = $t;
+ }
+
+ /** Get the title */
+ public function getTitle() {
+ return $this->mTitle;
+ }
+
+ /**
+ * Outputs the HTML generated by other functions.
+ * @param $out Object: instance of OutputPage
+ */
function outputPage( OutputPage $out ) {
global $wgDebugComments;
wfProfileIn( __METHOD__ );
@@ -283,12 +317,6 @@ class Skin extends Linker {
$out->out( $out->headElement( $this ) );
- $out->out( "\n<body" );
- $ops = $this->getBodyOptions();
- foreach ( $ops as $name => $val ) {
- $out->out( " $name='$val'" );
- }
- $out->out( ">\n" );
if ( $wgDebugComments ) {
$out->out( "<!-- Wiki debugging output:\n" .
$out->mDebugtext . "-->\n" );
@@ -299,7 +327,7 @@ class Skin extends Linker {
$out->out( $out->mBodytext . "\n" );
$out->out( $this->afterContent() );
-
+
$out->out( $afterContent );
$out->out( $this->bottomScripts() );
@@ -311,36 +339,42 @@ class Skin extends Linker {
}
static function makeVariablesScript( $data ) {
- global $wgJsMimeType;
-
- $r = array( "<script type= \"$wgJsMimeType\">/*<![CDATA[*/" );
- foreach ( $data as $name => $value ) {
- $encValue = Xml::encodeJsVar( $value );
- $r[] = "var $name = $encValue;";
+ if( $data ) {
+ $r = array();
+ foreach ( $data as $name => $value ) {
+ $encValue = Xml::encodeJsVar( $value );
+ $r[] = "$name=$encValue";
+ }
+ $js = 'var ' . implode( ",\n", $r ) . ';';
+ return Html::inlineScript( "\n$js\n" );
+ } else {
+ return '';
}
- $r[] = "/*]]>*/</script>\n";
-
- return implode( "\n\t\t", $r );
}
/**
* Make a <script> tag containing global variables
- * @param array $data Associative array containing one element:
- * skinname => the skin name
+ * @param $skinName string Name of the skin
* The odd calling convention is for backwards compatibility
+ * @TODO @FIXME Make this not depend on $wgTitle!
*/
- static function makeGlobalVariablesScript( $data ) {
- global $wgScript, $wgStylePath, $wgUser;
+ static function makeGlobalVariablesScript( $skinName ) {
+ if ( is_array( $skinName ) ) {
+ # Weird back-compat stuff.
+ $skinName = $skinName['skinname'];
+ }
+ global $wgScript, $wgTitle, $wgStylePath, $wgUser, $wgScriptExtension;
global $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang, $wgLang;
- global $wgTitle, $wgCanonicalNamespaceNames, $wgOut, $wgArticle;
+ global $wgOut, $wgArticle;
global $wgBreakFrames, $wgRequest, $wgVariantArticlePath, $wgActionPaths;
global $wgUseAjax, $wgAjaxWatch;
global $wgVersion, $wgEnableAPI, $wgEnableWriteAPI;
- global $wgRestrictionTypes, $wgLivePreview;
+ global $wgRestrictionTypes;
global $wgMWSuggestTemplate, $wgDBname, $wgEnableMWSuggest;
+ global $wgSitename;
$ns = $wgTitle->getNamespace();
- $nsname = isset( $wgCanonicalNamespaceNames[ $ns ] ) ? $wgCanonicalNamespaceNames[ $ns ] : $wgTitle->getNsText();
+ $nsname = MWNamespace::exists( $ns ) ? MWNamespace::getCanonicalName( $ns ) : $wgTitle->getNsText();
$separatorTransTable = $wgContLang->separatorTransformTable();
$separatorTransTable = $separatorTransTable ? $separatorTransTable : array();
$compactSeparatorTransTable = array(
@@ -354,25 +388,29 @@ class Skin extends Linker {
implode( "\t", $digitTransTable ),
);
+ $mainPage = Title::newFromText( wfMsgForContent( 'mainpage' ) );
$vars = array(
- 'skin' => $data['skinname'],
+ 'skin' => $skinName,
'stylepath' => $wgStylePath,
+ 'wgUrlProtocols' => wfUrlProtocols(),
'wgArticlePath' => $wgArticlePath,
'wgScriptPath' => $wgScriptPath,
+ 'wgScriptExtension' => $wgScriptExtension,
'wgScript' => $wgScript,
'wgVariantArticlePath' => $wgVariantArticlePath,
'wgActionPaths' => (object)$wgActionPaths,
'wgServer' => $wgServer,
'wgCanonicalNamespace' => $nsname,
- 'wgCanonicalSpecialPageName' => SpecialPage::resolveAlias( $wgTitle->getDBkey() ),
+ 'wgCanonicalSpecialPageName' => $ns == NS_SPECIAL ?
+ SpecialPage::resolveAlias( $wgTitle->getDBkey() ) : false, # bug 21115
'wgNamespaceNumber' => $wgTitle->getNamespace(),
'wgPageName' => $wgTitle->getPrefixedDBKey(),
'wgTitle' => $wgTitle->getText(),
'wgAction' => $wgRequest->getText( 'action', 'view' ),
'wgArticleId' => $wgTitle->getArticleId(),
'wgIsArticle' => $wgOut->isArticle(),
- 'wgUserName' => $wgUser->isAnon() ? NULL : $wgUser->getName(),
- 'wgUserGroups' => $wgUser->isAnon() ? NULL : $wgUser->getEffectiveGroups(),
+ 'wgUserName' => $wgUser->isAnon() ? null : $wgUser->getName(),
+ 'wgUserGroups' => $wgUser->isAnon() ? null : $wgUser->getEffectiveGroups(),
'wgUserLanguage' => $wgLang->getCode(),
'wgContentLanguage' => $wgContLang->getCode(),
'wgBreakFrames' => $wgBreakFrames,
@@ -382,63 +420,48 @@ class Skin extends Linker {
'wgEnableWriteAPI' => $wgEnableWriteAPI,
'wgSeparatorTransformTable' => $compactSeparatorTransTable,
'wgDigitTransformTable' => $compactDigitTransTable,
+ 'wgMainPageTitle' => $mainPage ? $mainPage->getPrefixedText() : null,
+ 'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
+ 'wgNamespaceIds' => $wgContLang->getNamespaceIds(),
+ 'wgSiteName' => $wgSitename,
+ 'wgCategories' => $wgOut->getCategories(),
);
-
- if( $wgUseAjax && $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false )){
+ if ( $wgContLang->hasVariants() ) {
+ $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
+ }
+
+ // if on upload page output the extension list & js_upload
+ if( SpecialPage::resolveAlias( $wgTitle->getDBkey() ) == 'Upload' ) {
+ global $wgFileExtensions, $wgAjaxUploadInterface;
+ $vars['wgFileExtensions'] = $wgFileExtensions;
+ }
+
+ if( $wgUseAjax && $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ) {
$vars['wgMWSuggestTemplate'] = SearchEngine::getMWSuggestTemplate();
$vars['wgDBname'] = $wgDBname;
$vars['wgSearchNamespaces'] = SearchEngine::userNamespaces( $wgUser );
- $vars['wgMWSuggestMessages'] = array( wfMsg('search-mwsuggest-enabled'), wfMsg('search-mwsuggest-disabled'));
+ $vars['wgMWSuggestMessages'] = array( wfMsg( 'search-mwsuggest-enabled' ), wfMsg( 'search-mwsuggest-disabled' ) );
}
- foreach( $wgRestrictionTypes as $type )
+ foreach( $wgRestrictionTypes as $type ) {
$vars['wgRestriction' . ucfirst( $type )] = $wgTitle->getRestrictions( $type );
-
- if ( $wgLivePreview && $wgUser->getOption( 'uselivepreview' ) ) {
- $vars['wgLivepreviewMessageLoading'] = wfMsg( 'livepreview-loading' );
- $vars['wgLivepreviewMessageReady'] = wfMsg( 'livepreview-ready' );
- $vars['wgLivepreviewMessageFailed'] = wfMsg( 'livepreview-failed' );
- $vars['wgLivepreviewMessageError'] = wfMsg( 'livepreview-error' );
}
if ( $wgOut->isArticleRelated() && $wgUseAjax && $wgAjaxWatch && $wgUser->isLoggedIn() ) {
$msgs = (object)array();
- foreach ( array( 'watch', 'unwatch', 'watching', 'unwatching' ) as $msgName ) {
+ foreach ( array( 'watch', 'unwatch', 'watching', 'unwatching',
+ 'tooltip-ca-watch', 'tooltip-ca-unwatch' ) as $msgName ) {
$msgs->{$msgName . 'Msg'} = wfMsg( $msgName );
}
$vars['wgAjaxWatch'] = $msgs;
}
- wfRunHooks('MakeGlobalVariablesScript', array(&$vars));
+ // Allow extensions to add their custom variables to the global JS variables
+ wfRunHooks( 'MakeGlobalVariablesScript', array( &$vars ) );
return self::makeVariablesScript( $vars );
}
- function getHeadScripts( $allowUserJs ) {
- global $wgStylePath, $wgUser, $wgJsMimeType, $wgStyleVersion;
-
- $vars = self::makeGlobalVariablesScript( array( 'skinname' => $this->getSkinName() ) );
-
- $r = array( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/wikibits.js?$wgStyleVersion\"></script>" );
- global $wgUseSiteJs;
- if ($wgUseSiteJs) {
- $jsCache = $wgUser->isLoggedIn() ? '&smaxage=0' : '';
- $r[] = "<script type=\"$wgJsMimeType\" src=\"".
- htmlspecialchars(self::makeUrl('-',
- "action=raw$jsCache&gen=js&useskin=" .
- urlencode( $this->getSkinName() ) ) ) .
- "\"><!-- site js --></script>";
- }
- if( $allowUserJs && $wgUser->isLoggedIn() ) {
- $userpage = $wgUser->getUserPage();
- $userjs = htmlspecialchars( self::makeUrl(
- $userpage->getPrefixedText().'/'.$this->getSkinName().'.js',
- 'action=raw&ctype='.$wgJsMimeType));
- $r[] = '<script type="'.$wgJsMimeType.'" src="'.$userjs."\"></script>";
- }
- return $vars . "\t\t" . implode ( "\n\t\t", $r );
- }
-
/**
* To make it harder for someone to slip a user a fake
* user-JavaScript or user-CSS preview, a random token
@@ -446,25 +469,30 @@ class Skin extends Linker {
* passed back with the preview request, we won't render
* the code.
*
- * @param string $action
+ * @param $action String: 'edit', 'submit' etc.
* @return bool
- * @private
*/
- function userCanPreview( $action ) {
- global $wgTitle, $wgRequest, $wgUser;
+ public function userCanPreview( $action ) {
+ global $wgRequest, $wgUser;
- if( $action != 'submit' )
+ if( $action != 'submit' ) {
return false;
- if( !$wgRequest->wasPosted() )
+ }
+ if( !$wgRequest->wasPosted() ) {
+ return false;
+ }
+ if( !$this->mTitle->userCanEditCssSubpage() ) {
return false;
- if( !$wgTitle->userCanEditCssJsSubpage() )
+ }
+ if( !$this->mTitle->userCanEditJsSubpage() ) {
return false;
+ }
return $wgUser->matchEditToken(
$wgRequest->getVal( 'wpEditToken' ) );
}
/**
- * generated JavaScript action=raw&gen=js
+ * Generated JavaScript action=raw&gen=js
* This returns MediaWiki:Common.js and MediaWiki:[Skinname].js concate-
* nated together. For some bizarre reason, it does *not* return any
* custom user JS from subpages. Huh?
@@ -474,27 +502,31 @@ class Skin extends Linker {
* top. For now Monobook.js will be maintained, but it should be consi-
* dered deprecated.
*
+ * @param $skinName String: If set, overrides the skin name
* @return string
*/
- public function generateUserJs() {
+ public function generateUserJs( $skinName = null ) {
global $wgStylePath;
wfProfileIn( __METHOD__ );
+ if( !$skinName ) {
+ $skinName = $this->getSkinName();
+ }
$s = "/* generated javascript */\n";
- $s .= "var skin = '" . Xml::escapeJsString( $this->getSkinName() ) . "';\n";
+ $s .= "var skin = '" . Xml::escapeJsString( $skinName ) . "';\n";
$s .= "var stylepath = '" . Xml::escapeJsString( $wgStylePath ) . "';";
$s .= "\n\n/* MediaWiki:Common.js */\n";
- $commonJs = wfMsgForContent('common.js');
- if ( !wfEmptyMsg ( 'common.js', $commonJs ) ) {
+ $commonJs = wfMsgExt( 'common.js', 'content' );
+ if ( !wfEmptyMsg( 'common.js', $commonJs ) ) {
$s .= $commonJs;
}
- $s .= "\n\n/* MediaWiki:".ucfirst( $this->getSkinName() ).".js */\n";
+ $s .= "\n\n/* MediaWiki:" . ucfirst( $skinName ) . ".js */\n";
// avoid inclusion of non defined user JavaScript (with custom skins only)
// by checking for default message content
- $msgKey = ucfirst( $this->getSkinName() ).'.js';
- $userJS = wfMsgForContent($msgKey);
+ $msgKey = ucfirst( $skinName ) . '.js';
+ $userJS = wfMsgExt( $msgKey, 'content' );
if ( !wfEmptyMsg( $msgKey, $userJS ) ) {
$s .= $userJS;
}
@@ -504,7 +536,7 @@ class Skin extends Linker {
}
/**
- * generate user stylesheet for action=raw&gen=css
+ * Generate user stylesheet for action=raw&gen=css
*/
public function generateUserStylesheet() {
wfProfileIn( __METHOD__ );
@@ -513,21 +545,21 @@ class Skin extends Linker {
wfProfileOut( __METHOD__ );
return $s;
}
-
+
/**
* Split for easier subclassing in SkinSimple, SkinStandard and SkinCologneBlue
*/
- protected function reallyGenerateUserStylesheet(){
+ protected function reallyGenerateUserStylesheet() {
global $wgUser;
$s = '';
- if (($undopt = $wgUser->getOption("underline")) < 2) {
+ if( ( $undopt = $wgUser->getOption( 'underline' ) ) < 2 ) {
$underline = $undopt ? 'underline' : 'none';
$s .= "a { text-decoration: $underline; }\n";
}
if( $wgUser->getOption( 'highlightbroken' ) ) {
$s .= "a.new, #quickbar a.new { color: #CC2200; }\n";
} else {
- $s .= <<<END
+ $s .= <<<CSS
a.new, #quickbar a.new,
a.stub, #quickbar a.stub {
color: inherit;
@@ -540,7 +572,7 @@ a.stub:after, #quickbar a.stub:after {
content: "!";
color: #772233;
}
-END;
+CSS;
}
if( $wgUser->getOption( 'justify' ) ) {
$s .= "#article, #bodyContent, #mw_content { text-align: justify; }\n";
@@ -551,6 +583,10 @@ END;
if( !$wgUser->getOption( 'editsection' ) ) {
$s .= ".editsection { display: none; }\n";
}
+ $fontstyle = $wgUser->getOption( 'editfont' );
+ if ( $fontstyle !== 'default' ) {
+ $s .= "textarea { font-family: $fontstyle; }\n";
+ }
return $s;
}
@@ -571,8 +607,8 @@ END;
);
// Add any extension CSS
- foreach( $out->getExtStyle() as $tag ) {
- $out->addStyle( $tag['href'] );
+ foreach ( $out->getExtStyle() as $url ) {
+ $out->addStyle( $url );
}
// If we use the site's dynamic CSS, throw that in, too
@@ -608,15 +644,16 @@ END;
// Per-user custom style pages
if( $wgAllowUserCss && $wgUser->isLoggedIn() ) {
- $action = $wgRequest->getVal('action');
+ $action = $wgRequest->getVal( 'action' );
# If we're previewing the CSS page, use it
if( $this->mTitle->isCssSubpage() && $this->userCanPreview( $action ) ) {
- $previewCss = $wgRequest->getText('wpTextbox1');
// @FIXME: properly escape the cdata!
- $this->usercss = "/*<![CDATA[*/\n" . $previewCss . "/*]]>*/";
+ $out->addInlineStyle( $wgRequest->getText( 'wpTextbox1' ) );
} else {
- $out->addStyle( self::makeUrl($this->userpage . '/' . $this->getSkinName() .'.css',
- 'action=raw&ctype=text/css' ) );
+ $out->addStyle( self::makeUrl(
+ $this->userpage . '/' . $this->getSkinName() . '.css',
+ 'action=raw&ctype=text/css' )
+ );
}
}
@@ -634,41 +671,16 @@ END;
$out->addStyle( 'common/common_rtl.css', '', '', 'rtl' );
}
- function getBodyOptions() {
- global $wgUser, $wgTitle, $wgOut, $wgRequest, $wgContLang;
-
- extract( $wgRequest->getValues( 'oldid', 'redirect', 'diff' ) );
-
- if ( 0 != $wgTitle->getNamespace() ) {
- $a = array( 'bgcolor' => '#ffffec' );
- }
- else $a = array( 'bgcolor' => '#FFFFFF' );
- if($wgOut->isArticle() && $wgUser->getOption('editondblclick') &&
- $wgTitle->quickUserCan( 'edit' ) ) {
- $s = $wgTitle->getFullURL( $this->editUrlOptions() );
- $s = 'document.location = "' .Xml::escapeJsString( $s ) .'";';
- $a += array ('ondblclick' => $s);
-
- }
- $a['onload'] = $wgOut->getOnloadHandler();
- $a['class'] =
- 'mediawiki' .
- ' '.( $wgContLang->isRTL() ? "rtl" : "ltr" ).
- ' '.$this->getPageClasses( $wgTitle ) .
- ' skin-'. Sanitizer::escapeClass( $this->getSkinName( ) );
- return $a;
- }
-
function getPageClasses( $title ) {
- $numeric = 'ns-'.$title->getNamespace();
+ $numeric = 'ns-' . $title->getNamespace();
if( $title->getNamespace() == NS_SPECIAL ) {
- $type = "ns-special";
+ $type = 'ns-special';
} elseif( $title->isTalkPage() ) {
- $type = "ns-talk";
+ $type = 'ns-talk';
} else {
- $type = "ns-subject";
+ $type = 'ns-subject';
}
- $name = Sanitizer::escapeClass( 'page-'.$title->getPrefixedText() );
+ $name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
return "$numeric $type $name";
}
@@ -690,13 +702,13 @@ END;
function doBeforeContent() {
global $wgContLang;
- $fname = 'Skin::doBeforeContent';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
$s = '';
$qb = $this->qbSetting();
- if( $langlinks = $this->otherLanguages() ) {
+ $langlinks = $this->otherLanguages();
+ if( $langlinks ) {
$rows = 2;
$borderhack = '';
} else {
@@ -710,24 +722,26 @@ END;
$shove = ( $qb != 0 );
$left = ( $qb == 1 || $qb == 3 );
- if( $wgContLang->isRTL() ) $left = !$left;
+ if( $wgContLang->isRTL() ) {
+ $left = !$left;
+ }
if( !$shove ) {
$s .= "<td class='top' align='left' valign='top' rowspan='{$rows}'>\n" .
- $this->logoText() . '</td>';
+ $this->logoText() . '</td>';
} elseif( $left ) {
$s .= $this->getQuickbarCompensator( $rows );
}
- $l = $wgContLang->isRTL() ? 'right' : 'left';
+ $l = $wgContLang->alignStart();
$s .= "<td {$borderhack} align='$l' valign='top'>\n";
- $s .= $this->topLinks() ;
- $s .= "<p class='subtitle'>" . $this->pageTitleLinks() . "</p>\n";
+ $s .= $this->topLinks();
+ $s .= '<p class="subtitle">' . $this->pageTitleLinks() . "</p>\n";
- $r = $wgContLang->isRTL() ? "left" : "right";
+ $r = $wgContLang->alignEnd();
$s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap='nowrap'>";
$s .= $this->nameAndLogin();
- $s .= "\n<br />" . $this->searchForm() . "</td>";
+ $s .= "\n<br />" . $this->searchForm() . '</td>';
if ( $langlinks ) {
$s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
@@ -744,25 +758,26 @@ END;
$s .= "\n<div id='siteNotice'>$notice</div>\n";
}
$s .= $this->pageTitle();
- $s .= $this->pageSubtitle() ;
+ $s .= $this->pageSubtitle();
$s .= $this->getCategories();
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return $s;
}
-
function getCategoryLinks() {
- global $wgOut, $wgTitle, $wgUseCategoryBrowser;
+ global $wgOut, $wgUseCategoryBrowser;
global $wgContLang, $wgUser;
- if( count( $wgOut->mCategoryLinks ) == 0 ) return '';
+ if( count( $wgOut->mCategoryLinks ) == 0 ) {
+ return '';
+ }
# Separator
$sep = wfMsgExt( 'catseparator', array( 'parsemag', 'escapenoentities' ) );
// Use Unicode bidi embedding override characters,
// to make sure links don't smash each other up in ugly ways.
- $dir = $wgContLang->isRTL() ? 'rtl' : 'ltr';
+ $dir = $wgContLang->getDir();
$embed = "<span dir='$dir'>";
$pop = '</span>';
@@ -770,11 +785,11 @@ END;
$s = '';
$colon = wfMsgExt( 'colon-separator', 'escapenoentities' );
if ( !empty( $allCats['normal'] ) ) {
- $t = $embed . implode ( "{$pop} {$sep} {$embed}" , $allCats['normal'] ) . $pop;
+ $t = $embed . implode( "{$pop} {$sep} {$embed}" , $allCats['normal'] ) . $pop;
$msg = wfMsgExt( 'pagecategories', array( 'parsemag', 'escapenoentities' ), count( $allCats['normal'] ) );
$s .= '<div id="mw-normal-catlinks">' .
- $this->link( Title::newFromText( wfMsgForContent('pagecategorieslink') ), $msg )
+ $this->link( Title::newFromText( wfMsgForContent( 'pagecategorieslink' ) ), $msg )
. $colon . $t . '</div>';
}
@@ -782,7 +797,7 @@ END;
if ( isset( $allCats['hidden'] ) ) {
if ( $wgUser->getBoolOption( 'showhiddencats' ) ) {
$class ='mw-hidden-cats-user-shown';
- } elseif ( $wgTitle->getNamespace() == NS_CATEGORY ) {
+ } elseif ( $this->mTitle->getNamespace() == NS_CATEGORY ) {
$class = 'mw-hidden-cats-ns-shown';
} else {
$class = 'mw-hidden-cats-hidden';
@@ -790,64 +805,68 @@ END;
$s .= "<div id=\"mw-hidden-catlinks\" class=\"$class\">" .
wfMsgExt( 'hidden-categories', array( 'parsemag', 'escapenoentities' ), count( $allCats['hidden'] ) ) .
$colon . $embed . implode( "$pop $sep $embed", $allCats['hidden'] ) . $pop .
- "</div>";
+ '</div>';
}
# optional 'dmoz-like' category browser. Will be shown under the list
# of categories an article belong to
- if( $wgUseCategoryBrowser ){
+ if( $wgUseCategoryBrowser ) {
$s .= '<br /><hr />';
# get a big array of the parents tree
- $parenttree = $wgTitle->getParentCategoryTree();
+ $parenttree = $this->mTitle->getParentCategoryTree();
# Skin object passed by reference cause it can not be
# accessed under the method subfunction drawCategoryBrowser
- $tempout = explode("\n", Skin::drawCategoryBrowser($parenttree, $this) );
+ $tempout = explode( "\n", Skin::drawCategoryBrowser( $parenttree, $this ) );
# Clean out bogus first entry and sort them
- unset($tempout[0]);
- asort($tempout);
+ unset( $tempout[0] );
+ asort( $tempout );
# Output one per line
- $s .= implode("<br />\n", $tempout);
+ $s .= implode( "<br />\n", $tempout );
}
return $s;
}
- /** Render the array as a serie of links.
+ /**
+ * Render the array as a serie of links.
* @param $tree Array: categories tree returned by Title::getParentCategoryTree
* @param &skin Object: skin passed by reference
* @return String separated by &gt;, terminate with "\n"
*/
- function drawCategoryBrowser( $tree, &$skin ){
+ function drawCategoryBrowser( $tree, &$skin ) {
$return = '';
- foreach ($tree as $element => $parent) {
- if (empty($parent)) {
+ foreach( $tree as $element => $parent ) {
+ if( empty( $parent ) ) {
# element start a new list
$return .= "\n";
} else {
# grab the others elements
- $return .= Skin::drawCategoryBrowser($parent, $skin) . ' &gt; ';
+ $return .= Skin::drawCategoryBrowser( $parent, $skin ) . ' &gt; ';
}
# add our current element to the list
- $eltitle = Title::newFromText($element);
- $return .= $skin->link( $eltitle, $eltitle->getText() ) ;
+ $eltitle = Title::newFromText( $element );
+ $return .= $skin->link( $eltitle, $eltitle->getText() );
}
return $return;
}
function getCategories() {
- $catlinks=$this->getCategoryLinks();
+ $catlinks = $this->getCategoryLinks();
$classes = 'catlinks';
- if( strpos( $catlinks, '<div id="mw-normal-catlinks">' ) === false &&
- strpos( $catlinks, '<div id="mw-hidden-catlinks" class="mw-hidden-cats-hidden">' ) !== false ) {
+ // Check what we're showing
+ global $wgOut, $wgUser;
+ $allCats = $wgOut->getCategoryLinks();
+ $showHidden = $wgUser->getBoolOption( 'showhiddencats' ) ||
+ $this->mTitle->getNamespace() == NS_CATEGORY;
+
+ if( empty( $allCats['normal'] ) && !( !empty( $allCats['hidden'] ) && $showHidden ) ) {
$classes .= ' catlinks-allhidden';
}
- if( !empty( $catlinks ) ){
- return "<div id='catlinks' class='$classes'>{$catlinks}</div>";
- }
+ return "<div id='catlinks' class='$classes'>{$catlinks}</div>";
}
function getQuickbarCompensator( $rows = 1 ) {
@@ -869,12 +888,12 @@ END;
* Returns an empty string by default, if not changed by any hook function.
*/
protected function afterContentHook() {
- $data = "";
+ $data = '';
- if( wfRunHooks( 'SkinAfterContent', array( &$data ) ) ){
+ if( wfRunHooks( 'SkinAfterContent', array( &$data ) ) ) {
// adding just some spaces shouldn't toggle the output
// of the whole <div/>, so we use trim() here
- if( trim( $data ) != '' ){
+ if( trim( $data ) != '' ) {
// Doing this here instead of in the skins to
// ensure that the div has the same ID in all
// skins
@@ -897,13 +916,50 @@ END;
protected function generateDebugHTML() {
global $wgShowDebug, $wgOut;
if ( $wgShowDebug ) {
- $listInternals = str_replace( "\n", "</li>\n<li>", htmlspecialchars( $wgOut->mDebugtext ) );
- return "\n<hr>\n<strong>Debug data:</strong><ul style=\"font-family:monospace;\"><li>" .
- $listInternals . "</li></ul>\n";
+ $listInternals = $this->formatDebugHTML( $wgOut->mDebugtext );
+ return "\n<hr />\n<strong>Debug data:</strong><ul style=\"font-family:monospace;\" id=\"mw-debug-html\">" .
+ $listInternals . "</ul>\n";
}
return '';
}
+ private function formatDebugHTML( $debugText ) {
+ $lines = explode( "\n", $debugText );
+ $curIdent = 0;
+ $ret = '<li>';
+ foreach( $lines as $line ) {
+ $m = array();
+ $display = ltrim( $line );
+ $ident = strlen( $line ) - strlen( $display );
+ $diff = $ident - $curIdent;
+
+ if ( $display == '' ) {
+ $display = "\xc2\xa0";
+ }
+
+ if ( !$ident && $diff < 0 && substr( $display, 0, 9 ) != 'Entering ' && substr( $display, 0, 8 ) != 'Exiting ' ) {
+ $ident = $curIdent;
+ $diff = 0;
+ $display = '<span style="background:yellow;">' . htmlspecialchars( $display ) . '</span>';
+ } else {
+ $display = htmlspecialchars( $display );
+ }
+
+ if ( $diff < 0 ) {
+ $ret .= str_repeat( "</li></ul>\n", -$diff ) . "</li><li>\n";
+ } elseif ( $diff == 0 ) {
+ $ret .= "</li><li>\n";
+ } else {
+ $ret .= str_repeat( "<ul><li>\n", $diff );
+ }
+ $ret .= $display . "\n";
+
+ $curIdent = $ident;
+ }
+ $ret .= str_repeat( '</li></ul>', $curIdent ) . '</li>';
+ return $ret;
+ }
+
/**
* This gets called shortly before the </body> tag.
* @return String HTML to be put before </body>
@@ -918,17 +974,15 @@ END;
* @return String HTML-wrapped JS code to be put before </body>
*/
function bottomScripts() {
- global $wgJsMimeType;
- $bottomScriptText = "\n\t\t<script type=\"$wgJsMimeType\">if (window.runOnloadHook) runOnloadHook();</script>\n";
+ $bottomScriptText = "\n" . Html::inlineScript( 'if (window.runOnloadHook) runOnloadHook();' ) . "\n";
wfRunHooks( 'SkinAfterBottomScripts', array( $this, &$bottomScriptText ) );
return $bottomScriptText;
}
/** @return string Retrievied from HTML text */
function printSource() {
- global $wgTitle;
- $url = htmlspecialchars( $wgTitle->getFullURL() );
- return wfMsg( 'retrievedfrom', '<a href="'.$url.'">'.$url.'</a>' );
+ $url = htmlspecialchars( $this->mTitle->getFullURL() );
+ return wfMsg( 'retrievedfrom', '<a href="' . $url . '">' . $url . '</a>' );
}
function printFooter() {
@@ -937,10 +991,12 @@ END;
}
/** overloaded by derived classes */
- function doAfterContent() { return "</div></div>"; }
+ function doAfterContent() {
+ return '</div></div>';
+ }
function pageTitleLinks() {
- global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgLang;
+ global $wgOut, $wgUser, $wgRequest, $wgLang;
$oldid = $wgRequest->getVal( 'oldid' );
$diff = $wgRequest->getVal( 'diff' );
@@ -957,9 +1013,9 @@ END;
}
if ( $wgOut->isArticleRelated() ) {
- if ( $wgTitle->getNamespace() == NS_FILE ) {
- $name = $wgTitle->getDBkey();
- $image = wfFindFile( $wgTitle );
+ if ( $this->mTitle->getNamespace() == NS_FILE ) {
+ $name = $this->mTitle->getDBkey();
+ $image = wfFindFile( $this->mTitle );
if( $image ) {
$link = htmlspecialchars( $image->getURL() );
$style = $this->getInternalLinkAttributes( $link, $name );
@@ -968,20 +1024,38 @@ END;
}
}
if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
- $s[] .= $this->makeKnownLinkObj( $wgTitle,
- wfMsg( 'currentrev' ) );
+ $s[] .= $this->link(
+ $this->mTitle,
+ wfMsg( 'currentrev' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
if ( $wgUser->getNewtalk() ) {
# do not show "You have new messages" text when we are viewing our
# own talk page
- if( !$wgTitle->equals( $wgUser->getTalkPage() ) ) {
- $tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(), wfMsgHtml( 'newmessageslink' ), 'redirect=no' );
- $dl = $this->makeKnownLinkObj( $wgUser->getTalkPage(), wfMsgHtml( 'newmessagesdifflink' ), 'diff=cur' );
+ if( !$this->mTitle->equals( $wgUser->getTalkPage() ) ) {
+ $tl = $this->link(
+ $wgUser->getTalkPage(),
+ wfMsgHtml( 'newmessageslink' ),
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ );
+
+ $dl = $this->link(
+ $wgUser->getTalkPage(),
+ wfMsgHtml( 'newmessagesdifflink' ),
+ array(),
+ array( 'diff' => 'cur' ),
+ array( 'known', 'noclasses' )
+ );
$s[] = '<strong>'. wfMsg( 'youhavenewmessages', $tl, $dl ) . '</strong>';
# disable caching
- $wgOut->setSquidMaxage(0);
- $wgOut->enableClientCache(false);
+ $wgOut->setSquidMaxage( 0 );
+ $wgOut->enableClientCache( false );
}
}
@@ -993,20 +1067,30 @@ END;
}
function getUndeleteLink() {
- global $wgUser, $wgTitle, $wgContLang, $wgLang, $action;
- if( $wgUser->isAllowed( 'deletedhistory' ) &&
- (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
- ($n = $wgTitle->isDeleted() ) )
- {
- if ( $wgUser->isAllowed( 'undelete' ) ) {
- $msg = 'thisisdeleted';
- } else {
- $msg = 'viewdeleted';
+ global $wgUser, $wgContLang, $wgLang, $wgRequest;
+
+ $action = $wgRequest->getVal( 'action', 'view' );
+
+ if ( $wgUser->isAllowed( 'deletedhistory' ) &&
+ ( $this->mTitle->getArticleId() == 0 || $action == 'history' ) ) {
+ $n = $this->mTitle->isDeleted();
+ if ( $n ) {
+ if ( $wgUser->isAllowed( 'undelete' ) ) {
+ $msg = 'thisisdeleted';
+ } else {
+ $msg = 'viewdeleted';
+ }
+ return wfMsg(
+ $msg,
+ $this->link(
+ SpecialPage::getTitleFor( 'Undelete', $this->mTitle->getPrefixedDBkey() ),
+ wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $wgLang->formatNum( $n ) ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ )
+ );
}
- return wfMsg( $msg,
- $this->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Undelete', $wgTitle->getPrefixedDBkey() ),
- wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $wgLang->formatNum( $n ) ) ) );
}
return '';
}
@@ -1014,9 +1098,13 @@ END;
function printableLink() {
global $wgOut, $wgFeedClasses, $wgRequest, $wgLang;
- $printurl = $wgRequest->escapeAppendQuery( 'printable=yes' );
+ $s = array();
+
+ if ( !$wgOut->isPrintable() ) {
+ $printurl = $wgRequest->escapeAppendQuery( 'printable=yes' );
+ $s[] = "<a href=\"$printurl\" rel=\"alternate\">" . wfMsg( 'printableversion' ) . '</a>';
+ }
- $s[] = "<a href=\"$printurl\" rel=\"alternate\">" . wfMsg( 'printableversion' ) . '</a>';
if( $wgOut->isSyndicated() ) {
foreach( $wgFeedClasses as $format => $class ) {
$feedurl = $wgRequest->escapeAppendQuery( "feed=$format" );
@@ -1027,6 +1115,10 @@ END;
return $wgLang->pipeList( $s );
}
+ /**
+ * Gets the h1 element with the page title.
+ * @return string
+ */
function pageTitle() {
global $wgOut;
$s = '<h1 class="pagetitle">' . $wgOut->getPageTitle() . '</h1>';
@@ -1037,39 +1129,46 @@ END;
global $wgOut;
$sub = $wgOut->getSubtitle();
- if ( '' == $sub ) {
+ if ( $sub == '' ) {
global $wgExtraSubtitle;
$sub = wfMsgExt( 'tagline', 'parsemag' ) . $wgExtraSubtitle;
}
$subpages = $this->subPageSubtitle();
- $sub .= !empty($subpages)?"</p><p class='subpages'>$subpages":'';
+ $sub .= !empty( $subpages ) ? "</p><p class='subpages'>$subpages" : '';
$s = "<p class='subtitle'>{$sub}</p>\n";
return $s;
}
function subPageSubtitle() {
$subpages = '';
- if(!wfRunHooks('SkinSubPageSubtitle', array(&$subpages)))
+ if( !wfRunHooks( 'SkinSubPageSubtitle', array( &$subpages ) ) ) {
return $subpages;
+ }
- global $wgOut, $wgTitle;
- if($wgOut->isArticle() && MWNamespace::hasSubpages( $wgTitle->getNamespace() )) {
- $ptext=$wgTitle->getPrefixedText();
- if(preg_match('/\//',$ptext)) {
- $links = explode('/',$ptext);
+ global $wgOut;
+ if( $wgOut->isArticle() && MWNamespace::hasSubpages( $this->mTitle->getNamespace() ) ) {
+ $ptext = $this->mTitle->getPrefixedText();
+ if( preg_match( '/\//', $ptext ) ) {
+ $links = explode( '/', $ptext );
array_pop( $links );
$c = 0;
$growinglink = '';
$display = '';
- foreach($links as $link) {
+ foreach( $links as $link ) {
$growinglink .= $link;
$display .= $link;
$linkObj = Title::newFromText( $growinglink );
- if( is_object( $linkObj ) && $linkObj->exists() ){
- $getlink = $this->makeKnownLinkObj( $linkObj, htmlspecialchars( $display ) );
+ if( is_object( $linkObj ) && $linkObj->exists() ) {
+ $getlink = $this->link(
+ $linkObj,
+ htmlspecialchars( $display ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
$c++;
- if ($c>1) {
- $subpages .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ if( $c > 1 ) {
+ $subpages .= wfMsgExt( 'pipe-separator', 'escapenoentities' );
} else {
$subpages .= '&lt; ';
}
@@ -1094,7 +1193,7 @@ END;
}
function nameAndLogin() {
- global $wgUser, $wgTitle, $wgLang, $wgContLang;
+ global $wgUser, $wgLang, $wgContLang;
$logoutPage = $wgContLang->specialPage( 'Userlogout' );
@@ -1111,7 +1210,7 @@ END;
$ret .= wfMsg( 'notloggedin' );
}
- $returnTo = $wgTitle->getPrefixedDBkey();
+ $returnTo = $this->mTitle->getPrefixedDBkey();
$query = array();
if ( $logoutPage != $returnTo ) {
$query['returnto'] = $returnTo;
@@ -1125,7 +1224,7 @@ END;
wfMsg( $loginlink ), array(), $query
);
} else {
- $returnTo = $wgTitle->getPrefixedDBkey();
+ $returnTo = $this->mTitle->getPrefixedDBkey();
$talkLink = $this->link( $wgUser->getTalkPage(),
$wgLang->getNsText( NS_TALK ) );
@@ -1164,22 +1263,23 @@ END;
global $wgRequest, $wgUseTwoButtonsSearchForm;
$search = $wgRequest->getText( 'search' );
- $s = '<form id="searchform'.$this->searchboxes.'" name="search" class="inline" method="post" action="'
+ $s = '<form id="searchform' . $this->searchboxes . '" name="search" class="inline" method="post" action="'
. $this->escapeSearchLink() . "\">\n"
- . '<input type="text" id="searchInput'.$this->searchboxes.'" name="search" size="19" value="'
- . htmlspecialchars(substr($search,0,256)) . "\" />\n"
- . '<input type="submit" name="go" value="' . wfMsg ('searcharticle') . '" />';
-
- if ($wgUseTwoButtonsSearchForm)
- $s .= '&nbsp;<input type="submit" name="fulltext" value="' . wfMsg ('searchbutton') . "\" />\n";
- else
- $s .= ' <a href="' . $this->escapeSearchLink() . '" rel="search">' . wfMsg ('powersearch-legend') . "</a>\n";
-
+ . '<input type="text" id="searchInput' . $this->searchboxes . '" name="search" size="19" value="'
+ . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />\n"
+ . '<input type="submit" name="go" value="' . wfMsg( 'searcharticle' ) . '" />';
+
+ if( $wgUseTwoButtonsSearchForm ) {
+ $s .= '&nbsp;<input type="submit" name="fulltext" value="' . wfMsg( 'searchbutton' ) . "\" />\n";
+ } else {
+ $s .= ' <a href="' . $this->escapeSearchLink() . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a>\n";
+ }
+
$s .= '</form>';
-
+
// Ensure unique id's for search boxes made after the first
$this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
-
+
return $s;
}
@@ -1207,7 +1307,7 @@ END;
}
// FIXME: Is using Language::pipeList impossible here? Do not quite understand the use of the newline
- return implode( $s, wfMsgExt( 'pipe-separator' , 'escapenoentities' ) . "\n" );
+ return implode( $s, wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n" );
}
/**
@@ -1244,22 +1344,26 @@ END;
function variantLinks() {
$s = '';
/* show links to different language variants */
- global $wgDisableLangConversion, $wgLang, $wgContLang, $wgTitle;
+ global $wgDisableLangConversion, $wgLang, $wgContLang;
$variants = $wgContLang->getVariants();
if( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
foreach( $variants as $code ) {
$varname = $wgContLang->getVariantname( $code );
- if( $varname == 'disable' )
+ if( $varname == 'disable' ) {
continue;
- $s = $wgLang->pipeList( array( $s, '<a href="' . $wgTitle->escapeLocalUrl( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>' ) );
+ }
+ $s = $wgLang->pipeList( array(
+ $s,
+ '<a href="' . $this->mTitle->escapeLocalURL( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>'
+ ) );
}
}
return $s;
}
function bottomLinks() {
- global $wgOut, $wgUser, $wgTitle, $wgUseTrackbacks;
- $sep = wfMsgExt( 'pipe-separator' , 'escapenoentities' ) . "\n";
+ global $wgOut, $wgUser, $wgUseTrackbacks;
+ $sep = wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n";
$s = '';
if ( $wgOut->isArticleRelated() ) {
@@ -1272,31 +1376,41 @@ END;
$element[] = $this->whatLinksHere();
$element[] = $this->watchPageLinksLink();
- if ($wgUseTrackbacks)
+ if( $wgUseTrackbacks ) {
$element[] = $this->trackbackLink();
+ }
- if ( $wgTitle->getNamespace() == NS_USER
- || $wgTitle->getNamespace() == NS_USER_TALK )
-
+ if (
+ $this->mTitle->getNamespace() == NS_USER ||
+ $this->mTitle->getNamespace() == NS_USER_TALK
+ )
{
- $id=User::idFromName($wgTitle->getText());
- $ip=User::isIP($wgTitle->getText());
+ $id = User::idFromName( $this->mTitle->getText() );
+ $ip = User::isIP( $this->mTitle->getText() );
- if($id || $ip) { # both anons and non-anons have contri list
+ # Both anons and non-anons have contributions list
+ if( $id || $ip ) {
$element[] = $this->userContribsLink();
}
if( $this->showEmailUser( $id ) ) {
$element[] = $this->emailUserLink();
}
}
-
+
$s = implode( $element, $sep );
- if ( $wgTitle->getArticleId() ) {
+ if ( $this->mTitle->getArticleId() ) {
$s .= "\n<br />";
- if($wgUser->isAllowed('delete')) { $s .= $this->deleteThisPage(); }
- if($wgUser->isAllowed('protect')) { $s .= $sep . $this->protectThisPage(); }
- if($wgUser->isAllowed('move')) { $s .= $sep . $this->moveThisPage(); }
+ // Delete/protect/move links for privileged users
+ if( $wgUser->isAllowed( 'delete' ) ) {
+ $s .= $this->deleteThisPage();
+ }
+ if( $wgUser->isAllowed( 'protect' ) ) {
+ $s .= $sep . $this->protectThisPage();
+ }
+ if( $wgUser->isAllowed( 'move' ) ) {
+ $s .= $sep . $this->moveThisPage();
+ }
}
$s .= "<br />\n" . $this->otherLanguages();
}
@@ -1306,14 +1420,22 @@ END;
function pageStats() {
global $wgOut, $wgLang, $wgArticle, $wgRequest, $wgUser;
- global $wgDisableCounters, $wgMaxCredits, $wgShowCreditsIfMax, $wgTitle, $wgPageShowWatchingUsers;
+ global $wgDisableCounters, $wgMaxCredits, $wgShowCreditsIfMax, $wgPageShowWatchingUsers;
$oldid = $wgRequest->getVal( 'oldid' );
$diff = $wgRequest->getVal( 'diff' );
- if ( ! $wgOut->isArticle() ) { return ''; }
- if( !$wgArticle instanceOf Article ) { return ''; }
- if ( isset( $oldid ) || isset( $diff ) ) { return ''; }
- if ( 0 == $wgArticle->getID() ) { return ''; }
+ if ( !$wgOut->isArticle() ) {
+ return '';
+ }
+ if( !$wgArticle instanceof Article ) {
+ return '';
+ }
+ if ( isset( $oldid ) || isset( $diff ) ) {
+ return '';
+ }
+ if ( 0 == $wgArticle->getID() ) {
+ return '';
+ }
$s = '';
if ( !$wgDisableCounters ) {
@@ -1323,7 +1445,7 @@ END;
}
}
- if( $wgMaxCredits != 0 ){
+ if( $wgMaxCredits != 0 ) {
$s .= ' ' . Credits::getCredits( $wgArticle, $wgMaxCredits, $wgShowCreditsIfMax );
} else {
$s .= $this->lastModified();
@@ -1331,15 +1453,19 @@ END;
if( $wgPageShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' ) ) {
$dbr = wfGetDB( DB_SLAVE );
- $watchlist = $dbr->tableName( 'watchlist' );
- $sql = "SELECT COUNT(*) AS n FROM $watchlist
- WHERE wl_title='" . $dbr->strencode($wgTitle->getDBkey()) .
- "' AND wl_namespace=" . $wgTitle->getNamespace() ;
- $res = $dbr->query( $sql, 'Skin::pageStats');
+ $res = $dbr->select(
+ 'watchlist',
+ array( 'COUNT(*) AS n' ),
+ array(
+ 'wl_title' => $dbr->strencode( $this->mTitle->getDBkey() ),
+ 'wl_namespace' => $this->mTitle->getNamespace()
+ ),
+ __METHOD__
+ );
$x = $dbr->fetchObject( $res );
$s .= ' ' . wfMsgExt( 'number_of_watching_users_pageview',
- array( 'parseinline' ), $wgLang->formatNum($x->n)
+ array( 'parseinline' ), $wgLang->formatNum( $x->n )
);
}
@@ -1367,7 +1493,8 @@ END;
$out = '';
if( $wgRightsPage ) {
- $link = $this->makeKnownLink( $wgRightsPage, $wgRightsText );
+ $title = Title::newFromText( $wgRightsPage );
+ $link = $this->linkKnown( $title, $wgRightsText );
} elseif( $wgRightsUrl ) {
$link = $this->makeExternalLink( $wgRightsUrl, $wgRightsText );
} elseif( $wgRightsText ) {
@@ -1376,6 +1503,11 @@ END;
# Give up now
return $out;
}
+ // Allow for site and per-namespace customization of copyright notice.
+ if( isset( $wgArticle ) ) {
+ wfRunHooks( 'SkinCopyrightFooter', array( $wgArticle->getTitle(), $type, &$msg, &$link ) );
+ }
+
$out .= wfMsgForContent( $msg, $link );
return $out;
}
@@ -1385,14 +1517,14 @@ END;
$out = '';
if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
$out = $wgCopyrightIcon;
- } else if ( $wgRightsIcon ) {
+ } elseif ( $wgRightsIcon ) {
$icon = htmlspecialchars( $wgRightsIcon );
if ( $wgRightsUrl ) {
$url = htmlspecialchars( $wgRightsUrl );
$out .= '<a href="'.$url.'">';
}
$text = htmlspecialchars( $wgRightsText );
- $out .= "<img src=\"$icon\" alt='$text' />";
+ $out .= "<img src=\"$icon\" alt=\"$text\" width=\"88\" height=\"31\" />";
if ( $wgRightsUrl ) {
$out .= '</a>';
}
@@ -1400,16 +1532,20 @@ END;
return $out;
}
+ /**
+ * Gets the powered by MediaWiki icon.
+ * @return string
+ */
function getPoweredBy() {
global $wgStylePath;
$url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
- $img = '<a href="http://www.mediawiki.org/"><img src="'.$url.'" alt="Powered by MediaWiki" /></a>';
+ $img = '<a href="http://www.mediawiki.org/"><img src="' . $url . '" height="31" width="88" alt="Powered by MediaWiki" /></a>';
return $img;
}
function lastModified() {
global $wgLang, $wgArticle;
- if( $this->mRevisionId ) {
+ if( $this->mRevisionId && $this->mRevisionId != $wgArticle->getLatest() ) {
$timestamp = Revision::getTimestampFromId( $wgArticle->getTitle(), $this->mRevisionId );
} else {
$timestamp = $wgArticle->getTimestamp();
@@ -1428,12 +1564,15 @@ END;
}
function logoText( $align = '' ) {
- if ( '' != $align ) { $a = " align='{$align}'"; }
- else { $a = ''; }
+ if ( $align != '' ) {
+ $a = " align='{$align}'";
+ } else {
+ $a = '';
+ }
$mp = wfMsg( 'mainpage' );
$mptitle = Title::newMainPage();
- $url = ( is_object($mptitle) ? $mptitle->escapeLocalURL() : '' );
+ $url = ( is_object( $mptitle ) ? $mptitle->escapeLocalURL() : '' );
$logourl = $this->getLogo();
$s = "<a href='{$url}'><img{$a} src='{$logourl}' alt='[{$mp}]' /></a>";
@@ -1441,7 +1580,7 @@ END;
}
/**
- * show a drop-down box of special pages
+ * Show a drop-down box of special pages
*/
function specialPagesList() {
global $wgUser, $wgContLang, $wgServer, $wgRedirectScript;
@@ -1470,18 +1609,22 @@ END;
return $s;
}
+ /**
+ * Gets the link to the wiki's main page.
+ * @return string
+ */
function mainPageLink() {
- $s = $this->makeKnownLinkObj( Title::newMainPage(), wfMsg( 'mainpage' ) );
- return $s;
- }
-
- function copyrightLink() {
- $s = $this->makeKnownLink( wfMsgForContent( 'copyrightpage' ),
- wfMsg( 'copyrightpagename' ) );
+ $s = $this->link(
+ Title::newMainPage(),
+ wfMsg( 'mainpage' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
return $s;
}
- private function footerLink ( $desc, $page ) {
+ private function footerLink( $desc, $page ) {
// if the link description has been set to "-" in the default language,
if ( wfMsgForContent( $desc ) == '-') {
// then it is disabled, for all languages.
@@ -1490,38 +1633,56 @@ END;
// Otherwise, we display the link for the user, described in their
// language (which may or may not be the same as the default language),
// but we make the link target be the one site-wide page.
- return $this->makeKnownLink( wfMsgForContent( $page ),
- wfMsgExt( $desc, array( 'parsemag', 'escapenoentities' ) ) );
+ $title = Title::newFromText( wfMsgForContent( $page ) );
+ return $this->linkKnown(
+ $title,
+ wfMsgExt( $desc, array( 'parsemag', 'escapenoentities' ) )
+ );
}
}
+ /**
+ * Gets the link to the wiki's privacy policy page.
+ */
function privacyLink() {
return $this->footerLink( 'privacy', 'privacypage' );
}
+ /**
+ * Gets the link to the wiki's about page.
+ */
function aboutLink() {
return $this->footerLink( 'aboutsite', 'aboutpage' );
}
+ /**
+ * Gets the link to the wiki's general disclaimers page.
+ */
function disclaimerLink() {
return $this->footerLink( 'disclaimers', 'disclaimerpage' );
}
function editThisPage() {
- global $wgOut, $wgTitle;
+ global $wgOut;
if ( !$wgOut->isArticleRelated() ) {
$s = wfMsg( 'protectedpage' );
} else {
- if( $wgTitle->quickUserCan( 'edit' ) && $wgTitle->exists() ) {
+ if( $this->mTitle->quickUserCan( 'edit' ) && $this->mTitle->exists() ) {
$t = wfMsg( 'editthispage' );
- } elseif( $wgTitle->quickUserCan( 'create' ) && !$wgTitle->exists() ) {
+ } elseif( $this->mTitle->quickUserCan( 'create' ) && !$this->mTitle->exists() ) {
$t = wfMsg( 'create-this-page' );
} else {
$t = wfMsg( 'viewsource' );
}
- $s = $this->makeKnownLinkObj( $wgTitle, $t, $this->editUrlOptions() );
+ $s = $this->link(
+ $this->mTitle,
+ $t,
+ array(),
+ $this->editUrlOptions(),
+ array( 'known', 'noclasses' )
+ );
}
return $s;
}
@@ -1530,27 +1691,35 @@ END;
* Return URL options for the 'edit page' link.
* This may include an 'oldid' specifier, if the current page view is such.
*
- * @return string
+ * @return array
* @private
*/
function editUrlOptions() {
global $wgArticle;
+ $options = array( 'action' => 'edit' );
+
if( $this->mRevisionId && ! $wgArticle->isCurrent() ) {
- return "action=edit&oldid=" . intval( $this->mRevisionId );
- } else {
- return "action=edit";
+ $options['oldid'] = intval( $this->mRevisionId );
}
+
+ return $options;
}
function deleteThisPage() {
- global $wgUser, $wgTitle, $wgRequest;
+ global $wgUser, $wgRequest;
$diff = $wgRequest->getVal( 'diff' );
- if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed('delete') ) {
+ if ( $this->mTitle->getArticleId() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
$t = wfMsg( 'deletethispage' );
- $s = $this->makeKnownLinkObj( $wgTitle, $t, 'action=delete' );
+ $s = $this->link(
+ $this->mTitle,
+ $t,
+ array(),
+ array( 'action' => 'delete' ),
+ array( 'known', 'noclasses' )
+ );
} else {
$s = '';
}
@@ -1558,18 +1727,25 @@ END;
}
function protectThisPage() {
- global $wgUser, $wgTitle, $wgRequest;
+ global $wgUser, $wgRequest;
$diff = $wgRequest->getVal( 'diff' );
- if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed('protect') ) {
- if ( $wgTitle->isProtected() ) {
- $t = wfMsg( 'unprotectthispage' );
- $q = 'action=unprotect';
+ if ( $this->mTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed('protect') ) {
+ if ( $this->mTitle->isProtected() ) {
+ $text = wfMsg( 'unprotectthispage' );
+ $query = array( 'action' => 'unprotect' );
} else {
- $t = wfMsg( 'protectthispage' );
- $q = 'action=protect';
+ $text = wfMsg( 'protectthispage' );
+ $query = array( 'action' => 'protect' );
}
- $s = $this->makeKnownLinkObj( $wgTitle, $t, $q );
+
+ $s = $this->link(
+ $this->mTitle,
+ $text,
+ array(),
+ $query,
+ array( 'known', 'noclasses' )
+ );
} else {
$s = '';
}
@@ -1577,20 +1753,27 @@ END;
}
function watchThisPage() {
- global $wgOut, $wgTitle;
+ global $wgOut;
++$this->mWatchLinkNum;
if ( $wgOut->isArticleRelated() ) {
- if ( $wgTitle->userIsWatching() ) {
- $t = wfMsg( 'unwatchthispage' );
- $q = 'action=unwatch';
- $id = "mw-unwatch-link".$this->mWatchLinkNum;
+ if ( $this->mTitle->userIsWatching() ) {
+ $text = wfMsg( 'unwatchthispage' );
+ $query = array( 'action' => 'unwatch' );
+ $id = 'mw-unwatch-link' . $this->mWatchLinkNum;
} else {
- $t = wfMsg( 'watchthispage' );
- $q = 'action=watch';
- $id = 'mw-watch-link'.$this->mWatchLinkNum;
+ $text = wfMsg( 'watchthispage' );
+ $query = array( 'action' => 'watch' );
+ $id = 'mw-watch-link' . $this->mWatchLinkNum;
}
- $s = $this->makeKnownLinkObj( $wgTitle, $t, $q, '', '', " id=\"$id\"" );
+
+ $s = $this->link(
+ $this->mTitle,
+ $text,
+ array( 'id' => $id ),
+ $query,
+ array( 'known', 'noclasses' )
+ );
} else {
$s = wfMsg( 'notanarticle' );
}
@@ -1598,11 +1781,14 @@ END;
}
function moveThisPage() {
- global $wgTitle;
-
- if ( $wgTitle->quickUserCan( 'move' ) ) {
- return $this->makeKnownLinkObj( SpecialPage::getTitleFor( 'Movepage' ),
- wfMsg( 'movethispage' ), 'target=' . $wgTitle->getPrefixedURL() );
+ if ( $this->mTitle->quickUserCan( 'move' ) ) {
+ return $this->link(
+ SpecialPage::getTitleFor( 'Movepage' ),
+ wfMsg( 'movethispage' ),
+ array(),
+ array( 'target' => $this->mTitle->getPrefixedDBkey() ),
+ array( 'known', 'noclasses' )
+ );
} else {
// no message if page is protected - would be redundant
return '';
@@ -1610,60 +1796,69 @@ END;
}
function historyLink() {
- global $wgTitle;
-
- return $this->link( $wgTitle, wfMsg( 'history' ),
- array( 'rel' => 'archives' ), array( 'action' => 'history' ) );
+ return $this->link(
+ $this->mTitle,
+ wfMsgHtml( 'history' ),
+ array( 'rel' => 'archives' ),
+ array( 'action' => 'history' )
+ );
}
function whatLinksHere() {
- global $wgTitle;
-
- return $this->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Whatlinkshere', $wgTitle->getPrefixedDBkey() ),
- wfMsg( 'whatlinkshere' ) );
+ return $this->link(
+ SpecialPage::getTitleFor( 'Whatlinkshere', $this->mTitle->getPrefixedDBkey() ),
+ wfMsgHtml( 'whatlinkshere' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
function userContribsLink() {
- global $wgTitle;
-
- return $this->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Contributions', $wgTitle->getDBkey() ),
- wfMsg( 'contributions' ) );
+ return $this->link(
+ SpecialPage::getTitleFor( 'Contributions', $this->mTitle->getDBkey() ),
+ wfMsgHtml( 'contributions' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
function showEmailUser( $id ) {
global $wgUser;
$targetUser = User::newFromId( $id );
- return $wgUser->canSendEmail() && # the sending user must have a confirmed email address
+ return $wgUser->canSendEmail() && # the sending user must have a confirmed email address
$targetUser->canReceiveEmail(); # the target user must have a confirmed email address and allow emails from users
}
function emailUserLink() {
- global $wgTitle;
-
- return $this->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Emailuser', $wgTitle->getDBkey() ),
- wfMsg( 'emailuser' ) );
+ return $this->link(
+ SpecialPage::getTitleFor( 'Emailuser', $this->mTitle->getDBkey() ),
+ wfMsg( 'emailuser' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
function watchPageLinksLink() {
- global $wgOut, $wgTitle;
-
- if ( ! $wgOut->isArticleRelated() ) {
+ global $wgOut;
+ if ( !$wgOut->isArticleRelated() ) {
return '(' . wfMsg( 'notanarticle' ) . ')';
} else {
- return $this->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Recentchangeslinked', $wgTitle->getPrefixedDBkey() ),
- wfMsg( 'recentchangeslinked' ) );
+ return $this->link(
+ SpecialPage::getTitleFor( 'Recentchangeslinked', $this->mTitle->getPrefixedDBkey() ),
+ wfMsg( 'recentchangeslinked-toolbox' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
}
function trackbackLink() {
- global $wgTitle;
-
- return "<a href=\"" . $wgTitle->trackbackURL() . "\">"
- . wfMsg('trackbacklink') . "</a>";
+ return '<a href="' . $this->mTitle->trackbackURL() . '">'
+ . wfMsg( 'trackbacklink' ) . '</a>';
}
function otherLanguages() {
@@ -1680,35 +1875,41 @@ END;
$s = wfMsg( 'otherlanguages' ) . wfMsg( 'colon-separator' );
$first = true;
- if($wgContLang->isRTL()) $s .= '<span dir="LTR">';
+ if( $wgContLang->isRTL() ) {
+ $s .= '<span dir="LTR">';
+ }
foreach( $a as $l ) {
- if ( ! $first ) { $s .= wfMsgExt( 'pipe-separator' , 'escapenoentities' ); }
+ if ( !$first ) {
+ $s .= wfMsgExt( 'pipe-separator', 'escapenoentities' );
+ }
$first = false;
$nt = Title::newFromText( $l );
$url = $nt->escapeFullURL();
$text = $wgContLang->getLanguageName( $nt->getInterwiki() );
- if ( '' == $text ) { $text = $l; }
- $style = $this->getExternalLinkAttributes( $l, $text );
+ if ( $text == '' ) {
+ $text = $l;
+ }
+ $style = $this->getExternalLinkAttributes();
$s .= "<a href=\"{$url}\"{$style}>{$text}</a>";
}
- if($wgContLang->isRTL()) $s .= '</span>';
+ if( $wgContLang->isRTL() ) {
+ $s .= '</span>';
+ }
return $s;
}
function talkLink() {
- global $wgTitle;
-
- if ( NS_SPECIAL == $wgTitle->getNamespace() ) {
+ if ( NS_SPECIAL == $this->mTitle->getNamespace() ) {
# No discussion links for special pages
return '';
}
$linkOptions = array();
- if( $wgTitle->isTalkPage() ) {
- $link = $wgTitle->getSubjectPage();
+ if( $this->mTitle->isTalkPage() ) {
+ $link = $this->mTitle->getSubjectPage();
switch( $link->getNamespace() ) {
case NS_MAIN:
$text = wfMsg( 'articlepage' );
@@ -1741,7 +1942,7 @@ END;
$text = wfMsg( 'articlepage' );
}
} else {
- $link = $wgTitle->getTalkPage();
+ $link = $this->mTitle->getTalkPage();
$text = wfMsg( 'talkpage' );
}
@@ -1751,24 +1952,33 @@ END;
}
function commentLink() {
- global $wgTitle, $wgOut;
+ global $wgOut;
- if ( $wgTitle->getNamespace() == NS_SPECIAL ) {
+ if ( $this->mTitle->getNamespace() == NS_SPECIAL ) {
return '';
}
# __NEWSECTIONLINK___ changes behaviour here
- # If it's present, the link points to this page, otherwise
+ # If it is present, the link points to this page, otherwise
# it points to the talk page
- if( $wgTitle->isTalkPage() ) {
- $title = $wgTitle;
+ if( $this->mTitle->isTalkPage() ) {
+ $title = $this->mTitle;
} elseif( $wgOut->showNewSectionLink() ) {
- $title = $wgTitle;
+ $title = $this->mTitle;
} else {
- $title = $wgTitle->getTalkPage();
+ $title = $this->mTitle->getTalkPage();
}
- return $this->makeKnownLinkObj( $title, wfMsg( 'postcomment' ), 'action=edit&section=new' );
+ return $this->link(
+ $title,
+ wfMsg( 'postcomment' ),
+ array(),
+ array(
+ 'action' => 'edit',
+ 'section' => 'new'
+ ),
+ array( 'known', 'noclasses' )
+ );
}
/* these are used extensively in SkinTemplate, but also some other places */
@@ -1800,8 +2010,10 @@ END;
return $title->getLocalURL( $urlaction );
}
- # If url string starts with http, consider as external URL, else
- # internal
+ /**
+ * If url string starts with http, consider as external URL, else
+ * internal
+ */
static function makeInternalOrExternalUrl( $name ) {
if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $name ) ) {
return $name;
@@ -1870,27 +2082,49 @@ END;
}
$bar = array();
- $lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
+ $this->addToSidebar( $bar, 'sidebar' );
+
+ wfRunHooks( 'SkinBuildSidebar', array( $this, &$bar ) );
+ if ( $wgEnableSidebarCache ) {
+ $parserMemc->set( $key, $bar, $wgSidebarCacheExpiry );
+ }
+ wfProfileOut( __METHOD__ );
+ return $bar;
+ }
+ /**
+ * Add content from a sidebar system message
+ * Currently only used for MediaWiki:Sidebar (but may be used by Extensions)
+ *
+ * @param &$bar array
+ * @param $message String
+ */
+ function addToSidebar( &$bar, $message ) {
+ $lines = explode( "\n", wfMsgForContent( $message ) );
$heading = '';
- foreach ($lines as $line) {
- if (strpos($line, '*') !== 0)
+ foreach( $lines as $line ) {
+ if( strpos( $line, '*' ) !== 0 ) {
continue;
- if (strpos($line, '**') !== 0) {
- $line = trim($line, '* ');
- $heading = $line;
- if( !array_key_exists($heading, $bar) ) $bar[$heading] = array();
+ }
+ if( strpos( $line, '**') !== 0 ) {
+ $heading = trim( $line, '* ' );
+ if( !array_key_exists( $heading, $bar ) ) {
+ $bar[$heading] = array();
+ }
} else {
- if (strpos($line, '|') !== false) { // sanity check
- $line = array_map('trim', explode( '|' , trim($line, '* '), 2 ) );
+ if( strpos( $line, '|' ) !== false ) { // sanity check
+ $line = array_map( 'trim', explode( '|', trim( $line, '* ' ), 2 ) );
$link = wfMsgForContent( $line[0] );
- if ($link == '-')
+ if( $link == '-' ) {
continue;
+ }
- $text = wfMsgExt($line[1], 'parsemag');
- if (wfEmptyMsg($line[1], $text))
+ $text = wfMsgExt( $line[1], 'parsemag' );
+ if( wfEmptyMsg( $line[1], $text ) ) {
$text = $line[1];
- if (wfEmptyMsg($line[0], $link))
+ }
+ if( wfEmptyMsg( $line[0], $link ) ) {
$link = $line[0];
+ }
if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $link ) ) {
$href = $link;
@@ -1907,15 +2141,25 @@ END;
$bar[$heading][] = array(
'text' => $text,
'href' => $href,
- 'id' => 'n-' . strtr($line[1], ' ', '-'),
+ 'id' => 'n-' . strtr( $line[1], ' ', '-' ),
'active' => false
);
- } else { continue; }
+ } else {
+ continue;
+ }
}
}
- wfRunHooks('SkinBuildSidebar', array($this, &$bar));
- if ( $wgEnableSidebarCache ) $parserMemc->set( $key, $bar, $wgSidebarCacheExpiry );
- wfProfileOut( __METHOD__ );
- return $bar;
+ }
+
+ /**
+ * Should we include common/wikiprintable.css? Skins that have their own
+ * print stylesheet should override this and return false. (This is an
+ * ugly hack to get Monobook to play nicely with
+ * OutputPage::headElement().)
+ *
+ * @return bool
+ */
+ public function commonPrintStylesheet() {
+ return true;
}
}
diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php
index 4317a93e..e5fdb274 100644
--- a/includes/SkinTemplate.php
+++ b/includes/SkinTemplate.php
@@ -27,11 +27,11 @@ if ( ! defined( 'MEDIAWIKI' ) )
class MediaWiki_I18N {
var $_context = array();
- function set($varName, $value) {
+ function set( $varName, $value ) {
$this->_context[$varName] = $value;
}
- function translate($value) {
+ function translate( $value ) {
wfProfileIn( __METHOD__ );
// Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
@@ -40,12 +40,12 @@ class MediaWiki_I18N {
$value = wfMsg( $value );
// interpolate variables
$m = array();
- while (preg_match('/\$([0-9]*?)/sm', $value, $m)) {
- list($src, $var) = $m;
+ while( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
+ list( $src, $var ) = $m;
wfSuppressWarnings();
$varValue = $this->_context[$var];
wfRestoreWarnings();
- $value = str_replace($src, $varValue, $value);
+ $value = str_replace( $src, $varValue, $value );
}
wfProfileOut( __METHOD__ );
return $value;
@@ -70,38 +70,30 @@ class SkinTemplate extends Skin {
*/
/**
- * Name of our skin, set in initPage()
- * It probably need to be all lower case.
+ * Name of our skin, it probably needs to be all lower case. Child classes
+ * should override the default.
*/
- var $skinname;
+ var $skinname = 'monobook';
/**
- * Stylesheets set to use
- * Sub directory in ./skins/ where various stylesheets are located
+ * Stylesheets set to use. Subdirectory in skins/ where various stylesheets
+ * are located. Child classes should override the default.
*/
- var $stylename;
+ var $stylename = 'monobook';
/**
- * For QuickTemplate, the name of the subclass which
- * will actually fill the template.
+ * For QuickTemplate, the name of the subclass which will actually fill the
+ * template. Child classes should override the default.
*/
- var $template;
-
- /**#@-*/
+ var $template = 'QuickTemplate';
/**
- * Setup the base parameters...
- * Child classes should override this to set the name,
- * style subdirectory, and template filler callback.
- *
- * @param $out OutputPage
+ * Whether this skin use OutputPage::headElement() to generate the <head>
+ * tag
*/
- function initPage( OutputPage $out ) {
- parent::initPage( $out );
- $this->skinname = 'monobook';
- $this->stylename = 'monobook';
- $this->template = 'QuickTemplate';
- }
+ var $useHeadElement = false;
+
+ /**#@-*/
/**
* Add specific styles for this skin
@@ -110,7 +102,7 @@ class SkinTemplate extends Skin {
*/
function setupSkinUserCss( OutputPage $out ){
$out->addStyle( 'common/shared.css', 'screen' );
- $out->addStyle( 'common/commonPrint.css', 'print' );
+ $out->addStyle( 'common/commonPrint.css', 'print' );
}
/**
@@ -124,7 +116,7 @@ class SkinTemplate extends Skin {
* @return object
* @private
*/
- function setupTemplate( $classname, $repository=false, $cache_dir=false ) {
+ function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
return new $classname();
}
@@ -134,15 +126,15 @@ class SkinTemplate extends Skin {
* @param $out OutputPage
*/
function outputPage( OutputPage $out ) {
- global $wgTitle, $wgArticle, $wgUser, $wgLang, $wgContLang;
+ global $wgArticle, $wgUser, $wgLang, $wgContLang;
global $wgScript, $wgStylePath, $wgContLanguageCode;
global $wgMimeType, $wgJsMimeType, $wgOutputEncoding, $wgRequest;
- global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces;
+ global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
global $wgDisableCounters, $wgLogo, $wgHideInterlanguageLinks;
global $wgMaxCredits, $wgShowCreditsIfMax;
global $wgPageShowWatchingUsers;
- global $wgUseTrackbacks, $wgUseSiteJs;
- global $wgArticlePath, $wgScriptPath, $wgServer, $wgLang, $wgCanonicalNamespaceNames;
+ global $wgUseTrackbacks, $wgUseSiteJs, $wgDebugComments;
+ global $wgArticlePath, $wgScriptPath, $wgServer;
wfProfileIn( __METHOD__ );
@@ -150,23 +142,31 @@ class SkinTemplate extends Skin {
$diff = $wgRequest->getVal( 'diff' );
$action = $wgRequest->getVal( 'action', 'view' );
- wfProfileIn( __METHOD__."-init" );
+ wfProfileIn( __METHOD__ . '-init' );
$this->initPage( $out );
$this->setMembers();
$tpl = $this->setupTemplate( $this->template, 'skins' );
#if ( $wgUseDatabaseMessages ) { // uncomment this to fall back to GetText
- $tpl->setTranslator(new MediaWiki_I18N());
+ $tpl->setTranslator( new MediaWiki_I18N() );
#}
- wfProfileOut( __METHOD__."-init" );
+ wfProfileOut( __METHOD__ . '-init' );
- wfProfileIn( __METHOD__."-stuff" );
- $this->thispage = $this->mTitle->getPrefixedDbKey();
+ wfProfileIn( __METHOD__ . '-stuff' );
+ $this->thispage = $this->mTitle->getPrefixedDBkey();
$this->thisurl = $this->mTitle->getPrefixedURL();
+ $query = array();
+ if ( !$wgRequest->wasPosted() ) {
+ $query = $wgRequest->getValues();
+ unset( $query['title'] );
+ unset( $query['returnto'] );
+ unset( $query['returntoquery'] );
+ }
+ $this->thisquery = wfUrlencode( wfArrayToCGI( $query ) );
$this->loggedin = $wgUser->isLoggedIn();
- $this->iscontent = ($this->mTitle->getNamespace() != NS_SPECIAL );
- $this->iseditable = ($this->iscontent and !($action == 'edit' or $action == 'submit'));
+ $this->iscontent = ( $this->mTitle->getNamespace() != NS_SPECIAL );
+ $this->iseditable = ( $this->iscontent and !( $action == 'edit' or $action == 'submit' ) );
$this->username = $wgUser->getName();
if ( $wgUser->isLoggedIn() || $this->showIPinHeader() ) {
@@ -177,22 +177,59 @@ class SkinTemplate extends Skin {
$this->userpageUrlDetails = self::makeKnownUrlDetails( $this->userpage );
}
- $this->userjs = $this->userjsprev = false;
- $this->setupUserCss( $out );
- $this->setupUserJs( $out->isUserJsAllowed() );
$this->titletxt = $this->mTitle->getPrefixedText();
- wfProfileOut( __METHOD__."-stuff" );
+ wfProfileOut( __METHOD__ . '-stuff' );
- wfProfileIn( __METHOD__."-stuff2" );
+ wfProfileIn( __METHOD__ . '-stuff-head' );
+ if ( $this->useHeadElement ) {
+ $pagecss = $this->setupPageCss();
+ if( $pagecss )
+ $out->addInlineStyle( $pagecss );
+ } else {
+ $this->setupUserCss( $out );
+
+ $tpl->set( 'pagecss', $this->setupPageCss() );
+ $tpl->setRef( 'usercss', $this->usercss );
+
+ $this->userjs = $this->userjsprev = false;
+ $this->setupUserJs( $out->isUserJsAllowed() );
+ $tpl->setRef( 'userjs', $this->userjs );
+ $tpl->setRef( 'userjsprev', $this->userjsprev );
+
+ if( $wgUseSiteJs ) {
+ $jsCache = $this->loggedin ? '&smaxage=0' : '';
+ $tpl->set( 'jsvarurl',
+ self::makeUrl( '-',
+ "action=raw$jsCache&gen=js&useskin=" .
+ urlencode( $this->getSkinName() ) ) );
+ } else {
+ $tpl->set( 'jsvarurl', false );
+ }
+
+ $tpl->setRef( 'xhtmldefaultnamespace', $wgXhtmlDefaultNamespace );
+ $tpl->set( 'xhtmlnamespaces', $wgXhtmlNamespaces );
+ $tpl->set( 'html5version', $wgHtml5Version );
+ $tpl->set( 'headlinks', $out->getHeadLinks() );
+ $tpl->set( 'csslinks', $out->buildCssLinks() );
+
+ if( $wgUseTrackbacks && $out->isArticleRelated() ) {
+ $tpl->set( 'trackbackhtml', $out->getTitle()->trackbackRDF() );
+ } else {
+ $tpl->set( 'trackbackhtml', null );
+ }
+ }
+ wfProfileOut( __METHOD__ . '-stuff-head' );
+
+ wfProfileIn( __METHOD__ . '-stuff2' );
$tpl->set( 'title', $out->getPageTitle() );
$tpl->set( 'pagetitle', $out->getHTMLTitle() );
$tpl->set( 'displaytitle', $out->mPageLinkTitle );
$tpl->set( 'pageclass', $this->getPageClasses( $this->mTitle ) );
- $tpl->set( 'skinnameclass', ( "skin-" . Sanitizer::escapeClass( $this->getSkinName ( ) ) ) );
+ $tpl->set( 'skinnameclass', ( 'skin-' . Sanitizer::escapeClass( $this->getSkinName() ) ) );
- $nsname = isset( $wgCanonicalNamespaceNames[ $this->mTitle->getNamespace() ] ) ?
- $wgCanonicalNamespaceNames[ $this->mTitle->getNamespace() ] :
- $this->mTitle->getNsText();
+ $nsname = MWNamespace::exists( $this->mTitle->getNamespace() ) ?
+ MWNamespace::getCanonicalName( $this->mTitle->getNamespace() ) :
+ $this->mTitle->getNsText();
$tpl->set( 'nscanonical', $nsname );
$tpl->set( 'nsnumber', $this->mTitle->getNamespace() );
@@ -203,54 +240,45 @@ class SkinTemplate extends Skin {
$tpl->set( 'isarticle', $out->isArticle() );
- $tpl->setRef( "thispage", $this->thispage );
+ $tpl->setRef( 'thispage', $this->thispage );
$subpagestr = $this->subPageSubtitle();
$tpl->set(
- 'subtitle', !empty($subpagestr)?
- '<span class="subpages">'.$subpagestr.'</span>'.$out->getSubtitle():
+ 'subtitle', !empty( $subpagestr ) ?
+ '<span class="subpages">'.$subpagestr.'</span>'.$out->getSubtitle() :
$out->getSubtitle()
);
$undelete = $this->getUndeleteLink();
$tpl->set(
- "undelete", !empty($undelete)?
- '<span class="subpages">'.$undelete.'</span>':
+ 'undelete', !empty( $undelete ) ?
+ '<span class="subpages">'.$undelete.'</span>' :
''
);
- $tpl->set( 'catlinks', $this->getCategories());
+ $tpl->set( 'catlinks', $this->getCategories() );
if( $out->isSyndicated() ) {
$feeds = array();
foreach( $out->getSyndicationLinks() as $format => $link ) {
$feeds[$format] = array(
'text' => wfMsg( "feed-$format" ),
- 'href' => $link );
+ 'href' => $link
+ );
}
$tpl->setRef( 'feeds', $feeds );
} else {
$tpl->set( 'feeds', false );
}
- if ($wgUseTrackbacks && $out->isArticleRelated()) {
- $tpl->set( 'trackbackhtml', $wgTitle->trackbackRDF() );
- } else {
- $tpl->set( 'trackbackhtml', null );
- }
- $tpl->setRef( 'xhtmldefaultnamespace', $wgXhtmlDefaultNamespace );
- $tpl->set( 'xhtmlnamespaces', $wgXhtmlNamespaces );
$tpl->setRef( 'mimetype', $wgMimeType );
$tpl->setRef( 'jsmimetype', $wgJsMimeType );
$tpl->setRef( 'charset', $wgOutputEncoding );
- $tpl->set( 'headlinks', $out->getHeadLinks() );
- $tpl->set( 'headscripts', $out->getScript() );
- $tpl->set( 'csslinks', $out->buildCssLinks() );
$tpl->setRef( 'wgScript', $wgScript );
$tpl->setRef( 'skinname', $this->skinname );
$tpl->set( 'skinclass', get_class( $this ) );
$tpl->setRef( 'stylename', $this->stylename );
- $tpl->set( 'printable', $wgRequest->getBool( 'printable' ) );
+ $tpl->set( 'printable', $out->isPrintable() );
$tpl->set( 'handheld', $wgRequest->getBool( 'handheld' ) );
$tpl->setRef( 'loggedin', $this->loggedin );
- $tpl->set('notspecialpage', $this->mTitle->getNamespace() != NS_SPECIAL);
+ $tpl->set( 'notspecialpage', $this->mTitle->getNamespace() != NS_SPECIAL );
/* XXX currently unused, might get useful later
$tpl->set( "editable", ($this->mTitle->getNamespace() != NS_SPECIAL ) );
$tpl->set( "exists", $this->mTitle->getArticleID() != 0 );
@@ -259,111 +287,130 @@ class SkinTemplate extends Skin {
$tpl->set( "helppage", wfMsg('helppage'));
*/
$tpl->set( 'searchaction', $this->escapeSearchLink() );
- $tpl->set( 'searchtitle', SpecialPage::getTitleFor('search')->getPrefixedDBKey() );
+ $tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBKey() );
$tpl->set( 'search', trim( $wgRequest->getVal( 'search' ) ) );
$tpl->setRef( 'stylepath', $wgStylePath );
$tpl->setRef( 'articlepath', $wgArticlePath );
$tpl->setRef( 'scriptpath', $wgScriptPath );
$tpl->setRef( 'serverurl', $wgServer );
$tpl->setRef( 'logopath', $wgLogo );
- $tpl->setRef( "lang", $wgContLanguageCode );
- $tpl->set( 'dir', $wgContLang->isRTL() ? "rtl" : "ltr" );
+ $tpl->setRef( 'lang', $wgContLanguageCode );
+ $tpl->set( 'dir', $wgContLang->getDir() );
$tpl->set( 'rtl', $wgContLang->isRTL() );
+ $tpl->set( 'capitalizeallnouns', $wgLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
$tpl->set( 'langname', $wgContLang->getLanguageName( $wgContLanguageCode ) );
$tpl->set( 'showjumplinks', $wgUser->getOption( 'showjumplinks' ) );
- $tpl->set( 'username', $wgUser->isAnon() ? NULL : $this->username );
- $tpl->setRef( 'userpage', $this->userpage);
- $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href']);
+ $tpl->set( 'username', $wgUser->isAnon() ? null : $this->username );
+ $tpl->setRef( 'userpage', $this->userpage );
+ $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
$tpl->set( 'userlang', $wgLang->getCode() );
- $tpl->set( 'pagecss', $this->setupPageCss() );
- $tpl->setRef( 'usercss', $this->usercss);
- $tpl->setRef( 'userjs', $this->userjs);
- $tpl->setRef( 'userjsprev', $this->userjsprev);
- if( $wgUseSiteJs ) {
- $jsCache = $this->loggedin ? '&smaxage=0' : '';
- $tpl->set( 'jsvarurl',
- self::makeUrl('-',
- "action=raw$jsCache&gen=js&useskin=" .
- urlencode( $this->getSkinName() ) ) );
- } else {
- $tpl->set('jsvarurl', false);
+
+ // Users can have their language set differently than the
+ // content of the wiki. For these users, tell the web browser
+ // that interface elements are in a different language.
+ $tpl->set( 'userlangattributes', '');
+ $tpl->set( 'specialpageattributes', '');
+
+ $lang = $wgLang->getCode();
+ $dir = $wgLang->getDir();
+ if ( $lang !== $wgContLang->getCode() || $dir !== $wgContLang->getDir() ) {
+ $attrs = " lang='$lang' dir='$dir'";
+
+ $tpl->set( 'userlangattributes', $attrs );
+
+ // The content of SpecialPages should be presented in the
+ // user's language. Content of regular pages should not be touched.
+ if($this->mTitle->isSpecialPage()) {
+ $tpl->set( 'specialpageattributes', $attrs );
+ }
}
+
$newtalks = $wgUser->getNewMessageLinks();
+ $ntl = '';
- if (count($newtalks) == 1 && $newtalks[0]["wiki"] === wfWikiID() ) {
+ if( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
$usertitle = $this->mUser->getUserPage();
$usertalktitle = $usertitle->getTalkPage();
+
if( !$usertalktitle->equals( $this->mTitle ) ) {
- $ntl = wfMsg( 'youhavenewmessages',
- $this->makeKnownLinkObj(
- $usertalktitle,
- wfMsgHtml( 'newmessageslink' ),
- 'redirect=no'
- ),
- $this->makeKnownLinkObj(
- $usertalktitle,
- wfMsgHtml( 'newmessagesdifflink' ),
- 'diff=cur'
- )
+ $newmessageslink = $this->link(
+ $usertalktitle,
+ wfMsgHtml( 'newmessageslink' ),
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ );
+
+ $newmessagesdifflink = $this->link(
+ $usertalktitle,
+ wfMsgHtml( 'newmessagesdifflink' ),
+ array(),
+ array( 'diff' => 'cur' ),
+ array( 'known', 'noclasses' )
+ );
+
+ $ntl = wfMsg(
+ 'youhavenewmessages',
+ $newmessageslink,
+ $newmessagesdifflink
);
# Disable Cache
- $out->setSquidMaxage(0);
+ $out->setSquidMaxage( 0 );
}
- } else if (count($newtalks)) {
- $sep = str_replace("_", " ", wfMsgHtml("newtalkseparator"));
+ } else if( count( $newtalks ) ) {
+ // _>" " for BC <= 1.16
+ $sep = str_replace( '_', ' ', wfMsgHtml( 'newtalkseparator' ) );
$msgs = array();
- foreach ($newtalks as $newtalk) {
- $msgs[] = Xml::element("a",
- array('href' => $newtalk["link"]), $newtalk["wiki"]);
+ foreach( $newtalks as $newtalk ) {
+ $msgs[] = Xml::element('a',
+ array( 'href' => $newtalk['link'] ), $newtalk['wiki'] );
}
- $parts = implode($sep, $msgs);
- $ntl = wfMsgHtml('youhavenewmessagesmulti', $parts);
- $out->setSquidMaxage(0);
- } else {
- $ntl = '';
+ $parts = implode( $sep, $msgs );
+ $ntl = wfMsgHtml( 'youhavenewmessagesmulti', $parts );
+ $out->setSquidMaxage( 0 );
}
- wfProfileOut( __METHOD__."-stuff2" );
+ wfProfileOut( __METHOD__ . '-stuff2' );
- wfProfileIn( __METHOD__."-stuff3" );
+ wfProfileIn( __METHOD__ . '-stuff3' );
$tpl->setRef( 'newtalk', $ntl );
$tpl->setRef( 'skin', $this );
$tpl->set( 'logo', $this->logoText() );
- if ( $out->isArticle() and (!isset( $oldid ) or isset( $diff )) and
- $wgArticle and 0 != $wgArticle->getID() )
- {
+ if ( $out->isArticle() and ( !isset( $oldid ) or isset( $diff ) ) and
+ $wgArticle and 0 != $wgArticle->getID() ){
if ( !$wgDisableCounters ) {
$viewcount = $wgLang->formatNum( $wgArticle->getCount() );
if ( $viewcount ) {
- $tpl->set('viewcount', wfMsgExt( 'viewcount', array( 'parseinline' ), $viewcount ) );
+ $tpl->set( 'viewcount', wfMsgExt( 'viewcount', array( 'parseinline' ), $viewcount ) );
} else {
- $tpl->set('viewcount', false);
+ $tpl->set( 'viewcount', false );
}
} else {
- $tpl->set('viewcount', false);
+ $tpl->set( 'viewcount', false );
}
- if ($wgPageShowWatchingUsers) {
+ if( $wgPageShowWatchingUsers ) {
$dbr = wfGetDB( DB_SLAVE );
$watchlist = $dbr->tableName( 'watchlist' );
- $sql = "SELECT COUNT(*) AS n FROM $watchlist
- WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBkey()) .
- "' AND wl_namespace=" . $this->mTitle->getNamespace() ;
- $res = $dbr->query( $sql, 'SkinTemplate::outputPage');
+ $res = $dbr->select( 'watchlist',
+ array( 'COUNT(*) AS n' ),
+ array( 'wl_title' => $dbr->strencode( $this->mTitle->getDBkey() ), 'wl_namespace' => $this->mTitle->getNamespace() ),
+ __METHOD__
+ );
$x = $dbr->fetchObject( $res );
$numberofwatchingusers = $x->n;
- if ($numberofwatchingusers > 0) {
- $tpl->set('numberofwatchingusers',
- wfMsgExt('number_of_watching_users_pageview', array('parseinline'),
- $wgLang->formatNum($numberofwatchingusers))
+ if( $numberofwatchingusers > 0 ) {
+ $tpl->set( 'numberofwatchingusers',
+ wfMsgExt( 'number_of_watching_users_pageview', array( 'parseinline' ),
+ $wgLang->formatNum( $numberofwatchingusers ) )
);
} else {
- $tpl->set('numberofwatchingusers', false);
+ $tpl->set( 'numberofwatchingusers', false );
}
} else {
- $tpl->set('numberofwatchingusers', false);
+ $tpl->set( 'numberofwatchingusers', false );
}
- $tpl->set('copyright',$this->getCopyright());
+ $tpl->set( 'copyright', $this->getCopyright() );
$this->credits = false;
@@ -376,28 +423,33 @@ class SkinTemplate extends Skin {
$tpl->setRef( 'credits', $this->credits );
} elseif ( isset( $oldid ) && !isset( $diff ) ) {
- $tpl->set('copyright', $this->getCopyright());
- $tpl->set('viewcount', false);
- $tpl->set('lastmod', false);
- $tpl->set('credits', false);
- $tpl->set('numberofwatchingusers', false);
+ $tpl->set( 'copyright', $this->getCopyright() );
+ $tpl->set( 'viewcount', false );
+ $tpl->set( 'lastmod', false );
+ $tpl->set( 'credits', false );
+ $tpl->set( 'numberofwatchingusers', false );
} else {
- $tpl->set('copyright', false);
- $tpl->set('viewcount', false);
- $tpl->set('lastmod', false);
- $tpl->set('credits', false);
- $tpl->set('numberofwatchingusers', false);
+ $tpl->set( 'copyright', false );
+ $tpl->set( 'viewcount', false );
+ $tpl->set( 'lastmod', false );
+ $tpl->set( 'credits', false );
+ $tpl->set( 'numberofwatchingusers', false );
}
- wfProfileOut( __METHOD__."-stuff3" );
+ wfProfileOut( __METHOD__ . '-stuff3' );
- wfProfileIn( __METHOD__."-stuff4" );
+ wfProfileIn( __METHOD__ . '-stuff4' );
$tpl->set( 'copyrightico', $this->getCopyrightIcon() );
$tpl->set( 'poweredbyico', $this->getPoweredBy() );
$tpl->set( 'disclaimer', $this->disclaimerLink() );
$tpl->set( 'privacy', $this->privacyLink() );
$tpl->set( 'about', $this->aboutLink() );
- $tpl->setRef( 'debug', $out->mDebugtext );
+ if ( $wgDebugComments ) {
+ $tpl->setRef( 'debug', $out->mDebugtext );
+ } else {
+ $tpl->set( 'debug', '' );
+ }
+
$tpl->set( 'reporttime', wfReportTime() );
$tpl->set( 'sitenotice', wfGetSiteNotice() );
$tpl->set( 'bottomscripts', $this->bottomScripts() );
@@ -413,42 +465,41 @@ class SkinTemplate extends Skin {
foreach( $out->getLanguageLinks() as $l ) {
$tmp = explode( ':', $l, 2 );
$class = 'interwiki-' . $tmp[0];
- unset($tmp);
+ unset( $tmp );
$nt = Title::newFromText( $l );
if ( $nt ) {
$language_urls[] = array(
'href' => $nt->getFullURL(),
- 'text' => ($wgContLang->getLanguageName( $nt->getInterwiki()) != ''?$wgContLang->getLanguageName( $nt->getInterwiki()) : $l),
+ 'text' => ( $wgContLang->getLanguageName( $nt->getInterwiki() ) != '' ?
+ $wgContLang->getLanguageName( $nt->getInterwiki() ) : $l ),
'class' => $class
);
}
}
}
- if(count($language_urls)) {
- $tpl->setRef( 'language_urls', $language_urls);
+ if( count( $language_urls ) ) {
+ $tpl->setRef( 'language_urls', $language_urls );
} else {
- $tpl->set('language_urls', false);
+ $tpl->set( 'language_urls', false );
}
- wfProfileOut( __METHOD__."-stuff4" );
+ wfProfileOut( __METHOD__ . '-stuff4' );
- wfProfileIn( __METHOD__."-stuff5" );
+ wfProfileIn( __METHOD__ . '-stuff5' );
# Personal toolbar
- $tpl->set('personal_urls', $this->buildPersonalUrls());
+ $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
$content_actions = $this->buildContentActionUrls();
- $tpl->setRef('content_actions', $content_actions);
+ $tpl->setRef( 'content_actions', $content_actions );
- // XXX: attach this from javascript, same with section editing
- if($this->iseditable && $wgUser->getOption("editondblclick") )
- {
- $encEditUrl = Xml::escapeJsString( $this->mTitle->getLocalUrl( $this->editUrlOptions() ) );
- $tpl->set('body_ondblclick', 'document.location = "' . $encEditUrl . '";');
- } else {
- $tpl->set('body_ondblclick', false);
- }
- $tpl->set( 'body_onload', false );
$tpl->set( 'sidebar', $this->buildSidebar() );
$tpl->set( 'nav_urls', $this->buildNavUrls() );
+ // Set the head scripts near the end, in case the above actions resulted in added scripts
+ if ( $this->useHeadElement ) {
+ $tpl->set( 'headelement', $out->headElement( $this ) );
+ } else {
+ $tpl->set( 'headscripts', $out->getScript() );
+ }
+
// original version by hansm
if( !wfRunHooks( 'SkinTemplateOutputPageBeforeExec', array( &$this, &$tpl ) ) ) {
wfDebug( __METHOD__ . ": Hook SkinTemplateOutputPageBeforeExec broke outputPage execution!\n" );
@@ -456,13 +507,13 @@ class SkinTemplate extends Skin {
// allow extensions adding stuff after the page content.
// See Skin::afterContentHook() for further documentation.
- $tpl->set ('dataAfterContent', $this->afterContentHook());
- wfProfileOut( __METHOD__."-stuff5" );
+ $tpl->set( 'dataAfterContent', $this->afterContentHook() );
+ wfProfileOut( __METHOD__ . '-stuff5' );
// execute template
- wfProfileIn( __METHOD__."-execute" );
+ wfProfileIn( __METHOD__ . '-execute' );
$res = $tpl->execute();
- wfProfileOut( __METHOD__."-execute" );
+ wfProfileOut( __METHOD__ . '-execute' );
// result may be an error
$this->printOrError( $res );
@@ -487,25 +538,31 @@ class SkinTemplate extends Skin {
* @private
*/
function buildPersonalUrls() {
- global $wgTitle, $wgRequest;
+ global $wgOut, $wgRequest;
- $pageurl = $wgTitle->getLocalURL();
+ $title = $wgOut->getTitle();
+ $pageurl = $title->getLocalURL();
wfProfileIn( __METHOD__ );
/* set up the default links for the personal toolbar */
$personal_urls = array();
- if ($this->loggedin) {
+ $page = $wgRequest->getVal( 'returnto', $this->thisurl );
+ $query = $wgRequest->getVal( 'returntoquery', $this->thisquery );
+ $returnto = "returnto=$page";
+ if( $this->thisquery != '' )
+ $returnto .= "&returntoquery=$query";
+ if( $this->loggedin ) {
$personal_urls['userpage'] = array(
'text' => $this->username,
'href' => &$this->userpageUrlDetails['href'],
- 'class' => $this->userpageUrlDetails['exists']?false:'new',
+ 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
'active' => ( $this->userpageUrlDetails['href'] == $pageurl )
);
- $usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
+ $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
$personal_urls['mytalk'] = array(
- 'text' => wfMsg('mytalk'),
+ 'text' => wfMsg( 'mytalk' ),
'href' => &$usertalkUrlDetails['href'],
- 'class' => $usertalkUrlDetails['exists']?false:'new',
+ 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
'active' => ( $usertalkUrlDetails['href'] == $pageurl )
);
$href = self::makeSpecialUrl( 'Preferences' );
@@ -526,10 +583,10 @@ class SkinTemplate extends Skin {
# from request values or be specified in "sub page" form. The plot
# thickens, because $wgTitle is altered for special pages, so doesn't
# contain the original alias-with-subpage.
- $title = Title::newFromText( $wgRequest->getText( 'title' ) );
- if( $title instanceof Title && $title->getNamespace() == NS_SPECIAL ) {
+ $origTitle = Title::newFromText( $wgRequest->getText( 'title' ) );
+ if( $origTitle instanceof Title && $origTitle->getNamespace() == NS_SPECIAL ) {
list( $spName, $spPar ) =
- SpecialPage::resolveAliasWithSubpage( $title->getText() );
+ SpecialPage::resolveAliasWithSubpage( $origTitle->getText() );
$active = $spName == 'Contributions'
&& ( ( $spPar && $spPar == $this->username )
|| $wgRequest->getText( 'target' ) == $this->username );
@@ -546,7 +603,7 @@ class SkinTemplate extends Skin {
$personal_urls['logout'] = array(
'text' => wfMsg( 'userlogout' ),
'href' => self::makeSpecialUrl( 'Userlogout',
- $wgTitle->isSpecial( 'Preferences' ) ? '' : "returnto={$this->thisurl}"
+ $title->isSpecial( 'Preferences' ) ? '' : $returnto
),
'active' => false
);
@@ -560,38 +617,37 @@ class SkinTemplate extends Skin {
$personal_urls['anonuserpage'] = array(
'text' => $this->username,
'href' => $href,
- 'class' => $this->userpageUrlDetails['exists']?false:'new',
+ 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
'active' => ( $pageurl == $href )
);
- $usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
+ $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
$href = &$usertalkUrlDetails['href'];
$personal_urls['anontalk'] = array(
- 'text' => wfMsg('anontalk'),
+ 'text' => wfMsg( 'anontalk' ),
'href' => $href,
- 'class' => $usertalkUrlDetails['exists']?false:'new',
+ 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
'active' => ( $pageurl == $href )
);
$personal_urls['anonlogin'] = array(
'text' => wfMsg( $loginlink ),
- 'href' => self::makeSpecialUrl( 'Userlogin', 'returnto=' . $this->thisurl ),
- 'active' => $wgTitle->isSpecial( 'Userlogin' )
+ 'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
+ 'active' => $title->isSpecial( 'Userlogin' )
);
} else {
-
$personal_urls['login'] = array(
'text' => wfMsg( $loginlink ),
- 'href' => self::makeSpecialUrl( 'Userlogin', 'returnto=' . $this->thisurl ),
- 'active' => $wgTitle->isSpecial( 'Userlogin' )
+ 'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
+ 'active' => $title->isSpecial( 'Userlogin' )
);
}
}
- wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$wgTitle ) );
+ wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) );
wfProfileOut( __METHOD__ );
return $personal_urls;
}
- function tabAction( $title, $message, $selected, $query='', $checkEdit=false ) {
+ function tabAction( $title, $message, $selected, $query = '', $checkEdit = false ) {
$classes = array();
if( $selected ) {
$classes[] = 'selected';
@@ -608,9 +664,9 @@ class SkinTemplate extends Skin {
}
$result = array();
- if( !wfRunHooks('SkinTemplateTabAction', array(&$this,
+ if( !wfRunHooks( 'SkinTemplateTabAction', array( &$this,
$title, $message, $selected, $checkEdit,
- &$classes, &$query, &$text, &$result)) ) {
+ &$classes, &$query, &$text, &$result ) ) ) {
return $result;
}
@@ -622,8 +678,8 @@ class SkinTemplate extends Skin {
function makeTalkUrlDetails( $name, $urlaction = '' ) {
$title = Title::newFromText( $name );
- if( !is_object($title) ) {
- throw new MWException( __METHOD__." given invalid pagename $name" );
+ if( !is_object( $title ) ) {
+ throw new MWException( __METHOD__ . " given invalid pagename $name" );
}
$title = $title->getTalkPage();
self::checkTitle( $title, $name );
@@ -649,7 +705,7 @@ class SkinTemplate extends Skin {
* @private
*/
function buildContentActionUrls() {
- global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest;
+ global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest, $wgArticle;
wfProfileIn( __METHOD__ );
@@ -657,8 +713,8 @@ class SkinTemplate extends Skin {
$section = $wgRequest->getVal( 'section' );
$content_actions = array();
- $prevent_active_tabs = false ;
- wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this , &$prevent_active_tabs ) ) ;
+ $prevent_active_tabs = false;
+ wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this, &$prevent_active_tabs ) );
if( $this->iscontent ) {
$subjpage = $this->mTitle->getSubjectPage();
@@ -669,32 +725,35 @@ class SkinTemplate extends Skin {
$subjpage,
$nskey,
!$this->mTitle->isTalkPage() && !$prevent_active_tabs,
- '', true);
+ '', true
+ );
$content_actions['talk'] = $this->tabAction(
$talkpage,
'talk',
$this->mTitle->isTalkPage() && !$prevent_active_tabs,
'',
- true);
+ true
+ );
- wfProfileIn( __METHOD__."-edit" );
+ wfProfileIn( __METHOD__ . '-edit' );
if ( $this->mTitle->quickUserCan( 'edit' ) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {
$istalk = $this->mTitle->isTalkPage();
$istalkclass = $istalk?' istalk':'';
$content_actions['edit'] = array(
- 'class' => ((($action == 'edit' or $action == 'submit') and $section != 'new') ? 'selected' : '').$istalkclass,
+ 'class' => ( ( ( $action == 'edit' or $action == 'submit' ) and $section != 'new' ) ? 'selected' : '' ) . $istalkclass,
'text' => $this->mTitle->exists()
? wfMsg( 'edit' )
: wfMsg( 'create' ),
'href' => $this->mTitle->getLocalUrl( $this->editUrlOptions() )
);
- if ( $istalk || $wgOut->showNewSectionLink() ) {
+ // adds new section link if page is a current revision of a talk page or
+ if ( ( $wgArticle && $wgArticle->isCurrent() && $istalk ) || $wgOut->showNewSectionLink() ) {
if ( !$wgOut->forceHideNewSectionLink() ) {
$content_actions['addsection'] = array(
'class' => $section == 'new' ? 'selected' : false,
- 'text' => wfMsg('addsection'),
+ 'text' => wfMsg( 'addsection' ),
'href' => $this->mTitle->getLocalUrl( 'action=edit&section=new' )
);
}
@@ -702,26 +761,26 @@ class SkinTemplate extends Skin {
} elseif ( $this->mTitle->isKnown() ) {
$content_actions['viewsource'] = array(
'class' => ($action == 'edit') ? 'selected' : false,
- 'text' => wfMsg('viewsource'),
+ 'text' => wfMsg( 'viewsource' ),
'href' => $this->mTitle->getLocalUrl( $this->editUrlOptions() )
);
}
- wfProfileOut( __METHOD__."-edit" );
+ wfProfileOut( __METHOD__ . '-edit' );
- wfProfileIn( __METHOD__."-live" );
+ wfProfileIn( __METHOD__ . '-live' );
if ( $this->mTitle->exists() ) {
$content_actions['history'] = array(
'class' => ($action == 'history') ? 'selected' : false,
- 'text' => wfMsg('history_short'),
+ 'text' => wfMsg( 'history_short' ),
'href' => $this->mTitle->getLocalUrl( 'action=history' ),
'rel' => 'archives',
);
- if( $wgUser->isAllowed('delete') ) {
+ if( $wgUser->isAllowed( 'delete' ) ) {
$content_actions['delete'] = array(
'class' => ($action == 'delete') ? 'selected' : false,
- 'text' => wfMsg('delete'),
+ 'text' => wfMsg( 'delete' ),
'href' => $this->mTitle->getLocalUrl( 'action=delete' )
);
}
@@ -729,7 +788,7 @@ class SkinTemplate extends Skin {
$moveTitle = SpecialPage::getTitleFor( 'Movepage', $this->thispage );
$content_actions['move'] = array(
'class' => $this->mTitle->isSpecial( 'Movepage' ) ? 'selected' : false,
- 'text' => wfMsg('move'),
+ 'text' => wfMsg( 'move' ),
'href' => $moveTitle->getLocalUrl()
);
}
@@ -738,26 +797,26 @@ class SkinTemplate extends Skin {
if( !$this->mTitle->isProtected() ){
$content_actions['protect'] = array(
'class' => ($action == 'protect') ? 'selected' : false,
- 'text' => wfMsg('protect'),
+ 'text' => wfMsg( 'protect' ),
'href' => $this->mTitle->getLocalUrl( 'action=protect' )
);
} else {
$content_actions['unprotect'] = array(
'class' => ($action == 'unprotect') ? 'selected' : false,
- 'text' => wfMsg('unprotect'),
+ 'text' => wfMsg( 'unprotect' ),
'href' => $this->mTitle->getLocalUrl( 'action=unprotect' )
);
}
}
} else {
//article doesn't exist or is deleted
- if( $wgUser->isAllowed( 'deletedhistory' ) && $wgUser->isAllowed( 'undelete' ) ) {
+ if( $wgUser->isAllowed( 'deletedhistory' ) && $wgUser->isAllowed( 'deletedtext' ) ) {
if( $n = $this->mTitle->isDeleted() ) {
$undelTitle = SpecialPage::getTitleFor( 'Undelete' );
$content_actions['undelete'] = array(
'class' => false,
- 'text' => wfMsgExt( 'undelete_short', array( 'parsemag' ), $wgLang->formatNum($n) ),
+ 'text' => wfMsgExt( 'undelete_short', array( 'parsemag' ), $wgLang->formatNum( $n ) ),
'href' => $undelTitle->getLocalUrl( 'target=' . urlencode( $this->thispage ) )
#'href' => self::makeSpecialUrl( "Undelete/$this->thispage" )
);
@@ -768,40 +827,40 @@ class SkinTemplate extends Skin {
if( !$this->mTitle->getRestrictions( 'create' ) ) {
$content_actions['protect'] = array(
'class' => ($action == 'protect') ? 'selected' : false,
- 'text' => wfMsg('protect'),
+ 'text' => wfMsg( 'protect' ),
'href' => $this->mTitle->getLocalUrl( 'action=protect' )
);
} else {
$content_actions['unprotect'] = array(
'class' => ($action == 'unprotect') ? 'selected' : false,
- 'text' => wfMsg('unprotect'),
+ 'text' => wfMsg( 'unprotect' ),
'href' => $this->mTitle->getLocalUrl( 'action=unprotect' )
);
}
}
}
- wfProfileOut( __METHOD__."-live" );
+ wfProfileOut( __METHOD__ . '-live' );
if( $this->loggedin ) {
if( !$this->mTitle->userIsWatching()) {
$content_actions['watch'] = array(
'class' => ($action == 'watch' or $action == 'unwatch') ? 'selected' : false,
- 'text' => wfMsg('watch'),
+ 'text' => wfMsg( 'watch' ),
'href' => $this->mTitle->getLocalUrl( 'action=watch' )
);
} else {
$content_actions['unwatch'] = array(
'class' => ($action == 'unwatch' or $action == 'watch') ? 'selected' : false,
- 'text' => wfMsg('unwatch'),
+ 'text' => wfMsg( 'unwatch' ),
'href' => $this->mTitle->getLocalUrl( 'action=unwatch' )
);
}
}
- wfRunHooks( 'SkinTemplateTabs', array( &$this , &$content_actions ) ) ;
+ wfRunHooks( 'SkinTemplateTabs', array( $this, &$content_actions ) );
} else {
/* show special page tab */
@@ -826,10 +885,10 @@ class SkinTemplate extends Skin {
continue;
$selected = ( $code == $preferred )? 'selected' : false;
$content_actions['varlang-' . $vcount] = array(
- 'class' => $selected,
- 'text' => $varname,
- 'href' => $this->mTitle->getLocalURL('',$code)
- );
+ 'class' => $selected,
+ 'text' => $varname,
+ 'href' => $this->mTitle->getLocalURL( '', $code )
+ );
$vcount ++;
}
}
@@ -840,15 +899,13 @@ class SkinTemplate extends Skin {
return $content_actions;
}
-
-
/**
* build array of common navigation links
* @return array
* @private
*/
function buildNavUrls() {
- global $wgUseTrackbacks, $wgTitle, $wgUser, $wgRequest;
+ global $wgUseTrackbacks, $wgOut, $wgUser, $wgRequest;
global $wgEnableUploads, $wgUploadNavigationUrl;
wfProfileIn( __METHOD__ );
@@ -857,17 +914,12 @@ class SkinTemplate extends Skin {
$nav_urls = array();
$nav_urls['mainpage'] = array( 'href' => self::makeMainPageUrl() );
- if( $wgEnableUploads && $wgUser->isAllowed( 'upload' ) ) {
- if ($wgUploadNavigationUrl) {
- $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
- } else {
- $nav_urls['upload'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
- }
+ if( $wgUploadNavigationUrl ) {
+ $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
+ } elseif( $wgEnableUploads && $wgUser->isAllowed( 'upload' ) ) {
+ $nav_urls['upload'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
} else {
- if ($wgUploadNavigationUrl)
- $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
- else
- $nav_urls['upload'] = false;
+ $nav_urls['upload'] = false;
}
$nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Specialpages' ) );
@@ -877,16 +929,18 @@ class SkinTemplate extends Skin {
// A print stylesheet is attached to all pages, but nobody ever
// figures that out. :) Add a link...
if( $this->iscontent && ( $action == 'view' || $action == 'purge' ) ) {
- $nav_urls['print'] = array(
- 'text' => wfMsg( 'printableversion' ),
- 'href' => $wgRequest->appendQuery( 'printable=yes' )
- );
+ if ( !$wgOut->isPrintable() ) {
+ $nav_urls['print'] = array(
+ 'text' => wfMsg( 'printableversion' ),
+ 'href' => $wgRequest->appendQuery( 'printable=yes' )
+ );
+ }
// Also add a "permalink" while we're at it
if ( $this->mRevisionId ) {
$nav_urls['permalink'] = array(
'text' => wfMsg( 'permalink' ),
- 'href' => $wgTitle->getLocalURL( "oldid=$this->mRevisionId" )
+ 'href' => $wgOut->getTitle()->getLocalURL( "oldid=$this->mRevisionId" )
);
}
@@ -908,29 +962,34 @@ class SkinTemplate extends Skin {
} else {
$nav_urls['recentchangeslinked'] = false;
}
- if ($wgUseTrackbacks)
+ if( $wgUseTrackbacks )
$nav_urls['trackbacklink'] = array(
- 'href' => $wgTitle->trackbackURL()
+ 'href' => $wgOut->getTitle()->trackbackURL()
);
}
if( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
- $id = User::idFromName($this->mTitle->getText());
- $ip = User::isIP($this->mTitle->getText());
+ $id = User::idFromName( $this->mTitle->getText() );
+ $ip = User::isIP( $this->mTitle->getText() );
} else {
$id = 0;
$ip = false;
}
- if($id || $ip) { # both anons and non-anons have contribs list
+ if( $id || $ip ) { # both anons and non-anons have contribs list
$nav_urls['contributions'] = array(
'href' => self::makeSpecialUrlSubpage( 'Contributions', $this->mTitle->getText() )
);
if( $id ) {
$logPage = SpecialPage::getTitleFor( 'Log' );
- $nav_urls['log'] = array( 'href' => $logPage->getLocalUrl( 'user='
- . $this->mTitle->getPartialUrl() ) );
+ $nav_urls['log'] = array(
+ 'href' => $logPage->getLocalUrl(
+ array(
+ 'user' => $this->mTitle->getText()
+ )
+ )
+ );
} else {
$nav_urls['log'] = false;
}
@@ -971,7 +1030,6 @@ class SkinTemplate extends Skin {
*/
function setupUserJs( $allowUserJs ) {
global $wgRequest, $wgJsMimeType;
-
wfProfileIn( __METHOD__ );
$action = $wgRequest->getVal( 'action', 'view' );
@@ -979,9 +1037,9 @@ class SkinTemplate extends Skin {
if( $allowUserJs && $this->loggedin ) {
if( $this->mTitle->isJsSubpage() and $this->userCanPreview( $action ) ) {
# XXX: additional security check/prompt?
- $this->userjsprev = '/*<![CDATA[*/ ' . $wgRequest->getText('wpTextbox1') . ' /*]]>*/';
+ $this->userjsprev = '/*<![CDATA[*/ ' . $wgRequest->getText( 'wpTextbox1' ) . ' /*]]>*/';
} else {
- $this->userjs = self::makeUrl($this->userpage.'/'.$this->skinname.'.js', 'action=raw&ctype='.$wgJsMimeType);
+ $this->userjs = self::makeUrl( $this->userpage . '/' . $this->skinname . '.js', 'action=raw&ctype=' . $wgJsMimeType );
}
}
wfProfileOut( __METHOD__ );
@@ -1000,6 +1058,10 @@ class SkinTemplate extends Skin {
wfProfileOut( __METHOD__ );
return $out;
}
+
+ public function commonPrintStylesheet() {
+ return false;
+ }
}
/**
@@ -1007,43 +1069,44 @@ class SkinTemplate extends Skin {
* compatible with what we use of PHPTAL 0.7.
* @ingroup Skins
*/
-class QuickTemplate {
+abstract class QuickTemplate {
/**
- * @public
+ * Constructor
*/
- function QuickTemplate() {
+ public function QuickTemplate() {
$this->data = array();
$this->translator = new MediaWiki_I18N();
}
/**
- * @public
+ * Sets the value $value to $name
+ * @param $name
+ * @param $value
*/
- function set( $name, $value ) {
+ public function set( $name, $value ) {
$this->data[$name] = $value;
}
/**
- * @public
+ * @param $name
+ * @param $value
*/
- function setRef($name, &$value) {
+ public function setRef( $name, &$value ) {
$this->data[$name] =& $value;
}
/**
- * @public
+ * @param $t
*/
- function setTranslator( &$t ) {
+ public function setTranslator( &$t ) {
$this->translator = &$t;
}
/**
- * @public
+ * Main function, used by classes that subclass QuickTemplate
+ * to show the actual HTML output
*/
- function execute() {
- echo "Override this function.";
- }
-
+ abstract public function execute();
/**
* @private
@@ -1085,10 +1148,10 @@ class QuickTemplate {
* @private
*/
function msgWiki( $str ) {
- global $wgParser, $wgTitle, $wgOut;
+ global $wgParser, $wgOut;
$text = $this->translator->translate( $str );
- $parserOutput = $wgParser->parse( $text, $wgTitle,
+ $parserOutput = $wgParser->parse( $text, $wgOut->getTitle(),
$wgOut->parserOptions(), true );
echo $parserOutput->getText();
}
@@ -1105,6 +1168,6 @@ class QuickTemplate {
*/
function haveMsg( $str ) {
$msg = $this->translator->translate( $str );
- return ($msg != '-') && ($msg != ''); # ????
+ return ( $msg != '-' ) && ( $msg != '' ); # ????
}
}
diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php
index 31b43839..80e2f7ed 100644
--- a/includes/SpecialPage.php
+++ b/includes/SpecialPage.php
@@ -27,8 +27,7 @@
* page list.
* @ingroup SpecialPage
*/
-class SpecialPage
-{
+class SpecialPage {
/**#@+
* @access private
*/
@@ -90,30 +89,30 @@ class SpecialPage
'Fewestrevisions' => array( 'SpecialPage', 'Fewestrevisions' ),
'Withoutinterwiki' => array( 'SpecialPage', 'Withoutinterwiki' ),
'Protectedpages' => array( 'SpecialPage', 'Protectedpages' ),
- 'Protectedtitles' => array( 'SpecialPage', 'Protectedtitles' ),
- 'Shortpages' => array( 'SpecialPage', 'Shortpages' ),
- 'Uncategorizedcategories' => array( 'SpecialPage', 'Uncategorizedcategories' ),
- 'Uncategorizedimages' => array( 'SpecialPage', 'Uncategorizedimages' ),
- 'Uncategorizedpages' => array( 'SpecialPage', 'Uncategorizedpages' ),
+ 'Protectedtitles' => array( 'SpecialPage', 'Protectedtitles' ),
+ 'Shortpages' => array( 'SpecialPage', 'Shortpages' ),
+ 'Uncategorizedcategories' => array( 'SpecialPage', 'Uncategorizedcategories' ),
+ 'Uncategorizedimages' => array( 'SpecialPage', 'Uncategorizedimages' ),
+ 'Uncategorizedpages' => array( 'SpecialPage', 'Uncategorizedpages' ),
'Uncategorizedtemplates' => array( 'SpecialPage', 'Uncategorizedtemplates' ),
'Unusedcategories' => array( 'SpecialPage', 'Unusedcategories' ),
- 'Unusedimages' => array( 'SpecialPage', 'Unusedimages' ),
+ 'Unusedimages' => array( 'SpecialPage', 'Unusedimages' ),
'Unusedtemplates' => array( 'SpecialPage', 'Unusedtemplates' ),
- 'Unwatchedpages' => array( 'SpecialPage', 'Unwatchedpages', 'unwatchedpages' ),
+ 'Unwatchedpages' => array( 'SpecialPage', 'Unwatchedpages', 'unwatchedpages' ),
'Wantedcategories' => array( 'SpecialPage', 'Wantedcategories' ),
'Wantedfiles' => array( 'SpecialPage', 'Wantedfiles' ),
'Wantedpages' => array( 'IncludableSpecialPage', 'Wantedpages' ),
'Wantedtemplates' => array( 'SpecialPage', 'Wantedtemplates' ),
# List of pages
- 'Allpages' => 'SpecialAllpages',
- 'Prefixindex' => 'SpecialPrefixindex',
+ 'Allpages' => 'SpecialAllpages',
+ 'Prefixindex' => 'SpecialPrefixindex',
'Categories' => array( 'SpecialPage', 'Categories' ),
'Disambiguations' => array( 'SpecialPage', 'Disambiguations' ),
- 'Listredirects' => array( 'SpecialPage', 'Listredirects' ),
+ 'Listredirects' => array( 'SpecialPage', 'Listredirects' ),
# Login/create account
- 'Userlogin' => array( 'SpecialPage', 'Userlogin' ),
+ 'Userlogin' => array( 'SpecialPage', 'Userlogin' ),
'CreateAccount' => array( 'SpecialRedirectToSpecial', 'CreateAccount', 'Userlogin', 'signup', array( 'uselang' ) ),
# Users and rights
@@ -121,14 +120,15 @@ class SpecialPage
'Ipblocklist' => array( 'SpecialPage', 'Ipblocklist' ),
'Resetpass' => 'SpecialResetpass',
'DeletedContributions' => 'DeletedContributionsPage',
- 'Preferences' => array( 'SpecialPage', 'Preferences' ),
- 'Contributions' => 'SpecialContributions',
+ 'Preferences' => 'SpecialPreferences',
+ 'Contributions' => 'SpecialContributions',
'Listgrouprights' => 'SpecialListGroupRights',
- 'Listusers' => array( 'SpecialPage', 'Listusers' ),
+ 'Listusers' => array( 'SpecialPage', 'Listusers' ),
+ 'Activeusers' => 'SpecialActiveUsers',
'Userrights' => 'UserrightsPage',
# Recent changes and logs
- 'Newimages' => array( 'IncludableSpecialPage', 'Newimages' ),
+ 'Newimages' => array( 'IncludableSpecialPage', 'Newimages' ),
'Log' => array( 'SpecialPage', 'Log' ),
'Watchlist' => array( 'SpecialPage', 'Watchlist' ),
'Newpages' => 'SpecialNewpages',
@@ -141,11 +141,11 @@ class SpecialPage
'Filepath' => array( 'SpecialPage', 'Filepath' ),
'MIMEsearch' => array( 'SpecialPage', 'MIMEsearch' ),
'FileDuplicateSearch' => array( 'SpecialPage', 'FileDuplicateSearch' ),
- 'Upload' => array( 'SpecialPage', 'Upload' ),
+ 'Upload' => 'SpecialUpload',
# Wiki data and tools
- 'Statistics' => 'SpecialStatistics',
- 'Allmessages' => array( 'SpecialPage', 'Allmessages' ),
+ 'Statistics' => 'SpecialStatistics',
+ 'Allmessages' => 'SpecialAllmessages',
'Version' => 'SpecialVersion',
'Lockdb' => array( 'SpecialPage', 'Lockdb', 'siteadmin' ),
'Unlockdb' => array( 'SpecialPage', 'Unlockdb', 'siteadmin' ),
@@ -167,15 +167,15 @@ class SpecialPage
'Export' => 'SpecialExport',
'Import' => 'SpecialImport',
'Undelete' => array( 'SpecialPage', 'Undelete', 'deletedhistory' ),
- 'Whatlinkshere' => array( 'SpecialPage', 'Whatlinkshere' ),
- 'MergeHistory' => array( 'SpecialPage', 'MergeHistory', 'mergehistory' ),
-
+ 'Whatlinkshere' => 'SpecialWhatlinkshere',
+ 'MergeHistory' => array( 'SpecialPage', 'MergeHistory', 'mergehistory' ),
+
# Other
'Booksources' => 'SpecialBookSources',
-
+
# Unlisted / redirects
- 'Blankpage' => array( 'UnlistedSpecialPage', 'Blankpage' ),
- 'Blockme' => array( 'UnlistedSpecialPage', 'Blockme' ),
+ 'Blankpage' => 'SpecialBlankpage',
+ 'Blockme' => array( 'UnlistedSpecialPage', 'Blockme' ),
'Emailuser' => array( 'UnlistedSpecialPage', 'Emailuser' ),
'Listadmins' => array( 'SpecialRedirectToSpecial', 'Listadmins', 'Listusers', 'sysop' ),
'Listbots' => array( 'SpecialRedirectToSpecial', 'Listbots', 'Listusers', 'bot' ),
@@ -277,7 +277,7 @@ class SpecialPage
$bits = explode( '/', $alias, 2 );
$name = self::resolveAlias( $bits[0] );
if( !isset( $bits[1] ) ) { // bug 2087
- $par = NULL;
+ $par = null;
} else {
$par = $bits[1];
}
@@ -394,7 +394,7 @@ class SpecialPage
}
return self::$mList[$name];
} else {
- return NULL;
+ return null;
}
}
@@ -407,7 +407,7 @@ class SpecialPage
if ( $realName ) {
return self::getPage( $realName );
} else {
- return NULL;
+ return null;
}
}
@@ -500,7 +500,7 @@ class SpecialPage
$bits = explode( '/', $title->getDBkey(), 2 );
$name = $bits[0];
if( !isset( $bits[1] ) ) { // bug 2087
- $par = NULL;
+ $par = null;
} else {
$par = $bits[1];
}
@@ -574,6 +574,7 @@ class SpecialPage
$oldTitle = $wgTitle;
$oldOut = $wgOut;
$wgOut = new OutputPage;
+ $wgOut->setTitle( $title );
$ret = SpecialPage::executePath( $title, true );
if ( $ret === true ) {
@@ -597,11 +598,25 @@ class SpecialPage
$aliases = $wgContLang->getSpecialPageAliases();
if ( isset( $aliases[$name][0] ) ) {
$name = $aliases[$name][0];
+ } else {
+ // Try harder in case someone misspelled the correct casing
+ $found = false;
+ foreach ( $aliases as $n => $values ) {
+ if ( strcasecmp( $name, $n ) === 0 ) {
+ wfWarn( "Found alias defined for $n when searching for special page aliases
+for $name. Case mismatch?" );
+ $name = $values[0];
+ $found = true;
+ break;
+ }
+ }
+ if ( !$found ) wfWarn( "Did not find alias for special page '$name'.
+Perhaps no page aliases are defined for it?" );
}
if ( $subpage !== false && !is_null( $subpage ) ) {
$name = "$name/$subpage";
}
- return ucfirst( $name );
+ return $wgContLang->ucfirst( $name );
}
/**
@@ -688,13 +703,18 @@ class SpecialPage
/**#@+
* Accessor and mutator
*/
- function name( $x = NULL ) { return wfSetVar( $this->mName, $x ); }
- function restrictions( $x = NULL) { return wfSetVar( $this->mRestrictions, $x ); }
- function listed( $x = NULL) { return wfSetVar( $this->mListed, $x ); }
- function func( $x = NULL) { return wfSetVar( $this->mFunction, $x ); }
- function file( $x = NULL) { return wfSetVar( $this->mFile, $x ); }
- function includable( $x = NULL ) { return wfSetVar( $this->mIncludable, $x ); }
- function including( $x = NULL ) { return wfSetVar( $this->mIncluding, $x ); }
+ function name( $x = null ) { return wfSetVar( $this->mName, $x ); }
+ function restrictions( $x = null) {
+ # Use the one below this
+ wfDeprecated( __METHOD__ );
+ return wfSetVar( $this->mRestriction, $x );
+ }
+ function restriction( $x = null) { return wfSetVar( $this->mRestriction, $x ); }
+ function listed( $x = null) { return wfSetVar( $this->mListed, $x ); }
+ function func( $x = null) { return wfSetVar( $this->mFunction, $x ); }
+ function file( $x = null) { return wfSetVar( $this->mFile, $x ); }
+ function includable( $x = null ) { return wfSetVar( $this->mIncludable, $x ); }
+ function including( $x = null ) { return wfSetVar( $this->mIncluding, $x ); }
/**#@-*/
/**
@@ -778,7 +798,7 @@ class SpecialPage
* Outputs a summary message on top of special pages
* Per default the message key is the canonical name of the special page
* May be overriden, i.e. by extensions to stick with the naming conventions
- * for message keys: 'extensionname-xxx'
+ * for message keys: 'extensionname-xxx'
*
* @param string message key of the summary
*/
@@ -809,7 +829,7 @@ class SpecialPage
/**
* Get a self-referential title object
*/
- function getTitle( $subpage = false) {
+ function getTitle( $subpage = false ) {
return self::getTitleFor( $this->mName, $subpage );
}
@@ -838,7 +858,7 @@ class SpecialPage
global $wgRequest;
$params = array();
foreach( $this->mAllowedRedirectParams as $arg ) {
- if( $val = $wgRequest->getVal( $arg, false ) )
+ if( ( $val = $wgRequest->getVal( $arg, null ) ) !== null )
$params[] = $arg . '=' . $val;
}
@@ -945,6 +965,8 @@ class SpecialMytalk extends UnlistedSpecialPage {
class SpecialMycontributions extends UnlistedSpecialPage {
function __construct() {
parent::__construct( 'Mycontributions' );
+ $this->mAllowedRedirectParams = array( 'limit', 'namespace', 'tagfilter',
+ 'offset', 'dir', 'year', 'month', 'feed' );
}
function getRedirect( $subpage ) {
diff --git a/includes/SquidPurgeClient.php b/includes/SquidPurgeClient.php
new file mode 100644
index 00000000..65da5c1a
--- /dev/null
+++ b/includes/SquidPurgeClient.php
@@ -0,0 +1,380 @@
+<?php
+/**
+ * An HTTP 1.0 client built for the purposes of purging Squid and Varnish.
+ * Uses asynchronous I/O, allowing purges to be done in a highly parallel
+ * manner.
+ *
+ * Could be replaced by curl_multi_exec() or some such.
+ */
+class SquidPurgeClient {
+ var $host, $port, $ip;
+
+ var $readState = 'idle';
+ var $writeBuffer = '';
+ var $requests = array();
+ var $currentRequestIndex;
+
+ const EINTR = 4;
+ const EAGAIN = 11;
+ const EINPROGRESS = 115;
+ const BUFFER_SIZE = 8192;
+
+ /**
+ * The socket resource, or null for unconnected, or false for disabled due to error
+ */
+ var $socket;
+
+ public function __construct( $server, $options = array() ) {
+ $parts = explode( ':', $server, 2 );
+ $this->host = $parts[0];
+ $this->port = isset( $parts[1] ) ? $parts[1] : 80;
+ }
+
+ /**
+ * Open a socket if there isn't one open already, return it.
+ * Returns false on error.
+ */
+ protected function getSocket() {
+ if ( $this->socket !== null ) {
+ return $this->socket;
+ }
+
+ $ip = $this->getIP();
+ if ( !$ip ) {
+ $this->log( "DNS error" );
+ $this->markDown();
+ return false;
+ }
+ $this->socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
+ socket_set_nonblock( $this->socket );
+ wfSuppressWarnings();
+ $ok = socket_connect( $this->socket, $ip, $this->port );
+ wfRestoreWarnings();
+ if ( !$ok ) {
+ $error = socket_last_error( $this->socket );
+ if ( $error !== self::EINPROGRESS ) {
+ $this->log( "connection error: " . socket_strerror( $error ) );
+ $this->markDown();
+ return false;
+ }
+ }
+
+ return $this->socket;
+ }
+
+ /**
+ * Get read socket array for select()
+ */
+ public function getReadSocketsForSelect() {
+ if ( $this->readState == 'idle' ) {
+ return array();
+ }
+ $socket = $this->getSocket();
+ if ( $socket === false ) {
+ return array();
+ }
+ return array( $socket );
+ }
+
+ /**
+ * Get write socket array for select()
+ */
+ public function getWriteSocketsForSelect() {
+ if ( !strlen( $this->writeBuffer ) ) {
+ return array();
+ }
+ $socket = $this->getSocket();
+ if ( $socket === false ) {
+ return array();
+ }
+ return array( $socket );
+ }
+
+ /**
+ * Get the host's IP address.
+ * Does not support IPv6 at present due to the lack of a convenient interface in PHP.
+ */
+ protected function getIP() {
+ if ( $this->ip === null ) {
+ if ( IP::isIPv4( $this->host ) ) {
+ $this->ip = $this->host;
+ } elseif ( IP::isIPv6( $this->host ) ) {
+ throw new MWException( '$wgSquidServers does not support IPv6' );
+ } else {
+ wfSuppressWarnings();
+ $this->ip = gethostbyname( $this->host );
+ if ( $this->ip === $this->host ) {
+ $this->ip = false;
+ }
+ wfRestoreWarnings();
+ }
+ }
+ return $this->ip;
+ }
+
+ /**
+ * Close the socket and ignore any future purge requests.
+ * This is called if there is a protocol error.
+ */
+ protected function markDown() {
+ $this->close();
+ $this->socket = false;
+ }
+
+ /**
+ * Close the socket but allow it to be reopened for future purge requests
+ */
+ public function close() {
+ if ( $this->socket ) {
+ wfSuppressWarnings();
+ socket_set_block( $this->socket );
+ socket_shutdown( $this->socket );
+ socket_close( $this->socket );
+ wfRestoreWarnings();
+ }
+ $this->socket = null;
+ $this->readBuffer = '';
+ // Write buffer is kept since it may contain a request for the next socket
+ }
+
+ /**
+ * Queue a purge operation
+ */
+ public function queuePurge( $url ) {
+ $url = str_replace( "\n", '', $url );
+ $this->requests[] = "PURGE $url HTTP/1.0\r\n" .
+ "Connection: Keep-Alive\r\n" .
+ "Proxy-Connection: Keep-Alive\r\n" .
+ "User-Agent: " . Http::userAgent() . ' ' . __CLASS__ . "\r\n\r\n";
+ if ( $this->currentRequestIndex === null ) {
+ $this->nextRequest();
+ }
+ }
+
+ public function isIdle() {
+ return strlen( $this->writeBuffer ) == 0 && $this->readState == 'idle';
+ }
+
+ /**
+ * Perform pending writes. Call this when socket_select() indicates that writing will not block.
+ */
+ public function doWrites() {
+ if ( !strlen( $this->writeBuffer ) ) {
+ return;
+ }
+ $socket = $this->getSocket();
+ if ( !$socket ) {
+ return;
+ }
+
+ if ( strlen( $this->writeBuffer ) <= self::BUFFER_SIZE ) {
+ $buf = $this->writeBuffer;
+ $flags = MSG_EOR;
+ } else {
+ $buf = substr( $this->writeBuffer, 0, self::BUFFER_SIZE );
+ $flags = 0;
+ }
+ wfSuppressWarnings();
+ $bytesSent = socket_send( $socket, $buf, strlen( $buf ), $flags );
+ wfRestoreWarnings();
+
+ if ( $bytesSent === false ) {
+ $error = socket_last_error( $socket );
+ if ( $error != self::EAGAIN && $error != self::EINTR ) {
+ $this->log( 'write error: ' . socket_strerror( $error ) );
+ $this->markDown();
+ }
+ return;
+ }
+
+ $this->writeBuffer = substr( $this->writeBuffer, $bytesSent );
+ }
+
+ /**
+ * Read some data. Call this when socket_select() indicates that the read buffer is non-empty.
+ */
+ public function doReads() {
+ $socket = $this->getSocket();
+ if ( !$socket ) {
+ return;
+ }
+
+ $buf = '';
+ wfSuppressWarnings();
+ $bytesRead = socket_recv( $socket, $buf, self::BUFFER_SIZE, 0 );
+ wfRestoreWarnings();
+ if ( $bytesRead === false ) {
+ $error = socket_last_error( $socket );
+ if ( $error != self::EAGAIN && $error != self::EINTR ) {
+ $this->log( 'read error: ' . socket_strerror( $error ) );
+ $this->markDown();
+ return;
+ }
+ } elseif ( $bytesRead === 0 ) {
+ // Assume EOF
+ $this->close();
+ return;
+ }
+
+ $this->readBuffer .= $buf;
+ while ( $this->socket && $this->processReadBuffer() === 'continue' );
+ }
+
+ protected function processReadBuffer() {
+ switch ( $this->readState ) {
+ case 'idle':
+ return 'done';
+ case 'status':
+ case 'header':
+ $lines = explode( "\r\n", $this->readBuffer, 2 );
+ if ( count( $lines ) < 2 ) {
+ return 'done';
+ }
+ if ( $this->readState == 'status' ) {
+ $this->processStatusLine( $lines[0] );
+ } else { // header
+ $this->processHeaderLine( $lines[0] );
+ }
+ $this->readBuffer = $lines[1];
+ return 'continue';
+ case 'body':
+ if ( $this->bodyRemaining !== null ) {
+ if ( $this->bodyRemaining > strlen( $this->readBuffer ) ) {
+ $this->bodyRemaining -= strlen( $this->readBuffer );
+ $this->readBuffer = '';
+ return 'done';
+ } else {
+ $this->readBuffer = substr( $this->readBuffer, $this->bodyRemaining );
+ $this->bodyRemaining = 0;
+ $this->nextRequest();
+ return 'continue';
+ }
+ } else {
+ // No content length, read all data to EOF
+ $this->readBuffer = '';
+ return 'done';
+ }
+ default:
+ throw new MWException( __METHOD__.': unexpected state' );
+ }
+ }
+
+ protected function processStatusLine( $line ) {
+ if ( !preg_match( '!^HTTP/(\d+)\.(\d+) (\d{3}) (.*)$!', $line, $m ) ) {
+ $this->log( 'invalid status line' );
+ $this->markDown();
+ return;
+ }
+ list( $all, $major, $minor, $status, $reason ) = $m;
+ $status = intval( $status );
+ if ( $status !== 200 && $status !== 404 ) {
+ $this->log( "unexpected status code: $status $reason" );
+ $this->markDown();
+ return;
+ }
+ $this->readState = 'header';
+ }
+
+ protected function processHeaderLine( $line ) {
+ if ( preg_match( '/^Content-Length: (\d+)$/i', $line, $m ) ) {
+ $this->bodyRemaining = intval( $m[1] );
+ } elseif ( $line === '' ) {
+ $this->readState = 'body';
+ }
+ }
+
+ protected function nextRequest() {
+ if ( $this->currentRequestIndex !== null ) {
+ unset( $this->requests[$this->currentRequestIndex] );
+ }
+ if ( count( $this->requests ) ) {
+ $this->readState = 'status';
+ $this->currentRequestIndex = key( $this->requests );
+ $this->writeBuffer = $this->requests[$this->currentRequestIndex];
+ } else {
+ $this->readState = 'idle';
+ $this->currentRequestIndex = null;
+ $this->writeBuffer = '';
+ }
+ $this->bodyRemaining = null;
+ }
+
+ protected function log( $msg ) {
+ wfDebugLog( 'squid', __CLASS__." ($this->host): $msg\n" );
+ }
+}
+
+class SquidPurgeClientPool {
+ var $clients = array();
+ var $timeout = 5;
+
+ function __construct( $options = array() ) {
+ if ( isset( $options['timeout'] ) ) {
+ $this->timeout = $options['timeout'];
+ }
+ }
+
+ public function addClient( $client ) {
+ $this->clients[] = $client;
+ }
+
+ public function run() {
+ $done = false;
+ $startTime = microtime( true );
+ while ( !$done ) {
+ $readSockets = $writeSockets = array();
+ foreach ( $this->clients as $clientIndex => $client ) {
+ $sockets = $client->getReadSocketsForSelect();
+ foreach ( $sockets as $i => $socket ) {
+ $readSockets["$clientIndex/$i"] = $socket;
+ }
+ $sockets = $client->getWriteSocketsForSelect();
+ foreach ( $sockets as $i => $socket ) {
+ $writeSockets["$clientIndex/$i"] = $socket;
+ }
+ }
+ if ( !count( $readSockets ) && !count( $writeSockets ) ) {
+ break;
+ }
+ $exceptSockets = null;
+ $timeout = min( $startTime + $this->timeout - microtime( true ), 1 );
+ wfSuppressWarnings();
+ $numReady = socket_select( $readSockets, $writeSockets, $exceptSockets, $timeout );
+ wfRestoreWarnings();
+ if ( $numReady === false ) {
+ wfDebugLog( 'squid', __METHOD__.': Error in stream_select: ' .
+ socket_strerror( socket_last_error() ) . "\n" );
+ break;
+ }
+ // Check for timeout, use 1% tolerance since we aimed at having socket_select()
+ // exit at precisely the overall timeout
+ if ( microtime( true ) - $startTime > $this->timeout * 0.99 ) {
+ wfDebugLog( 'squid', __CLASS__.": timeout ({$this->timeout}s)\n" );
+ break;
+ } elseif ( !$numReady ) {
+ continue;
+ }
+
+ foreach ( $readSockets as $key => $socket ) {
+ list( $clientIndex, $i ) = explode( '/', $key );
+ $client = $this->clients[$clientIndex];
+ $client->doReads();
+ }
+ foreach ( $writeSockets as $key => $socket ) {
+ list( $clientIndex, $i ) = explode( '/', $key );
+ $client = $this->clients[$clientIndex];
+ $client->doWrites();
+ }
+
+ $done = true;
+ foreach ( $this->clients as $client ) {
+ if ( !$client->isIdle() ) {
+ $done = false;
+ }
+ }
+ }
+ foreach ( $this->clients as $client ) {
+ $client->close();
+ }
+ }
+}
diff --git a/includes/SquidUpdate.php b/includes/SquidUpdate.php
index b1f01924..66517719 100644
--- a/includes/SquidUpdate.php
+++ b/includes/SquidUpdate.php
@@ -26,8 +26,7 @@ class SquidUpdate {
}
static function newFromLinksTo( &$title ) {
- $fname = 'SquidUpdate::newFromLinksTo';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
# Get a list of URLs linking to this page
$dbr = wfGetDB( DB_SLAVE );
@@ -37,7 +36,7 @@ class SquidUpdate {
'pl_namespace' => $title->getNamespace(),
'pl_title' => $title->getDBkey(),
'pl_from=page_id' ),
- $fname );
+ __METHOD__ );
$blurlArr = $title->getSquidURLs();
if ( $dbr->numRows( $res ) <= $this->mMaxTitles ) {
while ( $BL = $dbr->fetchObject ( $res ) )
@@ -48,7 +47,7 @@ class SquidUpdate {
}
$dbr->freeResult ( $res ) ;
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return new SquidUpdate( $blurlArr );
}
@@ -89,7 +88,7 @@ class SquidUpdate {
return;
}*/
- if( empty( $urlArr ) ) {
+ if( !$urlArr ) {
return;
}
@@ -97,115 +96,34 @@ class SquidUpdate {
return SquidUpdate::HTCPPurge( $urlArr );
}
- $fname = 'SquidUpdate::purge';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
- $maxsocketspersquid = 8; // socket cap per Squid
- $urlspersocket = 400; // 400 seems to be a good tradeoff, opening a socket takes a while
- $firsturl = SquidUpdate::expand( $urlArr[0] );
- unset($urlArr[0]);
- $urlArr = array_values($urlArr);
- $sockspersq = max(ceil(count($urlArr) / $urlspersocket ),1);
- if ($sockspersq == 1) {
- /* the most common case */
- $urlspersocket = count($urlArr);
- } else if ($sockspersq > $maxsocketspersquid ) {
- $urlspersocket = ceil(count($urlArr) / $maxsocketspersquid);
- $sockspersq = $maxsocketspersquid;
+ $maxSocketsPerSquid = 8; // socket cap per Squid
+ $urlsPerSocket = 400; // 400 seems to be a good tradeoff, opening a socket takes a while
+ $socketsPerSquid = ceil( count( $urlArr ) / $urlsPerSocket );
+ if ( $socketsPerSquid > $maxSocketsPerSquid ) {
+ $socketsPerSquid = $maxSocketsPerSquid;
}
- $totalsockets = count($wgSquidServers) * $sockspersq;
- $sockets = Array();
- /* this sets up the sockets and tests the first socket for each server. */
- for ($ss=0;$ss < count($wgSquidServers);$ss++) {
- $failed = false;
- $so = 0;
- while ($so < $sockspersq && !$failed) {
- if ($so == 0) {
- /* first socket for this server, do the tests */
- @list($server, $port) = explode(':', $wgSquidServers[$ss]);
- if(!isset($port)) $port = 80;
- #$this->debug("Opening socket to $server:$port");
- $error = $errstr = false;
- $socket = @fsockopen($server, $port, $error, $errstr, 3);
- #$this->debug("\n");
- if (!$socket) {
- $failed = true;
- $totalsockets -= $sockspersq;
- } else {
- $msg = 'PURGE ' . $firsturl . " HTTP/1.0\r\n".
- "Connection: Keep-Alive\r\n\r\n";
- #$this->debug($msg);
- @fputs($socket,$msg);
- #$this->debug("...");
- $res = @fread($socket,512);
- #$this->debug("\n");
- /* Squid only returns http headers with 200 or 404 status,
- if there's more returned something's wrong */
- if (strlen($res) > 250) {
- fclose($socket);
- $failed = true;
- $totalsockets -= $sockspersq;
- } else {
- @stream_set_blocking($socket,false);
- $sockets[] = $socket;
- }
- }
- } else {
- /* open the remaining sockets for this server */
- list($server, $port) = explode(':', $wgSquidServers[$ss]);
- if(!isset($port)) $port = 80;
- $socket = @fsockopen($server, $port, $error, $errstr, 2);
- @stream_set_blocking($socket,false);
- $sockets[] = $socket;
+ $pool = new SquidPurgeClientPool;
+ $chunks = array_chunk( $urlArr, ceil( count( $urlArr ) / $socketsPerSquid ) );
+ foreach ( $wgSquidServers as $server ) {
+ foreach ( $chunks as $chunk ) {
+ $client = new SquidPurgeClient( $server );
+ foreach ( $chunk as $url ) {
+ $client->queuePurge( $url );
}
- $so++;
+ $pool->addClient( $client );
}
}
+ $pool->run();
- if ($urlspersocket > 0) {
- /* now do the heavy lifting. The fread() relies on Squid returning only the headers */
- for ($r=0;$r < $urlspersocket;$r++) {
- for ($s=0;$s < $totalsockets;$s++) {
- if($r != 0) {
- $res = '';
- $esc = 0;
- while (strlen($res) < 100 && $esc < 200 ) {
- $res .= @fread($sockets[$s],512);
- $esc++;
- usleep(20);
- }
- }
- $urindex = $r + $urlspersocket * ($s - $sockspersq * floor($s / $sockspersq));
- $url = SquidUpdate::expand( $urlArr[$urindex] );
- $msg = 'PURGE ' . $url . " HTTP/1.0\r\n".
- "Connection: Keep-Alive\r\n\r\n";
- #$this->debug($msg);
- @fputs($sockets[$s],$msg);
- #$this->debug("\n");
- }
- }
- }
- #$this->debug("Reading response...");
- foreach ($sockets as $socket) {
- $res = '';
- $esc = 0;
- while (strlen($res) < 100 && $esc < 200 ) {
- $res .= @fread($socket,1024);
- $esc++;
- usleep(20);
- }
-
- @fclose($socket);
- }
- #$this->debug("\n");
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
}
static function HTCPPurge( $urlArr ) {
global $wgHTCPMulticastAddress, $wgHTCPMulticastTTL, $wgHTCPPort;
- $fname = 'SquidUpdate::HTCPPurge';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
$htcpOpCLR = 4; // HTCP CLR
@@ -217,7 +135,7 @@ class SquidUpdate {
}
// pfsockopen doesn't work because we need set_sock_opt
- $conn = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
+ $conn = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
if ( $conn ) {
// Set socket options
socket_set_option( $conn, IPPROTO_IP, IP_MULTICAST_LOOP, 0 );
@@ -257,16 +175,9 @@ class SquidUpdate {
}
} else {
$errstr = socket_strerror( socket_last_error() );
- wfDebug( "SquidUpdate::HTCPPurge(): Error opening UDP socket: $errstr\n" );
- }
- wfProfileOut( $fname );
- }
-
- function debug( $text ) {
- global $wgDebugSquid;
- if ( $wgDebugSquid ) {
- wfDebug( $text );
+ wfDebug( __METHOD__ . "(): Error opening UDP socket: $errstr\n" );
}
+ wfProfileOut( __METHOD__ );
}
/**
diff --git a/includes/Status.php b/includes/Status.php
index 185ea6e5..a07a4b81 100644
--- a/includes/Status.php
+++ b/includes/Status.php
@@ -84,6 +84,13 @@ class Status {
$this->ok = false;
}
+ /**
+ * Sanitize the callback parameter on wakeup, to avoid arbitrary execution.
+ */
+ function __wakeup() {
+ $this->cleanCallback = false;
+ }
+
protected function cleanParams( $params ) {
if ( !$this->cleanCallback ) {
return $params;
@@ -152,7 +159,7 @@ class Status {
if ( $longContext ) {
$s = wfMsgNoTrans( $longContext, $s );
} elseif ( $shortContext ) {
- $s = wfMsgNoTrans( $shortContext, "\n* $s\n" );
+ $s = wfMsgNoTrans( $shortContext, "\n$s\n" );
}
}
return $s;
@@ -170,12 +177,15 @@ class Status {
$this->successCount += $other->successCount;
$this->failCount += $other->failCount;
}
-
+
function getErrorsArray() {
$result = array();
foreach ( $this->errors as $error ) {
if ( $error['type'] == 'error' )
- $result[] = $error['message'];
+ if( $error['params'] )
+ $result[] = array_merge( array( $error['message'] ), $error['params'] );
+ else
+ $result[] = $error['message'];
}
return $result;
}
diff --git a/includes/StreamFile.php b/includes/StreamFile.php
index bdd2a2e5..6db66ba8 100644
--- a/includes/StreamFile.php
+++ b/includes/StreamFile.php
@@ -92,13 +92,12 @@ function wfGetType( $filename, $safe = true ) {
if ( $safe ) {
global $wgFileBlacklist, $wgCheckFileExtensions, $wgStrictFileExtensions,
$wgFileExtensions, $wgVerifyMimeType, $wgMimeTypeBlacklist, $wgRequest;
- $form = new UploadForm( $wgRequest );
- list( $partName, $extList ) = $form->splitExtensions( $filename );
- if ( $form->checkFileExtensionList( $extList, $wgFileBlacklist ) ) {
+ list( $partName, $extList ) = UploadBase::splitExtensions( $filename );
+ if ( UploadBase::checkFileExtensionList( $extList, $wgFileBlacklist ) ) {
return 'unknown/unknown';
}
if ( $wgCheckFileExtensions && $wgStrictFileExtensions
- && !$form->checkFileExtensionList( $extList, $wgFileExtensions ) )
+ && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions ) )
{
return 'unknown/unknown';
}
diff --git a/includes/StubObject.php b/includes/StubObject.php
index f1847a39..c8731fff 100644
--- a/includes/StubObject.php
+++ b/includes/StubObject.php
@@ -88,6 +88,10 @@ class StubObject {
*/
function _unstub( $name = '_unstub', $level = 2 ) {
static $recursionLevel = 0;
+
+ if ( !($GLOBALS[$this->mGlobal] instanceof StubObject) )
+ return $GLOBALS[$this->mGlobal]; // already unstubbed.
+
if ( get_class( $GLOBALS[$this->mGlobal] ) != $this->mClass ) {
$fname = __METHOD__.'-'.$this->mGlobal;
wfProfileIn( $fname );
@@ -96,7 +100,7 @@ class StubObject {
throw new MWException( "Unstub loop detected on call of \${$this->mGlobal}->$name from $caller\n" );
}
wfDebug( "Unstubbing \${$this->mGlobal} on call of \${$this->mGlobal}::$name from $caller\n" );
- $GLOBALS[$this->mGlobal] = $this->_newObject();
+ $obj = $GLOBALS[$this->mGlobal] = $this->_newObject();
--$recursionLevel;
wfProfileOut( $fname );
}
@@ -144,14 +148,8 @@ class StubUserLang extends StubObject {
function _newObject() {
global $wgContLanguageCode, $wgRequest, $wgUser, $wgContLang;
$code = $wgRequest->getVal( 'uselang', $wgUser->getOption( 'language' ) );
-
- // if variant is explicitely selected, use it instead the one from wgUser
- // see bug #7605
- if( $wgContLang->hasVariants() && in_array($code, $wgContLang->getVariants()) ){
- $variant = $wgContLang->getPreferredVariant();
- if( $variant != $wgContLanguageCode )
- $code = $variant;
- }
+ // BCP 47 - letter case MUST NOT carry meaning
+ $code = strtolower( $code );
# Validate $code
if( empty( $code ) || !preg_match( '/^[a-z-]+$/', $code ) || ( $code === 'qqq' ) ) {
diff --git a/includes/Title.php b/includes/Title.php
index f6c0d5de..8d7275ff 100644
--- a/includes/Title.php
+++ b/includes/Title.php
@@ -10,12 +10,6 @@ if ( !class_exists( 'UtfNormal' ) ) {
define ( 'GAID_FOR_UPDATE', 1 );
-
-/**
- * Constants for pr_cascade bitfield
- */
-define( 'CASCADE', 1 );
-
/**
* Represents a title within MediaWiki.
* Optionally may contain an interwiki designation or namespace.
@@ -44,32 +38,32 @@ class Title {
*/
//@{
- var $mTextform = ''; ///< Text form (spaces not underscores) of the main part
- var $mUrlform = ''; ///< URL-encoded form of the main part
- var $mDbkeyform = ''; ///< Main part with underscores
+ var $mTextform = ''; ///< Text form (spaces not underscores) of the main part
+ var $mUrlform = ''; ///< URL-encoded form of the main part
+ var $mDbkeyform = ''; ///< Main part with underscores
var $mUserCaseDBKey; ///< DB key with the initial letter in the case specified by the user
var $mNamespace = NS_MAIN; ///< Namespace index, i.e. one of the NS_xxxx constants
- var $mInterwiki = ''; ///< Interwiki prefix (or null string)
- var $mFragment; ///< Title fragment (i.e. the bit after the #)
+ var $mInterwiki = ''; ///< Interwiki prefix (or null string)
+ var $mFragment; ///< Title fragment (i.e. the bit after the #)
var $mArticleID = -1; ///< Article ID, fetched from the link cache on demand
var $mLatestID = false; ///< ID of most recent revision
var $mRestrictions = array(); ///< Array of groups allowed to edit this article
var $mOldRestrictions = false;
- var $mCascadeRestriction; ///< Cascade restrictions on this page to included templates and images?
- var $mRestrictionsExpiry = array(); ///< When do the restrictions on this page expire?
- var $mHasCascadingRestrictions; ///< Are cascading restrictions in effect on this page?
- var $mCascadeSources; ///< Where are the cascading restrictions coming from on this page?
+ var $mCascadeRestriction; ///< Cascade restrictions on this page to included templates and images?
+ var $mRestrictionsExpiry = array(); ///< When do the restrictions on this page expire?
+ var $mHasCascadingRestrictions; ///< Are cascading restrictions in effect on this page?
+ var $mCascadeSources; ///< Where are the cascading restrictions coming from on this page?
var $mRestrictionsLoaded = false; ///< Boolean for initialisation on demand
- var $mPrefixedText; ///< Text form including namespace/interwiki, initialised on demand
+ var $mPrefixedText; ///< Text form including namespace/interwiki, initialised on demand
# Don't change the following default, NS_MAIN is hardcoded in several
# places. See bug 696.
var $mDefaultNamespace = NS_MAIN; ///< Namespace index when there is no namespace
- # Zero except in {{transclusion}} tags
- var $mWatched = null; ///< Is $wgUser watching this page? null if unfilled, accessed through userIsWatching()
+ # Zero except in {{transclusion}} tags
+ var $mWatched = null; ///< Is $wgUser watching this page? null if unfilled, accessed through userIsWatching()
var $mLength = -1; ///< The page length, 0 for special pages
var $mRedirect = null; ///< Is the article at this title a redirect?
var $mNotificationTimestamp = array(); ///< Associative array of user ID -> timestamp/false
- var $mBacklinkCache = null; ///< Cache of links to this title
+ var $mBacklinkCache = null; ///< Cache of links to this title
//@}
@@ -92,7 +86,7 @@ class Title {
if( $t->secureAndSplit() )
return $t;
else
- return NULL;
+ return null;
}
/**
@@ -146,12 +140,20 @@ class Title {
}
return $t;
} else {
- $ret = NULL;
+ $ret = null;
return $ret;
}
}
/**
+ * THIS IS NOT THE FUNCTION YOU WANT. Use Title::newFromText().
+ *
+ * Example of wrong and broken code:
+ * $title = Title::newFromURL( $wgRequest->getVal( 'title' ) );
+ *
+ * Example of right code:
+ * $title = Title::newFromText( $wgRequest->getVal( 'title' ) );
+ *
* Create a new Title from URL-encoded text. Ensures that
* the given title's length does not exceed the maximum.
* @param $url \type{\string} the title, as might be taken from a URL
@@ -172,29 +174,24 @@ class Title {
if( $t->secureAndSplit() ) {
return $t;
} else {
- return NULL;
+ return null;
}
}
/**
* Create a new Title from an article ID
*
- * @todo This is inefficiently implemented, the page row is requested
- * but not used for anything else
- *
* @param $id \type{\int} the page_id corresponding to the Title to create
* @param $flags \type{\int} use GAID_FOR_UPDATE to use master
* @return \type{Title} the new object, or NULL on an error
*/
public static function newFromID( $id, $flags = 0 ) {
- $fname = 'Title::newFromID';
$db = ($flags & GAID_FOR_UPDATE) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
- $row = $db->selectRow( 'page', array( 'page_namespace', 'page_title' ),
- array( 'page_id' => $id ), $fname );
- if ( $row !== false ) {
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $row = $db->selectRow( 'page', '*', array( 'page_id' => $id ), __METHOD__ );
+ if( $row !== false ) {
+ $title = Title::newFromRow( $row );
} else {
- $title = NULL;
+ $title = null;
}
return $title;
}
@@ -229,7 +226,7 @@ class Title {
$t->mArticleID = isset($row->page_id) ? intval($row->page_id) : -1;
$t->mLength = isset($row->page_len) ? intval($row->page_len) : -1;
- $t->mRedirect = isset($row->page_is_redirect) ? (bool)$row->page_is_redirect : NULL;
+ $t->mRedirect = isset($row->page_is_redirect) ? (bool)$row->page_is_redirect : null;
$t->mLatestID = isset($row->page_latest) ? $row->page_latest : false;
return $t;
@@ -275,9 +272,9 @@ class Title {
if( $t->secureAndSplit() ) {
return $t;
} else {
- return NULL;
+ return null;
}
- }
+ }
/**
* Create a new Title for the Main Page
@@ -304,7 +301,7 @@ class Title {
public static function newFromRedirect( $text ) {
return self::newFromRedirectInternal( $text );
}
-
+
/**
* Extract a redirect destination from a string and return the
* Title, or null if the text doesn't contain a valid redirect
@@ -318,7 +315,7 @@ class Title {
$titles = self::newFromRedirectArray( $text );
return $titles ? array_pop( $titles ) : null;
}
-
+
/**
* Extract a redirect destination from a string and return an
* array of Titles, or null if the text doesn't contain a valid redirect
@@ -357,7 +354,7 @@ class Title {
}
return $titles;
}
-
+
/**
* Really extract the redirect destination
* Do not call this function directly, use one of the newFromRedirect* functions above
@@ -401,16 +398,16 @@ class Title {
* Get the prefixed DB key associated with an ID
* @param $id \type{\int} the page_id of the article
* @return \type{Title} an object representing the article, or NULL
- * if no such article was found
+ * if no such article was found
*/
public static function nameOf( $id ) {
$dbr = wfGetDB( DB_SLAVE );
$s = $dbr->selectRow( 'page',
array( 'page_namespace','page_title' ),
- array( 'page_id' => $id ),
+ array( 'page_id' => $id ),
__METHOD__ );
- if ( $s === false ) { return NULL; }
+ if ( $s === false ) { return null; }
$n = self::makeName( $s->page_namespace, $s->page_title );
return $n;
@@ -432,13 +429,13 @@ class Title {
* @param $ns \type{\int} a namespace index
* @param $title \type{\string} text-form main part
* @return \type{\string} a stripped-down title string ready for the
- * search index
+ * search index
*/
public static function indexTitle( $ns, $title ) {
global $wgContLang;
$lc = SearchEngine::legalSearchChars() . '&#;';
- $t = $wgContLang->stripForSearch( $title );
+ $t = $wgContLang->normalizeForSearch( $title );
$t = preg_replace( "/[^{$lc}]+/", ' ', $t );
$t = $wgContLang->lc( $t );
@@ -454,7 +451,7 @@ class Title {
return trim( $t );
}
- /*
+ /**
* Make a prefixed DB key from a DB key and a namespace index
* @param $ns \type{\int} numerical representation of the namespace
* @param $title \type{\string} the DB key form the title
@@ -473,18 +470,6 @@ class Title {
}
/**
- * Returns the URL associated with an interwiki prefix
- * @param $key \type{\string} the interwiki prefix (e.g. "MeatBall")
- * @return \type{\string} the associated URL, containing "$1",
- * which should be replaced by an article title
- * @static (arguably)
- * @deprecated See Interwiki class
- */
- public function getInterwikiLink( $key ) {
- return Interwiki::fetch( $key )->getURL( );
- }
-
- /**
* Determine whether the object refers to a page within
* this project.
*
@@ -508,7 +493,7 @@ class Title {
public function isTrans() {
if ($this->mInterwiki == '')
return false;
-
+
return Interwiki::fetch( $this->mInterwiki )->isTranscludable();
}
@@ -516,13 +501,11 @@ class Title {
* Escape a text fragment, say from a link, for a URL
*/
static function escapeFragmentForURL( $fragment ) {
- global $wgEnforceHtmlIds;
# Note that we don't urlencode the fragment. urlencoded Unicode
# fragments appear not to work in IE (at least up to 7) or in at least
# one version of Opera 9.x. The W3C validator, for one, doesn't seem
# to care if they aren't encoded.
- return Sanitizer::escapeId( $fragment,
- $wgEnforceHtmlIds ? 'noninitial' : 'xml' );
+ return Sanitizer::escapeId( $fragment, 'noninitial' );
}
#----------------------------------------------------------------------------
@@ -555,17 +538,17 @@ class Title {
* @return \type{\string} Namespace text
*/
public function getNsText() {
- global $wgContLang, $wgCanonicalNamespaceNames;
+ global $wgContLang;
- if ( '' != $this->mInterwiki ) {
+ if ( $this->mInterwiki != '' ) {
// This probably shouldn't even happen. ohh man, oh yuck.
// But for interwiki transclusion it sometimes does.
// Shit. Shit shit shit.
//
// Use the canonical namespaces if possible to try to
// resolve a foreign namespace.
- if( isset( $wgCanonicalNamespaceNames[$this->mNamespace] ) ) {
- return $wgCanonicalNamespaceNames[$this->mNamespace];
+ if( MWNamespace::exists( $this->mNamespace ) ) {
+ return MWNamespace::getCanonicalName( $this->mNamespace );
}
}
return $wgContLang->getNsText( $this->mNamespace );
@@ -630,7 +613,7 @@ class Title {
/**
* Get title for search index
* @return \type{\string} a stripped-down title string ready for the
- * search index
+ * search index
*/
public function getIndexTitle() {
return Title::indexTitle( $this->mNamespace, $this->mTextform );
@@ -639,7 +622,7 @@ class Title {
/**
* Get the prefixed database key form
* @return \type{\string} the prefixed title, with underscores and
- * any interwiki and namespace prefixes
+ * any interwiki and namespace prefixes
*/
public function getPrefixedDBkey() {
$s = $this->prefix( $this->mDbkeyform );
@@ -665,11 +648,11 @@ class Title {
* Get the prefixed title with spaces, plus any fragment
* (part beginning with '#')
* @return \type{\string} the prefixed title, with spaces and
- * the fragment, including '#'
+ * the fragment, including '#'
*/
public function getFullText() {
$text = $this->getPrefixedText();
- if( '' != $this->mFragment ) {
+ if( $this->mFragment != '' ) {
$text .= '#' . $this->mFragment;
}
return $text;
@@ -742,7 +725,7 @@ class Title {
$interwiki = Interwiki::fetch( $this->mInterwiki );
if ( !$interwiki ) {
- $url = $this->getLocalUrl( $query, $variant );
+ $url = $this->getLocalURL( $query, $variant );
// Ugly quick hack to avoid duplicate prefixes (bug 4571 etc)
// Correct fix would be to move the prepending elsewhere.
@@ -753,7 +736,7 @@ class Title {
$baseUrl = $interwiki->getURL( );
$namespace = wfUrlencode( $this->getNsText() );
- if ( '' != $namespace ) {
+ if ( $namespace != '' ) {
# Can this actually happen? Interwikis shouldn't be parsed.
# Yes! It can in interwiki transclusion. But... it probably shouldn't.
$namespace .= ':';
@@ -773,7 +756,7 @@ class Title {
* Get a URL with no fragment or server name. If this page is generated
* with action=render, $wgServer is prepended.
* @param mixed $query an optional query string; if not specified,
- * $wgArticlePath will be used. Can be specified as an associative array
+ * $wgArticlePath will be used. Can be specified as an associative array
* as well, e.g., array( 'action' => 'edit' ) (keys and values will be
* URL-escaped).
* @param $variant \type{\string} language variant of url (for sr, zh..)
@@ -859,6 +842,9 @@ class Title {
* there's a fragment but the prefixed text is empty, we just return a link
* to the fragment.
*
+ * The result obviously should not be URL-escaped, but does need to be
+ * HTML-escaped if it's being output in HTML.
+ *
* @param $query \type{\arrayof{\string}} An associative array of key => value pairs for the
* query string. Keys and values will be escaped.
* @param $variant \type{\string} Language variant of URL (for sr, zh..). Ignored
@@ -868,11 +854,6 @@ class Title {
*/
public function getLinkUrl( $query = array(), $variant = false ) {
wfProfileIn( __METHOD__ );
- if( !is_array( $query ) ) {
- wfProfileOut( __METHOD__ );
- throw new MWException( 'Title::getLinkUrl passed a non-array for '.
- '$query' );
- }
if( $this->isExternal() ) {
$ret = $this->getFullURL( $query );
} elseif( $this->getPrefixedText() === '' && $this->getFragment() !== '' ) {
@@ -924,10 +905,10 @@ class Title {
/**
* Get the edit URL for this Title
* @return \type{\string} the URL, or a null string if this is an
- * interwiki link
+ * interwiki link
*/
public function getEditURL() {
- if ( '' != $this->mInterwiki ) { return ''; }
+ if ( $this->mInterwiki != '' ) { return ''; }
$s = $this->getLocalURL( 'action=edit' );
return $s;
@@ -946,7 +927,7 @@ class Title {
* Is this Title interwiki?
* @return \type{\bool}
*/
- public function isExternal() { return ( '' != $this->mInterwiki ); }
+ public function isExternal() { return ( $this->mInterwiki != '' ); }
/**
* Is this page "semi-protected" - the *only* protection is autoconfirm?
@@ -976,18 +957,20 @@ class Title {
/**
* Does the title correspond to a protected article?
* @param $what \type{\string} the action the page is protected from,
- * by default checks move and edit
+ * by default checks all actions.
* @return \type{\bool}
*/
public function isProtected( $action = '' ) {
- global $wgRestrictionLevels, $wgRestrictionTypes;
+ global $wgRestrictionLevels;
+
+ $restrictionTypes = $this->getRestrictionTypes();
# Special pages have inherent protection
if( $this->getNamespace() == NS_SPECIAL )
return true;
# Check regular protection levels
- foreach( $wgRestrictionTypes as $type ){
+ foreach( $restrictionTypes as $type ){
if( $action == $type || $action == '' ) {
$r = $this->getRestrictions( $type );
foreach( $wgRestrictionLevels as $level ) {
@@ -1002,6 +985,19 @@ class Title {
}
/**
+ * Is this a conversion table for the LanguageConverter?
+ * @return \type{\bool}
+ */
+ public function isConversionTable() {
+ if($this->getNamespace() == NS_MEDIAWIKI
+ && strpos( $this->getText(), 'Conversiontable' ) !== false ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
* Is $wgUser watching this page?
* @return \type{\bool}
*/
@@ -1020,7 +1016,8 @@ class Title {
/**
* Can $wgUser perform $action on this page?
- * This skips potentially expensive cascading permission checks.
+ * This skips potentially expensive cascading permission checks
+ * as well as avoids expensive error formatting
*
* Suitable for use for nonessential UI controls in common cases, but
* _not_ for functional access control.
@@ -1029,7 +1026,7 @@ class Title {
*
* @param $action \type{\string} action that permission needs to be checked for
* @return \type{\bool}
- */
+ */
public function quickUserCan( $action ) {
return $this->userCan( $action, false );
}
@@ -1056,7 +1053,7 @@ class Title {
* @param $action \type{\string} action that permission needs to be checked for
* @param $doExpensiveQueries \type{\bool} Set this to false to avoid doing unnecessary queries.
* @return \type{\bool}
- */
+ */
public function userCan( $action, $doExpensiveQueries = true ) {
global $wgUser;
return ($this->getUserPermissionsErrorsInternal( $action, $wgUser, $doExpensiveQueries, true ) === array());
@@ -1136,15 +1133,15 @@ class Title {
$intended = $user->mBlock->mAddress;
- $errors[] = array( ($block->mAuto ? 'autoblockedtext' : 'blockedtext'), $link, $reason, $ip, $name,
+ $errors[] = array( ($block->mAuto ? 'autoblockedtext' : 'blockedtext'), $link, $reason, $ip, $name,
$blockid, $blockExpiry, $intended, $blockTimestamp );
}
-
+
// Remove the errors being ignored.
-
+
foreach( $errors as $index => $error ) {
$error_key = is_array($error) ? $error[0] : $error;
-
+
if (in_array( $error_key, $ignoreErrors )) {
unset($errors[$index]);
}
@@ -1177,15 +1174,29 @@ class Title {
// Show user page-specific message only if the user can move other pages
$errors[] = array( 'cant-move-user-page' );
}
-
+
// Check if user is allowed to move files if it's a file
if( $this->getNamespace() == NS_FILE && !$user->isAllowed( 'movefile' ) ) {
$errors[] = array( 'movenotallowedfile' );
}
-
+
if( !$user->isAllowed( 'move' ) ) {
// User can't move anything
- $errors[] = $user->isAnon() ? array ( 'movenologintext' ) : array ('movenotallowed');
+ global $wgGroupPermissions;
+ $userCanMove = false;
+ if ( isset( $wgGroupPermissions['user']['move'] ) ) {
+ $userCanMove = $wgGroupPermissions['user']['move'];
+ }
+ $autoconfirmedCanMove = false;
+ if ( isset( $wgGroupPermissions['autoconfirmed']['move'] ) ) {
+ $autoconfirmedCanMove = $wgGroupPermissions['autoconfirmed']['move'];
+ }
+ if ( $user->isAnon() && ( $userCanMove || $autoconfirmedCanMove ) ) {
+ // custom message if logged-in users without any special rights can move
+ $errors[] = array ( 'movenologintext' );
+ } else {
+ $errors[] = array ('movenotallowed');
+ }
}
} elseif ( $action == 'create' ) {
if( ( $this->isTalkPage() && !$user->isAllowed( 'createtalk' ) ) ||
@@ -1196,7 +1207,7 @@ class Title {
} elseif( $action == 'move-target' ) {
if( !$user->isAllowed( 'move' ) ) {
// User can't move anything
- $errors[] = $user->isAnon() ? array ( 'movenologintext' ) : array ('movenotallowed');
+ $errors[] = array ('movenotallowed');
} elseif( !$user->isAllowed( 'move-rootuserpages' )
&& $this->getNamespace() == NS_USER && !$this->isSubpage() )
{
@@ -1205,8 +1216,14 @@ class Title {
}
} elseif( !$user->isAllowed( $action ) ) {
$return = null;
- $groups = array_map( array( 'User', 'makeGroupLinkWiki' ),
- User::getGroupsWithPermission( $action ) );
+
+ // We avoid expensive display logic for quickUserCan's and such
+ $groups = false;
+ if (!$short) {
+ $groups = array_map( array( 'User', 'makeGroupLinkWiki' ),
+ User::getGroupsWithPermission( $action ) );
+ }
+
if( $groups ) {
$return = array( 'badaccess-groups',
array( implode( ', ', $groups ), count( $groups ) ) );
@@ -1259,7 +1276,7 @@ class Title {
wfProfileOut( __METHOD__ );
return $errors;
}
-
+
# Only 'createaccount' and 'execute' can be performed on
# special pages, which don't actually exist in the DB.
$specialOKActions = array( 'createaccount', 'execute' );
@@ -1277,8 +1294,16 @@ class Title {
# Protect css/js subpages of user pages
# XXX: this might be better using restrictions
- # XXX: Find a way to work around the php bug that prevents using $this->userCanEditCssJsSubpage() from working
- if( $this->isCssJsSubpage() && !$user->isAllowed('editusercssjs')
+ # XXX: Find a way to work around the php bug that prevents using $this->userCanEditCssSubpage()
+ # and $this->userCanEditJsSubpage() from working
+ # XXX: right 'editusercssjs' is deprecated, for backward compatibility only
+ if( $this->isCssSubpage() && !( $user->isAllowed('editusercssjs') || $user->isAllowed('editusercss') )
+ && $action != 'patrol'
+ && !preg_match('/^'.preg_quote($user->getName(), '/').'\//', $this->mTextform) )
+ {
+ $errors[] = array('customcssjsprotected');
+ } else if( $this->isJsSubpage() && !( $user->isAllowed('editusercssjs') || $user->isAllowed('edituserjs') )
+ && $action != 'patrol'
&& !preg_match('/^'.preg_quote($user->getName(), '/').'\//', $this->mTextform) )
{
$errors[] = array('customcssjsprotected');
@@ -1291,7 +1316,7 @@ class Title {
if( $right == 'sysop' ) {
$right = 'protect';
}
- if( '' != $right && !$user->isAllowed( $right ) ) {
+ if( $right != '' && !$user->isAllowed( $right ) ) {
// Users with 'editprotected' permission can edit protected pages
if( $action=='edit' && $user->isAllowed( 'editprotected' ) ) {
// Users with 'editprotected' permission cannot edit protected pages
@@ -1309,7 +1334,7 @@ class Title {
wfProfileOut( __METHOD__ );
return $errors;
}
-
+
if( $doExpensiveQueries && !$this->isCssJsSubpage() ) {
# We /could/ use the protection level on the source page, but it's fairly ugly
# as we have to establish a precedence hierarchy for pages included by multiple
@@ -1323,7 +1348,7 @@ class Title {
if( $cascadingSources > 0 && isset($restrictions[$action]) ) {
foreach( $restrictions[$action] as $right ) {
$right = ( $right == 'sysop' ) ? 'protect' : $right;
- if( '' != $right && !$user->isAllowed( $right ) ) {
+ if( $right != '' && !$user->isAllowed( $right ) ) {
$pages = '';
foreach( $cascadingSources as $page )
$pages .= '* [[:' . $page->getPrefixedText() . "]]\n";
@@ -1388,6 +1413,11 @@ class Title {
return false;
}
+ // Can't protect pages that exist.
+ if ($this->exists()) {
+ return false;
+ }
+
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'protected_titles', '*',
array( 'pt_namespace' => $this->getNamespace(), 'pt_title' => $this->getDBkey() ),
@@ -1423,32 +1453,40 @@ class Title {
$expiry_description = '';
if ( $encodedExpiry != 'infinity' ) {
- $expiry_description = ' (' . wfMsgForContent( 'protect-expiring', $wgContLang->timeanddate( $expiry ) , $wgContLang->date( $expiry ) , $wgContLang->time( $expiry ) ).')';
+ $expiry_description = ' (' . wfMsgForContent( 'protect-expiring',$wgContLang->timeanddate( $expiry ),
+ $wgContLang->date( $expiry ) , $wgContLang->time( $expiry ) ).')';
}
else {
$expiry_description .= ' (' . wfMsgForContent( 'protect-expiry-indefinite' ).')';
}
-
+
# Update protection table
if ($create_perm != '' ) {
$dbw->replace( 'protected_titles', array(array('pt_namespace', 'pt_title')),
- array( 'pt_namespace' => $namespace, 'pt_title' => $title
- , 'pt_create_perm' => $create_perm
- , 'pt_timestamp' => Block::encodeExpiry(wfTimestampNow(), $dbw)
- , 'pt_expiry' => $encodedExpiry
- , 'pt_user' => $wgUser->getId(), 'pt_reason' => $reason ), __METHOD__ );
+ array(
+ 'pt_namespace' => $namespace,
+ 'pt_title' => $title,
+ 'pt_create_perm' => $create_perm,
+ 'pt_timestamp' => Block::encodeExpiry(wfTimestampNow(), $dbw),
+ 'pt_expiry' => $encodedExpiry,
+ 'pt_user' => $wgUser->getId(),
+ 'pt_reason' => $reason,
+ ), __METHOD__
+ );
} else {
$dbw->delete( 'protected_titles', array( 'pt_namespace' => $namespace,
'pt_title' => $title ), __METHOD__ );
}
# Update the protection log
- $log = new LogPage( 'protect' );
+ if( $dbw->affectedRows() ) {
+ $log = new LogPage( 'protect' );
- if( $create_perm ) {
- $params = array("[create=$create_perm] $expiry_description",'');
- $log->addEntry( $this->mRestrictions['create'] ? 'modify' : 'protect', $this, trim( $reason ), $params );
- } else {
- $log->addEntry( 'unprotect', $this, $reason );
+ if( $create_perm ) {
+ $params = array("[create=$create_perm] $expiry_description",'');
+ $log->addEntry( ( isset( $this->mRestrictions['create'] ) && $this->mRestrictions['create'] ) ? 'modify' : 'protect', $this, trim( $reason ), $params );
+ } else {
+ $log->addEntry( 'unprotect', $this, $reason );
+ }
}
return true;
@@ -1461,38 +1499,11 @@ class Title {
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'protected_titles',
- array( 'pt_namespace' => $this->getNamespace(), 'pt_title' => $this->getDBkey() ),
+ array( 'pt_namespace' => $this->getNamespace(), 'pt_title' => $this->getDBkey() ),
__METHOD__ );
}
/**
- * Can $wgUser edit this page?
- * @return \type{\bool} TRUE or FALSE
- * @deprecated use userCan('edit')
- */
- public function userCanEdit( $doExpensiveQueries = true ) {
- return $this->userCan( 'edit', $doExpensiveQueries );
- }
-
- /**
- * Can $wgUser create this page?
- * @return \type{\bool} TRUE or FALSE
- * @deprecated use userCan('create')
- */
- public function userCanCreate( $doExpensiveQueries = true ) {
- return $this->userCan( 'create', $doExpensiveQueries );
- }
-
- /**
- * Can $wgUser move this page?
- * @return \type{\bool} TRUE or FALSE
- * @deprecated use userCan('move')
- */
- public function userCanMove( $doExpensiveQueries = true ) {
- return $this->userCan( 'move', $doExpensiveQueries );
- }
-
- /**
* Would anybody with sufficient privileges be able to move this page?
* Some pages just aren't movable.
*
@@ -1510,6 +1521,32 @@ class Title {
public function userCanRead() {
global $wgUser, $wgGroupPermissions;
+ static $useShortcut = null;
+
+ # Initialize the $useShortcut boolean, to determine if we can skip quite a bit of code below
+ if( is_null( $useShortcut ) ) {
+ global $wgRevokePermissions;
+ $useShortcut = true;
+ if( empty( $wgGroupPermissions['*']['read'] ) ) {
+ # Not a public wiki, so no shortcut
+ $useShortcut = false;
+ } elseif( !empty( $wgRevokePermissions ) ) {
+ /*
+ * Iterate through each group with permissions being revoked (key not included since we don't care
+ * what the group name is), then check if the read permission is being revoked. If it is, then
+ * we don't use the shortcut below since the user might not be able to read, even though anon
+ * reading is allowed.
+ */
+ foreach( $wgRevokePermissions as $perms ) {
+ if( !empty( $perms['read'] ) ) {
+ # We might be removing the read right from the user, so no shortcut
+ $useShortcut = false;
+ break;
+ }
+ }
+ }
+ }
+
$result = null;
wfRunHooks( 'userCan', array( &$this, &$wgUser, 'read', &$result ) );
if ( $result !== null ) {
@@ -1517,7 +1554,7 @@ class Title {
}
# Shortcut for public wikis, allows skipping quite a bit of code
- if ( !empty( $wgGroupPermissions['*']['read'] ) )
+ if ( $useShortcut )
return true;
if( $wgUser->isAllowed( 'read' ) ) {
@@ -1620,7 +1657,7 @@ class Title {
return $this->mHasSubpages = (bool)$subpages->count();
return $this->mHasSubpages = false;
}
-
+
/**
* Get all subpages of this page.
* @param $limit Maximum number of subpages to fetch; -1 for no limit
@@ -1633,8 +1670,7 @@ class Title {
$dbr = wfGetDB( DB_SLAVE );
$conds['page_namespace'] = $this->getNamespace();
- $conds[] = 'page_title LIKE ' . $dbr->addQuotes(
- $dbr->escapeLike( $this->getDBkey() ) . '/%' );
+ $conds[] = 'page_title ' . $dbr->buildLike( $this->getDBkey() . '/', $dbr->anyString() );
$options = array();
if( $limit > -1 )
$options['LIMIT'] = $limit;
@@ -1702,15 +1738,28 @@ class Title {
return ( NS_USER == $this->mNamespace && preg_match("/\\/.*\\.js$/", $this->mTextform ) );
}
/**
- * Protect css/js subpages of user pages: can $wgUser edit
+ * Protect css subpages of user pages: can $wgUser edit
+ * this page?
+ *
+ * @return \type{\bool} TRUE or FALSE
+ * @todo XXX: this might be better using restrictions
+ */
+ public function userCanEditCssSubpage() {
+ global $wgUser;
+ return ( ( $wgUser->isAllowed('editusercssjs') && $wgUser->isAllowed('editusercss') )
+ || preg_match('/^'.preg_quote($wgUser->getName(), '/').'\//', $this->mTextform) );
+ }
+ /**
+ * Protect js subpages of user pages: can $wgUser edit
* this page?
*
* @return \type{\bool} TRUE or FALSE
* @todo XXX: this might be better using restrictions
*/
- public function userCanEditCssJsSubpage() {
+ public function userCanEditJsSubpage() {
global $wgUser;
- return ( $wgUser->isAllowed('editusercssjs') || preg_match('/^'.preg_quote($wgUser->getName(), '/').'\//', $this->mTextform) );
+ return ( ( $wgUser->isAllowed('editusercssjs') && $wgUser->isAllowed('edituserjs') )
+ || preg_match('/^'.preg_quote($wgUser->getName(), '/').'\//', $this->mTextform) );
}
/**
@@ -1727,17 +1776,12 @@ class Title {
* Cascading protection: Get the source of any cascading restrictions on this page.
*
* @param $get_pages \type{\bool} Whether or not to retrieve the actual pages that the restrictions have come from.
- * @return \type{\arrayof{mixed title array, restriction array}} Array of the Title objects of the pages from
+ * @return \type{\arrayof{mixed title array, restriction array}} Array of the Title objects of the pages from
* which cascading restrictions have come, false for none, or true if such restrictions exist, but $get_pages was not set.
* The restriction array is an array of each type, each of which contains an array of unique groups.
*/
public function getCascadeProtectionSources( $get_pages = true ) {
- global $wgRestrictionTypes;
-
- # Define our dimension of restrictions types
$pagerestrictions = array();
- foreach( $wgRestrictionTypes as $action )
- $pagerestrictions[$action] = array();
if ( isset( $this->mCascadeSources ) && $get_pages ) {
return array( $this->mCascadeSources, $this->mCascadingRestrictions );
@@ -1788,7 +1832,13 @@ class Title {
$sources[$page_id] = Title::makeTitle($page_ns, $page_title);
# Add groups needed for each restriction type if its not already there
# Make sure this restriction type still exists
- if ( isset($pagerestrictions[$row->pr_type]) && !in_array($row->pr_level, $pagerestrictions[$row->pr_type]) ) {
+
+ if ( !isset( $pagerestrictions[$row->pr_type] ) ) {
+ $pagerestrictions[$row->pr_type] = array();
+ }
+
+ if ( isset($pagerestrictions[$row->pr_type]) &&
+ !in_array($row->pr_level, $pagerestrictions[$row->pr_type]) ) {
$pagerestrictions[$row->pr_type][]=$row->pr_level;
}
} else {
@@ -1826,11 +1876,23 @@ class Title {
* Loads a string into mRestrictions array
* @param $res \type{Resource} restrictions as an SQL result.
*/
- private function loadRestrictionsFromRow( $res, $oldFashionedRestrictions = NULL ) {
- global $wgRestrictionTypes;
+ private function loadRestrictionsFromResultWrapper( $res, $oldFashionedRestrictions = null ) {
+ $rows = array();
+ $dbr = wfGetDB( DB_SLAVE );
+
+ while( $row = $dbr->fetchObject( $res ) ) {
+ $rows[] = $row;
+ }
+
+ $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions );
+ }
+
+ public function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions = null ) {
$dbr = wfGetDB( DB_SLAVE );
- foreach( $wgRestrictionTypes as $type ){
+ $restrictionTypes = $this->getRestrictionTypes();
+
+ foreach( $restrictionTypes as $type ){
$this->mRestrictions[$type] = array();
$this->mRestrictionsExpiry[$type] = Block::decodeExpiry('');
}
@@ -1839,8 +1901,8 @@ class Title {
# Backwards-compatibility: also load the restrictions from the page record (old format).
- if ( $oldFashionedRestrictions === NULL ) {
- $oldFashionedRestrictions = $dbr->selectField( 'page', 'page_restrictions',
+ if ( $oldFashionedRestrictions === null ) {
+ $oldFashionedRestrictions = $dbr->selectField( 'page', 'page_restrictions',
array( 'page_id' => $this->getArticleId() ), __METHOD__ );
}
@@ -1861,16 +1923,17 @@ class Title {
}
- if( $dbr->numRows( $res ) ) {
+ if( count($rows) ) {
# Current system - load second to make them override.
$now = wfTimestampNow();
$purgeExpired = false;
- foreach( $res as $row ) {
+ foreach( $rows as $row ) {
# Cycle through all the restrictions.
- // Don't take care of restrictions types that aren't in $wgRestrictionTypes
- if( !in_array( $row->pr_type, $wgRestrictionTypes ) )
+ // Don't take care of restrictions types that aren't allowed
+
+ if( !in_array( $row->pr_type, $restrictionTypes ) )
continue;
// This code should be refactored, now that it's being used more generally,
@@ -1900,7 +1963,7 @@ class Title {
/**
* Load restrictions from the page_restrictions table
*/
- public function loadRestrictions( $oldFashionedRestrictions = NULL ) {
+ public function loadRestrictions( $oldFashionedRestrictions = null ) {
if( !$this->mRestrictionsLoaded ) {
if ($this->exists()) {
$dbr = wfGetDB( DB_SLAVE );
@@ -1908,7 +1971,7 @@ class Title {
$res = $dbr->select( 'page_restrictions', '*',
array ( 'pr_page' => $this->getArticleId() ), __METHOD__ );
- $this->loadRestrictionsFromRow( $res, $oldFashionedRestrictions );
+ $this->loadRestrictionsFromResultWrapper( $res, $oldFashionedRestrictions );
} else {
$title_protection = $this->getTitleProtection();
@@ -1964,7 +2027,7 @@ class Title {
/**
* Get the expiry time for the restriction against a given action
- * @return 14-char timestamp, or 'infinity' if the page is protected forever
+ * @return 14-char timestamp, or 'infinity' if the page is protected forever
* or not protected at all, or false if the action is not recognised.
*/
public function getRestrictionExpiry( $action ) {
@@ -1983,7 +2046,7 @@ class Title {
$n = 0;
} else {
$dbr = wfGetDB( DB_SLAVE );
- $n = $dbr->selectField( 'archive', 'COUNT(*)',
+ $n = $dbr->selectField( 'archive', 'COUNT(*)',
array( 'ar_namespace' => $this->getNamespace(), 'ar_title' => $this->getDBkey() ),
__METHOD__
);
@@ -1996,7 +2059,7 @@ class Title {
}
return (int)$n;
}
-
+
/**
* Is there a version of this page in the deletion archive?
* @return bool
@@ -2023,7 +2086,7 @@ class Title {
* Get the article ID for this Title from the link cache,
* adding it if necessary
* @param $flags \type{\int} a bit field; may be GAID_FOR_UPDATE to select
- * for update
+ * for update
* @return \type{\int} the ID
*/
public function getArticleID( $flags = 0 ) {
@@ -2085,7 +2148,7 @@ class Title {
/**
* What is the page_latest field for this page?
* @param $flags \type{\int} a bit field; may be GAID_FOR_UPDATE to select for update
- * @return \type{\int}
+ * @return \type{\int} or false if the page doesn't exist
*/
public function getLatestRevID( $flags = 0 ) {
if( $this->mLatestID !== false )
@@ -2111,7 +2174,7 @@ class Title {
$linkCache->clearBadLink( $this->getPrefixedDBkey() );
if ( $newid === false ) { $this->mArticleID = -1; }
- else { $this->mArticleID = $newid; }
+ else { $this->mArticleID = intval( $newid ); }
$this->mRestrictionsLoaded = false;
$this->mRestrictions = array();
}
@@ -2126,8 +2189,8 @@ class Title {
}
$dbw = wfGetDB( DB_MASTER );
$success = $dbw->update( 'page',
- array( 'page_touched' => $dbw->timestamp() ),
- $this->pageCond(),
+ array( 'page_touched' => $dbw->timestamp() ),
+ $this->pageCond(),
__METHOD__
);
HTMLFileCache::clearFileCache( $this );
@@ -2144,7 +2207,7 @@ class Title {
*/
/* private */ function prefix( $name ) {
$p = '';
- if ( '' != $this->mInterwiki ) {
+ if ( $this->mInterwiki != '' ) {
$p = $this->mInterwiki . ':';
}
if ( 0 != $this->mNamespace ) {
@@ -2153,20 +2216,10 @@ class Title {
return $p . $name;
}
- /**
- * Secure and split - main initialisation function for this object
- *
- * Assumes that mDbkeyform has been set, and is urldecoded
- * and uses underscores, but not otherwise munged. This function
- * removes illegal characters, splits off the interwiki and
- * namespace prefixes, sets the other forms, and canonicalizes
- * everything.
- * @return \type{\bool} true on success
- */
- private function secureAndSplit() {
- global $wgContLang, $wgLocalInterwiki, $wgCapitalLinks;
-
- # Initialisation
+ // Returns a simple regex that will match on characters and sequences invalid in titles.
+ // Note that this doesn't pick up many things that could be wrong with titles, but that
+ // replacing this regex with something valid will make many titles valid.
+ static function getTitleInvalidRegex() {
static $rxTc = false;
if( !$rxTc ) {
# Matching titles will be held as illegal.
@@ -2183,6 +2236,37 @@ class Title {
'/S';
}
+ return $rxTc;
+ }
+
+ /**
+ * Capitalize a text if it belongs to a namespace that capitalizes
+ */
+ public static function capitalize( $text, $ns = NS_MAIN ) {
+ global $wgContLang;
+
+ if ( MWNamespace::isCapitalized( $ns ) )
+ return $wgContLang->ucfirst( $text );
+ else
+ return $text;
+ }
+
+ /**
+ * Secure and split - main initialisation function for this object
+ *
+ * Assumes that mDbkeyform has been set, and is urldecoded
+ * and uses underscores, but not otherwise munged. This function
+ * removes illegal characters, splits off the interwiki and
+ * namespace prefixes, sets the other forms, and canonicalizes
+ * everything.
+ * @return \type{\bool} true on success
+ */
+ private function secureAndSplit() {
+ global $wgContLang, $wgLocalInterwiki;
+
+ # Initialisation
+ $rxTc = self::getTitleInvalidRegex();
+
$this->mInterwiki = $this->mFragment = '';
$this->mNamespace = $this->mDefaultNamespace; # Usually NS_MAIN
@@ -2194,11 +2278,14 @@ class Title {
$dbkey = preg_replace( '/\xE2\x80[\x8E\x8F\xAA-\xAE]/S', '', $dbkey );
# Clean up whitespace
+ # Note: use of the /u option on preg_replace here will cause
+ # input with invalid UTF-8 sequences to be nullified out in PHP 5.2.x,
+ # conveniently disabling them.
#
- $dbkey = preg_replace( '/[ _]+/', '_', $dbkey );
+ $dbkey = preg_replace( '/[ _\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u', '_', $dbkey );
$dbkey = trim( $dbkey, '_' );
- if ( '' == $dbkey ) {
+ if ( $dbkey == '' ) {
return false;
}
@@ -2273,7 +2360,7 @@ class Title {
# We already know that some pages won't be in the database!
#
- if ( '' != $this->mInterwiki || NS_SPECIAL == $this->mNamespace ) {
+ if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
$this->mArticleID = 0;
}
$fragment = strstr( $dbkey, '#' );
@@ -2337,8 +2424,8 @@ class Title {
* site might be case-sensitive.
*/
$this->mUserCaseDBKey = $dbkey;
- if( $wgCapitalLinks && $this->mInterwiki == '') {
- $dbkey = $wgContLang->ucfirst( $dbkey );
+ if( $this->mInterwiki == '') {
+ $dbkey = self::capitalize( $dbkey, $this->mNamespace );
}
/**
@@ -2375,7 +2462,7 @@ class Title {
/**
* Set the fragment for this title. Removes the first character from the
- * specified fragment before setting, so it assumes you're passing it with
+ * specified fragment before setting, so it assumes you're passing it with
* an initial "#".
*
* Deprecated for public use, use Title::makeTitle() with fragment parameter.
@@ -2487,8 +2574,8 @@ class Title {
),
__METHOD__, array(),
array(
- 'page' => array(
- 'LEFT JOIN',
+ 'page' => array(
+ 'LEFT JOIN',
array( 'pl_namespace=page_namespace', 'pl_title=page_title' )
)
)
@@ -2553,14 +2640,14 @@ class Title {
* Returns true if ok, or a getUserPermissionsErrors()-like array otherwise
* @param &$nt \type{Title} the new title
* @param $auth \type{\bool} indicates whether $wgUser's permissions
- * should be checked
+ * should be checked
* @param $reason \type{\string} is the log summary of the move, used for spam checking
* @return \type{\mixed} True on success, getUserPermissionsErrors()-like array on failure
*/
public function isValidMoveOperation( &$nt, $auth = true, $reason = '' ) {
global $wgUser;
- $errors = array();
+ $errors = array();
if( !$nt ) {
// Normally we'd add this to $errors, but we'll get
// lots of syntax errors if $nt is not an object
@@ -2585,9 +2672,9 @@ class Title {
if ( strlen( $nt->getDBkey() ) < 1 ) {
$errors[] = array('articleexists');
}
- if ( ( '' == $this->getDBkey() ) ||
+ if ( ( $this->getDBkey() == '' ) ||
( !$oldid ) ||
- ( '' == $nt->getDBkey() ) ) {
+ ( $nt->getDBkey() == '' ) ) {
$errors[] = array('badarticleerror');
}
@@ -2601,10 +2688,15 @@ class Title {
if( $nt->getText() != wfStripIllegalFilenameChars( $nt->getText() ) ) {
$errors[] = array('imageinvalidfilename');
}
- if( !File::checkExtensionCompatibility( $file, $nt->getDBKey() ) ) {
+ if( !File::checkExtensionCompatibility( $file, $nt->getDBkey() ) ) {
$errors[] = array('imagetypemismatch');
}
}
+ $destfile = wfLocalFile( $nt );
+ if( !$wgUser->isAllowed( 'reupload-shared' ) && !$destfile->exists() && wfFindFile( $nt ) ) {
+ $errors[] = array( 'file-exists-sharedrepo' );
+ }
+
}
if ( $auth ) {
@@ -2620,7 +2712,7 @@ class Title {
// This is kind of lame, won't display nice
$errors[] = array('spamprotectiontext');
}
-
+
$err = null;
if( !wfRunHooks( 'AbortMove', array( $this, $nt, $wgUser, &$err, $reason ) ) ) {
$errors[] = array('hookaborted', $err);
@@ -2650,7 +2742,7 @@ class Title {
* Move a title to a new location
* @param &$nt \type{Title} the new title
* @param $auth \type{\bool} indicates whether $wgUser's permissions
- * should be checked
+ * should be checked
* @param $reason \type{\string} The reason for the move
* @param $createRedirect \type{\bool} Whether to create a redirect from the old title to the new title.
* Ignored if the user doesn't have the suppressredirect right.
@@ -2662,6 +2754,18 @@ class Title {
return $err;
}
+ // If it is a file, move it first. It is done before all other moving stuff is done because it's hard to revert
+ $dbw = wfGetDB( DB_MASTER );
+ if( $this->getNamespace() == NS_FILE ) {
+ $file = wfLocalFile( $this );
+ if( $file->exists() ) {
+ $status = $file->move( $nt );
+ if( !$status->isOk() ) {
+ return $status->getErrorsArray();
+ }
+ }
+ }
+
$pageid = $this->getArticleID();
$protected = $this->isProtected();
if( $nt->exists() ) {
@@ -2688,7 +2792,6 @@ class Title {
// we can't actually distinguish it from a default here, and it'll
// be set to the new title even though it really shouldn't.
// It'll get corrected on the next edit, but resetting cl_timestamp.
- $dbw = wfGetDB( DB_MASTER );
$dbw->update( 'categorylinks',
array(
'cl_sortkey' => $nt->getPrefixedText(),
@@ -2701,7 +2804,7 @@ class Title {
if( $protected ) {
# Protect the redirect title as the title used to be...
$dbw->insertSelect( 'page_restrictions', 'page_restrictions',
- array(
+ array(
'pr_page' => $redirid,
'pr_type' => 'pr_type',
'pr_level' => 'pr_level',
@@ -2760,7 +2863,7 @@ class Title {
# @bug 17860: old article can be deleted, if this the case,
# delete it from message cache
- if ( $this->getArticleID === 0 ) {
+ if ( $this->getArticleID() === 0 ) {
$wgMessageCache->replace( $this->getDBkey(), false );
} else {
$oldarticle = new Article( $this );
@@ -2781,19 +2884,21 @@ class Title {
* source page
*
* @param &$nt \type{Title} the page to move to, which should currently
- * be a redirect
+ * be a redirect
* @param $reason \type{\string} The reason for the move
* @param $createRedirect \type{\bool} Whether to leave a redirect at the old title.
* Ignored if the user doesn't have the suppressredirect right
*/
private function moveOverExistingRedirect( &$nt, $reason = '', $createRedirect = true ) {
- global $wgUseSquid, $wgUser;
- $fname = 'Title::moveOverExistingRedirect';
+ global $wgUseSquid, $wgUser, $wgContLang;
+
$comment = wfMsgForContent( '1movedto2_redir', $this->getPrefixedText(), $nt->getPrefixedText() );
if ( $reason ) {
- $comment .= ": $reason";
+ $comment .= wfMsgForContent( 'colon-separator' ) . $reason;
}
+ # Truncate for whole multibyte characters. +5 bytes for ellipsis
+ $comment = $wgContLang->truncate( $comment, 250 );
$now = wfTimestampNow();
$newid = $nt->getArticleID();
@@ -2802,11 +2907,15 @@ class Title {
$dbw = wfGetDB( DB_MASTER );
+ $rcts = $dbw->timestamp( $nt->getEarliestRevTime() );
+ $newns = $nt->getNamespace();
+ $newdbk = $nt->getDBkey();
+
# Delete the old redirect. We don't save it to history since
# by definition if we've got here it's rather uninteresting.
# We have to remove it so that the next step doesn't trigger
# a conflict on the unique namespace+title index...
- $dbw->delete( 'page', array( 'page_id' => $newid ), $fname );
+ $dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
if ( !$dbw->cascadingDeletes() ) {
$dbw->delete( 'revision', array( 'rev_page' => $newid ), __METHOD__ );
global $wgUseTrackbacks;
@@ -2820,11 +2929,16 @@ class Title {
$dbw->delete( 'langlinks', array( 'll_from' => $newid ), __METHOD__ );
$dbw->delete( 'redirect', array( 'rd_from' => $newid ), __METHOD__ );
}
+ // If the redirect was recently created, it may have an entry in recentchanges still
+ $dbw->delete( 'recentchanges',
+ array( 'rc_timestamp' => $rcts, 'rc_namespace' => $newns, 'rc_title' => $newdbk, 'rc_new' => 1 ),
+ __METHOD__
+ );
# Save a null revision in the page's history notifying of the move
$nullRevision = Revision::newNullRevision( $dbw, $oldid, $comment, true );
$nullRevId = $nullRevision->insertOn( $dbw );
-
+
$article = new Article( $this );
wfRunHooks( 'NewRevisionFromEditComplete', array($article, $nullRevision, $latest, $wgUser) );
@@ -2837,7 +2951,7 @@ class Title {
'page_latest' => $nullRevId,
),
/* WHERE */ array( 'page_id' => $oldid ),
- $fname
+ __METHOD__
);
$nt->resetArticleID( $oldid );
@@ -2853,36 +2967,24 @@ class Title {
'text' => $redirectText ) );
$redirectRevision->insertOn( $dbw );
$redirectArticle->updateRevisionOn( $dbw, $redirectRevision, 0 );
-
+
wfRunHooks( 'NewRevisionFromEditComplete', array($redirectArticle, $redirectRevision, false, $wgUser) );
# Now, we record the link from the redirect to the new title.
# It should have no other outgoing links...
- $dbw->delete( 'pagelinks', array( 'pl_from' => $newid ), $fname );
+ $dbw->delete( 'pagelinks', array( 'pl_from' => $newid ), __METHOD__ );
$dbw->insert( 'pagelinks',
array(
'pl_from' => $newid,
'pl_namespace' => $nt->getNamespace(),
'pl_title' => $nt->getDBkey() ),
- $fname );
+ __METHOD__ );
$redirectSuppressed = false;
} else {
$this->resetArticleID( 0 );
$redirectSuppressed = true;
}
- # Move an image if this is a file
- if( $this->getNamespace() == NS_FILE ) {
- $file = wfLocalFile( $this );
- if( $file->exists() ) {
- $status = $file->move( $nt );
- if( !$status->isOk() ) {
- $dbw->rollback();
- return $status->getErrorsArray();
- }
- }
- }
-
# Log the move
$log = new LogPage( 'move' );
$log->addEntry( 'move_redir', $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
@@ -2893,7 +2995,7 @@ class Title {
$u = new SquidUpdate( $urls );
$u->doUpdate();
}
-
+
}
/**
@@ -2904,26 +3006,31 @@ class Title {
* Ignored if the user doesn't have the suppressredirect right
*/
private function moveToNewTitle( &$nt, $reason = '', $createRedirect = true ) {
- global $wgUseSquid, $wgUser;
- $fname = 'MovePageForm::moveToNewTitle';
+ global $wgUseSquid, $wgUser, $wgContLang;
+
$comment = wfMsgForContent( '1movedto2', $this->getPrefixedText(), $nt->getPrefixedText() );
if ( $reason ) {
$comment .= wfMsgExt( 'colon-separator',
array( 'escapenoentities', 'content' ) );
$comment .= $reason;
}
+ # Truncate for whole multibyte characters. +5 bytes for ellipsis
+ $comment = $wgContLang->truncate( $comment, 250 );
$newid = $nt->getArticleID();
$oldid = $this->getArticleID();
$latest = $this->getLatestRevId();
-
+
$dbw = wfGetDB( DB_MASTER );
$now = $dbw->timestamp();
# Save a null revision in the page's history notifying of the move
$nullRevision = Revision::newNullRevision( $dbw, $oldid, $comment, true );
+ if ( !is_object( $nullRevision ) ) {
+ throw new MWException( 'No valid null revision produced in ' . __METHOD__ );
+ }
$nullRevId = $nullRevision->insertOn( $dbw );
-
+
$article = new Article( $this );
wfRunHooks( 'NewRevisionFromEditComplete', array($article, $nullRevision, $latest, $wgUser) );
@@ -2936,7 +3043,7 @@ class Title {
'page_latest' => $nullRevId,
),
/* WHERE */ array( 'page_id' => $oldid ),
- $fname
+ __METHOD__
);
$nt->resetArticleID( $oldid );
@@ -2952,7 +3059,7 @@ class Title {
'text' => $redirectText ) );
$redirectRevision->insertOn( $dbw );
$redirectArticle->updateRevisionOn( $dbw, $redirectRevision, 0 );
-
+
wfRunHooks( 'NewRevisionFromEditComplete', array($redirectArticle, $redirectRevision, false, $wgUser) );
# Record the just-created redirect's linking to the page
@@ -2961,25 +3068,13 @@ class Title {
'pl_from' => $newid,
'pl_namespace' => $nt->getNamespace(),
'pl_title' => $nt->getDBkey() ),
- $fname );
+ __METHOD__ );
$redirectSuppressed = false;
} else {
$this->resetArticleID( 0 );
$redirectSuppressed = true;
}
- # Move an image if this is a file
- if( $this->getNamespace() == NS_FILE ) {
- $file = wfLocalFile( $this );
- if( $file->exists() ) {
- $status = $file->move( $nt );
- if( !$status->isOk() ) {
- $dbw->rollback();
- return $status->getErrorsArray();
- }
- }
- }
-
# Log the move
$log = new LogPage( 'move' );
$log->addEntry( 'move', $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
@@ -2990,9 +3085,9 @@ class Title {
# Purge old title from squid
# The new title, and links to the new title, are purged in Article::onArticleCreate()
$this->purgeSquid();
-
+
}
-
+
/**
* Move this page's subpages to be subpages of $nt
* @param $nt Title Move target
@@ -3004,7 +3099,7 @@ class Title {
* arrays (errors) as values, or an error array with numeric indices if no pages were moved
*/
public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true ) {
- global $wgUser, $wgMaximumMovedPages;
+ global $wgMaximumMovedPages;
// Check permissions
if( !$this->userCan( 'move-subpages' ) )
return array( 'cant-move-subpages' );
@@ -3028,13 +3123,18 @@ class Title {
break;
}
- if( $oldSubpage->getArticleId() == $this->getArticleId() )
+ // We don't know whether this function was called before
+ // or after moving the root page, so check both
+ // $this and $nt
+ if( $oldSubpage->getArticleId() == $this->getArticleId() ||
+ $oldSubpage->getArticleID() == $nt->getArticleId() )
// When moving a page to a subpage of itself,
// don't move it twice
continue;
$newPageName = preg_replace(
- '#^'.preg_quote( $this->getDBKey(), '#' ).'#',
- $nt->getDBKey(), $oldSubpage->getDBKey() );
+ '#^'.preg_quote( $this->getDBkey(), '#' ).'#',
+ StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # bug 21234
+ $oldSubpage->getDBkey() );
if( $oldSubpage->isTalkPage() ) {
$newNs = $nt->getTalkPage()->getNamespace();
} else {
@@ -3053,7 +3153,7 @@ class Title {
}
return $retval;
}
-
+
/**
* Checks if this page is just a one-rev redirect.
* Adds lock, so don't use just for light purposes.
@@ -3083,7 +3183,7 @@ class Title {
'page_title' => $this->getDBkey(),
'page_id=rev_page',
'page_latest != rev_id'
- ),
+ ),
__METHOD__,
array( 'FOR UPDATE' )
);
@@ -3183,7 +3283,7 @@ class Title {
* @return \type{\array} Tree of parent categories
*/
public function getParentCategoryTree( $children = array() ) {
- $stack = array();
+ $stack = array();
$parents = $this->getParentCategories();
if( $parents ) {
@@ -3257,7 +3357,7 @@ class Title {
array( 'ORDER BY' => 'rev_id' )
);
}
-
+
/**
* Get the first revision of the page
*
@@ -3267,19 +3367,19 @@ class Title {
public function getFirstRevision( $flags=0 ) {
$db = ($flags & GAID_FOR_UPDATE) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
$pageId = $this->getArticleId($flags);
- if( !$pageId ) return NULL;
+ if( !$pageId ) return null;
$row = $db->selectRow( 'revision', '*',
array( 'rev_page' => $pageId ),
__METHOD__,
array( 'ORDER BY' => 'rev_timestamp ASC', 'LIMIT' => 1 )
);
if( !$row ) {
- return NULL;
+ return null;
} else {
return new Revision( $row );
}
}
-
+
/**
* Check if this is a new page
*
@@ -3317,7 +3417,7 @@ class Title {
*/
public function countRevisionsBetween( $old, $new ) {
$dbr = wfGetDB( DB_SLAVE );
- return $dbr->selectField( 'revision', 'count(*)',
+ return (int)$dbr->selectField( 'revision', 'count(*)',
'rev_page = ' . intval( $this->getArticleId() ) .
' AND rev_id > ' . intval( $old ) .
' AND rev_id < ' . intval( $new ),
@@ -3396,7 +3496,7 @@ class Title {
case NS_FILE:
return wfFindFile( $this ); // file exists, possibly in a foreign repo
case NS_SPECIAL:
- return SpecialPage::exists( $this->getDBKey() ); // valid special page
+ return SpecialPage::exists( $this->getDBkey() ); // valid special page
case NS_MAIN:
return $this->mDbkeyform == ''; // selflink, possibly with fragment
case NS_MEDIAWIKI:
@@ -3423,7 +3523,7 @@ class Title {
public function isKnown() {
return $this->exists() || $this->isAlwaysKnown();
}
-
+
/**
* Is this in a namespace that allows actual pages?
*
@@ -3453,7 +3553,7 @@ class Title {
* @param Database $db, optional db
* @return \type{\string} Last touched timestamp
*/
- public function getTouched( $db = NULL ) {
+ public function getTouched( $db = null ) {
$db = isset($db) ? $db : wfGetDB( DB_SLAVE );
$touched = $db->selectField( 'page', 'page_touched', $this->pageCond(), __METHOD__ );
return $touched;
@@ -3464,7 +3564,7 @@ class Title {
* @param User $user
* @return mixed string/NULL
*/
- public function getNotificationTimestamp( $user = NULL ) {
+ public function getNotificationTimestamp( $user = null ) {
global $wgUser, $wgShowUpdatedMarker;
// Assume current user if none given
if( !$user ) $user = $wgUser;
@@ -3534,40 +3634,36 @@ class Title {
* Generate strings used for xml 'id' names in monobook tabs
* @return \type{\string} XML 'id' name
*/
- public function getNamespaceKey() {
+ public function getNamespaceKey( $prepend = 'nstab-' ) {
global $wgContLang;
- switch ($this->getNamespace()) {
- case NS_MAIN:
- case NS_TALK:
- return 'nstab-main';
- case NS_USER:
- case NS_USER_TALK:
- return 'nstab-user';
- case NS_MEDIA:
- return 'nstab-media';
- case NS_SPECIAL:
- return 'nstab-special';
- case NS_PROJECT:
- case NS_PROJECT_TALK:
- return 'nstab-project';
- case NS_FILE:
- case NS_FILE_TALK:
- return 'nstab-image';
- case NS_MEDIAWIKI:
- case NS_MEDIAWIKI_TALK:
- return 'nstab-mediawiki';
- case NS_TEMPLATE:
- case NS_TEMPLATE_TALK:
- return 'nstab-template';
- case NS_HELP:
- case NS_HELP_TALK:
- return 'nstab-help';
- case NS_CATEGORY:
- case NS_CATEGORY_TALK:
- return 'nstab-category';
- default:
- return 'nstab-' . $wgContLang->lc( $this->getSubjectNsText() );
+ // Gets the subject namespace if this title
+ $namespace = MWNamespace::getSubject( $this->getNamespace() );
+ // Checks if cononical namespace name exists for namespace
+ if ( MWNamespace::exists( $this->getNamespace() ) ) {
+ // Uses canonical namespace name
+ $namespaceKey = MWNamespace::getCanonicalName( $namespace );
+ } else {
+ // Uses text of namespace
+ $namespaceKey = $this->getSubjectNsText();
+ }
+ // Makes namespace key lowercase
+ $namespaceKey = $wgContLang->lc( $namespaceKey );
+ // Uses main
+ if ( $namespaceKey == '' ) {
+ $namespaceKey = 'main';
+ }
+ // Changes file to image for backwards compatibility
+ if ( $namespaceKey == 'file' ) {
+ $namespaceKey = 'image';
}
+ return $prepend . $namespaceKey;
+ }
+
+ /**
+ * Returns true if this is a special page.
+ */
+ public function isSpecialPage( ) {
+ return $this->getNamespace() == NS_SPECIAL;
}
/**
@@ -3615,21 +3711,21 @@ class Title {
/**
* Get all extant redirects to this Title
*
- * @param $ns \twotypes{\int,\null} Single namespace to consider;
+ * @param $ns \twotypes{\int,\null} Single namespace to consider;
* NULL to consider all namespaces
* @return \type{\arrayof{Title}} Redirects to this title
*/
public function getRedirectsHere( $ns = null ) {
$redirs = array();
-
- $dbr = wfGetDB( DB_SLAVE );
+
+ $dbr = wfGetDB( DB_SLAVE );
$where = array(
'rd_namespace' => $this->getNamespace(),
'rd_title' => $this->getDBkey(),
'rd_from = page_id'
);
if ( !is_null($ns) ) $where['page_namespace'] = $ns;
-
+
$res = $dbr->select(
array( 'redirect', 'page' ),
array( 'page_namespace', 'page_title' ),
@@ -3643,7 +3739,7 @@ class Title {
}
return $redirs;
}
-
+
/**
* Check if this Title is a valid redirect target
*
@@ -3651,18 +3747,18 @@ class Title {
*/
public function isValidRedirectTarget() {
global $wgInvalidRedirectTargets;
-
+
// invalid redirect targets are stored in a global array, but explicity disallow Userlogout here
if( $this->isSpecial( 'Userlogout' ) ) {
return false;
}
-
+
foreach( $wgInvalidRedirectTargets as $target ) {
if( $this->isSpecial( $target ) ) {
return false;
}
}
-
+
return true;
}
@@ -3675,4 +3771,34 @@ class Title {
}
return $this->mBacklinkCache;
}
+
+ /**
+ * Whether the magic words __INDEX__ and __NOINDEX__ function for
+ * this page.
+ * @return Bool
+ */
+ public function canUseNoindex(){
+ global $wgArticleRobotPolicies, $wgContentNamespaces,
+ $wgExemptFromUserRobotsControl;
+
+ $bannedNamespaces = is_null( $wgExemptFromUserRobotsControl )
+ ? $wgContentNamespaces
+ : $wgExemptFromUserRobotsControl;
+
+ return !in_array( $this->mNamespace, $bannedNamespaces );
+
+ }
+
+ public function getRestrictionTypes() {
+ global $wgRestrictionTypes;
+ $types = $this->exists() ? $wgRestrictionTypes : array('create');
+
+ if ( $this->getNamespace() == NS_FILE ) {
+ $types[] = 'upload';
+ }
+
+ wfRunHooks( 'TitleGetRestrictionTypes', array( $this, &$types ) );
+
+ return $types;
+ }
}
diff --git a/includes/User.php b/includes/User.php
index 2ccc695b..51ffe70a 100644
--- a/includes/User.php
+++ b/includes/User.php
@@ -14,7 +14,7 @@ define( 'USER_TOKEN_LENGTH', 32 );
* \int Serialized record version.
* @ingroup Constants
*/
-define( 'MW_USER_VERSION', 6 );
+define( 'MW_USER_VERSION', 8 );
/**
* \string Some punctuation to prevent editing from broken text-mangling proxies.
@@ -43,8 +43,8 @@ class PasswordError extends MWException {
class User {
/**
- * \type{\arrayof{\string}} A list of default user toggles, i.e., boolean user
- * preferences that are displayed by Special:Preferences as checkboxes.
+ * \type{\arrayof{\string}} A list of default user toggles, i.e., boolean user
+ * preferences that are displayed by Special:Preferences as checkboxes.
* This list can be extended via the UserToggles hook or by
* $wgContLang::getExtraUserToggles().
* @showinitializer
@@ -95,8 +95,8 @@ class User {
);
/**
- * \type{\arrayof{\string}} List of member variables which are saved to the
- * shared cache (memcached). Any operation which changes the
+ * \type{\arrayof{\string}} List of member variables which are saved to the
+ * shared cache (memcached). Any operation which changes the
* corresponding database fields must call a cache-clearing function.
* @showinitializer
*/
@@ -109,7 +109,6 @@ class User {
'mNewpassword',
'mNewpassTime',
'mEmail',
- 'mOptions',
'mTouched',
'mToken',
'mEmailAuthenticated',
@@ -119,11 +118,13 @@ class User {
'mEditCount',
// user_group table
'mGroups',
+ // user_properties table
+ 'mOptionOverrides',
);
/**
* \type{\arrayof{\string}} Core rights.
- * Each of these should have a corresponding message of the form
+ * Each of these should have a corresponding message of the form
* "right-$right".
* @showinitializer
*/
@@ -141,6 +142,7 @@ class User {
'createtalk',
'delete',
'deletedhistory',
+ 'deletedtext',
'deleterevision',
'edit',
'editinterface',
@@ -166,6 +168,7 @@ class User {
'reupload',
'reupload-shared',
'rollback',
+ 'sendemail',
'siteadmin',
'suppressionlog',
'suppressredirect',
@@ -187,14 +190,14 @@ class User {
/** @name Cache variables */
//@{
var $mId, $mName, $mRealName, $mPassword, $mNewpassword, $mNewpassTime,
- $mEmail, $mOptions, $mTouched, $mToken, $mEmailAuthenticated,
- $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups;
+ $mEmail, $mTouched, $mToken, $mEmailAuthenticated,
+ $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups, $mOptionOverrides;
//@}
/**
* \bool Whether the cache variables have been loaded.
*/
- var $mDataLoaded, $mAuthLoaded;
+ var $mDataLoaded, $mAuthLoaded, $mOptionsLoaded;
/**
* \string Initialization data source if mDataLoaded==false. May be one of:
@@ -210,14 +213,16 @@ class User {
/** @name Lazy-initialized variables, invalidated with clearInstanceCache */
//@{
var $mNewtalk, $mDatePreference, $mBlockedby, $mHash, $mSkin, $mRights,
- $mBlockreason, $mBlock, $mEffectiveGroups, $mBlockedGlobally,
- $mLocked, $mHideName;
+ $mBlockreason, $mBlock, $mEffectiveGroups, $mBlockedGlobally,
+ $mLocked, $mHideName, $mOptions;
//@}
+ static $idCacheByName = array();
+
/**
* Lightweight constructor for an anonymous user.
* Use the User::newFrom* factory functions for other kinds of users.
- *
+ *
* @see newFromName()
* @see newFromId()
* @see newFromConfirmationCode()
@@ -310,6 +315,7 @@ class User {
function saveToCache() {
$this->load();
$this->loadGroups();
+ $this->loadOptions();
if ( $this->isAnon() ) {
// Anonymous users are uncached
return;
@@ -323,8 +329,8 @@ class User {
global $wgMemc;
$wgMemc->set( $key, $data );
}
-
-
+
+
/** @name newFrom*() static factory methods */
//@{
@@ -339,8 +345,9 @@ class User {
* User::getCanonicalName(), except that true is accepted as an alias
* for 'valid', for BC.
*
- * @return \type{User} The User object, or null if the username is invalid. If the
- * username is not present in the database, the result will be a user object
+ * @return \type{User} The User object, or false if the username is invalid
+ * (e.g. if it contains illegal characters or is an IP address). If the
+ * username is not present in the database, the result will be a user object
* with a name, zero user ID and default settings.
*/
static function newFromName( $name, $validate = 'valid' ) {
@@ -349,7 +356,7 @@ class User {
}
$name = self::getCanonicalName( $name, $validate );
if ( $name === false ) {
- return null;
+ return false;
} else {
# Create unloaded user object
$u = new User;
@@ -418,9 +425,9 @@ class User {
$user->loadFromRow( $row );
return $user;
}
-
+
//@}
-
+
/**
* Get the username corresponding to a given user ID
@@ -429,7 +436,7 @@ class User {
*/
static function whoIs( $id ) {
$dbr = wfGetDB( DB_SLAVE );
- return $dbr->selectField( 'user', 'user_name', array( 'user_id' => $id ), 'User::whoIs' );
+ return $dbr->selectField( 'user', 'user_name', array( 'user_id' => $id ), __METHOD__ );
}
/**
@@ -454,14 +461,27 @@ class User {
# Illegal name
return null;
}
+
+ if ( isset( self::$idCacheByName[$name] ) ) {
+ return self::$idCacheByName[$name];
+ }
+
$dbr = wfGetDB( DB_SLAVE );
$s = $dbr->selectRow( 'user', array( 'user_id' ), array( 'user_name' => $nt->getText() ), __METHOD__ );
if ( $s === false ) {
- return 0;
+ $result = null;
} else {
- return $s->user_id;
+ $result = $s->user_id;
+ }
+
+ self::$idCacheByName[$name] = $result;
+
+ if ( count( self::$idCacheByName ) > 1000 ) {
+ self::$idCacheByName = array();
}
+
+ return $result;
}
/**
@@ -599,21 +619,45 @@ class User {
/**
* Is the input a valid password for this user?
*
- * @param $password \string Desired password
- * @return \bool True or false
+ * @param $password String Desired password
+ * @return bool True or false
*/
function isValidPassword( $password ) {
+ //simple boolean wrapper for getPasswordValidity
+ return $this->getPasswordValidity( $password ) === true;
+ }
+
+ /**
+ * Given unvalidated password input, return error message on failure.
+ *
+ * @param $password String Desired password
+ * @return mixed: true on success, string of error message on failure
+ */
+ function getPasswordValidity( $password ) {
global $wgMinimalPasswordLength, $wgContLang;
- $result = null;
+ $result = false; //init $result to false for the internal checks
+
if( !wfRunHooks( 'isValidPassword', array( $password, &$result, $this ) ) )
return $result;
- if( $result === false )
- return false;
- // Password needs to be long enough, and can't be the same as the username
- return strlen( $password ) >= $wgMinimalPasswordLength
- && $wgContLang->lc( $password ) !== $wgContLang->lc( $this->mName );
+ if ( $result === false ) {
+ if( strlen( $password ) < $wgMinimalPasswordLength ) {
+ return 'passwordtooshort';
+ } elseif ( $wgContLang->lc( $password ) == $wgContLang->lc( $this->mName ) ) {
+ return 'password-name-match';
+ } else {
+ //it seems weird returning true here, but this is because of the
+ //initialization of $result to false above. If the hook is never run or it
+ //doesn't modify $result, then we will likely get down into this if with
+ //a valid password.
+ return true;
+ }
+ } elseif( $result === true ) {
+ return true;
+ } else {
+ return $result; //the isValidPassword hook set a string $result and returned true
+ }
}
/**
@@ -659,7 +703,7 @@ class User {
return false;
# Clean up name according to title rules
- $t = ($validate === 'valid') ?
+ $t = ( $validate === 'valid' ) ?
Title::newFromText( $name ) : Title::makeTitle( NS_USER, $name );
# Check for invalid titles
if( is_null( $t ) ) {
@@ -690,7 +734,7 @@ class User {
}
break;
default:
- throw new MWException( 'Invalid parameter value for $validate in '.__METHOD__ );
+ throw new MWException( 'Invalid parameter value for $validate in ' . __METHOD__ );
}
return $name;
}
@@ -744,18 +788,18 @@ class User {
$l = strlen( $pwchars ) - 1;
$pwlength = max( 7, $wgMinimalPasswordLength );
- $digit = mt_rand(0, $pwlength - 1);
+ $digit = mt_rand( 0, $pwlength - 1 );
$np = '';
for ( $i = 0; $i < $pwlength; $i++ ) {
- $np .= $i == $digit ? chr( mt_rand(48, 57) ) : $pwchars{ mt_rand(0, $l)};
+ $np .= $i == $digit ? chr( mt_rand( 48, 57 ) ) : $pwchars{ mt_rand( 0, $l ) };
}
return $np;
}
/**
- * Set cached properties to default.
+ * Set cached properties to default.
*
- * @note This no longer clears uncached lazy-initialised properties;
+ * @note This no longer clears uncached lazy-initialised properties;
* the constructor does that instead.
* @private
*/
@@ -770,7 +814,8 @@ class User {
$this->mPassword = $this->mNewpassword = '';
$this->mNewpassTime = null;
$this->mEmail = '';
- $this->mOptions = null; # Defer init
+ $this->mOptionOverrides = null;
+ $this->mOptionsLoaded = false;
if ( isset( $_COOKIE[$wgCookiePrefix.'LoggedOut'] ) ) {
$this->mTouched = wfTimestamp( TS_MW, $_COOKIE[$wgCookiePrefix.'LoggedOut'] );
@@ -804,7 +849,7 @@ class User {
* @return \bool True if the user is logged in, false otherwise.
*/
private function loadFromSession() {
- global $wgMemc, $wgCookiePrefix;
+ global $wgMemc, $wgCookiePrefix, $wgExternalAuthType, $wgAutocreatePolicy;
$result = null;
wfRunHooks( 'UserLoadFromSession', array( $this, &$result ) );
@@ -812,11 +857,19 @@ class User {
return $result;
}
+ if ( $wgExternalAuthType && $wgAutocreatePolicy == 'view' ) {
+ $extUser = ExternalUser::newFromCookie();
+ if ( $extUser ) {
+ # TODO: Automatically create the user here (or probably a bit
+ # lower down, in fact)
+ }
+ }
+
if ( isset( $_COOKIE["{$wgCookiePrefix}UserID"] ) ) {
$sId = intval( $_COOKIE["{$wgCookiePrefix}UserID"] );
if( isset( $_SESSION['wsUserID'] ) && $sId != $_SESSION['wsUserID'] ) {
$this->loadDefaults(); // Possible collision!
- wfDebugLog( 'loginSessions', "Session user ID ({$_SESSION['wsUserID']}) and
+ wfDebugLog( 'loginSessions', "Session user ID ({$_SESSION['wsUserID']}) and
cookie user ID ($sId) don't match!" );
return false;
}
@@ -850,6 +903,13 @@ class User {
return false;
}
+ global $wgBlockDisablesLogin;
+ if( $wgBlockDisablesLogin && $this->isBlocked() ) {
+ # User blocked and we've disabled blocked user logins
+ $this->loadDefaults();
+ return false;
+ }
+
if ( isset( $_SESSION['wsToken'] ) ) {
$passwordCorrect = $_SESSION['wsToken'] == $this->mToken;
$from = 'session';
@@ -934,7 +994,7 @@ class User {
$this->mEmailToken = $row->user_email_token;
$this->mEmailTokenExpires = wfTimestampOrNull( TS_MW, $row->user_email_token_expires );
$this->mRegistration = wfTimestampOrNull( TS_MW, $row->user_registration );
- $this->mEditCount = $row->user_editcount;
+ $this->mEditCount = $row->user_editcount;
}
/**
@@ -969,6 +1029,7 @@ class User {
$this->mSkin = null;
$this->mRights = null;
$this->mEffectiveGroups = null;
+ $this->mOptions = null;
if ( $reloadFrom ) {
$this->mDataLoaded = false;
@@ -987,7 +1048,7 @@ class User {
/**
* Site defaults will override the global/language defaults
*/
- global $wgDefaultUserOptions, $wgContLang;
+ global $wgDefaultUserOptions, $wgContLang, $wgDefaultSkin;
$defOpt = $wgDefaultUserOptions + $wgContLang->getDefaultUserOptionOverrides();
/**
@@ -996,10 +1057,11 @@ class User {
$variant = $wgContLang->getPreferredVariant( false );
$defOpt['variant'] = $variant;
$defOpt['language'] = $variant;
-
- foreach( $wgNamespacesToBeSearchedDefault as $nsnum => $val ) {
- $defOpt['searchNs'.$nsnum] = $val;
+ foreach( SearchEngine::searchableNamespaces() as $nsnum => $nsname ) {
+ $defOpt['searchNs'.$nsnum] = !empty( $wgNamespacesToBeSearchedDefault[$nsnum] );
}
+ $defOpt['skin'] = $wgDefaultSkin;
+
return $defOpt;
}
@@ -1014,7 +1076,7 @@ class User {
if( isset( $defOpts[$opt] ) ) {
return $defOpts[$opt];
} else {
- return '';
+ return null;
}
}
@@ -1044,7 +1106,7 @@ class User {
* done against master.
*/
function getBlockedStatus( $bFromSlave = true ) {
- global $wgEnableSorbs, $wgProxyWhitelist;
+ global $wgProxyWhitelist, $wgUser;
if ( -1 != $this->mBlockedby ) {
wfDebug( "User::getBlockedStatus: already loaded.\n" );
@@ -1060,13 +1122,27 @@ class User {
// due to -1 !== 0. Probably session-related... Nothing should be
// overwriting mBlockedby, surely?
$this->load();
-
+
$this->mBlockedby = 0;
$this->mHideName = 0;
$this->mAllowUsertalk = 0;
- $ip = wfGetIP();
- if ($this->isAllowed( 'ipblock-exempt' ) ) {
+ # Check if we are looking at an IP or a logged-in user
+ if ( $this->isIP( $this->getName() ) ) {
+ $ip = $this->getName();
+ } else {
+ # Check if we are looking at the current user
+ # If we don't, and the user is logged in, we don't know about
+ # his IP / autoblock status, so ignore autoblock of current user's IP
+ if ( $this->getID() != $wgUser->getID() ) {
+ $ip = '';
+ } else {
+ # Get IP of current user
+ $ip = wfGetIP();
+ }
+ }
+
+ if ( $this->isAllowed( 'ipblock-exempt' ) ) {
# Exempt from all types of IP-block
$ip = '';
}
@@ -1075,22 +1151,24 @@ class User {
$this->mBlock = new Block();
$this->mBlock->fromMaster( !$bFromSlave );
if ( $this->mBlock->load( $ip , $this->mId ) ) {
- wfDebug( __METHOD__.": Found block.\n" );
+ wfDebug( __METHOD__ . ": Found block.\n" );
$this->mBlockedby = $this->mBlock->mBy;
+ if( $this->mBlockedby == "0" )
+ $this->mBlockedby = $this->mBlock->mByName;
$this->mBlockreason = $this->mBlock->mReason;
$this->mHideName = $this->mBlock->mHideName;
$this->mAllowUsertalk = $this->mBlock->mAllowUsertalk;
- if ( $this->isLoggedIn() ) {
+ if ( $this->isLoggedIn() && $wgUser->getID() == $this->getID() ) {
$this->spreadBlock();
}
} else {
- // Bug 13611: don't remove mBlock here, to allow account creation blocks to
- // apply to users. Note that the existence of $this->mBlock is not used to
+ // Bug 13611: don't remove mBlock here, to allow account creation blocks to
+ // apply to users. Note that the existence of $this->mBlock is not used to
// check for edit blocks, $this->mBlockedby is instead.
}
# Proxy blocking
- if ( !$this->isAllowed('proxyunbannable') && !in_array( $ip, $wgProxyWhitelist ) ) {
+ if ( !$this->isAllowed( 'proxyunbannable' ) && !in_array( $ip, $wgProxyWhitelist ) ) {
# Local list
if ( wfIsLocallyBlockedProxy( $ip ) ) {
$this->mBlockedby = wfMsg( 'proxyblocker' );
@@ -1098,8 +1176,8 @@ class User {
}
# DNSBL
- if ( !$this->mBlockedby && $wgEnableSorbs && !$this->getID() ) {
- if ( $this->inSorbsBlacklist( $ip ) ) {
+ if ( !$this->mBlockedby && !$this->getID() ) {
+ if ( $this->isDnsBlacklisted( $ip ) ) {
$this->mBlockedby = wfMsg( 'sorbs' );
$this->mBlockreason = wfMsg( 'sorbsreason' );
}
@@ -1113,43 +1191,57 @@ class User {
}
/**
- * Whether the given IP is in the SORBS blacklist.
+ * Whether the given IP is in a DNS blacklist.
*
* @param $ip \string IP to check
+ * @param $checkWhitelist Boolean: whether to check the whitelist first
* @return \bool True if blacklisted.
*/
- function inSorbsBlacklist( $ip ) {
- global $wgEnableSorbs, $wgSorbsUrl;
+ function isDnsBlacklisted( $ip, $checkWhitelist = false ) {
+ global $wgEnableSorbs, $wgEnableDnsBlacklist,
+ $wgSorbsUrl, $wgDnsBlacklistUrls, $wgProxyWhitelist;
+
+ if ( !$wgEnableDnsBlacklist && !$wgEnableSorbs )
+ return false;
- return $wgEnableSorbs &&
- $this->inDnsBlacklist( $ip, $wgSorbsUrl );
+ if ( $checkWhitelist && in_array( $ip, $wgProxyWhitelist ) )
+ return false;
+
+ $urls = array_merge( $wgDnsBlacklistUrls, (array)$wgSorbsUrl );
+ return $this->inDnsBlacklist( $ip, $urls );
}
/**
* Whether the given IP is in a given DNS blacklist.
*
* @param $ip \string IP to check
- * @param $base \string URL of the DNS blacklist
+ * @param $bases \string or Array of Strings: URL of the DNS blacklist
* @return \bool True if blacklisted.
*/
- function inDnsBlacklist( $ip, $base ) {
+ function inDnsBlacklist( $ip, $bases ) {
wfProfileIn( __METHOD__ );
$found = false;
$host = '';
// FIXME: IPv6 ??? (http://bugs.php.net/bug.php?id=33170)
- if( IP::isIPv4($ip) ) {
- # Make hostname
- $host = "$ip.$base";
+ if( IP::isIPv4( $ip ) ) {
+ # Reverse IP, bug 21255
+ $ipReversed = implode( '.', array_reverse( explode( '.', $ip ) ) );
- # Send query
- $ipList = gethostbynamel( $host );
+ foreach( (array)$bases as $base ) {
+ # Make hostname
+ $host = "$ipReversed.$base";
- if( $ipList ) {
- wfDebug( "Hostname $host is {$ipList[0]}, it's a proxy says $base!\n" );
- $found = true;
- } else {
- wfDebug( "Requested $host, not found in $base.\n" );
+ # Send query
+ $ipList = gethostbynamel( $host );
+
+ if( $ipList ) {
+ wfDebug( "Hostname $host is {$ipList[0]}, it's a proxy says $base!\n" );
+ $found = true;
+ break;
+ } else {
+ wfDebug( "Requested $host, not found in $base.\n" );
+ }
}
}
@@ -1188,8 +1280,7 @@ class User {
* @param $action \string Action to enforce; 'edit' if unspecified
* @return \bool True if a rate limiter was tripped
*/
- function pingLimiter( $action='edit' ) {
-
+ function pingLimiter( $action = 'edit' ) {
# Call the 'PingLimiter' hook
$result = false;
if( !wfRunHooks( 'PingLimiter', array( &$this, $action, $result ) ) ) {
@@ -1245,7 +1336,7 @@ class User {
}
// Set the user limit key
if ( $userLimit !== false ) {
- wfDebug( __METHOD__.": effective user limit: $userLimit\n" );
+ wfDebug( __METHOD__ . ": effective user limit: $userLimit\n" );
$keys[ wfMemcKey( 'limiter', $action, 'user', $id ) ] = $userLimit;
}
@@ -1254,19 +1345,20 @@ class User {
list( $max, $period ) = $limit;
$summary = "(limit $max in {$period}s)";
$count = $wgMemc->get( $key );
+ // Already pinged?
if( $count ) {
if( $count > $max ) {
- wfDebug( __METHOD__.": tripped! $key at $count $summary\n" );
+ wfDebug( __METHOD__ . ": tripped! $key at $count $summary\n" );
if( $wgRateLimitLog ) {
@error_log( wfTimestamp( TS_MW ) . ' ' . wfWikiID() . ': ' . $this->getName() . " tripped $key at $count $summary\n", 3, $wgRateLimitLog );
}
$triggered = true;
} else {
- wfDebug( __METHOD__.": ok. $key at $count $summary\n" );
+ wfDebug( __METHOD__ . ": ok. $key at $count $summary\n" );
}
} else {
- wfDebug( __METHOD__.": adding record for $key $summary\n" );
- $wgMemc->add( $key, 1, intval( $period ) );
+ wfDebug( __METHOD__ . ": adding record for $key $summary\n" );
+ $wgMemc->add( $key, 0, intval( $period ) ); // first ping
}
$wgMemc->incr( $key );
}
@@ -1277,7 +1369,7 @@ class User {
/**
* Check if user is blocked
- *
+ *
* @param $bFromSlave \bool Whether to check the slave database instead of the master
* @return \bool True if blocked, false otherwise
*/
@@ -1289,7 +1381,7 @@ class User {
/**
* Check if user is blocked from editing a particular article
- *
+ *
* @param $title \string Title to check
* @param $bFromSlave \bool Whether to check the slave database instead of the master
* @return \bool True if blocked, false otherwise
@@ -1297,17 +1389,20 @@ class User {
function isBlockedFrom( $title, $bFromSlave = false ) {
global $wgBlockAllowsUTEdit;
wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__.": enter\n" );
+ wfDebug( __METHOD__ . ": enter\n" );
- wfDebug( __METHOD__.": asking isBlocked()\n" );
+ wfDebug( __METHOD__ . ": asking isBlocked()\n" );
$blocked = $this->isBlocked( $bFromSlave );
- $allowUsertalk = ($wgBlockAllowsUTEdit ? $this->mAllowUsertalk : false);
+ $allowUsertalk = ( $wgBlockAllowsUTEdit ? $this->mAllowUsertalk : false );
# If a user's name is suppressed, they cannot make edits anywhere
if ( !$this->mHideName && $allowUsertalk && $title->getText() === $this->getName() &&
$title->getNamespace() == NS_USER_TALK ) {
$blocked = false;
- wfDebug( __METHOD__.": self-talk page, ignoring any blocks\n" );
+ wfDebug( __METHOD__ . ": self-talk page, ignoring any blocks\n" );
}
+
+ wfRunHooks( 'UserIsBlockedFrom', array( $this, $title, &$blocked, &$allowUsertalk ) );
+
wfProfileOut( __METHOD__ );
return $blocked;
}
@@ -1329,21 +1424,21 @@ class User {
$this->getBlockedStatus();
return $this->mBlockreason;
}
-
+
/**
* If user is blocked, return the ID for the block
* @return \int Block ID
*/
function getBlockId() {
$this->getBlockedStatus();
- return ($this->mBlock ? $this->mBlock->mId : false);
+ return ( $this->mBlock ? $this->mBlock->mId : false );
}
-
+
/**
* Check if user is blocked on all wikis.
* Do not use for actual edit permission checks!
* This is intented for quick UI checks.
- *
+ *
* @param $ip \type{\string} IP address, uses current client if none given
* @return \type{\bool} True if blocked, false otherwise
*/
@@ -1362,10 +1457,10 @@ class User {
$this->mBlockedGlobally = (bool)$blocked;
return $this->mBlockedGlobally;
}
-
+
/**
* Check if user account is locked
- *
+ *
* @return \type{\bool} True if locked, false otherwise
*/
function isLocked() {
@@ -1377,10 +1472,10 @@ class User {
$this->mLocked = (bool)$authUser->isLocked();
return $this->mLocked;
}
-
+
/**
* Check if user account is hidden
- *
+ *
* @return \type{\bool} True if hidden, false otherwise
*/
function isHidden() {
@@ -1504,17 +1599,16 @@ class User {
*/
function getNewMessageLinks() {
$talks = array();
- if (!wfRunHooks('UserRetrieveNewTalks', array(&$this, &$talks)))
+ if( !wfRunHooks( 'UserRetrieveNewTalks', array( &$this, &$talks ) ) )
return $talks;
- if (!$this->getNewtalk())
+ if( !$this->getNewtalk() )
return array();
$up = $this->getUserPage();
$utp = $up->getTalkPage();
- return array(array("wiki" => wfWikiID(), "link" => $utp->getLocalURL()));
+ return array( array( 'wiki' => wfWikiID(), 'link' => $utp->getLocalURL() ) );
}
-
/**
* Internal uncached check for new messages
*
@@ -1550,10 +1644,10 @@ class User {
__METHOD__,
'IGNORE' );
if ( $dbw->affectedRows() ) {
- wfDebug( __METHOD__.": set on ($field, $id)\n" );
+ wfDebug( __METHOD__ . ": set on ($field, $id)\n" );
return true;
} else {
- wfDebug( __METHOD__." already set ($field, $id)\n" );
+ wfDebug( __METHOD__ . " already set ($field, $id)\n" );
return false;
}
}
@@ -1571,10 +1665,10 @@ class User {
array( $field => $id ),
__METHOD__ );
if ( $dbw->affectedRows() ) {
- wfDebug( __METHOD__.": killed on ($field, $id)\n" );
+ wfDebug( __METHOD__ . ": killed on ($field, $id)\n" );
return true;
} else {
- wfDebug( __METHOD__.": already gone ($field, $id)\n" );
+ wfDebug( __METHOD__ . ": already gone ($field, $id)\n" );
return false;
}
}
@@ -1648,6 +1742,9 @@ class User {
* for reload on the next hit.
*/
function invalidateCache() {
+ if( wfReadOnly() ) {
+ return;
+ }
$this->load();
if( $this->mId ) {
$this->mTouched = self::newTouchedTimestamp();
@@ -1668,7 +1765,7 @@ class User {
*/
function validateCache( $timestamp ) {
$this->load();
- return ($timestamp >= $this->mTouched);
+ return ( $timestamp >= $this->mTouched );
}
/**
@@ -1702,10 +1799,11 @@ class User {
}
if( !$this->isValidPassword( $str ) ) {
- global $wgMinimalPasswordLength;
- throw new PasswordError( wfMsgExt( 'passwordtooshort', array( 'parsemag' ),
+ global $wgMinimalPasswordLength;
+ $valid = $this->getPasswordValidity( $str );
+ throw new PasswordError( wfMsgExt( $valid, array( 'parsemag' ),
$wgMinimalPasswordLength ) );
- }
+ }
}
if( !$wgAuth->setPassword( $this, $str ) ) {
@@ -1735,7 +1833,7 @@ class User {
$this->mNewpassword = '';
$this->mNewpassTime = null;
}
-
+
/**
* Get the user's current token.
* @return \string Token
@@ -1744,7 +1842,7 @@ class User {
$this->load();
return $this->mToken;
}
-
+
/**
* Set the random token (used for persistent authentication)
* Called from loadDefaults() among other places.
@@ -1768,7 +1866,7 @@ class User {
$this->mToken = $token;
}
}
-
+
/**
* Set the cookie password
*
@@ -1795,7 +1893,7 @@ class User {
}
/**
- * Has password reminder email been sent within the last
+ * Has password reminder email been sent within the last
* $wgPasswordReminderResendTime hours?
* @return \bool True or false
*/
@@ -1866,8 +1964,8 @@ class User {
* @see getBoolOption()
* @see getIntOption()
*/
- function getOption( $oname, $defaultOverride = '' ) {
- $this->load();
+ function getOption( $oname, $defaultOverride = null ) {
+ $this->loadOptions();
if ( is_null( $this->mOptions ) ) {
if($defaultOverride != '') {
@@ -1877,12 +1975,22 @@ class User {
}
if ( array_key_exists( $oname, $this->mOptions ) ) {
- return trim( $this->mOptions[$oname] );
+ return $this->mOptions[$oname];
} else {
return $defaultOverride;
}
}
-
+
+ /**
+ * Get all user's options
+ *
+ * @return array
+ */
+ public function getOptions() {
+ $this->loadOptions();
+ return $this->mOptions;
+ }
+
/**
* Get the user's current setting for a given option, as a boolean value.
*
@@ -1894,7 +2002,7 @@ class User {
return (bool)$this->getOption( $oname );
}
-
+
/**
* Get the user's current setting for a given option, as a boolean value.
*
@@ -1919,32 +2027,26 @@ class User {
*/
function setOption( $oname, $val ) {
$this->load();
- if ( is_null( $this->mOptions ) ) {
- $this->mOptions = User::getDefaultOptions();
- }
+ $this->loadOptions();
+
if ( $oname == 'skin' ) {
# Clear cached skin, so the new one displays immediately in Special:Preferences
unset( $this->mSkin );
}
- // Filter out any newlines that may have passed through input validation.
- // Newlines are used to separate items in the options blob.
- if( $val ) {
- $val = str_replace( "\r\n", "\n", $val );
- $val = str_replace( "\r", "\n", $val );
- $val = str_replace( "\n", " ", $val );
- }
+
// Explicitly NULL values should refer to defaults
global $wgDefaultUserOptions;
- if( is_null($val) && isset($wgDefaultUserOptions[$oname]) ) {
+ if( is_null( $val ) && isset( $wgDefaultUserOptions[$oname] ) ) {
$val = $wgDefaultUserOptions[$oname];
}
+
$this->mOptions[$oname] = $val;
}
-
+
/**
* Reset all options to the site defaults
- */
- function restoreOptions() {
+ */
+ function resetOptions() {
$this->mOptions = User::getDefaultOptions();
}
@@ -1999,6 +2101,7 @@ class User {
*/
function getEffectiveGroups( $recache = false ) {
if ( $recache || is_null( $this->mEffectiveGroups ) ) {
+ wfProfileIn( __METHOD__ );
$this->mEffectiveGroups = $this->getGroups();
$this->mEffectiveGroups[] = '*';
if( $this->getId() ) {
@@ -2012,6 +2115,7 @@ class User {
# Hook for additional groups
wfRunHooks( 'UserEffectiveGroups', array( &$this, &$this->mEffectiveGroups ) );
}
+ wfProfileOut( __METHOD__ );
}
return $this->mEffectiveGroups;
}
@@ -2021,10 +2125,10 @@ class User {
* @return \int User'e edit count
*/
function getEditCount() {
- if ($this->getId()) {
+ if( $this->getId() ) {
if ( !isset( $this->mEditCount ) ) {
/* Populate the count, if it has not been populated yet */
- $this->mEditCount = User::edits($this->mId);
+ $this->mEditCount = User::edits( $this->mId );
}
return $this->mEditCount;
} else {
@@ -2079,7 +2183,6 @@ class User {
$this->invalidateCache();
}
-
/**
* Get whether the user is logged in
* @return \bool True or false
@@ -2120,51 +2223,61 @@ class User {
if( !$wgUseRCPatrol && !$wgUseNPPatrol )
return false;
}
- # Use strict parameter to avoid matching numeric 0 accidentally inserted
+ # Use strict parameter to avoid matching numeric 0 accidentally inserted
# by misconfiguration: 0 == 'foo'
return in_array( $action, $this->getRights(), true );
}
/**
- * Check whether to enable recent changes patrol features for this user
- * @return \bool True or false
- */
+ * Check whether to enable recent changes patrol features for this user
+ * @return \bool True or false
+ */
public function useRCPatrol() {
global $wgUseRCPatrol;
- return( $wgUseRCPatrol && ($this->isAllowed('patrol') || $this->isAllowed('patrolmarks')) );
+ return( $wgUseRCPatrol && ( $this->isAllowed( 'patrol' ) || $this->isAllowed( 'patrolmarks' ) ) );
}
/**
- * Check whether to enable new pages patrol features for this user
- * @return \bool True or false
- */
+ * Check whether to enable new pages patrol features for this user
+ * @return \bool True or false
+ */
public function useNPPatrol() {
global $wgUseRCPatrol, $wgUseNPPatrol;
- return( ($wgUseRCPatrol || $wgUseNPPatrol) && ($this->isAllowed('patrol') || $this->isAllowed('patrolmarks')) );
+ return( ( $wgUseRCPatrol || $wgUseNPPatrol ) && ( $this->isAllowed( 'patrol' ) || $this->isAllowed( 'patrolmarks' ) ) );
}
/**
- * Get the current skin, loading it if required
- * @return \type{Skin} Current skin
+ * Get the current skin, loading it if required, and setting a title
+ * @param $t Title: the title to use in the skin
+ * @return Skin The current skin
* @todo FIXME : need to check the old failback system [AV]
*/
- function &getSkin() {
- global $wgRequest, $wgAllowUserSkin, $wgDefaultSkin;
- if ( ! isset( $this->mSkin ) ) {
+ function &getSkin( $t = null ) {
+ if ( !isset( $this->mSkin ) ) {
wfProfileIn( __METHOD__ );
- if( $wgAllowUserSkin ) {
+ global $wgHiddenPrefs;
+ if( !in_array( 'skin', $wgHiddenPrefs ) ) {
# get the user skin
+ global $wgRequest;
$userSkin = $this->getOption( 'skin' );
- $userSkin = $wgRequest->getVal('useskin', $userSkin);
+ $userSkin = $wgRequest->getVal( 'useskin', $userSkin );
} else {
# if we're not allowing users to override, then use the default
+ global $wgDefaultSkin;
$userSkin = $wgDefaultSkin;
}
-
+
$this->mSkin =& Skin::newFromKey( $userSkin );
wfProfileOut( __METHOD__ );
}
+ if( $t || !$this->mSkin->getTitle() ) {
+ if ( !$t ) {
+ global $wgOut;
+ $t = $wgOut->getTitle();
+ }
+ $this->mSkin->setTitle( $t );
+ }
return $this->mSkin;
}
@@ -2212,9 +2325,9 @@ class User {
return;
}
- if ($title->getNamespace() == NS_USER_TALK &&
+ if( $title->getNamespace() == NS_USER_TALK &&
$title->getText() == $this->getName() ) {
- if (!wfRunHooks('UserClearNewTalkNotification', array(&$this)))
+ if( !wfRunHooks( 'UserClearNewTalkNotification', array( &$this ) ) )
return;
$this->setNewtalk( false );
}
@@ -2232,8 +2345,8 @@ class User {
// The query to find out if it is watched is cached both in memcached and per-invocation,
// and when it does have to be executed, it can be on a slave
// If this is the user's newtalk page, we always update the timestamp
- if ($title->getNamespace() == NS_USER_TALK &&
- $title->getText() == $wgUser->getName())
+ if( $title->getNamespace() == NS_USER_TALK &&
+ $title->getText() == $wgUser->getName() )
{
$watched = true;
} elseif ( $this->getId() == $wgUser->getId() ) {
@@ -2248,7 +2361,7 @@ class User {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'watchlist',
array( /* SET */
- 'wl_notificationtimestamp' => NULL
+ 'wl_notificationtimestamp' => null
), array( /* WHERE */
'wl_title' => $title->getDBkey(),
'wl_namespace' => $title->getNamespace(),
@@ -2275,7 +2388,7 @@ class User {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'watchlist',
array( /* SET */
- 'wl_notificationtimestamp' => NULL
+ 'wl_notificationtimestamp' => null
), array( /* WHERE */
'wl_user' => $currentUser
), __METHOD__
@@ -2286,52 +2399,41 @@ class User {
}
/**
- * Encode this user's options as a string
- * @return \string Encoded options
- * @private
- */
- function encodeOptions() {
- $this->load();
- if ( is_null( $this->mOptions ) ) {
- $this->mOptions = User::getDefaultOptions();
- }
- $a = array();
- foreach ( $this->mOptions as $oname => $oval ) {
- array_push( $a, $oname.'='.$oval );
- }
- $s = implode( "\n", $a );
- return $s;
- }
-
- /**
* Set this user's options from an encoded string
* @param $str \string Encoded options to import
* @private
*/
function decodeOptions( $str ) {
+ if( !$str )
+ return;
+
+ $this->mOptionsLoaded = true;
+ $this->mOptionOverrides = array();
+
$this->mOptions = array();
$a = explode( "\n", $str );
foreach ( $a as $s ) {
$m = array();
if ( preg_match( "/^(.[^=]*)=(.*)$/", $s, $m ) ) {
$this->mOptions[$m[1]] = $m[2];
+ $this->mOptionOverrides[$m[1]] = $m[2];
}
}
}
-
+
/**
- * Set a cookie on the user's client. Wrapper for
+ * Set a cookie on the user's client. Wrapper for
* WebResponse::setCookie
* @param $name \string Name of the cookie to set
* @param $value \string Value to set
- * @param $exp \int Expiration time, as a UNIX time value;
+ * @param $exp \int Expiration time, as a UNIX time value;
* if 0 or not specified, use the default $wgCookieExpiration
*/
- protected function setCookie( $name, $value, $exp=0 ) {
+ protected function setCookie( $name, $value, $exp = 0 ) {
global $wgRequest;
$wgRequest->response()->setcookie( $name, $value, $exp );
}
-
+
/**
* Clear a cookie on the user's client
* @param $name \string Name of the cookie to clear
@@ -2346,7 +2448,7 @@ class User {
function setCookies() {
$this->load();
if ( 0 == $this->mId ) return;
- $session = array(
+ $session = array(
'wsUserID' => $this->mId,
'wsToken' => $this->mToken,
'wsUserName' => $this->getName()
@@ -2360,9 +2462,9 @@ class User {
} else {
$cookies['Token'] = false;
}
-
+
wfRunHooks( 'UserSetCookies', array( $this, &$session, &$cookies ) );
- #check for null, since the hook could cause a null value
+ #check for null, since the hook could cause a null value
if ( !is_null( $session ) && isset( $_SESSION ) ){
$_SESSION = $session + $_SESSION;
}
@@ -2379,8 +2481,7 @@ class User {
* Log this user out.
*/
function logout() {
- global $wgUser;
- if( wfRunHooks( 'UserLogout', array(&$this) ) ) {
+ if( wfRunHooks( 'UserLogout', array( &$this ) ) ) {
$this->doLogout();
}
}
@@ -2423,8 +2524,8 @@ class User {
'user_real_name' => $this->mRealName,
'user_email' => $this->mEmail,
'user_email_authenticated' => $dbw->timestampOrNull( $this->mEmailAuthenticated ),
- 'user_options' => $this->encodeOptions(),
- 'user_touched' => $dbw->timestamp($this->mTouched),
+ 'user_options' => '',
+ 'user_touched' => $dbw->timestamp( $this->mTouched ),
'user_token' => $this->mToken,
'user_email_token' => $this->mEmailToken,
'user_email_token_expires' => $dbw->timestampOrNull( $this->mEmailTokenExpires ),
@@ -2432,6 +2533,9 @@ class User {
'user_id' => $this->mId
), __METHOD__
);
+
+ $this->saveOptions();
+
wfRunHooks( 'UserSaveSettings', array( $this ) );
$this->clearSharedCache();
$this->getUserPage()->invalidateCache();
@@ -2472,7 +2576,7 @@ class User {
$user = new User;
$user->load();
if ( isset( $params['options'] ) ) {
- $user->mOptions = $params['options'] + $user->mOptions;
+ $user->mOptions = $params['options'] + (array)$user->mOptions;
unset( $params['options'] );
}
$dbw = wfGetDB( DB_MASTER );
@@ -2486,7 +2590,7 @@ class User {
'user_email' => $user->mEmail,
'user_email_authenticated' => $dbw->timestampOrNull( $user->mEmailAuthenticated ),
'user_real_name' => $user->mRealName,
- 'user_options' => $user->encodeOptions(),
+ 'user_options' => '',
'user_token' => $user->mToken,
'user_registration' => $dbw->timestamp( $user->mRegistration ),
'user_editcount' => 0,
@@ -2520,7 +2624,7 @@ class User {
'user_email' => $this->mEmail,
'user_email_authenticated' => $dbw->timestampOrNull( $this->mEmailAuthenticated ),
'user_real_name' => $this->mRealName,
- 'user_options' => $this->encodeOptions(),
+ 'user_options' => '',
'user_token' => $this->mToken,
'user_registration' => $dbw->timestamp( $this->mRegistration ),
'user_editcount' => 0,
@@ -2530,6 +2634,8 @@ class User {
// Clear instance cache other than user table data, which is already accurate
$this->clearInstanceCache();
+
+ $this->saveOptions();
}
/**
@@ -2537,7 +2643,7 @@ class User {
* they've successfully logged in from.
*/
function spreadBlock() {
- wfDebug( __METHOD__."()\n" );
+ wfDebug( __METHOD__ . "()\n" );
$this->load();
if ( $this->mId == 0 ) {
return;
@@ -2548,15 +2654,14 @@ class User {
return;
}
- $userblock->doAutoblock( wfGetIp() );
-
+ $userblock->doAutoblock( wfGetIP() );
}
/**
* Generate a string which will be different for any combination of
* user options which would produce different parser output.
* This will be used as part of the hash key for the parser cache,
- * so users will the same options can share the same cached data
+ * so users with the same options can share the same cached data
* safely.
*
* Extensions which require it should install 'PageRenderingHash' hook,
@@ -2579,7 +2684,7 @@ class User {
if ( $wgUseDynamicDates ) {
$confstr .= '!' . $this->getDatePreference();
}
- $confstr .= '!' . ($this->getOption( 'numberheadings' ) ? '1' : '');
+ $confstr .= '!' . ( $this->getOption( 'numberheadings' ) ? '1' : '' );
$confstr .= '!' . $wgLang->getCode();
$confstr .= '!' . $this->getOption( 'thumbsize' );
// add in language specific options, if any
@@ -2674,32 +2779,6 @@ class User {
function isNewbie() {
return !$this->isAllowed( 'autoconfirmed' );
}
-
- /**
- * Is the user active? We check to see if they've made at least
- * X number of edits in the last Y days.
- *
- * @return \bool True if the user is active, false if not.
- */
- public function isActiveEditor() {
- global $wgActiveUserEditCount, $wgActiveUserDays;
- $dbr = wfGetDB( DB_SLAVE );
-
- // Stolen without shame from RC
- $cutoff_unixtime = time() - ( $wgActiveUserDays * 86400 );
- $cutoff_unixtime = $cutoff_unixtime - ( $cutoff_unixtime % 86400 );
- $oldTime = $dbr->addQuotes( $dbr->timestamp( $cutoff_unixtime ) );
-
- $res = $dbr->select( 'revision', '1',
- array( 'rev_user_text' => $this->getName(), "rev_timestamp > $oldTime"),
- __METHOD__,
- array('LIMIT' => $wgActiveUserEditCount ) );
-
- $count = $dbr->numRows($res);
- $dbr->freeResult($res);
-
- return $count == $wgActiveUserEditCount;
- }
/**
* Check to see if the given clear-text password is one of the accepted passwords
@@ -2838,14 +2917,16 @@ class User {
$url = $this->confirmationTokenUrl( $token );
$invalidateURL = $this->invalidationTokenUrl( $token );
$this->saveSettings();
-
+
return $this->sendMail( wfMsg( 'confirmemail_subject' ),
wfMsg( 'confirmemail_body',
wfGetIP(),
$this->getName(),
$url,
$wgLang->timeanddate( $expiration, false ),
- $invalidateURL ) );
+ $invalidateURL,
+ $wgLang->date( $expiration, false ),
+ $wgLang->time( $expiration, false ) ) );
}
/**
@@ -2901,6 +2982,7 @@ class User {
function confirmationTokenUrl( $token ) {
return $this->getTokenUrl( 'ConfirmEmail', $token );
}
+
/**
* Return a URL the user can use to invalidate their email address.
* @param $token \string Accepts the email confirmation token
@@ -2910,7 +2992,7 @@ class User {
function invalidationTokenUrl( $token ) {
return $this->getTokenUrl( 'Invalidateemail', $token );
}
-
+
/**
* Internal function to format the e-mail validation/invalidation URLs.
* This uses $wgArticlePath directly as a quickie hack to use the
@@ -2941,6 +3023,7 @@ class User {
*/
function confirmEmail() {
$this->setEmailAuthenticationTimestamp( wfTimestampNow() );
+ wfRunHooks( 'ConfirmEmailComplete', array( $this ) );
return true;
}
@@ -2955,6 +3038,7 @@ class User {
$this->mEmailToken = null;
$this->mEmailTokenExpires = null;
$this->setEmailAuthenticationTimestamp( null );
+ wfRunHooks( 'InvalidateEmailComplete', array( $this ) );
return true;
}
@@ -2975,7 +3059,7 @@ class User {
*/
function canSendEmail() {
global $wgEnableEmail, $wgEnableUserEmail;
- if( !$wgEnableEmail || !$wgEnableUserEmail ) {
+ if( !$wgEnableEmail || !$wgEnableUserEmail || !$this->isAllowed( 'sendemail' ) ) {
return false;
}
$canSend = $this->isEmailConfirmed();
@@ -3042,7 +3126,7 @@ class User {
? $this->mRegistration
: false;
}
-
+
/**
* Get the timestamp of the first edit
*
@@ -3059,7 +3143,7 @@ class User {
);
if( !$time ) return false; // no edits
return wfTimestamp( TS_MW, $time );
- }
+ }
/**
* Get the permissions associated with a given list of groups
@@ -3068,8 +3152,9 @@ class User {
* @return \type{\arrayof{\string}} List of permission key names for given groups combined
*/
static function getGroupPermissions( $groups ) {
- global $wgGroupPermissions;
+ global $wgGroupPermissions, $wgRevokePermissions;
$rights = array();
+ // grant every granted permission first
foreach( $groups as $group ) {
if( isset( $wgGroupPermissions[$group] ) ) {
$rights = array_merge( $rights,
@@ -3077,12 +3162,19 @@ class User {
array_keys( array_filter( $wgGroupPermissions[$group] ) ) );
}
}
- return array_unique($rights);
+ // now revoke the revoked permissions
+ foreach( $groups as $group ) {
+ if( isset( $wgRevokePermissions[$group] ) ) {
+ $rights = array_diff( $rights,
+ array_keys( array_filter( $wgRevokePermissions[$group] ) ) );
+ }
+ }
+ return array_unique( $rights );
}
-
+
/**
* Get all the groups who have a given permission
- *
+ *
* @param $role \string Role to check
* @return \type{\arrayof{\string}} List of internal group names with the given permission
*/
@@ -3136,9 +3228,9 @@ class User {
* @return \type{\arrayof{\string}} Array of internal group names
*/
static function getAllGroups() {
- global $wgGroupPermissions;
+ global $wgGroupPermissions, $wgRevokePermissions;
return array_diff(
- array_keys( $wgGroupPermissions ),
+ array_merge( array_keys( $wgGroupPermissions ), array_keys( $wgRevokePermissions ) ),
self::getImplicitGroups()
);
}
@@ -3190,7 +3282,7 @@ class User {
}
/**
- * Create a link to the group in HTML, if available;
+ * Create a link to the group in HTML, if available;
* else return the group name.
*
* @param $group \string Internal name of the group
@@ -3205,14 +3297,14 @@ class User {
if( $title ) {
global $wgUser;
$sk = $wgUser->getSkin();
- return $sk->makeLinkObj( $title, htmlspecialchars( $text ) );
+ return $sk->link( $title, htmlspecialchars( $text ) );
} else {
return $text;
}
}
/**
- * Create a link to the group in Wikitext, if available;
+ * Create a link to the group in Wikitext, if available;
* else return the group name.
*
* @param $group \string Internal name of the group
@@ -3233,6 +3325,115 @@ class User {
}
/**
+ * Returns an array of the groups that a particular group can add/remove.
+ *
+ * @param $group String: the group to check for whether it can add/remove
+ * @return Array array( 'add' => array( addablegroups ),
+ * 'remove' => array( removablegroups ),
+ * 'add-self' => array( addablegroups to self),
+ * 'remove-self' => array( removable groups from self) )
+ */
+ static function changeableByGroup( $group ) {
+ global $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
+
+ $groups = array( 'add' => array(), 'remove' => array(), 'add-self' => array(), 'remove-self' => array() );
+ if( empty( $wgAddGroups[$group] ) ) {
+ // Don't add anything to $groups
+ } elseif( $wgAddGroups[$group] === true ) {
+ // You get everything
+ $groups['add'] = self::getAllGroups();
+ } elseif( is_array( $wgAddGroups[$group] ) ) {
+ $groups['add'] = $wgAddGroups[$group];
+ }
+
+ // Same thing for remove
+ if( empty( $wgRemoveGroups[$group] ) ) {
+ } elseif( $wgRemoveGroups[$group] === true ) {
+ $groups['remove'] = self::getAllGroups();
+ } elseif( is_array( $wgRemoveGroups[$group] ) ) {
+ $groups['remove'] = $wgRemoveGroups[$group];
+ }
+
+ // Re-map numeric keys of AddToSelf/RemoveFromSelf to the 'user' key for backwards compatibility
+ if( empty( $wgGroupsAddToSelf['user']) || $wgGroupsAddToSelf['user'] !== true ) {
+ foreach( $wgGroupsAddToSelf as $key => $value ) {
+ if( is_int( $key ) ) {
+ $wgGroupsAddToSelf['user'][] = $value;
+ }
+ }
+ }
+
+ if( empty( $wgGroupsRemoveFromSelf['user']) || $wgGroupsRemoveFromSelf['user'] !== true ) {
+ foreach( $wgGroupsRemoveFromSelf as $key => $value ) {
+ if( is_int( $key ) ) {
+ $wgGroupsRemoveFromSelf['user'][] = $value;
+ }
+ }
+ }
+
+ // Now figure out what groups the user can add to him/herself
+ if( empty( $wgGroupsAddToSelf[$group] ) ) {
+ } elseif( $wgGroupsAddToSelf[$group] === true ) {
+ // No idea WHY this would be used, but it's there
+ $groups['add-self'] = User::getAllGroups();
+ } elseif( is_array( $wgGroupsAddToSelf[$group] ) ) {
+ $groups['add-self'] = $wgGroupsAddToSelf[$group];
+ }
+
+ if( empty( $wgGroupsRemoveFromSelf[$group] ) ) {
+ } elseif( $wgGroupsRemoveFromSelf[$group] === true ) {
+ $groups['remove-self'] = User::getAllGroups();
+ } elseif( is_array( $wgGroupsRemoveFromSelf[$group] ) ) {
+ $groups['remove-self'] = $wgGroupsRemoveFromSelf[$group];
+ }
+
+ return $groups;
+ }
+
+ /**
+ * Returns an array of groups that this user can add and remove
+ * @return Array array( 'add' => array( addablegroups ),
+ * 'remove' => array( removablegroups ),
+ * 'add-self' => array( addablegroups to self),
+ * 'remove-self' => array( removable groups from self) )
+ */
+ function changeableGroups() {
+ if( $this->isAllowed( 'userrights' ) ) {
+ // This group gives the right to modify everything (reverse-
+ // compatibility with old "userrights lets you change
+ // everything")
+ // Using array_merge to make the groups reindexed
+ $all = array_merge( User::getAllGroups() );
+ return array(
+ 'add' => $all,
+ 'remove' => $all,
+ 'add-self' => array(),
+ 'remove-self' => array()
+ );
+ }
+
+ // Okay, it's not so simple, we will have to go through the arrays
+ $groups = array(
+ 'add' => array(),
+ 'remove' => array(),
+ 'add-self' => array(),
+ 'remove-self' => array()
+ );
+ $addergroups = $this->getEffectiveGroups();
+
+ foreach( $addergroups as $addergroup ) {
+ $groups = array_merge_recursive(
+ $groups, $this->changeableByGroup( $addergroup )
+ );
+ $groups['add'] = array_unique( $groups['add'] );
+ $groups['remove'] = array_unique( $groups['remove'] );
+ $groups['add-self'] = array_unique( $groups['add-self'] );
+ $groups['remove-self'] = array_unique( $groups['remove-self'] );
+ }
+ return $groups;
+ }
+
+ /**
* Increment the user's edit-count field.
* Will have no effect for anonymous users.
*/
@@ -3275,7 +3476,7 @@ class User {
// edit count in user cache too
$this->invalidateCache();
}
-
+
/**
* Get the description of a given right
*
@@ -3312,7 +3513,7 @@ class User {
* Make a new-style password hash
*
* @param $password \string Plain-text password
- * @param $salt \string Optional salt, may be random or the user ID.
+ * @param $salt \string Optional salt, may be random or the user ID.
* If unspecified or false, will generate one automatically
* @return \string Password hash
*/
@@ -3323,7 +3524,7 @@ class User {
if( !wfRunHooks( 'UserCryptPassword', array( &$password, &$salt, &$wgPasswordSalt, &$hash ) ) ) {
return $hash;
}
-
+
if( $wgPasswordSalt ) {
if ( $salt === false ) {
$salt = substr( wfGenerateToken(), 0, 8 );
@@ -3346,12 +3547,12 @@ class User {
static function comparePasswords( $hash, $password, $userId = false ) {
$m = false;
$type = substr( $hash, 0, 3 );
-
+
$result = false;
if( !wfRunHooks( 'UserComparePasswords', array( &$hash, &$password, &$userId, &$result ) ) ) {
return $result;
}
-
+
if ( $type == ':A:' ) {
# Unsalted
return md5( $password ) === substr( $hash, 3 );
@@ -3364,26 +3565,33 @@ class User {
return self::oldCrypt( $password, $userId ) === $hash;
}
}
-
+
/**
* Add a newuser log entry for this user
* @param $byEmail Boolean: account made by email?
*/
public function addNewUserLogEntry( $byEmail = false ) {
- global $wgUser, $wgContLang, $wgNewUserLog;
- if( empty($wgNewUserLog) ) {
+ global $wgUser, $wgNewUserLog;
+ if( empty( $wgNewUserLog ) ) {
return true; // disabled
}
- $talk = $wgContLang->getFormattedNsText( NS_TALK );
+
if( $this->getName() == $wgUser->getName() ) {
$action = 'create';
$message = '';
} else {
$action = 'create2';
- $message = $byEmail ? wfMsgForContent( 'newuserlog-byemail' ) : '';
+ $message = $byEmail
+ ? wfMsgForContent( 'newuserlog-byemail' )
+ : '';
}
$log = new LogPage( 'newusers' );
- $log->addEntry( $action, $this->getUserPage(), $message, array( $this->getId() ) );
+ $log->addEntry(
+ $action,
+ $this->getUserPage(),
+ $message,
+ array( $this->getId() )
+ );
return true;
}
@@ -3393,7 +3601,7 @@ class User {
*/
public function addNewUserLogEntryAutoCreate() {
global $wgNewUserLog;
- if( empty($wgNewUserLog) ) {
+ if( empty( $wgNewUserLog ) ) {
return true; // disabled
}
$log = new LogPage( 'newusers', false );
@@ -3401,4 +3609,131 @@ class User {
return true;
}
+ protected function loadOptions() {
+ $this->load();
+ if ( $this->mOptionsLoaded || !$this->getId() )
+ return;
+
+ $this->mOptions = self::getDefaultOptions();
+
+ // Maybe load from the object
+ if ( !is_null( $this->mOptionOverrides ) ) {
+ wfDebug( "Loading options for user " . $this->getId() . " from override cache.\n" );
+ foreach( $this->mOptionOverrides as $key => $value ) {
+ $this->mOptions[$key] = $value;
+ }
+ } else {
+ wfDebug( "Loading options for user " . $this->getId() . " from database.\n" );
+ // Load from database
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $res = $dbr->select(
+ 'user_properties',
+ '*',
+ array( 'up_user' => $this->getId() ),
+ __METHOD__
+ );
+
+ while( $row = $dbr->fetchObject( $res ) ) {
+ $this->mOptionOverrides[$row->up_property] = $row->up_value;
+ $this->mOptions[$row->up_property] = $row->up_value;
+ }
+ }
+
+ $this->mOptionsLoaded = true;
+
+ wfRunHooks( 'UserLoadOptions', array( $this, &$this->mOptions ) );
+ }
+
+ protected function saveOptions() {
+ global $wgAllowPrefChange;
+
+ $extuser = ExternalUser::newFromUser( $this );
+
+ $this->loadOptions();
+ $dbw = wfGetDB( DB_MASTER );
+
+ $insert_rows = array();
+
+ $saveOptions = $this->mOptions;
+
+ // Allow hooks to abort, for instance to save to a global profile.
+ // Reset options to default state before saving.
+ if( !wfRunHooks( 'UserSaveOptions', array( $this, &$saveOptions ) ) )
+ return;
+
+ foreach( $saveOptions as $key => $value ) {
+ # Don't bother storing default values
+ if ( ( is_null( self::getDefaultOption( $key ) ) &&
+ !( $value === false || is_null($value) ) ) ||
+ $value != self::getDefaultOption( $key ) ) {
+ $insert_rows[] = array(
+ 'up_user' => $this->getId(),
+ 'up_property' => $key,
+ 'up_value' => $value,
+ );
+ }
+ if ( $extuser && isset( $wgAllowPrefChange[$key] ) ) {
+ switch ( $wgAllowPrefChange[$key] ) {
+ case 'local':
+ case 'message':
+ break;
+ case 'semiglobal':
+ case 'global':
+ $extuser->setPref( $key, $value );
+ }
+ }
+ }
+
+ $dbw->begin();
+ $dbw->delete( 'user_properties', array( 'up_user' => $this->getId() ), __METHOD__ );
+ $dbw->insert( 'user_properties', $insert_rows, __METHOD__ );
+ $dbw->commit();
+ }
+
+ /**
+ * Provide an array of HTML5 attributes to put on an input element
+ * intended for the user to enter a new password. This may include
+ * required, title, and/or pattern, depending on $wgMinimalPasswordLength.
+ *
+ * Do *not* use this when asking the user to enter his current password!
+ * Regardless of configuration, users may have invalid passwords for whatever
+ * reason (e.g., they were set before requirements were tightened up).
+ * Only use it when asking for a new password, like on account creation or
+ * ResetPass.
+ *
+ * Obviously, you still need to do server-side checking.
+ *
+ * @return array Array of HTML attributes suitable for feeding to
+ * Html::element(), directly or indirectly. (Don't feed to Xml::*()!
+ * That will potentially output invalid XHTML 1.0 Transitional, and will
+ * get confused by the boolean attribute syntax used.)
+ */
+ public static function passwordChangeInputAttribs() {
+ global $wgMinimalPasswordLength;
+
+ if ( $wgMinimalPasswordLength == 0 ) {
+ return array();
+ }
+
+ # Note that the pattern requirement will always be satisfied if the
+ # input is empty, so we need required in all cases.
+ $ret = array( 'required' );
+
+ # We can't actually do this right now, because Opera 9.6 will print out
+ # the entered password visibly in its error message! When other
+ # browsers add support for this attribute, or Opera fixes its support,
+ # we can add support with a version check to avoid doing this on Opera
+ # versions where it will be a problem. Reported to Opera as
+ # DSK-262266, but they don't have a public bug tracker for us to follow.
+ /*
+ if ( $wgMinimalPasswordLength > 1 ) {
+ $ret['pattern'] = '.{' . intval( $wgMinimalPasswordLength ) . ',}';
+ $ret['title'] = wfMsgExt( 'passwordtooshort', 'parsemag',
+ $wgMinimalPasswordLength );
+ }
+ */
+
+ return $ret;
+ }
}
diff --git a/includes/UserMailer.php b/includes/UserMailer.php
index b6484935..daf8b621 100644
--- a/includes/UserMailer.php
+++ b/includes/UserMailer.php
@@ -188,11 +188,12 @@ class UserMailer {
$headers .= "{$endl}Reply-To: " . $replyto->toString();
}
+ wfDebug( "Sending mail via internal mail() function\n" );
+
$wgErrorString = '';
$html_errors = ini_get( 'html_errors' );
ini_set( 'html_errors', '0' );
set_error_handler( array( 'UserMailer', 'errorHandler' ) );
- wfDebug( "Sending mail via internal mail() function\n" );
if (function_exists('mail')) {
if (is_array($to)) {
@@ -263,9 +264,9 @@ class UserMailer {
*
*/
class EmailNotification {
- private $to, $subject, $body, $replyto, $from;
- private $user, $title, $timestamp, $summary, $minorEdit, $oldid, $composed_common, $editor;
- private $mailTargets = array();
+ protected $to, $subject, $body, $replyto, $from;
+ protected $user, $title, $timestamp, $summary, $minorEdit, $oldid, $composed_common, $editor;
+ protected $mailTargets = array();
/**
* Send emails corresponding to the user $editor editing the page $title.
@@ -471,6 +472,7 @@ class EmailNotification {
$keys['$PAGEMINOREDIT'] = $medit;
$keys['$PAGESUMMARY'] = $summary;
+ $keys['$UNWATCHURL'] = $this->title->getFullUrl( 'action=unwatch' );
$subject = strtr( $subject, $keys );
@@ -572,8 +574,13 @@ class EmailNotification {
# $PAGEEDITDATE is the time and date of the page change
# expressed in terms of individual local time of the notification
# recipient, i.e. watching user
- $body = str_replace('$PAGEEDITDATE',
- $wgContLang->timeanddate( $this->timestamp, true, false, $timecorrection ),
+ $body = str_replace(
+ array( '$PAGEEDITDATEANDTIME',
+ '$PAGEEDITDATE',
+ '$PAGEEDITTIME' ),
+ array( $wgContLang->timeanddate( $this->timestamp, true, false, $timecorrection ),
+ $wgContLang->date( $this->timestamp, true, false, $timecorrection ),
+ $wgContLang->time( $this->timestamp, true, false, $timecorrection ) ),
$body);
return UserMailer::send($to, $this->from, $this->subject, $body, $this->replyto);
diff --git a/includes/UserRightsProxy.php b/includes/UserRightsProxy.php
index 8a65a01a..0d6b8151 100644
--- a/includes/UserRightsProxy.php
+++ b/includes/UserRightsProxy.php
@@ -1,11 +1,21 @@
<?php
-
/**
* Cut-down copy of User interface for local-interwiki-database
* user rights manipulation.
*/
class UserRightsProxy {
+
+ /**
+ * Constructor.
+ *
+ * @see newFromId()
+ * @see newFromName()
+ * @param $db DatabaseBase: db connection
+ * @param $database String: database name
+ * @param $name String: user name
+ * @param $id Integer: user ID
+ */
private function __construct( $db, $database, $name, $id ) {
$this->db = $db;
$this->database = $database;
@@ -14,14 +24,32 @@ class UserRightsProxy {
}
/**
+ * Accessor for $this->database
+ *
+ * @return String: database name
+ */
+ public function getDBName() {
+ return $this->database;
+ }
+
+ /**
* Confirm the selected database name is a valid local interwiki database name.
- * @return bool
+ *
+ * @param $database String: database name
+ * @return Boolean
*/
public static function validDatabase( $database ) {
global $wgLocalDatabases;
return in_array( $database, $wgLocalDatabases );
}
+ /**
+ * Same as User::whoIs()
+ *
+ * @param $database String: database name
+ * @param $id Integer: user ID
+ * @return String: user name or false if the user doesn't exist
+ */
public static function whoIs( $database, $id ) {
$user = self::newFromId( $database, $id );
if( $user ) {
@@ -33,12 +61,22 @@ class UserRightsProxy {
/**
* Factory function; get a remote user entry by ID number.
+ *
+ * @param $database String: database name
+ * @param $id Integer: user ID
* @return UserRightsProxy or null if doesn't exist
*/
public static function newFromId( $database, $id ) {
return self::newFromLookup( $database, 'user_id', intval( $id ) );
}
+ /**
+ * Factory function; get a remote user entry by name.
+ *
+ * @param $database String: database name
+ * @param $name String: user name
+ * @return UserRightsProxy or null if doesn't exist
+ */
public static function newFromName( $database, $name ) {
return self::newFromLookup( $database, 'user_name', $name );
}
@@ -62,8 +100,9 @@ class UserRightsProxy {
/**
* Open a database connection to work on for the requested user.
* This may be a new connection to another database for remote users.
- * @param $database string
- * @return Database or null if invalid selection
+ *
+ * @param $database String
+ * @return DatabaseBase or null if invalid selection
*/
public static function getDB( $database ) {
global $wgLocalDatabases, $wgDBname;
@@ -86,15 +125,27 @@ class UserRightsProxy {
return $this->getId() == 0;
}
+ /**
+ * Same as User::getName()
+ *
+ * @return String
+ */
public function getName() {
return $this->name . '@' . $this->database;
}
+ /**
+ * Same as User::getUserPage()
+ *
+ * @return Title object
+ */
public function getUserPage() {
return Title::makeTitle( NS_USER, $this->getName() );
}
- // Replaces getUserGroups()
+ /**
+ * Replaces User::getUserGroups()
+ */
function getGroups() {
$res = $this->db->select( 'user_groups',
array( 'ug_group' ),
@@ -107,7 +158,9 @@ class UserRightsProxy {
return $groups;
}
- // replaces addUserGroup
+ /**
+ * Replaces User::addUserGroup()
+ */
function addGroup( $group ) {
$this->db->insert( 'user_groups',
array(
@@ -118,7 +171,9 @@ class UserRightsProxy {
array( 'IGNORE' ) );
}
- // replaces removeUserGroup
+ /**
+ * Replaces User::removeUserGroup()
+ */
function removeGroup( $group ) {
$this->db->delete( 'user_groups',
array(
@@ -128,7 +183,9 @@ class UserRightsProxy {
__METHOD__ );
}
- // replaces touchUser
+ /**
+ * Replaces User::touchUser()
+ */
function invalidateCache() {
$this->db->update( 'user',
array( 'user_touched' => $this->db->timestamp() ),
diff --git a/includes/WatchedItem.php b/includes/WatchedItem.php
index a2c1f036..d1c15296 100644
--- a/includes/WatchedItem.php
+++ b/includes/WatchedItem.php
@@ -62,7 +62,7 @@ class WatchedItem {
'wl_user' => $this->id,
'wl_namespace' => MWNamespace::getSubject($this->ns),
'wl_title' => $this->ti,
- 'wl_notificationtimestamp' => NULL
+ 'wl_notificationtimestamp' => null
), __METHOD__, 'IGNORE' );
// Every single watched page needs now to be listed in watchlist;
@@ -72,7 +72,7 @@ class WatchedItem {
'wl_user' => $this->id,
'wl_namespace' => MWNamespace::getTalk($this->ns),
'wl_title' => $this->ti,
- 'wl_notificationtimestamp' => NULL
+ 'wl_notificationtimestamp' => null
), __METHOD__, 'IGNORE' );
wfProfileOut( __METHOD__ );
diff --git a/includes/WatchlistEditor.php b/includes/WatchlistEditor.php
index 82f62f6a..e9e79ee1 100644
--- a/includes/WatchlistEditor.php
+++ b/includes/WatchlistEditor.php
@@ -143,8 +143,8 @@ class WatchlistEditor {
if( !$title instanceof Title )
$title = Title::newFromText( $title );
if( $title instanceof Title ) {
- $output->addHTML( "<li>" . $skin->makeLinkObj( $title )
- . ' (' . $skin->makeLinkObj( $title->getTalkPage(), $talk ) . ")</li>\n" );
+ $output->addHTML( "<li>" . $skin->link( $title )
+ . ' (' . $skin->link( $title->getTalkPage(), $talk ) . ")</li>\n" );
}
}
$output->addHTML( "</ul>\n" );
@@ -340,7 +340,7 @@ class WatchlistEditor {
if( ( $count = $this->showItemCount( $output, $user ) ) > 0 ) {
$self = SpecialPage::getTitleFor( 'Watchlist' );
$form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $self->getLocalUrl( 'action=edit' ) ) );
+ 'action' => $self->getLocalUrl( array( 'action' => 'edit' ) ) ) );
$form .= Xml::hidden( 'token', $wgUser->editToken( 'watchlistedit' ) );
$form .= "<fieldset>\n<legend>" . wfMsgHtml( 'watchlistedit-normal-legend' ) . "</legend>";
$form .= wfMsgExt( 'watchlistedit-normal-explain', 'parse' );
@@ -409,15 +409,27 @@ class WatchlistEditor {
private function buildRemoveLine( $title, $redirect, $skin ) {
global $wgLang;
- $link = $skin->makeLinkObj( $title );
+ $link = $skin->link( $title );
if( $redirect )
$link = '<span class="watchlistredir">' . $link . '</span>';
- $tools[] = $skin->makeLinkObj( $title->getTalkPage(), wfMsgHtml( 'talkpagelinktext' ) );
+ $tools[] = $skin->link( $title->getTalkPage(), wfMsgHtml( 'talkpagelinktext' ) );
if( $title->exists() ) {
- $tools[] = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'history_short' ), 'action=history' );
+ $tools[] = $skin->link(
+ $title,
+ wfMsgHtml( 'history_short' ),
+ array(),
+ array( 'action' => 'history' ),
+ array( 'known', 'noclasses' )
+ );
}
if( $title->getNamespace() == NS_USER && !$title->isSubpage() ) {
- $tools[] = $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Contributions', $title->getText() ), wfMsgHtml( 'contributions' ) );
+ $tools[] = $skin->link(
+ SpecialPage::getTitleFor( 'Contributions', $title->getText() ),
+ wfMsgHtml( 'contributions' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
return "<li>"
. Xml::check( 'titles[]', false, array( 'value' => $title->getPrefixedText() ) )
@@ -435,7 +447,7 @@ class WatchlistEditor {
$this->showItemCount( $output, $user );
$self = SpecialPage::getTitleFor( 'Watchlist' );
$form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $self->getLocalUrl( 'action=raw' ) ) );
+ 'action' => $self->getLocalUrl( array( 'action' => 'raw' ) ) ) );
$form .= Xml::hidden( 'token', $wgUser->editToken( 'watchlistedit' ) );
$form .= '<fieldset><legend>' . wfMsgHtml( 'watchlistedit-raw-legend' ) . '</legend>';
$form .= wfMsgExt( 'watchlistedit-raw-explain', 'parse' );
@@ -487,7 +499,14 @@ class WatchlistEditor {
$tools = array();
$modes = array( 'view' => false, 'edit' => 'edit', 'raw' => 'raw' );
foreach( $modes as $mode => $subpage ) {
- $tools[] = $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Watchlist', $subpage ), wfMsgHtml( "watchlisttools-{$mode}" ) );
+ // can use messages 'watchlisttools-view', 'watchlisttools-edit', 'watchlisttools-raw'
+ $tools[] = $skin->link(
+ SpecialPage::getTitleFor( 'Watchlist', $subpage ),
+ wfMsgHtml( "watchlisttools-{$mode}" ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
}
return $wgLang->pipeList( $tools );
}
diff --git a/includes/WebRequest.php b/includes/WebRequest.php
index 0928e4d5..b6d6d27a 100644
--- a/includes/WebRequest.php
+++ b/includes/WebRequest.php
@@ -39,16 +39,15 @@ if ( !function_exists( '__autoload' ) ) {
* not create a second WebRequest object; make a FauxRequest object if
* you want to pass arbitrary data to some function in place of the web
* input.
- *
+ *
* @ingroup HTTP
*/
class WebRequest {
- var $data = array();
- var $headers;
+ protected $data, $headers = array();
private $_response;
- function __construct() {
- /// @fixme This preemptive de-quoting can interfere with other web libraries
+ public function __construct() {
+ /// @todo Fixme: this preemptive de-quoting can interfere with other web libraries
/// and increases our memory footprint. It would be cleaner to do on
/// demand; but currently we have no wrapper for $_SERVER etc.
$this->checkMagicQuotes();
@@ -65,13 +64,15 @@ class WebRequest {
* as we may need the list of language variants to determine
* available variant URLs.
*/
- function interpolateTitle() {
+ public function interpolateTitle() {
global $wgUsePathInfo;
+
if ( $wgUsePathInfo ) {
// PATH_INFO is mangled due to http://bugs.php.net/bug.php?id=31892
// And also by Apache 2.x, double slashes are converted to single slashes.
// So we will use REQUEST_URI if possible.
$matches = array();
+
if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
// Slurp out the path portion to examine...
$url = $_SERVER['REQUEST_URI'];
@@ -161,9 +162,8 @@ class WebRequest {
* used for undoing the evil that is magic_quotes_gpc.
* @param $arr array: will be modified
* @return array the original array
- * @private
*/
- function &fix_magic_quotes( &$arr ) {
+ private function &fix_magic_quotes( &$arr ) {
foreach( $arr as $key => $val ) {
if( is_array( $val ) ) {
$this->fix_magic_quotes( $arr[$key] );
@@ -179,10 +179,11 @@ class WebRequest {
* through fix_magic_quotes to strip out the stupid slashes.
* WARNING: This should only be done once! Running a second
* time could damage the values.
- * @private
*/
- function checkMagicQuotes() {
- if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
+ private function checkMagicQuotes() {
+ $mustFixQuotes = function_exists( 'get_magic_quotes_gpc' )
+ && get_magic_quotes_gpc();
+ if( $mustFixQuotes ) {
$this->fix_magic_quotes( $_COOKIE );
$this->fix_magic_quotes( $_ENV );
$this->fix_magic_quotes( $_GET );
@@ -204,7 +205,8 @@ class WebRequest {
$data[$key] = $this->normalizeUnicode( $val );
}
} else {
- $data = UtfNormal::cleanUp( $data );
+ global $wgContLang;
+ $data = $wgContLang->normalize( $data );
}
return $data;
}
@@ -216,9 +218,12 @@ class WebRequest {
* @param $name string
* @param $default mixed
* @return mixed
- * @private
*/
- function getGPCVal( $arr, $name, $default ) {
+ private function getGPCVal( $arr, $name, $default ) {
+ # PHP is so nice to not touch input data, except sometimes:
+ # http://us2.php.net/variables.external#language.variables.external.dot-in-names
+ # Work around PHP *feature* to avoid *bugs* elsewhere.
+ $name = strtr( $name, '.', '_' );
if( isset( $arr[$name] ) ) {
global $wgContLang;
$data = $arr[$name];
@@ -246,7 +251,7 @@ class WebRequest {
* @param $default string: optional default (or NULL)
* @return string
*/
- function getVal( $name, $default = NULL ) {
+ public function getVal( $name, $default = null ) {
$val = $this->getGPCVal( $this->data, $name, $default );
if( is_array( $val ) ) {
$val = $default;
@@ -257,14 +262,14 @@ class WebRequest {
return (string)$val;
}
}
-
+
/**
* Set an aribtrary value into our get/post data.
* @param $key string Key name to use
* @param $value mixed Value to set
* @return mixed old value if one was present, null otherwise
*/
- function setVal( $key, $value ) {
+ public function setVal( $key, $value ) {
$ret = isset( $this->data[$key] ) ? $this->data[$key] : null;
$this->data[$key] = $value;
return $ret;
@@ -279,7 +284,7 @@ class WebRequest {
* @param $default array: optional default (or NULL)
* @return array
*/
- function getArray( $name, $default = NULL ) {
+ public function getArray( $name, $default = null ) {
$val = $this->getGPCVal( $this->data, $name, $default );
if( is_null( $val ) ) {
return null;
@@ -298,7 +303,7 @@ class WebRequest {
* @param $default array: option default (or NULL)
* @return array of ints
*/
- function getIntArray( $name, $default = NULL ) {
+ public function getIntArray( $name, $default = null ) {
$val = $this->getArray( $name, $default );
if( is_array( $val ) ) {
$val = array_map( 'intval', $val );
@@ -314,7 +319,7 @@ class WebRequest {
* @param $default int
* @return int
*/
- function getInt( $name, $default = 0 ) {
+ public function getInt( $name, $default = 0 ) {
return intval( $this->getVal( $name, $default ) );
}
@@ -325,7 +330,7 @@ class WebRequest {
* @param $name string
* @return int
*/
- function getIntOrNull( $name ) {
+ public function getIntOrNull( $name ) {
$val = $this->getVal( $name );
return is_numeric( $val )
? intval( $val )
@@ -340,7 +345,7 @@ class WebRequest {
* @param $default bool
* @return bool
*/
- function getBool( $name, $default = false ) {
+ public function getBool( $name, $default = false ) {
return $this->getVal( $name, $default ) ? true : false;
}
@@ -351,10 +356,10 @@ class WebRequest {
* @param $name string
* @return bool
*/
- function getCheck( $name ) {
+ public function getCheck( $name ) {
# Checkboxes and buttons are only present when clicked
# Presence connotes truth, abscense false
- $val = $this->getVal( $name, NULL );
+ $val = $this->getVal( $name, null );
return isset( $val );
}
@@ -370,7 +375,7 @@ class WebRequest {
* @param $default string: optional
* @return string
*/
- function getText( $name, $default = '' ) {
+ public function getText( $name, $default = '' ) {
global $wgContLang;
$val = $this->getVal( $name, $default );
return str_replace( "\r\n", "\n",
@@ -382,7 +387,7 @@ class WebRequest {
* If no arguments are given, returns all input values.
* No transformation is performed on the values.
*/
- function getValues() {
+ public function getValues() {
$names = func_get_args();
if ( count( $names ) == 0 ) {
$names = array_keys( $this->data );
@@ -407,7 +412,7 @@ class WebRequest {
*
* @return bool
*/
- function wasPosted() {
+ public function wasPosted() {
return $_SERVER['REQUEST_METHOD'] == 'POST';
}
@@ -422,7 +427,7 @@ class WebRequest {
*
* @return bool
*/
- function checkSessionCookie() {
+ public function checkSessionCookie() {
return isset( $_COOKIE[session_name()] );
}
@@ -430,8 +435,8 @@ class WebRequest {
* Return the path portion of the request URI.
* @return string
*/
- function getRequestURL() {
- if( isset( $_SERVER['REQUEST_URI'] ) ) {
+ public function getRequestURL() {
+ if( isset( $_SERVER['REQUEST_URI']) && strlen($_SERVER['REQUEST_URI']) ) {
$base = $_SERVER['REQUEST_URI'];
} elseif( isset( $_SERVER['SCRIPT_NAME'] ) ) {
// Probably IIS; doesn't set REQUEST_URI
@@ -465,7 +470,7 @@ class WebRequest {
* Return the request URI with the canonical service and hostname.
* @return string
*/
- function getFullRequestURL() {
+ public function getFullRequestURL() {
global $wgServer;
return $wgServer . $this->getRequestURL();
}
@@ -475,7 +480,7 @@ class WebRequest {
* @param $query String: query string fragment; do not include initial '?'
* @return string
*/
- function appendQuery( $query ) {
+ public function appendQuery( $query ) {
global $wgTitle;
$basequery = '';
foreach( $_GET as $var => $val ) {
@@ -500,11 +505,11 @@ class WebRequest {
* @param $query String: query string fragment; do not include initial '?'
* @return string
*/
- function escapeAppendQuery( $query ) {
+ public function escapeAppendQuery( $query ) {
return htmlspecialchars( $this->appendQuery( $query ) );
}
- function appendQueryValue( $key, $value, $onlyquery = false ) {
+ public function appendQueryValue( $key, $value, $onlyquery = false ) {
return $this->appendQueryArray( array( $key => $value ), $onlyquery );
}
@@ -515,7 +520,7 @@ class WebRequest {
* the complete URL
* @return string
*/
- function appendQueryArray( $array, $onlyquery = false ) {
+ public function appendQueryArray( $array, $onlyquery = false ) {
global $wgTitle;
$newquery = $_GET;
unset( $newquery['title'] );
@@ -533,7 +538,7 @@ class WebRequest {
* @param $optionname String: to specify an option other than rclimit to pull from.
* @return array first element is limit, second is offset
*/
- function getLimitOffset( $deflimit = 50, $optionname = 'rclimit' ) {
+ public function getLimitOffset( $deflimit = 50, $optionname = 'rclimit' ) {
global $wgUser;
$limit = $this->getInt( 'limit', 0 );
@@ -555,9 +560,9 @@ class WebRequest {
* @param $key String:
* @return string or NULL if no such file.
*/
- function getFileTempname( $key ) {
+ public function getFileTempname( $key ) {
if( !isset( $_FILES[$key] ) ) {
- return NULL;
+ return null;
}
return $_FILES[$key]['tmp_name'];
}
@@ -567,7 +572,7 @@ class WebRequest {
* @param $key String:
* @return integer
*/
- function getFileSize( $key ) {
+ public function getFileSize( $key ) {
if( !isset( $_FILES[$key] ) ) {
return 0;
}
@@ -579,7 +584,7 @@ class WebRequest {
* @param $key String:
* @return integer
*/
- function getUploadError( $key ) {
+ public function getUploadError( $key ) {
if( !isset( $_FILES[$key] ) || !isset( $_FILES[$key]['error'] ) ) {
return 0/*UPLOAD_ERR_OK*/;
}
@@ -597,16 +602,17 @@ class WebRequest {
* @param $key String:
* @return string or NULL if no such file.
*/
- function getFileName( $key ) {
+ public function getFileName( $key ) {
+ global $wgContLang;
if( !isset( $_FILES[$key] ) ) {
- return NULL;
+ return null;
}
$name = $_FILES[$key]['name'];
# Safari sends filenames in HTML-encoded Unicode form D...
# Horrid and evil! Let's try to make some kind of sense of it.
$name = Sanitizer::decodeCharReferences( $name );
- $name = UtfNormal::cleanUp( $name );
+ $name = $wgContLang->normalize( $name );
wfDebug( "WebRequest::getFileName() '" . $_FILES[$key]['name'] . "' normalized to '$name'\n" );
return $name;
}
@@ -615,10 +621,11 @@ class WebRequest {
* Return a handle to WebResponse style object, for setting cookies,
* headers and other stuff, for Request being worked on.
*/
- function response() {
+ public function response() {
/* Lazy initialization of response object for this request */
- if (!is_object($this->_response)) {
- $this->_response = new WebResponse;
+ if ( !is_object( $this->_response ) ) {
+ $class = ( $this instanceof FauxRequest ) ? 'FauxResponse' : 'WebResponse';
+ $this->_response = new $class();
}
return $this->_response;
}
@@ -627,11 +634,10 @@ class WebRequest {
* Get a request header, or false if it isn't set
* @param $name String: case-insensitive header name
*/
- function getHeader( $name ) {
+ public function getHeader( $name ) {
$name = strtoupper( $name );
if ( function_exists( 'apache_request_headers' ) ) {
- if ( !isset( $this->headers ) ) {
- $this->headers = array();
+ if ( !$this->headers ) {
foreach ( apache_request_headers() as $tempName => $tempValue ) {
$this->headers[ strtoupper( $tempName ) ] = $tempValue;
}
@@ -650,18 +656,53 @@ class WebRequest {
}
}
}
-
+
/*
* Get data from $_SESSION
+ * @param $key String Name of key in $_SESSION
+ * @return mixed
*/
- function getSessionData( $key ) {
+ public function getSessionData( $key ) {
if( !isset( $_SESSION[$key] ) )
return null;
return $_SESSION[$key];
}
- function setSessionData( $key, $data ) {
+
+ /**
+ * Set session data
+ * @param $key String Name of key in $_SESSION
+ * @param $data mixed
+ */
+ public function setSessionData( $key, $data ) {
$_SESSION[$key] = $data;
}
+
+ /**
+ * Returns true if the PATH_INFO ends with an extension other than a script
+ * extension. This could confuse IE for scripts that send arbitrary data which
+ * is not HTML but may be detected as such.
+ *
+ * Various past attempts to use the URL to make this check have generally
+ * run up against the fact that CGI does not provide a standard method to
+ * determine the URL. PATH_INFO may be mangled (e.g. if cgi.fix_pathinfo=0),
+ * but only by prefixing it with the script name and maybe some other stuff,
+ * the extension is not mangled. So this should be a reasonably portable
+ * way to perform this security check.
+ */
+ public function isPathInfoBad() {
+ global $wgScriptExtension;
+
+ if ( !isset( $_SERVER['PATH_INFO'] ) ) {
+ return false;
+ }
+ $pi = $_SERVER['PATH_INFO'];
+ $dotPos = strrpos( $pi, '.' );
+ if ( $dotPos === false ) {
+ return false;
+ }
+ $ext = substr( $pi, $dotPos );
+ return !in_array( $ext, array( $wgScriptExtension, '.php', '.php5' ) );
+ }
}
/**
@@ -670,64 +711,73 @@ class WebRequest {
* @ingroup HTTP
*/
class FauxRequest extends WebRequest {
- var $wasPosted = false;
+ private $wasPosted = false;
+ private $session = array();
+ private $response;
/**
* @param $data Array of *non*-urlencoded key => value pairs, the
* fake GET/POST values
* @param $wasPosted Bool: whether to treat the data as POST
*/
- function FauxRequest( $data, $wasPosted = false, $session = null ) {
+ public function __construct( $data, $wasPosted = false, $session = null ) {
if( is_array( $data ) ) {
$this->data = $data;
} else {
throw new MWException( "FauxRequest() got bogus data" );
}
$this->wasPosted = $wasPosted;
- $this->headers = array();
- $this->session = $session ? $session : array();
+ if( $session )
+ $this->session = $session;
}
-
- function notImplemented( $method ) {
+
+ private function notImplemented( $method ) {
throw new MWException( "{$method}() not implemented" );
}
- function getText( $name, $default = '' ) {
+ public function getText( $name, $default = '' ) {
# Override; don't recode since we're using internal data
return (string)$this->getVal( $name, $default );
}
- function getValues() {
+ public function getValues() {
return $this->data;
}
- function wasPosted() {
+ public function wasPosted() {
return $this->wasPosted;
}
- function checkSessionCookie() {
+ public function checkSessionCookie() {
return false;
}
- function getRequestURL() {
+ public function getRequestURL() {
$this->notImplemented( __METHOD__ );
}
- function appendQuery( $query ) {
+ public function appendQuery( $query ) {
$this->notImplemented( __METHOD__ );
}
- function getHeader( $name ) {
+ public function getHeader( $name ) {
return isset( $this->headers[$name] ) ? $this->headers[$name] : false;
}
- function getSessionData( $key ) {
- if( !isset( $this->session[$key] ) )
- return null;
- return $this->session[$key];
+ public function setHeader( $name, $val ) {
+ $this->headers[$name] = $val;
+ }
+
+ public function getSessionData( $key ) {
+ if( isset( $this->session[$key] ) )
+ return $this->session[$key];
}
- function setSessionData( $key, $data ) {
+
+ public function setSessionData( $key, $data ) {
$this->notImplemented( __METHOD__ );
}
+ public function isPathInfoBad() {
+ return false;
+ }
}
diff --git a/includes/WebResponse.php b/includes/WebResponse.php
index 09d37385..f7d57e41 100644
--- a/includes/WebResponse.php
+++ b/includes/WebResponse.php
@@ -6,7 +6,7 @@
*/
class WebResponse {
- /**
+ /**
* Output a HTTP header, wrapper for PHP's
* header()
* @param $string String: header to output
@@ -58,3 +58,31 @@ class WebResponse {
}
}
}
+
+
+class FauxResponse extends WebResponse {
+ private $headers;
+ private $cookies;
+
+ public function header($string, $replace=true) {
+ list($key, $val) = explode(":", $string, 2);
+
+ if($replace || !isset($this->headers[$key])) {
+ $this->headers[$key] = $val;
+ }
+ }
+
+ public function getheader($key) {
+ return $this->headers[$key];
+ }
+
+ public function setcookie( $name, $value, $expire = 0 ) {
+ $this->cookies[$name] = $value;
+ }
+
+ public function getcookie( $name ) {
+ if ( isset($this->cookies[$name]) ) {
+ return $this->cookies[$name];
+ }
+ }
+} \ No newline at end of file
diff --git a/includes/WebStart.php b/includes/WebStart.php
index edc58cb3..d62b4a62 100644
--- a/includes/WebStart.php
+++ b/includes/WebStart.php
@@ -46,7 +46,6 @@ if ( function_exists ( 'getrusage' ) ) {
$wgRUstart = array();
}
unset( $IP );
-@ini_set( 'allow_url_fopen', 0 ); # For security
# Valid web server entry point, enable includes.
# Please don't move this line to includes/Defines.php. This line essentially
@@ -66,7 +65,11 @@ if ( $IP === false ) {
# Start profiler
-require_once( "$IP/StartProfiler.php" );
+if( file_exists("$IP/StartProfiler.php") ) {
+ require_once( "$IP/StartProfiler.php" );
+} else {
+ require_once( "$IP/includes/ProfilerStub.php" );
+}
wfProfileIn( 'WebStart.php-conf' );
# Load up some global defines.
diff --git a/includes/Wiki.php b/includes/Wiki.php
index 38f19c96..dc4467b6 100644
--- a/includes/Wiki.php
+++ b/includes/Wiki.php
@@ -42,7 +42,6 @@ class MediaWiki {
/**
* Initialization of ... everything
* Performs the request too
- * FIXME: why is this crap called "initialize" when it performs everything?
*
* @param $title Title ($wgTitle)
* @param $article Article
@@ -50,14 +49,22 @@ class MediaWiki {
* @param $user User
* @param $request WebRequest
*/
- function initialize( &$title, &$article, &$output, &$user, $request ) {
+ function performRequestForTitle( &$title, &$article, &$output, &$user, $request ) {
wfProfileIn( __METHOD__ );
+
+ $output->setTitle( $title );
+
+ wfRunHooks( 'BeforeInitialize', array( &$title, &$article, &$output, &$user, $request, $this ) );
+
if( !$this->preliminaryChecks( $title, $output, $request ) ) {
wfProfileOut( __METHOD__ );
return;
}
- if( !$this->initializeSpecialCases( $title, $output, $request ) ) {
- $new_article = $this->initializeArticle( $title, $request );
+ // Call handleSpecialCases() to deal with all special requests...
+ if( !$this->handleSpecialCases( $title, $output, $request ) ) {
+ // ...otherwise treat it as an article view. The article
+ // may be a redirect to another article or URL.
+ $new_article = $this->initializeArticle( $title, $output, $request );
if( is_object( $new_article ) ) {
$article = $new_article;
$this->performAction( $output, $article, $title, $user, $request );
@@ -102,11 +109,11 @@ class MediaWiki {
if( $wgRequest->getVal( 'printable' ) === 'yes' ) {
$wgOut->setPrintable();
}
- $ret = NULL;
+ $ret = null;
if( $curid = $wgRequest->getInt( 'curid' ) ) {
# URLs like this are generated by RC, because rc_title isn't always accurate
$ret = Title::newFromID( $curid );
- } elseif( '' == $title && 'delete' != $action ) {
+ } elseif( $title == '' && $action != 'delete' ) {
$ret = Title::newMainPage();
} else {
$ret = Title::newFromURL( $title );
@@ -149,8 +156,9 @@ class MediaWiki {
# the Read array in order for the user to see it. (We have to check here to
# catch special pages etc. We check again in Article::view())
if( !is_null( $title ) && !$title->userCanRead() ) {
+ global $wgDeferredUpdateList;
$output->loginToUse();
- $output->output();
+ $this->finalCleanup( $wgDeferredUpdateList, $output );
$output->disable();
return false;
}
@@ -164,39 +172,54 @@ class MediaWiki {
* - redirect loop
* - special pages
*
- * FIXME: why is this crap called "initialize" when it performs everything?
- *
* @param $title Title
* @param $output OutputPage
* @param $request WebRequest
* @return bool true if the request is already executed
*/
- function initializeSpecialCases( &$title, &$output, $request ) {
+ function handleSpecialCases( &$title, &$output, $request ) {
wfProfileIn( __METHOD__ );
-
+ global $wgContLang, $wgUser;
$action = $this->getVal( 'Action' );
- if( is_null($title) || $title->getDBkey() == '' ) {
+ $perferred = $wgContLang->getPreferredVariant( false );
+
+ // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
+ if( is_null($title) || ( ($title->getDBkey() == '') && ($title->getInterwiki() == '') ) ) {
$title = SpecialPage::getTitleFor( 'Badtitle' );
# Die now before we mess up $wgArticle and the skin stops working
throw new ErrorPageError( 'badtitle', 'badtitletext' );
+
+ // Interwiki redirects
} else if( $title->getInterwiki() != '' ) {
if( $rdfrom = $request->getVal( 'rdfrom' ) ) {
$url = $title->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) );
} else {
- $url = $title->getFullURL();
+ $query = $request->getValues();
+ unset( $query['title'] );
+ $url = $title->getFullURL( $query );
}
/* Check for a redirect loop */
if( !preg_match( '/^' . preg_quote( $this->getVal('Server'), '/' ) . '/', $url ) && $title->isLocal() ) {
$output->redirect( $url );
} else {
$title = SpecialPage::getTitleFor( 'Badtitle' );
+ wfProfileOut( __METHOD__ );
throw new ErrorPageError( 'badtitle', 'badtitletext' );
}
+ // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
} else if( $action == 'view' && !$request->wasPosted() &&
- ( !isset($this->GET['title']) || $title->getPrefixedDBKey() != $this->GET['title'] ) &&
+ ( ( !isset($this->GET['title']) || $title->getPrefixedDBKey() != $this->GET['title'] ) ||
+ // No valid variant in URL (if the main-language has multi-variants), to ensure
+ // anonymous access would always be redirect to a URL with 'variant' parameter
+ ( !isset($this->GET['variant']) && $wgContLang->hasVariants() && !$wgUser->isLoggedIn() ) ) &&
!count( array_diff( array_keys( $this->GET ), array( 'action', 'title' ) ) ) )
{
- $targetUrl = $title->getFullURL();
+ if( !$wgUser->isLoggedIn() ) {
+ $pref = $wgContLang->getPreferredVariant( false, $fromHeader = true );
+ $targetUrl = $title->getFullURL( '', $variant = $pref );
+ }
+ else
+ $targetUrl = $title->getFullURL();
// Redirect to canonical url, make it a 301 to allow caching
if( $targetUrl == $request->getFullRequestURL() ) {
$message = "Redirect loop detected!\n\n" .
@@ -219,11 +242,13 @@ class MediaWiki {
"to true.";
}
wfHttpError( 500, "Internal error", $message );
+ wfProfileOut( __METHOD__ );
return false;
} else {
$output->setSquidMaxage( 1200 );
$output->redirect( $targetUrl, '301' );
}
+ // Special pages
} else if( NS_SPECIAL == $title->getNamespace() ) {
/* actions that need to be made when we have a special pages */
SpecialPage::executePath( $title );
@@ -270,10 +295,11 @@ class MediaWiki {
* Create an Article object for the page, following redirects if needed.
*
* @param $title Title ($wgTitle)
- * @param $request WebRequest
+ * @param $output OutputPage ($wgOut)
+ * @param $request WebRequest ($wgRequest)
* @return mixed an Article, or a string to redirect to another URL
*/
- function initializeArticle( &$title, $request ) {
+ function initializeArticle( &$title, &$output, $request ) {
wfProfileIn( __METHOD__ );
$action = $this->getVal( 'action', 'view' );
@@ -302,13 +328,15 @@ class MediaWiki {
wfRunHooks( 'InitializeArticleMaybeRedirect',
array(&$title,&$request,&$ignoreRedirect,&$target,&$article) );
- // Follow redirects only for... redirects
- if( !$ignoreRedirect && $article->isRedirect() ) {
+ // Follow redirects only for... redirects.
+ // If $target is set, then a hook wanted to redirect.
+ if( !$ignoreRedirect && ($target || $article->isRedirect()) ) {
# Is the target already set by an extension?
$target = $target ? $target : $article->followRedirect();
if( is_string( $target ) ) {
if( !$this->getVal( 'DisableHardRedirects' ) ) {
// we'll need to redirect
+ wfProfileOut( __METHOD__ );
return $target;
}
}
@@ -320,6 +348,7 @@ class MediaWiki {
$rarticle->setRedirectedFrom( $title );
$article = $rarticle;
$title = $target;
+ $output->setTitle( $title );
}
}
} else {
@@ -331,14 +360,16 @@ class MediaWiki {
}
/**
- * Cleaning up by doing deferred updates, calling LBFactory and doing the output
+ * Cleaning up request by doing:
+ ** deferred updates, DB transaction, and the output
*
* @param $deferredUpdates array of updates to do
* @param $output OutputPage
*/
function finalCleanup( &$deferredUpdates, &$output ) {
wfProfileIn( __METHOD__ );
- # Now commit any transactions, so that unreported errors after output() don't roll back the whole thing
+ # Now commit any transactions, so that unreported errors after
+ # output() don't roll back the whole DB transaction
$factory = wfGetLBFactory();
$factory->commitMasterChanges();
# Output everything!
@@ -346,8 +377,6 @@ class MediaWiki {
# Do any deferred jobs
$this->doUpdates( $deferredUpdates );
$this->doJobs();
- # Commit and close up!
- $factory->shutdown();
wfProfileOut( __METHOD__ );
}
@@ -418,6 +447,10 @@ class MediaWiki {
*/
function restInPeace() {
wfLogProfilingData();
+ # Commit and close up!
+ $factory = wfGetLBFactory();
+ $factory->commitMasterChanges();
+ $factory->shutdown();
wfDebug( "Request ended normally\n" );
}
@@ -444,6 +477,16 @@ class MediaWiki {
$action = 'nosuchaction';
}
+ # Workaround for bug #20966: inability of IE to provide an action dependent
+ # on which submit button is clicked.
+ if ( $action === 'historysubmit' ) {
+ if ( $request->getBool( 'revisiondelete' ) ) {
+ $action = 'revisiondelete';
+ } else {
+ $action = 'view';
+ }
+ }
+
switch( $action ) {
case 'view':
$output->setSquidMaxage( $this->getVal( 'SquidMaxage' ) );
@@ -519,9 +562,14 @@ class MediaWiki {
if( $request->getFullRequestURL() == $title->getInternalURL( 'action=history' ) ) {
$output->setSquidMaxage( $this->getVal( 'SquidMaxage' ) );
}
- $history = new PageHistory( $article );
+ $history = new HistoryPage( $article );
$history->history();
break;
+ case 'revisiondelete':
+ # For show/hide submission from history page
+ $special = SpecialPage::getPage( 'Revisiondelete' );
+ $special->execute( '' );
+ break;
default:
if( wfRunHooks( 'UnknownAction', array( $action, $article ) ) ) {
$output->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
diff --git a/includes/WikiMap.php b/includes/WikiMap.php
new file mode 100644
index 00000000..878e165f
--- /dev/null
+++ b/includes/WikiMap.php
@@ -0,0 +1,161 @@
+<?php
+
+/**
+ * Helper tools for dealing with other locally-hosted wikis
+ */
+class WikiMap {
+
+ /**
+ * Get a WikiReference object for $wikiID
+ *
+ * @param $wikiID String: wiki'd id (generally database name)
+ * @return WikiReference object or null if the wiki was not found
+ */
+ public static function getWiki( $wikiID ) {
+ global $wgConf, $IP;
+
+ $wgConf->loadFullData();
+
+ list( $major, $minor ) = $wgConf->siteFromDB( $wikiID );
+ if( isset( $major ) ) {
+ $server = $wgConf->get( 'wgServer', $wikiID, $major,
+ array( 'lang' => $minor, 'site' => $major ) );
+ $path = $wgConf->get( 'wgArticlePath', $wikiID, $major,
+ array( 'lang' => $minor, 'site' => $major ) );
+ return new WikiReference( $major, $minor, $server, $path );
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Convenience to get the wiki's display name
+ *
+ * @todo We can give more info than just the wiki id!
+ * @param $wikiID String: wiki'd id (generally database name)
+ * @return Wiki's name or $wiki_id if the wiki was not found
+ */
+ public static function getWikiName( $wikiID ) {
+ $wiki = WikiMap::getWiki( $wikiID );
+
+ if ( $wiki ) {
+ return $wiki->getDisplayName();
+ }
+ return $wikiID;
+ }
+
+ /**
+ * Convenience to get a link to a user page on a foreign wiki
+ *
+ * @param $wikiID String: wiki'd id (generally database name)
+ * @param $user String: user name (must be normalised before calling this function!)
+ * @param $text String: link's text; optional, default to "User:$user"
+ * @return String: HTML link or false if the wiki was not found
+ */
+ public static function foreignUserLink( $wikiID, $user, $text=null ) {
+ return self::makeForeignLink( $wikiID, "User:$user", $text );
+ }
+
+ /**
+ * Convenience to get a link to a page on a foreign wiki
+ *
+ * @param $wikiID String: wiki'd id (generally database name)
+ * @param $page String: page name (must be normalised before calling this function!)
+ * @param $text String: link's text; optional, default to $page
+ * @return String: HTML link or false if the wiki was not found
+ */
+ public static function makeForeignLink( $wikiID, $page, $text=null ) {
+ global $wgUser;
+ $sk = $wgUser->getSkin();
+
+ if ( !$text )
+ $text = $page;
+
+ $url = self::getForeignURL( $wikiID, $page );
+ if ( $url === false )
+ return false;
+
+ return $sk->makeExternalLink( $url, $text );
+ }
+
+ /**
+ * Convenience to get a url to a page on a foreign wiki
+ *
+ * @param $wikiID String: wiki'd id (generally database name)
+ * @param $page String: page name (must be normalised before calling this function!)
+ * @return String: URL or false if the wiki was not found
+ */
+ public static function getForeignURL( $wikiID, $page ) {
+ $wiki = WikiMap::getWiki( $wikiID );
+
+ if ( $wiki )
+ return $wiki->getUrl( $page );
+
+ return false;
+ }
+}
+
+/**
+ * Reference to a locally-hosted wiki
+ */
+class WikiReference {
+ private $mMinor; ///< 'en', 'meta', 'mediawiki', etc
+ private $mMajor; ///< 'wiki', 'wiktionary', etc
+ private $mServer; ///< server override, 'www.mediawiki.org'
+ private $mPath; ///< path override, '/wiki/$1'
+
+ public function __construct( $major, $minor, $server, $path ) {
+ $this->mMajor = $major;
+ $this->mMinor = $minor;
+ $this->mServer = $server;
+ $this->mPath = $path;
+ }
+
+ public function getHostname() {
+ $prefixes = array( 'http://', 'https://' );
+ foreach ( $prefixes as $prefix ) {
+ if ( substr( $this->mServer, 0, strlen( $prefix ) ) ) {
+ return substr( $this->mServer, strlen( $prefix ) );
+ }
+ }
+ throw new MWException( "Invalid hostname for wiki {$this->mMinor}.{$this->mMajor}" );
+ }
+
+ /**
+ * Get the the URL in a way to de displayed to the user
+ * More or less Wikimedia specific
+ *
+ * @return String
+ */
+ public function getDisplayName() {
+ $url = $this->getUrl( '' );
+ $url = preg_replace( '!^https?://!', '', $url );
+ $url = preg_replace( '!/index\.php(\?title=|/)$!', '/', $url );
+ $url = preg_replace( '!/wiki/$!', '/', $url );
+ $url = preg_replace( '!/$!', '', $url );
+ return $url;
+ }
+
+ /**
+ * Helper function for getUrl()
+ *
+ * @todo FIXME: this may be generalized...
+ * @param $page String: page name (must be normalised before calling this function!)
+ * @return String: Url fragment
+ */
+ private function getLocalUrl( $page ) {
+ return str_replace( '$1', wfUrlEncode( str_replace( ' ', '_', $page ) ), $this->mPath );
+ }
+
+ /**
+ * Get a URL to a page on this foreign wiki
+ *
+ * @param $page String: page name (must be normalised before calling this function!)
+ * @return String: Url
+ */
+ public function getUrl( $page ) {
+ return
+ $this->mServer .
+ $this->getLocalUrl( $page );
+ }
+}
diff --git a/includes/Xml.php b/includes/Xml.php
index bbe0717c..464b142c 100644
--- a/includes/Xml.php
+++ b/includes/Xml.php
@@ -56,7 +56,7 @@ class Xml {
/**
* Format an XML element as with self::element(), but run text through the
- * UtfNormal::cleanUp() validator first to ensure that no invalid UTF-8
+ * $wgContLang->normalize() validator first to ensure that no invalid UTF-8
* is passed.
*
* @param $element String:
@@ -65,12 +65,13 @@ class Xml {
* @return string
*/
public static function elementClean( $element, $attribs = array(), $contents = '') {
+ global $wgContLang;
if( $attribs ) {
$attribs = array_map( array( 'UtfNormal', 'cleanUp' ), $attribs );
}
if( $contents ) {
wfProfileIn( __METHOD__ . '-norm' );
- $contents = UtfNormal::cleanUp( $contents );
+ $contents = $wgContLang->normalize( $contents );
wfProfileOut( __METHOD__ . '-norm' );
}
return self::element( $element, $attribs, $contents );
@@ -162,12 +163,12 @@ class Xml {
public static function monthSelector( $selected = '', $allmonths = null, $id = 'month' ) {
global $wgLang;
$options = array();
- if( is_null( $selected ) )
+ if( is_null( $selected ) )
$selected = '';
- if( !is_null( $allmonths ) )
+ if( !is_null( $allmonths ) )
$options[] = self::option( wfMsg( 'monthsall' ), $allmonths, $selected === $allmonths );
for( $i = 1; $i < 13; $i++ )
- $options[] = self::option( $wgLang->getMonthName( $i ), $i, $selected === $i );
+ $options[] = self::option( $wgLang->getMonthName( $i ), $i, $selected === $i );
return self::openElement( 'select', array( 'id' => $id, 'name' => 'month', 'class' => 'mw-month-selector' ) )
. implode( "\n", $options )
. self::closeElement( 'select' );
@@ -394,21 +395,14 @@ class Xml {
* @return string HTML
*/
public static function submitButton( $value, $attribs=array() ) {
- return self::element( 'input', array( 'type' => 'submit', 'value' => $value ) + $attribs );
+ return Html::element( 'input', array( 'type' => 'submit', 'value' => $value ) + $attribs );
}
/**
- * Convenience function to build an HTML hidden form field.
- * @param $name String: name attribute for the field
- * @param $value String: value for the hidden field
- * @param $attribs Array: optional custom attributes
- * @return string HTML
+ * @deprecated Synonymous to Html::hidden()
*/
- public static function hidden( $name, $value, $attribs=array() ) {
- return self::element( 'input', array(
- 'name' => $name,
- 'type' => 'hidden',
- 'value' => $value ) + $attribs );
+ public static function hidden( $name, $value, $attribs = array() ) {
+ return Html::hidden( $name, $value, $attribs );
}
/**
@@ -574,7 +568,10 @@ class Xml {
$s = 'null';
} elseif ( is_int( $value ) ) {
$s = $value;
- } elseif ( is_array( $value ) ) {
+ } elseif ( is_array( $value ) && // Make sure it's not associative.
+ array_keys($value) === range( 0, count($value) - 1 ) ||
+ count($value) == 0
+ ) {
$s = '[';
foreach ( $value as $elt ) {
if ( $s != '[' ) {
@@ -583,7 +580,8 @@ class Xml {
$s .= self::encodeJsVar( $elt );
}
$s .= ']';
- } elseif ( is_object( $value ) ) {
+ } elseif ( is_object( $value ) || is_array( $value ) ) {
+ // Objects and associative arrays
$s = '{';
foreach ( (array)$value as $name => $elt ) {
if ( $s != '{' ) {
@@ -692,9 +690,9 @@ class Xml {
/**
* Build a table of data
- * @param array $rows An array of arrays of strings, each to be a row in a table
- * @param array $attribs Attributes to apply to the table tag [optional]
- * @param array $headers An array of strings to use as table headers [optional]
+ * @param $rows An array of arrays of strings, each to be a row in a table
+ * @param $attribs An array of attributes to apply to the table tag [optional]
+ * @param $headers An array of strings to use as table headers [optional]
* @return string
*/
public static function buildTable( $rows, $attribs = array(), $headers = null ) {
@@ -717,7 +715,8 @@ class Xml {
/**
* Build a row for a table
- * @param array $cells An array of strings to put in <td>
+ * @param $attribs An array of attributes to apply to the tr tag
+ * @param $cells An array of strings to put in <td>
* @return string
*/
public static function buildTableRow( $attribs, $cells ) {
@@ -751,11 +750,43 @@ class XmlSelect {
$this->attributes[$name] = $value;
}
+ public function getAttribute( $name ) {
+ if ( isset($this->attributes[$name]) ) {
+ return $this->attributes[$name];
+ } else {
+ return null;
+ }
+ }
+
public function addOption( $name, $value = false ) {
// Stab stab stab
$value = ($value !== false) ? $value : $name;
$this->options[] = Xml::option( $name, $value, $value === $this->default );
}
+
+ // This accepts an array of form
+ // label => value
+ // label => ( label => value, label => value )
+ public function addOptions( $options ) {
+ $this->options[] = trim(self::formatOptions( $options, $this->default ));
+ }
+
+ // This accepts an array of form
+ // label => value
+ // label => ( label => value, label => value )
+ static function formatOptions( $options, $default = false ) {
+ $data = '';
+ foreach( $options as $label => $value ) {
+ if ( is_array( $value ) ) {
+ $contents = self::formatOptions( $value, $default );
+ $data .= Xml::tags( 'optgroup', array( 'label' => $label ), $contents ) . "\n";
+ } else {
+ $data .= Xml::option( $label, $value, $value === $default ) . "\n";
+ }
+ }
+
+ return $data;
+ }
public function getHTML() {
return Xml::tags( 'select', $this->attributes, implode( "\n", $this->options ) );
diff --git a/includes/ZhConversion.php b/includes/ZhConversion.php
index d7655df0..400cdd2e 100644
--- a/includes/ZhConversion.php
+++ b/includes/ZhConversion.php
@@ -109,6 +109,7 @@ $zh2Hant = array(
'买' => '買',
'乱' => '亂',
'争' => '爭',
+'于' => '於',
'亏' => '虧',
'云' => '雲',
'亚' => '亞',
@@ -243,6 +244,7 @@ $zh2Hant = array(
'卤' => '鹵',
'卫' => '衛',
'却' => '卻',
+'卺' => '巹',
'厂' => '廠',
'厅' => '廳',
'历' => '歷',
@@ -481,6 +483,7 @@ $zh2Hant = array(
'帻' => '幘',
'帼' => '幗',
'幂' => '冪',
+'幞' => '襆',
'并' => '並',
'广' => '廣',
'庆' => '慶',
@@ -1246,6 +1249,7 @@ $zh2Hant = array(
'罴' => '羆',
'羁' => '羈',
'羟' => '羥',
+'羡' => '羨',
'翘' => '翹',
'耢' => '耮',
'耧' => '耬',
@@ -1314,7 +1318,7 @@ $zh2Hant = array(
'苍' => '蒼',
'苎' => '苧',
'苏' => '蘇',
-'苧' => '苎',
+'苧' => '薴',
'苹' => '蘋',
'茎' => '莖',
'茏' => '蘢',
@@ -1413,6 +1417,7 @@ $zh2Hant = array(
'蝇' => '蠅',
'蝈' => '蟈',
'蝉' => '蟬',
+'蝎' => '蠍',
'蝼' => '螻',
'蝾' => '蠑',
'螀' => '螿',
@@ -1710,6 +1715,7 @@ $zh2Hant = array(
'躏' => '躪',
'躜' => '躦',
'躯' => '軀',
+'軿' => '𫚒',
'车' => '車',
'轧' => '軋',
'轨' => '軌',
@@ -1816,6 +1822,7 @@ $zh2Hant = array(
'鉴' => '鑒',
'銮' => '鑾',
'錾' => '鏨',
+'鎭' => '鎮',
'钅' => '釒',
'钆' => '釓',
'钇' => '釔',
@@ -2143,6 +2150,7 @@ $zh2Hant = array(
'鞑' => '韃',
'鞒' => '鞽',
'鞯' => '韉',
+'鞲' => '韝',
'韦' => '韋',
'韧' => '韌',
'韨' => '韍',
@@ -2517,6 +2525,7 @@ $zh2Hant = array(
'鹫' => '鷲',
'鹬' => '鷸',
'鹭' => '鷺',
+'鹮' => '䴉',
'鹯' => '鸇',
'鹰' => '鷹',
'鹱' => '鸌',
@@ -2536,6 +2545,7 @@ $zh2Hant = array(
'鼍' => '鼉',
'鼗' => '鞀',
'鼹' => '鼴',
+'齄' => '齇',
'齐' => '齊',
'齑' => '齏',
'齿' => '齒',
@@ -2556,6 +2566,7 @@ $zh2Hant = array(
'龚' => '龔',
'龛' => '龕',
'龟' => '龜',
+'' => '棡',
'𠮶' => '嗰',
'𡒄' => '壈',
'𦈖' => '䌈',
@@ -2687,29 +2698,87 @@ $zh2Hant = array(
'𪎌' => '麳',
'𪚏' => '𪘀',
'𪚐' => '𪘯',
-'' => '棡',
+'𪞝' => '凙',
+'𪡏' => '嗹',
+'𪢮' => '圞',
+'𪨊' => '㞞',
+'𪨗' => '屩',
+'𪻐' => '瑽',
+'𪾢' => '睍',
+'𫁡' => '鴗',
+'𫂈' => '䉬',
+'𫄨' => '絺',
+'𫄸' => '纁',
+'𫌀' => '襀',
+'𫌨' => '覼',
+'𫍙' => '訑',
+'𫍟' => '𧦧',
+'𫍢' => '譊',
+'𫍰' => '諰',
+'𫍲' => '謏',
+'𫏋' => '蹻',
+'𫐄' => '軏',
+'𫐆' => '轣',
+'𫐉' => '軨',
+'𫐐' => '輗',
+'𫐓' => '輮',
+'𫓧' => '鈇',
+'𫓩' => '鏦',
+'𫔎' => '鐍',
+'𫗠' => '餦',
+'𫗦' => '餔',
+'𫗧' => '餗',
+'𫗮' => '餭',
+'𫗴' => '饘',
+'𫘝' => '駃',
+'𫘣' => '駻',
+'𫘤' => '騃',
+'𫘨' => '騠',
+'𫚈' => '鱮',
+'𫚉' => '魟',
+'𫚒' => '鮄',
+'𫚔' => '鮰',
+'𫚕' => '鰤',
+'𫚙' => '鯆',
+'𫛛' => '鳷',
+'𫛞' => '鴃',
+'𫛢' => '鸋',
+'𫛶' => '鶒',
+'𫛸' => '鶗',
'0多只' => '0多隻',
'0天后' => '0天後',
'0只' => '0隻',
'0余' => '0餘',
'1天后' => '1天後',
'1只' => '1隻',
+'1余' => '1餘',
'2天后' => '2天後',
'2只' => '2隻',
+'2余' => '2餘',
'3天后' => '3天後',
'3只' => '3隻',
+'3余' => '3餘',
'4天后' => '4天後',
'4只' => '4隻',
+'4余' => '4餘',
'5天后' => '5天後',
'5只' => '5隻',
+'5余' => '5餘',
'6天后' => '6天後',
'6只' => '6隻',
+'6余' => '6餘',
'7天后' => '7天後',
'7只' => '7隻',
+'7余' => '7餘',
'8天后' => '8天後',
'8只' => '8隻',
+'8余' => '8餘',
'9天后' => '9天後',
'9只' => '9隻',
+'9余' => '9餘',
+'·范' => '·范',
+'、克制' => '、剋制',
+'。克制' => '。剋制',
'〇只' => '〇隻',
'〇余' => '〇餘',
'一干二净' => '一乾二淨',
@@ -2717,15 +2786,22 @@ $zh2Hant = array(
'一伙头' => '一伙頭',
'一伙食' => '一伙食',
'一并' => '一併',
+'一个' => '一個',
'一个准' => '一個準',
+'一出刊' => '一出刊',
+'一出口' => '一出口',
+'一出版' => '一出版',
+'一出生' => '一出生',
+'一出祁山' => '一出祁山',
+'一出逃' => '一出逃',
'一前一后' => '一前一後',
'一划' => '一劃',
'一半只' => '一半只',
-'一口钟' => '一口鐘',
'一吊钱' => '一吊錢',
'一地里' => '一地裡',
'一伙' => '一夥',
'一天后' => '一天後',
+'一天钟' => '一天鐘',
'一干人' => '一干人',
'一干家中' => '一干家中',
'一干弟兄' => '一干弟兄',
@@ -2744,17 +2820,33 @@ $zh2Hant = array(
'一锅面' => '一鍋麵',
'一只' => '一隻',
'一面食' => '一面食',
+'一余' => '一餘',
'一发千钧' => '一髮千鈞',
'一哄而散' => '一鬨而散',
'丁丁当当' => '丁丁當當',
'丁丑' => '丁丑',
+'七个' => '七個',
+'七出刊' => '七出刊',
+'七出口' => '七出口',
+'七出版' => '七出版',
+'七出生' => '七出生',
+'七出祁山' => '七出祁山',
+'七出逃' => '七出逃',
'七划' => '七劃',
'七天后' => '七天後',
'七情六欲' => '七情六慾',
'七扎' => '七紮',
'七只' => '七隻',
+'七余' => '七餘',
'万俟' => '万俟',
'万旗' => '万旗',
+'三个' => '三個',
+'三出刊' => '三出刊',
+'三出口' => '三出口',
+'三出版' => '三出版',
+'三出生' => '三出生',
+'三出祁山' => '三出祁山',
+'三出逃' => '三出逃',
'三天后' => '三天後',
'三征七辟' => '三徵七辟',
'三准' => '三準',
@@ -2764,8 +2856,6 @@ $zh2Hant = array(
'三复' => '三複',
'三只' => '三隻',
'三余' => '三餘',
-'上吊自杀' => '上吊自殺',
-'上吊' => '上弔',
'上梁山' => '上梁山',
'上梁' => '上樑',
'上签名' => '上簽名',
@@ -2774,13 +2864,19 @@ $zh2Hant = array(
'上签收' => '上簽收',
'上签' => '上籤',
'上药' => '上藥',
+'上课钟' => '上課鐘',
'上面糊' => '上面糊',
'下仑路' => '下崙路',
'下于' => '下於',
'下梁' => '下樑',
'下注解' => '下注解',
+'下签名' => '下簽名',
+'下签字' => '下簽字',
+'下签写' => '下簽寫',
+'下签收' => '下簽收',
'下签' => '下籤',
'下药' => '下藥',
+'下课钟' => '下課鐘',
'不干不净' => '不乾不淨',
'不占' => '不佔',
'不克自制' => '不克自制',
@@ -2793,6 +2889,7 @@ $zh2Hant = array(
'不准翻印' => '不准翻印',
'不准许' => '不准許',
'不准谁' => '不准誰',
+'不克制' => '不剋制',
'不前不后' => '不前不後',
'不加自制' => '不加自制',
'不占凶吉' => '不占凶吉',
@@ -2848,18 +2945,25 @@ $zh2Hant = array(
'且于' => '且於',
'世田谷' => '世田谷',
'世界杯' => '世界盃',
+'世界里' => '世界裡',
+'世纪钟' => '世紀鐘',
+'世纪钟表' => '世紀鐘錶',
'丢丑' => '丟醜',
'并不准' => '並不准',
'并存着' => '並存著',
-'并于' => '並於',
+'并曰入淀' => '並曰入澱',
'并发动' => '並發動',
'并发展' => '並發展',
'并发现' => '並發現',
'并发表' => '並發表',
'中国国际信托投资公司' => '中國國際信托投資公司',
-'中国烟草总公司' => '中國烟草總公司',
+'中型钟' => '中型鐘',
+'中型钟表面' => '中型鐘表面',
+'中型钟表' => '中型鐘錶',
+'中型钟面' => '中型鐘面',
'中仑' => '中崙',
'中岳' => '中嶽',
+'中文里' => '中文裡',
'中于' => '中於',
'中签' => '中籤',
'中美发表' => '中美發表',
@@ -2873,8 +2977,8 @@ $zh2Hant = array(
'丰度' => '丰度',
'丰情' => '丰情',
'丰标' => '丰標',
-'丰标不凡' => '丰標不凡',
'丰標不凡' => '丰標不凡',
+'丰标不凡' => '丰標不凡',
'丰神' => '丰神',
'丰茸' => '丰茸',
'丰采' => '丰采',
@@ -2884,22 +2988,34 @@ $zh2Hant = array(
'丹药' => '丹藥',
'主仆' => '主僕',
'主干' => '主幹',
+'主钟差' => '主鐘差',
+'主钟曲线' => '主鐘曲線',
'么么小丑' => '么麼小丑',
'之一只' => '之一只',
'之二只' => '之二只',
'之八九只' => '之八九只',
'之后' => '之後',
'之征' => '之徵',
-'之于' => '之於',
'之托' => '之託',
+'之钟' => '之鐘',
'之余' => '之餘',
'乙丑' => '乙丑',
'九世之仇' => '九世之讎',
+'九个' => '九個',
+'九出刊' => '九出刊',
+'九出口' => '九出口',
+'九出版' => '九出版',
+'九出生' => '九出生',
+'九出祁山' => '九出祁山',
+'九出逃' => '九出逃',
'九划' => '九劃',
'九天后' => '九天後',
'九谷' => '九穀',
'九扎' => '九紮',
'九只' => '九隻',
+'九余' => '九餘',
+'九龙表行' => '九龍表行',
+'也克制' => '也剋制',
'也斗了胆' => '也斗了膽',
'干干' => '乾乾',
'干干儿的' => '乾乾兒的',
@@ -3040,6 +3156,7 @@ $zh2Hant = array(
'干酪' => '乾酪',
'干酵母' => '乾酵母',
'干醋' => '乾醋',
+'干重' => '乾重',
'干量' => '乾量',
'干阿奶' => '乾阿奶',
'干隆' => '乾隆',
@@ -3058,12 +3175,20 @@ $zh2Hant = array(
'乱发' => '亂髮',
'乱哄' => '亂鬨',
'乱哄不过来' => '亂鬨不過來',
+'了克制' => '了剋制',
'事后' => '事後',
'事情干脆' => '事情干脆',
'事有斗巧' => '事有鬥巧',
'事迹' => '事迹',
'事都干脆' => '事都干脆',
'二不棱登' => '二不稜登',
+'二个' => '二個',
+'二出刊' => '二出刊',
+'二出口' => '二出口',
+'二出版' => '二出版',
+'二出生' => '二出生',
+'二出祁山' => '二出祁山',
+'二出逃' => '二出逃',
'二划' => '二劃',
'二只得' => '二只得',
'二天后' => '二天後',
@@ -3074,14 +3199,181 @@ $zh2Hant = array(
'二里头' => '二里頭',
'二里頭' => '二里頭',
'二只' => '二隻',
+'二余' => '二餘',
+'于丹' => '于丹',
+'于于' => '于于',
+'于仁泰' => '于仁泰',
+'于佳卉' => '于佳卉',
+'于伟国' => '于偉國',
+'于偉國' => '于偉國',
+'于光远' => '于光遠',
+'于光遠' => '于光遠',
+'于克-蘭多縣' => '于克-蘭多縣',
+'于克-兰多县' => '于克-蘭多縣',
+'于克勒' => '于克勒',
+'于冕' => '于冕',
+'于凌奎' => '于凌奎',
+'于勒' => '于勒',
+'于化虎' => '于化虎',
+'于占元' => '于占元',
+'于台煙' => '于台煙',
+'于台烟' => '于台煙',
+'于右任' => '于右任',
+'于吉' => '于吉',
+'于品海' => '于品海',
+'于国桢' => '于國楨',
+'于國楨' => '于國楨',
+'于坚' => '于堅',
+'于堅' => '于堅',
+'于大寶' => '于大寶',
+'于大宝' => '于大寶',
+'于天仁' => '于天仁',
+'于奇库杜克' => '于奇庫杜克',
+'于奇庫杜克' => '于奇庫杜克',
+'于姓' => '于姓',
+'于娜' => '于娜',
+'于娟' => '于娟',
+'于子千' => '于子千',
+'于孔兼' => '于孔兼',
+'于學忠' => '于學忠',
+'于学忠' => '于學忠',
+'于家堡' => '于家堡',
+'于寘' => '于寘',
+'于小伟' => '于小偉',
+'于小偉' => '于小偉',
+'于小彤' => '于小彤',
+'于山' => '于山',
+'于山国' => '于山國',
+'于山國' => '于山國',
+'于帥' => '于帥',
+'于帅' => '于帥',
+'于幼軍' => '于幼軍',
+'于幼军' => '于幼軍',
+'于康震' => '于康震',
+'于廣洲' => '于廣洲',
+'于广洲' => '于廣洲',
+'于式枚' => '于式枚',
+'于從濂' => '于從濂',
+'于从濂' => '于從濂',
+'于德海' => '于德海',
+'于志宁' => '于志寧',
+'于志寧' => '于志寧',
+'于思' => '于思',
+'于慎行' => '于慎行',
+'于慧' => '于慧',
+'于成龙' => '于成龍',
+'于成龍' => '于成龍',
+'于振' => '于振',
+'于振武' => '于振武',
+'于敏' => '于敏',
+'于敏中' => '于敏中',
+'于斌' => '于斌',
+'于斯塔德' => '于斯塔德',
+'于斯納爾斯貝里' => '于斯納爾斯貝里',
+'于斯纳尔斯贝里' => '于斯納爾斯貝里',
+'于斯达尔' => '于斯達爾',
+'于斯達爾' => '于斯達爾',
+'于明涛' => '于明濤',
+'于明濤' => '于明濤',
+'于是之' => '于是之',
+'于晨楠' => '于晨楠',
+'于晴' => '于晴',
+'于會泳' => '于會泳',
+'于会泳' => '于會泳',
+'于根伟' => '于根偉',
+'于根偉' => '于根偉',
+'于格' => '于格',
+'于樂' => '于樂',
+'于树洁' => '于樹潔',
+'于樹潔' => '于樹潔',
+'于欣源' => '于欣源',
+'于正升' => '于正昇',
+'于正昇' => '于正昇',
+'于正昌' => '于正昌',
+'于归' => '于歸',
+'于永波' => '于永波',
+'于江震' => '于江震',
+'于波' => '于波',
+'于洪区' => '于洪區',
+'于洪區' => '于洪區',
+'于浩威' => '于浩威',
+'于海洋' => '于海洋',
+'于湘兰' => '于湘蘭',
+'于湘蘭' => '于湘蘭',
+'于漢超' => '于漢超',
+'于汉超' => '于漢超',
+'于泽尔' => '于澤爾',
+'于澤爾' => '于澤爾',
+'于涛' => '于濤',
+'于濤' => '于濤',
+'于爾岑' => '于爾岑',
+'于尔岑' => '于爾岑',
+'于尔根' => '于爾根',
+'于爾根' => '于爾根',
+'于尔里克' => '于爾里克',
+'于爾里克' => '于爾里克',
+'于特森' => '于特森',
+'于玉立' => '于玉立',
+'于田' => '于田',
+'于禁' => '于禁',
+'于秀敏' => '于秀敏',
+'于素秋' => '于素秋',
'于美人' => '于美人',
+'于若木' => '于若木',
+'于蔭霖' => '于蔭霖',
+'于荫霖' => '于蔭霖',
+'于衡' => '于衡',
+'于西翰' => '于西翰',
+'于謙' => '于謙',
+'于谦' => '于謙',
+'于貝爾' => '于貝爾',
+'于贝尔' => '于貝爾',
+'于赠' => '于贈',
+'于贈' => '于贈',
+'于越' => '于越',
+'于军' => '于軍',
+'于軍' => '于軍',
+'于道泉' => '于道泉',
+'于远伟' => '于遠偉',
+'于遠偉' => '于遠偉',
+'于都縣' => '于都縣',
+'于都县' => '于都縣',
+'于里察' => '于里察',
+'于阗' => '于闐',
+'于雙戈' => '于雙戈',
+'于双戈' => '于雙戈',
+'于震寰' => '于震寰',
+'于震环' => '于震環',
+'于震環' => '于震環',
+'于靖' => '于靖',
+'于非闇' => '于非闇',
+'于韋斯屈萊' => '于韋斯屈萊',
+'于韦斯屈莱' => '于韋斯屈萊',
+'于风政' => '于風政',
+'于風政' => '于風政',
+'于飞' => '于飛',
+'于余曲折' => '于餘曲折',
+'于凤桐' => '于鳳桐',
+'于鳳桐' => '于鳳桐',
+'于鳳至' => '于鳳至',
+'于凤至' => '于鳳至',
+'于默奥' => '于默奧',
+'于默奧' => '于默奧',
'云乎' => '云乎',
'云云' => '云云',
'云何' => '云何',
'云为' => '云為',
+'云為' => '云為',
'云然' => '云然',
'云尔' => '云爾',
-'互于' => '互於',
+'云:' => '云:',
+'五个' => '五個',
+'五出刊' => '五出刊',
+'五出口' => '五出口',
+'五出版' => '五出版',
+'五出生' => '五出生',
+'五出祁山' => '五出祁山',
+'五出逃' => '五出逃',
'五划' => '五劃',
'五天后' => '五天後',
'五岳' => '五嶽',
@@ -3091,16 +3383,16 @@ $zh2Hant = array(
'五谷王北街' => '五谷王北街',
'五谷王南街' => '五谷王南街',
'五只' => '五隻',
+'五余' => '五餘',
'五出' => '五齣',
'井干摧败' => '井榦摧敗',
'井里' => '井裡',
'亚于' => '亞於',
-'交于' => '交於',
+'亚美尼亚历' => '亞美尼亞曆',
'交托' => '交託',
'交游' => '交遊',
'交哄' => '交鬨',
'亦云' => '亦云',
-'亦于' => '亦於',
'亦庄亦谐' => '亦莊亦諧',
'亮丑' => '亮醜',
'亮钟' => '亮鐘',
@@ -3124,7 +3416,6 @@ $zh2Hant = array(
'人参选' => '人參選',
'人参酌' => '人參酌',
'人参阅' => '人參閱',
-'人口分布' => '人口分布',
'人后' => '人後',
'人欲' => '人慾',
'人物志' => '人物誌',
@@ -3133,18 +3424,25 @@ $zh2Hant = array(
'什么' => '什麼',
'仇仇' => '仇讎',
'今后' => '今後',
-'介于' => '介於',
+'他克制' => '他剋制',
+'他钟' => '他鐘',
'付托' => '付託',
'仙后座' => '仙后座',
'仙药' => '仙藥',
+'代码表' => '代碼表',
'令人发指' => '令人髮指',
'以后' => '以後',
'以自制' => '以自制',
'仰药' => '仰藥',
+'件钟' => '件鐘',
+'任何表' => '任何錶',
+'任何钟' => '任何鐘',
+'任何钟表' => '任何鐘錶',
'任教于' => '任教於',
'任于' => '任於',
'仿制' => '仿製',
'企划' => '企劃',
+'伊于湖底' => '伊于湖底',
'伊府面' => '伊府麵',
'伊斯兰教历' => '伊斯蘭教曆',
'伊斯兰教历史' => '伊斯蘭教歷史',
@@ -3160,9 +3458,17 @@ $zh2Hant = array(
'但云' => '但云',
'布于' => '佈於',
'布道' => '佈道',
+'布雷、' => '佈雷、',
+'布雷。' => '佈雷。',
+'布雷封锁' => '佈雷封鎖',
+'布雷的' => '佈雷的',
+'布雷艇' => '佈雷艇',
+'布雷舰' => '佈雷艦',
+'布雷速度' => '佈雷速度',
+'布雷,' => '佈雷,',
+'布雷;' => '佈雷;',
'位于' => '位於',
'位准' => '位準',
-'低于' => '低於',
'低洼' => '低洼',
'住扎' => '住紮',
'占0' => '佔0',
@@ -3336,6 +3642,7 @@ $zh2Hant = array(
'占过' => '佔過',
'占道' => '佔道',
'占零' => '佔零',
+'占領' => '佔領',
'占领' => '佔領',
'占头' => '佔頭',
'占头筹' => '佔頭籌',
@@ -3408,9 +3715,12 @@ $zh2Hant = array(
'余光中' => '余光中',
'余光生' => '余光生',
'佛罗棱萨' => '佛羅稜薩',
+'佛钟' => '佛鐘',
+'作品里' => '作品裡',
'作奸犯科' => '作姦犯科',
'作准' => '作準',
'作庄' => '作莊',
+'你克制' => '你剋制',
'你斗了胆' => '你斗了膽',
'你才子发昏' => '你纔子發昏',
'佣金收益' => '佣金收益',
@@ -3427,7 +3737,8 @@ $zh2Hant = array(
'并案' => '併案',
'并流' => '併流',
'并火' => '併火',
-'并为' => '併為',
+'并为一家' => '併為一家',
+'并为一体' => '併為一體',
'并产' => '併產',
'并当' => '併當',
'并叠' => '併疊',
@@ -3439,6 +3750,7 @@ $zh2Hant = array(
'并购' => '併購',
'并除' => '併除',
'并骨' => '併骨',
+'使其斗' => '使其鬥',
'来于' => '來於',
'来复' => '來複',
'侍仆' => '侍僕',
@@ -3449,7 +3761,6 @@ $zh2Hant = array(
'侵并' => '侵併',
'侵占到' => '侵占到',
'侵占罪' => '侵占罪',
-'便于' => '便於',
'便药' => '便藥',
'系数' => '係數',
'系为' => '係為',
@@ -3458,10 +3769,15 @@ $zh2Hant = array(
'信托贸易' => '信托貿易',
'信托' => '信託',
'修改后' => '修改後',
+'修杰楷' => '修杰楷',
'修炼' => '修鍊',
'修胡刀' => '修鬍刀',
'俯冲' => '俯衝',
+'个人' => '個人',
'个里' => '個裡',
+'个钟' => '個鐘',
+'个钟表' => '個鐘錶',
+'们克制' => '們剋制',
'们斗了胆' => '們斗了膽',
'倒绷孩儿' => '倒繃孩兒',
'幸免' => '倖免',
@@ -3475,7 +3791,6 @@ $zh2Hant = array(
'假发' => '假髮',
'偎干' => '偎乾',
'偏后' => '偏後',
-'偏于' => '偏於',
'做庄' => '做莊',
'停停当当' => '停停當當',
'停征' => '停徵',
@@ -3500,7 +3815,6 @@ $zh2Hant = array(
'传于' => '傳於',
'伤痕累累' => '傷痕纍纍',
'傻里傻气' => '傻裡傻氣',
-'倾向于' => '傾向於',
'倾复' => '傾複',
'仆人' => '僕人',
'仆使' => '僕使',
@@ -3530,9 +3844,11 @@ $zh2Hant = array(
'雇农' => '僱農',
'仪范' => '儀範',
'仪表' => '儀錶',
+'亿个' => '億個',
'亿多只' => '億多隻',
'亿天后' => '億天後',
'亿只' => '億隻',
+'亿余' => '億餘',
'俭仆' => '儉僕',
'俭朴' => '儉樸',
'俭确之教' => '儉确之教',
@@ -3555,6 +3871,8 @@ $zh2Hant = array(
'兀术' => '兀朮',
'元凶' => '元兇',
'充饥' => '充饑',
+'兆个' => '兆個',
+'兆余' => '兆餘',
'凶刀' => '兇刀',
'凶器' => '兇器',
'凶嫌' => '兇嫌',
@@ -3581,7 +3899,6 @@ $zh2Hant = array(
'先忧后乐' => '先憂後樂',
'先采' => '先採',
'先攻后守' => '先攻後守',
-'先于' => '先於',
'先盛后衰' => '先盛後衰',
'先礼后兵' => '先禮後兵',
'先义后利' => '先義後利',
@@ -3591,37 +3908,46 @@ $zh2Hant = array(
'先进后出' => '先進後出',
'先开花后结果' => '先開花後結果',
'光前裕后' => '光前裕後',
-'光采' => '光採',
'光致致' => '光緻緻',
'克药' => '克藥',
'克复' => '克複',
-'免于' => '免於',
+'免征' => '免徵',
'党参' => '党參',
'党太尉' => '党太尉',
'党怀英' => '党懷英',
'党进' => '党進',
'党项' => '党項',
'入夜后' => '入夜後',
-'入伙' => '入夥',
-'内心里' => '內心裡',
'内制' => '內製',
'内面包' => '內面包',
'内面包的' => '內面包的',
'内斗' => '內鬥',
'内哄' => '內鬨',
'全干' => '全乾',
+'全面包围' => '全面包圍',
+'全面包裹' => '全面包裹',
+'两个' => '兩個',
'两天后' => '兩天後',
'两天晒网' => '兩天晒網',
'两扎' => '兩紮',
'两虎共斗' => '兩虎共鬥',
'两只' => '兩隻',
+'两余' => '兩餘',
'两鼠斗穴' => '兩鼠鬥穴',
+'八个' => '八個',
+'八出刊' => '八出刊',
+'八出口' => '八出口',
+'八出版' => '八出版',
+'八出生' => '八出生',
+'八出祁山' => '八出祁山',
+'八出逃' => '八出逃',
'八大胡同' => '八大胡同',
'八天后' => '八天後',
'八字胡' => '八字鬍',
'八扎' => '八紮',
'八蜡' => '八蜡',
'八只' => '八隻',
+'八余' => '八餘',
'公仔面' => '公仔麵',
'公仆' => '公僕',
'公元后' => '公元後',
@@ -3631,13 +3957,23 @@ $zh2Hant = array(
'公历史' => '公歷史',
'公厘' => '公釐',
'公余' => '公餘',
+'六个' => '六個',
+'六出刊' => '六出刊',
+'六出口' => '六出口',
+'六出版' => '六出版',
+'六出生' => '六出生',
+'六出祁山' => '六出祁山',
+'六出逃' => '六出逃',
'六划' => '六劃',
'六天后' => '六天後',
'六谷' => '六穀',
'六扎' => '六紮',
'六冲' => '六衝',
'六只' => '六隻',
+'六余' => '六餘',
'六出' => '六齣',
+'共和历' => '共和曆',
+'共和历史' => '共和歷史',
'其一只' => '其一只',
'其二只' => '其二只',
'其八九只' => '其八九只',
@@ -3647,14 +3983,14 @@ $zh2Hant = array(
'典范' => '典範',
'兼并' => '兼并',
'冉有仆' => '冉有僕',
-'再于' => '再於',
'冗余' => '冗餘',
'冤仇' => '冤讎',
'冥蒙' => '冥濛',
+'冬天里' => '冬天裡',
'冬山庄' => '冬山庄',
+'冬日里' => '冬日裡',
'冬游' => '冬遊',
'冶游' => '冶遊',
-'冶炼' => '冶鍊',
'冷庄子' => '冷莊子',
'冷面相' => '冷面相',
'冷面' => '冷麵',
@@ -3682,7 +4018,6 @@ $zh2Hant = array(
'几筵' => '几筵',
'几丝' => '几絲',
'几面上' => '几面上',
-'凡于' => '凡於',
'凶杀案' => '凶殺案',
'凶相毕露' => '凶相畢露',
'凹洞里' => '凹洞裡',
@@ -3694,12 +4029,14 @@ $zh2Hant = array(
'出游' => '出遊',
'出丑' => '出醜',
'出锤' => '出鎚',
-'分布' => '分佈',
-'分布于' => '分佈於',
'分占' => '分佔',
-'分布区' => '分布區',
-'分布图' => '分布圖',
+'分别致' => '分别致',
+'分半钟' => '分半鐘',
+'分多钟' => '分多鐘',
+'分子钟' => '分子鐘',
'分布圖' => '分布圖',
+'分布图' => '分布圖',
+'分布于' => '分布於',
'分散于' => '分散於',
'分钟' => '分鐘',
'刑余' => '刑餘',
@@ -3712,8 +4049,8 @@ $zh2Hant = array(
'划着' => '划著',
'划着走' => '划著走',
'划龙舟' => '划龍舟',
+'判断发' => '判斷發',
'别后' => '別後',
-'别于' => '別於',
'别日南鸿才北去' => '別日南鴻纔北去',
'别致' => '別緻',
'别庄' => '別莊',
@@ -3728,19 +4065,23 @@ $zh2Hant = array(
'刮着' => '刮著',
'刮起来' => '刮起來',
'刮风下雪倒便宜' => '刮風下雪倒便宜',
-'刮胡刀' => '刮鬍刀',
+'刮胡' => '刮鬍',
'制冷机' => '制冷機',
'制签' => '制籤',
+'制钟' => '制鐘',
'刺绣' => '刺繡',
'刻划' => '刻劃',
-'刻于' => '刻於',
+'刻半钟' => '刻半鐘',
+'刻多钟' => '刻多鐘',
'刻钟' => '刻鐘',
'剃发' => '剃髮',
+'剃胡' => '剃鬍',
'剃须' => '剃鬚',
'削发' => '削髮',
'削面' => '削麵',
+'克制不了' => '剋制不了',
+'克制不住' => '剋制不住',
'克扣' => '剋扣',
-'克日' => '剋日',
'克星' => '剋星',
'克期' => '剋期',
'克死' => '剋死',
@@ -3762,6 +4103,7 @@ $zh2Hant = array(
'刚才一载' => '剛纔一載',
'剥制' => '剝製',
'剩余' => '剩餘',
+'剪其发' => '剪其髮',
'剪牡丹喂牛' => '剪牡丹喂牛',
'剪彩' => '剪綵',
'剪发' => '剪髮',
@@ -3794,6 +4136,7 @@ $zh2Hant = array(
'划归' => '劃歸',
'划法' => '劃法',
'划清' => '劃清',
+'划为' => '劃為',
'划界' => '劃界',
'划破' => '劃破',
'划线' => '劃線',
@@ -3802,11 +4145,12 @@ $zh2Hant = array(
'划开' => '劃開',
'剧药' => '劇藥',
'刘克庄' => '劉克莊',
+'力克制' => '力剋制',
'力拼' => '力拚',
'力拼众敌' => '力拼眾敵',
+'力求克制' => '力求剋制',
'力争上游' => '力爭上遊',
'功致' => '功緻',
-'加于' => '加於',
'加氢精制' => '加氫精制',
'加药' => '加藥',
'加注' => '加註',
@@ -3815,7 +4159,6 @@ $zh2Hant = array(
'劫后余生' => '劫後餘生',
'劫余' => '劫餘',
'勃郁' => '勃鬱',
-'勇于' => '勇於',
'动荡' => '動蕩',
'胜于' => '勝於',
'劳力士表' => '勞力士錶',
@@ -3826,6 +4169,7 @@ $zh2Hant = array(
'勾干' => '勾幹',
'勾心斗角' => '勾心鬥角',
'勾魂荡魄' => '勾魂蕩魄',
+'包括' => '包括',
'包准' => '包準',
'包谷' => '包穀',
'包扎' => '包紮',
@@ -3838,12 +4182,21 @@ $zh2Hant = array(
'匪干' => '匪幹',
'匿于' => '匿於',
'区划' => '區劃',
+'十个' => '十個',
+'十出刊' => '十出刊',
+'十出口' => '十出口',
+'十出版' => '十出版',
+'十出生' => '十出生',
+'十出祁山' => '十出祁山',
+'十出逃' => '十出逃',
'十划' => '十劃',
'十多只' => '十多隻',
'十天后' => '十天後',
'十扎' => '十紮',
'十只' => '十隻',
+'十余' => '十餘',
'十出' => '十齣',
+'千个' => '千個',
'千只可' => '千只可',
'千只够' => '千只夠',
'千只怕' => '千只怕',
@@ -3857,6 +4210,7 @@ $zh2Hant = array(
'千回百转' => '千迴百轉',
'千钧一发' => '千鈞一髮',
'千只' => '千隻',
+'千余' => '千餘',
'升官发财' => '升官發財',
'午后' => '午後',
'半制品' => '半制品',
@@ -3864,7 +4218,10 @@ $zh2Hant = array(
'半只够' => '半只夠',
'半于' => '半於',
'半只' => '半隻',
+'南京钟' => '南京鐘',
+'南京钟表' => '南京鐘錶',
'南宫适' => '南宮适',
+'南屏晚钟' => '南屏晚鐘',
'南岳' => '南嶽',
'南筑' => '南筑',
'南回线' => '南迴線',
@@ -3888,32 +4245,25 @@ $zh2Hant = array(
'厂部' => '厂部',
'厝薪于火' => '厝薪於火',
'原子钟' => '原子鐘',
-'原于' => '原於',
+'原钟' => '原鐘',
'历物之意' => '厤物之意',
'厥后' => '厥後',
-'参与' => '參与',
-'参与者' => '參与者',
'参合' => '參合',
'参考价值' => '參考價值',
+'参与' => '參與',
'参与人员' => '參與人員',
'参与制' => '參與制',
'参与感' => '參與感',
+'参与者' => '參與者',
'参观团' => '參觀團',
'参观团体' => '參觀團體',
'参阅' => '參閱',
-'及于' => '及於',
-'反于' => '反於',
'反朴' => '反樸',
'反冲' => '反衝',
'反复制' => '反複製',
'反复' => '反覆',
'反覆' => '反覆',
-'取信于' => '取信於',
'取舍' => '取捨',
-'取材于' => '取材於',
-'取决于' => '取決於',
-'取法于' => '取法於',
-'受制于' => '受制於',
'受托' => '受託',
'口干' => '口乾',
'口干冒' => '口干冒',
@@ -3924,12 +4274,16 @@ $zh2Hant = array(
'口燥唇干' => '口燥唇乾',
'口腹之欲' => '口腹之慾',
'口里' => '口裡',
+'口钟' => '口鐘',
'古书云' => '古書云',
+'古書云' => '古書云',
'古柯咸' => '古柯鹹',
'古朴' => '古樸',
'古语云' => '古語云',
+'古語云' => '古語云',
'古迹' => '古迹',
-'另于' => '另於',
+'古钟' => '古鐘',
+'古钟表' => '古鐘錶',
'另辟' => '另闢',
'叩钟' => '叩鐘',
'只占' => '只佔',
@@ -3964,16 +4318,24 @@ $zh2Hant = array(
'只采声' => '只采聲',
'叮叮当当' => '叮叮噹噹',
'叮当' => '叮噹',
-'可于' => '可於',
+'可以克制' => '可以剋制',
'可紧可松' => '可緊可鬆',
'可自制' => '可自制',
'台子女' => '台子女',
'台子孙' => '台子孫',
'台布景' => '台布景',
'台后' => '台後',
-'台历' => '台曆',
'台历史' => '台歷史',
+'台钟' => '台鐘',
'台面前' => '台面前',
+'叱咤903' => '叱咤903',
+'叱咤MY903' => '叱咤MY903',
+'叱咤My903' => '叱咤My903',
+'叱咤叱叱咤' => '叱咤叱叱咤',
+'叱咤叱咤叱咤咤' => '叱咤叱咤叱咤咤',
+'叱咤咤' => '叱咤咤',
+'叱咤乐坛' => '叱咤樂壇',
+'叱咤樂壇' => '叱咤樂壇',
'右后' => '右後',
'叶 恭弘' => '叶 恭弘',
'叶 恭弘' => '叶 恭弘',
@@ -3990,12 +4352,12 @@ $zh2Hant = array(
'吃辣面' => '吃辣麵',
'吃错药' => '吃錯藥',
'各辟' => '各闢',
+'各类钟' => '各類鐘',
'合伙人' => '合伙人',
'合并' => '合併',
'合伙' => '合夥',
'合府上' => '合府上',
'合采' => '合採',
-'合于' => '合於',
'合历' => '合曆',
'合历史' => '合歷史',
'合准' => '合準',
@@ -4011,6 +4373,9 @@ $zh2Hant = array(
'吊钟' => '吊鐘',
'同伙' => '同夥',
'同于' => '同於',
+'同余' => '同餘',
+'后丰' => '后豐',
+'后豐' => '后豐',
'后发座' => '后髮座',
'吐哺捉发' => '吐哺捉髮',
'吐哺握发' => '吐哺握髮',
@@ -4020,17 +4385,25 @@ $zh2Hant = array(
'向往时' => '向往時',
'向后' => '向後',
'向着' => '向著',
-'吝于' => '吝於',
'吞并' => '吞併',
'吟游' => '吟遊',
'含齿戴发' => '含齒戴髮',
'吹干' => '吹乾',
'吹发' => '吹髮',
+'吹胡' => '吹鬍',
+'吾为之范我驰驱' => '吾爲之範我馳驅',
'呆呆傻傻' => '呆呆傻傻',
'呆呆挣挣' => '呆呆掙掙',
+'呆呆兽' => '呆呆獸',
'呆呆笨笨' => '呆呆笨笨',
'呆致致' => '呆緻緻',
'呆里呆气' => '呆裡呆氣',
+'周一' => '周一',
+'周三' => '周三',
+'周二' => '周二',
+'周五' => '周五',
+'周六' => '周六',
+'周四' => '周四',
'周历' => '周曆',
'周杰伦' => '周杰倫',
'周杰倫' => '周杰倫',
@@ -4039,8 +4412,10 @@ $zh2Hant = array(
'周游' => '周遊',
'呼吁' => '呼籲',
'命中注定' => '命中注定',
+'和克制' => '和剋制',
'和奸' => '和姦',
'咎征' => '咎徵',
+'咕咕钟' => '咕咕鐘',
'咬姜呷醋' => '咬薑呷醋',
'咯当' => '咯噹',
'咳嗽药' => '咳嗽藥',
@@ -4066,18 +4441,24 @@ $zh2Hant = array(
'善后' => '善後',
'善于' => '善於',
'喜向往' => '喜向往',
+'喜欢表' => '喜歡錶',
+'喜欢钟' => '喜歡鐘',
+'喜欢钟表' => '喜歡鐘錶',
'喝干' => '喝乾',
'喧哄' => '喧鬨',
'丧钟' => '喪鐘',
'乔岳' => '喬嶽',
+'单于' => '單于',
+'单单于' => '單單於',
'单干' => '單幹',
'单打独斗' => '單打獨鬥',
'单只' => '單隻',
'嗑药' => '嗑藥',
'嗣后' => '嗣後',
+'嘀嗒的表' => '嘀嗒的錶',
'嘉谷' => '嘉穀',
'嘉肴' => '嘉肴',
-'嘴里' => '嘴裏',
+'嘴里' => '嘴裡',
'恶心' => '噁心',
'噙齿戴发' => '噙齒戴髮',
'喷洒' => '噴洒',
@@ -4094,7 +4475,14 @@ $zh2Hant = array(
'囉囉苏苏' => '囉囉囌囌',
'囉苏' => '囉囌',
'嘱托' => '囑託',
+'四个' => '四個',
+'四出刊' => '四出刊',
+'四出口' => '四出口',
'四出征收' => '四出徵收',
+'四出版' => '四出版',
+'四出生' => '四出生',
+'四出祁山' => '四出祁山',
+'四出逃' => '四出逃',
'四分历' => '四分曆',
'四分历史' => '四分歷史',
'四天后' => '四天後',
@@ -4102,6 +4490,8 @@ $zh2Hant = array(
'四扎' => '四紮',
'四只' => '四隻',
'四面包' => '四面包',
+'四面钟' => '四面鐘',
+'四余' => '四餘',
'四出' => '四齣',
'回采' => '回採',
'回旋加速' => '回旋加速',
@@ -4114,23 +4504,22 @@ $zh2Hant = array(
'回阳荡气' => '回陽蕩氣',
'因于' => '因於',
'困倦起来' => '困倦起來',
-'困于' => '困於',
'困兽之斗' => '困獸之鬥',
'困兽犹斗' => '困獸猶鬥',
'困斗' => '困鬥',
'固征' => '固徵',
-'固于' => '固於',
'囿于' => '囿於',
'圈占' => '圈佔',
'圈子里' => '圈子裡',
'圈梁' => '圈樑',
'圈里' => '圈裡',
'国之桢干' => '國之楨榦',
-'国家旅游局' => '國家旅游局',
'国于' => '國於',
'国历' => '國曆',
'国历代' => '國歷代',
+'国历任' => '國歷任',
'国历史' => '國歷史',
+'国历届' => '國歷屆',
'国仇' => '國讎',
'园里' => '園裡',
'园游会' => '園遊會',
@@ -4140,13 +4529,16 @@ $zh2Hant = array(
'土制' => '土製',
'土霉素' => '土霉素',
'在制品' => '在制品',
+'在克制' => '在剋制',
'在后' => '在後',
'在于' => '在於',
'地占' => '地佔',
+'地克制' => '地剋制',
'地方志' => '地方志',
'地志' => '地誌',
'地丑德齐' => '地醜德齊',
'坏于' => '坏於',
+'坐如钟' => '坐如鐘',
'坐庄' => '坐莊',
'坐钟' => '坐鐘',
'坑里' => '坑裡',
@@ -4155,16 +4547,21 @@ $zh2Hant = array(
'坦荡荡' => '坦蕩蕩',
'坱郁' => '坱鬱',
'垂于' => '垂於',
+'垂范' => '垂範',
'垂发' => '垂髮',
'型范' => '型範',
'埃及历' => '埃及曆',
'埃及历史' => '埃及歷史',
'埃荣冲' => '埃榮衝',
+'埋头寻表' => '埋頭尋錶',
+'埋头寻钟' => '埋頭尋鐘',
+'埋头寻钟表' => '埋頭尋鐘錶',
'城里' => '城裡',
'基干' => '基幹',
'基于' => '基於',
'基准' => '基準',
'坚致' => '堅緻',
+'堙淀' => '堙澱',
'涂着' => '塗著',
'涂药' => '塗藥',
'塞耳盗钟' => '塞耳盜鐘',
@@ -4187,6 +4584,7 @@ $zh2Hant = array(
'壸范' => '壼範',
'寿面' => '壽麵',
'夏天里' => '夏天裡',
+'夏日里' => '夏日裡',
'夏历' => '夏曆',
'夏历史' => '夏歷史',
'夏游' => '夏遊',
@@ -4195,7 +4593,12 @@ $zh2Hant = array(
'多占' => '多佔',
'多划' => '多劃',
'多半只' => '多半只',
+'多只可' => '多只可',
+'多只在' => '多只在',
'多只是' => '多只是',
+'多只会' => '多只會',
+'多只有' => '多只有',
+'多只能' => '多只能',
'多只需' => '多只需',
'多天后' => '多天後',
'多于' => '多於',
@@ -4207,6 +4610,7 @@ $zh2Hant = array(
'夜光表' => '夜光錶',
'夜里' => '夜裡',
'夜游' => '夜遊',
+'够克制' => '夠剋制',
'梦有五不占' => '夢有五不占',
'梦里' => '夢裡',
'梦游' => '夢遊',
@@ -4217,19 +4621,32 @@ $zh2Hant = array(
'伙计' => '夥計',
'大丑' => '大丑',
'大伙儿' => '大伙兒',
+'大只可' => '大只可',
+'大只在' => '大只在',
+'大只是' => '大只是',
+'大只会' => '大只會',
+'大只有' => '大只有',
+'大只能' => '大只能',
+'大只需' => '大只需',
+'大型钟' => '大型鐘',
+'大型钟表面' => '大型鐘表面',
+'大型钟表' => '大型鐘錶',
+'大型钟面' => '大型鐘面',
'大伙' => '大夥',
'大干' => '大幹',
'大批涌到' => '大批湧到',
'大折儿' => '大摺兒',
-'大于' => '大於',
'大明历' => '大明曆',
'大明历史' => '大明歷史',
'大历' => '大曆',
-'大梁' => '大樑',
+'大本钟' => '大本鐘',
+'大本钟敲' => '大本鐘敲',
'大历史' => '大歷史',
'大呆' => '大獃',
+'大病初愈' => '大病初癒',
'大目干连' => '大目乾連',
-'大胆' => '大胆',
+'大笨钟' => '大笨鐘',
+'大笨钟敲' => '大笨鐘敲',
'大蜡' => '大蜡',
'大衍历' => '大衍曆',
'大衍历史' => '大衍歷史',
@@ -4238,14 +4655,18 @@ $zh2Hant = array(
'大周折' => '大週摺',
'大金发苔' => '大金髮苔',
'大锤' => '大鎚',
+'大钟' => '大鐘',
'大只' => '大隻',
'大曲' => '大麴',
'天干物燥' => '天乾物燥',
'天克地冲' => '天克地衝',
'天后宫' => '天后宮',
'天后庙道' => '天后廟道',
+'天地志狼' => '天地志狼',
+'天地为范' => '天地為範',
'天干地支' => '天干地支',
'天后' => '天後',
+'天文学钟' => '天文學鐘',
'天文钟' => '天文鐘',
'天翻地覆' => '天翻地覆',
'天覆地载' => '天覆地載',
@@ -4253,7 +4674,6 @@ $zh2Hant = array(
'太初历' => '太初曆',
'太初历史' => '太初歷史',
'夯干' => '夯幹',
-'失于' => '失於',
'夸人' => '夸人',
'夸克' => '夸克',
'夸夸其谈' => '夸夸其談',
@@ -4269,7 +4689,6 @@ $zh2Hant = array(
'奇迹' => '奇迹',
'奇丑' => '奇醜',
'奏折' => '奏摺',
-'奏于' => '奏於',
'奥占' => '奧佔',
'夺斗' => '奪鬥',
'奋斗' => '奮鬥',
@@ -4279,6 +4698,7 @@ $zh2Hant = array(
'女仆' => '女僕',
'奴仆' => '奴僕',
'奸淫掳掠' => '奸淫擄掠',
+'她克制' => '她剋制',
'好干' => '好乾',
'好家伙' => '好傢夥',
'好勇斗狠' => '好勇鬥狠',
@@ -4294,13 +4714,13 @@ $zh2Hant = array(
'好签' => '好籤',
'好丑' => '好醜',
'好斗' => '好鬥',
-'如于' => '如於',
'如果干' => '如果幹',
'如饥似渴' => '如饑似渴',
'妙药' => '妙藥',
'始于' => '始於',
'委托' => '委託',
'委托书' => '委託書',
+'姜文杰' => '姜文杰',
'奸夫' => '姦夫',
'奸妇' => '姦婦',
'奸宄' => '姦宄',
@@ -4315,23 +4735,23 @@ $zh2Hant = array(
'婚后' => '婚後',
'婢仆' => '婢僕',
'娲杆' => '媧杆',
-'嫁于' => '嫁於',
'嫁祸于' => '嫁禍於',
'嫌凶' => '嫌兇',
'嫌好道丑' => '嫌好道醜',
-'娴于' => '嫻於',
'嬉游' => '嬉遊',
'嬖幸' => '嬖倖',
'嬴余' => '嬴餘',
'子之丰兮' => '子之丰兮',
'子云' => '子云',
'字汇' => '字彙',
+'字码表' => '字碼表',
'字里行间' => '字裡行間',
'存十一于千百' => '存十一於千百',
'存折' => '存摺',
'存于' => '存於',
'季后赛' => '季後賽',
'孤寡不谷' => '孤寡不穀',
+'学里' => '學裡',
'宇宙志' => '宇宙誌',
'守先待后' => '守先待後',
'安于' => '安於',
@@ -4349,12 +4769,10 @@ $zh2Hant = array(
'定于' => '定於',
'定准' => '定準',
'定制' => '定製',
-'宜于' => '宜於',
+'宜云' => '宜云',
'宣泄' => '宣洩',
'宦游' => '宦遊',
'宫里' => '宮裡',
-'宰相肚里好撑船' => '宰相肚裡好撐船',
-'宰相肚里能撑船' => '宰相肚裡能撐船',
'害于' => '害於',
'宴游' => '宴遊',
'家仆' => '家僕',
@@ -4370,18 +4788,15 @@ $zh2Hant = array(
'容于' => '容於',
'容范' => '容範',
'寄托在' => '寄托在',
-'寄于' => '寄於',
'寄托' => '寄託',
'密致' => '密緻',
'寇准' => '寇準',
'寇仇' => '寇讎',
-'富于' => '富於',
'富余' => '富餘',
+'寒假里' => '寒假裡',
'寒栗' => '寒慄',
'寒于' => '寒於',
-'寓情于景' => '寓情於景',
'寓于' => '寓於',
-'寓禁于征' => '寓禁於徵',
'寡占' => '寡佔',
'寡欲' => '寡慾',
'实干' => '實幹',
@@ -4392,21 +4807,26 @@ $zh2Hant = array(
'宽松' => '寬鬆',
'寮采' => '寮寀',
'宝山庄' => '寶山庄',
-'宝历' => '寶曆',
'寶曆' => '寶曆',
+'宝历' => '寶曆',
'宝历史' => '寶歷史',
'宝庄' => '寶莊',
'宝里宝气' => '寶裡寶氣',
+'寸发千金' => '寸髮千金',
+'寺钟' => '寺鐘',
'封面里' => '封面裡',
'射雕' => '射鵰',
'将占' => '將佔',
'将占卜' => '將占卜',
-'将于' => '將於',
'专向往' => '專向往',
'专注' => '專註',
+'专辑里' => '專輯裡',
'对折' => '對摺',
'对于' => '對於',
'对准' => '對準',
+'对准表' => '對準錶',
+'对准钟' => '對準鐘',
+'对准钟表' => '對準鐘錶',
'对华发动' => '對華發動',
'对表中' => '對表中',
'对表扬' => '對表揚',
@@ -4420,17 +4840,25 @@ $zh2Hant = array(
'小价' => '小价',
'小仆' => '小僕',
'小几' => '小几',
+'小只可' => '小只可',
+'小只在' => '小只在',
+'小只是' => '小只是',
+'小只会' => '小只會',
+'小只有' => '小只有',
+'小只能' => '小只能',
+'小只需' => '小只需',
+'小型钟' => '小型鐘',
+'小型钟表面' => '小型鐘表面',
+'小型钟表' => '小型鐘錶',
+'小型钟面' => '小型鐘面',
'小伙子' => '小夥子',
-'小于' => '小於',
'小米面' => '小米麵',
'小只' => '小隻',
'少占' => '少佔',
'少采' => '少採',
-'少于' => '少於',
-'就于' => '就於',
+'就克制' => '就剋制',
'就范' => '就範',
'就里' => '就裡',
-'就读于' => '就讀於',
'尸位素餐' => '尸位素餐',
'尸利' => '尸利',
'尸居余气' => '尸居餘氣',
@@ -4440,16 +4868,13 @@ $zh2Hant = array(
'尸谏' => '尸諫',
'尸魂界' => '尸魂界',
'尸鸠' => '尸鳩',
-'尼克松' => '尼克鬆',
'局里' => '局裡',
'屁股大吊了心' => '屁股大弔了心',
-'居于' => '居於',
'屋子里' => '屋子裡',
'屋梁' => '屋樑',
'屋里' => '屋裡',
'屑于' => '屑於',
'屡顾尔仆' => '屢顧爾僕',
-'属意于' => '屬意於',
'属于' => '屬於',
'属托' => '屬託',
'屯扎' => '屯紮',
@@ -4458,7 +4883,9 @@ $zh2Hant = array(
'山岳' => '山嶽',
'山后' => '山後',
'山梁' => '山樑',
+'山洞里' => '山洞裡',
'山棱' => '山稜',
+'山羊胡' => '山羊鬍',
'山庄' => '山莊',
'山药' => '山藥',
'山里' => '山裡',
@@ -4483,7 +4910,6 @@ $zh2Hant = array(
'巡回医疗' => '巡回醫療',
'巡回' => '巡迴',
'巡游' => '巡遊',
-'工于' => '工於',
'工致' => '工緻',
'左后' => '左後',
'左冲右突' => '左衝右突',
@@ -4498,13 +4924,13 @@ $zh2Hant = array(
'已占' => '已佔',
'已占卜' => '已占卜',
'已占算' => '已占算',
-'已于' => '已於',
'巴尔干' => '巴爾幹',
'巷里' => '巷裡',
'市占' => '市佔',
'市占率' => '市佔率',
'市里' => '市裡',
'布谷' => '布穀',
+'布谷鸟钟' => '布穀鳥鐘',
'布庄' => '布莊',
'布谷鸟' => '布谷鳥',
'希伯来历' => '希伯來曆',
@@ -4523,6 +4949,7 @@ $zh2Hant = array(
'平平当当' => '平平當當',
'平泉庄' => '平泉莊',
'平准' => '平準',
+'年代里' => '年代裡',
'年后' => '年後',
'年历' => '年曆',
'年历史' => '年歷史',
@@ -4536,6 +4963,7 @@ $zh2Hant = array(
'并迭' => '并迭',
'幸免于难' => '幸免於難',
'幸于' => '幸於',
+'幸运胡' => '幸運鬍',
'干上' => '幹上',
'干下去' => '幹下去',
'干不了' => '幹不了',
@@ -4593,7 +5021,6 @@ $zh2Hant = array(
'干么' => '幹麼',
'几划' => '幾劃',
'几天后' => '幾天後',
-'几于' => '幾於',
'几只' => '幾隻',
'几出' => '幾齣',
'广部' => '广部',
@@ -4681,8 +5108,7 @@ $zh2Hant = array(
'張三丰' => '張三丰',
'张勋' => '張勳',
'强占' => '強佔',
-'强加于' => '強加于',
-'强加于人' => '強加於人',
+'强制作用' => '強制作用',
'强奸' => '強姦',
'强干' => '強幹',
'强于' => '強於',
@@ -4707,9 +5133,9 @@ $zh2Hant = array(
'形于' => '形於',
'仿佛' => '彷彿',
'役于' => '役於',
+'彼此克制' => '彼此剋制',
'往后' => '往後',
'往日無仇' => '往日無讎',
-'往肚里吞' => '往肚裡吞',
'往里' => '往裡',
'往复' => '往複',
'很干' => '很乾',
@@ -4892,14 +5318,11 @@ $zh2Hant = array(
'后龙' => '後龍',
'徐干' => '徐幹',
'徒托空言' => '徒託空言',
-'得于' => '得於',
-'徜徉于' => '徜徉於',
-'从事于' => '從事於',
+'得克制' => '得剋制',
'从于' => '從於',
'从里到外' => '從裡到外',
'从里向外' => '從裡向外',
'复始' => '復始',
-'复仇' => '復讎',
'征人' => '徵人',
'征令' => '徵令',
'征占' => '徵佔',
@@ -4953,25 +5376,136 @@ $zh2Hant = array(
'德占' => '德佔',
'心愿' => '心愿',
'心于' => '心於',
+'心理' => '心理',
'心细如发' => '心細如髮',
+'心系一' => '心繫一',
+'心系世' => '心繫世',
+'心系中' => '心繫中',
+'心系乔' => '心繫乔',
+'心系五' => '心繫五',
+'心系京' => '心繫京',
+'心系人' => '心繫人',
+'心系他' => '心繫他',
+'心系伊' => '心繫伊',
+'心系何' => '心繫何',
+'心系你' => '心繫你',
+'心系健' => '心繫健',
+'心系传' => '心繫傳',
+'心系全' => '心繫全',
+'心系两' => '心繫兩',
+'心系农' => '心繫农',
+'心系功' => '心繫功',
+'心系动' => '心繫動',
+'心系募' => '心繫募',
+'心系北' => '心繫北',
+'心系十' => '心繫十',
+'心系千' => '心繫千',
+'心系南' => '心繫南',
+'心系台' => '心繫台',
+'心系和' => '心繫和',
+'心系哪' => '心繫哪',
+'心系唐' => '心繫唐',
+'心系嘱' => '心繫囑',
+'心系四' => '心繫四',
+'心系困' => '心繫困',
+'心系国' => '心繫國',
+'心系在' => '心繫在',
+'心系地' => '心繫地',
+'心系大' => '心繫大',
+'心系天' => '心繫天',
+'心系夫' => '心繫夫',
+'心系奥' => '心繫奧',
+'心系女' => '心繫女',
+'心系她' => '心繫她',
+'心系妻' => '心繫妻',
+'心系妇' => '心繫婦',
+'心系子' => '心繫子',
+'心系它' => '心繫它',
+'心系宣' => '心繫宣',
+'心系家' => '心繫家',
+'心系富' => '心繫富',
+'心系小' => '心繫小',
+'心系山' => '心繫山',
+'心系川' => '心繫川',
+'心系幼' => '心繫幼',
+'心系广' => '心繫廣',
+'心系彼' => '心繫彼',
+'心系德' => '心繫德',
+'心系您' => '心繫您',
+'心系慈' => '心繫慈',
+'心系我' => '心繫我',
+'心系摩' => '心繫摩',
+'心系故' => '心繫故',
+'心系新' => '心繫新',
+'心系日' => '心繫日',
+'心系昌' => '心繫昌',
+'心系晓' => '心繫曉',
+'心系曼' => '心繫曼',
+'心系东' => '心繫東',
+'心系林' => '心繫林',
+'心系母' => '心繫母',
+'心系民' => '心繫民',
+'心系江' => '心繫江',
+'心系汶' => '心繫汶',
+'心系沈' => '心繫沈',
+'心系沙' => '心繫沙',
+'心系泰' => '心繫泰',
+'心系浙' => '心繫浙',
+'心系港' => '心繫港',
+'心系湖' => '心繫湖',
+'心系澳' => '心繫澳',
+'心系灾' => '心繫災',
+'心系父' => '心繫父',
+'心系生' => '心繫生',
+'心系病' => '心繫病',
+'心系百' => '心繫百',
+'心系的' => '心繫的',
+'心系众' => '心繫眾',
+'心系社' => '心繫社',
+'心系祖' => '心繫祖',
+'心系神' => '心繫神',
+'心系红' => '心繫紅',
+'心系美' => '心繫美',
+'心系群' => '心繫群',
+'心系老' => '心繫老',
+'心系舞' => '心繫舞',
+'心系英' => '心繫英',
+'心系茶' => '心繫茶',
+'心系万' => '心繫萬',
+'心系着' => '心繫著',
+'心系兰' => '心繫蘭',
+'心系西' => '心繫西',
+'心系贫' => '心繫貧',
+'心系输' => '心繫輸',
+'心系近' => '心繫近',
+'心系远' => '心繫遠',
+'心系选' => '心繫選',
+'心系重' => '心繫重',
+'心系长' => '心繫長',
+'心系阮' => '心繫阮',
+'心系震' => '心繫震',
+'心系非' => '心繫非',
+'心系风' => '心繫風',
+'心系香' => '心繫香',
+'心系高' => '心繫高',
+'心系麦' => '心繫麥',
+'心系黄' => '心繫黃',
+'心脏' => '心臟',
'心荡' => '心蕩',
'心药' => '心藥',
-'心里' => '心裏',
-'心里不安' => '心裡不安',
-'心里有数' => '心裡有數',
-'心里话' => '心裡話',
-'心里头' => '心裡頭',
+'心里面' => '心裏面',
+'心里' => '心裡',
'心长发短' => '心長髮短',
'心余' => '心餘',
-'志于' => '志於',
+'必须' => '必須',
'忙并' => '忙併',
-'忙于' => '忙於',
'忙里' => '忙裡',
'忙里偷闲' => '忙裡偷閒',
'忠人之托' => '忠人之托',
'忠仆' => '忠僕',
'忠于' => '忠於',
'快干' => '快乾',
+'快克制' => '快剋制',
'快快当当' => '快快當當',
'快冲' => '快衝',
'忽前忽后' => '忽前忽後',
@@ -4989,7 +5523,6 @@ $zh2Hant = array(
'性欲' => '性慾',
'怪里怪气' => '怪裡怪氣',
'怫郁' => '怫鬱',
-'怯于' => '怯於',
'恂栗' => '恂慄',
'恒生指数' => '恒生指數',
'恒生股价指数' => '恒生股價指數',
@@ -5003,30 +5536,29 @@ $zh2Hant = array(
'悠悠荡荡' => '悠悠蕩蕩',
'悠荡' => '悠蕩',
'悠游' => '悠遊',
+'您克制' => '您剋制',
'悲筑' => '悲筑',
'悲郁' => '悲鬱',
-'闷在心里' => '悶在心裡',
'闷着头儿干' => '悶著頭兒幹',
'悸栗' => '悸慄',
'情欲' => '情慾',
'惇朴' => '惇樸',
'恶直丑正' => '惡直醜正',
'恶斗' => '惡鬥',
+'想克制' => '想剋制',
'惴栗' => '惴慄',
'意占' => '意佔',
+'意克制' => '意剋制',
'意大利面' => '意大利麵',
'意面' => '意麵',
-'爱在心里' => '愛在心裡',
'爱困' => '愛睏',
'感冒药' => '感冒藥',
'感于' => '感於',
-'愧于' => '愧於',
'愿朴' => '愿樸',
'愿而恭' => '愿而恭',
'栗冽' => '慄冽',
'栗栗' => '慄慄',
'慌里慌张' => '慌裡慌張',
-'惯于' => '慣於',
'庆吊' => '慶弔',
'庆历' => '慶曆',
'庆历史' => '慶歷史',
@@ -5046,6 +5578,7 @@ $zh2Hant = array(
'凭借着' => '憑藉著',
'恳托' => '懇託',
'懈松' => '懈鬆',
+'应克制' => '應剋制',
'应征' => '應徵',
'应钟' => '應鐘',
'懔栗' => '懍慄',
@@ -5054,19 +5587,18 @@ $zh2Hant = array(
'蒙直' => '懞直',
'惩前毖后' => '懲前毖後',
'惩忿窒欲' => '懲忿窒欲',
-'懒于' => '懶於',
'怀里' => '懷裡',
'怀表' => '懷錶',
-'悬挂' => '懸挂',
+'怀钟' => '懷鐘',
'悬梁' => '懸樑',
'悬臂梁' => '懸臂樑',
'悬钟' => '懸鐘',
-'惧于' => '懼於',
'懿范' => '懿範',
'恋恋不舍' => '戀戀不捨',
'成于' => '成於',
+'成于思' => '成於思',
'成药' => '成藥',
-'或于' => '或於',
+'我克制' => '我剋制',
'戬谷' => '戩穀',
'截发' => '截髮',
'战天斗地' => '戰天鬥地',
@@ -5074,6 +5606,7 @@ $zh2Hant = array(
'战栗' => '戰慄',
'战斗' => '戰鬥',
'戏彩娱亲' => '戲綵娛親',
+'戏里' => '戲裡',
'戴表' => '戴錶',
'戴发含齿' => '戴髮含齒',
'房里' => '房裡',
@@ -5100,6 +5633,7 @@ $zh2Hant = array(
'手里' => '手裡',
'手表' => '手錶',
'手松' => '手鬆',
+'才克制' => '才剋制',
'才干休' => '才干休',
'才干戈' => '才干戈',
'才干扰' => '才干擾',
@@ -5119,12 +5653,14 @@ $zh2Hant = array(
'打吨' => '打吨',
'打干' => '打幹',
'打拼' => '打拚',
+'打断发' => '打斷發',
'打谷' => '打穀',
+'打着钟' => '打著鐘',
'打路庄板' => '打路莊板',
'打钟' => '打鐘',
'打斗' => '打鬥',
-'托福考' => '托福考',
'托管国' => '托管國',
+'扛大梁' => '扛大樑',
'扞御' => '扞禦',
'扯面' => '扯麵',
'扶余国' => '扶餘國',
@@ -5158,8 +5694,10 @@ $zh2Hant = array(
'抽公签' => '抽公籤',
'抽签' => '抽籤',
'抿发' => '抿髮',
+'拂钟无声' => '拂鐘無聲',
'拆伙' => '拆夥',
'拈须' => '拈鬚',
+'拉克施尔德钟' => '拉克施爾德鐘',
'拉杆' => '拉杆',
'拉纤' => '拉縴',
'拉面上' => '拉面上',
@@ -5175,13 +5713,19 @@ $zh2Hant = array(
'拒人于' => '拒人於',
'拒于' => '拒於',
'拓朴' => '拓樸',
+'拔发' => '拔髮',
+'拔须' => '拔鬚',
'拗别' => '拗彆',
'拘于' => '拘於',
'拙于' => '拙於',
'拙朴' => '拙樸',
+'拼却' => '拚卻',
'拼命' => '拚命',
'拼舍' => '拚捨',
'拼死' => '拚死',
+'拼生尽死' => '拚生盡死',
+'拼绝' => '拚絕',
+'拼老命' => '拚老命',
'拼斗' => '拚鬥',
'拜托' => '拜託',
'括发' => '括髮',
@@ -5189,6 +5733,8 @@ $zh2Hant = array(
'拮据' => '拮据',
'拼死拼活' => '拼死拼活',
'拾沈' => '拾瀋',
+'拿下表' => '拿下錶',
+'拿下钟' => '拿下鐘',
'拿准' => '拿準',
'拿破仑' => '拿破崙',
'挂名' => '挂名',
@@ -5198,10 +5744,10 @@ $zh2Hant = array(
'挂念' => '挂念',
'挂号' => '挂號',
'挂车' => '挂車',
-'挂钩' => '挂鉤',
'挂面' => '挂面',
'指手划脚' => '指手劃腳',
'挌斗' => '挌鬥',
+'挑大梁' => '挑大樑',
'挑斗' => '挑鬥',
'振荡' => '振蕩',
'捆扎' => '捆紮',
@@ -5272,6 +5818,8 @@ $zh2Hant = array(
'掌柜' => '掌柜',
'排骨面' => '排骨麵',
'挂帘' => '掛帘',
+'挂历' => '掛曆',
+'挂钩' => '掛鈎',
'挂钟' => '掛鐘',
'采下' => '採下',
'采伐' => '採伐',
@@ -5317,6 +5865,7 @@ $zh2Hant = array(
'采种' => '採種',
'采空区' => '採空區',
'采空采穗' => '採空採穗',
+'采納' => '採納',
'采纳' => '採納',
'采给' => '採給',
'采花' => '採花',
@@ -5347,6 +5896,7 @@ $zh2Hant = array(
'采盐' => '採鹽',
'掣签' => '掣籤',
'接着说' => '接著說',
+'控制' => '控制',
'推情准理' => '推情準理',
'推托之词' => '推托之詞',
'推舟于陆' => '推舟於陸',
@@ -5362,6 +5912,8 @@ $zh2Hant = array(
'握发' => '握髮',
'揩干' => '揩乾',
'揪采' => '揪採',
+'揪发' => '揪髮',
+'揪须' => '揪鬚',
'揭丑' => '揭醜',
'挥手表' => '揮手表',
'挥杆' => '揮杆',
@@ -5380,6 +5932,7 @@ $zh2Hant = array(
'摧坚获丑' => '摧堅獲醜',
'摭采' => '摭採',
'摸棱' => '摸稜',
+'摸钟' => '摸鐘',
'折合' => '摺合',
'折奏' => '摺奏',
'折子' => '摺子',
@@ -5396,7 +5949,6 @@ $zh2Hant = array(
'捞干' => '撈乾',
'捞面' => '撈麵',
'撚须' => '撚鬚',
-'撞木钟' => '撞木鐘',
'撞球台' => '撞球檯',
'撞钟' => '撞鐘',
'撞阵冲军' => '撞陣衝軍',
@@ -5408,9 +5960,9 @@ $zh2Hant = array(
'扑冬' => '撲鼕',
'扑冬冬' => '撲鼕鼕',
'擀面' => '擀麵',
-'擅于' => '擅於',
'击扑' => '擊扑',
'击钟' => '擊鐘',
+'操作钟' => '操作鐘',
'担仔面' => '擔仔麵',
'担担面' => '擔擔麵',
'担着' => '擔著',
@@ -5422,33 +5974,29 @@ $zh2Hant = array(
'擦干' => '擦乾',
'擦干净' => '擦乾淨',
'擦药' => '擦藥',
-'拟于' => '擬於',
'拧干' => '擰乾',
'摆钟' => '擺鐘',
-'摄于' => '攝於',
'摄制' => '攝製',
'支干' => '支幹',
'支杆' => '支杆',
'收获' => '收穫',
'改征' => '改徵',
-'改于' => '改於',
'攻占' => '攻佔',
-'放在心里' => '放在心裡',
'放蒙挣' => '放懞掙',
'放荡' => '放蕩',
'放松' => '放鬆',
-'故于' => '故於',
+'故事里' => '故事裡',
+'故云' => '故云',
'敏于' => '敏於',
-'敏于事而慎于言' => '敏於事而慎於言',
'救药' => '救藥',
'败于' => '敗於',
'叙说着' => '敘說著',
+'教学钟' => '教學鐘',
'教于' => '教於',
'教范' => '教範',
'敢干' => '敢幹',
'敢情欲' => '敢情欲',
'敢斗了胆' => '敢斗了膽',
-'敢于' => '敢於',
'散伙' => '散夥',
'散于' => '散於',
'散荡' => '散蕩',
@@ -5458,10 +6006,14 @@ $zh2Hant = array(
'敲钟' => '敲鐘',
'整庄' => '整莊',
'整只' => '整隻',
+'整发用品' => '整髮用品',
'敌后' => '敵後',
'敌忾同仇' => '敵愾同讎',
'敷药' => '敷藥',
'数天后' => '數天後',
+'数字表' => '數字錶',
+'数字钟' => '數字鐘',
+'数字钟表' => '數字鐘錶',
'数罪并罚' => '數罪併罰',
'数与虏确' => '數與虜确',
'文丑' => '文丑',
@@ -5515,6 +6067,7 @@ $zh2Hant = array(
'于你' => '於你',
'于八' => '於八',
'于六' => '於六',
+'于克制' => '於剋制',
'于前' => '於前',
'于劣' => '於劣',
'于勤' => '於勤',
@@ -5535,24 +6088,20 @@ $zh2Hant = array(
'于它' => '於它',
'于家' => '於家',
'于密' => '於密',
-'于左' => '於左',
'于差' => '於差',
'于己' => '於己',
'于市' => '於市',
'于幕' => '於幕',
-'于幼华' => '於幼華',
'于弱' => '於弱',
'于强' => '於強',
-'于征' => '於征',
'于后' => '於後',
+'于征' => '於徵',
'于心' => '於心',
-'于思' => '於思',
'于怀' => '於懷',
'于我' => '於我',
'于戏' => '於戲',
'于敝' => '於敝',
'于斯' => '於斯',
-'于于' => '於於',
'于是' => '於是',
'于是乎' => '於是乎',
'于时' => '於時',
@@ -5569,7 +6118,6 @@ $zh2Hant = array(
'于焉' => '於焉',
'于墙' => '於牆',
'于物' => '於物',
-'于田' => '於田',
'于毕' => '於畢',
'于尽' => '於盡',
'于盲' => '於盲',
@@ -5590,7 +6138,6 @@ $zh2Hant = array(
'于丑' => '於醜',
'于野' => '於野',
'于陆' => '於陸',
-'于飞' => '於飛',
'于0' => '於0',
'于1' => '於1',
'于2' => '於2',
@@ -5607,7 +6154,6 @@ $zh2Hant = array(
'施药' => '施藥',
'旁征博引' => '旁徵博引',
'旁注' => '旁註',
-'旅游业' => '旅游業',
'旅游' => '旅遊',
'旋干转坤' => '旋乾轉坤',
'旋绕着' => '旋繞著',
@@ -5615,6 +6161,7 @@ $zh2Hant = array(
'族里' => '族裡',
'旗杆' => '旗杆',
'日占' => '日佔',
+'日子里' => '日子裡',
'日后' => '日後',
'日晒' => '日晒',
'日历' => '日曆',
@@ -5627,23 +6174,25 @@ $zh2Hant = array(
'升阳' => '昇陽',
'昊天不吊' => '昊天不弔',
'明征' => '明徵',
-'明于' => '明於',
'明目张胆' => '明目張胆',
'明窗净几' => '明窗淨几',
'明范' => '明範',
'明里' => '明裡',
+'易克制' => '易剋制',
'易于' => '易於',
+'星巴克' => '星巴克',
'星历' => '星曆',
'星期后' => '星期後',
'星历史' => '星歷史',
'星辰表' => '星辰錶',
'春假里' => '春假裡',
'春天里' => '春天裡',
+'春日里' => '春日裡',
'春药' => '春藥',
'春游' => '春遊',
'春香斗学' => '春香鬥學',
-'昧于' => '昧於',
'时钟' => '時鐘',
+'时间里' => '時間裡',
'晃荡' => '晃蕩',
'晋升' => '晉陞',
'晒干' => '晒乾',
@@ -5656,6 +6205,8 @@ $zh2Hant = array(
'晒种' => '晒種',
'晒衣' => '晒衣',
'晒黑' => '晒黑',
+'晚于' => '晚於',
+'晚钟' => '晚鐘',
'晞发' => '晞髮',
'晨钟' => '晨鐘',
'普冬冬' => '普鼕鼕',
@@ -5663,12 +6214,12 @@ $zh2Hant = array(
'晾干' => '晾乾',
'晕船药' => '暈船藥',
'晕车药' => '暈車藥',
+'暑假里' => '暑假裡',
'暗地里' => '暗地裡',
'暗沟里' => '暗溝裡',
'暗里' => '暗裡',
'暗斗' => '暗鬥',
'畅游' => '暢遊',
-'暂于' => '暫於',
'暴敛横征' => '暴斂橫徵',
'暴晒' => '暴晒',
'历元' => '曆元',
@@ -5688,43 +6239,49 @@ $zh2Hant = array(
'曰云' => '曰云',
'更仆难数' => '更僕難數',
'更签' => '更籤',
+'更钟' => '更鐘',
'书后' => '書後',
'书呆子' => '書獃子',
'书签' => '書籤',
'曼谷人' => '曼谷人',
-'曾于' => '曾於',
'曾朴' => '曾樸',
-'最多只' => '最多只',
+'最多' => '最多',
'最后' => '最後',
-'最里面' => '最裡面',
+'会上签署' => '會上簽署',
+'会上签订' => '會上簽訂',
'会占' => '會佔',
'会占卜' => '會占卜',
'会干' => '會幹',
'会吊' => '會弔',
'会后' => '會後',
-'会于' => '會於',
'会里' => '會裡',
'月后' => '月後',
'月历' => '月曆',
'月历史' => '月歷史',
'月离于毕' => '月離於畢',
+'月面' => '月面',
'月丽于箕' => '月麗於箕',
+'有事之无范' => '有事之無範',
'有仆' => '有僕',
'有够赞' => '有夠讚',
+'有征伐' => '有征伐',
+'有征战' => '有征戰',
+'有征服' => '有征服',
+'有征讨' => '有征討',
'有征' => '有徵',
'有恒街' => '有恒街',
'有栖川' => '有栖川',
'有准' => '有準',
'有棱有角' => '有稜有角',
-'有鉴于' => '有鑑於',
-'有鉴于此' => '有鑒於此',
'有只' => '有隻',
'有余' => '有餘',
'有发头陀寺' => '有髮頭陀寺',
-'服务于' => '服務於',
'服于' => '服於',
'服药' => '服藥',
'望了望' => '望了望',
+'望着表' => '望著錶',
+'望着钟' => '望著鐘',
+'望着钟表' => '望著鐘錶',
'朝乾夕惕' => '朝乾夕惕',
'朝后' => '朝後',
'朝钟' => '朝鐘',
@@ -5735,6 +6292,7 @@ $zh2Hant = array(
'木材干馏' => '木材乾餾',
'木梁' => '木樑',
'木制' => '木製',
+'木钟' => '木鐘',
'未干' => '未乾',
'末药' => '末藥',
'本征' => '本徵',
@@ -5747,6 +6305,7 @@ $zh2Hant = array(
'李連杰' => '李連杰',
'李连杰' => '李連杰',
'材干' => '材幹',
+'村子里' => '村子裡',
'村庄' => '村莊',
'村落发' => '村落發',
'村里' => '村裡',
@@ -5755,7 +6314,9 @@ $zh2Hant = array(
'束发' => '束髮',
'杯干' => '杯乾',
'杯面' => '杯麵',
+'杰伦' => '杰倫',
'杰特' => '杰特',
+'东周钟' => '東周鐘',
'东岳' => '東嶽',
'东冲西突' => '東衝西突',
'东游' => '東遊',
@@ -5768,10 +6329,11 @@ $zh2Hant = array(
'林钟' => '林鐘',
'果干' => '果乾',
'果子干' => '果子乾',
-'果于' => '果於',
'枝不得大于干' => '枝不得大於榦',
'枝干' => '枝幹',
'枯干' => '枯乾',
+'台历' => '枱曆',
+'架钟' => '架鐘',
'某只' => '某隻',
'染指于' => '染指於',
'染发' => '染髮',
@@ -5787,6 +6349,7 @@ $zh2Hant = array(
'格于' => '格於',
'格范' => '格範',
'格里历' => '格里曆',
+'格里高利历' => '格里高利曆',
'格斗' => '格鬥',
'桂圆干' => '桂圓乾',
'桅杆' => '桅杆',
@@ -5801,31 +6364,28 @@ $zh2Hant = array(
'梯冲' => '梯衝',
'械系' => '械繫',
'械斗' => '械鬥',
-'弃妻女于不顾' => '棄妻女於不顧',
'弃舍' => '棄捨',
'棉制' => '棉製',
'棒子面' => '棒子麵',
'枣庄' => '棗莊',
'栋梁' => '棟樑',
'棫朴' => '棫樸',
-'栖于' => '棲於',
+'森林里' => '森林裡',
+'棺材里' => '棺材裡',
'植发' => '植髮',
'椰枣干' => '椰棗乾',
'楚庄问鼎' => '楚莊問鼎',
'楚庄王' => '楚莊王',
'楚庄绝缨' => '楚莊絕纓',
'桢干' => '楨幹',
-'业精于勤荒于嬉' => '業精於勤荒於嬉',
'业余' => '業餘',
'榨干' => '榨乾',
'荣登后座' => '榮登后座',
'杠杆' => '槓桿',
-'乐意于' => '樂意於',
-'乐于' => '樂於',
+'乐器钟' => '樂器鐘',
'樊于期' => '樊於期',
'梁上' => '樑上',
'梁柱' => '樑柱',
-'标志着' => '標志著',
'标杆' => '標杆',
'标标致致' => '標標致致',
'标准' => '標準',
@@ -5861,7 +6421,11 @@ $zh2Hant = array(
'树干' => '樹榦',
'树梁' => '樹樑',
'桥梁' => '橋樑',
+'機械系' => '機械系',
'机械系' => '機械系',
+'机械表' => '機械錶',
+'机械钟' => '機械鐘',
+'机械钟表' => '機械鐘錶',
'机绣' => '機繡',
'横征暴敛' => '橫徵暴斂',
'横杆' => '橫杆',
@@ -5875,7 +6439,6 @@ $zh2Hant = array(
'柜台' => '櫃檯',
'栉发工' => '櫛髮工',
'栏杆' => '欄杆',
-'次于' => '次於',
'欲海难填' => '欲海難填',
'欺蒙' => '欺矇',
'歇后' => '歇後',
@@ -5885,20 +6448,17 @@ $zh2Hant = array(
'止于' => '止於',
'止痛药' => '止痛藥',
'止血药' => '止血藥',
+'正在叱咤' => '正在叱咤',
'正官庄' => '正官庄',
'正后' => '正後',
-'正于' => '正於',
'正当着' => '正當著',
'此后' => '此後',
-'步步高升' => '步步高升',
'武丑' => '武丑',
'武斗' => '武鬥',
'岁聿云暮' => '歲聿云暮',
+'历史里' => '歷史裡',
'归并' => '歸併',
-'归功于' => '歸功於',
-'归咎于' => '歸咎於',
'归于' => '歸於',
-'归罪于' => '歸罪於',
'归余' => '歸餘',
'歹斗' => '歹鬥',
'死后' => '死後',
@@ -5920,7 +6480,6 @@ $zh2Hant = array(
'殴斗' => '毆鬥',
'母范' => '母範',
'母丑' => '母醜',
-'每于' => '每於',
'每每只' => '每每只',
'每只' => '每隻',
'毒药' => '毒藥',
@@ -5930,7 +6489,6 @@ $zh2Hant = array(
'毛发' => '毛髮',
'毫厘' => '毫釐',
'毫发' => '毫髮',
-'气在心里' => '氣在心裡',
'气冲斗牛' => '氣沖斗牛',
'气郁' => '氣鬱',
'氤郁' => '氤鬱',
@@ -5952,7 +6510,6 @@ $zh2Hant = array(
'沈淀' => '沈澱',
'沈着' => '沈著',
'沈郁' => '沈鬱',
-'沉湎于' => '沉湎於',
'沉淀' => '沉澱',
'沉郁' => '沉鬱',
'没干没净' => '沒乾沒淨',
@@ -5970,6 +6527,7 @@ $zh2Hant = array(
'河里' => '河裡',
'油斗' => '油鬥',
'油面' => '油麵',
+'治愈' => '治癒',
'沿溯' => '沿泝',
'法占' => '法佔',
'法自制' => '法自制',
@@ -5980,6 +6538,7 @@ $zh2Hant = array(
'波发藻' => '波髮藻',
'泥于' => '泥於',
'注云' => '注云',
+'注释' => '注釋',
'泰山梁木' => '泰山梁木',
'泱郁' => '泱鬱',
'泳气钟' => '泳氣鐘',
@@ -6003,7 +6562,6 @@ $zh2Hant = array(
'洪适' => '洪适',
'洪钟' => '洪鐘',
'汹涌' => '洶湧',
-'活动于' => '活動於',
'派团参加' => '派團參加',
'流征' => '流徵',
'流于' => '流於',
@@ -6015,21 +6573,28 @@ $zh2Hant = array(
'浪琴表' => '浪琴錶',
'浪荡' => '浪蕩',
'浪游' => '浪遊',
-'浮夸' => '浮夸',
'浮于' => '浮於',
-'浮游动物' => '浮游動物',
-'浮游植物' => '浮游植物',
-'浮游生物' => '浮游生物',
'浮荡' => '浮蕩',
-'浮游' => '浮遊',
+'浮夸' => '浮誇',
'浮松' => '浮鬆',
+'海上布雷' => '海上佈雷',
'海干' => '海乾',
-'浸于' => '浸於',
+'海湾布雷' => '海灣佈雷',
+'涂坤' => '涂坤',
'涂壮勋' => '涂壯勳',
'涂壯勳' => '涂壯勳',
+'涂天相' => '涂天相',
+'涂序瑄' => '涂序瑄',
+'涂澤民' => '涂澤民',
+'涂泽民' => '涂澤民',
+'涂绍煃' => '涂紹煃',
+'涂羽卿' => '涂羽卿',
'涂謹申' => '涂謹申',
'涂谨申' => '涂謹申',
+'涂逢年' => '涂逢年',
'涂醒哲' => '涂醒哲',
+'涂長望' => '涂長望',
+'涂长望' => '涂長望',
'涂鸿钦' => '涂鴻欽',
'涂鴻欽' => '涂鴻欽',
'消炎药' => '消炎藥',
@@ -6050,15 +6615,17 @@ $zh2Hant = array(
'淫欲' => '淫慾',
'淫荡' => '淫蕩',
'淬炼' => '淬鍊',
-'深于' => '深於',
+'深山何处钟' => '深山何處鐘',
+'深渊里' => '深淵裡',
+'淳于' => '淳于',
'淳朴' => '淳樸',
'渊淳岳峙' => '淵淳嶽峙',
+'浅淀' => '淺澱',
'清心寡欲' => '清心寡欲',
'清汤挂面' => '清湯掛麵',
'减肥药' => '減肥藥',
'渠冲' => '渠衝',
'港制' => '港製',
-'游牧民族' => '游牧民族',
'浑朴' => '渾樸',
'浑个' => '渾箇',
'凑合着' => '湊合著',
@@ -6115,7 +6682,6 @@ $zh2Hant = array(
'溟蒙' => '溟濛',
'溢于' => '溢於',
'溲面' => '溲麵',
-'溶于' => '溶於',
'溺于' => '溺於',
'滃郁' => '滃鬱',
'滑借' => '滑藉',
@@ -6130,8 +6696,9 @@ $zh2Hant = array(
'卤制' => '滷製',
'卤鸡' => '滷雞',
'卤面' => '滷麵',
-'满于' => '滿於',
+'满拼自尽' => '滿拚自盡',
'满满当当' => '滿滿當當',
+'满头洋发' => '滿頭洋髮',
'漂荡' => '漂蕩',
'漕挽' => '漕輓',
'沤郁' => '漚鬱',
@@ -6139,19 +6706,26 @@ $zh2Hant = array(
'汉弥登钟表公司' => '漢彌登鐘錶公司',
'漫游' => '漫遊',
'潜意识里' => '潛意識裡',
+'潜水表' => '潛水錶',
'潜水钟' => '潛水鐘',
+'潜水钟表' => '潛水鐘錶',
'潭里' => '潭裡',
'潮涌' => '潮湧',
'溃于' => '潰於',
'澄澹精致' => '澄澹精致',
'澒蒙' => '澒濛',
'泽渗漓而下降' => '澤滲灕而下降',
+'淀乃不耕之地' => '澱乃不耕之地',
+'淀北片' => '澱北片',
+'淀山' => '澱山',
+'淀淀' => '澱澱',
+'淀积' => '澱積',
'淀粉' => '澱粉',
+'淀解物' => '澱解物',
+'淀谓之滓' => '澱謂之滓',
'澹台' => '澹臺',
'澹荡' => '澹蕩',
-'激于' => '激於',
'激荡' => '激蕩',
-'浓于' => '濃於',
'浓发' => '濃髮',
'蒙汜' => '濛汜',
'蒙蒙细雨' => '濛濛細雨',
@@ -6167,14 +6741,13 @@ $zh2Hant = array(
'沈海' => '瀋海',
'沈海铁路' => '瀋海鐵路',
'沈阳' => '瀋陽',
-'濒于' => '瀕於',
'潇洒' => '瀟洒',
'弥山遍野' => '瀰山遍野',
'弥漫' => '瀰漫',
'弥漫着' => '瀰漫著',
'弥弥' => '瀰瀰',
-'灌于' => '灌於',
'灌药' => '灌藥',
+'漓水' => '灕水',
'漓江' => '灕江',
'漓湘' => '灕湘',
'漓然' => '灕然',
@@ -6183,6 +6756,7 @@ $zh2Hant = array(
'火并' => '火併',
'火拼' => '火拚',
'火折子' => '火摺子',
+'火箭布雷' => '火箭佈雷',
'火签' => '火籤',
'火药' => '火藥',
'灰蒙' => '灰濛',
@@ -6206,6 +6780,7 @@ $zh2Hant = array(
'无征不信' => '無徵不信',
'无业游民' => '無業游民',
'无梁楼盖' => '無樑樓蓋',
+'无法克制' => '無法剋制',
'无药可救' => '無藥可救',
'無言不仇' => '無言不讎',
'无余' => '無餘',
@@ -6224,20 +6799,24 @@ $zh2Hant = array(
'煨干' => '煨乾',
'煮面' => '煮麵',
'荧郁' => '熒鬱',
-'熔于' => '熔於',
'熬药' => '熬藥',
'炖药' => '燉藥',
'燎发' => '燎髮',
'烧干' => '燒乾',
'燕几' => '燕几',
'燕巢于幕' => '燕巢於幕',
+'燕燕于飞' => '燕燕于飛',
'燕游' => '燕遊',
+'烫一个发' => '燙一個髮',
+'烫一次发' => '燙一次髮',
+'烫个发' => '燙個髮',
+'烫完发' => '燙完髮',
+'烫次发' => '燙次髮',
'烫发' => '燙髮',
'烫面' => '燙麵',
'营干' => '營幹',
'烬余' => '燼餘',
'争先恐后' => '爭先恐後',
-'争名于朝,争利于市' => '爭名於朝,爭利於市',
'争奇斗妍' => '爭奇鬥妍',
'争奇斗异' => '爭奇鬥異',
'争奇斗艳' => '爭奇鬥豔',
@@ -6256,13 +6835,13 @@ $zh2Hant = array(
'牛肉面' => '牛肉麵',
'牛只' => '牛隻',
'物欲' => '物慾',
+'特别致' => '特别致',
'特制住' => '特制住',
'特制定' => '特制定',
'特制止' => '特制止',
'特制订' => '特制訂',
'特征' => '特徵',
'特效药' => '特效藥',
-'特于' => '特於',
'特制' => '特製',
'牵一发' => '牽一髮',
'牵挂' => '牽挂',
@@ -6272,10 +6851,12 @@ $zh2Hant = array(
'狂并潮' => '狂併潮',
'狃于' => '狃於',
'狐借虎威' => '狐藉虎威',
-'狗嘴里' => '狗嘴裡',
'猛于' => '猛於',
'猛冲' => '猛衝',
'猜三划五' => '猜三划五',
+'犹如表' => '猶如錶',
+'犹如钟' => '猶如鐘',
+'犹如钟表' => '猶如鐘錶',
'呆串了皮' => '獃串了皮',
'呆事' => '獃事',
'呆人' => '獃人',
@@ -6294,6 +6875,7 @@ $zh2Hant = array(
'呆着' => '獃著',
'呆话' => '獃話',
'呆头' => '獃頭',
+'狱里' => '獄裡',
'奖杯' => '獎盃',
'独占' => '獨佔',
'独占鳌头' => '獨佔鰲頭',
@@ -6306,18 +6888,21 @@ $zh2Hant = array(
'玉历史' => '玉歷史',
'王庄' => '王莊',
'王余鱼' => '王餘魚',
-'玩弄于股掌之上' => '玩弄於股掌之上',
'珍肴异馔' => '珍肴異饌',
'班里' => '班裡',
'现于' => '現於',
'球杆' => '球杆',
+'理一个发' => '理一個髮',
+'理一次发' => '理一次髮',
+'理个发' => '理個髮',
+'理完发' => '理完髮',
+'理次发' => '理次髮',
'理发' => '理髮',
'琴钟' => '琴鐘',
'瑞征' => '瑞徵',
'瑶签' => '瑤籤',
'环游' => '環遊',
'瓮安' => '甕安',
-'甘于' => '甘於',
'甚于' => '甚於',
'甚么' => '甚麼',
'甜水面' => '甜水麵',
@@ -6325,14 +6910,13 @@ $zh2Hant = array(
'生力面' => '生力麵',
'生于' => '生於',
'生殖洄游' => '生殖洄游',
+'生物钟' => '生物鐘',
'生发生' => '生發生',
'生姜' => '生薑',
'生锈' => '生鏽',
'生发' => '生髮',
'产卵洄游' => '產卵洄游',
'产后' => '產後',
-'产于' => '產於',
-'用于' => '用於',
'用药' => '用藥',
'甩发' => '甩髮',
'田谷' => '田穀',
@@ -6351,15 +6935,10 @@ $zh2Hant = array(
'毕业于' => '畢業於',
'毕生发展' => '畢生發展',
'画着' => '畫著',
-'异于' => '異於',
-'当一天和尚撞一天钟' => '當一天和尚撞一天鐘',
-'当一天和尚,撞一天钟' => '當一天和尚,撞一天鐘',
'当家才知柴米价' => '當家纔知柴米價',
-'当于' => '當於',
'当准' => '當準',
'当当丁丁' => '當當丁丁',
'当着' => '當著',
-'疏于' => '疏於',
'疏松' => '疏鬆',
'疑系' => '疑係',
'疑凶' => '疑兇',
@@ -6368,26 +6947,27 @@ $zh2Hant = array(
'病后' => '病後',
'病后初愈' => '病後初癒',
'病征' => '病徵',
+'病愈' => '病癒',
'病余' => '病餘',
'症候群' => '症候群',
'痊愈' => '痊癒',
'痒疹' => '痒疹',
'痒痒' => '痒痒',
'痕迹' => '痕迹',
-'痴呆症' => '痴呆症',
-'痴呆' => '痴獃',
+'愈合' => '癒合',
'症候' => '癥候',
'症状' => '癥狀',
'症结' => '癥結',
'癸丑' => '癸丑',
'发干' => '發乾',
-'发于' => '發於',
'发汗药' => '發汗藥',
'发呆' => '發獃',
'发蒙' => '發矇',
'发签' => '發籤',
'发庄' => '發莊',
'发着' => '發著',
+'发表' => '發表',
+'發表' => '發表',
'发松' => '發鬆',
'发面' => '發麵',
'白干' => '白乾',
@@ -6401,7 +6981,9 @@ $zh2Hant = array(
'白粉面' => '白粉麵',
'白里透红' => '白裡透紅',
'白发' => '白髮',
+'白胡' => '白鬍',
'白霉' => '白黴',
+'百个' => '百個',
'百只可' => '百只可',
'百只够' => '百只夠',
'百只怕' => '百只怕',
@@ -6409,6 +6991,7 @@ $zh2Hant = array(
'百多只' => '百多隻',
'百天后' => '百天後',
'百拙千丑' => '百拙千醜',
+'百科里' => '百科裡',
'百谷' => '百穀',
'百扎' => '百紮',
'百花历' => '百花曆',
@@ -6416,6 +6999,11 @@ $zh2Hant = array(
'百药之长' => '百藥之長',
'百炼' => '百鍊',
'百只' => '百隻',
+'百余' => '百餘',
+'的克制' => '的剋制',
+'的钟' => '的鐘',
+'的钟表' => '的鐘錶',
+'皆可作淀' => '皆可作澱',
'皆准' => '皆準',
'皇天后土' => '皇天后土',
'皇历' => '皇曆',
@@ -6425,8 +7013,8 @@ $zh2Hant = array(
'皇庄' => '皇莊',
'皓发' => '皓髮',
'皮制服' => '皮制服',
-'皮里阳秋' => '皮裏陽秋',
'皮里春秋' => '皮裡春秋',
+'皮里阳秋' => '皮裡陽秋',
'皮制' => '皮製',
'皮松' => '皮鬆',
'皱别' => '皺彆',
@@ -6438,6 +7026,7 @@ $zh2Hant = array(
'盛赞' => '盛讚',
'盗采' => '盜採',
'盗钟' => '盜鐘',
+'尽量克制' => '盡量剋制',
'监制' => '監製',
'盘里' => '盤裡',
'盘回' => '盤迴',
@@ -6454,11 +7043,20 @@ $zh2Hant = array(
'相于' => '相於',
'相冲' => '相衝',
'相斗' => '相鬥',
+'看下表' => '看下錶',
+'看下钟' => '看下鐘',
'看准' => '看準',
+'看着表' => '看著錶',
+'看着钟' => '看著鐘',
+'看着钟表' => '看著鐘錶',
+'看表面' => '看表面',
+'看表' => '看錶',
+'看钟' => '看鐘',
'真凶' => '真兇',
'真个' => '真箇',
'眼帘' => '眼帘',
'眼眶里' => '眼眶裡',
+'眼睛里' => '眼睛裡',
'眼药' => '眼藥',
'眼里' => '眼裡',
'困乏' => '睏乏',
@@ -6467,7 +7065,12 @@ $zh2Hant = array(
'睡着了' => '睡著了',
'睡游病' => '睡遊病',
'瞄准' => '瞄準',
+'瞅下表' => '瞅下錶',
+'瞅下钟' => '瞅下鐘',
'瞠乎后矣' => '瞠乎後矣',
+'瞧着表' => '瞧著錶',
+'瞧着钟' => '瞧著鐘',
+'瞧着钟表' => '瞧著鐘錶',
'了望' => '瞭望',
'了然' => '瞭然',
'了若指掌' => '瞭若指掌',
@@ -6493,8 +7096,11 @@ $zh2Hant = array(
'石家庄' => '石家莊',
'石梁' => '石樑',
'石英表' => '石英錶',
+'石英钟' => '石英鐘',
+'石英钟表' => '石英鐘錶',
'石莼' => '石蓴',
'石钟乳' => '石鐘乳',
+'矽谷' => '矽谷',
'研制' => '研製',
'砰当' => '砰噹',
'朱唇皓齿' => '硃唇皓齒',
@@ -6508,11 +7114,12 @@ $zh2Hant = array(
'确瘠' => '确瘠',
'碑志' => '碑誌',
'碰钟' => '碰鐘',
+'码表' => '碼錶',
'磁制' => '磁製',
'磨制' => '磨製',
'磨炼' => '磨鍊',
+'磬钟' => '磬鐘',
'硗确' => '磽确',
-'碍于' => '礙於',
'碍难照准' => '礙難照准',
'砻谷机' => '礱穀機',
'示范' => '示範',
@@ -6543,8 +7150,10 @@ $zh2Hant = array(
'私下里' => '私下裡',
'私欲' => '私慾',
'私斗' => '私鬥',
+'秋假里' => '秋假裡',
'秋天里' => '秋天裡',
'秋后' => '秋後',
+'秋日里' => '秋日裡',
'秋裤' => '秋褲',
'秋游' => '秋遊',
'秋阴入井干' => '秋陰入井幹',
@@ -6552,6 +7161,7 @@ $zh2Hant = array(
'种师中' => '种師中',
'种师道' => '种師道',
'种放' => '种放',
+'科斗' => '科斗',
'科范' => '科範',
'秒表明' => '秒表明',
'秒表示' => '秒表示',
@@ -6561,7 +7171,6 @@ $zh2Hant = array(
'稀松' => '稀鬆',
'税后' => '稅後',
'税后净利' => '稅後淨利',
-'税捐稽征处' => '稅捐稽征處',
'稍后' => '稍後',
'棱台' => '稜台',
'棱子' => '稜子',
@@ -6604,22 +7213,25 @@ $zh2Hant = array(
'谷道' => '穀道',
'谷雨' => '穀雨',
'谷类' => '穀類',
-'谷风' => '穀風',
'谷食' => '穀食',
'穆罕默德历' => '穆罕默德曆',
'穆罕默德历史' => '穆罕默德歷史',
'积极参与' => '積极參与',
'积极参加' => '積极參加',
+'积淀' => '積澱',
'积谷' => '積穀',
'积谷防饥' => '積穀防饑',
'积郁' => '積鬱',
'稳占' => '穩佔',
'稳扎' => '穩紮',
+'空中布雷' => '空中佈雷',
+'空投布雷' => '空投佈雷',
'空蒙' => '空濛',
'空荡' => '空蕩',
'空荡荡' => '空蕩蕩',
'空谷回音' => '空谷回音',
'空钟' => '空鐘',
+'空余' => '空餘',
'窒欲' => '窒慾',
'窗台上' => '窗台上',
'窗帘' => '窗帘',
@@ -6634,7 +7246,6 @@ $zh2Hant = array(
'立于' => '立於',
'立范' => '立範',
'站干岸儿' => '站乾岸兒',
-'竟于' => '竟於',
'童仆' => '童僕',
'端庄' => '端莊',
'竞斗' => '競鬥',
@@ -6643,6 +7254,7 @@ $zh2Hant = array(
'竹签' => '竹籤',
'笑里藏刀' => '笑裡藏刀',
'笨笨呆呆' => '笨笨呆呆',
+'第四出局' => '第四出局',
'笔划' => '筆劃',
'笔秃墨干' => '筆禿墨乾',
'等于' => '等於',
@@ -6676,7 +7288,6 @@ $zh2Hant = array(
'个中资讯' => '箇中資訊',
'个中高手' => '箇中高手',
'个旧' => '箇舊',
-'算在里面' => '算在裡面',
'算历' => '算曆',
'算历史' => '算歷史',
'算准' => '算準',
@@ -6688,10 +7299,13 @@ $zh2Hant = array(
'节余' => '節餘',
'范例' => '範例',
'范围' => '範圍',
+'范字' => '範字',
'范式' => '範式',
+'范性形变' => '範性形變',
'范文' => '範文',
'范本' => '範本',
'范畴' => '範疇',
+'范金' => '範金',
'简并' => '簡併',
'简朴' => '簡樸',
'簸荡' => '簸蕩',
@@ -6723,6 +7337,7 @@ $zh2Hant = array(
'糕干' => '糕乾',
'粪秽蔑面' => '糞穢衊面',
'团子' => '糰子',
+'系列里' => '系列裡',
'系着' => '系著',
'系里' => '系裡',
'纪元后' => '紀元後',
@@ -6730,6 +7345,7 @@ $zh2Hant = array(
'纪历史' => '紀歷史',
'约占' => '約佔',
'红绳系足' => '紅繩繫足',
+'红钟' => '紅鐘',
'红霉素' => '紅霉素',
'红发' => '紅髮',
'纡回' => '紆迴',
@@ -6741,7 +7357,6 @@ $zh2Hant = array(
'素朴' => '素樸',
'素发' => '素髮',
'素面' => '素麵',
-'索我于枯鱼之肆' => '索我於枯魚之肆',
'索马里' => '索馬里',
'索馬里' => '索馬里',
'索面' => '索麵',
@@ -6763,6 +7378,7 @@ $zh2Hant = array(
'扎起' => '紮起',
'扎铁' => '紮鐵',
'细不容发' => '細不容髮',
+'细如发' => '細如髮',
'细致' => '細緻',
'细炼' => '細鍊',
'终于' => '終於',
@@ -6777,6 +7393,7 @@ $zh2Hant = array(
'绝后' => '絕後',
'绝于' => '絕於',
'绞干' => '絞乾',
+'络腮胡' => '絡腮鬍',
'给我干脆' => '給我干脆',
'给于' => '給於',
'丝来线去' => '絲來線去',
@@ -6792,6 +7409,7 @@ $zh2Hant = array(
'绑扎' => '綁紮',
'綑扎' => '綑紮',
'经有云' => '經有云',
+'經有云' => '經有云',
'绿发' => '綠髮',
'绸缎庄' => '綢緞莊',
'维系' => '維繫',
@@ -6818,6 +7436,7 @@ $zh2Hant = array(
'编余' => '編余',
'编制法' => '編制法',
'编采' => '編採',
+'编码表' => '編碼表',
'编制' => '編製',
'编钟' => '編鐘',
'编发' => '編髮',
@@ -6835,7 +7454,9 @@ $zh2Hant = array(
'纤夫' => '縴夫',
'纤手' => '縴手',
'总后' => '總後',
+'总裁制' => '總裁制',
'繁复' => '繁複',
+'繁钟' => '繁鐘',
'绷住' => '繃住',
'绷子' => '繃子',
'绷带' => '繃帶',
@@ -6871,7 +7492,7 @@ $zh2Hant = array(
'系怀' => '繫懷',
'系恋' => '繫戀',
'系于' => '繫於',
-'系系' => '繫系',
+'系于一发' => '繫於一髮',
'系结' => '繫結',
'系紧' => '繫緊',
'系绳' => '繫繩',
@@ -6892,6 +7513,7 @@ $zh2Hant = array(
'坛坛罐罐' => '罈罈罐罐',
'坛騞' => '罈騞',
'置于' => '置於',
+'置言成范' => '置言成範',
'骂着' => '罵著',
'罢于' => '罷於',
'羁系' => '羈繫',
@@ -6901,13 +7523,11 @@ $zh2Hant = array(
'美制' => '美製',
'美丑' => '美醜',
'美发' => '美髮',
-'羞于' => '羞於',
'群丑' => '群醜',
-'羨余' => '羨餘',
+'羡余' => '羨餘',
'义占' => '義佔',
'义仆' => '義僕',
'义庄' => '義莊',
-'习于' => '習於',
'翕辟' => '翕闢',
'翱游' => '翱遊',
'翻涌' => '翻湧',
@@ -6918,24 +7538,23 @@ $zh2Hant = array(
'老干部' => '老幹部',
'老蒙' => '老懞',
'老于' => '老於',
+'老爷钟' => '老爺鐘',
'老庄' => '老莊',
'老姜' => '老薑',
'老板' => '老闆',
'老面皮' => '老面皮',
'考后' => '考後',
'考征' => '考徵',
+'而克制' => '而剋制',
'而后' => '而後',
-'而于' => '而於',
'耍斗' => '耍鬥',
'耕佣' => '耕傭',
'耕获' => '耕穫',
'耳后' => '耳後',
'耳余' => '耳餘',
-'耽于' => '耽於',
'耿于' => '耿於',
'聊斋志异' => '聊齋志異',
'聘雇' => '聘僱',
-'联于' => '聯於',
'联系' => '聯繫',
'听于' => '聽於',
'肉干' => '肉乾',
@@ -6943,11 +7562,13 @@ $zh2Hant = array(
'肉丝面' => '肉絲麵',
'肉羹面' => '肉羹麵',
'肉松' => '肉鬆',
-'肚里' => '肚裏',
+'肚里' => '肚裡',
+'肝脏' => '肝臟',
'肝郁' => '肝鬱',
'股栗' => '股慄',
'肥筑方言' => '肥筑方言',
'肴馔' => '肴饌',
+'肺脏' => '肺臟',
'胃药' => '胃藥',
'胃里' => '胃裡',
'背向着' => '背向著',
@@ -6957,8 +7578,10 @@ $zh2Hant = array(
'胜肽' => '胜肽',
'胜键' => '胜鍵',
'胡云' => '胡云',
+'胡子昂' => '胡子昂',
'胡朴安' => '胡樸安',
'胡里胡涂' => '胡裡胡塗',
+'能克制' => '能剋制',
'能干休' => '能干休',
'能干戈' => '能干戈',
'能干扰' => '能干擾',
@@ -6973,12 +7596,15 @@ $zh2Hant = array(
'脊梁' => '脊樑',
'脱谷机' => '脫穀機',
'脱发' => '脫髮',
+'脾脏' => '脾臟',
'腊之以为饵' => '腊之以為餌',
'腊味' => '腊味',
'腊毒' => '腊毒',
'腊笔' => '腊筆',
+'肾脏' => '腎臟',
'腐干' => '腐乾',
'腐余' => '腐餘',
+'腕表' => '腕錶',
'脑子里' => '腦子裡',
'脑干' => '腦幹',
'脑后' => '腦後',
@@ -6986,6 +7612,7 @@ $zh2Hant = array(
'脚注' => '腳註',
'脚炼' => '腳鍊',
'膏药' => '膏藥',
+'肤发' => '膚髮',
'胶卷' => '膠捲',
'膨松' => '膨鬆',
'臣仆' => '臣僕',
@@ -7011,11 +7638,12 @@ $zh2Hant = array(
'自于' => '自於',
'自制' => '自製',
'自觉自愿' => '自覺自愿',
+'至多' => '至多',
'至于' => '至於',
-'致力于' => '致力於',
'致于' => '致於',
'臻于' => '臻於',
'舂谷' => '舂穀',
+'与克制' => '與剋制',
'兴致' => '興緻',
'举手表' => '舉手表',
'举手表决' => '舉手表決',
@@ -7024,6 +7652,9 @@ $zh2Hant = array(
'旧历史' => '舊歷史',
'旧药' => '舊藥',
'旧游' => '舊遊',
+'旧表' => '舊錶',
+'旧钟' => '舊鐘',
+'旧钟表' => '舊鐘錶',
'舌干唇焦' => '舌乾唇焦',
'舌后' => '舌後',
'舒卷' => '舒捲',
@@ -7045,19 +7676,28 @@ $zh2Hant = array(
'花盆里' => '花盆裡',
'花庵词选' => '花菴詞選',
'花药' => '花藥',
+'花钟' => '花鐘',
'花马吊嘴' => '花馬弔嘴',
'花哄' => '花鬨',
'苑里' => '苑裡',
'若干' => '若干',
-'若于' => '若於',
'苦干' => '苦幹',
-'苦于' => '苦於',
'苦药' => '苦藥',
-'苦里' => '苦裏',
+'苦里' => '苦裡',
'苦斗' => '苦鬥',
'苎麻' => '苧麻',
'英占' => '英佔',
'苹萦' => '苹縈',
+'茂都淀' => '茂都澱',
+'范文同' => '范文同',
+'范文正公' => '范文正公',
+'范文瀾' => '范文瀾',
+'范文澜' => '范文瀾',
+'范文照' => '范文照',
+'范文程' => '范文程',
+'范文芳' => '范文芳',
+'范文藤' => '范文藤',
+'范文虎' => '范文虎',
'范登堡' => '范登堡',
'茶几' => '茶几',
'茶庄' => '茶莊',
@@ -7100,20 +7740,26 @@ $zh2Hant = array(
'菜肴' => '菜肴',
'菠棱菜' => '菠稜菜',
'菠萝干' => '菠蘿乾',
+'华严钟' => '華嚴鐘',
'华发' => '華髮',
'万一只' => '萬一只',
+'万个' => '萬個',
'万多只' => '萬多隻',
'万天后' => '萬天後',
+'万年历表' => '萬年曆錶',
'万历' => '萬曆',
'万历史' => '萬歷史',
'万签插架' => '萬籤插架',
'万扎' => '萬紮',
'万象' => '萬象',
'万只' => '萬隻',
+'万余' => '萬餘',
'落后' => '落後',
-'落于' => '落於',
+'落腮胡' => '落腮鬍',
'落发' => '落髮',
+'叶叶琹' => '葉叶琹',
'着儿' => '著兒',
+'着克制' => '著剋制',
'着书立说' => '著書立說',
'着色软体' => '著色軟體',
'着重指出' => '著重指出',
@@ -7128,11 +7774,12 @@ $zh2Hant = array(
'蒙雾露' => '蒙霧露',
'蒜发' => '蒜髮',
'苍术' => '蒼朮',
+'苍发' => '蒼髮',
'苍郁' => '蒼鬱',
'蓄发' => '蓄髮',
+'蓄胡' => '蓄鬍',
'蓄须' => '蓄鬚',
'蓊郁' => '蓊鬱',
-'盖于' => '蓋於',
'蓬蓬松松' => '蓬蓬鬆鬆',
'蓬发' => '蓬髮',
'蓬松' => '蓬鬆',
@@ -7171,6 +7818,9 @@ $zh2Hant = array(
'姜黄' => '薑黃',
'薙发' => '薙髮',
'薝卜' => '薝蔔',
+'苧悴' => '薴悴',
+'苧烯' => '薴烯',
+'薴烯' => '薴烯',
'借以' => '藉以',
'借助' => '藉助',
'借寇兵' => '藉寇兵',
@@ -7181,6 +7831,7 @@ $zh2Hant = array(
'借箸代筹' => '藉箸代籌',
'借着' => '藉著',
'借资' => '藉資',
+'蓝淀' => '藍澱',
'藏于' => '藏於',
'藏历' => '藏曆',
'藏历史' => '藏歷史',
@@ -7257,7 +7908,6 @@ $zh2Hant = array(
'萝卜干' => '蘿蔔乾',
'虎须' => '虎鬚',
'虎斗' => '虎鬥',
-'处于' => '處於',
'号志' => '號誌',
'虫部' => '虫部',
'蚊动牛斗' => '蚊動牛鬥',
@@ -7268,6 +7918,8 @@ $zh2Hant = array(
'蜜里调油' => '蜜裡調油',
'蜡月' => '蜡月',
'蜡祭' => '蜡祭',
+'蝎蝎螫螫' => '蝎蝎螫螫',
+'蝎谮' => '蝎譖',
'虮蝨相吊' => '蟣蝨相弔',
'蛏干' => '蟶乾',
'蠁干' => '蠁幹',
@@ -7283,6 +7935,7 @@ $zh2Hant = array(
'行于' => '行於',
'行百里者半于九十' => '行百里者半於九十',
'胡同' => '衚衕',
+'卫星钟' => '衛星鐘',
'冲上' => '衝上',
'冲下' => '衝下',
'冲来' => '衝來',
@@ -7336,6 +7989,7 @@ $zh2Hant = array(
'表面' => '表面',
'衷于' => '衷於',
'袋里' => '袋裡',
+'袋表' => '袋錶',
'袖里' => '袖裡',
'被里' => '被裡',
'被复' => '被複',
@@ -7347,15 +8001,14 @@ $zh2Hant = array(
'被发阳狂' => '被髮陽狂',
'裁并' => '裁併',
'裁制' => '裁製',
-'里勾外连' => '裏勾外連',
'里手' => '裏手',
'里海' => '裏海',
-'里面' => '裏面',
'补于' => '補於',
'补药' => '補藥',
'补血药' => '補血藥',
'补注' => '補註',
'装折' => '裝摺',
+'里勾外连' => '裡勾外連',
'里外' => '裡外',
'里子' => '裡子',
'里屋' => '裡屋',
@@ -7370,7 +8023,7 @@ $zh2Hant = array(
'里通外敌' => '裡通外敵',
'里边' => '裡邊',
'里间' => '裡間',
-'里面儿' => '裡面兒',
+'里面' => '裡面',
'里面包' => '裡面包',
'里头' => '裡頭',
'制件' => '製件',
@@ -7380,8 +8033,10 @@ $zh2Hant = array(
'制冰' => '製冰',
'制冷' => '製冷',
'制剂' => '製劑',
+'制取' => '製取',
'制品' => '製品',
'制图' => '製圖',
+'制得' => '製得',
'制成' => '製成',
'制法' => '製法',
'制浆' => '製漿',
@@ -7405,11 +8060,10 @@ $zh2Hant = array(
'复函数' => '複函數',
'复分数' => '複分數',
'复分析' => '複分析',
-'复分解反应' => '複分解反應',
+'复分解' => '複分解',
'复列' => '複列',
'复利' => '複利',
'复印' => '複印',
-'复原' => '複原',
'复句' => '複句',
'复合' => '複合',
'复名' => '複名',
@@ -7420,6 +8074,7 @@ $zh2Hant = array(
'复字键' => '複字鍵',
'复审' => '複審',
'复写' => '複寫',
+'复对数' => '複對數',
'复平面' => '複平面',
'复式' => '複式',
'复复' => '複復',
@@ -7464,14 +8119,17 @@ $zh2Hant = array(
'衬里' => '襯裡',
'西占' => '西佔',
'西元后' => '西元後',
+'西周钟' => '西周鐘',
'西岳' => '西嶽',
'西晒' => '西晒',
'西历' => '西曆',
'西历史' => '西歷史',
+'西米谷' => '西米谷',
'西药' => '西藥',
'西谷米' => '西谷米',
'西游' => '西遊',
'要占' => '要佔',
+'要克制' => '要剋制',
'要占卜' => '要占卜',
'要自制' => '要自制',
'要冲' => '要衝',
@@ -7508,9 +8166,9 @@ $zh2Hant = array(
'言云' => '言云',
'言大而夸' => '言大而夸',
'言辩而确' => '言辯而确',
-'订于' => '訂於',
'订制' => '訂製',
'计划' => '計劃',
+'计时表' => '計時錶',
'托了' => '託了',
'托事' => '託事',
'托交' => '託交',
@@ -7528,7 +8186,6 @@ $zh2Hant = array(
'托故' => '託故',
'托疾' => '託疾',
'托病' => '託病',
-'托福' => '託福',
'托管' => '託管',
'托言' => '託言',
'托词' => '託詞',
@@ -7539,7 +8196,6 @@ $zh2Hant = array(
'托运' => '託運',
'托过' => '託過',
'托附' => '託附',
-'设于' => '設於',
'许愿起经' => '許愿起經',
'诉说着' => '訴說著',
'注上' => '註上',
@@ -7554,8 +8210,9 @@ $zh2Hant = array(
'注解' => '註解',
'注记' => '註記',
'注译' => '註譯',
-'注释' => '註釋',
'注销' => '註銷',
+'注:' => '註:',
+'评断发' => '評斷發',
'评注' => '評註',
'词干' => '詞幹',
'词汇' => '詞彙',
@@ -7565,11 +8222,12 @@ $zh2Hant = array(
'试药' => '試藥',
'试制' => '試製',
'诗云' => '詩云',
+'詩云' => '詩云',
'诗赞' => '詩讚',
'诗钟' => '詩鐘',
'诗余' => '詩餘',
'话里有话' => '話裡有話',
-'该于' => '該於',
+'该钟' => '該鐘',
'详征博引' => '詳徵博引',
'详注' => '詳註',
'诔赞' => '誄讚',
@@ -7585,15 +8243,19 @@ $zh2Hant = array(
'语云' => '語云',
'语汇' => '語彙',
'语有云' => '語有云',
+'語有云' => '語有云',
'诚征' => '誠徵',
'诚朴' => '誠樸',
'诬蔑' => '誣衊',
'说着' => '說著',
+'谁干的' => '誰幹的',
'课后' => '課後',
'课征' => '課徵',
'课余' => '課餘',
'调准' => '調準',
'调制' => '調製',
+'调表' => '調錶',
+'调钟表' => '調鐘錶',
'谈征' => '談徵',
'请参阅' => '請參閱',
'请君入瓮' => '請君入甕',
@@ -7607,14 +8269,17 @@ $zh2Hant = array(
'谬赞' => '謬讚',
'謷丑' => '謷醜',
'谨于心' => '謹於心',
-'证于' => '證於',
'警世钟' => '警世鐘',
+'警报钟' => '警報鐘',
+'警示钟' => '警示鐘',
'警钟' => '警鐘',
'译注' => '譯註',
'护发' => '護髮',
'读后' => '讀後',
'变征' => '變徵',
'变丑' => '變醜',
+'变脏' => '變髒',
+'变髒' => '變髒',
'仇問' => '讎問',
'仇夷' => '讎夷',
'仇校' => '讎校',
@@ -7629,7 +8294,7 @@ $zh2Hant = array(
'赞歌' => '讚歌',
'赞叹' => '讚歎',
'赞美' => '讚美',
-'赞羨' => '讚羨',
+'赞羡' => '讚羨',
'赞许' => '讚許',
'赞词' => '讚詞',
'赞誉' => '讚譽',
@@ -7651,33 +8316,34 @@ $zh2Hant = array(
'贵征' => '貴徵',
'買凶' => '買兇',
'买凶' => '買兇',
+'买断发' => '買斷發',
'费占' => '費佔',
'贻范' => '貽範',
'资金占用' => '資金占用',
'贾后' => '賈後',
'赈饥' => '賑饑',
'赏赞' => '賞讚',
+'卖断发' => '賣斷發',
'卖呆' => '賣獃',
'质朴' => '質樸',
'赌台' => '賭檯',
'赌斗' => '賭鬥',
-'赖于' => '賴於',
'賸余' => '賸餘',
'购并' => '購併',
'购买欲' => '購買慾',
'赢余' => '贏餘',
+'赤术' => '赤朮',
'赤绳系足' => '赤繩繫足',
'赤霉素' => '赤霉素',
'走回路' => '走回路',
'走后' => '走後',
-'起于' => '起於',
'起复' => '起複',
'起哄' => '起鬨',
'超级杯' => '超級盃',
'赶制' => '趕製',
'赶面棍' => '趕麵棍',
+'赵治勋' => '趙治勳',
'赵庄' => '趙莊',
-'趋于' => '趨於',
'趱干' => '趲幹',
'足于' => '足於',
'跌扑' => '跌扑',
@@ -7698,9 +8364,9 @@ $zh2Hant = array(
'车站里' => '車站裡',
'车里' => '車裡',
'轨范' => '軌範',
+'军队克制' => '軍隊剋制',
'轩辟' => '軒闢',
'较于' => '較於',
-'载于' => '載於',
'挽曲' => '輓曲',
'挽歌' => '輓歌',
'挽聯' => '輓聯',
@@ -7731,7 +8397,6 @@ $zh2Hant = array(
'农庄' => '農莊',
'农药' => '農藥',
'迂回' => '迂迴',
-'近于' => '近於',
'近日無仇' => '近日無讎',
'近日里' => '近日裡',
'返朴' => '返樸',
@@ -7769,16 +8434,15 @@ $zh2Hant = array(
'退后' => '退後',
'退烧药' => '退燒藥',
'退藏于密' => '退藏於密',
+'逆钟' => '逆鐘',
+'逆钟向' => '逆鐘向',
'逋发' => '逋髮',
'逍遥游' => '逍遙遊',
'透辟' => '透闢',
+'这只是' => '這只是',
'这伙人' => '這夥人',
-'这里' => '這裏',
-'这里在' => '這裡在',
-'这里是' => '這裡是',
-'这里会' => '這裡會',
-'这里有' => '這裡有',
-'这里能' => '這裡能',
+'这里' => '這裡',
+'这钟' => '這鐘',
'这只' => '這隻',
'这么' => '這麼',
'这么着' => '這麼著',
@@ -7790,11 +8454,12 @@ $zh2Hant = array(
'通庄' => '通莊',
'逞凶鬥狠' => '逞兇鬥狠',
'逞凶斗狠' => '逞兇鬥狠',
+'造钟' => '造鐘',
+'造钟表' => '造鐘錶',
'造曲' => '造麯',
'连三并四' => '連三併四',
'连占' => '連佔',
'连采' => '連採',
-'连于' => '連於',
'连系' => '連繫',
'连庄' => '連莊',
'周游世界' => '週遊世界',
@@ -7825,7 +8490,6 @@ $zh2Hant = array(
'游历' => '遊歷',
'游民' => '遊民',
'游河' => '遊河',
-'游牧' => '遊牧',
'游猎' => '遊獵',
'游玩' => '遊玩',
'游荡' => '遊盪',
@@ -7850,7 +8514,6 @@ $zh2Hant = array(
'游离' => '遊離',
'游骑兵' => '遊騎兵',
'游魂' => '遊魂',
-'遍于' => '遍於',
'过后' => '過後',
'过于' => '過於',
'过杆' => '過杆',
@@ -7858,22 +8521,24 @@ $zh2Hant = array(
'道范' => '道範',
'逊于' => '遜於',
'递回' => '遞迴',
-'远于' => '遠於',
'远县才至' => '遠縣纔至',
'远游' => '遠遊',
'遨游' => '遨遊',
-'适于' => '適於',
'遮丑' => '遮醜',
'迁于' => '遷於',
+'选手表明' => '選手表明',
+'选手表决' => '選手表決',
+'选手表现' => '選手表現',
+'选手表示' => '選手表示',
+'选手表达' => '選手表達',
+'遗传钟' => '遺傳鐘',
'遗范' => '遺範',
'遗迹' => '遺迹',
'辽沈' => '遼瀋',
'避孕药' => '避孕藥',
-'避暑山庄' => '避暑山庄',
'邀天之幸' => '邀天之倖',
'还占' => '還佔',
'还采' => '還採',
-'还于' => '還於',
'还冲' => '還衝',
'邋里邋遢' => '邋裡邋遢',
'那只是' => '那只是',
@@ -7963,16 +8628,18 @@ $zh2Hant = array(
'丑类' => '醜類',
'酝酿着' => '醞釀著',
'医药' => '醫藥',
+'医院里' => '醫院裡',
'酿制' => '釀製',
'衅钟' => '釁鐘',
'采石之役' => '采石之役',
-'采石之戰' => '采石之戰',
'采石之战' => '采石之戰',
+'采石之戰' => '采石之戰',
'采石磯' => '采石磯',
'采石矶' => '采石磯',
'釉药' => '釉藥',
'里程表' => '里程錶',
'重划' => '重劃',
+'重回' => '重回',
'重折' => '重摺',
'重于' => '重於',
'重罗面' => '重羅麵',
@@ -7992,6 +8659,7 @@ $zh2Hant = array(
'金仆姑' => '金僕姑',
'金仑溪' => '金崙溪',
'金布道' => '金布道',
+'金范' => '金範',
'金表情' => '金表情',
'金表态' => '金表態',
'金表扬' => '金表揚',
@@ -8008,30 +8676,44 @@ $zh2Hant = array(
'金马仑道' => '金馬崙道',
'金发' => '金髮',
'钉锤' => '釘鎚',
+'钩心斗角' => '鈎心鬥角',
'铃响后' => '鈴響後',
-'钩心斗角' => '鉤心鬥角',
'银朱' => '銀硃',
'银发' => '銀髮',
+'铜范' => '銅範',
'铜制' => '銅製',
'铜钟' => '銅鐘',
+'铯钟' => '銫鐘',
'铝制' => '鋁製',
'铺锦列绣' => '鋪錦列繡',
+'钢之炼金术师' => '鋼之鍊金術師',
'钢梁' => '鋼樑',
'钢制' => '鋼製',
'录着' => '錄著',
'录制' => '錄製',
'锤炼' => '錘鍊',
'钱谷' => '錢穀',
+'钱范' => '錢範',
'钱庄' => '錢莊',
'锦绣花园' => '錦綉花園',
'锦绣' => '錦繡',
+'表停' => '錶停',
+'表冠' => '錶冠',
'表带' => '錶帶',
'表店' => '錶店',
'表厂' => '錶廠',
+'表快' => '錶快',
+'表慢' => '錶慢',
'表板' => '錶板',
'表壳' => '錶殼',
+'表王' => '錶王',
+'表的嘀嗒' => '錶的嘀嗒',
+'表的历史' => '錶的歷史',
'表盘' => '錶盤',
'表蒙子' => '錶蒙子',
+'表行' => '錶行',
+'表转' => '錶轉',
+'表速' => '錶速',
'表针' => '錶針',
'表链' => '錶鏈',
'炼冶' => '鍊冶',
@@ -8044,12 +8726,11 @@ $zh2Hant = array(
'炼汞' => '鍊汞',
'炼石' => '鍊石',
'炼贫' => '鍊貧',
-'炼金' => '鍊金',
+'炼金术' => '鍊金術',
'炼钢' => '鍊鋼',
'锅庄' => '鍋莊',
'锻炼出' => '鍛鍊出',
'锲而不舍' => '鍥而不捨',
-'钟表' => '鍾錶',
'镰仓' => '鎌倉',
'锤儿' => '鎚兒',
'锤子' => '鎚子',
@@ -8057,25 +8738,76 @@ $zh2Hant = array(
'锈病' => '鏽病',
'锈菌' => '鏽菌',
'锈蚀' => '鏽蝕',
+'钟上' => '鐘上',
+'钟下' => '鐘下',
+'钟不' => '鐘不',
'钟不扣不鸣' => '鐘不扣不鳴',
'钟不撞不鸣' => '鐘不撞不鳴',
+'钟不敲不响' => '鐘不敲不響',
+'钟不空则哑' => '鐘不空則啞',
'钟乳洞' => '鐘乳洞',
'钟乳石' => '鐘乳石',
-'钟在寺里' => '鐘在寺里',
+'钟停' => '鐘停',
+'钟匠' => '鐘匠',
+'钟口' => '鐘口',
+'钟在寺里' => '鐘在寺裡',
'钟塔' => '鐘塔',
+'钟壁' => '鐘壁',
+'钟太' => '鐘太',
+'钟好' => '鐘好',
'钟山' => '鐘山',
+'钟左右' => '鐘左右',
+'钟差' => '鐘差',
+'钟座' => '鐘座',
+'钟形' => '鐘形',
'钟形虫' => '鐘形蟲',
+'钟律' => '鐘律',
+'钟快' => '鐘快',
+'钟意' => '鐘意',
+'钟慢' => '鐘慢',
'钟摆' => '鐘擺',
+'钟敲' => '鐘敲',
+'钟有' => '鐘有',
'钟楼' => '鐘樓',
+'钟模' => '鐘模',
+'钟没' => '鐘沒',
'钟漏' => '鐘漏',
+'钟王' => '鐘王',
'钟琴' => '鐘琴',
+'钟发音' => '鐘發音',
+'钟的' => '鐘的',
+'钟盘' => '鐘盤',
'钟相' => '鐘相',
'钟磬' => '鐘磬',
+'钟纽' => '鐘紐',
+'钟罩' => '鐘罩',
'钟声' => '鐘聲',
-'钟表店' => '鐘錶店',
+'钟腰' => '鐘腰',
+'钟螺' => '鐘螺',
+'钟行' => '鐘行',
+'钟表面' => '鐘表面',
+'钟被' => '鐘被',
+'钟调' => '鐘調',
+'钟身' => '鐘身',
+'钟速' => '鐘速',
+'钟表' => '鐘錶',
+'钟表停' => '鐘錶停',
+'钟表快' => '鐘錶快',
+'钟表慢' => '鐘錶慢',
+'钟表历史' => '鐘錶歷史',
+'钟表王' => '鐘錶王',
+'钟表的' => '鐘錶的',
+'钟表的历史' => '鐘錶的歷史',
+'钟表盘' => '鐘錶盤',
+'钟表行' => '鐘錶行',
+'钟表速' => '鐘錶速',
'钟关' => '鐘關',
+'钟陈列' => '鐘陳列',
+'钟面' => '鐘面',
'钟响' => '鐘響',
+'钟顶' => '鐘頂',
'钟头' => '鐘頭',
+'钟体' => '鐘體',
'钟鸣' => '鐘鳴',
'钟点' => '鐘點',
'钟鼎' => '鐘鼎',
@@ -8084,6 +8816,7 @@ $zh2Hant = array(
'铁栏杆' => '鐵欄杆',
'铁锤' => '鐵鎚',
'铁锈' => '鐵鏽',
+'铁钟' => '鐵鐘',
'铸钟' => '鑄鐘',
'鉴于' => '鑒於',
'长几' => '長几',
@@ -8091,13 +8824,16 @@ $zh2Hant = array(
'长历' => '長曆',
'长历史' => '長歷史',
'长生药' => '長生藥',
+'长胡' => '長鬍',
'门前门后' => '門前門後',
'门帘' => '門帘',
'门吊儿' => '門弔兒',
'门里' => '門裡',
+'闫怀礼' => '閆懷禮',
'开吊' => '開弔',
'开征' => '開徵',
'开采' => '開採',
+'开发' => '開發',
'开药' => '開藥',
'开辟' => '開闢',
'开哄' => '開鬨',
@@ -8128,20 +8864,20 @@ $zh2Hant = array(
'辟谣' => '闢謠',
'辟辟' => '闢辟',
'辟邪以律' => '闢邪以律',
-'防患于未然' => '防患於未然',
'防晒' => '防晒',
+'防水表' => '防水錶',
'防御' => '防禦',
'防范' => '防範',
'防锈' => '防鏽',
'防台' => '防颱',
'阻于' => '阻於',
'阿呆瓜' => '阿呆瓜',
+'阿斯图里亚斯' => '阿斯圖里亞斯',
'阿呆' => '阿獃',
'附于' => '附於',
'附注' => '附註',
'降压药' => '降壓藥',
-'降于' => '降於',
-'限于' => '限於',
+'限制' => '限制',
'升官' => '陞官',
'除臭药' => '除臭藥',
'陪吊' => '陪弔',
@@ -8151,7 +8887,6 @@ $zh2Hant = array(
'阴沟里翻船' => '陰溝裡翻船',
'阴郁' => '陰鬱',
'陈炼' => '陳鍊',
-'陷于' => '陷於',
'陆游' => '陸遊',
'阳春面' => '陽春麵',
'阳历' => '陽曆',
@@ -8175,8 +8910,8 @@ $zh2Hant = array(
'集于' => '集於',
'集游法' => '集遊法',
'雇佣' => '雇傭',
-'雇于' => '雇於',
'雕梁画栋' => '雕樑畫棟',
+'双折射' => '雙折射',
'双折' => '雙摺',
'双胜类' => '雙胜類',
'双雕' => '雙鵰',
@@ -8197,24 +8932,28 @@ $zh2Hant = array(
'雨后' => '雨後',
'雪窗萤几' => '雪窗螢几',
'雪里' => '雪裡',
-'雪里红' => '雪里紅',
+'雪里红' => '雪裡紅',
+'雪里蕻' => '雪裡蕻',
'云南白药' => '雲南白藥',
'云笈七签' => '雲笈七籤',
'云游' => '雲遊',
'云须' => '雲鬚',
+'零个' => '零個',
'零多只' => '零多隻',
'零天后' => '零天後',
'零只' => '零隻',
'零余' => '零餘',
+'电子表格' => '電子表格',
'电子表' => '電子錶',
'电子钟' => '電子鐘',
+'电子钟表' => '電子鐘錶',
'电杆' => '電杆',
+'电码表' => '電碼表',
'电线杆' => '電線杆',
'电冲' => '電衝',
'电表' => '電錶',
'电钟' => '電鐘',
'震栗' => '震慄',
-'震于' => '震於',
'震荡' => '震蕩',
'雾里' => '霧裡',
'露丑' => '露醜',
@@ -8228,9 +8967,7 @@ $zh2Hant = array(
'青霉素' => '青霉素',
'青霉' => '青黴',
'非占不可' => '非佔不可',
-'非于' => '非於',
'靠后' => '靠後',
-'靠里面' => '靠裡面',
'面包住' => '面包住',
'面包含' => '面包含',
'面包围' => '面包圍',
@@ -8268,14 +9005,20 @@ $zh2Hant = array(
'韩制' => '韓製',
'音准' => '音準',
'音声如钟' => '音聲如鐘',
-'韶山冲' => '韶山衝',
-'页面' => '頁面',
+'韶山冲' => '韶山沖',
+'响钟' => '響鐘',
'頁面' => '頁面',
+'页面' => '頁面',
+'頂多' => '頂多',
+'顶多' => '頂多',
'项庄' => '項莊',
'顺于' => '順於',
+'顺钟向' => '順鐘向',
+'须根据' => '須根據',
'颂系' => '頌繫',
'颂赞' => '頌讚',
'预制' => '預製',
+'领域里' => '領域裡',
'领袖欲' => '領袖慾',
'头巾吊在水里' => '頭巾弔在水裡',
'头里' => '頭裡',
@@ -8291,7 +9034,10 @@ $zh2Hant = array(
'颠颠仆仆' => '顛顛仆仆',
'顾前不顾后' => '顧前不顧後',
'颤栗' => '顫慄',
-'显着标志' => '顯著標志',
+'显示表' => '顯示錶',
+'显示钟' => '顯示鐘',
+'显示钟表' => '顯示鐘錶',
+'显著标志' => '顯著標志',
'风干' => '風乾',
'风土志' => '風土誌',
'风卷残云' => '風捲殘雲',
@@ -8299,6 +9045,8 @@ $zh2Hant = array(
'风范' => '風範',
'风里' => '風裡',
'风起云涌' => '風起雲湧',
+'风采' => '風采',
+'風采' => '風采',
'台风' => '颱風',
'刮了' => '颳了',
'刮倒' => '颳倒',
@@ -8313,6 +9061,7 @@ $zh2Hant = array(
'飘飘荡荡' => '飄飄蕩蕩',
'飞扎' => '飛紮',
'飞刍挽粟' => '飛芻輓粟',
+'飞行钟' => '飛行鐘',
'食欲' => '食慾',
'食欲不振' => '食欲不振',
'食野之苹' => '食野之苹',
@@ -8404,7 +9153,7 @@ $zh2Hant = array(
'余绪' => '餘緒',
'余缺' => '餘缺',
'余罪' => '餘罪',
-'余羨' => '餘羨',
+'余羡' => '餘羨',
'余声' => '餘聲',
'余膏' => '餘膏',
'余兴' => '餘興',
@@ -8445,6 +9194,7 @@ $zh2Hant = array(
'馆后一街' => '館後一街',
'馆后二街' => '館後二街',
'馆谷' => '館穀',
+'馆里' => '館裡',
'喂乳' => '餵乳',
'喂了' => '餵了',
'喂奶' => '餵奶',
@@ -8464,12 +9214,17 @@ $zh2Hant = array(
'饥民' => '饑民',
'饥渴' => '饑渴',
'饥溺' => '饑溺',
+'饥荒' => '饑荒',
'饥饱' => '饑飽',
'饥馑' => '饑饉',
'首当其冲' => '首當其衝',
+'首发' => '首發',
+'首只' => '首隻',
'香干' => '香乾',
'香山庄' => '香山庄',
'马干' => '馬乾',
+'马占山' => '馬占山',
+'馬占山' => '馬占山',
'马后' => '馬後',
'马杆' => '馬杆',
'马表' => '馬錶',
@@ -8477,6 +9232,7 @@ $zh2Hant = array(
'骀荡' => '駘蕩',
'腾冲' => '騰衝',
'惊赞' => '驚讚',
+'惊钟' => '驚鐘',
'骨子里' => '骨子裡',
'骨干' => '骨幹',
'骨灰坛' => '骨灰罈',
@@ -8496,15 +9252,16 @@ $zh2Hant = array(
'脏词' => '髒詞',
'脏话' => '髒話',
'脏钱' => '髒錢',
+'脏发' => '髒髮',
'体范' => '體範',
+'体系' => '體系',
'高几' => '高几',
'高干扰' => '高干擾',
'高干预' => '高干預',
'高干' => '高幹',
'高度自制' => '高度自制',
-'高于' => '高於',
-'高升' => '高陞',
'髡发' => '髡髮',
+'髭胡' => '髭鬍',
'髭须' => '髭鬚',
'发上指冠' => '髮上指冠',
'发上冲冠' => '髮上沖冠',
@@ -8516,6 +9273,7 @@ $zh2Hant = array(
'发妻' => '髮妻',
'发姐' => '髮姐',
'发屋' => '髮屋',
+'发已霜白' => '髮已霜白',
'发带' => '髮帶',
'发廊' => '髮廊',
'发式' => '髮式',
@@ -8525,6 +9283,7 @@ $zh2Hant = array(
'发根' => '髮根',
'发油' => '髮油',
'发漂' => '髮漂',
+'发为血之本' => '髮為血之本',
'发状' => '髮狀',
'发癣' => '髮癬',
'发短心长' => '髮短心長',
@@ -8550,14 +9309,17 @@ $zh2Hant = array(
'发饰' => '髮飾',
'发髻' => '髮髻',
'发鬓' => '髮鬢',
+'髯胡' => '髯鬍',
'髼松' => '髼鬆',
'鬅松' => '鬅鬆',
'松一口气' => '鬆一口氣',
'松了' => '鬆了',
'松些' => '鬆些',
+'松元音' => '鬆元音',
'松劲' => '鬆勁',
'松动' => '鬆動',
'松口' => '鬆口',
+'松喉' => '鬆喉',
'松土' => '鬆土',
'松宽' => '鬆寬',
'松弛' => '鬆弛',
@@ -8586,6 +9348,7 @@ $zh2Hant = array(
'胡梢' => '鬍梢',
'胡渣' => '鬍渣',
'胡髭' => '鬍髭',
+'胡髯' => '鬍髯',
'胡须' => '鬍鬚',
'鬒发' => '鬒髮',
'须根' => '鬚根',
@@ -8593,6 +9356,7 @@ $zh2Hant = array(
'须生' => '鬚生',
'须眉' => '鬚眉',
'须发' => '鬚髮',
+'须胡' => '鬚鬍',
'须须' => '鬚鬚',
'须鲨' => '鬚鯊',
'须鲸' => '鬚鯨',
@@ -8609,6 +9373,7 @@ $zh2Hant = array(
'斗口' => '鬥口',
'斗合' => '鬥合',
'斗嘴' => '鬥嘴',
+'斗地主' => '鬥地主',
'斗士' => '鬥士',
'斗富' => '鬥富',
'斗巧' => '鬥巧',
@@ -8671,6 +9436,7 @@ $zh2Hant = array(
'斗鹌鹑' => '鬥鵪鶉',
'斗丽' => '鬥麗',
'闹着玩儿' => '鬧著玩兒',
+'闹表' => '鬧錶',
'闹钟' => '鬧鐘',
'哄动' => '鬨動',
'哄堂' => '鬨堂',
@@ -8678,6 +9444,7 @@ $zh2Hant = array(
'郁伊' => '鬱伊',
'郁勃' => '鬱勃',
'郁卒' => '鬱卒',
+'郁南' => '鬱南',
'郁堙不偶' => '鬱堙不偶',
'郁塞' => '鬱塞',
'郁垒' => '鬱壘',
@@ -8687,6 +9454,7 @@ $zh2Hant = array(
'郁愤' => '鬱憤',
'郁抑' => '鬱抑',
'郁挹' => '鬱挹',
+'郁林' => '鬱林',
'郁气' => '鬱氣',
'郁江' => '鬱江',
'郁沉沉' => '鬱沉沉',
@@ -8715,11 +9483,13 @@ $zh2Hant = array(
'鬼谷子' => '鬼谷子',
'魂牵梦系' => '魂牽夢繫',
'魏征' => '魏徵',
+'魔表' => '魔錶',
'鱼干' => '魚乾',
'鱼松' => '魚鬆',
'鲸须' => '鯨鬚',
'鲇鱼' => '鯰魚',
'鸠占鹊巢' => '鳩佔鵲巢',
+'凤凰于飞' => '鳳凰于飛',
'凤梨干' => '鳳梨乾',
'鸣钟' => '鳴鐘',
'鸿案相庄' => '鴻案相莊',
@@ -8733,6 +9503,7 @@ $zh2Hant = array(
'雕鹗' => '鵰鶚',
'鹤吊' => '鶴弔',
'鹤发' => '鶴髮',
+'鹰雕' => '鹰鵰',
'咸味' => '鹹味',
'咸嘴淡舌' => '鹹嘴淡舌',
'咸土' => '鹹土',
@@ -8816,6 +9587,9 @@ $zh2Hant = array(
'黄曲毒素' => '黃麴毒素',
'黑奴吁天录' => '黑奴籲天錄',
'黑发' => '黑髮',
+'点半钟' => '點半鐘',
+'点多钟' => '點多鐘',
+'点里' => '點裡',
'点钟' => '點鐘',
'霉毒' => '黴毒',
'霉素' => '黴素',
@@ -8848,34 +9622,50 @@ $zh2Hant = array(
'龙须' => '龍鬚',
'龙斗虎伤' => '龍鬥虎傷',
'龟山庄' => '龜山庄',
+'!克制' => '!剋制',
+',克制' => ',剋制',
'0多只' => '0多隻',
'0天后' => '0天後',
'0只' => '0隻',
'0余' => '0餘',
'1天后' => '1天後',
'1只' => '1隻',
+'1余' => '1餘',
'2天后' => '2天後',
'2只' => '2隻',
+'2余' => '2餘',
'3天后' => '3天後',
'3只' => '3隻',
+'3余' => '3餘',
'4天后' => '4天後',
'4只' => '4隻',
+'4余' => '4餘',
'5天后' => '5天後',
'5只' => '5隻',
+'5余' => '5餘',
'6天后' => '6天後',
'6只' => '6隻',
+'6余' => '6餘',
'7天后' => '7天後',
'7只' => '7隻',
+'7余' => '7餘',
'8天后' => '8天後',
'8只' => '8隻',
+'8余' => '8餘',
'9天后' => '9天後',
'9只' => '9隻',
+'9余' => '9餘',
+':克制' => ':剋制',
+';克制' => ';剋制',
+'?克制' => '?剋制',
);
$zh2Hans = array(
'㑳' => '㑇',
+'㞞' => '𪨊',
'㠏' => '㟆',
'㩜' => '㨫',
+'䉬' => '𫂈',
'䊷' => '䌶',
'䋙' => '䌺',
'䋻' => '䌾',
@@ -8984,6 +9774,7 @@ $zh2Hans = array(
'冪' => '幂',
'凈' => '净',
'凍' => '冻',
+'凙' => '𪞝',
'凜' => '凛',
'凱' => '凯',
'別' => '别',
@@ -9065,6 +9856,7 @@ $zh2Hans = array(
'嗩' => '唢',
'嗰' => '𠮶',
'嗶' => '哔',
+'嗹' => '𪡏',
'嘆' => '叹',
'嘍' => '喽',
'嘔' => '呕',
@@ -9119,6 +9911,7 @@ $zh2Hans = array(
'圓' => '圆',
'圖' => '图',
'團' => '团',
+'圞' => '𪢮',
'垵' => '埯',
'埡' => '垭',
'埰' => '采',
@@ -9227,6 +10020,7 @@ $zh2Hans = array(
'屢' => '屡',
'層' => '层',
'屨' => '屦',
+'屩' => '𪨗',
'屬' => '属',
'岡' => '冈',
'峴' => '岘',
@@ -9257,7 +10051,9 @@ $zh2Hans = array(
'巋' => '岿',
'巒' => '峦',
'巔' => '巅',
+'巖' => '岩',
'巰' => '巯',
+'巹' => '卺',
'帥' => '帅',
'師' => '师',
'帳' => '帐',
@@ -9804,6 +10600,7 @@ $zh2Hans = array(
'瑩' => '莹',
'瑪' => '玛',
'瑲' => '玱',
+'瑽' => '𪻐',
'璉' => '琏',
'璣' => '玑',
'璦' => '瑷',
@@ -9875,6 +10672,7 @@ $zh2Hans = array(
'盪' => '荡',
'眥' => '眦',
'眾' => '众',
+'睍' => '𪾢',
'睏' => '困',
'睜' => '睁',
'睞' => '睐',
@@ -10059,6 +10857,7 @@ $zh2Hans = array(
'絳' => '绛',
'絶' => '绝',
'絹' => '绢',
+'絺' => '𫄨',
'綁' => '绑',
'綃' => '绡',
'綆' => '绠',
@@ -10170,6 +10969,7 @@ $zh2Hans = array(
'繽' => '缤',
'繾' => '缱',
'繿' => '䍀',
+'纁' => '𫄸',
'纈' => '缬',
'纊' => '纩',
'續' => '续',
@@ -10192,6 +10992,7 @@ $zh2Hans = array(
'羈' => '羁',
'羋' => '芈',
'羥' => '羟',
+'羨' => '羡',
'義' => '义',
'習' => '习',
'翹' => '翘',
@@ -10245,6 +11046,7 @@ $zh2Hans = array(
'興' => '兴',
'舉' => '举',
'舊' => '旧',
+'舘' => '馆',
'艙' => '舱',
'艤' => '舣',
'艦' => '舰',
@@ -10364,6 +11166,7 @@ $zh2Hans = array(
'蟻' => '蚁',
'蠅' => '蝇',
'蠆' => '虿',
+'蠍' => '蝎',
'蠐' => '蛴',
'蠑' => '蝾',
'蠟' => '蜡',
@@ -10394,6 +11197,8 @@ $zh2Hans = array(
'褳' => '裢',
'褸' => '褛',
'褻' => '亵',
+'襀' => '𫌀',
+'襆' => '幞',
'襇' => '裥',
'襏' => '袯',
'襖' => '袄',
@@ -10419,6 +11224,7 @@ $zh2Hans = array(
'覲' => '觐',
'覷' => '觑',
'覺' => '觉',
+'覼' => '𫌨',
'覽' => '览',
'覿' => '觌',
'觀' => '观',
@@ -10433,6 +11239,7 @@ $zh2Hans = array(
'訌' => '讧',
'討' => '讨',
'訐' => '讦',
+'訑' => '𫍙',
'訒' => '讱',
'訓' => '训',
'訕' => '讪',
@@ -10532,6 +11339,7 @@ $zh2Hans = array(
'諫' => '谏',
'諭' => '谕',
'諮' => '咨',
+'諰' => '𫍰',
'諱' => '讳',
'諳' => '谙',
'諶' => '谌',
@@ -10547,6 +11355,7 @@ $zh2Hans = array(
'謅' => '诌',
'謊' => '谎',
'謎' => '谜',
+'謏' => '𫍲',
'謐' => '谧',
'謔' => '谑',
'謖' => '谡',
@@ -10566,6 +11375,7 @@ $zh2Hans = array(
'謾' => '谩',
'譅' => '䜧',
'證' => '证',
+'譊' => '𫍢',
'譎' => '谲',
'譏' => '讥',
'譖' => '谮',
@@ -10689,6 +11499,7 @@ $zh2Hans = array(
'蹣' => '蹒',
'蹤' => '踪',
'蹺' => '跷',
+'蹻' => '𫏋',
'躂' => '跶',
'躉' => '趸',
'躊' => '踌',
@@ -10708,12 +11519,14 @@ $zh2Hans = array(
'軋' => '轧',
'軌' => '轨',
'軍' => '军',
+'軏' => '𫐄',
'軑' => '轪',
'軒' => '轩',
'軔' => '轫',
'軛' => '轭',
'軟' => '软',
'軤' => '轷',
+'軨' => '𫐉',
'軫' => '轸',
'軲' => '轱',
'軸' => '轴',
@@ -10732,6 +11545,7 @@ $zh2Hans = array(
'輓' => '挽',
'輔' => '辅',
'輕' => '轻',
+'輗' => '𫐐',
'輛' => '辆',
'輜' => '辎',
'輝' => '辉',
@@ -10742,6 +11556,7 @@ $zh2Hans = array(
'輩' => '辈',
'輪' => '轮',
'輬' => '辌',
+'輮' => '𫐓',
'輯' => '辑',
'輳' => '辏',
'輸' => '输',
@@ -10760,6 +11575,7 @@ $zh2Hans = array(
'轟' => '轰',
'轡' => '辔',
'轢' => '轹',
+'轣' => '𫐆',
'轤' => '轳',
'辦' => '办',
'辭' => '辞',
@@ -10816,6 +11632,7 @@ $zh2Hans = array(
'醣' => '糖',
'醫' => '医',
'醬' => '酱',
+'醯' => '酰',
'醱' => '酦',
'釀' => '酿',
'釁' => '衅',
@@ -10845,6 +11662,7 @@ $zh2Hans = array(
'鈁' => '钫',
'鈃' => '钘',
'鈄' => '钭',
+'鈇' => '𫓧',
'鈈' => '钚',
'鈉' => '钠',
'鈋' => '𨱂',
@@ -11022,6 +11840,7 @@ $zh2Hans = array(
'鎩' => '铩',
'鎪' => '锼',
'鎬' => '镐',
+'鎭' => '鎮',
'鎮' => '镇',
'鎯' => '𨱍',
'鎰' => '镒',
@@ -11050,6 +11869,7 @@ $zh2Hans = array(
'鏡' => '镜',
'鏢' => '镖',
'鏤' => '镂',
+'鏦' => '𫓩',
'鏨' => '錾',
'鏰' => '镚',
'鏵' => '铧',
@@ -11059,6 +11879,7 @@ $zh2Hans = array(
'鏽' => '锈',
'鐃' => '铙',
'鐋' => '铴',
+'鐍' => '𫔎',
'鐎' => '𨱓',
'鐏' => '𨱔',
'鐐' => '镣',
@@ -11216,6 +12037,7 @@ $zh2Hans = array(
'韓' => '韩',
'韙' => '韪',
'韜' => '韬',
+'韝' => '鞲',
'韞' => '韫',
'韻' => '韵',
'響' => '响',
@@ -11319,15 +12141,19 @@ $zh2Hans = array(
'餑' => '饽',
'餒' => '馁',
'餓' => '饿',
+'餔' => '𫗦',
'餕' => '馂',
'餖' => '饾',
+'餗' => '𫗧',
'餘' => '余',
'餚' => '肴',
'餛' => '馄',
'餜' => '馃',
'餞' => '饯',
'餡' => '馅',
+'餦' => '𫗠',
'館' => '馆',
+'餭' => '𫗮',
'餱' => '糇',
'餳' => '饧',
'餵' => '喂',
@@ -11349,6 +12175,7 @@ $zh2Hans = array(
'饑' => '饥',
'饒' => '饶',
'饗' => '飨',
+'饘' => '𫗴',
'饜' => '餍',
'饞' => '馋',
'饢' => '馕',
@@ -11360,6 +12187,7 @@ $zh2Hans = array(
'馴' => '驯',
'馹' => '驲',
'駁' => '驳',
+'駃' => '𫘝',
'駎' => '𩧨',
'駐' => '驻',
'駑' => '驽',
@@ -11381,9 +12209,11 @@ $zh2Hans = array(
'駱' => '骆',
'駶' => '𩧺',
'駸' => '骎',
+'駻' => '𫘣',
'駿' => '骏',
'騁' => '骋',
'騂' => '骍',
+'騃' => '𫘤',
'騅' => '骓',
'騌' => '骔',
'騍' => '骒',
@@ -11395,6 +12225,7 @@ $zh2Hans = array(
'騚' => '𩨊',
'騝' => '𩨃',
'騟' => '𩨈',
+'騠' => '𫘨',
'騤' => '骙',
'騧' => '䯄',
'騪' => '𩨄',
@@ -11449,6 +12280,7 @@ $zh2Hans = array(
'魘' => '魇',
'魚' => '鱼',
'魛' => '鱽',
+'魟' => '𫚉',
'魢' => '鱾',
'魥' => '𩽹',
'魨' => '鲀',
@@ -11458,6 +12290,7 @@ $zh2Hans = array(
'魺' => '鲄',
'鮁' => '鲅',
'鮃' => '鲆',
+'鮄' => '𫚒',
'鮊' => '鲌',
'鮋' => '鲉',
'鮍' => '鲏',
@@ -11478,6 +12311,7 @@ $zh2Hans = array(
'鮫' => '鲛',
'鮭' => '鲑',
'鮮' => '鲜',
+'鮰' => '𫚔',
'鮳' => '鲓',
'鮶' => '鲪',
'鮸' => '𩾃',
@@ -11485,6 +12319,7 @@ $zh2Hans = array(
'鯀' => '鲧',
'鯁' => '鲠',
'鯄' => '𩾁',
+'鯆' => '𫚙',
'鯇' => '鲩',
'鯉' => '鲤',
'鯊' => '鲨',
@@ -11525,6 +12360,7 @@ $zh2Hans = array(
'鰟' => '鳑',
'鰠' => '鳋',
'鰣' => '鲥',
+'鰤' => '𫚕',
'鰥' => '鳏',
'鰧' => '䲢',
'鰨' => '鳎',
@@ -11559,6 +12395,7 @@ $zh2Hans = array(
'鱧' => '鳢',
'鱨' => '鲿',
'鱭' => '鲚',
+'鱮' => '𫚈',
'鱯' => '鳠',
'鱷' => '鳄',
'鱸' => '鲈',
@@ -11571,13 +12408,16 @@ $zh2Hans = array(
'鳳' => '凤',
'鳴' => '鸣',
'鳶' => '鸢',
+'鳷' => '𫛛',
'鳼' => '𪉃',
'鳾' => '䴓',
+'鴃' => '𫛞',
'鴆' => '鸩',
'鴇' => '鸨',
'鴉' => '鸦',
'鴒' => '鸰',
'鴕' => '鸵',
+'鴗' => '𫁡',
'鴛' => '鸳',
'鴜' => '𪉈',
'鴝' => '鸲',
@@ -11617,8 +12457,10 @@ $zh2Hans = array(
'鶇' => '鸫',
'鶉' => '鹑',
'鶊' => '鹒',
+'鶒' => '𫛶',
'鶓' => '鹋',
'鶖' => '鹙',
+'鶗' => '𫛸',
'鶘' => '鹕',
'鶚' => '鹗',
'鶡' => '鹖',
@@ -11660,6 +12502,7 @@ $zh2Hans = array(
'鷿' => '䴙',
'鸂' => '㶉',
'鸇' => '鹯',
+'鸋' => '𫛢',
'鸌' => '鹱',
'鸏' => '鹲',
'鸕' => '鸬',
@@ -11699,6 +12542,7 @@ $zh2Hans = array(
'鼉' => '鼍',
'鼕' => '冬',
'鼴' => '鼹',
+'齇' => '齄',
'齊' => '齐',
'齋' => '斋',
'齎' => '赍',
@@ -11734,6 +12578,7 @@ $zh2Hans = array(
'𦪙' => '䑽',
'𧜵' => '䙊',
'𧝞' => '䘛',
+'𧦧' => '𫍟',
'𧩙' => '䜥',
'𧵳' => '䞌',
'𨋢' => '䢂',
@@ -11798,7 +12643,7 @@ $zh2Hans = array(
'𪇳' => '𪉕',
'𪘀' => '𪚏',
'𪘯' => '𪚐',
-'《周易乾' => '《周易乾',
+'𫚒' => '軿',
'《易乾' => '《易乾',
'不著痕跡' => '不着痕迹',
'不著邊際' => '不着边际',
@@ -11861,6 +12706,7 @@ $zh2Hans = array(
'乾仪' => '乾仪',
'乾位' => '乾位',
'乾健' => '乾健',
+'乾健也' => '乾健也',
'乾元' => '乾元',
'乾光' => '乾光',
'乾兴' => '乾兴',
@@ -11871,6 +12717,8 @@ $zh2Hans = array(
'乾刘' => '乾刘',
'乾剛' => '乾刚',
'乾刚' => '乾刚',
+'乾務' => '乾务',
+'乾务' => '乾务',
'乾化' => '乾化',
'乾卦' => '乾卦',
'乾县' => '乾县',
@@ -11887,6 +12735,7 @@ $zh2Hans = array(
'乾坤' => '乾坤',
'乾城' => '乾城',
'乾基' => '乾基',
+'乾天也' => '乾天也',
'乾始' => '乾始',
'乾姓' => '乾姓',
'乾寧' => '乾宁',
@@ -11907,6 +12756,7 @@ $zh2Hans = array(
'乾律' => '乾律',
'乾德' => '乾德',
'乾心' => '乾心',
+'乾忠' => '乾忠',
'乾文' => '乾文',
'乾斷' => '乾断',
'乾断' => '乾断',
@@ -11928,7 +12778,10 @@ $zh2Hans = array(
'乾棟' => '乾栋',
'乾步' => '乾步',
'乾氏' => '乾氏',
+'乾沓和' => '乾沓和',
+'乾沓婆' => '乾沓婆',
'乾泉' => '乾泉',
+'乾淳' => '乾淳',
'乾清宮' => '乾清宫',
'乾清宫' => '乾清宫',
'乾渥' => '乾渥',
@@ -11971,14 +12824,15 @@ $zh2Hans = array(
'乾象' => '乾象',
'乾象歷' => '乾象历',
'乾象历' => '乾象历',
-'乾貞' => '乾贞',
'乾贞' => '乾贞',
+'乾貞' => '乾贞',
'乾貺' => '乾贶',
'乾贶' => '乾贶',
'乾车' => '乾车',
'乾車' => '乾车',
'乾轴' => '乾轴',
'乾軸' => '乾轴',
+'乾通' => '乾通',
'乾造' => '乾造',
'乾道' => '乾道',
'乾鑒' => '乾鉴',
@@ -12043,6 +12897,14 @@ $zh2Hans = array(
'仰屋著書' => '仰屋著书',
'彷彿' => '仿佛',
'夥計' => '伙计',
+'傳著' => '传着',
+'傳著書' => '传著书',
+'傳著作' => '传著作',
+'傳著名' => '传著名',
+'傳著錄' => '传著录',
+'傳著稱' => '传著称',
+'傳著者' => '传著者',
+'傳著述' => '传著述',
'伴著' => '伴着',
'伴著書' => '伴著书',
'伴著作' => '伴著作',
@@ -12077,6 +12939,7 @@ $zh2Hans = array(
'側著稱' => '侧著称',
'側著者' => '侧著者',
'側著述' => '侧著述',
+'保護著' => '保护着',
'保障著' => '保障着',
'保障著書' => '保障著书',
'保障著作' => '保障著作',
@@ -12093,6 +12956,7 @@ $zh2Hans = array(
'信著稱' => '信著称',
'信著者' => '信著者',
'信著述' => '信著述',
+'修鍊' => '修炼',
'候著' => '候着',
'候著書' => '候著书',
'候著作' => '候著作',
@@ -12109,6 +12973,8 @@ $zh2Hans = array(
'藉此' => '借此',
'藉由' => '借由',
'借著' => '借着',
+'藉着' => '借着',
+'藉著' => '借着',
'藉端' => '借端',
'借著書' => '借著书',
'借著作' => '借著作',
@@ -12287,6 +13153,9 @@ $zh2Hans = array(
'叫著述' => '叫著述',
'可穿著' => '可穿著',
'叱吒' => '叱吒',
+'吃不著' => '吃不着',
+'吃得著' => '吃得着',
+'吃著' => '吃着',
'吃衣著飯' => '吃衣著饭',
'合著' => '合著',
'名著' => '名著',
@@ -12306,6 +13175,8 @@ $zh2Hans = array(
'含著稱' => '含著称',
'含著者' => '含著者',
'含著述' => '含著述',
+'聽不著' => '听不着',
+'聽得著' => '听得着',
'聽著' => '听着',
'聽著書' => '听著书',
'聽著作' => '听著作',
@@ -12324,6 +13195,7 @@ $zh2Hans = array(
'吹著稱' => '吹著称',
'吹著者' => '吹著者',
'吹著述' => '吹著述',
+'周易乾' => '周易乾',
'味著' => '味着',
'味著書' => '味著书',
'味著作' => '味著作',
@@ -12366,6 +13238,9 @@ $zh2Hans = array(
'喝著稱' => '喝著称',
'喝著者' => '喝著者',
'喝著述' => '喝著述',
+'嗅不著' => '嗅不着',
+'嗅得著' => '嗅得着',
+'嗅著' => '嗅着',
'嚷著' => '嚷着',
'嚷著書' => '嚷著书',
'嚷著作' => '嚷著作',
@@ -12515,7 +13390,10 @@ $zh2Hans = array(
'幫著稱' => '帮著称',
'幫著者' => '帮著者',
'幫著述' => '帮著述',
+'乾乾淨淨' => '干干净净',
+'乾乾脆脆' => '干干脆脆',
'乾泉水' => '干泉水',
+'幹著' => '干着',
'么二三' => '幺二三',
'幺二三' => '幺二三',
'么元' => '幺元',
@@ -12560,6 +13438,7 @@ $zh2Hans = array(
'么麼' => '幺麽',
'幺麽小丑' => '幺麽小丑',
'么麼小丑' => '幺麽小丑',
+'庇護著' => '庇护着',
'應著' => '应着',
'應著書' => '应著书',
'應著作' => '应著作',
@@ -12708,8 +13587,6 @@ $zh2Hans = array(
'想著稱' => '想著称',
'想著者' => '想著者',
'想著述' => '想著述',
-'成效顯著' => '成效显著',
-'成績顯著' => '成绩显著',
'戰著' => '战着',
'戰著書' => '战著书',
'戰著作' => '战著作',
@@ -12752,15 +13629,8 @@ $zh2Hans = array(
'扛著述' => '扛著述',
'執著' => '执著',
'找不著' => '找不着',
-'找不著書' => '找不著书',
-'找不著作' => '找不著作',
-'找不著名' => '找不著名',
-'找不著錄' => '找不著录',
-'找不著稱' => '找不著称',
-'找不著者' => '找不著者',
-'找不著述' => '找不著述',
+'找得著' => '找得着',
'抓著' => '抓着',
-'抓著書' => '抓著书',
'抓著作' => '抓著作',
'抓著名' => '抓著名',
'抓著錄' => '抓著录',
@@ -12784,7 +13654,6 @@ $zh2Hans = array(
'披著者' => '披著者',
'披著述' => '披著述',
'抬著' => '抬着',
-'抬著書' => '抬著书',
'抬著作' => '抬著作',
'抬著名' => '抬著名',
'抬著錄' => '抬著录',
@@ -12792,7 +13661,6 @@ $zh2Hans = array(
'抬著者' => '抬著者',
'抬著述' => '抬著述',
'抱著' => '抱着',
-'抱著書' => '抱著书',
'抱著作' => '抱著作',
'抱著名' => '抱著名',
'抱著錄' => '抱著录',
@@ -12809,7 +13677,6 @@ $zh2Hans = array(
'拉著述' => '拉著述',
'拉鍊' => '拉链',
'拎著' => '拎着',
-'拎著書' => '拎著书',
'拎著作' => '拎著作',
'拎著名' => '拎著名',
'拎著錄' => '拎著录',
@@ -12817,7 +13684,6 @@ $zh2Hans = array(
'拎著者' => '拎著者',
'拎著述' => '拎著述',
'拖著' => '拖着',
-'拖著書' => '拖著书',
'拖著作' => '拖著作',
'拖著名' => '拖著名',
'拖著錄' => '拖著录',
@@ -12829,7 +13695,6 @@ $zh2Hans = array(
'拚搏' => '拚搏',
'拚死' => '拚死',
'拼著' => '拼着',
-'拼著書' => '拼著书',
'拼著作' => '拼著作',
'拼著名' => '拼著名',
'拼著錄' => '拼著录',
@@ -12837,7 +13702,6 @@ $zh2Hans = array(
'拼著者' => '拼著者',
'拼著述' => '拼著述',
'拿著' => '拿着',
-'拿著書' => '拿著书',
'拿著作' => '拿著作',
'拿著名' => '拿著名',
'拿著錄' => '拿著录',
@@ -12845,7 +13709,6 @@ $zh2Hans = array(
'拿著者' => '拿著者',
'拿著述' => '拿著述',
'持著' => '持着',
-'持著書' => '持著书',
'持著作' => '持著作',
'持著名' => '持著名',
'持著錄' => '持著录',
@@ -12853,7 +13716,6 @@ $zh2Hans = array(
'持著者' => '持著者',
'持著述' => '持著述',
'挑著' => '挑着',
-'挑著書' => '挑著书',
'挑著作' => '挑著作',
'挑著名' => '挑著名',
'挑著錄' => '挑著录',
@@ -12861,7 +13723,6 @@ $zh2Hans = array(
'挑著者' => '挑著者',
'挑著述' => '挑著述',
'擋著' => '挡着',
-'擋著書' => '挡著书',
'擋著作' => '挡著作',
'擋著名' => '挡著名',
'擋著錄' => '挡著录',
@@ -12877,7 +13738,6 @@ $zh2Hans = array(
'掙著者' => '挣著者',
'掙著述' => '挣著述',
'揮著' => '挥着',
-'揮著書' => '挥著书',
'揮著作' => '挥著作',
'揮著名' => '挥著名',
'揮著錄' => '挥著录',
@@ -12885,7 +13745,6 @@ $zh2Hans = array(
'揮著者' => '挥著者',
'揮著述' => '挥著述',
'挨著' => '挨着',
-'挨著書' => '挨著书',
'挨著作' => '挨著作',
'挨著名' => '挨著名',
'挨著錄' => '挨著录',
@@ -12893,7 +13752,6 @@ $zh2Hans = array(
'挨著者' => '挨著者',
'挨著述' => '挨著述',
'捆著' => '捆着',
-'捆著書' => '捆著书',
'捆著作' => '捆著作',
'捆著名' => '捆著名',
'捆著錄' => '捆著录',
@@ -12909,7 +13767,6 @@ $zh2Hans = array(
'據著者' => '据著者',
'據著述' => '据著述',
'掖著' => '掖着',
-'掖著書' => '掖著书',
'掖著作' => '掖著作',
'掖著名' => '掖著名',
'掖著錄' => '掖著录',
@@ -12917,7 +13774,6 @@ $zh2Hans = array(
'掖著者' => '掖著者',
'掖著述' => '掖著述',
'接著' => '接着',
-'接著書' => '接著书',
'接著作' => '接著作',
'接著名' => '接著名',
'接著錄' => '接著录',
@@ -12933,7 +13789,6 @@ $zh2Hans = array(
'揉著者' => '揉著者',
'揉著述' => '揉著述',
'提著' => '提着',
-'提著書' => '提著书',
'提著作' => '提著作',
'提著名' => '提著名',
'提著錄' => '提著录',
@@ -12941,7 +13796,6 @@ $zh2Hans = array(
'提著者' => '提著者',
'提著述' => '提著述',
'摟著' => '搂着',
-'摟著書' => '搂著书',
'摟著作' => '搂著作',
'摟著名' => '搂著名',
'摟著錄' => '搂著录',
@@ -12949,14 +13803,12 @@ $zh2Hans = array(
'摟著者' => '搂著者',
'摟著述' => '搂著述',
'擺著' => '摆着',
-'擺著書' => '摆著书',
'擺著作' => '摆著作',
'擺著名' => '摆著名',
'擺著錄' => '摆著录',
'擺著稱' => '摆著称',
'擺著者' => '摆著者',
'擺著述' => '摆著述',
-'摺疊' => '摺叠',
'撰著' => '撰著',
'撼著' => '撼着',
'撼著書' => '撼著书',
@@ -12966,9 +13818,7 @@ $zh2Hans = array(
'撼著稱' => '撼著称',
'撼著者' => '撼著者',
'撼著述' => '撼著述',
-'效果顯著' => '效果显著',
'敞著' => '敞着',
-'敞著書' => '敞著书',
'敞著作' => '敞著作',
'敞著名' => '敞著名',
'敞著錄' => '敞著录',
@@ -12976,7 +13826,6 @@ $zh2Hans = array(
'敞著者' => '敞著者',
'敞著述' => '敞著述',
'數著' => '数着',
-'數著書' => '数著书',
'數著作' => '数著作',
'數著名' => '数著名',
'數著錄' => '数著录',
@@ -13001,11 +13850,19 @@ $zh2Hans = array(
'斥著述' => '斥著述',
'新著' => '新著',
'新著龍虎門' => '新著龙虎门',
+'於世成' => '於世成',
'於乎' => '於乎',
+'於乙于同' => '於乙于同',
+'於乙宇同' => '於乙宇同',
+'於于同' => '於于同',
+'於哲' => '於哲',
'於夫罗' => '於夫罗',
'於夫羅' => '於夫罗',
'於姓' => '於姓',
+'於宇同' => '於宇同',
'於崇文' => '於崇文',
+'於志賀' => '於志贺',
+'於志贺' => '於志贺',
'於戲' => '於戏',
'於梨華' => '於梨华',
'於梨华' => '於梨华',
@@ -13015,6 +13872,7 @@ $zh2Hans = array(
'於祥玉' => '於祥玉',
'於菟' => '於菟',
'於賢德' => '於贤德',
+'於除鞬' => '於除鞬',
'旋乾轉坤' => '旋乾转坤',
'曠若發矇' => '旷若发矇',
'昂著' => '昂着',
@@ -13040,14 +13898,8 @@ $zh2Hans = array(
'映著述' => '映著述',
'昭著' => '昭著',
'顯著' => '显著',
-'顯著地' => '显著地',
-'顯著地位' => '显著地位',
-'顯著性' => '显著性',
-'顯著成績' => '显著成绩',
-'顯著效果' => '显著效果',
-'顯著特點' => '显著特点',
+'显著' => '显著',
'晃著' => '晃着',
-'晃著書' => '晃著书',
'晃著作' => '晃著作',
'晃著名' => '晃著名',
'晃著錄' => '晃著录',
@@ -13071,7 +13923,6 @@ $zh2Hans = array(
'有著者' => '有著者',
'有著述' => '有著述',
'望著' => '望着',
-'望著書' => '望著书',
'望著作' => '望著作',
'望著名' => '望著名',
'望著錄' => '望著录',
@@ -13080,7 +13931,6 @@ $zh2Hans = array(
'望著述' => '望著述',
'朝乾夕惕' => '朝乾夕惕',
'朝著' => '朝着',
-'朝著書' => '朝著书',
'朝著作' => '朝著作',
'朝著名' => '朝著名',
'朝著錄' => '朝著录',
@@ -13095,6 +13945,7 @@ $zh2Hans = array(
'本著稱' => '本著称',
'本著者' => '本著者',
'本著述' => '本著述',
+'朴於宇同' => '朴於宇同',
'殺著' => '杀着',
'殺著書' => '杀著书',
'殺著作' => '杀著作',
@@ -13112,6 +13963,8 @@ $zh2Hans = array(
'雜著者' => '杂著者',
'雜著述' => '杂著述',
'李乾德' => '李乾德',
+'李乾順' => '李乾顺',
+'李乾顺' => '李乾顺',
'李澤鉅' => '李泽钜',
'來著' => '来着',
'來著書' => '来著书',
@@ -13123,7 +13976,6 @@ $zh2Hans = array(
'來著述' => '来著述',
'楊幺' => '杨幺',
'枕著' => '枕着',
-'枕著書' => '枕著书',
'枕著作' => '枕著作',
'枕著名' => '枕著名',
'枕著錄' => '枕著录',
@@ -13132,6 +13984,8 @@ $zh2Hans = array(
'枕著述' => '枕著述',
'柳詒徵' => '柳诒徵',
'柳诒徵' => '柳诒徵',
+'標志著' => '标志着',
+'標誌著' => '标志着',
'夢著' => '梦着',
'夢著書' => '梦著书',
'夢著作' => '梦著作',
@@ -13141,7 +13995,6 @@ $zh2Hans = array(
'夢著者' => '梦著者',
'夢著述' => '梦著述',
'梳著' => '梳着',
-'梳著書' => '梳著书',
'梳著作' => '梳著作',
'梳著名' => '梳著名',
'梳著錄' => '梳著录',
@@ -13149,7 +14002,6 @@ $zh2Hans = array(
'梳著者' => '梳著者',
'梳著述' => '梳著述',
'樊於期' => '樊於期',
-'比較顯著' => '比较显著',
'氆氌' => '氆氌',
'求著' => '求着',
'求著書' => '求著书',
@@ -13179,6 +14031,7 @@ $zh2Hans = array(
'沿著稱' => '沿著称',
'沿著者' => '沿著者',
'沿著述' => '沿著述',
+'氾濫' => '泛滥',
'洗鍊' => '洗练',
'活著' => '活着',
'活著書' => '活著书',
@@ -13196,6 +14049,7 @@ $zh2Hans = array(
'流著稱' => '流著称',
'流著者' => '流著者',
'流著述' => '流著述',
+'流露著' => '流露着',
'浮著' => '浮着',
'浮著書' => '浮著书',
'浮著作' => '浮著作',
@@ -13274,6 +14128,7 @@ $zh2Hans = array(
'照著稱' => '照著称',
'照著者' => '照著者',
'照著述' => '照著述',
+'愛護著' => '爱护着',
'愛著' => '爱着',
'愛著書' => '爱著书',
'愛著作' => '爱著作',
@@ -13291,6 +14146,7 @@ $zh2Hans = array(
'牽著者' => '牵著者',
'牽著述' => '牵著述',
'犯不著' => '犯不着',
+'犯得著' => '犯得着',
'獨著' => '独着',
'獨著書' => '独著书',
'獨著作' => '独著作',
@@ -13307,6 +14163,7 @@ $zh2Hans = array(
'猜著稱' => '猜著称',
'猜著者' => '猜著者',
'猜著述' => '猜著述',
+'玩著' => '玩着',
'甜著' => '甜着',
'甜著書' => '甜著书',
'甜著作' => '甜著作',
@@ -13316,13 +14173,7 @@ $zh2Hans = array(
'甜著者' => '甜著者',
'甜著述' => '甜著述',
'用不著' => '用不着',
-'用不著書' => '用不着书',
-'用不著作' => '用不著作',
-'用不著名' => '用不著名',
-'用不著錄' => '用不著录',
-'用不著稱' => '用不著称',
-'用不著者' => '用不著者',
-'用不著述' => '用不著述',
+'用得著' => '用得着',
'用著' => '用着',
'用著書' => '用著书',
'用著作' => '用著作',
@@ -13347,7 +14198,6 @@ $zh2Hans = array(
'疑著稱' => '疑著称',
'疑著者' => '疑著者',
'疑著述' => '疑著述',
-'療效顯著' => '疗效显著',
'癥瘕' => '癥瘕',
'皺著' => '皱着',
'皺著書' => '皱著书',
@@ -13381,6 +14231,8 @@ $zh2Hans = array(
'盾著稱' => '盾著称',
'盾著者' => '盾著者',
'盾著述' => '盾著述',
+'看不著' => '看不着',
+'看得著' => '看得着',
'看著' => '看着',
'看著書' => '看着书',
'看著作' => '看著作',
@@ -13492,13 +14344,7 @@ $zh2Hans = array(
'著題' => '着题',
'著魔' => '着魔',
'睡不著' => '睡不着',
-'睡不著書' => '睡不著书',
-'睡不著作' => '睡不著作',
-'睡不著名' => '睡不著名',
-'睡不著錄' => '睡不著录',
-'睡不著稱' => '睡不著称',
-'睡不著者' => '睡不著者',
-'睡不著述' => '睡不著述',
+'睡得著' => '睡得着',
'睡著' => '睡着',
'睡著書' => '睡著书',
'睡著作' => '睡著作',
@@ -13517,6 +14363,14 @@ $zh2Hans = array(
'瞞著稱' => '瞒著称',
'瞞著者' => '瞒著者',
'瞞著述' => '瞒著述',
+'瞧著' => '瞧着',
+'瞧著書' => '瞧着书',
+'瞧著作' => '瞧著作',
+'瞧著名' => '瞧著名',
+'瞧著錄' => '瞧著录',
+'瞧著稱' => '瞧著称',
+'瞧著者' => '瞧著者',
+'瞧著述' => '瞧著述',
'瞪著' => '瞪着',
'瞪著書' => '瞪著书',
'瞪著作' => '瞪著作',
@@ -13644,6 +14498,7 @@ $zh2Hans = array(
'考著稱' => '考著称',
'考著者' => '考著者',
'考著述' => '考著述',
+'肉乾乾' => '肉干干',
'肘手鍊足' => '肘手链足',
'背著' => '背着',
'背著書' => '背著书',
@@ -13677,6 +14532,8 @@ $zh2Hans = array(
'苦著稱' => '苦著称',
'苦著者' => '苦著者',
'苦著述' => '苦著述',
+'苧烯' => '苧烯',
+'薴烯' => '苧烯',
'獲著' => '获着',
'獲著書' => '获著书',
'獲著作' => '获著作',
@@ -13938,6 +14795,8 @@ $zh2Hans = array(
'達著稱' => '达著称',
'達著者' => '达著者',
'達著述' => '达著述',
+'近角聪信' => '近角聪信',
+'近角聰信' => '近角聪信',
'遠著' => '远着',
'遠著書' => '远著书',
'遠著作' => '远著作',
@@ -13954,6 +14813,7 @@ $zh2Hans = array(
'連著稱' => '连著称',
'連著者' => '连著者',
'連著述' => '连著述',
+'迫著' => '迫着',
'追著' => '追着',
'追著書' => '追著书',
'追著作' => '追著作',
@@ -14005,6 +14865,14 @@ $zh2Hans = array(
'釀著稱' => '酿著称',
'釀著者' => '酿著者',
'釀著述' => '酿著述',
+'醯壺' => '醯壶',
+'醯壶' => '醯壶',
+'醯酱' => '醯酱',
+'醯醬' => '醯酱',
+'醯醋' => '醯醋',
+'醯醢' => '醯醢',
+'醯鸡' => '醯鸡',
+'醯雞' => '醯鸡',
'重覆' => '重复',
'金鍊' => '金链',
'鐵鍊' => '铁链',
@@ -14025,6 +14893,7 @@ $zh2Hans = array(
'鎖鍊' => '锁链',
'鍾鍛' => '锺锻',
'鍛鍾' => '锻锺',
+'閻懷禮' => '闫怀礼',
'閉著' => '闭着',
'閉著書' => '闭著书',
'閉著作' => '闭著作',
@@ -14041,6 +14910,10 @@ $zh2Hans = array(
'閑著稱' => '闲著称',
'閑著者' => '闲著者',
'閑著述' => '闲著述',
+'聞不著' => '闻不着',
+'聞得著' => '闻得着',
+'聞著' => '闻着',
+'阿部正瞭' => '阿部正瞭',
'附著' => '附着',
'附睪' => '附睾',
'附著書' => '附著书',
@@ -14094,6 +14967,13 @@ $zh2Hans = array(
'雅著者' => '雅著者',
'雅著述' => '雅著述',
'雍乾' => '雍乾',
+'靠著' => '靠着',
+'靠著作' => '靠著作',
+'靠著名' => '靠著名',
+'靠著錄' => '靠著录',
+'靠著稱' => '靠著称',
+'靠著者' => '靠著者',
+'靠著述' => '靠著述',
'頂著' => '顶着',
'頂著書' => '顶著书',
'頂著作' => '顶著作',
@@ -14128,7 +15008,6 @@ $zh2Hans = array(
'飄著者' => '飘著者',
'飄著述' => '飘著述',
'飭令' => '飭令',
-'餘年' => '馀年',
'駕著' => '驾着',
'駕著書' => '驾著书',
'駕著作' => '驾著作',
@@ -14180,6 +15059,7 @@ $zh2Hans = array(
'鬱姓' => '鬱姓',
'鬱氏' => '鬱氏',
'魏徵' => '魏徵',
+'魚乾乾' => '鱼干干',
'鯰魚' => '鲶鱼',
'麯崇裕' => '麯崇裕',
'麴義' => '麴义',
@@ -14205,6 +15085,8 @@ $zh2TW = array(
'’' => '』',
'三極管' => '三極體',
'三极管' => '三極體',
+'世界裏' => '世界裡',
+'中文裏' => '中文裡',
'串行' => '串列',
'串列加速器' => '串列加速器',
'以太网' => '乙太網',
@@ -14215,9 +15097,12 @@ $zh2TW = array(
'阿塞拜疆' => '亞塞拜然',
'人工智能' => '人工智慧',
'接口' => '介面',
+'任意球員' => '任意球員',
+'任意球员' => '任意球員',
'服务器' => '伺服器',
'字節' => '位元組',
'字节' => '位元組',
+'作品裏' => '作品裡',
'优先级' => '優先順序',
'元兇' => '元凶',
'元凶' => '元凶',
@@ -14226,7 +15111,8 @@ $zh2TW = array(
'克羅地亞' => '克羅埃西亞',
'克罗地亚' => '克羅埃西亞',
'全角' => '全形',
-'雪糕' => '冰淇淋',
+'冬天裏' => '冬天裡',
+'冬日裏' => '冬日裡',
'凉菜' => '冷盤',
'冷菜' => '冷盤',
'凶器' => '凶器',
@@ -14275,6 +15161,7 @@ $zh2TW = array(
'格鲁吉亚' => '喬治亞',
'佐治亚' => '喬治亞',
'佐治亞' => '喬治亞',
+'嘴裏' => '嘴裡',
'土库曼斯坦' => '土庫曼',
'薯仔' => '土豆',
'土豆網' => '土豆網',
@@ -14286,6 +15173,8 @@ $zh2TW = array(
'塞舌尔' => '塞席爾',
'塞舌爾' => '塞席爾',
'塞浦路斯' => '塞普勒斯',
+'夏天裏' => '夏天裡',
+'夏日裏' => '夏日裡',
'多明尼加共和國' => '多明尼加',
'多米尼加共和国' => '多明尼加',
'多米尼加共和國' => '多明尼加',
@@ -14300,19 +15189,23 @@ $zh2TW = array(
'字库' => '字型檔',
'字符集' => '字符集',
'存盘' => '存檔',
+'學裏' => '學裡',
'安提瓜和巴布達' => '安地卡及巴布達',
'安提瓜和巴布达' => '安地卡及巴布達',
'宋元' => '宋元',
'洪都拉斯' => '宏都拉斯',
'寻址' => '定址',
+'寒假裏' => '寒假裡',
'宽带' => '寬頻',
'老撾' => '寮國',
'老挝' => '寮國',
'打门' => '射門',
+'專輯裏' => '專輯裡',
'贊比亞' => '尚比亞',
'赞比亚' => '尚比亞',
'尼日爾' => '尼日',
'尼日尔' => '尼日',
+'山洞裏' => '山洞裡',
'巴布亞新畿內亞' => '巴布亞紐幾內亞',
'巴布亚新几内亚' => '巴布亞紐幾內亞',
'巴巴多斯' => '巴貝多',
@@ -14324,6 +15217,7 @@ $zh2TW = array(
'例程' => '常式',
'平治之乱' => '平治之亂',
'平治之亂' => '平治之亂',
+'年代裏' => '年代裡',
'几内亚比绍' => '幾內亞比索',
'幾內亞比紹' => '幾內亞比索',
'彩带' => '彩帶',
@@ -14332,11 +15226,13 @@ $zh2TW = array(
'彩牌楼' => '彩牌樓',
'復蘇' => '復甦',
'复苏' => '復甦',
+'心裏' => '心裡',
'快闪存储器' => '快閃記憶體',
'闪存' => '快閃記憶體',
'传感' => '感測',
'习用' => '慣用',
'戏彩娱亲' => '戲綵娛親',
+'戲裏' => '戲裡',
'手电筒' => '手電筒',
'手电' => '手電筒',
'括号' => '括弧',
@@ -14344,23 +15240,35 @@ $zh2TW = array(
'拿破仑' => '拿破崙',
'積架' => '捷豹',
'扫瞄仪' => '掃瞄器',
+'挂钩' => '掛鉤',
+'掛鈎' => '掛鉤',
'控件' => '控制項',
'台球' => '撞球',
'桌球' => '撞球',
'便携式' => '攜帶型',
+'故事裏' => '故事裡',
'调制解调器' => '數據機',
'調制解調器' => '數據機',
'斯洛文尼亞' => '斯洛維尼亞',
'斯洛文尼亚' => '斯洛維尼亞',
'新纪元' => '新紀元',
'新紀元' => '新紀元',
+'日子裏' => '日子裡',
+'春假裏' => '春假裡',
+'春天裏' => '春天裡',
+'春日裏' => '春日裡',
+'時間裏' => '時間裡',
'芯片' => '晶元',
+'暑假裏' => '暑假裡',
+'村子裏' => '村子裡',
'乍得' => '查德',
'克林頓' => '柯林頓',
'克林顿' => '柯林頓',
'格林納達' => '格瑞那達',
'格林纳达' => '格瑞那達',
'凡高' => '梵谷',
+'森林裏' => '森林裡',
+'棺材裏' => '棺材裡',
'榴蓮' => '榴槤',
'榴莲' => '榴槤',
'仿真' => '模擬',
@@ -14369,6 +15277,7 @@ $zh2TW = array(
'機械人' => '機器人',
'机器人' => '機器人',
'字段' => '欄位',
+'歷史裏' => '歷史裡',
'元音' => '母音',
'永历' => '永曆',
'文莱' => '汶萊',
@@ -14380,11 +15289,13 @@ $zh2TW = array(
'博茨瓦納' => '波札那',
'侯赛因' => '海珊',
'侯賽因' => '海珊',
+'深淵裏' => '深淵裡',
'光标' => '游標',
'鼠标' => '滑鼠',
'算法' => '演算法',
'乌兹别克斯坦' => '烏茲別克',
'词组' => '片語',
+'獄裏' => '獄裡',
'塞拉利昂' => '獅子山',
'危地马拉' => '瓜地馬拉',
'危地馬拉' => '瓜地馬拉',
@@ -14392,10 +15303,13 @@ $zh2TW = array(
'岡比亞' => '甘比亞',
'疑兇' => '疑凶',
'疑凶' => '疑凶',
+'百科裏' => '百科裡',
+'皮裏陽秋' => '皮裡陽秋',
'盧旺達' => '盧安達',
'卢旺达' => '盧安達',
'真凶' => '真凶',
'真兇' => '真凶',
+'眼睛裏' => '眼睛裡',
'硅片' => '矽片',
'硅谷' => '矽谷',
'硬盘' => '硬碟',
@@ -14404,6 +15318,9 @@ $zh2TW = array(
'磁盘' => '磁碟',
'磁道' => '磁軌',
'福士' => '福斯',
+'秋假裏' => '秋假裡',
+'秋天裏' => '秋天裡',
+'秋日裏' => '秋日裡',
'程控' => '程式控制',
'突尼斯' => '突尼西亞',
'尾注' => '章節附註',
@@ -14412,6 +15329,7 @@ $zh2TW = array(
'等于' => '等於',
'短訊' => '簡訊',
'短信' => '簡訊',
+'系列裏' => '系列裡',
'新西蘭' => '紐西蘭',
'新西兰' => '紐西蘭',
'所罗门群岛' => '索羅門群島',
@@ -14442,18 +15360,20 @@ $zh2TW = array(
'聖盧西亞' => '聖露西亞',
'圣马力诺' => '聖馬利諾',
'聖馬力諾' => '聖馬利諾',
+'肚裏' => '肚裡',
'肯尼亚' => '肯亞',
'肯雅' => '肯亞',
'任意球' => '自由球',
'航天大学' => '航天大學',
+'苦裏' => '苦裡',
'毛里塔尼亚' => '茅利塔尼亞',
'毛里塔尼亞' => '茅利塔尼亞',
'莫桑比克' => '莫三比克',
'万历' => '萬曆',
'瓦努阿图' => '萬那杜',
'瓦努阿圖' => '萬那杜',
-'也门' => '葉門',
'也門' => '葉門',
+'也门' => '葉門',
'着' => '著',
'科摩羅' => '葛摩',
'科摩罗' => '葛摩',
@@ -14470,10 +15390,13 @@ $zh2TW = array(
'流動電話' => '行動電話',
'移动电话' => '行動電話',
'行程控制' => '行程控制',
+'衞' => '衛',
'卫生' => '衛生',
'衞生' => '衛生',
'埃塞俄比亚' => '衣索比亞',
'埃塞俄比亞' => '衣索比亞',
+'裏勾外連' => '裡勾外連',
+'裏面' => '裡面',
'分辨率' => '解析度',
'译码' => '解碼',
'出租车' => '計程車',
@@ -14508,6 +15431,7 @@ $zh2TW = array(
'加納' => '迦納',
'追凶' => '追凶',
'追兇' => '追凶',
+'這裏' => '這裡',
'信道' => '通道',
'逞凶鬥狠' => '逞凶鬥狠',
'逞兇鬥狠' => '逞凶鬥狠',
@@ -14522,20 +15446,30 @@ $zh2TW = array(
'遠程控制' => '遠程控制',
'远程控制' => '遠程控制',
'溫納圖萬' => '那杜',
+'醫院裏' => '醫院裡',
+'酰' => '醯',
'巨商' => '鉅賈',
+'钩' => '鉤',
+'鈎' => '鉤',
+'钩心斗角' => '鉤心鬥角',
+'鈎心鬥角' => '鉤心鬥角',
'写保护' => '防寫',
'阿拉伯联合酋长国' => '阿拉伯聯合大公國',
'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
'噪声' => '雜訊',
'脱机' => '離線',
+'雪裏紅' => '雪裡紅',
+'雪裏蕻' => '雪裡蕻',
'雪铁龙' => '雪鐵龍',
'异步' => '非同步',
'声卡' => '音效卡',
'缺省' => '預設',
'颁布' => '頒布',
'頒佈' => '頒布',
+'領域裏' => '領域裡',
'头球' => '頭槌',
'粒入球' => '顆進球',
+'館裏' => '館裡',
'马里共和国' => '馬利共和國',
'馬里共和國' => '馬利共和國',
'马耳他' => '馬爾他',
@@ -14544,6 +15478,7 @@ $zh2TW = array(
'萬事得' => '馬自達',
'狄安娜' => '黛安娜',
'戴安娜' => '黛安娜',
+'點裏' => '點裡',
'位图' => '點陣圖',
);
@@ -14555,6 +15490,10 @@ $zh2HK = array(
'三極體' => '三極管',
'不著痕跡' => '不着痕跡',
'不著邊際' => '不着邊際',
+'世界裡' => '世界裏',
+'世界里' => '世界裏',
+'中文里' => '中文裏',
+'中文裡' => '中文裏',
'民乐' => '中樂',
'华乐' => '中樂',
'查德' => '乍得',
@@ -14623,6 +15562,8 @@ $zh2HK = array(
'住著述' => '住著述',
'住著錄' => '住著錄',
'維德角' => '佛得角',
+'作品裡' => '作品裏',
+'作品里' => '作品裏',
'來著' => '來着',
'來著作' => '來著作',
'來著名' => '來著名',
@@ -14727,6 +15668,13 @@ $zh2HK = array(
'冒著者' => '冒著者',
'冒著述' => '冒著述',
'冒著錄' => '冒著錄',
+'冬天里' => '冬天裏',
+'冬天裡' => '冬天裏',
+'冬日裡' => '冬日裏',
+'冬日里' => '冬日裏',
+'分布' => '分佈',
+'分布於' => '分佈於',
+'分布于' => '分佈於',
'列支敦斯登' => '列支敦士登',
'賴比瑞亞' => '利比里亞',
'制著' => '制着',
@@ -14771,6 +15719,7 @@ $zh2HK = array(
'動著者' => '動著者',
'動著述' => '動著述',
'動著錄' => '動著錄',
+'医院里' => '医院裏',
'波札那' => '博茨瓦納',
'珍妮弗·卡普里亚蒂' => '卡佩雅蒂',
'印著' => '印着',
@@ -14814,6 +15763,11 @@ $zh2HK = array(
'叫著者' => '叫著者',
'叫著述' => '叫著述',
'叫著錄' => '叫著錄',
+'叱吒' => '叱咤',
+'叱咤' => '叱咤',
+'吃不著' => '吃不着',
+'吃得著' => '吃得着',
+'吃著' => '吃着',
'吉布地' => '吉布堤',
'向著' => '向着',
'向著作' => '向著作',
@@ -14847,6 +15801,7 @@ $zh2HK = array(
'味著者' => '味著者',
'味著述' => '味著述',
'味著錄' => '味著錄',
+'咤' => '咤',
'哥斯大黎加' => '哥斯達黎加',
'哭著' => '哭着',
'哭著作' => '哭著作',
@@ -14873,6 +15828,11 @@ $zh2HK = array(
'喝著述' => '喝著述',
'喝著錄' => '喝著錄',
'自行车' => '單車',
+'嗅不著' => '嗅不着',
+'嗅得著' => '嗅得着',
+'嗅著' => '嗅着',
+'嘴里' => '嘴裏',
+'嘴裡' => '嘴裏',
'嚷著' => '嚷着',
'嚷著作' => '嚷著作',
'嚷著名' => '嚷著名',
@@ -14939,6 +15899,10 @@ $zh2HK = array(
'壓著者' => '壓著者',
'壓著述' => '壓著述',
'壓著錄' => '壓著錄',
+'夏天里' => '夏天裏',
+'夏天裡' => '夏天裏',
+'夏日里' => '夏日裏',
+'夏日裡' => '夏日裏',
'夢著' => '夢着',
'夢著作' => '夢著作',
'夢著名' => '夢著名',
@@ -14972,6 +15936,8 @@ $zh2HK = array(
'學著者' => '學著者',
'學著述' => '學著述',
'學著錄' => '學著錄',
+'學裡' => '學裏',
+'学里' => '學裏',
'守著' => '守着',
'守著作' => '守著作',
'守著名' => '守著名',
@@ -14990,6 +15956,8 @@ $zh2HK = array(
'定著述' => '定著述',
'定著錄' => '定著錄',
'沃尓沃' => '富豪',
+'寒假裡' => '寒假裏',
+'寒假里' => '寒假裏',
'寫著' => '寫着',
'寫著作' => '寫著作',
'寫著名' => '寫著名',
@@ -14998,6 +15966,8 @@ $zh2HK = array(
'寫著者' => '寫著者',
'寫著述' => '寫著述',
'寫著錄' => '寫著錄',
+'专辑里' => '專輯裏',
+'專輯裡' => '專輯裏',
'尋著' => '尋着',
'尋著作' => '尋著作',
'尋著名' => '尋著名',
@@ -15028,11 +15998,15 @@ $zh2HK = array(
'展著者' => '展著者',
'展著述' => '展著述',
'展著錄' => '展著錄',
+'山洞裡' => '山洞裏',
+'山洞里' => '山洞裏',
'甘比亞' => '岡比亞',
'公車' => '巴士',
'巴貝多' => '巴巴多斯',
'巴布亞紐幾內亞' => '巴布亞新畿內亞',
'布吉納法索' => '布基納法索',
+'布希亞' => '布希亞',
+'布希亚' => '布希亞',
'布希' => '布殊',
'布什' => '布殊',
'蒲隆地' => '布隆迪',
@@ -15054,7 +16028,12 @@ $zh2HK = array(
'幫著者' => '幫著者',
'幫著述' => '幫著述',
'幫著錄' => '幫著錄',
+'干着急' => '干着急',
'賓士' => '平治',
+'年代里' => '年代裏',
+'年代裡' => '年代裏',
+'幹著' => '幹着',
+'干着' => '幹着',
'幾內亞比索' => '幾內亞比紹',
'康著' => '康着',
'康著作' => '康著作',
@@ -15089,6 +16068,7 @@ $zh2HK = array(
'循著述' => '循著述',
'循著錄' => '循著錄',
'心著' => '心着',
+'心繫著' => '心繫着',
'心著作' => '心著作',
'心著名' => '心著名',
'心著書' => '心著書',
@@ -15096,6 +16076,8 @@ $zh2HK = array(
'心著者' => '心著者',
'心著述' => '心著述',
'心著錄' => '心著錄',
+'心裡' => '心裏',
+'心里' => '心裏',
'忍著' => '忍着',
'忍著作' => '忍著作',
'忍著名' => '忍著名',
@@ -15201,6 +16183,8 @@ $zh2HK = array(
'戰著者' => '戰著者',
'戰著述' => '戰著述',
'戰著錄' => '戰著錄',
+'戲裡' => '戲裏',
+'戏里' => '戲裏',
'黛安娜' => '戴安娜',
'狄安娜' => '戴安娜',
'戴著' => '戴着',
@@ -15231,17 +16215,10 @@ $zh2HK = array(
'扛著述' => '扛著述',
'扛著錄' => '扛著錄',
'找不著' => '找不着',
-'找不著作' => '找不著作',
-'找不著名' => '找不著名',
-'找不著書' => '找不著書',
-'找不著稱' => '找不著稱',
-'找不著者' => '找不著者',
-'找不著述' => '找不著述',
-'找不著錄' => '找不著錄',
+'找得著' => '找得着',
'抓著' => '抓着',
'抓著作' => '抓著作',
'抓著名' => '抓著名',
-'抓著書' => '抓著書',
'抓著稱' => '抓著稱',
'抓著者' => '抓著者',
'抓著述' => '抓著述',
@@ -15257,7 +16234,6 @@ $zh2HK = array(
'抬著' => '抬着',
'抬著作' => '抬著作',
'抬著名' => '抬著名',
-'抬著書' => '抬著書',
'抬著稱' => '抬著稱',
'抬著者' => '抬著者',
'抬著述' => '抬著述',
@@ -15265,7 +16241,6 @@ $zh2HK = array(
'抱著' => '抱着',
'抱著作' => '抱著作',
'抱著名' => '抱著名',
-'抱著書' => '抱著書',
'抱著稱' => '抱著稱',
'抱著者' => '抱著者',
'抱著述' => '抱著述',
@@ -15281,7 +16256,6 @@ $zh2HK = array(
'拎著' => '拎着',
'拎著作' => '拎著作',
'拎著名' => '拎著名',
-'拎著書' => '拎著書',
'拎著稱' => '拎著稱',
'拎著者' => '拎著者',
'拎著述' => '拎著述',
@@ -15289,7 +16263,6 @@ $zh2HK = array(
'拖著' => '拖着',
'拖著作' => '拖著作',
'拖著名' => '拖著名',
-'拖著書' => '拖著書',
'拖著稱' => '拖著稱',
'拖著者' => '拖著者',
'拖著述' => '拖著述',
@@ -15297,7 +16270,6 @@ $zh2HK = array(
'拼著' => '拼着',
'拼著作' => '拼著作',
'拼著名' => '拼著名',
-'拼著書' => '拼著書',
'拼著稱' => '拼著稱',
'拼著者' => '拼著者',
'拼著述' => '拼著述',
@@ -15306,7 +16278,6 @@ $zh2HK = array(
'拿破崙' => '拿破侖',
'拿著作' => '拿著作',
'拿著名' => '拿著名',
-'拿著書' => '拿著書',
'拿著稱' => '拿著稱',
'拿著者' => '拿著者',
'拿著述' => '拿著述',
@@ -15314,7 +16285,6 @@ $zh2HK = array(
'持著' => '持着',
'持著作' => '持著作',
'持著名' => '持著名',
-'持著書' => '持著書',
'持著稱' => '持著稱',
'持著者' => '持著者',
'持著述' => '持著述',
@@ -15322,7 +16292,6 @@ $zh2HK = array(
'挑著' => '挑着',
'挑著作' => '挑著作',
'挑著名' => '挑著名',
-'挑著書' => '挑著書',
'挑著稱' => '挑著稱',
'挑著者' => '挑著者',
'挑著述' => '挑著述',
@@ -15330,7 +16299,6 @@ $zh2HK = array(
'挨著' => '挨着',
'挨著作' => '挨著作',
'挨著名' => '挨著名',
-'挨著書' => '挨著書',
'挨著稱' => '挨著稱',
'挨著者' => '挨著者',
'挨著述' => '挨著述',
@@ -15338,7 +16306,6 @@ $zh2HK = array(
'捆著' => '捆着',
'捆著作' => '捆著作',
'捆著名' => '捆著名',
-'捆著書' => '捆著書',
'捆著稱' => '捆著稱',
'捆著者' => '捆著者',
'捆著述' => '捆著述',
@@ -15346,7 +16313,6 @@ $zh2HK = array(
'掖著' => '掖着',
'掖著作' => '掖著作',
'掖著名' => '掖著名',
-'掖著書' => '掖著書',
'掖著稱' => '掖著稱',
'掖著者' => '掖著者',
'掖著述' => '掖著述',
@@ -15359,10 +16325,10 @@ $zh2HK = array(
'掙著者' => '掙著者',
'掙著述' => '掙著述',
'掙著錄' => '掙著錄',
+'掛鉤' => '掛鈎',
'接著' => '接着',
'接著作' => '接著作',
'接著名' => '接著名',
-'接著書' => '接著書',
'接著稱' => '接著稱',
'接著者' => '接著者',
'接著述' => '接著述',
@@ -15378,7 +16344,6 @@ $zh2HK = array(
'提著' => '提着',
'提著作' => '提著作',
'提著名' => '提著名',
-'提著書' => '提著書',
'提著稱' => '提著稱',
'提著者' => '提著者',
'提著述' => '提著述',
@@ -15386,7 +16351,6 @@ $zh2HK = array(
'揮著' => '揮着',
'揮著作' => '揮著作',
'揮著名' => '揮著名',
-'揮著書' => '揮著書',
'揮著稱' => '揮著稱',
'揮著者' => '揮著者',
'揮著述' => '揮著述',
@@ -15394,7 +16358,6 @@ $zh2HK = array(
'摟著' => '摟着',
'摟著作' => '摟著作',
'摟著名' => '摟著名',
-'摟著書' => '摟著書',
'摟著稱' => '摟著稱',
'摟著者' => '摟著者',
'摟著述' => '摟著述',
@@ -15410,7 +16373,6 @@ $zh2HK = array(
'擋著' => '擋着',
'擋著作' => '擋著作',
'擋著名' => '擋著名',
-'擋著書' => '擋著書',
'擋著稱' => '擋著稱',
'擋著者' => '擋著者',
'擋著述' => '擋著述',
@@ -15426,15 +16388,15 @@ $zh2HK = array(
'擺著' => '擺着',
'擺著作' => '擺著作',
'擺著名' => '擺著名',
-'擺著書' => '擺著書',
'擺著稱' => '擺著稱',
'擺著者' => '擺著者',
'擺著述' => '擺著述',
'擺著錄' => '擺著錄',
+'故事里' => '故事裏',
+'故事裡' => '故事裏',
'敞著' => '敞着',
'敞著作' => '敞著作',
'敞著名' => '敞著名',
-'敞著書' => '敞著書',
'敞著稱' => '敞著稱',
'敞著者' => '敞著者',
'敞著述' => '敞著述',
@@ -15442,7 +16404,6 @@ $zh2HK = array(
'數著' => '數着',
'數著作' => '數著作',
'數著名' => '數著名',
-'數著書' => '數著書',
'數著稱' => '數著稱',
'數著者' => '數著者',
'數著述' => '數著述',
@@ -15459,6 +16420,8 @@ $zh2HK = array(
'斯洛維尼亞' => '斯洛文尼亞',
'新著龍虎門' => '新著龍虎門',
'紐西蘭' => '新西蘭',
+'日子里' => '日子裏',
+'日子裡' => '日子裏',
'昂著' => '昂着',
'昂著作' => '昂著作',
'昂著名' => '昂著名',
@@ -15475,14 +16438,23 @@ $zh2HK = array(
'映著者' => '映著者',
'映著述' => '映著述',
'映著錄' => '映著錄',
+'春假里' => '春假裏',
+'春假裡' => '春假裏',
+'春天裡' => '春天裏',
+'春天里' => '春天裏',
+'春日裡' => '春日裏',
+'春日里' => '春日裏',
+'时间里' => '時間裏',
+'時間裡' => '時間裏',
'晃著' => '晃着',
'晃著作' => '晃著作',
'晃著名' => '晃著名',
-'晃著書' => '晃著書',
'晃著稱' => '晃著稱',
'晃著者' => '晃著者',
'晃著述' => '晃著述',
'晃著錄' => '晃著錄',
+'暑假里' => '暑假裏',
+'暑假裡' => '暑假裏',
'暗著' => '暗着',
'暗著作' => '暗著作',
'暗著名' => '暗著名',
@@ -15510,7 +16482,6 @@ $zh2HK = array(
'朝著' => '朝着',
'朝著作' => '朝著作',
'朝著名' => '朝著名',
-'朝著書' => '朝著書',
'朝著稱' => '朝著稱',
'朝著者' => '朝著者',
'朝著述' => '朝著述',
@@ -15523,10 +16494,11 @@ $zh2HK = array(
'本著者' => '本著者',
'本著述' => '本著述',
'本著錄' => '本著錄',
+'村子里' => '村子裏',
+'村子裡' => '村子裏',
'枕著' => '枕着',
'枕著作' => '枕著作',
'枕著名' => '枕著名',
-'枕著書' => '枕著書',
'枕著稱' => '枕著稱',
'枕著者' => '枕著者',
'枕著述' => '枕著述',
@@ -15537,11 +16509,14 @@ $zh2HK = array(
'梳著' => '梳着',
'梳著作' => '梳著作',
'梳著名' => '梳著名',
-'梳著書' => '梳著書',
'梳著稱' => '梳著稱',
'梳著者' => '梳著者',
'梳著述' => '梳著述',
'梳著錄' => '梳著錄',
+'森林裡' => '森林裏',
+'森林里' => '森林裏',
+'棺材裡' => '棺材裏',
+'棺材里' => '棺材裏',
'榴蓮' => '榴槤',
'榴莲' => '榴槤',
'樂著' => '樂着',
@@ -15553,8 +16528,11 @@ $zh2HK = array(
'樂著述' => '樂著述',
'樂著錄' => '樂著錄',
'寶獅' => '標致',
+'標誌著' => '標誌着',
'機器人' => '機械人',
'机器人' => '機械人',
+'历史里' => '歷史裏',
+'歷史裡' => '歷史裏',
'殺著' => '殺着',
'殺著作' => '殺著作',
'殺著名' => '殺著名',
@@ -15615,6 +16593,7 @@ $zh2HK = array(
'流著者' => '流著者',
'流著述' => '流著述',
'流著錄' => '流著錄',
+'流露著' => '流露着',
'浮著' => '浮着',
'浮著作' => '浮著作',
'浮著名' => '浮著名',
@@ -15639,6 +16618,8 @@ $zh2HK = array(
'涼著者' => '涼著者',
'涼著述' => '涼著述',
'涼著錄' => '涼著錄',
+'深淵裡' => '深淵裏',
+'深渊里' => '深渊裏',
'渴著' => '渴着',
'渴著作' => '渴著作',
'渴著名' => '渴著名',
@@ -15679,6 +16660,7 @@ $zh2HK = array(
'潤著者' => '潤著者',
'潤著述' => '潤著述',
'潤著錄' => '潤著錄',
+'菸' => '煙',
'照著' => '照着',
'照著作' => '照著作',
'照著名' => '照著名',
@@ -15720,6 +16702,7 @@ $zh2HK = array(
'犯不著者' => '犯不著者',
'犯不著述' => '犯不著述',
'犯不著錄' => '犯不著錄',
+'犯得著' => '犯得着',
'犬只' => '狗隻',
'猜著' => '猜着',
'猜著作' => '猜著作',
@@ -15729,6 +16712,8 @@ $zh2HK = array(
'猜著者' => '猜著者',
'猜著述' => '猜著述',
'猜著錄' => '猜著錄',
+'狱里' => '獄裏',
+'獄裡' => '獄裏',
'獨著' => '獨着',
'獨著作' => '獨著作',
'獨著名' => '獨著名',
@@ -15756,13 +16741,7 @@ $zh2HK = array(
'甜著述' => '甜著述',
'甜著錄' => '甜著錄',
'用不著' => '用不着',
-'用不著作' => '用不著作',
-'用不著名' => '用不著名',
-'用不著書' => '用不著書',
-'用不著稱' => '用不著稱',
-'用不著者' => '用不著者',
-'用不著述' => '用不著述',
-'用不著錄' => '用不著錄',
+'用得著' => '用得着',
'用著' => '用着',
'用著作' => '用著作',
'用著名' => '用著名',
@@ -15797,8 +16776,12 @@ $zh2HK = array(
'疑著錄' => '疑著錄',
'发布' => '發佈',
'發布' => '發佈',
+'百科裡' => '百科裏',
+'百科里' => '百科裏',
'計程車' => '的士',
'出租车' => '的士',
+'皮里阳秋' => '皮裏陽秋',
+'皮裡陽秋' => '皮裏陽秋',
'皺著' => '皺着',
'皺著作' => '皺著作',
'皺著名' => '皺著名',
@@ -15832,6 +16815,8 @@ $zh2HK = array(
'盾著者' => '盾著者',
'盾著述' => '盾著述',
'盾著錄' => '盾著錄',
+'看不著' => '看不着',
+'看得著' => '看得着',
'看著' => '看着',
'看著作' => '看著作',
'看著名' => '看著名',
@@ -15840,6 +16825,8 @@ $zh2HK = array(
'看著者' => '看著者',
'看著述' => '看著述',
'看著錄' => '看著錄',
+'眼睛裡' => '眼睛裏',
+'眼睛里' => '眼睛裏',
'著什麼急' => '着什麼急',
'著他' => '着他',
'著你' => '着你',
@@ -15877,13 +16864,7 @@ $zh2HK = array(
'著陸' => '着陸',
'著鞭' => '着鞭',
'睡不著' => '睡不着',
-'睡不著作' => '睡不著作',
-'睡不著名' => '睡不著名',
-'睡不著書' => '睡不著書',
-'睡不著稱' => '睡不著稱',
-'睡不著者' => '睡不著者',
-'睡不著述' => '睡不著述',
-'睡不著錄' => '睡不著錄',
+'睡得著' => '睡得着',
'睡著' => '睡着',
'睡著作' => '睡著作',
'睡著名' => '睡著名',
@@ -15921,6 +16902,12 @@ $zh2HK = array(
'福著者' => '福著者',
'福著述' => '福著述',
'福著錄' => '福著錄',
+'秋假裡' => '秋假裏',
+'秋假里' => '秋假裏',
+'秋天裡' => '秋天裏',
+'秋天里' => '秋天裏',
+'秋日里' => '秋日裏',
+'秋日裡' => '秋日裏',
'葛摩' => '科摩羅',
'捷豹' => '積架',
'空著' => '空着',
@@ -15966,6 +16953,8 @@ $zh2HK = array(
'管著述' => '管著述',
'管著錄' => '管著錄',
'迈克尔·欧文' => '米高奧雲',
+'系列裡' => '系列裏',
+'系列里' => '系列裏',
'索馬利亞' => '索馬里',
'紮著' => '紮着',
'紮著作' => '紮著作',
@@ -16047,6 +17036,8 @@ $zh2HK = array(
'聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
'聖露西亞' => '聖盧西亞',
'聖馬利諾' => '聖馬力諾',
+'聽不著' => '聽不着',
+'聽得著' => '聽得着',
'聽著' => '聽着',
'聽著作' => '聽著作',
'聽著名' => '聽著名',
@@ -16055,6 +17046,8 @@ $zh2HK = array(
'聽著者' => '聽著者',
'聽著述' => '聽著述',
'聽著錄' => '聽著錄',
+'肚里' => '肚裏',
+'肚裡' => '肚裏',
'肯尼亚' => '肯雅',
'肯亞' => '肯雅',
'背著' => '背着',
@@ -16098,6 +17091,8 @@ $zh2HK = array(
'苦著者' => '苦著者',
'苦著述' => '苦著述',
'苦著錄' => '苦著錄',
+'苦里' => '苦裏',
+'苦裡' => '苦裏',
'莫三比克' => '莫桑比克',
'賴索托' => '萊索托',
'馬自達' => '萬事得',
@@ -16119,6 +17114,7 @@ $zh2HK = array(
'蒙著述' => '蒙著述',
'蒙著錄' => '蒙著錄',
'萨达姆' => '薩達姆',
+'藉著' => '藉着',
'藏著' => '藏着',
'藏著作' => '藏著作',
'藏著名' => '藏著名',
@@ -16151,6 +17147,7 @@ $zh2HK = array(
'行著者' => '行著者',
'行著述' => '行著述',
'行著錄' => '行著錄',
+'衛' => '衞',
'衣著' => '衣着',
'衣著作' => '衣著作',
'衣著名' => '衣著名',
@@ -16159,6 +17156,10 @@ $zh2HK = array(
'衣著者' => '衣著者',
'衣著述' => '衣著述',
'衣著錄' => '衣著錄',
+'裡勾外連' => '裏勾外連',
+'里勾外连' => '裏勾外連',
+'里面' => '裏面',
+'裡面' => '裏面',
'裝著' => '裝着',
'裝著作' => '裝著作',
'裝著名' => '裝著名',
@@ -16302,7 +17303,6 @@ $zh2HK = array(
'踏著' => '踏着',
'踏著作' => '踏著作',
'踏著名' => '踏著名',
-'踏著書' => '踏著書',
'踏著稱' => '踏著稱',
'踏著者' => '踏著者',
'踏著述' => '踏著述',
@@ -16364,6 +17364,9 @@ $zh2HK = array(
'辦著者' => '辦著者',
'辦著述' => '辦著述',
'辦著錄' => '辦著錄',
+'近角聪信' => '近角聰信',
+'近角聰信' => '近角聰信',
+'迫著' => '迫着',
'追著' => '追着',
'追著作' => '追著作',
'追著名' => '追著名',
@@ -16380,6 +17383,8 @@ $zh2HK = array(
'逆著者' => '逆著者',
'逆著述' => '逆著述',
'逆著錄' => '逆著錄',
+'這里' => '這裏',
+'這裡' => '這裏',
'連著' => '連着',
'連著作' => '連著作',
'連著名' => '連著名',
@@ -16428,6 +17433,7 @@ $zh2HK = array(
'配著者' => '配著者',
'配著述' => '配著述',
'配著錄' => '配著錄',
+'醯' => '酰',
'醜著' => '醜着',
'醜著作' => '醜著作',
'醜著名' => '醜著名',
@@ -16436,6 +17442,15 @@ $zh2HK = array(
'醜著者' => '醜著者',
'醜著述' => '醜著述',
'醜著錄' => '醜著錄',
+'醫院裡' => '醫院裏',
+'醯壺' => '醯壺',
+'醯壶' => '醯壺',
+'醯醋' => '醯醋',
+'醯醢' => '醯醢',
+'醯醬' => '醯醬',
+'醯酱' => '醯醬',
+'醯鸡' => '醯雞',
+'醯雞' => '醯雞',
'釀著' => '釀着',
'釀著作' => '釀著作',
'釀著名' => '釀著名',
@@ -16444,6 +17459,8 @@ $zh2HK = array(
'釀著者' => '釀著者',
'釀著述' => '釀著述',
'釀著錄' => '釀著錄',
+'鉤' => '鈎',
+'鉤心鬥角' => '鈎心鬥角',
'鋪著' => '鋪着',
'鋪著作' => '鋪著作',
'鋪著名' => '鋪著名',
@@ -16484,6 +17501,9 @@ $zh2HK = array(
'關著者' => '關著者',
'關著述' => '關著述',
'關著錄' => '關著錄',
+'聞不著' => '闻不着',
+'聞得著' => '闻得着',
+'聞著' => '闻着',
'亞塞拜然' => '阿塞拜疆',
'阿拉伯聯合大公國' => '阿拉伯聯合酋長國',
'附著' => '附着',
@@ -16543,6 +17563,19 @@ $zh2HK = array(
'雜著述' => '雜著述',
'雜著錄' => '雜著錄',
'冰淇淋' => '雪糕',
+'雪里红' => '雪裏紅',
+'雪裡紅' => '雪裏紅',
+'雪裡蕻' => '雪裏蕻',
+'雪里蕻' => '雪裏蕻',
+'靠著' => '靠着',
+'靠著作' => '靠著作',
+'靠著名' => '靠著名',
+'靠著稱' => '靠著稱',
+'靠著称' => '靠著稱',
+'靠著者' => '靠著者',
+'靠著述' => '靠著述',
+'靠著錄' => '靠著錄',
+'靠著录' => '靠著錄',
'響著' => '響着',
'響著作' => '響著作',
'響著名' => '響著名',
@@ -16569,6 +17602,8 @@ $zh2HK = array(
'順著錄' => '順著錄',
'頒布' => '頒佈',
'颁布' => '頒佈',
+'領域裡' => '領域裏',
+'领域里' => '領域裏',
'領著' => '領着',
'領著作' => '領著作',
'領著名' => '領著名',
@@ -16585,6 +17620,8 @@ $zh2HK = array(
'飄著者' => '飄著者',
'飄著述' => '飄著述',
'飄著錄' => '飄著錄',
+'館裡' => '館裏',
+'馆里' => '館裏',
'馬爾地夫' => '馬爾代夫',
'馬利共和國' => '馬里共和國',
'土豆' => '馬鈴薯',
@@ -16660,6 +17697,8 @@ $zh2HK = array(
'點著者' => '點著者',
'點著述' => '點著述',
'點著錄' => '點著錄',
+'點裡' => '點裏',
+'点里' => '點裏',
);
$zh2CN = array(
@@ -16697,6 +17736,7 @@ $zh2CN = array(
'維德角' => '佛得角',
'常式' => '例程',
'侏儸紀' => '侏罗纪',
+'海珊' => '侯赛因',
'攜帶型' => '便携式',
'資訊理論' => '信息论',
'母音' => '元音',
@@ -16731,6 +17771,7 @@ $zh2CN = array(
'十進位制' => '十进位制',
'十進位' => '十进制',
'半形' => '半角',
+'华乐街' => '华乐街',
'波札那' => '博茨瓦纳',
'盧安達' => '卢旺达',
'衞生' => '卫生',
@@ -16775,7 +17816,10 @@ $zh2CN = array(
'賓士' => '奔驰',
'平治' => '奔驰',
'忌廉' => '奶油',
-'乳酪' => '奶酪',
+'字元会' => '字元会',
+'字元會' => '字元会',
+'字元濟' => '字元济',
+'字元济' => '字元济',
'字型大小' => '字号',
'字型檔' => '字库',
'欄位' => '字段',
@@ -16801,6 +17845,8 @@ $zh2CN = array(
'布殊' => '布什',
'布基納法索' => '布基纳法索',
'布吉納法索' => '布基纳法索',
+'布希亞' => '布希亚',
+'布希亚' => '布希亚',
'蒲隆地' => '布隆迪',
'希特拉' => '希特勒',
'帛琉' => '帕劳',
@@ -16898,6 +17944,8 @@ $zh2CN = array(
'寮國' => '老挝',
'肯雅' => '肯尼亚',
'肯亞' => '肯尼亚',
+'自由球员' => '自由球员',
+'自由球員' => '自由球员',
'單車' => '自行车',
'太空梭' => '航天飞机',
'穿梭機' => '航天飞机',
@@ -16908,7 +17956,6 @@ $zh2CN = array(
'士多啤梨' => '草莓',
'莫三比克' => '莫桑比克',
'賴索托' => '莱索托',
-'海珊' => '萨达姆',
'辭彙' => '词汇',
'片語' => '词组',
'調制解調器' => '调制解调器',
@@ -16954,8 +18001,8 @@ $zh2SG = array(
'方便面' => '快速面',
'零钱' => '散钱',
'散紙' => '散钱',
-'榴莲' => '榴梿',
'榴蓮' => '榴梿',
+'榴莲' => '榴梿',
'笨豬跳' => '绑紧跳',
'蹦极跳' => '绑紧跳',
'笑星' => '谐星',
diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php
index 8cf8c096..b703ab4f 100644
--- a/includes/api/ApiBase.php
+++ b/includes/api/ApiBase.php
@@ -1,11 +1,11 @@
<?php
-/*
+/**
* Created on Sep 5, 2006
*
* API for MediaWiki 1.8+
*
- * Copyright (C) 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
+ * Copyright © 2006, 2010 Yuri Astrakhan <Firstname><Lastname>@gmail.com
*
* 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
@@ -49,6 +49,7 @@ abstract class ApiBase {
const PARAM_MAX2 = 4; // Max value allowed for a parameter for bots and sysops. Only applies if TYPE='integer'
const PARAM_MIN = 5; // Lowest value allowed for a parameter. Only applies if TYPE='integer'
const PARAM_ALLOW_DUPLICATES = 6; // Boolean, do we allow the same value to be set more than once when ISMULTI=true
+ const PARAM_DEPRECATED = 7; // Boolean, is the parameter deprecated (will show a warning)
const LIMIT_BIG1 = 500; // Fast query, std user limit
const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
@@ -56,6 +57,7 @@ abstract class ApiBase {
const LIMIT_SML2 = 500; // Slow query, bot/sysop limit
private $mMainModule, $mModuleName, $mModulePrefix;
+ private $mParamCache = array();
/**
* Constructor
@@ -63,7 +65,7 @@ abstract class ApiBase {
* @param $moduleName string Name of this module
* @param $modulePrefix string Prefix to use for parameter names
*/
- public function __construct($mainModule, $moduleName, $modulePrefix = '') {
+ public function __construct( $mainModule, $moduleName, $modulePrefix = '' ) {
$this->mMainModule = $mainModule;
$this->mModuleName = $moduleName;
$this->mModulePrefix = $modulePrefix;
@@ -119,11 +121,12 @@ abstract class ApiBase {
* Get the name of the module as shown in the profiler log
* @return string
*/
- public function getModuleProfileName($db = false) {
- if ($db)
+ public function getModuleProfileName( $db = false ) {
+ if ( $db ) {
return 'API:' . $this->mModuleName . '-DB';
- else
+ } else {
return 'API:' . $this->mModuleName;
+ }
}
/**
@@ -150,8 +153,9 @@ abstract class ApiBase {
public function getResult() {
// Main module has getResult() method overriden
// Safety - avoid infinite loop:
- if ($this->isMain())
- ApiBase :: dieDebug(__METHOD__, 'base method was called on main module. ');
+ if ( $this->isMain() ) {
+ ApiBase::dieDebug( __METHOD__, 'base method was called on main module. ' );
+ }
return $this->getMain()->getResult();
}
@@ -170,23 +174,24 @@ abstract class ApiBase {
* newlines
* @param $warning string Warning message
*/
- public function setWarning($warning) {
+ public function setWarning( $warning ) {
$data = $this->getResult()->getData();
- if(isset($data['warnings'][$this->getModuleName()]))
- {
- # Don't add duplicate warnings
- $warn_regex = preg_quote($warning, '/');
- if(preg_match("/{$warn_regex}(\\n|$)/", $data['warnings'][$this->getModuleName()]['*']))
+ if ( isset( $data['warnings'][$this->getModuleName()] ) ) {
+ // Don't add duplicate warnings
+ $warn_regex = preg_quote( $warning, '/' );
+ if ( preg_match( "/{$warn_regex}(\\n|$)/", $data['warnings'][$this->getModuleName()]['*'] ) )
+ {
return;
+ }
$oldwarning = $data['warnings'][$this->getModuleName()]['*'];
- # If there is a warning already, append it to the existing one
+ // If there is a warning already, append it to the existing one
$warning = "$oldwarning\n$warning";
- $this->getResult()->unsetValue('warnings', $this->getModuleName());
+ $this->getResult()->unsetValue( 'warnings', $this->getModuleName() );
}
$msg = array();
- ApiResult :: setContent($msg, $warning);
+ ApiResult::setContent( $msg, $warning );
$this->getResult()->disableSizeCheck();
- $this->getResult()->addValue('warnings', $this->getModuleName(), $msg);
+ $this->getResult()->addValue( 'warnings', $this->getModuleName(), $msg );
$this->getResult()->enableSizeCheck();
}
@@ -205,58 +210,65 @@ abstract class ApiBase {
* @return mixed string or false
*/
public function makeHelpMsg() {
-
static $lnPrfx = "\n ";
$msg = $this->getDescription();
- if ($msg !== false) {
+ if ( $msg !== false ) {
- if (!is_array($msg))
- $msg = array (
+ if ( !is_array( $msg ) ) {
+ $msg = array(
$msg
);
- $msg = $lnPrfx . implode($lnPrfx, $msg) . "\n";
+ }
+ $msg = $lnPrfx . implode( $lnPrfx, $msg ) . "\n";
- if ($this->isReadMode())
+ if ( $this->isReadMode() ) {
$msg .= "\nThis module requires read rights.";
- if ($this->isWriteMode())
+ }
+ if ( $this->isWriteMode() ) {
$msg .= "\nThis module requires write rights.";
- if ($this->mustBePosted())
+ }
+ if ( $this->mustBePosted() ) {
$msg .= "\nThis module only accepts POST requests.";
- if ($this->isReadMode() || $this->isWriteMode() ||
- $this->mustBePosted())
+ }
+ if ( $this->isReadMode() || $this->isWriteMode() ||
+ $this->mustBePosted() )
+ {
$msg .= "\n";
+ }
// Parameters
$paramsMsg = $this->makeHelpMsgParameters();
- if ($paramsMsg !== false) {
+ if ( $paramsMsg !== false ) {
$msg .= "Parameters:\n$paramsMsg";
}
// Examples
$examples = $this->getExamples();
- if ($examples !== false) {
- if (!is_array($examples))
- $examples = array (
+ if ( $examples !== false ) {
+ if ( !is_array( $examples ) ) {
+ $examples = array(
$examples
);
- $msg .= 'Example' . (count($examples) > 1 ? 's' : '') . ":\n ";
- $msg .= implode($lnPrfx, $examples) . "\n";
+ }
+ $msg .= 'Example' . ( count( $examples ) > 1 ? 's' : '' ) . ":\n ";
+ $msg .= implode( $lnPrfx, $examples ) . "\n";
}
- if ($this->getMain()->getShowVersions()) {
+ if ( $this->getMain()->getShowVersions() ) {
$versions = $this->getVersion();
$pattern = '/(\$.*) ([0-9a-z_]+\.php) (.*\$)/i';
- $replacement = '\\0' . "\n " . 'http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/api/\\2';
+ $callback = array( $this, 'makeHelpMsg_callback' );
- if (is_array($versions)) {
- foreach ($versions as &$v)
- $v = preg_replace($pattern, $replacement, $v);
- $versions = implode("\n ", $versions);
+ if ( is_array( $versions ) ) {
+ foreach ( $versions as &$v ) {
+ $v = preg_replace_callback( $pattern, $callback, $v );
+ }
+ $versions = implode( "\n ", $versions );
+ } else {
+ $versions = preg_replace_callback( $pattern, $callback, $versions );
}
- else
- $versions = preg_replace($pattern, $replacement, $versions);
$msg .= "Version:\n $versions\n";
}
@@ -272,51 +284,61 @@ abstract class ApiBase {
*/
public function makeHelpMsgParameters() {
$params = $this->getFinalParams();
- if ($params !== false) {
+ if ( $params ) {
$paramsDescription = $this->getFinalParamDescription();
$msg = '';
- $paramPrefix = "\n" . str_repeat(' ', 19);
- foreach ($params as $paramName => $paramSettings) {
- $desc = isset ($paramsDescription[$paramName]) ? $paramsDescription[$paramName] : '';
- if (is_array($desc))
- $desc = implode($paramPrefix, $desc);
-
- $type = isset($paramSettings[self :: PARAM_TYPE])? $paramSettings[self :: PARAM_TYPE] : null;
- if (isset ($type)) {
- if (isset ($paramSettings[self :: PARAM_ISMULTI]))
+ $paramPrefix = "\n" . str_repeat( ' ', 19 );
+ foreach ( $params as $paramName => $paramSettings ) {
+ $desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
+ if ( is_array( $desc ) ) {
+ $desc = implode( $paramPrefix, $desc );
+ }
+
+ $deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] ) ?
+ $paramSettings[self::PARAM_DEPRECATED] : false;
+ if ( $deprecated ) {
+ $desc = "DEPRECATED! $desc";
+ }
+
+ $type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null;
+ if ( isset( $type ) ) {
+ if ( isset( $paramSettings[self::PARAM_ISMULTI] ) ) {
$prompt = 'Values (separate with \'|\'): ';
- else
+ } else {
$prompt = 'One value: ';
+ }
- if (is_array($type)) {
+ if ( is_array( $type ) ) {
$choices = array();
$nothingPrompt = false;
- foreach ($type as $t)
- if ($t === '')
+ foreach ( $type as $t )
+ if ( $t === '' ) {
$nothingPrompt = 'Can be empty, or ';
- else
+ } else {
$choices[] = $t;
- $desc .= $paramPrefix . $nothingPrompt . $prompt . implode(', ', $choices);
+ }
+ $desc .= $paramPrefix . $nothingPrompt . $prompt . implode( ', ', $choices );
} else {
- switch ($type) {
+ switch ( $type ) {
case 'namespace':
// Special handling because namespaces are type-limited, yet they are not given
- $desc .= $paramPrefix . $prompt . implode(', ', ApiBase :: getValidNamespaces());
+ $desc .= $paramPrefix . $prompt . implode( ', ', ApiBase::getValidNamespaces() );
break;
case 'limit':
- $desc .= $paramPrefix . "No more than {$paramSettings[self :: PARAM_MAX]} ({$paramSettings[self :: PARAM_MAX2]} for bots) allowed.";
+ $desc .= $paramPrefix . "No more than {$paramSettings[self :: PARAM_MAX]} ({$paramSettings[self::PARAM_MAX2]} for bots) allowed.";
break;
case 'integer':
- $hasMin = isset($paramSettings[self :: PARAM_MIN]);
- $hasMax = isset($paramSettings[self :: PARAM_MAX]);
- if ($hasMin || $hasMax) {
- if (!$hasMax)
- $intRangeStr = "The value must be no less than {$paramSettings[self :: PARAM_MIN]}";
- elseif (!$hasMin)
- $intRangeStr = "The value must be no more than {$paramSettings[self :: PARAM_MAX]}";
- else
- $intRangeStr = "The value must be between {$paramSettings[self :: PARAM_MIN]} and {$paramSettings[self :: PARAM_MAX]}";
+ $hasMin = isset( $paramSettings[self::PARAM_MIN] );
+ $hasMax = isset( $paramSettings[self::PARAM_MAX] );
+ if ( $hasMin || $hasMax ) {
+ if ( !$hasMax ) {
+ $intRangeStr = "The value must be no less than {$paramSettings[self::PARAM_MIN]}";
+ } elseif ( !$hasMin ) {
+ $intRangeStr = "The value must be no more than {$paramSettings[self::PARAM_MAX]}";
+ } else {
+ $intRangeStr = "The value must be between {$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
+ }
$desc .= $paramPrefix . $intRangeStr;
}
@@ -325,16 +347,51 @@ abstract class ApiBase {
}
}
- $default = is_array($paramSettings) ? (isset ($paramSettings[self :: PARAM_DFLT]) ? $paramSettings[self :: PARAM_DFLT] : null) : $paramSettings;
- if (!is_null($default) && $default !== false)
+ $default = is_array( $paramSettings ) ? ( isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null ) : $paramSettings;
+ if ( !is_null( $default ) && $default !== false ) {
$desc .= $paramPrefix . "Default: $default";
+ }
- $msg .= sprintf(" %-14s - %s\n", $this->encodeParamName($paramName), $desc);
+ $msg .= sprintf( " %-14s - %s\n", $this->encodeParamName( $paramName ), $desc );
}
return $msg;
- } else
+ } else {
return false;
+ }
+ }
+
+ /**
+ * Callback for preg_replace_callback() call in makeHelpMsg().
+ * Replaces a source file name with a link to ViewVC
+ */
+ public function makeHelpMsg_callback( $matches ) {
+ global $wgAutoloadClasses, $wgAutoloadLocalClasses;
+ if ( isset( $wgAutoloadLocalClasses[get_class( $this )] ) ) {
+ $file = $wgAutoloadLocalClasses[get_class( $this )];
+ } elseif ( isset( $wgAutoloadClasses[get_class( $this )] ) ) {
+ $file = $wgAutoloadClasses[get_class( $this )];
+ }
+
+ // Do some guesswork here
+ $path = strstr( $file, 'includes/api/' );
+ if ( $path === false ) {
+ $path = strstr( $file, 'extensions/' );
+ } else {
+ $path = 'phase3/' . $path;
+ }
+
+ // Get the filename from $matches[2] instead of $file
+ // If they're not the same file, they're assumed to be in the
+ // same directory
+ // This is necessary to make stuff like ApiMain::getVersion()
+ // returning the version string for ApiBase work
+ if ( $path ) {
+ return "{$matches[0]}\n http://svn.wikimedia.org/" .
+ "viewvc/mediawiki/trunk/" . dirname( $path ) .
+ "/{$matches[2]}";
+ }
+ return $matches[0];
}
/**
@@ -373,7 +430,7 @@ abstract class ApiBase {
protected function getParamDescription() {
return false;
}
-
+
/**
* Get final list of parameters, after hooks have had a chance to
* tweak it as needed.
@@ -381,7 +438,7 @@ abstract class ApiBase {
*/
public function getFinalParams() {
$params = $this->getAllowedParams();
- wfRunHooks('APIGetAllowedParams', array(&$this, &$params));
+ wfRunHooks( 'APIGetAllowedParams', array( &$this, &$params ) );
return $params;
}
@@ -392,7 +449,7 @@ abstract class ApiBase {
*/
public function getFinalParamDescription() {
$desc = $this->getParamDescription();
- wfRunHooks('APIGetParamDescription', array(&$this, &$desc));
+ wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) );
return $desc;
}
@@ -402,56 +459,63 @@ abstract class ApiBase {
* @param $paramName string Parameter name
* @return string Prefixed parameter name
*/
- public function encodeParamName($paramName) {
+ public function encodeParamName( $paramName ) {
return $this->mModulePrefix . $paramName;
}
/**
- * Using getAllowedParams(), this function makes an array of the values
- * provided by the user, with key being the name of the variable, and
- * value - validated value from user or default. limit=max will not be
- * parsed if $parseMaxLimit is set to false; use this when the max
- * limit is not definitive yet, e.g. when getting revisions.
- * @param $parseMaxLimit bool
- * @return array
- */
- public function extractRequestParams($parseMaxLimit = true) {
- $params = $this->getFinalParams();
- $results = array ();
-
- foreach ($params as $paramName => $paramSettings)
- $results[$paramName] = $this->getParameterFromSettings($paramName, $paramSettings, $parseMaxLimit);
-
- return $results;
+ * Using getAllowedParams(), this function makes an array of the values
+ * provided by the user, with key being the name of the variable, and
+ * value - validated value from user or default. limits will not be
+ * parsed if $parseLimit is set to false; use this when the max
+ * limit is not definitive yet, e.g. when getting revisions.
+ * @param $parseLimit Boolean: true by default
+ * @return array
+ */
+ public function extractRequestParams( $parseLimit = true ) {
+ // Cache parameters, for performance and to avoid bug 24564.
+ if ( !isset( $this->mParamCache[$parseLimit] ) ) {
+ $params = $this->getFinalParams();
+ $results = array();
+
+ if ( $params ) { // getFinalParams() can return false
+ foreach ( $params as $paramName => $paramSettings ) {
+ $results[$paramName] = $this->getParameterFromSettings(
+ $paramName, $paramSettings, $parseLimit );
+ }
+ }
+ $this->mParamCache[$parseLimit] = $results;
+ }
+ return $this->mParamCache[$parseLimit];
}
/**
* Get a value for the given parameter
* @param $paramName string Parameter name
- * @param $parseMaxLimit bool see extractRequestParams()
+ * @param $parseLimit bool see extractRequestParams()
* @return mixed Parameter value
*/
- protected function getParameter($paramName, $parseMaxLimit = true) {
+ protected function getParameter( $paramName, $parseLimit = true ) {
$params = $this->getFinalParams();
$paramSettings = $params[$paramName];
- return $this->getParameterFromSettings($paramName, $paramSettings, $parseMaxLimit);
+ return $this->getParameterFromSettings( $paramName, $paramSettings, $parseLimit );
}
-
+
/**
- * Die if none or more than one of a certain set of parameters is set
+ * Die if none or more than one of a certain set of parameters is set and not false.
* @param $params array of parameter names
*/
- public function requireOnlyOneParameter($params) {
+ public function requireOnlyOneParameter( $params ) {
$required = func_get_args();
- array_shift($required);
-
- $intersection = array_intersect(array_keys(array_filter($params,
- create_function('$x', 'return !is_null($x);')
- )), $required);
- if (count($intersection) > 1) {
- $this->dieUsage('The parameters '.implode(', ', $intersection).' can not be used together', 'invalidparammix');
- } elseif (count($intersection) == 0) {
- $this->dieUsage('One of the parameters '.implode(', ', $required).' is required', 'missingparam');
+ array_shift( $required );
+
+ $intersection = array_intersect( array_keys( array_filter( $params,
+ create_function( '$x', 'return !is_null($x) && $x !== false;' )
+ ) ), $required );
+ if ( count( $intersection ) > 1 ) {
+ $this->dieUsage( 'The parameters ' . implode( ', ', $intersection ) . ' can not be used together', 'invalidparammix' );
+ } elseif ( count( $intersection ) == 0 ) {
+ $this->dieUsage( 'One of the parameters ' . implode( ', ', $required ) . ' is required', 'missingparam' );
}
}
@@ -462,15 +526,17 @@ abstract class ApiBase {
*/
public static function getValidNamespaces() {
static $mValidNamespaces = null;
- if (is_null($mValidNamespaces)) {
+ if ( is_null( $mValidNamespaces ) ) {
global $wgContLang;
- $mValidNamespaces = array ();
- foreach (array_keys($wgContLang->getNamespaces()) as $ns) {
- if ($ns >= 0)
+ $mValidNamespaces = array();
+ foreach ( array_keys( $wgContLang->getNamespaces() ) as $ns ) {
+ if ( $ns >= 0 ) {
$mValidNamespaces[] = $ns;
+ }
}
}
+
return $mValidNamespaces;
}
@@ -480,163 +546,183 @@ abstract class ApiBase {
* @param $paramName String: parameter name
* @param $paramSettings Mixed: default value or an array of settings
* using PARAM_* constants.
- * @param $parseMaxLimit Boolean: parse limit when max is given?
+ * @param $parseLimit Boolean: parse limit?
* @return mixed Parameter value
*/
- protected function getParameterFromSettings($paramName, $paramSettings, $parseMaxLimit) {
-
+ protected function getParameterFromSettings( $paramName, $paramSettings, $parseLimit ) {
// Some classes may decide to change parameter names
- $encParamName = $this->encodeParamName($paramName);
+ $encParamName = $this->encodeParamName( $paramName );
- if (!is_array($paramSettings)) {
+ if ( !is_array( $paramSettings ) ) {
$default = $paramSettings;
$multi = false;
- $type = gettype($paramSettings);
+ $type = gettype( $paramSettings );
$dupes = false;
+ $deprecated = false;
} else {
- $default = isset ($paramSettings[self :: PARAM_DFLT]) ? $paramSettings[self :: PARAM_DFLT] : null;
- $multi = isset ($paramSettings[self :: PARAM_ISMULTI]) ? $paramSettings[self :: PARAM_ISMULTI] : false;
- $type = isset ($paramSettings[self :: PARAM_TYPE]) ? $paramSettings[self :: PARAM_TYPE] : null;
- $dupes = isset ($paramSettings[self:: PARAM_ALLOW_DUPLICATES]) ? $paramSettings[self :: PARAM_ALLOW_DUPLICATES] : false;
+ $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
+ $multi = isset( $paramSettings[self::PARAM_ISMULTI] ) ? $paramSettings[self::PARAM_ISMULTI] : false;
+ $type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null;
+ $dupes = isset( $paramSettings[self::PARAM_ALLOW_DUPLICATES] ) ? $paramSettings[self::PARAM_ALLOW_DUPLICATES] : false;
+ $deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] ) ? $paramSettings[self::PARAM_DEPRECATED] : false;
// When type is not given, and no choices, the type is the same as $default
- if (!isset ($type)) {
- if (isset ($default))
- $type = gettype($default);
- else
+ if ( !isset( $type ) ) {
+ if ( isset( $default ) ) {
+ $type = gettype( $default );
+ } else {
$type = 'NULL'; // allow everything
+ }
}
}
- if ($type == 'boolean') {
- if (isset ($default) && $default !== false) {
+ if ( $type == 'boolean' ) {
+ if ( isset( $default ) && $default !== false ) {
// Having a default value of anything other than 'false' is pointless
- ApiBase :: dieDebug(__METHOD__, "Boolean param $encParamName's default is set to '$default'");
+ ApiBase::dieDebug( __METHOD__, "Boolean param $encParamName's default is set to '$default'" );
}
- $value = $this->getMain()->getRequest()->getCheck($encParamName);
+ $value = $this->getMain()->getRequest()->getCheck( $encParamName );
} else {
- $value = $this->getMain()->getRequest()->getVal($encParamName, $default);
+ $value = $this->getMain()->getRequest()->getVal( $encParamName, $default );
- if (isset ($value) && $type == 'namespace')
- $type = ApiBase :: getValidNamespaces();
+ if ( isset( $value ) && $type == 'namespace' ) {
+ $type = ApiBase::getValidNamespaces();
+ }
}
- if (isset ($value) && ($multi || is_array($type)))
- $value = $this->parseMultiValue($encParamName, $value, $multi, is_array($type) ? $type : null);
+ if ( isset( $value ) && ( $multi || is_array( $type ) ) ) {
+ $value = $this->parseMultiValue( $encParamName, $value, $multi, is_array( $type ) ? $type : null );
+ }
// More validation only when choices were not given
// choices were validated in parseMultiValue()
- if (isset ($value)) {
- if (!is_array($type)) {
- switch ($type) {
- case 'NULL' : // nothing to do
+ if ( isset( $value ) ) {
+ if ( !is_array( $type ) ) {
+ switch ( $type ) {
+ case 'NULL': // nothing to do
break;
- case 'string' : // nothing to do
+ case 'string': // nothing to do
break;
- case 'integer' : // Force everything using intval() and optionally validate limits
+ case 'integer': // Force everything using intval() and optionally validate limits
- $value = is_array($value) ? array_map('intval', $value) : intval($value);
- $min = isset ($paramSettings[self :: PARAM_MIN]) ? $paramSettings[self :: PARAM_MIN] : null;
- $max = isset ($paramSettings[self :: PARAM_MAX]) ? $paramSettings[self :: PARAM_MAX] : null;
+ $value = is_array( $value ) ? array_map( 'intval', $value ) : intval( $value );
+ $min = isset ( $paramSettings[self::PARAM_MIN] ) ? $paramSettings[self::PARAM_MIN] : null;
+ $max = isset ( $paramSettings[self::PARAM_MAX] ) ? $paramSettings[self::PARAM_MAX] : null;
- if (!is_null($min) || !is_null($max)) {
- $values = is_array($value) ? $value : array($value);
- foreach ($values as $v) {
- $this->validateLimit($paramName, $v, $min, $max);
+ if ( !is_null( $min ) || !is_null( $max ) ) {
+ $values = is_array( $value ) ? $value : array( $value );
+ foreach ( $values as &$v ) {
+ $this->validateLimit( $paramName, $v, $min, $max );
}
}
break;
- case 'limit' :
- if (!isset ($paramSettings[self :: PARAM_MAX]) || !isset ($paramSettings[self :: PARAM_MAX2]))
- ApiBase :: dieDebug(__METHOD__, "MAX1 or MAX2 are not defined for the limit $encParamName");
- if ($multi)
- ApiBase :: dieDebug(__METHOD__, "Multi-values not supported for $encParamName");
- $min = isset ($paramSettings[self :: PARAM_MIN]) ? $paramSettings[self :: PARAM_MIN] : 0;
- if( $value == 'max' ) {
- if( $parseMaxLimit ) {
- $value = $this->getMain()->canApiHighLimits() ? $paramSettings[self :: PARAM_MAX2] : $paramSettings[self :: PARAM_MAX];
- $this->getResult()->addValue( 'limits', $this->getModuleName(), $value );
- $this->validateLimit($paramName, $value, $min, $paramSettings[self :: PARAM_MAX], $paramSettings[self :: PARAM_MAX2]);
- }
+ case 'limit':
+ if ( !$parseLimit ) {
+ // Don't do any validation whatsoever
+ break;
+ }
+ if ( !isset( $paramSettings[self::PARAM_MAX] ) || !isset( $paramSettings[self::PARAM_MAX2] ) ) {
+ ApiBase::dieDebug( __METHOD__, "MAX1 or MAX2 are not defined for the limit $encParamName" );
}
- else {
- $value = intval($value);
- $this->validateLimit($paramName, $value, $min, $paramSettings[self :: PARAM_MAX], $paramSettings[self :: PARAM_MAX2]);
+ if ( $multi ) {
+ ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
+ }
+ $min = isset( $paramSettings[self::PARAM_MIN] ) ? $paramSettings[self::PARAM_MIN] : 0;
+ if ( $value == 'max' ) {
+ $value = $this->getMain()->canApiHighLimits() ? $paramSettings[self::PARAM_MAX2] : $paramSettings[self::PARAM_MAX];
+ $this->getResult()->addValue( 'limits', $this->getModuleName(), $value );
+ } else {
+ $value = intval( $value );
+ $this->validateLimit( $paramName, $value, $min, $paramSettings[self::PARAM_MAX], $paramSettings[self::PARAM_MAX2] );
}
break;
- case 'boolean' :
- if ($multi)
- ApiBase :: dieDebug(__METHOD__, "Multi-values not supported for $encParamName");
+ case 'boolean':
+ if ( $multi )
+ ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
break;
- case 'timestamp' :
- if ($multi)
- ApiBase :: dieDebug(__METHOD__, "Multi-values not supported for $encParamName");
- $value = wfTimestamp(TS_UNIX, $value);
- if ($value === 0)
- $this->dieUsage("Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}");
- $value = wfTimestamp(TS_MW, $value);
+ case 'timestamp':
+ if ( $multi ) {
+ ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
+ }
+ $value = wfTimestamp( TS_UNIX, $value );
+ if ( $value === 0 ) {
+ $this->dieUsage( "Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}" );
+ }
+ $value = wfTimestamp( TS_MW, $value );
break;
- case 'user' :
+ case 'user':
$title = Title::makeTitleSafe( NS_USER, $value );
- if ( is_null( $title ) )
- $this->dieUsage("Invalid value for user parameter $encParamName", "baduser_{$encParamName}");
+ if ( is_null( $title ) ) {
+ $this->dieUsage( "Invalid value for user parameter $encParamName", "baduser_{$encParamName}" );
+ }
$value = $title->getText();
break;
- default :
- ApiBase :: dieDebug(__METHOD__, "Param $encParamName's type is unknown - $type");
+ default:
+ ApiBase::dieDebug( __METHOD__, "Param $encParamName's type is unknown - $type" );
}
}
// Throw out duplicates if requested
- if (is_array($value) && !$dupes)
- $value = array_unique($value);
+ if ( is_array( $value ) && !$dupes ) {
+ $value = array_unique( $value );
+ }
+
+ // Set a warning if a deprecated parameter has been passed
+ if ( $deprecated && $value !== false ) {
+ $this->setWarning( "The $encParamName parameter has been deprecated." );
+ }
}
return $value;
}
/**
- * Return an array of values that were given in a 'a|b|c' notation,
- * after it optionally validates them against the list allowed values.
- *
- * @param $valueName string The name of the parameter (for error
- * reporting)
- * @param $value mixed The value being parsed
- * @param $allowMultiple bool Can $value contain more than one value
- * separated by '|'?
- * @param $allowedValues mixed An array of values to check against. If
- * null, all values are accepted.
- * @return mixed (allowMultiple ? an_array_of_values : a_single_value)
- */
- protected function parseMultiValue($valueName, $value, $allowMultiple, $allowedValues) {
- if( trim($value) === "" && $allowMultiple)
+ * Return an array of values that were given in a 'a|b|c' notation,
+ * after it optionally validates them against the list allowed values.
+ *
+ * @param $valueName string The name of the parameter (for error
+ * reporting)
+ * @param $value mixed The value being parsed
+ * @param $allowMultiple bool Can $value contain more than one value
+ * separated by '|'?
+ * @param $allowedValues mixed An array of values to check against. If
+ * null, all values are accepted.
+ * @return mixed (allowMultiple ? an_array_of_values : a_single_value)
+ */
+ protected function parseMultiValue( $valueName, $value, $allowMultiple, $allowedValues ) {
+ if ( trim( $value ) === '' && $allowMultiple ) {
return array();
- $sizeLimit = $this->mMainModule->canApiHighLimits() ? self::LIMIT_SML2 : self::LIMIT_SML1;
- $valuesList = explode('|', $value, $sizeLimit + 1);
- if( self::truncateArray($valuesList, $sizeLimit) ) {
- $this->setWarning("Too many values supplied for parameter '$valueName': the limit is $sizeLimit");
- }
- if (!$allowMultiple && count($valuesList) != 1) {
- $possibleValues = is_array($allowedValues) ? "of '" . implode("', '", $allowedValues) . "'" : '';
- $this->dieUsage("Only one $possibleValues is allowed for parameter '$valueName'", "multival_$valueName");
- }
- if (is_array($allowedValues)) {
- # Check for unknown values
- $unknown = array_diff($valuesList, $allowedValues);
- if(count($unknown))
- {
- if($allowMultiple)
- {
- $s = count($unknown) > 1 ? "s" : "";
- $vals = implode(", ", $unknown);
- $this->setWarning("Unrecognized value$s for parameter '$valueName': $vals");
+ }
+
+ // This is a bit awkward, but we want to avoid calling canApiHighLimits() because it unstubs $wgUser
+ $valuesList = explode( '|', $value, self::LIMIT_SML2 + 1 );
+ $sizeLimit = count( $valuesList ) > self::LIMIT_SML1 && $this->mMainModule->canApiHighLimits() ?
+ self::LIMIT_SML2 : self::LIMIT_SML1;
+
+ if ( self::truncateArray( $valuesList, $sizeLimit ) ) {
+ $this->setWarning( "Too many values supplied for parameter '$valueName': the limit is $sizeLimit" );
+ }
+
+ if ( !$allowMultiple && count( $valuesList ) != 1 ) {
+ $possibleValues = is_array( $allowedValues ) ? "of '" . implode( "', '", $allowedValues ) . "'" : '';
+ $this->dieUsage( "Only one $possibleValues is allowed for parameter '$valueName'", "multival_$valueName" );
+ }
+
+ if ( is_array( $allowedValues ) ) {
+ // Check for unknown values
+ $unknown = array_diff( $valuesList, $allowedValues );
+ if ( count( $unknown ) ) {
+ if ( $allowMultiple ) {
+ $s = count( $unknown ) > 1 ? 's' : '';
+ $vals = implode( ", ", $unknown );
+ $this->setWarning( "Unrecognized value$s for parameter '$valueName': $vals" );
+ } else {
+ $this->dieUsage( "Unrecognized value for parameter '$valueName': {$valuesList[0]}", "unknown_$valueName" );
}
- else
- $this->dieUsage("Unrecognized value for parameter '$valueName': {$valuesList[0]}", "unknown_$valueName");
}
- # Now throw them out
- $valuesList = array_intersect($valuesList, $allowedValues);
+ // Now throw them out
+ $valuesList = array_intersect( $valuesList, $allowedValues );
}
return $allowMultiple ? $valuesList : $valuesList[0];
@@ -651,54 +737,61 @@ abstract class ApiBase {
* @param $max int Maximum value for users
* @param $botMax int Maximum value for sysops/bots
*/
- function validateLimit($paramName, $value, $min, $max, $botMax = null) {
- if (!is_null($min) && $value < $min) {
- $this->dieUsage($this->encodeParamName($paramName) . " may not be less than $min (set to $value)", $paramName);
+ function validateLimit( $paramName, &$value, $min, $max, $botMax = null ) {
+ if ( !is_null( $min ) && $value < $min ) {
+ $this->setWarning( $this->encodeParamName( $paramName ) . " may not be less than $min (set to $value)" );
+ $value = $min;
}
// Minimum is always validated, whereas maximum is checked only if not running in internal call mode
- if ($this->getMain()->isInternalMode())
+ if ( $this->getMain()->isInternalMode() ) {
return;
+ }
// Optimization: do not check user's bot status unless really needed -- skips db query
// assumes $botMax >= $max
- if (!is_null($max) && $value > $max) {
- if (!is_null($botMax) && $this->getMain()->canApiHighLimits()) {
- if ($value > $botMax) {
- $this->dieUsage($this->encodeParamName($paramName) . " may not be over $botMax (set to $value) for bots or sysops", $paramName);
+ if ( !is_null( $max ) && $value > $max ) {
+ if ( !is_null( $botMax ) && $this->getMain()->canApiHighLimits() ) {
+ if ( $value > $botMax ) {
+ $this->setWarning( $this->encodeParamName( $paramName ) . " may not be over $botMax (set to $value) for bots or sysops" );
+ $value = $botMax;
}
} else {
- $this->dieUsage($this->encodeParamName($paramName) . " may not be over $max (set to $value) for users", $paramName);
+ $this->setWarning( $this->encodeParamName( $paramName ) . " may not be over $max (set to $value) for users" );
+ $value = $max;
}
}
}
-
+
/**
* Truncate an array to a certain length.
* @param $arr array Array to truncate
* @param $limit int Maximum length
* @return bool True if the array was truncated, false otherwise
*/
- public static function truncateArray(&$arr, $limit)
- {
+ public static function truncateArray( &$arr, $limit ) {
$modified = false;
- while(count($arr) > $limit)
- {
- $junk = array_pop($arr);
+ while ( count( $arr ) > $limit ) {
+ $junk = array_pop( $arr );
$modified = true;
}
return $modified;
}
/**
- * Call the main module's error handler
- * @param $description string Error text
- * @param $errorCode string Error code
+ * Throw a UsageException, which will (if uncaught) call the main module's
+ * error handler and die with an error message.
+ *
+ * @param $description string One-line human-readable description of the
+ * error condition, e.g., "The API requires a valid action parameter"
+ * @param $errorCode string Brief, arbitrary, stable string to allow easy
+ * automated identification of the error, e.g., 'unknown_action'
* @param $httpRespCode int HTTP response code
+ * @param $extradata array Data to add to the <error> element; array in ApiResult format
*/
- public function dieUsage($description, $errorCode, $httpRespCode = 0) {
+ public function dieUsage( $description, $errorCode, $httpRespCode = 0, $extradata = null ) {
wfProfileClose();
- throw new UsageException($description, $this->encodeParamName($errorCode), $httpRespCode);
+ throw new UsageException( $description, $this->encodeParamName( $errorCode ), $httpRespCode, $extradata );
}
/**
@@ -706,145 +799,170 @@ abstract class ApiBase {
*/
public static $messageMap = array(
// This one MUST be present, or dieUsageMsg() will recurse infinitely
- 'unknownerror' => array('code' => 'unknownerror', 'info' => "Unknown error: ``\$1''"),
- 'unknownerror-nocode' => array('code' => 'unknownerror', 'info' => 'Unknown error'),
+ 'unknownerror' => array( 'code' => 'unknownerror', 'info' => "Unknown error: ``\$1''" ),
+ 'unknownerror-nocode' => array( 'code' => 'unknownerror', 'info' => 'Unknown error' ),
// Messages from Title::getUserPermissionsErrors()
- 'ns-specialprotected' => array('code' => 'unsupportednamespace', 'info' => "Pages in the Special namespace can't be edited"),
- 'protectedinterface' => array('code' => 'protectednamespace-interface', 'info' => "You're not allowed to edit interface messages"),
- 'namespaceprotected' => array('code' => 'protectednamespace', 'info' => "You're not allowed to edit pages in the ``\$1'' namespace"),
- 'customcssjsprotected' => array('code' => 'customcssjsprotected', 'info' => "You're not allowed to edit custom CSS and JavaScript pages"),
- 'cascadeprotected' => array('code' => 'cascadeprotected', 'info' =>"The page you're trying to edit is protected because it's included in a cascade-protected page"),
- 'protectedpagetext' => array('code' => 'protectedpage', 'info' => "The ``\$1'' right is required to edit this page"),
- 'protect-cantedit' => array('code' => 'cantedit', 'info' => "You can't protect this page because you can't edit it"),
- 'badaccess-group0' => array('code' => 'permissiondenied', 'info' => "Permission denied"), // Generic permission denied message
- 'badaccess-groups' => array('code' => 'permissiondenied', 'info' => "Permission denied"),
- 'titleprotected' => array('code' => 'protectedtitle', 'info' => "This title has been protected from creation"),
- 'nocreate-loggedin' => array('code' => 'cantcreate', 'info' => "You don't have permission to create new pages"),
- 'nocreatetext' => array('code' => 'cantcreate-anon', 'info' => "Anonymous users can't create new pages"),
- 'movenologintext' => array('code' => 'cantmove-anon', 'info' => "Anonymous users can't move pages"),
- 'movenotallowed' => array('code' => 'cantmove', 'info' => "You don't have permission to move pages"),
- 'confirmedittext' => array('code' => 'confirmemail', 'info' => "You must confirm your e-mail address before you can edit"),
- 'blockedtext' => array('code' => 'blocked', 'info' => "You have been blocked from editing"),
- 'autoblockedtext' => array('code' => 'autoblocked', 'info' => "Your IP address has been blocked automatically, because it was used by a blocked user"),
+ 'ns-specialprotected' => array( 'code' => 'unsupportednamespace', 'info' => "Pages in the Special namespace can't be edited" ),
+ 'protectedinterface' => array( 'code' => 'protectednamespace-interface', 'info' => "You're not allowed to edit interface messages" ),
+ 'namespaceprotected' => array( 'code' => 'protectednamespace', 'info' => "You're not allowed to edit pages in the ``\$1'' namespace" ),
+ 'customcssjsprotected' => array( 'code' => 'customcssjsprotected', 'info' => "You're not allowed to edit custom CSS and JavaScript pages" ),
+ 'cascadeprotected' => array( 'code' => 'cascadeprotected', 'info' => "The page you're trying to edit is protected because it's included in a cascade-protected page" ),
+ 'protectedpagetext' => array( 'code' => 'protectedpage', 'info' => "The ``\$1'' right is required to edit this page" ),
+ 'protect-cantedit' => array( 'code' => 'cantedit', 'info' => "You can't protect this page because you can't edit it" ),
+ 'badaccess-group0' => array( 'code' => 'permissiondenied', 'info' => "Permission denied" ), // Generic permission denied message
+ 'badaccess-groups' => array( 'code' => 'permissiondenied', 'info' => "Permission denied" ),
+ 'titleprotected' => array( 'code' => 'protectedtitle', 'info' => "This title has been protected from creation" ),
+ 'nocreate-loggedin' => array( 'code' => 'cantcreate', 'info' => "You don't have permission to create new pages" ),
+ 'nocreatetext' => array( 'code' => 'cantcreate-anon', 'info' => "Anonymous users can't create new pages" ),
+ 'movenologintext' => array( 'code' => 'cantmove-anon', 'info' => "Anonymous users can't move pages" ),
+ 'movenotallowed' => array( 'code' => 'cantmove', 'info' => "You don't have permission to move pages" ),
+ 'confirmedittext' => array( 'code' => 'confirmemail', 'info' => "You must confirm your e-mail address before you can edit" ),
+ 'blockedtext' => array( 'code' => 'blocked', 'info' => "You have been blocked from editing" ),
+ 'autoblockedtext' => array( 'code' => 'autoblocked', 'info' => "Your IP address has been blocked automatically, because it was used by a blocked user" ),
// Miscellaneous interface messages
- 'actionthrottledtext' => array('code' => 'ratelimited', 'info' => "You've exceeded your rate limit. Please wait some time and try again"),
- 'alreadyrolled' => array('code' => 'alreadyrolled', 'info' => "The page you tried to rollback was already rolled back"),
- 'cantrollback' => array('code' => 'onlyauthor', 'info' => "The page you tried to rollback only has one author"),
- 'readonlytext' => array('code' => 'readonly', 'info' => "The wiki is currently in read-only mode"),
- 'sessionfailure' => array('code' => 'badtoken', 'info' => "Invalid token"),
- 'cannotdelete' => array('code' => 'cantdelete', 'info' => "Couldn't delete ``\$1''. Maybe it was deleted already by someone else"),
- 'notanarticle' => array('code' => 'missingtitle', 'info' => "The page you requested doesn't exist"),
- 'selfmove' => array('code' => 'selfmove', 'info' => "Can't move a page to itself"),
- 'immobile_namespace' => array('code' => 'immobilenamespace', 'info' => "You tried to move pages from or to a namespace that is protected from moving"),
- 'articleexists' => array('code' => 'articleexists', 'info' => "The destination article already exists and is not a redirect to the source article"),
- 'protectedpage' => array('code' => 'protectedpage', 'info' => "You don't have permission to perform this move"),
- 'hookaborted' => array('code' => 'hookaborted', 'info' => "The modification you tried to make was aborted by an extension hook"),
- 'cantmove-titleprotected' => array('code' => 'protectedtitle', 'info' => "The destination article has been protected from creation"),
- 'imagenocrossnamespace' => array('code' => 'nonfilenamespace', 'info' => "Can't move a file to a non-file namespace"),
- 'imagetypemismatch' => array('code' => 'filetypemismatch', 'info' => "The new file extension doesn't match its type"),
+ 'actionthrottledtext' => array( 'code' => 'ratelimited', 'info' => "You've exceeded your rate limit. Please wait some time and try again" ),
+ 'alreadyrolled' => array( 'code' => 'alreadyrolled', 'info' => "The page you tried to rollback was already rolled back" ),
+ 'cantrollback' => array( 'code' => 'onlyauthor', 'info' => "The page you tried to rollback only has one author" ),
+ 'readonlytext' => array( 'code' => 'readonly', 'info' => "The wiki is currently in read-only mode" ),
+ 'sessionfailure' => array( 'code' => 'badtoken', 'info' => "Invalid token" ),
+ 'cannotdelete' => array( 'code' => 'cantdelete', 'info' => "Couldn't delete ``\$1''. Maybe it was deleted already by someone else" ),
+ 'notanarticle' => array( 'code' => 'missingtitle', 'info' => "The page you requested doesn't exist" ),
+ 'selfmove' => array( 'code' => 'selfmove', 'info' => "Can't move a page to itself" ),
+ 'immobile_namespace' => array( 'code' => 'immobilenamespace', 'info' => "You tried to move pages from or to a namespace that is protected from moving" ),
+ 'articleexists' => array( 'code' => 'articleexists', 'info' => "The destination article already exists and is not a redirect to the source article" ),
+ 'protectedpage' => array( 'code' => 'protectedpage', 'info' => "You don't have permission to perform this move" ),
+ 'hookaborted' => array( 'code' => 'hookaborted', 'info' => "The modification you tried to make was aborted by an extension hook" ),
+ 'cantmove-titleprotected' => array( 'code' => 'protectedtitle', 'info' => "The destination article has been protected from creation" ),
+ 'imagenocrossnamespace' => array( 'code' => 'nonfilenamespace', 'info' => "Can't move a file to a non-file namespace" ),
+ 'imagetypemismatch' => array( 'code' => 'filetypemismatch', 'info' => "The new file extension doesn't match its type" ),
// 'badarticleerror' => shouldn't happen
// 'badtitletext' => shouldn't happen
- 'ip_range_invalid' => array('code' => 'invalidrange', 'info' => "Invalid IP range"),
- 'range_block_disabled' => array('code' => 'rangedisabled', 'info' => "Blocking IP ranges has been disabled"),
- 'nosuchusershort' => array('code' => 'nosuchuser', 'info' => "The user you specified doesn't exist"),
- 'badipaddress' => array('code' => 'invalidip', 'info' => "Invalid IP address specified"),
- 'ipb_expiry_invalid' => array('code' => 'invalidexpiry', 'info' => "Invalid expiry time"),
- 'ipb_already_blocked' => array('code' => 'alreadyblocked', 'info' => "The user you tried to block was already blocked"),
- 'ipb_blocked_as_range' => array('code' => 'blockedasrange', 'info' => "IP address ``\$1'' was blocked as part of range ``\$2''. You can't unblock the IP invidually, but you can unblock the range as a whole."),
- 'ipb_cant_unblock' => array('code' => 'cantunblock', 'info' => "The block you specified was not found. It may have been unblocked already"),
- 'mailnologin' => array('code' => 'cantsend', 'info' => "You're not logged in or you don't have a confirmed e-mail address, so you can't send e-mail"),
- 'usermaildisabled' => array('code' => 'usermaildisabled', 'info' => "User email has been disabled"),
- 'blockedemailuser' => array('code' => 'blockedfrommail', 'info' => "You have been blocked from sending e-mail"),
- 'notarget' => array('code' => 'notarget', 'info' => "You have not specified a valid target for this action"),
- 'noemail' => array('code' => 'noemail', 'info' => "The user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users"),
- 'rcpatroldisabled' => array('code' => 'patroldisabled', 'info' => "Patrolling is disabled on this wiki"),
- 'markedaspatrollederror-noautopatrol' => array('code' => 'noautopatrol', 'info' => "You don't have permission to patrol your own changes"),
- 'delete-toobig' => array('code' => 'bigdelete', 'info' => "You can't delete this page because it has more than \$1 revisions"),
- 'movenotallowedfile' => array('code' => 'cantmovefile', 'info' => "You don't have permission to move files"),
+ 'ip_range_invalid' => array( 'code' => 'invalidrange', 'info' => "Invalid IP range" ),
+ 'range_block_disabled' => array( 'code' => 'rangedisabled', 'info' => "Blocking IP ranges has been disabled" ),
+ 'nosuchusershort' => array( 'code' => 'nosuchuser', 'info' => "The user you specified doesn't exist" ),
+ 'badipaddress' => array( 'code' => 'invalidip', 'info' => "Invalid IP address specified" ),
+ 'ipb_expiry_invalid' => array( 'code' => 'invalidexpiry', 'info' => "Invalid expiry time" ),
+ 'ipb_already_blocked' => array( 'code' => 'alreadyblocked', 'info' => "The user you tried to block was already blocked" ),
+ 'ipb_blocked_as_range' => array( 'code' => 'blockedasrange', 'info' => "IP address ``\$1'' was blocked as part of range ``\$2''. You can't unblock the IP invidually, but you can unblock the range as a whole." ),
+ 'ipb_cant_unblock' => array( 'code' => 'cantunblock', 'info' => "The block you specified was not found. It may have been unblocked already" ),
+ 'mailnologin' => array( 'code' => 'cantsend', 'info' => "You are not logged in, you do not have a confirmed e-mail address, or you are not allowed to send e-mail to other users, so you cannot send e-mail" ),
+ 'usermaildisabled' => array( 'code' => 'usermaildisabled', 'info' => "User email has been disabled" ),
+ 'blockedemailuser' => array( 'code' => 'blockedfrommail', 'info' => "You have been blocked from sending e-mail" ),
+ 'notarget' => array( 'code' => 'notarget', 'info' => "You have not specified a valid target for this action" ),
+ 'noemail' => array( 'code' => 'noemail', 'info' => "The user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users" ),
+ 'rcpatroldisabled' => array( 'code' => 'patroldisabled', 'info' => "Patrolling is disabled on this wiki" ),
+ 'markedaspatrollederror-noautopatrol' => array( 'code' => 'noautopatrol', 'info' => "You don't have permission to patrol your own changes" ),
+ 'delete-toobig' => array( 'code' => 'bigdelete', 'info' => "You can't delete this page because it has more than \$1 revisions" ),
+ 'movenotallowedfile' => array( 'code' => 'cantmovefile', 'info' => "You don't have permission to move files" ),
+ 'userrights-no-interwiki' => array( 'code' => 'nointerwikiuserrights', 'info' => "You don't have permission to change user rights on other wikis" ),
+ 'userrights-nodatabase' => array( 'code' => 'nosuchdatabase', 'info' => "Database ``\$1'' does not exist or is not local" ),
+ 'nouserspecified' => array( 'code' => 'invaliduser', 'info' => "Invalid username ``\$1''" ),
+ 'noname' => array( 'code' => 'invaliduser', 'info' => "Invalid username ``\$1''" ),
// API-specific messages
- 'readrequired' => array('code' => 'readapidenied', 'info' => "You need read permission to use this module"),
- 'writedisabled' => array('code' => 'noapiwrite', 'info' => "Editing of this wiki through the API is disabled. Make sure the \$wgEnableWriteAPI=true; statement is included in the wiki's LocalSettings.php file"),
- 'writerequired' => array('code' => 'writeapidenied', 'info' => "You're not allowed to edit this wiki through the API"),
- 'missingparam' => array('code' => 'no$1', 'info' => "The \$1 parameter must be set"),
- 'invalidtitle' => array('code' => 'invalidtitle', 'info' => "Bad title ``\$1''"),
- 'nosuchpageid' => array('code' => 'nosuchpageid', 'info' => "There is no page with ID \$1"),
- 'nosuchrevid' => array('code' => 'nosuchrevid', 'info' => "There is no revision with ID \$1"),
- 'invaliduser' => array('code' => 'invaliduser', 'info' => "Invalid username ``\$1''"),
- 'invalidexpiry' => array('code' => 'invalidexpiry', 'info' => "Invalid expiry time ``\$1''"),
- 'pastexpiry' => array('code' => 'pastexpiry', 'info' => "Expiry time ``\$1'' is in the past"),
- 'create-titleexists' => array('code' => 'create-titleexists', 'info' => "Existing titles can't be protected with 'create'"),
- 'missingtitle-createonly' => array('code' => 'missingtitle-createonly', 'info' => "Missing titles can only be protected with 'create'"),
- 'cantblock' => array('code' => 'cantblock', 'info' => "You don't have permission to block users"),
- 'canthide' => array('code' => 'canthide', 'info' => "You don't have permission to hide user names from the block log"),
- 'cantblock-email' => array('code' => 'cantblock-email', 'info' => "You don't have permission to block users from sending e-mail through the wiki"),
- 'unblock-notarget' => array('code' => 'notarget', 'info' => "Either the id or the user parameter must be set"),
- 'unblock-idanduser' => array('code' => 'idanduser', 'info' => "The id and user parameters can't be used together"),
- 'cantunblock' => array('code' => 'permissiondenied', 'info' => "You don't have permission to unblock users"),
- 'cannotundelete' => array('code' => 'cantundelete', 'info' => "Couldn't undelete: the requested revisions may not exist, or may have been undeleted already"),
- 'permdenied-undelete' => array('code' => 'permissiondenied', 'info' => "You don't have permission to restore deleted revisions"),
- 'createonly-exists' => array('code' => 'articleexists', 'info' => "The article you tried to create has been created already"),
- 'nocreate-missing' => array('code' => 'missingtitle', 'info' => "The article you tried to edit doesn't exist"),
- 'nosuchrcid' => array('code' => 'nosuchrcid', 'info' => "There is no change with rcid ``\$1''"),
- 'cantpurge' => array('code' => 'cantpurge', 'info' => "Only users with the 'purge' right can purge pages via the API"),
- 'protect-invalidaction' => array('code' => 'protect-invalidaction', 'info' => "Invalid protection type ``\$1''"),
- 'protect-invalidlevel' => array('code' => 'protect-invalidlevel', 'info' => "Invalid protection level ``\$1''"),
- 'toofewexpiries' => array('code' => 'toofewexpiries', 'info' => "\$1 expiry timestamps were provided where \$2 were needed"),
- 'cantimport' => array('code' => 'cantimport', 'info' => "You don't have permission to import pages"),
- 'cantimport-upload' => array('code' => 'cantimport-upload', 'info' => "You don't have permission to import uploaded pages"),
- 'importnofile' => array('code' => 'nofile', 'info' => "You didn't upload a file"),
- 'importuploaderrorsize' => array('code' => 'filetoobig', 'info' => 'The file you uploaded is bigger than the maximum upload size'),
- 'importuploaderrorpartial' => array('code' => 'partialupload', 'info' => 'The file was only partially uploaded'),
- 'importuploaderrortemp' => array('code' => 'notempdir', 'info' => 'The temporary upload directory is missing'),
- 'importcantopen' => array('code' => 'cantopenfile', 'info' => "Couldn't open the uploaded file"),
- 'import-noarticle' => array('code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified'),
- 'importbadinterwiki' => array('code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified'),
- 'import-unknownerror' => array('code' => 'import-unknownerror', 'info' => "Unknown error on import: ``\$1''"),
+ 'readrequired' => array( 'code' => 'readapidenied', 'info' => "You need read permission to use this module" ),
+ 'writedisabled' => array( 'code' => 'noapiwrite', 'info' => "Editing of this wiki through the API is disabled. Make sure the \$wgEnableWriteAPI=true; statement is included in the wiki's LocalSettings.php file" ),
+ 'writerequired' => array( 'code' => 'writeapidenied', 'info' => "You're not allowed to edit this wiki through the API" ),
+ 'missingparam' => array( 'code' => 'no$1', 'info' => "The \$1 parameter must be set" ),
+ 'invalidtitle' => array( 'code' => 'invalidtitle', 'info' => "Bad title ``\$1''" ),
+ 'nosuchpageid' => array( 'code' => 'nosuchpageid', 'info' => "There is no page with ID \$1" ),
+ 'nosuchrevid' => array( 'code' => 'nosuchrevid', 'info' => "There is no revision with ID \$1" ),
+ 'nosuchuser' => array( 'code' => 'nosuchuser', 'info' => "User ``\$1'' doesn't exist" ),
+ 'invaliduser' => array( 'code' => 'invaliduser', 'info' => "Invalid username ``\$1''" ),
+ 'invalidexpiry' => array( 'code' => 'invalidexpiry', 'info' => "Invalid expiry time ``\$1''" ),
+ 'pastexpiry' => array( 'code' => 'pastexpiry', 'info' => "Expiry time ``\$1'' is in the past" ),
+ 'create-titleexists' => array( 'code' => 'create-titleexists', 'info' => "Existing titles can't be protected with 'create'" ),
+ 'missingtitle-createonly' => array( 'code' => 'missingtitle-createonly', 'info' => "Missing titles can only be protected with 'create'" ),
+ 'cantblock' => array( 'code' => 'cantblock', 'info' => "You don't have permission to block users" ),
+ 'canthide' => array( 'code' => 'canthide', 'info' => "You don't have permission to hide user names from the block log" ),
+ 'cantblock-email' => array( 'code' => 'cantblock-email', 'info' => "You don't have permission to block users from sending e-mail through the wiki" ),
+ 'unblock-notarget' => array( 'code' => 'notarget', 'info' => "Either the id or the user parameter must be set" ),
+ 'unblock-idanduser' => array( 'code' => 'idanduser', 'info' => "The id and user parameters can't be used together" ),
+ 'cantunblock' => array( 'code' => 'permissiondenied', 'info' => "You don't have permission to unblock users" ),
+ 'cannotundelete' => array( 'code' => 'cantundelete', 'info' => "Couldn't undelete: the requested revisions may not exist, or may have been undeleted already" ),
+ 'permdenied-undelete' => array( 'code' => 'permissiondenied', 'info' => "You don't have permission to restore deleted revisions" ),
+ 'createonly-exists' => array( 'code' => 'articleexists', 'info' => "The article you tried to create has been created already" ),
+ 'nocreate-missing' => array( 'code' => 'missingtitle', 'info' => "The article you tried to edit doesn't exist" ),
+ 'nosuchrcid' => array( 'code' => 'nosuchrcid', 'info' => "There is no change with rcid ``\$1''" ),
+ 'cantpurge' => array( 'code' => 'cantpurge', 'info' => "Only users with the 'purge' right can purge pages via the API" ),
+ 'protect-invalidaction' => array( 'code' => 'protect-invalidaction', 'info' => "Invalid protection type ``\$1''" ),
+ 'protect-invalidlevel' => array( 'code' => 'protect-invalidlevel', 'info' => "Invalid protection level ``\$1''" ),
+ 'toofewexpiries' => array( 'code' => 'toofewexpiries', 'info' => "\$1 expiry timestamps were provided where \$2 were needed" ),
+ 'cantimport' => array( 'code' => 'cantimport', 'info' => "You don't have permission to import pages" ),
+ 'cantimport-upload' => array( 'code' => 'cantimport-upload', 'info' => "You don't have permission to import uploaded pages" ),
+ 'nouploadmodule' => array( 'code' => 'nomodule', 'info' => 'No upload module set' ),
+ 'importnofile' => array( 'code' => 'nofile', 'info' => "You didn't upload a file" ),
+ 'importuploaderrorsize' => array( 'code' => 'filetoobig', 'info' => 'The file you uploaded is bigger than the maximum upload size' ),
+ 'importuploaderrorpartial' => array( 'code' => 'partialupload', 'info' => 'The file was only partially uploaded' ),
+ 'importuploaderrortemp' => array( 'code' => 'notempdir', 'info' => 'The temporary upload directory is missing' ),
+ 'importcantopen' => array( 'code' => 'cantopenfile', 'info' => "Couldn't open the uploaded file" ),
+ 'import-noarticle' => array( 'code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified' ),
+ 'importbadinterwiki' => array( 'code' => 'badinterwiki', 'info' => 'Invalid interwiki title specified' ),
+ 'import-unknownerror' => array( 'code' => 'import-unknownerror', 'info' => "Unknown error on import: ``\$1''" ),
+ 'cantoverwrite-sharedfile' => array( 'code' => 'cantoverwrite-sharedfile', 'info' => 'The target file exists on a shared repository and you do not have permission to override it' ),
+ 'sharedfile-exists' => array( 'code' => 'fileexists-sharedrepo-perm', 'info' => 'The target file exists on a shared repository. Use the ignorewarnings parameter to override it.' ),
+ 'mustbeposted' => array( 'code' => 'mustbeposted', 'info' => "The \$1 module requires a POST request" ),
+ 'show' => array( 'code' => 'show', 'info' => 'Incorrect parameter - mutually exclusive values may not be supplied' ),
// ApiEditPage messages
- 'noimageredirect-anon' => array('code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects"),
- 'noimageredirect-logged' => array('code' => 'noimageredirect', 'info' => "You don't have permission to create image redirects"),
- 'spamdetected' => array('code' => 'spamdetected', 'info' => "Your edit was refused because it contained a spam fragment: ``\$1''"),
- 'filtered' => array('code' => 'filtered', 'info' => "The filter callback function refused your edit"),
- 'contenttoobig' => array('code' => 'contenttoobig', 'info' => "The content you supplied exceeds the article size limit of \$1 kilobytes"),
- 'noedit-anon' => array('code' => 'noedit-anon', 'info' => "Anonymous users can't edit pages"),
- 'noedit' => array('code' => 'noedit', 'info' => "You don't have permission to edit pages"),
- 'wasdeleted' => array('code' => 'pagedeleted', 'info' => "The page has been deleted since you fetched its timestamp"),
- 'blankpage' => array('code' => 'emptypage', 'info' => "Creating new, empty pages is not allowed"),
- 'editconflict' => array('code' => 'editconflict', 'info' => "Edit conflict detected"),
- 'hashcheckfailed' => array('code' => 'badmd5', 'info' => "The supplied MD5 hash was incorrect"),
- 'missingtext' => array('code' => 'notext', 'info' => "One of the text, appendtext, prependtext and undo parameters must be set"),
- 'emptynewsection' => array('code' => 'emptynewsection', 'info' => 'Creating empty new sections is not possible.'),
- 'revwrongpage' => array('code' => 'revwrongpage', 'info' => "r\$1 is not a revision of ``\$2''"),
- 'undo-failure' => array('code' => 'undofailure', 'info' => 'Undo failed due to conflicting intermediate edits'),
+ 'noimageredirect-anon' => array( 'code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects" ),
+ 'noimageredirect-logged' => array( 'code' => 'noimageredirect', 'info' => "You don't have permission to create image redirects" ),
+ 'spamdetected' => array( 'code' => 'spamdetected', 'info' => "Your edit was refused because it contained a spam fragment: ``\$1''" ),
+ 'filtered' => array( 'code' => 'filtered', 'info' => "The filter callback function refused your edit" ),
+ 'contenttoobig' => array( 'code' => 'contenttoobig', 'info' => "The content you supplied exceeds the article size limit of \$1 kilobytes" ),
+ 'noedit-anon' => array( 'code' => 'noedit-anon', 'info' => "Anonymous users can't edit pages" ),
+ 'noedit' => array( 'code' => 'noedit', 'info' => "You don't have permission to edit pages" ),
+ 'wasdeleted' => array( 'code' => 'pagedeleted', 'info' => "The page has been deleted since you fetched its timestamp" ),
+ 'blankpage' => array( 'code' => 'emptypage', 'info' => "Creating new, empty pages is not allowed" ),
+ 'editconflict' => array( 'code' => 'editconflict', 'info' => "Edit conflict detected" ),
+ 'hashcheckfailed' => array( 'code' => 'badmd5', 'info' => "The supplied MD5 hash was incorrect" ),
+ 'missingtext' => array( 'code' => 'notext', 'info' => "One of the text, appendtext, prependtext and undo parameters must be set" ),
+ 'emptynewsection' => array( 'code' => 'emptynewsection', 'info' => 'Creating empty new sections is not possible.' ),
+ 'revwrongpage' => array( 'code' => 'revwrongpage', 'info' => "r\$1 is not a revision of ``\$2''" ),
+ 'undo-failure' => array( 'code' => 'undofailure', 'info' => 'Undo failed due to conflicting intermediate edits' ),
+
+ // uploadMsgs
+ 'invalid-session-key' => array( 'code' => 'invalid-session-key', 'info' => 'Not a valid session key' ),
+ 'nouploadmodule' => array( 'code' => 'nouploadmodule', 'info' => 'No upload module set' ),
+ 'uploaddisabled' => array( 'code' => 'uploaddisabled', 'info' => 'Uploads are not enabled. Make sure $wgEnableUploads is set to true in LocalSettings.php and the PHP ini setting file_uploads is true' ),
);
/**
+ * Helper function for readonly errors
+ */
+ public function dieReadOnly() {
+ $parsed = $this->parseMsg( array( 'readonlytext' ) );
+ $this->dieUsage( $parsed['info'], $parsed['code'], /* http error */ 0,
+ array( 'readonlyreason' => wfReadOnlyReason() ) );
+ }
+
+ /**
* Output the error message related to a certain array
* @param $error array Element of a getUserPermissionsErrors()-style array
*/
- public function dieUsageMsg($error) {
- $parsed = $this->parseMsg($error);
- $this->dieUsage($parsed['info'], $parsed['code']);
+ public function dieUsageMsg( $error ) {
+ $parsed = $this->parseMsg( $error );
+ $this->dieUsage( $parsed['info'], $parsed['code'] );
}
-
+
/**
* Return the error message related to a certain array
* @param $error array Element of a getUserPermissionsErrors()-style array
* @return array('code' => code, 'info' => info)
*/
- public function parseMsg($error) {
- $key = array_shift($error);
- if(isset(self::$messageMap[$key]))
- return array( 'code' =>
- wfMsgReplaceArgs(self::$messageMap[$key]['code'], $error),
+ public function parseMsg( $error ) {
+ $key = array_shift( $error );
+ if ( isset( self::$messageMap[$key] ) ) {
+ return array( 'code' =>
+ wfMsgReplaceArgs( self::$messageMap[$key]['code'], $error ),
'info' =>
- wfMsgReplaceArgs(self::$messageMap[$key]['info'], $error)
+ wfMsgReplaceArgs( self::$messageMap[$key]['info'], $error )
);
+ }
// If the key isn't present, throw an "unknown error"
- return $this->parseMsg(array('unknownerror', $key));
+ return $this->parseMsg( array( 'unknownerror', $key ) );
}
/**
@@ -852,8 +970,8 @@ abstract class ApiBase {
* @param $method string Method or function name
* @param $message string Error message
*/
- protected static function dieDebug($method, $message) {
- wfDebugDieBacktrace("Internal error in $method: $message");
+ protected static function dieDebug( $method, $message ) {
+ wfDebugDieBacktrace( "Internal error in $method: $message" );
}
/**
@@ -887,6 +1005,59 @@ abstract class ApiBase {
return false;
}
+ /**
+ * Returns the token salt if there is one, '' if the module doesn't require a salt, else false if the module doesn't need a token
+ * @returns bool
+ */
+ public function getTokenSalt() {
+ return false;
+ }
+
+ /**
+ * Returns a list of all possible errors returned by the module
+ * @return array in the format of array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
+ */
+ public function getPossibleErrors() {
+ $ret = array();
+
+ if ( $this->mustBePosted() ) {
+ $ret[] = array( 'mustbeposted', $this->getModuleName() );
+ }
+
+ if ( $this->isReadMode() ) {
+ $ret[] = array( 'readrequired' );
+ }
+
+ if ( $this->isWriteMode() ) {
+ $ret[] = array( 'writerequired' );
+ $ret[] = array( 'writedisabled' );
+ }
+
+ if ( $this->getTokenSalt() !== false ) {
+ $ret[] = array( 'missingparam', 'token' );
+ $ret[] = array( 'sessionfailure' );
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Parses a list of errors into a standardised format
+ * @param $errors array List of errors. Items can be in the for array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
+ * @return array Parsed list of errors with items in the form array( 'code' => ..., 'info' => ... )
+ */
+ public function parseErrors( $errors ) {
+ $ret = array();
+
+ foreach ( $errors as $row ) {
+ if ( isset( $row['code'] ) && isset( $row['info'] ) ) {
+ $ret[] = $row;
+ } else {
+ $ret[] = $this->parseMsg( $row );
+ }
+ }
+ return $ret;
+ }
/**
* Profiling: total module execution time
@@ -897,24 +1068,27 @@ abstract class ApiBase {
* Start module profiling
*/
public function profileIn() {
- if ($this->mTimeIn !== 0)
- ApiBase :: dieDebug(__METHOD__, 'called twice without calling profileOut()');
- $this->mTimeIn = microtime(true);
- wfProfileIn($this->getModuleProfileName());
+ if ( $this->mTimeIn !== 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called twice without calling profileOut()' );
+ }
+ $this->mTimeIn = microtime( true );
+ wfProfileIn( $this->getModuleProfileName() );
}
/**
* End module profiling
*/
public function profileOut() {
- if ($this->mTimeIn === 0)
- ApiBase :: dieDebug(__METHOD__, 'called without calling profileIn() first');
- if ($this->mDBTimeIn !== 0)
- ApiBase :: dieDebug(__METHOD__, 'must be called after database profiling is done with profileDBOut()');
+ if ( $this->mTimeIn === 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called without calling profileIn() first' );
+ }
+ if ( $this->mDBTimeIn !== 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'must be called after database profiling is done with profileDBOut()' );
+ }
- $this->mModuleTime += microtime(true) - $this->mTimeIn;
+ $this->mModuleTime += microtime( true ) - $this->mTimeIn;
$this->mTimeIn = 0;
- wfProfileOut($this->getModuleProfileName());
+ wfProfileOut( $this->getModuleProfileName() );
}
/**
@@ -922,9 +1096,10 @@ abstract class ApiBase {
* of the profiling state the module was in. This method does such cleanup.
*/
public function safeProfileOut() {
- if ($this->mTimeIn !== 0) {
- if ($this->mDBTimeIn !== 0)
+ if ( $this->mTimeIn !== 0 ) {
+ if ( $this->mDBTimeIn !== 0 ) {
$this->profileDBOut();
+ }
$this->profileOut();
}
}
@@ -934,8 +1109,9 @@ abstract class ApiBase {
* @return float
*/
public function getProfileTime() {
- if ($this->mTimeIn !== 0)
- ApiBase :: dieDebug(__METHOD__, 'called without calling profileOut() first');
+ if ( $this->mTimeIn !== 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called without calling profileOut() first' );
+ }
return $this->mModuleTime;
}
@@ -948,29 +1124,33 @@ abstract class ApiBase {
* Start module profiling
*/
public function profileDBIn() {
- if ($this->mTimeIn === 0)
- ApiBase :: dieDebug(__METHOD__, 'must be called while profiling the entire module with profileIn()');
- if ($this->mDBTimeIn !== 0)
- ApiBase :: dieDebug(__METHOD__, 'called twice without calling profileDBOut()');
- $this->mDBTimeIn = microtime(true);
- wfProfileIn($this->getModuleProfileName(true));
+ if ( $this->mTimeIn === 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'must be called while profiling the entire module with profileIn()' );
+ }
+ if ( $this->mDBTimeIn !== 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called twice without calling profileDBOut()' );
+ }
+ $this->mDBTimeIn = microtime( true );
+ wfProfileIn( $this->getModuleProfileName( true ) );
}
/**
* End database profiling
*/
public function profileDBOut() {
- if ($this->mTimeIn === 0)
- ApiBase :: dieDebug(__METHOD__, 'must be called while profiling the entire module with profileIn()');
- if ($this->mDBTimeIn === 0)
- ApiBase :: dieDebug(__METHOD__, 'called without calling profileDBIn() first');
+ if ( $this->mTimeIn === 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'must be called while profiling the entire module with profileIn()' );
+ }
+ if ( $this->mDBTimeIn === 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called without calling profileDBIn() first' );
+ }
- $time = microtime(true) - $this->mDBTimeIn;
+ $time = microtime( true ) - $this->mDBTimeIn;
$this->mDBTimeIn = 0;
$this->mDBTime += $time;
$this->getMain()->mDBTime += $time;
- wfProfileOut($this->getModuleProfileName(true));
+ wfProfileOut( $this->getModuleProfileName( true ) );
}
/**
@@ -978,8 +1158,9 @@ abstract class ApiBase {
* @return float
*/
public function getProfileDBTime() {
- if ($this->mDBTimeIn !== 0)
- ApiBase :: dieDebug(__METHOD__, 'called without calling profileDBOut() first');
+ if ( $this->mDBTimeIn !== 0 ) {
+ ApiBase::dieDebug( __METHOD__, 'called without calling profileDBOut() first' );
+ }
return $this->mDBTime;
}
@@ -989,20 +1170,20 @@ abstract class ApiBase {
* @param $name string Description of the printed value
* @param $backtrace bool If true, print a backtrace
*/
- public static function debugPrint($value, $name = 'unknown', $backtrace = false) {
+ public static function debugPrint( $value, $name = 'unknown', $backtrace = false ) {
print "\n\n<pre><b>Debugging value '$name':</b>\n\n";
- var_export($value);
- if ($backtrace)
+ var_export( $value );
+ if ( $backtrace ) {
print "\n" . wfBacktrace();
+ }
print "\n</pre>\n";
}
-
/**
* Returns a string that identifies the version of this class.
* @return string
*/
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiBase.php 50217 2009-05-05 13:12:16Z tstarling $';
+ return __CLASS__ . ': $Id: ApiBase.php 70066 2010-07-28 05:52:32Z tstarling $';
}
}
diff --git a/includes/api/ApiBlock.php b/includes/api/ApiBlock.php
index 1c0bd5ac..91bbaf6d 100644
--- a/includes/api/ApiBlock.php
+++ b/includes/api/ApiBlock.php
@@ -1,10 +1,10 @@
<?php
-/*
+/**
* Created on Sep 4, 2007
* API for MediaWiki 1.8+
*
- * Copyright (C) 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
*
* 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
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once( "ApiBase.php" );
}
/**
@@ -38,8 +38,8 @@ class ApiBlock extends ApiBase {
/**
* Std ctor.
*/
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
}
/**
@@ -52,31 +52,30 @@ class ApiBlock extends ApiBase {
global $wgUser, $wgBlockAllowsUTEdit;
$params = $this->extractRequestParams();
- if($params['gettoken'])
- {
+ if ( $params['gettoken'] ) {
$res['blocktoken'] = $wgUser->editToken();
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
return;
}
- if(is_null($params['user']))
- $this->dieUsageMsg(array('missingparam', 'user'));
- if(is_null($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
- if(!$wgUser->isAllowed('block'))
- $this->dieUsageMsg(array('cantblock'));
- if($params['hidename'] && !$wgUser->isAllowed('hideuser'))
- $this->dieUsageMsg(array('canthide'));
- if($params['noemail'] && !$wgUser->isAllowed('blockemail'))
- $this->dieUsageMsg(array('cantblock-email'));
-
- $form = new IPBlockForm('');
+ if ( is_null( $params['user'] ) ) {
+ $this->dieUsageMsg( array( 'missingparam', 'user' ) );
+ }
+ if ( !$wgUser->isAllowed( 'block' ) ) {
+ $this->dieUsageMsg( array( 'cantblock' ) );
+ }
+ if ( $params['hidename'] && !$wgUser->isAllowed( 'hideuser' ) ) {
+ $this->dieUsageMsg( array( 'canthide' ) );
+ }
+ if ( $params['noemail'] && !IPBlockForm::canBlockEmail( $wgUser ) ) {
+ $this->dieUsageMsg( array( 'cantblock-email' ) );
+ }
+
+ $form = new IPBlockForm( '' );
$form->BlockAddress = $params['user'];
- $form->BlockReason = (is_null($params['reason']) ? '' : $params['reason']);
+ $form->BlockReason = ( is_null( $params['reason'] ) ? '' : $params['reason'] );
$form->BlockReasonList = 'other';
- $form->BlockExpiry = ($params['expiry'] == 'never' ? 'infinite' : $params['expiry']);
+ $form->BlockExpiry = ( $params['expiry'] == 'never' ? 'infinite' : $params['expiry'] );
$form->BlockOther = '';
$form->BlockAnonOnly = $params['anononly'];
$form->BlockCreateAccount = $params['nocreate'];
@@ -87,39 +86,48 @@ class ApiBlock extends ApiBase {
$form->BlockReblock = $params['reblock'];
$userID = $expiry = null;
- $retval = $form->doBlock($userID, $expiry);
- if(count($retval))
+ $retval = $form->doBlock( $userID, $expiry );
+ if ( count( $retval ) ) {
// We don't care about multiple errors, just report one of them
- $this->dieUsageMsg($retval);
+ $this->dieUsageMsg( $retval );
+ }
$res['user'] = $params['user'];
- $res['userID'] = intval($userID);
- $res['expiry'] = ($expiry == Block::infinity() ? 'infinite' : wfTimestamp(TS_ISO_8601, $expiry));
+ $res['userID'] = intval( $userID );
+ $res['expiry'] = ( $expiry == Block::infinity() ? 'infinite' : wfTimestamp( TS_ISO_8601, $expiry ) );
$res['reason'] = $params['reason'];
- if($params['anononly'])
+ if ( $params['anononly'] ) {
$res['anononly'] = '';
- if($params['nocreate'])
+ }
+ if ( $params['nocreate'] ) {
$res['nocreate'] = '';
- if($params['autoblock'])
+ }
+ if ( $params['autoblock'] ) {
$res['autoblock'] = '';
- if($params['noemail'])
+ }
+ if ( $params['noemail'] ) {
$res['noemail'] = '';
- if($params['hidename'])
+ }
+ if ( $params['hidename'] ) {
$res['hidename'] = '';
- if($params['allowusertalk'])
+ }
+ if ( $params['allowusertalk'] ) {
$res['allowusertalk'] = '';
+ }
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
}
public function getAllowedParams() {
- return array (
+ return array(
'user' => null,
'token' => null,
'gettoken' => false,
@@ -136,7 +144,7 @@ class ApiBlock extends ApiBase {
}
public function getParamDescription() {
- return array (
+ return array(
'user' => 'Username, IP address or IP range you want to block',
'token' => 'A block token previously obtained through the gettoken parameter or prop=info',
'gettoken' => 'If set, a block token will be returned, and no other action will be taken',
@@ -157,15 +165,28 @@ class ApiBlock extends ApiBase {
'Block a user.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'user' ),
+ array( 'cantblock' ),
+ array( 'canthide' ),
+ array( 'cantblock-email' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
- return array (
+ return array(
'api.php?action=block&user=123.5.5.12&expiry=3%20days&reason=First%20strike',
'api.php?action=block&user=Vandal&expiry=never&reason=Vandalism&nocreate&autoblock&noemail'
);
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiBlock.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiBlock.php 62766 2010-02-21 12:32:46Z ashley $';
}
}
diff --git a/includes/api/ApiDelete.php b/includes/api/ApiDelete.php
index 9431ad78..2b349bd7 100644
--- a/includes/api/ApiDelete.php
+++ b/includes/api/ApiDelete.php
@@ -1,10 +1,10 @@
<?php
-/*
+/**
* Created on Jun 30, 2007
* API for MediaWiki 1.8+
*
- * Copyright (C) 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
*
* 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
@@ -22,12 +22,11 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once( "ApiBase.php" );
}
-
/**
* API module that facilitates deleting pages. The API eqivalent of action=delete.
* Requires API write mode to be enabled.
@@ -36,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiDelete extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
}
/**
@@ -49,65 +48,60 @@ class ApiDelete extends ApiBase {
*/
public function execute() {
global $wgUser;
+
$params = $this->extractRequestParams();
- $this->requireOnlyOneParameter($params, 'title', 'pageid');
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
+ $this->requireOnlyOneParameter( $params, 'title', 'pageid' );
- if(isset($params['title']))
- {
- $titleObj = Title::newFromText($params['title']);
- if(!$titleObj)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
+ if ( isset( $params['title'] ) ) {
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj ) {
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+ }
+ } elseif ( isset( $params['pageid'] ) ) {
+ $titleObj = Title::newFromID( $params['pageid'] );
+ if ( !$titleObj ) {
+ $this->dieUsageMsg( array( 'nosuchpageid', $params['pageid'] ) );
+ }
}
- else if(isset($params['pageid']))
- {
- $titleObj = Title::newFromID($params['pageid']);
- if(!$titleObj)
- $this->dieUsageMsg(array('nosuchpageid', $params['pageid']));
+ if ( !$titleObj->exists() ) {
+ $this->dieUsageMsg( array( 'notanarticle' ) );
}
- if(!$titleObj->exists())
- $this->dieUsageMsg(array('notanarticle'));
-
- $reason = (isset($params['reason']) ? $params['reason'] : NULL);
- if ($titleObj->getNamespace() == NS_FILE) {
- $retval = self::deleteFile($params['token'], $titleObj, $params['oldimage'], $reason, false);
- if(count($retval))
- // We don't care about multiple errors, just report one of them
- $this->dieUsageMsg(reset($retval));
+
+ $reason = ( isset( $params['reason'] ) ? $params['reason'] : null );
+ if ( $titleObj->getNamespace() == NS_FILE ) {
+ $retval = self::deleteFile( $params['token'], $titleObj, $params['oldimage'], $reason, false );
+ if ( count( $retval ) ) {
+ $this->dieUsageMsg( reset( $retval ) ); // We don't care about multiple errors, just report one of them
+ }
} else {
- $articleObj = new Article($titleObj);
- if($articleObj->isBigDeletion() && !$wgUser->isAllowed('bigdelete')) {
- global $wgDeleteRevisionsLimit;
- $this->dieUsageMsg(array('delete-toobig', $wgDeleteRevisionsLimit));
+ $articleObj = new Article( $titleObj );
+ $retval = self::delete( $articleObj, $params['token'], $reason );
+
+ if ( count( $retval ) ) {
+ $this->dieUsageMsg( reset( $retval ) ); // We don't care about multiple errors, just report one of them
}
- $retval = self::delete($articleObj, $params['token'], $reason);
-
- if(count($retval))
- // We don't care about multiple errors, just report one of them
- $this->dieUsageMsg(reset($retval));
-
- if($params['watch'] || $wgUser->getOption('watchdeletion'))
+
+ if ( $params['watch'] || $wgUser->getOption( 'watchdeletion' ) ) {
$articleObj->doWatch();
- else if($params['unwatch'])
+ } elseif ( $params['unwatch'] ) {
$articleObj->doUnwatch();
+ }
}
- $r = array('title' => $titleObj->getPrefixedText(), 'reason' => $reason);
- $this->getResult()->addValue(null, $this->getModuleName(), $r);
+ $r = array( 'title' => $titleObj->getPrefixedText(), 'reason' => $reason );
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
}
- private static function getPermissionsError(&$title, $token) {
+ private static function getPermissionsError( &$title, $token ) {
global $wgUser;
-
+
// Check permissions
- $errors = $title->getUserPermissionsErrors('delete', $wgUser);
- if (count($errors) > 0) return $errors;
-
- // Check token
- if(!$wgUser->matchEditToken($token))
- return array(array('sessionfailure'));
+ $errors = $title->getUserPermissionsErrors( 'delete', $wgUser );
+ if ( count( $errors ) > 0 ) {
+ return $errors;
+ }
+
return array();
}
@@ -119,70 +113,84 @@ class ApiDelete extends ApiBase {
* @param string $reason - Reason for the deletion. Autogenerated if NULL
* @return Title::getUserPermissionsErrors()-like array
*/
- public static function delete(&$article, $token, &$reason = NULL)
- {
+ public static function delete( &$article, $token, &$reason = null ) {
global $wgUser;
+ if ( $article->isBigDeletion() && !$wgUser->isAllowed( 'bigdelete' ) ) {
+ global $wgDeleteRevisionsLimit;
+ return array( array( 'delete-toobig', $wgDeleteRevisionsLimit ) );
+ }
$title = $article->getTitle();
- $errors = self::getPermissionsError($title, $token);
- if (count($errors)) return $errors;
+ $errors = self::getPermissionsError( $title, $token );
+ if ( count( $errors ) ) {
+ return $errors;
+ }
// Auto-generate a summary, if necessary
- if(is_null($reason))
- {
- # Need to pass a throwaway variable because generateReason expects
- # a reference
+ if ( is_null( $reason ) ) {
+ // Need to pass a throwaway variable because generateReason expects
+ // a reference
$hasHistory = false;
- $reason = $article->generateReason($hasHistory);
- if($reason === false)
- return array(array('cannotdelete'));
+ $reason = $article->generateReason( $hasHistory );
+ if ( $reason === false ) {
+ return array( array( 'cannotdelete' ) );
+ }
}
$error = '';
- if (!wfRunHooks('ArticleDelete', array(&$article, &$wgUser, &$reason, $error)))
- $this->dieUsageMsg(array('hookaborted', $error));
+ if ( !wfRunHooks( 'ArticleDelete', array( &$article, &$wgUser, &$reason, $error ) ) ) {
+ $this->dieUsageMsg( array( 'hookaborted', $error ) );
+ }
// Luckily, Article.php provides a reusable delete function that does the hard work for us
- if($article->doDeleteArticle($reason)) {
- wfRunHooks('ArticleDeleteComplete', array(&$article, &$wgUser, $reason, $article->getId()));
+ if ( $article->doDeleteArticle( $reason ) ) {
+ wfRunHooks( 'ArticleDeleteComplete', array( &$article, &$wgUser, $reason, $article->getId() ) );
return array();
}
- return array(array('cannotdelete', $article->mTitle->getPrefixedText()));
+ return array( array( 'cannotdelete', $article->mTitle->getPrefixedText() ) );
}
- public static function deleteFile($token, &$title, $oldimage, &$reason = NULL, $suppress = false)
- {
- $errors = self::getPermissionsError($title, $token);
- if (count($errors)) return $errors;
+ public static function deleteFile( $token, &$title, $oldimage, &$reason = null, $suppress = false ) {
+ $errors = self::getPermissionsError( $title, $token );
+ if ( count( $errors ) ) {
+ return $errors;
+ }
- if( $oldimage && !FileDeleteForm::isValidOldSpec($oldimage) )
- return array(array('invalidoldimage'));
+ if ( $oldimage && !FileDeleteForm::isValidOldSpec( $oldimage ) ) {
+ return array( array( 'invalidoldimage' ) );
+ }
- $file = wfFindFile($title, false, FileRepo::FIND_IGNORE_REDIRECT);
+ $file = wfFindFile( $title, array( 'ignoreRedirect' => true ) );
$oldfile = false;
-
- if( $oldimage )
+
+ if ( $oldimage ) {
$oldfile = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $title, $oldimage );
-
- if( !FileDeleteForm::haveDeletableFile($file, $oldfile, $oldimage) )
- return array(array('nofile'));
- if (is_null($reason)) # Log and RC don't like null reasons
+ }
+
+ if ( !FileDeleteForm::haveDeletableFile( $file, $oldfile, $oldimage ) ) {
+ return self::delete( new Article( $title ), $token, $reason );
+ }
+ if ( is_null( $reason ) ) { // Log and RC don't like null reasons
$reason = '';
+ }
$status = FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, $suppress );
-
- if( !$status->isGood() )
- return array(array('cannotdelete', $title->getPrefixedText()));
-
+
+ if ( !$status->isGood() ) {
+ return array( array( 'cannotdelete', $title->getPrefixedText() ) );
+ }
+
return array();
}
-
- public function mustBePosted() { return true; }
+
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
}
public function getAllowedParams() {
- return array (
+ return array(
'title' => null,
'pageid' => array(
ApiBase::PARAM_TYPE => 'integer'
@@ -196,7 +204,7 @@ class ApiDelete extends ApiBase {
}
public function getParamDescription() {
- return array (
+ return array(
'title' => 'Title of the page you want to delete. Cannot be used together with pageid',
'pageid' => 'Page ID of the page you want to delete. Cannot be used together with title',
'token' => 'A delete token previously retrieved through prop=info',
@@ -213,14 +221,27 @@ class ApiDelete extends ApiBase {
);
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'invalidtitle', 'title' ),
+ array( 'nosuchpageid', 'pageid' ),
+ array( 'notanarticle' ),
+ array( 'hookaborted', 'error' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+
protected function getExamples() {
- return array (
+ return array(
'api.php?action=delete&title=Main%20Page&token=123ABC',
'api.php?action=delete&title=Main%20Page&token=123ABC&reason=Preparing%20for%20move'
);
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiDelete.php 48122 2009-03-07 12:58:41Z catrope $';
+ return __CLASS__ . ': $Id: ApiDelete.php 62703 2010-02-19 12:54:09Z ashley $';
}
-}
+} \ No newline at end of file
diff --git a/includes/api/ApiDisabled.php b/includes/api/ApiDisabled.php
index 9e0bf56e..60e0e7ee 100644
--- a/includes/api/ApiDisabled.php
+++ b/includes/api/ApiDisabled.php
@@ -1,10 +1,10 @@
<?php
-/*
+/**
* Created on Sep 25, 2008
* API for MediaWiki 1.8+
*
- * Copyright (C) 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
*
* 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
@@ -22,12 +22,11 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once( "ApiBase.php" );
}
-
/**
* API module that dies with an error immediately.
*
@@ -40,12 +39,12 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiDisabled extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
}
public function execute() {
- $this->dieUsage("The ``{$this->getModuleName()}'' module has been disabled.", 'moduledisabled');
+ $this->dieUsage( "The ``{$this->getModuleName()}'' module has been disabled.", 'moduledisabled' );
}
public function isReadMode() {
@@ -53,11 +52,11 @@ class ApiDisabled extends ApiBase {
}
public function getAllowedParams() {
- return array ();
+ return array();
}
public function getParamDescription() {
- return array ();
+ return array();
}
public function getDescription() {
@@ -67,10 +66,10 @@ class ApiDisabled extends ApiBase {
}
protected function getExamples() {
- return array ();
+ return array();
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiDisabled.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiDisabled.php 62783 2010-02-21 18:09:00Z ashley $';
}
}
diff --git a/includes/api/ApiEditPage.php b/includes/api/ApiEditPage.php
index d4a57b83..50a9836a 100644
--- a/includes/api/ApiEditPage.php
+++ b/includes/api/ApiEditPage.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -37,242 +37,295 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiEditPage extends ApiBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName);
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName );
}
public function execute() {
global $wgUser;
$params = $this->extractRequestParams();
- if(is_null($params['title']))
- $this->dieUsageMsg(array('missingparam', 'title'));
- if(is_null($params['text']) && is_null($params['appendtext']) &&
- is_null($params['prependtext']) &&
- $params['undo'] == 0)
- $this->dieUsageMsg(array('missingtext'));
- if(is_null($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
-
- $titleObj = Title::newFromText($params['title']);
- if(!$titleObj)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
+
+ if ( is_null( $params['title'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'title' ) );
+
+ if ( is_null( $params['text'] ) && is_null( $params['appendtext'] ) &&
+ is_null( $params['prependtext'] ) &&
+ $params['undo'] == 0 )
+ $this->dieUsageMsg( array( 'missingtext' ) );
+
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj || $titleObj->isExternal() )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+
// Some functions depend on $wgTitle == $ep->mTitle
global $wgTitle;
$wgTitle = $titleObj;
- if($params['createonly'] && $titleObj->exists())
- $this->dieUsageMsg(array('createonly-exists'));
- if($params['nocreate'] && !$titleObj->exists())
- $this->dieUsageMsg(array('nocreate-missing'));
+ if ( $params['createonly'] && $titleObj->exists() )
+ $this->dieUsageMsg( array( 'createonly-exists' ) );
+ if ( $params['nocreate'] && !$titleObj->exists() )
+ $this->dieUsageMsg( array( 'nocreate-missing' ) );
// Now let's check whether we're even allowed to do this
- $errors = $titleObj->getUserPermissionsErrors('edit', $wgUser);
- if(!$titleObj->exists())
- $errors = array_merge($errors, $titleObj->getUserPermissionsErrors('create', $wgUser));
- if(count($errors))
- $this->dieUsageMsg($errors[0]);
+ $errors = $titleObj->getUserPermissionsErrors( 'edit', $wgUser );
+ if ( !$titleObj->exists() )
+ $errors = array_merge( $errors, $titleObj->getUserPermissionsErrors( 'create', $wgUser ) );
+ if ( count( $errors ) )
+ $this->dieUsageMsg( $errors[0] );
- $articleObj = new Article($titleObj);
+ $articleObj = new Article( $titleObj );
$toMD5 = $params['text'];
- if(!is_null($params['appendtext']) || !is_null($params['prependtext']))
+ if ( !is_null( $params['appendtext'] ) || !is_null( $params['prependtext'] ) )
{
// For non-existent pages, Article::getContent()
// returns an interface message rather than ''
// We do want getContent()'s behavior for non-existent
// MediaWiki: pages, though
- if($articleObj->getID() == 0 && $titleObj->getNamespace() != NS_MEDIAWIKI)
+ if ( $articleObj->getID() == 0 && $titleObj->getNamespace() != NS_MEDIAWIKI )
$content = '';
else
$content = $articleObj->getContent();
+
+ if ( !is_null( $params['section'] ) )
+ {
+ // Process the content for section edits
+ global $wgParser;
+ $section = intval( $params['section'] );
+ $content = $wgParser->getSection( $content, $section, false );
+ if ( $content === false )
+ $this->dieUsage( "There is no section {$section}.", 'nosuchsection' );
+ }
$params['text'] = $params['prependtext'] . $content . $params['appendtext'];
$toMD5 = $params['prependtext'] . $params['appendtext'];
}
- if($params['undo'] > 0)
+ if ( $params['undo'] > 0 )
{
- if($params['undoafter'] > 0)
+ if ( $params['undoafter'] > 0 )
{
- if($params['undo'] < $params['undoafter'])
- list($params['undo'], $params['undoafter']) =
- array($params['undoafter'], $params['undo']);
- $undoafterRev = Revision::newFromID($params['undoafter']);
+ if ( $params['undo'] < $params['undoafter'] )
+ list( $params['undo'], $params['undoafter'] ) =
+ array( $params['undoafter'], $params['undo'] );
+ $undoafterRev = Revision::newFromID( $params['undoafter'] );
}
- $undoRev = Revision::newFromID($params['undo']);
- if(is_null($undoRev) || $undoRev->isDeleted(Revision::DELETED_TEXT))
- $this->dieUsageMsg(array('nosuchrevid', $params['undo']));
- if($params['undoafter'] == 0)
+ $undoRev = Revision::newFromID( $params['undo'] );
+ if ( is_null( $undoRev ) || $undoRev->isDeleted( Revision::DELETED_TEXT ) )
+ $this->dieUsageMsg( array( 'nosuchrevid', $params['undo'] ) );
+
+ if ( $params['undoafter'] == 0 )
$undoafterRev = $undoRev->getPrevious();
- if(is_null($undoafterRev) || $undoafterRev->isDeleted(Revision::DELETED_TEXT))
- $this->dieUsageMsg(array('nosuchrevid', $params['undoafter']));
- if($undoRev->getPage() != $articleObj->getID())
- $this->dieUsageMsg(array('revwrongpage', $undoRev->getID(), $titleObj->getPrefixedText()));
- if($undoafterRev->getPage() != $articleObj->getID())
- $this->dieUsageMsg(array('revwrongpage', $undoafterRev->getID(), $titleObj->getPrefixedText()));
- $newtext = $articleObj->getUndoText($undoRev, $undoafterRev);
- if($newtext === false)
- $this->dieUsageMsg(array('undo-failure'));
+ if ( is_null( $undoafterRev ) || $undoafterRev->isDeleted( Revision::DELETED_TEXT ) )
+ $this->dieUsageMsg( array( 'nosuchrevid', $params['undoafter'] ) );
+
+ if ( $undoRev->getPage() != $articleObj->getID() )
+ $this->dieUsageMsg( array( 'revwrongpage', $undoRev->getID(), $titleObj->getPrefixedText() ) );
+ if ( $undoafterRev->getPage() != $articleObj->getID() )
+ $this->dieUsageMsg( array( 'revwrongpage', $undoafterRev->getID(), $titleObj->getPrefixedText() ) );
+
+ $newtext = $articleObj->getUndoText( $undoRev, $undoafterRev );
+ if ( $newtext === false )
+ $this->dieUsageMsg( array( 'undo-failure' ) );
$params['text'] = $newtext;
// If no summary was given and we only undid one rev,
// use an autosummary
- if(is_null($params['summary']) && $titleObj->getNextRevisionID($undoafterRev->getID()) == $params['undo'])
- $params['summary'] = wfMsgForContent('undo-summary', $params['undo'], $undoRev->getUserText());
+ if ( is_null( $params['summary'] ) && $titleObj->getNextRevisionID( $undoafterRev->getID() ) == $params['undo'] )
+ $params['summary'] = wfMsgForContent( 'undo-summary', $params['undo'], $undoRev->getUserText() );
}
- # See if the MD5 hash checks out
- if(!is_null($params['md5']))
- if(md5($toMD5) !== $params['md5'])
- $this->dieUsageMsg(array('hashcheckfailed'));
+ // See if the MD5 hash checks out
+ if ( !is_null( $params['md5'] ) && md5( $toMD5 ) !== $params['md5'] )
+ $this->dieUsageMsg( array( 'hashcheckfailed' ) );
- $ep = new EditPage($articleObj);
+ $ep = new EditPage( $articleObj );
// EditPage wants to parse its stuff from a WebRequest
// That interface kind of sucks, but it's workable
- $reqArr = array('wpTextbox1' => $params['text'],
- 'wpEdittoken' => $params['token'],
+ $reqArr = array( 'wpTextbox1' => $params['text'],
+ 'wpEditToken' => $params['token'],
'wpIgnoreBlankSummary' => ''
);
- if(!is_null($params['summary']))
+
+ if ( !is_null( $params['summary'] ) )
$reqArr['wpSummary'] = $params['summary'];
- # Watch out for basetimestamp == ''
- # wfTimestamp() treats it as NOW, almost certainly causing an edit conflict
- if(!is_null($params['basetimestamp']) && $params['basetimestamp'] != '')
- $reqArr['wpEdittime'] = wfTimestamp(TS_MW, $params['basetimestamp']);
+
+ // Watch out for basetimestamp == ''
+ // wfTimestamp() treats it as NOW, almost certainly causing an edit conflict
+ if ( !is_null( $params['basetimestamp'] ) && $params['basetimestamp'] != '' )
+ $reqArr['wpEdittime'] = wfTimestamp( TS_MW, $params['basetimestamp'] );
else
$reqArr['wpEdittime'] = $articleObj->getTimestamp();
- if(!is_null($params['starttimestamp']) && $params['starttimestamp'] != '')
- $reqArr['wpStarttime'] = wfTimestamp(TS_MW, $params['starttimestamp']);
+
+ if ( !is_null( $params['starttimestamp'] ) && $params['starttimestamp'] != '' )
+ $reqArr['wpStarttime'] = wfTimestamp( TS_MW, $params['starttimestamp'] );
else
- # Fake wpStartime
- $reqArr['wpStarttime'] = $reqArr['wpEdittime'];
- if($params['minor'] || (!$params['notminor'] && $wgUser->getOption('minordefault')))
+ $reqArr['wpStarttime'] = $reqArr['wpEdittime']; // Fake wpStartime
+
+ if ( $params['minor'] || ( !$params['notminor'] && $wgUser->getOption( 'minordefault' ) ) )
$reqArr['wpMinoredit'] = '';
- if($params['recreate'])
+
+ if ( $params['recreate'] )
$reqArr['wpRecreate'] = '';
- if(!is_null($params['section']))
+
+ if ( !is_null( $params['section'] ) )
{
- $section = intval($params['section']);
- if($section == 0 && $params['section'] != '0' && $params['section'] != 'new')
- $this->dieUsage("The section parameter must be set to an integer or 'new'", "invalidsection");
+ $section = intval( $params['section'] );
+ if ( $section == 0 && $params['section'] != '0' && $params['section'] != 'new' )
+ $this->dieUsage( "The section parameter must be set to an integer or 'new'", "invalidsection" );
$reqArr['wpSection'] = $params['section'];
}
else
$reqArr['wpSection'] = '';
- if($params['watch'])
- $watch = true;
- else if($params['unwatch'])
- $watch = false;
- else if($titleObj->userIsWatching())
- $watch = true;
- else if($wgUser->getOption('watchdefault'))
- $watch = true;
- else if($wgUser->getOption('watchcreations') && !$titleObj->exists())
+ // Handle watchlist settings
+ switch ( $params['watchlist'] )
+ {
+ case 'watch':
+ $watch = true;
+ break;
+ case 'unwatch':
+ $watch = false;
+ break;
+ case 'preferences':
+ if ( $titleObj->exists() )
+ $watch = $wgUser->getOption( 'watchdefault' ) || $titleObj->userIsWatching();
+ else
+ $watch = $wgUser->getOption( 'watchcreations' );
+ break;
+ case 'nochange':
+ default:
+ $watch = $titleObj->userIsWatching();
+ }
+ // Deprecated parameters
+ if ( $params['watch'] )
$watch = true;
- else
+ elseif ( $params['unwatch'] )
$watch = false;
- if($watch)
+
+ if ( $watch )
$reqArr['wpWatchthis'] = '';
- $req = new FauxRequest($reqArr, true);
- $ep->importFormData($req);
+ $req = new FauxRequest( $reqArr, true );
+ $ep->importFormData( $req );
- # Run hooks
- # Handle CAPTCHA parameters
+ // Run hooks
+ // Handle CAPTCHA parameters
global $wgRequest;
- if(!is_null($params['captchaid']))
+ if ( !is_null( $params['captchaid'] ) )
$wgRequest->setVal( 'wpCaptchaId', $params['captchaid'] );
- if(!is_null($params['captchaword']))
+ if ( !is_null( $params['captchaword'] ) )
$wgRequest->setVal( 'wpCaptchaWord', $params['captchaword'] );
+
$r = array();
- if(!wfRunHooks('APIEditBeforeSave', array(&$ep, $ep->textbox1, &$r)))
+ if ( !wfRunHooks( 'APIEditBeforeSave', array( $ep, $ep->textbox1, &$r ) ) )
{
- if(count($r))
+ if ( count( $r ) )
{
$r['result'] = "Failure";
- $this->getResult()->addValue(null, $this->getModuleName(), $r);
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
return;
}
else
- $this->dieUsageMsg(array('hookaborted'));
+ $this->dieUsageMsg( array( 'hookaborted' ) );
}
- # Do the actual save
+ // Do the actual save
$oldRevId = $articleObj->getRevIdFetched();
$result = null;
- # Fake $wgRequest for some hooks inside EditPage
- # FIXME: This interface SUCKS
+ // Fake $wgRequest for some hooks inside EditPage
+ // FIXME: This interface SUCKS
$oldRequest = $wgRequest;
$wgRequest = $req;
- $retval = $ep->internalAttemptSave($result, $wgUser->isAllowed('bot') && $params['bot']);
+ $retval = $ep->internalAttemptSave( $result, $wgUser->isAllowed( 'bot' ) && $params['bot'] );
$wgRequest = $oldRequest;
- switch($retval)
+ switch( $retval )
{
case EditPage::AS_HOOK_ERROR:
case EditPage::AS_HOOK_ERROR_EXPECTED:
- $this->dieUsageMsg(array('hookaborted'));
+ $this->dieUsageMsg( array( 'hookaborted' ) );
+
case EditPage::AS_IMAGE_REDIRECT_ANON:
- $this->dieUsageMsg(array('noimageredirect-anon'));
+ $this->dieUsageMsg( array( 'noimageredirect-anon' ) );
+
case EditPage::AS_IMAGE_REDIRECT_LOGGED:
- $this->dieUsageMsg(array('noimageredirect-logged'));
+ $this->dieUsageMsg( array( 'noimageredirect-logged' ) );
+
case EditPage::AS_SPAM_ERROR:
- $this->dieUsageMsg(array('spamdetected', $result['spam']));
+ $this->dieUsageMsg( array( 'spamdetected', $result['spam'] ) );
+
case EditPage::AS_FILTERING:
- $this->dieUsageMsg(array('filtered'));
+ $this->dieUsageMsg( array( 'filtered' ) );
+
case EditPage::AS_BLOCKED_PAGE_FOR_USER:
- $this->dieUsageMsg(array('blockedtext'));
+ $this->dieUsageMsg( array( 'blockedtext' ) );
+
case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED:
case EditPage::AS_CONTENT_TOO_BIG:
global $wgMaxArticleSize;
- $this->dieUsageMsg(array('contenttoobig', $wgMaxArticleSize));
+ $this->dieUsageMsg( array( 'contenttoobig', $wgMaxArticleSize ) );
+
case EditPage::AS_READ_ONLY_PAGE_ANON:
- $this->dieUsageMsg(array('noedit-anon'));
+ $this->dieUsageMsg( array( 'noedit-anon' ) );
+
case EditPage::AS_READ_ONLY_PAGE_LOGGED:
- $this->dieUsageMsg(array('noedit'));
+ $this->dieUsageMsg( array( 'noedit' ) );
+
case EditPage::AS_READ_ONLY_PAGE:
- $this->dieUsageMsg(array('readonlytext'));
+ $this->dieReadOnly();
+
case EditPage::AS_RATE_LIMITED:
- $this->dieUsageMsg(array('actionthrottledtext'));
+ $this->dieUsageMsg( array( 'actionthrottledtext' ) );
+
case EditPage::AS_ARTICLE_WAS_DELETED:
- $this->dieUsageMsg(array('wasdeleted'));
+ $this->dieUsageMsg( array( 'wasdeleted' ) );
+
case EditPage::AS_NO_CREATE_PERMISSION:
- $this->dieUsageMsg(array('nocreate-loggedin'));
+ $this->dieUsageMsg( array( 'nocreate-loggedin' ) );
+
case EditPage::AS_BLANK_ARTICLE:
- $this->dieUsageMsg(array('blankpage'));
+ $this->dieUsageMsg( array( 'blankpage' ) );
+
case EditPage::AS_CONFLICT_DETECTED:
- $this->dieUsageMsg(array('editconflict'));
- #case EditPage::AS_SUMMARY_NEEDED: Can't happen since we set wpIgnoreBlankSummary
+ $this->dieUsageMsg( array( 'editconflict' ) );
+
+ // case EditPage::AS_SUMMARY_NEEDED: Can't happen since we set wpIgnoreBlankSummary
case EditPage::AS_TEXTBOX_EMPTY:
- $this->dieUsageMsg(array('emptynewsection'));
- case EditPage::AS_END:
- # This usually means some kind of race condition
- # or DB weirdness occurred. Throw an unknown error here.
- $this->dieUsageMsg(array('unknownerror'));
+ $this->dieUsageMsg( array( 'emptynewsection' ) );
+
case EditPage::AS_SUCCESS_NEW_ARTICLE:
$r['new'] = '';
case EditPage::AS_SUCCESS_UPDATE:
$r['result'] = "Success";
- $r['pageid'] = intval($titleObj->getArticleID());
+ $r['pageid'] = intval( $titleObj->getArticleID() );
$r['title'] = $titleObj->getPrefixedText();
- # HACK: We create a new Article object here because getRevIdFetched()
- # refuses to be run twice, and because Title::getLatestRevId()
- # won't fetch from the master unless we select for update, which we
- # don't want to do.
- $newArticle = new Article($titleObj);
+ // HACK: We create a new Article object here because getRevIdFetched()
+ // refuses to be run twice, and because Title::getLatestRevId()
+ // won't fetch from the master unless we select for update, which we
+ // don't want to do.
+ $newArticle = new Article( $titleObj );
$newRevId = $newArticle->getRevIdFetched();
- if($newRevId == $oldRevId)
+ if ( $newRevId == $oldRevId )
$r['nochange'] = '';
else
{
- $r['oldrevid'] = intval($oldRevId);
- $r['newrevid'] = intval($newRevId);
+ $r['oldrevid'] = intval( $oldRevId );
+ $r['newrevid'] = intval( $newRevId );
+ $r['newtimestamp'] = wfTimestamp( TS_ISO_8601,
+ $newArticle->getTimestamp() );
}
break;
+
+ case EditPage::AS_END:
+ // This usually means some kind of race condition
+ // or DB weirdness occurred. Fall through to throw an unknown
+ // error.
+
+ // This needs fixing higher up, as Article::doEdit should be
+ // used rather than Article::updateArticle, so that specific
+ // error conditions can be returned
default:
- $this->dieUsageMsg(array('unknownerror', $retval));
+ $this->dieUsageMsg( array( 'unknownerror', $retval ) );
}
- $this->getResult()->addValue(null, $this->getModuleName(), $r);
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
}
public function mustBePosted() {
@@ -286,6 +339,41 @@ class ApiEditPage extends ApiBase {
protected function getDescription() {
return 'Create and edit pages.';
}
+
+ public function getPossibleErrors() {
+ global $wgMaxArticleSize;
+
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'title' ),
+ array( 'missingtext' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'createonly-exists' ),
+ array( 'nocreate-missing' ),
+ array( 'nosuchrevid', 'undo' ),
+ array( 'nosuchrevid', 'undoafter' ),
+ array( 'revwrongpage', 'id', 'text' ),
+ array( 'undo-failure' ),
+ array( 'hashcheckfailed' ),
+ array( 'hookaborted' ),
+ array( 'noimageredirect-anon' ),
+ array( 'noimageredirect-logged' ),
+ array( 'spamdetected', 'spam' ),
+ array( 'filtered' ),
+ array( 'blockedtext' ),
+ array( 'contenttoobig', $wgMaxArticleSize ),
+ array( 'noedit-anon' ),
+ array( 'noedit' ),
+ array( 'actionthrottledtext' ),
+ array( 'wasdeleted' ),
+ array( 'nocreate-loggedin' ),
+ array( 'blankpage' ),
+ array( 'editconflict' ),
+ array( 'emptynewsection' ),
+ array( 'unknownerror', 'retval' ),
+ array( 'code' => 'nosuchsection', 'info' => 'There is no section section.' ),
+ array( 'code' => 'invalidsection', 'info' => 'The section parameter must be set to an integer or \'new\'' ),
+ ) );
+ }
protected function getAllowedParams() {
return array (
@@ -304,8 +392,23 @@ class ApiEditPage extends ApiBase {
'nocreate' => false,
'captchaword' => null,
'captchaid' => null,
- 'watch' => false,
- 'unwatch' => false,
+ 'watch' => array(
+ ApiBase :: PARAM_DFLT => false,
+ ApiBase :: PARAM_DEPRECATED => true,
+ ),
+ 'unwatch' => array(
+ ApiBase :: PARAM_DFLT => false,
+ ApiBase :: PARAM_DEPRECATED => true,
+ ),
+ 'watchlist' => array(
+ ApiBase :: PARAM_DFLT => 'preferences',
+ ApiBase :: PARAM_TYPE => array(
+ 'watch',
+ 'unwatch',
+ 'preferences',
+ 'nochange'
+ ),
+ ),
'md5' => null,
'prependtext' => null,
'appendtext' => null,
@@ -328,10 +431,10 @@ class ApiEditPage extends ApiBase {
'minor' => 'Minor edit',
'notminor' => 'Non-minor edit',
'bot' => 'Mark this edit as bot',
- 'basetimestamp' => array('Timestamp of the base revision (gotten through prop=revisions&rvprop=timestamp).',
+ 'basetimestamp' => array( 'Timestamp of the base revision (gotten through prop=revisions&rvprop=timestamp).',
'Used to detect edit conflicts; leave unset to ignore conflicts.'
),
- 'starttimestamp' => array('Timestamp when you obtained the edit token.',
+ 'starttimestamp' => array( 'Timestamp when you obtained the edit token.',
'Used to detect edit conflicts; leave unset to ignore conflicts.'
),
'recreate' => 'Override any errors about the article having been deleted in the meantime',
@@ -339,17 +442,21 @@ class ApiEditPage extends ApiBase {
'nocreate' => 'Throw an error if the page doesn\'t exist',
'watch' => 'Add the page to your watchlist',
'unwatch' => 'Remove the page from your watchlist',
+ 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch',
'captchaid' => 'CAPTCHA ID from previous request',
'captchaword' => 'Answer to the CAPTCHA',
'md5' => array( 'The MD5 hash of the text parameter, or the prependtext and appendtext parameters concatenated.',
- 'If set, the edit won\'t be done unless the hash is correct'),
- 'prependtext' => array( 'Add this text to the beginning of the page. Overrides text.',
- 'Don\'t use together with section: that won\'t do what you expect.'),
+ 'If set, the edit won\'t be done unless the hash is correct' ),
+ 'prependtext' => 'Add this text to the beginning of the page. Overrides text.',
'appendtext' => 'Add this text to the end of the page. Overrides text',
'undo' => 'Undo this revision. Overrides text, prependtext and appendtext',
'undoafter' => 'Undo all revisions from undo to this one. If not set, just undo one revision',
);
}
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array (
@@ -363,6 +470,6 @@ class ApiEditPage extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiEditPage.php 50220 2009-05-05 14:07:59Z tstarling $';
+ return __CLASS__ . ': $Id: ApiEditPage.php 62600 2010-02-16 22:01:38Z reedy $';
}
}
diff --git a/includes/api/ApiEmailUser.php b/includes/api/ApiEmailUser.php
index 9bb504fb..912480ef 100644
--- a/includes/api/ApiEmailUser.php
+++ b/includes/api/ApiEmailUser.php
@@ -22,19 +22,18 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
-
/**
* @ingroup API
*/
class ApiEmailUser extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
@@ -49,8 +48,6 @@ class ApiEmailUser extends ApiBase {
$this->dieUsageMsg( array( 'missingparam', 'target' ) );
if ( !isset( $params['text'] ) )
$this->dieUsageMsg( array( 'missingparam', 'text' ) );
- if ( !isset( $params['token'] ) )
- $this->dieUsageMsg( array( 'missingparam', 'token' ) );
// Validate target
$targetUser = EmailUserForm::validateEmailTarget( $params['target'] );
@@ -61,8 +58,7 @@ class ApiEmailUser extends ApiBase {
$error = EmailUserForm::getPermissionsError( $wgUser, $params['token'] );
if ( $error )
$this->dieUsageMsg( array( $error ) );
-
-
+
$form = new EmailUserForm( $targetUser, $params['text'], $params['subject'], $params['ccme'] );
$retval = $form->doSubmit();
if ( is_null( $retval ) )
@@ -74,7 +70,9 @@ class ApiEmailUser extends ApiBase {
$this->getResult()->addValue( null, $this->getModuleName(), $result );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -105,6 +103,18 @@ class ApiEmailUser extends ApiBase {
'Email a user.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'usermaildisabled' ),
+ array( 'missingparam', 'target' ),
+ array( 'missingparam', 'text' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array (
@@ -113,7 +123,7 @@ class ApiEmailUser extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiEmailUser.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiEmailUser.php 62599 2010-02-16 21:59:16Z reedy $';
}
-}
+}
\ No newline at end of file
diff --git a/includes/api/ApiExpandTemplates.php b/includes/api/ApiExpandTemplates.php
index afb11402..d0c00db7 100644
--- a/includes/api/ApiExpandTemplates.php
+++ b/includes/api/ApiExpandTemplates.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -37,8 +37,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiExpandTemplates extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
@@ -48,9 +48,9 @@ class ApiExpandTemplates extends ApiBase {
// Get parameters
$params = $this->extractRequestParams();
- //Create title for parser
+ // Create title for parser
$title_obj = Title :: newFromText( $params['title'] );
- if(!$title_obj)
+ if ( !$title_obj )
$title_obj = Title :: newFromText( "API" ); // default
$result = $this->getResult();
@@ -58,6 +58,7 @@ class ApiExpandTemplates extends ApiBase {
// Parse text
global $wgParser;
$options = new ParserOptions();
+
if ( $params['generatexml'] )
{
$wgParser->startExternalParse( $title_obj, $options, OT_PREPROCESS );
@@ -69,7 +70,7 @@ class ApiExpandTemplates extends ApiBase {
}
$xml_result = array();
$result->setContent( $xml_result, $xml );
- $result->addValue( null, 'parsetree', $xml_result);
+ $result->addValue( null, 'parsetree', $xml_result );
}
$retval = $wgParser->preprocess( $params['text'], $title_obj, $options );
@@ -108,6 +109,6 @@ class ApiExpandTemplates extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiExpandTemplates.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiExpandTemplates.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiFeedWatchlist.php b/includes/api/ApiFeedWatchlist.php
index 0859232e..03d12800 100644
--- a/includes/api/ApiFeedWatchlist.php
+++ b/includes/api/ApiFeedWatchlist.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -37,15 +37,15 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFeedWatchlist extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
/**
* This module uses a custom feed wrapper printer.
*/
public function getCustomPrinter() {
- return new ApiFormatFeedWrapper($this->getMain());
+ return new ApiFormatFeedWrapper( $this->getMain() );
}
/**
@@ -60,7 +60,7 @@ class ApiFeedWatchlist extends ApiBase {
$params = $this->extractRequestParams();
// limit to the number of hours going from now back
- $endTime = wfTimestamp(TS_MW, time() - intval($params['hours'] * 60 * 60));
+ $endTime = wfTimestamp( TS_MW, time() - intval( $params['hours'] * 60 * 60 ) );
$dbr = wfGetDB( DB_SLAVE );
// Prepare parameters for nested request
@@ -71,48 +71,56 @@ class ApiFeedWatchlist extends ApiBase {
'list' => 'watchlist',
'wlprop' => 'title|user|comment|timestamp',
'wldir' => 'older', // reverse order - from newest to oldest
- 'wlend' => $dbr->timestamp($endTime), // stop at this time
- 'wllimit' => (50 > $wgFeedLimit) ? $wgFeedLimit : 50
+ 'wlend' => $dbr->timestamp( $endTime ), // stop at this time
+ 'wllimit' => ( 50 > $wgFeedLimit ) ? $wgFeedLimit : 50
);
+ if ( !is_null( $params['wlowner'] ) ) {
+ $fauxReqArr['wlowner'] = $params['wlowner'];
+ }
+ if ( !is_null( $params['wltoken'] ) ) {
+ $fauxReqArr['wltoken'] = $params['wltoken'];
+ }
+
// Check for 'allrev' parameter, and if found, show all revisions to each page on wl.
- if ( ! is_null ( $params['allrev'] ) ) $fauxReqArr['wlallrev'] = '';
+ if ( !is_null ( $params['allrev'] ) ) {
+ $fauxReqArr['wlallrev'] = '';
+ }
// Create the request
$fauxReq = new FauxRequest ( $fauxReqArr );
// Execute
- $module = new ApiMain($fauxReq);
+ $module = new ApiMain( $fauxReq );
$module->execute();
// Get data array
$data = $module->getResultData();
- $feedItems = array ();
- foreach ((array)$data['query']['watchlist'] as $info) {
- $feedItems[] = $this->createFeedItem($info);
+ $feedItems = array();
+ foreach ( (array)$data['query']['watchlist'] as $info ) {
+ $feedItems[] = $this->createFeedItem( $info );
}
- $feedTitle = $wgSitename . ' - ' . wfMsgForContent('watchlist') . ' [' . $wgContLanguageCode . ']';
+ $feedTitle = $wgSitename . ' - ' . wfMsgForContent( 'watchlist' ) . ' [' . $wgContLanguageCode . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullUrl();
- $feed = new $wgFeedClasses[$params['feedformat']] ($feedTitle, htmlspecialchars(wfMsgForContent('watchlist')), $feedUrl);
+ $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, htmlspecialchars( wfMsgForContent( 'watchlist' ) ), $feedUrl );
- ApiFormatFeedWrapper :: setResult($this->getResult(), $feed, $feedItems);
+ ApiFormatFeedWrapper :: setResult( $this->getResult(), $feed, $feedItems );
- } catch (Exception $e) {
+ } catch ( Exception $e ) {
// Error results should not be cached
- $this->getMain()->setCacheMaxAge(0);
+ $this->getMain()->setCacheMaxAge( 0 );
- $feedTitle = $wgSitename . ' - Error - ' . wfMsgForContent('watchlist') . ' [' . $wgContLanguageCode . ']';
+ $feedTitle = $wgSitename . ' - Error - ' . wfMsgForContent( 'watchlist' ) . ' [' . $wgContLanguageCode . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullUrl();
- $feedFormat = isset($params['feedformat']) ? $params['feedformat'] : 'rss';
- $feed = new $wgFeedClasses[$feedFormat] ($feedTitle, htmlspecialchars(wfMsgForContent('watchlist')), $feedUrl);
-
+ $feedFormat = isset( $params['feedformat'] ) ? $params['feedformat'] : 'rss';
+ $feed = new $wgFeedClasses[$feedFormat] ( $feedTitle, htmlspecialchars( wfMsgForContent( 'watchlist' ) ), $feedUrl );
- if ($e instanceof UsageException) {
+ if ( $e instanceof UsageException ) {
$errorCode = $e->getCodeString();
} else {
// Something is seriously wrong
@@ -120,14 +128,14 @@ class ApiFeedWatchlist extends ApiBase {
}
$errorText = $e->getMessage();
- $feedItems[] = new FeedItem("Error ($errorCode)", $errorText, "", "", "");
- ApiFormatFeedWrapper :: setResult($this->getResult(), $feed, $feedItems);
+ $feedItems[] = new FeedItem( "Error ($errorCode)", $errorText, "", "", "" );
+ ApiFormatFeedWrapper :: setResult( $this->getResult(), $feed, $feedItems );
}
}
- private function createFeedItem($info) {
+ private function createFeedItem( $info ) {
$titleStr = $info['title'];
- $title = Title :: newFromText($titleStr);
+ $title = Title :: newFromText( $titleStr );
$titleUrl = $title->getFullUrl();
$comment = isset( $info['comment'] ) ? $info['comment'] : null;
$timestamp = $info['timestamp'];
@@ -135,12 +143,12 @@ class ApiFeedWatchlist extends ApiBase {
$completeText = "$comment ($user)";
- return new FeedItem($titleStr, $completeText, $titleUrl, $timestamp, $user);
+ return new FeedItem( $titleStr, $completeText, $titleUrl, $timestamp, $user );
}
public function getAllowedParams() {
global $wgFeedClasses;
- $feedFormatNames = array_keys($wgFeedClasses);
+ $feedFormatNames = array_keys( $wgFeedClasses );
return array (
'feedformat' => array (
ApiBase :: PARAM_DFLT => 'rss',
@@ -152,7 +160,13 @@ class ApiFeedWatchlist extends ApiBase {
ApiBase :: PARAM_MIN => 1,
ApiBase :: PARAM_MAX => 72,
),
- 'allrev' => null
+ 'allrev' => null,
+ 'wlowner' => array (
+ ApiBase :: PARAM_TYPE => 'user'
+ ),
+ 'wltoken' => array (
+ ApiBase :: PARAM_TYPE => 'string'
+ )
);
}
@@ -160,7 +174,9 @@ class ApiFeedWatchlist extends ApiBase {
return array (
'feedformat' => 'The format of the feed',
'hours' => 'List pages modified within this many hours from now',
- 'allrev' => 'Include multiple revisions of the same page within given timeframe.'
+ 'allrev' => 'Include multiple revisions of the same page within given timeframe.',
+ 'wlowner' => "The user whose watchlist you want (must be accompanied by wltoken if it's not you)",
+ 'wltoken' => 'Security token that requested user set in their preferences'
);
}
@@ -175,6 +191,6 @@ class ApiFeedWatchlist extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFeedWatchlist.php 46848 2009-02-05 15:31:06Z catrope $';
+ return __CLASS__ . ': $Id: ApiFeedWatchlist.php 69357 2010-07-14 22:39:23Z mah $';
}
}
diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php
index cc7434c6..de211fe9 100644
--- a/includes/api/ApiFormatBase.php
+++ b/includes/api/ApiFormatBase.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -36,6 +36,7 @@ if (!defined('MEDIAWIKI')) {
abstract class ApiFormatBase extends ApiBase {
private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp, $mCleared;
+ private $mBufferResult = false, $mBuffer;
/**
* Constructor
@@ -43,15 +44,15 @@ abstract class ApiFormatBase extends ApiBase {
* @param $main ApiMain
* @param $format string Format name
*/
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
- $this->mIsHtml = (substr($format, -2, 2) === 'fm'); // ends with 'fm'
- if ($this->mIsHtml)
- $this->mFormat = substr($format, 0, -2); // remove ending 'fm'
+ $this->mIsHtml = ( substr( $format, - 2, 2 ) === 'fm' ); // ends with 'fm'
+ if ( $this->mIsHtml )
+ $this->mFormat = substr( $format, 0, - 2 ); // remove ending 'fm'
else
$this->mFormat = $format;
- $this->mFormat = strtoupper($this->mFormat);
+ $this->mFormat = strtoupper( $this->mFormat );
$this->mCleared = false;
}
@@ -102,29 +103,39 @@ abstract class ApiFormatBase extends ApiBase {
}
/**
+ * Whether this formatter can format the help message in a nice way.
+ * By default, this returns the same as getIsHtml().
+ * When action=help is set explicitly, the help will always be shown
+ * @return bool
+ */
+ public function getWantsHelp() {
+ return $this->getIsHtml();
+ }
+
+ /**
* Initialize the printer function and prepare the output headers, etc.
* This method must be the first outputing method during execution.
* A help screen's header is printed for the HTML-based output
* @param $isError bool Whether an error message is printed
*/
- function initPrinter($isError) {
+ function initPrinter( $isError ) {
$isHtml = $this->getIsHtml();
$mime = $isHtml ? 'text/html' : $this->getMimeType();
$script = wfScript( 'api' );
// Some printers (ex. Feed) do their own header settings,
// in which case $mime will be set to null
- if (is_null($mime))
+ if ( is_null( $mime ) )
return; // skip any initialization
- header("Content-Type: $mime; charset=utf-8");
+ header( "Content-Type: $mime; charset=utf-8" );
- if ($isHtml) {
+ if ( $isHtml ) {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<?php if ($this->mUnescapeAmps) {
+<?php if ( $this->mUnescapeAmps ) {
?> <title>MediaWiki API</title>
<?php } else {
?> <title>MediaWiki API Result</title>
@@ -134,12 +145,12 @@ abstract class ApiFormatBase extends ApiBase {
<?php
- if( !$isError ) {
+ if ( !$isError ) {
?>
-<br/>
+<br />
<small>
-You are looking at the HTML representation of the <?php echo( $this->mFormat ); ?> format.<br/>
-HTML is good for debugging, but probably is not suitable for your application.<br/>
+You are looking at the HTML representation of the <?php echo( $this->mFormat ); ?> format.<br />
+HTML is good for debugging, but probably is not suitable for your application.<br />
See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
<a href='<?php echo( $script ); ?>'>API help</a> for more information.
</small>
@@ -159,7 +170,7 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
* Finish printing. Closes HTML tags.
*/
public function closePrinter() {
- if ($this->getIsHtml()) {
+ if ( $this->getIsHtml() ) {
?>
</pre>
@@ -177,15 +188,16 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
* when format name ends in 'fm'.
* @param $text string
*/
- public function printText($text) {
- if ($this->getIsHtml())
- echo $this->formatHTML($text);
- else
- {
+ public function printText( $text ) {
+ if ( $this->mBufferResult ) {
+ $this->mBuffer = $text;
+ } elseif ( $this->getIsHtml() ) {
+ echo $this->formatHTML( $text );
+ } else {
// For non-HTML output, clear all errors that might have been
// displayed if display_errors=On
// Do this only once, of course
- if(!$this->mCleared)
+ if ( !$this->mCleared )
{
ob_clean();
$this->mCleared = true;
@@ -195,6 +207,19 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
}
/**
+ * Get the contents of the buffer.
+ */
+ public function getBuffer() {
+ return $this->mBuffer;
+ }
+ /**
+ * Set the flag to buffer the result instead of printing it.
+ */
+ public function setBufferResult( $value ) {
+ $this->mBufferResult = $value;
+ }
+
+ /**
* Sets whether the pretty-printer should format *bold* and $italics$
* @param $help bool
*/
@@ -208,25 +233,25 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
* @param $text string
* @return string
*/
- protected function formatHTML($text) {
+ protected function formatHTML( $text ) {
global $wgUrlProtocols;
-
+
// Escape everything first for full coverage
- $text = htmlspecialchars($text);
+ $text = htmlspecialchars( $text );
// encode all comments or tags as safe blue strings
- $text = preg_replace('/\&lt;(!--.*?--|.*?)\&gt;/', '<span style="color:blue;">&lt;\1&gt;</span>', $text);
+ $text = preg_replace( '/\&lt;(!--.*?--|.*?)\&gt;/', '<span style="color:blue;">&lt;\1&gt;</span>', $text );
// identify URLs
- $protos = implode("|", $wgUrlProtocols);
- # This regex hacks around bug 13218 (&quot; included in the URL)
- $text = preg_replace("#(($protos).*?)(&quot;)?([ \\'\"<>\n]|&lt;|&gt;|&quot;)#", '<a href="\\1">\\1</a>\\3\\4', $text);
+ $protos = implode( "|", $wgUrlProtocols );
+ // This regex hacks around bug 13218 (&quot; included in the URL)
+ $text = preg_replace( "#(($protos).*?)(&quot;)?([ \\'\"<>\n]|&lt;|&gt;|&quot;)#", '<a href="\\1">\\1</a>\\3\\4', $text );
// identify requests to api.php
- $text = preg_replace("#api\\.php\\?[^ \\()<\n\t]+#", '<a href="\\0">\\0</a>', $text);
- if( $this->mHelp ) {
+ $text = preg_replace( "#api\\.php\\?[^ \\()<\n\t]+#", '<a href="\\0">\\0</a>', $text );
+ if ( $this->mHelp ) {
// make strings inside * bold
- $text = preg_replace("#\\*[^<>\n]+\\*#", '<b>\\0</b>', $text);
+ $text = preg_replace( "#\\*[^<>\n]+\\*#", '<b>\\0</b>', $text );
// make strings inside $ italic
- $text = preg_replace("#\\$[^<>\n]+\\$#", '<b><i>\\0</i></b>', $text);
+ $text = preg_replace( "#\\$[^<>\n]+\\$#", '<b><i>\\0</i></b>', $text );
}
/* Temporary fix for bad links in help messages. As a special case,
@@ -248,7 +273,7 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
}
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiFormatBase.php 48521 2009-03-18 19:25:29Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatBase.php 62367 2010-02-12 14:09:42Z siebrand $';
}
}
@@ -258,8 +283,8 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
*/
class ApiFormatFeedWrapper extends ApiFormatBase {
- public function __construct($main) {
- parent :: __construct($main, 'feed');
+ public function __construct( $main ) {
+ parent :: __construct( $main, 'feed' );
}
/**
@@ -268,15 +293,15 @@ class ApiFormatFeedWrapper extends ApiFormatBase {
* @param $feed object an instance of one of the $wgFeedClasses classes
* @param $feedItems array of FeedItem objects
*/
- public static function setResult($result, $feed, $feedItems) {
+ public static function setResult( $result, $feed, $feedItems ) {
// Store output in the Result data.
// This way we can check during execution if any error has occured
// Disable size checking for this because we can't continue
// cleanly; size checking would cause more problems than it'd
// solve
$result->disableSizeCheck();
- $result->addValue(null, '_feed', $feed);
- $result->addValue(null, '_feeditems', $feedItems);
+ $result->addValue( null, '_feed', $feed );
+ $result->addValue( null, '_feeditems', $feedItems );
$result->enableSizeCheck();
}
@@ -301,13 +326,13 @@ class ApiFormatFeedWrapper extends ApiFormatBase {
*/
public function execute() {
$data = $this->getResultData();
- if (isset ($data['_feed']) && isset ($data['_feeditems'])) {
+ if ( isset ( $data['_feed'] ) && isset ( $data['_feeditems'] ) ) {
$feed = $data['_feed'];
$items = $data['_feeditems'];
$feed->outHeader();
- foreach ($items as & $item)
- $feed->outItem($item);
+ foreach ( $items as & $item )
+ $feed->outItem( $item );
$feed->outFooter();
} else {
// Error has occured, print something useful
@@ -316,6 +341,6 @@ class ApiFormatFeedWrapper extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatBase.php 48521 2009-03-18 19:25:29Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatBase.php 62367 2010-02-12 14:09:42Z siebrand $';
}
} \ No newline at end of file
diff --git a/includes/api/ApiFormatDbg.php b/includes/api/ApiFormatDbg.php
index 254c140b..26afd329 100644
--- a/includes/api/ApiFormatDbg.php
+++ b/includes/api/ApiFormatDbg.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -33,19 +33,19 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFormatDbg extends ApiFormatBase {
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
- # This looks like it should be text/plain, but IE7 is so
- # brain-damaged it tries to parse text/plain as HTML if it
- # contains HTML tags. Using MIME text/text works around this bug
+ // This looks like it should be text/plain, but IE7 is so
+ // brain-damaged it tries to parse text/plain as HTML if it
+ // contains HTML tags. Using MIME text/text works around this bug
return 'text/text';
}
public function execute() {
- $this->printText(var_export($this->getResultData(), true));
+ $this->printText( var_export( $this->getResultData(), true ) );
}
public function getDescription() {
@@ -53,6 +53,6 @@ class ApiFormatDbg extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatDbg.php 35098 2008-05-20 17:13:28Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatDbg.php 61444 2010-01-23 22:52:40Z reedy $';
}
}
diff --git a/includes/api/ApiFormatJson.php b/includes/api/ApiFormatJson.php
index 7b5a02a4..69686bfb 100644
--- a/includes/api/ApiFormatJson.php
+++ b/includes/api/ApiFormatJson.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -35,12 +35,17 @@ class ApiFormatJson extends ApiFormatBase {
private $mIsRaw;
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
- $this->mIsRaw = ($format === 'rawfm');
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
+ $this->mIsRaw = ( $format === 'rawfm' );
}
public function getMimeType() {
+ $params = $this->extractRequestParams();
+ // callback:
+ if ( $params['callback'] ) {
+ return 'text/javascript';
+ }
return 'application/json';
}
@@ -48,30 +53,29 @@ class ApiFormatJson extends ApiFormatBase {
return $this->mIsRaw;
}
+ public function getWantsHelp() {
+ // Help is always ugly in JSON
+ return false;
+ }
+
public function execute() {
$prefix = $suffix = "";
$params = $this->extractRequestParams();
$callback = $params['callback'];
- if(!is_null($callback)) {
- $prefix = preg_replace("/[^][.\\'\\\"_A-Za-z0-9]/", "", $callback ) . "(";
+ if ( !is_null( $callback ) ) {
+ $prefix = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", "", $callback ) . "(";
$suffix = ")";
}
-
- // Some versions of PHP have a broken json_encode, see PHP bug
- // 46944. Test encoding an affected character (U+20000) to
- // avoid this.
- if (!function_exists('json_encode') || $this->getIsHtml() || strtolower(json_encode("\xf0\xa0\x80\x80")) != '"\ud840\udc00"') {
- $json = new Services_JSON();
- $this->printText($prefix . $json->encode($this->getResultData(), $this->getIsHtml()) . $suffix);
- } else {
- $this->printText($prefix . json_encode($this->getResultData()) . $suffix);
- }
+ $this->printText(
+ $prefix .
+ FormatJson::encode( $this->getResultData(), $this->getIsHtml() ) .
+ $suffix );
}
public function getAllowedParams() {
return array (
- 'callback' => null
+ 'callback' => null,
);
}
@@ -82,13 +86,13 @@ class ApiFormatJson extends ApiFormatBase {
}
public function getDescription() {
- if ($this->mIsRaw)
+ if ( $this->mIsRaw )
return 'Output data with the debuging elements in JSON format' . parent :: getDescription();
else
return 'Output data in JSON format' . parent :: getDescription();
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatJson.php 48713 2009-03-23 19:58:07Z catrope $';
+ return __CLASS__ . ': $Id: ApiFormatJson.php 62354 2010-02-12 06:44:16Z mah $';
}
}
diff --git a/includes/api/ApiFormatPhp.php b/includes/api/ApiFormatPhp.php
index 163d3028..dd03c300 100644
--- a/includes/api/ApiFormatPhp.php
+++ b/includes/api/ApiFormatPhp.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFormatPhp extends ApiFormatBase {
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
@@ -42,7 +42,7 @@ class ApiFormatPhp extends ApiFormatBase {
}
public function execute() {
- $this->printText(serialize($this->getResultData()));
+ $this->printText( serialize( $this->getResultData() ) );
}
public function getDescription() {
@@ -50,6 +50,6 @@ class ApiFormatPhp extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatPhp.php 35098 2008-05-20 17:13:28Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatPhp.php 60930 2010-01-11 15:55:52Z simetrical $';
}
}
diff --git a/includes/api/ApiFormatRaw.php b/includes/api/ApiFormatRaw.php
index 51025448..8bb66aea 100644
--- a/includes/api/ApiFormatRaw.php
+++ b/includes/api/ApiFormatRaw.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -39,33 +39,37 @@ class ApiFormatRaw extends ApiFormatBase {
* @param $main ApiMain object
* @param $errorFallback Formatter object to fall back on for errors
*/
- public function __construct($main, $errorFallback) {
- parent :: __construct($main, 'raw');
+ public function __construct( $main, $errorFallback ) {
+ parent :: __construct( $main, 'raw' );
$this->mErrorFallback = $errorFallback;
}
public function getMimeType() {
$data = $this->getResultData();
- if(isset($data['error']))
+
+ if ( isset( $data['error'] ) )
return $this->mErrorFallback->getMimeType();
- if(!isset($data['mime']))
- ApiBase::dieDebug(__METHOD__, "No MIME type set for raw formatter");
+
+ if ( !isset( $data['mime'] ) )
+ ApiBase::dieDebug( __METHOD__, "No MIME type set for raw formatter" );
+
return $data['mime'];
}
public function execute() {
$data = $this->getResultData();
- if(isset($data['error']))
+ if ( isset( $data['error'] ) )
{
$this->mErrorFallback->execute();
return;
}
- if(!isset($data['text']))
- ApiBase::dieDebug(__METHOD__, "No text given for raw formatter");
- $this->printText($data['text']);
+
+ if ( !isset( $data['text'] ) )
+ ApiBase::dieDebug( __METHOD__, "No text given for raw formatter" );
+ $this->printText( $data['text'] );
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatRaw.php 48629 2009-03-20 11:40:54Z catrope $';
+ return __CLASS__ . ': $Id: ApiFormatRaw.php 61437 2010-01-23 22:26:40Z reedy $';
}
}
diff --git a/includes/api/ApiFormatTxt.php b/includes/api/ApiFormatTxt.php
index 5f608d5c..1627dde6 100644
--- a/includes/api/ApiFormatTxt.php
+++ b/includes/api/ApiFormatTxt.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -33,19 +33,19 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFormatTxt extends ApiFormatBase {
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
- # This looks like it should be text/plain, but IE7 is so
- # brain-damaged it tries to parse text/plain as HTML if it
- # contains HTML tags. Using MIME text/text works around this bug
+ // This looks like it should be text/plain, but IE7 is so
+ // brain-damaged it tries to parse text/plain as HTML if it
+ // contains HTML tags. Using MIME text/text works around this bug
return 'text/text';
}
public function execute() {
- $this->printText(print_r($this->getResultData(), true));
+ $this->printText( print_r( $this->getResultData(), true ) );
}
public function getDescription() {
@@ -53,6 +53,6 @@ class ApiFormatTxt extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatTxt.php 35098 2008-05-20 17:13:28Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatTxt.php 61444 2010-01-23 22:52:40Z reedy $';
}
}
diff --git a/includes/api/ApiFormatWddx.php b/includes/api/ApiFormatWddx.php
index a716373d..e95e540b 100644
--- a/includes/api/ApiFormatWddx.php
+++ b/includes/api/ApiFormatWddx.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFormatWddx extends ApiFormatBase {
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
@@ -46,67 +46,66 @@ class ApiFormatWddx extends ApiFormatBase {
// PHP bug 45314. Test encoding an affected character (U+00A0)
// to avoid this.
$expected = "<wddxPacket version='1.0'><header/><data><string>\xc2\xa0</string></data></wddxPacket>";
- if (function_exists('wddx_serialize_value')
+ if ( function_exists( 'wddx_serialize_value' )
&& !$this->getIsHtml()
- && wddx_serialize_value("\xc2\xa0") == $expected) {
- $this->printText(wddx_serialize_value($this->getResultData()));
+ && wddx_serialize_value( "\xc2\xa0" ) == $expected ) {
+ $this->printText( wddx_serialize_value( $this->getResultData() ) );
} else {
// Don't do newlines and indentation if we weren't asked
// for pretty output
- $nl = ($this->getIsHtml() ? "" : "\n");
+ $nl = ( $this->getIsHtml() ? "" : "\n" );
$indstr = " ";
- $this->printText("<?xml version=\"1.0\"?>$nl");
- $this->printText("<wddxPacket version=\"1.0\">$nl");
- $this->printText("$indstr<header/>$nl");
- $this->printText("$indstr<data>$nl");
- $this->slowWddxPrinter($this->getResultData(), 4);
- $this->printText("$indstr</data>$nl");
- $this->printText("</wddxPacket>$nl");
+ $this->printText( "<?xml version=\"1.0\"?>$nl" );
+ $this->printText( "<wddxPacket version=\"1.0\">$nl" );
+ $this->printText( "$indstr<header/>$nl" );
+ $this->printText( "$indstr<data>$nl" );
+ $this->slowWddxPrinter( $this->getResultData(), 4 );
+ $this->printText( "$indstr</data>$nl" );
+ $this->printText( "</wddxPacket>$nl" );
}
}
/**
* Recursively go through the object and output its data in WDDX format.
*/
- function slowWddxPrinter($elemValue, $indent = 0) {
- $indstr = ($this->getIsHtml() ? "" : str_repeat(' ', $indent));
- $indstr2 = ($this->getIsHtml() ? "" : str_repeat(' ', $indent + 2));
- $nl = ($this->getIsHtml() ? "" : "\n");
- switch (gettype($elemValue)) {
+ function slowWddxPrinter( $elemValue, $indent = 0 ) {
+ $indstr = ( $this->getIsHtml() ? "" : str_repeat( ' ', $indent ) );
+ $indstr2 = ( $this->getIsHtml() ? "" : str_repeat( ' ', $indent + 2 ) );
+ $nl = ( $this->getIsHtml() ? "" : "\n" );
+ switch ( gettype( $elemValue ) ) {
case 'array' :
// Check whether we've got an associative array (<struct>)
// or a regular array (<array>)
- $cnt = count($elemValue);
- if($cnt == 0 || array_keys($elemValue) === range(0, $cnt - 1)) {
+ $cnt = count( $elemValue );
+ if ( $cnt == 0 || array_keys( $elemValue ) === range( 0, $cnt - 1 ) ) {
// Regular array
- $this->printText($indstr . Xml::element('array', array(
- 'length' => $cnt
- ), null) . $nl);
- foreach($elemValue as $subElemValue)
- $this->slowWddxPrinter($subElemValue, $indent + 2);
- $this->printText("$indstr</array>$nl");
+ $this->printText( $indstr . Xml::element( 'array', array(
+ 'length' => $cnt ), null ) . $nl );
+ foreach ( $elemValue as $subElemValue )
+ $this->slowWddxPrinter( $subElemValue, $indent + 2 );
+ $this->printText( "$indstr</array>$nl" );
} else {
// Associative array (<struct>)
- $this->printText("$indstr<struct>$nl");
- foreach($elemValue as $subElemName => $subElemValue) {
- $this->printText($indstr2 . Xml::element('var', array(
+ $this->printText( "$indstr<struct>$nl" );
+ foreach ( $elemValue as $subElemName => $subElemValue ) {
+ $this->printText( $indstr2 . Xml::element( 'var', array(
'name' => $subElemName
- ), null) . $nl);
- $this->slowWddxPrinter($subElemValue, $indent + 4);
- $this->printText("$indstr2</var>$nl");
+ ), null ) . $nl );
+ $this->slowWddxPrinter( $subElemValue, $indent + 4 );
+ $this->printText( "$indstr2</var>$nl" );
}
- $this->printText("$indstr</struct>$nl");
+ $this->printText( "$indstr</struct>$nl" );
}
break;
case 'integer' :
case 'double' :
- $this->printText($indstr . Xml::element('number', null, $elemValue) . $nl);
+ $this->printText( $indstr . Xml::element( 'number', null, $elemValue ) . $nl );
break;
case 'string' :
- $this->printText($indstr . Xml::element('string', null, $elemValue) . $nl);
+ $this->printText( $indstr . Xml::element( 'string', null, $elemValue ) . $nl );
break;
default :
- ApiBase :: dieDebug(__METHOD__, 'Unknown type ' . gettype($elemValue));
+ ApiBase :: dieDebug( __METHOD__, 'Unknown type ' . gettype( $elemValue ) );
}
}
@@ -115,6 +114,6 @@ class ApiFormatWddx extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatWddx.php 48716 2009-03-23 20:06:16Z catrope $';
+ return __CLASS__ . ': $Id: ApiFormatWddx.php 61437 2010-01-23 22:26:40Z reedy $';
}
}
diff --git a/includes/api/ApiFormatXml.php b/includes/api/ApiFormatXml.php
index 35b412c9..a3758a49 100644
--- a/includes/api/ApiFormatXml.php
+++ b/includes/api/ApiFormatXml.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -35,9 +35,10 @@ class ApiFormatXml extends ApiFormatBase {
private $mRootElemName = 'api';
private $mDoubleQuote = false;
+ private $mXslt = null;
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
@@ -48,16 +49,22 @@ class ApiFormatXml extends ApiFormatBase {
return true;
}
- public function setRootElement($rootElemName) {
+ public function setRootElement( $rootElemName ) {
$this->mRootElemName = $rootElemName;
}
public function execute() {
$params = $this->extractRequestParams();
$this->mDoubleQuote = $params['xmldoublequote'];
-
- $this->printText('<?xml version="1.0"?>');
- $this->recXmlPrint($this->mRootElemName, $this->getResultData(), $this->getIsHtml() ? -2 : null);
+ $this->mXslt = $params['xslt'];
+
+ $this->printText( '<?xml version="1.0"?>' );
+ if ( !is_null( $this->mXslt ) )
+ $this->addXslt();
+ $this->printText( self::recXmlPrint( $this->mRootElemName,
+ $this->getResultData(),
+ $this->getIsHtml() ? - 2 : null,
+ $this->mDoubleQuote ) );
}
/**
@@ -73,22 +80,23 @@ class ApiFormatXml extends ApiFormatBase {
* If neither key is found, all keys become element names, and values become element content.
* The method is recursive, so the same rules apply to any sub-arrays.
*/
- function recXmlPrint($elemName, $elemValue, $indent) {
- if (!is_null($indent)) {
+ public static function recXmlPrint( $elemName, $elemValue, $indent, $doublequote = false ) {
+ $retval = '';
+ if ( !is_null( $indent ) ) {
$indent += 2;
- $indstr = "\n" . str_repeat(" ", $indent);
+ $indstr = "\n" . str_repeat( " ", $indent );
} else {
$indstr = '';
}
- $elemName = str_replace(' ', '_', $elemName);
+ $elemName = str_replace( ' ', '_', $elemName );
- switch (gettype($elemValue)) {
+ switch ( gettype( $elemValue ) ) {
case 'array' :
- if (isset ($elemValue['*'])) {
+ if ( isset ( $elemValue['*'] ) ) {
$subElemContent = $elemValue['*'];
- if ($this->mDoubleQuote)
- $subElemContent = $this->doubleQuote($subElemContent);
- unset ($elemValue['*']);
+ if ( $doublequote )
+ $subElemContent = Sanitizer::encodeAttribute( $subElemContent );
+ unset ( $elemValue['*'] );
// Add xml:space="preserve" to the
// element so XML parsers will leave
@@ -98,80 +106,95 @@ class ApiFormatXml extends ApiFormatBase {
$subElemContent = null;
}
- if (isset ($elemValue['_element'])) {
+ if ( isset ( $elemValue['_element'] ) ) {
$subElemIndName = $elemValue['_element'];
- unset ($elemValue['_element']);
+ unset ( $elemValue['_element'] );
} else {
$subElemIndName = null;
}
$indElements = array ();
$subElements = array ();
- foreach ($elemValue as $subElemId => & $subElemValue) {
- if (is_string($subElemValue) && $this->mDoubleQuote)
- $subElemValue = $this->doubleQuote($subElemValue);
+ foreach ( $elemValue as $subElemId => & $subElemValue ) {
+ if ( is_string( $subElemValue ) && $doublequote )
+ $subElemValue = Sanitizer::encodeAttribute( $subElemValue );
- if (gettype($subElemId) === 'integer') {
+ if ( gettype( $subElemId ) === 'integer' ) {
$indElements[] = $subElemValue;
- unset ($elemValue[$subElemId]);
- } elseif (is_array($subElemValue)) {
+ unset ( $elemValue[$subElemId] );
+ } elseif ( is_array( $subElemValue ) ) {
$subElements[$subElemId] = $subElemValue;
- unset ($elemValue[$subElemId]);
+ unset ( $elemValue[$subElemId] );
}
}
- if (is_null($subElemIndName) && count($indElements))
- ApiBase :: dieDebug(__METHOD__, "($elemName, ...) has integer keys without _element value. Use ApiResult::setIndexedTagName().");
+ if ( is_null( $subElemIndName ) && count( $indElements ) )
+ ApiBase :: dieDebug( __METHOD__, "($elemName, ...) has integer keys without _element value. Use ApiResult::setIndexedTagName()." );
- if (count($subElements) && count($indElements) && !is_null($subElemContent))
- ApiBase :: dieDebug(__METHOD__, "($elemName, ...) has content and subelements");
+ if ( count( $subElements ) && count( $indElements ) && !is_null( $subElemContent ) )
+ ApiBase :: dieDebug( __METHOD__, "($elemName, ...) has content and subelements" );
- if (!is_null($subElemContent)) {
- $this->printText($indstr . Xml::element($elemName, $elemValue, $subElemContent));
- } elseif (!count($indElements) && !count($subElements)) {
- $this->printText($indstr . Xml::element($elemName, $elemValue));
+ if ( !is_null( $subElemContent ) ) {
+ $retval .= $indstr . Xml::element( $elemName, $elemValue, $subElemContent );
+ } elseif ( !count( $indElements ) && !count( $subElements ) ) {
+ $retval .= $indstr . Xml::element( $elemName, $elemValue );
} else {
- $this->printText($indstr . Xml::element($elemName, $elemValue, null));
+ $retval .= $indstr . Xml::element( $elemName, $elemValue, null );
- foreach ($subElements as $subElemId => & $subElemValue)
- $this->recXmlPrint($subElemId, $subElemValue, $indent);
+ foreach ( $subElements as $subElemId => & $subElemValue )
+ $retval .= self::recXmlPrint( $subElemId, $subElemValue, $indent );
- foreach ($indElements as $subElemId => & $subElemValue)
- $this->recXmlPrint($subElemIndName, $subElemValue, $indent);
+ foreach ( $indElements as $subElemId => & $subElemValue )
+ $retval .= self::recXmlPrint( $subElemIndName, $subElemValue, $indent );
- $this->printText($indstr . Xml::closeElement($elemName));
+ $retval .= $indstr . Xml::closeElement( $elemName );
}
break;
case 'object' :
// ignore
break;
default :
- $this->printText($indstr . Xml::element($elemName, null, $elemValue));
+ $retval .= $indstr . Xml::element( $elemName, null, $elemValue );
break;
}
+ return $retval;
}
- private function doubleQuote( $text ) {
- return Sanitizer::encodeAttribute( $text );
+ function addXslt() {
+ $nt = Title::newFromText( $this->mXslt );
+ if ( is_null( $nt ) || !$nt->exists() ) {
+ $this->setWarning( 'Invalid or non-existent stylesheet specified' );
+ return;
+ }
+ if ( $nt->getNamespace() != NS_MEDIAWIKI ) {
+ $this->setWarning( 'Stylesheet should be in the MediaWiki namespace.' );
+ return;
+ }
+ if ( substr( $nt->getText(), - 4 ) !== '.xsl' ) {
+ $this->setWarning( 'Stylesheet should have .xsl extension.' );
+ return;
+ }
+ $this->printText( '<?xml-stylesheet href="' . $nt->escapeLocalURL( 'action=raw' ) . '" type="text/xsl" ?>' );
}
-
+
public function getAllowedParams() {
return array (
- 'xmldoublequote' => false
+ 'xmldoublequote' => false,
+ 'xslt' => null,
);
}
public function getParamDescription() {
return array (
'xmldoublequote' => 'If specified, double quotes all attributes and content.',
+ 'xslt' => 'If specified, adds <xslt> as stylesheet',
);
}
-
public function getDescription() {
return 'Output data in XML format' . parent :: getDescription();
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatXml.php 50217 2009-05-05 13:12:16Z tstarling $';
+ return __CLASS__ . ': $Id: ApiFormatXml.php 62402 2010-02-13 00:09:05Z reedy $';
}
}
diff --git a/includes/api/ApiFormatYaml.php b/includes/api/ApiFormatYaml.php
index cc255c63..39381b0f 100644
--- a/includes/api/ApiFormatYaml.php
+++ b/includes/api/ApiFormatYaml.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiFormatBase.php');
+ require_once ( 'ApiFormatBase.php' );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiFormatYaml extends ApiFormatBase {
- public function __construct($main, $format) {
- parent :: __construct($main, $format);
+ public function __construct( $main, $format ) {
+ parent :: __construct( $main, $format );
}
public function getMimeType() {
@@ -42,7 +42,7 @@ class ApiFormatYaml extends ApiFormatBase {
}
public function execute() {
- $this->printText(Spyc :: YAMLDump($this->getResultData()));
+ $this->printText( Spyc :: YAMLDump( $this->getResultData() ) );
}
public function getDescription() {
@@ -50,6 +50,6 @@ class ApiFormatYaml extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatYaml.php 35098 2008-05-20 17:13:28Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatYaml.php 60930 2010-01-11 15:55:52Z simetrical $';
}
}
diff --git a/includes/api/ApiFormatYaml_spyc.php b/includes/api/ApiFormatYaml_spyc.php
index f16b2c8a..30f860dd 100644
--- a/includes/api/ApiFormatYaml_spyc.php
+++ b/includes/api/ApiFormatYaml_spyc.php
@@ -38,9 +38,9 @@ class Spyc {
* @param $indent Integer: Pass in false to use the default, which is 2
* @param $wordwrap Integer: Pass in 0 for no wordwrap, false for default (40)
*/
- public static function YAMLDump($array,$indent = false,$wordwrap = false) {
+ public static function YAMLDump( $array, $indent = false, $wordwrap = false ) {
$spyc = new Spyc;
- return $spyc->dump($array,$indent,$wordwrap);
+ return $spyc->dump( $array, $indent, $wordwrap );
}
/**
@@ -63,18 +63,18 @@ class Spyc {
* @param $indent Integer: Pass in false to use the default, which is 2
* @param $wordwrap Integer: Pass in 0 for no wordwrap, false for default (40)
*/
- function dump($array,$indent = false,$wordwrap = false) {
+ function dump( $array, $indent = false, $wordwrap = false ) {
// Dumps to some very clean YAML. We'll have to add some more features
// and options soon. And better support for folding.
// New features and options.
- if ($indent === false or !is_numeric($indent)) {
+ if ( $indent === false or !is_numeric( $indent ) ) {
$this->_dumpIndent = 2;
} else {
$this->_dumpIndent = $indent;
}
- if ($wordwrap === false or !is_numeric($wordwrap)) {
+ if ( $wordwrap === false or !is_numeric( $wordwrap ) ) {
$this->_dumpWordWrap = 40;
} else {
$this->_dumpWordWrap = $wordwrap;
@@ -84,8 +84,8 @@ class Spyc {
$string = "---\n";
// Start at the base of the array and move through it.
- foreach ($array as $key => $value) {
- $string .= $this->_yamlize($key,$value,0);
+ foreach ( $array as $key => $value ) {
+ $string .= $this->_yamlize( $key, $value, 0 );
}
return $string;
}
@@ -110,18 +110,18 @@ class Spyc {
* @param $value The value of the item
* @param $indent The indent of the current node
*/
- private function _yamlize($key,$value,$indent) {
- if (is_array($value)) {
+ private function _yamlize( $key, $value, $indent ) {
+ if ( is_array( $value ) ) {
// It has children. What to do?
// Make it the right kind of item
- $string = $this->_dumpNode($key,NULL,$indent);
+ $string = $this->_dumpNode( $key, null, $indent );
// Add the indent
$indent += $this->_dumpIndent;
// Yamlize the array
- $string .= $this->_yamlizeArray($value,$indent);
- } elseif (!is_array($value)) {
+ $string .= $this->_yamlizeArray( $value, $indent );
+ } elseif ( !is_array( $value ) ) {
// It doesn't have children. Yip.
- $string = $this->_dumpNode($key,$value,$indent);
+ $string = $this->_dumpNode( $key, $value, $indent );
}
return $string;
}
@@ -132,11 +132,11 @@ class Spyc {
* @param $array The array you want to convert
* @param $indent The indent of the current level
*/
- private function _yamlizeArray($array,$indent) {
- if (is_array($array)) {
+ private function _yamlizeArray( $array, $indent ) {
+ if ( is_array( $array ) ) {
$string = '';
- foreach ($array as $key => $value) {
- $string .= $this->_yamlize($key,$value,$indent);
+ foreach ( $array as $key => $value ) {
+ $string .= $this->_yamlize( $key, $value, $indent );
}
return $string;
} else {
@@ -150,16 +150,15 @@ class Spyc {
* @param $value The string to check
* @return bool
*/
- function _needLiteral($value) {
- # Check whether the string contains # or : or begins with any of:
- # [ - ? , [ ] { } ! * & | > ' " % @ ` ]
- # or is a number or contains newlines
- return (bool)(gettype($value) == "string" &&
- (is_numeric($value) ||
- strpos($value, "\n") ||
- preg_match("/[#:]/", $value) ||
- preg_match("/^[-?,[\]{}!*&|>'\"%@`]/", $value)));
-
+ function _needLiteral( $value ) {
+ // Check whether the string contains # or : or begins with any of:
+ // [ - ? , [ ] { } ! * & | > ' " % @ ` ]
+ // or is a number or contains newlines
+ return (bool)( gettype( $value ) == "string" &&
+ ( is_numeric( $value ) ||
+ strpos( $value, "\n" ) ||
+ preg_match( "/[#:]/", $value ) ||
+ preg_match( "/^[-?,[\]{}!*&|>'\"%@`]/", $value ) ) );
}
/**
@@ -169,25 +168,28 @@ class Spyc {
* @param $value The value of the item
* @param $indent The indent of the current node
*/
- private function _dumpNode($key,$value,$indent) {
+ private function _dumpNode( $key, $value, $indent ) {
// do some folding here, for blocks
- if ($this->_needLiteral($value)) {
- $value = $this->_doLiteralBlock($value,$indent);
+ if ( $this->_needLiteral( $value ) ) {
+ $value = $this->_doLiteralBlock( $value, $indent );
} else {
- $value = $this->_doFolding($value,$indent);
+ $value = $this->_doFolding( $value, $indent );
}
- $spaces = str_repeat(' ',$indent);
+ $spaces = str_repeat( ' ', $indent );
- if (is_int($key)) {
+ if ( is_int( $key ) ) {
// It's a sequence
- if ($value !== '' && !is_null($value))
- $string = $spaces.'- '.$value."\n";
+ if ( $value !== '' && !is_null( $value ) )
+ $string = $spaces . '- ' . $value . "\n";
else
$string = $spaces . "-\n";
} else {
+ if ($key == '*') //bug 21922 - Quote asterix used as keys
+ $key = "'*'";
+
// It's mapped
- if ($value !== '' && !is_null($value))
+ if ( $value !== '' && !is_null( $value ) )
$string = $spaces . $key . ': ' . $value . "\n";
else
$string = $spaces . $key . ":\n";
@@ -201,13 +203,13 @@ class Spyc {
* @param $value
* @param $indent int The value of the indent
*/
- private function _doLiteralBlock($value,$indent) {
- $exploded = explode("\n",$value);
- $newValue = '|';
+ private function _doLiteralBlock( $value, $indent ) {
+ $exploded = explode( "\n", $value );
+ $newValue = '|-';
$indent += $this->_dumpIndent;
- $spaces = str_repeat(' ',$indent);
- foreach ($exploded as $line) {
- $newValue .= "\n" . $spaces . trim($line);
+ $spaces = str_repeat( ' ', $indent );
+ foreach ( $exploded as $line ) {
+ $newValue .= "\n" . $spaces . trim( $line );
}
return $newValue;
}
@@ -217,17 +219,17 @@ class Spyc {
* @return string
* @param $value The string you wish to fold
*/
- private function _doFolding($value,$indent) {
+ private function _doFolding( $value, $indent ) {
// Don't do anything if wordwrap is set to 0
- if ($this->_dumpWordWrap === 0) {
+ if ( $this->_dumpWordWrap === 0 ) {
return $value;
}
- if (strlen($value) > $this->_dumpWordWrap) {
+ if ( strlen( $value ) > $this->_dumpWordWrap ) {
$indent += $this->_dumpIndent;
- $indent = str_repeat(' ',$indent);
- $wrapped = wordwrap($value,$this->_dumpWordWrap,"\n$indent");
- $value = ">\n".$indent.$wrapped;
+ $indent = str_repeat( ' ', $indent );
+ $wrapped = wordwrap( $value, $this->_dumpWordWrap, "\n$indent" );
+ $value = ">-\n" . $indent . $wrapped;
}
return $value;
}
diff --git a/includes/api/ApiHelp.php b/includes/api/ApiHelp.php
index c001a7dc..1f32e019 100644
--- a/includes/api/ApiHelp.php
+++ b/includes/api/ApiHelp.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -35,15 +35,15 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiHelp extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
/**
* Stub module for displaying help when no parameters are given
*/
public function execute() {
- $this->dieUsage('', 'help');
+ $this->dieUsage( '', 'help' );
}
public function shouldCheckMaxlag() {
@@ -61,6 +61,6 @@ class ApiHelp extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiHelp.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiHelp.php 60930 2010-01-11 15:55:52Z simetrical $';
}
}
diff --git a/includes/api/ApiImport.php b/includes/api/ApiImport.php
index 4b1518bb..032b684c 100644
--- a/includes/api/ApiImport.php
+++ b/includes/api/ApiImport.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -35,70 +35,68 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiImport extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
global $wgUser;
- if(!$wgUser->isAllowed('import'))
- $this->dieUsageMsg(array('cantimport'));
+ if ( !$wgUser->isAllowed( 'import' ) )
+ $this->dieUsageMsg( array( 'cantimport' ) );
$params = $this->extractRequestParams();
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
$source = null;
$isUpload = false;
- if(isset($params['interwikisource']))
+ if ( isset( $params['interwikisource'] ) )
{
- if(!isset($params['interwikipage']))
- $this->dieUsageMsg(array('missingparam', 'interwikipage'));
+ if ( !isset( $params['interwikipage'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'interwikipage' ) );
$source = ImportStreamSource::newFromInterwiki(
$params['interwikisource'],
$params['interwikipage'],
$params['fullhistory'],
- $params['templates']);
+ $params['templates'] );
}
else
{
$isUpload = true;
- if(!$wgUser->isAllowed('importupload'))
- $this->dieUsageMsg(array('cantimport-upload'));
- $source = ImportStreamSource::newFromUpload('xml');
+ if ( !$wgUser->isAllowed( 'importupload' ) )
+ $this->dieUsageMsg( array( 'cantimport-upload' ) );
+ $source = ImportStreamSource::newFromUpload( 'xml' );
}
- if($source instanceof WikiErrorMsg)
- $this->dieUsageMsg(array_merge(
- array($source->getMessageKey()),
- $source->getMessageArgs()));
- else if(WikiError::isError($source))
+ if ( $source instanceof WikiErrorMsg )
+ $this->dieUsageMsg( array_merge(
+ array( $source->getMessageKey() ),
+ $source->getMessageArgs() ) );
+ else if ( WikiError::isError( $source ) )
// This shouldn't happen
- $this->dieUsageMsg(array('import-unknownerror', $source->getMessage()));
+ $this->dieUsageMsg( array( 'import-unknownerror', $source->getMessage() ) );
- $importer = new WikiImporter($source);
- if(isset($params['namespace']))
- $importer->setTargetNamespace($params['namespace']);
- $reporter = new ApiImportReporter($importer, $isUpload,
+ $importer = new WikiImporter( $source );
+ if ( isset( $params['namespace'] ) )
+ $importer->setTargetNamespace( $params['namespace'] );
+ $reporter = new ApiImportReporter( $importer, $isUpload,
$params['interwikisource'],
- $params['summary']);
+ $params['summary'] );
$result = $importer->doImport();
- if($result instanceof WikiXmlError)
- $this->dieUsageMsg(array('import-xml-error',
+ if ( $result instanceof WikiXmlError )
+ $this->dieUsageMsg( array( 'import-xml-error',
$result->mLine,
$result->mColumn,
$result->mByte . $result->mContext,
- xml_error_string($result->mXmlError)));
- else if(WikiError::isError($result))
- // This shouldn't happen
- $this->dieUsageMsg(array('import-unknownerror', $result->getMessage()));
+ xml_error_string( $result->mXmlError ) ) );
+ else if ( WikiError::isError( $result ) )
+ $this->dieUsageMsg( array( 'import-unknownerror', $result->getMessage() ) ); // This shouldn't happen
+
$resultData = $reporter->getData();
- $this->getResult()->setIndexedTagName($resultData, 'page');
- $this->getResult()->addValue(null, $this->getModuleName(), $resultData);
+ $this->getResult()->setIndexedTagName( $resultData, 'page' );
+ $this->getResult()->addValue( null, $this->getModuleName(), $resultData );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -140,6 +138,20 @@ class ApiImport extends ApiBase {
'Import a page from another wiki, or an XML file'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'cantimport' ),
+ array( 'missingparam', 'interwikipage' ),
+ array( 'cantimport-upload' ),
+ array( 'import-unknownerror', 'source' ),
+ array( 'import-unknownerror', 'result' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array(
@@ -149,7 +161,7 @@ class ApiImport extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiImport.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiImport.php 62599 2010-02-16 21:59:16Z reedy $';
}
}
@@ -160,20 +172,20 @@ class ApiImport extends ApiBase {
class ApiImportReporter extends ImportReporter {
private $mResultArr = array();
- function reportPage($title, $origTitle, $revisionCount, $successCount)
+ function reportPage( $title, $origTitle, $revisionCount, $successCount )
{
// Add a result entry
$r = array();
- ApiQueryBase::addTitleInfo($r, $title);
- $r['revisions'] = intval($successCount);
+ ApiQueryBase::addTitleInfo( $r, $title );
+ $r['revisions'] = intval( $successCount );
$this->mResultArr[] = $r;
// Piggyback on the parent to do the logging
- parent::reportPage($title, $origTitle, $revisionCount, $successCount);
+ parent::reportPage( $title, $origTitle, $revisionCount, $successCount );
}
function getData()
{
return $this->mResultArr;
}
-}
+} \ No newline at end of file
diff --git a/includes/api/ApiLogin.php b/includes/api/ApiLogin.php
index 8f1fb834..442bc44c 100644
--- a/includes/api/ApiLogin.php
+++ b/includes/api/ApiLogin.php
@@ -1,11 +1,11 @@
<?php
-/*
+/**
* Created on Sep 19, 2006
*
* API for MediaWiki 1.8+
*
- * Copyright (C) 2006-2007 Yuri Astrakhan <Firstname><Lastname>@gmail.com,
+ * Copyright © 2006-2007 Yuri Astrakhan <Firstname><Lastname>@gmail.com,
* Daniel Cannon (cannon dot danielc at gmail dot com)
*
* This program is free software; you can redistribute it and/or modify
@@ -24,9 +24,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once( 'ApiBase.php' );
}
/**
@@ -36,8 +36,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiLogin extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action, 'lg');
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action, 'lg' );
}
/**
@@ -48,42 +48,40 @@ class ApiLogin extends ApiBase {
* user, or any other reason, the host is cached with an expiry
* and no log-in attempts will be accepted until that expiry
* is reached. The expiry is $this->mLoginThrottle.
- *
- * @access public
*/
public function execute() {
$params = $this->extractRequestParams();
- $result = array ();
+ $result = array();
- $req = new FauxRequest(array (
+ $req = new FauxRequest( array(
'wpName' => $params['name'],
'wpPassword' => $params['password'],
'wpDomain' => $params['domain'],
'wpLoginToken' => $params['token'],
'wpRemember' => ''
- ));
+ ) );
// Init session if necessary
- if( session_id() == '' ) {
+ if ( session_id() == '' ) {
wfSetupSession();
}
- $loginForm = new LoginForm($req);
- switch ($authRes = $loginForm->authenticateUserData()) {
- case LoginForm :: SUCCESS :
+ $loginForm = new LoginForm( $req );
+ switch ( $authRes = $loginForm->authenticateUserData() ) {
+ case LoginForm::SUCCESS:
global $wgUser, $wgCookiePrefix;
- $wgUser->setOption('rememberpassword', 1);
+ $wgUser->setOption( 'rememberpassword', 1 );
$wgUser->setCookies();
// Run hooks. FIXME: split back and frontend from this hook.
// FIXME: This hook should be placed in the backend
$injected_html = '';
- wfRunHooks('UserLoginComplete', array(&$wgUser, &$injected_html));
+ wfRunHooks( 'UserLoginComplete', array( &$wgUser, &$injected_html ) );
$result['result'] = 'Success';
- $result['lguserid'] = intval($wgUser->getId());
+ $result['lguserid'] = intval( $wgUser->getId() );
$result['lgusername'] = $wgUser->getName();
$result['lgtoken'] = $wgUser->getToken();
$result['cookieprefix'] = $wgCookiePrefix;
@@ -102,48 +100,63 @@ class ApiLogin extends ApiBase {
$result['result'] = 'WrongToken';
break;
- case LoginForm :: NO_NAME :
+ case LoginForm::NO_NAME:
$result['result'] = 'NoName';
break;
- case LoginForm :: ILLEGAL :
+
+ case LoginForm::ILLEGAL:
$result['result'] = 'Illegal';
break;
- case LoginForm :: WRONG_PLUGIN_PASS :
+
+ case LoginForm::WRONG_PLUGIN_PASS:
$result['result'] = 'WrongPluginPass';
break;
- case LoginForm :: NOT_EXISTS :
+
+ case LoginForm::NOT_EXISTS:
$result['result'] = 'NotExists';
break;
- case LoginForm :: WRONG_PASS :
+
+ case LoginForm::RESET_PASS: // bug 20223 - Treat a temporary password as wrong. Per SpecialUserLogin - "The e-mailed temporary password should not be used for actual logins;"
+ case LoginForm::WRONG_PASS:
$result['result'] = 'WrongPass';
break;
- case LoginForm :: EMPTY_PASS :
+
+ case LoginForm::EMPTY_PASS:
$result['result'] = 'EmptyPass';
break;
- case LoginForm :: CREATE_BLOCKED :
+
+ case LoginForm::CREATE_BLOCKED:
$result['result'] = 'CreateBlocked';
$result['details'] = 'Your IP address is blocked from account creation';
break;
- case LoginForm :: THROTTLED :
+
+ case LoginForm::THROTTLED:
global $wgPasswordAttemptThrottle;
$result['result'] = 'Throttled';
- $result['wait'] = intval($wgPasswordAttemptThrottle['seconds']);
+ $result['wait'] = intval( $wgPasswordAttemptThrottle['seconds'] );
break;
- default :
- ApiBase :: dieDebug(__METHOD__, "Unhandled case value: {$authRes}");
+
+ case LoginForm::USER_BLOCKED:
+ $result['result'] = 'Blocked';
+ break;
+
+ default:
+ ApiBase::dieDebug( __METHOD__, "Unhandled case value: {$authRes}" );
}
- $this->getResult()->addValue(null, 'login', $result);
+ $this->getResult()->addValue( null, 'login', $result );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isReadMode() {
return false;
}
public function getAllowedParams() {
- return array (
+ return array(
'name' => null,
'password' => null,
'domain' => null,
@@ -152,7 +165,7 @@ class ApiLogin extends ApiBase {
}
public function getParamDescription() {
- return array (
+ return array(
'name' => 'User Name',
'password' => 'Password',
'domain' => 'Domain (optional)',
@@ -161,7 +174,7 @@ class ApiLogin extends ApiBase {
}
public function getDescription() {
- return array (
+ return array(
'This module is used to login and get the authentication tokens. ',
'In the event of a successful log-in, a cookie will be attached',
'to your session. In the event of a failed log-in, you will not ',
@@ -170,6 +183,22 @@ class ApiLogin extends ApiBase {
);
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'NeedToken', 'info' => 'You need to resubmit your login with the specified token. See https://bugzilla.wikimedia.org/show_bug.cgi?id=23076' ),
+ array( 'code' => 'WrongToken', 'info' => 'You specified an invalid token' ),
+ array( 'code' => 'NoName', 'info' => 'You didn\'t set the lgname parameter' ),
+ array( 'code' => 'Illegal', 'info' => ' You provided an illegal username' ),
+ array( 'code' => 'NotExists', 'info' => ' The username you provided doesn\'t exist' ),
+ array( 'code' => 'EmptyPass', 'info' => ' You didn\'t set the lgpassword parameter or you left it empty' ),
+ array( 'code' => 'WrongPass', 'info' => ' The password you provided is incorrect' ),
+ array( 'code' => 'WrongPluginPass', 'info' => 'Same as `WrongPass", returned when an authentication plugin rather than MediaWiki itself rejected the password' ),
+ array( 'code' => 'CreateBlocked', 'info' => 'The wiki tried to automatically create a new account for you, but your IP address has been blocked from account creation' ),
+ array( 'code' => 'Throttled', 'info' => 'You\'ve logged in too many times in a short time' ),
+ array( 'code' => 'Blocked', 'info' => 'User is blocked' ),
+ ) );
+ }
+
protected function getExamples() {
return array(
'api.php?action=login&lgname=user&lgpassword=password'
@@ -177,6 +206,6 @@ class ApiLogin extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiLogin.php 69990 2010-07-27 08:44:08Z tstarling $';
+ return __CLASS__ . ': $Id: ApiLogin.php 64697 2010-04-07 09:05:05Z catrope $';
}
}
diff --git a/includes/api/ApiLogout.php b/includes/api/ApiLogout.php
index aa9f2829..6637ee09 100644
--- a/includes/api/ApiLogout.php
+++ b/includes/api/ApiLogout.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -36,8 +36,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiLogout extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
@@ -47,7 +47,7 @@ class ApiLogout extends ApiBase {
// Give extensions to do something after user logout
$injected_html = '';
- wfRunHooks( 'UserLogoutComplete', array(&$wgUser, &$injected_html, $oldName) );
+ wfRunHooks( 'UserLogoutComplete', array( &$wgUser, &$injected_html, $oldName ) );
}
public function isReadMode() {
@@ -75,6 +75,6 @@ class ApiLogout extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiLogout.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiLogout.php 69578 2010-07-20 02:46:20Z tstarling $';
}
}
diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php
index 063e3574..fa6957b6 100644
--- a/includes/api/ApiMain.php
+++ b/includes/api/ApiMain.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -76,10 +76,12 @@ class ApiMain extends ApiBase {
'unblock' => 'ApiUnblock',
'move' => 'ApiMove',
'edit' => 'ApiEditPage',
+ 'upload' => 'ApiUpload',
'emailuser' => 'ApiEmailUser',
'watch' => 'ApiWatch',
'patrol' => 'ApiPatrol',
'import' => 'ApiImport',
+ 'userrights' => 'ApiUserrights',
);
/**
@@ -102,26 +104,28 @@ class ApiMain extends ApiBase {
'dbg' => 'ApiFormatDbg',
'dbgfm' => 'ApiFormatDbg'
);
-
+
/**
* List of user roles that are specifically relevant to the API.
* array( 'right' => array ( 'msg' => 'Some message with a $1',
* 'params' => array ( $someVarToSubst ) ),
* );
*/
- private static $mRights = array('writeapi' => array(
+ private static $mRights = array( 'writeapi' => array(
'msg' => 'Use of the write API',
'params' => array()
),
'apihighlimits' => array(
'msg' => 'Use higher limits in API queries (Slow queries: $1 results; Fast queries: $2 results). The limits for slow queries also apply to multivalue parameters.',
- 'params' => array (ApiMain::LIMIT_SML2, ApiMain::LIMIT_BIG2)
+ 'params' => array ( ApiMain::LIMIT_SML2, ApiMain::LIMIT_BIG2 )
)
);
private $mPrinter, $mModules, $mModuleNames, $mFormats, $mFormatNames;
- private $mResult, $mAction, $mShowVersions, $mEnableWrite, $mRequest, $mInternalMode;
+ private $mResult, $mAction, $mShowVersions, $mEnableWrite, $mRequest;
+ private $mInternalMode, $mSquidMaxage, $mModule;
+
private $mCacheMode = 'private';
private $mCacheControl = array();
@@ -131,21 +135,21 @@ class ApiMain extends ApiBase {
* @param $request object - if this is an instance of FauxRequest, errors are thrown and no printing occurs
* @param $enableWrite bool should be set to true if the api may modify data
*/
- public function __construct($request, $enableWrite = false) {
+ public function __construct( $request, $enableWrite = false ) {
- $this->mInternalMode = ($request instanceof FauxRequest);
+ $this->mInternalMode = ( $request instanceof FauxRequest );
// Special handling for the main module: $parent === $this
- parent :: __construct($this, $this->mInternalMode ? 'main_int' : 'main');
+ parent :: __construct( $this, $this->mInternalMode ? 'main_int' : 'main' );
- if (!$this->mInternalMode) {
+ if ( !$this->mInternalMode ) {
// Impose module restrictions.
// If the current user cannot read,
// Remove all modules other than login
global $wgUser;
- if( $request->getVal( 'callback' ) !== null ) {
+ if ( $request->getVal( 'callback' ) !== null ) {
// JSON callback allows cross-site reads.
// For safety, strip user credentials.
wfDebug( "API: stripping user credentials for JSON callback\n" );
@@ -156,16 +160,17 @@ class ApiMain extends ApiBase {
global $wgAPIModules; // extension modules
$this->mModules = $wgAPIModules + self :: $Modules;
- $this->mModuleNames = array_keys($this->mModules);
+ $this->mModuleNames = array_keys( $this->mModules );
$this->mFormats = self :: $Formats;
- $this->mFormatNames = array_keys($this->mFormats);
+ $this->mFormatNames = array_keys( $this->mFormats );
- $this->mResult = new ApiResult($this);
+ $this->mResult = new ApiResult( $this );
$this->mShowVersions = false;
$this->mEnableWrite = $enableWrite;
$this->mRequest = & $request;
+ $this->mSquidMaxage = - 1; // flag for executeActionWithErrorHandling()
$this->mCommit = false;
}
@@ -184,27 +189,34 @@ class ApiMain extends ApiBase {
}
/**
- * Get the ApiResult object asscosiated with current request
+ * Get the ApiResult object associated with current request
*/
public function getResult() {
return $this->mResult;
}
/**
+ * Get the API module object. Only works after executeAction()
+ */
+ public function getModule() {
+ return $this->mModule;
+ }
+
+ /**
* Only kept for backwards compatibility
* @deprecated Use isWriteMode() instead
*/
public function requestWriteMode() {
- if (!$this->mEnableWrite)
- $this->dieUsageMsg(array('writedisabled'));
- if (wfReadOnly())
- $this->dieUsageMsg(array('readonlytext'));
+ if ( !$this->mEnableWrite )
+ $this->dieUsageMsg( array( 'writedisabled' ) );
+ if ( wfReadOnly() )
+ $this->dieUsageMsg( array( 'readonlytext' ) );
}
/**
* Set how long the response should be cached.
*/
- public function setCacheMaxAge($maxage) {
+ public function setCacheMaxAge( $maxage ) {
$this->setCacheControl( array(
'max-age' => $maxage,
's-maxage' => $maxage
@@ -293,10 +305,10 @@ class ApiMain extends ApiBase {
/**
* Create an instance of an output formatter by its name
*/
- public function createPrinterByName($format) {
- if( !isset( $this->mFormats[$format] ) )
+ public function createPrinterByName( $format ) {
+ if ( !isset( $this->mFormats[$format] ) )
$this->dieUsage( "Unrecognized format: {$format}", 'unknown_format' );
- return new $this->mFormats[$format] ($this, $format);
+ return new $this->mFormats[$format] ( $this, $format );
}
/**
@@ -304,11 +316,11 @@ class ApiMain extends ApiBase {
*/
public function execute() {
$this->profileIn();
- if ($this->mInternalMode)
+ if ( $this->mInternalMode )
$this->executeAction();
else
$this->executeActionWithErrorHandling();
-
+
$this->profileOut();
}
@@ -324,7 +336,7 @@ class ApiMain extends ApiBase {
try {
$this->executeAction();
- } catch (Exception $e) {
+ } catch ( Exception $e ) {
// Log it
if ( $e instanceof MWException ) {
wfDebugLog( 'exception', $e->getLogMessage() );
@@ -336,31 +348,32 @@ class ApiMain extends ApiBase {
// handler will process and log it.
//
- $errCode = $this->substituteResultWithError($e);
+ $errCode = $this->substituteResultWithError( $e );
// Error results should not be cached
$this->setCacheMode( 'private' );
$headerStr = 'MediaWiki-API-Error: ' . $errCode;
- if ($e->getCode() === 0)
- header($headerStr);
+ if ( $e->getCode() === 0 )
+ header( $headerStr );
else
- header($headerStr, true, $e->getCode());
+ header( $headerStr, true, $e->getCode() );
// Reset and print just the error message
ob_clean();
// If the error occured during printing, do a printer->profileOut()
$this->mPrinter->safeProfileOut();
- $this->printResult(true);
+ $this->printResult( true );
}
// Send cache headers after any code which might generate an error, to
// avoid sending public cache headers for errors.
$this->sendCacheHeaders();
- if($this->mPrinter->getIsHtml())
+ if ( $this->mPrinter->getIsHtml() ) {
echo wfReportTime();
+ }
ob_end_flush();
}
@@ -372,15 +385,22 @@ class ApiMain extends ApiBase {
}
if ( $this->mCacheMode == 'anon-public-user-private' ) {
- global $wgOut;
+ global $wgUseXVO, $wgOut;
header( 'Vary: Accept-Encoding, Cookie' );
- header( $wgOut->getXVO() );
- if ( session_id() != '' || $wgOut->haveCacheVaryCookies() ) {
- // Logged in, mark this request private
+ if ( $wgUseXVO ) {
+ header( $wgOut->getXVO() );
+ if ( $wgOut->haveCacheVaryCookies() ) {
+ // Logged in, mark this request private
+ header( 'Cache-Control: private' );
+ return;
+ }
+ // Logged out, send normal public headers below
+ } elseif ( session_id() != '' ) {
+ // Logged in or otherwise has session (e.g. anonymous users who have edited)
+ // Mark request private
header( 'Cache-Control: private' );
return;
- }
- // Logged out, send normal public headers below
+ } // else no XVO and anonymous, send public headers below
} else /* if public */ {
// Give a debugging message if the user object is unstubbed on a public request
global $wgUser;
@@ -396,7 +416,7 @@ class ApiMain extends ApiBase {
if ( !isset( $this->mCacheControl['max-age'] ) ) {
$this->mCacheControl['max-age'] = $this->getParameter( 'maxage' );
}
-
+
if ( !$this->mCacheControl['s-maxage'] && !$this->mCacheControl['max-age'] ) {
// Public cache not requested
// Sending a Vary header in this case is harmless, and protects us
@@ -426,7 +446,7 @@ class ApiMain extends ApiBase {
$separator = ', ';
}
}
-
+
header( "Cache-Control: $ccHeader" );
}
@@ -434,57 +454,55 @@ class ApiMain extends ApiBase {
* Replace the result data with the information about an exception.
* Returns the error code
*/
- protected function substituteResultWithError($e) {
+ protected function substituteResultWithError( $e ) {
- // Printer may not be initialized if the extractRequestParams() fails for the main module
- if (!isset ($this->mPrinter)) {
- // The printer has not been created yet. Try to manually get formatter value.
- $value = $this->getRequest()->getVal('format', self::API_DEFAULT_FORMAT);
- if (!in_array($value, $this->mFormatNames))
- $value = self::API_DEFAULT_FORMAT;
+ // Printer may not be initialized if the extractRequestParams() fails for the main module
+ if ( !isset ( $this->mPrinter ) ) {
+ // The printer has not been created yet. Try to manually get formatter value.
+ $value = $this->getRequest()->getVal( 'format', self::API_DEFAULT_FORMAT );
+ if ( !in_array( $value, $this->mFormatNames ) )
+ $value = self::API_DEFAULT_FORMAT;
- $this->mPrinter = $this->createPrinterByName($value);
- if ($this->mPrinter->getNeedsRawData())
- $this->getResult()->setRawMode();
- }
+ $this->mPrinter = $this->createPrinterByName( $value );
+ if ( $this->mPrinter->getNeedsRawData() )
+ $this->getResult()->setRawMode();
+ }
- if ($e instanceof UsageException) {
- //
- // User entered incorrect parameters - print usage screen
- //
- $errMessage = array (
- 'code' => $e->getCodeString(),
- 'info' => $e->getMessage());
+ if ( $e instanceof UsageException ) {
+ //
+ // User entered incorrect parameters - print usage screen
+ //
+ $errMessage = $e->getMessageArray();
- // Only print the help message when this is for the developer, not runtime
- if ($this->mPrinter->getIsHtml() || $this->mAction == 'help')
- ApiResult :: setContent($errMessage, $this->makeHelpMsg());
+ // Only print the help message when this is for the developer, not runtime
+ if ( $this->mPrinter->getWantsHelp() || $this->mAction == 'help' )
+ ApiResult :: setContent( $errMessage, $this->makeHelpMsg() );
+ } else {
+ global $wgShowSQLErrors, $wgShowExceptionDetails;
+ //
+ // Something is seriously wrong
+ //
+ if ( ( $e instanceof DBQueryError ) && !$wgShowSQLErrors ) {
+ $info = "Database query error";
} else {
- global $wgShowSQLErrors, $wgShowExceptionDetails;
- //
- // Something is seriously wrong
- //
- if ( ( $e instanceof DBQueryError ) && !$wgShowSQLErrors ) {
- $info = "Database query error";
- } else {
- $info = "Exception Caught: {$e->getMessage()}";
- }
-
- $errMessage = array (
- 'code' => 'internal_api_error_'. get_class($e),
- 'info' => $info,
- );
- ApiResult :: setContent($errMessage, $wgShowExceptionDetails ? "\n\n{$e->getTraceAsString()}\n\n" : "" );
+ $info = "Exception Caught: {$e->getMessage()}";
}
- $this->getResult()->reset();
- $this->getResult()->disableSizeCheck();
- // Re-add the id
- $requestid = $this->getParameter('requestid');
- if(!is_null($requestid))
- $this->getResult()->addValue(null, 'requestid', $requestid);
- $this->getResult()->addValue(null, 'error', $errMessage);
+ $errMessage = array (
+ 'code' => 'internal_api_error_' . get_class( $e ),
+ 'info' => $info,
+ );
+ ApiResult :: setContent( $errMessage, $wgShowExceptionDetails ? "\n\n{$e->getTraceAsString()}\n\n" : "" );
+ }
+
+ $this->getResult()->reset();
+ $this->getResult()->disableSizeCheck();
+ // Re-add the id
+ $requestid = $this->getParameter( 'requestid' );
+ if ( !is_null( $requestid ) )
+ $this->getResult()->addValue( null, 'requestid', $requestid );
+ $this->getResult()->addValue( null, 'error', $errMessage );
return $errMessage['code'];
}
@@ -494,23 +512,40 @@ class ApiMain extends ApiBase {
*/
protected function executeAction() {
// First add the id to the top element
- $requestid = $this->getParameter('requestid');
- if(!is_null($requestid))
- $this->getResult()->addValue(null, 'requestid', $requestid);
+ $requestid = $this->getParameter( 'requestid' );
+ if ( !is_null( $requestid ) )
+ $this->getResult()->addValue( null, 'requestid', $requestid );
$params = $this->extractRequestParams();
$this->mShowVersions = $params['version'];
$this->mAction = $params['action'];
- if( !is_string( $this->mAction ) ) {
+ if ( !is_string( $this->mAction ) ) {
$this->dieUsage( "The API requires a valid action parameter", 'unknown_action' );
}
-
+
// Instantiate the module requested by the user
- $module = new $this->mModules[$this->mAction] ($this, $this->mAction);
+ $module = new $this->mModules[$this->mAction] ( $this, $this->mAction );
+ $this->mModule = $module;
+
+ $moduleParams = $module->extractRequestParams();
+
+ // Die if token required, but not provided (unless there is a gettoken parameter)
+ $salt = $module->getTokenSalt();
+ if ( $salt !== false && !isset( $moduleParams['gettoken'] ) )
+ {
+ if ( !isset( $moduleParams['token'] ) ) {
+ $this->dieUsageMsg( array( 'missingparam', 'token' ) );
+ } else {
+ global $wgUser;
+ if ( !$wgUser->matchEditToken( $moduleParams['token'], $salt ) ) {
+ $this->dieUsageMsg( array( 'sessionfailure' ) );
+ }
+ }
+ }
- if( $module->shouldCheckMaxlag() && isset( $params['maxlag'] ) ) {
+ if ( $module->shouldCheckMaxlag() && isset( $params['maxlag'] ) ) {
// Check for maxlag
global $wgShowHostnames;
$maxLag = $params['maxlag'];
@@ -518,8 +553,7 @@ class ApiMain extends ApiBase {
if ( $lag > $maxLag ) {
header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
header( 'X-Database-Lag: ' . intval( $lag ) );
- // XXX: should we return a 503 HTTP error code like wfMaxlagError() does?
- if( $wgShowHostnames ) {
+ if ( $wgShowHostnames ) {
$this->dieUsage( "Waiting for $host: $lag seconds lagged", 'maxlag' );
} else {
$this->dieUsage( "Waiting for a database server: $lag seconds lagged", 'maxlag' );
@@ -528,50 +562,50 @@ class ApiMain extends ApiBase {
}
}
- global $wgUser;
- if ($module->isReadMode() && !$wgUser->isAllowed('read'))
- $this->dieUsageMsg(array('readrequired'));
- if ($module->isWriteMode()) {
- if (!$this->mEnableWrite)
- $this->dieUsageMsg(array('writedisabled'));
- if (!$wgUser->isAllowed('writeapi'))
- $this->dieUsageMsg(array('writerequired'));
- if (wfReadOnly())
- $this->dieUsageMsg(array('readonlytext'));
+ global $wgUser, $wgGroupPermissions;
+ if ( $module->isReadMode() && !in_array( 'read', User::getGroupPermissions( array( '*' ) ), true ) && !$wgUser->isAllowed( 'read' ) )
+ $this->dieUsageMsg( array( 'readrequired' ) );
+ if ( $module->isWriteMode() ) {
+ if ( !$this->mEnableWrite )
+ $this->dieUsageMsg( array( 'writedisabled' ) );
+ if ( !$wgUser->isAllowed( 'writeapi' ) )
+ $this->dieUsageMsg( array( 'writerequired' ) );
+ if ( wfReadOnly() )
+ $this->dieReadOnly();
}
- if (!$this->mInternalMode) {
+ if ( !$this->mInternalMode ) {
// Ignore mustBePosted() for internal calls
- if($module->mustBePosted() && !$this->mRequest->wasPosted())
- $this->dieUsage("The {$this->mAction} module requires a POST request", 'mustbeposted');
+ if ( $module->mustBePosted() && !$this->mRequest->wasPosted() )
+ $this->dieUsageMsg( array ( 'mustbeposted', $this->mAction ) );
// See if custom printer is used
$this->mPrinter = $module->getCustomPrinter();
- if (is_null($this->mPrinter)) {
+ if ( is_null( $this->mPrinter ) ) {
// Create an appropriate printer
- $this->mPrinter = $this->createPrinterByName($params['format']);
+ $this->mPrinter = $this->createPrinterByName( $params['format'] );
}
- if ($this->mPrinter->getNeedsRawData())
+ if ( $this->mPrinter->getNeedsRawData() )
$this->getResult()->setRawMode();
}
// Execute
$module->profileIn();
$module->execute();
- wfRunHooks('APIAfterExecute', array(&$module));
+ wfRunHooks( 'APIAfterExecute', array( &$module ) );
$module->profileOut();
- if (!$this->mInternalMode) {
+ if ( !$this->mInternalMode ) {
// Print result data
- $this->printResult(false);
+ $this->printResult( false );
}
}
/**
* Print results using the current printer
*/
- protected function printResult($isError) {
+ protected function printResult( $isError ) {
$this->getResult()->cleanUpUTF8();
$printer = $this->mPrinter;
$printer->profileIn();
@@ -582,13 +616,13 @@ class ApiMain extends ApiBase {
$printer->setUnescapeAmps ( ( $this->mAction == 'help' || $isError )
&& $printer->getFormat() == 'XML' && $printer->getIsHtml() );
- $printer->initPrinter($isError);
+ $printer->initPrinter( $isError );
$printer->execute();
$printer->closePrinter();
$printer->profileOut();
}
-
+
public function isReadMode() {
return false;
}
@@ -668,6 +702,16 @@ class ApiMain extends ApiBase {
);
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'readonlytext' ),
+ array( 'code' => 'unknown_format', 'info' => 'Unrecognized format: format' ),
+ array( 'code' => 'unknown_action', 'info' => 'The API requires a valid action parameter' ),
+ array( 'code' => 'maxlag', 'info' => 'Waiting for host: x seconds lagged' ),
+ array( 'code' => 'maxlag', 'info' => 'Waiting for a database server: x seconds lagged' ),
+ ) );
+ }
+
/**
* Returns an array of strings with credits for the API
*/
@@ -677,6 +721,7 @@ class ApiMain extends ApiBase {
' Roan Kattouw <Firstname>.<Lastname>@home.nl (lead developer Sep 2007-present)',
' Victor Vasiliev - vasilvv at gee mail dot com',
' Bryan Tong Minh - bryan . tongminh @ gmail . com',
+ ' Sam Reed - sam @ reedyboy . net',
' Yuri Astrakhan <Firstname><Lastname>@gmail.com (creator, lead developer Sep 2006-Sep 2007)',
'',
'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
@@ -688,19 +733,37 @@ class ApiMain extends ApiBase {
* Override the parent to generate help messages for all available modules.
*/
public function makeHelpMsg() {
+ global $wgMemc, $wgAPICacheHelp, $wgAPICacheHelpTimeout;
+ $this->mPrinter->setHelp();
+ // Get help text from cache if present
+ $key = wfMemcKey( 'apihelp', $this->getModuleName(),
+ SpecialVersion::getVersion( 'nodb' ) .
+ $this->getMain()->getShowVersions() );
+ if ( $wgAPICacheHelp ) {
+ $cached = $wgMemc->get( $key );
+ if ( $cached )
+ return $cached;
+ }
+ $retval = $this->reallyMakeHelpMsg();
+ if ( $wgAPICacheHelp )
+ $wgMemc->set( $key, $retval, $wgAPICacheHelpTimeout );
+ return $retval;
+ }
+
+ public function reallyMakeHelpMsg() {
$this->mPrinter->setHelp();
// Use parent to make default message for the main module
$msg = parent :: makeHelpMsg();
- $astriks = str_repeat('*** ', 10);
+ $astriks = str_repeat( '*** ', 10 );
$msg .= "\n\n$astriks Modules $astriks\n\n";
- foreach( $this->mModules as $moduleName => $unused ) {
- $module = new $this->mModules[$moduleName] ($this, $moduleName);
- $msg .= self::makeHelpMsgHeader($module, 'action');
+ foreach ( $this->mModules as $moduleName => $unused ) {
+ $module = new $this->mModules[$moduleName] ( $this, $moduleName );
+ $msg .= self::makeHelpMsgHeader( $module, 'action' );
$msg2 = $module->makeHelpMsg();
- if ($msg2 !== false)
+ if ( $msg2 !== false )
$msg .= $msg2;
$msg .= "\n";
}
@@ -708,30 +771,30 @@ class ApiMain extends ApiBase {
$msg .= "\n$astriks Permissions $astriks\n\n";
foreach ( self :: $mRights as $right => $rightMsg ) {
$groups = User::getGroupsWithPermission( $right );
- $msg .= "* " . $right . " *\n " . wfMsgReplaceArgs( $rightMsg[ 'msg' ], $rightMsg[ 'params' ] ) .
+ $msg .= "* " . $right . " *\n " . wfMsgReplaceArgs( $rightMsg[ 'msg' ], $rightMsg[ 'params' ] ) .
"\nGranted to:\n " . str_replace( "*", "all", implode( ", ", $groups ) ) . "\n";
}
$msg .= "\n$astriks Formats $astriks\n\n";
- foreach( $this->mFormats as $formatName => $unused ) {
- $module = $this->createPrinterByName($formatName);
- $msg .= self::makeHelpMsgHeader($module, 'format');
+ foreach ( $this->mFormats as $formatName => $unused ) {
+ $module = $this->createPrinterByName( $formatName );
+ $msg .= self::makeHelpMsgHeader( $module, 'format' );
$msg2 = $module->makeHelpMsg();
- if ($msg2 !== false)
+ if ( $msg2 !== false )
$msg .= $msg2;
$msg .= "\n";
}
- $msg .= "\n*** Credits: ***\n " . implode("\n ", $this->getCredits()) . "\n";
+ $msg .= "\n*** Credits: ***\n " . implode( "\n ", $this->getCredits() ) . "\n";
return $msg;
}
- public static function makeHelpMsgHeader($module, $paramName) {
+ public static function makeHelpMsgHeader( $module, $paramName ) {
$modulePrefix = $module->getModulePrefix();
- if (strval($modulePrefix) !== '')
+ if ( strval( $modulePrefix ) !== '' )
$modulePrefix = "($modulePrefix) ";
return "* $paramName={$module->getModuleName()} $modulePrefix*";
@@ -746,9 +809,9 @@ class ApiMain extends ApiBase {
* OBSOLETE, use canApiHighLimits() instead
*/
public function isBot() {
- if (!isset ($this->mIsBot)) {
+ if ( !isset ( $this->mIsBot ) ) {
global $wgUser;
- $this->mIsBot = $wgUser->isAllowed('bot');
+ $this->mIsBot = $wgUser->isAllowed( 'bot' );
}
return $this->mIsBot;
}
@@ -759,9 +822,9 @@ class ApiMain extends ApiBase {
* OBSOLETE, use canApiHighLimits() instead
*/
public function isSysop() {
- if (!isset ($this->mIsSysop)) {
+ if ( !isset ( $this->mIsSysop ) ) {
global $wgUser;
- $this->mIsSysop = in_array( 'sysop', $wgUser->getGroups());
+ $this->mIsSysop = in_array( 'sysop', $wgUser->getGroups() );
}
return $this->mIsSysop;
@@ -772,9 +835,9 @@ class ApiMain extends ApiBase {
* @return bool
*/
public function canApiHighLimits() {
- if (!isset($this->mCanApiHighLimits)) {
+ if ( !isset( $this->mCanApiHighLimits ) ) {
global $wgUser;
- $this->mCanApiHighLimits = $wgUser->isAllowed('apihighlimits');
+ $this->mCanApiHighLimits = $wgUser->isAllowed( 'apihighlimits' );
}
return $this->mCanApiHighLimits;
@@ -795,11 +858,10 @@ class ApiMain extends ApiBase {
public function getVersion() {
$vers = array ();
$vers[] = 'MediaWiki: ' . SpecialVersion::getVersion() . "\n http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/";
- $vers[] = __CLASS__ . ': $Id: ApiMain.php 69990 2010-07-27 08:44:08Z tstarling $';
+ $vers[] = __CLASS__ . ': $Id: ApiMain.php 70066 2010-07-28 05:52:32Z tstarling $';
$vers[] = ApiBase :: getBaseVersion();
$vers[] = ApiFormatBase :: getBaseVersion();
$vers[] = ApiQueryBase :: getBaseVersion();
- $vers[] = ApiFormatFeedWrapper :: getVersion(); // not accessible with format=xxx
return $vers;
}
@@ -845,14 +907,25 @@ class ApiMain extends ApiBase {
class UsageException extends Exception {
private $mCodestr;
+ private $mExtraData;
- public function __construct($message, $codestr, $code = 0) {
- parent :: __construct($message, $code);
+ public function __construct( $message, $codestr, $code = 0, $extradata = null ) {
+ parent :: __construct( $message, $code );
$this->mCodestr = $codestr;
+ $this->mExtraData = $extradata;
}
public function getCodeString() {
return $this->mCodestr;
}
+ public function getMessageArray() {
+ $result = array (
+ 'code' => $this->mCodestr,
+ 'info' => $this->getMessage()
+ );
+ if ( is_array( $this->mExtraData ) )
+ $result = array_merge( $result, $this->mExtraData );
+ return $result;
+ }
public function __toString() {
return "{$this->getCodeString()}: {$this->getMessage()}";
}
diff --git a/includes/api/ApiMove.php b/includes/api/ApiMove.php
index e22d0294..71010de7 100644
--- a/includes/api/ApiMove.php
+++ b/includes/api/ApiMove.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
@@ -33,60 +33,68 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiMove extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
global $wgUser;
$params = $this->extractRequestParams();
- if(is_null($params['reason']))
+ if ( is_null( $params['reason'] ) )
$params['reason'] = '';
- $this->requireOnlyOneParameter($params, 'from', 'fromid');
- if(!isset($params['to']))
- $this->dieUsageMsg(array('missingparam', 'to'));
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
+ $this->requireOnlyOneParameter( $params, 'from', 'fromid' );
+ if ( !isset( $params['to'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'to' ) );
- if(isset($params['from']))
+ if ( isset( $params['from'] ) )
{
- $fromTitle = Title::newFromText($params['from']);
- if(!$fromTitle)
- $this->dieUsageMsg(array('invalidtitle', $params['from']));
+ $fromTitle = Title::newFromText( $params['from'] );
+ if ( !$fromTitle )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['from'] ) );
}
- else if(isset($params['fromid']))
+ else if ( isset( $params['fromid'] ) )
{
- $fromTitle = Title::newFromID($params['fromid']);
- if(!$fromTitle)
- $this->dieUsageMsg(array('nosuchpageid', $params['fromid']));
+ $fromTitle = Title::newFromID( $params['fromid'] );
+ if ( !$fromTitle )
+ $this->dieUsageMsg( array( 'nosuchpageid', $params['fromid'] ) );
}
- if(!$fromTitle->exists())
- $this->dieUsageMsg(array('notanarticle'));
+
+ if ( !$fromTitle->exists() )
+ $this->dieUsageMsg( array( 'notanarticle' ) );
$fromTalk = $fromTitle->getTalkPage();
- $toTitle = Title::newFromText($params['to']);
- if(!$toTitle)
- $this->dieUsageMsg(array('invalidtitle', $params['to']));
+ $toTitle = Title::newFromText( $params['to'] );
+ if ( !$toTitle )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['to'] ) );
$toTalk = $toTitle->getTalkPage();
- # Move the page
+ if ( $toTitle->getNamespace() == NS_FILE
+ && !RepoGroup::singleton()->getLocalRepo()->findFile( $toTitle )
+ && wfFindFile( $toTitle ) )
+ {
+ if ( !$params['ignorewarnings'] && $wgUser->isAllowed( 'reupload-shared' ) ) {
+ $this->dieUsageMsg( array( 'sharedfile-exists' ) );
+ } elseif ( !$wgUser->isAllowed( 'reupload-shared' ) ) {
+ $this->dieUsageMsg( array( 'cantoverwrite-sharedfile' ) );
+ }
+ }
+
+ // Move the page
$hookErr = null;
- $retval = $fromTitle->moveTo($toTitle, true, $params['reason'], !$params['noredirect']);
- if($retval !== true)
- $this->dieUsageMsg(reset($retval));
+ $retval = $fromTitle->moveTo( $toTitle, true, $params['reason'], !$params['noredirect'] );
+ if ( $retval !== true )
+ $this->dieUsageMsg( reset( $retval ) );
- $r = array('from' => $fromTitle->getPrefixedText(), 'to' => $toTitle->getPrefixedText(), 'reason' => $params['reason']);
- if(!$params['noredirect'] || !$wgUser->isAllowed('suppressredirect'))
+ $r = array( 'from' => $fromTitle->getPrefixedText(), 'to' => $toTitle->getPrefixedText(), 'reason' => $params['reason'] );
+ if ( !$params['noredirect'] || !$wgUser->isAllowed( 'suppressredirect' ) )
$r['redirectcreated'] = '';
- # Move the talk page
- if($params['movetalk'] && $fromTalk->exists() && !$fromTitle->isTalkPage())
+ // Move the talk page
+ if ( $params['movetalk'] && $fromTalk->exists() && !$fromTitle->isTalkPage() )
{
- $retval = $fromTalk->moveTo($toTalk, true, $params['reason'], !$params['noredirect']);
- if($retval === true)
+ $retval = $fromTalk->moveTo( $toTalk, true, $params['reason'], !$params['noredirect'] );
+ if ( $retval === true )
{
$r['talkfrom'] = $fromTalk->getPrefixedText();
$r['talkto'] = $toTalk->getPrefixedText();
@@ -94,55 +102,55 @@ class ApiMove extends ApiBase {
// We're not gonna dieUsage() on failure, since we already changed something
else
{
- $parsed = $this->parseMsg(reset($retval));
+ $parsed = $this->parseMsg( reset( $retval ) );
$r['talkmove-error-code'] = $parsed['code'];
$r['talkmove-error-info'] = $parsed['info'];
}
}
- # Move subpages
- if($params['movesubpages'])
+ // Move subpages
+ if ( $params['movesubpages'] )
{
- $r['subpages'] = $this->moveSubpages($fromTitle, $toTitle,
- $params['reason'], $params['noredirect']);
- $this->getResult()->setIndexedTagName($r['subpages'], 'subpage');
- if($params['movetalk'])
+ $r['subpages'] = $this->moveSubpages( $fromTitle, $toTitle,
+ $params['reason'], $params['noredirect'] );
+ $this->getResult()->setIndexedTagName( $r['subpages'], 'subpage' );
+ if ( $params['movetalk'] )
{
- $r['subpages-talk'] = $this->moveSubpages($fromTalk, $toTalk,
- $params['reason'], $params['noredirect']);
- $this->getResult()->setIndexedTagName($r['subpages-talk'], 'subpage');
+ $r['subpages-talk'] = $this->moveSubpages( $fromTalk, $toTalk,
+ $params['reason'], $params['noredirect'] );
+ $this->getResult()->setIndexedTagName( $r['subpages-talk'], 'subpage' );
}
}
- # Watch pages
- if($params['watch'] || $wgUser->getOption('watchmoves'))
+ // Watch pages
+ if ( $params['watch'] || $wgUser->getOption( 'watchmoves' ) )
{
- $wgUser->addWatch($fromTitle);
- $wgUser->addWatch($toTitle);
+ $wgUser->addWatch( $fromTitle );
+ $wgUser->addWatch( $toTitle );
}
- else if($params['unwatch'])
+ else if ( $params['unwatch'] )
{
- $wgUser->removeWatch($fromTitle);
- $wgUser->removeWatch($toTitle);
+ $wgUser->removeWatch( $fromTitle );
+ $wgUser->removeWatch( $toTitle );
}
- $this->getResult()->addValue(null, $this->getModuleName(), $r);
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
}
-
- public function moveSubpages($fromTitle, $toTitle, $reason, $noredirect)
+
+ public function moveSubpages( $fromTitle, $toTitle, $reason, $noredirect )
{
$retval = array();
- $success = $fromTitle->moveSubpages($toTitle, true, $reason, !$noredirect);
- if(isset($success[0]))
- return array('error' => $this->parseMsg($success));
+ $success = $fromTitle->moveSubpages( $toTitle, true, $reason, !$noredirect );
+ if ( isset( $success[0] ) )
+ return array( 'error' => $this->parseMsg( $success ) );
else
{
// At least some pages could be moved
// Report each of them separately
- foreach($success as $oldTitle => $newTitle)
+ foreach ( $success as $oldTitle => $newTitle )
{
- $r = array('from' => $oldTitle);
- if(is_array($newTitle))
- $r['error'] = $this->parseMsg(reset($newTitle));
+ $r = array( 'from' => $oldTitle );
+ if ( is_array( $newTitle ) )
+ $r['error'] = $this->parseMsg( reset( $newTitle ) );
else
// Success
$r['to'] = $newTitle;
@@ -152,7 +160,9 @@ class ApiMove extends ApiBase {
return $retval;
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -171,7 +181,8 @@ class ApiMove extends ApiBase {
'movesubpages' => false,
'noredirect' => false,
'watch' => false,
- 'unwatch' => false
+ 'unwatch' => false,
+ 'ignorewarnings' => false
);
}
@@ -186,7 +197,8 @@ class ApiMove extends ApiBase {
'movesubpages' => 'Move subpages, if applicable',
'noredirect' => 'Don\'t create a redirect',
'watch' => 'Add the page and the redirect to your watchlist',
- 'unwatch' => 'Remove the page and the redirect from your watchlist'
+ 'unwatch' => 'Remove the page and the redirect from your watchlist',
+ 'ignorewarnings' => 'Ignore any warnings'
);
}
@@ -195,6 +207,21 @@ class ApiMove extends ApiBase {
'Move a page.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'to' ),
+ array( 'invalidtitle', 'from' ),
+ array( 'nosuchpageid', 'fromid' ),
+ array( 'notanarticle' ),
+ array( 'invalidtitle', 'to' ),
+ array( 'sharedfile-exists' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array (
@@ -203,6 +230,6 @@ class ApiMove extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiMove.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiMove.php 62810 2010-02-22 03:34:56Z mah $';
}
}
diff --git a/includes/api/ApiOpenSearch.php b/includes/api/ApiOpenSearch.php
index d2e6ea21..e145d80c 100644
--- a/includes/api/ApiOpenSearch.php
+++ b/includes/api/ApiOpenSearch.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -33,34 +33,38 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiOpenSearch extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function getCustomPrinter() {
- return $this->getMain()->createPrinterByName('json');
+ return $this->getMain()->createPrinterByName( 'json' );
}
public function execute() {
- global $wgEnableMWSuggest;
+ global $wgEnableOpenSearchSuggest, $wgSearchSuggestCacheExpiry;
$params = $this->extractRequestParams();
$search = $params['search'];
$limit = $params['limit'];
$namespaces = $params['namespace'];
$suggest = $params['suggest'];
- # $wgEnableMWSuggest hit incoming when $wgEnableMWSuggest is disabled
- if( $suggest && !$wgEnableMWSuggest ) return;
-
- // Open search results may be stored for a very long time
- $this->getMain()->setCacheMaxAge(1200);
- $this->getMain()->setCacheMode( 'public' );
- $srchres = PrefixSearch::titleSearch( $search, $limit, $namespaces );
+ // MWSuggest or similar hit
+ if ( $suggest && !$wgEnableOpenSearchSuggest )
+ $srchres = array();
+ else {
+ // Open search results may be stored for a very long
+ // time
+ $this->getMain()->setCacheMaxAge( $wgSearchSuggestCacheExpiry );
+ $this->getMain()->setCacheMode( 'public' );
+ $srchres = PrefixSearch::titleSearch( $search, $limit,
+ $namespaces );
+ }
// Set top level elements
$result = $this->getResult();
- $result->addValue(null, 0, $search);
- $result->addValue(null, 1, $srchres);
+ $result->addValue( null, 0, $search );
+ $result->addValue( null, 1, $srchres );
}
public function getAllowedParams() {
@@ -87,7 +91,7 @@ class ApiOpenSearch extends ApiBase {
'search' => 'Search string',
'limit' => 'Maximum amount of results to return',
'namespace' => 'Namespaces to search',
- 'suggest' => 'Do nothing if $wgEnableMWSuggest is false',
+ 'suggest' => 'Do nothing if $wgEnableOpenSearchSuggest is false',
);
}
@@ -102,6 +106,6 @@ class ApiOpenSearch extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiOpenSearch.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiOpenSearch.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php
index 6b9e90b8..361f1d8b 100644
--- a/includes/api/ApiPageSet.php
+++ b/includes/api/ApiPageSet.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -58,8 +58,8 @@ class ApiPageSet extends ApiQueryBase {
* @param $query ApiQuery
* @param $resolveRedirects bool Whether redirects should be resolved
*/
- public function __construct($query, $resolveRedirects = false) {
- parent :: __construct($query, 'query');
+ public function __construct( $query, $resolveRedirects = false ) {
+ parent :: __construct( $query, 'query' );
$this->mAllPages = array ();
$this->mTitles = array();
@@ -75,10 +75,10 @@ class ApiPageSet extends ApiQueryBase {
$this->mRequestedPageFields = array ();
$this->mResolveRedirects = $resolveRedirects;
- if($resolveRedirects)
+ if ( $resolveRedirects )
$this->mPendingRedirectIDs = array();
- $this->mFakePageId = -1;
+ $this->mFakePageId = - 1;
}
/**
@@ -94,7 +94,7 @@ class ApiPageSet extends ApiQueryBase {
* before execute()
* @param $fieldName string Field name
*/
- public function requestField($fieldName) {
+ public function requestField( $fieldName ) {
$this->mRequestedPageFields[$fieldName] = null;
}
@@ -104,7 +104,7 @@ class ApiPageSet extends ApiQueryBase {
* @param $fieldName string Field name
* @return mixed Field value
*/
- public function getCustomField($fieldName) {
+ public function getCustomField( $fieldName ) {
return $this->mRequestedPageFields[$fieldName];
}
@@ -123,14 +123,14 @@ class ApiPageSet extends ApiQueryBase {
'page_id' => null,
);
- if ($this->mResolveRedirects)
+ if ( $this->mResolveRedirects )
$pageFlds['page_is_redirect'] = null;
// only store non-default fields
- $this->mRequestedPageFields = array_diff_key($this->mRequestedPageFields, $pageFlds);
+ $this->mRequestedPageFields = array_diff_key( $this->mRequestedPageFields, $pageFlds );
- $pageFlds = array_merge($pageFlds, $this->mRequestedPageFields);
- return array_keys($pageFlds);
+ $pageFlds = array_merge( $pageFlds, $this->mRequestedPageFields );
+ return array_keys( $pageFlds );
}
/**
@@ -156,7 +156,7 @@ class ApiPageSet extends ApiQueryBase {
* @return int
*/
public function getTitleCount() {
- return count($this->mTitles);
+ return count( $this->mTitles );
}
/**
@@ -172,7 +172,7 @@ class ApiPageSet extends ApiQueryBase {
* @return int
*/
public function getGoodTitleCount() {
- return count($this->mGoodTitles);
+ return count( $this->mGoodTitles );
}
/**
@@ -249,7 +249,7 @@ class ApiPageSet extends ApiQueryBase {
* @return int
*/
public function getRevisionCount() {
- return count($this->getRevisionIDs());
+ return count( $this->getRevisionIDs() );
}
/**
@@ -261,32 +261,32 @@ class ApiPageSet extends ApiQueryBase {
// Only one of the titles/pageids/revids is allowed at the same time
$dataSource = null;
- if (isset ($params['titles']))
+ if ( isset ( $params['titles'] ) )
$dataSource = 'titles';
- if (isset ($params['pageids'])) {
- if (isset ($dataSource))
- $this->dieUsage("Cannot use 'pageids' at the same time as '$dataSource'", 'multisource');
+ if ( isset ( $params['pageids'] ) ) {
+ if ( isset ( $dataSource ) )
+ $this->dieUsage( "Cannot use 'pageids' at the same time as '$dataSource'", 'multisource' );
$dataSource = 'pageids';
}
- if (isset ($params['revids'])) {
- if (isset ($dataSource))
- $this->dieUsage("Cannot use 'revids' at the same time as '$dataSource'", 'multisource');
+ if ( isset ( $params['revids'] ) ) {
+ if ( isset ( $dataSource ) )
+ $this->dieUsage( "Cannot use 'revids' at the same time as '$dataSource'", 'multisource' );
$dataSource = 'revids';
}
- switch ($dataSource) {
+ switch ( $dataSource ) {
case 'titles' :
- $this->initFromTitles($params['titles']);
+ $this->initFromTitles( $params['titles'] );
break;
case 'pageids' :
- $this->initFromPageIds($params['pageids']);
+ $this->initFromPageIds( $params['pageids'] );
break;
case 'revids' :
- if($this->mResolveRedirects)
- $this->setWarning('Redirect resolution cannot be used together with the revids= parameter. '.
- 'Any redirects the revids= point to have not been resolved.');
+ if ( $this->mResolveRedirects )
+ $this->setWarning( 'Redirect resolution cannot be used together with the revids= parameter. ' .
+ 'Any redirects the revids= point to have not been resolved.' );
$this->mResolveRedirects = false;
- $this->initFromRevIDs($params['revids']);
+ $this->initFromRevIDs( $params['revids'] );
break;
default :
// Do nothing - some queries do not need any of the data sources.
@@ -299,9 +299,9 @@ class ApiPageSet extends ApiQueryBase {
* Populate this PageSet from a list of Titles
* @param $titles array of Title objects
*/
- public function populateFromTitles($titles) {
+ public function populateFromTitles( $titles ) {
$this->profileIn();
- $this->initFromTitles($titles);
+ $this->initFromTitles( $titles );
$this->profileOut();
}
@@ -309,9 +309,9 @@ class ApiPageSet extends ApiQueryBase {
* Populate this PageSet from a list of page IDs
* @param $pageIDs array of page IDs
*/
- public function populateFromPageIDs($pageIDs) {
+ public function populateFromPageIDs( $pageIDs ) {
$this->profileIn();
- $this->initFromPageIds($pageIDs);
+ $this->initFromPageIds( $pageIDs );
$this->profileOut();
}
@@ -320,9 +320,9 @@ class ApiPageSet extends ApiQueryBase {
* @param $db Database object
* @param $queryResult Query result object
*/
- public function populateFromQueryResult($db, $queryResult) {
+ public function populateFromQueryResult( $db, $queryResult ) {
$this->profileIn();
- $this->initFromQueryResult($db, $queryResult);
+ $this->initFromQueryResult( $db, $queryResult );
$this->profileOut();
}
@@ -330,9 +330,9 @@ class ApiPageSet extends ApiQueryBase {
* Populate this PageSet from a list of revision IDs
* @param $revIDs array of revision IDs
*/
- public function populateFromRevisionIDs($revIDs) {
+ public function populateFromRevisionIDs( $revIDs ) {
$this->profileIn();
- $this->initFromRevIDs($revIDs);
+ $this->initFromRevIDs( $revIDs );
$this->profileOut();
}
@@ -340,22 +340,22 @@ class ApiPageSet extends ApiQueryBase {
* Extract all requested fields from the row received from the database
* @param $row Result row
*/
- public function processDbRow($row) {
+ public function processDbRow( $row ) {
// Store Title object in various data structures
- $title = Title :: makeTitle($row->page_namespace, $row->page_title);
+ $title = Title :: makeTitle( $row->page_namespace, $row->page_title );
- $pageId = intval($row->page_id);
+ $pageId = intval( $row->page_id );
$this->mAllPages[$row->page_namespace][$row->page_title] = $pageId;
$this->mTitles[] = $title;
- if ($this->mResolveRedirects && $row->page_is_redirect == '1') {
+ if ( $this->mResolveRedirects && $row->page_is_redirect == '1' ) {
$this->mPendingRedirectIDs[$pageId] = $title;
} else {
$this->mGoodTitles[$pageId] = $title;
}
- foreach ($this->mRequestedPageFields as $fieldName => & $fieldValues)
+ foreach ( $this->mRequestedPageFields as $fieldName => & $fieldValues )
$fieldValues[$pageId] = $row-> $fieldName;
}
@@ -384,24 +384,24 @@ class ApiPageSet extends ApiQueryBase {
*
* @param $titles array of Title objects or strings
*/
- private function initFromTitles($titles) {
+ private function initFromTitles( $titles ) {
// Get validated and normalized title objects
- $linkBatch = $this->processTitlesArray($titles);
- if($linkBatch->isEmpty())
+ $linkBatch = $this->processTitlesArray( $titles );
+ if ( $linkBatch->isEmpty() )
return;
$db = $this->getDB();
- $set = $linkBatch->constructSet('page', $db);
+ $set = $linkBatch->constructSet( 'page', $db );
// Get pageIDs data from the `page` table
$this->profileDBIn();
- $res = $db->select('page', $this->getPageTableFields(), $set,
- __METHOD__);
+ $res = $db->select( 'page', $this->getPageTableFields(), $set,
+ __METHOD__ );
$this->profileDBOut();
// Hack: get the ns:titles stored in array(ns => array(titles)) format
- $this->initFromQueryResult($db, $res, $linkBatch->data, true); // process Titles
+ $this->initFromQueryResult( $db, $res, $linkBatch->data, true ); // process Titles
// Resolve any found redirects
$this->resolvePendingRedirects();
@@ -411,11 +411,11 @@ class ApiPageSet extends ApiQueryBase {
* Does the same as initFromTitles(), but is based on page IDs instead
* @param $pageids array of page IDs
*/
- private function initFromPageIds($pageids) {
- if(!count($pageids))
+ private function initFromPageIds( $pageids ) {
+ if ( !count( $pageids ) )
return;
- $pageids = array_map('intval', $pageids); // paranoia
+ $pageids = array_map( 'intval', $pageids ); // paranoia
$set = array (
'page_id' => $pageids
);
@@ -423,12 +423,12 @@ class ApiPageSet extends ApiQueryBase {
// Get pageIDs data from the `page` table
$this->profileDBIn();
- $res = $db->select('page', $this->getPageTableFields(), $set,
- __METHOD__);
+ $res = $db->select( 'page', $this->getPageTableFields(), $set,
+ __METHOD__ );
$this->profileDBOut();
- $remaining = array_flip($pageids);
- $this->initFromQueryResult($db, $res, $remaining, false); // process PageIDs
+ $remaining = array_flip( $pageids );
+ $this->initFromQueryResult( $db, $res, $remaining, false ); // process PageIDs
// Resolve any found redirects
$this->resolvePendingRedirects();
@@ -445,34 +445,34 @@ class ApiPageSet extends ApiQueryBase {
* If true, treat $remaining as an array of [ns][title]
* If false, treat it as an array of [pageIDs]
*/
- private function initFromQueryResult($db, $res, &$remaining = null, $processTitles = null) {
- if (!is_null($remaining) && is_null($processTitles))
- ApiBase :: dieDebug(__METHOD__, 'Missing $processTitles parameter when $remaining is provided');
+ private function initFromQueryResult( $db, $res, &$remaining = null, $processTitles = null ) {
+ if ( !is_null( $remaining ) && is_null( $processTitles ) )
+ ApiBase :: dieDebug( __METHOD__, 'Missing $processTitles parameter when $remaining is provided' );
- while ($row = $db->fetchObject($res)) {
+ while ( $row = $db->fetchObject( $res ) ) {
- $pageId = intval($row->page_id);
+ $pageId = intval( $row->page_id );
// Remove found page from the list of remaining items
- if (isset($remaining)) {
- if ($processTitles)
- unset ($remaining[$row->page_namespace][$row->page_title]);
+ if ( isset( $remaining ) ) {
+ if ( $processTitles )
+ unset ( $remaining[$row->page_namespace][$row->page_title] );
else
- unset ($remaining[$pageId]);
+ unset ( $remaining[$pageId] );
}
// Store any extra fields requested by modules
- $this->processDbRow($row);
+ $this->processDbRow( $row );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if(isset($remaining)) {
+ if ( isset( $remaining ) ) {
// Any items left in the $remaining list are added as missing
- if($processTitles) {
+ if ( $processTitles ) {
// The remaining titles in $remaining are non-existent pages
- foreach ($remaining as $ns => $dbkeys) {
+ foreach ( $remaining as $ns => $dbkeys ) {
foreach ( $dbkeys as $dbkey => $unused ) {
- $title = Title :: makeTitle($ns, $dbkey);
+ $title = Title :: makeTitle( $ns, $dbkey );
$this->mAllPages[$ns][$dbkey] = $this->mFakePageId;
$this->mMissingTitles[$this->mFakePageId] = $title;
$this->mFakePageId--;
@@ -483,10 +483,10 @@ class ApiPageSet extends ApiQueryBase {
else
{
// The remaining pageids do not exist
- if(!$this->mMissingPageIDs)
- $this->mMissingPageIDs = array_keys($remaining);
+ if ( !$this->mMissingPageIDs )
+ $this->mMissingPageIDs = array_keys( $remaining );
else
- $this->mMissingPageIDs = array_merge($this->mMissingPageIDs, array_keys($remaining));
+ $this->mMissingPageIDs = array_merge( $this->mMissingPageIDs, array_keys( $remaining ) );
}
}
}
@@ -496,37 +496,37 @@ class ApiPageSet extends ApiQueryBase {
* instead
* @param $revids array of revision IDs
*/
- private function initFromRevIDs($revids) {
+ private function initFromRevIDs( $revids ) {
- if(!count($revids))
+ if ( !count( $revids ) )
return;
- $revids = array_map('intval', $revids); // paranoia
+ $revids = array_map( 'intval', $revids ); // paranoia
$db = $this->getDB();
$pageids = array();
- $remaining = array_flip($revids);
+ $remaining = array_flip( $revids );
- $tables = array('revision', 'page');
- $fields = array('rev_id', 'rev_page');
- $where = array('rev_id' => $revids, 'rev_page = page_id');
+ $tables = array( 'revision', 'page' );
+ $fields = array( 'rev_id', 'rev_page' );
+ $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
// Get pageIDs data from the `page` table
$this->profileDBIn();
- $res = $db->select($tables, $fields, $where, __METHOD__);
- while ($row = $db->fetchObject($res)) {
- $revid = intval($row->rev_id);
- $pageid = intval($row->rev_page);
+ $res = $db->select( $tables, $fields, $where, __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
+ $revid = intval( $row->rev_id );
+ $pageid = intval( $row->rev_page );
$this->mGoodRevIDs[$revid] = $pageid;
$pageids[$pageid] = '';
- unset($remaining[$revid]);
+ unset( $remaining[$revid] );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
$this->profileDBOut();
- $this->mMissingRevIDs = array_keys($remaining);
+ $this->mMissingRevIDs = array_keys( $remaining );
// Populate all the page information
- $this->initFromPageIds(array_keys($pageids));
+ $this->initFromPageIds( array_keys( $pageids ) );
}
/**
@@ -536,32 +536,32 @@ class ApiPageSet extends ApiQueryBase {
*/
private function resolvePendingRedirects() {
- if($this->mResolveRedirects) {
+ if ( $this->mResolveRedirects ) {
$db = $this->getDB();
$pageFlds = $this->getPageTableFields();
// Repeat until all redirects have been resolved
// The infinite loop is prevented by keeping all known pages in $this->mAllPages
- while ($this->mPendingRedirectIDs) {
+ while ( $this->mPendingRedirectIDs ) {
// Resolve redirects by querying the pagelinks table, and repeat the process
// Create a new linkBatch object for the next pass
$linkBatch = $this->getRedirectTargets();
- if ($linkBatch->isEmpty())
+ if ( $linkBatch->isEmpty() )
break;
- $set = $linkBatch->constructSet('page', $db);
- if($set === false)
+ $set = $linkBatch->constructSet( 'page', $db );
+ if ( $set === false )
break;
// Get pageIDs data from the `page` table
$this->profileDBIn();
- $res = $db->select('page', $pageFlds, $set, __METHOD__);
+ $res = $db->select( 'page', $pageFlds, $set, __METHOD__ );
$this->profileDBOut();
// Hack: get the ns:titles stored in array(ns => array(titles)) format
- $this->initFromQueryResult($db, $res, $linkBatch->data, true);
+ $this->initFromQueryResult( $db, $res, $linkBatch->data, true );
}
}
}
@@ -578,40 +578,40 @@ class ApiPageSet extends ApiQueryBase {
$db = $this->getDB();
$this->profileDBIn();
- $res = $db->select('redirect', array(
+ $res = $db->select( 'redirect', array(
'rd_from',
'rd_namespace',
'rd_title'
- ), array('rd_from' => array_keys($this->mPendingRedirectIDs)),
+ ), array( 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ),
__METHOD__
);
$this->profileDBOut();
- while($row = $db->fetchObject($res))
+ while ( $row = $db->fetchObject( $res ) )
{
- $rdfrom = intval($row->rd_from);
+ $rdfrom = intval( $row->rd_from );
$from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText();
- $to = Title::makeTitle($row->rd_namespace, $row->rd_title)->getPrefixedText();
- unset($this->mPendingRedirectIDs[$rdfrom]);
- if(!isset($this->mAllPages[$row->rd_namespace][$row->rd_title]))
- $lb->add($row->rd_namespace, $row->rd_title);
+ $to = Title::makeTitle( $row->rd_namespace, $row->rd_title )->getPrefixedText();
+ unset( $this->mPendingRedirectIDs[$rdfrom] );
+ if ( !isset( $this->mAllPages[$row->rd_namespace][$row->rd_title] ) )
+ $lb->add( $row->rd_namespace, $row->rd_title );
$this->mRedirectTitles[$from] = $to;
}
- $db->freeResult($res);
- if($this->mPendingRedirectIDs)
+ $db->freeResult( $res );
+ if ( $this->mPendingRedirectIDs )
{
- # We found pages that aren't in the redirect table
- # Add them
- foreach($this->mPendingRedirectIDs as $id => $title)
+ // We found pages that aren't in the redirect table
+ // Add them
+ foreach ( $this->mPendingRedirectIDs as $id => $title )
{
- $article = new Article($title);
+ $article = new Article( $title );
$rt = $article->insertRedirect();
- if(!$rt)
- # What the hell. Let's just ignore this
+ if ( !$rt )
+ // What the hell. Let's just ignore this
continue;
- $lb->addObj($rt);
+ $lb->addObj( $rt );
$this->mRedirectTitles[$title->getPrefixedText()] = $rt->getPrefixedText();
- unset($this->mPendingRedirectIDs[$id]);
+ unset( $this->mPendingRedirectIDs[$id] );
}
}
return $lb;
@@ -626,32 +626,32 @@ class ApiPageSet extends ApiQueryBase {
* @param $titles array of Title objects or strings
* @return LinkBatch
*/
- private function processTitlesArray($titles) {
+ private function processTitlesArray( $titles ) {
$linkBatch = new LinkBatch();
- foreach ($titles as $title) {
+ foreach ( $titles as $title ) {
- $titleObj = is_string($title) ? Title :: newFromText($title) : $title;
- if (!$titleObj)
+ $titleObj = is_string( $title ) ? Title :: newFromText( $title ) : $title;
+ if ( !$titleObj )
{
- # Handle invalid titles gracefully
+ // Handle invalid titles gracefully
$this->mAllpages[0][$title] = $this->mFakePageId;
$this->mInvalidTitles[$this->mFakePageId] = $title;
$this->mFakePageId--;
continue; // There's nothing else we can do
}
$iw = $titleObj->getInterwiki();
- if (strval($iw) !== '') {
+ if ( strval( $iw ) !== '' ) {
// This title is an interwiki link.
$this->mInterwikiTitles[$titleObj->getPrefixedText()] = $iw;
} else {
// Validation
- if ($titleObj->getNamespace() < 0)
- $this->setWarning("No support for special pages has been implemented");
+ if ( $titleObj->getNamespace() < 0 )
+ $this->setWarning( "No support for special pages has been implemented" );
else
- $linkBatch->addObj($titleObj);
+ $linkBatch->addObj( $titleObj );
}
// Make sure we remember the original title that was
@@ -659,7 +659,7 @@ class ApiPageSet extends ApiQueryBase {
// titles with the originally requested when e.g. the
// namespace is localized or the capitalization is
// different
- if (is_string($title) && $title !== $titleObj->getPrefixedText()) {
+ if ( is_string( $title ) && $title !== $titleObj->getPrefixedText() ) {
$this->mNormalizedTitles[$title] = $titleObj->getPrefixedText();
}
}
@@ -691,7 +691,14 @@ class ApiPageSet extends ApiQueryBase {
);
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'multisource', 'info' => "Cannot use 'pageids' at the same time as 'dataSource'" ),
+ array( 'code' => 'multisource', 'info' => "Cannot use 'revids' at the same time as 'dataSource'" ),
+ ) );
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPageSet.php 47424 2009-02-18 05:29:11Z werdna $';
+ return __CLASS__ . ': $Id: ApiPageSet.php 62410 2010-02-13 01:21:52Z reedy $';
}
}
diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php
index d710c206..8fe2cad2 100644
--- a/includes/api/ApiParamInfo.php
+++ b/includes/api/ApiParamInfo.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -33,123 +33,149 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiParamInfo extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
// Get parameters
$params = $this->extractRequestParams();
$result = $this->getResult();
- $queryObj = new ApiQuery($this->getMain(), 'query');
+ $queryObj = new ApiQuery( $this->getMain(), 'query' );
$r = array();
- if(is_array($params['modules']))
+ if ( is_array( $params['modules'] ) )
{
$modArr = $this->getMain()->getModules();
- foreach($params['modules'] as $m)
+ $r['modules'] = array();
+ foreach ( $params['modules'] as $m )
{
- if(!isset($modArr[$m]))
+ if ( !isset( $modArr[$m] ) )
{
- $r['modules'][] = array('name' => $m, 'missing' => '');
+ $r['modules'][] = array( 'name' => $m, 'missing' => '' );
continue;
}
- $obj = new $modArr[$m]($this->getMain(), $m);
- $a = $this->getClassInfo($obj);
+ $obj = new $modArr[$m]( $this->getMain(), $m );
+ $a = $this->getClassInfo( $obj );
$a['name'] = $m;
$r['modules'][] = $a;
}
- $result->setIndexedTagName($r['modules'], 'module');
+ $result->setIndexedTagName( $r['modules'], 'module' );
}
- if(is_array($params['querymodules']))
+ if ( is_array( $params['querymodules'] ) )
{
$qmodArr = $queryObj->getModules();
- foreach($params['querymodules'] as $qm)
+ $r['querymodules'] = array();
+ foreach ( $params['querymodules'] as $qm )
{
- if(!isset($qmodArr[$qm]))
+ if ( !isset( $qmodArr[$qm] ) )
{
- $r['querymodules'][] = array('name' => $qm, 'missing' => '');
+ $r['querymodules'][] = array( 'name' => $qm, 'missing' => '' );
continue;
}
- $obj = new $qmodArr[$qm]($this, $qm);
- $a = $this->getClassInfo($obj);
+ $obj = new $qmodArr[$qm]( $this, $qm );
+ $a = $this->getClassInfo( $obj );
$a['name'] = $qm;
$r['querymodules'][] = $a;
}
- $result->setIndexedTagName($r['querymodules'], 'module');
+ $result->setIndexedTagName( $r['querymodules'], 'module' );
}
- if($params['mainmodule'])
- $r['mainmodule'] = $this->getClassInfo($this->getMain());
- if($params['pagesetmodule'])
+ if ( $params['mainmodule'] )
+ $r['mainmodule'] = $this->getClassInfo( $this->getMain() );
+ if ( $params['pagesetmodule'] )
{
- $pageSet = new ApiPageSet($queryObj);
- $r['pagesetmodule'] = $this->getClassInfo($pageSet);
+ $pageSet = new ApiPageSet( $queryObj );
+ $r['pagesetmodule'] = $this->getClassInfo( $pageSet );
}
- $result->addValue(null, $this->getModuleName(), $r);
+ $result->addValue( null, $this->getModuleName(), $r );
}
- function getClassInfo($obj)
+ function getClassInfo( $obj )
{
$result = $this->getResult();
- $retval['classname'] = get_class($obj);
- $retval['description'] = (is_array($obj->getDescription()) ? implode("\n", $obj->getDescription()) : $obj->getDescription());
+ $retval['classname'] = get_class( $obj );
+ $retval['description'] = implode( "\n", (array)$obj->getDescription() );
+ $retval['version'] = implode( "\n", (array)$obj->getVersion() );
$retval['prefix'] = $obj->getModulePrefix();
- if($obj->isReadMode())
+
+ if ( $obj->isReadMode() )
$retval['readrights'] = '';
- if($obj->isWriteMode())
+ if ( $obj->isWriteMode() )
$retval['writerights'] = '';
- if($obj->mustBePosted())
+ if ( $obj->mustBePosted() )
$retval['mustbeposted'] = '';
+ if ( $obj instanceof ApiQueryGeneratorBase )
+ $retval['generator'] = '';
+
$allowedParams = $obj->getFinalParams();
- if(!is_array($allowedParams))
+ if ( !is_array( $allowedParams ) )
return $retval;
+
$retval['parameters'] = array();
$paramDesc = $obj->getFinalParamDescription();
- foreach($allowedParams as $n => $p)
+ foreach ( $allowedParams as $n => $p )
{
- $a = array('name' => $n);
- if(!is_array($p))
+ $a = array( 'name' => $n );
+ if ( isset( $paramDesc[$n] ) )
+ $a['description'] = implode( "\n", (array)$paramDesc[$n] );
+ if ( isset( $p[ApiBase::PARAM_DEPRECATED] ) && $p[ApiBase::PARAM_DEPRECATED] )
+ $a['deprecated'] = '';
+ if ( !is_array( $p ) )
{
- if(is_bool($p))
+ if ( is_bool( $p ) )
{
$a['type'] = 'bool';
- $a['default'] = ($p ? 'true' : 'false');
+ $a['default'] = ( $p ? 'true' : 'false' );
+ }
+ else if ( is_string( $p ) || is_null( $p ) )
+ {
+ $a['type'] = 'string';
+ $a['default'] = strval( $p );
+ }
+ else if ( is_int( $p ) )
+ {
+ $a['type'] = 'integer';
+ $a['default'] = intval( $p );
}
- if(is_string($p))
- $a['default'] = $p;
$retval['parameters'][] = $a;
continue;
}
- if(isset($p[ApiBase::PARAM_DFLT]))
+ if ( isset( $p[ApiBase::PARAM_DFLT] ) )
$a['default'] = $p[ApiBase::PARAM_DFLT];
- if(isset($p[ApiBase::PARAM_ISMULTI]))
- if($p[ApiBase::PARAM_ISMULTI])
+ if ( isset( $p[ApiBase::PARAM_ISMULTI] ) )
+ if ( $p[ApiBase::PARAM_ISMULTI] )
{
$a['multi'] = '';
$a['limit'] = $this->getMain()->canApiHighLimits() ?
ApiBase::LIMIT_SML2 :
ApiBase::LIMIT_SML1;
}
- if(isset($p[ApiBase::PARAM_ALLOW_DUPLICATES]))
- if($p[ApiBase::PARAM_ALLOW_DUPLICATES])
+
+ if ( isset( $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) )
+ if ( $p[ApiBase::PARAM_ALLOW_DUPLICATES] )
$a['allowsduplicates'] = '';
- if(isset($p[ApiBase::PARAM_TYPE]))
+
+ if ( isset( $p[ApiBase::PARAM_TYPE] ) )
{
$a['type'] = $p[ApiBase::PARAM_TYPE];
- if(is_array($a['type']))
- $result->setIndexedTagName($a['type'], 't');
+ if ( is_array( $a['type'] ) )
+ $result->setIndexedTagName( $a['type'], 't' );
}
- if(isset($p[ApiBase::PARAM_MAX]))
+ if ( isset( $p[ApiBase::PARAM_MAX] ) )
$a['max'] = $p[ApiBase::PARAM_MAX];
- if(isset($p[ApiBase::PARAM_MAX2]))
+ if ( isset( $p[ApiBase::PARAM_MAX2] ) )
$a['highmax'] = $p[ApiBase::PARAM_MAX2];
- if(isset($p[ApiBase::PARAM_MIN]))
+ if ( isset( $p[ApiBase::PARAM_MIN] ) )
$a['min'] = $p[ApiBase::PARAM_MIN];
- if(isset($paramDesc[$n]))
- $a['description'] = (is_array($paramDesc[$n]) ? implode("\n", $paramDesc[$n]) : $paramDesc[$n]);
$retval['parameters'][] = $a;
}
- $result->setIndexedTagName($retval['parameters'], 'param');
+ $result->setIndexedTagName( $retval['parameters'], 'param' );
+
+ // Errors
+ $retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
+
+ $result->setIndexedTagName( $retval['errors'], 'error' );
+
return $retval;
}
@@ -190,6 +216,6 @@ class ApiParamInfo extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiParamInfo.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiParamInfo.php 62336 2010-02-11 22:22:20Z reedy $';
}
}
diff --git a/includes/api/ApiParse.php b/includes/api/ApiParse.php
index c8cd07fe..db389bdb 100644
--- a/includes/api/ApiParse.php
+++ b/includes/api/ApiParse.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiParse extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
@@ -47,119 +47,140 @@ class ApiParse extends ApiBase {
$title = $params['title'];
$page = $params['page'];
$oldid = $params['oldid'];
- if(!is_null($page) && (!is_null($text) || $title != "API"))
- $this->dieUsage("The page parameter cannot be used together with the text and title parameters", 'params');
- $prop = array_flip($params['prop']);
+ if ( !is_null( $page ) && ( !is_null( $text ) || $title != "API" ) )
+ $this->dieUsage( "The page parameter cannot be used together with the text and title parameters", 'params' );
+ $prop = array_flip( $params['prop'] );
$revid = false;
// The parser needs $wgTitle to be set, apparently the
// $title parameter in Parser::parse isn't enough *sigh*
- global $wgParser, $wgUser, $wgTitle;
+ global $wgParser, $wgUser, $wgTitle, $wgEnableParserCache;
$popts = new ParserOptions();
- $popts->setTidy(true);
+ $popts->setTidy( true );
$popts->enableLimitReport();
$redirValues = null;
- if(!is_null($oldid) || !is_null($page))
+ if ( !is_null( $oldid ) || !is_null( $page ) )
{
- if(!is_null($oldid))
+ if ( !is_null( $oldid ) )
{
- # Don't use the parser cache
- $rev = Revision::newFromID($oldid);
- if(!$rev)
- $this->dieUsage("There is no revision ID $oldid", 'missingrev');
- if(!$rev->userCan(Revision::DELETED_TEXT))
- $this->dieUsage("You don't have permission to view deleted revisions", 'permissiondenied');
+ // Don't use the parser cache
+ $rev = Revision::newFromID( $oldid );
+ if ( !$rev )
+ $this->dieUsage( "There is no revision ID $oldid", 'missingrev' );
+ if ( !$rev->userCan( Revision::DELETED_TEXT ) )
+ $this->dieUsage( "You don't have permission to view deleted revisions", 'permissiondenied' );
+
$text = $rev->getText( Revision::FOR_THIS_USER );
$titleObj = $rev->getTitle();
$wgTitle = $titleObj;
- $p_result = $wgParser->parse($text, $titleObj, $popts);
+ $p_result = $wgParser->parse( $text, $titleObj, $popts );
}
else
{
- if($params['redirects'])
+ if ( $params['redirects'] )
{
- $req = new FauxRequest(array(
+ $req = new FauxRequest( array(
'action' => 'query',
'redirects' => '',
'titles' => $page
- ));
- $main = new ApiMain($req);
+ ) );
+ $main = new ApiMain( $req );
$main->execute();
$data = $main->getResultData();
$redirValues = @$data['query']['redirects'];
$to = $page;
- foreach((array)$redirValues as $r)
+ foreach ( (array)$redirValues as $r )
$to = $r['to'];
}
else
- $to = $page;
- $titleObj = Title::newFromText($to);
- if(!$titleObj)
- $this->dieUsage("The page you specified doesn't exist", 'missingtitle');
+ $to = $page;
+ $titleObj = Title::newFromText( $to );
+ if ( !$titleObj )
+ $this->dieUsage( "The page you specified doesn't exist", 'missingtitle' );
- $articleObj = new Article($titleObj);
- if(isset($prop['revid']))
+ $articleObj = new Article( $titleObj );
+ if ( isset( $prop['revid'] ) )
$oldid = $articleObj->getRevIdFetched();
// Try the parser cache first
+ $p_result = false;
$pcache = ParserCache::singleton();
- $p_result = $pcache->get($articleObj, $wgUser);
- if(!$p_result)
+ if ( $wgEnableParserCache )
+ $p_result = $pcache->get( $articleObj, $wgUser );
+ if ( !$p_result )
{
- $p_result = $wgParser->parse($articleObj->getContent(), $titleObj, $popts);
- global $wgUseParserCache;
- if($wgUseParserCache)
- $pcache->save($p_result, $articleObj, $popts);
+ $p_result = $wgParser->parse( $articleObj->getContent(), $titleObj, $popts );
+
+ if ( $wgEnableParserCache )
+ $pcache->save( $p_result, $articleObj, $popts );
}
}
}
else
{
- $titleObj = Title::newFromText($title);
- if(!$titleObj)
- $titleObj = Title::newFromText("API");
+ $titleObj = Title::newFromText( $title );
+ if ( !$titleObj )
+ $titleObj = Title::newFromText( "API" );
$wgTitle = $titleObj;
- if($params['pst'] || $params['onlypst'])
- $text = $wgParser->preSaveTransform($text, $titleObj, $wgUser, $popts);
- if($params['onlypst'])
+ if ( $params['pst'] || $params['onlypst'] )
+ $text = $wgParser->preSaveTransform( $text, $titleObj, $wgUser, $popts );
+ if ( $params['onlypst'] )
{
// Build a result and bail out
$result_array['text'] = array();
- $this->getResult()->setContent($result_array['text'], $text);
- $this->getResult()->addValue(null, $this->getModuleName(), $result_array);
+ $this->getResult()->setContent( $result_array['text'], $text );
+ $this->getResult()->addValue( null, $this->getModuleName(), $result_array );
return;
}
- $p_result = $wgParser->parse($text, $titleObj, $popts);
+ $p_result = $wgParser->parse( $text, $titleObj, $popts );
}
// Return result
$result = $this->getResult();
$result_array = array();
- if($params['redirects'] && !is_null($redirValues))
+ if ( $params['redirects'] && !is_null( $redirValues ) )
$result_array['redirects'] = $redirValues;
- if(isset($prop['text'])) {
+
+ if ( isset( $prop['text'] ) ) {
$result_array['text'] = array();
- $result->setContent($result_array['text'], $p_result->getText());
+ $result->setContent( $result_array['text'], $p_result->getText() );
+ }
+
+ if ( !is_null( $params['summary'] ) ) {
+ $result_array['parsedsummary'] = array();
+ $result->setContent( $result_array['parsedsummary'], $wgUser->getSkin()->formatComment( $params['summary'], $titleObj ) );
}
- if(isset($prop['langlinks']))
- $result_array['langlinks'] = $this->formatLangLinks($p_result->getLanguageLinks());
- if(isset($prop['categories']))
- $result_array['categories'] = $this->formatCategoryLinks($p_result->getCategories());
- if(isset($prop['links']))
- $result_array['links'] = $this->formatLinks($p_result->getLinks());
- if(isset($prop['templates']))
- $result_array['templates'] = $this->formatLinks($p_result->getTemplates());
- if(isset($prop['images']))
- $result_array['images'] = array_keys($p_result->getImages());
- if(isset($prop['externallinks']))
- $result_array['externallinks'] = array_keys($p_result->getExternalLinks());
- if(isset($prop['sections']))
+
+ if ( isset( $prop['langlinks'] ) )
+ $result_array['langlinks'] = $this->formatLangLinks( $p_result->getLanguageLinks() );
+ if ( isset( $prop['categories'] ) )
+ $result_array['categories'] = $this->formatCategoryLinks( $p_result->getCategories() );
+ if ( isset( $prop['links'] ) )
+ $result_array['links'] = $this->formatLinks( $p_result->getLinks() );
+ if ( isset( $prop['templates'] ) )
+ $result_array['templates'] = $this->formatLinks( $p_result->getTemplates() );
+ if ( isset( $prop['images'] ) )
+ $result_array['images'] = array_keys( $p_result->getImages() );
+ if ( isset( $prop['externallinks'] ) )
+ $result_array['externallinks'] = array_keys( $p_result->getExternalLinks() );
+ if ( isset( $prop['sections'] ) )
$result_array['sections'] = $p_result->getSections();
- if(isset($prop['displaytitle']))
+ if ( isset( $prop['displaytitle'] ) )
$result_array['displaytitle'] = $p_result->getDisplayTitle() ?
$p_result->getDisplayTitle() :
$titleObj->getPrefixedText();
- if(!is_null($oldid))
- $result_array['revid'] = intval($oldid);
+
+ if ( isset( $prop['headitems'] ) )
+ $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
+
+ if ( isset( $prop['headhtml'] ) ) {
+ $out = new OutputPage;
+ $out->addParserOutputNoText( $p_result );
+ $result_array['headhtml'] = array();
+ $result->setContent( $result_array['headhtml'], $out->headElement( $wgUser->getSkin() ) );
+ }
+
+ if ( !is_null( $oldid ) )
+ $result_array['revid'] = intval( $oldid );
$result_mapping = array(
'redirects' => 'r',
@@ -170,6 +191,7 @@ class ApiParse extends ApiBase {
'images' => 'img',
'externallinks' => 'el',
'sections' => 's',
+ 'headitems' => 'hi'
);
$this->setIndexedTagNames( $result_array, $result_mapping );
$result->addValue( null, $this->getModuleName(), $result_array );
@@ -177,9 +199,9 @@ class ApiParse extends ApiBase {
private function formatLangLinks( $links ) {
$result = array();
- foreach( $links as $link ) {
+ foreach ( $links as $link ) {
$entry = array();
- $bits = split( ':', $link, 2 );
+ $bits = explode( ':', $link, 2 );
$entry['lang'] = $bits[0];
$this->getResult()->setContent( $entry, $bits[1] );
$result[] = $entry;
@@ -189,7 +211,7 @@ class ApiParse extends ApiBase {
private function formatCategoryLinks( $links ) {
$result = array();
- foreach( $links as $link => $sortkey ) {
+ foreach ( $links as $link => $sortkey ) {
$entry = array();
$entry['sortkey'] = $sortkey;
$this->getResult()->setContent( $entry, $link );
@@ -200,12 +222,12 @@ class ApiParse extends ApiBase {
private function formatLinks( $links ) {
$result = array();
- foreach( $links as $ns => $nslinks ) {
- foreach( $nslinks as $title => $id ) {
+ foreach ( $links as $ns => $nslinks ) {
+ foreach ( $nslinks as $title => $id ) {
$entry = array();
$entry['ns'] = $ns;
$this->getResult()->setContent( $entry, Title::makeTitle( $ns, $title )->getFullText() );
- if( $id != 0 )
+ if ( $id != 0 )
$entry['exists'] = '';
$result[] = $entry;
}
@@ -213,9 +235,20 @@ class ApiParse extends ApiBase {
return $result;
}
+ private function formatHeadItems( $headItems ) {
+ $result = array();
+ foreach ( $headItems as $tag => $content ) {
+ $entry = array();
+ $entry['tag'] = $tag;
+ $this->getResult()->setContent( $entry, $content );
+ $result[] = $entry;
+ }
+ return $result;
+ }
+
private function setIndexedTagNames( &$array, $mapping ) {
- foreach( $mapping as $key => $name ) {
- if( isset( $array[$key] ) )
+ foreach ( $mapping as $key => $name ) {
+ if ( isset( $array[$key] ) )
$this->getResult()->setIndexedTagName( $array[$key], $name );
}
}
@@ -226,6 +259,7 @@ class ApiParse extends ApiBase {
ApiBase :: PARAM_DFLT => 'API',
),
'text' => null,
+ 'summary' => null,
'page' => null,
'redirects' => false,
'oldid' => null,
@@ -243,6 +277,8 @@ class ApiParse extends ApiBase {
'sections',
'revid',
'displaytitle',
+ 'headitems',
+ 'headhtml'
)
),
'pst' => false,
@@ -253,17 +289,18 @@ class ApiParse extends ApiBase {
public function getParamDescription() {
return array (
'text' => 'Wikitext to parse',
+ 'summary' => 'Summary to parse',
'redirects' => 'If the page parameter is set to a redirect, resolve it',
'title' => 'Title of page the text belongs to',
'page' => 'Parse the content of this page. Cannot be used together with text and title',
'oldid' => 'Parse the content of this revision. Overrides page',
- 'prop' => array('Which pieces of information to get.',
+ 'prop' => array( 'Which pieces of information to get.',
'NOTE: Section tree is only generated if there are more than 4 sections, or if the __TOC__ keyword is present'
),
'pst' => array( 'Do a pre-save transform on the input before parsing it.',
'Ignored if page or oldid is used.'
),
- 'onlypst' => array('Do a PST on the input, but don\'t parse it.',
+ 'onlypst' => array( 'Do a PST on the input, but don\'t parse it.',
'Returns PSTed wikitext. Ignored if page or oldid is used.'
),
);
@@ -272,6 +309,15 @@ class ApiParse extends ApiBase {
public function getDescription() {
return 'This module parses wikitext and returns parser output';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'params', 'info' => 'The page parameter cannot be used together with the text and title parameters' ),
+ array( 'code' => 'missingrev', 'info' => 'There is no revision ID oldid' ),
+ array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revisions' ),
+ array( 'code' => 'missingtitle', 'info' => 'The page you specified doesn\'t exist' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -280,6 +326,6 @@ class ApiParse extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiParse.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiParse.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiPatrol.php b/includes/api/ApiPatrol.php
index a6f25af2..3b2b2046 100644
--- a/includes/api/ApiPatrol.php
+++ b/includes/api/ApiPatrol.php
@@ -23,8 +23,8 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
- require_once ('ApiBase.php');
+if ( !defined( 'MEDIAWIKI' ) ) {
+ require_once ( 'ApiBase.php' );
}
/**
@@ -33,35 +33,30 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiPatrol extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
/**
* Patrols the article or provides the reason the patrol failed.
*/
public function execute() {
- global $wgUser, $wgUseRCPatrol, $wgUseNPPatrol;
$params = $this->extractRequestParams();
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!isset($params['rcid']))
- $this->dieUsageMsg(array('missingparam', 'rcid'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
+ if ( !isset( $params['rcid'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'rcid' ) );
- $rc = RecentChange::newFromID($params['rcid']);
- if(!$rc instanceof RecentChange)
- $this->dieUsageMsg(array('nosuchrcid', $params['rcid']));
- $retval = RecentChange::markPatrolled($params['rcid']);
+ $rc = RecentChange::newFromID( $params['rcid'] );
+ if ( !$rc instanceof RecentChange )
+ $this->dieUsageMsg( array( 'nosuchrcid', $params['rcid'] ) );
+ $retval = RecentChange::markPatrolled( $params['rcid'] );
- if($retval)
- $this->dieUsageMsg(reset($retval));
+ if ( $retval )
+ $this->dieUsageMsg( reset( $retval ) );
- $result = array('rcid' => intval($rc->getAttribute('rc_id')));
- ApiQueryBase::addTitleInfo($result, $rc->getTitle());
- $this->getResult()->addValue(null, $this->getModuleName(), $result);
+ $result = array( 'rcid' => intval( $rc->getAttribute( 'rc_id' ) ) );
+ ApiQueryBase::addTitleInfo( $result, $rc->getTitle() );
+ $this->getResult()->addValue( null, $this->getModuleName(), $result );
}
public function isWriteMode() {
@@ -89,6 +84,17 @@ class ApiPatrol extends ApiBase {
'Patrol a page or revision. '
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'rcid' ),
+ array( 'nosuchrcid', 'rcid' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array(
@@ -97,6 +103,6 @@ class ApiPatrol extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPatrol.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiPatrol.php 69578 2010-07-20 02:46:20Z tstarling $';
}
-}
+} \ No newline at end of file
diff --git a/includes/api/ApiProtect.php b/includes/api/ApiProtect.php
index aad37066..ca47c1b8 100644
--- a/includes/api/ApiProtect.php
+++ b/includes/api/ApiProtect.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -32,99 +32,100 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiProtect extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
global $wgUser, $wgRestrictionTypes, $wgRestrictionLevels;
$params = $this->extractRequestParams();
- $titleObj = NULL;
- if(!isset($params['title']))
- $this->dieUsageMsg(array('missingparam', 'title'));
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(empty($params['protections']))
- $this->dieUsageMsg(array('missingparam', 'protections'));
+ $titleObj = null;
+ if ( !isset( $params['title'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'title' ) );
+ if ( empty( $params['protections'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'protections' ) );
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
- $titleObj = Title::newFromText($params['title']);
- if(!$titleObj)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
-
- $errors = $titleObj->getUserPermissionsErrors('protect', $wgUser);
- if($errors)
+ $errors = $titleObj->getUserPermissionsErrors( 'protect', $wgUser );
+ if ( $errors )
// We don't care about multiple errors, just report one of them
- $this->dieUsageMsg(reset($errors));
+ $this->dieUsageMsg( reset( $errors ) );
$expiry = (array)$params['expiry'];
- if(count($expiry) != count($params['protections']))
+ if ( count( $expiry ) != count( $params['protections'] ) )
{
- if(count($expiry) == 1)
- $expiry = array_fill(0, count($params['protections']), $expiry[0]);
+ if ( count( $expiry ) == 1 )
+ $expiry = array_fill( 0, count( $params['protections'] ), $expiry[0] );
else
- $this->dieUsageMsg(array('toofewexpiries', count($expiry), count($params['protections'])));
+ $this->dieUsageMsg( array( 'toofewexpiries', count( $expiry ), count( $params['protections'] ) ) );
}
+
+ $restrictionTypes = $titleObj->getRestrictionTypes();
$protections = array();
$expiryarray = array();
$resultProtections = array();
- foreach($params['protections'] as $i => $prot)
+ foreach ( $params['protections'] as $i => $prot )
{
- $p = explode('=', $prot);
- $protections[$p[0]] = ($p[1] == 'all' ? '' : $p[1]);
- if($titleObj->exists() && $p[0] == 'create')
- $this->dieUsageMsg(array('create-titleexists'));
- if(!$titleObj->exists() && $p[0] != 'create')
- $this->dieUsageMsg(array('missingtitles-createonly'));
- if(!in_array($p[0], $wgRestrictionTypes) && $p[0] != 'create')
- $this->dieUsageMsg(array('protect-invalidaction', $p[0]));
- if(!in_array($p[1], $wgRestrictionLevels) && $p[1] != 'all')
- $this->dieUsageMsg(array('protect-invalidlevel', $p[1]));
-
- if(in_array($expiry[$i], array('infinite', 'indefinite', 'never')))
+ $p = explode( '=', $prot );
+ $protections[$p[0]] = ( $p[1] == 'all' ? '' : $p[1] );
+
+ if ( $titleObj->exists() && $p[0] == 'create' )
+ $this->dieUsageMsg( array( 'create-titleexists' ) );
+ if ( !$titleObj->exists() && $p[0] != 'create' )
+ $this->dieUsageMsg( array( 'missingtitle-createonly' ) );
+
+ if ( !in_array( $p[0], $restrictionTypes ) && $p[0] != 'create' )
+ $this->dieUsageMsg( array( 'protect-invalidaction', $p[0] ) );
+ if ( !in_array( $p[1], $wgRestrictionLevels ) && $p[1] != 'all' )
+ $this->dieUsageMsg( array( 'protect-invalidlevel', $p[1] ) );
+
+ if ( in_array( $expiry[$i], array( 'infinite', 'indefinite', 'never' ) ) )
$expiryarray[$p[0]] = Block::infinity();
else
{
- $exp = strtotime($expiry[$i]);
- if($exp < 0 || $exp == false)
- $this->dieUsageMsg(array('invalidexpiry', $expiry[$i]));
+ $exp = strtotime( $expiry[$i] );
+ if ( $exp < 0 || $exp == false )
+ $this->dieUsageMsg( array( 'invalidexpiry', $expiry[$i] ) );
- $exp = wfTimestamp(TS_MW, $exp);
- if($exp < wfTimestampNow())
- $this->dieUsageMsg(array('pastexpiry', $expiry[$i]));
+ $exp = wfTimestamp( TS_MW, $exp );
+ if ( $exp < wfTimestampNow() )
+ $this->dieUsageMsg( array( 'pastexpiry', $expiry[$i] ) );
$expiryarray[$p[0]] = $exp;
}
- $resultProtections[] = array($p[0] => $protections[$p[0]],
- 'expiry' => ($expiryarray[$p[0]] == Block::infinity() ?
+ $resultProtections[] = array( $p[0] => $protections[$p[0]],
+ 'expiry' => ( $expiryarray[$p[0]] == Block::infinity() ?
'infinite' :
- wfTimestamp(TS_ISO_8601, $expiryarray[$p[0]])));
+ wfTimestamp( TS_ISO_8601, $expiryarray[$p[0]] ) ) );
}
$cascade = $params['cascade'];
- $articleObj = new Article($titleObj);
- if($params['watch'])
+ $articleObj = new Article( $titleObj );
+ if ( $params['watch'] )
$articleObj->doWatch();
- if($titleObj->exists())
- $ok = $articleObj->updateRestrictions($protections, $params['reason'], $cascade, $expiryarray);
+ if ( $titleObj->exists() )
+ $ok = $articleObj->updateRestrictions( $protections, $params['reason'], $cascade, $expiryarray );
else
- $ok = $titleObj->updateTitleProtection($protections['create'], $params['reason'], $expiryarray['create']);
- if(!$ok)
+ $ok = $titleObj->updateTitleProtection( $protections['create'], $params['reason'], $expiryarray['create'] );
+ if ( !$ok )
// This is very weird. Maybe the article was deleted or the user was blocked/desysopped in the meantime?
// Just throw an unknown error in this case, as it's very likely to be a race condition
- $this->dieUsageMsg(array());
- $res = array('title' => $titleObj->getPrefixedText(), 'reason' => $params['reason']);
- if($cascade)
+ $this->dieUsageMsg( array() );
+ $res = array( 'title' => $titleObj->getPrefixedText(), 'reason' => $params['reason'] );
+ if ( $cascade )
$res['cascade'] = '';
$res['protections'] = $resultProtections;
- $this->getResult()->setIndexedTagName($res['protections'], 'protection');
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ $this->getResult()->setIndexedTagName( $res['protections'], 'protection' );
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -153,11 +154,11 @@ class ApiProtect extends ApiBase {
'title' => 'Title of the page you want to (un)protect.',
'token' => 'A protect token previously retrieved through prop=info',
'protections' => 'Pipe-separated list of protection levels, formatted action=group (e.g. edit=sysop)',
- 'expiry' => array('Expiry timestamps. If only one timestamp is set, it\'ll be used for all protections.',
- 'Use \'infinite\', \'indefinite\' or \'never\', for a neverexpiring protection.'),
+ 'expiry' => array( 'Expiry timestamps. If only one timestamp is set, it\'ll be used for all protections.',
+ 'Use \'infinite\', \'indefinite\' or \'never\', for a neverexpiring protection.' ),
'reason' => 'Reason for (un)protecting (optional)',
- 'cascade' => array('Enable cascading protection (i.e. protect pages included in this page)',
- 'Ignored if not all protection levels are \'sysop\' or \'protect\''),
+ 'cascade' => array( 'Enable cascading protection (i.e. protect pages included in this page)',
+ 'Ignored if not all protection levels are \'sysop\' or \'protect\'' ),
'watch' => 'If set, add the page being (un)protected to your watchlist',
);
}
@@ -167,6 +168,25 @@ class ApiProtect extends ApiBase {
'Change the protection level of a page.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'title' ),
+ array( 'missingparam', 'protections' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'toofewexpiries', 'noofexpiries', 'noofprotections' ),
+ array( 'create-titleexists' ),
+ array( 'missingtitle-createonly' ),
+ array( 'protect-invalidaction', 'action' ),
+ array( 'protect-invalidlevel', 'level' ),
+ array( 'invalidexpiry', 'expiry' ),
+ array( 'pastexpiry', 'expiry' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return null;
+ }
protected function getExamples() {
return array (
@@ -176,6 +196,6 @@ class ApiProtect extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiProtect.php 48122 2009-03-07 12:58:41Z catrope $';
+ return __CLASS__ . ': $Id: ApiProtect.php 62557 2010-02-15 23:53:43Z reedy $';
}
}
diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php
index d1e6824d..76d45404 100644
--- a/includes/api/ApiPurge.php
+++ b/includes/api/ApiPurge.php
@@ -23,8 +23,8 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
- require_once ('ApiBase.php');
+if ( !defined( 'MEDIAWIKI' ) ) {
+ require_once ( 'ApiBase.php' );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiPurge extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
/**
@@ -43,35 +43,35 @@ class ApiPurge extends ApiBase {
public function execute() {
global $wgUser;
$params = $this->extractRequestParams();
- if(!$wgUser->isAllowed('purge'))
- $this->dieUsageMsg(array('cantpurge'));
- if(!isset($params['titles']))
- $this->dieUsageMsg(array('missingparam', 'titles'));
+ if ( !$wgUser->isAllowed( 'purge' ) )
+ $this->dieUsageMsg( array( 'cantpurge' ) );
+ if ( !isset( $params['titles'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'titles' ) );
$result = array();
- foreach($params['titles'] as $t) {
+ foreach ( $params['titles'] as $t ) {
$r = array();
- $title = Title::newFromText($t);
- if(!$title instanceof Title)
+ $title = Title::newFromText( $t );
+ if ( !$title instanceof Title )
{
$r['title'] = $t;
$r['invalid'] = '';
$result[] = $r;
continue;
}
- ApiQueryBase::addTitleInfo($r, $title);
- if(!$title->exists())
+ ApiQueryBase::addTitleInfo( $r, $title );
+ if ( !$title->exists() )
{
$r['missing'] = '';
$result[] = $r;
continue;
}
- $article = new Article($title);
+ $article = Mediawiki::articleFromTitle( $title );
$article->doPurge(); // Directly purge and skip the UI part of purge().
$r['purged'] = '';
$result[] = $r;
}
- $this->getResult()->setIndexedTagName($result, 'page');
- $this->getResult()->addValue(null, $this->getModuleName(), $result);
+ $this->getResult()->setIndexedTagName( $result, 'page' );
+ $this->getResult()->addValue( null, $this->getModuleName(), $result );
}
public function mustBePosted() {
@@ -102,6 +102,13 @@ class ApiPurge extends ApiBase {
'Purge the cache for the given titles.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'cantpurge' ),
+ array( 'missingparam', 'titles' ),
+ ) );
+ }
protected function getExamples() {
return array(
@@ -110,6 +117,6 @@ class ApiPurge extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPurge.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiPurge.php 69578 2010-07-20 02:46:20Z tstarling $';
}
}
diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php
index 49ddcdd3..8d3ef616 100644
--- a/includes/api/ApiQuery.php
+++ b/includes/api/ApiQuery.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -74,6 +74,7 @@ class ApiQuery extends ApiBase {
'logevents' => 'ApiQueryLogEvents',
'recentchanges' => 'ApiQueryRecentChanges',
'search' => 'ApiQuerySearch',
+ 'tags' => 'ApiQueryTags',
'usercontribs' => 'ApiQueryContributions',
'watchlist' => 'ApiQueryWatchlist',
'watchlistraw' => 'ApiQueryWatchlistRaw',
@@ -92,22 +93,22 @@ class ApiQuery extends ApiBase {
private $mSlaveDB = null;
private $mNamedDB = array();
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
// Allow custom modules to be added in LocalSettings.php
global $wgAPIPropModules, $wgAPIListModules, $wgAPIMetaModules;
- self :: appendUserModules($this->mQueryPropModules, $wgAPIPropModules);
- self :: appendUserModules($this->mQueryListModules, $wgAPIListModules);
- self :: appendUserModules($this->mQueryMetaModules, $wgAPIMetaModules);
+ self :: appendUserModules( $this->mQueryPropModules, $wgAPIPropModules );
+ self :: appendUserModules( $this->mQueryListModules, $wgAPIListModules );
+ self :: appendUserModules( $this->mQueryMetaModules, $wgAPIMetaModules );
- $this->mPropModuleNames = array_keys($this->mQueryPropModules);
- $this->mListModuleNames = array_keys($this->mQueryListModules);
- $this->mMetaModuleNames = array_keys($this->mQueryMetaModules);
+ $this->mPropModuleNames = array_keys( $this->mQueryPropModules );
+ $this->mListModuleNames = array_keys( $this->mQueryListModules );
+ $this->mMetaModuleNames = array_keys( $this->mQueryMetaModules );
// Allow the entire list of modules at first,
// but during module instantiation check if it can be used as a generator.
- $this->mAllowedGenerators = array_merge($this->mListModuleNames, $this->mPropModuleNames);
+ $this->mAllowedGenerators = array_merge( $this->mListModuleNames, $this->mPropModuleNames );
}
/**
@@ -115,9 +116,9 @@ class ApiQuery extends ApiBase {
* @param $modules array Module array
* @param $newModules array Module array to add to $modules
*/
- private static function appendUserModules(&$modules, $newModules) {
- if (is_array( $newModules )) {
- foreach ( $newModules as $moduleName => $moduleClass) {
+ private static function appendUserModules( &$modules, $newModules ) {
+ if ( is_array( $newModules ) ) {
+ foreach ( $newModules as $moduleName => $moduleClass ) {
$modules[$moduleName] = $moduleClass;
}
}
@@ -128,9 +129,9 @@ class ApiQuery extends ApiBase {
* @return Database
*/
public function getDB() {
- if (!isset ($this->mSlaveDB)) {
+ if ( !isset ( $this->mSlaveDB ) ) {
$this->profileDBIn();
- $this->mSlaveDB = wfGetDB(DB_SLAVE,'api');
+ $this->mSlaveDB = wfGetDB( DB_SLAVE, 'api' );
$this->profileDBOut();
}
return $this->mSlaveDB;
@@ -146,10 +147,10 @@ class ApiQuery extends ApiBase {
* @param $groups array Query groups
* @return Database
*/
- public function getNamedDB($name, $db, $groups) {
- if (!array_key_exists($name, $this->mNamedDB)) {
+ public function getNamedDB( $name, $db, $groups ) {
+ if ( !array_key_exists( $name, $this->mNamedDB ) ) {
$this->profileDBIn();
- $this->mNamedDB[$name] = wfGetDB($db, $groups);
+ $this->mNamedDB[$name] = wfGetDB( $db, $groups );
$this->profileDBOut();
}
return $this->mNamedDB[$name];
@@ -168,15 +169,15 @@ class ApiQuery extends ApiBase {
* @return array(modulename => classname)
*/
function getModules() {
- return array_merge($this->mQueryPropModules, $this->mQueryListModules, $this->mQueryMetaModules);
+ return array_merge( $this->mQueryPropModules, $this->mQueryListModules, $this->mQueryMetaModules );
}
-
+
public function getCustomPrinter() {
// If &exportnowrap is set, use the raw formatter
- if ($this->getParameter('export') &&
- $this->getParameter('exportnowrap'))
- return new ApiFormatRaw($this->getMain(),
- $this->getMain()->createPrinterByName('xml'));
+ if ( $this->getParameter( 'export' ) &&
+ $this->getParameter( 'exportnowrap' ) )
+ return new ApiFormatRaw( $this->getMain(),
+ $this->getMain()->createPrinterByName( 'xml' ) );
else
return null;
}
@@ -196,24 +197,18 @@ class ApiQuery extends ApiBase {
$this->params = $this->extractRequestParams();
$this->redirects = $this->params['redirects'];
- //
// Create PageSet
- //
- $this->mPageSet = new ApiPageSet($this, $this->redirects);
+ $this->mPageSet = new ApiPageSet( $this, $this->redirects );
- //
// Instantiate requested modules
- //
$modules = array ();
- $this->InstantiateModules($modules, 'prop', $this->mQueryPropModules);
- $this->InstantiateModules($modules, 'list', $this->mQueryListModules);
- $this->InstantiateModules($modules, 'meta', $this->mQueryMetaModules);
+ $this->InstantiateModules( $modules, 'prop', $this->mQueryPropModules );
+ $this->InstantiateModules( $modules, 'list', $this->mQueryListModules );
+ $this->InstantiateModules( $modules, 'meta', $this->mQueryMetaModules );
$cacheMode = 'public';
- //
// If given, execute generator to substitute user supplied data with generated data.
- //
if ( isset ( $this->params['generator'] ) ) {
$generator = $this->newGenerator( $this->params['generator'] );
$params = $generator->extractRequestParams();
@@ -222,25 +217,21 @@ class ApiQuery extends ApiBase {
$this->executeGeneratorModule( $generator, $modules );
} else {
// Append custom fields and populate page/revision information
- $this->addCustomFldsToPageSet($modules, $this->mPageSet);
+ $this->addCustomFldsToPageSet( $modules, $this->mPageSet );
$this->mPageSet->execute();
}
- //
// Record page information (title, namespace, if exists, etc)
- //
$this->outputGeneralPageInfo();
- //
// Execute all requested modules.
- //
- foreach ($modules as $module) {
+ foreach ( $modules as $module ) {
$params = $module->extractRequestParams();
$cacheMode = $this->mergeCacheMode(
$cacheMode, $module->getCacheMode( $params ) );
$module->profileIn();
$module->execute();
- wfRunHooks('APIQueryAfterExecute', array(&$module));
+ wfRunHooks( 'APIQueryAfterExecute', array( &$module ) );
$module->profileOut();
}
@@ -273,10 +264,10 @@ class ApiQuery extends ApiBase {
* @param $modules array of module objects
* @param $pageSet ApiPageSet
*/
- private function addCustomFldsToPageSet($modules, $pageSet) {
+ private function addCustomFldsToPageSet( $modules, $pageSet ) {
// Query all requested modules.
- foreach ($modules as $module) {
- $module->requestExtraData($pageSet);
+ foreach ( $modules as $module ) {
+ $module->requestExtraData( $pageSet );
}
}
@@ -286,11 +277,11 @@ class ApiQuery extends ApiBase {
* @param $param string Parameter name to read modules from
* @param $moduleList array(modulename => classname)
*/
- private function InstantiateModules(&$modules, $param, $moduleList) {
+ private function InstantiateModules( &$modules, $param, $moduleList ) {
$list = @$this->params[$param];
- if (!is_null ($list))
- foreach ($list as $moduleName)
- $modules[] = new $moduleList[$moduleName] ($this, $moduleName);
+ if ( !is_null ( $list ) )
+ foreach ( $list as $moduleName )
+ $modules[] = new $moduleList[$moduleName] ( $this, $moduleName );
}
/**
@@ -303,65 +294,65 @@ class ApiQuery extends ApiBase {
$pageSet = $this->getPageSet();
$result = $this->getResult();
- # We don't check for a full result set here because we can't be adding
- # more than 380K. The maximum revision size is in the megabyte range,
- # and the maximum result size must be even higher than that.
+ // We don't check for a full result set here because we can't be adding
+ // more than 380K. The maximum revision size is in the megabyte range,
+ // and the maximum result size must be even higher than that.
// Title normalizations
$normValues = array ();
- foreach ($pageSet->getNormalizedTitles() as $rawTitleStr => $titleStr) {
+ foreach ( $pageSet->getNormalizedTitles() as $rawTitleStr => $titleStr ) {
$normValues[] = array (
'from' => $rawTitleStr,
'to' => $titleStr
);
}
- if (count($normValues)) {
- $result->setIndexedTagName($normValues, 'n');
- $result->addValue('query', 'normalized', $normValues);
+ if ( count( $normValues ) ) {
+ $result->setIndexedTagName( $normValues, 'n' );
+ $result->addValue( 'query', 'normalized', $normValues );
}
// Interwiki titles
$intrwValues = array ();
- foreach ($pageSet->getInterwikiTitles() as $rawTitleStr => $interwikiStr) {
+ foreach ( $pageSet->getInterwikiTitles() as $rawTitleStr => $interwikiStr ) {
$intrwValues[] = array (
'title' => $rawTitleStr,
'iw' => $interwikiStr
);
}
- if (count($intrwValues)) {
- $result->setIndexedTagName($intrwValues, 'i');
- $result->addValue('query', 'interwiki', $intrwValues);
+ if ( count( $intrwValues ) ) {
+ $result->setIndexedTagName( $intrwValues, 'i' );
+ $result->addValue( 'query', 'interwiki', $intrwValues );
}
// Show redirect information
$redirValues = array ();
- foreach ($pageSet->getRedirectTitles() as $titleStrFrom => $titleStrTo) {
+ foreach ( $pageSet->getRedirectTitles() as $titleStrFrom => $titleStrTo ) {
$redirValues[] = array (
- 'from' => strval($titleStrFrom),
+ 'from' => strval( $titleStrFrom ),
'to' => $titleStrTo
);
}
- if (count($redirValues)) {
- $result->setIndexedTagName($redirValues, 'r');
- $result->addValue('query', 'redirects', $redirValues);
+ if ( count( $redirValues ) ) {
+ $result->setIndexedTagName( $redirValues, 'r' );
+ $result->addValue( 'query', 'redirects', $redirValues );
}
//
// Missing revision elements
//
$missingRevIDs = $pageSet->getMissingRevisionIDs();
- if (count($missingRevIDs)) {
+ if ( count( $missingRevIDs ) ) {
$revids = array ();
- foreach ($missingRevIDs as $revid) {
+ foreach ( $missingRevIDs as $revid ) {
$revids[$revid] = array (
'revid' => $revid
);
}
- $result->setIndexedTagName($revids, 'rev');
- $result->addValue('query', 'badrevids', $revids);
+ $result->setIndexedTagName( $revids, 'rev' );
+ $result->addValue( 'query', 'badrevids', $revids );
}
//
@@ -370,17 +361,17 @@ class ApiQuery extends ApiBase {
$pages = array ();
// Report any missing titles
- foreach ($pageSet->getMissingTitles() as $fakeId => $title) {
+ foreach ( $pageSet->getMissingTitles() as $fakeId => $title ) {
$vals = array();
- ApiQueryBase :: addTitleInfo($vals, $title);
+ ApiQueryBase :: addTitleInfo( $vals, $title );
$vals['missing'] = '';
$pages[$fakeId] = $vals;
}
// Report any invalid titles
- foreach ($pageSet->getInvalidTitles() as $fakeId => $title)
- $pages[$fakeId] = array('title' => $title, 'invalid' => '');
+ foreach ( $pageSet->getInvalidTitles() as $fakeId => $title )
+ $pages[$fakeId] = array( 'title' => $title, 'invalid' => '' );
// Report any missing page ids
- foreach ($pageSet->getMissingPageIDs() as $pageid) {
+ foreach ( $pageSet->getMissingPageIDs() as $pageid ) {
$pages[$pageid] = array (
'pageid' => $pageid,
'missing' => ''
@@ -388,51 +379,52 @@ class ApiQuery extends ApiBase {
}
// Output general page information for found titles
- foreach ($pageSet->getGoodTitles() as $pageid => $title) {
+ foreach ( $pageSet->getGoodTitles() as $pageid => $title ) {
$vals = array();
$vals['pageid'] = $pageid;
- ApiQueryBase :: addTitleInfo($vals, $title);
+ ApiQueryBase :: addTitleInfo( $vals, $title );
$pages[$pageid] = $vals;
}
- if (count($pages)) {
+ if ( count( $pages ) ) {
- if ($this->params['indexpageids']) {
- $pageIDs = array_keys($pages);
+ if ( $this->params['indexpageids'] ) {
+ $pageIDs = array_keys( $pages );
// json treats all map keys as strings - converting to match
- $pageIDs = array_map('strval', $pageIDs);
- $result->setIndexedTagName($pageIDs, 'id');
- $result->addValue('query', 'pageids', $pageIDs);
+ $pageIDs = array_map( 'strval', $pageIDs );
+ $result->setIndexedTagName( $pageIDs, 'id' );
+ $result->addValue( 'query', 'pageids', $pageIDs );
}
- $result->setIndexedTagName($pages, 'page');
- $result->addValue('query', 'pages', $pages);
+ $result->setIndexedTagName( $pages, 'page' );
+ $result->addValue( 'query', 'pages', $pages );
}
- if ($this->params['export']) {
- $exporter = new WikiExporter($this->getDB());
+ if ( $this->params['export'] ) {
+ $exporter = new WikiExporter( $this->getDB() );
// WikiExporter writes to stdout, so catch its
// output with an ob
ob_start();
$exporter->openStream();
- foreach (@$pageSet->getGoodTitles() as $title)
- if ($title->userCanRead())
- $exporter->pageByTitle($title);
+ foreach ( @$pageSet->getGoodTitles() as $title )
+ if ( $title->userCanRead() )
+ $exporter->pageByTitle( $title );
$exporter->closeStream();
$exportxml = ob_get_contents();
ob_end_clean();
+
// Don't check the size of exported stuff
// It's not continuable, so it would cause more
// problems than it'd solve
$result->disableSizeCheck();
- if ($this->params['exportnowrap']) {
+ if ( $this->params['exportnowrap'] ) {
$result->reset();
// Raw formatter will handle this
- $result->addValue(null, 'text', $exportxml);
- $result->addValue(null, 'mime', 'text/xml');
+ $result->addValue( null, 'text', $exportxml );
+ $result->addValue( null, 'mime', 'text/xml' );
} else {
$r = array();
- ApiResult::setContent($r, $exportxml);
- $result->addValue('query', 'export', $r);
+ ApiResult::setContent( $r, $exportxml );
+ $result->addValue( 'query', 'export', $r );
}
$result->enableSizeCheck();
}
@@ -442,22 +434,23 @@ class ApiQuery extends ApiBase {
* Create a generator object of the given type and return it
*/
public function newGenerator( $generatorName ) {
+
// Find class that implements requested generator
- if (isset ($this->mQueryListModules[$generatorName])) {
+ if ( isset ( $this->mQueryListModules[$generatorName] ) ) {
$className = $this->mQueryListModules[$generatorName];
- } elseif (isset ($this->mQueryPropModules[$generatorName])) {
+ } elseif ( isset ( $this->mQueryPropModules[$generatorName] ) ) {
$className = $this->mQueryPropModules[$generatorName];
} else {
- ApiBase :: dieDebug(__METHOD__, "Unknown generator=$generatorName");
+ ApiBase :: dieDebug( __METHOD__, "Unknown generator=$generatorName" );
}
// Generator results
- $resultPageSet = new ApiPageSet($this, $this->redirects);
+ $resultPageSet = new ApiPageSet( $this, $this->redirects );
// Create and execute the generator
- $generator = new $className ($this, $generatorName);
- if (!$generator instanceof ApiQueryGeneratorBase)
- $this->dieUsage("Module $generatorName cannot be used as a generator", "badgenerator");
+ $generator = new $className ( $this, $generatorName );
+ if ( !$generator instanceof ApiQueryGeneratorBase )
+ $this->dieUsage( "Module $generatorName cannot be used as a generator", "badgenerator" );
$generator->setGeneratorMode();
return $generator;
}
@@ -473,16 +466,16 @@ class ApiQuery extends ApiBase {
$resultPageSet = new ApiPageSet( $this, $this->redirects, $this->convertTitles );
// Add any additional fields modules may need
- $generator->requestExtraData($this->mPageSet);
- $this->addCustomFldsToPageSet($modules, $resultPageSet);
+ $generator->requestExtraData( $this->mPageSet );
+ $this->addCustomFldsToPageSet( $modules, $resultPageSet );
// Populate page information with the original user input
$this->mPageSet->execute();
// populate resultPageSet with the generator output
$generator->profileIn();
- $generator->executeGenerator($resultPageSet);
- wfRunHooks('APIQueryGeneratorAfterExecute', array(&$generator, &$resultPageSet));
+ $generator->executeGenerator( $resultPageSet );
+ wfRunHooks( 'APIQueryGeneratorAfterExecute', array( &$generator, &$resultPageSet ) );
$resultPageSet->finishPageSetGeneration();
$generator->profileOut();
@@ -527,14 +520,14 @@ class ApiQuery extends ApiBase {
$this->mPageSet = null;
$this->mAllowedGenerators = array(); // Will be repopulated
- $astriks = str_repeat('--- ', 8);
- $astriks2 = str_repeat('*** ', 10);
+ $astriks = str_repeat( '--- ', 8 );
+ $astriks2 = str_repeat( '*** ', 10 );
$msg .= "\n$astriks Query: Prop $astriks\n\n";
- $msg .= $this->makeHelpMsgHelper($this->mQueryPropModules, 'prop');
+ $msg .= $this->makeHelpMsgHelper( $this->mQueryPropModules, 'prop' );
$msg .= "\n$astriks Query: List $astriks\n\n";
- $msg .= $this->makeHelpMsgHelper($this->mQueryListModules, 'list');
+ $msg .= $this->makeHelpMsgHelper( $this->mQueryListModules, 'list' );
$msg .= "\n$astriks Query: Meta $astriks\n\n";
- $msg .= $this->makeHelpMsgHelper($this->mQueryMetaModules, 'meta');
+ $msg .= $this->makeHelpMsgHelper( $this->mQueryMetaModules, 'meta' );
$msg .= "\n\n$astriks2 Modules: continuation $astriks2\n\n";
// Perform the base call last because the $this->mAllowedGenerators
@@ -551,25 +544,25 @@ class ApiQuery extends ApiBase {
* @param $paramName string Parameter name
* @return string
*/
- private function makeHelpMsgHelper($moduleList, $paramName) {
+ private function makeHelpMsgHelper( $moduleList, $paramName ) {
$moduleDescriptions = array ();
- foreach ($moduleList as $moduleName => $moduleClass) {
- $module = new $moduleClass ($this, $moduleName, null);
+ foreach ( $moduleList as $moduleName => $moduleClass ) {
+ $module = new $moduleClass ( $this, $moduleName, null );
- $msg = ApiMain::makeHelpMsgHeader($module, $paramName);
+ $msg = ApiMain::makeHelpMsgHeader( $module, $paramName );
$msg2 = $module->makeHelpMsg();
- if ($msg2 !== false)
+ if ( $msg2 !== false )
$msg .= $msg2;
- if ($module instanceof ApiQueryGeneratorBase) {
+ if ( $module instanceof ApiQueryGeneratorBase ) {
$this->mAllowedGenerators[] = $moduleName;
$msg .= "Generator:\n This module may be used as a generator\n";
}
$moduleDescriptions[] = $msg;
}
- return implode("\n", $moduleDescriptions);
+ return implode( "\n", $moduleDescriptions );
}
/**
@@ -577,7 +570,7 @@ class ApiQuery extends ApiBase {
* @return string
*/
public function makeHelpMsgParameters() {
- $psModule = new ApiPageSet($this);
+ $psModule = new ApiPageSet( $this );
return $psModule->makeHelpMsgParameters() . parent :: makeHelpMsgParameters();
}
@@ -590,8 +583,8 @@ class ApiQuery extends ApiBase {
'prop' => 'Which properties to get for the titles/revisions/pageids',
'list' => 'Which lists to get',
'meta' => 'Which meta data to get about the site',
- 'generator' => array('Use the output of a list as the input for other prop/list/meta items',
- 'NOTE: generator parameter names must be prefixed with a \'g\', see examples.'),
+ 'generator' => array( 'Use the output of a list as the input for other prop/list/meta items',
+ 'NOTE: generator parameter names must be prefixed with a \'g\', see examples.' ),
'redirects' => 'Automatically resolve redirects',
'indexpageids' => 'Include an additional pageids section listing all returned page IDs.',
'export' => 'Export the current revisions of all given or generated pages',
@@ -606,6 +599,12 @@ class ApiQuery extends ApiBase {
'All data modifications will first have to use query to acquire a token to prevent abuse from malicious sites.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'badgenerator', 'info' => 'Module $generatorName cannot be used as a generator' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -615,9 +614,9 @@ class ApiQuery extends ApiBase {
}
public function getVersion() {
- $psModule = new ApiPageSet($this);
+ $psModule = new ApiPageSet( $this );
$vers = array ();
- $vers[] = __CLASS__ . ': $Id: ApiQuery.php 69986 2010-07-27 03:57:39Z tstarling $';
+ $vers[] = __CLASS__ . ': $Id: ApiQuery.php 69932 2010-07-26 08:03:21Z tstarling $';
$vers[] = $psModule->getVersion();
return $vers;
}
diff --git a/includes/api/ApiQueryAllCategories.php b/includes/api/ApiQueryAllCategories.php
index fca92c4b..8f24fc7c 100644
--- a/includes/api/ApiQueryAllCategories.php
+++ b/includes/api/ApiQueryAllCategories.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,8 +36,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllCategories extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ac');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ac' );
}
public function execute() {
@@ -48,86 +48,86 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
- $this->addTables('category');
- $this->addFields('cat_title');
+ $this->addTables( 'category' );
+ $this->addFields( 'cat_title' );
- $dir = ($params['dir'] == 'descending' ? 'older' : 'newer');
- $from = (is_null($params['from']) ? null : $this->titlePartToKey($params['from']));
- $this->addWhereRange('cat_title', $dir, $from, null);
- if (isset ($params['prefix']))
- $this->addWhere("cat_title LIKE '" . $db->escapeLike($this->titlePartToKey($params['prefix'])) . "%'");
+ $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
+ $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+ $this->addWhereRange( 'cat_title', $dir, $from, null );
+ if ( isset ( $params['prefix'] ) )
+ $this->addWhere( 'cat_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
- $this->addOption('LIMIT', $params['limit']+1);
- $this->addOption('ORDER BY', 'cat_title' . ($params['dir'] == 'descending' ? ' DESC' : ''));
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $this->addOption( 'ORDER BY', 'cat_title' . ( $params['dir'] == 'descending' ? ' DESC' : '' ) );
- $prop = array_flip($params['prop']);
- $this->addFieldsIf( array( 'cat_pages', 'cat_subcats', 'cat_files' ), isset($prop['size']) );
- if(isset($prop['hidden']))
+ $prop = array_flip( $params['prop'] );
+ $this->addFieldsIf( array( 'cat_pages', 'cat_subcats', 'cat_files' ), isset( $prop['size'] ) );
+ if ( isset( $prop['hidden'] ) )
{
- $this->addTables(array('page', 'page_props'));
- $this->addJoinConds(array(
- 'page' => array('LEFT JOIN', array(
+ $this->addTables( array( 'page', 'page_props' ) );
+ $this->addJoinConds( array(
+ 'page' => array( 'LEFT JOIN', array(
'page_namespace' => NS_CATEGORY,
- 'page_title=cat_title')),
- 'page_props' => array('LEFT JOIN', array(
+ 'page_title=cat_title' ) ),
+ 'page_props' => array( 'LEFT JOIN', array(
'pp_page=page_id',
- 'pp_propname' => 'hiddencat')),
- ));
- $this->addFields('pp_propname AS cat_hidden');
+ 'pp_propname' => 'hiddencat' ) ),
+ ) );
+ $this->addFields( 'pp_propname AS cat_hidden' );
}
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$pages = array();
$categories = array();
$result = $this->getResult();
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional cats to be had. Stop here...
// TODO: Security issue - if the user has no right to view next title, it will still be shown
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->cat_title));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->cat_title ) );
break;
}
// Normalize titles
- $titleObj = Title::makeTitle(NS_CATEGORY, $row->cat_title);
- if(!is_null($resultPageSet))
+ $titleObj = Title::makeTitle( NS_CATEGORY, $row->cat_title );
+ if ( !is_null( $resultPageSet ) )
$pages[] = $titleObj->getPrefixedText();
else {
$item = array();
$result->setContent( $item, $titleObj->getText() );
- if( isset( $prop['size'] ) ) {
- $item['size'] = intval($row->cat_pages);
+ if ( isset( $prop['size'] ) ) {
+ $item['size'] = intval( $row->cat_pages );
$item['pages'] = $row->cat_pages - $row->cat_subcats - $row->cat_files;
- $item['files'] = intval($row->cat_files);
- $item['subcats'] = intval($row->cat_subcats);
+ $item['files'] = intval( $row->cat_files );
+ $item['subcats'] = intval( $row->cat_subcats );
}
- if( isset( $prop['hidden'] ) && $row->cat_hidden )
+ if ( isset( $prop['hidden'] ) && $row->cat_hidden )
$item['hidden'] = '';
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $item);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $item );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->cat_title));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->cat_title ) );
break;
}
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'c');
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'c' );
} else {
- $resultPageSet->populateFromTitles($pages);
+ $resultPageSet->populateFromTitles( $pages );
}
}
@@ -179,6 +179,6 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllCategories.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllCategories.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryAllLinks.php b/includes/api/ApiQueryAllLinks.php
index 73788aa6..6b6fc2c0 100644
--- a/includes/api/ApiQueryAllLinks.php
+++ b/includes/api/ApiQueryAllLinks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllLinks extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'al');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'al' );
}
public function execute() {
@@ -47,105 +47,105 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
- $prop = array_flip($params['prop']);
- $fld_ids = isset($prop['ids']);
- $fld_title = isset($prop['title']);
+ $prop = array_flip( $params['prop'] );
+ $fld_ids = isset( $prop['ids'] );
+ $fld_title = isset( $prop['title'] );
- if ($params['unique']) {
- if (!is_null($resultPageSet))
- $this->dieUsage($this->getModuleName() . ' cannot be used as a generator in unique links mode', 'params');
- if ($fld_ids)
- $this->dieUsage($this->getModuleName() . ' cannot return corresponding page ids in unique links mode', 'params');
- $this->addOption('DISTINCT');
+ if ( $params['unique'] ) {
+ if ( !is_null( $resultPageSet ) )
+ $this->dieUsage( $this->getModuleName() . ' cannot be used as a generator in unique links mode', 'params' );
+ if ( $fld_ids )
+ $this->dieUsage( $this->getModuleName() . ' cannot return corresponding page ids in unique links mode', 'params' );
+ $this->addOption( 'DISTINCT' );
}
- $this->addTables('pagelinks');
- $this->addWhereFld('pl_namespace', $params['namespace']);
+ $this->addTables( 'pagelinks' );
+ $this->addWhereFld( 'pl_namespace', $params['namespace'] );
- if (!is_null($params['from']) && !is_null($params['continue']))
- $this->dieUsage('alcontinue and alfrom cannot be used together', 'params');
- if (!is_null($params['continue']))
+ if ( !is_null( $params['from'] ) && !is_null( $params['continue'] ) )
+ $this->dieUsage( 'alcontinue and alfrom cannot be used together', 'params' );
+ if ( !is_null( $params['continue'] ) )
{
- $arr = explode('|', $params['continue']);
- if(count($arr) != 2)
- $this->dieUsage("Invalid continue parameter", 'badcontinue');
- $from = $this->getDB()->strencode($this->titleToKey($arr[0]));
- $id = intval($arr[1]);
- $this->addWhere("pl_title > '$from' OR " .
+ $arr = explode( '|', $params['continue'] );
+ if ( count( $arr ) != 2 )
+ $this->dieUsage( "Invalid continue parameter", 'badcontinue' );
+ $from = $this->getDB()->strencode( $this->titleToKey( $arr[0] ) );
+ $id = intval( $arr[1] );
+ $this->addWhere( "pl_title > '$from' OR " .
"(pl_title = '$from' AND " .
- "pl_from > $id)");
- }
+ "pl_from > $id)" );
+ }
- if (!is_null($params['from']))
- $this->addWhere('pl_title>=' . $db->addQuotes($this->titlePartToKey($params['from'])));
- if (isset ($params['prefix']))
- $this->addWhere("pl_title LIKE '" . $db->escapeLike($this->titlePartToKey($params['prefix'])) . "%'");
+ if ( !is_null( $params['from'] ) )
+ $this->addWhere( 'pl_title>=' . $db->addQuotes( $this->titlePartToKey( $params['from'] ) ) );
+ if ( isset ( $params['prefix'] ) )
+ $this->addWhere( 'pl_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
- $this->addFields(array (
+ $this->addFields( array (
'pl_title',
- ));
- $this->addFieldsIf('pl_from', !$params['unique']);
+ ) );
+ $this->addFieldsIf( 'pl_from', !$params['unique'] );
- $this->addOption('USE INDEX', 'pl_namespace');
+ $this->addOption( 'USE INDEX', 'pl_namespace' );
$limit = $params['limit'];
- $this->addOption('LIMIT', $limit+1);
- if($params['unique'])
- $this->addOption('ORDER BY', 'pl_title');
+ $this->addOption( 'LIMIT', $limit + 1 );
+ if ( $params['unique'] )
+ $this->addOption( 'ORDER BY', 'pl_title' );
else
- $this->addOption('ORDER BY', 'pl_title, pl_from');
+ $this->addOption( 'ORDER BY', 'pl_title, pl_from' );
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$pageids = array ();
$count = 0;
$result = $this->getResult();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// TODO: Security issue - if the user has no right to view next title, it will still be shown
- if($params['unique'])
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->pl_title));
+ if ( $params['unique'] )
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->pl_title ) );
else
- $this->setContinueEnumParameter('continue', $this->keyToTitle($row->pl_title) . "|" . $row->pl_from);
+ $this->setContinueEnumParameter( 'continue', $this->keyToTitle( $row->pl_title ) . "|" . $row->pl_from );
break;
}
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$vals = array();
- if ($fld_ids)
- $vals['fromid'] = intval($row->pl_from);
- if ($fld_title) {
- $title = Title :: makeTitle($params['namespace'], $row->pl_title);
- ApiQueryBase::addTitleInfo($vals, $title);
+ if ( $fld_ids )
+ $vals['fromid'] = intval( $row->pl_from );
+ if ( $fld_title ) {
+ $title = Title :: makeTitle( $params['namespace'], $row->pl_title );
+ ApiQueryBase::addTitleInfo( $vals, $title );
}
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- if($params['unique'])
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->pl_title));
+ if ( $params['unique'] )
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->pl_title ) );
else
- $this->setContinueEnumParameter('continue', $this->keyToTitle($row->pl_title) . "|" . $row->pl_from);
+ $this->setContinueEnumParameter( 'continue', $this->keyToTitle( $row->pl_title ) . "|" . $row->pl_from );
break;
}
} else {
$pageids[] = $row->pl_from;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'l');
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'l' );
} else {
- $resultPageSet->populateFromPageIDs($pageids);
+ $resultPageSet->populateFromPageIDs( $pageids );
}
}
@@ -192,6 +192,15 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Enumerate all links that point to a given namespace';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'params', 'info' => $this->getModuleName() . ' cannot be used as a generator in unique links mode' ),
+ array( 'code' => 'params', 'info' => $this->getModuleName() . ' cannot return corresponding page ids in unique links mode' ),
+ array( 'code' => 'params', 'info' => 'alcontinue and alfrom cannot be used together' ),
+ array( 'code' => 'badcontinue', 'info' => 'Invalid continue parameter' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -200,6 +209,6 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllLinks.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllLinks.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php
index c18f6dd1..f8d475cc 100644
--- a/includes/api/ApiQueryAllUsers.php
+++ b/includes/api/ApiQueryAllUsers.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllUsers extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'au');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'au' );
}
public function execute() {
@@ -44,67 +44,74 @@ class ApiQueryAllUsers extends ApiQueryBase {
$params = $this->extractRequestParams();
$prop = $params['prop'];
- if (!is_null($prop)) {
- $prop = array_flip($prop);
- $fld_blockinfo = isset($prop['blockinfo']);
- $fld_editcount = isset($prop['editcount']);
- $fld_groups = isset($prop['groups']);
- $fld_registration = isset($prop['registration']);
- } else {
+ if ( !is_null( $prop ) ) {
+ $prop = array_flip( $prop );
+ $fld_blockinfo = isset( $prop['blockinfo'] );
+ $fld_editcount = isset( $prop['editcount'] );
+ $fld_groups = isset( $prop['groups'] );
+ $fld_registration = isset( $prop['registration'] );
+ } else {
$fld_blockinfo = $fld_editcount = $fld_groups = $fld_registration = false;
}
$limit = $params['limit'];
- $this->addTables('user', 'u1');
+ $this->addTables( 'user', 'u1' );
+ $useIndex = true;
- if (!is_null($params['from']))
- $this->addWhere('u1.user_name >= ' . $db->addQuotes($this->keyToTitle($params['from'])));
+ if ( !is_null( $params['from'] ) )
+ $this->addWhere( 'u1.user_name >= ' . $db->addQuotes( $this->keyToTitle( $params['from'] ) ) );
- if (!is_null($params['prefix']))
- $this->addWhere('u1.user_name LIKE "' . $db->escapeLike($this->keyToTitle( $params['prefix'])) . '%"');
+ if ( !is_null( $params['prefix'] ) )
+ $this->addWhere( 'u1.user_name' . $db->buildLike( $this->keyToTitle( $params['prefix'] ), $db->anyString() ) );
- if (!is_null($params['group'])) {
+ if ( !is_null( $params['group'] ) ) {
+ $useIndex = false;
// Filter only users that belong to a given group
- $this->addTables('user_groups', 'ug1');
- $this->addWhere('ug1.ug_user=u1.user_id');
- $this->addWhereFld('ug1.ug_group', $params['group']);
+ $this->addTables( 'user_groups', 'ug1' );
+ $ug1 = $this->getAliasedName( 'user_groups', 'ug1' );
+ $this->addJoinConds( array( $ug1 => array( 'INNER JOIN', array( 'ug1.ug_user=u1.user_id',
+ 'ug1.ug_group' => $params['group'] ) ) ) );
}
- if ($params['witheditsonly'])
- $this->addWhere('u1.user_editcount > 0');
+ if ( $params['witheditsonly'] )
+ $this->addWhere( 'u1.user_editcount > 0' );
- if ($fld_groups) {
+ if ( $fld_groups ) {
// Show the groups the given users belong to
// request more than needed to avoid not getting all rows that belong to one user
- $groupCount = count(User::getAllGroups());
- $sqlLimit = $limit+$groupCount+1;
+ $groupCount = count( User::getAllGroups() );
+ $sqlLimit = $limit + $groupCount + 1;
- $this->addTables('user_groups', 'ug2');
- $tname = $this->getAliasedName('user_groups', 'ug2');
- $this->addJoinConds(array($tname => array('LEFT JOIN', 'ug2.ug_user=u1.user_id')));
- $this->addFields('ug2.ug_group ug_group2');
+ $this->addTables( 'user_groups', 'ug2' );
+ $tname = $this->getAliasedName( 'user_groups', 'ug2' );
+ $this->addJoinConds( array( $tname => array( 'LEFT JOIN', 'ug2.ug_user=u1.user_id' ) ) );
+ $this->addFields( 'ug2.ug_group ug_group2' );
} else {
- $sqlLimit = $limit+1;
+ $sqlLimit = $limit + 1;
}
- if ($fld_blockinfo) {
- $this->addTables('ipblocks');
- $this->addTables('user', 'u2');
- $u2 = $this->getAliasedName('user', 'u2');
- $this->addJoinConds(array(
- 'ipblocks' => array('LEFT JOIN', 'ipb_user=u1.user_id'),
- $u2 => array('LEFT JOIN', 'ipb_by=u2.user_id')));
- $this->addFields(array('ipb_reason', 'u2.user_name blocker_name'));
+ if ( $fld_blockinfo ) {
+ $this->addTables( 'ipblocks' );
+ $this->addTables( 'user', 'u2' );
+ $u2 = $this->getAliasedName( 'user', 'u2' );
+ $this->addJoinConds( array(
+ 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=u1.user_id' ),
+ $u2 => array( 'LEFT JOIN', 'ipb_by=u2.user_id' ) ) );
+ $this->addFields( array( 'ipb_reason', 'u2.user_name AS blocker_name' ) );
}
- $this->addOption('LIMIT', $sqlLimit);
+ $this->addOption( 'LIMIT', $sqlLimit );
- $this->addFields('u1.user_name');
- $this->addFieldsIf('u1.user_editcount', $fld_editcount);
- $this->addFieldsIf('u1.user_registration', $fld_registration);
+ $this->addFields( 'u1.user_name' );
+ $this->addFieldsIf( 'u1.user_editcount', $fld_editcount );
+ $this->addFieldsIf( 'u1.user_registration', $fld_registration );
- $this->addOption('ORDER BY', 'u1.user_name');
+ $this->addOption( 'ORDER BY', 'u1.user_name' );
+ if ( $useIndex ) {
+ $u1 = $this->getAliasedName( 'user', 'u1' );
+ $this->addOption( 'USE INDEX', array( $u1 => 'user_name' ) );
+ }
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$data = array ();
$count = 0;
@@ -119,66 +126,67 @@ class ApiQueryAllUsers extends ApiQueryBase {
// The setContinue... is more complex because of this, and takes into account the higher sql limit
// to make sure all rows that belong to the same user are received.
//
- while (true) {
+ while ( true ) {
- $row = $db->fetchObject($res);
+ $row = $db->fetchObject( $res );
$count++;
- if (!$row || $lastUser !== $row->user_name) {
+ if ( !$row || $lastUser !== $row->user_name ) {
// Save the last pass's user data
- if (is_array($lastUserData))
+ if ( is_array( $lastUserData ) )
{
- $fit = $result->addValue(array('query', $this->getModuleName()),
- null, $lastUserData);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+ null, $lastUserData );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('from',
- $this->keyToTitle($lastUserData['name']));
+ $this->setContinueEnumParameter( 'from',
+ $this->keyToTitle( $lastUserData['name'] ) );
break;
}
}
// No more rows left
- if (!$row)
+ if ( !$row )
break;
- if ($count > $limit) {
+ if ( $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->user_name));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->user_name ) );
break;
}
// Record new user's data
$lastUser = $row->user_name;
$lastUserData = array( 'name' => $lastUser );
- if ($fld_blockinfo) {
+ if ( $fld_blockinfo ) {
$lastUserData['blockedby'] = $row->blocker_name;
$lastUserData['blockreason'] = $row->ipb_reason;
}
- if ($fld_editcount)
- $lastUserData['editcount'] = intval($row->user_editcount);
- if ($fld_registration)
- $lastUserData['registration'] = wfTimestamp(TS_ISO_8601, $row->user_registration);
+ if ( $fld_editcount )
+ $lastUserData['editcount'] = intval( $row->user_editcount );
+ if ( $fld_registration )
+ $lastUserData['registration'] = $row->user_registration ?
+ wfTimestamp( TS_ISO_8601, $row->user_registration ) : '';
}
- if ($sqlLimit == $count) {
+ if ( $sqlLimit == $count ) {
// BUG! database contains group name that User::getAllGroups() does not return
// TODO: should handle this more gracefully
- ApiBase :: dieDebug(__METHOD__,
- 'MediaWiki configuration error: the database contains more user groups than known to User::getAllGroups() function');
+ ApiBase :: dieDebug( __METHOD__,
+ 'MediaWiki configuration error: the database contains more user groups than known to User::getAllGroups() function' );
}
// Add user's group info
- if ($fld_groups && !is_null($row->ug_group2)) {
+ if ( $fld_groups && !is_null( $row->ug_group2 ) ) {
$lastUserData['groups'][] = $row->ug_group2;
- $result->setIndexedTagName($lastUserData['groups'], 'g');
+ $result->setIndexedTagName( $lastUserData['groups'], 'g' );
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'u');
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'u' );
}
public function getCacheMode( $params ) {
@@ -219,7 +227,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
'group' => 'Limit users to a given group name',
'prop' => array(
'What pieces of information to include.',
- '`groups` property uses more server resources and may return fewer results than the limit.'),
+ '`groups` property uses more server resources and may return fewer results than the limit.' ),
'limit' => 'How many total user names to return.',
'witheditsonly' => 'Only list users who have made edits',
);
@@ -236,6 +244,6 @@ class ApiQueryAllUsers extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllUsers.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllUsers.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryAllimages.php b/includes/api/ApiQueryAllimages.php
index 983c6469..0a745516 100644
--- a/includes/api/ApiQueryAllimages.php
+++ b/includes/api/ApiQueryAllimages.php
@@ -24,9 +24,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,8 +36,19 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllimages extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ai');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ai' );
+ $this->mRepo = RepoGroup::singleton()->getLocalRepo();
+ }
+
+ /**
+ * Overide parent method to make sure to make sure the repo's DB is used
+ * which may not necesarilly be the same as the local DB.
+ *
+ * TODO: allow querying non-local repos.
+ */
+ protected function getDB() {
+ return $this->mRepo->getSlaveDB();
}
public function execute() {
@@ -48,89 +59,89 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- if ($resultPageSet->isResolvingRedirects())
- $this->dieUsage('Use "gaifilterredir=nonredirects" option instead of "redirects" when using allimages as a generator', 'params');
+ public function executeGenerator( $resultPageSet ) {
+ if ( $resultPageSet->isResolvingRedirects() )
+ $this->dieUsage( 'Use "gaifilterredir=nonredirects" option instead of "redirects" when using allimages as a generator', 'params' );
- $this->run($resultPageSet);
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
- $repo = RepoGroup::singleton()->getLocalRepo();
+ private function run( $resultPageSet = null ) {
+ $repo = $this->mRepo;
if ( !$repo instanceof LocalRepo )
- $this->dieUsage('Local file repository does not support querying all images', 'unsupportedrepo');
+ $this->dieUsage( 'Local file repository does not support querying all images', 'unsupportedrepo' );
$db = $this->getDB();
$params = $this->extractRequestParams();
// Image filters
- $dir = ($params['dir'] == 'descending' ? 'older' : 'newer');
- $from = (is_null($params['from']) ? null : $this->titlePartToKey($params['from']));
- $this->addWhereRange('img_name', $dir, $from, null);
- if (isset ($params['prefix']))
- $this->addWhere("img_name LIKE '" . $db->escapeLike($this->titlePartToKey($params['prefix'])) . "%'");
-
- if (isset ($params['minsize'])) {
- $this->addWhere('img_size>=' . intval($params['minsize']));
+ $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
+ $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+ $this->addWhereRange( 'img_name', $dir, $from, null );
+ if ( isset ( $params['prefix'] ) )
+ $this->addWhere( 'img_name' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+
+ if ( isset ( $params['minsize'] ) ) {
+ $this->addWhere( 'img_size>=' . intval( $params['minsize'] ) );
}
- if (isset ($params['maxsize'])) {
- $this->addWhere('img_size<=' . intval($params['maxsize']));
+ if ( isset ( $params['maxsize'] ) ) {
+ $this->addWhere( 'img_size<=' . intval( $params['maxsize'] ) );
}
$sha1 = false;
- if( isset( $params['sha1'] ) ) {
+ if ( isset( $params['sha1'] ) ) {
$sha1 = wfBaseConvert( $params['sha1'], 16, 36, 31 );
- } elseif( isset( $params['sha1base36'] ) ) {
+ } elseif ( isset( $params['sha1base36'] ) ) {
$sha1 = $params['sha1base36'];
}
- if( $sha1 ) {
+ if ( $sha1 ) {
$this->addWhere( 'img_sha1=' . $db->addQuotes( $sha1 ) );
}
- $this->addTables('image');
+ $this->addTables( 'image' );
- $prop = array_flip($params['prop']);
+ $prop = array_flip( $params['prop'] );
$this->addFields( LocalFile::selectFields() );
$limit = $params['limit'];
- $this->addOption('LIMIT', $limit+1);
- $this->addOption('ORDER BY', 'img_name' .
- ($params['dir'] == 'descending' ? ' DESC' : ''));
+ $this->addOption( 'LIMIT', $limit + 1 );
+ $this->addOption( 'ORDER BY', 'img_name' .
+ ( $params['dir'] == 'descending' ? ' DESC' : '' ) );
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$titles = array();
$count = 0;
$result = $this->getResult();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// TODO: Security issue - if the user has no right to view next title, it will still be shown
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->img_name));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->img_name ) );
break;
}
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$file = $repo->newFileFromRow( $row );
- $info = array_merge(array('name' => $row->img_name),
- ApiQueryImageInfo::getInfo($file, $prop, $result));
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $info);
- if( !$fit ) {
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->img_name));
+ $info = array_merge( array( 'name' => $row->img_name ),
+ ApiQueryImageInfo::getInfo( $file, $prop, $result ) );
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $info );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->img_name ) );
break;
}
} else {
- $titles[] = Title::makeTitle(NS_IMAGE, $row->img_name);
+ $titles[] = Title::makeTitle( NS_IMAGE, $row->img_name );
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'img');
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'img' );
} else {
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
}
@@ -161,18 +172,7 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
'sha1' => null,
'sha1base36' => null,
'prop' => array (
- ApiBase :: PARAM_TYPE => array(
- 'timestamp',
- 'user',
- 'comment',
- 'url',
- 'size',
- 'dimensions', // Obsolete
- 'mime',
- 'sha1',
- 'metadata',
- 'bitdepth',
- ),
+ ApiBase :: PARAM_TYPE => ApiQueryImageInfo::getPropertyNames(),
ApiBase :: PARAM_DFLT => 'timestamp|url',
ApiBase :: PARAM_ISMULTI => true
)
@@ -196,6 +196,13 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Enumerate all images sequentially';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'params', 'info' => 'Use "gaifilterredir=nonredirects" option instead of "redirects" when using allimages as a generator' ),
+ array( 'code' => 'unsupportedrepo', 'info' => 'Local file repository does not support querying all images' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -209,6 +216,6 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllimages.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllimages.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryAllmessages.php b/includes/api/ApiQueryAllmessages.php
index c615daf4..7dd9d874 100644
--- a/includes/api/ApiQueryAllmessages.php
+++ b/includes/api/ApiQueryAllmessages.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,79 +35,98 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllmessages extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'am');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'am' );
}
public function execute() {
- global $wgMessageCache;
$params = $this->extractRequestParams();
- if(!is_null($params['lang']))
+ if ( !is_null( $params['lang'] ) )
{
global $wgLang;
- $wgLang = Language::factory($params['lang']);
+ $wgLang = Language::factory( $params['lang'] );
}
+
+ $prop = array_flip( (array)$params['prop'] );
-
- //Determine which messages should we print
+ // Determine which messages should we print
$messages_target = array();
- if( $params['messages'] == '*' ) {
- $wgMessageCache->loadAllMessages();
- $message_names = array_keys( array_merge( Language::getMessagesFor( 'en' ), $wgMessageCache->getExtensionMessagesFor( 'en' ) ) );
+ if ( in_array( '*', $params['messages'] ) ) {
+ $message_names = array_keys( Language::getMessagesFor( 'en' ) );
sort( $message_names );
$messages_target = $message_names;
} else {
- $messages_target = explode( '|', $params['messages'] );
+ $messages_target = $params['messages'];
}
- //Filter messages
- if( isset( $params['filter'] ) ) {
+ // Filter messages
+ if ( isset( $params['filter'] ) ) {
$messages_filtered = array();
- foreach( $messages_target as $message ) {
- if( strpos( $message, $params['filter'] ) !== false ) { //!== is used because filter can be at the beginnig of the string
+ foreach ( $messages_target as $message ) {
+ if ( strpos( $message, $params['filter'] ) !== false ) { // !== is used because filter can be at the beginnig of the string
$messages_filtered[] = $message;
}
}
$messages_target = $messages_filtered;
}
- //Get all requested messages
+ // Get all requested messages and print the result
$messages = array();
- $skip = !is_null($params['from']);
- foreach( $messages_target as $message ) {
+ $skip = !is_null( $params['from'] );
+ $result = $this->getResult();
+ foreach ( $messages_target as $message ) {
// Skip all messages up to $params['from']
- if($skip && $message === $params['from'])
+ if ( $skip && $message === $params['from'] )
$skip = false;
- if(!$skip)
- $messages[$message] = wfMsg( $message );
- }
- //Print the result
- $result = $this->getResult();
- $messages_out = array();
- foreach( $messages as $name => $value ) {
- $message = array();
- $message['name'] = $name;
- if( wfEmptyMsg( $name, $value ) ) {
- $message['missing'] = '';
- } else {
- $result->setContent( $message, $value );
- }
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $message);
- if(!$fit)
- {
- $this->setContinueEnumParameter('from', $name);
- break;
+ if ( !$skip ) {
+ $a = array( 'name' => $message );
+ $args = null;
+ if ( isset( $params['args'] ) && count( $params['args'] ) != 0 ) {
+ $args = $params['args'];
+ }
+ // Check if the parser is enabled:
+ if ( $params['enableparser'] ) {
+ $msg = wfMsgExt( $message, array( 'parsemag' ), $args );
+ } else if ( $args ) {
+ $msgString = wfMsgGetKey( $message, true, false, false );
+ $msg = wfMsgReplaceArgs( $msgString, $args );
+ } else {
+ $msg = wfMsgGetKey( $message, true, false, false );
+ }
+
+ if ( wfEmptyMsg( $message, $msg ) )
+ $a['missing'] = '';
+ else {
+ ApiResult::setContent( $a, $msg );
+ if ( isset( $prop['default'] ) ) {
+ $default = wfMsgGetKey( $message, false, false, false );
+ if ( $default !== $msg ) {
+ if ( wfEmptyMsg( $message, $default ) )
+ $a['defaultmissing'] = '';
+ else
+ $a['default'] = $default;
+ }
+ }
+ }
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $a );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'from', $name );
+ break;
+ }
}
}
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'message');
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'message' );
}
public function getCacheMode( $params ) {
if ( is_null( $params['lang'] ) ) {
// Language not specified, will be fetched from preferences
return 'anon-public-user-private';
+ } elseif ( $params['enableparser'] ) {
+ // User-specific parser options will be used
+ return 'anon-public-user-private';
} else {
// OK to cache
return 'public';
@@ -118,6 +137,17 @@ class ApiQueryAllmessages extends ApiQueryBase {
return array (
'messages' => array (
ApiBase :: PARAM_DFLT => '*',
+ ApiBase :: PARAM_ISMULTI => true,
+ ),
+ 'prop' => array(
+ ApiBase :: PARAM_ISMULTI => true,
+ ApiBase :: PARAM_TYPE => array(
+ 'default'
+ )
+ ),
+ 'enableparser' => false,
+ 'args' => array(
+ ApiBase :: PARAM_ISMULTI => true
),
'filter' => array(),
'lang' => null,
@@ -128,6 +158,10 @@ class ApiQueryAllmessages extends ApiQueryBase {
public function getParamDescription() {
return array (
'messages' => 'Which messages to output. "*" means all messages',
+ 'prop' => 'Which properties to get',
+ 'enableparser' => array( 'Set to enable parser, will preprocess the wikitext of message',
+ 'Will substitute magic words, handle templates etc.' ),
+ 'args' => 'Arguments to be substituted into message',
'filter' => 'Return only messages that contain this string',
'lang' => 'Return messages in this language',
'from' => 'Return messages starting at this message',
@@ -146,6 +180,6 @@ class ApiQueryAllmessages extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllmessages.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllmessages.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryAllpages.php b/includes/api/ApiQueryAllpages.php
index e123e8fe..37f22ee2 100644
--- a/includes/api/ApiQueryAllpages.php
+++ b/includes/api/ApiQueryAllpages.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryAllpages extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ap');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ap' );
}
public function execute() {
@@ -47,31 +47,35 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- if ($resultPageSet->isResolvingRedirects())
- $this->dieUsage('Use "gapfilterredir=nonredirects" option instead of "redirects" when using allpages as a generator', 'params');
+ public function executeGenerator( $resultPageSet ) {
+ if ( $resultPageSet->isResolvingRedirects() )
+ $this->dieUsage( 'Use "gapfilterredir=nonredirects" option instead of "redirects" when using allpages as a generator', 'params' );
- $this->run($resultPageSet);
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
-
+ private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
// Page filters
- $this->addTables('page');
- if (!$this->addWhereIf('page_is_redirect = 1', $params['filterredir'] === 'redirects'))
- $this->addWhereIf('page_is_redirect = 0', $params['filterredir'] === 'nonredirects');
- $this->addWhereFld('page_namespace', $params['namespace']);
- $dir = ($params['dir'] == 'descending' ? 'older' : 'newer');
- $from = (is_null($params['from']) ? null : $this->titlePartToKey($params['from']));
- $this->addWhereRange('page_title', $dir, $from, null);
- if (isset ($params['prefix']))
- $this->addWhere("page_title LIKE '" . $db->escapeLike($this->titlePartToKey($params['prefix'])) . "%'");
-
- if (is_null($resultPageSet)) {
+ $this->addTables( 'page' );
+
+ if ( $params['filterredir'] == 'redirects' )
+ $this->addWhereFld( 'page_is_redirect', 1 );
+ else if ( $params['filterredir'] == 'nonredirects' )
+ $this->addWhereFld( 'page_is_redirect', 0 );
+
+ $this->addWhereFld( 'page_namespace', $params['namespace'] );
+ $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
+ $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+ $this->addWhereRange( 'page_title', $dir, $from, null );
+
+ if ( isset ( $params['prefix'] ) )
+ $this->addWhere( 'page_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+
+ if ( is_null( $resultPageSet ) ) {
$selectFields = array (
'page_namespace',
'page_title',
@@ -80,95 +84,98 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
} else {
$selectFields = $resultPageSet->getPageTableFields();
}
- $this->addFields($selectFields);
+
+ $this->addFields( $selectFields );
$forceNameTitleIndex = true;
- if (isset ($params['minsize'])) {
- $this->addWhere('page_len>=' . intval($params['minsize']));
+ if ( isset ( $params['minsize'] ) ) {
+ $this->addWhere( 'page_len>=' . intval( $params['minsize'] ) );
$forceNameTitleIndex = false;
}
- if (isset ($params['maxsize'])) {
- $this->addWhere('page_len<=' . intval($params['maxsize']));
+ if ( isset ( $params['maxsize'] ) ) {
+ $this->addWhere( 'page_len<=' . intval( $params['maxsize'] ) );
$forceNameTitleIndex = false;
}
// Page protection filtering
- if (!empty ($params['prtype'])) {
- $this->addTables('page_restrictions');
- $this->addWhere('page_id=pr_page');
- $this->addWhere('pr_expiry>' . $db->addQuotes($db->timestamp()));
- $this->addWhereFld('pr_type', $params['prtype']);
-
- // Remove the empty string and '*' from the prlevel array
- $prlevel = array_diff($params['prlevel'], array('', '*'));
- if (!empty($prlevel))
- $this->addWhereFld('pr_level', $prlevel);
- if ($params['prfiltercascade'] == 'cascading')
- $this->addWhereFld('pr_cascade', 1);
- if ($params['prfiltercascade'] == 'noncascading')
- $this->addWhereFld('pr_cascade', 0);
-
- $this->addOption('DISTINCT');
+ if ( !empty ( $params['prtype'] ) ) {
+ $this->addTables( 'page_restrictions' );
+ $this->addWhere( 'page_id=pr_page' );
+ $this->addWhere( 'pr_expiry>' . $db->addQuotes( $db->timestamp() ) );
+ $this->addWhereFld( 'pr_type', $params['prtype'] );
+
+ if ( isset ( $params['prlevel'] ) ) {
+ // Remove the empty string and '*' from the prlevel array
+ $prlevel = array_diff( $params['prlevel'], array( '', '*' ) );
+
+ if ( !empty( $prlevel ) )
+ $this->addWhereFld( 'pr_level', $prlevel );
+ }
+ if ( $params['prfiltercascade'] == 'cascading' )
+ $this->addWhereFld( 'pr_cascade', 1 );
+ else if ( $params['prfiltercascade'] == 'noncascading' )
+ $this->addWhereFld( 'pr_cascade', 0 );
+
+ $this->addOption( 'DISTINCT' );
$forceNameTitleIndex = false;
- } else if (isset ($params['prlevel'])) {
- $this->dieUsage('prlevel may not be used without prtype', 'params');
+ } else if ( isset ( $params['prlevel'] ) ) {
+ $this->dieUsage( 'prlevel may not be used without prtype', 'params' );
}
- if($params['filterlanglinks'] == 'withoutlanglinks') {
- $this->addTables('langlinks');
- $this->addJoinConds(array('langlinks' => array('LEFT JOIN', 'page_id=ll_from')));
- $this->addWhere('ll_from IS NULL');
+ if ( $params['filterlanglinks'] == 'withoutlanglinks' ) {
+ $this->addTables( 'langlinks' );
+ $this->addJoinConds( array( 'langlinks' => array( 'LEFT JOIN', 'page_id=ll_from' ) ) );
+ $this->addWhere( 'll_from IS NULL' );
$forceNameTitleIndex = false;
- } else if($params['filterlanglinks'] == 'withlanglinks') {
- $this->addTables('langlinks');
- $this->addWhere('page_id=ll_from');
- $this->addOption('STRAIGHT_JOIN');
+ } else if ( $params['filterlanglinks'] == 'withlanglinks' ) {
+ $this->addTables( 'langlinks' );
+ $this->addWhere( 'page_id=ll_from' );
+ $this->addOption( 'STRAIGHT_JOIN' );
// We have to GROUP BY all selected fields to stop
// PostgreSQL from whining
- $this->addOption('GROUP BY', implode(', ', $selectFields));
+ $this->addOption( 'GROUP BY', implode( ', ', $selectFields ) );
$forceNameTitleIndex = false;
}
- if ($forceNameTitleIndex)
- $this->addOption('USE INDEX', 'name_title');
-
+ if ( $forceNameTitleIndex )
+ $this->addOption( 'USE INDEX', 'name_title' );
$limit = $params['limit'];
- $this->addOption('LIMIT', $limit+1);
- $res = $this->select(__METHOD__);
+ $this->addOption( 'LIMIT', $limit + 1 );
+ $res = $this->select( __METHOD__ );
$count = 0;
$result = $this->getResult();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// TODO: Security issue - if the user has no right to view next title, it will still be shown
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->page_title));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->page_title ) );
break;
}
- if (is_null($resultPageSet)) {
- $title = Title :: makeTitle($row->page_namespace, $row->page_title);
+ if ( is_null( $resultPageSet ) ) {
+ $title = Title :: makeTitle( $row->page_namespace, $row->page_title );
$vals = array(
- 'pageid' => intval($row->page_id),
- 'ns' => intval($title->getNamespace()),
- 'title' => $title->getPrefixedText());
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ 'pageid' => intval( $row->page_id ),
+ 'ns' => intval( $title->getNamespace() ),
+ 'title' => $title->getPrefixedText() );
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('from', $this->keyToTitle($row->page_title));
+ $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->page_title ) );
break;
}
} else {
- $resultPageSet->processDbRow($row);
+ $resultPageSet->processDbRow( $row );
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'p');
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'p' );
}
}
@@ -257,6 +264,13 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Enumerate all pages sequentially in a given namespace';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'params', 'info' => 'Use "gapfilterredir=nonredirects" option instead of "redirects" when using allpages as a generator' ),
+ array( 'code' => 'params', 'info' => 'prlevel may not be used without prtype' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -272,6 +286,6 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllpages.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryAllpages.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryBacklinks.php b/includes/api/ApiQueryBacklinks.php
index 1b1fe639..648da069 100644
--- a/includes/api/ApiQueryBacklinks.php
+++ b/includes/api/ApiQueryBacklinks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -61,18 +61,18 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
)
);
- public function __construct($query, $moduleName) {
- extract($this->backlinksSettings[$moduleName]);
+ public function __construct( $query, $moduleName ) {
+ extract( $this->backlinksSettings[$moduleName] );
$this->resultArr = array();
- parent :: __construct($query, $moduleName, $code);
+ parent :: __construct( $query, $moduleName, $code );
$this->bl_ns = $prefix . '_namespace';
$this->bl_from = $prefix . '_from';
$this->bl_table = $linktbl;
$this->bl_code = $code;
$this->hasNS = $moduleName !== 'imageusage';
- if ($this->hasNS) {
+ if ( $this->hasNS ) {
$this->bl_title = $prefix . '_title';
$this->bl_sort = "{$this->bl_ns}, {$this->bl_title}, {$this->bl_from}";
$this->bl_fields = array (
@@ -96,210 +96,223 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function prepareFirstQuery($resultPageSet = null) {
+ private function prepareFirstQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect
* FROM pagelinks, page WHERE pl_from=page_id
* AND pl_title='Foo' AND pl_namespace=0
* LIMIT 11 ORDER BY pl_from
*/
$db = $this->getDB();
- $this->addTables(array('page', $this->bl_table));
- $this->addWhere("{$this->bl_from}=page_id");
- if(is_null($resultPageSet))
- $this->addFields(array('page_id', 'page_title', 'page_namespace'));
+ $this->addTables( array( $this->bl_table, 'page' ) );
+ $this->addWhere( "{$this->bl_from}=page_id" );
+ if ( is_null( $resultPageSet ) )
+ $this->addFields( array( 'page_id', 'page_title', 'page_namespace' ) );
else
- $this->addFields($resultPageSet->getPageTableFields());
- $this->addFields('page_is_redirect');
- $this->addWhereFld($this->bl_title, $this->rootTitle->getDBKey());
- if($this->hasNS)
- $this->addWhereFld($this->bl_ns, $this->rootTitle->getNamespace());
- $this->addWhereFld('page_namespace', $this->params['namespace']);
- if(!is_null($this->contID))
- $this->addWhere("{$this->bl_from}>={$this->contID}");
- if($this->params['filterredir'] == 'redirects')
- $this->addWhereFld('page_is_redirect', 1);
- if($this->params['filterredir'] == 'nonredirects')
- $this->addWhereFld('page_is_redirect', 0);
- $this->addOption('LIMIT', $this->params['limit'] + 1);
- $this->addOption('ORDER BY', $this->bl_from);
+ $this->addFields( $resultPageSet->getPageTableFields() );
+
+ $this->addFields( 'page_is_redirect' );
+ $this->addWhereFld( $this->bl_title, $this->rootTitle->getDBkey() );
+
+ if ( $this->hasNS )
+ $this->addWhereFld( $this->bl_ns, $this->rootTitle->getNamespace() );
+ $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
+
+ if ( !is_null( $this->contID ) )
+ $this->addWhere( "{$this->bl_from}>={$this->contID}" );
+
+ if ( $this->params['filterredir'] == 'redirects' )
+ $this->addWhereFld( 'page_is_redirect', 1 );
+ else if ( $this->params['filterredir'] == 'nonredirects' && !$this->redirect )
+ // bug 22245 - Check for !redirect, as filtering nonredirects, when getting what links to them is contradictory
+ $this->addWhereFld( 'page_is_redirect', 0 );
+
+ $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
+ $this->addOption( 'ORDER BY', $this->bl_from );
+ $this->addOption( 'STRAIGHT_JOIN' );
}
- private function prepareSecondQuery($resultPageSet = null) {
+ private function prepareSecondQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect, pl_title, pl_namespace
FROM pagelinks, page WHERE pl_from=page_id
AND (pl_title='Foo' AND pl_namespace=0) OR (pl_title='Bar' AND pl_namespace=1)
ORDER BY pl_namespace, pl_title, pl_from LIMIT 11
*/
$db = $this->getDB();
- $this->addTables(array('page', $this->bl_table));
- $this->addWhere("{$this->bl_from}=page_id");
- if(is_null($resultPageSet))
- $this->addFields(array('page_id', 'page_title', 'page_namespace', 'page_is_redirect'));
+ $this->addTables( array( 'page', $this->bl_table ) );
+ $this->addWhere( "{$this->bl_from}=page_id" );
+
+ if ( is_null( $resultPageSet ) )
+ $this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect' ) );
else
- $this->addFields($resultPageSet->getPageTableFields());
- $this->addFields($this->bl_title);
- if($this->hasNS)
- $this->addFields($this->bl_ns);
+ $this->addFields( $resultPageSet->getPageTableFields() );
+
+ $this->addFields( $this->bl_title );
+ if ( $this->hasNS )
+ $this->addFields( $this->bl_ns );
+
// We can't use LinkBatch here because $this->hasNS may be false
$titleWhere = array();
- foreach($this->redirTitles as $t)
- $titleWhere[] = "{$this->bl_title} = ".$db->addQuotes($t->getDBKey()).
- ($this->hasNS ? " AND {$this->bl_ns} = '{$t->getNamespace()}'" : "");
- $this->addWhere($db->makeList($titleWhere, LIST_OR));
- $this->addWhereFld('page_namespace', $this->params['namespace']);
- if(!is_null($this->redirID))
+ foreach ( $this->redirTitles as $t )
+ $titleWhere[] = "{$this->bl_title} = " . $db->addQuotes( $t->getDBkey() ) .
+ ( $this->hasNS ? " AND {$this->bl_ns} = '{$t->getNamespace()}'" : "" );
+ $this->addWhere( $db->makeList( $titleWhere, LIST_OR ) );
+ $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
+
+ if ( !is_null( $this->redirID ) )
{
$first = $this->redirTitles[0];
- $title = $db->strencode($first->getDBKey());
+ $title = $db->strencode( $first->getDBkey() );
$ns = $first->getNamespace();
$from = $this->redirID;
- if($this->hasNS)
- $this->addWhere("{$this->bl_ns} > $ns OR ".
- "({$this->bl_ns} = $ns AND ".
- "({$this->bl_title} > '$title' OR ".
- "({$this->bl_title} = '$title' AND ".
- "{$this->bl_from} >= $from)))");
+ if ( $this->hasNS )
+ $this->addWhere( "{$this->bl_ns} > $ns OR " .
+ "({$this->bl_ns} = $ns AND " .
+ "({$this->bl_title} > '$title' OR " .
+ "({$this->bl_title} = '$title' AND " .
+ "{$this->bl_from} >= $from)))" );
else
- $this->addWhere("{$this->bl_title} > '$title' OR ".
- "({$this->bl_title} = '$title' AND ".
- "{$this->bl_from} >= $from)");
+ $this->addWhere( "{$this->bl_title} > '$title' OR " .
+ "({$this->bl_title} = '$title' AND " .
+ "{$this->bl_from} >= $from)" );
}
- if($this->params['filterredir'] == 'redirects')
- $this->addWhereFld('page_is_redirect', 1);
- if($this->params['filterredir'] == 'nonredirects')
- $this->addWhereFld('page_is_redirect', 0);
- $this->addOption('LIMIT', $this->params['limit'] + 1);
- $this->addOption('ORDER BY', $this->bl_sort);
- $this->addOption('USE INDEX', array('page' => 'PRIMARY'));
+ if ( $this->params['filterredir'] == 'redirects' )
+ $this->addWhereFld( 'page_is_redirect', 1 );
+ else if ( $this->params['filterredir'] == 'nonredirects' )
+ $this->addWhereFld( 'page_is_redirect', 0 );
+
+ $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
+ $this->addOption( 'ORDER BY', $this->bl_sort );
+ $this->addOption( 'USE INDEX', array( 'page' => 'PRIMARY' ) );
}
- private function run($resultPageSet = null) {
- $this->params = $this->extractRequestParams(false);
- $this->redirect = isset($this->params['redirect']) && $this->params['redirect'];
- $userMax = ( $this->redirect ? ApiBase::LIMIT_BIG1/2 : ApiBase::LIMIT_BIG1 );
- $botMax = ( $this->redirect ? ApiBase::LIMIT_BIG2/2 : ApiBase::LIMIT_BIG2 );
- if( $this->params['limit'] == 'max' ) {
+ private function run( $resultPageSet = null ) {
+ $this->params = $this->extractRequestParams( false );
+ $this->redirect = isset( $this->params['redirect'] ) && $this->params['redirect'];
+ $userMax = ( $this->redirect ? ApiBase::LIMIT_BIG1 / 2 : ApiBase::LIMIT_BIG1 );
+ $botMax = ( $this->redirect ? ApiBase::LIMIT_BIG2 / 2 : ApiBase::LIMIT_BIG2 );
+ if ( $this->params['limit'] == 'max' ) {
$this->params['limit'] = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
$this->getResult()->addValue( 'limits', $this->getModuleName(), $this->params['limit'] );
}
$this->processContinue();
- $this->prepareFirstQuery($resultPageSet);
+ $this->prepareFirstQuery( $resultPageSet );
$db = $this->getDB();
- $res = $this->select(__METHOD__.'::firstQuery');
+ $res = $this->select( __METHOD__ . '::firstQuery' );
$count = 0;
$this->pageMap = array(); // Maps ns and title to pageid
$this->continueStr = null;
$this->redirTitles = array();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $this->params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $this->params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// Continue string preserved in case the redirect query doesn't pass the limit
- $this->continueStr = $this->getContinueStr($row->page_id);
+ $this->continueStr = $this->getContinueStr( $row->page_id );
break;
}
- if (is_null($resultPageSet))
- $this->extractRowInfo($row);
+ if ( is_null( $resultPageSet ) )
+ $this->extractRowInfo( $row );
else
{
$this->pageMap[$row->page_namespace][$row->page_title] = $row->page_id;
- if($row->page_is_redirect)
- $this->redirTitles[] = Title::makeTitle($row->page_namespace, $row->page_title);
- $resultPageSet->processDbRow($row);
+ if ( $row->page_is_redirect )
+ $this->redirTitles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
+
+ $resultPageSet->processDbRow( $row );
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if($this->redirect && count($this->redirTitles))
+ if ( $this->redirect && count( $this->redirTitles ) )
{
$this->resetQueryParams();
- $this->prepareSecondQuery($resultPageSet);
- $res = $this->select(__METHOD__.'::secondQuery');
+ $this->prepareSecondQuery( $resultPageSet );
+ $res = $this->select( __METHOD__ . '::secondQuery' );
$count = 0;
- while($row = $db->fetchObject($res))
+ while ( $row = $db->fetchObject( $res ) )
{
- if(++$count > $this->params['limit'])
+ if ( ++$count > $this->params['limit'] )
{
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// We need to keep the parent page of this redir in
- if($this->hasNS)
- $parentID = $this->pageMap[$row->{$this->bl_ns}][$row->{$this->bl_title}];
+ if ( $this->hasNS )
+ $parentID = $this->pageMap[$row-> { $this->bl_ns } ][$row-> { $this->bl_title } ];
else
- $parentID = $this->pageMap[NS_IMAGE][$row->{$this->bl_title}];
- $this->continueStr = $this->getContinueRedirStr($parentID, $row->page_id);
+ $parentID = $this->pageMap[NS_IMAGE][$row-> { $this->bl_title } ];
+ $this->continueStr = $this->getContinueRedirStr( $parentID, $row->page_id );
break;
}
- if(is_null($resultPageSet))
- $this->extractRedirRowInfo($row);
+ if ( is_null( $resultPageSet ) )
+ $this->extractRedirRowInfo( $row );
else
- $resultPageSet->processDbRow($row);
+ $resultPageSet->processDbRow( $row );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
// Try to add the result data in one go and pray that it fits
- $fit = $this->getResult()->addValue('query', $this->getModuleName(), array_values($this->resultArr));
- if(!$fit)
+ $fit = $this->getResult()->addValue( 'query', $this->getModuleName(), array_values( $this->resultArr ) );
+ if ( !$fit )
{
// It didn't fit. Add elements one by one until the
// result is full.
- foreach($this->resultArr as $pageID => $arr)
+ foreach ( $this->resultArr as $pageID => $arr )
{
// Add the basic entry without redirlinks first
$fit = $this->getResult()->addValue(
- array('query', $this->getModuleName()),
- null, array_diff_key($arr, array('redirlinks' => '')));
- if(!$fit)
+ array( 'query', $this->getModuleName() ),
+ null, array_diff_key( $arr, array( 'redirlinks' => '' ) ) );
+ if ( !$fit )
{
- $this->continueStr = $this->getContinueStr($pageID);
+ $this->continueStr = $this->getContinueStr( $pageID );
break;
}
$hasRedirs = false;
- foreach((array)@$arr['redirlinks'] as $key => $redir)
+ foreach ( (array)@$arr['redirlinks'] as $key => $redir )
{
$fit = $this->getResult()->addValue(
- array('query', $this->getModuleName(), $pageID, 'redirlinks'),
- $key, $redir);
- if(!$fit)
+ array( 'query', $this->getModuleName(), $pageID, 'redirlinks' ),
+ $key, $redir );
+ if ( !$fit )
{
- $this->continueStr = $this->getContinueRedirStr($pageID, $redir['pageid']);
+ $this->continueStr = $this->getContinueRedirStr( $pageID, $redir['pageid'] );
break;
}
$hasRedirs = true;
}
- if($hasRedirs)
+ if ( $hasRedirs )
$this->getResult()->setIndexedTagName_internal(
- array('query', $this->getModuleName(), $pageID, 'redirlinks'),
- $this->bl_code);
- if(!$fit)
+ array( 'query', $this->getModuleName(), $pageID, 'redirlinks' ),
+ $this->bl_code );
+ if ( !$fit )
break;
}
- }
+ }
$this->getResult()->setIndexedTagName_internal(
- array('query', $this->getModuleName()),
- $this->bl_code);
+ array( 'query', $this->getModuleName() ),
+ $this->bl_code );
}
- if(!is_null($this->continueStr))
- $this->setContinueEnumParameter('continue', $this->continueStr);
+ if ( !is_null( $this->continueStr ) )
+ $this->setContinueEnumParameter( 'continue', $this->continueStr );
}
- private function extractRowInfo($row) {
+ private function extractRowInfo( $row ) {
$this->pageMap[$row->page_namespace][$row->page_title] = $row->page_id;
- $t = Title::makeTitle($row->page_namespace, $row->page_title);
- $a = array('pageid' => intval($row->page_id));
- ApiQueryBase::addTitleInfo($a, $t);
- if($row->page_is_redirect)
+ $t = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $a = array( 'pageid' => intval( $row->page_id ) );
+ ApiQueryBase::addTitleInfo( $a, $t );
+ if ( $row->page_is_redirect )
{
$a['redirect'] = '';
$this->redirTitles[] = $t;
@@ -308,42 +321,42 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->resultArr[$a['pageid']] = $a;
}
- private function extractRedirRowInfo($row)
+ private function extractRedirRowInfo( $row )
{
- $a['pageid'] = intval($row->page_id);
- ApiQueryBase::addTitleInfo($a, Title::makeTitle($row->page_namespace, $row->page_title));
- if($row->page_is_redirect)
+ $a['pageid'] = intval( $row->page_id );
+ ApiQueryBase::addTitleInfo( $a, Title::makeTitle( $row->page_namespace, $row->page_title ) );
+ if ( $row->page_is_redirect )
$a['redirect'] = '';
- $ns = $this->hasNS ? $row->{$this->bl_ns} : NS_FILE;
- $parentID = $this->pageMap[$ns][$row->{$this->bl_title}];
+ $ns = $this->hasNS ? $row-> { $this->bl_ns } : NS_FILE;
+ $parentID = $this->pageMap[$ns][$row-> { $this->bl_title } ];
// Put all the results in an array first
$this->resultArr[$parentID]['redirlinks'][] = $a;
- $this->getResult()->setIndexedTagName($this->resultArr[$parentID]['redirlinks'], $this->bl_code);
+ $this->getResult()->setIndexedTagName( $this->resultArr[$parentID]['redirlinks'], $this->bl_code );
}
protected function processContinue() {
- if (!is_null($this->params['continue']))
+ if ( !is_null( $this->params['continue'] ) )
$this->parseContinueParam();
else {
if ( $this->params['title'] !== "" ) {
$title = Title::newFromText( $this->params['title'] );
if ( !$title ) {
- $this->dieUsageMsg(array('invalidtitle', $this->params['title']));
+ $this->dieUsageMsg( array( 'invalidtitle', $this->params['title'] ) );
} else {
$this->rootTitle = $title;
}
} else {
- $this->dieUsageMsg(array('missingparam', 'title'));
+ $this->dieUsageMsg( array( 'missingparam', 'title' ) );
}
}
// only image titles are allowed for the root in imageinfo mode
- if (!$this->hasNS && $this->rootTitle->getNamespace() !== NS_FILE)
- $this->dieUsage("The title for {$this->getModuleName()} query must be an image", 'bad_image_title');
+ if ( !$this->hasNS && $this->rootTitle->getNamespace() !== NS_FILE )
+ $this->dieUsage( "The title for {$this->getModuleName()} query must be an image", 'bad_image_title' );
}
protected function parseContinueParam() {
- $continueList = explode('|', $this->params['continue']);
+ $continueList = explode( '|', $this->params['continue'] );
// expected format:
// ns | key | id1 [| id2]
// ns+key: root title
@@ -352,33 +365,36 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
// null stuff out now so we know what's set and what isn't
$this->rootTitle = $this->contID = $this->redirID = null;
- $rootNs = intval($continueList[0]);
- if($rootNs === 0 && $continueList[0] !== '0')
+ $rootNs = intval( $continueList[0] );
+ if ( $rootNs === 0 && $continueList[0] !== '0' )
// Illegal continue parameter
- $this->dieUsage("Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue");
- $this->rootTitle = Title::makeTitleSafe($rootNs, $continueList[1]);
- if(!$this->rootTitle)
- $this->dieUsage("Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue");
- $contID = intval($continueList[2]);
- if($contID === 0 && $continueList[2] !== '0')
- $this->dieUsage("Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue");
+ $this->dieUsage( "Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue" );
+ $this->rootTitle = Title::makeTitleSafe( $rootNs, $continueList[1] );
+
+ if ( !$this->rootTitle )
+ $this->dieUsage( "Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue" );
+ $contID = intval( $continueList[2] );
+
+ if ( $contID === 0 && $continueList[2] !== '0' )
+ $this->dieUsage( "Invalid continue param. You should pass the original value returned by the previous query", "_badcontinue" );
$this->contID = $contID;
- $redirID = intval(@$continueList[3]);
- if($redirID === 0 && @$continueList[3] !== '0')
+ $redirID = intval( @$continueList[3] );
+
+ if ( $redirID === 0 && @$continueList[3] !== '0' )
// This one isn't required
return;
$this->redirID = $redirID;
}
- protected function getContinueStr($lastPageID) {
+ protected function getContinueStr( $lastPageID ) {
return $this->rootTitle->getNamespace() .
'|' . $this->rootTitle->getDBkey() .
'|' . $lastPageID;
}
- protected function getContinueRedirStr($lastPageID, $lastRedirID) {
- return $this->getContinueStr($lastPageID) . '|' . $lastRedirID;
+ protected function getContinueRedirStr( $lastPageID, $lastRedirID ) {
+ return $this->getContinueStr( $lastPageID ) . '|' . $lastRedirID;
}
public function getAllowedParams() {
@@ -405,7 +421,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
ApiBase :: PARAM_MAX2 => ApiBase :: LIMIT_BIG2
)
);
- if($this->getModuleName() == 'embeddedin')
+ if ( $this->getModuleName() == 'embeddedin' )
return $retval;
$retval['redirect'] = false;
return $retval;
@@ -413,23 +429,24 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
public function getParamDescription() {
$retval = array (
- 'title' => 'Title to search. If null, titles= parameter will be used instead, but will be obsolete soon.',
+ 'title' => 'Title to search.',
'continue' => 'When more results are available, use this to continue.',
'namespace' => 'The namespace to enumerate.',
- 'filterredir' => 'How to filter for redirects'
);
- if($this->getModuleName() != 'embeddedin')
- return array_merge($retval, array(
+ if ( $this->getModuleName() != 'embeddedin' )
+ return array_merge( $retval, array(
'redirect' => 'If linking page is a redirect, find all pages that link to that redirect as well. Maximum limit is halved.',
- 'limit' => "How many total pages to return. If {$this->bl_code}redirect is enabled, limit applies to each level separately."
- ));
- return array_merge($retval, array(
- 'limit' => "How many total pages to return."
- ));
+ 'filterredir' => "How to filter for redirects. If set to nonredirects when {$this->bl_code}redirect is enabled, this is only applied to the second level",
+ 'limit' => "How many total pages to return. If {$this->bl_code}redirect is enabled, limit applies to each level separately (which means you may get up to 2 * limit results)."
+ ) );
+ return array_merge( $retval, array(
+ 'filterredir' => 'How to filter for redirects',
+ 'limit' => 'How many total pages to return.'
+ ) );
}
public function getDescription() {
- switch ($this->getModuleName()) {
+ switch ( $this->getModuleName() ) {
case 'backlinks' :
return 'Find all pages that link to the given page';
case 'embeddedin' :
@@ -437,9 +454,18 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
case 'imageusage' :
return 'Find all pages that use the given image title.';
default :
- ApiBase :: dieDebug(__METHOD__, 'Unknown module name');
+ ApiBase :: dieDebug( __METHOD__, 'Unknown module name' );
}
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'invalidtitle', 'title' ),
+ array( 'missingparam', 'title' ),
+ array( 'code' => 'bad_image_title', 'info' => "The title for {$this->getModuleName()} query must be an image" ),
+ array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
static $examples = array (
@@ -461,6 +487,6 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryBacklinks.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryBacklinks.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryBase.php b/includes/api/ApiQueryBase.php
index 7e2b1d5e..893da566 100644
--- a/includes/api/ApiQueryBase.php
+++ b/includes/api/ApiQueryBase.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -39,8 +39,8 @@ abstract class ApiQueryBase extends ApiBase {
private $mQueryModule, $mDb, $tables, $where, $fields, $options, $join_conds;
- public function __construct($query, $moduleName, $paramPrefix = '') {
- parent :: __construct($query->getMain(), $moduleName, $paramPrefix);
+ public function __construct( $query, $moduleName, $paramPrefix = '' ) {
+ parent :: __construct( $query->getMain(), $moduleName, $paramPrefix );
$this->mQueryModule = $query;
$this->mDb = null;
$this->resetQueryParams();
@@ -74,14 +74,14 @@ abstract class ApiQueryBase extends ApiBase {
* @param $alias mixed Table alias, or null for no alias. Cannot be
* used with multiple tables
*/
- protected function addTables($tables, $alias = null) {
- if (is_array($tables)) {
- if (!is_null($alias))
- ApiBase :: dieDebug(__METHOD__, 'Multiple table aliases not supported');
- $this->tables = array_merge($this->tables, $tables);
+ protected function addTables( $tables, $alias = null ) {
+ if ( is_array( $tables ) ) {
+ if ( !is_null( $alias ) )
+ ApiBase :: dieDebug( __METHOD__, 'Multiple table aliases not supported' );
+ $this->tables = array_merge( $this->tables, $tables );
} else {
- if (!is_null($alias))
- $tables = $this->getAliasedName($tables, $alias);
+ if ( !is_null( $alias ) )
+ $tables = $this->getAliasedName( $tables, $alias );
$this->tables[] = $tables;
}
}
@@ -92,8 +92,8 @@ abstract class ApiQueryBase extends ApiBase {
* @param $alias string Alias
* @return string SQL
*/
- protected function getAliasedName($table, $alias) {
- return $this->getDB()->tableName($table) . ' ' . $alias;
+ protected function getAliasedName( $table, $alias ) {
+ return $this->getDB()->tableName( $table ) . ' ' . $alias;
}
/**
@@ -105,19 +105,19 @@ abstract class ApiQueryBase extends ApiBase {
* addWhere()-style array
* @param $join_conds array JOIN conditions
*/
- protected function addJoinConds($join_conds) {
- if(!is_array($join_conds))
- ApiBase::dieDebug(__METHOD__, 'Join conditions have to be arrays');
- $this->join_conds = array_merge($this->join_conds, $join_conds);
+ protected function addJoinConds( $join_conds ) {
+ if ( !is_array( $join_conds ) )
+ ApiBase::dieDebug( __METHOD__, 'Join conditions have to be arrays' );
+ $this->join_conds = array_merge( $this->join_conds, $join_conds );
}
/**
* Add a set of fields to select to the internal array
* @param $value mixed Field name or array of field names
*/
- protected function addFields($value) {
- if (is_array($value))
- $this->fields = array_merge($this->fields, $value);
+ protected function addFields( $value ) {
+ if ( is_array( $value ) )
+ $this->fields = array_merge( $this->fields, $value );
else
$this->fields[] = $value;
}
@@ -128,9 +128,9 @@ abstract class ApiQueryBase extends ApiBase {
* @param $condition bool If false, do nothing
* @return bool $condition
*/
- protected function addFieldsIf($value, $condition) {
- if ($condition) {
- $this->addFields($value);
+ protected function addFieldsIf( $value, $condition ) {
+ if ( $condition ) {
+ $this->addFields( $value );
return true;
}
return false;
@@ -147,12 +147,12 @@ abstract class ApiQueryBase extends ApiBase {
* to "foo=bar AND baz='3' AND bla='foo'"
* @param $value mixed String or array
*/
- protected function addWhere($value) {
- if (is_array($value)) {
+ protected function addWhere( $value ) {
+ if ( is_array( $value ) ) {
// Sanity check: don't insert empty arrays,
// Database::makeList() chokes on them
if ( count( $value ) )
- $this->where = array_merge($this->where, $value);
+ $this->where = array_merge( $this->where, $value );
}
else
$this->where[] = $value;
@@ -164,9 +164,9 @@ abstract class ApiQueryBase extends ApiBase {
* @param $condition boolIf false, do nothing
* @return bool $condition
*/
- protected function addWhereIf($value, $condition) {
- if ($condition) {
- $this->addWhere($value);
+ protected function addWhereIf( $value, $condition ) {
+ if ( $condition ) {
+ $this->addWhere( $value );
return true;
}
return false;
@@ -177,7 +177,7 @@ abstract class ApiQueryBase extends ApiBase {
* @param $field string Field name
* @param $value string Value; ignored if null or empty array;
*/
- protected function addWhereFld($field, $value) {
+ protected function addWhereFld( $field, $value ) {
// Use count() to its full documented capabilities to simultaneously
// test for null, empty array or empty countable object
if ( count( $value ) )
@@ -196,24 +196,24 @@ abstract class ApiQueryBase extends ApiBase {
* is the upper boundary, otherwise it's the lower boundary
* @param $sort bool If false, don't add an ORDER BY clause
*/
- protected function addWhereRange($field, $dir, $start, $end, $sort = true) {
- $isDirNewer = ($dir === 'newer');
- $after = ($isDirNewer ? '>=' : '<=');
- $before = ($isDirNewer ? '<=' : '>=');
+ protected function addWhereRange( $field, $dir, $start, $end, $sort = true ) {
+ $isDirNewer = ( $dir === 'newer' );
+ $after = ( $isDirNewer ? '>=' : '<=' );
+ $before = ( $isDirNewer ? '<=' : '>=' );
$db = $this->getDB();
- if (!is_null($start))
- $this->addWhere($field . $after . $db->addQuotes($start));
+ if ( !is_null( $start ) )
+ $this->addWhere( $field . $after . $db->addQuotes( $start ) );
- if (!is_null($end))
- $this->addWhere($field . $before . $db->addQuotes($end));
+ if ( !is_null( $end ) )
+ $this->addWhere( $field . $before . $db->addQuotes( $end ) );
- if ($sort) {
- $order = $field . ($isDirNewer ? '' : ' DESC');
- if (!isset($this->options['ORDER BY']))
- $this->addOption('ORDER BY', $order);
+ if ( $sort ) {
+ $order = $field . ( $isDirNewer ? '' : ' DESC' );
+ if ( !isset( $this->options['ORDER BY'] ) )
+ $this->addOption( 'ORDER BY', $order );
else
- $this->addOption('ORDER BY', $this->options['ORDER BY'] . ', ' . $order);
+ $this->addOption( 'ORDER BY', $this->options['ORDER BY'] . ', ' . $order );
}
}
@@ -223,8 +223,8 @@ abstract class ApiQueryBase extends ApiBase {
* @param $name string Option name
* @param $value string Option value
*/
- protected function addOption($name, $value = null) {
- if (is_null($value))
+ protected function addOption( $name, $value = null ) {
+ if ( is_null( $value ) )
$this->options[] = $name;
else
$this->options[$name] = $value;
@@ -236,13 +236,12 @@ abstract class ApiQueryBase extends ApiBase {
* You should usually use __METHOD__ here
* @return ResultWrapper
*/
- protected function select($method) {
-
+ protected function select( $method ) {
// getDB has its own profileDBIn/Out calls
$db = $this->getDB();
$this->profileDBIn();
- $res = $db->select($this->tables, $this->fields, $this->where, $method, $this->options, $this->join_conds);
+ $res = $db->select( $this->tables, $this->fields, $this->where, $method, $this->options, $this->join_conds );
$this->profileDBOut();
return $res;
@@ -256,11 +255,11 @@ abstract class ApiQueryBase extends ApiBase {
protected function checkRowCount() {
$db = $this->getDB();
$this->profileDBIn();
- $rowcount = $db->estimateRowCount($this->tables, $this->fields, $this->where, __METHOD__, $this->options);
+ $rowcount = $db->estimateRowCount( $this->tables, $this->fields, $this->where, __METHOD__, $this->options );
$this->profileDBOut();
global $wgAPIMaxDBRows;
- if($rowcount > $wgAPIMaxDBRows)
+ if ( $rowcount > $wgAPIMaxDBRows )
return false;
return true;
}
@@ -272,8 +271,8 @@ abstract class ApiQueryBase extends ApiBase {
* @param $title Title
* @param $prefix string Module prefix
*/
- public static function addTitleInfo(&$arr, $title, $prefix='') {
- $arr[$prefix . 'ns'] = intval($title->getNamespace());
+ public static function addTitleInfo( &$arr, $title, $prefix = '' ) {
+ $arr[$prefix . 'ns'] = intval( $title->getNamespace() );
$arr[$prefix . 'title'] = $title->getPrefixedText();
}
@@ -282,7 +281,7 @@ abstract class ApiQueryBase extends ApiBase {
* using $pageSet->requestField('fieldName')
* @param $pageSet ApiPageSet
*/
- public function requestExtraData($pageSet) {
+ public function requestExtraData( $pageSet ) {
}
/**
@@ -299,12 +298,12 @@ abstract class ApiQueryBase extends ApiBase {
* @param $data array Data array à la ApiResult
* @return bool Whether the element fit in the result
*/
- protected function addPageSubItems($pageId, $data) {
+ protected function addPageSubItems( $pageId, $data ) {
$result = $this->getResult();
- $result->setIndexedTagName($data, $this->getModulePrefix());
- return $result->addValue(array('query', 'pages', intval($pageId)),
+ $result->setIndexedTagName( $data, $this->getModulePrefix() );
+ return $result->addValue( array( 'query', 'pages', intval( $pageId ) ),
$this->getModuleName(),
- $data);
+ $data );
}
/**
@@ -315,16 +314,16 @@ abstract class ApiQueryBase extends ApiBase {
* is used
* @return bool Whether the element fit in the result
*/
- protected function addPageSubItem($pageId, $item, $elemname = null) {
- if(is_null($elemname))
+ protected function addPageSubItem( $pageId, $item, $elemname = null ) {
+ if ( is_null( $elemname ) )
$elemname = $this->getModulePrefix();
$result = $this->getResult();
- $fit = $result->addValue(array('query', 'pages', $pageId,
- $this->getModuleName()), null, $item);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', 'pages', $pageId,
+ $this->getModuleName() ), null, $item );
+ if ( !$fit )
return false;
- $result->setIndexedTagName_internal(array('query', 'pages', $pageId,
- $this->getModuleName()), $elemname);
+ $result->setIndexedTagName_internal( array( 'query', 'pages', $pageId,
+ $this->getModuleName() ), $elemname );
return true;
}
@@ -333,11 +332,11 @@ abstract class ApiQueryBase extends ApiBase {
* @param $paramName string Parameter name
* @param $paramValue string Parameter value
*/
- protected function setContinueEnumParameter($paramName, $paramValue) {
- $paramName = $this->encodeParamName($paramName);
+ protected function setContinueEnumParameter( $paramName, $paramValue ) {
+ $paramName = $this->encodeParamName( $paramName );
$msg = array( $paramName => $paramValue );
$this->getResult()->disableSizeCheck();
- $this->getResult()->addValue('query-continue', $this->getModuleName(), $msg);
+ $this->getResult()->addValue( 'query-continue', $this->getModuleName(), $msg );
$this->getResult()->enableSizeCheck();
}
@@ -346,7 +345,7 @@ abstract class ApiQueryBase extends ApiBase {
* @return Database
*/
protected function getDB() {
- if (is_null($this->mDb))
+ if ( is_null( $this->mDb ) )
$this->mDb = $this->getQuery()->getDB();
return $this->mDb;
}
@@ -359,8 +358,8 @@ abstract class ApiQueryBase extends ApiBase {
* @param $groups array Query groups
* @return Database
*/
- public function selectNamedDB($name, $db, $groups) {
- $this->mDb = $this->getQuery()->getNamedDB($name, $db, $groups);
+ public function selectNamedDB( $name, $db, $groups ) {
+ $this->mDb = $this->getQuery()->getNamedDB( $name, $db, $groups );
}
/**
@@ -376,13 +375,13 @@ abstract class ApiQueryBase extends ApiBase {
* @param $title string Page title with spaces
* @return string Page title with underscores
*/
- public function titleToKey($title) {
- # Don't throw an error if we got an empty string
- if(trim($title) == '')
+ public function titleToKey( $title ) {
+ // Don't throw an error if we got an empty string
+ if ( trim( $title ) == '' )
return '';
- $t = Title::newFromText($title);
- if(!$t)
- $this->dieUsageMsg(array('invalidtitle', $title));
+ $t = Title::newFromText( $title );
+ if ( !$t )
+ $this->dieUsageMsg( array( 'invalidtitle', $title ) );
return $t->getPrefixedDbKey();
}
@@ -391,14 +390,14 @@ abstract class ApiQueryBase extends ApiBase {
* @param $key string Page title with underscores
* @return string Page title with spaces
*/
- public function keyToTitle($key) {
- # Don't throw an error if we got an empty string
- if(trim($key) == '')
+ public function keyToTitle( $key ) {
+ // Don't throw an error if we got an empty string
+ if ( trim( $key ) == '' )
return '';
- $t = Title::newFromDbKey($key);
- # This really shouldn't happen but we gotta check anyway
- if(!$t)
- $this->dieUsageMsg(array('invalidtitle', $key));
+ $t = Title::newFromDbKey( $key );
+ // This really shouldn't happen but we gotta check anyway
+ if ( !$t )
+ $this->dieUsageMsg( array( 'invalidtitle', $key ) );
return $t->getPrefixedText();
}
@@ -407,8 +406,8 @@ abstract class ApiQueryBase extends ApiBase {
* @param $titlePart string Title part with spaces
* @return string Title part with underscores
*/
- public function titlePartToKey($titlePart) {
- return substr($this->titleToKey($titlePart . 'x'), 0, -1);
+ public function titlePartToKey( $titlePart ) {
+ return substr( $this->titleToKey( $titlePart . 'x' ), 0, - 1 );
}
/**
@@ -416,8 +415,15 @@ abstract class ApiQueryBase extends ApiBase {
* @param $keyPart string Key part with spaces
* @return string Key part with underscores
*/
- public function keyPartToTitle($keyPart) {
- return substr($this->keyToTitle($keyPart . 'x'), 0, -1);
+ public function keyPartToTitle( $keyPart ) {
+ return substr( $this->keyToTitle( $keyPart . 'x' ), 0, - 1 );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'invalidtitle', 'title' ),
+ array( 'invalidtitle', 'key' ),
+ ) );
}
/**
@@ -425,7 +431,7 @@ abstract class ApiQueryBase extends ApiBase {
* @return string
*/
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiQueryBase.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryBase.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
@@ -436,8 +442,8 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
private $mIsGenerator;
- public function __construct($query, $moduleName, $paramPrefix = '') {
- parent :: __construct($query, $moduleName, $paramPrefix);
+ public function __construct( $query, $moduleName, $paramPrefix = '' ) {
+ parent :: __construct( $query, $moduleName, $paramPrefix );
$this->mIsGenerator = false;
}
@@ -454,11 +460,11 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
* @param $paramNames string Parameter name
* @return string Prefixed parameter name
*/
- public function encodeParamName($paramName) {
- if ($this->mIsGenerator)
- return 'g' . parent :: encodeParamName($paramName);
+ public function encodeParamName( $paramName ) {
+ if ( $this->mIsGenerator )
+ return 'g' . parent :: encodeParamName( $paramName );
else
- return parent :: encodeParamName($paramName);
+ return parent :: encodeParamName( $paramName );
}
/**
@@ -466,5 +472,5 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
* @param $resultPageSet ApiPageSet: All output should be appended to
* this object
*/
- public abstract function executeGenerator($resultPageSet);
+ public abstract function executeGenerator( $resultPageSet );
}
diff --git a/includes/api/ApiQueryBlocks.php b/includes/api/ApiQueryBlocks.php
index 64790037..8b321044 100644
--- a/includes/api/ApiQueryBlocks.php
+++ b/includes/api/ApiQueryBlocks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -37,157 +37,163 @@ class ApiQueryBlocks extends ApiQueryBase {
var $users;
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'bk');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'bk' );
}
public function execute() {
global $wgUser;
$params = $this->extractRequestParams();
- if(isset($params['users']) && isset($params['ip']))
- $this->dieUsage('bkusers and bkip cannot be used together', 'usersandip');
+ if ( isset( $params['users'] ) && isset( $params['ip'] ) )
+ $this->dieUsage( 'bkusers and bkip cannot be used together', 'usersandip' );
- $prop = array_flip($params['prop']);
- $fld_id = isset($prop['id']);
- $fld_user = isset($prop['user']);
- $fld_by = isset($prop['by']);
- $fld_timestamp = isset($prop['timestamp']);
- $fld_expiry = isset($prop['expiry']);
- $fld_reason = isset($prop['reason']);
- $fld_range = isset($prop['range']);
- $fld_flags = isset($prop['flags']);
+ $prop = array_flip( $params['prop'] );
+ $fld_id = isset( $prop['id'] );
+ $fld_user = isset( $prop['user'] );
+ $fld_by = isset( $prop['by'] );
+ $fld_timestamp = isset( $prop['timestamp'] );
+ $fld_expiry = isset( $prop['expiry'] );
+ $fld_reason = isset( $prop['reason'] );
+ $fld_range = isset( $prop['range'] );
+ $fld_flags = isset( $prop['flags'] );
$result = $this->getResult();
$pageSet = $this->getPageSet();
$titles = $pageSet->getTitles();
$data = array();
- $this->addTables('ipblocks');
- if($fld_id)
- $this->addFields('ipb_id');
- if($fld_user)
- $this->addFields(array('ipb_address', 'ipb_user', 'ipb_auto'));
- if($fld_by)
+ $this->addTables( 'ipblocks' );
+ $this->addFields( 'ipb_auto' );
+
+ if ( $fld_id )
+ $this->addFields( 'ipb_id' );
+ if ( $fld_user )
+ $this->addFields( array( 'ipb_address', 'ipb_user' ) );
+ if ( $fld_by )
{
- $this->addTables('user');
- $this->addFields(array('ipb_by', 'user_name'));
- $this->addWhere('user_id = ipb_by');
+ $this->addTables( 'user' );
+ $this->addFields( array( 'ipb_by', 'user_name' ) );
+ $this->addWhere( 'user_id = ipb_by' );
}
- if($fld_timestamp)
- $this->addFields('ipb_timestamp');
- if($fld_expiry)
- $this->addFields('ipb_expiry');
- if($fld_reason)
- $this->addFields('ipb_reason');
- if($fld_range)
- $this->addFields(array('ipb_range_start', 'ipb_range_end'));
- if($fld_flags)
- $this->addFields(array('ipb_auto', 'ipb_anon_only', 'ipb_create_account', 'ipb_enable_autoblock', 'ipb_block_email', 'ipb_deleted', 'ipb_allow_usertalk'));
+ if ( $fld_timestamp )
+ $this->addFields( 'ipb_timestamp' );
+ if ( $fld_expiry )
+ $this->addFields( 'ipb_expiry' );
+ if ( $fld_reason )
+ $this->addFields( 'ipb_reason' );
+ if ( $fld_range )
+ $this->addFields( array( 'ipb_range_start', 'ipb_range_end' ) );
+ if ( $fld_flags )
+ $this->addFields( array( 'ipb_anon_only', 'ipb_create_account', 'ipb_enable_autoblock', 'ipb_block_email', 'ipb_deleted', 'ipb_allow_usertalk' ) );
- $this->addOption('LIMIT', $params['limit'] + 1);
- $this->addWhereRange('ipb_timestamp', $params['dir'], $params['start'], $params['end']);
- if(isset($params['ids']))
- $this->addWhereFld('ipb_id', $params['ids']);
- if(isset($params['users']))
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $this->addWhereRange( 'ipb_timestamp', $params['dir'], $params['start'], $params['end'] );
+ if ( isset( $params['ids'] ) )
+ $this->addWhereFld( 'ipb_id', $params['ids'] );
+ if ( isset( $params['users'] ) )
{
- foreach((array)$params['users'] as $u)
- $this->prepareUsername($u);
- $this->addWhereFld('ipb_address', $this->usernames);
+ foreach ( (array)$params['users'] as $u )
+ $this->prepareUsername( $u );
+ $this->addWhereFld( 'ipb_address', $this->usernames );
+ $this->addWhereFld( 'ipb_auto', 0 );
}
- if(isset($params['ip']))
+ if ( isset( $params['ip'] ) )
{
- list($ip, $range) = IP::parseCIDR($params['ip']);
- if($ip && $range)
+ list( $ip, $range ) = IP::parseCIDR( $params['ip'] );
+ if ( $ip && $range )
{
- # We got a CIDR range
- if($range < 16)
- $this->dieUsage('CIDR ranges broader than /16 are not accepted', 'cidrtoobroad');
- $lower = wfBaseConvert($ip, 10, 16, 8, false);
- $upper = wfBaseConvert($ip + pow(2, 32 - $range) - 1, 10, 16, 8, false);
+ // We got a CIDR range
+ if ( $range < 16 )
+ $this->dieUsage( 'CIDR ranges broader than /16 are not accepted', 'cidrtoobroad' );
+ $lower = wfBaseConvert( $ip, 10, 16, 8, false );
+ $upper = wfBaseConvert( $ip + pow( 2, 32 - $range ) - 1, 10, 16, 8, false );
}
else
- $lower = $upper = IP::toHex($params['ip']);
- $prefix = substr($lower, 0, 4);
- $this->addWhere(array(
- "ipb_range_start LIKE '$prefix%'",
+ $lower = $upper = IP::toHex( $params['ip'] );
+ $prefix = substr( $lower, 0, 4 );
+
+ $db = $this->getDB();
+ $this->addWhere( array(
+ 'ipb_range_start' . $db->buildLike( $prefix, $db->anyString() ),
"ipb_range_start <= '$lower'",
- "ipb_range_end >= '$upper'"
- ));
+ "ipb_range_end >= '$upper'",
+ 'ipb_auto' => 0
+ ) );
}
- if(!$wgUser->isAllowed('hideuser'))
- $this->addWhereFld('ipb_deleted', 0);
+ if ( !$wgUser->isAllowed( 'hideuser' ) )
+ $this->addWhereFld( 'ipb_deleted', 0 );
// Purge expired entries on one in every 10 queries
- if(!mt_rand(0, 10))
+ if ( !mt_rand( 0, 10 ) )
Block::purgeExpired();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$count = 0;
- while($row = $res->fetchObject())
+ while ( $row = $res->fetchObject() )
{
- if(++$count > $params['limit'])
+ if ( ++$count > $params['limit'] )
{
// We've had enough
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->ipb_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ) );
break;
}
$block = array();
- if($fld_id)
+ if ( $fld_id )
$block['id'] = $row->ipb_id;
- if($fld_user && !$row->ipb_auto)
+ if ( $fld_user && !$row->ipb_auto )
$block['user'] = $row->ipb_address;
- if($fld_by)
+ if ( $fld_by )
$block['by'] = $row->user_name;
- if($fld_timestamp)
- $block['timestamp'] = wfTimestamp(TS_ISO_8601, $row->ipb_timestamp);
- if($fld_expiry)
- $block['expiry'] = Block::decodeExpiry($row->ipb_expiry, TS_ISO_8601);
- if($fld_reason)
+ if ( $fld_timestamp )
+ $block['timestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp );
+ if ( $fld_expiry )
+ $block['expiry'] = Block::decodeExpiry( $row->ipb_expiry, TS_ISO_8601 );
+ if ( $fld_reason )
$block['reason'] = $row->ipb_reason;
- if($fld_range)
+ if ( $fld_range && !$row->ipb_auto )
{
- $block['rangestart'] = IP::hexToQuad($row->ipb_range_start);
- $block['rangeend'] = IP::hexToQuad($row->ipb_range_end);
+ $block['rangestart'] = IP::hexToQuad( $row->ipb_range_start );
+ $block['rangeend'] = IP::hexToQuad( $row->ipb_range_end );
}
- if($fld_flags)
+ if ( $fld_flags )
{
// For clarity, these flags use the same names as their action=block counterparts
- if($row->ipb_auto)
+ if ( $row->ipb_auto )
$block['automatic'] = '';
- if($row->ipb_anon_only)
+ if ( $row->ipb_anon_only )
$block['anononly'] = '';
- if($row->ipb_create_account)
+ if ( $row->ipb_create_account )
$block['nocreate'] = '';
- if($row->ipb_enable_autoblock)
+ if ( $row->ipb_enable_autoblock )
$block['autoblock'] = '';
- if($row->ipb_block_email)
+ if ( $row->ipb_block_email )
$block['noemail'] = '';
- if($row->ipb_deleted)
+ if ( $row->ipb_deleted )
$block['hidden'] = '';
- if($row->ipb_allow_usertalk)
+ if ( $row->ipb_allow_usertalk )
$block['allowusertalk'] = '';
}
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $block);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $block );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->ipb_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ) );
break;
}
}
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'block');
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'block' );
}
- protected function prepareUsername($user)
+ protected function prepareUsername( $user )
{
- if(!$user)
- $this->dieUsage('User parameter may not be empty', 'param_user');
- $name = User::isIP($user)
+ if ( !$user )
+ $this->dieUsage( 'User parameter may not be empty', 'param_user' );
+ $name = User::isIP( $user )
? $user
- : User::getCanonicalName($user, 'valid');
- if($name === false)
- $this->dieUsage("User name {$user} is not valid", 'param_user');
+ : User::getCanonicalName( $user, 'valid' );
+ if ( $name === false )
+ $this->dieUsage( "User name {$user} is not valid", 'param_user' );
$this->usernames[] = $name;
}
@@ -246,7 +252,7 @@ class ApiQueryBlocks extends ApiQueryBase {
'ids' => 'Pipe-separated list of block IDs to list (optional)',
'users' => 'Pipe-separated list of users to search for (optional)',
'ip' => array( 'Get all blocks applying to this IP or CIDR range, including range blocks.',
- 'Cannot be used together with bkusers. CIDR ranges broader than /16 are not accepted.'),
+ 'Cannot be used together with bkusers. CIDR ranges broader than /16 are not accepted.' ),
'limit' => 'The maximum amount of blocks to list',
'prop' => 'Which properties to get',
);
@@ -255,6 +261,15 @@ class ApiQueryBlocks extends ApiQueryBase {
public function getDescription() {
return 'List all blocked users and IP addresses.';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'usersandip', 'info' => 'bkusers and bkip cannot be used together' ),
+ array( 'code' => 'cidrtoobroad', 'info' => 'CIDR ranges broader than /16 are not accepted' ),
+ array( 'code' => 'param_user', 'info' => 'User parameter may not be empty' ),
+ array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
+ ) );
+ }
protected function getExamples() {
return array ( 'api.php?action=query&list=blocks',
@@ -263,6 +278,6 @@ class ApiQueryBlocks extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryBlocks.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryBlocks.php 69578 2010-07-20 02:46:20Z tstarling $';
}
} \ No newline at end of file
diff --git a/includes/api/ApiQueryCategories.php b/includes/api/ApiQueryCategories.php
index 15e1ce13..03135052 100644
--- a/includes/api/ApiQueryCategories.php
+++ b/includes/api/ApiQueryCategories.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryCategories extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'cl');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'cl' );
}
public function execute() {
@@ -47,144 +47,134 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
- if ($this->getPageSet()->getGoodTitleCount() == 0)
+ if ( $this->getPageSet()->getGoodTitleCount() == 0 )
return; // nothing to do
$params = $this->extractRequestParams();
- $prop = $params['prop'];
- $show = array_flip((array)$params['show']);
+ $prop = array_flip( (array)$params['prop'] );
+ $show = array_flip( (array)$params['show'] );
- $this->addFields(array (
+ $this->addFields( array (
'cl_from',
'cl_to'
- ));
-
- $fld_sortkey = $fld_timestamp = false;
- if (!is_null($prop)) {
- foreach($prop as $p) {
- switch ($p) {
- case 'sortkey':
- $this->addFields('cl_sortkey');
- $fld_sortkey = true;
- break;
- case 'timestamp':
- $this->addFields('cl_timestamp');
- $fld_timestamp = true;
- break;
- default :
- ApiBase :: dieDebug(__METHOD__, "Unknown prop=$p");
- }
- }
- }
+ ) );
+
+ $this->addFieldsIf( 'cl_sortkey', isset( $prop['sortkey'] ) );
+ $this->addFieldsIf( 'cl_timestamp', isset( $prop['timestamp'] ) );
- $this->addTables('categorylinks');
- $this->addWhereFld('cl_from', array_keys($this->getPageSet()->getGoodTitles()));
- if(!is_null($params['categories']))
+ $this->addTables( 'categorylinks' );
+ $this->addWhereFld( 'cl_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+ if ( !is_null( $params['categories'] ) )
{
$cats = array();
- foreach($params['categories'] as $cat)
+ foreach ( $params['categories'] as $cat )
{
- $title = Title::newFromText($cat);
- if(!$title || $title->getNamespace() != NS_CATEGORY)
- $this->setWarning("``$cat'' is not a category");
+ $title = Title::newFromText( $cat );
+ if ( !$title || $title->getNamespace() != NS_CATEGORY )
+ $this->setWarning( "``$cat'' is not a category" );
else
$cats[] = $title->getDBkey();
}
- $this->addWhereFld('cl_to', $cats);
+ $this->addWhereFld( 'cl_to', $cats );
}
- if(!is_null($params['continue'])) {
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $clfrom = intval($cont[0]);
- $clto = $this->getDB()->strencode($this->titleToKey($cont[1]));
- $this->addWhere("cl_from > $clfrom OR ".
- "(cl_from = $clfrom AND ".
- "cl_to >= '$clto')");
+
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $clfrom = intval( $cont[0] );
+ $clto = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $this->addWhere( "cl_from > $clfrom OR " .
+ "(cl_from = $clfrom AND " .
+ "cl_to >= '$clto')" );
}
- if(isset($show['hidden']) && isset($show['!hidden']))
- $this->dieUsage("Incorrect parameter - mutually exclusive values may not be supplied", 'show');
- if(isset($show['hidden']) || isset($show['!hidden']))
+
+ if ( isset( $show['hidden'] ) && isset( $show['!hidden'] ) )
+ $this->dieUsageMsg( array( 'show' ) );
+ if ( isset( $show['hidden'] ) || isset( $show['!hidden'] ) || isset( $prop['hidden'] ) )
{
- $this->addOption('STRAIGHT_JOIN');
- $this->addTables(array('page', 'page_props'));
- $this->addJoinConds(array(
- 'page' => array('LEFT JOIN', array(
+ $this->addOption( 'STRAIGHT_JOIN' );
+ $this->addTables( array( 'page', 'page_props' ) );
+ $this->addFieldsIf( 'pp_propname', isset( $prop['hidden'] ) );
+ $this->addJoinConds( array(
+ 'page' => array( 'LEFT JOIN', array(
'page_namespace' => NS_CATEGORY,
- 'page_title = cl_to')),
- 'page_props' => array('LEFT JOIN', array(
+ 'page_title = cl_to' ) ),
+ 'page_props' => array( 'LEFT JOIN', array(
'pp_page=page_id',
- 'pp_propname' => 'hiddencat'))
- ));
- if(isset($show['hidden']))
- $this->addWhere(array('pp_propname IS NOT NULL'));
- else
- $this->addWhere(array('pp_propname IS NULL'));
+ 'pp_propname' => 'hiddencat' ) )
+ ) );
+ if ( isset( $show['hidden'] ) )
+ $this->addWhere( array( 'pp_propname IS NOT NULL' ) );
+ else if ( isset( $show['!hidden'] ) )
+ $this->addWhere( array( 'pp_propname IS NULL' ) );
}
- $this->addOption('USE INDEX', array('categorylinks' => 'cl_from'));
- # Don't order by cl_from if it's constant in the WHERE clause
- if(count($this->getPageSet()->getGoodTitles()) == 1)
- $this->addOption('ORDER BY', 'cl_to');
+ $this->addOption( 'USE INDEX', array( 'categorylinks' => 'cl_from' ) );
+ // Don't order by cl_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 )
+ $this->addOption( 'ORDER BY', 'cl_to' );
else
- $this->addOption('ORDER BY', "cl_from, cl_to");
+ $this->addOption( 'ORDER BY', "cl_from, cl_to" );
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', $row->cl_from .
- '|' . $this->keyToTitle($row->cl_to));
+ $this->setContinueEnumParameter( 'continue', $row->cl_from .
+ '|' . $this->keyToTitle( $row->cl_to ) );
break;
}
- $title = Title :: makeTitle(NS_CATEGORY, $row->cl_to);
+ $title = Title :: makeTitle( NS_CATEGORY, $row->cl_to );
$vals = array();
- ApiQueryBase :: addTitleInfo($vals, $title);
- if ($fld_sortkey)
+ ApiQueryBase :: addTitleInfo( $vals, $title );
+ if ( isset( $prop['sortkey'] ) )
$vals['sortkey'] = $row->cl_sortkey;
- if ($fld_timestamp)
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->cl_timestamp);
+ if ( isset( $prop['timestamp'] ) )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->cl_timestamp );
+ if ( isset( $prop['hidden'] ) && !is_null( $row->pp_propname ) )
+ $vals['hidden'] = '';
- $fit = $this->addPageSubItem($row->cl_from, $vals);
- if(!$fit)
+ $fit = $this->addPageSubItem( $row->cl_from, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue', $row->cl_from .
- '|' . $this->keyToTitle($row->cl_to));
+ $this->setContinueEnumParameter( 'continue', $row->cl_from .
+ '|' . $this->keyToTitle( $row->cl_to ) );
break;
}
}
} else {
$titles = array();
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', $row->cl_from .
- '|' . $this->keyToTitle($row->cl_to));
+ $this->setContinueEnumParameter( 'continue', $row->cl_from .
+ '|' . $this->keyToTitle( $row->cl_to ) );
break;
}
- $titles[] = Title :: makeTitle(NS_CATEGORY, $row->cl_to);
+ $titles[] = Title :: makeTitle( NS_CATEGORY, $row->cl_to );
}
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getAllowedParams() {
@@ -194,6 +184,7 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
ApiBase :: PARAM_TYPE => array (
'sortkey',
'timestamp',
+ 'hidden',
)
),
'show' => array(
@@ -230,6 +221,12 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
public function getDescription() {
return 'List all categories the page(s) belong to';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'show' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -241,6 +238,6 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategories.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryCategories.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryCategoryInfo.php b/includes/api/ApiQueryCategoryInfo.php
index f3d45ccf..4df2f181 100644
--- a/includes/api/ApiQueryCategoryInfo.php
+++ b/includes/api/ApiQueryCategoryInfo.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryCategoryInfo extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ci');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ci' );
}
public function execute() {
@@ -50,51 +50,53 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
$titles = $this->getPageSet()->getGoodTitles() +
$this->getPageSet()->getMissingTitles();
$cattitles = array();
- foreach($categories as $c)
+ foreach ( $categories as $c )
{
$t = $titles[$c];
- $cattitles[$c] = $t->getDBKey();
+ $cattitles[$c] = $t->getDBkey();
}
- $this->addTables(array('category', 'page', 'page_props'));
- $this->addJoinConds(array(
- 'page' => array('LEFT JOIN', array(
+ $this->addTables( array( 'category', 'page', 'page_props' ) );
+ $this->addJoinConds( array(
+ 'page' => array( 'LEFT JOIN', array(
'page_namespace' => NS_CATEGORY,
- 'page_title=cat_title')),
- 'page_props' => array('LEFT JOIN', array(
+ 'page_title=cat_title' ) ),
+ 'page_props' => array( 'LEFT JOIN', array(
'pp_page=page_id',
- 'pp_propname' => 'hiddencat')),
- ));
- $this->addFields(array('cat_title', 'cat_pages', 'cat_subcats', 'cat_files', 'pp_propname AS cat_hidden'));
- $this->addWhere(array('cat_title' => $cattitles));
- if(!is_null($params['continue']))
+ 'pp_propname' => 'hiddencat' ) ),
+ ) );
+
+ $this->addFields( array( 'cat_title', 'cat_pages', 'cat_subcats', 'cat_files', 'pp_propname AS cat_hidden' ) );
+ $this->addWhere( array( 'cat_title' => $cattitles ) );
+
+ if ( !is_null( $params['continue'] ) )
{
- $title = $this->getDB()->addQuotes($params['continue']);
- $this->addWhere("cat_title >= $title");
- }
- $this->addOption('ORDER BY', 'cat_title');
+ $title = $this->getDB()->addQuotes( $params['continue'] );
+ $this->addWhere( "cat_title >= $title" );
+ }
+ $this->addOption( 'ORDER BY', 'cat_title' );
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- $catids = array_flip($cattitles);
- while($row = $db->fetchObject($res))
+ $catids = array_flip( $cattitles );
+ while ( $row = $db->fetchObject( $res ) )
{
$vals = array();
- $vals['size'] = intval($row->cat_pages);
+ $vals['size'] = intval( $row->cat_pages );
$vals['pages'] = $row->cat_pages - $row->cat_subcats - $row->cat_files;
- $vals['files'] = intval($row->cat_files);
- $vals['subcats'] = intval($row->cat_subcats);
- if($row->cat_hidden)
+ $vals['files'] = intval( $row->cat_files );
+ $vals['subcats'] = intval( $row->cat_subcats );
+ if ( $row->cat_hidden )
$vals['hidden'] = '';
- $fit = $this->addPageSubItems($catids[$row->cat_title], $vals);
- if(!$fit)
+ $fit = $this->addPageSubItems( $catids[$row->cat_title], $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue', $row->cat_title);
+ $this->setContinueEnumParameter( 'continue', $row->cat_title );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getCacheMode( $params ) {
@@ -122,6 +124,6 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategoryInfo.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryCategoryInfo.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryCategoryMembers.php b/includes/api/ApiQueryCategoryMembers.php
index 45461abd..107f5049 100644
--- a/includes/api/ApiQueryCategoryMembers.php
+++ b/includes/api/ApiQueryCategoryMembers.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'cm');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'cm' );
}
public function execute() {
@@ -47,113 +47,128 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
- if ( !isset($params['title']) || is_null($params['title']) )
- $this->dieUsage("The cmtitle parameter is required", 'notitle');
- $categoryTitle = Title::newFromText($params['title']);
+ if ( !isset( $params['title'] ) || is_null( $params['title'] ) )
+ $this->dieUsage( "The cmtitle parameter is required", 'notitle' );
+ $categoryTitle = Title::newFromText( $params['title'] );
if ( is_null( $categoryTitle ) || $categoryTitle->getNamespace() != NS_CATEGORY )
- $this->dieUsage("The category name you entered is not valid", 'invalidcategory');
+ $this->dieUsage( "The category name you entered is not valid", 'invalidcategory' );
- $prop = array_flip($params['prop']);
- $fld_ids = isset($prop['ids']);
- $fld_title = isset($prop['title']);
- $fld_sortkey = isset($prop['sortkey']);
- $fld_timestamp = isset($prop['timestamp']);
+ $prop = array_flip( $params['prop'] );
+ $fld_ids = isset( $prop['ids'] );
+ $fld_title = isset( $prop['title'] );
+ $fld_sortkey = isset( $prop['sortkey'] );
+ $fld_timestamp = isset( $prop['timestamp'] );
- if (is_null($resultPageSet)) {
- $this->addFields(array('cl_from', 'cl_sortkey', 'page_namespace', 'page_title'));
- $this->addFieldsIf('page_id', $fld_ids);
+ if ( is_null( $resultPageSet ) ) {
+ $this->addFields( array( 'cl_from', 'cl_sortkey', 'page_namespace', 'page_title' ) );
+ $this->addFieldsIf( 'page_id', $fld_ids );
} else {
- $this->addFields($resultPageSet->getPageTableFields()); // will include page_ id, ns, title
- $this->addFields(array('cl_from', 'cl_sortkey'));
+ $this->addFields( $resultPageSet->getPageTableFields() ); // will include page_ id, ns, title
+ $this->addFields( array( 'cl_from', 'cl_sortkey' ) );
}
- $this->addFieldsIf('cl_timestamp', $fld_timestamp || $params['sort'] == 'timestamp');
- $this->addTables(array('page','categorylinks')); // must be in this order for 'USE INDEX'
+ $this->addFieldsIf( 'cl_timestamp', $fld_timestamp || $params['sort'] == 'timestamp' );
+ $this->addTables( array( 'page', 'categorylinks' ) ); // must be in this order for 'USE INDEX'
// Not needed after bug 10280 is applied to servers
- if($params['sort'] == 'timestamp')
- $this->addOption('USE INDEX', 'cl_timestamp');
+ if ( $params['sort'] == 'timestamp' )
+ $this->addOption( 'USE INDEX', 'cl_timestamp' );
else
- $this->addOption('USE INDEX', 'cl_sortkey');
-
- $this->addWhere('cl_from=page_id');
- $this->setContinuation($params['continue'], $params['dir']);
- $this->addWhereFld('cl_to', $categoryTitle->getDBkey());
- $this->addWhereFld('page_namespace', $params['namespace']);
- if($params['sort'] == 'timestamp')
- $this->addWhereRange('cl_timestamp', ($params['dir'] == 'asc' ? 'newer' : 'older'), $params['start'], $params['end']);
+ $this->addOption( 'USE INDEX', 'cl_sortkey' );
+
+ $this->addWhere( 'cl_from=page_id' );
+ $this->setContinuation( $params['continue'], $params['dir'] );
+ $this->addWhereFld( 'cl_to', $categoryTitle->getDBkey() );
+ // Scanning large datasets for rare categories sucks, and I already told
+ // how to have efficient subcategory access :-) ~~~~ (oh well, domas)
+ global $wgMiserMode;
+ $miser_ns = array();
+ if ( $wgMiserMode ) {
+ $miser_ns = $params['namespace'];
+ } else {
+ $this->addWhereFld( 'page_namespace', $params['namespace'] );
+ }
+ if ( $params['sort'] == 'timestamp' )
+ $this->addWhereRange( 'cl_timestamp', ( $params['dir'] == 'asc' ? 'newer' : 'older' ), $params['start'], $params['end'] );
else
{
- $this->addWhereRange('cl_sortkey', ($params['dir'] == 'asc' ? 'newer' : 'older'), $params['startsortkey'], $params['endsortkey']);
- $this->addWhereRange('cl_from', ($params['dir'] == 'asc' ? 'newer' : 'older'), null, null);
+ $this->addWhereRange( 'cl_sortkey', ( $params['dir'] == 'asc' ? 'newer' : 'older' ), $params['startsortkey'], $params['endsortkey'] );
+ $this->addWhereRange( 'cl_from', ( $params['dir'] == 'asc' ? 'newer' : 'older' ), null, null );
}
$limit = $params['limit'];
- $this->addOption('LIMIT', $limit +1);
+ $this->addOption( 'LIMIT', $limit + 1 );
$db = $this->getDB();
$data = array ();
$count = 0;
$lastSortKey = null;
- $res = $this->select(__METHOD__);
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// TODO: Security issue - if the user has no right to view next title, it will still be shown
- if ($params['sort'] == 'timestamp')
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->cl_timestamp));
+ if ( $params['sort'] == 'timestamp' )
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->cl_timestamp ) );
else
- $this->setContinueEnumParameter('continue', $this->getContinueStr($row, $lastSortKey));
+ $this->setContinueEnumParameter( 'continue', $this->getContinueStr( $row, $lastSortKey ) );
break;
}
- if (is_null($resultPageSet)) {
+ // Since domas won't tell anyone what he told long ago, apply
+ // cmnamespace here. This means the query may return 0 actual
+ // results, but on the other hand it could save returning 5000
+ // useless results to the client. ~~~~
+ if ( count( $miser_ns ) && !in_array( $row->page_namespace, $miser_ns ) )
+ continue;
+
+ if ( is_null( $resultPageSet ) ) {
$vals = array();
- if ($fld_ids)
- $vals['pageid'] = intval($row->page_id);
- if ($fld_title) {
- $title = Title :: makeTitle($row->page_namespace, $row->page_title);
- ApiQueryBase::addTitleInfo($vals, $title);
+ if ( $fld_ids )
+ $vals['pageid'] = intval( $row->page_id );
+ if ( $fld_title ) {
+ $title = Title :: makeTitle( $row->page_namespace, $row->page_title );
+ ApiQueryBase::addTitleInfo( $vals, $title );
}
- if ($fld_sortkey)
+ if ( $fld_sortkey )
$vals['sortkey'] = $row->cl_sortkey;
- if ($fld_timestamp)
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->cl_timestamp);
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()),
- null, $vals);
- if(!$fit)
+ if ( $fld_timestamp )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->cl_timestamp );
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ),
+ null, $vals );
+ if ( !$fit )
{
- if ($params['sort'] == 'timestamp')
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->cl_timestamp));
+ if ( $params['sort'] == 'timestamp' )
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->cl_timestamp ) );
else
- $this->setContinueEnumParameter('continue', $this->getContinueStr($row, $lastSortKey));
+ $this->setContinueEnumParameter( 'continue', $this->getContinueStr( $row, $lastSortKey ) );
break;
}
} else {
- $resultPageSet->processDbRow($row);
+ $resultPageSet->processDbRow( $row );
}
$lastSortKey = $row->cl_sortkey; // detect duplicate sortkeys
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$this->getResult()->setIndexedTagName_internal(
- array('query', $this->getModuleName()), 'cm');
+ array( 'query', $this->getModuleName() ), 'cm' );
}
}
- private function getContinueStr($row, $lastSortKey) {
+ private function getContinueStr( $row, $lastSortKey ) {
$ret = $row->cl_sortkey . '|';
- if ($row->cl_sortkey == $lastSortKey) // duplicate sort key, add cl_from
+ if ( $row->cl_sortkey == $lastSortKey ) // duplicate sort key, add cl_from
$ret .= $row->cl_from;
return $ret;
}
@@ -161,24 +176,24 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
/**
* Add DB WHERE clause to continue previous query based on 'continue' parameter
*/
- private function setContinuation($continue, $dir) {
- if (is_null($continue))
+ private function setContinuation( $continue, $dir ) {
+ if ( is_null( $continue ) )
return; // This is not a continuation request
- $pos = strrpos($continue, '|');
- $sortkey = substr($continue, 0, $pos);
- $fromstr = substr($continue, $pos + 1);
- $from = intval($fromstr);
+ $pos = strrpos( $continue, '|' );
+ $sortkey = substr( $continue, 0, $pos );
+ $fromstr = substr( $continue, $pos + 1 );
+ $from = intval( $fromstr );
- if ($from == 0 && strlen($fromstr) > 0)
- $this->dieUsage("Invalid continue param. You should pass the original value returned by the previous query", "badcontinue");
+ if ( $from == 0 && strlen( $fromstr ) > 0 )
+ $this->dieUsage( "Invalid continue param. You should pass the original value returned by the previous query", "badcontinue" );
- $encSortKey = $this->getDB()->addQuotes($sortkey);
- $encFrom = $this->getDB()->addQuotes($from);
+ $encSortKey = $this->getDB()->addQuotes( $sortkey );
+ $encFrom = $this->getDB()->addQuotes( $from );
- $op = ($dir == 'desc' ? '<' : '>');
+ $op = ( $dir == 'desc' ? '<' : '>' );
- if ($from != 0) {
+ if ( $from != 0 ) {
// Duplicate sort key continue
$this->addWhere( "cl_sortkey$op$encSortKey OR (cl_sortkey=$encSortKey AND cl_from$op=$encFrom)" );
} else {
@@ -237,7 +252,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
}
public function getParamDescription() {
- return array (
+ global $wgMiserMode;
+ $desc = array (
'title' => 'Which category to enumerate (required). Must include Category: prefix',
'prop' => 'What pieces of information to include',
'namespace' => 'Only include pages in these namespaces',
@@ -250,11 +266,27 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
'continue' => 'For large categories, give the value retured from previous query',
'limit' => 'The maximum number of pages to return.',
);
+ if ( $wgMiserMode ) {
+ $desc['namespace'] = array(
+ $desc['namespace'],
+ 'NOTE: Due to $wgMiserMode, using this may result in fewer than "limit" results',
+ 'returned before continuing; in extreme cases, zero results may be returned.',
+ );
+ }
+ return $desc;
}
public function getDescription() {
return 'List all pages in a given category';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'notitle', 'info' => 'The cmtitle parameter is required' ),
+ array( 'code' => 'invalidcategory', 'info' => 'The category name you entered is not valid' ),
+ array( 'code' => 'badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -266,6 +298,6 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategoryMembers.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryCategoryMembers.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryDeletedrevs.php b/includes/api/ApiQueryDeletedrevs.php
index bd767b1b..b26c7051 100644
--- a/includes/api/ApiQueryDeletedrevs.php
+++ b/includes/api/ApiQueryDeletedrevs.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,27 +35,28 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryDeletedrevs extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'dr');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'dr' );
}
public function execute() {
global $wgUser;
// Before doing anything at all, let's check permissions
- if(!$wgUser->isAllowed('deletedhistory'))
- $this->dieUsage('You don\'t have permission to view deleted revision information', 'permissiondenied');
+ if ( !$wgUser->isAllowed( 'deletedhistory' ) )
+ $this->dieUsage( 'You don\'t have permission to view deleted revision information', 'permissiondenied' );
$db = $this->getDB();
- $params = $this->extractRequestParams(false);
- $prop = array_flip($params['prop']);
- $fld_revid = isset($prop['revid']);
- $fld_user = isset($prop['user']);
- $fld_comment = isset($prop['comment']);
- $fld_minor = isset($prop['minor']);
- $fld_len = isset($prop['len']);
- $fld_content = isset($prop['content']);
- $fld_token = isset($prop['token']);
+ $params = $this->extractRequestParams( false );
+ $prop = array_flip( $params['prop'] );
+ $fld_revid = isset( $prop['revid'] );
+ $fld_user = isset( $prop['user'] );
+ $fld_comment = isset( $prop['comment'] );
+ $fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $fld_minor = isset( $prop['minor'] );
+ $fld_len = isset( $prop['len'] );
+ $fld_content = isset( $prop['content'] );
+ $fld_token = isset( $prop['token'] );
$result = $this->getResult();
$pageSet = $this->getPageSet();
@@ -67,36 +68,35 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
// 'user': List deleted revs by a certain user
// 'all': List all deleted revs
$mode = 'all';
- if(count($titles) > 0)
+ if ( count( $titles ) > 0 )
$mode = 'revs';
- else if(!is_null($params['user']))
+ else if ( !is_null( $params['user'] ) )
$mode = 'user';
- if(!is_null($params['user']) && !is_null($params['excludeuser']))
- $this->dieUsage('user and excludeuser cannot be used together', 'badparams');
+ if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) )
+ $this->dieUsage( 'user and excludeuser cannot be used together', 'badparams' );
- $this->addTables('archive');
- $this->addWhere('ar_deleted = 0');
- $this->addFields(array('ar_title', 'ar_namespace', 'ar_timestamp'));
- if($fld_revid)
- $this->addFields('ar_rev_id');
- if($fld_user)
- $this->addFields('ar_user_text');
- if($fld_comment)
- $this->addFields('ar_comment');
- if($fld_minor)
- $this->addFields('ar_minor_edit');
- if($fld_len)
- $this->addFields('ar_len');
- if($fld_content)
- {
- $this->addTables('text');
- $this->addFields(array('ar_text', 'ar_text_id', 'old_text', 'old_flags'));
- $this->addWhere('ar_text_id = old_id');
+ $this->addTables( 'archive' );
+ $this->addWhere( 'ar_deleted = 0' );
+ $this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp' ) );
+ if ( $fld_revid )
+ $this->addFields( 'ar_rev_id' );
+ if ( $fld_user )
+ $this->addFields( 'ar_user_text' );
+ if ( $fld_comment || $fld_parsedcomment )
+ $this->addFields( 'ar_comment' );
+ if ( $fld_minor )
+ $this->addFields( 'ar_minor_edit' );
+ if ( $fld_len )
+ $this->addFields( 'ar_len' );
+ if ( $fld_content ) {
+ $this->addTables( 'text' );
+ $this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
+ $this->addWhere( 'ar_text_id = old_id' );
// This also means stricter restrictions
- if(!$wgUser->isAllowed('undelete'))
- $this->dieUsage('You don\'t have permission to view deleted revision content', 'permissiondenied');
+ if ( !$wgUser->isAllowed( 'undelete' ) )
+ $this->dieUsage( 'You don\'t have permission to view deleted revision content', 'permissiondenied' );
}
// Check limits
$userMax = $fld_content ? ApiBase :: LIMIT_SML1 : ApiBase :: LIMIT_BIG1;
@@ -104,143 +104,136 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$limit = $params['limit'];
- if( $limit == 'max' ) {
+ if ( $limit == 'max' ) {
$limit = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
$this->getResult()->addValue( 'limits', $this->getModuleName(), $limit );
}
- $this->validateLimit('limit', $limit, 1, $userMax, $botMax);
+ $this->validateLimit( 'limit', $limit, 1, $userMax, $botMax );
- if($fld_token)
+ if ( $fld_token )
// Undelete tokens are identical for all pages, so we cache one here
$token = $wgUser->editToken();
// We need a custom WHERE clause that matches all titles.
- if($mode == 'revs')
- {
- $lb = new LinkBatch($titles);
- $where = $lb->constructSet('ar', $db);
- $this->addWhere($where);
- }
- elseif($mode == 'all')
- {
- $this->addWhereFld('ar_namespace', $params['namespace']);
- if(!is_null($params['from']))
+ if ( $mode == 'revs' ) {
+ $lb = new LinkBatch( $titles );
+ $where = $lb->constructSet( 'ar', $db );
+ $this->addWhere( $where );
+ } elseif ( $mode == 'all' ) {
+ $this->addWhereFld( 'ar_namespace', $params['namespace'] );
+ if ( !is_null( $params['from'] ) )
{
- $from = $this->getDB()->strencode($this->titleToKey($params['from']));
- $this->addWhere("ar_title >= '$from'");
+ $from = $this->getDB()->strencode( $this->titleToKey( $params['from'] ) );
+ $this->addWhere( "ar_title >= '$from'" );
}
}
- if(!is_null($params['user'])) {
- $this->addWhereFld('ar_user_text', $params['user']);
- } elseif(!is_null($params['excludeuser'])) {
- $this->addWhere('ar_user_text != ' .
- $this->getDB()->addQuotes($params['excludeuser']));
+ if ( !is_null( $params['user'] ) ) {
+ $this->addWhereFld( 'ar_user_text', $params['user'] );
+ } elseif ( !is_null( $params['excludeuser'] ) ) {
+ $this->addWhere( 'ar_user_text != ' .
+ $this->getDB()->addQuotes( $params['excludeuser'] ) );
}
- if(!is_null($params['continue']) && ($mode == 'all' || $mode == 'revs'))
+ if ( !is_null( $params['continue'] ) && ( $mode == 'all' || $mode == 'revs' ) )
{
- $cont = explode('|', $params['continue']);
- if(count($cont) != 3)
- $this->dieUsage("Invalid continue param. You should pass the original value returned by the previous query", "badcontinue");
- $ns = intval($cont[0]);
- $title = $this->getDB()->strencode($this->titleToKey($cont[1]));
- $ts = $this->getDB()->strencode($cont[2]);
- $op = ($params['dir'] == 'newer' ? '>' : '<');
- $this->addWhere("ar_namespace $op $ns OR " .
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 3 )
+ $this->dieUsage( "Invalid continue param. You should pass the original value returned by the previous query", "badcontinue" );
+ $ns = intval( $cont[0] );
+ $title = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $ts = $this->getDB()->strencode( $cont[2] );
+ $op = ( $params['dir'] == 'newer' ? '>' : '<' );
+ $this->addWhere( "ar_namespace $op $ns OR " .
"(ar_namespace = $ns AND " .
"(ar_title $op '$title' OR " .
"(ar_title = '$title' AND " .
- "ar_timestamp = '$ts')))");
+ "ar_timestamp $op= '$ts')))" );
}
- $this->addOption('LIMIT', $limit + 1);
- $this->addOption('USE INDEX', array('archive' => ($mode == 'user' ? 'usertext_timestamp' : 'name_title_timestamp')));
- if($mode == 'all')
- {
- if($params['unique'])
+ $this->addOption( 'LIMIT', $limit + 1 );
+ $this->addOption( 'USE INDEX', array( 'archive' => ( $mode == 'user' ? 'usertext_timestamp' : 'name_title_timestamp' ) ) );
+ if ( $mode == 'all' ) {
+ if ( $params['unique'] )
{
- $this->addOption('GROUP BY', 'ar_title');
- $this->addOption('ORDER BY', 'ar_title');
- }
- else
- $this->addOption('ORDER BY', 'ar_title, ar_timestamp');
- }
- else
- {
- if($mode == 'revs')
+ $this->addOption( 'GROUP BY', 'ar_title' );
+ $this->addOption( 'ORDER BY', 'ar_title' );
+ } else
+ $this->addOption( 'ORDER BY', 'ar_title, ar_timestamp' );
+ } else {
+ if ( $mode == 'revs' )
{
// Sort by ns and title in the same order as timestamp for efficiency
- $this->addWhereRange('ar_namespace', $params['dir'], null, null);
- $this->addWhereRange('ar_title', $params['dir'], null, null);
+ $this->addWhereRange( 'ar_namespace', $params['dir'], null, null );
+ $this->addWhereRange( 'ar_title', $params['dir'], null, null );
}
- $this->addWhereRange('ar_timestamp', $params['dir'], $params['start'], $params['end']);
+ $this->addWhereRange( 'ar_timestamp', $params['dir'], $params['start'], $params['end'] );
}
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$pageMap = array(); // Maps ns&title to (fake) pageid
$count = 0;
$newPageID = 0;
- while($row = $db->fetchObject($res))
+ while ( $row = $db->fetchObject( $res ) )
{
- if(++$count > $limit)
- {
+ if ( ++$count > $limit ) {
// We've had enough
- if($mode == 'all' || $mode == 'revs')
- $this->setContinueEnumParameter('continue', intval($row->ar_namespace) . '|' .
- $this->keyToTitle($row->ar_title) . '|' . $row->ar_timestamp);
+ if ( $mode == 'all' || $mode == 'revs' )
+ $this->setContinueEnumParameter( 'continue', intval( $row->ar_namespace ) . '|' .
+ $this->keyToTitle( $row->ar_title ) . '|' . $row->ar_timestamp );
else
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->ar_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->ar_timestamp ) );
break;
}
$rev = array();
- $rev['timestamp'] = wfTimestamp(TS_ISO_8601, $row->ar_timestamp);
- if($fld_revid)
- $rev['revid'] = intval($row->ar_rev_id);
- if($fld_user)
+ $rev['timestamp'] = wfTimestamp( TS_ISO_8601, $row->ar_timestamp );
+ if ( $fld_revid )
+ $rev['revid'] = intval( $row->ar_rev_id );
+ if ( $fld_user )
$rev['user'] = $row->ar_user_text;
- if($fld_comment)
+ if ( $fld_comment )
$rev['comment'] = $row->ar_comment;
- if($fld_minor)
- if($row->ar_minor_edit == 1)
- $rev['minor'] = '';
- if($fld_len)
+
+ $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
+
+ if ( $fld_parsedcomment ) {
+ global $wgUser;
+ $rev['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->ar_comment, $title );
+ }
+ if ( $fld_minor && $row->ar_minor_edit == 1 )
+ $rev['minor'] = '';
+ if ( $fld_len )
$rev['len'] = $row->ar_len;
- if($fld_content)
- ApiResult::setContent($rev, Revision::getRevisionText($row));
+ if ( $fld_content )
+ ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
- if(!isset($pageMap[$row->ar_namespace][$row->ar_title]))
- {
+ if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
$pageID = $newPageID++;
$pageMap[$row->ar_namespace][$row->ar_title] = $pageID;
- $t = Title::makeTitle($row->ar_namespace, $row->ar_title);
- $a['revisions'] = array($rev);
- $result->setIndexedTagName($a['revisions'], 'rev');
- ApiQueryBase::addTitleInfo($a, $t);
- if($fld_token)
+ $a['revisions'] = array( $rev );
+ $result->setIndexedTagName( $a['revisions'], 'rev' );
+ ApiQueryBase::addTitleInfo( $a, $title );
+ if ( $fld_token )
$a['token'] = $token;
- $fit = $result->addValue(array('query', $this->getModuleName()), $pageID, $a);
- }
- else
- {
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), $pageID, $a );
+ } else {
$pageID = $pageMap[$row->ar_namespace][$row->ar_title];
$fit = $result->addValue(
- array('query', $this->getModuleName(), $pageID, 'revisions'),
- null, $rev);
+ array( 'query', $this->getModuleName(), $pageID, 'revisions' ),
+ null, $rev );
}
- if(!$fit)
- {
- if($mode == 'all' || $mode == 'revs')
- $this->setContinueEnumParameter('continue', intval($row->ar_namespace) . '|' .
- $this->keyToTitle($row->ar_title) . '|' . $row->ar_timestamp);
+ if ( !$fit ) {
+ if ( $mode == 'all' || $mode == 'revs' )
+ $this->setContinueEnumParameter( 'continue', intval( $row->ar_namespace ) . '|' .
+ $this->keyToTitle( $row->ar_title ) . '|' . $row->ar_timestamp );
else
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->ar_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->ar_timestamp ) );
break;
}
}
- $db->freeResult($res);
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'page');
+ $db->freeResult( $res );
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'page' );
}
public function getAllowedParams() {
@@ -284,6 +277,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
'revid',
'user',
'comment',
+ 'parsedcomment',
'minor',
'len',
'content',
@@ -320,6 +314,15 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
'For instance, a parameter marked (1) only applies to mode 1 and is ignored in modes 2 and 3.',
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revision information' ),
+ array( 'code' => 'badparams', 'info' => 'user and excludeuser cannot be used together' ),
+ array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revision content' ),
+ array( 'code' => 'badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -335,6 +338,6 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDeletedrevs.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryDeletedrevs.php 69578 2010-07-20 02:46:20Z tstarling $';
}
} \ No newline at end of file
diff --git a/includes/api/ApiQueryDisabled.php b/includes/api/ApiQueryDisabled.php
index 50825464..4bd3f5fd 100644
--- a/includes/api/ApiQueryDisabled.php
+++ b/includes/api/ApiQueryDisabled.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
@@ -40,12 +40,12 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryDisabled extends ApiQueryBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
- $this->setWarning("The ``{$this->getModuleName()}'' module has been disabled.");
+ $this->setWarning( "The ``{$this->getModuleName()}'' module has been disabled." );
}
public function getAllowedParams() {
@@ -67,6 +67,6 @@ class ApiQueryDisabled extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDisabled.php 41268 2008-09-25 20:50:50Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryDisabled.php 60930 2010-01-11 15:55:52Z simetrical $';
}
}
diff --git a/includes/api/ApiQueryDuplicateFiles.php b/includes/api/ApiQueryDuplicateFiles.php
index a59ee356..ed070069 100644
--- a/includes/api/ApiQueryDuplicateFiles.php
+++ b/includes/api/ApiQueryDuplicateFiles.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'df');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'df' );
}
public function execute() {
@@ -47,11 +47,11 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
$namespaces = $this->getPageSet()->getAllTitlesByNamespace();
if ( empty( $namespaces[NS_FILE] ) ) {
@@ -59,71 +59,74 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
}
$images = $namespaces[NS_FILE];
- $this->addTables('image', 'i1');
- $this->addTables('image', 'i2');
- $this->addFields(array(
+ $this->addTables( 'image', 'i1' );
+ $this->addTables( 'image', 'i2' );
+ $this->addFields( array(
'i1.img_name AS orig_name',
'i2.img_name AS dup_name',
'i2.img_user_text AS dup_user_text',
'i2.img_timestamp AS dup_timestamp'
- ));
- $this->addWhere(array(
- 'i1.img_name' => array_keys($images),
+ ) );
+
+ $this->addWhere( array(
+ 'i1.img_name' => array_keys( $images ),
'i1.img_sha1 = i2.img_sha1',
'i1.img_name != i2.img_name',
- ));
- if(isset($params['continue']))
+ ) );
+
+ if ( isset( $params['continue'] ) )
{
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $orig = $this->getDB()->strencode($this->titleTokey($cont[0]));
- $dup = $this->getDB()->strencode($this->titleToKey($cont[1]));
- $this->addWhere("i1.img_name > '$orig' OR ".
- "(i1.img_name = '$orig' AND ".
- "i2.img_name >= '$dup')");
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $orig = $this->getDB()->strencode( $this->titleTokey( $cont[0] ) );
+ $dup = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $this->addWhere( "i1.img_name > '$orig' OR " .
+ "(i1.img_name = '$orig' AND " .
+ "i2.img_name >= '$dup')" );
}
- $this->addOption('ORDER BY', 'i1.img_name');
- $this->addOption('LIMIT', $params['limit'] + 1);
- $res = $this->select(__METHOD__);
+ $this->addOption( 'ORDER BY', 'i1.img_name' );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ $res = $this->select( __METHOD__ );
$db = $this->getDB();
$count = 0;
$titles = array();
- while($row = $db->fetchObject($res))
+ while ( $row = $db->fetchObject( $res ) )
{
- if(++$count > $params['limit'])
+ if ( ++$count > $params['limit'] )
{
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue',
- $this->keyToTitle($row->orig_name) . '|' .
- $this->keyToTitle($row->dup_name));
+ $this->setContinueEnumParameter( 'continue',
+ $this->keyToTitle( $row->orig_name ) . '|' .
+ $this->keyToTitle( $row->dup_name ) );
break;
}
- if(!is_null($resultPageSet))
- $titles[] = Title::makeTitle(NS_FILE, $row->dup_name);
+ if ( !is_null( $resultPageSet ) )
+ $titles[] = Title::makeTitle( NS_FILE, $row->dup_name );
else
{
$r = array(
'name' => $row->dup_name,
'user' => $row->dup_user_text,
- 'timestamp' => wfTimestamp(TS_ISO_8601, $row->dup_timestamp)
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $row->dup_timestamp )
);
- $fit = $this->addPageSubItem($images[$row->orig_name], $r);
- if(!$fit)
+ $fit = $this->addPageSubItem( $images[$row->orig_name], $r );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue',
- $this->keyToTitle($row->orig_name) . '|' .
- $this->keyToTitle($row->dup_name));
+ $this->setContinueEnumParameter( 'continue',
+ $this->keyToTitle( $row->orig_name ) . '|' .
+ $this->keyToTitle( $row->dup_name ) );
break;
}
}
}
- if(!is_null($resultPageSet))
- $resultPageSet->populateFromTitles($titles);
- $db->freeResult($res);
+ if ( !is_null( $resultPageSet ) )
+ $resultPageSet->populateFromTitles( $titles );
+ $db->freeResult( $res );
}
public function getAllowedParams() {
@@ -149,6 +152,12 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
public function getDescription() {
return 'List all files that are duplicates of the given file(s).';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array ( 'api.php?action=query&titles=File:Albert_Einstein_Head.jpg&prop=duplicatefiles',
@@ -157,6 +166,6 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDuplicateFiles.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryDuplicateFiles.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryExtLinksUsage.php b/includes/api/ApiQueryExtLinksUsage.php
index 08f6ab1f..0e171e44 100644
--- a/includes/api/ApiQueryExtLinksUsage.php
+++ b/includes/api/ApiQueryExtLinksUsage.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -33,8 +33,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'eu');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'eu' );
}
public function execute() {
@@ -45,11 +45,11 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
@@ -58,10 +58,10 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
// Find the right prefix
global $wgUrlProtocols;
- if($protocol && !in_array($protocol, $wgUrlProtocols))
+ if ( $protocol && !in_array( $protocol, $wgUrlProtocols ) )
{
- foreach ($wgUrlProtocols as $p) {
- if( substr( $p, 0, strlen( $protocol ) ) === $protocol ) {
+ foreach ( $wgUrlProtocols as $p ) {
+ if ( substr( $p, 0, strlen( $protocol ) ) === $protocol ) {
$protocol = $p;
break;
}
@@ -71,91 +71,92 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$protocol = null;
$db = $this->getDB();
- $this->addTables(array('page','externallinks')); // must be in this order for 'USE INDEX'
- $this->addOption('USE INDEX', 'el_index');
- $this->addWhere('page_id=el_from');
- $this->addWhereFld('page_namespace', $params['namespace']);
+ $this->addTables( array( 'page', 'externallinks' ) ); // must be in this order for 'USE INDEX'
+ $this->addOption( 'USE INDEX', 'el_index' );
+ $this->addWhere( 'page_id=el_from' );
+ $this->addWhereFld( 'page_namespace', $params['namespace'] );
- if(!is_null($query) || $query != '')
+ if ( !is_null( $query ) || $query != '' )
{
- if(is_null($protocol))
+ if ( is_null( $protocol ) )
$protocol = 'http://';
- $likeQuery = LinkFilter::makeLike($query, $protocol);
- if (!$likeQuery)
- $this->dieUsage('Invalid query', 'bad_query');
- $likeQuery = substr($likeQuery, 0, strpos($likeQuery,'%')+1);
- $this->addWhere('el_index LIKE ' . $db->addQuotes( $likeQuery ));
+ $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
+ if ( !$likeQuery )
+ $this->dieUsage( 'Invalid query', 'bad_query' );
+
+ $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
+ $this->addWhere( 'el_index ' . $db->buildLike( $likeQuery ) );
}
- else if(!is_null($protocol))
- $this->addWhere('el_index LIKE ' . $db->addQuotes( "$protocol%" ));
+ else if ( !is_null( $protocol ) )
+ $this->addWhere( 'el_index ' . $db->buildLike( "$protocol", $db->anyString() ) );
- $prop = array_flip($params['prop']);
- $fld_ids = isset($prop['ids']);
- $fld_title = isset($prop['title']);
- $fld_url = isset($prop['url']);
+ $prop = array_flip( $params['prop'] );
+ $fld_ids = isset( $prop['ids'] );
+ $fld_title = isset( $prop['title'] );
+ $fld_url = isset( $prop['url'] );
- if (is_null($resultPageSet)) {
- $this->addFields(array (
+ if ( is_null( $resultPageSet ) ) {
+ $this->addFields( array (
'page_id',
'page_namespace',
'page_title'
- ));
- $this->addFieldsIf('el_to', $fld_url);
+ ) );
+ $this->addFieldsIf( 'el_to', $fld_url );
} else {
- $this->addFields($resultPageSet->getPageTableFields());
+ $this->addFields( $resultPageSet->getPageTableFields() );
}
$limit = $params['limit'];
$offset = $params['offset'];
- $this->addOption('LIMIT', $limit +1);
- if (isset ($offset))
- $this->addOption('OFFSET', $offset);
+ $this->addOption( 'LIMIT', $limit + 1 );
+ if ( isset ( $offset ) )
+ $this->addOption( 'OFFSET', $offset );
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$result = $this->getResult();
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('offset', $offset+$limit);
+ $this->setContinueEnumParameter( 'offset', $offset + $limit );
break;
}
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$vals = array();
- if ($fld_ids)
- $vals['pageid'] = intval($row->page_id);
- if ($fld_title) {
- $title = Title :: makeTitle($row->page_namespace, $row->page_title);
- ApiQueryBase::addTitleInfo($vals, $title);
+ if ( $fld_ids )
+ $vals['pageid'] = intval( $row->page_id );
+ if ( $fld_title ) {
+ $title = Title :: makeTitle( $row->page_namespace, $row->page_title );
+ ApiQueryBase::addTitleInfo( $vals, $title );
}
- if ($fld_url)
+ if ( $fld_url )
$vals['url'] = $row->el_to;
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('offset', $offset + $count - 1);
+ $this->setContinueEnumParameter( 'offset', $offset + $count - 1 );
break;
}
} else {
- $resultPageSet->processDbRow($row);
+ $resultPageSet->processDbRow( $row );
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()),
- $this->getModulePrefix());
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ),
+ $this->getModulePrefix() );
}
}
public function getAllowedParams() {
global $wgUrlProtocols;
- $protocols = array('');
- foreach ($wgUrlProtocols as $p) {
- $protocols[] = substr($p, 0, strpos($p,':'));
+ $protocols = array( '' );
+ foreach ( $wgUrlProtocols as $p ) {
+ $protocols[] = substr( $p, 0, strpos( $p, ':' ) );
}
return array (
@@ -195,7 +196,7 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
'prop' => 'What pieces of information to include',
'offset' => 'Used for paging. Use the value returned for "continue"',
'protocol' => array( 'Protocol of the url. If empty and euquery set, the protocol is http.',
- 'Leave both this and euquery empty to list all external links'),
+ 'Leave both this and euquery empty to list all external links' ),
'query' => 'Search string without protocol. See [[Special:LinkSearch]]. Leave empty to list all external links',
'namespace' => 'The page namespace(s) to enumerate.',
'limit' => 'How many pages to return.'
@@ -205,6 +206,12 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Enumerate pages that contain a given URL';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'bad_query', 'info' => 'Invalid query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -213,6 +220,6 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryExternalLinks.php b/includes/api/ApiQueryExternalLinks.php
index 0bddd6df..a748e036 100644
--- a/includes/api/ApiQueryExternalLinks.php
+++ b/includes/api/ApiQueryExternalLinks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryExternalLinks extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'el');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'el' );
}
public function execute() {
@@ -44,41 +44,43 @@ class ApiQueryExternalLinks extends ApiQueryBase {
return;
$params = $this->extractRequestParams();
- $this->addFields(array (
+ $this->addFields( array (
'el_from',
'el_to'
- ));
+ ) );
- $this->addTables('externallinks');
- $this->addWhereFld('el_from', array_keys($this->getPageSet()->getGoodTitles()));
- # Don't order by el_from if it's constant in the WHERE clause
- if(count($this->getPageSet()->getGoodTitles()) != 1)
- $this->addOption('ORDER BY', 'el_from');
- $this->addOption('LIMIT', $params['limit'] + 1);
- if(!is_null($params['offset']))
- $this->addOption('OFFSET', $params['offset']);
+ $this->addTables( 'externallinks' );
+ $this->addWhereFld( 'el_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+
+ // Don't order by el_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) != 1 )
+ $this->addOption( 'ORDER BY', 'el_from' );
+
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ if ( !is_null( $params['offset'] ) )
+ $this->addOption( 'OFFSET', $params['offset'] );
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('offset', @$params['offset'] + $params['limit']);
+ $this->setContinueEnumParameter( 'offset', @$params['offset'] + $params['limit'] );
break;
}
$entry = array();
- ApiResult :: setContent($entry, $row->el_to);
- $fit = $this->addPageSubItem($row->el_from, $entry);
- if(!$fit)
+ ApiResult :: setContent( $entry, $row->el_to );
+ $fit = $this->addPageSubItem( $row->el_from, $entry );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('offset', @$params['offset'] + $count - 1);
+ $this->setContinueEnumParameter( 'offset', @$params['offset'] + $count - 1 );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getCacheMode( $params ) {
@@ -117,6 +119,6 @@ class ApiQueryExternalLinks extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryExternalLinks.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryExternalLinks.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryImageInfo.php b/includes/api/ApiQueryImageInfo.php
index c4c71075..3704710a 100644
--- a/includes/api/ApiQueryImageInfo.php
+++ b/includes/api/ApiQueryImageInfo.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,19 +35,19 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryImageInfo extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ii');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ii' );
}
public function execute() {
$params = $this->extractRequestParams();
- $prop = array_flip($params['prop']);
+ $prop = array_flip( $params['prop'] );
- if($params['urlheight'] != -1 && $params['urlwidth'] == -1)
- $this->dieUsage("iiurlheight cannot be used without iiurlwidth", 'iiurlwidth');
+ if ( $params['urlheight'] != - 1 && $params['urlwidth'] == - 1 )
+ $this->dieUsage( "iiurlheight cannot be used without iiurlwidth", 'iiurlwidth' );
- if ( $params['urlwidth'] != -1 ) {
+ if ( $params['urlwidth'] != - 1 ) {
$scale = array();
$scale['width'] = $params['urlwidth'];
$scale['height'] = $params['urlheight'];
@@ -57,23 +57,23 @@ class ApiQueryImageInfo extends ApiQueryBase {
$pageIds = $this->getPageSet()->getAllTitlesByNamespace();
if ( !empty( $pageIds[NS_FILE] ) ) {
- $titles = array_keys($pageIds[NS_FILE]);
- asort($titles); // Ensure the order is always the same
+ $titles = array_keys( $pageIds[NS_FILE] );
+ asort( $titles ); // Ensure the order is always the same
$skip = false;
- if(!is_null($params['continue']))
+ if ( !is_null( $params['continue'] ) )
{
$skip = true;
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the original " .
- "value returned by the previous query", "_badcontinue");
- $fromTitle = strval($cont[0]);
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the original " .
+ "value returned by the previous query", "_badcontinue" );
+ $fromTitle = strval( $cont[0] );
$fromTimestamp = $cont[1];
// Filter out any titles before $fromTitle
- foreach($titles as $key => $title)
- if($title < $fromTitle)
- unset($titles[$key]);
+ foreach ( $titles as $key => $title )
+ if ( $title < $fromTitle )
+ unset( $titles[$key] );
else
break;
}
@@ -81,90 +81,95 @@ class ApiQueryImageInfo extends ApiQueryBase {
$result = $this->getResult();
$images = RepoGroup::singleton()->findFiles( $titles );
foreach ( $images as $img ) {
+ // Skip redirects
+ if ( $img->getOriginalTitle()->isRedirect() )
+ continue;
+
$start = $skip ? $fromTimestamp : $params['start'];
$pageId = $pageIds[NS_IMAGE][ $img->getOriginalTitle()->getDBkey() ];
$fit = $result->addValue(
- array('query', 'pages', intval($pageId)),
+ array( 'query', 'pages', intval( $pageId ) ),
'imagerepository', $img->getRepoName()
);
- if(!$fit)
+ if ( !$fit )
{
- if(count($pageIds[NS_IMAGE]) == 1)
- # The user is screwed. imageinfo can't be solely
- # responsible for exceeding the limit in this case,
- # so set a query-continue that just returns the same
- # thing again. When the violating queries have been
- # out-continued, the result will get through
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $img->getTimestamp()));
+ if ( count( $pageIds[NS_IMAGE] ) == 1 )
+ // The user is screwed. imageinfo can't be solely
+ // responsible for exceeding the limit in this case,
+ // so set a query-continue that just returns the same
+ // thing again. When the violating queries have been
+ // out-continued, the result will get through
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
else
- $this->setContinueEnumParameter('continue',
- $this->getContinueStr($img));
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $img ) );
break;
}
// Get information about the current version first
// Check that the current version is within the start-end boundaries
$gotOne = false;
- if((is_null($start) || $img->getTimestamp() <= $start) &&
- (is_null($params['end']) || $img->getTimestamp() >= $params['end'])) {
+ if ( ( is_null( $start ) || $img->getTimestamp() <= $start ) &&
+ ( is_null( $params['end'] ) || $img->getTimestamp() >= $params['end'] ) ) {
$gotOne = true;
- $fit = $this->addPageSubItem($pageId,
- self::getInfo( $img, $prop, $result, $scale));
- if(!$fit)
+ $fit = $this->addPageSubItem( $pageId,
+ self::getInfo( $img, $prop, $result, $scale ) );
+ if ( !$fit )
{
- if(count($pageIds[NS_IMAGE]) == 1)
- # See the 'the user is screwed' comment above
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $img->getTimestamp()));
+ if ( count( $pageIds[NS_IMAGE] ) == 1 )
+ // See the 'the user is screwed' comment above
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
else
- $this->setContinueEnumParameter('continue',
- $this->getContinueStr($img));
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $img ) );
break;
}
}
// Now get the old revisions
// Get one more to facilitate query-continue functionality
- $count = ($gotOne ? 1 : 0);
- $oldies = $img->getHistory($params['limit'] - $count + 1, $start, $params['end']);
- foreach($oldies as $oldie) {
- if(++$count > $params['limit']) {
+ $count = ( $gotOne ? 1 : 0 );
+ $oldies = $img->getHistory( $params['limit'] - $count + 1, $start, $params['end'] );
+ foreach ( $oldies as $oldie ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the extra one which shows that there are additional pages to be had. Stop here...
// Only set a query-continue if there was only one title
- if(count($pageIds[NS_FILE]) == 1)
+ if ( count( $pageIds[NS_FILE] ) == 1 )
{
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $oldie->getTimestamp()));
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
}
break;
}
- $fit = $this->addPageSubItem($pageId,
- self::getInfo($oldie, $prop, $result));
- if(!$fit)
+ $fit = $this->addPageSubItem( $pageId,
+ self::getInfo( $oldie, $prop, $result ) );
+ if ( !$fit )
{
- if(count($pageIds[NS_IMAGE]) == 1)
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $oldie->getTimestamp()));
+ if ( count( $pageIds[NS_IMAGE] ) == 1 )
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
else
- $this->setContinueEnumParameter('continue',
- $this->getContinueStr($oldie));
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $oldie ) );
break;
}
}
- if(!$fit)
+ if ( !$fit )
break;
$skip = false;
}
- $missing = array_diff( array_keys( $pageIds[NS_FILE] ), array_keys( $images ) );
- foreach ($missing as $title) {
- $result->addValue(
- array('query', 'pages', intval($pageIds[NS_FILE][$title])),
- 'imagerepository', ''
- );
- // The above can't fail because it doesn't increase the result size
+ $data = $this->getResultData();
+ foreach ( $data['query']['pages'] as $pageid => $arr ) {
+ if ( !isset( $arr['imagerepository'] ) )
+ $result->addValue(
+ array( 'query', 'pages', $pageid ),
+ 'imagerepository', ''
+ );
+ // The above can't fail because it doesn't increase the result size
}
}
}
@@ -174,26 +179,26 @@ class ApiQueryImageInfo extends ApiQueryBase {
* @param File f The image
* @return array Result array
*/
- static function getInfo($file, $prop, $result, $scale = null) {
+ static function getInfo( $file, $prop, $result, $scale = null ) {
$vals = array();
- if( isset( $prop['timestamp'] ) )
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $file->getTimestamp());
- if( isset( $prop['user'] ) ) {
+ if ( isset( $prop['timestamp'] ) )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $file->getTimestamp() );
+ if ( isset( $prop['user'] ) ) {
$vals['user'] = $file->getUser();
- if( !$file->getUser( 'id' ) )
+ if ( !$file->getUser( 'id' ) )
$vals['anon'] = '';
}
- if( isset( $prop['size'] ) || isset( $prop['dimensions'] ) ) {
+ if ( isset( $prop['size'] ) || isset( $prop['dimensions'] ) ) {
$vals['size'] = intval( $file->getSize() );
$vals['width'] = intval( $file->getWidth() );
$vals['height'] = intval( $file->getHeight() );
}
- if( isset( $prop['url'] ) ) {
- if( !is_null( $scale ) && !$file->isOld() ) {
+ if ( isset( $prop['url'] ) ) {
+ if ( !is_null( $scale ) && !$file->isOld() ) {
$mto = $file->transform( array( 'width' => $scale['width'], 'height' => $scale['height'] ) );
- if( $mto && !$mto->isError() )
+ if ( $mto && !$mto->isError() )
{
- $vals['thumburl'] = $mto->getUrl();
+ $vals['thumburl'] = wfExpandUrl( $mto->getUrl() );
$vals['thumbwidth'] = intval( $mto->getWidth() );
$vals['thumbheight'] = intval( $mto->getHeight() );
}
@@ -201,41 +206,41 @@ class ApiQueryImageInfo extends ApiQueryBase {
$vals['url'] = $file->getFullURL();
$vals['descriptionurl'] = wfExpandUrl( $file->getDescriptionUrl() );
}
- if( isset( $prop['comment'] ) )
+ if ( isset( $prop['comment'] ) )
$vals['comment'] = $file->getDescription();
- if( isset( $prop['sha1'] ) )
+ if ( isset( $prop['sha1'] ) )
$vals['sha1'] = wfBaseConvert( $file->getSha1(), 36, 16, 40 );
- if( isset( $prop['metadata'] ) ) {
+ if ( isset( $prop['metadata'] ) ) {
$metadata = $file->getMetadata();
$vals['metadata'] = $metadata ? self::processMetaData( unserialize( $metadata ), $result ) : null;
}
- if( isset( $prop['mime'] ) )
+ if ( isset( $prop['mime'] ) )
$vals['mime'] = $file->getMimeType();
- if( isset( $prop['archivename'] ) && $file->isOld() )
+ if ( isset( $prop['archivename'] ) && $file->isOld() )
$vals['archivename'] = $file->getArchiveName();
- if( isset( $prop['bitdepth'] ) )
+ if ( isset( $prop['bitdepth'] ) )
$vals['bitdepth'] = $file->getBitDepth();
return $vals;
}
- public static function processMetaData($metadata, $result)
+ public static function processMetaData( $metadata, $result )
{
$retval = array();
if ( is_array( $metadata ) ) {
- foreach($metadata as $key => $value)
+ foreach ( $metadata as $key => $value )
{
- $r = array('name' => $key);
- if(is_array($value))
- $r['value'] = self::processMetaData($value, $result);
+ $r = array( 'name' => $key );
+ if ( is_array( $value ) )
+ $r['value'] = self::processMetaData( $value, $result );
else
$r['value'] = $value;
$retval[] = $r;
}
}
- $result->setIndexedTagName($retval, 'metadata');
+ $result->setIndexedTagName( $retval, 'metadata' );
return $retval;
}
@@ -243,7 +248,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
return 'public';
}
- private function getContinueStr($img)
+ private function getContinueStr( $img )
{
return $img->getOriginalTitle()->getText() .
'|' . $img->getTimestamp();
@@ -254,18 +259,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
'prop' => array (
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_DFLT => 'timestamp|user',
- ApiBase :: PARAM_TYPE => array (
- 'timestamp',
- 'user',
- 'comment',
- 'url',
- 'size',
- 'sha1',
- 'mime',
- 'metadata',
- 'archivename',
- 'bitdepth',
- )
+ ApiBase :: PARAM_TYPE => self::getPropertyNames()
),
'limit' => array(
ApiBase :: PARAM_TYPE => 'limit',
@@ -282,15 +276,34 @@ class ApiQueryImageInfo extends ApiQueryBase {
),
'urlwidth' => array(
ApiBase :: PARAM_TYPE => 'integer',
- ApiBase :: PARAM_DFLT => -1
+ ApiBase :: PARAM_DFLT => - 1
),
'urlheight' => array(
ApiBase :: PARAM_TYPE => 'integer',
- ApiBase :: PARAM_DFLT => -1
+ ApiBase :: PARAM_DFLT => - 1
),
'continue' => null,
);
}
+
+ /**
+ * Returns all possible parameters to iiprop
+ */
+ public static function getPropertyNames() {
+ return array (
+ 'timestamp',
+ 'user',
+ 'comment',
+ 'url',
+ 'size',
+ 'dimensions', // For backwards compatibility with Allimages
+ 'sha1',
+ 'mime',
+ 'metadata',
+ 'archivename',
+ 'bitdepth',
+ );
+ }
public function getParamDescription() {
return array (
@@ -298,8 +311,8 @@ class ApiQueryImageInfo extends ApiQueryBase {
'limit' => 'How many image revisions to return',
'start' => 'Timestamp to start listing from',
'end' => 'Timestamp to stop listing at',
- 'urlwidth' => array('If iiprop=url is set, a URL to an image scaled to this width will be returned.',
- 'Only the current version of the image can be scaled.'),
+ 'urlwidth' => array( 'If iiprop=url is set, a URL to an image scaled to this width will be returned.',
+ 'Only the current version of the image can be scaled.' ),
'urlheight' => 'Similar to iiurlwidth. Cannot be used without iiurlwidth',
'continue' => 'When more results are available, use this to continue',
);
@@ -310,6 +323,12 @@ class ApiQueryImageInfo extends ApiQueryBase {
'Returns image information and upload history'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'iiurlwidth', 'info' => 'iiurlheight cannot be used without iiurlwidth' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -319,6 +338,6 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryImageInfo.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryImageInfo.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryImages.php b/includes/api/ApiQueryImages.php
index 9dbe08a6..65df94dc 100644
--- a/includes/api/ApiQueryImages.php
+++ b/includes/api/ApiQueryImages.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,69 +35,70 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryImages extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'im');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'im' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
- if ($this->getPageSet()->getGoodTitleCount() == 0)
+ if ( $this->getPageSet()->getGoodTitleCount() == 0 )
return; // nothing to do
$params = $this->extractRequestParams();
- $this->addFields(array (
+ $this->addFields( array (
'il_from',
'il_to'
- ));
-
- $this->addTables('imagelinks');
- $this->addWhereFld('il_from', array_keys($this->getPageSet()->getGoodTitles()));
- if(!is_null($params['continue'])) {
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $ilfrom = intval($cont[0]);
- $ilto = $this->getDB()->strencode($this->titleToKey($cont[1]));
- $this->addWhere("il_from > $ilfrom OR ".
- "(il_from = $ilfrom AND ".
- "il_to >= '$ilto')");
+ ) );
+
+ $this->addTables( 'imagelinks' );
+ $this->addWhereFld( 'il_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $ilfrom = intval( $cont[0] );
+ $ilto = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $this->addWhere( "il_from > $ilfrom OR " .
+ "(il_from = $ilfrom AND " .
+ "il_to >= '$ilto')" );
}
- # Don't order by il_from if it's constant in the WHERE clause
- if(count($this->getPageSet()->getGoodTitles()) == 1)
- $this->addOption('ORDER BY', 'il_to');
+
+ // Don't order by il_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 )
+ $this->addOption( 'ORDER BY', 'il_to' );
else
- $this->addOption('ORDER BY', 'il_from, il_to');
- $this->addOption('LIMIT', $params['limit'] + 1);
+ $this->addOption( 'ORDER BY', 'il_from, il_to' );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', $row->il_from .
- '|' . $this->keyToTitle($row->il_to));
+ $this->setContinueEnumParameter( 'continue', $row->il_from .
+ '|' . $this->keyToTitle( $row->il_to ) );
break;
}
$vals = array();
- ApiQueryBase :: addTitleInfo($vals, Title :: makeTitle(NS_FILE, $row->il_to));
- $fit = $this->addPageSubItem($row->il_from, $vals);
- if(!$fit)
+ ApiQueryBase :: addTitleInfo( $vals, Title :: makeTitle( NS_FILE, $row->il_to ) );
+ $fit = $this->addPageSubItem( $row->il_from, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue', $row->il_from .
- '|' . $this->keyToTitle($row->il_to));
+ $this->setContinueEnumParameter( 'continue', $row->il_from .
+ '|' . $this->keyToTitle( $row->il_to ) );
break;
}
}
@@ -105,20 +106,20 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
$titles = array();
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', $row->il_from .
- '|' . $this->keyToTitle($row->il_to));
+ $this->setContinueEnumParameter( 'continue', $row->il_from .
+ '|' . $this->keyToTitle( $row->il_to ) );
break;
}
- $titles[] = Title :: makeTitle(NS_FILE, $row->il_to);
+ $titles[] = Title :: makeTitle( NS_FILE, $row->il_to );
}
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getCacheMode( $params ) {
@@ -148,6 +149,12 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Returns all images contained on the given page(s)';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -159,6 +166,6 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryImages.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryImages.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php
index f78450b7..b1c2963c 100644
--- a/includes/api/ApiQueryInfo.php
+++ b/includes/api/ApiQueryInfo.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -34,23 +34,24 @@ if (!defined('MEDIAWIKI')) {
* @ingroup API
*/
class ApiQueryInfo extends ApiQueryBase {
-
+
private $fld_protection = false, $fld_talkid = false,
$fld_subjectid = false, $fld_url = false,
- $fld_readable = false;
+ $fld_readable = false, $fld_watched = false,
+ $fld_preload = false;
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'in');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'in' );
}
- public function requestExtraData($pageSet) {
- $pageSet->requestField('page_restrictions');
- $pageSet->requestField('page_is_redirect');
- $pageSet->requestField('page_is_new');
- $pageSet->requestField('page_counter');
- $pageSet->requestField('page_touched');
- $pageSet->requestField('page_latest');
- $pageSet->requestField('page_len');
+ public function requestExtraData( $pageSet ) {
+ $pageSet->requestField( 'page_restrictions' );
+ $pageSet->requestField( 'page_is_redirect' );
+ $pageSet->requestField( 'page_is_new' );
+ $pageSet->requestField( 'page_counter' );
+ $pageSet->requestField( 'page_touched' );
+ $pageSet->requestField( 'page_latest' );
+ $pageSet->requestField( 'page_len' );
}
/**
@@ -61,11 +62,11 @@ class ApiQueryInfo extends ApiQueryBase {
*/
protected function getTokenFunctions() {
// Don't call the hooks twice
- if(isset($this->tokenFunctions))
+ if ( isset( $this->tokenFunctions ) )
return $this->tokenFunctions;
// If we're in JSON callback mode, no tokens can be obtained
- if(!is_null($this->getMain()->getRequest()->getVal('callback')))
+ if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) )
return array();
$this->tokenFunctions = array(
@@ -78,112 +79,112 @@ class ApiQueryInfo extends ApiQueryBase {
'email' => array( 'ApiQueryInfo', 'getEmailToken' ),
'import' => array( 'ApiQueryInfo', 'getImportToken' ),
);
- wfRunHooks('APIQueryInfoTokens', array(&$this->tokenFunctions));
+ wfRunHooks( 'APIQueryInfoTokens', array( &$this->tokenFunctions ) );
return $this->tokenFunctions;
}
- public static function getEditToken($pageid, $title)
+ public static function getEditToken( $pageid, $title )
{
// We could check for $title->userCan('edit') here,
// but that's too expensive for this purpose
// and would break caching
global $wgUser;
- if(!$wgUser->isAllowed('edit'))
+ if ( !$wgUser->isAllowed( 'edit' ) )
return false;
-
+
// The edit token is always the same, let's exploit that
static $cachedEditToken = null;
- if(!is_null($cachedEditToken))
+ if ( !is_null( $cachedEditToken ) )
return $cachedEditToken;
$cachedEditToken = $wgUser->editToken();
return $cachedEditToken;
}
-
- public static function getDeleteToken($pageid, $title)
+
+ public static function getDeleteToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->isAllowed('delete'))
- return false;
+ if ( !$wgUser->isAllowed( 'delete' ) )
+ return false;
static $cachedDeleteToken = null;
- if(!is_null($cachedDeleteToken))
+ if ( !is_null( $cachedDeleteToken ) )
return $cachedDeleteToken;
$cachedDeleteToken = $wgUser->editToken();
return $cachedDeleteToken;
}
- public static function getProtectToken($pageid, $title)
+ public static function getProtectToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->isAllowed('protect'))
+ if ( !$wgUser->isAllowed( 'protect' ) )
return false;
static $cachedProtectToken = null;
- if(!is_null($cachedProtectToken))
+ if ( !is_null( $cachedProtectToken ) )
return $cachedProtectToken;
$cachedProtectToken = $wgUser->editToken();
return $cachedProtectToken;
}
- public static function getMoveToken($pageid, $title)
+ public static function getMoveToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->isAllowed('move'))
+ if ( !$wgUser->isAllowed( 'move' ) )
return false;
static $cachedMoveToken = null;
- if(!is_null($cachedMoveToken))
+ if ( !is_null( $cachedMoveToken ) )
return $cachedMoveToken;
$cachedMoveToken = $wgUser->editToken();
return $cachedMoveToken;
}
- public static function getBlockToken($pageid, $title)
+ public static function getBlockToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->isAllowed('block'))
+ if ( !$wgUser->isAllowed( 'block' ) )
return false;
static $cachedBlockToken = null;
- if(!is_null($cachedBlockToken))
+ if ( !is_null( $cachedBlockToken ) )
return $cachedBlockToken;
$cachedBlockToken = $wgUser->editToken();
return $cachedBlockToken;
}
- public static function getUnblockToken($pageid, $title)
+ public static function getUnblockToken( $pageid, $title )
{
// Currently, this is exactly the same as the block token
- return self::getBlockToken($pageid, $title);
+ return self::getBlockToken( $pageid, $title );
}
- public static function getEmailToken($pageid, $title)
+ public static function getEmailToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->canSendEmail() || $wgUser->isBlockedFromEmailUser())
+ if ( !$wgUser->canSendEmail() || $wgUser->isBlockedFromEmailUser() )
return false;
static $cachedEmailToken = null;
- if(!is_null($cachedEmailToken))
+ if ( !is_null( $cachedEmailToken ) )
return $cachedEmailToken;
$cachedEmailToken = $wgUser->editToken();
return $cachedEmailToken;
}
-
- public static function getImportToken($pageid, $title)
+
+ public static function getImportToken( $pageid, $title )
{
global $wgUser;
- if(!$wgUser->isAllowed('import'))
+ if ( !$wgUser->isAllowed( 'import' ) )
return false;
static $cachedImportToken = null;
- if(!is_null($cachedImportToken))
+ if ( !is_null( $cachedImportToken ) )
return $cachedImportToken;
$cachedImportToken = $wgUser->editToken();
@@ -192,13 +193,15 @@ class ApiQueryInfo extends ApiQueryBase {
public function execute() {
$this->params = $this->extractRequestParams();
- if(!is_null($this->params['prop'])) {
- $prop = array_flip($this->params['prop']);
- $this->fld_protection = isset($prop['protection']);
- $this->fld_talkid = isset($prop['talkid']);
- $this->fld_subjectid = isset($prop['subjectid']);
- $this->fld_url = isset($prop['url']);
- $this->fld_readable = isset($prop['readable']);
+ if ( !is_null( $this->params['prop'] ) ) {
+ $prop = array_flip( $this->params['prop'] );
+ $this->fld_protection = isset( $prop['protection'] );
+ $this->fld_watched = isset( $prop['watched'] );
+ $this->fld_talkid = isset( $prop['talkid'] );
+ $this->fld_subjectid = isset( $prop['subjectid'] );
+ $this->fld_url = isset( $prop['url'] );
+ $this->fld_readable = isset( $prop['readable'] );
+ $this->fld_preload = isset ( $prop['preload'] );
}
$pageSet = $this->getPageSet();
@@ -207,54 +210,57 @@ class ApiQueryInfo extends ApiQueryBase {
$this->everything = $this->titles + $this->missing;
$result = $this->getResult();
- uasort($this->everything, array('Title', 'compare'));
- if(!is_null($this->params['continue']))
+ uasort( $this->everything, array( 'Title', 'compare' ) );
+ if ( !is_null( $this->params['continue'] ) )
{
// Throw away any titles we're gonna skip so they don't
// clutter queries
- $cont = explode('|', $this->params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the original " .
- "value returned by the previous query", "_badcontinue");
- $conttitle = Title::makeTitleSafe($cont[0], $cont[1]);
- foreach($this->everything as $pageid => $title)
+ $cont = explode( '|', $this->params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the original " .
+ "value returned by the previous query", "_badcontinue" );
+ $conttitle = Title::makeTitleSafe( $cont[0], $cont[1] );
+ foreach ( $this->everything as $pageid => $title )
{
- if(Title::compare($title, $conttitle) >= 0)
+ if ( Title::compare( $title, $conttitle ) >= 0 )
break;
- unset($this->titles[$pageid]);
- unset($this->missing[$pageid]);
- unset($this->everything[$pageid]);
+ unset( $this->titles[$pageid] );
+ unset( $this->missing[$pageid] );
+ unset( $this->everything[$pageid] );
}
}
- $this->pageRestrictions = $pageSet->getCustomField('page_restrictions');
- $this->pageIsRedir = $pageSet->getCustomField('page_is_redirect');
- $this->pageIsNew = $pageSet->getCustomField('page_is_new');
- $this->pageCounter = $pageSet->getCustomField('page_counter');
- $this->pageTouched = $pageSet->getCustomField('page_touched');
- $this->pageLatest = $pageSet->getCustomField('page_latest');
- $this->pageLength = $pageSet->getCustomField('page_len');
+ $this->pageRestrictions = $pageSet->getCustomField( 'page_restrictions' );
+ $this->pageIsRedir = $pageSet->getCustomField( 'page_is_redirect' );
+ $this->pageIsNew = $pageSet->getCustomField( 'page_is_new' );
+ $this->pageCounter = $pageSet->getCustomField( 'page_counter' );
+ $this->pageTouched = $pageSet->getCustomField( 'page_touched' );
+ $this->pageLatest = $pageSet->getCustomField( 'page_latest' );
+ $this->pageLength = $pageSet->getCustomField( 'page_len' );
$db = $this->getDB();
// Get protection info if requested
- if ($this->fld_protection)
+ if ( $this->fld_protection )
$this->getProtectionInfo();
+ if ( $this->fld_watched )
+ $this->getWatchedInfo();
+
// Run the talkid/subjectid query if requested
- if($this->fld_talkid || $this->fld_subjectid)
+ if ( $this->fld_talkid || $this->fld_subjectid )
$this->getTSIDs();
- foreach($this->everything as $pageid => $title) {
- $pageInfo = $this->extractPageInfo($pageid, $title);
- $fit = $result->addValue(array (
+ foreach ( $this->everything as $pageid => $title ) {
+ $pageInfo = $this->extractPageInfo( $pageid, $title );
+ $fit = $result->addValue( array (
'query',
'pages'
- ), $pageid, $pageInfo);
- if(!$fit)
+ ), $pageid, $pageInfo );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue',
+ $this->setContinueEnumParameter( 'continue',
$title->getNamespace() . '|' .
- $title->getText());
+ $title->getText() );
break;
}
}
@@ -266,52 +272,67 @@ class ApiQueryInfo extends ApiQueryBase {
* @param $title Title object
* @return array
*/
- private function extractPageInfo($pageid, $title)
+ private function extractPageInfo( $pageid, $title )
{
$pageInfo = array();
- if($title->exists())
+ if ( $title->exists() )
{
- $pageInfo['touched'] = wfTimestamp(TS_ISO_8601, $this->pageTouched[$pageid]);
- $pageInfo['lastrevid'] = intval($this->pageLatest[$pageid]);
- $pageInfo['counter'] = intval($this->pageCounter[$pageid]);
- $pageInfo['length'] = intval($this->pageLength[$pageid]);
- if ($this->pageIsRedir[$pageid])
+ $pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
+ $pageInfo['lastrevid'] = intval( $this->pageLatest[$pageid] );
+ $pageInfo['counter'] = intval( $this->pageCounter[$pageid] );
+ $pageInfo['length'] = intval( $this->pageLength[$pageid] );
+ if ( $this->pageIsRedir[$pageid] )
$pageInfo['redirect'] = '';
- if ($this->pageIsNew[$pageid])
+ if ( $this->pageIsNew[$pageid] )
$pageInfo['new'] = '';
}
- if (!is_null($this->params['token'])) {
+ if ( !is_null( $this->params['token'] ) ) {
$tokenFunctions = $this->getTokenFunctions();
- $pageInfo['starttimestamp'] = wfTimestamp(TS_ISO_8601, time());
- foreach($this->params['token'] as $t)
+ $pageInfo['starttimestamp'] = wfTimestamp( TS_ISO_8601, time() );
+ foreach ( $this->params['token'] as $t )
{
- $val = call_user_func($tokenFunctions[$t], $pageid, $title);
- if($val === false)
- $this->setWarning("Action '$t' is not allowed for the current user");
+ $val = call_user_func( $tokenFunctions[$t], $pageid, $title );
+ if ( $val === false )
+ $this->setWarning( "Action '$t' is not allowed for the current user" );
else
$pageInfo[$t . 'token'] = $val;
}
}
- if($this->fld_protection) {
+ if ( $this->fld_protection ) {
$pageInfo['protection'] = array();
- if (isset($this->protections[$title->getNamespace()][$title->getDBkey()]))
+ if ( isset( $this->protections[$title->getNamespace()][$title->getDBkey()] ) )
$pageInfo['protection'] =
$this->protections[$title->getNamespace()][$title->getDBkey()];
- $this->getResult()->setIndexedTagName($pageInfo['protection'], 'pr');
+ $this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
}
- if($this->fld_talkid && isset($this->talkids[$title->getNamespace()][$title->getDBKey()]))
- $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBKey()];
- if($this->fld_subjectid && isset($this->subjectids[$title->getNamespace()][$title->getDBKey()]))
- $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBKey()];
- if($this->fld_url) {
+
+ if ( $this->fld_watched && isset( $this->watched[$title->getNamespace()][$title->getDBkey()] ) )
+ $pageInfo['watched'] = '';
+
+ if ( $this->fld_talkid && isset( $this->talkids[$title->getNamespace()][$title->getDBkey()] ) )
+ $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBkey()];
+
+ if ( $this->fld_subjectid && isset( $this->subjectids[$title->getNamespace()][$title->getDBkey()] ) )
+ $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBkey()];
+
+ if ( $this->fld_url ) {
$pageInfo['fullurl'] = $title->getFullURL();
- $pageInfo['editurl'] = $title->getFullURL('action=edit');
+ $pageInfo['editurl'] = $title->getFullURL( 'action=edit' );
+ }
+ if ( $this->fld_readable && $title->userCanRead() )
+ $pageInfo['readable'] = '';
+
+ if ( $this->fld_preload ) {
+ if ( $title->exists() )
+ $pageInfo['preload'] = '';
+ else {
+ wfRunHooks( 'EditFormPreloadText', array( &$text, &$title ) );
+
+ $pageInfo['preload'] = $text;
+ }
}
- if($this->fld_readable)
- if($title->userCanRead())
- $pageInfo['readable'] = '';
return $pageInfo;
}
@@ -324,36 +345,37 @@ class ApiQueryInfo extends ApiQueryBase {
$db = $this->getDB();
// Get normal protections for existing titles
- if(count($this->titles))
+ if ( count( $this->titles ) )
{
- $this->addTables(array('page_restrictions', 'page'));
- $this->addWhere('page_id=pr_page');
- $this->addFields(array('pr_page', 'pr_type', 'pr_level',
+ $this->resetQueryParams();
+ $this->addTables( array( 'page_restrictions', 'page' ) );
+ $this->addWhere( 'page_id=pr_page' );
+ $this->addFields( array( 'pr_page', 'pr_type', 'pr_level',
'pr_expiry', 'pr_cascade', 'page_namespace',
- 'page_title'));
- $this->addWhereFld('pr_page', array_keys($this->titles));
+ 'page_title' ) );
+ $this->addWhereFld( 'pr_page', array_keys( $this->titles ) );
- $res = $this->select(__METHOD__);
- while($row = $db->fetchObject($res)) {
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
$a = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry($row->pr_expiry, TS_ISO_8601)
+ 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 )
);
- if($row->pr_cascade)
+ if ( $row->pr_cascade )
$a['cascade'] = '';
$this->protections[$row->page_namespace][$row->page_title][] = $a;
- # Also check old restrictions
- if($this->pageRestrictions[$row->pr_page]) {
- $restrictions = explode(':', trim($this->pageRestrictions[$row->pr_page]));
- foreach($restrictions as $restrict) {
- $temp = explode('=', trim($restrict));
- if(count($temp) == 1) {
+ // Also check old restrictions
+ if ( $this->pageRestrictions[$row->pr_page] ) {
+ $restrictions = explode( ':', trim( $this->pageRestrictions[$row->pr_page] ) );
+ foreach ( $restrictions as $restrict ) {
+ $temp = explode( '=', trim( $restrict ) );
+ if ( count( $temp ) == 1 ) {
// old old format should be treated as edit/move restriction
- $restriction = trim($temp[0]);
+ $restriction = trim( $temp[0] );
- if($restriction == '')
+ if ( $restriction == '' )
continue;
$this->protections[$row->page_namespace][$row->page_title][] = array(
'type' => 'edit',
@@ -366,8 +388,8 @@ class ApiQueryInfo extends ApiQueryBase {
'expiry' => 'infinity',
);
} else {
- $restriction = trim($temp[1]);
- if($restriction == '')
+ $restriction = trim( $temp[1] );
+ if ( $restriction == '' )
continue;
$this->protections[$row->page_namespace][$row->page_title][] = array(
'type' => $temp[0],
@@ -378,84 +400,84 @@ class ApiQueryInfo extends ApiQueryBase {
}
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
// Get protections for missing titles
- if(count($this->missing))
+ if ( count( $this->missing ) )
{
$this->resetQueryParams();
- $lb = new LinkBatch($this->missing);
- $this->addTables('protected_titles');
- $this->addFields(array('pt_title', 'pt_namespace', 'pt_create_perm', 'pt_expiry'));
- $this->addWhere($lb->constructSet('pt', $db));
- $res = $this->select(__METHOD__);
- while($row = $db->fetchObject($res)) {
+ $lb = new LinkBatch( $this->missing );
+ $this->addTables( 'protected_titles' );
+ $this->addFields( array( 'pt_title', 'pt_namespace', 'pt_create_perm', 'pt_expiry' ) );
+ $this->addWhere( $lb->constructSet( 'pt', $db ) );
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
$this->protections[$row->pt_namespace][$row->pt_title][] = array(
'type' => 'create',
'level' => $row->pt_create_perm,
- 'expiry' => Block::decodeExpiry($row->pt_expiry, TS_ISO_8601)
+ 'expiry' => Block::decodeExpiry( $row->pt_expiry, TS_ISO_8601 )
);
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
// Cascading protections
$images = $others = array();
- foreach ($this->everything as $title)
- if ($title->getNamespace() == NS_FILE)
- $images[] = $title->getDBKey();
+ foreach ( $this->everything as $title )
+ if ( $title->getNamespace() == NS_FILE )
+ $images[] = $title->getDBkey();
else
$others[] = $title;
- if (count($others)) {
+ if ( count( $others ) ) {
// Non-images: check templatelinks
- $lb = new LinkBatch($others);
+ $lb = new LinkBatch( $others );
$this->resetQueryParams();
- $this->addTables(array('page_restrictions', 'page', 'templatelinks'));
- $this->addFields(array('pr_type', 'pr_level', 'pr_expiry',
+ $this->addTables( array( 'page_restrictions', 'page', 'templatelinks' ) );
+ $this->addFields( array( 'pr_type', 'pr_level', 'pr_expiry',
'page_title', 'page_namespace',
- 'tl_title', 'tl_namespace'));
- $this->addWhere($lb->constructSet('tl', $db));
- $this->addWhere('pr_page = page_id');
- $this->addWhere('pr_page = tl_from');
- $this->addWhereFld('pr_cascade', 1);
-
- $res = $this->select(__METHOD__);
- while($row = $db->fetchObject($res)) {
- $source = Title::makeTitle($row->page_namespace, $row->page_title);
+ 'tl_title', 'tl_namespace' ) );
+ $this->addWhere( $lb->constructSet( 'tl', $db ) );
+ $this->addWhere( 'pr_page = page_id' );
+ $this->addWhere( 'pr_page = tl_from' );
+ $this->addWhereFld( 'pr_cascade', 1 );
+
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
+ $source = Title::makeTitle( $row->page_namespace, $row->page_title );
$this->protections[$row->tl_namespace][$row->tl_title][] = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry($row->pr_expiry, TS_ISO_8601),
+ 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 ),
'source' => $source->getPrefixedText()
);
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
- if (count($images)) {
+ if ( count( $images ) ) {
// Images: check imagelinks
$this->resetQueryParams();
- $this->addTables(array('page_restrictions', 'page', 'imagelinks'));
- $this->addFields(array('pr_type', 'pr_level', 'pr_expiry',
- 'page_title', 'page_namespace', 'il_to'));
- $this->addWhere('pr_page = page_id');
- $this->addWhere('pr_page = il_from');
- $this->addWhereFld('pr_cascade', 1);
- $this->addWhereFld('il_to', $images);
-
- $res = $this->select(__METHOD__);
- while($row = $db->fetchObject($res)) {
- $source = Title::makeTitle($row->page_namespace, $row->page_title);
+ $this->addTables( array( 'page_restrictions', 'page', 'imagelinks' ) );
+ $this->addFields( array( 'pr_type', 'pr_level', 'pr_expiry',
+ 'page_title', 'page_namespace', 'il_to' ) );
+ $this->addWhere( 'pr_page = page_id' );
+ $this->addWhere( 'pr_page = il_from' );
+ $this->addWhereFld( 'pr_cascade', 1 );
+ $this->addWhereFld( 'il_to', $images );
+
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
+ $source = Title::makeTitle( $row->page_namespace, $row->page_title );
$this->protections[NS_FILE][$row->il_to][] = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry($row->pr_expiry, TS_ISO_8601),
+ 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 ),
'source' => $source->getPrefixedText()
);
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
}
@@ -467,35 +489,67 @@ class ApiQueryInfo extends ApiQueryBase {
{
$getTitles = $this->talkids = $this->subjectids = array();
$db = $this->getDB();
- foreach($this->everything as $t)
+ foreach ( $this->everything as $t )
{
- if(MWNamespace::isTalk($t->getNamespace()))
+ if ( MWNamespace::isTalk( $t->getNamespace() ) )
{
- if($this->fld_subjectid)
+ if ( $this->fld_subjectid )
$getTitles[] = $t->getSubjectPage();
}
- else if($this->fld_talkid)
+ else if ( $this->fld_talkid )
$getTitles[] = $t->getTalkPage();
}
- if(!count($getTitles))
+ if ( !count( $getTitles ) )
return;
-
+
// Construct a custom WHERE clause that matches
// all titles in $getTitles
- $lb = new LinkBatch($getTitles);
+ $lb = new LinkBatch( $getTitles );
$this->resetQueryParams();
- $this->addTables('page');
- $this->addFields(array('page_title', 'page_namespace', 'page_id'));
- $this->addWhere($lb->constructSet('page', $db));
- $res = $this->select(__METHOD__);
- while($row = $db->fetchObject($res))
+ $this->addTables( 'page' );
+ $this->addFields( array( 'page_title', 'page_namespace', 'page_id' ) );
+ $this->addWhere( $lb->constructSet( 'page', $db ) );
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) )
{
- if(MWNamespace::isTalk($row->page_namespace))
- $this->talkids[MWNamespace::getSubject($row->page_namespace)][$row->page_title] =
- intval($row->page_id);
+ if ( MWNamespace::isTalk( $row->page_namespace ) )
+ $this->talkids[MWNamespace::getSubject( $row->page_namespace )][$row->page_title] =
+ intval( $row->page_id );
else
- $this->subjectids[MWNamespace::getTalk($row->page_namespace)][$row->page_title] =
- intval($row->page_id);
+ $this->subjectids[MWNamespace::getTalk( $row->page_namespace )][$row->page_title] =
+ intval( $row->page_id );
+ }
+ }
+
+ /**
+ * Get information about watched status and put it in $this->watched
+ */
+ private function getWatchedInfo()
+ {
+ global $wgUser;
+
+ if ( $wgUser->isAnon() || count( $this->titles ) == 0 )
+ return;
+
+ $this->watched = array();
+ $db = $this->getDB();
+
+ $lb = new LinkBatch( $this->titles );
+
+ $this->resetQueryParams();
+ $this->addTables( array( 'page', 'watchlist' ) );
+ $this->addFields( array( 'page_title', 'page_namespace' ) );
+ $this->addWhere( array(
+ $lb->constructSet( 'page', $db ),
+ 'wl_namespace=page_namespace',
+ 'wl_title=page_title',
+ 'wl_user' => $wgUser->getID()
+ ) );
+
+ $res = $this->select( __METHOD__ );
+
+ while ( $row = $db->fetchObject( $res ) ) {
+ $this->watched[$row->page_namespace][$row->page_title] = true;
}
}
@@ -505,6 +559,7 @@ class ApiQueryInfo extends ApiQueryBase {
'talkid',
'subjectid',
'url',
+ 'preload',
);
if ( !is_null( $params['prop'] ) ) {
foreach ( $params['prop'] as $prop ) {
@@ -522,21 +577,23 @@ class ApiQueryInfo extends ApiQueryBase {
public function getAllowedParams() {
return array (
'prop' => array (
- ApiBase :: PARAM_DFLT => NULL,
+ ApiBase :: PARAM_DFLT => null,
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_TYPE => array (
'protection',
'talkid',
+ 'watched', # private
'subjectid',
'url',
'readable', # private
+ 'preload'
// If you add more properties here, please consider whether they
// need to be added to getCacheMode()
- )),
+ ) ),
'token' => array (
- ApiBase :: PARAM_DFLT => NULL,
+ ApiBase :: PARAM_DFLT => null,
ApiBase :: PARAM_ISMULTI => true,
- ApiBase :: PARAM_TYPE => array_keys($this->getTokenFunctions())
+ ApiBase :: PARAM_TYPE => array_keys( $this->getTokenFunctions() )
),
'continue' => null,
);
@@ -548,7 +605,11 @@ class ApiQueryInfo extends ApiQueryBase {
'Which additional properties to get:',
' protection - List the protection level of each page',
' talkid - The page ID of the talk page for each non-talk page',
- ' subjectid - The page ID of the parent page for each talk page'
+ ' watched - List the watched status of each page',
+ ' subjectid - The page ID of the parent page for each talk page',
+ ' url - Gives a full URL to the page, and also an edit URL',
+ ' readable - Whether the user can read this page',
+ ' preload - Gives the text returned by EditFormPreloadText'
),
'token' => 'Request a token to perform a data-modifying action on a page',
'continue' => 'When more results are available, use this to continue',
@@ -558,6 +619,12 @@ class ApiQueryInfo extends ApiQueryBase {
public function getDescription() {
return 'Get basic page information such as namespace, title, last touched date, ...';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -567,6 +634,6 @@ class ApiQueryInfo extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryInfo.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryInfo.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryLangLinks.php b/includes/api/ApiQueryLangLinks.php
index 35f7e67c..9330e380 100644
--- a/includes/api/ApiQueryLangLinks.php
+++ b/includes/api/ApiQueryLangLinks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryLangLinks extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'll');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'll' );
}
public function execute() {
@@ -44,52 +44,53 @@ class ApiQueryLangLinks extends ApiQueryBase {
return;
$params = $this->extractRequestParams();
- $this->addFields(array (
+ $this->addFields( array (
'll_from',
'll_lang',
'll_title'
- ));
+ ) );
- $this->addTables('langlinks');
- $this->addWhereFld('ll_from', array_keys($this->getPageSet()->getGoodTitles()));
- if(!is_null($params['continue'])) {
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $llfrom = intval($cont[0]);
- $lllang = $this->getDB()->strencode($cont[1]);
- $this->addWhere("ll_from > $llfrom OR ".
- "(ll_from = $llfrom AND ".
- "ll_lang >= '$lllang')");
+ $this->addTables( 'langlinks' );
+ $this->addWhereFld( 'll_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $llfrom = intval( $cont[0] );
+ $lllang = $this->getDB()->strencode( $cont[1] );
+ $this->addWhere( "ll_from > $llfrom OR " .
+ "(ll_from = $llfrom AND " .
+ "ll_lang >= '$lllang')" );
}
- # Don't order by ll_from if it's constant in the WHERE clause
- if(count($this->getPageSet()->getGoodTitles()) == 1)
- $this->addOption('ORDER BY', 'll_lang');
+
+ // Don't order by ll_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 )
+ $this->addOption( 'ORDER BY', 'll_lang' );
else
- $this->addOption('ORDER BY', 'll_from, ll_lang');
- $this->addOption('LIMIT', $params['limit'] + 1);
- $res = $this->select(__METHOD__);
+ $this->addOption( 'ORDER BY', 'll_from, ll_lang' );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $res = $this->select( __METHOD__ );
$count = 0;
$db = $this->getDB();
- while ($row = $db->fetchObject($res)) {
- if (++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', "{$row->ll_from}|{$row->ll_lang}");
+ $this->setContinueEnumParameter( 'continue', "{$row->ll_from}|{$row->ll_lang}" );
break;
}
- $entry = array('lang' => $row->ll_lang);
- ApiResult :: setContent($entry, $row->ll_title);
- $fit = $this->addPageSubItem($row->ll_from, $entry);
- if(!$fit)
+ $entry = array( 'lang' => $row->ll_lang );
+ ApiResult :: setContent( $entry, $row->ll_title );
+ $fit = $this->addPageSubItem( $row->ll_from, $entry );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue', "{$row->ll_from}|{$row->ll_lang}");
+ $this->setContinueEnumParameter( 'continue', "{$row->ll_from}|{$row->ll_lang}" );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getCacheMode( $params ) {
@@ -119,6 +120,12 @@ class ApiQueryLangLinks extends ApiQueryBase {
public function getDescription() {
return 'Returns all interlanguage links from the given page(s)';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -128,6 +135,6 @@ class ApiQueryLangLinks extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLangLinks.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryLangLinks.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryLinks.php b/includes/api/ApiQueryLinks.php
index 94b7980c..52dfd591 100644
--- a/includes/api/ApiQueryLinks.php
+++ b/includes/api/ApiQueryLinks.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiQueryBase.php");
+ require_once ( "ApiQueryBase.php" );
}
/**
@@ -40,9 +40,9 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
private $table, $prefix, $description;
- public function __construct($query, $moduleName) {
+ public function __construct( $query, $moduleName ) {
- switch ($moduleName) {
+ switch ( $moduleName ) {
case self::LINKS :
$this->table = 'pagelinks';
$this->prefix = 'pl';
@@ -54,10 +54,10 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
$this->description = 'template';
break;
default :
- ApiBase :: dieDebug(__METHOD__, 'Unknown module name');
+ ApiBase :: dieDebug( __METHOD__, 'Unknown module name' );
}
- parent :: __construct($query, $moduleName, $this->prefix);
+ parent :: __construct( $query, $moduleName, $this->prefix );
}
public function execute() {
@@ -68,101 +68,101 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
return 'public';
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
- if ($this->getPageSet()->getGoodTitleCount() == 0)
+ if ( $this->getPageSet()->getGoodTitleCount() == 0 )
return; // nothing to do
$params = $this->extractRequestParams();
- $this->addFields(array (
+ $this->addFields( array (
$this->prefix . '_from AS pl_from',
$this->prefix . '_namespace AS pl_namespace',
$this->prefix . '_title AS pl_title'
- ));
-
- $this->addTables($this->table);
- $this->addWhereFld($this->prefix . '_from', array_keys($this->getPageSet()->getGoodTitles()));
- $this->addWhereFld($this->prefix . '_namespace', $params['namespace']);
-
- if(!is_null($params['continue'])) {
- $cont = explode('|', $params['continue']);
- if(count($cont) != 3)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $plfrom = intval($cont[0]);
- $plns = intval($cont[1]);
- $pltitle = $this->getDB()->strencode($this->titleToKey($cont[2]));
- $this->addWhere("{$this->prefix}_from > $plfrom OR ".
- "({$this->prefix}_from = $plfrom AND ".
- "({$this->prefix}_namespace > $plns OR ".
- "({$this->prefix}_namespace = $plns AND ".
- "{$this->prefix}_title >= '$pltitle')))");
+ ) );
+
+ $this->addTables( $this->table );
+ $this->addWhereFld( $this->prefix . '_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+ $this->addWhereFld( $this->prefix . '_namespace', $params['namespace'] );
+
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 3 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $plfrom = intval( $cont[0] );
+ $plns = intval( $cont[1] );
+ $pltitle = $this->getDB()->strencode( $this->titleToKey( $cont[2] ) );
+ $this->addWhere( "{$this->prefix}_from > $plfrom OR " .
+ "({$this->prefix}_from = $plfrom AND " .
+ "({$this->prefix}_namespace > $plns OR " .
+ "({$this->prefix}_namespace = $plns AND " .
+ "{$this->prefix}_title >= '$pltitle')))" );
}
- # Here's some MySQL craziness going on: if you use WHERE foo='bar'
- # and later ORDER BY foo MySQL doesn't notice the ORDER BY is pointless
- # but instead goes and filesorts, because the index for foo was used
- # already. To work around this, we drop constant fields in the WHERE
- # clause from the ORDER BY clause
+ // Here's some MySQL craziness going on: if you use WHERE foo='bar'
+ // and later ORDER BY foo MySQL doesn't notice the ORDER BY is pointless
+ // but instead goes and filesorts, because the index for foo was used
+ // already. To work around this, we drop constant fields in the WHERE
+ // clause from the ORDER BY clause
$order = array();
- if(count($this->getPageSet()->getGoodTitles()) != 1)
+ if ( count( $this->getPageSet()->getGoodTitles() ) != 1 )
$order[] = "{$this->prefix}_from";
- if(count($params['namespace']) != 1)
+ if ( count( $params['namespace'] ) != 1 )
$order[] = "{$this->prefix}_namespace";
+
$order[] = "{$this->prefix}_title";
- $this->addOption('ORDER BY', implode(", ", $order));
- $this->addOption('USE INDEX', "{$this->prefix}_from");
- $this->addOption('LIMIT', $params['limit'] + 1);
+ $this->addOption( 'ORDER BY', implode( ", ", $order ) );
+ $this->addOption( 'USE INDEX', "{$this->prefix}_from" );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if(++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue',
+ $this->setContinueEnumParameter( 'continue',
"{$row->pl_from}|{$row->pl_namespace}|" .
- $this->keyToTitle($row->pl_title));
+ $this->keyToTitle( $row->pl_title ) );
break;
}
$vals = array();
- ApiQueryBase :: addTitleInfo($vals, Title :: makeTitle($row->pl_namespace, $row->pl_title));
- $fit = $this->addPageSubItem($row->pl_from, $vals);
- if(!$fit)
+ ApiQueryBase :: addTitleInfo( $vals, Title :: makeTitle( $row->pl_namespace, $row->pl_title ) );
+ $fit = $this->addPageSubItem( $row->pl_from, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue',
+ $this->setContinueEnumParameter( 'continue',
"{$row->pl_from}|{$row->pl_namespace}|" .
- $this->keyToTitle($row->pl_title));
+ $this->keyToTitle( $row->pl_title ) );
break;
}
}
} else {
-
$titles = array();
$count = 0;
- while ($row = $db->fetchObject($res)) {
- if(++$count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue',
+ $this->setContinueEnumParameter( 'continue',
"{$row->pl_from}|{$row->pl_namespace}|" .
- $this->keyToTitle($row->pl_title));
+ $this->keyToTitle( $row->pl_title ) );
break;
}
- $titles[] = Title :: makeTitle($row->pl_namespace, $row->pl_title);
+ $titles[] = Title :: makeTitle( $row->pl_namespace, $row->pl_title );
}
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
public function getAllowedParams()
@@ -208,6 +208,6 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLinks.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryLinks.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php
index 7afed844..bdeee952 100644
--- a/includes/api/ApiQueryLogEvents.php
+++ b/includes/api/ApiQueryLogEvents.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,136 +35,153 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryLogEvents extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'le');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'le' );
}
public function execute() {
$params = $this->extractRequestParams();
$db = $this->getDB();
-
- $prop = $params['prop'];
- $this->fld_ids = in_array('ids', $prop);
- $this->fld_title = in_array('title', $prop);
- $this->fld_type = in_array('type', $prop);
- $this->fld_user = in_array('user', $prop);
- $this->fld_timestamp = in_array('timestamp', $prop);
- $this->fld_comment = in_array('comment', $prop);
- $this->fld_details = in_array('details', $prop);
-
- list($tbl_logging, $tbl_page, $tbl_user) = $db->tableNamesN('logging', 'page', 'user');
-
- $hideLogs = LogEventsList::getExcludeClause($db);
- if($hideLogs !== false)
- $this->addWhere($hideLogs);
+
+ $prop = array_flip( $params['prop'] );
+
+ $this->fld_ids = isset( $prop['ids'] );
+ $this->fld_title = isset( $prop['title'] );
+ $this->fld_type = isset( $prop['type'] );
+ $this->fld_user = isset( $prop['user'] );
+ $this->fld_timestamp = isset( $prop['timestamp'] );
+ $this->fld_comment = isset( $prop['comment'] );
+ $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $this->fld_details = isset( $prop['details'] );
+ $this->fld_tags = isset( $prop['tags'] );
+
+ list( $tbl_logging, $tbl_page, $tbl_user ) = $db->tableNamesN( 'logging', 'page', 'user' );
+
+ $hideLogs = LogEventsList::getExcludeClause( $db );
+ if ( $hideLogs !== false )
+ $this->addWhere( $hideLogs );
// Order is significant here
- $this->addTables(array('logging', 'user', 'page'));
- $this->addOption('STRAIGHT_JOIN');
- $this->addJoinConds(array(
- 'user' => array('JOIN',
- 'user_id=log_user'),
- 'page' => array('LEFT JOIN',
+ $this->addTables( array( 'logging', 'user', 'page' ) );
+ $this->addOption( 'STRAIGHT_JOIN' );
+ $this->addJoinConds( array(
+ 'user' => array( 'JOIN',
+ 'user_id=log_user' ),
+ 'page' => array( 'LEFT JOIN',
array( 'log_namespace=page_namespace',
- 'log_title=page_title'))));
- $index = 'times'; // default, may change
+ 'log_title=page_title' ) ) ) );
+ $index = array( 'logging' => 'times' ); // default, may change
- $this->addFields(array (
+ $this->addFields( array (
'log_type',
'log_action',
'log_timestamp',
'log_deleted',
- ));
-
- $this->addFieldsIf('log_id', $this->fld_ids);
- $this->addFieldsIf('page_id', $this->fld_ids);
- $this->addFieldsIf('log_user', $this->fld_user);
- $this->addFieldsIf('user_name', $this->fld_user);
- $this->addFieldsIf('log_namespace', $this->fld_title);
- $this->addFieldsIf('log_title', $this->fld_title);
- $this->addFieldsIf('log_comment', $this->fld_comment);
- $this->addFieldsIf('log_params', $this->fld_details);
+ ) );
+
+ $this->addFieldsIf( 'log_id', $this->fld_ids );
+ $this->addFieldsIf( 'page_id', $this->fld_ids );
+ $this->addFieldsIf( 'log_user', $this->fld_user );
+ $this->addFieldsIf( 'user_name', $this->fld_user );
+ $this->addFieldsIf( 'log_namespace', $this->fld_title );
+ $this->addFieldsIf( 'log_title', $this->fld_title );
+ $this->addFieldsIf( 'log_comment', $this->fld_comment || $this->fld_parsedcomment );
+ $this->addFieldsIf( 'log_params', $this->fld_details );
+
+ if ( $this->fld_tags ) {
+ $this->addTables( 'tag_summary' );
+ $this->addJoinConds( array( 'tag_summary' => array( 'LEFT JOIN', 'log_id=ts_log_id' ) ) );
+ $this->addFields( 'ts_tags' );
+ }
+
+ if ( !is_null( $params['tag'] ) ) {
+ $this->addTables( 'change_tag' );
+ $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'log_id=ct_log_id' ) ) ) );
+ $this->addWhereFld( 'ct_tag', $params['tag'] );
+ global $wgOldChangeTagsIndex;
+ $index['change_tag'] = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
+ }
- if( !is_null($params['type']) ) {
- $this->addWhereFld('log_type', $params['type']);
- $index = 'type_time';
+ if ( !is_null( $params['type'] ) ) {
+ $this->addWhereFld( 'log_type', $params['type'] );
+ $index['logging'] = 'type_time';
}
- $this->addWhereRange('log_timestamp', $params['dir'], $params['start'], $params['end']);
+ $this->addWhereRange( 'log_timestamp', $params['dir'], $params['start'], $params['end'] );
$limit = $params['limit'];
- $this->addOption('LIMIT', $limit +1);
+ $this->addOption( 'LIMIT', $limit + 1 );
$user = $params['user'];
- if (!is_null($user)) {
- $userid = User::idFromName($user);
- if (!$userid)
- $this->dieUsage("User name $user not found", 'param_user');
- $this->addWhereFld('log_user', $userid);
- $index = 'user_time';
+ if ( !is_null( $user ) ) {
+ $userid = User::idFromName( $user );
+ if ( !$userid )
+ $this->dieUsage( "User name $user not found", 'param_user' );
+ $this->addWhereFld( 'log_user', $userid );
+ $index['logging'] = 'user_time';
}
$title = $params['title'];
- if (!is_null($title)) {
- $titleObj = Title :: newFromText($title);
- if (is_null($titleObj))
- $this->dieUsage("Bad title value '$title'", 'param_title');
- $this->addWhereFld('log_namespace', $titleObj->getNamespace());
- $this->addWhereFld('log_title', $titleObj->getDBkey());
+ if ( !is_null( $title ) ) {
+ $titleObj = Title :: newFromText( $title );
+ if ( is_null( $titleObj ) )
+ $this->dieUsage( "Bad title value '$title'", 'param_title' );
+ $this->addWhereFld( 'log_namespace', $titleObj->getNamespace() );
+ $this->addWhereFld( 'log_title', $titleObj->getDBkey() );
// Use the title index in preference to the user index if there is a conflict
- $index = is_null($user) ? 'page_time' : array('page_time','user_time');
+ $index['logging'] = is_null( $user ) ? 'page_time' : array( 'page_time', 'user_time' );
}
- $this->addOption( 'USE INDEX', array( 'logging' => $index ) );
+ $this->addOption( 'USE INDEX', $index );
// Paranoia: avoid brute force searches (bug 17342)
- if (!is_null($title)) {
- $this->addWhere('log_deleted & ' . LogPage::DELETED_ACTION . ' = 0');
+ if ( !is_null( $title ) ) {
+ $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0' );
}
- if (!is_null($user)) {
- $this->addWhere('log_deleted & ' . LogPage::DELETED_USER . ' = 0');
+ if ( !is_null( $user ) ) {
+ $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0' );
}
$count = 0;
- $res = $this->select(__METHOD__);
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $limit) {
+ $res = $this->select( __METHOD__ );
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->log_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->log_timestamp ) );
break;
}
- $vals = $this->extractRowInfo($row);
- if(!$vals)
+ $vals = $this->extractRowInfo( $row );
+ if ( !$vals )
continue;
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->log_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->log_timestamp ) );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'item');
+ $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'item' );
}
- public static function addLogParams($result, &$vals, $params, $type, $ts) {
- $params = explode("\n", $params);
- switch ($type) {
+ public static function addLogParams( $result, &$vals, $params, $type, $ts ) {
+ $params = explode( "\n", $params );
+ switch ( $type ) {
case 'move':
- if (isset ($params[0])) {
- $title = Title :: newFromText($params[0]);
- if ($title) {
+ if ( isset ( $params[0] ) ) {
+ $title = Title :: newFromText( $params[0] );
+ if ( $title ) {
$vals2 = array();
- ApiQueryBase :: addTitleInfo($vals2, $title, "new_");
+ ApiQueryBase :: addTitleInfo( $vals2, $title, "new_" );
$vals[$type] = $vals2;
}
}
- if (isset ($params[1]) && $params[1]) {
+ if ( isset ( $params[1] ) && $params[1] ) {
$vals[$type]['suppressedredirect'] = '';
- }
+ }
$params = null;
break;
case 'patrol':
@@ -182,77 +199,99 @@ class ApiQueryLogEvents extends ApiQueryBase {
case 'block':
$vals2 = array();
list( $vals2['duration'], $vals2['flags'] ) = $params;
- $vals2['expiry'] = wfTimestamp(TS_ISO_8601,
- strtotime($params[0], wfTimestamp(TS_UNIX, $ts)));
+ $vals2['expiry'] = wfTimestamp( TS_ISO_8601,
+ strtotime( $params[0], wfTimestamp( TS_UNIX, $ts ) ) );
$vals[$type] = $vals2;
$params = null;
break;
}
- if (!is_null($params)) {
- $result->setIndexedTagName($params, 'param');
- $vals = array_merge($vals, $params);
+ if ( !is_null( $params ) ) {
+ $result->setIndexedTagName( $params, 'param' );
+ $vals = array_merge( $vals, $params );
}
return $vals;
}
- private function extractRowInfo($row) {
+ private function extractRowInfo( $row ) {
$vals = array();
- if ($this->fld_ids) {
- $vals['logid'] = intval($row->log_id);
- $vals['pageid'] = intval($row->page_id);
+ if ( $this->fld_ids ) {
+ $vals['logid'] = intval( $row->log_id );
+ $vals['pageid'] = intval( $row->page_id );
}
- if ($this->fld_title) {
- if (LogEventsList::isDeleted($row, LogPage::DELETED_ACTION)) {
+ $title = Title::makeTitle( $row->log_namespace, $row->log_title );
+
+ if ( $this->fld_title ) {
+ if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
$vals['actionhidden'] = '';
} else {
- $title = Title :: makeTitle($row->log_namespace, $row->log_title);
- ApiQueryBase :: addTitleInfo($vals, $title);
+ ApiQueryBase::addTitleInfo( $vals, $title );
}
}
- if ($this->fld_type) {
+ if ( $this->fld_type ) {
$vals['type'] = $row->log_type;
$vals['action'] = $row->log_action;
}
- if ($this->fld_details && $row->log_params !== '') {
- if (LogEventsList::isDeleted($row, LogPage::DELETED_ACTION)) {
+ if ( $this->fld_details && $row->log_params !== '' ) {
+ if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
$vals['actionhidden'] = '';
} else {
- self::addLogParams($this->getResult(), $vals,
+ self::addLogParams( $this->getResult(), $vals,
$row->log_params, $row->log_type,
- $row->log_timestamp);
+ $row->log_timestamp );
}
}
- if ($this->fld_user) {
- if (LogEventsList::isDeleted($row, LogPage::DELETED_USER)) {
+ if ( $this->fld_user ) {
+ if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) {
$vals['userhidden'] = '';
} else {
$vals['user'] = $row->user_name;
- if(!$row->log_user)
+ if ( !$row->log_user )
$vals['anon'] = '';
}
}
- if ($this->fld_timestamp) {
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->log_timestamp);
+ if ( $this->fld_timestamp ) {
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->log_timestamp );
}
- if ($this->fld_comment && isset($row->log_comment)) {
- if (LogEventsList::isDeleted($row, LogPage::DELETED_COMMENT)) {
+
+ if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->log_comment ) ) {
+ if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
$vals['commenthidden'] = '';
} else {
- $vals['comment'] = $row->log_comment;
+ if ( $this->fld_comment )
+ $vals['comment'] = $row->log_comment;
+
+ if ( $this->fld_parsedcomment ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->log_comment, $title );
+ }
}
}
+ if ( $this->fld_tags ) {
+ if ( $row->ts_tags ) {
+ $tags = explode( ',', $row->ts_tags );
+ $this->getResult()->setIndexedTagName( $tags, 'tag' );
+ $vals['tags'] = $tags;
+ } else {
+ $vals['tags'] = array();
+ }
+ }
+
return $vals;
}
-
-
+
public function getCacheMode( $params ) {
- return 'public';
+ if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
+ // formatComment() calls wfMsg() among other things
+ return 'anon-public-user-private';
+ } else {
+ return 'public';
+ }
}
public function getAllowedParams() {
@@ -268,7 +307,9 @@ class ApiQueryLogEvents extends ApiQueryBase {
'user',
'timestamp',
'comment',
+ 'parsedcomment',
'details',
+ 'tags'
)
),
'type' => array (
@@ -289,6 +330,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
),
'user' => null,
'title' => null,
+ 'tag' => null,
'limit' => array (
ApiBase :: PARAM_DFLT => 10,
ApiBase :: PARAM_TYPE => 'limit',
@@ -308,13 +350,21 @@ class ApiQueryLogEvents extends ApiQueryBase {
'dir' => 'In which direction to enumerate.',
'user' => 'Filter entries to those made by the given user.',
'title' => 'Filter entries to those related to a page.',
- 'limit' => 'How many total event entries to return.'
+ 'limit' => 'How many total event entries to return.',
+ 'tag' => 'Only list event entries tagged with this tag.',
);
}
public function getDescription() {
return 'Get events from logs.';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'param_user', 'info' => 'User name $user not found' ),
+ array( 'code' => 'param_title', 'info' => 'Bad title value \'title\'' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -323,6 +373,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLogEvents.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryLogEvents.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryProtectedTitles.php b/includes/api/ApiQueryProtectedTitles.php
index 67a2a829..ab794805 100644
--- a/includes/api/ApiQueryProtectedTitles.php
+++ b/includes/api/ApiQueryProtectedTitles.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,91 +35,104 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'pt');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'pt' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
- $this->addTables('protected_titles');
- $this->addFields(array('pt_namespace', 'pt_title', 'pt_timestamp'));
+ $this->addTables( 'protected_titles' );
+ $this->addFields( array( 'pt_namespace', 'pt_title', 'pt_timestamp' ) );
- $prop = array_flip($params['prop']);
- $this->addFieldsIf('pt_user', isset($prop['user']));
- $this->addFieldsIf('pt_reason', isset($prop['comment']));
- $this->addFieldsIf('pt_expiry', isset($prop['expiry']));
- $this->addFieldsIf('pt_create_perm', isset($prop['level']));
+ $prop = array_flip( $params['prop'] );
+ $this->addFieldsIf( 'pt_user', isset( $prop['user'] ) );
+ $this->addFieldsIf( 'pt_reason', isset( $prop['comment'] ) || isset( $prop['parsedcomment'] ) );
+ $this->addFieldsIf( 'pt_expiry', isset( $prop['expiry'] ) );
+ $this->addFieldsIf( 'pt_create_perm', isset( $prop['level'] ) );
- $this->addWhereRange('pt_timestamp', $params['dir'], $params['start'], $params['end']);
- $this->addWhereFld('pt_namespace', $params['namespace']);
- $this->addWhereFld('pt_create_perm', $params['level']);
+ $this->addWhereRange( 'pt_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addWhereFld( 'pt_namespace', $params['namespace'] );
+ $this->addWhereFld( 'pt_create_perm', $params['level'] );
- if(isset($prop['user']))
+ if ( isset( $prop['user'] ) )
{
- $this->addTables('user');
- $this->addFields('user_name');
- $this->addJoinConds(array('user' => array('LEFT JOIN',
+ $this->addTables( 'user' );
+ $this->addFields( 'user_name' );
+ $this->addJoinConds( array( 'user' => array( 'LEFT JOIN',
'user_id=pt_user'
- )));
+ ) ) );
}
- $this->addOption('LIMIT', $params['limit'] + 1);
- $res = $this->select(__METHOD__);
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $res = $this->select( __METHOD__ );
$count = 0;
$result = $this->getResult();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->pt_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->pt_timestamp ) );
break;
}
- $title = Title::makeTitle($row->pt_namespace, $row->pt_title);
- if (is_null($resultPageSet)) {
+ $title = Title::makeTitle( $row->pt_namespace, $row->pt_title );
+ if ( is_null( $resultPageSet ) ) {
$vals = array();
- ApiQueryBase::addTitleInfo($vals, $title);
- if(isset($prop['timestamp']))
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->pt_timestamp);
- if(isset($prop['user']) && !is_null($row->user_name))
+ ApiQueryBase::addTitleInfo( $vals, $title );
+ if ( isset( $prop['timestamp'] ) )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->pt_timestamp );
+
+ if ( isset( $prop['user'] ) && !is_null( $row->user_name ) )
$vals['user'] = $row->user_name;
- if(isset($prop['comment']))
+
+ if ( isset( $prop['comment'] ) )
$vals['comment'] = $row->pt_reason;
- if(isset($prop['expiry']))
- $vals['expiry'] = Block::decodeExpiry($row->pt_expiry, TS_ISO_8601);
- if(isset($prop['level']))
+
+ if ( isset( $prop['parsedcomment'] ) ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->pt_reason, $title );
+ }
+
+ if ( isset( $prop['expiry'] ) )
+ $vals['expiry'] = Block::decodeExpiry( $row->pt_expiry, TS_ISO_8601 );
+
+ if ( isset( $prop['level'] ) )
$vals['level'] = $row->pt_create_perm;
- $fit = $result->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
- {
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $row->pt_timestamp));
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $row->pt_timestamp ) );
break;
}
} else {
$titles[] = $title;
}
}
- $db->freeResult($res);
- if(is_null($resultPageSet))
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), $this->getModulePrefix());
+ $db->freeResult( $res );
+ if ( is_null( $resultPageSet ) )
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), $this->getModulePrefix() );
else
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
public function getCacheMode( $params ) {
- return 'public';
+ if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
+ // formatComment() calls wfMsg() among other things
+ return 'anon-public-user-private';
+ } else {
+ return 'public';
+ }
}
public function getAllowedParams() {
@@ -131,7 +144,7 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
),
'level' => array(
ApiBase :: PARAM_ISMULTI => true,
- ApiBase :: PARAM_TYPE => array_diff($wgRestrictionLevels, array(''))
+ ApiBase :: PARAM_TYPE => array_diff( $wgRestrictionLevels, array( '' ) )
),
'limit' => array (
ApiBase :: PARAM_DFLT => 10,
@@ -160,6 +173,7 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
'timestamp',
'user',
'comment',
+ 'parsedcomment',
'expiry',
'level'
)
@@ -190,6 +204,6 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryProtectedTitles.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryProtectedTitles.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryRandom.php b/includes/api/ApiQueryRandom.php
index 1811b7e8..10796810 100644
--- a/includes/api/ApiQueryRandom.php
+++ b/includes/api/ApiQueryRandom.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,88 +36,88 @@ if (!defined('MEDIAWIKI')) {
class ApiQueryRandom extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'rn');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'rn' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- protected function prepareQuery($randstr, $limit, $namespace, &$resultPageSet, $redirect) {
+ protected function prepareQuery( $randstr, $limit, $namespace, &$resultPageSet, $redirect ) {
$this->resetQueryParams();
- $this->addTables('page');
- $this->addOption('LIMIT', $limit);
- $this->addWhereFld('page_namespace', $namespace);
- $this->addWhereRange('page_random', 'newer', $randstr, null);
- $this->addWhereFld('page_is_redirect', $redirect);
- $this->addOption('USE INDEX', 'page_random');
- if(is_null($resultPageSet))
- $this->addFields(array('page_id', 'page_title', 'page_namespace'));
+ $this->addTables( 'page' );
+ $this->addOption( 'LIMIT', $limit );
+ $this->addWhereFld( 'page_namespace', $namespace );
+ $this->addWhereRange( 'page_random', 'newer', $randstr, null );
+ $this->addWhereFld( 'page_is_redirect', $redirect );
+ $this->addOption( 'USE INDEX', 'page_random' );
+ if ( is_null( $resultPageSet ) )
+ $this->addFields( array( 'page_id', 'page_title', 'page_namespace' ) );
else
- $this->addFields($resultPageSet->getPageTableFields());
+ $this->addFields( $resultPageSet->getPageTableFields() );
}
- protected function runQuery(&$resultPageSet) {
+ protected function runQuery( &$resultPageSet ) {
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
$count = 0;
- while($row = $db->fetchObject($res)) {
+ while ( $row = $db->fetchObject( $res ) ) {
$count++;
- if(is_null($resultPageSet))
+ if ( is_null( $resultPageSet ) )
{
// Prevent duplicates
- if(!in_array($row->page_id, $this->pageIDs))
+ if ( !in_array( $row->page_id, $this->pageIDs ) )
{
$fit = $this->getResult()->addValue(
- array('query', $this->getModuleName()),
- null, $this->extractRowInfo($row));
- if(!$fit)
- # We can't really query-continue a random list.
- # Return an insanely high value so
- # $count < $limit is false
+ array( 'query', $this->getModuleName() ),
+ null, $this->extractRowInfo( $row ) );
+ if ( !$fit )
+ // We can't really query-continue a random list.
+ // Return an insanely high value so
+ // $count < $limit is false
return 1E9;
$this->pageIDs[] = $row->page_id;
}
}
else
- $resultPageSet->processDbRow($row);
+ $resultPageSet->processDbRow( $row );
}
- $db->freeResult($res);
+ $db->freeResult( $res );
return $count;
}
- public function run($resultPageSet = null) {
+ public function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
$result = $this->getResult();
$this->pageIDs = array();
- $this->prepareQuery(wfRandom(), $params['limit'], $params['namespace'], $resultPageSet, $params['redirect']);
- $count = $this->runQuery($resultPageSet);
- if($count < $params['limit'])
+ $this->prepareQuery( wfRandom(), $params['limit'], $params['namespace'], $resultPageSet, $params['redirect'] );
+ $count = $this->runQuery( $resultPageSet );
+ if ( $count < $params['limit'] )
{
/* We got too few pages, we probably picked a high value
* for page_random. We'll just take the lowest ones, see
* also the comment in Title::getRandomTitle()
*/
- $this->prepareQuery(0, $params['limit'] - $count, $params['namespace'], $resultPageSet, $params['redirect']);
- $this->runQuery($resultPageSet);
+ $this->prepareQuery( 0, $params['limit'] - $count, $params['namespace'], $resultPageSet, $params['redirect'] );
+ $this->runQuery( $resultPageSet );
}
- if(is_null($resultPageSet)) {
- $result->setIndexedTagName_internal(array('query', $this->getModuleName()), 'page');
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'page' );
}
}
- private function extractRowInfo($row) {
- $title = Title::makeTitle($row->page_namespace, $row->page_title);
+ private function extractRowInfo( $row ) {
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
$vals = array();
- $vals['id'] = intval($row->page_id);
- ApiQueryBase::addTitleInfo($vals, $title);
+ $vals['id'] = intval( $row->page_id );
+ ApiQueryBase::addTitleInfo( $vals, $title );
return $vals;
}
diff --git a/includes/api/ApiQueryRecentChanges.php b/includes/api/ApiQueryRecentChanges.php
index b5a56864..1f0de3be 100644
--- a/includes/api/ApiQueryRecentChanges.php
+++ b/includes/api/ApiQueryRecentChanges.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,43 +36,45 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryRecentChanges extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'rc');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'rc' );
}
- private $fld_comment = false, $fld_user = false, $fld_flags = false,
+ private $fld_comment = false, $fld_parsedcomment = false, $fld_user = false, $fld_flags = false,
$fld_timestamp = false, $fld_title = false, $fld_ids = false,
$fld_sizes = false;
-
+ /**
+ * Get an array mapping token names to their handler functions.
+ * The prototype for a token function is func($pageid, $title, $rc)
+ * it should return a token or false (permission denied)
+ * @return array(tokenname => function)
+ */
protected function getTokenFunctions() {
- // tokenname => function
- // function prototype is func($pageid, $title, $rev)
- // should return token or false
-
// Don't call the hooks twice
- if(isset($this->tokenFunctions))
+ if ( isset( $this->tokenFunctions ) )
return $this->tokenFunctions;
// If we're in JSON callback mode, no tokens can be obtained
- if(!is_null($this->getMain()->getRequest()->getVal('callback')))
+ if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) )
return array();
$this->tokenFunctions = array(
'patrol' => array( 'ApiQueryRecentChanges', 'getPatrolToken' )
);
- wfRunHooks('APIQueryRecentChangesTokens', array(&$this->tokenFunctions));
+ wfRunHooks( 'APIQueryRecentChangesTokens', array( &$this->tokenFunctions ) );
return $this->tokenFunctions;
}
- public static function getPatrolToken($pageid, $title, $rc)
+ public static function getPatrolToken( $pageid, $title, $rc )
{
global $wgUser;
- if(!$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
+ if ( !$wgUser->useRCPatrol() && ( !$wgUser->useNPPatrol() ||
+ $rc->getAttribute( 'rc_type' ) != RC_NEW ) )
return false;
// The patrol token is always the same, let's exploit that
static $cachedPatrolToken = null;
- if(!is_null($cachedPatrolToken))
+ if ( !is_null( $cachedPatrolToken ) )
return $cachedPatrolToken;
$cachedPatrolToken = $wgUser->editToken();
@@ -80,6 +82,25 @@ class ApiQueryRecentChanges extends ApiQueryBase {
}
/**
+ * Sets internal state to include the desired properties in the output.
+ * @param $prop associative array of properties, only keys are used here
+ */
+ public function initProperties( $prop ) {
+ $this->fld_comment = isset ( $prop['comment'] );
+ $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $this->fld_user = isset ( $prop['user'] );
+ $this->fld_flags = isset ( $prop['flags'] );
+ $this->fld_timestamp = isset ( $prop['timestamp'] );
+ $this->fld_title = isset ( $prop['title'] );
+ $this->fld_ids = isset ( $prop['ids'] );
+ $this->fld_sizes = isset ( $prop['sizes'] );
+ $this->fld_redirect = isset( $prop['redirect'] );
+ $this->fld_patrolled = isset( $prop['patrolled'] );
+ $this->fld_loginfo = isset( $prop['loginfo'] );
+ $this->fld_tags = isset( $prop['tags'] );
+ }
+
+ /**
* Generates and outputs the result of this query based upon the provided parameters.
*/
public function execute() {
@@ -92,49 +113,65 @@ class ApiQueryRecentChanges extends ApiQueryBase {
* AND rc_deleted = '0'
*/
$db = $this->getDB();
- $this->addTables('recentchanges');
- $this->addOption('USE INDEX', array('recentchanges' => 'rc_timestamp'));
- $this->addWhereRange('rc_timestamp', $params['dir'], $params['start'], $params['end']);
- $this->addWhereFld('rc_namespace', $params['namespace']);
- $this->addWhereFld('rc_deleted', 0);
+ $this->addTables( 'recentchanges' );
+ $index = array( 'recentchanges' => 'rc_timestamp' ); // May change
+ $this->addWhereRange( 'rc_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addWhereFld( 'rc_namespace', $params['namespace'] );
+ $this->addWhereFld( 'rc_deleted', 0 );
- if(!is_null($params['type']))
- $this->addWhereFld('rc_type', $this->parseRCType($params['type']));
+ if ( !is_null( $params['type'] ) )
+ $this->addWhereFld( 'rc_type', $this->parseRCType( $params['type'] ) );
- if (!is_null($params['show'])) {
- $show = array_flip($params['show']);
+ if ( !is_null( $params['show'] ) ) {
+ $show = array_flip( $params['show'] );
/* Check for conflicting parameters. */
- if ((isset ($show['minor']) && isset ($show['!minor']))
- || (isset ($show['bot']) && isset ($show['!bot']))
- || (isset ($show['anon']) && isset ($show['!anon']))
- || (isset ($show['redirect']) && isset ($show['!redirect']))
- || (isset ($show['patrolled']) && isset ($show['!patrolled']))) {
+ if ( ( isset ( $show['minor'] ) && isset ( $show['!minor'] ) )
+ || ( isset ( $show['bot'] ) && isset ( $show['!bot'] ) )
+ || ( isset ( $show['anon'] ) && isset ( $show['!anon'] ) )
+ || ( isset ( $show['redirect'] ) && isset ( $show['!redirect'] ) )
+ || ( isset ( $show['patrolled'] ) && isset ( $show['!patrolled'] ) ) ) {
- $this->dieUsage("Incorrect parameter - mutually exclusive values may not be supplied", 'show');
+ $this->dieUsageMsg( array( 'show' ) );
}
// Check permissions
global $wgUser;
- if((isset($show['patrolled']) || isset($show['!patrolled'])) && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
- $this->dieUsage("You need the patrol right to request the patrolled flag", 'permissiondenied');
+ if ( ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ) && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol() )
+ $this->dieUsage( "You need the patrol right to request the patrolled flag", 'permissiondenied' );
/* Add additional conditions to query depending upon parameters. */
- $this->addWhereIf('rc_minor = 0', isset ($show['!minor']));
- $this->addWhereIf('rc_minor != 0', isset ($show['minor']));
- $this->addWhereIf('rc_bot = 0', isset ($show['!bot']));
- $this->addWhereIf('rc_bot != 0', isset ($show['bot']));
- $this->addWhereIf('rc_user = 0', isset ($show['anon']));
- $this->addWhereIf('rc_user != 0', isset ($show['!anon']));
- $this->addWhereIf('rc_patrolled = 0', isset($show['!patrolled']));
- $this->addWhereIf('rc_patrolled != 0', isset($show['patrolled']));
- $this->addWhereIf('page_is_redirect = 1', isset ($show['redirect']));
+ $this->addWhereIf( 'rc_minor = 0', isset ( $show['!minor'] ) );
+ $this->addWhereIf( 'rc_minor != 0', isset ( $show['minor'] ) );
+ $this->addWhereIf( 'rc_bot = 0', isset ( $show['!bot'] ) );
+ $this->addWhereIf( 'rc_bot != 0', isset ( $show['bot'] ) );
+ $this->addWhereIf( 'rc_user = 0', isset ( $show['anon'] ) );
+ $this->addWhereIf( 'rc_user != 0', isset ( $show['!anon'] ) );
+ $this->addWhereIf( 'rc_patrolled = 0', isset( $show['!patrolled'] ) );
+ $this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
+ $this->addWhereIf( 'page_is_redirect = 1', isset ( $show['redirect'] ) );
+
// Don't throw log entries out the window here
- $this->addWhereIf('page_is_redirect = 0 OR page_is_redirect IS NULL', isset ($show['!redirect']));
+ $this->addWhereIf( 'page_is_redirect = 0 OR page_is_redirect IS NULL', isset ( $show['!redirect'] ) );
}
-
- /* Add the fields we're concerned with to out query. */
- $this->addFields(array (
+
+ if ( !is_null( $params['user'] ) && !is_null( $param['excludeuser'] ) )
+ $this->dieUsage( 'user and excludeuser cannot be used together', 'user-excludeuser' );
+
+ if ( !is_null( $params['user'] ) )
+ {
+ $this->addWhereFld( 'rc_user_text', $params['user'] );
+ $index['recentchanges'] = 'rc_user_text';
+ }
+
+ if ( !is_null( $params['excludeuser'] ) )
+ // We don't use the rc_user_text index here because
+ // * it would require us to sort by rc_user_text before rc_timestamp
+ // * the != condition doesn't throw out too many rows anyway
+ $this->addWhere( 'rc_user_text != ' . $this->getDB()->addQuotes( $params['excludeuser'] ) );
+
+ /* Add the fields we're concerned with to our query. */
+ $this->addFields( array (
'rc_timestamp',
'rc_namespace',
'rc_title',
@@ -142,86 +179,93 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'rc_type',
'rc_moved_to_ns',
'rc_moved_to_title'
- ));
+ ) );
/* Determine what properties we need to display. */
- if (!is_null($params['prop'])) {
- $prop = array_flip($params['prop']);
+ if ( !is_null( $params['prop'] ) ) {
+ $prop = array_flip( $params['prop'] );
/* Set up internal members based upon params. */
- $this->fld_comment = isset ($prop['comment']);
- $this->fld_user = isset ($prop['user']);
- $this->fld_flags = isset ($prop['flags']);
- $this->fld_timestamp = isset ($prop['timestamp']);
- $this->fld_title = isset ($prop['title']);
- $this->fld_ids = isset ($prop['ids']);
- $this->fld_sizes = isset ($prop['sizes']);
- $this->fld_redirect = isset($prop['redirect']);
- $this->fld_patrolled = isset($prop['patrolled']);
- $this->fld_loginfo = isset($prop['loginfo']);
+ $this->initProperties( $prop );
global $wgUser;
- if($this->fld_patrolled && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
- $this->dieUsage("You need the patrol right to request the patrolled flag", 'permissiondenied');
+ if ( $this->fld_patrolled && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol() )
+ $this->dieUsage( "You need the patrol right to request the patrolled flag", 'permissiondenied' );
/* Add fields to our query if they are specified as a needed parameter. */
- $this->addFieldsIf('rc_id', $this->fld_ids);
- $this->addFieldsIf('rc_this_oldid', $this->fld_ids);
- $this->addFieldsIf('rc_last_oldid', $this->fld_ids);
- $this->addFieldsIf('rc_comment', $this->fld_comment);
- $this->addFieldsIf('rc_user', $this->fld_user);
- $this->addFieldsIf('rc_user_text', $this->fld_user);
- $this->addFieldsIf('rc_minor', $this->fld_flags);
- $this->addFieldsIf('rc_bot', $this->fld_flags);
- $this->addFieldsIf('rc_new', $this->fld_flags);
- $this->addFieldsIf('rc_old_len', $this->fld_sizes);
- $this->addFieldsIf('rc_new_len', $this->fld_sizes);
- $this->addFieldsIf('rc_patrolled', $this->fld_patrolled);
- $this->addFieldsIf('rc_logid', $this->fld_loginfo);
- $this->addFieldsIf('rc_log_type', $this->fld_loginfo);
- $this->addFieldsIf('rc_log_action', $this->fld_loginfo);
- $this->addFieldsIf('rc_params', $this->fld_loginfo);
- if($this->fld_redirect || isset($show['redirect']) || isset($show['!redirect']))
+ $this->addFieldsIf( 'rc_id', $this->fld_ids );
+ $this->addFieldsIf( 'rc_this_oldid', $this->fld_ids );
+ $this->addFieldsIf( 'rc_last_oldid', $this->fld_ids );
+ $this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment );
+ $this->addFieldsIf( 'rc_user', $this->fld_user );
+ $this->addFieldsIf( 'rc_user_text', $this->fld_user );
+ $this->addFieldsIf( 'rc_minor', $this->fld_flags );
+ $this->addFieldsIf( 'rc_bot', $this->fld_flags );
+ $this->addFieldsIf( 'rc_new', $this->fld_flags );
+ $this->addFieldsIf( 'rc_old_len', $this->fld_sizes );
+ $this->addFieldsIf( 'rc_new_len', $this->fld_sizes );
+ $this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
+ $this->addFieldsIf( 'rc_logid', $this->fld_loginfo );
+ $this->addFieldsIf( 'rc_log_type', $this->fld_loginfo );
+ $this->addFieldsIf( 'rc_log_action', $this->fld_loginfo );
+ $this->addFieldsIf( 'rc_params', $this->fld_loginfo );
+ if ( $this->fld_redirect || isset( $show['redirect'] ) || isset( $show['!redirect'] ) )
{
- $this->addTables('page');
- $this->addJoinConds(array('page' => array('LEFT JOIN', array('rc_namespace=page_namespace', 'rc_title=page_title'))));
- $this->addFields('page_is_redirect');
+ $this->addTables( 'page' );
+ $this->addJoinConds( array( 'page' => array( 'LEFT JOIN', array( 'rc_namespace=page_namespace', 'rc_title=page_title' ) ) ) );
+ $this->addFields( 'page_is_redirect' );
}
}
+
+ if ( $this->fld_tags ) {
+ $this->addTables( 'tag_summary' );
+ $this->addJoinConds( array( 'tag_summary' => array( 'LEFT JOIN', array( 'rc_id=ts_rc_id' ) ) ) );
+ $this->addFields( 'ts_tags' );
+ }
+
+ if ( !is_null( $params['tag'] ) ) {
+ $this->addTables( 'change_tag' );
+ $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rc_id=ct_rc_id' ) ) ) );
+ $this->addWhereFld( 'ct_tag' , $params['tag'] );
+ global $wgOldChangeTagsIndex;
+ $index['change_tag'] = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
+ }
+
$this->token = $params['token'];
- $this->addOption('LIMIT', $params['limit'] +1);
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $this->addOption( 'USE INDEX', $index );
$count = 0;
/* Perform the actual query. */
$db = $this->getDB();
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
/* Iterate through the rows, adding data extracted from them to our query result. */
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->rc_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
break;
}
/* Extract the data from a single row. */
- $vals = $this->extractRowInfo($row);
+ $vals = $this->extractRowInfo( $row );
/* Add that row's data to our final output. */
- if(!$vals)
+ if ( !$vals )
continue;
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->rc_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
/* Format the result */
- $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'rc');
+ $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'rc' );
}
/**
@@ -229,16 +273,16 @@ class ApiQueryRecentChanges extends ApiQueryBase {
*
* @param $row The row from which to extract the data.
* @return An array mapping strings (descriptors) to their respective string values.
- * @access private
+ * @access public
*/
- private function extractRowInfo($row) {
+ public function extractRowInfo( $row ) {
/* If page was moved somewhere, get the title of the move target. */
$movedToTitle = false;
- if (isset($row->rc_moved_to_title) && $row->rc_moved_to_title !== '')
- $movedToTitle = Title :: makeTitle($row->rc_moved_to_ns, $row->rc_moved_to_title);
+ if ( isset( $row->rc_moved_to_title ) && $row->rc_moved_to_title !== '' )
+ $movedToTitle = Title :: makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
/* Determine the title of the page that has been changed. */
- $title = Title :: makeTitle($row->rc_namespace, $row->rc_title);
+ $title = Title :: makeTitle( $row->rc_namespace, $row->rc_title );
/* Our output data. */
$vals = array ();
@@ -247,87 +291,112 @@ class ApiQueryRecentChanges extends ApiQueryBase {
/* Determine what kind of change this was. */
switch ( $type ) {
- case RC_EDIT: $vals['type'] = 'edit'; break;
- case RC_NEW: $vals['type'] = 'new'; break;
- case RC_MOVE: $vals['type'] = 'move'; break;
- case RC_LOG: $vals['type'] = 'log'; break;
- case RC_MOVE_OVER_REDIRECT: $vals['type'] = 'move over redirect'; break;
- default: $vals['type'] = $type;
+ case RC_EDIT:
+ $vals['type'] = 'edit';
+ break;
+ case RC_NEW:
+ $vals['type'] = 'new';
+ break;
+ case RC_MOVE:
+ $vals['type'] = 'move';
+ break;
+ case RC_LOG:
+ $vals['type'] = 'log';
+ break;
+ case RC_MOVE_OVER_REDIRECT:
+ $vals['type'] = 'move over redirect';
+ break;
+ default:
+ $vals['type'] = $type;
}
/* Create a new entry in the result for the title. */
- if ($this->fld_title) {
- ApiQueryBase :: addTitleInfo($vals, $title);
- if ($movedToTitle)
- ApiQueryBase :: addTitleInfo($vals, $movedToTitle, "new_");
+ if ( $this->fld_title ) {
+ ApiQueryBase :: addTitleInfo( $vals, $title );
+ if ( $movedToTitle )
+ ApiQueryBase :: addTitleInfo( $vals, $movedToTitle, "new_" );
}
/* Add ids, such as rcid, pageid, revid, and oldid to the change's info. */
- if ($this->fld_ids) {
- $vals['rcid'] = intval($row->rc_id);
- $vals['pageid'] = intval($row->rc_cur_id);
- $vals['revid'] = intval($row->rc_this_oldid);
+ if ( $this->fld_ids ) {
+ $vals['rcid'] = intval( $row->rc_id );
+ $vals['pageid'] = intval( $row->rc_cur_id );
+ $vals['revid'] = intval( $row->rc_this_oldid );
$vals['old_revid'] = intval( $row->rc_last_oldid );
}
/* Add user data and 'anon' flag, if use is anonymous. */
- if ($this->fld_user) {
+ if ( $this->fld_user ) {
$vals['user'] = $row->rc_user_text;
- if(!$row->rc_user)
+ if ( !$row->rc_user )
$vals['anon'] = '';
}
/* Add flags, such as new, minor, bot. */
- if ($this->fld_flags) {
- if ($row->rc_bot)
+ if ( $this->fld_flags ) {
+ if ( $row->rc_bot )
$vals['bot'] = '';
- if ($row->rc_new)
+ if ( $row->rc_new )
$vals['new'] = '';
- if ($row->rc_minor)
+ if ( $row->rc_minor )
$vals['minor'] = '';
}
/* Add sizes of each revision. (Only available on 1.10+) */
- if ($this->fld_sizes) {
- $vals['oldlen'] = intval($row->rc_old_len);
- $vals['newlen'] = intval($row->rc_new_len);
+ if ( $this->fld_sizes ) {
+ $vals['oldlen'] = intval( $row->rc_old_len );
+ $vals['newlen'] = intval( $row->rc_new_len );
}
/* Add the timestamp. */
- if ($this->fld_timestamp)
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->rc_timestamp);
+ if ( $this->fld_timestamp )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->rc_timestamp );
/* Add edit summary / log summary. */
- if ($this->fld_comment && isset($row->rc_comment)) {
+ if ( $this->fld_comment && isset( $row->rc_comment ) )
$vals['comment'] = $row->rc_comment;
+
+ if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->rc_comment, $title );
}
- if ($this->fld_redirect)
- if($row->page_is_redirect)
+ if ( $this->fld_redirect )
+ if ( $row->page_is_redirect )
$vals['redirect'] = '';
/* Add the patrolled flag */
- if ($this->fld_patrolled && $row->rc_patrolled == 1)
+ if ( $this->fld_patrolled && $row->rc_patrolled == 1 )
$vals['patrolled'] = '';
- if ($this->fld_loginfo && $row->rc_type == RC_LOG) {
- $vals['logid'] = intval($row->rc_logid);
+ if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
+ $vals['logid'] = intval( $row->rc_logid );
$vals['logtype'] = $row->rc_log_type;
$vals['logaction'] = $row->rc_log_action;
- ApiQueryLogEvents::addLogParams($this->getResult(),
+ ApiQueryLogEvents::addLogParams( $this->getResult(),
$vals, $row->rc_params,
- $row->rc_log_type, $row->rc_timestamp);
+ $row->rc_log_type, $row->rc_timestamp );
}
- if(!is_null($this->token))
+ if ( $this->fld_tags ) {
+ if ( $row->ts_tags ) {
+ $tags = explode( ',', $row->ts_tags );
+ $this->getResult()->setIndexedTagName( $tags, 'tag' );
+ $vals['tags'] = $tags;
+ } else {
+ $vals['tags'] = array();
+ }
+ }
+
+ if ( !is_null( $this->token ) )
{
$tokenFunctions = $this->getTokenFunctions();
- foreach($this->token as $t)
+ foreach ( $this->token as $t )
{
- $val = call_user_func($tokenFunctions[$t], $row->rc_cur_id,
- $title, RecentChange::newFromRow($row));
- if($val === false)
- $this->setWarning("Action '$t' is not allowed for the current user");
+ $val = call_user_func( $tokenFunctions[$t], $row->rc_cur_id,
+ $title, RecentChange::newFromRow( $row ) );
+ if ( $val === false )
+ $this->setWarning( "Action '$t' is not allowed for the current user" );
else
$vals[$t . 'token'] = $val;
}
@@ -336,16 +405,16 @@ class ApiQueryRecentChanges extends ApiQueryBase {
return $vals;
}
- private function parseRCType($type)
+ private function parseRCType( $type )
{
- if(is_array($type))
+ if ( is_array( $type ) )
{
$retval = array();
- foreach($type as $t)
- $retval[] = $this->parseRCType($t);
+ foreach ( $type as $t )
+ $retval[] = $this->parseRCType( $t );
return $retval;
}
- switch($type)
+ switch( $type )
{
case 'edit': return RC_EDIT;
case 'new': return RC_NEW;
@@ -364,6 +433,10 @@ class ApiQueryRecentChanges extends ApiQueryBase {
if ( isset( $params['token'] ) ) {
return 'private';
}
+ if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
+ // formatComment() calls wfMsg() among other things
+ return 'anon-public-user-private';
+ }
return 'public';
}
@@ -386,12 +459,20 @@ class ApiQueryRecentChanges extends ApiQueryBase {
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_TYPE => 'namespace'
),
+ 'user' => array(
+ ApiBase :: PARAM_TYPE => 'user'
+ ),
+ 'excludeuser' => array(
+ ApiBase :: PARAM_TYPE => 'user'
+ ),
+ 'tag' => null,
'prop' => array (
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_DFLT => 'title|timestamp|ids',
ApiBase :: PARAM_TYPE => array (
'user',
'comment',
+ 'parsedcomment',
'flags',
'timestamp',
'title',
@@ -400,10 +481,11 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'redirect',
'patrolled',
'loginfo',
+ 'tags'
)
),
'token' => array(
- ApiBase :: PARAM_TYPE => array_keys($this->getTokenFunctions()),
+ ApiBase :: PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
ApiBase :: PARAM_ISMULTI => true
),
'show' => array (
@@ -445,6 +527,8 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'end' => 'The timestamp to end enumerating.',
'dir' => 'In which direction to enumerate.',
'namespace' => 'Filter log entries to only this namespace(s)',
+ 'user' => 'Only list changes by this user',
+ 'excludeuser' => 'Don\'t list changes by this user',
'prop' => 'Include additional pieces of information',
'token' => 'Which tokens to obtain for each change',
'show' => array (
@@ -452,13 +536,22 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'For example, to see only minor edits done by logged-in users, set show=minor|!anon'
),
'type' => 'Which types of changes to show.',
- 'limit' => 'How many total changes to return.'
+ 'limit' => 'How many total changes to return.',
+ 'tag' => 'Only list changes tagged with this tag.',
);
}
public function getDescription() {
return 'Enumerate recent changes';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'show' ),
+ array( 'code' => 'permissiondenied', 'info' => 'You need the patrol right to request the patrolled flag' ),
+ array( 'code' => 'user-excludeuser', 'info' => 'user and excludeuser cannot be used together' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -467,6 +560,6 @@ class ApiQueryRecentChanges extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryRecentChanges.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryRecentChanges.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php
index eba526a3..6166b6a2 100644
--- a/includes/api/ApiQueryRevisions.php
+++ b/includes/api/ApiQueryRevisions.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -37,12 +37,12 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryRevisions extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'rv');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'rv' );
}
private $fld_ids = false, $fld_flags = false, $fld_timestamp = false, $fld_size = false,
- $fld_comment = false, $fld_user = false, $fld_content = false;
+ $fld_comment = false, $fld_parsedcomment = false, $fld_user = false, $fld_content = false, $fld_tags = false;
protected function getTokenFunctions() {
// tokenname => function
@@ -50,40 +50,40 @@ class ApiQueryRevisions extends ApiQueryBase {
// should return token or false
// Don't call the hooks twice
- if(isset($this->tokenFunctions))
+ if ( isset( $this->tokenFunctions ) )
return $this->tokenFunctions;
// If we're in JSON callback mode, no tokens can be obtained
- if(!is_null($this->getMain()->getRequest()->getVal('callback')))
+ if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) )
return array();
$this->tokenFunctions = array(
'rollback' => array( 'ApiQueryRevisions', 'getRollbackToken' )
);
- wfRunHooks('APIQueryRevisionsTokens', array(&$this->tokenFunctions));
+ wfRunHooks( 'APIQueryRevisionsTokens', array( &$this->tokenFunctions ) );
return $this->tokenFunctions;
}
- public static function getRollbackToken($pageid, $title, $rev)
+ public static function getRollbackToken( $pageid, $title, $rev )
{
global $wgUser;
- if(!$wgUser->isAllowed('rollback'))
+ if ( !$wgUser->isAllowed( 'rollback' ) )
return false;
- return $wgUser->editToken(array($title->getPrefixedText(),
- $rev->getUserText()));
+ return $wgUser->editToken( array( $title->getPrefixedText(),
+ $rev->getUserText() ) );
}
public function execute() {
- $params = $this->extractRequestParams(false);
+ $params = $this->extractRequestParams( false );
// If any of those parameters are used, work in 'enumeration' mode.
// Enum mode can only be used when exactly one page is provided.
// Enumerating revisions on multiple pages make it extremely
// difficult to manage continuations and require additional SQL indexes
- $enumRevMode = (!is_null($params['user']) || !is_null($params['excludeuser']) ||
- !is_null($params['limit']) || !is_null($params['startid']) ||
- !is_null($params['endid']) || $params['dir'] === 'newer' ||
- !is_null($params['start']) || !is_null($params['end']));
+ $enumRevMode = ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ||
+ !is_null( $params['limit'] ) || !is_null( $params['startid'] ) ||
+ !is_null( $params['endid'] ) || $params['dir'] === 'newer' ||
+ !is_null( $params['start'] ) || !is_null( $params['end'] ) );
$pageSet = $this->getPageSet();
@@ -91,77 +91,99 @@ class ApiQueryRevisions extends ApiQueryBase {
$revCount = $pageSet->getRevisionCount();
// Optimization -- nothing to do
- if ($revCount === 0 && $pageCount === 0)
+ if ( $revCount === 0 && $pageCount === 0 )
return;
- if ($revCount > 0 && $enumRevMode)
- $this->dieUsage('The revids= parameter may not be used with the list options (limit, startid, endid, dirNewer, start, end).', 'revids');
+ if ( $revCount > 0 && $enumRevMode )
+ $this->dieUsage( 'The revids= parameter may not be used with the list options (limit, startid, endid, dirNewer, start, end).', 'revids' );
- if ($pageCount > 1 && $enumRevMode)
- $this->dieUsage('titles, pageids or a generator was used to supply multiple pages, but the limit, startid, endid, dirNewer, user, excludeuser, start and end parameters may only be used on a single page.', 'multpages');
+ if ( $pageCount > 1 && $enumRevMode )
+ $this->dieUsage( 'titles, pageids or a generator was used to supply multiple pages, but the limit, startid, endid, dirNewer, user, excludeuser, start and end parameters may only be used on a single page.', 'multpages' );
- if (!is_null($params['diffto'])) {
- if ($params['diffto'] == 'cur')
+ $this->diffto = $this->difftotext = null;
+ if ( !is_null( $params['difftotext'] ) ) {
+ $this->difftotext = $params['difftotext'];
+ } else if ( !is_null( $params['diffto'] ) ) {
+ if ( $params['diffto'] == 'cur' )
$params['diffto'] = 0;
- if ((!ctype_digit($params['diffto']) || $params['diffto'] < 0)
- && $params['diffto'] != 'prev' && $params['diffto'] != 'next')
- $this->dieUsage('rvdiffto must be set to a non-negative number, "prev", "next" or "cur"', 'diffto');
+ if ( ( !ctype_digit( $params['diffto'] ) || $params['diffto'] < 0 )
+ && $params['diffto'] != 'prev' && $params['diffto'] != 'next' )
+ $this->dieUsage( 'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"', 'diffto' );
// Check whether the revision exists and is readable,
// DifferenceEngine returns a rather ambiguous empty
// string if that's not the case
- if ($params['diffto'] != 0) {
- $difftoRev = Revision::newFromID($params['diffto']);
- if (!$difftoRev)
- $this->dieUsageMsg(array('nosuchrevid', $params['diffto']));
- if (!$difftoRev->userCan(Revision::DELETED_TEXT)) {
- $this->setWarning("Couldn't diff to r{$difftoRev->getID()}: content is hidden");
+ if ( $params['diffto'] != 0 ) {
+ $difftoRev = Revision::newFromID( $params['diffto'] );
+ if ( !$difftoRev )
+ $this->dieUsageMsg( array( 'nosuchrevid', $params['diffto'] ) );
+ if ( !$difftoRev->userCan( Revision::DELETED_TEXT ) ) {
+ $this->setWarning( "Couldn't diff to r{$difftoRev->getID()}: content is hidden" );
$params['diffto'] = null;
}
}
+ $this->diffto = $params['diffto'];
}
- $this->addTables('revision');
- $this->addFields(Revision::selectFields());
- $this->addTables('page');
- $this->addWhere('page_id = rev_page');
+ $db = $this->getDB();
+ $this->addTables( array( 'page', 'revision' ) );
+ $this->addFields( Revision::selectFields() );
+ $this->addWhere( 'page_id = rev_page' );
- $prop = array_flip($params['prop']);
+ $prop = array_flip( $params['prop'] );
// Optional fields
- $this->fld_ids = isset ($prop['ids']);
+ $this->fld_ids = isset ( $prop['ids'] );
// $this->addFieldsIf('rev_text_id', $this->fld_ids); // should this be exposed?
- $this->fld_flags = isset ($prop['flags']);
- $this->fld_timestamp = isset ($prop['timestamp']);
- $this->fld_comment = isset ($prop['comment']);
- $this->fld_size = isset ($prop['size']);
- $this->fld_user = isset ($prop['user']);
+ $this->fld_flags = isset ( $prop['flags'] );
+ $this->fld_timestamp = isset ( $prop['timestamp'] );
+ $this->fld_comment = isset ( $prop['comment'] );
+ $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $this->fld_size = isset ( $prop['size'] );
+ $this->fld_user = isset ( $prop['user'] );
$this->token = $params['token'];
- $this->diffto = $params['diffto'];
- if ( !is_null($this->token) || $pageCount > 0) {
+ // Possible indexes used
+ $index = array();
+
+ if ( !is_null( $this->token ) || $pageCount > 0 ) {
$this->addFields( Revision::selectPageFields() );
}
- if (isset ($prop['content'])) {
+ if ( isset ( $prop['tags'] ) ) {
+ $this->fld_tags = true;
+ $this->addTables( 'tag_summary' );
+ $this->addJoinConds( array( 'tag_summary' => array( 'LEFT JOIN', array( 'rev_id=ts_rev_id' ) ) ) );
+ $this->addFields( 'ts_tags' );
+ }
+
+ if ( !is_null( $params['tag'] ) ) {
+ $this->addTables( 'change_tag' );
+ $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) ) );
+ $this->addWhereFld( 'ct_tag' , $params['tag'] );
+ global $wgOldChangeTagsIndex;
+ $index['change_tag'] = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
+ }
+
+ if ( isset( $prop['content'] ) || !is_null( $this->difftotext ) ) {
// For each page we will request, the user must have read rights for that page
- foreach ($pageSet->getGoodTitles() as $title) {
- if( !$title->userCanRead() )
+ foreach ( $pageSet->getGoodTitles() as $title ) {
+ if ( !$title->userCanRead() )
$this->dieUsage(
'The current user is not allowed to read ' . $title->getPrefixedText(),
- 'accessdenied');
+ 'accessdenied' );
}
- $this->addTables('text');
- $this->addWhere('rev_text_id=old_id');
- $this->addFields('old_id');
- $this->addFields(Revision::selectTextFields());
+ $this->addTables( 'text' );
+ $this->addWhere( 'rev_text_id=old_id' );
+ $this->addFields( 'old_id' );
+ $this->addFields( Revision::selectTextFields() );
- $this->fld_content = true;
+ $this->fld_content = isset( $prop['content'] );
$this->expandTemplates = $params['expandtemplates'];
$this->generateXML = $params['generatexml'];
- if(isset($params['section']))
+ if ( isset( $params['section'] ) )
$this->section = $params['section'];
else
$this->section = false;
@@ -170,22 +192,22 @@ class ApiQueryRevisions extends ApiQueryBase {
$userMax = ( $this->fld_content ? ApiBase::LIMIT_SML1 : ApiBase::LIMIT_BIG1 );
$botMax = ( $this->fld_content ? ApiBase::LIMIT_SML2 : ApiBase::LIMIT_BIG2 );
$limit = $params['limit'];
- if( $limit == 'max' ) {
+ if ( $limit == 'max' ) {
$limit = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
$this->getResult()->addValue( 'limits', $this->getModuleName(), $limit );
}
- if ($enumRevMode) {
+ if ( $enumRevMode ) {
// This is mostly to prevent parameter errors (and optimize SQL?)
- if (!is_null($params['startid']) && !is_null($params['start']))
- $this->dieUsage('start and startid cannot be used together', 'badparams');
+ if ( !is_null( $params['startid'] ) && !is_null( $params['start'] ) )
+ $this->dieUsage( 'start and startid cannot be used together', 'badparams' );
- if (!is_null($params['endid']) && !is_null($params['end']))
- $this->dieUsage('end and endid cannot be used together', 'badparams');
+ if ( !is_null( $params['endid'] ) && !is_null( $params['end'] ) )
+ $this->dieUsage( 'end and endid cannot be used together', 'badparams' );
- if(!is_null($params['user']) && !is_null($params['excludeuser']))
- $this->dieUsage('user and excludeuser cannot be used together', 'badparams');
+ if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) )
+ $this->dieUsage( 'user and excludeuser cannot be used together', 'badparams' );
// This code makes an assumption that sorting by rev_id and rev_timestamp produces
// the same result. This way users may request revisions starting at a given time,
@@ -194,187 +216,212 @@ class ApiQueryRevisions extends ApiQueryBase {
// one row with the same timestamp for the same page.
// The order needs to be the same as start parameter to avoid SQL filesort.
- if (is_null($params['startid']) && is_null($params['endid']))
- $this->addWhereRange('rev_timestamp', $params['dir'],
- $params['start'], $params['end']);
+ if ( is_null( $params['startid'] ) && is_null( $params['endid'] ) )
+ $this->addWhereRange( 'rev_timestamp', $params['dir'],
+ $params['start'], $params['end'] );
else {
- $this->addWhereRange('rev_id', $params['dir'],
- $params['startid'], $params['endid']);
+ $this->addWhereRange( 'rev_id', $params['dir'],
+ $params['startid'], $params['endid'] );
// One of start and end can be set
// If neither is set, this does nothing
- $this->addWhereRange('rev_timestamp', $params['dir'],
- $params['start'], $params['end'], false);
+ $this->addWhereRange( 'rev_timestamp', $params['dir'],
+ $params['start'], $params['end'], false );
}
// must manually initialize unset limit
- if (is_null($limit))
+ if ( is_null( $limit ) )
$limit = 10;
- $this->validateLimit('limit', $limit, 1, $userMax, $botMax);
+ $this->validateLimit( 'limit', $limit, 1, $userMax, $botMax );
// There is only one ID, use it
- $this->addWhereFld('rev_page', reset(array_keys($pageSet->getGoodTitles())));
-
- if(!is_null($params['user'])) {
- $this->addWhereFld('rev_user_text', $params['user']);
- } elseif (!is_null($params['excludeuser'])) {
- $this->addWhere('rev_user_text != ' .
- $this->getDB()->addQuotes($params['excludeuser']));
+ $ids = array_keys( $pageSet->getGoodTitles() );
+ $this->addWhereFld( 'rev_page', reset( $ids ) );
+
+ if ( !is_null( $params['user'] ) ) {
+ $this->addWhereFld( 'rev_user_text', $params['user'] );
+ } elseif ( !is_null( $params['excludeuser'] ) ) {
+ $this->addWhere( 'rev_user_text != ' .
+ $db->addQuotes( $params['excludeuser'] ) );
}
- if(!is_null($params['user']) || !is_null($params['excludeuser'])) {
+ if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
// Paranoia: avoid brute force searches (bug 17342)
- $this->addWhere('rev_deleted & ' . Revision::DELETED_USER . ' = 0');
+ $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
}
}
- elseif ($revCount > 0) {
+ elseif ( $revCount > 0 ) {
$max = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
$revs = $pageSet->getRevisionIDs();
- if(self::truncateArray($revs, $max))
- $this->setWarning("Too many values supplied for parameter 'revids': the limit is $max");
+ if ( self::truncateArray( $revs, $max ) )
+ $this->setWarning( "Too many values supplied for parameter 'revids': the limit is $max" );
// Get all revision IDs
- $this->addWhereFld('rev_id', array_keys($revs));
+ $this->addWhereFld( 'rev_id', array_keys( $revs ) );
- if(!is_null($params['continue']))
- $this->addWhere("rev_id >= '" . intval($params['continue']) . "'");
- $this->addOption('ORDER BY', 'rev_id');
+ if ( !is_null( $params['continue'] ) )
+ $this->addWhere( "rev_id >= '" . intval( $params['continue'] ) . "'" );
+ $this->addOption( 'ORDER BY', 'rev_id' );
// assumption testing -- we should never get more then $revCount rows.
$limit = $revCount;
}
- elseif ($pageCount > 0) {
+ elseif ( $pageCount > 0 ) {
$max = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
$titles = $pageSet->getGoodTitles();
- if(self::truncateArray($titles, $max))
- $this->setWarning("Too many values supplied for parameter 'titles': the limit is $max");
+ if ( self::truncateArray( $titles, $max ) )
+ $this->setWarning( "Too many values supplied for parameter 'titles': the limit is $max" );
// When working in multi-page non-enumeration mode,
// limit to the latest revision only
- $this->addWhere('page_id=rev_page');
- $this->addWhere('page_latest=rev_id');
+ $this->addWhere( 'page_id=rev_page' );
+ $this->addWhere( 'page_latest=rev_id' );
// Get all page IDs
- $this->addWhereFld('page_id', array_keys($titles));
+ $this->addWhereFld( 'page_id', array_keys( $titles ) );
// Every time someone relies on equality propagation, god kills a kitten :)
- $this->addWhereFld('rev_page', array_keys($titles));
+ $this->addWhereFld( 'rev_page', array_keys( $titles ) );
- if(!is_null($params['continue']))
+ if ( !is_null( $params['continue'] ) )
{
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the original " .
- "value returned by the previous query", "_badcontinue");
- $pageid = intval($cont[0]);
- $revid = intval($cont[1]);
- $this->addWhere("rev_page > '$pageid' OR " .
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the original " .
+ "value returned by the previous query", "_badcontinue" );
+ $pageid = intval( $cont[0] );
+ $revid = intval( $cont[1] );
+ $this->addWhere( "rev_page > '$pageid' OR " .
"(rev_page = '$pageid' AND " .
- "rev_id >= '$revid')");
+ "rev_id >= '$revid')" );
}
- $this->addOption('ORDER BY', 'rev_page, rev_id');
+ $this->addOption( 'ORDER BY', 'rev_page, rev_id' );
// assumption testing -- we should never get more then $pageCount rows.
$limit = $pageCount;
} else
- ApiBase :: dieDebug(__METHOD__, 'param validation?');
+ ApiBase :: dieDebug( __METHOD__, 'param validation?' );
- $this->addOption('LIMIT', $limit +1);
+ $this->addOption( 'LIMIT', $limit + 1 );
+ $this->addOption( 'USE INDEX', $index );
$data = array ();
$count = 0;
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- $db = $this->getDB();
- while ($row = $db->fetchObject($res)) {
+ while ( $row = $db->fetchObject( $res ) ) {
- if (++ $count > $limit) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- if (!$enumRevMode)
- ApiBase :: dieDebug(__METHOD__, 'Got more rows then expected'); // bug report
- $this->setContinueEnumParameter('startid', intval($row->rev_id));
+ if ( !$enumRevMode )
+ ApiBase :: dieDebug( __METHOD__, 'Got more rows then expected' ); // bug report
+ $this->setContinueEnumParameter( 'startid', intval( $row->rev_id ) );
break;
}
- $revision = new Revision( $row );
+
//
- $fit = $this->addPageSubItem($revision->getPage(), $this->extractRowInfo($revision), 'rev');
- if(!$fit)
+ $fit = $this->addPageSubItem( $row->rev_page, $this->extractRowInfo( $row ), 'rev' );
+ if ( !$fit )
{
- if($enumRevMode)
- $this->setContinueEnumParameter('startid', intval($row->rev_id));
- else if($revCount > 0)
- $this->setContinueEnumParameter('continue', intval($row->rev_id));
+ if ( $enumRevMode )
+ $this->setContinueEnumParameter( 'startid', intval( $row->rev_id ) );
+ else if ( $revCount > 0 )
+ $this->setContinueEnumParameter( 'continue', intval( $row->rev_id ) );
else
- $this->setContinueEnumParameter('continue', intval($row->rev_page) .
- '|' . intval($row->rev_id));
+ $this->setContinueEnumParameter( 'continue', intval( $row->rev_page ) .
+ '|' . intval( $row->rev_id ) );
break;
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
}
- private function extractRowInfo( $revision ) {
+ private function extractRowInfo( $row ) {
+ $revision = new Revision( $row );
$title = $revision->getTitle();
$vals = array ();
- if ($this->fld_ids) {
- $vals['revid'] = intval($revision->getId());
+ if ( $this->fld_ids ) {
+ $vals['revid'] = intval( $revision->getId() );
// $vals['oldid'] = intval($row->rev_text_id); // todo: should this be exposed?
+ if ( !is_null( $revision->getParentId() ) )
+ $vals['parentid'] = intval( $revision->getParentId() );
}
- if ($this->fld_flags && $revision->isMinor())
+ if ( $this->fld_flags && $revision->isMinor() )
$vals['minor'] = '';
- if ($this->fld_user) {
- if ($revision->isDeleted(Revision::DELETED_USER)) {
+ if ( $this->fld_user ) {
+ if ( $revision->isDeleted( Revision::DELETED_USER ) ) {
$vals['userhidden'] = '';
} else {
$vals['user'] = $revision->getUserText();
- if (!$revision->getUser())
+ if ( !$revision->getUser() )
$vals['anon'] = '';
}
}
- if ($this->fld_timestamp) {
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $revision->getTimestamp());
+ if ( $this->fld_timestamp ) {
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $revision->getTimestamp() );
}
- if ($this->fld_size && !is_null($revision->getSize())) {
- $vals['size'] = intval($revision->getSize());
+ if ( $this->fld_size && !is_null( $revision->getSize() ) ) {
+ $vals['size'] = intval( $revision->getSize() );
}
- if ($this->fld_comment) {
- if ($revision->isDeleted(Revision::DELETED_COMMENT)) {
+ if ( $this->fld_comment || $this->fld_parsedcomment ) {
+ if ( $revision->isDeleted( Revision::DELETED_COMMENT ) ) {
$vals['commenthidden'] = '';
} else {
$comment = $revision->getComment();
- if (strval($comment) !== '')
- $vals['comment'] = $comment;
+ if ( strval( $comment ) !== '' )
+ {
+ if ( $this->fld_comment )
+ $vals['comment'] = $comment;
+
+ if ( $this->fld_parsedcomment ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $comment, $title );
+ }
+ }
}
- }
+ }
- if(!is_null($this->token))
+ if ( $this->fld_tags ) {
+ if ( $row->ts_tags ) {
+ $tags = explode( ',', $row->ts_tags );
+ $this->getResult()->setIndexedTagName( $tags, 'tag' );
+ $vals['tags'] = $tags;
+ } else {
+ $vals['tags'] = array();
+ }
+ }
+
+ if ( !is_null( $this->token ) )
{
$tokenFunctions = $this->getTokenFunctions();
- foreach($this->token as $t)
+ foreach ( $this->token as $t )
{
- $val = call_user_func($tokenFunctions[$t], $title->getArticleID(), $title, $revision);
- if($val === false)
- $this->setWarning("Action '$t' is not allowed for the current user");
+ $val = call_user_func( $tokenFunctions[$t], $title->getArticleID(), $title, $revision );
+ if ( $val === false )
+ $this->setWarning( "Action '$t' is not allowed for the current user" );
else
$vals[$t . 'token'] = $val;
}
}
- if ($this->fld_content && !$revision->isDeleted(Revision::DELETED_TEXT)) {
+ $text = null;
+ if ( $this->fld_content || !is_null( $this->difftotext ) ) {
global $wgParser;
$text = $revision->getText();
- # Expand templates after getting section content because
- # template-added sections don't count and Parser::preprocess()
- # will have less input
- if ($this->section !== false) {
- $text = $wgParser->getSection( $text, $this->section, false);
- if($text === false)
- $this->dieUsage("There is no section {$this->section} in r".$revision->getId(), 'nosuchsection');
+ // Expand templates after getting section content because
+ // template-added sections don't count and Parser::preprocess()
+ // will have less input
+ if ( $this->section !== false ) {
+ $text = $wgParser->getSection( $text, $this->section, false );
+ if ( $text === false )
+ $this->dieUsage( "There is no section {$this->section} in r" . $revision->getId(), 'nosuchsection' );
}
- if ($this->generateXML) {
+ }
+ if ( $this->fld_content && !$revision->isDeleted( Revision::DELETED_TEXT ) ) {
+ if ( $this->generateXML ) {
$wgParser->startExternalParse( $title, new ParserOptions(), OT_PREPROCESS );
$dom = $wgParser->preprocessToDom( $text );
if ( is_callable( array( $dom, 'saveXML' ) ) ) {
@@ -385,24 +432,30 @@ class ApiQueryRevisions extends ApiQueryBase {
$vals['parsetree'] = $xml;
}
- if ($this->expandTemplates) {
+ if ( $this->expandTemplates ) {
$text = $wgParser->preprocess( $text, $title, new ParserOptions() );
}
- ApiResult :: setContent($vals, $text);
- } else if ($this->fld_content) {
+ ApiResult :: setContent( $vals, $text );
+ } else if ( $this->fld_content ) {
$vals['texthidden'] = '';
}
- if (!is_null($this->diffto)) {
+ if ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
global $wgAPIMaxUncachedDiffs;
- static $n = 0; // Numer of uncached diffs we've had
- if($n< $wgAPIMaxUncachedDiffs) {
- $engine = new DifferenceEngine($title, $revision->getID(), $this->diffto);
+ static $n = 0; // Number of uncached diffs we've had
+ if ( $n < $wgAPIMaxUncachedDiffs ) {
+ $vals['diff'] = array();
+ if ( !is_null( $this->difftotext ) ) {
+ $engine = new DifferenceEngine( $title );
+ $engine->setText( $text, $this->difftotext );
+ } else {
+ $engine = new DifferenceEngine( $title, $revision->getID(), $this->diffto );
+ $vals['diff']['from'] = $engine->getOldid();
+ $vals['diff']['to'] = $engine->getNewid();
+ }
$difftext = $engine->getDiffBody();
- $vals['diff']['from'] = $engine->getOldid();
- $vals['diff']['to'] = $engine->getNewid();
- ApiResult::setContent($vals['diff'], $difftext);
- if(!$engine->wasCacheHit())
+ ApiResult::setContent( $vals['diff'], $difftext );
+ if ( !$engine->wasCacheHit() )
$n++;
} else {
$vals['diff']['notcached'] = '';
@@ -434,7 +487,9 @@ class ApiQueryRevisions extends ApiQueryBase {
'user',
'size',
'comment',
+ 'parsedcomment',
'content',
+ 'tags'
)
),
'limit' => array (
@@ -468,36 +523,41 @@ class ApiQueryRevisions extends ApiQueryBase {
'excludeuser' => array(
ApiBase :: PARAM_TYPE => 'user'
),
+ 'tag' => null,
'expandtemplates' => false,
'generatexml' => false,
'section' => null,
'token' => array(
- ApiBase :: PARAM_TYPE => array_keys($this->getTokenFunctions()),
+ ApiBase :: PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
ApiBase :: PARAM_ISMULTI => true
),
'continue' => null,
'diffto' => null,
+ 'difftotext' => null,
);
}
public function getParamDescription() {
return array (
'prop' => 'Which properties to get for each revision.',
- 'limit' => 'limit how many revisions will be returned (enum)',
- 'startid' => 'from which revision id to start enumeration (enum)',
- 'endid' => 'stop revision enumeration on this revid (enum)',
- 'start' => 'from which revision timestamp to start enumeration (enum)',
- 'end' => 'enumerate up to this timestamp (enum)',
- 'dir' => 'direction of enumeration - towards "newer" or "older" revisions (enum)',
- 'user' => 'only include revisions made by user',
- 'excludeuser' => 'exclude revisions made by user',
- 'expandtemplates' => 'expand templates in revision content',
- 'generatexml' => 'generate XML parse tree for revision content',
- 'section' => 'only retrieve the content of this section',
+ 'limit' => 'Limit how many revisions will be returned (enum)',
+ 'startid' => 'From which revision id to start enumeration (enum)',
+ 'endid' => 'Stop revision enumeration on this revid (enum)',
+ 'start' => 'From which revision timestamp to start enumeration (enum)',
+ 'end' => 'Enumerate up to this timestamp (enum)',
+ 'dir' => 'Direction of enumeration - towards "newer" or "older" revisions (enum)',
+ 'user' => 'Only include revisions made by user',
+ 'excludeuser' => 'Exclude revisions made by user',
+ 'expandtemplates' => 'Expand templates in revision content',
+ 'generatexml' => 'Generate XML parse tree for revision content',
+ 'section' => 'Only retrieve the content of this section',
'token' => 'Which tokens to obtain for each revision',
'continue' => 'When more results are available, use this to continue',
- 'diffto' => array('Revision ID to diff each revision to.',
- 'Use "prev", "next" and "cur" for the previous, next and current revision respectively.'),
+ 'diffto' => array( 'Revision ID to diff each revision to.',
+ 'Use "prev", "next" and "cur" for the previous, next and current revision respectively.' ),
+ 'difftotext' => array( 'Text to diff each revision to. Only diffs a limited number of revisions.',
+ 'Overrides diffto. If rvsection is set, only that section will be diffed against this text.' ),
+ 'tag' => 'Only list revisions tagged with this tag',
);
}
@@ -511,6 +571,19 @@ class ApiQueryRevisions extends ApiQueryBase {
'All parameters marked as (enum) may only be used with a single page (#2).'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'nosuchrevid', 'diffto' ),
+ array( 'code' => 'revids', 'info' => 'The revids= parameter may not be used with the list options (limit, startid, endid, dirNewer, start, end).' ),
+ array( 'code' => 'multpages', 'info' => 'titles, pageids or a generator was used to supply multiple pages, but the limit, startid, endid, dirNewer, user, excludeuser, start and end parameters may only be used on a single page.' ),
+ array( 'code' => 'diffto', 'info' => 'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"' ),
+ array( 'code' => 'badparams', 'info' => 'start and startid cannot be used together' ),
+ array( 'code' => 'badparams', 'info' => 'end and endid cannot be used together' ),
+ array( 'code' => 'badparams', 'info' => 'user and excludeuser cannot be used together' ),
+ array( 'code' => 'nosuchsection', 'info' => 'There is no section section in rID' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -530,6 +603,6 @@ class ApiQueryRevisions extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryRevisions.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryRevisions.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php
index a8f3fcc8..4e032321 100644
--- a/includes/api/ApiQuerySearch.php
+++ b/includes/api/ApiQuerySearch.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,36 +35,42 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQuerySearch extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'sr');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'sr' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
-
+ private function run( $resultPageSet = null ) {
+ global $wgContLang;
$params = $this->extractRequestParams();
+ // Extract parameters
$limit = $params['limit'];
$query = $params['search'];
$what = $params['what'];
- if (strval($query) === '')
- $this->dieUsage("empty search string is not allowed", 'param-search');
+ $searchInfo = array_flip( $params['info'] );
+ $prop = array_flip( $params['prop'] );
+
+ if ( strval( $query ) === '' )
+ $this->dieUsage( "empty search string is not allowed", 'param-search' );
+ // Create search engine instance and set options
$search = SearchEngine::create();
- $search->setLimitOffset( $limit+1, $params['offset'] );
+ $search->setLimitOffset( $limit + 1, $params['offset'] );
$search->setNamespaces( $params['namespace'] );
$search->showRedirects = $params['redirects'];
- if ($what == 'text') {
+ // Perform the actual search
+ if ( $what == 'text' ) {
$matches = $search->searchText( $query );
- } elseif( $what == 'title' ) {
+ } elseif ( $what == 'title' ) {
$matches = $search->searchTitle( $query );
} else {
// We default to title searches; this is a terrible legacy
@@ -78,36 +84,61 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
// for instance the Lucene-based engine we use on Wikipedia.
// In this case, fall back to full-text search (which will
// include titles in it!)
- if( is_null( $matches ) ) {
+ if ( is_null( $matches ) ) {
$what = 'text';
$matches = $search->searchText( $query );
}
}
- if (is_null($matches))
- $this->dieUsage("{$what} search is disabled",
- "search-{$what}-disabled");
+ if ( is_null( $matches ) )
+ $this->dieUsage( "{$what} search is disabled", "search-{$what}-disabled" );
+
+ // Add search meta data to result
+ if ( isset( $searchInfo['totalhits'] ) ) {
+ $totalhits = $matches->getTotalHits();
+ if ( $totalhits !== null ) {
+ $this->getResult()->addValue( array( 'query', 'searchinfo' ),
+ 'totalhits', $totalhits );
+ }
+ }
+ if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) {
+ $this->getResult()->addValue( array( 'query', 'searchinfo' ),
+ 'suggestion', $matches->getSuggestionQuery() );
+ }
+ // Add the search results to the result
+ $terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
$titles = array ();
$count = 0;
- while( $result = $matches->next() ) {
- if (++ $count > $limit) {
+ while ( $result = $matches->next() ) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional items to be had. Stop here...
- $this->setContinueEnumParameter('offset', $params['offset'] + $params['limit']);
+ $this->setContinueEnumParameter( 'offset', $params['offset'] + $params['limit'] );
break;
}
// Silently skip broken and missing titles
- if ($result->isBrokenTitle() || $result->isMissingRevision())
+ if ( $result->isBrokenTitle() || $result->isMissingRevision() )
continue;
$title = $result->getTitle();
- if (is_null($resultPageSet)) {
+ if ( is_null( $resultPageSet ) ) {
$vals = array();
- ApiQueryBase::addTitleInfo($vals, $title);
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
- {
- $this->setContinueEnumParameter('offset', $params['offset'] + $count - 1);
+ ApiQueryBase::addTitleInfo( $vals, $title );
+
+ if ( isset( $prop['snippet'] ) )
+ $vals['snippet'] = $result->getTextSnippet( $terms );
+ if ( isset( $prop['size'] ) )
+ $vals['size'] = $result->getByteSize();
+ if ( isset( $prop['wordcount'] ) )
+ $vals['wordcount'] = $result->getWordCount();
+ if ( isset( $prop['timestamp'] ) )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $result->getTimestamp() );
+
+ // Add item to results and see whether it fits
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ),
+ null, $vals );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'offset', $params['offset'] + $count - 1 );
break;
}
} else {
@@ -115,10 +146,12 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
}
}
- if (is_null($resultPageSet)) {
- $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'p');
+ if ( is_null( $resultPageSet ) ) {
+ $this->getResult()->setIndexedTagName_internal( array(
+ 'query', $this->getModuleName()
+ ), 'p' );
} else {
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
}
@@ -141,14 +174,32 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
'text',
)
),
+ 'info' => array(
+ ApiBase :: PARAM_DFLT => 'totalhits|suggestion',
+ ApiBase :: PARAM_TYPE => array (
+ 'totalhits',
+ 'suggestion',
+ ),
+ ApiBase :: PARAM_ISMULTI => true,
+ ),
+ 'prop' => array(
+ ApiBase :: PARAM_DFLT => 'size|wordcount|timestamp|snippet',
+ ApiBase :: PARAM_TYPE => array (
+ 'size',
+ 'wordcount',
+ 'timestamp',
+ 'snippet',
+ ),
+ ApiBase :: PARAM_ISMULTI => true,
+ ),
'redirects' => false,
'offset' => 0,
'limit' => array (
ApiBase :: PARAM_DFLT => 10,
ApiBase :: PARAM_TYPE => 'limit',
ApiBase :: PARAM_MIN => 1,
- ApiBase :: PARAM_MAX => ApiBase :: LIMIT_BIG1,
- ApiBase :: PARAM_MAX2 => ApiBase :: LIMIT_BIG2
+ ApiBase :: PARAM_MAX => ApiBase :: LIMIT_SML1,
+ ApiBase :: PARAM_MAX2 => ApiBase :: LIMIT_SML2
)
);
}
@@ -158,6 +209,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
'search' => 'Search for all page titles (or content) that has this value.',
'namespace' => 'The namespace(s) to enumerate.',
'what' => 'Search inside the text or titles.',
+ 'info' => 'What metadata to return.',
+ 'prop' => 'What properties to return.',
'redirects' => 'Include redirect pages in the search.',
'offset' => 'Use this value to continue paging (return by query)',
'limit' => 'How many total pages to return.'
@@ -167,6 +220,14 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
public function getDescription() {
return 'Perform a full text search';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'param-search', 'info' => 'empty search string is not allowed' ),
+ array( 'code' => 'search-text-disabled', 'info' => 'text search is disabled' ),
+ array( 'code' => 'search-title-disabled', 'info' => 'title search is disabled' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -177,6 +238,6 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQuerySearch.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQuerySearch.php 69932 2010-07-26 08:03:21Z tstarling $';
}
-} \ No newline at end of file
+}
diff --git a/includes/api/ApiQuerySiteinfo.php b/includes/api/ApiQuerySiteinfo.php
index 623855f6..0385e192 100644
--- a/includes/api/ApiQuerySiteinfo.php
+++ b/includes/api/ApiQuerySiteinfo.php
@@ -23,7 +23,7 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if( !defined('MEDIAWIKI') ) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
require_once( 'ApiQueryBase.php' );
}
@@ -42,7 +42,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
public function execute() {
$params = $this->extractRequestParams();
$done = array();
- foreach( $params['prop'] as $p )
+ foreach ( $params['prop'] as $p )
{
switch ( $p )
{
@@ -72,7 +72,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$fit = $this->appendStatistics( $p );
break;
case 'usergroups':
- $fit = $this->appendUserGroups( $p );
+ $fit = $this->appendUserGroups( $p, $params['numberingroup'] );
break;
case 'extensions':
$fit = $this->appendExtensions( $p );
@@ -83,15 +83,18 @@ class ApiQuerySiteinfo extends ApiQueryBase {
case 'rightsinfo':
$fit = $this->appendRightsInfo( $p );
break;
+ case 'languages':
+ $fit = $this->appendLanguages( $p );
+ break;
default :
ApiBase :: dieDebug( __METHOD__, "Unknown prop=$p" );
}
- if(!$fit)
+ if ( !$fit )
{
- # Abuse siprop as a query-continue parameter
- # and set it to all unprocessed props
- $this->setContinueEnumParameter('prop', implode('|',
- array_diff($params['prop'], $done)));
+ // Abuse siprop as a query-continue parameter
+ // and set it to all unprocessed props
+ $this->setContinueEnumParameter( 'prop', implode( '|',
+ array_diff( $params['prop'], $done ) ) );
break;
}
$done[] = $p;
@@ -99,45 +102,59 @@ class ApiQuerySiteinfo extends ApiQueryBase {
}
protected function appendGeneralInfo( $property ) {
- global $wgSitename, $wgVersion, $wgCapitalLinks, $wgRightsCode, $wgRightsText, $wgContLang;
- global $wgLanguageCode, $IP, $wgEnableWriteAPI, $wgLang, $wgLocaltimezone, $wgLocalTZoffset;
+ global $wgContLang;
+ global $wgLang;
$data = array();
- $mainPage = Title :: newFromText(wfMsgForContent('mainpage'));
+ $mainPage = Title :: newFromText( wfMsgForContent( 'mainpage' ) );
$data['mainpage'] = $mainPage->getPrefixedText();
$data['base'] = $mainPage->getFullUrl();
- $data['sitename'] = $wgSitename;
- $data['generator'] = "MediaWiki $wgVersion";
-
- $svn = SpecialVersion::getSvnRevision( $IP );
- if( $svn )
+ $data['sitename'] = $GLOBALS['wgSitename'];
+ $data['generator'] = "MediaWiki {$GLOBALS['wgVersion']}";
+ $data['phpversion'] = phpversion();
+ $data['phpsapi'] = php_sapi_name();
+ $data['dbtype'] = $GLOBALS['wgDBtype'];
+ $data['dbversion'] = $this->getDB()->getServerVersion();
+
+ $svn = SpecialVersion::getSvnRevision( $GLOBALS['IP'] );
+ if ( $svn )
$data['rev'] = $svn;
- $data['case'] = $wgCapitalLinks ? 'first-letter' : 'case-sensitive'; // 'case-insensitive' option is reserved for future
+ // 'case-insensitive' option is reserved for future
+ $data['case'] = $GLOBALS['wgCapitalLinks'] ? 'first-letter' : 'case-sensitive';
- if( isset( $wgRightsCode ) )
- $data['rightscode'] = $wgRightsCode;
- $data['rights'] = $wgRightsText;
- $data['lang'] = $wgLanguageCode;
- if( $wgContLang->isRTL() )
+ if ( isset( $GLOBALS['wgRightsCode'] ) )
+ $data['rightscode'] = $GLOBALS['wgRightsCode'];
+ $data['rights'] = $GLOBALS['wgRightsText'];
+ $data['lang'] = $GLOBALS['wgLanguageCode'];
+ if ( $wgContLang->isRTL() )
$data['rtl'] = '';
$data['fallback8bitEncoding'] = $wgLang->fallback8bitEncoding();
- if( wfReadOnly() )
+ if ( wfReadOnly() ) {
$data['readonly'] = '';
- if( $wgEnableWriteAPI )
+ $data['readonlyreason'] = wfReadOnlyReason();
+ }
+ if ( $GLOBALS['wgEnableWriteAPI'] )
$data['writeapi'] = '';
- $tz = $wgLocaltimezone;
- $offset = $wgLocalTZoffset;
- if( is_null( $tz ) ) {
+ $tz = $GLOBALS['wgLocaltimezone'];
+ $offset = $GLOBALS['wgLocalTZoffset'];
+ if ( is_null( $tz ) ) {
$tz = 'UTC';
$offset = 0;
- } elseif( is_null( $offset ) ) {
+ } elseif ( is_null( $offset ) ) {
$offset = 0;
}
$data['timezone'] = $tz;
- $data['timeoffset'] = intval($offset);
+ $data['timeoffset'] = intval( $offset );
+ $data['articlepath'] = $GLOBALS['wgArticlePath'];
+ $data['scriptpath'] = $GLOBALS['wgScriptPath'];
+ $data['script'] = $GLOBALS['wgScript'];
+ $data['variantarticlepath'] = $GLOBALS['wgVariantArticlePath'];
+ $data['server'] = $GLOBALS['wgServer'];
+ $data['wikiid'] = wfWikiID();
+ $data['time'] = wfTimestamp( TS_ISO_8601, time() );
return $this->getResult()->addValue( 'query', $property, $data );
}
@@ -145,19 +162,23 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendNamespaces( $property ) {
global $wgContLang;
$data = array();
- foreach( $wgContLang->getFormattedNamespaces() as $ns => $title )
+ foreach ( $wgContLang->getFormattedNamespaces() as $ns => $title )
{
$data[$ns] = array(
- 'id' => intval($ns)
+ 'id' => intval( $ns ),
+ 'case' => MWNamespace::isCapitalized( $ns ) ? 'first-letter' : 'case-sensitive',
);
ApiResult :: setContent( $data[$ns], $title );
$canonical = MWNamespace::getCanonicalName( $ns );
- if( MWNamespace::hasSubpages( $ns ) )
+ if ( MWNamespace::hasSubpages( $ns ) )
$data[$ns]['subpages'] = '';
- if( $canonical )
- $data[$ns]['canonical'] = strtr($canonical, '_', ' ');
+ if ( $canonical )
+ $data[$ns]['canonical'] = strtr( $canonical, '_', ' ' );
+
+ if ( MWNamespace::isContent( $ns ) )
+ $data[$ns]['content'] = '';
}
$this->getResult()->setIndexedTagName( $data, 'ns' );
@@ -166,17 +187,16 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendNamespaceAliases( $property ) {
global $wgNamespaceAliases, $wgContLang;
- $wgContLang->load();
- $aliases = array_merge( $wgNamespaceAliases, $wgContLang->namespaceAliases );
+ $aliases = array_merge( $wgNamespaceAliases, $wgContLang->getNamespaceAliases() );
$namespaces = $wgContLang->getNamespaces();
$data = array();
- foreach( $aliases as $title => $ns ) {
- if( $namespaces[$ns] == $title ) {
+ foreach ( $aliases as $title => $ns ) {
+ if ( $namespaces[$ns] == $title ) {
// Don't list duplicates
continue;
}
$item = array(
- 'id' => intval($ns)
+ 'id' => intval( $ns )
);
ApiResult :: setContent( $item, strtr( $title, '_', ' ' ) );
$data[] = $item;
@@ -189,7 +209,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendSpecialPageAliases( $property ) {
global $wgLang;
$data = array();
- foreach( $wgLang->getSpecialPageAliases() as $specialpage => $aliases )
+ foreach ( $wgLang->getSpecialPageAliases() as $specialpage => $aliases )
{
$arr = array( 'realname' => $specialpage, 'aliases' => $aliases );
$this->getResult()->setIndexedTagName( $arr['aliases'], 'alias' );
@@ -202,16 +222,16 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendMagicWords( $property ) {
global $wgContLang;
$data = array();
- foreach($wgContLang->getMagicWords() as $magicword => $aliases)
+ foreach ( $wgContLang->getMagicWords() as $magicword => $aliases )
{
- $caseSensitive = array_shift($aliases);
- $arr = array('name' => $magicword, 'aliases' => $aliases);
- if($caseSensitive)
+ $caseSensitive = array_shift( $aliases );
+ $arr = array( 'name' => $magicword, 'aliases' => $aliases );
+ if ( $caseSensitive )
$arr['case-sensitive'] = '';
- $this->getResult()->setIndexedTagName($arr['aliases'], 'alias');
+ $this->getResult()->setIndexedTagName( $arr['aliases'], 'alias' );
$data[] = $arr;
}
- $this->getResult()->setIndexedTagName($data, 'magicword');
+ $this->getResult()->setIndexedTagName( $data, 'magicword' );
return $this->getResult()->addValue( 'query', $property, $data );
}
@@ -220,11 +240,11 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$this->addTables( 'interwiki' );
$this->addFields( array( 'iw_prefix', 'iw_local', 'iw_url' ) );
- if( $filter === 'local' )
+ if ( $filter === 'local' )
$this->addWhere( 'iw_local = 1' );
- elseif( $filter === '!local' )
+ elseif ( $filter === '!local' )
$this->addWhere( 'iw_local = 0' );
- elseif( $filter )
+ elseif ( $filter )
ApiBase :: dieDebug( __METHOD__, "Unknown filter=$filter" );
$this->addOption( 'ORDER BY', 'iw_prefix' );
@@ -234,14 +254,14 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$data = array();
$langNames = Language::getLanguageNames();
- while( $row = $db->fetchObject($res) )
+ while ( $row = $db->fetchObject( $res ) )
{
$val = array();
$val['prefix'] = $row->iw_prefix;
- if( $row->iw_local == '1' )
+ if ( $row->iw_local == '1' )
$val['local'] = '';
// $val['trans'] = intval($row->iw_trans); // should this be exposed?
- if( isset( $langNames[$row->iw_prefix] ) )
+ if ( isset( $langNames[$row->iw_prefix] ) )
$val['language'] = $langNames[$row->iw_prefix];
$val['url'] = $row->iw_url;
@@ -256,13 +276,13 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendDbReplLagInfo( $property, $includeAll ) {
global $wgShowHostnames;
$data = array();
- if( $includeAll ) {
+ if ( $includeAll ) {
if ( !$wgShowHostnames )
- $this->dieUsage('Cannot view all servers info unless $wgShowHostnames is true', 'includeAllDenied');
+ $this->dieUsage( 'Cannot view all servers info unless $wgShowHostnames is true', 'includeAllDenied' );
$lb = wfGetLB();
$lags = $lb->getLagTimes();
- foreach( $lags as $i => $lag ) {
+ foreach ( $lags as $i => $lag ) {
$data[] = array(
'host' => $lb->getServerName( $i ),
'lag' => $lag
@@ -293,16 +313,22 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$data['images'] = intval( SiteStats::images() );
$data['users'] = intval( SiteStats::users() );
$data['activeusers'] = intval( SiteStats::activeUsers() );
- $data['admins'] = intval( SiteStats::numberingroup('sysop') );
+ $data['admins'] = intval( SiteStats::numberingroup( 'sysop' ) );
$data['jobs'] = intval( SiteStats::jobs() );
return $this->getResult()->addValue( 'query', $property, $data );
}
- protected function appendUserGroups( $property ) {
+ protected function appendUserGroups( $property, $numberInGroup ) {
global $wgGroupPermissions;
$data = array();
- foreach( $wgGroupPermissions as $group => $permissions ) {
- $arr = array( 'name' => $group, 'rights' => array_keys( $permissions, true ) );
+ foreach ( $wgGroupPermissions as $group => $permissions ) {
+ $arr = array(
+ 'name' => $group,
+ 'rights' => array_keys( $permissions, true ),
+ );
+ if ( $numberInGroup )
+ $arr['number'] = SiteStats::numberInGroup( $group );
+
$this->getResult()->setIndexedTagName( $arr['rights'], 'permission' );
$data[] = $arr;
}
@@ -315,7 +341,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
global $wgFileExtensions;
$data = array();
- foreach( $wgFileExtensions as $ext ) {
+ foreach ( $wgFileExtensions as $ext ) {
$data[] = array( 'ext' => $ext );
}
$this->getResult()->setIndexedTagName( $data, 'fe' );
@@ -329,21 +355,32 @@ class ApiQuerySiteinfo extends ApiQueryBase {
foreach ( $extensions as $ext ) {
$ret = array();
$ret['type'] = $type;
- if ( isset( $ext['name'] ) )
+ if ( isset( $ext['name'] ) )
$ret['name'] = $ext['name'];
- if ( isset( $ext['description'] ) )
+ if ( isset( $ext['description'] ) )
$ret['description'] = $ext['description'];
- if ( isset( $ext['descriptionmsg'] ) )
- $ret['descriptionmsg'] = $ext['descriptionmsg'];
+ if ( isset( $ext['descriptionmsg'] ) ) {
+ // Can be a string or array( key, param1, param2, ... )
+ if ( is_array( $ext['descriptionmsg'] ) ) {
+ $ret['descriptionmsg'] = $ext['descriptionmsg'][0];
+ $ret['descriptionmsgparams'] = array_slice( $ext['descriptionmsg'], 1 );
+ $this->getResult()->setIndexedTagName( $ret['descriptionmsgparams'], 'param' );
+ } else {
+ $ret['descriptionmsg'] = $ext['descriptionmsg'];
+ }
+ }
if ( isset( $ext['author'] ) ) {
- $ret['author'] = is_array( $ext['author'] ) ?
+ $ret['author'] = is_array( $ext['author'] ) ?
implode( ', ', $ext['author' ] ) : $ext['author'];
}
+ if ( isset( $ext['url'] ) ) {
+ $ret['url'] = $ext['url'];
+ }
if ( isset( $ext['version'] ) ) {
$ret['version'] = $ext['version'];
- } elseif ( isset( $ext['svn-revision'] ) &&
- preg_match( '/\$(?:Rev|LastChangedRevision|Revision): *(\d+)/',
- $ext['svn-revision'], $m ) )
+ } elseif ( isset( $ext['svn-revision'] ) &&
+ preg_match( '/\$(?:Rev|LastChangedRevision|Revision): *(\d+)/',
+ $ext['svn-revision'], $m ) )
{
$ret['version'] = 'r' . $m[1];
}
@@ -361,7 +398,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$title = Title::newFromText( $wgRightsPage );
$url = $title ? $title->getFullURL() : $wgRightsUrl;
$text = $wgRightsText;
- if( !$text && $title ) {
+ if ( !$text && $title ) {
$text = $title->getPrefixedText();
}
@@ -373,6 +410,17 @@ class ApiQuerySiteinfo extends ApiQueryBase {
return $this->getResult()->addValue( 'query', $property, $data );
}
+ public function appendLanguages( $property ) {
+ $data = array();
+ foreach ( Language::getLanguageNames() as $code => $name ) {
+ $lang = array( 'code' => $code );
+ ApiResult::setContent( $lang, $name );
+ $data[] = $lang;
+ }
+ $this->getResult()->setIndexedTagName( $data, 'lang' );
+ return $this->getResult()->addValue( 'query', $property, $data );
+ }
+
public function getCacheMode( $params ) {
return 'public';
}
@@ -395,6 +443,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
'extensions',
'fileextensions',
'rightsinfo',
+ 'languages',
)
),
'filteriw' => array(
@@ -404,6 +453,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
)
),
'showalldb' => false,
+ 'numberingroup' => false,
);
}
@@ -423,9 +473,11 @@ class ApiQuerySiteinfo extends ApiQueryBase {
' extensions - Returns extensions installed on the wiki',
' fileextensions - Returns list of file extensions allowed to be uploaded',
' rightsinfo - Returns wiki rights (license) information if available',
+ ' languages - Returns a list of languages MediaWiki supports',
),
'filteriw' => 'Return only local or only nonlocal entries of the interwiki map',
'showalldb' => 'List all database servers, not just the one lagging the most',
+ 'numberingroup' => 'Lists the number of users in user groups',
);
}
@@ -433,6 +485,12 @@ class ApiQuerySiteinfo extends ApiQueryBase {
return 'Return general information about the site.';
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'includeAllDenied', 'info' => 'Cannot view all servers info unless $wgShowHostnames is true' ),
+ ) );
+ }
+
protected function getExamples() {
return array(
'api.php?action=query&meta=siteinfo&siprop=general|namespaces|namespacealiases|statistics',
@@ -442,6 +500,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQuerySiteinfo.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQuerySiteinfo.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryTags.php b/includes/api/ApiQueryTags.php
new file mode 100644
index 00000000..a5d152bc
--- /dev/null
+++ b/includes/api/ApiQueryTags.php
@@ -0,0 +1,181 @@
+<?php
+
+/*
+ * Created on Jul 9, 2009
+ *
+ * API for MediaWiki 1.8+
+ *
+ * Copyright (C) 2009
+ *
+ * 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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once ( 'ApiQueryBase.php' );
+}
+
+/**
+ * Query module to enumerate change tags.
+ *
+ * @ingroup API
+ */
+class ApiQueryTags extends ApiQueryBase {
+
+ private $limit, $result;
+ private $fld_displayname = false, $fld_description = false,
+ $fld_hitcount = false;
+
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'tg' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ $prop = array_flip( $params['prop'] );
+
+ $this->fld_displayname = isset( $prop['displayname'] );
+ $this->fld_description = isset( $prop['description'] );
+ $this->fld_hitcount = isset( $prop['hitcount'] );
+
+ $this->limit = $params['limit'];
+ $this->result = $this->getResult();
+
+ $pageSet = $this->getPageSet();
+ $titles = $pageSet->getTitles();
+ $data = array();
+
+ $this->addTables( 'change_tag' );
+ $this->addFields( 'ct_tag' );
+
+ if ( $this->fld_hitcount )
+ $this->addFields( 'count(*) AS hitcount' );
+
+ $this->addOption( 'LIMIT', $this->limit + 1 );
+ $this->addOption( 'GROUP BY', 'ct_tag' );
+ $this->addWhereRange( 'ct_tag', 'newer', $params['continue'], null );
+
+ $res = $this->select( __METHOD__ );
+
+ $ok = true;
+
+ while ( $row = $res->fetchObject() ) {
+ if ( !$ok ) break;
+ $ok = $this->doTag( $row->ct_tag, $row->hitcount );
+ }
+
+ // include tags with no hits yet
+ foreach ( ChangeTags::listDefinedTags() as $tag ) {
+ if ( !$ok ) break;
+ $ok = $this->doTag( $tag, 0 );
+ }
+
+ $this->result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'tag' );
+ }
+
+ private function doTag( $tagName, $hitcount ) {
+ static $count = 0;
+ static $doneTags = array();
+
+ if ( in_array( $tagName, $doneTags ) ) {
+ return true;
+ }
+
+ if ( ++$count > $this->limit )
+ {
+ $this->setContinueEnumParameter( 'continue', $tagName );
+ return false;
+ }
+
+ $tag = array();
+ $tag['name'] = $tagName;
+
+ if ( $this->fld_displayname )
+ $tag['displayname'] = ChangeTags::tagDescription( $tagName );
+
+ if ( $this->fld_description )
+ {
+ $msg = wfMsg( "tag-$tagName-description" );
+ $msg = wfEmptyMsg( "tag-$tagName-description", $msg ) ? '' : $msg;
+ $tag['description'] = $msg;
+ }
+
+ if ( $this->fld_hitcount )
+ $tag['hitcount'] = $hitcount;
+
+ $doneTags[] = $tagName;
+
+ $fit = $this->result->addValue( array( 'query', $this->getModuleName() ), null, $tag );
+ if ( !$fit )
+ {
+ $this->setContinueEnumParameter( 'continue', $tagName );
+ return false;
+ }
+
+ return true;
+ }
+
+ public function getCacheMode( $params ) {
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ return array (
+ 'continue' => array(
+ ),
+ 'limit' => array(
+ ApiBase :: PARAM_DFLT => 10,
+ ApiBase :: PARAM_TYPE => 'limit',
+ ApiBase :: PARAM_MIN => 1,
+ ApiBase :: PARAM_MAX => ApiBase :: LIMIT_BIG1,
+ ApiBase :: PARAM_MAX2 => ApiBase :: LIMIT_BIG2
+ ),
+ 'prop' => array(
+ ApiBase :: PARAM_DFLT => 'name',
+ ApiBase :: PARAM_TYPE => array(
+ 'name',
+ 'displayname',
+ 'description',
+ 'hitcount'
+ ),
+ ApiBase :: PARAM_ISMULTI => true
+ )
+ );
+ }
+
+ public function getParamDescription() {
+ return array (
+ 'continue' => 'When more results are available, use this to continue',
+ 'limit' => 'The maximum number of tags to list',
+ 'prop' => 'Which properties to get',
+ );
+ }
+
+ public function getDescription() {
+ return 'List change tags.';
+ }
+
+ protected function getExamples() {
+ return array (
+ 'api.php?action=query&list=tags&tgprop=displayname|description|hitcount'
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiQueryTags.php 69932 2010-07-26 08:03:21Z tstarling $';
+ }
+}
diff --git a/includes/api/ApiQueryUserContributions.php b/includes/api/ApiQueryUserContributions.php
index 1c5cffa5..b51b9adb 100644
--- a/includes/api/ApiQueryUserContributions.php
+++ b/includes/api/ApiQueryUserContributions.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,33 +35,35 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryContributions extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'uc');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'uc' );
}
private $params, $username;
private $fld_ids = false, $fld_title = false, $fld_timestamp = false,
- $fld_comment = false, $fld_flags = false,
- $fld_patrolled = false;
+ $fld_comment = false, $fld_parsedcomment = false, $fld_flags = false,
+ $fld_patrolled = false, $fld_tags = false;
public function execute() {
-
// Parse some parameters
$this->params = $this->extractRequestParams();
- $prop = array_flip($this->params['prop']);
- $this->fld_ids = isset($prop['ids']);
- $this->fld_title = isset($prop['title']);
- $this->fld_comment = isset($prop['comment']);
- $this->fld_flags = isset($prop['flags']);
- $this->fld_timestamp = isset($prop['timestamp']);
- $this->fld_patrolled = isset($prop['patrolled']);
+ $prop = array_flip( $this->params['prop'] );
+ $this->fld_ids = isset( $prop['ids'] );
+ $this->fld_title = isset( $prop['title'] );
+ $this->fld_comment = isset( $prop['comment'] );
+ $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $this->fld_size = isset( $prop['size'] );
+ $this->fld_flags = isset( $prop['flags'] );
+ $this->fld_timestamp = isset( $prop['timestamp'] );
+ $this->fld_patrolled = isset( $prop['patrolled'] );
+ $this->fld_tags = isset( $prop['tags'] );
// TODO: if the query is going only against the revision table, should this be done?
- $this->selectNamedDB('contributions', DB_SLAVE, 'contributions');
+ $this->selectNamedDB( 'contributions', DB_SLAVE, 'contributions' );
$db = $this->getDB();
- if(isset($this->params['userprefix']))
+ if ( isset( $this->params['userprefix'] ) )
{
$this->prefixMode = true;
$this->multiUserMode = true;
@@ -70,61 +72,63 @@ class ApiQueryContributions extends ApiQueryBase {
else
{
$this->usernames = array();
- if(!is_array($this->params['user']))
- $this->params['user'] = array($this->params['user']);
- foreach($this->params['user'] as $u)
- $this->prepareUsername($u);
+ if ( !is_array( $this->params['user'] ) )
+ $this->params['user'] = array( $this->params['user'] );
+ if ( !count( $this->params['user'] ) )
+ $this->dieUsage( 'User parameter may not be empty.', 'param_user' );
+ foreach ( $this->params['user'] as $u )
+ $this->prepareUsername( $u );
$this->prefixMode = false;
- $this->multiUserMode = (count($this->params['user']) > 1);
+ $this->multiUserMode = ( count( $this->params['user'] ) > 1 );
}
$this->prepareQuery();
- //Do the actual query.
+ // Do the actual query.
$res = $this->select( __METHOD__ );
- //Initialise some variables
+ // Initialise some variables
$count = 0;
$limit = $this->params['limit'];
- //Fetch each row
+ // Fetch each row
while ( $row = $db->fetchObject( $res ) ) {
- if (++ $count > $limit) {
+ if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- if($this->multiUserMode)
- $this->setContinueEnumParameter('continue', $this->continueStr($row));
+ if ( $this->multiUserMode )
+ $this->setContinueEnumParameter( 'continue', $this->continueStr( $row ) );
else
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->rev_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rev_timestamp ) );
break;
}
- $vals = $this->extractRowInfo($row);
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ $vals = $this->extractRowInfo( $row );
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- if($this->multiUserMode)
- $this->setContinueEnumParameter('continue', $this->continueStr($row));
+ if ( $this->multiUserMode )
+ $this->setContinueEnumParameter( 'continue', $this->continueStr( $row ) );
else
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->rev_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rev_timestamp ) );
break;
}
}
- //Free the database record so the connection can get on with other stuff
- $db->freeResult($res);
+ // Free the database record so the connection can get on with other stuff
+ $db->freeResult( $res );
- $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'item');
+ $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'item' );
}
/**
* Validate the 'user' parameter and set the value to compare
* against `revision`.`rev_user_text`
*/
- private function prepareUsername($user) {
- if( $user ) {
+ private function prepareUsername( $user ) {
+ if ( !is_null( $user ) && $user !== '' ) {
$name = User::isIP( $user )
? $user
: User::getCanonicalName( $user, 'valid' );
- if( $name === false ) {
+ if ( $name === false ) {
$this->dieUsage( "User name {$user} is not valid", 'param_user' );
} else {
$this->usernames[] = $name;
@@ -140,155 +144,202 @@ class ApiQueryContributions extends ApiQueryBase {
private function prepareQuery() {
// We're after the revision table, and the corresponding page
// row for anything we retrieve. We may also need the
- // recentchanges row.
- $tables = array('page', 'revision'); // Order may change
- $this->addWhere('page_id=rev_page');
+ // recentchanges row and/or tag summary row.
+ global $wgUser;
+ $tables = array( 'page', 'revision' ); // Order may change
+ $this->addWhere( 'page_id=rev_page' );
// Handle continue parameter
- if($this->multiUserMode && !is_null($this->params['continue']))
+ if ( $this->multiUserMode && !is_null( $this->params['continue'] ) )
{
- $continue = explode('|', $this->params['continue']);
- if(count($continue) != 2)
- $this->dieUsage("Invalid continue param. You should pass the original " .
- "value returned by the previous query", "_badcontinue");
- $encUser = $this->getDB()->strencode($continue[0]);
- $encTS = wfTimestamp(TS_MW, $continue[1]);
- $op = ($this->params['dir'] == 'older' ? '<' : '>');
- $this->addWhere("rev_user_text $op '$encUser' OR " .
+ $continue = explode( '|', $this->params['continue'] );
+ if ( count( $continue ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the original " .
+ "value returned by the previous query", "_badcontinue" );
+ $encUser = $this->getDB()->strencode( $continue[0] );
+ $encTS = wfTimestamp( TS_MW, $continue[1] );
+ $op = ( $this->params['dir'] == 'older' ? '<' : '>' );
+ $this->addWhere( "rev_user_text $op '$encUser' OR " .
"(rev_user_text = '$encUser' AND " .
- "rev_timestamp $op= '$encTS')");
+ "rev_timestamp $op= '$encTS')" );
}
- $this->addWhereFld('rev_deleted', 0);
+ if ( !$wgUser->isAllowed( 'hideuser' ) )
+ $this->addWhere( $this->getDB()->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
// We only want pages by the specified users.
- if($this->prefixMode)
- $this->addWhere("rev_user_text LIKE '" . $this->getDB()->escapeLike($this->userprefix) . "%'");
+ if ( $this->prefixMode )
+ $this->addWhere( 'rev_user_text' . $this->getDB()->buildLike( $this->userprefix, $this->getDB()->anyString() ) );
else
- $this->addWhereFld('rev_user_text', $this->usernames);
+ $this->addWhereFld( 'rev_user_text', $this->usernames );
// ... and in the specified timeframe.
// Ensure the same sort order for rev_user_text and rev_timestamp
// so our query is indexed
- if($this->multiUserMode)
- $this->addWhereRange('rev_user_text', $this->params['dir'], null, null);
- $this->addWhereRange('rev_timestamp',
+ if ( $this->multiUserMode )
+ $this->addWhereRange( 'rev_user_text', $this->params['dir'], null, null );
+ $this->addWhereRange( 'rev_timestamp',
$this->params['dir'], $this->params['start'], $this->params['end'] );
- $this->addWhereFld('page_namespace', $this->params['namespace']);
+ $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
$show = $this->params['show'];
- if (!is_null($show)) {
- $show = array_flip($show);
- if ((isset($show['minor']) && isset($show['!minor']))
- || (isset($show['patrolled']) && isset($show['!patrolled'])))
- $this->dieUsage("Incorrect parameter - mutually exclusive values may not be supplied", 'show');
-
- $this->addWhereIf('rev_minor_edit = 0', isset($show['!minor']));
- $this->addWhereIf('rev_minor_edit != 0', isset($show['minor']));
- $this->addWhereIf('rc_patrolled = 0', isset($show['!patrolled']));
- $this->addWhereIf('rc_patrolled != 0', isset($show['patrolled']));
+ if ( !is_null( $show ) ) {
+ $show = array_flip( $show );
+ if ( ( isset( $show['minor'] ) && isset( $show['!minor'] ) )
+ || ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) ) )
+ $this->dieUsageMsg( array( 'show' ) );
+
+ $this->addWhereIf( 'rev_minor_edit = 0', isset( $show['!minor'] ) );
+ $this->addWhereIf( 'rev_minor_edit != 0', isset( $show['minor'] ) );
+ $this->addWhereIf( 'rc_patrolled = 0', isset( $show['!patrolled'] ) );
+ $this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
}
- $this->addOption('LIMIT', $this->params['limit'] + 1);
- $index['revision'] = 'usertext_timestamp';
+ $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
+ $index = array( 'revision' => 'usertext_timestamp' );
// Mandatory fields: timestamp allows request continuation
// ns+title checks if the user has access rights for this page
// user_text is necessary if multiple users were specified
- $this->addFields(array(
+ $this->addFields( array(
'rev_timestamp',
'page_namespace',
'page_title',
'rev_user_text',
- ));
+ 'rev_deleted'
+ ) );
- if(isset($show['patrolled']) || isset($show['!patrolled']) ||
- $this->fld_patrolled)
+ if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ||
+ $this->fld_patrolled )
{
global $wgUser;
- if(!$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
- $this->dieUsage("You need the patrol right to request the patrolled flag", 'permissiondenied');
+ if ( !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol() )
+ $this->dieUsage( "You need the patrol right to request the patrolled flag", 'permissiondenied' );
// Use a redundant join condition on both
// timestamp and ID so we can use the timestamp
// index
$index['recentchanges'] = 'rc_user_text';
- if(isset($show['patrolled']) || isset($show['!patrolled']))
+ if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) )
{
// Put the tables in the right order for
// STRAIGHT_JOIN
- $tables = array('revision', 'recentchanges', 'page');
- $this->addOption('STRAIGHT_JOIN');
- $this->addWhere('rc_user_text=rev_user_text');
- $this->addWhere('rc_timestamp=rev_timestamp');
- $this->addWhere('rc_this_oldid=rev_id');
+ $tables = array( 'revision', 'recentchanges', 'page' );
+ $this->addOption( 'STRAIGHT_JOIN' );
+ $this->addWhere( 'rc_user_text=rev_user_text' );
+ $this->addWhere( 'rc_timestamp=rev_timestamp' );
+ $this->addWhere( 'rc_this_oldid=rev_id' );
}
else
{
$tables[] = 'recentchanges';
- $this->addJoinConds(array('recentchanges' => array(
+ $this->addJoinConds( array( 'recentchanges' => array(
'LEFT JOIN', array(
'rc_user_text=rev_user_text',
'rc_timestamp=rev_timestamp',
- 'rc_this_oldid=rev_id'))));
+ 'rc_this_oldid=rev_id' ) ) ) );
}
}
- $this->addTables($tables);
- $this->addOption('USE INDEX', $index);
- $this->addFieldsIf('rev_page', $this->fld_ids);
- $this->addFieldsIf('rev_id', $this->fld_ids || $this->fld_flags);
- $this->addFieldsIf('page_latest', $this->fld_flags);
+ $this->addTables( $tables );
+ $this->addFieldsIf( 'rev_page', $this->fld_ids );
+ $this->addFieldsIf( 'rev_id', $this->fld_ids || $this->fld_flags );
+ $this->addFieldsIf( 'page_latest', $this->fld_flags );
// $this->addFieldsIf('rev_text_id', $this->fld_ids); // Should this field be exposed?
- $this->addFieldsIf('rev_comment', $this->fld_comment);
- $this->addFieldsIf('rev_minor_edit', $this->fld_flags);
- $this->addFieldsIf('rev_parent_id', $this->fld_flags);
- $this->addFieldsIf('rc_patrolled', $this->fld_patrolled);
+ $this->addFieldsIf( 'rev_comment', $this->fld_comment || $this->fld_parsedcomment );
+ $this->addFieldsIf( 'rev_len', $this->fld_size );
+ $this->addFieldsIf( 'rev_minor_edit', $this->fld_flags );
+ $this->addFieldsIf( 'rev_parent_id', $this->fld_flags );
+ $this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
+
+ if ( $this->fld_tags )
+ {
+ $this->addTables( 'tag_summary' );
+ $this->addJoinConds( array( 'tag_summary' => array( 'LEFT JOIN', array( 'rev_id=ts_rev_id' ) ) ) );
+ $this->addFields( 'ts_tags' );
+ }
+
+ if ( isset( $this->params['tag'] ) ) {
+ $this->addTables( 'change_tag' );
+ $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) ) );
+ $this->addWhereFld( 'ct_tag', $this->params['tag'] );
+ global $wgOldChangeTagsIndex;
+ $index['change_tag'] = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
+ }
+
+ $this->addOption( 'USE INDEX', $index );
}
/**
* Extract fields from the database row and append them to a result array
*/
- private function extractRowInfo($row) {
+ private function extractRowInfo( $row ) {
$vals = array();
$vals['user'] = $row->rev_user_text;
- if ($this->fld_ids) {
- $vals['pageid'] = intval($row->rev_page);
- $vals['revid'] = intval($row->rev_id);
+ if ( $row->rev_deleted & Revision::DELETED_USER )
+ $vals['userhidden'] = '';
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->rev_page );
+ $vals['revid'] = intval( $row->rev_id );
// $vals['textid'] = intval($row->rev_text_id); // todo: Should this field be exposed?
}
- if ($this->fld_title)
- ApiQueryBase :: addTitleInfo($vals,
- Title :: makeTitle($row->page_namespace, $row->page_title));
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- if ($this->fld_timestamp)
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->rev_timestamp);
+ if ( $this->fld_title )
+ ApiQueryBase::addTitleInfo( $vals, $title );
- if ($this->fld_flags) {
- if ($row->rev_parent_id == 0)
+ if ( $this->fld_timestamp )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->rev_timestamp );
+
+ if ( $this->fld_flags ) {
+ if ( $row->rev_parent_id == 0 && !is_null( $row->rev_parent_id ) )
$vals['new'] = '';
- if ($row->rev_minor_edit)
+ if ( $row->rev_minor_edit )
$vals['minor'] = '';
- if ($row->page_latest == $row->rev_id)
+ if ( $row->page_latest == $row->rev_id )
$vals['top'] = '';
}
- if ($this->fld_comment && isset($row->rev_comment))
- $vals['comment'] = $row->rev_comment;
+ if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->rev_comment ) ) {
+ if ( $row->rev_deleted & Revision::DELETED_COMMENT )
+ $vals['commenthidden'] = '';
+ else {
+ if ( $this->fld_comment )
+ $vals['comment'] = $row->rev_comment;
+
+ if ( $this->fld_parsedcomment ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->rev_comment, $title );
+ }
+ }
+ }
- if ($this->fld_patrolled && $row->rc_patrolled)
+ if ( $this->fld_patrolled && $row->rc_patrolled )
$vals['patrolled'] = '';
-
+
+ if ( $this->fld_size && !is_null( $row->rev_len ) )
+ $vals['size'] = intval( $row->rev_len );
+
+ if ( $this->fld_tags ) {
+ if ( $row->ts_tags ) {
+ $tags = explode( ',', $row->ts_tags );
+ $this->getResult()->setIndexedTagName( $tags, 'tag' );
+ $vals['tags'] = $tags;
+ } else {
+ $vals['tags'] = array();
+ }
+ }
+
return $vals;
}
- private function continueStr($row)
+ private function continueStr( $row )
{
return $row->rev_user_text . '|' .
- wfTimestamp(TS_ISO_8601, $row->rev_timestamp);
+ wfTimestamp( TS_ISO_8601, $row->rev_timestamp );
}
public function getCacheMode( $params ) {
- // This module provides access to patrol flags if
+ // This module provides access to deleted revisions and patrol flags if
// the requester is logged in
return 'anon-public-user-private';
}
@@ -326,14 +377,17 @@ class ApiQueryContributions extends ApiQueryBase {
),
'prop' => array (
ApiBase :: PARAM_ISMULTI => true,
- ApiBase :: PARAM_DFLT => 'ids|title|timestamp|flags|comment',
+ ApiBase :: PARAM_DFLT => 'ids|title|timestamp|comment|size|flags',
ApiBase :: PARAM_TYPE => array (
'ids',
'title',
'timestamp',
'comment',
+ 'parsedcomment',
+ 'size',
'flags',
'patrolled',
+ 'tags'
)
),
'show' => array (
@@ -345,6 +399,7 @@ class ApiQueryContributions extends ApiQueryBase {
'!patrolled',
)
),
+ 'tag' => null,
);
}
@@ -359,14 +414,24 @@ class ApiQueryContributions extends ApiQueryBase {
'dir' => 'The direction to search (older or newer).',
'namespace' => 'Only list contributions in these namespaces',
'prop' => 'Include additional pieces of information',
- 'show' => array('Show only items that meet this criteria, e.g. non minor edits only: show=!minor',
- 'NOTE: if show=patrolled or show=!patrolled is set, revisions older than $wgRCMaxAge won\'t be shown',),
+ 'show' => array( 'Show only items that meet this criteria, e.g. non minor edits only: show=!minor',
+ 'NOTE: if show=patrolled or show=!patrolled is set, revisions older than $wgRCMaxAge won\'t be shown', ),
+ 'tag' => 'Only list revisions tagged with this tag',
);
}
public function getDescription() {
return 'Get all edits by a user';
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'param_user', 'info' => 'User parameter may not be empty.' ),
+ array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
+ array( 'show' ),
+ array( 'code' => 'permissiondenied', 'info' => 'You need the patrol right to request the patrolled flag' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -376,6 +441,6 @@ class ApiQueryContributions extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUserContributions.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryUserContributions.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryUserInfo.php b/includes/api/ApiQueryUserInfo.php
index e445c46e..42cb47b9 100644
--- a/includes/api/ApiQueryUserInfo.php
+++ b/includes/api/ApiQueryUserInfo.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryUserInfo extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'ui');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ui' );
}
public function execute() {
@@ -44,59 +44,76 @@ class ApiQueryUserInfo extends ApiQueryBase {
$result = $this->getResult();
$r = array();
- if (!is_null($params['prop'])) {
- $this->prop = array_flip($params['prop']);
+ if ( !is_null( $params['prop'] ) ) {
+ $this->prop = array_flip( $params['prop'] );
} else {
$this->prop = array();
}
$r = $this->getCurrentUserInfo();
- $result->addValue("query", $this->getModuleName(), $r);
+ $result->addValue( "query", $this->getModuleName(), $r );
}
protected function getCurrentUserInfo() {
global $wgUser;
$result = $this->getResult();
$vals = array();
- $vals['id'] = intval($wgUser->getId());
+ $vals['id'] = intval( $wgUser->getId() );
$vals['name'] = $wgUser->getName();
- if($wgUser->isAnon())
+ if ( $wgUser->isAnon() )
$vals['anon'] = '';
- if (isset($this->prop['blockinfo'])) {
- if ($wgUser->isBlocked()) {
- $vals['blockedby'] = User::whoIs($wgUser->blockedBy());
+
+ if ( isset( $this->prop['blockinfo'] ) ) {
+ if ( $wgUser->isBlocked() ) {
+ $vals['blockedby'] = User::whoIs( $wgUser->blockedBy() );
$vals['blockreason'] = $wgUser->blockedFor();
}
}
- if (isset($this->prop['hasmsg']) && $wgUser->getNewtalk()) {
+
+ if ( isset( $this->prop['hasmsg'] ) && $wgUser->getNewtalk() ) {
$vals['messages'] = '';
}
- if (isset($this->prop['groups'])) {
+
+ if ( isset( $this->prop['groups'] ) ) {
$vals['groups'] = $wgUser->getGroups();
- $result->setIndexedTagName($vals['groups'], 'g'); // even if empty
+ $result->setIndexedTagName( $vals['groups'], 'g' ); // even if empty
}
- if (isset($this->prop['rights'])) {
+
+ if ( isset( $this->prop['rights'] ) ) {
// User::getRights() may return duplicate values, strip them
- $vals['rights'] = array_values(array_unique($wgUser->getRights()));
- $result->setIndexedTagName($vals['rights'], 'r'); // even if empty
+ $vals['rights'] = array_values( array_unique( $wgUser->getRights() ) );
+ $result->setIndexedTagName( $vals['rights'], 'r' ); // even if empty
}
- if (isset($this->prop['options'])) {
- $vals['options'] = (is_null($wgUser->mOptions) ? User::getDefaultOptions() : $wgUser->mOptions);
+
+ if ( isset( $this->prop['changeablegroups'] ) ) {
+ $vals['changeablegroups'] = $wgUser->changeableGroups();
+ $result->setIndexedTagName( $vals['changeablegroups']['add'], 'g' );
+ $result->setIndexedTagName( $vals['changeablegroups']['remove'], 'g' );
+ $result->setIndexedTagName( $vals['changeablegroups']['add-self'], 'g' );
+ $result->setIndexedTagName( $vals['changeablegroups']['remove-self'], 'g' );
}
- if (isset($this->prop['preferencestoken']) && is_null($this->getMain()->getRequest()->getVal('callback'))) {
+
+ if ( isset( $this->prop['options'] ) ) {
+ $vals['options'] = $wgUser->getOptions();
+ }
+
+ if ( isset( $this->prop['preferencestoken'] ) && is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) ) {
$vals['preferencestoken'] = $wgUser->editToken();
}
- if (isset($this->prop['editcount'])) {
- $vals['editcount'] = intval($wgUser->getEditCount());
+
+ if ( isset( $this->prop['editcount'] ) ) {
+ $vals['editcount'] = intval( $wgUser->getEditCount() );
}
- if (isset($this->prop['ratelimits'])) {
+
+ if ( isset( $this->prop['ratelimits'] ) ) {
$vals['ratelimits'] = $this->getRateLimits();
}
- if (isset($this->prop['email'])) {
+
+ if ( isset( $this->prop['email'] ) ) {
$vals['email'] = $wgUser->getEmail();
$auth = $wgUser->getEmailAuthenticationTimestamp();
- if(!is_null($auth))
- $vals['emailauthenticated'] = wfTimestamp(TS_ISO_8601, $auth);
+ if ( !is_null( $auth ) )
+ $vals['emailauthenticated'] = wfTimestamp( TS_ISO_8601, $auth );
}
return $vals;
}
@@ -104,32 +121,32 @@ class ApiQueryUserInfo extends ApiQueryBase {
protected function getRateLimits()
{
global $wgUser, $wgRateLimits;
- if(!$wgUser->isPingLimitable())
+ if ( !$wgUser->isPingLimitable() )
return array(); // No limits
// Find out which categories we belong to
$categories = array();
- if($wgUser->isAnon())
+ if ( $wgUser->isAnon() )
$categories[] = 'anon';
else
$categories[] = 'user';
- if($wgUser->isNewBie())
+ if ( $wgUser->isNewBie() )
{
$categories[] = 'ip';
$categories[] = 'subnet';
- if(!$wgUser->isAnon())
+ if ( !$wgUser->isAnon() )
$categories[] = 'newbie';
}
- $categories = array_merge($categories, $wgUser->getGroups());
+ $categories = array_merge( $categories, $wgUser->getGroups() );
// Now get the actual limits
$retval = array();
- foreach($wgRateLimits as $action => $limits)
- foreach($categories as $cat)
- if(isset($limits[$cat]) && !is_null($limits[$cat]))
+ foreach ( $wgRateLimits as $action => $limits )
+ foreach ( $categories as $cat )
+ if ( isset( $limits[$cat] ) && !is_null( $limits[$cat] ) )
{
- $retval[$action][$cat]['hits'] = intval($limits[$cat][0]);
- $retval[$action][$cat]['seconds'] = intval($limits[$cat][1]);
+ $retval[$action][$cat]['hits'] = intval( $limits[$cat][0] );
+ $retval[$action][$cat]['seconds'] = intval( $limits[$cat][1] );
}
return $retval;
}
@@ -137,13 +154,14 @@ class ApiQueryUserInfo extends ApiQueryBase {
public function getAllowedParams() {
return array (
'prop' => array (
- ApiBase :: PARAM_DFLT => NULL,
+ ApiBase :: PARAM_DFLT => null,
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_TYPE => array (
'blockinfo',
'hasmsg',
'groups',
'rights',
+ 'changeablegroups',
'options',
'preferencestoken',
'editcount',
@@ -161,7 +179,8 @@ class ApiQueryUserInfo extends ApiQueryBase {
' blockinfo - tags if the current user is blocked, by whom, and for what reason',
' hasmsg - adds a tag "message" if the current user has pending messages',
' groups - lists all the groups the current user belongs to',
- ' rights - lists of all rights the current user has',
+ ' rights - lists all the rights the current user has',
+ ' changeablegroups - lists the groups the current user can add to and remove from',
' options - lists all preferences the current user has set',
' editcount - adds the current user\'s edit count',
' ratelimits - lists all rate limits applying to the current user'
@@ -181,6 +200,6 @@ class ApiQueryUserInfo extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUserInfo.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryUserInfo.php 69578 2010-07-20 02:46:20Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryUsers.php b/includes/api/ApiQueryUsers.php
index 1e50c59a..5dc0e4a6 100644
--- a/includes/api/ApiQueryUsers.php
+++ b/includes/api/ApiQueryUsers.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -33,11 +33,40 @@ if (!defined('MEDIAWIKI')) {
*
* @ingroup API
*/
-
class ApiQueryUsers extends ApiQueryBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'us');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'us' );
+ }
+
+ /**
+ * Get an array mapping token names to their handler functions.
+ * The prototype for a token function is func($user)
+ * it should return a token or false (permission denied)
+ * @return array(tokenname => function)
+ */
+ protected function getTokenFunctions() {
+ // Don't call the hooks twice
+ if ( isset( $this->tokenFunctions ) )
+ return $this->tokenFunctions;
+
+ // If we're in JSON callback mode, no tokens can be obtained
+ if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) )
+ return array();
+
+ $this->tokenFunctions = array(
+ 'userrights' => array( 'ApiQueryUsers', 'getUserrightsToken' ),
+ );
+ wfRunHooks( 'APIQueryUsersTokens', array( &$this->tokenFunctions ) );
+ return $this->tokenFunctions;
+ }
+
+ public static function getUserrightsToken( $user )
+ {
+ global $wgUser;
+ // Since the permissions check for userrights is non-trivial,
+ // don't bother with it here
+ return $wgUser->editToken( $user->getName() );
}
public function execute() {
@@ -45,8 +74,8 @@ if (!defined('MEDIAWIKI')) {
$result = $this->getResult();
$r = array();
- if (!is_null($params['prop'])) {
- $this->prop = array_flip($params['prop']);
+ if ( !is_null( $params['prop'] ) ) {
+ $this->prop = array_flip( $params['prop'] );
} else {
$this->prop = array();
}
@@ -55,17 +84,17 @@ if (!defined('MEDIAWIKI')) {
$goodNames = $done = array();
$result = $this->getResult();
// Canonicalize user names
- foreach($users as $u) {
- $n = User::getCanonicalName($u);
- if($n === false || $n === '')
+ foreach ( $users as $u ) {
+ $n = User::getCanonicalName( $u );
+ if ( $n === false || $n === '' )
{
- $vals = array('name' => $u, 'invalid' => '');
- $fit = $result->addValue(array('query', $this->getModuleName()),
- null, $vals);
- if(!$fit)
+ $vals = array( 'name' => $u, 'invalid' => '' );
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+ null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('users',
- implode('|', array_diff($users, $done)));
+ $this->setContinueEnumParameter( 'users',
+ implode( '|', array_diff( $users, $done ) ) );
$goodNames = array();
break;
}
@@ -74,78 +103,122 @@ if (!defined('MEDIAWIKI')) {
else
$goodNames[] = $n;
}
- if(count($goodNames))
+
+ if ( count( $goodNames ) )
{
$db = $this->getDb();
- $this->addTables('user', 'u1');
- $this->addFields('u1.*');
- $this->addWhereFld('u1.user_name', $goodNames);
-
- if(isset($this->prop['groups'])) {
- $this->addTables('user_groups');
- $this->addJoinConds(array('user_groups' => array('LEFT JOIN', 'ug_user=u1.user_id')));
- $this->addFields('ug_group');
+ $this->addTables( 'user', 'u1' );
+ $this->addFields( 'u1.*' );
+ $this->addWhereFld( 'u1.user_name', $goodNames );
+
+ if ( isset( $this->prop['groups'] ) ) {
+ $this->addTables( 'user_groups' );
+ $this->addJoinConds( array( 'user_groups' => array( 'LEFT JOIN', 'ug_user=u1.user_id' ) ) );
+ $this->addFields( 'ug_group' );
}
- if(isset($this->prop['blockinfo'])) {
- $this->addTables('ipblocks');
- $this->addTables('user', 'u2');
- $u2 = $this->getAliasedName('user', 'u2');
- $this->addJoinConds(array(
- 'ipblocks' => array('LEFT JOIN', 'ipb_user=u1.user_id'),
- $u2 => array('LEFT JOIN', 'ipb_by=u2.user_id')));
- $this->addFields(array('ipb_reason', 'u2.user_name AS blocker_name'));
+ if ( isset( $this->prop['blockinfo'] ) ) {
+ $this->addTables( 'ipblocks' );
+ $this->addTables( 'user', 'u2' );
+ $u2 = $this->getAliasedName( 'user', 'u2' );
+ $this->addJoinConds( array(
+ 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=u1.user_id' ),
+ $u2 => array( 'LEFT JOIN', 'ipb_by=u2.user_id' ) ) );
+ $this->addFields( array( 'ipb_reason', 'u2.user_name AS blocker_name' ) );
}
$data = array();
- $res = $this->select(__METHOD__);
- while(($r = $db->fetchObject($res))) {
- $user = User::newFromRow($r);
+ $res = $this->select( __METHOD__ );
+ while ( ( $r = $db->fetchObject( $res ) ) ) {
+ $user = User::newFromRow( $r );
$name = $user->getName();
$data[$name]['name'] = $name;
- if(isset($this->prop['editcount']))
- $data[$name]['editcount'] = intval($user->getEditCount());
- if(isset($this->prop['registration']))
- $data[$name]['registration'] = wfTimestampOrNull(TS_ISO_8601, $user->getRegistration());
- if(isset($this->prop['groups']) && !is_null($r->ug_group))
+ if ( isset( $this->prop['editcount'] ) )
+ $data[$name]['editcount'] = intval( $user->getEditCount() );
+ if ( isset( $this->prop['registration'] ) )
+ $data[$name]['registration'] = wfTimestampOrNull( TS_ISO_8601, $user->getRegistration() );
+ if ( isset( $this->prop['groups'] ) && !is_null( $r->ug_group ) )
// This row contains only one group, others will be added from other rows
$data[$name]['groups'][] = $r->ug_group;
- if(isset($this->prop['blockinfo']) && !is_null($r->blocker_name)) {
+ if ( isset( $this->prop['blockinfo'] ) && !is_null( $r->blocker_name ) ) {
$data[$name]['blockedby'] = $r->blocker_name;
$data[$name]['blockreason'] = $r->ipb_reason;
}
- if(isset($this->prop['emailable']) && $user->canReceiveEmail())
+ if ( isset( $this->prop['emailable'] ) && $user->canReceiveEmail() )
$data[$name]['emailable'] = '';
+
+ if ( isset( $this->prop['gender'] ) ) {
+ $gender = $user->getOption( 'gender' );
+ if ( strval( $gender ) === '' ) {
+ $gender = 'unknown';
+ }
+ $data[$name]['gender'] = $gender;
+ }
+
+ if ( !is_null( $params['token'] ) )
+ {
+ $tokenFunctions = $this->getTokenFunctions();
+ foreach ( $params['token'] as $t )
+ {
+ $val = call_user_func( $tokenFunctions[$t], $user );
+ if ( $val === false )
+ $this->setWarning( "Action '$t' is not allowed for the current user" );
+ else
+ $data[$name][$t . 'token'] = $val;
+ }
+ }
}
}
// Second pass: add result data to $retval
- foreach($goodNames as $u) {
- if(!isset($data[$u]))
- $data[$u] = array('name' => $u, 'missing' => '');
- else {
- if(isset($this->prop['groups']) && isset($data[$u]['groups']))
- $this->getResult()->setIndexedTagName($data[$u]['groups'], 'g');
+ foreach ( $goodNames as $u ) {
+ if ( !isset( $data[$u] ) ) {
+ $data[$u] = array( 'name' => $u );
+ $urPage = new UserrightsPage;
+ $iwUser = $urPage->fetchUser( $u );
+ if ( $iwUser instanceof UserRightsProxy ) {
+ $data[$u]['interwiki'] = '';
+ if ( !is_null( $params['token'] ) )
+ {
+ $tokenFunctions = $this->getTokenFunctions();
+ foreach ( $params['token'] as $t )
+ {
+ $val = call_user_func( $tokenFunctions[$t], $iwUser );
+ if ( $val === false )
+ $this->setWarning( "Action '$t' is not allowed for the current user" );
+ else
+ $data[$u][$t . 'token'] = $val;
+ }
+ }
+ } else
+ $data[$u]['missing'] = '';
+ } else {
+ if ( isset( $this->prop['groups'] ) && isset( $data[$u]['groups'] ) )
+ $this->getResult()->setIndexedTagName( $data[$u]['groups'], 'g' );
}
- $fit = $result->addValue(array('query', $this->getModuleName()),
- null, $data[$u]);
- if(!$fit)
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+ null, $data[$u] );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('users',
- implode('|', array_diff($users, $done)));
+ $this->setContinueEnumParameter( 'users',
+ implode( '|', array_diff( $users, $done ) ) );
break;
}
$done[] = $u;
}
- return $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'user');
+ return $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'user' );
}
public function getCacheMode( $params ) {
- return 'public';
+ if ( isset( $params['token'] ) ) {
+ return 'private';
+ } else {
+ return 'public';
+ }
}
public function getAllowedParams() {
return array (
'prop' => array (
- ApiBase :: PARAM_DFLT => NULL,
+ ApiBase :: PARAM_DFLT => null,
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_TYPE => array (
'blockinfo',
@@ -153,11 +226,16 @@ if (!defined('MEDIAWIKI')) {
'editcount',
'registration',
'emailable',
+ 'gender',
)
),
'users' => array(
ApiBase :: PARAM_ISMULTI => true
- )
+ ),
+ 'token' => array(
+ ApiBase :: PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
+ ApiBase :: PARAM_ISMULTI => true
+ ),
);
}
@@ -170,8 +248,10 @@ if (!defined('MEDIAWIKI')) {
' editcount - adds the user\'s edit count',
' registration - adds the user\'s registration timestamp',
' emailable - tags if the user can and wants to receive e-mail through [[Special:Emailuser]]',
+ ' gender - tags the gender of the user. Returns "male", "female", or "unknown"',
),
- 'users' => 'A list of users to obtain the same information for'
+ 'users' => 'A list of users to obtain the same information for',
+ 'token' => 'Which tokens to obtain for each user',
);
}
@@ -180,10 +260,10 @@ if (!defined('MEDIAWIKI')) {
}
protected function getExamples() {
- return 'api.php?action=query&list=users&ususers=brion|TimStarling&usprop=groups|editcount';
+ return 'api.php?action=query&list=users&ususers=brion|TimStarling&usprop=groups|editcount|gender';
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUsers.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryUsers.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryWatchlist.php b/includes/api/ApiQueryWatchlist.php
index eb5c531f..caac0706 100644
--- a/includes/api/ApiQueryWatchlist.php
+++ b/includes/api/ApiQueryWatchlist.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,221 +36,244 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryWatchlist extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'wl');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'wl' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
private $fld_ids = false, $fld_title = false, $fld_patrol = false, $fld_flags = false,
- $fld_timestamp = false, $fld_user = false, $fld_comment = false, $fld_sizes = false;
+ $fld_timestamp = false, $fld_user = false, $fld_comment = false, $fld_parsedcomment = false, $fld_sizes = false,
+ $fld_notificationtimestamp = false;
- private function run($resultPageSet = null) {
- global $wgUser, $wgDBtype;
+ private function run( $resultPageSet = null ) {
+ global $wgUser;
- $this->selectNamedDB('watchlist', DB_SLAVE, 'watchlist');
-
- if (!$wgUser->isLoggedIn())
- $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin');
+ $this->selectNamedDB( 'watchlist', DB_SLAVE, 'watchlist' );
$params = $this->extractRequestParams();
- if (!is_null($params['prop']) && is_null($resultPageSet)) {
+ if ( !is_null( $params['owner'] ) && !is_null( $params['token'] ) ) {
+ $user = User::newFromName( $params['owner'], false );
+ if ( !$user->getId() ) {
+ $this->dieUsage( 'Specified user does not exist', 'bad_wlowner' );
+ }
+ $token = $user->getOption( 'watchlisttoken' );
+ if ( $token == '' || $token != $params['token'] ) {
+ $this->dieUsage( 'Incorrect watchlist token provided -- please set a correct token in Special:Preferences', 'bad_wltoken' );
+ }
+ } elseif ( !$wgUser->isLoggedIn() ) {
+ $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' );
+ } else {
+ $user = $wgUser;
+ }
+
+ if ( !is_null( $params['prop'] ) && is_null( $resultPageSet ) ) {
- $prop = array_flip($params['prop']);
+ $prop = array_flip( $params['prop'] );
- $this->fld_ids = isset($prop['ids']);
- $this->fld_title = isset($prop['title']);
- $this->fld_flags = isset($prop['flags']);
- $this->fld_user = isset($prop['user']);
- $this->fld_comment = isset($prop['comment']);
- $this->fld_timestamp = isset($prop['timestamp']);
- $this->fld_sizes = isset($prop['sizes']);
- $this->fld_patrol = isset($prop['patrol']);
+ $this->fld_ids = isset( $prop['ids'] );
+ $this->fld_title = isset( $prop['title'] );
+ $this->fld_flags = isset( $prop['flags'] );
+ $this->fld_user = isset( $prop['user'] );
+ $this->fld_comment = isset( $prop['comment'] );
+ $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
+ $this->fld_timestamp = isset( $prop['timestamp'] );
+ $this->fld_sizes = isset( $prop['sizes'] );
+ $this->fld_patrol = isset( $prop['patrol'] );
+ $this->fld_notificationtimestamp = isset( $prop['notificationtimestamp'] );
- if ($this->fld_patrol) {
- global $wgUser;
- if (!$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
- $this->dieUsage('patrol property is not available', 'patrol');
+ if ( $this->fld_patrol ) {
+ if ( !$user->useRCPatrol() && !$user->useNPPatrol() )
+ $this->dieUsage( 'patrol property is not available', 'patrol' );
}
}
-
- if (is_null($resultPageSet)) {
- $this->addFields(array (
+
+ $this->addFields( array (
+ 'rc_namespace',
+ 'rc_title',
+ 'rc_timestamp'
+ ) );
+
+ if ( is_null( $resultPageSet ) ) {
+ $this->addFields( array (
'rc_cur_id',
- 'rc_this_oldid',
- 'rc_namespace',
- 'rc_title',
- 'rc_timestamp'
- ));
-
- $this->addFieldsIf('rc_new', $this->fld_flags);
- $this->addFieldsIf('rc_minor', $this->fld_flags);
- $this->addFieldsIf('rc_bot', $this->fld_flags);
- $this->addFieldsIf('rc_user', $this->fld_user);
- $this->addFieldsIf('rc_user_text', $this->fld_user);
- $this->addFieldsIf('rc_comment', $this->fld_comment);
- $this->addFieldsIf('rc_patrolled', $this->fld_patrol);
- $this->addFieldsIf('rc_old_len', $this->fld_sizes);
- $this->addFieldsIf('rc_new_len', $this->fld_sizes);
- }
- elseif ($params['allrev']) {
- $this->addFields(array (
- 'rc_this_oldid',
- 'rc_namespace',
- 'rc_title',
- 'rc_timestamp'
- ));
+ 'rc_this_oldid'
+ ) );
+
+ $this->addFieldsIf( 'rc_new', $this->fld_flags );
+ $this->addFieldsIf( 'rc_minor', $this->fld_flags );
+ $this->addFieldsIf( 'rc_bot', $this->fld_flags );
+ $this->addFieldsIf( 'rc_user', $this->fld_user );
+ $this->addFieldsIf( 'rc_user_text', $this->fld_user );
+ $this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment );
+ $this->addFieldsIf( 'rc_patrolled', $this->fld_patrol );
+ $this->addFieldsIf( 'rc_old_len', $this->fld_sizes );
+ $this->addFieldsIf( 'rc_new_len', $this->fld_sizes );
+ $this->addFieldsIf( 'wl_notificationtimestamp', $this->fld_notificationtimestamp );
+ } elseif ( $params['allrev'] ) {
+ $this->addFields( 'rc_this_oldid' );
} else {
- $this->addFields(array (
- 'rc_cur_id',
- 'rc_namespace',
- 'rc_title',
- 'rc_timestamp'
- ));
+ $this->addFields( 'rc_cur_id' );
}
- $this->addTables(array (
+ $this->addTables( array (
'watchlist',
'page',
'recentchanges'
- ));
+ ) );
- $userId = $wgUser->getId();
- $this->addWhere(array (
+ $userId = $user->getId();
+ $this->addWhere( array (
'wl_namespace = rc_namespace',
'wl_title = rc_title',
'rc_cur_id = page_id',
'wl_user' => $userId,
'rc_deleted' => 0,
- ));
+ ) );
- $this->addWhereRange('rc_timestamp', $params['dir'], $params['start'], $params['end']);
- $this->addWhereFld('wl_namespace', $params['namespace']);
- $this->addWhereIf('rc_this_oldid=page_latest', !$params['allrev']);
+ $this->addWhereRange( 'rc_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addWhereFld( 'wl_namespace', $params['namespace'] );
+ $this->addWhereIf( 'rc_this_oldid=page_latest', !$params['allrev'] );
- if (!is_null($params['show'])) {
- $show = array_flip($params['show']);
+ if ( !is_null( $params['show'] ) ) {
+ $show = array_flip( $params['show'] );
/* Check for conflicting parameters. */
- if ((isset ($show['minor']) && isset ($show['!minor']))
- || (isset ($show['bot']) && isset ($show['!bot']))
- || (isset ($show['anon']) && isset ($show['!anon']))
- || (isset ($show['patrolled']) && isset ($show['!patrolled']))) {
+ if ( ( isset ( $show['minor'] ) && isset ( $show['!minor'] ) )
+ || ( isset ( $show['bot'] ) && isset ( $show['!bot'] ) )
+ || ( isset ( $show['anon'] ) && isset ( $show['!anon'] ) )
+ || ( isset ( $show['patrolled'] ) && isset ( $show['!patrolled'] ) ) ) {
- $this->dieUsage("Incorrect parameter - mutually exclusive values may not be supplied", 'show');
+ $this->dieUsageMsg( array( 'show' ) );
}
- // Check permissions
- global $wgUser;
- if((isset($show['patrolled']) || isset($show['!patrolled'])) && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol())
- $this->dieUsage("You need the patrol right to request the patrolled flag", 'permissiondenied');
+ // Check permissions.
+ if ( ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ) && !$wgUser->useRCPatrol() && !$wgUser->useNPPatrol() )
+ $this->dieUsage( "You need the patrol right to request the patrolled flag", 'permissiondenied' );
/* Add additional conditions to query depending upon parameters. */
- $this->addWhereIf('rc_minor = 0', isset ($show['!minor']));
- $this->addWhereIf('rc_minor != 0', isset ($show['minor']));
- $this->addWhereIf('rc_bot = 0', isset ($show['!bot']));
- $this->addWhereIf('rc_bot != 0', isset ($show['bot']));
- $this->addWhereIf('rc_user = 0', isset ($show['anon']));
- $this->addWhereIf('rc_user != 0', isset ($show['!anon']));
- $this->addWhereIf('rc_patrolled = 0', isset($show['!patrolled']));
- $this->addWhereIf('rc_patrolled != 0', isset($show['patrolled']));
+ $this->addWhereIf( 'rc_minor = 0', isset ( $show['!minor'] ) );
+ $this->addWhereIf( 'rc_minor != 0', isset ( $show['minor'] ) );
+ $this->addWhereIf( 'rc_bot = 0', isset ( $show['!bot'] ) );
+ $this->addWhereIf( 'rc_bot != 0', isset ( $show['bot'] ) );
+ $this->addWhereIf( 'rc_user = 0', isset ( $show['anon'] ) );
+ $this->addWhereIf( 'rc_user != 0', isset ( $show['!anon'] ) );
+ $this->addWhereIf( 'rc_patrolled = 0', isset( $show['!patrolled'] ) );
+ $this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
}
+ if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) )
+ $this->dieUsage( 'user and excludeuser cannot be used together', 'user-excludeuser' );
+ if ( !is_null( $params['user'] ) )
+ $this->addWhereFld( 'rc_user_text', $params['user'] );
+ if ( !is_null( $params['excludeuser'] ) )
+ $this->addWhere( 'rc_user_text != ' . $this->getDB()->addQuotes( $params['excludeuser'] ) );
- # This is an index optimization for mysql, as done in the Special:Watchlist page
- $this->addWhereIf("rc_timestamp > ''", !isset ($params['start']) && !isset ($params['end']) && $wgDBtype == 'mysql');
+ $db = $this->getDB();
+
+ // This is an index optimization for mysql, as done in the Special:Watchlist page
+ $this->addWhereIf( "rc_timestamp > ''", !isset ( $params['start'] ) && !isset ( $params['end'] ) && $db->getType() == 'mysql' );
- $this->addOption('LIMIT', $params['limit'] +1);
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
$ids = array ();
$count = 0;
- $res = $this->select(__METHOD__);
+ $res = $this->select( __METHOD__ );
- $db = $this->getDB();
- while ($row = $db->fetchObject($res)) {
- if (++ $count > $params['limit']) {
+ while ( $row = $db->fetchObject( $res ) ) {
+ if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->rc_timestamp));
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
break;
}
- if (is_null($resultPageSet)) {
- $vals = $this->extractRowInfo($row);
- $fit = $this->getResult()->addValue(array('query', $this->getModuleName()), null, $vals);
- if(!$fit)
+ if ( is_null( $resultPageSet ) ) {
+ $vals = $this->extractRowInfo( $row );
+ $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('start',
- wfTimestamp(TS_ISO_8601, $row->rc_timestamp));
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
break;
}
} else {
- if ($params['allrev']) {
- $ids[] = intval($row->rc_this_oldid);
+ if ( $params['allrev'] ) {
+ $ids[] = intval( $row->rc_this_oldid );
} else {
- $ids[] = intval($row->rc_cur_id);
+ $ids[] = intval( $row->rc_cur_id );
}
}
}
- $db->freeResult($res);
+ $db->freeResult( $res );
- if (is_null($resultPageSet)) {
- $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'item');
+ if ( is_null( $resultPageSet ) ) {
+ $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'item' );
}
- elseif ($params['allrev']) {
- $resultPageSet->populateFromRevisionIDs($ids);
+ elseif ( $params['allrev'] ) {
+ $resultPageSet->populateFromRevisionIDs( $ids );
} else {
- $resultPageSet->populateFromPageIDs($ids);
+ $resultPageSet->populateFromPageIDs( $ids );
}
}
- private function extractRowInfo($row) {
+ private function extractRowInfo( $row ) {
$vals = array ();
- if ($this->fld_ids) {
- $vals['pageid'] = intval($row->rc_cur_id);
- $vals['revid'] = intval($row->rc_this_oldid);
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->rc_cur_id );
+ $vals['revid'] = intval( $row->rc_this_oldid );
}
- if ($this->fld_title)
- ApiQueryBase :: addTitleInfo($vals, Title :: makeTitle($row->rc_namespace, $row->rc_title));
+ $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+
+ if ( $this->fld_title )
+ ApiQueryBase::addTitleInfo( $vals, $title );
- if ($this->fld_user) {
+ if ( $this->fld_user ) {
$vals['user'] = $row->rc_user_text;
- if (!$row->rc_user)
+ if ( !$row->rc_user )
$vals['anon'] = '';
}
- if ($this->fld_flags) {
- if ($row->rc_new)
+ if ( $this->fld_flags ) {
+ if ( $row->rc_new )
$vals['new'] = '';
- if ($row->rc_minor)
+ if ( $row->rc_minor )
$vals['minor'] = '';
- if ($row->rc_bot)
+ if ( $row->rc_bot )
$vals['bot'] = '';
}
- if ($this->fld_patrol && isset($row->rc_patrolled))
+ if ( $this->fld_patrol && isset( $row->rc_patrolled ) )
$vals['patrolled'] = '';
- if ($this->fld_timestamp)
- $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->rc_timestamp);
+ if ( $this->fld_timestamp )
+ $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->rc_timestamp );
- if ($this->fld_sizes) {
- $vals['oldlen'] = intval($row->rc_old_len);
- $vals['newlen'] = intval($row->rc_new_len);
+ if ( $this->fld_sizes ) {
+ $vals['oldlen'] = intval( $row->rc_old_len );
+ $vals['newlen'] = intval( $row->rc_new_len );
}
+
+ if ( $this->fld_notificationtimestamp )
+ $vals['notificationtimestamp'] = ( $row->wl_notificationtimestamp == null ) ? '' : wfTimestamp( TS_ISO_8601, $row->wl_notificationtimestamp );
- if ($this->fld_comment && isset( $row->rc_comment ))
+ if ( $this->fld_comment && isset( $row->rc_comment ) )
$vals['comment'] = $row->rc_comment;
+
+ if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+ global $wgUser;
+ $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->rc_comment, $title );
+ }
return $vals;
}
@@ -268,6 +291,12 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
ApiBase :: PARAM_ISMULTI => true,
ApiBase :: PARAM_TYPE => 'namespace'
),
+ 'user' => array(
+ ApiBase :: PARAM_TYPE => 'user',
+ ),
+ 'excludeuser' => array(
+ ApiBase :: PARAM_TYPE => 'user',
+ ),
'dir' => array (
ApiBase :: PARAM_DFLT => 'older',
ApiBase :: PARAM_TYPE => array (
@@ -291,9 +320,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'flags',
'user',
'comment',
+ 'parsedcomment',
'timestamp',
'patrol',
'sizes',
+ 'notificationtimestamp'
)
),
'show' => array (
@@ -308,6 +339,12 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'patrolled',
'!patrolled',
)
+ ),
+ 'owner' => array (
+ ApiBase :: PARAM_TYPE => 'user'
+ ),
+ 'token' => array (
+ ApiBase :: PARAM_TYPE => 'string'
)
);
}
@@ -318,19 +355,35 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'start' => 'The timestamp to start enumerating from.',
'end' => 'The timestamp to end enumerating.',
'namespace' => 'Filter changes to only the given namespace(s).',
+ 'user' => 'Only list changes by this user',
+ 'excludeuser' => 'Don\'t list changes by this user',
'dir' => 'In which direction to enumerate pages.',
'limit' => 'How many total results to return per request.',
'prop' => 'Which additional items to get (non-generator mode only).',
'show' => array (
'Show only items that meet this criteria.',
'For example, to see only minor edits done by logged-in users, set show=minor|!anon'
- )
+ ),
+ 'owner' => "The name of the user whose watchlist you'd like to access",
+ 'token' => "Give a security token (settable in preferences) to allow access to another user's watchlist"
);
}
public function getDescription() {
return "Get all recent changes to pages in the logged in user's watchlist";
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'bad_wlowner', 'info' => 'Specified user does not exist' ),
+ array( 'code' => 'bad_wltoken', 'info' => 'Incorrect watchlist token provided -- please set a correct token in Special:Preferences' ),
+ array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
+ array( 'code' => 'patrol', 'info' => 'patrol property is not available' ),
+ array( 'show' ),
+ array( 'code' => 'permissiondenied', 'info' => 'You need the patrol right to request the patrolled flag' ),
+ array( 'code' => 'user-excludeuser', 'info' => 'user and excludeuser cannot be used together' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -338,11 +391,12 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'api.php?action=query&list=watchlist&wlprop=ids|title|timestamp|user|comment',
'api.php?action=query&list=watchlist&wlallrev&wlprop=ids|title|timestamp|user|comment',
'api.php?action=query&generator=watchlist&prop=info',
- 'api.php?action=query&generator=watchlist&gwlallrev&prop=revisions&rvprop=timestamp|user'
+ 'api.php?action=query&generator=watchlist&gwlallrev&prop=revisions&rvprop=timestamp|user',
+ 'api.php?action=query&list=watchlist&wlowner=Bob_Smith&wltoken=d8d562e9725ea1512894cdab28e5ceebc7f20237'
);
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryWatchlist.php 69986 2010-07-27 03:57:39Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryWatchlist.php 69932 2010-07-26 08:03:21Z tstarling $';
}
}
diff --git a/includes/api/ApiQueryWatchlistRaw.php b/includes/api/ApiQueryWatchlistRaw.php
index f3982bcb..42d4005b 100644
--- a/includes/api/ApiQueryWatchlistRaw.php
+++ b/includes/api/ApiQueryWatchlistRaw.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiQueryBase.php');
+ require_once ( 'ApiQueryBase.php' );
}
/**
@@ -36,92 +36,95 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
- public function __construct($query, $moduleName) {
- parent :: __construct($query, $moduleName, 'wr');
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'wr' );
}
public function execute() {
$this->run();
}
- public function executeGenerator($resultPageSet) {
- $this->run($resultPageSet);
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
}
- private function run($resultPageSet = null) {
+ private function run( $resultPageSet = null ) {
global $wgUser;
- $this->selectNamedDB('watchlist', DB_SLAVE, 'watchlist');
+ $this->selectNamedDB( 'watchlist', DB_SLAVE, 'watchlist' );
- if (!$wgUser->isLoggedIn())
- $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin');
+ if ( !$wgUser->isLoggedIn() )
+ $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' );
$params = $this->extractRequestParams();
- $prop = array_flip((array)$params['prop']);
- $show = array_flip((array)$params['show']);
- if(isset($show['changed']) && isset($show['!changed']))
- $this->dieUsage("Incorrect parameter - mutually exclusive values may not be supplied", 'show');
-
- $this->addTables('watchlist');
- $this->addFields(array('wl_namespace', 'wl_title'));
- $this->addFieldsIf('wl_notificationtimestamp', isset($prop['changed']));
- $this->addWhereFld('wl_user', $wgUser->getId());
- $this->addWhereFld('wl_namespace', $params['namespace']);
- $this->addWhereIf('wl_notificationtimestamp IS NOT NULL', isset($show['changed']));
- $this->addWhereIf('wl_notificationtimestamp IS NULL', isset($show['!changed']));
- if(isset($params['continue']))
+ $prop = array_flip( (array)$params['prop'] );
+ $show = array_flip( (array)$params['show'] );
+ if ( isset( $show['changed'] ) && isset( $show['!changed'] ) )
+ $this->dieUsageMsg( array( 'show' ) );
+
+ $this->addTables( 'watchlist' );
+ $this->addFields( array( 'wl_namespace', 'wl_title' ) );
+ $this->addFieldsIf( 'wl_notificationtimestamp', isset( $prop['changed'] ) );
+ $this->addWhereFld( 'wl_user', $wgUser->getId() );
+ $this->addWhereFld( 'wl_namespace', $params['namespace'] );
+ $this->addWhereIf( 'wl_notificationtimestamp IS NOT NULL', isset( $show['changed'] ) );
+ $this->addWhereIf( 'wl_notificationtimestamp IS NULL', isset( $show['!changed'] ) );
+
+ if ( isset( $params['continue'] ) )
{
- $cont = explode('|', $params['continue']);
- if(count($cont) != 2)
- $this->dieUsage("Invalid continue param. You should pass the " .
- "original value returned by the previous query", "_badcontinue");
- $ns = intval($cont[0]);
- $title = $this->getDB()->strencode($this->titleToKey($cont[1]));
- $this->addWhere("wl_namespace > '$ns' OR ".
- "(wl_namespace = '$ns' AND ".
- "wl_title >= '$title')");
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 )
+ $this->dieUsage( "Invalid continue param. You should pass the " .
+ "original value returned by the previous query", "_badcontinue" );
+ $ns = intval( $cont[0] );
+ $title = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $this->addWhere( "wl_namespace > '$ns' OR " .
+ "(wl_namespace = '$ns' AND " .
+ "wl_title >= '$title')" );
}
+
// Don't ORDER BY wl_namespace if it's constant in the WHERE clause
- if(count($params['namespace']) == 1)
- $this->addOption('ORDER BY', 'wl_title');
+ if ( count( $params['namespace'] ) == 1 )
+ $this->addOption( 'ORDER BY', 'wl_title' );
else
- $this->addOption('ORDER BY', 'wl_namespace, wl_title');
- $this->addOption('LIMIT', $params['limit'] + 1);
- $res = $this->select(__METHOD__);
+ $this->addOption( 'ORDER BY', 'wl_namespace, wl_title' );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+ $res = $this->select( __METHOD__ );
$db = $this->getDB();
$titles = array();
$count = 0;
- while($row = $db->fetchObject($res))
+ while ( $row = $db->fetchObject( $res ) )
{
- if(++$count > $params['limit'])
+ if ( ++$count > $params['limit'] )
{
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter('continue', $row->wl_namespace . '|' .
- $this->keyToTitle($row->wl_title));
+ $this->setContinueEnumParameter( 'continue', $row->wl_namespace . '|' .
+ $this->keyToTitle( $row->wl_title ) );
break;
}
- $t = Title::makeTitle($row->wl_namespace, $row->wl_title);
- if(is_null($resultPageSet))
+ $t = Title::makeTitle( $row->wl_namespace, $row->wl_title );
+
+ if ( is_null( $resultPageSet ) )
{
$vals = array();
- ApiQueryBase::addTitleInfo($vals, $t);
- if(isset($prop['changed']) && !is_null($row->wl_notificationtimestamp))
- $vals['changed'] = wfTimestamp(TS_ISO_8601, $row->wl_notificationtimestamp);
- $fit = $this->getResult()->addValue($this->getModuleName(), null, $vals);
- if(!$fit)
+ ApiQueryBase::addTitleInfo( $vals, $t );
+ if ( isset( $prop['changed'] ) && !is_null( $row->wl_notificationtimestamp ) )
+ $vals['changed'] = wfTimestamp( TS_ISO_8601, $row->wl_notificationtimestamp );
+ $fit = $this->getResult()->addValue( $this->getModuleName(), null, $vals );
+ if ( !$fit )
{
- $this->setContinueEnumParameter('continue', $row->wl_namespace . '|' .
- $this->keyToTitle($row->wl_title));
+ $this->setContinueEnumParameter( 'continue', $row->wl_namespace . '|' .
+ $this->keyToTitle( $row->wl_title ) );
break;
}
}
else
$titles[] = $t;
}
- if(is_null($resultPageSet))
- $this->getResult()->setIndexedTagName_internal($this->getModuleName(), 'wr');
+ if ( is_null( $resultPageSet ) )
+ $this->getResult()->setIndexedTagName_internal( $this->getModuleName(), 'wr' );
else
- $resultPageSet->populateFromTitles($titles);
+ $resultPageSet->populateFromTitles( $titles );
}
public function getAllowedParams() {
@@ -167,6 +170,13 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
public function getDescription() {
return "Get all pages on the logged in user's watchlist";
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
+ array( 'show' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -176,6 +186,6 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryWatchlistRaw.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiQueryWatchlistRaw.php 69578 2010-07-20 02:46:20Z tstarling $';
}
} \ No newline at end of file
diff --git a/includes/api/ApiResult.php b/includes/api/ApiResult.php
index 3dbee08a..64c2c3fb 100644
--- a/includes/api/ApiResult.php
+++ b/includes/api/ApiResult.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -53,8 +53,8 @@ class ApiResult extends ApiBase {
* Constructor
* @param $main ApiMain object
*/
- public function __construct($main) {
- parent :: __construct($main, 'result');
+ public function __construct( $main ) {
+ parent :: __construct( $main, 'result' );
$this->mIsRawMode = false;
$this->mCheckingSize = true;
$this->reset();
@@ -91,21 +91,21 @@ class ApiResult extends ApiBase {
public function getData() {
return $this->mData;
}
-
+
/**
* Get the 'real' size of a result item. This means the strlen() of the item,
* or the sum of the strlen()s of the elements if the item is an array.
* @param $value mixed
* @return int
*/
- public static function size($value) {
+ public static function size( $value ) {
$s = 0;
- if(is_array($value))
- foreach($value as $v)
- $s += self::size($v);
- else if(!is_object($value))
+ if ( is_array( $value ) )
+ foreach ( $value as $v )
+ $s += self::size( $v );
+ else if ( !is_object( $value ) )
// Objects can't always be cast to string
- $s = strlen($value);
+ $s = strlen( $value );
return $s;
}
@@ -116,7 +116,7 @@ class ApiResult extends ApiBase {
public function getSize() {
return $this->mSize;
}
-
+
/**
* Disable size checking in addValue(). Don't use this unless you
* REALLY know what you're doing. Values added while size checking
@@ -125,7 +125,7 @@ class ApiResult extends ApiBase {
public function disableSizeCheck() {
$this->mCheckingSize = false;
}
-
+
/**
* Re-enable size checking in addValue()
*/
@@ -140,21 +140,21 @@ class ApiResult extends ApiBase {
* @param $name string Index of $arr to add $value at
* @param $value mixed
*/
- public static function setElement(& $arr, $name, $value) {
- if ($arr === null || $name === null || $value === null || !is_array($arr) || is_array($name))
- ApiBase :: dieDebug(__METHOD__, 'Bad parameter');
+ public static function setElement( & $arr, $name, $value ) {
+ if ( $arr === null || $name === null || $value === null || !is_array( $arr ) || is_array( $name ) )
+ ApiBase :: dieDebug( __METHOD__, 'Bad parameter' );
- if (!isset ($arr[$name])) {
+ if ( !isset ( $arr[$name] ) ) {
$arr[$name] = $value;
}
- elseif (is_array($arr[$name]) && is_array($value)) {
- $merged = array_intersect_key($arr[$name], $value);
- if (!count($merged))
+ elseif ( is_array( $arr[$name] ) && is_array( $value ) ) {
+ $merged = array_intersect_key( $arr[$name], $value );
+ if ( !count( $merged ) )
$arr[$name] += $value;
else
- ApiBase :: dieDebug(__METHOD__, "Attempting to merge element $name");
+ ApiBase :: dieDebug( __METHOD__, "Attempting to merge element $name" );
} else
- ApiBase :: dieDebug(__METHOD__, "Attempting to add element $name=$value, existing value is {$arr[$name]}");
+ ApiBase :: dieDebug( __METHOD__, "Attempting to add element $name=$value, existing value is {$arr[$name]}" );
}
/**
@@ -165,15 +165,15 @@ class ApiResult extends ApiBase {
* as a sub item of $arr. Use this parameter to create elements in
* format <elem>text</elem> without attributes
*/
- public static function setContent(& $arr, $value, $subElemName = null) {
- if (is_array($value))
- ApiBase :: dieDebug(__METHOD__, 'Bad parameter');
- if (is_null($subElemName)) {
- ApiResult :: setElement($arr, '*', $value);
+ public static function setContent( & $arr, $value, $subElemName = null ) {
+ if ( is_array( $value ) )
+ ApiBase :: dieDebug( __METHOD__, 'Bad parameter' );
+ if ( is_null( $subElemName ) ) {
+ ApiResult :: setElement( $arr, '*', $value );
} else {
- if (!isset ($arr[$subElemName]))
+ if ( !isset ( $arr[$subElemName] ) )
$arr[$subElemName] = array ();
- ApiResult :: setElement($arr[$subElemName], '*', $value);
+ ApiResult :: setElement( $arr[$subElemName], '*', $value );
}
}
@@ -184,12 +184,12 @@ class ApiResult extends ApiBase {
* @param $arr array
* @param $tag string Tag name
*/
- public function setIndexedTagName(& $arr, $tag) {
+ public function setIndexedTagName( & $arr, $tag ) {
// In raw mode, add the '_element', otherwise just ignore
- if (!$this->getIsRawMode())
+ if ( !$this->getIsRawMode() )
return;
- if ($arr === null || $tag === null || !is_array($arr) || is_array($tag))
- ApiBase :: dieDebug(__METHOD__, 'Bad parameter');
+ if ( $arr === null || $tag === null || !is_array( $arr ) || is_array( $tag ) )
+ ApiBase :: dieDebug( __METHOD__, 'Bad parameter' );
// Do not use setElement() as it is ok to call this more than once
$arr['_element'] = $tag;
}
@@ -199,17 +199,16 @@ class ApiResult extends ApiBase {
* @param $arr array
* @param $tag string Tag name
*/
- public function setIndexedTagName_recursive(&$arr, $tag)
- {
- if(!is_array($arr))
- return;
- foreach($arr as &$a)
- {
- if(!is_array($a))
- continue;
- $this->setIndexedTagName($a, $tag);
- $this->setIndexedTagName_recursive($a, $tag);
- }
+ public function setIndexedTagName_recursive( &$arr, $tag ) {
+ if ( !is_array( $arr ) )
+ return;
+ foreach ( $arr as &$a )
+ {
+ if ( !is_array( $a ) )
+ continue;
+ $this->setIndexedTagName( $a, $tag );
+ $this->setIndexedTagName_recursive( $a, $tag );
+ }
}
/**
@@ -221,15 +220,15 @@ class ApiResult extends ApiBase {
*/
public function setIndexedTagName_internal( $path, $tag ) {
$data = & $this->mData;
- foreach((array)$path as $p) {
+ foreach ( (array)$path as $p ) {
if ( !isset( $data[$p] ) ) {
$data[$p] = array();
}
$data = & $data[$p];
}
- if(is_null($data))
+ if ( is_null( $data ) )
return;
- $this->setIndexedTagName($data, $tag);
+ $this->setIndexedTagName( $data, $tag );
}
/**
@@ -239,34 +238,34 @@ class ApiResult extends ApiBase {
* If $name is empty, the $value is added as a next list element data[] = $value
* @return bool True if $value fits in the result, false if not
*/
- public function addValue($path, $name, $value) {
+ public function addValue( $path, $name, $value ) {
global $wgAPIMaxResultSize;
$data = & $this->mData;
- if( $this->mCheckingSize ) {
- $newsize = $this->mSize + self::size($value);
- if($newsize > $wgAPIMaxResultSize)
+ if ( $this->mCheckingSize ) {
+ $newsize = $this->mSize + self::size( $value );
+ if ( $newsize > $wgAPIMaxResultSize )
return false;
$this->mSize = $newsize;
}
- if (!is_null($path)) {
- if (is_array($path)) {
- foreach ($path as $p) {
- if (!isset ($data[$p]))
+ if ( !is_null( $path ) ) {
+ if ( is_array( $path ) ) {
+ foreach ( $path as $p ) {
+ if ( !isset ( $data[$p] ) )
$data[$p] = array ();
$data = & $data[$p];
}
} else {
- if (!isset ($data[$path]))
+ if ( !isset ( $data[$path] ) )
$data[$path] = array ();
$data = & $data[$path];
}
}
- if (!$name)
+ if ( !$name )
$data[] = $value; // Add list element
else
- ApiResult :: setElement($data, $name, $value); // Add named element
+ ApiResult :: setElement( $data, $name, $value ); // Add named element
return true;
}
@@ -277,16 +276,16 @@ class ApiResult extends ApiBase {
* @param $path array
* @param $name string
*/
- public function unsetValue($path, $name) {
+ public function unsetValue( $path, $name ) {
$data = & $this->mData;
- if(!is_null($path))
- foreach((array)$path as $p) {
- if(!isset($data[$p]))
+ if ( !is_null( $path ) )
+ foreach ( (array)$path as $p ) {
+ if ( !isset( $data[$p] ) )
return;
$data = & $data[$p];
}
- $this->mSize -= self::size($data[$name]);
- unset($data[$name]);
+ $this->mSize -= self::size( $data[$name] );
+ unset( $data[$name] );
}
/**
@@ -294,52 +293,25 @@ class ApiResult extends ApiBase {
*/
public function cleanUpUTF8()
{
- array_walk_recursive($this->mData, array('ApiResult', 'cleanUp_helper'));
+ array_walk_recursive( $this->mData, array( 'ApiResult', 'cleanUp_helper' ) );
}
/**
* Callback function for cleanUpUTF8()
*/
- private static function cleanUp_helper(&$s)
+ private static function cleanUp_helper( &$s )
{
- if(!is_string($s))
+ if ( !is_string( $s ) )
return;
- $s = UtfNormal::cleanUp($s);
+ global $wgContLang;
+ $s = $wgContLang->normalize( $s );
}
public function execute() {
- ApiBase :: dieDebug(__METHOD__, 'execute() is not supported on Result object');
+ ApiBase :: dieDebug( __METHOD__, 'execute() is not supported on Result object' );
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiResult.php 47447 2009-02-18 12:41:28Z tstarling $';
- }
-}
-
-/* For compatibility with PHP versions < 5.1.0, define our own array_intersect_key function. */
-if (!function_exists('array_intersect_key')) {
- function array_intersect_key($isec, $keys) {
- $argc = func_num_args();
-
- if ($argc > 2) {
- for ($i = 1; $isec && $i < $argc; $i++) {
- $arr = func_get_arg($i);
-
- foreach (array_keys($isec) as $key) {
- if (!isset($arr[$key]))
- unset($isec[$key]);
- }
- }
-
- return $isec;
- } else {
- $res = array();
- foreach (array_keys($isec) as $key) {
- if (isset($keys[$key]))
- $res[$key] = $isec[$key];
- }
-
- return $res;
- }
+ return __CLASS__ . ': $Id: ApiResult.php 62354 2010-02-12 06:44:16Z mah $';
}
}
diff --git a/includes/api/ApiRollback.php b/includes/api/ApiRollback.php
index 0f0eae10..5c259f4e 100644
--- a/includes/api/ApiRollback.php
+++ b/includes/api/ApiRollback.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -32,53 +32,51 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiRollback extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
$params = $this->extractRequestParams();
- $titleObj = NULL;
- if(!isset($params['title']))
- $this->dieUsageMsg(array('missingparam', 'title'));
- if(!isset($params['user']))
- $this->dieUsageMsg(array('missingparam', 'user'));
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
-
- $titleObj = Title::newFromText($params['title']);
- if(!$titleObj)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
- if(!$titleObj->exists())
- $this->dieUsageMsg(array('notanarticle'));
-
- #We need to be able to revert IPs, but getCanonicalName rejects them
- $username = User::isIP($params['user'])
+ $titleObj = null;
+ if ( !isset( $params['title'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'title' ) );
+ if ( !isset( $params['user'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'user' ) );
+
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+ if ( !$titleObj->exists() )
+ $this->dieUsageMsg( array( 'notanarticle' ) );
+
+ // We need to be able to revert IPs, but getCanonicalName rejects them
+ $username = User::isIP( $params['user'] )
? $params['user']
- : User::getCanonicalName($params['user']);
- if(!$username)
- $this->dieUsageMsg(array('invaliduser', $params['user']));
+ : User::getCanonicalName( $params['user'] );
+ if ( !$username )
+ $this->dieUsageMsg( array( 'invaliduser', $params['user'] ) );
- $articleObj = new Article($titleObj);
- $summary = (isset($params['summary']) ? $params['summary'] : "");
+ $articleObj = new Article( $titleObj );
+ $summary = ( isset( $params['summary'] ) ? $params['summary'] : "" );
$details = null;
- $retval = $articleObj->doRollback($username, $summary, $params['token'], $params['markbot'], $details);
+ $retval = $articleObj->doRollback( $username, $summary, $params['token'], $params['markbot'], $details );
- if($retval)
+ if ( $retval )
// We don't care about multiple errors, just report one of them
- $this->dieUsageMsg(reset($retval));
+ $this->dieUsageMsg( reset( $retval ) );
$info = array(
'title' => $titleObj->getPrefixedText(),
- 'pageid' => intval($details['current']->getPage()),
+ 'pageid' => intval( $details['current']->getPage() ),
'summary' => $details['summary'],
- 'revid' => intval($titleObj->getLatestRevID()),
- 'old_revid' => intval($details['current']->getID()),
- 'last_revid' => intval($details['target']->getID())
+ 'revid' => intval( $details['newid'] ),
+ 'old_revid' => intval( $details['current']->getID() ),
+ 'last_revid' => intval( $details['target']->getID() )
);
- $this->getResult()->addValue(null, $this->getModuleName(), $info);
+ $this->getResult()->addValue( null, $this->getModuleName(), $info );
}
public function mustBePosted() { return true; }
@@ -113,6 +111,16 @@ class ApiRollback extends ApiBase {
'they will all be rolled back.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'title' ),
+ array( 'missingparam', 'user' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'notanarticle' ),
+ array( 'invaliduser', 'user' ),
+ ) );
+ }
protected function getExamples() {
return array (
@@ -122,6 +130,6 @@ class ApiRollback extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiRollback.php 48122 2009-03-07 12:58:41Z catrope $';
+ return __CLASS__ . ': $Id: ApiRollback.php 65371 2010-04-21 10:41:25Z tstarling $';
}
}
diff --git a/includes/api/ApiUnblock.php b/includes/api/ApiUnblock.php
index 9216317a..2ffae504 100644
--- a/includes/api/ApiUnblock.php
+++ b/includes/api/ApiUnblock.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -35,8 +35,8 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiUnblock extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
/**
@@ -46,38 +46,37 @@ class ApiUnblock extends ApiBase {
global $wgUser;
$params = $this->extractRequestParams();
- if($params['gettoken'])
+ if ( $params['gettoken'] )
{
$res['unblocktoken'] = $wgUser->editToken();
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
return;
}
- if(is_null($params['id']) && is_null($params['user']))
- $this->dieUsageMsg(array('unblock-notarget'));
- if(!is_null($params['id']) && !is_null($params['user']))
- $this->dieUsageMsg(array('unblock-idanduser'));
- if(is_null($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
- if(!$wgUser->isAllowed('block'))
- $this->dieUsageMsg(array('cantunblock'));
+ if ( is_null( $params['id'] ) && is_null( $params['user'] ) )
+ $this->dieUsageMsg( array( 'unblock-notarget' ) );
+ if ( !is_null( $params['id'] ) && !is_null( $params['user'] ) )
+ $this->dieUsageMsg( array( 'unblock-idanduser' ) );
+
+ if ( !$wgUser->isAllowed( 'block' ) )
+ $this->dieUsageMsg( array( 'cantunblock' ) );
$id = $params['id'];
$user = $params['user'];
- $reason = (is_null($params['reason']) ? '' : $params['reason']);
- $retval = IPUnblockForm::doUnblock($id, $user, $reason, $range);
- if($retval)
- $this->dieUsageMsg($retval);
+ $reason = ( is_null( $params['reason'] ) ? '' : $params['reason'] );
+ $retval = IPUnblockForm::doUnblock( $id, $user, $reason, $range );
+ if ( $retval )
+ $this->dieUsageMsg( $retval );
- $res['id'] = intval($id);
+ $res['id'] = intval( $id );
$res['user'] = $user;
$res['reason'] = $reason;
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -108,6 +107,18 @@ class ApiUnblock extends ApiBase {
'Unblock a user.'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'unblock-notarget' ),
+ array( 'unblock-idanduser' ),
+ array( 'cantunblock' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array (
@@ -117,6 +128,6 @@ class ApiUnblock extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUnblock.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiUnblock.php 62599 2010-02-16 21:59:16Z reedy $';
}
}
diff --git a/includes/api/ApiUndelete.php b/includes/api/ApiUndelete.php
index ddc9f7f8..9efba5f3 100644
--- a/includes/api/ApiUndelete.php
+++ b/includes/api/ApiUndelete.php
@@ -22,9 +22,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ("ApiBase.php");
+ require_once ( "ApiBase.php" );
}
/**
@@ -32,58 +32,57 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiUndelete extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
global $wgUser;
$params = $this->extractRequestParams();
- $titleObj = NULL;
- if(!isset($params['title']))
- $this->dieUsageMsg(array('missingparam', 'title'));
- if(!isset($params['token']))
- $this->dieUsageMsg(array('missingparam', 'token'));
+ $titleObj = null;
+ if ( !isset( $params['title'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'title' ) );
- if(!$wgUser->isAllowed('undelete'))
- $this->dieUsageMsg(array('permdenied-undelete'));
- if($wgUser->isBlocked())
- $this->dieUsageMsg(array('blockedtext'));
- if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsageMsg(array('sessionfailure'));
+ if ( !$wgUser->isAllowed( 'undelete' ) )
+ $this->dieUsageMsg( array( 'permdenied-undelete' ) );
- $titleObj = Title::newFromText($params['title']);
- if(!$titleObj)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
+ if ( $wgUser->isBlocked() )
+ $this->dieUsageMsg( array( 'blockedtext' ) );
+
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
// Convert timestamps
- if(!isset($params['timestamps']))
+ if ( !isset( $params['timestamps'] ) )
$params['timestamps'] = array();
- if(!is_array($params['timestamps']))
- $params['timestamps'] = array($params['timestamps']);
- foreach($params['timestamps'] as $i => $ts)
- $params['timestamps'][$i] = wfTimestamp(TS_MW, $ts);
+ if ( !is_array( $params['timestamps'] ) )
+ $params['timestamps'] = array( $params['timestamps'] );
+ foreach ( $params['timestamps'] as $i => $ts )
+ $params['timestamps'][$i] = wfTimestamp( TS_MW, $ts );
- $pa = new PageArchive($titleObj);
- $dbw = wfGetDB(DB_MASTER);
+ $pa = new PageArchive( $titleObj );
+ $dbw = wfGetDB( DB_MASTER );
$dbw->begin();
- $retval = $pa->undelete((isset($params['timestamps']) ? $params['timestamps'] : array()), $params['reason']);
- if(!is_array($retval))
- $this->dieUsageMsg(array('cannotundelete'));
+ $retval = $pa->undelete( ( isset( $params['timestamps'] ) ? $params['timestamps'] : array() ), $params['reason'] );
+ if ( !is_array( $retval ) )
+ $this->dieUsageMsg( array( 'cannotundelete' ) );
- if($retval[1])
- wfRunHooks( 'FileUndeleteComplete',
- array($titleObj, array(), $wgUser, $params['reason']) );
+ if ( $retval[1] )
+ wfRunHooks( 'FileUndeleteComplete',
+ array( $titleObj, array(), $wgUser, $params['reason'] ) );
$info['title'] = $titleObj->getPrefixedText();
- $info['revisions'] = intval($retval[0]);
- $info['fileversions'] = intval($retval[1]);
- $info['reason'] = intval($retval[2]);
- $this->getResult()->addValue(null, $this->getModuleName(), $info);
+ $info['revisions'] = intval( $retval[0] );
+ $info['fileversions'] = intval( $retval[1] );
+ $info['reason'] = intval( $retval[2] );
+ $this->getResult()->addValue( null, $this->getModuleName(), $info );
}
- public function mustBePosted() { return true; }
+ public function mustBePosted() {
+ return true;
+ }
public function isWriteMode() {
return true;
@@ -115,6 +114,20 @@ class ApiUndelete extends ApiBase {
'retrieved through list=deletedrevs'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'title' ),
+ array( 'permdenied-undelete' ),
+ array( 'blockedtext' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'cannotundelete' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
protected function getExamples() {
return array (
@@ -124,6 +137,6 @@ class ApiUndelete extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUndelete.php 48091 2009-03-06 13:49:44Z catrope $';
+ return __CLASS__ . ': $Id: ApiUndelete.php 62599 2010-02-16 21:59:16Z reedy $';
}
}
diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php
new file mode 100644
index 00000000..6b91b223
--- /dev/null
+++ b/includes/api/ApiUpload.php
@@ -0,0 +1,325 @@
+<?php
+/*
+ * Created on Aug 21, 2008
+ * API for MediaWiki 1.8+
+ *
+ * Copyright (C) 2008 - 2010 Bryan Tong Minh <Bryan.TongMinh@Gmail.com>
+ *
+ * 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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( "ApiBase.php" );
+}
+
+/**
+ * @ingroup API
+ */
+class ApiUpload extends ApiBase {
+ protected $mUpload = null;
+ protected $mParams;
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ public function execute() {
+ global $wgUser, $wgAllowCopyUploads;
+
+ // Check whether upload is enabled
+ if ( !UploadBase::isEnabled() )
+ $this->dieUsageMsg( array( 'uploaddisabled' ) );
+
+ $this->mParams = $this->extractRequestParams();
+ $request = $this->getMain()->getRequest();
+
+ // Add the uploaded file to the params array
+ $this->mParams['file'] = $request->getFileName( 'file' );
+
+ // One and only one of the following parameters is needed
+ $this->requireOnlyOneParameter( $this->mParams,
+ 'sessionkey', 'file', 'url' );
+
+ if ( $this->mParams['sessionkey'] ) {
+ /**
+ * Upload stashed in a previous request
+ */
+ // Check the session key
+ if ( !isset( $_SESSION['wsUploadData'][$this->mParams['sessionkey']] ) )
+ $this->dieUsageMsg( array( 'invalid-session-key' ) );
+
+ $this->mUpload = new UploadFromStash();
+ $this->mUpload->initialize( $this->mParams['filename'],
+ $this->mParams['sessionkey'],
+ $_SESSION['wsUploadData'][$this->mParams['sessionkey']] );
+ } elseif ( isset( $this->mParams['filename'] ) ) {
+ /**
+ * Upload from url, etc
+ * Parameter filename is required
+ */
+
+ if ( isset( $this->mParams['file'] ) ) {
+ $this->mUpload = new UploadFromFile();
+ $this->mUpload->initialize(
+ $this->mParams['filename'],
+ $request->getFileTempName( 'file' ),
+ $request->getFileSize( 'file' )
+ );
+ } elseif ( isset( $this->mParams['url'] ) ) {
+ // make sure upload by url is enabled:
+ if ( !$wgAllowCopyUploads )
+ $this->dieUsageMsg( array( 'uploaddisabled' ) );
+
+ // make sure the current user can upload
+ if ( ! $wgUser->isAllowed( 'upload_by_url' ) )
+ $this->dieUsageMsg( array( 'badaccess-groups' ) );
+
+ $this->mUpload = new UploadFromUrl();
+ $this->mUpload->initialize( $this->mParams['filename'],
+ $this->mParams['url'] );
+
+ $status = $this->mUpload->fetchFile();
+ if ( !$status->isOK() ) {
+ $this->dieUsage( $status->getWikiText(), 'fetchfileerror' );
+ }
+ }
+ } else $this->dieUsageMsg( array( 'missingparam', 'filename' ) );
+
+ if ( !isset( $this->mUpload ) )
+ $this->dieUsage( 'No upload module set', 'nomodule' );
+
+ // Check whether the user has the appropriate permissions to upload anyway
+ $permission = $this->mUpload->isAllowed( $wgUser );
+
+ if ( $permission !== true ) {
+ if ( !$wgUser->isLoggedIn() )
+ $this->dieUsageMsg( array( 'mustbeloggedin', 'upload' ) );
+ else
+ $this->dieUsageMsg( array( 'badaccess-groups' ) );
+ }
+ // Perform the upload
+ $result = $this->performUpload();
+
+ // Cleanup any temporary mess
+ $this->mUpload->cleanupTempFile();
+
+ $this->getResult()->addValue( null, $this->getModuleName(), $result );
+ }
+
+ protected function performUpload() {
+ global $wgUser;
+ $result = array();
+ $permErrors = $this->mUpload->verifyPermissions( $wgUser );
+ if ( $permErrors !== true ) {
+ $this->dieUsageMsg( array( 'badaccess-groups' ) );
+ }
+
+ // TODO: Move them to ApiBase's message map
+ $verification = $this->mUpload->verifyUpload();
+ if ( $verification['status'] !== UploadBase::OK ) {
+ $result['result'] = 'Failure';
+ switch( $verification['status'] ) {
+ case UploadBase::EMPTY_FILE:
+ $this->dieUsage( 'The file you submitted was empty', 'empty-file' );
+ break;
+ case UploadBase::FILETYPE_MISSING:
+ $this->dieUsage( 'The file is missing an extension', 'filetype-missing' );
+ break;
+ case UploadBase::FILETYPE_BADTYPE:
+ global $wgFileExtensions;
+ $this->dieUsage( 'This type of file is banned', 'filetype-banned',
+ 0, array(
+ 'filetype' => $verification['finalExt'],
+ 'allowed' => $wgFileExtensions
+ ) );
+ break;
+ case UploadBase::MIN_LENGTH_PARTNAME:
+ $this->dieUsage( 'The filename is too short', 'filename-tooshort' );
+ break;
+ case UploadBase::ILLEGAL_FILENAME:
+ $this->dieUsage( 'The filename is not allowed', 'illegal-filename',
+ 0, array( 'filename' => $verification['filtered'] ) );
+ break;
+ case UploadBase::OVERWRITE_EXISTING_FILE:
+ $this->dieUsage( 'Overwriting an existing file is not allowed', 'overwrite' );
+ break;
+ case UploadBase::VERIFICATION_ERROR:
+ $this->getResult()->setIndexedTagName( $verification['details'], 'detail' );
+ $this->dieUsage( 'This file did not pass file verification', 'verification-error',
+ 0, array( 'details' => $verification['details'] ) );
+ break;
+ case UploadBase::HOOK_ABORTED:
+ $this->dieUsage( "The modification you tried to make was aborted by an extension hook",
+ 'hookaborted', 0, array( 'error' => $verification['error'] ) );
+ break;
+ default:
+ $this->dieUsage( 'An unknown error occurred', 'unknown-error',
+ 0, array( 'code' => $verification['status'] ) );
+ break;
+ }
+ return $result;
+ }
+ if ( !$this->mParams['ignorewarnings'] ) {
+ $warnings = $this->mUpload->checkWarnings();
+ if ( $warnings ) {
+ // Add indices
+ $this->getResult()->setIndexedTagName( $warnings, 'warning' );
+
+ if ( isset( $warnings['duplicate'] ) ) {
+ $dupes = array();
+ foreach ( $warnings['duplicate'] as $key => $dupe )
+ $dupes[] = $dupe->getName();
+ $this->getResult()->setIndexedTagName( $dupes, 'duplicate' );
+ $warnings['duplicate'] = $dupes;
+ }
+
+
+ if ( isset( $warnings['exists'] ) ) {
+ $warning = $warnings['exists'];
+ unset( $warnings['exists'] );
+ $warnings[$warning['warning']] = $warning['file']->getName();
+ }
+
+ $result['result'] = 'Warning';
+ $result['warnings'] = $warnings;
+
+ $sessionKey = $this->mUpload->stashSession();
+ if ( !$sessionKey )
+ $this->dieUsage( 'Stashing temporary file failed', 'stashfailed' );
+
+ $result['sessionkey'] = $sessionKey;
+
+ return $result;
+ }
+ }
+
+ // Use comment as initial page text by default
+ if ( is_null( $this->mParams['text'] ) )
+ $this->mParams['text'] = $this->mParams['comment'];
+
+ // No errors, no warnings: do the upload
+ $status = $this->mUpload->performUpload( $this->mParams['comment'],
+ $this->mParams['text'], $this->mParams['watch'], $wgUser );
+
+ if ( !$status->isGood() ) {
+ $error = $status->getErrorsArray();
+ $this->getResult()->setIndexedTagName( $result['details'], 'error' );
+
+ $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
+ }
+
+ $file = $this->mUpload->getLocalFile();
+ $result['result'] = 'Success';
+ $result['filename'] = $file->getName();
+ $result['imageinfo'] = $this->mUpload->getImageInfo( $this->getResult() );
+
+ return $result;
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams() {
+ $params = array(
+ 'filename' => null,
+ 'comment' => array(
+ ApiBase::PARAM_DFLT => ''
+ ),
+ 'text' => null,
+ 'token' => null,
+ 'watch' => false,
+ 'ignorewarnings' => false,
+ 'file' => null,
+ 'url' => null,
+ 'sessionkey' => null,
+ );
+ return $params;
+
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'filename' => 'Target filename',
+ 'token' => 'Edit token. You can get one of these through prop=info',
+ 'comment' => 'Upload comment. Also used as the initial page text for new files if "text" is not specified',
+ 'text' => 'Initial page text for new files',
+ 'watch' => 'Watch the page',
+ 'ignorewarnings' => 'Ignore any warnings',
+ 'file' => 'File contents',
+ 'url' => 'Url to fetch the file from',
+ 'sessionkey' => array(
+ 'Session key returned by a previous upload that failed due to warnings',
+ ),
+ );
+ }
+
+ public function getDescription() {
+ return array(
+ 'Upload a file, or get the status of pending uploads. Several methods are available:',
+ ' * Upload file contents directly, using the "file" parameter',
+ ' * Have the MediaWiki server fetch a file from a URL, using the "url" parameter',
+ ' * Complete an earlier upload that failed due to warnings, using the "sessionkey" parameter',
+ 'Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when',
+ 'sending the "file". Note also that queries using session keys must be',
+ 'done in the same login session as the query that originally returned the key (i.e. do not',
+ 'log out and then log back in). Also you must get and send an edit token before doing any upload stuff.'
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'uploaddisabled' ),
+ array( 'invalid-session-key' ),
+ array( 'uploaddisabled' ),
+ array( 'badaccess-groups' ),
+ array( 'missingparam', 'filename' ),
+ array( 'mustbeloggedin', 'upload' ),
+ array( 'badaccess-groups' ),
+ array( 'badaccess-groups' ),
+ array( 'code' => 'fetchfileerror', 'info' => '' ),
+ array( 'code' => 'nomodule', 'info' => 'No upload module set' ),
+ array( 'code' => 'empty-file', 'info' => 'The file you submitted was empty' ),
+ array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
+ array( 'code' => 'filename-tooshort', 'info' => 'The filename is too short' ),
+ array( 'code' => 'overwrite', 'info' => 'Overwriting an existing file is not allowed' ),
+ array( 'code' => 'stashfailed', 'info' => 'Stashing temporary file failed' ),
+ array( 'code' => 'internal-error', 'info' => 'An internal error occurred' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+
+ protected function getExamples() {
+ return array(
+ 'Upload from a URL:',
+ ' api.php?action=upload&filename=Wiki.png&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png',
+ 'Complete an upload that failed due to warnings:',
+ ' api.php?action=upload&filename=Wiki.png&sessionkey=sessionkey&ignorewarnings=1',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiUpload.php 51812 2009-06-12 23:45:20Z dale $';
+ }
+}
diff --git a/includes/api/ApiUserrights.php b/includes/api/ApiUserrights.php
new file mode 100644
index 00000000..6296a8f8
--- /dev/null
+++ b/includes/api/ApiUserrights.php
@@ -0,0 +1,128 @@
+<?php
+
+/*
+ * Created on Mar 24, 2009
+ * API for MediaWiki 1.8+
+ *
+ * Copyright (C) 2009 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ *
+ * 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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once ( "ApiBase.php" );
+}
+
+/**
+ * @ingroup API
+ */
+class ApiUserrights extends ApiBase {
+
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ // User already validated in call to getTokenSalt from Main
+ $form = new UserrightsPage;
+ $user = $form->fetchUser( $params['user'] );
+
+ $r['user'] = $user->getName();
+ list( $r['added'], $r['removed'] ) =
+ $form->doSaveUserGroups(
+ $user, (array)$params['add'],
+ (array)$params['remove'], $params['reason'] );
+
+ $this->getResult()->setIndexedTagName( $r['added'], 'group' );
+ $this->getResult()->setIndexedTagName( $r['removed'], 'group' );
+ $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams() {
+ return array (
+ 'user' => null,
+ 'add' => array(
+ ApiBase :: PARAM_TYPE => User::getAllGroups(),
+ ApiBase :: PARAM_ISMULTI => true
+ ),
+ 'remove' => array(
+ ApiBase :: PARAM_TYPE => User::getAllGroups(),
+ ApiBase :: PARAM_ISMULTI => true
+ ),
+ 'token' => null,
+ 'reason' => array(
+ ApiBase :: PARAM_DFLT => ''
+ )
+ );
+ }
+
+ public function getParamDescription() {
+ return array (
+ 'user' => 'User name',
+ 'add' => 'Add the user to these groups',
+ 'remove' => 'Remove the user from these groups',
+ 'token' => 'A userrights token previously retrieved through list=users',
+ 'reason' => 'Reason for the change',
+ );
+ }
+
+ public function getDescription() {
+ return array(
+ 'Add/remove a user to/from groups',
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'user' ),
+ ) );
+ }
+
+ public function getTokenSalt() {
+ $params = $this->extractRequestParams();
+ if ( is_null( $params['user'] ) )
+ $this->dieUsageMsg( array( 'missingparam', 'user' ) );
+
+ $form = new UserrightsPage;
+ $user = $form->fetchUser( $params['user'] );
+ if ( $user instanceof WikiErrorMsg )
+ $this->dieUsageMsg( array_merge(
+ (array)$user->getMessageKey(), $user->getMessageArgs() ) );
+
+ return $user->getName();
+ }
+
+ protected function getExamples() {
+ return array (
+ 'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC'
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiUserrights.php 62686 2010-02-19 01:25:57Z reedy $';
+ }
+}
diff --git a/includes/api/ApiWatch.php b/includes/api/ApiWatch.php
index 7901b6ac..391d91e2 100644
--- a/includes/api/ApiWatch.php
+++ b/includes/api/ApiWatch.php
@@ -23,9 +23,9 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
// Eclipse helper - will be ignored in production
- require_once ('ApiBase.php');
+ require_once ( 'ApiBase.php' );
}
/**
@@ -35,21 +35,25 @@ if (!defined('MEDIAWIKI')) {
*/
class ApiWatch extends ApiBase {
- public function __construct($main, $action) {
- parent :: __construct($main, $action);
+ public function __construct( $main, $action ) {
+ parent :: __construct( $main, $action );
}
public function execute() {
global $wgUser;
- if(!$wgUser->isLoggedIn())
- $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin');
+ if ( !$wgUser->isLoggedIn() )
+ $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' );
+
$params = $this->extractRequestParams();
- $title = Title::newFromText($params['title']);
- if(!$title)
- $this->dieUsageMsg(array('invalidtitle', $params['title']));
- $article = new Article($title);
- $res = array('title' => $title->getPrefixedText());
- if($params['unwatch'])
+ $title = Title::newFromText( $params['title'] );
+
+ if ( !$title )
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+
+ $article = new Article( $title );
+ $res = array( 'title' => $title->getPrefixedText() );
+
+ if ( $params['unwatch'] )
{
$res['unwatched'] = '';
$success = $article->doUnwatch();
@@ -59,14 +63,14 @@ class ApiWatch extends ApiBase {
$res['watched'] = '';
$success = $article->doWatch();
}
- if(!$success)
- $this->dieUsageMsg(array('hookaborted'));
- $this->getResult()->addValue(null, $this->getModuleName(), $res);
+ if ( !$success )
+ $this->dieUsageMsg( array( 'hookaborted' ) );
+ $this->getResult()->addValue( null, $this->getModuleName(), $res );
}
public function isWriteMode() {
return true;
- }
+ }
public function getAllowedParams() {
return array (
@@ -87,6 +91,14 @@ class ApiWatch extends ApiBase {
'Add or remove a page from/to the current user\'s watchlist'
);
}
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'hookaborted' ),
+ ) );
+ }
protected function getExamples() {
return array(
@@ -96,6 +108,6 @@ class ApiWatch extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiWatch.php 69579 2010-07-20 02:49:55Z tstarling $';
+ return __CLASS__ . ': $Id: ApiWatch.php 69578 2010-07-20 02:46:20Z tstarling $';
}
}
diff --git a/includes/cbt/CBTCompiler.php b/includes/cbt/CBTCompiler.php
deleted file mode 100644
index 75955797..00000000
--- a/includes/cbt/CBTCompiler.php
+++ /dev/null
@@ -1,366 +0,0 @@
-<?php
-
-/**
- * This file contains functions to convert callback templates to other languages.
- * The template should first be pre-processed with CBTProcessor to remove static
- * sections.
- */
-
-
-require_once( dirname( __FILE__ ) . '/CBTProcessor.php' );
-
-/**
- * Push a value onto the stack
- * Argument 1: value
- */
-define( 'CBT_PUSH', 1 );
-
-/**
- * Pop, concatenate argument, push
- * Argument 1: value
- */
-define( 'CBT_CAT', 2 );
-
-/**
- * Concatenate where the argument is on the stack, instead of immediate
- */
-define( 'CBT_CATS', 3 );
-
-/**
- * Call a function, push the return value onto the stack and put it in the cache
- * Argument 1: argument count
- *
- * The arguments to the function are on the stack
- */
-define( 'CBT_CALL', 4 );
-
-/**
- * Pop, htmlspecialchars, push
- */
-define( 'CBT_HX', 5 );
-
-class CBTOp {
- var $opcode;
- var $arg1;
- var $arg2;
-
- function CBTOp( $opcode, $arg1, $arg2 ) {
- $this->opcode = $opcode;
- $this->arg1 = $arg1;
- $this->arg2 = $arg2;
- }
-
- function name() {
- $opcodeNames = array(
- CBT_PUSH => 'PUSH',
- CBT_CAT => 'CAT',
- CBT_CATS => 'CATS',
- CBT_CALL => 'CALL',
- CBT_HX => 'HX',
- );
- return $opcodeNames[$this->opcode];
- }
-};
-
-class CBTCompiler {
- var $mOps = array();
- var $mCode;
-
- function CBTCompiler( $text ) {
- $this->mText = $text;
- }
-
- /**
- * Compile the text.
- * Returns true on success, error message on failure
- */
- function compile() {
- $this->mLastError = false;
- $this->mOps = array();
-
- $this->doText( 0, strlen( $this->mText ) );
-
- if ( $this->mLastError !== false ) {
- $pos = $this->mErrorPos;
-
- // Find the line number at which the error occurred
- $startLine = 0;
- $endLine = 0;
- $line = 0;
- do {
- if ( $endLine ) {
- $startLine = $endLine + 1;
- }
- $endLine = strpos( $this->mText, "\n", $startLine );
- ++$line;
- } while ( $endLine !== false && $endLine < $pos );
-
- $text = "Template error at line $line: $this->mLastError\n<pre>\n";
-
- $context = rtrim( str_replace( "\t", " ", substr( $this->mText, $startLine, $endLine - $startLine ) ) );
- $text .= htmlspecialchars( $context ) . "\n" . str_repeat( ' ', $pos - $startLine ) . "^\n</pre>\n";
- } else {
- $text = true;
- }
-
- return $text;
- }
-
- /** Shortcut for doOpenText( $start, $end, false */
- function doText( $start, $end ) {
- return $this->doOpenText( $start, $end, false );
- }
-
- function phpQuote( $text ) {
- return "'" . strtr( $text, array( "\\" => "\\\\", "'" => "\\'" ) ) . "'";
- }
-
- function op( $opcode, $arg1 = null, $arg2 = null) {
- return new CBTOp( $opcode, $arg1, $arg2 );
- }
-
- /**
- * Recursive workhorse for text mode.
- *
- * Processes text mode starting from offset $p, until either $end is
- * reached or a closing brace is found. If $needClosing is false, a
- * closing brace will flag an error, if $needClosing is true, the lack
- * of a closing brace will flag an error.
- *
- * The parameter $p is advanced to the position after the closing brace,
- * or after the end. A CBTValue is returned.
- *
- * @private
- */
- function doOpenText( &$p, $end, $needClosing = true ) {
- $in =& $this->mText;
- $start = $p;
- $atStart = true;
-
- $foundClosing = false;
- while ( $p < $end ) {
- $matchLength = strcspn( $in, CBT_BRACE, $p, $end - $p );
- $pToken = $p + $matchLength;
-
- if ( $pToken >= $end ) {
- // No more braces, output remainder
- if ( $atStart ) {
- $this->mOps[] = $this->op( CBT_PUSH, substr( $in, $p ) );
- $atStart = false;
- } else {
- $this->mOps[] = $this->op( CBT_CAT, substr( $in, $p ) );
- }
- $p = $end;
- break;
- }
-
- // Output the text before the brace
- if ( $atStart ) {
- $this->mOps[] = $this->op( CBT_PUSH, substr( $in, $p, $matchLength ) );
- $atStart = false;
- } else {
- $this->mOps[] = $this->op( CBT_CAT, substr( $in, $p, $matchLength ) );
- }
-
- // Advance the pointer
- $p = $pToken + 1;
-
- // Check for closing brace
- if ( $in[$pToken] == '}' ) {
- $foundClosing = true;
- break;
- }
-
- // Handle the "{fn}" special case
- if ( $pToken > 0 && $in[$pToken-1] == '"' ) {
- $this->doOpenFunction( $p, $end );
- if ( $p < $end && $in[$p] == '"' ) {
- $this->mOps[] = $this->op( CBT_HX );
- }
- } else {
- $this->doOpenFunction( $p, $end );
- }
- if ( $atStart ) {
- $atStart = false;
- } else {
- $this->mOps[] = $this->op( CBT_CATS );
- }
- }
- if ( $foundClosing && !$needClosing ) {
- $this->error( 'Errant closing brace', $p );
- } elseif ( !$foundClosing && $needClosing ) {
- $this->error( 'Unclosed text section', $start );
- } else {
- if ( $atStart ) {
- $this->mOps[] = $this->op( CBT_PUSH, '' );
- }
- }
- }
-
- /**
- * Recursive workhorse for function mode.
- *
- * Processes function mode starting from offset $p, until either $end is
- * reached or a closing brace is found. If $needClosing is false, a
- * closing brace will flag an error, if $needClosing is true, the lack
- * of a closing brace will flag an error.
- *
- * The parameter $p is advanced to the position after the closing brace,
- * or after the end. A CBTValue is returned.
- *
- * @private
- */
- function doOpenFunction( &$p, $end, $needClosing = true ) {
- $in =& $this->mText;
- $start = $p;
- $argCount = 0;
-
- $foundClosing = false;
- while ( $p < $end ) {
- $char = $in[$p];
- if ( $char == '{' ) {
- // Switch to text mode
- ++$p;
- $this->doOpenText( $p, $end );
- ++$argCount;
- } elseif ( $char == '}' ) {
- // Block end
- ++$p;
- $foundClosing = true;
- break;
- } elseif ( false !== strpos( CBT_WHITE, $char ) ) {
- // Whitespace
- // Consume the rest of the whitespace
- $p += strspn( $in, CBT_WHITE, $p, $end - $p );
- } else {
- // Token, find the end of it
- $tokenLength = strcspn( $in, CBT_DELIM, $p, $end - $p );
- $this->mOps[] = $this->op( CBT_PUSH, substr( $in, $p, $tokenLength ) );
-
- // Execute the token as a function if it's not the function name
- if ( $argCount ) {
- $this->mOps[] = $this->op( CBT_CALL, 1 );
- }
-
- $p += $tokenLength;
- ++$argCount;
- }
- }
- if ( !$foundClosing && $needClosing ) {
- $this->error( 'Unclosed function', $start );
- return '';
- }
-
- $this->mOps[] = $this->op( CBT_CALL, $argCount );
- }
-
- /**
- * Set a flag indicating that an error has been found.
- */
- function error( $text, $pos = false ) {
- $this->mLastError = $text;
- if ( $pos === false ) {
- $this->mErrorPos = $this->mCurrentPos;
- } else {
- $this->mErrorPos = $pos;
- }
- }
-
- function getLastError() {
- return $this->mLastError;
- }
-
- function opsToString() {
- $s = '';
- foreach( $this->mOps as $op ) {
- $s .= $op->name();
- if ( !is_null( $op->arg1 ) ) {
- $s .= ' ' . var_export( $op->arg1, true );
- }
- if ( !is_null( $op->arg2 ) ) {
- $s .= ' ' . var_export( $op->arg2, true );
- }
- $s .= "\n";
- }
- return $s;
- }
-
- function generatePHP( $functionObj ) {
- $fname = 'CBTCompiler::generatePHP';
- wfProfileIn( $fname );
- $stack = array();
-
- foreach( $this->mOps as $op ) {
- switch( $op->opcode ) {
- case CBT_PUSH:
- $stack[] = $this->phpQuote( $op->arg1 );
- break;
- case CBT_CAT:
- $val = array_pop( $stack );
- array_push( $stack, "$val . " . $this->phpQuote( $op->arg1 ) );
- break;
- case CBT_CATS:
- $right = array_pop( $stack );
- $left = array_pop( $stack );
- array_push( $stack, "$left . $right" );
- break;
- case CBT_CALL:
- $args = array_slice( $stack, count( $stack ) - $op->arg1, $op->arg1 );
- $stack = array_slice( $stack, 0, count( $stack ) - $op->arg1 );
-
- // Some special optimised expansions
- if ( $op->arg1 == 0 ) {
- $result = '';
- } else {
- $func = array_shift( $args );
- if ( substr( $func, 0, 1 ) == "'" && substr( $func, -1 ) == "'" ) {
- $func = substr( $func, 1, strlen( $func ) - 2 );
- if ( $func == "if" ) {
- if ( $op->arg1 < 3 ) {
- // This should have been caught during processing
- return "Not enough arguments to if";
- } elseif ( $op->arg1 == 3 ) {
- $result = "(({$args[0]} != '') ? ({$args[1]}) : '')";
- } else {
- $result = "(({$args[0]} != '') ? ({$args[1]}) : ({$args[2]}))";
- }
- } elseif ( $func == "true" ) {
- $result = "true";
- } elseif( $func == "lbrace" || $func == "{" ) {
- $result = "{";
- } elseif( $func == "rbrace" || $func == "}" ) {
- $result = "}";
- } elseif ( $func == "escape" || $func == "~" ) {
- $result = "htmlspecialchars({$args[0]})";
- } else {
- // Known function name
- $result = "{$functionObj}->{$func}(" . implode( ', ', $args ) . ')';
- }
- } else {
- // Unknown function name
- $result = "call_user_func(array($functionObj, $func), " . implode( ', ', $args ) . ' )';
- }
- }
- array_push( $stack, $result );
- break;
- case CBT_HX:
- $val = array_pop( $stack );
- array_push( $stack, "htmlspecialchars( $val )" );
- break;
- default:
- return "Unknown opcode {$op->opcode}\n";
- }
- }
- wfProfileOut( $fname );
- if ( count( $stack ) !== 1 ) {
- return "Error, stack count incorrect\n";
- }
- return '
- global $cbtExecutingGenerated;
- ++$cbtExecutingGenerated;
- $output = ' . $stack[0] . ';
- --$cbtExecutingGenerated;
- return $output;
- ';
- }
-}
diff --git a/includes/cbt/CBTProcessor.php b/includes/cbt/CBTProcessor.php
deleted file mode 100644
index 4fa1a93b..00000000
--- a/includes/cbt/CBTProcessor.php
+++ /dev/null
@@ -1,539 +0,0 @@
-<?php
-
-/**
- * PHP version of the callback template processor
- * This is currently used as a test rig and is likely to be used for
- * compatibility purposes later, where the C++ extension is not available.
- */
-
-define( 'CBT_WHITE', " \t\r\n" );
-define( 'CBT_BRACE', '{}' );
-define( 'CBT_DELIM', CBT_WHITE . CBT_BRACE );
-define( 'CBT_DEBUG', 0 );
-
-$GLOBALS['cbtExecutingGenerated'] = 0;
-
-/**
- * Attempting to be a MediaWiki-independent module
- */
-if ( !function_exists( 'wfProfileIn' ) ) {
- function wfProfileIn() {}
-}
-if ( !function_exists( 'wfProfileOut' ) ) {
- function wfProfileOut() {}
-}
-
-/**
- * Escape text for inclusion in template
- */
-function cbt_escape( $text ) {
- return strtr( $text, array( '{' => '{[}', '}' => '{]}' ) );
-}
-
-/**
- * Create a CBTValue
- */
-function cbt_value( $text = '', $deps = array(), $isTemplate = false ) {
- global $cbtExecutingGenerated;
- if ( $cbtExecutingGenerated ) {
- return $text;
- } else {
- return new CBTValue( $text, $deps, $isTemplate );
- }
-}
-
-/**
- * A dependency-tracking value class
- * Callback functions should return one of these, unless they have
- * no dependencies in which case they can return a string.
- */
-class CBTValue {
- var $mText, $mDeps, $mIsTemplate;
-
- /**
- * Create a new value
- * @param $text String: , default ''.
- * @param $deps Array: what this value depends on
- * @param $isTemplate Bool: whether the result needs compilation/execution, default 'false'.
- */
- function CBTValue( $text = '', $deps = array(), $isTemplate = false ) {
- $this->mText = $text;
- if ( !is_array( $deps ) ) {
- $this->mDeps = array( $deps ) ;
- } else {
- $this->mDeps = $deps;
- }
- $this->mIsTemplate = $isTemplate;
- }
-
- /** Concatenate two values, merging their dependencies */
- function cat( $val ) {
- if ( is_object( $val ) ) {
- $this->addDeps( $val );
- $this->mText .= $val->mText;
- } else {
- $this->mText .= $val;
- }
- }
-
- /** Add the dependencies of another value to this one */
- function addDeps( $values ) {
- if ( !is_array( $values ) ) {
- $this->mDeps = array_merge( $this->mDeps, $values->mDeps );
- } else {
- foreach ( $values as $val ) {
- if ( !is_object( $val ) ) {
- var_dump( debug_backtrace() );
- exit;
- }
- $this->mDeps = array_merge( $this->mDeps, $val->mDeps );
- }
- }
- }
-
- /** Remove a list of dependencies */
- function removeDeps( $deps ) {
- $this->mDeps = array_diff( $this->mDeps, $deps );
- }
-
- function setText( $text ) {
- $this->mText = $text;
- }
-
- function getText() {
- return $this->mText;
- }
-
- function getDeps() {
- return $this->mDeps;
- }
-
- /** If the value is a template, execute it */
- function execute( &$processor ) {
- if ( $this->mIsTemplate ) {
- $myProcessor = new CBTProcessor( $this->mText, $processor->mFunctionObj, $processor->mIgnorableDeps );
- $myProcessor->mCompiling = $processor->mCompiling;
- $val = $myProcessor->doText( 0, strlen( $this->mText ) );
- if ( $myProcessor->getLastError() ) {
- $processor->error( $myProcessor->getLastError() );
- $this->mText = '';
- } else {
- $this->mText = $val->mText;
- $this->addDeps( $val );
- }
- if ( !$processor->mCompiling ) {
- $this->mIsTemplate = false;
- }
- }
- }
-
- /** If the value is plain text, escape it for inclusion in a template */
- function templateEscape() {
- if ( !$this->mIsTemplate ) {
- $this->mText = cbt_escape( $this->mText );
- }
- }
-
- /** Return true if the value has no dependencies */
- function isStatic() {
- return count( $this->mDeps ) == 0;
- }
-}
-
-/**
- * Template processor, for compilation and execution
- */
-class CBTProcessor {
- var $mText, # The text being processed
- $mFunctionObj, # The object containing callback functions
- $mCompiling = false, # True if compiling to a template, false if executing to text
- $mIgnorableDeps = array(), # Dependency names which should be treated as static
- $mFunctionCache = array(), # A cache of function results keyed by argument hash
- $mLastError = false, # Last error message or false for no error
- $mErrorPos = 0, # Last error position
-
- /** Built-in functions */
- $mBuiltins = array(
- 'if' => 'bi_if',
- 'true' => 'bi_true',
- '[' => 'bi_lbrace',
- 'lbrace' => 'bi_lbrace',
- ']' => 'bi_rbrace',
- 'rbrace' => 'bi_rbrace',
- 'escape' => 'bi_escape',
- '~' => 'bi_escape',
- );
-
- /**
- * Create a template processor for a given text, callback object and static dependency list
- */
- function CBTProcessor( $text, $functionObj, $ignorableDeps = array() ) {
- $this->mText = $text;
- $this->mFunctionObj = $functionObj;
- $this->mIgnorableDeps = $ignorableDeps;
- }
-
- /**
- * Execute the template.
- * If $compile is true, produces an optimised template where functions with static
- * dependencies have been replaced by their return values.
- */
- function execute( $compile = false ) {
- $fname = 'CBTProcessor::execute';
- wfProfileIn( $fname );
- $this->mCompiling = $compile;
- $this->mLastError = false;
- $val = $this->doText( 0, strlen( $this->mText ) );
- $text = $val->getText();
- if ( $this->mLastError !== false ) {
- $pos = $this->mErrorPos;
-
- // Find the line number at which the error occurred
- $startLine = 0;
- $endLine = 0;
- $line = 0;
- do {
- if ( $endLine ) {
- $startLine = $endLine + 1;
- }
- $endLine = strpos( $this->mText, "\n", $startLine );
- ++$line;
- } while ( $endLine !== false && $endLine < $pos );
-
- $text = "Template error at line $line: $this->mLastError\n<pre>\n";
-
- $context = rtrim( str_replace( "\t", " ", substr( $this->mText, $startLine, $endLine - $startLine ) ) );
- $text .= htmlspecialchars( $context ) . "\n" . str_repeat( ' ', $pos - $startLine ) . "^\n</pre>\n";
- }
- wfProfileOut( $fname );
- return $text;
- }
-
- /** Shortcut for execute(true) */
- function compile() {
- $fname = 'CBTProcessor::compile';
- wfProfileIn( $fname );
- $s = $this->execute( true );
- wfProfileOut( $fname );
- return $s;
- }
-
- /** Shortcut for doOpenText( $start, $end, false */
- function doText( $start, $end ) {
- return $this->doOpenText( $start, $end, false );
- }
-
- /**
- * Escape text for a template if we are producing a template. Do nothing
- * if we are producing plain text.
- */
- function templateEscape( $text ) {
- if ( $this->mCompiling ) {
- return cbt_escape( $text );
- } else {
- return $text;
- }
- }
-
- /**
- * Recursive workhorse for text mode.
- *
- * Processes text mode starting from offset $p, until either $end is
- * reached or a closing brace is found. If $needClosing is false, a
- * closing brace will flag an error, if $needClosing is true, the lack
- * of a closing brace will flag an error.
- *
- * The parameter $p is advanced to the position after the closing brace,
- * or after the end. A CBTValue is returned.
- *
- * @private
- */
- function doOpenText( &$p, $end, $needClosing = true ) {
- $fname = 'CBTProcessor::doOpenText';
- wfProfileIn( $fname );
- $in =& $this->mText;
- $start = $p;
- $ret = new CBTValue( '', array(), $this->mCompiling );
-
- $foundClosing = false;
- while ( $p < $end ) {
- $matchLength = strcspn( $in, CBT_BRACE, $p, $end - $p );
- $pToken = $p + $matchLength;
-
- if ( $pToken >= $end ) {
- // No more braces, output remainder
- $ret->cat( substr( $in, $p ) );
- $p = $end;
- break;
- }
-
- // Output the text before the brace
- $ret->cat( substr( $in, $p, $matchLength ) );
-
- // Advance the pointer
- $p = $pToken + 1;
-
- // Check for closing brace
- if ( $in[$pToken] == '}' ) {
- $foundClosing = true;
- break;
- }
-
- // Handle the "{fn}" special case
- if ( $pToken > 0 && $in[$pToken-1] == '"' ) {
- wfProfileOut( $fname );
- $val = $this->doOpenFunction( $p, $end );
- wfProfileIn( $fname );
- if ( $p < $end && $in[$p] == '"' ) {
- $val->setText( htmlspecialchars( $val->getText() ) );
- }
- $ret->cat( $val );
- } else {
- // Process the function mode component
- wfProfileOut( $fname );
- $ret->cat( $this->doOpenFunction( $p, $end ) );
- wfProfileIn( $fname );
- }
- }
- if ( $foundClosing && !$needClosing ) {
- $this->error( 'Errant closing brace', $p );
- } elseif ( !$foundClosing && $needClosing ) {
- $this->error( 'Unclosed text section', $start );
- }
- wfProfileOut( $fname );
- return $ret;
- }
-
- /**
- * Recursive workhorse for function mode.
- *
- * Processes function mode starting from offset $p, until either $end is
- * reached or a closing brace is found. If $needClosing is false, a
- * closing brace will flag an error, if $needClosing is true, the lack
- * of a closing brace will flag an error.
- *
- * The parameter $p is advanced to the position after the closing brace,
- * or after the end. A CBTValue is returned.
- *
- * @private
- */
- function doOpenFunction( &$p, $end, $needClosing = true ) {
- $in =& $this->mText;
- $start = $p;
- $tokens = array();
- $unexecutedTokens = array();
-
- $foundClosing = false;
- while ( $p < $end ) {
- $char = $in[$p];
- if ( $char == '{' ) {
- // Switch to text mode
- ++$p;
- $tokenStart = $p;
- $token = $this->doOpenText( $p, $end );
- $tokens[] = $token;
- $unexecutedTokens[] = '{' . substr( $in, $tokenStart, $p - $tokenStart - 1 ) . '}';
- } elseif ( $char == '}' ) {
- // Block end
- ++$p;
- $foundClosing = true;
- break;
- } elseif ( false !== strpos( CBT_WHITE, $char ) ) {
- // Whitespace
- // Consume the rest of the whitespace
- $p += strspn( $in, CBT_WHITE, $p, $end - $p );
- } else {
- // Token, find the end of it
- $tokenLength = strcspn( $in, CBT_DELIM, $p, $end - $p );
- $token = new CBTValue( substr( $in, $p, $tokenLength ) );
- // Execute the token as a function if it's not the function name
- if ( count( $tokens ) ) {
- $tokens[] = $this->doFunction( array( $token ), $p );
- } else {
- $tokens[] = $token;
- }
- $unexecutedTokens[] = $token->getText();
-
- $p += $tokenLength;
- }
- }
- if ( !$foundClosing && $needClosing ) {
- $this->error( 'Unclosed function', $start );
- return '';
- }
-
- $val = $this->doFunction( $tokens, $start );
- if ( $this->mCompiling && !$val->isStatic() ) {
- $compiled = '';
- $first = true;
- foreach( $tokens as $i => $token ) {
- if ( $first ) {
- $first = false;
- } else {
- $compiled .= ' ';
- }
- if ( $token->isStatic() ) {
- if ( $i !== 0 ) {
- $compiled .= '{' . $token->getText() . '}';
- } else {
- $compiled .= $token->getText();
- }
- } else {
- $compiled .= $unexecutedTokens[$i];
- }
- }
-
- // The dynamic parts of the string are still represented as functions, and
- // function invocations have no dependencies. Thus the compiled result has
- // no dependencies.
- $val = new CBTValue( "{{$compiled}}", array(), true );
- }
- return $val;
- }
-
- /**
- * Execute a function, caching and returning the result value.
- * $tokens is an array of CBTValue objects. $tokens[0] is the function
- * name, the others are arguments. $p is the string position, and is used
- * for error messages only.
- */
- function doFunction( $tokens, $p ) {
- if ( count( $tokens ) == 0 ) {
- return new CBTValue;
- }
- $fname = 'CBTProcessor::doFunction';
- wfProfileIn( $fname );
-
- $ret = new CBTValue;
-
- // All functions implicitly depend on their arguments, and the function name
- // While this is not strictly necessary for all functions, it's true almost
- // all the time and so convenient to do automatically.
- $ret->addDeps( $tokens );
-
- $this->mCurrentPos = $p;
- $func = array_shift( $tokens );
- $func = $func->getText();
-
- // Extract the text component from all the tokens
- // And convert any templates to plain text
- $textArgs = array();
- foreach ( $tokens as $token ) {
- $token->execute( $this );
- $textArgs[] = $token->getText();
- }
-
- // Try the local cache
- $cacheKey = $func . "\n" . implode( "\n", $textArgs );
- if ( isset( $this->mFunctionCache[$cacheKey] ) ) {
- $val = $this->mFunctionCache[$cacheKey];
- } elseif ( isset( $this->mBuiltins[$func] ) ) {
- $func = $this->mBuiltins[$func];
- $val = call_user_func_array( array( &$this, $func ), $tokens );
- $this->mFunctionCache[$cacheKey] = $val;
- } elseif ( method_exists( $this->mFunctionObj, $func ) ) {
- $profName = get_class( $this->mFunctionObj ) . '::' . $func;
- wfProfileIn( "$fname-callback" );
- wfProfileIn( $profName );
- $val = call_user_func_array( array( &$this->mFunctionObj, $func ), $textArgs );
- wfProfileOut( $profName );
- wfProfileOut( "$fname-callback" );
- $this->mFunctionCache[$cacheKey] = $val;
- } else {
- $this->error( "Call of undefined function \"$func\"", $p );
- $val = new CBTValue;
- }
- if ( !is_object( $val ) ) {
- $val = new CBTValue((string)$val);
- }
-
- if ( CBT_DEBUG ) {
- $unexpanded = $val;
- }
-
- // If the output was a template, execute it
- $val->execute( $this );
-
- if ( $this->mCompiling ) {
- // Escape any braces so that the output will be a valid template
- $val->templateEscape();
- }
- $val->removeDeps( $this->mIgnorableDeps );
- $ret->addDeps( $val );
- $ret->setText( $val->getText() );
-
- if ( CBT_DEBUG ) {
- wfDebug( "doFunction $func args = "
- . var_export( $tokens, true )
- . "unexpanded return = "
- . var_export( $unexpanded, true )
- . "expanded return = "
- . var_export( $ret, true )
- );
- }
-
- wfProfileOut( $fname );
- return $ret;
- }
-
- /**
- * Set a flag indicating that an error has been found.
- */
- function error( $text, $pos = false ) {
- $this->mLastError = $text;
- if ( $pos === false ) {
- $this->mErrorPos = $this->mCurrentPos;
- } else {
- $this->mErrorPos = $pos;
- }
- }
-
- function getLastError() {
- return $this->mLastError;
- }
-
- /** 'if' built-in function */
- function bi_if( $condition, $trueBlock, $falseBlock = null ) {
- if ( is_null( $condition ) ) {
- $this->error( "Missing condition in if" );
- return '';
- }
-
- if ( $condition->getText() != '' ) {
- return new CBTValue( $trueBlock->getText(),
- array_merge( $condition->getDeps(), $trueBlock->getDeps() ),
- $trueBlock->mIsTemplate );
- } else {
- if ( !is_null( $falseBlock ) ) {
- return new CBTValue( $falseBlock->getText(),
- array_merge( $condition->getDeps(), $falseBlock->getDeps() ),
- $falseBlock->mIsTemplate );
- } else {
- return new CBTValue( '', $condition->getDeps() );
- }
- }
- }
-
- /** 'true' built-in function */
- function bi_true() {
- return "true";
- }
-
- /** left brace built-in */
- function bi_lbrace() {
- return '{';
- }
-
- /** right brace built-in */
- function bi_rbrace() {
- return '}';
- }
-
- /**
- * escape built-in.
- * Escape text for inclusion in an HTML attribute
- */
- function bi_escape( $val ) {
- return new CBTValue( htmlspecialchars( $val->getText() ), $val->getDeps() );
- }
-}
diff --git a/includes/cbt/README b/includes/cbt/README
deleted file mode 100644
index 30581661..00000000
--- a/includes/cbt/README
+++ /dev/null
@@ -1,108 +0,0 @@
-Overview
---------
-
-CBT (callback-based templates) is an experimental system for improving skin
-rendering time in MediaWiki and similar applications. The fundamental concept is
-a template language which contains tags which pull text from PHP callbacks.
-These PHP callbacks do not simply return text, they also return a description of
-the dependencies -- the global data upon which the returned text depends. This
-allows a compiler to produce a template optimised for a certain context. For
-example, a user-dependent template can be produced, with the username replaced
-by static text, as well as all user preference dependent text.
-
-This was an experimental project to prove the concept -- to explore possible
-efficiency gains and techniques. TemplateProcessor was the first element of this
-experiment. It is a class written in PHP which parses a template, and produces
-either an optimised template with dependencies removed, or the output text
-itself. I found that even with a heavily optimised template, this processor was
-not fast enough to match the speed of the original MonoBook.
-
-To improve the efficiency, I wrote TemplateCompiler, which takes a template,
-preferably pre-optimised by TemplateProcessor, and generates PHP code from it.
-The generated code is a single expression, concatenating static text and
-callback results. This approach turned out to be very efficient, making
-significant time savings compared to the original MonoBook.
-
-Despite this success, the code has been shelved for the time being. There were
-a number of unresolved implementation problems, and I felt that there were more
-pressing priorities for MediaWiki development than solving them and bringing
-this module to completion. I also believe that more research is needed into
-other possible template architectures. There is nothing fundamentally wrong with
-the CBT concept, and I would encourage others to continue its development.
-
-The problems I saw were:
-
-* Extensibility. Can non-Wikimedia installations easily extend and modify CBT
- skins? Patching seems to be necessary, is this acceptable? MediaWiki
- extensions are another problem. Unless the interfaces allow them to return
- dependencies, any hooks will have to be marked dynamic and thus inefficient.
-
-* Cache invalidation. This is a simple implementation issue, although it would
- require extensive modification to the MediaWiki core.
-
-* Syntax. The syntax is minimalistic and easy to parse, but can be quite ugly.
- Will generations of MediaWiki users curse my name?
-
-* Security. The code produced by TemplateCompiler is best stored in memcached
- and executed with eval(). This allows anyone with access to the memcached port
- to run code as the apache user.
-
-
-Template syntax
----------------
-
-There are two modes: text mode and function mode. The brace characters "{"
-and "}" are the only reserved characters. Either one of them will switch from
-text mode to function mode wherever they appear, no exceptions.
-
-In text mode, all characters are passed through to the output. In function
-mode, text is split into tokens, delimited either by whitespace or by
-matching pairs of braces. The first token is taken to be a function name. The
-other tokens are first processed in function mode themselves, then they are
-passed to the named function as parameters. The return value of the function
-is passed through to the output.
-
-Example:
- {escape {"hello"}}
-
-First brace switches to function mode. The function name is escape, the first
-and only parameter is {"hello"}. This parameter is executed. The braces around
-the parameter cause the parser to switch to text mode, thus the string "hello",
-including the quotes, is passed back and used as an argument to the escape
-function.
-
-Example:
- {if title {<h1>{title}</h1>}}
-
-The function name is "if". The first parameter is the result of calling the
-function "title". The second parameter is a level 1 HTML heading containing
-the result of the function "title". "if" is a built-in function which will
-return the second parameter only if the first is non-blank, so the effect of
-this is to return a heading element only if a title exists.
-
-As a shortcut for generation of HTML attributes, if a function mode segment is
-surrounded by double quotes, quote characters in the return value will be
-escaped. This only applies if the quote character immediately precedes the
-opening brace, and immediately follows the closing brace, with no whitespace.
-
-User callback functions are defined by passing a function object to the
-template processor. Function names appearing in the text are first checked
-against built-in function names, then against the method names in the function
-object. The function object forms a sandbox for execution of the template, so
-security-conscious users may wish to avoid including functions that allow
-arbitrary filesystem access or code execution.
-
-The callback function will receive its parameters as strings. If the
-result of the function depends only on the arguments, and certain things
-understood to be "static", such as the source code, then the callback function
-should return a string. If the result depends on other things, then the function
-should call cbt_value() to get a return value:
-
- return cbt_value( $text, $deps );
-
-where $deps is an array of string tokens, each one naming a dependency. As a
-shortcut, if there is only one dependency, $deps may be a string.
-
-
----------------------
-Tim Starling 2006
diff --git a/includes/db/Database.php b/includes/db/Database.php
index 52a59c11..ea5d77da 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -19,7 +19,7 @@ define( 'DEADLOCK_DELAY_MAX', 1500000 );
* Database abstraction object
* @ingroup Database
*/
-class Database {
+abstract class DatabaseBase {
#------------------------------------------------------------------------------
# Variables
@@ -39,6 +39,7 @@ class Database {
protected $mErrorCount = 0;
protected $mLBInfo = array();
protected $mFakeSlaveLag = null, $mFakeMaster = false;
+ protected $mDefaultBigSelects = null;
#------------------------------------------------------------------------------
# Accessors
@@ -49,7 +50,7 @@ class Database {
* Fail function, takes a Database as a parameter
* Set to false for default, 1 for ignore errors
*/
- function failFunction( $function = NULL ) {
+ function failFunction( $function = null ) {
return wfSetVar( $this->mFailFunction, $function );
}
@@ -64,7 +65,7 @@ class Database {
/**
* Boolean, controls output of large amounts of debug information
*/
- function debug( $debug = NULL ) {
+ function debug( $debug = null ) {
return wfSetBit( $this->mFlags, DBO_DEBUG, $debug );
}
@@ -72,7 +73,7 @@ class Database {
* Turns buffering of SQL result sets on (true) or off (false).
* Default is "on" and it should not be changed without good reasons.
*/
- function bufferResults( $buffer = NULL ) {
+ function bufferResults( $buffer = null ) {
if ( is_null( $buffer ) ) {
return !(bool)( $this->mFlags & DBO_NOBUFFER );
} else {
@@ -87,7 +88,7 @@ class Database {
* code should use lastErrno() and lastError() to handle the
* situation as appropriate.
*/
- function ignoreErrors( $ignoreErrors = NULL ) {
+ function ignoreErrors( $ignoreErrors = null ) {
return wfSetBit( $this->mFlags, DBO_IGNORE, $ignoreErrors );
}
@@ -95,14 +96,14 @@ class Database {
* The current depth of nested transactions
* @param $level Integer: , default NULL.
*/
- function trxLevel( $level = NULL ) {
+ function trxLevel( $level = null ) {
return wfSetVar( $this->mTrxLevel, $level );
}
/**
* Number of errors logged, only useful when errors are ignored
*/
- function errorCount( $count = NULL ) {
+ function errorCount( $count = null ) {
return wfSetVar( $this->mErrorCount, $count );
}
@@ -113,19 +114,19 @@ class Database {
/**
* Properties passed down from the server info array of the load balancer
*/
- function getLBInfo( $name = NULL ) {
+ function getLBInfo( $name = null ) {
if ( is_null( $name ) ) {
return $this->mLBInfo;
} else {
if ( array_key_exists( $name, $this->mLBInfo ) ) {
return $this->mLBInfo[$name];
} else {
- return NULL;
+ return null;
}
}
}
- function setLBInfo( $name, $value = NULL ) {
+ function setLBInfo( $name, $value = null ) {
if ( is_null( $value ) ) {
$this->mLBInfo = $name;
} else {
@@ -192,6 +193,14 @@ class Database {
}
/**
+ * Returns true if this database requires that SELECT DISTINCT queries require that all
+ ORDER BY expressions occur in the SELECT list per the SQL92 standard
+ */
+ function standardSelectDistinct() {
+ return true;
+ }
+
+ /**
* Returns true if this database can do a native search on IP columns
* e.g. this works as expected: .. WHERE rc_ip = '127.42.12.102/32';
*/
@@ -225,14 +234,37 @@ class Database {
*/
function isOpen() { return $this->mOpened; }
+ /**
+ * Set a flag for this connection
+ *
+ * @param $flag Integer: DBO_* constants from Defines.php:
+ * - DBO_DEBUG: output some debug info (same as debug())
+ * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
+ * - DBO_IGNORE: ignore errors (same as ignoreErrors())
+ * - DBO_TRX: automatically start transactions
+ * - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
+ * and removes it in command line mode
+ * - DBO_PERSISTENT: use persistant database connection
+ */
function setFlag( $flag ) {
$this->mFlags |= $flag;
}
+ /**
+ * Clear a flag for this connection
+ *
+ * @param $flag: same as setFlag()'s $flag param
+ */
function clearFlag( $flag ) {
$this->mFlags &= ~$flag;
}
+ /**
+ * Returns a boolean whether the flag $flag is set for this connection
+ *
+ * @param $flag: same as setFlag()'s $flag param
+ * @return Boolean
+ */
function getFlag( $flag ) {
return !!($this->mFlags & $flag);
}
@@ -252,6 +284,11 @@ class Database {
}
}
+ /**
+ * Get the type of the DBMS, as it appears in $wgDBtype.
+ */
+ abstract function getType();
+
#------------------------------------------------------------------------------
# Other functions
#------------------------------------------------------------------------------
@@ -272,7 +309,7 @@ class Database {
global $wgOut, $wgDBprefix, $wgCommandLineMode;
# Can't get a reference if it hasn't been set yet
if ( !isset( $wgOut ) ) {
- $wgOut = NULL;
+ $wgOut = null;
}
$this->mFailFunction = $failFunction;
@@ -306,7 +343,7 @@ class Database {
}
/**
- * Same as new Database( ... ), kept for backward compatibility
+ * Same as new DatabaseMysql( ... ), kept for backward compatibility
* @param $server String: database server host
* @param $user String: database user name
* @param $password String: database user password
@@ -316,7 +353,7 @@ class Database {
*/
static function newFromParams( $server, $user, $password, $dbName, $failFunction = false, $flags = 0 )
{
- return new Database( $server, $user, $password, $dbName, $failFunction, $flags );
+ return new DatabaseMysql( $server, $user, $password, $dbName, $failFunction, $flags );
}
/**
@@ -327,114 +364,7 @@ class Database {
* @param $password String: database user password
* @param $dbName String: database name
*/
- function open( $server, $user, $password, $dbName ) {
- global $wgAllDBsAreLocalhost;
- wfProfileIn( __METHOD__ );
-
- # Test for missing mysql.so
- # First try to load it
- if (!@extension_loaded('mysql')) {
- @dl('mysql.so');
- }
-
- # Fail now
- # Otherwise we get a suppressed fatal error, which is very hard to track down
- if ( !function_exists( 'mysql_connect' ) ) {
- throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
- }
-
- # Debugging hack -- fake cluster
- if ( $wgAllDBsAreLocalhost ) {
- $realServer = 'localhost';
- } else {
- $realServer = $server;
- }
- $this->close();
- $this->mServer = $server;
- $this->mUser = $user;
- $this->mPassword = $password;
- $this->mDBname = $dbName;
-
- $success = false;
-
- wfProfileIn("dbconnect-$server");
-
- # The kernel's default SYN retransmission period is far too slow for us,
- # so we use a short timeout plus a manual retry. Retrying means that a small
- # but finite rate of SYN packet loss won't cause user-visible errors.
- $this->mConn = false;
- if ( ini_get( 'mysql.connect_timeout' ) <= 3 ) {
- $numAttempts = 2;
- } else {
- $numAttempts = 1;
- }
- $this->installErrorHandler();
- for ( $i = 0; $i < $numAttempts && !$this->mConn; $i++ ) {
- if ( $i > 1 ) {
- usleep( 1000 );
- }
- if ( $this->mFlags & DBO_PERSISTENT ) {
- $this->mConn = mysql_pconnect( $realServer, $user, $password );
- } else {
- # Create a new connection...
- $this->mConn = mysql_connect( $realServer, $user, $password, true );
- }
- if ($this->mConn === false) {
- #$iplus = $i + 1;
- #wfLogDBError("Connect loop error $iplus of $max ($server): " . mysql_errno() . " - " . mysql_error()."\n");
- }
- }
- $phpError = $this->restoreErrorHandler();
- # Always log connection errors
- if ( !$this->mConn ) {
- $error = $this->lastError();
- if ( !$error ) {
- $error = $phpError;
- }
- wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
- wfDebug( "DB connection error\n" );
- wfDebug( "Server: $server, User: $user, Password: " .
- substr( $password, 0, 3 ) . "..., error: " . mysql_error() . "\n" );
- $success = false;
- }
-
- wfProfileOut("dbconnect-$server");
-
- if ( $dbName != '' && $this->mConn !== false ) {
- $success = @/**/mysql_select_db( $dbName, $this->mConn );
- if ( !$success ) {
- $error = "Error selecting database $dbName on server {$this->mServer} " .
- "from client host " . wfHostname() . "\n";
- wfLogDBError(" Error selecting database $dbName on server {$this->mServer} \n");
- wfDebug( $error );
- }
- } else {
- # Delay USE query
- $success = (bool)$this->mConn;
- }
-
- if ( $success ) {
- $version = $this->getServerVersion();
- if ( version_compare( $version, '4.1' ) >= 0 ) {
- // Tell the server we're communicating with it in UTF-8.
- // This may engage various charset conversions.
- global $wgDBmysql5;
- if( $wgDBmysql5 ) {
- $this->query( 'SET NAMES utf8', __METHOD__ );
- }
- // Turn off strict mode
- $this->query( "SET sql_mode = ''", __METHOD__ );
- }
-
- // Turn off strict mode if it is on
- } else {
- $this->reportConnectionError( $phpError );
- }
-
- $this->mOpened = $success;
- wfProfileOut( __METHOD__ );
- return $success;
- }
+ abstract function open( $server, $user, $password, $dbName );
protected function installErrorHandler() {
$this->mPHPError = false;
@@ -466,17 +396,9 @@ class Database {
*
* @return Bool operation success. true if already closed.
*/
- function close()
- {
- $this->mOpened = false;
- if ( $this->mConn ) {
- if ( $this->trxLevel() ) {
- $this->immediateCommit();
- }
- return mysql_close( $this->mConn );
- } else {
- return true;
- }
+ function close() {
+ # Stub, should probably be overridden
+ return true;
}
/**
@@ -505,7 +427,7 @@ class Database {
* Should return true if unsure.
*/
function isWriteQuery( $sql ) {
- return !preg_match( '/^(?:SELECT|BEGIN|COMMIT|SET|SHOW)\b/i', $sql );
+ return !preg_match( '/^(?:SELECT|BEGIN|COMMIT|SET|SHOW|\(SELECT)\b/i', $sql );
}
/**
@@ -629,14 +551,7 @@ class Database {
* @return Result object to feed to fetchObject, fetchRow, ...; or false on failure
* @private
*/
- /*private*/ function doQuery( $sql ) {
- if( $this->bufferResults() ) {
- $ret = mysql_query( $sql, $this->mConn );
- } else {
- $ret = mysql_unbuffered_query( $sql, $this->mConn );
- }
- return $ret;
- }
+ /*private*/ abstract function doQuery( $sql );
/**
* @param $error String
@@ -762,12 +677,8 @@ class Database {
* @param $res Mixed: A SQL result
*/
function freeResult( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- if ( !@/**/mysql_free_result( $res ) ) {
- throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
- }
+ # Stub. Might not really need to be overridden, since results should
+ # be freed by PHP when the variable goes out of scope anyway.
}
/**
@@ -779,16 +690,7 @@ class Database {
* @return MySQL row object
* @throws DBUnexpectedError Thrown if the database returns an error
*/
- function fetchObject( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- @/**/$row = mysql_fetch_object( $res );
- if( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
- }
- return $row;
- }
+ abstract function fetchObject( $res );
/**
* Fetch the next row from the given result object, in associative array
@@ -798,43 +700,20 @@ class Database {
* @return MySQL row object
* @throws DBUnexpectedError Thrown if the database returns an error
*/
- function fetchRow( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- @/**/$row = mysql_fetch_array( $res );
- if ( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
- }
- return $row;
- }
+ abstract function fetchRow( $res );
/**
* Get the number of rows in a result object
* @param $res Mixed: A SQL result
*/
- function numRows( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- @/**/$n = mysql_num_rows( $res );
- if( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in numRows(): ' . htmlspecialchars( $this->lastError() ) );
- }
- return $n;
- }
+ abstract function numRows( $res );
/**
* Get the number of fields in a result object
* See documentation for mysql_num_fields()
* @param $res Mixed: A SQL result
*/
- function numFields( $res ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- return mysql_num_fields( $res );
- }
+ abstract function numFields( $res );
/**
* Get a field name in a result object
@@ -843,12 +722,7 @@ class Database {
* @param $res Mixed: A SQL result
* @param $n Integer
*/
- function fieldName( $res, $n ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- return mysql_field_name( $res, $n );
- }
+ abstract function fieldName( $res, $n );
/**
* Get the inserted value of an auto-increment row
@@ -860,7 +734,7 @@ class Database {
* $dbw->insert('page',array('page_id' => $id));
* $id = $dbw->insertId();
*/
- function insertId() { return mysql_insert_id( $this->mConn ); }
+ abstract function insertId();
/**
* Change the position of the cursor in a result object
@@ -868,51 +742,25 @@ class Database {
* @param $res Mixed: A SQL result
* @param $row Mixed: Either MySQL row or ResultWrapper
*/
- function dataSeek( $res, $row ) {
- if ( $res instanceof ResultWrapper ) {
- $res = $res->result;
- }
- return mysql_data_seek( $res, $row );
- }
+ abstract function dataSeek( $res, $row );
/**
* Get the last error number
* See mysql_errno()
*/
- function lastErrno() {
- if ( $this->mConn ) {
- return mysql_errno( $this->mConn );
- } else {
- return mysql_errno();
- }
- }
+ abstract function lastErrno();
/**
* Get a description of the last error
* See mysql_error() for more details
*/
- function lastError() {
- if ( $this->mConn ) {
- # Even if it's non-zero, it can still be invalid
- wfSuppressWarnings();
- $error = mysql_error( $this->mConn );
- if ( !$error ) {
- $error = mysql_error();
- }
- wfRestoreWarnings();
- } else {
- $error = mysql_error();
- }
- if( $error ) {
- $error .= ' (' . $this->mServer . ')';
- }
- return $error;
- }
+ abstract function lastError();
+
/**
* Get the number of rows affected by the last write query
* See mysql_affected_rows() for more details
*/
- function affectedRows() { return mysql_affected_rows( $this->mConn ); }
+ abstract function affectedRows();
/**
* Simple UPDATE wrapper
@@ -1095,7 +943,7 @@ class Database {
* e.g: selectRow( "page", array( "page_id" ), array( "page_namespace" =>
* NS_MAIN, "page_title" => "Astronomy" ) ) would return an object where
* $obj- >page_id is the ID of the Astronomy article
- * @param $fname String: Calling functio name
+ * @param $fname String: Calling function name
* @param $options Array
* @param $join_conds Array
*
@@ -1118,30 +966,27 @@ class Database {
/**
* Estimate rows in dataset
- * Returns estimated count, based on EXPLAIN output
+ * Returns estimated count - not necessarily an accurate estimate across different databases,
+ * so use sparingly
* Takes same arguments as Database::select()
- */
-
- function estimateRowCount( $table, $vars='*', $conds='', $fname = 'Database::estimateRowCount', $options = array() ) {
- $options['EXPLAIN']=true;
- $res = $this->select ($table, $vars, $conds, $fname, $options );
- if ( $res === false )
- return false;
- if (!$this->numRows($res)) {
- $this->freeResult($res);
- return 0;
- }
-
- $rows=1;
-
- while( $plan = $this->fetchObject( $res ) ) {
- $rows *= ($plan->rows > 0)?$plan->rows:1; // avoid resetting to zero
+ *
+ * @param string $table table name
+ * @param array $vars unused
+ * @param array $conds filters on the table
+ * @param string $fname function name for profiling
+ * @param array $options options for select
+ * @return int row count
+ */
+ public function estimateRowCount( $table, $vars='*', $conds='', $fname = 'Database::estimateRowCount', $options = array() ) {
+ $rows = 0;
+ $res = $this->select ( $table, 'COUNT(*) AS rowcount', $conds, $fname, $options );
+ if ( $res ) {
+ $row = $this->fetchRow( $res );
+ $rows = ( isset( $row['rowcount'] ) ) ? $row['rowcount'] : 0;
}
-
- $this->freeResult($res);
- return $rows;
+ $this->freeResult( $res );
+ return $rows;
}
-
/**
* Removes most variables from an SQL query and replaces them with X or N for numbers.
@@ -1178,7 +1023,7 @@ class Database {
$table = $this->tableName( $table );
$res = $this->query( 'DESCRIBE '.$table, $fname );
if ( !$res ) {
- return NULL;
+ return null;
}
$found = false;
@@ -1200,7 +1045,7 @@ class Database {
function indexExists( $table, $index, $fname = 'Database::indexExists' ) {
$info = $this->indexInfo( $table, $index, $fname );
if ( is_null( $info ) ) {
- return NULL;
+ return null;
} else {
return $info !== false;
}
@@ -1220,7 +1065,7 @@ class Database {
$sql = 'SHOW INDEX FROM '.$table;
$res = $this->query( $sql, $fname );
if ( !$res ) {
- return NULL;
+ return null;
}
$result = array();
@@ -1257,18 +1102,7 @@ class Database {
* @param $table
* @param $field
*/
- function fieldInfo( $table, $field ) {
- $table = $this->tableName( $table );
- $res = $this->query( "SELECT * FROM $table LIMIT 1" );
- $n = mysql_num_fields( $res->result );
- for( $i = 0; $i < $n; $i++ ) {
- $meta = mysql_fetch_field( $res->result, $i );
- if( $field == $meta->name ) {
- return new MySQLField($meta);
- }
- }
- return false;
- }
+ abstract function fieldInfo( $table, $field );
/**
* mysql_field_type() wrapper
@@ -1286,7 +1120,7 @@ class Database {
function indexUnique( $table, $index ) {
$indexInfo = $this->indexInfo( $table, $index );
if ( !$indexInfo ) {
- return NULL;
+ return null;
}
return !$indexInfo[0]->Non_unique;
}
@@ -1440,11 +1274,32 @@ class Database {
}
/**
+ * Bitwise operations
+ */
+
+ function bitNot($field) {
+ return "(~$bitField)";
+ }
+
+ function bitAnd($fieldLeft, $fieldRight) {
+ return "($fieldLeft & $fieldRight)";
+ }
+
+ function bitOr($fieldLeft, $fieldRight) {
+ return "($fieldLeft | $fieldRight)";
+ }
+
+ /**
* Change the current database
+ *
+ * @return bool Success or failure
*/
function selectDB( $db ) {
- $this->mDBname = $db;
- return mysql_select_db( $db, $this->mConn );
+ # Stub. Shouldn't cause serious problems if it's not overridden, but
+ # if your database engine supports a concept similar to MySQL's
+ # databases you may as well. TODO: explain what exactly will fail if
+ # this is not overridden.
+ return true;
}
/**
@@ -1621,9 +1476,7 @@ class Database {
* @param $s String: to be slashed.
* @return String: slashed string.
*/
- function strencode( $s ) {
- return mysql_real_escape_string( $s, $this->mConn );
- }
+ abstract function strencode( $s );
/**
* If it's a string, adds quotes and backslashes
@@ -1642,30 +1495,78 @@ class Database {
}
/**
- * Escape string for safe LIKE usage
+ * Escape string for safe LIKE usage.
+ * WARNING: you should almost never use this function directly,
+ * instead use buildLike() that escapes everything automatically
*/
function escapeLike( $s ) {
- $s=str_replace('\\','\\\\',$s);
- $s=$this->strencode( $s );
- $s=str_replace(array('%','_'),array('\%','\_'),$s);
+ $s = str_replace( '\\', '\\\\', $s );
+ $s = $this->strencode( $s );
+ $s = str_replace( array( '%', '_' ), array( '\%', '\_' ), $s );
return $s;
}
/**
+ * LIKE statement wrapper, receives a variable-length argument list with parts of pattern to match
+ * containing either string literals that will be escaped or tokens returned by anyChar() or anyString().
+ * Alternatively, the function could be provided with an array of aforementioned parameters.
+ *
+ * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns a LIKE clause that searches
+ * for subpages of 'My page title'.
+ * Alternatively: $pattern = array( 'My_page_title/', $dbr->anyString() ); $query .= $dbr->buildLike( $pattern );
+ *
+ * @ return String: fully built LIKE statement
+ */
+ function buildLike() {
+ $params = func_get_args();
+ if (count($params) > 0 && is_array($params[0])) {
+ $params = $params[0];
+ }
+
+ $s = '';
+ foreach( $params as $value) {
+ if( $value instanceof LikeMatch ) {
+ $s .= $value->toString();
+ } else {
+ $s .= $this->escapeLike( $value );
+ }
+ }
+ return " LIKE '" . $s . "' ";
+ }
+
+ /**
+ * Returns a token for buildLike() that denotes a '_' to be used in a LIKE query
+ */
+ function anyChar() {
+ return new LikeMatch( '_' );
+ }
+
+ /**
+ * Returns a token for buildLike() that denotes a '%' to be used in a LIKE query
+ */
+ function anyString() {
+ return new LikeMatch( '%' );
+ }
+
+ /**
* Returns an appropriately quoted sequence value for inserting a new row.
* MySQL has autoincrement fields, so this is just NULL. But the PostgreSQL
* subclass will return an integer, and save the value for insertId()
*/
function nextSequenceValue( $seqName ) {
- return NULL;
+ return null;
}
/**
- * USE INDEX clause
- * PostgreSQL doesn't have them and returns ""
+ * USE INDEX clause. Unlikely to be useful for anything but MySQL. This
+ * is only needed because a) MySQL must be as efficient as possible due to
+ * its use on Wikipedia, and b) MySQL 4.0 is kind of dumb sometimes about
+ * which index to pick. Anyway, other databases might have different
+ * indexes on a given table. So don't bother overriding this unless you're
+ * MySQL.
*/
function useIndexClause( $index ) {
- return "FORCE INDEX (" . $this->indexName( $index ) . ")";
+ return '';
}
/**
@@ -1753,10 +1654,14 @@ class Database {
}
/**
+ * A string to insert into queries to show that they're low-priority, like
+ * MySQL's LOW_PRIORITY. If no such feature exists, return an empty
+ * string and nothing bad should happen.
+ *
* @return string Returns the text of the low priority option if it is supported, or a blank string otherwise
*/
function lowPriorityOption() {
- return 'LOW_PRIORITY';
+ return '';
}
/**
@@ -1810,27 +1715,60 @@ class Database {
}
/**
- * Construct a LIMIT query with optional offset
- * This is used for query pages
+ * Construct a LIMIT query with optional offset. This is used for query
+ * pages. The SQL should be adjusted so that only the first $limit rows
+ * are returned. If $offset is provided as well, then the first $offset
+ * rows should be discarded, and the next $limit rows should be returned.
+ * If the result of the query is not ordered, then the rows to be returned
+ * are theoretically arbitrary.
+ *
+ * $sql is expected to be a SELECT, if that makes a difference. For
+ * UPDATE, limitResultForUpdate should be used.
+ *
+ * The version provided by default works in MySQL and SQLite. It will very
+ * likely need to be overridden for most other DBMSes.
+ *
* @param $sql String: SQL query we will append the limit too
* @param $limit Integer: the SQL limit
* @param $offset Integer the SQL offset (default false)
*/
- function limitResult($sql, $limit, $offset=false) {
- if( !is_numeric($limit) ) {
+ function limitResult( $sql, $limit, $offset=false ) {
+ if( !is_numeric( $limit ) ) {
throw new DBUnexpectedError( $this, "Invalid non-numeric limit passed to limitResult()\n" );
}
return "$sql LIMIT "
. ( (is_numeric($offset) && $offset != 0) ? "{$offset}," : "" )
. "{$limit} ";
}
- function limitResultForUpdate($sql, $num) {
- return $this->limitResult($sql, $num, 0);
+ function limitResultForUpdate( $sql, $num ) {
+ return $this->limitResult( $sql, $num, 0 );
}
/**
- * Returns an SQL expression for a simple conditional.
- * Uses IF on MySQL.
+ * Returns true if current database backend supports ORDER BY or LIMIT for separate subqueries
+ * within the UNION construct.
+ * @return Boolean
+ */
+ function unionSupportsOrderAndLimit() {
+ return true; // True for almost every DB supported
+ }
+
+ /**
+ * Construct a UNION query
+ * This is used for providing overload point for other DB abstractions
+ * not compatible with the MySQL syntax.
+ * @param $sqls Array: SQL statements to combine
+ * @param $all Boolean: use UNION ALL
+ * @return String: SQL fragment
+ */
+ function unionQueries($sqls, $all) {
+ $glue = $all ? ') UNION ALL (' : ') UNION (';
+ return '('.implode( $glue, $sqls ) . ')';
+ }
+
+ /**
+ * Returns an SQL expression for a simple conditional. This doesn't need
+ * to be overridden unless CASE isn't supported in your DBMS.
*
* @param $cond String: SQL expression which will result in a boolean value
* @param $trueVal String: SQL expression to return if true
@@ -1838,7 +1776,7 @@ class Database {
* @return String: SQL fragment
*/
function conditional( $cond, $trueVal, $falseVal ) {
- return " IF($cond, $trueVal, $falseVal) ";
+ return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
}
/**
@@ -1855,17 +1793,27 @@ class Database {
/**
* Determines if the last failure was due to a deadlock
+ * STUB
*/
function wasDeadlock() {
- return $this->lastErrno() == 1213;
+ return false;
}
/**
* Determines if the last query error was something that should be dealt
- * with by pinging the connection and reissuing the query
+ * with by pinging the connection and reissuing the query.
+ * STUB
*/
function wasErrorReissuable() {
- return $this->lastErrno() == 2013 || $this->lastErrno() == 2006;
+ return false;
+ }
+
+ /**
+ * Determines if the last failure was due to the database being read-only.
+ * STUB
+ */
+ function wasReadOnlyError() {
+ return false;
}
/**
@@ -1935,7 +1883,7 @@ class Database {
# Commit any open transactions
if ( $this->mTrxLevel ) {
- $this->immediateCommit();
+ $this->commit();
}
if ( !is_null( $this->mFakeSlaveLag ) ) {
@@ -2048,6 +1996,21 @@ class Database {
}
/**
+ * Creates a new table with structure copied from existing table
+ * Note that unlike most database abstraction functions, this function does not
+ * automatically append database prefix, because it works at a lower
+ * abstraction level.
+ *
+ * @param $oldName String: name of table whose structure should be copied
+ * @param $newName String: name of table to be created
+ * @param $temporary Boolean: whether the new table should be temporary
+ * @return Boolean: true if operation was successful
+ */
+ function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'Database::duplicateTableStructure' ) {
+ throw new MWException( 'DatabaseBase::duplicateTableStructure is not implemented in descendant class' );
+ }
+
+ /**
* Return MW-style timestamp used for MySQL schema
*/
function timestamp( $ts=0 ) {
@@ -2089,41 +2052,31 @@ class Database {
}
/**
+ * Returns a wikitext link to the DB's website, e.g.,
+ * return "[http://www.mysql.com/ MySQL]";
+ * Should at least contain plain text, if for some reason
+ * your database has no website.
+ *
* @return String: wikitext of a link to the server software's web site
*/
- function getSoftwareLink() {
- return "[http://www.mysql.com/ MySQL]";
- }
+ abstract function getSoftwareLink();
/**
+ * A string describing the current software version, like from
+ * mysql_get_server_info(). Will be listed on Special:Version, etc.
+ *
* @return String: Version information from the database
*/
- function getServerVersion() {
- return mysql_get_server_info( $this->mConn );
- }
+ abstract function getServerVersion();
/**
* Ping the server and try to reconnect if it there is no connection
+ *
+ * @return bool Success or failure
*/
function ping() {
- if( !function_exists( 'mysql_ping' ) ) {
- wfDebug( "Tried to call mysql_ping but this is ancient PHP version. Faking it!\n" );
- return true;
- }
- $ping = mysql_ping( $this->mConn );
- if ( $ping ) {
- return true;
- }
-
- // Need to reconnect manually in MySQL client 5.0.13+
- if ( version_compare( mysql_get_client_info(), '5.0.13', '>=' ) ) {
- mysql_close( $this->mConn );
- $this->mOpened = false;
- $this->mConn = false;
- $this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
- return true;
- }
- return false;
+ # Stub. Not essential to override.
+ return true;
}
/**
@@ -2135,7 +2088,7 @@ class Database {
wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
return $this->mFakeSlaveLag;
}
- $res = $this->query( 'SHOW PROCESSLIST' );
+ $res = $this->query( 'SHOW PROCESSLIST', __METHOD__ );
# Find slave SQL thread
while ( $row = $this->fetchObject( $res ) ) {
/* This should work for most situations - when default db
@@ -2149,7 +2102,10 @@ class Database {
$row->State != 'Connecting to master' &&
$row->State != 'Queueing master event to the relay log' &&
$row->State != 'Waiting for master update' &&
- $row->State != 'Requesting binlog dump'
+ $row->State != 'Requesting binlog dump' &&
+ $row->State != 'Waiting to reconnect after a failed master event read' &&
+ $row->State != 'Reconnecting after a failed master event read' &&
+ $row->State != 'Registering slave on master'
) {
# This is it, return the time (except -ve)
if ( $row->Time > 0x7fffffff ) {
@@ -2190,16 +2146,14 @@ class Database {
}
/**
- * Override database's default connection timeout.
- * May be useful for very long batch queries such as
- * full-wiki dumps, where a single query reads out
- * over hours or days.
+ * Override database's default connection timeout. May be useful for very
+ * long batch queries such as full-wiki dumps, where a single query reads
+ * out over hours or days. May or may not be necessary for non-MySQL
+ * databases. For most purposes, leaving it as a no-op should be fine.
+ *
* @param $timeout Integer in seconds
*/
- public function setTimeout( $timeout ) {
- $this->query( "SET net_read_timeout=$timeout" );
- $this->query( "SET net_write_timeout=$timeout" );
- }
+ public function setTimeout( $timeout ) {}
/**
* Read and execute SQL commands from a file.
@@ -2211,14 +2165,45 @@ class Database {
function sourceFile( $filename, $lineCallback = false, $resultCallback = false ) {
$fp = fopen( $filename, 'r' );
if ( false === $fp ) {
- throw new MWException( "Could not open \"{$filename}\".\n" );
+ if (!defined("MEDIAWIKI_INSTALL"))
+ throw new MWException( "Could not open \"{$filename}\".\n" );
+ else
+ return "Could not open \"{$filename}\".\n";
+ }
+ try {
+ $error = $this->sourceStream( $fp, $lineCallback, $resultCallback );
}
- $error = $this->sourceStream( $fp, $lineCallback, $resultCallback );
+ catch( MWException $e ) {
+ if ( defined("MEDIAWIKI_INSTALL") ) {
+ $error = $e->getMessage();
+ } else {
+ fclose( $fp );
+ throw $e;
+ }
+ }
+
fclose( $fp );
return $error;
}
/**
+ * Get the full path of a patch file. Originally based on archive()
+ * from updaters.inc. Keep in mind this always returns a patch, as
+ * it fails back to MySQL if no DB-specific patch can be found
+ *
+ * @param $patch String The name of the patch, like patch-something.sql
+ * @return String Full path to patch file
+ */
+ public static function patchPath( $patch ) {
+ global $wgDBtype, $IP;
+ if ( file_exists( "$IP/maintenance/$wgDBtype/archives/$patch" ) ) {
+ return "$IP/maintenance/$wgDBtype/archives/$patch";
+ } else {
+ return "$IP/maintenance/archives/$patch";
+ }
+ }
+
+ /**
* Read and execute commands from an open file handle
* Returns true on success, error string or exception on failure (depending on object's error ignore settings)
* @param $fp String: File handle
@@ -2257,7 +2242,7 @@ class Database {
}
}
- if ( '' != $cmd ) { $cmd .= ' '; }
+ if ( $cmd != '' ) { $cmd .= ' '; }
$cmd .= "$line\n";
if ( $done ) {
@@ -2326,15 +2311,17 @@ class Database {
return $this->indexName( $matches[1] );
}
- /*
+ /**
* Build a concatenation list to feed into a SQL query
- */
+ * @param $stringList Array: list of raw SQL expressions; caller is responsible for any quoting
+ * @return String
+ */
function buildConcat( $stringList ) {
return 'CONCAT(' . implode( ',', $stringList ) . ')';
}
/**
- * Acquire a lock
+ * Acquire a named lock
*
* Abstracted from Filestore::lock() so child classes can implement for
* their own needs.
@@ -2343,32 +2330,44 @@ class Database {
* @param $method String: Name of method calling us
* @return bool
*/
- public function lock( $lockName, $method ) {
- $lockName = $this->addQuotes( $lockName );
- $result = $this->query( "SELECT GET_LOCK($lockName, 5) AS lockstatus", $method );
- $row = $this->fetchObject( $result );
- $this->freeResult( $result );
-
- if( $row->lockstatus == 1 ) {
- return true;
- } else {
- wfDebug( __METHOD__." failed to acquire lock\n" );
- return false;
- }
+ public function lock( $lockName, $method, $timeout = 5 ) {
+ return true;
}
+
/**
* Release a lock.
*
- * @todo fixme - Figure out a way to return a bool
- * based on successful lock release.
- *
* @param $lockName String: Name of lock to release
* @param $method String: Name of method calling us
+ *
+ * FROM MYSQL DOCS: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
+ * @return Returns 1 if the lock was released, 0 if the lock was not established
+ * by this thread (in which case the lock is not released), and NULL if the named
+ * lock did not exist
*/
public function unlock( $lockName, $method ) {
- $lockName = $this->addQuotes( $lockName );
- $result = $this->query( "SELECT RELEASE_LOCK($lockName)", $method );
- $this->freeResult( $result );
+ return true;
+ }
+
+ /**
+ * Lock specific tables
+ *
+ * @param $read Array of tables to lock for read access
+ * @param $write Array of tables to lock for write access
+ * @param $method String name of caller
+ * @param $lowPriority bool Whether to indicate writes to be LOW PRIORITY
+ */
+ public function lockTables( $read, $write, $method, $lowPriority = true ) {
+ return true;
+ }
+
+ /**
+ * Unlock specific tables
+ *
+ * @param $method String the caller
+ */
+ public function unlockTables( $method ) {
+ return true;
}
/**
@@ -2380,19 +2379,21 @@ class Database {
public function getSearchEngine() {
return "SearchMySQL";
}
-}
-/**
- * Database abstraction object for mySQL
- * Inherit all methods and properties of Database::Database()
- *
- * @ingroup Database
- * @see Database
- */
-class DatabaseMysql extends Database {
- # Inherit all
+ /**
+ * Allow or deny "big selects" for this session only. This is done by setting
+ * the sql_big_selects session variable.
+ *
+ * This is a MySQL-specific feature.
+ *
+ * @param mixed $value true for allow, false for deny, or "default" to restore the initial value
+ */
+ public function setBigSelects( $value = true ) {
+ // no-op
+ }
}
+
/******************************************************************************
* Utility classes
*****************************************************************************/
@@ -2502,10 +2503,19 @@ class DBError extends MWException {
* @param $db Database object which threw the error
* @param $error A simple error message to be used for debugging
*/
- function __construct( Database &$db, $error ) {
+ function __construct( DatabaseBase &$db, $error ) {
$this->db =& $db;
parent::__construct( $error );
}
+
+ function getText() {
+ global $wgShowDBErrorBacktrace;
+ $s = $this->getMessage() . "\n";
+ if ( $wgShowDBErrorBacktrace ) {
+ $s .= "Backtrace:\n" . $this->getTraceAsString() . "\n";
+ }
+ return $s;
+ }
}
/**
@@ -2514,7 +2524,7 @@ class DBError extends MWException {
class DBConnectionError extends DBError {
public $error;
- function __construct( Database &$db, $error = 'unknown error' ) {
+ function __construct( DatabaseBase &$db, $error = 'unknown error' ) {
$msg = 'DB connection error';
if ( trim( $error ) != '' ) {
$msg .= ": $error";
@@ -2533,10 +2543,6 @@ class DBConnectionError extends DBError {
return false;
}
- function getText() {
- return $this->getMessage() . "\n";
- }
-
function getLogMessage() {
# Don't send to the exception log
return false;
@@ -2553,7 +2559,7 @@ class DBConnectionError extends DBError {
}
function getHTML() {
- global $wgLang, $wgMessageCache, $wgUseFileCache;
+ global $wgLang, $wgMessageCache, $wgUseFileCache, $wgShowDBErrorBacktrace;
$sorry = 'Sorry! This site is experiencing technical difficulties.';
$again = 'Try waiting a few minutes and reloading.';
@@ -2577,30 +2583,31 @@ class DBConnectionError extends DBError {
$noconnect = "<p><strong>$sorry</strong><br />$again</p><p><small>$info</small></p>";
$text = str_replace( '$1', $this->error, $noconnect );
- /*
- if ( $GLOBALS['wgShowExceptionDetails'] ) {
- $text .= '</p><p>Backtrace:</p><p>' .
- nl2br( htmlspecialchars( $this->getTraceAsString() ) ) .
- "</p>\n";
- }*/
+ if ( $wgShowDBErrorBacktrace ) {
+ $text .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
+ }
$extra = $this->searchForm();
if( $wgUseFileCache ) {
- $cache = $this->fileCachedPage();
- # Cached version on file system?
- if( $cache !== null ) {
- # Hack: extend the body for error messages
- $cache = str_replace( array('</html>','</body>'), '', $cache );
- # Add cache notice...
- $cachederror = "This is a cached copy of the requested page, and may not be up to date. ";
- # Localize it if possible...
- if( $wgLang instanceof Language ) {
- $cachederror = htmlspecialchars( $wgLang->getMessage( 'dberr-cachederror' ) );
+ try {
+ $cache = $this->fileCachedPage();
+ # Cached version on file system?
+ if( $cache !== null ) {
+ # Hack: extend the body for error messages
+ $cache = str_replace( array('</html>','</body>'), '', $cache );
+ # Add cache notice...
+ $cachederror = "This is a cached copy of the requested page, and may not be up to date. ";
+ # Localize it if possible...
+ if( $wgLang instanceof Language ) {
+ $cachederror = htmlspecialchars( $wgLang->getMessage( 'dberr-cachederror' ) );
+ }
+ $warning = "<div style='color:red;font-size:150%;font-weight:bold;'>$cachederror</div>";
+ # Output cached page with notices on bottom and re-close body
+ return "{$cache}{$warning}<hr />$text<hr />$extra</body></html>";
}
- $warning = "<div style='color:red;font-size:150%;font-weight:bold;'>$cachederror</div>";
- # Output cached page with notices on bottom and re-close body
- return "{$cache}{$warning}<hr />$text<hr />$extra</body></html>";
+ } catch( MWException $e ) {
+ // Do nothing, just use the default page
}
}
# Headers needed here - output is just the error message
@@ -2631,8 +2638,6 @@ class DBConnectionError extends DBError {
<input type="hidden" name="ie" value="$wgInputEncoding" />
<input type="hidden" name="oe" value="$wgInputEncoding" />
- <img src="http://www.google.com/logos/Logo_40wht.gif" alt="" style="float:left; margin-left: 1.5em; margin-right: 1.5em;" />
-
<input type="text" name="q" size="31" maxlength="255" value="$search" />
<input type="submit" name="btnG" value="$googlesearch" />
<div>
@@ -2653,9 +2658,9 @@ EOT;
$mainpage = htmlspecialchars( $wgLang->getMessage( 'mainpage' ) );
}
- if($wgTitle) {
+ if( $wgTitle ) {
$t =& $wgTitle;
- } elseif($title) {
+ } elseif( $title ) {
$t = Title::newFromURL( $title );
} else {
$t = Title::newFromText( $mainpage );
@@ -2681,7 +2686,7 @@ EOT;
class DBQueryError extends DBError {
public $error, $errno, $sql, $fname;
- function __construct( Database &$db, $error, $errno, $sql, $fname ) {
+ function __construct( DatabaseBase &$db, $error, $errno, $sql, $fname ) {
$message = "A database error has occurred\n" .
"Query: $sql\n" .
"Function: $fname\n" .
@@ -2695,11 +2700,16 @@ class DBQueryError extends DBError {
}
function getText() {
+ global $wgShowDBErrorBacktrace;
if ( $this->useMessageCache() ) {
- return wfMsg( 'dberrortextcl', htmlspecialchars( $this->getSQL() ),
- htmlspecialchars( $this->fname ), $this->errno, htmlspecialchars( $this->error ) ) . "\n";
+ $s = wfMsg( 'dberrortextcl', htmlspecialchars( $this->getSQL() ),
+ htmlspecialchars( $this->fname ), $this->errno, htmlspecialchars( $this->error ) ) . "\n";
+ if ( $wgShowDBErrorBacktrace ) {
+ $s .= "Backtrace:\n" . $this->getTraceAsString() . "\n";
+ }
+ return $s;
} else {
- return $this->getMessage();
+ return parent::getText();
}
}
@@ -2722,12 +2732,17 @@ class DBQueryError extends DBError {
}
function getHTML() {
+ global $wgShowDBErrorBacktrace;
if ( $this->useMessageCache() ) {
- return wfMsgNoDB( 'dberrortext', htmlspecialchars( $this->getSQL() ),
+ $s = wfMsgNoDB( 'dberrortext', htmlspecialchars( $this->getSQL() ),
htmlspecialchars( $this->fname ), $this->errno, htmlspecialchars( $this->error ) );
} else {
- return nl2br( htmlspecialchars( $this->getMessage() ) );
+ $s = nl2br( htmlspecialchars( $this->getMessage() ) );
}
+ if ( $wgShowDBErrorBacktrace ) {
+ $s .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
+ }
+ return $s;
}
}
@@ -2841,15 +2856,18 @@ class ResultWrapper implements Iterator {
}
}
-class MySQLMasterPos {
- var $file, $pos;
+/**
+ * Used by DatabaseBase::buildLike() to represent characters that have special meaning in SQL LIKE clauses
+ * and thus need no escaping. Don't instantiate it manually, use Database::anyChar() and anyString() instead.
+ */
+class LikeMatch {
+ private $str;
- function __construct( $file, $pos ) {
- $this->file = $file;
- $this->pos = $pos;
+ public function __construct( $s ) {
+ $this->str = $s;
}
- function __toString() {
- return "{$this->file}/{$this->pos}";
+ public function toString() {
+ return $this->str;
}
}
diff --git a/includes/db/DatabaseIbm_db2.php b/includes/db/DatabaseIbm_db2.php
index fcd0bc2d..9b62af82 100644
--- a/includes/db/DatabaseIbm_db2.php
+++ b/includes/db/DatabaseIbm_db2.php
@@ -9,37 +9,33 @@
*/
/**
- * Utility class for generating blank objects
- * Intended as an equivalent to {} in Javascript
- * @ingroup Database
- */
-class BlankObject {
-}
-
-/**
* This represents a column in a DB2 database
* @ingroup Database
*/
class IBM_DB2Field {
- private $name, $tablename, $type, $nullable, $max_length;
+ private $name = '';
+ private $tablename = '';
+ private $type = '';
+ private $nullable = false;
+ private $max_length = 0;
/**
* Builder method for the class
- * @param Object $db Database interface
- * @param string $table table name
- * @param string $field column name
+ * @param $db DatabaseIbm_db2: Database interface
+ * @param $table String: table name
+ * @param $field String: column name
* @return IBM_DB2Field
*/
static function fromText($db, $table, $field) {
global $wgDBmwschema;
- $q = <<<END
+ $q = <<<SQL
SELECT
lcase(coltype) AS typname,
nulls AS attnotnull, length AS attlen
FROM sysibm.syscolumns
WHERE tbcreator=%s AND tbname=%s AND name=%s;
-END;
+SQL;
$res = $db->query(sprintf($q,
$db->addQuotes($wgDBmwschema),
$db->addQuotes($table),
@@ -89,20 +85,25 @@ END;
class IBM_DB2Blob {
private $mData;
- function __construct($data) {
+ public function __construct($data) {
$this->mData = $data;
}
- function getData() {
+ public function getData() {
return $this->mData;
}
+
+ public function __toString()
+ {
+ return $this->mData;
+ }
}
/**
* Primary database interface
* @ingroup Database
*/
-class DatabaseIbm_db2 extends Database {
+class DatabaseIbm_db2 extends DatabaseBase {
/*
* Inherited members
protected $mLastQuery = '';
@@ -122,27 +123,42 @@ class DatabaseIbm_db2 extends Database {
*/
/// Server port for uncataloged connections
- protected $mPort = NULL;
+ protected $mPort = null;
/// Whether connection is cataloged
- protected $mCataloged = NULL;
+ protected $mCataloged = null;
/// Schema for tables, stored procedures, triggers
- protected $mSchema = NULL;
+ protected $mSchema = null;
/// Whether the schema has been applied in this session
protected $mSchemaSet = false;
/// Result of last query
- protected $mLastResult = NULL;
+ protected $mLastResult = null;
/// Number of rows affected by last INSERT/UPDATE/DELETE
- protected $mAffectedRows = NULL;
+ protected $mAffectedRows = null;
/// Number of rows returned by last SELECT
- protected $mNumRows = NULL;
+ protected $mNumRows = null;
+
+ /// Connection config options - see constructor
+ public $mConnOptions = array();
+ /// Statement config options -- see constructor
+ public $mStmtOptions = array();
const CATALOGED = "cataloged";
const UNCATALOGED = "uncataloged";
const USE_GLOBAL = "get from global";
+ const NONE_OPTION = 0x00;
+ const CONN_OPTION = 0x01;
+ const STMT_OPTION = 0x02;
+
+ const REGULAR_MODE = 'regular';
+ const INSTALL_MODE = 'install';
+
+ // Whether this is regular operation or the initial installation
+ protected $mMode = self::REGULAR_MODE;
+
/// Last sequence value used for a primary key
- protected $mInsertId = NULL;
+ protected $mInsertId = null;
/*
* These can be safely inherited
@@ -219,7 +235,7 @@ class DatabaseIbm_db2 extends Database {
*/
/*
- * These need to be implemented TODO
+ * These have been implemented
*
* Administrative: 7 / 7
* constructor [Done]
@@ -375,7 +391,10 @@ class DatabaseIbm_db2 extends Database {
return $this->mDBname;
}
}
-
+
+ function getType() {
+ return 'ibm_db2';
+ }
######################################
# Setup
@@ -384,12 +403,13 @@ class DatabaseIbm_db2 extends Database {
/**
*
- * @param string $server hostname of database server
- * @param string $user username
- * @param string $password
- * @param string $dbName database name on the server
- * @param function $failFunction (optional)
- * @param integer $flags database behaviour flags (optional, unused)
+ * @param $server String: hostname of database server
+ * @param $user String: username
+ * @param $password String: password
+ * @param $dbName String: database name on the server
+ * @param $failFunction Callback (optional)
+ * @param $flags Integer: database behaviour flags (optional, unused)
+ * @param $schema String
*/
public function DatabaseIbm_db2($server = false, $user = false, $password = false,
$dbName = false, $failFunction = false, $flags = 0,
@@ -399,7 +419,7 @@ class DatabaseIbm_db2 extends Database {
global $wgOut, $wgDBmwschema;
# Can't get a reference if it hasn't been set yet
if ( !isset( $wgOut ) ) {
- $wgOut = NULL;
+ $wgOut = null;
}
$this->mOut =& $wgOut;
$this->mFailFunction = $failFunction;
@@ -412,17 +432,50 @@ class DatabaseIbm_db2 extends Database {
$this->mSchema = $schema;
}
+ // configure the connection and statement objects
+ $this->setDB2Option('db2_attr_case', 'DB2_CASE_LOWER', self::CONN_OPTION | self::STMT_OPTION);
+ $this->setDB2Option('deferred_prepare', 'DB2_DEFERRED_PREPARE_ON', self::STMT_OPTION);
+ $this->setDB2Option('rowcount', 'DB2_ROWCOUNT_PREFETCH_ON', self::STMT_OPTION);
+
$this->open( $server, $user, $password, $dbName);
}
/**
+ * Enables options only if the ibm_db2 extension version supports them
+ * @param $name String: name of the option in the options array
+ * @param $const String: name of the constant holding the right option value
+ * @param $type Integer: whether this is a Connection or Statement otion
+ */
+ private function setDB2Option($name, $const, $type) {
+ if (defined($const)) {
+ if ($type & self::CONN_OPTION) $this->mConnOptions[$name] = constant($const);
+ if ($type & self::STMT_OPTION) $this->mStmtOptions[$name] = constant($const);
+ }
+ else {
+ $this->installPrint("$const is not defined. ibm_db2 version is likely too low.");
+ }
+ }
+
+ /**
+ * Outputs debug information in the appropriate place
+ * @param $string String: the relevant debug message
+ */
+ private function installPrint($string) {
+ wfDebug("$string");
+ if ($this->mMode == self::INSTALL_MODE) {
+ print "<li>$string</li>";
+ flush();
+ }
+ }
+
+ /**
* Opens a database connection and returns it
* Closes any existing connection
* @return a fresh connection
- * @param string $server hostname
- * @param string $user
- * @param string $password
- * @param string $dbName database name
+ * @param $server String: hostname
+ * @param $user String
+ * @param $password String
+ * @param $dbName String: database name
*/
public function open( $server, $user, $password, $dbName )
{
@@ -437,7 +490,7 @@ class DatabaseIbm_db2 extends Database {
// Test for IBM DB2 support, to avoid suppressed fatal error
if ( !function_exists( 'db2_connect' ) ) {
$error = "DB2 functions missing, have you enabled the ibm_db2 extension for PHP?\n";
- wfDebug($error);
+ $this->installPrint($error);
$this->reportConnectionError($error);
}
@@ -461,16 +514,16 @@ class DatabaseIbm_db2 extends Database {
elseif ( $cataloged == self::UNCATALOGED ) {
$this->openUncataloged($dbName, $user, $password, $server, $port);
}
- // Don't do this
+ // Apply connection config
+ db2_set_option($this->mConn, $this->mConnOptions, 1);
// Not all MediaWiki code is transactional
- // Rather, turn it off in the begin function and turn on after a commit
- // db2_autocommit($this->mConn, DB2_AUTOCOMMIT_OFF);
+ // Rather, turn autocommit off in the begin function and turn on after a commit
db2_autocommit($this->mConn, DB2_AUTOCOMMIT_ON);
if ( $this->mConn == false ) {
- wfDebug( "DB connection error\n" );
- wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
- wfDebug( $this->lastError()."\n" );
+ $this->installPrint( "DB connection error\n" );
+ $this->installPrint( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ $this->installPrint( $this->lastError()."\n" );
return null;
}
@@ -524,14 +577,14 @@ class DatabaseIbm_db2 extends Database {
/**
* Returns a fresh instance of this class
- * @static
- * @return
- * @param string $server hostname of database server
- * @param string $user username
- * @param string $password
- * @param string $dbName database name on the server
- * @param function $failFunction (optional)
- * @param integer $flags database behaviour flags (optional, unused)
+ *
+ * @param $server String: hostname of database server
+ * @param $user String: username
+ * @param $password String
+ * @param $dbName String: database name on the server
+ * @param $failFunction Callback (optional)
+ * @param $flags Integer: database behaviour flags (optional, unused)
+ * @return DatabaseIbm_db2 object
*/
static function newFromParams( $server, $user, $password, $dbName, $failFunction = false, $flags = 0)
{
@@ -543,20 +596,16 @@ class DatabaseIbm_db2 extends Database {
* Forces a database rollback
*/
public function lastError() {
- if ($this->lastError2()) {
- $this->rollback();
- return true;
- }
- return false;
- }
-
- private function lastError2() {
$connerr = db2_conn_errormsg();
- if ($connerr) return $connerr;
+ if ($connerr) {
+ //$this->rollback();
+ return $connerr;
+ }
$stmterr = db2_stmt_errormsg();
- if ($stmterr) return $stmterr;
- if ($this->mConn) return "No open connection.";
- if ($this->mOpened) return "No open connection allegedly.";
+ if ($stmterr) {
+ //$this->rollback();
+ return $stmterr;
+ }
return false;
}
@@ -592,7 +641,7 @@ class DatabaseIbm_db2 extends Database {
// Switch into the correct namespace
$this->applySchema();
- $ret = db2_exec( $this->mConn, $sql );
+ $ret = db2_exec( $this->mConn, $sql, $this->mStmtOptions );
if( !$ret ) {
print "<br><pre>";
print $sql;
@@ -601,7 +650,7 @@ class DatabaseIbm_db2 extends Database {
throw new DBUnexpectedError($this, 'SQL error: ' . htmlspecialchars( $error ) );
}
$this->mLastResult = $ret;
- $this->mAffectedRows = NULL; // Not calculated until asked for
+ $this->mAffectedRows = null; // Not calculated until asked for
return $ret;
}
@@ -653,17 +702,6 @@ EOF;
if( $this->lastErrno() ) {
throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
}
- // Make field names lowercase for compatibility with MySQL
- if ($row)
- {
- $row2 = new BlankObject();
- foreach ($row as $key => $value)
- {
- $keyu = strtolower($key);
- $row2->$keyu = $value;
- }
- $row = $row2;
- }
return $row;
}
@@ -707,14 +745,26 @@ EOF;
$this->applySchema();
$this->begin();
- $res = dbsource( "../maintenance/ibm_db2/tables.sql", $this);
+ $res = $this->sourceFile( "../maintenance/ibm_db2/tables.sql" );
+ if ($res !== true) {
+ print " <b>FAILED</b>: " . htmlspecialchars( $res ) . "</li>";
+ } else {
+ print " done</li>";
+ }
$res = null;
// TODO: update mediawiki_version table
// TODO: populate interwiki links
- $this->commit();
+ if ($this->lastError()) {
+ print "<li>Errors encountered during table creation -- rolled back</li>\n";
+ print "<li>Please install again</li>\n";
+ $this->rollback();
+ }
+ else {
+ $this->commit();
+ }
}
catch (MWException $mwe)
{
@@ -725,15 +775,17 @@ EOF;
/**
* Escapes strings
* Doesn't escape numbers
- * @param string s string to escape
+ * @param $s String: string to escape
* @return escaped string
*/
public function addQuotes( $s ) {
- //wfDebug("DB2::addQuotes($s)\n");
+ //$this->installPrint("DB2::addQuotes($s)\n");
if ( is_null( $s ) ) {
return "NULL";
} else if ($s instanceof Blob) {
return "'".$s->fetch($s)."'";
+ } else if ($s instanceof IBM_DB2Blob) {
+ return "'".$this->decodeBlob($s)."'";
}
$s = $this->strencode($s);
if ( is_numeric($s) ) {
@@ -745,41 +797,9 @@ EOF;
}
/**
- * Escapes strings
- * Only escapes numbers going into non-numeric fields
- * @param string s string to escape
- * @return escaped string
- */
- public function addQuotesSmart( $table, $field, $s ) {
- if ( is_null( $s ) ) {
- return "NULL";
- } else if ($s instanceof Blob) {
- return "'".$s->fetch($s)."'";
- }
- $s = $this->strencode($s);
- if ( is_numeric($s) ) {
- // Check with the database if the column is actually numeric
- // This allows for numbers in titles, etc
- $res = $this->doQuery("SELECT $field FROM $table FETCH FIRST 1 ROWS ONLY");
- $type = db2_field_type($res, strtoupper($field));
- if ( $this->is_numeric_type( $type ) ) {
- //wfDebug("DB2: Numeric value going in a numeric column: $s in $type $field in $table\n");
- return $s;
- }
- else {
- wfDebug("DB2: Numeric in non-numeric: '$s' in $type $field in $table\n");
- return "'$s'";
- }
- }
- else {
- return "'$s'";
- }
- }
-
- /**
* Verifies that a DB2 column/field type is numeric
* @return bool true if numeric
- * @param string $type DB2 column type
+ * @param $type String: DB2 column type
*/
public function is_numeric_type( $type ) {
switch (strtoupper($type)) {
@@ -798,7 +818,7 @@ EOF;
/**
* Alias for addQuotes()
- * @param string s string to escape
+ * @param $s String: string to escape
* @return escaped string
*/
public function strencode( $s ) {
@@ -830,7 +850,7 @@ EOF;
/**
* Start a transaction (mandatory)
*/
- public function begin() {
+ public function begin( $fname = 'DatabaseIbm_db2::begin' ) {
// turn off auto-commit
db2_autocommit($this->mConn, DB2_AUTOCOMMIT_OFF);
$this->mTrxLevel = 1;
@@ -840,7 +860,7 @@ EOF;
* End a transaction
* Must have a preceding begin()
*/
- public function commit() {
+ public function commit( $fname = 'DatabaseIbm_db2::commit' ) {
db2_commit($this->mConn);
// turn auto-commit back on
db2_autocommit($this->mConn, DB2_AUTOCOMMIT_ON);
@@ -850,7 +870,7 @@ EOF;
/**
* Cancel a transaction
*/
- public function rollback() {
+ public function rollback( $fname = 'DatabaseIbm_db2::rollback' ) {
db2_rollback($this->mConn);
// turn auto-commit back on
// not sure if this is appropriate
@@ -868,7 +888,6 @@ EOF;
* LIST_NAMES - comma separated field names
*/
public function makeList( $a, $mode = LIST_COMMA ) {
- wfDebug("DB2::makeList()\n");
if ( !is_array( $a ) ) {
throw new DBUnexpectedError( $this, 'Database::makeList called with incorrect parameters' );
}
@@ -931,88 +950,18 @@ EOF;
}
/**
- * Makes an encoded list of strings from an array
- * Quotes numeric values being inserted into non-numeric fields
- * @return string
- * @param string $table name of the table
- * @param array $a list of values
- * @param $mode:
- * LIST_COMMA - comma separated, no field names
- * LIST_AND - ANDed WHERE clause (without the WHERE)
- * LIST_OR - ORed WHERE clause (without the WHERE)
- * LIST_SET - comma separated with field names, like a SET clause
- * LIST_NAMES - comma separated field names
- */
- public function makeListSmart( $table, $a, $mode = LIST_COMMA ) {
- if ( !is_array( $a ) ) {
- throw new DBUnexpectedError( $this, 'Database::makeList called with incorrect parameters' );
- }
-
- $first = true;
- $list = '';
- foreach ( $a as $field => $value ) {
- if ( !$first ) {
- if ( $mode == LIST_AND ) {
- $list .= ' AND ';
- } elseif($mode == LIST_OR) {
- $list .= ' OR ';
- } else {
- $list .= ',';
- }
- } else {
- $first = false;
- }
- if ( ($mode == LIST_AND || $mode == LIST_OR) && is_numeric( $field ) ) {
- $list .= "($value)";
- } elseif ( ($mode == LIST_SET) && is_numeric( $field ) ) {
- $list .= "$value";
- } elseif ( ($mode == LIST_AND || $mode == LIST_OR) && is_array($value) ) {
- if( count( $value ) == 0 ) {
- throw new MWException( __METHOD__.': empty input' );
- } elseif( count( $value ) == 1 ) {
- // Special-case single values, as IN isn't terribly efficient
- // Don't necessarily assume the single key is 0; we don't
- // enforce linear numeric ordering on other arrays here.
- $value = array_values( $value );
- $list .= $field." = ".$this->addQuotes( $value[0] );
- } else {
- $list .= $field." IN (".$this->makeList($value).") ";
- }
- } elseif( is_null($value) ) {
- if ( $mode == LIST_AND || $mode == LIST_OR ) {
- $list .= "$field IS ";
- } elseif ( $mode == LIST_SET ) {
- $list .= "$field = ";
- }
- $list .= 'NULL';
- } else {
- if ( $mode == LIST_AND || $mode == LIST_OR || $mode == LIST_SET ) {
- $list .= "$field = ";
- }
- if ( $mode == LIST_NAMES ) {
- $list .= $value;
- }
- else {
- $list .= $this->addQuotesSmart( $table, $field, $value );
- }
- }
- }
- return $list;
- }
-
- /**
* Construct a LIMIT query with optional offset
* This is used for query pages
- * $sql string SQL query we will append the limit too
- * $limit integer the SQL limit
- * $offset integer the SQL offset (default false)
+ * @param $sql string SQL query we will append the limit too
+ * @param $limit integer the SQL limit
+ * @param $offset integer the SQL offset (default false)
*/
public function limitResult($sql, $limit, $offset=false) {
if( !is_numeric($limit) ) {
throw new DBUnexpectedError( $this, "Invalid non-numeric limit passed to limitResult()\n" );
}
if( $offset ) {
- wfDebug("Offset parameter not supported in limitResult()\n");
+ $this->installPrint("Offset parameter not supported in limitResult()\n");
}
// TODO implement proper offset handling
// idea: get all the rows between 0 and offset, advance cursor to offset
@@ -1026,20 +975,22 @@ EOF;
*/
public function tableName( $name ) {
# Replace reserved words with better ones
- switch( $name ) {
- case 'user':
- return 'mwuser';
- case 'text':
- return 'pagecontent';
- default:
- return $name;
- }
+// switch( $name ) {
+// case 'user':
+// return 'mwuser';
+// case 'text':
+// return 'pagecontent';
+// default:
+// return $name;
+// }
+ // we want maximum compatibility with MySQL schema
+ return $name;
}
/**
* Generates a timestamp in an insertable format
* @return string timestamp value
- * @param timestamp $ts
+ * @param $ts timestamp
*/
public function timestamp( $ts=0 ) {
// TS_MW cannot be easily distinguished from an integer
@@ -1048,16 +999,21 @@ EOF;
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @param string seqName Name of a defined sequence in the database
+ * @param $seqName String: name of a defined sequence in the database
* @return next value in that sequence
*/
public function nextSequenceValue( $seqName ) {
+ // Not using sequences in the primary schema to allow for easy third-party migration scripts
+ // Emulating MySQL behaviour of using NULL to signal that sequences aren't used
+ /*
$safeseq = preg_replace( "/'/", "''", $seqName );
$res = $this->query( "VALUES NEXTVAL FOR $safeseq" );
$row = $this->fetchRow( $res );
$this->mInsertId = $row[0];
$this->freeResult( $res );
return $this->mInsertId;
+ */
+ return null;
}
/**
@@ -1069,139 +1025,180 @@ EOF;
}
/**
+ * Updates the mInsertId property with the value of the last insert into a generated column
+ * @param $table String: sanitized table name
+ * @param $primaryKey Mixed: string name of the primary key or a bool if this call is a do-nothing
+ * @param $stmt Resource: prepared statement resource
+ * of the SELECT primary_key FROM FINAL TABLE ( INSERT ... ) form
+ */
+ private function calcInsertId($table, $primaryKey, $stmt) {
+ if ($primaryKey) {
+ $id_row = $this->fetchRow($stmt);
+ $this->mInsertId = $id_row[0];
+ }
+ }
+
+ /**
* INSERT wrapper, inserts an array into a table
*
* $args may be a single associative array, or an array of these with numeric keys,
* for multi-row insert
*
- * @param array $table String: Name of the table to insert to.
- * @param array $args Array: Items to insert into the table.
- * @param array $fname String: Name of the function, for profiling
- * @param mixed $options String or Array. Valid options: IGNORE
+ * @param $table String: Name of the table to insert to.
+ * @param $args Array: Items to insert into the table.
+ * @param $fname String: Name of the function, for profiling
+ * @param $options String or Array. Valid options: IGNORE
*
* @return bool Success of insert operation. IGNORE always returns true.
*/
public function insert( $table, $args, $fname = 'DatabaseIbm_db2::insert', $options = array() ) {
- wfDebug("DB2::insert($table)\n");
if ( !count( $args ) ) {
return true;
}
-
+ // get database-specific table name (not used)
$table = $this->tableName( $table );
-
- if ( !is_array( $options ) )
- $options = array( $options );
-
- if ( isset( $args[0] ) && is_array( $args[0] ) ) {
- }
- else {
+ // format options as an array
+ if ( !is_array( $options ) ) $options = array( $options );
+ // format args as an array of arrays
+ if ( !( isset( $args[0] ) && is_array( $args[0] ) ) ) {
$args = array($args);
}
+ // prevent insertion of NULL into primary key columns
+ list($args, $primaryKeys) = $this->removeNullPrimaryKeys($table, $args);
+ // if there's only one primary key
+ // we'll be able to read its value after insertion
+ $primaryKey = false;
+ if (count($primaryKeys) == 1) {
+ $primaryKey = $primaryKeys[0];
+ }
+
+ // get column names
$keys = array_keys( $args[0] );
+ $key_count = count($keys);
// If IGNORE is set, we use savepoints to emulate mysql's behavior
$ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
- // Cache autocommit value at the start
- $oldautocommit = db2_autocommit($this->mConn);
+ // assume success
+ $res = true;
// If we are not in a transaction, we need to be for savepoint trickery
$didbegin = 0;
if (! $this->mTrxLevel) {
$this->begin();
$didbegin = 1;
}
- if ( $ignore ) {
- $olde = error_reporting( 0 );
- // For future use, we may want to track the number of actual inserts
- // Right now, insert (all writes) simply return true/false
- $numrowsinserted = 0;
- }
$sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
+ switch($key_count) {
+ //case 0 impossible
+ case 1:
+ $sql .= '(?)';
+ break;
+ default:
+ $sql .= '(?' . str_repeat(',?', $key_count-1) . ')';
+ }
+ // add logic to read back the new primary key value
+ if ($primaryKey) {
+ $sql = "SELECT $primaryKey FROM FINAL TABLE($sql)";
+ }
+ $stmt = $this->prepare($sql);
+
+ // start a transaction/enter transaction mode
+ $this->begin();
if ( !$ignore ) {
$first = true;
foreach ( $args as $row ) {
- if ( $first ) {
- $first = false;
- } else {
- $sql .= ',';
- }
- $sql .= '(' . $this->makeListSmart( $table, $row ) . ')';
+ // insert each row into the database
+ $res = $res & $this->execute($stmt, $row);
+ // get the last inserted value into a generated column
+ $this->calcInsertId($table, $primaryKey, $stmt);
}
- $res = (bool)$this->query( $sql, $fname, $ignore );
}
else {
+ $olde = error_reporting( 0 );
+ // For future use, we may want to track the number of actual inserts
+ // Right now, insert (all writes) simply return true/false
+ $numrowsinserted = 0;
+
+ // always return true
$res = true;
- $origsql = $sql;
+
foreach ( $args as $row ) {
- $tempsql = $origsql;
- $tempsql .= '(' . $this->makeListSmart( $table, $row ) . ')';
-
- if ( $ignore ) {
- db2_exec($this->mConn, "SAVEPOINT $ignore");
+ $overhead = "SAVEPOINT $ignore ON ROLLBACK RETAIN CURSORS";
+ db2_exec($this->mConn, $overhead, $this->mStmtOptions);
+
+ $res2 = $this->execute($stmt, $row);
+ // get the last inserted value into a generated column
+ $this->calcInsertId($table, $primaryKey, $stmt);
+
+ $errNum = $this->lastErrno();
+ if ($errNum) {
+ db2_exec( $this->mConn, "ROLLBACK TO SAVEPOINT $ignore", $this->mStmtOptions );
}
-
- $tempres = (bool)$this->query( $tempsql, $fname, $ignore );
-
- if ( $ignore ) {
- $bar = db2_stmt_error();
- if ($bar != false) {
- db2_exec( $this->mConn, "ROLLBACK TO SAVEPOINT $ignore" );
- }
- else {
- db2_exec( $this->mConn, "RELEASE SAVEPOINT $ignore" );
- $numrowsinserted++;
- }
+ else {
+ db2_exec( $this->mConn, "RELEASE SAVEPOINT $ignore", $this->mStmtOptions );
+ $numrowsinserted++;
}
-
- // If any of them fail, we fail overall for this function call
- // Note that this will be ignored if IGNORE is set
- if (! $tempres)
- $res = false;
}
- }
-
- if ($didbegin) {
- $this->commit();
- }
- // if autocommit used to be on, it's ok to commit everything
- else if ($oldautocommit)
- {
- $this->commit();
- }
-
- if ( $ignore ) {
+
$olde = error_reporting( $olde );
// Set the affected row count for the whole operation
$this->mAffectedRows = $numrowsinserted;
-
- // IGNORE always returns true
- return true;
}
+ // commit either way
+ $this->commit();
return $res;
}
/**
+ * Given a table name and a hash of columns with values
+ * Removes primary key columns from the hash where the value is NULL
+ *
+ * @param $table String: name of the table
+ * @param $args Array of hashes of column names with values
+ * @return Array: tuple containing filtered array of columns, array of primary keys
+ */
+ private function removeNullPrimaryKeys($table, $args) {
+ $schema = $this->mSchema;
+ // find out the primary keys
+ $keyres = db2_primary_keys($this->mConn, null, strtoupper($schema), strtoupper($table));
+ $keys = array();
+ for ($row = $this->fetchObject($keyres); $row != null; $row = $this->fetchRow($keyres)) {
+ $keys[] = strtolower($row->column_name);
+ }
+ // remove primary keys
+ foreach ($args as $ai => $row) {
+ foreach ($keys as $ki => $key) {
+ if ($row[$key] == null) {
+ unset($row[$key]);
+ }
+ }
+ $args[$ai] = $row;
+ }
+ // return modified hash
+ return array($args, $keys);
+ }
+
+ /**
* UPDATE wrapper, takes a condition array and a SET array
*
- * @param string $table The table to UPDATE
- * @param array $values An array of values to SET
- * @param array $conds An array of conditions (WHERE). Use '*' to update all rows.
- * @param string $fname The Class::Function calling this function
- * (for the log)
- * @param array $options An array of UPDATE options, can be one or
- * more of IGNORE, LOW_PRIORITY
- * @return bool
- */
- function update( $table, $values, $conds, $fname = 'Database::update', $options = array() ) {
+ * @param $table String: The table to UPDATE
+ * @param $values An array of values to SET
+ * @param $conds An array of conditions (WHERE). Use '*' to update all rows.
+ * @param $fname String: The Class::Function calling this function
+ * (for the log)
+ * @param $options An array of UPDATE options, can be one or
+ * more of IGNORE, LOW_PRIORITY
+ * @return Boolean
+ */
+ public function update( $table, $values, $conds, $fname = 'Database::update', $options = array() ) {
$table = $this->tableName( $table );
$opts = $this->makeUpdateOptions( $options );
- $sql = "UPDATE $opts $table SET " . $this->makeListSmart( $table, $values, LIST_SET );
+ $sql = "UPDATE $opts $table SET " . $this->makeList( $values, LIST_SET );
if ( $conds != '*' ) {
- $sql .= " WHERE " . $this->makeListSmart( $table, $conds, LIST_AND );
+ $sql .= " WHERE " . $this->makeList( $conds, LIST_AND );
}
return $this->query( $sql, $fname );
}
@@ -1211,21 +1208,21 @@ EOF;
*
* Use $conds == "*" to delete all rows
*/
- function delete( $table, $conds, $fname = 'Database::delete' ) {
+ public function delete( $table, $conds, $fname = 'Database::delete' ) {
if ( !$conds ) {
throw new DBUnexpectedError( $this, 'Database::delete() called with no conditions' );
}
$table = $this->tableName( $table );
$sql = "DELETE FROM $table";
if ( $conds != '*' ) {
- $sql .= ' WHERE ' . $this->makeListSmart( $table, $conds, LIST_AND );
+ $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
}
return $this->query( $sql, $fname );
}
/**
* Returns the number of rows affected by the last query or 0
- * @return int the number of rows affected by the last query
+ * @return Integer: the number of rows affected by the last query
*/
public function affectedRows() {
if ( !is_null( $this->mAffectedRows ) ) {
@@ -1238,20 +1235,11 @@ EOF;
}
/**
- * USE INDEX clause
- * DB2 doesn't have them and returns ""
- * @param sting $index
- */
- public function useIndexClause( $index ) {
- return "";
- }
-
- /**
* Simulates REPLACE with a DELETE followed by INSERT
* @param $table Object
- * @param array $uniqueIndexes array consisting of indexes and arrays of indexes
- * @param array $rows Rows to insert
- * @param string $fname Name of the function for profiling
+ * @param $uniqueIndexes Array consisting of indexes and arrays of indexes
+ * @param $rows Array: rows to insert
+ * @param $fname String: name of the function for profiling
* @return nothing
*/
function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseIbm_db2::replace' ) {
@@ -1306,8 +1294,8 @@ EOF;
/**
* Returns the number of rows in the result set
* Has to be called right after the corresponding select query
- * @param Object $res result set
- * @return int number of rows
+ * @param $res Object result set
+ * @return Integer: number of rows
*/
public function numRows( $res ) {
if ( $res instanceof ResultWrapper ) {
@@ -1323,8 +1311,8 @@ EOF;
/**
* Moves the row pointer of the result set
- * @param Object $res result set
- * @param int $row row number
+ * @param $res Object: result set
+ * @param $row Integer: row number
* @return success or failure
*/
public function dataSeek( $res, $row ) {
@@ -1340,8 +1328,8 @@ EOF;
/**
* Frees memory associated with a statement resource
- * @param Object $res Statement resource to free
- * @return bool success or failure
+ * @param $res Object: statement resource to free
+ * @return Boolean success or failure
*/
public function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
@@ -1354,7 +1342,7 @@ EOF;
/**
* Returns the number of columns in a resource
- * @param Object $res Statement resource
+ * @param $res Object: statement resource
* @return Number of fields/columns in resource
*/
public function numFields( $res ) {
@@ -1366,9 +1354,9 @@ EOF;
/**
* Returns the nth column name
- * @param Object $res Statement resource
- * @param int $n Index of field or column
- * @return string name of nth column
+ * @param $res Object: statement resource
+ * @param $n Integer: Index of field or column
+ * @return String name of nth column
*/
public function fieldName( $res, $n ) {
if ( $res instanceof ResultWrapper ) {
@@ -1380,15 +1368,15 @@ EOF;
/**
* SELECT wrapper
*
- * @param mixed $table Array or string, table name(s) (prefix auto-added)
- * @param mixed $vars Array or string, field name(s) to be retrieved
- * @param mixed $conds Array or string, condition(s) for WHERE
- * @param string $fname Calling function name (use __METHOD__) for logs/profiling
- * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
- * see Database::makeSelectOptions code for list of supported stuff
- * @param array $join_conds Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return mixed Database result resource (feed to Database::fetchObject or whatever), or false on failure
+ * @param $table Array or string, table name(s) (prefix auto-added)
+ * @param $vars Array or string, field name(s) to be retrieved
+ * @param $conds Array or string, condition(s) for WHERE
+ * @param $fname String: calling function name (use __METHOD__) for logs/profiling
+ * @param $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
+ * see Database::makeSelectOptions code for list of supported stuff
+ * @param $join_conds Associative array of table join conditions (optional)
+ * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+ * @return Mixed: database result resource (feed to Database::fetchObject or whatever), or false on failure
*/
public function select( $table, $vars, $conds='', $fname = 'DatabaseIbm_db2::select', $options = array(), $join_conds = array() )
{
@@ -1419,7 +1407,6 @@ EOF;
$obj = $this->fetchObject($res2);
$this->mNumRows = $obj->num_rows;
- wfDebug("DatabaseIbm_db2::select: There are $this->mNumRows rows.\n");
return $res;
}
@@ -1430,9 +1417,9 @@ EOF;
*
* @private
*
- * @param array $options an associative array of options to be turned into
+ * @param $options Associative array of options to be turned into
* an SQL query, valid keys are listed in the function.
- * @return array
+ * @return Array
*/
function makeSelectOptions( $options ) {
$preLimitTail = $postLimitTail = '';
@@ -1463,46 +1450,18 @@ EOF;
}
/**
- * Does nothing
- * @param object $db
- * @return bool true
- */
- public function selectDB( $db ) {
- return true;
- }
-
- /**
- * Returns an SQL expression for a simple conditional.
- * Uses CASE on DB2
- *
- * @param string $cond SQL expression which will result in a boolean value
- * @param string $trueVal SQL expression to return if true
- * @param string $falseVal SQL expression to return if false
- * @return string SQL fragment
- */
- public function conditional( $cond, $trueVal, $falseVal ) {
- return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
- }
-
- ###
- # Fix search crash
- ###
- /**
* Get search engine class. All subclasses of this
* need to implement this if they wish to use searching.
*
- * @return string
+ * @return String
*/
public function getSearchEngine() {
return "SearchIBM_DB2";
}
-
- ###
- # Tuesday the 14th of October, 2008
- ###
+
/**
* Did the last database access fail because of deadlock?
- * @return bool
+ * @return Boolean
*/
public function wasDeadlock() {
// get SQLSTATE
@@ -1511,7 +1470,7 @@ EOF;
case '40001': // sql0911n, Deadlock or timeout, rollback
case '57011': // sql0904n, Resource unavailable, no rollback
case '57033': // sql0913n, Deadlock or timeout, no rollback
- wfDebug("In a deadlock because of SQLSTATE $err");
+ $this->installPrint("In a deadlock because of SQLSTATE $err");
return true;
}
return false;
@@ -1520,13 +1479,13 @@ EOF;
/**
* Ping the server and try to reconnect if it there is no connection
* The connection may be closed and reopened while this happens
- * @return bool whether the connection exists
+ * @return Boolean: whether the connection exists
*/
public function ping() {
// db2_ping() doesn't exist
// Emulate
$this->close();
- if ($this->mCataloged == NULL) {
+ if ($this->mCataloged == null) {
return false;
}
else if ($this->mCataloged) {
@@ -1545,46 +1504,34 @@ EOF;
* @return string ''
* @deprecated
*/
- public function getStatus( $which ) { wfDebug('Not implemented for DB2: getStatus()'); return ''; }
- /**
- * Not implemented
- * @deprecated
- */
- public function setTimeout( $timeout ) { wfDebug('Not implemented for DB2: setTimeout()'); }
+ public function getStatus( $which="%" ) { $this->installPrint('Not implemented for DB2: getStatus()'); return ''; }
/**
* Not implemented
* TODO
* @return bool true
*/
- public function lock( $lockName, $method ) { wfDebug('Not implemented for DB2: lock()'); return true; }
- /**
- * Not implemented
- * TODO
- * @return bool true
- */
- public function unlock( $lockName, $method ) { wfDebug('Not implemented for DB2: unlock()'); return true; }
/**
* Not implemented
* @deprecated
*/
- public function setFakeSlaveLag( $lag ) { wfDebug('Not implemented for DB2: setFakeSlaveLag()'); }
+ public function setFakeSlaveLag( $lag ) { $this->installPrint('Not implemented for DB2: setFakeSlaveLag()'); }
/**
* Not implemented
* @deprecated
*/
- public function setFakeMaster( $enabled ) { wfDebug('Not implemented for DB2: setFakeMaster()'); }
+ public function setFakeMaster( $enabled = true ) { $this->installPrint('Not implemented for DB2: setFakeMaster()'); }
/**
* Not implemented
* @return string $sql
* @deprecated
*/
- public function limitResultForUpdate($sql, $num) { return $sql; }
+ public function limitResultForUpdate($sql, $num) { $this->installPrint('Not implemented for DB2: limitResultForUpdate()'); return $sql; }
+
/**
- * No such option
- * @return string ''
- * @deprecated
+ * Only useful with fake prepare like in base Database class
+ * @return string
*/
- public function lowPriorityOption() { return ''; }
+ public function fillPreparedArg( $matches ) { $this->installPrint('Not useful for DB2: fillPreparedArg()'); return ''; }
######################################
# Reflection
@@ -1592,9 +1539,9 @@ EOF;
/**
* Query whether a given column exists in the mediawiki schema
- * @param string $table name of the table
- * @param string $field name of the column
- * @param string $fname function name for logging and profiling
+ * @param $table String: name of the table
+ * @param $field String: name of the column
+ * @param $fname String: function name for logging and profiling
*/
public function fieldExists( $table, $field, $fname = 'DatabaseIbm_db2::fieldExists' ) {
$table = $this->tableName( $table );
@@ -1617,10 +1564,10 @@ SQL;
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
- * @param string $table table name
- * @param string $index index name
- * @param string
- * @return object query row in object form
+ * @param $table String: table name
+ * @param $index String: index name
+ * @param $fname String: function name for logging and profiling
+ * @return Object query row in object form
*/
public function indexInfo( $table, $index, $fname = 'DatabaseIbm_db2::indexExists' ) {
$table = $this->tableName( $table );
@@ -1631,17 +1578,17 @@ WHERE si.name='$index' AND si.tbname='$table' AND sc.tbcreator='$this->mSchema'
SQL;
$res = $this->query( $sql, $fname );
if ( !$res ) {
- return NULL;
+ return null;
}
$row = $this->fetchObject( $res );
- if ($row != NULL) return $row;
+ if ($row != null) return $row;
else return false;
}
/**
* Returns an information object on a table column
- * @param string $table table name
- * @param string $field column name
+ * @param $table String: table name
+ * @param $field String: column name
* @return IBM_DB2Field
*/
public function fieldInfo( $table, $field ) {
@@ -1650,9 +1597,9 @@ SQL;
/**
* db2_field_type() wrapper
- * @param Object $res Result of executed statement
- * @param mixed $index number or name of the column
- * @return string column type
+ * @param $res Object: result of executed statement
+ * @param $index Mixed: number or name of the column
+ * @return String column type
*/
public function fieldType( $res, $index ) {
if ( $res instanceof ResultWrapper ) {
@@ -1663,10 +1610,10 @@ SQL;
/**
* Verifies that an index was created as unique
- * @param string $table table name
- * @param string $index index name
- * @param string $fnam function name for profiling
- * @return bool
+ * @param $table String: table name
+ * @param $index String: index name
+ * @param $fname function name for profiling
+ * @return Bool
*/
public function indexUnique ($table, $index, $fname = 'Database::indexUnique' ) {
$table = $this->tableName( $table );
@@ -1689,9 +1636,9 @@ SQL;
/**
* Returns the size of a text field, or -1 for "unlimited"
- * @param string $table table name
- * @param string $field column name
- * @return int length or -1 for unlimited
+ * @param $table String: table name
+ * @param $field String: column name
+ * @return Integer: length or -1 for unlimited
*/
public function textFieldSize( $table, $field ) {
$table = $this->tableName( $table );
@@ -1709,12 +1656,12 @@ SQL;
/**
* DELETE where the condition is a join
- * @param string $delTable deleting from this table
- * @param string $joinTable using data from this table
- * @param string $delVar variable in deleteable table
- * @param string $joinVar variable in data table
- * @param array $conds conditionals for join table
- * @param string $fname function name for profiling
+ * @param $delTable String: deleting from this table
+ * @param $joinTable String: using data from this table
+ * @param $delVar String: variable in deleteable table
+ * @param $joinVar String: variable in data table
+ * @param $conds Array: conditionals for join table
+ * @param $fname String: function name for profiling
*/
public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = "DatabaseIbm_db2::deleteJoin" ) {
if ( !$conds ) {
@@ -1731,32 +1678,10 @@ SQL;
$this->query( $sql, $fname );
}
-
- /**
- * Estimate rows in dataset
- * Returns estimated count, based on COUNT(*) output
- * Takes same arguments as Database::select()
- * @param string $table table name
- * @param array $vars unused
- * @param array $conds filters on the table
- * @param string $fname function name for profiling
- * @param array $options options for select
- * @return int row count
- */
- public function estimateRowCount( $table, $vars='*', $conds='', $fname = 'Database::estimateRowCount', $options = array() ) {
- $rows = 0;
- $res = $this->select ($table, 'COUNT(*) as mwrowcount', $conds, $fname, $options );
- if ($res) {
- $row = $this->fetchRow($res);
- $rows = (isset($row['mwrowcount'])) ? $row['mwrowcount'] : 0;
- }
- $this->freeResult($res);
- return $rows;
- }
-
+
/**
* Description is left as an exercise for the reader
- * @param mixed $b data to be encoded
+ * @param $b Mixed: data to be encoded
* @return IBM_DB2Blob
*/
public function encodeBlob($b) {
@@ -1765,7 +1690,7 @@ SQL;
/**
* Description is left as an exercise for the reader
- * @param IBM_DB2Blob $b data to be decoded
+ * @param $b IBM_DB2Blob: data to be decoded
* @return mixed
*/
public function decodeBlob($b) {
@@ -1774,8 +1699,8 @@ SQL;
/**
* Convert into a list of string being concatenated
- * @param array $stringList strings that need to be joined together by the SQL engine
- * @return string joined by the concatenation operator
+ * @param $stringList Array: strings that need to be joined together by the SQL engine
+ * @return String: joined by the concatenation operator
*/
public function buildConcat( $stringList ) {
// || is equivalent to CONCAT
@@ -1785,12 +1710,135 @@ SQL;
/**
* Generates the SQL required to convert a DB2 timestamp into a Unix epoch
- * @param string $column name of timestamp column
- * @return string SQL code
+ * @param $column String: name of timestamp column
+ * @return String: SQL code
*/
public function extractUnixEpoch( $column ) {
// TODO
// see SpecialAncientpages
}
+
+ ######################################
+ # Prepared statements
+ ######################################
+
+ /**
+ * Intended to be compatible with the PEAR::DB wrapper functions.
+ * http://pear.php.net/manual/en/package.database.db.intro-execute.php
+ *
+ * ? = scalar value, quoted as necessary
+ * ! = raw SQL bit (a function for instance)
+ * & = filename; reads the file and inserts as a blob
+ * (we don't use this though...)
+ * @param $sql String: SQL statement with appropriate markers
+ * @param $func String: Name of the function, for profiling
+ * @return resource a prepared DB2 SQL statement
+ */
+ public function prepare( $sql, $func = 'DB2::prepare' ) {
+ $stmt = db2_prepare($this->mConn, $sql, $this->mStmtOptions);
+ return $stmt;
+ }
+
+ /**
+ * Frees resources associated with a prepared statement
+ * @return Boolean success or failure
+ */
+ public function freePrepared( $prepared ) {
+ return db2_free_stmt($prepared);
+ }
+
+ /**
+ * Execute a prepared query with the various arguments
+ * @param $prepared String: the prepared sql
+ * @param $args Mixed: either an array here, or put scalars as varargs
+ * @return Resource: results object
+ */
+ public function execute( $prepared, $args = null ) {
+ if( !is_array( $args ) ) {
+ # Pull the var args
+ $args = func_get_args();
+ array_shift( $args );
+ }
+ $res = db2_execute($prepared, $args);
+ return $res;
+ }
+
+ /**
+ * Prepare & execute an SQL statement, quoting and inserting arguments
+ * in the appropriate places.
+ * @param $query String
+ * @param $args ...
+ */
+ public function safeQuery( $query, $args = null ) {
+ // copied verbatim from Database.php
+ $prepared = $this->prepare( $query, 'DB2::safeQuery' );
+ if( !is_array( $args ) ) {
+ # Pull the var args
+ $args = func_get_args();
+ array_shift( $args );
+ }
+ $retval = $this->execute( $prepared, $args );
+ $this->freePrepared( $prepared );
+ return $retval;
+ }
+
+ /**
+ * For faking prepared SQL statements on DBs that don't support
+ * it directly.
+ * @param $preparedQuery String: a 'preparable' SQL statement
+ * @param $args Array of arguments to fill it with
+ * @return String: executable statement
+ */
+ public function fillPrepared( $preparedQuery, $args ) {
+ reset( $args );
+ $this->preparedArgs =& $args;
+
+ foreach ($args as $i => $arg) {
+ db2_bind_param($preparedQuery, $i+1, $args[$i]);
+ }
+
+ return $preparedQuery;
+ }
+
+ /**
+ * Switches module between regular and install modes
+ */
+ public function setMode($mode) {
+ $old = $this->mMode;
+ $this->mMode = $mode;
+ return $old;
+ }
+
+ /**
+ * Bitwise negation of a column or value in SQL
+ * Same as (~field) in C
+ * @param $field String
+ * @return String
+ */
+ function bitNot($field) {
+ //expecting bit-fields smaller than 4bytes
+ return 'BITNOT('.$bitField.')';
+ }
+
+ /**
+ * Bitwise AND of two columns or values in SQL
+ * Same as (fieldLeft & fieldRight) in C
+ * @param $fieldLeft String
+ * @param $fieldRight String
+ * @return String
+ */
+ function bitAnd($fieldLeft, $fieldRight) {
+ return 'BITAND('.$fieldLeft.', '.$fieldRight.')';
+ }
+
+ /**
+ * Bitwise OR of two columns or values in SQL
+ * Same as (fieldLeft | fieldRight) in C
+ * @param $fieldLeft String
+ * @param $fieldRight String
+ * @return String
+ */
+ function bitOr($fieldLeft, $fieldRight) {
+ return 'BITOR('.$fieldLeft.', '.$fieldRight.')';
+ }
}
-?> \ No newline at end of file
diff --git a/includes/db/DatabaseMssql.php b/includes/db/DatabaseMssql.php
index 28ccab2d..6b1206b0 100644
--- a/includes/db/DatabaseMssql.php
+++ b/includes/db/DatabaseMssql.php
@@ -10,7 +10,7 @@
/**
* @ingroup Database
*/
-class DatabaseMssql extends Database {
+class DatabaseMssql extends DatabaseBase {
var $mAffectedRows;
var $mLastResult;
@@ -25,7 +25,7 @@ class DatabaseMssql extends Database {
$failFunction = false, $flags = 0, $tablePrefix = 'get from global') {
global $wgOut, $wgDBprefix, $wgCommandLineMode;
- if (!isset($wgOut)) $wgOut = NULL; # Can't get a reference if it hasn't been set yet
+ if (!isset($wgOut)) $wgOut = null; # Can't get a reference if it hasn't been set yet
$this->mOut =& $wgOut;
$this->mFailFunction = $failFunction;
$this->mFlags = $flags;
@@ -45,6 +45,10 @@ class DatabaseMssql extends Database {
}
+ function getType() {
+ return 'mssql';
+ }
+
/**
* todo: check if these should be true like parent class
*/
@@ -131,7 +135,7 @@ class DatabaseMssql extends Database {
function close() {
$this->mOpened = false;
if ($this->mConn) {
- if ($this->trxLevel()) $this->immediateCommit();
+ if ($this->trxLevel()) $this->commit();
return mssql_close($this->mConn);
} else return true;
}
@@ -446,22 +450,6 @@ class DatabaseMssql extends Database {
}
/**
- * Estimate rows in dataset
- * Returns estimated count, based on EXPLAIN output
- * Takes same arguments as Database::select()
- */
- function estimateRowCount( $table, $vars='*', $conds='', $fname = 'Database::estimateRowCount', $options = array() ) {
- $rows = 0;
- $res = $this->select ($table, 'COUNT(*)', $conds, $fname, $options );
- if ($res) {
- $row = $this->fetchObject($res);
- $rows = $row[0];
- }
- $this->freeResult($res);
- return $rows;
- }
-
- /**
* Determines whether a field exists in a table
* Usually aborts on failure
* If errors are explicitly ignored, returns NULL on failure
@@ -490,13 +478,13 @@ class DatabaseMssql extends Database {
function indexInfo( $table, $index, $fname = 'Database::indexInfo' ) {
throw new DBUnexpectedError( $this, 'Database::indexInfo called which is not supported yet' );
- return NULL;
+ return null;
$table = $this->tableName( $table );
$sql = 'SHOW INDEX FROM '.$table;
$res = $this->query( $sql, $fname );
if ( !$res ) {
- return NULL;
+ return null;
}
$result = array();
@@ -708,13 +696,6 @@ class DatabaseMssql extends Database {
}
/**
- * USE INDEX clause
- */
- function useIndexClause( $index ) {
- return "";
- }
-
- /**
* REPLACE query wrapper
* PostgreSQL simulates this with a DELETE followed by INSERT
* $row is the row to insert, an associative array
@@ -858,18 +839,6 @@ class DatabaseMssql extends Database {
}
/**
- * Returns an SQL expression for a simple conditional.
- *
- * @param $cond String: SQL expression which will result in a boolean value
- * @param $trueVal String: SQL expression to return if true
- * @param $falseVal String: SQL expression to return if false
- * @return string SQL fragment
- */
- function conditional( $cond, $trueVal, $falseVal ) {
- return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
- }
-
- /**
* Should determine if the last failure was due to a deadlock
* @return bool
*/
@@ -878,22 +847,6 @@ class DatabaseMssql extends Database {
}
/**
- * Begin a transaction, committing any previously open transaction
- * @deprecated use begin()
- */
- function immediateBegin( $fname = 'Database::immediateBegin' ) {
- $this->begin();
- }
-
- /**
- * Commit transaction, if one is open
- * @deprecated use commit()
- */
- function immediateCommit( $fname = 'Database::immediateCommit' ) {
- $this->commit();
- }
-
- /**
* Return MW-style timestamp used for MySQL schema
*/
function timestamp( $ts=0 ) {
@@ -931,16 +884,6 @@ class DatabaseMssql extends Database {
}
/**
- * not done
- */
- public function setTimeout($timeout) { return; }
-
- function ping() {
- wfDebug("Function ping() not written for MSSQL yet");
- return true;
- }
-
- /**
* How lagged is this slave?
*/
public function getLag() {
@@ -1001,20 +944,9 @@ class DatabaseMssql extends Database {
}
}
- /**
- * No-op lock functions
- */
- public function lock( $lockName, $method ) {
- return true;
- }
- public function unlock( $lockName, $method ) {
- return true;
- }
-
public function getSearchEngine() {
return "SearchEngineDummy";
}
-
}
/**
diff --git a/includes/db/DatabaseMysql.php b/includes/db/DatabaseMysql.php
new file mode 100644
index 00000000..ea7ef5b9
--- /dev/null
+++ b/includes/db/DatabaseMysql.php
@@ -0,0 +1,453 @@
+<?php
+/**
+ * Database abstraction object for mySQL
+ * Inherit all methods and properties of Database::Database()
+ *
+ * @ingroup Database
+ * @see Database
+ */
+class DatabaseMysql extends DatabaseBase {
+ function getType() {
+ return 'mysql';
+ }
+
+ /*private*/ function doQuery( $sql ) {
+ if( $this->bufferResults() ) {
+ $ret = mysql_query( $sql, $this->mConn );
+ } else {
+ $ret = mysql_unbuffered_query( $sql, $this->mConn );
+ }
+ return $ret;
+ }
+
+ function open( $server, $user, $password, $dbName ) {
+ global $wgAllDBsAreLocalhost;
+ wfProfileIn( __METHOD__ );
+
+ # Test for missing mysql.so
+ # First try to load it
+ if (!@extension_loaded('mysql')) {
+ @dl('mysql.so');
+ }
+
+ # Fail now
+ # Otherwise we get a suppressed fatal error, which is very hard to track down
+ if ( !function_exists( 'mysql_connect' ) ) {
+ throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
+ }
+
+ # Debugging hack -- fake cluster
+ if ( $wgAllDBsAreLocalhost ) {
+ $realServer = 'localhost';
+ } else {
+ $realServer = $server;
+ }
+ $this->close();
+ $this->mServer = $server;
+ $this->mUser = $user;
+ $this->mPassword = $password;
+ $this->mDBname = $dbName;
+
+ $success = false;
+
+ wfProfileIn("dbconnect-$server");
+
+ # The kernel's default SYN retransmission period is far too slow for us,
+ # so we use a short timeout plus a manual retry. Retrying means that a small
+ # but finite rate of SYN packet loss won't cause user-visible errors.
+ $this->mConn = false;
+ if ( ini_get( 'mysql.connect_timeout' ) <= 3 ) {
+ $numAttempts = 2;
+ } else {
+ $numAttempts = 1;
+ }
+ $this->installErrorHandler();
+ for ( $i = 0; $i < $numAttempts && !$this->mConn; $i++ ) {
+ if ( $i > 1 ) {
+ usleep( 1000 );
+ }
+ if ( $this->mFlags & DBO_PERSISTENT ) {
+ $this->mConn = mysql_pconnect( $realServer, $user, $password );
+ } else {
+ # Create a new connection...
+ $this->mConn = mysql_connect( $realServer, $user, $password, true );
+ }
+ if ($this->mConn === false) {
+ #$iplus = $i + 1;
+ #wfLogDBError("Connect loop error $iplus of $max ($server): " . mysql_errno() . " - " . mysql_error()."\n");
+ }
+ }
+ $phpError = $this->restoreErrorHandler();
+ # Always log connection errors
+ if ( !$this->mConn ) {
+ $error = $this->lastError();
+ if ( !$error ) {
+ $error = $phpError;
+ }
+ wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
+ wfDebug( "DB connection error\n" );
+ wfDebug( "Server: $server, User: $user, Password: " .
+ substr( $password, 0, 3 ) . "..., error: " . mysql_error() . "\n" );
+ $success = false;
+ }
+
+ wfProfileOut("dbconnect-$server");
+
+ if ( $dbName != '' && $this->mConn !== false ) {
+ $success = @/**/mysql_select_db( $dbName, $this->mConn );
+ if ( !$success ) {
+ $error = "Error selecting database $dbName on server {$this->mServer} " .
+ "from client host " . wfHostname() . "\n";
+ wfLogDBError(" Error selecting database $dbName on server {$this->mServer} \n");
+ wfDebug( $error );
+ }
+ } else {
+ # Delay USE query
+ $success = (bool)$this->mConn;
+ }
+
+ if ( $success ) {
+ $version = $this->getServerVersion();
+ if ( version_compare( $version, '4.1' ) >= 0 ) {
+ // Tell the server we're communicating with it in UTF-8.
+ // This may engage various charset conversions.
+ global $wgDBmysql5;
+ if( $wgDBmysql5 ) {
+ $this->query( 'SET NAMES utf8', __METHOD__ );
+ }
+ // Turn off strict mode
+ $this->query( "SET sql_mode = ''", __METHOD__ );
+ }
+
+ // Turn off strict mode if it is on
+ } else {
+ $this->reportConnectionError( $phpError );
+ }
+
+ $this->mOpened = $success;
+ wfProfileOut( __METHOD__ );
+ return $success;
+ }
+
+ function close() {
+ $this->mOpened = false;
+ if ( $this->mConn ) {
+ if ( $this->trxLevel() ) {
+ $this->commit();
+ }
+ return mysql_close( $this->mConn );
+ } else {
+ return true;
+ }
+ }
+
+ function freeResult( $res ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ if ( !@/**/mysql_free_result( $res ) ) {
+ throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
+ }
+ }
+
+ function fetchObject( $res ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ @/**/$row = mysql_fetch_object( $res );
+ if( $this->lastErrno() ) {
+ throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
+ }
+ return $row;
+ }
+
+ function fetchRow( $res ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ @/**/$row = mysql_fetch_array( $res );
+ if ( $this->lastErrno() ) {
+ throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
+ }
+ return $row;
+ }
+
+ function numRows( $res ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ @/**/$n = mysql_num_rows( $res );
+ if( $this->lastErrno() ) {
+ throw new DBUnexpectedError( $this, 'Error in numRows(): ' . htmlspecialchars( $this->lastError() ) );
+ }
+ return $n;
+ }
+
+ function numFields( $res ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ return mysql_num_fields( $res );
+ }
+
+ function fieldName( $res, $n ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ return mysql_field_name( $res, $n );
+ }
+
+ function insertId() { return mysql_insert_id( $this->mConn ); }
+
+ function dataSeek( $res, $row ) {
+ if ( $res instanceof ResultWrapper ) {
+ $res = $res->result;
+ }
+ return mysql_data_seek( $res, $row );
+ }
+
+ function lastErrno() {
+ if ( $this->mConn ) {
+ return mysql_errno( $this->mConn );
+ } else {
+ return mysql_errno();
+ }
+ }
+
+ function lastError() {
+ if ( $this->mConn ) {
+ # Even if it's non-zero, it can still be invalid
+ wfSuppressWarnings();
+ $error = mysql_error( $this->mConn );
+ if ( !$error ) {
+ $error = mysql_error();
+ }
+ wfRestoreWarnings();
+ } else {
+ $error = mysql_error();
+ }
+ if( $error ) {
+ $error .= ' (' . $this->mServer . ')';
+ }
+ return $error;
+ }
+
+ function affectedRows() { return mysql_affected_rows( $this->mConn ); }
+
+ /**
+ * Estimate rows in dataset
+ * Returns estimated count, based on EXPLAIN output
+ * Takes same arguments as Database::select()
+ */
+ public function estimateRowCount( $table, $vars='*', $conds='', $fname = 'Database::estimateRowCount', $options = array() ) {
+ $options['EXPLAIN'] = true;
+ $res = $this->select( $table, $vars, $conds, $fname, $options );
+ if ( $res === false )
+ return false;
+ if ( !$this->numRows( $res ) ) {
+ $this->freeResult($res);
+ return 0;
+ }
+
+ $rows = 1;
+ while( $plan = $this->fetchObject( $res ) ) {
+ $rows *= $plan->rows > 0 ? $plan->rows : 1; // avoid resetting to zero
+ }
+
+ $this->freeResult($res);
+ return $rows;
+ }
+
+ function fieldInfo( $table, $field ) {
+ $table = $this->tableName( $table );
+ $res = $this->query( "SELECT * FROM $table LIMIT 1" );
+ $n = mysql_num_fields( $res->result );
+ for( $i = 0; $i < $n; $i++ ) {
+ $meta = mysql_fetch_field( $res->result, $i );
+ if( $field == $meta->name ) {
+ return new MySQLField($meta);
+ }
+ }
+ return false;
+ }
+
+ function selectDB( $db ) {
+ $this->mDBname = $db;
+ return mysql_select_db( $db, $this->mConn );
+ }
+
+ function strencode( $s ) {
+ return mysql_real_escape_string( $s, $this->mConn );
+ }
+
+ function ping() {
+ if( !function_exists( 'mysql_ping' ) ) {
+ wfDebug( "Tried to call mysql_ping but this is ancient PHP version. Faking it!\n" );
+ return true;
+ }
+ $ping = mysql_ping( $this->mConn );
+ if ( $ping ) {
+ return true;
+ }
+
+ // Need to reconnect manually in MySQL client 5.0.13+
+ if ( version_compare( mysql_get_client_info(), '5.0.13', '>=' ) ) {
+ mysql_close( $this->mConn );
+ $this->mOpened = false;
+ $this->mConn = false;
+ $this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
+ return true;
+ }
+ return false;
+ }
+
+ function getServerVersion() {
+ return mysql_get_server_info( $this->mConn );
+ }
+
+ function useIndexClause( $index ) {
+ return "FORCE INDEX (" . $this->indexName( $index ) . ")";
+ }
+
+ function lowPriorityOption() {
+ return 'LOW_PRIORITY';
+ }
+
+ function getSoftwareLink() {
+ return '[http://www.mysql.com/ MySQL]';
+ }
+
+ function standardSelectDistinct() {
+ return false;
+ }
+
+ public function setTimeout( $timeout ) {
+ $this->query( "SET net_read_timeout=$timeout" );
+ $this->query( "SET net_write_timeout=$timeout" );
+ }
+
+ public function lock( $lockName, $method, $timeout = 5 ) {
+ $lockName = $this->addQuotes( $lockName );
+ $result = $this->query( "SELECT GET_LOCK($lockName, $timeout) AS lockstatus", $method );
+ $row = $this->fetchObject( $result );
+ $this->freeResult( $result );
+
+ if( $row->lockstatus == 1 ) {
+ return true;
+ } else {
+ wfDebug( __METHOD__." failed to acquire lock\n" );
+ return false;
+ }
+ }
+
+ public function unlock( $lockName, $method ) {
+ $lockName = $this->addQuotes( $lockName );
+ $result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
+ $row = $this->fetchObject( $result );
+ return $row->lockstatus;
+ }
+
+ public function lockTables( $read, $write, $method, $lowPriority = true ) {
+ $items = array();
+
+ foreach( $write as $table ) {
+ $tbl = $this->tableName( $table ) .
+ ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
+ ' WRITE';
+ $items[] = $tbl;
+ }
+ foreach( $read as $table ) {
+ $items[] = $this->tableName( $table ) . ' READ';
+ }
+ $sql = "LOCK TABLES " . implode( ',', $items );
+ $this->query( $sql, $method );
+ }
+
+ public function unlockTables( $method ) {
+ $this->query( "UNLOCK TABLES", $method );
+ }
+
+ public function setBigSelects( $value = true ) {
+ if ( $value === 'default' ) {
+ if ( $this->mDefaultBigSelects === null ) {
+ # Function hasn't been called before so it must already be set to the default
+ return;
+ } else {
+ $value = $this->mDefaultBigSelects;
+ }
+ } elseif ( $this->mDefaultBigSelects === null ) {
+ $this->mDefaultBigSelects = (bool)$this->selectField( false, '@@sql_big_selects' );
+ }
+ $encValue = $value ? '1' : '0';
+ $this->query( "SET sql_big_selects=$encValue", __METHOD__ );
+ }
+
+
+ /**
+ * Determines if the last failure was due to a deadlock
+ */
+ function wasDeadlock() {
+ return $this->lastErrno() == 1213;
+ }
+
+ /**
+ * Determines if the last query error was something that should be dealt
+ * with by pinging the connection and reissuing the query
+ */
+ function wasErrorReissuable() {
+ return $this->lastErrno() == 2013 || $this->lastErrno() == 2006;
+ }
+
+ /**
+ * Determines if the last failure was due to the database being read-only.
+ */
+ function wasReadOnlyError() {
+ return $this->lastErrno() == 1223 ||
+ ( $this->lastErrno() == 1290 && strpos( $this->lastError(), '--read-only' ) !== false );
+ }
+
+ function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseMysql::duplicateTableStructure' ) {
+ $tmp = $temporary ? 'TEMPORARY ' : '';
+ if ( strcmp( $this->getServerVersion(), '4.1' ) < 0 ) {
+ # Hack for MySQL versions < 4.1, which don't support
+ # "CREATE TABLE ... LIKE". Note that
+ # "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
+ # would not create the indexes we need....
+ #
+ # Note that we don't bother changing around the prefixes here be-
+ # cause we know we're using MySQL anyway.
+
+ $res = $this->query( "SHOW CREATE TABLE $oldName" );
+ $row = $this->fetchRow( $res );
+ $oldQuery = $row[1];
+ $query = preg_replace( '/CREATE TABLE `(.*?)`/',
+ "CREATE $tmp TABLE `$newName`", $oldQuery );
+ if ($oldQuery === $query) {
+ # Couldn't do replacement
+ throw new MWException( "could not create temporary table $newName" );
+ }
+ } else {
+ $query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
+ }
+ $this->query( $query, $fname );
+ }
+
+}
+
+/**
+ * Legacy support: Database == DatabaseMysql
+ */
+class Database extends DatabaseMysql {}
+
+class MySQLMasterPos {
+ var $file, $pos;
+
+ function __construct( $file, $pos ) {
+ $this->file = $file;
+ $this->pos = $pos;
+ }
+
+ function __toString() {
+ return "{$this->file}/{$this->pos}";
+ }
+}
diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php
index 4c37a507..bd60bbf8 100644
--- a/includes/db/DatabaseOracle.php
+++ b/includes/db/DatabaseOracle.php
@@ -11,7 +11,7 @@
class ORABlob {
var $mData;
- function __construct($data) {
+ function __construct( $data ) {
$this->mData = $data;
}
@@ -31,58 +31,80 @@ class ORAResult {
private $cursor;
private $stmt;
private $nrows;
- private $db;
- function __construct(&$db, $stmt) {
+ private $unique;
+ private function array_unique_md( $array_in ) {
+ $array_out = array();
+ $array_hashes = array();
+
+ foreach ( $array_in as $key => $item ) {
+ $hash = md5( serialize( $item ) );
+ if ( !isset( $array_hashes[$hash] ) ) {
+ $array_hashes[$hash] = $hash;
+ $array_out[] = $item;
+ }
+ }
+
+ return $array_out;
+ }
+
+ function __construct( &$db, $stmt, $unique = false ) {
$this->db =& $db;
- if (($this->nrows = oci_fetch_all($stmt, $this->rows, 0, -1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM)) === false) {
- $e = oci_error($stmt);
- $db->reportQueryError($e['message'], $e['code'], '', __FUNCTION__);
+
+ if ( ( $this->nrows = oci_fetch_all( $stmt, $this->rows, 0, - 1, OCI_FETCHSTATEMENT_BY_ROW | OCI_NUM ) ) === false ) {
+ $e = oci_error( $stmt );
+ $db->reportQueryError( $e['message'], $e['code'], '', __FUNCTION__ );
return;
}
+ if ( $unique ) {
+ $this->rows = $this->array_unique_md( $this->rows );
+ $this->nrows = count( $this->rows );
+ }
+
$this->cursor = 0;
$this->stmt = $stmt;
}
- function free() {
- oci_free_statement($this->stmt);
+ public function free() {
+ oci_free_statement( $this->stmt );
}
- function seek($row) {
- $this->cursor = min($row, $this->nrows);
+ public function seek( $row ) {
+ $this->cursor = min( $row, $this->nrows );
}
- function numRows() {
+ public function numRows() {
return $this->nrows;
}
- function numFields() {
- return oci_num_fields($this->stmt);
+ public function numFields() {
+ return oci_num_fields( $this->stmt );
}
- function fetchObject() {
- if ($this->cursor >= $this->nrows)
+ public function fetchObject() {
+ if ( $this->cursor >= $this->nrows ) {
return false;
-
+ }
$row = $this->rows[$this->cursor++];
$ret = new stdClass();
- foreach ($row as $k => $v) {
- $lc = strtolower(oci_field_name($this->stmt, $k + 1));
+ foreach ( $row as $k => $v ) {
+ $lc = strtolower( oci_field_name( $this->stmt, $k + 1 ) );
$ret->$lc = $v;
}
return $ret;
}
- function fetchAssoc() {
- if ($this->cursor >= $this->nrows)
+ public function fetchRow() {
+ if ( $this->cursor >= $this->nrows ) {
return false;
+ }
$row = $this->rows[$this->cursor++];
$ret = array();
- foreach ($row as $k => $v) {
- $lc = strtolower(oci_field_name($this->stmt, $k + 1));
+ foreach ( $row as $k => $v ) {
+ $lc = strtolower( oci_field_name( $this->stmt, $k + 1 ) );
$ret[$lc] = $v;
$ret[$k] = $v;
}
@@ -91,30 +113,87 @@ class ORAResult {
}
/**
+ * Utility class.
+ * @ingroup Database
+ */
+class ORAField {
+ private $name, $tablename, $default, $max_length, $nullable,
+ $is_pk, $is_unique, $is_multiple, $is_key, $type;
+
+ function __construct( $info ) {
+ $this->name = $info['column_name'];
+ $this->tablename = $info['table_name'];
+ $this->default = $info['data_default'];
+ $this->max_length = $info['data_length'];
+ $this->nullable = $info['not_null'];
+ $this->is_pk = isset( $info['prim'] ) && $info['prim'] == 1 ? 1 : 0;
+ $this->is_unique = isset( $info['uniq'] ) && $info['uniq'] == 1 ? 1 : 0;
+ $this->is_multiple = isset( $info['nonuniq'] ) && $info['nonuniq'] == 1 ? 1 : 0;
+ $this->is_key = ( $this->is_pk || $this->is_unique || $this->is_multiple );
+ $this->type = $info['data_type'];
+ }
+
+ function name() {
+ return $this->name;
+ }
+
+ function tableName() {
+ return $this->tablename;
+ }
+
+ function defaultValue() {
+ return $this->default;
+ }
+
+ function maxLength() {
+ return $this->max_length;
+ }
+
+ function nullable() {
+ return $this->nullable;
+ }
+
+ function isKey() {
+ return $this->is_key;
+ }
+
+ function isMultipleKey() {
+ return $this->is_multiple;
+ }
+
+ function type() {
+ return $this->type;
+ }
+}
+
+/**
* @ingroup Database
*/
-class DatabaseOracle extends Database {
- var $mInsertId = NULL;
- var $mLastResult = NULL;
- var $numeric_version = NULL;
+class DatabaseOracle extends DatabaseBase {
+ var $mInsertId = null;
+ var $mLastResult = null;
+ var $numeric_version = null;
var $lastResult = null;
var $cursor = 0;
var $mAffectedRows;
- function DatabaseOracle($server = false, $user = false, $password = false, $dbName = false,
- $failFunction = false, $flags = 0 )
- {
+ var $ignore_DUP_VAL_ON_INDEX = false;
+ var $sequenceData = null;
- global $wgOut;
- # Can't get a reference if it hasn't been set yet
- if ( !isset( $wgOut ) ) {
- $wgOut = NULL;
- }
- $this->mOut =& $wgOut;
- $this->mFailFunction = $failFunction;
- $this->mFlags = $flags;
- $this->open( $server, $user, $password, $dbName);
+ var $defaultCharset = 'AL32UTF8';
+
+ var $mFieldInfoCache = array();
+
+ function __construct( $server = false, $user = false, $password = false, $dbName = false,
+ $failFunction = false, $flags = 0, $tablePrefix = 'get from global' )
+ {
+ $tablePrefix = $tablePrefix == 'get from global' ? $tablePrefix : strtoupper( $tablePrefix );
+ parent::__construct( $server, $user, $password, $dbName, $failFunction, $flags, $tablePrefix );
+ wfRunHooks( 'DatabaseOraclePostInit', array( &$this ) );
+ }
+ function getType() {
+ return 'oracle';
}
function cascadingDeletes() {
@@ -139,8 +218,7 @@ class DatabaseOracle extends Database {
return true;
}
- static function newFromParams( $server = false, $user = false, $password = false, $dbName = false,
- $failFunction = false, $flags = 0)
+ static function newFromParams( $server, $user, $password, $dbName, $failFunction = false, $flags = 0 )
{
return new DatabaseOracle( $server, $user, $password, $dbName, $failFunction, $flags );
}
@@ -154,30 +232,35 @@ class DatabaseOracle extends Database {
throw new DBConnectionError( $this, "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
}
- # Needed for proper UTF-8 functionality
- putenv("NLS_LANG=AMERICAN_AMERICA.AL32UTF8");
-
$this->close();
$this->mServer = $server;
$this->mUser = $user;
$this->mPassword = $password;
$this->mDBname = $dbName;
- if (!strlen($user)) { ## e.g. the class is being loaded
+ if ( !strlen( $user ) ) { # e.g. the class is being loaded
return;
}
- error_reporting( E_ALL );
- $this->mConn = oci_connect($user, $password, $dbName);
+ $session_mode = $this->mFlags & DBO_SYSDBA ? OCI_SYSDBA : OCI_DEFAULT;
+ if ( $this->mFlags & DBO_DEFAULT ) {
+ $this->mConn = oci_new_connect( $user, $password, $dbName, $this->defaultCharset, $session_mode );
+ } else {
+ $this->mConn = oci_connect( $user, $password, $dbName, $this->defaultCharset, $session_mode );
+ }
- if ($this->mConn == false) {
- wfDebug("DB connection error\n");
- wfDebug("Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n");
- wfDebug($this->lastError()."\n");
+ if ( $this->mConn == false ) {
+ wfDebug( "DB connection error\n" );
+ wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ wfDebug( $this->lastError() . "\n" );
return false;
}
$this->mOpened = true;
+
+ # removed putenv calls because they interfere with the system globaly
+ $this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
+ $this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
return $this->mConn;
}
@@ -198,55 +281,101 @@ class DatabaseOracle extends Database {
return $this->mTrxLevel ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS;
}
- function doQuery($sql) {
- wfDebug("SQL: [$sql]\n");
- if (!mb_check_encoding($sql)) {
- throw new MWException("SQL encoding is invalid");
+ function doQuery( $sql ) {
+ wfDebug( "SQL: [$sql]\n" );
+ if ( !mb_check_encoding( $sql ) ) {
+ throw new MWException( "SQL encoding is invalid\n$sql" );
}
- if (($this->mLastResult = $stmt = oci_parse($this->mConn, $sql)) === false) {
- $e = oci_error($this->mConn);
- $this->reportQueryError($e['message'], $e['code'], $sql, __FUNCTION__);
+ // handle some oracle specifics
+ // remove AS column/table/subquery namings
+ if ( !defined( 'MEDIAWIKI_INSTALL' ) ) {
+ $sql = preg_replace( '/ as /i', ' ', $sql );
}
+ // Oracle has issues with UNION clause if the statement includes LOB fields
+ // So we do a UNION ALL and then filter the results array with array_unique
+ $union_unique = ( preg_match( '/\/\* UNION_UNIQUE \*\/ /', $sql ) != 0 );
+ // EXPLAIN syntax in Oracle is EXPLAIN PLAN FOR and it return nothing
+ // you have to select data from plan table after explain
+ $explain_id = date( 'dmYHis' );
+
+ $sql = preg_replace( '/^EXPLAIN /', 'EXPLAIN PLAN SET STATEMENT_ID = \'' . $explain_id . '\' FOR', $sql, 1, $explain_count );
+
- if (oci_execute($stmt, $this->execFlags()) == false) {
- $e = oci_error($stmt);
- $this->reportQueryError($e['message'], $e['code'], $sql, __FUNCTION__);
+ wfSuppressWarnings();
+
+ if ( ( $this->mLastResult = $stmt = oci_parse( $this->mConn, $sql ) ) === false ) {
+ $e = oci_error( $this->mConn );
+ $this->reportQueryError( $e['message'], $e['code'], $sql, __FUNCTION__ );
+ return false;
+ }
+
+ if ( oci_execute( $stmt, $this->execFlags() ) == false ) {
+ $e = oci_error( $stmt );
+ if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ $this->reportQueryError( $e['message'], $e['code'], $sql, __FUNCTION__ );
+ return false;
+ }
}
- if (oci_statement_type($stmt) == "SELECT")
- return new ORAResult($this, $stmt);
- else {
- $this->mAffectedRows = oci_num_rows($stmt);
+
+ wfRestoreWarnings();
+
+ if ( $explain_count > 0 ) {
+ return $this->doQuery( 'SELECT id, cardinality "ROWS" FROM plan_table WHERE statement_id = \'' . $explain_id . '\'' );
+ } elseif ( oci_statement_type( $stmt ) == 'SELECT' ) {
+ return new ORAResult( $this, $stmt, $union_unique );
+ } else {
+ $this->mAffectedRows = oci_num_rows( $stmt );
return true;
}
}
- function queryIgnore($sql, $fname = '') {
- return $this->query($sql, $fname, true);
+ function queryIgnore( $sql, $fname = '' ) {
+ return $this->query( $sql, $fname, true );
}
- function freeResult($res) {
- $res->free();
+ function freeResult( $res ) {
+ if ( $res instanceof ORAResult ) {
+ $res->free();
+ } else {
+ $res->result->free();
+ }
}
- function fetchObject($res) {
- return $res->fetchObject();
+ function fetchObject( $res ) {
+ if ( $res instanceof ORAResult ) {
+ return $res->numRows();
+ } else {
+ return $res->result->fetchObject();
+ }
}
- function fetchRow($res) {
- return $res->fetchAssoc();
+ function fetchRow( $res ) {
+ if ( $res instanceof ORAResult ) {
+ return $res->fetchRow();
+ } else {
+ return $res->result->fetchRow();
+ }
}
- function numRows($res) {
- return $res->numRows();
+ function numRows( $res ) {
+ if ( $res instanceof ORAResult ) {
+ return $res->numRows();
+ } else {
+ return $res->result->numRows();
+ }
}
- function numFields($res) {
- return $res->numFields();
+ function numFields( $res ) {
+ if ( $res instanceof ORAResult ) {
+ return $res->numFields();
+ } else {
+ return $res->result->numFields();
+ }
}
- function fieldName($stmt, $n) {
- return pg_field_name($stmt, $n);
+ function fieldName( $stmt, $n ) {
+ return oci_field_name( $stmt, $n );
}
/**
@@ -256,23 +385,29 @@ class DatabaseOracle extends Database {
return $this->mInsertId;
}
- function dataSeek($res, $row) {
- $res->seek($row);
+ function dataSeek( $res, $row ) {
+ if ( $res instanceof ORAResult ) {
+ $res->seek( $row );
+ } else {
+ $res->result->seek( $row );
+ }
}
function lastError() {
- if ($this->mConn === false)
+ if ( $this->mConn === false ) {
$e = oci_error();
- else
- $e = oci_error($this->mConn);
+ } else {
+ $e = oci_error( $this->mConn );
+ }
return $e['message'];
}
function lastErrno() {
- if ($this->mConn === false)
+ if ( $this->mConn === false ) {
$e = oci_error();
- else
- $e = oci_error($this->mConn);
+ } else {
+ $e = oci_error( $this->mConn );
+ }
return $e['code'];
}
@@ -284,122 +419,261 @@ class DatabaseOracle extends Database {
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
*/
- function indexInfo( $table, $index, $fname = 'Database::indexExists' ) {
+ function indexInfo( $table, $index, $fname = 'DatabaseOracle::indexExists' ) {
return false;
}
- function indexUnique ($table, $index, $fname = 'Database::indexUnique' ) {
+ function indexUnique( $table, $index, $fname = 'DatabaseOracle::indexUnique' ) {
return false;
}
- function insert( $table, $a, $fname = 'Database::insert', $options = array() ) {
- if (!is_array($options))
- $options = array($options);
+ function insert( $table, $a, $fname = 'DatabaseOracle::insert', $options = array() ) {
+ if ( !count( $a ) ) {
+ return true;
+ }
+
+ if ( !is_array( $options ) ) {
+ $options = array( $options );
+ }
- #if (in_array('IGNORE', $options))
- # $oldIgnore = $this->ignoreErrors(true);
+ if ( in_array( 'IGNORE', $options ) ) {
+ $this->ignore_DUP_VAL_ON_INDEX = true;
+ }
- # IGNORE is performed using single-row inserts, ignoring errors in each
- # FIXME: need some way to distiguish between key collision and other types of error
- //$oldIgnore = $this->ignoreErrors(true);
- if (!is_array(reset($a))) {
- $a = array($a);
+ if ( !is_array( reset( $a ) ) ) {
+ $a = array( $a );
}
- foreach ($a as $row) {
- $this->insertOneRow($table, $row, $fname);
+
+ foreach ( $a as &$row ) {
+ $this->insertOneRow( $table, $row, $fname );
}
- //$this->ignoreErrors($oldIgnore);
$retVal = true;
- //if (in_array('IGNORE', $options))
- // $this->ignoreErrors($oldIgnore);
+ if ( in_array( 'IGNORE', $options ) ) {
+ $this->ignore_DUP_VAL_ON_INDEX = false;
+ }
return $retVal;
}
- function insertOneRow($table, $row, $fname) {
+ private function insertOneRow( $table, $row, $fname ) {
+ global $wgLang;
+
+ $table = $this->tableName( $table );
// "INSERT INTO tables (a, b, c)"
- $sql = "INSERT INTO " . $this->tableName($table) . " (" . join(',', array_keys($row)) . ')';
+ $sql = "INSERT INTO " . $table . " (" . join( ',', array_keys( $row ) ) . ')';
$sql .= " VALUES (";
// for each value, append ":key"
$first = true;
- $returning = '';
- foreach ($row as $col => $val) {
- if (is_object($val)) {
- $what = "EMPTY_BLOB()";
- assert($returning === '');
- $returning = " RETURNING $col INTO :bval";
- $blobcol = $col;
- } else
- $what = ":$col";
-
- if ($first)
- $sql .= "$what";
- else
- $sql.= ", $what";
+ foreach ( $row as $col => $val ) {
+ if ( $first ) {
+ $sql .= $val !== null ? ':' . $col : 'NULL';
+ } else {
+ $sql .= $val !== null ? ', :' . $col : ', NULL';
+ }
+
$first = false;
}
- $sql .= ") $returning";
+ $sql .= ')';
- $stmt = oci_parse($this->mConn, $sql);
- foreach ($row as $col => $val) {
- if (!is_object($val)) {
- if (oci_bind_by_name($stmt, ":$col", $row[$col]) === false)
- $this->reportQueryError($this->lastErrno(), $this->lastError(), $sql, __METHOD__);
+ $stmt = oci_parse( $this->mConn, $sql );
+ foreach ( $row as $col => &$val ) {
+ $col_info = $this->fieldInfoMulti( $table, $col );
+ $col_type = $col_info != false ? $col_info->type() : 'CONSTANT';
+
+ if ( $val === null ) {
+ // do nothing ... null was inserted in statement creation
+ } elseif ( $col_type != 'BLOB' && $col_type != 'CLOB' ) {
+ if ( is_object( $val ) ) {
+ $val = $val->getData();
+ }
+
+ if ( preg_match( '/^timestamp.*/i', $col_type ) == 1 && strtolower( $val ) == 'infinity' ) {
+ $val = '31-12-2030 12:00:00.000000';
+ }
+
+ $val = ( $wgLang != null ) ? $wgLang->checkTitleEncoding( $val ) : $val;
+ if ( oci_bind_by_name( $stmt, ":$col", $val ) === false ) {
+ $this->reportQueryError( $this->lastErrno(), $this->lastError(), $sql, __METHOD__ );
+ return false;
+ }
+ } else {
+ if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
+ $e = oci_error( $stmt );
+ throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
+ }
+
+ if ( $col_type == 'BLOB' ) { // is_object($val)) {
+ $lob[$col]->writeTemporary( $val ); // ->getData());
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, SQLT_BLOB );
+ } else {
+ $lob[$col]->writeTemporary( $val );
+ oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, OCI_B_CLOB );
+ }
}
}
- if (($bval = oci_new_descriptor($this->mConn, OCI_D_LOB)) === false) {
- $e = oci_error($stmt);
- throw new DBUnexpectedError($this, "Cannot create LOB descriptor: " . $e['message']);
+ wfSuppressWarnings();
+
+ if ( oci_execute( $stmt, OCI_DEFAULT ) === false ) {
+ $e = oci_error( $stmt );
+
+ if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
+ return false;
+ } else {
+ $this->mAffectedRows = oci_num_rows( $stmt );
+ }
+ } else {
+ $this->mAffectedRows = oci_num_rows( $stmt );
+ }
+
+ wfRestoreWarnings();
+
+ if ( isset( $lob ) ) {
+ foreach ( $lob as $lob_i => $lob_v ) {
+ $lob_v->free();
+ }
+ }
+
+ if ( !$this->mTrxLevel ) {
+ oci_commit( $this->mConn );
+ }
+
+ oci_free_statement( $stmt );
+ }
+
+ function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabaseOracle::insertSelect',
+ $insertOptions = array(), $selectOptions = array() )
+ {
+ $destTable = $this->tableName( $destTable );
+ if ( !is_array( $selectOptions ) ) {
+ $selectOptions = array( $selectOptions );
+ }
+ list( $startOpts, $useIndex, $tailOpts ) = $this->makeSelectOptions( $selectOptions );
+ if ( is_array( $srcTable ) ) {
+ $srcTable = implode( ',', array_map( array( &$this, 'tableName' ), $srcTable ) );
+ } else {
+ $srcTable = $this->tableName( $srcTable );
}
- if (strlen($returning))
- oci_bind_by_name($stmt, ":bval", $bval, -1, SQLT_BLOB);
+ if ( ( $sequenceData = $this->getSequenceData( $destTable ) ) !== false &&
+ !isset( $varMap[$sequenceData['column']] ) )
+ $varMap[$sequenceData['column']] = 'GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')';
- if (oci_execute($stmt, OCI_DEFAULT) === false) {
- $e = oci_error($stmt);
- $this->reportQueryError($e['message'], $e['code'], $sql, __METHOD__);
+ // count-alias subselect fields to avoid abigious definition errors
+ $i = 0;
+ foreach ( $varMap as $key => &$val ) {
+ $val = $val . ' field' . ( $i++ );
}
- if (strlen($returning)) {
- $bval->save($row[$blobcol]->getData());
- $bval->free();
+
+ $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
+ " SELECT $startOpts " . implode( ',', $varMap ) .
+ " FROM $srcTable $useIndex ";
+ if ( $conds != '*' ) {
+ $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
+ }
+ $sql .= " $tailOpts";
+
+ if ( in_array( 'IGNORE', $insertOptions ) ) {
+ $this->ignore_DUP_VAL_ON_INDEX = true;
}
- if (!$this->mTrxLevel)
- oci_commit($this->mConn);
- oci_free_statement($stmt);
+ $retval = $this->query( $sql, $fname );
+
+ if ( in_array( 'IGNORE', $insertOptions ) ) {
+ $this->ignore_DUP_VAL_ON_INDEX = false;
+ }
+
+ return $retval;
}
function tableName( $name ) {
- # Replace reserved words with better ones
+ global $wgSharedDB, $wgSharedPrefix, $wgSharedTables;
+ /*
+ Replace reserved words with better ones
+ Using uppercase because that's the only way Oracle can handle
+ quoted tablenames
+ */
switch( $name ) {
case 'user':
- return 'mwuser';
+ $name = 'MWUSER';
+ break;
case 'text':
- return 'pagecontent';
- default:
- return $name;
+ $name = 'PAGECONTENT';
+ break;
+ }
+
+ /*
+ The rest of procedure is equal to generic Databse class
+ except for the quoting style
+ */
+ if ( $name[0] == '"' && substr( $name, - 1, 1 ) == '"' ) {
+ return $name;
+ }
+ if ( preg_match( '/(^|\s)(DISTINCT|JOIN|ON|AS)(\s|$)/i', $name ) !== 0 ) {
+ return $name;
+ }
+ $dbDetails = array_reverse( explode( '.', $name, 2 ) );
+ if ( isset( $dbDetails[1] ) ) {
+ @list( $table, $database ) = $dbDetails;
+ } else {
+ @list( $table ) = $dbDetails;
+ }
+
+ $prefix = $this->mTablePrefix;
+
+ if ( isset( $database ) ) {
+ $table = ( $table[0] == '`' ? $table : "`{$table}`" );
}
+
+ if ( !isset( $database ) && isset( $wgSharedDB ) && $table[0] != '"'
+ && isset( $wgSharedTables )
+ && is_array( $wgSharedTables )
+ && in_array( $table, $wgSharedTables )
+ ) {
+ $database = $wgSharedDB;
+ $prefix = isset( $wgSharedPrefix ) ? $wgSharedPrefix : $prefix;
+ }
+
+ if ( isset( $database ) ) {
+ $database = ( $database[0] == '"' ? $database : "\"{$database}\"" );
+ }
+ $table = ( $table[0] == '"' ? $table : "\"{$prefix}{$table}\"" );
+
+ $tableName = ( isset( $database ) ? "{$database}.{$table}" : "{$table}" );
+
+ return strtoupper( $tableName );
}
/**
* Return the next in a sequence, save the value for retrieval via insertId()
*/
- function nextSequenceValue($seqName) {
- $res = $this->query("SELECT $seqName.nextval FROM dual");
- $row = $this->fetchRow($res);
+ function nextSequenceValue( $seqName ) {
+ $res = $this->query( "SELECT $seqName.nextval FROM dual" );
+ $row = $this->fetchRow( $res );
$this->mInsertId = $row[0];
- $this->freeResult($res);
+ $this->freeResult( $res );
return $this->mInsertId;
}
/**
- * Oracle does not have a "USE INDEX" clause, so return an empty string
+ * Return sequence_name if table has a sequence
*/
- function useIndexClause($index) {
- return '';
+ private function getSequenceData( $table ) {
+ if ( $this->sequenceData == null ) {
+ $result = $this->query( "SELECT lower(us.sequence_name), lower(utc.table_name), lower(utc.column_name) from user_sequences us, user_tab_columns utc where us.sequence_name = utc.table_name||'_'||utc.column_name||'_SEQ'" );
+
+ while ( ( $row = $result->fetchRow() ) !== false ) {
+ $this->sequenceData[$this->tableName( $row[1] )] = array(
+ 'sequence' => $row[0],
+ 'column' => $row[2]
+ );
+ }
+ }
+
+ return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
}
# REPLACE query wrapper
@@ -411,59 +685,44 @@ class DatabaseOracle extends Database {
# It may be more efficient to leave off unique indexes which are unlikely to collide.
# However if you do this, you run the risk of encountering errors which wouldn't have
# occurred in MySQL
- function replace( $table, $uniqueIndexes, $rows, $fname = 'Database::replace' ) {
- $table = $this->tableName($table);
+ function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseOracle::replace' ) {
+ $table = $this->tableName( $table );
- if (count($rows)==0) {
+ if ( count( $rows ) == 0 ) {
return;
}
# Single row case
- if (!is_array(reset($rows))) {
- $rows = array($rows);
+ if ( !is_array( reset( $rows ) ) ) {
+ $rows = array( $rows );
}
- foreach( $rows as $row ) {
+ $sequenceData = $this->getSequenceData( $table );
+
+ foreach ( $rows as $row ) {
# Delete rows which collide
if ( $uniqueIndexes ) {
- $sql = "DELETE FROM $table WHERE ";
- $first = true;
- foreach ( $uniqueIndexes as $index ) {
- if ( $first ) {
- $first = false;
- $sql .= "(";
- } else {
- $sql .= ') OR (';
- }
- if ( is_array( $index ) ) {
- $first2 = true;
- foreach ( $index as $col ) {
- if ( $first2 ) {
- $first2 = false;
- } else {
- $sql .= ' AND ';
- }
- $sql .= $col.'=' . $this->addQuotes( $row[$col] );
- }
- } else {
- $sql .= $index.'=' . $this->addQuotes( $row[$index] );
- }
+ $condsDelete = array();
+ foreach ( $uniqueIndexes as $index )
+ $condsDelete[$index] = $row[$index];
+ if (count($condsDelete) > 0) {
+ $this->delete( $table, $condsDelete, $fname );
}
- $sql .= ')';
- $this->query( $sql, $fname );
+ }
+
+ if ( $sequenceData !== false && !isset( $row[$sequenceData['column']] ) ) {
+ $row[$sequenceData['column']] = $this->nextSequenceValue( $sequenceData['sequence'] );
}
# Now insert the row
- $sql = "INSERT INTO $table (" . $this->makeList( array_keys( $row ), LIST_NAMES ) .') VALUES (' .
- $this->makeList( $row, LIST_COMMA ) . ')';
- $this->query($sql, $fname);
+ $this->insert( $table, $row, $fname );
}
}
# DELETE where the condition is a join
- function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = "Database::deleteJoin" ) {
+ function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = "DatabaseOracle::deleteJoin" ) {
if ( !$conds ) {
- throw new DBUnexpectedError($this, 'Database::deleteJoin() called with empty $conds' );
+ throw new DBUnexpectedError( $this, 'DatabaseOracle::deleteJoin() called with empty $conds' );
}
$delTable = $this->tableName( $delTable );
@@ -479,78 +738,80 @@ class DatabaseOracle extends Database {
# Returns the size of a text field, or -1 for "unlimited"
function textFieldSize( $table, $field ) {
- $table = $this->tableName( $table );
- $sql = "SELECT t.typname as ftype,a.atttypmod as size
- FROM pg_class c, pg_attribute a, pg_type t
- WHERE relname='$table' AND a.attrelid=c.oid AND
- a.atttypid=t.oid and a.attname='$field'";
- $res =$this->query($sql);
- $row=$this->fetchObject($res);
- if ($row->ftype=="varchar") {
- $size=$row->size-4;
+ $fieldInfoData = $this->fieldInfo( $table, $field);
+ if ( $fieldInfoData->type == "varchar" ) {
+ $size = $row->size - 4;
} else {
- $size=$row->size;
+ $size = $row->size;
}
- $this->freeResult( $res );
return $size;
}
- function lowPriorityOption() {
- return '';
- }
-
- function limitResult($sql, $limit, $offset) {
- if ($offset === false)
+ function limitResult( $sql, $limit, $offset = false ) {
+ if ( $offset === false ) {
$offset = 0;
- return "SELECT * FROM ($sql) WHERE rownum >= (1 + $offset) AND rownum < 1 + $limit + $offset";
+ }
+ return "SELECT * FROM ($sql) WHERE rownum >= (1 + $offset) AND rownum < (1 + $limit + $offset)";
}
- /**
- * Returns an SQL expression for a simple conditional.
- * Uses CASE on Oracle
- *
- * @param $cond String: SQL expression which will result in a boolean value
- * @param $trueVal String: SQL expression to return if true
- * @param $falseVal String: SQL expression to return if false
- * @return String: SQL fragment
- */
- function conditional( $cond, $trueVal, $falseVal ) {
- return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
+
+ function unionQueries( $sqls, $all ) {
+ $glue = ' UNION ALL ';
+ return 'SELECT * ' . ( $all ? '':'/* UNION_UNIQUE */ ' ) . 'FROM (' . implode( $glue, $sqls ) . ')' ;
}
function wasDeadlock() {
return $this->lastErrno() == 'OCI-00060';
}
- function timestamp($ts = 0) {
- return wfTimestamp(TS_ORACLE, $ts);
+
+ function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseOracle::duplicateTableStructure' ) {
+ $temporary = $temporary ? 'TRUE' : 'FALSE';
+ $oldName = trim(strtoupper($oldName), '"');
+ $oldParts = explode('_', $oldName);
+
+ $newName = trim(strtoupper($newName), '"');
+ $newParts = explode('_', $newName);
+
+ $oldPrefix = '';
+ $newPrefix = '';
+ for ($i = count($oldParts)-1; $i >= 0; $i--) {
+ if ($oldParts[$i] != $newParts[$i]) {
+ $oldPrefix = implode('_', $oldParts).'_';
+ $newPrefix = implode('_', $newParts).'_';
+ break;
+ }
+ unset($oldParts[$i]);
+ unset($newParts[$i]);
+ }
+
+ $tabName = substr($oldName, strlen($oldPrefix));
+
+ return $this->query( 'BEGIN DUPLICATE_TABLE(\'' . $tabName . '\', \'' . $oldPrefix . '\', \''.$newPrefix.'\', ' . $temporary . '); END;', $fname );
+ }
+
+ function timestamp( $ts = 0 ) {
+ return wfTimestamp( TS_ORACLE, $ts );
}
/**
* Return aggregated value function call
*/
- function aggregateValue ($valuedata,$valuename='value') {
+ function aggregateValue ( $valuedata, $valuename = 'value' ) {
return $valuedata;
}
- function reportQueryError($error, $errno, $sql, $fname, $tempIgnore = false) {
+ function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) {
# Ignore errors during error handling to avoid infinite
# recursion
- $ignore = $this->ignoreErrors(true);
+ $ignore = $this->ignoreErrors( true );
++$this->mErrorCount;
- if ($ignore || $tempIgnore) {
-echo "error ignored! query = [$sql]\n";
- wfDebug("SQL ERROR (ignored): $error\n");
+ if ( $ignore || $tempIgnore ) {
+ wfDebug( "SQL ERROR (ignored): $error\n" );
$this->ignoreErrors( $ignore );
- }
- else {
-echo "error!\n";
- $message = "A database error has occurred\n" .
- "Query: $sql\n" .
- "Function: $fname\n" .
- "Error: $errno $error\n";
- throw new DBUnexpectedError($this, $message);
+ } else {
+ throw new DBQueryError( $this, $error, $errno, $sql, $fname );
}
}
@@ -558,80 +819,252 @@ echo "error!\n";
* @return string wikitext of a link to the server software's web site
*/
function getSoftwareLink() {
- return "[http://www.oracle.com/ Oracle]";
+ return '[http://www.oracle.com/ Oracle]';
}
/**
* @return string Version information from the database
*/
function getServerVersion() {
- return oci_server_version($this->mConn);
+ return oci_server_version( $this->mConn );
}
/**
* Query whether a given table exists (in the given schema, or the default mw one if not given)
*/
- function tableExists($table) {
- $etable= $this->addQuotes($table);
- $SQL = "SELECT 1 FROM user_tables WHERE table_name='$etable'";
- $res = $this->query($SQL);
- $count = $res ? oci_num_rows($res) : 0;
- if ($res)
- $this->freeResult($res);
+ function tableExists( $table ) {
+ $SQL = "SELECT 1 FROM user_tables WHERE table_name='$table'";
+ $res = $this->doQuery( $SQL );
+ if ( $res ) {
+ $count = $res->numRows();
+ $res->free();
+ } else {
+ $count = 0;
+ }
return $count;
}
/**
- * Query whether a given column exists in the mediawiki schema
+ * Function translates mysql_fetch_field() functionality on ORACLE.
+ * Caching is present for reducing query time.
+ * For internal calls. Use fieldInfo for normal usage.
+ * Returns false if the field doesn't exist
+ *
+ * @param Array $table
+ * @param String $field
*/
- function fieldExists( $table, $field ) {
- return true; // XXX
+ private function fieldInfoMulti( $table, $field ) {
+ $tableWhere = '';
+ $field = strtoupper($field);
+ if (is_array($table)) {
+ $table = array_map( array( &$this, 'tableName' ), $table );
+ $tableWhere = 'IN (';
+ foreach($table as &$singleTable) {
+ $singleTable = strtoupper(trim( $singleTable, '"' ));
+ if (isset($this->mFieldInfoCache["$singleTable.$field"])) {
+ return $this->mFieldInfoCache["$singleTable.$field"];
+ }
+ $tableWhere .= '\''.$singleTable.'\',';
+ }
+ $tableWhere = rtrim($tableWhere, ',').')';
+ } else {
+ $table = strtoupper(trim( $this->tableName($table), '"' ));
+ if (isset($this->mFieldInfoCache["$table.$field"])) {
+ return $this->mFieldInfoCache["$table.$field"];
+ }
+ $tableWhere = '= \''.$table.'\'';
+ }
+
+ $fieldInfoStmt = oci_parse( $this->mConn, 'SELECT * FROM wiki_field_info_full WHERE table_name '.$tableWhere.' and column_name = \''.$field.'\'' );
+ if ( oci_execute( $fieldInfoStmt, OCI_DEFAULT ) === false ) {
+ $e = oci_error( $fieldInfoStmt );
+ $this->reportQueryError( $e['message'], $e['code'], 'fieldInfo QUERY', __METHOD__ );
+ return false;
+ }
+ $res = new ORAResult( $this, $fieldInfoStmt );
+ if ($res->numRows() == 0 ) {
+ if (is_array($table)) {
+ foreach($table as &$singleTable) {
+ $this->mFieldInfoCache["$singleTable.$field"] = false;
+ }
+ } else {
+ $this->mFieldInfoCache["$table.$field"] = false;
+ }
+ } else {
+ $fieldInfoTemp = new ORAField( $res->fetchRow() );
+ $table = $fieldInfoTemp->tableName();
+ $this->mFieldInfoCache["$table.$field"] = $fieldInfoTemp;
+ return $fieldInfoTemp;
+ }
}
function fieldInfo( $table, $field ) {
- return false; // XXX
+ if ( is_array( $table ) ) {
+ throw new DBUnexpectedError( $this, 'Database::fieldInfo called with table array!' );
+ }
+ return $this->fieldInfoMulti ($table, $field);
+ }
+
+ function fieldExists( $table, $field, $fname = 'DatabaseOracle::fieldExists' ) {
+ return (bool)$this->fieldInfo( $table, $field, $fname );
}
function begin( $fname = '' ) {
$this->mTrxLevel = 1;
}
+
function immediateCommit( $fname = '' ) {
return true;
}
+
function commit( $fname = '' ) {
- oci_commit($this->mConn);
+ oci_commit( $this->mConn );
$this->mTrxLevel = 0;
}
/* Not even sure why this is used in the main codebase... */
- function limitResultForUpdate($sql, $num) {
+ function limitResultForUpdate( $sql, $num ) {
return $sql;
}
- function strencode($s) {
- return str_replace("'", "''", $s);
+ /* defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; */
+ function sourceStream( $fp, $lineCallback = false, $resultCallback = false ) {
+ $cmd = '';
+ $done = false;
+ $dollarquote = false;
+
+ $replacements = array();
+
+ while ( ! feof( $fp ) ) {
+ if ( $lineCallback ) {
+ call_user_func( $lineCallback );
+ }
+ $line = trim( fgets( $fp, 1024 ) );
+ $sl = strlen( $line ) - 1;
+
+ if ( $sl < 0 ) {
+ continue;
+ }
+ if ( '-' == $line { 0 } && '-' == $line { 1 } ) {
+ continue;
+ }
+
+ // Allow dollar quoting for function declarations
+ if ( substr( $line, 0, 8 ) == '/*$mw$*/' ) {
+ if ( $dollarquote ) {
+ $dollarquote = false;
+ $done = true;
+ } else {
+ $dollarquote = true;
+ }
+ } elseif ( !$dollarquote ) {
+ if ( ';' == $line { $sl } && ( $sl < 2 || ';' != $line { $sl - 1 } ) ) {
+ $done = true;
+ $line = substr( $line, 0, $sl );
+ }
+ }
+
+ if ( $cmd != '' ) {
+ $cmd .= ' ';
+ }
+ $cmd .= "$line\n";
+
+ if ( $done ) {
+ $cmd = str_replace( ';;', ";", $cmd );
+ if ( strtolower( substr( $cmd, 0, 6 ) ) == 'define' ) {
+ if ( preg_match( '/^define\s*([^\s=]*)\s*=\s*\'\{\$([^\}]*)\}\'/', $cmd, $defines ) ) {
+ $replacements[$defines[2]] = $defines[1];
+ }
+ } else {
+ foreach ( $replacements as $mwVar => $scVar ) {
+ $cmd = str_replace( '&' . $scVar . '.', '{$' . $mwVar . '}', $cmd );
+ }
+
+ $cmd = $this->replaceVars( $cmd );
+ $res = $this->query( $cmd, __METHOD__ );
+ if ( $resultCallback ) {
+ call_user_func( $resultCallback, $res, $this );
+ }
+
+ if ( false === $res ) {
+ $err = $this->lastError();
+ return "Query \"{$cmd}\" failed with error code \"$err\".\n";
+ }
+ }
+
+ $cmd = '';
+ $done = false;
+ }
+ }
+ return true;
}
- function encodeBlob($b) {
- return new ORABlob($b);
+ function setup_database() {
+ global $wgVersion, $wgDBmwschema, $wgDBts2schema, $wgDBport, $wgDBuser;
+
+ $res = $this->sourceFile( "../maintenance/ora/tables.sql" );
+ if ($res === true) {
+ print " done.</li>\n";
+ } else {
+ print " <b>FAILED</b></li>\n";
+ dieout( htmlspecialchars( $res ) );
+ }
+
+ // Avoid the non-standard "REPLACE INTO" syntax
+ echo "<li>Populating interwiki table</li>\n";
+ $f = fopen( "../maintenance/interwiki.sql", 'r' );
+ if ( $f == false ) {
+ dieout( "Could not find the interwiki.sql file" );
+ }
+
+ // do it like the postgres :D
+ $SQL = "INSERT INTO ".$this->tableName('interwiki')." (iw_prefix,iw_url,iw_local) VALUES ";
+ while ( !feof( $f ) ) {
+ $line = fgets( $f, 1024 );
+ $matches = array();
+ if ( !preg_match( '/^\s*(\(.+?),(\d)\)/', $line, $matches ) ) {
+ continue;
+ }
+ $this->query( "$SQL $matches[1],$matches[2])" );
+ }
+
+ echo "<li>Table interwiki successfully populated</li>\n";
}
- function decodeBlob($b) {
- return $b; //return $b->load();
+
+ function strencode( $s ) {
+ return str_replace( "'", "''", $s );
}
function addQuotes( $s ) {
- global $wgLang;
- $s = $wgLang->checkTitleEncoding($s);
- return "'" . $this->strencode($s) . "'";
+ global $wgLang;
+ if ( isset( $wgLang->mLoaded ) && $wgLang->mLoaded ) {
+ $s = $wgLang->checkTitleEncoding( $s );
+ }
+ return "'" . $this->strencode( $s ) . "'";
}
function quote_ident( $s ) {
return $s;
}
- /* For now, does nothing */
- function selectDB( $db ) {
- return true;
+ function selectRow( $table, $vars, $conds, $fname = 'DatabaseOracle::selectRow', $options = array(), $join_conds = array() ) {
+ global $wgLang;
+
+ $conds2 = array();
+ $conds = ($conds != null && !is_array($conds)) ? array($conds) : $conds;
+ foreach ( $conds as $col => $val ) {
+ $col_info = $this->fieldInfoMulti( $table, $col );
+ $col_type = $col_info != false ? $col_info->type() : 'CONSTANT';
+ if ( $col_type == 'CLOB' ) {
+ $conds2['TO_CHAR(' . $col . ')'] = $wgLang->checkTitleEncoding( $val );
+ } elseif ( $col_type == 'VARCHAR2' && !mb_check_encoding( $val ) ) {
+ $conds2[$col] = $wgLang->checkTitleEncoding( $val );
+ } else {
+ $conds2[$col] = $val;
+ }
+ }
+
+ return parent::selectRow( $table, $vars, $conds2, $fname, $options, $join_conds );
}
/**
@@ -655,18 +1088,18 @@ echo "error!\n";
}
}
- if ( isset( $options['GROUP BY'] ) ) $preLimitTail .= " GROUP BY {$options['GROUP BY']}";
- if ( isset( $options['ORDER BY'] ) ) $preLimitTail .= " ORDER BY {$options['ORDER BY']}";
-
- if (isset($options['LIMIT'])) {
- // $tailOpts .= $this->limitResult('', $options['LIMIT'],
- // isset($options['OFFSET']) ? $options['OFFSET']
- // : false);
+ if ( isset( $options['GROUP BY'] ) ) {
+ $preLimitTail .= " GROUP BY {$options['GROUP BY']}";
+ }
+ if ( isset( $options['ORDER BY'] ) ) {
+ $preLimitTail .= " ORDER BY {$options['ORDER BY']}";
}
- #if ( isset( $noKeyOptions['FOR UPDATE'] ) ) $tailOpts .= ' FOR UPDATE';
- #if ( isset( $noKeyOptions['LOCK IN SHARE MODE'] ) ) $tailOpts .= ' LOCK IN SHARE MODE';
- if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) $startOpts .= 'DISTINCT';
+ # if ( isset( $noKeyOptions['FOR UPDATE'] ) ) $tailOpts .= ' FOR UPDATE';
+ # if ( isset( $noKeyOptions['LOCK IN SHARE MODE'] ) ) $tailOpts .= ' LOCK IN SHARE MODE';
+ if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) {
+ $startOpts .= 'DISTINCT';
+ }
if ( isset( $options['USE INDEX'] ) && ! is_array( $options['USE INDEX'] ) ) {
$useIndex = $this->useIndexClause( $options['USE INDEX'] );
@@ -677,13 +1110,46 @@ echo "error!\n";
return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
}
- public function setTimeout( $timeout ) {
- // @todo fixme no-op
+ public function delete( $table, $conds, $fname = 'DatabaseOracle::delete' ) {
+ global $wgLang;
+
+ if ( $wgLang != null ) {
+ $conds2 = array();
+ $conds = ($conds != null && !is_array($conds)) ? array($conds) : $conds;
+ foreach ( $conds as $col => $val ) {
+ $col_info = $this->fieldInfoMulti( $table, $col );
+ $col_type = $col_info != false ? $col_info->type() : 'CONSTANT';
+ if ( $col_type == 'CLOB' ) {
+ $conds2['TO_CHAR(' . $col . ')'] = $wgLang->checkTitleEncoding( $val );
+ } else {
+ if ( is_array( $val ) ) {
+ $conds2[$col] = $val;
+ foreach ( $conds2[$col] as &$val2 ) {
+ $val2 = $wgLang->checkTitleEncoding( $val2 );
+ }
+ } else {
+ $conds2[$col] = $wgLang->checkTitleEncoding( $val );
+ }
+ }
+ }
+
+ return parent::delete( $table, $conds2, $fname );
+ } else {
+ return parent::delete( $table, $conds, $fname );
+ }
}
- function ping() {
- wfDebug( "Function ping() not written for DatabaseOracle.php yet");
- return true;
+ function bitNot( $field ) {
+ // expecting bit-fields smaller than 4bytes
+ return 'BITNOT(' . $bitField . ')';
+ }
+
+ function bitAnd( $fieldLeft, $fieldRight ) {
+ return 'BITAND(' . $fieldLeft . ', ' . $fieldRight . ')';
+ }
+
+ function bitOr( $fieldLeft, $fieldRight ) {
+ return 'BITOR(' . $fieldLeft . ', ' . $fieldRight . ')';
}
/**
@@ -696,8 +1162,8 @@ echo "error!\n";
return 0;
}
- function setFakeSlaveLag( $lag ) {}
- function setFakeMaster( $enabled = true ) {}
+ function setFakeSlaveLag( $lag ) { }
+ function setFakeMaster( $enabled = true ) { }
function getDBname() {
return $this->mDBname;
@@ -706,19 +1172,28 @@ echo "error!\n";
function getServer() {
return $this->mServer;
}
-
- /**
- * No-op lock functions
- */
- public function lock( $lockName, $method ) {
- return true;
- }
- public function unlock( $lockName, $method ) {
- return true;
+
+ public function replaceVars( $ins ) {
+ $varnames = array( 'wgDBprefix' );
+ if ( $this->mFlags & DBO_SYSDBA ) {
+ $varnames[] = 'wgDBOracleDefTS';
+ $varnames[] = 'wgDBOracleTempTS';
+ }
+
+ // Ordinary variables
+ foreach ( $varnames as $var ) {
+ if ( isset( $GLOBALS[$var] ) ) {
+ $val = addslashes( $GLOBALS[$var] ); // FIXME: safety check?
+ $ins = str_replace( '{$' . $var . '}', $val, $ins );
+ $ins = str_replace( '/*$' . $var . '*/`', '`' . $val, $ins );
+ $ins = str_replace( '/*$' . $var . '*/', $val, $ins );
+ }
+ }
+
+ return parent::replaceVars( $ins );
}
-
+
public function getSearchEngine() {
- return "SearchOracle";
+ return 'SearchOracle';
}
-
} // end DatabaseOracle class
diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php
index c940ad09..9072a5b2 100644
--- a/includes/db/DatabasePostgres.php
+++ b/includes/db/DatabasePostgres.php
@@ -11,7 +11,7 @@ class PostgresField {
static function fromText($db, $table, $field) {
global $wgDBmwschema;
- $q = <<<END
+ $q = <<<SQL
SELECT
CASE WHEN typname = 'int2' THEN 'smallint'
WHEN typname = 'int4' THEN 'integer'
@@ -27,7 +27,7 @@ AND atttypid=pg_type.oid
AND nspname=%s
AND relname=%s
AND attname=%s;
-END;
+SQL;
$res = $db->query(sprintf($q,
$db->addQuotes($wgDBmwschema),
$db->addQuotes($table),
@@ -68,11 +68,11 @@ END;
/**
* @ingroup Database
*/
-class DatabasePostgres extends Database {
- var $mInsertId = NULL;
- var $mLastResult = NULL;
- var $numeric_version = NULL;
- var $mAffectedRows = NULL;
+class DatabasePostgres extends DatabaseBase {
+ var $mInsertId = null;
+ var $mLastResult = null;
+ var $numeric_version = null;
+ var $mAffectedRows = null;
function DatabasePostgres($server = false, $user = false, $password = false, $dbName = false,
$failFunction = false, $flags = 0 )
@@ -84,6 +84,10 @@ class DatabasePostgres extends Database {
}
+ function getType() {
+ return 'postgres';
+ }
+
function cascadingDeletes() {
return true;
}
@@ -132,8 +136,8 @@ class DatabasePostgres extends Database {
global $wgDBport;
- if (!strlen($user)) { ## e.g. the class is being loaded
- return;
+ if (!strlen($user)) { ## e.g. the class is being loaded
+ return;
}
$this->close();
$this->mServer = $server;
@@ -152,7 +156,7 @@ class DatabasePostgres extends Database {
if ($port!=false && $port!="") {
$connectVars['port'] = $port;
}
- $connectString = $this->makeConnectionString( $connectVars );
+ $connectString = $this->makeConnectionString( $connectVars, PGSQL_CONNECT_FORCE_NEW );
$this->installErrorHandler();
$this->mConn = pg_connect( $connectString );
@@ -578,7 +582,7 @@ class DatabasePostgres extends Database {
$sql = mb_convert_encoding($sql,'UTF-8');
}
$this->mLastResult = pg_query( $this->mConn, $sql);
- $this->mAffectedRows = NULL; // use pg_affected_rows(mLastResult)
+ $this->mAffectedRows = null; // use pg_affected_rows(mLastResult)
return $this->mLastResult;
}
@@ -713,7 +717,7 @@ class DatabasePostgres extends Database {
$sql = "SELECT indexname FROM pg_indexes WHERE tablename='$table'";
$res = $this->query( $sql, $fname );
if ( !$res ) {
- return NULL;
+ return null;
}
while ( $row = $this->fetchObject( $res ) ) {
if ( $row->indexname == $this->indexName( $index ) ) {
@@ -730,7 +734,7 @@ class DatabasePostgres extends Database {
")'";
$res = $this->query( $sql, $fname );
if ( !$res )
- return NULL;
+ return null;
while ($row = $this->fetchObject( $res ))
return true;
return false;
@@ -873,6 +877,81 @@ class DatabasePostgres extends Database {
}
+ /**
+ * INSERT SELECT wrapper
+ * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
+ * Source items may be literals rather then field names, but strings should be quoted with Database::addQuotes()
+ * $conds may be "*" to copy the whole table
+ * srcTable may be an array of tables.
+ * @todo FIXME: implement this a little better (seperate select/insert)?
+ */
+ function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabasePostgres::insertSelect',
+ $insertOptions = array(), $selectOptions = array() )
+ {
+ $destTable = $this->tableName( $destTable );
+
+ // If IGNORE is set, we use savepoints to emulate mysql's behavior
+ $ignore = in_array( 'IGNORE', $insertOptions ) ? 'mw' : '';
+
+ if( is_array( $insertOptions ) ) {
+ $insertOptions = implode( ' ', $insertOptions );
+ }
+ if( !is_array( $selectOptions ) ) {
+ $selectOptions = array( $selectOptions );
+ }
+ list( $startOpts, $useIndex, $tailOpts ) = $this->makeSelectOptions( $selectOptions );
+ if( is_array( $srcTable ) ) {
+ $srcTable = implode( ',', array_map( array( &$this, 'tableName' ), $srcTable ) );
+ } else {
+ $srcTable = $this->tableName( $srcTable );
+ }
+
+ // If we are not in a transaction, we need to be for savepoint trickery
+ $didbegin = 0;
+ if ( $ignore ) {
+ if( !$this->mTrxLevel ) {
+ $this->begin();
+ $didbegin = 1;
+ }
+ $olde = error_reporting( 0 );
+ $numrowsinserted = 0;
+ pg_query( $this->mConn, "SAVEPOINT $ignore");
+ }
+
+ $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
+ " SELECT $startOpts " . implode( ',', $varMap ) .
+ " FROM $srcTable $useIndex";
+
+ if ( $conds != '*') {
+ $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
+ }
+
+ $sql .= " $tailOpts";
+
+ $res = (bool)$this->query( $sql, $fname, $ignore );
+ if( $ignore ) {
+ $bar = pg_last_error();
+ if( $bar != false ) {
+ pg_query( $this->mConn, "ROLLBACK TO $ignore" );
+ } else {
+ pg_query( $this->mConn, "RELEASE $ignore" );
+ $numrowsinserted++;
+ }
+ $olde = error_reporting( $olde );
+ if( $didbegin ) {
+ $this->commit();
+ }
+
+ // Set the affected row count for the whole operation
+ $this->mAffectedRows = $numrowsinserted;
+
+ // IGNORE always returns true
+ return true;
+ }
+
+ return $res;
+ }
+
function tableName( $name ) {
# Replace reserved words with better ones
switch( $name ) {
@@ -898,7 +977,7 @@ class DatabasePostgres extends Database {
}
/**
- * Return the current value of a sequence. Assumes it has ben nextval'ed in this session.
+ * Return the current value of a sequence. Assumes it has been nextval'ed in this session.
*/
function currentSequenceValue( $seqName ) {
$safeseq = preg_replace( "/'/", "''", $seqName );
@@ -909,13 +988,6 @@ class DatabasePostgres extends Database {
return $currval;
}
- /**
- * Postgres does not have a "USE INDEX" clause, so return an empty string
- */
- function useIndexClause( $index ) {
- return '';
- }
-
# REPLACE query wrapper
# Postgres simulates this with a DELETE followed by INSERT
# $row is the row to insert, an associative array
@@ -1009,31 +1081,18 @@ class DatabasePostgres extends Database {
return $size;
}
- function lowPriorityOption() {
- return '';
- }
-
function limitResult($sql, $limit, $offset=false) {
return "$sql LIMIT $limit ".(is_numeric($offset)?" OFFSET {$offset} ":"");
}
- /**
- * Returns an SQL expression for a simple conditional.
- * Uses CASE on Postgres
- *
- * @param $cond String: SQL expression which will result in a boolean value
- * @param $trueVal String: SQL expression to return if true
- * @param $falseVal String: SQL expression to return if false
- * @return String: SQL fragment
- */
- function conditional( $cond, $trueVal, $falseVal ) {
- return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
- }
-
function wasDeadlock() {
return $this->lastErrno() == '40P01';
}
+ function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabasePostgres::duplicateTableStructure' ) {
+ return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName (LIKE $oldName INCLUDING DEFAULTS)", $fname );
+ }
+
function timestamp( $ts=0 ) {
return wfTimestamp(TS_POSTGRES,$ts);
}
@@ -1126,18 +1185,18 @@ class DatabasePostgres extends Database {
function triggerExists( $table, $trigger ) {
global $wgDBmwschema;
- $q = <<<END
+ $q = <<<SQL
SELECT 1 FROM pg_class, pg_namespace, pg_trigger
WHERE relnamespace=pg_namespace.oid AND relkind='r'
AND tgrelid=pg_class.oid
AND nspname=%s AND relname=%s AND tgname=%s
-END;
+SQL;
$res = $this->query(sprintf($q,
$this->addQuotes($wgDBmwschema),
$this->addQuotes($table),
$this->addQuotes($trigger)));
if (!$res)
- return NULL;
+ return null;
$rows = $res->numRows();
$this->freeResult( $res );
return $rows;
@@ -1161,7 +1220,7 @@ END;
$this->addQuotes($constraint));
$res = $this->query($SQL);
if (!$res)
- return NULL;
+ return null;
$rows = $res->numRows();
$this->freeResult($res);
return $rows;
@@ -1252,11 +1311,17 @@ END;
if (!$res) {
print "<b>FAILED</b>. Make sure that the user \"" . htmlspecialchars( $wgDBuser ) .
"\" can write to the schema \"" . htmlspecialchars( $wgDBmwschema ) . "\"</li>\n";
- dieout("</ul>");
+ dieout(""); # Will close the main list <ul> and finish the page.
}
$this->doQuery("DROP TABLE $safeschema.$ctest");
- $res = dbsource( "../maintenance/postgres/tables.sql", $this);
+ $res = $this->sourceFile( "../maintenance/postgres/tables.sql" );
+ if ($res === true) {
+ print " done.</li>\n";
+ } else {
+ print " <b>FAILED</b></li>\n";
+ dieout( htmlspecialchars( $res ) );
+ }
## Update version information
$mwv = $this->addQuotes($wgVersion);
@@ -1274,10 +1339,13 @@ END;
"WHERE type = 'Creation'";
$this->query($SQL);
+ echo "<li>Populating interwiki table... ";
+
## Avoid the non-standard "REPLACE INTO" syntax
$f = fopen( "../maintenance/interwiki.sql", 'r' );
if ($f == false ) {
- dieout( "<li>Could not find the interwiki.sql file");
+ print "<b>FAILED</b></li>";
+ dieout( "Could not find the interwiki.sql file" );
}
## We simply assume it is already empty as we have just created it
$SQL = "INSERT INTO interwiki(iw_prefix,iw_url,iw_local) VALUES ";
@@ -1289,7 +1357,7 @@ END;
}
$this->query("$SQL $matches[1],$matches[2])");
}
- print " (table interwiki successfully populated)...\n";
+ print " successfully populated.</li>\n";
$this->doQuery("COMMIT");
}
@@ -1324,11 +1392,6 @@ END;
return '"' . preg_replace( '/"/', '""', $s) . '"';
}
- /* For now, does nothing */
- function selectDB( $db ) {
- return true;
- }
-
/**
* Postgres specific version of replaceVars.
* Calls the parent version in Database.php
@@ -1392,15 +1455,6 @@ END;
return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
}
- public function setTimeout( $timeout ) {
- // @todo fixme no-op
- }
-
- function ping() {
- wfDebug( "Function ping() not written for DatabasePostgres.php yet");
- return true;
- }
-
/**
* How lagged is this slave?
*
@@ -1425,17 +1479,7 @@ END;
return implode( ' || ', $stringList );
}
- /* These are not used yet, but we know we don't want the default version */
-
- public function lock( $lockName, $method ) {
- return true;
- }
- public function unlock( $lockName, $method ) {
- return true;
- }
-
public function getSearchEngine() {
return "SearchPostgres";
}
-
} // end DatabasePostgres class
diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php
index 455c0b48..c149cf04 100644
--- a/includes/db/DatabaseSqlite.php
+++ b/includes/db/DatabaseSqlite.php
@@ -10,7 +10,7 @@
/**
* @ingroup Database
*/
-class DatabaseSqlite extends Database {
+class DatabaseSqlite extends DatabaseBase {
var $mAffectedRows;
var $mLastResult;
@@ -18,110 +18,162 @@ class DatabaseSqlite extends Database {
var $mName;
/**
- * Constructor
+ * Constructor.
+ * Parameters $server, $user and $password are not used.
*/
- function __construct($server = false, $user = false, $password = false, $dbName = false, $failFunction = false, $flags = 0) {
- global $wgOut,$wgSQLiteDataDir, $wgSQLiteDataDirMode;
- if ("$wgSQLiteDataDir" == '') $wgSQLiteDataDir = dirname($_SERVER['DOCUMENT_ROOT']).'/data';
- if (!is_dir($wgSQLiteDataDir)) wfMkdirParents( $wgSQLiteDataDir, $wgSQLiteDataDirMode );
+ function __construct( $server = false, $user = false, $password = false, $dbName = false, $failFunction = false, $flags = 0 ) {
$this->mFailFunction = $failFunction;
$this->mFlags = $flags;
- $this->mDatabaseFile = "$wgSQLiteDataDir/$dbName.sqlite";
$this->mName = $dbName;
- $this->open($server, $user, $password, $dbName);
+ $this->open( $server, $user, $password, $dbName );
+ }
+
+ function getType() {
+ return 'sqlite';
}
/**
- * todo: check if these should be true like parent class
+ * @todo: check if it should be true like parent class
*/
function implicitGroupby() { return false; }
- function implicitOrderby() { return false; }
- static function newFromParams($server, $user, $password, $dbName, $failFunction = false, $flags = 0) {
- return new DatabaseSqlite($server, $user, $password, $dbName, $failFunction, $flags);
+ static function newFromParams( $server, $user, $password, $dbName, $failFunction = false, $flags = 0 ) {
+ return new DatabaseSqlite( $server, $user, $password, $dbName, $failFunction, $flags );
}
/** Open an SQLite database and return a resource handle to it
* NOTE: only $dbName is used, the other parameters are irrelevant for SQLite databases
*/
- function open($server,$user,$pass,$dbName) {
- $this->mConn = false;
- if ($dbName) {
- $file = $this->mDatabaseFile;
- try {
- if ( $this->mFlags & DBO_PERSISTENT ) {
- $this->mConn = new PDO( "sqlite:$file", $user, $pass,
- array( PDO::ATTR_PERSISTENT => true ) );
- } else {
- $this->mConn = new PDO( "sqlite:$file", $user, $pass );
- }
- } catch ( PDOException $e ) {
- $err = $e->getMessage();
- }
- if ( $this->mConn === false ) {
- wfDebug( "DB connection error: $err\n" );
- if ( !$this->mFailFunction ) {
- throw new DBConnectionError( $this, $err );
- } else {
- return false;
- }
+ function open( $server, $user, $pass, $dbName ) {
+ global $wgSQLiteDataDir;
- }
- $this->mOpened = $this->mConn;
- # set error codes only, don't raise exceptions
- $this->mConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
+ $fileName = self::generateFileName( $wgSQLiteDataDir, $dbName );
+ if ( !is_readable( $fileName ) ) {
+ throw new DBConnectionError( $this, "SQLite database not accessible" ); $this->mConn = false;
}
+ $this->openFile( $fileName );
return $this->mConn;
}
/**
+ * Opens a database file
+ * @return SQL connection or false if failed
+ */
+ function openFile( $fileName ) {
+ $this->mDatabaseFile = $fileName;
+ try {
+ if ( $this->mFlags & DBO_PERSISTENT ) {
+ $this->mConn = new PDO( "sqlite:$fileName", '', '',
+ array( PDO::ATTR_PERSISTENT => true ) );
+ } else {
+ $this->mConn = new PDO( "sqlite:$fileName", '', '' );
+ }
+ } catch ( PDOException $e ) {
+ $err = $e->getMessage();
+ }
+ if ( $this->mConn === false ) {
+ wfDebug( "DB connection error: $err\n" );
+ if ( !$this->mFailFunction ) {
+ throw new DBConnectionError( $this, $err );
+ } else {
+ return false;
+ }
+
+ }
+ $this->mOpened = !!$this->mConn;
+ # set error codes only, don't raise exceptions
+ if ( $this->mOpened ) {
+ $this->mConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
+ return true;
+ }
+ }
+
+ /**
* Close an SQLite database
*/
function close() {
$this->mOpened = false;
- if (is_object($this->mConn)) {
- if ($this->trxLevel()) $this->immediateCommit();
+ if ( is_object( $this->mConn ) ) {
+ if ( $this->trxLevel() ) $this->commit();
$this->mConn = null;
}
return true;
}
/**
+ * Generates a database file name. Explicitly public for installer.
+ * @param $dir String: Directory where database resides
+ * @param $dbName String: Database name
+ * @return String
+ */
+ public static function generateFileName( $dir, $dbName ) {
+ return "$dir/$dbName.sqlite";
+ }
+
+ /**
+ * Returns version of currently supported SQLite fulltext search module or false if none present.
+ * @return String
+ */
+ function getFulltextSearchModule() {
+ $table = 'dummy_search_test';
+ $this->query( "DROP TABLE IF EXISTS $table", __METHOD__ );
+ if ( $this->query( "CREATE VIRTUAL TABLE $table USING FTS3(dummy_field)", __METHOD__, true ) ) {
+ $this->query( "DROP TABLE IF EXISTS $table", __METHOD__ );
+ return 'FTS3';
+ }
+ return false;
+ }
+
+ /**
* SQLite doesn't allow buffered results or data seeking etc, so we'll use fetchAll as the result
*/
- function doQuery($sql) {
- $res = $this->mConn->query($sql);
- if ($res === false) {
+ function doQuery( $sql ) {
+ $res = $this->mConn->query( $sql );
+ if ( $res === false ) {
return false;
} else {
$r = $res instanceof ResultWrapper ? $res->result : $res;
$this->mAffectedRows = $r->rowCount();
- $res = new ResultWrapper($this,$r->fetchAll());
+ $res = new ResultWrapper( $this, $r->fetchAll() );
}
return $res;
}
- function freeResult($res) {
- if ($res instanceof ResultWrapper) $res->result = NULL; else $res = NULL;
+ function freeResult( $res ) {
+ if ( $res instanceof ResultWrapper )
+ $res->result = null;
+ else
+ $res = null;
}
- function fetchObject($res) {
- if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res;
- $cur = current($r);
- if (is_array($cur)) {
- next($r);
+ function fetchObject( $res ) {
+ if ( $res instanceof ResultWrapper )
+ $r =& $res->result;
+ else
+ $r =& $res;
+
+ $cur = current( $r );
+ if ( is_array( $cur ) ) {
+ next( $r );
$obj = new stdClass;
- foreach ($cur as $k => $v) if (!is_numeric($k)) $obj->$k = $v;
+ foreach ( $cur as $k => $v )
+ if ( !is_numeric( $k ) )
+ $obj->$k = $v;
+
return $obj;
}
return false;
}
- function fetchRow($res) {
- if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res;
- $cur = current($r);
- if (is_array($cur)) {
- next($r);
+ function fetchRow( $res ) {
+ if ( $res instanceof ResultWrapper )
+ $r =& $res->result;
+ else
+ $r =& $res;
+
+ $cur = current( $r );
+ if ( is_array( $cur ) ) {
+ next( $r );
return $cur;
}
return false;
@@ -130,20 +182,20 @@ class DatabaseSqlite extends Database {
/**
* The PDO::Statement class implements the array interface so count() will work
*/
- function numRows($res) {
+ function numRows( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
- return count($r);
+ return count( $r );
}
- function numFields($res) {
+ function numFields( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
- return is_array($r) ? count($r[0]) : 0;
+ return is_array( $r ) ? count( $r[0] ) : 0;
}
- function fieldName($res,$n) {
+ function fieldName( $res, $n ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
- if (is_array($r)) {
- $keys = array_keys($r[0]);
+ if ( is_array( $r ) ) {
+ $keys = array_keys( $r[0] );
return $keys[$n];
}
return false;
@@ -152,8 +204,8 @@ class DatabaseSqlite extends Database {
/**
* Use MySQL's naming (accounts for prefix etc) but remove surrounding backticks
*/
- function tableName($name) {
- return str_replace('`','',parent::tableName($name));
+ function tableName( $name ) {
+ return str_replace( '`', '', parent::tableName( $name ) );
}
/**
@@ -170,20 +222,26 @@ class DatabaseSqlite extends Database {
return $this->mConn->lastInsertId();
}
- function dataSeek($res,$row) {
- if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res;
- reset($r);
- if ($row > 0) for ($i = 0; $i < $row; $i++) next($r);
+ function dataSeek( $res, $row ) {
+ if ( $res instanceof ResultWrapper )
+ $r =& $res->result;
+ else
+ $r =& $res;
+ reset( $r );
+ if ( $row > 0 )
+ for ( $i = 0; $i < $row; $i++ )
+ next( $r );
}
function lastError() {
- if (!is_object($this->mConn)) return "Cannot return last error, no db connection";
+ if ( !is_object( $this->mConn ) )
+ return "Cannot return last error, no db connection";
$e = $this->mConn->errorInfo();
- return isset($e[2]) ? $e[2] : '';
+ return isset( $e[2] ) ? $e[2] : '';
}
function lastErrno() {
- if (!is_object($this->mConn)) {
+ if ( !is_object( $this->mConn ) ) {
return "Cannot return last error, no db connection";
} else {
$info = $this->mConn->errorInfo();
@@ -200,7 +258,7 @@ class DatabaseSqlite extends Database {
* Returns false if the index does not exist
* - if errors are explicitly ignored, returns NULL on failure
*/
- function indexInfo($table, $index, $fname = 'Database::indexExists') {
+ function indexInfo( $table, $index, $fname = 'DatabaseSqlite::indexExists' ) {
$sql = 'PRAGMA index_info(' . $this->addQuotes( $this->indexName( $index ) ) . ')';
$res = $this->query( $sql, $fname );
if ( !$res ) {
@@ -216,8 +274,8 @@ class DatabaseSqlite extends Database {
return $info;
}
- function indexUnique($table, $index, $fname = 'Database::indexUnique') {
- $row = $this->selectRow( 'sqlite_master', '*',
+ function indexUnique( $table, $index, $fname = 'DatabaseSqlite::indexUnique' ) {
+ $row = $this->selectRow( 'sqlite_master', '*',
array(
'type' => 'index',
'name' => $this->indexName( $index ),
@@ -239,67 +297,81 @@ class DatabaseSqlite extends Database {
/**
* Filter the options used in SELECT statements
*/
- function makeSelectOptions($options) {
- foreach ($options as $k => $v) if (is_numeric($k) && $v == 'FOR UPDATE') $options[$k] = '';
- return parent::makeSelectOptions($options);
+ function makeSelectOptions( $options ) {
+ foreach ( $options as $k => $v )
+ if ( is_numeric( $k ) && $v == 'FOR UPDATE' )
+ $options[$k] = '';
+ return parent::makeSelectOptions( $options );
}
/**
- * Based on MySQL method (parent) with some prior SQLite-sepcific adjustments
+ * Based on generic method (parent) with some prior SQLite-sepcific adjustments
*/
- function insert($table, $a, $fname = 'DatabaseSqlite::insert', $options = array()) {
- if (!count($a)) return true;
- if (!is_array($options)) $options = array($options);
+ function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
+ if ( !count( $a ) ) return true;
+ if ( !is_array( $options ) ) $options = array( $options );
# SQLite uses OR IGNORE not just IGNORE
- foreach ($options as $k => $v) if ($v == 'IGNORE') $options[$k] = 'OR IGNORE';
+ foreach ( $options as $k => $v )
+ if ( $v == 'IGNORE' )
+ $options[$k] = 'OR IGNORE';
# SQLite can't handle multi-row inserts, so divide up into multiple single-row inserts
- if (isset($a[0]) && is_array($a[0])) {
+ if ( isset( $a[0] ) && is_array( $a[0] ) ) {
$ret = true;
- foreach ($a as $k => $v) if (!parent::insert($table,$v,"$fname/multi-row",$options)) $ret = false;
+ foreach ( $a as $k => $v )
+ if ( !parent::insert( $table, $v, "$fname/multi-row", $options ) )
+ $ret = false;
+ } else {
+ $ret = parent::insert( $table, $a, "$fname/single-row", $options );
}
- else $ret = parent::insert($table,$a,"$fname/single-row",$options);
return $ret;
}
- /**
- * SQLite does not have a "USE INDEX" clause, so return an empty string
- */
- function useIndexClause($index) {
- return '';
+ function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseSqlite::replace' ) {
+ if ( !count( $rows ) ) return true;
+
+ # SQLite can't handle multi-row replaces, so divide up into multiple single-row queries
+ if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
+ $ret = true;
+ foreach ( $rows as $k => $v )
+ if ( !parent::replace( $table, $uniqueIndexes, $v, "$fname/multi-row" ) )
+ $ret = false;
+ } else {
+ $ret = parent::replace( $table, $uniqueIndexes, $rows, "$fname/single-row" );
+ }
+
+ return $ret;
}
/**
* Returns the size of a text field, or -1 for "unlimited"
* In SQLite this is SQLITE_MAX_LENGTH, by default 1GB. No way to query it though.
*/
- function textFieldSize($table, $field) {
- return -1;
+ function textFieldSize( $table, $field ) {
+ return - 1;
}
- /**
- * No low priority option in SQLite
- */
- function lowPriorityOption() {
- return '';
+ function unionSupportsOrderAndLimit() {
+ return false;
}
- /**
- * Returns an SQL expression for a simple conditional.
- * - uses CASE on SQLite
- */
- function conditional($cond, $trueVal, $falseVal) {
- return " (CASE WHEN $cond THEN $trueVal ELSE $falseVal END) ";
+ function unionQueries( $sqls, $all ) {
+ $glue = $all ? ' UNION ALL ' : ' UNION ';
+ return implode( $glue, $sqls );
}
function wasDeadlock() {
- return $this->lastErrno() == SQLITE_BUSY;
+ return $this->lastErrno() == 5; // SQLITE_BUSY
}
function wasErrorReissuable() {
- return $this->lastErrno() == SQLITE_SCHEMA;
+ return $this->lastErrno() == 17; // SQLITE_SCHEMA;
+ }
+
+ function wasReadOnlyError() {
+ return $this->lastErrno() == 8; // SQLITE_READONLY;
}
/**
@@ -313,15 +385,14 @@ class DatabaseSqlite extends Database {
* @return string Version information from the database
*/
function getServerVersion() {
- global $wgContLang;
- $ver = $this->mConn->getAttribute(PDO::ATTR_SERVER_VERSION);
+ $ver = $this->mConn->getAttribute( PDO::ATTR_SERVER_VERSION );
return $ver;
}
/**
* Query whether a given column exists in the mediawiki schema
*/
- function fieldExists($table, $field, $fname = '') {
+ function fieldExists( $table, $field, $fname = '' ) {
$info = $this->fieldInfo( $table, $field );
return (bool)$info;
}
@@ -330,7 +401,7 @@ class DatabaseSqlite extends Database {
* Get information about a given field
* Returns false if the field does not exist.
*/
- function fieldInfo($table, $field) {
+ function fieldInfo( $table, $field ) {
$tableName = $this->tableName( $table );
$sql = 'PRAGMA table_info(' . $this->addQuotes( $tableName ) . ')';
$res = $this->query( $sql, __METHOD__ );
@@ -343,73 +414,60 @@ class DatabaseSqlite extends Database {
}
function begin( $fname = '' ) {
- if ($this->mTrxLevel == 1) $this->commit();
+ if ( $this->mTrxLevel == 1 ) $this->commit();
$this->mConn->beginTransaction();
$this->mTrxLevel = 1;
}
function commit( $fname = '' ) {
- if ($this->mTrxLevel == 0) return;
+ if ( $this->mTrxLevel == 0 ) return;
$this->mConn->commit();
$this->mTrxLevel = 0;
}
function rollback( $fname = '' ) {
- if ($this->mTrxLevel == 0) return;
+ if ( $this->mTrxLevel == 0 ) return;
$this->mConn->rollBack();
$this->mTrxLevel = 0;
}
- function limitResultForUpdate($sql, $num) {
+ function limitResultForUpdate( $sql, $num ) {
return $this->limitResult( $sql, $num );
}
- function strencode($s) {
- return substr($this->addQuotes($s),1,-1);
+ function strencode( $s ) {
+ return substr( $this->addQuotes( $s ), 1, - 1 );
}
- function encodeBlob($b) {
+ function encodeBlob( $b ) {
return new Blob( $b );
}
- function decodeBlob($b) {
- if ($b instanceof Blob) {
+ function decodeBlob( $b ) {
+ if ( $b instanceof Blob ) {
$b = $b->fetch();
}
return $b;
}
- function addQuotes($s) {
+ function addQuotes( $s ) {
if ( $s instanceof Blob ) {
return "x'" . bin2hex( $s->fetch() ) . "'";
} else {
- return $this->mConn->quote($s);
+ return $this->mConn->quote( $s );
}
}
- function quote_ident($s) { return $s; }
-
- /**
- * Not possible in SQLite
- * We have ATTACH_DATABASE but that requires database selectors before the
- * table names and in any case is really a different concept to MySQL's USE
- */
- function selectDB($db) {
- if ( $db != $this->mName ) {
- throw new MWException( 'selectDB is not implemented in SQLite' );
- }
+ function quote_ident( $s ) {
+ return $s;
}
- /**
- * not done
- */
- public function setTimeout($timeout) { return; }
-
- /**
- * No-op for a non-networked database
- */
- function ping() {
- return true;
+ function buildLike() {
+ $params = func_get_args();
+ if ( count( $params ) > 0 && is_array( $params[0] ) ) {
+ $params = $params[0];
+ }
+ return parent::buildLike( $params ) . "ESCAPE '\' ";
}
/**
@@ -424,40 +482,33 @@ class DatabaseSqlite extends Database {
* - this is the same way PostgreSQL works, MySQL reads in tables.sql and interwiki.sql using dbsource (which calls db->sourceFile)
*/
public function setup_database() {
- global $IP,$wgSQLiteDataDir,$wgDBTableOptions;
- $wgDBTableOptions = '';
+ global $IP;
# Process common MySQL/SQLite table definitions
$err = $this->sourceFile( "$IP/maintenance/tables.sql" );
- if ($err !== true) {
- $this->reportQueryError($err,0,$sql,__FUNCTION__);
- exit( 1 );
+ if ( $err !== true ) {
+ echo " <b>FAILED</b></li>";
+ dieout( htmlspecialchars( $err ) );
}
+ echo " done.</li>";
# Use DatabasePostgres's code to populate interwiki from MySQL template
- $f = fopen("$IP/maintenance/interwiki.sql",'r');
- if ($f == false) dieout("<li>Could not find the interwiki.sql file");
+ $f = fopen( "$IP/maintenance/interwiki.sql", 'r' );
+ if ( $f == false ) {
+ dieout( "Could not find the interwiki.sql file." );
+ }
+
$sql = "INSERT INTO interwiki(iw_prefix,iw_url,iw_local) VALUES ";
- while (!feof($f)) {
- $line = fgets($f,1024);
+ while ( !feof( $f ) ) {
+ $line = fgets( $f, 1024 );
$matches = array();
- if (!preg_match('/^\s*(\(.+?),(\d)\)/', $line, $matches)) continue;
- $this->query("$sql $matches[1],$matches[2])");
+ if ( !preg_match( '/^\s*(\(.+?),(\d)\)/', $line, $matches ) ) continue;
+ $this->query( "$sql $matches[1],$matches[2])" );
}
}
- /**
- * No-op lock functions
- */
- public function lock( $lockName, $method ) {
- return true;
- }
- public function unlock( $lockName, $method ) {
- return true;
- }
-
public function getSearchEngine() {
- return "SearchEngineDummy";
+ return "SearchSqlite";
}
/**
@@ -471,23 +522,33 @@ class DatabaseSqlite extends Database {
protected function replaceVars( $s ) {
$s = parent::replaceVars( $s );
- if ( preg_match( '/^\s*CREATE TABLE/i', $s ) ) {
+ if ( preg_match( '/^\s*(CREATE|ALTER) TABLE/i', $s ) ) {
// CREATE TABLE hacks to allow schema file sharing with MySQL
-
+
// binary/varbinary column type -> blob
- $s = preg_replace( '/\b(var)?binary(\(\d+\))/i', 'blob\1', $s );
+ $s = preg_replace( '/\b(var)?binary(\(\d+\))/i', 'BLOB', $s );
// no such thing as unsigned
- $s = preg_replace( '/\bunsigned\b/i', '', $s );
- // INT -> INTEGER for primary keys
- $s = preg_replacE( '/\bint\b/i', 'integer', $s );
+ $s = preg_replace( '/\b(un)?signed\b/i', '', $s );
+ // INT -> INTEGER
+ $s = preg_replace( '/\b(tiny|small|medium|big|)int(\([\s\d]*\)|\b)/i', 'INTEGER', $s );
+ // varchar -> TEXT
+ $s = preg_replace( '/\bvarchar\(\d+\)/i', 'TEXT', $s );
+ // TEXT normalization
+ $s = preg_replace( '/\b(tiny|medium|long)text\b/i', 'TEXT', $s );
+ // BLOB normalization
+ $s = preg_replace( '/\b(tiny|small|medium|long|)blob\b/i', 'BLOB', $s );
+ // BOOL -> INTEGER
+ $s = preg_replace( '/\bbool(ean)?\b/i', 'INTEGER', $s );
+ // DATETIME -> TEXT
+ $s = preg_replace( '/\b(datetime|timestamp)\b/i', 'TEXT', $s );
// No ENUM type
- $s = preg_replace( '/enum\([^)]*\)/i', 'blob', $s );
+ $s = preg_replace( '/enum\([^)]*\)/i', 'BLOB', $s );
// binary collation type -> nothing
$s = preg_replace( '/\bbinary\b/i', '', $s );
// auto_increment -> autoincrement
- $s = preg_replace( '/\bauto_increment\b/i', 'autoincrement', $s );
+ $s = preg_replace( '/\bauto_increment\b/i', 'AUTOINCREMENT', $s );
// No explicit options
- $s = preg_replace( '/\)[^)]*$/', ')', $s );
+ $s = preg_replace( '/\)[^);]*(;?)\s*$/', ')\1', $s );
} elseif ( preg_match( '/^\s*CREATE (\s*(?:UNIQUE|FULLTEXT)\s+)?INDEX/i', $s ) ) {
// No truncated indexes
$s = preg_replace( '/\(\d+\)/', '', $s );
@@ -504,9 +565,31 @@ class DatabaseSqlite extends Database {
return '(' . implode( ') || (', $stringList ) . ')';
}
+ function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseSqlite::duplicateTableStructure' ) {
+ $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name='$oldName' AND type='table'", $fname );
+ $obj = $this->fetchObject( $res );
+ if ( !$obj ) {
+ throw new MWException( "Couldn't retrieve structure for table $oldName" );
+ }
+ $sql = $obj->sql;
+ $sql = preg_replace( '/\b' . preg_quote( $oldName ) . '\b/', $newName, $sql, 1 );
+ return $this->query( $sql, $fname );
+ }
+
} // end DatabaseSqlite class
/**
+ * This class allows simple acccess to a SQLite database independently from main database settings
+ * @ingroup Database
+ */
+class DatabaseSqliteStandalone extends DatabaseSqlite {
+ public function __construct( $fileName, $flags = 0 ) {
+ $this->mFlags = $flags;
+ $this->openFile( $fileName );
+ }
+}
+
+/**
* @ingroup Database
*/
class SQLiteField {
@@ -545,10 +628,9 @@ class SQLiteField {
# isKey(), isMultipleKey() not implemented, MySQL-specific concept.
# Suggest removal from base class [TS]
-
+
function type() {
return $this->info->type;
}
} // end SQLiteField
-
diff --git a/includes/db/LBFactory.php b/includes/db/LBFactory.php
index 3876d71f..10c87133 100644
--- a/includes/db/LBFactory.php
+++ b/includes/db/LBFactory.php
@@ -25,7 +25,7 @@ abstract class LBFactory {
/**
* Shut down, close connections and destroy the cached instance.
- *
+ *
*/
static function destroyInstance() {
if ( self::$instance ) {
@@ -41,7 +41,7 @@ abstract class LBFactory {
abstract function __construct( $conf );
/**
- * Create a new load balancer object. The resulting object will be untracked,
+ * Create a new load balancer object. The resulting object will be untracked,
* not chronology-protected, and the caller is responsible for cleaning it up.
*
* @param string $wiki Wiki ID, or false for the current wiki
@@ -58,8 +58,8 @@ abstract class LBFactory {
abstract function getMainLB( $wiki = false );
/*
- * Create a new load balancer for external storage. The resulting object will be
- * untracked, not chronology-protected, and the caller is responsible for
+ * Create a new load balancer for external storage. The resulting object will be
+ * untracked, not chronology-protected, and the caller is responsible for
* cleaning it up.
*
* @param string $cluster External storage cluster, or false for core
@@ -142,8 +142,8 @@ class LBFactory_Simple extends LBFactory {
}
return new LoadBalancer( array(
- 'servers' => $servers,
- 'masterWaitTimeout' => $wgMasterWaitTimeout
+ 'servers' => $servers,
+ 'masterWaitTimeout' => $wgMasterWaitTimeout
));
}
@@ -162,7 +162,7 @@ class LBFactory_Simple extends LBFactory {
throw new MWException( __METHOD__.": Unknown cluster \"$cluster\"" );
}
return new LoadBalancer( array(
- 'servers' => $wgExternalServers[$cluster]
+ 'servers' => $wgExternalServers[$cluster]
));
}
diff --git a/includes/db/LoadBalancer.php b/includes/db/LoadBalancer.php
index 0b8ef05a..083b70b3 100644
--- a/includes/db/LoadBalancer.php
+++ b/includes/db/LoadBalancer.php
@@ -809,7 +809,7 @@ class LoadBalancer {
foreach ( $this->mConns as $conns2 ) {
foreach ( $conns2 as $conns3 ) {
foreach ( $conns3 as $conn ) {
- $conn->immediateCommit();
+ $conn->commit();
}
}
}
@@ -831,7 +831,7 @@ class LoadBalancer {
}
}
- function waitTimeout( $value = NULL ) {
+ function waitTimeout( $value = null ) {
return wfSetVar( $this->mWaitTimeout, $value );
}
@@ -878,14 +878,18 @@ class LoadBalancer {
* Get the hostname and lag time of the most-lagged slave.
* This is useful for maintenance scripts that need to throttle their updates.
* May attempt to open connections to slaves on the default DB.
+ * @param $wiki string Wiki ID, or false for the default database
*/
- function getMaxLag() {
+ function getMaxLag( $wiki = false ) {
$maxLag = -1;
$host = '';
foreach ( $this->mServers as $i => $conn ) {
- $conn = $this->getAnyOpenConnection( $i );
+ $conn = false;
+ if ( $wiki === false ) {
+ $conn = $this->getAnyOpenConnection( $i );
+ }
if ( !$conn ) {
- $conn = $this->openConnection( $i );
+ $conn = $this->openConnection( $i, $wiki );
}
if ( !$conn ) {
continue;
@@ -912,4 +916,11 @@ class LoadBalancer {
$this->mLagTimes = $this->getLoadMonitor()->getLagTimes( array_keys( $this->mServers ), $wiki );
return $this->mLagTimes;
}
+
+ /**
+ * Clear the cache for getLagTimes
+ */
+ function clearLagTimeCache() {
+ $this->mLagTimes = null;
+ }
}
diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php
index aa48f9f3..184d1fc2 100644
--- a/includes/diff/DifferenceEngine.php
+++ b/includes/diff/DifferenceEngine.php
@@ -3,939 +3,6 @@
* @defgroup DifferenceEngine DifferenceEngine
*/
-/**
- * Constant to indicate diff cache compatibility.
- * Bump this when changing the diff formatting in a way that
- * fixes important bugs or such to force cached diff views to
- * clear.
- */
-define( 'MW_DIFF_VERSION', '1.11a' );
-
-/**
- * @todo document
- * @ingroup DifferenceEngine
- */
-class DifferenceEngine {
- /**#@+
- * @private
- */
- var $mOldid, $mNewid, $mTitle;
- var $mOldtitle, $mNewtitle, $mPagetitle;
- var $mOldtext, $mNewtext;
- var $mOldPage, $mNewPage;
- var $mRcidMarkPatrolled;
- var $mOldRev, $mNewRev;
- var $mRevisionsLoaded = false; // Have the revisions been loaded
- var $mTextLoaded = 0; // How many text blobs have been loaded, 0, 1 or 2?
- var $mCacheHit = false; // Was the diff fetched from cache?
- var $htmldiff;
-
- protected $unhide = false;
- /**#@-*/
-
- /**
- * Constructor
- * @param $titleObj Title object that the diff is associated with
- * @param $old Integer: old ID we want to show and diff with.
- * @param $new String: either 'prev' or 'next'.
- * @param $rcid Integer: ??? FIXME (default 0)
- * @param $refreshCache boolean If set, refreshes the diff cache
- * @param $htmldiff boolean If set, output using HTMLDiff instead of raw wikicode diff
- * @param $unhide boolean If set, allow viewing deleted revs
- */
- function __construct( $titleObj = null, $old = 0, $new = 0, $rcid = 0, $refreshCache = false , $htmldiff = false, $unhide = false ) {
- $this->mTitle = $titleObj;
- wfDebug("DifferenceEngine old '$old' new '$new' rcid '$rcid'\n");
-
- if ( 'prev' === $new ) {
- # Show diff between revision $old and the previous one.
- # Get previous one from DB.
- $this->mNewid = intval($old);
- $this->mOldid = $this->mTitle->getPreviousRevisionID( $this->mNewid );
- } elseif ( 'next' === $new ) {
- # Show diff between revision $old and the next one.
- # Get next one from DB.
- $this->mOldid = intval($old);
- $this->mNewid = $this->mTitle->getNextRevisionID( $this->mOldid );
- if ( false === $this->mNewid ) {
- # if no result, NewId points to the newest old revision. The only newer
- # revision is cur, which is "0".
- $this->mNewid = 0;
- }
- } else {
- $this->mOldid = intval($old);
- $this->mNewid = intval($new);
- wfRunHooks( 'NewDifferenceEngine', array(&$titleObj, &$this->mOldid, &$this->mNewid, $old, $new) );
- }
- $this->mRcidMarkPatrolled = intval($rcid); # force it to be an integer
- $this->mRefreshCache = $refreshCache;
- $this->htmldiff = $htmldiff;
- $this->unhide = $unhide;
- }
-
- function getTitle() {
- return $this->mTitle;
- }
-
- function wasCacheHit() {
- return $this->mCacheHit;
- }
-
- function getOldid() {
- return $this->mOldid;
- }
-
- function getNewid() {
- return $this->mNewid;
- }
-
- function showDiffPage( $diffOnly = false ) {
- global $wgUser, $wgOut, $wgUseExternalEditor, $wgUseRCPatrol, $wgEnableHtmlDiff;
- wfProfileIn( __METHOD__ );
-
-
- # If external diffs are enabled both globally and for the user,
- # we'll use the application/x-external-editor interface to call
- # an external diff tool like kompare, kdiff3, etc.
- if($wgUseExternalEditor && $wgUser->getOption('externaldiff')) {
- global $wgInputEncoding,$wgServer,$wgScript,$wgLang;
- $wgOut->disable();
- header ( "Content-type: application/x-external-editor; charset=".$wgInputEncoding );
- $url1=$this->mTitle->getFullURL("action=raw&oldid=".$this->mOldid);
- $url2=$this->mTitle->getFullURL("action=raw&oldid=".$this->mNewid);
- $special=$wgLang->getNsText(NS_SPECIAL);
- $control=<<<CONTROL
- [Process]
- Type=Diff text
- Engine=MediaWiki
- Script={$wgServer}{$wgScript}
- Special namespace={$special}
-
- [File]
- Extension=wiki
- URL=$url1
-
- [File 2]
- Extension=wiki
- URL=$url2
-CONTROL;
- echo($control);
- return;
- }
-
- $wgOut->setArticleFlag( false );
- if ( !$this->loadRevisionData() ) {
- $t = $this->mTitle->getPrefixedText();
- $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
- $wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
- $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
- wfProfileOut( __METHOD__ );
- return;
- }
-
- wfRunHooks( 'DiffViewHeader', array( $this, $this->mOldRev, $this->mNewRev ) );
-
- if ( $this->mNewRev->isCurrent() ) {
- $wgOut->setArticleFlag( true );
- }
-
- # mOldid is false if the difference engine is called with a "vague" query for
- # a diff between a version V and its previous version V' AND the version V
- # is the first version of that article. In that case, V' does not exist.
- if ( $this->mOldid === false ) {
- $this->showFirstRevision();
- $this->renderNewRevision(); // should we respect $diffOnly here or not?
- wfProfileOut( __METHOD__ );
- return;
- }
-
- $wgOut->suppressQuickbar();
-
- $oldTitle = $this->mOldPage->getPrefixedText();
- $newTitle = $this->mNewPage->getPrefixedText();
- if( $oldTitle == $newTitle ) {
- $wgOut->setPageTitle( $newTitle );
- } else {
- $wgOut->setPageTitle( $oldTitle . ', ' . $newTitle );
- }
- $wgOut->setSubtitle( wfMsgExt( 'difference', array( 'parseinline' ) ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
- if ( !$this->mOldPage->userCanRead() || !$this->mNewPage->userCanRead() ) {
- $wgOut->loginToUse();
- $wgOut->output();
- $wgOut->disable();
- wfProfileOut( __METHOD__ );
- return;
- }
-
- $sk = $wgUser->getSkin();
-
- // Check if page is editable
- $editable = $this->mNewRev->getTitle()->userCan( 'edit' );
- if ( $editable && $this->mNewRev->isCurrent() && $wgUser->isAllowed( 'rollback' ) ) {
- $rollback = '&nbsp;&nbsp;&nbsp;' . $sk->generateRollback( $this->mNewRev );
- } else {
- $rollback = '';
- }
-
- // Prepare a change patrol link, if applicable
- if( $wgUseRCPatrol && $this->mTitle->userCan('patrol') ) {
- // If we've been given an explicit change identifier, use it; saves time
- if( $this->mRcidMarkPatrolled ) {
- $rcid = $this->mRcidMarkPatrolled;
- $rc = RecentChange::newFromId( $rcid );
- // Already patrolled?
- $rcid = is_object($rc) && !$rc->getAttribute('rc_patrolled') ? $rcid : 0;
- } else {
- // Look for an unpatrolled change corresponding to this diff
- $db = wfGetDB( DB_SLAVE );
- $change = RecentChange::newFromConds(
- array(
- // Add redundant user,timestamp condition so we can use the existing index
- 'rc_user_text' => $this->mNewRev->getRawUserText(),
- 'rc_timestamp' => $db->timestamp( $this->mNewRev->getTimestamp() ),
- 'rc_this_oldid' => $this->mNewid,
- 'rc_last_oldid' => $this->mOldid,
- 'rc_patrolled' => 0
- ),
- __METHOD__
- );
- if( $change instanceof RecentChange ) {
- $rcid = $change->mAttribs['rc_id'];
- $this->mRcidMarkPatrolled = $rcid;
- } else {
- // None found
- $rcid = 0;
- }
- }
- // Build the link
- if( $rcid ) {
- $patrol = ' <span class="patrollink">[' . $sk->makeKnownLinkObj( $this->mTitle,
- wfMsgHtml( 'markaspatrolleddiff' ), "action=markpatrolled&rcid={$rcid}" ) . ']</span>';
- } else {
- $patrol = '';
- }
- } else {
- $patrol = '';
- }
-
- $diffOnlyArg = '';
- # Carry over 'diffonly' param via navigation links
- if( $diffOnly != $wgUser->getBoolOption('diffonly') ) {
- $diffOnlyArg = '&diffonly='.$diffOnly;
- }
- $htmldiffarg = $this->htmlDiffArgument();
- # Make "previous revision link"
- $prevlink = $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'previousdiff' ),
- "diff=prev&oldid={$this->mOldid}{$htmldiffarg}{$diffOnlyArg}", '', '', 'id="differences-prevlink"' );
- # Make "next revision link"
- if( $this->mNewRev->isCurrent() ) {
- $nextlink = '&nbsp;';
- } else {
- $nextlink = $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'nextdiff' ),
- "diff=next&oldid={$this->mNewid}{$htmldiffarg}{$diffOnlyArg}", '', '', 'id="differences-nextlink"' );
- }
-
- $oldminor = '';
- $newminor = '';
-
- if( $this->mOldRev->isMinor() ) {
- $oldminor = Xml::span( wfMsg( 'minoreditletter' ), 'minor' ) . ' ';
- }
- if( $this->mNewRev->isMinor() ) {
- $newminor = Xml::span( wfMsg( 'minoreditletter' ), 'minor' ) . ' ';
- }
-
- $rdel = ''; $ldel = '';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- if( !$this->mOldRev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $ldel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' );
- } else {
- $query = array( 'target' => $this->mOldRev->mTitle->getPrefixedDbkey(),
- 'oldid' => $this->mOldRev->getId()
- );
- $ldel = $sk->revDeleteLink( $query, $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) );
- }
- $ldel = "&nbsp;&nbsp;&nbsp;$ldel ";
- // We don't currently handle well changing the top revision's settings
- if( $this->mNewRev->isCurrent() ) {
- $rdel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' );
- } else if( !$this->mNewRev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $rdel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' );
- } else {
- $query = array( 'target' => $this->mNewRev->mTitle->getPrefixedDbkey(),
- 'oldid' => $this->mNewRev->getId()
- );
- $rdel = $sk->revDeleteLink( $query, $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) );
- }
- $rdel = "&nbsp;&nbsp;&nbsp;$rdel ";
- }
-
- $oldHeader = '<div id="mw-diff-otitle1"><strong>'.$this->mOldtitle.'</strong></div>' .
- '<div id="mw-diff-otitle2">' . $sk->revUserTools( $this->mOldRev, !$this->unhide ) . "</div>" .
- '<div id="mw-diff-otitle3">' . $oldminor . $sk->revComment( $this->mOldRev, !$diffOnly, !$this->unhide ).$ldel."</div>" .
- '<div id="mw-diff-otitle4">' . $prevlink .'</div>';
- $newHeader = '<div id="mw-diff-ntitle1"><strong>'.$this->mNewtitle.'</strong></div>' .
- '<div id="mw-diff-ntitle2">' . $sk->revUserTools( $this->mNewRev, !$this->unhide ) . " $rollback</div>" .
- '<div id="mw-diff-ntitle3">' . $newminor . $sk->revComment( $this->mNewRev, !$diffOnly, !$this->unhide ).$rdel."</div>" .
- '<div id="mw-diff-ntitle4">' . $nextlink . $patrol . '</div>';
-
- # Check if this user can see the revisions
- $allowed = $this->mOldRev->userCan(Revision::DELETED_TEXT)
- && $this->mNewRev->userCan(Revision::DELETED_TEXT);
- $deleted = $this->mOldRev->isDeleted(Revision::DELETED_TEXT)
- || $this->mNewRev->isDeleted(Revision::DELETED_TEXT);
- # Output the diff if allowed...
- if( $deleted && (!$this->unhide || !$allowed) ) {
- $this->showDiffStyle();
- $multi = $this->getMultiNotice();
- $wgOut->addHTML( $this->addHeader( '', $oldHeader, $newHeader, $multi ) );
- if( !$allowed ) {
- # Give explanation for why revision is not visible
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n",
- array( 'rev-deleted-no-diff' ) );
- } else {
- # Give explanation and add a link to view the diff...
- $link = $this->mTitle->getFullUrl( "diff={$this->mNewid}&oldid={$this->mOldid}".
- '&unhide=1&token='.urlencode( $wgUser->editToken($this->mNewid) ) );
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n",
- array( 'rev-deleted-unhide-diff', $link ) );
- }
- } else if( $wgEnableHtmlDiff && $this->htmldiff ) {
- $multi = $this->getMultiNotice();
- $wgOut->addHTML('<div class="diff-switchtype">'.$sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'wikicodecomparison' ),
- 'diff='.$this->mNewid.'&oldid='.$this->mOldid.'&htmldiff=0', '', '', 'id="differences-switchtype"' ).'</div>');
- $wgOut->addHTML( $this->addHeader( '', $oldHeader, $newHeader, $multi ) );
- $this->renderHtmlDiff();
- } else {
- if( $wgEnableHtmlDiff ) {
- $wgOut->addHTML('<div class="diff-switchtype">'.$sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'visualcomparison' ),
- 'diff='.$this->mNewid.'&oldid='.$this->mOldid.'&htmldiff=1', '', '', 'id="differences-switchtype"' ).'</div>');
- }
- $this->showDiff( $oldHeader, $newHeader );
- if( !$diffOnly ) {
- $this->renderNewRevision();
- }
- }
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Show the new revision of the page.
- */
- function renderNewRevision() {
- global $wgOut, $wgUser;
- wfProfileIn( __METHOD__ );
-
- $wgOut->addHTML( "<hr /><h2>{$this->mPagetitle}</h2>\n" );
- # Add deleted rev tag if needed
- if( !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' );
- } else if( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
- }
-
- if( !$this->mNewRev->isCurrent() ) {
- $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
- }
-
- $this->loadNewText();
- if( is_object( $this->mNewRev ) ) {
- $wgOut->setRevisionId( $this->mNewRev->getId() );
- }
-
- if( $this->mTitle->isCssJsSubpage() || $this->mTitle->isCssOrJsPage() ) {
- // Stolen from Article::view --AG 2007-10-11
- // Give hooks a chance to customise the output
- if( wfRunHooks( 'ShowRawCssJs', array( $this->mNewtext, $this->mTitle, $wgOut ) ) ) {
- // Wrap the whole lot in a <pre> and don't parse
- $m = array();
- preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
- $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
- $wgOut->addHTML( htmlspecialchars( $this->mNewtext ) );
- $wgOut->addHTML( "\n</pre>\n" );
- }
- } else {
- $wgOut->addWikiTextTidy( $this->mNewtext );
- }
-
- if( is_object( $this->mNewRev ) && !$this->mNewRev->isCurrent() ) {
- $wgOut->parserOptions()->setEditSection( $oldEditSectionSetting );
- }
- # Add redundant patrol link on bottom...
- if( $this->mRcidMarkPatrolled && $this->mTitle->quickUserCan('patrol') ) {
- $sk = $wgUser->getSkin();
- $wgOut->addHTML(
- "<div class='patrollink'>[" . $sk->makeKnownLinkObj( $this->mTitle,
- wfMsgHtml( 'markaspatrolleddiff' ), "action=markpatrolled&rcid={$this->mRcidMarkPatrolled}" ) .
- ']</div>'
- );
- }
-
- wfProfileOut( __METHOD__ );
- }
-
-
- function renderHtmlDiff() {
- global $wgOut, $wgTitle, $wgParser, $wgDebugComments;
- wfProfileIn( __METHOD__ );
-
- $this->showDiffStyle();
-
- $wgOut->addHTML( '<h2>'.wfMsgHtml( 'visual-comparison' )."</h2>\n" );
- #add deleted rev tag if needed
- if( !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' );
- } else if( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
- }
-
- if( !$this->mNewRev->isCurrent() ) {
- $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
- }
-
- $this->loadText();
-
- // Old revision
- if( is_object( $this->mOldRev ) ) {
- $wgOut->setRevisionId( $this->mOldRev->getId() );
- }
-
- $popts = $wgOut->parserOptions();
- $oldTidy = $popts->setTidy( true );
- $popts->setEditSection( false );
-
- $parserOutput = $wgParser->parse( $this->mOldtext, $wgTitle, $popts, true, true, $wgOut->getRevisionId() );
- $popts->setTidy( $oldTidy );
-
- //only for new?
- //$wgOut->addParserOutputNoText( $parserOutput );
- $oldHtml = $parserOutput->getText();
- wfRunHooks( 'OutputPageBeforeHTML', array( &$wgOut, &$oldHtml ) );
-
- // New revision
- if( is_object( $this->mNewRev ) ) {
- $wgOut->setRevisionId( $this->mNewRev->getId() );
- }
-
- $popts = $wgOut->parserOptions();
- $oldTidy = $popts->setTidy( true );
-
- $parserOutput = $wgParser->parse( $this->mNewtext, $wgTitle, $popts, true, true, $wgOut->getRevisionId() );
- $popts->setTidy( $oldTidy );
-
- $wgOut->addParserOutputNoText( $parserOutput );
- $newHtml = $parserOutput->getText();
- wfRunHooks( 'OutputPageBeforeHTML', array( &$wgOut, &$newHtml ) );
-
- unset($parserOutput, $popts);
-
- $differ = new HTMLDiffer(new DelegatingContentHandler($wgOut));
- $differ->htmlDiff($oldHtml, $newHtml);
- if ( $wgDebugComments ) {
- $wgOut->addHTML( "\n<!-- HtmlDiff Debug Output:\n" . HTMLDiffer::getDebugOutput() . " End Debug -->" );
- }
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Show the first revision of an article. Uses normal diff headers in
- * contrast to normal "old revision" display style.
- */
- function showFirstRevision() {
- global $wgOut, $wgUser;
- wfProfileIn( __METHOD__ );
-
- # Get article text from the DB
- #
- if ( ! $this->loadNewText() ) {
- $t = $this->mTitle->getPrefixedText();
- $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
- $wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
- $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
- wfProfileOut( __METHOD__ );
- return;
- }
- if ( $this->mNewRev->isCurrent() ) {
- $wgOut->setArticleFlag( true );
- }
-
- # Check if user is allowed to look at this page. If not, bail out.
- #
- if ( !$this->mTitle->userCanRead() ) {
- $wgOut->loginToUse();
- $wgOut->output();
- wfProfileOut( __METHOD__ );
- throw new MWException("Permission Error: you do not have access to view this page");
- }
-
- # Prepare the header box
- #
- $sk = $wgUser->getSkin();
-
- $next = $this->mTitle->getNextRevisionID( $this->mNewid );
- if( !$next ) {
- $nextlink = '';
- } else {
- $nextlink = '<br/>' . $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'nextdiff' ),
- 'diff=next&oldid=' . $this->mNewid.$this->htmlDiffArgument(), '', '', 'id="differences-nextlink"' );
- }
- $header = "<div class=\"firstrevisionheader\" style=\"text-align: center\">" .
- $sk->revUserTools( $this->mNewRev ) . "<br/>" . $sk->revComment( $this->mNewRev ) . $nextlink . "</div>\n";
-
- $wgOut->addHTML( $header );
-
- $wgOut->setSubtitle( wfMsgExt( 'difference', array( 'parseinline' ) ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
- wfProfileOut( __METHOD__ );
- }
-
- function htmlDiffArgument(){
- global $wgEnableHtmlDiff;
- if($wgEnableHtmlDiff){
- if($this->htmldiff){
- return '&htmldiff=1';
- }else{
- return '&htmldiff=0';
- }
- }else{
- return '';
- }
- }
-
- /**
- * Get the diff text, send it to $wgOut
- * Returns false if the diff could not be generated, otherwise returns true
- */
- function showDiff( $otitle, $ntitle ) {
- global $wgOut;
- $diff = $this->getDiff( $otitle, $ntitle );
- if ( $diff === false ) {
- $wgOut->addWikiMsg( 'missing-article', "<nowiki>(fixme, bug)</nowiki>", '' );
- return false;
- } else {
- $this->showDiffStyle();
- $wgOut->addHTML( $diff );
- return true;
- }
- }
-
- /**
- * Add style sheets and supporting JS for diff display.
- */
- function showDiffStyle() {
- global $wgStylePath, $wgStyleVersion, $wgOut;
- $wgOut->addStyle( 'common/diff.css' );
-
- // JS is needed to detect old versions of Mozilla to work around an annoyance bug.
- $wgOut->addScript( "<script type=\"text/javascript\" src=\"$wgStylePath/common/diff.js?$wgStyleVersion\"></script>" );
- }
-
- /**
- * Get complete diff table, including header
- *
- * @param Title $otitle Old title
- * @param Title $ntitle New title
- * @return mixed
- */
- function getDiff( $otitle, $ntitle ) {
- $body = $this->getDiffBody();
- if ( $body === false ) {
- return false;
- } else {
- $multi = $this->getMultiNotice();
- return $this->addHeader( $body, $otitle, $ntitle, $multi );
- }
- }
-
- /**
- * Get the diff table body, without header
- *
- * @return mixed
- */
- function getDiffBody() {
- global $wgMemc;
- wfProfileIn( __METHOD__ );
- $this->mCacheHit = true;
- // Check if the diff should be hidden from this user
- if ( !$this->loadRevisionData() )
- return '';
- if ( $this->mOldRev && !$this->mOldRev->userCan(Revision::DELETED_TEXT) ) {
- return '';
- } else if ( $this->mNewRev && !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
- return '';
- } else if ( $this->mOldRev && $this->mNewRev && $this->mOldRev->getID() == $this->mNewRev->getID() ) {
- return '';
- }
- // Cacheable?
- $key = false;
- if ( $this->mOldid && $this->mNewid ) {
- $key = wfMemcKey( 'diff', 'version', MW_DIFF_VERSION, 'oldid', $this->mOldid, 'newid', $this->mNewid );
- // Try cache
- if ( !$this->mRefreshCache ) {
- $difftext = $wgMemc->get( $key );
- if ( $difftext ) {
- wfIncrStats( 'diff_cache_hit' );
- $difftext = $this->localiseLineNumbers( $difftext );
- $difftext .= "\n<!-- diff cache key $key -->\n";
- wfProfileOut( __METHOD__ );
- return $difftext;
- }
- } // don't try to load but save the result
- }
- $this->mCacheHit = false;
-
- // Loadtext is permission safe, this just clears out the diff
- if ( !$this->loadText() ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $difftext = $this->generateDiffBody( $this->mOldtext, $this->mNewtext );
-
- // Save to cache for 7 days
- if ( !wfRunHooks( 'AbortDiffCache', array( &$this ) ) ) {
- wfIncrStats( 'diff_uncacheable' );
- } else if ( $key !== false && $difftext !== false ) {
- wfIncrStats( 'diff_cache_miss' );
- $wgMemc->set( $key, $difftext, 7*86400 );
- } else {
- wfIncrStats( 'diff_uncacheable' );
- }
- // Replace line numbers with the text in the user's language
- if ( $difftext !== false ) {
- $difftext = $this->localiseLineNumbers( $difftext );
- }
- wfProfileOut( __METHOD__ );
- return $difftext;
- }
-
- /**
- * Generate a diff, no caching
- * $otext and $ntext must be already segmented
- */
- function generateDiffBody( $otext, $ntext ) {
- global $wgExternalDiffEngine, $wgContLang;
-
- $otext = str_replace( "\r\n", "\n", $otext );
- $ntext = str_replace( "\r\n", "\n", $ntext );
-
- if ( $wgExternalDiffEngine == 'wikidiff' ) {
- # For historical reasons, external diff engine expects
- # input text to be HTML-escaped already
- $otext = htmlspecialchars ( $wgContLang->segmentForDiff( $otext ) );
- $ntext = htmlspecialchars ( $wgContLang->segmentForDiff( $ntext ) );
- if( !function_exists( 'wikidiff_do_diff' ) ) {
- dl('php_wikidiff.so');
- }
- return $wgContLang->unsegementForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) ) .
- $this->debug( 'wikidiff1' );
- }
-
- if ( $wgExternalDiffEngine == 'wikidiff2' ) {
- # Better external diff engine, the 2 may some day be dropped
- # This one does the escaping and segmenting itself
- if ( !function_exists( 'wikidiff2_do_diff' ) ) {
- wfProfileIn( __METHOD__ . "-dl" );
- @dl('php_wikidiff2.so');
- wfProfileOut( __METHOD__ . "-dl" );
- }
- if ( function_exists( 'wikidiff2_do_diff' ) ) {
- wfProfileIn( 'wikidiff2_do_diff' );
- $text = wikidiff2_do_diff( $otext, $ntext, 2 );
- $text .= $this->debug( 'wikidiff2' );
- wfProfileOut( 'wikidiff2_do_diff' );
- return $text;
- }
- }
- if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
- # Diff via the shell
- global $wgTmpDirectory;
- $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
- $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
-
- $tempFile1 = fopen( $tempName1, "w" );
- if ( !$tempFile1 ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- $tempFile2 = fopen( $tempName2, "w" );
- if ( !$tempFile2 ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- fwrite( $tempFile1, $otext );
- fwrite( $tempFile2, $ntext );
- fclose( $tempFile1 );
- fclose( $tempFile2 );
- $cmd = wfEscapeShellArg( $wgExternalDiffEngine, $tempName1, $tempName2 );
- wfProfileIn( __METHOD__ . "-shellexec" );
- $difftext = wfShellExec( $cmd );
- $difftext .= $this->debug( "external $wgExternalDiffEngine" );
- wfProfileOut( __METHOD__ . "-shellexec" );
- unlink( $tempName1 );
- unlink( $tempName2 );
- return $difftext;
- }
-
- # Native PHP diff
- $ota = explode( "\n", $wgContLang->segmentForDiff( $otext ) );
- $nta = explode( "\n", $wgContLang->segmentForDiff( $ntext ) );
- $diffs = new Diff( $ota, $nta );
- $formatter = new TableDiffFormatter();
- return $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) .
- $this->debug();
- }
-
- /**
- * Generate a debug comment indicating diff generating time,
- * server node, and generator backend.
- */
- protected function debug( $generator="internal" ) {
- global $wgShowHostnames;
- $data = array( $generator );
- if( $wgShowHostnames ) {
- $data[] = wfHostname();
- }
- $data[] = wfTimestamp( TS_DB );
- return "<!-- diff generator: " .
- implode( " ",
- array_map(
- "htmlspecialchars",
- $data ) ) .
- " -->\n";
- }
-
- /**
- * Replace line numbers with the text in the user's language
- */
- function localiseLineNumbers( $text ) {
- return preg_replace_callback( '/<!--LINE (\d+)-->/',
- array( &$this, 'localiseLineNumbersCb' ), $text );
- }
-
- function localiseLineNumbersCb( $matches ) {
- global $wgLang;
- return wfMsgExt( 'lineno', array (), $wgLang->formatNum( $matches[1] ) );
- }
-
-
- /**
- * If there are revisions between the ones being compared, return a note saying so.
- */
- function getMultiNotice() {
- if ( !is_object($this->mOldRev) || !is_object($this->mNewRev) )
- return '';
-
- if( !$this->mOldPage->equals( $this->mNewPage ) ) {
- // Comparing two different pages? Count would be meaningless.
- return '';
- }
-
- $oldid = $this->mOldRev->getId();
- $newid = $this->mNewRev->getId();
- if ( $oldid > $newid ) {
- $tmp = $oldid; $oldid = $newid; $newid = $tmp;
- }
-
- $n = $this->mTitle->countRevisionsBetween( $oldid, $newid );
- if ( !$n )
- return '';
-
- return wfMsgExt( 'diff-multi', array( 'parseinline' ), $n );
- }
-
-
- /**
- * Add the header to a diff body
- */
- static function addHeader( $diff, $otitle, $ntitle, $multi = '' ) {
- $header = "
- <table class='diff'>
- <col class='diff-marker' />
- <col class='diff-content' />
- <col class='diff-marker' />
- <col class='diff-content' />
- <tr valign='top'>
- <td colspan='2' class='diff-otitle'>{$otitle}</td>
- <td colspan='2' class='diff-ntitle'>{$ntitle}</td>
- </tr>
- ";
-
- if ( $multi != '' )
- $header .= "<tr><td colspan='4' align='center' class='diff-multi'>{$multi}</td></tr>";
-
- return $header . $diff . "</table>";
- }
-
- /**
- * Use specified text instead of loading from the database
- */
- function setText( $oldText, $newText ) {
- $this->mOldtext = $oldText;
- $this->mNewtext = $newText;
- $this->mTextLoaded = 2;
- $this->mRevisionsLoaded = true;
- }
-
- /**
- * Load revision metadata for the specified articles. If newid is 0, then compare
- * the old article in oldid to the current article; if oldid is 0, then
- * compare the current article to the immediately previous one (ignoring the
- * value of newid).
- *
- * If oldid is false, leave the corresponding revision object set
- * to false. This is impossible via ordinary user input, and is provided for
- * API convenience.
- */
- function loadRevisionData() {
- global $wgLang, $wgUser;
- if ( $this->mRevisionsLoaded ) {
- return true;
- } else {
- // Whether it succeeds or fails, we don't want to try again
- $this->mRevisionsLoaded = true;
- }
-
- // Load the new revision object
- $this->mNewRev = $this->mNewid
- ? Revision::newFromId( $this->mNewid )
- : Revision::newFromTitle( $this->mTitle );
- if( !$this->mNewRev instanceof Revision )
- return false;
-
- // Update the new revision ID in case it was 0 (makes life easier doing UI stuff)
- $this->mNewid = $this->mNewRev->getId();
-
- // Check if page is editable
- $editable = $this->mNewRev->getTitle()->userCan( 'edit' );
-
- // Set assorted variables
- $timestamp = $wgLang->timeanddate( $this->mNewRev->getTimestamp(), true );
- $this->mNewPage = $this->mNewRev->getTitle();
- if( $this->mNewRev->isCurrent() ) {
- $newLink = $this->mNewPage->escapeLocalUrl( 'oldid=' . $this->mNewid );
- $this->mPagetitle = wfMsgHTML( 'currentrev-asof', $timestamp );
- $newEdit = $this->mNewPage->escapeLocalUrl( 'action=edit' );
-
- $this->mNewtitle = "<a href='$newLink'>{$this->mPagetitle}</a>";
- $this->mNewtitle .= " (<a href='$newEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
-
- } else {
- $newLink = $this->mNewPage->escapeLocalUrl( 'oldid=' . $this->mNewid );
- $newEdit = $this->mNewPage->escapeLocalUrl( 'action=edit&oldid=' . $this->mNewid );
- $this->mPagetitle = wfMsgHTML( 'revisionasof', $timestamp );
-
- $this->mNewtitle = "<a href='$newLink'>{$this->mPagetitle}</a>";
- $this->mNewtitle .= " (<a href='$newEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
- }
- if ( !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
- $this->mNewtitle = "<span class='history-deleted'>{$this->mPagetitle}</span>";
- } else if ( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
- $this->mNewtitle = '<span class="history-deleted">'.$this->mNewtitle.'</span>';
- }
-
- // Load the old revision object
- $this->mOldRev = false;
- if( $this->mOldid ) {
- $this->mOldRev = Revision::newFromId( $this->mOldid );
- } elseif ( $this->mOldid === 0 ) {
- $rev = $this->mNewRev->getPrevious();
- if( $rev ) {
- $this->mOldid = $rev->getId();
- $this->mOldRev = $rev;
- } else {
- // No previous revision; mark to show as first-version only.
- $this->mOldid = false;
- $this->mOldRev = false;
- }
- }/* elseif ( $this->mOldid === false ) leave mOldRev false; */
-
- if( is_null( $this->mOldRev ) ) {
- return false;
- }
-
- if ( $this->mOldRev ) {
- $this->mOldPage = $this->mOldRev->getTitle();
-
- $t = $wgLang->timeanddate( $this->mOldRev->getTimestamp(), true );
- $oldLink = $this->mOldPage->escapeLocalUrl( 'oldid=' . $this->mOldid );
- $oldEdit = $this->mOldPage->escapeLocalUrl( 'action=edit&oldid=' . $this->mOldid );
- $this->mOldPagetitle = htmlspecialchars( wfMsg( 'revisionasof', $t ) );
-
- $this->mOldtitle = "<a href='$oldLink'>{$this->mOldPagetitle}</a>"
- . " (<a href='$oldEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
- // Add an "undo" link
- $newUndo = $this->mNewPage->escapeLocalUrl( 'action=edit&undoafter=' . $this->mOldid . '&undo=' . $this->mNewid);
- $htmlLink = htmlspecialchars( wfMsg( 'editundo' ) );
- $htmlTitle = $wgUser->getSkin()->tooltip( 'undo' );
- if( $editable && !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
- $this->mNewtitle .= " (<a href='$newUndo' $htmlTitle>" . $htmlLink . "</a>)";
- }
-
- if( !$this->mOldRev->userCan( Revision::DELETED_TEXT ) ) {
- $this->mOldtitle = '<span class="history-deleted">' . $this->mOldPagetitle . '</span>';
- } else if( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) {
- $this->mOldtitle = '<span class="history-deleted">' . $this->mOldtitle . '</span>';
- }
- }
-
- return true;
- }
-
- /**
- * Load the text of the revisions, as well as revision data.
- */
- function loadText() {
- if ( $this->mTextLoaded == 2 ) {
- return true;
- } else {
- // Whether it succeeds or fails, we don't want to try again
- $this->mTextLoaded = 2;
- }
-
- if ( !$this->loadRevisionData() ) {
- return false;
- }
- if ( $this->mOldRev ) {
- $this->mOldtext = $this->mOldRev->getText( Revision::FOR_THIS_USER );
- if ( $this->mOldtext === false ) {
- return false;
- }
- }
- if ( $this->mNewRev ) {
- $this->mNewtext = $this->mNewRev->getText( Revision::FOR_THIS_USER );
- if ( $this->mNewtext === false ) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Load the text of the new revision, not the old one
- */
- function loadNewText() {
- if ( $this->mTextLoaded >= 1 ) {
- return true;
- } else {
- $this->mTextLoaded = 1;
- }
- if ( !$this->loadRevisionData() ) {
- return false;
- }
- $this->mNewtext = $this->mNewRev->getText( Revision::FOR_THIS_USER );
- return true;
- }
-
-
-}
-
// A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
//
// Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
diff --git a/includes/diff/DifferenceInterface.php b/includes/diff/DifferenceInterface.php
new file mode 100644
index 00000000..d7d36799
--- /dev/null
+++ b/includes/diff/DifferenceInterface.php
@@ -0,0 +1,1021 @@
+<?php
+/**
+ * @defgroup DifferenceEngine DifferenceEngine
+ */
+
+/**
+ * Constant to indicate diff cache compatibility.
+ * Bump this when changing the diff formatting in a way that
+ * fixes important bugs or such to force cached diff views to
+ * clear.
+ */
+define( 'MW_DIFF_VERSION', '1.11a' );
+
+/**
+ * @todo document
+ * @ingroup DifferenceEngine
+ */
+class DifferenceEngine {
+ /**#@+
+ * @private
+ */
+ var $mOldid, $mNewid, $mTitle;
+ var $mOldtitle, $mNewtitle, $mPagetitle;
+ var $mOldtext, $mNewtext;
+ var $mOldPage, $mNewPage;
+ var $mRcidMarkPatrolled;
+ var $mOldRev, $mNewRev;
+ var $mRevisionsLoaded = false; // Have the revisions been loaded
+ var $mTextLoaded = 0; // How many text blobs have been loaded, 0, 1 or 2?
+ var $mCacheHit = false; // Was the diff fetched from cache?
+
+ /**
+ * Set this to true to add debug info to the HTML output.
+ * Warning: this may cause RSS readers to spuriously mark articles as "new"
+ * (bug 20601)
+ */
+ var $enableDebugComment = false;
+
+ // If true, line X is not displayed when X is 1, for example to increase
+ // readability and conserve space with many small diffs.
+ protected $mReducedLineNumbers = false;
+
+ protected $unhide = false;
+ /**#@-*/
+
+ /**
+ * Constructor
+ * @param $titleObj Title object that the diff is associated with
+ * @param $old Integer: old ID we want to show and diff with.
+ * @param $new String: either 'prev' or 'next'.
+ * @param $rcid Integer: ??? FIXME (default 0)
+ * @param $refreshCache boolean If set, refreshes the diff cache
+ * @param $unhide boolean If set, allow viewing deleted revs
+ */
+ function __construct( $titleObj = null, $old = 0, $new = 0, $rcid = 0,
+ $refreshCache = false, $unhide = false )
+ {
+ if ( $titleObj ) {
+ $this->mTitle = $titleObj;
+ } else {
+ global $wgTitle;
+ $this->mTitle = $wgTitle;
+ }
+ wfDebug("DifferenceEngine old '$old' new '$new' rcid '$rcid'\n");
+
+ if ( 'prev' === $new ) {
+ # Show diff between revision $old and the previous one.
+ # Get previous one from DB.
+ $this->mNewid = intval($old);
+ $this->mOldid = $this->mTitle->getPreviousRevisionID( $this->mNewid );
+ } elseif ( 'next' === $new ) {
+ # Show diff between revision $old and the next one.
+ # Get next one from DB.
+ $this->mOldid = intval($old);
+ $this->mNewid = $this->mTitle->getNextRevisionID( $this->mOldid );
+ if ( false === $this->mNewid ) {
+ # if no result, NewId points to the newest old revision. The only newer
+ # revision is cur, which is "0".
+ $this->mNewid = 0;
+ }
+ } else {
+ $this->mOldid = intval($old);
+ $this->mNewid = intval($new);
+ wfRunHooks( 'NewDifferenceEngine', array(&$titleObj, &$this->mOldid, &$this->mNewid, $old, $new) );
+ }
+ $this->mRcidMarkPatrolled = intval($rcid); # force it to be an integer
+ $this->mRefreshCache = $refreshCache;
+ $this->unhide = $unhide;
+ }
+
+ function setReducedLineNumbers( $value = true ) {
+ $this->mReducedLineNumbers = $value;
+ }
+
+ function getTitle() {
+ return $this->mTitle;
+ }
+
+ function wasCacheHit() {
+ return $this->mCacheHit;
+ }
+
+ function getOldid() {
+ return $this->mOldid;
+ }
+
+ function getNewid() {
+ return $this->mNewid;
+ }
+
+ function showDiffPage( $diffOnly = false ) {
+ global $wgUser, $wgOut, $wgUseExternalEditor, $wgUseRCPatrol;
+ wfProfileIn( __METHOD__ );
+
+
+ # If external diffs are enabled both globally and for the user,
+ # we'll use the application/x-external-editor interface to call
+ # an external diff tool like kompare, kdiff3, etc.
+ if($wgUseExternalEditor && $wgUser->getOption('externaldiff')) {
+ global $wgInputEncoding,$wgServer,$wgScript,$wgLang;
+ $wgOut->disable();
+ header ( "Content-type: application/x-external-editor; charset=".$wgInputEncoding );
+ $url1=$this->mTitle->getFullURL( array(
+ 'action' => 'raw',
+ 'oldid' => $this->mOldid
+ ) );
+ $url2=$this->mTitle->getFullURL( array(
+ 'action' => 'raw',
+ 'oldid' => $this->mNewid
+ ) );
+ $special=$wgLang->getNsText(NS_SPECIAL);
+ $control=<<<CONTROL
+ [Process]
+ Type=Diff text
+ Engine=MediaWiki
+ Script={$wgServer}{$wgScript}
+ Special namespace={$special}
+
+ [File]
+ Extension=wiki
+ URL=$url1
+
+ [File 2]
+ Extension=wiki
+ URL=$url2
+CONTROL;
+ echo($control);
+ return;
+ }
+
+ $wgOut->setArticleFlag( false );
+ if ( !$this->loadRevisionData() ) {
+ $t = $this->mTitle->getPrefixedText();
+ $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
+ $wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
+ $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ wfRunHooks( 'DiffViewHeader', array( $this, $this->mOldRev, $this->mNewRev ) );
+
+ if ( $this->mNewRev->isCurrent() ) {
+ $wgOut->setArticleFlag( true );
+ }
+
+ # mOldid is false if the difference engine is called with a "vague" query for
+ # a diff between a version V and its previous version V' AND the version V
+ # is the first version of that article. In that case, V' does not exist.
+ if ( $this->mOldid === false ) {
+ $this->showFirstRevision();
+ $this->renderNewRevision(); // should we respect $diffOnly here or not?
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ $wgOut->suppressQuickbar();
+
+ $oldTitle = $this->mOldPage->getPrefixedText();
+ $newTitle = $this->mNewPage->getPrefixedText();
+ if( $oldTitle == $newTitle ) {
+ $wgOut->setPageTitle( $newTitle );
+ } else {
+ $wgOut->setPageTitle( $oldTitle . ', ' . $newTitle );
+ }
+ $wgOut->setSubtitle( wfMsgExt( 'difference', array( 'parseinline' ) ) );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
+
+ if ( !$this->mOldPage->userCanRead() || !$this->mNewPage->userCanRead() ) {
+ $wgOut->loginToUse();
+ $wgOut->output();
+ $wgOut->disable();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ $sk = $wgUser->getSkin();
+
+ // Check if page is editable
+ $editable = $this->mNewRev->getTitle()->userCan( 'edit' );
+ if ( $editable && $this->mNewRev->isCurrent() && $wgUser->isAllowed( 'rollback' ) ) {
+ $rollback = '&nbsp;&nbsp;&nbsp;' . $sk->generateRollback( $this->mNewRev );
+ } else {
+ $rollback = '';
+ }
+
+ // Prepare a change patrol link, if applicable
+ if( $wgUseRCPatrol && $this->mTitle->userCan('patrol') ) {
+ // If we've been given an explicit change identifier, use it; saves time
+ if( $this->mRcidMarkPatrolled ) {
+ $rcid = $this->mRcidMarkPatrolled;
+ $rc = RecentChange::newFromId( $rcid );
+ // Already patrolled?
+ $rcid = is_object($rc) && !$rc->getAttribute('rc_patrolled') ? $rcid : 0;
+ } else {
+ // Look for an unpatrolled change corresponding to this diff
+ $db = wfGetDB( DB_SLAVE );
+ $change = RecentChange::newFromConds(
+ array(
+ // Redundant user,timestamp condition so we can use the existing index
+ 'rc_user_text' => $this->mNewRev->getRawUserText(),
+ 'rc_timestamp' => $db->timestamp( $this->mNewRev->getTimestamp() ),
+ 'rc_this_oldid' => $this->mNewid,
+ 'rc_last_oldid' => $this->mOldid,
+ 'rc_patrolled' => 0
+ ),
+ __METHOD__
+ );
+ if( $change instanceof RecentChange ) {
+ $rcid = $change->mAttribs['rc_id'];
+ $this->mRcidMarkPatrolled = $rcid;
+ } else {
+ // None found
+ $rcid = 0;
+ }
+ }
+ // Build the link
+ if( $rcid ) {
+ $patrol = ' <span class="patrollink">[' . $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'markaspatrolleddiff' ),
+ array(),
+ array(
+ 'action' => 'markpatrolled',
+ 'rcid' => $rcid
+ ),
+ array(
+ 'known',
+ 'noclasses'
+ )
+ ) . ']</span>';
+ } else {
+ $patrol = '';
+ }
+ } else {
+ $patrol = '';
+ }
+
+ # Carry over 'diffonly' param via navigation links
+ if( $diffOnly != $wgUser->getBoolOption('diffonly') ) {
+ $query['diffonly'] = $diffOnly;
+ }
+
+ # Make "previous revision link"
+ $query['diff'] = 'prev';
+ $query['oldid'] = $this->mOldid;
+ # Cascade unhide param in links for easy deletion browsing
+ if( $this->unhide ) {
+ $query['unhide'] = 1;
+ }
+ $prevlink = $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'previousdiff' ),
+ array(
+ 'id' => 'differences-prevlink'
+ ),
+ $query,
+ array(
+ 'known',
+ 'noclasses'
+ )
+ );
+
+ # Make "next revision link"
+ $query['diff'] = 'next';
+ $query['oldid'] = $this->mNewid;
+ # Skip next link on the top revision
+ if( $this->mNewRev->isCurrent() ) {
+ $nextlink = '&nbsp;';
+ } else {
+ $nextlink = $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'nextdiff' ),
+ array(
+ 'id' => 'differences-nextlink'
+ ),
+ $query,
+ array(
+ 'known',
+ 'noclasses'
+ )
+ );
+ }
+
+ $oldminor = '';
+ $newminor = '';
+
+ if( $this->mOldRev->isMinor() ) {
+ $oldminor = ChangesList::flag( 'minor' );
+ }
+ if( $this->mNewRev->isMinor() ) {
+ $newminor = ChangesList::flag( 'minor' );
+ }
+
+ # Handle RevisionDelete links...
+ $ldel = $this->revisionDeleteLink( $this->mOldRev );
+ $rdel = $this->revisionDeleteLink( $this->mNewRev );
+
+ $oldHeader = '<div id="mw-diff-otitle1"><strong>'.$this->mOldtitle.'</strong></div>' .
+ '<div id="mw-diff-otitle2">' .
+ $sk->revUserTools( $this->mOldRev, !$this->unhide ).'</div>' .
+ '<div id="mw-diff-otitle3">' . $oldminor .
+ $sk->revComment( $this->mOldRev, !$diffOnly, !$this->unhide ).$ldel.'</div>' .
+ '<div id="mw-diff-otitle4">' . $prevlink .'</div>';
+ $newHeader = '<div id="mw-diff-ntitle1"><strong>'.$this->mNewtitle.'</strong></div>' .
+ '<div id="mw-diff-ntitle2">' . $sk->revUserTools( $this->mNewRev, !$this->unhide ) .
+ " $rollback</div>" .
+ '<div id="mw-diff-ntitle3">' . $newminor .
+ $sk->revComment( $this->mNewRev, !$diffOnly, !$this->unhide ).$rdel.'</div>' .
+ '<div id="mw-diff-ntitle4">' . $nextlink . $patrol . '</div>';
+
+ # Check if this user can see the revisions
+ $allowed = $this->mOldRev->userCan(Revision::DELETED_TEXT)
+ && $this->mNewRev->userCan(Revision::DELETED_TEXT);
+ # Check if one of the revisions is deleted/suppressed
+ $deleted = $suppressed = false;
+ if( $this->mOldRev->isDeleted(Revision::DELETED_TEXT) ) {
+ $deleted = true; // old revisions text is hidden
+ if( $this->mOldRev->isDeleted(Revision::DELETED_RESTRICTED) )
+ $suppressed = true; // also suppressed
+ }
+ if( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
+ $deleted = true; // new revisions text is hidden
+ if( $this->mNewRev->isDeleted(Revision::DELETED_RESTRICTED) )
+ $suppressed = true; // also suppressed
+ }
+ # If the diff cannot be shown due to a deleted revision, then output
+ # the diff header and links to unhide (if available)...
+ if( $deleted && (!$this->unhide || !$allowed) ) {
+ $this->showDiffStyle();
+ $multi = $this->getMultiNotice();
+ $wgOut->addHTML( $this->addHeader( '', $oldHeader, $newHeader, $multi ) );
+ if( !$allowed ) {
+ $msg = $suppressed ? 'rev-suppressed-no-diff' : 'rev-deleted-no-diff';
+ # Give explanation for why revision is not visible
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n",
+ array( $msg ) );
+ } else {
+ # Give explanation and add a link to view the diff...
+ $link = $this->mTitle->getFullUrl( array(
+ 'diff' => $this->mNewid,
+ 'oldid' => $this->mOldid,
+ 'unhide' => 1
+ ) );
+ $msg = $suppressed ? 'rev-suppressed-unhide-diff' : 'rev-deleted-unhide-diff';
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", array( $msg, $link ) );
+ }
+ # Otherwise, output a regular diff...
+ } else {
+ # Add deletion notice if the user is viewing deleted content
+ $notice = '';
+ if( $deleted ) {
+ $msg = $suppressed ? 'rev-suppressed-diff-view' : 'rev-deleted-diff-view';
+ $notice = "<div class='mw-warning plainlinks'>\n".wfMsgExt($msg,'parseinline')."</div>\n";
+ }
+ $this->showDiff( $oldHeader, $newHeader, $notice );
+ if( !$diffOnly ) {
+ $this->renderNewRevision();
+ }
+ }
+ wfProfileOut( __METHOD__ );
+ }
+
+ protected function revisionDeleteLink( $rev ) {
+ global $wgUser;
+ $link = '';
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ // Show del/undel link if:
+ // (a) the user can delete revisions, or
+ // (b) the user can view deleted revision *and* this one is deleted
+ if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' )) ) {
+ $sk = $wgUser->getSkin();
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $link = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $rev->mTitle->getPrefixedDbkey(),
+ 'ids' => $rev->getId()
+ );
+ $link = $sk->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
+ }
+ $link = '&nbsp;&nbsp;&nbsp;' . $link . ' ';
+ }
+ return $link;
+ }
+
+ /**
+ * Show the new revision of the page.
+ */
+ function renderNewRevision() {
+ global $wgOut, $wgUser;
+ wfProfileIn( __METHOD__ );
+
+ $wgOut->addHTML( "<hr /><h2>{$this->mPagetitle}</h2>\n" );
+ # Add deleted rev tag if needed
+ if( !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' );
+ } else if( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
+ $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
+ }
+
+ if( !$this->mNewRev->isCurrent() ) {
+ $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
+ }
+
+ $this->loadNewText();
+ if( is_object( $this->mNewRev ) ) {
+ $wgOut->setRevisionId( $this->mNewRev->getId() );
+ }
+
+ if( $this->mTitle->isCssJsSubpage() || $this->mTitle->isCssOrJsPage() ) {
+ // Stolen from Article::view --AG 2007-10-11
+ // Give hooks a chance to customise the output
+ if( wfRunHooks( 'ShowRawCssJs', array( $this->mNewtext, $this->mTitle, $wgOut ) ) ) {
+ // Wrap the whole lot in a <pre> and don't parse
+ $m = array();
+ preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
+ $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
+ $wgOut->addHTML( htmlspecialchars( $this->mNewtext ) );
+ $wgOut->addHTML( "\n</pre>\n" );
+ }
+ } else {
+ $wgOut->addWikiTextTidy( $this->mNewtext );
+ }
+
+ if( is_object( $this->mNewRev ) && !$this->mNewRev->isCurrent() ) {
+ $wgOut->parserOptions()->setEditSection( $oldEditSectionSetting );
+ }
+ # Add redundant patrol link on bottom...
+ if( $this->mRcidMarkPatrolled && $this->mTitle->quickUserCan('patrol') ) {
+ $sk = $wgUser->getSkin();
+ $wgOut->addHTML(
+ "<div class='patrollink'>[" . $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'markaspatrolleddiff' ),
+ array(),
+ array(
+ 'action' => 'markpatrolled',
+ 'rcid' => $this->mRcidMarkPatrolled
+ )
+ ) . ']</div>'
+ );
+ }
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Show the first revision of an article. Uses normal diff headers in
+ * contrast to normal "old revision" display style.
+ */
+ function showFirstRevision() {
+ global $wgOut, $wgUser;
+ wfProfileIn( __METHOD__ );
+
+ # Get article text from the DB
+ #
+ if ( ! $this->loadNewText() ) {
+ $t = $this->mTitle->getPrefixedText();
+ $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
+ $wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
+ $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+ if ( $this->mNewRev->isCurrent() ) {
+ $wgOut->setArticleFlag( true );
+ }
+
+ # Check if user is allowed to look at this page. If not, bail out.
+ #
+ if ( !$this->mTitle->userCanRead() ) {
+ $wgOut->loginToUse();
+ $wgOut->output();
+ wfProfileOut( __METHOD__ );
+ throw new MWException("Permission Error: you do not have access to view this page");
+ }
+
+ # Prepare the header box
+ #
+ $sk = $wgUser->getSkin();
+
+ $next = $this->mTitle->getNextRevisionID( $this->mNewid );
+ if( !$next ) {
+ $nextlink = '';
+ } else {
+ $nextlink = '<br />' . $sk->link(
+ $this->mTitle,
+ wfMsgHtml( 'nextdiff' ),
+ array(
+ 'id' => 'differences-nextlink'
+ ),
+ array(
+ 'diff' => 'next',
+ 'oldid' => $this->mNewid,
+ ),
+ array(
+ 'known',
+ 'noclasses'
+ )
+ );
+ }
+ $header = "<div class=\"firstrevisionheader\" style=\"text-align: center\">" .
+ $sk->revUserTools( $this->mNewRev ) . "<br />" . $sk->revComment( $this->mNewRev ) . $nextlink . "</div>\n";
+
+ $wgOut->addHTML( $header );
+
+ $wgOut->setSubtitle( wfMsgExt( 'difference', array( 'parseinline' ) ) );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Get the diff text, send it to $wgOut
+ * Returns false if the diff could not be generated, otherwise returns true
+ */
+ function showDiff( $otitle, $ntitle, $notice = '' ) {
+ global $wgOut;
+ $diff = $this->getDiff( $otitle, $ntitle, $notice );
+ if ( $diff === false ) {
+ $wgOut->addWikiMsg( 'missing-article', "<nowiki>(fixme, bug)</nowiki>", '' );
+ return false;
+ } else {
+ $this->showDiffStyle();
+ $wgOut->addHTML( $diff );
+ return true;
+ }
+ }
+
+ /**
+ * Add style sheets and supporting JS for diff display.
+ */
+ function showDiffStyle() {
+ global $wgStylePath, $wgStyleVersion, $wgOut;
+ $wgOut->addStyle( 'common/diff.css' );
+
+ // JS is needed to detect old versions of Mozilla to work around an annoyance bug.
+ $wgOut->addScript( "<script type=\"text/javascript\" src=\"$wgStylePath/common/diff.js?$wgStyleVersion\"></script>" );
+ }
+
+ /**
+ * Get complete diff table, including header
+ *
+ * @param Title $otitle Old title
+ * @param Title $ntitle New title
+ * @param string $notice HTML between diff header and body
+ * @return mixed
+ */
+ function getDiff( $otitle, $ntitle, $notice = '' ) {
+ $body = $this->getDiffBody();
+ if ( $body === false ) {
+ return false;
+ } else {
+ $multi = $this->getMultiNotice();
+ return $this->addHeader( $body, $otitle, $ntitle, $multi, $notice );
+ }
+ }
+
+ /**
+ * Get the diff table body, without header
+ *
+ * @return mixed
+ */
+ function getDiffBody() {
+ global $wgMemc;
+ wfProfileIn( __METHOD__ );
+ $this->mCacheHit = true;
+ // Check if the diff should be hidden from this user
+ if ( !$this->loadRevisionData() )
+ return '';
+ if ( $this->mOldRev && !$this->mOldRev->userCan(Revision::DELETED_TEXT) ) {
+ return '';
+ } else if ( $this->mNewRev && !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
+ return '';
+ } else if ( $this->mOldRev && $this->mNewRev && $this->mOldRev->getID() == $this->mNewRev->getID() ) {
+ return '';
+ }
+ // Cacheable?
+ $key = false;
+ if ( $this->mOldid && $this->mNewid ) {
+ $key = wfMemcKey( 'diff', 'version', MW_DIFF_VERSION, 'oldid', $this->mOldid, 'newid', $this->mNewid );
+ // Try cache
+ if ( !$this->mRefreshCache ) {
+ $difftext = $wgMemc->get( $key );
+ if ( $difftext ) {
+ wfIncrStats( 'diff_cache_hit' );
+ $difftext = $this->localiseLineNumbers( $difftext );
+ $difftext .= "\n<!-- diff cache key $key -->\n";
+ wfProfileOut( __METHOD__ );
+ return $difftext;
+ }
+ } // don't try to load but save the result
+ }
+ $this->mCacheHit = false;
+
+ // Loadtext is permission safe, this just clears out the diff
+ if ( !$this->loadText() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $difftext = $this->generateDiffBody( $this->mOldtext, $this->mNewtext );
+
+ // Save to cache for 7 days
+ if ( !wfRunHooks( 'AbortDiffCache', array( &$this ) ) ) {
+ wfIncrStats( 'diff_uncacheable' );
+ } else if ( $key !== false && $difftext !== false ) {
+ wfIncrStats( 'diff_cache_miss' );
+ $wgMemc->set( $key, $difftext, 7*86400 );
+ } else {
+ wfIncrStats( 'diff_uncacheable' );
+ }
+ // Replace line numbers with the text in the user's language
+ if ( $difftext !== false ) {
+ $difftext = $this->localiseLineNumbers( $difftext );
+ }
+ wfProfileOut( __METHOD__ );
+ return $difftext;
+ }
+
+ /**
+ * Make sure the proper modules are loaded before we try to
+ * make the diff
+ */
+ private function initDiffEngines() {
+ global $wgExternalDiffEngine;
+ if ( $wgExternalDiffEngine == 'wikidiff' && !function_exists( 'wikidiff_do_diff' ) ) {
+ wfProfileIn( __METHOD__ . '-php_wikidiff.so' );
+ wfSuppressWarnings();
+ dl( 'php_wikidiff.so' );
+ wfRestoreWarnings();
+ wfProfileOut( __METHOD__ . '-php_wikidiff.so' );
+ }
+ else if ( $wgExternalDiffEngine == 'wikidiff2' && !function_exists( 'wikidiff2_do_diff' ) ) {
+ wfProfileIn( __METHOD__ . '-php_wikidiff2.so' );
+ wfSuppressWarnings();
+ dl( 'php_wikidiff2.so' );
+ wfRestoreWarnings();
+ wfProfileOut( __METHOD__ . '-php_wikidiff2.so' );
+ }
+ }
+
+ /**
+ * Generate a diff, no caching
+ * $otext and $ntext must be already segmented
+ */
+ function generateDiffBody( $otext, $ntext ) {
+ global $wgExternalDiffEngine, $wgContLang;
+
+ $otext = str_replace( "\r\n", "\n", $otext );
+ $ntext = str_replace( "\r\n", "\n", $ntext );
+
+ $this->initDiffEngines();
+
+ if ( $wgExternalDiffEngine == 'wikidiff' && function_exists( 'wikidiff_do_diff' ) ) {
+ # For historical reasons, external diff engine expects
+ # input text to be HTML-escaped already
+ $otext = htmlspecialchars ( $wgContLang->segmentForDiff( $otext ) );
+ $ntext = htmlspecialchars ( $wgContLang->segmentForDiff( $ntext ) );
+ return $wgContLang->unsegementForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) ) .
+ $this->debug( 'wikidiff1' );
+ }
+
+ if ( $wgExternalDiffEngine == 'wikidiff2' && function_exists( 'wikidiff2_do_diff' ) ) {
+ # Better external diff engine, the 2 may some day be dropped
+ # This one does the escaping and segmenting itself
+ wfProfileIn( 'wikidiff2_do_diff' );
+ $text = wikidiff2_do_diff( $otext, $ntext, 2 );
+ $text .= $this->debug( 'wikidiff2' );
+ wfProfileOut( 'wikidiff2_do_diff' );
+ return $text;
+ }
+ if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
+ # Diff via the shell
+ global $wgTmpDirectory;
+ $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
+ $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
+
+ $tempFile1 = fopen( $tempName1, "w" );
+ if ( !$tempFile1 ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $tempFile2 = fopen( $tempName2, "w" );
+ if ( !$tempFile2 ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ fwrite( $tempFile1, $otext );
+ fwrite( $tempFile2, $ntext );
+ fclose( $tempFile1 );
+ fclose( $tempFile2 );
+ $cmd = wfEscapeShellArg( $wgExternalDiffEngine, $tempName1, $tempName2 );
+ wfProfileIn( __METHOD__ . "-shellexec" );
+ $difftext = wfShellExec( $cmd );
+ $difftext .= $this->debug( "external $wgExternalDiffEngine" );
+ wfProfileOut( __METHOD__ . "-shellexec" );
+ unlink( $tempName1 );
+ unlink( $tempName2 );
+ return $difftext;
+ }
+
+ # Native PHP diff
+ $ota = explode( "\n", $wgContLang->segmentForDiff( $otext ) );
+ $nta = explode( "\n", $wgContLang->segmentForDiff( $ntext ) );
+ $diffs = new Diff( $ota, $nta );
+ $formatter = new TableDiffFormatter();
+ return $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) .
+ $this->debug();
+ }
+
+ /**
+ * Generate a debug comment indicating diff generating time,
+ * server node, and generator backend.
+ */
+ protected function debug( $generator="internal" ) {
+ global $wgShowHostnames;
+ if ( !$this->enableDebugComment ) {
+ return '';
+ }
+ $data = array( $generator );
+ if( $wgShowHostnames ) {
+ $data[] = wfHostname();
+ }
+ $data[] = wfTimestamp( TS_DB );
+ return "<!-- diff generator: " .
+ implode( " ",
+ array_map(
+ "htmlspecialchars",
+ $data ) ) .
+ " -->\n";
+ }
+
+ /**
+ * Replace line numbers with the text in the user's language
+ */
+ function localiseLineNumbers( $text ) {
+ return preg_replace_callback( '/<!--LINE (\d+)-->/',
+ array( &$this, 'localiseLineNumbersCb' ), $text );
+ }
+
+ function localiseLineNumbersCb( $matches ) {
+ global $wgLang;
+ if ( $matches[1] === '1' && $this->mReducedLineNumbers ) return '';
+ return wfMsgExt( 'lineno', 'escape', $wgLang->formatNum( $matches[1] ) );
+ }
+
+
+ /**
+ * If there are revisions between the ones being compared, return a note saying so.
+ */
+ function getMultiNotice() {
+ if ( !is_object($this->mOldRev) || !is_object($this->mNewRev) )
+ return '';
+
+ if( !$this->mOldPage->equals( $this->mNewPage ) ) {
+ // Comparing two different pages? Count would be meaningless.
+ return '';
+ }
+
+ $oldid = $this->mOldRev->getId();
+ $newid = $this->mNewRev->getId();
+ if ( $oldid > $newid ) {
+ $tmp = $oldid; $oldid = $newid; $newid = $tmp;
+ }
+
+ $n = $this->mTitle->countRevisionsBetween( $oldid, $newid );
+ if ( !$n )
+ return '';
+
+ return wfMsgExt( 'diff-multi', array( 'parseinline' ), $n );
+ }
+
+
+ /**
+ * Add the header to a diff body
+ */
+ static function addHeader( $diff, $otitle, $ntitle, $multi = '', $notice = '' ) {
+ $header = "<table class='diff'>";
+ if( $diff ) { // Safari/Chrome show broken output if cols not used
+ $header .= "
+ <col class='diff-marker' />
+ <col class='diff-content' />
+ <col class='diff-marker' />
+ <col class='diff-content' />";
+ $colspan = 2;
+ $multiColspan = 4;
+ } else {
+ $colspan = 1;
+ $multiColspan = 2;
+ }
+ $header .= "
+ <tr valign='top'>
+ <td colspan='$colspan' class='diff-otitle'>{$otitle}</td>
+ <td colspan='$colspan' class='diff-ntitle'>{$ntitle}</td>
+ </tr>";
+
+ if ( $multi != '' ) {
+ $header .= "<tr><td colspan='{$multiColspan}' align='center' class='diff-multi'>{$multi}</td></tr>";
+ }
+ if ( $notice != '' ) {
+ $header .= "<tr><td colspan='{$multiColspan}' align='center'>{$notice}</td></tr>";
+ }
+
+ return $header . $diff . "</table>";
+ }
+
+ /**
+ * Use specified text instead of loading from the database
+ */
+ function setText( $oldText, $newText ) {
+ $this->mOldtext = $oldText;
+ $this->mNewtext = $newText;
+ $this->mTextLoaded = 2;
+ $this->mRevisionsLoaded = true;
+ }
+
+ /**
+ * Load revision metadata for the specified articles. If newid is 0, then compare
+ * the old article in oldid to the current article; if oldid is 0, then
+ * compare the current article to the immediately previous one (ignoring the
+ * value of newid).
+ *
+ * If oldid is false, leave the corresponding revision object set
+ * to false. This is impossible via ordinary user input, and is provided for
+ * API convenience.
+ */
+ function loadRevisionData() {
+ global $wgLang, $wgUser;
+ if ( $this->mRevisionsLoaded ) {
+ return true;
+ } else {
+ // Whether it succeeds or fails, we don't want to try again
+ $this->mRevisionsLoaded = true;
+ }
+
+ // Load the new revision object
+ $this->mNewRev = $this->mNewid
+ ? Revision::newFromId( $this->mNewid )
+ : Revision::newFromTitle( $this->mTitle );
+ if( !$this->mNewRev instanceof Revision )
+ return false;
+
+ // Update the new revision ID in case it was 0 (makes life easier doing UI stuff)
+ $this->mNewid = $this->mNewRev->getId();
+
+ // Check if page is editable
+ $editable = $this->mNewRev->getTitle()->userCan( 'edit' );
+
+ // Set assorted variables
+ $timestamp = $wgLang->timeanddate( $this->mNewRev->getTimestamp(), true );
+ $dateofrev = $wgLang->date( $this->mNewRev->getTimestamp(), true );
+ $timeofrev = $wgLang->time( $this->mNewRev->getTimestamp(), true );
+ $this->mNewPage = $this->mNewRev->getTitle();
+ if( $this->mNewRev->isCurrent() ) {
+ $newLink = $this->mNewPage->escapeLocalUrl( array(
+ 'oldid' => $this->mNewid
+ ) );
+ $this->mPagetitle = htmlspecialchars( wfMsg(
+ 'currentrev-asof',
+ $timestamp,
+ $dateofrev,
+ $timeofrev
+ ) );
+ $newEdit = $this->mNewPage->escapeLocalUrl( array(
+ 'action' => 'edit'
+ ) );
+
+ $this->mNewtitle = "<a href='$newLink'>{$this->mPagetitle}</a>";
+ $this->mNewtitle .= " (<a href='$newEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
+ } else {
+ $newLink = $this->mNewPage->escapeLocalUrl( array(
+ 'oldid' => $this->mNewid
+ ) );
+ $newEdit = $this->mNewPage->escapeLocalUrl( array(
+ 'action' => 'edit',
+ 'oldid' => $this->mNewid
+ ) );
+ $this->mPagetitle = htmlspecialchars( wfMsg(
+ 'revisionasof',
+ $timestamp,
+ $dateofrev,
+ $timeofrev
+ ) );
+
+ $this->mNewtitle = "<a href='$newLink'>{$this->mPagetitle}</a>";
+ $this->mNewtitle .= " (<a href='$newEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
+ }
+ if( !$this->mNewRev->userCan(Revision::DELETED_TEXT) ) {
+ $this->mNewtitle = "<span class='history-deleted'>{$this->mPagetitle}</span>";
+ } else if ( $this->mNewRev->isDeleted(Revision::DELETED_TEXT) ) {
+ $this->mNewtitle = "<span class='history-deleted'>{$this->mNewtitle}</span>";
+ }
+
+ // Load the old revision object
+ $this->mOldRev = false;
+ if( $this->mOldid ) {
+ $this->mOldRev = Revision::newFromId( $this->mOldid );
+ } elseif ( $this->mOldid === 0 ) {
+ $rev = $this->mNewRev->getPrevious();
+ if( $rev ) {
+ $this->mOldid = $rev->getId();
+ $this->mOldRev = $rev;
+ } else {
+ // No previous revision; mark to show as first-version only.
+ $this->mOldid = false;
+ $this->mOldRev = false;
+ }
+ }/* elseif ( $this->mOldid === false ) leave mOldRev false; */
+
+ if( is_null( $this->mOldRev ) ) {
+ return false;
+ }
+
+ if ( $this->mOldRev ) {
+ $this->mOldPage = $this->mOldRev->getTitle();
+
+ $t = $wgLang->timeanddate( $this->mOldRev->getTimestamp(), true );
+ $dateofrev = $wgLang->date( $this->mOldRev->getTimestamp(), true );
+ $timeofrev = $wgLang->time( $this->mOldRev->getTimestamp(), true );
+ $oldLink = $this->mOldPage->escapeLocalUrl( array(
+ 'oldid' => $this->mOldid
+ ) );
+ $oldEdit = $this->mOldPage->escapeLocalUrl( array(
+ 'action' => 'edit',
+ 'oldid' => $this->mOldid
+ ) );
+ $this->mOldPagetitle = htmlspecialchars( wfMsg( 'revisionasof', $t, $dateofrev, $timeofrev ) );
+
+ $this->mOldtitle = "<a href='$oldLink'>{$this->mOldPagetitle}</a>"
+ . " (<a href='$oldEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
+ // Add an "undo" link
+ $newUndo = $this->mNewPage->escapeLocalUrl( array(
+ 'action' => 'edit',
+ 'undoafter' => $this->mOldid,
+ 'undo' => $this->mNewid
+ ) );
+ $htmlLink = htmlspecialchars( wfMsg( 'editundo' ) );
+ $htmlTitle = $wgUser->getSkin()->tooltip( 'undo' );
+ if( $editable && !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $this->mNewtitle .= " (<a href='$newUndo' $htmlTitle>" . $htmlLink . "</a>)";
+ }
+
+ if( !$this->mOldRev->userCan( Revision::DELETED_TEXT ) ) {
+ $this->mOldtitle = '<span class="history-deleted">' . $this->mOldPagetitle . '</span>';
+ } else if( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $this->mOldtitle = '<span class="history-deleted">' . $this->mOldtitle . '</span>';
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Load the text of the revisions, as well as revision data.
+ */
+ function loadText() {
+ if ( $this->mTextLoaded == 2 ) {
+ return true;
+ } else {
+ // Whether it succeeds or fails, we don't want to try again
+ $this->mTextLoaded = 2;
+ }
+
+ if ( !$this->loadRevisionData() ) {
+ return false;
+ }
+ if ( $this->mOldRev ) {
+ $this->mOldtext = $this->mOldRev->getText( Revision::FOR_THIS_USER );
+ if ( $this->mOldtext === false ) {
+ return false;
+ }
+ }
+ if ( $this->mNewRev ) {
+ $this->mNewtext = $this->mNewRev->getText( Revision::FOR_THIS_USER );
+ if ( $this->mNewtext === false ) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Load the text of the new revision, not the old one
+ */
+ function loadNewText() {
+ if ( $this->mTextLoaded >= 1 ) {
+ return true;
+ } else {
+ $this->mTextLoaded = 1;
+ }
+ if ( !$this->loadRevisionData() ) {
+ return false;
+ }
+ $this->mNewtext = $this->mNewRev->getText( Revision::FOR_THIS_USER );
+ return true;
+ }
+}
diff --git a/includes/diff/HTMLDiff.php b/includes/diff/HTMLDiff.php
deleted file mode 100644
index df9f4eb8..00000000
--- a/includes/diff/HTMLDiff.php
+++ /dev/null
@@ -1,1009 +0,0 @@
-<?php
-
-/** Copyright (C) 2008 Guy Van den Broeck <guy@guyvdb.eu>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * or see http://www.gnu.org/
- *
- * @ingroup DifferenceEngine
- */
-
-/**
- * When detecting the last common parent of two nodes, all results are stored as
- * a LastCommonParentResult.
- */
-class LastCommonParentResult {
-
- // Parent
- public $parent;
-
- // Splitting
- public $splittingNeeded = false;
-
- // Depth
- public $lastCommonParentDepth = -1;
-
- // Index
- public $indexInLastCommonParent = -1;
-}
-
-class Modification{
-
- const NONE = 1;
- const REMOVED = 2;
- const ADDED = 4;
- const CHANGED = 8;
-
- public $type;
-
- public $id = -1;
-
- public $firstOfID = false;
-
- public $changes;
-
- function __construct($type) {
- $this->type = $type;
- }
-
- public static function typeToString($type) {
- switch($type) {
- case self::NONE: return 'none';
- case self::REMOVED: return 'removed';
- case self::ADDED: return 'added';
- case self::CHANGED: return 'changed';
- }
- }
-}
-
-class DomTreeBuilder {
-
- public $textNodes = array();
-
- public $bodyNode;
-
- private $currentParent;
-
- private $newWord = '';
-
- protected $bodyStarted = false;
-
- protected $bodyEnded = false;
-
- private $whiteSpaceBeforeThis = false;
-
- private $lastSibling;
-
- private $notInPre = true;
-
- function __construct() {
- $this->bodyNode = $this->currentParent = new BodyNode();
- $this->lastSibling = new DummyNode();
- }
-
- /**
- * Must be called manually
- */
- public function endDocument() {
- $this->endWord();
- HTMLDiffer::diffDebug( count($this->textNodes) . " text nodes in document.\n" );
- }
-
- public function startElement($parser, $name, /*array*/ $attributes) {
- if (strcasecmp($name, 'body') != 0) {
- HTMLDiffer::diffDebug( "Starting $name node.\n" );
- $this->endWord();
-
- $newNode = new TagNode($this->currentParent, $name, $attributes);
- $this->currentParent->children[] = $newNode;
- $this->currentParent = $newNode;
- $this->lastSibling = new DummyNode();
- if ($this->whiteSpaceBeforeThis && !in_array(strtolower($this->currentParent->qName),TagNode::$blocks)) {
- $this->currentParent->whiteBefore = true;
- }
- $this->whiteSpaceBeforeThis = false;
- if(strcasecmp($name, 'pre') == 0) {
- $this->notInPre = false;
- }
- }
- }
-
- public function endElement($parser, $name) {
- if(strcasecmp($name, 'body') != 0) {
- HTMLDiffer::diffDebug( "Ending $name node.\n");
- if (0 == strcasecmp($name,'img')) {
- // Insert a dummy leaf for the image
- $img = new ImageNode($this->currentParent, $this->currentParent->attributes);
- $this->currentParent->children[] = $img;
- $img->whiteBefore = $this->whiteSpaceBeforeThis;
- $this->lastSibling = $img;
- $this->textNodes[] = $img;
- }
- $this->endWord();
- if (!in_array(strtolower($this->currentParent->qName),TagNode::$blocks)) {
- $this->lastSibling = $this->currentParent;
- } else {
- $this->lastSibling = new DummyNode();
- }
- $this->currentParent = $this->currentParent->parent;
- $this->whiteSpaceBeforeThis = false;
- if (!$this->notInPre && strcasecmp($name, 'pre') == 0) {
- $this->notInPre = true;
- }
- } else {
- $this->endDocument();
- }
- }
-
- const regex = '/([\s\.\,\"\\\'\(\)\?\:\;\!\{\}\-\+\*\=\_\[\]\&\|\$]{1})/';
- const whitespace = '/^[\s]{1}$/';
- const delimiter = '/^[\s\.\,\"\\\'\(\)\?\:\;\!\{\}\-\+\*\=\_\[\]\&\|\$]{1}$/';
-
- public function characters($parser, $data) {
- $matches = preg_split(self::regex, $data, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- foreach($matches as &$word) {
- if (preg_match(self::whitespace, $word) && $this->notInPre) {
- $this->endWord();
- $this->lastSibling->whiteAfter = true;
- $this->whiteSpaceBeforeThis = true;
- } else if (preg_match(self::delimiter, $word)) {
- $this->endWord();
- $textNode = new TextNode($this->currentParent, $word);
- $this->currentParent->children[] = $textNode;
- $textNode->whiteBefore = $this->whiteSpaceBeforeThis;
- $this->whiteSpaceBeforeThis = false;
- $this->lastSibling = $textNode;
- $this->textNodes[] = $textNode;
- } else {
- $this->newWord .= $word;
- }
- }
- }
-
- private function endWord() {
- if ($this->newWord !== '') {
- $node = new TextNode($this->currentParent, $this->newWord);
- $this->currentParent->children[] = $node;
- $node->whiteBefore = $this->whiteSpaceBeforeThis;
- $this->whiteSpaceBeforeThis = false;
- $this->lastSibling = $node;
- $this->textNodes[] = $node;
- $this->newWord = "";
- }
- }
-
- public function getDiffLines() {
- return array_map(array('TextNode','toDiffLine'), $this->textNodes);
- }
-}
-
-class TextNodeDiffer {
-
- private $textNodes;
- public $bodyNode;
-
- private $oldTextNodes;
- private $oldBodyNode;
-
- private $newID = 0;
-
- private $changedID = 0;
-
- private $changedIDUsed = false;
-
- // used to remove the whitespace between a red and green block
- private $whiteAfterLastChangedPart = false;
-
- private $deletedID = 0;
-
- function __construct(DomTreeBuilder $tree, DomTreeBuilder $oldTree) {
- $this->textNodes = $tree->textNodes;
- $this->bodyNode = $tree->bodyNode;
- $this->oldTextNodes = $oldTree->textNodes;
- $this->oldBodyNode = $oldTree->bodyNode;
- }
-
- public function markAsNew($start, $end) {
- if ($end <= $start) {
- return;
- }
-
- if ($this->whiteAfterLastChangedPart) {
- $this->textNodes[$start]->whiteBefore = false;
- }
-
- for ($i = $start; $i < $end; ++$i) {
- $mod = new Modification(Modification::ADDED);
- $mod->id = $this->newID;
- $this->textNodes[$i]->modification = $mod;
- }
- if ($start < $end) {
- $this->textNodes[$start]->modification->firstOfID = true;
- }
- ++$this->newID;
- }
-
- public function handlePossibleChangedPart($leftstart, $leftend, $rightstart, $rightend) {
- $i = $rightstart;
- $j = $leftstart;
-
- if ($this->changedIDUsed) {
- ++$this->changedID;
- $this->changedIDUsed = false;
- }
-
- $changes;
- while ($i < $rightend) {
- $acthis = new AncestorComparator($this->textNodes[$i]->getParentTree());
- $acother = new AncestorComparator($this->oldTextNodes[$j]->getParentTree());
- $result = $acthis->getResult($acother);
- unset($acthis, $acother);
-
- if ( $result ) {
- $mod = new Modification(Modification::CHANGED);
-
- if (!$this->changedIDUsed) {
- $mod->firstOfID = true;
- } else if (!is_null( $result ) && $result !== $this->changes) {
- ++$this->changedID;
- $mod->firstOfID = true;
- }
-
- $mod->changes = $result;
- $mod->id = $this->changedID;
-
- $this->textNodes[$i]->modification = $mod;
- $this->changes = $result;
- $this->changedIDUsed = true;
- } else if ($this->changedIDUsed) {
- ++$this->changedID;
- $this->changedIDUsed = false;
- }
- ++$i;
- ++$j;
- }
- }
-
- public function markAsDeleted($start, $end, $before) {
-
- if ($end <= $start) {
- return;
- }
-
- if ($before > 0 && $this->textNodes[$before - 1]->whiteAfter) {
- $this->whiteAfterLastChangedPart = true;
- } else {
- $this->whiteAfterLastChangedPart = false;
- }
-
- for ($i = $start; $i < $end; ++$i) {
- $mod = new Modification(Modification::REMOVED);
- $mod->id = $this->deletedID;
-
- // oldTextNodes is used here because we're going to move its deleted
- // elements to this tree!
- $this->oldTextNodes[$i]->modification = $mod;
- }
- $this->oldTextNodes[$start]->modification->firstOfID = true;
-
- $root = $this->oldTextNodes[$start]->getLastCommonParent($this->oldTextNodes[$end-1])->parent;
-
- $junk1 = $junk2 = null;
- $deletedNodes = $root->getMinimalDeletedSet($this->deletedID, $junk1, $junk2);
-
- HTMLDiffer::diffDebug( "Minimal set of deleted nodes of size " . count($deletedNodes) . "\n" );
-
- // Set prevLeaf to the leaf after which the old HTML needs to be
- // inserted
- if ($before > 0) {
- $prevLeaf = $this->textNodes[$before - 1];
- }
- // Set nextLeaf to the leaf before which the old HTML needs to be
- // inserted
- if ($before < count($this->textNodes)) {
- $nextLeaf = $this->textNodes[$before];
- }
-
- while (count($deletedNodes) > 0) {
- if (isset($prevLeaf)) {
- $prevResult = $prevLeaf->getLastCommonParent($deletedNodes[0]);
- } else {
- $prevResult = new LastCommonParentResult();
- $prevResult->parent = $this->bodyNode;
- $prevResult->indexInLastCommonParent = -1;
- }
- if (isset($nextleaf)) {
- $nextResult = $nextLeaf->getLastCommonParent($deletedNodes[count($deletedNodes) - 1]);
- } else {
- $nextResult = new LastCommonParentResult();
- $nextResult->parent = $this->bodyNode;
- $nextResult->indexInLastCommonParent = $this->bodyNode->getNbChildren();
- }
-
- if ($prevResult->lastCommonParentDepth == $nextResult->lastCommonParentDepth) {
- // We need some metric to choose which way to add-...
- if ($deletedNodes[0]->parent === $deletedNodes[count($deletedNodes) - 1]->parent
- && $prevResult->parent === $nextResult->parent) {
- // The difference is not in the parent
- $prevResult->lastCommonParentDepth = $prevResult->lastCommonParentDepth + 1;
- } else {
- // The difference is in the parent, so compare them
- // now THIS is tricky
- $distancePrev = $deletedNodes[0]->parent->getMatchRatio($prevResult->parent);
- $distanceNext = $deletedNodes[count($deletedNodes) - 1]->parent->getMatchRatio($nextResult->parent);
-
- if ($distancePrev <= $distanceNext) {
- $prevResult->lastCommonParentDepth = $prevResult->lastCommonParentDepth + 1;
- } else {
- $nextResult->lastCommonParentDepth = $nextResult->lastCommonParentDepth + 1;
- }
- }
-
- }
-
- if ($prevResult->lastCommonParentDepth > $nextResult->lastCommonParentDepth) {
- // Inserting at the front
- if ($prevResult->splittingNeeded) {
- $prevLeaf->parent->splitUntil($prevResult->parent, $prevLeaf, true);
- }
- $prevLeaf = $deletedNodes[0]->copyTree();
- unset($deletedNodes[0]);
- $deletedNodes = array_values($deletedNodes);
- $prevLeaf->setParent($prevResult->parent);
- $prevResult->parent->addChildAbsolute($prevLeaf,$prevResult->indexInLastCommonParent + 1);
- } else if ($prevResult->lastCommonParentDepth < $nextResult->lastCommonParentDepth) {
- // Inserting at the back
- if ($nextResult->splittingNeeded) {
- $splitOccured = $nextLeaf->parent->splitUntil($nextResult->parent, $nextLeaf, false);
- if ($splitOccured) {
- // The place where to insert is shifted one place to the
- // right
- $nextResult->indexInLastCommonParent = $nextResult->indexInLastCommonParent + 1;
- }
- }
- $nextLeaf = $deletedNodes[count(deletedNodes) - 1]->copyTree();
- unset($deletedNodes[count(deletedNodes) - 1]);
- $deletedNodes = array_values($deletedNodes);
- $nextLeaf->setParent($nextResult->parent);
- $nextResult->parent->addChildAbsolute($nextLeaf,$nextResult->indexInLastCommonParent);
- }
- }
- ++$this->deletedID;
- }
-
- public function expandWhiteSpace() {
- $this->bodyNode->expandWhiteSpace();
- }
-
- public function lengthNew(){
- return count($this->textNodes);
- }
-
- public function lengthOld(){
- return count($this->oldTextNodes);
- }
-}
-
-class HTMLDiffer {
-
- private $output;
- private static $debug = '';
-
- function __construct($output) {
- $this->output = $output;
- }
-
- function htmlDiff($from, $to) {
- wfProfileIn( __METHOD__ );
- // Create an XML parser
- $xml_parser = xml_parser_create('');
-
- $domfrom = new DomTreeBuilder();
-
- // Set the functions to handle opening and closing tags
- xml_set_element_handler($xml_parser, array($domfrom, "startElement"), array($domfrom, "endElement"));
-
- // Set the function to handle blocks of character data
- xml_set_character_data_handler($xml_parser, array($domfrom, "characters"));
-
- HTMLDiffer::diffDebug( "Parsing " . strlen($from) . " characters worth of HTML\n" );
- if (!xml_parse($xml_parser, '<?xml version="1.0" encoding="UTF-8"?>'.Sanitizer::hackDocType().'<body>', false)
- || !xml_parse($xml_parser, $from, false)
- || !xml_parse($xml_parser, '</body>', true)){
- $error = xml_error_string(xml_get_error_code($xml_parser));
- $line = xml_get_current_line_number($xml_parser);
- HTMLDiffer::diffDebug( "XML error: $error at line $line\n" );
- }
- xml_parser_free($xml_parser);
- unset($from);
-
- $xml_parser = xml_parser_create('');
-
- $domto = new DomTreeBuilder();
-
- // Set the functions to handle opening and closing tags
- xml_set_element_handler($xml_parser, array($domto, "startElement"), array($domto, "endElement"));
-
- // Set the function to handle blocks of character data
- xml_set_character_data_handler($xml_parser, array($domto, "characters"));
-
- HTMLDiffer::diffDebug( "Parsing " . strlen($to) . " characters worth of HTML\n" );
- if (!xml_parse($xml_parser, '<?xml version="1.0" encoding="UTF-8"?>'.Sanitizer::hackDocType().'<body>', false)
- || !xml_parse($xml_parser, $to, false)
- || !xml_parse($xml_parser, '</body>', true)){
- $error = xml_error_string(xml_get_error_code($xml_parser));
- $line = xml_get_current_line_number($xml_parser);
- HTMLDiffer::diffDebug( "XML error: $error at line $line\n" );
- }
- xml_parser_free($xml_parser);
- unset($to);
-
- $diffengine = new WikiDiff3();
- $differences = $this->preProcess($diffengine->diff_range($domfrom->getDiffLines(), $domto->getDiffLines()));
- unset($xml_parser, $diffengine);
-
- $domdiffer = new TextNodeDiffer($domto, $domfrom);
-
- $currentIndexLeft = 0;
- $currentIndexRight = 0;
- foreach ($differences as &$d) {
- if ($d->leftstart > $currentIndexLeft) {
- $domdiffer->handlePossibleChangedPart($currentIndexLeft, $d->leftstart,
- $currentIndexRight, $d->rightstart);
- }
- if ($d->leftlength > 0) {
- $domdiffer->markAsDeleted($d->leftstart, $d->leftend, $d->rightstart);
- }
- $domdiffer->markAsNew($d->rightstart, $d->rightend);
-
- $currentIndexLeft = $d->leftend;
- $currentIndexRight = $d->rightend;
- }
- $oldLength = $domdiffer->lengthOld();
- if ($currentIndexLeft < $oldLength) {
- $domdiffer->handlePossibleChangedPart($currentIndexLeft, $oldLength, $currentIndexRight, $domdiffer->lengthNew());
- }
- $domdiffer->expandWhiteSpace();
- $output = new HTMLOutput('htmldiff', $this->output);
- $output->parse($domdiffer->bodyNode);
- wfProfileOut( __METHOD__ );
- }
-
- private function preProcess(/*array*/ $differences) {
- $newRanges = array();
-
- $nbDifferences = count($differences);
- for ($i = 0; $i < $nbDifferences; ++$i) {
- $leftStart = $differences[$i]->leftstart;
- $leftEnd = $differences[$i]->leftend;
- $rightStart = $differences[$i]->rightstart;
- $rightEnd = $differences[$i]->rightend;
-
- $leftLength = $leftEnd - $leftStart;
- $rightLength = $rightEnd - $rightStart;
-
- while ($i + 1 < $nbDifferences && self::score($leftLength,
- $differences[$i + 1]->leftlength,
- $rightLength,
- $differences[$i + 1]->rightlength)
- > ($differences[$i + 1]->leftstart - $leftEnd)) {
- $leftEnd = $differences[$i + 1]->leftend;
- $rightEnd = $differences[$i + 1]->rightend;
- $leftLength = $leftEnd - $leftStart;
- $rightLength = $rightEnd - $rightStart;
- ++$i;
- }
- $newRanges[] = new RangeDifference($leftStart, $leftEnd, $rightStart, $rightEnd);
- }
- return $newRanges;
- }
-
- /**
- * Heuristic to merge differences for readability.
- */
- public static function score($ll, $nll, $rl, $nrl) {
- if (($ll == 0 && $nll == 0)
- || ($rl == 0 && $nrl == 0)) {
- return 0;
- }
- $numbers = array($ll, $nll, $rl, $nrl);
- $d = 0;
- foreach ($numbers as &$number) {
- while ($number > 3) {
- $d += 3;
- $number -= 3;
- $number *= 0.5;
- }
- $d += $number;
-
- }
- return $d / (1.5 * count($numbers));
- }
-
- /**
- * Add to debug output
- * @param string $str Debug output
- */
- public static function diffDebug( $str ) {
- self :: $debug .= $str;
- }
-
- /**
- * Get debug output
- * @return string
- */
- public static function getDebugOutput() {
- return self :: $debug;
- }
-
-}
-
-class TextOnlyComparator {
-
- public $leafs = array();
-
- function _construct(TagNode $tree) {
- $this->addRecursive($tree);
- $this->leafs = array_map(array('TextNode','toDiffLine'), $this->leafs);
- }
-
- private function addRecursive(TagNode $tree) {
- foreach ($tree->children as &$child) {
- if ($child instanceof TagNode) {
- $this->addRecursive($child);
- } else if ($child instanceof TextNode) {
- $this->leafs[] = $node;
- }
- }
- }
-
- public function getMatchRatio(TextOnlyComparator $other) {
- $nbOthers = count($other->leafs);
- $nbThis = count($this->leafs);
- if($nbOthers == 0 || $nbThis == 0){
- return -log(0);
- }
-
- $diffengine = new WikiDiff3(25000, 1.35);
- $diffengine->diff($this->leafs, $other->leafs);
-
- $lcsLength = $diffengine->getLcsLength();
-
- $distanceThis = $nbThis-$lcsLength;
-
- return (2.0 - $lcsLength/$nbOthers - $lcsLength/$nbThis) / 2.0;
- }
-}
-
-/**
- * A comparator used when calculating the difference in ancestry of two Nodes.
- */
-class AncestorComparator {
-
- public $ancestors;
- public $ancestorsText;
-
- function __construct(/*array*/ $ancestors) {
- $this->ancestors = $ancestors;
- $this->ancestorsText = array_map(array('TagNode','toDiffLine'), $ancestors);
- }
-
- public $compareTxt = "";
-
- public function getResult(AncestorComparator $other) {
-
- $diffengine = new WikiDiff3(10000, 1.35);
- $differences = $diffengine->diff_range($other->ancestorsText,$this->ancestorsText);
-
- if (count($differences) == 0){
- return null;
- }
- $changeTxt = new ChangeTextGenerator($this, $other);
-
- return $changeTxt->getChanged($differences)->toString();;
- }
-}
-
-class ChangeTextGenerator {
-
- private $ancestorComparator;
- private $other;
-
- private $factory;
-
- function __construct(AncestorComparator $ancestorComparator, AncestorComparator $other) {
- $this->ancestorComparator = $ancestorComparator;
- $this->other = $other;
- $this->factory = new TagToStringFactory();
- }
-
- public function getChanged(/*array*/ $differences) {
- $txt = new ChangeText;
- $rootlistopened = false;
- if (count($differences) > 1) {
- $txt->addHtml('<ul class="changelist">');
- $rootlistopened = true;
- }
- $nbDifferences = count($differences);
- for ($j = 0; $j < $nbDifferences; ++$j) {
- $d = $differences[$j];
- $lvl1listopened = false;
- if ($rootlistopened) {
- $txt->addHtml('<li>');
- }
- if ($d->leftlength + $d->rightlength > 1) {
- $txt->addHtml('<ul class="changelist">');
- $lvl1listopened = true;
- }
- // left are the old ones
- for ($i = $d->leftstart; $i < $d->leftend; ++$i) {
- if ($lvl1listopened){
- $txt->addHtml('<li>');
- }
- // add a bullet for a old tag
- $this->addTagOld($txt, $this->other->ancestors[$i]);
- if ($lvl1listopened){
- $txt->addHtml('</li>');
- }
- }
- // right are the new ones
- for ($i = $d->rightstart; $i < $d->rightend; ++$i) {
- if ($lvl1listopened){
- $txt->addHtml('<li>');
- }
- // add a bullet for a new tag
- $this->addTagNew($txt, $this->ancestorComparator->ancestors[$i]);
-
- if ($lvl1listopened){
- $txt->addHtml('</li>');
- }
- }
- if ($lvl1listopened) {
- $txt->addHtml('</ul>');
- }
- if ($rootlistopened) {
- $txt->addHtml('</li>');
- }
- }
- if ($rootlistopened) {
- $txt->addHtml('</ul>');
- }
- return $txt;
- }
-
- private function addTagOld(ChangeText $txt, TagNode $ancestor) {
- $this->factory->create($ancestor)->getRemovedDescription($txt);
- }
-
- private function addTagNew(ChangeText $txt, TagNode $ancestor) {
- $this->factory->create($ancestor)->getAddedDescription($txt);
- }
-}
-
-class ChangeText {
-
- private $txt = "";
-
- public function addHtml($s) {
- $this->txt .= $s;
- }
-
- public function toString() {
- return $this->txt;
- }
-}
-
-class TagToStringFactory {
-
- private static $containerTags = array('html', 'body', 'p', 'blockquote',
- 'h1', 'h2', 'h3', 'h4', 'h5', 'pre', 'div', 'ul', 'ol', 'li',
- 'table', 'tbody', 'tr', 'td', 'th', 'br', 'hr', 'code', 'dl',
- 'dt', 'dd', 'input', 'form', 'img', 'span', 'a');
-
- private static $styleTags = array('i', 'b', 'strong', 'em', 'font',
- 'big', 'del', 'tt', 'sub', 'sup', 'strike');
-
- const MOVED = 1;
- const STYLE = 2;
- const UNKNOWN = 4;
-
- public function create(TagNode $node) {
- $sem = $this->getChangeSemantic($node->qName);
- if (strcasecmp($node->qName,'a') == 0) {
- return new AnchorToString($node, $sem);
- }
- if (strcasecmp($node->qName,'img') == 0) {
- return new NoContentTagToString($node, $sem);
- }
- return new TagToString($node, $sem);
- }
-
- protected function getChangeSemantic($qname) {
- if (in_array(strtolower($qname),self::$containerTags)) {
- return self::MOVED;
- }
- if (in_array(strtolower($qname),self::$styleTags)) {
- return self::STYLE;
- }
- return self::UNKNOWN;
- }
-}
-
-class TagToString {
-
- protected $node;
-
- protected $sem;
-
- function __construct(TagNode $node, $sem) {
- $this->node = $node;
- $this->sem = $sem;
- }
-
- public function getRemovedDescription(ChangeText $txt) {
- $tagDescription = wfMsgExt('diff-' . $this->node->qName, 'parseinline' );
- if( wfEmptyMsg( 'diff-' . $this->node->qName, $tagDescription ) ){
- $tagDescription = "&lt;" . $this->node->qName . "&gt;";
- }
- if ($this->sem == TagToStringFactory::MOVED) {
- $txt->addHtml( wfMsgExt( 'diff-movedoutof', 'parseinline', $tagDescription ) );
- } else if ($this->sem == TagToStringFactory::STYLE) {
- $txt->addHtml( wfMsgExt( 'diff-styleremoved' , 'parseinline', $tagDescription ) );
- } else {
- $txt->addHtml( wfMsgExt( 'diff-removed' , 'parseinline', $tagDescription ) );
- }
- $this->addAttributes($txt, $this->node->attributes);
- $txt->addHtml('.');
- }
-
- public function getAddedDescription(ChangeText $txt) {
- $tagDescription = wfMsgExt('diff-' . $this->node->qName, 'parseinline' );
- if( wfEmptyMsg( 'diff-' . $this->node->qName, $tagDescription ) ){
- $tagDescription = "&lt;" . $this->node->qName . "&gt;";
- }
- if ($this->sem == TagToStringFactory::MOVED) {
- $txt->addHtml( wfMsgExt( 'diff-movedto' , 'parseinline', $tagDescription) );
- } else if ($this->sem == TagToStringFactory::STYLE) {
- $txt->addHtml( wfMsgExt( 'diff-styleadded', 'parseinline', $tagDescription ) );
- } else {
- $txt->addHtml( wfMsgExt( 'diff-added', 'parseinline', $tagDescription ) );
- }
- $this->addAttributes($txt, $this->node->attributes);
- $txt->addHtml('.');
- }
-
- protected function addAttributes(ChangeText $txt, array $attributes) {
- if (count($attributes) < 1) {
- return;
- }
- $firstOne = true;
- $nbAttributes_min_1 = count($attributes)-1;
- $keys = array_keys($attributes);
- for ($i=0;$i<$nbAttributes_min_1;$i++) {
- $key = $keys[$i];
- $attr = $attributes[$key];
- if($firstOne) {
- $firstOne = false;
- $txt->addHtml( wfMsgExt('diff-with', 'escapenoentities', $this->translateArgument($key), htmlspecialchars($attr) ) );
- continue;
- }
- $txt->addHtml( wfMsgExt( 'comma-separator', 'escapenoentities' ) .
- wfMsgExt( 'diff-with-additional', 'escapenoentities',
- $this->translateArgument( $key ), htmlspecialchars( $attr ) )
- );
- }
-
- if ($nbAttributes_min_1 > 0) {
- $txt->addHtml( wfMsgExt( 'diff-with-final', 'escapenoentities',
- $this->translateArgument($keys[$nbAttributes_min_1]),
- htmlspecialchars($attributes[$keys[$nbAttributes_min_1]]) ) );
- }
- }
-
- protected function translateArgument($name) {
- $translation = wfMsgExt('diff-' . $name, 'parseinline' );
- if ( wfEmptyMsg( 'diff-' . $name, $translation ) ) {
- $translation = "&lt;" . $name . "&gt;";;
- }
- return htmlspecialchars( $translation );
- }
-}
-
-class NoContentTagToString extends TagToString {
-
- function __construct(TagNode $node, $sem) {
- parent::__construct($node, $sem);
- }
-
- public function getAddedDescription(ChangeText $txt) {
- $tagDescription = wfMsgExt('diff-' . $this->node->qName, 'parseinline' );
- if( wfEmptyMsg( 'diff-' . $this->node->qName, $tagDescription ) ){
- $tagDescription = "&lt;" . $this->node->qName . "&gt;";
- }
- $txt->addHtml( wfMsgExt('diff-changedto', 'parseinline', $tagDescription ) );
- $this->addAttributes($txt, $this->node->attributes);
- $txt->addHtml('.');
- }
-
- public function getRemovedDescription(ChangeText $txt) {
- $tagDescription = wfMsgExt('diff-' . $this->node->qName, 'parseinline' );
- if( wfEmptyMsg( 'diff-' . $this->node->qName, $tagDescription ) ){
- $tagDescription = "&lt;" . $this->node->qName . "&gt;";
- }
- $txt->addHtml( wfMsgExt('diff-changedfrom', 'parseinline', $tagDescription ) );
- $this->addAttributes($txt, $this->node->attributes);
- $txt->addHtml('.');
- }
-}
-
-class AnchorToString extends TagToString {
-
- function __construct(TagNode $node, $sem) {
- parent::__construct($node, $sem);
- }
-
- protected function addAttributes(ChangeText $txt, array $attributes) {
- if (array_key_exists('href', $attributes)) {
- $txt->addHtml(' ' . wfMsgExt( 'diff-withdestination', 'parseinline', htmlspecialchars($attributes['href']) ) );
- unset($attributes['href']);
- }
- parent::addAttributes($txt, $attributes);
- }
-}
-
-/**
- * Takes a branch root and creates an HTML file for it.
- */
-class HTMLOutput{
-
- private $prefix;
- private $handler;
-
- function __construct($prefix, $handler) {
- $this->prefix = $prefix;
- $this->handler = $handler;
- }
-
- public function parse(TagNode $node) {
- $handler = &$this->handler;
-
- if (strcasecmp($node->qName, 'img') != 0 && strcasecmp($node->qName, 'body') != 0) {
- $handler->startElement($node->qName, $node->attributes);
- }
-
- $newStarted = false;
- $remStarted = false;
- $changeStarted = false;
- $changeTXT = '';
-
- foreach ($node->children as &$child) {
- if ($child instanceof TagNode) {
- if ($newStarted) {
- $handler->endElement('span');
- $newStarted = false;
- } else if ($changeStarted) {
- $handler->endElement('span');
- $changeStarted = false;
- } else if ($remStarted) {
- $handler->endElement('span');
- $remStarted = false;
- }
- $this->parse($child);
- } else if ($child instanceof TextNode) {
- $mod = $child->modification;
-
- if ($newStarted && ($mod->type != Modification::ADDED || $mod->firstOfID)) {
- $handler->endElement('span');
- $newStarted = false;
- } else if ($changeStarted && ($mod->type != Modification::CHANGED
- || $mod->changes != $changeTXT || $mod->firstOfID)) {
- $handler->endElement('span');
- $changeStarted = false;
- } else if ($remStarted && ($mod->type != Modification::REMOVED || $mod ->firstOfID)) {
- $handler->endElement('span');
- $remStarted = false;
- }
-
- // no else because a removed part can just be closed and a new
- // part can start
- if (!$newStarted && $mod->type == Modification::ADDED) {
- $attrs = array('class' => 'diff-html-added');
- if ($mod->firstOfID) {
- $attrs['id'] = "added-{$this->prefix}-{$mod->id}";
- }
- $handler->startElement('span', $attrs);
- $newStarted = true;
- } else if (!$changeStarted && $mod->type == Modification::CHANGED) {
- $attrs = array('class' => 'diff-html-changed');
- if ($mod->firstOfID) {
- $attrs['id'] = "changed-{$this->prefix}-{$mod->id}";
- }
- $handler->startElement('span', $attrs);
-
- //tooltip
- $handler->startElement('span', array('class' => 'tip'));
- $handler->html($mod->changes);
- $handler->endElement('span');
-
- $changeStarted = true;
- $changeTXT = $mod->changes;
- } else if (!$remStarted && $mod->type == Modification::REMOVED) {
- $attrs = array('class'=>'diff-html-removed');
- if ($mod->firstOfID) {
- $attrs['id'] = "removed-{$this->prefix}-{$mod->id}";
- }
- $handler->startElement('span', $attrs);
- $remStarted = true;
- }
-
- $chars = $child->text;
-
- if ($child instanceof ImageNode) {
- $this->writeImage($child);
- } else {
- $handler->characters($chars);
- }
- }
- }
-
- if ($newStarted) {
- $handler->endElement('span');
- $newStarted = false;
- } else if ($changeStarted) {
- $handler->endElement('span');
- $changeStarted = false;
- } else if ($remStarted) {
- $handler->endElement('span');
- $remStarted = false;
- }
-
- if (strcasecmp($node->qName, 'img') != 0
- && strcasecmp($node->qName, 'body') != 0) {
- $handler->endElement($node->qName);
- }
- }
-
- private function writeImage(ImageNode $imgNode) {
- $attrs = $imgNode->attributes;
- $this->handler->startElement('img', $attrs);
- $this->handler->endElement('img');
- }
-}
-
-class DelegatingContentHandler {
-
- private $delegate;
-
- function __construct($delegate) {
- $this->delegate = $delegate;
- }
-
- function startElement($qname, /*array*/ $arguments) {
- $this->delegate->addHtml(Xml::openElement($qname, $arguments));
- }
-
- function endElement($qname){
- $this->delegate->addHtml(Xml::closeElement($qname));
- }
-
- function characters($chars){
- $this->delegate->addHtml(htmlspecialchars($chars));
- }
-
- function html($html){
- $this->delegate->addHtml($html);
- }
-}
diff --git a/includes/diff/Nodes.php b/includes/diff/Nodes.php
deleted file mode 100644
index 1b1363d4..00000000
--- a/includes/diff/Nodes.php
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-
-/** Copyright (C) 2008 Guy Van den Broeck <guy@guyvdb.eu>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * or see http://www.gnu.org/
- *
- */
-
-/**
- * Any element in the DOM tree of an HTML document.
- * @ingroup DifferenceEngine
- */
-class Node {
-
- public $parent;
-
- protected $parentTree;
-
- public $whiteBefore = false;
-
- public $whiteAfter = false;
-
- function __construct($parent) {
- $this->parent = $parent;
- }
-
- public function getParentTree() {
- if (!isset($this->parentTree)) {
- if (!is_null($this->parent)) {
- $this->parentTree = $this->parent->getParentTree();
- $this->parentTree[] = $this->parent;
- } else {
- $this->parentTree = array();
- }
- }
- return $this->parentTree;
- }
-
- public function getLastCommonParent(Node $other) {
- $result = new LastCommonParentResult();
-
- $myParents = $this->getParentTree();
- $otherParents = $other->getParentTree();
-
- $i = 1;
- $isSame = true;
- $nbMyParents = count($myParents);
- $nbOtherParents = count($otherParents);
- while ($isSame && $i < $nbMyParents && $i < $nbOtherParents) {
- if (!$myParents[$i]->openingTag === $otherParents[$i]->openingTag) {
- $isSame = false;
- } else {
- // After a while, the index i-1 must be the last common parent
- $i++;
- }
- }
-
- $result->lastCommonParentDepth = $i - 1;
- $result->parent = $myParents[$i - 1];
-
- if (!$isSame || $nbMyParents > $nbOtherParents) {
- // Not all tags matched, or all tags matched but
- // there are tags left in this tree
- $result->indexInLastCommonParent = $myParents[$i - 1]->getIndexOf($myParents[$i]);
- $result->splittingNeeded = true;
- } else if ($nbMyParents <= $nbOtherParents) {
- $result->indexInLastCommonParent = $myParents[$i - 1]->getIndexOf($this);
- }
- return $result;
- }
-
- public function setParent($parent) {
- $this->parent = $parent;
- unset($this->parentTree);
- }
-
- public function inPre() {
- $tree = $this->getParentTree();
- foreach ($tree as &$ancestor) {
- if ($ancestor->isPre()) {
- return true;
- }
- }
- return false;
- }
-}
-
-/**
- * Node that can contain other nodes. Represents an HTML tag.
- * @ingroup DifferenceEngine
- */
-class TagNode extends Node {
-
- public $children = array();
-
- public $qName;
-
- public $attributes = array();
-
- public $openingTag;
-
- function __construct($parent, $qName, /*array*/ $attributes) {
- parent::__construct($parent);
- $this->qName = strtolower($qName);
- foreach($attributes as $key => &$value){
- $this->attributes[strtolower($key)] = $value;
- }
- return $this->openingTag = Xml::openElement($this->qName, $this->attributes);
- }
-
- public function addChildAbsolute(Node $node, $index) {
- array_splice($this->children, $index, 0, array($node));
- }
-
- public function getIndexOf(Node $child) {
- // don't trust array_search with objects
- foreach ($this->children as $key => &$value){
- if ($value === $child) {
- return $key;
- }
- }
- return null;
- }
-
- public function getNbChildren() {
- return count($this->children);
- }
-
- public function getMinimalDeletedSet($id, &$allDeleted, &$somethingDeleted) {
- $nodes = array();
-
- $allDeleted = false;
- $somethingDeleted = false;
- $hasNonDeletedDescendant = false;
-
- if (empty($this->children)) {
- return $nodes;
- }
-
- foreach ($this->children as &$child) {
- $allDeleted_local = false;
- $somethingDeleted_local = false;
- $childrenChildren = $child->getMinimalDeletedSet($id, $allDeleted_local, $somethingDeleted_local);
- if ($somethingDeleted_local) {
- $nodes = array_merge($nodes, $childrenChildren);
- $somethingDeleted = true;
- }
- if (!$allDeleted_local) {
- $hasNonDeletedDescendant = true;
- }
- }
- if (!$hasNonDeletedDescendant) {
- $nodes = array($this);
- $allDeleted = true;
- }
- return $nodes;
- }
-
- public function splitUntil(TagNode $parent, Node $split, $includeLeft) {
- $splitOccured = false;
- if ($parent !== $this) {
- $part1 = new TagNode(null, $this->qName, $this->attributes);
- $part2 = new TagNode(null, $this->qName, $this->attributes);
- $part1->setParent($this->parent);
- $part2->setParent($this->parent);
-
- $onSplit = false;
- $pastSplit = false;
- foreach ($this->children as &$child)
- {
- if ($child === $split) {
- $onSplit = true;
- }
- if(!$pastSplit || ($onSplit && $includeLeft)) {
- $child->setParent($part1);
- $part1->children[] = $child;
- } else {
- $child->setParent($part2);
- $part2->children[] = $child;
- }
- if ($onSplit) {
- $onSplit = false;
- $pastSplit = true;
- }
- }
- $myindexinparent = $this->parent->getIndexOf($this);
- if (!empty($part1->children)) {
- $this->parent->addChildAbsolute($part1, $myindexinparent);
- }
- if (!empty($part2->children)) {
- $this->parent->addChildAbsolute($part2, $myindexinparent);
- }
- if (!empty($part1->children) && !empty($part2->children)) {
- $splitOccured = true;
- }
-
- $this->parent->removeChild($myindexinparent);
-
- if ($includeLeft) {
- $this->parent->splitUntil($parent, $part1, $includeLeft);
- } else {
- $this->parent->splitUntil($parent, $part2, $includeLeft);
- }
- }
- return $splitOccured;
-
- }
-
- private function removeChild($index) {
- unset($this->children[$index]);
- $this->children = array_values($this->children);
- }
-
- public static $blocks = array('html', 'body','p','blockquote', 'h1',
- 'h2', 'h3', 'h4', 'h5', 'pre', 'div', 'ul', 'ol', 'li', 'table',
- 'tbody', 'tr', 'td', 'th', 'br');
-
- public function copyTree() {
- $newThis = new TagNode(null, $this->qName, $this->attributes);
- $newThis->whiteBefore = $this->whiteBefore;
- $newThis->whiteAfter = $this->whiteAfter;
- foreach ($this->children as &$child) {
- $newChild = $child->copyTree();
- $newChild->setParent($newThis);
- $newThis->children[] = $newChild;
- }
- return $newThis;
- }
-
- public function getMatchRatio(TagNode $other) {
- $txtComp = new TextOnlyComparator($other);
- return $txtComp->getMatchRatio(new TextOnlyComparator($this));
- }
-
- public function expandWhiteSpace() {
- $shift = 0;
- $spaceAdded = false;
-
- $nbOriginalChildren = $this->getNbChildren();
- for ($i = 0; $i < $nbOriginalChildren; ++$i) {
- $child = $this->children[$i + $shift];
-
- if ($child instanceof TagNode) {
- if (!$child->isPre()) {
- $child->expandWhiteSpace();
- }
- }
- if (!$spaceAdded && $child->whiteBefore) {
- $ws = new WhiteSpaceNode(null, ' ', $child->getLeftMostChild());
- $ws->setParent($this);
- $this->addChildAbsolute($ws,$i + ($shift++));
- }
- if ($child->whiteAfter) {
- $ws = new WhiteSpaceNode(null, ' ', $child->getRightMostChild());
- $ws->setParent($this);
- $this->addChildAbsolute($ws,$i + 1 + ($shift++));
- $spaceAdded = true;
- } else {
- $spaceAdded = false;
- }
-
- }
- }
-
- public function getLeftMostChild() {
- if (empty($this->children)) {
- return $this;
- }
- return $this->children[0]->getLeftMostChild();
- }
-
- public function getRightMostChild() {
- if (empty($this->children)) {
- return $this;
- }
- return $this->children[$this->getNbChildren() - 1]->getRightMostChild();
- }
-
- public function isPre() {
- return 0 == strcasecmp($this->qName,'pre');
- }
-
- public static function toDiffLine(TagNode $node) {
- return $node->openingTag;
- }
-}
-
-/**
- * Represents a piece of text in the HTML file.
- * @ingroup DifferenceEngine
- */
-class TextNode extends Node {
-
- public $text;
-
- public $modification;
-
- function __construct($parent, $text) {
- parent::__construct($parent);
- $this->modification = new Modification(Modification::NONE);
- $this->text = $text;
- }
-
- public function copyTree() {
- $clone = clone $this;
- $clone->setParent(null);
- return $clone;
- }
-
- public function getLeftMostChild() {
- return $this;
- }
-
- public function getRightMostChild() {
- return $this;
- }
-
- public function getMinimalDeletedSet($id, &$allDeleted, &$somethingDeleted) {
- if ($this->modification->type == Modification::REMOVED
- && $this->modification->id == $id){
- $somethingDeleted = true;
- $allDeleted = true;
- return array($this);
- }
- return array();
- }
-
- public function isSameText($other) {
- if (is_null($other) || ! $other instanceof TextNode) {
- return false;
- }
- return str_replace('\n', ' ',$this->text) === str_replace('\n', ' ',$other->text);
- }
-
- public static function toDiffLine(TextNode $node) {
- return str_replace('\n', ' ',$node->text);
- }
-}
-
-/**
- * @todo Document
- * @ingroup DifferenceEngine
- */
-class WhiteSpaceNode extends TextNode {
-
- function __construct($parent, $s, Node $like = null) {
- parent::__construct($parent, $s);
- if(!is_null($like) && $like instanceof TextNode) {
- $newModification = clone $like->modification;
- $newModification->firstOfID = false;
- $this->modification = $newModification;
- }
- }
-}
-
-/**
- * Represents the root of a HTML document.
- * @ingroup DifferenceEngine
- */
-class BodyNode extends TagNode {
-
- function __construct() {
- parent::__construct(null, 'body', array());
- }
-
- public function copyTree() {
- $newThis = new BodyNode();
- foreach ($this->children as &$child) {
- $newChild = $child->copyTree();
- $newChild->setParent($newThis);
- $newThis->children[] = $newChild;
- }
- return $newThis;
- }
-
- public function getMinimalDeletedSet($id, &$allDeleted, &$somethingDeleted) {
- $nodes = array();
- foreach ($this->children as &$child) {
- $childrenChildren = $child->getMinimalDeletedSet($id,
- $allDeleted, $somethingDeleted);
- $nodes = array_merge($nodes, $childrenChildren);
- }
- return $nodes;
- }
-
-}
-
-/**
- * Represents an image in HTML. Even though images do not contain any text they
- * are independent visible objects on the page. They are logically a TextNode.
- * @ingroup DifferenceEngine
- */
-class ImageNode extends TextNode {
-
- public $attributes;
-
- function __construct(TagNode $parent, /*array*/ $attrs) {
- if(!array_key_exists('src', $attrs)) {
- HTMLDiffer::diffDebug( "Image without a source\n" );
- parent::__construct($parent, '<img></img>');
- }else{
- parent::__construct($parent, '<img>' . strtolower($attrs['src']) . '</img>');
- }
- $this->attributes = $attrs;
- }
-
- public function isSameText($other) {
- if (is_null($other) || ! $other instanceof ImageNode) {
- return false;
- }
- return $this->text === $other->text;
- }
-
-}
-
-/**
- * No-op node
- * @ingroup DifferenceEngine
- */
-class DummyNode extends Node {
-
- function __construct() {
- // no op
- }
-
-}
diff --git a/includes/extauth/Hardcoded.php b/includes/extauth/Hardcoded.php
new file mode 100644
index 00000000..a9a60bea
--- /dev/null
+++ b/includes/extauth/Hardcoded.php
@@ -0,0 +1,79 @@
+<?php
+
+# Copyright (C) 2009 Aryeh Gregor
+#
+# 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
+
+/**
+ * This class supports external authentication from a literal array dumped in
+ * LocalSettings.php. It's mostly useful for testing. Example configuration:
+ *
+ * $wgExternalAuthType = 'ExternalUser_Hardcoded';
+ * $wgExternalAuthConf = array(
+ * 'Bob Smith' => array(
+ * 'password' => 'literal string',
+ * 'emailaddress' => 'bob@example.com',
+ * ),
+ * );
+ *
+ * Multiple names may be provided. The keys of the inner arrays can be either
+ * 'password', or the name of any preference.
+ *
+ * @ingroup ExternalUser
+ */
+class ExternalUser_Hardcoded extends ExternalUser {
+ private $mName;
+
+ protected function initFromName( $name ) {
+ global $wgExternalAuthConf;
+
+ if ( isset( $wgExternalAuthConf[$name] ) ) {
+ $this->mName = $name;
+ return true;
+ }
+ return false;
+ }
+
+ protected function initFromId( $id ) {
+ return $this->initFromName( $id );
+ }
+
+ public function getId() {
+ return $this->mName;
+ }
+
+ public function getName() {
+ return $this->mName;
+ }
+
+ public function authenticate( $password ) {
+ global $wgExternalAuthConf;
+
+ return isset( $wgExternalAuthConf[$this->mName]['password'] )
+ && $wgExternalAuthConf[$this->mName]['password'] == $password;
+ }
+
+ public function getPref( $pref ) {
+ global $wgExternalAuthConf;
+
+ if ( isset( $wgExternalAuthConf[$this->mName][$pref] ) ) {
+ return $wgExternalAuthConf[$this->mName][$pref];
+ }
+ return null;
+ }
+
+ # TODO: Implement setPref() via regex on LocalSettings. (Just kidding.)
+}
diff --git a/includes/extauth/MediaWiki.php b/includes/extauth/MediaWiki.php
new file mode 100644
index 00000000..7d6a3c71
--- /dev/null
+++ b/includes/extauth/MediaWiki.php
@@ -0,0 +1,141 @@
+<?php
+
+# Copyright (C) 2009 Aryeh Gregor
+#
+# 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
+
+/**
+ * This class supports authentication against an external MediaWiki database,
+ * probably any version back to 1.5 or something. Example configuration:
+ *
+ * $wgExternalAuthType = 'ExternalUser_MediaWiki';
+ * $wgExternalAuthConf = array(
+ * 'DBtype' => 'mysql',
+ * 'DBserver' => 'localhost',
+ * 'DBname' => 'wikidb',
+ * 'DBuser' => 'quasit',
+ * 'DBpassword' => 'a5Cr:yf9u-6[{`g',
+ * 'DBprefix' => '',
+ * );
+ *
+ * All fields must be present. These mean the same things as $wgDBtype,
+ * $wgDBserver, etc. This implementation is quite crude; it could easily
+ * support multiple database servers, for instance, and memcached, and it
+ * probably has bugs. Kind of hard to reuse code when things might rely on who
+ * knows what configuration globals.
+ *
+ * If either wiki uses the UserComparePasswords hook, password authentication
+ * might fail unexpectedly unless they both do the exact same validation.
+ * There may be other corner cases like this where this will fail, but it
+ * should be unlikely.
+ *
+ * @ingroup ExternalUser
+ */
+class ExternalUser_MediaWiki extends ExternalUser {
+ private $mRow, $mDb;
+
+ protected function initFromName( $name ) {
+ # We might not need the 'usable' bit, but let's be safe. Theoretically
+ # this might return wrong results for old versions, but it's probably
+ # good enough.
+ $name = User::getCanonicalName( $name, 'usable' );
+
+ if ( !is_string( $name ) ) {
+ return false;
+ }
+
+ return $this->initFromCond( array( 'user_name' => $name ) );
+ }
+
+ protected function initFromId( $id ) {
+ return $this->initFromCond( array( 'user_id' => $id ) );
+ }
+
+ private function initFromCond( $cond ) {
+ global $wgExternalAuthConf;
+
+ $class = 'Database' . $wgExternalAuthConf['DBtype'];
+ $this->mDb = new $class(
+ $wgExternalAuthConf['DBserver'],
+ $wgExternalAuthConf['DBuser'],
+ $wgExternalAuthConf['DBpassword'],
+ $wgExternalAuthConf['DBname'],
+ false,
+ 0,
+ $wgExternalAuthConf['DBprefix']
+ );
+
+ $row = $this->mDb->selectRow(
+ 'user',
+ array(
+ 'user_name', 'user_id', 'user_password', 'user_email',
+ 'user_email_authenticated'
+ ),
+ $cond,
+ __METHOD__
+ );
+ if ( !$row ) {
+ return false;
+ }
+ $this->mRow = $row;
+
+ return true;
+ }
+
+ # TODO: Implement initFromCookie().
+
+ public function getId() {
+ return $this->mRow->user_id;
+ }
+
+ public function getName() {
+ return $this->mRow->user_name;
+ }
+
+ public function authenticate( $password ) {
+ # This might be wrong if anyone actually uses the UserComparePasswords hook
+ # (on either end), so don't use this if you those are incompatible.
+ return User::comparePasswords( $this->mRow->user_password, $password,
+ $this->mRow->user_id );
+ }
+
+ public function getPref( $pref ) {
+ # FIXME: Return other prefs too. Lots of global-riddled code that does
+ # this normally.
+ if ( $pref === 'emailaddress'
+ && $this->row->user_email_authenticated !== null ) {
+ return $this->mRow->user_email;
+ }
+ return null;
+ }
+
+ public function getGroups() {
+ # FIXME: Untested.
+ $groups = array();
+ $res = $this->mDb->select(
+ 'user_groups',
+ 'ug_group',
+ array( 'ug_user' => $this->mRow->user_id ),
+ __METHOD__
+ );
+ foreach ( $res as $row ) {
+ $groups[] = $row->ug_group;
+ }
+ return $groups;
+ }
+
+ # TODO: Implement setPref().
+}
diff --git a/includes/extauth/vB.php b/includes/extauth/vB.php
new file mode 100644
index 00000000..23523665
--- /dev/null
+++ b/includes/extauth/vB.php
@@ -0,0 +1,140 @@
+<?php
+
+# Copyright (C) 2009 Aryeh Gregor
+#
+# 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
+
+/**
+ * This class supports the proprietary vBulletin forum system
+ * <http://www.vbulletin.com>, versions 3.5 and up. It calls no functions or
+ * code, only reads from the database. Example lines to put in
+ * LocalSettings.php:
+ *
+ * $wgExternalAuthType = 'ExternalUser_vB';
+ * $wgExternalAuthConf = array(
+ * 'server' => 'localhost',
+ * 'username' => 'forum',
+ * 'password' => 'udE,jSqDJ<""p=fI.K9',
+ * 'dbname' => 'forum',
+ * 'tableprefix' => '',
+ * 'cookieprefix' => 'bb'
+ * );
+ *
+ * @ingroup ExternalUser
+ */
+class ExternalUser_vB extends ExternalUser {
+ private $mDb, $mRow;
+
+ protected function initFromName( $name ) {
+ return $this->initFromCond( array( 'username' => $name ) );
+ }
+
+ protected function initFromId( $id ) {
+ return $this->initFromCond( array( 'userid' => $id ) );
+ }
+
+ protected function initFromCookie() {
+ # Try using the session table. It will only have a row if the user has
+ # an active session, so it might not always work, but it's a lot easier
+ # than trying to convince PHP to give us vB's $_SESSION.
+ global $wgExternalAuthConf;
+ if ( !isset( $wgExternalAuthConf['cookieprefix'] ) ) {
+ $prefix = 'bb';
+ } else {
+ $prefix = $wgExternalAuthConf['cookieprefix'];
+ }
+ if ( !isset( $_COOKIE["{$prefix}sessionhash"] ) ) {
+ return false;
+ }
+
+ $db = $this->getDb();
+
+ $row = $db->selectRow(
+ array( 'session', 'user' ),
+ $this->getFields(),
+ array(
+ 'session.userid = user.userid',
+ 'sessionhash' => $_COOKIE["{$prefix}sessionhash"]
+ ),
+ __METHOD__
+ );
+ if ( !$row ) {
+ return false;
+ }
+ $this->mRow = $row;
+
+ return true;
+ }
+
+ private function initFromCond( $cond ) {
+ $db = $this->getDb();
+
+ $row = $db->selectRow(
+ 'user',
+ $this->getFields(),
+ $cond,
+ __METHOD__
+ );
+ if ( !$row ) {
+ return false;
+ }
+ $this->mRow = $row;
+
+ return true;
+ }
+
+ private function getDb() {
+ global $wgExternalAuthConf;
+ return new Database(
+ $wgExternalAuthConf['server'],
+ $wgExternalAuthConf['username'],
+ $wgExternalAuthConf['password'],
+ $wgExternalAuthConf['dbname'],
+ false, 0,
+ $wgExternalAuthConf['tableprefix']
+ );
+ }
+
+ private function getFields() {
+ return array( 'user.userid', 'username', 'password', 'salt', 'email',
+ 'usergroupid', 'membergroupids' );
+ }
+
+ public function getId() { return $this->mRow->userid; }
+ public function getName() { return $this->mRow->username; }
+
+ public function authenticate( $password ) {
+ # vBulletin seemingly strips whitespace from passwords
+ $password = trim( $password );
+ return $this->mRow->password == md5( md5( $password )
+ . $this->mRow->salt );
+ }
+
+ public function getPref( $pref ) {
+ if ( $pref == 'emailaddress' && $this->mRow->email ) {
+ # TODO: only return if validated?
+ return $this->mRow->email;
+ }
+ return null;
+ }
+
+ public function getGroups() {
+ $groups = array( $this->mRow->usergroupid );
+ $groups = array_merge( $groups, explode( ',', $this->mRow->membergroupids ) );
+ $groups = array_unique( $groups );
+ return $groups;
+ }
+}
diff --git a/includes/filerepo/ArchivedFile.php b/includes/filerepo/ArchivedFile.php
index 68c93b8f..ffc06303 100644
--- a/includes/filerepo/ArchivedFile.php
+++ b/includes/filerepo/ArchivedFile.php
@@ -33,7 +33,7 @@ class ArchivedFile
$this->id = -1;
$this->title = false;
$this->name = false;
- $this->group = '';
+ $this->group = 'deleted'; // needed for direct use of constructor
$this->key = '';
$this->size = 0;
$this->bits = 0;
@@ -45,47 +45,48 @@ class ArchivedFile
$this->description = '';
$this->user = 0;
$this->user_text = '';
- $this->timestamp = NULL;
+ $this->timestamp = null;
$this->deleted = 0;
$this->dataLoaded = false;
-
+ $this->exists = false;
+
if( is_object($title) ) {
$this->title = $title;
$this->name = $title->getDBkey();
}
-
+
if ($id)
$this->id = $id;
-
+
if ($key)
$this->key = $key;
-
+
if (!$id && !$key && !is_object($title))
throw new MWException( "No specifications provided to ArchivedFile constructor." );
}
/**
* Loads a file object from the filearchive table
- * @return ResultWrapper
+ * @return true on success or null
*/
public function load() {
if ( $this->dataLoaded ) {
return true;
}
$conds = array();
-
+
if( $this->id > 0 )
$conds['fa_id'] = $this->id;
if( $this->key ) {
- $conds['fa_storage_group'] = $this->group;
+ $conds['fa_storage_group'] = $this->group;
$conds['fa_storage_key'] = $this->key;
}
if( $this->title )
$conds['fa_name'] = $this->title->getDBkey();
-
+
if( !count($conds))
throw new MWException( "No specific information for retrieving archived file" );
-
+
if( !$this->title || $this->title->getNamespace() == NS_FILE ) {
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'filearchive',
@@ -142,13 +143,14 @@ class ArchivedFile
return;
}
$this->dataLoaded = true;
+ $this->exists = true;
return true;
}
/**
* Loads a file object from the filearchive table
- * @return ResultWrapper
+ * @return ArchivedFile
*/
public static function newFromRow( $row ) {
$file = new ArchivedFile( Title::makeTitle( NS_FILE, $row->fa_name ) );
@@ -176,7 +178,6 @@ class ArchivedFile
/**
* Return the associated title object
- * @public
*/
public function getTitle() {
return $this->title;
@@ -194,6 +195,11 @@ class ArchivedFile
return $this->id;
}
+ public function exists() {
+ $this->load();
+ return $this->exists;
+ }
+
/**
* Return the FileStore key
*/
@@ -203,6 +209,13 @@ class ArchivedFile
}
/**
+ * Return the FileStore key (overriding base File class)
+ */
+ public function getStorageKey() {
+ return $this->getKey();
+ }
+
+ /**
* Return the FileStore storage group
*/
public function getGroup() {
@@ -235,7 +248,6 @@ class ArchivedFile
/**
* Return the size of the image file, in bytes
- * @public
*/
public function getSize() {
$this->load();
@@ -244,7 +256,6 @@ class ArchivedFile
/**
* Return the bits of the image file, in bytes
- * @public
*/
public function getBits() {
$this->load();
@@ -337,30 +348,33 @@ class ArchivedFile
}
/**
- * int $field one of DELETED_* bitfield constants
+ * Returns the deletion bitfield
+ * @return int
+ */
+ public function getVisibility() {
+ $this->load();
+ return $this->deleted;
+ }
+
+ /**
* for file or revision rows
+ *
+ * @param $field Integer: one of DELETED_* bitfield constants
* @return bool
*/
public function isDeleted( $field ) {
+ $this->load();
return ($this->deleted & $field) == $field;
}
/**
* Determine if the current user is allowed to view a particular
* field of this FileStore image file, if it's marked as deleted.
- * @param int $field
+ * @param $field Integer
* @return bool
*/
public function userCan( $field ) {
- if( ($this->deleted & $field) == $field ) {
- global $wgUser;
- $permission = ( $this->deleted & File::DELETED_RESTRICTED ) == File::DELETED_RESTRICTED
- ? 'suppressrevision'
- : 'deleterevision';
- wfDebug( "Checking for $permission due to $field match on $this->deleted\n" );
- return $wgUser->isAllowed( $permission );
- } else {
- return true;
- }
+ $this->load();
+ return Revision::userCanBitfield( $this->deleted, $field );
}
}
diff --git a/includes/filerepo/FSRepo.php b/includes/filerepo/FSRepo.php
index d561e61b..0dd9d0f7 100644
--- a/includes/filerepo/FSRepo.php
+++ b/includes/filerepo/FSRepo.php
@@ -6,7 +6,7 @@
* @ingroup FileRepo
*/
class FSRepo extends FileRepo {
- var $directory, $deletedDir, $url, $deletedHashLevels;
+ var $directory, $deletedDir, $deletedHashLevels, $fileMode;
var $fileFactory = array( 'UnregisteredLocalFile', 'newFromTitle' );
var $oldFileFactory = false;
var $pathDisclosureProtection = 'simple';
@@ -23,6 +23,17 @@ class FSRepo extends FileRepo {
$this->deletedHashLevels = isset( $info['deletedHashLevels'] ) ?
$info['deletedHashLevels'] : $this->hashLevels;
$this->deletedDir = isset( $info['deletedDir'] ) ? $info['deletedDir'] : false;
+ $this->fileMode = isset( $info['fileMode'] ) ? $info['fileMode'] : 0644;
+ if ( isset( $info['thumbDir'] ) ) {
+ $this->thumbDir = $info['thumbDir'];
+ } else {
+ $this->thumbDir = "{$this->directory}/thumb";
+ }
+ if ( isset( $info['thumbUrl'] ) ) {
+ $this->thumbUrl = $info['thumbUrl'];
+ } else {
+ $this->thumbUrl = "{$this->url}/thumb";
+ }
}
/**
@@ -57,13 +68,15 @@ class FSRepo extends FileRepo {
return "{$this->directory}/temp";
case 'deleted':
return $this->deletedDir;
+ case 'thumb':
+ return $this->thumbDir;
default:
return false;
}
}
/**
- * Get the URL corresponding to one of the three basic zones
+ * @see FileRepo::getZoneUrl()
*/
function getZoneUrl( $zone ) {
switch ( $zone ) {
@@ -72,9 +85,11 @@ class FSRepo extends FileRepo {
case 'temp':
return "{$this->url}/temp";
case 'deleted':
- return false; // no public URL
+ return parent::getZoneUrl( $zone ); // no public URL
+ case 'thumb':
+ return $this->thumbUrl;
default:
- return false;
+ return parent::getZoneUrl( $zone );
}
}
@@ -203,7 +218,7 @@ class FSRepo extends FileRepo {
}
}
if ( $good ) {
- chmod( $dstPath, 0644 );
+ $this->chmod( $dstPath );
$status->successCount++;
} else {
$status->failCount++;
@@ -212,6 +227,70 @@ class FSRepo extends FileRepo {
return $status;
}
+ function append( $srcPath, $toAppendPath, $flags = 0 ) {
+ $status = $this->newGood();
+
+ // Resolve the virtual URL
+ if ( self::isVirtualUrl( $srcPath ) ) {
+ $srcPath = $this->resolveVirtualUrl( $srcPath );
+ }
+ // Make sure the files are there
+ if ( !is_file( $srcPath ) )
+ $status->fatal( 'filenotfound', $srcPath );
+
+ if ( !is_file( $toAppendPath ) )
+ $status->fatal( 'filenotfound', $toAppendPath );
+
+ if ( !$status->isOk() ) return $status;
+
+ // Do the append
+ $chunk = file_get_contents( $toAppendPath );
+ if( $chunk === false ) {
+ $status->fatal( 'fileappenderrorread', $toAppendPath );
+ }
+
+ if( $status->isOk() ) {
+ if ( file_put_contents( $srcPath, $chunk, FILE_APPEND ) ) {
+ $status->value = $srcPath;
+ } else {
+ $status->fatal( 'fileappenderror', $toAppendPath, $srcPath);
+ }
+ }
+
+ if ( $flags & self::DELETE_SOURCE ) {
+ unlink( $toAppendPath );
+ }
+
+ return $status;
+ }
+
+ /**
+ * Checks existence of specified array of files.
+ *
+ * @param array $files URLs of files to check
+ * @param integer $flags Bitwise combination of the following flags:
+ * self::FILES_ONLY Mark file as existing only if it is a file (not directory)
+ * @return Either array of files and existence flags, or false
+ */
+ function fileExistsBatch( $files, $flags = 0 ) {
+ if ( !file_exists( $this->directory ) || !is_readable( $this->directory ) ) {
+ return false;
+ }
+ $result = array();
+ foreach ( $files as $key => $file ) {
+ if ( self::isVirtualUrl( $file ) ) {
+ $file = $this->resolveVirtualUrl( $file );
+ }
+ if( $flags & self::FILES_ONLY ) {
+ $result[$key] = is_file( $file );
+ } else {
+ $result[$key] = file_exists( $file );
+ }
+ }
+
+ return $result;
+ }
+
/**
* Take all available measures to prevent web accessibility of new deleted
* directories, in case the user has not configured offline storage
@@ -362,7 +441,7 @@ class FSRepo extends FileRepo {
$status->successCount++;
wfDebug(__METHOD__.": wrote tempfile $srcPath to $dstPath\n");
// Thread-safe override for umask
- chmod( $dstPath, 0644 );
+ $this->chmod( $dstPath );
} else {
$status->failCount++;
}
@@ -439,7 +518,7 @@ class FSRepo extends FileRepo {
$status->error( 'filerenameerror', $srcPath, $archivePath );
$good = false;
} else {
- @chmod( $archivePath, 0644 );
+ $this->chmod( $archivePath );
}
}
if ( $good ) {
@@ -534,4 +613,14 @@ class FSRepo extends FileRepo {
return strtr( $param, $this->simpleCleanPairs );
}
+ /**
+ * Chmod a file, supressing the warnings.
+ * @param String $path The path to change
+ */
+ protected function chmod( $path ) {
+ wfSuppressWarnings();
+ chmod( $path, $this->fileMode );
+ wfRestoreWarnings();
+ }
+
}
diff --git a/includes/filerepo/File.php b/includes/filerepo/File.php
index 523a1c09..d79a1661 100644
--- a/includes/filerepo/File.php
+++ b/includes/filerepo/File.php
@@ -529,7 +529,7 @@ abstract class File {
* @return MediaTransformOutput
*/
function transform( $params, $flags = 0 ) {
- global $wgUseSquid, $wgIgnoreImageErrors;
+ global $wgUseSquid, $wgIgnoreImageErrors, $wgThumbnailEpoch, $wgServer;
wfProfileIn( __METHOD__ );
do {
@@ -539,6 +539,12 @@ abstract class File {
break;
}
+ // Get the descriptionUrl to embed it as comment into the thumbnail. Bug 19791.
+ $descriptionUrl = $this->getDescriptionUrl();
+ if ( $descriptionUrl ) {
+ $params['descriptionUrl'] = $wgServer . $descriptionUrl;
+ }
+
$script = $this->getTransformScript();
if ( $script && !($flags & self::RENDER_NOW) ) {
// Use a script to transform on client request, if possible
@@ -561,9 +567,14 @@ abstract class File {
wfDebug( __METHOD__.": Doing stat for $thumbPath\n" );
$this->migrateThumbFile( $thumbName );
- if ( file_exists( $thumbPath ) ) {
- $thumb = $this->handler->getTransform( $this, $thumbPath, $thumbUrl, $params );
- break;
+ if ( file_exists( $thumbPath )) {
+ $thumbTime = filemtime( $thumbPath );
+ if ( $thumbTime !== FALSE &&
+ gmdate( 'YmdHis', $thumbTime ) >= $wgThumbnailEpoch ) {
+
+ $thumb = $this->handler->getTransform( $this, $thumbPath, $thumbUrl, $params );
+ break;
+ }
}
$thumb = $this->handler->doTransform( $this, $thumbPath, $thumbUrl, $params );
@@ -746,15 +757,6 @@ abstract class File {
return $path;
}
- /** Get relative path for a thumbnail file */
- function getThumbRel( $suffix = false ) {
- $path = 'thumb/' . $this->getRel();
- if ( $suffix !== false ) {
- $path .= '/' . $suffix;
- }
- return $path;
- }
-
/** Get the path of the archive directory, or a particular file if $suffix is specified */
function getArchivePath( $suffix = false ) {
return $this->repo->getZonePath('public') . '/' . $this->getArchiveRel( $suffix );
@@ -762,7 +764,11 @@ abstract class File {
/** Get the path of the thumbnail directory, or a particular file if $suffix is specified */
function getThumbPath( $suffix = false ) {
- return $this->repo->getZonePath('public') . '/' . $this->getThumbRel( $suffix );
+ $path = $this->repo->getZonePath('thumb') . '/' . $this->getRel();
+ if ( $suffix !== false ) {
+ $path .= '/' . $suffix;
+ }
+ return $path;
}
/** Get the URL of the archive directory, or a particular file if $suffix is specified */
@@ -778,7 +784,7 @@ abstract class File {
/** Get the URL of the thumbnail directory, or a particular file if $suffix is specified */
function getThumbUrl( $suffix = false ) {
- $path = $this->repo->getZoneUrl('public') . '/thumb/' . $this->getUrlRel();
+ $path = $this->repo->getZoneUrl('thumb') . '/' . $this->getUrlRel();
if ( $suffix !== false ) {
$path .= '/' . rawurlencode( $suffix );
}
@@ -798,7 +804,7 @@ abstract class File {
/** Get the virtual URL for a thumbnail file or directory */
function getThumbVirtualUrl( $suffix = false ) {
- $path = $this->repo->getVirtualUrl() . '/public/thumb/' . $this->getUrlRel();
+ $path = $this->repo->getVirtualUrl() . '/thumb/' . $this->getUrlRel();
if ( $suffix !== false ) {
$path .= '/' . rawurlencode( $suffix );
}
@@ -943,6 +949,14 @@ abstract class File {
function isDeleted( $field ) {
return false;
}
+
+ /**
+ * Return the deletion bitfield
+ * STUB
+ */
+ function getVisibility() {
+ return 0;
+ }
/**
* Was this file ever deleted from the wiki?
@@ -1007,8 +1021,9 @@ abstract class File {
}
/**
- * Returns 'true' if this image is a multipage document, e.g. a DJVU
- * document.
+ * Returns 'true' if this file is a type which supports multiple pages,
+ * e.g. DJVU or PDF. Note that this may be true even if the file in
+ * question only has a single page.
*
* @return Bool
*/
@@ -1069,15 +1084,15 @@ abstract class File {
* Get the HTML text of the description page, if available
*/
function getDescriptionText() {
- global $wgMemc, $wgContLang;
+ global $wgMemc, $wgLang;
if ( !$this->repo->fetchDescription ) {
return false;
}
- $renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $wgContLang->getCode() );
+ $renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $wgLang->getCode() );
if ( $renderUrl ) {
if ( $this->repo->descriptionCacheExpiry > 0 ) {
wfDebug("Attempting to get the description from cache...");
- $key = wfMemcKey( 'RemoteFileDescription', 'url', $wgContLang->getCode(),
+ $key = $this->repo->getLocalCacheKey( 'RemoteFileDescription', 'url', $wgLang->getCode(),
$this->getName() );
$obj = $wgMemc->get($key);
if ($obj) {
@@ -1125,6 +1140,19 @@ abstract class File {
}
/**
+ * Get the deletion archive key, <sha1>.<ext>
+ */
+ function getStorageKey() {
+ $hash = $this->getSha1();
+ if ( !$hash ) {
+ return false;
+ }
+ $ext = $this->getExtension();
+ $dotExt = $ext === '' ? '' : ".$ext";
+ return $hash . $dotExt;
+ }
+
+ /**
* Determine if the current user is allowed to view a particular
* field of this file, if it's marked as deleted.
* STUB
@@ -1173,7 +1201,7 @@ abstract class File {
wfDebug(__METHOD__.": $path loaded, {$info['size']} bytes, {$info['mime']}.\n");
} else {
- $info['mime'] = NULL;
+ $info['mime'] = null;
$info['media_type'] = MEDIATYPE_UNKNOWN;
$info['metadata'] = '';
$info['sha1'] = '';
@@ -1259,6 +1287,10 @@ abstract class File {
function redirectedFrom( $from ) {
$this->redirected = $from;
}
+
+ function isMissing() {
+ return false;
+ }
}
/**
* Aliases for backwards compatibility with 1.6
diff --git a/includes/filerepo/FileCache.php b/includes/filerepo/FileCache.php
deleted file mode 100644
index 7840d1a3..00000000
--- a/includes/filerepo/FileCache.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * Cache of file objects, wrapping some RepoGroup functions to avoid redundant
- * queries. Loosely inspired by the LinkCache / LinkBatch classes for titles.
- *
- * ISSUE: Merge with RepoGroup?
- *
- * @ingroup FileRepo
- */
-class FileCache {
- var $repoGroup;
- var $cache = array(), $notFound = array();
-
- protected static $instance;
-
- /**
- * Get a FileCache instance. Typically, only one instance of FileCache
- * is needed in a MediaWiki invocation.
- */
- static function singleton() {
- if ( self::$instance ) {
- return self::$instance;
- }
- self::$instance = new FileCache( RepoGroup::singleton() );
- return self::$instance;
- }
-
- /**
- * Destroy the singleton instance, so that a new one will be created next
- * time singleton() is called.
- */
- static function destroySingleton() {
- self::$instance = null;
- }
-
- /**
- * Set the singleton instance to a given object
- */
- static function setSingleton( $instance ) {
- self::$instance = $instance;
- }
-
- /**
- * Construct a group of file repositories.
- * @param RepoGroup $repoGroup
- */
- function __construct( $repoGroup ) {
- $this->repoGroup = $repoGroup;
- }
-
-
- /**
- * Add some files to the cache. This is a fairly low-level function,
- * which most users should not need to call. Note that any existing
- * entries for the same keys will not be replaced. Call clearFiles()
- * first if you need that.
- * @param array $files array of File objects, indexed by DB key
- */
- function addFiles( $files ) {
- wfDebug( "FileCache adding ".count( $files )." files\n" );
- $this->cache += $files;
- }
-
- /**
- * Remove some files from the cache, so that their existence will be
- * rechecked. This is a fairly low-level function, which most users
- * should not need to call.
- * @param array $remove array indexed by DB keys to remove (the values are ignored)
- */
- function clearFiles( $remove ) {
- wfDebug( "FileCache clearing data for ".count( $remove )." files\n" );
- $this->cache = array_diff_keys( $this->cache, $remove );
- $this->notFound = array_diff_keys( $this->notFound, $remove );
- }
-
- /**
- * Mark some DB keys as nonexistent. This is a fairly low-level
- * function, which most users should not need to call.
- * @param array $dbkeys array of DB keys
- */
- function markNotFound( $dbkeys ) {
- wfDebug( "FileCache marking ".count( $dbkeys )." files as not found\n" );
- $this->notFound += array_fill_keys( $dbkeys, true );
- }
-
-
- /**
- * Search the cache for a file.
- * @param mixed $title Title object or string
- * @return File object or false if it is not found
- * @todo Implement searching for old file versions(?)
- */
- function findFile( $title ) {
- if( !( $title instanceof Title ) ) {
- $title = Title::makeTitleSafe( NS_FILE, $title );
- }
- if( !$title ) {
- return false; // invalid title?
- }
-
- $dbkey = $title->getDBkey();
- if( array_key_exists( $dbkey, $this->cache ) ) {
- wfDebug( "FileCache HIT for $dbkey\n" );
- return $this->cache[$dbkey];
- }
- if( array_key_exists( $dbkey, $this->notFound ) ) {
- wfDebug( "FileCache negative HIT for $dbkey\n" );
- return false;
- }
-
- // Not in cache, fall back to a direct query
- $file = $this->repoGroup->findFile( $title );
- if( $file ) {
- wfDebug( "FileCache MISS for $dbkey\n" );
- $this->cache[$dbkey] = $file;
- } else {
- wfDebug( "FileCache negative MISS for $dbkey\n" );
- $this->notFound[$dbkey] = true;
- }
- return $file;
- }
-
- /**
- * Search the cache for multiple files.
- * @param array $titles Title objects or strings to search for
- * @return array of File objects, indexed by DB key
- */
- function findFiles( $titles ) {
- $titleObjs = array();
- foreach ( $titles as $title ) {
- if ( !( $title instanceof Title ) ) {
- $title = Title::makeTitleSafe( NS_FILE, $title );
- }
- if ( $title ) {
- $titleObjs[$title->getDBkey()] = $title;
- }
- }
-
- $result = array_intersect_key( $this->cache, $titleObjs );
-
- $unsure = array_diff_key( $titleObjs, $result, $this->notFound );
- if( $unsure ) {
- wfDebug( "FileCache MISS for ".count( $unsure )." files out of ".count( $titleObjs )."...\n" );
- // XXX: We assume the array returned by findFiles() is
- // indexed by DBkey; this appears to be true, but should
- // be explicitly documented.
- $found = $this->repoGroup->findFiles( $unsure );
- $result += $found;
- $this->addFiles( $found );
- $this->markNotFound( array_keys( array_diff_key( $unsure, $found ) ) );
- }
-
- wfDebug( "FileCache found ".count( $result )." files out of ".count( $titleObjs )."\n" );
- return $result;
- }
-}
diff --git a/includes/filerepo/FileRepo.php b/includes/filerepo/FileRepo.php
index c9d34377..f94709b3 100644
--- a/includes/filerepo/FileRepo.php
+++ b/includes/filerepo/FileRepo.php
@@ -6,16 +6,15 @@
* @ingroup FileRepo
*/
abstract class FileRepo {
+ const FILES_ONLY = 1;
const DELETE_SOURCE = 1;
- const FIND_PRIVATE = 1;
- const FIND_IGNORE_REDIRECT = 2;
const OVERWRITE = 2;
const OVERWRITE_SAME = 4;
var $thumbScriptUrl, $transformVia404;
var $descBaseUrl, $scriptDirUrl, $articleUrl, $fetchDescription, $initialCapital;
var $pathDisclosureProtection = 'paranoid';
- var $descriptionCacheExpiry, $apiThumbCacheExpiry, $hashLevels;
+ var $descriptionCacheExpiry, $hashLevels, $url, $thumbUrl;
/**
* Factory functions for creating new files
@@ -29,10 +28,10 @@ abstract class FileRepo {
$this->name = $info['name'];
// Optional settings
- $this->initialCapital = true; // by default
+ $this->initialCapital = MWNamespace::isCapitalized( NS_FILE );
foreach ( array( 'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
- 'thumbScriptUrl', 'initialCapital', 'pathDisclosureProtection',
- 'descriptionCacheExpiry', 'apiThumbCacheExpiry', 'hashLevels' ) as $var )
+ 'thumbScriptUrl', 'initialCapital', 'pathDisclosureProtection',
+ 'descriptionCacheExpiry', 'hashLevels', 'url', 'thumbUrl' ) as $var )
{
if ( isset( $info[$var] ) ) {
$this->$var = $info[$var];
@@ -81,9 +80,24 @@ abstract class FileRepo {
* version control should return false if the time is specified.
*
* @param mixed $title Title object or string
- * @param mixed $time 14-character timestamp, or false for the current version
- */
- function findFile( $title, $time = false, $flags = 0 ) {
+ * @param $options Associative array of options:
+ * time: requested time for an archived image, or false for the
+ * current version. An image object will be returned which was
+ * created at the specified time.
+ *
+ * ignoreRedirect: If true, do not follow file redirects
+ *
+ * private: If true, return restricted (deleted) files if the current
+ * user is allowed to view them. Otherwise, such files will not
+ * be found.
+ */
+ function findFile( $title, $options = array() ) {
+ if ( !is_array( $options ) ) {
+ // MW 1.15 compat
+ $time = $options;
+ } else {
+ $time = isset( $options['time'] ) ? $options['time'] : false;
+ }
if ( !($title instanceof Title) ) {
$title = Title::makeTitleSafe( NS_FILE, $title );
if ( !is_object( $title ) ) {
@@ -104,17 +118,17 @@ abstract class FileRepo {
if ( $img && $img->exists() ) {
if ( !$img->isDeleted(File::DELETED_FILE) ) {
return $img;
- } else if ( ($flags & FileRepo::FIND_PRIVATE) && $img->userCan(File::DELETED_FILE) ) {
+ } else if ( !empty( $options['private'] ) && $img->userCan(File::DELETED_FILE) ) {
return $img;
}
}
}
-
+
# Now try redirects
- if ( $flags & FileRepo::FIND_IGNORE_REDIRECT ) {
+ if ( !empty( $options['ignoreRedirect'] ) ) {
return false;
}
- $redir = $this->checkRedirect( $title );
+ $redir = $this->checkRedirect( $title );
if( $redir && $redir->getNamespace() == NS_FILE) {
$img = $this->newFile( $redir );
if( !$img ) {
@@ -127,22 +141,34 @@ abstract class FileRepo {
}
return false;
}
-
+
/*
- * Find many files at once.
- * @param array $titles, an array of titles
- * @todo Think of a good way to optionally pass timestamps to this function.
+ * Find many files at once.
+ * @param array $items, an array of titles, or an array of findFile() options with
+ * the "title" option giving the title. Example:
+ *
+ * $findItem = array( 'title' => $title, 'private' => true );
+ * $findBatch = array( $findItem );
+ * $repo->findFiles( $findBatch );
*/
- function findFiles( $titles ) {
+ function findFiles( $items ) {
$result = array();
- foreach ( $titles as $index => $title ) {
- $file = $this->findFile( $title );
+ foreach ( $items as $index => $item ) {
+ if ( is_array( $item ) ) {
+ $title = $item['title'];
+ $options = $item;
+ unset( $options['title'] );
+ } else {
+ $title = $item;
+ $options = array();
+ }
+ $file = $this->findFile( $title, $options );
if ( $file )
$result[$file->getTitle()->getDBkey()] = $file;
}
return $result;
}
-
+
/**
* Create a new File object from the local repository
* @param mixed $sha1 SHA-1 key
@@ -163,16 +189,23 @@ abstract class FileRepo {
return call_user_func( $this->fileFactoryKey, $sha1, $this );
}
}
-
+
/**
* Find an instance of the file with this key, created at the specified time
* Returns false if the file does not exist. Repositories not supporting
* version control should return false if the time is specified.
*
* @param string $sha1 string
- * @param mixed $time 14-character timestamp, or false for the current version
+ * @param array $options Option array, same as findFile().
*/
- function findFileFromKey( $sha1, $time = false, $flags = 0 ) {
+ function findFileFromKey( $sha1, $options = array() ) {
+ if ( !is_array( $options ) ) {
+ # MW 1.15 compat
+ $time = $options;
+ } else {
+ $time = isset( $options['time'] ) ? $options['time'] : false;
+ }
+
# First try the current version of the file to see if it precedes the timestamp
$img = $this->newFileFromKey( $sha1 );
if ( !$img ) {
@@ -187,7 +220,7 @@ abstract class FileRepo {
if ( $img->exists() ) {
if ( !$img->isDeleted(File::DELETED_FILE) ) {
return $img;
- } else if ( ($flags & FileRepo::FIND_PRIVATE) && $img->userCan(File::DELETED_FILE) ) {
+ } else if ( !empty( $options['private'] ) && $img->userCan(File::DELETED_FILE) ) {
return $img;
}
}
@@ -203,6 +236,15 @@ abstract class FileRepo {
}
/**
+ * Get the URL corresponding to one of the four basic zones
+ * @param String $zone One of: public, deleted, temp, thumb
+ * @return String or false
+ */
+ function getZoneUrl( $zone ) {
+ return false;
+ }
+
+ /**
* Returns true if the repository can transform files via a 404 handler
*/
function canTransformVia404() {
@@ -214,7 +256,7 @@ abstract class FileRepo {
*/
function getNameFromTitle( $title ) {
global $wgCapitalLinks;
- if ( $this->initialCapital != $wgCapitalLinks ) {
+ if ( $this->initialCapital != MWNamespace::isCapitalized( NS_FILE ) ) {
global $wgContLang;
$name = $title->getUserCaseDBKey();
if ( $this->initialCapital ) {
@@ -238,7 +280,7 @@ abstract class FileRepo {
return $path;
}
}
-
+
/**
* Get a relative path including trailing slash, e.g. f/fa/
* If the repo is not hashed, returns an empty string
@@ -355,6 +397,17 @@ abstract class FileRepo {
*/
abstract function storeTemp( $originalName, $srcPath );
+
+ /**
+ * Append the contents of the source path to the given file.
+ * @param $srcPath string location of the source file
+ * @param $toAppendPath string path to append to.
+ * @param $flags Bitfield, may be FileRepo::DELETE_SOURCE to indicate
+ * that the source file should be deleted if possible
+ * @return mixed Status or false
+ */
+ abstract function append( $srcPath, $toAppendPath, $flags = 0 );
+
/**
* Remove a temporary file or mark it for garbage collection
* @param string $virtualUrl The virtual URL returned by storeTemp
@@ -400,6 +453,21 @@ abstract class FileRepo {
*/
abstract function publishBatch( $triplets, $flags = 0 );
+ function fileExists( $file, $flags = 0 ) {
+ $result = $this->fileExistsBatch( array( $file ), $flags );
+ return $result[0];
+ }
+
+ /**
+ * Checks existence of an array of files.
+ *
+ * @param array $files URLs (or paths) of files to check
+ * @param integer $flags Bitwise combination of the following flags:
+ * self::FILES_ONLY Mark file as existing only if it is a file (not directory)
+ * @return Either array of files and existence flags, or false
+ */
+ abstract function fileExistsBatch( $files, $flags = 0 );
+
/**
* Move a group of files to the deletion archive.
*
@@ -529,21 +597,25 @@ abstract class FileRepo {
/**
* Invalidates image redirect cache related to that image
+ * Doesn't do anything for repositories that don't support image redirects.
*
+ * STUB
* @param Title $title Title of image
- */
- function invalidateImageRedirect( $title ) {
- global $wgMemc;
- $memcKey = $this->getMemcKey( "image_redirect:" . md5( $title->getPrefixedDBkey() ) );
- $wgMemc->delete( $memcKey );
- }
-
+ */
+ function invalidateImageRedirect( $title ) {}
+
+ /**
+ * Get an array or iterator of file objects for files that have a given
+ * SHA-1 content hash.
+ *
+ * STUB
+ */
function findBySha1( $hash ) {
return array();
}
-
+
/**
- * Get the human-readable name of the repo.
+ * Get the human-readable name of the repo.
* @return string
*/
public function getDisplayName() {
@@ -551,22 +623,33 @@ abstract class FileRepo {
if ( $this->name == 'local' ) {
return null;
}
+ // 'shared-repo-name-wikimediacommons' is used when $wgUseInstantCommons = true
$repoName = wfMsg( 'shared-repo-name-' . $this->name );
if ( !wfEmptyMsg( 'shared-repo-name-' . $this->name, $repoName ) ) {
return $repoName;
}
- return wfMsg( 'shared-repo' );
- }
-
- function getSlaveDB() {
- return wfGetDB( DB_SLAVE );
+ return wfMsg( 'shared-repo' );
}
- function getMasterDB() {
- return wfGetDB( DB_MASTER );
+ /**
+ * Get a key on the primary cache for this repository.
+ * Returns false if the repository's cache is not accessible at this site.
+ * The parameters are the parts of the key, as for wfMemcKey().
+ *
+ * STUB
+ */
+ function getSharedCacheKey( /*...*/ ) {
+ return false;
}
-
- function getMemcKey( $key ) {
- return wfWikiID( $this->getSlaveDB() ) . ":{$key}";
+
+ /**
+ * Get a key for this repo in the local cache domain. These cache keys are
+ * not shared with remote instances of the repo.
+ * The parameters are the parts of the key, as for wfMemcKey().
+ */
+ function getLocalCacheKey( /*...*/ ) {
+ $args = func_get_args();
+ array_unshift( $args, 'filerepo', $this->getName() );
+ return call_user_func_array( 'wfMemcKey', $args );
}
}
diff --git a/includes/filerepo/ForeignAPIFile.php b/includes/filerepo/ForeignAPIFile.php
index 03498fb1..c46b1f8f 100644
--- a/includes/filerepo/ForeignAPIFile.php
+++ b/includes/filerepo/ForeignAPIFile.php
@@ -43,10 +43,7 @@ class ForeignAPIFile extends File {
$this->getName(),
isset( $params['width'] ) ? $params['width'] : -1,
isset( $params['height'] ) ? $params['height'] : -1 );
- if( $thumbUrl ) {
- return $this->handler->getTransform( $this, 'bogus', $thumbUrl, $params );;
- }
- return false;
+ return $this->handler->getTransform( $this, 'bogus', $thumbUrl, $params );;
}
// Info we can get from API...
@@ -108,7 +105,7 @@ class ForeignAPIFile extends File {
return $this->mInfo['mime'];
}
- /// @fixme May guess wrong on file types that can be eg audio or video
+ /// @todo Fixme: may guess wrong on file types that can be eg audio or video
function getMediaType() {
$magic = MimeMagic::singleton();
return $magic->getMediaType( null, $this->getMimeType() );
@@ -162,13 +159,13 @@ class ForeignAPIFile extends File {
function purgeDescriptionPage() {
global $wgMemc, $wgContLang;
$url = $this->repo->getDescriptionRenderUrl( $this->getName(), $wgContLang->getCode() );
- $key = wfMemcKey( 'RemoteFileDescription', 'url', md5($url) );
+ $key = $this->repo->getLocalCacheKey( 'RemoteFileDescription', 'url', md5($url) );
$wgMemc->delete( $key );
}
function purgeThumbnails() {
global $wgMemc;
- $key = wfMemcKey( 'ForeignAPIRepo', 'ThumbUrl', $this->getName() );
+ $key = $this->repo->getLocalCacheKey( 'ForeignAPIRepo', 'ThumbUrl', $this->getName() );
$wgMemc->delete( $key );
$files = $this->getThumbnails();
$dir = $this->getThumbPath( $this->getName() );
diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php
index e63e4a6b..264cb920 100644
--- a/includes/filerepo/ForeignAPIRepo.php
+++ b/includes/filerepo/ForeignAPIRepo.php
@@ -19,18 +19,30 @@
*/
class ForeignAPIRepo extends FileRepo {
var $fileFactory = array( 'ForeignAPIFile', 'newFromTitle' );
- var $apiThumbCacheExpiry = 0;
+ var $apiThumbCacheExpiry = 86400;
protected $mQueryCache = array();
-
+ protected $mFileExists = array();
+
function __construct( $info ) {
parent::__construct( $info );
$this->mApiBase = $info['apibase']; // http://commons.wikimedia.org/w/api.php
+ if( isset( $info['apiThumbCacheExpiry'] ) ) {
+ $this->apiThumbCacheExpiry = $info['apiThumbCacheExpiry'];
+ }
if( !$this->scriptDirUrl ) {
// hack for description fetches
$this->scriptDirUrl = dirname( $this->mApiBase );
}
+ // If we can cache thumbs we can guess sane defaults for these
+ if( $this->canCacheThumbs() && !$this->url ) {
+ global $wgLocalFileRepo;
+ $this->url = $wgLocalFileRepo['url'];
+ }
+ if( $this->canCacheThumbs() && !$this->thumbUrl ) {
+ $this->thumbUrl = $this->url . '/thumb';
+ }
}
-
+
/**
* Per docs in FileRepo, this needs to return false if we don't support versioned
* files. Well, we don't.
@@ -51,19 +63,49 @@ class ForeignAPIRepo extends FileRepo {
function storeTemp( $originalName, $srcPath ) {
return false;
}
+ function append( $srcPath, $toAppendPath, $flags = 0 ){
+ return false;
+ }
function publishBatch( $triplets, $flags = 0 ) {
return false;
}
function deleteBatch( $sourceDestPairs ) {
return false;
}
+
+
+ function fileExistsBatch( $files, $flags = 0 ) {
+ $results = array();
+ foreach ( $files as $k => $f ) {
+ if ( isset( $this->mFileExists[$k] ) ) {
+ $results[$k] = true;
+ unset( $files[$k] );
+ } elseif( self::isVirtualUrl( $f ) ) {
+ # TODO! FIXME! We need to be able to handle virtual
+ # URLs better, at least when we know they refer to the
+ # same repo.
+ $results[$k] = false;
+ unset( $files[$k] );
+ }
+ }
+
+ $results = $this->fetchImageQuery( array( 'titles' => implode( $files, '|' ),
+ 'prop' => 'imageinfo' ) );
+ if( isset( $data['query']['pages'] ) ) {
+ $i = 0;
+ foreach( $files as $key => $file ) {
+ $results[$key] = $this->mFileExists[$key] = !isset( $data['query']['pages'][$i]['missing'] );
+ $i++;
+ }
+ }
+ }
function getFileProps( $virtualUrl ) {
return false;
}
-
+
protected function queryImage( $query ) {
$data = $this->fetchImageQuery( $query );
-
+
if( isset( $data['query']['pages'] ) ) {
foreach( $data['query']['pages'] as $pageid => $info ) {
if( isset( $info['imageinfo'][0] ) ) {
@@ -73,10 +115,10 @@ class ForeignAPIRepo extends FileRepo {
}
return false;
}
-
+
protected function fetchImageQuery( $query ) {
global $wgMemc;
-
+
$url = $this->mApiBase .
'?' .
wfArrayToCgi(
@@ -84,9 +126,9 @@ class ForeignAPIRepo extends FileRepo {
array(
'format' => 'json',
'action' => 'query' ) ) );
-
+
if( !isset( $this->mQueryCache[$url] ) ) {
- $key = wfMemcKey( 'ForeignAPIRepo', 'Metadata', md5( $url ) );
+ $key = $this->getLocalCacheKey( 'ForeignAPIRepo', 'Metadata', md5( $url ) );
$data = $wgMemc->get( $key );
if( !$data ) {
$data = Http::get( $url );
@@ -102,16 +144,16 @@ class ForeignAPIRepo extends FileRepo {
}
$this->mQueryCache[$url] = $data;
}
- return json_decode( $this->mQueryCache[$url], true );
+ return FormatJson::decode( $this->mQueryCache[$url], true );
}
-
+
function getImageInfo( $title, $time = false ) {
return $this->queryImage( array(
'titles' => 'Image:' . $title->getText(),
'iiprop' => 'timestamp|user|comment|url|size|sha1|metadata|mime',
'prop' => 'imageinfo' ) );
}
-
+
function findBySha1( $hash ) {
$results = $this->fetchImageQuery( array(
'aisha1base36' => $hash,
@@ -125,7 +167,7 @@ class ForeignAPIRepo extends FileRepo {
}
return $ret;
}
-
+
function getThumbUrl( $name, $width=-1, $height=-1 ) {
$info = $this->queryImage( array(
'titles' => 'Image:' . $name,
@@ -133,49 +175,69 @@ class ForeignAPIRepo extends FileRepo {
'iiurlwidth' => $width,
'iiurlheight' => $height,
'prop' => 'imageinfo' ) );
- if( $info ) {
+ if( $info && $info['thumburl'] ) {
wfDebug( __METHOD__ . " got remote thumb " . $info['thumburl'] . "\n" );
return $info['thumburl'];
} else {
return false;
}
}
-
+
function getThumbUrlFromCache( $name, $width, $height ) {
global $wgMemc, $wgUploadPath, $wgServer, $wgUploadDirectory;
-
+
if ( !$this->canCacheThumbs() ) {
return $this->getThumbUrl( $name, $width, $height );
}
-
- $key = wfMemcKey( 'ForeignAPIRepo', 'ThumbUrl', $name );
+
+ $key = $this->getLocalCacheKey( 'ForeignAPIRepo', 'ThumbUrl', $name );
if ( $thumbUrl = $wgMemc->get($key) ) {
wfDebug("Got thumb from local cache. $thumbUrl \n");
return $thumbUrl;
}
else {
$foreignUrl = $this->getThumbUrl( $name, $width, $height );
-
+ if( !$foreignUrl ) {
+ wfDebug( __METHOD__ . " Could not find thumburl\n" );
+ return false;
+ }
+ $thumb = Http::get( $foreignUrl );
+ if( !$thumb ) {
+ wfDebug( __METHOD__ . " Could not download thumb\n" );
+ return false;
+ }
// We need the same filename as the remote one :)
- $fileName = ltrim( substr( $foreignUrl, strrpos( $foreignUrl, '/' ) ), '/' );
+ $fileName = rawurldecode( pathinfo( $foreignUrl, PATHINFO_BASENAME ) );
$path = 'thumb/' . $this->getHashPath( $name ) . $name . "/";
if ( !is_dir($wgUploadDirectory . '/' . $path) ) {
wfMkdirParents($wgUploadDirectory . '/' . $path);
}
- if ( !is_writable( $wgUploadDirectory . '/' . $path . $fileName ) ) {
+ $localUrl = $wgServer . $wgUploadPath . '/' . $path . $fileName;
+ # FIXME: Delete old thumbs that aren't being used. Maintenance script?
+ if( !file_put_contents($wgUploadDirectory . '/' . $path . $fileName, $thumb ) ) {
wfDebug( __METHOD__ . " could not write to thumb path\n" );
return $foreignUrl;
}
- $localUrl = $wgServer . $wgUploadPath . '/' . $path . $fileName;
- $thumb = Http::get( $foreignUrl );
- # FIXME: Delete old thumbs that aren't being used. Maintenance script?
- file_put_contents($wgUploadDirectory . '/' . $path . $fileName, $thumb );
$wgMemc->set( $key, $localUrl, $this->apiThumbCacheExpiry );
wfDebug( __METHOD__ . " got local thumb $localUrl, saving to cache \n" );
return $localUrl;
}
}
-
+
+ /**
+ * @see FileRepo::getZoneUrl()
+ */
+ function getZoneUrl( $zone ) {
+ switch ( $zone ) {
+ case 'public':
+ return $this->url;
+ case 'thumb':
+ return $this->thumbUrl;
+ default:
+ return parent::getZoneUrl( $zone );
+ }
+ }
+
/**
* Are we locally caching the thumbnails?
* @return bool
diff --git a/includes/filerepo/ForeignDBFile.php b/includes/filerepo/ForeignDBFile.php
index 8fe6f921..a24ff72b 100644
--- a/includes/filerepo/ForeignDBFile.php
+++ b/includes/filerepo/ForeignDBFile.php
@@ -19,16 +19,6 @@ class ForeignDBFile extends LocalFile {
return $file;
}
- function getCacheKey() {
- if ( $this->repo->hasSharedCache() ) {
- $hashedName = md5($this->name);
- return wfForeignMemcKey( $this->repo->dbName, $this->repo->tablePrefix,
- 'file', $hashedName );
- } else {
- return false;
- }
- }
-
function publish( $srcPath, $flags = 0 ) {
$this->readOnlyError();
}
diff --git a/includes/filerepo/ForeignDBRepo.php b/includes/filerepo/ForeignDBRepo.php
index e078dd25..35c2c4bf 100644
--- a/includes/filerepo/ForeignDBRepo.php
+++ b/includes/filerepo/ForeignDBRepo.php
@@ -44,6 +44,21 @@ class ForeignDBRepo extends LocalRepo {
return $this->hasSharedCache;
}
+ /**
+ * Get a key on the primary cache for this repository.
+ * Returns false if the repository's cache is not accessible at this site.
+ * The parameters are the parts of the key, as for wfMemcKey().
+ */
+ function getSharedCacheKey( /*...*/ ) {
+ if ( $this->hasSharedCache() ) {
+ $args = func_get_args();
+ array_unshift( $args, $this->dbName, $this->tablePrefix );
+ return call_user_func_array( 'wfForeignMemcKey', $args );
+ } else {
+ return false;
+ }
+ }
+
function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
throw new MWException( get_class($this) . ': write operations are not supported' );
}
diff --git a/includes/filerepo/ForeignDBViaLBRepo.php b/includes/filerepo/ForeignDBViaLBRepo.php
index 13c9f434..80325752 100644
--- a/includes/filerepo/ForeignDBViaLBRepo.php
+++ b/includes/filerepo/ForeignDBViaLBRepo.php
@@ -27,6 +27,21 @@ class ForeignDBViaLBRepo extends LocalRepo {
return $this->hasSharedCache;
}
+ /**
+ * Get a key on the primary cache for this repository.
+ * Returns false if the repository's cache is not accessible at this site.
+ * The parameters are the parts of the key, as for wfMemcKey().
+ */
+ function getSharedCacheKey( /*...*/ ) {
+ if ( $this->hasSharedCache() ) {
+ $args = func_get_args();
+ array_unshift( $args, $this->wiki );
+ return implode( ':', $args );
+ } else {
+ return false;
+ }
+ }
+
function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
throw new MWException( get_class($this) . ': write operations are not supported' );
}
diff --git a/includes/filerepo/Image.php b/includes/filerepo/Image.php
index 5207bb4b..08ce219a 100644
--- a/includes/filerepo/Image.php
+++ b/includes/filerepo/Image.php
@@ -19,7 +19,7 @@ class Image extends LocalFile {
*/
static function newFromTitle( $title, $time = false ) {
wfDeprecated( __METHOD__ );
- $img = wfFindFile( $title, $time );
+ $img = wfFindFile( $title, array( 'time' => $time ) );
if ( !$img ) {
$img = wfLocalFile( $title );
}
@@ -44,7 +44,7 @@ class Image extends LocalFile {
}
return $img;
} else {
- return NULL;
+ return null;
}
}
diff --git a/includes/filerepo/LocalFile.php b/includes/filerepo/LocalFile.php
index b997d75f..b6b4bfed 100644
--- a/includes/filerepo/LocalFile.php
+++ b/includes/filerepo/LocalFile.php
@@ -24,8 +24,7 @@ define( 'MW_FILE_VERSION', 8 );
*
* @ingroup FileRepo
*/
-class LocalFile extends File
-{
+class LocalFile extends File {
/**#@+
* @private
*/
@@ -49,6 +48,7 @@ class LocalFile extends File
$dataLoaded, # Whether or not all this has been loaded from the database (loadFromXxx)
$upgraded, # Whether the row was upgraded on load
$locked, # True if the image row is locked
+ $missing, # True if file is not present in file system. Not to be cached in memcached
$deleted; # Bitfield akin to rev_deleted
/**#@-*/
@@ -122,7 +122,7 @@ class LocalFile extends File
*/
function __construct( $title, $repo ) {
if( !is_object( $title ) ) {
- throw new MWException( __CLASS__.' constructor given bogus title.' );
+ throw new MWException( __CLASS__ . ' constructor given bogus title.' );
}
parent::__construct( $title, $repo );
$this->metadata = '';
@@ -132,11 +132,12 @@ class LocalFile extends File
}
/**
- * Get the memcached key
+ * Get the memcached key for the main data for this file, or false if
+ * there is no access to the shared cache.
*/
function getCacheKey() {
- $hashedName = md5($this->getName());
- return wfMemcKey( 'file', $hashedName );
+ $hashedName = md5( $this->getName() );
+ return $this->repo->getSharedCacheKey( 'file', $hashedName );
}
/**
@@ -148,12 +149,13 @@ class LocalFile extends File
$this->dataLoaded = false;
$key = $this->getCacheKey();
if ( !$key ) {
+ wfProfileOut( __METHOD__ );
return false;
}
$cachedValues = $wgMemc->get( $key );
// Check if the key existed and belongs to this version of MediaWiki
- if ( isset($cachedValues['version']) && ( $cachedValues['version'] == MW_FILE_VERSION ) ) {
+ if ( isset( $cachedValues['version'] ) && ( $cachedValues['version'] == MW_FILE_VERSION ) ) {
wfDebug( "Pulling file metadata from cache key $key\n" );
$this->fileExists = $cachedValues['fileExists'];
if ( $this->fileExists ) {
@@ -250,7 +252,7 @@ class LocalFile extends File
$prefixLength = strlen( $prefix );
// Sanity check prefix once
if ( substr( key( $array ), 0, $prefixLength ) !== $prefix ) {
- throw new MWException( __METHOD__. ': incorrect $prefix parameter' );
+ throw new MWException( __METHOD__ . ': incorrect $prefix parameter' );
}
$decoded = array();
foreach ( $array as $name => $value ) {
@@ -258,19 +260,19 @@ class LocalFile extends File
}
$decoded['timestamp'] = wfTimestamp( TS_MW, $decoded['timestamp'] );
if ( empty( $decoded['major_mime'] ) ) {
- $decoded['mime'] = "unknown/unknown";
+ $decoded['mime'] = 'unknown/unknown';
} else {
- if (!$decoded['minor_mime']) {
- $decoded['minor_mime'] = "unknown";
+ if ( !$decoded['minor_mime'] ) {
+ $decoded['minor_mime'] = 'unknown';
}
- $decoded['mime'] = $decoded['major_mime'].'/'.$decoded['minor_mime'];
+ $decoded['mime'] = $decoded['major_mime'] . '/' . $decoded['minor_mime'];
}
# Trim zero padding from char/binary field
$decoded['sha1'] = rtrim( $decoded['sha1'], "\0" );
return $decoded;
}
- /*
+ /**
* Load file metadata from a DB result row
*/
function loadFromRow( $row, $prefix = 'img_' ) {
@@ -303,7 +305,7 @@ class LocalFile extends File
if ( wfReadOnly() ) {
return;
}
- if ( is_null($this->media_type) ||
+ if ( is_null( $this->media_type ) ||
$this->mime == 'image/svg'
) {
$this->upgradeRow();
@@ -331,16 +333,18 @@ class LocalFile extends File
# Don't destroy file info of missing files
if ( !$this->fileExists ) {
- wfDebug( __METHOD__.": file does not exist, aborting\n" );
+ wfDebug( __METHOD__ . ": file does not exist, aborting\n" );
+ wfProfileOut( __METHOD__ );
return;
}
$dbw = $this->repo->getMasterDB();
list( $major, $minor ) = self::splitMime( $this->mime );
if ( wfReadOnly() ) {
+ wfProfileOut( __METHOD__ );
return;
}
- wfDebug(__METHOD__.': upgrading '.$this->getName()." to the current schema\n");
+ wfDebug( __METHOD__ . ': upgrading ' . $this->getName() . " to the current schema\n" );
$dbw->update( 'image',
array(
@@ -391,13 +395,20 @@ class LocalFile extends File
/** getPath inherited */
/** isVisible inhereted */
+ function isMissing() {
+ if( $this->missing === null ) {
+ list( $fileExists ) = $this->repo->fileExistsBatch( array( $this->getVirtualUrl() ), FileRepo::FILES_ONLY );
+ $this->missing = !$fileExists;
+ }
+ return $this->missing;
+ }
+
/**
* Return the width of the image
*
* Returns false on error
- * @public
*/
- function getWidth( $page = 1 ) {
+ public function getWidth( $page = 1 ) {
$this->load();
if ( $this->isMultipage() ) {
$dim = $this->getHandler()->getPageDimensions( $this, $page );
@@ -415,9 +426,8 @@ class LocalFile extends File
* Return the height of the image
*
* Returns false on error
- * @public
*/
- function getHeight( $page = 1 ) {
+ public function getHeight( $page = 1 ) {
$this->load();
if ( $this->isMultipage() ) {
$dim = $this->getHandler()->getPageDimensions( $this, $page );
@@ -436,7 +446,7 @@ class LocalFile extends File
*
* @param $type string 'text' or 'id'
*/
- function getUser($type='text') {
+ function getUser( $type = 'text' ) {
$this->load();
if( $type == 'text' ) {
return $this->user_text;
@@ -460,9 +470,8 @@ class LocalFile extends File
/**
* Return the size of the image file, in bytes
- * @public
*/
- function getSize() {
+ public function getSize() {
$this->load();
return $this->size;
}
@@ -493,9 +502,8 @@ class LocalFile extends File
/**
* Returns true if the file file exists on disk.
* @return boolean Whether file file exist on disk.
- * @public
*/
- function exists() {
+ public function exists() {
$this->load();
return $this->fileExists;
}
@@ -518,7 +526,7 @@ class LocalFile extends File
// This happened occasionally due to broken migration code in 1.5
// Rename to broken-*
for ( $i = 0; $i < 100 ; $i++ ) {
- $broken = $this->repo->getZonePath('public') . "/broken-$i-$thumbName";
+ $broken = $this->repo->getZonePath( 'public' ) . "/broken-$i-$thumbName";
if ( !file_exists( $broken ) ) {
rename( $thumbPath, $broken );
break;
@@ -551,7 +559,7 @@ class LocalFile extends File
$handle = opendir( $dir );
if ( $handle ) {
- while ( false !== ( $file = readdir($handle) ) ) {
+ while ( false !== ( $file = readdir( $handle ) ) ) {
if ( $file{0} != '.' ) {
$files[] = $file;
}
@@ -577,9 +585,11 @@ class LocalFile extends File
*/
function purgeHistory() {
global $wgMemc;
- $hashedName = md5($this->getName());
- $oldKey = wfMemcKey( 'oldfile', $hashedName );
- $wgMemc->delete( $oldKey );
+ $hashedName = md5( $this->getName() );
+ $oldKey = $this->repo->getSharedCacheKey( 'oldfile', $hashedName );
+ if ( $oldKey ) {
+ $wgMemc->delete( $oldKey );
+ }
}
/**
@@ -624,13 +634,13 @@ class LocalFile extends File
/** purgeDescription inherited */
/** purgeEverything inherited */
- function getHistory($limit = null, $start = null, $end = null, $inc = true) {
+ function getHistory( $limit = null, $start = null, $end = null, $inc = true ) {
$dbr = $this->repo->getSlaveDB();
- $tables = array('oldimage');
+ $tables = array( 'oldimage' );
$fields = OldLocalFile::selectFields();
$conds = $opts = $join_conds = array();
- $eq = $inc ? "=" : "";
- $conds[] = "oi_name = " . $dbr->addQuotes( $this->title->getDBKey() );
+ $eq = $inc ? '=' : '';
+ $conds[] = "oi_name = " . $dbr->addQuotes( $this->title->getDBkey() );
if( $start ) {
$conds[] = "oi_timestamp <$eq " . $dbr->addQuotes( $dbr->timestamp( $start ) );
}
@@ -641,19 +651,19 @@ class LocalFile extends File
$opts['LIMIT'] = $limit;
}
// Search backwards for time > x queries
- $order = (!$start && $end !== null) ? "ASC" : "DESC";
+ $order = ( !$start && $end !== null ) ? 'ASC' : 'DESC';
$opts['ORDER BY'] = "oi_timestamp $order";
- $opts['USE INDEX'] = array('oldimage' => 'oi_name_timestamp');
-
+ $opts['USE INDEX'] = array( 'oldimage' => 'oi_name_timestamp' );
+
wfRunHooks( 'LocalFile::getHistory', array( &$this, &$tables, &$fields,
&$conds, &$opts, &$join_conds ) );
-
+
$res = $dbr->select( $tables, $fields, $conds, __METHOD__, $opts, $join_conds );
$r = array();
- while( $row = $dbr->fetchObject($res) ) {
- $r[] = OldLocalFile::newFromRow($row, $this->repo);
+ while( $row = $dbr->fetchObject( $res ) ) {
+ $r[] = OldLocalFile::newFromRow( $row, $this->repo );
}
- if( $order == "ASC" ) {
+ if( $order == 'ASC' ) {
$r = array_reverse( $r ); // make sure it ends up descending
}
return $r;
@@ -666,10 +676,8 @@ class LocalFile extends File
* 0 return line for current version
* 1 query for old versions, return first one
* 2, ... return next old version from above query
- *
- * @public
*/
- function nextHistoryLine() {
+ public function nextHistoryLine() {
# Polymorphic function name to distinguish foreign and local fetches
$fname = get_class( $this ) . '::' . __FUNCTION__;
@@ -687,12 +695,12 @@ class LocalFile extends File
$fname
);
if ( 0 == $dbr->numRows( $this->historyRes ) ) {
- $dbr->freeResult($this->historyRes);
+ $dbr->freeResult( $this->historyRes );
$this->historyRes = null;
- return FALSE;
+ return false;
}
- } else if ( $this->historyLine == 1 ) {
- $dbr->freeResult($this->historyRes);
+ } elseif ( $this->historyLine == 1 ) {
+ $dbr->freeResult( $this->historyRes );
$this->historyRes = $dbr->select( 'oldimage', '*',
array( 'oi_name' => $this->title->getDBkey() ),
$fname,
@@ -706,12 +714,11 @@ class LocalFile extends File
/**
* Reset the history pointer to the first element of the history
- * @public
*/
- function resetHistory() {
+ public function resetHistory() {
$this->historyLine = 0;
- if (!is_null($this->historyRes)) {
- $this->repo->getSlaveDB()->freeResult($this->historyRes);
+ if ( !is_null( $this->historyRes ) ) {
+ $this->repo->getSlaveDB()->freeResult( $this->historyRes );
$this->historyRes = null;
}
}
@@ -763,7 +770,7 @@ class LocalFile extends File
function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '',
$watch = false, $timestamp = false )
{
- $pageText = UploadForm::getInitialPageText( $desc, $license, $copyStatus, $source );
+ $pageText = SpecialUpload::getInitialPageText( $desc, $license, $copyStatus, $source );
if ( !$this->recordUpload2( $oldver, $desc, $pageText ) ) {
return false;
}
@@ -804,7 +811,7 @@ class LocalFile extends File
// Fail now if the file isn't there
if ( !$this->fileExists ) {
- wfDebug( __METHOD__.": File ".$this->getPath()." went missing!\n" );
+ wfDebug( __METHOD__ . ": File " . $this->getPath() . " went missing!\n" );
return false;
}
@@ -905,7 +912,7 @@ class LocalFile extends File
$log->getRcComment(), false );
$nullRevision->insertOn( $dbw );
- wfRunHooks( 'NewRevisionFromEditComplete', array($article, $nullRevision, $latest, $user) );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $article, $nullRevision, $latest, $user ) );
$article->updateRevisionOn( $dbw, $nullRevision );
# Invalidate the cache for the description page
@@ -922,7 +929,7 @@ class LocalFile extends File
# Commit the transaction now, in case something goes wrong later
# The most important thing is that files don't get lost, especially archives
- $dbw->immediateCommit();
+ $dbw->commit();
# Invalidate cache for all pages using this file
$update = new HTMLCacheUpdate( $this->getTitle(), 'imagelinks' );
@@ -1059,7 +1066,7 @@ class LocalFile extends File
*
* @param $reason
* @param $suppress
- * @throws MWException or FSException on database or filestore failure
+ * @throws MWException or FSException on database or file store failure
* @return FileRepoStatus object.
*/
function deleteOld( $archiveName, $reason, $suppress=false ) {
@@ -1386,7 +1393,7 @@ class LocalFileDeleteBatch {
* Run the transaction
*/
function execute() {
- global $wgUser, $wgUseSquid;
+ global $wgUseSquid;
wfProfileIn( __METHOD__ );
$this->file->lock();
@@ -1399,7 +1406,7 @@ class LocalFileDeleteBatch {
array( 'oi_archive_name' ),
array( 'oi_name' => $this->file->getName(),
'oi_archive_name IN (' . $dbw->makeList( array_keys($oldRels) ) . ')',
- 'oi_deleted & ' . File::DELETED_FILE => File::DELETED_FILE ),
+ $dbw->bitAnd('oi_deleted', File::DELETED_FILE) => File::DELETED_FILE ),
__METHOD__ );
while( $row = $dbw->fetchObject( $res ) ) {
$privateFiles[$row->oi_archive_name] = 1;
@@ -1413,7 +1420,7 @@ class LocalFileDeleteBatch {
foreach ( $this->srcRels as $name => $srcRel ) {
// Skip files that have no hash (missing source).
// Keep private files where they are.
- if ( isset($hashes[$name]) && !array_key_exists($name,$privateFiles) ) {
+ if ( isset( $hashes[$name] ) && !array_key_exists( $name, $privateFiles ) ) {
$hash = $hashes[$name];
$key = $hash . $dotExt;
$dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
@@ -1429,6 +1436,9 @@ class LocalFileDeleteBatch {
// them in a separate transaction, then run the file ops, then update the fa_name fields.
$this->doDBInserts();
+ // Removes non-existent file from the batch, so we don't get errors.
+ $this->deletionBatch = $this->removeNonexistentFiles( $this->deletionBatch );
+
// Execute the file deletion batch
$status = $this->file->repo->deleteBatch( $this->deletionBatch );
if ( !$status->isGood() ) {
@@ -1440,6 +1450,7 @@ class LocalFileDeleteBatch {
// Roll back inserts, release lock and abort
// TODO: delete the defunct filearchive rows if we are using a non-transactional DB
$this->file->unlockAndRollback();
+ wfProfileOut( __METHOD__ );
return $this->status;
}
@@ -1461,6 +1472,22 @@ class LocalFileDeleteBatch {
wfProfileOut( __METHOD__ );
return $this->status;
}
+
+ /**
+ * Removes non-existent files from a deletion batch.
+ */
+ function removeNonexistentFiles( $batch ) {
+ $files = $newBatch = array();
+ foreach( $batch as $batchItem ) {
+ list( $src, $dest ) = $batchItem;
+ $files[$src] = $this->file->repo->getVirtualUrl( 'public' ) . '/' . rawurlencode( $src );
+ }
+ $result = $this->file->repo->fileExistsBatch( $files, FSRepo::FILES_ONLY );
+ foreach( $batch as $batchItem )
+ if( $result[$batchItem[0]] )
+ $newBatch[] = $batchItem;
+ return $newBatch;
+ }
}
#------------------------------------------------------------------------------
@@ -1508,7 +1535,7 @@ class LocalFileRestoreBatch {
* So we save the batch and let the caller call cleanup()
*/
function execute() {
- global $wgUser, $wgLang;
+ global $wgLang;
if ( !$this->all && !$this->ids ) {
// Do nothing
return $this->file->repo->newGood();
@@ -1653,6 +1680,9 @@ class LocalFileRestoreBatch {
$status->error( 'undelete-missing-filearchive', $id );
}
+ // Remove missing files from batch, so we don't get errors when undeleting them
+ $storeBatch = $this->removeNonexistentFiles( $storeBatch );
+
// Run the store batch
// Use the OVERWRITE_SAME flag to smooth over a common error
$storeStatus = $this->file->repo->storeBatch( $storeBatch, FileRepo::OVERWRITE_SAME );
@@ -1683,9 +1713,10 @@ class LocalFileRestoreBatch {
__METHOD__ );
}
- if( $status->successCount > 0 ) {
+ // If store batch is empty (all files are missing), deletion is to be considered successful
+ if( $status->successCount > 0 || !$storeBatch ) {
if( !$exists ) {
- wfDebug( __METHOD__." restored {$status->successCount} items, creating a new current\n" );
+ wfDebug( __METHOD__ . " restored {$status->successCount} items, creating a new current\n" );
// Update site_stats
$site_stats = $dbw->tableName( 'site_stats' );
@@ -1693,7 +1724,7 @@ class LocalFileRestoreBatch {
$this->file->purgeEverything();
} else {
- wfDebug( __METHOD__." restored {$status->successCount} as archived versions\n" );
+ wfDebug( __METHOD__ . " restored {$status->successCount} as archived versions\n" );
$this->file->purgeDescription();
$this->file->purgeHistory();
}
@@ -1703,6 +1734,38 @@ class LocalFileRestoreBatch {
}
/**
+ * Removes non-existent files from a store batch.
+ */
+ function removeNonexistentFiles( $triplets ) {
+ $files = $filteredTriplets = array();
+ foreach( $triplets as $file )
+ $files[$file[0]] = $file[0];
+ $result = $this->file->repo->fileExistsBatch( $files, FSRepo::FILES_ONLY );
+ foreach( $triplets as $file )
+ if( $result[$file[0]] )
+ $filteredTriplets[] = $file;
+ return $filteredTriplets;
+ }
+
+ /**
+ * Removes non-existent files from a cleanup batch.
+ */
+ function removeNonexistentFromCleanup( $batch ) {
+ $files = $newBatch = array();
+ $repo = $this->file->repo;
+ foreach( $batch as $file ) {
+ $files[$file] = $repo->getVirtualUrl( 'deleted' ) . '/' .
+ rawurlencode( $repo->getDeletedHashPath( $file ) . $file );
+ }
+
+ $result = $repo->fileExistsBatch( $files, FSRepo::FILES_ONLY );
+ foreach( $batch as $file )
+ if( $result[$file] )
+ $newBatch[] = $file;
+ return $newBatch;
+ }
+
+ /**
* Delete unused files in the deleted zone.
* This should be called from outside the transaction in which execute() was called.
*/
@@ -1710,6 +1773,7 @@ class LocalFileRestoreBatch {
if ( !$this->cleanupBatch ) {
return $this->file->repo->newGood();
}
+ $this->cleanupBatch = $this->removeNonexistentFromCleanup( $this->cleanupBatch );
$status = $this->file->repo->cleanupDeletedBatch( $this->cleanupBatch );
return $status;
}
@@ -1728,7 +1792,7 @@ class LocalFileMoveBatch {
$this->file = $file;
$this->target = $target;
$this->oldHash = $this->file->repo->getHashPath( $this->file->getName() );
- $this->newHash = $this->file->repo->getHashPath( $this->target->getDBKey() );
+ $this->newHash = $this->file->repo->getHashPath( $this->target->getDBkey() );
$this->oldName = $this->file->getName();
$this->newName = $this->file->repo->getNameFromTitle( $this->target );
$this->oldRel = $this->oldHash . $this->oldName;
@@ -1736,14 +1800,14 @@ class LocalFileMoveBatch {
$this->db = $file->repo->getMasterDb();
}
- /*
+ /**
* Add the current image to the batch
*/
function addCurrent() {
$this->cur = array( $this->oldRel, $this->newRel );
}
- /*
+ /**
* Add the old versions of the image to the batch
*/
function addOlds() {
@@ -1781,7 +1845,7 @@ class LocalFileMoveBatch {
$this->db->freeResult( $result );
}
- /*
+ /**
* Perform the move.
*/
function execute() {
@@ -1789,6 +1853,7 @@ class LocalFileMoveBatch {
$status = $repo->newGood();
$triplets = $this->getMoveTriplets();
+ $triplets = $this->removeNonexistentFiles( $triplets );
$statusDb = $this->doDBUpdates();
wfDebugLog( 'imagemove', "Renamed {$this->file->name} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
$statusMove = $repo->storeBatch( $triplets, FSRepo::DELETE_SOURCE );
@@ -1797,12 +1862,13 @@ class LocalFileMoveBatch {
wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
$this->db->rollback();
}
+
$status->merge( $statusDb );
$status->merge( $statusMove );
return $status;
}
- /*
+ /**
* Do the database updates and return a new WikiError indicating how many
* rows where updated.
*/
@@ -1842,7 +1908,7 @@ class LocalFileMoveBatch {
return $status;
}
- /*
+ /**
* Generate triplets for FSRepo::storeBatch().
*/
function getMoveTriplets() {
@@ -1856,4 +1922,22 @@ class LocalFileMoveBatch {
}
return $triplets;
}
+
+ /**
+ * Removes non-existent files from move batch.
+ */
+ function removeNonexistentFiles( $triplets ) {
+ $files = array();
+ foreach( $triplets as $file )
+ $files[$file[0]] = $file[0];
+ $result = $this->file->repo->fileExistsBatch( $files, FSRepo::FILES_ONLY );
+ $filteredTriplets = array();
+ foreach( $triplets as $file )
+ if( $result[$file[0]] ) {
+ $filteredTriplets[] = $file;
+ } else {
+ wfDebugLog( 'imagemove', "File {$file[0]} does not exist" );
+ }
+ return $filteredTriplets;
+ }
}
diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php
index c679dd98..6c4d21a2 100644
--- a/includes/filerepo/LocalRepo.php
+++ b/includes/filerepo/LocalRepo.php
@@ -49,8 +49,8 @@ class LocalRepo extends FSRepo {
$ext = File::normalizeExtension($ext);
$inuse = $dbw->selectField( 'oldimage', '1',
array( 'oi_sha1' => $sha1,
- "oi_archive_name LIKE '%.{$ext}'",
- 'oi_deleted & '.File::DELETED_FILE => File::DELETED_FILE ),
+ 'oi_archive_name ' . $dbw->buildLike( $dbw->anyString(), ".$ext" ),
+ $dbw->bitAnd('oi_deleted', File::DELETED_FILE) => File::DELETED_FILE ),
__METHOD__, array( 'FOR UPDATE' ) );
}
if ( !$inuse ) {
@@ -83,17 +83,24 @@ class LocalRepo extends FSRepo {
$title = Title::makeTitle( NS_FILE, $title->getText() );
}
- $memcKey = $this->getMemcKey( "image_redirect:" . md5( $title->getPrefixedDBkey() ) );
+ $memcKey = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
+ if ( $memcKey === false ) {
+ $memcKey = $this->getLocalCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
+ $expiry = 300; // no invalidation, 5 minutes
+ } else {
+ $expiry = 86400; // has invalidation, 1 day
+ }
$cachedValue = $wgMemc->get( $memcKey );
- if( $cachedValue ) {
- return Title::newFromDbKey( $cachedValue );
- } elseif( $cachedValue == ' ' ) { # FIXME: ugly hack, but BagOStuff caching seems to be weird and return false if !cachedValue, not only if it doesn't exist
+ if ( $cachedValue === ' ' || $cachedValue === '' ) {
+ // Does not exist
return false;
- }
+ } elseif ( strval( $cachedValue ) !== '' ) {
+ return Title::newFromText( $cachedValue, NS_FILE );
+ } // else $cachedValue is false or null: cache miss
$id = $this->getArticleID( $title );
if( !$id ) {
- $wgMemc->set( $memcKey, " ", 9000 );
+ $wgMemc->set( $memcKey, " ", $expiry );
return false;
}
$dbr = $this->getSlaveDB();
@@ -104,12 +111,14 @@ class LocalRepo extends FSRepo {
__METHOD__
);
- if( $row ) $targetTitle = Title::makeTitle( $row->rd_namespace, $row->rd_title );
- $wgMemc->set( $memcKey, ($row ? $targetTitle->getPrefixedDBkey() : " "), 9000 );
- if( !$row ) {
+ if( $row && $row->rd_namespace == NS_FILE ) {
+ $targetTitle = Title::makeTitle( $row->rd_namespace, $row->rd_title );
+ $wgMemc->set( $memcKey, $targetTitle->getDBkey(), $expiry );
+ return $targetTitle;
+ } else {
+ $wgMemc->set( $memcKey, '', $expiry );
return false;
}
- return $targetTitle;
}
@@ -127,15 +136,17 @@ class LocalRepo extends FSRepo {
'page_id', //Field
array( //Conditions
'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBKey(),
+ 'page_title' => $title->getDBkey(),
),
__METHOD__ //Function name
);
return $id;
}
-
-
+ /**
+ * Get an array or iterator of file objects for files that have a given
+ * SHA-1 content hash.
+ */
function findBySha1( $hash ) {
$dbr = $this->getSlaveDB();
$res = $dbr->select(
@@ -150,28 +161,42 @@ class LocalRepo extends FSRepo {
$res->free();
return $result;
}
-
- /*
- * Find many files using one query
+
+ /**
+ * Get a connection to the slave DB
*/
- function findFiles( $titles ) {
- // FIXME: Only accepts a $titles array where the keys are the sanitized
- // file names.
-
- if ( count( $titles ) == 0 ) return array();
-
- $dbr = $this->getSlaveDB();
- $res = $dbr->select(
- 'image',
- LocalFile::selectFields(),
- array( 'img_name' => array_keys( $titles ) )
- );
-
- $result = array();
- while ( $row = $res->fetchObject() ) {
- $result[$row->img_name] = $this->newFileFromRow( $row );
+ function getSlaveDB() {
+ return wfGetDB( DB_SLAVE );
+ }
+
+ /**
+ * Get a connection to the master DB
+ */
+ function getMasterDB() {
+ return wfGetDB( DB_MASTER );
+ }
+
+ /**
+ * Get a key on the primary cache for this repository.
+ * Returns false if the repository's cache is not accessible at this site.
+ * The parameters are the parts of the key, as for wfMemcKey().
+ */
+ function getSharedCacheKey( /*...*/ ) {
+ $args = func_get_args();
+ return call_user_func_array( 'wfMemcKey', $args );
+ }
+
+ /**
+ * Invalidates image redirect cache related to that image
+ *
+ * @param Title $title Title of image
+ */
+ function invalidateImageRedirect( $title ) {
+ global $wgMemc;
+ $memcKey = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
+ if ( $memcKey ) {
+ $wgMemc->delete( $memcKey );
}
- $res->free();
- return $result;
}
}
+
diff --git a/includes/filerepo/NullRepo.php b/includes/filerepo/NullRepo.php
index fb89cebb..2bc61bde 100644
--- a/includes/filerepo/NullRepo.php
+++ b/includes/filerepo/NullRepo.php
@@ -14,19 +14,25 @@ class NullRepo extends FileRepo {
function storeTemp( $originalName, $srcPath ) {
return false;
}
+ function append( $srcPath, $toAppendPath, $flags = 0 ){
+ return false;
+ }
function publishBatch( $triplets, $flags = 0 ) {
return false;
}
function deleteBatch( $sourceDestPairs ) {
return false;
}
+ function fileExistsBatch( $files, $flags = 0 ) {
+ return false;
+ }
function getFileProps( $virtualUrl ) {
return false;
}
function newFile( $title, $time = false ) {
return false;
}
- function findFile( $title, $time = false ) {
+ function findFile( $title, $options = array() ) {
return false;
}
}
diff --git a/includes/filerepo/OldLocalFile.php b/includes/filerepo/OldLocalFile.php
index 46c35bd9..35f3f9f2 100644
--- a/includes/filerepo/OldLocalFile.php
+++ b/includes/filerepo/OldLocalFile.php
@@ -177,25 +177,27 @@ class OldLocalFile extends LocalFile {
* @return bool
*/
function isDeleted( $field ) {
+ $this->load();
return ($this->deleted & $field) == $field;
}
/**
+ * Returns bitfield value
+ * @return int
+ */
+ function getVisibility() {
+ $this->load();
+ return (int)$this->deleted;
+ }
+
+ /**
* Determine if the current user is allowed to view a particular
- * field of this FileStore image file, if it's marked as deleted.
+ * field of this image file, if it's marked as deleted.
* @param int $field
* @return bool
*/
function userCan( $field ) {
- if( isset($this->deleted) && ($this->deleted & $field) == $field ) {
- global $wgUser;
- $permission = ( $this->deleted & File::DELETED_RESTRICTED ) == File::DELETED_RESTRICTED
- ? 'suppressrevision'
- : 'deleterevision';
- wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
- return $wgUser->isAllowed( $permission );
- } else {
- return true;
- }
+ $this->load();
+ return Revision::userCanBitfield( $this->deleted, $field );
}
}
diff --git a/includes/filerepo/RepoGroup.php b/includes/filerepo/RepoGroup.php
index 2303f581..1465400c 100644
--- a/includes/filerepo/RepoGroup.php
+++ b/includes/filerepo/RepoGroup.php
@@ -13,8 +13,10 @@
class RepoGroup {
var $localRepo, $foreignRepos, $reposInitialised = false;
var $localInfo, $foreignInfo;
+ var $cache;
protected static $instance;
+ const MAX_CACHE_SIZE = 1000;
/**
* Get a RepoGroup instance. At present only one instance of RepoGroup is
@@ -54,56 +56,116 @@ class RepoGroup {
function __construct( $localInfo, $foreignInfo ) {
$this->localInfo = $localInfo;
$this->foreignInfo = $foreignInfo;
+ $this->cache = array();
}
/**
* Search repositories for an image.
- * You can also use wfGetFile() to do this.
+ * You can also use wfFindFile() to do this.
* @param mixed $title Title object or string
- * @param mixed $time The 14-char timestamp the file should have
- * been uploaded, or false for the current version
- * @param mixed $flags FileRepo::FIND_ flags
+ * @param $options Associative array of options:
+ * time: requested time for an archived image, or false for the
+ * current version. An image object will be returned which was
+ * created at the specified time.
+ *
+ * ignoreRedirect: If true, do not follow file redirects
+ *
+ * private: If true, return restricted (deleted) files if the current
+ * user is allowed to view them. Otherwise, such files will not
+ * be found.
+ *
+ * bypassCache: If true, do not use the process-local cache of File objects
* @return File object or false if it is not found
*/
- function findFile( $title, $time = false, $flags = 0 ) {
+ function findFile( $title, $options = array() ) {
+ if ( !is_array( $options ) ) {
+ // MW 1.15 compat
+ $options = array( 'time' => $options );
+ }
if ( !$this->reposInitialised ) {
$this->initialiseRepos();
}
+ if ( !($title instanceof Title) ) {
+ $title = Title::makeTitleSafe( NS_FILE, $title );
+ if ( !is_object( $title ) ) {
+ return false;
+ }
+ }
- $image = $this->localRepo->findFile( $title, $time, $flags );
+ # Check the cache
+ if ( empty( $options['ignoreRedirect'] )
+ && empty( $options['private'] )
+ && empty( $options['bypassCache'] ) )
+ {
+ $useCache = true;
+ $time = isset( $options['time'] ) ? $options['time'] : '';
+ $dbkey = $title->getDBkey();
+ if ( isset( $this->cache[$dbkey][$time] ) ) {
+ wfDebug( __METHOD__.": got File:$dbkey from process cache\n" );
+ # Move it to the end of the list so that we can delete the LRU entry later
+ $tmp = $this->cache[$dbkey];
+ unset( $this->cache[$dbkey] );
+ $this->cache[$dbkey] = $tmp;
+ # Return the entry
+ return $this->cache[$dbkey][$time];
+ } else {
+ # Add a negative cache entry, may be overridden
+ $this->trimCache();
+ $this->cache[$dbkey][$time] = false;
+ $cacheEntry =& $this->cache[$dbkey][$time];
+ }
+ } else {
+ $useCache = false;
+ }
+
+ # Check the local repo
+ $image = $this->localRepo->findFile( $title, $options );
if ( $image ) {
+ if ( $useCache ) {
+ $cacheEntry = $image;
+ }
return $image;
}
+
+ # Check the foreign repos
foreach ( $this->foreignRepos as $repo ) {
- $image = $repo->findFile( $title, $time, $flags );
+ $image = $repo->findFile( $title, $options );
if ( $image ) {
+ if ( $useCache ) {
+ $cacheEntry = $image;
+ }
return $image;
}
}
+ # Not found, do not override negative cache
return false;
}
- function findFiles( $titles ) {
+
+ function findFiles( $inputItems ) {
if ( !$this->reposInitialised ) {
$this->initialiseRepos();
}
- $titleObjs = array();
- foreach ( $titles as $title ) {
- if ( !( $title instanceof Title ) )
- $title = Title::makeTitleSafe( NS_FILE, $title );
- if ( $title )
- $titleObjs[$title->getDBkey()] = $title;
+ $items = array();
+ foreach ( $inputItems as $item ) {
+ if ( !is_array( $item ) ) {
+ $item = array( 'title' => $item );
+ }
+ if ( !( $item['title'] instanceof Title ) )
+ $item['title'] = Title::makeTitleSafe( NS_FILE, $item['title'] );
+ if ( $item['title'] )
+ $items[$item['title']->getDBkey()] = $item;
}
- $images = $this->localRepo->findFiles( $titleObjs );
+ $images = $this->localRepo->findFiles( $items );
foreach ( $this->foreignRepos as $repo ) {
- // Remove found files from $titleObjs
- foreach ( $images as $name => $image )
- if ( isset( $titleObjs[$name] ) )
- unset( $titleObjs[$name] );
-
- $images = array_merge( $images, $repo->findFiles( $titleObjs ) );
+ // Remove found files from $items
+ foreach ( $images as $name => $image ) {
+ unset( $items[$name] );
+ }
+
+ $images = array_merge( $images, $repo->findFiles( $items ) );
}
return $images;
}
@@ -128,16 +190,16 @@ class RepoGroup {
}
return false;
}
-
+
function findBySha1( $hash ) {
if ( !$this->reposInitialised ) {
$this->initialiseRepos();
}
-
+
$result = $this->localRepo->findBySha1( $hash );
foreach ( $this->foreignRepos as $repo )
$result = array_merge( $result, $repo->findBySha1( $hash ) );
- return $result;
+ return $result;
}
/**
@@ -178,7 +240,7 @@ class RepoGroup {
}
/**
- * Call a function for each foreign repo, with the repo object as the
+ * Call a function for each foreign repo, with the repo object as the
* first parameter.
*
* @param $callback callback The function to call
@@ -254,4 +316,16 @@ class RepoGroup {
return File::getPropsFromPath( $fileName );
}
}
+
+ /**
+ * Limit cache memory
+ */
+ function trimCache() {
+ while ( count( $this->cache ) >= self::MAX_CACHE_SIZE ) {
+ reset( $this->cache );
+ $key = key( $this->cache );
+ wfDebug( __METHOD__.": evicting $key\n" );
+ unset( $this->cache[$key] );
+ }
+ }
}
diff --git a/includes/json/FormatJson.php b/includes/json/FormatJson.php
new file mode 100644
index 00000000..6db4a23f
--- /dev/null
+++ b/includes/json/FormatJson.php
@@ -0,0 +1,32 @@
+<?php
+/*
+ * simple wrapper for json_econde and json_decode that falls back on Services_JSON class
+ */
+if( !(defined( 'MEDIAWIKI' ) ) ) {
+ die( 1 );
+}
+
+class FormatJson{
+ public static function encode($value, $isHtml=false){
+ // Some versions of PHP have a broken json_encode, see PHP bug
+ // 46944. Test encoding an affected character (U+20000) to
+ // avoid this.
+ if (!function_exists('json_encode') || $isHtml || strtolower(json_encode("\xf0\xa0\x80\x80")) != '\ud840\udc00') {
+ $json = new Services_JSON();
+ return $json->encode($value, $isHtml) ;
+ } else {
+ return json_encode($value);
+ }
+ }
+ public static function decode( $value, $assoc=false ){
+ if (!function_exists('json_decode') ) {
+ $json = new Services_JSON();
+ $jsonDec = $json->decode( $value );
+ if( $assoc )
+ $jsonDec = wfObjectToArray( $jsonDec );
+ return $jsonDec;
+ } else {
+ return json_decode( $value, $assoc );
+ }
+ }
+}
diff --git a/includes/api/ApiFormatJson_json.php b/includes/json/Services_JSON.php
index 8cb3606d..94233520 100644
--- a/includes/api/ApiFormatJson_json.php
+++ b/includes/json/Services_JSON.php
@@ -50,7 +50,7 @@
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
-* @version CVS: $Id: ApiFormatJson_json.php 45765 2009-01-15 10:18:44Z catrope $
+* @version CVS: $Id: Services_JSON.php 65683 2010-04-30 05:56:15Z tstarling $
* @license http://www.opensource.org/licenses/bsd-license.php
* @see http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
@@ -135,6 +135,19 @@ class Services_JSON
{
$this->use = $use;
}
+
+ private static $mHavePear = null;
+ /**
+ * Returns cached result of class_exists('pear'), to avoid calling AutoLoader numerous times
+ * in cases when PEAR is not present.
+ * @return boolean
+ */
+ private static function pearInstalled() {
+ if ( self::$mHavePear === null ) {
+ self::$mHavePear = class_exists( 'pear' );
+ }
+ return self::$mHavePear;
+ }
/**
* convert a string from one UTF-16 char to one UTF-8 char
@@ -815,8 +828,9 @@ class Services_JSON
*/
function isError($data, $code = null)
{
- if (class_exists('pear')) {
- return PEAR::isError($data, $code);
+ if ( self::pearInstalled() ) {
+ //avoid some strict warnings on PEAR isError check (looks like http://pear.php.net/bugs/bug.php?id=9950 has been around for some time)
+ return @PEAR::isError($data, $code);
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
is_subclass_of($data, 'services_json_error'))) {
return true;
diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php
index c2f2458e..870e2126 100644
--- a/includes/media/Bitmap.php
+++ b/includes/media/Bitmap.php
@@ -22,7 +22,7 @@ class BitmapHandler extends ImageHandler {
# JPEG has the handy property of allowing thumbnailing without full decompression, so we make
# an exception for it.
if ( $mimeType !== 'image/jpeg' &&
- $srcWidth * $srcHeight > $wgMaxImageArea )
+ $this->getImageArea( $image, $srcWidth, $srcHeight ) > $wgMaxImageArea )
{
return false;
}
@@ -39,6 +39,13 @@ class BitmapHandler extends ImageHandler {
return true;
}
+
+
+ // Function that returns the number of pixels to be thumbnailed.
+ // Intended for animated GIFs to multiply by the number of frames.
+ function getImageArea( $image, $width, $height ) {
+ return $width * $height;
+ }
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
global $wgUseImageMagick, $wgImageMagickConvertCommand, $wgImageMagickTempDir;
@@ -53,6 +60,7 @@ class BitmapHandler extends ImageHandler {
$physicalHeight = $params['physicalHeight'];
$clientWidth = $params['width'];
$clientHeight = $params['height'];
+ $comment = isset( $params['descriptionUrl'] ) ? "File source: ". $params['descriptionUrl'] : '';
$srcWidth = $image->getWidth();
$srcHeight = $image->getHeight();
$mimeType = $image->getMimeType();
@@ -103,7 +111,7 @@ class BitmapHandler extends ImageHandler {
$quality = '';
$sharpen = '';
- $frame = '';
+ $scene = false;
$animation = '';
if ( $mimeType == 'image/jpeg' ) {
$quality = "-quality 80"; // 80%
@@ -117,7 +125,7 @@ class BitmapHandler extends ImageHandler {
if( $srcWidth * $srcHeight > $wgMaxAnimatedGifArea ) {
// Extract initial frame only; we're so big it'll
// be a total drag. :P
- $frame = '[0]';
+ $scene = 0;
} else {
// Coalesce is needed to scale animated GIFs properly (bug 1017).
$animation = ' -coalesce ';
@@ -139,17 +147,19 @@ class BitmapHandler extends ImageHandler {
$cmd =
$tempEnv .
- wfEscapeShellArg($wgImageMagickConvertCommand) .
+ wfEscapeShellArg( $wgImageMagickConvertCommand ) .
" {$quality} -background white -size {$physicalWidth} ".
- wfEscapeShellArg($srcPath . $frame) .
+ wfEscapeShellArg( $this->escapeMagickInput( $srcPath, $scene ) ) .
$animation .
// For the -resize option a "!" is needed to force exact size,
// or ImageMagick may decide your ratio is wrong and slice off
// a pixel.
" -thumbnail " . wfEscapeShellArg( "{$physicalWidth}x{$physicalHeight}!" ) .
+ // Add the source url as a comment to the thumb.
+ " -set comment " . wfEscapeShellArg( $this->escapeMagickProperty( $comment ) ) .
" -depth 8 $sharpen " .
- wfEscapeShellArg($dstPath) . " 2>&1";
- wfDebug( __METHOD__.": running ImageMagick: $cmd\n");
+ wfEscapeShellArg( $this->escapeMagickOutput( $dstPath ) ) . " 2>&1";
+ wfDebug( __METHOD__.": running ImageMagick: $cmd\n" );
wfProfileIn( 'convert' );
$err = wfShellExec( $cmd, $retval );
wfProfileOut( 'convert' );
@@ -181,14 +191,23 @@ class BitmapHandler extends ImageHandler {
if( !isset( $typemap[$mimeType] ) ) {
$err = 'Image type not supported';
wfDebug( "$err\n" );
- return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $err );
+ $errMsg = wfMsg ( 'thumbnail_image-type' );
+ return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $errMsg );
}
list( $loader, $colorStyle, $saveType ) = $typemap[$mimeType];
if( !function_exists( $loader ) ) {
$err = "Incomplete GD library configuration: missing function $loader";
wfDebug( "$err\n" );
- return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $err );
+ $errMsg = wfMsg ( 'thumbnail_gd-library', $loader );
+ return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $errMsg );
+ }
+
+ if ( !file_exists( $srcPath ) ) {
+ $err = "File seems to be missing: $srcPath";
+ wfDebug( "$err\n" );
+ $errMsg = wfMsg ( 'thumbnail_image-missing', $srcPath );
+ return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $errMsg );
}
$src_image = call_user_func( $loader, $srcPath );
@@ -231,6 +250,90 @@ class BitmapHandler extends ImageHandler {
}
}
+ /**
+ * Escape a string for ImageMagick's property input (e.g. -set -comment)
+ * See InterpretImageProperties() in magick/property.c
+ */
+ function escapeMagickProperty( $s ) {
+ // Double the backslashes
+ $s = str_replace( '\\', '\\\\', $s );
+ // Double the percents
+ $s = str_replace( '%', '%%', $s );
+ // Escape initial - or @
+ if ( strlen( $s ) > 0 && ( $s[0] === '-' || $s[0] === '@' ) ) {
+ $s = '\\' . $s;
+ }
+ return $s;
+ }
+
+ /**
+ * Escape a string for ImageMagick's input filenames. See ExpandFilenames()
+ * and GetPathComponent() in magick/utility.c.
+ *
+ * This won't work with an initial ~ or @, so input files should be prefixed
+ * with the directory name.
+ *
+ * Glob character unescaping is broken in ImageMagick before 6.6.1-5, but
+ * it's broken in a way that doesn't involve trying to convert every file
+ * in a directory, so we're better off escaping and waiting for the bugfix
+ * to filter down to users.
+ *
+ * @param $path string The file path
+ * @param $scene string The scene specification, or false if there is none
+ */
+ function escapeMagickInput( $path, $scene = false ) {
+ # Die on initial metacharacters (caller should prepend path)
+ $firstChar = substr( $path, 0, 1 );
+ if ( $firstChar === '~' || $firstChar === '@' ) {
+ throw new MWException( __METHOD__.': cannot escape this path name' );
+ }
+
+ # Escape glob chars
+ $path = preg_replace( '/[*?\[\]{}]/', '\\\\\0', $path );
+
+ return $this->escapeMagickPath( $path, $scene );
+ }
+
+ /**
+ * Escape a string for ImageMagick's output filename. See
+ * InterpretImageFilename() in magick/image.c.
+ */
+ function escapeMagickOutput( $path, $scene = false ) {
+ $path = str_replace( '%', '%%', $path );
+ return $this->escapeMagickPath( $path, $scene );
+ }
+
+ /**
+ * Armour a string against ImageMagick's GetPathComponent(). This is a
+ * helper function for escapeMagickInput() and escapeMagickOutput().
+ *
+ * @param $path string The file path
+ * @param $scene string The scene specification, or false if there is none
+ */
+ protected function escapeMagickPath( $path, $scene = false ) {
+ # Die on format specifiers (other than drive letters). The regex is
+ # meant to match all the formats you get from "convert -list format"
+ if ( preg_match( '/^([a-zA-Z0-9-]+):/', $path, $m ) ) {
+ if ( wfIsWindows() && is_dir( $m[0] ) ) {
+ // OK, it's a drive letter
+ // ImageMagick has a similar exception, see IsMagickConflict()
+ } else {
+ throw new MWException( __METHOD__.': unexpected colon character in path name' );
+ }
+ }
+
+ # If there are square brackets, add a do-nothing scene specification
+ # to force a literal interpretation
+ if ( $scene === false ) {
+ if ( strpos( $path, '[' ) !== false ) {
+ $path .= '[0--1]';
+ }
+ } else {
+ $path .= "[$scene]";
+ }
+ return $path;
+ }
+
static function imageJpegWrapper( $dst_image, $thumbPath ) {
imageinterlace( $dst_image );
imagejpeg( $dst_image, $thumbPath, 95 );
diff --git a/includes/media/DjVu.php b/includes/media/DjVu.php
index f0bbcc51..38c16c21 100644
--- a/includes/media/DjVu.php
+++ b/includes/media/DjVu.php
@@ -18,8 +18,8 @@ class DjVuHandler extends ImageHandler {
}
}
- function mustRender() { return true; }
- function isMultiPage() { return true; }
+ function mustRender( $file ) { return true; }
+ function isMultiPage( $file ) { return true; }
function getParamMap() {
return array(
@@ -135,7 +135,7 @@ class DjVuHandler extends ImageHandler {
/**
* Cache a document tree for the DjVu XML metadata
*/
- function getMetaTree( $image ) {
+ function getMetaTree( $image , $gettext = false ) {
if ( isset( $image->dejaMetaTree ) ) {
return $image->dejaMetaTree;
}
@@ -149,15 +149,32 @@ class DjVuHandler extends ImageHandler {
wfSuppressWarnings();
try {
- $image->dejaMetaTree = new SimpleXMLElement( $metadata );
- } catch( Exception $e ) {
- wfDebug( "Bogus multipage XML metadata on '$image->name'\n" );
// Set to false rather than null to avoid further attempts
$image->dejaMetaTree = false;
+ $image->djvuTextTree = false;
+ $tree = new SimpleXMLElement( $metadata );
+ if( $tree->getName() == 'mw-djvu' ) {
+ foreach($tree->children() as $b){
+ if( $b->getName() == 'DjVuTxt' ) {
+ $image->djvuTextTree = $b;
+ }
+ else if ( $b->getName() == 'DjVuXML' ) {
+ $image->dejaMetaTree = $b;
+ }
+ }
+ } else {
+ $image->dejaMetaTree = $tree;
+ }
+ } catch( Exception $e ) {
+ wfDebug( "Bogus multipage XML metadata on '$image->name'\n" );
}
wfRestoreWarnings();
wfProfileOut( __METHOD__ );
- return $image->dejaMetaTree;
+ if( $gettext ) {
+ return $image->djvuTextTree;
+ } else {
+ return $image->dejaMetaTree;
+ }
}
function getImageSize( $image, $path ) {
@@ -211,4 +228,21 @@ class DjVuHandler extends ImageHandler {
return false;
}
}
+
+ function getPageText( $image, $page ){
+ $tree = $this->getMetaTree( $image, true );
+ if ( !$tree ) {
+ return false;
+ }
+
+ $o = $tree->BODY[0]->PAGE[$page-1];
+ if ( $o ) {
+ $txt = $o['value'];
+ return $txt;
+ } else {
+ return false;
+ }
+
+ }
+
}
diff --git a/includes/media/GIF.php b/includes/media/GIF.php
new file mode 100644
index 00000000..dbe5f813
--- /dev/null
+++ b/includes/media/GIF.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @file
+ * @ingroup Media
+ */
+
+/**
+ * Handler for GIF images.
+ *
+ * @ingroup Media
+ */
+class GIFHandler extends BitmapHandler {
+
+ function getMetadata( $image, $filename ) {
+ if ( !isset($image->parsedGIFMetadata) ) {
+ try {
+ $image->parsedGIFMetadata = GIFMetadataExtractor::getMetadata( $filename );
+ } catch( Exception $e ) {
+ // Broken file?
+ wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+ return '0';
+ }
+ }
+
+ return serialize($image->parsedGIFMetadata);
+
+ }
+
+ function formatMetadata( $image ) {
+ return false;
+ }
+
+ function getImageArea( $image, $width, $height ) {
+ $ser = $image->getMetadata();
+ if ($ser) {
+ $metadata = unserialize($ser);
+ return $width * $height * $metadata['frameCount'];
+ } else {
+ return $width * $height;
+ }
+ }
+
+ function getMetadataType( $image ) {
+ return 'parsed-gif';
+ }
+
+ function getLongDesc( $image ) {
+ global $wgUser, $wgLang;
+ $sk = $wgUser->getSkin();
+
+ $metadata = @unserialize($image->getMetadata());
+
+ if (!$metadata) return parent::getLongDesc( $image );
+
+ $info = array();
+ $info[] = $image->getMimeType();
+ $info[] = $sk->formatSize( $image->getSize() );
+
+ if ($metadata['looped'])
+ $info[] = wfMsgExt( 'file-info-gif-looped', 'parseinline' );
+
+ if ($metadata['frameCount'] > 1)
+ $info[] = wfMsgExt( 'file-info-gif-frames', 'parseinline', $metadata['frameCount'] );
+
+ if ($metadata['duration'])
+ $info[] = $wgLang->formatTimePeriod( $metadata['duration'] );
+
+ $infoString = $wgLang->commaList( $info );
+
+ return "($infoString)";
+ }
+}
diff --git a/includes/media/GIFMetadataExtractor.php b/includes/media/GIFMetadataExtractor.php
new file mode 100644
index 00000000..fac9012b
--- /dev/null
+++ b/includes/media/GIFMetadataExtractor.php
@@ -0,0 +1,175 @@
+<?php
+/**
+ * GIF frame counter.
+ * Originally written in Perl by Steve Sanbeg.
+ * Ported to PHP by Andrew Garrett
+ * Deliberately not using MWExceptions to avoid external dependencies, encouraging
+ * redistribution.
+ */
+
+class GIFMetadataExtractor {
+ static $gif_frame_sep;
+ static $gif_extension_sep;
+ static $gif_term;
+
+ static function getMetadata( $filename ) {
+ self::$gif_frame_sep = pack( "C", ord("," ) );
+ self::$gif_extension_sep = pack( "C", ord("!" ) );
+ self::$gif_term = pack( "C", ord(";" ) );
+
+ $frameCount = 0;
+ $duration = 0.0;
+ $isLooped = false;
+
+ if (!$filename)
+ throw new Exception( "No file name specified" );
+ elseif ( !file_exists($filename) || is_dir($filename) )
+ throw new Exception( "File $filename does not exist" );
+
+ $fh = fopen( $filename, 'r' );
+
+ if (!$fh)
+ throw new Exception( "Unable to open file $filename" );
+
+ // Check for the GIF header
+ $buf = fread( $fh, 6 );
+ if ( !($buf == 'GIF87a' || $buf == 'GIF89a') ) {
+ throw new Exception( "Not a valid GIF file; header: $buf" );
+ }
+
+ // Skip over width and height.
+ fread( $fh, 4 );
+
+ // Read BPP
+ $buf = fread( $fh, 1 );
+ $bpp = self::decodeBPP( $buf );
+
+ // Skip over background and aspect ratio
+ fread( $fh, 2 );
+
+ // Skip over the GCT
+ self::readGCT( $fh, $bpp );
+
+ while( !feof( $fh ) ) {
+ $buf = fread( $fh, 1 );
+
+ if ($buf == self::$gif_frame_sep) {
+ // Found a frame
+ $frameCount++;
+
+ ## Skip bounding box
+ fread( $fh, 8 );
+
+ ## Read BPP
+ $buf = fread( $fh, 1 );
+ $bpp = self::decodeBPP( $buf );
+
+ ## Read GCT
+ self::readGCT( $fh, $bpp );
+ fread( $fh, 1 );
+ self::skipBlock( $fh );
+ } elseif ( $buf == self::$gif_extension_sep ) {
+ $buf = fread( $fh, 1 );
+ $extension_code = unpack( 'C', $buf );
+ $extension_code = $extension_code[1];
+
+ if ($extension_code == 0xF9) {
+ // Graphics Control Extension.
+ fread( $fh, 1 ); // Block size
+
+ fread( $fh, 1 ); // Transparency, disposal method, user input
+
+ $buf = fread( $fh, 2 ); // Delay, in hundredths of seconds.
+ $delay = unpack( 'v', $buf );
+ $delay = $delay[1];
+ $duration += $delay * 0.01;
+
+ fread( $fh, 1 ); // Transparent colour index
+
+ $term = fread( $fh, 1 ); // Should be a terminator
+ $term = unpack( 'C', $term );
+ $term = $term[1];
+ if ($term != 0 )
+ throw new Exception( "Malformed Graphics Control Extension block" );
+ } elseif ($extension_code == 0xFF) {
+ // Application extension (Netscape info about the animated gif)
+ $blockLength = fread( $fh, 1 );
+ $blockLength = unpack( 'C', $blockLength );
+ $blockLength = $blockLength[1];
+ $data = fread( $fh, $blockLength );
+
+ // NETSCAPE2.0 (application name)
+ if ($blockLength != 11 || $data != 'NETSCAPE2.0') {
+ fseek( $fh, -($blockLength + 1), SEEK_CUR );
+ self::skipBlock( $fh );
+ continue;
+ }
+
+ $data = fread( $fh, 2 ); // Block length and introduction, should be 03 01
+
+ if ($data != "\x03\x01") {
+ throw new Exception( "Expected \x03\x01, got $data" );
+ }
+
+ // Unsigned little-endian integer, loop count or zero for "forever"
+ $loopData = fread( $fh, 2 );
+ $loopData = unpack( 'v', $loopData );
+ $loopCount = $loopData[1];
+
+ if ($loopCount != 1) {
+ $isLooped = true;
+ }
+
+ // Read out terminator byte
+ fread( $fh, 1 );
+ } else {
+ self::skipBlock( $fh );
+ }
+ } elseif ( $buf == self::$gif_term ) {
+ break;
+ } else {
+ $byte = unpack( 'C', $buf );
+ $byte = $byte[1];
+ throw new Exception( "At position: ".ftell($fh). ", Unknown byte ".$byte );
+ }
+ }
+
+ return array(
+ 'frameCount' => $frameCount,
+ 'looped' => $isLooped,
+ 'duration' => $duration
+ );
+
+ }
+
+ static function readGCT( $fh, $bpp ) {
+ if ($bpp > 0) {
+ for( $i=1; $i<=pow(2,$bpp); ++$i ) {
+ fread( $fh, 3 );
+ }
+ }
+ }
+
+ static function decodeBPP( $data ) {
+ $buf = unpack( 'C', $data );
+ $buf = $buf[1];
+ $bpp = ( $buf & 7 ) + 1;
+ $buf >>= 7;
+
+ $have_map = $buf & 1;
+
+ return $have_map ? $bpp : 0;
+ }
+
+ static function skipBlock( $fh ) {
+ while ( !feof( $fh ) ) {
+ $buf = fread( $fh, 1 );
+ $block_len = unpack( 'C', $buf );
+ $block_len = $block_len[1];
+ if ($block_len == 0)
+ return;
+ fread( $fh, $block_len );
+ }
+ }
+
+}
diff --git a/includes/media/Generic.php b/includes/media/Generic.php
index a9c681e1..8a4d7054 100644
--- a/includes/media/Generic.php
+++ b/includes/media/Generic.php
@@ -71,18 +71,18 @@ abstract class MediaHandler {
* Get an image size array like that returned by getimagesize(), or false if it
* can't be determined.
*
- * @param Image $image The image object, or false if there isn't one
- * @param string $fileName The filename
- * @return array
+ * @param $image File: the image object, or false if there isn't one
+ * @param $fileName String: the filename
+ * @return Array
*/
abstract function getImageSize( $image, $path );
/**
* Get handler-specific metadata which will be saved in the img_metadata field.
*
- * @param Image $image The image object, or false if there isn't one
- * @param string $fileName The filename
- * @return string
+ * @param $image File: the image object, or false if there isn't one
+ * @param $path String: the filename
+ * @return String
*/
function getMetadata( $image, $path ) { return ''; }
@@ -114,10 +114,10 @@ abstract class MediaHandler {
* Get a MediaTransformOutput object representing the transformed output. Does not
* actually do the transform.
*
- * @param Image $image The image object
- * @param string $dstPath Filesystem destination path
- * @param string $dstUrl Destination URL to use in output HTML
- * @param array $params Arbitrary set of parameters validated by $this->validateParam()
+ * @param $image File: the image object
+ * @param $dstPath String: filesystem destination path
+ * @param $dstUrl String: Destination URL to use in output HTML
+ * @param $params Array: Arbitrary set of parameters validated by $this->validateParam()
*/
function getTransform( $image, $dstPath, $dstUrl, $params ) {
return $this->doTransform( $image, $dstPath, $dstUrl, $params, self::TRANSFORM_LATER );
@@ -127,11 +127,11 @@ abstract class MediaHandler {
* Get a MediaTransformOutput object representing the transformed output. Does the
* transform unless $flags contains self::TRANSFORM_LATER.
*
- * @param Image $image The image object
- * @param string $dstPath Filesystem destination path
- * @param string $dstUrl Destination URL to use in output HTML
- * @param array $params Arbitrary set of parameters validated by $this->validateParam()
- * @param integer $flags A bitfield, may contain self::TRANSFORM_LATER
+ * @param $image File: the image object
+ * @param $dstPath String: filesystem destination path
+ * @param $dstUrl String: destination URL to use in output HTML
+ * @param $params Array: arbitrary set of parameters validated by $this->validateParam()
+ * @param $flags Integer: a bitfield, may contain self::TRANSFORM_LATER
*/
abstract function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 );
@@ -180,6 +180,14 @@ abstract class MediaHandler {
}
/**
+ * Generic getter for text layer.
+ * Currently overloaded by PDF and DjVu handlers
+ */
+ function getPageText( $image, $page ) {
+ return false;
+ }
+
+ /**
* Get an array structure that looks like this:
*
* array(
@@ -210,7 +218,7 @@ abstract class MediaHandler {
}
/**
- * @fixme document this!
+ * @todo Fixme: document this!
* 'value' thingy goes into a wikitext table; it used to be escaped but
* that was incompatible with previous practice of customized display
* with wikitext formatting via messages such as 'exif-model-value'.
@@ -376,8 +384,8 @@ abstract class ImageHandler extends MediaHandler {
/**
* Validate thumbnail parameters and fill in the correct height
*
- * @param integer &$width Specified width (input/output)
- * @param integer &$height Height (output only)
+ * @param $width Integer: specified width (input/output)
+ * @param $height Integer: height (output only)
* @return false to indicate that an error should be returned to the user.
*/
function validateThumbParams( &$width, &$height, $srcWidth, $srcHeight, $mimeType ) {
diff --git a/includes/media/SVG.php b/includes/media/SVG.php
index f0519e89..4cc66fb1 100644
--- a/includes/media/SVG.php
+++ b/includes/media/SVG.php
@@ -40,8 +40,6 @@ class SvgHandler extends ImageHandler {
}
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
- global $wgSVGConverters, $wgSVGConverter, $wgSVGConverterPath;
-
if ( !$this->normaliseParams( $image, $params ) ) {
return new TransformParameterError( $params );
}
diff --git a/includes/memcached-client.php b/includes/memcached-client.php
index 79745309..3b0ae90d 100644
--- a/includes/memcached-client.php
+++ b/includes/memcached-client.php
@@ -44,7 +44,7 @@
*
* require_once 'memcached.php';
*
- * $mc = new memcached(array(
+ * $mc = new MWMemcached(array(
* 'servers' => array('127.0.0.1:10000',
* array('192.0.0.1:10010', 2),
* '127.0.0.1:10020'),
@@ -63,1027 +63,989 @@
// {{{ requirements
// }}}
-// {{{ class memcached
+// {{{ class MWMemcached
/**
* memcached client class implemented using (p)fsockopen()
*
* @author Ryan T. Dean <rtdean@cytherianage.net>
* @ingroup Cache
*/
-class memcached
-{
- // {{{ properties
- // {{{ public
-
- // {{{ constants
- // {{{ flags
-
- /**
- * Flag: indicates data is serialized
- */
- const SERIALIZED = 1;
-
- /**
- * Flag: indicates data is compressed
- */
- const COMPRESSED = 2;
-
- // }}}
-
- /**
- * Minimum savings to store data compressed
- */
- const COMPRESSION_SAVINGS = 0.20;
-
- // }}}
-
-
- /**
- * Command statistics
- *
- * @var array
- * @access public
- */
- var $stats;
-
- // }}}
- // {{{ private
-
- /**
- * Cached Sockets that are connected
- *
- * @var array
- * @access private
- */
- var $_cache_sock;
-
- /**
- * Current debug status; 0 - none to 9 - profiling
- *
- * @var boolean
- * @access private
- */
- var $_debug;
-
- /**
- * Dead hosts, assoc array, 'host'=>'unixtime when ok to check again'
- *
- * @var array
- * @access private
- */
- var $_host_dead;
-
- /**
- * Is compression available?
- *
- * @var boolean
- * @access private
- */
- var $_have_zlib;
-
- /**
- * Do we want to use compression?
- *
- * @var boolean
- * @access private
- */
- var $_compress_enable;
-
- /**
- * At how many bytes should we compress?
- *
- * @var integer
- * @access private
- */
- var $_compress_threshold;
-
- /**
- * Are we using persistant links?
- *
- * @var boolean
- * @access private
- */
- var $_persistant;
-
- /**
- * If only using one server; contains ip:port to connect to
- *
- * @var string
- * @access private
- */
- var $_single_sock;
-
- /**
- * Array containing ip:port or array(ip:port, weight)
- *
- * @var array
- * @access private
- */
- var $_servers;
-
- /**
- * Our bit buckets
- *
- * @var array
- * @access private
- */
- var $_buckets;
-
- /**
- * Total # of bit buckets we have
- *
- * @var integer
- * @access private
- */
- var $_bucketcount;
-
- /**
- * # of total servers we have
- *
- * @var integer
- * @access private
- */
- var $_active;
-
- /**
- * Stream timeout in seconds. Applies for example to fread()
- *
- * @var integer
- * @access private
- */
- var $_timeout_seconds;
-
- /**
- * Stream timeout in microseconds
- *
- * @var integer
- * @access private
- */
- var $_timeout_microseconds;
-
- /**
- * Connect timeout in seconds
- */
- var $_connect_timeout;
-
- /**
- * Number of connection attempts for each server
- */
- var $_connect_attempts;
-
- // }}}
- // }}}
- // {{{ methods
- // {{{ public functions
- // {{{ memcached()
-
- /**
- * Memcache initializer
- *
- * @param array $args Associative array of settings
- *
- * @return mixed
- * @access public
- */
- function memcached ($args)
- {
- $this->set_servers(@$args['servers']);
- $this->_debug = @$args['debug'];
- $this->stats = array();
- $this->_compress_threshold = @$args['compress_threshold'];
- $this->_persistant = array_key_exists('persistant', $args) ? (@$args['persistant']) : false;
- $this->_compress_enable = true;
- $this->_have_zlib = function_exists("gzcompress");
-
- $this->_cache_sock = array();
- $this->_host_dead = array();
-
- $this->_timeout_seconds = 1;
- $this->_timeout_microseconds = 0;
-
- $this->_connect_timeout = 0.01;
- $this->_connect_attempts = 3;
- }
-
- // }}}
- // {{{ add()
-
- /**
- * Adds a key/value to the memcache server if one isn't already set with
- * that key
- *
- * @param string $key Key to set with data
- * @param mixed $val Value to store
- * @param integer $exp (optional) Time to expire data at
- *
- * @return boolean
- * @access public
- */
- function add ($key, $val, $exp = 0)
- {
- return $this->_set('add', $key, $val, $exp);
- }
-
- // }}}
- // {{{ decr()
-
- /**
- * Decriment a value stored on the memcache server
- *
- * @param string $key Key to decriment
- * @param integer $amt (optional) Amount to decriment
- *
- * @return mixed FALSE on failure, value on success
- * @access public
- */
- function decr ($key, $amt=1)
- {
- return $this->_incrdecr('decr', $key, $amt);
- }
-
- // }}}
- // {{{ delete()
-
- /**
- * Deletes a key from the server, optionally after $time
- *
- * @param string $key Key to delete
- * @param integer $time (optional) How long to wait before deleting
- *
- * @return boolean TRUE on success, FALSE on failure
- * @access public
- */
- function delete ($key, $time = 0)
- {
- if (!$this->_active)
- return false;
-
- $sock = $this->get_sock($key);
- if (!is_resource($sock))
- return false;
-
- $key = is_array($key) ? $key[1] : $key;
-
- @$this->stats['delete']++;
- $cmd = "delete $key $time\r\n";
- if(!$this->_safe_fwrite($sock, $cmd, strlen($cmd)))
- {
- $this->_dead_sock($sock);
- return false;
- }
- $res = trim(fgets($sock));
-
- if ($this->_debug)
- $this->_debugprint(sprintf("MemCache: delete %s (%s)\n", $key, $res));
-
- if ($res == "DELETED")
- return true;
- return false;
- }
-
- // }}}
- // {{{ disconnect_all()
-
- /**
- * Disconnects all connected sockets
- *
- * @access public
- */
- function disconnect_all ()
- {
- foreach ($this->_cache_sock as $sock)
- fclose($sock);
-
- $this->_cache_sock = array();
- }
-
- // }}}
- // {{{ enable_compress()
-
- /**
- * Enable / Disable compression
- *
- * @param boolean $enable TRUE to enable, FALSE to disable
- *
- * @access public
- */
- function enable_compress ($enable)
- {
- $this->_compress_enable = $enable;
- }
-
- // }}}
- // {{{ forget_dead_hosts()
-
- /**
- * Forget about all of the dead hosts
- *
- * @access public
- */
- function forget_dead_hosts ()
- {
- $this->_host_dead = array();
- }
-
- // }}}
- // {{{ get()
-
- /**
- * Retrieves the value associated with the key from the memcache server
- *
- * @param string $key Key to retrieve
- *
- * @return mixed
- * @access public
- */
- function get ($key)
- {
- $fname = 'memcached::get';
- wfProfileIn( $fname );
-
- if ( $this->_debug ) {
- $this->_debugprint( "get($key)\n" );
- }
-
- if (!$this->_active) {
- wfProfileOut( $fname );
- return false;
- }
-
- $sock = $this->get_sock($key);
-
- if (!is_resource($sock)) {
- wfProfileOut( $fname );
- return false;
- }
-
- @$this->stats['get']++;
-
- $cmd = "get $key\r\n";
- if (!$this->_safe_fwrite($sock, $cmd, strlen($cmd)))
- {
- $this->_dead_sock($sock);
- wfProfileOut( $fname );
- return false;
- }
-
- $val = array();
- $this->_load_items($sock, $val);
-
- if ($this->_debug)
- foreach ($val as $k => $v)
- $this->_debugprint(sprintf("MemCache: sock %s got %s\n", serialize($sock), $k));
-
- wfProfileOut( $fname );
- return @$val[$key];
- }
-
- // }}}
- // {{{ get_multi()
-
- /**
- * Get multiple keys from the server(s)
- *
- * @param array $keys Keys to retrieve
- *
- * @return array
- * @access public
- */
- function get_multi ($keys)
- {
- if (!$this->_active)
- return false;
-
- @$this->stats['get_multi']++;
- $sock_keys = array();
-
- foreach ($keys as $key)
- {
- $sock = $this->get_sock($key);
- if (!is_resource($sock)) continue;
- $key = is_array($key) ? $key[1] : $key;
- if (!isset($sock_keys[$sock]))
- {
- $sock_keys[$sock] = array();
- $socks[] = $sock;
- }
- $sock_keys[$sock][] = $key;
- }
-
- // Send out the requests
- foreach ($socks as $sock)
- {
- $cmd = "get";
- foreach ($sock_keys[$sock] as $key)
- {
- $cmd .= " ". $key;
- }
- $cmd .= "\r\n";
-
- if ($this->_safe_fwrite($sock, $cmd, strlen($cmd)))
- {
- $gather[] = $sock;
- } else
- {
- $this->_dead_sock($sock);
- }
- }
-
- // Parse responses
- $val = array();
- foreach ($gather as $sock)
- {
- $this->_load_items($sock, $val);
- }
-
- if ($this->_debug)
- foreach ($val as $k => $v)
- $this->_debugprint(sprintf("MemCache: got %s\n", $k));
-
- return $val;
- }
-
- // }}}
- // {{{ incr()
-
- /**
- * Increments $key (optionally) by $amt
- *
- * @param string $key Key to increment
- * @param integer $amt (optional) amount to increment
- *
- * @return integer New key value?
- * @access public
- */
- function incr ($key, $amt=1)
- {
- return $this->_incrdecr('incr', $key, $amt);
- }
-
- // }}}
- // {{{ replace()
-
- /**
- * Overwrites an existing value for key; only works if key is already set
- *
- * @param string $key Key to set value as
- * @param mixed $value Value to store
- * @param integer $exp (optional) Experiation time
- *
- * @return boolean
- * @access public
- */
- function replace ($key, $value, $exp=0)
- {
- return $this->_set('replace', $key, $value, $exp);
- }
-
- // }}}
- // {{{ run_command()
-
- /**
- * Passes through $cmd to the memcache server connected by $sock; returns
- * output as an array (null array if no output)
- *
- * NOTE: due to a possible bug in how PHP reads while using fgets(), each
- * line may not be terminated by a \r\n. More specifically, my testing
- * has shown that, on FreeBSD at least, each line is terminated only
- * with a \n. This is with the PHP flag auto_detect_line_endings set
- * to falase (the default).
- *
- * @param resource $sock Socket to send command on
- * @param string $cmd Command to run
- *
- * @return array Output array
- * @access public
- */
- function run_command ($sock, $cmd)
- {
- if (!is_resource($sock))
- return array();
-
- if (!$this->_safe_fwrite($sock, $cmd, strlen($cmd)))
- return array();
-
- while (true)
- {
- $res = fgets($sock);
- $ret[] = $res;
- if (preg_match('/^END/', $res))
- break;
- if (strlen($res) == 0)
- break;
- }
- return $ret;
- }
-
- // }}}
- // {{{ set()
-
- /**
- * Unconditionally sets a key to a given value in the memcache. Returns true
- * if set successfully.
- *
- * @param string $key Key to set value as
- * @param mixed $value Value to set
- * @param integer $exp (optional) Experiation time
- *
- * @return boolean TRUE on success
- * @access public
- */
- function set ($key, $value, $exp=0)
- {
- return $this->_set('set', $key, $value, $exp);
- }
-
- // }}}
- // {{{ set_compress_threshold()
-
- /**
- * Sets the compression threshold
- *
- * @param integer $thresh Threshold to compress if larger than
- *
- * @access public
- */
- function set_compress_threshold ($thresh)
- {
- $this->_compress_threshold = $thresh;
- }
-
- // }}}
- // {{{ set_debug()
-
- /**
- * Sets the debug flag
- *
- * @param boolean $dbg TRUE for debugging, FALSE otherwise
- *
- * @access public
- *
- * @see memcahced::memcached
- */
- function set_debug ($dbg)
- {
- $this->_debug = $dbg;
- }
-
- // }}}
- // {{{ set_servers()
-
- /**
- * Sets the server list to distribute key gets and puts between
- *
- * @param array $list Array of servers to connect to
- *
- * @access public
- *
- * @see memcached::memcached()
- */
- function set_servers ($list)
- {
- $this->_servers = $list;
- $this->_active = count($list);
- $this->_buckets = null;
- $this->_bucketcount = 0;
-
- $this->_single_sock = null;
- if ($this->_active == 1)
- $this->_single_sock = $this->_servers[0];
- }
-
- /**
- * Sets the timeout for new connections
- *
- * @param integer $seconds Number of seconds
- * @param integer $microseconds Number of microseconds
- *
- * @access public
- */
- function set_timeout ($seconds, $microseconds)
- {
- $this->_timeout_seconds = $seconds;
- $this->_timeout_microseconds = $microseconds;
- }
-
- // }}}
- // }}}
- // {{{ private methods
- // {{{ _close_sock()
-
- /**
- * Close the specified socket
- *
- * @param string $sock Socket to close
- *
- * @access private
- */
- function _close_sock ($sock)
- {
- $host = array_search($sock, $this->_cache_sock);
- fclose($this->_cache_sock[$host]);
- unset($this->_cache_sock[$host]);
- }
-
- // }}}
- // {{{ _connect_sock()
-
- /**
- * Connects $sock to $host, timing out after $timeout
- *
- * @param integer $sock Socket to connect
- * @param string $host Host:IP to connect to
- *
- * @return boolean
- * @access private
- */
- function _connect_sock (&$sock, $host)
- {
- list ($ip, $port) = explode(":", $host);
- $sock = false;
- $timeout = $this->_connect_timeout;
- $errno = $errstr = null;
- for ($i = 0; !$sock && $i < $this->_connect_attempts; $i++) {
- if ($i > 0) {
- # Sleep until the timeout, in case it failed fast
- $elapsed = microtime(true) - $t;
- if ( $elapsed < $timeout ) {
- usleep(($timeout - $elapsed) * 1e6);
- }
- $timeout *= 2;
- }
- $t = microtime(true);
- if ($this->_persistant == 1)
- {
- $sock = @pfsockopen($ip, $port, $errno, $errstr, $timeout);
- } else
- {
- $sock = @fsockopen($ip, $port, $errno, $errstr, $timeout);
- }
- }
- if (!$sock) {
- if ($this->_debug)
- $this->_debugprint( "Error connecting to $host: $errstr\n" );
- return false;
- }
-
- // Initialise timeout
- stream_set_timeout($sock, $this->_timeout_seconds, $this->_timeout_microseconds);
-
- return true;
- }
-
- // }}}
- // {{{ _dead_sock()
-
- /**
- * Marks a host as dead until 30-40 seconds in the future
- *
- * @param string $sock Socket to mark as dead
- *
- * @access private
- */
- function _dead_sock ($sock)
- {
- $host = array_search($sock, $this->_cache_sock);
- @list ($ip, /* $port */) = explode(":", $host);
- $this->_host_dead[$ip] = time() + 30 + intval(rand(0, 10));
- $this->_host_dead[$host] = $this->_host_dead[$ip];
- unset($this->_cache_sock[$host]);
- }
-
- // }}}
- // {{{ get_sock()
-
- /**
- * get_sock
- *
- * @param string $key Key to retrieve value for;
- *
- * @return mixed resource on success, false on failure
- * @access private
- */
- function get_sock ($key)
- {
- if (!$this->_active)
- return false;
-
- if ($this->_single_sock !== null) {
- $this->_flush_read_buffer($this->_single_sock);
- return $this->sock_to_host($this->_single_sock);
- }
-
- $hv = is_array($key) ? intval($key[0]) : $this->_hashfunc($key);
-
- if ($this->_buckets === null)
- {
- foreach ($this->_servers as $v)
- {
- if (is_array($v))
- {
- for ($i=0; $i<$v[1]; $i++)
- $bu[] = $v[0];
- } else
- {
- $bu[] = $v;
- }
- }
- $this->_buckets = $bu;
- $this->_bucketcount = count($bu);
- }
-
- $realkey = is_array($key) ? $key[1] : $key;
- for ($tries = 0; $tries<20; $tries++)
- {
- $host = $this->_buckets[$hv % $this->_bucketcount];
- $sock = $this->sock_to_host($host);
- if (is_resource($sock)) {
- $this->_flush_read_buffer($sock);
- return $sock;
- }
- $hv = $this->_hashfunc( $hv . $realkey );
- }
-
- return false;
- }
-
- // }}}
- // {{{ _hashfunc()
-
- /**
- * Creates a hash integer based on the $key
- *
- * @param string $key Key to hash
- *
- * @return integer Hash value
- * @access private
- */
- function _hashfunc ($key)
- {
- # Hash function must on [0,0x7ffffff]
- # We take the first 31 bits of the MD5 hash, which unlike the hash
- # function used in a previous version of this client, works
- return hexdec(substr(md5($key),0,8)) & 0x7fffffff;
- }
-
- // }}}
- // {{{ _incrdecr()
-
- /**
- * Perform increment/decriment on $key
- *
- * @param string $cmd Command to perform
- * @param string $key Key to perform it on
- * @param integer $amt Amount to adjust
- *
- * @return integer New value of $key
- * @access private
- */
- function _incrdecr ($cmd, $key, $amt=1)
- {
- if (!$this->_active)
- return null;
-
- $sock = $this->get_sock($key);
- if (!is_resource($sock))
- return null;
-
- $key = is_array($key) ? $key[1] : $key;
- @$this->stats[$cmd]++;
- if (!$this->_safe_fwrite($sock, "$cmd $key $amt\r\n"))
- return $this->_dead_sock($sock);
-
- stream_set_timeout($sock, 1, 0);
- $line = fgets($sock);
- $match = array();
- if (!preg_match('/^(\d+)/', $line, $match))
- return null;
- return $match[1];
- }
-
- // }}}
- // {{{ _load_items()
-
- /**
- * Load items into $ret from $sock
- *
- * @param resource $sock Socket to read from
- * @param array $ret Returned values
- *
- * @access private
- */
- function _load_items ($sock, &$ret)
- {
- while (1)
- {
- $decl = fgets($sock);
- if ($decl == "END\r\n")
- {
- return true;
- } elseif (preg_match('/^VALUE (\S+) (\d+) (\d+)\r\n$/', $decl, $match))
- {
- list($rkey, $flags, $len) = array($match[1], $match[2], $match[3]);
- $bneed = $len+2;
- $offset = 0;
-
- while ($bneed > 0)
- {
- $data = fread($sock, $bneed);
- $n = strlen($data);
- if ($n == 0)
- break;
- $offset += $n;
- $bneed -= $n;
- @$ret[$rkey] .= $data;
- }
-
- if ($offset != $len+2)
- {
- // Something is borked!
- if ($this->_debug)
- $this->_debugprint(sprintf("Something is borked! key %s expecting %d got %d length\n", $rkey, $len+2, $offset));
-
- unset($ret[$rkey]);
- $this->_close_sock($sock);
- return false;
- }
-
- if ($this->_have_zlib && $flags & memcached::COMPRESSED)
- $ret[$rkey] = gzuncompress($ret[$rkey]);
-
- $ret[$rkey] = rtrim($ret[$rkey]);
-
- if ($flags & memcached::SERIALIZED)
- $ret[$rkey] = unserialize($ret[$rkey]);
-
- } else
- {
- $this->_debugprint("Error parsing memcached response\n");
- return 0;
- }
- }
- }
-
- // }}}
- // {{{ _set()
-
- /**
- * Performs the requested storage operation to the memcache server
- *
- * @param string $cmd Command to perform
- * @param string $key Key to act on
- * @param mixed $val What we need to store
- * @param integer $exp When it should expire
- *
- * @return boolean
- * @access private
- */
- function _set ($cmd, $key, $val, $exp)
- {
- if (!$this->_active)
- return false;
-
- $sock = $this->get_sock($key);
- if (!is_resource($sock))
- return false;
-
- @$this->stats[$cmd]++;
-
- $flags = 0;
-
- if (!is_scalar($val))
- {
- $val = serialize($val);
- $flags |= memcached::SERIALIZED;
- if ($this->_debug)
- $this->_debugprint(sprintf("client: serializing data as it is not scalar\n"));
- }
-
- $len = strlen($val);
-
- if ($this->_have_zlib && $this->_compress_enable &&
- $this->_compress_threshold && $len >= $this->_compress_threshold)
- {
- $c_val = gzcompress($val, 9);
- $c_len = strlen($c_val);
-
- if ($c_len < $len*(1 - memcached::COMPRESSION_SAVINGS))
- {
- if ($this->_debug)
- $this->_debugprint(sprintf("client: compressing data; was %d bytes is now %d bytes\n", $len, $c_len));
- $val = $c_val;
- $len = $c_len;
- $flags |= memcached::COMPRESSED;
- }
- }
- if (!$this->_safe_fwrite($sock, "$cmd $key $flags $exp $len\r\n$val\r\n"))
- return $this->_dead_sock($sock);
-
- $line = trim(fgets($sock));
-
- if ($this->_debug)
- {
- $this->_debugprint(sprintf("%s %s (%s)\n", $cmd, $key, $line));
- }
- if ($line == "STORED")
- return true;
- return false;
- }
-
- // }}}
- // {{{ sock_to_host()
-
- /**
- * Returns the socket for the host
- *
- * @param string $host Host:IP to get socket for
- *
- * @return mixed IO Stream or false
- * @access private
- */
- function sock_to_host ($host)
- {
- if (isset($this->_cache_sock[$host]))
- return $this->_cache_sock[$host];
-
- $sock = null;
- $now = time();
- list ($ip, /* $port */) = explode (":", $host);
- if (isset($this->_host_dead[$host]) && $this->_host_dead[$host] > $now ||
- isset($this->_host_dead[$ip]) && $this->_host_dead[$ip] > $now)
- return null;
-
- if (!$this->_connect_sock($sock, $host))
- return $this->_dead_sock($host);
-
- // Do not buffer writes
- stream_set_write_buffer($sock, 0);
-
- $this->_cache_sock[$host] = $sock;
-
- return $this->_cache_sock[$host];
- }
-
- function _debugprint($str){
- print($str);
- }
-
- /**
- * Write to a stream, timing out after the correct amount of time
- *
- * @return bool false on failure, true on success
- */
- /*
- function _safe_fwrite($f, $buf, $len = false) {
- stream_set_blocking($f, 0);
-
- if ($len === false) {
- wfDebug("Writing " . strlen( $buf ) . " bytes\n");
- $bytesWritten = fwrite($f, $buf);
- } else {
- wfDebug("Writing $len bytes\n");
- $bytesWritten = fwrite($f, $buf, $len);
- }
- $n = stream_select($r=NULL, $w = array($f), $e = NULL, 10, 0);
- # $this->_timeout_seconds, $this->_timeout_microseconds);
-
- wfDebug("stream_select returned $n\n");
- stream_set_blocking($f, 1);
- return $n == 1;
- return $bytesWritten;
- }*/
-
- /**
- * Original behaviour
- */
- function _safe_fwrite($f, $buf, $len = false) {
- if ($len === false) {
- $bytesWritten = fwrite($f, $buf);
- } else {
- $bytesWritten = fwrite($f, $buf, $len);
- }
- return $bytesWritten;
- }
-
- /**
- * Flush the read buffer of a stream
- */
- function _flush_read_buffer($f) {
- if (!is_resource($f)) {
- return;
- }
- $n = stream_select($r=array($f), $w = NULL, $e = NULL, 0, 0);
- while ($n == 1 && !feof($f)) {
- fread($f, 1024);
- $n = stream_select($r=array($f), $w = NULL, $e = NULL, 0, 0);
- }
- }
-
- // }}}
- // }}}
- // }}}
+class MWMemcached {
+ // {{{ properties
+ // {{{ public
+
+ // {{{ constants
+ // {{{ flags
+
+ /**
+ * Flag: indicates data is serialized
+ */
+ const SERIALIZED = 1;
+
+ /**
+ * Flag: indicates data is compressed
+ */
+ const COMPRESSED = 2;
+
+ // }}}
+
+ /**
+ * Minimum savings to store data compressed
+ */
+ const COMPRESSION_SAVINGS = 0.20;
+
+ // }}}
+
+
+ /**
+ * Command statistics
+ *
+ * @var array
+ * @access public
+ */
+ var $stats;
+
+ // }}}
+ // {{{ private
+
+ /**
+ * Cached Sockets that are connected
+ *
+ * @var array
+ * @access private
+ */
+ var $_cache_sock;
+
+ /**
+ * Current debug status; 0 - none to 9 - profiling
+ *
+ * @var boolean
+ * @access private
+ */
+ var $_debug;
+
+ /**
+ * Dead hosts, assoc array, 'host'=>'unixtime when ok to check again'
+ *
+ * @var array
+ * @access private
+ */
+ var $_host_dead;
+
+ /**
+ * Is compression available?
+ *
+ * @var boolean
+ * @access private
+ */
+ var $_have_zlib;
+
+ /**
+ * Do we want to use compression?
+ *
+ * @var boolean
+ * @access private
+ */
+ var $_compress_enable;
+
+ /**
+ * At how many bytes should we compress?
+ *
+ * @var integer
+ * @access private
+ */
+ var $_compress_threshold;
+
+ /**
+ * Are we using persistant links?
+ *
+ * @var boolean
+ * @access private
+ */
+ var $_persistant;
+
+ /**
+ * If only using one server; contains ip:port to connect to
+ *
+ * @var string
+ * @access private
+ */
+ var $_single_sock;
+
+ /**
+ * Array containing ip:port or array(ip:port, weight)
+ *
+ * @var array
+ * @access private
+ */
+ var $_servers;
+
+ /**
+ * Our bit buckets
+ *
+ * @var array
+ * @access private
+ */
+ var $_buckets;
+
+ /**
+ * Total # of bit buckets we have
+ *
+ * @var integer
+ * @access private
+ */
+ var $_bucketcount;
+
+ /**
+ * # of total servers we have
+ *
+ * @var integer
+ * @access private
+ */
+ var $_active;
+
+ /**
+ * Stream timeout in seconds. Applies for example to fread()
+ *
+ * @var integer
+ * @access private
+ */
+ var $_timeout_seconds;
+
+ /**
+ * Stream timeout in microseconds
+ *
+ * @var integer
+ * @access private
+ */
+ var $_timeout_microseconds;
+
+ /**
+ * Connect timeout in seconds
+ */
+ var $_connect_timeout;
+
+ /**
+ * Number of connection attempts for each server
+ */
+ var $_connect_attempts;
+
+ // }}}
+ // }}}
+ // {{{ methods
+ // {{{ public functions
+ // {{{ memcached()
+
+ /**
+ * Memcache initializer
+ *
+ * @param array $args Associative array of settings
+ *
+ * @return mixed
+ */
+ public function __construct( $args ) {
+ global $wgMemCachedTimeout;
+ $this->set_servers( @$args['servers'] );
+ $this->_debug = @$args['debug'];
+ $this->stats = array();
+ $this->_compress_threshold = @$args['compress_threshold'];
+ $this->_persistant = array_key_exists( 'persistant', $args ) ? ( @$args['persistant'] ) : false;
+ $this->_compress_enable = true;
+ $this->_have_zlib = function_exists( 'gzcompress' );
+
+ $this->_cache_sock = array();
+ $this->_host_dead = array();
+
+ $this->_timeout_seconds = 0;
+ $this->_timeout_microseconds = $wgMemCachedTimeout;
+
+ $this->_connect_timeout = 0.01;
+ $this->_connect_attempts = 2;
+ }
+
+ // }}}
+ // {{{ add()
+
+ /**
+ * Adds a key/value to the memcache server if one isn't already set with
+ * that key
+ *
+ * @param string $key Key to set with data
+ * @param mixed $val Value to store
+ * @param integer $exp (optional) Time to expire data at
+ *
+ * @return boolean
+ */
+ public function add( $key, $val, $exp = 0 ) {
+ return $this->_set( 'add', $key, $val, $exp );
+ }
+
+ // }}}
+ // {{{ decr()
+
+ /**
+ * Decriment a value stored on the memcache server
+ *
+ * @param string $key Key to decriment
+ * @param integer $amt (optional) Amount to decriment
+ *
+ * @return mixed FALSE on failure, value on success
+ */
+ public function decr( $key, $amt = 1 ) {
+ return $this->_incrdecr( 'decr', $key, $amt );
+ }
+
+ // }}}
+ // {{{ delete()
+
+ /**
+ * Deletes a key from the server, optionally after $time
+ *
+ * @param string $key Key to delete
+ * @param integer $time (optional) How long to wait before deleting
+ *
+ * @return boolean TRUE on success, FALSE on failure
+ */
+ public function delete( $key, $time = 0 ) {
+ if ( !$this->_active ) {
+ return false;
+ }
+
+ $sock = $this->get_sock( $key );
+ if ( !is_resource( $sock ) ) {
+ return false;
+ }
+
+ $key = is_array( $key ) ? $key[1] : $key;
+
+ @$this->stats['delete']++;
+ $cmd = "delete $key $time\r\n";
+ if( !$this->_safe_fwrite( $sock, $cmd, strlen( $cmd ) ) ) {
+ $this->_dead_sock( $sock );
+ return false;
+ }
+ $res = trim( fgets( $sock ) );
+
+ if ( $this->_debug ) {
+ $this->_debugprint( sprintf( "MemCache: delete %s (%s)\n", $key, $res ) );
+ }
+
+ if ( $res == "DELETED" ) {
+ return true;
+ }
+ return false;
+ }
+
+ // }}}
+ // {{{ disconnect_all()
+
+ /**
+ * Disconnects all connected sockets
+ */
+ public function disconnect_all() {
+ foreach ( $this->_cache_sock as $sock ) {
+ fclose( $sock );
+ }
+
+ $this->_cache_sock = array();
+ }
+
+ // }}}
+ // {{{ enable_compress()
+
+ /**
+ * Enable / Disable compression
+ *
+ * @param boolean $enable TRUE to enable, FALSE to disable
+ */
+ public function enable_compress( $enable ) {
+ $this->_compress_enable = $enable;
+ }
+
+ // }}}
+ // {{{ forget_dead_hosts()
+
+ /**
+ * Forget about all of the dead hosts
+ */
+ public function forget_dead_hosts() {
+ $this->_host_dead = array();
+ }
+
+ // }}}
+ // {{{ get()
+
+ /**
+ * Retrieves the value associated with the key from the memcache server
+ *
+ * @param string $key Key to retrieve
+ *
+ * @return mixed
+ */
+ public function get( $key ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( $this->_debug ) {
+ $this->_debugprint( "get($key)\n" );
+ }
+
+ if ( !$this->_active ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $sock = $this->get_sock( $key );
+
+ if ( !is_resource( $sock ) ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ @$this->stats['get']++;
+
+ $cmd = "get $key\r\n";
+ if ( !$this->_safe_fwrite( $sock, $cmd, strlen( $cmd ) ) ) {
+ $this->_dead_sock( $sock );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $val = array();
+ $this->_load_items( $sock, $val );
+
+ if ( $this->_debug ) {
+ foreach ( $val as $k => $v ) {
+ $this->_debugprint( sprintf( "MemCache: sock %s got %s\n", serialize( $sock ), $k ) );
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return @$val[$key];
+ }
+
+ // }}}
+ // {{{ get_multi()
+
+ /**
+ * Get multiple keys from the server(s)
+ *
+ * @param array $keys Keys to retrieve
+ *
+ * @return array
+ */
+ public function get_multi( $keys ) {
+ if ( !$this->_active ) {
+ return false;
+ }
+
+ @$this->stats['get_multi']++;
+ $sock_keys = array();
+
+ foreach ( $keys as $key ) {
+ $sock = $this->get_sock( $key );
+ if ( !is_resource( $sock ) ) {
+ continue;
+ }
+ $key = is_array( $key ) ? $key[1] : $key;
+ if ( !isset( $sock_keys[$sock] ) ) {
+ $sock_keys[$sock] = array();
+ $socks[] = $sock;
+ }
+ $sock_keys[$sock][] = $key;
+ }
+
+ // Send out the requests
+ foreach ( $socks as $sock ) {
+ $cmd = 'get';
+ foreach ( $sock_keys[$sock] as $key ) {
+ $cmd .= ' ' . $key;
+ }
+ $cmd .= "\r\n";
+
+ if ( $this->_safe_fwrite( $sock, $cmd, strlen( $cmd ) ) ) {
+ $gather[] = $sock;
+ } else {
+ $this->_dead_sock( $sock );
+ }
+ }
+
+ // Parse responses
+ $val = array();
+ foreach ( $gather as $sock ) {
+ $this->_load_items( $sock, $val );
+ }
+
+ if ( $this->_debug ) {
+ foreach ( $val as $k => $v ) {
+ $this->_debugprint( sprintf( "MemCache: got %s\n", $k ) );
+ }
+ }
+
+ return $val;
+ }
+
+ // }}}
+ // {{{ incr()
+
+ /**
+ * Increments $key (optionally) by $amt
+ *
+ * @param string $key Key to increment
+ * @param integer $amt (optional) amount to increment
+ *
+ * @return integer New key value?
+ */
+ public function incr( $key, $amt = 1 ) {
+ return $this->_incrdecr( 'incr', $key, $amt );
+ }
+
+ // }}}
+ // {{{ replace()
+
+ /**
+ * Overwrites an existing value for key; only works if key is already set
+ *
+ * @param string $key Key to set value as
+ * @param mixed $value Value to store
+ * @param integer $exp (optional) Experiation time
+ *
+ * @return boolean
+ */
+ public function replace( $key, $value, $exp = 0 ) {
+ return $this->_set( 'replace', $key, $value, $exp );
+ }
+
+ // }}}
+ // {{{ run_command()
+
+ /**
+ * Passes through $cmd to the memcache server connected by $sock; returns
+ * output as an array (null array if no output)
+ *
+ * NOTE: due to a possible bug in how PHP reads while using fgets(), each
+ * line may not be terminated by a \r\n. More specifically, my testing
+ * has shown that, on FreeBSD at least, each line is terminated only
+ * with a \n. This is with the PHP flag auto_detect_line_endings set
+ * to falase (the default).
+ *
+ * @param resource $sock Socket to send command on
+ * @param string $cmd Command to run
+ *
+ * @return array Output array
+ * @access public
+ */
+ function run_command( $sock, $cmd ) {
+ if ( !is_resource( $sock ) ) {
+ return array();
+ }
+
+ if ( !$this->_safe_fwrite( $sock, $cmd, strlen( $cmd ) ) ) {
+ return array();
+ }
+
+ while ( true ) {
+ $res = fgets( $sock );
+ $ret[] = $res;
+ if ( preg_match( '/^END/', $res ) ) {
+ break;
+ }
+ if ( strlen( $res ) == 0 ) {
+ break;
+ }
+ }
+ return $ret;
+ }
+
+ // }}}
+ // {{{ set()
+
+ /**
+ * Unconditionally sets a key to a given value in the memcache. Returns true
+ * if set successfully.
+ *
+ * @param string $key Key to set value as
+ * @param mixed $value Value to set
+ * @param integer $exp (optional) Experiation time
+ *
+ * @return boolean TRUE on success
+ */
+ public function set( $key, $value, $exp = 0 ) {
+ return $this->_set( 'set', $key, $value, $exp );
+ }
+
+ // }}}
+ // {{{ set_compress_threshold()
+
+ /**
+ * Sets the compression threshold
+ *
+ * @param integer $thresh Threshold to compress if larger than
+ */
+ public function set_compress_threshold( $thresh ) {
+ $this->_compress_threshold = $thresh;
+ }
+
+ // }}}
+ // {{{ set_debug()
+
+ /**
+ * Sets the debug flag
+ *
+ * @param boolean $dbg TRUE for debugging, FALSE otherwise
+ *
+ * @see MWMemcached::__construct
+ */
+ public function set_debug( $dbg ) {
+ $this->_debug = $dbg;
+ }
+
+ // }}}
+ // {{{ set_servers()
+
+ /**
+ * Sets the server list to distribute key gets and puts between
+ *
+ * @param array $list Array of servers to connect to
+ *
+ * @see MWMemcached::__construct()
+ */
+ public function set_servers( $list ) {
+ $this->_servers = $list;
+ $this->_active = count( $list );
+ $this->_buckets = null;
+ $this->_bucketcount = 0;
+
+ $this->_single_sock = null;
+ if ( $this->_active == 1 ) {
+ $this->_single_sock = $this->_servers[0];
+ }
+ }
+
+ /**
+ * Sets the timeout for new connections
+ *
+ * @param integer $seconds Number of seconds
+ * @param integer $microseconds Number of microseconds
+ */
+ public function set_timeout( $seconds, $microseconds ) {
+ $this->_timeout_seconds = $seconds;
+ $this->_timeout_microseconds = $microseconds;
+ }
+
+ // }}}
+ // }}}
+ // {{{ private methods
+ // {{{ _close_sock()
+
+ /**
+ * Close the specified socket
+ *
+ * @param string $sock Socket to close
+ *
+ * @access private
+ */
+ function _close_sock( $sock ) {
+ $host = array_search( $sock, $this->_cache_sock );
+ fclose( $this->_cache_sock[$host] );
+ unset( $this->_cache_sock[$host] );
+ }
+
+ // }}}
+ // {{{ _connect_sock()
+
+ /**
+ * Connects $sock to $host, timing out after $timeout
+ *
+ * @param integer $sock Socket to connect
+ * @param string $host Host:IP to connect to
+ *
+ * @return boolean
+ * @access private
+ */
+ function _connect_sock( &$sock, $host ) {
+ list( $ip, $port ) = explode( ':', $host );
+ $sock = false;
+ $timeout = $this->_connect_timeout;
+ $errno = $errstr = null;
+ for( $i = 0; !$sock && $i < $this->_connect_attempts; $i++ ) {
+ if ( $this->_persistant == 1 ) {
+ $sock = @pfsockopen( $ip, $port, $errno, $errstr, $timeout );
+ } else {
+ $sock = @fsockopen( $ip, $port, $errno, $errstr, $timeout );
+ }
+ }
+ if ( !$sock ) {
+ if ( $this->_debug ) {
+ $this->_debugprint( "Error connecting to $host: $errstr\n" );
+ }
+ return false;
+ }
+
+ // Initialise timeout
+ stream_set_timeout( $sock, $this->_timeout_seconds, $this->_timeout_microseconds );
+
+ return true;
+ }
+
+ // }}}
+ // {{{ _dead_sock()
+
+ /**
+ * Marks a host as dead until 30-40 seconds in the future
+ *
+ * @param string $sock Socket to mark as dead
+ *
+ * @access private
+ */
+ function _dead_sock( $sock ) {
+ $host = array_search( $sock, $this->_cache_sock );
+ $this->_dead_host( $host );
+ }
+
+ function _dead_host( $host ) {
+ @list( $ip, /* $port */) = explode( ':', $host );
+ $this->_host_dead[$ip] = time() + 30 + intval( rand( 0, 10 ) );
+ $this->_host_dead[$host] = $this->_host_dead[$ip];
+ unset( $this->_cache_sock[$host] );
+ }
+
+ // }}}
+ // {{{ get_sock()
+
+ /**
+ * get_sock
+ *
+ * @param string $key Key to retrieve value for;
+ *
+ * @return mixed resource on success, false on failure
+ * @access private
+ */
+ function get_sock( $key ) {
+ if ( !$this->_active ) {
+ return false;
+ }
+
+ if ( $this->_single_sock !== null ) {
+ $this->_flush_read_buffer( $this->_single_sock );
+ return $this->sock_to_host( $this->_single_sock );
+ }
+
+ $hv = is_array( $key ) ? intval( $key[0] ) : $this->_hashfunc( $key );
+
+ if ( $this->_buckets === null ) {
+ foreach ( $this->_servers as $v ) {
+ if ( is_array( $v ) ) {
+ for( $i = 0; $i < $v[1]; $i++ ) {
+ $bu[] = $v[0];
+ }
+ } else {
+ $bu[] = $v;
+ }
+ }
+ $this->_buckets = $bu;
+ $this->_bucketcount = count( $bu );
+ }
+
+ $realkey = is_array( $key ) ? $key[1] : $key;
+ for( $tries = 0; $tries < 20; $tries++ ) {
+ $host = $this->_buckets[$hv % $this->_bucketcount];
+ $sock = $this->sock_to_host( $host );
+ if ( is_resource( $sock ) ) {
+ $this->_flush_read_buffer( $sock );
+ return $sock;
+ }
+ $hv = $this->_hashfunc( $hv . $realkey );
+ }
+
+ return false;
+ }
+
+ // }}}
+ // {{{ _hashfunc()
+
+ /**
+ * Creates a hash integer based on the $key
+ *
+ * @param string $key Key to hash
+ *
+ * @return integer Hash value
+ * @access private
+ */
+ function _hashfunc( $key ) {
+ # Hash function must on [0,0x7ffffff]
+ # We take the first 31 bits of the MD5 hash, which unlike the hash
+ # function used in a previous version of this client, works
+ return hexdec( substr( md5( $key ), 0, 8 ) ) & 0x7fffffff;
+ }
+
+ // }}}
+ // {{{ _incrdecr()
+
+ /**
+ * Perform increment/decriment on $key
+ *
+ * @param string $cmd Command to perform
+ * @param string $key Key to perform it on
+ * @param integer $amt Amount to adjust
+ *
+ * @return integer New value of $key
+ * @access private
+ */
+ function _incrdecr( $cmd, $key, $amt = 1 ) {
+ if ( !$this->_active ) {
+ return null;
+ }
+
+ $sock = $this->get_sock( $key );
+ if ( !is_resource( $sock ) ) {
+ return null;
+ }
+
+ $key = is_array( $key ) ? $key[1] : $key;
+ @$this->stats[$cmd]++;
+ if ( !$this->_safe_fwrite( $sock, "$cmd $key $amt\r\n" ) ) {
+ return $this->_dead_sock( $sock );
+ }
+
+ $line = fgets( $sock );
+ $match = array();
+ if ( !preg_match( '/^(\d+)/', $line, $match ) ) {
+ return null;
+ }
+ return $match[1];
+ }
+
+ // }}}
+ // {{{ _load_items()
+
+ /**
+ * Load items into $ret from $sock
+ *
+ * @param resource $sock Socket to read from
+ * @param array $ret Returned values
+ *
+ * @access private
+ */
+ function _load_items( $sock, &$ret ) {
+ while ( 1 ) {
+ $decl = fgets( $sock );
+ if ( $decl == "END\r\n" ) {
+ return true;
+ } elseif ( preg_match( '/^VALUE (\S+) (\d+) (\d+)\r\n$/', $decl, $match ) ) {
+ list( $rkey, $flags, $len ) = array( $match[1], $match[2], $match[3] );
+ $bneed = $len + 2;
+ $offset = 0;
+
+ while ( $bneed > 0 ) {
+ $data = fread( $sock, $bneed );
+ $n = strlen( $data );
+ if ( $n == 0 ) {
+ break;
+ }
+ $offset += $n;
+ $bneed -= $n;
+ @$ret[$rkey] .= $data;
+ }
+
+ if ( $offset != $len + 2 ) {
+ // Something is borked!
+ if ( $this->_debug ) {
+ $this->_debugprint( sprintf( "Something is borked! key %s expecting %d got %d length\n", $rkey, $len + 2, $offset ) );
+ }
+
+ unset( $ret[$rkey] );
+ $this->_close_sock( $sock );
+ return false;
+ }
+
+ if ( $this->_have_zlib && $flags & self::COMPRESSED ) {
+ $ret[$rkey] = gzuncompress( $ret[$rkey] );
+ }
+
+ $ret[$rkey] = rtrim( $ret[$rkey] );
+
+ if ( $flags & self::SERIALIZED ) {
+ $ret[$rkey] = unserialize( $ret[$rkey] );
+ }
+
+ } else {
+ $this->_debugprint( "Error parsing memcached response\n" );
+ return 0;
+ }
+ }
+ }
+
+ // }}}
+ // {{{ _set()
+
+ /**
+ * Performs the requested storage operation to the memcache server
+ *
+ * @param string $cmd Command to perform
+ * @param string $key Key to act on
+ * @param mixed $val What we need to store
+ * @param integer $exp When it should expire
+ *
+ * @return boolean
+ * @access private
+ */
+ function _set( $cmd, $key, $val, $exp ) {
+ if ( !$this->_active ) {
+ return false;
+ }
+
+ $sock = $this->get_sock( $key );
+ if ( !is_resource( $sock ) ) {
+ return false;
+ }
+
+ @$this->stats[$cmd]++;
+
+ $flags = 0;
+
+ if ( !is_scalar( $val ) ) {
+ $val = serialize( $val );
+ $flags |= self::SERIALIZED;
+ if ( $this->_debug ) {
+ $this->_debugprint( sprintf( "client: serializing data as it is not scalar\n" ) );
+ }
+ }
+
+ $len = strlen( $val );
+
+ if ( $this->_have_zlib && $this->_compress_enable &&
+ $this->_compress_threshold && $len >= $this->_compress_threshold )
+ {
+ $c_val = gzcompress( $val, 9 );
+ $c_len = strlen( $c_val );
+
+ if ( $c_len < $len * ( 1 - self::COMPRESSION_SAVINGS ) ) {
+ if ( $this->_debug ) {
+ $this->_debugprint( sprintf( "client: compressing data; was %d bytes is now %d bytes\n", $len, $c_len ) );
+ }
+ $val = $c_val;
+ $len = $c_len;
+ $flags |= self::COMPRESSED;
+ }
+ }
+ if ( !$this->_safe_fwrite( $sock, "$cmd $key $flags $exp $len\r\n$val\r\n" ) ) {
+ return $this->_dead_sock( $sock );
+ }
+
+ $line = trim( fgets( $sock ) );
+
+ if ( $this->_debug ) {
+ $this->_debugprint( sprintf( "%s %s (%s)\n", $cmd, $key, $line ) );
+ }
+ if ( $line == "STORED" ) {
+ return true;
+ }
+ return false;
+ }
+
+ // }}}
+ // {{{ sock_to_host()
+
+ /**
+ * Returns the socket for the host
+ *
+ * @param string $host Host:IP to get socket for
+ *
+ * @return mixed IO Stream or false
+ * @access private
+ */
+ function sock_to_host( $host ) {
+ if ( isset( $this->_cache_sock[$host] ) ) {
+ return $this->_cache_sock[$host];
+ }
+
+ $sock = null;
+ $now = time();
+ list( $ip, /* $port */) = explode( ':', $host );
+ if ( isset( $this->_host_dead[$host] ) && $this->_host_dead[$host] > $now ||
+ isset( $this->_host_dead[$ip] ) && $this->_host_dead[$ip] > $now
+ ) {
+ return null;
+ }
+
+ if ( !$this->_connect_sock( $sock, $host ) ) {
+ return $this->_dead_host( $host );
+ }
+
+ // Do not buffer writes
+ stream_set_write_buffer( $sock, 0 );
+
+ $this->_cache_sock[$host] = $sock;
+
+ return $this->_cache_sock[$host];
+ }
+
+ function _debugprint( $str ) {
+ print( $str );
+ }
+
+ /**
+ * Write to a stream, timing out after the correct amount of time
+ *
+ * @return bool false on failure, true on success
+ */
+ /*
+ function _safe_fwrite( $f, $buf, $len = false ) {
+ stream_set_blocking( $f, 0 );
+
+ if ( $len === false ) {
+ wfDebug( "Writing " . strlen( $buf ) . " bytes\n" );
+ $bytesWritten = fwrite( $f, $buf );
+ } else {
+ wfDebug( "Writing $len bytes\n" );
+ $bytesWritten = fwrite( $f, $buf, $len );
+ }
+ $n = stream_select( $r = null, $w = array( $f ), $e = null, 10, 0 );
+ # $this->_timeout_seconds, $this->_timeout_microseconds );
+
+ wfDebug( "stream_select returned $n\n" );
+ stream_set_blocking( $f, 1 );
+ return $n == 1;
+ return $bytesWritten;
+ }*/
+
+ /**
+ * Original behaviour
+ */
+ function _safe_fwrite( $f, $buf, $len = false ) {
+ if ( $len === false ) {
+ $bytesWritten = fwrite( $f, $buf );
+ } else {
+ $bytesWritten = fwrite( $f, $buf, $len );
+ }
+ return $bytesWritten;
+ }
+
+ /**
+ * Flush the read buffer of a stream
+ */
+ function _flush_read_buffer( $f ) {
+ if ( !is_resource( $f ) ) {
+ return;
+ }
+ $n = stream_select( $r = array( $f ), $w = null, $e = null, 0, 0 );
+ while ( $n == 1 && !feof( $f ) ) {
+ fread( $f, 1024 );
+ $n = stream_select( $r = array( $f ), $w = null, $e = null, 0, 0 );
+ }
+ }
+
+ // }}}
+ // }}}
+ // }}}
}
// vim: sts=3 sw=3 et
// }}}
+
+class MemCachedClientforWiki extends MWMemcached {
+ function _debugprint( $text ) {
+ wfDebug( "memcached: $text" );
+ }
+}
diff --git a/includes/mime.types b/includes/mime.types
index da15b5ba..bd57cd40 100644
--- a/includes/mime.types
+++ b/includes/mime.types
@@ -2,7 +2,7 @@ application/andrew-inset ez
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mathml+xml mathml
-application/msword doc
+application/msword doc docx docm dot dotx dotm
application/octet-stream bin dms lha lzh exe class so dll
application/oda oda
application/ogg ogg ogm
@@ -13,8 +13,8 @@ application/smil smi smil
application/srgs gram
application/srgs+xml grxml
application/vnd.mif mif
-application/vnd.ms-excel xls
-application/vnd.ms-powerpoint ppt
+application/vnd.ms-excel xls xlsx xlsb xlam xltx xltm
+application/vnd.ms-powerpoint ppt pptm pptx pot potx potm ppsm ppam
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
diff --git a/includes/normal/RandomTest.php b/includes/normal/RandomTest.php
index 018910cd..eb137574 100644
--- a/includes/normal/RandomTest.php
+++ b/includes/normal/RandomTest.php
@@ -32,7 +32,7 @@ if( php_sapi_name() != 'cli' ) {
/** */
require_once( 'UtfNormal.php' );
-require_once( '../DifferenceEngine.php' );
+require_once( '../diff/DifferenceEngine.php' );
dl('php_utfnormal.so' );
diff --git a/includes/normal/Utf8CaseGenerate.php b/includes/normal/Utf8CaseGenerate.php
index 8dbbb72a..22994ba4 100644
--- a/includes/normal/Utf8CaseGenerate.php
+++ b/includes/normal/Utf8CaseGenerate.php
@@ -45,7 +45,7 @@ $wikiLowerChars = array();
print "Reading character definitions...\n";
while( false !== ($line = fgets( $in ) ) ) {
- $columns = split(';', $line);
+ $columns = explode(';', $line);
$codepoint = $columns[0];
$name = $columns[1];
$simpleUpper = $columns[12];
diff --git a/includes/normal/Utf8Test.php b/includes/normal/Utf8Test.php
index 353d11b5..4c78b3db 100644
--- a/includes/normal/Utf8Test.php
+++ b/includes/normal/Utf8Test.php
@@ -81,7 +81,7 @@ $longTests = array(
# These tests are not in proper subsections
$sectionTests = array( '3.4' );
-$section = NULL;
+$section = null;
$test = '';
$failed = 0;
$success = 0;
diff --git a/includes/normal/UtfNormal.php b/includes/normal/UtfNormal.php
index 4f8b1293..e1352fdb 100644
--- a/includes/normal/UtfNormal.php
+++ b/includes/normal/UtfNormal.php
@@ -25,13 +25,13 @@
require_once dirname(__FILE__).'/UtfNormalUtil.php';
global $utfCombiningClass, $utfCanonicalComp, $utfCanonicalDecomp;
-$utfCombiningClass = NULL;
-$utfCanonicalComp = NULL;
-$utfCanonicalDecomp = NULL;
+$utfCombiningClass = null;
+$utfCanonicalComp = null;
+$utfCanonicalDecomp = null;
# Load compatibility decompositions on demand if they are needed.
global $utfCompatibilityDecomp;
-$utfCompatibilityDecomp = NULL;
+$utfCompatibilityDecomp = null;
/**
* For using the ICU wrapper
diff --git a/includes/normal/UtfNormalData.inc b/includes/normal/UtfNormalData.inc
index cf942f68..46a93947 100644
--- a/includes/normal/UtfNormalData.inc
+++ b/includes/normal/UtfNormalData.inc
@@ -5,8 +5,8 @@
*/
/** */
global $utfCombiningClass, $utfCanonicalComp, $utfCanonicalDecomp, $utfCheckNFC;
-$utfCombiningClass = unserialize( 'a:501:{s:2:"̀";i:230;s:2:"́";i:230;s:2:"̂";i:230;s:2:"̃";i:230;s:2:"̄";i:230;s:2:"̅";i:230;s:2:"̆";i:230;s:2:"̇";i:230;s:2:"̈";i:230;s:2:"̉";i:230;s:2:"̊";i:230;s:2:"̋";i:230;s:2:"̌";i:230;s:2:"̍";i:230;s:2:"̎";i:230;s:2:"̏";i:230;s:2:"̐";i:230;s:2:"̑";i:230;s:2:"̒";i:230;s:2:"̓";i:230;s:2:"̔";i:230;s:2:"̕";i:232;s:2:"̖";i:220;s:2:"̗";i:220;s:2:"̘";i:220;s:2:"̙";i:220;s:2:"̚";i:232;s:2:"̛";i:216;s:2:"̜";i:220;s:2:"̝";i:220;s:2:"̞";i:220;s:2:"̟";i:220;s:2:"̠";i:220;s:2:"̡";i:202;s:2:"̢";i:202;s:2:"̣";i:220;s:2:"̤";i:220;s:2:"̥";i:220;s:2:"̦";i:220;s:2:"̧";i:202;s:2:"̨";i:202;s:2:"̩";i:220;s:2:"̪";i:220;s:2:"̫";i:220;s:2:"̬";i:220;s:2:"̭";i:220;s:2:"̮";i:220;s:2:"̯";i:220;s:2:"̰";i:220;s:2:"̱";i:220;s:2:"̲";i:220;s:2:"̳";i:220;s:2:"̴";i:1;s:2:"̵";i:1;s:2:"̶";i:1;s:2:"̷";i:1;s:2:"̸";i:1;s:2:"̹";i:220;s:2:"̺";i:220;s:2:"̻";i:220;s:2:"̼";i:220;s:2:"̽";i:230;s:2:"̾";i:230;s:2:"̿";i:230;s:2:"̀";i:230;s:2:"́";i:230;s:2:"͂";i:230;s:2:"̓";i:230;s:2:"̈́";i:230;s:2:"ͅ";i:240;s:2:"͆";i:230;s:2:"͇";i:220;s:2:"͈";i:220;s:2:"͉";i:220;s:2:"͊";i:230;s:2:"͋";i:230;s:2:"͌";i:230;s:2:"͍";i:220;s:2:"͎";i:220;s:2:"͐";i:230;s:2:"͑";i:230;s:2:"͒";i:230;s:2:"͓";i:220;s:2:"͔";i:220;s:2:"͕";i:220;s:2:"͖";i:220;s:2:"͗";i:230;s:2:"͘";i:232;s:2:"͙";i:220;s:2:"͚";i:220;s:2:"͛";i:230;s:2:"͜";i:233;s:2:"͝";i:234;s:2:"͞";i:234;s:2:"͟";i:233;s:2:"͠";i:234;s:2:"͡";i:234;s:2:"͢";i:233;s:2:"ͣ";i:230;s:2:"ͤ";i:230;s:2:"ͥ";i:230;s:2:"ͦ";i:230;s:2:"ͧ";i:230;s:2:"ͨ";i:230;s:2:"ͩ";i:230;s:2:"ͪ";i:230;s:2:"ͫ";i:230;s:2:"ͬ";i:230;s:2:"ͭ";i:230;s:2:"ͮ";i:230;s:2:"ͯ";i:230;s:2:"҃";i:230;s:2:"҄";i:230;s:2:"҅";i:230;s:2:"҆";i:230;s:2:"҇";i:230;s:2:"֑";i:220;s:2:"֒";i:230;s:2:"֓";i:230;s:2:"֔";i:230;s:2:"֕";i:230;s:2:"֖";i:220;s:2:"֗";i:230;s:2:"֘";i:230;s:2:"֙";i:230;s:2:"֚";i:222;s:2:"֛";i:220;s:2:"֜";i:230;s:2:"֝";i:230;s:2:"֞";i:230;s:2:"֟";i:230;s:2:"֠";i:230;s:2:"֡";i:230;s:2:"֢";i:220;s:2:"֣";i:220;s:2:"֤";i:220;s:2:"֥";i:220;s:2:"֦";i:220;s:2:"֧";i:220;s:2:"֨";i:230;s:2:"֩";i:230;s:2:"֪";i:220;s:2:"֫";i:230;s:2:"֬";i:230;s:2:"֭";i:222;s:2:"֮";i:228;s:2:"֯";i:230;s:2:"ְ";i:10;s:2:"ֱ";i:11;s:2:"ֲ";i:12;s:2:"ֳ";i:13;s:2:"ִ";i:14;s:2:"ֵ";i:15;s:2:"ֶ";i:16;s:2:"ַ";i:17;s:2:"ָ";i:18;s:2:"ֹ";i:19;s:2:"ֺ";i:19;s:2:"ֻ";i:20;s:2:"ּ";i:21;s:2:"ֽ";i:22;s:2:"ֿ";i:23;s:2:"ׁ";i:24;s:2:"ׂ";i:25;s:2:"ׄ";i:230;s:2:"ׅ";i:220;s:2:"ׇ";i:18;s:2:"ؐ";i:230;s:2:"ؑ";i:230;s:2:"ؒ";i:230;s:2:"ؓ";i:230;s:2:"ؔ";i:230;s:2:"ؕ";i:230;s:2:"ؖ";i:230;s:2:"ؗ";i:230;s:2:"ؘ";i:30;s:2:"ؙ";i:31;s:2:"ؚ";i:32;s:2:"ً";i:27;s:2:"ٌ";i:28;s:2:"ٍ";i:29;s:2:"َ";i:30;s:2:"ُ";i:31;s:2:"ِ";i:32;s:2:"ّ";i:33;s:2:"ْ";i:34;s:2:"ٓ";i:230;s:2:"ٔ";i:230;s:2:"ٕ";i:220;s:2:"ٖ";i:220;s:2:"ٗ";i:230;s:2:"٘";i:230;s:2:"ٙ";i:230;s:2:"ٚ";i:230;s:2:"ٛ";i:230;s:2:"ٜ";i:220;s:2:"ٝ";i:230;s:2:"ٞ";i:230;s:2:"ٰ";i:35;s:2:"ۖ";i:230;s:2:"ۗ";i:230;s:2:"ۘ";i:230;s:2:"ۙ";i:230;s:2:"ۚ";i:230;s:2:"ۛ";i:230;s:2:"ۜ";i:230;s:2:"۟";i:230;s:2:"۠";i:230;s:2:"ۡ";i:230;s:2:"ۢ";i:230;s:2:"ۣ";i:220;s:2:"ۤ";i:230;s:2:"ۧ";i:230;s:2:"ۨ";i:230;s:2:"۪";i:220;s:2:"۫";i:230;s:2:"۬";i:230;s:2:"ۭ";i:220;s:2:"ܑ";i:36;s:2:"ܰ";i:230;s:2:"ܱ";i:220;s:2:"ܲ";i:230;s:2:"ܳ";i:230;s:2:"ܴ";i:220;s:2:"ܵ";i:230;s:2:"ܶ";i:230;s:2:"ܷ";i:220;s:2:"ܸ";i:220;s:2:"ܹ";i:220;s:2:"ܺ";i:230;s:2:"ܻ";i:220;s:2:"ܼ";i:220;s:2:"ܽ";i:230;s:2:"ܾ";i:220;s:2:"ܿ";i:230;s:2:"݀";i:230;s:2:"݁";i:230;s:2:"݂";i:220;s:2:"݃";i:230;s:2:"݄";i:220;s:2:"݅";i:230;s:2:"݆";i:220;s:2:"݇";i:230;s:2:"݈";i:220;s:2:"݉";i:230;s:2:"݊";i:230;s:2:"߫";i:230;s:2:"߬";i:230;s:2:"߭";i:230;s:2:"߮";i:230;s:2:"߯";i:230;s:2:"߰";i:230;s:2:"߱";i:230;s:2:"߲";i:220;s:2:"߳";i:230;s:3:"़";i:7;s:3:"्";i:9;s:3:"॑";i:230;s:3:"॒";i:220;s:3:"॓";i:230;s:3:"॔";i:230;s:3:"়";i:7;s:3:"্";i:9;s:3:"਼";i:7;s:3:"੍";i:9;s:3:"઼";i:7;s:3:"્";i:9;s:3:"଼";i:7;s:3:"୍";i:9;s:3:"்";i:9;s:3:"్";i:9;s:3:"ౕ";i:84;s:3:"ౖ";i:91;s:3:"಼";i:7;s:3:"್";i:9;s:3:"്";i:9;s:3:"්";i:9;s:3:"ุ";i:103;s:3:"ู";i:103;s:3:"ฺ";i:9;s:3:"่";i:107;s:3:"้";i:107;s:3:"๊";i:107;s:3:"๋";i:107;s:3:"ຸ";i:118;s:3:"ູ";i:118;s:3:"່";i:122;s:3:"້";i:122;s:3:"໊";i:122;s:3:"໋";i:122;s:3:"༘";i:220;s:3:"༙";i:220;s:3:"༵";i:220;s:3:"༷";i:220;s:3:"༹";i:216;s:3:"ཱ";i:129;s:3:"ི";i:130;s:3:"ུ";i:132;s:3:"ེ";i:130;s:3:"ཻ";i:130;s:3:"ོ";i:130;s:3:"ཽ";i:130;s:3:"ྀ";i:130;s:3:"ྂ";i:230;s:3:"ྃ";i:230;s:3:"྄";i:9;s:3:"྆";i:230;s:3:"྇";i:230;s:3:"࿆";i:220;s:3:"့";i:7;s:3:"္";i:9;s:3:"်";i:9;s:3:"ႍ";i:220;s:3:"፟";i:230;s:3:"᜔";i:9;s:3:"᜴";i:9;s:3:"្";i:9;s:3:"៝";i:230;s:3:"ᢩ";i:228;s:3:"᤹";i:222;s:3:"᤺";i:230;s:3:"᤻";i:220;s:3:"ᨗ";i:230;s:3:"ᨘ";i:220;s:3:"᬴";i:7;s:3:"᭄";i:9;s:3:"᭫";i:230;s:3:"᭬";i:220;s:3:"᭭";i:230;s:3:"᭮";i:230;s:3:"᭯";i:230;s:3:"᭰";i:230;s:3:"᭱";i:230;s:3:"᭲";i:230;s:3:"᭳";i:230;s:3:"᮪";i:9;s:3:"᰷";i:7;s:3:"᷀";i:230;s:3:"᷁";i:230;s:3:"᷂";i:220;s:3:"᷃";i:230;s:3:"᷄";i:230;s:3:"᷅";i:230;s:3:"᷆";i:230;s:3:"᷇";i:230;s:3:"᷈";i:230;s:3:"᷉";i:230;s:3:"᷊";i:220;s:3:"᷋";i:230;s:3:"᷌";i:230;s:3:"᷍";i:234;s:3:"᷎";i:214;s:3:"᷏";i:220;s:3:"᷐";i:202;s:3:"᷑";i:230;s:3:"᷒";i:230;s:3:"ᷓ";i:230;s:3:"ᷔ";i:230;s:3:"ᷕ";i:230;s:3:"ᷖ";i:230;s:3:"ᷗ";i:230;s:3:"ᷘ";i:230;s:3:"ᷙ";i:230;s:3:"ᷚ";i:230;s:3:"ᷛ";i:230;s:3:"ᷜ";i:230;s:3:"ᷝ";i:230;s:3:"ᷞ";i:230;s:3:"ᷟ";i:230;s:3:"ᷠ";i:230;s:3:"ᷡ";i:230;s:3:"ᷢ";i:230;s:3:"ᷣ";i:230;s:3:"ᷤ";i:230;s:3:"ᷥ";i:230;s:3:"ᷦ";i:230;s:3:"᷾";i:230;s:3:"᷿";i:220;s:3:"⃐";i:230;s:3:"⃑";i:230;s:3:"⃒";i:1;s:3:"⃓";i:1;s:3:"⃔";i:230;s:3:"⃕";i:230;s:3:"⃖";i:230;s:3:"⃗";i:230;s:3:"⃘";i:1;s:3:"⃙";i:1;s:3:"⃚";i:1;s:3:"⃛";i:230;s:3:"⃜";i:230;s:3:"⃡";i:230;s:3:"⃥";i:1;s:3:"⃦";i:1;s:3:"⃧";i:230;s:3:"⃨";i:220;s:3:"⃩";i:230;s:3:"⃪";i:1;s:3:"⃫";i:1;s:3:"⃬";i:220;s:3:"⃭";i:220;s:3:"⃮";i:220;s:3:"⃯";i:220;s:3:"⃰";i:230;s:3:"ⷠ";i:230;s:3:"ⷡ";i:230;s:3:"ⷢ";i:230;s:3:"ⷣ";i:230;s:3:"ⷤ";i:230;s:3:"ⷥ";i:230;s:3:"ⷦ";i:230;s:3:"ⷧ";i:230;s:3:"ⷨ";i:230;s:3:"ⷩ";i:230;s:3:"ⷪ";i:230;s:3:"ⷫ";i:230;s:3:"ⷬ";i:230;s:3:"ⷭ";i:230;s:3:"ⷮ";i:230;s:3:"ⷯ";i:230;s:3:"ⷰ";i:230;s:3:"ⷱ";i:230;s:3:"ⷲ";i:230;s:3:"ⷳ";i:230;s:3:"ⷴ";i:230;s:3:"ⷵ";i:230;s:3:"ⷶ";i:230;s:3:"ⷷ";i:230;s:3:"ⷸ";i:230;s:3:"ⷹ";i:230;s:3:"ⷺ";i:230;s:3:"ⷻ";i:230;s:3:"ⷼ";i:230;s:3:"ⷽ";i:230;s:3:"ⷾ";i:230;s:3:"ⷿ";i:230;s:3:"〪";i:218;s:3:"〫";i:228;s:3:"〬";i:232;s:3:"〭";i:222;s:3:"〮";i:224;s:3:"〯";i:224;s:3:"゙";i:8;s:3:"゚";i:8;s:3:"꙯";i:230;s:3:"꙼";i:230;s:3:"꙽";i:230;s:3:"꠆";i:9;s:3:"꣄";i:9;s:3:"꤫";i:220;s:3:"꤬";i:220;s:3:"꤭";i:220;s:3:"꥓";i:9;s:3:"ﬞ";i:26;s:3:"︠";i:230;s:3:"︡";i:230;s:3:"︢";i:230;s:3:"︣";i:230;s:3:"︤";i:230;s:3:"︥";i:230;s:3:"︦";i:230;s:4:"𐇽";i:220;s:4:"𐨍";i:220;s:4:"𐨏";i:230;s:4:"𐨸";i:230;s:4:"𐨹";i:1;s:4:"𐨺";i:220;s:4:"𐨿";i:9;s:4:"𝅥";i:216;s:4:"𝅦";i:216;s:4:"𝅧";i:1;s:4:"𝅨";i:1;s:4:"𝅩";i:1;s:4:"𝅭";i:226;s:4:"𝅮";i:216;s:4:"𝅯";i:216;s:4:"𝅰";i:216;s:4:"𝅱";i:216;s:4:"𝅲";i:216;s:4:"𝅻";i:220;s:4:"𝅼";i:220;s:4:"𝅽";i:220;s:4:"𝅾";i:220;s:4:"𝅿";i:220;s:4:"𝆀";i:220;s:4:"𝆁";i:220;s:4:"𝆂";i:220;s:4:"𝆅";i:230;s:4:"𝆆";i:230;s:4:"𝆇";i:230;s:4:"𝆈";i:230;s:4:"𝆉";i:230;s:4:"𝆊";i:220;s:4:"𝆋";i:220;s:4:"𝆪";i:230;s:4:"𝆫";i:230;s:4:"𝆬";i:230;s:4:"𝆭";i:230;s:4:"𝉂";i:230;s:4:"𝉃";i:230;s:4:"𝉄";i:230;}' );
-$utfCanonicalComp = unserialize( 'a:1862:{s:3:"À";s:2:"À";s:3:"Á";s:2:"Á";s:3:"Â";s:2:"Â";s:3:"Ã";s:2:"Ã";s:3:"Ä";s:2:"Ä";s:3:"Å";s:2:"Å";s:3:"Ç";s:2:"Ç";s:3:"È";s:2:"È";s:3:"É";s:2:"É";s:3:"Ê";s:2:"Ê";s:3:"Ë";s:2:"Ë";s:3:"Ì";s:2:"Ì";s:3:"Í";s:2:"Í";s:3:"Î";s:2:"Î";s:3:"Ï";s:2:"Ï";s:3:"Ñ";s:2:"Ñ";s:3:"Ò";s:2:"Ò";s:3:"Ó";s:2:"Ó";s:3:"Ô";s:2:"Ô";s:3:"Õ";s:2:"Õ";s:3:"Ö";s:2:"Ö";s:3:"Ù";s:2:"Ù";s:3:"Ú";s:2:"Ú";s:3:"Û";s:2:"Û";s:3:"Ü";s:2:"Ü";s:3:"Ý";s:2:"Ý";s:3:"à";s:2:"à";s:3:"á";s:2:"á";s:3:"â";s:2:"â";s:3:"ã";s:2:"ã";s:3:"ä";s:2:"ä";s:3:"å";s:2:"å";s:3:"ç";s:2:"ç";s:3:"è";s:2:"è";s:3:"é";s:2:"é";s:3:"ê";s:2:"ê";s:3:"ë";s:2:"ë";s:3:"ì";s:2:"ì";s:3:"í";s:2:"í";s:3:"î";s:2:"î";s:3:"ï";s:2:"ï";s:3:"ñ";s:2:"ñ";s:3:"ò";s:2:"ò";s:3:"ó";s:2:"ó";s:3:"ô";s:2:"ô";s:3:"õ";s:2:"õ";s:3:"ö";s:2:"ö";s:3:"ù";s:2:"ù";s:3:"ú";s:2:"ú";s:3:"û";s:2:"û";s:3:"ü";s:2:"ü";s:3:"ý";s:2:"ý";s:3:"ÿ";s:2:"ÿ";s:3:"Ā";s:2:"Ā";s:3:"ā";s:2:"ā";s:3:"Ă";s:2:"Ă";s:3:"ă";s:2:"ă";s:3:"Ą";s:2:"Ą";s:3:"ą";s:2:"ą";s:3:"Ć";s:2:"Ć";s:3:"ć";s:2:"ć";s:3:"Ĉ";s:2:"Ĉ";s:3:"ĉ";s:2:"ĉ";s:3:"Ċ";s:2:"Ċ";s:3:"ċ";s:2:"ċ";s:3:"Č";s:2:"Č";s:3:"č";s:2:"č";s:3:"Ď";s:2:"Ď";s:3:"ď";s:2:"ď";s:3:"Ē";s:2:"Ē";s:3:"ē";s:2:"ē";s:3:"Ĕ";s:2:"Ĕ";s:3:"ĕ";s:2:"ĕ";s:3:"Ė";s:2:"Ė";s:3:"ė";s:2:"ė";s:3:"Ę";s:2:"Ę";s:3:"ę";s:2:"ę";s:3:"Ě";s:2:"Ě";s:3:"ě";s:2:"ě";s:3:"Ĝ";s:2:"Ĝ";s:3:"ĝ";s:2:"ĝ";s:3:"Ğ";s:2:"Ğ";s:3:"ğ";s:2:"ğ";s:3:"Ġ";s:2:"Ġ";s:3:"ġ";s:2:"ġ";s:3:"Ģ";s:2:"Ģ";s:3:"ģ";s:2:"ģ";s:3:"Ĥ";s:2:"Ĥ";s:3:"ĥ";s:2:"ĥ";s:3:"Ĩ";s:2:"Ĩ";s:3:"ĩ";s:2:"ĩ";s:3:"Ī";s:2:"Ī";s:3:"ī";s:2:"ī";s:3:"Ĭ";s:2:"Ĭ";s:3:"ĭ";s:2:"ĭ";s:3:"Į";s:2:"Į";s:3:"į";s:2:"į";s:3:"İ";s:2:"İ";s:3:"Ĵ";s:2:"Ĵ";s:3:"ĵ";s:2:"ĵ";s:3:"Ķ";s:2:"Ķ";s:3:"ķ";s:2:"ķ";s:3:"Ĺ";s:2:"Ĺ";s:3:"ĺ";s:2:"ĺ";s:3:"Ļ";s:2:"Ļ";s:3:"ļ";s:2:"ļ";s:3:"Ľ";s:2:"Ľ";s:3:"ľ";s:2:"ľ";s:3:"Ń";s:2:"Ń";s:3:"ń";s:2:"ń";s:3:"Ņ";s:2:"Ņ";s:3:"ņ";s:2:"ņ";s:3:"Ň";s:2:"Ň";s:3:"ň";s:2:"ň";s:3:"Ō";s:2:"Ō";s:3:"ō";s:2:"ō";s:3:"Ŏ";s:2:"Ŏ";s:3:"ŏ";s:2:"ŏ";s:3:"Ő";s:2:"Ő";s:3:"ő";s:2:"ő";s:3:"Ŕ";s:2:"Ŕ";s:3:"ŕ";s:2:"ŕ";s:3:"Ŗ";s:2:"Ŗ";s:3:"ŗ";s:2:"ŗ";s:3:"Ř";s:2:"Ř";s:3:"ř";s:2:"ř";s:3:"Ś";s:2:"Ś";s:3:"ś";s:2:"ś";s:3:"Ŝ";s:2:"Ŝ";s:3:"ŝ";s:2:"ŝ";s:3:"Ş";s:2:"Ş";s:3:"ş";s:2:"ş";s:3:"Š";s:2:"Š";s:3:"š";s:2:"š";s:3:"Ţ";s:2:"Ţ";s:3:"ţ";s:2:"ţ";s:3:"Ť";s:2:"Ť";s:3:"ť";s:2:"ť";s:3:"Ũ";s:2:"Ũ";s:3:"ũ";s:2:"ũ";s:3:"Ū";s:2:"Ū";s:3:"ū";s:2:"ū";s:3:"Ŭ";s:2:"Ŭ";s:3:"ŭ";s:2:"ŭ";s:3:"Ů";s:2:"Ů";s:3:"ů";s:2:"ů";s:3:"Ű";s:2:"Ű";s:3:"ű";s:2:"ű";s:3:"Ų";s:2:"Ų";s:3:"ų";s:2:"ų";s:3:"Ŵ";s:2:"Ŵ";s:3:"ŵ";s:2:"ŵ";s:3:"Ŷ";s:2:"Ŷ";s:3:"ŷ";s:2:"ŷ";s:3:"Ÿ";s:2:"Ÿ";s:3:"Ź";s:2:"Ź";s:3:"ź";s:2:"ź";s:3:"Ż";s:2:"Ż";s:3:"ż";s:2:"ż";s:3:"Ž";s:2:"Ž";s:3:"ž";s:2:"ž";s:3:"Ơ";s:2:"Ơ";s:3:"ơ";s:2:"ơ";s:3:"Ư";s:2:"Ư";s:3:"ư";s:2:"ư";s:3:"Ǎ";s:2:"Ǎ";s:3:"ǎ";s:2:"ǎ";s:3:"Ǐ";s:2:"Ǐ";s:3:"ǐ";s:2:"ǐ";s:3:"Ǒ";s:2:"Ǒ";s:3:"ǒ";s:2:"ǒ";s:3:"Ǔ";s:2:"Ǔ";s:3:"ǔ";s:2:"ǔ";s:4:"Ǖ";s:2:"Ǖ";s:4:"ǖ";s:2:"ǖ";s:4:"Ǘ";s:2:"Ǘ";s:4:"ǘ";s:2:"ǘ";s:4:"Ǚ";s:2:"Ǚ";s:4:"ǚ";s:2:"ǚ";s:4:"Ǜ";s:2:"Ǜ";s:4:"ǜ";s:2:"ǜ";s:4:"Ǟ";s:2:"Ǟ";s:4:"ǟ";s:2:"ǟ";s:4:"Ǡ";s:2:"Ǡ";s:4:"ǡ";s:2:"ǡ";s:4:"Ǣ";s:2:"Ǣ";s:4:"ǣ";s:2:"ǣ";s:3:"Ǧ";s:2:"Ǧ";s:3:"ǧ";s:2:"ǧ";s:3:"Ǩ";s:2:"Ǩ";s:3:"ǩ";s:2:"ǩ";s:3:"Ǫ";s:2:"Ǫ";s:3:"ǫ";s:2:"ǫ";s:4:"Ǭ";s:2:"Ǭ";s:4:"ǭ";s:2:"ǭ";s:4:"Ǯ";s:2:"Ǯ";s:4:"ǯ";s:2:"ǯ";s:3:"ǰ";s:2:"ǰ";s:3:"Ǵ";s:2:"Ǵ";s:3:"ǵ";s:2:"ǵ";s:3:"Ǹ";s:2:"Ǹ";s:3:"ǹ";s:2:"ǹ";s:4:"Ǻ";s:2:"Ǻ";s:4:"ǻ";s:2:"ǻ";s:4:"Ǽ";s:2:"Ǽ";s:4:"ǽ";s:2:"ǽ";s:4:"Ǿ";s:2:"Ǿ";s:4:"ǿ";s:2:"ǿ";s:3:"Ȁ";s:2:"Ȁ";s:3:"ȁ";s:2:"ȁ";s:3:"Ȃ";s:2:"Ȃ";s:3:"ȃ";s:2:"ȃ";s:3:"Ȅ";s:2:"Ȅ";s:3:"ȅ";s:2:"ȅ";s:3:"Ȇ";s:2:"Ȇ";s:3:"ȇ";s:2:"ȇ";s:3:"Ȉ";s:2:"Ȉ";s:3:"ȉ";s:2:"ȉ";s:3:"Ȋ";s:2:"Ȋ";s:3:"ȋ";s:2:"ȋ";s:3:"Ȍ";s:2:"Ȍ";s:3:"ȍ";s:2:"ȍ";s:3:"Ȏ";s:2:"Ȏ";s:3:"ȏ";s:2:"ȏ";s:3:"Ȑ";s:2:"Ȑ";s:3:"ȑ";s:2:"ȑ";s:3:"Ȓ";s:2:"Ȓ";s:3:"ȓ";s:2:"ȓ";s:3:"Ȕ";s:2:"Ȕ";s:3:"ȕ";s:2:"ȕ";s:3:"Ȗ";s:2:"Ȗ";s:3:"ȗ";s:2:"ȗ";s:3:"Ș";s:2:"Ș";s:3:"ș";s:2:"ș";s:3:"Ț";s:2:"Ț";s:3:"ț";s:2:"ț";s:3:"Ȟ";s:2:"Ȟ";s:3:"ȟ";s:2:"ȟ";s:3:"Ȧ";s:2:"Ȧ";s:3:"ȧ";s:2:"ȧ";s:3:"Ȩ";s:2:"Ȩ";s:3:"ȩ";s:2:"ȩ";s:4:"Ȫ";s:2:"Ȫ";s:4:"ȫ";s:2:"ȫ";s:4:"Ȭ";s:2:"Ȭ";s:4:"ȭ";s:2:"ȭ";s:3:"Ȯ";s:2:"Ȯ";s:3:"ȯ";s:2:"ȯ";s:4:"Ȱ";s:2:"Ȱ";s:4:"ȱ";s:2:"ȱ";s:3:"Ȳ";s:2:"Ȳ";s:3:"ȳ";s:2:"ȳ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:4:"̈́";s:2:"̈́";s:2:"ʹ";s:2:"ʹ";s:1:";";s:2:";";s:4:"΅";s:2:"΅";s:4:"Ά";s:2:"Ά";s:2:"·";s:2:"·";s:4:"Έ";s:2:"Έ";s:4:"Ή";s:2:"Ή";s:4:"Ί";s:2:"Ί";s:4:"Ό";s:2:"Ό";s:4:"Ύ";s:2:"Ύ";s:4:"Ώ";s:2:"Ώ";s:4:"ΐ";s:2:"ΐ";s:4:"Ϊ";s:2:"Ϊ";s:4:"Ϋ";s:2:"Ϋ";s:4:"ά";s:2:"ά";s:4:"έ";s:2:"έ";s:4:"ή";s:2:"ή";s:4:"ί";s:2:"ί";s:4:"ΰ";s:2:"ΰ";s:4:"ϊ";s:2:"ϊ";s:4:"ϋ";s:2:"ϋ";s:4:"ό";s:2:"ό";s:4:"ύ";s:2:"ύ";s:4:"ώ";s:2:"ώ";s:4:"ϓ";s:2:"ϓ";s:4:"ϔ";s:2:"ϔ";s:4:"Ѐ";s:2:"Ѐ";s:4:"Ё";s:2:"Ё";s:4:"Ѓ";s:2:"Ѓ";s:4:"Ї";s:2:"Ї";s:4:"Ќ";s:2:"Ќ";s:4:"Ѝ";s:2:"Ѝ";s:4:"Ў";s:2:"Ў";s:4:"Й";s:2:"Й";s:4:"й";s:2:"й";s:4:"ѐ";s:2:"ѐ";s:4:"ё";s:2:"ё";s:4:"ѓ";s:2:"ѓ";s:4:"ї";s:2:"ї";s:4:"ќ";s:2:"ќ";s:4:"ѝ";s:2:"ѝ";s:4:"ў";s:2:"ў";s:4:"Ѷ";s:2:"Ѷ";s:4:"ѷ";s:2:"ѷ";s:4:"Ӂ";s:2:"Ӂ";s:4:"ӂ";s:2:"ӂ";s:4:"Ӑ";s:2:"Ӑ";s:4:"ӑ";s:2:"ӑ";s:4:"Ӓ";s:2:"Ӓ";s:4:"ӓ";s:2:"ӓ";s:4:"Ӗ";s:2:"Ӗ";s:4:"ӗ";s:2:"ӗ";s:4:"Ӛ";s:2:"Ӛ";s:4:"ӛ";s:2:"ӛ";s:4:"Ӝ";s:2:"Ӝ";s:4:"ӝ";s:2:"ӝ";s:4:"Ӟ";s:2:"Ӟ";s:4:"ӟ";s:2:"ӟ";s:4:"Ӣ";s:2:"Ӣ";s:4:"ӣ";s:2:"ӣ";s:4:"Ӥ";s:2:"Ӥ";s:4:"ӥ";s:2:"ӥ";s:4:"Ӧ";s:2:"Ӧ";s:4:"ӧ";s:2:"ӧ";s:4:"Ӫ";s:2:"Ӫ";s:4:"ӫ";s:2:"ӫ";s:4:"Ӭ";s:2:"Ӭ";s:4:"ӭ";s:2:"ӭ";s:4:"Ӯ";s:2:"Ӯ";s:4:"ӯ";s:2:"ӯ";s:4:"Ӱ";s:2:"Ӱ";s:4:"ӱ";s:2:"ӱ";s:4:"Ӳ";s:2:"Ӳ";s:4:"ӳ";s:2:"ӳ";s:4:"Ӵ";s:2:"Ӵ";s:4:"ӵ";s:2:"ӵ";s:4:"Ӹ";s:2:"Ӹ";s:4:"ӹ";s:2:"ӹ";s:4:"آ";s:2:"آ";s:4:"أ";s:2:"أ";s:4:"ؤ";s:2:"ؤ";s:4:"إ";s:2:"إ";s:4:"ئ";s:2:"ئ";s:4:"ۀ";s:2:"ۀ";s:4:"ۂ";s:2:"ۂ";s:4:"ۓ";s:2:"ۓ";s:6:"ऩ";s:3:"ऩ";s:6:"ऱ";s:3:"ऱ";s:6:"ऴ";s:3:"ऴ";s:6:"ো";s:3:"ো";s:6:"ৌ";s:3:"ৌ";s:6:"ୈ";s:3:"ୈ";s:6:"ୋ";s:3:"ୋ";s:6:"ୌ";s:3:"ୌ";s:6:"ஔ";s:3:"ஔ";s:6:"ொ";s:3:"ொ";s:6:"ோ";s:3:"ோ";s:6:"ௌ";s:3:"ௌ";s:6:"ై";s:3:"ై";s:6:"ೀ";s:3:"ೀ";s:6:"ೇ";s:3:"ೇ";s:6:"ೈ";s:3:"ೈ";s:6:"ೊ";s:3:"ೊ";s:6:"ೋ";s:3:"ೋ";s:6:"ൊ";s:3:"ൊ";s:6:"ോ";s:3:"ോ";s:6:"ൌ";s:3:"ൌ";s:6:"ේ";s:3:"ේ";s:6:"ො";s:3:"ො";s:6:"ෝ";s:3:"ෝ";s:6:"ෞ";s:3:"ෞ";s:6:"ཱི";s:3:"ཱི";s:6:"ཱུ";s:3:"ཱུ";s:6:"ཱྀ";s:3:"ཱྀ";s:6:"ဦ";s:3:"ဦ";s:6:"ᬆ";s:3:"ᬆ";s:6:"ᬈ";s:3:"ᬈ";s:6:"ᬊ";s:3:"ᬊ";s:6:"ᬌ";s:3:"ᬌ";s:6:"ᬎ";s:3:"ᬎ";s:6:"ᬒ";s:3:"ᬒ";s:6:"ᬻ";s:3:"ᬻ";s:6:"ᬽ";s:3:"ᬽ";s:6:"ᭀ";s:3:"ᭀ";s:6:"ᭁ";s:3:"ᭁ";s:6:"ᭃ";s:3:"ᭃ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:4:"Ḉ";s:3:"Ḉ";s:4:"ḉ";s:3:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:4:"Ḕ";s:3:"Ḕ";s:4:"ḕ";s:3:"ḕ";s:4:"Ḗ";s:3:"Ḗ";s:4:"ḗ";s:3:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:4:"Ḝ";s:3:"Ḝ";s:4:"ḝ";s:3:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:4:"Ḯ";s:3:"Ḯ";s:4:"ḯ";s:3:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:5:"Ḹ";s:3:"Ḹ";s:5:"ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:4:"Ṍ";s:3:"Ṍ";s:4:"ṍ";s:3:"ṍ";s:4:"Ṏ";s:3:"Ṏ";s:4:"ṏ";s:3:"ṏ";s:4:"Ṑ";s:3:"Ṑ";s:4:"ṑ";s:3:"ṑ";s:4:"Ṓ";s:3:"Ṓ";s:4:"ṓ";s:3:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:5:"Ṝ";s:3:"Ṝ";s:5:"ṝ";s:3:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:4:"Ṥ";s:3:"Ṥ";s:4:"ṥ";s:3:"ṥ";s:4:"Ṧ";s:3:"Ṧ";s:4:"ṧ";s:3:"ṧ";s:5:"Ṩ";s:3:"Ṩ";s:5:"ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:4:"Ṹ";s:3:"Ṹ";s:4:"ṹ";s:3:"ṹ";s:4:"Ṻ";s:3:"Ṻ";s:4:"ṻ";s:3:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:4:"ẛ";s:3:"ẛ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:4:"Ấ";s:3:"Ấ";s:4:"ấ";s:3:"ấ";s:4:"Ầ";s:3:"Ầ";s:4:"ầ";s:3:"ầ";s:4:"Ẩ";s:3:"Ẩ";s:4:"ẩ";s:3:"ẩ";s:4:"Ẫ";s:3:"Ẫ";s:4:"ẫ";s:3:"ẫ";s:5:"Ậ";s:3:"Ậ";s:5:"ậ";s:3:"ậ";s:4:"Ắ";s:3:"Ắ";s:4:"ắ";s:3:"ắ";s:4:"Ằ";s:3:"Ằ";s:4:"ằ";s:3:"ằ";s:4:"Ẳ";s:3:"Ẳ";s:4:"ẳ";s:3:"ẳ";s:4:"Ẵ";s:3:"Ẵ";s:4:"ẵ";s:3:"ẵ";s:5:"Ặ";s:3:"Ặ";s:5:"ặ";s:3:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:4:"Ế";s:3:"Ế";s:4:"ế";s:3:"ế";s:4:"Ề";s:3:"Ề";s:4:"ề";s:3:"ề";s:4:"Ể";s:3:"Ể";s:4:"ể";s:3:"ể";s:4:"Ễ";s:3:"Ễ";s:4:"ễ";s:3:"ễ";s:5:"Ệ";s:3:"Ệ";s:5:"ệ";s:3:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:4:"Ố";s:3:"Ố";s:4:"ố";s:3:"ố";s:4:"Ồ";s:3:"Ồ";s:4:"ồ";s:3:"ồ";s:4:"Ổ";s:3:"Ổ";s:4:"ổ";s:3:"ổ";s:4:"Ỗ";s:3:"Ỗ";s:4:"ỗ";s:3:"ỗ";s:5:"Ộ";s:3:"Ộ";s:5:"ộ";s:3:"ộ";s:4:"Ớ";s:3:"Ớ";s:4:"ớ";s:3:"ớ";s:4:"Ờ";s:3:"Ờ";s:4:"ờ";s:3:"ờ";s:4:"Ở";s:3:"Ở";s:4:"ở";s:3:"ở";s:4:"Ỡ";s:3:"Ỡ";s:4:"ỡ";s:3:"ỡ";s:4:"Ợ";s:3:"Ợ";s:4:"ợ";s:3:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:4:"Ứ";s:3:"Ứ";s:4:"ứ";s:3:"ứ";s:4:"Ừ";s:3:"Ừ";s:4:"ừ";s:3:"ừ";s:4:"Ử";s:3:"Ử";s:4:"ử";s:3:"ử";s:4:"Ữ";s:3:"Ữ";s:4:"ữ";s:3:"ữ";s:4:"Ự";s:3:"Ự";s:4:"ự";s:3:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:4:"ἀ";s:3:"ἀ";s:4:"ἁ";s:3:"ἁ";s:5:"ἂ";s:3:"ἂ";s:5:"ἃ";s:3:"ἃ";s:5:"ἄ";s:3:"ἄ";s:5:"ἅ";s:3:"ἅ";s:5:"ἆ";s:3:"ἆ";s:5:"ἇ";s:3:"ἇ";s:4:"Ἀ";s:3:"Ἀ";s:4:"Ἁ";s:3:"Ἁ";s:5:"Ἂ";s:3:"Ἂ";s:5:"Ἃ";s:3:"Ἃ";s:5:"Ἄ";s:3:"Ἄ";s:5:"Ἅ";s:3:"Ἅ";s:5:"Ἆ";s:3:"Ἆ";s:5:"Ἇ";s:3:"Ἇ";s:4:"ἐ";s:3:"ἐ";s:4:"ἑ";s:3:"ἑ";s:5:"ἒ";s:3:"ἒ";s:5:"ἓ";s:3:"ἓ";s:5:"ἔ";s:3:"ἔ";s:5:"ἕ";s:3:"ἕ";s:4:"Ἐ";s:3:"Ἐ";s:4:"Ἑ";s:3:"Ἑ";s:5:"Ἒ";s:3:"Ἒ";s:5:"Ἓ";s:3:"Ἓ";s:5:"Ἔ";s:3:"Ἔ";s:5:"Ἕ";s:3:"Ἕ";s:4:"ἠ";s:3:"ἠ";s:4:"ἡ";s:3:"ἡ";s:5:"ἢ";s:3:"ἢ";s:5:"ἣ";s:3:"ἣ";s:5:"ἤ";s:3:"ἤ";s:5:"ἥ";s:3:"ἥ";s:5:"ἦ";s:3:"ἦ";s:5:"ἧ";s:3:"ἧ";s:4:"Ἠ";s:3:"Ἠ";s:4:"Ἡ";s:3:"Ἡ";s:5:"Ἢ";s:3:"Ἢ";s:5:"Ἣ";s:3:"Ἣ";s:5:"Ἤ";s:3:"Ἤ";s:5:"Ἥ";s:3:"Ἥ";s:5:"Ἦ";s:3:"Ἦ";s:5:"Ἧ";s:3:"Ἧ";s:4:"ἰ";s:3:"ἰ";s:4:"ἱ";s:3:"ἱ";s:5:"ἲ";s:3:"ἲ";s:5:"ἳ";s:3:"ἳ";s:5:"ἴ";s:3:"ἴ";s:5:"ἵ";s:3:"ἵ";s:5:"ἶ";s:3:"ἶ";s:5:"ἷ";s:3:"ἷ";s:4:"Ἰ";s:3:"Ἰ";s:4:"Ἱ";s:3:"Ἱ";s:5:"Ἲ";s:3:"Ἲ";s:5:"Ἳ";s:3:"Ἳ";s:5:"Ἴ";s:3:"Ἴ";s:5:"Ἵ";s:3:"Ἵ";s:5:"Ἶ";s:3:"Ἶ";s:5:"Ἷ";s:3:"Ἷ";s:4:"ὀ";s:3:"ὀ";s:4:"ὁ";s:3:"ὁ";s:5:"ὂ";s:3:"ὂ";s:5:"ὃ";s:3:"ὃ";s:5:"ὄ";s:3:"ὄ";s:5:"ὅ";s:3:"ὅ";s:4:"Ὀ";s:3:"Ὀ";s:4:"Ὁ";s:3:"Ὁ";s:5:"Ὂ";s:3:"Ὂ";s:5:"Ὃ";s:3:"Ὃ";s:5:"Ὄ";s:3:"Ὄ";s:5:"Ὅ";s:3:"Ὅ";s:4:"ὐ";s:3:"ὐ";s:4:"ὑ";s:3:"ὑ";s:5:"ὒ";s:3:"ὒ";s:5:"ὓ";s:3:"ὓ";s:5:"ὔ";s:3:"ὔ";s:5:"ὕ";s:3:"ὕ";s:5:"ὖ";s:3:"ὖ";s:5:"ὗ";s:3:"ὗ";s:4:"Ὑ";s:3:"Ὑ";s:5:"Ὓ";s:3:"Ὓ";s:5:"Ὕ";s:3:"Ὕ";s:5:"Ὗ";s:3:"Ὗ";s:4:"ὠ";s:3:"ὠ";s:4:"ὡ";s:3:"ὡ";s:5:"ὢ";s:3:"ὢ";s:5:"ὣ";s:3:"ὣ";s:5:"ὤ";s:3:"ὤ";s:5:"ὥ";s:3:"ὥ";s:5:"ὦ";s:3:"ὦ";s:5:"ὧ";s:3:"ὧ";s:4:"Ὠ";s:3:"Ὠ";s:4:"Ὡ";s:3:"Ὡ";s:5:"Ὢ";s:3:"Ὢ";s:5:"Ὣ";s:3:"Ὣ";s:5:"Ὤ";s:3:"Ὤ";s:5:"Ὥ";s:3:"Ὥ";s:5:"Ὦ";s:3:"Ὦ";s:5:"Ὧ";s:3:"Ὧ";s:4:"ὰ";s:3:"ὰ";s:2:"ά";s:3:"ά";s:4:"ὲ";s:3:"ὲ";s:2:"έ";s:3:"έ";s:4:"ὴ";s:3:"ὴ";s:2:"ή";s:3:"ή";s:4:"ὶ";s:3:"ὶ";s:2:"ί";s:3:"ί";s:4:"ὸ";s:3:"ὸ";s:2:"ό";s:3:"ό";s:4:"ὺ";s:3:"ὺ";s:2:"ύ";s:3:"ύ";s:4:"ὼ";s:3:"ὼ";s:2:"ώ";s:3:"ώ";s:5:"ᾀ";s:3:"ᾀ";s:5:"ᾁ";s:3:"ᾁ";s:5:"ᾂ";s:3:"ᾂ";s:5:"ᾃ";s:3:"ᾃ";s:5:"ᾄ";s:3:"ᾄ";s:5:"ᾅ";s:3:"ᾅ";s:5:"ᾆ";s:3:"ᾆ";s:5:"ᾇ";s:3:"ᾇ";s:5:"ᾈ";s:3:"ᾈ";s:5:"ᾉ";s:3:"ᾉ";s:5:"ᾊ";s:3:"ᾊ";s:5:"ᾋ";s:3:"ᾋ";s:5:"ᾌ";s:3:"ᾌ";s:5:"ᾍ";s:3:"ᾍ";s:5:"ᾎ";s:3:"ᾎ";s:5:"ᾏ";s:3:"ᾏ";s:5:"ᾐ";s:3:"ᾐ";s:5:"ᾑ";s:3:"ᾑ";s:5:"ᾒ";s:3:"ᾒ";s:5:"ᾓ";s:3:"ᾓ";s:5:"ᾔ";s:3:"ᾔ";s:5:"ᾕ";s:3:"ᾕ";s:5:"ᾖ";s:3:"ᾖ";s:5:"ᾗ";s:3:"ᾗ";s:5:"ᾘ";s:3:"ᾘ";s:5:"ᾙ";s:3:"ᾙ";s:5:"ᾚ";s:3:"ᾚ";s:5:"ᾛ";s:3:"ᾛ";s:5:"ᾜ";s:3:"ᾜ";s:5:"ᾝ";s:3:"ᾝ";s:5:"ᾞ";s:3:"ᾞ";s:5:"ᾟ";s:3:"ᾟ";s:5:"ᾠ";s:3:"ᾠ";s:5:"ᾡ";s:3:"ᾡ";s:5:"ᾢ";s:3:"ᾢ";s:5:"ᾣ";s:3:"ᾣ";s:5:"ᾤ";s:3:"ᾤ";s:5:"ᾥ";s:3:"ᾥ";s:5:"ᾦ";s:3:"ᾦ";s:5:"ᾧ";s:3:"ᾧ";s:5:"ᾨ";s:3:"ᾨ";s:5:"ᾩ";s:3:"ᾩ";s:5:"ᾪ";s:3:"ᾪ";s:5:"ᾫ";s:3:"ᾫ";s:5:"ᾬ";s:3:"ᾬ";s:5:"ᾭ";s:3:"ᾭ";s:5:"ᾮ";s:3:"ᾮ";s:5:"ᾯ";s:3:"ᾯ";s:4:"ᾰ";s:3:"ᾰ";s:4:"ᾱ";s:3:"ᾱ";s:5:"ᾲ";s:3:"ᾲ";s:4:"ᾳ";s:3:"ᾳ";s:4:"ᾴ";s:3:"ᾴ";s:4:"ᾶ";s:3:"ᾶ";s:5:"ᾷ";s:3:"ᾷ";s:4:"Ᾰ";s:3:"Ᾰ";s:4:"Ᾱ";s:3:"Ᾱ";s:4:"Ὰ";s:3:"Ὰ";s:2:"Ά";s:3:"Ά";s:4:"ᾼ";s:3:"ᾼ";s:2:"ι";s:3:"ι";s:4:"῁";s:3:"῁";s:5:"ῂ";s:3:"ῂ";s:4:"ῃ";s:3:"ῃ";s:4:"ῄ";s:3:"ῄ";s:4:"ῆ";s:3:"ῆ";s:5:"ῇ";s:3:"ῇ";s:4:"Ὲ";s:3:"Ὲ";s:2:"Έ";s:3:"Έ";s:4:"Ὴ";s:3:"Ὴ";s:2:"Ή";s:3:"Ή";s:4:"ῌ";s:3:"ῌ";s:5:"῍";s:3:"῍";s:5:"῎";s:3:"῎";s:5:"῏";s:3:"῏";s:4:"ῐ";s:3:"ῐ";s:4:"ῑ";s:3:"ῑ";s:4:"ῒ";s:3:"ῒ";s:2:"ΐ";s:3:"ΐ";s:4:"ῖ";s:3:"ῖ";s:4:"ῗ";s:3:"ῗ";s:4:"Ῐ";s:3:"Ῐ";s:4:"Ῑ";s:3:"Ῑ";s:4:"Ὶ";s:3:"Ὶ";s:2:"Ί";s:3:"Ί";s:5:"῝";s:3:"῝";s:5:"῞";s:3:"῞";s:5:"῟";s:3:"῟";s:4:"ῠ";s:3:"ῠ";s:4:"ῡ";s:3:"ῡ";s:4:"ῢ";s:3:"ῢ";s:2:"ΰ";s:3:"ΰ";s:4:"ῤ";s:3:"ῤ";s:4:"ῥ";s:3:"ῥ";s:4:"ῦ";s:3:"ῦ";s:4:"ῧ";s:3:"ῧ";s:4:"Ῠ";s:3:"Ῠ";s:4:"Ῡ";s:3:"Ῡ";s:4:"Ὺ";s:3:"Ὺ";s:2:"Ύ";s:3:"Ύ";s:4:"Ῥ";s:3:"Ῥ";s:4:"῭";s:3:"῭";s:2:"΅";s:3:"΅";s:1:"`";s:3:"`";s:5:"ῲ";s:3:"ῲ";s:4:"ῳ";s:3:"ῳ";s:4:"ῴ";s:3:"ῴ";s:4:"ῶ";s:3:"ῶ";s:5:"ῷ";s:3:"ῷ";s:4:"Ὸ";s:3:"Ὸ";s:2:"Ό";s:3:"Ό";s:4:"Ὼ";s:3:"Ὼ";s:2:"Ώ";s:3:"Ώ";s:4:"ῼ";s:3:"ῼ";s:2:"´";s:3:"´";s:3:" ";s:3:" ";s:3:" ";s:3:" ";s:2:"Ω";s:3:"Ω";s:1:"K";s:3:"K";s:2:"Å";s:3:"Å";s:5:"↚";s:3:"↚";s:5:"↛";s:3:"↛";s:5:"↮";s:3:"↮";s:5:"⇍";s:3:"⇍";s:5:"⇎";s:3:"⇎";s:5:"⇏";s:3:"⇏";s:5:"∄";s:3:"∄";s:5:"∉";s:3:"∉";s:5:"∌";s:3:"∌";s:5:"∤";s:3:"∤";s:5:"∦";s:3:"∦";s:5:"≁";s:3:"≁";s:5:"≄";s:3:"≄";s:5:"≇";s:3:"≇";s:5:"≉";s:3:"≉";s:3:"≠";s:3:"≠";s:5:"≢";s:3:"≢";s:5:"≭";s:3:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:5:"≰";s:3:"≰";s:5:"≱";s:3:"≱";s:5:"≴";s:3:"≴";s:5:"≵";s:3:"≵";s:5:"≸";s:3:"≸";s:5:"≹";s:3:"≹";s:5:"⊀";s:3:"⊀";s:5:"⊁";s:3:"⊁";s:5:"⊄";s:3:"⊄";s:5:"⊅";s:3:"⊅";s:5:"⊈";s:3:"⊈";s:5:"⊉";s:3:"⊉";s:5:"⊬";s:3:"⊬";s:5:"⊭";s:3:"⊭";s:5:"⊮";s:3:"⊮";s:5:"⊯";s:3:"⊯";s:5:"⋠";s:3:"⋠";s:5:"⋡";s:3:"⋡";s:5:"⋢";s:3:"⋢";s:5:"⋣";s:3:"⋣";s:5:"⋪";s:3:"⋪";s:5:"⋫";s:3:"⋫";s:5:"⋬";s:3:"⋬";s:5:"⋭";s:3:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:6:"が";s:3:"が";s:6:"ぎ";s:3:"ぎ";s:6:"ぐ";s:3:"ぐ";s:6:"げ";s:3:"げ";s:6:"ご";s:3:"ご";s:6:"ざ";s:3:"ざ";s:6:"じ";s:3:"じ";s:6:"ず";s:3:"ず";s:6:"ぜ";s:3:"ぜ";s:6:"ぞ";s:3:"ぞ";s:6:"だ";s:3:"だ";s:6:"ぢ";s:3:"ぢ";s:6:"づ";s:3:"づ";s:6:"で";s:3:"で";s:6:"ど";s:3:"ど";s:6:"ば";s:3:"ば";s:6:"ぱ";s:3:"ぱ";s:6:"び";s:3:"び";s:6:"ぴ";s:3:"ぴ";s:6:"ぶ";s:3:"ぶ";s:6:"ぷ";s:3:"ぷ";s:6:"べ";s:3:"べ";s:6:"ぺ";s:3:"ぺ";s:6:"ぼ";s:3:"ぼ";s:6:"ぽ";s:3:"ぽ";s:6:"ゔ";s:3:"ゔ";s:6:"ゞ";s:3:"ゞ";s:6:"ガ";s:3:"ガ";s:6:"ギ";s:3:"ギ";s:6:"グ";s:3:"グ";s:6:"ゲ";s:3:"ゲ";s:6:"ゴ";s:3:"ゴ";s:6:"ザ";s:3:"ザ";s:6:"ジ";s:3:"ジ";s:6:"ズ";s:3:"ズ";s:6:"ゼ";s:3:"ゼ";s:6:"ゾ";s:3:"ゾ";s:6:"ダ";s:3:"ダ";s:6:"ヂ";s:3:"ヂ";s:6:"ヅ";s:3:"ヅ";s:6:"デ";s:3:"デ";s:6:"ド";s:3:"ド";s:6:"バ";s:3:"バ";s:6:"パ";s:3:"パ";s:6:"ビ";s:3:"ビ";s:6:"ピ";s:3:"ピ";s:6:"ブ";s:3:"ブ";s:6:"プ";s:3:"プ";s:6:"ベ";s:3:"ベ";s:6:"ペ";s:3:"ペ";s:6:"ボ";s:3:"ボ";s:6:"ポ";s:3:"ポ";s:6:"ヴ";s:3:"ヴ";s:6:"ヷ";s:3:"ヷ";s:6:"ヸ";s:3:"ヸ";s:6:"ヹ";s:3:"ヹ";s:6:"ヺ";s:3:"ヺ";s:6:"ヾ";s:3:"ヾ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:4:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:4:"廊";s:3:"朗";s:4:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:4:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:4:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:4:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:4:"異";s:3:"北";s:4:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:4:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:4:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:4:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:4:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:4:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:4:"侮";s:3:"僧";s:4:"僧";s:3:"免";s:4:"免";s:3:"勉";s:4:"勉";s:3:"勤";s:4:"勤";s:3:"卑";s:4:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:4:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:4:"屮";s:3:"悔";s:4:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:4:"憎";s:3:"懲";s:4:"懲";s:3:"敏";s:4:"敏";s:3:"既";s:3:"既";s:3:"暑";s:4:"暑";s:3:"梅";s:4:"梅";s:3:"海";s:4:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:4:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:4:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:4:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"著";s:4:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"並";s:3:"並";s:3:"况";s:4:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:4:"勇";s:3:"勺";s:4:"勺";s:3:"啕";s:3:"啕";s:3:"喙";s:4:"喙";s:3:"嗢";s:3:"嗢";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:4:"慎";s:3:"愈";s:3:"愈";s:3:"慠";s:3:"慠";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"望";s:4:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"滛";s:3:"滛";s:3:"滋";s:4:"滋";s:3:"瀞";s:4:"瀞";s:3:"瞧";s:3:"瞧";s:3:"爵";s:4:"爵";s:3:"犯";s:3:"犯";s:3:"瑱";s:4:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"盛";s:3:"盛";s:3:"直";s:4:"直";s:3:"睊";s:4:"睊";s:3:"着";s:3:"着";s:3:"磌";s:4:"磌";s:3:"窱";s:3:"窱";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"缾";s:3:"缾";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:4:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"調";s:3:"調";s:3:"請";s:3:"請";s:3:"諭";s:4:"諭";s:3:"變";s:4:"變";s:3:"輸";s:4:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"韛";s:3:"韛";s:3:"頋";s:4:"頋";s:3:"鬒";s:4:"鬒";s:4:"𢡊";s:3:"𢡊";s:4:"𢡄";s:3:"𢡄";s:4:"𣏕";s:3:"𣏕";s:3:"㮝";s:4:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:4:"䀹";s:4:"𥉉";s:3:"𥉉";s:4:"𥳐";s:3:"𥳐";s:4:"𧻓";s:3:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:3:"丽";s:4:"丽";s:3:"丸";s:4:"丸";s:3:"乁";s:4:"乁";s:4:"𠄢";s:4:"𠄢";s:3:"你";s:4:"你";s:3:"侻";s:4:"侻";s:3:"倂";s:4:"倂";s:3:"偺";s:4:"偺";s:3:"備";s:4:"備";s:3:"像";s:4:"像";s:3:"㒞";s:4:"㒞";s:4:"𠘺";s:4:"𠘺";s:3:"兔";s:4:"兔";s:3:"兤";s:4:"兤";s:3:"具";s:4:"具";s:4:"𠔜";s:4:"𠔜";s:3:"㒹";s:4:"㒹";s:3:"內";s:4:"內";s:3:"再";s:4:"再";s:4:"𠕋";s:4:"𠕋";s:3:"冗";s:4:"冗";s:3:"冤";s:4:"冤";s:3:"仌";s:4:"仌";s:3:"冬";s:4:"冬";s:4:"𩇟";s:4:"𩇟";s:3:"凵";s:4:"凵";s:3:"刃";s:4:"刃";s:3:"㓟";s:4:"㓟";s:3:"刻";s:4:"刻";s:3:"剆";s:4:"剆";s:3:"割";s:4:"割";s:3:"剷";s:4:"剷";s:3:"㔕";s:4:"㔕";s:3:"包";s:4:"包";s:3:"匆";s:4:"匆";s:3:"卉";s:4:"卉";s:3:"博";s:4:"博";s:3:"即";s:4:"即";s:3:"卽";s:4:"卽";s:3:"卿";s:4:"卿";s:4:"𠨬";s:4:"𠨬";s:3:"灰";s:4:"灰";s:3:"及";s:4:"及";s:3:"叟";s:4:"叟";s:4:"𠭣";s:4:"𠭣";s:3:"叫";s:4:"叫";s:3:"叱";s:4:"叱";s:3:"吆";s:4:"吆";s:3:"咞";s:4:"咞";s:3:"吸";s:4:"吸";s:3:"呈";s:4:"呈";s:3:"周";s:4:"周";s:3:"咢";s:4:"咢";s:3:"哶";s:4:"哶";s:3:"唐";s:4:"唐";s:3:"啓";s:4:"啓";s:3:"啣";s:4:"啣";s:3:"善";s:4:"善";s:3:"喫";s:4:"喫";s:3:"喳";s:4:"喳";s:3:"嗂";s:4:"嗂";s:3:"圖";s:4:"圖";s:3:"圗";s:4:"圗";s:3:"噑";s:4:"噑";s:3:"噴";s:4:"噴";s:3:"壮";s:4:"壮";s:3:"城";s:4:"城";s:3:"埴";s:4:"埴";s:3:"堍";s:4:"堍";s:3:"型";s:4:"型";s:3:"堲";s:4:"堲";s:3:"報";s:4:"報";s:3:"墬";s:4:"墬";s:4:"𡓤";s:4:"𡓤";s:3:"売";s:4:"売";s:3:"壷";s:4:"壷";s:3:"夆";s:4:"夆";s:3:"多";s:4:"多";s:3:"夢";s:4:"夢";s:3:"奢";s:4:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:3:"姬";s:4:"姬";s:3:"娛";s:4:"娛";s:3:"娧";s:4:"娧";s:3:"姘";s:4:"姘";s:3:"婦";s:4:"婦";s:3:"㛮";s:4:"㛮";s:3:"㛼";s:4:"㛼";s:3:"嬈";s:4:"嬈";s:3:"嬾";s:4:"嬾";s:4:"𡧈";s:4:"𡧈";s:3:"寃";s:4:"寃";s:3:"寘";s:4:"寘";s:3:"寳";s:4:"寳";s:4:"𡬘";s:4:"𡬘";s:3:"寿";s:4:"寿";s:3:"将";s:4:"将";s:3:"当";s:4:"当";s:3:"尢";s:4:"尢";s:3:"㞁";s:4:"㞁";s:3:"屠";s:4:"屠";s:3:"峀";s:4:"峀";s:3:"岍";s:4:"岍";s:4:"𡷤";s:4:"𡷤";s:3:"嵃";s:4:"嵃";s:4:"𡷦";s:4:"𡷦";s:3:"嵮";s:4:"嵮";s:3:"嵫";s:4:"嵫";s:3:"嵼";s:4:"嵼";s:3:"巡";s:4:"巡";s:3:"巢";s:4:"巢";s:3:"㠯";s:4:"㠯";s:3:"巽";s:4:"巽";s:3:"帨";s:4:"帨";s:3:"帽";s:4:"帽";s:3:"幩";s:4:"幩";s:3:"㡢";s:4:"㡢";s:4:"𢆃";s:4:"𢆃";s:3:"㡼";s:4:"㡼";s:3:"庰";s:4:"庰";s:3:"庳";s:4:"庳";s:3:"庶";s:4:"庶";s:4:"𪎒";s:4:"𪎒";s:3:"廾";s:4:"廾";s:4:"𢌱";s:4:"𢌱";s:3:"舁";s:4:"舁";s:3:"弢";s:4:"弢";s:3:"㣇";s:4:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:3:"形";s:4:"形";s:3:"彫";s:4:"彫";s:3:"㣣";s:4:"㣣";s:3:"徚";s:4:"徚";s:3:"忍";s:4:"忍";s:3:"志";s:4:"志";s:3:"忹";s:4:"忹";s:3:"悁";s:4:"悁";s:3:"㤺";s:4:"㤺";s:3:"㤜";s:4:"㤜";s:4:"𢛔";s:4:"𢛔";s:3:"惇";s:4:"惇";s:3:"慈";s:4:"慈";s:3:"慌";s:4:"慌";s:3:"慺";s:4:"慺";s:3:"憲";s:4:"憲";s:3:"憤";s:4:"憤";s:3:"憯";s:4:"憯";s:3:"懞";s:4:"懞";s:3:"成";s:4:"成";s:3:"戛";s:4:"戛";s:3:"扝";s:4:"扝";s:3:"抱";s:4:"抱";s:3:"拔";s:4:"拔";s:3:"捐";s:4:"捐";s:4:"𢬌";s:4:"𢬌";s:3:"挽";s:4:"挽";s:3:"拼";s:4:"拼";s:3:"捨";s:4:"捨";s:3:"掃";s:4:"掃";s:3:"揤";s:4:"揤";s:4:"𢯱";s:4:"𢯱";s:3:"搢";s:4:"搢";s:3:"揅";s:4:"揅";s:3:"掩";s:4:"掩";s:3:"㨮";s:4:"㨮";s:3:"摩";s:4:"摩";s:3:"摾";s:4:"摾";s:3:"撝";s:4:"撝";s:3:"摷";s:4:"摷";s:3:"㩬";s:4:"㩬";s:3:"敬";s:4:"敬";s:4:"𣀊";s:4:"𣀊";s:3:"旣";s:4:"旣";s:3:"書";s:4:"書";s:3:"晉";s:4:"晉";s:3:"㬙";s:4:"㬙";s:3:"㬈";s:4:"㬈";s:3:"㫤";s:4:"㫤";s:3:"冒";s:4:"冒";s:3:"冕";s:4:"冕";s:3:"最";s:4:"最";s:3:"暜";s:4:"暜";s:3:"肭";s:4:"肭";s:3:"䏙";s:4:"䏙";s:3:"朡";s:4:"朡";s:3:"杞";s:4:"杞";s:3:"杓";s:4:"杓";s:4:"𣏃";s:4:"𣏃";s:3:"㭉";s:4:"㭉";s:3:"柺";s:4:"柺";s:3:"枅";s:4:"枅";s:3:"桒";s:4:"桒";s:4:"𣑭";s:4:"𣑭";s:3:"梎";s:4:"梎";s:3:"栟";s:4:"栟";s:3:"椔";s:4:"椔";s:3:"楂";s:4:"楂";s:3:"榣";s:4:"榣";s:3:"槪";s:4:"槪";s:3:"檨";s:4:"檨";s:4:"𣚣";s:4:"𣚣";s:3:"櫛";s:4:"櫛";s:3:"㰘";s:4:"㰘";s:3:"次";s:4:"次";s:4:"𣢧";s:4:"𣢧";s:3:"歔";s:4:"歔";s:3:"㱎";s:4:"㱎";s:3:"歲";s:4:"歲";s:3:"殟";s:4:"殟";s:3:"殻";s:4:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:3:"汎";s:4:"汎";s:4:"𣲼";s:4:"𣲼";s:3:"沿";s:4:"沿";s:3:"泍";s:4:"泍";s:3:"汧";s:4:"汧";s:3:"洖";s:4:"洖";s:3:"派";s:4:"派";s:3:"浩";s:4:"浩";s:3:"浸";s:4:"浸";s:3:"涅";s:4:"涅";s:4:"𣴞";s:4:"𣴞";s:3:"洴";s:4:"洴";s:3:"港";s:4:"港";s:3:"湮";s:4:"湮";s:3:"㴳";s:4:"㴳";s:3:"滇";s:4:"滇";s:4:"𣻑";s:4:"𣻑";s:3:"淹";s:4:"淹";s:3:"潮";s:4:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:3:"濆";s:4:"濆";s:3:"瀹";s:4:"瀹";s:3:"瀛";s:4:"瀛";s:3:"㶖";s:4:"㶖";s:3:"灊";s:4:"灊";s:3:"災";s:4:"災";s:3:"灷";s:4:"灷";s:3:"炭";s:4:"炭";s:4:"𠔥";s:4:"𠔥";s:3:"煅";s:4:"煅";s:4:"𤉣";s:4:"𤉣";s:3:"熜";s:4:"熜";s:4:"𤎫";s:4:"𤎫";s:3:"爨";s:4:"爨";s:3:"牐";s:4:"牐";s:4:"𤘈";s:4:"𤘈";s:3:"犀";s:4:"犀";s:3:"犕";s:4:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:3:"獺";s:4:"獺";s:3:"王";s:4:"王";s:3:"㺬";s:4:"㺬";s:3:"玥";s:4:"玥";s:3:"㺸";s:4:"㺸";s:3:"瑇";s:4:"瑇";s:3:"瑜";s:4:"瑜";s:3:"璅";s:4:"璅";s:3:"瓊";s:4:"瓊";s:3:"㼛";s:4:"㼛";s:3:"甤";s:4:"甤";s:4:"𤰶";s:4:"𤰶";s:3:"甾";s:4:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"𢆟";s:4:"𢆟";s:3:"瘐";s:4:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:3:"㿼";s:4:"㿼";s:3:"䀈";s:4:"䀈";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:3:"眞";s:4:"眞";s:3:"真";s:4:"真";s:3:"瞋";s:4:"瞋";s:3:"䁆";s:4:"䁆";s:3:"䂖";s:4:"䂖";s:4:"𥐝";s:4:"𥐝";s:3:"硎";s:4:"硎";s:3:"䃣";s:4:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:3:"秫";s:4:"秫";s:3:"䄯";s:4:"䄯";s:3:"穊";s:4:"穊";s:3:"穏";s:4:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:3:"竮";s:4:"竮";s:3:"䈂";s:4:"䈂";s:4:"𥮫";s:4:"𥮫";s:3:"篆";s:4:"篆";s:3:"築";s:4:"築";s:3:"䈧";s:4:"䈧";s:4:"𥲀";s:4:"𥲀";s:3:"糒";s:4:"糒";s:3:"䊠";s:4:"䊠";s:3:"糨";s:4:"糨";s:3:"糣";s:4:"糣";s:3:"紀";s:4:"紀";s:4:"𥾆";s:4:"𥾆";s:3:"絣";s:4:"絣";s:3:"䌁";s:4:"䌁";s:3:"緇";s:4:"緇";s:3:"縂";s:4:"縂";s:3:"繅";s:4:"繅";s:3:"䌴";s:4:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:3:"䍙";s:4:"䍙";s:4:"𦋙";s:4:"𦋙";s:3:"罺";s:4:"罺";s:4:"𦌾";s:4:"𦌾";s:3:"羕";s:4:"羕";s:3:"翺";s:4:"翺";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:3:"聠";s:4:"聠";s:4:"𦖨";s:4:"𦖨";s:3:"聰";s:4:"聰";s:4:"𣍟";s:4:"𣍟";s:3:"䏕";s:4:"䏕";s:3:"育";s:4:"育";s:3:"脃";s:4:"脃";s:3:"䐋";s:4:"䐋";s:3:"脾";s:4:"脾";s:3:"媵";s:4:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:3:"舄";s:4:"舄";s:3:"辞";s:4:"辞";s:3:"䑫";s:4:"䑫";s:3:"芑";s:4:"芑";s:3:"芋";s:4:"芋";s:3:"芝";s:4:"芝";s:3:"劳";s:4:"劳";s:3:"花";s:4:"花";s:3:"芳";s:4:"芳";s:3:"芽";s:4:"芽";s:3:"苦";s:4:"苦";s:4:"𦬼";s:4:"𦬼";s:3:"茝";s:4:"茝";s:3:"荣";s:4:"荣";s:3:"莭";s:4:"莭";s:3:"茣";s:4:"茣";s:3:"莽";s:4:"莽";s:3:"菧";s:4:"菧";s:3:"荓";s:4:"荓";s:3:"菊";s:4:"菊";s:3:"菌";s:4:"菌";s:3:"菜";s:4:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:3:"䔫";s:4:"䔫";s:3:"蓱";s:4:"蓱";s:3:"蓳";s:4:"蓳";s:3:"蔖";s:4:"蔖";s:4:"𧏊";s:4:"𧏊";s:3:"蕤";s:4:"蕤";s:4:"𦼬";s:4:"𦼬";s:3:"䕝";s:4:"䕝";s:3:"䕡";s:4:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:3:"䕫";s:4:"䕫";s:3:"虐";s:4:"虐";s:3:"虧";s:4:"虧";s:3:"虩";s:4:"虩";s:3:"蚩";s:4:"蚩";s:3:"蚈";s:4:"蚈";s:3:"蜎";s:4:"蜎";s:3:"蛢";s:4:"蛢";s:3:"蜨";s:4:"蜨";s:3:"蝫";s:4:"蝫";s:3:"螆";s:4:"螆";s:3:"䗗";s:4:"䗗";s:3:"蟡";s:4:"蟡";s:3:"蠁";s:4:"蠁";s:3:"䗹";s:4:"䗹";s:3:"衠";s:4:"衠";s:3:"衣";s:4:"衣";s:4:"𧙧";s:4:"𧙧";s:3:"裗";s:4:"裗";s:3:"裞";s:4:"裞";s:3:"䘵";s:4:"䘵";s:3:"裺";s:4:"裺";s:3:"㒻";s:4:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:3:"䚾";s:4:"䚾";s:3:"䛇";s:4:"䛇";s:3:"誠";s:4:"誠";s:3:"豕";s:4:"豕";s:4:"𧲨";s:4:"𧲨";s:3:"貫";s:4:"貫";s:3:"賁";s:4:"賁";s:3:"贛";s:4:"贛";s:3:"起";s:4:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:3:"跋";s:4:"跋";s:3:"趼";s:4:"趼";s:3:"跰";s:4:"跰";s:4:"𠣞";s:4:"𠣞";s:3:"軔";s:4:"軔";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:3:"邔";s:4:"邔";s:3:"郱";s:4:"郱";s:3:"鄑";s:4:"鄑";s:4:"𨜮";s:4:"𨜮";s:3:"鄛";s:4:"鄛";s:3:"鈸";s:4:"鈸";s:3:"鋗";s:4:"鋗";s:3:"鋘";s:4:"鋘";s:3:"鉼";s:4:"鉼";s:3:"鏹";s:4:"鏹";s:3:"鐕";s:4:"鐕";s:4:"𨯺";s:4:"𨯺";s:3:"開";s:4:"開";s:3:"䦕";s:4:"䦕";s:3:"閷";s:4:"閷";s:4:"𨵷";s:4:"𨵷";s:3:"䧦";s:4:"䧦";s:3:"雃";s:4:"雃";s:3:"嶲";s:4:"嶲";s:3:"霣";s:4:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:3:"䩮";s:4:"䩮";s:3:"䩶";s:4:"䩶";s:3:"韠";s:4:"韠";s:4:"𩐊";s:4:"𩐊";s:3:"䪲";s:4:"䪲";s:4:"𩒖";s:4:"𩒖";s:3:"頩";s:4:"頩";s:4:"𩖶";s:4:"𩖶";s:3:"飢";s:4:"飢";s:3:"䬳";s:4:"䬳";s:3:"餩";s:4:"餩";s:3:"馧";s:4:"馧";s:3:"駂";s:4:"駂";s:3:"駾";s:4:"駾";s:3:"䯎";s:4:"䯎";s:4:"𩬰";s:4:"𩬰";s:3:"鱀";s:4:"鱀";s:3:"鳽";s:4:"鳽";s:3:"䳎";s:4:"䳎";s:3:"䳭";s:4:"䳭";s:3:"鵧";s:4:"鵧";s:4:"𪃎";s:4:"𪃎";s:3:"䳸";s:4:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:3:"麻";s:4:"麻";s:3:"䵖";s:4:"䵖";s:3:"黹";s:4:"黹";s:3:"黾";s:4:"黾";s:3:"鼅";s:4:"鼅";s:3:"鼏";s:4:"鼏";s:3:"鼖";s:4:"鼖";s:3:"鼻";s:4:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
-$utfCanonicalDecomp = unserialize( 'a:2043:{s:2:"À";s:3:"À";s:2:"Á";s:3:"Á";s:2:"Â";s:3:"Â";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Å";s:3:"Å";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"È";s:2:"É";s:3:"É";s:2:"Ê";s:3:"Ê";s:2:"Ë";s:3:"Ë";s:2:"Ì";s:3:"Ì";s:2:"Í";s:3:"Í";s:2:"Î";s:3:"Î";s:2:"Ï";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ò";s:3:"Ò";s:2:"Ó";s:3:"Ó";s:2:"Ô";s:3:"Ô";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"Ù";s:2:"Ú";s:3:"Ú";s:2:"Û";s:3:"Û";s:2:"Ü";s:3:"Ü";s:2:"Ý";s:3:"Ý";s:2:"à";s:3:"à";s:2:"á";s:3:"á";s:2:"â";s:3:"â";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"å";s:3:"å";s:2:"ç";s:3:"ç";s:2:"è";s:3:"è";s:2:"é";s:3:"é";s:2:"ê";s:3:"ê";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"ì";s:2:"í";s:3:"í";s:2:"î";s:3:"î";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"ò";s:2:"ó";s:3:"ó";s:2:"ô";s:3:"ô";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"ù";s:2:"ú";s:3:"ú";s:2:"û";s:3:"û";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"ý";s:2:"ÿ";s:3:"ÿ";s:2:"Ā";s:3:"Ā";s:2:"ā";s:3:"ā";s:2:"Ă";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ą";s:3:"Ą";s:2:"ą";s:3:"ą";s:2:"Ć";s:3:"Ć";s:2:"ć";s:3:"ć";s:2:"Ĉ";s:3:"Ĉ";s:2:"ĉ";s:3:"ĉ";s:2:"Ċ";s:3:"Ċ";s:2:"ċ";s:3:"ċ";s:2:"Č";s:3:"Č";s:2:"č";s:3:"č";s:2:"Ď";s:3:"Ď";s:2:"ď";s:3:"ď";s:2:"Ē";s:3:"Ē";s:2:"ē";s:3:"ē";s:2:"Ĕ";s:3:"Ĕ";s:2:"ĕ";s:3:"ĕ";s:2:"Ė";s:3:"Ė";s:2:"ė";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"ę";s:3:"ę";s:2:"Ě";s:3:"Ě";s:2:"ě";s:3:"ě";s:2:"Ĝ";s:3:"Ĝ";s:2:"ĝ";s:3:"ĝ";s:2:"Ğ";s:3:"Ğ";s:2:"ğ";s:3:"ğ";s:2:"Ġ";s:3:"Ġ";s:2:"ġ";s:3:"ġ";s:2:"Ģ";s:3:"Ģ";s:2:"ģ";s:3:"ģ";s:2:"Ĥ";s:3:"Ĥ";s:2:"ĥ";s:3:"ĥ";s:2:"Ĩ";s:3:"Ĩ";s:2:"ĩ";s:3:"ĩ";s:2:"Ī";s:3:"Ī";s:2:"ī";s:3:"ī";s:2:"Ĭ";s:3:"Ĭ";s:2:"ĭ";s:3:"ĭ";s:2:"Į";s:3:"Į";s:2:"į";s:3:"į";s:2:"İ";s:3:"İ";s:2:"Ĵ";s:3:"Ĵ";s:2:"ĵ";s:3:"ĵ";s:2:"Ķ";s:3:"Ķ";s:2:"ķ";s:3:"ķ";s:2:"Ĺ";s:3:"Ĺ";s:2:"ĺ";s:3:"ĺ";s:2:"Ļ";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"Ľ";s:2:"ľ";s:3:"ľ";s:2:"Ń";s:3:"Ń";s:2:"ń";s:3:"ń";s:2:"Ņ";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"Ň";s:2:"ň";s:3:"ň";s:2:"Ō";s:3:"Ō";s:2:"ō";s:3:"ō";s:2:"Ŏ";s:3:"Ŏ";s:2:"ŏ";s:3:"ŏ";s:2:"Ő";s:3:"Ő";s:2:"ő";s:3:"ő";s:2:"Ŕ";s:3:"Ŕ";s:2:"ŕ";s:3:"ŕ";s:2:"Ŗ";s:3:"Ŗ";s:2:"ŗ";s:3:"ŗ";s:2:"Ř";s:3:"Ř";s:2:"ř";s:3:"ř";s:2:"Ś";s:3:"Ś";s:2:"ś";s:3:"ś";s:2:"Ŝ";s:3:"Ŝ";s:2:"ŝ";s:3:"ŝ";s:2:"Ş";s:3:"Ş";s:2:"ş";s:3:"ş";s:2:"Š";s:3:"Š";s:2:"š";s:3:"š";s:2:"Ţ";s:3:"Ţ";s:2:"ţ";s:3:"ţ";s:2:"Ť";s:3:"Ť";s:2:"ť";s:3:"ť";s:2:"Ũ";s:3:"Ũ";s:2:"ũ";s:3:"ũ";s:2:"Ū";s:3:"Ū";s:2:"ū";s:3:"ū";s:2:"Ŭ";s:3:"Ŭ";s:2:"ŭ";s:3:"ŭ";s:2:"Ů";s:3:"Ů";s:2:"ů";s:3:"ů";s:2:"Ű";s:3:"Ű";s:2:"ű";s:3:"ű";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Ŵ";s:3:"Ŵ";s:2:"ŵ";s:3:"ŵ";s:2:"Ŷ";s:3:"Ŷ";s:2:"ŷ";s:3:"ŷ";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"Ź";s:2:"ź";s:3:"ź";s:2:"Ż";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"Ž";s:2:"ž";s:3:"ž";s:2:"Ơ";s:3:"Ơ";s:2:"ơ";s:3:"ơ";s:2:"Ư";s:3:"Ư";s:2:"ư";s:3:"ư";s:2:"Ǎ";s:3:"Ǎ";s:2:"ǎ";s:3:"ǎ";s:2:"Ǐ";s:3:"Ǐ";s:2:"ǐ";s:3:"ǐ";s:2:"Ǒ";s:3:"Ǒ";s:2:"ǒ";s:3:"ǒ";s:2:"Ǔ";s:3:"Ǔ";s:2:"ǔ";s:3:"ǔ";s:2:"Ǖ";s:5:"Ǖ";s:2:"ǖ";s:5:"ǖ";s:2:"Ǘ";s:5:"Ǘ";s:2:"ǘ";s:5:"ǘ";s:2:"Ǚ";s:5:"Ǚ";s:2:"ǚ";s:5:"ǚ";s:2:"Ǜ";s:5:"Ǜ";s:2:"ǜ";s:5:"ǜ";s:2:"Ǟ";s:5:"Ǟ";s:2:"ǟ";s:5:"ǟ";s:2:"Ǡ";s:5:"Ǡ";s:2:"ǡ";s:5:"ǡ";s:2:"Ǣ";s:4:"Ǣ";s:2:"ǣ";s:4:"ǣ";s:2:"Ǧ";s:3:"Ǧ";s:2:"ǧ";s:3:"ǧ";s:2:"Ǩ";s:3:"Ǩ";s:2:"ǩ";s:3:"ǩ";s:2:"Ǫ";s:3:"Ǫ";s:2:"ǫ";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"ǭ";s:5:"ǭ";s:2:"Ǯ";s:4:"Ǯ";s:2:"ǯ";s:4:"ǯ";s:2:"ǰ";s:3:"ǰ";s:2:"Ǵ";s:3:"Ǵ";s:2:"ǵ";s:3:"ǵ";s:2:"Ǹ";s:3:"Ǹ";s:2:"ǹ";s:3:"ǹ";s:2:"Ǻ";s:5:"Ǻ";s:2:"ǻ";s:5:"ǻ";s:2:"Ǽ";s:4:"Ǽ";s:2:"ǽ";s:4:"ǽ";s:2:"Ǿ";s:4:"Ǿ";s:2:"ǿ";s:4:"ǿ";s:2:"Ȁ";s:3:"Ȁ";s:2:"ȁ";s:3:"ȁ";s:2:"Ȃ";s:3:"Ȃ";s:2:"ȃ";s:3:"ȃ";s:2:"Ȅ";s:3:"Ȅ";s:2:"ȅ";s:3:"ȅ";s:2:"Ȇ";s:3:"Ȇ";s:2:"ȇ";s:3:"ȇ";s:2:"Ȉ";s:3:"Ȉ";s:2:"ȉ";s:3:"ȉ";s:2:"Ȋ";s:3:"Ȋ";s:2:"ȋ";s:3:"ȋ";s:2:"Ȍ";s:3:"Ȍ";s:2:"ȍ";s:3:"ȍ";s:2:"Ȏ";s:3:"Ȏ";s:2:"ȏ";s:3:"ȏ";s:2:"Ȑ";s:3:"Ȑ";s:2:"ȑ";s:3:"ȑ";s:2:"Ȓ";s:3:"Ȓ";s:2:"ȓ";s:3:"ȓ";s:2:"Ȕ";s:3:"Ȕ";s:2:"ȕ";s:3:"ȕ";s:2:"Ȗ";s:3:"Ȗ";s:2:"ȗ";s:3:"ȗ";s:2:"Ș";s:3:"Ș";s:2:"ș";s:3:"ș";s:2:"Ț";s:3:"Ț";s:2:"ț";s:3:"ț";s:2:"Ȟ";s:3:"Ȟ";s:2:"ȟ";s:3:"ȟ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"ȩ";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"ȫ";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"ȭ";s:5:"ȭ";s:2:"Ȯ";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"Ȱ";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"Ȳ";s:2:"ȳ";s:3:"ȳ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:2:"̈́";s:4:"̈́";s:2:"ʹ";s:2:"ʹ";s:2:";";s:1:";";s:2:"΅";s:4:"΅";s:2:"Ά";s:4:"Ά";s:2:"·";s:2:"·";s:2:"Έ";s:4:"Έ";s:2:"Ή";s:4:"Ή";s:2:"Ί";s:4:"Ί";s:2:"Ό";s:4:"Ό";s:2:"Ύ";s:4:"Ύ";s:2:"Ώ";s:4:"Ώ";s:2:"ΐ";s:6:"ΐ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"ά";s:2:"έ";s:4:"έ";s:2:"ή";s:4:"ή";s:2:"ί";s:4:"ί";s:2:"ΰ";s:6:"ΰ";s:2:"ϊ";s:4:"ϊ";s:2:"ϋ";s:4:"ϋ";s:2:"ό";s:4:"ό";s:2:"ύ";s:4:"ύ";s:2:"ώ";s:4:"ώ";s:2:"ϓ";s:4:"ϓ";s:2:"ϔ";s:4:"ϔ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ё";s:4:"Ё";s:2:"Ѓ";s:4:"Ѓ";s:2:"Ї";s:4:"Ї";s:2:"Ќ";s:4:"Ќ";s:2:"Ѝ";s:4:"Ѝ";s:2:"Ў";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"ѐ";s:4:"ѐ";s:2:"ё";s:4:"ё";s:2:"ѓ";s:4:"ѓ";s:2:"ї";s:4:"ї";s:2:"ќ";s:4:"ќ";s:2:"ѝ";s:4:"ѝ";s:2:"ў";s:4:"ў";s:2:"Ѷ";s:4:"Ѷ";s:2:"ѷ";s:4:"ѷ";s:2:"Ӂ";s:4:"Ӂ";s:2:"ӂ";s:4:"ӂ";s:2:"Ӑ";s:4:"Ӑ";s:2:"ӑ";s:4:"ӑ";s:2:"Ӓ";s:4:"Ӓ";s:2:"ӓ";s:4:"ӓ";s:2:"Ӗ";s:4:"Ӗ";s:2:"ӗ";s:4:"ӗ";s:2:"Ӛ";s:4:"Ӛ";s:2:"ӛ";s:4:"ӛ";s:2:"Ӝ";s:4:"Ӝ";s:2:"ӝ";s:4:"ӝ";s:2:"Ӟ";s:4:"Ӟ";s:2:"ӟ";s:4:"ӟ";s:2:"Ӣ";s:4:"Ӣ";s:2:"ӣ";s:4:"ӣ";s:2:"Ӥ";s:4:"Ӥ";s:2:"ӥ";s:4:"ӥ";s:2:"Ӧ";s:4:"Ӧ";s:2:"ӧ";s:4:"ӧ";s:2:"Ӫ";s:4:"Ӫ";s:2:"ӫ";s:4:"ӫ";s:2:"Ӭ";s:4:"Ӭ";s:2:"ӭ";s:4:"ӭ";s:2:"Ӯ";s:4:"Ӯ";s:2:"ӯ";s:4:"ӯ";s:2:"Ӱ";s:4:"Ӱ";s:2:"ӱ";s:4:"ӱ";s:2:"Ӳ";s:4:"Ӳ";s:2:"ӳ";s:4:"ӳ";s:2:"Ӵ";s:4:"Ӵ";s:2:"ӵ";s:4:"ӵ";s:2:"Ӹ";s:4:"Ӹ";s:2:"ӹ";s:4:"ӹ";s:2:"آ";s:4:"آ";s:2:"أ";s:4:"أ";s:2:"ؤ";s:4:"ؤ";s:2:"إ";s:4:"إ";s:2:"ئ";s:4:"ئ";s:2:"ۀ";s:4:"ۀ";s:2:"ۂ";s:4:"ۂ";s:2:"ۓ";s:4:"ۓ";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"ढ़";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"ঢ়";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"ਖ਼";s:6:"ਖ਼";s:3:"ਗ਼";s:6:"ਗ਼";s:3:"ਜ਼";s:6:"ਜ਼";s:3:"ਫ਼";s:6:"ਫ਼";s:3:"ୈ";s:6:"ୈ";s:3:"ୋ";s:6:"ୋ";s:3:"ୌ";s:6:"ୌ";s:3:"ଡ଼";s:6:"ଡ଼";s:3:"ଢ଼";s:6:"ଢ଼";s:3:"ஔ";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"ೀ";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"ේ";s:6:"ේ";s:3:"ො";s:6:"ො";s:3:"ෝ";s:9:"ෝ";s:3:"ෞ";s:6:"ෞ";s:3:"གྷ";s:6:"གྷ";s:3:"ཌྷ";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཱྀ";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"ྜྷ";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"ྐྵ";s:3:"ဦ";s:6:"ဦ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"ᬎ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"ᭀ";s:6:"ᭀ";s:3:"ᭁ";s:6:"ᭁ";s:3:"ᭃ";s:6:"ᭃ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"Ḉ";s:3:"ḉ";s:5:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:3:"Ḕ";s:5:"Ḕ";s:3:"ḕ";s:5:"ḕ";s:3:"Ḗ";s:5:"Ḗ";s:3:"ḗ";s:5:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:3:"Ḝ";s:5:"Ḝ";s:3:"ḝ";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:3:"Ḯ";s:5:"Ḯ";s:3:"ḯ";s:5:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:3:"Ṍ";s:5:"Ṍ";s:3:"ṍ";s:5:"ṍ";s:3:"Ṏ";s:5:"Ṏ";s:3:"ṏ";s:5:"ṏ";s:3:"Ṑ";s:5:"Ṑ";s:3:"ṑ";s:5:"ṑ";s:3:"Ṓ";s:5:"Ṓ";s:3:"ṓ";s:5:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:3:"Ṝ";s:5:"Ṝ";s:3:"ṝ";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:3:"Ṥ";s:5:"Ṥ";s:3:"ṥ";s:5:"ṥ";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:3:"Ṹ";s:5:"Ṹ";s:3:"ṹ";s:5:"ṹ";s:3:"Ṻ";s:5:"Ṻ";s:3:"ṻ";s:5:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:3:"ẛ";s:4:"ẛ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"Ấ";s:3:"ấ";s:5:"ấ";s:3:"Ầ";s:5:"Ầ";s:3:"ầ";s:5:"ầ";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"Ắ";s:3:"ắ";s:5:"ắ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"Ế";s:3:"ế";s:5:"ế";s:3:"Ề";s:5:"Ề";s:3:"ề";s:5:"ề";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"ễ";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:3:"Ố";s:5:"Ố";s:3:"ố";s:5:"ố";s:3:"Ồ";s:5:"Ồ";s:3:"ồ";s:5:"ồ";s:3:"Ổ";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"Ỗ";s:5:"Ỗ";s:3:"ỗ";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"ộ";s:5:"ộ";s:3:"Ớ";s:5:"Ớ";s:3:"ớ";s:5:"ớ";s:3:"Ờ";s:5:"Ờ";s:3:"ờ";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"Ỡ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"Ứ";s:3:"ứ";s:5:"ứ";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"ử";s:5:"ử";s:3:"Ữ";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"Ự";s:5:"Ự";s:3:"ự";s:5:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"ἀ";s:4:"ἀ";s:3:"ἁ";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἄ";s:3:"ἅ";s:6:"ἅ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"Ἄ";s:3:"Ἅ";s:6:"Ἅ";s:3:"Ἆ";s:6:"Ἆ";s:3:"Ἇ";s:6:"Ἇ";s:3:"ἐ";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"ἒ";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"ἔ";s:6:"ἔ";s:3:"ἕ";s:6:"ἕ";s:3:"Ἐ";s:4:"Ἐ";s:3:"Ἑ";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"Ἓ";s:6:"Ἓ";s:3:"Ἔ";s:6:"Ἔ";s:3:"Ἕ";s:6:"Ἕ";s:3:"ἠ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"ἢ";s:6:"ἢ";s:3:"ἣ";s:6:"ἣ";s:3:"ἤ";s:6:"ἤ";s:3:"ἥ";s:6:"ἥ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"Ἤ";s:3:"Ἥ";s:6:"Ἥ";s:3:"Ἦ";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"ἰ";s:4:"ἰ";s:3:"ἱ";s:4:"ἱ";s:3:"ἲ";s:6:"ἲ";s:3:"ἳ";s:6:"ἳ";s:3:"ἴ";s:6:"ἴ";s:3:"ἵ";s:6:"ἵ";s:3:"ἶ";s:6:"ἶ";s:3:"ἷ";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"Ἱ";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"Ἳ";s:6:"Ἳ";s:3:"Ἴ";s:6:"Ἴ";s:3:"Ἵ";s:6:"Ἵ";s:3:"Ἶ";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"ὀ";s:4:"ὀ";s:3:"ὁ";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὄ";s:3:"ὅ";s:6:"ὅ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"Ὄ";s:3:"Ὅ";s:6:"Ὅ";s:3:"ὐ";s:4:"ὐ";s:3:"ὑ";s:4:"ὑ";s:3:"ὒ";s:6:"ὒ";s:3:"ὓ";s:6:"ὓ";s:3:"ὔ";s:6:"ὔ";s:3:"ὕ";s:6:"ὕ";s:3:"ὖ";s:6:"ὖ";s:3:"ὗ";s:6:"ὗ";s:3:"Ὑ";s:4:"Ὑ";s:3:"Ὓ";s:6:"Ὓ";s:3:"Ὕ";s:6:"Ὕ";s:3:"Ὗ";s:6:"Ὗ";s:3:"ὠ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"ὢ";s:6:"ὢ";s:3:"ὣ";s:6:"ὣ";s:3:"ὤ";s:6:"ὤ";s:3:"ὥ";s:6:"ὥ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"Ὤ";s:3:"Ὥ";s:6:"Ὥ";s:3:"Ὦ";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"ὰ";s:4:"ὰ";s:3:"ά";s:4:"ά";s:3:"ὲ";s:4:"ὲ";s:3:"έ";s:4:"έ";s:3:"ὴ";s:4:"ὴ";s:3:"ή";s:4:"ή";s:3:"ὶ";s:4:"ὶ";s:3:"ί";s:4:"ί";s:3:"ὸ";s:4:"ὸ";s:3:"ό";s:4:"ό";s:3:"ὺ";s:4:"ὺ";s:3:"ύ";s:4:"ύ";s:3:"ὼ";s:4:"ὼ";s:3:"ώ";s:4:"ώ";s:3:"ᾀ";s:6:"ᾀ";s:3:"ᾁ";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ᾄ";s:3:"ᾅ";s:8:"ᾅ";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ᾌ";s:3:"ᾍ";s:8:"ᾍ";s:3:"ᾎ";s:8:"ᾎ";s:3:"ᾏ";s:8:"ᾏ";s:3:"ᾐ";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"ᾒ";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"ᾔ";s:8:"ᾔ";s:3:"ᾕ";s:8:"ᾕ";s:3:"ᾖ";s:8:"ᾖ";s:3:"ᾗ";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"ᾙ";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"ᾛ";s:8:"ᾛ";s:3:"ᾜ";s:8:"ᾜ";s:3:"ᾝ";s:8:"ᾝ";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"ᾠ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"ᾢ";s:8:"ᾢ";s:3:"ᾣ";s:8:"ᾣ";s:3:"ᾤ";s:8:"ᾤ";s:3:"ᾥ";s:8:"ᾥ";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ᾬ";s:3:"ᾭ";s:8:"ᾭ";s:3:"ᾮ";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"ᾰ";s:4:"ᾰ";s:3:"ᾱ";s:4:"ᾱ";s:3:"ᾲ";s:6:"ᾲ";s:3:"ᾳ";s:4:"ᾳ";s:3:"ᾴ";s:6:"ᾴ";s:3:"ᾶ";s:4:"ᾶ";s:3:"ᾷ";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"Ᾱ";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"Ά";s:4:"Ά";s:3:"ᾼ";s:4:"ᾼ";s:3:"ι";s:2:"ι";s:3:"῁";s:4:"῁";s:3:"ῂ";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"ῄ";s:6:"ῄ";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"Έ";s:3:"Ὴ";s:4:"Ὴ";s:3:"Ή";s:4:"Ή";s:3:"ῌ";s:4:"ῌ";s:3:"῍";s:5:"῍";s:3:"῎";s:5:"῎";s:3:"῏";s:5:"῏";s:3:"ῐ";s:4:"ῐ";s:3:"ῑ";s:4:"ῑ";s:3:"ῒ";s:6:"ῒ";s:3:"ΐ";s:6:"ΐ";s:3:"ῖ";s:4:"ῖ";s:3:"ῗ";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"Ῑ";s:4:"Ῑ";s:3:"Ὶ";s:4:"Ὶ";s:3:"Ί";s:4:"Ί";s:3:"῝";s:5:"῝";s:3:"῞";s:5:"῞";s:3:"῟";s:5:"῟";s:3:"ῠ";s:4:"ῠ";s:3:"ῡ";s:4:"ῡ";s:3:"ῢ";s:6:"ῢ";s:3:"ΰ";s:6:"ΰ";s:3:"ῤ";s:4:"ῤ";s:3:"ῥ";s:4:"ῥ";s:3:"ῦ";s:4:"ῦ";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"Ῡ";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"Ύ";s:4:"Ύ";s:3:"Ῥ";s:4:"Ῥ";s:3:"῭";s:4:"῭";s:3:"΅";s:4:"΅";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"ῴ";s:6:"ῴ";s:3:"ῶ";s:4:"ῶ";s:3:"ῷ";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"Ό";s:3:"Ὼ";s:4:"Ὼ";s:3:"Ώ";s:4:"Ώ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:2:"´";s:3:" ";s:3:" ";s:3:" ";s:3:" ";s:3:"Ω";s:2:"Ω";s:3:"K";s:1:"K";s:3:"Å";s:3:"Å";s:3:"↚";s:5:"↚";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"⇍";s:5:"⇍";s:3:"⇎";s:5:"⇎";s:3:"⇏";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"≁";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"⊁";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"⋠";s:5:"⋠";s:3:"⋡";s:5:"⋡";s:3:"⋢";s:5:"⋢";s:3:"⋣";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"⋫";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"⋭";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"⫝̸";s:5:"⫝̸";s:3:"が";s:6:"が";s:3:"ぎ";s:6:"ぎ";s:3:"ぐ";s:6:"ぐ";s:3:"げ";s:6:"げ";s:3:"ご";s:6:"ご";s:3:"ざ";s:6:"ざ";s:3:"じ";s:6:"じ";s:3:"ず";s:6:"ず";s:3:"ぜ";s:6:"ぜ";s:3:"ぞ";s:6:"ぞ";s:3:"だ";s:6:"だ";s:3:"ぢ";s:6:"ぢ";s:3:"づ";s:6:"づ";s:3:"で";s:6:"で";s:3:"ど";s:6:"ど";s:3:"ば";s:6:"ば";s:3:"ぱ";s:6:"ぱ";s:3:"び";s:6:"び";s:3:"ぴ";s:6:"ぴ";s:3:"ぶ";s:6:"ぶ";s:3:"ぷ";s:6:"ぷ";s:3:"べ";s:6:"べ";s:3:"ぺ";s:6:"ぺ";s:3:"ぼ";s:6:"ぼ";s:3:"ぽ";s:6:"ぽ";s:3:"ゔ";s:6:"ゔ";s:3:"ゞ";s:6:"ゞ";s:3:"ガ";s:6:"ガ";s:3:"ギ";s:6:"ギ";s:3:"グ";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ゴ";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ジ";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ダ";s:3:"ヂ";s:6:"ヂ";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"バ";s:6:"バ";s:3:"パ";s:6:"パ";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ポ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"樂";s:3:"樂";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"異";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:3:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"侮";s:3:"僧";s:3:"僧";s:3:"免";s:3:"免";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"屮";s:3:"悔";s:3:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:3:"憎";s:3:"懲";s:3:"懲";s:3:"敏";s:3:"敏";s:3:"既";s:3:"既";s:3:"暑";s:3:"暑";s:3:"梅";s:3:"梅";s:3:"海";s:3:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:3:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:3:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"練";s:3:"練";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:3:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"著";s:3:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"並";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"勺";s:3:"勺";s:3:"喝";s:3:"喝";s:3:"啕";s:3:"啕";s:3:"喙";s:3:"喙";s:3:"嗢";s:3:"嗢";s:3:"塚";s:3:"塚";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"慎";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"慠";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"晴";s:3:"晴";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"流";s:3:"滛";s:3:"滛";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"漢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"煮";s:3:"瞧";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"盛";s:3:"直";s:3:"直";s:3:"睊";s:3:"睊";s:3:"着";s:3:"着";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"練";s:3:"練";s:3:"缾";s:3:"缾";s:3:"者";s:3:"者";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:3:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"請";s:3:"謁";s:3:"謁";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"諭";s:3:"謹";s:3:"謹";s:3:"變";s:3:"變";s:3:"贈";s:3:"贈";s:3:"輸";s:3:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"靖";s:3:"韛";s:3:"韛";s:3:"響";s:3:"響";s:3:"頋";s:3:"頋";s:3:"頻";s:3:"頻";s:3:"鬒";s:3:"鬒";s:3:"龜";s:3:"龜";s:3:"𢡊";s:4:"𢡊";s:3:"𢡄";s:4:"𢡄";s:3:"𣏕";s:4:"𣏕";s:3:"㮝";s:3:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:3:"䀹";s:3:"𥉉";s:4:"𥉉";s:3:"𥳐";s:4:"𥳐";s:3:"𧻓";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:3:"יִ";s:4:"יִ";s:3:"ײַ";s:4:"ײַ";s:3:"שׁ";s:4:"שׁ";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּׁ";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"אַ";s:3:"אָ";s:4:"אָ";s:3:"אּ";s:4:"אּ";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"גּ";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"הּ";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"זּ";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"יּ";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"כּ";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"נּ";s:4:"נּ";s:3:"סּ";s:4:"סּ";s:3:"ףּ";s:4:"ףּ";s:3:"פּ";s:4:"פּ";s:3:"צּ";s:4:"צּ";s:3:"קּ";s:4:"קּ";s:3:"רּ";s:4:"רּ";s:3:"שּ";s:4:"שּ";s:3:"תּ";s:4:"תּ";s:3:"וֹ";s:4:"וֹ";s:3:"בֿ";s:4:"בֿ";s:3:"כֿ";s:4:"כֿ";s:3:"פֿ";s:4:"פֿ";s:4:"𝅗𝅥";s:8:"𝅗𝅥";s:4:"𝅘𝅥";s:8:"𝅘𝅥";s:4:"𝅘𝅥𝅮";s:12:"𝅘𝅥𝅮";s:4:"𝅘𝅥𝅯";s:12:"𝅘𝅥𝅯";s:4:"𝅘𝅥𝅰";s:12:"𝅘𝅥𝅰";s:4:"𝅘𝅥𝅱";s:12:"𝅘𝅥𝅱";s:4:"𝅘𝅥𝅲";s:12:"𝅘𝅥𝅲";s:4:"𝆹𝅥";s:8:"𝆹𝅥";s:4:"𝆺𝅥";s:8:"𝆺𝅥";s:4:"𝆹𝅥𝅮";s:12:"𝆹𝅥𝅮";s:4:"𝆺𝅥𝅮";s:12:"𝆺𝅥𝅮";s:4:"𝆹𝅥𝅯";s:12:"𝆹𝅥𝅯";s:4:"𝆺𝅥𝅯";s:12:"𝆺𝅥𝅯";s:4:"丽";s:3:"丽";s:4:"丸";s:3:"丸";s:4:"乁";s:3:"乁";s:4:"𠄢";s:4:"𠄢";s:4:"你";s:3:"你";s:4:"侮";s:3:"侮";s:4:"侻";s:3:"侻";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"偺";s:4:"備";s:3:"備";s:4:"僧";s:3:"僧";s:4:"像";s:3:"像";s:4:"㒞";s:3:"㒞";s:4:"𠘺";s:4:"𠘺";s:4:"免";s:3:"免";s:4:"兔";s:3:"兔";s:4:"兤";s:3:"兤";s:4:"具";s:3:"具";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"㒹";s:4:"內";s:3:"內";s:4:"再";s:3:"再";s:4:"𠕋";s:4:"𠕋";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"凵";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"㓟";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"卉";s:4:"卑";s:3:"卑";s:4:"博";s:3:"博";s:4:"即";s:3:"即";s:4:"卽";s:3:"卽";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"灰";s:4:"及";s:3:"及";s:4:"叟";s:3:"叟";s:4:"𠭣";s:4:"𠭣";s:4:"叫";s:3:"叫";s:4:"叱";s:3:"叱";s:4:"吆";s:3:"吆";s:4:"咞";s:3:"咞";s:4:"吸";s:3:"吸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"咢";s:4:"哶";s:3:"哶";s:4:"唐";s:3:"唐";s:4:"啓";s:3:"啓";s:4:"啣";s:3:"啣";s:4:"善";s:3:"善";s:4:"善";s:3:"善";s:4:"喙";s:3:"喙";s:4:"喫";s:3:"喫";s:4:"喳";s:3:"喳";s:4:"嗂";s:3:"嗂";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"圗";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"噴";s:3:"噴";s:4:"切";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"堍";s:4:"型";s:3:"型";s:4:"堲";s:3:"堲";s:4:"報";s:3:"報";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"多";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"㛮";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"将";s:4:"当";s:3:"当";s:4:"尢";s:3:"尢";s:4:"㞁";s:3:"㞁";s:4:"屠";s:3:"屠";s:4:"屮";s:3:"屮";s:4:"峀";s:3:"峀";s:4:"岍";s:3:"岍";s:4:"𡷤";s:4:"𡷤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"𡷦";s:4:"嵮";s:3:"嵮";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"嵼";s:4:"巡";s:3:"巡";s:4:"巢";s:3:"巢";s:4:"㠯";s:3:"㠯";s:4:"巽";s:3:"巽";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"㡢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"庶";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"𪎒";s:4:"𪎒";s:4:"廾";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"舁";s:4:"弢";s:3:"弢";s:4:"弢";s:3:"弢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"形";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"忍";s:3:"忍";s:4:"志";s:3:"志";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"悁";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"悔";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"慈";s:4:"慌";s:3:"慌";s:4:"慎";s:3:"慎";s:4:"慌";s:3:"慌";s:4:"慺";s:3:"慺";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"成";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"扝";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"拔";s:4:"捐";s:3:"捐";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"捨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"揤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"搢";s:4:"揅";s:3:"揅";s:4:"掩";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"摩";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"撝";s:4:"摷";s:3:"摷";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"敏";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"旣";s:4:"書";s:3:"書";s:4:"晉";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"暑";s:3:"暑";s:4:"㬈";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"暜";s:4:"肭";s:3:"肭";s:4:"䏙";s:3:"䏙";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"杞";s:4:"杓";s:3:"杓";s:4:"𣏃";s:4:"𣏃";s:4:"㭉";s:3:"㭉";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"枅";s:4:"桒";s:3:"桒";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"栟";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"㮝";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"櫛";s:4:"㰘";s:3:"㰘";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"歔";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"歲";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"泍";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"洖";s:4:"派";s:3:"派";s:4:"海";s:3:"海";s:4:"流";s:3:"流";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"洴";s:4:"港";s:3:"港";s:4:"湮";s:3:"湮";s:4:"㴳";s:3:"㴳";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"𣻑";s:4:"𣻑";s:4:"淹";s:3:"淹";s:4:"潮";s:3:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"灊";s:4:"災";s:3:"災";s:4:"灷";s:3:"灷";s:4:"炭";s:3:"炭";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"煅";s:4:"𤉣";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"牐";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"獺";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"瑜";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"璅";s:4:"瓊";s:3:"瓊";s:4:"㼛";s:3:"㼛";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"異";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"直";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"睊";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"瞋";s:4:"䁆";s:3:"䁆";s:4:"䂖";s:3:"䂖";s:4:"𥐝";s:4:"𥐝";s:4:"硎";s:3:"硎";s:4:"碌";s:3:"碌";s:4:"磌";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"福";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"穀";s:4:"穊";s:3:"穊";s:4:"穏";s:3:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"竮";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"糒";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"糣";s:4:"紀";s:3:"紀";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"絣";s:4:"䌁";s:3:"䌁";s:4:"緇";s:3:"緇";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"繅";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"䍙";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"聠";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"聰";s:4:"𣍟";s:4:"𣍟";s:4:"䏕";s:3:"䏕";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"䐋";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"舁";s:4:"舄";s:3:"舄";s:4:"辞";s:3:"辞";s:4:"䑫";s:3:"䑫";s:4:"芑";s:3:"芑";s:4:"芋";s:3:"芋";s:4:"芝";s:3:"芝";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"若";s:4:"茝";s:3:"茝";s:4:"荣";s:3:"荣";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"莽";s:3:"莽";s:4:"菧";s:3:"菧";s:4:"著";s:3:"著";s:4:"荓";s:3:"荓";s:4:"菊";s:3:"菊";s:4:"菌";s:3:"菌";s:4:"菜";s:3:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"蔖";s:4:"𧏊";s:4:"𧏊";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"䕝";s:4:"䕡";s:3:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"䕫";s:4:"虐";s:3:"虐";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"蚩";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"蝹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"蝫";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"䗗";s:4:"蟡";s:3:"蟡";s:4:"蠁";s:3:"蠁";s:4:"䗹";s:3:"䗹";s:4:"衠";s:3:"衠";s:4:"衣";s:3:"衣";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"䚾";s:3:"䚾";s:4:"䛇";s:3:"䛇";s:4:"誠";s:3:"誠";s:4:"諭";s:3:"諭";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"賁";s:4:"贛";s:3:"贛";s:4:"起";s:3:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:4:"跋";s:3:"跋";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"跰";s:4:"𠣞";s:4:"𠣞";s:4:"軔";s:3:"軔";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"邔";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"鄑";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"鄛";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"鋗";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"鏹";s:4:"鐕";s:3:"鐕";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"開";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"閷";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"䩮";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"𩐊";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"𩒖";s:4:"頋";s:3:"頋";s:4:"頋";s:3:"頋";s:4:"頩";s:3:"頩";s:4:"𩖶";s:4:"𩖶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"鱀";s:4:"鳽";s:3:"鳽";s:4:"䳎";s:3:"䳎";s:4:"䳭";s:3:"䳭";s:4:"鵧";s:3:"鵧";s:4:"𪃎";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"䵖";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"鼅";s:4:"鼏";s:3:"鼏";s:4:"鼖";s:3:"鼖";s:4:"鼻";s:3:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
-$utfCheckNFC = unserialize( 'a:1217:{s:2:"̀";s:1:"N";s:2:"́";s:1:"N";s:2:"̓";s:1:"N";s:2:"̈́";s:1:"N";s:2:"ʹ";s:1:"N";s:2:";";s:1:"N";s:2:"·";s:1:"N";s:3:"क़";s:1:"N";s:3:"ख़";s:1:"N";s:3:"ग़";s:1:"N";s:3:"ज़";s:1:"N";s:3:"ड़";s:1:"N";s:3:"ढ़";s:1:"N";s:3:"फ़";s:1:"N";s:3:"य़";s:1:"N";s:3:"ড়";s:1:"N";s:3:"ঢ়";s:1:"N";s:3:"য়";s:1:"N";s:3:"ਲ਼";s:1:"N";s:3:"ਸ਼";s:1:"N";s:3:"ਖ਼";s:1:"N";s:3:"ਗ਼";s:1:"N";s:3:"ਜ਼";s:1:"N";s:3:"ਫ਼";s:1:"N";s:3:"ଡ଼";s:1:"N";s:3:"ଢ଼";s:1:"N";s:3:"གྷ";s:1:"N";s:3:"ཌྷ";s:1:"N";s:3:"དྷ";s:1:"N";s:3:"བྷ";s:1:"N";s:3:"ཛྷ";s:1:"N";s:3:"ཀྵ";s:1:"N";s:3:"ཱི";s:1:"N";s:3:"ཱུ";s:1:"N";s:3:"ྲྀ";s:1:"N";s:3:"ླྀ";s:1:"N";s:3:"ཱྀ";s:1:"N";s:3:"ྒྷ";s:1:"N";s:3:"ྜྷ";s:1:"N";s:3:"ྡྷ";s:1:"N";s:3:"ྦྷ";s:1:"N";s:3:"ྫྷ";s:1:"N";s:3:"ྐྵ";s:1:"N";s:3:"ά";s:1:"N";s:3:"έ";s:1:"N";s:3:"ή";s:1:"N";s:3:"ί";s:1:"N";s:3:"ό";s:1:"N";s:3:"ύ";s:1:"N";s:3:"ώ";s:1:"N";s:3:"Ά";s:1:"N";s:3:"ι";s:1:"N";s:3:"Έ";s:1:"N";s:3:"Ή";s:1:"N";s:3:"ΐ";s:1:"N";s:3:"Ί";s:1:"N";s:3:"ΰ";s:1:"N";s:3:"Ύ";s:1:"N";s:3:"΅";s:1:"N";s:3:"`";s:1:"N";s:3:"Ό";s:1:"N";s:3:"Ώ";s:1:"N";s:3:"´";s:1:"N";s:3:" ";s:1:"N";s:3:" ";s:1:"N";s:3:"Ω";s:1:"N";s:3:"K";s:1:"N";s:3:"Å";s:1:"N";s:3:"〈";s:1:"N";s:3:"〉";s:1:"N";s:3:"⫝̸";s:1:"N";s:3:"豈";s:1:"N";s:3:"更";s:1:"N";s:3:"車";s:1:"N";s:3:"賈";s:1:"N";s:3:"滑";s:1:"N";s:3:"串";s:1:"N";s:3:"句";s:1:"N";s:3:"龜";s:1:"N";s:3:"龜";s:1:"N";s:3:"契";s:1:"N";s:3:"金";s:1:"N";s:3:"喇";s:1:"N";s:3:"奈";s:1:"N";s:3:"懶";s:1:"N";s:3:"癩";s:1:"N";s:3:"羅";s:1:"N";s:3:"蘿";s:1:"N";s:3:"螺";s:1:"N";s:3:"裸";s:1:"N";s:3:"邏";s:1:"N";s:3:"樂";s:1:"N";s:3:"洛";s:1:"N";s:3:"烙";s:1:"N";s:3:"珞";s:1:"N";s:3:"落";s:1:"N";s:3:"酪";s:1:"N";s:3:"駱";s:1:"N";s:3:"亂";s:1:"N";s:3:"卵";s:1:"N";s:3:"欄";s:1:"N";s:3:"爛";s:1:"N";s:3:"蘭";s:1:"N";s:3:"鸞";s:1:"N";s:3:"嵐";s:1:"N";s:3:"濫";s:1:"N";s:3:"藍";s:1:"N";s:3:"襤";s:1:"N";s:3:"拉";s:1:"N";s:3:"臘";s:1:"N";s:3:"蠟";s:1:"N";s:3:"廊";s:1:"N";s:3:"朗";s:1:"N";s:3:"浪";s:1:"N";s:3:"狼";s:1:"N";s:3:"郎";s:1:"N";s:3:"來";s:1:"N";s:3:"冷";s:1:"N";s:3:"勞";s:1:"N";s:3:"擄";s:1:"N";s:3:"櫓";s:1:"N";s:3:"爐";s:1:"N";s:3:"盧";s:1:"N";s:3:"老";s:1:"N";s:3:"蘆";s:1:"N";s:3:"虜";s:1:"N";s:3:"路";s:1:"N";s:3:"露";s:1:"N";s:3:"魯";s:1:"N";s:3:"鷺";s:1:"N";s:3:"碌";s:1:"N";s:3:"祿";s:1:"N";s:3:"綠";s:1:"N";s:3:"菉";s:1:"N";s:3:"錄";s:1:"N";s:3:"鹿";s:1:"N";s:3:"論";s:1:"N";s:3:"壟";s:1:"N";s:3:"弄";s:1:"N";s:3:"籠";s:1:"N";s:3:"聾";s:1:"N";s:3:"牢";s:1:"N";s:3:"磊";s:1:"N";s:3:"賂";s:1:"N";s:3:"雷";s:1:"N";s:3:"壘";s:1:"N";s:3:"屢";s:1:"N";s:3:"樓";s:1:"N";s:3:"淚";s:1:"N";s:3:"漏";s:1:"N";s:3:"累";s:1:"N";s:3:"縷";s:1:"N";s:3:"陋";s:1:"N";s:3:"勒";s:1:"N";s:3:"肋";s:1:"N";s:3:"凜";s:1:"N";s:3:"凌";s:1:"N";s:3:"稜";s:1:"N";s:3:"綾";s:1:"N";s:3:"菱";s:1:"N";s:3:"陵";s:1:"N";s:3:"讀";s:1:"N";s:3:"拏";s:1:"N";s:3:"樂";s:1:"N";s:3:"諾";s:1:"N";s:3:"丹";s:1:"N";s:3:"寧";s:1:"N";s:3:"怒";s:1:"N";s:3:"率";s:1:"N";s:3:"異";s:1:"N";s:3:"北";s:1:"N";s:3:"磻";s:1:"N";s:3:"便";s:1:"N";s:3:"復";s:1:"N";s:3:"不";s:1:"N";s:3:"泌";s:1:"N";s:3:"數";s:1:"N";s:3:"索";s:1:"N";s:3:"參";s:1:"N";s:3:"塞";s:1:"N";s:3:"省";s:1:"N";s:3:"葉";s:1:"N";s:3:"說";s:1:"N";s:3:"殺";s:1:"N";s:3:"辰";s:1:"N";s:3:"沈";s:1:"N";s:3:"拾";s:1:"N";s:3:"若";s:1:"N";s:3:"掠";s:1:"N";s:3:"略";s:1:"N";s:3:"亮";s:1:"N";s:3:"兩";s:1:"N";s:3:"凉";s:1:"N";s:3:"梁";s:1:"N";s:3:"糧";s:1:"N";s:3:"良";s:1:"N";s:3:"諒";s:1:"N";s:3:"量";s:1:"N";s:3:"勵";s:1:"N";s:3:"呂";s:1:"N";s:3:"女";s:1:"N";s:3:"廬";s:1:"N";s:3:"旅";s:1:"N";s:3:"濾";s:1:"N";s:3:"礪";s:1:"N";s:3:"閭";s:1:"N";s:3:"驪";s:1:"N";s:3:"麗";s:1:"N";s:3:"黎";s:1:"N";s:3:"力";s:1:"N";s:3:"曆";s:1:"N";s:3:"歷";s:1:"N";s:3:"轢";s:1:"N";s:3:"年";s:1:"N";s:3:"憐";s:1:"N";s:3:"戀";s:1:"N";s:3:"撚";s:1:"N";s:3:"漣";s:1:"N";s:3:"煉";s:1:"N";s:3:"璉";s:1:"N";s:3:"秊";s:1:"N";s:3:"練";s:1:"N";s:3:"聯";s:1:"N";s:3:"輦";s:1:"N";s:3:"蓮";s:1:"N";s:3:"連";s:1:"N";s:3:"鍊";s:1:"N";s:3:"列";s:1:"N";s:3:"劣";s:1:"N";s:3:"咽";s:1:"N";s:3:"烈";s:1:"N";s:3:"裂";s:1:"N";s:3:"說";s:1:"N";s:3:"廉";s:1:"N";s:3:"念";s:1:"N";s:3:"捻";s:1:"N";s:3:"殮";s:1:"N";s:3:"簾";s:1:"N";s:3:"獵";s:1:"N";s:3:"令";s:1:"N";s:3:"囹";s:1:"N";s:3:"寧";s:1:"N";s:3:"嶺";s:1:"N";s:3:"怜";s:1:"N";s:3:"玲";s:1:"N";s:3:"瑩";s:1:"N";s:3:"羚";s:1:"N";s:3:"聆";s:1:"N";s:3:"鈴";s:1:"N";s:3:"零";s:1:"N";s:3:"靈";s:1:"N";s:3:"領";s:1:"N";s:3:"例";s:1:"N";s:3:"禮";s:1:"N";s:3:"醴";s:1:"N";s:3:"隸";s:1:"N";s:3:"惡";s:1:"N";s:3:"了";s:1:"N";s:3:"僚";s:1:"N";s:3:"寮";s:1:"N";s:3:"尿";s:1:"N";s:3:"料";s:1:"N";s:3:"樂";s:1:"N";s:3:"燎";s:1:"N";s:3:"療";s:1:"N";s:3:"蓼";s:1:"N";s:3:"遼";s:1:"N";s:3:"龍";s:1:"N";s:3:"暈";s:1:"N";s:3:"阮";s:1:"N";s:3:"劉";s:1:"N";s:3:"杻";s:1:"N";s:3:"柳";s:1:"N";s:3:"流";s:1:"N";s:3:"溜";s:1:"N";s:3:"琉";s:1:"N";s:3:"留";s:1:"N";s:3:"硫";s:1:"N";s:3:"紐";s:1:"N";s:3:"類";s:1:"N";s:3:"六";s:1:"N";s:3:"戮";s:1:"N";s:3:"陸";s:1:"N";s:3:"倫";s:1:"N";s:3:"崙";s:1:"N";s:3:"淪";s:1:"N";s:3:"輪";s:1:"N";s:3:"律";s:1:"N";s:3:"慄";s:1:"N";s:3:"栗";s:1:"N";s:3:"率";s:1:"N";s:3:"隆";s:1:"N";s:3:"利";s:1:"N";s:3:"吏";s:1:"N";s:3:"履";s:1:"N";s:3:"易";s:1:"N";s:3:"李";s:1:"N";s:3:"梨";s:1:"N";s:3:"泥";s:1:"N";s:3:"理";s:1:"N";s:3:"痢";s:1:"N";s:3:"罹";s:1:"N";s:3:"裏";s:1:"N";s:3:"裡";s:1:"N";s:3:"里";s:1:"N";s:3:"離";s:1:"N";s:3:"匿";s:1:"N";s:3:"溺";s:1:"N";s:3:"吝";s:1:"N";s:3:"燐";s:1:"N";s:3:"璘";s:1:"N";s:3:"藺";s:1:"N";s:3:"隣";s:1:"N";s:3:"鱗";s:1:"N";s:3:"麟";s:1:"N";s:3:"林";s:1:"N";s:3:"淋";s:1:"N";s:3:"臨";s:1:"N";s:3:"立";s:1:"N";s:3:"笠";s:1:"N";s:3:"粒";s:1:"N";s:3:"狀";s:1:"N";s:3:"炙";s:1:"N";s:3:"識";s:1:"N";s:3:"什";s:1:"N";s:3:"茶";s:1:"N";s:3:"刺";s:1:"N";s:3:"切";s:1:"N";s:3:"度";s:1:"N";s:3:"拓";s:1:"N";s:3:"糖";s:1:"N";s:3:"宅";s:1:"N";s:3:"洞";s:1:"N";s:3:"暴";s:1:"N";s:3:"輻";s:1:"N";s:3:"行";s:1:"N";s:3:"降";s:1:"N";s:3:"見";s:1:"N";s:3:"廓";s:1:"N";s:3:"兀";s:1:"N";s:3:"嗀";s:1:"N";s:3:"塚";s:1:"N";s:3:"晴";s:1:"N";s:3:"凞";s:1:"N";s:3:"猪";s:1:"N";s:3:"益";s:1:"N";s:3:"礼";s:1:"N";s:3:"神";s:1:"N";s:3:"祥";s:1:"N";s:3:"福";s:1:"N";s:3:"靖";s:1:"N";s:3:"精";s:1:"N";s:3:"羽";s:1:"N";s:3:"蘒";s:1:"N";s:3:"諸";s:1:"N";s:3:"逸";s:1:"N";s:3:"都";s:1:"N";s:3:"飯";s:1:"N";s:3:"飼";s:1:"N";s:3:"館";s:1:"N";s:3:"鶴";s:1:"N";s:3:"侮";s:1:"N";s:3:"僧";s:1:"N";s:3:"免";s:1:"N";s:3:"勉";s:1:"N";s:3:"勤";s:1:"N";s:3:"卑";s:1:"N";s:3:"喝";s:1:"N";s:3:"嘆";s:1:"N";s:3:"器";s:1:"N";s:3:"塀";s:1:"N";s:3:"墨";s:1:"N";s:3:"層";s:1:"N";s:3:"屮";s:1:"N";s:3:"悔";s:1:"N";s:3:"慨";s:1:"N";s:3:"憎";s:1:"N";s:3:"懲";s:1:"N";s:3:"敏";s:1:"N";s:3:"既";s:1:"N";s:3:"暑";s:1:"N";s:3:"梅";s:1:"N";s:3:"海";s:1:"N";s:3:"渚";s:1:"N";s:3:"漢";s:1:"N";s:3:"煮";s:1:"N";s:3:"爫";s:1:"N";s:3:"琢";s:1:"N";s:3:"碑";s:1:"N";s:3:"社";s:1:"N";s:3:"祉";s:1:"N";s:3:"祈";s:1:"N";s:3:"祐";s:1:"N";s:3:"祖";s:1:"N";s:3:"祝";s:1:"N";s:3:"禍";s:1:"N";s:3:"禎";s:1:"N";s:3:"穀";s:1:"N";s:3:"突";s:1:"N";s:3:"節";s:1:"N";s:3:"練";s:1:"N";s:3:"縉";s:1:"N";s:3:"繁";s:1:"N";s:3:"署";s:1:"N";s:3:"者";s:1:"N";s:3:"臭";s:1:"N";s:3:"艹";s:1:"N";s:3:"艹";s:1:"N";s:3:"著";s:1:"N";s:3:"褐";s:1:"N";s:3:"視";s:1:"N";s:3:"謁";s:1:"N";s:3:"謹";s:1:"N";s:3:"賓";s:1:"N";s:3:"贈";s:1:"N";s:3:"辶";s:1:"N";s:3:"逸";s:1:"N";s:3:"難";s:1:"N";s:3:"響";s:1:"N";s:3:"頻";s:1:"N";s:3:"並";s:1:"N";s:3:"况";s:1:"N";s:3:"全";s:1:"N";s:3:"侀";s:1:"N";s:3:"充";s:1:"N";s:3:"冀";s:1:"N";s:3:"勇";s:1:"N";s:3:"勺";s:1:"N";s:3:"喝";s:1:"N";s:3:"啕";s:1:"N";s:3:"喙";s:1:"N";s:3:"嗢";s:1:"N";s:3:"塚";s:1:"N";s:3:"墳";s:1:"N";s:3:"奄";s:1:"N";s:3:"奔";s:1:"N";s:3:"婢";s:1:"N";s:3:"嬨";s:1:"N";s:3:"廒";s:1:"N";s:3:"廙";s:1:"N";s:3:"彩";s:1:"N";s:3:"徭";s:1:"N";s:3:"惘";s:1:"N";s:3:"慎";s:1:"N";s:3:"愈";s:1:"N";s:3:"憎";s:1:"N";s:3:"慠";s:1:"N";s:3:"懲";s:1:"N";s:3:"戴";s:1:"N";s:3:"揄";s:1:"N";s:3:"搜";s:1:"N";s:3:"摒";s:1:"N";s:3:"敖";s:1:"N";s:3:"晴";s:1:"N";s:3:"朗";s:1:"N";s:3:"望";s:1:"N";s:3:"杖";s:1:"N";s:3:"歹";s:1:"N";s:3:"殺";s:1:"N";s:3:"流";s:1:"N";s:3:"滛";s:1:"N";s:3:"滋";s:1:"N";s:3:"漢";s:1:"N";s:3:"瀞";s:1:"N";s:3:"煮";s:1:"N";s:3:"瞧";s:1:"N";s:3:"爵";s:1:"N";s:3:"犯";s:1:"N";s:3:"猪";s:1:"N";s:3:"瑱";s:1:"N";s:3:"甆";s:1:"N";s:3:"画";s:1:"N";s:3:"瘝";s:1:"N";s:3:"瘟";s:1:"N";s:3:"益";s:1:"N";s:3:"盛";s:1:"N";s:3:"直";s:1:"N";s:3:"睊";s:1:"N";s:3:"着";s:1:"N";s:3:"磌";s:1:"N";s:3:"窱";s:1:"N";s:3:"節";s:1:"N";s:3:"类";s:1:"N";s:3:"絛";s:1:"N";s:3:"練";s:1:"N";s:3:"缾";s:1:"N";s:3:"者";s:1:"N";s:3:"荒";s:1:"N";s:3:"華";s:1:"N";s:3:"蝹";s:1:"N";s:3:"襁";s:1:"N";s:3:"覆";s:1:"N";s:3:"視";s:1:"N";s:3:"調";s:1:"N";s:3:"諸";s:1:"N";s:3:"請";s:1:"N";s:3:"謁";s:1:"N";s:3:"諾";s:1:"N";s:3:"諭";s:1:"N";s:3:"謹";s:1:"N";s:3:"變";s:1:"N";s:3:"贈";s:1:"N";s:3:"輸";s:1:"N";s:3:"遲";s:1:"N";s:3:"醙";s:1:"N";s:3:"鉶";s:1:"N";s:3:"陼";s:1:"N";s:3:"難";s:1:"N";s:3:"靖";s:1:"N";s:3:"韛";s:1:"N";s:3:"響";s:1:"N";s:3:"頋";s:1:"N";s:3:"頻";s:1:"N";s:3:"鬒";s:1:"N";s:3:"龜";s:1:"N";s:3:"𢡊";s:1:"N";s:3:"𢡄";s:1:"N";s:3:"𣏕";s:1:"N";s:3:"㮝";s:1:"N";s:3:"䀘";s:1:"N";s:3:"䀹";s:1:"N";s:3:"𥉉";s:1:"N";s:3:"𥳐";s:1:"N";s:3:"𧻓";s:1:"N";s:3:"齃";s:1:"N";s:3:"龎";s:1:"N";s:3:"יִ";s:1:"N";s:3:"ײַ";s:1:"N";s:3:"שׁ";s:1:"N";s:3:"שׂ";s:1:"N";s:3:"שּׁ";s:1:"N";s:3:"שּׂ";s:1:"N";s:3:"אַ";s:1:"N";s:3:"אָ";s:1:"N";s:3:"אּ";s:1:"N";s:3:"בּ";s:1:"N";s:3:"גּ";s:1:"N";s:3:"דּ";s:1:"N";s:3:"הּ";s:1:"N";s:3:"וּ";s:1:"N";s:3:"זּ";s:1:"N";s:3:"טּ";s:1:"N";s:3:"יּ";s:1:"N";s:3:"ךּ";s:1:"N";s:3:"כּ";s:1:"N";s:3:"לּ";s:1:"N";s:3:"מּ";s:1:"N";s:3:"נּ";s:1:"N";s:3:"סּ";s:1:"N";s:3:"ףּ";s:1:"N";s:3:"פּ";s:1:"N";s:3:"צּ";s:1:"N";s:3:"קּ";s:1:"N";s:3:"רּ";s:1:"N";s:3:"שּ";s:1:"N";s:3:"תּ";s:1:"N";s:3:"וֹ";s:1:"N";s:3:"בֿ";s:1:"N";s:3:"כֿ";s:1:"N";s:3:"פֿ";s:1:"N";s:4:"𝅗𝅥";s:1:"N";s:4:"𝅘𝅥";s:1:"N";s:4:"𝅘𝅥𝅮";s:1:"N";s:4:"𝅘𝅥𝅯";s:1:"N";s:4:"𝅘𝅥𝅰";s:1:"N";s:4:"𝅘𝅥𝅱";s:1:"N";s:4:"𝅘𝅥𝅲";s:1:"N";s:4:"𝆹𝅥";s:1:"N";s:4:"𝆺𝅥";s:1:"N";s:4:"𝆹𝅥𝅮";s:1:"N";s:4:"𝆺𝅥𝅮";s:1:"N";s:4:"𝆹𝅥𝅯";s:1:"N";s:4:"𝆺𝅥𝅯";s:1:"N";s:4:"丽";s:1:"N";s:4:"丸";s:1:"N";s:4:"乁";s:1:"N";s:4:"𠄢";s:1:"N";s:4:"你";s:1:"N";s:4:"侮";s:1:"N";s:4:"侻";s:1:"N";s:4:"倂";s:1:"N";s:4:"偺";s:1:"N";s:4:"備";s:1:"N";s:4:"僧";s:1:"N";s:4:"像";s:1:"N";s:4:"㒞";s:1:"N";s:4:"𠘺";s:1:"N";s:4:"免";s:1:"N";s:4:"兔";s:1:"N";s:4:"兤";s:1:"N";s:4:"具";s:1:"N";s:4:"𠔜";s:1:"N";s:4:"㒹";s:1:"N";s:4:"內";s:1:"N";s:4:"再";s:1:"N";s:4:"𠕋";s:1:"N";s:4:"冗";s:1:"N";s:4:"冤";s:1:"N";s:4:"仌";s:1:"N";s:4:"冬";s:1:"N";s:4:"况";s:1:"N";s:4:"𩇟";s:1:"N";s:4:"凵";s:1:"N";s:4:"刃";s:1:"N";s:4:"㓟";s:1:"N";s:4:"刻";s:1:"N";s:4:"剆";s:1:"N";s:4:"割";s:1:"N";s:4:"剷";s:1:"N";s:4:"㔕";s:1:"N";s:4:"勇";s:1:"N";s:4:"勉";s:1:"N";s:4:"勤";s:1:"N";s:4:"勺";s:1:"N";s:4:"包";s:1:"N";s:4:"匆";s:1:"N";s:4:"北";s:1:"N";s:4:"卉";s:1:"N";s:4:"卑";s:1:"N";s:4:"博";s:1:"N";s:4:"即";s:1:"N";s:4:"卽";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"𠨬";s:1:"N";s:4:"灰";s:1:"N";s:4:"及";s:1:"N";s:4:"叟";s:1:"N";s:4:"𠭣";s:1:"N";s:4:"叫";s:1:"N";s:4:"叱";s:1:"N";s:4:"吆";s:1:"N";s:4:"咞";s:1:"N";s:4:"吸";s:1:"N";s:4:"呈";s:1:"N";s:4:"周";s:1:"N";s:4:"咢";s:1:"N";s:4:"哶";s:1:"N";s:4:"唐";s:1:"N";s:4:"啓";s:1:"N";s:4:"啣";s:1:"N";s:4:"善";s:1:"N";s:4:"善";s:1:"N";s:4:"喙";s:1:"N";s:4:"喫";s:1:"N";s:4:"喳";s:1:"N";s:4:"嗂";s:1:"N";s:4:"圖";s:1:"N";s:4:"嘆";s:1:"N";s:4:"圗";s:1:"N";s:4:"噑";s:1:"N";s:4:"噴";s:1:"N";s:4:"切";s:1:"N";s:4:"壮";s:1:"N";s:4:"城";s:1:"N";s:4:"埴";s:1:"N";s:4:"堍";s:1:"N";s:4:"型";s:1:"N";s:4:"堲";s:1:"N";s:4:"報";s:1:"N";s:4:"墬";s:1:"N";s:4:"𡓤";s:1:"N";s:4:"売";s:1:"N";s:4:"壷";s:1:"N";s:4:"夆";s:1:"N";s:4:"多";s:1:"N";s:4:"夢";s:1:"N";s:4:"奢";s:1:"N";s:4:"𡚨";s:1:"N";s:4:"𡛪";s:1:"N";s:4:"姬";s:1:"N";s:4:"娛";s:1:"N";s:4:"娧";s:1:"N";s:4:"姘";s:1:"N";s:4:"婦";s:1:"N";s:4:"㛮";s:1:"N";s:4:"㛼";s:1:"N";s:4:"嬈";s:1:"N";s:4:"嬾";s:1:"N";s:4:"嬾";s:1:"N";s:4:"𡧈";s:1:"N";s:4:"寃";s:1:"N";s:4:"寘";s:1:"N";s:4:"寧";s:1:"N";s:4:"寳";s:1:"N";s:4:"𡬘";s:1:"N";s:4:"寿";s:1:"N";s:4:"将";s:1:"N";s:4:"当";s:1:"N";s:4:"尢";s:1:"N";s:4:"㞁";s:1:"N";s:4:"屠";s:1:"N";s:4:"屮";s:1:"N";s:4:"峀";s:1:"N";s:4:"岍";s:1:"N";s:4:"𡷤";s:1:"N";s:4:"嵃";s:1:"N";s:4:"𡷦";s:1:"N";s:4:"嵮";s:1:"N";s:4:"嵫";s:1:"N";s:4:"嵼";s:1:"N";s:4:"巡";s:1:"N";s:4:"巢";s:1:"N";s:4:"㠯";s:1:"N";s:4:"巽";s:1:"N";s:4:"帨";s:1:"N";s:4:"帽";s:1:"N";s:4:"幩";s:1:"N";s:4:"㡢";s:1:"N";s:4:"𢆃";s:1:"N";s:4:"㡼";s:1:"N";s:4:"庰";s:1:"N";s:4:"庳";s:1:"N";s:4:"庶";s:1:"N";s:4:"廊";s:1:"N";s:4:"𪎒";s:1:"N";s:4:"廾";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"舁";s:1:"N";s:4:"弢";s:1:"N";s:4:"弢";s:1:"N";s:4:"㣇";s:1:"N";s:4:"𣊸";s:1:"N";s:4:"𦇚";s:1:"N";s:4:"形";s:1:"N";s:4:"彫";s:1:"N";s:4:"㣣";s:1:"N";s:4:"徚";s:1:"N";s:4:"忍";s:1:"N";s:4:"志";s:1:"N";s:4:"忹";s:1:"N";s:4:"悁";s:1:"N";s:4:"㤺";s:1:"N";s:4:"㤜";s:1:"N";s:4:"悔";s:1:"N";s:4:"𢛔";s:1:"N";s:4:"惇";s:1:"N";s:4:"慈";s:1:"N";s:4:"慌";s:1:"N";s:4:"慎";s:1:"N";s:4:"慌";s:1:"N";s:4:"慺";s:1:"N";s:4:"憎";s:1:"N";s:4:"憲";s:1:"N";s:4:"憤";s:1:"N";s:4:"憯";s:1:"N";s:4:"懞";s:1:"N";s:4:"懲";s:1:"N";s:4:"懶";s:1:"N";s:4:"成";s:1:"N";s:4:"戛";s:1:"N";s:4:"扝";s:1:"N";s:4:"抱";s:1:"N";s:4:"拔";s:1:"N";s:4:"捐";s:1:"N";s:4:"𢬌";s:1:"N";s:4:"挽";s:1:"N";s:4:"拼";s:1:"N";s:4:"捨";s:1:"N";s:4:"掃";s:1:"N";s:4:"揤";s:1:"N";s:4:"𢯱";s:1:"N";s:4:"搢";s:1:"N";s:4:"揅";s:1:"N";s:4:"掩";s:1:"N";s:4:"㨮";s:1:"N";s:4:"摩";s:1:"N";s:4:"摾";s:1:"N";s:4:"撝";s:1:"N";s:4:"摷";s:1:"N";s:4:"㩬";s:1:"N";s:4:"敏";s:1:"N";s:4:"敬";s:1:"N";s:4:"𣀊";s:1:"N";s:4:"旣";s:1:"N";s:4:"書";s:1:"N";s:4:"晉";s:1:"N";s:4:"㬙";s:1:"N";s:4:"暑";s:1:"N";s:4:"㬈";s:1:"N";s:4:"㫤";s:1:"N";s:4:"冒";s:1:"N";s:4:"冕";s:1:"N";s:4:"最";s:1:"N";s:4:"暜";s:1:"N";s:4:"肭";s:1:"N";s:4:"䏙";s:1:"N";s:4:"朗";s:1:"N";s:4:"望";s:1:"N";s:4:"朡";s:1:"N";s:4:"杞";s:1:"N";s:4:"杓";s:1:"N";s:4:"𣏃";s:1:"N";s:4:"㭉";s:1:"N";s:4:"柺";s:1:"N";s:4:"枅";s:1:"N";s:4:"桒";s:1:"N";s:4:"梅";s:1:"N";s:4:"𣑭";s:1:"N";s:4:"梎";s:1:"N";s:4:"栟";s:1:"N";s:4:"椔";s:1:"N";s:4:"㮝";s:1:"N";s:4:"楂";s:1:"N";s:4:"榣";s:1:"N";s:4:"槪";s:1:"N";s:4:"檨";s:1:"N";s:4:"𣚣";s:1:"N";s:4:"櫛";s:1:"N";s:4:"㰘";s:1:"N";s:4:"次";s:1:"N";s:4:"𣢧";s:1:"N";s:4:"歔";s:1:"N";s:4:"㱎";s:1:"N";s:4:"歲";s:1:"N";s:4:"殟";s:1:"N";s:4:"殺";s:1:"N";s:4:"殻";s:1:"N";s:4:"𣪍";s:1:"N";s:4:"𡴋";s:1:"N";s:4:"𣫺";s:1:"N";s:4:"汎";s:1:"N";s:4:"𣲼";s:1:"N";s:4:"沿";s:1:"N";s:4:"泍";s:1:"N";s:4:"汧";s:1:"N";s:4:"洖";s:1:"N";s:4:"派";s:1:"N";s:4:"海";s:1:"N";s:4:"流";s:1:"N";s:4:"浩";s:1:"N";s:4:"浸";s:1:"N";s:4:"涅";s:1:"N";s:4:"𣴞";s:1:"N";s:4:"洴";s:1:"N";s:4:"港";s:1:"N";s:4:"湮";s:1:"N";s:4:"㴳";s:1:"N";s:4:"滋";s:1:"N";s:4:"滇";s:1:"N";s:4:"𣻑";s:1:"N";s:4:"淹";s:1:"N";s:4:"潮";s:1:"N";s:4:"𣽞";s:1:"N";s:4:"𣾎";s:1:"N";s:4:"濆";s:1:"N";s:4:"瀹";s:1:"N";s:4:"瀞";s:1:"N";s:4:"瀛";s:1:"N";s:4:"㶖";s:1:"N";s:4:"灊";s:1:"N";s:4:"災";s:1:"N";s:4:"灷";s:1:"N";s:4:"炭";s:1:"N";s:4:"𠔥";s:1:"N";s:4:"煅";s:1:"N";s:4:"𤉣";s:1:"N";s:4:"熜";s:1:"N";s:4:"𤎫";s:1:"N";s:4:"爨";s:1:"N";s:4:"爵";s:1:"N";s:4:"牐";s:1:"N";s:4:"𤘈";s:1:"N";s:4:"犀";s:1:"N";s:4:"犕";s:1:"N";s:4:"𤜵";s:1:"N";s:4:"𤠔";s:1:"N";s:4:"獺";s:1:"N";s:4:"王";s:1:"N";s:4:"㺬";s:1:"N";s:4:"玥";s:1:"N";s:4:"㺸";s:1:"N";s:4:"㺸";s:1:"N";s:4:"瑇";s:1:"N";s:4:"瑜";s:1:"N";s:4:"瑱";s:1:"N";s:4:"璅";s:1:"N";s:4:"瓊";s:1:"N";s:4:"㼛";s:1:"N";s:4:"甤";s:1:"N";s:4:"𤰶";s:1:"N";s:4:"甾";s:1:"N";s:4:"𤲒";s:1:"N";s:4:"異";s:1:"N";s:4:"𢆟";s:1:"N";s:4:"瘐";s:1:"N";s:4:"𤾡";s:1:"N";s:4:"𤾸";s:1:"N";s:4:"𥁄";s:1:"N";s:4:"㿼";s:1:"N";s:4:"䀈";s:1:"N";s:4:"直";s:1:"N";s:4:"𥃳";s:1:"N";s:4:"𥃲";s:1:"N";s:4:"𥄙";s:1:"N";s:4:"𥄳";s:1:"N";s:4:"眞";s:1:"N";s:4:"真";s:1:"N";s:4:"真";s:1:"N";s:4:"睊";s:1:"N";s:4:"䀹";s:1:"N";s:4:"瞋";s:1:"N";s:4:"䁆";s:1:"N";s:4:"䂖";s:1:"N";s:4:"𥐝";s:1:"N";s:4:"硎";s:1:"N";s:4:"碌";s:1:"N";s:4:"磌";s:1:"N";s:4:"䃣";s:1:"N";s:4:"𥘦";s:1:"N";s:4:"祖";s:1:"N";s:4:"𥚚";s:1:"N";s:4:"𥛅";s:1:"N";s:4:"福";s:1:"N";s:4:"秫";s:1:"N";s:4:"䄯";s:1:"N";s:4:"穀";s:1:"N";s:4:"穊";s:1:"N";s:4:"穏";s:1:"N";s:4:"𥥼";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"竮";s:1:"N";s:4:"䈂";s:1:"N";s:4:"𥮫";s:1:"N";s:4:"篆";s:1:"N";s:4:"築";s:1:"N";s:4:"䈧";s:1:"N";s:4:"𥲀";s:1:"N";s:4:"糒";s:1:"N";s:4:"䊠";s:1:"N";s:4:"糨";s:1:"N";s:4:"糣";s:1:"N";s:4:"紀";s:1:"N";s:4:"𥾆";s:1:"N";s:4:"絣";s:1:"N";s:4:"䌁";s:1:"N";s:4:"緇";s:1:"N";s:4:"縂";s:1:"N";s:4:"繅";s:1:"N";s:4:"䌴";s:1:"N";s:4:"𦈨";s:1:"N";s:4:"𦉇";s:1:"N";s:4:"䍙";s:1:"N";s:4:"𦋙";s:1:"N";s:4:"罺";s:1:"N";s:4:"𦌾";s:1:"N";s:4:"羕";s:1:"N";s:4:"翺";s:1:"N";s:4:"者";s:1:"N";s:4:"𦓚";s:1:"N";s:4:"𦔣";s:1:"N";s:4:"聠";s:1:"N";s:4:"𦖨";s:1:"N";s:4:"聰";s:1:"N";s:4:"𣍟";s:1:"N";s:4:"䏕";s:1:"N";s:4:"育";s:1:"N";s:4:"脃";s:1:"N";s:4:"䐋";s:1:"N";s:4:"脾";s:1:"N";s:4:"媵";s:1:"N";s:4:"𦞧";s:1:"N";s:4:"𦞵";s:1:"N";s:4:"𣎓";s:1:"N";s:4:"𣎜";s:1:"N";s:4:"舁";s:1:"N";s:4:"舄";s:1:"N";s:4:"辞";s:1:"N";s:4:"䑫";s:1:"N";s:4:"芑";s:1:"N";s:4:"芋";s:1:"N";s:4:"芝";s:1:"N";s:4:"劳";s:1:"N";s:4:"花";s:1:"N";s:4:"芳";s:1:"N";s:4:"芽";s:1:"N";s:4:"苦";s:1:"N";s:4:"𦬼";s:1:"N";s:4:"若";s:1:"N";s:4:"茝";s:1:"N";s:4:"荣";s:1:"N";s:4:"莭";s:1:"N";s:4:"茣";s:1:"N";s:4:"莽";s:1:"N";s:4:"菧";s:1:"N";s:4:"著";s:1:"N";s:4:"荓";s:1:"N";s:4:"菊";s:1:"N";s:4:"菌";s:1:"N";s:4:"菜";s:1:"N";s:4:"𦰶";s:1:"N";s:4:"𦵫";s:1:"N";s:4:"𦳕";s:1:"N";s:4:"䔫";s:1:"N";s:4:"蓱";s:1:"N";s:4:"蓳";s:1:"N";s:4:"蔖";s:1:"N";s:4:"𧏊";s:1:"N";s:4:"蕤";s:1:"N";s:4:"𦼬";s:1:"N";s:4:"䕝";s:1:"N";s:4:"䕡";s:1:"N";s:4:"𦾱";s:1:"N";s:4:"𧃒";s:1:"N";s:4:"䕫";s:1:"N";s:4:"虐";s:1:"N";s:4:"虜";s:1:"N";s:4:"虧";s:1:"N";s:4:"虩";s:1:"N";s:4:"蚩";s:1:"N";s:4:"蚈";s:1:"N";s:4:"蜎";s:1:"N";s:4:"蛢";s:1:"N";s:4:"蝹";s:1:"N";s:4:"蜨";s:1:"N";s:4:"蝫";s:1:"N";s:4:"螆";s:1:"N";s:4:"䗗";s:1:"N";s:4:"蟡";s:1:"N";s:4:"蠁";s:1:"N";s:4:"䗹";s:1:"N";s:4:"衠";s:1:"N";s:4:"衣";s:1:"N";s:4:"𧙧";s:1:"N";s:4:"裗";s:1:"N";s:4:"裞";s:1:"N";s:4:"䘵";s:1:"N";s:4:"裺";s:1:"N";s:4:"㒻";s:1:"N";s:4:"𧢮";s:1:"N";s:4:"𧥦";s:1:"N";s:4:"䚾";s:1:"N";s:4:"䛇";s:1:"N";s:4:"誠";s:1:"N";s:4:"諭";s:1:"N";s:4:"變";s:1:"N";s:4:"豕";s:1:"N";s:4:"𧲨";s:1:"N";s:4:"貫";s:1:"N";s:4:"賁";s:1:"N";s:4:"贛";s:1:"N";s:4:"起";s:1:"N";s:4:"𧼯";s:1:"N";s:4:"𠠄";s:1:"N";s:4:"跋";s:1:"N";s:4:"趼";s:1:"N";s:4:"跰";s:1:"N";s:4:"𠣞";s:1:"N";s:4:"軔";s:1:"N";s:4:"輸";s:1:"N";s:4:"𨗒";s:1:"N";s:4:"𨗭";s:1:"N";s:4:"邔";s:1:"N";s:4:"郱";s:1:"N";s:4:"鄑";s:1:"N";s:4:"𨜮";s:1:"N";s:4:"鄛";s:1:"N";s:4:"鈸";s:1:"N";s:4:"鋗";s:1:"N";s:4:"鋘";s:1:"N";s:4:"鉼";s:1:"N";s:4:"鏹";s:1:"N";s:4:"鐕";s:1:"N";s:4:"𨯺";s:1:"N";s:4:"開";s:1:"N";s:4:"䦕";s:1:"N";s:4:"閷";s:1:"N";s:4:"𨵷";s:1:"N";s:4:"䧦";s:1:"N";s:4:"雃";s:1:"N";s:4:"嶲";s:1:"N";s:4:"霣";s:1:"N";s:4:"𩅅";s:1:"N";s:4:"𩈚";s:1:"N";s:4:"䩮";s:1:"N";s:4:"䩶";s:1:"N";s:4:"韠";s:1:"N";s:4:"𩐊";s:1:"N";s:4:"䪲";s:1:"N";s:4:"𩒖";s:1:"N";s:4:"頋";s:1:"N";s:4:"頋";s:1:"N";s:4:"頩";s:1:"N";s:4:"𩖶";s:1:"N";s:4:"飢";s:1:"N";s:4:"䬳";s:1:"N";s:4:"餩";s:1:"N";s:4:"馧";s:1:"N";s:4:"駂";s:1:"N";s:4:"駾";s:1:"N";s:4:"䯎";s:1:"N";s:4:"𩬰";s:1:"N";s:4:"鬒";s:1:"N";s:4:"鱀";s:1:"N";s:4:"鳽";s:1:"N";s:4:"䳎";s:1:"N";s:4:"䳭";s:1:"N";s:4:"鵧";s:1:"N";s:4:"𪃎";s:1:"N";s:4:"䳸";s:1:"N";s:4:"𪄅";s:1:"N";s:4:"𪈎";s:1:"N";s:4:"𪊑";s:1:"N";s:4:"麻";s:1:"N";s:4:"䵖";s:1:"N";s:4:"黹";s:1:"N";s:4:"黾";s:1:"N";s:4:"鼅";s:1:"N";s:4:"鼏";s:1:"N";s:4:"鼖";s:1:"N";s:4:"鼻";s:1:"N";s:4:"𪘀";s:1:"N";s:2:"̀";s:1:"M";s:2:"́";s:1:"M";s:2:"̂";s:1:"M";s:2:"̃";s:1:"M";s:2:"̄";s:1:"M";s:2:"̆";s:1:"M";s:2:"̇";s:1:"M";s:2:"̈";s:1:"M";s:2:"̉";s:1:"M";s:2:"̊";s:1:"M";s:2:"̋";s:1:"M";s:2:"̌";s:1:"M";s:2:"̏";s:1:"M";s:2:"̑";s:1:"M";s:2:"̓";s:1:"M";s:2:"̔";s:1:"M";s:2:"̛";s:1:"M";s:2:"̣";s:1:"M";s:2:"̤";s:1:"M";s:2:"̥";s:1:"M";s:2:"̦";s:1:"M";s:2:"̧";s:1:"M";s:2:"̨";s:1:"M";s:2:"̭";s:1:"M";s:2:"̮";s:1:"M";s:2:"̰";s:1:"M";s:2:"̱";s:1:"M";s:2:"̸";s:1:"M";s:2:"͂";s:1:"M";s:2:"ͅ";s:1:"M";s:2:"ٓ";s:1:"M";s:2:"ٔ";s:1:"M";s:2:"ٕ";s:1:"M";s:3:"़";s:1:"M";s:3:"া";s:1:"M";s:3:"ৗ";s:1:"M";s:3:"ା";s:1:"M";s:3:"ୖ";s:1:"M";s:3:"ୗ";s:1:"M";s:3:"ா";s:1:"M";s:3:"ௗ";s:1:"M";s:3:"ౖ";s:1:"M";s:3:"ೂ";s:1:"M";s:3:"ೕ";s:1:"M";s:3:"ೖ";s:1:"M";s:3:"ാ";s:1:"M";s:3:"ൗ";s:1:"M";s:3:"්";s:1:"M";s:3:"ා";s:1:"M";s:3:"ෟ";s:1:"M";s:3:"ီ";s:1:"M";s:3:"ᅡ";s:1:"M";s:3:"ᅢ";s:1:"M";s:3:"ᅣ";s:1:"M";s:3:"ᅤ";s:1:"M";s:3:"ᅥ";s:1:"M";s:3:"ᅦ";s:1:"M";s:3:"ᅧ";s:1:"M";s:3:"ᅨ";s:1:"M";s:3:"ᅩ";s:1:"M";s:3:"ᅪ";s:1:"M";s:3:"ᅫ";s:1:"M";s:3:"ᅬ";s:1:"M";s:3:"ᅭ";s:1:"M";s:3:"ᅮ";s:1:"M";s:3:"ᅯ";s:1:"M";s:3:"ᅰ";s:1:"M";s:3:"ᅱ";s:1:"M";s:3:"ᅲ";s:1:"M";s:3:"ᅳ";s:1:"M";s:3:"ᅴ";s:1:"M";s:3:"ᅵ";s:1:"M";s:3:"ᆨ";s:1:"M";s:3:"ᆩ";s:1:"M";s:3:"ᆪ";s:1:"M";s:3:"ᆫ";s:1:"M";s:3:"ᆬ";s:1:"M";s:3:"ᆭ";s:1:"M";s:3:"ᆮ";s:1:"M";s:3:"ᆯ";s:1:"M";s:3:"ᆰ";s:1:"M";s:3:"ᆱ";s:1:"M";s:3:"ᆲ";s:1:"M";s:3:"ᆳ";s:1:"M";s:3:"ᆴ";s:1:"M";s:3:"ᆵ";s:1:"M";s:3:"ᆶ";s:1:"M";s:3:"ᆷ";s:1:"M";s:3:"ᆸ";s:1:"M";s:3:"ᆹ";s:1:"M";s:3:"ᆺ";s:1:"M";s:3:"ᆻ";s:1:"M";s:3:"ᆼ";s:1:"M";s:3:"ᆽ";s:1:"M";s:3:"ᆾ";s:1:"M";s:3:"ᆿ";s:1:"M";s:3:"ᇀ";s:1:"M";s:3:"ᇁ";s:1:"M";s:3:"ᇂ";s:1:"M";s:3:"ᬵ";s:1:"M";s:3:"゙";s:1:"M";s:3:"゚";s:1:"M";}' );
-?>
+$utfCombiningClass = unserialize( 'a:594:{s:2:"̀";i:230;s:2:"́";i:230;s:2:"̂";i:230;s:2:"̃";i:230;s:2:"̄";i:230;s:2:"̅";i:230;s:2:"̆";i:230;s:2:"̇";i:230;s:2:"̈";i:230;s:2:"̉";i:230;s:2:"̊";i:230;s:2:"̋";i:230;s:2:"̌";i:230;s:2:"̍";i:230;s:2:"̎";i:230;s:2:"̏";i:230;s:2:"̐";i:230;s:2:"̑";i:230;s:2:"̒";i:230;s:2:"̓";i:230;s:2:"̔";i:230;s:2:"̕";i:232;s:2:"̖";i:220;s:2:"̗";i:220;s:2:"̘";i:220;s:2:"̙";i:220;s:2:"̚";i:232;s:2:"̛";i:216;s:2:"̜";i:220;s:2:"̝";i:220;s:2:"̞";i:220;s:2:"̟";i:220;s:2:"̠";i:220;s:2:"̡";i:202;s:2:"̢";i:202;s:2:"̣";i:220;s:2:"̤";i:220;s:2:"̥";i:220;s:2:"̦";i:220;s:2:"̧";i:202;s:2:"̨";i:202;s:2:"̩";i:220;s:2:"̪";i:220;s:2:"̫";i:220;s:2:"̬";i:220;s:2:"̭";i:220;s:2:"̮";i:220;s:2:"̯";i:220;s:2:"̰";i:220;s:2:"̱";i:220;s:2:"̲";i:220;s:2:"̳";i:220;s:2:"̴";i:1;s:2:"̵";i:1;s:2:"̶";i:1;s:2:"̷";i:1;s:2:"̸";i:1;s:2:"̹";i:220;s:2:"̺";i:220;s:2:"̻";i:220;s:2:"̼";i:220;s:2:"̽";i:230;s:2:"̾";i:230;s:2:"̿";i:230;s:2:"̀";i:230;s:2:"́";i:230;s:2:"͂";i:230;s:2:"̓";i:230;s:2:"̈́";i:230;s:2:"ͅ";i:240;s:2:"͆";i:230;s:2:"͇";i:220;s:2:"͈";i:220;s:2:"͉";i:220;s:2:"͊";i:230;s:2:"͋";i:230;s:2:"͌";i:230;s:2:"͍";i:220;s:2:"͎";i:220;s:2:"͐";i:230;s:2:"͑";i:230;s:2:"͒";i:230;s:2:"͓";i:220;s:2:"͔";i:220;s:2:"͕";i:220;s:2:"͖";i:220;s:2:"͗";i:230;s:2:"͘";i:232;s:2:"͙";i:220;s:2:"͚";i:220;s:2:"͛";i:230;s:2:"͜";i:233;s:2:"͝";i:234;s:2:"͞";i:234;s:2:"͟";i:233;s:2:"͠";i:234;s:2:"͡";i:234;s:2:"͢";i:233;s:2:"ͣ";i:230;s:2:"ͤ";i:230;s:2:"ͥ";i:230;s:2:"ͦ";i:230;s:2:"ͧ";i:230;s:2:"ͨ";i:230;s:2:"ͩ";i:230;s:2:"ͪ";i:230;s:2:"ͫ";i:230;s:2:"ͬ";i:230;s:2:"ͭ";i:230;s:2:"ͮ";i:230;s:2:"ͯ";i:230;s:2:"҃";i:230;s:2:"҄";i:230;s:2:"҅";i:230;s:2:"҆";i:230;s:2:"҇";i:230;s:2:"֑";i:220;s:2:"֒";i:230;s:2:"֓";i:230;s:2:"֔";i:230;s:2:"֕";i:230;s:2:"֖";i:220;s:2:"֗";i:230;s:2:"֘";i:230;s:2:"֙";i:230;s:2:"֚";i:222;s:2:"֛";i:220;s:2:"֜";i:230;s:2:"֝";i:230;s:2:"֞";i:230;s:2:"֟";i:230;s:2:"֠";i:230;s:2:"֡";i:230;s:2:"֢";i:220;s:2:"֣";i:220;s:2:"֤";i:220;s:2:"֥";i:220;s:2:"֦";i:220;s:2:"֧";i:220;s:2:"֨";i:230;s:2:"֩";i:230;s:2:"֪";i:220;s:2:"֫";i:230;s:2:"֬";i:230;s:2:"֭";i:222;s:2:"֮";i:228;s:2:"֯";i:230;s:2:"ְ";i:10;s:2:"ֱ";i:11;s:2:"ֲ";i:12;s:2:"ֳ";i:13;s:2:"ִ";i:14;s:2:"ֵ";i:15;s:2:"ֶ";i:16;s:2:"ַ";i:17;s:2:"ָ";i:18;s:2:"ֹ";i:19;s:2:"ֺ";i:19;s:2:"ֻ";i:20;s:2:"ּ";i:21;s:2:"ֽ";i:22;s:2:"ֿ";i:23;s:2:"ׁ";i:24;s:2:"ׂ";i:25;s:2:"ׄ";i:230;s:2:"ׅ";i:220;s:2:"ׇ";i:18;s:2:"ؐ";i:230;s:2:"ؑ";i:230;s:2:"ؒ";i:230;s:2:"ؓ";i:230;s:2:"ؔ";i:230;s:2:"ؕ";i:230;s:2:"ؖ";i:230;s:2:"ؗ";i:230;s:2:"ؘ";i:30;s:2:"ؙ";i:31;s:2:"ؚ";i:32;s:2:"ً";i:27;s:2:"ٌ";i:28;s:2:"ٍ";i:29;s:2:"َ";i:30;s:2:"ُ";i:31;s:2:"ِ";i:32;s:2:"ّ";i:33;s:2:"ْ";i:34;s:2:"ٓ";i:230;s:2:"ٔ";i:230;s:2:"ٕ";i:220;s:2:"ٖ";i:220;s:2:"ٗ";i:230;s:2:"٘";i:230;s:2:"ٙ";i:230;s:2:"ٚ";i:230;s:2:"ٛ";i:230;s:2:"ٜ";i:220;s:2:"ٝ";i:230;s:2:"ٞ";i:230;s:2:"ٰ";i:35;s:2:"ۖ";i:230;s:2:"ۗ";i:230;s:2:"ۘ";i:230;s:2:"ۙ";i:230;s:2:"ۚ";i:230;s:2:"ۛ";i:230;s:2:"ۜ";i:230;s:2:"۟";i:230;s:2:"۠";i:230;s:2:"ۡ";i:230;s:2:"ۢ";i:230;s:2:"ۣ";i:220;s:2:"ۤ";i:230;s:2:"ۧ";i:230;s:2:"ۨ";i:230;s:2:"۪";i:220;s:2:"۫";i:230;s:2:"۬";i:230;s:2:"ۭ";i:220;s:2:"ܑ";i:36;s:2:"ܰ";i:230;s:2:"ܱ";i:220;s:2:"ܲ";i:230;s:2:"ܳ";i:230;s:2:"ܴ";i:220;s:2:"ܵ";i:230;s:2:"ܶ";i:230;s:2:"ܷ";i:220;s:2:"ܸ";i:220;s:2:"ܹ";i:220;s:2:"ܺ";i:230;s:2:"ܻ";i:220;s:2:"ܼ";i:220;s:2:"ܽ";i:230;s:2:"ܾ";i:220;s:2:"ܿ";i:230;s:2:"݀";i:230;s:2:"݁";i:230;s:2:"݂";i:220;s:2:"݃";i:230;s:2:"݄";i:220;s:2:"݅";i:230;s:2:"݆";i:220;s:2:"݇";i:230;s:2:"݈";i:220;s:2:"݉";i:230;s:2:"݊";i:230;s:2:"߫";i:230;s:2:"߬";i:230;s:2:"߭";i:230;s:2:"߮";i:230;s:2:"߯";i:230;s:2:"߰";i:230;s:2:"߱";i:230;s:2:"߲";i:220;s:2:"߳";i:230;s:3:"ࠖ";i:230;s:3:"ࠗ";i:230;s:3:"࠘";i:230;s:3:"࠙";i:230;s:3:"ࠛ";i:230;s:3:"ࠜ";i:230;s:3:"ࠝ";i:230;s:3:"ࠞ";i:230;s:3:"ࠟ";i:230;s:3:"ࠠ";i:230;s:3:"ࠡ";i:230;s:3:"ࠢ";i:230;s:3:"ࠣ";i:230;s:3:"ࠥ";i:230;s:3:"ࠦ";i:230;s:3:"ࠧ";i:230;s:3:"ࠩ";i:230;s:3:"ࠪ";i:230;s:3:"ࠫ";i:230;s:3:"ࠬ";i:230;s:3:"࠭";i:230;s:3:"़";i:7;s:3:"्";i:9;s:3:"॑";i:230;s:3:"॒";i:220;s:3:"॓";i:230;s:3:"॔";i:230;s:3:"়";i:7;s:3:"্";i:9;s:3:"਼";i:7;s:3:"੍";i:9;s:3:"઼";i:7;s:3:"્";i:9;s:3:"଼";i:7;s:3:"୍";i:9;s:3:"்";i:9;s:3:"్";i:9;s:3:"ౕ";i:84;s:3:"ౖ";i:91;s:3:"಼";i:7;s:3:"್";i:9;s:3:"്";i:9;s:3:"්";i:9;s:3:"ุ";i:103;s:3:"ู";i:103;s:3:"ฺ";i:9;s:3:"่";i:107;s:3:"้";i:107;s:3:"๊";i:107;s:3:"๋";i:107;s:3:"ຸ";i:118;s:3:"ູ";i:118;s:3:"່";i:122;s:3:"້";i:122;s:3:"໊";i:122;s:3:"໋";i:122;s:3:"༘";i:220;s:3:"༙";i:220;s:3:"༵";i:220;s:3:"༷";i:220;s:3:"༹";i:216;s:3:"ཱ";i:129;s:3:"ི";i:130;s:3:"ུ";i:132;s:3:"ེ";i:130;s:3:"ཻ";i:130;s:3:"ོ";i:130;s:3:"ཽ";i:130;s:3:"ྀ";i:130;s:3:"ྂ";i:230;s:3:"ྃ";i:230;s:3:"྄";i:9;s:3:"྆";i:230;s:3:"྇";i:230;s:3:"࿆";i:220;s:3:"့";i:7;s:3:"္";i:9;s:3:"်";i:9;s:3:"ႍ";i:220;s:3:"፟";i:230;s:3:"᜔";i:9;s:3:"᜴";i:9;s:3:"្";i:9;s:3:"៝";i:230;s:3:"ᢩ";i:228;s:3:"᤹";i:222;s:3:"᤺";i:230;s:3:"᤻";i:220;s:3:"ᨗ";i:230;s:3:"ᨘ";i:220;s:3:"᩠";i:9;s:3:"᩵";i:230;s:3:"᩶";i:230;s:3:"᩷";i:230;s:3:"᩸";i:230;s:3:"᩹";i:230;s:3:"᩺";i:230;s:3:"᩻";i:230;s:3:"᩼";i:230;s:3:"᩿";i:220;s:3:"᬴";i:7;s:3:"᭄";i:9;s:3:"᭫";i:230;s:3:"᭬";i:220;s:3:"᭭";i:230;s:3:"᭮";i:230;s:3:"᭯";i:230;s:3:"᭰";i:230;s:3:"᭱";i:230;s:3:"᭲";i:230;s:3:"᭳";i:230;s:3:"᮪";i:9;s:3:"᰷";i:7;s:3:"᳐";i:230;s:3:"᳑";i:230;s:3:"᳒";i:230;s:3:"᳔";i:1;s:3:"᳕";i:220;s:3:"᳖";i:220;s:3:"᳗";i:220;s:3:"᳘";i:220;s:3:"᳙";i:220;s:3:"᳚";i:230;s:3:"᳛";i:230;s:3:"᳜";i:220;s:3:"᳝";i:220;s:3:"᳞";i:220;s:3:"᳟";i:220;s:3:"᳠";i:230;s:3:"᳢";i:1;s:3:"᳣";i:1;s:3:"᳤";i:1;s:3:"᳥";i:1;s:3:"᳦";i:1;s:3:"᳧";i:1;s:3:"᳨";i:1;s:3:"᳭";i:220;s:3:"᷀";i:230;s:3:"᷁";i:230;s:3:"᷂";i:220;s:3:"᷃";i:230;s:3:"᷄";i:230;s:3:"᷅";i:230;s:3:"᷆";i:230;s:3:"᷇";i:230;s:3:"᷈";i:230;s:3:"᷉";i:230;s:3:"᷊";i:220;s:3:"᷋";i:230;s:3:"᷌";i:230;s:3:"᷍";i:234;s:3:"᷎";i:214;s:3:"᷏";i:220;s:3:"᷐";i:202;s:3:"᷑";i:230;s:3:"᷒";i:230;s:3:"ᷓ";i:230;s:3:"ᷔ";i:230;s:3:"ᷕ";i:230;s:3:"ᷖ";i:230;s:3:"ᷗ";i:230;s:3:"ᷘ";i:230;s:3:"ᷙ";i:230;s:3:"ᷚ";i:230;s:3:"ᷛ";i:230;s:3:"ᷜ";i:230;s:3:"ᷝ";i:230;s:3:"ᷞ";i:230;s:3:"ᷟ";i:230;s:3:"ᷠ";i:230;s:3:"ᷡ";i:230;s:3:"ᷢ";i:230;s:3:"ᷣ";i:230;s:3:"ᷤ";i:230;s:3:"ᷥ";i:230;s:3:"ᷦ";i:230;s:3:"᷽";i:220;s:3:"᷾";i:230;s:3:"᷿";i:220;s:3:"⃐";i:230;s:3:"⃑";i:230;s:3:"⃒";i:1;s:3:"⃓";i:1;s:3:"⃔";i:230;s:3:"⃕";i:230;s:3:"⃖";i:230;s:3:"⃗";i:230;s:3:"⃘";i:1;s:3:"⃙";i:1;s:3:"⃚";i:1;s:3:"⃛";i:230;s:3:"⃜";i:230;s:3:"⃡";i:230;s:3:"⃥";i:1;s:3:"⃦";i:1;s:3:"⃧";i:230;s:3:"⃨";i:220;s:3:"⃩";i:230;s:3:"⃪";i:1;s:3:"⃫";i:1;s:3:"⃬";i:220;s:3:"⃭";i:220;s:3:"⃮";i:220;s:3:"⃯";i:220;s:3:"⃰";i:230;s:3:"⳯";i:230;s:3:"⳰";i:230;s:3:"⳱";i:230;s:3:"ⷠ";i:230;s:3:"ⷡ";i:230;s:3:"ⷢ";i:230;s:3:"ⷣ";i:230;s:3:"ⷤ";i:230;s:3:"ⷥ";i:230;s:3:"ⷦ";i:230;s:3:"ⷧ";i:230;s:3:"ⷨ";i:230;s:3:"ⷩ";i:230;s:3:"ⷪ";i:230;s:3:"ⷫ";i:230;s:3:"ⷬ";i:230;s:3:"ⷭ";i:230;s:3:"ⷮ";i:230;s:3:"ⷯ";i:230;s:3:"ⷰ";i:230;s:3:"ⷱ";i:230;s:3:"ⷲ";i:230;s:3:"ⷳ";i:230;s:3:"ⷴ";i:230;s:3:"ⷵ";i:230;s:3:"ⷶ";i:230;s:3:"ⷷ";i:230;s:3:"ⷸ";i:230;s:3:"ⷹ";i:230;s:3:"ⷺ";i:230;s:3:"ⷻ";i:230;s:3:"ⷼ";i:230;s:3:"ⷽ";i:230;s:3:"ⷾ";i:230;s:3:"ⷿ";i:230;s:3:"〪";i:218;s:3:"〫";i:228;s:3:"〬";i:232;s:3:"〭";i:222;s:3:"〮";i:224;s:3:"〯";i:224;s:3:"゙";i:8;s:3:"゚";i:8;s:3:"꙯";i:230;s:3:"꙼";i:230;s:3:"꙽";i:230;s:3:"꛰";i:230;s:3:"꛱";i:230;s:3:"꠆";i:9;s:3:"꣄";i:9;s:3:"꣠";i:230;s:3:"꣡";i:230;s:3:"꣢";i:230;s:3:"꣣";i:230;s:3:"꣤";i:230;s:3:"꣥";i:230;s:3:"꣦";i:230;s:3:"꣧";i:230;s:3:"꣨";i:230;s:3:"꣩";i:230;s:3:"꣪";i:230;s:3:"꣫";i:230;s:3:"꣬";i:230;s:3:"꣭";i:230;s:3:"꣮";i:230;s:3:"꣯";i:230;s:3:"꣰";i:230;s:3:"꣱";i:230;s:3:"꤫";i:220;s:3:"꤬";i:220;s:3:"꤭";i:220;s:3:"꥓";i:9;s:3:"꦳";i:7;s:3:"꧀";i:9;s:3:"ꪰ";i:230;s:3:"ꪲ";i:230;s:3:"ꪳ";i:230;s:3:"ꪴ";i:220;s:3:"ꪷ";i:230;s:3:"ꪸ";i:230;s:3:"ꪾ";i:230;s:3:"꪿";i:230;s:3:"꫁";i:230;s:3:"꯭";i:9;s:3:"ﬞ";i:26;s:3:"︠";i:230;s:3:"︡";i:230;s:3:"︢";i:230;s:3:"︣";i:230;s:3:"︤";i:230;s:3:"︥";i:230;s:3:"︦";i:230;s:4:"𐇽";i:220;s:4:"𐨍";i:220;s:4:"𐨏";i:230;s:4:"𐨸";i:230;s:4:"𐨹";i:1;s:4:"𐨺";i:220;s:4:"𐨿";i:9;s:4:"𑂹";i:9;s:4:"𑂺";i:7;s:4:"𝅥";i:216;s:4:"𝅦";i:216;s:4:"𝅧";i:1;s:4:"𝅨";i:1;s:4:"𝅩";i:1;s:4:"𝅭";i:226;s:4:"𝅮";i:216;s:4:"𝅯";i:216;s:4:"𝅰";i:216;s:4:"𝅱";i:216;s:4:"𝅲";i:216;s:4:"𝅻";i:220;s:4:"𝅼";i:220;s:4:"𝅽";i:220;s:4:"𝅾";i:220;s:4:"𝅿";i:220;s:4:"𝆀";i:220;s:4:"𝆁";i:220;s:4:"𝆂";i:220;s:4:"𝆅";i:230;s:4:"𝆆";i:230;s:4:"𝆇";i:230;s:4:"𝆈";i:230;s:4:"𝆉";i:230;s:4:"𝆊";i:220;s:4:"𝆋";i:220;s:4:"𝆪";i:230;s:4:"𝆫";i:230;s:4:"𝆬";i:230;s:4:"𝆭";i:230;s:4:"𝉂";i:230;s:4:"𝉃";i:230;s:4:"𝉄";i:230;}' );
+$utfCanonicalComp = unserialize( 'a:1868:{s:3:"À";s:2:"À";s:3:"Á";s:2:"Á";s:3:"Â";s:2:"Â";s:3:"Ã";s:2:"Ã";s:3:"Ä";s:2:"Ä";s:3:"Å";s:2:"Å";s:3:"Ç";s:2:"Ç";s:3:"È";s:2:"È";s:3:"É";s:2:"É";s:3:"Ê";s:2:"Ê";s:3:"Ë";s:2:"Ë";s:3:"Ì";s:2:"Ì";s:3:"Í";s:2:"Í";s:3:"Î";s:2:"Î";s:3:"Ï";s:2:"Ï";s:3:"Ñ";s:2:"Ñ";s:3:"Ò";s:2:"Ò";s:3:"Ó";s:2:"Ó";s:3:"Ô";s:2:"Ô";s:3:"Õ";s:2:"Õ";s:3:"Ö";s:2:"Ö";s:3:"Ù";s:2:"Ù";s:3:"Ú";s:2:"Ú";s:3:"Û";s:2:"Û";s:3:"Ü";s:2:"Ü";s:3:"Ý";s:2:"Ý";s:3:"à";s:2:"à";s:3:"á";s:2:"á";s:3:"â";s:2:"â";s:3:"ã";s:2:"ã";s:3:"ä";s:2:"ä";s:3:"å";s:2:"å";s:3:"ç";s:2:"ç";s:3:"è";s:2:"è";s:3:"é";s:2:"é";s:3:"ê";s:2:"ê";s:3:"ë";s:2:"ë";s:3:"ì";s:2:"ì";s:3:"í";s:2:"í";s:3:"î";s:2:"î";s:3:"ï";s:2:"ï";s:3:"ñ";s:2:"ñ";s:3:"ò";s:2:"ò";s:3:"ó";s:2:"ó";s:3:"ô";s:2:"ô";s:3:"õ";s:2:"õ";s:3:"ö";s:2:"ö";s:3:"ù";s:2:"ù";s:3:"ú";s:2:"ú";s:3:"û";s:2:"û";s:3:"ü";s:2:"ü";s:3:"ý";s:2:"ý";s:3:"ÿ";s:2:"ÿ";s:3:"Ā";s:2:"Ā";s:3:"ā";s:2:"ā";s:3:"Ă";s:2:"Ă";s:3:"ă";s:2:"ă";s:3:"Ą";s:2:"Ą";s:3:"ą";s:2:"ą";s:3:"Ć";s:2:"Ć";s:3:"ć";s:2:"ć";s:3:"Ĉ";s:2:"Ĉ";s:3:"ĉ";s:2:"ĉ";s:3:"Ċ";s:2:"Ċ";s:3:"ċ";s:2:"ċ";s:3:"Č";s:2:"Č";s:3:"č";s:2:"č";s:3:"Ď";s:2:"Ď";s:3:"ď";s:2:"ď";s:3:"Ē";s:2:"Ē";s:3:"ē";s:2:"ē";s:3:"Ĕ";s:2:"Ĕ";s:3:"ĕ";s:2:"ĕ";s:3:"Ė";s:2:"Ė";s:3:"ė";s:2:"ė";s:3:"Ę";s:2:"Ę";s:3:"ę";s:2:"ę";s:3:"Ě";s:2:"Ě";s:3:"ě";s:2:"ě";s:3:"Ĝ";s:2:"Ĝ";s:3:"ĝ";s:2:"ĝ";s:3:"Ğ";s:2:"Ğ";s:3:"ğ";s:2:"ğ";s:3:"Ġ";s:2:"Ġ";s:3:"ġ";s:2:"ġ";s:3:"Ģ";s:2:"Ģ";s:3:"ģ";s:2:"ģ";s:3:"Ĥ";s:2:"Ĥ";s:3:"ĥ";s:2:"ĥ";s:3:"Ĩ";s:2:"Ĩ";s:3:"ĩ";s:2:"ĩ";s:3:"Ī";s:2:"Ī";s:3:"ī";s:2:"ī";s:3:"Ĭ";s:2:"Ĭ";s:3:"ĭ";s:2:"ĭ";s:3:"Į";s:2:"Į";s:3:"į";s:2:"į";s:3:"İ";s:2:"İ";s:3:"Ĵ";s:2:"Ĵ";s:3:"ĵ";s:2:"ĵ";s:3:"Ķ";s:2:"Ķ";s:3:"ķ";s:2:"ķ";s:3:"Ĺ";s:2:"Ĺ";s:3:"ĺ";s:2:"ĺ";s:3:"Ļ";s:2:"Ļ";s:3:"ļ";s:2:"ļ";s:3:"Ľ";s:2:"Ľ";s:3:"ľ";s:2:"ľ";s:3:"Ń";s:2:"Ń";s:3:"ń";s:2:"ń";s:3:"Ņ";s:2:"Ņ";s:3:"ņ";s:2:"ņ";s:3:"Ň";s:2:"Ň";s:3:"ň";s:2:"ň";s:3:"Ō";s:2:"Ō";s:3:"ō";s:2:"ō";s:3:"Ŏ";s:2:"Ŏ";s:3:"ŏ";s:2:"ŏ";s:3:"Ő";s:2:"Ő";s:3:"ő";s:2:"ő";s:3:"Ŕ";s:2:"Ŕ";s:3:"ŕ";s:2:"ŕ";s:3:"Ŗ";s:2:"Ŗ";s:3:"ŗ";s:2:"ŗ";s:3:"Ř";s:2:"Ř";s:3:"ř";s:2:"ř";s:3:"Ś";s:2:"Ś";s:3:"ś";s:2:"ś";s:3:"Ŝ";s:2:"Ŝ";s:3:"ŝ";s:2:"ŝ";s:3:"Ş";s:2:"Ş";s:3:"ş";s:2:"ş";s:3:"Š";s:2:"Š";s:3:"š";s:2:"š";s:3:"Ţ";s:2:"Ţ";s:3:"ţ";s:2:"ţ";s:3:"Ť";s:2:"Ť";s:3:"ť";s:2:"ť";s:3:"Ũ";s:2:"Ũ";s:3:"ũ";s:2:"ũ";s:3:"Ū";s:2:"Ū";s:3:"ū";s:2:"ū";s:3:"Ŭ";s:2:"Ŭ";s:3:"ŭ";s:2:"ŭ";s:3:"Ů";s:2:"Ů";s:3:"ů";s:2:"ů";s:3:"Ű";s:2:"Ű";s:3:"ű";s:2:"ű";s:3:"Ų";s:2:"Ų";s:3:"ų";s:2:"ų";s:3:"Ŵ";s:2:"Ŵ";s:3:"ŵ";s:2:"ŵ";s:3:"Ŷ";s:2:"Ŷ";s:3:"ŷ";s:2:"ŷ";s:3:"Ÿ";s:2:"Ÿ";s:3:"Ź";s:2:"Ź";s:3:"ź";s:2:"ź";s:3:"Ż";s:2:"Ż";s:3:"ż";s:2:"ż";s:3:"Ž";s:2:"Ž";s:3:"ž";s:2:"ž";s:3:"Ơ";s:2:"Ơ";s:3:"ơ";s:2:"ơ";s:3:"Ư";s:2:"Ư";s:3:"ư";s:2:"ư";s:3:"Ǎ";s:2:"Ǎ";s:3:"ǎ";s:2:"ǎ";s:3:"Ǐ";s:2:"Ǐ";s:3:"ǐ";s:2:"ǐ";s:3:"Ǒ";s:2:"Ǒ";s:3:"ǒ";s:2:"ǒ";s:3:"Ǔ";s:2:"Ǔ";s:3:"ǔ";s:2:"ǔ";s:4:"Ǖ";s:2:"Ǖ";s:4:"ǖ";s:2:"ǖ";s:4:"Ǘ";s:2:"Ǘ";s:4:"ǘ";s:2:"ǘ";s:4:"Ǚ";s:2:"Ǚ";s:4:"ǚ";s:2:"ǚ";s:4:"Ǜ";s:2:"Ǜ";s:4:"ǜ";s:2:"ǜ";s:4:"Ǟ";s:2:"Ǟ";s:4:"ǟ";s:2:"ǟ";s:4:"Ǡ";s:2:"Ǡ";s:4:"ǡ";s:2:"ǡ";s:4:"Ǣ";s:2:"Ǣ";s:4:"ǣ";s:2:"ǣ";s:3:"Ǧ";s:2:"Ǧ";s:3:"ǧ";s:2:"ǧ";s:3:"Ǩ";s:2:"Ǩ";s:3:"ǩ";s:2:"ǩ";s:3:"Ǫ";s:2:"Ǫ";s:3:"ǫ";s:2:"ǫ";s:4:"Ǭ";s:2:"Ǭ";s:4:"ǭ";s:2:"ǭ";s:4:"Ǯ";s:2:"Ǯ";s:4:"ǯ";s:2:"ǯ";s:3:"ǰ";s:2:"ǰ";s:3:"Ǵ";s:2:"Ǵ";s:3:"ǵ";s:2:"ǵ";s:3:"Ǹ";s:2:"Ǹ";s:3:"ǹ";s:2:"ǹ";s:4:"Ǻ";s:2:"Ǻ";s:4:"ǻ";s:2:"ǻ";s:4:"Ǽ";s:2:"Ǽ";s:4:"ǽ";s:2:"ǽ";s:4:"Ǿ";s:2:"Ǿ";s:4:"ǿ";s:2:"ǿ";s:3:"Ȁ";s:2:"Ȁ";s:3:"ȁ";s:2:"ȁ";s:3:"Ȃ";s:2:"Ȃ";s:3:"ȃ";s:2:"ȃ";s:3:"Ȅ";s:2:"Ȅ";s:3:"ȅ";s:2:"ȅ";s:3:"Ȇ";s:2:"Ȇ";s:3:"ȇ";s:2:"ȇ";s:3:"Ȉ";s:2:"Ȉ";s:3:"ȉ";s:2:"ȉ";s:3:"Ȋ";s:2:"Ȋ";s:3:"ȋ";s:2:"ȋ";s:3:"Ȍ";s:2:"Ȍ";s:3:"ȍ";s:2:"ȍ";s:3:"Ȏ";s:2:"Ȏ";s:3:"ȏ";s:2:"ȏ";s:3:"Ȑ";s:2:"Ȑ";s:3:"ȑ";s:2:"ȑ";s:3:"Ȓ";s:2:"Ȓ";s:3:"ȓ";s:2:"ȓ";s:3:"Ȕ";s:2:"Ȕ";s:3:"ȕ";s:2:"ȕ";s:3:"Ȗ";s:2:"Ȗ";s:3:"ȗ";s:2:"ȗ";s:3:"Ș";s:2:"Ș";s:3:"ș";s:2:"ș";s:3:"Ț";s:2:"Ț";s:3:"ț";s:2:"ț";s:3:"Ȟ";s:2:"Ȟ";s:3:"ȟ";s:2:"ȟ";s:3:"Ȧ";s:2:"Ȧ";s:3:"ȧ";s:2:"ȧ";s:3:"Ȩ";s:2:"Ȩ";s:3:"ȩ";s:2:"ȩ";s:4:"Ȫ";s:2:"Ȫ";s:4:"ȫ";s:2:"ȫ";s:4:"Ȭ";s:2:"Ȭ";s:4:"ȭ";s:2:"ȭ";s:3:"Ȯ";s:2:"Ȯ";s:3:"ȯ";s:2:"ȯ";s:4:"Ȱ";s:2:"Ȱ";s:4:"ȱ";s:2:"ȱ";s:3:"Ȳ";s:2:"Ȳ";s:3:"ȳ";s:2:"ȳ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:4:"̈́";s:2:"̈́";s:2:"ʹ";s:2:"ʹ";s:1:";";s:2:";";s:4:"΅";s:2:"΅";s:4:"Ά";s:2:"Ά";s:2:"·";s:2:"·";s:4:"Έ";s:2:"Έ";s:4:"Ή";s:2:"Ή";s:4:"Ί";s:2:"Ί";s:4:"Ό";s:2:"Ό";s:4:"Ύ";s:2:"Ύ";s:4:"Ώ";s:2:"Ώ";s:4:"ΐ";s:2:"ΐ";s:4:"Ϊ";s:2:"Ϊ";s:4:"Ϋ";s:2:"Ϋ";s:4:"ά";s:2:"ά";s:4:"έ";s:2:"έ";s:4:"ή";s:2:"ή";s:4:"ί";s:2:"ί";s:4:"ΰ";s:2:"ΰ";s:4:"ϊ";s:2:"ϊ";s:4:"ϋ";s:2:"ϋ";s:4:"ό";s:2:"ό";s:4:"ύ";s:2:"ύ";s:4:"ώ";s:2:"ώ";s:4:"ϓ";s:2:"ϓ";s:4:"ϔ";s:2:"ϔ";s:4:"Ѐ";s:2:"Ѐ";s:4:"Ё";s:2:"Ё";s:4:"Ѓ";s:2:"Ѓ";s:4:"Ї";s:2:"Ї";s:4:"Ќ";s:2:"Ќ";s:4:"Ѝ";s:2:"Ѝ";s:4:"Ў";s:2:"Ў";s:4:"Й";s:2:"Й";s:4:"й";s:2:"й";s:4:"ѐ";s:2:"ѐ";s:4:"ё";s:2:"ё";s:4:"ѓ";s:2:"ѓ";s:4:"ї";s:2:"ї";s:4:"ќ";s:2:"ќ";s:4:"ѝ";s:2:"ѝ";s:4:"ў";s:2:"ў";s:4:"Ѷ";s:2:"Ѷ";s:4:"ѷ";s:2:"ѷ";s:4:"Ӂ";s:2:"Ӂ";s:4:"ӂ";s:2:"ӂ";s:4:"Ӑ";s:2:"Ӑ";s:4:"ӑ";s:2:"ӑ";s:4:"Ӓ";s:2:"Ӓ";s:4:"ӓ";s:2:"ӓ";s:4:"Ӗ";s:2:"Ӗ";s:4:"ӗ";s:2:"ӗ";s:4:"Ӛ";s:2:"Ӛ";s:4:"ӛ";s:2:"ӛ";s:4:"Ӝ";s:2:"Ӝ";s:4:"ӝ";s:2:"ӝ";s:4:"Ӟ";s:2:"Ӟ";s:4:"ӟ";s:2:"ӟ";s:4:"Ӣ";s:2:"Ӣ";s:4:"ӣ";s:2:"ӣ";s:4:"Ӥ";s:2:"Ӥ";s:4:"ӥ";s:2:"ӥ";s:4:"Ӧ";s:2:"Ӧ";s:4:"ӧ";s:2:"ӧ";s:4:"Ӫ";s:2:"Ӫ";s:4:"ӫ";s:2:"ӫ";s:4:"Ӭ";s:2:"Ӭ";s:4:"ӭ";s:2:"ӭ";s:4:"Ӯ";s:2:"Ӯ";s:4:"ӯ";s:2:"ӯ";s:4:"Ӱ";s:2:"Ӱ";s:4:"ӱ";s:2:"ӱ";s:4:"Ӳ";s:2:"Ӳ";s:4:"ӳ";s:2:"ӳ";s:4:"Ӵ";s:2:"Ӵ";s:4:"ӵ";s:2:"ӵ";s:4:"Ӹ";s:2:"Ӹ";s:4:"ӹ";s:2:"ӹ";s:4:"آ";s:2:"آ";s:4:"أ";s:2:"أ";s:4:"ؤ";s:2:"ؤ";s:4:"إ";s:2:"إ";s:4:"ئ";s:2:"ئ";s:4:"ۀ";s:2:"ۀ";s:4:"ۂ";s:2:"ۂ";s:4:"ۓ";s:2:"ۓ";s:6:"ऩ";s:3:"ऩ";s:6:"ऱ";s:3:"ऱ";s:6:"ऴ";s:3:"ऴ";s:6:"ো";s:3:"ো";s:6:"ৌ";s:3:"ৌ";s:6:"ୈ";s:3:"ୈ";s:6:"ୋ";s:3:"ୋ";s:6:"ୌ";s:3:"ୌ";s:6:"ஔ";s:3:"ஔ";s:6:"ொ";s:3:"ொ";s:6:"ோ";s:3:"ோ";s:6:"ௌ";s:3:"ௌ";s:6:"ై";s:3:"ై";s:6:"ೀ";s:3:"ೀ";s:6:"ೇ";s:3:"ೇ";s:6:"ೈ";s:3:"ೈ";s:6:"ೊ";s:3:"ೊ";s:6:"ೋ";s:3:"ೋ";s:6:"ൊ";s:3:"ൊ";s:6:"ോ";s:3:"ോ";s:6:"ൌ";s:3:"ൌ";s:6:"ේ";s:3:"ේ";s:6:"ො";s:3:"ො";s:6:"ෝ";s:3:"ෝ";s:6:"ෞ";s:3:"ෞ";s:6:"ཱི";s:3:"ཱི";s:6:"ཱུ";s:3:"ཱུ";s:6:"ཱྀ";s:3:"ཱྀ";s:6:"ဦ";s:3:"ဦ";s:6:"ᬆ";s:3:"ᬆ";s:6:"ᬈ";s:3:"ᬈ";s:6:"ᬊ";s:3:"ᬊ";s:6:"ᬌ";s:3:"ᬌ";s:6:"ᬎ";s:3:"ᬎ";s:6:"ᬒ";s:3:"ᬒ";s:6:"ᬻ";s:3:"ᬻ";s:6:"ᬽ";s:3:"ᬽ";s:6:"ᭀ";s:3:"ᭀ";s:6:"ᭁ";s:3:"ᭁ";s:6:"ᭃ";s:3:"ᭃ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:4:"Ḉ";s:3:"Ḉ";s:4:"ḉ";s:3:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:4:"Ḕ";s:3:"Ḕ";s:4:"ḕ";s:3:"ḕ";s:4:"Ḗ";s:3:"Ḗ";s:4:"ḗ";s:3:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:4:"Ḝ";s:3:"Ḝ";s:4:"ḝ";s:3:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:4:"Ḯ";s:3:"Ḯ";s:4:"ḯ";s:3:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:5:"Ḹ";s:3:"Ḹ";s:5:"ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:4:"Ṍ";s:3:"Ṍ";s:4:"ṍ";s:3:"ṍ";s:4:"Ṏ";s:3:"Ṏ";s:4:"ṏ";s:3:"ṏ";s:4:"Ṑ";s:3:"Ṑ";s:4:"ṑ";s:3:"ṑ";s:4:"Ṓ";s:3:"Ṓ";s:4:"ṓ";s:3:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:5:"Ṝ";s:3:"Ṝ";s:5:"ṝ";s:3:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:4:"Ṥ";s:3:"Ṥ";s:4:"ṥ";s:3:"ṥ";s:4:"Ṧ";s:3:"Ṧ";s:4:"ṧ";s:3:"ṧ";s:5:"Ṩ";s:3:"Ṩ";s:5:"ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:4:"Ṹ";s:3:"Ṹ";s:4:"ṹ";s:3:"ṹ";s:4:"Ṻ";s:3:"Ṻ";s:4:"ṻ";s:3:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:4:"ẛ";s:3:"ẛ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:4:"Ấ";s:3:"Ấ";s:4:"ấ";s:3:"ấ";s:4:"Ầ";s:3:"Ầ";s:4:"ầ";s:3:"ầ";s:4:"Ẩ";s:3:"Ẩ";s:4:"ẩ";s:3:"ẩ";s:4:"Ẫ";s:3:"Ẫ";s:4:"ẫ";s:3:"ẫ";s:5:"Ậ";s:3:"Ậ";s:5:"ậ";s:3:"ậ";s:4:"Ắ";s:3:"Ắ";s:4:"ắ";s:3:"ắ";s:4:"Ằ";s:3:"Ằ";s:4:"ằ";s:3:"ằ";s:4:"Ẳ";s:3:"Ẳ";s:4:"ẳ";s:3:"ẳ";s:4:"Ẵ";s:3:"Ẵ";s:4:"ẵ";s:3:"ẵ";s:5:"Ặ";s:3:"Ặ";s:5:"ặ";s:3:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:4:"Ế";s:3:"Ế";s:4:"ế";s:3:"ế";s:4:"Ề";s:3:"Ề";s:4:"ề";s:3:"ề";s:4:"Ể";s:3:"Ể";s:4:"ể";s:3:"ể";s:4:"Ễ";s:3:"Ễ";s:4:"ễ";s:3:"ễ";s:5:"Ệ";s:3:"Ệ";s:5:"ệ";s:3:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:4:"Ố";s:3:"Ố";s:4:"ố";s:3:"ố";s:4:"Ồ";s:3:"Ồ";s:4:"ồ";s:3:"ồ";s:4:"Ổ";s:3:"Ổ";s:4:"ổ";s:3:"ổ";s:4:"Ỗ";s:3:"Ỗ";s:4:"ỗ";s:3:"ỗ";s:5:"Ộ";s:3:"Ộ";s:5:"ộ";s:3:"ộ";s:4:"Ớ";s:3:"Ớ";s:4:"ớ";s:3:"ớ";s:4:"Ờ";s:3:"Ờ";s:4:"ờ";s:3:"ờ";s:4:"Ở";s:3:"Ở";s:4:"ở";s:3:"ở";s:4:"Ỡ";s:3:"Ỡ";s:4:"ỡ";s:3:"ỡ";s:4:"Ợ";s:3:"Ợ";s:4:"ợ";s:3:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:4:"Ứ";s:3:"Ứ";s:4:"ứ";s:3:"ứ";s:4:"Ừ";s:3:"Ừ";s:4:"ừ";s:3:"ừ";s:4:"Ử";s:3:"Ử";s:4:"ử";s:3:"ử";s:4:"Ữ";s:3:"Ữ";s:4:"ữ";s:3:"ữ";s:4:"Ự";s:3:"Ự";s:4:"ự";s:3:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:4:"ἀ";s:3:"ἀ";s:4:"ἁ";s:3:"ἁ";s:5:"ἂ";s:3:"ἂ";s:5:"ἃ";s:3:"ἃ";s:5:"ἄ";s:3:"ἄ";s:5:"ἅ";s:3:"ἅ";s:5:"ἆ";s:3:"ἆ";s:5:"ἇ";s:3:"ἇ";s:4:"Ἀ";s:3:"Ἀ";s:4:"Ἁ";s:3:"Ἁ";s:5:"Ἂ";s:3:"Ἂ";s:5:"Ἃ";s:3:"Ἃ";s:5:"Ἄ";s:3:"Ἄ";s:5:"Ἅ";s:3:"Ἅ";s:5:"Ἆ";s:3:"Ἆ";s:5:"Ἇ";s:3:"Ἇ";s:4:"ἐ";s:3:"ἐ";s:4:"ἑ";s:3:"ἑ";s:5:"ἒ";s:3:"ἒ";s:5:"ἓ";s:3:"ἓ";s:5:"ἔ";s:3:"ἔ";s:5:"ἕ";s:3:"ἕ";s:4:"Ἐ";s:3:"Ἐ";s:4:"Ἑ";s:3:"Ἑ";s:5:"Ἒ";s:3:"Ἒ";s:5:"Ἓ";s:3:"Ἓ";s:5:"Ἔ";s:3:"Ἔ";s:5:"Ἕ";s:3:"Ἕ";s:4:"ἠ";s:3:"ἠ";s:4:"ἡ";s:3:"ἡ";s:5:"ἢ";s:3:"ἢ";s:5:"ἣ";s:3:"ἣ";s:5:"ἤ";s:3:"ἤ";s:5:"ἥ";s:3:"ἥ";s:5:"ἦ";s:3:"ἦ";s:5:"ἧ";s:3:"ἧ";s:4:"Ἠ";s:3:"Ἠ";s:4:"Ἡ";s:3:"Ἡ";s:5:"Ἢ";s:3:"Ἢ";s:5:"Ἣ";s:3:"Ἣ";s:5:"Ἤ";s:3:"Ἤ";s:5:"Ἥ";s:3:"Ἥ";s:5:"Ἦ";s:3:"Ἦ";s:5:"Ἧ";s:3:"Ἧ";s:4:"ἰ";s:3:"ἰ";s:4:"ἱ";s:3:"ἱ";s:5:"ἲ";s:3:"ἲ";s:5:"ἳ";s:3:"ἳ";s:5:"ἴ";s:3:"ἴ";s:5:"ἵ";s:3:"ἵ";s:5:"ἶ";s:3:"ἶ";s:5:"ἷ";s:3:"ἷ";s:4:"Ἰ";s:3:"Ἰ";s:4:"Ἱ";s:3:"Ἱ";s:5:"Ἲ";s:3:"Ἲ";s:5:"Ἳ";s:3:"Ἳ";s:5:"Ἴ";s:3:"Ἴ";s:5:"Ἵ";s:3:"Ἵ";s:5:"Ἶ";s:3:"Ἶ";s:5:"Ἷ";s:3:"Ἷ";s:4:"ὀ";s:3:"ὀ";s:4:"ὁ";s:3:"ὁ";s:5:"ὂ";s:3:"ὂ";s:5:"ὃ";s:3:"ὃ";s:5:"ὄ";s:3:"ὄ";s:5:"ὅ";s:3:"ὅ";s:4:"Ὀ";s:3:"Ὀ";s:4:"Ὁ";s:3:"Ὁ";s:5:"Ὂ";s:3:"Ὂ";s:5:"Ὃ";s:3:"Ὃ";s:5:"Ὄ";s:3:"Ὄ";s:5:"Ὅ";s:3:"Ὅ";s:4:"ὐ";s:3:"ὐ";s:4:"ὑ";s:3:"ὑ";s:5:"ὒ";s:3:"ὒ";s:5:"ὓ";s:3:"ὓ";s:5:"ὔ";s:3:"ὔ";s:5:"ὕ";s:3:"ὕ";s:5:"ὖ";s:3:"ὖ";s:5:"ὗ";s:3:"ὗ";s:4:"Ὑ";s:3:"Ὑ";s:5:"Ὓ";s:3:"Ὓ";s:5:"Ὕ";s:3:"Ὕ";s:5:"Ὗ";s:3:"Ὗ";s:4:"ὠ";s:3:"ὠ";s:4:"ὡ";s:3:"ὡ";s:5:"ὢ";s:3:"ὢ";s:5:"ὣ";s:3:"ὣ";s:5:"ὤ";s:3:"ὤ";s:5:"ὥ";s:3:"ὥ";s:5:"ὦ";s:3:"ὦ";s:5:"ὧ";s:3:"ὧ";s:4:"Ὠ";s:3:"Ὠ";s:4:"Ὡ";s:3:"Ὡ";s:5:"Ὢ";s:3:"Ὢ";s:5:"Ὣ";s:3:"Ὣ";s:5:"Ὤ";s:3:"Ὤ";s:5:"Ὥ";s:3:"Ὥ";s:5:"Ὦ";s:3:"Ὦ";s:5:"Ὧ";s:3:"Ὧ";s:4:"ὰ";s:3:"ὰ";s:2:"ά";s:3:"ά";s:4:"ὲ";s:3:"ὲ";s:2:"έ";s:3:"έ";s:4:"ὴ";s:3:"ὴ";s:2:"ή";s:3:"ή";s:4:"ὶ";s:3:"ὶ";s:2:"ί";s:3:"ί";s:4:"ὸ";s:3:"ὸ";s:2:"ό";s:3:"ό";s:4:"ὺ";s:3:"ὺ";s:2:"ύ";s:3:"ύ";s:4:"ὼ";s:3:"ὼ";s:2:"ώ";s:3:"ώ";s:5:"ᾀ";s:3:"ᾀ";s:5:"ᾁ";s:3:"ᾁ";s:5:"ᾂ";s:3:"ᾂ";s:5:"ᾃ";s:3:"ᾃ";s:5:"ᾄ";s:3:"ᾄ";s:5:"ᾅ";s:3:"ᾅ";s:5:"ᾆ";s:3:"ᾆ";s:5:"ᾇ";s:3:"ᾇ";s:5:"ᾈ";s:3:"ᾈ";s:5:"ᾉ";s:3:"ᾉ";s:5:"ᾊ";s:3:"ᾊ";s:5:"ᾋ";s:3:"ᾋ";s:5:"ᾌ";s:3:"ᾌ";s:5:"ᾍ";s:3:"ᾍ";s:5:"ᾎ";s:3:"ᾎ";s:5:"ᾏ";s:3:"ᾏ";s:5:"ᾐ";s:3:"ᾐ";s:5:"ᾑ";s:3:"ᾑ";s:5:"ᾒ";s:3:"ᾒ";s:5:"ᾓ";s:3:"ᾓ";s:5:"ᾔ";s:3:"ᾔ";s:5:"ᾕ";s:3:"ᾕ";s:5:"ᾖ";s:3:"ᾖ";s:5:"ᾗ";s:3:"ᾗ";s:5:"ᾘ";s:3:"ᾘ";s:5:"ᾙ";s:3:"ᾙ";s:5:"ᾚ";s:3:"ᾚ";s:5:"ᾛ";s:3:"ᾛ";s:5:"ᾜ";s:3:"ᾜ";s:5:"ᾝ";s:3:"ᾝ";s:5:"ᾞ";s:3:"ᾞ";s:5:"ᾟ";s:3:"ᾟ";s:5:"ᾠ";s:3:"ᾠ";s:5:"ᾡ";s:3:"ᾡ";s:5:"ᾢ";s:3:"ᾢ";s:5:"ᾣ";s:3:"ᾣ";s:5:"ᾤ";s:3:"ᾤ";s:5:"ᾥ";s:3:"ᾥ";s:5:"ᾦ";s:3:"ᾦ";s:5:"ᾧ";s:3:"ᾧ";s:5:"ᾨ";s:3:"ᾨ";s:5:"ᾩ";s:3:"ᾩ";s:5:"ᾪ";s:3:"ᾪ";s:5:"ᾫ";s:3:"ᾫ";s:5:"ᾬ";s:3:"ᾬ";s:5:"ᾭ";s:3:"ᾭ";s:5:"ᾮ";s:3:"ᾮ";s:5:"ᾯ";s:3:"ᾯ";s:4:"ᾰ";s:3:"ᾰ";s:4:"ᾱ";s:3:"ᾱ";s:5:"ᾲ";s:3:"ᾲ";s:4:"ᾳ";s:3:"ᾳ";s:4:"ᾴ";s:3:"ᾴ";s:4:"ᾶ";s:3:"ᾶ";s:5:"ᾷ";s:3:"ᾷ";s:4:"Ᾰ";s:3:"Ᾰ";s:4:"Ᾱ";s:3:"Ᾱ";s:4:"Ὰ";s:3:"Ὰ";s:2:"Ά";s:3:"Ά";s:4:"ᾼ";s:3:"ᾼ";s:2:"ι";s:3:"ι";s:4:"῁";s:3:"῁";s:5:"ῂ";s:3:"ῂ";s:4:"ῃ";s:3:"ῃ";s:4:"ῄ";s:3:"ῄ";s:4:"ῆ";s:3:"ῆ";s:5:"ῇ";s:3:"ῇ";s:4:"Ὲ";s:3:"Ὲ";s:2:"Έ";s:3:"Έ";s:4:"Ὴ";s:3:"Ὴ";s:2:"Ή";s:3:"Ή";s:4:"ῌ";s:3:"ῌ";s:5:"῍";s:3:"῍";s:5:"῎";s:3:"῎";s:5:"῏";s:3:"῏";s:4:"ῐ";s:3:"ῐ";s:4:"ῑ";s:3:"ῑ";s:4:"ῒ";s:3:"ῒ";s:2:"ΐ";s:3:"ΐ";s:4:"ῖ";s:3:"ῖ";s:4:"ῗ";s:3:"ῗ";s:4:"Ῐ";s:3:"Ῐ";s:4:"Ῑ";s:3:"Ῑ";s:4:"Ὶ";s:3:"Ὶ";s:2:"Ί";s:3:"Ί";s:5:"῝";s:3:"῝";s:5:"῞";s:3:"῞";s:5:"῟";s:3:"῟";s:4:"ῠ";s:3:"ῠ";s:4:"ῡ";s:3:"ῡ";s:4:"ῢ";s:3:"ῢ";s:2:"ΰ";s:3:"ΰ";s:4:"ῤ";s:3:"ῤ";s:4:"ῥ";s:3:"ῥ";s:4:"ῦ";s:3:"ῦ";s:4:"ῧ";s:3:"ῧ";s:4:"Ῠ";s:3:"Ῠ";s:4:"Ῡ";s:3:"Ῡ";s:4:"Ὺ";s:3:"Ὺ";s:2:"Ύ";s:3:"Ύ";s:4:"Ῥ";s:3:"Ῥ";s:4:"῭";s:3:"῭";s:2:"΅";s:3:"΅";s:1:"`";s:3:"`";s:5:"ῲ";s:3:"ῲ";s:4:"ῳ";s:3:"ῳ";s:4:"ῴ";s:3:"ῴ";s:4:"ῶ";s:3:"ῶ";s:5:"ῷ";s:3:"ῷ";s:4:"Ὸ";s:3:"Ὸ";s:2:"Ό";s:3:"Ό";s:4:"Ὼ";s:3:"Ὼ";s:2:"Ώ";s:3:"Ώ";s:4:"ῼ";s:3:"ῼ";s:2:"´";s:3:"´";s:3:" ";s:3:" ";s:3:" ";s:3:" ";s:2:"Ω";s:3:"Ω";s:1:"K";s:3:"K";s:2:"Å";s:3:"Å";s:5:"↚";s:3:"↚";s:5:"↛";s:3:"↛";s:5:"↮";s:3:"↮";s:5:"⇍";s:3:"⇍";s:5:"⇎";s:3:"⇎";s:5:"⇏";s:3:"⇏";s:5:"∄";s:3:"∄";s:5:"∉";s:3:"∉";s:5:"∌";s:3:"∌";s:5:"∤";s:3:"∤";s:5:"∦";s:3:"∦";s:5:"≁";s:3:"≁";s:5:"≄";s:3:"≄";s:5:"≇";s:3:"≇";s:5:"≉";s:3:"≉";s:3:"≠";s:3:"≠";s:5:"≢";s:3:"≢";s:5:"≭";s:3:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:5:"≰";s:3:"≰";s:5:"≱";s:3:"≱";s:5:"≴";s:3:"≴";s:5:"≵";s:3:"≵";s:5:"≸";s:3:"≸";s:5:"≹";s:3:"≹";s:5:"⊀";s:3:"⊀";s:5:"⊁";s:3:"⊁";s:5:"⊄";s:3:"⊄";s:5:"⊅";s:3:"⊅";s:5:"⊈";s:3:"⊈";s:5:"⊉";s:3:"⊉";s:5:"⊬";s:3:"⊬";s:5:"⊭";s:3:"⊭";s:5:"⊮";s:3:"⊮";s:5:"⊯";s:3:"⊯";s:5:"⋠";s:3:"⋠";s:5:"⋡";s:3:"⋡";s:5:"⋢";s:3:"⋢";s:5:"⋣";s:3:"⋣";s:5:"⋪";s:3:"⋪";s:5:"⋫";s:3:"⋫";s:5:"⋬";s:3:"⋬";s:5:"⋭";s:3:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:6:"が";s:3:"が";s:6:"ぎ";s:3:"ぎ";s:6:"ぐ";s:3:"ぐ";s:6:"げ";s:3:"げ";s:6:"ご";s:3:"ご";s:6:"ざ";s:3:"ざ";s:6:"じ";s:3:"じ";s:6:"ず";s:3:"ず";s:6:"ぜ";s:3:"ぜ";s:6:"ぞ";s:3:"ぞ";s:6:"だ";s:3:"だ";s:6:"ぢ";s:3:"ぢ";s:6:"づ";s:3:"づ";s:6:"で";s:3:"で";s:6:"ど";s:3:"ど";s:6:"ば";s:3:"ば";s:6:"ぱ";s:3:"ぱ";s:6:"び";s:3:"び";s:6:"ぴ";s:3:"ぴ";s:6:"ぶ";s:3:"ぶ";s:6:"ぷ";s:3:"ぷ";s:6:"べ";s:3:"べ";s:6:"ぺ";s:3:"ぺ";s:6:"ぼ";s:3:"ぼ";s:6:"ぽ";s:3:"ぽ";s:6:"ゔ";s:3:"ゔ";s:6:"ゞ";s:3:"ゞ";s:6:"ガ";s:3:"ガ";s:6:"ギ";s:3:"ギ";s:6:"グ";s:3:"グ";s:6:"ゲ";s:3:"ゲ";s:6:"ゴ";s:3:"ゴ";s:6:"ザ";s:3:"ザ";s:6:"ジ";s:3:"ジ";s:6:"ズ";s:3:"ズ";s:6:"ゼ";s:3:"ゼ";s:6:"ゾ";s:3:"ゾ";s:6:"ダ";s:3:"ダ";s:6:"ヂ";s:3:"ヂ";s:6:"ヅ";s:3:"ヅ";s:6:"デ";s:3:"デ";s:6:"ド";s:3:"ド";s:6:"バ";s:3:"バ";s:6:"パ";s:3:"パ";s:6:"ビ";s:3:"ビ";s:6:"ピ";s:3:"ピ";s:6:"ブ";s:3:"ブ";s:6:"プ";s:3:"プ";s:6:"ベ";s:3:"ベ";s:6:"ペ";s:3:"ペ";s:6:"ボ";s:3:"ボ";s:6:"ポ";s:3:"ポ";s:6:"ヴ";s:3:"ヴ";s:6:"ヷ";s:3:"ヷ";s:6:"ヸ";s:3:"ヸ";s:6:"ヹ";s:3:"ヹ";s:6:"ヺ";s:3:"ヺ";s:6:"ヾ";s:3:"ヾ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:4:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:4:"廊";s:3:"朗";s:4:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:4:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:4:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:4:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:4:"異";s:3:"北";s:4:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:4:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:4:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:4:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:4:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:4:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:4:"侮";s:3:"僧";s:4:"僧";s:3:"免";s:4:"免";s:3:"勉";s:4:"勉";s:3:"勤";s:4:"勤";s:3:"卑";s:4:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:4:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:4:"屮";s:3:"悔";s:4:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:4:"憎";s:3:"懲";s:4:"懲";s:3:"敏";s:4:"敏";s:3:"既";s:3:"既";s:3:"暑";s:4:"暑";s:3:"梅";s:4:"梅";s:3:"海";s:4:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:4:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:4:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:4:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"著";s:4:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"恵";s:3:"恵";s:4:"𤋮";s:3:"𤋮";s:3:"舘";s:3:"舘";s:3:"並";s:3:"並";s:3:"况";s:4:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:4:"勇";s:3:"勺";s:4:"勺";s:3:"啕";s:3:"啕";s:3:"喙";s:4:"喙";s:3:"嗢";s:3:"嗢";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:4:"慎";s:3:"愈";s:3:"愈";s:3:"慠";s:3:"慠";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"望";s:4:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"滛";s:3:"滛";s:3:"滋";s:4:"滋";s:3:"瀞";s:4:"瀞";s:3:"瞧";s:3:"瞧";s:3:"爵";s:4:"爵";s:3:"犯";s:3:"犯";s:3:"瑱";s:4:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"盛";s:3:"盛";s:3:"直";s:4:"直";s:3:"睊";s:4:"睊";s:3:"着";s:3:"着";s:3:"磌";s:4:"磌";s:3:"窱";s:3:"窱";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"缾";s:3:"缾";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:4:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"調";s:3:"調";s:3:"請";s:3:"請";s:3:"諭";s:4:"諭";s:3:"變";s:4:"變";s:3:"輸";s:4:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"韛";s:3:"韛";s:3:"頋";s:4:"頋";s:3:"鬒";s:4:"鬒";s:4:"𢡊";s:3:"𢡊";s:4:"𢡄";s:3:"𢡄";s:4:"𣏕";s:3:"𣏕";s:3:"㮝";s:4:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:4:"䀹";s:4:"𥉉";s:3:"𥉉";s:4:"𥳐";s:3:"𥳐";s:4:"𧻓";s:3:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:8:"𑂚";s:4:"𑂚";s:8:"𑂜";s:4:"𑂜";s:8:"𑂫";s:4:"𑂫";s:3:"丽";s:4:"丽";s:3:"丸";s:4:"丸";s:3:"乁";s:4:"乁";s:4:"𠄢";s:4:"𠄢";s:3:"你";s:4:"你";s:3:"侻";s:4:"侻";s:3:"倂";s:4:"倂";s:3:"偺";s:4:"偺";s:3:"備";s:4:"備";s:3:"像";s:4:"像";s:3:"㒞";s:4:"㒞";s:4:"𠘺";s:4:"𠘺";s:3:"兔";s:4:"兔";s:3:"兤";s:4:"兤";s:3:"具";s:4:"具";s:4:"𠔜";s:4:"𠔜";s:3:"㒹";s:4:"㒹";s:3:"內";s:4:"內";s:3:"再";s:4:"再";s:4:"𠕋";s:4:"𠕋";s:3:"冗";s:4:"冗";s:3:"冤";s:4:"冤";s:3:"仌";s:4:"仌";s:3:"冬";s:4:"冬";s:4:"𩇟";s:4:"𩇟";s:3:"凵";s:4:"凵";s:3:"刃";s:4:"刃";s:3:"㓟";s:4:"㓟";s:3:"刻";s:4:"刻";s:3:"剆";s:4:"剆";s:3:"割";s:4:"割";s:3:"剷";s:4:"剷";s:3:"㔕";s:4:"㔕";s:3:"包";s:4:"包";s:3:"匆";s:4:"匆";s:3:"卉";s:4:"卉";s:3:"博";s:4:"博";s:3:"即";s:4:"即";s:3:"卽";s:4:"卽";s:3:"卿";s:4:"卿";s:4:"𠨬";s:4:"𠨬";s:3:"灰";s:4:"灰";s:3:"及";s:4:"及";s:3:"叟";s:4:"叟";s:4:"𠭣";s:4:"𠭣";s:3:"叫";s:4:"叫";s:3:"叱";s:4:"叱";s:3:"吆";s:4:"吆";s:3:"咞";s:4:"咞";s:3:"吸";s:4:"吸";s:3:"呈";s:4:"呈";s:3:"周";s:4:"周";s:3:"咢";s:4:"咢";s:3:"哶";s:4:"哶";s:3:"唐";s:4:"唐";s:3:"啓";s:4:"啓";s:3:"啣";s:4:"啣";s:3:"善";s:4:"善";s:3:"喫";s:4:"喫";s:3:"喳";s:4:"喳";s:3:"嗂";s:4:"嗂";s:3:"圖";s:4:"圖";s:3:"圗";s:4:"圗";s:3:"噑";s:4:"噑";s:3:"噴";s:4:"噴";s:3:"壮";s:4:"壮";s:3:"城";s:4:"城";s:3:"埴";s:4:"埴";s:3:"堍";s:4:"堍";s:3:"型";s:4:"型";s:3:"堲";s:4:"堲";s:3:"報";s:4:"報";s:3:"墬";s:4:"墬";s:4:"𡓤";s:4:"𡓤";s:3:"売";s:4:"売";s:3:"壷";s:4:"壷";s:3:"夆";s:4:"夆";s:3:"多";s:4:"多";s:3:"夢";s:4:"夢";s:3:"奢";s:4:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:3:"姬";s:4:"姬";s:3:"娛";s:4:"娛";s:3:"娧";s:4:"娧";s:3:"姘";s:4:"姘";s:3:"婦";s:4:"婦";s:3:"㛮";s:4:"㛮";s:3:"㛼";s:4:"㛼";s:3:"嬈";s:4:"嬈";s:3:"嬾";s:4:"嬾";s:4:"𡧈";s:4:"𡧈";s:3:"寃";s:4:"寃";s:3:"寘";s:4:"寘";s:3:"寳";s:4:"寳";s:4:"𡬘";s:4:"𡬘";s:3:"寿";s:4:"寿";s:3:"将";s:4:"将";s:3:"当";s:4:"当";s:3:"尢";s:4:"尢";s:3:"㞁";s:4:"㞁";s:3:"屠";s:4:"屠";s:3:"峀";s:4:"峀";s:3:"岍";s:4:"岍";s:4:"𡷤";s:4:"𡷤";s:3:"嵃";s:4:"嵃";s:4:"𡷦";s:4:"𡷦";s:3:"嵮";s:4:"嵮";s:3:"嵫";s:4:"嵫";s:3:"嵼";s:4:"嵼";s:3:"巡";s:4:"巡";s:3:"巢";s:4:"巢";s:3:"㠯";s:4:"㠯";s:3:"巽";s:4:"巽";s:3:"帨";s:4:"帨";s:3:"帽";s:4:"帽";s:3:"幩";s:4:"幩";s:3:"㡢";s:4:"㡢";s:4:"𢆃";s:4:"𢆃";s:3:"㡼";s:4:"㡼";s:3:"庰";s:4:"庰";s:3:"庳";s:4:"庳";s:3:"庶";s:4:"庶";s:4:"𪎒";s:4:"𪎒";s:3:"廾";s:4:"廾";s:4:"𢌱";s:4:"𢌱";s:3:"舁";s:4:"舁";s:3:"弢";s:4:"弢";s:3:"㣇";s:4:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:3:"形";s:4:"形";s:3:"彫";s:4:"彫";s:3:"㣣";s:4:"㣣";s:3:"徚";s:4:"徚";s:3:"忍";s:4:"忍";s:3:"志";s:4:"志";s:3:"忹";s:4:"忹";s:3:"悁";s:4:"悁";s:3:"㤺";s:4:"㤺";s:3:"㤜";s:4:"㤜";s:4:"𢛔";s:4:"𢛔";s:3:"惇";s:4:"惇";s:3:"慈";s:4:"慈";s:3:"慌";s:4:"慌";s:3:"慺";s:4:"慺";s:3:"憲";s:4:"憲";s:3:"憤";s:4:"憤";s:3:"憯";s:4:"憯";s:3:"懞";s:4:"懞";s:3:"成";s:4:"成";s:3:"戛";s:4:"戛";s:3:"扝";s:4:"扝";s:3:"抱";s:4:"抱";s:3:"拔";s:4:"拔";s:3:"捐";s:4:"捐";s:4:"𢬌";s:4:"𢬌";s:3:"挽";s:4:"挽";s:3:"拼";s:4:"拼";s:3:"捨";s:4:"捨";s:3:"掃";s:4:"掃";s:3:"揤";s:4:"揤";s:4:"𢯱";s:4:"𢯱";s:3:"搢";s:4:"搢";s:3:"揅";s:4:"揅";s:3:"掩";s:4:"掩";s:3:"㨮";s:4:"㨮";s:3:"摩";s:4:"摩";s:3:"摾";s:4:"摾";s:3:"撝";s:4:"撝";s:3:"摷";s:4:"摷";s:3:"㩬";s:4:"㩬";s:3:"敬";s:4:"敬";s:4:"𣀊";s:4:"𣀊";s:3:"旣";s:4:"旣";s:3:"書";s:4:"書";s:3:"晉";s:4:"晉";s:3:"㬙";s:4:"㬙";s:3:"㬈";s:4:"㬈";s:3:"㫤";s:4:"㫤";s:3:"冒";s:4:"冒";s:3:"冕";s:4:"冕";s:3:"最";s:4:"最";s:3:"暜";s:4:"暜";s:3:"肭";s:4:"肭";s:3:"䏙";s:4:"䏙";s:3:"朡";s:4:"朡";s:3:"杞";s:4:"杞";s:3:"杓";s:4:"杓";s:4:"𣏃";s:4:"𣏃";s:3:"㭉";s:4:"㭉";s:3:"柺";s:4:"柺";s:3:"枅";s:4:"枅";s:3:"桒";s:4:"桒";s:4:"𣑭";s:4:"𣑭";s:3:"梎";s:4:"梎";s:3:"栟";s:4:"栟";s:3:"椔";s:4:"椔";s:3:"楂";s:4:"楂";s:3:"榣";s:4:"榣";s:3:"槪";s:4:"槪";s:3:"檨";s:4:"檨";s:4:"𣚣";s:4:"𣚣";s:3:"櫛";s:4:"櫛";s:3:"㰘";s:4:"㰘";s:3:"次";s:4:"次";s:4:"𣢧";s:4:"𣢧";s:3:"歔";s:4:"歔";s:3:"㱎";s:4:"㱎";s:3:"歲";s:4:"歲";s:3:"殟";s:4:"殟";s:3:"殻";s:4:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:3:"汎";s:4:"汎";s:4:"𣲼";s:4:"𣲼";s:3:"沿";s:4:"沿";s:3:"泍";s:4:"泍";s:3:"汧";s:4:"汧";s:3:"洖";s:4:"洖";s:3:"派";s:4:"派";s:3:"浩";s:4:"浩";s:3:"浸";s:4:"浸";s:3:"涅";s:4:"涅";s:4:"𣴞";s:4:"𣴞";s:3:"洴";s:4:"洴";s:3:"港";s:4:"港";s:3:"湮";s:4:"湮";s:3:"㴳";s:4:"㴳";s:3:"滇";s:4:"滇";s:4:"𣻑";s:4:"𣻑";s:3:"淹";s:4:"淹";s:3:"潮";s:4:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:3:"濆";s:4:"濆";s:3:"瀹";s:4:"瀹";s:3:"瀛";s:4:"瀛";s:3:"㶖";s:4:"㶖";s:3:"灊";s:4:"灊";s:3:"災";s:4:"災";s:3:"灷";s:4:"灷";s:3:"炭";s:4:"炭";s:4:"𠔥";s:4:"𠔥";s:3:"煅";s:4:"煅";s:4:"𤉣";s:4:"𤉣";s:3:"熜";s:4:"熜";s:4:"𤎫";s:4:"𤎫";s:3:"爨";s:4:"爨";s:3:"牐";s:4:"牐";s:4:"𤘈";s:4:"𤘈";s:3:"犀";s:4:"犀";s:3:"犕";s:4:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:3:"獺";s:4:"獺";s:3:"王";s:4:"王";s:3:"㺬";s:4:"㺬";s:3:"玥";s:4:"玥";s:3:"㺸";s:4:"㺸";s:3:"瑇";s:4:"瑇";s:3:"瑜";s:4:"瑜";s:3:"璅";s:4:"璅";s:3:"瓊";s:4:"瓊";s:3:"㼛";s:4:"㼛";s:3:"甤";s:4:"甤";s:4:"𤰶";s:4:"𤰶";s:3:"甾";s:4:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"𢆟";s:4:"𢆟";s:3:"瘐";s:4:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:3:"㿼";s:4:"㿼";s:3:"䀈";s:4:"䀈";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:3:"眞";s:4:"眞";s:3:"真";s:4:"真";s:3:"瞋";s:4:"瞋";s:3:"䁆";s:4:"䁆";s:3:"䂖";s:4:"䂖";s:4:"𥐝";s:4:"𥐝";s:3:"硎";s:4:"硎";s:3:"䃣";s:4:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:3:"秫";s:4:"秫";s:3:"䄯";s:4:"䄯";s:3:"穊";s:4:"穊";s:3:"穏";s:4:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:3:"竮";s:4:"竮";s:3:"䈂";s:4:"䈂";s:4:"𥮫";s:4:"𥮫";s:3:"篆";s:4:"篆";s:3:"築";s:4:"築";s:3:"䈧";s:4:"䈧";s:4:"𥲀";s:4:"𥲀";s:3:"糒";s:4:"糒";s:3:"䊠";s:4:"䊠";s:3:"糨";s:4:"糨";s:3:"糣";s:4:"糣";s:3:"紀";s:4:"紀";s:4:"𥾆";s:4:"𥾆";s:3:"絣";s:4:"絣";s:3:"䌁";s:4:"䌁";s:3:"緇";s:4:"緇";s:3:"縂";s:4:"縂";s:3:"繅";s:4:"繅";s:3:"䌴";s:4:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:3:"䍙";s:4:"䍙";s:4:"𦋙";s:4:"𦋙";s:3:"罺";s:4:"罺";s:4:"𦌾";s:4:"𦌾";s:3:"羕";s:4:"羕";s:3:"翺";s:4:"翺";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:3:"聠";s:4:"聠";s:4:"𦖨";s:4:"𦖨";s:3:"聰";s:4:"聰";s:4:"𣍟";s:4:"𣍟";s:3:"䏕";s:4:"䏕";s:3:"育";s:4:"育";s:3:"脃";s:4:"脃";s:3:"䐋";s:4:"䐋";s:3:"脾";s:4:"脾";s:3:"媵";s:4:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:3:"舄";s:4:"舄";s:3:"辞";s:4:"辞";s:3:"䑫";s:4:"䑫";s:3:"芑";s:4:"芑";s:3:"芋";s:4:"芋";s:3:"芝";s:4:"芝";s:3:"劳";s:4:"劳";s:3:"花";s:4:"花";s:3:"芳";s:4:"芳";s:3:"芽";s:4:"芽";s:3:"苦";s:4:"苦";s:4:"𦬼";s:4:"𦬼";s:3:"茝";s:4:"茝";s:3:"荣";s:4:"荣";s:3:"莭";s:4:"莭";s:3:"茣";s:4:"茣";s:3:"莽";s:4:"莽";s:3:"菧";s:4:"菧";s:3:"荓";s:4:"荓";s:3:"菊";s:4:"菊";s:3:"菌";s:4:"菌";s:3:"菜";s:4:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:3:"䔫";s:4:"䔫";s:3:"蓱";s:4:"蓱";s:3:"蓳";s:4:"蓳";s:3:"蔖";s:4:"蔖";s:4:"𧏊";s:4:"𧏊";s:3:"蕤";s:4:"蕤";s:4:"𦼬";s:4:"𦼬";s:3:"䕝";s:4:"䕝";s:3:"䕡";s:4:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:3:"䕫";s:4:"䕫";s:3:"虐";s:4:"虐";s:3:"虧";s:4:"虧";s:3:"虩";s:4:"虩";s:3:"蚩";s:4:"蚩";s:3:"蚈";s:4:"蚈";s:3:"蜎";s:4:"蜎";s:3:"蛢";s:4:"蛢";s:3:"蜨";s:4:"蜨";s:3:"蝫";s:4:"蝫";s:3:"螆";s:4:"螆";s:3:"䗗";s:4:"䗗";s:3:"蟡";s:4:"蟡";s:3:"蠁";s:4:"蠁";s:3:"䗹";s:4:"䗹";s:3:"衠";s:4:"衠";s:3:"衣";s:4:"衣";s:4:"𧙧";s:4:"𧙧";s:3:"裗";s:4:"裗";s:3:"裞";s:4:"裞";s:3:"䘵";s:4:"䘵";s:3:"裺";s:4:"裺";s:3:"㒻";s:4:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:3:"䚾";s:4:"䚾";s:3:"䛇";s:4:"䛇";s:3:"誠";s:4:"誠";s:3:"豕";s:4:"豕";s:4:"𧲨";s:4:"𧲨";s:3:"貫";s:4:"貫";s:3:"賁";s:4:"賁";s:3:"贛";s:4:"贛";s:3:"起";s:4:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:3:"跋";s:4:"跋";s:3:"趼";s:4:"趼";s:3:"跰";s:4:"跰";s:4:"𠣞";s:4:"𠣞";s:3:"軔";s:4:"軔";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:3:"邔";s:4:"邔";s:3:"郱";s:4:"郱";s:3:"鄑";s:4:"鄑";s:4:"𨜮";s:4:"𨜮";s:3:"鄛";s:4:"鄛";s:3:"鈸";s:4:"鈸";s:3:"鋗";s:4:"鋗";s:3:"鋘";s:4:"鋘";s:3:"鉼";s:4:"鉼";s:3:"鏹";s:4:"鏹";s:3:"鐕";s:4:"鐕";s:4:"𨯺";s:4:"𨯺";s:3:"開";s:4:"開";s:3:"䦕";s:4:"䦕";s:3:"閷";s:4:"閷";s:4:"𨵷";s:4:"𨵷";s:3:"䧦";s:4:"䧦";s:3:"雃";s:4:"雃";s:3:"嶲";s:4:"嶲";s:3:"霣";s:4:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:3:"䩮";s:4:"䩮";s:3:"䩶";s:4:"䩶";s:3:"韠";s:4:"韠";s:4:"𩐊";s:4:"𩐊";s:3:"䪲";s:4:"䪲";s:4:"𩒖";s:4:"𩒖";s:3:"頩";s:4:"頩";s:4:"𩖶";s:4:"𩖶";s:3:"飢";s:4:"飢";s:3:"䬳";s:4:"䬳";s:3:"餩";s:4:"餩";s:3:"馧";s:4:"馧";s:3:"駂";s:4:"駂";s:3:"駾";s:4:"駾";s:3:"䯎";s:4:"䯎";s:4:"𩬰";s:4:"𩬰";s:3:"鱀";s:4:"鱀";s:3:"鳽";s:4:"鳽";s:3:"䳎";s:4:"䳎";s:3:"䳭";s:4:"䳭";s:3:"鵧";s:4:"鵧";s:4:"𪃎";s:4:"𪃎";s:3:"䳸";s:4:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:3:"麻";s:4:"麻";s:3:"䵖";s:4:"䵖";s:3:"黹";s:4:"黹";s:3:"黾";s:4:"黾";s:3:"鼅";s:4:"鼅";s:3:"鼏";s:4:"鼏";s:3:"鼖";s:4:"鼖";s:3:"鼻";s:4:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
+$utfCanonicalDecomp = unserialize( 'a:2049:{s:2:"À";s:3:"À";s:2:"Á";s:3:"Á";s:2:"Â";s:3:"Â";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Å";s:3:"Å";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"È";s:2:"É";s:3:"É";s:2:"Ê";s:3:"Ê";s:2:"Ë";s:3:"Ë";s:2:"Ì";s:3:"Ì";s:2:"Í";s:3:"Í";s:2:"Î";s:3:"Î";s:2:"Ï";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ò";s:3:"Ò";s:2:"Ó";s:3:"Ó";s:2:"Ô";s:3:"Ô";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"Ù";s:2:"Ú";s:3:"Ú";s:2:"Û";s:3:"Û";s:2:"Ü";s:3:"Ü";s:2:"Ý";s:3:"Ý";s:2:"à";s:3:"à";s:2:"á";s:3:"á";s:2:"â";s:3:"â";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"å";s:3:"å";s:2:"ç";s:3:"ç";s:2:"è";s:3:"è";s:2:"é";s:3:"é";s:2:"ê";s:3:"ê";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"ì";s:2:"í";s:3:"í";s:2:"î";s:3:"î";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"ò";s:2:"ó";s:3:"ó";s:2:"ô";s:3:"ô";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"ù";s:2:"ú";s:3:"ú";s:2:"û";s:3:"û";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"ý";s:2:"ÿ";s:3:"ÿ";s:2:"Ā";s:3:"Ā";s:2:"ā";s:3:"ā";s:2:"Ă";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ą";s:3:"Ą";s:2:"ą";s:3:"ą";s:2:"Ć";s:3:"Ć";s:2:"ć";s:3:"ć";s:2:"Ĉ";s:3:"Ĉ";s:2:"ĉ";s:3:"ĉ";s:2:"Ċ";s:3:"Ċ";s:2:"ċ";s:3:"ċ";s:2:"Č";s:3:"Č";s:2:"č";s:3:"č";s:2:"Ď";s:3:"Ď";s:2:"ď";s:3:"ď";s:2:"Ē";s:3:"Ē";s:2:"ē";s:3:"ē";s:2:"Ĕ";s:3:"Ĕ";s:2:"ĕ";s:3:"ĕ";s:2:"Ė";s:3:"Ė";s:2:"ė";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"ę";s:3:"ę";s:2:"Ě";s:3:"Ě";s:2:"ě";s:3:"ě";s:2:"Ĝ";s:3:"Ĝ";s:2:"ĝ";s:3:"ĝ";s:2:"Ğ";s:3:"Ğ";s:2:"ğ";s:3:"ğ";s:2:"Ġ";s:3:"Ġ";s:2:"ġ";s:3:"ġ";s:2:"Ģ";s:3:"Ģ";s:2:"ģ";s:3:"ģ";s:2:"Ĥ";s:3:"Ĥ";s:2:"ĥ";s:3:"ĥ";s:2:"Ĩ";s:3:"Ĩ";s:2:"ĩ";s:3:"ĩ";s:2:"Ī";s:3:"Ī";s:2:"ī";s:3:"ī";s:2:"Ĭ";s:3:"Ĭ";s:2:"ĭ";s:3:"ĭ";s:2:"Į";s:3:"Į";s:2:"į";s:3:"į";s:2:"İ";s:3:"İ";s:2:"Ĵ";s:3:"Ĵ";s:2:"ĵ";s:3:"ĵ";s:2:"Ķ";s:3:"Ķ";s:2:"ķ";s:3:"ķ";s:2:"Ĺ";s:3:"Ĺ";s:2:"ĺ";s:3:"ĺ";s:2:"Ļ";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"Ľ";s:2:"ľ";s:3:"ľ";s:2:"Ń";s:3:"Ń";s:2:"ń";s:3:"ń";s:2:"Ņ";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"Ň";s:2:"ň";s:3:"ň";s:2:"Ō";s:3:"Ō";s:2:"ō";s:3:"ō";s:2:"Ŏ";s:3:"Ŏ";s:2:"ŏ";s:3:"ŏ";s:2:"Ő";s:3:"Ő";s:2:"ő";s:3:"ő";s:2:"Ŕ";s:3:"Ŕ";s:2:"ŕ";s:3:"ŕ";s:2:"Ŗ";s:3:"Ŗ";s:2:"ŗ";s:3:"ŗ";s:2:"Ř";s:3:"Ř";s:2:"ř";s:3:"ř";s:2:"Ś";s:3:"Ś";s:2:"ś";s:3:"ś";s:2:"Ŝ";s:3:"Ŝ";s:2:"ŝ";s:3:"ŝ";s:2:"Ş";s:3:"Ş";s:2:"ş";s:3:"ş";s:2:"Š";s:3:"Š";s:2:"š";s:3:"š";s:2:"Ţ";s:3:"Ţ";s:2:"ţ";s:3:"ţ";s:2:"Ť";s:3:"Ť";s:2:"ť";s:3:"ť";s:2:"Ũ";s:3:"Ũ";s:2:"ũ";s:3:"ũ";s:2:"Ū";s:3:"Ū";s:2:"ū";s:3:"ū";s:2:"Ŭ";s:3:"Ŭ";s:2:"ŭ";s:3:"ŭ";s:2:"Ů";s:3:"Ů";s:2:"ů";s:3:"ů";s:2:"Ű";s:3:"Ű";s:2:"ű";s:3:"ű";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Ŵ";s:3:"Ŵ";s:2:"ŵ";s:3:"ŵ";s:2:"Ŷ";s:3:"Ŷ";s:2:"ŷ";s:3:"ŷ";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"Ź";s:2:"ź";s:3:"ź";s:2:"Ż";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"Ž";s:2:"ž";s:3:"ž";s:2:"Ơ";s:3:"Ơ";s:2:"ơ";s:3:"ơ";s:2:"Ư";s:3:"Ư";s:2:"ư";s:3:"ư";s:2:"Ǎ";s:3:"Ǎ";s:2:"ǎ";s:3:"ǎ";s:2:"Ǐ";s:3:"Ǐ";s:2:"ǐ";s:3:"ǐ";s:2:"Ǒ";s:3:"Ǒ";s:2:"ǒ";s:3:"ǒ";s:2:"Ǔ";s:3:"Ǔ";s:2:"ǔ";s:3:"ǔ";s:2:"Ǖ";s:5:"Ǖ";s:2:"ǖ";s:5:"ǖ";s:2:"Ǘ";s:5:"Ǘ";s:2:"ǘ";s:5:"ǘ";s:2:"Ǚ";s:5:"Ǚ";s:2:"ǚ";s:5:"ǚ";s:2:"Ǜ";s:5:"Ǜ";s:2:"ǜ";s:5:"ǜ";s:2:"Ǟ";s:5:"Ǟ";s:2:"ǟ";s:5:"ǟ";s:2:"Ǡ";s:5:"Ǡ";s:2:"ǡ";s:5:"ǡ";s:2:"Ǣ";s:4:"Ǣ";s:2:"ǣ";s:4:"ǣ";s:2:"Ǧ";s:3:"Ǧ";s:2:"ǧ";s:3:"ǧ";s:2:"Ǩ";s:3:"Ǩ";s:2:"ǩ";s:3:"ǩ";s:2:"Ǫ";s:3:"Ǫ";s:2:"ǫ";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"ǭ";s:5:"ǭ";s:2:"Ǯ";s:4:"Ǯ";s:2:"ǯ";s:4:"ǯ";s:2:"ǰ";s:3:"ǰ";s:2:"Ǵ";s:3:"Ǵ";s:2:"ǵ";s:3:"ǵ";s:2:"Ǹ";s:3:"Ǹ";s:2:"ǹ";s:3:"ǹ";s:2:"Ǻ";s:5:"Ǻ";s:2:"ǻ";s:5:"ǻ";s:2:"Ǽ";s:4:"Ǽ";s:2:"ǽ";s:4:"ǽ";s:2:"Ǿ";s:4:"Ǿ";s:2:"ǿ";s:4:"ǿ";s:2:"Ȁ";s:3:"Ȁ";s:2:"ȁ";s:3:"ȁ";s:2:"Ȃ";s:3:"Ȃ";s:2:"ȃ";s:3:"ȃ";s:2:"Ȅ";s:3:"Ȅ";s:2:"ȅ";s:3:"ȅ";s:2:"Ȇ";s:3:"Ȇ";s:2:"ȇ";s:3:"ȇ";s:2:"Ȉ";s:3:"Ȉ";s:2:"ȉ";s:3:"ȉ";s:2:"Ȋ";s:3:"Ȋ";s:2:"ȋ";s:3:"ȋ";s:2:"Ȍ";s:3:"Ȍ";s:2:"ȍ";s:3:"ȍ";s:2:"Ȏ";s:3:"Ȏ";s:2:"ȏ";s:3:"ȏ";s:2:"Ȑ";s:3:"Ȑ";s:2:"ȑ";s:3:"ȑ";s:2:"Ȓ";s:3:"Ȓ";s:2:"ȓ";s:3:"ȓ";s:2:"Ȕ";s:3:"Ȕ";s:2:"ȕ";s:3:"ȕ";s:2:"Ȗ";s:3:"Ȗ";s:2:"ȗ";s:3:"ȗ";s:2:"Ș";s:3:"Ș";s:2:"ș";s:3:"ș";s:2:"Ț";s:3:"Ț";s:2:"ț";s:3:"ț";s:2:"Ȟ";s:3:"Ȟ";s:2:"ȟ";s:3:"ȟ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"ȩ";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"ȫ";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"ȭ";s:5:"ȭ";s:2:"Ȯ";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"Ȱ";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"Ȳ";s:2:"ȳ";s:3:"ȳ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:2:"̈́";s:4:"̈́";s:2:"ʹ";s:2:"ʹ";s:2:";";s:1:";";s:2:"΅";s:4:"΅";s:2:"Ά";s:4:"Ά";s:2:"·";s:2:"·";s:2:"Έ";s:4:"Έ";s:2:"Ή";s:4:"Ή";s:2:"Ί";s:4:"Ί";s:2:"Ό";s:4:"Ό";s:2:"Ύ";s:4:"Ύ";s:2:"Ώ";s:4:"Ώ";s:2:"ΐ";s:6:"ΐ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"ά";s:2:"έ";s:4:"έ";s:2:"ή";s:4:"ή";s:2:"ί";s:4:"ί";s:2:"ΰ";s:6:"ΰ";s:2:"ϊ";s:4:"ϊ";s:2:"ϋ";s:4:"ϋ";s:2:"ό";s:4:"ό";s:2:"ύ";s:4:"ύ";s:2:"ώ";s:4:"ώ";s:2:"ϓ";s:4:"ϓ";s:2:"ϔ";s:4:"ϔ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ё";s:4:"Ё";s:2:"Ѓ";s:4:"Ѓ";s:2:"Ї";s:4:"Ї";s:2:"Ќ";s:4:"Ќ";s:2:"Ѝ";s:4:"Ѝ";s:2:"Ў";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"ѐ";s:4:"ѐ";s:2:"ё";s:4:"ё";s:2:"ѓ";s:4:"ѓ";s:2:"ї";s:4:"ї";s:2:"ќ";s:4:"ќ";s:2:"ѝ";s:4:"ѝ";s:2:"ў";s:4:"ў";s:2:"Ѷ";s:4:"Ѷ";s:2:"ѷ";s:4:"ѷ";s:2:"Ӂ";s:4:"Ӂ";s:2:"ӂ";s:4:"ӂ";s:2:"Ӑ";s:4:"Ӑ";s:2:"ӑ";s:4:"ӑ";s:2:"Ӓ";s:4:"Ӓ";s:2:"ӓ";s:4:"ӓ";s:2:"Ӗ";s:4:"Ӗ";s:2:"ӗ";s:4:"ӗ";s:2:"Ӛ";s:4:"Ӛ";s:2:"ӛ";s:4:"ӛ";s:2:"Ӝ";s:4:"Ӝ";s:2:"ӝ";s:4:"ӝ";s:2:"Ӟ";s:4:"Ӟ";s:2:"ӟ";s:4:"ӟ";s:2:"Ӣ";s:4:"Ӣ";s:2:"ӣ";s:4:"ӣ";s:2:"Ӥ";s:4:"Ӥ";s:2:"ӥ";s:4:"ӥ";s:2:"Ӧ";s:4:"Ӧ";s:2:"ӧ";s:4:"ӧ";s:2:"Ӫ";s:4:"Ӫ";s:2:"ӫ";s:4:"ӫ";s:2:"Ӭ";s:4:"Ӭ";s:2:"ӭ";s:4:"ӭ";s:2:"Ӯ";s:4:"Ӯ";s:2:"ӯ";s:4:"ӯ";s:2:"Ӱ";s:4:"Ӱ";s:2:"ӱ";s:4:"ӱ";s:2:"Ӳ";s:4:"Ӳ";s:2:"ӳ";s:4:"ӳ";s:2:"Ӵ";s:4:"Ӵ";s:2:"ӵ";s:4:"ӵ";s:2:"Ӹ";s:4:"Ӹ";s:2:"ӹ";s:4:"ӹ";s:2:"آ";s:4:"آ";s:2:"أ";s:4:"أ";s:2:"ؤ";s:4:"ؤ";s:2:"إ";s:4:"إ";s:2:"ئ";s:4:"ئ";s:2:"ۀ";s:4:"ۀ";s:2:"ۂ";s:4:"ۂ";s:2:"ۓ";s:4:"ۓ";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"ढ़";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"ঢ়";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"ਖ਼";s:6:"ਖ਼";s:3:"ਗ਼";s:6:"ਗ਼";s:3:"ਜ਼";s:6:"ਜ਼";s:3:"ਫ਼";s:6:"ਫ਼";s:3:"ୈ";s:6:"ୈ";s:3:"ୋ";s:6:"ୋ";s:3:"ୌ";s:6:"ୌ";s:3:"ଡ଼";s:6:"ଡ଼";s:3:"ଢ଼";s:6:"ଢ଼";s:3:"ஔ";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"ೀ";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"ේ";s:6:"ේ";s:3:"ො";s:6:"ො";s:3:"ෝ";s:9:"ෝ";s:3:"ෞ";s:6:"ෞ";s:3:"གྷ";s:6:"གྷ";s:3:"ཌྷ";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཱྀ";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"ྜྷ";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"ྐྵ";s:3:"ဦ";s:6:"ဦ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"ᬎ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"ᭀ";s:6:"ᭀ";s:3:"ᭁ";s:6:"ᭁ";s:3:"ᭃ";s:6:"ᭃ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"Ḉ";s:3:"ḉ";s:5:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:3:"Ḕ";s:5:"Ḕ";s:3:"ḕ";s:5:"ḕ";s:3:"Ḗ";s:5:"Ḗ";s:3:"ḗ";s:5:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:3:"Ḝ";s:5:"Ḝ";s:3:"ḝ";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:3:"Ḯ";s:5:"Ḯ";s:3:"ḯ";s:5:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:3:"Ṍ";s:5:"Ṍ";s:3:"ṍ";s:5:"ṍ";s:3:"Ṏ";s:5:"Ṏ";s:3:"ṏ";s:5:"ṏ";s:3:"Ṑ";s:5:"Ṑ";s:3:"ṑ";s:5:"ṑ";s:3:"Ṓ";s:5:"Ṓ";s:3:"ṓ";s:5:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:3:"Ṝ";s:5:"Ṝ";s:3:"ṝ";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:3:"Ṥ";s:5:"Ṥ";s:3:"ṥ";s:5:"ṥ";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:3:"Ṹ";s:5:"Ṹ";s:3:"ṹ";s:5:"ṹ";s:3:"Ṻ";s:5:"Ṻ";s:3:"ṻ";s:5:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:3:"ẛ";s:4:"ẛ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"Ấ";s:3:"ấ";s:5:"ấ";s:3:"Ầ";s:5:"Ầ";s:3:"ầ";s:5:"ầ";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"Ắ";s:3:"ắ";s:5:"ắ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"Ế";s:3:"ế";s:5:"ế";s:3:"Ề";s:5:"Ề";s:3:"ề";s:5:"ề";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"ễ";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:3:"Ố";s:5:"Ố";s:3:"ố";s:5:"ố";s:3:"Ồ";s:5:"Ồ";s:3:"ồ";s:5:"ồ";s:3:"Ổ";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"Ỗ";s:5:"Ỗ";s:3:"ỗ";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"ộ";s:5:"ộ";s:3:"Ớ";s:5:"Ớ";s:3:"ớ";s:5:"ớ";s:3:"Ờ";s:5:"Ờ";s:3:"ờ";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"Ỡ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"Ứ";s:3:"ứ";s:5:"ứ";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"ử";s:5:"ử";s:3:"Ữ";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"Ự";s:5:"Ự";s:3:"ự";s:5:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"ἀ";s:4:"ἀ";s:3:"ἁ";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἄ";s:3:"ἅ";s:6:"ἅ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"Ἄ";s:3:"Ἅ";s:6:"Ἅ";s:3:"Ἆ";s:6:"Ἆ";s:3:"Ἇ";s:6:"Ἇ";s:3:"ἐ";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"ἒ";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"ἔ";s:6:"ἔ";s:3:"ἕ";s:6:"ἕ";s:3:"Ἐ";s:4:"Ἐ";s:3:"Ἑ";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"Ἓ";s:6:"Ἓ";s:3:"Ἔ";s:6:"Ἔ";s:3:"Ἕ";s:6:"Ἕ";s:3:"ἠ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"ἢ";s:6:"ἢ";s:3:"ἣ";s:6:"ἣ";s:3:"ἤ";s:6:"ἤ";s:3:"ἥ";s:6:"ἥ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"Ἤ";s:3:"Ἥ";s:6:"Ἥ";s:3:"Ἦ";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"ἰ";s:4:"ἰ";s:3:"ἱ";s:4:"ἱ";s:3:"ἲ";s:6:"ἲ";s:3:"ἳ";s:6:"ἳ";s:3:"ἴ";s:6:"ἴ";s:3:"ἵ";s:6:"ἵ";s:3:"ἶ";s:6:"ἶ";s:3:"ἷ";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"Ἱ";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"Ἳ";s:6:"Ἳ";s:3:"Ἴ";s:6:"Ἴ";s:3:"Ἵ";s:6:"Ἵ";s:3:"Ἶ";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"ὀ";s:4:"ὀ";s:3:"ὁ";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὄ";s:3:"ὅ";s:6:"ὅ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"Ὄ";s:3:"Ὅ";s:6:"Ὅ";s:3:"ὐ";s:4:"ὐ";s:3:"ὑ";s:4:"ὑ";s:3:"ὒ";s:6:"ὒ";s:3:"ὓ";s:6:"ὓ";s:3:"ὔ";s:6:"ὔ";s:3:"ὕ";s:6:"ὕ";s:3:"ὖ";s:6:"ὖ";s:3:"ὗ";s:6:"ὗ";s:3:"Ὑ";s:4:"Ὑ";s:3:"Ὓ";s:6:"Ὓ";s:3:"Ὕ";s:6:"Ὕ";s:3:"Ὗ";s:6:"Ὗ";s:3:"ὠ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"ὢ";s:6:"ὢ";s:3:"ὣ";s:6:"ὣ";s:3:"ὤ";s:6:"ὤ";s:3:"ὥ";s:6:"ὥ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"Ὤ";s:3:"Ὥ";s:6:"Ὥ";s:3:"Ὦ";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"ὰ";s:4:"ὰ";s:3:"ά";s:4:"ά";s:3:"ὲ";s:4:"ὲ";s:3:"έ";s:4:"έ";s:3:"ὴ";s:4:"ὴ";s:3:"ή";s:4:"ή";s:3:"ὶ";s:4:"ὶ";s:3:"ί";s:4:"ί";s:3:"ὸ";s:4:"ὸ";s:3:"ό";s:4:"ό";s:3:"ὺ";s:4:"ὺ";s:3:"ύ";s:4:"ύ";s:3:"ὼ";s:4:"ὼ";s:3:"ώ";s:4:"ώ";s:3:"ᾀ";s:6:"ᾀ";s:3:"ᾁ";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ᾄ";s:3:"ᾅ";s:8:"ᾅ";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ᾌ";s:3:"ᾍ";s:8:"ᾍ";s:3:"ᾎ";s:8:"ᾎ";s:3:"ᾏ";s:8:"ᾏ";s:3:"ᾐ";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"ᾒ";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"ᾔ";s:8:"ᾔ";s:3:"ᾕ";s:8:"ᾕ";s:3:"ᾖ";s:8:"ᾖ";s:3:"ᾗ";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"ᾙ";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"ᾛ";s:8:"ᾛ";s:3:"ᾜ";s:8:"ᾜ";s:3:"ᾝ";s:8:"ᾝ";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"ᾠ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"ᾢ";s:8:"ᾢ";s:3:"ᾣ";s:8:"ᾣ";s:3:"ᾤ";s:8:"ᾤ";s:3:"ᾥ";s:8:"ᾥ";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ᾬ";s:3:"ᾭ";s:8:"ᾭ";s:3:"ᾮ";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"ᾰ";s:4:"ᾰ";s:3:"ᾱ";s:4:"ᾱ";s:3:"ᾲ";s:6:"ᾲ";s:3:"ᾳ";s:4:"ᾳ";s:3:"ᾴ";s:6:"ᾴ";s:3:"ᾶ";s:4:"ᾶ";s:3:"ᾷ";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"Ᾱ";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"Ά";s:4:"Ά";s:3:"ᾼ";s:4:"ᾼ";s:3:"ι";s:2:"ι";s:3:"῁";s:4:"῁";s:3:"ῂ";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"ῄ";s:6:"ῄ";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"Έ";s:3:"Ὴ";s:4:"Ὴ";s:3:"Ή";s:4:"Ή";s:3:"ῌ";s:4:"ῌ";s:3:"῍";s:5:"῍";s:3:"῎";s:5:"῎";s:3:"῏";s:5:"῏";s:3:"ῐ";s:4:"ῐ";s:3:"ῑ";s:4:"ῑ";s:3:"ῒ";s:6:"ῒ";s:3:"ΐ";s:6:"ΐ";s:3:"ῖ";s:4:"ῖ";s:3:"ῗ";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"Ῑ";s:4:"Ῑ";s:3:"Ὶ";s:4:"Ὶ";s:3:"Ί";s:4:"Ί";s:3:"῝";s:5:"῝";s:3:"῞";s:5:"῞";s:3:"῟";s:5:"῟";s:3:"ῠ";s:4:"ῠ";s:3:"ῡ";s:4:"ῡ";s:3:"ῢ";s:6:"ῢ";s:3:"ΰ";s:6:"ΰ";s:3:"ῤ";s:4:"ῤ";s:3:"ῥ";s:4:"ῥ";s:3:"ῦ";s:4:"ῦ";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"Ῡ";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"Ύ";s:4:"Ύ";s:3:"Ῥ";s:4:"Ῥ";s:3:"῭";s:4:"῭";s:3:"΅";s:4:"΅";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"ῴ";s:6:"ῴ";s:3:"ῶ";s:4:"ῶ";s:3:"ῷ";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"Ό";s:3:"Ὼ";s:4:"Ὼ";s:3:"Ώ";s:4:"Ώ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:2:"´";s:3:" ";s:3:" ";s:3:" ";s:3:" ";s:3:"Ω";s:2:"Ω";s:3:"K";s:1:"K";s:3:"Å";s:3:"Å";s:3:"↚";s:5:"↚";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"⇍";s:5:"⇍";s:3:"⇎";s:5:"⇎";s:3:"⇏";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"≁";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"⊁";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"⋠";s:5:"⋠";s:3:"⋡";s:5:"⋡";s:3:"⋢";s:5:"⋢";s:3:"⋣";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"⋫";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"⋭";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"⫝̸";s:5:"⫝̸";s:3:"が";s:6:"が";s:3:"ぎ";s:6:"ぎ";s:3:"ぐ";s:6:"ぐ";s:3:"げ";s:6:"げ";s:3:"ご";s:6:"ご";s:3:"ざ";s:6:"ざ";s:3:"じ";s:6:"じ";s:3:"ず";s:6:"ず";s:3:"ぜ";s:6:"ぜ";s:3:"ぞ";s:6:"ぞ";s:3:"だ";s:6:"だ";s:3:"ぢ";s:6:"ぢ";s:3:"づ";s:6:"づ";s:3:"で";s:6:"で";s:3:"ど";s:6:"ど";s:3:"ば";s:6:"ば";s:3:"ぱ";s:6:"ぱ";s:3:"び";s:6:"び";s:3:"ぴ";s:6:"ぴ";s:3:"ぶ";s:6:"ぶ";s:3:"ぷ";s:6:"ぷ";s:3:"べ";s:6:"べ";s:3:"ぺ";s:6:"ぺ";s:3:"ぼ";s:6:"ぼ";s:3:"ぽ";s:6:"ぽ";s:3:"ゔ";s:6:"ゔ";s:3:"ゞ";s:6:"ゞ";s:3:"ガ";s:6:"ガ";s:3:"ギ";s:6:"ギ";s:3:"グ";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ゴ";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ジ";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ダ";s:3:"ヂ";s:6:"ヂ";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"バ";s:6:"バ";s:3:"パ";s:6:"パ";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ポ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"樂";s:3:"樂";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"異";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:3:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"侮";s:3:"僧";s:3:"僧";s:3:"免";s:3:"免";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"屮";s:3:"悔";s:3:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:3:"憎";s:3:"懲";s:3:"懲";s:3:"敏";s:3:"敏";s:3:"既";s:3:"既";s:3:"暑";s:3:"暑";s:3:"梅";s:3:"梅";s:3:"海";s:3:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:3:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:3:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"練";s:3:"練";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:3:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"著";s:3:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"恵";s:3:"恵";s:3:"𤋮";s:4:"𤋮";s:3:"舘";s:3:"舘";s:3:"並";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"勺";s:3:"勺";s:3:"喝";s:3:"喝";s:3:"啕";s:3:"啕";s:3:"喙";s:3:"喙";s:3:"嗢";s:3:"嗢";s:3:"塚";s:3:"塚";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"慎";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"慠";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"晴";s:3:"晴";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"流";s:3:"滛";s:3:"滛";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"漢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"煮";s:3:"瞧";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"盛";s:3:"直";s:3:"直";s:3:"睊";s:3:"睊";s:3:"着";s:3:"着";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"練";s:3:"練";s:3:"缾";s:3:"缾";s:3:"者";s:3:"者";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:3:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"請";s:3:"謁";s:3:"謁";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"諭";s:3:"謹";s:3:"謹";s:3:"變";s:3:"變";s:3:"贈";s:3:"贈";s:3:"輸";s:3:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"靖";s:3:"韛";s:3:"韛";s:3:"響";s:3:"響";s:3:"頋";s:3:"頋";s:3:"頻";s:3:"頻";s:3:"鬒";s:3:"鬒";s:3:"龜";s:3:"龜";s:3:"𢡊";s:4:"𢡊";s:3:"𢡄";s:4:"𢡄";s:3:"𣏕";s:4:"𣏕";s:3:"㮝";s:3:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:3:"䀹";s:3:"𥉉";s:4:"𥉉";s:3:"𥳐";s:4:"𥳐";s:3:"𧻓";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:3:"יִ";s:4:"יִ";s:3:"ײַ";s:4:"ײַ";s:3:"שׁ";s:4:"שׁ";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּׁ";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"אַ";s:3:"אָ";s:4:"אָ";s:3:"אּ";s:4:"אּ";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"גּ";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"הּ";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"זּ";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"יּ";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"כּ";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"נּ";s:4:"נּ";s:3:"סּ";s:4:"סּ";s:3:"ףּ";s:4:"ףּ";s:3:"פּ";s:4:"פּ";s:3:"צּ";s:4:"צּ";s:3:"קּ";s:4:"קּ";s:3:"רּ";s:4:"רּ";s:3:"שּ";s:4:"שּ";s:3:"תּ";s:4:"תּ";s:3:"וֹ";s:4:"וֹ";s:3:"בֿ";s:4:"בֿ";s:3:"כֿ";s:4:"כֿ";s:3:"פֿ";s:4:"פֿ";s:4:"𑂚";s:8:"𑂚";s:4:"𑂜";s:8:"𑂜";s:4:"𑂫";s:8:"𑂫";s:4:"𝅗𝅥";s:8:"𝅗𝅥";s:4:"𝅘𝅥";s:8:"𝅘𝅥";s:4:"𝅘𝅥𝅮";s:12:"𝅘𝅥𝅮";s:4:"𝅘𝅥𝅯";s:12:"𝅘𝅥𝅯";s:4:"𝅘𝅥𝅰";s:12:"𝅘𝅥𝅰";s:4:"𝅘𝅥𝅱";s:12:"𝅘𝅥𝅱";s:4:"𝅘𝅥𝅲";s:12:"𝅘𝅥𝅲";s:4:"𝆹𝅥";s:8:"𝆹𝅥";s:4:"𝆺𝅥";s:8:"𝆺𝅥";s:4:"𝆹𝅥𝅮";s:12:"𝆹𝅥𝅮";s:4:"𝆺𝅥𝅮";s:12:"𝆺𝅥𝅮";s:4:"𝆹𝅥𝅯";s:12:"𝆹𝅥𝅯";s:4:"𝆺𝅥𝅯";s:12:"𝆺𝅥𝅯";s:4:"丽";s:3:"丽";s:4:"丸";s:3:"丸";s:4:"乁";s:3:"乁";s:4:"𠄢";s:4:"𠄢";s:4:"你";s:3:"你";s:4:"侮";s:3:"侮";s:4:"侻";s:3:"侻";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"偺";s:4:"備";s:3:"備";s:4:"僧";s:3:"僧";s:4:"像";s:3:"像";s:4:"㒞";s:3:"㒞";s:4:"𠘺";s:4:"𠘺";s:4:"免";s:3:"免";s:4:"兔";s:3:"兔";s:4:"兤";s:3:"兤";s:4:"具";s:3:"具";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"㒹";s:4:"內";s:3:"內";s:4:"再";s:3:"再";s:4:"𠕋";s:4:"𠕋";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"凵";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"㓟";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"卉";s:4:"卑";s:3:"卑";s:4:"博";s:3:"博";s:4:"即";s:3:"即";s:4:"卽";s:3:"卽";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"灰";s:4:"及";s:3:"及";s:4:"叟";s:3:"叟";s:4:"𠭣";s:4:"𠭣";s:4:"叫";s:3:"叫";s:4:"叱";s:3:"叱";s:4:"吆";s:3:"吆";s:4:"咞";s:3:"咞";s:4:"吸";s:3:"吸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"咢";s:4:"哶";s:3:"哶";s:4:"唐";s:3:"唐";s:4:"啓";s:3:"啓";s:4:"啣";s:3:"啣";s:4:"善";s:3:"善";s:4:"善";s:3:"善";s:4:"喙";s:3:"喙";s:4:"喫";s:3:"喫";s:4:"喳";s:3:"喳";s:4:"嗂";s:3:"嗂";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"圗";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"噴";s:3:"噴";s:4:"切";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"堍";s:4:"型";s:3:"型";s:4:"堲";s:3:"堲";s:4:"報";s:3:"報";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"多";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"㛮";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"将";s:4:"当";s:3:"当";s:4:"尢";s:3:"尢";s:4:"㞁";s:3:"㞁";s:4:"屠";s:3:"屠";s:4:"屮";s:3:"屮";s:4:"峀";s:3:"峀";s:4:"岍";s:3:"岍";s:4:"𡷤";s:4:"𡷤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"𡷦";s:4:"嵮";s:3:"嵮";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"嵼";s:4:"巡";s:3:"巡";s:4:"巢";s:3:"巢";s:4:"㠯";s:3:"㠯";s:4:"巽";s:3:"巽";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"㡢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"庶";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"𪎒";s:4:"𪎒";s:4:"廾";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"舁";s:4:"弢";s:3:"弢";s:4:"弢";s:3:"弢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"形";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"忍";s:3:"忍";s:4:"志";s:3:"志";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"悁";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"悔";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"慈";s:4:"慌";s:3:"慌";s:4:"慎";s:3:"慎";s:4:"慌";s:3:"慌";s:4:"慺";s:3:"慺";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"成";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"扝";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"拔";s:4:"捐";s:3:"捐";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"捨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"揤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"搢";s:4:"揅";s:3:"揅";s:4:"掩";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"摩";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"撝";s:4:"摷";s:3:"摷";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"敏";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"旣";s:4:"書";s:3:"書";s:4:"晉";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"暑";s:3:"暑";s:4:"㬈";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"暜";s:4:"肭";s:3:"肭";s:4:"䏙";s:3:"䏙";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"杞";s:4:"杓";s:3:"杓";s:4:"𣏃";s:4:"𣏃";s:4:"㭉";s:3:"㭉";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"枅";s:4:"桒";s:3:"桒";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"栟";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"㮝";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"櫛";s:4:"㰘";s:3:"㰘";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"歔";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"歲";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"泍";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"洖";s:4:"派";s:3:"派";s:4:"海";s:3:"海";s:4:"流";s:3:"流";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"洴";s:4:"港";s:3:"港";s:4:"湮";s:3:"湮";s:4:"㴳";s:3:"㴳";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"𣻑";s:4:"𣻑";s:4:"淹";s:3:"淹";s:4:"潮";s:3:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"灊";s:4:"災";s:3:"災";s:4:"灷";s:3:"灷";s:4:"炭";s:3:"炭";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"煅";s:4:"𤉣";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"牐";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"獺";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"瑜";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"璅";s:4:"瓊";s:3:"瓊";s:4:"㼛";s:3:"㼛";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"異";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"直";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"睊";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"瞋";s:4:"䁆";s:3:"䁆";s:4:"䂖";s:3:"䂖";s:4:"𥐝";s:4:"𥐝";s:4:"硎";s:3:"硎";s:4:"碌";s:3:"碌";s:4:"磌";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"福";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"穀";s:4:"穊";s:3:"穊";s:4:"穏";s:3:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"竮";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"糒";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"糣";s:4:"紀";s:3:"紀";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"絣";s:4:"䌁";s:3:"䌁";s:4:"緇";s:3:"緇";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"繅";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"䍙";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"聠";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"聰";s:4:"𣍟";s:4:"𣍟";s:4:"䏕";s:3:"䏕";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"䐋";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"舁";s:4:"舄";s:3:"舄";s:4:"辞";s:3:"辞";s:4:"䑫";s:3:"䑫";s:4:"芑";s:3:"芑";s:4:"芋";s:3:"芋";s:4:"芝";s:3:"芝";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"若";s:4:"茝";s:3:"茝";s:4:"荣";s:3:"荣";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"莽";s:3:"莽";s:4:"菧";s:3:"菧";s:4:"著";s:3:"著";s:4:"荓";s:3:"荓";s:4:"菊";s:3:"菊";s:4:"菌";s:3:"菌";s:4:"菜";s:3:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"蔖";s:4:"𧏊";s:4:"𧏊";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"䕝";s:4:"䕡";s:3:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"䕫";s:4:"虐";s:3:"虐";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"蚩";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"蝹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"蝫";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"䗗";s:4:"蟡";s:3:"蟡";s:4:"蠁";s:3:"蠁";s:4:"䗹";s:3:"䗹";s:4:"衠";s:3:"衠";s:4:"衣";s:3:"衣";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"䚾";s:3:"䚾";s:4:"䛇";s:3:"䛇";s:4:"誠";s:3:"誠";s:4:"諭";s:3:"諭";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"賁";s:4:"贛";s:3:"贛";s:4:"起";s:3:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:4:"跋";s:3:"跋";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"跰";s:4:"𠣞";s:4:"𠣞";s:4:"軔";s:3:"軔";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"邔";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"鄑";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"鄛";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"鋗";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"鏹";s:4:"鐕";s:3:"鐕";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"開";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"閷";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"䩮";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"𩐊";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"𩒖";s:4:"頋";s:3:"頋";s:4:"頋";s:3:"頋";s:4:"頩";s:3:"頩";s:4:"𩖶";s:4:"𩖶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"鱀";s:4:"鳽";s:3:"鳽";s:4:"䳎";s:3:"䳎";s:4:"䳭";s:3:"䳭";s:4:"鵧";s:3:"鵧";s:4:"𪃎";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"䵖";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"鼅";s:4:"鼏";s:3:"鼏";s:4:"鼖";s:3:"鼖";s:4:"鼻";s:3:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
+$utfCheckNFC = unserialize( 'a:1221:{s:2:"̀";s:1:"N";s:2:"́";s:1:"N";s:2:"̓";s:1:"N";s:2:"̈́";s:1:"N";s:2:"ʹ";s:1:"N";s:2:";";s:1:"N";s:2:"·";s:1:"N";s:3:"क़";s:1:"N";s:3:"ख़";s:1:"N";s:3:"ग़";s:1:"N";s:3:"ज़";s:1:"N";s:3:"ड़";s:1:"N";s:3:"ढ़";s:1:"N";s:3:"फ़";s:1:"N";s:3:"य़";s:1:"N";s:3:"ড়";s:1:"N";s:3:"ঢ়";s:1:"N";s:3:"য়";s:1:"N";s:3:"ਲ਼";s:1:"N";s:3:"ਸ਼";s:1:"N";s:3:"ਖ਼";s:1:"N";s:3:"ਗ਼";s:1:"N";s:3:"ਜ਼";s:1:"N";s:3:"ਫ਼";s:1:"N";s:3:"ଡ଼";s:1:"N";s:3:"ଢ଼";s:1:"N";s:3:"གྷ";s:1:"N";s:3:"ཌྷ";s:1:"N";s:3:"དྷ";s:1:"N";s:3:"བྷ";s:1:"N";s:3:"ཛྷ";s:1:"N";s:3:"ཀྵ";s:1:"N";s:3:"ཱི";s:1:"N";s:3:"ཱུ";s:1:"N";s:3:"ྲྀ";s:1:"N";s:3:"ླྀ";s:1:"N";s:3:"ཱྀ";s:1:"N";s:3:"ྒྷ";s:1:"N";s:3:"ྜྷ";s:1:"N";s:3:"ྡྷ";s:1:"N";s:3:"ྦྷ";s:1:"N";s:3:"ྫྷ";s:1:"N";s:3:"ྐྵ";s:1:"N";s:3:"ά";s:1:"N";s:3:"έ";s:1:"N";s:3:"ή";s:1:"N";s:3:"ί";s:1:"N";s:3:"ό";s:1:"N";s:3:"ύ";s:1:"N";s:3:"ώ";s:1:"N";s:3:"Ά";s:1:"N";s:3:"ι";s:1:"N";s:3:"Έ";s:1:"N";s:3:"Ή";s:1:"N";s:3:"ΐ";s:1:"N";s:3:"Ί";s:1:"N";s:3:"ΰ";s:1:"N";s:3:"Ύ";s:1:"N";s:3:"΅";s:1:"N";s:3:"`";s:1:"N";s:3:"Ό";s:1:"N";s:3:"Ώ";s:1:"N";s:3:"´";s:1:"N";s:3:" ";s:1:"N";s:3:" ";s:1:"N";s:3:"Ω";s:1:"N";s:3:"K";s:1:"N";s:3:"Å";s:1:"N";s:3:"〈";s:1:"N";s:3:"〉";s:1:"N";s:3:"⫝̸";s:1:"N";s:3:"豈";s:1:"N";s:3:"更";s:1:"N";s:3:"車";s:1:"N";s:3:"賈";s:1:"N";s:3:"滑";s:1:"N";s:3:"串";s:1:"N";s:3:"句";s:1:"N";s:3:"龜";s:1:"N";s:3:"龜";s:1:"N";s:3:"契";s:1:"N";s:3:"金";s:1:"N";s:3:"喇";s:1:"N";s:3:"奈";s:1:"N";s:3:"懶";s:1:"N";s:3:"癩";s:1:"N";s:3:"羅";s:1:"N";s:3:"蘿";s:1:"N";s:3:"螺";s:1:"N";s:3:"裸";s:1:"N";s:3:"邏";s:1:"N";s:3:"樂";s:1:"N";s:3:"洛";s:1:"N";s:3:"烙";s:1:"N";s:3:"珞";s:1:"N";s:3:"落";s:1:"N";s:3:"酪";s:1:"N";s:3:"駱";s:1:"N";s:3:"亂";s:1:"N";s:3:"卵";s:1:"N";s:3:"欄";s:1:"N";s:3:"爛";s:1:"N";s:3:"蘭";s:1:"N";s:3:"鸞";s:1:"N";s:3:"嵐";s:1:"N";s:3:"濫";s:1:"N";s:3:"藍";s:1:"N";s:3:"襤";s:1:"N";s:3:"拉";s:1:"N";s:3:"臘";s:1:"N";s:3:"蠟";s:1:"N";s:3:"廊";s:1:"N";s:3:"朗";s:1:"N";s:3:"浪";s:1:"N";s:3:"狼";s:1:"N";s:3:"郎";s:1:"N";s:3:"來";s:1:"N";s:3:"冷";s:1:"N";s:3:"勞";s:1:"N";s:3:"擄";s:1:"N";s:3:"櫓";s:1:"N";s:3:"爐";s:1:"N";s:3:"盧";s:1:"N";s:3:"老";s:1:"N";s:3:"蘆";s:1:"N";s:3:"虜";s:1:"N";s:3:"路";s:1:"N";s:3:"露";s:1:"N";s:3:"魯";s:1:"N";s:3:"鷺";s:1:"N";s:3:"碌";s:1:"N";s:3:"祿";s:1:"N";s:3:"綠";s:1:"N";s:3:"菉";s:1:"N";s:3:"錄";s:1:"N";s:3:"鹿";s:1:"N";s:3:"論";s:1:"N";s:3:"壟";s:1:"N";s:3:"弄";s:1:"N";s:3:"籠";s:1:"N";s:3:"聾";s:1:"N";s:3:"牢";s:1:"N";s:3:"磊";s:1:"N";s:3:"賂";s:1:"N";s:3:"雷";s:1:"N";s:3:"壘";s:1:"N";s:3:"屢";s:1:"N";s:3:"樓";s:1:"N";s:3:"淚";s:1:"N";s:3:"漏";s:1:"N";s:3:"累";s:1:"N";s:3:"縷";s:1:"N";s:3:"陋";s:1:"N";s:3:"勒";s:1:"N";s:3:"肋";s:1:"N";s:3:"凜";s:1:"N";s:3:"凌";s:1:"N";s:3:"稜";s:1:"N";s:3:"綾";s:1:"N";s:3:"菱";s:1:"N";s:3:"陵";s:1:"N";s:3:"讀";s:1:"N";s:3:"拏";s:1:"N";s:3:"樂";s:1:"N";s:3:"諾";s:1:"N";s:3:"丹";s:1:"N";s:3:"寧";s:1:"N";s:3:"怒";s:1:"N";s:3:"率";s:1:"N";s:3:"異";s:1:"N";s:3:"北";s:1:"N";s:3:"磻";s:1:"N";s:3:"便";s:1:"N";s:3:"復";s:1:"N";s:3:"不";s:1:"N";s:3:"泌";s:1:"N";s:3:"數";s:1:"N";s:3:"索";s:1:"N";s:3:"參";s:1:"N";s:3:"塞";s:1:"N";s:3:"省";s:1:"N";s:3:"葉";s:1:"N";s:3:"說";s:1:"N";s:3:"殺";s:1:"N";s:3:"辰";s:1:"N";s:3:"沈";s:1:"N";s:3:"拾";s:1:"N";s:3:"若";s:1:"N";s:3:"掠";s:1:"N";s:3:"略";s:1:"N";s:3:"亮";s:1:"N";s:3:"兩";s:1:"N";s:3:"凉";s:1:"N";s:3:"梁";s:1:"N";s:3:"糧";s:1:"N";s:3:"良";s:1:"N";s:3:"諒";s:1:"N";s:3:"量";s:1:"N";s:3:"勵";s:1:"N";s:3:"呂";s:1:"N";s:3:"女";s:1:"N";s:3:"廬";s:1:"N";s:3:"旅";s:1:"N";s:3:"濾";s:1:"N";s:3:"礪";s:1:"N";s:3:"閭";s:1:"N";s:3:"驪";s:1:"N";s:3:"麗";s:1:"N";s:3:"黎";s:1:"N";s:3:"力";s:1:"N";s:3:"曆";s:1:"N";s:3:"歷";s:1:"N";s:3:"轢";s:1:"N";s:3:"年";s:1:"N";s:3:"憐";s:1:"N";s:3:"戀";s:1:"N";s:3:"撚";s:1:"N";s:3:"漣";s:1:"N";s:3:"煉";s:1:"N";s:3:"璉";s:1:"N";s:3:"秊";s:1:"N";s:3:"練";s:1:"N";s:3:"聯";s:1:"N";s:3:"輦";s:1:"N";s:3:"蓮";s:1:"N";s:3:"連";s:1:"N";s:3:"鍊";s:1:"N";s:3:"列";s:1:"N";s:3:"劣";s:1:"N";s:3:"咽";s:1:"N";s:3:"烈";s:1:"N";s:3:"裂";s:1:"N";s:3:"說";s:1:"N";s:3:"廉";s:1:"N";s:3:"念";s:1:"N";s:3:"捻";s:1:"N";s:3:"殮";s:1:"N";s:3:"簾";s:1:"N";s:3:"獵";s:1:"N";s:3:"令";s:1:"N";s:3:"囹";s:1:"N";s:3:"寧";s:1:"N";s:3:"嶺";s:1:"N";s:3:"怜";s:1:"N";s:3:"玲";s:1:"N";s:3:"瑩";s:1:"N";s:3:"羚";s:1:"N";s:3:"聆";s:1:"N";s:3:"鈴";s:1:"N";s:3:"零";s:1:"N";s:3:"靈";s:1:"N";s:3:"領";s:1:"N";s:3:"例";s:1:"N";s:3:"禮";s:1:"N";s:3:"醴";s:1:"N";s:3:"隸";s:1:"N";s:3:"惡";s:1:"N";s:3:"了";s:1:"N";s:3:"僚";s:1:"N";s:3:"寮";s:1:"N";s:3:"尿";s:1:"N";s:3:"料";s:1:"N";s:3:"樂";s:1:"N";s:3:"燎";s:1:"N";s:3:"療";s:1:"N";s:3:"蓼";s:1:"N";s:3:"遼";s:1:"N";s:3:"龍";s:1:"N";s:3:"暈";s:1:"N";s:3:"阮";s:1:"N";s:3:"劉";s:1:"N";s:3:"杻";s:1:"N";s:3:"柳";s:1:"N";s:3:"流";s:1:"N";s:3:"溜";s:1:"N";s:3:"琉";s:1:"N";s:3:"留";s:1:"N";s:3:"硫";s:1:"N";s:3:"紐";s:1:"N";s:3:"類";s:1:"N";s:3:"六";s:1:"N";s:3:"戮";s:1:"N";s:3:"陸";s:1:"N";s:3:"倫";s:1:"N";s:3:"崙";s:1:"N";s:3:"淪";s:1:"N";s:3:"輪";s:1:"N";s:3:"律";s:1:"N";s:3:"慄";s:1:"N";s:3:"栗";s:1:"N";s:3:"率";s:1:"N";s:3:"隆";s:1:"N";s:3:"利";s:1:"N";s:3:"吏";s:1:"N";s:3:"履";s:1:"N";s:3:"易";s:1:"N";s:3:"李";s:1:"N";s:3:"梨";s:1:"N";s:3:"泥";s:1:"N";s:3:"理";s:1:"N";s:3:"痢";s:1:"N";s:3:"罹";s:1:"N";s:3:"裏";s:1:"N";s:3:"裡";s:1:"N";s:3:"里";s:1:"N";s:3:"離";s:1:"N";s:3:"匿";s:1:"N";s:3:"溺";s:1:"N";s:3:"吝";s:1:"N";s:3:"燐";s:1:"N";s:3:"璘";s:1:"N";s:3:"藺";s:1:"N";s:3:"隣";s:1:"N";s:3:"鱗";s:1:"N";s:3:"麟";s:1:"N";s:3:"林";s:1:"N";s:3:"淋";s:1:"N";s:3:"臨";s:1:"N";s:3:"立";s:1:"N";s:3:"笠";s:1:"N";s:3:"粒";s:1:"N";s:3:"狀";s:1:"N";s:3:"炙";s:1:"N";s:3:"識";s:1:"N";s:3:"什";s:1:"N";s:3:"茶";s:1:"N";s:3:"刺";s:1:"N";s:3:"切";s:1:"N";s:3:"度";s:1:"N";s:3:"拓";s:1:"N";s:3:"糖";s:1:"N";s:3:"宅";s:1:"N";s:3:"洞";s:1:"N";s:3:"暴";s:1:"N";s:3:"輻";s:1:"N";s:3:"行";s:1:"N";s:3:"降";s:1:"N";s:3:"見";s:1:"N";s:3:"廓";s:1:"N";s:3:"兀";s:1:"N";s:3:"嗀";s:1:"N";s:3:"塚";s:1:"N";s:3:"晴";s:1:"N";s:3:"凞";s:1:"N";s:3:"猪";s:1:"N";s:3:"益";s:1:"N";s:3:"礼";s:1:"N";s:3:"神";s:1:"N";s:3:"祥";s:1:"N";s:3:"福";s:1:"N";s:3:"靖";s:1:"N";s:3:"精";s:1:"N";s:3:"羽";s:1:"N";s:3:"蘒";s:1:"N";s:3:"諸";s:1:"N";s:3:"逸";s:1:"N";s:3:"都";s:1:"N";s:3:"飯";s:1:"N";s:3:"飼";s:1:"N";s:3:"館";s:1:"N";s:3:"鶴";s:1:"N";s:3:"侮";s:1:"N";s:3:"僧";s:1:"N";s:3:"免";s:1:"N";s:3:"勉";s:1:"N";s:3:"勤";s:1:"N";s:3:"卑";s:1:"N";s:3:"喝";s:1:"N";s:3:"嘆";s:1:"N";s:3:"器";s:1:"N";s:3:"塀";s:1:"N";s:3:"墨";s:1:"N";s:3:"層";s:1:"N";s:3:"屮";s:1:"N";s:3:"悔";s:1:"N";s:3:"慨";s:1:"N";s:3:"憎";s:1:"N";s:3:"懲";s:1:"N";s:3:"敏";s:1:"N";s:3:"既";s:1:"N";s:3:"暑";s:1:"N";s:3:"梅";s:1:"N";s:3:"海";s:1:"N";s:3:"渚";s:1:"N";s:3:"漢";s:1:"N";s:3:"煮";s:1:"N";s:3:"爫";s:1:"N";s:3:"琢";s:1:"N";s:3:"碑";s:1:"N";s:3:"社";s:1:"N";s:3:"祉";s:1:"N";s:3:"祈";s:1:"N";s:3:"祐";s:1:"N";s:3:"祖";s:1:"N";s:3:"祝";s:1:"N";s:3:"禍";s:1:"N";s:3:"禎";s:1:"N";s:3:"穀";s:1:"N";s:3:"突";s:1:"N";s:3:"節";s:1:"N";s:3:"練";s:1:"N";s:3:"縉";s:1:"N";s:3:"繁";s:1:"N";s:3:"署";s:1:"N";s:3:"者";s:1:"N";s:3:"臭";s:1:"N";s:3:"艹";s:1:"N";s:3:"艹";s:1:"N";s:3:"著";s:1:"N";s:3:"褐";s:1:"N";s:3:"視";s:1:"N";s:3:"謁";s:1:"N";s:3:"謹";s:1:"N";s:3:"賓";s:1:"N";s:3:"贈";s:1:"N";s:3:"辶";s:1:"N";s:3:"逸";s:1:"N";s:3:"難";s:1:"N";s:3:"響";s:1:"N";s:3:"頻";s:1:"N";s:3:"恵";s:1:"N";s:3:"𤋮";s:1:"N";s:3:"舘";s:1:"N";s:3:"並";s:1:"N";s:3:"况";s:1:"N";s:3:"全";s:1:"N";s:3:"侀";s:1:"N";s:3:"充";s:1:"N";s:3:"冀";s:1:"N";s:3:"勇";s:1:"N";s:3:"勺";s:1:"N";s:3:"喝";s:1:"N";s:3:"啕";s:1:"N";s:3:"喙";s:1:"N";s:3:"嗢";s:1:"N";s:3:"塚";s:1:"N";s:3:"墳";s:1:"N";s:3:"奄";s:1:"N";s:3:"奔";s:1:"N";s:3:"婢";s:1:"N";s:3:"嬨";s:1:"N";s:3:"廒";s:1:"N";s:3:"廙";s:1:"N";s:3:"彩";s:1:"N";s:3:"徭";s:1:"N";s:3:"惘";s:1:"N";s:3:"慎";s:1:"N";s:3:"愈";s:1:"N";s:3:"憎";s:1:"N";s:3:"慠";s:1:"N";s:3:"懲";s:1:"N";s:3:"戴";s:1:"N";s:3:"揄";s:1:"N";s:3:"搜";s:1:"N";s:3:"摒";s:1:"N";s:3:"敖";s:1:"N";s:3:"晴";s:1:"N";s:3:"朗";s:1:"N";s:3:"望";s:1:"N";s:3:"杖";s:1:"N";s:3:"歹";s:1:"N";s:3:"殺";s:1:"N";s:3:"流";s:1:"N";s:3:"滛";s:1:"N";s:3:"滋";s:1:"N";s:3:"漢";s:1:"N";s:3:"瀞";s:1:"N";s:3:"煮";s:1:"N";s:3:"瞧";s:1:"N";s:3:"爵";s:1:"N";s:3:"犯";s:1:"N";s:3:"猪";s:1:"N";s:3:"瑱";s:1:"N";s:3:"甆";s:1:"N";s:3:"画";s:1:"N";s:3:"瘝";s:1:"N";s:3:"瘟";s:1:"N";s:3:"益";s:1:"N";s:3:"盛";s:1:"N";s:3:"直";s:1:"N";s:3:"睊";s:1:"N";s:3:"着";s:1:"N";s:3:"磌";s:1:"N";s:3:"窱";s:1:"N";s:3:"節";s:1:"N";s:3:"类";s:1:"N";s:3:"絛";s:1:"N";s:3:"練";s:1:"N";s:3:"缾";s:1:"N";s:3:"者";s:1:"N";s:3:"荒";s:1:"N";s:3:"華";s:1:"N";s:3:"蝹";s:1:"N";s:3:"襁";s:1:"N";s:3:"覆";s:1:"N";s:3:"視";s:1:"N";s:3:"調";s:1:"N";s:3:"諸";s:1:"N";s:3:"請";s:1:"N";s:3:"謁";s:1:"N";s:3:"諾";s:1:"N";s:3:"諭";s:1:"N";s:3:"謹";s:1:"N";s:3:"變";s:1:"N";s:3:"贈";s:1:"N";s:3:"輸";s:1:"N";s:3:"遲";s:1:"N";s:3:"醙";s:1:"N";s:3:"鉶";s:1:"N";s:3:"陼";s:1:"N";s:3:"難";s:1:"N";s:3:"靖";s:1:"N";s:3:"韛";s:1:"N";s:3:"響";s:1:"N";s:3:"頋";s:1:"N";s:3:"頻";s:1:"N";s:3:"鬒";s:1:"N";s:3:"龜";s:1:"N";s:3:"𢡊";s:1:"N";s:3:"𢡄";s:1:"N";s:3:"𣏕";s:1:"N";s:3:"㮝";s:1:"N";s:3:"䀘";s:1:"N";s:3:"䀹";s:1:"N";s:3:"𥉉";s:1:"N";s:3:"𥳐";s:1:"N";s:3:"𧻓";s:1:"N";s:3:"齃";s:1:"N";s:3:"龎";s:1:"N";s:3:"יִ";s:1:"N";s:3:"ײַ";s:1:"N";s:3:"שׁ";s:1:"N";s:3:"שׂ";s:1:"N";s:3:"שּׁ";s:1:"N";s:3:"שּׂ";s:1:"N";s:3:"אַ";s:1:"N";s:3:"אָ";s:1:"N";s:3:"אּ";s:1:"N";s:3:"בּ";s:1:"N";s:3:"גּ";s:1:"N";s:3:"דּ";s:1:"N";s:3:"הּ";s:1:"N";s:3:"וּ";s:1:"N";s:3:"זּ";s:1:"N";s:3:"טּ";s:1:"N";s:3:"יּ";s:1:"N";s:3:"ךּ";s:1:"N";s:3:"כּ";s:1:"N";s:3:"לּ";s:1:"N";s:3:"מּ";s:1:"N";s:3:"נּ";s:1:"N";s:3:"סּ";s:1:"N";s:3:"ףּ";s:1:"N";s:3:"פּ";s:1:"N";s:3:"צּ";s:1:"N";s:3:"קּ";s:1:"N";s:3:"רּ";s:1:"N";s:3:"שּ";s:1:"N";s:3:"תּ";s:1:"N";s:3:"וֹ";s:1:"N";s:3:"בֿ";s:1:"N";s:3:"כֿ";s:1:"N";s:3:"פֿ";s:1:"N";s:4:"𝅗𝅥";s:1:"N";s:4:"𝅘𝅥";s:1:"N";s:4:"𝅘𝅥𝅮";s:1:"N";s:4:"𝅘𝅥𝅯";s:1:"N";s:4:"𝅘𝅥𝅰";s:1:"N";s:4:"𝅘𝅥𝅱";s:1:"N";s:4:"𝅘𝅥𝅲";s:1:"N";s:4:"𝆹𝅥";s:1:"N";s:4:"𝆺𝅥";s:1:"N";s:4:"𝆹𝅥𝅮";s:1:"N";s:4:"𝆺𝅥𝅮";s:1:"N";s:4:"𝆹𝅥𝅯";s:1:"N";s:4:"𝆺𝅥𝅯";s:1:"N";s:4:"丽";s:1:"N";s:4:"丸";s:1:"N";s:4:"乁";s:1:"N";s:4:"𠄢";s:1:"N";s:4:"你";s:1:"N";s:4:"侮";s:1:"N";s:4:"侻";s:1:"N";s:4:"倂";s:1:"N";s:4:"偺";s:1:"N";s:4:"備";s:1:"N";s:4:"僧";s:1:"N";s:4:"像";s:1:"N";s:4:"㒞";s:1:"N";s:4:"𠘺";s:1:"N";s:4:"免";s:1:"N";s:4:"兔";s:1:"N";s:4:"兤";s:1:"N";s:4:"具";s:1:"N";s:4:"𠔜";s:1:"N";s:4:"㒹";s:1:"N";s:4:"內";s:1:"N";s:4:"再";s:1:"N";s:4:"𠕋";s:1:"N";s:4:"冗";s:1:"N";s:4:"冤";s:1:"N";s:4:"仌";s:1:"N";s:4:"冬";s:1:"N";s:4:"况";s:1:"N";s:4:"𩇟";s:1:"N";s:4:"凵";s:1:"N";s:4:"刃";s:1:"N";s:4:"㓟";s:1:"N";s:4:"刻";s:1:"N";s:4:"剆";s:1:"N";s:4:"割";s:1:"N";s:4:"剷";s:1:"N";s:4:"㔕";s:1:"N";s:4:"勇";s:1:"N";s:4:"勉";s:1:"N";s:4:"勤";s:1:"N";s:4:"勺";s:1:"N";s:4:"包";s:1:"N";s:4:"匆";s:1:"N";s:4:"北";s:1:"N";s:4:"卉";s:1:"N";s:4:"卑";s:1:"N";s:4:"博";s:1:"N";s:4:"即";s:1:"N";s:4:"卽";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"𠨬";s:1:"N";s:4:"灰";s:1:"N";s:4:"及";s:1:"N";s:4:"叟";s:1:"N";s:4:"𠭣";s:1:"N";s:4:"叫";s:1:"N";s:4:"叱";s:1:"N";s:4:"吆";s:1:"N";s:4:"咞";s:1:"N";s:4:"吸";s:1:"N";s:4:"呈";s:1:"N";s:4:"周";s:1:"N";s:4:"咢";s:1:"N";s:4:"哶";s:1:"N";s:4:"唐";s:1:"N";s:4:"啓";s:1:"N";s:4:"啣";s:1:"N";s:4:"善";s:1:"N";s:4:"善";s:1:"N";s:4:"喙";s:1:"N";s:4:"喫";s:1:"N";s:4:"喳";s:1:"N";s:4:"嗂";s:1:"N";s:4:"圖";s:1:"N";s:4:"嘆";s:1:"N";s:4:"圗";s:1:"N";s:4:"噑";s:1:"N";s:4:"噴";s:1:"N";s:4:"切";s:1:"N";s:4:"壮";s:1:"N";s:4:"城";s:1:"N";s:4:"埴";s:1:"N";s:4:"堍";s:1:"N";s:4:"型";s:1:"N";s:4:"堲";s:1:"N";s:4:"報";s:1:"N";s:4:"墬";s:1:"N";s:4:"𡓤";s:1:"N";s:4:"売";s:1:"N";s:4:"壷";s:1:"N";s:4:"夆";s:1:"N";s:4:"多";s:1:"N";s:4:"夢";s:1:"N";s:4:"奢";s:1:"N";s:4:"𡚨";s:1:"N";s:4:"𡛪";s:1:"N";s:4:"姬";s:1:"N";s:4:"娛";s:1:"N";s:4:"娧";s:1:"N";s:4:"姘";s:1:"N";s:4:"婦";s:1:"N";s:4:"㛮";s:1:"N";s:4:"㛼";s:1:"N";s:4:"嬈";s:1:"N";s:4:"嬾";s:1:"N";s:4:"嬾";s:1:"N";s:4:"𡧈";s:1:"N";s:4:"寃";s:1:"N";s:4:"寘";s:1:"N";s:4:"寧";s:1:"N";s:4:"寳";s:1:"N";s:4:"𡬘";s:1:"N";s:4:"寿";s:1:"N";s:4:"将";s:1:"N";s:4:"当";s:1:"N";s:4:"尢";s:1:"N";s:4:"㞁";s:1:"N";s:4:"屠";s:1:"N";s:4:"屮";s:1:"N";s:4:"峀";s:1:"N";s:4:"岍";s:1:"N";s:4:"𡷤";s:1:"N";s:4:"嵃";s:1:"N";s:4:"𡷦";s:1:"N";s:4:"嵮";s:1:"N";s:4:"嵫";s:1:"N";s:4:"嵼";s:1:"N";s:4:"巡";s:1:"N";s:4:"巢";s:1:"N";s:4:"㠯";s:1:"N";s:4:"巽";s:1:"N";s:4:"帨";s:1:"N";s:4:"帽";s:1:"N";s:4:"幩";s:1:"N";s:4:"㡢";s:1:"N";s:4:"𢆃";s:1:"N";s:4:"㡼";s:1:"N";s:4:"庰";s:1:"N";s:4:"庳";s:1:"N";s:4:"庶";s:1:"N";s:4:"廊";s:1:"N";s:4:"𪎒";s:1:"N";s:4:"廾";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"舁";s:1:"N";s:4:"弢";s:1:"N";s:4:"弢";s:1:"N";s:4:"㣇";s:1:"N";s:4:"𣊸";s:1:"N";s:4:"𦇚";s:1:"N";s:4:"形";s:1:"N";s:4:"彫";s:1:"N";s:4:"㣣";s:1:"N";s:4:"徚";s:1:"N";s:4:"忍";s:1:"N";s:4:"志";s:1:"N";s:4:"忹";s:1:"N";s:4:"悁";s:1:"N";s:4:"㤺";s:1:"N";s:4:"㤜";s:1:"N";s:4:"悔";s:1:"N";s:4:"𢛔";s:1:"N";s:4:"惇";s:1:"N";s:4:"慈";s:1:"N";s:4:"慌";s:1:"N";s:4:"慎";s:1:"N";s:4:"慌";s:1:"N";s:4:"慺";s:1:"N";s:4:"憎";s:1:"N";s:4:"憲";s:1:"N";s:4:"憤";s:1:"N";s:4:"憯";s:1:"N";s:4:"懞";s:1:"N";s:4:"懲";s:1:"N";s:4:"懶";s:1:"N";s:4:"成";s:1:"N";s:4:"戛";s:1:"N";s:4:"扝";s:1:"N";s:4:"抱";s:1:"N";s:4:"拔";s:1:"N";s:4:"捐";s:1:"N";s:4:"𢬌";s:1:"N";s:4:"挽";s:1:"N";s:4:"拼";s:1:"N";s:4:"捨";s:1:"N";s:4:"掃";s:1:"N";s:4:"揤";s:1:"N";s:4:"𢯱";s:1:"N";s:4:"搢";s:1:"N";s:4:"揅";s:1:"N";s:4:"掩";s:1:"N";s:4:"㨮";s:1:"N";s:4:"摩";s:1:"N";s:4:"摾";s:1:"N";s:4:"撝";s:1:"N";s:4:"摷";s:1:"N";s:4:"㩬";s:1:"N";s:4:"敏";s:1:"N";s:4:"敬";s:1:"N";s:4:"𣀊";s:1:"N";s:4:"旣";s:1:"N";s:4:"書";s:1:"N";s:4:"晉";s:1:"N";s:4:"㬙";s:1:"N";s:4:"暑";s:1:"N";s:4:"㬈";s:1:"N";s:4:"㫤";s:1:"N";s:4:"冒";s:1:"N";s:4:"冕";s:1:"N";s:4:"最";s:1:"N";s:4:"暜";s:1:"N";s:4:"肭";s:1:"N";s:4:"䏙";s:1:"N";s:4:"朗";s:1:"N";s:4:"望";s:1:"N";s:4:"朡";s:1:"N";s:4:"杞";s:1:"N";s:4:"杓";s:1:"N";s:4:"𣏃";s:1:"N";s:4:"㭉";s:1:"N";s:4:"柺";s:1:"N";s:4:"枅";s:1:"N";s:4:"桒";s:1:"N";s:4:"梅";s:1:"N";s:4:"𣑭";s:1:"N";s:4:"梎";s:1:"N";s:4:"栟";s:1:"N";s:4:"椔";s:1:"N";s:4:"㮝";s:1:"N";s:4:"楂";s:1:"N";s:4:"榣";s:1:"N";s:4:"槪";s:1:"N";s:4:"檨";s:1:"N";s:4:"𣚣";s:1:"N";s:4:"櫛";s:1:"N";s:4:"㰘";s:1:"N";s:4:"次";s:1:"N";s:4:"𣢧";s:1:"N";s:4:"歔";s:1:"N";s:4:"㱎";s:1:"N";s:4:"歲";s:1:"N";s:4:"殟";s:1:"N";s:4:"殺";s:1:"N";s:4:"殻";s:1:"N";s:4:"𣪍";s:1:"N";s:4:"𡴋";s:1:"N";s:4:"𣫺";s:1:"N";s:4:"汎";s:1:"N";s:4:"𣲼";s:1:"N";s:4:"沿";s:1:"N";s:4:"泍";s:1:"N";s:4:"汧";s:1:"N";s:4:"洖";s:1:"N";s:4:"派";s:1:"N";s:4:"海";s:1:"N";s:4:"流";s:1:"N";s:4:"浩";s:1:"N";s:4:"浸";s:1:"N";s:4:"涅";s:1:"N";s:4:"𣴞";s:1:"N";s:4:"洴";s:1:"N";s:4:"港";s:1:"N";s:4:"湮";s:1:"N";s:4:"㴳";s:1:"N";s:4:"滋";s:1:"N";s:4:"滇";s:1:"N";s:4:"𣻑";s:1:"N";s:4:"淹";s:1:"N";s:4:"潮";s:1:"N";s:4:"𣽞";s:1:"N";s:4:"𣾎";s:1:"N";s:4:"濆";s:1:"N";s:4:"瀹";s:1:"N";s:4:"瀞";s:1:"N";s:4:"瀛";s:1:"N";s:4:"㶖";s:1:"N";s:4:"灊";s:1:"N";s:4:"災";s:1:"N";s:4:"灷";s:1:"N";s:4:"炭";s:1:"N";s:4:"𠔥";s:1:"N";s:4:"煅";s:1:"N";s:4:"𤉣";s:1:"N";s:4:"熜";s:1:"N";s:4:"𤎫";s:1:"N";s:4:"爨";s:1:"N";s:4:"爵";s:1:"N";s:4:"牐";s:1:"N";s:4:"𤘈";s:1:"N";s:4:"犀";s:1:"N";s:4:"犕";s:1:"N";s:4:"𤜵";s:1:"N";s:4:"𤠔";s:1:"N";s:4:"獺";s:1:"N";s:4:"王";s:1:"N";s:4:"㺬";s:1:"N";s:4:"玥";s:1:"N";s:4:"㺸";s:1:"N";s:4:"㺸";s:1:"N";s:4:"瑇";s:1:"N";s:4:"瑜";s:1:"N";s:4:"瑱";s:1:"N";s:4:"璅";s:1:"N";s:4:"瓊";s:1:"N";s:4:"㼛";s:1:"N";s:4:"甤";s:1:"N";s:4:"𤰶";s:1:"N";s:4:"甾";s:1:"N";s:4:"𤲒";s:1:"N";s:4:"異";s:1:"N";s:4:"𢆟";s:1:"N";s:4:"瘐";s:1:"N";s:4:"𤾡";s:1:"N";s:4:"𤾸";s:1:"N";s:4:"𥁄";s:1:"N";s:4:"㿼";s:1:"N";s:4:"䀈";s:1:"N";s:4:"直";s:1:"N";s:4:"𥃳";s:1:"N";s:4:"𥃲";s:1:"N";s:4:"𥄙";s:1:"N";s:4:"𥄳";s:1:"N";s:4:"眞";s:1:"N";s:4:"真";s:1:"N";s:4:"真";s:1:"N";s:4:"睊";s:1:"N";s:4:"䀹";s:1:"N";s:4:"瞋";s:1:"N";s:4:"䁆";s:1:"N";s:4:"䂖";s:1:"N";s:4:"𥐝";s:1:"N";s:4:"硎";s:1:"N";s:4:"碌";s:1:"N";s:4:"磌";s:1:"N";s:4:"䃣";s:1:"N";s:4:"𥘦";s:1:"N";s:4:"祖";s:1:"N";s:4:"𥚚";s:1:"N";s:4:"𥛅";s:1:"N";s:4:"福";s:1:"N";s:4:"秫";s:1:"N";s:4:"䄯";s:1:"N";s:4:"穀";s:1:"N";s:4:"穊";s:1:"N";s:4:"穏";s:1:"N";s:4:"𥥼";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"竮";s:1:"N";s:4:"䈂";s:1:"N";s:4:"𥮫";s:1:"N";s:4:"篆";s:1:"N";s:4:"築";s:1:"N";s:4:"䈧";s:1:"N";s:4:"𥲀";s:1:"N";s:4:"糒";s:1:"N";s:4:"䊠";s:1:"N";s:4:"糨";s:1:"N";s:4:"糣";s:1:"N";s:4:"紀";s:1:"N";s:4:"𥾆";s:1:"N";s:4:"絣";s:1:"N";s:4:"䌁";s:1:"N";s:4:"緇";s:1:"N";s:4:"縂";s:1:"N";s:4:"繅";s:1:"N";s:4:"䌴";s:1:"N";s:4:"𦈨";s:1:"N";s:4:"𦉇";s:1:"N";s:4:"䍙";s:1:"N";s:4:"𦋙";s:1:"N";s:4:"罺";s:1:"N";s:4:"𦌾";s:1:"N";s:4:"羕";s:1:"N";s:4:"翺";s:1:"N";s:4:"者";s:1:"N";s:4:"𦓚";s:1:"N";s:4:"𦔣";s:1:"N";s:4:"聠";s:1:"N";s:4:"𦖨";s:1:"N";s:4:"聰";s:1:"N";s:4:"𣍟";s:1:"N";s:4:"䏕";s:1:"N";s:4:"育";s:1:"N";s:4:"脃";s:1:"N";s:4:"䐋";s:1:"N";s:4:"脾";s:1:"N";s:4:"媵";s:1:"N";s:4:"𦞧";s:1:"N";s:4:"𦞵";s:1:"N";s:4:"𣎓";s:1:"N";s:4:"𣎜";s:1:"N";s:4:"舁";s:1:"N";s:4:"舄";s:1:"N";s:4:"辞";s:1:"N";s:4:"䑫";s:1:"N";s:4:"芑";s:1:"N";s:4:"芋";s:1:"N";s:4:"芝";s:1:"N";s:4:"劳";s:1:"N";s:4:"花";s:1:"N";s:4:"芳";s:1:"N";s:4:"芽";s:1:"N";s:4:"苦";s:1:"N";s:4:"𦬼";s:1:"N";s:4:"若";s:1:"N";s:4:"茝";s:1:"N";s:4:"荣";s:1:"N";s:4:"莭";s:1:"N";s:4:"茣";s:1:"N";s:4:"莽";s:1:"N";s:4:"菧";s:1:"N";s:4:"著";s:1:"N";s:4:"荓";s:1:"N";s:4:"菊";s:1:"N";s:4:"菌";s:1:"N";s:4:"菜";s:1:"N";s:4:"𦰶";s:1:"N";s:4:"𦵫";s:1:"N";s:4:"𦳕";s:1:"N";s:4:"䔫";s:1:"N";s:4:"蓱";s:1:"N";s:4:"蓳";s:1:"N";s:4:"蔖";s:1:"N";s:4:"𧏊";s:1:"N";s:4:"蕤";s:1:"N";s:4:"𦼬";s:1:"N";s:4:"䕝";s:1:"N";s:4:"䕡";s:1:"N";s:4:"𦾱";s:1:"N";s:4:"𧃒";s:1:"N";s:4:"䕫";s:1:"N";s:4:"虐";s:1:"N";s:4:"虜";s:1:"N";s:4:"虧";s:1:"N";s:4:"虩";s:1:"N";s:4:"蚩";s:1:"N";s:4:"蚈";s:1:"N";s:4:"蜎";s:1:"N";s:4:"蛢";s:1:"N";s:4:"蝹";s:1:"N";s:4:"蜨";s:1:"N";s:4:"蝫";s:1:"N";s:4:"螆";s:1:"N";s:4:"䗗";s:1:"N";s:4:"蟡";s:1:"N";s:4:"蠁";s:1:"N";s:4:"䗹";s:1:"N";s:4:"衠";s:1:"N";s:4:"衣";s:1:"N";s:4:"𧙧";s:1:"N";s:4:"裗";s:1:"N";s:4:"裞";s:1:"N";s:4:"䘵";s:1:"N";s:4:"裺";s:1:"N";s:4:"㒻";s:1:"N";s:4:"𧢮";s:1:"N";s:4:"𧥦";s:1:"N";s:4:"䚾";s:1:"N";s:4:"䛇";s:1:"N";s:4:"誠";s:1:"N";s:4:"諭";s:1:"N";s:4:"變";s:1:"N";s:4:"豕";s:1:"N";s:4:"𧲨";s:1:"N";s:4:"貫";s:1:"N";s:4:"賁";s:1:"N";s:4:"贛";s:1:"N";s:4:"起";s:1:"N";s:4:"𧼯";s:1:"N";s:4:"𠠄";s:1:"N";s:4:"跋";s:1:"N";s:4:"趼";s:1:"N";s:4:"跰";s:1:"N";s:4:"𠣞";s:1:"N";s:4:"軔";s:1:"N";s:4:"輸";s:1:"N";s:4:"𨗒";s:1:"N";s:4:"𨗭";s:1:"N";s:4:"邔";s:1:"N";s:4:"郱";s:1:"N";s:4:"鄑";s:1:"N";s:4:"𨜮";s:1:"N";s:4:"鄛";s:1:"N";s:4:"鈸";s:1:"N";s:4:"鋗";s:1:"N";s:4:"鋘";s:1:"N";s:4:"鉼";s:1:"N";s:4:"鏹";s:1:"N";s:4:"鐕";s:1:"N";s:4:"𨯺";s:1:"N";s:4:"開";s:1:"N";s:4:"䦕";s:1:"N";s:4:"閷";s:1:"N";s:4:"𨵷";s:1:"N";s:4:"䧦";s:1:"N";s:4:"雃";s:1:"N";s:4:"嶲";s:1:"N";s:4:"霣";s:1:"N";s:4:"𩅅";s:1:"N";s:4:"𩈚";s:1:"N";s:4:"䩮";s:1:"N";s:4:"䩶";s:1:"N";s:4:"韠";s:1:"N";s:4:"𩐊";s:1:"N";s:4:"䪲";s:1:"N";s:4:"𩒖";s:1:"N";s:4:"頋";s:1:"N";s:4:"頋";s:1:"N";s:4:"頩";s:1:"N";s:4:"𩖶";s:1:"N";s:4:"飢";s:1:"N";s:4:"䬳";s:1:"N";s:4:"餩";s:1:"N";s:4:"馧";s:1:"N";s:4:"駂";s:1:"N";s:4:"駾";s:1:"N";s:4:"䯎";s:1:"N";s:4:"𩬰";s:1:"N";s:4:"鬒";s:1:"N";s:4:"鱀";s:1:"N";s:4:"鳽";s:1:"N";s:4:"䳎";s:1:"N";s:4:"䳭";s:1:"N";s:4:"鵧";s:1:"N";s:4:"𪃎";s:1:"N";s:4:"䳸";s:1:"N";s:4:"𪄅";s:1:"N";s:4:"𪈎";s:1:"N";s:4:"𪊑";s:1:"N";s:4:"麻";s:1:"N";s:4:"䵖";s:1:"N";s:4:"黹";s:1:"N";s:4:"黾";s:1:"N";s:4:"鼅";s:1:"N";s:4:"鼏";s:1:"N";s:4:"鼖";s:1:"N";s:4:"鼻";s:1:"N";s:4:"𪘀";s:1:"N";s:2:"̀";s:1:"M";s:2:"́";s:1:"M";s:2:"̂";s:1:"M";s:2:"̃";s:1:"M";s:2:"̄";s:1:"M";s:2:"̆";s:1:"M";s:2:"̇";s:1:"M";s:2:"̈";s:1:"M";s:2:"̉";s:1:"M";s:2:"̊";s:1:"M";s:2:"̋";s:1:"M";s:2:"̌";s:1:"M";s:2:"̏";s:1:"M";s:2:"̑";s:1:"M";s:2:"̓";s:1:"M";s:2:"̔";s:1:"M";s:2:"̛";s:1:"M";s:2:"̣";s:1:"M";s:2:"̤";s:1:"M";s:2:"̥";s:1:"M";s:2:"̦";s:1:"M";s:2:"̧";s:1:"M";s:2:"̨";s:1:"M";s:2:"̭";s:1:"M";s:2:"̮";s:1:"M";s:2:"̰";s:1:"M";s:2:"̱";s:1:"M";s:2:"̸";s:1:"M";s:2:"͂";s:1:"M";s:2:"ͅ";s:1:"M";s:2:"ٓ";s:1:"M";s:2:"ٔ";s:1:"M";s:2:"ٕ";s:1:"M";s:3:"़";s:1:"M";s:3:"া";s:1:"M";s:3:"ৗ";s:1:"M";s:3:"ା";s:1:"M";s:3:"ୖ";s:1:"M";s:3:"ୗ";s:1:"M";s:3:"ா";s:1:"M";s:3:"ௗ";s:1:"M";s:3:"ౖ";s:1:"M";s:3:"ೂ";s:1:"M";s:3:"ೕ";s:1:"M";s:3:"ೖ";s:1:"M";s:3:"ാ";s:1:"M";s:3:"ൗ";s:1:"M";s:3:"්";s:1:"M";s:3:"ා";s:1:"M";s:3:"ෟ";s:1:"M";s:3:"ီ";s:1:"M";s:3:"ᅡ";s:1:"M";s:3:"ᅢ";s:1:"M";s:3:"ᅣ";s:1:"M";s:3:"ᅤ";s:1:"M";s:3:"ᅥ";s:1:"M";s:3:"ᅦ";s:1:"M";s:3:"ᅧ";s:1:"M";s:3:"ᅨ";s:1:"M";s:3:"ᅩ";s:1:"M";s:3:"ᅪ";s:1:"M";s:3:"ᅫ";s:1:"M";s:3:"ᅬ";s:1:"M";s:3:"ᅭ";s:1:"M";s:3:"ᅮ";s:1:"M";s:3:"ᅯ";s:1:"M";s:3:"ᅰ";s:1:"M";s:3:"ᅱ";s:1:"M";s:3:"ᅲ";s:1:"M";s:3:"ᅳ";s:1:"M";s:3:"ᅴ";s:1:"M";s:3:"ᅵ";s:1:"M";s:3:"ᆨ";s:1:"M";s:3:"ᆩ";s:1:"M";s:3:"ᆪ";s:1:"M";s:3:"ᆫ";s:1:"M";s:3:"ᆬ";s:1:"M";s:3:"ᆭ";s:1:"M";s:3:"ᆮ";s:1:"M";s:3:"ᆯ";s:1:"M";s:3:"ᆰ";s:1:"M";s:3:"ᆱ";s:1:"M";s:3:"ᆲ";s:1:"M";s:3:"ᆳ";s:1:"M";s:3:"ᆴ";s:1:"M";s:3:"ᆵ";s:1:"M";s:3:"ᆶ";s:1:"M";s:3:"ᆷ";s:1:"M";s:3:"ᆸ";s:1:"M";s:3:"ᆹ";s:1:"M";s:3:"ᆺ";s:1:"M";s:3:"ᆻ";s:1:"M";s:3:"ᆼ";s:1:"M";s:3:"ᆽ";s:1:"M";s:3:"ᆾ";s:1:"M";s:3:"ᆿ";s:1:"M";s:3:"ᇀ";s:1:"M";s:3:"ᇁ";s:1:"M";s:3:"ᇂ";s:1:"M";s:3:"ᬵ";s:1:"M";s:3:"゙";s:1:"M";s:3:"゚";s:1:"M";s:4:"𑂺";s:1:"M";}' );
+
diff --git a/includes/normal/UtfNormalDataK.inc b/includes/normal/UtfNormalDataK.inc
index a97e005a..ad1b4bf2 100644
--- a/includes/normal/UtfNormalDataK.inc
+++ b/includes/normal/UtfNormalDataK.inc
@@ -5,5 +5,5 @@
*/
/** */
global $utfCompatibilityDecomp;
-$utfCompatibilityDecomp = unserialize( 'a:5405:{s:2:" ";s:1:" ";s:2:"¨";s:3:" ̈";s:2:"ª";s:1:"a";s:2:"¯";s:3:" ̄";s:2:"²";s:1:"2";s:2:"³";s:1:"3";s:2:"´";s:3:" ́";s:2:"µ";s:2:"μ";s:2:"¸";s:3:" ̧";s:2:"¹";s:1:"1";s:2:"º";s:1:"o";s:2:"¼";s:5:"1⁄4";s:2:"½";s:5:"1⁄2";s:2:"¾";s:5:"3⁄4";s:2:"À";s:3:"À";s:2:"Á";s:3:"Á";s:2:"Â";s:3:"Â";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Å";s:3:"Å";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"È";s:2:"É";s:3:"É";s:2:"Ê";s:3:"Ê";s:2:"Ë";s:3:"Ë";s:2:"Ì";s:3:"Ì";s:2:"Í";s:3:"Í";s:2:"Î";s:3:"Î";s:2:"Ï";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ò";s:3:"Ò";s:2:"Ó";s:3:"Ó";s:2:"Ô";s:3:"Ô";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"Ù";s:2:"Ú";s:3:"Ú";s:2:"Û";s:3:"Û";s:2:"Ü";s:3:"Ü";s:2:"Ý";s:3:"Ý";s:2:"à";s:3:"à";s:2:"á";s:3:"á";s:2:"â";s:3:"â";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"å";s:3:"å";s:2:"ç";s:3:"ç";s:2:"è";s:3:"è";s:2:"é";s:3:"é";s:2:"ê";s:3:"ê";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"ì";s:2:"í";s:3:"í";s:2:"î";s:3:"î";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"ò";s:2:"ó";s:3:"ó";s:2:"ô";s:3:"ô";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"ù";s:2:"ú";s:3:"ú";s:2:"û";s:3:"û";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"ý";s:2:"ÿ";s:3:"ÿ";s:2:"Ā";s:3:"Ā";s:2:"ā";s:3:"ā";s:2:"Ă";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ą";s:3:"Ą";s:2:"ą";s:3:"ą";s:2:"Ć";s:3:"Ć";s:2:"ć";s:3:"ć";s:2:"Ĉ";s:3:"Ĉ";s:2:"ĉ";s:3:"ĉ";s:2:"Ċ";s:3:"Ċ";s:2:"ċ";s:3:"ċ";s:2:"Č";s:3:"Č";s:2:"č";s:3:"č";s:2:"Ď";s:3:"Ď";s:2:"ď";s:3:"ď";s:2:"Ē";s:3:"Ē";s:2:"ē";s:3:"ē";s:2:"Ĕ";s:3:"Ĕ";s:2:"ĕ";s:3:"ĕ";s:2:"Ė";s:3:"Ė";s:2:"ė";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"ę";s:3:"ę";s:2:"Ě";s:3:"Ě";s:2:"ě";s:3:"ě";s:2:"Ĝ";s:3:"Ĝ";s:2:"ĝ";s:3:"ĝ";s:2:"Ğ";s:3:"Ğ";s:2:"ğ";s:3:"ğ";s:2:"Ġ";s:3:"Ġ";s:2:"ġ";s:3:"ġ";s:2:"Ģ";s:3:"Ģ";s:2:"ģ";s:3:"ģ";s:2:"Ĥ";s:3:"Ĥ";s:2:"ĥ";s:3:"ĥ";s:2:"Ĩ";s:3:"Ĩ";s:2:"ĩ";s:3:"ĩ";s:2:"Ī";s:3:"Ī";s:2:"ī";s:3:"ī";s:2:"Ĭ";s:3:"Ĭ";s:2:"ĭ";s:3:"ĭ";s:2:"Į";s:3:"Į";s:2:"į";s:3:"į";s:2:"İ";s:3:"İ";s:2:"IJ";s:2:"IJ";s:2:"ij";s:2:"ij";s:2:"Ĵ";s:3:"Ĵ";s:2:"ĵ";s:3:"ĵ";s:2:"Ķ";s:3:"Ķ";s:2:"ķ";s:3:"ķ";s:2:"Ĺ";s:3:"Ĺ";s:2:"ĺ";s:3:"ĺ";s:2:"Ļ";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"Ľ";s:2:"ľ";s:3:"ľ";s:2:"Ŀ";s:3:"L·";s:2:"ŀ";s:3:"l·";s:2:"Ń";s:3:"Ń";s:2:"ń";s:3:"ń";s:2:"Ņ";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"Ň";s:2:"ň";s:3:"ň";s:2:"ʼn";s:3:"ʼn";s:2:"Ō";s:3:"Ō";s:2:"ō";s:3:"ō";s:2:"Ŏ";s:3:"Ŏ";s:2:"ŏ";s:3:"ŏ";s:2:"Ő";s:3:"Ő";s:2:"ő";s:3:"ő";s:2:"Ŕ";s:3:"Ŕ";s:2:"ŕ";s:3:"ŕ";s:2:"Ŗ";s:3:"Ŗ";s:2:"ŗ";s:3:"ŗ";s:2:"Ř";s:3:"Ř";s:2:"ř";s:3:"ř";s:2:"Ś";s:3:"Ś";s:2:"ś";s:3:"ś";s:2:"Ŝ";s:3:"Ŝ";s:2:"ŝ";s:3:"ŝ";s:2:"Ş";s:3:"Ş";s:2:"ş";s:3:"ş";s:2:"Š";s:3:"Š";s:2:"š";s:3:"š";s:2:"Ţ";s:3:"Ţ";s:2:"ţ";s:3:"ţ";s:2:"Ť";s:3:"Ť";s:2:"ť";s:3:"ť";s:2:"Ũ";s:3:"Ũ";s:2:"ũ";s:3:"ũ";s:2:"Ū";s:3:"Ū";s:2:"ū";s:3:"ū";s:2:"Ŭ";s:3:"Ŭ";s:2:"ŭ";s:3:"ŭ";s:2:"Ů";s:3:"Ů";s:2:"ů";s:3:"ů";s:2:"Ű";s:3:"Ű";s:2:"ű";s:3:"ű";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Ŵ";s:3:"Ŵ";s:2:"ŵ";s:3:"ŵ";s:2:"Ŷ";s:3:"Ŷ";s:2:"ŷ";s:3:"ŷ";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"Ź";s:2:"ź";s:3:"ź";s:2:"Ż";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"Ž";s:2:"ž";s:3:"ž";s:2:"ſ";s:1:"s";s:2:"Ơ";s:3:"Ơ";s:2:"ơ";s:3:"ơ";s:2:"Ư";s:3:"Ư";s:2:"ư";s:3:"ư";s:2:"DŽ";s:4:"DŽ";s:2:"Dž";s:4:"Dž";s:2:"dž";s:4:"dž";s:2:"LJ";s:2:"LJ";s:2:"Lj";s:2:"Lj";s:2:"lj";s:2:"lj";s:2:"NJ";s:2:"NJ";s:2:"Nj";s:2:"Nj";s:2:"nj";s:2:"nj";s:2:"Ǎ";s:3:"Ǎ";s:2:"ǎ";s:3:"ǎ";s:2:"Ǐ";s:3:"Ǐ";s:2:"ǐ";s:3:"ǐ";s:2:"Ǒ";s:3:"Ǒ";s:2:"ǒ";s:3:"ǒ";s:2:"Ǔ";s:3:"Ǔ";s:2:"ǔ";s:3:"ǔ";s:2:"Ǖ";s:5:"Ǖ";s:2:"ǖ";s:5:"ǖ";s:2:"Ǘ";s:5:"Ǘ";s:2:"ǘ";s:5:"ǘ";s:2:"Ǚ";s:5:"Ǚ";s:2:"ǚ";s:5:"ǚ";s:2:"Ǜ";s:5:"Ǜ";s:2:"ǜ";s:5:"ǜ";s:2:"Ǟ";s:5:"Ǟ";s:2:"ǟ";s:5:"ǟ";s:2:"Ǡ";s:5:"Ǡ";s:2:"ǡ";s:5:"ǡ";s:2:"Ǣ";s:4:"Ǣ";s:2:"ǣ";s:4:"ǣ";s:2:"Ǧ";s:3:"Ǧ";s:2:"ǧ";s:3:"ǧ";s:2:"Ǩ";s:3:"Ǩ";s:2:"ǩ";s:3:"ǩ";s:2:"Ǫ";s:3:"Ǫ";s:2:"ǫ";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"ǭ";s:5:"ǭ";s:2:"Ǯ";s:4:"Ǯ";s:2:"ǯ";s:4:"ǯ";s:2:"ǰ";s:3:"ǰ";s:2:"DZ";s:2:"DZ";s:2:"Dz";s:2:"Dz";s:2:"dz";s:2:"dz";s:2:"Ǵ";s:3:"Ǵ";s:2:"ǵ";s:3:"ǵ";s:2:"Ǹ";s:3:"Ǹ";s:2:"ǹ";s:3:"ǹ";s:2:"Ǻ";s:5:"Ǻ";s:2:"ǻ";s:5:"ǻ";s:2:"Ǽ";s:4:"Ǽ";s:2:"ǽ";s:4:"ǽ";s:2:"Ǿ";s:4:"Ǿ";s:2:"ǿ";s:4:"ǿ";s:2:"Ȁ";s:3:"Ȁ";s:2:"ȁ";s:3:"ȁ";s:2:"Ȃ";s:3:"Ȃ";s:2:"ȃ";s:3:"ȃ";s:2:"Ȅ";s:3:"Ȅ";s:2:"ȅ";s:3:"ȅ";s:2:"Ȇ";s:3:"Ȇ";s:2:"ȇ";s:3:"ȇ";s:2:"Ȉ";s:3:"Ȉ";s:2:"ȉ";s:3:"ȉ";s:2:"Ȋ";s:3:"Ȋ";s:2:"ȋ";s:3:"ȋ";s:2:"Ȍ";s:3:"Ȍ";s:2:"ȍ";s:3:"ȍ";s:2:"Ȏ";s:3:"Ȏ";s:2:"ȏ";s:3:"ȏ";s:2:"Ȑ";s:3:"Ȑ";s:2:"ȑ";s:3:"ȑ";s:2:"Ȓ";s:3:"Ȓ";s:2:"ȓ";s:3:"ȓ";s:2:"Ȕ";s:3:"Ȕ";s:2:"ȕ";s:3:"ȕ";s:2:"Ȗ";s:3:"Ȗ";s:2:"ȗ";s:3:"ȗ";s:2:"Ș";s:3:"Ș";s:2:"ș";s:3:"ș";s:2:"Ț";s:3:"Ț";s:2:"ț";s:3:"ț";s:2:"Ȟ";s:3:"Ȟ";s:2:"ȟ";s:3:"ȟ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"ȩ";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"ȫ";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"ȭ";s:5:"ȭ";s:2:"Ȯ";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"Ȱ";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"Ȳ";s:2:"ȳ";s:3:"ȳ";s:2:"ʰ";s:1:"h";s:2:"ʱ";s:2:"ɦ";s:2:"ʲ";s:1:"j";s:2:"ʳ";s:1:"r";s:2:"ʴ";s:2:"ɹ";s:2:"ʵ";s:2:"ɻ";s:2:"ʶ";s:2:"ʁ";s:2:"ʷ";s:1:"w";s:2:"ʸ";s:1:"y";s:2:"˘";s:3:" ̆";s:2:"˙";s:3:" ̇";s:2:"˚";s:3:" ̊";s:2:"˛";s:3:" ̨";s:2:"˜";s:3:" ̃";s:2:"˝";s:3:" ̋";s:2:"ˠ";s:2:"ɣ";s:2:"ˡ";s:1:"l";s:2:"ˢ";s:1:"s";s:2:"ˣ";s:1:"x";s:2:"ˤ";s:2:"ʕ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:2:"̈́";s:4:"̈́";s:2:"ʹ";s:2:"ʹ";s:2:"ͺ";s:3:" ͅ";s:2:";";s:1:";";s:2:"΄";s:3:" ́";s:2:"΅";s:5:" ̈́";s:2:"Ά";s:4:"Ά";s:2:"·";s:2:"·";s:2:"Έ";s:4:"Έ";s:2:"Ή";s:4:"Ή";s:2:"Ί";s:4:"Ί";s:2:"Ό";s:4:"Ό";s:2:"Ύ";s:4:"Ύ";s:2:"Ώ";s:4:"Ώ";s:2:"ΐ";s:6:"ΐ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"ά";s:2:"έ";s:4:"έ";s:2:"ή";s:4:"ή";s:2:"ί";s:4:"ί";s:2:"ΰ";s:6:"ΰ";s:2:"ϊ";s:4:"ϊ";s:2:"ϋ";s:4:"ϋ";s:2:"ό";s:4:"ό";s:2:"ύ";s:4:"ύ";s:2:"ώ";s:4:"ώ";s:2:"ϐ";s:2:"β";s:2:"ϑ";s:2:"θ";s:2:"ϒ";s:2:"Υ";s:2:"ϓ";s:4:"Ύ";s:2:"ϔ";s:4:"Ϋ";s:2:"ϕ";s:2:"φ";s:2:"ϖ";s:2:"π";s:2:"ϰ";s:2:"κ";s:2:"ϱ";s:2:"ρ";s:2:"ϲ";s:2:"ς";s:2:"ϴ";s:2:"Θ";s:2:"ϵ";s:2:"ε";s:2:"Ϲ";s:2:"Σ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ё";s:4:"Ё";s:2:"Ѓ";s:4:"Ѓ";s:2:"Ї";s:4:"Ї";s:2:"Ќ";s:4:"Ќ";s:2:"Ѝ";s:4:"Ѝ";s:2:"Ў";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"ѐ";s:4:"ѐ";s:2:"ё";s:4:"ё";s:2:"ѓ";s:4:"ѓ";s:2:"ї";s:4:"ї";s:2:"ќ";s:4:"ќ";s:2:"ѝ";s:4:"ѝ";s:2:"ў";s:4:"ў";s:2:"Ѷ";s:4:"Ѷ";s:2:"ѷ";s:4:"ѷ";s:2:"Ӂ";s:4:"Ӂ";s:2:"ӂ";s:4:"ӂ";s:2:"Ӑ";s:4:"Ӑ";s:2:"ӑ";s:4:"ӑ";s:2:"Ӓ";s:4:"Ӓ";s:2:"ӓ";s:4:"ӓ";s:2:"Ӗ";s:4:"Ӗ";s:2:"ӗ";s:4:"ӗ";s:2:"Ӛ";s:4:"Ӛ";s:2:"ӛ";s:4:"ӛ";s:2:"Ӝ";s:4:"Ӝ";s:2:"ӝ";s:4:"ӝ";s:2:"Ӟ";s:4:"Ӟ";s:2:"ӟ";s:4:"ӟ";s:2:"Ӣ";s:4:"Ӣ";s:2:"ӣ";s:4:"ӣ";s:2:"Ӥ";s:4:"Ӥ";s:2:"ӥ";s:4:"ӥ";s:2:"Ӧ";s:4:"Ӧ";s:2:"ӧ";s:4:"ӧ";s:2:"Ӫ";s:4:"Ӫ";s:2:"ӫ";s:4:"ӫ";s:2:"Ӭ";s:4:"Ӭ";s:2:"ӭ";s:4:"ӭ";s:2:"Ӯ";s:4:"Ӯ";s:2:"ӯ";s:4:"ӯ";s:2:"Ӱ";s:4:"Ӱ";s:2:"ӱ";s:4:"ӱ";s:2:"Ӳ";s:4:"Ӳ";s:2:"ӳ";s:4:"ӳ";s:2:"Ӵ";s:4:"Ӵ";s:2:"ӵ";s:4:"ӵ";s:2:"Ӹ";s:4:"Ӹ";s:2:"ӹ";s:4:"ӹ";s:2:"և";s:4:"եւ";s:2:"آ";s:4:"آ";s:2:"أ";s:4:"أ";s:2:"ؤ";s:4:"ؤ";s:2:"إ";s:4:"إ";s:2:"ئ";s:4:"ئ";s:2:"ٵ";s:4:"اٴ";s:2:"ٶ";s:4:"وٴ";s:2:"ٷ";s:4:"ۇٴ";s:2:"ٸ";s:4:"يٴ";s:2:"ۀ";s:4:"ۀ";s:2:"ۂ";s:4:"ۂ";s:2:"ۓ";s:4:"ۓ";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"ढ़";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"ঢ়";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"ਖ਼";s:6:"ਖ਼";s:3:"ਗ਼";s:6:"ਗ਼";s:3:"ਜ਼";s:6:"ਜ਼";s:3:"ਫ਼";s:6:"ਫ਼";s:3:"ୈ";s:6:"ୈ";s:3:"ୋ";s:6:"ୋ";s:3:"ୌ";s:6:"ୌ";s:3:"ଡ଼";s:6:"ଡ଼";s:3:"ଢ଼";s:6:"ଢ଼";s:3:"ஔ";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"ೀ";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"ේ";s:6:"ේ";s:3:"ො";s:6:"ො";s:3:"ෝ";s:9:"ෝ";s:3:"ෞ";s:6:"ෞ";s:3:"ำ";s:6:"ํา";s:3:"ຳ";s:6:"ໍາ";s:3:"ໜ";s:6:"ຫນ";s:3:"ໝ";s:6:"ຫມ";s:3:"༌";s:3:"་";s:3:"གྷ";s:6:"གྷ";s:3:"ཌྷ";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ཷ";s:9:"ྲཱྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཹ";s:9:"ླཱྀ";s:3:"ཱྀ";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"ྜྷ";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"ྐྵ";s:3:"ဦ";s:6:"ဦ";s:3:"ჼ";s:3:"ნ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"ᬎ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"ᭀ";s:6:"ᭀ";s:3:"ᭁ";s:6:"ᭁ";s:3:"ᭃ";s:6:"ᭃ";s:3:"ᴬ";s:1:"A";s:3:"ᴭ";s:2:"Æ";s:3:"ᴮ";s:1:"B";s:3:"ᴰ";s:1:"D";s:3:"ᴱ";s:1:"E";s:3:"ᴲ";s:2:"Ǝ";s:3:"ᴳ";s:1:"G";s:3:"ᴴ";s:1:"H";s:3:"ᴵ";s:1:"I";s:3:"ᴶ";s:1:"J";s:3:"ᴷ";s:1:"K";s:3:"ᴸ";s:1:"L";s:3:"ᴹ";s:1:"M";s:3:"ᴺ";s:1:"N";s:3:"ᴼ";s:1:"O";s:3:"ᴽ";s:2:"Ȣ";s:3:"ᴾ";s:1:"P";s:3:"ᴿ";s:1:"R";s:3:"ᵀ";s:1:"T";s:3:"ᵁ";s:1:"U";s:3:"ᵂ";s:1:"W";s:3:"ᵃ";s:1:"a";s:3:"ᵄ";s:2:"ɐ";s:3:"ᵅ";s:2:"ɑ";s:3:"ᵆ";s:3:"ᴂ";s:3:"ᵇ";s:1:"b";s:3:"ᵈ";s:1:"d";s:3:"ᵉ";s:1:"e";s:3:"ᵊ";s:2:"ə";s:3:"ᵋ";s:2:"ɛ";s:3:"ᵌ";s:2:"ɜ";s:3:"ᵍ";s:1:"g";s:3:"ᵏ";s:1:"k";s:3:"ᵐ";s:1:"m";s:3:"ᵑ";s:2:"ŋ";s:3:"ᵒ";s:1:"o";s:3:"ᵓ";s:2:"ɔ";s:3:"ᵔ";s:3:"ᴖ";s:3:"ᵕ";s:3:"ᴗ";s:3:"ᵖ";s:1:"p";s:3:"ᵗ";s:1:"t";s:3:"ᵘ";s:1:"u";s:3:"ᵙ";s:3:"ᴝ";s:3:"ᵚ";s:2:"ɯ";s:3:"ᵛ";s:1:"v";s:3:"ᵜ";s:3:"ᴥ";s:3:"ᵝ";s:2:"β";s:3:"ᵞ";s:2:"γ";s:3:"ᵟ";s:2:"δ";s:3:"ᵠ";s:2:"φ";s:3:"ᵡ";s:2:"χ";s:3:"ᵢ";s:1:"i";s:3:"ᵣ";s:1:"r";s:3:"ᵤ";s:1:"u";s:3:"ᵥ";s:1:"v";s:3:"ᵦ";s:2:"β";s:3:"ᵧ";s:2:"γ";s:3:"ᵨ";s:2:"ρ";s:3:"ᵩ";s:2:"φ";s:3:"ᵪ";s:2:"χ";s:3:"ᵸ";s:2:"н";s:3:"ᶛ";s:2:"ɒ";s:3:"ᶜ";s:1:"c";s:3:"ᶝ";s:2:"ɕ";s:3:"ᶞ";s:2:"ð";s:3:"ᶟ";s:2:"ɜ";s:3:"ᶠ";s:1:"f";s:3:"ᶡ";s:2:"ɟ";s:3:"ᶢ";s:2:"ɡ";s:3:"ᶣ";s:2:"ɥ";s:3:"ᶤ";s:2:"ɨ";s:3:"ᶥ";s:2:"ɩ";s:3:"ᶦ";s:2:"ɪ";s:3:"ᶧ";s:3:"ᵻ";s:3:"ᶨ";s:2:"ʝ";s:3:"ᶩ";s:2:"ɭ";s:3:"ᶪ";s:3:"ᶅ";s:3:"ᶫ";s:2:"ʟ";s:3:"ᶬ";s:2:"ɱ";s:3:"ᶭ";s:2:"ɰ";s:3:"ᶮ";s:2:"ɲ";s:3:"ᶯ";s:2:"ɳ";s:3:"ᶰ";s:2:"ɴ";s:3:"ᶱ";s:2:"ɵ";s:3:"ᶲ";s:2:"ɸ";s:3:"ᶳ";s:2:"ʂ";s:3:"ᶴ";s:2:"ʃ";s:3:"ᶵ";s:2:"ƫ";s:3:"ᶶ";s:2:"ʉ";s:3:"ᶷ";s:2:"ʊ";s:3:"ᶸ";s:3:"ᴜ";s:3:"ᶹ";s:2:"ʋ";s:3:"ᶺ";s:2:"ʌ";s:3:"ᶻ";s:1:"z";s:3:"ᶼ";s:2:"ʐ";s:3:"ᶽ";s:2:"ʑ";s:3:"ᶾ";s:2:"ʒ";s:3:"ᶿ";s:2:"θ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"Ḉ";s:3:"ḉ";s:5:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:3:"Ḕ";s:5:"Ḕ";s:3:"ḕ";s:5:"ḕ";s:3:"Ḗ";s:5:"Ḗ";s:3:"ḗ";s:5:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:3:"Ḝ";s:5:"Ḝ";s:3:"ḝ";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:3:"Ḯ";s:5:"Ḯ";s:3:"ḯ";s:5:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:3:"Ṍ";s:5:"Ṍ";s:3:"ṍ";s:5:"ṍ";s:3:"Ṏ";s:5:"Ṏ";s:3:"ṏ";s:5:"ṏ";s:3:"Ṑ";s:5:"Ṑ";s:3:"ṑ";s:5:"ṑ";s:3:"Ṓ";s:5:"Ṓ";s:3:"ṓ";s:5:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:3:"Ṝ";s:5:"Ṝ";s:3:"ṝ";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:3:"Ṥ";s:5:"Ṥ";s:3:"ṥ";s:5:"ṥ";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:3:"Ṹ";s:5:"Ṹ";s:3:"ṹ";s:5:"ṹ";s:3:"Ṻ";s:5:"Ṻ";s:3:"ṻ";s:5:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:3:"ẚ";s:3:"aʾ";s:3:"ẛ";s:3:"ṡ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"Ấ";s:3:"ấ";s:5:"ấ";s:3:"Ầ";s:5:"Ầ";s:3:"ầ";s:5:"ầ";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"Ắ";s:3:"ắ";s:5:"ắ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"Ế";s:3:"ế";s:5:"ế";s:3:"Ề";s:5:"Ề";s:3:"ề";s:5:"ề";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"ễ";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:3:"Ố";s:5:"Ố";s:3:"ố";s:5:"ố";s:3:"Ồ";s:5:"Ồ";s:3:"ồ";s:5:"ồ";s:3:"Ổ";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"Ỗ";s:5:"Ỗ";s:3:"ỗ";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"ộ";s:5:"ộ";s:3:"Ớ";s:5:"Ớ";s:3:"ớ";s:5:"ớ";s:3:"Ờ";s:5:"Ờ";s:3:"ờ";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"Ỡ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"Ứ";s:3:"ứ";s:5:"ứ";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"ử";s:5:"ử";s:3:"Ữ";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"Ự";s:5:"Ự";s:3:"ự";s:5:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"ἀ";s:4:"ἀ";s:3:"ἁ";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἄ";s:3:"ἅ";s:6:"ἅ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"Ἄ";s:3:"Ἅ";s:6:"Ἅ";s:3:"Ἆ";s:6:"Ἆ";s:3:"Ἇ";s:6:"Ἇ";s:3:"ἐ";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"ἒ";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"ἔ";s:6:"ἔ";s:3:"ἕ";s:6:"ἕ";s:3:"Ἐ";s:4:"Ἐ";s:3:"Ἑ";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"Ἓ";s:6:"Ἓ";s:3:"Ἔ";s:6:"Ἔ";s:3:"Ἕ";s:6:"Ἕ";s:3:"ἠ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"ἢ";s:6:"ἢ";s:3:"ἣ";s:6:"ἣ";s:3:"ἤ";s:6:"ἤ";s:3:"ἥ";s:6:"ἥ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"Ἤ";s:3:"Ἥ";s:6:"Ἥ";s:3:"Ἦ";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"ἰ";s:4:"ἰ";s:3:"ἱ";s:4:"ἱ";s:3:"ἲ";s:6:"ἲ";s:3:"ἳ";s:6:"ἳ";s:3:"ἴ";s:6:"ἴ";s:3:"ἵ";s:6:"ἵ";s:3:"ἶ";s:6:"ἶ";s:3:"ἷ";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"Ἱ";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"Ἳ";s:6:"Ἳ";s:3:"Ἴ";s:6:"Ἴ";s:3:"Ἵ";s:6:"Ἵ";s:3:"Ἶ";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"ὀ";s:4:"ὀ";s:3:"ὁ";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὄ";s:3:"ὅ";s:6:"ὅ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"Ὄ";s:3:"Ὅ";s:6:"Ὅ";s:3:"ὐ";s:4:"ὐ";s:3:"ὑ";s:4:"ὑ";s:3:"ὒ";s:6:"ὒ";s:3:"ὓ";s:6:"ὓ";s:3:"ὔ";s:6:"ὔ";s:3:"ὕ";s:6:"ὕ";s:3:"ὖ";s:6:"ὖ";s:3:"ὗ";s:6:"ὗ";s:3:"Ὑ";s:4:"Ὑ";s:3:"Ὓ";s:6:"Ὓ";s:3:"Ὕ";s:6:"Ὕ";s:3:"Ὗ";s:6:"Ὗ";s:3:"ὠ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"ὢ";s:6:"ὢ";s:3:"ὣ";s:6:"ὣ";s:3:"ὤ";s:6:"ὤ";s:3:"ὥ";s:6:"ὥ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"Ὤ";s:3:"Ὥ";s:6:"Ὥ";s:3:"Ὦ";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"ὰ";s:4:"ὰ";s:3:"ά";s:4:"ά";s:3:"ὲ";s:4:"ὲ";s:3:"έ";s:4:"έ";s:3:"ὴ";s:4:"ὴ";s:3:"ή";s:4:"ή";s:3:"ὶ";s:4:"ὶ";s:3:"ί";s:4:"ί";s:3:"ὸ";s:4:"ὸ";s:3:"ό";s:4:"ό";s:3:"ὺ";s:4:"ὺ";s:3:"ύ";s:4:"ύ";s:3:"ὼ";s:4:"ὼ";s:3:"ώ";s:4:"ώ";s:3:"ᾀ";s:6:"ᾀ";s:3:"ᾁ";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ᾄ";s:3:"ᾅ";s:8:"ᾅ";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ᾌ";s:3:"ᾍ";s:8:"ᾍ";s:3:"ᾎ";s:8:"ᾎ";s:3:"ᾏ";s:8:"ᾏ";s:3:"ᾐ";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"ᾒ";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"ᾔ";s:8:"ᾔ";s:3:"ᾕ";s:8:"ᾕ";s:3:"ᾖ";s:8:"ᾖ";s:3:"ᾗ";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"ᾙ";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"ᾛ";s:8:"ᾛ";s:3:"ᾜ";s:8:"ᾜ";s:3:"ᾝ";s:8:"ᾝ";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"ᾠ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"ᾢ";s:8:"ᾢ";s:3:"ᾣ";s:8:"ᾣ";s:3:"ᾤ";s:8:"ᾤ";s:3:"ᾥ";s:8:"ᾥ";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ᾬ";s:3:"ᾭ";s:8:"ᾭ";s:3:"ᾮ";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"ᾰ";s:4:"ᾰ";s:3:"ᾱ";s:4:"ᾱ";s:3:"ᾲ";s:6:"ᾲ";s:3:"ᾳ";s:4:"ᾳ";s:3:"ᾴ";s:6:"ᾴ";s:3:"ᾶ";s:4:"ᾶ";s:3:"ᾷ";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"Ᾱ";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"Ά";s:4:"Ά";s:3:"ᾼ";s:4:"ᾼ";s:3:"᾽";s:3:" ̓";s:3:"ι";s:2:"ι";s:3:"᾿";s:3:" ̓";s:3:"῀";s:3:" ͂";s:3:"῁";s:5:" ̈͂";s:3:"ῂ";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"ῄ";s:6:"ῄ";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"Έ";s:3:"Ὴ";s:4:"Ὴ";s:3:"Ή";s:4:"Ή";s:3:"ῌ";s:4:"ῌ";s:3:"῍";s:5:" ̓̀";s:3:"῎";s:5:" ̓́";s:3:"῏";s:5:" ̓͂";s:3:"ῐ";s:4:"ῐ";s:3:"ῑ";s:4:"ῑ";s:3:"ῒ";s:6:"ῒ";s:3:"ΐ";s:6:"ΐ";s:3:"ῖ";s:4:"ῖ";s:3:"ῗ";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"Ῑ";s:4:"Ῑ";s:3:"Ὶ";s:4:"Ὶ";s:3:"Ί";s:4:"Ί";s:3:"῝";s:5:" ̔̀";s:3:"῞";s:5:" ̔́";s:3:"῟";s:5:" ̔͂";s:3:"ῠ";s:4:"ῠ";s:3:"ῡ";s:4:"ῡ";s:3:"ῢ";s:6:"ῢ";s:3:"ΰ";s:6:"ΰ";s:3:"ῤ";s:4:"ῤ";s:3:"ῥ";s:4:"ῥ";s:3:"ῦ";s:4:"ῦ";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"Ῡ";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"Ύ";s:4:"Ύ";s:3:"Ῥ";s:4:"Ῥ";s:3:"῭";s:5:" ̈̀";s:3:"΅";s:5:" ̈́";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"ῴ";s:6:"ῴ";s:3:"ῶ";s:4:"ῶ";s:3:"ῷ";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"Ό";s:3:"Ὼ";s:4:"Ὼ";s:3:"Ώ";s:4:"Ώ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:3:" ́";s:3:"῾";s:3:" ̔";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:"‑";s:3:"‐";s:3:"‗";s:3:" ̳";s:3:"․";s:1:".";s:3:"‥";s:2:"..";s:3:"…";s:3:"...";s:3:" ";s:1:" ";s:3:"″";s:6:"′′";s:3:"‴";s:9:"′′′";s:3:"‶";s:6:"‵‵";s:3:"‷";s:9:"‵‵‵";s:3:"‼";s:2:"!!";s:3:"‾";s:3:" ̅";s:3:"⁇";s:2:"??";s:3:"⁈";s:2:"?!";s:3:"⁉";s:2:"!?";s:3:"⁗";s:12:"′′′′";s:3:" ";s:1:" ";s:3:"⁰";s:1:"0";s:3:"ⁱ";s:1:"i";s:3:"⁴";s:1:"4";s:3:"⁵";s:1:"5";s:3:"⁶";s:1:"6";s:3:"⁷";s:1:"7";s:3:"⁸";s:1:"8";s:3:"⁹";s:1:"9";s:3:"⁺";s:1:"+";s:3:"⁻";s:3:"−";s:3:"⁼";s:1:"=";s:3:"⁽";s:1:"(";s:3:"⁾";s:1:")";s:3:"ⁿ";s:1:"n";s:3:"₀";s:1:"0";s:3:"₁";s:1:"1";s:3:"₂";s:1:"2";s:3:"₃";s:1:"3";s:3:"₄";s:1:"4";s:3:"₅";s:1:"5";s:3:"₆";s:1:"6";s:3:"₇";s:1:"7";s:3:"₈";s:1:"8";s:3:"₉";s:1:"9";s:3:"₊";s:1:"+";s:3:"₋";s:3:"−";s:3:"₌";s:1:"=";s:3:"₍";s:1:"(";s:3:"₎";s:1:")";s:3:"ₐ";s:1:"a";s:3:"ₑ";s:1:"e";s:3:"ₒ";s:1:"o";s:3:"ₓ";s:1:"x";s:3:"ₔ";s:2:"ə";s:3:"₨";s:2:"Rs";s:3:"℀";s:3:"a/c";s:3:"℁";s:3:"a/s";s:3:"ℂ";s:1:"C";s:3:"℃";s:3:"°C";s:3:"℅";s:3:"c/o";s:3:"℆";s:3:"c/u";s:3:"ℇ";s:2:"Ɛ";s:3:"℉";s:3:"°F";s:3:"ℊ";s:1:"g";s:3:"ℋ";s:1:"H";s:3:"ℌ";s:1:"H";s:3:"ℍ";s:1:"H";s:3:"ℎ";s:1:"h";s:3:"ℏ";s:2:"ħ";s:3:"ℐ";s:1:"I";s:3:"ℑ";s:1:"I";s:3:"ℒ";s:1:"L";s:3:"ℓ";s:1:"l";s:3:"ℕ";s:1:"N";s:3:"№";s:2:"No";s:3:"ℙ";s:1:"P";s:3:"ℚ";s:1:"Q";s:3:"ℛ";s:1:"R";s:3:"ℜ";s:1:"R";s:3:"ℝ";s:1:"R";s:3:"℠";s:2:"SM";s:3:"℡";s:3:"TEL";s:3:"™";s:2:"TM";s:3:"ℤ";s:1:"Z";s:3:"Ω";s:2:"Ω";s:3:"ℨ";s:1:"Z";s:3:"K";s:1:"K";s:3:"Å";s:3:"Å";s:3:"ℬ";s:1:"B";s:3:"ℭ";s:1:"C";s:3:"ℯ";s:1:"e";s:3:"ℰ";s:1:"E";s:3:"ℱ";s:1:"F";s:3:"ℳ";s:1:"M";s:3:"ℴ";s:1:"o";s:3:"ℵ";s:2:"א";s:3:"ℶ";s:2:"ב";s:3:"ℷ";s:2:"ג";s:3:"ℸ";s:2:"ד";s:3:"ℹ";s:1:"i";s:3:"℻";s:3:"FAX";s:3:"ℼ";s:2:"π";s:3:"ℽ";s:2:"γ";s:3:"ℾ";s:2:"Γ";s:3:"ℿ";s:2:"Π";s:3:"⅀";s:3:"∑";s:3:"ⅅ";s:1:"D";s:3:"ⅆ";s:1:"d";s:3:"ⅇ";s:1:"e";s:3:"ⅈ";s:1:"i";s:3:"ⅉ";s:1:"j";s:3:"⅓";s:5:"1⁄3";s:3:"⅔";s:5:"2⁄3";s:3:"⅕";s:5:"1⁄5";s:3:"⅖";s:5:"2⁄5";s:3:"⅗";s:5:"3⁄5";s:3:"⅘";s:5:"4⁄5";s:3:"⅙";s:5:"1⁄6";s:3:"⅚";s:5:"5⁄6";s:3:"⅛";s:5:"1⁄8";s:3:"⅜";s:5:"3⁄8";s:3:"⅝";s:5:"5⁄8";s:3:"⅞";s:5:"7⁄8";s:3:"⅟";s:4:"1⁄";s:3:"Ⅰ";s:1:"I";s:3:"Ⅱ";s:2:"II";s:3:"Ⅲ";s:3:"III";s:3:"Ⅳ";s:2:"IV";s:3:"Ⅴ";s:1:"V";s:3:"Ⅵ";s:2:"VI";s:3:"Ⅶ";s:3:"VII";s:3:"Ⅷ";s:4:"VIII";s:3:"Ⅸ";s:2:"IX";s:3:"Ⅹ";s:1:"X";s:3:"Ⅺ";s:2:"XI";s:3:"Ⅻ";s:3:"XII";s:3:"Ⅼ";s:1:"L";s:3:"Ⅽ";s:1:"C";s:3:"Ⅾ";s:1:"D";s:3:"Ⅿ";s:1:"M";s:3:"ⅰ";s:1:"i";s:3:"ⅱ";s:2:"ii";s:3:"ⅲ";s:3:"iii";s:3:"ⅳ";s:2:"iv";s:3:"ⅴ";s:1:"v";s:3:"ⅵ";s:2:"vi";s:3:"ⅶ";s:3:"vii";s:3:"ⅷ";s:4:"viii";s:3:"ⅸ";s:2:"ix";s:3:"ⅹ";s:1:"x";s:3:"ⅺ";s:2:"xi";s:3:"ⅻ";s:3:"xii";s:3:"ⅼ";s:1:"l";s:3:"ⅽ";s:1:"c";s:3:"ⅾ";s:1:"d";s:3:"ⅿ";s:1:"m";s:3:"↚";s:5:"↚";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"⇍";s:5:"⇍";s:3:"⇎";s:5:"⇎";s:3:"⇏";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"∬";s:6:"∫∫";s:3:"∭";s:9:"∫∫∫";s:3:"∯";s:6:"∮∮";s:3:"∰";s:9:"∮∮∮";s:3:"≁";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"⊁";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"⋠";s:5:"⋠";s:3:"⋡";s:5:"⋡";s:3:"⋢";s:5:"⋢";s:3:"⋣";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"⋫";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"⋭";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"①";s:1:"1";s:3:"②";s:1:"2";s:3:"③";s:1:"3";s:3:"④";s:1:"4";s:3:"⑤";s:1:"5";s:3:"⑥";s:1:"6";s:3:"⑦";s:1:"7";s:3:"⑧";s:1:"8";s:3:"⑨";s:1:"9";s:3:"⑩";s:2:"10";s:3:"⑪";s:2:"11";s:3:"⑫";s:2:"12";s:3:"⑬";s:2:"13";s:3:"⑭";s:2:"14";s:3:"⑮";s:2:"15";s:3:"⑯";s:2:"16";s:3:"⑰";s:2:"17";s:3:"⑱";s:2:"18";s:3:"⑲";s:2:"19";s:3:"⑳";s:2:"20";s:3:"⑴";s:3:"(1)";s:3:"⑵";s:3:"(2)";s:3:"⑶";s:3:"(3)";s:3:"⑷";s:3:"(4)";s:3:"⑸";s:3:"(5)";s:3:"⑹";s:3:"(6)";s:3:"⑺";s:3:"(7)";s:3:"⑻";s:3:"(8)";s:3:"⑼";s:3:"(9)";s:3:"⑽";s:4:"(10)";s:3:"⑾";s:4:"(11)";s:3:"⑿";s:4:"(12)";s:3:"⒀";s:4:"(13)";s:3:"⒁";s:4:"(14)";s:3:"⒂";s:4:"(15)";s:3:"⒃";s:4:"(16)";s:3:"⒄";s:4:"(17)";s:3:"⒅";s:4:"(18)";s:3:"⒆";s:4:"(19)";s:3:"⒇";s:4:"(20)";s:3:"⒈";s:2:"1.";s:3:"⒉";s:2:"2.";s:3:"⒊";s:2:"3.";s:3:"⒋";s:2:"4.";s:3:"⒌";s:2:"5.";s:3:"⒍";s:2:"6.";s:3:"⒎";s:2:"7.";s:3:"⒏";s:2:"8.";s:3:"⒐";s:2:"9.";s:3:"⒑";s:3:"10.";s:3:"⒒";s:3:"11.";s:3:"⒓";s:3:"12.";s:3:"⒔";s:3:"13.";s:3:"⒕";s:3:"14.";s:3:"⒖";s:3:"15.";s:3:"⒗";s:3:"16.";s:3:"⒘";s:3:"17.";s:3:"⒙";s:3:"18.";s:3:"⒚";s:3:"19.";s:3:"⒛";s:3:"20.";s:3:"⒜";s:3:"(a)";s:3:"⒝";s:3:"(b)";s:3:"⒞";s:3:"(c)";s:3:"⒟";s:3:"(d)";s:3:"⒠";s:3:"(e)";s:3:"⒡";s:3:"(f)";s:3:"⒢";s:3:"(g)";s:3:"⒣";s:3:"(h)";s:3:"⒤";s:3:"(i)";s:3:"⒥";s:3:"(j)";s:3:"⒦";s:3:"(k)";s:3:"⒧";s:3:"(l)";s:3:"⒨";s:3:"(m)";s:3:"⒩";s:3:"(n)";s:3:"⒪";s:3:"(o)";s:3:"⒫";s:3:"(p)";s:3:"⒬";s:3:"(q)";s:3:"⒭";s:3:"(r)";s:3:"⒮";s:3:"(s)";s:3:"⒯";s:3:"(t)";s:3:"⒰";s:3:"(u)";s:3:"⒱";s:3:"(v)";s:3:"⒲";s:3:"(w)";s:3:"⒳";s:3:"(x)";s:3:"⒴";s:3:"(y)";s:3:"⒵";s:3:"(z)";s:3:"Ⓐ";s:1:"A";s:3:"Ⓑ";s:1:"B";s:3:"Ⓒ";s:1:"C";s:3:"Ⓓ";s:1:"D";s:3:"Ⓔ";s:1:"E";s:3:"Ⓕ";s:1:"F";s:3:"Ⓖ";s:1:"G";s:3:"Ⓗ";s:1:"H";s:3:"Ⓘ";s:1:"I";s:3:"Ⓙ";s:1:"J";s:3:"Ⓚ";s:1:"K";s:3:"Ⓛ";s:1:"L";s:3:"Ⓜ";s:1:"M";s:3:"Ⓝ";s:1:"N";s:3:"Ⓞ";s:1:"O";s:3:"Ⓟ";s:1:"P";s:3:"Ⓠ";s:1:"Q";s:3:"Ⓡ";s:1:"R";s:3:"Ⓢ";s:1:"S";s:3:"Ⓣ";s:1:"T";s:3:"Ⓤ";s:1:"U";s:3:"Ⓥ";s:1:"V";s:3:"Ⓦ";s:1:"W";s:3:"Ⓧ";s:1:"X";s:3:"Ⓨ";s:1:"Y";s:3:"Ⓩ";s:1:"Z";s:3:"ⓐ";s:1:"a";s:3:"ⓑ";s:1:"b";s:3:"ⓒ";s:1:"c";s:3:"ⓓ";s:1:"d";s:3:"ⓔ";s:1:"e";s:3:"ⓕ";s:1:"f";s:3:"ⓖ";s:1:"g";s:3:"ⓗ";s:1:"h";s:3:"ⓘ";s:1:"i";s:3:"ⓙ";s:1:"j";s:3:"ⓚ";s:1:"k";s:3:"ⓛ";s:1:"l";s:3:"ⓜ";s:1:"m";s:3:"ⓝ";s:1:"n";s:3:"ⓞ";s:1:"o";s:3:"ⓟ";s:1:"p";s:3:"ⓠ";s:1:"q";s:3:"ⓡ";s:1:"r";s:3:"ⓢ";s:1:"s";s:3:"ⓣ";s:1:"t";s:3:"ⓤ";s:1:"u";s:3:"ⓥ";s:1:"v";s:3:"ⓦ";s:1:"w";s:3:"ⓧ";s:1:"x";s:3:"ⓨ";s:1:"y";s:3:"ⓩ";s:1:"z";s:3:"⓪";s:1:"0";s:3:"⨌";s:12:"∫∫∫∫";s:3:"⩴";s:3:"::=";s:3:"⩵";s:2:"==";s:3:"⩶";s:3:"===";s:3:"⫝̸";s:5:"⫝̸";s:3:"ⱼ";s:1:"j";s:3:"ⱽ";s:1:"V";s:3:"ⵯ";s:3:"ⵡ";s:3:"⺟";s:3:"母";s:3:"⻳";s:3:"龟";s:3:"⼀";s:3:"一";s:3:"⼁";s:3:"丨";s:3:"⼂";s:3:"丶";s:3:"⼃";s:3:"丿";s:3:"⼄";s:3:"乙";s:3:"⼅";s:3:"亅";s:3:"⼆";s:3:"二";s:3:"⼇";s:3:"亠";s:3:"⼈";s:3:"人";s:3:"⼉";s:3:"儿";s:3:"⼊";s:3:"入";s:3:"⼋";s:3:"八";s:3:"⼌";s:3:"冂";s:3:"⼍";s:3:"冖";s:3:"⼎";s:3:"冫";s:3:"⼏";s:3:"几";s:3:"⼐";s:3:"凵";s:3:"⼑";s:3:"刀";s:3:"⼒";s:3:"力";s:3:"⼓";s:3:"勹";s:3:"⼔";s:3:"匕";s:3:"⼕";s:3:"匚";s:3:"⼖";s:3:"匸";s:3:"⼗";s:3:"十";s:3:"⼘";s:3:"卜";s:3:"⼙";s:3:"卩";s:3:"⼚";s:3:"厂";s:3:"⼛";s:3:"厶";s:3:"⼜";s:3:"又";s:3:"⼝";s:3:"口";s:3:"⼞";s:3:"囗";s:3:"⼟";s:3:"土";s:3:"⼠";s:3:"士";s:3:"⼡";s:3:"夂";s:3:"⼢";s:3:"夊";s:3:"⼣";s:3:"夕";s:3:"⼤";s:3:"大";s:3:"⼥";s:3:"女";s:3:"⼦";s:3:"子";s:3:"⼧";s:3:"宀";s:3:"⼨";s:3:"寸";s:3:"⼩";s:3:"小";s:3:"⼪";s:3:"尢";s:3:"⼫";s:3:"尸";s:3:"⼬";s:3:"屮";s:3:"⼭";s:3:"山";s:3:"⼮";s:3:"巛";s:3:"⼯";s:3:"工";s:3:"⼰";s:3:"己";s:3:"⼱";s:3:"巾";s:3:"⼲";s:3:"干";s:3:"⼳";s:3:"幺";s:3:"⼴";s:3:"广";s:3:"⼵";s:3:"廴";s:3:"⼶";s:3:"廾";s:3:"⼷";s:3:"弋";s:3:"⼸";s:3:"弓";s:3:"⼹";s:3:"彐";s:3:"⼺";s:3:"彡";s:3:"⼻";s:3:"彳";s:3:"⼼";s:3:"心";s:3:"⼽";s:3:"戈";s:3:"⼾";s:3:"戶";s:3:"⼿";s:3:"手";s:3:"⽀";s:3:"支";s:3:"⽁";s:3:"攴";s:3:"⽂";s:3:"文";s:3:"⽃";s:3:"斗";s:3:"⽄";s:3:"斤";s:3:"⽅";s:3:"方";s:3:"⽆";s:3:"无";s:3:"⽇";s:3:"日";s:3:"⽈";s:3:"曰";s:3:"⽉";s:3:"月";s:3:"⽊";s:3:"木";s:3:"⽋";s:3:"欠";s:3:"⽌";s:3:"止";s:3:"⽍";s:3:"歹";s:3:"⽎";s:3:"殳";s:3:"⽏";s:3:"毋";s:3:"⽐";s:3:"比";s:3:"⽑";s:3:"毛";s:3:"⽒";s:3:"氏";s:3:"⽓";s:3:"气";s:3:"⽔";s:3:"水";s:3:"⽕";s:3:"火";s:3:"⽖";s:3:"爪";s:3:"⽗";s:3:"父";s:3:"⽘";s:3:"爻";s:3:"⽙";s:3:"爿";s:3:"⽚";s:3:"片";s:3:"⽛";s:3:"牙";s:3:"⽜";s:3:"牛";s:3:"⽝";s:3:"犬";s:3:"⽞";s:3:"玄";s:3:"⽟";s:3:"玉";s:3:"⽠";s:3:"瓜";s:3:"⽡";s:3:"瓦";s:3:"⽢";s:3:"甘";s:3:"⽣";s:3:"生";s:3:"⽤";s:3:"用";s:3:"⽥";s:3:"田";s:3:"⽦";s:3:"疋";s:3:"⽧";s:3:"疒";s:3:"⽨";s:3:"癶";s:3:"⽩";s:3:"白";s:3:"⽪";s:3:"皮";s:3:"⽫";s:3:"皿";s:3:"⽬";s:3:"目";s:3:"⽭";s:3:"矛";s:3:"⽮";s:3:"矢";s:3:"⽯";s:3:"石";s:3:"⽰";s:3:"示";s:3:"⽱";s:3:"禸";s:3:"⽲";s:3:"禾";s:3:"⽳";s:3:"穴";s:3:"⽴";s:3:"立";s:3:"⽵";s:3:"竹";s:3:"⽶";s:3:"米";s:3:"⽷";s:3:"糸";s:3:"⽸";s:3:"缶";s:3:"⽹";s:3:"网";s:3:"⽺";s:3:"羊";s:3:"⽻";s:3:"羽";s:3:"⽼";s:3:"老";s:3:"⽽";s:3:"而";s:3:"⽾";s:3:"耒";s:3:"⽿";s:3:"耳";s:3:"⾀";s:3:"聿";s:3:"⾁";s:3:"肉";s:3:"⾂";s:3:"臣";s:3:"⾃";s:3:"自";s:3:"⾄";s:3:"至";s:3:"⾅";s:3:"臼";s:3:"⾆";s:3:"舌";s:3:"⾇";s:3:"舛";s:3:"⾈";s:3:"舟";s:3:"⾉";s:3:"艮";s:3:"⾊";s:3:"色";s:3:"⾋";s:3:"艸";s:3:"⾌";s:3:"虍";s:3:"⾍";s:3:"虫";s:3:"⾎";s:3:"血";s:3:"⾏";s:3:"行";s:3:"⾐";s:3:"衣";s:3:"⾑";s:3:"襾";s:3:"⾒";s:3:"見";s:3:"⾓";s:3:"角";s:3:"⾔";s:3:"言";s:3:"⾕";s:3:"谷";s:3:"⾖";s:3:"豆";s:3:"⾗";s:3:"豕";s:3:"⾘";s:3:"豸";s:3:"⾙";s:3:"貝";s:3:"⾚";s:3:"赤";s:3:"⾛";s:3:"走";s:3:"⾜";s:3:"足";s:3:"⾝";s:3:"身";s:3:"⾞";s:3:"車";s:3:"⾟";s:3:"辛";s:3:"⾠";s:3:"辰";s:3:"⾡";s:3:"辵";s:3:"⾢";s:3:"邑";s:3:"⾣";s:3:"酉";s:3:"⾤";s:3:"釆";s:3:"⾥";s:3:"里";s:3:"⾦";s:3:"金";s:3:"⾧";s:3:"長";s:3:"⾨";s:3:"門";s:3:"⾩";s:3:"阜";s:3:"⾪";s:3:"隶";s:3:"⾫";s:3:"隹";s:3:"⾬";s:3:"雨";s:3:"⾭";s:3:"靑";s:3:"⾮";s:3:"非";s:3:"⾯";s:3:"面";s:3:"⾰";s:3:"革";s:3:"⾱";s:3:"韋";s:3:"⾲";s:3:"韭";s:3:"⾳";s:3:"音";s:3:"⾴";s:3:"頁";s:3:"⾵";s:3:"風";s:3:"⾶";s:3:"飛";s:3:"⾷";s:3:"食";s:3:"⾸";s:3:"首";s:3:"⾹";s:3:"香";s:3:"⾺";s:3:"馬";s:3:"⾻";s:3:"骨";s:3:"⾼";s:3:"高";s:3:"⾽";s:3:"髟";s:3:"⾾";s:3:"鬥";s:3:"⾿";s:3:"鬯";s:3:"⿀";s:3:"鬲";s:3:"⿁";s:3:"鬼";s:3:"⿂";s:3:"魚";s:3:"⿃";s:3:"鳥";s:3:"⿄";s:3:"鹵";s:3:"⿅";s:3:"鹿";s:3:"⿆";s:3:"麥";s:3:"⿇";s:3:"麻";s:3:"⿈";s:3:"黃";s:3:"⿉";s:3:"黍";s:3:"⿊";s:3:"黑";s:3:"⿋";s:3:"黹";s:3:"⿌";s:3:"黽";s:3:"⿍";s:3:"鼎";s:3:"⿎";s:3:"鼓";s:3:"⿏";s:3:"鼠";s:3:"⿐";s:3:"鼻";s:3:"⿑";s:3:"齊";s:3:"⿒";s:3:"齒";s:3:"⿓";s:3:"龍";s:3:"⿔";s:3:"龜";s:3:"⿕";s:3:"龠";s:3:" ";s:1:" ";s:3:"〶";s:3:"〒";s:3:"〸";s:3:"十";s:3:"〹";s:3:"卄";s:3:"〺";s:3:"卅";s:3:"が";s:6:"が";s:3:"ぎ";s:6:"ぎ";s:3:"ぐ";s:6:"ぐ";s:3:"げ";s:6:"げ";s:3:"ご";s:6:"ご";s:3:"ざ";s:6:"ざ";s:3:"じ";s:6:"じ";s:3:"ず";s:6:"ず";s:3:"ぜ";s:6:"ぜ";s:3:"ぞ";s:6:"ぞ";s:3:"だ";s:6:"だ";s:3:"ぢ";s:6:"ぢ";s:3:"づ";s:6:"づ";s:3:"で";s:6:"で";s:3:"ど";s:6:"ど";s:3:"ば";s:6:"ば";s:3:"ぱ";s:6:"ぱ";s:3:"び";s:6:"び";s:3:"ぴ";s:6:"ぴ";s:3:"ぶ";s:6:"ぶ";s:3:"ぷ";s:6:"ぷ";s:3:"べ";s:6:"べ";s:3:"ぺ";s:6:"ぺ";s:3:"ぼ";s:6:"ぼ";s:3:"ぽ";s:6:"ぽ";s:3:"ゔ";s:6:"ゔ";s:3:"゛";s:4:" ゙";s:3:"゜";s:4:" ゚";s:3:"ゞ";s:6:"ゞ";s:3:"ゟ";s:6:"より";s:3:"ガ";s:6:"ガ";s:3:"ギ";s:6:"ギ";s:3:"グ";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ゴ";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ジ";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ダ";s:3:"ヂ";s:6:"ヂ";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"バ";s:6:"バ";s:3:"パ";s:6:"パ";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ポ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"ヿ";s:6:"コト";s:3:"ㄱ";s:3:"ᄀ";s:3:"ㄲ";s:3:"ᄁ";s:3:"ㄳ";s:3:"ᆪ";s:3:"ㄴ";s:3:"ᄂ";s:3:"ㄵ";s:3:"ᆬ";s:3:"ㄶ";s:3:"ᆭ";s:3:"ㄷ";s:3:"ᄃ";s:3:"ㄸ";s:3:"ᄄ";s:3:"ㄹ";s:3:"ᄅ";s:3:"ㄺ";s:3:"ᆰ";s:3:"ㄻ";s:3:"ᆱ";s:3:"ㄼ";s:3:"ᆲ";s:3:"ㄽ";s:3:"ᆳ";s:3:"ㄾ";s:3:"ᆴ";s:3:"ㄿ";s:3:"ᆵ";s:3:"ㅀ";s:3:"ᄚ";s:3:"ㅁ";s:3:"ᄆ";s:3:"ㅂ";s:3:"ᄇ";s:3:"ㅃ";s:3:"ᄈ";s:3:"ㅄ";s:3:"ᄡ";s:3:"ㅅ";s:3:"ᄉ";s:3:"ㅆ";s:3:"ᄊ";s:3:"ㅇ";s:3:"ᄋ";s:3:"ㅈ";s:3:"ᄌ";s:3:"ㅉ";s:3:"ᄍ";s:3:"ㅊ";s:3:"ᄎ";s:3:"ㅋ";s:3:"ᄏ";s:3:"ㅌ";s:3:"ᄐ";s:3:"ㅍ";s:3:"ᄑ";s:3:"ㅎ";s:3:"ᄒ";s:3:"ㅏ";s:3:"ᅡ";s:3:"ㅐ";s:3:"ᅢ";s:3:"ㅑ";s:3:"ᅣ";s:3:"ㅒ";s:3:"ᅤ";s:3:"ㅓ";s:3:"ᅥ";s:3:"ㅔ";s:3:"ᅦ";s:3:"ㅕ";s:3:"ᅧ";s:3:"ㅖ";s:3:"ᅨ";s:3:"ㅗ";s:3:"ᅩ";s:3:"ㅘ";s:3:"ᅪ";s:3:"ㅙ";s:3:"ᅫ";s:3:"ㅚ";s:3:"ᅬ";s:3:"ㅛ";s:3:"ᅭ";s:3:"ㅜ";s:3:"ᅮ";s:3:"ㅝ";s:3:"ᅯ";s:3:"ㅞ";s:3:"ᅰ";s:3:"ㅟ";s:3:"ᅱ";s:3:"ㅠ";s:3:"ᅲ";s:3:"ㅡ";s:3:"ᅳ";s:3:"ㅢ";s:3:"ᅴ";s:3:"ㅣ";s:3:"ᅵ";s:3:"ㅤ";s:3:"ᅠ";s:3:"ㅥ";s:3:"ᄔ";s:3:"ㅦ";s:3:"ᄕ";s:3:"ㅧ";s:3:"ᇇ";s:3:"ㅨ";s:3:"ᇈ";s:3:"ㅩ";s:3:"ᇌ";s:3:"ㅪ";s:3:"ᇎ";s:3:"ㅫ";s:3:"ᇓ";s:3:"ㅬ";s:3:"ᇗ";s:3:"ㅭ";s:3:"ᇙ";s:3:"ㅮ";s:3:"ᄜ";s:3:"ㅯ";s:3:"ᇝ";s:3:"ㅰ";s:3:"ᇟ";s:3:"ㅱ";s:3:"ᄝ";s:3:"ㅲ";s:3:"ᄞ";s:3:"ㅳ";s:3:"ᄠ";s:3:"ㅴ";s:3:"ᄢ";s:3:"ㅵ";s:3:"ᄣ";s:3:"ㅶ";s:3:"ᄧ";s:3:"ㅷ";s:3:"ᄩ";s:3:"ㅸ";s:3:"ᄫ";s:3:"ㅹ";s:3:"ᄬ";s:3:"ㅺ";s:3:"ᄭ";s:3:"ㅻ";s:3:"ᄮ";s:3:"ㅼ";s:3:"ᄯ";s:3:"ㅽ";s:3:"ᄲ";s:3:"ㅾ";s:3:"ᄶ";s:3:"ㅿ";s:3:"ᅀ";s:3:"ㆀ";s:3:"ᅇ";s:3:"ㆁ";s:3:"ᅌ";s:3:"ㆂ";s:3:"ᇱ";s:3:"ㆃ";s:3:"ᇲ";s:3:"ㆄ";s:3:"ᅗ";s:3:"ㆅ";s:3:"ᅘ";s:3:"ㆆ";s:3:"ᅙ";s:3:"ㆇ";s:3:"ᆄ";s:3:"ㆈ";s:3:"ᆅ";s:3:"ㆉ";s:3:"ᆈ";s:3:"ㆊ";s:3:"ᆑ";s:3:"ㆋ";s:3:"ᆒ";s:3:"ㆌ";s:3:"ᆔ";s:3:"ㆍ";s:3:"ᆞ";s:3:"ㆎ";s:3:"ᆡ";s:3:"㆒";s:3:"一";s:3:"㆓";s:3:"二";s:3:"㆔";s:3:"三";s:3:"㆕";s:3:"四";s:3:"㆖";s:3:"上";s:3:"㆗";s:3:"中";s:3:"㆘";s:3:"下";s:3:"㆙";s:3:"甲";s:3:"㆚";s:3:"乙";s:3:"㆛";s:3:"丙";s:3:"㆜";s:3:"丁";s:3:"㆝";s:3:"天";s:3:"㆞";s:3:"地";s:3:"㆟";s:3:"人";s:3:"㈀";s:5:"(ᄀ)";s:3:"㈁";s:5:"(ᄂ)";s:3:"㈂";s:5:"(ᄃ)";s:3:"㈃";s:5:"(ᄅ)";s:3:"㈄";s:5:"(ᄆ)";s:3:"㈅";s:5:"(ᄇ)";s:3:"㈆";s:5:"(ᄉ)";s:3:"㈇";s:5:"(ᄋ)";s:3:"㈈";s:5:"(ᄌ)";s:3:"㈉";s:5:"(ᄎ)";s:3:"㈊";s:5:"(ᄏ)";s:3:"㈋";s:5:"(ᄐ)";s:3:"㈌";s:5:"(ᄑ)";s:3:"㈍";s:5:"(ᄒ)";s:3:"㈎";s:8:"(가)";s:3:"㈏";s:8:"(나)";s:3:"㈐";s:8:"(다)";s:3:"㈑";s:8:"(라)";s:3:"㈒";s:8:"(마)";s:3:"㈓";s:8:"(바)";s:3:"㈔";s:8:"(사)";s:3:"㈕";s:8:"(아)";s:3:"㈖";s:8:"(자)";s:3:"㈗";s:8:"(차)";s:3:"㈘";s:8:"(카)";s:3:"㈙";s:8:"(타)";s:3:"㈚";s:8:"(파)";s:3:"㈛";s:8:"(하)";s:3:"㈜";s:8:"(주)";s:3:"㈝";s:17:"(오전)";s:3:"㈞";s:14:"(오후)";s:3:"㈠";s:5:"(一)";s:3:"㈡";s:5:"(二)";s:3:"㈢";s:5:"(三)";s:3:"㈣";s:5:"(四)";s:3:"㈤";s:5:"(五)";s:3:"㈥";s:5:"(六)";s:3:"㈦";s:5:"(七)";s:3:"㈧";s:5:"(八)";s:3:"㈨";s:5:"(九)";s:3:"㈩";s:5:"(十)";s:3:"㈪";s:5:"(月)";s:3:"㈫";s:5:"(火)";s:3:"㈬";s:5:"(水)";s:3:"㈭";s:5:"(木)";s:3:"㈮";s:5:"(金)";s:3:"㈯";s:5:"(土)";s:3:"㈰";s:5:"(日)";s:3:"㈱";s:5:"(株)";s:3:"㈲";s:5:"(有)";s:3:"㈳";s:5:"(社)";s:3:"㈴";s:5:"(名)";s:3:"㈵";s:5:"(特)";s:3:"㈶";s:5:"(財)";s:3:"㈷";s:5:"(祝)";s:3:"㈸";s:5:"(労)";s:3:"㈹";s:5:"(代)";s:3:"㈺";s:5:"(呼)";s:3:"㈻";s:5:"(学)";s:3:"㈼";s:5:"(監)";s:3:"㈽";s:5:"(企)";s:3:"㈾";s:5:"(資)";s:3:"㈿";s:5:"(協)";s:3:"㉀";s:5:"(祭)";s:3:"㉁";s:5:"(休)";s:3:"㉂";s:5:"(自)";s:3:"㉃";s:5:"(至)";s:3:"㉐";s:3:"PTE";s:3:"㉑";s:2:"21";s:3:"㉒";s:2:"22";s:3:"㉓";s:2:"23";s:3:"㉔";s:2:"24";s:3:"㉕";s:2:"25";s:3:"㉖";s:2:"26";s:3:"㉗";s:2:"27";s:3:"㉘";s:2:"28";s:3:"㉙";s:2:"29";s:3:"㉚";s:2:"30";s:3:"㉛";s:2:"31";s:3:"㉜";s:2:"32";s:3:"㉝";s:2:"33";s:3:"㉞";s:2:"34";s:3:"㉟";s:2:"35";s:3:"㉠";s:3:"ᄀ";s:3:"㉡";s:3:"ᄂ";s:3:"㉢";s:3:"ᄃ";s:3:"㉣";s:3:"ᄅ";s:3:"㉤";s:3:"ᄆ";s:3:"㉥";s:3:"ᄇ";s:3:"㉦";s:3:"ᄉ";s:3:"㉧";s:3:"ᄋ";s:3:"㉨";s:3:"ᄌ";s:3:"㉩";s:3:"ᄎ";s:3:"㉪";s:3:"ᄏ";s:3:"㉫";s:3:"ᄐ";s:3:"㉬";s:3:"ᄑ";s:3:"㉭";s:3:"ᄒ";s:3:"㉮";s:6:"가";s:3:"㉯";s:6:"나";s:3:"㉰";s:6:"다";s:3:"㉱";s:6:"라";s:3:"㉲";s:6:"마";s:3:"㉳";s:6:"바";s:3:"㉴";s:6:"사";s:3:"㉵";s:6:"아";s:3:"㉶";s:6:"자";s:3:"㉷";s:6:"차";s:3:"㉸";s:6:"카";s:3:"㉹";s:6:"타";s:3:"㉺";s:6:"파";s:3:"㉻";s:6:"하";s:3:"㉼";s:15:"참고";s:3:"㉽";s:12:"주의";s:3:"㉾";s:6:"우";s:3:"㊀";s:3:"一";s:3:"㊁";s:3:"二";s:3:"㊂";s:3:"三";s:3:"㊃";s:3:"四";s:3:"㊄";s:3:"五";s:3:"㊅";s:3:"六";s:3:"㊆";s:3:"七";s:3:"㊇";s:3:"八";s:3:"㊈";s:3:"九";s:3:"㊉";s:3:"十";s:3:"㊊";s:3:"月";s:3:"㊋";s:3:"火";s:3:"㊌";s:3:"水";s:3:"㊍";s:3:"木";s:3:"㊎";s:3:"金";s:3:"㊏";s:3:"土";s:3:"㊐";s:3:"日";s:3:"㊑";s:3:"株";s:3:"㊒";s:3:"有";s:3:"㊓";s:3:"社";s:3:"㊔";s:3:"名";s:3:"㊕";s:3:"特";s:3:"㊖";s:3:"財";s:3:"㊗";s:3:"祝";s:3:"㊘";s:3:"労";s:3:"㊙";s:3:"秘";s:3:"㊚";s:3:"男";s:3:"㊛";s:3:"女";s:3:"㊜";s:3:"適";s:3:"㊝";s:3:"優";s:3:"㊞";s:3:"印";s:3:"㊟";s:3:"注";s:3:"㊠";s:3:"項";s:3:"㊡";s:3:"休";s:3:"㊢";s:3:"写";s:3:"㊣";s:3:"正";s:3:"㊤";s:3:"上";s:3:"㊥";s:3:"中";s:3:"㊦";s:3:"下";s:3:"㊧";s:3:"左";s:3:"㊨";s:3:"右";s:3:"㊩";s:3:"医";s:3:"㊪";s:3:"宗";s:3:"㊫";s:3:"学";s:3:"㊬";s:3:"監";s:3:"㊭";s:3:"企";s:3:"㊮";s:3:"資";s:3:"㊯";s:3:"協";s:3:"㊰";s:3:"夜";s:3:"㊱";s:2:"36";s:3:"㊲";s:2:"37";s:3:"㊳";s:2:"38";s:3:"㊴";s:2:"39";s:3:"㊵";s:2:"40";s:3:"㊶";s:2:"41";s:3:"㊷";s:2:"42";s:3:"㊸";s:2:"43";s:3:"㊹";s:2:"44";s:3:"㊺";s:2:"45";s:3:"㊻";s:2:"46";s:3:"㊼";s:2:"47";s:3:"㊽";s:2:"48";s:3:"㊾";s:2:"49";s:3:"㊿";s:2:"50";s:3:"㋀";s:4:"1月";s:3:"㋁";s:4:"2月";s:3:"㋂";s:4:"3月";s:3:"㋃";s:4:"4月";s:3:"㋄";s:4:"5月";s:3:"㋅";s:4:"6月";s:3:"㋆";s:4:"7月";s:3:"㋇";s:4:"8月";s:3:"㋈";s:4:"9月";s:3:"㋉";s:5:"10月";s:3:"㋊";s:5:"11月";s:3:"㋋";s:5:"12月";s:3:"㋌";s:2:"Hg";s:3:"㋍";s:3:"erg";s:3:"㋎";s:2:"eV";s:3:"㋏";s:3:"LTD";s:3:"㋐";s:3:"ア";s:3:"㋑";s:3:"イ";s:3:"㋒";s:3:"ウ";s:3:"㋓";s:3:"エ";s:3:"㋔";s:3:"オ";s:3:"㋕";s:3:"カ";s:3:"㋖";s:3:"キ";s:3:"㋗";s:3:"ク";s:3:"㋘";s:3:"ケ";s:3:"㋙";s:3:"コ";s:3:"㋚";s:3:"サ";s:3:"㋛";s:3:"シ";s:3:"㋜";s:3:"ス";s:3:"㋝";s:3:"セ";s:3:"㋞";s:3:"ソ";s:3:"㋟";s:3:"タ";s:3:"㋠";s:3:"チ";s:3:"㋡";s:3:"ツ";s:3:"㋢";s:3:"テ";s:3:"㋣";s:3:"ト";s:3:"㋤";s:3:"ナ";s:3:"㋥";s:3:"ニ";s:3:"㋦";s:3:"ヌ";s:3:"㋧";s:3:"ネ";s:3:"㋨";s:3:"ノ";s:3:"㋩";s:3:"ハ";s:3:"㋪";s:3:"ヒ";s:3:"㋫";s:3:"フ";s:3:"㋬";s:3:"ヘ";s:3:"㋭";s:3:"ホ";s:3:"㋮";s:3:"マ";s:3:"㋯";s:3:"ミ";s:3:"㋰";s:3:"ム";s:3:"㋱";s:3:"メ";s:3:"㋲";s:3:"モ";s:3:"㋳";s:3:"ヤ";s:3:"㋴";s:3:"ユ";s:3:"㋵";s:3:"ヨ";s:3:"㋶";s:3:"ラ";s:3:"㋷";s:3:"リ";s:3:"㋸";s:3:"ル";s:3:"㋹";s:3:"レ";s:3:"㋺";s:3:"ロ";s:3:"㋻";s:3:"ワ";s:3:"㋼";s:3:"ヰ";s:3:"㋽";s:3:"ヱ";s:3:"㋾";s:3:"ヲ";s:3:"㌀";s:15:"アパート";s:3:"㌁";s:12:"アルファ";s:3:"㌂";s:15:"アンペア";s:3:"㌃";s:9:"アール";s:3:"㌄";s:15:"イニング";s:3:"㌅";s:9:"インチ";s:3:"㌆";s:9:"ウォン";s:3:"㌇";s:18:"エスクード";s:3:"㌈";s:12:"エーカー";s:3:"㌉";s:9:"オンス";s:3:"㌊";s:9:"オーム";s:3:"㌋";s:9:"カイリ";s:3:"㌌";s:12:"カラット";s:3:"㌍";s:12:"カロリー";s:3:"㌎";s:12:"ガロン";s:3:"㌏";s:12:"ガンマ";s:3:"㌐";s:12:"ギガ";s:3:"㌑";s:12:"ギニー";s:3:"㌒";s:12:"キュリー";s:3:"㌓";s:18:"ギルダー";s:3:"㌔";s:6:"キロ";s:3:"㌕";s:18:"キログラム";s:3:"㌖";s:18:"キロメートル";s:3:"㌗";s:15:"キロワット";s:3:"㌘";s:12:"グラム";s:3:"㌙";s:18:"グラムトン";s:3:"㌚";s:18:"クルゼイロ";s:3:"㌛";s:12:"クローネ";s:3:"㌜";s:9:"ケース";s:3:"㌝";s:9:"コルナ";s:3:"㌞";s:12:"コーポ";s:3:"㌟";s:12:"サイクル";s:3:"㌠";s:15:"サンチーム";s:3:"㌡";s:15:"シリング";s:3:"㌢";s:9:"センチ";s:3:"㌣";s:9:"セント";s:3:"㌤";s:12:"ダース";s:3:"㌥";s:9:"デシ";s:3:"㌦";s:9:"ドル";s:3:"㌧";s:6:"トン";s:3:"㌨";s:6:"ナノ";s:3:"㌩";s:9:"ノット";s:3:"㌪";s:9:"ハイツ";s:3:"㌫";s:18:"パーセント";s:3:"㌬";s:12:"パーツ";s:3:"㌭";s:15:"バーレル";s:3:"㌮";s:18:"ピアストル";s:3:"㌯";s:12:"ピクル";s:3:"㌰";s:9:"ピコ";s:3:"㌱";s:9:"ビル";s:3:"㌲";s:18:"ファラッド";s:3:"㌳";s:12:"フィート";s:3:"㌴";s:18:"ブッシェル";s:3:"㌵";s:9:"フラン";s:3:"㌶";s:15:"ヘクタール";s:3:"㌷";s:9:"ペソ";s:3:"㌸";s:12:"ペニヒ";s:3:"㌹";s:9:"ヘルツ";s:3:"㌺";s:12:"ペンス";s:3:"㌻";s:15:"ページ";s:3:"㌼";s:12:"ベータ";s:3:"㌽";s:15:"ポイント";s:3:"㌾";s:12:"ボルト";s:3:"㌿";s:6:"ホン";s:3:"㍀";s:15:"ポンド";s:3:"㍁";s:9:"ホール";s:3:"㍂";s:9:"ホーン";s:3:"㍃";s:12:"マイクロ";s:3:"㍄";s:9:"マイル";s:3:"㍅";s:9:"マッハ";s:3:"㍆";s:9:"マルク";s:3:"㍇";s:15:"マンション";s:3:"㍈";s:12:"ミクロン";s:3:"㍉";s:6:"ミリ";s:3:"㍊";s:18:"ミリバール";s:3:"㍋";s:9:"メガ";s:3:"㍌";s:15:"メガトン";s:3:"㍍";s:12:"メートル";s:3:"㍎";s:12:"ヤード";s:3:"㍏";s:9:"ヤール";s:3:"㍐";s:9:"ユアン";s:3:"㍑";s:12:"リットル";s:3:"㍒";s:6:"リラ";s:3:"㍓";s:12:"ルピー";s:3:"㍔";s:15:"ルーブル";s:3:"㍕";s:6:"レム";s:3:"㍖";s:18:"レントゲン";s:3:"㍗";s:9:"ワット";s:3:"㍘";s:4:"0点";s:3:"㍙";s:4:"1点";s:3:"㍚";s:4:"2点";s:3:"㍛";s:4:"3点";s:3:"㍜";s:4:"4点";s:3:"㍝";s:4:"5点";s:3:"㍞";s:4:"6点";s:3:"㍟";s:4:"7点";s:3:"㍠";s:4:"8点";s:3:"㍡";s:4:"9点";s:3:"㍢";s:5:"10点";s:3:"㍣";s:5:"11点";s:3:"㍤";s:5:"12点";s:3:"㍥";s:5:"13点";s:3:"㍦";s:5:"14点";s:3:"㍧";s:5:"15点";s:3:"㍨";s:5:"16点";s:3:"㍩";s:5:"17点";s:3:"㍪";s:5:"18点";s:3:"㍫";s:5:"19点";s:3:"㍬";s:5:"20点";s:3:"㍭";s:5:"21点";s:3:"㍮";s:5:"22点";s:3:"㍯";s:5:"23点";s:3:"㍰";s:5:"24点";s:3:"㍱";s:3:"hPa";s:3:"㍲";s:2:"da";s:3:"㍳";s:2:"AU";s:3:"㍴";s:3:"bar";s:3:"㍵";s:2:"oV";s:3:"㍶";s:2:"pc";s:3:"㍷";s:2:"dm";s:3:"㍸";s:3:"dm2";s:3:"㍹";s:3:"dm3";s:3:"㍺";s:2:"IU";s:3:"㍻";s:6:"平成";s:3:"㍼";s:6:"昭和";s:3:"㍽";s:6:"大正";s:3:"㍾";s:6:"明治";s:3:"㍿";s:12:"株式会社";s:3:"㎀";s:2:"pA";s:3:"㎁";s:2:"nA";s:3:"㎂";s:3:"μA";s:3:"㎃";s:2:"mA";s:3:"㎄";s:2:"kA";s:3:"㎅";s:2:"KB";s:3:"㎆";s:2:"MB";s:3:"㎇";s:2:"GB";s:3:"㎈";s:3:"cal";s:3:"㎉";s:4:"kcal";s:3:"㎊";s:2:"pF";s:3:"㎋";s:2:"nF";s:3:"㎌";s:3:"μF";s:3:"㎍";s:3:"μg";s:3:"㎎";s:2:"mg";s:3:"㎏";s:2:"kg";s:3:"㎐";s:2:"Hz";s:3:"㎑";s:3:"kHz";s:3:"㎒";s:3:"MHz";s:3:"㎓";s:3:"GHz";s:3:"㎔";s:3:"THz";s:3:"㎕";s:3:"μl";s:3:"㎖";s:2:"ml";s:3:"㎗";s:2:"dl";s:3:"㎘";s:2:"kl";s:3:"㎙";s:2:"fm";s:3:"㎚";s:2:"nm";s:3:"㎛";s:3:"μm";s:3:"㎜";s:2:"mm";s:3:"㎝";s:2:"cm";s:3:"㎞";s:2:"km";s:3:"㎟";s:3:"mm2";s:3:"㎠";s:3:"cm2";s:3:"㎡";s:2:"m2";s:3:"㎢";s:3:"km2";s:3:"㎣";s:3:"mm3";s:3:"㎤";s:3:"cm3";s:3:"㎥";s:2:"m3";s:3:"㎦";s:3:"km3";s:3:"㎧";s:5:"m∕s";s:3:"㎨";s:6:"m∕s2";s:3:"㎩";s:2:"Pa";s:3:"㎪";s:3:"kPa";s:3:"㎫";s:3:"MPa";s:3:"㎬";s:3:"GPa";s:3:"㎭";s:3:"rad";s:3:"㎮";s:7:"rad∕s";s:3:"㎯";s:8:"rad∕s2";s:3:"㎰";s:2:"ps";s:3:"㎱";s:2:"ns";s:3:"㎲";s:3:"μs";s:3:"㎳";s:2:"ms";s:3:"㎴";s:2:"pV";s:3:"㎵";s:2:"nV";s:3:"㎶";s:3:"μV";s:3:"㎷";s:2:"mV";s:3:"㎸";s:2:"kV";s:3:"㎹";s:2:"MV";s:3:"㎺";s:2:"pW";s:3:"㎻";s:2:"nW";s:3:"㎼";s:3:"μW";s:3:"㎽";s:2:"mW";s:3:"㎾";s:2:"kW";s:3:"㎿";s:2:"MW";s:3:"㏀";s:3:"kΩ";s:3:"㏁";s:3:"MΩ";s:3:"㏂";s:4:"a.m.";s:3:"㏃";s:2:"Bq";s:3:"㏄";s:2:"cc";s:3:"㏅";s:2:"cd";s:3:"㏆";s:6:"C∕kg";s:3:"㏇";s:3:"Co.";s:3:"㏈";s:2:"dB";s:3:"㏉";s:2:"Gy";s:3:"㏊";s:2:"ha";s:3:"㏋";s:2:"HP";s:3:"㏌";s:2:"in";s:3:"㏍";s:2:"KK";s:3:"㏎";s:2:"KM";s:3:"㏏";s:2:"kt";s:3:"㏐";s:2:"lm";s:3:"㏑";s:2:"ln";s:3:"㏒";s:3:"log";s:3:"㏓";s:2:"lx";s:3:"㏔";s:2:"mb";s:3:"㏕";s:3:"mil";s:3:"㏖";s:3:"mol";s:3:"㏗";s:2:"PH";s:3:"㏘";s:4:"p.m.";s:3:"㏙";s:3:"PPM";s:3:"㏚";s:2:"PR";s:3:"㏛";s:2:"sr";s:3:"㏜";s:2:"Sv";s:3:"㏝";s:2:"Wb";s:3:"㏞";s:5:"V∕m";s:3:"㏟";s:5:"A∕m";s:3:"㏠";s:4:"1日";s:3:"㏡";s:4:"2日";s:3:"㏢";s:4:"3日";s:3:"㏣";s:4:"4日";s:3:"㏤";s:4:"5日";s:3:"㏥";s:4:"6日";s:3:"㏦";s:4:"7日";s:3:"㏧";s:4:"8日";s:3:"㏨";s:4:"9日";s:3:"㏩";s:5:"10日";s:3:"㏪";s:5:"11日";s:3:"㏫";s:5:"12日";s:3:"㏬";s:5:"13日";s:3:"㏭";s:5:"14日";s:3:"㏮";s:5:"15日";s:3:"㏯";s:5:"16日";s:3:"㏰";s:5:"17日";s:3:"㏱";s:5:"18日";s:3:"㏲";s:5:"19日";s:3:"㏳";s:5:"20日";s:3:"㏴";s:5:"21日";s:3:"㏵";s:5:"22日";s:3:"㏶";s:5:"23日";s:3:"㏷";s:5:"24日";s:3:"㏸";s:5:"25日";s:3:"㏹";s:5:"26日";s:3:"㏺";s:5:"27日";s:3:"㏻";s:5:"28日";s:3:"㏼";s:5:"29日";s:3:"㏽";s:5:"30日";s:3:"㏾";s:5:"31日";s:3:"㏿";s:3:"gal";s:3:"ꝰ";s:3:"ꝯ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"樂";s:3:"樂";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"異";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:3:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"侮";s:3:"僧";s:3:"僧";s:3:"免";s:3:"免";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"屮";s:3:"悔";s:3:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:3:"憎";s:3:"懲";s:3:"懲";s:3:"敏";s:3:"敏";s:3:"既";s:3:"既";s:3:"暑";s:3:"暑";s:3:"梅";s:3:"梅";s:3:"海";s:3:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:3:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:3:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"練";s:3:"練";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:3:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"著";s:3:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"並";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"勺";s:3:"勺";s:3:"喝";s:3:"喝";s:3:"啕";s:3:"啕";s:3:"喙";s:3:"喙";s:3:"嗢";s:3:"嗢";s:3:"塚";s:3:"塚";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"慎";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"慠";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"晴";s:3:"晴";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"流";s:3:"滛";s:3:"滛";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"漢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"煮";s:3:"瞧";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"盛";s:3:"直";s:3:"直";s:3:"睊";s:3:"睊";s:3:"着";s:3:"着";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"練";s:3:"練";s:3:"缾";s:3:"缾";s:3:"者";s:3:"者";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:3:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"請";s:3:"謁";s:3:"謁";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"諭";s:3:"謹";s:3:"謹";s:3:"變";s:3:"變";s:3:"贈";s:3:"贈";s:3:"輸";s:3:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"靖";s:3:"韛";s:3:"韛";s:3:"響";s:3:"響";s:3:"頋";s:3:"頋";s:3:"頻";s:3:"頻";s:3:"鬒";s:3:"鬒";s:3:"龜";s:3:"龜";s:3:"𢡊";s:4:"𢡊";s:3:"𢡄";s:4:"𢡄";s:3:"𣏕";s:4:"𣏕";s:3:"㮝";s:3:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:3:"䀹";s:3:"𥉉";s:4:"𥉉";s:3:"𥳐";s:4:"𥳐";s:3:"𧻓";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:3:"ff";s:2:"ff";s:3:"fi";s:2:"fi";s:3:"fl";s:2:"fl";s:3:"ffi";s:3:"ffi";s:3:"ffl";s:3:"ffl";s:3:"ſt";s:2:"st";s:3:"st";s:2:"st";s:3:"ﬓ";s:4:"մն";s:3:"ﬔ";s:4:"մե";s:3:"ﬕ";s:4:"մի";s:3:"ﬖ";s:4:"վն";s:3:"ﬗ";s:4:"մխ";s:3:"יִ";s:4:"יִ";s:3:"ײַ";s:4:"ײַ";s:3:"ﬠ";s:2:"ע";s:3:"ﬡ";s:2:"א";s:3:"ﬢ";s:2:"ד";s:3:"ﬣ";s:2:"ה";s:3:"ﬤ";s:2:"כ";s:3:"ﬥ";s:2:"ל";s:3:"ﬦ";s:2:"ם";s:3:"ﬧ";s:2:"ר";s:3:"ﬨ";s:2:"ת";s:3:"﬩";s:1:"+";s:3:"שׁ";s:4:"שׁ";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּׁ";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"אַ";s:3:"אָ";s:4:"אָ";s:3:"אּ";s:4:"אּ";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"גּ";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"הּ";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"זּ";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"יּ";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"כּ";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"נּ";s:4:"נּ";s:3:"סּ";s:4:"סּ";s:3:"ףּ";s:4:"ףּ";s:3:"פּ";s:4:"פּ";s:3:"צּ";s:4:"צּ";s:3:"קּ";s:4:"קּ";s:3:"רּ";s:4:"רּ";s:3:"שּ";s:4:"שּ";s:3:"תּ";s:4:"תּ";s:3:"וֹ";s:4:"וֹ";s:3:"בֿ";s:4:"בֿ";s:3:"כֿ";s:4:"כֿ";s:3:"פֿ";s:4:"פֿ";s:3:"ﭏ";s:4:"אל";s:3:"ﭐ";s:2:"ٱ";s:3:"ﭑ";s:2:"ٱ";s:3:"ﭒ";s:2:"ٻ";s:3:"ﭓ";s:2:"ٻ";s:3:"ﭔ";s:2:"ٻ";s:3:"ﭕ";s:2:"ٻ";s:3:"ﭖ";s:2:"پ";s:3:"ﭗ";s:2:"پ";s:3:"ﭘ";s:2:"پ";s:3:"ﭙ";s:2:"پ";s:3:"ﭚ";s:2:"ڀ";s:3:"ﭛ";s:2:"ڀ";s:3:"ﭜ";s:2:"ڀ";s:3:"ﭝ";s:2:"ڀ";s:3:"ﭞ";s:2:"ٺ";s:3:"ﭟ";s:2:"ٺ";s:3:"ﭠ";s:2:"ٺ";s:3:"ﭡ";s:2:"ٺ";s:3:"ﭢ";s:2:"ٿ";s:3:"ﭣ";s:2:"ٿ";s:3:"ﭤ";s:2:"ٿ";s:3:"ﭥ";s:2:"ٿ";s:3:"ﭦ";s:2:"ٹ";s:3:"ﭧ";s:2:"ٹ";s:3:"ﭨ";s:2:"ٹ";s:3:"ﭩ";s:2:"ٹ";s:3:"ﭪ";s:2:"ڤ";s:3:"ﭫ";s:2:"ڤ";s:3:"ﭬ";s:2:"ڤ";s:3:"ﭭ";s:2:"ڤ";s:3:"ﭮ";s:2:"ڦ";s:3:"ﭯ";s:2:"ڦ";s:3:"ﭰ";s:2:"ڦ";s:3:"ﭱ";s:2:"ڦ";s:3:"ﭲ";s:2:"ڄ";s:3:"ﭳ";s:2:"ڄ";s:3:"ﭴ";s:2:"ڄ";s:3:"ﭵ";s:2:"ڄ";s:3:"ﭶ";s:2:"ڃ";s:3:"ﭷ";s:2:"ڃ";s:3:"ﭸ";s:2:"ڃ";s:3:"ﭹ";s:2:"ڃ";s:3:"ﭺ";s:2:"چ";s:3:"ﭻ";s:2:"چ";s:3:"ﭼ";s:2:"چ";s:3:"ﭽ";s:2:"چ";s:3:"ﭾ";s:2:"ڇ";s:3:"ﭿ";s:2:"ڇ";s:3:"ﮀ";s:2:"ڇ";s:3:"ﮁ";s:2:"ڇ";s:3:"ﮂ";s:2:"ڍ";s:3:"ﮃ";s:2:"ڍ";s:3:"ﮄ";s:2:"ڌ";s:3:"ﮅ";s:2:"ڌ";s:3:"ﮆ";s:2:"ڎ";s:3:"ﮇ";s:2:"ڎ";s:3:"ﮈ";s:2:"ڈ";s:3:"ﮉ";s:2:"ڈ";s:3:"ﮊ";s:2:"ژ";s:3:"ﮋ";s:2:"ژ";s:3:"ﮌ";s:2:"ڑ";s:3:"ﮍ";s:2:"ڑ";s:3:"ﮎ";s:2:"ک";s:3:"ﮏ";s:2:"ک";s:3:"ﮐ";s:2:"ک";s:3:"ﮑ";s:2:"ک";s:3:"ﮒ";s:2:"گ";s:3:"ﮓ";s:2:"گ";s:3:"ﮔ";s:2:"گ";s:3:"ﮕ";s:2:"گ";s:3:"ﮖ";s:2:"ڳ";s:3:"ﮗ";s:2:"ڳ";s:3:"ﮘ";s:2:"ڳ";s:3:"ﮙ";s:2:"ڳ";s:3:"ﮚ";s:2:"ڱ";s:3:"ﮛ";s:2:"ڱ";s:3:"ﮜ";s:2:"ڱ";s:3:"ﮝ";s:2:"ڱ";s:3:"ﮞ";s:2:"ں";s:3:"ﮟ";s:2:"ں";s:3:"ﮠ";s:2:"ڻ";s:3:"ﮡ";s:2:"ڻ";s:3:"ﮢ";s:2:"ڻ";s:3:"ﮣ";s:2:"ڻ";s:3:"ﮤ";s:4:"ۀ";s:3:"ﮥ";s:4:"ۀ";s:3:"ﮦ";s:2:"ہ";s:3:"ﮧ";s:2:"ہ";s:3:"ﮨ";s:2:"ہ";s:3:"ﮩ";s:2:"ہ";s:3:"ﮪ";s:2:"ھ";s:3:"ﮫ";s:2:"ھ";s:3:"ﮬ";s:2:"ھ";s:3:"ﮭ";s:2:"ھ";s:3:"ﮮ";s:2:"ے";s:3:"ﮯ";s:2:"ے";s:3:"ﮰ";s:4:"ۓ";s:3:"ﮱ";s:4:"ۓ";s:3:"ﯓ";s:2:"ڭ";s:3:"ﯔ";s:2:"ڭ";s:3:"ﯕ";s:2:"ڭ";s:3:"ﯖ";s:2:"ڭ";s:3:"ﯗ";s:2:"ۇ";s:3:"ﯘ";s:2:"ۇ";s:3:"ﯙ";s:2:"ۆ";s:3:"ﯚ";s:2:"ۆ";s:3:"ﯛ";s:2:"ۈ";s:3:"ﯜ";s:2:"ۈ";s:3:"ﯝ";s:4:"ۇٴ";s:3:"ﯞ";s:2:"ۋ";s:3:"ﯟ";s:2:"ۋ";s:3:"ﯠ";s:2:"ۅ";s:3:"ﯡ";s:2:"ۅ";s:3:"ﯢ";s:2:"ۉ";s:3:"ﯣ";s:2:"ۉ";s:3:"ﯤ";s:2:"ې";s:3:"ﯥ";s:2:"ې";s:3:"ﯦ";s:2:"ې";s:3:"ﯧ";s:2:"ې";s:3:"ﯨ";s:2:"ى";s:3:"ﯩ";s:2:"ى";s:3:"ﯪ";s:6:"ئا";s:3:"ﯫ";s:6:"ئا";s:3:"ﯬ";s:6:"ئە";s:3:"ﯭ";s:6:"ئە";s:3:"ﯮ";s:6:"ئو";s:3:"ﯯ";s:6:"ئو";s:3:"ﯰ";s:6:"ئۇ";s:3:"ﯱ";s:6:"ئۇ";s:3:"ﯲ";s:6:"ئۆ";s:3:"ﯳ";s:6:"ئۆ";s:3:"ﯴ";s:6:"ئۈ";s:3:"ﯵ";s:6:"ئۈ";s:3:"ﯶ";s:6:"ئې";s:3:"ﯷ";s:6:"ئې";s:3:"ﯸ";s:6:"ئې";s:3:"ﯹ";s:6:"ئى";s:3:"ﯺ";s:6:"ئى";s:3:"ﯻ";s:6:"ئى";s:3:"ﯼ";s:2:"ی";s:3:"ﯽ";s:2:"ی";s:3:"ﯾ";s:2:"ی";s:3:"ﯿ";s:2:"ی";s:3:"ﰀ";s:6:"ئج";s:3:"ﰁ";s:6:"ئح";s:3:"ﰂ";s:6:"ئم";s:3:"ﰃ";s:6:"ئى";s:3:"ﰄ";s:6:"ئي";s:3:"ﰅ";s:4:"بج";s:3:"ﰆ";s:4:"بح";s:3:"ﰇ";s:4:"بخ";s:3:"ﰈ";s:4:"بم";s:3:"ﰉ";s:4:"بى";s:3:"ﰊ";s:4:"بي";s:3:"ﰋ";s:4:"تج";s:3:"ﰌ";s:4:"تح";s:3:"ﰍ";s:4:"تخ";s:3:"ﰎ";s:4:"تم";s:3:"ﰏ";s:4:"تى";s:3:"ﰐ";s:4:"تي";s:3:"ﰑ";s:4:"ثج";s:3:"ﰒ";s:4:"ثم";s:3:"ﰓ";s:4:"ثى";s:3:"ﰔ";s:4:"ثي";s:3:"ﰕ";s:4:"جح";s:3:"ﰖ";s:4:"جم";s:3:"ﰗ";s:4:"حج";s:3:"ﰘ";s:4:"حم";s:3:"ﰙ";s:4:"خج";s:3:"ﰚ";s:4:"خح";s:3:"ﰛ";s:4:"خم";s:3:"ﰜ";s:4:"سج";s:3:"ﰝ";s:4:"سح";s:3:"ﰞ";s:4:"سخ";s:3:"ﰟ";s:4:"سم";s:3:"ﰠ";s:4:"صح";s:3:"ﰡ";s:4:"صم";s:3:"ﰢ";s:4:"ضج";s:3:"ﰣ";s:4:"ضح";s:3:"ﰤ";s:4:"ضخ";s:3:"ﰥ";s:4:"ضم";s:3:"ﰦ";s:4:"طح";s:3:"ﰧ";s:4:"طم";s:3:"ﰨ";s:4:"ظم";s:3:"ﰩ";s:4:"عج";s:3:"ﰪ";s:4:"عم";s:3:"ﰫ";s:4:"غج";s:3:"ﰬ";s:4:"غم";s:3:"ﰭ";s:4:"فج";s:3:"ﰮ";s:4:"فح";s:3:"ﰯ";s:4:"فخ";s:3:"ﰰ";s:4:"فم";s:3:"ﰱ";s:4:"فى";s:3:"ﰲ";s:4:"في";s:3:"ﰳ";s:4:"قح";s:3:"ﰴ";s:4:"قم";s:3:"ﰵ";s:4:"قى";s:3:"ﰶ";s:4:"قي";s:3:"ﰷ";s:4:"كا";s:3:"ﰸ";s:4:"كج";s:3:"ﰹ";s:4:"كح";s:3:"ﰺ";s:4:"كخ";s:3:"ﰻ";s:4:"كل";s:3:"ﰼ";s:4:"كم";s:3:"ﰽ";s:4:"كى";s:3:"ﰾ";s:4:"كي";s:3:"ﰿ";s:4:"لج";s:3:"ﱀ";s:4:"لح";s:3:"ﱁ";s:4:"لخ";s:3:"ﱂ";s:4:"لم";s:3:"ﱃ";s:4:"لى";s:3:"ﱄ";s:4:"لي";s:3:"ﱅ";s:4:"مج";s:3:"ﱆ";s:4:"مح";s:3:"ﱇ";s:4:"مخ";s:3:"ﱈ";s:4:"مم";s:3:"ﱉ";s:4:"مى";s:3:"ﱊ";s:4:"مي";s:3:"ﱋ";s:4:"نج";s:3:"ﱌ";s:4:"نح";s:3:"ﱍ";s:4:"نخ";s:3:"ﱎ";s:4:"نم";s:3:"ﱏ";s:4:"نى";s:3:"ﱐ";s:4:"ني";s:3:"ﱑ";s:4:"هج";s:3:"ﱒ";s:4:"هم";s:3:"ﱓ";s:4:"هى";s:3:"ﱔ";s:4:"هي";s:3:"ﱕ";s:4:"يج";s:3:"ﱖ";s:4:"يح";s:3:"ﱗ";s:4:"يخ";s:3:"ﱘ";s:4:"يم";s:3:"ﱙ";s:4:"يى";s:3:"ﱚ";s:4:"يي";s:3:"ﱛ";s:4:"ذٰ";s:3:"ﱜ";s:4:"رٰ";s:3:"ﱝ";s:4:"ىٰ";s:3:"ﱞ";s:5:" ٌّ";s:3:"ﱟ";s:5:" ٍّ";s:3:"ﱠ";s:5:" َّ";s:3:"ﱡ";s:5:" ُّ";s:3:"ﱢ";s:5:" ِّ";s:3:"ﱣ";s:5:" ّٰ";s:3:"ﱤ";s:6:"ئر";s:3:"ﱥ";s:6:"ئز";s:3:"ﱦ";s:6:"ئم";s:3:"ﱧ";s:6:"ئن";s:3:"ﱨ";s:6:"ئى";s:3:"ﱩ";s:6:"ئي";s:3:"ﱪ";s:4:"بر";s:3:"ﱫ";s:4:"بز";s:3:"ﱬ";s:4:"بم";s:3:"ﱭ";s:4:"بن";s:3:"ﱮ";s:4:"بى";s:3:"ﱯ";s:4:"بي";s:3:"ﱰ";s:4:"تر";s:3:"ﱱ";s:4:"تز";s:3:"ﱲ";s:4:"تم";s:3:"ﱳ";s:4:"تن";s:3:"ﱴ";s:4:"تى";s:3:"ﱵ";s:4:"تي";s:3:"ﱶ";s:4:"ثر";s:3:"ﱷ";s:4:"ثز";s:3:"ﱸ";s:4:"ثم";s:3:"ﱹ";s:4:"ثن";s:3:"ﱺ";s:4:"ثى";s:3:"ﱻ";s:4:"ثي";s:3:"ﱼ";s:4:"فى";s:3:"ﱽ";s:4:"في";s:3:"ﱾ";s:4:"قى";s:3:"ﱿ";s:4:"قي";s:3:"ﲀ";s:4:"كا";s:3:"ﲁ";s:4:"كل";s:3:"ﲂ";s:4:"كم";s:3:"ﲃ";s:4:"كى";s:3:"ﲄ";s:4:"كي";s:3:"ﲅ";s:4:"لم";s:3:"ﲆ";s:4:"لى";s:3:"ﲇ";s:4:"لي";s:3:"ﲈ";s:4:"ما";s:3:"ﲉ";s:4:"مم";s:3:"ﲊ";s:4:"نر";s:3:"ﲋ";s:4:"نز";s:3:"ﲌ";s:4:"نم";s:3:"ﲍ";s:4:"نن";s:3:"ﲎ";s:4:"نى";s:3:"ﲏ";s:4:"ني";s:3:"ﲐ";s:4:"ىٰ";s:3:"ﲑ";s:4:"ير";s:3:"ﲒ";s:4:"يز";s:3:"ﲓ";s:4:"يم";s:3:"ﲔ";s:4:"ين";s:3:"ﲕ";s:4:"يى";s:3:"ﲖ";s:4:"يي";s:3:"ﲗ";s:6:"ئج";s:3:"ﲘ";s:6:"ئح";s:3:"ﲙ";s:6:"ئخ";s:3:"ﲚ";s:6:"ئم";s:3:"ﲛ";s:6:"ئه";s:3:"ﲜ";s:4:"بج";s:3:"ﲝ";s:4:"بح";s:3:"ﲞ";s:4:"بخ";s:3:"ﲟ";s:4:"بم";s:3:"ﲠ";s:4:"به";s:3:"ﲡ";s:4:"تج";s:3:"ﲢ";s:4:"تح";s:3:"ﲣ";s:4:"تخ";s:3:"ﲤ";s:4:"تم";s:3:"ﲥ";s:4:"ته";s:3:"ﲦ";s:4:"ثم";s:3:"ﲧ";s:4:"جح";s:3:"ﲨ";s:4:"جم";s:3:"ﲩ";s:4:"حج";s:3:"ﲪ";s:4:"حم";s:3:"ﲫ";s:4:"خج";s:3:"ﲬ";s:4:"خم";s:3:"ﲭ";s:4:"سج";s:3:"ﲮ";s:4:"سح";s:3:"ﲯ";s:4:"سخ";s:3:"ﲰ";s:4:"سم";s:3:"ﲱ";s:4:"صح";s:3:"ﲲ";s:4:"صخ";s:3:"ﲳ";s:4:"صم";s:3:"ﲴ";s:4:"ضج";s:3:"ﲵ";s:4:"ضح";s:3:"ﲶ";s:4:"ضخ";s:3:"ﲷ";s:4:"ضم";s:3:"ﲸ";s:4:"طح";s:3:"ﲹ";s:4:"ظم";s:3:"ﲺ";s:4:"عج";s:3:"ﲻ";s:4:"عم";s:3:"ﲼ";s:4:"غج";s:3:"ﲽ";s:4:"غم";s:3:"ﲾ";s:4:"فج";s:3:"ﲿ";s:4:"فح";s:3:"ﳀ";s:4:"فخ";s:3:"ﳁ";s:4:"فم";s:3:"ﳂ";s:4:"قح";s:3:"ﳃ";s:4:"قم";s:3:"ﳄ";s:4:"كج";s:3:"ﳅ";s:4:"كح";s:3:"ﳆ";s:4:"كخ";s:3:"ﳇ";s:4:"كل";s:3:"ﳈ";s:4:"كم";s:3:"ﳉ";s:4:"لج";s:3:"ﳊ";s:4:"لح";s:3:"ﳋ";s:4:"لخ";s:3:"ﳌ";s:4:"لم";s:3:"ﳍ";s:4:"له";s:3:"ﳎ";s:4:"مج";s:3:"ﳏ";s:4:"مح";s:3:"ﳐ";s:4:"مخ";s:3:"ﳑ";s:4:"مم";s:3:"ﳒ";s:4:"نج";s:3:"ﳓ";s:4:"نح";s:3:"ﳔ";s:4:"نخ";s:3:"ﳕ";s:4:"نم";s:3:"ﳖ";s:4:"نه";s:3:"ﳗ";s:4:"هج";s:3:"ﳘ";s:4:"هم";s:3:"ﳙ";s:4:"هٰ";s:3:"ﳚ";s:4:"يج";s:3:"ﳛ";s:4:"يح";s:3:"ﳜ";s:4:"يخ";s:3:"ﳝ";s:4:"يم";s:3:"ﳞ";s:4:"يه";s:3:"ﳟ";s:6:"ئم";s:3:"ﳠ";s:6:"ئه";s:3:"ﳡ";s:4:"بم";s:3:"ﳢ";s:4:"به";s:3:"ﳣ";s:4:"تم";s:3:"ﳤ";s:4:"ته";s:3:"ﳥ";s:4:"ثم";s:3:"ﳦ";s:4:"ثه";s:3:"ﳧ";s:4:"سم";s:3:"ﳨ";s:4:"سه";s:3:"ﳩ";s:4:"شم";s:3:"ﳪ";s:4:"شه";s:3:"ﳫ";s:4:"كل";s:3:"ﳬ";s:4:"كم";s:3:"ﳭ";s:4:"لم";s:3:"ﳮ";s:4:"نم";s:3:"ﳯ";s:4:"نه";s:3:"ﳰ";s:4:"يم";s:3:"ﳱ";s:4:"يه";s:3:"ﳲ";s:6:"ـَّ";s:3:"ﳳ";s:6:"ـُّ";s:3:"ﳴ";s:6:"ـِّ";s:3:"ﳵ";s:4:"طى";s:3:"ﳶ";s:4:"طي";s:3:"ﳷ";s:4:"عى";s:3:"ﳸ";s:4:"عي";s:3:"ﳹ";s:4:"غى";s:3:"ﳺ";s:4:"غي";s:3:"ﳻ";s:4:"سى";s:3:"ﳼ";s:4:"سي";s:3:"ﳽ";s:4:"شى";s:3:"ﳾ";s:4:"شي";s:3:"ﳿ";s:4:"حى";s:3:"ﴀ";s:4:"حي";s:3:"ﴁ";s:4:"جى";s:3:"ﴂ";s:4:"جي";s:3:"ﴃ";s:4:"خى";s:3:"ﴄ";s:4:"خي";s:3:"ﴅ";s:4:"صى";s:3:"ﴆ";s:4:"صي";s:3:"ﴇ";s:4:"ضى";s:3:"ﴈ";s:4:"ضي";s:3:"ﴉ";s:4:"شج";s:3:"ﴊ";s:4:"شح";s:3:"ﴋ";s:4:"شخ";s:3:"ﴌ";s:4:"شم";s:3:"ﴍ";s:4:"شر";s:3:"ﴎ";s:4:"سر";s:3:"ﴏ";s:4:"صر";s:3:"ﴐ";s:4:"ضر";s:3:"ﴑ";s:4:"طى";s:3:"ﴒ";s:4:"طي";s:3:"ﴓ";s:4:"عى";s:3:"ﴔ";s:4:"عي";s:3:"ﴕ";s:4:"غى";s:3:"ﴖ";s:4:"غي";s:3:"ﴗ";s:4:"سى";s:3:"ﴘ";s:4:"سي";s:3:"ﴙ";s:4:"شى";s:3:"ﴚ";s:4:"شي";s:3:"ﴛ";s:4:"حى";s:3:"ﴜ";s:4:"حي";s:3:"ﴝ";s:4:"جى";s:3:"ﴞ";s:4:"جي";s:3:"ﴟ";s:4:"خى";s:3:"ﴠ";s:4:"خي";s:3:"ﴡ";s:4:"صى";s:3:"ﴢ";s:4:"صي";s:3:"ﴣ";s:4:"ضى";s:3:"ﴤ";s:4:"ضي";s:3:"ﴥ";s:4:"شج";s:3:"ﴦ";s:4:"شح";s:3:"ﴧ";s:4:"شخ";s:3:"ﴨ";s:4:"شم";s:3:"ﴩ";s:4:"شر";s:3:"ﴪ";s:4:"سر";s:3:"ﴫ";s:4:"صر";s:3:"ﴬ";s:4:"ضر";s:3:"ﴭ";s:4:"شج";s:3:"ﴮ";s:4:"شح";s:3:"ﴯ";s:4:"شخ";s:3:"ﴰ";s:4:"شم";s:3:"ﴱ";s:4:"سه";s:3:"ﴲ";s:4:"شه";s:3:"ﴳ";s:4:"طم";s:3:"ﴴ";s:4:"سج";s:3:"ﴵ";s:4:"سح";s:3:"ﴶ";s:4:"سخ";s:3:"ﴷ";s:4:"شج";s:3:"ﴸ";s:4:"شح";s:3:"ﴹ";s:4:"شخ";s:3:"ﴺ";s:4:"طم";s:3:"ﴻ";s:4:"ظم";s:3:"ﴼ";s:4:"اً";s:3:"ﴽ";s:4:"اً";s:3:"ﵐ";s:6:"تجم";s:3:"ﵑ";s:6:"تحج";s:3:"ﵒ";s:6:"تحج";s:3:"ﵓ";s:6:"تحم";s:3:"ﵔ";s:6:"تخم";s:3:"ﵕ";s:6:"تمج";s:3:"ﵖ";s:6:"تمح";s:3:"ﵗ";s:6:"تمخ";s:3:"ﵘ";s:6:"جمح";s:3:"ﵙ";s:6:"جمح";s:3:"ﵚ";s:6:"حمي";s:3:"ﵛ";s:6:"حمى";s:3:"ﵜ";s:6:"سحج";s:3:"ﵝ";s:6:"سجح";s:3:"ﵞ";s:6:"سجى";s:3:"ﵟ";s:6:"سمح";s:3:"ﵠ";s:6:"سمح";s:3:"ﵡ";s:6:"سمج";s:3:"ﵢ";s:6:"سمم";s:3:"ﵣ";s:6:"سمم";s:3:"ﵤ";s:6:"صحح";s:3:"ﵥ";s:6:"صحح";s:3:"ﵦ";s:6:"صمم";s:3:"ﵧ";s:6:"شحم";s:3:"ﵨ";s:6:"شحم";s:3:"ﵩ";s:6:"شجي";s:3:"ﵪ";s:6:"شمخ";s:3:"ﵫ";s:6:"شمخ";s:3:"ﵬ";s:6:"شمم";s:3:"ﵭ";s:6:"شمم";s:3:"ﵮ";s:6:"ضحى";s:3:"ﵯ";s:6:"ضخم";s:3:"ﵰ";s:6:"ضخم";s:3:"ﵱ";s:6:"طمح";s:3:"ﵲ";s:6:"طمح";s:3:"ﵳ";s:6:"طمم";s:3:"ﵴ";s:6:"طمي";s:3:"ﵵ";s:6:"عجم";s:3:"ﵶ";s:6:"عمم";s:3:"ﵷ";s:6:"عمم";s:3:"ﵸ";s:6:"عمى";s:3:"ﵹ";s:6:"غمم";s:3:"ﵺ";s:6:"غمي";s:3:"ﵻ";s:6:"غمى";s:3:"ﵼ";s:6:"فخم";s:3:"ﵽ";s:6:"فخم";s:3:"ﵾ";s:6:"قمح";s:3:"ﵿ";s:6:"قمم";s:3:"ﶀ";s:6:"لحم";s:3:"ﶁ";s:6:"لحي";s:3:"ﶂ";s:6:"لحى";s:3:"ﶃ";s:6:"لجج";s:3:"ﶄ";s:6:"لجج";s:3:"ﶅ";s:6:"لخم";s:3:"ﶆ";s:6:"لخم";s:3:"ﶇ";s:6:"لمح";s:3:"ﶈ";s:6:"لمح";s:3:"ﶉ";s:6:"محج";s:3:"ﶊ";s:6:"محم";s:3:"ﶋ";s:6:"محي";s:3:"ﶌ";s:6:"مجح";s:3:"ﶍ";s:6:"مجم";s:3:"ﶎ";s:6:"مخج";s:3:"ﶏ";s:6:"مخم";s:3:"ﶒ";s:6:"مجخ";s:3:"ﶓ";s:6:"همج";s:3:"ﶔ";s:6:"همم";s:3:"ﶕ";s:6:"نحم";s:3:"ﶖ";s:6:"نحى";s:3:"ﶗ";s:6:"نجم";s:3:"ﶘ";s:6:"نجم";s:3:"ﶙ";s:6:"نجى";s:3:"ﶚ";s:6:"نمي";s:3:"ﶛ";s:6:"نمى";s:3:"ﶜ";s:6:"يمم";s:3:"ﶝ";s:6:"يمم";s:3:"ﶞ";s:6:"بخي";s:3:"ﶟ";s:6:"تجي";s:3:"ﶠ";s:6:"تجى";s:3:"ﶡ";s:6:"تخي";s:3:"ﶢ";s:6:"تخى";s:3:"ﶣ";s:6:"تمي";s:3:"ﶤ";s:6:"تمى";s:3:"ﶥ";s:6:"جمي";s:3:"ﶦ";s:6:"جحى";s:3:"ﶧ";s:6:"جمى";s:3:"ﶨ";s:6:"سخى";s:3:"ﶩ";s:6:"صحي";s:3:"ﶪ";s:6:"شحي";s:3:"ﶫ";s:6:"ضحي";s:3:"ﶬ";s:6:"لجي";s:3:"ﶭ";s:6:"لمي";s:3:"ﶮ";s:6:"يحي";s:3:"ﶯ";s:6:"يجي";s:3:"ﶰ";s:6:"يمي";s:3:"ﶱ";s:6:"ممي";s:3:"ﶲ";s:6:"قمي";s:3:"ﶳ";s:6:"نحي";s:3:"ﶴ";s:6:"قمح";s:3:"ﶵ";s:6:"لحم";s:3:"ﶶ";s:6:"عمي";s:3:"ﶷ";s:6:"كمي";s:3:"ﶸ";s:6:"نجح";s:3:"ﶹ";s:6:"مخي";s:3:"ﶺ";s:6:"لجم";s:3:"ﶻ";s:6:"كمم";s:3:"ﶼ";s:6:"لجم";s:3:"ﶽ";s:6:"نجح";s:3:"ﶾ";s:6:"جحي";s:3:"ﶿ";s:6:"حجي";s:3:"ﷀ";s:6:"مجي";s:3:"ﷁ";s:6:"فمي";s:3:"ﷂ";s:6:"بحي";s:3:"ﷃ";s:6:"كمم";s:3:"ﷄ";s:6:"عجم";s:3:"ﷅ";s:6:"صمم";s:3:"ﷆ";s:6:"سخي";s:3:"ﷇ";s:6:"نجي";s:3:"ﷰ";s:6:"صلے";s:3:"ﷱ";s:6:"قلے";s:3:"ﷲ";s:8:"الله";s:3:"ﷳ";s:8:"اكبر";s:3:"ﷴ";s:8:"محمد";s:3:"ﷵ";s:8:"صلعم";s:3:"ﷶ";s:8:"رسول";s:3:"ﷷ";s:8:"عليه";s:3:"ﷸ";s:8:"وسلم";s:3:"ﷹ";s:6:"صلى";s:3:"ﷺ";s:33:"صلى الله عليه وسلم";s:3:"ﷻ";s:15:"جل جلاله";s:3:"﷼";s:8:"ریال";s:3:"︐";s:1:",";s:3:"︑";s:3:"、";s:3:"︒";s:3:"。";s:3:"︓";s:1:":";s:3:"︔";s:1:";";s:3:"︕";s:1:"!";s:3:"︖";s:1:"?";s:3:"︗";s:3:"〖";s:3:"︘";s:3:"〗";s:3:"︙";s:3:"...";s:3:"︰";s:2:"..";s:3:"︱";s:3:"—";s:3:"︲";s:3:"–";s:3:"︳";s:1:"_";s:3:"︴";s:1:"_";s:3:"︵";s:1:"(";s:3:"︶";s:1:")";s:3:"︷";s:1:"{";s:3:"︸";s:1:"}";s:3:"︹";s:3:"〔";s:3:"︺";s:3:"〕";s:3:"︻";s:3:"【";s:3:"︼";s:3:"】";s:3:"︽";s:3:"《";s:3:"︾";s:3:"》";s:3:"︿";s:3:"〈";s:3:"﹀";s:3:"〉";s:3:"﹁";s:3:"「";s:3:"﹂";s:3:"」";s:3:"﹃";s:3:"『";s:3:"﹄";s:3:"』";s:3:"﹇";s:1:"[";s:3:"﹈";s:1:"]";s:3:"﹉";s:3:" ̅";s:3:"﹊";s:3:" ̅";s:3:"﹋";s:3:" ̅";s:3:"﹌";s:3:" ̅";s:3:"﹍";s:1:"_";s:3:"﹎";s:1:"_";s:3:"﹏";s:1:"_";s:3:"﹐";s:1:",";s:3:"﹑";s:3:"、";s:3:"﹒";s:1:".";s:3:"﹔";s:1:";";s:3:"﹕";s:1:":";s:3:"﹖";s:1:"?";s:3:"﹗";s:1:"!";s:3:"﹘";s:3:"—";s:3:"﹙";s:1:"(";s:3:"﹚";s:1:")";s:3:"﹛";s:1:"{";s:3:"﹜";s:1:"}";s:3:"﹝";s:3:"〔";s:3:"﹞";s:3:"〕";s:3:"﹟";s:1:"#";s:3:"﹠";s:1:"&";s:3:"﹡";s:1:"*";s:3:"﹢";s:1:"+";s:3:"﹣";s:1:"-";s:3:"﹤";s:1:"<";s:3:"﹥";s:1:">";s:3:"﹦";s:1:"=";s:3:"﹨";s:1:"\\";s:3:"﹩";s:1:"$";s:3:"﹪";s:1:"%";s:3:"﹫";s:1:"@";s:3:"ﹰ";s:3:" ً";s:3:"ﹱ";s:4:"ـً";s:3:"ﹲ";s:3:" ٌ";s:3:"ﹴ";s:3:" ٍ";s:3:"ﹶ";s:3:" َ";s:3:"ﹷ";s:4:"ـَ";s:3:"ﹸ";s:3:" ُ";s:3:"ﹹ";s:4:"ـُ";s:3:"ﹺ";s:3:" ِ";s:3:"ﹻ";s:4:"ـِ";s:3:"ﹼ";s:3:" ّ";s:3:"ﹽ";s:4:"ـّ";s:3:"ﹾ";s:3:" ْ";s:3:"ﹿ";s:4:"ـْ";s:3:"ﺀ";s:2:"ء";s:3:"ﺁ";s:4:"آ";s:3:"ﺂ";s:4:"آ";s:3:"ﺃ";s:4:"أ";s:3:"ﺄ";s:4:"أ";s:3:"ﺅ";s:4:"ؤ";s:3:"ﺆ";s:4:"ؤ";s:3:"ﺇ";s:4:"إ";s:3:"ﺈ";s:4:"إ";s:3:"ﺉ";s:4:"ئ";s:3:"ﺊ";s:4:"ئ";s:3:"ﺋ";s:4:"ئ";s:3:"ﺌ";s:4:"ئ";s:3:"ﺍ";s:2:"ا";s:3:"ﺎ";s:2:"ا";s:3:"ﺏ";s:2:"ب";s:3:"ﺐ";s:2:"ب";s:3:"ﺑ";s:2:"ب";s:3:"ﺒ";s:2:"ب";s:3:"ﺓ";s:2:"ة";s:3:"ﺔ";s:2:"ة";s:3:"ﺕ";s:2:"ت";s:3:"ﺖ";s:2:"ت";s:3:"ﺗ";s:2:"ت";s:3:"ﺘ";s:2:"ت";s:3:"ﺙ";s:2:"ث";s:3:"ﺚ";s:2:"ث";s:3:"ﺛ";s:2:"ث";s:3:"ﺜ";s:2:"ث";s:3:"ﺝ";s:2:"ج";s:3:"ﺞ";s:2:"ج";s:3:"ﺟ";s:2:"ج";s:3:"ﺠ";s:2:"ج";s:3:"ﺡ";s:2:"ح";s:3:"ﺢ";s:2:"ح";s:3:"ﺣ";s:2:"ح";s:3:"ﺤ";s:2:"ح";s:3:"ﺥ";s:2:"خ";s:3:"ﺦ";s:2:"خ";s:3:"ﺧ";s:2:"خ";s:3:"ﺨ";s:2:"خ";s:3:"ﺩ";s:2:"د";s:3:"ﺪ";s:2:"د";s:3:"ﺫ";s:2:"ذ";s:3:"ﺬ";s:2:"ذ";s:3:"ﺭ";s:2:"ر";s:3:"ﺮ";s:2:"ر";s:3:"ﺯ";s:2:"ز";s:3:"ﺰ";s:2:"ز";s:3:"ﺱ";s:2:"س";s:3:"ﺲ";s:2:"س";s:3:"ﺳ";s:2:"س";s:3:"ﺴ";s:2:"س";s:3:"ﺵ";s:2:"ش";s:3:"ﺶ";s:2:"ش";s:3:"ﺷ";s:2:"ش";s:3:"ﺸ";s:2:"ش";s:3:"ﺹ";s:2:"ص";s:3:"ﺺ";s:2:"ص";s:3:"ﺻ";s:2:"ص";s:3:"ﺼ";s:2:"ص";s:3:"ﺽ";s:2:"ض";s:3:"ﺾ";s:2:"ض";s:3:"ﺿ";s:2:"ض";s:3:"ﻀ";s:2:"ض";s:3:"ﻁ";s:2:"ط";s:3:"ﻂ";s:2:"ط";s:3:"ﻃ";s:2:"ط";s:3:"ﻄ";s:2:"ط";s:3:"ﻅ";s:2:"ظ";s:3:"ﻆ";s:2:"ظ";s:3:"ﻇ";s:2:"ظ";s:3:"ﻈ";s:2:"ظ";s:3:"ﻉ";s:2:"ع";s:3:"ﻊ";s:2:"ع";s:3:"ﻋ";s:2:"ع";s:3:"ﻌ";s:2:"ع";s:3:"ﻍ";s:2:"غ";s:3:"ﻎ";s:2:"غ";s:3:"ﻏ";s:2:"غ";s:3:"ﻐ";s:2:"غ";s:3:"ﻑ";s:2:"ف";s:3:"ﻒ";s:2:"ف";s:3:"ﻓ";s:2:"ف";s:3:"ﻔ";s:2:"ف";s:3:"ﻕ";s:2:"ق";s:3:"ﻖ";s:2:"ق";s:3:"ﻗ";s:2:"ق";s:3:"ﻘ";s:2:"ق";s:3:"ﻙ";s:2:"ك";s:3:"ﻚ";s:2:"ك";s:3:"ﻛ";s:2:"ك";s:3:"ﻜ";s:2:"ك";s:3:"ﻝ";s:2:"ل";s:3:"ﻞ";s:2:"ل";s:3:"ﻟ";s:2:"ل";s:3:"ﻠ";s:2:"ل";s:3:"ﻡ";s:2:"م";s:3:"ﻢ";s:2:"م";s:3:"ﻣ";s:2:"م";s:3:"ﻤ";s:2:"م";s:3:"ﻥ";s:2:"ن";s:3:"ﻦ";s:2:"ن";s:3:"ﻧ";s:2:"ن";s:3:"ﻨ";s:2:"ن";s:3:"ﻩ";s:2:"ه";s:3:"ﻪ";s:2:"ه";s:3:"ﻫ";s:2:"ه";s:3:"ﻬ";s:2:"ه";s:3:"ﻭ";s:2:"و";s:3:"ﻮ";s:2:"و";s:3:"ﻯ";s:2:"ى";s:3:"ﻰ";s:2:"ى";s:3:"ﻱ";s:2:"ي";s:3:"ﻲ";s:2:"ي";s:3:"ﻳ";s:2:"ي";s:3:"ﻴ";s:2:"ي";s:3:"ﻵ";s:6:"لآ";s:3:"ﻶ";s:6:"لآ";s:3:"ﻷ";s:6:"لأ";s:3:"ﻸ";s:6:"لأ";s:3:"ﻹ";s:6:"لإ";s:3:"ﻺ";s:6:"لإ";s:3:"ﻻ";s:4:"لا";s:3:"ﻼ";s:4:"لا";s:3:"!";s:1:"!";s:3:""";s:1:""";s:3:"#";s:1:"#";s:3:"$";s:1:"$";s:3:"%";s:1:"%";s:3:"&";s:1:"&";s:3:"'";s:1:"\'";s:3:"(";s:1:"(";s:3:")";s:1:")";s:3:"*";s:1:"*";s:3:"+";s:1:"+";s:3:",";s:1:",";s:3:"-";s:1:"-";s:3:".";s:1:".";s:3:"/";s:1:"/";s:3:"0";s:1:"0";s:3:"1";s:1:"1";s:3:"2";s:1:"2";s:3:"3";s:1:"3";s:3:"4";s:1:"4";s:3:"5";s:1:"5";s:3:"6";s:1:"6";s:3:"7";s:1:"7";s:3:"8";s:1:"8";s:3:"9";s:1:"9";s:3:":";s:1:":";s:3:";";s:1:";";s:3:"<";s:1:"<";s:3:"=";s:1:"=";s:3:">";s:1:">";s:3:"?";s:1:"?";s:3:"@";s:1:"@";s:3:"A";s:1:"A";s:3:"B";s:1:"B";s:3:"C";s:1:"C";s:3:"D";s:1:"D";s:3:"E";s:1:"E";s:3:"F";s:1:"F";s:3:"G";s:1:"G";s:3:"H";s:1:"H";s:3:"I";s:1:"I";s:3:"J";s:1:"J";s:3:"K";s:1:"K";s:3:"L";s:1:"L";s:3:"M";s:1:"M";s:3:"N";s:1:"N";s:3:"O";s:1:"O";s:3:"P";s:1:"P";s:3:"Q";s:1:"Q";s:3:"R";s:1:"R";s:3:"S";s:1:"S";s:3:"T";s:1:"T";s:3:"U";s:1:"U";s:3:"V";s:1:"V";s:3:"W";s:1:"W";s:3:"X";s:1:"X";s:3:"Y";s:1:"Y";s:3:"Z";s:1:"Z";s:3:"[";s:1:"[";s:3:"\";s:1:"\\";s:3:"]";s:1:"]";s:3:"^";s:1:"^";s:3:"_";s:1:"_";s:3:"`";s:1:"`";s:3:"a";s:1:"a";s:3:"b";s:1:"b";s:3:"c";s:1:"c";s:3:"d";s:1:"d";s:3:"e";s:1:"e";s:3:"f";s:1:"f";s:3:"g";s:1:"g";s:3:"h";s:1:"h";s:3:"i";s:1:"i";s:3:"j";s:1:"j";s:3:"k";s:1:"k";s:3:"l";s:1:"l";s:3:"m";s:1:"m";s:3:"n";s:1:"n";s:3:"o";s:1:"o";s:3:"p";s:1:"p";s:3:"q";s:1:"q";s:3:"r";s:1:"r";s:3:"s";s:1:"s";s:3:"t";s:1:"t";s:3:"u";s:1:"u";s:3:"v";s:1:"v";s:3:"w";s:1:"w";s:3:"x";s:1:"x";s:3:"y";s:1:"y";s:3:"z";s:1:"z";s:3:"{";s:1:"{";s:3:"|";s:1:"|";s:3:"}";s:1:"}";s:3:"~";s:1:"~";s:3:"⦅";s:3:"⦅";s:3:"⦆";s:3:"⦆";s:3:"。";s:3:"。";s:3:"「";s:3:"「";s:3:"」";s:3:"」";s:3:"、";s:3:"、";s:3:"・";s:3:"・";s:3:"ヲ";s:3:"ヲ";s:3:"ァ";s:3:"ァ";s:3:"ィ";s:3:"ィ";s:3:"ゥ";s:3:"ゥ";s:3:"ェ";s:3:"ェ";s:3:"ォ";s:3:"ォ";s:3:"ャ";s:3:"ャ";s:3:"ュ";s:3:"ュ";s:3:"ョ";s:3:"ョ";s:3:"ッ";s:3:"ッ";s:3:"ー";s:3:"ー";s:3:"ア";s:3:"ア";s:3:"イ";s:3:"イ";s:3:"ウ";s:3:"ウ";s:3:"エ";s:3:"エ";s:3:"オ";s:3:"オ";s:3:"カ";s:3:"カ";s:3:"キ";s:3:"キ";s:3:"ク";s:3:"ク";s:3:"ケ";s:3:"ケ";s:3:"コ";s:3:"コ";s:3:"サ";s:3:"サ";s:3:"シ";s:3:"シ";s:3:"ス";s:3:"ス";s:3:"セ";s:3:"セ";s:3:"ソ";s:3:"ソ";s:3:"タ";s:3:"タ";s:3:"チ";s:3:"チ";s:3:"ツ";s:3:"ツ";s:3:"テ";s:3:"テ";s:3:"ト";s:3:"ト";s:3:"ナ";s:3:"ナ";s:3:"ニ";s:3:"ニ";s:3:"ヌ";s:3:"ヌ";s:3:"ネ";s:3:"ネ";s:3:"ノ";s:3:"ノ";s:3:"ハ";s:3:"ハ";s:3:"ヒ";s:3:"ヒ";s:3:"フ";s:3:"フ";s:3:"ヘ";s:3:"ヘ";s:3:"ホ";s:3:"ホ";s:3:"マ";s:3:"マ";s:3:"ミ";s:3:"ミ";s:3:"ム";s:3:"ム";s:3:"メ";s:3:"メ";s:3:"モ";s:3:"モ";s:3:"ヤ";s:3:"ヤ";s:3:"ユ";s:3:"ユ";s:3:"ヨ";s:3:"ヨ";s:3:"ラ";s:3:"ラ";s:3:"リ";s:3:"リ";s:3:"ル";s:3:"ル";s:3:"レ";s:3:"レ";s:3:"ロ";s:3:"ロ";s:3:"ワ";s:3:"ワ";s:3:"ン";s:3:"ン";s:3:"゙";s:3:"゙";s:3:"゚";s:3:"゚";s:3:"ᅠ";s:3:"ᅠ";s:3:"ᄀ";s:3:"ᄀ";s:3:"ᄁ";s:3:"ᄁ";s:3:"ᆪ";s:3:"ᆪ";s:3:"ᄂ";s:3:"ᄂ";s:3:"ᆬ";s:3:"ᆬ";s:3:"ᆭ";s:3:"ᆭ";s:3:"ᄃ";s:3:"ᄃ";s:3:"ᄄ";s:3:"ᄄ";s:3:"ᄅ";s:3:"ᄅ";s:3:"ᆰ";s:3:"ᆰ";s:3:"ᆱ";s:3:"ᆱ";s:3:"ᆲ";s:3:"ᆲ";s:3:"ᆳ";s:3:"ᆳ";s:3:"ᆴ";s:3:"ᆴ";s:3:"ᆵ";s:3:"ᆵ";s:3:"ᄚ";s:3:"ᄚ";s:3:"ᄆ";s:3:"ᄆ";s:3:"ᄇ";s:3:"ᄇ";s:3:"ᄈ";s:3:"ᄈ";s:3:"ᄡ";s:3:"ᄡ";s:3:"ᄉ";s:3:"ᄉ";s:3:"ᄊ";s:3:"ᄊ";s:3:"ᄋ";s:3:"ᄋ";s:3:"ᄌ";s:3:"ᄌ";s:3:"ᄍ";s:3:"ᄍ";s:3:"ᄎ";s:3:"ᄎ";s:3:"ᄏ";s:3:"ᄏ";s:3:"ᄐ";s:3:"ᄐ";s:3:"ᄑ";s:3:"ᄑ";s:3:"ᄒ";s:3:"ᄒ";s:3:"ᅡ";s:3:"ᅡ";s:3:"ᅢ";s:3:"ᅢ";s:3:"ᅣ";s:3:"ᅣ";s:3:"ᅤ";s:3:"ᅤ";s:3:"ᅥ";s:3:"ᅥ";s:3:"ᅦ";s:3:"ᅦ";s:3:"ᅧ";s:3:"ᅧ";s:3:"ᅨ";s:3:"ᅨ";s:3:"ᅩ";s:3:"ᅩ";s:3:"ᅪ";s:3:"ᅪ";s:3:"ᅫ";s:3:"ᅫ";s:3:"ᅬ";s:3:"ᅬ";s:3:"ᅭ";s:3:"ᅭ";s:3:"ᅮ";s:3:"ᅮ";s:3:"ᅯ";s:3:"ᅯ";s:3:"ᅰ";s:3:"ᅰ";s:3:"ᅱ";s:3:"ᅱ";s:3:"ᅲ";s:3:"ᅲ";s:3:"ᅳ";s:3:"ᅳ";s:3:"ᅴ";s:3:"ᅴ";s:3:"ᅵ";s:3:"ᅵ";s:3:"¢";s:2:"¢";s:3:"£";s:2:"£";s:3:"¬";s:2:"¬";s:3:" ̄";s:3:" ̄";s:3:"¦";s:2:"¦";s:3:"¥";s:2:"¥";s:3:"₩";s:3:"₩";s:3:"│";s:3:"│";s:3:"←";s:3:"←";s:3:"↑";s:3:"↑";s:3:"→";s:3:"→";s:3:"↓";s:3:"↓";s:3:"■";s:3:"■";s:3:"○";s:3:"○";s:4:"𝅗𝅥";s:8:"𝅗𝅥";s:4:"𝅘𝅥";s:8:"𝅘𝅥";s:4:"𝅘𝅥𝅮";s:12:"𝅘𝅥𝅮";s:4:"𝅘𝅥𝅯";s:12:"𝅘𝅥𝅯";s:4:"𝅘𝅥𝅰";s:12:"𝅘𝅥𝅰";s:4:"𝅘𝅥𝅱";s:12:"𝅘𝅥𝅱";s:4:"𝅘𝅥𝅲";s:12:"𝅘𝅥𝅲";s:4:"𝆹𝅥";s:8:"𝆹𝅥";s:4:"𝆺𝅥";s:8:"𝆺𝅥";s:4:"𝆹𝅥𝅮";s:12:"𝆹𝅥𝅮";s:4:"𝆺𝅥𝅮";s:12:"𝆺𝅥𝅮";s:4:"𝆹𝅥𝅯";s:12:"𝆹𝅥𝅯";s:4:"𝆺𝅥𝅯";s:12:"𝆺𝅥𝅯";s:4:"𝐀";s:1:"A";s:4:"𝐁";s:1:"B";s:4:"𝐂";s:1:"C";s:4:"𝐃";s:1:"D";s:4:"𝐄";s:1:"E";s:4:"𝐅";s:1:"F";s:4:"𝐆";s:1:"G";s:4:"𝐇";s:1:"H";s:4:"𝐈";s:1:"I";s:4:"𝐉";s:1:"J";s:4:"𝐊";s:1:"K";s:4:"𝐋";s:1:"L";s:4:"𝐌";s:1:"M";s:4:"𝐍";s:1:"N";s:4:"𝐎";s:1:"O";s:4:"𝐏";s:1:"P";s:4:"𝐐";s:1:"Q";s:4:"𝐑";s:1:"R";s:4:"𝐒";s:1:"S";s:4:"𝐓";s:1:"T";s:4:"𝐔";s:1:"U";s:4:"𝐕";s:1:"V";s:4:"𝐖";s:1:"W";s:4:"𝐗";s:1:"X";s:4:"𝐘";s:1:"Y";s:4:"𝐙";s:1:"Z";s:4:"𝐚";s:1:"a";s:4:"𝐛";s:1:"b";s:4:"𝐜";s:1:"c";s:4:"𝐝";s:1:"d";s:4:"𝐞";s:1:"e";s:4:"𝐟";s:1:"f";s:4:"𝐠";s:1:"g";s:4:"𝐡";s:1:"h";s:4:"𝐢";s:1:"i";s:4:"𝐣";s:1:"j";s:4:"𝐤";s:1:"k";s:4:"𝐥";s:1:"l";s:4:"𝐦";s:1:"m";s:4:"𝐧";s:1:"n";s:4:"𝐨";s:1:"o";s:4:"𝐩";s:1:"p";s:4:"𝐪";s:1:"q";s:4:"𝐫";s:1:"r";s:4:"𝐬";s:1:"s";s:4:"𝐭";s:1:"t";s:4:"𝐮";s:1:"u";s:4:"𝐯";s:1:"v";s:4:"𝐰";s:1:"w";s:4:"𝐱";s:1:"x";s:4:"𝐲";s:1:"y";s:4:"𝐳";s:1:"z";s:4:"𝐴";s:1:"A";s:4:"𝐵";s:1:"B";s:4:"𝐶";s:1:"C";s:4:"𝐷";s:1:"D";s:4:"𝐸";s:1:"E";s:4:"𝐹";s:1:"F";s:4:"𝐺";s:1:"G";s:4:"𝐻";s:1:"H";s:4:"𝐼";s:1:"I";s:4:"𝐽";s:1:"J";s:4:"𝐾";s:1:"K";s:4:"𝐿";s:1:"L";s:4:"𝑀";s:1:"M";s:4:"𝑁";s:1:"N";s:4:"𝑂";s:1:"O";s:4:"𝑃";s:1:"P";s:4:"𝑄";s:1:"Q";s:4:"𝑅";s:1:"R";s:4:"𝑆";s:1:"S";s:4:"𝑇";s:1:"T";s:4:"𝑈";s:1:"U";s:4:"𝑉";s:1:"V";s:4:"𝑊";s:1:"W";s:4:"𝑋";s:1:"X";s:4:"𝑌";s:1:"Y";s:4:"𝑍";s:1:"Z";s:4:"𝑎";s:1:"a";s:4:"𝑏";s:1:"b";s:4:"𝑐";s:1:"c";s:4:"𝑑";s:1:"d";s:4:"𝑒";s:1:"e";s:4:"𝑓";s:1:"f";s:4:"𝑔";s:1:"g";s:4:"𝑖";s:1:"i";s:4:"𝑗";s:1:"j";s:4:"𝑘";s:1:"k";s:4:"𝑙";s:1:"l";s:4:"𝑚";s:1:"m";s:4:"𝑛";s:1:"n";s:4:"𝑜";s:1:"o";s:4:"𝑝";s:1:"p";s:4:"𝑞";s:1:"q";s:4:"𝑟";s:1:"r";s:4:"𝑠";s:1:"s";s:4:"𝑡";s:1:"t";s:4:"𝑢";s:1:"u";s:4:"𝑣";s:1:"v";s:4:"𝑤";s:1:"w";s:4:"𝑥";s:1:"x";s:4:"𝑦";s:1:"y";s:4:"𝑧";s:1:"z";s:4:"𝑨";s:1:"A";s:4:"𝑩";s:1:"B";s:4:"𝑪";s:1:"C";s:4:"𝑫";s:1:"D";s:4:"𝑬";s:1:"E";s:4:"𝑭";s:1:"F";s:4:"𝑮";s:1:"G";s:4:"𝑯";s:1:"H";s:4:"𝑰";s:1:"I";s:4:"𝑱";s:1:"J";s:4:"𝑲";s:1:"K";s:4:"𝑳";s:1:"L";s:4:"𝑴";s:1:"M";s:4:"𝑵";s:1:"N";s:4:"𝑶";s:1:"O";s:4:"𝑷";s:1:"P";s:4:"𝑸";s:1:"Q";s:4:"𝑹";s:1:"R";s:4:"𝑺";s:1:"S";s:4:"𝑻";s:1:"T";s:4:"𝑼";s:1:"U";s:4:"𝑽";s:1:"V";s:4:"𝑾";s:1:"W";s:4:"𝑿";s:1:"X";s:4:"𝒀";s:1:"Y";s:4:"𝒁";s:1:"Z";s:4:"𝒂";s:1:"a";s:4:"𝒃";s:1:"b";s:4:"𝒄";s:1:"c";s:4:"𝒅";s:1:"d";s:4:"𝒆";s:1:"e";s:4:"𝒇";s:1:"f";s:4:"𝒈";s:1:"g";s:4:"𝒉";s:1:"h";s:4:"𝒊";s:1:"i";s:4:"𝒋";s:1:"j";s:4:"𝒌";s:1:"k";s:4:"𝒍";s:1:"l";s:4:"𝒎";s:1:"m";s:4:"𝒏";s:1:"n";s:4:"𝒐";s:1:"o";s:4:"𝒑";s:1:"p";s:4:"𝒒";s:1:"q";s:4:"𝒓";s:1:"r";s:4:"𝒔";s:1:"s";s:4:"𝒕";s:1:"t";s:4:"𝒖";s:1:"u";s:4:"𝒗";s:1:"v";s:4:"𝒘";s:1:"w";s:4:"𝒙";s:1:"x";s:4:"𝒚";s:1:"y";s:4:"𝒛";s:1:"z";s:4:"𝒜";s:1:"A";s:4:"𝒞";s:1:"C";s:4:"𝒟";s:1:"D";s:4:"𝒢";s:1:"G";s:4:"𝒥";s:1:"J";s:4:"𝒦";s:1:"K";s:4:"𝒩";s:1:"N";s:4:"𝒪";s:1:"O";s:4:"𝒫";s:1:"P";s:4:"𝒬";s:1:"Q";s:4:"𝒮";s:1:"S";s:4:"𝒯";s:1:"T";s:4:"𝒰";s:1:"U";s:4:"𝒱";s:1:"V";s:4:"𝒲";s:1:"W";s:4:"𝒳";s:1:"X";s:4:"𝒴";s:1:"Y";s:4:"𝒵";s:1:"Z";s:4:"𝒶";s:1:"a";s:4:"𝒷";s:1:"b";s:4:"𝒸";s:1:"c";s:4:"𝒹";s:1:"d";s:4:"𝒻";s:1:"f";s:4:"𝒽";s:1:"h";s:4:"𝒾";s:1:"i";s:4:"𝒿";s:1:"j";s:4:"𝓀";s:1:"k";s:4:"𝓁";s:1:"l";s:4:"𝓂";s:1:"m";s:4:"𝓃";s:1:"n";s:4:"𝓅";s:1:"p";s:4:"𝓆";s:1:"q";s:4:"𝓇";s:1:"r";s:4:"𝓈";s:1:"s";s:4:"𝓉";s:1:"t";s:4:"𝓊";s:1:"u";s:4:"𝓋";s:1:"v";s:4:"𝓌";s:1:"w";s:4:"𝓍";s:1:"x";s:4:"𝓎";s:1:"y";s:4:"𝓏";s:1:"z";s:4:"𝓐";s:1:"A";s:4:"𝓑";s:1:"B";s:4:"𝓒";s:1:"C";s:4:"𝓓";s:1:"D";s:4:"𝓔";s:1:"E";s:4:"𝓕";s:1:"F";s:4:"𝓖";s:1:"G";s:4:"𝓗";s:1:"H";s:4:"𝓘";s:1:"I";s:4:"𝓙";s:1:"J";s:4:"𝓚";s:1:"K";s:4:"𝓛";s:1:"L";s:4:"𝓜";s:1:"M";s:4:"𝓝";s:1:"N";s:4:"𝓞";s:1:"O";s:4:"𝓟";s:1:"P";s:4:"𝓠";s:1:"Q";s:4:"𝓡";s:1:"R";s:4:"𝓢";s:1:"S";s:4:"𝓣";s:1:"T";s:4:"𝓤";s:1:"U";s:4:"𝓥";s:1:"V";s:4:"𝓦";s:1:"W";s:4:"𝓧";s:1:"X";s:4:"𝓨";s:1:"Y";s:4:"𝓩";s:1:"Z";s:4:"𝓪";s:1:"a";s:4:"𝓫";s:1:"b";s:4:"𝓬";s:1:"c";s:4:"𝓭";s:1:"d";s:4:"𝓮";s:1:"e";s:4:"𝓯";s:1:"f";s:4:"𝓰";s:1:"g";s:4:"𝓱";s:1:"h";s:4:"𝓲";s:1:"i";s:4:"𝓳";s:1:"j";s:4:"𝓴";s:1:"k";s:4:"𝓵";s:1:"l";s:4:"𝓶";s:1:"m";s:4:"𝓷";s:1:"n";s:4:"𝓸";s:1:"o";s:4:"𝓹";s:1:"p";s:4:"𝓺";s:1:"q";s:4:"𝓻";s:1:"r";s:4:"𝓼";s:1:"s";s:4:"𝓽";s:1:"t";s:4:"𝓾";s:1:"u";s:4:"𝓿";s:1:"v";s:4:"𝔀";s:1:"w";s:4:"𝔁";s:1:"x";s:4:"𝔂";s:1:"y";s:4:"𝔃";s:1:"z";s:4:"𝔄";s:1:"A";s:4:"𝔅";s:1:"B";s:4:"𝔇";s:1:"D";s:4:"𝔈";s:1:"E";s:4:"𝔉";s:1:"F";s:4:"𝔊";s:1:"G";s:4:"𝔍";s:1:"J";s:4:"𝔎";s:1:"K";s:4:"𝔏";s:1:"L";s:4:"𝔐";s:1:"M";s:4:"𝔑";s:1:"N";s:4:"𝔒";s:1:"O";s:4:"𝔓";s:1:"P";s:4:"𝔔";s:1:"Q";s:4:"𝔖";s:1:"S";s:4:"𝔗";s:1:"T";s:4:"𝔘";s:1:"U";s:4:"𝔙";s:1:"V";s:4:"𝔚";s:1:"W";s:4:"𝔛";s:1:"X";s:4:"𝔜";s:1:"Y";s:4:"𝔞";s:1:"a";s:4:"𝔟";s:1:"b";s:4:"𝔠";s:1:"c";s:4:"𝔡";s:1:"d";s:4:"𝔢";s:1:"e";s:4:"𝔣";s:1:"f";s:4:"𝔤";s:1:"g";s:4:"𝔥";s:1:"h";s:4:"𝔦";s:1:"i";s:4:"𝔧";s:1:"j";s:4:"𝔨";s:1:"k";s:4:"𝔩";s:1:"l";s:4:"𝔪";s:1:"m";s:4:"𝔫";s:1:"n";s:4:"𝔬";s:1:"o";s:4:"𝔭";s:1:"p";s:4:"𝔮";s:1:"q";s:4:"𝔯";s:1:"r";s:4:"𝔰";s:1:"s";s:4:"𝔱";s:1:"t";s:4:"𝔲";s:1:"u";s:4:"𝔳";s:1:"v";s:4:"𝔴";s:1:"w";s:4:"𝔵";s:1:"x";s:4:"𝔶";s:1:"y";s:4:"𝔷";s:1:"z";s:4:"𝔸";s:1:"A";s:4:"𝔹";s:1:"B";s:4:"𝔻";s:1:"D";s:4:"𝔼";s:1:"E";s:4:"𝔽";s:1:"F";s:4:"𝔾";s:1:"G";s:4:"𝕀";s:1:"I";s:4:"𝕁";s:1:"J";s:4:"𝕂";s:1:"K";s:4:"𝕃";s:1:"L";s:4:"𝕄";s:1:"M";s:4:"𝕆";s:1:"O";s:4:"𝕊";s:1:"S";s:4:"𝕋";s:1:"T";s:4:"𝕌";s:1:"U";s:4:"𝕍";s:1:"V";s:4:"𝕎";s:1:"W";s:4:"𝕏";s:1:"X";s:4:"𝕐";s:1:"Y";s:4:"𝕒";s:1:"a";s:4:"𝕓";s:1:"b";s:4:"𝕔";s:1:"c";s:4:"𝕕";s:1:"d";s:4:"𝕖";s:1:"e";s:4:"𝕗";s:1:"f";s:4:"𝕘";s:1:"g";s:4:"𝕙";s:1:"h";s:4:"𝕚";s:1:"i";s:4:"𝕛";s:1:"j";s:4:"𝕜";s:1:"k";s:4:"𝕝";s:1:"l";s:4:"𝕞";s:1:"m";s:4:"𝕟";s:1:"n";s:4:"𝕠";s:1:"o";s:4:"𝕡";s:1:"p";s:4:"𝕢";s:1:"q";s:4:"𝕣";s:1:"r";s:4:"𝕤";s:1:"s";s:4:"𝕥";s:1:"t";s:4:"𝕦";s:1:"u";s:4:"𝕧";s:1:"v";s:4:"𝕨";s:1:"w";s:4:"𝕩";s:1:"x";s:4:"𝕪";s:1:"y";s:4:"𝕫";s:1:"z";s:4:"𝕬";s:1:"A";s:4:"𝕭";s:1:"B";s:4:"𝕮";s:1:"C";s:4:"𝕯";s:1:"D";s:4:"𝕰";s:1:"E";s:4:"𝕱";s:1:"F";s:4:"𝕲";s:1:"G";s:4:"𝕳";s:1:"H";s:4:"𝕴";s:1:"I";s:4:"𝕵";s:1:"J";s:4:"𝕶";s:1:"K";s:4:"𝕷";s:1:"L";s:4:"𝕸";s:1:"M";s:4:"𝕹";s:1:"N";s:4:"𝕺";s:1:"O";s:4:"𝕻";s:1:"P";s:4:"𝕼";s:1:"Q";s:4:"𝕽";s:1:"R";s:4:"𝕾";s:1:"S";s:4:"𝕿";s:1:"T";s:4:"𝖀";s:1:"U";s:4:"𝖁";s:1:"V";s:4:"𝖂";s:1:"W";s:4:"𝖃";s:1:"X";s:4:"𝖄";s:1:"Y";s:4:"𝖅";s:1:"Z";s:4:"𝖆";s:1:"a";s:4:"𝖇";s:1:"b";s:4:"𝖈";s:1:"c";s:4:"𝖉";s:1:"d";s:4:"𝖊";s:1:"e";s:4:"𝖋";s:1:"f";s:4:"𝖌";s:1:"g";s:4:"𝖍";s:1:"h";s:4:"𝖎";s:1:"i";s:4:"𝖏";s:1:"j";s:4:"𝖐";s:1:"k";s:4:"𝖑";s:1:"l";s:4:"𝖒";s:1:"m";s:4:"𝖓";s:1:"n";s:4:"𝖔";s:1:"o";s:4:"𝖕";s:1:"p";s:4:"𝖖";s:1:"q";s:4:"𝖗";s:1:"r";s:4:"𝖘";s:1:"s";s:4:"𝖙";s:1:"t";s:4:"𝖚";s:1:"u";s:4:"𝖛";s:1:"v";s:4:"𝖜";s:1:"w";s:4:"𝖝";s:1:"x";s:4:"𝖞";s:1:"y";s:4:"𝖟";s:1:"z";s:4:"𝖠";s:1:"A";s:4:"𝖡";s:1:"B";s:4:"𝖢";s:1:"C";s:4:"𝖣";s:1:"D";s:4:"𝖤";s:1:"E";s:4:"𝖥";s:1:"F";s:4:"𝖦";s:1:"G";s:4:"𝖧";s:1:"H";s:4:"𝖨";s:1:"I";s:4:"𝖩";s:1:"J";s:4:"𝖪";s:1:"K";s:4:"𝖫";s:1:"L";s:4:"𝖬";s:1:"M";s:4:"𝖭";s:1:"N";s:4:"𝖮";s:1:"O";s:4:"𝖯";s:1:"P";s:4:"𝖰";s:1:"Q";s:4:"𝖱";s:1:"R";s:4:"𝖲";s:1:"S";s:4:"𝖳";s:1:"T";s:4:"𝖴";s:1:"U";s:4:"𝖵";s:1:"V";s:4:"𝖶";s:1:"W";s:4:"𝖷";s:1:"X";s:4:"𝖸";s:1:"Y";s:4:"𝖹";s:1:"Z";s:4:"𝖺";s:1:"a";s:4:"𝖻";s:1:"b";s:4:"𝖼";s:1:"c";s:4:"𝖽";s:1:"d";s:4:"𝖾";s:1:"e";s:4:"𝖿";s:1:"f";s:4:"𝗀";s:1:"g";s:4:"𝗁";s:1:"h";s:4:"𝗂";s:1:"i";s:4:"𝗃";s:1:"j";s:4:"𝗄";s:1:"k";s:4:"𝗅";s:1:"l";s:4:"𝗆";s:1:"m";s:4:"𝗇";s:1:"n";s:4:"𝗈";s:1:"o";s:4:"𝗉";s:1:"p";s:4:"𝗊";s:1:"q";s:4:"𝗋";s:1:"r";s:4:"𝗌";s:1:"s";s:4:"𝗍";s:1:"t";s:4:"𝗎";s:1:"u";s:4:"𝗏";s:1:"v";s:4:"𝗐";s:1:"w";s:4:"𝗑";s:1:"x";s:4:"𝗒";s:1:"y";s:4:"𝗓";s:1:"z";s:4:"𝗔";s:1:"A";s:4:"𝗕";s:1:"B";s:4:"𝗖";s:1:"C";s:4:"𝗗";s:1:"D";s:4:"𝗘";s:1:"E";s:4:"𝗙";s:1:"F";s:4:"𝗚";s:1:"G";s:4:"𝗛";s:1:"H";s:4:"𝗜";s:1:"I";s:4:"𝗝";s:1:"J";s:4:"𝗞";s:1:"K";s:4:"𝗟";s:1:"L";s:4:"𝗠";s:1:"M";s:4:"𝗡";s:1:"N";s:4:"𝗢";s:1:"O";s:4:"𝗣";s:1:"P";s:4:"𝗤";s:1:"Q";s:4:"𝗥";s:1:"R";s:4:"𝗦";s:1:"S";s:4:"𝗧";s:1:"T";s:4:"𝗨";s:1:"U";s:4:"𝗩";s:1:"V";s:4:"𝗪";s:1:"W";s:4:"𝗫";s:1:"X";s:4:"𝗬";s:1:"Y";s:4:"𝗭";s:1:"Z";s:4:"𝗮";s:1:"a";s:4:"𝗯";s:1:"b";s:4:"𝗰";s:1:"c";s:4:"𝗱";s:1:"d";s:4:"𝗲";s:1:"e";s:4:"𝗳";s:1:"f";s:4:"𝗴";s:1:"g";s:4:"𝗵";s:1:"h";s:4:"𝗶";s:1:"i";s:4:"𝗷";s:1:"j";s:4:"𝗸";s:1:"k";s:4:"𝗹";s:1:"l";s:4:"𝗺";s:1:"m";s:4:"𝗻";s:1:"n";s:4:"𝗼";s:1:"o";s:4:"𝗽";s:1:"p";s:4:"𝗾";s:1:"q";s:4:"𝗿";s:1:"r";s:4:"𝘀";s:1:"s";s:4:"𝘁";s:1:"t";s:4:"𝘂";s:1:"u";s:4:"𝘃";s:1:"v";s:4:"𝘄";s:1:"w";s:4:"𝘅";s:1:"x";s:4:"𝘆";s:1:"y";s:4:"𝘇";s:1:"z";s:4:"𝘈";s:1:"A";s:4:"𝘉";s:1:"B";s:4:"𝘊";s:1:"C";s:4:"𝘋";s:1:"D";s:4:"𝘌";s:1:"E";s:4:"𝘍";s:1:"F";s:4:"𝘎";s:1:"G";s:4:"𝘏";s:1:"H";s:4:"𝘐";s:1:"I";s:4:"𝘑";s:1:"J";s:4:"𝘒";s:1:"K";s:4:"𝘓";s:1:"L";s:4:"𝘔";s:1:"M";s:4:"𝘕";s:1:"N";s:4:"𝘖";s:1:"O";s:4:"𝘗";s:1:"P";s:4:"𝘘";s:1:"Q";s:4:"𝘙";s:1:"R";s:4:"𝘚";s:1:"S";s:4:"𝘛";s:1:"T";s:4:"𝘜";s:1:"U";s:4:"𝘝";s:1:"V";s:4:"𝘞";s:1:"W";s:4:"𝘟";s:1:"X";s:4:"𝘠";s:1:"Y";s:4:"𝘡";s:1:"Z";s:4:"𝘢";s:1:"a";s:4:"𝘣";s:1:"b";s:4:"𝘤";s:1:"c";s:4:"𝘥";s:1:"d";s:4:"𝘦";s:1:"e";s:4:"𝘧";s:1:"f";s:4:"𝘨";s:1:"g";s:4:"𝘩";s:1:"h";s:4:"𝘪";s:1:"i";s:4:"𝘫";s:1:"j";s:4:"𝘬";s:1:"k";s:4:"𝘭";s:1:"l";s:4:"𝘮";s:1:"m";s:4:"𝘯";s:1:"n";s:4:"𝘰";s:1:"o";s:4:"𝘱";s:1:"p";s:4:"𝘲";s:1:"q";s:4:"𝘳";s:1:"r";s:4:"𝘴";s:1:"s";s:4:"𝘵";s:1:"t";s:4:"𝘶";s:1:"u";s:4:"𝘷";s:1:"v";s:4:"𝘸";s:1:"w";s:4:"𝘹";s:1:"x";s:4:"𝘺";s:1:"y";s:4:"𝘻";s:1:"z";s:4:"𝘼";s:1:"A";s:4:"𝘽";s:1:"B";s:4:"𝘾";s:1:"C";s:4:"𝘿";s:1:"D";s:4:"𝙀";s:1:"E";s:4:"𝙁";s:1:"F";s:4:"𝙂";s:1:"G";s:4:"𝙃";s:1:"H";s:4:"𝙄";s:1:"I";s:4:"𝙅";s:1:"J";s:4:"𝙆";s:1:"K";s:4:"𝙇";s:1:"L";s:4:"𝙈";s:1:"M";s:4:"𝙉";s:1:"N";s:4:"𝙊";s:1:"O";s:4:"𝙋";s:1:"P";s:4:"𝙌";s:1:"Q";s:4:"𝙍";s:1:"R";s:4:"𝙎";s:1:"S";s:4:"𝙏";s:1:"T";s:4:"𝙐";s:1:"U";s:4:"𝙑";s:1:"V";s:4:"𝙒";s:1:"W";s:4:"𝙓";s:1:"X";s:4:"𝙔";s:1:"Y";s:4:"𝙕";s:1:"Z";s:4:"𝙖";s:1:"a";s:4:"𝙗";s:1:"b";s:4:"𝙘";s:1:"c";s:4:"𝙙";s:1:"d";s:4:"𝙚";s:1:"e";s:4:"𝙛";s:1:"f";s:4:"𝙜";s:1:"g";s:4:"𝙝";s:1:"h";s:4:"𝙞";s:1:"i";s:4:"𝙟";s:1:"j";s:4:"𝙠";s:1:"k";s:4:"𝙡";s:1:"l";s:4:"𝙢";s:1:"m";s:4:"𝙣";s:1:"n";s:4:"𝙤";s:1:"o";s:4:"𝙥";s:1:"p";s:4:"𝙦";s:1:"q";s:4:"𝙧";s:1:"r";s:4:"𝙨";s:1:"s";s:4:"𝙩";s:1:"t";s:4:"𝙪";s:1:"u";s:4:"𝙫";s:1:"v";s:4:"𝙬";s:1:"w";s:4:"𝙭";s:1:"x";s:4:"𝙮";s:1:"y";s:4:"𝙯";s:1:"z";s:4:"𝙰";s:1:"A";s:4:"𝙱";s:1:"B";s:4:"𝙲";s:1:"C";s:4:"𝙳";s:1:"D";s:4:"𝙴";s:1:"E";s:4:"𝙵";s:1:"F";s:4:"𝙶";s:1:"G";s:4:"𝙷";s:1:"H";s:4:"𝙸";s:1:"I";s:4:"𝙹";s:1:"J";s:4:"𝙺";s:1:"K";s:4:"𝙻";s:1:"L";s:4:"𝙼";s:1:"M";s:4:"𝙽";s:1:"N";s:4:"𝙾";s:1:"O";s:4:"𝙿";s:1:"P";s:4:"𝚀";s:1:"Q";s:4:"𝚁";s:1:"R";s:4:"𝚂";s:1:"S";s:4:"𝚃";s:1:"T";s:4:"𝚄";s:1:"U";s:4:"𝚅";s:1:"V";s:4:"𝚆";s:1:"W";s:4:"𝚇";s:1:"X";s:4:"𝚈";s:1:"Y";s:4:"𝚉";s:1:"Z";s:4:"𝚊";s:1:"a";s:4:"𝚋";s:1:"b";s:4:"𝚌";s:1:"c";s:4:"𝚍";s:1:"d";s:4:"𝚎";s:1:"e";s:4:"𝚏";s:1:"f";s:4:"𝚐";s:1:"g";s:4:"𝚑";s:1:"h";s:4:"𝚒";s:1:"i";s:4:"𝚓";s:1:"j";s:4:"𝚔";s:1:"k";s:4:"𝚕";s:1:"l";s:4:"𝚖";s:1:"m";s:4:"𝚗";s:1:"n";s:4:"𝚘";s:1:"o";s:4:"𝚙";s:1:"p";s:4:"𝚚";s:1:"q";s:4:"𝚛";s:1:"r";s:4:"𝚜";s:1:"s";s:4:"𝚝";s:1:"t";s:4:"𝚞";s:1:"u";s:4:"𝚟";s:1:"v";s:4:"𝚠";s:1:"w";s:4:"𝚡";s:1:"x";s:4:"𝚢";s:1:"y";s:4:"𝚣";s:1:"z";s:4:"𝚤";s:2:"ı";s:4:"𝚥";s:2:"ȷ";s:4:"𝚨";s:2:"Α";s:4:"𝚩";s:2:"Β";s:4:"𝚪";s:2:"Γ";s:4:"𝚫";s:2:"Δ";s:4:"𝚬";s:2:"Ε";s:4:"𝚭";s:2:"Ζ";s:4:"𝚮";s:2:"Η";s:4:"𝚯";s:2:"Θ";s:4:"𝚰";s:2:"Ι";s:4:"𝚱";s:2:"Κ";s:4:"𝚲";s:2:"Λ";s:4:"𝚳";s:2:"Μ";s:4:"𝚴";s:2:"Ν";s:4:"𝚵";s:2:"Ξ";s:4:"𝚶";s:2:"Ο";s:4:"𝚷";s:2:"Π";s:4:"𝚸";s:2:"Ρ";s:4:"𝚹";s:2:"Θ";s:4:"𝚺";s:2:"Σ";s:4:"𝚻";s:2:"Τ";s:4:"𝚼";s:2:"Υ";s:4:"𝚽";s:2:"Φ";s:4:"𝚾";s:2:"Χ";s:4:"𝚿";s:2:"Ψ";s:4:"𝛀";s:2:"Ω";s:4:"𝛁";s:3:"∇";s:4:"𝛂";s:2:"α";s:4:"𝛃";s:2:"β";s:4:"𝛄";s:2:"γ";s:4:"𝛅";s:2:"δ";s:4:"𝛆";s:2:"ε";s:4:"𝛇";s:2:"ζ";s:4:"𝛈";s:2:"η";s:4:"𝛉";s:2:"θ";s:4:"𝛊";s:2:"ι";s:4:"𝛋";s:2:"κ";s:4:"𝛌";s:2:"λ";s:4:"𝛍";s:2:"μ";s:4:"𝛎";s:2:"ν";s:4:"𝛏";s:2:"ξ";s:4:"𝛐";s:2:"ο";s:4:"𝛑";s:2:"π";s:4:"𝛒";s:2:"ρ";s:4:"𝛓";s:2:"ς";s:4:"𝛔";s:2:"σ";s:4:"𝛕";s:2:"τ";s:4:"𝛖";s:2:"υ";s:4:"𝛗";s:2:"φ";s:4:"𝛘";s:2:"χ";s:4:"𝛙";s:2:"ψ";s:4:"𝛚";s:2:"ω";s:4:"𝛛";s:3:"∂";s:4:"𝛜";s:2:"ε";s:4:"𝛝";s:2:"θ";s:4:"𝛞";s:2:"κ";s:4:"𝛟";s:2:"φ";s:4:"𝛠";s:2:"ρ";s:4:"𝛡";s:2:"π";s:4:"𝛢";s:2:"Α";s:4:"𝛣";s:2:"Β";s:4:"𝛤";s:2:"Γ";s:4:"𝛥";s:2:"Δ";s:4:"𝛦";s:2:"Ε";s:4:"𝛧";s:2:"Ζ";s:4:"𝛨";s:2:"Η";s:4:"𝛩";s:2:"Θ";s:4:"𝛪";s:2:"Ι";s:4:"𝛫";s:2:"Κ";s:4:"𝛬";s:2:"Λ";s:4:"𝛭";s:2:"Μ";s:4:"𝛮";s:2:"Ν";s:4:"𝛯";s:2:"Ξ";s:4:"𝛰";s:2:"Ο";s:4:"𝛱";s:2:"Π";s:4:"𝛲";s:2:"Ρ";s:4:"𝛳";s:2:"Θ";s:4:"𝛴";s:2:"Σ";s:4:"𝛵";s:2:"Τ";s:4:"𝛶";s:2:"Υ";s:4:"𝛷";s:2:"Φ";s:4:"𝛸";s:2:"Χ";s:4:"𝛹";s:2:"Ψ";s:4:"𝛺";s:2:"Ω";s:4:"𝛻";s:3:"∇";s:4:"𝛼";s:2:"α";s:4:"𝛽";s:2:"β";s:4:"𝛾";s:2:"γ";s:4:"𝛿";s:2:"δ";s:4:"𝜀";s:2:"ε";s:4:"𝜁";s:2:"ζ";s:4:"𝜂";s:2:"η";s:4:"𝜃";s:2:"θ";s:4:"𝜄";s:2:"ι";s:4:"𝜅";s:2:"κ";s:4:"𝜆";s:2:"λ";s:4:"𝜇";s:2:"μ";s:4:"𝜈";s:2:"ν";s:4:"𝜉";s:2:"ξ";s:4:"𝜊";s:2:"ο";s:4:"𝜋";s:2:"π";s:4:"𝜌";s:2:"ρ";s:4:"𝜍";s:2:"ς";s:4:"𝜎";s:2:"σ";s:4:"𝜏";s:2:"τ";s:4:"𝜐";s:2:"υ";s:4:"𝜑";s:2:"φ";s:4:"𝜒";s:2:"χ";s:4:"𝜓";s:2:"ψ";s:4:"𝜔";s:2:"ω";s:4:"𝜕";s:3:"∂";s:4:"𝜖";s:2:"ε";s:4:"𝜗";s:2:"θ";s:4:"𝜘";s:2:"κ";s:4:"𝜙";s:2:"φ";s:4:"𝜚";s:2:"ρ";s:4:"𝜛";s:2:"π";s:4:"𝜜";s:2:"Α";s:4:"𝜝";s:2:"Β";s:4:"𝜞";s:2:"Γ";s:4:"𝜟";s:2:"Δ";s:4:"𝜠";s:2:"Ε";s:4:"𝜡";s:2:"Ζ";s:4:"𝜢";s:2:"Η";s:4:"𝜣";s:2:"Θ";s:4:"𝜤";s:2:"Ι";s:4:"𝜥";s:2:"Κ";s:4:"𝜦";s:2:"Λ";s:4:"𝜧";s:2:"Μ";s:4:"𝜨";s:2:"Ν";s:4:"𝜩";s:2:"Ξ";s:4:"𝜪";s:2:"Ο";s:4:"𝜫";s:2:"Π";s:4:"𝜬";s:2:"Ρ";s:4:"𝜭";s:2:"Θ";s:4:"𝜮";s:2:"Σ";s:4:"𝜯";s:2:"Τ";s:4:"𝜰";s:2:"Υ";s:4:"𝜱";s:2:"Φ";s:4:"𝜲";s:2:"Χ";s:4:"𝜳";s:2:"Ψ";s:4:"𝜴";s:2:"Ω";s:4:"𝜵";s:3:"∇";s:4:"𝜶";s:2:"α";s:4:"𝜷";s:2:"β";s:4:"𝜸";s:2:"γ";s:4:"𝜹";s:2:"δ";s:4:"𝜺";s:2:"ε";s:4:"𝜻";s:2:"ζ";s:4:"𝜼";s:2:"η";s:4:"𝜽";s:2:"θ";s:4:"𝜾";s:2:"ι";s:4:"𝜿";s:2:"κ";s:4:"𝝀";s:2:"λ";s:4:"𝝁";s:2:"μ";s:4:"𝝂";s:2:"ν";s:4:"𝝃";s:2:"ξ";s:4:"𝝄";s:2:"ο";s:4:"𝝅";s:2:"π";s:4:"𝝆";s:2:"ρ";s:4:"𝝇";s:2:"ς";s:4:"𝝈";s:2:"σ";s:4:"𝝉";s:2:"τ";s:4:"𝝊";s:2:"υ";s:4:"𝝋";s:2:"φ";s:4:"𝝌";s:2:"χ";s:4:"𝝍";s:2:"ψ";s:4:"𝝎";s:2:"ω";s:4:"𝝏";s:3:"∂";s:4:"𝝐";s:2:"ε";s:4:"𝝑";s:2:"θ";s:4:"𝝒";s:2:"κ";s:4:"𝝓";s:2:"φ";s:4:"𝝔";s:2:"ρ";s:4:"𝝕";s:2:"π";s:4:"𝝖";s:2:"Α";s:4:"𝝗";s:2:"Β";s:4:"𝝘";s:2:"Γ";s:4:"𝝙";s:2:"Δ";s:4:"𝝚";s:2:"Ε";s:4:"𝝛";s:2:"Ζ";s:4:"𝝜";s:2:"Η";s:4:"𝝝";s:2:"Θ";s:4:"𝝞";s:2:"Ι";s:4:"𝝟";s:2:"Κ";s:4:"𝝠";s:2:"Λ";s:4:"𝝡";s:2:"Μ";s:4:"𝝢";s:2:"Ν";s:4:"𝝣";s:2:"Ξ";s:4:"𝝤";s:2:"Ο";s:4:"𝝥";s:2:"Π";s:4:"𝝦";s:2:"Ρ";s:4:"𝝧";s:2:"Θ";s:4:"𝝨";s:2:"Σ";s:4:"𝝩";s:2:"Τ";s:4:"𝝪";s:2:"Υ";s:4:"𝝫";s:2:"Φ";s:4:"𝝬";s:2:"Χ";s:4:"𝝭";s:2:"Ψ";s:4:"𝝮";s:2:"Ω";s:4:"𝝯";s:3:"∇";s:4:"𝝰";s:2:"α";s:4:"𝝱";s:2:"β";s:4:"𝝲";s:2:"γ";s:4:"𝝳";s:2:"δ";s:4:"𝝴";s:2:"ε";s:4:"𝝵";s:2:"ζ";s:4:"𝝶";s:2:"η";s:4:"𝝷";s:2:"θ";s:4:"𝝸";s:2:"ι";s:4:"𝝹";s:2:"κ";s:4:"𝝺";s:2:"λ";s:4:"𝝻";s:2:"μ";s:4:"𝝼";s:2:"ν";s:4:"𝝽";s:2:"ξ";s:4:"𝝾";s:2:"ο";s:4:"𝝿";s:2:"π";s:4:"𝞀";s:2:"ρ";s:4:"𝞁";s:2:"ς";s:4:"𝞂";s:2:"σ";s:4:"𝞃";s:2:"τ";s:4:"𝞄";s:2:"υ";s:4:"𝞅";s:2:"φ";s:4:"𝞆";s:2:"χ";s:4:"𝞇";s:2:"ψ";s:4:"𝞈";s:2:"ω";s:4:"𝞉";s:3:"∂";s:4:"𝞊";s:2:"ε";s:4:"𝞋";s:2:"θ";s:4:"𝞌";s:2:"κ";s:4:"𝞍";s:2:"φ";s:4:"𝞎";s:2:"ρ";s:4:"𝞏";s:2:"π";s:4:"𝞐";s:2:"Α";s:4:"𝞑";s:2:"Β";s:4:"𝞒";s:2:"Γ";s:4:"𝞓";s:2:"Δ";s:4:"𝞔";s:2:"Ε";s:4:"𝞕";s:2:"Ζ";s:4:"𝞖";s:2:"Η";s:4:"𝞗";s:2:"Θ";s:4:"𝞘";s:2:"Ι";s:4:"𝞙";s:2:"Κ";s:4:"𝞚";s:2:"Λ";s:4:"𝞛";s:2:"Μ";s:4:"𝞜";s:2:"Ν";s:4:"𝞝";s:2:"Ξ";s:4:"𝞞";s:2:"Ο";s:4:"𝞟";s:2:"Π";s:4:"𝞠";s:2:"Ρ";s:4:"𝞡";s:2:"Θ";s:4:"𝞢";s:2:"Σ";s:4:"𝞣";s:2:"Τ";s:4:"𝞤";s:2:"Υ";s:4:"𝞥";s:2:"Φ";s:4:"𝞦";s:2:"Χ";s:4:"𝞧";s:2:"Ψ";s:4:"𝞨";s:2:"Ω";s:4:"𝞩";s:3:"∇";s:4:"𝞪";s:2:"α";s:4:"𝞫";s:2:"β";s:4:"𝞬";s:2:"γ";s:4:"𝞭";s:2:"δ";s:4:"𝞮";s:2:"ε";s:4:"𝞯";s:2:"ζ";s:4:"𝞰";s:2:"η";s:4:"𝞱";s:2:"θ";s:4:"𝞲";s:2:"ι";s:4:"𝞳";s:2:"κ";s:4:"𝞴";s:2:"λ";s:4:"𝞵";s:2:"μ";s:4:"𝞶";s:2:"ν";s:4:"𝞷";s:2:"ξ";s:4:"𝞸";s:2:"ο";s:4:"𝞹";s:2:"π";s:4:"𝞺";s:2:"ρ";s:4:"𝞻";s:2:"ς";s:4:"𝞼";s:2:"σ";s:4:"𝞽";s:2:"τ";s:4:"𝞾";s:2:"υ";s:4:"𝞿";s:2:"φ";s:4:"𝟀";s:2:"χ";s:4:"𝟁";s:2:"ψ";s:4:"𝟂";s:2:"ω";s:4:"𝟃";s:3:"∂";s:4:"𝟄";s:2:"ε";s:4:"𝟅";s:2:"θ";s:4:"𝟆";s:2:"κ";s:4:"𝟇";s:2:"φ";s:4:"𝟈";s:2:"ρ";s:4:"𝟉";s:2:"π";s:4:"𝟊";s:2:"Ϝ";s:4:"𝟋";s:2:"ϝ";s:4:"𝟎";s:1:"0";s:4:"𝟏";s:1:"1";s:4:"𝟐";s:1:"2";s:4:"𝟑";s:1:"3";s:4:"𝟒";s:1:"4";s:4:"𝟓";s:1:"5";s:4:"𝟔";s:1:"6";s:4:"𝟕";s:1:"7";s:4:"𝟖";s:1:"8";s:4:"𝟗";s:1:"9";s:4:"𝟘";s:1:"0";s:4:"𝟙";s:1:"1";s:4:"𝟚";s:1:"2";s:4:"𝟛";s:1:"3";s:4:"𝟜";s:1:"4";s:4:"𝟝";s:1:"5";s:4:"𝟞";s:1:"6";s:4:"𝟟";s:1:"7";s:4:"𝟠";s:1:"8";s:4:"𝟡";s:1:"9";s:4:"𝟢";s:1:"0";s:4:"𝟣";s:1:"1";s:4:"𝟤";s:1:"2";s:4:"𝟥";s:1:"3";s:4:"𝟦";s:1:"4";s:4:"𝟧";s:1:"5";s:4:"𝟨";s:1:"6";s:4:"𝟩";s:1:"7";s:4:"𝟪";s:1:"8";s:4:"𝟫";s:1:"9";s:4:"𝟬";s:1:"0";s:4:"𝟭";s:1:"1";s:4:"𝟮";s:1:"2";s:4:"𝟯";s:1:"3";s:4:"𝟰";s:1:"4";s:4:"𝟱";s:1:"5";s:4:"𝟲";s:1:"6";s:4:"𝟳";s:1:"7";s:4:"𝟴";s:1:"8";s:4:"𝟵";s:1:"9";s:4:"𝟶";s:1:"0";s:4:"𝟷";s:1:"1";s:4:"𝟸";s:1:"2";s:4:"𝟹";s:1:"3";s:4:"𝟺";s:1:"4";s:4:"𝟻";s:1:"5";s:4:"𝟼";s:1:"6";s:4:"𝟽";s:1:"7";s:4:"𝟾";s:1:"8";s:4:"𝟿";s:1:"9";s:4:"丽";s:3:"丽";s:4:"丸";s:3:"丸";s:4:"乁";s:3:"乁";s:4:"𠄢";s:4:"𠄢";s:4:"你";s:3:"你";s:4:"侮";s:3:"侮";s:4:"侻";s:3:"侻";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"偺";s:4:"備";s:3:"備";s:4:"僧";s:3:"僧";s:4:"像";s:3:"像";s:4:"㒞";s:3:"㒞";s:4:"𠘺";s:4:"𠘺";s:4:"免";s:3:"免";s:4:"兔";s:3:"兔";s:4:"兤";s:3:"兤";s:4:"具";s:3:"具";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"㒹";s:4:"內";s:3:"內";s:4:"再";s:3:"再";s:4:"𠕋";s:4:"𠕋";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"凵";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"㓟";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"卉";s:4:"卑";s:3:"卑";s:4:"博";s:3:"博";s:4:"即";s:3:"即";s:4:"卽";s:3:"卽";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"灰";s:4:"及";s:3:"及";s:4:"叟";s:3:"叟";s:4:"𠭣";s:4:"𠭣";s:4:"叫";s:3:"叫";s:4:"叱";s:3:"叱";s:4:"吆";s:3:"吆";s:4:"咞";s:3:"咞";s:4:"吸";s:3:"吸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"咢";s:4:"哶";s:3:"哶";s:4:"唐";s:3:"唐";s:4:"啓";s:3:"啓";s:4:"啣";s:3:"啣";s:4:"善";s:3:"善";s:4:"善";s:3:"善";s:4:"喙";s:3:"喙";s:4:"喫";s:3:"喫";s:4:"喳";s:3:"喳";s:4:"嗂";s:3:"嗂";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"圗";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"噴";s:3:"噴";s:4:"切";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"堍";s:4:"型";s:3:"型";s:4:"堲";s:3:"堲";s:4:"報";s:3:"報";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"多";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"㛮";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"将";s:4:"当";s:3:"当";s:4:"尢";s:3:"尢";s:4:"㞁";s:3:"㞁";s:4:"屠";s:3:"屠";s:4:"屮";s:3:"屮";s:4:"峀";s:3:"峀";s:4:"岍";s:3:"岍";s:4:"𡷤";s:4:"𡷤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"𡷦";s:4:"嵮";s:3:"嵮";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"嵼";s:4:"巡";s:3:"巡";s:4:"巢";s:3:"巢";s:4:"㠯";s:3:"㠯";s:4:"巽";s:3:"巽";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"㡢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"庶";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"𪎒";s:4:"𪎒";s:4:"廾";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"舁";s:4:"弢";s:3:"弢";s:4:"弢";s:3:"弢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"形";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"忍";s:3:"忍";s:4:"志";s:3:"志";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"悁";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"悔";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"慈";s:4:"慌";s:3:"慌";s:4:"慎";s:3:"慎";s:4:"慌";s:3:"慌";s:4:"慺";s:3:"慺";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"成";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"扝";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"拔";s:4:"捐";s:3:"捐";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"捨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"揤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"搢";s:4:"揅";s:3:"揅";s:4:"掩";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"摩";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"撝";s:4:"摷";s:3:"摷";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"敏";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"旣";s:4:"書";s:3:"書";s:4:"晉";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"暑";s:3:"暑";s:4:"㬈";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"暜";s:4:"肭";s:3:"肭";s:4:"䏙";s:3:"䏙";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"杞";s:4:"杓";s:3:"杓";s:4:"𣏃";s:4:"𣏃";s:4:"㭉";s:3:"㭉";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"枅";s:4:"桒";s:3:"桒";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"栟";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"㮝";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"櫛";s:4:"㰘";s:3:"㰘";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"歔";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"歲";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"泍";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"洖";s:4:"派";s:3:"派";s:4:"海";s:3:"海";s:4:"流";s:3:"流";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"洴";s:4:"港";s:3:"港";s:4:"湮";s:3:"湮";s:4:"㴳";s:3:"㴳";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"𣻑";s:4:"𣻑";s:4:"淹";s:3:"淹";s:4:"潮";s:3:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"灊";s:4:"災";s:3:"災";s:4:"灷";s:3:"灷";s:4:"炭";s:3:"炭";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"煅";s:4:"𤉣";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"牐";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"獺";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"瑜";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"璅";s:4:"瓊";s:3:"瓊";s:4:"㼛";s:3:"㼛";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"異";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"直";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"睊";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"瞋";s:4:"䁆";s:3:"䁆";s:4:"䂖";s:3:"䂖";s:4:"𥐝";s:4:"𥐝";s:4:"硎";s:3:"硎";s:4:"碌";s:3:"碌";s:4:"磌";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"福";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"穀";s:4:"穊";s:3:"穊";s:4:"穏";s:3:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"竮";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"糒";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"糣";s:4:"紀";s:3:"紀";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"絣";s:4:"䌁";s:3:"䌁";s:4:"緇";s:3:"緇";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"繅";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"䍙";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"聠";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"聰";s:4:"𣍟";s:4:"𣍟";s:4:"䏕";s:3:"䏕";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"䐋";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"舁";s:4:"舄";s:3:"舄";s:4:"辞";s:3:"辞";s:4:"䑫";s:3:"䑫";s:4:"芑";s:3:"芑";s:4:"芋";s:3:"芋";s:4:"芝";s:3:"芝";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"若";s:4:"茝";s:3:"茝";s:4:"荣";s:3:"荣";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"莽";s:3:"莽";s:4:"菧";s:3:"菧";s:4:"著";s:3:"著";s:4:"荓";s:3:"荓";s:4:"菊";s:3:"菊";s:4:"菌";s:3:"菌";s:4:"菜";s:3:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"蔖";s:4:"𧏊";s:4:"𧏊";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"䕝";s:4:"䕡";s:3:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"䕫";s:4:"虐";s:3:"虐";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"蚩";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"蝹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"蝫";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"䗗";s:4:"蟡";s:3:"蟡";s:4:"蠁";s:3:"蠁";s:4:"䗹";s:3:"䗹";s:4:"衠";s:3:"衠";s:4:"衣";s:3:"衣";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"䚾";s:3:"䚾";s:4:"䛇";s:3:"䛇";s:4:"誠";s:3:"誠";s:4:"諭";s:3:"諭";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"賁";s:4:"贛";s:3:"贛";s:4:"起";s:3:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:4:"跋";s:3:"跋";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"跰";s:4:"𠣞";s:4:"𠣞";s:4:"軔";s:3:"軔";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"邔";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"鄑";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"鄛";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"鋗";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"鏹";s:4:"鐕";s:3:"鐕";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"開";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"閷";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"䩮";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"𩐊";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"𩒖";s:4:"頋";s:3:"頋";s:4:"頋";s:3:"頋";s:4:"頩";s:3:"頩";s:4:"𩖶";s:4:"𩖶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"鱀";s:4:"鳽";s:3:"鳽";s:4:"䳎";s:3:"䳎";s:4:"䳭";s:3:"䳭";s:4:"鵧";s:3:"鵧";s:4:"𪃎";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"䵖";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"鼅";s:4:"鼏";s:3:"鼏";s:4:"鼖";s:3:"鼖";s:4:"鼻";s:3:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
-?>
+$utfCompatibilityDecomp = unserialize( 'a:5516:{s:2:" ";s:1:" ";s:2:"¨";s:3:" ̈";s:2:"ª";s:1:"a";s:2:"¯";s:3:" ̄";s:2:"²";s:1:"2";s:2:"³";s:1:"3";s:2:"´";s:3:" ́";s:2:"µ";s:2:"μ";s:2:"¸";s:3:" ̧";s:2:"¹";s:1:"1";s:2:"º";s:1:"o";s:2:"¼";s:5:"1⁄4";s:2:"½";s:5:"1⁄2";s:2:"¾";s:5:"3⁄4";s:2:"À";s:3:"À";s:2:"Á";s:3:"Á";s:2:"Â";s:3:"Â";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Å";s:3:"Å";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"È";s:2:"É";s:3:"É";s:2:"Ê";s:3:"Ê";s:2:"Ë";s:3:"Ë";s:2:"Ì";s:3:"Ì";s:2:"Í";s:3:"Í";s:2:"Î";s:3:"Î";s:2:"Ï";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ò";s:3:"Ò";s:2:"Ó";s:3:"Ó";s:2:"Ô";s:3:"Ô";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"Ù";s:2:"Ú";s:3:"Ú";s:2:"Û";s:3:"Û";s:2:"Ü";s:3:"Ü";s:2:"Ý";s:3:"Ý";s:2:"à";s:3:"à";s:2:"á";s:3:"á";s:2:"â";s:3:"â";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"å";s:3:"å";s:2:"ç";s:3:"ç";s:2:"è";s:3:"è";s:2:"é";s:3:"é";s:2:"ê";s:3:"ê";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"ì";s:2:"í";s:3:"í";s:2:"î";s:3:"î";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"ò";s:2:"ó";s:3:"ó";s:2:"ô";s:3:"ô";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"ù";s:2:"ú";s:3:"ú";s:2:"û";s:3:"û";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"ý";s:2:"ÿ";s:3:"ÿ";s:2:"Ā";s:3:"Ā";s:2:"ā";s:3:"ā";s:2:"Ă";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ą";s:3:"Ą";s:2:"ą";s:3:"ą";s:2:"Ć";s:3:"Ć";s:2:"ć";s:3:"ć";s:2:"Ĉ";s:3:"Ĉ";s:2:"ĉ";s:3:"ĉ";s:2:"Ċ";s:3:"Ċ";s:2:"ċ";s:3:"ċ";s:2:"Č";s:3:"Č";s:2:"č";s:3:"č";s:2:"Ď";s:3:"Ď";s:2:"ď";s:3:"ď";s:2:"Ē";s:3:"Ē";s:2:"ē";s:3:"ē";s:2:"Ĕ";s:3:"Ĕ";s:2:"ĕ";s:3:"ĕ";s:2:"Ė";s:3:"Ė";s:2:"ė";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"ę";s:3:"ę";s:2:"Ě";s:3:"Ě";s:2:"ě";s:3:"ě";s:2:"Ĝ";s:3:"Ĝ";s:2:"ĝ";s:3:"ĝ";s:2:"Ğ";s:3:"Ğ";s:2:"ğ";s:3:"ğ";s:2:"Ġ";s:3:"Ġ";s:2:"ġ";s:3:"ġ";s:2:"Ģ";s:3:"Ģ";s:2:"ģ";s:3:"ģ";s:2:"Ĥ";s:3:"Ĥ";s:2:"ĥ";s:3:"ĥ";s:2:"Ĩ";s:3:"Ĩ";s:2:"ĩ";s:3:"ĩ";s:2:"Ī";s:3:"Ī";s:2:"ī";s:3:"ī";s:2:"Ĭ";s:3:"Ĭ";s:2:"ĭ";s:3:"ĭ";s:2:"Į";s:3:"Į";s:2:"į";s:3:"į";s:2:"İ";s:3:"İ";s:2:"IJ";s:2:"IJ";s:2:"ij";s:2:"ij";s:2:"Ĵ";s:3:"Ĵ";s:2:"ĵ";s:3:"ĵ";s:2:"Ķ";s:3:"Ķ";s:2:"ķ";s:3:"ķ";s:2:"Ĺ";s:3:"Ĺ";s:2:"ĺ";s:3:"ĺ";s:2:"Ļ";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"Ľ";s:2:"ľ";s:3:"ľ";s:2:"Ŀ";s:3:"L·";s:2:"ŀ";s:3:"l·";s:2:"Ń";s:3:"Ń";s:2:"ń";s:3:"ń";s:2:"Ņ";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"Ň";s:2:"ň";s:3:"ň";s:2:"ʼn";s:3:"ʼn";s:2:"Ō";s:3:"Ō";s:2:"ō";s:3:"ō";s:2:"Ŏ";s:3:"Ŏ";s:2:"ŏ";s:3:"ŏ";s:2:"Ő";s:3:"Ő";s:2:"ő";s:3:"ő";s:2:"Ŕ";s:3:"Ŕ";s:2:"ŕ";s:3:"ŕ";s:2:"Ŗ";s:3:"Ŗ";s:2:"ŗ";s:3:"ŗ";s:2:"Ř";s:3:"Ř";s:2:"ř";s:3:"ř";s:2:"Ś";s:3:"Ś";s:2:"ś";s:3:"ś";s:2:"Ŝ";s:3:"Ŝ";s:2:"ŝ";s:3:"ŝ";s:2:"Ş";s:3:"Ş";s:2:"ş";s:3:"ş";s:2:"Š";s:3:"Š";s:2:"š";s:3:"š";s:2:"Ţ";s:3:"Ţ";s:2:"ţ";s:3:"ţ";s:2:"Ť";s:3:"Ť";s:2:"ť";s:3:"ť";s:2:"Ũ";s:3:"Ũ";s:2:"ũ";s:3:"ũ";s:2:"Ū";s:3:"Ū";s:2:"ū";s:3:"ū";s:2:"Ŭ";s:3:"Ŭ";s:2:"ŭ";s:3:"ŭ";s:2:"Ů";s:3:"Ů";s:2:"ů";s:3:"ů";s:2:"Ű";s:3:"Ű";s:2:"ű";s:3:"ű";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Ŵ";s:3:"Ŵ";s:2:"ŵ";s:3:"ŵ";s:2:"Ŷ";s:3:"Ŷ";s:2:"ŷ";s:3:"ŷ";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"Ź";s:2:"ź";s:3:"ź";s:2:"Ż";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"Ž";s:2:"ž";s:3:"ž";s:2:"ſ";s:1:"s";s:2:"Ơ";s:3:"Ơ";s:2:"ơ";s:3:"ơ";s:2:"Ư";s:3:"Ư";s:2:"ư";s:3:"ư";s:2:"DŽ";s:4:"DŽ";s:2:"Dž";s:4:"Dž";s:2:"dž";s:4:"dž";s:2:"LJ";s:2:"LJ";s:2:"Lj";s:2:"Lj";s:2:"lj";s:2:"lj";s:2:"NJ";s:2:"NJ";s:2:"Nj";s:2:"Nj";s:2:"nj";s:2:"nj";s:2:"Ǎ";s:3:"Ǎ";s:2:"ǎ";s:3:"ǎ";s:2:"Ǐ";s:3:"Ǐ";s:2:"ǐ";s:3:"ǐ";s:2:"Ǒ";s:3:"Ǒ";s:2:"ǒ";s:3:"ǒ";s:2:"Ǔ";s:3:"Ǔ";s:2:"ǔ";s:3:"ǔ";s:2:"Ǖ";s:5:"Ǖ";s:2:"ǖ";s:5:"ǖ";s:2:"Ǘ";s:5:"Ǘ";s:2:"ǘ";s:5:"ǘ";s:2:"Ǚ";s:5:"Ǚ";s:2:"ǚ";s:5:"ǚ";s:2:"Ǜ";s:5:"Ǜ";s:2:"ǜ";s:5:"ǜ";s:2:"Ǟ";s:5:"Ǟ";s:2:"ǟ";s:5:"ǟ";s:2:"Ǡ";s:5:"Ǡ";s:2:"ǡ";s:5:"ǡ";s:2:"Ǣ";s:4:"Ǣ";s:2:"ǣ";s:4:"ǣ";s:2:"Ǧ";s:3:"Ǧ";s:2:"ǧ";s:3:"ǧ";s:2:"Ǩ";s:3:"Ǩ";s:2:"ǩ";s:3:"ǩ";s:2:"Ǫ";s:3:"Ǫ";s:2:"ǫ";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"ǭ";s:5:"ǭ";s:2:"Ǯ";s:4:"Ǯ";s:2:"ǯ";s:4:"ǯ";s:2:"ǰ";s:3:"ǰ";s:2:"DZ";s:2:"DZ";s:2:"Dz";s:2:"Dz";s:2:"dz";s:2:"dz";s:2:"Ǵ";s:3:"Ǵ";s:2:"ǵ";s:3:"ǵ";s:2:"Ǹ";s:3:"Ǹ";s:2:"ǹ";s:3:"ǹ";s:2:"Ǻ";s:5:"Ǻ";s:2:"ǻ";s:5:"ǻ";s:2:"Ǽ";s:4:"Ǽ";s:2:"ǽ";s:4:"ǽ";s:2:"Ǿ";s:4:"Ǿ";s:2:"ǿ";s:4:"ǿ";s:2:"Ȁ";s:3:"Ȁ";s:2:"ȁ";s:3:"ȁ";s:2:"Ȃ";s:3:"Ȃ";s:2:"ȃ";s:3:"ȃ";s:2:"Ȅ";s:3:"Ȅ";s:2:"ȅ";s:3:"ȅ";s:2:"Ȇ";s:3:"Ȇ";s:2:"ȇ";s:3:"ȇ";s:2:"Ȉ";s:3:"Ȉ";s:2:"ȉ";s:3:"ȉ";s:2:"Ȋ";s:3:"Ȋ";s:2:"ȋ";s:3:"ȋ";s:2:"Ȍ";s:3:"Ȍ";s:2:"ȍ";s:3:"ȍ";s:2:"Ȏ";s:3:"Ȏ";s:2:"ȏ";s:3:"ȏ";s:2:"Ȑ";s:3:"Ȑ";s:2:"ȑ";s:3:"ȑ";s:2:"Ȓ";s:3:"Ȓ";s:2:"ȓ";s:3:"ȓ";s:2:"Ȕ";s:3:"Ȕ";s:2:"ȕ";s:3:"ȕ";s:2:"Ȗ";s:3:"Ȗ";s:2:"ȗ";s:3:"ȗ";s:2:"Ș";s:3:"Ș";s:2:"ș";s:3:"ș";s:2:"Ț";s:3:"Ț";s:2:"ț";s:3:"ț";s:2:"Ȟ";s:3:"Ȟ";s:2:"ȟ";s:3:"ȟ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"ȩ";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"ȫ";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"ȭ";s:5:"ȭ";s:2:"Ȯ";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"Ȱ";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"Ȳ";s:2:"ȳ";s:3:"ȳ";s:2:"ʰ";s:1:"h";s:2:"ʱ";s:2:"ɦ";s:2:"ʲ";s:1:"j";s:2:"ʳ";s:1:"r";s:2:"ʴ";s:2:"ɹ";s:2:"ʵ";s:2:"ɻ";s:2:"ʶ";s:2:"ʁ";s:2:"ʷ";s:1:"w";s:2:"ʸ";s:1:"y";s:2:"˘";s:3:" ̆";s:2:"˙";s:3:" ̇";s:2:"˚";s:3:" ̊";s:2:"˛";s:3:" ̨";s:2:"˜";s:3:" ̃";s:2:"˝";s:3:" ̋";s:2:"ˠ";s:2:"ɣ";s:2:"ˡ";s:1:"l";s:2:"ˢ";s:1:"s";s:2:"ˣ";s:1:"x";s:2:"ˤ";s:2:"ʕ";s:2:"̀";s:2:"̀";s:2:"́";s:2:"́";s:2:"̓";s:2:"̓";s:2:"̈́";s:4:"̈́";s:2:"ʹ";s:2:"ʹ";s:2:"ͺ";s:3:" ͅ";s:2:";";s:1:";";s:2:"΄";s:3:" ́";s:2:"΅";s:5:" ̈́";s:2:"Ά";s:4:"Ά";s:2:"·";s:2:"·";s:2:"Έ";s:4:"Έ";s:2:"Ή";s:4:"Ή";s:2:"Ί";s:4:"Ί";s:2:"Ό";s:4:"Ό";s:2:"Ύ";s:4:"Ύ";s:2:"Ώ";s:4:"Ώ";s:2:"ΐ";s:6:"ΐ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"ά";s:2:"έ";s:4:"έ";s:2:"ή";s:4:"ή";s:2:"ί";s:4:"ί";s:2:"ΰ";s:6:"ΰ";s:2:"ϊ";s:4:"ϊ";s:2:"ϋ";s:4:"ϋ";s:2:"ό";s:4:"ό";s:2:"ύ";s:4:"ύ";s:2:"ώ";s:4:"ώ";s:2:"ϐ";s:2:"β";s:2:"ϑ";s:2:"θ";s:2:"ϒ";s:2:"Υ";s:2:"ϓ";s:4:"Ύ";s:2:"ϔ";s:4:"Ϋ";s:2:"ϕ";s:2:"φ";s:2:"ϖ";s:2:"π";s:2:"ϰ";s:2:"κ";s:2:"ϱ";s:2:"ρ";s:2:"ϲ";s:2:"ς";s:2:"ϴ";s:2:"Θ";s:2:"ϵ";s:2:"ε";s:2:"Ϲ";s:2:"Σ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ё";s:4:"Ё";s:2:"Ѓ";s:4:"Ѓ";s:2:"Ї";s:4:"Ї";s:2:"Ќ";s:4:"Ќ";s:2:"Ѝ";s:4:"Ѝ";s:2:"Ў";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"ѐ";s:4:"ѐ";s:2:"ё";s:4:"ё";s:2:"ѓ";s:4:"ѓ";s:2:"ї";s:4:"ї";s:2:"ќ";s:4:"ќ";s:2:"ѝ";s:4:"ѝ";s:2:"ў";s:4:"ў";s:2:"Ѷ";s:4:"Ѷ";s:2:"ѷ";s:4:"ѷ";s:2:"Ӂ";s:4:"Ӂ";s:2:"ӂ";s:4:"ӂ";s:2:"Ӑ";s:4:"Ӑ";s:2:"ӑ";s:4:"ӑ";s:2:"Ӓ";s:4:"Ӓ";s:2:"ӓ";s:4:"ӓ";s:2:"Ӗ";s:4:"Ӗ";s:2:"ӗ";s:4:"ӗ";s:2:"Ӛ";s:4:"Ӛ";s:2:"ӛ";s:4:"ӛ";s:2:"Ӝ";s:4:"Ӝ";s:2:"ӝ";s:4:"ӝ";s:2:"Ӟ";s:4:"Ӟ";s:2:"ӟ";s:4:"ӟ";s:2:"Ӣ";s:4:"Ӣ";s:2:"ӣ";s:4:"ӣ";s:2:"Ӥ";s:4:"Ӥ";s:2:"ӥ";s:4:"ӥ";s:2:"Ӧ";s:4:"Ӧ";s:2:"ӧ";s:4:"ӧ";s:2:"Ӫ";s:4:"Ӫ";s:2:"ӫ";s:4:"ӫ";s:2:"Ӭ";s:4:"Ӭ";s:2:"ӭ";s:4:"ӭ";s:2:"Ӯ";s:4:"Ӯ";s:2:"ӯ";s:4:"ӯ";s:2:"Ӱ";s:4:"Ӱ";s:2:"ӱ";s:4:"ӱ";s:2:"Ӳ";s:4:"Ӳ";s:2:"ӳ";s:4:"ӳ";s:2:"Ӵ";s:4:"Ӵ";s:2:"ӵ";s:4:"ӵ";s:2:"Ӹ";s:4:"Ӹ";s:2:"ӹ";s:4:"ӹ";s:2:"և";s:4:"եւ";s:2:"آ";s:4:"آ";s:2:"أ";s:4:"أ";s:2:"ؤ";s:4:"ؤ";s:2:"إ";s:4:"إ";s:2:"ئ";s:4:"ئ";s:2:"ٵ";s:4:"اٴ";s:2:"ٶ";s:4:"وٴ";s:2:"ٷ";s:4:"ۇٴ";s:2:"ٸ";s:4:"يٴ";s:2:"ۀ";s:4:"ۀ";s:2:"ۂ";s:4:"ۂ";s:2:"ۓ";s:4:"ۓ";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"ढ़";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"ঢ়";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"ਖ਼";s:6:"ਖ਼";s:3:"ਗ਼";s:6:"ਗ਼";s:3:"ਜ਼";s:6:"ਜ਼";s:3:"ਫ਼";s:6:"ਫ਼";s:3:"ୈ";s:6:"ୈ";s:3:"ୋ";s:6:"ୋ";s:3:"ୌ";s:6:"ୌ";s:3:"ଡ଼";s:6:"ଡ଼";s:3:"ଢ଼";s:6:"ଢ଼";s:3:"ஔ";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"ೀ";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"ේ";s:6:"ේ";s:3:"ො";s:6:"ො";s:3:"ෝ";s:9:"ෝ";s:3:"ෞ";s:6:"ෞ";s:3:"ำ";s:6:"ํา";s:3:"ຳ";s:6:"ໍາ";s:3:"ໜ";s:6:"ຫນ";s:3:"ໝ";s:6:"ຫມ";s:3:"༌";s:3:"་";s:3:"གྷ";s:6:"གྷ";s:3:"ཌྷ";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ཷ";s:9:"ྲཱྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཹ";s:9:"ླཱྀ";s:3:"ཱྀ";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"ྜྷ";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"ྐྵ";s:3:"ဦ";s:6:"ဦ";s:3:"ჼ";s:3:"ნ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"ᬎ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"ᭀ";s:6:"ᭀ";s:3:"ᭁ";s:6:"ᭁ";s:3:"ᭃ";s:6:"ᭃ";s:3:"ᴬ";s:1:"A";s:3:"ᴭ";s:2:"Æ";s:3:"ᴮ";s:1:"B";s:3:"ᴰ";s:1:"D";s:3:"ᴱ";s:1:"E";s:3:"ᴲ";s:2:"Ǝ";s:3:"ᴳ";s:1:"G";s:3:"ᴴ";s:1:"H";s:3:"ᴵ";s:1:"I";s:3:"ᴶ";s:1:"J";s:3:"ᴷ";s:1:"K";s:3:"ᴸ";s:1:"L";s:3:"ᴹ";s:1:"M";s:3:"ᴺ";s:1:"N";s:3:"ᴼ";s:1:"O";s:3:"ᴽ";s:2:"Ȣ";s:3:"ᴾ";s:1:"P";s:3:"ᴿ";s:1:"R";s:3:"ᵀ";s:1:"T";s:3:"ᵁ";s:1:"U";s:3:"ᵂ";s:1:"W";s:3:"ᵃ";s:1:"a";s:3:"ᵄ";s:2:"ɐ";s:3:"ᵅ";s:2:"ɑ";s:3:"ᵆ";s:3:"ᴂ";s:3:"ᵇ";s:1:"b";s:3:"ᵈ";s:1:"d";s:3:"ᵉ";s:1:"e";s:3:"ᵊ";s:2:"ə";s:3:"ᵋ";s:2:"ɛ";s:3:"ᵌ";s:2:"ɜ";s:3:"ᵍ";s:1:"g";s:3:"ᵏ";s:1:"k";s:3:"ᵐ";s:1:"m";s:3:"ᵑ";s:2:"ŋ";s:3:"ᵒ";s:1:"o";s:3:"ᵓ";s:2:"ɔ";s:3:"ᵔ";s:3:"ᴖ";s:3:"ᵕ";s:3:"ᴗ";s:3:"ᵖ";s:1:"p";s:3:"ᵗ";s:1:"t";s:3:"ᵘ";s:1:"u";s:3:"ᵙ";s:3:"ᴝ";s:3:"ᵚ";s:2:"ɯ";s:3:"ᵛ";s:1:"v";s:3:"ᵜ";s:3:"ᴥ";s:3:"ᵝ";s:2:"β";s:3:"ᵞ";s:2:"γ";s:3:"ᵟ";s:2:"δ";s:3:"ᵠ";s:2:"φ";s:3:"ᵡ";s:2:"χ";s:3:"ᵢ";s:1:"i";s:3:"ᵣ";s:1:"r";s:3:"ᵤ";s:1:"u";s:3:"ᵥ";s:1:"v";s:3:"ᵦ";s:2:"β";s:3:"ᵧ";s:2:"γ";s:3:"ᵨ";s:2:"ρ";s:3:"ᵩ";s:2:"φ";s:3:"ᵪ";s:2:"χ";s:3:"ᵸ";s:2:"н";s:3:"ᶛ";s:2:"ɒ";s:3:"ᶜ";s:1:"c";s:3:"ᶝ";s:2:"ɕ";s:3:"ᶞ";s:2:"ð";s:3:"ᶟ";s:2:"ɜ";s:3:"ᶠ";s:1:"f";s:3:"ᶡ";s:2:"ɟ";s:3:"ᶢ";s:2:"ɡ";s:3:"ᶣ";s:2:"ɥ";s:3:"ᶤ";s:2:"ɨ";s:3:"ᶥ";s:2:"ɩ";s:3:"ᶦ";s:2:"ɪ";s:3:"ᶧ";s:3:"ᵻ";s:3:"ᶨ";s:2:"ʝ";s:3:"ᶩ";s:2:"ɭ";s:3:"ᶪ";s:3:"ᶅ";s:3:"ᶫ";s:2:"ʟ";s:3:"ᶬ";s:2:"ɱ";s:3:"ᶭ";s:2:"ɰ";s:3:"ᶮ";s:2:"ɲ";s:3:"ᶯ";s:2:"ɳ";s:3:"ᶰ";s:2:"ɴ";s:3:"ᶱ";s:2:"ɵ";s:3:"ᶲ";s:2:"ɸ";s:3:"ᶳ";s:2:"ʂ";s:3:"ᶴ";s:2:"ʃ";s:3:"ᶵ";s:2:"ƫ";s:3:"ᶶ";s:2:"ʉ";s:3:"ᶷ";s:2:"ʊ";s:3:"ᶸ";s:3:"ᴜ";s:3:"ᶹ";s:2:"ʋ";s:3:"ᶺ";s:2:"ʌ";s:3:"ᶻ";s:1:"z";s:3:"ᶼ";s:2:"ʐ";s:3:"ᶽ";s:2:"ʑ";s:3:"ᶾ";s:2:"ʒ";s:3:"ᶿ";s:2:"θ";s:3:"Ḁ";s:3:"Ḁ";s:3:"ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"Ḅ";s:3:"ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"Ḉ";s:3:"ḉ";s:5:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"Ḍ";s:3:"ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"Ḓ";s:3:"ḓ";s:3:"ḓ";s:3:"Ḕ";s:5:"Ḕ";s:3:"ḕ";s:5:"ḕ";s:3:"Ḗ";s:5:"Ḗ";s:3:"ḗ";s:5:"ḗ";s:3:"Ḙ";s:3:"Ḙ";s:3:"ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"Ḛ";s:3:"ḛ";s:3:"ḛ";s:3:"Ḝ";s:5:"Ḝ";s:3:"ḝ";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"Ḡ";s:3:"ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"Ḥ";s:3:"ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"Ḫ";s:3:"ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"Ḭ";s:3:"ḭ";s:3:"ḭ";s:3:"Ḯ";s:5:"Ḯ";s:3:"ḯ";s:5:"ḯ";s:3:"Ḱ";s:3:"Ḱ";s:3:"ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"Ḳ";s:3:"ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"Ḷ";s:3:"ḷ";s:3:"ḷ";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"Ḽ";s:3:"ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"Ḿ";s:3:"ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"Ṁ";s:3:"ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"Ṃ";s:3:"ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"Ṇ";s:3:"ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"Ṋ";s:3:"ṋ";s:3:"ṋ";s:3:"Ṍ";s:5:"Ṍ";s:3:"ṍ";s:5:"ṍ";s:3:"Ṏ";s:5:"Ṏ";s:3:"ṏ";s:5:"ṏ";s:3:"Ṑ";s:5:"Ṑ";s:3:"ṑ";s:5:"ṑ";s:3:"Ṓ";s:5:"Ṓ";s:3:"ṓ";s:5:"ṓ";s:3:"Ṕ";s:3:"Ṕ";s:3:"ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"Ṗ";s:3:"ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"Ṛ";s:3:"ṛ";s:3:"ṛ";s:3:"Ṝ";s:5:"Ṝ";s:3:"ṝ";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"Ṣ";s:3:"ṣ";s:3:"ṣ";s:3:"Ṥ";s:5:"Ṥ";s:3:"ṥ";s:5:"ṥ";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"Ṭ";s:3:"ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"Ṱ";s:3:"ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"Ṳ";s:3:"ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"Ṵ";s:3:"ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"Ṷ";s:3:"ṷ";s:3:"ṷ";s:3:"Ṹ";s:5:"Ṹ";s:3:"ṹ";s:5:"ṹ";s:3:"Ṻ";s:5:"Ṻ";s:3:"ṻ";s:5:"ṻ";s:3:"Ṽ";s:3:"Ṽ";s:3:"ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"Ṿ";s:3:"ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"Ẁ";s:3:"ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"Ẃ";s:3:"ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"Ẉ";s:3:"ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"Ẑ";s:3:"ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"Ẓ";s:3:"ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"ẘ";s:3:"ẙ";s:3:"ẙ";s:3:"ẚ";s:3:"aʾ";s:3:"ẛ";s:3:"ṡ";s:3:"Ạ";s:3:"Ạ";s:3:"ạ";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"Ấ";s:3:"ấ";s:5:"ấ";s:3:"Ầ";s:5:"Ầ";s:3:"ầ";s:5:"ầ";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"Ắ";s:3:"ắ";s:5:"ắ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"Ẹ";s:3:"ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"Ế";s:3:"ế";s:5:"ế";s:3:"Ề";s:5:"Ề";s:3:"ề";s:5:"ề";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"ễ";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"Ị";s:3:"ị";s:3:"ị";s:3:"Ọ";s:3:"Ọ";s:3:"ọ";s:3:"ọ";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"ỏ";s:3:"Ố";s:5:"Ố";s:3:"ố";s:5:"ố";s:3:"Ồ";s:5:"Ồ";s:3:"ồ";s:5:"ồ";s:3:"Ổ";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"Ỗ";s:5:"Ỗ";s:3:"ỗ";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"ộ";s:5:"ộ";s:3:"Ớ";s:5:"Ớ";s:3:"ớ";s:5:"ớ";s:3:"Ờ";s:5:"Ờ";s:3:"ờ";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"Ỡ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"Ụ";s:3:"ụ";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"Ứ";s:3:"ứ";s:5:"ứ";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"ử";s:5:"ử";s:3:"Ữ";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"Ự";s:5:"Ự";s:3:"ự";s:5:"ự";s:3:"Ỳ";s:3:"Ỳ";s:3:"ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"Ỵ";s:3:"ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"ἀ";s:4:"ἀ";s:3:"ἁ";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἄ";s:3:"ἅ";s:6:"ἅ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"Ἄ";s:3:"Ἅ";s:6:"Ἅ";s:3:"Ἆ";s:6:"Ἆ";s:3:"Ἇ";s:6:"Ἇ";s:3:"ἐ";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"ἒ";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"ἔ";s:6:"ἔ";s:3:"ἕ";s:6:"ἕ";s:3:"Ἐ";s:4:"Ἐ";s:3:"Ἑ";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"Ἓ";s:6:"Ἓ";s:3:"Ἔ";s:6:"Ἔ";s:3:"Ἕ";s:6:"Ἕ";s:3:"ἠ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"ἢ";s:6:"ἢ";s:3:"ἣ";s:6:"ἣ";s:3:"ἤ";s:6:"ἤ";s:3:"ἥ";s:6:"ἥ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"Ἤ";s:3:"Ἥ";s:6:"Ἥ";s:3:"Ἦ";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"ἰ";s:4:"ἰ";s:3:"ἱ";s:4:"ἱ";s:3:"ἲ";s:6:"ἲ";s:3:"ἳ";s:6:"ἳ";s:3:"ἴ";s:6:"ἴ";s:3:"ἵ";s:6:"ἵ";s:3:"ἶ";s:6:"ἶ";s:3:"ἷ";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"Ἱ";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"Ἳ";s:6:"Ἳ";s:3:"Ἴ";s:6:"Ἴ";s:3:"Ἵ";s:6:"Ἵ";s:3:"Ἶ";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"ὀ";s:4:"ὀ";s:3:"ὁ";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὄ";s:3:"ὅ";s:6:"ὅ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"Ὄ";s:3:"Ὅ";s:6:"Ὅ";s:3:"ὐ";s:4:"ὐ";s:3:"ὑ";s:4:"ὑ";s:3:"ὒ";s:6:"ὒ";s:3:"ὓ";s:6:"ὓ";s:3:"ὔ";s:6:"ὔ";s:3:"ὕ";s:6:"ὕ";s:3:"ὖ";s:6:"ὖ";s:3:"ὗ";s:6:"ὗ";s:3:"Ὑ";s:4:"Ὑ";s:3:"Ὓ";s:6:"Ὓ";s:3:"Ὕ";s:6:"Ὕ";s:3:"Ὗ";s:6:"Ὗ";s:3:"ὠ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"ὢ";s:6:"ὢ";s:3:"ὣ";s:6:"ὣ";s:3:"ὤ";s:6:"ὤ";s:3:"ὥ";s:6:"ὥ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"Ὤ";s:3:"Ὥ";s:6:"Ὥ";s:3:"Ὦ";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"ὰ";s:4:"ὰ";s:3:"ά";s:4:"ά";s:3:"ὲ";s:4:"ὲ";s:3:"έ";s:4:"έ";s:3:"ὴ";s:4:"ὴ";s:3:"ή";s:4:"ή";s:3:"ὶ";s:4:"ὶ";s:3:"ί";s:4:"ί";s:3:"ὸ";s:4:"ὸ";s:3:"ό";s:4:"ό";s:3:"ὺ";s:4:"ὺ";s:3:"ύ";s:4:"ύ";s:3:"ὼ";s:4:"ὼ";s:3:"ώ";s:4:"ώ";s:3:"ᾀ";s:6:"ᾀ";s:3:"ᾁ";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ᾄ";s:3:"ᾅ";s:8:"ᾅ";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ᾌ";s:3:"ᾍ";s:8:"ᾍ";s:3:"ᾎ";s:8:"ᾎ";s:3:"ᾏ";s:8:"ᾏ";s:3:"ᾐ";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"ᾒ";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"ᾔ";s:8:"ᾔ";s:3:"ᾕ";s:8:"ᾕ";s:3:"ᾖ";s:8:"ᾖ";s:3:"ᾗ";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"ᾙ";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"ᾛ";s:8:"ᾛ";s:3:"ᾜ";s:8:"ᾜ";s:3:"ᾝ";s:8:"ᾝ";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"ᾠ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"ᾢ";s:8:"ᾢ";s:3:"ᾣ";s:8:"ᾣ";s:3:"ᾤ";s:8:"ᾤ";s:3:"ᾥ";s:8:"ᾥ";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ᾬ";s:3:"ᾭ";s:8:"ᾭ";s:3:"ᾮ";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"ᾰ";s:4:"ᾰ";s:3:"ᾱ";s:4:"ᾱ";s:3:"ᾲ";s:6:"ᾲ";s:3:"ᾳ";s:4:"ᾳ";s:3:"ᾴ";s:6:"ᾴ";s:3:"ᾶ";s:4:"ᾶ";s:3:"ᾷ";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"Ᾱ";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"Ά";s:4:"Ά";s:3:"ᾼ";s:4:"ᾼ";s:3:"᾽";s:3:" ̓";s:3:"ι";s:2:"ι";s:3:"᾿";s:3:" ̓";s:3:"῀";s:3:" ͂";s:3:"῁";s:5:" ̈͂";s:3:"ῂ";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"ῄ";s:6:"ῄ";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"Έ";s:3:"Ὴ";s:4:"Ὴ";s:3:"Ή";s:4:"Ή";s:3:"ῌ";s:4:"ῌ";s:3:"῍";s:5:" ̓̀";s:3:"῎";s:5:" ̓́";s:3:"῏";s:5:" ̓͂";s:3:"ῐ";s:4:"ῐ";s:3:"ῑ";s:4:"ῑ";s:3:"ῒ";s:6:"ῒ";s:3:"ΐ";s:6:"ΐ";s:3:"ῖ";s:4:"ῖ";s:3:"ῗ";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"Ῑ";s:4:"Ῑ";s:3:"Ὶ";s:4:"Ὶ";s:3:"Ί";s:4:"Ί";s:3:"῝";s:5:" ̔̀";s:3:"῞";s:5:" ̔́";s:3:"῟";s:5:" ̔͂";s:3:"ῠ";s:4:"ῠ";s:3:"ῡ";s:4:"ῡ";s:3:"ῢ";s:6:"ῢ";s:3:"ΰ";s:6:"ΰ";s:3:"ῤ";s:4:"ῤ";s:3:"ῥ";s:4:"ῥ";s:3:"ῦ";s:4:"ῦ";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"Ῡ";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"Ύ";s:4:"Ύ";s:3:"Ῥ";s:4:"Ῥ";s:3:"῭";s:5:" ̈̀";s:3:"΅";s:5:" ̈́";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"ῴ";s:6:"ῴ";s:3:"ῶ";s:4:"ῶ";s:3:"ῷ";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"Ό";s:3:"Ὼ";s:4:"Ὼ";s:3:"Ώ";s:4:"Ώ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:3:" ́";s:3:"῾";s:3:" ̔";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:"‑";s:3:"‐";s:3:"‗";s:3:" ̳";s:3:"․";s:1:".";s:3:"‥";s:2:"..";s:3:"…";s:3:"...";s:3:" ";s:1:" ";s:3:"″";s:6:"′′";s:3:"‴";s:9:"′′′";s:3:"‶";s:6:"‵‵";s:3:"‷";s:9:"‵‵‵";s:3:"‼";s:2:"!!";s:3:"‾";s:3:" ̅";s:3:"⁇";s:2:"??";s:3:"⁈";s:2:"?!";s:3:"⁉";s:2:"!?";s:3:"⁗";s:12:"′′′′";s:3:" ";s:1:" ";s:3:"⁰";s:1:"0";s:3:"ⁱ";s:1:"i";s:3:"⁴";s:1:"4";s:3:"⁵";s:1:"5";s:3:"⁶";s:1:"6";s:3:"⁷";s:1:"7";s:3:"⁸";s:1:"8";s:3:"⁹";s:1:"9";s:3:"⁺";s:1:"+";s:3:"⁻";s:3:"−";s:3:"⁼";s:1:"=";s:3:"⁽";s:1:"(";s:3:"⁾";s:1:")";s:3:"ⁿ";s:1:"n";s:3:"₀";s:1:"0";s:3:"₁";s:1:"1";s:3:"₂";s:1:"2";s:3:"₃";s:1:"3";s:3:"₄";s:1:"4";s:3:"₅";s:1:"5";s:3:"₆";s:1:"6";s:3:"₇";s:1:"7";s:3:"₈";s:1:"8";s:3:"₉";s:1:"9";s:3:"₊";s:1:"+";s:3:"₋";s:3:"−";s:3:"₌";s:1:"=";s:3:"₍";s:1:"(";s:3:"₎";s:1:")";s:3:"ₐ";s:1:"a";s:3:"ₑ";s:1:"e";s:3:"ₒ";s:1:"o";s:3:"ₓ";s:1:"x";s:3:"ₔ";s:2:"ə";s:3:"₨";s:2:"Rs";s:3:"℀";s:3:"a/c";s:3:"℁";s:3:"a/s";s:3:"ℂ";s:1:"C";s:3:"℃";s:3:"°C";s:3:"℅";s:3:"c/o";s:3:"℆";s:3:"c/u";s:3:"ℇ";s:2:"Ɛ";s:3:"℉";s:3:"°F";s:3:"ℊ";s:1:"g";s:3:"ℋ";s:1:"H";s:3:"ℌ";s:1:"H";s:3:"ℍ";s:1:"H";s:3:"ℎ";s:1:"h";s:3:"ℏ";s:2:"ħ";s:3:"ℐ";s:1:"I";s:3:"ℑ";s:1:"I";s:3:"ℒ";s:1:"L";s:3:"ℓ";s:1:"l";s:3:"ℕ";s:1:"N";s:3:"№";s:2:"No";s:3:"ℙ";s:1:"P";s:3:"ℚ";s:1:"Q";s:3:"ℛ";s:1:"R";s:3:"ℜ";s:1:"R";s:3:"ℝ";s:1:"R";s:3:"℠";s:2:"SM";s:3:"℡";s:3:"TEL";s:3:"™";s:2:"TM";s:3:"ℤ";s:1:"Z";s:3:"Ω";s:2:"Ω";s:3:"ℨ";s:1:"Z";s:3:"K";s:1:"K";s:3:"Å";s:3:"Å";s:3:"ℬ";s:1:"B";s:3:"ℭ";s:1:"C";s:3:"ℯ";s:1:"e";s:3:"ℰ";s:1:"E";s:3:"ℱ";s:1:"F";s:3:"ℳ";s:1:"M";s:3:"ℴ";s:1:"o";s:3:"ℵ";s:2:"א";s:3:"ℶ";s:2:"ב";s:3:"ℷ";s:2:"ג";s:3:"ℸ";s:2:"ד";s:3:"ℹ";s:1:"i";s:3:"℻";s:3:"FAX";s:3:"ℼ";s:2:"π";s:3:"ℽ";s:2:"γ";s:3:"ℾ";s:2:"Γ";s:3:"ℿ";s:2:"Π";s:3:"⅀";s:3:"∑";s:3:"ⅅ";s:1:"D";s:3:"ⅆ";s:1:"d";s:3:"ⅇ";s:1:"e";s:3:"ⅈ";s:1:"i";s:3:"ⅉ";s:1:"j";s:3:"⅐";s:5:"1⁄7";s:3:"⅑";s:5:"1⁄9";s:3:"⅒";s:6:"1⁄10";s:3:"⅓";s:5:"1⁄3";s:3:"⅔";s:5:"2⁄3";s:3:"⅕";s:5:"1⁄5";s:3:"⅖";s:5:"2⁄5";s:3:"⅗";s:5:"3⁄5";s:3:"⅘";s:5:"4⁄5";s:3:"⅙";s:5:"1⁄6";s:3:"⅚";s:5:"5⁄6";s:3:"⅛";s:5:"1⁄8";s:3:"⅜";s:5:"3⁄8";s:3:"⅝";s:5:"5⁄8";s:3:"⅞";s:5:"7⁄8";s:3:"⅟";s:4:"1⁄";s:3:"Ⅰ";s:1:"I";s:3:"Ⅱ";s:2:"II";s:3:"Ⅲ";s:3:"III";s:3:"Ⅳ";s:2:"IV";s:3:"Ⅴ";s:1:"V";s:3:"Ⅵ";s:2:"VI";s:3:"Ⅶ";s:3:"VII";s:3:"Ⅷ";s:4:"VIII";s:3:"Ⅸ";s:2:"IX";s:3:"Ⅹ";s:1:"X";s:3:"Ⅺ";s:2:"XI";s:3:"Ⅻ";s:3:"XII";s:3:"Ⅼ";s:1:"L";s:3:"Ⅽ";s:1:"C";s:3:"Ⅾ";s:1:"D";s:3:"Ⅿ";s:1:"M";s:3:"ⅰ";s:1:"i";s:3:"ⅱ";s:2:"ii";s:3:"ⅲ";s:3:"iii";s:3:"ⅳ";s:2:"iv";s:3:"ⅴ";s:1:"v";s:3:"ⅵ";s:2:"vi";s:3:"ⅶ";s:3:"vii";s:3:"ⅷ";s:4:"viii";s:3:"ⅸ";s:2:"ix";s:3:"ⅹ";s:1:"x";s:3:"ⅺ";s:2:"xi";s:3:"ⅻ";s:3:"xii";s:3:"ⅼ";s:1:"l";s:3:"ⅽ";s:1:"c";s:3:"ⅾ";s:1:"d";s:3:"ⅿ";s:1:"m";s:3:"↉";s:5:"0⁄3";s:3:"↚";s:5:"↚";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"⇍";s:5:"⇍";s:3:"⇎";s:5:"⇎";s:3:"⇏";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"∬";s:6:"∫∫";s:3:"∭";s:9:"∫∫∫";s:3:"∯";s:6:"∮∮";s:3:"∰";s:9:"∮∮∮";s:3:"≁";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"⊁";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"⋠";s:5:"⋠";s:3:"⋡";s:5:"⋡";s:3:"⋢";s:5:"⋢";s:3:"⋣";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"⋫";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"⋭";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"①";s:1:"1";s:3:"②";s:1:"2";s:3:"③";s:1:"3";s:3:"④";s:1:"4";s:3:"⑤";s:1:"5";s:3:"⑥";s:1:"6";s:3:"⑦";s:1:"7";s:3:"⑧";s:1:"8";s:3:"⑨";s:1:"9";s:3:"⑩";s:2:"10";s:3:"⑪";s:2:"11";s:3:"⑫";s:2:"12";s:3:"⑬";s:2:"13";s:3:"⑭";s:2:"14";s:3:"⑮";s:2:"15";s:3:"⑯";s:2:"16";s:3:"⑰";s:2:"17";s:3:"⑱";s:2:"18";s:3:"⑲";s:2:"19";s:3:"⑳";s:2:"20";s:3:"⑴";s:3:"(1)";s:3:"⑵";s:3:"(2)";s:3:"⑶";s:3:"(3)";s:3:"⑷";s:3:"(4)";s:3:"⑸";s:3:"(5)";s:3:"⑹";s:3:"(6)";s:3:"⑺";s:3:"(7)";s:3:"⑻";s:3:"(8)";s:3:"⑼";s:3:"(9)";s:3:"⑽";s:4:"(10)";s:3:"⑾";s:4:"(11)";s:3:"⑿";s:4:"(12)";s:3:"⒀";s:4:"(13)";s:3:"⒁";s:4:"(14)";s:3:"⒂";s:4:"(15)";s:3:"⒃";s:4:"(16)";s:3:"⒄";s:4:"(17)";s:3:"⒅";s:4:"(18)";s:3:"⒆";s:4:"(19)";s:3:"⒇";s:4:"(20)";s:3:"⒈";s:2:"1.";s:3:"⒉";s:2:"2.";s:3:"⒊";s:2:"3.";s:3:"⒋";s:2:"4.";s:3:"⒌";s:2:"5.";s:3:"⒍";s:2:"6.";s:3:"⒎";s:2:"7.";s:3:"⒏";s:2:"8.";s:3:"⒐";s:2:"9.";s:3:"⒑";s:3:"10.";s:3:"⒒";s:3:"11.";s:3:"⒓";s:3:"12.";s:3:"⒔";s:3:"13.";s:3:"⒕";s:3:"14.";s:3:"⒖";s:3:"15.";s:3:"⒗";s:3:"16.";s:3:"⒘";s:3:"17.";s:3:"⒙";s:3:"18.";s:3:"⒚";s:3:"19.";s:3:"⒛";s:3:"20.";s:3:"⒜";s:3:"(a)";s:3:"⒝";s:3:"(b)";s:3:"⒞";s:3:"(c)";s:3:"⒟";s:3:"(d)";s:3:"⒠";s:3:"(e)";s:3:"⒡";s:3:"(f)";s:3:"⒢";s:3:"(g)";s:3:"⒣";s:3:"(h)";s:3:"⒤";s:3:"(i)";s:3:"⒥";s:3:"(j)";s:3:"⒦";s:3:"(k)";s:3:"⒧";s:3:"(l)";s:3:"⒨";s:3:"(m)";s:3:"⒩";s:3:"(n)";s:3:"⒪";s:3:"(o)";s:3:"⒫";s:3:"(p)";s:3:"⒬";s:3:"(q)";s:3:"⒭";s:3:"(r)";s:3:"⒮";s:3:"(s)";s:3:"⒯";s:3:"(t)";s:3:"⒰";s:3:"(u)";s:3:"⒱";s:3:"(v)";s:3:"⒲";s:3:"(w)";s:3:"⒳";s:3:"(x)";s:3:"⒴";s:3:"(y)";s:3:"⒵";s:3:"(z)";s:3:"Ⓐ";s:1:"A";s:3:"Ⓑ";s:1:"B";s:3:"Ⓒ";s:1:"C";s:3:"Ⓓ";s:1:"D";s:3:"Ⓔ";s:1:"E";s:3:"Ⓕ";s:1:"F";s:3:"Ⓖ";s:1:"G";s:3:"Ⓗ";s:1:"H";s:3:"Ⓘ";s:1:"I";s:3:"Ⓙ";s:1:"J";s:3:"Ⓚ";s:1:"K";s:3:"Ⓛ";s:1:"L";s:3:"Ⓜ";s:1:"M";s:3:"Ⓝ";s:1:"N";s:3:"Ⓞ";s:1:"O";s:3:"Ⓟ";s:1:"P";s:3:"Ⓠ";s:1:"Q";s:3:"Ⓡ";s:1:"R";s:3:"Ⓢ";s:1:"S";s:3:"Ⓣ";s:1:"T";s:3:"Ⓤ";s:1:"U";s:3:"Ⓥ";s:1:"V";s:3:"Ⓦ";s:1:"W";s:3:"Ⓧ";s:1:"X";s:3:"Ⓨ";s:1:"Y";s:3:"Ⓩ";s:1:"Z";s:3:"ⓐ";s:1:"a";s:3:"ⓑ";s:1:"b";s:3:"ⓒ";s:1:"c";s:3:"ⓓ";s:1:"d";s:3:"ⓔ";s:1:"e";s:3:"ⓕ";s:1:"f";s:3:"ⓖ";s:1:"g";s:3:"ⓗ";s:1:"h";s:3:"ⓘ";s:1:"i";s:3:"ⓙ";s:1:"j";s:3:"ⓚ";s:1:"k";s:3:"ⓛ";s:1:"l";s:3:"ⓜ";s:1:"m";s:3:"ⓝ";s:1:"n";s:3:"ⓞ";s:1:"o";s:3:"ⓟ";s:1:"p";s:3:"ⓠ";s:1:"q";s:3:"ⓡ";s:1:"r";s:3:"ⓢ";s:1:"s";s:3:"ⓣ";s:1:"t";s:3:"ⓤ";s:1:"u";s:3:"ⓥ";s:1:"v";s:3:"ⓦ";s:1:"w";s:3:"ⓧ";s:1:"x";s:3:"ⓨ";s:1:"y";s:3:"ⓩ";s:1:"z";s:3:"⓪";s:1:"0";s:3:"⨌";s:12:"∫∫∫∫";s:3:"⩴";s:3:"::=";s:3:"⩵";s:2:"==";s:3:"⩶";s:3:"===";s:3:"⫝̸";s:5:"⫝̸";s:3:"ⱼ";s:1:"j";s:3:"ⱽ";s:1:"V";s:3:"ⵯ";s:3:"ⵡ";s:3:"⺟";s:3:"母";s:3:"⻳";s:3:"龟";s:3:"⼀";s:3:"一";s:3:"⼁";s:3:"丨";s:3:"⼂";s:3:"丶";s:3:"⼃";s:3:"丿";s:3:"⼄";s:3:"乙";s:3:"⼅";s:3:"亅";s:3:"⼆";s:3:"二";s:3:"⼇";s:3:"亠";s:3:"⼈";s:3:"人";s:3:"⼉";s:3:"儿";s:3:"⼊";s:3:"入";s:3:"⼋";s:3:"八";s:3:"⼌";s:3:"冂";s:3:"⼍";s:3:"冖";s:3:"⼎";s:3:"冫";s:3:"⼏";s:3:"几";s:3:"⼐";s:3:"凵";s:3:"⼑";s:3:"刀";s:3:"⼒";s:3:"力";s:3:"⼓";s:3:"勹";s:3:"⼔";s:3:"匕";s:3:"⼕";s:3:"匚";s:3:"⼖";s:3:"匸";s:3:"⼗";s:3:"十";s:3:"⼘";s:3:"卜";s:3:"⼙";s:3:"卩";s:3:"⼚";s:3:"厂";s:3:"⼛";s:3:"厶";s:3:"⼜";s:3:"又";s:3:"⼝";s:3:"口";s:3:"⼞";s:3:"囗";s:3:"⼟";s:3:"土";s:3:"⼠";s:3:"士";s:3:"⼡";s:3:"夂";s:3:"⼢";s:3:"夊";s:3:"⼣";s:3:"夕";s:3:"⼤";s:3:"大";s:3:"⼥";s:3:"女";s:3:"⼦";s:3:"子";s:3:"⼧";s:3:"宀";s:3:"⼨";s:3:"寸";s:3:"⼩";s:3:"小";s:3:"⼪";s:3:"尢";s:3:"⼫";s:3:"尸";s:3:"⼬";s:3:"屮";s:3:"⼭";s:3:"山";s:3:"⼮";s:3:"巛";s:3:"⼯";s:3:"工";s:3:"⼰";s:3:"己";s:3:"⼱";s:3:"巾";s:3:"⼲";s:3:"干";s:3:"⼳";s:3:"幺";s:3:"⼴";s:3:"广";s:3:"⼵";s:3:"廴";s:3:"⼶";s:3:"廾";s:3:"⼷";s:3:"弋";s:3:"⼸";s:3:"弓";s:3:"⼹";s:3:"彐";s:3:"⼺";s:3:"彡";s:3:"⼻";s:3:"彳";s:3:"⼼";s:3:"心";s:3:"⼽";s:3:"戈";s:3:"⼾";s:3:"戶";s:3:"⼿";s:3:"手";s:3:"⽀";s:3:"支";s:3:"⽁";s:3:"攴";s:3:"⽂";s:3:"文";s:3:"⽃";s:3:"斗";s:3:"⽄";s:3:"斤";s:3:"⽅";s:3:"方";s:3:"⽆";s:3:"无";s:3:"⽇";s:3:"日";s:3:"⽈";s:3:"曰";s:3:"⽉";s:3:"月";s:3:"⽊";s:3:"木";s:3:"⽋";s:3:"欠";s:3:"⽌";s:3:"止";s:3:"⽍";s:3:"歹";s:3:"⽎";s:3:"殳";s:3:"⽏";s:3:"毋";s:3:"⽐";s:3:"比";s:3:"⽑";s:3:"毛";s:3:"⽒";s:3:"氏";s:3:"⽓";s:3:"气";s:3:"⽔";s:3:"水";s:3:"⽕";s:3:"火";s:3:"⽖";s:3:"爪";s:3:"⽗";s:3:"父";s:3:"⽘";s:3:"爻";s:3:"⽙";s:3:"爿";s:3:"⽚";s:3:"片";s:3:"⽛";s:3:"牙";s:3:"⽜";s:3:"牛";s:3:"⽝";s:3:"犬";s:3:"⽞";s:3:"玄";s:3:"⽟";s:3:"玉";s:3:"⽠";s:3:"瓜";s:3:"⽡";s:3:"瓦";s:3:"⽢";s:3:"甘";s:3:"⽣";s:3:"生";s:3:"⽤";s:3:"用";s:3:"⽥";s:3:"田";s:3:"⽦";s:3:"疋";s:3:"⽧";s:3:"疒";s:3:"⽨";s:3:"癶";s:3:"⽩";s:3:"白";s:3:"⽪";s:3:"皮";s:3:"⽫";s:3:"皿";s:3:"⽬";s:3:"目";s:3:"⽭";s:3:"矛";s:3:"⽮";s:3:"矢";s:3:"⽯";s:3:"石";s:3:"⽰";s:3:"示";s:3:"⽱";s:3:"禸";s:3:"⽲";s:3:"禾";s:3:"⽳";s:3:"穴";s:3:"⽴";s:3:"立";s:3:"⽵";s:3:"竹";s:3:"⽶";s:3:"米";s:3:"⽷";s:3:"糸";s:3:"⽸";s:3:"缶";s:3:"⽹";s:3:"网";s:3:"⽺";s:3:"羊";s:3:"⽻";s:3:"羽";s:3:"⽼";s:3:"老";s:3:"⽽";s:3:"而";s:3:"⽾";s:3:"耒";s:3:"⽿";s:3:"耳";s:3:"⾀";s:3:"聿";s:3:"⾁";s:3:"肉";s:3:"⾂";s:3:"臣";s:3:"⾃";s:3:"自";s:3:"⾄";s:3:"至";s:3:"⾅";s:3:"臼";s:3:"⾆";s:3:"舌";s:3:"⾇";s:3:"舛";s:3:"⾈";s:3:"舟";s:3:"⾉";s:3:"艮";s:3:"⾊";s:3:"色";s:3:"⾋";s:3:"艸";s:3:"⾌";s:3:"虍";s:3:"⾍";s:3:"虫";s:3:"⾎";s:3:"血";s:3:"⾏";s:3:"行";s:3:"⾐";s:3:"衣";s:3:"⾑";s:3:"襾";s:3:"⾒";s:3:"見";s:3:"⾓";s:3:"角";s:3:"⾔";s:3:"言";s:3:"⾕";s:3:"谷";s:3:"⾖";s:3:"豆";s:3:"⾗";s:3:"豕";s:3:"⾘";s:3:"豸";s:3:"⾙";s:3:"貝";s:3:"⾚";s:3:"赤";s:3:"⾛";s:3:"走";s:3:"⾜";s:3:"足";s:3:"⾝";s:3:"身";s:3:"⾞";s:3:"車";s:3:"⾟";s:3:"辛";s:3:"⾠";s:3:"辰";s:3:"⾡";s:3:"辵";s:3:"⾢";s:3:"邑";s:3:"⾣";s:3:"酉";s:3:"⾤";s:3:"釆";s:3:"⾥";s:3:"里";s:3:"⾦";s:3:"金";s:3:"⾧";s:3:"長";s:3:"⾨";s:3:"門";s:3:"⾩";s:3:"阜";s:3:"⾪";s:3:"隶";s:3:"⾫";s:3:"隹";s:3:"⾬";s:3:"雨";s:3:"⾭";s:3:"靑";s:3:"⾮";s:3:"非";s:3:"⾯";s:3:"面";s:3:"⾰";s:3:"革";s:3:"⾱";s:3:"韋";s:3:"⾲";s:3:"韭";s:3:"⾳";s:3:"音";s:3:"⾴";s:3:"頁";s:3:"⾵";s:3:"風";s:3:"⾶";s:3:"飛";s:3:"⾷";s:3:"食";s:3:"⾸";s:3:"首";s:3:"⾹";s:3:"香";s:3:"⾺";s:3:"馬";s:3:"⾻";s:3:"骨";s:3:"⾼";s:3:"高";s:3:"⾽";s:3:"髟";s:3:"⾾";s:3:"鬥";s:3:"⾿";s:3:"鬯";s:3:"⿀";s:3:"鬲";s:3:"⿁";s:3:"鬼";s:3:"⿂";s:3:"魚";s:3:"⿃";s:3:"鳥";s:3:"⿄";s:3:"鹵";s:3:"⿅";s:3:"鹿";s:3:"⿆";s:3:"麥";s:3:"⿇";s:3:"麻";s:3:"⿈";s:3:"黃";s:3:"⿉";s:3:"黍";s:3:"⿊";s:3:"黑";s:3:"⿋";s:3:"黹";s:3:"⿌";s:3:"黽";s:3:"⿍";s:3:"鼎";s:3:"⿎";s:3:"鼓";s:3:"⿏";s:3:"鼠";s:3:"⿐";s:3:"鼻";s:3:"⿑";s:3:"齊";s:3:"⿒";s:3:"齒";s:3:"⿓";s:3:"龍";s:3:"⿔";s:3:"龜";s:3:"⿕";s:3:"龠";s:3:" ";s:1:" ";s:3:"〶";s:3:"〒";s:3:"〸";s:3:"十";s:3:"〹";s:3:"卄";s:3:"〺";s:3:"卅";s:3:"が";s:6:"が";s:3:"ぎ";s:6:"ぎ";s:3:"ぐ";s:6:"ぐ";s:3:"げ";s:6:"げ";s:3:"ご";s:6:"ご";s:3:"ざ";s:6:"ざ";s:3:"じ";s:6:"じ";s:3:"ず";s:6:"ず";s:3:"ぜ";s:6:"ぜ";s:3:"ぞ";s:6:"ぞ";s:3:"だ";s:6:"だ";s:3:"ぢ";s:6:"ぢ";s:3:"づ";s:6:"づ";s:3:"で";s:6:"で";s:3:"ど";s:6:"ど";s:3:"ば";s:6:"ば";s:3:"ぱ";s:6:"ぱ";s:3:"び";s:6:"び";s:3:"ぴ";s:6:"ぴ";s:3:"ぶ";s:6:"ぶ";s:3:"ぷ";s:6:"ぷ";s:3:"べ";s:6:"べ";s:3:"ぺ";s:6:"ぺ";s:3:"ぼ";s:6:"ぼ";s:3:"ぽ";s:6:"ぽ";s:3:"ゔ";s:6:"ゔ";s:3:"゛";s:4:" ゙";s:3:"゜";s:4:" ゚";s:3:"ゞ";s:6:"ゞ";s:3:"ゟ";s:6:"より";s:3:"ガ";s:6:"ガ";s:3:"ギ";s:6:"ギ";s:3:"グ";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ゴ";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ジ";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ダ";s:3:"ヂ";s:6:"ヂ";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"バ";s:6:"バ";s:3:"パ";s:6:"パ";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ポ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"ヿ";s:6:"コト";s:3:"ㄱ";s:3:"ᄀ";s:3:"ㄲ";s:3:"ᄁ";s:3:"ㄳ";s:3:"ᆪ";s:3:"ㄴ";s:3:"ᄂ";s:3:"ㄵ";s:3:"ᆬ";s:3:"ㄶ";s:3:"ᆭ";s:3:"ㄷ";s:3:"ᄃ";s:3:"ㄸ";s:3:"ᄄ";s:3:"ㄹ";s:3:"ᄅ";s:3:"ㄺ";s:3:"ᆰ";s:3:"ㄻ";s:3:"ᆱ";s:3:"ㄼ";s:3:"ᆲ";s:3:"ㄽ";s:3:"ᆳ";s:3:"ㄾ";s:3:"ᆴ";s:3:"ㄿ";s:3:"ᆵ";s:3:"ㅀ";s:3:"ᄚ";s:3:"ㅁ";s:3:"ᄆ";s:3:"ㅂ";s:3:"ᄇ";s:3:"ㅃ";s:3:"ᄈ";s:3:"ㅄ";s:3:"ᄡ";s:3:"ㅅ";s:3:"ᄉ";s:3:"ㅆ";s:3:"ᄊ";s:3:"ㅇ";s:3:"ᄋ";s:3:"ㅈ";s:3:"ᄌ";s:3:"ㅉ";s:3:"ᄍ";s:3:"ㅊ";s:3:"ᄎ";s:3:"ㅋ";s:3:"ᄏ";s:3:"ㅌ";s:3:"ᄐ";s:3:"ㅍ";s:3:"ᄑ";s:3:"ㅎ";s:3:"ᄒ";s:3:"ㅏ";s:3:"ᅡ";s:3:"ㅐ";s:3:"ᅢ";s:3:"ㅑ";s:3:"ᅣ";s:3:"ㅒ";s:3:"ᅤ";s:3:"ㅓ";s:3:"ᅥ";s:3:"ㅔ";s:3:"ᅦ";s:3:"ㅕ";s:3:"ᅧ";s:3:"ㅖ";s:3:"ᅨ";s:3:"ㅗ";s:3:"ᅩ";s:3:"ㅘ";s:3:"ᅪ";s:3:"ㅙ";s:3:"ᅫ";s:3:"ㅚ";s:3:"ᅬ";s:3:"ㅛ";s:3:"ᅭ";s:3:"ㅜ";s:3:"ᅮ";s:3:"ㅝ";s:3:"ᅯ";s:3:"ㅞ";s:3:"ᅰ";s:3:"ㅟ";s:3:"ᅱ";s:3:"ㅠ";s:3:"ᅲ";s:3:"ㅡ";s:3:"ᅳ";s:3:"ㅢ";s:3:"ᅴ";s:3:"ㅣ";s:3:"ᅵ";s:3:"ㅤ";s:3:"ᅠ";s:3:"ㅥ";s:3:"ᄔ";s:3:"ㅦ";s:3:"ᄕ";s:3:"ㅧ";s:3:"ᇇ";s:3:"ㅨ";s:3:"ᇈ";s:3:"ㅩ";s:3:"ᇌ";s:3:"ㅪ";s:3:"ᇎ";s:3:"ㅫ";s:3:"ᇓ";s:3:"ㅬ";s:3:"ᇗ";s:3:"ㅭ";s:3:"ᇙ";s:3:"ㅮ";s:3:"ᄜ";s:3:"ㅯ";s:3:"ᇝ";s:3:"ㅰ";s:3:"ᇟ";s:3:"ㅱ";s:3:"ᄝ";s:3:"ㅲ";s:3:"ᄞ";s:3:"ㅳ";s:3:"ᄠ";s:3:"ㅴ";s:3:"ᄢ";s:3:"ㅵ";s:3:"ᄣ";s:3:"ㅶ";s:3:"ᄧ";s:3:"ㅷ";s:3:"ᄩ";s:3:"ㅸ";s:3:"ᄫ";s:3:"ㅹ";s:3:"ᄬ";s:3:"ㅺ";s:3:"ᄭ";s:3:"ㅻ";s:3:"ᄮ";s:3:"ㅼ";s:3:"ᄯ";s:3:"ㅽ";s:3:"ᄲ";s:3:"ㅾ";s:3:"ᄶ";s:3:"ㅿ";s:3:"ᅀ";s:3:"ㆀ";s:3:"ᅇ";s:3:"ㆁ";s:3:"ᅌ";s:3:"ㆂ";s:3:"ᇱ";s:3:"ㆃ";s:3:"ᇲ";s:3:"ㆄ";s:3:"ᅗ";s:3:"ㆅ";s:3:"ᅘ";s:3:"ㆆ";s:3:"ᅙ";s:3:"ㆇ";s:3:"ᆄ";s:3:"ㆈ";s:3:"ᆅ";s:3:"ㆉ";s:3:"ᆈ";s:3:"ㆊ";s:3:"ᆑ";s:3:"ㆋ";s:3:"ᆒ";s:3:"ㆌ";s:3:"ᆔ";s:3:"ㆍ";s:3:"ᆞ";s:3:"ㆎ";s:3:"ᆡ";s:3:"㆒";s:3:"一";s:3:"㆓";s:3:"二";s:3:"㆔";s:3:"三";s:3:"㆕";s:3:"四";s:3:"㆖";s:3:"上";s:3:"㆗";s:3:"中";s:3:"㆘";s:3:"下";s:3:"㆙";s:3:"甲";s:3:"㆚";s:3:"乙";s:3:"㆛";s:3:"丙";s:3:"㆜";s:3:"丁";s:3:"㆝";s:3:"天";s:3:"㆞";s:3:"地";s:3:"㆟";s:3:"人";s:3:"㈀";s:5:"(ᄀ)";s:3:"㈁";s:5:"(ᄂ)";s:3:"㈂";s:5:"(ᄃ)";s:3:"㈃";s:5:"(ᄅ)";s:3:"㈄";s:5:"(ᄆ)";s:3:"㈅";s:5:"(ᄇ)";s:3:"㈆";s:5:"(ᄉ)";s:3:"㈇";s:5:"(ᄋ)";s:3:"㈈";s:5:"(ᄌ)";s:3:"㈉";s:5:"(ᄎ)";s:3:"㈊";s:5:"(ᄏ)";s:3:"㈋";s:5:"(ᄐ)";s:3:"㈌";s:5:"(ᄑ)";s:3:"㈍";s:5:"(ᄒ)";s:3:"㈎";s:8:"(가)";s:3:"㈏";s:8:"(나)";s:3:"㈐";s:8:"(다)";s:3:"㈑";s:8:"(라)";s:3:"㈒";s:8:"(마)";s:3:"㈓";s:8:"(바)";s:3:"㈔";s:8:"(사)";s:3:"㈕";s:8:"(아)";s:3:"㈖";s:8:"(자)";s:3:"㈗";s:8:"(차)";s:3:"㈘";s:8:"(카)";s:3:"㈙";s:8:"(타)";s:3:"㈚";s:8:"(파)";s:3:"㈛";s:8:"(하)";s:3:"㈜";s:8:"(주)";s:3:"㈝";s:17:"(오전)";s:3:"㈞";s:14:"(오후)";s:3:"㈠";s:5:"(一)";s:3:"㈡";s:5:"(二)";s:3:"㈢";s:5:"(三)";s:3:"㈣";s:5:"(四)";s:3:"㈤";s:5:"(五)";s:3:"㈥";s:5:"(六)";s:3:"㈦";s:5:"(七)";s:3:"㈧";s:5:"(八)";s:3:"㈨";s:5:"(九)";s:3:"㈩";s:5:"(十)";s:3:"㈪";s:5:"(月)";s:3:"㈫";s:5:"(火)";s:3:"㈬";s:5:"(水)";s:3:"㈭";s:5:"(木)";s:3:"㈮";s:5:"(金)";s:3:"㈯";s:5:"(土)";s:3:"㈰";s:5:"(日)";s:3:"㈱";s:5:"(株)";s:3:"㈲";s:5:"(有)";s:3:"㈳";s:5:"(社)";s:3:"㈴";s:5:"(名)";s:3:"㈵";s:5:"(特)";s:3:"㈶";s:5:"(財)";s:3:"㈷";s:5:"(祝)";s:3:"㈸";s:5:"(労)";s:3:"㈹";s:5:"(代)";s:3:"㈺";s:5:"(呼)";s:3:"㈻";s:5:"(学)";s:3:"㈼";s:5:"(監)";s:3:"㈽";s:5:"(企)";s:3:"㈾";s:5:"(資)";s:3:"㈿";s:5:"(協)";s:3:"㉀";s:5:"(祭)";s:3:"㉁";s:5:"(休)";s:3:"㉂";s:5:"(自)";s:3:"㉃";s:5:"(至)";s:3:"㉄";s:3:"問";s:3:"㉅";s:3:"幼";s:3:"㉆";s:3:"文";s:3:"㉇";s:3:"箏";s:3:"㉐";s:3:"PTE";s:3:"㉑";s:2:"21";s:3:"㉒";s:2:"22";s:3:"㉓";s:2:"23";s:3:"㉔";s:2:"24";s:3:"㉕";s:2:"25";s:3:"㉖";s:2:"26";s:3:"㉗";s:2:"27";s:3:"㉘";s:2:"28";s:3:"㉙";s:2:"29";s:3:"㉚";s:2:"30";s:3:"㉛";s:2:"31";s:3:"㉜";s:2:"32";s:3:"㉝";s:2:"33";s:3:"㉞";s:2:"34";s:3:"㉟";s:2:"35";s:3:"㉠";s:3:"ᄀ";s:3:"㉡";s:3:"ᄂ";s:3:"㉢";s:3:"ᄃ";s:3:"㉣";s:3:"ᄅ";s:3:"㉤";s:3:"ᄆ";s:3:"㉥";s:3:"ᄇ";s:3:"㉦";s:3:"ᄉ";s:3:"㉧";s:3:"ᄋ";s:3:"㉨";s:3:"ᄌ";s:3:"㉩";s:3:"ᄎ";s:3:"㉪";s:3:"ᄏ";s:3:"㉫";s:3:"ᄐ";s:3:"㉬";s:3:"ᄑ";s:3:"㉭";s:3:"ᄒ";s:3:"㉮";s:6:"가";s:3:"㉯";s:6:"나";s:3:"㉰";s:6:"다";s:3:"㉱";s:6:"라";s:3:"㉲";s:6:"마";s:3:"㉳";s:6:"바";s:3:"㉴";s:6:"사";s:3:"㉵";s:6:"아";s:3:"㉶";s:6:"자";s:3:"㉷";s:6:"차";s:3:"㉸";s:6:"카";s:3:"㉹";s:6:"타";s:3:"㉺";s:6:"파";s:3:"㉻";s:6:"하";s:3:"㉼";s:15:"참고";s:3:"㉽";s:12:"주의";s:3:"㉾";s:6:"우";s:3:"㊀";s:3:"一";s:3:"㊁";s:3:"二";s:3:"㊂";s:3:"三";s:3:"㊃";s:3:"四";s:3:"㊄";s:3:"五";s:3:"㊅";s:3:"六";s:3:"㊆";s:3:"七";s:3:"㊇";s:3:"八";s:3:"㊈";s:3:"九";s:3:"㊉";s:3:"十";s:3:"㊊";s:3:"月";s:3:"㊋";s:3:"火";s:3:"㊌";s:3:"水";s:3:"㊍";s:3:"木";s:3:"㊎";s:3:"金";s:3:"㊏";s:3:"土";s:3:"㊐";s:3:"日";s:3:"㊑";s:3:"株";s:3:"㊒";s:3:"有";s:3:"㊓";s:3:"社";s:3:"㊔";s:3:"名";s:3:"㊕";s:3:"特";s:3:"㊖";s:3:"財";s:3:"㊗";s:3:"祝";s:3:"㊘";s:3:"労";s:3:"㊙";s:3:"秘";s:3:"㊚";s:3:"男";s:3:"㊛";s:3:"女";s:3:"㊜";s:3:"適";s:3:"㊝";s:3:"優";s:3:"㊞";s:3:"印";s:3:"㊟";s:3:"注";s:3:"㊠";s:3:"項";s:3:"㊡";s:3:"休";s:3:"㊢";s:3:"写";s:3:"㊣";s:3:"正";s:3:"㊤";s:3:"上";s:3:"㊥";s:3:"中";s:3:"㊦";s:3:"下";s:3:"㊧";s:3:"左";s:3:"㊨";s:3:"右";s:3:"㊩";s:3:"医";s:3:"㊪";s:3:"宗";s:3:"㊫";s:3:"学";s:3:"㊬";s:3:"監";s:3:"㊭";s:3:"企";s:3:"㊮";s:3:"資";s:3:"㊯";s:3:"協";s:3:"㊰";s:3:"夜";s:3:"㊱";s:2:"36";s:3:"㊲";s:2:"37";s:3:"㊳";s:2:"38";s:3:"㊴";s:2:"39";s:3:"㊵";s:2:"40";s:3:"㊶";s:2:"41";s:3:"㊷";s:2:"42";s:3:"㊸";s:2:"43";s:3:"㊹";s:2:"44";s:3:"㊺";s:2:"45";s:3:"㊻";s:2:"46";s:3:"㊼";s:2:"47";s:3:"㊽";s:2:"48";s:3:"㊾";s:2:"49";s:3:"㊿";s:2:"50";s:3:"㋀";s:4:"1月";s:3:"㋁";s:4:"2月";s:3:"㋂";s:4:"3月";s:3:"㋃";s:4:"4月";s:3:"㋄";s:4:"5月";s:3:"㋅";s:4:"6月";s:3:"㋆";s:4:"7月";s:3:"㋇";s:4:"8月";s:3:"㋈";s:4:"9月";s:3:"㋉";s:5:"10月";s:3:"㋊";s:5:"11月";s:3:"㋋";s:5:"12月";s:3:"㋌";s:2:"Hg";s:3:"㋍";s:3:"erg";s:3:"㋎";s:2:"eV";s:3:"㋏";s:3:"LTD";s:3:"㋐";s:3:"ア";s:3:"㋑";s:3:"イ";s:3:"㋒";s:3:"ウ";s:3:"㋓";s:3:"エ";s:3:"㋔";s:3:"オ";s:3:"㋕";s:3:"カ";s:3:"㋖";s:3:"キ";s:3:"㋗";s:3:"ク";s:3:"㋘";s:3:"ケ";s:3:"㋙";s:3:"コ";s:3:"㋚";s:3:"サ";s:3:"㋛";s:3:"シ";s:3:"㋜";s:3:"ス";s:3:"㋝";s:3:"セ";s:3:"㋞";s:3:"ソ";s:3:"㋟";s:3:"タ";s:3:"㋠";s:3:"チ";s:3:"㋡";s:3:"ツ";s:3:"㋢";s:3:"テ";s:3:"㋣";s:3:"ト";s:3:"㋤";s:3:"ナ";s:3:"㋥";s:3:"ニ";s:3:"㋦";s:3:"ヌ";s:3:"㋧";s:3:"ネ";s:3:"㋨";s:3:"ノ";s:3:"㋩";s:3:"ハ";s:3:"㋪";s:3:"ヒ";s:3:"㋫";s:3:"フ";s:3:"㋬";s:3:"ヘ";s:3:"㋭";s:3:"ホ";s:3:"㋮";s:3:"マ";s:3:"㋯";s:3:"ミ";s:3:"㋰";s:3:"ム";s:3:"㋱";s:3:"メ";s:3:"㋲";s:3:"モ";s:3:"㋳";s:3:"ヤ";s:3:"㋴";s:3:"ユ";s:3:"㋵";s:3:"ヨ";s:3:"㋶";s:3:"ラ";s:3:"㋷";s:3:"リ";s:3:"㋸";s:3:"ル";s:3:"㋹";s:3:"レ";s:3:"㋺";s:3:"ロ";s:3:"㋻";s:3:"ワ";s:3:"㋼";s:3:"ヰ";s:3:"㋽";s:3:"ヱ";s:3:"㋾";s:3:"ヲ";s:3:"㌀";s:15:"アパート";s:3:"㌁";s:12:"アルファ";s:3:"㌂";s:15:"アンペア";s:3:"㌃";s:9:"アール";s:3:"㌄";s:15:"イニング";s:3:"㌅";s:9:"インチ";s:3:"㌆";s:9:"ウォン";s:3:"㌇";s:18:"エスクード";s:3:"㌈";s:12:"エーカー";s:3:"㌉";s:9:"オンス";s:3:"㌊";s:9:"オーム";s:3:"㌋";s:9:"カイリ";s:3:"㌌";s:12:"カラット";s:3:"㌍";s:12:"カロリー";s:3:"㌎";s:12:"ガロン";s:3:"㌏";s:12:"ガンマ";s:3:"㌐";s:12:"ギガ";s:3:"㌑";s:12:"ギニー";s:3:"㌒";s:12:"キュリー";s:3:"㌓";s:18:"ギルダー";s:3:"㌔";s:6:"キロ";s:3:"㌕";s:18:"キログラム";s:3:"㌖";s:18:"キロメートル";s:3:"㌗";s:15:"キロワット";s:3:"㌘";s:12:"グラム";s:3:"㌙";s:18:"グラムトン";s:3:"㌚";s:18:"クルゼイロ";s:3:"㌛";s:12:"クローネ";s:3:"㌜";s:9:"ケース";s:3:"㌝";s:9:"コルナ";s:3:"㌞";s:12:"コーポ";s:3:"㌟";s:12:"サイクル";s:3:"㌠";s:15:"サンチーム";s:3:"㌡";s:15:"シリング";s:3:"㌢";s:9:"センチ";s:3:"㌣";s:9:"セント";s:3:"㌤";s:12:"ダース";s:3:"㌥";s:9:"デシ";s:3:"㌦";s:9:"ドル";s:3:"㌧";s:6:"トン";s:3:"㌨";s:6:"ナノ";s:3:"㌩";s:9:"ノット";s:3:"㌪";s:9:"ハイツ";s:3:"㌫";s:18:"パーセント";s:3:"㌬";s:12:"パーツ";s:3:"㌭";s:15:"バーレル";s:3:"㌮";s:18:"ピアストル";s:3:"㌯";s:12:"ピクル";s:3:"㌰";s:9:"ピコ";s:3:"㌱";s:9:"ビル";s:3:"㌲";s:18:"ファラッド";s:3:"㌳";s:12:"フィート";s:3:"㌴";s:18:"ブッシェル";s:3:"㌵";s:9:"フラン";s:3:"㌶";s:15:"ヘクタール";s:3:"㌷";s:9:"ペソ";s:3:"㌸";s:12:"ペニヒ";s:3:"㌹";s:9:"ヘルツ";s:3:"㌺";s:12:"ペンス";s:3:"㌻";s:15:"ページ";s:3:"㌼";s:12:"ベータ";s:3:"㌽";s:15:"ポイント";s:3:"㌾";s:12:"ボルト";s:3:"㌿";s:6:"ホン";s:3:"㍀";s:15:"ポンド";s:3:"㍁";s:9:"ホール";s:3:"㍂";s:9:"ホーン";s:3:"㍃";s:12:"マイクロ";s:3:"㍄";s:9:"マイル";s:3:"㍅";s:9:"マッハ";s:3:"㍆";s:9:"マルク";s:3:"㍇";s:15:"マンション";s:3:"㍈";s:12:"ミクロン";s:3:"㍉";s:6:"ミリ";s:3:"㍊";s:18:"ミリバール";s:3:"㍋";s:9:"メガ";s:3:"㍌";s:15:"メガトン";s:3:"㍍";s:12:"メートル";s:3:"㍎";s:12:"ヤード";s:3:"㍏";s:9:"ヤール";s:3:"㍐";s:9:"ユアン";s:3:"㍑";s:12:"リットル";s:3:"㍒";s:6:"リラ";s:3:"㍓";s:12:"ルピー";s:3:"㍔";s:15:"ルーブル";s:3:"㍕";s:6:"レム";s:3:"㍖";s:18:"レントゲン";s:3:"㍗";s:9:"ワット";s:3:"㍘";s:4:"0点";s:3:"㍙";s:4:"1点";s:3:"㍚";s:4:"2点";s:3:"㍛";s:4:"3点";s:3:"㍜";s:4:"4点";s:3:"㍝";s:4:"5点";s:3:"㍞";s:4:"6点";s:3:"㍟";s:4:"7点";s:3:"㍠";s:4:"8点";s:3:"㍡";s:4:"9点";s:3:"㍢";s:5:"10点";s:3:"㍣";s:5:"11点";s:3:"㍤";s:5:"12点";s:3:"㍥";s:5:"13点";s:3:"㍦";s:5:"14点";s:3:"㍧";s:5:"15点";s:3:"㍨";s:5:"16点";s:3:"㍩";s:5:"17点";s:3:"㍪";s:5:"18点";s:3:"㍫";s:5:"19点";s:3:"㍬";s:5:"20点";s:3:"㍭";s:5:"21点";s:3:"㍮";s:5:"22点";s:3:"㍯";s:5:"23点";s:3:"㍰";s:5:"24点";s:3:"㍱";s:3:"hPa";s:3:"㍲";s:2:"da";s:3:"㍳";s:2:"AU";s:3:"㍴";s:3:"bar";s:3:"㍵";s:2:"oV";s:3:"㍶";s:2:"pc";s:3:"㍷";s:2:"dm";s:3:"㍸";s:3:"dm2";s:3:"㍹";s:3:"dm3";s:3:"㍺";s:2:"IU";s:3:"㍻";s:6:"平成";s:3:"㍼";s:6:"昭和";s:3:"㍽";s:6:"大正";s:3:"㍾";s:6:"明治";s:3:"㍿";s:12:"株式会社";s:3:"㎀";s:2:"pA";s:3:"㎁";s:2:"nA";s:3:"㎂";s:3:"μA";s:3:"㎃";s:2:"mA";s:3:"㎄";s:2:"kA";s:3:"㎅";s:2:"KB";s:3:"㎆";s:2:"MB";s:3:"㎇";s:2:"GB";s:3:"㎈";s:3:"cal";s:3:"㎉";s:4:"kcal";s:3:"㎊";s:2:"pF";s:3:"㎋";s:2:"nF";s:3:"㎌";s:3:"μF";s:3:"㎍";s:3:"μg";s:3:"㎎";s:2:"mg";s:3:"㎏";s:2:"kg";s:3:"㎐";s:2:"Hz";s:3:"㎑";s:3:"kHz";s:3:"㎒";s:3:"MHz";s:3:"㎓";s:3:"GHz";s:3:"㎔";s:3:"THz";s:3:"㎕";s:3:"μl";s:3:"㎖";s:2:"ml";s:3:"㎗";s:2:"dl";s:3:"㎘";s:2:"kl";s:3:"㎙";s:2:"fm";s:3:"㎚";s:2:"nm";s:3:"㎛";s:3:"μm";s:3:"㎜";s:2:"mm";s:3:"㎝";s:2:"cm";s:3:"㎞";s:2:"km";s:3:"㎟";s:3:"mm2";s:3:"㎠";s:3:"cm2";s:3:"㎡";s:2:"m2";s:3:"㎢";s:3:"km2";s:3:"㎣";s:3:"mm3";s:3:"㎤";s:3:"cm3";s:3:"㎥";s:2:"m3";s:3:"㎦";s:3:"km3";s:3:"㎧";s:5:"m∕s";s:3:"㎨";s:6:"m∕s2";s:3:"㎩";s:2:"Pa";s:3:"㎪";s:3:"kPa";s:3:"㎫";s:3:"MPa";s:3:"㎬";s:3:"GPa";s:3:"㎭";s:3:"rad";s:3:"㎮";s:7:"rad∕s";s:3:"㎯";s:8:"rad∕s2";s:3:"㎰";s:2:"ps";s:3:"㎱";s:2:"ns";s:3:"㎲";s:3:"μs";s:3:"㎳";s:2:"ms";s:3:"㎴";s:2:"pV";s:3:"㎵";s:2:"nV";s:3:"㎶";s:3:"μV";s:3:"㎷";s:2:"mV";s:3:"㎸";s:2:"kV";s:3:"㎹";s:2:"MV";s:3:"㎺";s:2:"pW";s:3:"㎻";s:2:"nW";s:3:"㎼";s:3:"μW";s:3:"㎽";s:2:"mW";s:3:"㎾";s:2:"kW";s:3:"㎿";s:2:"MW";s:3:"㏀";s:3:"kΩ";s:3:"㏁";s:3:"MΩ";s:3:"㏂";s:4:"a.m.";s:3:"㏃";s:2:"Bq";s:3:"㏄";s:2:"cc";s:3:"㏅";s:2:"cd";s:3:"㏆";s:6:"C∕kg";s:3:"㏇";s:3:"Co.";s:3:"㏈";s:2:"dB";s:3:"㏉";s:2:"Gy";s:3:"㏊";s:2:"ha";s:3:"㏋";s:2:"HP";s:3:"㏌";s:2:"in";s:3:"㏍";s:2:"KK";s:3:"㏎";s:2:"KM";s:3:"㏏";s:2:"kt";s:3:"㏐";s:2:"lm";s:3:"㏑";s:2:"ln";s:3:"㏒";s:3:"log";s:3:"㏓";s:2:"lx";s:3:"㏔";s:2:"mb";s:3:"㏕";s:3:"mil";s:3:"㏖";s:3:"mol";s:3:"㏗";s:2:"PH";s:3:"㏘";s:4:"p.m.";s:3:"㏙";s:3:"PPM";s:3:"㏚";s:2:"PR";s:3:"㏛";s:2:"sr";s:3:"㏜";s:2:"Sv";s:3:"㏝";s:2:"Wb";s:3:"㏞";s:5:"V∕m";s:3:"㏟";s:5:"A∕m";s:3:"㏠";s:4:"1日";s:3:"㏡";s:4:"2日";s:3:"㏢";s:4:"3日";s:3:"㏣";s:4:"4日";s:3:"㏤";s:4:"5日";s:3:"㏥";s:4:"6日";s:3:"㏦";s:4:"7日";s:3:"㏧";s:4:"8日";s:3:"㏨";s:4:"9日";s:3:"㏩";s:5:"10日";s:3:"㏪";s:5:"11日";s:3:"㏫";s:5:"12日";s:3:"㏬";s:5:"13日";s:3:"㏭";s:5:"14日";s:3:"㏮";s:5:"15日";s:3:"㏯";s:5:"16日";s:3:"㏰";s:5:"17日";s:3:"㏱";s:5:"18日";s:3:"㏲";s:5:"19日";s:3:"㏳";s:5:"20日";s:3:"㏴";s:5:"21日";s:3:"㏵";s:5:"22日";s:3:"㏶";s:5:"23日";s:3:"㏷";s:5:"24日";s:3:"㏸";s:5:"25日";s:3:"㏹";s:5:"26日";s:3:"㏺";s:5:"27日";s:3:"㏻";s:5:"28日";s:3:"㏼";s:5:"29日";s:3:"㏽";s:5:"30日";s:3:"㏾";s:5:"31日";s:3:"㏿";s:3:"gal";s:3:"ꝰ";s:3:"ꝯ";s:3:"豈";s:3:"豈";s:3:"更";s:3:"更";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"句";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"羅";s:3:"羅";s:3:"蘿";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"珞";s:3:"落";s:3:"落";s:3:"酪";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"卵";s:3:"欄";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"嵐";s:3:"濫";s:3:"濫";s:3:"藍";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"蠟";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"勞";s:3:"擄";s:3:"擄";s:3:"櫓";s:3:"櫓";s:3:"爐";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"老";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"路";s:3:"露";s:3:"露";s:3:"魯";s:3:"魯";s:3:"鷺";s:3:"鷺";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"論";s:3:"論";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"籠";s:3:"聾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"淚";s:3:"淚";s:3:"漏";s:3:"漏";s:3:"累";s:3:"累";s:3:"縷";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"勒";s:3:"肋";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"拏";s:3:"樂";s:3:"樂";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"異";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"索";s:3:"參";s:3:"參";s:3:"塞";s:3:"塞";s:3:"省";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"若";s:3:"掠";s:3:"掠";s:3:"略";s:3:"略";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"諒";s:3:"量";s:3:"量";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"呂";s:3:"女";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"歷";s:3:"轢";s:3:"轢";s:3:"年";s:3:"年";s:3:"憐";s:3:"憐";s:3:"戀";s:3:"戀";s:3:"撚";s:3:"撚";s:3:"漣";s:3:"漣";s:3:"煉";s:3:"煉";s:3:"璉";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"練";s:3:"練";s:3:"聯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"蓮";s:3:"連";s:3:"連";s:3:"鍊";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"劣";s:3:"咽";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"捻";s:3:"殮";s:3:"殮";s:3:"簾";s:3:"簾";s:3:"獵";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"靈";s:3:"領";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"尿";s:3:"料";s:3:"料";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"療";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"遼";s:3:"龍";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"流";s:3:"流";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"琉";s:3:"留";s:3:"留";s:3:"硫";s:3:"硫";s:3:"紐";s:3:"紐";s:3:"類";s:3:"類";s:3:"六";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"崙";s:3:"淪";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"慄";s:3:"栗";s:3:"栗";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"利";s:3:"利";s:3:"吏";s:3:"吏";s:3:"履";s:3:"履";s:3:"易";s:3:"易";s:3:"李";s:3:"李";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"泥";s:3:"理";s:3:"理";s:3:"痢";s:3:"痢";s:3:"罹";s:3:"罹";s:3:"裏";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"吝";s:3:"燐";s:3:"燐";s:3:"璘";s:3:"璘";s:3:"藺";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"林";s:3:"林";s:3:"淋";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"立";s:3:"立";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"粒";s:3:"狀";s:3:"狀";s:3:"炙";s:3:"炙";s:3:"識";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"度";s:3:"度";s:3:"拓";s:3:"拓";s:3:"糖";s:3:"糖";s:3:"宅";s:3:"宅";s:3:"洞";s:3:"洞";s:3:"暴";s:3:"暴";s:3:"輻";s:3:"輻";s:3:"行";s:3:"行";s:3:"降";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"兀";s:3:"嗀";s:3:"嗀";s:3:"塚";s:3:"塚";s:3:"晴";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"福";s:3:"靖";s:3:"靖";s:3:"精";s:3:"精";s:3:"羽";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"侮";s:3:"僧";s:3:"僧";s:3:"免";s:3:"免";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"卑";s:3:"喝";s:3:"喝";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"屮";s:3:"悔";s:3:"悔";s:3:"慨";s:3:"慨";s:3:"憎";s:3:"憎";s:3:"懲";s:3:"懲";s:3:"敏";s:3:"敏";s:3:"既";s:3:"既";s:3:"暑";s:3:"暑";s:3:"梅";s:3:"梅";s:3:"海";s:3:"海";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"漢";s:3:"煮";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"琢";s:3:"琢";s:3:"碑";s:3:"碑";s:3:"社";s:3:"社";s:3:"祉";s:3:"祉";s:3:"祈";s:3:"祈";s:3:"祐";s:3:"祐";s:3:"祖";s:3:"祖";s:3:"祝";s:3:"祝";s:3:"禍";s:3:"禍";s:3:"禎";s:3:"禎";s:3:"穀";s:3:"穀";s:3:"突";s:3:"突";s:3:"節";s:3:"節";s:3:"練";s:3:"練";s:3:"縉";s:3:"縉";s:3:"繁";s:3:"繁";s:3:"署";s:3:"署";s:3:"者";s:3:"者";s:3:"臭";s:3:"臭";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"艹";s:3:"著";s:3:"著";s:3:"褐";s:3:"褐";s:3:"視";s:3:"視";s:3:"謁";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"贈";s:3:"贈";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"響";s:3:"響";s:3:"頻";s:3:"頻";s:3:"恵";s:3:"恵";s:3:"𤋮";s:4:"𤋮";s:3:"舘";s:3:"舘";s:3:"並";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"全";s:3:"侀";s:3:"侀";s:3:"充";s:3:"充";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"勺";s:3:"勺";s:3:"喝";s:3:"喝";s:3:"啕";s:3:"啕";s:3:"喙";s:3:"喙";s:3:"嗢";s:3:"嗢";s:3:"塚";s:3:"塚";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"奔";s:3:"婢";s:3:"婢";s:3:"嬨";s:3:"嬨";s:3:"廒";s:3:"廒";s:3:"廙";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"慎";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"慠";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"揄";s:3:"揄";s:3:"搜";s:3:"搜";s:3:"摒";s:3:"摒";s:3:"敖";s:3:"敖";s:3:"晴";s:3:"晴";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"杖";s:3:"歹";s:3:"歹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"流";s:3:"滛";s:3:"滛";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"漢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"煮";s:3:"瞧";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"画";s:3:"瘝";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"盛";s:3:"直";s:3:"直";s:3:"睊";s:3:"睊";s:3:"着";s:3:"着";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"类";s:3:"絛";s:3:"絛";s:3:"練";s:3:"練";s:3:"缾";s:3:"缾";s:3:"者";s:3:"者";s:3:"荒";s:3:"荒";s:3:"華";s:3:"華";s:3:"蝹";s:3:"蝹";s:3:"襁";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"請";s:3:"謁";s:3:"謁";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"諭";s:3:"謹";s:3:"謹";s:3:"變";s:3:"變";s:3:"贈";s:3:"贈";s:3:"輸";s:3:"輸";s:3:"遲";s:3:"遲";s:3:"醙";s:3:"醙";s:3:"鉶";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"靖";s:3:"韛";s:3:"韛";s:3:"響";s:3:"響";s:3:"頋";s:3:"頋";s:3:"頻";s:3:"頻";s:3:"鬒";s:3:"鬒";s:3:"龜";s:3:"龜";s:3:"𢡊";s:4:"𢡊";s:3:"𢡄";s:4:"𢡄";s:3:"𣏕";s:4:"𣏕";s:3:"㮝";s:3:"㮝";s:3:"䀘";s:3:"䀘";s:3:"䀹";s:3:"䀹";s:3:"𥉉";s:4:"𥉉";s:3:"𥳐";s:4:"𥳐";s:3:"𧻓";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"龎";s:3:"ff";s:2:"ff";s:3:"fi";s:2:"fi";s:3:"fl";s:2:"fl";s:3:"ffi";s:3:"ffi";s:3:"ffl";s:3:"ffl";s:3:"ſt";s:2:"st";s:3:"st";s:2:"st";s:3:"ﬓ";s:4:"մն";s:3:"ﬔ";s:4:"մե";s:3:"ﬕ";s:4:"մի";s:3:"ﬖ";s:4:"վն";s:3:"ﬗ";s:4:"մխ";s:3:"יִ";s:4:"יִ";s:3:"ײַ";s:4:"ײַ";s:3:"ﬠ";s:2:"ע";s:3:"ﬡ";s:2:"א";s:3:"ﬢ";s:2:"ד";s:3:"ﬣ";s:2:"ה";s:3:"ﬤ";s:2:"כ";s:3:"ﬥ";s:2:"ל";s:3:"ﬦ";s:2:"ם";s:3:"ﬧ";s:2:"ר";s:3:"ﬨ";s:2:"ת";s:3:"﬩";s:1:"+";s:3:"שׁ";s:4:"שׁ";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּׁ";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"אַ";s:3:"אָ";s:4:"אָ";s:3:"אּ";s:4:"אּ";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"גּ";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"הּ";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"זּ";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"יּ";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"כּ";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"נּ";s:4:"נּ";s:3:"סּ";s:4:"סּ";s:3:"ףּ";s:4:"ףּ";s:3:"פּ";s:4:"פּ";s:3:"צּ";s:4:"צּ";s:3:"קּ";s:4:"קּ";s:3:"רּ";s:4:"רּ";s:3:"שּ";s:4:"שּ";s:3:"תּ";s:4:"תּ";s:3:"וֹ";s:4:"וֹ";s:3:"בֿ";s:4:"בֿ";s:3:"כֿ";s:4:"כֿ";s:3:"פֿ";s:4:"פֿ";s:3:"ﭏ";s:4:"אל";s:3:"ﭐ";s:2:"ٱ";s:3:"ﭑ";s:2:"ٱ";s:3:"ﭒ";s:2:"ٻ";s:3:"ﭓ";s:2:"ٻ";s:3:"ﭔ";s:2:"ٻ";s:3:"ﭕ";s:2:"ٻ";s:3:"ﭖ";s:2:"پ";s:3:"ﭗ";s:2:"پ";s:3:"ﭘ";s:2:"پ";s:3:"ﭙ";s:2:"پ";s:3:"ﭚ";s:2:"ڀ";s:3:"ﭛ";s:2:"ڀ";s:3:"ﭜ";s:2:"ڀ";s:3:"ﭝ";s:2:"ڀ";s:3:"ﭞ";s:2:"ٺ";s:3:"ﭟ";s:2:"ٺ";s:3:"ﭠ";s:2:"ٺ";s:3:"ﭡ";s:2:"ٺ";s:3:"ﭢ";s:2:"ٿ";s:3:"ﭣ";s:2:"ٿ";s:3:"ﭤ";s:2:"ٿ";s:3:"ﭥ";s:2:"ٿ";s:3:"ﭦ";s:2:"ٹ";s:3:"ﭧ";s:2:"ٹ";s:3:"ﭨ";s:2:"ٹ";s:3:"ﭩ";s:2:"ٹ";s:3:"ﭪ";s:2:"ڤ";s:3:"ﭫ";s:2:"ڤ";s:3:"ﭬ";s:2:"ڤ";s:3:"ﭭ";s:2:"ڤ";s:3:"ﭮ";s:2:"ڦ";s:3:"ﭯ";s:2:"ڦ";s:3:"ﭰ";s:2:"ڦ";s:3:"ﭱ";s:2:"ڦ";s:3:"ﭲ";s:2:"ڄ";s:3:"ﭳ";s:2:"ڄ";s:3:"ﭴ";s:2:"ڄ";s:3:"ﭵ";s:2:"ڄ";s:3:"ﭶ";s:2:"ڃ";s:3:"ﭷ";s:2:"ڃ";s:3:"ﭸ";s:2:"ڃ";s:3:"ﭹ";s:2:"ڃ";s:3:"ﭺ";s:2:"چ";s:3:"ﭻ";s:2:"چ";s:3:"ﭼ";s:2:"چ";s:3:"ﭽ";s:2:"چ";s:3:"ﭾ";s:2:"ڇ";s:3:"ﭿ";s:2:"ڇ";s:3:"ﮀ";s:2:"ڇ";s:3:"ﮁ";s:2:"ڇ";s:3:"ﮂ";s:2:"ڍ";s:3:"ﮃ";s:2:"ڍ";s:3:"ﮄ";s:2:"ڌ";s:3:"ﮅ";s:2:"ڌ";s:3:"ﮆ";s:2:"ڎ";s:3:"ﮇ";s:2:"ڎ";s:3:"ﮈ";s:2:"ڈ";s:3:"ﮉ";s:2:"ڈ";s:3:"ﮊ";s:2:"ژ";s:3:"ﮋ";s:2:"ژ";s:3:"ﮌ";s:2:"ڑ";s:3:"ﮍ";s:2:"ڑ";s:3:"ﮎ";s:2:"ک";s:3:"ﮏ";s:2:"ک";s:3:"ﮐ";s:2:"ک";s:3:"ﮑ";s:2:"ک";s:3:"ﮒ";s:2:"گ";s:3:"ﮓ";s:2:"گ";s:3:"ﮔ";s:2:"گ";s:3:"ﮕ";s:2:"گ";s:3:"ﮖ";s:2:"ڳ";s:3:"ﮗ";s:2:"ڳ";s:3:"ﮘ";s:2:"ڳ";s:3:"ﮙ";s:2:"ڳ";s:3:"ﮚ";s:2:"ڱ";s:3:"ﮛ";s:2:"ڱ";s:3:"ﮜ";s:2:"ڱ";s:3:"ﮝ";s:2:"ڱ";s:3:"ﮞ";s:2:"ں";s:3:"ﮟ";s:2:"ں";s:3:"ﮠ";s:2:"ڻ";s:3:"ﮡ";s:2:"ڻ";s:3:"ﮢ";s:2:"ڻ";s:3:"ﮣ";s:2:"ڻ";s:3:"ﮤ";s:4:"ۀ";s:3:"ﮥ";s:4:"ۀ";s:3:"ﮦ";s:2:"ہ";s:3:"ﮧ";s:2:"ہ";s:3:"ﮨ";s:2:"ہ";s:3:"ﮩ";s:2:"ہ";s:3:"ﮪ";s:2:"ھ";s:3:"ﮫ";s:2:"ھ";s:3:"ﮬ";s:2:"ھ";s:3:"ﮭ";s:2:"ھ";s:3:"ﮮ";s:2:"ے";s:3:"ﮯ";s:2:"ے";s:3:"ﮰ";s:4:"ۓ";s:3:"ﮱ";s:4:"ۓ";s:3:"ﯓ";s:2:"ڭ";s:3:"ﯔ";s:2:"ڭ";s:3:"ﯕ";s:2:"ڭ";s:3:"ﯖ";s:2:"ڭ";s:3:"ﯗ";s:2:"ۇ";s:3:"ﯘ";s:2:"ۇ";s:3:"ﯙ";s:2:"ۆ";s:3:"ﯚ";s:2:"ۆ";s:3:"ﯛ";s:2:"ۈ";s:3:"ﯜ";s:2:"ۈ";s:3:"ﯝ";s:4:"ۇٴ";s:3:"ﯞ";s:2:"ۋ";s:3:"ﯟ";s:2:"ۋ";s:3:"ﯠ";s:2:"ۅ";s:3:"ﯡ";s:2:"ۅ";s:3:"ﯢ";s:2:"ۉ";s:3:"ﯣ";s:2:"ۉ";s:3:"ﯤ";s:2:"ې";s:3:"ﯥ";s:2:"ې";s:3:"ﯦ";s:2:"ې";s:3:"ﯧ";s:2:"ې";s:3:"ﯨ";s:2:"ى";s:3:"ﯩ";s:2:"ى";s:3:"ﯪ";s:6:"ئا";s:3:"ﯫ";s:6:"ئا";s:3:"ﯬ";s:6:"ئە";s:3:"ﯭ";s:6:"ئە";s:3:"ﯮ";s:6:"ئو";s:3:"ﯯ";s:6:"ئو";s:3:"ﯰ";s:6:"ئۇ";s:3:"ﯱ";s:6:"ئۇ";s:3:"ﯲ";s:6:"ئۆ";s:3:"ﯳ";s:6:"ئۆ";s:3:"ﯴ";s:6:"ئۈ";s:3:"ﯵ";s:6:"ئۈ";s:3:"ﯶ";s:6:"ئې";s:3:"ﯷ";s:6:"ئې";s:3:"ﯸ";s:6:"ئې";s:3:"ﯹ";s:6:"ئى";s:3:"ﯺ";s:6:"ئى";s:3:"ﯻ";s:6:"ئى";s:3:"ﯼ";s:2:"ی";s:3:"ﯽ";s:2:"ی";s:3:"ﯾ";s:2:"ی";s:3:"ﯿ";s:2:"ی";s:3:"ﰀ";s:6:"ئج";s:3:"ﰁ";s:6:"ئح";s:3:"ﰂ";s:6:"ئم";s:3:"ﰃ";s:6:"ئى";s:3:"ﰄ";s:6:"ئي";s:3:"ﰅ";s:4:"بج";s:3:"ﰆ";s:4:"بح";s:3:"ﰇ";s:4:"بخ";s:3:"ﰈ";s:4:"بم";s:3:"ﰉ";s:4:"بى";s:3:"ﰊ";s:4:"بي";s:3:"ﰋ";s:4:"تج";s:3:"ﰌ";s:4:"تح";s:3:"ﰍ";s:4:"تخ";s:3:"ﰎ";s:4:"تم";s:3:"ﰏ";s:4:"تى";s:3:"ﰐ";s:4:"تي";s:3:"ﰑ";s:4:"ثج";s:3:"ﰒ";s:4:"ثم";s:3:"ﰓ";s:4:"ثى";s:3:"ﰔ";s:4:"ثي";s:3:"ﰕ";s:4:"جح";s:3:"ﰖ";s:4:"جم";s:3:"ﰗ";s:4:"حج";s:3:"ﰘ";s:4:"حم";s:3:"ﰙ";s:4:"خج";s:3:"ﰚ";s:4:"خح";s:3:"ﰛ";s:4:"خم";s:3:"ﰜ";s:4:"سج";s:3:"ﰝ";s:4:"سح";s:3:"ﰞ";s:4:"سخ";s:3:"ﰟ";s:4:"سم";s:3:"ﰠ";s:4:"صح";s:3:"ﰡ";s:4:"صم";s:3:"ﰢ";s:4:"ضج";s:3:"ﰣ";s:4:"ضح";s:3:"ﰤ";s:4:"ضخ";s:3:"ﰥ";s:4:"ضم";s:3:"ﰦ";s:4:"طح";s:3:"ﰧ";s:4:"طم";s:3:"ﰨ";s:4:"ظم";s:3:"ﰩ";s:4:"عج";s:3:"ﰪ";s:4:"عم";s:3:"ﰫ";s:4:"غج";s:3:"ﰬ";s:4:"غم";s:3:"ﰭ";s:4:"فج";s:3:"ﰮ";s:4:"فح";s:3:"ﰯ";s:4:"فخ";s:3:"ﰰ";s:4:"فم";s:3:"ﰱ";s:4:"فى";s:3:"ﰲ";s:4:"في";s:3:"ﰳ";s:4:"قح";s:3:"ﰴ";s:4:"قم";s:3:"ﰵ";s:4:"قى";s:3:"ﰶ";s:4:"قي";s:3:"ﰷ";s:4:"كا";s:3:"ﰸ";s:4:"كج";s:3:"ﰹ";s:4:"كح";s:3:"ﰺ";s:4:"كخ";s:3:"ﰻ";s:4:"كل";s:3:"ﰼ";s:4:"كم";s:3:"ﰽ";s:4:"كى";s:3:"ﰾ";s:4:"كي";s:3:"ﰿ";s:4:"لج";s:3:"ﱀ";s:4:"لح";s:3:"ﱁ";s:4:"لخ";s:3:"ﱂ";s:4:"لم";s:3:"ﱃ";s:4:"لى";s:3:"ﱄ";s:4:"لي";s:3:"ﱅ";s:4:"مج";s:3:"ﱆ";s:4:"مح";s:3:"ﱇ";s:4:"مخ";s:3:"ﱈ";s:4:"مم";s:3:"ﱉ";s:4:"مى";s:3:"ﱊ";s:4:"مي";s:3:"ﱋ";s:4:"نج";s:3:"ﱌ";s:4:"نح";s:3:"ﱍ";s:4:"نخ";s:3:"ﱎ";s:4:"نم";s:3:"ﱏ";s:4:"نى";s:3:"ﱐ";s:4:"ني";s:3:"ﱑ";s:4:"هج";s:3:"ﱒ";s:4:"هم";s:3:"ﱓ";s:4:"هى";s:3:"ﱔ";s:4:"هي";s:3:"ﱕ";s:4:"يج";s:3:"ﱖ";s:4:"يح";s:3:"ﱗ";s:4:"يخ";s:3:"ﱘ";s:4:"يم";s:3:"ﱙ";s:4:"يى";s:3:"ﱚ";s:4:"يي";s:3:"ﱛ";s:4:"ذٰ";s:3:"ﱜ";s:4:"رٰ";s:3:"ﱝ";s:4:"ىٰ";s:3:"ﱞ";s:5:" ٌّ";s:3:"ﱟ";s:5:" ٍّ";s:3:"ﱠ";s:5:" َّ";s:3:"ﱡ";s:5:" ُّ";s:3:"ﱢ";s:5:" ِّ";s:3:"ﱣ";s:5:" ّٰ";s:3:"ﱤ";s:6:"ئر";s:3:"ﱥ";s:6:"ئز";s:3:"ﱦ";s:6:"ئم";s:3:"ﱧ";s:6:"ئن";s:3:"ﱨ";s:6:"ئى";s:3:"ﱩ";s:6:"ئي";s:3:"ﱪ";s:4:"بر";s:3:"ﱫ";s:4:"بز";s:3:"ﱬ";s:4:"بم";s:3:"ﱭ";s:4:"بن";s:3:"ﱮ";s:4:"بى";s:3:"ﱯ";s:4:"بي";s:3:"ﱰ";s:4:"تر";s:3:"ﱱ";s:4:"تز";s:3:"ﱲ";s:4:"تم";s:3:"ﱳ";s:4:"تن";s:3:"ﱴ";s:4:"تى";s:3:"ﱵ";s:4:"تي";s:3:"ﱶ";s:4:"ثر";s:3:"ﱷ";s:4:"ثز";s:3:"ﱸ";s:4:"ثم";s:3:"ﱹ";s:4:"ثن";s:3:"ﱺ";s:4:"ثى";s:3:"ﱻ";s:4:"ثي";s:3:"ﱼ";s:4:"فى";s:3:"ﱽ";s:4:"في";s:3:"ﱾ";s:4:"قى";s:3:"ﱿ";s:4:"قي";s:3:"ﲀ";s:4:"كا";s:3:"ﲁ";s:4:"كل";s:3:"ﲂ";s:4:"كم";s:3:"ﲃ";s:4:"كى";s:3:"ﲄ";s:4:"كي";s:3:"ﲅ";s:4:"لم";s:3:"ﲆ";s:4:"لى";s:3:"ﲇ";s:4:"لي";s:3:"ﲈ";s:4:"ما";s:3:"ﲉ";s:4:"مم";s:3:"ﲊ";s:4:"نر";s:3:"ﲋ";s:4:"نز";s:3:"ﲌ";s:4:"نم";s:3:"ﲍ";s:4:"نن";s:3:"ﲎ";s:4:"نى";s:3:"ﲏ";s:4:"ني";s:3:"ﲐ";s:4:"ىٰ";s:3:"ﲑ";s:4:"ير";s:3:"ﲒ";s:4:"يز";s:3:"ﲓ";s:4:"يم";s:3:"ﲔ";s:4:"ين";s:3:"ﲕ";s:4:"يى";s:3:"ﲖ";s:4:"يي";s:3:"ﲗ";s:6:"ئج";s:3:"ﲘ";s:6:"ئح";s:3:"ﲙ";s:6:"ئخ";s:3:"ﲚ";s:6:"ئم";s:3:"ﲛ";s:6:"ئه";s:3:"ﲜ";s:4:"بج";s:3:"ﲝ";s:4:"بح";s:3:"ﲞ";s:4:"بخ";s:3:"ﲟ";s:4:"بم";s:3:"ﲠ";s:4:"به";s:3:"ﲡ";s:4:"تج";s:3:"ﲢ";s:4:"تح";s:3:"ﲣ";s:4:"تخ";s:3:"ﲤ";s:4:"تم";s:3:"ﲥ";s:4:"ته";s:3:"ﲦ";s:4:"ثم";s:3:"ﲧ";s:4:"جح";s:3:"ﲨ";s:4:"جم";s:3:"ﲩ";s:4:"حج";s:3:"ﲪ";s:4:"حم";s:3:"ﲫ";s:4:"خج";s:3:"ﲬ";s:4:"خم";s:3:"ﲭ";s:4:"سج";s:3:"ﲮ";s:4:"سح";s:3:"ﲯ";s:4:"سخ";s:3:"ﲰ";s:4:"سم";s:3:"ﲱ";s:4:"صح";s:3:"ﲲ";s:4:"صخ";s:3:"ﲳ";s:4:"صم";s:3:"ﲴ";s:4:"ضج";s:3:"ﲵ";s:4:"ضح";s:3:"ﲶ";s:4:"ضخ";s:3:"ﲷ";s:4:"ضم";s:3:"ﲸ";s:4:"طح";s:3:"ﲹ";s:4:"ظم";s:3:"ﲺ";s:4:"عج";s:3:"ﲻ";s:4:"عم";s:3:"ﲼ";s:4:"غج";s:3:"ﲽ";s:4:"غم";s:3:"ﲾ";s:4:"فج";s:3:"ﲿ";s:4:"فح";s:3:"ﳀ";s:4:"فخ";s:3:"ﳁ";s:4:"فم";s:3:"ﳂ";s:4:"قح";s:3:"ﳃ";s:4:"قم";s:3:"ﳄ";s:4:"كج";s:3:"ﳅ";s:4:"كح";s:3:"ﳆ";s:4:"كخ";s:3:"ﳇ";s:4:"كل";s:3:"ﳈ";s:4:"كم";s:3:"ﳉ";s:4:"لج";s:3:"ﳊ";s:4:"لح";s:3:"ﳋ";s:4:"لخ";s:3:"ﳌ";s:4:"لم";s:3:"ﳍ";s:4:"له";s:3:"ﳎ";s:4:"مج";s:3:"ﳏ";s:4:"مح";s:3:"ﳐ";s:4:"مخ";s:3:"ﳑ";s:4:"مم";s:3:"ﳒ";s:4:"نج";s:3:"ﳓ";s:4:"نح";s:3:"ﳔ";s:4:"نخ";s:3:"ﳕ";s:4:"نم";s:3:"ﳖ";s:4:"نه";s:3:"ﳗ";s:4:"هج";s:3:"ﳘ";s:4:"هم";s:3:"ﳙ";s:4:"هٰ";s:3:"ﳚ";s:4:"يج";s:3:"ﳛ";s:4:"يح";s:3:"ﳜ";s:4:"يخ";s:3:"ﳝ";s:4:"يم";s:3:"ﳞ";s:4:"يه";s:3:"ﳟ";s:6:"ئم";s:3:"ﳠ";s:6:"ئه";s:3:"ﳡ";s:4:"بم";s:3:"ﳢ";s:4:"به";s:3:"ﳣ";s:4:"تم";s:3:"ﳤ";s:4:"ته";s:3:"ﳥ";s:4:"ثم";s:3:"ﳦ";s:4:"ثه";s:3:"ﳧ";s:4:"سم";s:3:"ﳨ";s:4:"سه";s:3:"ﳩ";s:4:"شم";s:3:"ﳪ";s:4:"شه";s:3:"ﳫ";s:4:"كل";s:3:"ﳬ";s:4:"كم";s:3:"ﳭ";s:4:"لم";s:3:"ﳮ";s:4:"نم";s:3:"ﳯ";s:4:"نه";s:3:"ﳰ";s:4:"يم";s:3:"ﳱ";s:4:"يه";s:3:"ﳲ";s:6:"ـَّ";s:3:"ﳳ";s:6:"ـُّ";s:3:"ﳴ";s:6:"ـِّ";s:3:"ﳵ";s:4:"طى";s:3:"ﳶ";s:4:"طي";s:3:"ﳷ";s:4:"عى";s:3:"ﳸ";s:4:"عي";s:3:"ﳹ";s:4:"غى";s:3:"ﳺ";s:4:"غي";s:3:"ﳻ";s:4:"سى";s:3:"ﳼ";s:4:"سي";s:3:"ﳽ";s:4:"شى";s:3:"ﳾ";s:4:"شي";s:3:"ﳿ";s:4:"حى";s:3:"ﴀ";s:4:"حي";s:3:"ﴁ";s:4:"جى";s:3:"ﴂ";s:4:"جي";s:3:"ﴃ";s:4:"خى";s:3:"ﴄ";s:4:"خي";s:3:"ﴅ";s:4:"صى";s:3:"ﴆ";s:4:"صي";s:3:"ﴇ";s:4:"ضى";s:3:"ﴈ";s:4:"ضي";s:3:"ﴉ";s:4:"شج";s:3:"ﴊ";s:4:"شح";s:3:"ﴋ";s:4:"شخ";s:3:"ﴌ";s:4:"شم";s:3:"ﴍ";s:4:"شر";s:3:"ﴎ";s:4:"سر";s:3:"ﴏ";s:4:"صر";s:3:"ﴐ";s:4:"ضر";s:3:"ﴑ";s:4:"طى";s:3:"ﴒ";s:4:"طي";s:3:"ﴓ";s:4:"عى";s:3:"ﴔ";s:4:"عي";s:3:"ﴕ";s:4:"غى";s:3:"ﴖ";s:4:"غي";s:3:"ﴗ";s:4:"سى";s:3:"ﴘ";s:4:"سي";s:3:"ﴙ";s:4:"شى";s:3:"ﴚ";s:4:"شي";s:3:"ﴛ";s:4:"حى";s:3:"ﴜ";s:4:"حي";s:3:"ﴝ";s:4:"جى";s:3:"ﴞ";s:4:"جي";s:3:"ﴟ";s:4:"خى";s:3:"ﴠ";s:4:"خي";s:3:"ﴡ";s:4:"صى";s:3:"ﴢ";s:4:"صي";s:3:"ﴣ";s:4:"ضى";s:3:"ﴤ";s:4:"ضي";s:3:"ﴥ";s:4:"شج";s:3:"ﴦ";s:4:"شح";s:3:"ﴧ";s:4:"شخ";s:3:"ﴨ";s:4:"شم";s:3:"ﴩ";s:4:"شر";s:3:"ﴪ";s:4:"سر";s:3:"ﴫ";s:4:"صر";s:3:"ﴬ";s:4:"ضر";s:3:"ﴭ";s:4:"شج";s:3:"ﴮ";s:4:"شح";s:3:"ﴯ";s:4:"شخ";s:3:"ﴰ";s:4:"شم";s:3:"ﴱ";s:4:"سه";s:3:"ﴲ";s:4:"شه";s:3:"ﴳ";s:4:"طم";s:3:"ﴴ";s:4:"سج";s:3:"ﴵ";s:4:"سح";s:3:"ﴶ";s:4:"سخ";s:3:"ﴷ";s:4:"شج";s:3:"ﴸ";s:4:"شح";s:3:"ﴹ";s:4:"شخ";s:3:"ﴺ";s:4:"طم";s:3:"ﴻ";s:4:"ظم";s:3:"ﴼ";s:4:"اً";s:3:"ﴽ";s:4:"اً";s:3:"ﵐ";s:6:"تجم";s:3:"ﵑ";s:6:"تحج";s:3:"ﵒ";s:6:"تحج";s:3:"ﵓ";s:6:"تحم";s:3:"ﵔ";s:6:"تخم";s:3:"ﵕ";s:6:"تمج";s:3:"ﵖ";s:6:"تمح";s:3:"ﵗ";s:6:"تمخ";s:3:"ﵘ";s:6:"جمح";s:3:"ﵙ";s:6:"جمح";s:3:"ﵚ";s:6:"حمي";s:3:"ﵛ";s:6:"حمى";s:3:"ﵜ";s:6:"سحج";s:3:"ﵝ";s:6:"سجح";s:3:"ﵞ";s:6:"سجى";s:3:"ﵟ";s:6:"سمح";s:3:"ﵠ";s:6:"سمح";s:3:"ﵡ";s:6:"سمج";s:3:"ﵢ";s:6:"سمم";s:3:"ﵣ";s:6:"سمم";s:3:"ﵤ";s:6:"صحح";s:3:"ﵥ";s:6:"صحح";s:3:"ﵦ";s:6:"صمم";s:3:"ﵧ";s:6:"شحم";s:3:"ﵨ";s:6:"شحم";s:3:"ﵩ";s:6:"شجي";s:3:"ﵪ";s:6:"شمخ";s:3:"ﵫ";s:6:"شمخ";s:3:"ﵬ";s:6:"شمم";s:3:"ﵭ";s:6:"شمم";s:3:"ﵮ";s:6:"ضحى";s:3:"ﵯ";s:6:"ضخم";s:3:"ﵰ";s:6:"ضخم";s:3:"ﵱ";s:6:"طمح";s:3:"ﵲ";s:6:"طمح";s:3:"ﵳ";s:6:"طمم";s:3:"ﵴ";s:6:"طمي";s:3:"ﵵ";s:6:"عجم";s:3:"ﵶ";s:6:"عمم";s:3:"ﵷ";s:6:"عمم";s:3:"ﵸ";s:6:"عمى";s:3:"ﵹ";s:6:"غمم";s:3:"ﵺ";s:6:"غمي";s:3:"ﵻ";s:6:"غمى";s:3:"ﵼ";s:6:"فخم";s:3:"ﵽ";s:6:"فخم";s:3:"ﵾ";s:6:"قمح";s:3:"ﵿ";s:6:"قمم";s:3:"ﶀ";s:6:"لحم";s:3:"ﶁ";s:6:"لحي";s:3:"ﶂ";s:6:"لحى";s:3:"ﶃ";s:6:"لجج";s:3:"ﶄ";s:6:"لجج";s:3:"ﶅ";s:6:"لخم";s:3:"ﶆ";s:6:"لخم";s:3:"ﶇ";s:6:"لمح";s:3:"ﶈ";s:6:"لمح";s:3:"ﶉ";s:6:"محج";s:3:"ﶊ";s:6:"محم";s:3:"ﶋ";s:6:"محي";s:3:"ﶌ";s:6:"مجح";s:3:"ﶍ";s:6:"مجم";s:3:"ﶎ";s:6:"مخج";s:3:"ﶏ";s:6:"مخم";s:3:"ﶒ";s:6:"مجخ";s:3:"ﶓ";s:6:"همج";s:3:"ﶔ";s:6:"همم";s:3:"ﶕ";s:6:"نحم";s:3:"ﶖ";s:6:"نحى";s:3:"ﶗ";s:6:"نجم";s:3:"ﶘ";s:6:"نجم";s:3:"ﶙ";s:6:"نجى";s:3:"ﶚ";s:6:"نمي";s:3:"ﶛ";s:6:"نمى";s:3:"ﶜ";s:6:"يمم";s:3:"ﶝ";s:6:"يمم";s:3:"ﶞ";s:6:"بخي";s:3:"ﶟ";s:6:"تجي";s:3:"ﶠ";s:6:"تجى";s:3:"ﶡ";s:6:"تخي";s:3:"ﶢ";s:6:"تخى";s:3:"ﶣ";s:6:"تمي";s:3:"ﶤ";s:6:"تمى";s:3:"ﶥ";s:6:"جمي";s:3:"ﶦ";s:6:"جحى";s:3:"ﶧ";s:6:"جمى";s:3:"ﶨ";s:6:"سخى";s:3:"ﶩ";s:6:"صحي";s:3:"ﶪ";s:6:"شحي";s:3:"ﶫ";s:6:"ضحي";s:3:"ﶬ";s:6:"لجي";s:3:"ﶭ";s:6:"لمي";s:3:"ﶮ";s:6:"يحي";s:3:"ﶯ";s:6:"يجي";s:3:"ﶰ";s:6:"يمي";s:3:"ﶱ";s:6:"ممي";s:3:"ﶲ";s:6:"قمي";s:3:"ﶳ";s:6:"نحي";s:3:"ﶴ";s:6:"قمح";s:3:"ﶵ";s:6:"لحم";s:3:"ﶶ";s:6:"عمي";s:3:"ﶷ";s:6:"كمي";s:3:"ﶸ";s:6:"نجح";s:3:"ﶹ";s:6:"مخي";s:3:"ﶺ";s:6:"لجم";s:3:"ﶻ";s:6:"كمم";s:3:"ﶼ";s:6:"لجم";s:3:"ﶽ";s:6:"نجح";s:3:"ﶾ";s:6:"جحي";s:3:"ﶿ";s:6:"حجي";s:3:"ﷀ";s:6:"مجي";s:3:"ﷁ";s:6:"فمي";s:3:"ﷂ";s:6:"بحي";s:3:"ﷃ";s:6:"كمم";s:3:"ﷄ";s:6:"عجم";s:3:"ﷅ";s:6:"صمم";s:3:"ﷆ";s:6:"سخي";s:3:"ﷇ";s:6:"نجي";s:3:"ﷰ";s:6:"صلے";s:3:"ﷱ";s:6:"قلے";s:3:"ﷲ";s:8:"الله";s:3:"ﷳ";s:8:"اكبر";s:3:"ﷴ";s:8:"محمد";s:3:"ﷵ";s:8:"صلعم";s:3:"ﷶ";s:8:"رسول";s:3:"ﷷ";s:8:"عليه";s:3:"ﷸ";s:8:"وسلم";s:3:"ﷹ";s:6:"صلى";s:3:"ﷺ";s:33:"صلى الله عليه وسلم";s:3:"ﷻ";s:15:"جل جلاله";s:3:"﷼";s:8:"ریال";s:3:"︐";s:1:",";s:3:"︑";s:3:"、";s:3:"︒";s:3:"。";s:3:"︓";s:1:":";s:3:"︔";s:1:";";s:3:"︕";s:1:"!";s:3:"︖";s:1:"?";s:3:"︗";s:3:"〖";s:3:"︘";s:3:"〗";s:3:"︙";s:3:"...";s:3:"︰";s:2:"..";s:3:"︱";s:3:"—";s:3:"︲";s:3:"–";s:3:"︳";s:1:"_";s:3:"︴";s:1:"_";s:3:"︵";s:1:"(";s:3:"︶";s:1:")";s:3:"︷";s:1:"{";s:3:"︸";s:1:"}";s:3:"︹";s:3:"〔";s:3:"︺";s:3:"〕";s:3:"︻";s:3:"【";s:3:"︼";s:3:"】";s:3:"︽";s:3:"《";s:3:"︾";s:3:"》";s:3:"︿";s:3:"〈";s:3:"﹀";s:3:"〉";s:3:"﹁";s:3:"「";s:3:"﹂";s:3:"」";s:3:"﹃";s:3:"『";s:3:"﹄";s:3:"』";s:3:"﹇";s:1:"[";s:3:"﹈";s:1:"]";s:3:"﹉";s:3:" ̅";s:3:"﹊";s:3:" ̅";s:3:"﹋";s:3:" ̅";s:3:"﹌";s:3:" ̅";s:3:"﹍";s:1:"_";s:3:"﹎";s:1:"_";s:3:"﹏";s:1:"_";s:3:"﹐";s:1:",";s:3:"﹑";s:3:"、";s:3:"﹒";s:1:".";s:3:"﹔";s:1:";";s:3:"﹕";s:1:":";s:3:"﹖";s:1:"?";s:3:"﹗";s:1:"!";s:3:"﹘";s:3:"—";s:3:"﹙";s:1:"(";s:3:"﹚";s:1:")";s:3:"﹛";s:1:"{";s:3:"﹜";s:1:"}";s:3:"﹝";s:3:"〔";s:3:"﹞";s:3:"〕";s:3:"﹟";s:1:"#";s:3:"﹠";s:1:"&";s:3:"﹡";s:1:"*";s:3:"﹢";s:1:"+";s:3:"﹣";s:1:"-";s:3:"﹤";s:1:"<";s:3:"﹥";s:1:">";s:3:"﹦";s:1:"=";s:3:"﹨";s:1:"\\";s:3:"﹩";s:1:"$";s:3:"﹪";s:1:"%";s:3:"﹫";s:1:"@";s:3:"ﹰ";s:3:" ً";s:3:"ﹱ";s:4:"ـً";s:3:"ﹲ";s:3:" ٌ";s:3:"ﹴ";s:3:" ٍ";s:3:"ﹶ";s:3:" َ";s:3:"ﹷ";s:4:"ـَ";s:3:"ﹸ";s:3:" ُ";s:3:"ﹹ";s:4:"ـُ";s:3:"ﹺ";s:3:" ِ";s:3:"ﹻ";s:4:"ـِ";s:3:"ﹼ";s:3:" ّ";s:3:"ﹽ";s:4:"ـّ";s:3:"ﹾ";s:3:" ْ";s:3:"ﹿ";s:4:"ـْ";s:3:"ﺀ";s:2:"ء";s:3:"ﺁ";s:4:"آ";s:3:"ﺂ";s:4:"آ";s:3:"ﺃ";s:4:"أ";s:3:"ﺄ";s:4:"أ";s:3:"ﺅ";s:4:"ؤ";s:3:"ﺆ";s:4:"ؤ";s:3:"ﺇ";s:4:"إ";s:3:"ﺈ";s:4:"إ";s:3:"ﺉ";s:4:"ئ";s:3:"ﺊ";s:4:"ئ";s:3:"ﺋ";s:4:"ئ";s:3:"ﺌ";s:4:"ئ";s:3:"ﺍ";s:2:"ا";s:3:"ﺎ";s:2:"ا";s:3:"ﺏ";s:2:"ب";s:3:"ﺐ";s:2:"ب";s:3:"ﺑ";s:2:"ب";s:3:"ﺒ";s:2:"ب";s:3:"ﺓ";s:2:"ة";s:3:"ﺔ";s:2:"ة";s:3:"ﺕ";s:2:"ت";s:3:"ﺖ";s:2:"ت";s:3:"ﺗ";s:2:"ت";s:3:"ﺘ";s:2:"ت";s:3:"ﺙ";s:2:"ث";s:3:"ﺚ";s:2:"ث";s:3:"ﺛ";s:2:"ث";s:3:"ﺜ";s:2:"ث";s:3:"ﺝ";s:2:"ج";s:3:"ﺞ";s:2:"ج";s:3:"ﺟ";s:2:"ج";s:3:"ﺠ";s:2:"ج";s:3:"ﺡ";s:2:"ح";s:3:"ﺢ";s:2:"ح";s:3:"ﺣ";s:2:"ح";s:3:"ﺤ";s:2:"ح";s:3:"ﺥ";s:2:"خ";s:3:"ﺦ";s:2:"خ";s:3:"ﺧ";s:2:"خ";s:3:"ﺨ";s:2:"خ";s:3:"ﺩ";s:2:"د";s:3:"ﺪ";s:2:"د";s:3:"ﺫ";s:2:"ذ";s:3:"ﺬ";s:2:"ذ";s:3:"ﺭ";s:2:"ر";s:3:"ﺮ";s:2:"ر";s:3:"ﺯ";s:2:"ز";s:3:"ﺰ";s:2:"ز";s:3:"ﺱ";s:2:"س";s:3:"ﺲ";s:2:"س";s:3:"ﺳ";s:2:"س";s:3:"ﺴ";s:2:"س";s:3:"ﺵ";s:2:"ش";s:3:"ﺶ";s:2:"ش";s:3:"ﺷ";s:2:"ش";s:3:"ﺸ";s:2:"ش";s:3:"ﺹ";s:2:"ص";s:3:"ﺺ";s:2:"ص";s:3:"ﺻ";s:2:"ص";s:3:"ﺼ";s:2:"ص";s:3:"ﺽ";s:2:"ض";s:3:"ﺾ";s:2:"ض";s:3:"ﺿ";s:2:"ض";s:3:"ﻀ";s:2:"ض";s:3:"ﻁ";s:2:"ط";s:3:"ﻂ";s:2:"ط";s:3:"ﻃ";s:2:"ط";s:3:"ﻄ";s:2:"ط";s:3:"ﻅ";s:2:"ظ";s:3:"ﻆ";s:2:"ظ";s:3:"ﻇ";s:2:"ظ";s:3:"ﻈ";s:2:"ظ";s:3:"ﻉ";s:2:"ع";s:3:"ﻊ";s:2:"ع";s:3:"ﻋ";s:2:"ع";s:3:"ﻌ";s:2:"ع";s:3:"ﻍ";s:2:"غ";s:3:"ﻎ";s:2:"غ";s:3:"ﻏ";s:2:"غ";s:3:"ﻐ";s:2:"غ";s:3:"ﻑ";s:2:"ف";s:3:"ﻒ";s:2:"ف";s:3:"ﻓ";s:2:"ف";s:3:"ﻔ";s:2:"ف";s:3:"ﻕ";s:2:"ق";s:3:"ﻖ";s:2:"ق";s:3:"ﻗ";s:2:"ق";s:3:"ﻘ";s:2:"ق";s:3:"ﻙ";s:2:"ك";s:3:"ﻚ";s:2:"ك";s:3:"ﻛ";s:2:"ك";s:3:"ﻜ";s:2:"ك";s:3:"ﻝ";s:2:"ل";s:3:"ﻞ";s:2:"ل";s:3:"ﻟ";s:2:"ل";s:3:"ﻠ";s:2:"ل";s:3:"ﻡ";s:2:"م";s:3:"ﻢ";s:2:"م";s:3:"ﻣ";s:2:"م";s:3:"ﻤ";s:2:"م";s:3:"ﻥ";s:2:"ن";s:3:"ﻦ";s:2:"ن";s:3:"ﻧ";s:2:"ن";s:3:"ﻨ";s:2:"ن";s:3:"ﻩ";s:2:"ه";s:3:"ﻪ";s:2:"ه";s:3:"ﻫ";s:2:"ه";s:3:"ﻬ";s:2:"ه";s:3:"ﻭ";s:2:"و";s:3:"ﻮ";s:2:"و";s:3:"ﻯ";s:2:"ى";s:3:"ﻰ";s:2:"ى";s:3:"ﻱ";s:2:"ي";s:3:"ﻲ";s:2:"ي";s:3:"ﻳ";s:2:"ي";s:3:"ﻴ";s:2:"ي";s:3:"ﻵ";s:6:"لآ";s:3:"ﻶ";s:6:"لآ";s:3:"ﻷ";s:6:"لأ";s:3:"ﻸ";s:6:"لأ";s:3:"ﻹ";s:6:"لإ";s:3:"ﻺ";s:6:"لإ";s:3:"ﻻ";s:4:"لا";s:3:"ﻼ";s:4:"لا";s:3:"!";s:1:"!";s:3:""";s:1:""";s:3:"#";s:1:"#";s:3:"$";s:1:"$";s:3:"%";s:1:"%";s:3:"&";s:1:"&";s:3:"'";s:1:"\'";s:3:"(";s:1:"(";s:3:")";s:1:")";s:3:"*";s:1:"*";s:3:"+";s:1:"+";s:3:",";s:1:",";s:3:"-";s:1:"-";s:3:".";s:1:".";s:3:"/";s:1:"/";s:3:"0";s:1:"0";s:3:"1";s:1:"1";s:3:"2";s:1:"2";s:3:"3";s:1:"3";s:3:"4";s:1:"4";s:3:"5";s:1:"5";s:3:"6";s:1:"6";s:3:"7";s:1:"7";s:3:"8";s:1:"8";s:3:"9";s:1:"9";s:3:":";s:1:":";s:3:";";s:1:";";s:3:"<";s:1:"<";s:3:"=";s:1:"=";s:3:">";s:1:">";s:3:"?";s:1:"?";s:3:"@";s:1:"@";s:3:"A";s:1:"A";s:3:"B";s:1:"B";s:3:"C";s:1:"C";s:3:"D";s:1:"D";s:3:"E";s:1:"E";s:3:"F";s:1:"F";s:3:"G";s:1:"G";s:3:"H";s:1:"H";s:3:"I";s:1:"I";s:3:"J";s:1:"J";s:3:"K";s:1:"K";s:3:"L";s:1:"L";s:3:"M";s:1:"M";s:3:"N";s:1:"N";s:3:"O";s:1:"O";s:3:"P";s:1:"P";s:3:"Q";s:1:"Q";s:3:"R";s:1:"R";s:3:"S";s:1:"S";s:3:"T";s:1:"T";s:3:"U";s:1:"U";s:3:"V";s:1:"V";s:3:"W";s:1:"W";s:3:"X";s:1:"X";s:3:"Y";s:1:"Y";s:3:"Z";s:1:"Z";s:3:"[";s:1:"[";s:3:"\";s:1:"\\";s:3:"]";s:1:"]";s:3:"^";s:1:"^";s:3:"_";s:1:"_";s:3:"`";s:1:"`";s:3:"a";s:1:"a";s:3:"b";s:1:"b";s:3:"c";s:1:"c";s:3:"d";s:1:"d";s:3:"e";s:1:"e";s:3:"f";s:1:"f";s:3:"g";s:1:"g";s:3:"h";s:1:"h";s:3:"i";s:1:"i";s:3:"j";s:1:"j";s:3:"k";s:1:"k";s:3:"l";s:1:"l";s:3:"m";s:1:"m";s:3:"n";s:1:"n";s:3:"o";s:1:"o";s:3:"p";s:1:"p";s:3:"q";s:1:"q";s:3:"r";s:1:"r";s:3:"s";s:1:"s";s:3:"t";s:1:"t";s:3:"u";s:1:"u";s:3:"v";s:1:"v";s:3:"w";s:1:"w";s:3:"x";s:1:"x";s:3:"y";s:1:"y";s:3:"z";s:1:"z";s:3:"{";s:1:"{";s:3:"|";s:1:"|";s:3:"}";s:1:"}";s:3:"~";s:1:"~";s:3:"⦅";s:3:"⦅";s:3:"⦆";s:3:"⦆";s:3:"。";s:3:"。";s:3:"「";s:3:"「";s:3:"」";s:3:"」";s:3:"、";s:3:"、";s:3:"・";s:3:"・";s:3:"ヲ";s:3:"ヲ";s:3:"ァ";s:3:"ァ";s:3:"ィ";s:3:"ィ";s:3:"ゥ";s:3:"ゥ";s:3:"ェ";s:3:"ェ";s:3:"ォ";s:3:"ォ";s:3:"ャ";s:3:"ャ";s:3:"ュ";s:3:"ュ";s:3:"ョ";s:3:"ョ";s:3:"ッ";s:3:"ッ";s:3:"ー";s:3:"ー";s:3:"ア";s:3:"ア";s:3:"イ";s:3:"イ";s:3:"ウ";s:3:"ウ";s:3:"エ";s:3:"エ";s:3:"オ";s:3:"オ";s:3:"カ";s:3:"カ";s:3:"キ";s:3:"キ";s:3:"ク";s:3:"ク";s:3:"ケ";s:3:"ケ";s:3:"コ";s:3:"コ";s:3:"サ";s:3:"サ";s:3:"シ";s:3:"シ";s:3:"ス";s:3:"ス";s:3:"セ";s:3:"セ";s:3:"ソ";s:3:"ソ";s:3:"タ";s:3:"タ";s:3:"チ";s:3:"チ";s:3:"ツ";s:3:"ツ";s:3:"テ";s:3:"テ";s:3:"ト";s:3:"ト";s:3:"ナ";s:3:"ナ";s:3:"ニ";s:3:"ニ";s:3:"ヌ";s:3:"ヌ";s:3:"ネ";s:3:"ネ";s:3:"ノ";s:3:"ノ";s:3:"ハ";s:3:"ハ";s:3:"ヒ";s:3:"ヒ";s:3:"フ";s:3:"フ";s:3:"ヘ";s:3:"ヘ";s:3:"ホ";s:3:"ホ";s:3:"マ";s:3:"マ";s:3:"ミ";s:3:"ミ";s:3:"ム";s:3:"ム";s:3:"メ";s:3:"メ";s:3:"モ";s:3:"モ";s:3:"ヤ";s:3:"ヤ";s:3:"ユ";s:3:"ユ";s:3:"ヨ";s:3:"ヨ";s:3:"ラ";s:3:"ラ";s:3:"リ";s:3:"リ";s:3:"ル";s:3:"ル";s:3:"レ";s:3:"レ";s:3:"ロ";s:3:"ロ";s:3:"ワ";s:3:"ワ";s:3:"ン";s:3:"ン";s:3:"゙";s:3:"゙";s:3:"゚";s:3:"゚";s:3:"ᅠ";s:3:"ᅠ";s:3:"ᄀ";s:3:"ᄀ";s:3:"ᄁ";s:3:"ᄁ";s:3:"ᆪ";s:3:"ᆪ";s:3:"ᄂ";s:3:"ᄂ";s:3:"ᆬ";s:3:"ᆬ";s:3:"ᆭ";s:3:"ᆭ";s:3:"ᄃ";s:3:"ᄃ";s:3:"ᄄ";s:3:"ᄄ";s:3:"ᄅ";s:3:"ᄅ";s:3:"ᆰ";s:3:"ᆰ";s:3:"ᆱ";s:3:"ᆱ";s:3:"ᆲ";s:3:"ᆲ";s:3:"ᆳ";s:3:"ᆳ";s:3:"ᆴ";s:3:"ᆴ";s:3:"ᆵ";s:3:"ᆵ";s:3:"ᄚ";s:3:"ᄚ";s:3:"ᄆ";s:3:"ᄆ";s:3:"ᄇ";s:3:"ᄇ";s:3:"ᄈ";s:3:"ᄈ";s:3:"ᄡ";s:3:"ᄡ";s:3:"ᄉ";s:3:"ᄉ";s:3:"ᄊ";s:3:"ᄊ";s:3:"ᄋ";s:3:"ᄋ";s:3:"ᄌ";s:3:"ᄌ";s:3:"ᄍ";s:3:"ᄍ";s:3:"ᄎ";s:3:"ᄎ";s:3:"ᄏ";s:3:"ᄏ";s:3:"ᄐ";s:3:"ᄐ";s:3:"ᄑ";s:3:"ᄑ";s:3:"ᄒ";s:3:"ᄒ";s:3:"ᅡ";s:3:"ᅡ";s:3:"ᅢ";s:3:"ᅢ";s:3:"ᅣ";s:3:"ᅣ";s:3:"ᅤ";s:3:"ᅤ";s:3:"ᅥ";s:3:"ᅥ";s:3:"ᅦ";s:3:"ᅦ";s:3:"ᅧ";s:3:"ᅧ";s:3:"ᅨ";s:3:"ᅨ";s:3:"ᅩ";s:3:"ᅩ";s:3:"ᅪ";s:3:"ᅪ";s:3:"ᅫ";s:3:"ᅫ";s:3:"ᅬ";s:3:"ᅬ";s:3:"ᅭ";s:3:"ᅭ";s:3:"ᅮ";s:3:"ᅮ";s:3:"ᅯ";s:3:"ᅯ";s:3:"ᅰ";s:3:"ᅰ";s:3:"ᅱ";s:3:"ᅱ";s:3:"ᅲ";s:3:"ᅲ";s:3:"ᅳ";s:3:"ᅳ";s:3:"ᅴ";s:3:"ᅴ";s:3:"ᅵ";s:3:"ᅵ";s:3:"¢";s:2:"¢";s:3:"£";s:2:"£";s:3:"¬";s:2:"¬";s:3:" ̄";s:3:" ̄";s:3:"¦";s:2:"¦";s:3:"¥";s:2:"¥";s:3:"₩";s:3:"₩";s:3:"│";s:3:"│";s:3:"←";s:3:"←";s:3:"↑";s:3:"↑";s:3:"→";s:3:"→";s:3:"↓";s:3:"↓";s:3:"■";s:3:"■";s:3:"○";s:3:"○";s:4:"𑂚";s:8:"𑂚";s:4:"𑂜";s:8:"𑂜";s:4:"𑂫";s:8:"𑂫";s:4:"𝅗𝅥";s:8:"𝅗𝅥";s:4:"𝅘𝅥";s:8:"𝅘𝅥";s:4:"𝅘𝅥𝅮";s:12:"𝅘𝅥𝅮";s:4:"𝅘𝅥𝅯";s:12:"𝅘𝅥𝅯";s:4:"𝅘𝅥𝅰";s:12:"𝅘𝅥𝅰";s:4:"𝅘𝅥𝅱";s:12:"𝅘𝅥𝅱";s:4:"𝅘𝅥𝅲";s:12:"𝅘𝅥𝅲";s:4:"𝆹𝅥";s:8:"𝆹𝅥";s:4:"𝆺𝅥";s:8:"𝆺𝅥";s:4:"𝆹𝅥𝅮";s:12:"𝆹𝅥𝅮";s:4:"𝆺𝅥𝅮";s:12:"𝆺𝅥𝅮";s:4:"𝆹𝅥𝅯";s:12:"𝆹𝅥𝅯";s:4:"𝆺𝅥𝅯";s:12:"𝆺𝅥𝅯";s:4:"𝐀";s:1:"A";s:4:"𝐁";s:1:"B";s:4:"𝐂";s:1:"C";s:4:"𝐃";s:1:"D";s:4:"𝐄";s:1:"E";s:4:"𝐅";s:1:"F";s:4:"𝐆";s:1:"G";s:4:"𝐇";s:1:"H";s:4:"𝐈";s:1:"I";s:4:"𝐉";s:1:"J";s:4:"𝐊";s:1:"K";s:4:"𝐋";s:1:"L";s:4:"𝐌";s:1:"M";s:4:"𝐍";s:1:"N";s:4:"𝐎";s:1:"O";s:4:"𝐏";s:1:"P";s:4:"𝐐";s:1:"Q";s:4:"𝐑";s:1:"R";s:4:"𝐒";s:1:"S";s:4:"𝐓";s:1:"T";s:4:"𝐔";s:1:"U";s:4:"𝐕";s:1:"V";s:4:"𝐖";s:1:"W";s:4:"𝐗";s:1:"X";s:4:"𝐘";s:1:"Y";s:4:"𝐙";s:1:"Z";s:4:"𝐚";s:1:"a";s:4:"𝐛";s:1:"b";s:4:"𝐜";s:1:"c";s:4:"𝐝";s:1:"d";s:4:"𝐞";s:1:"e";s:4:"𝐟";s:1:"f";s:4:"𝐠";s:1:"g";s:4:"𝐡";s:1:"h";s:4:"𝐢";s:1:"i";s:4:"𝐣";s:1:"j";s:4:"𝐤";s:1:"k";s:4:"𝐥";s:1:"l";s:4:"𝐦";s:1:"m";s:4:"𝐧";s:1:"n";s:4:"𝐨";s:1:"o";s:4:"𝐩";s:1:"p";s:4:"𝐪";s:1:"q";s:4:"𝐫";s:1:"r";s:4:"𝐬";s:1:"s";s:4:"𝐭";s:1:"t";s:4:"𝐮";s:1:"u";s:4:"𝐯";s:1:"v";s:4:"𝐰";s:1:"w";s:4:"𝐱";s:1:"x";s:4:"𝐲";s:1:"y";s:4:"𝐳";s:1:"z";s:4:"𝐴";s:1:"A";s:4:"𝐵";s:1:"B";s:4:"𝐶";s:1:"C";s:4:"𝐷";s:1:"D";s:4:"𝐸";s:1:"E";s:4:"𝐹";s:1:"F";s:4:"𝐺";s:1:"G";s:4:"𝐻";s:1:"H";s:4:"𝐼";s:1:"I";s:4:"𝐽";s:1:"J";s:4:"𝐾";s:1:"K";s:4:"𝐿";s:1:"L";s:4:"𝑀";s:1:"M";s:4:"𝑁";s:1:"N";s:4:"𝑂";s:1:"O";s:4:"𝑃";s:1:"P";s:4:"𝑄";s:1:"Q";s:4:"𝑅";s:1:"R";s:4:"𝑆";s:1:"S";s:4:"𝑇";s:1:"T";s:4:"𝑈";s:1:"U";s:4:"𝑉";s:1:"V";s:4:"𝑊";s:1:"W";s:4:"𝑋";s:1:"X";s:4:"𝑌";s:1:"Y";s:4:"𝑍";s:1:"Z";s:4:"𝑎";s:1:"a";s:4:"𝑏";s:1:"b";s:4:"𝑐";s:1:"c";s:4:"𝑑";s:1:"d";s:4:"𝑒";s:1:"e";s:4:"𝑓";s:1:"f";s:4:"𝑔";s:1:"g";s:4:"𝑖";s:1:"i";s:4:"𝑗";s:1:"j";s:4:"𝑘";s:1:"k";s:4:"𝑙";s:1:"l";s:4:"𝑚";s:1:"m";s:4:"𝑛";s:1:"n";s:4:"𝑜";s:1:"o";s:4:"𝑝";s:1:"p";s:4:"𝑞";s:1:"q";s:4:"𝑟";s:1:"r";s:4:"𝑠";s:1:"s";s:4:"𝑡";s:1:"t";s:4:"𝑢";s:1:"u";s:4:"𝑣";s:1:"v";s:4:"𝑤";s:1:"w";s:4:"𝑥";s:1:"x";s:4:"𝑦";s:1:"y";s:4:"𝑧";s:1:"z";s:4:"𝑨";s:1:"A";s:4:"𝑩";s:1:"B";s:4:"𝑪";s:1:"C";s:4:"𝑫";s:1:"D";s:4:"𝑬";s:1:"E";s:4:"𝑭";s:1:"F";s:4:"𝑮";s:1:"G";s:4:"𝑯";s:1:"H";s:4:"𝑰";s:1:"I";s:4:"𝑱";s:1:"J";s:4:"𝑲";s:1:"K";s:4:"𝑳";s:1:"L";s:4:"𝑴";s:1:"M";s:4:"𝑵";s:1:"N";s:4:"𝑶";s:1:"O";s:4:"𝑷";s:1:"P";s:4:"𝑸";s:1:"Q";s:4:"𝑹";s:1:"R";s:4:"𝑺";s:1:"S";s:4:"𝑻";s:1:"T";s:4:"𝑼";s:1:"U";s:4:"𝑽";s:1:"V";s:4:"𝑾";s:1:"W";s:4:"𝑿";s:1:"X";s:4:"𝒀";s:1:"Y";s:4:"𝒁";s:1:"Z";s:4:"𝒂";s:1:"a";s:4:"𝒃";s:1:"b";s:4:"𝒄";s:1:"c";s:4:"𝒅";s:1:"d";s:4:"𝒆";s:1:"e";s:4:"𝒇";s:1:"f";s:4:"𝒈";s:1:"g";s:4:"𝒉";s:1:"h";s:4:"𝒊";s:1:"i";s:4:"𝒋";s:1:"j";s:4:"𝒌";s:1:"k";s:4:"𝒍";s:1:"l";s:4:"𝒎";s:1:"m";s:4:"𝒏";s:1:"n";s:4:"𝒐";s:1:"o";s:4:"𝒑";s:1:"p";s:4:"𝒒";s:1:"q";s:4:"𝒓";s:1:"r";s:4:"𝒔";s:1:"s";s:4:"𝒕";s:1:"t";s:4:"𝒖";s:1:"u";s:4:"𝒗";s:1:"v";s:4:"𝒘";s:1:"w";s:4:"𝒙";s:1:"x";s:4:"𝒚";s:1:"y";s:4:"𝒛";s:1:"z";s:4:"𝒜";s:1:"A";s:4:"𝒞";s:1:"C";s:4:"𝒟";s:1:"D";s:4:"𝒢";s:1:"G";s:4:"𝒥";s:1:"J";s:4:"𝒦";s:1:"K";s:4:"𝒩";s:1:"N";s:4:"𝒪";s:1:"O";s:4:"𝒫";s:1:"P";s:4:"𝒬";s:1:"Q";s:4:"𝒮";s:1:"S";s:4:"𝒯";s:1:"T";s:4:"𝒰";s:1:"U";s:4:"𝒱";s:1:"V";s:4:"𝒲";s:1:"W";s:4:"𝒳";s:1:"X";s:4:"𝒴";s:1:"Y";s:4:"𝒵";s:1:"Z";s:4:"𝒶";s:1:"a";s:4:"𝒷";s:1:"b";s:4:"𝒸";s:1:"c";s:4:"𝒹";s:1:"d";s:4:"𝒻";s:1:"f";s:4:"𝒽";s:1:"h";s:4:"𝒾";s:1:"i";s:4:"𝒿";s:1:"j";s:4:"𝓀";s:1:"k";s:4:"𝓁";s:1:"l";s:4:"𝓂";s:1:"m";s:4:"𝓃";s:1:"n";s:4:"𝓅";s:1:"p";s:4:"𝓆";s:1:"q";s:4:"𝓇";s:1:"r";s:4:"𝓈";s:1:"s";s:4:"𝓉";s:1:"t";s:4:"𝓊";s:1:"u";s:4:"𝓋";s:1:"v";s:4:"𝓌";s:1:"w";s:4:"𝓍";s:1:"x";s:4:"𝓎";s:1:"y";s:4:"𝓏";s:1:"z";s:4:"𝓐";s:1:"A";s:4:"𝓑";s:1:"B";s:4:"𝓒";s:1:"C";s:4:"𝓓";s:1:"D";s:4:"𝓔";s:1:"E";s:4:"𝓕";s:1:"F";s:4:"𝓖";s:1:"G";s:4:"𝓗";s:1:"H";s:4:"𝓘";s:1:"I";s:4:"𝓙";s:1:"J";s:4:"𝓚";s:1:"K";s:4:"𝓛";s:1:"L";s:4:"𝓜";s:1:"M";s:4:"𝓝";s:1:"N";s:4:"𝓞";s:1:"O";s:4:"𝓟";s:1:"P";s:4:"𝓠";s:1:"Q";s:4:"𝓡";s:1:"R";s:4:"𝓢";s:1:"S";s:4:"𝓣";s:1:"T";s:4:"𝓤";s:1:"U";s:4:"𝓥";s:1:"V";s:4:"𝓦";s:1:"W";s:4:"𝓧";s:1:"X";s:4:"𝓨";s:1:"Y";s:4:"𝓩";s:1:"Z";s:4:"𝓪";s:1:"a";s:4:"𝓫";s:1:"b";s:4:"𝓬";s:1:"c";s:4:"𝓭";s:1:"d";s:4:"𝓮";s:1:"e";s:4:"𝓯";s:1:"f";s:4:"𝓰";s:1:"g";s:4:"𝓱";s:1:"h";s:4:"𝓲";s:1:"i";s:4:"𝓳";s:1:"j";s:4:"𝓴";s:1:"k";s:4:"𝓵";s:1:"l";s:4:"𝓶";s:1:"m";s:4:"𝓷";s:1:"n";s:4:"𝓸";s:1:"o";s:4:"𝓹";s:1:"p";s:4:"𝓺";s:1:"q";s:4:"𝓻";s:1:"r";s:4:"𝓼";s:1:"s";s:4:"𝓽";s:1:"t";s:4:"𝓾";s:1:"u";s:4:"𝓿";s:1:"v";s:4:"𝔀";s:1:"w";s:4:"𝔁";s:1:"x";s:4:"𝔂";s:1:"y";s:4:"𝔃";s:1:"z";s:4:"𝔄";s:1:"A";s:4:"𝔅";s:1:"B";s:4:"𝔇";s:1:"D";s:4:"𝔈";s:1:"E";s:4:"𝔉";s:1:"F";s:4:"𝔊";s:1:"G";s:4:"𝔍";s:1:"J";s:4:"𝔎";s:1:"K";s:4:"𝔏";s:1:"L";s:4:"𝔐";s:1:"M";s:4:"𝔑";s:1:"N";s:4:"𝔒";s:1:"O";s:4:"𝔓";s:1:"P";s:4:"𝔔";s:1:"Q";s:4:"𝔖";s:1:"S";s:4:"𝔗";s:1:"T";s:4:"𝔘";s:1:"U";s:4:"𝔙";s:1:"V";s:4:"𝔚";s:1:"W";s:4:"𝔛";s:1:"X";s:4:"𝔜";s:1:"Y";s:4:"𝔞";s:1:"a";s:4:"𝔟";s:1:"b";s:4:"𝔠";s:1:"c";s:4:"𝔡";s:1:"d";s:4:"𝔢";s:1:"e";s:4:"𝔣";s:1:"f";s:4:"𝔤";s:1:"g";s:4:"𝔥";s:1:"h";s:4:"𝔦";s:1:"i";s:4:"𝔧";s:1:"j";s:4:"𝔨";s:1:"k";s:4:"𝔩";s:1:"l";s:4:"𝔪";s:1:"m";s:4:"𝔫";s:1:"n";s:4:"𝔬";s:1:"o";s:4:"𝔭";s:1:"p";s:4:"𝔮";s:1:"q";s:4:"𝔯";s:1:"r";s:4:"𝔰";s:1:"s";s:4:"𝔱";s:1:"t";s:4:"𝔲";s:1:"u";s:4:"𝔳";s:1:"v";s:4:"𝔴";s:1:"w";s:4:"𝔵";s:1:"x";s:4:"𝔶";s:1:"y";s:4:"𝔷";s:1:"z";s:4:"𝔸";s:1:"A";s:4:"𝔹";s:1:"B";s:4:"𝔻";s:1:"D";s:4:"𝔼";s:1:"E";s:4:"𝔽";s:1:"F";s:4:"𝔾";s:1:"G";s:4:"𝕀";s:1:"I";s:4:"𝕁";s:1:"J";s:4:"𝕂";s:1:"K";s:4:"𝕃";s:1:"L";s:4:"𝕄";s:1:"M";s:4:"𝕆";s:1:"O";s:4:"𝕊";s:1:"S";s:4:"𝕋";s:1:"T";s:4:"𝕌";s:1:"U";s:4:"𝕍";s:1:"V";s:4:"𝕎";s:1:"W";s:4:"𝕏";s:1:"X";s:4:"𝕐";s:1:"Y";s:4:"𝕒";s:1:"a";s:4:"𝕓";s:1:"b";s:4:"𝕔";s:1:"c";s:4:"𝕕";s:1:"d";s:4:"𝕖";s:1:"e";s:4:"𝕗";s:1:"f";s:4:"𝕘";s:1:"g";s:4:"𝕙";s:1:"h";s:4:"𝕚";s:1:"i";s:4:"𝕛";s:1:"j";s:4:"𝕜";s:1:"k";s:4:"𝕝";s:1:"l";s:4:"𝕞";s:1:"m";s:4:"𝕟";s:1:"n";s:4:"𝕠";s:1:"o";s:4:"𝕡";s:1:"p";s:4:"𝕢";s:1:"q";s:4:"𝕣";s:1:"r";s:4:"𝕤";s:1:"s";s:4:"𝕥";s:1:"t";s:4:"𝕦";s:1:"u";s:4:"𝕧";s:1:"v";s:4:"𝕨";s:1:"w";s:4:"𝕩";s:1:"x";s:4:"𝕪";s:1:"y";s:4:"𝕫";s:1:"z";s:4:"𝕬";s:1:"A";s:4:"𝕭";s:1:"B";s:4:"𝕮";s:1:"C";s:4:"𝕯";s:1:"D";s:4:"𝕰";s:1:"E";s:4:"𝕱";s:1:"F";s:4:"𝕲";s:1:"G";s:4:"𝕳";s:1:"H";s:4:"𝕴";s:1:"I";s:4:"𝕵";s:1:"J";s:4:"𝕶";s:1:"K";s:4:"𝕷";s:1:"L";s:4:"𝕸";s:1:"M";s:4:"𝕹";s:1:"N";s:4:"𝕺";s:1:"O";s:4:"𝕻";s:1:"P";s:4:"𝕼";s:1:"Q";s:4:"𝕽";s:1:"R";s:4:"𝕾";s:1:"S";s:4:"𝕿";s:1:"T";s:4:"𝖀";s:1:"U";s:4:"𝖁";s:1:"V";s:4:"𝖂";s:1:"W";s:4:"𝖃";s:1:"X";s:4:"𝖄";s:1:"Y";s:4:"𝖅";s:1:"Z";s:4:"𝖆";s:1:"a";s:4:"𝖇";s:1:"b";s:4:"𝖈";s:1:"c";s:4:"𝖉";s:1:"d";s:4:"𝖊";s:1:"e";s:4:"𝖋";s:1:"f";s:4:"𝖌";s:1:"g";s:4:"𝖍";s:1:"h";s:4:"𝖎";s:1:"i";s:4:"𝖏";s:1:"j";s:4:"𝖐";s:1:"k";s:4:"𝖑";s:1:"l";s:4:"𝖒";s:1:"m";s:4:"𝖓";s:1:"n";s:4:"𝖔";s:1:"o";s:4:"𝖕";s:1:"p";s:4:"𝖖";s:1:"q";s:4:"𝖗";s:1:"r";s:4:"𝖘";s:1:"s";s:4:"𝖙";s:1:"t";s:4:"𝖚";s:1:"u";s:4:"𝖛";s:1:"v";s:4:"𝖜";s:1:"w";s:4:"𝖝";s:1:"x";s:4:"𝖞";s:1:"y";s:4:"𝖟";s:1:"z";s:4:"𝖠";s:1:"A";s:4:"𝖡";s:1:"B";s:4:"𝖢";s:1:"C";s:4:"𝖣";s:1:"D";s:4:"𝖤";s:1:"E";s:4:"𝖥";s:1:"F";s:4:"𝖦";s:1:"G";s:4:"𝖧";s:1:"H";s:4:"𝖨";s:1:"I";s:4:"𝖩";s:1:"J";s:4:"𝖪";s:1:"K";s:4:"𝖫";s:1:"L";s:4:"𝖬";s:1:"M";s:4:"𝖭";s:1:"N";s:4:"𝖮";s:1:"O";s:4:"𝖯";s:1:"P";s:4:"𝖰";s:1:"Q";s:4:"𝖱";s:1:"R";s:4:"𝖲";s:1:"S";s:4:"𝖳";s:1:"T";s:4:"𝖴";s:1:"U";s:4:"𝖵";s:1:"V";s:4:"𝖶";s:1:"W";s:4:"𝖷";s:1:"X";s:4:"𝖸";s:1:"Y";s:4:"𝖹";s:1:"Z";s:4:"𝖺";s:1:"a";s:4:"𝖻";s:1:"b";s:4:"𝖼";s:1:"c";s:4:"𝖽";s:1:"d";s:4:"𝖾";s:1:"e";s:4:"𝖿";s:1:"f";s:4:"𝗀";s:1:"g";s:4:"𝗁";s:1:"h";s:4:"𝗂";s:1:"i";s:4:"𝗃";s:1:"j";s:4:"𝗄";s:1:"k";s:4:"𝗅";s:1:"l";s:4:"𝗆";s:1:"m";s:4:"𝗇";s:1:"n";s:4:"𝗈";s:1:"o";s:4:"𝗉";s:1:"p";s:4:"𝗊";s:1:"q";s:4:"𝗋";s:1:"r";s:4:"𝗌";s:1:"s";s:4:"𝗍";s:1:"t";s:4:"𝗎";s:1:"u";s:4:"𝗏";s:1:"v";s:4:"𝗐";s:1:"w";s:4:"𝗑";s:1:"x";s:4:"𝗒";s:1:"y";s:4:"𝗓";s:1:"z";s:4:"𝗔";s:1:"A";s:4:"𝗕";s:1:"B";s:4:"𝗖";s:1:"C";s:4:"𝗗";s:1:"D";s:4:"𝗘";s:1:"E";s:4:"𝗙";s:1:"F";s:4:"𝗚";s:1:"G";s:4:"𝗛";s:1:"H";s:4:"𝗜";s:1:"I";s:4:"𝗝";s:1:"J";s:4:"𝗞";s:1:"K";s:4:"𝗟";s:1:"L";s:4:"𝗠";s:1:"M";s:4:"𝗡";s:1:"N";s:4:"𝗢";s:1:"O";s:4:"𝗣";s:1:"P";s:4:"𝗤";s:1:"Q";s:4:"𝗥";s:1:"R";s:4:"𝗦";s:1:"S";s:4:"𝗧";s:1:"T";s:4:"𝗨";s:1:"U";s:4:"𝗩";s:1:"V";s:4:"𝗪";s:1:"W";s:4:"𝗫";s:1:"X";s:4:"𝗬";s:1:"Y";s:4:"𝗭";s:1:"Z";s:4:"𝗮";s:1:"a";s:4:"𝗯";s:1:"b";s:4:"𝗰";s:1:"c";s:4:"𝗱";s:1:"d";s:4:"𝗲";s:1:"e";s:4:"𝗳";s:1:"f";s:4:"𝗴";s:1:"g";s:4:"𝗵";s:1:"h";s:4:"𝗶";s:1:"i";s:4:"𝗷";s:1:"j";s:4:"𝗸";s:1:"k";s:4:"𝗹";s:1:"l";s:4:"𝗺";s:1:"m";s:4:"𝗻";s:1:"n";s:4:"𝗼";s:1:"o";s:4:"𝗽";s:1:"p";s:4:"𝗾";s:1:"q";s:4:"𝗿";s:1:"r";s:4:"𝘀";s:1:"s";s:4:"𝘁";s:1:"t";s:4:"𝘂";s:1:"u";s:4:"𝘃";s:1:"v";s:4:"𝘄";s:1:"w";s:4:"𝘅";s:1:"x";s:4:"𝘆";s:1:"y";s:4:"𝘇";s:1:"z";s:4:"𝘈";s:1:"A";s:4:"𝘉";s:1:"B";s:4:"𝘊";s:1:"C";s:4:"𝘋";s:1:"D";s:4:"𝘌";s:1:"E";s:4:"𝘍";s:1:"F";s:4:"𝘎";s:1:"G";s:4:"𝘏";s:1:"H";s:4:"𝘐";s:1:"I";s:4:"𝘑";s:1:"J";s:4:"𝘒";s:1:"K";s:4:"𝘓";s:1:"L";s:4:"𝘔";s:1:"M";s:4:"𝘕";s:1:"N";s:4:"𝘖";s:1:"O";s:4:"𝘗";s:1:"P";s:4:"𝘘";s:1:"Q";s:4:"𝘙";s:1:"R";s:4:"𝘚";s:1:"S";s:4:"𝘛";s:1:"T";s:4:"𝘜";s:1:"U";s:4:"𝘝";s:1:"V";s:4:"𝘞";s:1:"W";s:4:"𝘟";s:1:"X";s:4:"𝘠";s:1:"Y";s:4:"𝘡";s:1:"Z";s:4:"𝘢";s:1:"a";s:4:"𝘣";s:1:"b";s:4:"𝘤";s:1:"c";s:4:"𝘥";s:1:"d";s:4:"𝘦";s:1:"e";s:4:"𝘧";s:1:"f";s:4:"𝘨";s:1:"g";s:4:"𝘩";s:1:"h";s:4:"𝘪";s:1:"i";s:4:"𝘫";s:1:"j";s:4:"𝘬";s:1:"k";s:4:"𝘭";s:1:"l";s:4:"𝘮";s:1:"m";s:4:"𝘯";s:1:"n";s:4:"𝘰";s:1:"o";s:4:"𝘱";s:1:"p";s:4:"𝘲";s:1:"q";s:4:"𝘳";s:1:"r";s:4:"𝘴";s:1:"s";s:4:"𝘵";s:1:"t";s:4:"𝘶";s:1:"u";s:4:"𝘷";s:1:"v";s:4:"𝘸";s:1:"w";s:4:"𝘹";s:1:"x";s:4:"𝘺";s:1:"y";s:4:"𝘻";s:1:"z";s:4:"𝘼";s:1:"A";s:4:"𝘽";s:1:"B";s:4:"𝘾";s:1:"C";s:4:"𝘿";s:1:"D";s:4:"𝙀";s:1:"E";s:4:"𝙁";s:1:"F";s:4:"𝙂";s:1:"G";s:4:"𝙃";s:1:"H";s:4:"𝙄";s:1:"I";s:4:"𝙅";s:1:"J";s:4:"𝙆";s:1:"K";s:4:"𝙇";s:1:"L";s:4:"𝙈";s:1:"M";s:4:"𝙉";s:1:"N";s:4:"𝙊";s:1:"O";s:4:"𝙋";s:1:"P";s:4:"𝙌";s:1:"Q";s:4:"𝙍";s:1:"R";s:4:"𝙎";s:1:"S";s:4:"𝙏";s:1:"T";s:4:"𝙐";s:1:"U";s:4:"𝙑";s:1:"V";s:4:"𝙒";s:1:"W";s:4:"𝙓";s:1:"X";s:4:"𝙔";s:1:"Y";s:4:"𝙕";s:1:"Z";s:4:"𝙖";s:1:"a";s:4:"𝙗";s:1:"b";s:4:"𝙘";s:1:"c";s:4:"𝙙";s:1:"d";s:4:"𝙚";s:1:"e";s:4:"𝙛";s:1:"f";s:4:"𝙜";s:1:"g";s:4:"𝙝";s:1:"h";s:4:"𝙞";s:1:"i";s:4:"𝙟";s:1:"j";s:4:"𝙠";s:1:"k";s:4:"𝙡";s:1:"l";s:4:"𝙢";s:1:"m";s:4:"𝙣";s:1:"n";s:4:"𝙤";s:1:"o";s:4:"𝙥";s:1:"p";s:4:"𝙦";s:1:"q";s:4:"𝙧";s:1:"r";s:4:"𝙨";s:1:"s";s:4:"𝙩";s:1:"t";s:4:"𝙪";s:1:"u";s:4:"𝙫";s:1:"v";s:4:"𝙬";s:1:"w";s:4:"𝙭";s:1:"x";s:4:"𝙮";s:1:"y";s:4:"𝙯";s:1:"z";s:4:"𝙰";s:1:"A";s:4:"𝙱";s:1:"B";s:4:"𝙲";s:1:"C";s:4:"𝙳";s:1:"D";s:4:"𝙴";s:1:"E";s:4:"𝙵";s:1:"F";s:4:"𝙶";s:1:"G";s:4:"𝙷";s:1:"H";s:4:"𝙸";s:1:"I";s:4:"𝙹";s:1:"J";s:4:"𝙺";s:1:"K";s:4:"𝙻";s:1:"L";s:4:"𝙼";s:1:"M";s:4:"𝙽";s:1:"N";s:4:"𝙾";s:1:"O";s:4:"𝙿";s:1:"P";s:4:"𝚀";s:1:"Q";s:4:"𝚁";s:1:"R";s:4:"𝚂";s:1:"S";s:4:"𝚃";s:1:"T";s:4:"𝚄";s:1:"U";s:4:"𝚅";s:1:"V";s:4:"𝚆";s:1:"W";s:4:"𝚇";s:1:"X";s:4:"𝚈";s:1:"Y";s:4:"𝚉";s:1:"Z";s:4:"𝚊";s:1:"a";s:4:"𝚋";s:1:"b";s:4:"𝚌";s:1:"c";s:4:"𝚍";s:1:"d";s:4:"𝚎";s:1:"e";s:4:"𝚏";s:1:"f";s:4:"𝚐";s:1:"g";s:4:"𝚑";s:1:"h";s:4:"𝚒";s:1:"i";s:4:"𝚓";s:1:"j";s:4:"𝚔";s:1:"k";s:4:"𝚕";s:1:"l";s:4:"𝚖";s:1:"m";s:4:"𝚗";s:1:"n";s:4:"𝚘";s:1:"o";s:4:"𝚙";s:1:"p";s:4:"𝚚";s:1:"q";s:4:"𝚛";s:1:"r";s:4:"𝚜";s:1:"s";s:4:"𝚝";s:1:"t";s:4:"𝚞";s:1:"u";s:4:"𝚟";s:1:"v";s:4:"𝚠";s:1:"w";s:4:"𝚡";s:1:"x";s:4:"𝚢";s:1:"y";s:4:"𝚣";s:1:"z";s:4:"𝚤";s:2:"ı";s:4:"𝚥";s:2:"ȷ";s:4:"𝚨";s:2:"Α";s:4:"𝚩";s:2:"Β";s:4:"𝚪";s:2:"Γ";s:4:"𝚫";s:2:"Δ";s:4:"𝚬";s:2:"Ε";s:4:"𝚭";s:2:"Ζ";s:4:"𝚮";s:2:"Η";s:4:"𝚯";s:2:"Θ";s:4:"𝚰";s:2:"Ι";s:4:"𝚱";s:2:"Κ";s:4:"𝚲";s:2:"Λ";s:4:"𝚳";s:2:"Μ";s:4:"𝚴";s:2:"Ν";s:4:"𝚵";s:2:"Ξ";s:4:"𝚶";s:2:"Ο";s:4:"𝚷";s:2:"Π";s:4:"𝚸";s:2:"Ρ";s:4:"𝚹";s:2:"Θ";s:4:"𝚺";s:2:"Σ";s:4:"𝚻";s:2:"Τ";s:4:"𝚼";s:2:"Υ";s:4:"𝚽";s:2:"Φ";s:4:"𝚾";s:2:"Χ";s:4:"𝚿";s:2:"Ψ";s:4:"𝛀";s:2:"Ω";s:4:"𝛁";s:3:"∇";s:4:"𝛂";s:2:"α";s:4:"𝛃";s:2:"β";s:4:"𝛄";s:2:"γ";s:4:"𝛅";s:2:"δ";s:4:"𝛆";s:2:"ε";s:4:"𝛇";s:2:"ζ";s:4:"𝛈";s:2:"η";s:4:"𝛉";s:2:"θ";s:4:"𝛊";s:2:"ι";s:4:"𝛋";s:2:"κ";s:4:"𝛌";s:2:"λ";s:4:"𝛍";s:2:"μ";s:4:"𝛎";s:2:"ν";s:4:"𝛏";s:2:"ξ";s:4:"𝛐";s:2:"ο";s:4:"𝛑";s:2:"π";s:4:"𝛒";s:2:"ρ";s:4:"𝛓";s:2:"ς";s:4:"𝛔";s:2:"σ";s:4:"𝛕";s:2:"τ";s:4:"𝛖";s:2:"υ";s:4:"𝛗";s:2:"φ";s:4:"𝛘";s:2:"χ";s:4:"𝛙";s:2:"ψ";s:4:"𝛚";s:2:"ω";s:4:"𝛛";s:3:"∂";s:4:"𝛜";s:2:"ε";s:4:"𝛝";s:2:"θ";s:4:"𝛞";s:2:"κ";s:4:"𝛟";s:2:"φ";s:4:"𝛠";s:2:"ρ";s:4:"𝛡";s:2:"π";s:4:"𝛢";s:2:"Α";s:4:"𝛣";s:2:"Β";s:4:"𝛤";s:2:"Γ";s:4:"𝛥";s:2:"Δ";s:4:"𝛦";s:2:"Ε";s:4:"𝛧";s:2:"Ζ";s:4:"𝛨";s:2:"Η";s:4:"𝛩";s:2:"Θ";s:4:"𝛪";s:2:"Ι";s:4:"𝛫";s:2:"Κ";s:4:"𝛬";s:2:"Λ";s:4:"𝛭";s:2:"Μ";s:4:"𝛮";s:2:"Ν";s:4:"𝛯";s:2:"Ξ";s:4:"𝛰";s:2:"Ο";s:4:"𝛱";s:2:"Π";s:4:"𝛲";s:2:"Ρ";s:4:"𝛳";s:2:"Θ";s:4:"𝛴";s:2:"Σ";s:4:"𝛵";s:2:"Τ";s:4:"𝛶";s:2:"Υ";s:4:"𝛷";s:2:"Φ";s:4:"𝛸";s:2:"Χ";s:4:"𝛹";s:2:"Ψ";s:4:"𝛺";s:2:"Ω";s:4:"𝛻";s:3:"∇";s:4:"𝛼";s:2:"α";s:4:"𝛽";s:2:"β";s:4:"𝛾";s:2:"γ";s:4:"𝛿";s:2:"δ";s:4:"𝜀";s:2:"ε";s:4:"𝜁";s:2:"ζ";s:4:"𝜂";s:2:"η";s:4:"𝜃";s:2:"θ";s:4:"𝜄";s:2:"ι";s:4:"𝜅";s:2:"κ";s:4:"𝜆";s:2:"λ";s:4:"𝜇";s:2:"μ";s:4:"𝜈";s:2:"ν";s:4:"𝜉";s:2:"ξ";s:4:"𝜊";s:2:"ο";s:4:"𝜋";s:2:"π";s:4:"𝜌";s:2:"ρ";s:4:"𝜍";s:2:"ς";s:4:"𝜎";s:2:"σ";s:4:"𝜏";s:2:"τ";s:4:"𝜐";s:2:"υ";s:4:"𝜑";s:2:"φ";s:4:"𝜒";s:2:"χ";s:4:"𝜓";s:2:"ψ";s:4:"𝜔";s:2:"ω";s:4:"𝜕";s:3:"∂";s:4:"𝜖";s:2:"ε";s:4:"𝜗";s:2:"θ";s:4:"𝜘";s:2:"κ";s:4:"𝜙";s:2:"φ";s:4:"𝜚";s:2:"ρ";s:4:"𝜛";s:2:"π";s:4:"𝜜";s:2:"Α";s:4:"𝜝";s:2:"Β";s:4:"𝜞";s:2:"Γ";s:4:"𝜟";s:2:"Δ";s:4:"𝜠";s:2:"Ε";s:4:"𝜡";s:2:"Ζ";s:4:"𝜢";s:2:"Η";s:4:"𝜣";s:2:"Θ";s:4:"𝜤";s:2:"Ι";s:4:"𝜥";s:2:"Κ";s:4:"𝜦";s:2:"Λ";s:4:"𝜧";s:2:"Μ";s:4:"𝜨";s:2:"Ν";s:4:"𝜩";s:2:"Ξ";s:4:"𝜪";s:2:"Ο";s:4:"𝜫";s:2:"Π";s:4:"𝜬";s:2:"Ρ";s:4:"𝜭";s:2:"Θ";s:4:"𝜮";s:2:"Σ";s:4:"𝜯";s:2:"Τ";s:4:"𝜰";s:2:"Υ";s:4:"𝜱";s:2:"Φ";s:4:"𝜲";s:2:"Χ";s:4:"𝜳";s:2:"Ψ";s:4:"𝜴";s:2:"Ω";s:4:"𝜵";s:3:"∇";s:4:"𝜶";s:2:"α";s:4:"𝜷";s:2:"β";s:4:"𝜸";s:2:"γ";s:4:"𝜹";s:2:"δ";s:4:"𝜺";s:2:"ε";s:4:"𝜻";s:2:"ζ";s:4:"𝜼";s:2:"η";s:4:"𝜽";s:2:"θ";s:4:"𝜾";s:2:"ι";s:4:"𝜿";s:2:"κ";s:4:"𝝀";s:2:"λ";s:4:"𝝁";s:2:"μ";s:4:"𝝂";s:2:"ν";s:4:"𝝃";s:2:"ξ";s:4:"𝝄";s:2:"ο";s:4:"𝝅";s:2:"π";s:4:"𝝆";s:2:"ρ";s:4:"𝝇";s:2:"ς";s:4:"𝝈";s:2:"σ";s:4:"𝝉";s:2:"τ";s:4:"𝝊";s:2:"υ";s:4:"𝝋";s:2:"φ";s:4:"𝝌";s:2:"χ";s:4:"𝝍";s:2:"ψ";s:4:"𝝎";s:2:"ω";s:4:"𝝏";s:3:"∂";s:4:"𝝐";s:2:"ε";s:4:"𝝑";s:2:"θ";s:4:"𝝒";s:2:"κ";s:4:"𝝓";s:2:"φ";s:4:"𝝔";s:2:"ρ";s:4:"𝝕";s:2:"π";s:4:"𝝖";s:2:"Α";s:4:"𝝗";s:2:"Β";s:4:"𝝘";s:2:"Γ";s:4:"𝝙";s:2:"Δ";s:4:"𝝚";s:2:"Ε";s:4:"𝝛";s:2:"Ζ";s:4:"𝝜";s:2:"Η";s:4:"𝝝";s:2:"Θ";s:4:"𝝞";s:2:"Ι";s:4:"𝝟";s:2:"Κ";s:4:"𝝠";s:2:"Λ";s:4:"𝝡";s:2:"Μ";s:4:"𝝢";s:2:"Ν";s:4:"𝝣";s:2:"Ξ";s:4:"𝝤";s:2:"Ο";s:4:"𝝥";s:2:"Π";s:4:"𝝦";s:2:"Ρ";s:4:"𝝧";s:2:"Θ";s:4:"𝝨";s:2:"Σ";s:4:"𝝩";s:2:"Τ";s:4:"𝝪";s:2:"Υ";s:4:"𝝫";s:2:"Φ";s:4:"𝝬";s:2:"Χ";s:4:"𝝭";s:2:"Ψ";s:4:"𝝮";s:2:"Ω";s:4:"𝝯";s:3:"∇";s:4:"𝝰";s:2:"α";s:4:"𝝱";s:2:"β";s:4:"𝝲";s:2:"γ";s:4:"𝝳";s:2:"δ";s:4:"𝝴";s:2:"ε";s:4:"𝝵";s:2:"ζ";s:4:"𝝶";s:2:"η";s:4:"𝝷";s:2:"θ";s:4:"𝝸";s:2:"ι";s:4:"𝝹";s:2:"κ";s:4:"𝝺";s:2:"λ";s:4:"𝝻";s:2:"μ";s:4:"𝝼";s:2:"ν";s:4:"𝝽";s:2:"ξ";s:4:"𝝾";s:2:"ο";s:4:"𝝿";s:2:"π";s:4:"𝞀";s:2:"ρ";s:4:"𝞁";s:2:"ς";s:4:"𝞂";s:2:"σ";s:4:"𝞃";s:2:"τ";s:4:"𝞄";s:2:"υ";s:4:"𝞅";s:2:"φ";s:4:"𝞆";s:2:"χ";s:4:"𝞇";s:2:"ψ";s:4:"𝞈";s:2:"ω";s:4:"𝞉";s:3:"∂";s:4:"𝞊";s:2:"ε";s:4:"𝞋";s:2:"θ";s:4:"𝞌";s:2:"κ";s:4:"𝞍";s:2:"φ";s:4:"𝞎";s:2:"ρ";s:4:"𝞏";s:2:"π";s:4:"𝞐";s:2:"Α";s:4:"𝞑";s:2:"Β";s:4:"𝞒";s:2:"Γ";s:4:"𝞓";s:2:"Δ";s:4:"𝞔";s:2:"Ε";s:4:"𝞕";s:2:"Ζ";s:4:"𝞖";s:2:"Η";s:4:"𝞗";s:2:"Θ";s:4:"𝞘";s:2:"Ι";s:4:"𝞙";s:2:"Κ";s:4:"𝞚";s:2:"Λ";s:4:"𝞛";s:2:"Μ";s:4:"𝞜";s:2:"Ν";s:4:"𝞝";s:2:"Ξ";s:4:"𝞞";s:2:"Ο";s:4:"𝞟";s:2:"Π";s:4:"𝞠";s:2:"Ρ";s:4:"𝞡";s:2:"Θ";s:4:"𝞢";s:2:"Σ";s:4:"𝞣";s:2:"Τ";s:4:"𝞤";s:2:"Υ";s:4:"𝞥";s:2:"Φ";s:4:"𝞦";s:2:"Χ";s:4:"𝞧";s:2:"Ψ";s:4:"𝞨";s:2:"Ω";s:4:"𝞩";s:3:"∇";s:4:"𝞪";s:2:"α";s:4:"𝞫";s:2:"β";s:4:"𝞬";s:2:"γ";s:4:"𝞭";s:2:"δ";s:4:"𝞮";s:2:"ε";s:4:"𝞯";s:2:"ζ";s:4:"𝞰";s:2:"η";s:4:"𝞱";s:2:"θ";s:4:"𝞲";s:2:"ι";s:4:"𝞳";s:2:"κ";s:4:"𝞴";s:2:"λ";s:4:"𝞵";s:2:"μ";s:4:"𝞶";s:2:"ν";s:4:"𝞷";s:2:"ξ";s:4:"𝞸";s:2:"ο";s:4:"𝞹";s:2:"π";s:4:"𝞺";s:2:"ρ";s:4:"𝞻";s:2:"ς";s:4:"𝞼";s:2:"σ";s:4:"𝞽";s:2:"τ";s:4:"𝞾";s:2:"υ";s:4:"𝞿";s:2:"φ";s:4:"𝟀";s:2:"χ";s:4:"𝟁";s:2:"ψ";s:4:"𝟂";s:2:"ω";s:4:"𝟃";s:3:"∂";s:4:"𝟄";s:2:"ε";s:4:"𝟅";s:2:"θ";s:4:"𝟆";s:2:"κ";s:4:"𝟇";s:2:"φ";s:4:"𝟈";s:2:"ρ";s:4:"𝟉";s:2:"π";s:4:"𝟊";s:2:"Ϝ";s:4:"𝟋";s:2:"ϝ";s:4:"𝟎";s:1:"0";s:4:"𝟏";s:1:"1";s:4:"𝟐";s:1:"2";s:4:"𝟑";s:1:"3";s:4:"𝟒";s:1:"4";s:4:"𝟓";s:1:"5";s:4:"𝟔";s:1:"6";s:4:"𝟕";s:1:"7";s:4:"𝟖";s:1:"8";s:4:"𝟗";s:1:"9";s:4:"𝟘";s:1:"0";s:4:"𝟙";s:1:"1";s:4:"𝟚";s:1:"2";s:4:"𝟛";s:1:"3";s:4:"𝟜";s:1:"4";s:4:"𝟝";s:1:"5";s:4:"𝟞";s:1:"6";s:4:"𝟟";s:1:"7";s:4:"𝟠";s:1:"8";s:4:"𝟡";s:1:"9";s:4:"𝟢";s:1:"0";s:4:"𝟣";s:1:"1";s:4:"𝟤";s:1:"2";s:4:"𝟥";s:1:"3";s:4:"𝟦";s:1:"4";s:4:"𝟧";s:1:"5";s:4:"𝟨";s:1:"6";s:4:"𝟩";s:1:"7";s:4:"𝟪";s:1:"8";s:4:"𝟫";s:1:"9";s:4:"𝟬";s:1:"0";s:4:"𝟭";s:1:"1";s:4:"𝟮";s:1:"2";s:4:"𝟯";s:1:"3";s:4:"𝟰";s:1:"4";s:4:"𝟱";s:1:"5";s:4:"𝟲";s:1:"6";s:4:"𝟳";s:1:"7";s:4:"𝟴";s:1:"8";s:4:"𝟵";s:1:"9";s:4:"𝟶";s:1:"0";s:4:"𝟷";s:1:"1";s:4:"𝟸";s:1:"2";s:4:"𝟹";s:1:"3";s:4:"𝟺";s:1:"4";s:4:"𝟻";s:1:"5";s:4:"𝟼";s:1:"6";s:4:"𝟽";s:1:"7";s:4:"𝟾";s:1:"8";s:4:"𝟿";s:1:"9";s:4:"🄀";s:2:"0.";s:4:"🄁";s:2:"0,";s:4:"🄂";s:2:"1,";s:4:"🄃";s:2:"2,";s:4:"🄄";s:2:"3,";s:4:"🄅";s:2:"4,";s:4:"🄆";s:2:"5,";s:4:"🄇";s:2:"6,";s:4:"🄈";s:2:"7,";s:4:"🄉";s:2:"8,";s:4:"🄊";s:2:"9,";s:4:"🄐";s:3:"(A)";s:4:"🄑";s:3:"(B)";s:4:"🄒";s:3:"(C)";s:4:"🄓";s:3:"(D)";s:4:"🄔";s:3:"(E)";s:4:"🄕";s:3:"(F)";s:4:"🄖";s:3:"(G)";s:4:"🄗";s:3:"(H)";s:4:"🄘";s:3:"(I)";s:4:"🄙";s:3:"(J)";s:4:"🄚";s:3:"(K)";s:4:"🄛";s:3:"(L)";s:4:"🄜";s:3:"(M)";s:4:"🄝";s:3:"(N)";s:4:"🄞";s:3:"(O)";s:4:"🄟";s:3:"(P)";s:4:"🄠";s:3:"(Q)";s:4:"🄡";s:3:"(R)";s:4:"🄢";s:3:"(S)";s:4:"🄣";s:3:"(T)";s:4:"🄤";s:3:"(U)";s:4:"🄥";s:3:"(V)";s:4:"🄦";s:3:"(W)";s:4:"🄧";s:3:"(X)";s:4:"🄨";s:3:"(Y)";s:4:"🄩";s:3:"(Z)";s:4:"🄪";s:7:"〔S〕";s:4:"🄫";s:1:"C";s:4:"🄬";s:1:"R";s:4:"🄭";s:2:"CD";s:4:"🄮";s:2:"WZ";s:4:"🄱";s:1:"B";s:4:"🄽";s:1:"N";s:4:"🄿";s:1:"P";s:4:"🅂";s:1:"S";s:4:"🅆";s:1:"W";s:4:"🅊";s:2:"HV";s:4:"🅋";s:2:"MV";s:4:"🅌";s:2:"SD";s:4:"🅍";s:2:"SS";s:4:"🅎";s:3:"PPV";s:4:"🆐";s:2:"DJ";s:4:"🈀";s:6:"ほか";s:4:"🈐";s:3:"手";s:4:"🈑";s:3:"字";s:4:"🈒";s:3:"双";s:4:"🈓";s:6:"デ";s:4:"🈔";s:3:"二";s:4:"🈕";s:3:"多";s:4:"🈖";s:3:"解";s:4:"🈗";s:3:"天";s:4:"🈘";s:3:"交";s:4:"🈙";s:3:"映";s:4:"🈚";s:3:"無";s:4:"🈛";s:3:"料";s:4:"🈜";s:3:"前";s:4:"🈝";s:3:"後";s:4:"🈞";s:3:"再";s:4:"🈟";s:3:"新";s:4:"🈠";s:3:"初";s:4:"🈡";s:3:"終";s:4:"🈢";s:3:"生";s:4:"🈣";s:3:"販";s:4:"🈤";s:3:"声";s:4:"🈥";s:3:"吹";s:4:"🈦";s:3:"演";s:4:"🈧";s:3:"投";s:4:"🈨";s:3:"捕";s:4:"🈩";s:3:"一";s:4:"🈪";s:3:"三";s:4:"🈫";s:3:"遊";s:4:"🈬";s:3:"左";s:4:"🈭";s:3:"中";s:4:"🈮";s:3:"右";s:4:"🈯";s:3:"指";s:4:"🈰";s:3:"走";s:4:"🈱";s:3:"打";s:4:"🉀";s:9:"〔本〕";s:4:"🉁";s:9:"〔三〕";s:4:"🉂";s:9:"〔二〕";s:4:"🉃";s:9:"〔安〕";s:4:"🉄";s:9:"〔点〕";s:4:"🉅";s:9:"〔打〕";s:4:"🉆";s:9:"〔盗〕";s:4:"🉇";s:9:"〔勝〕";s:4:"🉈";s:9:"〔敗〕";s:4:"丽";s:3:"丽";s:4:"丸";s:3:"丸";s:4:"乁";s:3:"乁";s:4:"𠄢";s:4:"𠄢";s:4:"你";s:3:"你";s:4:"侮";s:3:"侮";s:4:"侻";s:3:"侻";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"偺";s:4:"備";s:3:"備";s:4:"僧";s:3:"僧";s:4:"像";s:3:"像";s:4:"㒞";s:3:"㒞";s:4:"𠘺";s:4:"𠘺";s:4:"免";s:3:"免";s:4:"兔";s:3:"兔";s:4:"兤";s:3:"兤";s:4:"具";s:3:"具";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"㒹";s:4:"內";s:3:"內";s:4:"再";s:3:"再";s:4:"𠕋";s:4:"𠕋";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"凵";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"㓟";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"卉";s:4:"卑";s:3:"卑";s:4:"博";s:3:"博";s:4:"即";s:3:"即";s:4:"卽";s:3:"卽";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"卿";s:3:"卿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"灰";s:4:"及";s:3:"及";s:4:"叟";s:3:"叟";s:4:"𠭣";s:4:"𠭣";s:4:"叫";s:3:"叫";s:4:"叱";s:3:"叱";s:4:"吆";s:3:"吆";s:4:"咞";s:3:"咞";s:4:"吸";s:3:"吸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"咢";s:4:"哶";s:3:"哶";s:4:"唐";s:3:"唐";s:4:"啓";s:3:"啓";s:4:"啣";s:3:"啣";s:4:"善";s:3:"善";s:4:"善";s:3:"善";s:4:"喙";s:3:"喙";s:4:"喫";s:3:"喫";s:4:"喳";s:3:"喳";s:4:"嗂";s:3:"嗂";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"圗";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"噴";s:3:"噴";s:4:"切";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"堍";s:4:"型";s:3:"型";s:4:"堲";s:3:"堲";s:4:"報";s:3:"報";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"多";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"㛮";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"将";s:4:"当";s:3:"当";s:4:"尢";s:3:"尢";s:4:"㞁";s:3:"㞁";s:4:"屠";s:3:"屠";s:4:"屮";s:3:"屮";s:4:"峀";s:3:"峀";s:4:"岍";s:3:"岍";s:4:"𡷤";s:4:"𡷤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"𡷦";s:4:"嵮";s:3:"嵮";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"嵼";s:4:"巡";s:3:"巡";s:4:"巢";s:3:"巢";s:4:"㠯";s:3:"㠯";s:4:"巽";s:3:"巽";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"㡢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"庶";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"𪎒";s:4:"𪎒";s:4:"廾";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"舁";s:4:"弢";s:3:"弢";s:4:"弢";s:3:"弢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"形";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"忍";s:3:"忍";s:4:"志";s:3:"志";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"悁";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"悔";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"慈";s:4:"慌";s:3:"慌";s:4:"慎";s:3:"慎";s:4:"慌";s:3:"慌";s:4:"慺";s:3:"慺";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"成";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"扝";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"拔";s:4:"捐";s:3:"捐";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"捨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"揤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"搢";s:4:"揅";s:3:"揅";s:4:"掩";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"摩";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"撝";s:4:"摷";s:3:"摷";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"敏";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"旣";s:4:"書";s:3:"書";s:4:"晉";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"暑";s:3:"暑";s:4:"㬈";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"暜";s:4:"肭";s:3:"肭";s:4:"䏙";s:3:"䏙";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"杞";s:4:"杓";s:3:"杓";s:4:"𣏃";s:4:"𣏃";s:4:"㭉";s:3:"㭉";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"枅";s:4:"桒";s:3:"桒";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"栟";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"㮝";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"櫛";s:4:"㰘";s:3:"㰘";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"歔";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"歲";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"殻";s:4:"𣪍";s:4:"𣪍";s:4:"𡴋";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"泍";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"洖";s:4:"派";s:3:"派";s:4:"海";s:3:"海";s:4:"流";s:3:"流";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"洴";s:4:"港";s:3:"港";s:4:"湮";s:3:"湮";s:4:"㴳";s:3:"㴳";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"𣻑";s:4:"𣻑";s:4:"淹";s:3:"淹";s:4:"潮";s:3:"潮";s:4:"𣽞";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"灊";s:4:"災";s:3:"災";s:4:"灷";s:3:"灷";s:4:"炭";s:3:"炭";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"煅";s:4:"𤉣";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"牐";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"獺";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"瑜";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"璅";s:4:"瓊";s:3:"瓊";s:4:"㼛";s:3:"㼛";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"異";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"𥁄";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"直";s:4:"𥃳";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"睊";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"瞋";s:4:"䁆";s:3:"䁆";s:4:"䂖";s:3:"䂖";s:4:"𥐝";s:4:"𥐝";s:4:"硎";s:3:"硎";s:4:"碌";s:3:"碌";s:4:"磌";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"福";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"穀";s:4:"穊";s:3:"穊";s:4:"穏";s:3:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"竮";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"糒";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"糣";s:4:"紀";s:3:"紀";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"絣";s:4:"䌁";s:3:"䌁";s:4:"緇";s:3:"緇";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"繅";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"䍙";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"聠";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"聰";s:4:"𣍟";s:4:"𣍟";s:4:"䏕";s:3:"䏕";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"䐋";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"舁";s:4:"舄";s:3:"舄";s:4:"辞";s:3:"辞";s:4:"䑫";s:3:"䑫";s:4:"芑";s:3:"芑";s:4:"芋";s:3:"芋";s:4:"芝";s:3:"芝";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"若";s:4:"茝";s:3:"茝";s:4:"荣";s:3:"荣";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"莽";s:3:"莽";s:4:"菧";s:3:"菧";s:4:"著";s:3:"著";s:4:"荓";s:3:"荓";s:4:"菊";s:3:"菊";s:4:"菌";s:3:"菌";s:4:"菜";s:3:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"蔖";s:4:"𧏊";s:4:"𧏊";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"䕝";s:4:"䕡";s:3:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"䕫";s:4:"虐";s:3:"虐";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"蚩";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"蝹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"蝫";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"䗗";s:4:"蟡";s:3:"蟡";s:4:"蠁";s:3:"蠁";s:4:"䗹";s:3:"䗹";s:4:"衠";s:3:"衠";s:4:"衣";s:3:"衣";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"䚾";s:3:"䚾";s:4:"䛇";s:3:"䛇";s:4:"誠";s:3:"誠";s:4:"諭";s:3:"諭";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"賁";s:4:"贛";s:3:"贛";s:4:"起";s:3:"起";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"𠠄";s:4:"跋";s:3:"跋";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"跰";s:4:"𠣞";s:4:"𠣞";s:4:"軔";s:3:"軔";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"邔";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"鄑";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"鄛";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"鋗";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"鏹";s:4:"鐕";s:3:"鐕";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"開";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"閷";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"䩮";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"𩐊";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"𩒖";s:4:"頋";s:3:"頋";s:4:"頋";s:3:"頋";s:4:"頩";s:3:"頩";s:4:"𩖶";s:4:"𩖶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"鱀";s:4:"鳽";s:3:"鳽";s:4:"䳎";s:3:"䳎";s:4:"䳭";s:3:"䳭";s:4:"鵧";s:3:"鵧";s:4:"𪃎";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"䵖";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"鼅";s:4:"鼏";s:3:"鼏";s:4:"鼖";s:3:"鼖";s:4:"鼻";s:3:"鼻";s:4:"𪘀";s:4:"𪘀";}' );
+
diff --git a/includes/normal/UtfNormalGenerate.php b/includes/normal/UtfNormalGenerate.php
index a16e76a8..3b1e9e73 100644
--- a/includes/normal/UtfNormalGenerate.php
+++ b/includes/normal/UtfNormalGenerate.php
@@ -37,7 +37,7 @@ $in = fopen("DerivedNormalizationProps.txt", "rt" );
if( !$in ) {
print "Can't open DerivedNormalizationProps.txt for reading.\n";
print "If necessary, fetch this file from the internet:\n";
- print "http://www.unicode.org/Public/UNIDATA/CompositionExclusions.txt\n";
+ print "http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt\n";
exit(-1);
}
print "Initializing normalization quick check tables...\n";
@@ -91,7 +91,7 @@ $canon = 0;
print "Reading character definitions...\n";
while( false !== ($line = fgets( $in ) ) ) {
- $columns = split(';', $line);
+ $columns = explode(';', $line);
$codepoint = $columns[0];
$name = $columns[1];
$canonicalCombiningClass = $columns[3];
@@ -182,7 +182,7 @@ global \$utfCombiningClass, \$utfCanonicalComp, \$utfCanonicalDecomp, \$utfCheck
\$utfCanonicalComp = unserialize( '$serComp' );
\$utfCanonicalDecomp = unserialize( '$serCanon' );
\$utfCheckNFC = unserialize( '$serCheckNFC' );
-?" . ">\n";
+\n";
fputs( $out, $outdata );
fclose( $out );
print "Wrote out UtfNormalData.inc\n";
@@ -203,7 +203,7 @@ if( $out ) {
/** */
global \$utfCompatibilityDecomp;
\$utfCompatibilityDecomp = unserialize( '$serCompat' );
-?" . ">\n";
+\n";
fputs( $out, $outdata );
fclose( $out );
print "Wrote out UtfNormalDataK.inc\n";
diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php
index 774e96a7..8abcc04f 100644
--- a/includes/parser/CoreParserFunctions.php
+++ b/includes/parser/CoreParserFunctions.php
@@ -16,6 +16,7 @@ class CoreParserFunctions {
$parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
$parser->setFunctionHook( 'ns', array( __CLASS__, 'ns' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'nse', array( __CLASS__, 'nse' ), SFH_NO_HASH );
$parser->setFunctionHook( 'urlencode', array( __CLASS__, 'urlencode' ), SFH_NO_HASH );
$parser->setFunctionHook( 'lcfirst', array( __CLASS__, 'lcfirst' ), SFH_NO_HASH );
$parser->setFunctionHook( 'ucfirst', array( __CLASS__, 'ucfirst' ), SFH_NO_HASH );
@@ -67,7 +68,7 @@ class CoreParserFunctions {
$parser->setFunctionHook( 'subjectpagename', array( __CLASS__, 'subjectpagename' ), SFH_NO_HASH );
$parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
$parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
- $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
+ $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
if ( $wgAllowDisplayTitle ) {
$parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
@@ -88,20 +89,20 @@ class CoreParserFunctions {
return array( 'found' => false );
}
}
-
+
static function formatDate( $parser, $date, $defaultPref = null ) {
$df = DateFormatter::getInstance();
-
- $date = trim($date);
-
+
+ $date = trim( $date );
+
$pref = $parser->mOptions->getDateFormat();
-
+
// Specify a different default date format other than the the normal default
- // iff the user has 'default' for their setting
- if ($pref == 'default' && $defaultPref)
+ // iff the user has 'default' for their setting
+ if ( $pref == 'default' && $defaultPref )
$pref = $defaultPref;
-
- $date = $df->reformat( $pref, $date, array('match-whole') );
+
+ $date = $df->reformat( $pref, $date, array( 'match-whole' ) );
return $date;
}
@@ -119,6 +120,10 @@ class CoreParserFunctions {
}
}
+ static function nse( $parser, $part1 = '' ) {
+ return wfUrlencode( str_replace( ' ', '_', self::ns( $parser, $part1 ) ) );
+ }
+
static function urlencode( $parser, $s = '' ) {
return urlencode( $s );
}
@@ -163,11 +168,11 @@ class CoreParserFunctions {
# and the variable will fail. If we can't get a decent title from the first
# attempt, url-decode and try for a second.
if( is_null( $title ) )
- $title = Title::newFromUrl( urldecode( $s ) );
+ $title = Title::newFromURL( urldecode( $s ) );
if( !is_null( $title ) ) {
# Convert NS_MEDIA -> NS_FILE
if( $title->getNamespace() == NS_MEDIA ) {
- $title = Title::makeTitle( NS_FILE, $title->getDBKey() );
+ $title = Title::makeTitle( NS_FILE, $title->getDBkey() );
}
if( !is_null( $arg ) ) {
$text = $title->$func( $arg );
@@ -193,15 +198,16 @@ class CoreParserFunctions {
}
static function gender( $parser, $user ) {
+ wfProfileIn( __METHOD__ );
$forms = array_slice( func_get_args(), 2);
// default
$gender = User::getDefaultOption( 'gender' );
-
+
// allow prefix.
$title = Title::newFromText( $user );
-
- if (is_object( $title ) && $title->getNamespace() == NS_USER)
+
+ if ( is_object( $title ) && $title->getNamespace() == NS_USER )
$user = $title->getText();
// check parameter, or use $wgUser if in interface message
@@ -212,10 +218,12 @@ class CoreParserFunctions {
global $wgUser;
$gender = $wgUser->getOption( 'gender' );
}
- return $parser->getFunctionLang()->gender( $gender, $forms );
+ $ret = $parser->getFunctionLang()->gender( $gender, $forms );
+ wfProfileOut( __METHOD__ );
+ return $ret;
}
- static function plural( $parser, $text = '') {
- $forms = array_slice( func_get_args(), 2);
+ static function plural( $parser, $text = '' ) {
+ $forms = array_slice( func_get_args(), 2 );
$text = $parser->getFunctionLang()->parseFormattedNumber( $text );
return $parser->getFunctionLang()->convertPlural( $text, $forms );
}
@@ -224,21 +232,39 @@ class CoreParserFunctions {
* Override the title of the page when viewed, provided we've been given a
* title which will normalise to the canonical title
*
- * @param Parser $parser Parent parser
- * @param string $text Desired title text
- * @return string
+ * @param $parser Parser: parent parser
+ * @param $text String: desired title text
+ * @return String
*/
static function displaytitle( $parser, $text = '' ) {
global $wgRestrictDisplayTitle;
- $text = trim( Sanitizer::decodeCharReferences( $text ) );
- if ( !$wgRestrictDisplayTitle ) {
+ #parse a limited subset of wiki markup (just the single quote items)
+ $text = $parser->doQuotes( $text );
+
+ #remove stripped text (e.g. the UNIQ-QINU stuff) that was generated by tag extensions/whatever
+ $text = preg_replace( '/' . preg_quote( $parser->uniqPrefix(), '/' ) . '.*?'
+ . preg_quote( Parser::MARKER_SUFFIX, '/' ) . '/', '', $text );
+
+ #list of disallowed tags for DISPLAYTITLE
+ #these will be escaped even though they are allowed in normal wiki text
+ $bad = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'blockquote', 'ol', 'ul', 'li', 'hr',
+ 'table', 'tr', 'th', 'td', 'dl', 'dd', 'caption', 'p', 'ruby', 'rb', 'rt', 'rp', 'br' );
+
+ #only requested titles that normalize to the actual title are allowed through
+ #if $wgRestrictDisplayTitle is true (it is by default)
+ #mimic the escaping process that occurs in OutputPage::setPageTitle
+ $text = Sanitizer::normalizeCharReferences( Sanitizer::removeHTMLtags( $text, null, array(), array(), $bad ) );
+ $title = Title::newFromText( Sanitizer::stripAllTags( $text ) );
+
+ if( !$wgRestrictDisplayTitle ) {
$parser->mOutput->setDisplayTitle( $text );
} else {
- $title = Title::newFromText( $text );
- if( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) )
+ if ( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) ) {
$parser->mOutput->setDisplayTitle( $text );
+ }
}
+
return '';
}
@@ -291,9 +317,9 @@ class CoreParserFunctions {
}
static function numberingroup( $parser, $name = '', $raw = null) {
return self::formatRaw( SiteStats::numberingroup( strtolower( $name ) ), $raw );
- }
+ }
+
-
/**
* Given a title, return the namespace name that would be given by the
* corresponding magic word
@@ -302,37 +328,37 @@ class CoreParserFunctions {
*/
static function mwnamespace( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return str_replace( '_', ' ', $t->getNsText() );
}
static function namespacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return wfUrlencode( $t->getNsText() );
}
static function talkspace( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return str_replace( '_', ' ', $t->getTalkNsText() );
}
static function talkspacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return wfUrlencode( $t->getTalkNsText() );
}
static function subjectspace( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return str_replace( '_', ' ', $t->getSubjectNsText() );
}
static function subjectspacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return wfUrlencode( $t->getSubjectNsText() );
}
@@ -342,77 +368,77 @@ class CoreParserFunctions {
*/
static function pagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return wfEscapeWikiText( $t->getText() );
}
static function pagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return $t->getPartialURL();
}
static function fullpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return wfEscapeWikiText( $t->getPrefixedText() );
}
static function fullpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return $t->getPrefixedURL();
}
static function subpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return $t->getSubpageText();
}
static function subpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return $t->getSubpageUrlForm();
}
static function basepagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return $t->getBaseText();
}
static function basepagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return wfUrlEncode( str_replace( ' ', '_', $t->getBaseText() ) );
- }
+ }
static function talkpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return wfEscapeWikiText( $t->getTalkPage()->getPrefixedText() );
}
static function talkpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) || !$t->canTalk() )
+ if ( is_null( $t ) || !$t->canTalk() )
return '';
return $t->getTalkPage()->getPrefixedUrl();
}
static function subjectpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedText() );
}
static function subjectpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
- if ( is_null($t) )
+ if ( is_null( $t ) )
return '';
return $t->getSubjectPage()->getPrefixedUrl();
}
-
+
/**
* Return the number of pages in the given category, or 0 if it's nonexis-
* tent. This is an expensive parser function and can't be called too many
@@ -443,16 +469,16 @@ class CoreParserFunctions {
* Return the size of the given page, or 0 if it's nonexistent. This is an
* expensive parser function and can't be called too many times per page.
*
- * @FIXME This doesn't work correctly on preview for getting the size of
- * the current page.
- * @FIXME Title::getLength() documentation claims that it adds things to
- * the link cache, so the local cache here should be unnecessary, but in
- * fact calling getLength() repeatedly for the same $page does seem to
+ * @todo Fixme: This doesn't work correctly on preview for getting the size
+ * of the current page.
+ * @todo Fixme: Title::getLength() documentation claims that it adds things
+ * to the link cache, so the local cache here should be unnecessary, but
+ * in fact calling getLength() repeatedly for the same $page does seem to
* run one query for each call?
*/
static function pagesize( $parser, $page = '', $raw = null ) {
static $cache = array();
- $title = Title::newFromText($page);
+ $title = Title::newFromText( $page );
if( !is_object( $title ) ) {
$cache[$page] = 0;
@@ -466,16 +492,16 @@ class CoreParserFunctions {
if( isset( $cache[$page] ) ) {
$length = $cache[$page];
} elseif( $parser->incrementExpensiveFunctionCount() ) {
- $rev = Revision::newFromTitle($title);
+ $rev = Revision::newFromTitle( $title );
$id = $rev ? $rev->getPage() : 0;
$length = $cache[$page] = $rev ? $rev->getSize() : 0;
-
+
// Register dependency in templatelinks
$parser->mOutput->addTemplate( $title, $id, $rev ? $rev->getId() : 0 );
- }
+ }
return self::formatRaw( $length, $raw );
}
-
+
/**
* Returns the requested protection level for the current page
*/
@@ -496,12 +522,12 @@ class CoreParserFunctions {
* Unicode-safe str_pad with the restriction that $length is forced to be <= 500
*/
static function pad( $string, $length, $padding = '0', $direction = STR_PAD_RIGHT ) {
- $lengthOfPadding = mb_strlen( $padding );
+ $lengthOfPadding = mb_strlen( $padding );
if ( $lengthOfPadding == 0 ) return $string;
-
+
# The remaining length to add counts down to 0 as padding is added
$length = min( $length, 500 ) - mb_strlen( $string );
- # $finalPadding is just $padding repeated enough times so that
+ # $finalPadding is just $padding repeated enough times so that
# mb_strlen( $string ) + mb_strlen( $finalPadding ) == $length
$finalPadding = '';
while ( $length > 0 ) {
@@ -510,7 +536,7 @@ class CoreParserFunctions {
$finalPadding .= mb_substr( $padding, 0, $length );
$length -= $lengthOfPadding;
}
-
+
if ( $direction == STR_PAD_LEFT ) {
return $finalPadding . $string;
} else {
diff --git a/includes/parser/CoreTagHooks.php b/includes/parser/CoreTagHooks.php
new file mode 100644
index 00000000..7cc8260e
--- /dev/null
+++ b/includes/parser/CoreTagHooks.php
@@ -0,0 +1,49 @@
+<?php
+
+class CoreTagHooks {
+ static function register( $parser ) {
+ global $wgRawHtml, $wgUseTeX;
+ $parser->setHook( 'pre', array( __CLASS__, 'pre' ) );
+ $parser->setHook( 'nowiki', array( __CLASS__, 'nowiki' ) );
+ $parser->setHook( 'gallery', array( __CLASS__, 'gallery' ) );
+ if ( $wgRawHtml ) {
+ $parser->setHook( 'html', array( __CLASS__, 'html' ) );
+ }
+ if ( $wgUseTeX ) {
+ $parser->setHook( 'math', array( __CLASS__, 'math' ) );
+ }
+ }
+
+ static function pre( $text, $attribs, $parser ) {
+ // Backwards-compatibility hack
+ $content = StringUtils::delimiterReplace( '<nowiki>', '</nowiki>', '$1', $text, 'i' );
+
+ $attribs = Sanitizer::validateTagAttributes( $attribs, 'pre' );
+ return Xml::openElement( 'pre', $attribs ) .
+ Xml::escapeTagsOnly( $content ) .
+ '</pre>';
+ }
+
+ static function html( $content, $attributes, $parser ) {
+ global $wgRawHtml;
+ if( $wgRawHtml ) {
+ return array( $content, 'markerType' => 'nowiki' );
+ } else {
+ throw new MWException( '<html> extension tag encountered unexpectedly' );
+ }
+ }
+
+ static function nowiki( $content, $attributes, $parser ) {
+ $content = strtr( $content, array( '-{' => '-&#123;', '}-' => '&#125;-' ) );
+ return array( Xml::escapeTagsOnly( $content ), 'markerType' => 'nowiki' );
+ }
+
+ static function math( $content, $attributes, $parser ) {
+ global $wgContLang;
+ return $wgContLang->armourMath( MathRenderer::renderMath( $content, $attributes ) );
+ }
+
+ static function gallery( $content, $attributes, $parser ) {
+ return $parser->renderImageGallery( $content, $attributes );
+ }
+}
diff --git a/includes/parser/DateFormatter.php b/includes/parser/DateFormatter.php
index aa6415e4..602bcff3 100644
--- a/includes/parser/DateFormatter.php
+++ b/includes/parser/DateFormatter.php
@@ -48,10 +48,10 @@ class DateFormatter
$this->prxISO2 = '\[\[(-?\d{4})-(\d{2})-(\d{2})\]\]';
# Real regular expressions
- $this->regexes[self::DMY] = "/{$this->prxDM} *,? *{$this->prxY}{$this->regexTrail}";
- $this->regexes[self::YDM] = "/{$this->prxY} *,? *{$this->prxDM}{$this->regexTrail}";
- $this->regexes[self::MDY] = "/{$this->prxMD} *,? *{$this->prxY}{$this->regexTrail}";
- $this->regexes[self::YMD] = "/{$this->prxY} *,? *{$this->prxMD}{$this->regexTrail}";
+ $this->regexes[self::DMY] = "/{$this->prxDM}(?: *, *| +){$this->prxY}{$this->regexTrail}";
+ $this->regexes[self::YDM] = "/{$this->prxY}(?: *, *| +){$this->prxDM}{$this->regexTrail}";
+ $this->regexes[self::MDY] = "/{$this->prxMD}(?: *, *| +){$this->prxY}{$this->regexTrail}";
+ $this->regexes[self::YMD] = "/{$this->prxY}(?: *, *| +){$this->prxMD}{$this->regexTrail}";
$this->regexes[self::DM] = "/{$this->prxDM}{$this->regexTrail}";
$this->regexes[self::MD] = "/{$this->prxMD}{$this->regexTrail}";
$this->regexes[self::ISO1] = "/{$this->prxISO1}{$this->regexTrail}";
@@ -268,7 +268,7 @@ class DateFormatter
$isoDate = implode( '-', $isoBits );;
// Output is not strictly HTML (it's wikitext), but <span> is whitelisted.
- $text = Xml::tags( 'span',
+ $text = Html::rawElement( 'span',
array( 'class' => 'mw-formatted-date', 'title' => $isoDate ), $text );
return $text;
diff --git a/includes/parser/LinkHolderArray.php b/includes/parser/LinkHolderArray.php
index 35b672b9..4f382a4f 100644
--- a/includes/parser/LinkHolderArray.php
+++ b/includes/parser/LinkHolderArray.php
@@ -105,6 +105,7 @@ class LinkHolderArray {
}
/**
+ * FIXME: update documentation. makeLinkObj() is deprecated.
* Replace <!--LINK--> link placeholders with actual links, in the buffer
* Placeholders created in Skin::makeLinkObj()
* Returns an array of link CSS classes, indexed by PDBK.
@@ -228,10 +229,12 @@ class LinkHolderArray {
$linkCache->addBadLinkObj( $title );
$colours[$pdbk] = 'new';
$output->addLink( $title, 0 );
+ // FIXME: replace deprecated makeBrokenLinkObj() by link()
$replacePairs[$searchkey] = $sk->makeBrokenLinkObj( $title,
$entry['text'],
$query );
} else {
+ // FIXME: replace deprecated makeColouredLinkObj() by link()
$replacePairs[$searchkey] = $sk->makeColouredLinkObj( $title, $colours[$pdbk],
$entry['text'],
$query );
diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php
index e6a68782..4f672f5b 100644
--- a/includes/parser/Parser.php
+++ b/includes/parser/Parser.php
@@ -91,8 +91,9 @@ class Parser
*/
# Persistent:
var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables,
- $mImageParams, $mImageParamsMagicArray, $mStripList, $mMarkerIndex, $mPreprocessor,
- $mExtLinkBracketedRegex, $mUrlProtocols, $mDefaultStripList, $mVarCache, $mConf;
+ $mSubstWords, $mImageParams, $mImageParamsMagicArray, $mStripList, $mMarkerIndex,
+ $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols, $mDefaultStripList,
+ $mVarCache, $mConf, $mFunctionTagHooks;
# Cleared with clearState():
@@ -103,7 +104,6 @@ class Parser
var $mTplExpandCache; // empty-frame expansion cache
var $mTplRedirCache, $mTplDomCache, $mHeadings, $mDoubleUnderscores;
var $mExpensiveFunctionCount; // number of expensive parser function calls
- var $mFileCache;
# Temporary
# These are variables reset at least once per parse regardless of $clearState
@@ -127,8 +127,9 @@ class Parser
$this->mTagHooks = array();
$this->mTransparentTagHooks = array();
$this->mFunctionHooks = array();
+ $this->mFunctionTagHooks = array();
$this->mFunctionSynonyms = array( 0 => array(), 1 => array() );
- $this->mDefaultStripList = $this->mStripList = array( 'nowiki', 'gallery' );
+ $this->mDefaultStripList = $this->mStripList = array();
$this->mUrlProtocols = wfUrlProtocols();
$this->mExtLinkBracketedRegex = '/\[(\b(' . wfUrlProtocols() . ')'.
'[^][<>"\\x00-\\x20\\x7F]+) *([^\]\\x0a\\x0d]*?)\]/S';
@@ -171,8 +172,8 @@ class Parser
wfProfileIn( __METHOD__ );
- $this->setHook( 'pre', array( $this, 'renderPreTag' ) );
CoreParserFunctions::register( $this );
+ CoreTagHooks::register( $this );
$this->initialiseVariables();
wfRunHooks( 'ParserFirstCallInit', array( &$this ) );
@@ -200,6 +201,7 @@ class Parser
$this->mLinkHolders = new LinkHolderArray( $this );
$this->mLinkID = 0;
$this->mRevisionTimestamp = $this->mRevisionId = null;
+ $this->mVarCache = array();
/**
* Prefix for temporary replacement strings for the multipass parser.
@@ -230,7 +232,6 @@ class Parser
$this->mHeadings = array();
$this->mDoubleUnderscores = array();
$this->mExpensiveFunctionCount = 0;
- $this->mFileCache = array();
# Fix cloning
if ( isset( $this->mPreprocessor ) && $this->mPreprocessor->parser !== $this ) {
@@ -255,9 +256,10 @@ class Parser
* Set the context title
*/
function setTitle( $t ) {
- if ( !$t || $t instanceof FakeTitle ) {
- $t = Title::newFromText( 'NO TITLE' );
- }
+ if ( !$t || $t instanceof FakeTitle ) {
+ $t = Title::newFromText( 'NO TITLE' );
+ }
+
if ( strval( $t->getFragment() ) !== '' ) {
# Strip the fragment to avoid various odd effects
$this->mTitle = clone $t;
@@ -274,7 +276,7 @@ class Parser
*/
function uniqPrefix() {
if( !isset( $this->mUniqPrefix ) ) {
- // @fixme this is probably *horribly wrong*
+ // @todo Fixme: this is probably *horribly wrong*
// LanguageConverter seems to want $wgParser's uniqPrefix, however
// if this is called for a parser cache hit, the parser may not
// have ever been initialized in the first place.
@@ -303,7 +305,7 @@ class Parser
* to internalParse() which does all the real work.
*/
- global $wgUseTidy, $wgAlwaysUseTidy, $wgContLang;
+ global $wgUseTidy, $wgAlwaysUseTidy, $wgContLang, $wgDisableLangConversion, $wgDisableTitleConversion;
$fname = __METHOD__.'-' . wfGetCaller();
wfProfileIn( __METHOD__ );
wfProfileIn( $fname );
@@ -313,7 +315,8 @@ class Parser
}
$this->mOptions = $options;
- $this->setTitle( $title );
+ $this->setTitle( $title ); // Page title has to be set for the pre-processor
+
$oldRevisionId = $this->mRevisionId;
$oldRevisionTimestamp = $this->mRevisionTimestamp;
if( $revid !== null ) {
@@ -325,6 +328,7 @@ class Parser
# No more strip!
wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) );
$text = $this->internalParse( $text );
+
$text = $this->mStripState->unstripGeneral( $text );
# Clean up special characters, only run once, next-to-last before doBlockLevels
@@ -342,11 +346,51 @@ class Parser
$this->replaceLinkHolders( $text );
- # the position of the parserConvert() call should not be changed. it
- # assumes that the links are all replaced and the only thing left
- # is the <nowiki> mark.
- # Side-effects: this calls $this->mOutput->setTitleText()
- $text = $wgContLang->parserConvert( $text, $this );
+ /**
+ * The page doesn't get language converted if
+ * a) It's disabled
+ * b) Content isn't converted
+ * c) It's a conversion table
+ */
+ if ( !( $wgDisableLangConversion
+ || isset( $this->mDoubleUnderscores['nocontentconvert'] )
+ || $this->mTitle->isConversionTable() ) ) {
+
+ # The position of the convert() call should not be changed. it
+ # assumes that the links are all replaced and the only thing left
+ # is the <nowiki> mark.
+
+ $text = $wgContLang->convert( $text );
+ }
+
+ /**
+ * A page get its title converted except:
+ * a) Language conversion is globally disabled
+ * b) Title convert is globally disabled
+ * c) The page is a redirect page
+ * d) User request with a "linkconvert" set to "no"
+ * e) A "nocontentconvert" magic word has been set
+ * f) A "notitleconvert" magic word has been set
+ * g) User sets "noconvertlink" in his/her preference
+ *
+ * Note that if a user tries to set a title in a conversion
+ * rule but content conversion was not done, then the parser
+ * won't pick it up. This is probably expected behavior.
+ */
+ if ( !( $wgDisableLangConversion
+ || $wgDisableTitleConversion
+ || isset( $this->mDoubleUnderscores['nocontentconvert'] )
+ || isset( $this->mDoubleUnderscores['notitleconvert'] )
+ || $this->mOutput->getDisplayTitle() !== false ) )
+ {
+ $convruletitle = $wgContLang->getConvRuleTitle();
+ if ( $convruletitle ) {
+ $this->mOutput->setTitleText( $convruletitle );
+ } else {
+ $titleText = $wgContLang->convertTitle( $title );
+ $this->mOutput->setTitleText( $titleText );
+ }
+ }
$text = $this->mStripState->unstripNoWiki( $text );
@@ -412,7 +456,6 @@ class Parser
# Information on include size limits, for the benefit of users who try to skirt them
if ( $this->mOptions->getEnableLimitReport() ) {
- global $wgExpensiveParserFunctionLimit;
$max = $this->mOptions->getMaxIncludeSize();
$PFreport = "Expensive parser function count: {$this->mExpensiveFunctionCount}/$wgExpensiveParserFunctionLimit\n";
$limitReport =
@@ -425,6 +468,7 @@ class Parser
$text .= "\n<!-- \n$limitReport-->\n";
}
$this->mOutput->setText( $text );
+
$this->mRevisionId = $oldRevisionId;
$this->mRevisionTimestamp = $oldRevisionTimestamp;
wfProfileOut( $fname );
@@ -436,12 +480,17 @@ class Parser
/**
* Recursive parser entry point that can be called from an extension tag
* hook.
+ *
+ * If $frame is not provided, then template variables (e.g., {{{1}}}) within $text are not expanded
+ *
+ * @param $text String: text extension wants to have parsed
+ * @param PPFrame $frame: The frame to use for expanding any template variables
*/
- function recursiveTagParse( $text ) {
+ function recursiveTagParse( $text, $frame=false ) {
wfProfileIn( __METHOD__ );
wfRunHooks( 'ParserBeforeStrip', array( &$this, &$text, &$this->mStripState ) );
wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) );
- $text = $this->internalParse( $text );
+ $text = $this->internalParse( $text, false, $frame );
wfProfileOut( __METHOD__ );
return $text;
}
@@ -529,9 +578,9 @@ class Parser
$matches = array();
$taglist = implode( '|', $elements );
- $start = "/<($taglist)(\\s+[^>]*?|\\s*?)(\/?>)|<(!--)/i";
+ $start = "/<($taglist)(\\s+[^>]*?|\\s*?)(\/?" . ">)|<(!--)/i";
- while ( '' != $text ) {
+ while ( $text != '' ) {
$p = preg_split( $start, $text, 2, PREG_SPLIT_DELIM_CAPTURE );
$stripped .= $p[0];
if( count( $p ) < 5 ) {
@@ -589,15 +638,7 @@ class Parser
* Get a list of strippable XML-like elements
*/
function getStripList() {
- global $wgRawHtml;
- $elements = $this->mStripList;
- if( $wgRawHtml ) {
- $elements[] = 'html';
- }
- if( $this->mOptions->getUseTeX() ) {
- $elements[] = 'math';
- }
- return $elements;
+ return $this->mStripList;
}
/**
@@ -648,14 +689,14 @@ class Parser
$this->mStripState->general->setPair( $rnd, $text );
return $rnd;
}
-
+
/**
* Interface with html tidy
* @deprecated Use MWTidy::tidy()
*/
public static function tidy( $text ) {
wfDeprecated( __METHOD__ );
- return MWTidy::tidy( $text );
+ return MWTidy::tidy( $text );
}
/**
@@ -693,11 +734,11 @@ class Parser
$attributes = Sanitizer::fixTagAttributes ( $attributes , 'table' );
$outLine = str_repeat( '<dl><dd>' , $indent_level ) . "<table{$attributes}>";
- array_push ( $td_history , false );
- array_push ( $last_tag_history , '' );
- array_push ( $tr_history , false );
- array_push ( $tr_attributes , '' );
- array_push ( $has_opened_tr , false );
+ array_push( $td_history , false );
+ array_push( $last_tag_history , '' );
+ array_push( $tr_history , false );
+ array_push( $tr_attributes , '' );
+ array_push( $has_opened_tr , false );
} else if ( count ( $td_history ) == 0 ) {
// Don't do any of the following
$out .= $outLine."\n";
@@ -726,9 +767,9 @@ class Parser
// Whats after the tag is now only attributes
$attributes = $this->mStripState->unstripBoth( $line );
- $attributes = Sanitizer::fixTagAttributes ( $attributes , 'tr' );
- array_pop ( $tr_attributes );
- array_push ( $tr_attributes , $attributes );
+ $attributes = Sanitizer::fixTagAttributes( $attributes, 'tr' );
+ array_pop( $tr_attributes );
+ array_push( $tr_attributes, $attributes );
$line = '';
$last_tag = array_pop ( $last_tag_history );
@@ -862,17 +903,33 @@ class Parser
*
* @private
*/
- function internalParse( $text ) {
- $isMain = true;
+ function internalParse( $text, $isMain = true, $frame=false ) {
wfProfileIn( __METHOD__ );
+ $origText = $text;
+
# Hook to suspend the parser in this state
if ( !wfRunHooks( 'ParserBeforeInternalParse', array( &$this, &$text, &$this->mStripState ) ) ) {
wfProfileOut( __METHOD__ );
return $text ;
}
- $text = $this->replaceVariables( $text );
+ // if $frame is provided, then use $frame for replacing any variables
+ if ($frame) {
+ // use frame depth to infer how include/noinclude tags should be handled
+ // depth=0 means this is the top-level document; otherwise it's an included document
+ if( !$frame->depth )
+ $flag = 0;
+ else
+ $flag = Parser::PTD_FOR_INCLUSION;
+ $dom = $this->preprocessToDom( $text, $flag );
+ $text = $frame->expand( $dom );
+ }
+ // if $frame is not provided, then use old-style replaceVariables
+ else {
+ $text = $this->replaceVariables( $text );
+ }
+
$text = Sanitizer::removeHTMLtags( $text, array( &$this, 'attributeStripCallback' ), false, array_keys( $this->mTransparentTagHooks ) );
wfRunHooks( 'InternalParseBeforeLinks', array( &$this, &$text, &$this->mStripState ) );
@@ -885,6 +942,7 @@ class Parser
$text = preg_replace( '/(^|\n)-----*/', '\\1<hr />', $text );
$text = $this->doDoubleUnderscore( $text );
+
$text = $this->doHeadings( $text );
if( $this->mOptions->getUseDynamicDates() ) {
$df = DateFormatter::getInstance();
@@ -899,7 +957,7 @@ class Parser
$text = str_replace($this->mUniqPrefix.'NOPARSE', '', $text);
$text = $this->doMagicLinks( $text );
- $text = $this->formatHeadings( $text, $isMain );
+ $text = $this->formatHeadings( $text, $origText, $isMain );
wfProfileOut( __METHOD__ );
return $text;
@@ -908,7 +966,7 @@ class Parser
/**
* Replace special strings like "ISBN xxx" and "RFC xxx" with
* magic external links.
- *
+ *
* DML
* @private
*/
@@ -918,7 +976,7 @@ class Parser
$urlChar = self::EXT_LINK_URL_CLASS;
$text = preg_replace_callback(
'!(?: # Start cases
- (<a.*?</a>) | # m[1]: Skip link text
+ (<a.*?</a>) | # m[1]: Skip link text
(<.*?>) | # m[2]: Skip stuff inside HTML elements' . "
(\\b(?:$prots)$urlChar+) | # m[3]: Free external links" . '
(?:RFC|PMID)\s+([0-9]+) | # m[4]: RFC or PMID, capture number
@@ -944,13 +1002,16 @@ class Parser
return $this->makeFreeExternalLink( $m[0] );
} elseif ( isset( $m[4] ) && $m[4] !== '' ) {
# RFC or PMID
+ $CssClass = '';
if ( substr( $m[0], 0, 3 ) === 'RFC' ) {
$keyword = 'RFC';
$urlmsg = 'rfcurl';
+ $CssClass = 'mw-magiclink-rfc';
$id = $m[4];
} elseif ( substr( $m[0], 0, 4 ) === 'PMID' ) {
$keyword = 'PMID';
$urlmsg = 'pubmedurl';
+ $CssClass = 'mw-magiclink-pmid';
$id = $m[4];
} else {
throw new MWException( __METHOD__.': unrecognised match type "' .
@@ -958,7 +1019,7 @@ class Parser
}
$url = wfMsg( $urlmsg, $id);
$sk = $this->mOptions->getSkin();
- $la = $sk->getExternalLinkAttributes( $url, $keyword.$id );
+ $la = $sk->getExternalLinkAttributes( "external $CssClass" );
return "<a href=\"{$url}\"{$la}>{$keyword} {$id}</a>";
} elseif ( isset( $m[5] ) && $m[5] !== '' ) {
# ISBN
@@ -971,7 +1032,7 @@ class Parser
$titleObj = SpecialPage::getTitleFor( 'Booksources', $num );
return'<a href="' .
$titleObj->escapeLocalUrl() .
- "\" class=\"internal\">ISBN $isbn</a>";
+ "\" class=\"internal mw-magiclink-isbn\">ISBN $isbn</a>";
} else {
return $m[0];
}
@@ -1017,7 +1078,7 @@ class Parser
$text = $this->maybeMakeExternalImage( $url );
if ( $text === false ) {
# Not an image, make a link
- $text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
+ $text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
$this->getExternalLinkAttribs( $url ) );
# Register it in the output object...
# Replace unnecessary URL escape codes with their equivalent characters
@@ -1457,7 +1518,7 @@ class Parser
wfProfileIn( __METHOD__.'-setup' );
static $tc = FALSE, $e1, $e1_img;
# the % is needed to support urlencoded titles as well
- if ( !$tc ) {
+ if ( !$tc ) {
$tc = Title::legalChars() . '#%';
# Match a link having the form [[namespace:link|alternate]]trail
$e1 = "/^([{$tc}]+)(?:\\|(.+?))?]](.*)\$/sD";
@@ -1581,29 +1642,29 @@ class Parser
# Don't allow internal links to pages containing
# PROTO: where PROTO is a valid URL protocol; these
# should be external links.
- if (preg_match('/^\b(?:' . wfUrlProtocols() . ')/', $m[1])) {
+ if ( preg_match( '/^\b(?:' . wfUrlProtocols() . ')/', $m[1] ) ) {
$s .= $prefix . '[[' . $line ;
wfProfileOut( __METHOD__."-misc" );
continue;
}
# Make subpage if necessary
- if( $useSubpages ) {
+ if ( $useSubpages ) {
$link = $this->maybeDoSubpageLink( $m[1], $text );
} else {
$link = $m[1];
}
- $noforce = (substr($m[1], 0, 1) !== ':');
+ $noforce = (substr( $m[1], 0, 1 ) !== ':');
if (!$noforce) {
# Strip off leading ':'
- $link = substr($link, 1);
+ $link = substr( $link, 1 );
}
wfProfileOut( __METHOD__."-misc" );
wfProfileIn( __METHOD__."-title" );
- $nt = Title::newFromText( $this->mStripState->unstripNoWiki($link) );
- if( $nt === NULL ) {
+ $nt = Title::newFromText( $this->mStripState->unstripNoWiki( $link ) );
+ if ( $nt === null ) {
$s .= $prefix . '[[' . $line;
wfProfileOut( __METHOD__."-title" );
continue;
@@ -1613,9 +1674,9 @@ class Parser
$iw = $nt->getInterWiki();
wfProfileOut( __METHOD__."-title" );
- if ($might_be_img) { # if this is actually an invalid link
+ if ( $might_be_img ) { # if this is actually an invalid link
wfProfileIn( __METHOD__."-might_be_img" );
- if ($ns == NS_FILE && $noforce) { #but might be an image
+ if ( $ns == NS_FILE && $noforce ) { #but might be an image
$found = false;
while ( true ) {
#look at the next 'line' to see if we can close it there
@@ -1658,15 +1719,15 @@ class Parser
wfProfileOut( __METHOD__."-might_be_img" );
}
- $wasblank = ( '' == $text );
- if( $wasblank ) $text = $link;
+ $wasblank = ( $text == '' );
+ if ( $wasblank ) $text = $link;
# Link not escaped by : , create the various objects
- if( $noforce ) {
+ if ( $noforce ) {
# Interwikis
wfProfileIn( __METHOD__."-interwiki" );
- if( $iw && $this->mOptions->getInterwikiMagic() && $nottalk && $wgContLang->getLanguageName( $iw ) ) {
+ if ( $iw && $this->mOptions->getInterwikiMagic() && $nottalk && $wgContLang->getLanguageName( $iw ) ) {
$this->mOutput->addLanguageLink( $nt->getFullText() );
$s = rtrim($s . $prefix);
$s .= trim($trail, "\n") == '' ? '': $prefix . $trail;
@@ -1678,14 +1739,23 @@ class Parser
if ( $ns == NS_FILE ) {
wfProfileIn( __METHOD__."-image" );
if ( !wfIsBadImage( $nt->getDBkey(), $this->mTitle ) ) {
- # recursively parse links inside the image caption
- # actually, this will parse them in any other parameters, too,
- # but it might be hard to fix that, and it doesn't matter ATM
- $text = $this->replaceExternalLinks($text);
- $holders->merge( $this->replaceInternalLinks2( $text ) );
-
+ if ( $wasblank ) {
+ # if no parameters were passed, $text
+ # becomes something like "File:Foo.png",
+ # which we don't want to pass on to the
+ # image generator
+ $text = '';
+ } else {
+ # recursively parse links inside the image caption
+ # actually, this will parse them in any other parameters, too,
+ # but it might be hard to fix that, and it doesn't matter ATM
+ $text = $this->replaceExternalLinks($text);
+ $holders->merge( $this->replaceInternalLinks2( $text ) );
+ }
# cloak any absolute URLs inside the image markup, so replaceExternalLinks() won't touch them
$s .= $prefix . $this->armorLinks( $this->makeImage( $nt, $text, $holders ) ) . $trail;
+ } else {
+ $s .= $prefix . $trail;
}
$this->mOutput->addImage( $nt->getDBkey() );
wfProfileOut( __METHOD__."-image" );
@@ -1793,6 +1863,7 @@ class Parser
function makeKnownLinkHolder( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
list( $inside, $trail ) = Linker::splitTrail( $trail );
$sk = $this->mOptions->getSkin();
+ // FIXME: use link() instead of deprecated makeKnownLinkObj()
$link = $sk->makeKnownLinkObj( $nt, $text, $query, $inside, $prefix );
return $this->armorLinks( $link ) . $trail;
}
@@ -1829,75 +1900,7 @@ class Parser
* @private
*/
function maybeDoSubpageLink($target, &$text) {
- # Valid link forms:
- # Foobar -- normal
- # :Foobar -- override special treatment of prefix (images, language links)
- # /Foobar -- convert to CurrentPage/Foobar
- # /Foobar/ -- convert to CurrentPage/Foobar, strip the initial / from text
- # ../ -- convert to CurrentPage, from CurrentPage/CurrentSubPage
- # ../Foobar -- convert to CurrentPage/Foobar, from CurrentPage/CurrentSubPage
-
- wfProfileIn( __METHOD__ );
- $ret = $target; # default return value is no change
-
- # Some namespaces don't allow subpages,
- # so only perform processing if subpages are allowed
- if( $this->areSubpagesAllowed() ) {
- $hash = strpos( $target, '#' );
- if( $hash !== false ) {
- $suffix = substr( $target, $hash );
- $target = substr( $target, 0, $hash );
- } else {
- $suffix = '';
- }
- # bug 7425
- $target = trim( $target );
- # Look at the first character
- if( $target != '' && $target{0} === '/' ) {
- # / at end means we don't want the slash to be shown
- $m = array();
- $trailingSlashes = preg_match_all( '%(/+)$%', $target, $m );
- if( $trailingSlashes ) {
- $noslash = $target = substr( $target, 1, -strlen($m[0][0]) );
- } else {
- $noslash = substr( $target, 1 );
- }
-
- $ret = $this->mTitle->getPrefixedText(). '/' . trim($noslash) . $suffix;
- if( '' === $text ) {
- $text = $target . $suffix;
- } # this might be changed for ugliness reasons
- } else {
- # check for .. subpage backlinks
- $dotdotcount = 0;
- $nodotdot = $target;
- while( strncmp( $nodotdot, "../", 3 ) == 0 ) {
- ++$dotdotcount;
- $nodotdot = substr( $nodotdot, 3 );
- }
- if($dotdotcount > 0) {
- $exploded = explode( '/', $this->mTitle->GetPrefixedText() );
- if( count( $exploded ) > $dotdotcount ) { # not allowed to go below top level page
- $ret = implode( '/', array_slice( $exploded, 0, -$dotdotcount ) );
- # / at the end means don't show full path
- if( substr( $nodotdot, -1, 1 ) === '/' ) {
- $nodotdot = substr( $nodotdot, 0, -1 );
- if( '' === $text ) {
- $text = $nodotdot . $suffix;
- }
- }
- $nodotdot = trim( $nodotdot );
- if( $nodotdot != '' ) {
- $ret .= '/' . $nodotdot;
- }
- $ret .= $suffix;
- }
- }
- }
- }
-
- wfProfileOut( __METHOD__ );
- return $ret;
+ return Linker::normalizeSubpageLink( $this->mTitle, $target, $text );
}
/**#@+
@@ -1906,7 +1909,7 @@ class Parser
*/
/* private */ function closeParagraph() {
$result = '';
- if ( '' != $this->mLastSection ) {
+ if ( $this->mLastSection != '' ) {
$result = '</' . $this->mLastSection . ">\n";
}
$this->mInPre = false;
@@ -1933,9 +1936,9 @@ class Parser
$result = $this->closeParagraph();
if ( '*' === $char ) { $result .= '<ul><li>'; }
- else if ( '#' === $char ) { $result .= '<ol><li>'; }
- else if ( ':' === $char ) { $result .= '<dl><dd>'; }
- else if ( ';' === $char ) {
+ elseif ( '#' === $char ) { $result .= '<ol><li>'; }
+ elseif ( ':' === $char ) { $result .= '<dl><dd>'; }
+ elseif ( ';' === $char ) {
$result .= '<dl><dt>';
$this->mDTopen = true;
}
@@ -1946,7 +1949,7 @@ class Parser
/* private */ function nextItem( $char ) {
if ( '*' === $char || '#' === $char ) { return '</li><li>'; }
- else if ( ':' === $char || ';' === $char ) {
+ elseif ( ':' === $char || ';' === $char ) {
$close = '</dd>';
if ( $this->mDTopen ) { $close = '</dt>'; }
if ( ';' === $char ) {
@@ -1962,8 +1965,8 @@ class Parser
/* private */ function closeList( $char ) {
if ( '*' === $char ) { $text = '</li></ul>'; }
- else if ( '#' === $char ) { $text = '</li></ol>'; }
- else if ( ':' === $char ) {
+ elseif ( '#' === $char ) { $text = '</li></ol>'; }
+ elseif ( ':' === $char ) {
if ( $this->mDTopen ) {
$this->mDTopen = false;
$text = '</dt></dl>';
@@ -1979,6 +1982,7 @@ class Parser
/**
* Make lists from lines starting with ':', '*', '#', etc. (DBL)
*
+ * @param $linestart bool whether or not this is at the start of a line.
* @private
* @return string the lists rendered as HTML
*/
@@ -2003,16 +2007,24 @@ class Parser
$linestart = true;
continue;
}
+ // * = ul
+ // # = ol
+ // ; = dt
+ // : = dd
$lastPrefixLength = strlen( $lastPrefix );
$preCloseMatch = preg_match('/<\\/pre/i', $oLine );
$preOpenMatch = preg_match('/<pre/i', $oLine );
+ // If not in a <pre> element, scan for and figure out what prefixes are there.
if ( !$this->mInPre ) {
# Multiple prefixes may abut each other for nested lists.
$prefixLength = strspn( $oLine, '*#:;' );
$prefix = substr( $oLine, 0, $prefixLength );
# eh?
+ // ; and : are both from definition-lists, so they're equivalent
+ // for the purposes of determining whether or not we need to open/close
+ // elements.
$prefix2 = str_replace( ';', ':', $prefix );
$t = substr( $oLine, $prefixLength );
$this->mInPre = (bool)$preOpenMatch;
@@ -2041,17 +2053,24 @@ class Parser
}
}
} elseif( $prefixLength || $lastPrefixLength ) {
+ // We need to open or close prefixes, or both.
+
# Either open or close a level...
$commonPrefixLength = $this->getCommon( $prefix, $lastPrefix );
$paragraphStack = false;
+ // Close all the prefixes which aren't shared.
while( $commonPrefixLength < $lastPrefixLength ) {
$output .= $this->closeList( $lastPrefix[$lastPrefixLength-1] );
--$lastPrefixLength;
}
+
+ // Continue the current prefix if appropriate.
if ( $prefixLength <= $commonPrefixLength && $commonPrefixLength > 0 ) {
$output .= $this->nextItem( $prefix[$commonPrefixLength-1] );
}
+
+ // Open prefixes where appropriate.
while ( $prefixLength > $commonPrefixLength ) {
$char = substr( $prefix, $commonPrefixLength, 1 );
$output .= $this->openList( $char );
@@ -2067,6 +2086,8 @@ class Parser
}
$lastPrefix = $prefix2;
}
+
+ // If we have no prefixes, go to paragraph mode.
if( 0 == $prefixLength ) {
wfProfileIn( __METHOD__."-paragraph" );
# No prefix (not in list)--go to paragraph mode
@@ -2098,7 +2119,7 @@ class Parser
$t = substr( $t, 1 );
} else {
// paragraph
- if ( '' == trim($t) ) {
+ if ( trim($t) == '' ) {
if ( $paragraphStack ) {
$output .= $paragraphStack.'<br />';
$paragraphStack = false;
@@ -2138,7 +2159,7 @@ class Parser
$output .= $this->closeList( $prefix2[$prefixLength-1] );
--$prefixLength;
}
- if ( '' != $this->mLastSection ) {
+ if ( $this->mLastSection != '' ) {
$output .= '</' . $this->mLastSection . '>';
$this->mLastSection = '';
}
@@ -2315,8 +2336,9 @@ class Parser
*
* @private
*/
- function getVariableValue( $index ) {
- global $wgContLang, $wgSitename, $wgServer, $wgServerName, $wgScriptPath;
+ function getVariableValue( $index, $frame=false ) {
+ global $wgContLang, $wgSitename, $wgServer, $wgServerName;
+ global $wgScriptPath, $wgStylePath;
/**
* Some of these require message or data lookups and can be
@@ -2334,13 +2356,13 @@ class Parser
# Use the time zone
global $wgLocaltimezone;
if ( isset( $wgLocaltimezone ) ) {
- $oldtz = getenv( 'TZ' );
- putenv( 'TZ='.$wgLocaltimezone );
+ $oldtz = date_default_timezone_get();
+ date_default_timezone_set( $wgLocaltimezone );
}
- wfSuppressWarnings(); // E_STRICT system time bitching
$localTimestamp = date( 'YmdHis', $ts );
$localMonth = date( 'm', $ts );
+ $localMonth1 = date( 'n', $ts );
$localMonthName = date( 'n', $ts );
$localDay = date( 'j', $ts );
$localDay2 = date( 'd', $ts );
@@ -2349,175 +2371,240 @@ class Parser
$localYear = date( 'Y', $ts );
$localHour = date( 'H', $ts );
if ( isset( $wgLocaltimezone ) ) {
- putenv( 'TZ='.$oldtz );
+ date_default_timezone_set( $oldtz );
}
- wfRestoreWarnings();
switch ( $index ) {
case 'currentmonth':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'm', $ts ) );
+ $value = $wgContLang->formatNum( gmdate( 'm', $ts ) );
+ break;
+ case 'currentmonth1':
+ $value = $wgContLang->formatNum( gmdate( 'n', $ts ) );
+ break;
case 'currentmonthname':
- return $this->mVarCache[$index] = $wgContLang->getMonthName( gmdate( 'n', $ts ) );
+ $value = $wgContLang->getMonthName( gmdate( 'n', $ts ) );
+ break;
case 'currentmonthnamegen':
- return $this->mVarCache[$index] = $wgContLang->getMonthNameGen( gmdate( 'n', $ts ) );
+ $value = $wgContLang->getMonthNameGen( gmdate( 'n', $ts ) );
+ break;
case 'currentmonthabbrev':
- return $this->mVarCache[$index] = $wgContLang->getMonthAbbreviation( gmdate( 'n', $ts ) );
+ $value = $wgContLang->getMonthAbbreviation( gmdate( 'n', $ts ) );
+ break;
case 'currentday':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'j', $ts ) );
+ $value = $wgContLang->formatNum( gmdate( 'j', $ts ) );
+ break;
case 'currentday2':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'd', $ts ) );
+ $value = $wgContLang->formatNum( gmdate( 'd', $ts ) );
+ break;
case 'localmonth':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localMonth );
+ $value = $wgContLang->formatNum( $localMonth );
+ break;
+ case 'localmonth1':
+ $value = $wgContLang->formatNum( $localMonth1 );
+ break;
case 'localmonthname':
- return $this->mVarCache[$index] = $wgContLang->getMonthName( $localMonthName );
+ $value = $wgContLang->getMonthName( $localMonthName );
+ break;
case 'localmonthnamegen':
- return $this->mVarCache[$index] = $wgContLang->getMonthNameGen( $localMonthName );
+ $value = $wgContLang->getMonthNameGen( $localMonthName );
+ break;
case 'localmonthabbrev':
- return $this->mVarCache[$index] = $wgContLang->getMonthAbbreviation( $localMonthName );
+ $value = $wgContLang->getMonthAbbreviation( $localMonthName );
+ break;
case 'localday':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localDay );
+ $value = $wgContLang->formatNum( $localDay );
+ break;
case 'localday2':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localDay2 );
+ $value = $wgContLang->formatNum( $localDay2 );
+ break;
case 'pagename':
- return wfEscapeWikiText( $this->mTitle->getText() );
+ $value = wfEscapeWikiText( $this->mTitle->getText() );
+ break;
case 'pagenamee':
- return $this->mTitle->getPartialURL();
+ $value = $this->mTitle->getPartialURL();
+ break;
case 'fullpagename':
- return wfEscapeWikiText( $this->mTitle->getPrefixedText() );
+ $value = wfEscapeWikiText( $this->mTitle->getPrefixedText() );
+ break;
case 'fullpagenamee':
- return $this->mTitle->getPrefixedURL();
+ $value = $this->mTitle->getPrefixedURL();
+ break;
case 'subpagename':
- return wfEscapeWikiText( $this->mTitle->getSubpageText() );
+ $value = wfEscapeWikiText( $this->mTitle->getSubpageText() );
+ break;
case 'subpagenamee':
- return $this->mTitle->getSubpageUrlForm();
+ $value = $this->mTitle->getSubpageUrlForm();
+ break;
case 'basepagename':
- return wfEscapeWikiText( $this->mTitle->getBaseText() );
+ $value = wfEscapeWikiText( $this->mTitle->getBaseText() );
+ break;
case 'basepagenamee':
- return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) );
+ $value = wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) );
+ break;
case 'talkpagename':
if( $this->mTitle->canTalk() ) {
$talkPage = $this->mTitle->getTalkPage();
- return wfEscapeWikiText( $talkPage->getPrefixedText() );
+ $value = wfEscapeWikiText( $talkPage->getPrefixedText() );
} else {
- return '';
+ $value = '';
}
+ break;
case 'talkpagenamee':
if( $this->mTitle->canTalk() ) {
$talkPage = $this->mTitle->getTalkPage();
- return $talkPage->getPrefixedUrl();
+ $value = $talkPage->getPrefixedUrl();
} else {
- return '';
+ $value = '';
}
+ break;
case 'subjectpagename':
$subjPage = $this->mTitle->getSubjectPage();
- return wfEscapeWikiText( $subjPage->getPrefixedText() );
+ $value = wfEscapeWikiText( $subjPage->getPrefixedText() );
+ break;
case 'subjectpagenamee':
$subjPage = $this->mTitle->getSubjectPage();
- return $subjPage->getPrefixedUrl();
+ $value = $subjPage->getPrefixedUrl();
+ break;
case 'revisionid':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n" );
- return $this->mRevisionId;
+ $value = $this->mRevisionId;
+ break;
case 'revisionday':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n" );
- return intval( substr( $this->getRevisionTimestamp(), 6, 2 ) );
+ $value = intval( substr( $this->getRevisionTimestamp(), 6, 2 ) );
+ break;
case 'revisionday2':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n" );
- return substr( $this->getRevisionTimestamp(), 6, 2 );
+ $value = substr( $this->getRevisionTimestamp(), 6, 2 );
+ break;
case 'revisionmonth':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n" );
- return intval( substr( $this->getRevisionTimestamp(), 4, 2 ) );
+ $value = intval( substr( $this->getRevisionTimestamp(), 4, 2 ) );
+ break;
case 'revisionyear':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n" );
- return substr( $this->getRevisionTimestamp(), 0, 4 );
+ $value = substr( $this->getRevisionTimestamp(), 0, 4 );
+ break;
case 'revisiontimestamp':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n" );
- return $this->getRevisionTimestamp();
+ $value = $this->getRevisionTimestamp();
+ break;
case 'revisionuser':
// Let the edit saving system know we should parse the page
// *after* a revision ID has been assigned. This is for null edits.
$this->mOutput->setFlag( 'vary-revision' );
wfDebug( __METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n" );
- return $this->getRevisionUser();
+ $value = $this->getRevisionUser();
+ break;
case 'namespace':
- return str_replace('_',' ',$wgContLang->getNsText( $this->mTitle->getNamespace() ) );
+ $value = str_replace('_',' ',$wgContLang->getNsText( $this->mTitle->getNamespace() ) );
+ break;
case 'namespacee':
- return wfUrlencode( $wgContLang->getNsText( $this->mTitle->getNamespace() ) );
+ $value = wfUrlencode( $wgContLang->getNsText( $this->mTitle->getNamespace() ) );
+ break;
case 'talkspace':
- return $this->mTitle->canTalk() ? str_replace('_',' ',$this->mTitle->getTalkNsText()) : '';
+ $value = $this->mTitle->canTalk() ? str_replace('_',' ',$this->mTitle->getTalkNsText()) : '';
+ break;
case 'talkspacee':
- return $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
+ $value = $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
+ break;
case 'subjectspace':
- return $this->mTitle->getSubjectNsText();
+ $value = $this->mTitle->getSubjectNsText();
+ break;
case 'subjectspacee':
- return( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
+ $value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
+ break;
case 'currentdayname':
- return $this->mVarCache[$index] = $wgContLang->getWeekdayName( gmdate( 'w', $ts ) + 1 );
+ $value = $wgContLang->getWeekdayName( gmdate( 'w', $ts ) + 1 );
+ break;
case 'currentyear':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'Y', $ts ), true );
+ $value = $wgContLang->formatNum( gmdate( 'Y', $ts ), true );
+ break;
case 'currenttime':
- return $this->mVarCache[$index] = $wgContLang->time( wfTimestamp( TS_MW, $ts ), false, false );
+ $value = $wgContLang->time( wfTimestamp( TS_MW, $ts ), false, false );
+ break;
case 'currenthour':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'H', $ts ), true );
+ $value = $wgContLang->formatNum( gmdate( 'H', $ts ), true );
+ break;
case 'currentweek':
// @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
// int to remove the padding
- return $this->mVarCache[$index] = $wgContLang->formatNum( (int)gmdate( 'W', $ts ) );
+ $value = $wgContLang->formatNum( (int)gmdate( 'W', $ts ) );
+ break;
case 'currentdow':
- return $this->mVarCache[$index] = $wgContLang->formatNum( gmdate( 'w', $ts ) );
+ $value = $wgContLang->formatNum( gmdate( 'w', $ts ) );
+ break;
case 'localdayname':
- return $this->mVarCache[$index] = $wgContLang->getWeekdayName( $localDayOfWeek + 1 );
+ $value = $wgContLang->getWeekdayName( $localDayOfWeek + 1 );
+ break;
case 'localyear':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localYear, true );
+ $value = $wgContLang->formatNum( $localYear, true );
+ break;
case 'localtime':
- return $this->mVarCache[$index] = $wgContLang->time( $localTimestamp, false, false );
+ $value = $wgContLang->time( $localTimestamp, false, false );
+ break;
case 'localhour':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localHour, true );
+ $value = $wgContLang->formatNum( $localHour, true );
+ break;
case 'localweek':
// @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
// int to remove the padding
- return $this->mVarCache[$index] = $wgContLang->formatNum( (int)$localWeek );
+ $value = $wgContLang->formatNum( (int)$localWeek );
+ break;
case 'localdow':
- return $this->mVarCache[$index] = $wgContLang->formatNum( $localDayOfWeek );
+ $value = $wgContLang->formatNum( $localDayOfWeek );
+ break;
case 'numberofarticles':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::articles() );
+ $value = $wgContLang->formatNum( SiteStats::articles() );
+ break;
case 'numberoffiles':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::images() );
+ $value = $wgContLang->formatNum( SiteStats::images() );
+ break;
case 'numberofusers':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::users() );
+ $value = $wgContLang->formatNum( SiteStats::users() );
+ break;
case 'numberofactiveusers':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::activeUsers() );
+ $value = $wgContLang->formatNum( SiteStats::activeUsers() );
+ break;
case 'numberofpages':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::pages() );
+ $value = $wgContLang->formatNum( SiteStats::pages() );
+ break;
case 'numberofadmins':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::numberingroup('sysop') );
+ $value = $wgContLang->formatNum( SiteStats::numberingroup('sysop') );
+ break;
case 'numberofedits':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::edits() );
+ $value = $wgContLang->formatNum( SiteStats::edits() );
+ break;
case 'numberofviews':
- return $this->mVarCache[$index] = $wgContLang->formatNum( SiteStats::views() );
+ $value = $wgContLang->formatNum( SiteStats::views() );
+ break;
case 'currenttimestamp':
- return $this->mVarCache[$index] = wfTimestamp( TS_MW, $ts );
+ $value = wfTimestamp( TS_MW, $ts );
+ break;
case 'localtimestamp':
- return $this->mVarCache[$index] = $localTimestamp;
+ $value = $localTimestamp;
+ break;
case 'currentversion':
- return $this->mVarCache[$index] = SpecialVersion::getVersion();
+ $value = SpecialVersion::getVersion();
+ break;
case 'sitename':
return $wgSitename;
case 'server':
@@ -2526,6 +2613,8 @@ class Parser
return $wgServerName;
case 'scriptpath':
return $wgScriptPath;
+ case 'stylepath':
+ return $wgStylePath;
case 'directionmark':
return $wgContLang->getDirMark();
case 'contentlanguage':
@@ -2533,23 +2622,30 @@ class Parser
return $wgContLanguageCode;
default:
$ret = null;
- if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret ) ) )
+ if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) )
return $ret;
else
return null;
}
+
+ if ( $index )
+ $this->mVarCache[$index] = $value;
+
+ return $value;
}
/**
- * initialise the magic variables (like CURRENTMONTHNAME)
+ * initialise the magic variables (like CURRENTMONTHNAME) and substitution modifiers
*
* @private
*/
function initialiseVariables() {
wfProfileIn( __METHOD__ );
$variableIDs = MagicWord::getVariableIDs();
+ $substIDs = MagicWord::getSubstIDs();
$this->mVariables = new MagicWordArray( $variableIDs );
+ $this->mSubstWords = new MagicWordArray( $substIDs );
wfProfileOut( __METHOD__ );
}
@@ -2607,7 +2703,7 @@ class Parser
* self::OT_HTML: all templates and extension tags
*
* @param string $tex The text to transform
- * @param PPFrame $frame Object describing the arguments passed to the template.
+ * @param PPFrame $frame Object describing the arguments passed to the template.
* Arguments may also be provided as an associative array, as was the usual case before MW1.12.
* Providing arguments this way may be useful for extensions wishing to perform variable replacement explicitly.
* @param bool $argsOnly Only do argument (triple-brace) expansion, not double-brace expansion
@@ -2670,14 +2766,10 @@ class Parser
* exceeded, provide the values (optional)
*/
function limitationWarn( $limitationType, $current=null, $max=null) {
- $msgName = $limitationType . '-warning';
//does no harm if $current and $max are present but are unnecessary for the message
- $warning = wfMsgExt( $msgName, array( 'parsemag', 'escape' ), $current, $max );
+ $warning = wfMsgExt( "$limitationType-warning", array( 'parsemag', 'escape' ), $current, $max );
$this->mOutput->addWarning( $warning );
- $cat = Title::makeTitleSafe( NS_CATEGORY, wfMsgForContent( $limitationType . '-category' ) );
- if ( $cat ) {
- $this->mOutput->addCategory( $cat->getDBkey(), $this->getDefaultSort() );
- }
+ $this->addTrackingCategory( "$limitationType-category" );
}
/**
@@ -2706,7 +2798,7 @@ class Parser
$isLocalObj = false; # $text is a DOM node needing expansion in the current frame
# Title object, where $text came from
- $title = NULL;
+ $title = null;
# $part1 is the bit before the first |, and must contain only title characters.
# Various prefixes will be stripped from it later.
@@ -2724,12 +2816,25 @@ class Parser
# SUBST
wfProfileIn( __METHOD__.'-modifiers' );
if ( !$found ) {
- $mwSubst = MagicWord::get( 'subst' );
- if ( $mwSubst->matchStartAndRemove( $part1 ) xor $this->ot['wiki'] ) {
- # One of two possibilities is true:
- # 1) Found SUBST but not in the PST phase
- # 2) Didn't find SUBST and in the PST phase
- # In either case, return without further processing
+
+ $substMatch = $this->mSubstWords->matchStartAndRemove( $part1 );
+
+ # Possibilities for substMatch: "subst", "safesubst" or FALSE
+ # Decide whether to expand template or keep wikitext as-is.
+ if ( $this->ot['wiki'] ) {
+ if ( $substMatch === false ) {
+ $literal = true; # literal when in PST with no prefix
+ } else {
+ $literal = false; # expand when in PST with subst: or safesubst:
+ }
+ } else {
+ if ( $substMatch == 'subst' ) {
+ $literal = true; # literal when not in PST with plain subst:
+ } else {
+ $literal = false; # expand when not in PST with safesubst: or no prefix
+ }
+ }
+ if ( $literal ) {
$text = $frame->virtualBracketedImplode( '{{', '|', '}}', $titleWithSpaces, $args );
$isLocalObj = true;
$found = true;
@@ -2740,7 +2845,7 @@ class Parser
if ( !$found && $args->getLength() == 0 ) {
$id = $this->mVariables->matchStartToEnd( $part1 );
if ( $id !== false ) {
- $text = $this->getVariableValue( $id );
+ $text = $this->getVariableValue( $id, $frame );
if (MagicWord::getCacheTTL($id)>-1)
$this->mOutput->mContainsOldMagic = true;
$found = true;
@@ -2779,7 +2884,7 @@ class Parser
$function = $this->mFunctionSynonyms[1][$function];
} else {
# Case insensitive functions
- $function = strtolower( $function );
+ $function = $wgContLang->lc( $function );
if ( isset( $this->mFunctionSynonyms[0][$function] ) ) {
$function = $this->mFunctionSynonyms[0][$function];
} else {
@@ -2808,13 +2913,15 @@ class Parser
# Workaround for PHP bug 35229 and similar
if ( !is_callable( $callback ) ) {
+ wfProfileOut( __METHOD__ . '-pfunc' );
+ wfProfileOut( __METHOD__ );
throw new MWException( "Tag hook for $function is not callable\n" );
}
$result = call_user_func_array( $callback, $allArgs );
$found = true;
$noparse = true;
$preprocessFlags = 0;
-
+
if ( is_array( $result ) ) {
if ( isset( $result[0] ) ) {
$text = $result[0];
@@ -3118,14 +3225,11 @@ class Parser
function fetchScaryTemplateMaybeFromCache($url) {
global $wgTranscludeCacheExpiry;
$dbr = wfGetDB(DB_SLAVE);
+ $tsCond = $dbr->timestamp( time() - $wgTranscludeCacheExpiry );
$obj = $dbr->selectRow('transcache', array('tc_time', 'tc_contents'),
- array('tc_url' => $url));
+ array('tc_url' => $url, "tc_time >= " . $dbr->addQuotes( $tsCond ) ) );
if ($obj) {
- $time = $obj->tc_time;
- $text = $obj->tc_contents;
- if ($time && time() < $time + $wgTranscludeCacheExpiry ) {
- return $text;
- }
+ return $obj->tc_contents;
}
$text = Http::get($url);
@@ -3135,7 +3239,7 @@ class Parser
$dbw = wfGetDB(DB_MASTER);
$dbw->replace('transcache', array('tc_url'), array(
'tc_url' => $url,
- 'tc_time' => time(),
+ 'tc_time' => $dbw->timestamp( time() ),
'tc_contents' => $text));
return $text;
}
@@ -3204,47 +3308,47 @@ class Parser
$name = $frame->expand( $params['name'] );
$attrText = !isset( $params['attr'] ) ? null : $frame->expand( $params['attr'] );
$content = !isset( $params['inner'] ) ? null : $frame->expand( $params['inner'] );
-
$marker = "{$this->mUniqPrefix}-$name-" . sprintf('%08X', $this->mMarkerIndex++) . self::MARKER_SUFFIX;
- if ( $this->ot['html'] ) {
+ $isFunctionTag = isset( $this->mFunctionTagHooks[strtolower($name)] ) &&
+ ( $this->ot['html'] || $this->ot['pre'] );
+ if ( $isFunctionTag ) {
+ $markerType = 'none';
+ } else {
+ $markerType = 'general';
+ }
+ if ( $this->ot['html'] || $isFunctionTag ) {
$name = strtolower( $name );
-
$attributes = Sanitizer::decodeTagAttributes( $attrText );
if ( isset( $params['attributes'] ) ) {
$attributes = $attributes + $params['attributes'];
}
- switch ( $name ) {
- case 'html':
- if( $wgRawHtml ) {
- $output = $content;
- break;
- } else {
- throw new MWException( '<html> extension tag encountered unexpectedly' );
- }
- case 'nowiki':
- $content = strtr($content, array('-{' => '-&#123;', '}-' => '&#125;-'));
- $output = Xml::escapeTagsOnly( $content );
- break;
- case 'math':
- $output = $wgContLang->armourMath(
- MathRenderer::renderMath( $content, $attributes ) );
- break;
- case 'gallery':
- $output = $this->renderImageGallery( $content, $attributes );
- break;
- default:
- if( isset( $this->mTagHooks[$name] ) ) {
- # Workaround for PHP bug 35229 and similar
- if ( !is_callable( $this->mTagHooks[$name] ) ) {
- throw new MWException( "Tag hook for $name is not callable\n" );
- }
- $output = call_user_func_array( $this->mTagHooks[$name],
- array( $content, $attributes, $this ) );
- } else {
- $output = '<span class="error">Invalid tag extension name: ' .
- htmlspecialchars( $name ) . '</span>';
- }
+
+ if( isset( $this->mTagHooks[$name] ) ) {
+ # Workaround for PHP bug 35229 and similar
+ if ( !is_callable( $this->mTagHooks[$name] ) ) {
+ throw new MWException( "Tag hook for $name is not callable\n" );
+ }
+ $output = call_user_func_array( $this->mTagHooks[$name],
+ array( $content, $attributes, $this, $frame ) );
+ } elseif( isset( $this->mFunctionTagHooks[$name] ) ) {
+ list( $callback, $flags ) = $this->mFunctionTagHooks[$name];
+ if( !is_callable( $callback ) )
+ throw new MWException( "Tag hook for $name is not callable\n" );
+
+ $output = call_user_func_array( $callback,
+ array( &$this, $frame, $content, $attributes ) );
+ } else {
+ $output = '<span class="error">Invalid tag extension name: ' .
+ htmlspecialchars( $name ) . '</span>';
+ }
+
+ if ( is_array( $output ) ) {
+ // Extract flags to local scope (to override $markerType)
+ $flags = $output;
+ $output = $flags[0];
+ unset( $flags[0] );
+ extract( $flags );
}
} else {
if ( is_null( $attrText ) ) {
@@ -3264,10 +3368,14 @@ class Parser
}
}
- if ( $name === 'html' || $name === 'nowiki' ) {
+ if( $markerType === 'none' ) {
+ return $output;
+ } elseif ( $markerType === 'nowiki' ) {
$this->mStripState->nowiki->setPair( $marker, $output );
- } else {
+ } elseif ( $markerType === 'general' ) {
$this->mStripState->general->setPair( $marker, $output );
+ } else {
+ throw new MWException( __METHOD__.': invalid marker type' );
}
return $marker;
}
@@ -3308,6 +3416,7 @@ class Parser
*/
function doDoubleUnderscore( $text ) {
wfProfileIn( __METHOD__ );
+
// The position of __TOC__ needs to be recorded
$mw = MagicWord::get( 'toc' );
if( $mw->match( $text ) ) {
@@ -3333,28 +3442,48 @@ class Parser
}
if ( isset( $this->mDoubleUnderscores['hiddencat'] ) && $this->mTitle->getNamespace() == NS_CATEGORY ) {
$this->mOutput->setProperty( 'hiddencat', 'y' );
-
- $containerCategory = Title::makeTitleSafe( NS_CATEGORY, wfMsgForContent( 'hidden-category-category' ) );
- if ( $containerCategory ) {
- $this->mOutput->addCategory( $containerCategory->getDBkey(), $this->getDefaultSort() );
- } else {
- wfDebug( __METHOD__.": [[MediaWiki:hidden-category-category]] is not a valid title!\n" );
- }
+ $this->addTrackingCategory( 'hidden-category-category' );
}
# (bug 8068) Allow control over whether robots index a page.
#
# FIXME (bug 14899): __INDEX__ always overrides __NOINDEX__ here! This
# is not desirable, the last one on the page should win.
- if( isset( $this->mDoubleUnderscores['noindex'] ) ) {
+ if( isset( $this->mDoubleUnderscores['noindex'] ) && $this->mTitle->canUseNoindex() ) {
$this->mOutput->setIndexPolicy( 'noindex' );
- } elseif( isset( $this->mDoubleUnderscores['index'] ) ) {
+ $this->addTrackingCategory( 'noindex-category' );
+ }
+ if( isset( $this->mDoubleUnderscores['index'] ) && $this->mTitle->canUseNoindex() ){
$this->mOutput->setIndexPolicy( 'index' );
+ $this->addTrackingCategory( 'index-category' );
}
+
wfProfileOut( __METHOD__ );
return $text;
}
/**
+ * Add a tracking category, getting the title from a system message,
+ * or print a debug message if the title is invalid.
+ * @param $msg String message key
+ * @return Bool whether the addition was successful
+ */
+ protected function addTrackingCategory( $msg ){
+ $cat = wfMsgForContent( $msg );
+
+ # Allow tracking categories to be disabled by setting them to "-"
+ if( $cat === '-' ) return false;
+
+ $containerCategory = Title::makeTitleSafe( NS_CATEGORY, $cat );
+ if ( $containerCategory ) {
+ $this->mOutput->addCategory( $containerCategory->getDBkey(), $this->getDefaultSort() );
+ return true;
+ } else {
+ wfDebug( __METHOD__.": [[MediaWiki:$msg]] is not a valid title!\n" );
+ return false;
+ }
+ }
+
+ /**
* This function accomplishes several tasks:
* 1) Auto-number headings if that option is enabled
* 2) Add an [edit] link to sections for users who have enabled the option and can edit the page
@@ -3365,11 +3494,12 @@ class Parser
* string and re-inserts the newly formatted headlines.
*
* @param string $text
+ * @param string $origText Original, untouched wikitext
* @param boolean $isMain
* @private
*/
- function formatHeadings( $text, $isMain=true ) {
- global $wgMaxTocLevel, $wgContLang, $wgEnforceHtmlIds;
+ function formatHeadings( $text, $origText, $isMain=true ) {
+ global $wgMaxTocLevel, $wgContLang, $wgHtml5, $wgExperimentalHtmlIds;
$doNumberHeadings = $this->mOptions->getNumberHeadings();
$showEditLink = $this->mOptions->getEditSection();
@@ -3434,6 +3564,12 @@ class Parser
$prevtoclevel = 0;
$markerRegex = "{$this->mUniqPrefix}-h-(\d+)-" . self::MARKER_SUFFIX;
$baseTitleText = $this->mTitle->getPrefixedDBkey();
+ $oldType = $this->mOutputType;
+ $this->setOutputType( self::OT_WIKI );
+ $frame = $this->getPreprocessor()->newFrame();
+ $root = $this->preprocessToDom( $origText );
+ $node = $root->getFirstChild();
+ $byteOffset = 0;
$tocraw = array();
foreach( $matches[3] as $headline ) {
@@ -3455,68 +3591,61 @@ class Parser
}
$level = $matches[1][$headlineCount];
- if( $doNumberHeadings || $enoughToc ) {
-
- if ( $level > $prevlevel ) {
- # Increase TOC level
- $toclevel++;
- $sublevelCount[$toclevel] = 0;
- if( $toclevel<$wgMaxTocLevel ) {
- $prevtoclevel = $toclevel;
- $toc .= $sk->tocIndent();
- $numVisible++;
- }
+ if ( $level > $prevlevel ) {
+ # Increase TOC level
+ $toclevel++;
+ $sublevelCount[$toclevel] = 0;
+ if( $toclevel<$wgMaxTocLevel ) {
+ $prevtoclevel = $toclevel;
+ $toc .= $sk->tocIndent();
+ $numVisible++;
}
- elseif ( $level < $prevlevel && $toclevel > 1 ) {
- # Decrease TOC level, find level to jump to
+ }
+ elseif ( $level < $prevlevel && $toclevel > 1 ) {
+ # Decrease TOC level, find level to jump to
- if ( $toclevel == 2 && $level <= $levelCount[1] ) {
- # Can only go down to level 1
- $toclevel = 1;
- } else {
- for ($i = $toclevel; $i > 0; $i--) {
- if ( $levelCount[$i] == $level ) {
- # Found last matching level
- $toclevel = $i;
- break;
- }
- elseif ( $levelCount[$i] < $level ) {
- # Found first matching level below current level
- $toclevel = $i + 1;
- break;
- }
- }
+ for ($i = $toclevel; $i > 0; $i--) {
+ if ( $levelCount[$i] == $level ) {
+ # Found last matching level
+ $toclevel = $i;
+ break;
}
- if( $toclevel<$wgMaxTocLevel ) {
- if($prevtoclevel < $wgMaxTocLevel) {
- # Unindent only if the previous toc level was shown :p
- $toc .= $sk->tocUnindent( $prevtoclevel - $toclevel );
- $prevtoclevel = $toclevel;
- } else {
- $toc .= $sk->tocLineEnd();
- }
+ elseif ( $levelCount[$i] < $level ) {
+ # Found first matching level below current level
+ $toclevel = $i + 1;
+ break;
}
}
- else {
- # No change in level, end TOC line
- if( $toclevel<$wgMaxTocLevel ) {
+ if( $i == 0 ) $toclevel = 1;
+ if( $toclevel<$wgMaxTocLevel ) {
+ if($prevtoclevel < $wgMaxTocLevel) {
+ # Unindent only if the previous toc level was shown :p
+ $toc .= $sk->tocUnindent( $prevtoclevel - $toclevel );
+ $prevtoclevel = $toclevel;
+ } else {
$toc .= $sk->tocLineEnd();
}
}
+ }
+ else {
+ # No change in level, end TOC line
+ if( $toclevel<$wgMaxTocLevel ) {
+ $toc .= $sk->tocLineEnd();
+ }
+ }
- $levelCount[$toclevel] = $level;
+ $levelCount[$toclevel] = $level;
- # count number of headlines for each level
- @$sublevelCount[$toclevel]++;
- $dot = 0;
- for( $i = 1; $i <= $toclevel; $i++ ) {
- if( !empty( $sublevelCount[$i] ) ) {
- if( $dot ) {
- $numbering .= '.';
- }
- $numbering .= $wgContLang->formatNum( $sublevelCount[$i] );
- $dot = 1;
+ # count number of headlines for each level
+ @$sublevelCount[$toclevel]++;
+ $dot = 0;
+ for( $i = 1; $i <= $toclevel; $i++ ) {
+ if( !empty( $sublevelCount[$i] ) ) {
+ if( $dot ) {
+ $numbering .= '.';
}
+ $numbering .= $wgContLang->formatNum( $sublevelCount[$i] );
+ $dot = 1;
}
}
@@ -3540,16 +3669,13 @@ class Parser
# For the anchor, strip out HTML-y stuff period
$safeHeadline = preg_replace( '/<.*?'.'>/', '', $safeHeadline );
+ $safeHeadline = preg_replace( '/[ _]+/', ' ', $safeHeadline );
$safeHeadline = trim( $safeHeadline );
# Save headline for section edit hint before it's escaped
$headlineHint = $safeHeadline;
- if ( $wgEnforceHtmlIds ) {
- $legacyHeadline = false;
- $safeHeadline = Sanitizer::escapeId( $safeHeadline,
- 'noninitial' );
- } else {
+ if ( $wgHtml5 && $wgExperimentalHtmlIds ) {
# For reverse compatibility, provide an id that's
# HTML4-compatible, like we used to.
#
@@ -3561,20 +3687,17 @@ class Parser
# to type in section names like "abc_.D7.93.D7.90.D7.A4"
# manually, so let's not bother worrying about it.
$legacyHeadline = Sanitizer::escapeId( $safeHeadline,
- 'noninitial' );
- $safeHeadline = Sanitizer::escapeId( $safeHeadline, 'xml' );
+ array( 'noninitial', 'legacy' ) );
+ $safeHeadline = Sanitizer::escapeId( $safeHeadline );
if ( $legacyHeadline == $safeHeadline ) {
# No reason to have both (in fact, we can't)
$legacyHeadline = false;
- } elseif ( $legacyHeadline != Sanitizer::escapeId(
- $legacyHeadline, 'xml' ) ) {
- # The legacy id is invalid XML. We used to allow this, but
- # there's no reason to do so anymore. Backward
- # compatibility will fail slightly in this case, but it's
- # no big deal.
- $legacyHeadline = false;
}
+ } else {
+ $legacyHeadline = false;
+ $safeHeadline = Sanitizer::escapeId( $safeHeadline,
+ 'noninitial' );
}
# HTML names must be case-insensitively unique (bug 10721). FIXME:
@@ -3602,7 +3725,7 @@ class Parser
# Don't number the heading if it is the only one (looks silly)
if( $doNumberHeadings && count( $matches[3] ) > 1) {
# the two are different if the line contains a link
- $headline=$numbering . ' ' . $headline;
+ $headline = $numbering . ' ' . $headline;
}
# Create the anchor for linking from the TOC to the section
@@ -3615,9 +3738,33 @@ class Parser
$legacyAnchor .= '_' . $refers[$legacyArrayKey];
}
if( $enoughToc && ( !isset($wgMaxTocLevel) || $toclevel<$wgMaxTocLevel ) ) {
- $toc .= $sk->tocLine($anchor, $tocline, $numbering, $toclevel);
- $tocraw[] = array( 'toclevel' => $toclevel, 'level' => $level, 'line' => $tocline, 'number' => $numbering );
+ $toc .= $sk->tocLine($anchor, $tocline,
+ $numbering, $toclevel, ($isTemplate ? false : $sectionIndex));
+ }
+
+ # Add the section to the section tree
+ # Find the DOM node for this header
+ while ( $node && !$isTemplate ) {
+ if ( $node->getName() === 'h' ) {
+ $bits = $node->splitHeading();
+ if ( $bits['i'] == $sectionIndex )
+ break;
+ }
+ $byteOffset += mb_strlen( $this->mStripState->unstripBoth(
+ $frame->expand( $node, PPFrame::RECOVER_ORIG ) ) );
+ $node = $node->getNextSibling();
}
+ $tocraw[] = array(
+ 'toclevel' => $toclevel,
+ 'level' => $level,
+ 'line' => $tocline,
+ 'number' => $numbering,
+ 'index' => ($isTemplate ? 'T-' : '' ) . $sectionIndex,
+ 'fromtitle' => $titleText,
+ 'byteoffset' => ( $isTemplate ? null : $byteOffset ),
+ 'anchor' => $anchor,
+ );
+
# give headline the correct <h#> tag
if( $showEditLink && $sectionIndex !== false ) {
if( $isTemplate ) {
@@ -3637,7 +3784,7 @@ class Parser
$headlineCount++;
}
- $this->mOutput->setSections( $tocraw );
+ $this->setOutputType( $oldType );
# Never ever show TOC if no headers
if( $numVisible < 1 ) {
@@ -3649,6 +3796,11 @@ class Parser
$toc .= $sk->tocUnindent( $prevtoclevel - 1 );
}
$toc = $sk->tocList( $toc );
+ $this->mOutput->setTOCHTML( $toc );
+ }
+
+ if ( $isMain ) {
+ $this->mOutput->setSections( $tocraw );
}
# split up and insert constructed headlines
@@ -3684,6 +3836,96 @@ class Parser
}
/**
+ * Merge $tree2 into $tree1 by replacing the section with index
+ * $section in $tree1 and its descendants with the sections in $tree2.
+ * Note that in the returned section tree, only the 'index' and
+ * 'byteoffset' fields are guaranteed to be correct.
+ * @param $tree1 array Section tree from ParserOutput::getSectons()
+ * @param $tree2 array Section tree
+ * @param $section int Section index
+ * @param $title Title Title both section trees come from
+ * @param $len2 int Length of the original wikitext for $tree2
+ * @return array Merged section tree
+ */
+ public static function mergeSectionTrees( $tree1, $tree2, $section, $title, $len2 ) {
+ global $wgContLang;
+ $newTree = array();
+ $targetLevel = false;
+ $merged = false;
+ $lastLevel = 1;
+ $nextIndex = 1;
+ $numbering = array( 0 );
+ $titletext = $title->getPrefixedDBkey();
+ foreach ( $tree1 as $s ) {
+ if ( $targetLevel !== false ) {
+ if ( $s['level'] <= $targetLevel )
+ // We've skipped enough
+ $targetLevel = false;
+ else
+ continue;
+ }
+ if ( $s['index'] != $section ||
+ $s['fromtitle'] != $titletext ) {
+ self::incrementNumbering( $numbering,
+ $s['toclevel'], $lastLevel );
+
+ // Rewrite index, byteoffset and number
+ if ( $s['fromtitle'] == $titletext ) {
+ $s['index'] = $nextIndex++;
+ if ( $merged )
+ $s['byteoffset'] += $len2;
+ }
+ $s['number'] = implode( '.', array_map(
+ array( $wgContLang, 'formatnum' ),
+ $numbering ) );
+ $lastLevel = $s['toclevel'];
+ $newTree[] = $s;
+ } else {
+ // We're at $section
+ // Insert sections from $tree2 here
+ foreach ( $tree2 as $s2 ) {
+ // Rewrite the fields in $s2
+ // before inserting it
+ $s2['toclevel'] += $s['toclevel'] - 1;
+ $s2['level'] += $s['level'] - 1;
+ $s2['index'] = $nextIndex++;
+ $s2['byteoffset'] += $s['byteoffset'];
+
+ self::incrementNumbering( $numbering,
+ $s2['toclevel'], $lastLevel );
+ $s2['number'] = implode( '.', array_map(
+ array( $wgContLang, 'formatnum' ),
+ $numbering ) );
+ $lastLevel = $s2['toclevel'];
+ $newTree[] = $s2;
+ }
+ // Skip all descendants of $section in $tree1
+ $targetLevel = $s['level'];
+ $merged = true;
+ }
+ }
+ return $newTree;
+ }
+
+ /**
+ * Increment a section number. Helper function for mergeSectionTrees()
+ * @param $number array Array representing a section number
+ * @param $level int Current TOC level (depth)
+ * @param $lastLevel int Level of previous TOC entry
+ */
+ private static function incrementNumbering( &$number, $level, $lastLevel ) {
+ if ( $level > $lastLevel )
+ $number[$level - 1] = 1;
+ else if ( $level < $lastLevel ) {
+ foreach ( $number as $key => $unused )
+ if ( $key >= $level )
+ unset( $number[$key] );
+ $number[$level - 1]++;
+ } else
+ $number[$level - 1]++;
+ }
+
+ /**
* Transform wiki markup when saving a page by doing \r\n -> \n
* conversion, substitting signatures, {{subst:}} templates, etc.
*
@@ -3728,26 +3970,29 @@ class Parser
* (see also bug 12815)
*/
$ts = $this->mOptions->getTimestamp();
- $tz = wfMsgForContent( 'timezone-utc' );
if ( isset( $wgLocaltimezone ) ) {
- $unixts = wfTimestamp( TS_UNIX, $ts );
- $oldtz = getenv( 'TZ' );
- putenv( 'TZ='.$wgLocaltimezone );
- $ts = date( 'YmdHis', $unixts );
- $tz = date( 'T', $unixts ); # might vary on DST changeover!
+ $tz = $wgLocaltimezone;
+ } else {
+ $tz = date_default_timezone_get();
+ }
- /* Allow translation of timezones trough wiki. date() can return
- * whatever crap the system uses, localised or not, so we cannot
- * ship premade translations.
- */
- $key = 'timezone-' . strtolower( trim( $tz ) );
- $value = wfMsgForContent( $key );
- if ( !wfEmptyMsg( $key, $value ) ) $tz = $value;
+ $unixts = wfTimestamp( TS_UNIX, $ts );
+ $oldtz = date_default_timezone_get();
+ date_default_timezone_set( $tz );
+ $ts = date( 'YmdHis', $unixts );
+ $tzMsg = date( 'T', $unixts ); # might vary on DST changeover!
- putenv( 'TZ='.$oldtz );
- }
+ /* Allow translation of timezones trough wiki. date() can return
+ * whatever crap the system uses, localised or not, so we cannot
+ * ship premade translations.
+ */
+ $key = 'timezone-' . strtolower( trim( $tzMsg ) );
+ $value = wfMsgForContent( $key );
+ if ( !wfEmptyMsg( $key, $value ) ) $tzMsg = $value;
+
+ date_default_timezone_set( $oldtz );
- $d = $wgContLang->timeanddate( $ts, false, false ) . " ($tz)";
+ $d = $wgContLang->timeanddate( $ts, false, false ) . " ($tzMsg)";
# Variable replacement
# Because mOutputType is OT_WIKI, this will only process {{subst:xxx}} type tags
@@ -3781,7 +4026,7 @@ class Parser
$m = array();
if ( preg_match( "/^($nc+:|)$tc+?( \\($tc+\\))$/", $t, $m ) ) {
$text = preg_replace( $p2, "[[$m[1]\\1$m[2]|\\1]]", $text );
- } elseif ( preg_match( "/^($nc+:|)$tc+?(, $tc+|)$/", $t, $m ) && '' != "$m[1]$m[2]" ) {
+ } elseif ( preg_match( "/^($nc+:|)$tc+?(, $tc+|)$/", $t, $m ) && "$m[1]$m[2]" != '' ) {
$text = preg_replace( $p2, "[[$m[1]\\1$m[2]|\\1]]", $text );
} else {
# if there's no context, don't bother duplicating the title
@@ -3797,22 +4042,30 @@ class Parser
/**
* Fetch the user's signature text, if any, and normalize to
* validated, ready-to-insert wikitext.
+ * If you have pre-fetched the nickname or the fancySig option, you can
+ * specify them here to save a database query.
*
* @param User $user
* @return string
- * @private
*/
- function getUserSig( &$user ) {
+ function getUserSig( &$user, $nickname = false, $fancySig = null ) {
global $wgMaxSigChars;
$username = $user->getName();
- $nickname = $user->getOption( 'nickname' );
- $nickname = $nickname === '' ? $username : $nickname;
+
+ // If not given, retrieve from the user object.
+ if ( $nickname === false )
+ $nickname = $user->getOption( 'nickname' );
+
+ if ( is_null( $fancySig ) )
+ $fancySig = $user->getBoolOption( 'fancysig' );
+
+ $nickname = $nickname == null ? $username : $nickname;
if( mb_strlen( $nickname ) > $wgMaxSigChars ) {
$nickname = $username;
wfDebug( __METHOD__ . ": $username has overlong signature.\n" );
- } elseif( $user->getBoolOption( 'fancysig' ) !== false ) {
+ } elseif( $fancySig !== false ) {
# Sig. might contain markup; validate this
if( $this->validateSig( $nickname ) !== false ) {
# Validated; clean up (if needed) and return it
@@ -4005,28 +4258,30 @@ class Parser
* @param integer $flags a combination of the following flags:
* SFH_NO_HASH No leading hash, i.e. {{plural:...}} instead of {{#if:...}}
*
- * SFH_OBJECT_ARGS Pass the template arguments as PPNode objects instead of text. This
+ * SFH_OBJECT_ARGS Pass the template arguments as PPNode objects instead of text. This
* allows for conditional expansion of the parse tree, allowing you to eliminate dead
- * branches and thus speed up parsing. It is also possible to analyse the parse tree of
+ * branches and thus speed up parsing. It is also possible to analyse the parse tree of
* the arguments, and to control the way they are expanded.
*
* The $frame parameter is a PPFrame. This can be used to produce expanded text from the
* arguments, for instance:
* $text = isset( $args[0] ) ? $frame->expand( $args[0] ) : '';
*
- * For technical reasons, $args[0] is pre-expanded and will be a string. This may change in
+ * For technical reasons, $args[0] is pre-expanded and will be a string. This may change in
* future versions. Please call $frame->expand() on it anyway so that your code keeps
* working if/when this is changed.
*
* If you want whitespace to be trimmed from $args, you need to do it yourself, post-
* expansion.
*
- * Please read the documentation in includes/parser/Preprocessor.php for more information
+ * Please read the documentation in includes/parser/Preprocessor.php for more information
* about the methods available in PPFrame and PPNode.
*
* @return The old callback function for this name, if any
*/
function setFunctionHook( $id, $callback, $flags = 0 ) {
+ global $wgContLang;
+
$oldVal = isset( $this->mFunctionHooks[$id] ) ? $this->mFunctionHooks[$id][0] : null;
$this->mFunctionHooks[$id] = array( $callback, $flags );
@@ -4041,7 +4296,7 @@ class Parser
foreach ( $synonyms as $syn ) {
# Case
if ( !$sensitive ) {
- $syn = strtolower( $syn );
+ $syn = $wgContLang->lc( $syn );
}
# Add leading hash
if ( !( $flags & SFH_NO_HASH ) ) {
@@ -4066,6 +4321,25 @@ class Parser
}
/**
+ * Create a tag function, e.g. <test>some stuff</test>.
+ * Unlike tag hooks, tag functions are parsed at preprocessor level.
+ * Unlike parser functions, their content is not preprocessed.
+ */
+ function setFunctionTagHook( $tag, $callback, $flags ) {
+ $tag = strtolower( $tag );
+ $old = isset( $this->mFunctionTagHooks[$tag] ) ?
+ $this->mFunctionTagHooks[$tag] : null;
+ $this->mFunctionTagHooks[$tag] = array( $callback, $flags );
+
+ if( !in_array( $tag, $this->mStripList ) ) {
+ $this->mStripList[] = $tag;
+ }
+
+ return $old;
+ }
+
+ /**
+ * FIXME: update documentation. makeLinkObj() is deprecated.
* Replace <!--LINK--> link placeholders with actual links, in the buffer
* Placeholders created in Skin::makeLinkObj()
* Returns an array of link CSS classes, indexed by PDBK.
@@ -4085,19 +4359,6 @@ class Parser
}
/**
- * Tag hook handler for 'pre'.
- */
- function renderPreTag( $text, $attribs ) {
- // Backwards-compatibility hack
- $content = StringUtils::delimiterReplace( '<nowiki>', '</nowiki>', '$1', $text, 'i' );
-
- $attribs = Sanitizer::validateTagAttributes( $attribs, 'pre' );
- return Xml::openElement( 'pre', $attribs ) .
- Xml::escapeTagsOnly( $content ) .
- '</pre>';
- }
-
- /**
* Renders an image gallery from a text with one line per image.
* text labels may be given by using |-style alternative text. E.g.
* Image:one.jpg|The number "1"
@@ -4145,7 +4406,7 @@ class Parser
if ( count( $matches ) == 0 ) {
continue;
}
-
+
if ( strpos( $matches[0], '%' ) !== false )
$matches[1] = urldecode( $matches[1] );
$tp = Title::newFromText( $matches[1]/*, NS_FILE*/ );
@@ -4227,11 +4488,13 @@ class Parser
# * none same, but not aligned
# * ___px scale to ___ pixels width, no aligning. e.g. use in taxobox
# * center center the image
- # * framed Keep original image size, no magnify-button.
+ # * frame Keep original image size, no magnify-button.
+ # * framed Same as "frame"
# * frameless like 'thumb' but without a frame. Keeps user preferences for width
# * upright reduce width for upright images, rounded to full __0 px
# * border draw a 1px border around the image
# * alt Text for HTML alt attribute (defaults to empty)
+ # * link Set the target of the image link. Can be external, interwiki, or local
# vertical-align values (no % or length right now):
# * baseline
# * sub
@@ -4255,15 +4518,7 @@ class Parser
# Get the file
$imagename = $title->getDBkey();
- if ( isset( $this->mFileCache[$imagename][$time] ) ) {
- $file = $this->mFileCache[$imagename][$time];
- } else {
- $file = wfFindFile( $title, $time );
- if ( count( $this->mFileCache ) > 1000 ) {
- $this->mFileCache = array();
- }
- $this->mFileCache[$imagename][$time] = $file;
- }
+ $file = wfFindFile( $title, array( 'time' => $time ) );
# Get parameter map
$handler = $file ? $file->getHandler() : false;
@@ -4312,7 +4567,7 @@ class Parser
switch( $paramName ) {
case 'manualthumb':
case 'alt':
- // @fixme - possibly check validity here for
+ // @todo Fixme: possibly check validity here for
// manualthumb? downstream behavior seems odd with
// missing manual thumbs.
$validated = true;
@@ -4367,7 +4622,11 @@ class Parser
$params['frame']['caption'] = $caption;
- $params['frame']['title'] = $this->stripAltText( $caption, $holders );
+ # Will the image be presented in a frame, with the caption below?
+ $imageIsFramed = isset( $params['frame']['frame'] ) ||
+ isset( $params['frame']['framed'] ) ||
+ isset( $params['frame']['thumbnail'] ) ||
+ isset( $params['frame']['manualthumb'] );
# In the old days, [[Image:Foo|text...]] would set alt text. Later it
# came to also set the caption, ordinary text after the image -- which
@@ -4385,11 +4644,27 @@ class Parser
# named parameter entirely for images without a caption; adding an ex-
# plicit caption= parameter and preserving the old magic unnamed para-
# meter for BC; ...
- if( $caption !== '' && !isset( $params['frame']['alt'] )
- && !isset( $params['frame']['framed'] )
- && !isset( $params['frame']['thumbnail'] )
- && !isset( $params['frame']['manualthumb'] ) ) {
- $params['frame']['alt'] = $params['frame']['title'];
+ if ( $imageIsFramed ) { # Framed image
+ if ( $caption === '' && !isset( $params['frame']['alt'] ) ) {
+ # No caption or alt text, add the filename as the alt text so
+ # that screen readers at least get some description of the image
+ $params['frame']['alt'] = $title->getText();
+ }
+ # Do not set $params['frame']['title'] because tooltips don't make sense
+ # for framed images
+ } else { # Inline image
+ if ( !isset( $params['frame']['alt'] ) ) {
+ # No alt text, use the "caption" for the alt text
+ if ( $caption !== '') {
+ $params['frame']['alt'] = $this->stripAltText( $caption, $holders );
+ } else {
+ # No caption, fall back to using the filename for the
+ # alt text
+ $params['frame']['alt'] = $title->getText();
+ }
+ }
+ # Use the "caption" for the tooltip text
+ $params['frame']['title'] = $this->stripAltText( $caption, $holders );
}
wfRunHooks( 'ParserMakeImageParams', array( $title, $file, &$params ) );
@@ -4404,7 +4679,7 @@ class Parser
return $ret;
}
-
+
protected function stripAltText( $caption, $holders ) {
# Strip bad stuff out of the title (tooltip). We can't just use
# replaceLinkHoldersText() here, because if this function is called
@@ -4420,7 +4695,7 @@ class Parser
# remove the tags
$tooltip = $this->mStripState->unstripBoth( $tooltip );
$tooltip = Sanitizer::stripAllTags( $tooltip );
-
+
return $tooltip;
}
@@ -4452,9 +4727,9 @@ class Parser
/**#@+
* Accessor/mutator
*/
- function Title( $x = NULL ) { return wfSetVar( $this->mTitle, $x ); }
- function Options( $x = NULL ) { return wfSetVar( $this->mOptions, $x ); }
- function OutputType( $x = NULL ) { return wfSetVar( $this->mOutputType, $x ); }
+ function Title( $x = null ) { return wfSetVar( $this->mTitle, $x ); }
+ function Options( $x = null ) { return wfSetVar( $this->mOptions, $x ); }
+ function OutputType( $x = null ) { return wfSetVar( $this->mOutputType, $x ); }
/**#@-*/
/**#@+
@@ -4856,7 +5131,7 @@ class Parser
$links['interwiki'][] = $this->mLinkHolders->interwiki[$key];
$pos = $start_pos + strlen( "<!--IWLINK $key-->" );
}
-
+
$data['linkholder'] = $links;
return $data;
@@ -4865,7 +5140,7 @@ class Parser
function unserialiseHalfParsedText( $data, $intPrefix = null /* Unique identifying prefix */ ) {
if (!$intPrefix)
$intPrefix = $this->getRandomString();
-
+
// First, extract the strip state.
$stripState = $data['stripstate'];
$this->mStripState->general->merge( $stripState->general );
diff --git a/includes/parser/ParserCache.php b/includes/parser/ParserCache.php
index d17214c3..524d6be5 100644
--- a/includes/parser/ParserCache.php
+++ b/includes/parser/ParserCache.php
@@ -7,7 +7,7 @@ class ParserCache {
/**
* Get an instance of this object
*/
- public static function &singleton() {
+ public static function singleton() {
static $instance;
if ( !isset( $instance ) ) {
global $parserMemc;
@@ -22,11 +22,11 @@ class ParserCache {
*
* @param object $memCached
*/
- function __construct( &$memCached ) {
- $this->mMemc =& $memCached;
+ function __construct( $memCached ) {
+ $this->mMemc = $memCached;
}
- function getKey( &$article, $popts ) {
+ function getKey( $article, $popts ) {
global $wgRequest;
if( $popts instanceof User ) // It used to be getKey( &$article, &$user )
@@ -47,52 +47,55 @@ class ParserCache {
return $key;
}
- function getETag( &$article, $popts ) {
+ function getETag( $article, $popts ) {
return 'W/"' . $this->getKey($article, $popts) . "--" . $article->mTouched. '"';
}
- function get( &$article, $popts ) {
- global $wgCacheEpoch;
- $fname = 'ParserCache::get';
- wfProfileIn( $fname );
-
+ function getDirty( $article, $popts ) {
$key = $this->getKey( $article, $popts );
-
wfDebug( "Trying parser cache $key\n" );
$value = $this->mMemc->get( $key );
- if ( is_object( $value ) ) {
- wfDebug( "Found.\n" );
- # Delete if article has changed since the cache was made
- $canCache = $article->checkTouched();
- $cacheTime = $value->getCacheTime();
- $touched = $article->mTouched;
- if ( !$canCache || $value->expired( $touched ) ) {
- if ( !$canCache ) {
- wfIncrStats( "pcache_miss_invalid" );
- wfDebug( "Invalid cached redirect, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
- } else {
- wfIncrStats( "pcache_miss_expired" );
- wfDebug( "Key expired, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
- }
- $this->mMemc->delete( $key );
- $value = false;
- } else {
- if ( isset( $value->mTimestamp ) ) {
- $article->mTimestamp = $value->mTimestamp;
- }
- wfIncrStats( "pcache_hit" );
- }
- } else {
+ return is_object( $value ) ? $value : false;
+ }
+
+ function get( $article, $popts ) {
+ global $wgCacheEpoch;
+ wfProfileIn( __METHOD__ );
+
+ $value = $this->getDirty( $article, $popts );
+ if ( !$value ) {
wfDebug( "Parser cache miss.\n" );
wfIncrStats( "pcache_miss_absent" );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ wfDebug( "Found.\n" );
+ # Invalid if article has changed since the cache was made
+ $canCache = $article->checkTouched();
+ $cacheTime = $value->getCacheTime();
+ $touched = $article->mTouched;
+ if ( !$canCache || $value->expired( $touched ) ) {
+ if ( !$canCache ) {
+ wfIncrStats( "pcache_miss_invalid" );
+ wfDebug( "Invalid cached redirect, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
+ } else {
+ wfIncrStats( "pcache_miss_expired" );
+ wfDebug( "Key expired, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
+ }
$value = false;
+ } else {
+ if ( isset( $value->mTimestamp ) ) {
+ $article->mTimestamp = $value->mTimestamp;
+ }
+ wfIncrStats( "pcache_hit" );
}
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return $value;
}
- function save( $parserOutput, &$article, $popts ){
+ function save( $parserOutput, $article, $popts ){
global $wgParserCacheExpireTime;
$key = $this->getKey( $article, $popts );
diff --git a/includes/parser/ParserOptions.php b/includes/parser/ParserOptions.php
index e6a9f3a7..985bba28 100644
--- a/includes/parser/ParserOptions.php
+++ b/includes/parser/ParserOptions.php
@@ -5,10 +5,8 @@
* @todo document
* @ingroup Parser
*/
-class ParserOptions
-{
+class ParserOptions {
# All variables are supposed to be private in theory, although in practise this is not the case.
- var $mUseTeX; # Use texvc to expand <math> tags
var $mUseDynamicDates; # Use DateFormatter to format dates
var $mInterwikiMagic; # Interlanguage links are removed and returned in an array
var $mAllowExternalImages; # Allow external images inline
@@ -35,9 +33,8 @@ class ParserOptions
var $mUser; # Stored user object, just used to initialise the skin
var $mIsPreview; # Parsing the page for a "preview" operation
var $mIsSectionPreview; # Parsing the page for a "preview" operation on a single section
- var $mIsPrintable; # Parsing the printable version of the page
+ var $mIsPrintable; # Parsing the printable version of the page
- function getUseTeX() { return $this->mUseTeX; }
function getUseDynamicDates() { return $this->mUseDynamicDates; }
function getInterwikiMagic() { return $this->mInterwikiMagic; }
function getAllowExternalImages() { return $this->mAllowExternalImages; }
@@ -59,8 +56,8 @@ class ParserOptions
function getExternalLinkTarget() { return $this->mExternalLinkTarget; }
function getIsPreview() { return $this->mIsPreview; }
function getIsSectionPreview() { return $this->mIsSectionPreview; }
- function getIsPrintable() { return $this->mIsPrintable; }
-
+ function getIsPrintable() { return $this->mIsPrintable; }
+
function getSkin() {
if ( !isset( $this->mSkin ) ) {
$this->mSkin = $this->mUser->getSkin();
@@ -82,7 +79,6 @@ class ParserOptions
return $this->mTimestamp;
}
- function setUseTeX( $x ) { return wfSetVar( $this->mUseTeX, $x ); }
function setUseDynamicDates( $x ) { return wfSetVar( $this->mUseDynamicDates, $x ); }
function setInterwikiMagic( $x ) { return wfSetVar( $this->mInterwikiMagic, $x ); }
function setAllowExternalImages( $x ) { return wfSetVar( $this->mAllowExternalImages, $x ); }
@@ -107,8 +103,8 @@ class ParserOptions
function setExternalLinkTarget( $x ) { return wfSetVar( $this->mExternalLinkTarget, $x ); }
function setIsPreview( $x ) { return wfSetVar( $this->mIsPreview, $x ); }
function setIsSectionPreview( $x ) { return wfSetVar( $this->mIsSectionPreview, $x ); }
- function setIsPrintable( $x ) { return wfSetVar( $this->mIsPrintable, $x ); }
-
+ function setIsPrintable( $x ) { return wfSetVar( $this->mIsPrintable, $x ); }
+
function __construct( $user = null ) {
$this->initialiseFromUser( $user );
}
@@ -123,12 +119,13 @@ class ParserOptions
/** Get user options */
function initialiseFromUser( $userInput ) {
- global $wgUseTeX, $wgUseDynamicDates, $wgInterwikiMagic, $wgAllowExternalImages;
+ global $wgUseDynamicDates, $wgInterwikiMagic, $wgAllowExternalImages;
global $wgAllowExternalImagesFrom, $wgEnableImageWhitelist, $wgAllowSpecialInclusion, $wgMaxArticleSize;
global $wgMaxPPNodeCount, $wgMaxTemplateDepth, $wgMaxPPExpandDepth, $wgCleanSignatures;
global $wgExternalLinkTarget;
- $fname = 'ParserOptions::initialiseFromUser';
- wfProfileIn( $fname );
+
+ wfProfileIn( __METHOD__ );
+
if ( !$userInput ) {
global $wgUser;
if ( isset( $wgUser ) ) {
@@ -142,7 +139,6 @@ class ParserOptions
$this->mUser = $user;
- $this->mUseTeX = $wgUseTeX;
$this->mUseDynamicDates = $wgUseDynamicDates;
$this->mInterwikiMagic = $wgInterwikiMagic;
$this->mAllowExternalImages = $wgAllowExternalImages;
@@ -167,6 +163,7 @@ class ParserOptions
$this->mExternalLinkTarget = $wgExternalLinkTarget;
$this->mIsPreview = false;
$this->mIsSectionPreview = false;
- wfProfileOut( $fname );
+
+ wfProfileOut( __METHOD__ );
}
}
diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php
index 22c1dfba..ea5840e6 100644
--- a/includes/parser/ParserOutput.php
+++ b/includes/parser/ParserOutput.php
@@ -24,14 +24,10 @@ class ParserOutput
$mOutputHooks = array(), # Hook tags as per $wgParserOutputHooks
$mWarnings = array(), # Warning text to be returned to the user. Wikitext formatted, in the key only
$mSections = array(), # Table of contents
- $mProperties = array(); # Name/value pairs to be cached in the DB
+ $mProperties = array(), # Name/value pairs to be cached in the DB
+ $mTOCHTML = ''; # HTML of the TOC
private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change.
- /**
- * Overridden title for display
- */
- private $displayTitle = false;
-
function ParserOutput( $text = '', $languageLinks = array(), $categoryLinks = array(),
$containsOldMagic = false, $titletext = '' )
{
@@ -54,10 +50,12 @@ class ParserOutput
function &getImages() { return $this->mImages; }
function &getExternalLinks() { return $this->mExternalLinks; }
function getNoGallery() { return $this->mNoGallery; }
+ function getHeadItems() { return $this->mHeadItems; }
function getSubtitle() { return $this->mSubtitle; }
function getOutputHooks() { return (array)$this->mOutputHooks; }
function getWarnings() { return array_keys( $this->mWarnings ); }
function getIndexPolicy() { return $this->mIndexPolicy; }
+ function getTOCHTML() { return $this->mTOCHTML; }
function containsOldMagic() { return $this->mContainsOldMagic; }
function setText( $text ) { return wfSetVar( $this->mText, $text ); }
@@ -68,10 +66,10 @@ class ParserOutput
function setTitleText( $t ) { return wfSetVar( $this->mTitleText, $t ); }
function setSections( $toc ) { return wfSetVar( $this->mSections, $toc ); }
function setIndexPolicy( $policy ) { return wfSetVar( $this->mIndexPolicy, $policy ); }
+ function setTOCHTML( $tochtml ) { return wfSetVar( $this->mTOCHTML, $tochtml ); }
function addCategory( $c, $sort ) { $this->mCategories[$c] = $sort; }
function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; }
- function addExternalLink( $url ) { $this->mExternalLinks[$url] = 1; }
function addWarning( $s ) { $this->mWarnings[$s] = 1; }
function addOutputHook( $hook, $data = false ) {
@@ -91,7 +89,18 @@ class ParserOutput
return (bool)$this->mNewSection;
}
+ function addExternalLink( $url ) {
+ # We don't register links pointing to our own server, unless... :-)
+ global $wgServer, $wgRegisterInternalExternals;
+ if( $wgRegisterInternalExternals or stripos($url,$wgServer.'/')!==0)
+ $this->mExternalLinks[$url] = 1;
+ }
+
function addLink( $title, $id = null ) {
+ if ( $title->isExternal() ) {
+ // Don't record interwikis in pagelinks
+ return;
+ }
$ns = $title->getNamespace();
$dbk = $title->getDBkey();
if ( $ns == NS_MEDIA ) {
@@ -170,7 +179,7 @@ class ParserOutput
* @param string $text Desired title text
*/
public function setDisplayTitle( $text ) {
- $this->displayTitle = $text;
+ $this->setTitleText( $text );
}
/**
@@ -179,7 +188,11 @@ class ParserOutput
* @return string
*/
public function getDisplayTitle() {
- return $this->displayTitle;
+ $t = $this->getTitleText( );
+ if( $t === '' ) {
+ return false;
+ }
+ return $t;
}
/**
diff --git a/includes/parser/Preprocessor.php b/includes/parser/Preprocessor.php
index 1a33ac7f..9c417d23 100644
--- a/includes/parser/Preprocessor.php
+++ b/includes/parser/Preprocessor.php
@@ -66,6 +66,21 @@ interface PPFrame {
function isEmpty();
/**
+ * Returns all arguments of this frame
+ */
+ function getArguments();
+
+ /**
+ * Returns all numbered arguments of this frame
+ */
+ function getNumberedArguments();
+
+ /**
+ * Returns all named arguments of this frame
+ */
+ function getNamedArguments();
+
+ /**
* Get an argument to this frame by name
*/
function getArgument( $name );
diff --git a/includes/parser/Preprocessor_DOM.php b/includes/parser/Preprocessor_DOM.php
index 2e114545..673ac241 100644
--- a/includes/parser/Preprocessor_DOM.php
+++ b/includes/parser/Preprocessor_DOM.php
@@ -419,7 +419,8 @@ class Preprocessor_DOM implements Preprocessor {
'count' => $count );
$stack->push( $piece );
$accum =& $stack->getAccum();
- extract( $stack->getFlags() );
+ $flags = $stack->getFlags();
+ extract( $flags );
$i += $count;
}
}
@@ -470,7 +471,8 @@ class Preprocessor_DOM implements Preprocessor {
// Unwind the stack
$stack->pop();
$accum =& $stack->getAccum();
- extract( $stack->getFlags() );
+ $flags = $stack->getFlags();
+ extract( $flags );
// Append the result to the enclosing accumulator
$accum .= $element;
@@ -497,7 +499,8 @@ class Preprocessor_DOM implements Preprocessor {
$stack->push( $piece );
$accum =& $stack->getAccum();
- extract( $stack->getFlags() );
+ $flags = $stack->getFlags();
+ extract( $flags );
} else {
# Add literal brace(s)
$accum .= htmlspecialchars( str_repeat( $curChar, $count ) );
@@ -597,8 +600,8 @@ class Preprocessor_DOM implements Preprocessor {
}
$enclosingAccum .= str_repeat( $piece->open, $skippedBraces );
}
-
- extract( $stack->getFlags() );
+ $flags = $stack->getFlags();
+ extract( $flags );
# Add XML element to the enclosing accumulator
$accum .= $element;
@@ -1189,6 +1192,18 @@ class PPFrame_DOM implements PPFrame {
}
}
+ function getArguments() {
+ return array();
+ }
+
+ function getNumberedArguments() {
+ return array();
+ }
+
+ function getNamedArguments() {
+ return array();
+ }
+
/**
* Returns true if there are no arguments in this frame
*/
@@ -1224,8 +1239,7 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
var $numberedExpansionCache, $namedExpansionCache;
function __construct( $preprocessor, $parent = false, $numberedArgs = array(), $namedArgs = array(), $title = false ) {
- $this->preprocessor = $preprocessor;
- $this->parser = $preprocessor->parser;
+ PPFrame_DOM::__construct( $preprocessor );
$this->parent = $parent;
$this->numberedArgs = $numberedArgs;
$this->namedArgs = $namedArgs;
@@ -1337,8 +1351,7 @@ class PPCustomFrame_DOM extends PPFrame_DOM {
var $args;
function __construct( $preprocessor, $args ) {
- $this->preprocessor = $preprocessor;
- $this->parser = $preprocessor->parser;
+ PPFrame_DOM::__construct( $preprocessor );
$this->args = $args;
}
diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php
index f46ee40c..c5d69685 100644
--- a/includes/parser/Preprocessor_Hash.php
+++ b/includes/parser/Preprocessor_Hash.php
@@ -1139,6 +1139,18 @@ class PPFrame_Hash implements PPFrame {
}
}
+ function getArguments() {
+ return array();
+ }
+
+ function getNumberedArguments() {
+ return array();
+ }
+
+ function getNamedArguments() {
+ return array();
+ }
+
/**
* Returns true if there are no arguments in this frame
*/
@@ -1174,8 +1186,7 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
var $numberedExpansionCache, $namedExpansionCache;
function __construct( $preprocessor, $parent = false, $numberedArgs = array(), $namedArgs = array(), $title = false ) {
- $this->preprocessor = $preprocessor;
- $this->parser = $preprocessor->parser;
+ PPFrame_Hash::__construct( $preprocessor );
$this->parent = $parent;
$this->numberedArgs = $numberedArgs;
$this->namedArgs = $namedArgs;
@@ -1287,8 +1298,7 @@ class PPCustomFrame_Hash extends PPFrame_Hash {
var $args;
function __construct( $preprocessor, $args ) {
- $this->preprocessor = $preprocessor;
- $this->parser = $preprocessor->parser;
+ PPFrame_Hash::__construct( $preprocessor );
$this->args = $args;
}
diff --git a/includes/SearchEngine.php b/includes/search/SearchEngine.php
index e5392f7c..f4ca700d 100644
--- a/includes/SearchEngine.php
+++ b/includes/search/SearchEngine.php
@@ -21,11 +21,10 @@ class SearchEngine {
/**
* Perform a full text search query and return a result set.
* If title searches are not supported or disabled, return null.
+ * STUB
*
- * @param string $term - Raw search term
+ * @param $term String: raw search term
* @return SearchResultSet
- * @access public
- * @abstract
*/
function searchText( $term ) {
return null;
@@ -34,11 +33,10 @@ class SearchEngine {
/**
* Perform a title-only search query and return a result set.
* If title searches are not supported or disabled, return null.
+ * STUB
*
- * @param string $term - Raw search term
+ * @param $term String: raw search term
* @return SearchResultSet
- * @access public
- * @abstract
*/
function searchTitle( $term ) {
return null;
@@ -50,6 +48,18 @@ class SearchEngine {
}
/**
+ * When overridden in derived class, performs database-specific conversions
+ * on text to be used for searching or updating search index.
+ * Default implementation does nothing (simply returns $string).
+ *
+ * @param $string string: String to process
+ * @return string
+ */
+ public function normalizeText( $string ) {
+ return $string;
+ }
+
+ /**
* Transform search term in cases when parts of the query came as different GET params (when supported)
* e.g. for prefix queries: search=test&prefix=Main_Page/Archive -> test prefix:Main Page/Archive
*/
@@ -58,27 +68,41 @@ class SearchEngine {
}
/**
- * If an exact title match can be find, or a very slightly close match,
+ * If an exact title match can be found, or a very slightly close match,
* return the title. If no match, returns NULL.
*
- * @param string $term
+ * @param $searchterm String
* @return Title
*/
public static function getNearMatch( $searchterm ) {
+ $title = self::getNearMatchInternal( $searchterm );
+
+ wfRunHooks( 'SearchGetNearMatchComplete', array( $searchterm, &$title ) );
+ return $title;
+ }
+
+ /**
+ * Really find the title match.
+ */
+ private static function getNearMatchInternal( $searchterm ) {
global $wgContLang;
$allSearchTerms = array($searchterm);
- if($wgContLang->hasVariants()){
+ if ( $wgContLang->hasVariants() ) {
$allSearchTerms = array_merge($allSearchTerms,$wgContLang->convertLinkToAllVariants($searchterm));
}
- foreach($allSearchTerms as $term){
+ if( !wfRunHooks( 'SearchGetNearMatchBefore', array( $allSearchTerms, &$titleResult ) ) ) {
+ return $titleResult;
+ }
+
+ foreach($allSearchTerms as $term) {
# Exact match? No need to look further.
$title = Title::newFromText( $term );
if (is_null($title))
- return NULL;
+ return null;
if ( $title->getNamespace() == NS_SPECIAL || $title->isExternal() || $title->exists() ) {
return $title;
@@ -160,7 +184,7 @@ class SearchEngine {
return SearchEngine::getNearMatch( $matches[1] );
}
- return NULL;
+ return null;
}
public static function legalSearchChars() {
@@ -171,9 +195,8 @@ class SearchEngine {
* Set the maximum number of results to return
* and how many to skip before returning the first.
*
- * @param int $limit
- * @param int $offset
- * @access public
+ * @param $limit Integer
+ * @param $offset Integer
*/
function setLimitOffset( $limit, $offset = 0 ) {
$this->limit = intval( $limit );
@@ -184,8 +207,7 @@ class SearchEngine {
* Set which namespaces the search should include.
* Give an array of namespace index numbers.
*
- * @param array $namespaces
- * @access public
+ * @param $namespaces Array
*/
function setNamespaces( $namespaces ) {
$this->namespaces = $namespaces;
@@ -195,15 +217,17 @@ class SearchEngine {
* Parse some common prefixes: all (search everything)
* or namespace names
*
- * @param string $query
+ * @param $query String
*/
function replacePrefixes( $query ){
global $wgContLang;
- if( strpos($query,':') === false )
- return $query; // nothing to do
-
$parsed = $query;
+ if( strpos($query,':') === false ) { // nothing to do
+ wfRunHooks( 'SearchEngineReplacePrefixesComplete', array( $this, $query, &$parsed ) );
+ return $parsed;
+ }
+
$allkeyword = wfMsgForContent('searchall').":";
if( strncmp($query, $allkeyword, strlen($allkeyword)) == 0 ){
$this->namespaces = null;
@@ -217,14 +241,16 @@ class SearchEngine {
}
}
if(trim($parsed) == '')
- return $query; // prefix was the whole query
+ $parsed = $query; // prefix was the whole query
+
+ wfRunHooks( 'SearchEngineReplacePrefixesComplete', array( $this, $query, &$parsed ) );
return $parsed;
}
/**
* Make a list of searchable namespaces and their canonical names.
- * @return array
+ * @return Array
*/
public static function searchableNamespaces() {
global $wgContLang;
@@ -234,6 +260,8 @@ class SearchEngine {
$arr[$ns] = $name;
}
}
+
+ wfRunHooks( 'SearchableNamespaces', array( &$arr ) );
return $arr;
}
@@ -241,26 +269,35 @@ class SearchEngine {
* Extract default namespaces to search from the given user's
* settings, returning a list of index numbers.
*
- * @param User $user
- * @return array
- * @static
+ * @param $user User
+ * @return Array
*/
- public static function userNamespaces( &$user ) {
- $arr = array();
- foreach( SearchEngine::searchableNamespaces() as $ns => $name ) {
- if( $user->getOption( 'searchNs' . $ns ) ) {
- $arr[] = $ns;
- }
- }
+ public static function userNamespaces( $user ) {
+ global $wgSearchEverythingOnlyLoggedIn;
+
+ // get search everything preference, that can be set to be read for logged-in users
+ $searcheverything = false;
+ if( ( $wgSearchEverythingOnlyLoggedIn && $user->isLoggedIn() )
+ || !$wgSearchEverythingOnlyLoggedIn )
+ $searcheverything = $user->getOption('searcheverything');
+
+ // searcheverything overrides other options
+ if( $searcheverything )
+ return array_keys(SearchEngine::searchableNamespaces());
+
+ $arr = Preferences::loadOldSearchNs( $user );
+ $searchableNamespaces = SearchEngine::searchableNamespaces();
+
+ $arr = array_intersect( $arr, array_keys($searchableNamespaces) ); // Filter
+
return $arr;
}
/**
* Find snippet highlight settings for a given user
*
- * @param User $user
- * @return array contextlines, contextchars
- * @static
+ * @param $user User
+ * @return Array contextlines, contextchars
*/
public static function userHighlightPrefs( &$user ){
//$contextlines = $user->getOption( 'contextlines', 5 );
@@ -273,8 +310,7 @@ class SearchEngine {
/**
* An array of namespaces indexes to be searched by default
*
- * @return array
- * @static
+ * @return Array
*/
public static function defaultNamespaces(){
global $wgNamespacesToBeSearchedDefault;
@@ -286,7 +322,7 @@ class SearchEngine {
* Get a list of namespace names useful for showing in tooltips
* and preferences
*
- * @param unknown_type $namespaces
+ * @param $namespaces Array
*/
public static function namespacesAsText( $namespaces ){
global $wgContLang;
@@ -300,37 +336,21 @@ class SearchEngine {
}
/**
- * An array of "project" namespaces indexes typically searched
- * by logged-in users
+ * Return the help namespaces to be shown on Special:Search
*
- * @return array
- * @static
+ * @return Array
*/
- public static function projectNamespaces() {
- global $wgNamespacesToBeSearchedDefault, $wgNamespacesToBeSearchedProject;
+ public static function helpNamespaces() {
+ global $wgNamespacesToBeSearchedHelp;
- return array_keys( $wgNamespacesToBeSearchedProject, true );
- }
-
- /**
- * An array of "project" namespaces indexes typically searched
- * by logged-in users in addition to the default namespaces
- *
- * @return array
- * @static
- */
- public static function defaultAndProjectNamespaces() {
- global $wgNamespacesToBeSearchedDefault, $wgNamespacesToBeSearchedProject;
-
- return array_keys( $wgNamespacesToBeSearchedDefault +
- $wgNamespacesToBeSearchedProject, true);
+ return array_keys( $wgNamespacesToBeSearchedHelp, true );
}
/**
* Return a 'cleaned up' search string
*
- * @return string
- * @access public
+ * @param $text String
+ * @return String
*/
function filter( $text ) {
$lc = $this->legalSearchChars();
@@ -358,11 +378,11 @@ class SearchEngine {
/**
* Create or update the search index record for the given page.
* Title and text should be pre-processed.
+ * STUB
*
- * @param int $id
- * @param string $title
- * @param string $text
- * @abstract
+ * @param $id Integer
+ * @param $title String
+ * @param $text String
*/
function update( $id, $title, $text ) {
// no-op
@@ -371,10 +391,10 @@ class SearchEngine {
/**
* Update a search index record's title only.
* Title should be pre-processed.
+ * STUB
*
- * @param int $id
- * @param string $title
- * @abstract
+ * @param $id Integer
+ * @param $title String
*/
function updateTitle( $id, $title ) {
// no-op
@@ -383,8 +403,7 @@ class SearchEngine {
/**
* Get OpenSearch suggestion template
*
- * @return string
- * @static
+ * @return String
*/
public static function getOpenSearchTemplate() {
global $wgOpenSearchTemplate, $wgServer, $wgScriptPath;
@@ -400,8 +419,7 @@ class SearchEngine {
/**
* Get internal MediaWiki Suggest template
*
- * @return string
- * @static
+ * @return String
*/
public static function getMWSuggestTemplate() {
global $wgMWSuggestTemplate, $wgServer, $wgScriptPath;
@@ -419,10 +437,9 @@ class SearchResultSet {
/**
* Fetch an array of regular expression fragments for matching
* the search terms as parsed by this engine in a text extract.
+ * STUB
*
- * @return array
- * @access public
- * @abstract
+ * @return Array
*/
function termMatches() {
return array();
@@ -434,8 +451,9 @@ class SearchResultSet {
/**
* Return true if results are included in this result set.
- * @return bool
- * @abstract
+ * STUB
+ *
+ * @return Boolean
*/
function hasResults() {
return false;
@@ -449,8 +467,7 @@ class SearchResultSet {
*
* Return null if no total hits number is supported.
*
- * @return int
- * @access public
+ * @return Integer
*/
function getTotalHits() {
return null;
@@ -460,22 +477,21 @@ class SearchResultSet {
* Some search modes return a suggested alternate term if there are
* no exact hits. Returns true if there is one on this set.
*
- * @return bool
- * @access public
+ * @return Boolean
*/
function hasSuggestion() {
return false;
}
/**
- * @return string suggested query, null if none
+ * @return String: suggested query, null if none
*/
function getSuggestionQuery(){
return null;
}
/**
- * @return string HTML highlighted suggested query, '' if none
+ * @return String: HTML highlighted suggested query, '' if none
*/
function getSuggestionSnippet(){
return '';
@@ -485,7 +501,7 @@ class SearchResultSet {
* Return information about how and from where the results were fetched,
* should be useful for diagnostics and debugging
*
- * @return string
+ * @return String
*/
function getInfo() {
return null;
@@ -503,7 +519,7 @@ class SearchResultSet {
/**
* Check if there are results on other wikis
*
- * @return boolean
+ * @return Boolean
*/
function hasInterwikiResults() {
return $this->getInterwikiResults() != null;
@@ -512,9 +528,9 @@ class SearchResultSet {
/**
* Fetches next search result, or false.
+ * STUB
+ *
* @return SearchResult
- * @access public
- * @abstract
*/
function next() {
return false;
@@ -522,13 +538,43 @@ class SearchResultSet {
/**
* Frees the result set, if applicable.
- * @ access public
*/
function free() {
// ...
}
}
+/**
+ * This class is used for different SQL-based search engines shipped with MediaWiki
+ */
+class SqlSearchResultSet extends SearchResultSet {
+ function __construct( $resultSet, $terms ) {
+ $this->mResultSet = $resultSet;
+ $this->mTerms = $terms;
+ }
+
+ function termMatches() {
+ return $this->mTerms;
+ }
+
+ function numRows() {
+ return $this->mResultSet->numRows();
+ }
+
+ function next() {
+ if ($this->mResultSet === false )
+ return false;
+
+ $row = $this->mResultSet->fetchObject();
+ if ($row === false)
+ return false;
+ return new SearchResult($row);
+ }
+
+ function free() {
+ $this->mResultSet->free();
+ }
+}
/**
* @ingroup Search
@@ -539,9 +585,9 @@ class SearchResultTooMany {
/**
- * @fixme This class is horribly factored. It would probably be better to have
- * a useful base class to which you pass some standard information, then let
- * the fancy self-highlighters extend that.
+ * @todo Fixme: This class is horribly factored. It would probably be better to
+ * have a useful base class to which you pass some standard information, then
+ * let the fancy self-highlighters extend that.
* @ingroup Search
*/
class SearchResult {
@@ -560,8 +606,7 @@ class SearchResult {
/**
* Check if this is result points to an invalid title
*
- * @return boolean
- * @access public
+ * @return Boolean
*/
function isBrokenTitle(){
if( is_null($this->mTitle) )
@@ -572,8 +617,7 @@ class SearchResult {
/**
* Check if target page is missing, happens when index is out of date
*
- * @return boolean
- * @access public
+ * @return Boolean
*/
function isMissingRevision(){
return !$this->mRevision && !$this->mImage;
@@ -581,14 +625,13 @@ class SearchResult {
/**
* @return Title
- * @access public
*/
function getTitle() {
return $this->mTitle;
}
/**
- * @return double or null if not supported
+ * @return Double or null if not supported
*/
function getScore() {
return null;
@@ -608,8 +651,8 @@ class SearchResult {
}
/**
- * @param array $terms terms to highlight
- * @return string highlighted text snippet, null (and not '') if not supported
+ * @param $terms Array: terms to highlight
+ * @return String: highlighted text snippet, null (and not '') if not supported
*/
function getTextSnippet($terms){
global $wgUser, $wgAdvancedSearchHighlighting;
@@ -623,16 +666,16 @@ class SearchResult {
}
/**
- * @param array $terms terms to highlight
- * @return string highlighted title, '' if not supported
+ * @param $terms Array: terms to highlight
+ * @return String: highlighted title, '' if not supported
*/
function getTitleSnippet($terms){
return '';
}
/**
- * @param array $terms terms to highlight
- * @return string highlighted redirect name (redirect to this page), '' if none or not supported
+ * @param $terms Array: terms to highlight
+ * @return String: highlighted redirect name (redirect to this page), '' if none or not supported
*/
function getRedirectSnippet($terms){
return '';
@@ -660,7 +703,7 @@ class SearchResult {
}
/**
- * @return string timestamp
+ * @return String: timestamp
*/
function getTimestamp(){
if( $this->mRevision )
@@ -671,7 +714,7 @@ class SearchResult {
}
/**
- * @return int number of words
+ * @return Integer: number of words
*/
function getWordCount(){
$this->initText();
@@ -679,7 +722,7 @@ class SearchResult {
}
/**
- * @return int size in bytes
+ * @return Integer: size in bytes
*/
function getByteSize(){
$this->initText();
@@ -687,14 +730,14 @@ class SearchResult {
}
/**
- * @return boolean if hit has related articles
+ * @return Boolean if hit has related articles
*/
function hasRelated(){
return false;
}
/**
- * @return interwiki prefix of the title (return iw even if title is broken)
+ * @return String: interwiki prefix of the title (return iw even if title is broken)
*/
function getInterwikiPrefix(){
return '';
@@ -716,11 +759,11 @@ class SearchHighlighter {
/**
* Default implementation of wikitext highlighting
*
- * @param string $text
- * @param array $terms Terms to highlight (unescaped)
- * @param int $contextlines
- * @param int $contextchars
- * @return string
+ * @param $text String
+ * @param $terms Array: terms to highlight (unescaped)
+ * @param $contextlines Integer
+ * @param $contextchars Integer
+ * @return String
*/
public function highlightText( $text, $terms, $contextlines, $contextchars ) {
global $wgLang, $wgContLang;
@@ -958,9 +1001,9 @@ class SearchHighlighter {
/**
* Split text into lines and add it to extracts array
*
- * @param array $extracts index -> $line
- * @param int $count
- * @param string $text
+ * @param $extracts Array: index -> $line
+ * @param $count Integer
+ * @param $text String
*/
function splitAndAdd(&$extracts, &$count, $text){
$split = explode( "\n", $this->mCleanWikitext? $this->removeWiki($text) : $text );
@@ -974,7 +1017,7 @@ class SearchHighlighter {
/**
* Do manual case conversion for non-ascii chars
*
- * @param unknown_type $matches
+ * @param $matches Array
*/
function caseCallback($matches){
global $wgContLang;
@@ -987,12 +1030,12 @@ class SearchHighlighter {
/**
* Extract part of the text from start to end, but by
* not chopping up words
- * @param string $text
- * @param int $start
- * @param int $end
- * @param int $posStart (out) actual start position
- * @param int $posEnd (out) actual end position
- * @return string
+ * @param $text String
+ * @param $start Integer
+ * @param $end Integer
+ * @param $posStart Integer: (out) actual start position
+ * @param $posEnd Integer: (out) actual end position
+ * @return String
*/
function extract($text, $start, $end, &$posStart = null, &$posEnd = null ){
global $wgContLang;
@@ -1018,10 +1061,10 @@ class SearchHighlighter {
/**
* Find a nonletter near a point (index) in the text
*
- * @param string $text
- * @param int $point
- * @param int $offset to found index
- * @return int nearest nonletter index, or beginning of utf8 char if none
+ * @param $text String
+ * @param $point Integer
+ * @param $offset Integer: offset to found index
+ * @return Integer: nearest nonletter index, or beginning of utf8 char if none
*/
function position($text, $point, $offset=0 ){
$tolerance = 10;
@@ -1048,12 +1091,12 @@ class SearchHighlighter {
/**
* Search extracts for a pattern, and return snippets
*
- * @param string $pattern regexp for matching lines
- * @param array $extracts extracts to search
- * @param int $linesleft number of extracts to make
- * @param int $contextchars length of snippet
- * @param array $out map for highlighted snippets
- * @param array $offsets map of starting points of snippets
+ * @param $pattern String: regexp for matching lines
+ * @param $extracts Array: extracts to search
+ * @param $linesleft Integer: number of extracts to make
+ * @param $contextchars Integer: length of snippet
+ * @param $out Array: map for highlighted snippets
+ * @param $offsets Array: map of starting points of snippets
* @protected
*/
function process( $pattern, $extracts, &$linesleft, &$contextchars, &$out, &$offsets ){
@@ -1120,7 +1163,7 @@ class SearchHighlighter {
* callback to replace [[target|caption]] kind of links, if
* the target is category or image, leave it
*
- * @param array $matches
+ * @param $matches Array
*/
function linkReplace($matches){
$colon = strpos( $matches[1], ':' );
@@ -1140,11 +1183,11 @@ class SearchHighlighter {
* Simple & fast snippet extraction, but gives completely unrelevant
* snippets
*
- * @param string $text
- * @param array $terms
- * @param int $contextlines
- * @param int $contextchars
- * @return string
+ * @param $text String
+ * @param $terms Array
+ * @param $contextlines Integer
+ * @param $contextchars Integer
+ * @return String
*/
public function highlightSimple( $text, $terms, $contextlines, $contextchars ) {
global $wgLang, $wgContLang;
@@ -1196,7 +1239,7 @@ class SearchHighlighter {
/**
* Dummy class to be used when non-supported Database engine is present.
- * @fixme Dummy class should probably try something at least mildly useful,
+ * @todo Fixme: dummy class should probably try something at least mildly useful,
* such as a LIKE search through titles.
* @ingroup Search
*/
diff --git a/includes/SearchIBM_DB2.php b/includes/search/SearchIBM_DB2.php
index 57813a73..d7587186 100644
--- a/includes/SearchIBM_DB2.php
+++ b/includes/search/SearchIBM_DB2.php
@@ -34,32 +34,29 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Perform a full text search query and return a result set.
*
- * @param string $term - Raw search term
- * @return IBM_DB2SearchResultSet
- * @access public
+ * @param $term String: raw search term
+ * @return SqlSearchResultSet
*/
function searchText( $term ) {
$resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true)));
- return new IBM_DB2SearchResultSet($resultSet, $this->searchTerms);
+ return new SqlSearchResultSet($resultSet, $this->searchTerms);
}
/**
* Perform a title-only search query and return a result set.
*
- * @param string $term - Raw search term
- * @return IBM_DB2SearchResultSet
- * @access public
+ * @param $term String: taw search term
+ * @return SqlSearchResultSet
*/
function searchTitle($term) {
$resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false)));
- return new MySQLSearchResultSet($resultSet, $this->searchTerms);
+ return new SqlSearchResultSet($resultSet, $this->searchTerms);
}
/**
* Return a partial WHERE clause to exclude redirects, if so set
- * @return string
- * @private
+ * @return String
*/
function queryRedirect() {
if ($this->showRedirects) {
@@ -71,8 +68,7 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Return a partial WHERE clause to limit the search to the given namespaces
- * @return string
- * @private
+ * @return String
*/
function queryNamespaces() {
if( is_null($this->namespaces) )
@@ -86,8 +82,7 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Return a LIMIT clause to limit results on the query.
- * @return string
- * @private
+ * @return String
*/
function queryLimit($sql) {
return $this->db->limitResult($sql, $this->limit, $this->offset);
@@ -96,8 +91,7 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Does not do anything for generic search engine
* subclasses may define this though
- * @return string
- * @private
+ * @return String
*/
function queryRanking($filteredTerm, $fulltext) {
// requires Net Search Extender or equivalent
@@ -108,9 +102,8 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Construct the full SQL query to do the search.
* The guts shoulds be constructed in queryMain()
- * @param string $filteredTerm
- * @param bool $fulltext
- * @private
+ * @param string $filteredTerm String
+ * @param bool $fulltext Boolean
*/
function getQuery( $filteredTerm, $fulltext ) {
return $this->queryLimit($this->queryMain($filteredTerm, $fulltext) . ' ' .
@@ -122,8 +115,8 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Picks which field to index on, depending on what type of query.
- * @param bool $fulltext
- * @return string
+ * @param $fulltext Boolean
+ * @return String
*/
function getIndexField($fulltext) {
return $fulltext ? 'si_text' : 'si_title';
@@ -132,10 +125,9 @@ class SearchIBM_DB2 extends SearchEngine {
/**
* Get the base part of the search query.
*
- * @param string $filteredTerm
- * @param bool $fulltext
- * @return string
- * @private
+ * @param string $filteredTerm String
+ * @param bool $fulltext Boolean
+ * @return String
*/
function queryMain( $filteredTerm, $fulltext ) {
$match = $this->parseQuery($filteredTerm, $fulltext);
@@ -159,7 +151,17 @@ class SearchIBM_DB2 extends SearchEngine {
if (preg_match_all('/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
$filteredText, $m, PREG_SET_ORDER)) {
foreach($m as $terms) {
- $q[] = $terms[1] . $wgContLang->stripForSearch($terms[2]);
+
+ // Search terms in all variant forms, only
+ // apply on wiki with LanguageConverter
+ $temp_terms = $wgContLang->autoConvertToAllVariants( $terms[2] );
+ if( is_array( $temp_terms )) {
+ $temp_terms = array_unique( array_values( $temp_terms ));
+ foreach( $temp_terms as $t )
+ $q[] = $terms[1] . $wgContLang->normalizeForSearch( $t );
+ }
+ else
+ $q[] = $terms[1] . $wgContLang->normalizeForSearch( $terms[2] );
if (!empty($terms[3])) {
$regexp = preg_quote( $terms[3], '/' );
@@ -185,9 +187,9 @@ class SearchIBM_DB2 extends SearchEngine {
* Create or update the search index record for the given page.
* Title and text should be pre-processed.
*
- * @param int $id
- * @param string $title
- * @param string $text
+ * @param $id Integer
+ * @param $title String
+ * @param $text String
*/
function update($id, $title, $text) {
$dbw = wfGetDB(DB_MASTER);
@@ -207,8 +209,8 @@ class SearchIBM_DB2 extends SearchEngine {
* Update a search index record's title only.
* Title should be pre-processed.
*
- * @param int $id
- * @param string $title
+ * @param $id Integer
+ * @param $title String
*/
function updateTitle($id, $title) {
$dbw = wfGetDB(DB_MASTER);
@@ -220,28 +222,3 @@ class SearchIBM_DB2 extends SearchEngine {
array());
}
}
-
-/**
- * @ingroup Search
- */
-class IBM_DB2SearchResultSet extends SearchResultSet {
- function __construct($resultSet, $terms) {
- $this->mResultSet = $resultSet;
- $this->mTerms = $terms;
- }
-
- function termMatches() {
- return $this->mTerms;
- }
-
- function numRows() {
- return $this->mResultSet->numRows();
- }
-
- function next() {
- $row = $this->mResultSet->fetchObject();
- if ($row === false)
- return false;
- return new SearchResult($row);
- }
-}
diff --git a/includes/search/SearchMySQL.php b/includes/search/SearchMySQL.php
new file mode 100644
index 00000000..0c238be8
--- /dev/null
+++ b/includes/search/SearchMySQL.php
@@ -0,0 +1,412 @@
+<?php
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+/**
+ * @file
+ * @ingroup Search
+ */
+
+/**
+ * Search engine hook for MySQL 4+
+ * @ingroup Search
+ */
+class SearchMySQL extends SearchEngine {
+ var $strictMatching = true;
+ static $mMinSearchLength;
+
+ /** @todo document */
+ function __construct( $db ) {
+ $this->db = $db;
+ }
+
+ /**
+ * Parse the user's query and transform it into an SQL fragment which will
+ * become part of a WHERE clause
+ */
+ function parseQuery( $filteredText, $fulltext ) {
+ global $wgContLang;
+ $lc = SearchEngine::legalSearchChars(); // Minus format chars
+ $searchon = '';
+ $this->searchTerms = array();
+
+ # FIXME: This doesn't handle parenthetical expressions.
+ $m = array();
+ if( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
+ $filteredText, $m, PREG_SET_ORDER ) ) {
+ foreach( $m as $bits ) {
+ @list( /* all */, $modifier, $term, $nonQuoted, $wildcard ) = $bits;
+
+ if( $nonQuoted != '' ) {
+ $term = $nonQuoted;
+ $quote = '';
+ } else {
+ $term = str_replace( '"', '', $term );
+ $quote = '"';
+ }
+
+ if( $searchon !== '' ) $searchon .= ' ';
+ if( $this->strictMatching && ($modifier == '') ) {
+ // If we leave this out, boolean op defaults to OR which is rarely helpful.
+ $modifier = '+';
+ }
+
+ // Some languages such as Serbian store the input form in the search index,
+ // so we may need to search for matches in multiple writing system variants.
+ $convertedVariants = $wgContLang->autoConvertToAllVariants( $term );
+ if( is_array( $convertedVariants ) ) {
+ $variants = array_unique( array_values( $convertedVariants ) );
+ } else {
+ $variants = array( $term );
+ }
+
+ // The low-level search index does some processing on input to work
+ // around problems with minimum lengths and encoding in MySQL's
+ // fulltext engine.
+ // For Chinese this also inserts spaces between adjacent Han characters.
+ $strippedVariants = array_map(
+ array( $wgContLang, 'normalizeForSearch' ),
+ $variants );
+
+ // Some languages such as Chinese force all variants to a canonical
+ // form when stripping to the low-level search index, so to be sure
+ // let's check our variants list for unique items after stripping.
+ $strippedVariants = array_unique( $strippedVariants );
+
+ $searchon .= $modifier;
+ if( count( $strippedVariants) > 1 )
+ $searchon .= '(';
+ foreach( $strippedVariants as $stripped ) {
+ $stripped = $this->normalizeText( $stripped );
+ if( $nonQuoted && strpos( $stripped, ' ' ) !== false ) {
+ // Hack for Chinese: we need to toss in quotes for
+ // multiple-character phrases since normalizeForSearch()
+ // added spaces between them to make word breaks.
+ $stripped = '"' . trim( $stripped ) . '"';
+ }
+ $searchon .= "$quote$stripped$quote$wildcard ";
+ }
+ if( count( $strippedVariants) > 1 )
+ $searchon .= ')';
+
+ // Match individual terms or quoted phrase in result highlighting...
+ // Note that variants will be introduced in a later stage for highlighting!
+ $regexp = $this->regexTerm( $term, $wildcard );
+ $this->searchTerms[] = $regexp;
+ }
+ wfDebug( __METHOD__ . ": Would search with '$searchon'\n" );
+ wfDebug( __METHOD__ . ': Match with /' . implode( '|', $this->searchTerms ) . "/\n" );
+ } else {
+ wfDebug( __METHOD__ . ": Can't understand search query '{$filteredText}'\n" );
+ }
+
+ $searchon = $this->db->strencode( $searchon );
+ $field = $this->getIndexField( $fulltext );
+ return " MATCH($field) AGAINST('$searchon' IN BOOLEAN MODE) ";
+ }
+
+ function regexTerm( $string, $wildcard ) {
+ global $wgContLang;
+
+ $regex = preg_quote( $string, '/' );
+ if( $wgContLang->hasWordBreaks() ) {
+ if( $wildcard ) {
+ // Don't cut off the final bit!
+ $regex = "\b$regex";
+ } else {
+ $regex = "\b$regex\b";
+ }
+ } else {
+ // For Chinese, words may legitimately abut other words in the text literal.
+ // Don't add \b boundary checks... note this could cause false positives
+ // for latin chars.
+ }
+ return $regex;
+ }
+
+ public static function legalSearchChars() {
+ return "\"*" . parent::legalSearchChars();
+ }
+
+ /**
+ * Perform a full text search query and return a result set.
+ *
+ * @param $term String: raw search term
+ * @return MySQLSearchResultSet
+ */
+ function searchText( $term ) {
+ return $this->searchInternal( $term, true );
+ }
+
+ /**
+ * Perform a title-only search query and return a result set.
+ *
+ * @param $term String: raw search term
+ * @return MySQLSearchResultSet
+ */
+ function searchTitle( $term ) {
+ return $this->searchInternal( $term, false );
+ }
+
+ protected function searchInternal( $term, $fulltext ) {
+ global $wgCountTotalSearchHits;
+
+ $filteredTerm = $this->filter( $term );
+ $resultSet = $this->db->query( $this->getQuery( $filteredTerm, $fulltext ) );
+
+ $total = null;
+ if( $wgCountTotalSearchHits ) {
+ $totalResult = $this->db->query( $this->getCountQuery( $filteredTerm, $fulltext ) );
+ $row = $totalResult->fetchObject();
+ if( $row ) {
+ $total = intval( $row->c );
+ }
+ $totalResult->free();
+ }
+
+ return new MySQLSearchResultSet( $resultSet, $this->searchTerms, $total );
+ }
+
+
+ /**
+ * Return a partial WHERE clause to exclude redirects, if so set
+ * @return String
+ */
+ function queryRedirect() {
+ if( $this->showRedirects ) {
+ return '';
+ } else {
+ return 'AND page_is_redirect=0';
+ }
+ }
+
+ /**
+ * Return a partial WHERE clause to limit the search to the given namespaces
+ * @return String
+ */
+ function queryNamespaces() {
+ if( is_null($this->namespaces) )
+ return ''; # search all
+ if ( !count( $this->namespaces ) ) {
+ $namespaces = '0';
+ } else {
+ $namespaces = $this->db->makeList( $this->namespaces );
+ }
+ return 'AND page_namespace IN (' . $namespaces . ')';
+ }
+
+ /**
+ * Return a LIMIT clause to limit results on the query.
+ * @return String
+ */
+ function queryLimit() {
+ return $this->db->limitResult( '', $this->limit, $this->offset );
+ }
+
+ /**
+ * Does not do anything for generic search engine
+ * subclasses may define this though
+ * @return String
+ */
+ function queryRanking( $filteredTerm, $fulltext ) {
+ return '';
+ }
+
+ /**
+ * Construct the full SQL query to do the search.
+ * The guts shoulds be constructed in queryMain()
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
+ */
+ function getQuery( $filteredTerm, $fulltext ) {
+ return $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
+ $this->queryRedirect() . ' ' .
+ $this->queryNamespaces() . ' ' .
+ $this->queryRanking( $filteredTerm, $fulltext ) . ' ' .
+ $this->queryLimit();
+ }
+
+ /**
+ * Picks which field to index on, depending on what type of query.
+ * @param $fulltext Boolean
+ * @return String
+ */
+ function getIndexField( $fulltext ) {
+ return $fulltext ? 'si_text' : 'si_title';
+ }
+
+ /**
+ * Get the base part of the search query.
+ * The actual match syntax will depend on the server
+ * version; MySQL 3 and MySQL 4 have different capabilities
+ * in their fulltext search indexes.
+ *
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
+ * @return String
+ */
+ function queryMain( $filteredTerm, $fulltext ) {
+ $match = $this->parseQuery( $filteredTerm, $fulltext );
+ $page = $this->db->tableName( 'page' );
+ $searchindex = $this->db->tableName( 'searchindex' );
+ return 'SELECT page_id, page_namespace, page_title ' .
+ "FROM $page,$searchindex " .
+ 'WHERE page_id=si_page AND ' . $match;
+ }
+
+ function getCountQuery( $filteredTerm, $fulltext ) {
+ $match = $this->parseQuery( $filteredTerm, $fulltext );
+ $page = $this->db->tableName( 'page' );
+ $searchindex = $this->db->tableName( 'searchindex' );
+ return "SELECT COUNT(*) AS c " .
+ "FROM $page,$searchindex " .
+ 'WHERE page_id=si_page AND ' . $match .
+ $this->queryRedirect() . ' ' .
+ $this->queryNamespaces();
+ }
+
+ /**
+ * Create or update the search index record for the given page.
+ * Title and text should be pre-processed.
+ *
+ * @param $id Integer
+ * @param $title String
+ * @param $text String
+ */
+ function update( $id, $title, $text ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->replace( 'searchindex',
+ array( 'si_page' ),
+ array(
+ 'si_page' => $id,
+ 'si_title' => $this->normalizeText( $title ),
+ 'si_text' => $this->normalizeText( $text )
+ ), __METHOD__ );
+ }
+
+ /**
+ * Update a search index record's title only.
+ * Title should be pre-processed.
+ *
+ * @param $id Integer
+ * @param $title String
+ */
+ function updateTitle( $id, $title ) {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->update( 'searchindex',
+ array( 'si_title' => $this->normalizeText( $title ) ),
+ array( 'si_page' => $id ),
+ __METHOD__,
+ array( $dbw->lowPriorityOption() ) );
+ }
+
+ /**
+ * Converts some characters for MySQL's indexing to grok it correctly,
+ * and pads short words to overcome limitations.
+ */
+ function normalizeText( $string ) {
+ global $wgContLang;
+
+ wfProfileIn( __METHOD__ );
+
+ // Some languages such as Chinese require word segmentation
+ $out = $wgContLang->wordSegmentation( $string );
+
+ // MySQL fulltext index doesn't grok utf-8, so we
+ // need to fold cases and convert to hex
+ $out = preg_replace_callback(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/",
+ array( $this, 'stripForSearchCallback' ),
+ $wgContLang->lc( $out ) );
+
+ // And to add insult to injury, the default indexing
+ // ignores short words... Pad them so we can pass them
+ // through without reconfiguring the server...
+ $minLength = $this->minSearchLength();
+ if( $minLength > 1 ) {
+ $n = $minLength - 1;
+ $out = preg_replace(
+ "/\b(\w{1,$n})\b/",
+ "$1u800",
+ $out );
+ }
+
+ // Periods within things like hostnames and IP addresses
+ // are also important -- we want a search for "example.com"
+ // or "192.168.1.1" to work sanely.
+ //
+ // MySQL's search seems to ignore them, so you'd match on
+ // "example.wikipedia.com" and "192.168.83.1" as well.
+ $out = preg_replace(
+ "/(\w)\.(\w|\*)/u",
+ "$1u82e$2",
+ $out );
+
+ wfProfileOut( __METHOD__ );
+
+ return $out;
+ }
+
+ /**
+ * Armor a case-folded UTF-8 string to get through MySQL's
+ * fulltext search without being mucked up by funny charset
+ * settings or anything else of the sort.
+ */
+ protected function stripForSearchCallback( $matches ) {
+ return 'u8' . bin2hex( $matches[1] );
+ }
+
+ /**
+ * Check MySQL server's ft_min_word_len setting so we know
+ * if we need to pad short words...
+ *
+ * @return int
+ */
+ protected function minSearchLength() {
+ if( is_null( self::$mMinSearchLength ) ) {
+ $sql = "SHOW GLOBAL VARIABLES LIKE 'ft\\_min\\_word\\_len'";
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->query( $sql );
+ $row = $result->fetchObject();
+ $result->free();
+
+ if( $row && $row->Variable_name == 'ft_min_word_len' ) {
+ self::$mMinSearchLength = intval( $row->Value );
+ } else {
+ self::$mMinSearchLength = 0;
+ }
+ }
+ return self::$mMinSearchLength;
+ }
+}
+
+/**
+ * @ingroup Search
+ */
+class MySQLSearchResultSet extends SqlSearchResultSet {
+ function MySQLSearchResultSet( $resultSet, $terms, $totalHits=null ) {
+ parent::__construct( $resultSet, $terms );
+ $this->mTotalHits = $totalHits;
+ }
+
+ function getTotalHits() {
+ return $this->mTotalHits;
+ }
+} \ No newline at end of file
diff --git a/includes/SearchMySQL4.php b/includes/search/SearchMySQL4.php
index 3e2bb2d1..3e2bb2d1 100644
--- a/includes/SearchMySQL4.php
+++ b/includes/search/SearchMySQL4.php
diff --git a/includes/SearchOracle.php b/includes/search/SearchOracle.php
index b48d5e6e..e4c5deee 100644
--- a/includes/SearchOracle.php
+++ b/includes/search/SearchOracle.php
@@ -27,6 +27,34 @@
* @ingroup Search
*/
class SearchOracle extends SearchEngine {
+
+ private $reservedWords = array ('ABOUT' => 1,
+ 'ACCUM' => 1,
+ 'AND' => 1,
+ 'BT' => 1,
+ 'BTG' => 1,
+ 'BTI' => 1,
+ 'BTP' => 1,
+ 'FUZZY' => 1,
+ 'HASPATH' => 1,
+ 'INPATH' => 1,
+ 'MINUS' => 1,
+ 'NEAR' => 1,
+ 'NOT' => 1,
+ 'NT' => 1,
+ 'NTG' => 1,
+ 'NTI' => 1,
+ 'NTP' => 1,
+ 'OR' => 1,
+ 'PT' => 1,
+ 'RT' => 1,
+ 'SQE' => 1,
+ 'SYN' => 1,
+ 'TR' => 1,
+ 'TRSYN' => 1,
+ 'TT' => 1,
+ 'WITHIN' => 1);
+
function __construct($db) {
$this->db = $db;
}
@@ -34,23 +62,27 @@ class SearchOracle extends SearchEngine {
/**
* Perform a full text search query and return a result set.
*
- * @param string $term - Raw search term
- * @return OracleSearchResultSet
- * @access public
+ * @param $term String: raw search term
+ * @return SqlSearchResultSet
*/
function searchText( $term ) {
+ if ($term == '')
+ return new SqlSearchResultSet(false, '');
+
$resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true)));
- return new OracleSearchResultSet($resultSet, $this->searchTerms);
+ return new SqlSearchResultSet($resultSet, $this->searchTerms);
}
/**
* Perform a title-only search query and return a result set.
*
- * @param string $term - Raw search term
- * @return ORacleSearchResultSet
- * @access public
+ * @param $term String: raw search term
+ * @return SqlSearchResultSet
*/
function searchTitle($term) {
+ if ($term == '')
+ return new SqlSearchResultSet(false, '');
+
$resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false)));
return new MySQLSearchResultSet($resultSet, $this->searchTerms);
}
@@ -58,8 +90,7 @@ class SearchOracle extends SearchEngine {
/**
* Return a partial WHERE clause to exclude redirects, if so set
- * @return string
- * @private
+ * @return String
*/
function queryRedirect() {
if ($this->showRedirects) {
@@ -71,8 +102,7 @@ class SearchOracle extends SearchEngine {
/**
* Return a partial WHERE clause to limit the search to the given namespaces
- * @return string
- * @private
+ * @return String
*/
function queryNamespaces() {
if( is_null($this->namespaces) )
@@ -87,8 +117,7 @@ class SearchOracle extends SearchEngine {
/**
* Return a LIMIT clause to limit results on the query.
- * @return string
- * @private
+ * @return String
*/
function queryLimit($sql) {
return $this->db->limitResult($sql, $this->limit, $this->offset);
@@ -97,8 +126,7 @@ class SearchOracle extends SearchEngine {
/**
* Does not do anything for generic search engine
* subclasses may define this though
- * @return string
- * @private
+ * @return String
*/
function queryRanking($filteredTerm, $fulltext) {
return ' ORDER BY score(1)';
@@ -107,9 +135,8 @@ class SearchOracle extends SearchEngine {
/**
* Construct the full SQL query to do the search.
* The guts shoulds be constructed in queryMain()
- * @param string $filteredTerm
- * @param bool $fulltext
- * @private
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
*/
function getQuery( $filteredTerm, $fulltext ) {
return $this->queryLimit($this->queryMain($filteredTerm, $fulltext) . ' ' .
@@ -121,8 +148,8 @@ class SearchOracle extends SearchEngine {
/**
* Picks which field to index on, depending on what type of query.
- * @param bool $fulltext
- * @return string
+ * @param $fulltext Boolean
+ * @return String
*/
function getIndexField($fulltext) {
return $fulltext ? 'si_text' : 'si_title';
@@ -131,10 +158,9 @@ class SearchOracle extends SearchEngine {
/**
* Get the base part of the search query.
*
- * @param string $filteredTerm
- * @param bool $fulltext
- * @return string
- * @private
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
+ * @return String
*/
function queryMain( $filteredTerm, $fulltext ) {
$match = $this->parseQuery($filteredTerm, $fulltext);
@@ -145,8 +171,8 @@ class SearchOracle extends SearchEngine {
'WHERE page_id=si_page AND ' . $match;
}
- /**
- * Parse a user input search string, and return an SQL fragment to be used
+ /**
+ * Parse a user input search string, and return an SQL fragment to be used
* as part of a WHERE clause
*/
function parseQuery($filteredText, $fulltext) {
@@ -156,13 +182,22 @@ class SearchOracle extends SearchEngine {
# FIXME: This doesn't handle parenthetical expressions.
$m = array();
- $q = array();
-
+ $searchon = '';
if (preg_match_all('/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
$filteredText, $m, PREG_SET_ORDER)) {
foreach($m as $terms) {
- $q[] = $terms[1] . $wgContLang->stripForSearch($terms[2]);
-
+ // Search terms in all variant forms, only
+ // apply on wiki with LanguageConverter
+ $temp_terms = $wgContLang->autoConvertToAllVariants( $terms[2] );
+ if( is_array( $temp_terms )) {
+ $temp_terms = array_unique( array_values( $temp_terms ));
+ foreach( $temp_terms as $t ) {
+ $searchon .= ($terms[1] == '-' ? ' ~' : ' & ') . $this->escapeTerm( $t );
+ }
+ }
+ else {
+ $searchon .= ($terms[1] == '-' ? ' ~' : ' & ') . $this->escapeTerm( $terms[2] );
+ }
if (!empty($terms[3])) {
$regexp = preg_quote( $terms[3], '/' );
if ($terms[4])
@@ -174,18 +209,27 @@ class SearchOracle extends SearchEngine {
}
}
- $searchon = $this->db->addQuotes(join(',', $q));
+
+ $searchon = $this->db->addQuotes(ltrim($searchon, ' &'));
$field = $this->getIndexField($fulltext);
return " CONTAINS($field, $searchon, 1) > 0 ";
}
+ private function escapeTerm($t) {
+ global $wgContLang;
+ $t = $wgContLang->normalizeForSearch($t);
+ $t = isset($this->reservedWords[strtoupper($t)]) ? '{'.$t.'}' : $t;
+ $t = preg_replace('/^"(.*)"$/', '($1)', $t);
+ $t = preg_replace('/([-&|])/', '\\\\$1', $t);
+ return $t;
+ }
/**
* Create or update the search index record for the given page.
* Title and text should be pre-processed.
*
- * @param int $id
- * @param string $title
- * @param string $text
+ * @param $id Integer
+ * @param $title String
+ * @param $text String
*/
function update($id, $title, $text) {
$dbw = wfGetDB(DB_MASTER);
@@ -216,29 +260,9 @@ class SearchOracle extends SearchEngine {
'SearchOracle::updateTitle',
array());
}
-}
-
-/**
- * @ingroup Search
- */
-class OracleSearchResultSet extends SearchResultSet {
- function __construct($resultSet, $terms) {
- $this->mResultSet = $resultSet;
- $this->mTerms = $terms;
- }
- function termMatches() {
- return $this->mTerms;
- }
-
- function numRows() {
- return $this->mResultSet->numRows();
- }
- function next() {
- $row = $this->mResultSet->fetchObject();
- if ($row === false)
- return false;
- return new SearchResult($row);
+ public static function legalSearchChars() {
+ return "\"" . parent::legalSearchChars();
}
}
diff --git a/includes/SearchPostgres.php b/includes/search/SearchPostgres.php
index fa9d8420..0006fa82 100644
--- a/includes/SearchPostgres.php
+++ b/includes/search/SearchPostgres.php
@@ -37,9 +37,8 @@ class SearchPostgres extends SearchEngine {
* Currently searches a page's current title (page.page_title) and
* latest revision article text (pagecontent.old_text)
*
- * @param string $term - Raw search term
+ * @param $term String: raw search term
* @return PostgresSearchResultSet
- * @access public
*/
function searchTitle( $term ) {
$q = $this->searchQuery( $term , 'titlevector', 'page_title' );
@@ -130,9 +129,8 @@ class SearchPostgres extends SearchEngine {
/**
* Construct the full SQL query to do the search.
- * @param string $filteredTerm
- * @param string $fulltext
- * @private
+ * @param $filteredTerm String
+ * @param $fulltext String
*/
function searchQuery( $term, $fulltext, $colname ) {
global $wgDBversion;
@@ -232,18 +230,9 @@ class PostgresSearchResult extends SearchResult {
/**
* @ingroup Search
*/
-class PostgresSearchResultSet extends SearchResultSet {
+class PostgresSearchResultSet extends SqlSearchResultSet {
function __construct( $resultSet, $terms ) {
- $this->mResultSet = $resultSet;
- $this->mTerms = $terms;
- }
-
- function termMatches() {
- return $this->mTerms;
- }
-
- function numRows() {
- return $this->mResultSet->numRows();
+ parent::__construct( $resultSet, $terms );
}
function next() {
diff --git a/includes/search/SearchSqlite.php b/includes/search/SearchSqlite.php
new file mode 100644
index 00000000..fb55efec
--- /dev/null
+++ b/includes/search/SearchSqlite.php
@@ -0,0 +1,344 @@
+<?php
+# SQLite search backend, based upon SearchMysql
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+/**
+ * @file
+ * @ingroup Search
+ */
+
+/**
+ * Search engine hook for SQLite
+ * @ingroup Search
+ */
+class SearchSqlite extends SearchEngine {
+ // Cached because SearchUpdate keeps recreating our class
+ private static $fulltextSupported = null;
+
+ /**
+ * Creates an instance of this class
+ * @param $db DatabaseSqlite: database object
+ */
+ function __construct( $db ) {
+ $this->db = $db;
+ }
+
+ /**
+ * Whether fulltext search is supported by current schema
+ * @return Boolean
+ */
+ function fulltextSearchSupported() {
+ if ( self::$fulltextSupported === null ) {
+ self::$fulltextSupported = $this->db->selectField(
+ 'updatelog',
+ 'ul_key',
+ array( 'ul_key' => 'fts3' ),
+ __METHOD__ ) !== false;
+ }
+ return self::$fulltextSupported;
+ }
+
+ /**
+ * Parse the user's query and transform it into an SQL fragment which will
+ * become part of a WHERE clause
+ */
+ function parseQuery( $filteredText, $fulltext ) {
+ global $wgContLang;
+ $lc = SearchEngine::legalSearchChars(); // Minus format chars
+ $searchon = '';
+ $this->searchTerms = array();
+
+ $m = array();
+ if( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
+ $filteredText, $m, PREG_SET_ORDER ) ) {
+ foreach( $m as $bits ) {
+ @list( /* all */, $modifier, $term, $nonQuoted, $wildcard ) = $bits;
+
+ if( $nonQuoted != '' ) {
+ $term = $nonQuoted;
+ $quote = '';
+ } else {
+ $term = str_replace( '"', '', $term );
+ $quote = '"';
+ }
+
+ if( $searchon !== '' ) $searchon .= ' ';
+
+ // Some languages such as Serbian store the input form in the search index,
+ // so we may need to search for matches in multiple writing system variants.
+ $convertedVariants = $wgContLang->autoConvertToAllVariants( $term );
+ if( is_array( $convertedVariants ) ) {
+ $variants = array_unique( array_values( $convertedVariants ) );
+ } else {
+ $variants = array( $term );
+ }
+
+ // The low-level search index does some processing on input to work
+ // around problems with minimum lengths and encoding in MySQL's
+ // fulltext engine.
+ // For Chinese this also inserts spaces between adjacent Han characters.
+ $strippedVariants = array_map(
+ array( $wgContLang, 'normalizeForSearch' ),
+ $variants );
+
+ // Some languages such as Chinese force all variants to a canonical
+ // form when stripping to the low-level search index, so to be sure
+ // let's check our variants list for unique items after stripping.
+ $strippedVariants = array_unique( $strippedVariants );
+
+ $searchon .= $modifier;
+ if( count( $strippedVariants) > 1 )
+ $searchon .= '(';
+ foreach( $strippedVariants as $stripped ) {
+ if( $nonQuoted && strpos( $stripped, ' ' ) !== false ) {
+ // Hack for Chinese: we need to toss in quotes for
+ // multiple-character phrases since normalizeForSearch()
+ // added spaces between them to make word breaks.
+ $stripped = '"' . trim( $stripped ) . '"';
+ }
+ $searchon .= "$quote$stripped$quote$wildcard ";
+ }
+ if( count( $strippedVariants) > 1 )
+ $searchon .= ')';
+
+ // Match individual terms or quoted phrase in result highlighting...
+ // Note that variants will be introduced in a later stage for highlighting!
+ $regexp = $this->regexTerm( $term, $wildcard );
+ $this->searchTerms[] = $regexp;
+ }
+
+ } else {
+ wfDebug( __METHOD__ . ": Can't understand search query '{$filteredText}'\n" );
+ }
+
+ $searchon = $this->db->strencode( $searchon );
+ $field = $this->getIndexField( $fulltext );
+ return " $field MATCH '$searchon' ";
+ }
+
+ function regexTerm( $string, $wildcard ) {
+ global $wgContLang;
+
+ $regex = preg_quote( $string, '/' );
+ if( $wgContLang->hasWordBreaks() ) {
+ if( $wildcard ) {
+ // Don't cut off the final bit!
+ $regex = "\b$regex";
+ } else {
+ $regex = "\b$regex\b";
+ }
+ } else {
+ // For Chinese, words may legitimately abut other words in the text literal.
+ // Don't add \b boundary checks... note this could cause false positives
+ // for latin chars.
+ }
+ return $regex;
+ }
+
+ public static function legalSearchChars() {
+ return "\"*" . parent::legalSearchChars();
+ }
+
+ /**
+ * Perform a full text search query and return a result set.
+ *
+ * @param $term String: raw search term
+ * @return SqliteSearchResultSet
+ */
+ function searchText( $term ) {
+ return $this->searchInternal( $term, true );
+ }
+
+ /**
+ * Perform a title-only search query and return a result set.
+ *
+ * @param $term String: raw search term
+ * @return SqliteSearchResultSet
+ */
+ function searchTitle( $term ) {
+ return $this->searchInternal( $term, false );
+ }
+
+ protected function searchInternal( $term, $fulltext ) {
+ global $wgCountTotalSearchHits, $wgContLang;
+
+ if ( !$this->fulltextSearchSupported() ) {
+ return null;
+ }
+
+ $filteredTerm = $this->filter( $wgContLang->lc( $term ) );
+ $resultSet = $this->db->query( $this->getQuery( $filteredTerm, $fulltext ) );
+
+ $total = null;
+ if( $wgCountTotalSearchHits ) {
+ $totalResult = $this->db->query( $this->getCountQuery( $filteredTerm, $fulltext ) );
+ $row = $totalResult->fetchObject();
+ if( $row ) {
+ $total = intval( $row->c );
+ }
+ $totalResult->free();
+ }
+
+ return new SqliteSearchResultSet( $resultSet, $this->searchTerms, $total );
+ }
+
+
+ /**
+ * Return a partial WHERE clause to exclude redirects, if so set
+ * @return String
+ */
+ function queryRedirect() {
+ if( $this->showRedirects ) {
+ return '';
+ } else {
+ return 'AND page_is_redirect=0';
+ }
+ }
+
+ /**
+ * Return a partial WHERE clause to limit the search to the given namespaces
+ * @return String
+ */
+ function queryNamespaces() {
+ if( is_null($this->namespaces) )
+ return ''; # search all
+ if ( !count( $this->namespaces ) ) {
+ $namespaces = '0';
+ } else {
+ $namespaces = $this->db->makeList( $this->namespaces );
+ }
+ return 'AND page_namespace IN (' . $namespaces . ')';
+ }
+
+ /**
+ * Returns a query with limit for number of results set.
+ * @param $sql String:
+ * @return String
+ */
+ function limitResult( $sql ) {
+ return $this->db->limitResult( $sql, $this->limit, $this->offset );
+ }
+
+ /**
+ * Construct the full SQL query to do the search.
+ * The guts shoulds be constructed in queryMain()
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
+ */
+ function getQuery( $filteredTerm, $fulltext ) {
+ return $this->limitResult(
+ $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
+ $this->queryRedirect() . ' ' .
+ $this->queryNamespaces()
+ );
+ }
+
+ /**
+ * Picks which field to index on, depending on what type of query.
+ * @param $fulltext Boolean
+ * @return String
+ */
+ function getIndexField( $fulltext ) {
+ return $fulltext ? 'si_text' : 'si_title';
+ }
+
+ /**
+ * Get the base part of the search query.
+ *
+ * @param $filteredTerm String
+ * @param $fulltext Boolean
+ * @return String
+ */
+ function queryMain( $filteredTerm, $fulltext ) {
+ $match = $this->parseQuery( $filteredTerm, $fulltext );
+ $page = $this->db->tableName( 'page' );
+ $searchindex = $this->db->tableName( 'searchindex' );
+ return "SELECT $searchindex.rowid, page_namespace, page_title " .
+ "FROM $page,$searchindex " .
+ "WHERE page_id=$searchindex.rowid AND $match";
+ }
+
+ function getCountQuery( $filteredTerm, $fulltext ) {
+ $match = $this->parseQuery( $filteredTerm, $fulltext );
+ $page = $this->db->tableName( 'page' );
+ $searchindex = $this->db->tableName( 'searchindex' );
+ return "SELECT COUNT(*) AS c " .
+ "FROM $page,$searchindex " .
+ "WHERE page_id=$searchindex.rowid AND $match" .
+ $this->queryRedirect() . ' ' .
+ $this->queryNamespaces();
+ }
+
+ /**
+ * Create or update the search index record for the given page.
+ * Title and text should be pre-processed.
+ *
+ * @param $id Integer
+ * @param $title String
+ * @param $text String
+ */
+ function update( $id, $title, $text ) {
+ if ( !$this->fulltextSearchSupported() ) {
+ return;
+ }
+ // @todo: find a method to do it in a single request,
+ // couldn't do it so far due to typelessness of FTS3 tables.
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->delete( 'searchindex', array( 'rowid' => $id ), __METHOD__ );
+
+ $dbw->insert( 'searchindex',
+ array(
+ 'rowid' => $id,
+ 'si_title' => $title,
+ 'si_text' => $text
+ ), __METHOD__ );
+ }
+
+ /**
+ * Update a search index record's title only.
+ * Title should be pre-processed.
+ *
+ * @param $id Integer
+ * @param $title String
+ */
+ function updateTitle( $id, $title ) {
+ if ( !$this->fulltextSearchSupported() ) {
+ return;
+ }
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->update( 'searchindex',
+ array( 'si_title' => $title ),
+ array( 'rowid' => $id ),
+ __METHOD__ );
+ }
+}
+
+/**
+ * @ingroup Search
+ */
+class SqliteSearchResultSet extends SqlSearchResultSet {
+ function SqliteSearchResultSet( $resultSet, $terms, $totalHits=null ) {
+ parent::__construct( $resultSet, $terms );
+ $this->mTotalHits = $totalHits;
+ }
+
+ function getTotalHits() {
+ return $this->mTotalHits;
+ }
+} \ No newline at end of file
diff --git a/includes/SearchUpdate.php b/includes/search/SearchUpdate.php
index 087a8ba5..e30c70e6 100644
--- a/includes/SearchUpdate.php
+++ b/includes/search/SearchUpdate.php
@@ -43,11 +43,11 @@ class SearchUpdate {
}
# Language-specific strip/conversion
- $text = $wgContLang->stripForSearch( $this->mText );
+ $text = $wgContLang->normalizeForSearch( $this->mText );
wfProfileIn( $fname.'-regexps' );
- $text = preg_replace( "/<\\/?\\s*[A-Za-z][A-Za-z0-9]*\\s*([^>]*?)>/",
- ' ', strtolower( " " . $text /*$this->mText*/ . " " ) ); # Strip HTML markup
+ $text = preg_replace( "/<\\/?\\s*[A-Za-z][^>]*?>/",
+ ' ', $wgContLang->lc( " " . $text . " " ) ); # Strip HTML markup
$text = preg_replace( "/(^|\\n)==\\s*([^\\n]+)\\s*==(\\s)/sD",
"\\1\\2 \\2 \\2\\3", $text ); # Emphasize headings
diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php
new file mode 100644
index 00000000..7d907fb5
--- /dev/null
+++ b/includes/specials/SpecialActiveusers.php
@@ -0,0 +1,195 @@
+<?php
+# Copyright (C) 2008 Aaron Schulz
+#
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+/**
+ * This class is used to get a list of active users. The ones with specials
+ * rights (sysop, bureaucrat, developer) will have them displayed
+ * next to their names.
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+class ActiveUsersPager extends UsersPager {
+
+ function __construct( $group = null ) {
+ global $wgRequest, $wgRCMaxAge;
+ $this->RCMaxAge = ceil( $wgRCMaxAge / ( 3600 * 24 ) ); // Constant
+
+ $un = $wgRequest->getText( 'username' );
+ $this->requestedUser = '';
+ if ( $un != '' ) {
+ $username = Title::makeTitleSafe( NS_USER, $un );
+ if( !is_null( $username ) ) {
+ $this->requestedUser = $username->getText();
+ }
+ }
+
+ $this->setupOptions();
+
+ parent::__construct();
+ }
+
+ public function setupOptions() {
+ global $wgRequest;
+
+ $this->opts = new FormOptions();
+
+ $this->opts->add( 'hidebots', false, FormOptions::BOOL );
+ $this->opts->add( 'hidesysops', false, FormOptions::BOOL );
+
+ $this->opts->fetchValuesFromRequest( $wgRequest );
+
+ $this->groups = array();
+ if ($this->opts->getValue('hidebots') == 1)
+ $this->groups['bot'] = true;
+ if ($this->opts->getValue('hidesysops') == 1)
+ $this->groups['sysop'] = true;
+ }
+
+ function getIndexField() {
+ return 'rc_user_text';
+ }
+
+ function getQueryInfo() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $conds = array( 'rc_user > 0' ); // Users - no anons
+ $conds[] = 'ipb_deleted IS NULL'; // don't show hidden names
+ $conds[] = "rc_log_type IS NULL OR rc_log_type != 'newusers'";
+
+ if( $this->requestedUser != '' ) {
+ $conds[] = 'rc_user_text >= ' . $dbr->addQuotes( $this->requestedUser );
+ }
+
+ $query = array(
+ 'tables' => array( 'recentchanges', 'user', 'ipblocks' ),
+ 'fields' => array( 'rc_user_text AS user_name', // inheritance
+ 'rc_user_text', // for Pager
+ 'user_id',
+ 'COUNT(*) AS recentedits',
+ 'MAX(ipb_user) AS blocked'
+ ),
+ 'options' => array(
+ 'GROUP BY' => 'rc_user_text, user_id',
+ 'USE INDEX' => array( 'recentchanges' => 'rc_user_text' )
+ ),
+ 'join_conds' => array(
+ 'user' => array( 'INNER JOIN', 'rc_user_text=user_name' ),
+ 'ipblocks' => array( 'LEFT JOIN', 'user_id=ipb_user AND ipb_auto=0 AND ipb_deleted=1' ),
+ ),
+ 'conds' => $conds
+ );
+ return $query;
+ }
+
+ function formatRow( $row ) {
+ global $wgLang;
+ $userName = $row->user_name;
+
+ $ulinks = $this->getSkin()->userLink( $row->user_id, $userName );
+ $ulinks .= $this->getSkin()->userToolLinks( $row->user_id, $userName );
+
+ $list = array();
+ foreach( self::getGroups( $row->user_id ) as $group ) {
+ if (isset($this->groups[$group]))
+ return;
+ $list[] = self::buildGroupLink( $group );
+ }
+ $groups = $wgLang->commaList( $list );
+
+ $item = wfSpecialList( $ulinks, $groups );
+ $count = wfMsgExt( 'activeusers-count',
+ array( 'parsemag' ),
+ $wgLang->formatNum( $row->recentedits ),
+ $userName,
+ $wgLang->formatNum ( $this->RCMaxAge )
+ );
+ $blocked = $row->blocked ? ' ' . wfMsgExt( 'listusers-blocked', array( 'parsemag' ), $userName ) : '';
+
+ return Html::rawElement( 'li', array(), "{$item} [{$count}]{$blocked}" );
+ }
+
+ function getPageHeader() {
+ global $wgScript, $wgRequest;
+
+ $self = $this->getTitle();
+ $limit = $this->mLimit ? Xml::hidden( 'limit', $this->mLimit ) : '';
+
+ $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ); # Form tag
+ $out .= Xml::fieldset( wfMsg( 'activeusers' ) ) . "\n";
+ $out .= Xml::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
+
+ $out .= Xml::inputLabel( wfMsg( 'activeusers-from' ), 'username', 'offset', 20, $this->requestedUser ) . '<br />';# Username field
+
+ $out .= Xml::checkLabel( wfMsg('activeusers-hidebots'), 'hidebots', 'hidebots', $this->opts->getValue( 'hidebots' ) );
+
+ $out .= Xml::checkLabel( wfMsg('activeusers-hidesysops'), 'hidesysops', 'hidesysops', $this->opts->getValue( 'hidesysops' ) ) . '<br />';
+
+ $out .= Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n";# Submit button and form bottom
+ $out .= Xml::closeElement( 'fieldset' );
+ $out .= Xml::closeElement( 'form' );
+
+ return $out;
+ }
+}
+
+/**
+ * @ingroup SpecialPage
+ */
+class SpecialActiveUsers extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ parent::__construct( 'Activeusers' );
+ }
+
+ /**
+ * Show the special page
+ *
+ * @param $par Mixed: parameter passed to the page or null
+ */
+ public function execute( $par ) {
+ global $wgOut, $wgLang, $wgRCMaxAge;
+
+ $this->setHeaders();
+
+ $up = new ActiveUsersPager();
+
+ # getBody() first to check, if empty
+ $usersbody = $up->getBody();
+
+ $s = Html::rawElement( 'div', array( 'class' => 'mw-activeusers-intro' ),
+ wfMsgExt( 'activeusers-intro', array( 'parsemag', 'escape' ), $wgLang->formatNum( ceil( $wgRCMaxAge / 86400 ) ) )
+ );
+
+ $s .= $up->getPageHeader();
+ if( $usersbody ) {
+ $s .= $up->getNavigationBar();
+ $s .= Html::rawElement( 'ul', array(), $usersbody );
+ $s .= $up->getNavigationBar();
+ } else {
+ $s .= Html::element( 'p', array(), wfMsg( 'activeusers-noresult' ) );
+ }
+
+ $wgOut->addHTML( $s );
+ }
+
+}
diff --git a/includes/specials/SpecialAllmessages.php b/includes/specials/SpecialAllmessages.php
index 38181c08..1745bf6c 100644
--- a/includes/specials/SpecialAllmessages.php
+++ b/includes/specials/SpecialAllmessages.php
@@ -4,233 +4,414 @@
* @file
* @ingroup SpecialPage
*/
+class SpecialAllmessages extends SpecialPage {
-/**
- * Constructor.
- */
-function wfSpecialAllmessages() {
- global $wgOut, $wgRequest, $wgMessageCache, $wgTitle;
- global $wgUseDatabaseMessages, $wgLang;
-
- # The page isn't much use if the MediaWiki namespace is not being used
- if( !$wgUseDatabaseMessages ) {
- $wgOut->addWikiMsg( 'allmessagesnotsupportedDB' );
- return;
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ parent::__construct( 'Allmessages' );
}
- wfProfileIn( __METHOD__ );
+ /**
+ * Show the special page
+ *
+ * @param $par Mixed: parameter passed to the page or null
+ */
+ public function execute( $par ) {
+ global $wgOut, $wgRequest;
- wfProfileIn( __METHOD__ . '-setup' );
- $ot = $wgRequest->getText( 'ot' );
+ $this->setHeaders();
- $navText = wfMsg( 'allmessagestext' );
+ global $wgUseDatabaseMessages;
+ if( !$wgUseDatabaseMessages ) {
+ $wgOut->addWikiMsg( 'allmessagesnotsupportedDB' );
+ return;
+ } else {
+ $this->outputHeader( 'allmessagestext' );
+ }
- # Make sure all extension messages are available
+ $this->filter = $wgRequest->getVal( 'filter', 'all' );
+ $this->prefix = $wgRequest->getVal( 'prefix', '' );
- $wgMessageCache->loadAllMessages();
+ $this->table = new AllmessagesTablePager(
+ $this,
+ $conds = array(),
+ wfGetLangObj( $wgRequest->getVal( 'lang', $par ) )
+ );
- $sortedArray = array_merge( Language::getMessagesFor( 'en' ),
- $wgMessageCache->getExtensionMessagesFor( 'en' ) );
- ksort( $sortedArray );
+ $this->langCode = $this->table->lang->getCode();
+
+ $wgOut->addHTML( $this->buildForm() .
+ $this->table->getNavigationBar() .
+ $this->table->getLimitForm() .
+ $this->table->getBody() .
+ $this->table->getNavigationBar() );
- $messages = array();
- foreach( $sortedArray as $key => $value ) {
- $messages[$key]['enmsg'] = $value;
- $messages[$key]['statmsg'] = wfMsgReal( $key, array(), false, false, false );
- $messages[$key]['msg'] = wfMsgNoTrans( $key );
- $sortedArray[$key] = NULL; // trade bytes from $sortedArray to this
-
}
- unset($sortedArray); // trade bytes from $sortedArray to this
-
- wfProfileOut( __METHOD__ . '-setup' );
-
- wfProfileIn( __METHOD__ . '-output' );
- $wgOut->addScriptFile( 'allmessages.js' );
- if ( $ot == 'php' ) {
- $navText .= wfAllMessagesMakePhp( $messages );
- $wgOut->addHTML( $wgLang->pipeList( array(
- 'PHP',
- '<a href="' . $wgTitle->escapeLocalUrl( 'ot=html' ) . '">HTML</a>',
- '<a href="' . $wgTitle->escapeLocalUrl( 'ot=xml' ) . '">XML</a>' .
- '<pre>' . htmlspecialchars( $navText ) . '</pre>'
- ) ) );
- } else if ( $ot == 'xml' ) {
- $wgOut->disable();
- header( 'Content-type: text/xml' );
- echo wfAllMessagesMakeXml( $messages );
- } else {
- $wgOut->addHTML( $wgLang->pipeList( array(
- '<a href="' . $wgTitle->escapeLocalUrl( 'ot=php' ) . '">PHP</a>',
- 'HTML',
- '<a href="' . $wgTitle->escapeLocalUrl( 'ot=xml' ) . '">XML</a>'
- ) ) );
- $wgOut->addWikiText( $navText );
- $wgOut->addHTML( wfAllMessagesMakeHTMLText( $messages ) );
- }
- wfProfileOut( __METHOD__ . '-output' );
-
- wfProfileOut( __METHOD__ );
-}
-function wfAllMessagesMakeXml( &$messages ) {
- global $wgLang;
- $lang = $wgLang->getCode();
- $txt = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
- $txt .= "<messages lang=\"$lang\">\n";
- foreach( $messages as $key => $m ) {
- $txt .= "\t" . Xml::element( 'message', array( 'name' => $key ), $m['msg'] ) . "\n";
- $messages[$key] = NULL; // trade bytes
- }
- $txt .= "</messages>";
- return $txt;
-}
+ function buildForm() {
+ global $wgScript;
-/**
- * Create the messages array, formatted in PHP to copy to language files.
- * @param $messages Messages array.
- * @return The PHP messages array.
- * @todo Make suitable for language files.
- */
-function wfAllMessagesMakePhp( &$messages ) {
- global $wgLang;
- $txt = "\n\n\$messages = array(\n";
- foreach( $messages as $key => $m ) {
- if( $wgLang->getCode() != 'en' && $m['msg'] == $m['enmsg'] ) {
- continue;
- } else if ( wfEmptyMsg( $key, $m['msg'] ) ) {
- $m['msg'] = '';
- $comment = ' #empty';
- } else {
- $comment = '';
+ $languages = Language::getLanguageNames( false );
+ ksort( $languages );
+
+ $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-allmessages-form' ) ) .
+ Xml::fieldset( wfMsg( 'allmessages-filter-legend' ) ) .
+ Xml::hidden( 'title', $this->getTitle() ) .
+ Xml::openElement( 'table', array( 'class' => 'mw-allmessages-table' ) ) . "\n" .
+ '<tr>
+ <td class="mw-label">' .
+ Xml::label( wfMsg( 'allmessages-prefix' ), 'mw-allmessages-form-prefix' ) .
+ "</td>\n
+ <td class=\"mw-input\">" .
+ Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->prefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
+ "</td>\n
+ </tr>
+ <tr>\n
+ <td class='mw-label'>" .
+ wfMsg( 'allmessages-filter' ) .
+ "</td>\n
+ <td class='mw-input'>" .
+ Xml::radioLabel( wfMsg( 'allmessages-filter-unmodified' ),
+ 'filter',
+ 'unmodified',
+ 'mw-allmessages-form-filter-unmodified',
+ ( $this->filter == 'unmodified' ? true : false )
+ ) .
+ Xml::radioLabel( wfMsg( 'allmessages-filter-all' ),
+ 'filter',
+ 'all',
+ 'mw-allmessages-form-filter-all',
+ ( $this->filter == 'all' ? true : false )
+ ) .
+ Xml::radioLabel( wfMsg( 'allmessages-filter-modified' ),
+ 'filter',
+ 'modified',
+ 'mw-allmessages-form-filter-modified',
+ ( $this->filter == 'modified' ? true : false )
+ ) .
+ "</td>\n
+ </tr>
+ <tr>\n
+ <td class=\"mw-label\">" .
+ Xml::label( wfMsg( 'allmessages-language' ), 'mw-allmessages-form-lang' ) .
+ "</td>\n
+ <td class=\"mw-input\">" .
+ Xml::openElement( 'select', array( 'id' => 'mw-allmessages-form-lang', 'name' => 'lang' ) );
+
+ foreach( $languages as $lang => $name ) {
+ $selected = $lang == $this->langCode ? true : false;
+ $out .= Xml::option( $lang . ' - ' . $name, $lang, $selected ) . "\n";
}
- $txt .= "'$key' => '" . preg_replace( '/(?<!\\\\)\'/', "\'", $m['msg']) . "',$comment\n";
- $messages[$key] = NULL; // trade bytes
+ $out .= Xml::closeElement( 'select' ) .
+ "</td>\n
+ </tr>
+ <tr>\n
+ <td></td>
+ <td>" .
+ Xml::submitButton( wfMsg( 'allmessages-filter-submit' ) ) .
+ "</td>\n
+ </tr>" .
+ Xml::closeElement( 'table' ) .
+ $this->table->getHiddenFields( array( 'title', 'prefix', 'filter', 'lang' ) ) .
+ Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' );
+ return $out;
}
- $txt .= ');';
- return $txt;
}
-/**
- * Create a list of messages, formatted in HTML as a list of messages and values and showing differences between the default language file message and the message in MediaWiki: namespace.
- * @param $messages Messages array.
- * @return The HTML list of messages.
+/* use TablePager for prettified output. We have to pretend that we're
+ * getting data from a table when in fact not all of it comes from the database.
*/
-function wfAllMessagesMakeHTMLText( &$messages ) {
- global $wgLang, $wgContLang, $wgUser;
- wfProfileIn( __METHOD__ );
-
- $sk = $wgUser->getSkin();
- $talk = wfMsg( 'talkpagelinktext' );
-
- $input = Xml::element( 'input', array(
- 'type' => 'text',
- 'id' => 'allmessagesinput',
- 'onkeyup' => 'allmessagesfilter()'
- ), '' );
- $checkbox = Xml::element( 'input', array(
- 'type' => 'button',
- 'value' => wfMsgHtml( 'allmessagesmodified' ),
- 'id' => 'allmessagescheckbox',
- 'onclick' => 'allmessagesmodified()'
- ), '' );
-
- $txt = '<span id="allmessagesfilter" style="display: none;">' . wfMsgHtml( 'allmessagesfilter' ) .
- " {$input}{$checkbox} " . '</span>';
-
- $txt .= '
-<table border="1" cellspacing="0" width="100%" id="allmessagestable">
- <tr>
- <th rowspan="2">' . wfMsgHtml( 'allmessagesname' ) . '</th>
- <th>' . wfMsgHtml( 'allmessagesdefault' ) . '</th>
- </tr>
- <tr>
- <th>' . wfMsgHtml( 'allmessagescurrent' ) . '</th>
- </tr>';
-
- wfProfileIn( __METHOD__ . "-check" );
-
- # This is a nasty hack to avoid doing independent existence checks
- # without sending the links and table through the slow wiki parser.
- $pageExists = array(
- NS_MEDIAWIKI => array(),
- NS_MEDIAWIKI_TALK => array()
- );
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'page',
- array( 'page_namespace', 'page_title' ),
- array( 'page_namespace' => array(NS_MEDIAWIKI,NS_MEDIAWIKI_TALK) ),
- __METHOD__,
- array( 'USE INDEX' => 'name_title' )
- );
- while( $s = $dbr->fetchObject( $res ) ) {
- $pageExists[$s->page_namespace][$s->page_title] = 1;
- }
- $dbr->freeResult( $res );
- wfProfileOut( __METHOD__ . "-check" );
-
- wfProfileIn( __METHOD__ . "-output" );
-
- $i = 0;
-
- foreach( $messages as $key => $m ) {
- $title = $wgLang->ucfirst( $key );
- if( $wgLang->getCode() != $wgContLang->getCode() ) {
- $title .= '/' . $wgLang->getCode();
- }
+class AllmessagesTablePager extends TablePager {
- $titleObj = Title::makeTitle( NS_MEDIAWIKI, $title );
- $talkPage = Title::makeTitle( NS_MEDIAWIKI_TALK, $title );
+ public $mLimitsShown;
- $changed = ( $m['statmsg'] != $m['msg'] );
- $message = htmlspecialchars( $m['statmsg'] );
- $mw = htmlspecialchars( $m['msg'] );
+ function __construct( $page, $conds, $langObj = null ) {
+ parent::__construct();
+ $this->mIndexField = 'am_title';
+ $this->mPage = $page;
+ $this->mConds = $conds;
+ $this->mDefaultDirection = true; // always sort ascending
+ // We want to have an option for people to view *all* the messages,
+ // so they can use Ctrl+F to search them. 5000 is the maximum that
+ // will get through WebRequest::getLimitOffset().
+ $this->mLimitsShown = array( 20, 50, 100, 250, 500, 5000 => wfMsg('limitall') );
- if( array_key_exists( $title, $pageExists[NS_MEDIAWIKI] ) ) {
- $pageLink = $sk->makeKnownLinkObj( $titleObj, "<span id=\"sp-allmessages-i-$i\">" .
- htmlspecialchars( $key ) . '</span>' );
+ global $wgLang, $wgContLang, $wgRequest;
+
+ $this->talk = htmlspecialchars( wfMsg( 'talkpagelinktext' ) );
+
+ $this->lang = ( $langObj ? $langObj : $wgContLang );
+ $this->langcode = $this->lang->getCode();
+ $this->foreign = $this->langcode != $wgContLang->getCode();
+
+ if( $wgRequest->getVal( 'filter', 'all' ) === 'all' ){
+ $this->custom = null; // So won't match in either case
} else {
- $pageLink = $sk->makeBrokenLinkObj( $titleObj, "<span id=\"sp-allmessages-i-$i\">" .
- htmlspecialchars( $key ) . '</span>' );
+ $this->custom = ($wgRequest->getVal( 'filter' ) == 'unmodified');
}
- if( array_key_exists( $title, $pageExists[NS_MEDIAWIKI_TALK] ) ) {
- $talkLink = $sk->makeKnownLinkObj( $talkPage, htmlspecialchars( $talk ) );
+
+ $prefix = $wgLang->ucfirst( $wgRequest->getVal( 'prefix', '' ) );
+ $prefix = $prefix != '' ? Title::makeTitleSafe( NS_MEDIAWIKI, $wgRequest->getVal( 'prefix', null ) ) : null;
+ if( $prefix !== null ){
+ $this->prefix = '/^' . preg_quote( $prefix->getDBkey() ) . '/i';
} else {
- $talkLink = $sk->makeBrokenLinkObj( $talkPage, htmlspecialchars( $talk ) );
+ $this->prefix = false;
}
+ $this->getSkin();
- $anchor = 'msg_' . htmlspecialchars( strtolower( $title ) );
- $anchor = "<a id=\"$anchor\" name=\"$anchor\"></a>";
-
- if( $changed ) {
- $txt .= "
- <tr class=\"orig\" id=\"sp-allmessages-r1-$i\">
- <td rowspan=\"2\">
- $anchor$pageLink<br />$talkLink
- </td><td>
- $message
- </td>
- </tr><tr class=\"new\" id=\"sp-allmessages-r2-$i\">
- <td>
- $mw
- </td>
- </tr>";
+ // The suffix that may be needed for message names if we're in a
+ // different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
+ if( $this->foreign ) {
+ $this->suffix = '/' . $this->langcode;
} else {
- $txt .= "
- <tr class=\"def\" id=\"sp-allmessages-r1-$i\">
- <td>
- $anchor$pageLink<br />$talkLink
- </td><td>
- $mw
- </td>
- </tr>";
+ $this->suffix = '';
}
- $messages[$key] = NULL; // trade bytes
- $i++;
}
- $txt .= '</table>';
- wfProfileOut( __METHOD__ . '-output' );
- wfProfileOut( __METHOD__ );
- return $txt;
+ function getAllMessages( $descending ) {
+ wfProfileIn( __METHOD__ );
+ $messageNames = Language::getLocalisationCache()->getSubitemList( 'en', 'messages' );
+ if( $descending ){
+ rsort( $messageNames );
+ } else {
+ asort( $messageNames );
+ }
+
+ // Normalise message names so they look like page titles
+ $messageNames = array_map( array( $this->lang, 'ucfirst' ), $messageNames );
+ wfProfileIn( __METHOD__ );
+
+ return $messageNames;
+ }
+
+ /**
+ * Determine which of the MediaWiki and MediaWiki_talk namespace pages exist.
+ * Returns array( 'pages' => ..., 'talks' => ... ), where the subarrays have
+ * an entry for each existing page, with the key being the message name and
+ * value arbitrary.
+ */
+ function getCustomisedStatuses( $messageNames ) {
+ wfProfileIn( __METHOD__ . '-db' );
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'page',
+ array( 'page_namespace', 'page_title' ),
+ array( 'page_namespace' => array( NS_MEDIAWIKI, NS_MEDIAWIKI_TALK ) ),
+ __METHOD__,
+ array( 'USE INDEX' => 'name_title' )
+ );
+ $xNames = array_flip( $messageNames );
+
+ $pageFlags = $talkFlags = array();
+
+ while( $s = $dbr->fetchObject( $res ) ) {
+ if( $s->page_namespace == NS_MEDIAWIKI ) {
+ if( $this->foreign ) {
+ $title = explode( '/', $s->page_title );
+ if( count( $title ) === 2 && $this->langcode == $title[1]
+ && isset( $xNames[$title[0]] ) )
+ {
+ $pageFlags["{$title[0]}"] = true;
+ }
+ } elseif( isset( $xNames[$s->page_title] ) ) {
+ $pageFlags[$s->page_title] = true;
+ }
+ } else if( $s->page_namespace == NS_MEDIAWIKI_TALK ){
+ $talkFlags[$s->page_title] = true;
+ }
+ }
+ $dbr->freeResult( $res );
+
+ wfProfileOut( __METHOD__ . '-db' );
+
+ return array( 'pages' => $pageFlags, 'talks' => $talkFlags );
+ }
+
+ /* This function normally does a database query to get the results; we need
+ * to make a pretend result using a FakeResultWrapper.
+ */
+ function reallyDoQuery( $offset, $limit, $descending ) {
+ $result = new FakeResultWrapper( array() );
+
+ $messageNames = $this->getAllMessages( $descending );
+ $statuses = $this->getCustomisedStatuses( $messageNames );
+
+ $count = 0;
+ foreach( $messageNames as $key ) {
+ $customised = isset( $statuses['pages'][$key] );
+ if( $customised !== $this->custom &&
+ ( $descending && ( $key < $offset || !$offset ) || !$descending && $key > $offset ) &&
+ ( ( $this->prefix && preg_match( $this->prefix, $key ) ) || $this->prefix === false )
+ ){
+ $result->result[] = array(
+ 'am_title' => $key,
+ 'am_actual' => wfMsgGetKey( $key, /*useDB*/true, $this->langcode, false ),
+ 'am_default' => wfMsgGetKey( $key, /*useDB*/false, $this->langcode, false ),
+ 'am_customised' => $customised,
+ 'am_talk_exists' => isset( $statuses['talks'][$key] )
+ );
+ $count++;
+ }
+ if( $count == $limit ) break;
+ }
+ return $result;
+ }
+
+ function getStartBody() {
+ return Xml::openElement( 'table', array( 'class' => 'TablePager', 'id' => 'mw-allmessagestable' ) ) . "\n" .
+ "<thead><tr>
+ <th rowspan=\"2\">" .
+ wfMsg( 'allmessagesname' ) . "
+ </th>
+ <th>" .
+ wfMsg( 'allmessagesdefault' ) .
+ "</th>
+ </tr>\n
+ <tr>
+ <th>" .
+ wfMsg( 'allmessagescurrent' ) .
+ "</th>
+ </tr></thead><tbody>\n";
+ }
+
+ function formatValue( $field, $value ){
+ global $wgLang;
+ switch( $field ){
+
+ case 'am_title' :
+
+ $title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
+ $talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
+
+ if( $this->mCurrentRow->am_customised ){
+ $title = $this->mSkin->linkKnown( $title, $wgLang->lcfirst( $value ) );
+ } else {
+ $title = $this->mSkin->link(
+ $title,
+ $wgLang->lcfirst( $value ),
+ array(),
+ array(),
+ array( 'broken' )
+ );
+ }
+ if ( $this->mCurrentRow->am_talk_exists ) {
+ $talk = $this->mSkin->linkKnown( $talk , $this->talk );
+ } else {
+ $talk = $this->mSkin->link(
+ $talk,
+ $this->talk,
+ array(),
+ array(),
+ array( 'broken' )
+ );
+ }
+ return $title . ' (' . $talk . ')';
+
+ case 'am_default' :
+ return Sanitizer::escapeHtmlAllowEntities( $value, ENT_QUOTES );
+ case 'am_actual' :
+ return Sanitizer::escapeHtmlAllowEntities( $value, ENT_QUOTES );
+ }
+ return '';
+ }
+
+ function formatRow( $row ){
+ // Do all the normal stuff
+ $s = parent::formatRow( $row );
+
+ // But if there's a customised message, add that too.
+ if( $row->am_customised ){
+ $s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
+ $formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
+ if ( $formatted == '' ) {
+ $formatted = '&nbsp;';
+ }
+ $s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
+ . "</tr>\n";
+ }
+ return $s;
+ }
+
+ function getRowAttrs( $row, $isSecond = false ){
+ $arr = array();
+ global $wgLang;
+ if( $row->am_customised ){
+ $arr['class'] = 'allmessages-customised';
+ }
+ if( !$isSecond ){
+ $arr['id'] = Sanitizer::escapeId( 'msg_' . $wgLang->lcfirst( $row->am_title ) );
+ }
+ return $arr;
+ }
+
+ function getCellAttrs( $field, $value ){
+ if( $this->mCurrentRow->am_customised && $field == 'am_title' ){
+ return array( 'rowspan' => '2', 'class' => $field );
+ } else {
+ return array( 'class' => $field );
+ }
+ }
+
+ // This is not actually used, as getStartBody is overridden above
+ function getFieldNames() {
+ return array(
+ 'am_title' => wfMsg( 'allmessagesname' ),
+ 'am_default' => wfMsg( 'allmessagesdefault' )
+ );
+ }
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Allmessages', false );
+ }
+ function isFieldSortable( $x ){
+ return false;
+ }
+ function getDefaultSort(){
+ return '';
+ }
+ function getQueryInfo(){
+ return '';
+ }
+}
+/* Overloads the relevant methods of the real ResultsWrapper so it
+ * doesn't go anywhere near an actual database.
+ */
+class FakeResultWrapper extends ResultWrapper {
+
+ var $result = array();
+ var $db = null; // And it's going to stay that way :D
+ var $pos = 0;
+ var $currentRow = null;
+
+ function __construct( $array ){
+ $this->result = $array;
+ }
+
+ function numRows() {
+ return count( $this->result );
+ }
+
+ function fetchRow() {
+ $this->currentRow = $this->result[$this->pos++];
+ return $this->currentRow;
+ }
+
+ function seek( $row ) {
+ $this->pos = $row;
+ }
+
+ function free() {}
+
+ // Callers want to be able to access fields with $this->fieldName
+ function fetchObject(){
+ $this->currentRow = $this->result[$this->pos++];
+ return (object)$this->currentRow;
+ }
+
+ function rewind() {
+ $this->pos = 0;
+ $this->currentRow = null;
+ }
}
diff --git a/includes/specials/SpecialAllpages.php b/includes/specials/SpecialAllpages.php
index bded8835..a36cdca7 100644
--- a/includes/specials/SpecialAllpages.php
+++ b/includes/specials/SpecialAllpages.php
@@ -14,7 +14,7 @@ class SpecialAllpages extends IncludableSpecialPage {
/**
* Maximum number of pages to show on single index subpage.
*/
- protected $maxLineCount = 200;
+ protected $maxLineCount = 100;
/**
* Maximum number of chars to show for an entry.
@@ -48,7 +48,8 @@ class SpecialAllpages extends IncludableSpecialPage {
$namespaces = $wgContLang->getNamespaces();
- $wgOut->setPagetitle( ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces) ) ) ?
+ $wgOut->setPagetitle(
+ ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces) ) ) ?
wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) :
wfMsg( 'allarticles' )
);
@@ -69,53 +70,52 @@ class SpecialAllpages extends IncludableSpecialPage {
* @param string $to dbKey we are ending listing at.
*/
function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '' ) {
- global $wgScript;
- $t = $this->getTitle();
-
- $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
- $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
- $out .= Xml::hidden( 'title', $t->getPrefixedText() );
- $out .= Xml::openElement( 'fieldset' );
- $out .= Xml::element( 'legend', null, wfMsg( 'allpages' ) );
- $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) );
- $out .= "<tr>
- <td class='mw-label'>" .
- Xml::label( wfMsg( 'allpagesfrom' ), 'nsfrom' ) .
- "</td>
- <td class='mw-input'>" .
- Xml::input( 'from', 30, str_replace('_',' ',$from), array( 'id' => 'nsfrom' ) ) .
- "</td>
- </tr>
- <tr>
- <td class='mw-label'>" .
- Xml::label( wfMsg( 'allpagesto' ), 'nsto' ) .
- "</td>
- <td class='mw-input'>" .
- Xml::input( 'to', 30, str_replace('_',' ',$to), array( 'id' => 'nsto' ) ) .
- "</td>
- </tr>
- <tr>
- <td class='mw-label'>" .
- Xml::label( wfMsg( 'namespace' ), 'namespace' ) .
- "</td>
- <td class='mw-input'>" .
- Xml::namespaceSelector( $namespace, null ) . ' ' .
- Xml::submitButton( wfMsg( 'allpagessubmit' ) ) .
- "</td>
- </tr>";
- $out .= Xml::closeElement( 'table' );
- $out .= Xml::closeElement( 'fieldset' );
- $out .= Xml::closeElement( 'form' );
- $out .= Xml::closeElement( 'div' );
- return $out;
+ global $wgScript;
+ $t = $this->getTitle();
+
+ $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
+ $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+ $out .= Xml::hidden( 'title', $t->getPrefixedText() );
+ $out .= Xml::openElement( 'fieldset' );
+ $out .= Xml::element( 'legend', null, wfMsg( 'allpages' ) );
+ $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) );
+ $out .= "<tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'allpagesfrom' ), 'nsfrom' ) .
+ " </td>
+ <td class='mw-input'>" .
+ Xml::input( 'from', 30, str_replace('_',' ',$from), array( 'id' => 'nsfrom' ) ) .
+ " </td>
+</tr>
+<tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'allpagesto' ), 'nsto' ) .
+ " </td>
+ <td class='mw-input'>" .
+ Xml::input( 'to', 30, str_replace('_',' ',$to), array( 'id' => 'nsto' ) ) .
+ " </td>
+</tr>
+<tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'namespace' ), 'namespace' ) .
+ " </td>
+ <td class='mw-input'>" .
+ Xml::namespaceSelector( $namespace, null ) . ' ' .
+ Xml::submitButton( wfMsg( 'allpagessubmit' ) ) .
+ " </td>
+</tr>";
+ $out .= Xml::closeElement( 'table' );
+ $out .= Xml::closeElement( 'fieldset' );
+ $out .= Xml::closeElement( 'form' );
+ $out .= Xml::closeElement( 'div' );
+ return $out;
}
/**
* @param integer $namespace (default NS_MAIN)
*/
function showToplevel( $namespace = NS_MAIN, $from = '', $to = '' ) {
- global $wgOut, $wgContLang;
- $align = $wgContLang->isRtl() ? 'left' : 'right';
+ global $wgOut;
# TODO: Either make this *much* faster or cache the title index points
# in the querycache table.
@@ -126,8 +126,8 @@ class SpecialAllpages extends IncludableSpecialPage {
$from = Title::makeTitleSafe( $namespace, $from );
$to = Title::makeTitleSafe( $namespace, $to );
- $from = ( $from && $from->isLocal() ) ? $from->getDBKey() : null;
- $to = ( $to && $to->isLocal() ) ? $to->getDBKey() : null;
+ $from = ( $from && $from->isLocal() ) ? $from->getDBkey() : null;
+ $to = ( $to && $to->isLocal() ) ? $to->getDBkey() : null;
if( isset($from) )
$where[] = 'page_title >= '.$dbr->addQuotes( $from );
@@ -190,7 +190,7 @@ class SpecialAllpages extends IncludableSpecialPage {
// Instead, display the first section directly.
if( count( $lines ) <= 2 ) {
if( !empty($lines) ) {
- $this->showChunk( $namespace, $lines[0], $lines[count($lines)-1] );
+ $this->showChunk( $namespace, $from, $to );
} else {
$wgOut->addHTML( $this->namespaceForm( $namespace, $from, $to ) );
}
@@ -198,13 +198,13 @@ class SpecialAllpages extends IncludableSpecialPage {
}
# At this point, $lines should contain an even number of elements.
- $out .= "<table class='allpageslist' style='background: inherit;'>";
+ $out .= Xml::openElement( 'table', array( 'class' => 'allpageslist' ) );
while( count ( $lines ) > 0 ) {
$inpoint = array_shift( $lines );
$outpoint = array_shift( $lines );
$out .= $this->showline( $inpoint, $outpoint, $namespace );
}
- $out .= '</table>';
+ $out .= Xml::closeElement( 'table' );
$nsForm = $this->namespaceForm( $namespace, $from, $to );
# Is there more?
@@ -213,11 +213,17 @@ class SpecialAllpages extends IncludableSpecialPage {
} else {
if( isset($from) || isset($to) ) {
global $wgUser;
- $out2 = '<table style="background: inherit;" width="100%" cellpadding="0" cellspacing="0" border="0">';
- $out2 .= '<tr valign="top"><td>' . $nsForm;
- $out2 .= '</td><td align="' . $align . '" style="font-size: smaller; margin-bottom: 1em;">' .
- $wgUser->getSkin()->makeKnownLinkObj( $this->getTitle(), wfMsgHtml ( 'allpages' ) );
- $out2 .= "</td></tr></table>";
+ $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ).
+ '<tr>
+ <td>' .
+ $nsForm .
+ '</td>
+ <td class="mw-allpages-nav">' .
+ $wgUser->getSkin()->link( $this->getTitle(), wfMsgHtml ( 'allpages' ),
+ array(), array(), 'known' ) .
+ "</td>
+ </tr>" .
+ Xml::closeElement( 'table' );
} else {
$out2 = $nsForm;
}
@@ -233,7 +239,6 @@ class SpecialAllpages extends IncludableSpecialPage {
*/
function showline( $inpoint, $outpoint, $namespace = NS_MAIN ) {
global $wgContLang;
- $align = $wgContLang->isRtl() ? 'left' : 'right';
$inpointf = htmlspecialchars( str_replace( '_', ' ', $inpoint ) );
$outpointf = htmlspecialchars( str_replace( '_', ' ', $outpoint ) );
// Don't let the length runaway
@@ -248,7 +253,7 @@ class SpecialAllpages extends IncludableSpecialPage {
"<a href=\"$link\">$inpointf</a></td><td>",
"</td><td><a href=\"$link\">$outpointf</a>"
);
- return '<tr><td align="' . $align . '">'.$out.'</td></tr>';
+ return '<tr><td class="mw-allpages-alphaindexline">' . $out . '</td></tr>';
}
/**
@@ -264,8 +269,6 @@ class SpecialAllpages extends IncludableSpecialPage {
$fromList = $this->getNamespaceKeyAndText($namespace, $from);
$toList = $this->getNamespaceKeyAndText( $namespace, $to );
$namespaces = $wgContLang->getNamespaces();
- $align = $wgContLang->isRtl() ? 'left' : 'right';
-
$n = 0;
if ( !$fromList || !$toList ) {
@@ -299,13 +302,12 @@ class SpecialAllpages extends IncludableSpecialPage {
);
if( $res->numRows() > 0 ) {
- $out = '<table style="background: inherit;" border="0" width="100%">';
-
+ $out = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-chunk' ) );
while( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
$t = Title::makeTitle( $s->page_namespace, $s->page_title );
if( $t ) {
$link = ( $s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
- $sk->makeKnownLinkObj( $t, htmlspecialchars( $t->getText() ), false, false ) .
+ $sk->linkKnown( $t, htmlspecialchars( $t->getText() ) ) .
($s->page_is_redirect ? '</div>' : '' );
} else {
$link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
@@ -316,13 +318,13 @@ class SpecialAllpages extends IncludableSpecialPage {
$out .= "<td width=\"33%\">$link</td>";
$n++;
if( $n % 3 == 0 ) {
- $out .= '</tr>';
+ $out .= "</tr>\n";
}
}
if( ($n % 3) != 0 ) {
- $out .= '</tr>';
+ $out .= "</tr>\n";
}
- $out .= '</table>';
+ $out .= Xml::closeElement( 'table' );
} else {
$out = '';
}
@@ -342,7 +344,9 @@ class SpecialAllpages extends IncludableSpecialPage {
'page_title',
array( 'page_namespace' => $namespace, 'page_title < '.$dbr->addQuotes($from) ),
__METHOD__,
- array( 'ORDER BY' => 'page_title DESC', 'LIMIT' => $this->maxPerPage, 'OFFSET' => ($this->maxPerPage - 1 ) )
+ array( 'ORDER BY' => 'page_title DESC',
+ 'LIMIT' => $this->maxPerPage, 'OFFSET' => ($this->maxPerPage - 1 )
+ )
);
# Get first title of previous complete chunk
@@ -370,28 +374,44 @@ class SpecialAllpages extends IncludableSpecialPage {
$self = $this->getTitle();
$nsForm = $this->namespaceForm( $namespace, $from, $to );
- $out2 = '<table style="background: inherit;" width="100%" cellpadding="0" cellspacing="0" border="0">';
- $out2 .= '<tr valign="top"><td>' . $nsForm;
- $out2 .= '</td><td align="' . $align . '" style="font-size: smaller; margin-bottom: 1em;">' .
- $sk->makeKnownLinkObj( $self,
- wfMsgHtml ( 'allpages' ) );
+ $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ).
+ '<tr>
+ <td>' .
+ $nsForm .
+ '</td>
+ <td class="mw-allpages-nav">' .
+ $sk->link( $self, wfMsgHtml ( 'allpages' ), array(), array(), 'known' );
# Do we put a previous link ?
if( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
- $q = 'from=' . $prevTitle->getPartialUrl()
- . ( $namespace ? '&namespace=' . $namespace : '' );
- $prevLink = $sk->makeKnownLinkObj( $self,
- wfMsgHTML( 'prevpage', htmlspecialchars( $pt ) ), $q );
+ $query = array( 'from' => $prevTitle->getText() );
+
+ if( $namespace )
+ $query['namespace'] = $namespace;
+
+ $prevLink = $sk->linkKnown(
+ $self,
+ htmlspecialchars( wfMsg( 'prevpage', $pt ) ),
+ array(),
+ $query
+ );
$out2 = $wgLang->pipeList( array( $out2, $prevLink ) );
}
if( $n == $this->maxPerPage && $s = $res->fetchObject() ) {
# $s is the first link of the next chunk
$t = Title::MakeTitle($namespace, $s->page_title);
- $q = 'from=' . $t->getPartialUrl()
- . ( $namespace ? '&namespace=' . $namespace : '' );
- $nextLink = $sk->makeKnownLinkObj( $self,
- wfMsgHtml( 'nextpage', htmlspecialchars( $t->getText() ) ), $q );
+ $query = array( 'from' => $t->getText() );
+
+ if( $namespace )
+ $query['namespace'] = $namespace;
+
+ $nextLink = $sk->linkKnown(
+ $self,
+ htmlspecialchars( wfMsg( 'nextpage', $t->getText() ) ),
+ array(),
+ $query
+ );
$out2 = $wgLang->pipeList( array( $out2, $nextLink ) );
}
$out2 .= "</td></tr></table>";
@@ -399,7 +419,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$wgOut->addHTML( $out2 . $out );
if( isset($prevLink) or isset($nextLink) ) {
- $wgOut->addHTML( '<hr /><p style="font-size: smaller; float: ' . $align . '">' );
+ $wgOut->addHTML( '<hr /><p class="mw-allpages-nav">' );
if( isset( $prevLink ) ) {
$wgOut->addHTML( $prevLink );
}
@@ -430,7 +450,7 @@ class SpecialAllpages extends IncludableSpecialPage {
if ( $t && $t->isLocal() ) {
return array( $t->getNamespace(), $t->getDBkey(), $t->getText() );
} else if ( $t ) {
- return NULL;
+ return null;
}
# try again, in case the problem was an empty pagename
@@ -439,7 +459,7 @@ class SpecialAllpages extends IncludableSpecialPage {
if ( $t && $t->isLocal() ) {
return array( $t->getNamespace(), '', '' );
} else {
- return NULL;
+ return null;
}
}
}
diff --git a/includes/specials/SpecialAncientpages.php b/includes/specials/SpecialAncientpages.php
index 188ad914..92192435 100644
--- a/includes/specials/SpecialAncientpages.php
+++ b/includes/specials/SpecialAncientpages.php
@@ -25,8 +25,25 @@ class AncientPagesPage extends QueryPage {
$db = wfGetDB( DB_SLAVE );
$page = $db->tableName( 'page' );
$revision = $db->tableName( 'revision' );
- $epoch = $wgDBtype == 'mysql' ? 'UNIX_TIMESTAMP(rev_timestamp)' :
- 'EXTRACT(epoch FROM rev_timestamp)';
+
+ switch ($wgDBtype) {
+ case 'mysql':
+ $epoch = 'UNIX_TIMESTAMP(rev_timestamp)';
+ break;
+ case 'ibm_db2':
+ // TODO implement proper conversion to a Unix epoch
+ $epoch = 'rev_timestamp';
+ break;
+ case 'oracle':
+ $epoch = '((trunc(rev_timestamp) - to_date(\'19700101\',\'YYYYMMDD\')) * 86400)';
+ break;
+ case 'sqlite':
+ $epoch = 'rev_timestamp';
+ break;
+ default:
+ $epoch = 'EXTRACT(epoch FROM rev_timestamp)';
+ }
+
return
"SELECT 'Ancientpages' as type,
page_namespace as namespace,
@@ -46,8 +63,11 @@ class AncientPagesPage extends QueryPage {
$d = $wgLang->timeanddate( wfTimestamp( TS_MW, $result->value ), true );
$title = Title::makeTitle( $result->namespace, $result->title );
- $link = $skin->makeKnownLinkObj( $title, htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) ) );
- return wfSpecialList($link, $d);
+ $link = $skin->linkKnown(
+ $title,
+ htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
+ );
+ return wfSpecialList($link, htmlspecialchars($d) );
}
}
diff --git a/includes/specials/SpecialBlankpage.php b/includes/specials/SpecialBlankpage.php
index 29d6b96c..e1fadd02 100644
--- a/includes/specials/SpecialBlankpage.php
+++ b/includes/specials/SpecialBlankpage.php
@@ -1,6 +1,17 @@
<?php
-
-function wfSpecialBlankpage() {
- global $wgOut;
- $wgOut->addWikiMsg('intentionallyblankpage');
+/**
+ * Special page designed for basic benchmarking of
+ * MediaWiki since it doesn't really do much.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialBlankpage extends UnlistedSpecialPage {
+ public function __construct() {
+ parent::__construct( 'Blankpage' );
+ }
+ public function execute( $par ) {
+ global $wgOut;
+ $this->setHeaders();
+ $wgOut->addWikiMsg('intentionallyblankpage');
+ }
}
diff --git a/includes/specials/SpecialBlockip.php b/includes/specials/SpecialBlockip.php
index f002e570..16720dd1 100644
--- a/includes/specials/SpecialBlockip.php
+++ b/includes/specials/SpecialBlockip.php
@@ -17,7 +17,6 @@ function wfSpecialBlockip( $par ) {
$wgOut->readOnlyPage();
return;
}
-
# Permission check
if( !$wgUser->isAllowed( 'block' ) ) {
$wgOut->permissionRequired( 'block' );
@@ -27,9 +26,9 @@ function wfSpecialBlockip( $par ) {
$ipb = new IPBlockForm( $par );
$action = $wgRequest->getVal( 'action' );
- if ( 'success' == $action ) {
+ if( 'success' == $action ) {
$ipb->showSuccess();
- } else if ( $wgRequest->wasPosted() && 'submit' == $action &&
+ } elseif( $wgRequest->wasPosted() && 'submit' == $action &&
$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
$ipb->doSubmit();
} else {
@@ -44,18 +43,17 @@ function wfSpecialBlockip( $par ) {
*/
class IPBlockForm {
var $BlockAddress, $BlockExpiry, $BlockReason;
-# var $BlockEmail;
// The maximum number of edits a user can have and still be hidden
const HIDEUSER_CONTRIBLIMIT = 1000;
- function IPBlockForm( $par ) {
+ public function __construct( $par ) {
global $wgRequest, $wgUser, $wgBlockAllowsUTEdit;
$this->BlockAddress = $wgRequest->getVal( 'wpBlockAddress', $wgRequest->getVal( 'ip', $par ) );
$this->BlockAddress = strtr( $this->BlockAddress, '_', ' ' );
$this->BlockReason = $wgRequest->getText( 'wpBlockReason' );
$this->BlockReasonList = $wgRequest->getText( 'wpBlockReasonList' );
- $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg('ipbotheroption') );
+ $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg( 'ipbotheroption' ) );
$this->BlockOther = $wgRequest->getVal( 'wpBlockOther', '' );
# Unchecked checkboxes are not included in the form data at all, so having one
@@ -64,21 +62,30 @@ class IPBlockForm {
$this->BlockAnonOnly = $wgRequest->getBool( 'wpAnonOnly', $byDefault );
$this->BlockCreateAccount = $wgRequest->getBool( 'wpCreateAccount', $byDefault );
$this->BlockEnableAutoblock = $wgRequest->getBool( 'wpEnableAutoblock', $byDefault );
- $this->BlockEmail = $wgRequest->getBool( 'wpEmailBan', false );
- $this->BlockWatchUser = $wgRequest->getBool( 'wpWatchUser', false );
- # Re-check user's rights to hide names, very serious, defaults to 0
- $this->BlockHideName = ( $wgRequest->getBool( 'wpHideName', 0 ) && $wgUser->isAllowed( 'hideuser' ) ) ? 1 : 0;
+ $this->BlockEmail = false;
+ if( self::canBlockEmail( $wgUser ) ) {
+ $this->BlockEmail = $wgRequest->getBool( 'wpEmailBan', false );
+ }
+ $this->BlockWatchUser = $wgRequest->getBool( 'wpWatchUser', false ) && $wgUser->isLoggedIn();
+ # Re-check user's rights to hide names, very serious, defaults to null
+ if( $wgUser->isAllowed( 'hideuser' ) ) {
+ $this->BlockHideName = $wgRequest->getBool( 'wpHideName', null );
+ } else {
+ $this->BlockHideName = false;
+ }
$this->BlockAllowUsertalk = ( $wgRequest->getBool( 'wpAllowUsertalk', $byDefault ) && $wgBlockAllowsUTEdit );
$this->BlockReblock = $wgRequest->getBool( 'wpChangeBlock', false );
+
+ $this->wasPosted = $wgRequest->wasPosted();
}
- function showForm( $err ) {
+ public function showForm( $err ) {
global $wgOut, $wgUser, $wgSysopUserBans;
- $wgOut->setPagetitle( wfMsg( 'blockip' ) );
+ $wgOut->setPageTitle( wfMsg( 'blockip-title' ) );
$wgOut->addWikiMsg( 'blockiptext' );
- if($wgSysopUserBans) {
+ if( $wgSysopUserBans ) {
$mIpaddress = Xml::label( wfMsg( 'ipadressorusername' ), 'mw-bi-target' );
} else {
$mIpaddress = Xml::label( wfMsg( 'ipaddress' ), 'mw-bi-target' );
@@ -90,25 +97,28 @@ class IPBlockForm {
$titleObj = SpecialPage::getTitleFor( 'Blockip' );
$user = User::newFromName( $this->BlockAddress );
-
+
$alreadyBlocked = false;
- if ( $err && $err[0] != 'ipb_already_blocked' ) {
- $key = array_shift($err);
- $msg = wfMsgReal($key, $err);
+ $otherBlockedMsgs = array();
+ if( $err && $err[0] != 'ipb_already_blocked' ) {
+ $key = array_shift( $err );
+ $msg = wfMsgReal( $key, $err );
$wgOut->setSubtitle( wfMsgHtml( 'formerror' ) );
$wgOut->addHTML( Xml::tags( 'p', array( 'class' => 'error' ), $msg ) );
- } elseif ( $this->BlockAddress ) {
- $userId = 0;
- if ( is_object( $user ) )
- $userId = $user->getId();
+ } elseif( $this->BlockAddress ) {
+ # Get other blocks, i.e. from GlobalBlocking or TorBlock extension
+ wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockedMsgs, $this->BlockAddress ) );
+
+ $userId = is_object( $user ) ? $user->getId() : 0;
$currentBlock = Block::newFromDB( $this->BlockAddress, $userId );
- if ( !is_null($currentBlock) && !$currentBlock->mAuto && # The block exists and isn't an autoblock
+ if( !is_null( $currentBlock ) && !$currentBlock->mAuto && # The block exists and isn't an autoblock
( $currentBlock->mRangeStart == $currentBlock->mRangeEnd || # The block isn't a rangeblock
# or if it is, the range is what we're about to block
- ( $currentBlock->mAddress == $this->BlockAddress ) ) ) {
- $wgOut->addWikiMsg( 'ipb-needreblock', $this->BlockAddress );
- $alreadyBlocked = true;
- # Set the block form settings to the existing block
+ ( $currentBlock->mAddress == $this->BlockAddress ) )
+ ) {
+ $alreadyBlocked = true;
+ # Set the block form settings to the existing block
+ if( !$this->wasPosted ) {
$this->BlockAnonOnly = $currentBlock->mAnonOnly;
$this->BlockCreateAccount = $currentBlock->mCreateAccount;
$this->BlockEnableAutoblock = $currentBlock->mEnableAutoblock;
@@ -121,21 +131,38 @@ class IPBlockForm {
$this->BlockOther = wfTimestamp( TS_ISO_8601, $currentBlock->mExpiry );
}
$this->BlockReason = $currentBlock->mReason;
+ }
+ }
+ }
+
+ # Show other blocks from extensions, i.e. GlockBlocking and TorBlock
+ if( count( $otherBlockedMsgs ) ) {
+ $wgOut->addHTML(
+ Html::rawElement( 'h2', array(), wfMsgExt( 'ipb-otherblocks-header', 'parseinline', count( $otherBlockedMsgs ) ) ) . "\n"
+ );
+ $list = '';
+ foreach( $otherBlockedMsgs as $link ) {
+ $list .= Html::rawElement( 'li', array(), $link ) . "\n";
}
+ $wgOut->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-blockip-alreadyblocked' ), $list ) . "\n" );
+ }
+
+ # Username/IP is blocked already locally
+ if( $alreadyBlocked ) {
+ $wgOut->addWikiMsg( 'ipb-needreblock', $this->BlockAddress );
}
$scBlockExpiryOptions = wfMsgForContent( 'ipboptions' );
$showblockoptions = $scBlockExpiryOptions != '-';
- if (!$showblockoptions)
- $mIpbother = $mIpbexpiry;
+ if( !$showblockoptions ) $mIpbother = $mIpbexpiry;
$blockExpiryFormOptions = Xml::option( wfMsg( 'ipbotheroption' ), 'other' );
- foreach (explode(',', $scBlockExpiryOptions) as $option) {
- if ( strpos($option, ":") === false ) $option = "$option:$option";
- list($show, $value) = explode(":", $option);
- $show = htmlspecialchars($show);
- $value = htmlspecialchars($value);
+ foreach( explode( ',', $scBlockExpiryOptions ) as $option ) {
+ if( strpos( $option, ':' ) === false ) $option = "$option:$option";
+ list( $show, $value ) = explode( ':', $option );
+ $show = htmlspecialchars( $show );
+ $value = htmlspecialchars( $value );
$blockExpiryFormOptions .= Xml::option( $show, $value, $this->BlockExpiry === $value ? true : false ) . "\n";
}
@@ -146,25 +173,27 @@ class IPBlockForm {
global $wgStylePath, $wgStyleVersion;
$wgOut->addHTML(
Xml::tags( 'script', array( 'type' => 'text/javascript', 'src' => "$wgStylePath/common/block.js?$wgStyleVersion" ), '' ) .
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL( "action=submit" ), 'id' => 'blockip' ) ) .
+ Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL( 'action=submit' ), 'id' => 'blockip' ) ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'blockip-legend' ) ) .
- Xml::openElement( 'table', array ( 'border' => '0', 'id' => 'mw-blockip-table' ) ) .
+ Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-blockip-table' ) ) .
"<tr>
<td class='mw-label'>
{$mIpaddress}
</td>
<td class='mw-input'>" .
- Xml::input( 'wpBlockAddress', 45, $this->BlockAddress,
- array(
- 'tabindex' => '1',
- 'id' => 'mw-bi-target',
- 'onchange' => 'updateBlockOptions()' ) ). "
+ Html::input( 'wpBlockAddress', $this->BlockAddress, 'text', array(
+ 'tabindex' => '1',
+ 'id' => 'mw-bi-target',
+ 'onchange' => 'updateBlockOptions()',
+ 'size' => '45',
+ 'required' => ''
+ ) + ( $this->BlockAddress ? array() : array( 'autofocus' ) ) ). "
</td>
</tr>
<tr>"
);
- if ( $showblockoptions ) {
+ if( $showblockoptions ) {
$wgOut->addHTML("
<td class='mw-label'>
{$mIpbexpiry}
@@ -204,8 +233,12 @@ class IPBlockForm {
{$mIpbreason}
</td>
<td class='mw-input'>" .
- Xml::input( 'wpBlockReason', 45, $this->BlockReason,
- array( 'tabindex' => '5', 'id' => 'mw-bi-reason', 'maxlength'=> '200' ) ) . "
+ Html::input( 'wpBlockReason', $this->BlockReason, 'text', array(
+ 'tabindex' => '5',
+ 'id' => 'mw-bi-reason',
+ 'maxlength' => '200',
+ 'size' => '45'
+ ) + ( $this->BlockAddress ? array( 'autofocus' ) : array() ) ) . "
</td>
</tr>
<tr id='wpAnonOnlyRow'>
@@ -234,36 +267,37 @@ class IPBlockForm {
</tr>"
);
- global $wgSysopEmailBans, $wgBlockAllowsUTEdit;
- if ( $wgSysopEmailBans && $wgUser->isAllowed( 'blockemail' ) ) {
+ if( self::canBlockEmail( $wgUser ) ) {
$wgOut->addHTML("
<tr id='wpEnableEmailBan'>
<td>&nbsp;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbemailban' ),
'wpEmailBan', 'wpEmailBan', $this->BlockEmail,
- array( 'tabindex' => '9' )) . "
+ array( 'tabindex' => '9' ) ) . "
</td>
</tr>"
);
}
// Allow some users to hide name from block log, blocklist and listusers
- if ( $wgUser->isAllowed( 'hideuser' ) ) {
+ if( $wgUser->isAllowed( 'hideuser' ) ) {
$wgOut->addHTML("
<tr id='wpEnableHideUser'>
<td>&nbsp;</td>
<td class='mw-input'><strong>" .
Xml::checkLabel( wfMsg( 'ipbhidename' ),
'wpHideName', 'wpHideName', $this->BlockHideName,
- array( 'tabindex' => '10' ) ) . "
+ array( 'tabindex' => '10' )
+ ) . "
</strong></td>
</tr>"
);
}
-
- # Watchlist their user page?
- $wgOut->addHTML("
+
+ # Watchlist their user page? (Only if user is logged in)
+ if( $wgUser->isLoggedIn() ) {
+ $wgOut->addHTML("
<tr id='wpEnableWatchUser'>
<td>&nbsp;</td>
<td class='mw-input'>" .
@@ -272,7 +306,11 @@ class IPBlockForm {
array( 'tabindex' => '11' ) ) . "
</td>
</tr>"
- );
+ );
+ }
+
+ # Can we explicitly disallow the use of user_talk?
+ global $wgBlockAllowsUTEdit;
if( $wgBlockAllowsUTEdit ){
$wgOut->addHTML("
<tr id='wpAllowUsertalkRow'>
@@ -314,12 +352,22 @@ class IPBlockForm {
}
/**
+ * Can we do an email block?
+ * @param User $user The sysop wanting to make a block
+ * @return boolean
+ */
+ public static function canBlockEmail( $user ) {
+ global $wgEnableUserEmail, $wgSysopEmailBans;
+ return ( $wgEnableUserEmail && $wgSysopEmailBans && $user->isAllowed( 'blockemail' ) );
+ }
+
+ /**
* Backend block code.
* $userID and $expiry will be filled accordingly
* @return array(message key, arguments) on failure, empty array on success
*/
function doBlock( &$userId = null, &$expiry = null ) {
- global $wgUser, $wgSysopUserBans, $wgSysopRangeBans, $wgBlockAllowsUTEdit;
+ global $wgUser, $wgSysopUserBans, $wgSysopRangeBans, $wgBlockAllowsUTEdit, $wgBlockCIDRLimit;
$userId = 0;
# Expand valid IPv6 addresses, usernames are left as is
@@ -330,24 +378,28 @@ class IPBlockForm {
$rxIP = "($rxIP4|$rxIP6)";
# Check for invalid specifications
- if ( !preg_match( "/^$rxIP$/", $this->BlockAddress ) ) {
+ if( !preg_match( "/^$rxIP$/", $this->BlockAddress ) ) {
$matches = array();
- if ( preg_match( "/^($rxIP4)\\/(\\d{1,2})$/", $this->BlockAddress, $matches ) ) {
+ if( preg_match( "/^($rxIP4)\\/(\\d{1,2})$/", $this->BlockAddress, $matches ) ) {
# IPv4
- if ( $wgSysopRangeBans ) {
- if ( !IP::isIPv4( $this->BlockAddress ) || $matches[2] < 16 || $matches[2] > 32 ) {
- return array('ip_range_invalid');
+ if( $wgSysopRangeBans ) {
+ if( !IP::isIPv4( $this->BlockAddress ) || $matches[2] > 32 ) {
+ return array( 'ip_range_invalid' );
+ } elseif ( $matches[2] < $wgBlockCIDRLimit['IPv4'] ) {
+ return array( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv4'] );
}
$this->BlockAddress = Block::normaliseRange( $this->BlockAddress );
} else {
# Range block illegal
- return array('range_block_disabled');
+ return array( 'range_block_disabled' );
}
- } else if ( preg_match( "/^($rxIP6)\\/(\\d{1,3})$/", $this->BlockAddress, $matches ) ) {
+ } elseif( preg_match( "/^($rxIP6)\\/(\\d{1,3})$/", $this->BlockAddress, $matches ) ) {
# IPv6
- if ( $wgSysopRangeBans ) {
- if ( !IP::isIPv6( $this->BlockAddress ) || $matches[2] < 64 || $matches[2] > 128 ) {
- return array('ip_range_invalid');
+ if( $wgSysopRangeBans ) {
+ if( !IP::isIPv6( $this->BlockAddress ) || $matches[2] > 128 ) {
+ return array( 'ip_range_invalid' );
+ } elseif( $matches[2] < $wgBlockCIDRLimit['IPv6'] ) {
+ return array( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] );
}
$this->BlockAddress = Block::normaliseRange( $this->BlockAddress );
} else {
@@ -356,30 +408,30 @@ class IPBlockForm {
}
} else {
# Username block
- if ( $wgSysopUserBans ) {
+ if( $wgSysopUserBans ) {
$user = User::newFromName( $this->BlockAddress );
if( !is_null( $user ) && $user->getId() ) {
# Use canonical name
$userId = $user->getId();
$this->BlockAddress = $user->getName();
} else {
- return array('nosuchusershort', htmlspecialchars( $user ? $user->getName() : $this->BlockAddress ) );
+ return array( 'nosuchusershort', htmlspecialchars( $user ? $user->getName() : $this->BlockAddress ) );
}
} else {
- return array('badipaddress');
+ return array( 'badipaddress' );
}
}
}
- if ( $wgUser->isBlocked() && ( $wgUser->getId() !== $userId ) ) {
+ if( $wgUser->isBlocked() && ( $wgUser->getId() !== $userId ) ) {
return array( 'cant-block-while-blocked' );
}
$reasonstr = $this->BlockReasonList;
- if ( $reasonstr != 'other' && $this->BlockReason != '' ) {
+ if( $reasonstr != 'other' && $this->BlockReason != '' ) {
// Entry from drop down menu + additional comment
$reasonstr .= wfMsgForContent( 'colon-separator' ) . $this->BlockReason;
- } elseif ( $reasonstr == 'other' ) {
+ } elseif( $reasonstr == 'other' ) {
$reasonstr = $this->BlockReason;
}
@@ -387,44 +439,45 @@ class IPBlockForm {
if( $expirestr == 'other' )
$expirestr = $this->BlockOther;
- if ( ( strlen( $expirestr ) == 0) || ( strlen( $expirestr ) > 50) ) {
- return array('ipb_expiry_invalid');
+ if( ( strlen( $expirestr ) == 0) || ( strlen( $expirestr ) > 50 ) ) {
+ return array( 'ipb_expiry_invalid' );
}
- if ( false === ($expiry = Block::parseExpiryInput( $expirestr )) ) {
+ if( false === ( $expiry = Block::parseExpiryInput( $expirestr ) ) ) {
// Bad expiry.
- return array('ipb_expiry_invalid');
+ return array( 'ipb_expiry_invalid' );
}
-
+
if( $this->BlockHideName ) {
- if( !$userId ) {
- // IP users should not be hidden
- $this->BlockHideName = false;
- } else if( $expiry !== 'infinity' ) {
+ // Recheck params here...
+ if( !$userId || !$wgUser->isAllowed('hideuser') ) {
+ $this->BlockHideName = false; // IP users should not be hidden
+ } elseif( $expiry !== 'infinity' ) {
// Bad expiry.
- return array('ipb_expiry_temp');
- } else if( User::edits($userId) > self::HIDEUSER_CONTRIBLIMIT ) {
+ return array( 'ipb_expiry_temp' );
+ } elseif( User::edits( $userId ) > self::HIDEUSER_CONTRIBLIMIT ) {
// Typically, the user should have a handful of edits.
// Disallow hiding users with many edits for performance.
- return array('ipb_hide_invalid');
+ return array( 'ipb_hide_invalid' );
}
}
- # Create block
+ # Create block object
# Note: for a user block, ipb_address is only for display purposes
$block = new Block( $this->BlockAddress, $userId, $wgUser->getId(),
$reasonstr, wfTimestampNow(), 0, $expiry, $this->BlockAnonOnly,
$this->BlockCreateAccount, $this->BlockEnableAutoblock, $this->BlockHideName,
- $this->BlockEmail, isset( $this->BlockAllowUsertalk ) ? $this->BlockAllowUsertalk : $wgBlockAllowsUTEdit
+ $this->BlockEmail,
+ isset( $this->BlockAllowUsertalk ) ? $this->BlockAllowUsertalk : $wgBlockAllowsUTEdit
);
# Should this be privately logged?
$suppressLog = (bool)$this->BlockHideName;
- if ( wfRunHooks('BlockIp', array(&$block, &$wgUser)) ) {
+ if( wfRunHooks( 'BlockIp', array( &$block, &$wgUser ) ) ) {
# Try to insert block. Is there a conflicting block?
- if ( !$block->insert() ) {
+ if( !$block->insert() ) {
# Show form unless the user is already aware of this...
- if ( !$this->BlockReblock ) {
+ if( !$this->BlockReblock ) {
return array( 'ipb_already_blocked' );
# Otherwise, try to update the block...
} else {
@@ -436,8 +489,8 @@ class IPBlockForm {
}
# If the name was hidden and the blocking user cannot hide
# names, then don't allow any block changes...
- if( $currentBlock->mHideName && !$wgUser->isAllowed('hideuser') ) {
- return array( 'hookaborted' );
+ if( $currentBlock->mHideName && !$wgUser->isAllowed( 'hideuser' ) ) {
+ return array( 'cant-see-hidden-user' );
}
$currentBlock->delete();
$block->insert();
@@ -452,19 +505,18 @@ class IPBlockForm {
} else {
$log_action = 'block';
}
- wfRunHooks('BlockIpComplete', array($block, $wgUser));
+ wfRunHooks( 'BlockIpComplete', array( $block, $wgUser ) );
# Set *_deleted fields if requested
if( $this->BlockHideName ) {
self::suppressUserName( $this->BlockAddress, $userId );
}
- if ( $this->BlockWatchUser &&
- # Only show watch link when this is no range block
- $block->mRangeStart == $block->mRangeEnd) {
- $wgUser->addWatch ( Title::makeTitle( NS_USER, $this->BlockAddress ) );
+ # Only show watch link when this is no range block
+ if( $this->BlockWatchUser && $block->mRangeStart == $block->mRangeEnd ) {
+ $wgUser->addWatch( Title::makeTitle( NS_USER, $this->BlockAddress ) );
}
-
+
# Block constructor sanitizes certain block options on insert
$this->BlockEmail = $block->mBlockEmail;
$this->BlockEnableAutoblock = $block->mEnableAutoblock;
@@ -478,34 +530,34 @@ class IPBlockForm {
$log_type = $suppressLog ? 'suppress' : 'block';
$log = new LogPage( $log_type );
$log->addEntry( $log_action, Title::makeTitle( NS_USER, $this->BlockAddress ),
- $reasonstr, $logParams );
+ $reasonstr, $logParams );
# Report to the user
return array();
} else {
- return array('hookaborted');
+ return array( 'hookaborted' );
}
}
-
- public static function suppressUserName( $name, $userId ) {
+
+ public static function suppressUserName( $name, $userId, $dbw = null ) {
$op = '|'; // bitwise OR
- return self::setUsernameBitfields( $name, $userId, $op );
+ return self::setUsernameBitfields( $name, $userId, $op, $dbw );
}
-
- public static function unsuppressUserName( $name, $userId ) {
+
+ public static function unsuppressUserName( $name, $userId, $dbw = null ) {
$op = '&'; // bitwise AND
- return self::setUsernameBitfields( $name, $userId, $op );
+ return self::setUsernameBitfields( $name, $userId, $op, $dbw );
}
-
- private static function setUsernameBitfields( $name, $userId, $op ) {
- if( $op !== '|' && $op !== '&' )
- return false; // sanity check
- $dbw = wfGetDB( DB_MASTER );
+
+ private static function setUsernameBitfields( $name, $userId, $op, $dbw ) {
+ if( $op !== '|' && $op !== '&' ) return false; // sanity check
+ if( !$dbw )
+ $dbw = wfGetDB( DB_MASTER );
$delUser = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
$delAction = LogPage::DELETED_ACTION | Revision::DELETED_RESTRICTED;
# Normalize user name
$userTitle = Title::makeTitleSafe( NS_USER, $name );
- $userDbKey = $userTitle->getDBKey();
+ $userDbKey = $userTitle->getDBkey();
# To suppress, we OR the current bitfields with Revision::DELETED_USER
# to put a 1 in the username *_deleted bit. To unsuppress we AND the
# current bitfields with the inverse of Revision::DELETED_USER. The
@@ -516,27 +568,29 @@ class IPBlockForm {
$delAction = "~{$delAction}";
}
# Hide name from live edits
- $dbw->update( 'revision', array("rev_deleted = rev_deleted $op $delUser"),
- array('rev_user' => $userId), __METHOD__ );
+ $dbw->update( 'revision', array( "rev_deleted = rev_deleted $op $delUser" ),
+ array( 'rev_user' => $userId ), __METHOD__ );
# Hide name from deleted edits
- $dbw->update( 'archive', array("ar_deleted = ar_deleted $op $delUser"),
- array('ar_user_text' => $name), __METHOD__ );
+ $dbw->update( 'archive', array( "ar_deleted = ar_deleted $op $delUser" ),
+ array( 'ar_user_text' => $name ), __METHOD__ );
# Hide name from logs
- $dbw->update( 'logging', array("log_deleted = log_deleted $op $delUser"),
- array('log_user' => $userId, "log_type != 'suppress'"), __METHOD__ );
- $dbw->update( 'logging', array("log_deleted = log_deleted $op $delAction"),
- array('log_namespace' => NS_USER, 'log_title' => $userDbKey,
- "log_type != 'suppress'"), __METHOD__ );
+ $dbw->update( 'logging', array( "log_deleted = log_deleted $op $delUser" ),
+ array( 'log_user' => $userId, "log_type != 'suppress'" ), __METHOD__ );
+ $dbw->update( 'logging', array( "log_deleted = log_deleted $op $delAction" ),
+ array( 'log_namespace' => NS_USER, 'log_title' => $userDbKey,
+ "log_type != 'suppress'" ), __METHOD__ );
# Hide name from RC
- $dbw->update( 'recentchanges', array("rc_deleted = rc_deleted $op $delUser"),
- array('rc_user_text' => $name), __METHOD__ );
+ $dbw->update( 'recentchanges', array( "rc_deleted = rc_deleted $op $delUser" ),
+ array( 'rc_user_text' => $name ), __METHOD__ );
+ $dbw->update( 'recentchanges', array( "rc_deleted = rc_deleted $op $delAction" ),
+ array( 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ), __METHOD__ );
# Hide name from live images
- $dbw->update( 'oldimage', array("oi_deleted = oi_deleted $op $delUser"),
- array('oi_user_text' => $name), __METHOD__ );
+ $dbw->update( 'oldimage', array( "oi_deleted = oi_deleted $op $delUser" ),
+ array( 'oi_user_text' => $name ), __METHOD__ );
# Hide name from deleted images
# WMF - schema change pending
- # $dbw->update( 'filearchive', array("fa_deleted = fa_deleted $op $delUser"),
- # array('fa_user_text' => $name), __METHOD__ );
+ # $dbw->update( 'filearchive', array( "fa_deleted = fa_deleted $op $delUser" ),
+ # array( 'fa_user_text' => $name ), __METHOD__ );
# Done!
return true;
}
@@ -545,11 +599,10 @@ class IPBlockForm {
* UI entry point for blocking
* Wraps around doBlock()
*/
- function doSubmit()
- {
+ public function doSubmit() {
global $wgOut;
$retval = $this->doBlock();
- if(empty($retval)) {
+ if( empty( $retval ) ) {
$titleObj = SpecialPage::getTitleFor( 'Blockip' );
$wgOut->redirect( $titleObj->getFullURL( 'action=success&ip=' .
urlencode( $this->BlockAddress ) ) );
@@ -558,27 +611,55 @@ class IPBlockForm {
$this->showForm( $retval );
}
- function showSuccess() {
+ public function showSuccess() {
global $wgOut;
- $wgOut->setPagetitle( wfMsg( 'blockip' ) );
+ $wgOut->setPageTitle( wfMsg( 'blockip-title' ) );
$wgOut->setSubtitle( wfMsg( 'blockipsuccesssub' ) );
$text = wfMsgExt( 'blockipsuccesstext', array( 'parse' ), $this->BlockAddress );
$wgOut->addHTML( $text );
}
- function showLogFragment( $out, $title ) {
+ private function showLogFragment( $out, $title ) {
global $wgUser;
- $out->addHTML( Xml::element( 'h2', NULL, LogPage::logName( 'block' ) ) );
- $count = LogEventsList::showLogExtract( $out, 'block', $title->getPrefixedText(), '', 10 );
- if($count > 10){
- $out->addHTML( $wgUser->getSkin()->link(
- SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'blocklog-fulllog' ),
- array(),
+
+ // Used to support GENDER in 'blocklog-showlog' and 'blocklog-showsuppresslog'
+ $userBlocked = $title->getText();
+
+ LogEventsList::showLogExtract(
+ $out,
+ 'block',
+ $title->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 10,
+ 'msgKey' => array(
+ 'blocklog-showlog',
+ $userBlocked
+ ),
+ 'showIfEmpty' => false
+ )
+ );
+
+ // Add suppression block entries if allowed
+ if( $wgUser->isAllowed( 'hideuser' ) ) {
+ LogEventsList::showLogExtract( $out, 'suppress', $title->getPrefixedText(), '',
array(
- 'type' => 'block',
- 'page' => $title->getPrefixedText() ) ) );
+ 'lim' => 10,
+ 'conds' => array(
+ 'log_action' => array(
+ 'block',
+ 'reblock',
+ 'unblock'
+ )
+ ),
+ 'msgKey' => array(
+ 'blocklog-showsuppresslog',
+ $userBlocked
+ ),
+ 'showIfEmpty' => false
+ )
+ );
}
}
@@ -596,13 +677,14 @@ class IPBlockForm {
$flags[] = 'anononly';
if( $this->BlockCreateAccount )
$flags[] = 'nocreate';
- if( !$this->BlockEnableAutoblock )
+ if( !$this->BlockEnableAutoblock && !IP::isIPAddress( $this->BlockAddress ) )
+ // Same as anononly, this is not displayed when blocking an IP address
$flags[] = 'noautoblock';
- if ( $this->BlockEmail )
+ if( $this->BlockEmail )
$flags[] = 'noemail';
- if ( !$this->BlockAllowUsertalk && $wgBlockAllowsUTEdit )
+ if( !$this->BlockAllowUsertalk && $wgBlockAllowsUTEdit )
$flags[] = 'nousertalk';
- if ( $this->BlockHideName )
+ if( $this->BlockHideName )
$flags[] = 'hiddenname';
return implode( ',', $flags );
}
@@ -619,10 +701,18 @@ class IPBlockForm {
$links[] = $this->getContribsLink( $skin );
$links[] = $this->getUnblockLink( $skin );
$links[] = $this->getBlockListLink( $skin );
- $links[] = $skin->makeLink ( 'MediaWiki:Ipbreason-dropdown', wfMsgHtml( 'ipb-edit-dropdown' ) );
+ if ( $wgUser->isAllowed( 'editinterface' ) ) {
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'Ipbreason-dropdown' );
+ $links[] = $skin->link(
+ $title,
+ wfMsgHtml( 'ipb-edit-dropdown' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
+ }
return '<p class="mw-ipb-conveniencelinks">' . $wgLang->pipeList( $links ) . '</p>';
}
-
+
/**
* Build a convenient link to a user or IP's contribs
* form
@@ -645,13 +735,21 @@ class IPBlockForm {
*/
private function getUnblockLink( $skin ) {
$list = SpecialPage::getTitleFor( 'Ipblocklist' );
+ $query = array( 'action' => 'unblock' );
+
if( $this->BlockAddress ) {
- $addr = htmlspecialchars( strtr( $this->BlockAddress, '_', ' ' ) );
- return $skin->makeKnownLinkObj( $list, wfMsgHtml( 'ipb-unblock-addr', $addr ),
- 'action=unblock&ip=' . urlencode( $this->BlockAddress ) );
+ $addr = strtr( $this->BlockAddress, '_', ' ' );
+ $message = wfMsg( 'ipb-unblock-addr', $addr );
+ $query['ip'] = $this->BlockAddress;
} else {
- return $skin->makeKnownLinkObj( $list, wfMsgHtml( 'ipb-unblock' ), 'action=unblock' );
+ $message = wfMsg( 'ipb-unblock' );
}
+ return $skin->linkKnown(
+ $list,
+ htmlspecialchars( $message ),
+ array(),
+ $query
+ );
}
/**
@@ -662,23 +760,32 @@ class IPBlockForm {
*/
private function getBlockListLink( $skin ) {
$list = SpecialPage::getTitleFor( 'Ipblocklist' );
+ $query = array();
+
if( $this->BlockAddress ) {
- $addr = htmlspecialchars( strtr( $this->BlockAddress, '_', ' ' ) );
- return $skin->makeKnownLinkObj( $list, wfMsgHtml( 'ipb-blocklist-addr', $addr ),
- 'ip=' . urlencode( $this->BlockAddress ) );
+ $addr = strtr( $this->BlockAddress, '_', ' ' );
+ $message = wfMsg( 'ipb-blocklist-addr', $addr );
+ $query['ip'] = $this->BlockAddress;
} else {
- return $skin->makeKnownLinkObj( $list, wfMsgHtml( 'ipb-blocklist' ) );
+ $message = wfMsg( 'ipb-blocklist' );
}
+
+ return $skin->linkKnown(
+ $list,
+ htmlspecialchars( $message ),
+ array(),
+ $query
+ );
}
-
+
/**
- * Block a list of selected users
- * @param array $users
- * @param string $reason
- * @param string $tag replaces user pages
- * @param string $talkTag replaces user talk pages
- * @returns array, list of html-safe usernames
- */
+ * Block a list of selected users
+ * @param array $users
+ * @param string $reason
+ * @param string $tag replaces user pages
+ * @param string $talkTag replaces user talk pages
+ * @returns array, list of html-safe usernames
+ */
public static function doMassUserBlock( $users, $reason = '', $tag = '', $talkTag = '' ) {
global $wgUser;
$counter = $blockSize = 0;
@@ -695,7 +802,7 @@ class IPBlockForm {
}
$u = User::newFromName( $name, false );
// If user doesn't exist, it ought to be an IP then
- if( is_null($u) || (!$u->getId() && !IP::isIPAddress( $u->getName() )) ) {
+ if( is_null( $u ) || ( !$u->getId() && !IP::isIPAddress( $u->getName() ) ) ) {
continue;
}
$userTitle = $u->getUserPage();
@@ -734,10 +841,10 @@ class IPBlockForm {
$log->addEntry( 'block', $userTitle, $reason, $logParams );
}
# Tag userpage! (check length to avoid mistakes)
- if( strlen($tag) > 2 ) {
+ if( strlen( $tag ) > 2 ) {
$userpage->doEdit( $tag, $reason, EDIT_MINOR );
}
- if( strlen($talkTag) > 2 ) {
+ if( strlen( $talkTag ) > 2 ) {
$usertalk->doEdit( $talkTag, $reason, EDIT_MINOR );
}
}
diff --git a/includes/specials/SpecialBooksources.php b/includes/specials/SpecialBooksources.php
index db466c14..8ee5467a 100644
--- a/includes/specials/SpecialBooksources.php
+++ b/includes/specials/SpecialBooksources.php
@@ -6,7 +6,7 @@
*
* @author Rob Church <robchur@gmail.com>
* @todo Validate ISBNs using the standard check-digit method
- * @ingroup SpecialPages
+ * @ingroup SpecialPage
*/
class SpecialBookSources extends SpecialPage {
@@ -35,7 +35,7 @@ class SpecialBookSources extends SpecialPage {
$wgOut->addHTML( $this->makeForm() );
if( strlen( $this->isbn ) > 0 ) {
if( !self::isValidISBN( $this->isbn ) ) {
- $wgOut->wrapWikiMsg( '<div class="error">$1</div>', 'booksources-invalid-isbn' );
+ $wgOut->wrapWikiMsg( "<div class=\"error\">\n$1</div>", 'booksources-invalid-isbn' );
}
$this->showList();
}
diff --git a/includes/specials/SpecialBrokenRedirects.php b/includes/specials/SpecialBrokenRedirects.php
index 0a16e6de..b6ae2ada 100644
--- a/includes/specials/SpecialBrokenRedirects.php
+++ b/includes/specials/SpecialBrokenRedirects.php
@@ -33,9 +33,9 @@ class BrokenRedirectsPage extends PageQueryPage {
rd_namespace,
rd_title
FROM $redirect AS rd
- JOIN $page p1 ON (rd.rd_from=p1.page_id)
+ JOIN $page p1 ON (rd.rd_from=p1.page_id)
LEFT JOIN $page AS p2 ON (rd_namespace=p2.page_namespace AND rd_title=p2.page_title )
- WHERE rd_namespace >= 0
+ WHERE rd_namespace >= 0
AND p2.page_namespace IS NULL";
return $sql;
}
@@ -45,7 +45,7 @@ class BrokenRedirectsPage extends PageQueryPage {
}
function formatResult( $skin, $result ) {
- global $wgUser, $wgContLang;
+ global $wgUser, $wgContLang, $wgLang;
$fromObj = Title::makeTitle( $result->namespace, $result->title );
if ( isset( $result->rd_title ) ) {
@@ -61,21 +61,43 @@ class BrokenRedirectsPage extends PageQueryPage {
// $toObj may very easily be false if the $result list is cached
if ( !is_object( $toObj ) ) {
- return '<s>' . $skin->makeLinkObj( $fromObj ) . '</s>';
+ return '<s>' . $skin->link( $fromObj ) . '</s>';
}
- $from = $skin->makeKnownLinkObj( $fromObj ,'', 'redirect=no' );
- $edit = $skin->makeKnownLinkObj( $fromObj, wfMsgHtml( 'brokenredirects-edit' ), 'action=edit' );
- $to = $skin->makeBrokenLinkObj( $toObj );
+ $from = $skin->linkKnown(
+ $fromObj,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $links = array();
+ $links[] = $skin->linkKnown(
+ $fromObj,
+ wfMsgHtml( 'brokenredirects-edit' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
+ $to = $skin->link(
+ $toObj,
+ null,
+ array(),
+ array(),
+ array( 'broken' )
+ );
$arr = $wgContLang->getArrow();
- $out = "{$from} {$edit}";
+ $out = $from . wfMsg( 'word-separator' );
if( $wgUser->isAllowed( 'delete' ) ) {
- $delete = $skin->makeKnownLinkObj( $fromObj, wfMsgHtml( 'brokenredirects-delete' ), 'action=delete' );
- $out .= " {$delete}";
+ $links[] = $skin->linkKnown(
+ $fromObj,
+ wfMsgHtml( 'brokenredirects-delete' ),
+ array(),
+ array( 'action' => 'delete' )
+ );
}
+ $out .= wfMsg( 'parentheses', $wgLang->pipeList( $links ) );
$out .= " {$arr} {$to}";
return $out;
}
diff --git a/includes/specials/SpecialCategories.php b/includes/specials/SpecialCategories.php
index c6e73f2b..a649eafd 100644
--- a/includes/specials/SpecialCategories.php
+++ b/includes/specials/SpecialCategories.php
@@ -13,9 +13,10 @@ function wfSpecialCategories( $par=null ) {
$from = $par;
}
$cap = new CategoryPager( $from );
+ $cap->doQuery();
$wgOut->addHTML(
XML::openElement( 'div', array('class' => 'mw-spcontent') ) .
- wfMsgExt( 'categoriespagetext', array( 'parse' ) ) .
+ wfMsgExt( 'categoriespagetext', array( 'parse' ), $cap->getNumRows() ) .
$cap->getStartForm( $from ) .
$cap->getNavigationBar() .
'<ul>' . $cap->getBody() . '</ul>' .
@@ -35,10 +36,7 @@ class CategoryPager extends AlphabeticPager {
parent::__construct();
$from = str_replace( ' ', '_', $from );
if( $from !== '' ) {
- global $wgCapitalLinks, $wgContLang;
- if( $wgCapitalLinks ) {
- $from = $wgContLang->ucfirst( $from );
- }
+ $from = Title::capitalize( $from, NS_CATEGORY );
$this->mOffset = $from;
}
}
@@ -74,9 +72,6 @@ class CategoryPager extends AlphabeticPager {
/* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
public function getBody() {
- if (!$this->mQueryDone) {
- $this->doQuery();
- }
$batch = new LinkBatch;
$this->mResult->rewind();
@@ -92,7 +87,7 @@ class CategoryPager extends AlphabeticPager {
function formatRow($result) {
global $wgLang;
$title = Title::makeTitle( NS_CATEGORY, $result->cat_title );
- $titleText = $this->getSkin()->makeLinkObj( $title, htmlspecialchars( $title->getText() ) );
+ $titleText = $this->getSkin()->link( $title, htmlspecialchars( $title->getText() ) );
$count = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->cat_pages ) );
return Xml::tags('li', null, "$titleText ($count)" ) . "\n";
diff --git a/includes/specials/SpecialConfirmemail.php b/includes/specials/SpecialConfirmemail.php
index 9c6f857d..372a574c 100644
--- a/includes/specials/SpecialConfirmemail.php
+++ b/includes/specials/SpecialConfirmemail.php
@@ -34,10 +34,13 @@ class EmailConfirmation extends UnlistedSpecialPage {
}
} else {
$title = SpecialPage::getTitleFor( 'Userlogin' );
- $self = SpecialPage::getTitleFor( 'Confirmemail' );
$skin = $wgUser->getSkin();
- $llink = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'loginreqlink' ),
- 'returnto=' . $self->getPrefixedUrl() );
+ $llink = $skin->linkKnown(
+ $title,
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $this->getTitle()->getPrefixedText() )
+ );
$wgOut->addHTML( wfMsgWikiHtml( 'confirmemail_needlogin', $llink ) );
}
} else {
@@ -68,11 +71,10 @@ class EmailConfirmation extends UnlistedSpecialPage {
$wgOut->addWikiMsg( 'emailauthenticated', $time, $d, $t );
}
if( $wgUser->isEmailConfirmationPending() ) {
- $wgOut->wrapWikiMsg( "<div class=\"error mw-confirmemail-pending\">$1</div>", 'confirmemail_pending' );
+ $wgOut->wrapWikiMsg( "<div class=\"error mw-confirmemail-pending\">\n$1</div>", 'confirmemail_pending' );
}
$wgOut->addWikiMsg( 'confirmemail_text' );
- $self = SpecialPage::getTitleFor( 'Confirmemail' );
- $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $self->getLocalUrl() ) );
+ $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl() ) );
$form .= Xml::hidden( 'token', $wgUser->editToken() );
$form .= Xml::submitButton( wfMsg( 'confirmemail_send' ) );
$form .= Xml::closeElement( 'form' );
diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php
index 9263336e..392f4332 100644
--- a/includes/specials/SpecialContributions.php
+++ b/includes/specials/SpecialContributions.php
@@ -39,7 +39,7 @@ class SpecialContributions extends SpecialPage {
return;
}
- $this->opts['limit'] = $wgRequest->getInt( 'limit', 50 );
+ $this->opts['limit'] = $wgRequest->getInt( 'limit', $wgUser->getOption('rclimit') );
$this->opts['target'] = $target;
$nt = Title::makeTitleSafe( NS_USER, $target );
@@ -89,104 +89,161 @@ class SpecialContributions extends SpecialPage {
return $this->feed( $feedType );
}
- wfRunHooks( 'SpecialContributionsBeforeMainOutput', $id );
+ if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
- $wgOut->addHTML( $this->getForm() );
+ $wgOut->addHTML( $this->getForm() );
- $pager = new ContribsPager( $target, $this->opts['namespace'], $this->opts['year'], $this->opts['month'] );
- if( !$pager->getNumRows() ) {
- $wgOut->addWikiMsg( 'nocontribs', $target );
- return;
- }
+ $pager = new ContribsPager( $target, $this->opts['namespace'], $this->opts['year'], $this->opts['month'] );
+ if( !$pager->getNumRows() ) {
+ $wgOut->addWikiMsg( 'nocontribs', $target );
+ } else {
+ # Show a message about slave lag, if applicable
+ if( ( $lag = $pager->getDatabase()->getLag() ) > 0 )
+ $wgOut->showLagWarning( $lag );
+
+ $wgOut->addHTML(
+ '<p>' . $pager->getNavigationBar() . '</p>' .
+ $pager->getBody() .
+ '<p>' . $pager->getNavigationBar() . '</p>'
+ );
+ }
- # Show a message about slave lag, if applicable
- if( ( $lag = $pager->getDatabase()->getLag() ) > 0 )
- $wgOut->showLagWarning( $lag );
- $wgOut->addHTML(
- '<p>' . $pager->getNavigationBar() . '</p>' .
- $pager->getBody() .
- '<p>' . $pager->getNavigationBar() . '</p>'
- );
+ # Show the appropriate "footer" message - WHOIS tools, etc.
+ if( $target != 'newbies' ) {
+ $message = 'sp-contributions-footer';
+ if ( IP::isIPAddress( $target ) ) {
+ $message = 'sp-contributions-footer-anon';
+ } else {
+ $user = User::newFromName( $target );
+ if ( !$user || $user->isAnon() ) {
+ // No message for non-existing users
+ return;
+ }
+ }
- # If there were contributions, and it was a valid user or IP, show
- # the appropriate "footer" message - WHOIS tools, etc.
- if( $target != 'newbies' ) {
- $message = IP::isIPAddress( $target ) ?
- 'sp-contributions-footer-anon' : 'sp-contributions-footer';
-
- $text = wfMsgNoTrans( $message, $target );
- if( !wfEmptyMsg( $message, $text ) && $text != '-' ) {
- $wgOut->addHTML( '<div class="mw-contributions-footer">' );
- $wgOut->addWikiText( $text );
- $wgOut->addHTML( '</div>' );
+ $text = wfMsgNoTrans( $message, $target );
+ if( !wfEmptyMsg( $message, $text ) && $text != '-' ) {
+ $wgOut->wrapWikiMsg(
+ "<div class='mw-contributions-footer'>\n$1\n</div>",
+ array( $message, $target ) );
+ }
}
}
}
protected function setSyndicated() {
global $wgOut;
- $queryParams = array(
- 'namespace' => $this->opts['namespace'],
- 'target' => $this->opts['target']
- );
$wgOut->setSyndicated( true );
- $wgOut->setFeedAppendQuery( wfArrayToCGI( $queryParams ) );
+ $wgOut->setFeedAppendQuery( wfArrayToCGI( $this->opts ) );
}
/**
- * Generates the subheading with links
- * @param Title $nt Title object for the target
- * @param integer $id User ID for the target
- * @return String: appropriately-escaped HTML to be output literally
- */
+ * Generates the subheading with links
+ * @param Title $nt @see Title object for the target
+ * @param integer $id User ID for the target
+ * @return String: appropriately-escaped HTML to be output literally
+ * @todo Fixme: almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
+ */
protected function contributionsSub( $nt, $id ) {
- global $wgSysopUserBans, $wgLang, $wgUser;
+ global $wgSysopUserBans, $wgLang, $wgUser, $wgOut;
$sk = $wgUser->getSkin();
- if( 0 == $id ) {
- $user = $nt->getText();
+ if ( $id === null ) {
+ $user = htmlspecialchars( $nt->getText() );
} else {
- $user = $sk->makeLinkObj( $nt, htmlspecialchars( $nt->getText() ) );
+ $user = $sk->link( $nt, htmlspecialchars( $nt->getText() ) );
}
+ $userObj = User::newFromName( $nt->getText(), /* check for username validity not needed */ false );
$talk = $nt->getTalkPage();
if( $talk ) {
# Talk page link
- $tools[] = $sk->makeLinkObj( $talk, wfMsgHtml( 'talkpagelinktext' ) );
- if( ( $id != 0 && $wgSysopUserBans ) || ( $id == 0 && IP::isIPAddress( $nt->getText() ) ) ) {
- # Block link
- if( $wgUser->isAllowed( 'block' ) )
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Blockip',
- $nt->getDBkey() ), wfMsgHtml( 'blocklink' ) );
+ $tools[] = $sk->link( $talk, wfMsgHtml( 'sp-contributions-talk' ) );
+ if( ( $id !== null && $wgSysopUserBans ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
+ if( $wgUser->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+ if ( $userObj->isBlocked() ) {
+ $tools[] = $sk->linkKnown( # Change block link
+ SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ wfMsgHtml( 'change-blocklink' )
+ );
+ $tools[] = $sk->linkKnown( # Unblock link
+ SpecialPage::getTitleFor( 'BlockList' ),
+ wfMsgHtml( 'unblocklink' ),
+ array(),
+ array(
+ 'action' => 'unblock',
+ 'ip' => $nt->getDBkey()
+ )
+ );
+ }
+ else { # User is not blocked
+ $tools[] = $sk->linkKnown( # Block link
+ SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ wfMsgHtml( 'blocklink' )
+ );
+ }
+ }
# Block log link
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'sp-contributions-blocklog' ), 'type=block&page=' . $nt->getPrefixedUrl() );
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'sp-contributions-blocklog' ),
+ array(),
+ array(
+ 'type' => 'block',
+ 'page' => $nt->getPrefixedText()
+ )
+ );
}
# Other logs link
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Log' ), wfMsg( 'sp-contributions-logs' ),
- 'user=' . $nt->getPartialUrl() );
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'sp-contributions-logs' ),
+ array(),
+ array( 'user' => $nt->getText() )
+ );
# Add link to deleted user contributions for priviledged users
if( $wgUser->isAllowed( 'deletedhistory' ) ) {
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'DeletedContributions',
- $nt->getDBkey() ), wfMsgHtml( 'deletedcontributions' ) );
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'DeletedContributions', $nt->getDBkey() ),
+ wfMsgHtml( 'sp-contributions-deleted' )
+ );
}
# Add a link to change user rights for privileged users
$userrightsPage = new UserrightsPage();
- if( 0 !== $id && $userrightsPage->userCanChangeRights( User::newFromId( $id ) ) ) {
- $tools[] = $sk->makeKnownLinkObj(
+ if( $id !== null && $userrightsPage->userCanChangeRights( User::newFromId( $id ) ) ) {
+ $tools[] = $sk->linkKnown(
SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ),
- wfMsgHtml( 'userrights' )
+ wfMsgHtml( 'sp-contributions-userrights' )
);
}
wfRunHooks( 'ContributionsToolLinks', array( $id, $nt, &$tools ) );
-
+
$links = $wgLang->pipeList( $tools );
+
+ // Show a note if the user is blocked and display the last block log entry.
+ if ( $userObj->isBlocked() ) {
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'block',
+ $nt->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 1,
+ 'showIfEmpty' => false,
+ 'msgKey' => array(
+ 'sp-contributions-blocked-notice',
+ $nt->getText() # Support GENDER in 'sp-contributions-blocked-notice'
+ ),
+ 'offset' => '' # don't use $wgRequest parameter offset
+ )
+ );
+ }
}
-
+
// Old message 'contribsub' had one parameter, but that doesn't work for
// languages that want to put the "for" bit right after $user but before
// $links. If 'contribsub' is around, use it for reverse compatibility,
@@ -203,9 +260,9 @@ class SpecialContributions extends SpecialPage {
* @param $this->opts Array: the options to be included.
*/
protected function getForm() {
- global $wgScript, $wgTitle;
+ global $wgScript;
- $this->opts['title'] = $wgTitle->getPrefixedText();
+ $this->opts['title'] = $this->getTitle()->getPrefixedText();
if( !isset( $this->opts['target'] ) ) {
$this->opts['target'] = '';
} else {
@@ -249,11 +306,14 @@ class SpecialContributions extends SpecialPage {
$f .= '<fieldset>' .
Xml::element( 'legend', array(), wfMsg( 'sp-contributions-search' ) ) .
- Xml::radioLabel( wfMsgExt( 'sp-contributions-newbies', array( 'parseinline' ) ),
+ Xml::radioLabel( wfMsgExt( 'sp-contributions-newbies', array( 'parsemag' ) ),
'contribs', 'newbie' , 'newbie', $this->opts['contribs'] == 'newbie' ? true : false ) . '<br />' .
- Xml::radioLabel( wfMsgExt( 'sp-contributions-username', array( 'parseinline' ) ),
+ Xml::radioLabel( wfMsgExt( 'sp-contributions-username', array( 'parsemag' ) ),
'contribs' , 'user', 'user', $this->opts['contribs'] == 'user' ? true : false ) . ' ' .
- Xml::input( 'target', 20, $this->opts['target']) . ' '.
+ Html::input( 'target', $this->opts['target'], 'text', array(
+ 'size' => '20',
+ 'required' => ''
+ ) + ( $this->opts['target'] ? array() : array( 'autofocus' ) ) ) . ' '.
'<span style="white-space: nowrap">' .
Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
Xml::namespaceSelector( $this->opts['namespace'], '' ) .
@@ -268,7 +328,7 @@ class SpecialContributions extends SpecialPage {
$explain = wfMsgExt( 'sp-contributions-explain', 'parseinline' );
if( !wfEmptyMsg( 'sp-contributions-explain', $explain ) )
- $f .= "<p>{$explain}</p>";
+ $f .= "<p id='mw-sp-contributions-explain'>{$explain}</p>";
$f .= '</fieldset>' .
Xml::closeElement( 'form' );
@@ -341,7 +401,7 @@ class SpecialContributions extends SpecialPage {
$comments
);
} else {
- return NULL;
+ return null;
}
}
@@ -371,9 +431,13 @@ class ContribsPager extends ReverseChronologicalPager {
function __construct( $target, $namespace = false, $year = false, $month = false, $tagFilter = false ) {
parent::__construct();
- foreach( explode( ' ', 'uctop diff newarticle rollbacklink diff hist newpageletter minoreditletter' ) as $msg ) {
- $this->messages[$msg] = wfMsgExt( $msg, array( 'escape') );
+
+ $msgs = array( 'uctop', 'diff', 'newarticle', 'rollbacklink', 'diff', 'hist', 'rev-delundel', 'pipe-separator' );
+
+ foreach( $msgs as $msg ) {
+ $this->messages[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
}
+
$this->target = $target;
$this->namespace = $namespace;
$this->tagFilter = $tagFilter;
@@ -395,8 +459,11 @@ class ContribsPager extends ReverseChronologicalPager {
$conds = array_merge( $userCond, $this->getNamespaceCond() );
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
- $conds[] = 'rev_deleted & ' . Revision::DELETED_USER . ' = 0';
+ if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
+ $conds[] = $this->mDb->bitAnd('rev_deleted',Revision::DELETED_USER) . ' = 0';
+ } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ $conds[] = $this->mDb->bitAnd('rev_deleted',Revision::SUPPRESSED_USER) .
+ ' != ' . Revision::SUPPRESSED_USER;
}
$join_cond['page'] = array( 'INNER JOIN', 'page_id=rev_page' );
@@ -411,14 +478,16 @@ class ContribsPager extends ReverseChronologicalPager {
'options' => array( 'USE INDEX' => array('revision' => $index) ),
'join_conds' => $join_cond
);
-
- ChangeTags::modifyDisplayQuery( $queryInfo['tables'],
- $queryInfo['fields'],
- $queryInfo['conds'],
- $queryInfo['join_conds'],
- $queryInfo['options'],
- $this->tagFilter );
-
+
+ ChangeTags::modifyDisplayQuery(
+ $queryInfo['tables'],
+ $queryInfo['fields'],
+ $queryInfo['conds'],
+ $queryInfo['join_conds'],
+ $queryInfo['options'],
+ $this->tagFilter
+ );
+
wfRunHooks( 'ContribsPager::getQueryInfo', array( &$this, &$queryInfo ) );
return $queryInfo;
}
@@ -473,7 +542,7 @@ class ContribsPager extends ReverseChronologicalPager {
* @todo This would probably look a lot nicer in a table.
*/
function formatRow( $row ) {
- global $wgLang, $wgUser, $wgContLang;
+ global $wgUser, $wgLang, $wgContLang;
wfProfileIn( __METHOD__ );
$sk = $this->getSkin();
@@ -482,60 +551,101 @@ class ContribsPager extends ReverseChronologicalPager {
$page = Title::newFromRow( $row );
$page->resetArticleId( $row->rev_page ); // use process cache
- $link = $sk->makeLinkObj( $page, $page->getPrefixedText(), $page->isRedirect() ? 'redirect=no' : '' );
+ $link = $sk->link(
+ $page,
+ htmlspecialchars( $page->getPrefixedText() ),
+ array(),
+ $page->isRedirect() ? array( 'redirect' => 'no' ) : array()
+ );
# Mark current revisions
$difftext = $topmarktext = '';
if( $row->rev_id == $row->page_latest ) {
- $topmarktext .= '<strong>' . $this->messages['uctop'] . '</strong>';
- if( !$row->page_is_new ) {
- $difftext .= '(' . $sk->makeKnownLinkObj( $page, $this->messages['diff'], 'diff=0' ) . ')';
- # Add rollback link
- if( $page->quickUserCan( 'rollback') && $page->quickUserCan( 'edit' ) ) {
- $topmarktext .= ' '.$sk->generateRollback( $rev );
- }
- } else {
- $difftext .= $this->messages['newarticle'];
+ $topmarktext .= '<span class="mw-uctop">' . $this->messages['uctop'] . '</span>';
+ # Add rollback link
+ if( !$row->page_is_new && $page->quickUserCan( 'rollback' )
+ && $page->quickUserCan( 'edit' ) )
+ {
+ $topmarktext .= ' '.$sk->generateRollback( $rev );
}
}
# Is there a visible previous revision?
- if( $rev->userCan(Revision::DELETED_TEXT) ) {
- $difftext = '(' . $sk->makeKnownLinkObj( $page, $this->messages['diff'],
- 'diff=prev&oldid='.$row->rev_id ) . ')';
+ if( $rev->userCan( Revision::DELETED_TEXT ) && $rev->getParentId() !== 0 ) {
+ $difftext = $sk->linkKnown(
+ $page,
+ $this->messages['diff'],
+ array(),
+ array(
+ 'diff' => 'prev',
+ 'oldid' => $row->rev_id
+ )
+ );
} else {
- $difftext = '(' . $this->messages['diff'] . ')';
+ $difftext = $this->messages['diff'];
}
- $histlink = '('.$sk->makeKnownLinkObj( $page, $this->messages['hist'], 'action=history' ) . ')';
+ $histlink = $sk->linkKnown(
+ $page,
+ $this->messages['hist'],
+ array(),
+ array( 'action' => 'history' )
+ );
$comment = $wgContLang->getDirMark() . $sk->revComment( $rev, false, true );
$date = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->rev_timestamp ), true );
- $d = $sk->makeKnownLinkObj( $page, $date, 'oldid='.intval($row->rev_id) );
+ if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $d = '<span class="history-deleted">' . $date . '</span>';
+ } else {
+ $d = $sk->linkKnown(
+ $page,
+ htmlspecialchars($date),
+ array(),
+ array( 'oldid' => intval( $row->rev_id ) )
+ );
+ }
if( $this->target == 'newbies' ) {
$userlink = ' . . ' . $sk->userLink( $row->rev_user, $row->rev_user_text );
- $userlink .= ' (' . $sk->userTalkLink( $row->rev_user, $row->rev_user_text ) . ') ';
+ $userlink .= ' ' . wfMsg( 'parentheses', $sk->userTalkLink( $row->rev_user, $row->rev_user_text ) ) . ' ';
} else {
$userlink = '';
}
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $d = '<span class="history-deleted">' . $d . '</span>';
- }
-
if( $rev->getParentId() === 0 ) {
- $nflag = '<span class="newpage">' . $this->messages['newpageletter'] . '</span>';
+ $nflag = ChangesList::flag( 'newpage' );
} else {
$nflag = '';
}
if( $rev->isMinor() ) {
- $mflag = '<span class="minor">' . $this->messages['minoreditletter'] . '</span> ';
+ $mflag = ChangesList::flag( 'minor' );
} else {
$mflag = '';
}
- $ret = "{$d} {$histlink} {$difftext} {$nflag}{$mflag} {$link}{$userlink} {$comment} {$topmarktext}";
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $ret .= ' ' . wfMsgHtml( 'deletedrev' );
+ // Don't show useless link to people who cannot hide revisions
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $page->getPrefixedDbkey(),
+ 'ids' => $rev->getId()
+ );
+ $del = $this->mSkin->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
+ }
+ $del .= ' ';
+ } else {
+ $del = '';
+ }
+
+ $diffHistLinks = '(' . $difftext . $this->messages['pipe-separator'] . $histlink . ')';
+ $ret = "{$del}{$d} {$diffHistLinks} {$nflag}{$mflag} {$link}{$userlink} {$comment} {$topmarktext}";
+
+ # Denote if username is redacted for this edit
+ if( $rev->isDeleted( Revision::DELETED_USER ) ) {
+ $ret .= " <strong>" . wfMsgHtml('rev-deleted-user-contribs') . "</strong>";
}
# Tags, if any.
diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php
index 67b05ca1..8884bb22 100644
--- a/includes/specials/SpecialDeletedContributions.php
+++ b/includes/specials/SpecialDeletedContributions.php
@@ -11,8 +11,9 @@ class DeletedContribsPager extends IndexPager {
function __construct( $target, $namespace = false ) {
parent::__construct();
- foreach( explode( ' ', 'deletionlog undeletebtn minoreditletter diff' ) as $msg ) {
- $this->messages[$msg] = wfMsgExt( $msg, array( 'escape') );
+ $msgs = array( 'deletionlog', 'undeleteviewlink', 'diff' );
+ foreach( $msgs as $msg ) {
+ $this->messages[$msg] = wfMsgExt( $msg, array( 'escapenoentities') );
}
$this->target = $target;
$this->namespace = $namespace;
@@ -30,8 +31,11 @@ class DeletedContribsPager extends IndexPager {
list( $index, $userCond ) = $this->getUserCond();
$conds = array_merge( $userCond, $this->getNamespaceCond() );
// Paranoia: avoid brute force searches (bug 17792)
- if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
- $conds[] = 'ar_deleted & ' . Revision::DELETED_USER . ' = 0';
+ if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
+ $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::DELETED_USER) . ' = 0';
+ } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::SUPPRESSED_USER) .
+ ' != ' . Revision::SUPPRESSED_USER;
}
return array(
'tables' => array( 'archive' ),
@@ -71,9 +75,10 @@ class DeletedContribsPager extends IndexPager {
if ( isset( $this->mNavigationBar ) ) {
return $this->mNavigationBar;
}
+ $fmtLimit = $wgLang->formatNum( $this->mLimit );
$linkTexts = array(
- 'prev' => wfMsgHtml( 'pager-newer-n', $this->mLimit ),
- 'next' => wfMsgHtml( 'pager-older-n', $this->mLimit ),
+ 'prev' => wfMsgExt( 'pager-newer-n', array( 'escape', 'parsemag' ), $fmtLimit ),
+ 'next' => wfMsgExt( 'pager-older-n', array( 'escape', 'parsemag' ), $fmtLimit ),
'first' => wfMsgHtml( 'histlast' ),
'last' => wfMsgHtml( 'histfirst' )
);
@@ -83,7 +88,7 @@ class DeletedContribsPager extends IndexPager {
$limits = $wgLang->pipeList( $limitLinks );
$this->mNavigationBar = "(" . $wgLang->pipeList( array( $pagingLinks['first'], $pagingLinks['last'] ) ) . ") " .
- wfMsgExt( 'viewprevnext', array( 'parsemag' ), $pagingLinks['prev'], $pagingLinks['next'], $limits );
+ wfMsgExt( 'viewprevnext', array( 'parsemag', 'escape', 'replaceafter' ), $pagingLinks['prev'], $pagingLinks['next'], $limits );
return $this->mNavigationBar;
}
@@ -106,10 +111,9 @@ class DeletedContribsPager extends IndexPager {
* @todo This would probably look a lot nicer in a table.
*/
function formatRow( $row ) {
+ global $wgUser, $wgLang;
wfProfileIn( __METHOD__ );
- global $wgLang, $wgUser;
-
$sk = $this->getSkin();
$rev = new Revision( array(
@@ -119,7 +123,7 @@ class DeletedContribsPager extends IndexPager {
'user_text' => $row->ar_user_text,
'timestamp' => $row->ar_timestamp,
'minor_edit' => $row->ar_minor_edit,
- 'deleted' => $row->ar_deleted,
+ 'deleted' => $row->ar_deleted,
) );
$page = Title::makeTitle( $row->ar_namespace, $row->ar_title );
@@ -127,50 +131,96 @@ class DeletedContribsPager extends IndexPager {
$undelete = SpecialPage::getTitleFor( 'Undelete' );
$logs = SpecialPage::getTitleFor( 'Log' );
- $dellog = $sk->makeKnownLinkObj( $logs,
+ $dellog = $sk->linkKnown(
+ $logs,
$this->messages['deletionlog'],
- 'type=delete&page=' . $page->getPrefixedUrl() );
-
- $reviewlink = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Undelete', $page->getPrefixedDBkey() ),
- $this->messages['undeletebtn'] );
+ array(),
+ array(
+ 'type' => 'delete',
+ 'page' => $page->getPrefixedText()
+ )
+ );
- $link = $sk->makeKnownLinkObj( $undelete,
- htmlspecialchars( $page->getPrefixedText() ),
- 'target=' . $page->getPrefixedUrl() .
- '&timestamp=' . $rev->getTimestamp() );
+ $reviewlink = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Undelete', $page->getPrefixedDBkey() ),
+ $this->messages['undeleteviewlink']
+ );
- $last = $sk->makeKnownLinkObj( $undelete,
- $this->messages['diff'],
- "target=" . $page->getPrefixedUrl() .
- "&timestamp=" . $rev->getTimestamp() .
- "&diff=prev" );
+ if( $wgUser->isAllowed('deletedtext') ) {
+ $last = $sk->linkKnown(
+ $undelete,
+ $this->messages['diff'],
+ array(),
+ array(
+ 'target' => $page->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp(),
+ 'diff' => 'prev'
+ )
+ );
+ } else {
+ $last = $this->messages['diff'];
+ }
$comment = $sk->revComment( $rev );
- $d = $wgLang->timeanddate( $rev->getTimestamp(), true );
+ $date = htmlspecialchars( $wgLang->timeanddate( $rev->getTimestamp(), true ) );
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $d = '<span class="history-deleted">' . $d . '</span>';
+ if( !$wgUser->isAllowed('undelete') || !$rev->userCan(Revision::DELETED_TEXT) ) {
+ $link = $date; // unusable link
} else {
- $link = $sk->makeKnownLinkObj( $undelete, $d,
- 'target=' . $page->getPrefixedUrl() .
- '&timestamp=' . $rev->getTimestamp() );
+ $link = $sk->linkKnown(
+ $undelete,
+ $date,
+ array(),
+ array(
+ 'target' => $page->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp()
+ )
+ );
+ }
+ // Style deleted items
+ if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $link = '<span class="history-deleted">' . $link . '</span>';
}
- $pagelink = $sk->makeLinkObj( $page );
+ $pagelink = $sk->link( $page );
if( $rev->isMinor() ) {
- $mflag = '<span class="minor">' . $this->messages['minoreditletter'] . '</span> ';
+ $mflag = ChangesList::flag( 'minor' );
} else {
$mflag = '';
}
+
+ // Revision delete link
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $page->getPrefixedDbkey(),
+ 'ids' => $rev->getTimestamp() );
+ $del = $this->mSkin->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ) . ' ';
+ }
+ } else {
+ $del = '';
+ }
-
- $ret = "{$link} ($last) ({$dellog}) ({$reviewlink}) . . {$mflag} {$pagelink} {$comment}";
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $ret .= ' ' . wfMsgHtml( 'deletedrev' );
+ $tools = Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-deletedcontribs-tools' ),
+ wfMsg( 'parentheses', $wgLang->pipeList( array( $last, $dellog, $reviewlink ) ) )
+ );
+
+ $ret = "{$del}{$link} {$tools} . . {$mflag} {$pagelink} {$comment}";
+
+ # Denote if username is redacted for this edit
+ if( $rev->isDeleted( Revision::DELETED_USER ) ) {
+ $ret .= " <strong>" . wfMsgHtml('rev-deleted-user-contribs') . "</strong>";
}
- $ret = "<li>$ret</li>\n";
+ $ret = Html::rawElement( 'li', array(), $ret ) . "\n";
wfProfileOut( __METHOD__ );
return $ret;
@@ -208,7 +258,7 @@ class DeletedContributionsPage extends SpecialPage {
return;
}
- global $wgUser, $wgOut, $wgLang, $wgRequest;
+ global $wgOut, $wgLang, $wgRequest;
$wgOut->setPageTitle( wfMsgExt( 'deletedcontributions-title', array( 'parsemag' ) ) );
@@ -248,7 +298,7 @@ class DeletedContributionsPage extends SpecialPage {
$pager = new DeletedContribsPager( $target, $options['namespace'] );
if ( !$pager->getNumRows() ) {
- $wgOut->addWikiText( wfMsg( 'nocontribs' ) );
+ $wgOut->addWikiMsg( 'nocontribs' );
return;
}
@@ -271,50 +321,112 @@ class DeletedContributionsPage extends SpecialPage {
$text = wfMsgNoTrans( $message, $target );
if( !wfEmptyMsg( $message, $text ) && $text != '-' ) {
- $wgOut->addHTML( '<div class="mw-contributions-footer">' );
- $wgOut->addWikiText( $text );
- $wgOut->addHTML( '</div>' );
+ $wgOut->wrapWikiMsg( "<div class='mw-contributions-footer'>\n$1\n</div>", array( $message, $target ) );
}
}
}
/**
* Generates the subheading with links
- * @param $nt @see Title object for the target
+ * @param Title $nt @see Title object for the target
+ * @param integer $id User ID for the target
+ * @return String: appropriately-escaped HTML to be output literally
+ * @todo Fixme: almost the same as contributionsSub in SpecialContributions.php. Could be combined.
*/
function getSubTitle( $nt, $id ) {
- global $wgSysopUserBans, $wgLang, $wgUser;
+ global $wgSysopUserBans, $wgLang, $wgUser, $wgOut;
$sk = $wgUser->getSkin();
- if ( 0 == $id ) {
- $user = $nt->getText();
+ if ( $id === null ) {
+ $user = htmlspecialchars( $nt->getText() );
} else {
- $user = $sk->makeLinkObj( $nt, htmlspecialchars( $nt->getText() ) );
+ $user = $sk->link( $nt, htmlspecialchars( $nt->getText() ) );
}
+ $userObj = User::newFromName( $nt->getText(), /* check for username validity not needed */ false );
$talk = $nt->getTalkPage();
if( $talk ) {
# Talk page link
- $tools[] = $sk->makeLinkObj( $talk, wfMsgHtml( 'talkpagelinktext' ) );
- if( ( $id != 0 && $wgSysopUserBans ) || ( $id == 0 && User::isIP( $nt->getText() ) ) ) {
- # Block link
- if( $wgUser->isAllowed( 'block' ) )
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
- wfMsgHtml( 'blocklink' ) );
+ $tools[] = $sk->link( $talk, wfMsgHtml( 'sp-contributions-talk' ) );
+ if( ( $id !== null && $wgSysopUserBans ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
+ if( $wgUser->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+ if ( $userObj->isBlocked() ) {
+ $tools[] = $sk->linkKnown( # Change block link
+ SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ wfMsgHtml( 'change-blocklink' )
+ );
+ $tools[] = $sk->linkKnown( # Unblock link
+ SpecialPage::getTitleFor( 'BlockList' ),
+ wfMsgHtml( 'unblocklink' ),
+ array(),
+ array(
+ 'action' => 'unblock',
+ 'ip' => $nt->getDBkey()
+ )
+ );
+ }
+ else { # User is not blocked
+ $tools[] = $sk->linkKnown( # Block link
+ SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ wfMsgHtml( 'blocklink' )
+ );
+ }
+ }
# Block log link
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'sp-contributions-blocklog' ), 'type=block&page=' . $nt->getPrefixedUrl() );
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'sp-contributions-blocklog' ),
+ array(),
+ array(
+ 'type' => 'block',
+ 'page' => $nt->getPrefixedText()
+ )
+ );
}
# Other logs link
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'log' ), 'user=' . $nt->getPartialUrl() );
- # Link to undeleted contributions
- $tools[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ),
- wfMsgHtml( 'contributions' ) );
-
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'sp-contributions-logs' ),
+ array(),
+ array( 'user' => $nt->getText() )
+ );
+ # Link to contributions
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ),
+ wfMsgHtml( 'sp-deletedcontributions-contribs' )
+ );
+
+ # Add a link to change user rights for privileged users
+ $userrightsPage = new UserrightsPage();
+ if( $id !== null && $userrightsPage->userCanChangeRights( User::newFromId( $id ) ) ) {
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ),
+ wfMsgHtml( 'sp-contributions-userrights' )
+ );
+ }
+
wfRunHooks( 'ContributionsToolLinks', array( $id, $nt, &$tools ) );
$links = $wgLang->pipeList( $tools );
+
+ // Show a note if the user is blocked and display the last block log entry.
+ if ( $userObj->isBlocked() ) {
+ LogEventsList::showLogExtract(
+ $wgOut,
+ 'block',
+ $nt->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 1,
+ 'showIfEmpty' => false,
+ 'msgKey' => array(
+ 'sp-contributions-blocked-notice',
+ $nt->getText() # Support GENDER in 'sp-contributions-blocked-notice'
+ ),
+ 'offset' => '' # don't use $wgRequest parameter offset
+ )
+ );
+ }
}
// Old message 'contribsub' had one parameter, but that doesn't work for
@@ -333,9 +445,9 @@ class DeletedContributionsPage extends SpecialPage {
* @param $options Array: the options to be included.
*/
function getForm( $options ) {
- global $wgScript, $wgTitle, $wgRequest;
+ global $wgScript, $wgRequest;
- $options['title'] = $wgTitle->getPrefixedText();
+ $options['title'] = SpecialPage::getTitleFor( 'DeletedContributions' )->getPrefixedText();
if ( !isset( $options['target'] ) ) {
$options['target'] = '';
} else {
@@ -366,7 +478,10 @@ class DeletedContributionsPage extends SpecialPage {
$f .= Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', array(), wfMsg( 'sp-contributions-search' ) ) .
Xml::tags( 'label', array( 'for' => 'target' ), wfMsgExt( 'sp-contributions-username', 'parseinline' ) ) . ' ' .
- Xml::input( 'target', 20, $options['target']) . ' '.
+ Html::input( 'target', $options['target'], 'text', array(
+ 'size' => '20',
+ 'required' => ''
+ ) + ( $options['target'] ? array() : array( 'autofocus' ) ) ) . ' '.
Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
Xml::namespaceSelector( $options['namespace'], '' ) . ' ' .
Xml::submitButton( wfMsg( 'sp-contributions-submit' ) ) .
diff --git a/includes/specials/SpecialDisambiguations.php b/includes/specials/SpecialDisambiguations.php
index 0a728b68..1941112a 100644
--- a/includes/specials/SpecialDisambiguations.php
+++ b/includes/specials/SpecialDisambiguations.php
@@ -88,7 +88,7 @@ class DisambiguationsPage extends PageQueryPage {
$dp = Title::makeTitle( $result->namespace, $result->title );
$from = $skin->link( $title );
- $edit = $skin->link( $title, "(".wfMsgHtml("qbedit").")", array(), array( 'redirect' => 'no', 'action' => 'edit' ) );
+ $edit = $skin->link( $title, wfMsgExt( 'parentheses', array( 'escape' ), wfMsg( 'editlink' ) ) , array(), array( 'redirect' => 'no', 'action' => 'edit' ) );
$arr = $wgContLang->getArrow();
$to = $skin->link( $dp );
diff --git a/includes/specials/SpecialDoubleRedirects.php b/includes/specials/SpecialDoubleRedirects.php
index b1bad0c3..893fee9e 100644
--- a/includes/specials/SpecialDoubleRedirects.php
+++ b/includes/specials/SpecialDoubleRedirects.php
@@ -74,16 +74,34 @@ class DoubleRedirectsPage extends PageQueryPage {
}
}
if ( !$result ) {
- return '<s>' . $skin->makeLinkObj( $titleA, '', 'redirect=no' ) . '</s>';
+ return '<s>' . $skin->link( $titleA, null, array(), array( 'redirect' => 'no' ) ) . '</s>';
}
$titleB = Title::makeTitle( $result->nsb, $result->tb );
$titleC = Title::makeTitle( $result->nsc, $result->tc );
- $linkA = $skin->makeKnownLinkObj( $titleA, '', 'redirect=no' );
- $edit = $skin->makeBrokenLinkObj( $titleA, "(".wfMsg("qbedit").")" , 'redirect=no');
- $linkB = $skin->makeKnownLinkObj( $titleB, '', 'redirect=no' );
- $linkC = $skin->makeKnownLinkObj( $titleC );
+ $linkA = $skin->linkKnown(
+ $titleA,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $edit = $skin->linkKnown(
+ $titleA,
+ wfMsgExt( 'parentheses', array( 'escape' ), wfMsg( 'editlink' ) ),
+ array(),
+ array(
+ 'redirect' => 'no',
+ 'action' => 'edit'
+ )
+ );
+ $linkB = $skin->linkKnown(
+ $titleB,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $linkC = $skin->linkKnown( $titleC );
$arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
return( "{$linkA} {$edit} {$arr} {$linkB} {$arr} {$linkC}" );
diff --git a/includes/specials/SpecialEmailuser.php b/includes/specials/SpecialEmailuser.php
index 58e2514e..48088ded 100644
--- a/includes/specials/SpecialEmailuser.php
+++ b/includes/specials/SpecialEmailuser.php
@@ -48,6 +48,12 @@ function wfSpecialEmailuser( $par ) {
case 'mailnologin':
$wgOut->showErrorPage( 'mailnologin', 'mailnologintext' );
return;
+ default:
+ // It's a hook error
+ list( $title, $msg, $params ) = $error;
+ $wgOut->showErrorPage( $title, $msg, $params );
+ return;
+
}
}
@@ -256,7 +262,7 @@ class EmailUserForm {
}
static function validateEmailTarget ( $target ) {
- if ( "" == $target ) {
+ if ( $target == "" ) {
wfDebug( "Target is empty.\n" );
return "notarget";
}
@@ -268,7 +274,7 @@ class EmailUserForm {
}
$nu = User::newFromName( $nt->getText() );
- if( is_null( $nu ) || !$nu->getId() ) {
+ if( !$nu instanceof User || !$nu->getId() ) {
wfDebug( "Target is invalid user.\n" );
return "notarget";
} else if ( !$nu->isEmailConfirmed() ) {
@@ -284,6 +290,10 @@ class EmailUserForm {
static function getPermissionsError ( $user, $editToken ) {
if( !$user->canSendEmail() ) {
wfDebug( "User can't send.\n" );
+ // FIXME: this is also the error if user is in a group
+ // that is not allowed to send e-mail (no right
+ // 'sendemail'). Error messages should probably
+ // be more fine grained.
return "mailnologin";
}
@@ -297,12 +307,17 @@ class EmailUserForm {
return 'actionthrottledtext';
}
+ $hookErr = null;
+ wfRunHooks( 'EmailUserPermissionsErrors', array( $user, $editToken, &$hookErr ) );
+
+ if ($hookErr) {
+ return $hookErr;
+ }
+
if( !$user->matchEditToken( $editToken ) ) {
wfDebug( "Matching edit token failed.\n" );
return 'sessionfailure';
}
-
- return;
}
static function newFromURL( $target, $text, $subject, $cc_me )
diff --git a/includes/specials/SpecialExport.php b/includes/specials/SpecialExport.php
index 8bf16a71..b9a44d48 100644
--- a/includes/specials/SpecialExport.php
+++ b/includes/specials/SpecialExport.php
@@ -44,17 +44,18 @@ class SpecialExport extends SpecialPage {
$this->templates = $wgRequest->getCheck( 'templates' );
$this->images = $wgRequest->getCheck( 'images' ); // Doesn't do anything yet
$this->pageLinkDepth = $this->validateLinkDepth(
- $wgRequest->getIntOrNull( 'pagelink-depth' ) );
+ $wgRequest->getIntOrNull( 'pagelink-depth' ) );
+ $nsindex = '';
if ( $wgRequest->getCheck( 'addcat' ) ) {
$page = $wgRequest->getText( 'pages' );
$catname = $wgRequest->getText( 'catname' );
- if ( $catname !== '' && $catname !== NULL && $catname !== false ) {
+ if ( $catname !== '' && $catname !== null && $catname !== false ) {
$t = Title::makeTitleSafe( NS_MAIN, $catname );
if ( $t ) {
/**
- * @fixme This can lead to hitting memory limit for very large
+ * @todo Fixme: this can lead to hitting memory limit for very large
* categories. Ideally we would do the lookup synchronously
* during the export in a single query.
*/
@@ -65,15 +66,15 @@ class SpecialExport extends SpecialPage {
}
else if( $wgRequest->getCheck( 'addns' ) && $wgExportFromNamespaces ) {
$page = $wgRequest->getText( 'pages' );
- $nsindex = $wgRequest->getText( 'nsindex' );
+ $nsindex = $wgRequest->getText( 'nsindex', '' );
- if ( $nsindex !== '' && $nsindex !== NULL && $nsindex !== false ) {
+ if ( strval( $nsindex ) !== '' ) {
/**
- * Same implementation as above, so same @fixme
+ * Same implementation as above, so same @todo
*/
$nspages = $this->getPagesFromNamespace( $nsindex );
if ( $nspages ) $page .= "\n" . implode( "\n", $nspages );
- }
+ }
}
else if( $wgRequest->wasPosted() && $par == '' ) {
$page = $wgRequest->getText( 'pages' );
@@ -87,15 +88,15 @@ class SpecialExport extends SpecialPage {
$limit = $wgRequest->getInt( 'limit' );
$dir = $wgRequest->getVal( 'dir' );
$history = array(
- 'dir' => 'asc',
- 'offset' => false,
- 'limit' => $wgExportMaxHistory,
- );
+ 'dir' => 'asc',
+ 'offset' => false,
+ 'limit' => $wgExportMaxHistory,
+ );
$historyCheck = $wgRequest->getCheck( 'history' );
if ( $this->curonly ) {
$history = WikiExporter::CURRENT;
} elseif ( !$historyCheck ) {
- if ( $limit > 0 && $limit < $wgExportMaxHistory ) {
+ if ( $limit > 0 && ($wgExportMaxHistory == 0 || $limit < $wgExportMaxHistory ) ) {
$history['limit'] = $limit;
}
if ( !is_null( $offset ) ) {
@@ -146,12 +147,12 @@ class SpecialExport extends SpecialPage {
$wgOut->addWikiMsg( 'exporttext' );
$form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl( 'action=submit' ) ) );
+ 'action' => $this->getTitle()->getLocalUrl( 'action=submit' ) ) );
$form .= Xml::inputLabel( wfMsg( 'export-addcattext' ) , 'catname', 'catname', 40 ) . '&nbsp;';
$form .= Xml::submitButton( wfMsg( 'export-addcat' ), array( 'name' => 'addcat' ) ) . '<br />';
if ( $wgExportFromNamespaces ) {
- $form .= Xml::namespaceSelector( '', null, 'nsindex', wfMsg( 'export-addnstext' ) ) . '&nbsp;';
+ $form .= Xml::namespaceSelector( $nsindex, null, 'nsindex', wfMsg( 'export-addnstext' ) ) . '&nbsp;';
$form .= Xml::submitButton( wfMsg( 'export-addns' ), array( 'name' => 'addns' ) ) . '<br />';
}
@@ -190,10 +191,22 @@ class SpecialExport extends SpecialPage {
private function doExport( $page, $history, $list_authors ) {
global $wgExportMaxHistory;
- /* Split up the input and look up linked pages */
- $inputPages = array_filter( explode( "\n", $page ), array( $this, 'filterPage' ) );
- $pageSet = array_flip( $inputPages );
+ $pageSet = array(); // Inverted index of all pages to look up
+
+ // Split up and normalize input
+ foreach( explode( "\n", $page ) as $pageName ) {
+ $pageName = trim( $pageName );
+ $title = Title::newFromText( $pageName );
+ if( $title && $title->getInterwiki() == '' && $title->getText() !== '' ) {
+ // Only record each page once!
+ $pageSet[$title->getPrefixedText()] = true;
+ }
+ }
+ // Set of original pages to pass on to further manipulation...
+ $inputPages = array_keys( $pageSet );
+
+ // Look up any linked pages if asked...
if( $this->templates ) {
$pageSet = $this->getTemplates( $inputPages, $pageSet );
}
@@ -210,7 +223,13 @@ class SpecialExport extends SpecialPage {
*/
$pages = array_keys( $pageSet );
-
+
+ // Normalize titles to the same format and remove dupes, see bug 17374
+ foreach( $pages as $k => $v ) {
+ $pages[$k] = str_replace( " ", "_", $v );
+ }
+ $pages = array_unique( $pages );
+
/* Ok, let's get to it... */
if( $history == WikiExporter::CURRENT ) {
$lb = false;
@@ -256,8 +275,7 @@ class SpecialExport extends SpecialPage {
$lb->closeAll();
}
}
-
-
+
private function getPagesFromCategory( $title ) {
global $wgContLang;
@@ -374,7 +392,7 @@ class SpecialExport extends SpecialPage {
$title = Title::newFromText( $page );
if( $title ) {
$pageSet[$title->getPrefixedText()] = true;
- /// @fixme May or may not be more efficient to batch these
+ /// @todo Fixme: May or may not be more efficient to batch these
/// by namespace when given multiple input pages.
$result = $dbr->select(
array( 'page', $table ),
@@ -382,7 +400,7 @@ class SpecialExport extends SpecialPage {
array_merge( $join,
array(
'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBKey() ) ),
+ 'page_title' => $title->getDBkey() ) ),
__METHOD__ );
foreach( $result as $row ) {
$template = Title::makeTitle( $row->namespace, $row->title );
@@ -392,12 +410,5 @@ class SpecialExport extends SpecialPage {
}
return $pageSet;
}
-
- /**
- * Callback function to remove empty strings from the pages array.
- */
- private function filterPage( $page ) {
- return $page !== '' && $page !== null;
- }
}
diff --git a/includes/specials/SpecialFewestrevisions.php b/includes/specials/SpecialFewestrevisions.php
index afd5ad48..65d76a65 100644
--- a/includes/specials/SpecialFewestrevisions.php
+++ b/includes/specials/SpecialFewestrevisions.php
@@ -53,15 +53,26 @@ class FewestrevisionsPage extends QueryPage {
global $wgLang, $wgContLang;
$nt = Title::makeTitleSafe( $result->namespace, $result->title );
+ if( !$nt ) {
+ return '<!-- bad title -->';
+ }
+
$text = $wgContLang->convert( $nt->getPrefixedText() );
- $plink = $skin->makeKnownLinkObj( $nt, $text );
+ $plink = $skin->linkKnown(
+ $nt,
+ $text
+ );
- $nl = wfMsgExt( 'nrevisions', array( 'parsemag', 'escape'),
+ $nl = wfMsgExt( 'nrevisions', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->value ) );
- $redirect = $result->redirect ? ' - ' . wfMsg( 'isredirect' ) : '';
- $nlink = $skin->makeKnownLinkObj( $nt, $nl, 'action=history' ) . $redirect;
-
+ $redirect = $result->redirect ? ' - ' . wfMsgHtml( 'isredirect' ) : '';
+ $nlink = $skin->linkKnown(
+ $nt,
+ $nl,
+ array(),
+ array( 'action' => 'history' )
+ ) . $redirect;
return wfSpecialList( $plink, $nlink );
}
diff --git a/includes/specials/SpecialFileDuplicateSearch.php b/includes/specials/SpecialFileDuplicateSearch.php
index 4fde0a60..0ed7020a 100644
--- a/includes/specials/SpecialFileDuplicateSearch.php
+++ b/includes/specials/SpecialFileDuplicateSearch.php
@@ -51,9 +51,12 @@ class FileDuplicateSearchPage extends QueryPage {
$nt = Title::makeTitle( NS_FILE, $result->title );
$text = $wgContLang->convert( $nt->getText() );
- $plink = $skin->makeLink( $nt->getPrefixedText(), $text );
+ $plink = $skin->link(
+ Title::newFromText( $nt->getPrefixedText() ),
+ $text
+ );
- $user = $skin->makeLinkObj( Title::makeTitle( NS_USER, $result->img_user_text ), $result->img_user_text );
+ $user = $skin->link( Title::makeTitle( NS_USER, $result->img_user_text ), $result->img_user_text );
$time = $wgLang->timeanddate( $result->img_timestamp );
return "$plink . . $user . . $time";
@@ -73,7 +76,7 @@ function wfSpecialFileDuplicateSearch( $par = null ) {
if( $title && $title->getText() != '' ) {
$dbr = wfGetDB( DB_SLAVE );
$image = $dbr->tableName( 'image' );
- $encFilename = $dbr->addQuotes( htmlspecialchars( $title->getDBKey() ) );
+ $encFilename = $dbr->addQuotes( htmlspecialchars( $title->getDBkey() ) );
$sql = "SELECT img_sha1 from $image where img_name = $encFilename";
$res = $dbr->query( $sql );
$row = $dbr->fetchRow( $res );
@@ -96,7 +99,7 @@ function wfSpecialFileDuplicateSearch( $par = null ) {
);
if( $hash != '' ) {
- $align = $wgContLang->isRtl() ? 'left' : 'right';
+ $align = $wgContLang->alignEnd();
# Show a thumbnail of the file
$img = wfFindFile( $title );
@@ -122,14 +125,14 @@ function wfSpecialFileDuplicateSearch( $par = null ) {
# Show a short summary
if( $count == 1 ) {
- $wgOut->addHTML( '<p class="mw-fileduplicatesearch-result-1">' .
- wfMsgHtml( 'fileduplicatesearch-result-1', $filename ) .
- '</p>'
+ $wgOut->wrapWikiMsg(
+ "<p class='mw-fileduplicatesearch-result-1'>\n$1\n</p>",
+ array( 'fileduplicatesearch-result-1', $filename )
);
} elseif ( $count > 1 ) {
- $wgOut->addHTML( '<p class="mw-fileduplicatesearch-result-n">' .
- wfMsgExt( 'fileduplicatesearch-result-n', array( 'parseinline' ), $filename, $wgLang->formatNum( $count - 1 ) ) .
- '</p>'
+ $wgOut->wrapWikiMsg(
+ "<p class='mw-fileduplicatesearch-result-n'>\n$1\n</p>",
+ array( 'fileduplicatesearch-result-n', $filename, $wgLang->formatNum( $count - 1 ) )
);
}
}
diff --git a/includes/specials/SpecialFilepath.php b/includes/specials/SpecialFilepath.php
index 4a724b1f..8bc1c68b 100644
--- a/includes/specials/SpecialFilepath.php
+++ b/includes/specials/SpecialFilepath.php
@@ -37,13 +37,13 @@ class FilepathForm {
}
function execute() {
- global $wgOut, $wgTitle, $wgScript;
+ global $wgOut, $wgScript;
$wgOut->addHTML(
Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'specialfilepath' ) ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'filepath' ) ) .
- Xml::hidden( 'title', $wgTitle->getPrefixedText() ) .
+ Xml::hidden( 'title', SpecialPage::getTitleFor( 'Filepath' )->getPrefixedText() ) .
Xml::inputLabel( wfMsg( 'filepath-page' ), 'file', 'file', 25, is_object( $this->mTitle ) ? $this->mTitle->getText() : '' ) . ' ' .
Xml::submitButton( wfMsg( 'filepath-submit' ) ) . "\n" .
Xml::closeElement( 'fieldset' ) .
diff --git a/includes/specials/SpecialImport.php b/includes/specials/SpecialImport.php
index 457e03b4..6beeab7f 100644
--- a/includes/specials/SpecialImport.php
+++ b/includes/specials/SpecialImport.php
@@ -132,11 +132,11 @@ class SpecialImport extends SpecialPage {
}
private function showForm() {
- global $wgUser, $wgOut, $wgRequest, $wgTitle, $wgImportSources, $wgExportMaxLinkDepth;
+ global $wgUser, $wgOut, $wgRequest, $wgImportSources, $wgExportMaxLinkDepth;
if( !$wgUser->isAllowed( 'import' ) && !$wgUser->isAllowed( 'importupload' ) )
return $wgOut->permissionRequired( 'import' );
- $action = $wgTitle->getLocalUrl( 'action=submit' );
+ $action = $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) );
if( $wgUser->isAllowed( 'importupload' ) ) {
$wgOut->addWikiMsg( "importtext" );
@@ -273,7 +273,7 @@ class SpecialImport extends SpecialPage {
* @ingroup SpecialPage
*/
class ImportReporter {
- private $reason=false;
+ private $reason=false;
function __construct( $importer, $upload, $interwiki , $reason=false ) {
$importer->setPageOutCallback( array( $this, 'reportPage' ) );
@@ -299,7 +299,7 @@ class ImportReporter {
$contentCount = $wgContLang->formatNum( $successCount );
if( $successCount > 0 ) {
- $wgOut->addHTML( "<li>" . $skin->makeKnownLinkObj( $title ) . " " .
+ $wgOut->addHTML( "<li>" . $skin->linkKnown( $title ) . " " .
wfMsgExt( 'import-revision-count', array( 'parsemag', 'escape' ), $localCount ) .
"</li>\n"
);
@@ -309,7 +309,7 @@ class ImportReporter {
$detail = wfMsgExt( 'import-logentry-upload-detail', array( 'content', 'parsemag' ),
$contentCount );
if ( $this->reason ) {
- $detail .= wfMsgForContent( 'colon-separator' ) . $this->reason;
+ $detail .= wfMsgForContent( 'colon-separator' ) . $this->reason;
}
$log->addEntry( 'upload', $title, $detail );
} else {
@@ -318,7 +318,7 @@ class ImportReporter {
$detail = wfMsgExt( 'import-logentry-interwiki-detail', array( 'content', 'parsemag' ),
$contentCount, $interwiki );
if ( $this->reason ) {
- $detail .= wfMsgForContent( 'colon-separator' ) . $this->reason;
+ $detail .= wfMsgForContent( 'colon-separator' ) . $this->reason;
}
$log->addEntry( 'interwiki', $title, $detail );
}
@@ -333,7 +333,8 @@ class ImportReporter {
$article->updateRevisionOn( $dbw, $nullRevision );
wfRunHooks( 'NewRevisionFromEditComplete', array($article, $nullRevision, $latest, $wgUser) );
} else {
- $wgOut->addHTML( '<li>' . wfMsgHtml( 'import-nonewrevisions' ) . '</li>' );
+ $wgOut->addHTML( "<li>" . $skin->linkKnown( $title ) . " " .
+ wfMsgHtml( 'import-nonewrevisions' ) . "</li>\n" );
}
}
diff --git a/includes/specials/SpecialIpblocklist.php b/includes/specials/SpecialIpblocklist.php
index 4ba1c811..dfdcf1a7 100644
--- a/includes/specials/SpecialIpblocklist.php
+++ b/includes/specials/SpecialIpblocklist.php
@@ -5,12 +5,13 @@
*/
/**
+ * @param $ip part of title: Special:Ipblocklist/<ip>.
* @todo document
*/
-function wfSpecialIpblocklist() {
+function wfSpecialIpblocklist( $ip = '' ) {
global $wgUser, $wgOut, $wgRequest;
-
- $ip = trim( $wgRequest->getVal( 'wpUnblockAddress', $wgRequest->getVal( 'ip' ) ) );
+ $ip = $wgRequest->getVal( 'ip', $ip );
+ $ip = trim( $wgRequest->getVal( 'wpUnblockAddress', $ip ) );
$id = $wgRequest->getVal( 'id' );
$reason = $wgRequest->getText( 'wpUnblockReason' );
$action = $wgRequest->getText( 'action' );
@@ -94,7 +95,7 @@ class IPUnblockForm {
$titleObj = SpecialPage::getTitleFor( "Ipblocklist" );
$action = $titleObj->getLocalURL( "action=submit" );
- if ( "" != $err ) {
+ if ( $err != "" ) {
$wgOut->setSubtitle( wfMsg( "formerror" ) );
$wgOut->addWikiText( Xml::tags( 'span', array( 'class' => 'error' ), $err ) . "\n" );
}
@@ -184,8 +185,7 @@ class IPUnblockForm {
if ( !$block ) {
return array('ipb_cant_unblock', htmlspecialchars($id));
}
- if( $block->mRangeStart != $block->mRangeEnd
- && !strstr( $ip, "/" ) ) {
+ if( $block->mRangeStart != $block->mRangeEnd && !strstr( $ip, "/" ) ) {
/* If the specified IP is a single address, and the block is
* a range block, don't unblock the range. */
$range = $block->mAddress;
@@ -221,8 +221,7 @@ class IPUnblockForm {
function doSubmit() {
global $wgOut, $wgUser;
$retval = self::doUnblock($this->id, $this->ip, $this->reason, $range, $wgUser);
- if(!empty($retval))
- {
+ if( !empty($retval) ) {
$key = array_shift($retval);
$this->showForm(wfMsgReal($key, $retval));
return;
@@ -237,7 +236,7 @@ class IPUnblockForm {
global $wgOut, $wgUser;
$wgOut->setPagetitle( wfMsg( "ipblocklist" ) );
- if ( "" != $msg ) {
+ if ( $msg != "" ) {
$wgOut->setSubtitle( $msg );
}
@@ -264,10 +263,9 @@ class IPUnblockForm {
// Fixme -- encapsulate this sort of query-building.
$dbr = wfGetDB( DB_SLAVE );
$encIp = $dbr->addQuotes( IP::sanitizeIP($this->ip) );
- $encRange = $dbr->addQuotes( "$range%" );
$encAddr = $dbr->addQuotes( $iaddr );
$conds[] = "(ipb_address = $encIp) OR
- (ipb_range_start LIKE $encRange AND
+ (ipb_range_start" . $dbr->buildLike( $range, $dbr->anyString() ) . " AND
ipb_range_start <= $encAddr
AND ipb_range_end >= $encAddr)";
} else {
@@ -299,25 +297,48 @@ class IPUnblockForm {
$conds[] = "ipb_user != 0 OR ipb_range_end > ipb_range_start";
}
+ // Search form
+ $wgOut->addHTML( $this->searchForm() );
+
+ // Check for other blocks, i.e. global/tor blocks
+ $otherBlockLink = array();
+ wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockLink, $this->ip ) );
+
+ // Show additional header for the local block only when other blocks exists.
+ // Not necessary in a standard installation without such extensions enabled
+ if( count( $otherBlockLink ) ) {
+ $wgOut->addHTML(
+ Html::rawElement( 'h2', array(), wfMsg( 'ipblocklist-localblock' ) ) . "\n"
+ );
+ }
$pager = new IPBlocklistPager( $this, $conds );
if ( $pager->getNumRows() ) {
$wgOut->addHTML(
- $this->searchForm() .
$pager->getNavigationBar() .
Xml::tags( 'ul', null, $pager->getBody() ) .
$pager->getNavigationBar()
);
} elseif ( $this->ip != '') {
- $wgOut->addHTML( $this->searchForm() );
$wgOut->addWikiMsg( 'ipblocklist-no-results' );
} else {
- $wgOut->addHTML( $this->searchForm() );
$wgOut->addWikiMsg( 'ipblocklist-empty' );
}
+
+ if( count( $otherBlockLink ) ) {
+ $wgOut->addHTML(
+ Html::rawElement( 'h2', array(), wfMsgExt( 'ipblocklist-otherblocks', 'parseinline', count( $otherBlockLink ) ) ) . "\n"
+ );
+ $list = '';
+ foreach( $otherBlockLink as $link ) {
+ $list .= Html::rawElement( 'li', array(), $link ) . "\n";
+ }
+ $wgOut->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
+ }
+
}
function searchForm() {
- global $wgTitle, $wgScript, $wgRequest, $wgLang;
+ global $wgScript, $wgRequest, $wgLang;
$showhide = array( wfMsg( 'show' ), wfMsg( 'hide' ) );
$nondefaults = array();
@@ -345,7 +366,7 @@ class IPUnblockForm {
return
Xml::tags( 'form', array( 'action' => $wgScript ),
- Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() ) .
+ Xml::hidden( 'title', SpecialPage::getTitleFor( 'Ipblocklist' )->getPrefixedDbKey() ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'ipblocklist-legend' ) ) .
Xml::inputLabel( wfMsg( 'ipblocklist-username' ), 'ip', 'ip', /* size */ false, $this->ip ) .
@@ -366,7 +387,7 @@ class IPUnblockForm {
global $wgUser;
$sk = $wgUser->getSkin();
$params = $override + $options;
- $ipblocklist = SpecialPage::getTitleFor( 'IPBlockList' );
+ $ipblocklist = SpecialPage::getTitleFor( 'Ipblocklist' );
return $sk->link( $ipblocklist, htmlspecialchars( $title ),
( $active ? array( 'style'=>'font-weight: bold;' ) : array() ), $params, array( 'known' ) );
}
@@ -386,11 +407,10 @@ class IPUnblockForm {
if( is_null( $msg ) ) {
$msg = array();
$keys = array( 'infiniteblock', 'expiringblock', 'unblocklink', 'change-blocklink',
- 'anononlyblock', 'createaccountblock', 'noautoblockblock', 'emailblock', 'blocklist-nousertalk' );
+ 'anononlyblock', 'createaccountblock', 'noautoblockblock', 'emailblock', 'blocklist-nousertalk', 'blocklistline' );
foreach( $keys as $key ) {
$msg[$key] = wfMsgHtml( $key );
}
- $msg['blocklistline'] = wfMsg( 'blocklistline' );
}
# Prepare links to the blocker's user and talk pages
@@ -407,7 +427,7 @@ class IPUnblockForm {
. $sk->userToolLinks( $block->mUser, $block->mAddress, false, Linker::TOOL_LINKS_NOBLOCK );
}
- $formattedTime = $wgLang->timeanddate( $block->mTimestamp, true );
+ $formattedTime = htmlspecialchars( $wgLang->timeanddate( $block->mTimestamp, true ) );
$properties = array();
$properties[] = Block::formatExpiry( $block->mExpiry );
@@ -445,7 +465,7 @@ class IPUnblockForm {
# Create changeblocklink for all blocks with exception of autoblocks
if( !$block->mAuto ) {
- $changeblocklink = wfMsg( 'pipe-separator' ) .
+ $changeblocklink = wfMsgExt( 'pipe-separator', 'escapenoentities' ) .
$sk->link( SpecialPage::getTitleFor( 'Blockip', $block->mAddress ),
$msg['change-blocklink'],
array(), array(), 'known' );
@@ -453,7 +473,7 @@ class IPUnblockForm {
$toolLinks = "($unblocklink$changeblocklink)";
}
- $comment = $sk->commentBlock( $block->mReason );
+ $comment = $sk->commentBlock( htmlspecialchars($block->mReason) );
$s = "{$line} $comment";
if ( $block->mHideName )
diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php
index 267ef690..5913f4b4 100644
--- a/includes/specials/SpecialLinkSearch.php
+++ b/includes/specials/SpecialLinkSearch.php
@@ -9,9 +9,7 @@
/**
* Special:LinkSearch to search the external-links table.
- * @ingroup SpecialPage
*/
-
function wfSpecialLinkSearch( $par ) {
list( $limit, $offset ) = wfCheckLimits();
@@ -48,7 +46,7 @@ function wfSpecialLinkSearch( $par ) {
$self = Title::makeTitle( NS_SPECIAL, 'Linksearch' );
- $wgOut->addWikiText( wfMsg( 'linksearch-text', '<nowiki>' . $wgLang->commaList( $wgUrlProtocols) . '</nowiki>' ) );
+ $wgOut->addWikiMsg( 'linksearch-text', '<nowiki>' . $wgLang->commaList( $wgUrlProtocols ) . '</nowiki>' );
$s = Xml::openElement( 'form', array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $GLOBALS['wgScript'] ) ) .
Xml::hidden( 'title', $self->getPrefixedDbKey() ) .
'<fieldset>' .
@@ -96,11 +94,11 @@ class LinkSearchPage extends QueryPage {
*/
static function mungeQuery( $query , $prot ) {
$field = 'el_index';
- $rv = LinkFilter::makeLike( $query , $prot );
+ $rv = LinkFilter::makeLikeArray( $query , $prot );
if ($rv === false) {
//makeLike doesn't handle wildcard in IP, so we'll have to munge here.
if (preg_match('/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/', $query)) {
- $rv = $prot . rtrim($query, " \t*") . '%';
+ $rv = array( $prot . rtrim($query, " \t*"), $dbr->anyString() );
$field = 'el_to';
}
}
@@ -125,8 +123,8 @@ class LinkSearchPage extends QueryPage {
/* strip everything past first wildcard, so that index-based-only lookup would be done */
list( $munged, $clause ) = self::mungeQuery( $this->mQuery, $this->mProt );
- $stripped = substr($munged,0,strpos($munged,'%')+1);
- $encSearch = $dbr->addQuotes( $stripped );
+ $stripped = LinkFilter::keepOneWildcard( $munged );
+ $like = $dbr->buildLike( $stripped );
$encSQL = '';
if ( isset ($this->mNs) && !$wgMiserMode )
@@ -144,14 +142,14 @@ class LinkSearchPage extends QueryPage {
$externallinks $use_index
WHERE
page_id=el_from
- AND $clause LIKE $encSearch
+ AND $clause $like
$encSQL";
}
function formatResult( $skin, $result ) {
$title = Title::makeTitle( $result->namespace, $result->title );
$url = $result->url;
- $pageLink = $skin->makeKnownLinkObj( $title );
+ $pageLink = $skin->linkKnown( $title );
$urlLink = $skin->makeExternalLink( $url, $url );
return wfMsgHtml( 'linksearch-line', $urlLink, $pageLink );
@@ -164,7 +162,7 @@ class LinkSearchPage extends QueryPage {
global $wgOut;
list( $this->mMungedQuery, $clause ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
if( $this->mMungedQuery === false ) {
- $wgOut->addWikiText( wfMsg( 'linksearch-error' ) );
+ $wgOut->addWikiMsg( 'linksearch-error' );
} else {
// For debugging
// Generates invalid xhtml with patterns that contain --
diff --git a/includes/specials/SpecialListUserRestrictions.php b/includes/specials/SpecialListUserRestrictions.php
deleted file mode 100644
index 98e7111f..00000000
--- a/includes/specials/SpecialListUserRestrictions.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-
-function wfSpecialListUserRestrictions() {
- global $wgOut, $wgRequest;
-
- $wgOut->addWikiMsg( 'listuserrestrictions-intro' );
- $f = new SpecialListUserRestrictionsForm();
- $wgOut->addHTML( $f->getHTML() );
-
- if( !mt_rand( 0, 10 ) )
- UserRestriction::purgeExpired();
- $pager = new UserRestrictionsPager( $f->getConds() );
- if( $pager->getNumRows() )
- $wgOut->addHTML( $pager->getNavigationBar() .
- Xml::tags( 'ul', null, $pager->getBody() ) .
- $pager->getNavigationBar()
- );
- elseif( $f->getConds() )
- $wgOut->addWikiMsg( 'listuserrestrictions-notfound' );
- else
- $wgOut->addWikiMsg( 'listuserrestrictions-empty' );
-}
-
-class SpecialListUserRestrictionsForm {
- public function getHTML() {
- global $wgRequest, $wgScript, $wgTitle;
- $action = htmlspecialchars( $wgScript );
- $s = '';
- $s .= Xml::fieldset( wfMsg( 'listuserrestrictions-legend' ) );
- $s .= "<form action=\"{$action}\">";
- $s .= Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() );
- $s .= Xml::label( wfMsgHtml( 'listuserrestrictions-type' ), 'type' ) . '&nbsp;' .
- self::typeSelector( 'type', $wgRequest->getVal( 'type' ), 'type' );
- $s .= '&nbsp;';
- $s .= Xml::inputLabel( wfMsgHtml( 'listuserrestrictions-user' ), 'user', 'user',
- false, $wgRequest->getVal( 'user' ) );
- $s .= '<p>';
- $s .= Xml::label( wfMsgHtml( 'listuserrestrictions-namespace' ), 'namespace' ) . '&nbsp;' .
- Xml::namespaceSelector( $wgRequest->getVal( 'namespace' ), '', 'namespace' );
- $s .= '&nbsp;';
- $s .= Xml::inputLabel( wfMsgHtml( 'listuserrestrictions-page' ), 'page', 'page',
- false, $wgRequest->getVal( 'page' ) );
- $s .= Xml::submitButton( wfMsg( 'listuserrestrictions-submit' ) );
- $s .= "</p></form></fieldset>";
- return $s;
- }
-
- public static function typeSelector( $name = 'type', $value = '', $id = false ) {
- $s = new XmlSelect( $name, $id, $value );
- $s->addOption( wfMsg( 'userrestrictiontype-none' ), '' );
- $s->addOption( wfMsg( 'userrestrictiontype-page' ), UserRestriction::PAGE );
- $s->addOption( wfMsg( 'userrestrictiontype-namespace' ), UserRestriction::NAMESPACE );
- return $s->getHTML();
- }
-
- public function getConds() {
- global $wgRequest;
- $conds = array();
-
- $type = $wgRequest->getVal( 'type' );
- if( in_array( $type, array( UserRestriction::PAGE, UserRestriction::NAMESPACE ) ) )
- $conds['ur_type'] = $type;
-
- $user = $wgRequest->getVal( 'user' );
- if( $user )
- $conds['ur_user_text'] = $user;
-
- $namespace = $wgRequest->getVal( 'namespace' );
- if( $namespace || $namespace === '0' )
- $conds['ur_namespace'] = $namespace;
-
- $page = $wgRequest->getVal( 'page' );
- $title = Title::newFromText( $page );
- if( $title ) {
- $conds['ur_page_namespace'] = $title->getNamespace();
- $conds['ur_page_title'] = $title->getDBKey();
- }
-
- return $conds;
- }
-}
-
-class UserRestrictionsPager extends ReverseChronologicalPager {
- public $mConds;
-
- public function __construct( $conds = array() ) {
- $this->mConds = $conds;
- parent::__construct();
- }
-
- public function getStartBody() {
- # Copied from Special:Ipblocklist
- wfProfileIn( __METHOD__ );
- # Do a link batch query
- $this->mResult->seek( 0 );
- $lb = new LinkBatch;
-
- # Faster way
- # Usernames and titles are in fact related by a simple substitution of space -> underscore
- # The last few lines of Title::secureAndSplit() tell the story.
- foreach( $this->mResult as $row ) {
- $name = str_replace( ' ', '_', $row->ur_by_text );
- $lb->add( NS_USER, $name );
- $lb->add( NS_USER_TALK, $name );
- $name = str_replace( ' ', '_', $row->ur_user_text );
- $lb->add( NS_USER, $name );
- $lb->add( NS_USER_TALK, $name );
- if( $row->ur_type == UserRestriction::PAGE )
- $lb->add( $row->ur_page_namespace, $row->ur_page_title );
- }
- $lb->execute();
- wfProfileOut( __METHOD__ );
- return '';
- }
-
- public function getQueryInfo() {
- return array(
- 'tables' => 'user_restrictions',
- 'fields' => '*',
- 'conds' => $this->mConds,
- );
- }
-
- public function formatRow( $row ) {
- return self::formatRestriction( UserRestriction::newFromRow( $row ) );
- }
-
- // Split off for use on Special:RestrictUser
- public static function formatRestriction( $r ) {
- global $wgUser, $wgLang;
- $sk = $wgUser->getSkin();
- $timestamp = $wgLang->timeanddate( $r->getTimestamp(), true );
- $blockerlink = $sk->userLink( $r->getBlockerId(), $r->getBlockerText() ) .
- $sk->userToolLinks( $r->getBlockerId(), $r->getBlockerText() );
- $subjlink = $sk->userLink( $r->getSubjectId(), $r->getSubjectText() ) .
- $sk->userToolLinks( $r->getSubjectId(), $r->getSubjectText() );
- $expiry = is_numeric( $r->getExpiry() ) ?
- wfMsg( 'listuserrestrictions-row-expiry', $wgLang->timeanddate( $r->getExpiry() ) ) :
- wfMsg( 'ipbinfinite' );
- $msg = '';
- if( $r->isNamespace() ) {
- $msg = wfMsgHtml( 'listuserrestrictions-row-ns', $subjlink,
- $wgLang->getDisplayNsText( $r->getNamespace() ), $expiry );
- }
- if( $r->isPage() ) {
- $pagelink = $sk->link( $r->getPage() );
- $msg = wfMsgHtml( 'listuserrestrictions-row-page', $subjlink,
- $pagelink, $expiry );
- }
- $reason = $sk->commentBlock( $r->getReason() );
- $removelink = '';
- if( $wgUser->isAllowed( 'restrict' ) ) {
- $removelink = '(' . $sk->link( SpecialPage::getTitleFor( 'RemoveRestrictions' ),
- wfMsgHtml( 'listuserrestrictions-remove' ), array(), array( 'id' => $r->getId() ) ) . ')';
- }
- return "<li>{$timestamp}, {$blockerlink} {$msg} {$reason} {$removelink}</li>\n";
- }
-
- public function getIndexField() {
- return 'ur_timestamp';
- }
-}
diff --git a/includes/specials/SpecialListfiles.php b/includes/specials/SpecialListfiles.php
index e15b6959..b9332422 100644
--- a/includes/specials/SpecialListfiles.php
+++ b/includes/specials/SpecialListfiles.php
@@ -34,13 +34,11 @@ class ImageListPager extends TablePager {
}
$search = $wgRequest->getText( 'ilsearch' );
if ( $search != '' && !$wgMiserMode ) {
- $nt = Title::newFromUrl( $search );
+ $nt = Title::newFromURL( $search );
if( $nt ) {
$dbr = wfGetDB( DB_SLAVE );
- $m = $dbr->strencode( strtolower( $nt->getDBkey() ) );
- $m = str_replace( "%", "\\%", $m );
- $m = str_replace( "_", "\\_", $m );
- $this->mQueryConds = array( "LOWER(img_name) LIKE '%{$m}%'" );
+ $this->mQueryConds = array( 'LOWER(img_name)' . $dbr->buildLike( $dbr->anyString(),
+ strtolower( $nt->getDBkey() ), $dbr->anyString() ) );
}
}
@@ -127,21 +125,23 @@ class ImageListPager extends TablePager {
global $wgLang;
switch ( $field ) {
case 'img_timestamp':
- return $wgLang->timeanddate( $value, true );
+ return htmlspecialchars( $wgLang->timeanddate( $value, true ) );
case 'img_name':
static $imgfile = null;
if ( $imgfile === null ) $imgfile = wfMsg( 'imgfile' );
$name = $this->mCurrentRow->img_name;
- $link = $this->getSkin()->makeKnownLinkObj( Title::makeTitle( NS_FILE, $name ), $value );
+ $link = $this->getSkin()->linkKnown( Title::makeTitle( NS_FILE, $name ), $value );
$image = wfLocalFile( $value );
$url = $image->getURL();
$download = Xml::element('a', array( 'href' => $url ), $imgfile );
return "$link ($download)";
case 'img_user_text':
if ( $this->mCurrentRow->img_user ) {
- $link = $this->getSkin()->makeLinkObj( Title::makeTitle( NS_USER, $value ),
- htmlspecialchars( $value ) );
+ $link = $this->getSkin()->link(
+ Title::makeTitle( NS_USER, $value ),
+ htmlspecialchars( $value )
+ );
} else {
$link = htmlspecialchars( $value );
}
@@ -156,10 +156,10 @@ class ImageListPager extends TablePager {
}
function getForm() {
- global $wgRequest, $wgMiserMode;
+ global $wgRequest, $wgScript, $wgMiserMode;
$search = $wgRequest->getText( 'ilsearch' );
- $s = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $this->getTitle()->getLocalURL(), 'id' => 'mw-listfiles-form' ) ) .
+ $s = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listfiles-form' ) ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'listfiles' ) ) .
Xml::tags( 'label', null, wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) );
diff --git a/includes/specials/SpecialListgrouprights.php b/includes/specials/SpecialListgrouprights.php
index d1fc0818..83724a4f 100644
--- a/includes/specials/SpecialListgrouprights.php
+++ b/includes/specials/SpecialListgrouprights.php
@@ -25,14 +25,15 @@ class SpecialListGroupRights extends SpecialPage {
*/
public function execute( $par ) {
global $wgOut, $wgImplicitGroups, $wgMessageCache;
- global $wgGroupPermissions, $wgAddGroups, $wgRemoveGroups;
+ global $wgGroupPermissions, $wgRevokePermissions, $wgAddGroups, $wgRemoveGroups;
+ global $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
$wgMessageCache->loadAllMessages();
$this->setHeaders();
$this->outputHeader();
$wgOut->addHTML(
- Xml::openElement( 'table', array( 'class' => 'mw-listgrouprights-table' ) ) .
+ Xml::openElement( 'table', array( 'class' => 'wikitable mw-listgrouprights-table' ) ) .
'<tr>' .
Xml::element( 'th', null, wfMsg( 'listgrouprights-group' ) ) .
Xml::element( 'th', null, wfMsg( 'listgrouprights-rights' ) ) .
@@ -40,7 +41,7 @@ class SpecialListGroupRights extends SpecialPage {
);
foreach( $wgGroupPermissions as $group => $permissions ) {
- $groupname = ( $group == '*' ) ? 'all' : htmlspecialchars( $group ); // Replace * with a more descriptive groupname
+ $groupname = ( $group == '*' ) ? 'all' : $group; // Replace * with a more descriptive groupname
$msg = wfMsg( 'group-' . $groupname );
if ( wfEmptyMsg( 'group-' . $groupname, $msg ) || $msg == '' ) {
@@ -58,23 +59,41 @@ class SpecialListGroupRights extends SpecialPage {
if( $group == '*' ) {
// Do not make a link for the generic * group
- $grouppage = $groupnameLocalized;
+ $grouppage = htmlspecialchars($groupnameLocalized);
} else {
- $grouppage = $this->skin->makeLink( $grouppageLocalized, $groupnameLocalized );
+ $grouppage = $this->skin->link(
+ Title::newFromText( $grouppageLocalized ),
+ htmlspecialchars($groupnameLocalized)
+ );
}
if ( $group === 'user' ) {
// Link to Special:listusers for implicit group 'user'
- $grouplink = '<br />' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Listusers' ), wfMsgHtml( 'listgrouprights-members' ), '' );
+ $grouplink = '<br />' . $this->skin->link(
+ SpecialPage::getTitleFor( 'Listusers' ),
+ wfMsgHtml( 'listgrouprights-members' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
} elseif ( !in_array( $group, $wgImplicitGroups ) ) {
- $grouplink = '<br />' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Listusers' ), wfMsgHtml( 'listgrouprights-members' ), 'group=' . $group );
+ $grouplink = '<br />' . $this->skin->link(
+ SpecialPage::getTitleFor( 'Listusers' ),
+ wfMsgHtml( 'listgrouprights-members' ),
+ array(),
+ array( 'group' => $group ),
+ array( 'known', 'noclasses' )
+ );
} else {
// No link to Special:listusers for other implicit groups as they are unlistable
$grouplink = '';
}
+ $revoke = isset( $wgRevokePermissions[$group] ) ? $wgRevokePermissions[$group] : array();
$addgroups = isset( $wgAddGroups[$group] ) ? $wgAddGroups[$group] : array();
$removegroups = isset( $wgRemoveGroups[$group] ) ? $wgRemoveGroups[$group] : array();
+ $addgroupsSelf = isset( $wgGroupsAddToSelf[$group] ) ? $wgGroupsAddToSelf[$group] : array();
+ $removegroupsSelf = isset( $wgGroupsRemoveFromSelf[$group] ) ? $wgGroupsRemoveFromSelf[$group] : array();
$wgOut->addHTML(
'<tr>
@@ -82,30 +101,47 @@ class SpecialListGroupRights extends SpecialPage {
$grouppage . $grouplink .
'</td>
<td>' .
- self::formatPermissions( $permissions, $addgroups, $removegroups ) .
+ self::formatPermissions( $permissions, $revoke, $addgroups, $removegroups, $addgroupsSelf, $removegroupsSelf ) .
'</td>
</tr>'
);
}
$wgOut->addHTML(
- Xml::closeElement( 'table' ) . "\n"
+ Xml::closeElement( 'table' ) . "\n<br /><hr />\n"
);
+ $wgOut->wrapWikiMsg( "<div class=\"mw-listgrouprights-key\">\n$1\n</div>", 'listgrouprights-key' );
}
/**
* Create a user-readable list of permissions from the given array.
*
* @param $permissions Array of permission => bool (from $wgGroupPermissions items)
+ * @param $revoke Array of permission => bool (from $wgRevokePermissions items)
+ * @param $add Array of groups this group is allowed to add or true
+ * @param $remove Array of groups this group is allowed to remove or true
+ * @param $addSelf Array of groups this group is allowed to add to self or true
+ * @param $removeSelf Array of group this group is allowed to remove from self or true
* @return string List of all granted permissions, separated by comma separator
*/
- private static function formatPermissions( $permissions, $add, $remove ) {
+ private static function formatPermissions( $permissions, $revoke, $add, $remove, $addSelf, $removeSelf ) {
global $wgLang;
+
$r = array();
foreach( $permissions as $permission => $granted ) {
- if ( $granted ) {
+ //show as granted only if it isn't revoked to prevent duplicate display of permissions
+ if( $granted && ( !isset( $revoke[$permission] ) || !$revoke[$permission] ) ) {
$description = wfMsgExt( 'listgrouprights-right-display', array( 'parseinline' ),
User::getRightDescription( $permission ),
- $permission
+ '<span class="mw-listgrouprights-right-name">' . $permission . '</span>'
+ );
+ $r[] = $description;
+ }
+ }
+ foreach( $revoke as $permission => $revoked ) {
+ if( $revoked ) {
+ $description = wfMsgExt( 'listgrouprights-right-revoked', array( 'parseinline' ),
+ User::getRightDescription( $permission ),
+ '<span class="mw-listgrouprights-right-name">' . $permission . '</span>'
);
$r[] = $description;
}
@@ -114,13 +150,27 @@ class SpecialListGroupRights extends SpecialPage {
if( $add === true ){
$r[] = wfMsgExt( 'listgrouprights-addgroup-all', array( 'escape' ) );
} else if( is_array( $add ) && count( $add ) ) {
+ $add = array_values( array_unique( $add ) );
$r[] = wfMsgExt( 'listgrouprights-addgroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $add ) ), count( $add ) );
}
if( $remove === true ){
$r[] = wfMsgExt( 'listgrouprights-removegroup-all', array( 'escape' ) );
} else if( is_array( $remove ) && count( $remove ) ) {
+ $remove = array_values( array_unique( $remove ) );
$r[] = wfMsgExt( 'listgrouprights-removegroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ), count( $remove ) );
}
+ if( $addSelf === true ){
+ $r[] = wfMsgExt( 'listgrouprights-addgroup-self-all', array( 'escape' ) );
+ } else if( is_array( $addSelf ) && count( $addSelf ) ) {
+ $addSelf = array_values( array_unique( $addSelf ) );
+ $r[] = wfMsgExt( 'listgrouprights-addgroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ), count( $addSelf ) );
+ }
+ if( $removeSelf === true ){
+ $r[] = wfMsgExt( 'listgrouprights-removegroup-self-all', array( 'escape' ) );
+ } else if( is_array( $removeSelf ) && count( $removeSelf ) ) {
+ $removeSelf = array_values( array_unique( $removeSelf ) );
+ $r[] = wfMsgExt( 'listgrouprights-removegroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ), count( $removeSelf ) );
+ }
if( empty( $r ) ) {
return '';
} else {
diff --git a/includes/specials/SpecialListredirects.php b/includes/specials/SpecialListredirects.php
index 9555bd16..bf594070 100644
--- a/includes/specials/SpecialListredirects.php
+++ b/includes/specials/SpecialListredirects.php
@@ -32,7 +32,12 @@ class ListredirectsPage extends QueryPage {
# Make a link to the redirect itself
$rd_title = Title::makeTitle( $result->namespace, $result->title );
- $rd_link = $skin->makeLinkObj( $rd_title, '', 'redirect=no' );
+ $rd_link = $skin->link(
+ $rd_title,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
# Find out where the redirect leads
$revision = Revision::newFromTitle( $rd_title );
@@ -41,7 +46,7 @@ class ListredirectsPage extends QueryPage {
$target = Title::newFromRedirect( $revision->getText() );
if( $target ) {
$arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
- $targetLink = $skin->makeLinkObj( $target );
+ $targetLink = $skin->link( $target );
return "$rd_link $arr $targetLink";
} else {
return "<s>$rd_link</s>";
diff --git a/includes/specials/SpecialListusers.php b/includes/specials/SpecialListusers.php
index aa057801..bdb59980 100644
--- a/includes/specials/SpecialListusers.php
+++ b/includes/specials/SpecialListusers.php
@@ -71,10 +71,12 @@ class UsersPager extends AlphabeticPager {
}
function getQueryInfo() {
+ global $wgUser;
$dbr = wfGetDB( DB_SLAVE );
$conds = array();
// Don't show hidden names
- $conds[] = 'ipb_deleted IS NULL OR ipb_deleted = 0';
+ if( !$wgUser->isAllowed('hideuser') )
+ $conds[] = 'ipb_deleted IS NULL';
if( $this->requestedGroup != '' ) {
$conds['ug_group'] = $this->requestedGroup;
$useIndex = '';
@@ -84,7 +86,7 @@ class UsersPager extends AlphabeticPager {
if( $this->requestedUser != '' ) {
# Sorted either by account creation or name
if( $this->creationSort ) {
- $conds[] = 'user_id >= ' . User::idFromName( $this->requestedUser );
+ $conds[] = 'user_id >= ' . intval( User::idFromName( $this->requestedUser ) );
} else {
$conds[] = 'user_name >= ' . $dbr->addQuotes( $this->requestedUser );
}
@@ -97,14 +99,16 @@ class UsersPager extends AlphabeticPager {
$query = array(
'tables' => " $user $useIndex LEFT JOIN $user_groups ON user_id=ug_user
- LEFT JOIN $ipblocks ON user_id=ipb_user AND ipb_auto=0 ",
+ LEFT JOIN $ipblocks ON user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0 ",
'fields' => array(
$this->creationSort ? 'MAX(user_name) AS user_name' : 'user_name',
$this->creationSort ? 'user_id' : 'MAX(user_id) AS user_id',
'MAX(user_editcount) AS edits',
'COUNT(ug_group) AS numgroups',
- 'MAX(ug_group) AS singlegroup',
- 'MIN(user_registration) AS creation'),
+ 'MAX(ug_group) AS singlegroup', // the usergroup if there is only one
+ 'MIN(user_registration) AS creation',
+ 'MAX(ipb_deleted) AS ipb_deleted' // block/hide status
+ ),
'options' => array('GROUP BY' => $this->creationSort ? 'user_id' : 'user_name'),
'conds' => $conds
);
@@ -117,7 +121,7 @@ class UsersPager extends AlphabeticPager {
global $wgLang;
$userPage = Title::makeTitle( NS_USER, $row->user_name );
- $name = $this->getSkin()->makeLinkObj( $userPage, htmlspecialchars( $userPage->getText() ) );
+ $name = $this->getSkin()->link( $userPage, htmlspecialchars( $userPage->getText() ) );
if( $row->numgroups > 1 || ( $this->requestedGroup && $row->numgroups == 1 ) ) {
$list = array();
@@ -131,11 +135,14 @@ class UsersPager extends AlphabeticPager {
}
$item = wfSpecialList( $name, $groups );
+ if( $row->ipb_deleted ) {
+ $item = "<span class=\"deleted\">$item</span>";
+ }
global $wgEdititis;
if ( $wgEdititis ) {
$editCount = $wgLang->formatNum( $row->edits );
- $edits = ' [' . wfMsgExt( 'usereditcount', 'parsemag', $editCount ) . ']';
+ $edits = ' [' . wfMsgExt( 'usereditcount', array( 'parsemag', 'escape' ), $editCount ) . ']';
} else {
$edits = '';
}
@@ -145,7 +152,8 @@ class UsersPager extends AlphabeticPager {
if( $row->creation ) {
$d = $wgLang->date( wfTimestamp( TS_MW, $row->creation ), true );
$t = $wgLang->time( wfTimestamp( TS_MW, $row->creation ), true );
- $created = ' (' . wfMsgHtml( 'usercreated', $d, $t ) . ')';
+ $created = ' (' . wfMsg( 'usercreated', $d, $t ) . ')';
+ $created = htmlspecialchars( $created );
}
wfRunHooks( 'SpecialListusersFormatRow', array( &$item, $row ) );
@@ -185,11 +193,11 @@ class UsersPager extends AlphabeticPager {
Xml::option( wfMsg( 'group-all' ), '' );
foreach( $this->getAllGroups() as $group => $groupText )
$out .= Xml::option( $groupText, $group, $group == $this->requestedGroup );
- $out .= Xml::closeElement( 'select' ) . '<br/>';
+ $out .= Xml::closeElement( 'select' ) . '<br />';
$out .= Xml::checkLabel( wfMsg('listusers-editsonly'), 'editsOnly', 'editsOnly', $this->editsOnly );
$out .= '&nbsp;';
$out .= Xml::checkLabel( wfMsg('listusers-creationsort'), 'creationSort', 'creationSort', $this->creationSort );
- $out .= '<br/>';
+ $out .= '<br />';
wfRunHooks( 'SpecialListusersHeaderForm', array( $this, &$out ) );
@@ -233,7 +241,7 @@ class UsersPager extends AlphabeticPager {
/**
* Get a list of groups the specified user belongs to
*
- * @param int $uid
+ * @param $uid Integer: user id
* @return array
*/
protected static function getGroups( $uid ) {
@@ -245,13 +253,13 @@ class UsersPager extends AlphabeticPager {
/**
* Format a link to a group description page
*
- * @param string $group
+ * @param $group String: group name
* @return string
*/
protected static function buildGroupLink( $group ) {
static $cache = array();
if( !isset( $cache[$group] ) )
- $cache[$group] = User::makeGroupLinkHtml( $group, User::getGroupMember( $group ) );
+ $cache[$group] = User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupMember( $group ) ) );
return $cache[$group];
}
}
diff --git a/includes/specials/SpecialLockdb.php b/includes/specials/SpecialLockdb.php
index 5859d5b2..8c701dd6 100644
--- a/includes/specials/SpecialLockdb.php
+++ b/includes/specials/SpecialLockdb.php
@@ -53,7 +53,7 @@ class DBLockForm {
$wgOut->setPagetitle( wfMsg( 'lockdb' ) );
$wgOut->addWikiMsg( 'lockdbtext' );
- if ( "" != $err ) {
+ if ( $err != "" ) {
$wgOut->setSubtitle( wfMsg( 'formerror' ) );
$wgOut->addHTML( '<p class="error">' . htmlspecialchars( $err ) . "</p>\n" );
}
@@ -65,7 +65,7 @@ class DBLockForm {
$reason = htmlspecialchars( $this->reason );
$token = htmlspecialchars( $wgUser->editToken() );
- $wgOut->addHTML( <<<END
+ $wgOut->addHTML( <<<HTML
<form id="lockdb" method="post" action="{$action}">
{$elr}:
<textarea name="wpLockReason" rows="10" cols="60" wrap="virtual">{$reason}</textarea>
@@ -85,7 +85,7 @@ class DBLockForm {
</table>
<input type="hidden" name="wpEditToken" value="{$token}" />
</form>
-END
+HTML
);
}
diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php
index 2382344b..d1ccc8c4 100644
--- a/includes/specials/SpecialLog.php
+++ b/includes/specials/SpecialLog.php
@@ -52,9 +52,19 @@ function wfSpecialLog( $par = '' ) {
$y = '';
$m = '';
}
+ # Handle type-specific inputs
+ $qc = array();
+ if( $type == 'suppress' ) {
+ $offender = User::newFromName( $wgRequest->getVal('offender'), false );
+ if( $offender && $offender->getId() > 0 ) {
+ $qc = array( 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() );
+ } else if( $offender && IP::isIPAddress( $offender->getName() ) ) {
+ $qc = array( 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() );
+ }
+ }
# Create a LogPager item to get the results and a LogEventsList item to format them...
$loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 );
- $pager = new LogPager( $loglist, $type, $user, $title, $pattern, array(), $y, $m, $tagFilter );
+ $pager = new LogPager( $loglist, $type, $user, $title, $pattern, $qc, $y, $m, $tagFilter );
# Set title and add header
$loglist->showHeader( $pager->getType() );
# Show form options
diff --git a/includes/specials/SpecialMIMEsearch.php b/includes/specials/SpecialMIMEsearch.php
index cdfde24e..dafe003e 100644
--- a/includes/specials/SpecialMIMEsearch.php
+++ b/includes/specials/SpecialMIMEsearch.php
@@ -65,15 +65,20 @@ class MIMEsearchPage extends QueryPage {
$nt = Title::makeTitle( $result->namespace, $result->title );
$text = $wgContLang->convert( $nt->getText() );
- $plink = $skin->makeLink( $nt->getPrefixedText(), $text );
+ $plink = $skin->link(
+ Title::newFromText( $nt->getPrefixedText() ),
+ htmlspecialchars( $text )
+ );
$download = $skin->makeMediaLinkObj( $nt, wfMsgHtml( 'download' ) );
$bytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->img_size ) );
- $dimensions = wfMsgHtml( 'widthheight', $wgLang->formatNum( $result->img_width ),
- $wgLang->formatNum( $result->img_height ) );
- $user = $skin->makeLinkObj( Title::makeTitle( NS_USER, $result->img_user_text ), $result->img_user_text );
- $time = $wgLang->timeanddate( $result->img_timestamp );
+ $dimensions = htmlspecialchars( wfMsg( 'widthheight',
+ $wgLang->formatNum( $result->img_width ),
+ $wgLang->formatNum( $result->img_height )
+ ) );
+ $user = $skin->link( Title::makeTitle( NS_USER, $result->img_user_text ), htmlspecialchars( $result->img_user_text ) );
+ $time = htmlspecialchars( $wgLang->timeanddate( $result->img_timestamp ) );
return "($download) $plink . . $dimensions . . $bytes . . $user . . $time";
}
@@ -83,13 +88,14 @@ class MIMEsearchPage extends QueryPage {
* Output the HTML search form, and constructs the MIMEsearchPage object.
*/
function wfSpecialMIMEsearch( $par = null ) {
- global $wgRequest, $wgTitle, $wgOut;
+ global $wgRequest, $wgOut;
$mime = isset( $par ) ? $par : $wgRequest->getText( 'mime' );
$wgOut->addHTML(
- Xml::openElement( 'form', array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => $wgTitle->getLocalUrl() ) ) .
+ Xml::openElement( 'form', array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => SpecialPage::getTitleFor( 'MIMEsearch' )->getLocalUrl() ) ) .
Xml::openElement( 'fieldset' ) .
+ Xml::hidden( 'title', SpecialPage::getTitleFor( 'MIMEsearch' )->getPrefixedText() ) .
Xml::element( 'legend', null, wfMsg( 'mimesearch' ) ) .
Xml::inputLabel( wfMsg( 'mimetype' ), 'mime', 'mime', 20, $mime ) . ' ' .
Xml::submitButton( wfMsg( 'ilsubmit' ) ) .
diff --git a/includes/specials/SpecialMergeHistory.php b/includes/specials/SpecialMergeHistory.php
index c51ce7c3..1b4ef30c 100644
--- a/includes/specials/SpecialMergeHistory.php
+++ b/includes/specials/SpecialMergeHistory.php
@@ -67,7 +67,7 @@ class MergehistoryForm {
}
function execute() {
- global $wgOut, $wgUser;
+ global $wgOut;
$wgOut->setPagetitle( wfMsgHtml( "mergehistory" ) );
@@ -155,7 +155,7 @@ class MergehistoryForm {
$haveRevisions = $revisions && $revisions->getNumRows() > 0;
$titleObj = SpecialPage::getTitleFor( "Mergehistory" );
- $action = $titleObj->getLocalURL( "action=submit" );
+ $action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
# Start the form here
$top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'merge' ) );
$wgOut->addHTML( $top );
@@ -218,7 +218,7 @@ class MergehistoryForm {
}
function formatRevisionRow( $row ) {
- global $wgUser, $wgLang;
+ global $wgLang;
$rev = new Revision( $row );
@@ -228,8 +228,12 @@ class MergehistoryForm {
$ts = wfTimestamp( TS_MW, $row->rev_timestamp );
$checkBox = Xml::radio( "mergepoint", $ts, false );
- $pageLink = $this->sk->makeKnownLinkObj( $rev->getTitle(),
- htmlspecialchars( $wgLang->timeanddate( $ts ) ), 'oldid=' . $rev->getId() );
+ $pageLink = $this->sk->linkKnown(
+ $rev->getTitle(),
+ htmlspecialchars( $wgLang->timeanddate( $ts ) ),
+ array(),
+ array( 'oldid' => $rev->getId() )
+ );
if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
$pageLink = '<span class="history-deleted">' . $pageLink . '</span>';
}
@@ -238,8 +242,15 @@ class MergehistoryForm {
if( !$rev->userCan( Revision::DELETED_TEXT ) )
$last = $this->message['last'];
else if( isset($this->prevId[$row->rev_id]) )
- $last = $this->sk->makeKnownLinkObj( $rev->getTitle(), $this->message['last'],
- "diff=" . $row->rev_id . "&oldid=" . $this->prevId[$row->rev_id] );
+ $last = $this->sk->linkKnown(
+ $rev->getTitle(),
+ $this->message['last'],
+ array(),
+ array(
+ 'diff' => $row->rev_id,
+ 'oldid' => $this->prevId[$row->rev_id]
+ )
+ );
$userLink = $this->sk->revUserTools( $rev );
@@ -261,8 +272,15 @@ class MergehistoryForm {
if( !$this->userCan($row, Revision::DELETED_TEXT) ) {
return '<span class="history-deleted">' . $wgLang->timeanddate( $ts, true ) . '</span>';
} else {
- $link = $this->sk->makeKnownLinkObj( $titleObj,
- $wgLang->timeanddate( $ts, true ), "target=$target&timestamp=$ts" );
+ $link = $this->sk->linkKnown(
+ $titleObj,
+ $wgLang->timeanddate( $ts, true ),
+ array(),
+ array(
+ 'target' => $target,
+ 'timestamp' => $ts
+ )
+ );
if( $this->isDeleted($row, Revision::DELETED_TEXT) )
$link = '<span class="history-deleted">' . $link . '</span>';
return $link;
@@ -270,7 +288,7 @@ class MergehistoryForm {
}
function merge() {
- global $wgOut, $wgUser;
+ global $wgOut;
# Get the titles directly from the IDs, in case the target page params
# were spoofed. The queries are done based on the IDs, so it's best to
# keep it consistent...
diff --git a/includes/specials/SpecialMostlinked.php b/includes/specials/SpecialMostlinked.php
index 078489bd..f112ae17 100644
--- a/includes/specials/SpecialMostlinked.php
+++ b/includes/specials/SpecialMostlinked.php
@@ -22,22 +22,35 @@ class MostlinkedPage extends QueryPage {
function isExpensive() { return true; }
function isSyndicated() { return false; }
- /**
- * Note: Getting page_namespace only works if $this->isCached() is false
- */
function getSQL() {
+ global $wgMiserMode;
+
$dbr = wfGetDB( DB_SLAVE );
+
+ # In miser mode, reduce the query cost by adding a threshold for large wikis
+ if ( $wgMiserMode ) {
+ $numPages = SiteStats::pages();
+ if ( $numPages > 10000 ) {
+ $cutoff = 100;
+ } elseif ( $numPages > 100 ) {
+ $cutoff = intval( sqrt( $numPages ) );
+ } else {
+ $cutoff = 1;
+ }
+ } else {
+ $cutoff = 1;
+ }
+
list( $pagelinks, $page ) = $dbr->tableNamesN( 'pagelinks', 'page' );
return
"SELECT 'Mostlinked' AS type,
pl_namespace AS namespace,
pl_title AS title,
- COUNT(*) AS value,
- page_namespace
+ COUNT(*) AS value
FROM $pagelinks
LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title
- GROUP BY pl_namespace, pl_title, page_namespace
- HAVING COUNT(*) > 1";
+ GROUP BY pl_namespace, pl_title
+ HAVING COUNT(*) > $cutoff";
}
/**
@@ -57,12 +70,13 @@ class MostlinkedPage extends QueryPage {
* Make a link to "what links here" for the specified title
*
* @param $title Title being queried
+ * @param $caption String: text to display on the link
* @param $skin Skin to use
- * @return string
+ * @return String
*/
function makeWlhLink( &$title, $caption, &$skin ) {
$wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() );
- return $skin->makeKnownLinkObj( $wlh, $caption );
+ return $skin->linkKnown( $wlh, $caption );
}
/**
@@ -75,7 +89,10 @@ class MostlinkedPage extends QueryPage {
function formatResult( $skin, $result ) {
global $wgLang;
$title = Title::makeTitleSafe( $result->namespace, $result->title );
- $link = $skin->makeLinkObj( $title );
+ if ( !$title ) {
+ return '<!-- ' . htmlspecialchars( "Invalid title: [[$title]]" ) . ' -->';
+ }
+ $link = $skin->link( $title );
$wlh = $this->makeWlhLink( $title,
wfMsgExt( 'nlinks', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->value ) ), $skin );
diff --git a/includes/specials/SpecialMostlinkedcategories.php b/includes/specials/SpecialMostlinkedcategories.php
index ab250675..20a35c97 100644
--- a/includes/specials/SpecialMostlinkedcategories.php
+++ b/includes/specials/SpecialMostlinkedcategories.php
@@ -58,7 +58,7 @@ class MostlinkedCategoriesPage extends QueryPage {
$nt = Title::makeTitle( $result->namespace, $result->title );
$text = $wgContLang->convert( $nt->getText() );
- $plink = $skin->makeLinkObj( $nt, htmlspecialchars( $text ) );
+ $plink = $skin->link( $nt, htmlspecialchars( $text ) );
$nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->value ) );
diff --git a/includes/specials/SpecialMostlinkedtemplates.php b/includes/specials/SpecialMostlinkedtemplates.php
index 2d398a38..71a6b539 100644
--- a/includes/specials/SpecialMostlinkedtemplates.php
+++ b/includes/specials/SpecialMostlinkedtemplates.php
@@ -16,7 +16,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Name of the report
*
- * @return string
+ * @return String
*/
public function getName() {
return 'Mostlinkedtemplates';
@@ -25,7 +25,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Is this report expensive, i.e should it be cached?
*
- * @return bool
+ * @return Boolean
*/
public function isExpensive() {
return true;
@@ -34,7 +34,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Is there a feed available?
*
- * @return bool
+ * @return Boolean
*/
public function isSyndicated() {
return false;
@@ -43,7 +43,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Sort the results in descending order?
*
- * @return bool
+ * @return Boolean
*/
public function sortDescending() {
return true;
@@ -52,7 +52,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Generate SQL for the report
*
- * @return string
+ * @return String
*/
public function getSql() {
$dbr = wfGetDB( DB_SLAVE );
@@ -70,8 +70,8 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Pre-cache page existence to speed up link generation
*
- * @param Database $dbr Database connection
- * @param int $res Result pointer
+ * @param $db Database connection
+ * @param $res ResultWrapper
*/
public function preprocessResults( $db, $res ) {
$batch = new LinkBatch();
@@ -86,16 +86,15 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Format a result row
*
- * @param Skin $skin Skin to use for UI elements
- * @param object $result Result row
- * @return string
+ * @param $skin Skin to use for UI elements
+ * @param $result Result row
+ * @return String
*/
public function formatResult( $skin, $result ) {
$title = Title::makeTitleSafe( $result->namespace, $result->title );
- $skin->link( $title );
return wfSpecialList(
- $skin->makeLinkObj( $title ),
+ $skin->link( $title ),
$this->makeWlhLink( $title, $skin, $result )
);
}
@@ -103,10 +102,10 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Make a "what links here" link for a given title
*
- * @param Title $title Title to make the link for
- * @param Skin $skin Skin to use
- * @param object $result Result row
- * @return string
+ * @param $title Title to make the link for
+ * @param $skin Skin to use
+ * @param $result Result row
+ * @return String
*/
private function makeWlhLink( $title, $skin, $result ) {
global $wgLang;
@@ -120,7 +119,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
/**
* Execution function
*
- * @param mixed $par Parameters passed to the page
+ * @param $par Mixed: parameters passed to the page
*/
function wfSpecialMostlinkedtemplates( $par = false ) {
list( $limit, $offset ) = wfCheckLimits();
diff --git a/includes/specials/SpecialMostrevisions.php b/includes/specials/SpecialMostrevisions.php
index f5a0f8c0..414e8d97 100644
--- a/includes/specials/SpecialMostrevisions.php
+++ b/includes/specials/SpecialMostrevisions.php
@@ -42,11 +42,16 @@ class MostrevisionsPage extends QueryPage {
$nt = Title::makeTitle( $result->namespace, $result->title );
$text = $wgContLang->convert( $nt->getPrefixedText() );
- $plink = $skin->makeKnownLinkObj( $nt, $text );
+ $plink = $skin->linkKnown( $nt, $text );
$nl = wfMsgExt( 'nrevisions', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->value ) );
- $nlink = $skin->makeKnownLinkObj( $nt, $nl, 'action=history' );
+ $nlink = $skin->linkKnown(
+ $nt,
+ $nl,
+ array(),
+ array( 'action' => 'history' )
+ );
return wfSpecialList($plink, $nlink);
}
diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php
index 8fcf33a9..02197b19 100644
--- a/includes/specials/SpecialMovepage.php
+++ b/includes/specials/SpecialMovepage.php
@@ -17,7 +17,9 @@ function wfSpecialMovepage( $par = null ) {
}
$target = isset( $par ) ? $par : $wgRequest->getVal( 'target' );
- $oldTitleText = $wgRequest->getText( 'wpOldTitle', $target );
+
+ // Yes, the use of getVal() and getText() is wanted, see bug 20365
+ $oldTitleText = $wgRequest->getVal( 'wpOldTitle', $target );
$newTitleText = $wgRequest->getText( 'wpNewTitle' );
$oldTitle = Title::newFromText( $oldTitleText );
@@ -56,12 +58,12 @@ function wfSpecialMovepage( $par = null ) {
class MovePageForm {
var $oldTitle, $newTitle; # Objects
var $reason; # Text input
- var $moveTalk, $deleteAndMove, $moveSubpages, $fixRedirects, $leaveRedirect; # Checks
+ var $moveTalk, $deleteAndMove, $moveSubpages, $fixRedirects, $leaveRedirect, $moveOverShared; # Checks
private $watch = false;
function __construct( $oldTitle, $newTitle ) {
- global $wgRequest;
+ global $wgRequest, $wgUser;
$target = isset($par) ? $par : $wgRequest->getVal( 'target' );
$this->oldTitle = $oldTitle;
$this->newTitle = $newTitle;
@@ -77,7 +79,8 @@ class MovePageForm {
}
$this->moveSubpages = $wgRequest->getBool( 'wpMovesubpages', false );
$this->deleteAndMove = $wgRequest->getBool( 'wpDeleteAndMove' ) && $wgRequest->getBool( 'wpConfirm' );
- $this->watch = $wgRequest->getCheck( 'wpWatch' );
+ $this->moveOverShared = $wgRequest->getBool( 'wpMoveOverSharedFile', false );
+ $this->watch = $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn();
}
/**
@@ -87,11 +90,11 @@ class MovePageForm {
* OutputPage::wrapWikiMsg().
*/
function showForm( $err ) {
- global $wgOut, $wgUser, $wgFixDoubleRedirects;
+ global $wgOut, $wgUser, $wgContLang, $wgFixDoubleRedirects;
$skin = $wgUser->getSkin();
- $oldTitleLink = $skin->makeLinkObj( $this->oldTitle );
+ $oldTitleLink = $skin->link( $this->oldTitle );
$wgOut->setPagetitle( wfMsg( 'move-page', $this->oldTitle->getPrefixedText() ) );
$wgOut->setSubtitle( wfMsg( 'move-page-backlink', $oldTitleLink ) );
@@ -128,12 +131,21 @@ class MovePageForm {
</tr>";
$err = '';
} else {
+ if ($this->oldTitle->getNamespace() == NS_USER && !$this->oldTitle->isSubpage() ) {
+ $wgOut->wrapWikiMsg( "<div class=\"error mw-moveuserpage-warning\">\n$1\n</div>", 'moveuserpage-warning' );
+ }
$wgOut->addWikiMsg( 'movepagetext' );
$movepagebtn = wfMsg( 'movepagebtn' );
$submitVar = 'wpMove';
$confirm = false;
}
+ if ( !empty($err) && $err[0] == 'file-exists-sharedrepo' && $wgUser->isAllowed( 'reupload-shared' ) ) {
+ $wgOut->addWikiMsg( 'move-over-sharedrepo', $newTitle->getPrefixedText() );
+ $submitVar = 'wpMoveOverSharedFile';
+ $err = '';
+ }
+
$oldTalk = $this->oldTitle->getTalkPage();
$considerTalk = ( !$this->oldTitle->isTalkPage() && $oldTalk->exists() );
@@ -166,6 +178,22 @@ class MovePageForm {
}
}
+ if ( $this->oldTitle->isProtected( 'move' ) ) {
+ # Is the title semi-protected?
+ if ( $this->oldTitle->isSemiProtected( 'move' ) ) {
+ $noticeMsg = 'semiprotectedpagemovewarning';
+ $classes[] = 'mw-textarea-sprotected';
+ } else {
+ # Then it must be protected based on static groups (regular)
+ $noticeMsg = 'protectedpagemovewarning';
+ $classes[] = 'mw-textarea-protected';
+ }
+ $wgOut->addHTML( "<div class='mw-warning-with-logexcerpt'>\n" );
+ $wgOut->addWikiMsg( $noticeMsg );
+ LogEventsList::showLogExtract( $wgOut, 'protect', $this->oldTitle->getPrefixedText(), '', array( 'lim' => 1 ) );
+ $wgOut->addHTML( "</div>\n" );
+ }
+
$wgOut->addHTML(
Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL( 'action=submit' ), 'id' => 'movepage' ) ) .
Xml::openElement( 'fieldset' ) .
@@ -184,7 +212,7 @@ class MovePageForm {
Xml::label( wfMsg( 'newtitle' ), 'wpNewTitle' ) .
"</td>
<td class='mw-input'>" .
- Xml::input( 'wpNewTitle', 40, $newTitle->getPrefixedText(), array( 'type' => 'text', 'id' => 'wpNewTitle' ) ) .
+ Xml::input( 'wpNewTitle', 40, $wgContLang->recodeForEdit( $newTitle->getPrefixedText() ), array( 'type' => 'text', 'id' => 'wpNewTitle' ) ) .
Xml::hidden( 'wpOldTitle', $this->oldTitle->getPrefixedText() ) .
"</td>
</tr>
@@ -193,7 +221,8 @@ class MovePageForm {
Xml::label( wfMsg( 'movereason' ), 'wpReason' ) .
"</td>
<td class='mw-input'>" .
- Xml::tags( 'textarea', array( 'name' => 'wpReason', 'id' => 'wpReason', 'cols' => 60, 'rows' => 2 ), htmlspecialchars( $this->reason ) ) .
+ Html::element( 'textarea', array( 'name' => 'wpReason', 'id' => 'wpReason', 'cols' => 60, 'rows' => 2,
+ 'maxlength' => 200 ), $this->reason ) .
"</td>
</tr>"
);
@@ -242,34 +271,43 @@ class MovePageForm {
<tr>
<td></td>
<td class=\"mw-input\">" .
- Xml::checkLabel( wfMsgExt(
+ Xml::check(
+ 'wpMovesubpages',
+ # Don't check the box if we only have talk subpages to
+ # move and we aren't moving the talk page.
+ $this->moveSubpages && ($this->oldTitle->hasSubpages() || $this->moveTalk),
+ array( 'id' => 'wpMovesubpages' )
+ ) . '&nbsp;' .
+ Xml::tags( 'label', array( 'for' => 'wpMovesubpages' ),
+ wfMsgExt(
( $this->oldTitle->hasSubpages()
? 'move-subpages'
: 'move-talk-subpages' ),
- array( 'parsemag' ),
+ array( 'parseinline' ),
$wgLang->formatNum( $wgMaximumMovedPages ),
# $2 to allow use of PLURAL in message.
$wgMaximumMovedPages
- ),
- 'wpMovesubpages', 'wpMovesubpages',
- # Don't check the box if we only have talk subpages to
- # move and we aren't moving the talk page.
- $this->moveSubpages && ($this->oldTitle->hasSubpages() || $this->moveTalk)
+ )
) .
"</td>
</tr>"
);
}
- $watchChecked = $this->watch || $wgUser->getBoolOption( 'watchmoves' )
- || $this->oldTitle->userIsWatching();
- $wgOut->addHTML( "
+ $watchChecked = $wgUser->isLoggedIn() && ($this->watch || $wgUser->getBoolOption( 'watchmoves' )
+ || $this->oldTitle->userIsWatching());
+ # Don't allow watching if user is not logged in
+ if( $wgUser->isLoggedIn() ) {
+ $wgOut->addHTML( "
<tr>
<td></td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'move-watch' ), 'wpWatch', 'watch', $watchChecked ) .
"</td>
- </tr>
+ </tr>");
+ }
+
+ $wgOut->addHTML( "
{$confirm}
<tr>
<td>&nbsp;</td>
@@ -329,12 +367,24 @@ class MovePageForm {
return;
}
+ # Show a warning if the target file exists on a shared repo
+ if ( $nt->getNamespace() == NS_FILE
+ && !( $this->moveOverShared && $wgUser->isAllowed( 'reupload-shared' ) )
+ && !RepoGroup::singleton()->getLocalRepo()->findFile( $nt )
+ && wfFindFile( $nt ) )
+ {
+ $this->showForm( array('file-exists-sharedrepo') );
+ return;
+
+ }
+
if ( $wgUser->isAllowed( 'suppressredirect' ) ) {
$createRedirect = $this->leaveRedirect;
} else {
$createRedirect = true;
}
+ # Do the actual move.
$error = $ot->moveTo( $nt, true, $this->reason, $createRedirect );
if ( $error !== true ) {
# FIXME: show all the errors in a list, not just the first one
@@ -393,7 +443,7 @@ class MovePageForm {
)
) ) {
$conds = array(
- 'page_title LIKE '.$dbr->addQuotes( $dbr->escapeLike( $ot->getDBkey() ) . '/%' )
+ 'page_title' . $dbr->buildLike( $ot->getDBkey() . '/', $dbr->anyString() )
.' OR page_title = ' . $dbr->addQuotes( $ot->getDBkey() )
);
$conds['page_namespace'] = array();
@@ -406,7 +456,7 @@ class MovePageForm {
} elseif( $this->moveTalk ) {
$conds = array(
'page_namespace' => $ot->getTalkPage()->getNamespace(),
- 'page_title' => $ot->getDBKey()
+ 'page_title' => $ot->getDBkey()
);
} else {
# Skip the query
@@ -428,15 +478,15 @@ class MovePageForm {
$skin = $wgUser->getSkin();
$count = 1;
foreach( $extraPages as $oldSubpage ) {
- if( $oldSubpage->getArticleId() == $ot->getArticleId() ) {
+ if( $ot->equals( $oldSubpage ) ) {
# Already did this one.
continue;
}
$newPageName = preg_replace(
- '#^'.preg_quote( $ot->getDBKey(), '#' ).'#',
- $nt->getDBKey(),
- $oldSubpage->getDBKey()
+ '#^'.preg_quote( $ot->getDBkey(), '#' ).'#',
+ StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # bug 21234
+ $oldSubpage->getDBkey()
);
if( $oldSubpage->isTalkPage() ) {
$newNs = $nt->getTalkPage()->getNamespace();
@@ -447,7 +497,7 @@ class MovePageForm {
# be longer than 255 characters.
$newSubpage = Title::makeTitleSafe( $newNs, $newPageName );
if( !$newSubpage ) {
- $oldLink = $skin->makeKnownLinkObj( $oldSubpage );
+ $oldLink = $skin->linkKnown( $oldSubpage );
$extraOutput []= wfMsgHtml( 'movepage-page-unmoved', $oldLink,
htmlspecialchars(Title::makeName( $newNs, $newPageName )));
continue;
@@ -455,7 +505,7 @@ class MovePageForm {
# This was copy-pasted from Renameuser, bleh.
if ( $newSubpage->exists() && !$oldSubpage->isValidMoveTarget( $newSubpage ) ) {
- $link = $skin->makeKnownLinkObj( $newSubpage );
+ $link = $skin->linkKnown( $newSubpage );
$extraOutput []= wfMsgHtml( 'movepage-page-exists', $link );
} else {
$success = $oldSubpage->moveTo( $newSubpage, true, $this->reason, $createRedirect );
@@ -463,21 +513,26 @@ class MovePageForm {
if ( $this->fixRedirects ) {
DoubleRedirectJob::fixRedirects( 'move', $oldSubpage, $newSubpage );
}
- $oldLink = $skin->makeKnownLinkObj( $oldSubpage, '', 'redirect=no' );
- $newLink = $skin->makeKnownLinkObj( $newSubpage );
+ $oldLink = $skin->linkKnown(
+ $oldSubpage,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $newLink = $skin->linkKnown( $newSubpage );
$extraOutput []= wfMsgHtml( 'movepage-page-moved', $oldLink, $newLink );
+ ++$count;
+ if( $count >= $wgMaximumMovedPages ) {
+ $extraOutput []= wfMsgExt( 'movepage-max-pages', array( 'parsemag', 'escape' ), $wgLang->formatNum( $wgMaximumMovedPages ) );
+ break;
+ }
} else {
- $oldLink = $skin->makeKnownLinkObj( $oldSubpage );
- $newLink = $skin->makeLinkObj( $newSubpage );
+ $oldLink = $skin->linkKnown( $oldSubpage );
+ $newLink = $skin->link( $newSubpage );
$extraOutput []= wfMsgHtml( 'movepage-page-unmoved', $oldLink, $newLink );
}
}
- ++$count;
- if( $count >= $wgMaximumMovedPages ) {
- $extraOutput []= wfMsgExt( 'movepage-max-pages', array( 'parsemag', 'escape' ), $wgLang->formatNum( $wgMaximumMovedPages ) );
- break;
- }
}
if( $extraOutput !== array() ) {
@@ -485,17 +540,24 @@ class MovePageForm {
}
# Deal with watches (we don't watch subpages)
- if( $this->watch ) {
+ if( $this->watch && $wgUser->isLoggedIn() ) {
$wgUser->addWatch( $ot );
$wgUser->addWatch( $nt );
} else {
$wgUser->removeWatch( $ot );
$wgUser->removeWatch( $nt );
}
+
+ # Re-clear the file redirect cache, which may have been polluted by
+ # parsing in messages above. See CR r56745.
+ # FIXME: needs a more robust solution inside FileRepo.
+ if( $ot->getNamespace() == NS_FILE ) {
+ RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $ot );
+ }
}
function showLogFragment( $title, &$out ) {
- $out->addHTML( Xml::element( 'h2', NULL, LogPage::logName( 'move' ) ) );
+ $out->addHTML( Xml::element( 'h2', null, LogPage::logName( 'move' ) ) );
LogEventsList::showLogExtract( $out, 'move', $title->getPrefixedText() );
}
diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php
index 575e37a7..a39b56ee 100644
--- a/includes/specials/SpecialNewimages.php
+++ b/includes/specials/SpecialNewimages.php
@@ -40,7 +40,8 @@ function wfSpecialNewimages( $par, $specialPage ) {
if ($hidebotsql) {
$sql .= "$hidebotsql WHERE ug_group IS NULL";
}
- $sql .= ' ORDER BY img_timestamp DESC LIMIT 1';
+ $sql .= ' ORDER BY img_timestamp DESC';
+ $sql = $dbr->limitResult($sql, 1, false);
$res = $dbr->query( $sql, __FUNCTION__ );
$row = $dbr->fetchRow( $res );
if( $row !== false ) {
@@ -64,13 +65,12 @@ function wfSpecialNewimages( $par, $specialPage ) {
}
$where = array();
- $searchpar = '';
+ $searchpar = array();
if ( $wpIlMatch != '' && !$wgMiserMode) {
- $nt = Title::newFromUrl( $wpIlMatch );
+ $nt = Title::newFromURL( $wpIlMatch );
if( $nt ) {
- $m = $dbr->escapeLike( strtolower( $nt->getDBkey() ) );
- $where[] = "LOWER(img_name) LIKE '%{$m}%'";
- $searchpar = '&wpIlMatch=' . urlencode( $wpIlMatch );
+ $where[] = 'LOWER(img_name) ' . $dbr->buildLike( $dbr->anyString(), strtolower( $nt->getDBkey() ), $dbr->anyString() );
+ $searchpar['wpIlMatch'] = $wpIlMatch;
}
}
@@ -93,7 +93,7 @@ function wfSpecialNewimages( $par, $specialPage ) {
$sql .= ' WHERE ' . $dbr->makeList( $where, LIST_AND );
}
$sql.=' ORDER BY img_timestamp '. ( $invertSort ? '' : ' DESC' );
- $sql.=' LIMIT ' . ( $limit + 1 );
+ $sql = $dbr->limitResult($sql, ( $limit + 1 ), false);
$res = $dbr->query( $sql, __FUNCTION__ );
/**
@@ -125,9 +125,9 @@ function wfSpecialNewimages( $par, $specialPage ) {
$ut = $s->img_user_text;
$nt = Title::newFromText( $name, NS_FILE );
- $ul = $sk->makeLinkObj( Title::makeTitle( NS_USER, $ut ), $ut );
+ $ul = $sk->link( Title::makeTitle( NS_USER, $ut ), $ut );
- $gallery->add( $nt, "$ul<br />\n<i>".$wgLang->timeanddate( $s->img_timestamp, true )."</i><br />\n" );
+ $gallery->add( $nt, "$ul<br />\n<i>".htmlspecialchars($wgLang->timeanddate( $s->img_timestamp, true ))."</i><br />\n" );
$timestamp = wfTimestamp( TS_MW, $s->img_timestamp );
if( empty( $firstTimestamp ) ) {
@@ -162,29 +162,72 @@ function wfSpecialNewimages( $par, $specialPage ) {
# If we change bot visibility, this needs to be carried along.
if( !$hidebots ) {
- $botpar = '&hidebots=0';
+ $botpar = array( 'hidebots' => 0 );
} else {
- $botpar = '';
+ $botpar = array();
}
$now = wfTimestampNow();
$d = $wgLang->date( $now, true );
$t = $wgLang->time( $now, true );
- $dateLink = $sk->makeKnownLinkObj( $titleObj, wfMsgHtml( 'sp-newimages-showfrom', $d, $t ),
- 'from='.$now.$botpar.$searchpar );
-
- $botLink = $sk->makeKnownLinkObj($titleObj, wfMsgHtml( 'showhidebots',
- ($hidebots ? wfMsgHtml('show') : wfMsgHtml('hide'))),'hidebots='.($hidebots ? '0' : '1').$searchpar);
-
+ $query = array_merge(
+ array( 'from' => $now ),
+ $botpar,
+ $searchpar
+ );
+
+ $dateLink = $sk->linkKnown(
+ $titleObj,
+ htmlspecialchars( wfMsg( 'sp-newimages-showfrom', $d, $t ) ),
+ array(),
+ $query
+ );
+
+ $query = array_merge(
+ array( 'hidebots' => ( $hidebots ? 0 : 1 ) ),
+ $searchpar
+ );
+
+ $showhide = $hidebots ? wfMsg( 'show' ) : wfMsg( 'hide' );
+
+ $botLink = $sk->linkKnown(
+ $titleObj,
+ htmlspecialchars( wfMsg( 'showhidebots', $showhide ) ),
+ array(),
+ $query
+ );
$opts = array( 'parsemag', 'escapenoentities' );
$prevLink = wfMsgExt( 'pager-newer-n', $opts, $wgLang->formatNum( $limit ) );
if( $firstTimestamp && $firstTimestamp != $latestTimestamp ) {
- $prevLink = $sk->makeKnownLinkObj( $titleObj, $prevLink, 'from=' . $firstTimestamp . $botpar . $searchpar );
+ $query = array_merge(
+ array( 'from' => $firstTimestamp ),
+ $botpar,
+ $searchpar
+ );
+
+ $prevLink = $sk->linkKnown(
+ $titleObj,
+ $prevLink,
+ array(),
+ $query
+ );
}
$nextLink = wfMsgExt( 'pager-older-n', $opts, $wgLang->formatNum( $limit ) );
if( $shownImages > $limit && $lastTimestamp ) {
- $nextLink = $sk->makeKnownLinkObj( $titleObj, $nextLink, 'until=' . $lastTimestamp.$botpar.$searchpar );
+ $query = array_merge(
+ array( 'until' => $lastTimestamp ),
+ $botpar,
+ $searchpar
+ );
+
+ $nextLink = $sk->linkKnown(
+ $titleObj,
+ $nextLink,
+ array(),
+ $query
+ );
+
}
$prevnext = '<p>' . $botLink . ' '. wfMsgHtml( 'viewprevnext', $prevLink, $nextLink, $dateLink ) .'</p>';
diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php
index 886c41a2..903ddab0 100644
--- a/includes/specials/SpecialNewpages.php
+++ b/includes/specials/SpecialNewpages.php
@@ -89,7 +89,7 @@ class SpecialNewpages extends SpecialPage {
* @return string
*/
public function execute( $par ) {
- global $wgLang, $wgUser, $wgOut;
+ global $wgLang, $wgOut;
$this->setHeaders();
$this->outputHeader();
@@ -165,6 +165,7 @@ class SpecialNewpages extends SpecialPage {
$this->opts->consumeValue( 'offset' ); // don't carry offset, DWIW
$namespace = $this->opts->consumeValue( 'namespace' );
$username = $this->opts->consumeValue( 'username' );
+ $tagFilterVal = $this->opts->consumeValue( 'tagfilter' );
// Check username input validity
$ut = Title::makeTitleSafe( NS_USER, $username );
@@ -177,7 +178,7 @@ class SpecialNewpages extends SpecialPage {
}
$hidden = implode( "\n", $hidden );
- $tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
+ $tagFilter = ChangeTags::buildTagFilterSelector( $tagFilterVal );
if ($tagFilter)
list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
@@ -231,12 +232,8 @@ class SpecialNewpages extends SpecialPage {
protected function setSyndicated() {
global $wgOut;
- $queryParams = array(
- 'namespace' => $this->opts->getValue( 'namespace' ),
- 'username' => $this->opts->getValue( 'username' )
- );
$wgOut->setSyndicated( true );
- $wgOut->setFeedAppendQuery( wfArrayToCGI( $queryParams ) );
+ $wgOut->setFeedAppendQuery( wfArrayToCGI( $this->opts->getAllValues() ) );
}
/**
@@ -247,17 +244,32 @@ class SpecialNewpages extends SpecialPage {
* @return string
*/
public function formatRow( $result ) {
- global $wgLang, $wgContLang, $wgUser;
+ global $wgLang, $wgContLang;
$classes = array();
$dm = $wgContLang->getDirMark();
$title = Title::makeTitleSafe( $result->rc_namespace, $result->rc_title );
- $time = $wgLang->timeAndDate( $result->rc_timestamp, true );
- $query = $this->patrollable( $result ) ? "rcid={$result->rc_id}&redirect=no" : 'redirect=no';
- $plink = $this->skin->makeKnownLinkObj( $title, '', $query );
- $hist = $this->skin->makeKnownLinkObj( $title, wfMsgHtml( 'hist' ), 'action=history' );
+ $time = htmlspecialchars( $wgLang->timeAndDate( $result->rc_timestamp, true ) );
+
+ $query = array( 'redirect' => 'no' );
+
+ if( $this->patrollable( $result ) )
+ $query['rcid'] = $result->rc_id;
+
+ $plink = $this->skin->linkKnown(
+ $title,
+ null,
+ array(),
+ $query
+ );
+ $hist = $this->skin->linkKnown(
+ $title,
+ wfMsgHtml( 'hist' ),
+ array(),
+ array( 'action' => 'history' )
+ );
$length = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->length ) );
$ulink = $this->skin->userLink( $result->rc_user, $result->rc_user_text ) . ' ' .
@@ -345,7 +357,7 @@ class SpecialNewpages extends SpecialPage {
$this->feedItemAuthor( $row ),
$comments);
} else {
- return NULL;
+ return null;
}
}
diff --git a/includes/specials/SpecialPopularpages.php b/includes/specials/SpecialPopularpages.php
index eb572736..88b90bc3 100644
--- a/includes/specials/SpecialPopularpages.php
+++ b/includes/specials/SpecialPopularpages.php
@@ -48,9 +48,15 @@ class PopularPagesPage extends QueryPage {
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
$title = Title::makeTitle( $result->namespace, $result->title );
- $link = $skin->makeKnownLinkObj( $title, htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) ) );
- $nv = wfMsgExt( 'nviews', array( 'parsemag', 'escape'),
- $wgLang->formatNum( $result->value ) );
+ $link = $skin->linkKnown(
+ $title,
+ htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
+ );
+ $nv = wfMsgExt(
+ 'nviews',
+ array( 'parsemag', 'escape'),
+ $wgLang->formatNum( $result->value )
+ );
return wfSpecialList($link, $nv);
}
}
diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php
index 49c4f4e0..4c8bbb09 100644
--- a/includes/specials/SpecialPreferences.php
+++ b/includes/specials/SpecialPreferences.php
@@ -1,1308 +1,75 @@
<?php
-/**
- * Hold things related to displaying and saving user preferences.
- * @file
- * @ingroup SpecialPage
- */
-/**
- * Entry point that create the "Preferences" object
- */
-function wfSpecialPreferences() {
- global $wgRequest;
-
- $form = new PreferencesForm( $wgRequest );
- $form->execute();
-}
-
-/**
- * Preferences form handling
- * This object will show the preferences form and can save it as well.
- * @ingroup SpecialPage
- */
-class PreferencesForm {
- var $mQuickbar, $mStubs;
- var $mRows, $mCols, $mSkin, $mMath, $mDate, $mUserEmail, $mEmailFlag, $mNick;
- var $mUserLanguage, $mUserVariant;
- var $mSearch, $mRecent, $mRecentDays, $mTimeZone, $mHourDiff, $mSearchLines, $mSearchChars, $mAction;
- var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize;
- var $mUnderline, $mWatchlistEdits, $mGender;
-
- /**
- * Constructor
- * Load some values
- */
- function __construct( &$request ) {
- global $wgContLang, $wgUser, $wgAllowRealName;
-
- $this->mQuickbar = $request->getVal( 'wpQuickbar' );
- $this->mStubs = $request->getVal( 'wpStubs' );
- $this->mRows = $request->getVal( 'wpRows' );
- $this->mCols = $request->getVal( 'wpCols' );
- $this->mSkin = Skin::normalizeKey( $request->getVal( 'wpSkin' ) );
- $this->mMath = $request->getVal( 'wpMath' );
- $this->mDate = $request->getVal( 'wpDate' );
- $this->mUserEmail = $request->getVal( 'wpUserEmail' );
- $this->mRealName = $wgAllowRealName ? $request->getVal( 'wpRealName' ) : '';
- $this->mEmailFlag = $request->getCheck( 'wpEmailFlag' ) ? 0 : 1;
- $this->mNick = $request->getVal( 'wpNick' );
- $this->mUserLanguage = $request->getVal( 'wpUserLanguage' );
- $this->mUserVariant = $request->getVal( 'wpUserVariant' );
- $this->mSearch = $request->getVal( 'wpSearch' );
- $this->mRecent = $request->getVal( 'wpRecent' );
- $this->mRecentDays = $request->getVal( 'wpRecentDays' );
- $this->mTimeZone = $request->getVal( 'wpTimeZone' );
- $this->mHourDiff = $request->getVal( 'wpHourDiff' );
- $this->mSearchLines = $request->getVal( 'wpSearchLines' );
- $this->mSearchChars = $request->getVal( 'wpSearchChars' );
- $this->mImageSize = $request->getVal( 'wpImageSize' );
- $this->mThumbSize = $request->getInt( 'wpThumbSize' );
- $this->mUnderline = $request->getInt( 'wpOpunderline' );
- $this->mAction = $request->getVal( 'action' );
- $this->mReset = $request->getCheck( 'wpReset' );
- $this->mRestoreprefs = $request->getCheck( 'wpRestore' );
- $this->mPosted = $request->wasPosted();
- $this->mSuccess = $request->getCheck( 'success' );
- $this->mWatchlistDays = $request->getVal( 'wpWatchlistDays' );
- $this->mWatchlistEdits = $request->getVal( 'wpWatchlistEdits' );
- $this->mDisableMWSuggest = $request->getCheck( 'wpDisableMWSuggest' );
- $this->mGender = $request->getVal( 'wpGender' );
-
- $this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) &&
- $this->mPosted &&
- $wgUser->matchEditToken( $request->getVal( 'wpEditToken' ) );
-
- # User toggles (the big ugly unsorted list of checkboxes)
- $this->mToggles = array();
- if ( $this->mPosted ) {
- $togs = User::getToggles();
- foreach ( $togs as $tname ) {
- $this->mToggles[$tname] = $request->getCheck( "wpOp$tname" ) ? 1 : 0;
- }
- }
-
- $this->mUsedToggles = array();
-
- # Search namespace options
- # Note: namespaces don't necessarily have consecutive keys
- $this->mSearchNs = array();
- if ( $this->mPosted ) {
- $namespaces = $wgContLang->getNamespaces();
- foreach ( $namespaces as $i => $namespace ) {
- if ( $i >= 0 ) {
- $this->mSearchNs[$i] = $request->getCheck( "wpNs$i" ) ? 1 : 0;
- }
- }
- }
-
- # Validate language
- if ( !preg_match( '/^[a-z\-]*$/', $this->mUserLanguage ) ) {
- $this->mUserLanguage = 'nolanguage';
- }
-
- wfRunHooks( 'InitPreferencesForm', array( $this, $request ) );
+class SpecialPreferences extends SpecialPage {
+ function __construct() {
+ parent::__construct( 'Preferences' );
}
- function execute() {
- global $wgUser, $wgOut, $wgTitle;
+ function execute( $par ) {
+ global $wgOut, $wgUser, $wgRequest;
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $wgOut->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
if ( $wgUser->isAnon() ) {
- $wgOut->showErrorPage( 'prefsnologin', 'prefsnologintext', array($wgTitle->getPrefixedDBkey()) );
+ $wgOut->showErrorPage( 'prefsnologin', 'prefsnologintext', array( $this->getTitle()->getPrefixedDBkey() ) );
return;
}
if ( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
- if ( $this->mReset ) {
- $this->resetPrefs();
- $this->mainPrefsForm( 'reset', wfMsg( 'prefsreset' ) );
- } else if ( $this->mSaveprefs ) {
- $this->savePreferences();
- } else if ( $this->mRestoreprefs ) {
- $this->restorePreferences();
- } else {
- $this->resetPrefs();
- $this->mainPrefsForm( '' );
- }
- }
- /**
- * @access private
- */
- function validateInt( &$val, $min=0, $max=0x7fffffff ) {
- $val = intval($val);
- $val = min($val, $max);
- $val = max($val, $min);
- return $val;
- }
- /**
- * @access private
- */
- function validateFloat( &$val, $min, $max=0x7fffffff ) {
- $val = floatval( $val );
- $val = min( $val, $max );
- $val = max( $val, $min );
- return( $val );
- }
-
- /**
- * @access private
- */
- function validateIntOrNull( &$val, $min=0, $max=0x7fffffff ) {
- $val = trim($val);
- if($val === '') {
- return null;
- } else {
- return $this->validateInt( $val, $min, $max );
- }
- }
-
- /**
- * @access private
- */
- function validateDate( $val ) {
- global $wgLang, $wgContLang;
- if ( $val !== false && (
- in_array( $val, (array)$wgLang->getDatePreferences() ) ||
- in_array( $val, (array)$wgContLang->getDatePreferences() ) ) )
- {
- return $val;
- } else {
- return $wgLang->getDefaultDateFormat();
- }
- }
-
- /**
- * Used to validate the user inputed timezone before saving it as
- * 'timecorrection', will return 'System' if fed bogus data.
- * @access private
- * @param string $tz the user input Zoneinfo timezone
- * @param string $s the user input offset string
- * @return string
- */
- function validateTimeZone( $tz, $s ) {
- $data = explode( '|', $tz, 3 );
- switch ( $data[0] ) {
- case 'ZoneInfo':
- case 'System':
- return $tz;
- case 'Offset':
- default:
- $data = explode( ':', $s, 2 );
- $minDiff = 0;
- if( count( $data ) == 2 ) {
- $data[0] = intval( $data[0] );
- $data[1] = intval( $data[1] );
- $minDiff = abs( $data[0] ) * 60 + $data[1];
- if ( $data[0] < 0 ) $minDiff = -$minDiff;
- } else {
- $minDiff = intval( $data[0] ) * 60;
- }
-
- # Max is +14:00 and min is -12:00, see:
- # http://en.wikipedia.org/wiki/Timezone
- $minDiff = min( $minDiff, 840 ); # 14:00
- $minDiff = max( $minDiff, -720 ); # -12:00
- return 'Offset|'.$minDiff;
- }
- }
-
- function validateGender( $val ) {
- $valid = array( 'male', 'female', 'unknown' );
- if ( in_array($val, $valid) ) {
- return $val;
- } else {
- return User::getDefaultOption( 'gender' );
- }
- }
-
- /**
- * @access private
- */
- function savePreferences() {
- global $wgUser, $wgOut, $wgParser;
- global $wgEnableUserEmail, $wgEnableEmail;
- global $wgEmailAuthentication, $wgRCMaxAge;
- global $wgAuth, $wgEmailConfirmToEdit;
-
- $wgUser->setRealName( $this->mRealName );
- $oldOptions = $wgUser->mOptions;
-
- if( $wgUser->getOption( 'language' ) !== $this->mUserLanguage ) {
- $needRedirect = true;
- } else {
- $needRedirect = false;
- }
-
- # Validate the signature and clean it up as needed
- global $wgMaxSigChars;
- if( mb_strlen( $this->mNick ) > $wgMaxSigChars ) {
- global $wgLang;
- $this->mainPrefsForm( 'error',
- wfMsgExt( 'badsiglength', 'parsemag', $wgLang->formatNum( $wgMaxSigChars ) ) );
+ if ( $par == 'reset' ) {
+ $this->showResetForm();
return;
- } elseif( $this->mToggles['fancysig'] ) {
- if( $wgParser->validateSig( $this->mNick ) !== false ) {
- $this->mNick = $wgParser->cleanSig( $this->mNick );
- } else {
- $this->mainPrefsForm( 'error', wfMsg( 'badsig' ) );
- return;
- }
- } else {
- // When no fancy sig used, make sure ~{3,5} get removed.
- $this->mNick = $wgParser->cleanSigInSig( $this->mNick );
- }
-
- $wgUser->setOption( 'language', $this->mUserLanguage );
- $wgUser->setOption( 'variant', $this->mUserVariant );
- $wgUser->setOption( 'nickname', $this->mNick );
- $wgUser->setOption( 'quickbar', $this->mQuickbar );
- global $wgAllowUserSkin;
- if( $wgAllowUserSkin ) {
- $wgUser->setOption( 'skin', $this->mSkin );
- }
- global $wgUseTeX;
- if( $wgUseTeX ) {
- $wgUser->setOption( 'math', $this->mMath );
- }
- $wgUser->setOption( 'date', $this->validateDate( $this->mDate ) );
- $wgUser->setOption( 'searchlimit', $this->validateIntOrNull( $this->mSearch ) );
- $wgUser->setOption( 'contextlines', $this->validateIntOrNull( $this->mSearchLines ) );
- $wgUser->setOption( 'contextchars', $this->validateIntOrNull( $this->mSearchChars ) );
- $wgUser->setOption( 'rclimit', $this->validateIntOrNull( $this->mRecent ) );
- $wgUser->setOption( 'rcdays', $this->validateInt($this->mRecentDays, 1, ceil($wgRCMaxAge / (3600*24))));
- $wgUser->setOption( 'wllimit', $this->validateIntOrNull( $this->mWatchlistEdits, 0, 1000 ) );
- $wgUser->setOption( 'rows', $this->validateInt( $this->mRows, 4, 1000 ) );
- $wgUser->setOption( 'cols', $this->validateInt( $this->mCols, 4, 1000 ) );
- $wgUser->setOption( 'stubthreshold', $this->validateIntOrNull( $this->mStubs ) );
- $wgUser->setOption( 'timecorrection', $this->validateTimeZone( $this->mTimeZone, $this->mHourDiff ) );
- $wgUser->setOption( 'imagesize', $this->mImageSize );
- $wgUser->setOption( 'thumbsize', $this->mThumbSize );
- $wgUser->setOption( 'underline', $this->validateInt($this->mUnderline, 0, 2) );
- $wgUser->setOption( 'watchlistdays', $this->validateFloat( $this->mWatchlistDays, 0, 7 ) );
- $wgUser->setOption( 'disablesuggest', $this->mDisableMWSuggest );
- $wgUser->setOption( 'gender', $this->validateGender( $this->mGender ) );
-
- # Set search namespace options
- foreach( $this->mSearchNs as $i => $value ) {
- $wgUser->setOption( "searchNs{$i}", $value );
- }
-
- if( $wgEnableEmail && $wgEnableUserEmail ) {
- $wgUser->setOption( 'disablemail', $this->mEmailFlag );
- }
-
- # Set user toggles
- foreach ( $this->mToggles as $tname => $tvalue ) {
- $wgUser->setOption( $tname, $tvalue );
- }
-
- $error = false;
- if( $wgEnableEmail ) {
- $newadr = $this->mUserEmail;
- $oldadr = $wgUser->getEmail();
- if( ($newadr != '') && ($newadr != $oldadr) ) {
- # the user has supplied a new email address on the login page
- if( $wgUser->isValidEmailAddr( $newadr ) ) {
- # new behaviour: set this new emailaddr from login-page into user database record
- $wgUser->setEmail( $newadr );
- # but flag as "dirty" = unauthenticated
- $wgUser->invalidateEmail();
- if ($wgEmailAuthentication) {
- # Mail a temporary password to the dirty address.
- # User can come back through the confirmation URL to re-enable email.
- $result = $wgUser->sendConfirmationMail();
- if( WikiError::isError( $result ) ) {
- $error = wfMsg( 'mailerror', htmlspecialchars( $result->getMessage() ) );
- } else {
- $error = wfMsg( 'eauthentsent', $wgUser->getName() );
- }
- }
- } else {
- $error = wfMsg( 'invalidemailaddress' );
- }
- } else {
- if( $wgEmailConfirmToEdit && empty( $newadr ) ) {
- $this->mainPrefsForm( 'error', wfMsg( 'noemailtitle' ) );
- return;
- }
- $wgUser->setEmail( $this->mUserEmail );
- }
- if( $oldadr != $newadr ) {
- wfRunHooks( 'PrefsEmailAudit', array( $wgUser, $oldadr, $newadr ) );
- }
}
+
+ $wgOut->addScriptFile( 'prefs.js' );
- if( !$wgAuth->updateExternalDB( $wgUser ) ){
- $this->mainPrefsForm( 'error', wfMsg( 'externaldberror' ) );
- return;
+ if ( $wgRequest->getCheck( 'success' ) ) {
+ $wgOut->wrapWikiMsg(
+ '<div class="successbox"><strong>$1</strong></div><div id="mw-pref-clear"></div>',
+ 'savedprefs'
+ );
}
-
- $msg = '';
- if ( !wfRunHooks( 'SavePreferences', array( $this, $wgUser, &$msg, $oldOptions ) ) ) {
- $this->mainPrefsForm( 'error', $msg );
- return;
+
+ if ( $wgRequest->getCheck( 'eauth' ) ) {
+ $wgOut->wrapWikiMsg( "<div class='error' style='clear: both;'>\n$1</div>",
+ 'eauthentsent', $wgUser->getName() );
}
- $wgUser->setCookies();
- $wgUser->saveSettings();
-
- if( $needRedirect && $error === false ) {
- $title = SpecialPage::getTitleFor( 'Preferences' );
- $wgOut->redirect( $title->getFullURL( 'success' ) );
- return;
- }
+ $htmlForm = Preferences::getFormObject( $wgUser );
+ $htmlForm->setSubmitCallback( array( 'Preferences', 'tryUISubmit' ) );
- $wgOut->parserOptions( ParserOptions::newFromUser( $wgUser ) );
- $this->mainPrefsForm( $error === false ? 'success' : 'error', $error);
+ $htmlForm->show();
}
- /**
- * @access private
- */
- function resetPrefs() {
- global $wgUser, $wgLang, $wgContLang, $wgContLanguageCode, $wgAllowRealName, $wgLocalTZoffset;
+ function showResetForm() {
+ global $wgOut;
- $this->mUserEmail = $wgUser->getEmail();
- $this->mUserEmailAuthenticationtimestamp = $wgUser->getEmailAuthenticationtimestamp();
- $this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : '';
+ $wgOut->addWikiMsg( 'prefs-reset-intro' );
- # language value might be blank, default to content language
- $this->mUserLanguage = $wgUser->getOption( 'language', $wgContLanguageCode );
+ $htmlForm = new HTMLForm( array(), 'prefs-restore' );
- $this->mUserVariant = $wgUser->getOption( 'variant');
- $this->mEmailFlag = $wgUser->getOption( 'disablemail' ) == 1 ? 1 : 0;
- $this->mNick = $wgUser->getOption( 'nickname' );
+ $htmlForm->setSubmitText( wfMsg( 'restoreprefs' ) );
+ $htmlForm->setTitle( $this->getTitle( 'reset' ) );
+ $htmlForm->setSubmitCallback( array( __CLASS__, 'submitReset' ) );
+ $htmlForm->suppressReset();
- $this->mQuickbar = $wgUser->getOption( 'quickbar' );
- $this->mSkin = Skin::normalizeKey( $wgUser->getOption( 'skin' ) );
- $this->mMath = $wgUser->getOption( 'math' );
- $this->mDate = $wgUser->getDatePreference();
- $this->mRows = $wgUser->getOption( 'rows' );
- $this->mCols = $wgUser->getOption( 'cols' );
- $this->mStubs = $wgUser->getOption( 'stubthreshold' );
-
- $tz = $wgUser->getOption( 'timecorrection' );
- $data = explode( '|', $tz, 3 );
- $minDiff = null;
- switch ( $data[0] ) {
- case 'ZoneInfo':
- $this->mTimeZone = $tz;
- # Check if the specified TZ exists, and change to 'Offset' if
- # not.
- if ( !function_exists('timezone_open') || @timezone_open( $data[2] ) === false ) {
- $this->mTimeZone = 'Offset';
- $minDiff = intval( $data[1] );
- }
- break;
- case '':
- case 'System':
- $this->mTimeZone = 'System|'.$wgLocalTZoffset;
- break;
- case 'Offset':
- $this->mTimeZone = 'Offset';
- $minDiff = intval( $data[1] );
- break;
- default:
- $this->mTimeZone = 'Offset';
- $data = explode( ':', $tz, 2 );
- if( count( $data ) == 2 ) {
- $data[0] = intval( $data[0] );
- $data[1] = intval( $data[1] );
- $minDiff = abs( $data[0] ) * 60 + $data[1];
- if ( $data[0] < 0 ) $minDiff = -$minDiff;
- } else {
- $minDiff = intval( $data[0] ) * 60;
- }
- break;
- }
- if ( is_null( $minDiff ) ) {
- $this->mHourDiff = '';
- } else {
- $this->mHourDiff = sprintf( '%+03d:%02d', floor($minDiff/60), abs($minDiff)%60 );
- }
-
- $this->mSearch = $wgUser->getOption( 'searchlimit' );
- $this->mSearchLines = $wgUser->getOption( 'contextlines' );
- $this->mSearchChars = $wgUser->getOption( 'contextchars' );
- $this->mImageSize = $wgUser->getOption( 'imagesize' );
- $this->mThumbSize = $wgUser->getOption( 'thumbsize' );
- $this->mRecent = $wgUser->getOption( 'rclimit' );
- $this->mRecentDays = $wgUser->getOption( 'rcdays' );
- $this->mWatchlistEdits = $wgUser->getOption( 'wllimit' );
- $this->mUnderline = $wgUser->getOption( 'underline' );
- $this->mWatchlistDays = $wgUser->getOption( 'watchlistdays' );
- $this->mDisableMWSuggest = $wgUser->getBoolOption( 'disablesuggest' );
- $this->mGender = $wgUser->getOption( 'gender' );
-
- $togs = User::getToggles();
- foreach ( $togs as $tname ) {
- $this->mToggles[$tname] = $wgUser->getOption( $tname );
- }
-
- $namespaces = $wgContLang->getNamespaces();
- foreach ( $namespaces as $i => $namespace ) {
- if ( $i >= NS_MAIN ) {
- $this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i );
- }
- }
-
- wfRunHooks( 'ResetPreferences', array( $this, $wgUser ) );
+ $htmlForm->show();
}
-
- /**
- * @access private
- */
- function restorePreferences() {
+
+ static function submitReset( $formData ) {
global $wgUser, $wgOut;
- $wgUser->restoreOptions();
- $wgUser->setCookies();
+ $wgUser->resetOptions();
$wgUser->saveSettings();
- $title = SpecialPage::getTitleFor( 'Preferences' );
- $wgOut->redirect( $title->getFullURL( 'success' ) );
- }
-
- /**
- * @access private
- */
- function namespacesCheckboxes() {
- global $wgContLang;
-
- # Determine namespace checkboxes
- $namespaces = $wgContLang->getNamespaces();
- $r1 = null;
-
- foreach ( $namespaces as $i => $name ) {
- if ($i < 0)
- continue;
- $checked = $this->mSearchNs[$i] ? "checked='checked'" : '';
- $name = str_replace( '_', ' ', $namespaces[$i] );
-
- if ( empty($name) )
- $name = wfMsg( 'blanknamespace' );
-
- $r1 .= "<input type='checkbox' value='1' name='wpNs$i' id='wpNs$i' {$checked}/> <label for='wpNs$i'>{$name}</label><br />\n";
- }
- return $r1;
- }
-
-
- function getToggle( $tname, $trailer = false, $disabled = false ) {
- global $wgUser, $wgLang;
-
- $this->mUsedToggles[$tname] = true;
- $ttext = $wgLang->getUserToggle( $tname );
-
- $checked = $wgUser->getOption( $tname ) == 1 ? ' checked="checked"' : '';
- $disabled = $disabled ? ' disabled="disabled"' : '';
- $trailer = $trailer ? $trailer : '';
- return "<div class='toggle'><input type='checkbox' value='1' id=\"$tname\" name=\"wpOp$tname\"$checked$disabled />" .
- " <span class='toggletext'><label for=\"$tname\">$ttext</label>$trailer</span></div>\n";
- }
-
- function getToggles( $items ) {
- $out = "";
- foreach( $items as $item ) {
- if( $item === false )
- continue;
- if( is_array( $item ) ) {
- list( $key, $trailer ) = $item;
- } else {
- $key = $item;
- $trailer = false;
- }
- $out .= $this->getToggle( $key, $trailer );
- }
- return $out;
- }
-
- function addRow($td1, $td2) {
- return "<tr><td class='mw-label'>$td1</td><td class='mw-input'>$td2</td></tr>";
- }
-
- /**
- * Helper function for user information panel
- * @param $td1 label for an item
- * @param $td2 item or null
- * @param $td3 optional help or null
- * @return xhtml block
- */
- function tableRow( $td1, $td2 = null, $td3 = null ) {
-
- if ( is_null( $td3 ) ) {
- $td3 = '';
- } else {
- $td3 = Xml::tags( 'tr', null,
- Xml::tags( 'td', array( 'class' => 'pref-label', 'colspan' => '2' ), $td3 )
- );
- }
-
- if ( is_null( $td2 ) ) {
- $td1 = Xml::tags( 'td', array( 'class' => 'pref-label', 'colspan' => '2' ), $td1 );
- $td2 = '';
- } else {
- $td1 = Xml::tags( 'td', array( 'class' => 'pref-label' ), $td1 );
- $td2 = Xml::tags( 'td', array( 'class' => 'pref-input' ), $td2 );
- }
-
- return Xml::tags( 'tr', null, $td1 . $td2 ). $td3 . "\n";
-
- }
-
- /**
- * @access private
- */
- function mainPrefsForm( $status , $message = '' ) {
- global $wgUser, $wgOut, $wgLang, $wgContLang, $wgAuth;
- global $wgAllowRealName, $wgImageLimits, $wgThumbLimits;
- global $wgDisableLangConversion, $wgDisableTitleConversion;
- global $wgEnotifWatchlist, $wgEnotifUserTalk,$wgEnotifMinorEdits;
- global $wgRCShowWatchingUsers, $wgEnotifRevealEditorAddress;
- global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication;
- global $wgContLanguageCode, $wgDefaultSkin, $wgCookieExpiration;
- global $wgEmailConfirmToEdit, $wgEnableMWSuggest, $wgLocalTZoffset;
-
- $wgOut->setPageTitle( wfMsg( 'preferences' ) );
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->addScriptFile( 'prefs.js' );
-
- $wgOut->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
-
- if ( $this->mSuccess || 'success' == $status ) {
- $wgOut->wrapWikiMsg( '<div class="successbox"><strong>$1</strong></div>', 'savedprefs' );
- } else if ( 'error' == $status ) {
- $wgOut->addWikiText( '<div class="errorbox"><strong>' . $message . '</strong></div>' );
- } else if ( '' != $status ) {
- $wgOut->addWikiText( $message . "\n----" );
- }
-
- $qbs = $wgLang->getQuickbarSettings();
- $mathopts = $wgLang->getMathNames();
- $dateopts = $wgLang->getDatePreferences();
- $togs = User::getToggles();
-
- $titleObj = SpecialPage::getTitleFor( 'Preferences' );
-
- # Pre-expire some toggles so they won't show if disabled
- $this->mUsedToggles[ 'shownumberswatching' ] = true;
- $this->mUsedToggles[ 'showupdated' ] = true;
- $this->mUsedToggles[ 'enotifwatchlistpages' ] = true;
- $this->mUsedToggles[ 'enotifusertalkpages' ] = true;
- $this->mUsedToggles[ 'enotifminoredits' ] = true;
- $this->mUsedToggles[ 'enotifrevealaddr' ] = true;
- $this->mUsedToggles[ 'ccmeonemails' ] = true;
- $this->mUsedToggles[ 'uselivepreview' ] = true;
- $this->mUsedToggles[ 'noconvertlink' ] = true;
-
-
- if ( !$this->mEmailFlag ) { $emfc = 'checked="checked"'; }
- else { $emfc = ''; }
-
-
- if ($wgEmailAuthentication && ($this->mUserEmail != '') ) {
- if( $wgUser->getEmailAuthenticationTimestamp() ) {
- // date and time are separate parameters to facilitate localisation.
- // $time is kept for backward compat reasons.
- // 'emailauthenticated' is also used in SpecialConfirmemail.php
- $time = $wgLang->timeAndDate( $wgUser->getEmailAuthenticationTimestamp(), true );
- $d = $wgLang->date( $wgUser->getEmailAuthenticationTimestamp(), true );
- $t = $wgLang->time( $wgUser->getEmailAuthenticationTimestamp(), true );
- $emailauthenticated = wfMsg('emailauthenticated', $time, $d, $t ).'<br />';
- $disableEmailPrefs = false;
- } else {
- $disableEmailPrefs = true;
- $skin = $wgUser->getSkin();
- $emailauthenticated = wfMsg('emailnotauthenticated').'<br />' .
- $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Confirmemail' ),
- wfMsg( 'emailconfirmlink' ) ) . '<br />';
- }
- } else {
- $emailauthenticated = '';
- $disableEmailPrefs = false;
- }
-
- if ($this->mUserEmail == '') {
- $emailauthenticated = wfMsg( 'noemailprefs' ) . '<br />';
- }
-
- $ps = $this->namespacesCheckboxes();
-
- $enotifwatchlistpages = ($wgEnotifWatchlist) ? $this->getToggle( 'enotifwatchlistpages', false, $disableEmailPrefs ) : '';
- $enotifusertalkpages = ($wgEnotifUserTalk) ? $this->getToggle( 'enotifusertalkpages', false, $disableEmailPrefs ) : '';
- $enotifminoredits = ($wgEnotifWatchlist && $wgEnotifMinorEdits) ? $this->getToggle( 'enotifminoredits', false, $disableEmailPrefs ) : '';
- $enotifrevealaddr = (($wgEnotifWatchlist || $wgEnotifUserTalk) && $wgEnotifRevealEditorAddress) ? $this->getToggle( 'enotifrevealaddr', false, $disableEmailPrefs ) : '';
-
- # </FIXME>
-
- $wgOut->addHTML(
- Xml::openElement( 'form', array(
- 'action' => $titleObj->getLocalUrl(),
- 'method' => 'post',
- 'id' => 'mw-preferences-form',
- ) ) .
- Xml::openElement( 'div', array( 'id' => 'preferences' ) )
- );
-
- # User data
-
- $wgOut->addHTML(
- Xml::fieldset( wfMsg('prefs-personal') ) .
- Xml::openElement( 'table' ) .
- $this->tableRow( Xml::element( 'h2', null, wfMsg( 'prefs-personal' ) ) )
- );
-
- # Get groups to which the user belongs
- $userEffectiveGroups = $wgUser->getEffectiveGroups();
- $userEffectiveGroupsArray = array();
- foreach( $userEffectiveGroups as $ueg ) {
- if( $ueg == '*' ) {
- // Skip the default * group, seems useless here
- continue;
- }
- $userEffectiveGroupsArray[] = User::makeGroupLinkHTML( $ueg );
- }
- asort( $userEffectiveGroupsArray );
-
- $sk = $wgUser->getSkin();
- $toolLinks = array();
- $toolLinks[] = $sk->makeKnownLinkObj( SpecialPage::getTitleFor( 'ListGroupRights' ), wfMsg( 'listgrouprights' ) );
- # At the moment one tool link only but be prepared for the future...
- # FIXME: Add a link to Special:Userrights for users who are allowed to use it.
- # $wgUser->isAllowed( 'userrights' ) seems to strict in some cases
-
- $userInformationHtml =
- $this->tableRow( wfMsgHtml( 'username' ), htmlspecialchars( $wgUser->getName() ) ) .
- $this->tableRow( wfMsgHtml( 'uid' ), htmlspecialchars( $wgUser->getId() ) ) .
-
- $this->tableRow(
- wfMsgExt( 'prefs-memberingroups', array( 'parseinline' ), count( $userEffectiveGroupsArray ) ),
- $wgLang->commaList( $userEffectiveGroupsArray ) .
- '<br />(' . $wgLang->pipeList( $toolLinks ) . ')'
- ) .
-
- $this->tableRow(
- wfMsgHtml( 'prefs-edits' ),
- $wgLang->formatNum( $wgUser->getEditCount() )
- );
-
- if( wfRunHooks( 'PreferencesUserInformationPanel', array( $this, &$userInformationHtml ) ) ) {
- $wgOut->addHTML( $userInformationHtml );
- }
-
- if ( $wgAllowRealName ) {
- $wgOut->addHTML(
- $this->tableRow(
- Xml::label( wfMsg('yourrealname'), 'wpRealName' ),
- Xml::input( 'wpRealName', 25, $this->mRealName, array( 'id' => 'wpRealName' ) ),
- Xml::tags('div', array( 'class' => 'prefsectiontip' ),
- wfMsgExt( 'prefs-help-realname', 'parseinline' )
- )
- )
- );
- }
- if ( $wgEnableEmail ) {
- $wgOut->addHTML(
- $this->tableRow(
- Xml::label( wfMsg('youremail'), 'wpUserEmail' ),
- Xml::input( 'wpUserEmail', 25, $this->mUserEmail, array( 'id' => 'wpUserEmail' ) ),
- Xml::tags('div', array( 'class' => 'prefsectiontip' ),
- wfMsgExt( $wgEmailConfirmToEdit ? 'prefs-help-email-required' : 'prefs-help-email', 'parseinline' )
- )
- )
- );
- }
-
- global $wgParser, $wgMaxSigChars;
- if( mb_strlen( $this->mNick ) > $wgMaxSigChars ) {
- $invalidSig = $this->tableRow(
- '&nbsp;',
- Xml::element( 'span', array( 'class' => 'error' ),
- wfMsgExt( 'badsiglength', 'parsemag', $wgLang->formatNum( $wgMaxSigChars ) ) )
- );
- } elseif( !empty( $this->mToggles['fancysig'] ) &&
- false === $wgParser->validateSig( $this->mNick ) ) {
- $invalidSig = $this->tableRow(
- '&nbsp;',
- Xml::element( 'span', array( 'class' => 'error' ), wfMsg( 'badsig' ) )
- );
- } else {
- $invalidSig = '';
- }
-
- $wgOut->addHTML(
- $this->tableRow(
- Xml::label( wfMsg( 'yournick' ), 'wpNick' ),
- Xml::input( 'wpNick', 25, $this->mNick,
- array(
- 'id' => 'wpNick',
- // Note: $wgMaxSigChars is enforced in Unicode characters,
- // both on the backend and now in the browser.
- // Badly-behaved requests may still try to submit
- // an overlong string, however.
- 'maxlength' => $wgMaxSigChars ) )
- ) .
- $invalidSig .
- $this->tableRow( '&nbsp;', $this->getToggle( 'fancysig' ) )
- );
-
- $gender = new XMLSelect( 'wpGender', 'wpGender', $this->mGender );
- $gender->addOption( wfMsg( 'gender-unknown' ), 'unknown' );
- $gender->addOption( wfMsg( 'gender-male' ), 'male' );
- $gender->addOption( wfMsg( 'gender-female' ), 'female' );
-
- $wgOut->addHTML(
- $this->tableRow(
- Xml::label( wfMsg( 'yourgender' ), 'wpGender' ),
- $gender->getHTML(),
- Xml::tags( 'div', array( 'class' => 'prefsectiontip' ),
- wfMsgExt( 'prefs-help-gender', 'parseinline' )
- )
- )
- );
-
- list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage, false );
- $wgOut->addHTML(
- $this->tableRow( $lsLabel, $lsSelect )
- );
-
- /* see if there are multiple language variants to choose from*/
- if(!$wgDisableLangConversion) {
- $variants = $wgContLang->getVariants();
- $variantArray = array();
-
- $languages = Language::getLanguageNames( true );
- foreach($variants as $v) {
- $v = str_replace( '_', '-', strtolower($v));
- if( array_key_exists( $v, $languages ) ) {
- // If it doesn't have a name, we'll pretend it doesn't exist
- $variantArray[$v] = $languages[$v];
- }
- }
-
- $options = "\n";
- foreach( $variantArray as $code => $name ) {
- $selected = ($code == $this->mUserVariant);
- $options .= Xml::option( "$code - $name", $code, $selected ) . "\n";
- }
-
- if(count($variantArray) > 1) {
- $wgOut->addHTML(
- $this->tableRow(
- Xml::label( wfMsg( 'yourvariant' ), 'wpUserVariant' ),
- Xml::tags( 'select',
- array( 'name' => 'wpUserVariant', 'id' => 'wpUserVariant' ),
- $options
- )
- )
- );
- }
-
- if(count($variantArray) > 1 && !$wgDisableLangConversion && !$wgDisableTitleConversion) {
- $wgOut->addHTML(
- Xml::tags( 'tr', null,
- Xml::tags( 'td', array( 'colspan' => '2' ),
- $this->getToggle( "noconvertlink" )
- )
- )
- );
- }
- }
-
- # Password
- if( $wgAuth->allowPasswordChange() ) {
- $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'ResetPass' ), wfMsgHtml( 'prefs-resetpass' ),
- array() , array( 'returnto' => SpecialPage::getTitleFor( 'Preferences' )->getPrefixedText() ) );
- $wgOut->addHTML(
- $this->tableRow( Xml::element( 'h2', null, wfMsg( 'changepassword' ) ) ) .
- $this->tableRow( '<ul><li>' . $link . '</li></ul>' ) );
- }
-
- # <FIXME>
- # Enotif
- if ( $wgEnableEmail ) {
-
- $moreEmail = '';
- if ($wgEnableUserEmail) {
- // fixme -- the "allowemail" pseudotoggle is a hacked-together
- // inversion for the "disableemail" preference.
- $emf = wfMsg( 'allowemail' );
- $disabled = $disableEmailPrefs ? ' disabled="disabled"' : '';
- $moreEmail =
- "<input type='checkbox' $emfc $disabled value='1' name='wpEmailFlag' id='wpEmailFlag' /> <label for='wpEmailFlag'>$emf</label>" .
- $this->getToggle( 'ccmeonemails', '', $disableEmailPrefs );
- }
-
-
- $wgOut->addHTML(
- $this->tableRow( Xml::element( 'h2', null, wfMsg( 'email' ) ) ) .
- $this->tableRow(
- $emailauthenticated.
- $enotifrevealaddr.
- $enotifwatchlistpages.
- $enotifusertalkpages.
- $enotifminoredits.
- $moreEmail
- )
- );
- }
- # </FIXME>
-
- $wgOut->addHTML(
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'fieldset' )
- );
-
-
- # Quickbar
- #
- if ($this->mSkin == 'cologneblue' || $this->mSkin == 'standard') {
- $wgOut->addHTML( "<fieldset>\n<legend>" . wfMsg( 'qbsettings' ) . "</legend>\n" );
- for ( $i = 0; $i < count( $qbs ); ++$i ) {
- if ( $i == $this->mQuickbar ) { $checked = ' checked="checked"'; }
- else { $checked = ""; }
- $wgOut->addHTML( "<div><label><input type='radio' name='wpQuickbar' value=\"$i\"$checked />{$qbs[$i]}</label></div>\n" );
- }
- $wgOut->addHTML( "</fieldset>\n\n" );
- } else {
- # Need to output a hidden option even if the relevant skin is not in use,
- # otherwise the preference will get reset to 0 on submit
- $wgOut->addHTML( Xml::hidden( 'wpQuickbar', $this->mQuickbar ) );
- }
-
- # Skin
- #
- global $wgAllowUserSkin;
- if( $wgAllowUserSkin ) {
- $wgOut->addHTML( "<fieldset>\n<legend>\n" . wfMsg( 'skin' ) . "</legend>\n" );
- $mptitle = Title::newMainPage();
- $previewtext = wfMsg( 'skin-preview' );
- # Only show members of Skin::getSkinNames() rather than
- # $skinNames (skins is all skin names from Language.php)
- $validSkinNames = Skin::getUsableSkins();
- # Sort by UI skin name. First though need to update validSkinNames as sometimes
- # the skinkey & UI skinname differ (e.g. "standard" skinkey is "Classic" in the UI).
- foreach ( $validSkinNames as $skinkey => &$skinname ) {
- $msgName = "skinname-{$skinkey}";
- $localisedSkinName = wfMsg( $msgName );
- if ( !wfEmptyMsg( $msgName, $localisedSkinName ) ) {
- $skinname = $localisedSkinName;
- }
- }
- asort($validSkinNames);
- foreach( $validSkinNames as $skinkey => $sn ) {
- $checked = $skinkey == $this->mSkin ? ' checked="checked"' : '';
- $mplink = htmlspecialchars( $mptitle->getLocalURL( "useskin=$skinkey" ) );
- $previewlink = "(<a target='_blank' href=\"$mplink\">$previewtext</a>)";
- $extraLinks = '';
- global $wgAllowUserCss, $wgAllowUserJs;
- if( $wgAllowUserCss ) {
- $cssPage = Title::makeTitleSafe( NS_USER, $wgUser->getName().'/'.$skinkey.'.css' );
- $customCSS = $sk->makeLinkObj( $cssPage, wfMsgExt('prefs-custom-css', array() ) );
- $extraLinks .= " ($customCSS)";
- }
- if( $wgAllowUserJs ) {
- $jsPage = Title::makeTitleSafe( NS_USER, $wgUser->getName().'/'.$skinkey.'.js' );
- $customJS = $sk->makeLinkObj( $jsPage, wfMsgHtml('prefs-custom-js') );
- $extraLinks .= " ($customJS)";
- }
- if( $skinkey == $wgDefaultSkin )
- $sn .= ' (' . wfMsg( 'default' ) . ')';
- $wgOut->addHTML( "<input type='radio' name='wpSkin' id=\"wpSkin$skinkey\" value=\"$skinkey\"$checked />
- <label for=\"wpSkin$skinkey\">{$sn}</label> $previewlink{$extraLinks}<br />\n" );
- }
- $wgOut->addHTML( "</fieldset>\n\n" );
- }
-
- # Math
- #
- global $wgUseTeX;
- if( $wgUseTeX ) {
- $wgOut->addHTML( "<fieldset>\n<legend>" . wfMsg('math') . '</legend>' );
- foreach ( $mathopts as $k => $v ) {
- $checked = ($k == $this->mMath);
- $wgOut->addHTML(
- Xml::openElement( 'div' ) .
- Xml::radioLabel( wfMsg( $v ), 'wpMath', $k, "mw-sp-math-$k", $checked ) .
- Xml::closeElement( 'div' ) . "\n"
- );
- }
- $wgOut->addHTML( "</fieldset>\n\n" );
- }
-
- # Files
- #
- $imageLimitOptions = null;
- foreach ( $wgImageLimits as $index => $limits ) {
- $selected = ($index == $this->mImageSize);
- $imageLimitOptions .= Xml::option( "{$limits[0]}×{$limits[1]}" .
- wfMsg('unit-pixel'), $index, $selected );
- }
-
- $imageThumbOptions = null;
- foreach ( $wgThumbLimits as $index => $size ) {
- $selected = ($index == $this->mThumbSize);
- $imageThumbOptions .= Xml::option($size . wfMsg('unit-pixel'), $index,
- $selected);
- }
-
- $imageSizeId = 'wpImageSize';
- $thumbSizeId = 'wpThumbSize';
- $wgOut->addHTML(
- Xml::fieldset( wfMsg( 'files' ) ) . "\n" .
- Xml::openElement( 'table' ) .
- '<tr>
- <td class="mw-label">' .
- Xml::label( wfMsg( 'imagemaxsize' ), $imageSizeId ) .
- '</td>
- <td class="mw-input">' .
- Xml::openElement( 'select', array( 'name' => $imageSizeId, 'id' => $imageSizeId ) ) .
- $imageLimitOptions .
- Xml::closeElement( 'select' ) .
- '</td>
- </tr><tr>
- <td class="mw-label">' .
- Xml::label( wfMsg( 'thumbsize' ), $thumbSizeId ) .
- '</td>
- <td class="mw-input">' .
- Xml::openElement( 'select', array( 'name' => $thumbSizeId, 'id' => $thumbSizeId ) ) .
- $imageThumbOptions .
- Xml::closeElement( 'select' ) .
- '</td>
- </tr>' .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'fieldset' )
- );
-
- # Date format
- #
- # Date/Time
- #
-
- $wgOut->addHTML(
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'datetime' ) ) . "\n"
- );
-
- if ($dateopts) {
- $wgOut->addHTML(
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'dateformat' ) ) . "\n"
- );
- $idCnt = 0;
- $epoch = '20010115161234'; # Wikipedia day
- foreach( $dateopts as $key ) {
- if( $key == 'default' ) {
- $formatted = wfMsg( 'datedefault' );
- } else {
- $formatted = $wgLang->timeanddate( $epoch, false, $key );
- }
- $wgOut->addHTML(
- Xml::tags( 'div', null,
- Xml::radioLabel( $formatted, 'wpDate', $key, "wpDate$idCnt", $key == $this->mDate )
- ) . "\n"
- );
- $idCnt++;
- }
- $wgOut->addHTML( Xml::closeElement( 'fieldset' ) . "\n" );
- }
-
- $nowlocal = Xml::openElement( 'span', array( 'id' => 'wpLocalTime' ) ) .
- $wgLang->time( $now = wfTimestampNow(), true ) .
- Xml::closeElement( 'span' );
- $nowserver = $wgLang->time( $now, false ) .
- Xml::hidden( 'wpServerTime', substr( $now, 8, 2 ) * 60 + substr( $now, 10, 2 ) );
-
- $wgOut->addHTML(
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'timezonelegend' ) ) .
- Xml::openElement( 'table' ) .
- $this->addRow( wfMsg( 'servertime' ), $nowserver ) .
- $this->addRow( wfMsg( 'localtime' ), $nowlocal )
- );
- $opt = Xml::openElement( 'select', array(
- 'name' => 'wpTimeZone',
- 'id' => 'wpTimeZone',
- 'onchange' => 'javascript:updateTimezoneSelection(false)' ) );
- $opt .= Xml::option( wfMsg( 'timezoneuseserverdefault' ), "System|$wgLocalTZoffset", $this->mTimeZone === "System|$wgLocalTZoffset" );
- $opt .= Xml::option( wfMsg( 'timezoneuseoffset' ), 'Offset', $this->mTimeZone === 'Offset' );
-
- if ( function_exists( 'timezone_identifiers_list' ) ) {
- # Read timezone list
- $tzs = timezone_identifiers_list();
- sort( $tzs );
-
- # Precache localized region names
- $tzRegions = array();
- $tzRegions['Africa'] = wfMsg( 'timezoneregion-africa' );
- $tzRegions['America'] = wfMsg( 'timezoneregion-america' );
- $tzRegions['Antarctica'] = wfMsg( 'timezoneregion-antarctica' );
- $tzRegions['Arctic'] = wfMsg( 'timezoneregion-arctic' );
- $tzRegions['Asia'] = wfMsg( 'timezoneregion-asia' );
- $tzRegions['Atlantic'] = wfMsg( 'timezoneregion-atlantic' );
- $tzRegions['Australia'] = wfMsg( 'timezoneregion-australia' );
- $tzRegions['Europe'] = wfMsg( 'timezoneregion-europe' );
- $tzRegions['Indian'] = wfMsg( 'timezoneregion-indian' );
- $tzRegions['Pacific'] = wfMsg( 'timezoneregion-pacific' );
- asort( $tzRegions );
-
- $selZone = explode( '|', $this->mTimeZone, 3 );
- $selZone = ( $selZone[0] == 'ZoneInfo' ) ? $selZone[2] : null;
- $now = date_create( 'now' );
- $optgroup = '';
-
- foreach ( $tzs as $tz ) {
- $z = explode( '/', $tz, 2 );
-
- # timezone_identifiers_list() returns a number of
- # backwards-compatibility entries. This filters them out of the
- # list presented to the user.
- if ( count( $z ) != 2 || !array_key_exists( $z[0], $tzRegions ) )
- continue;
-
- # Localize region
- $z[0] = $tzRegions[$z[0]];
-
- # Create region groups
- if ( $optgroup != $z[0] ) {
- if ( $optgroup !== '' ) {
- $opt .= Xml::closeElement( 'optgroup' );
- }
- $optgroup = $z[0];
- $opt .= Xml::openElement( 'optgroup', array( 'label' => $z[0] ) ) . "\n";
- }
-
- $minDiff = floor( timezone_offset_get( timezone_open( $tz ), $now ) / 60 );
- $opt .= Xml::option( str_replace( '_', ' ', $z[0] . '/' . $z[1] ), "ZoneInfo|$minDiff|$tz", $selZone === $tz, array( 'label' => $z[1] ) ) . "\n";
- }
- if ( $optgroup !== '' ) $opt .= Xml::closeElement( 'optgroup' );
- }
- $opt .= Xml::closeElement( 'select' );
- $wgOut->addHTML(
- $this->addRow(
- Xml::label( wfMsg( 'timezoneselect' ), 'wpTimeZone' ),
- $opt )
- );
- $wgOut->addHTML(
- $this->addRow(
- Xml::label( wfMsg( 'timezoneoffset' ), 'wpHourDiff' ),
- Xml::input( 'wpHourDiff', 6, $this->mHourDiff, array(
- 'id' => 'wpHourDiff',
- 'onfocus' => 'javascript:updateTimezoneSelection(true)',
- 'onblur' => 'javascript:updateTimezoneSelection(false)' ) ) ) .
- "<tr>
- <td></td>
- <td class='mw-submit'>" .
- Xml::element( 'input',
- array( 'type' => 'button',
- 'value' => wfMsg( 'guesstimezone' ),
- 'onclick' => 'javascript:guessTimezone()',
- 'id' => 'guesstimezonebutton',
- 'style' => 'display:none;' ) ) .
- "</td>
- </tr>" .
- Xml::closeElement( 'table' ) .
- Xml::tags( 'div', array( 'class' => 'prefsectiontip' ), wfMsgExt( 'timezonetext', 'parseinline' ) ).
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'fieldset' ) . "\n\n"
- );
-
- # Editing
- #
- global $wgLivePreview;
- $wgOut->addHTML(
- Xml::fieldset( wfMsg( 'textboxsize' ) ) .
- wfMsgHTML( 'prefs-edit-boxsize' ) . ' ' .
- Xml::inputLabel( wfMsg( 'rows' ), 'wpRows', 'wpRows', 3, $this->mRows ) . ' ' .
- Xml::inputLabel( wfMsg( 'columns' ), 'wpCols', 'wpCols', 3, $this->mCols ) .
- $this->getToggles( array(
- 'editsection',
- 'editsectiononrightclick',
- 'editondblclick',
- 'editwidth',
- 'showtoolbar',
- 'previewonfirst',
- 'previewontop',
- 'minordefault',
- 'externaleditor',
- 'externaldiff',
- $wgLivePreview ? 'uselivepreview' : false,
- 'forceeditsummary',
- ) )
- );
-
- $wgOut->addHTML( Xml::closeElement( 'fieldset' ) );
-
- # Recent changes
- global $wgRCMaxAge, $wgUseRCPatrol;
- $wgOut->addHTML(
- Xml::fieldset( wfMsg( 'prefs-rc' ) ) .
- Xml::openElement( 'table' ) .
- '<tr>
- <td class="mw-label">' .
- Xml::label( wfMsg( 'recentchangesdays' ), 'wpRecentDays' ) .
- '</td>
- <td class="mw-input">' .
- Xml::input( 'wpRecentDays', 3, $this->mRecentDays, array( 'id' => 'wpRecentDays' ) ) . ' ' .
- wfMsgExt( 'recentchangesdays-max', 'parsemag',
- $wgLang->formatNum( ceil( $wgRCMaxAge / ( 3600 * 24 ) ) ) ) .
- '</td>
- </tr><tr>
- <td class="mw-label">' .
- Xml::label( wfMsg( 'recentchangescount' ), 'wpRecent' ) .
- '</td>
- <td class="mw-input">' .
- Xml::input( 'wpRecent', 3, $this->mRecent, array( 'id' => 'wpRecent' ) ) .
- '</td>
- </tr>' .
- Xml::closeElement( 'table' ) .
- '<br />'
- );
-
- $toggles[] = 'hideminor';
- if( $wgUseRCPatrol ) {
- $toggles[] = 'hidepatrolled';
- $toggles[] = 'newpageshidepatrolled';
- }
- if( $wgRCShowWatchingUsers ) $toggles[] = 'shownumberswatching';
- $toggles[] = 'usenewrc';
-
- $wgOut->addHTML(
- $this->getToggles( $toggles ) .
- Xml::closeElement( 'fieldset' )
- );
-
- # Watchlist
- $watchlistToggles = array( 'watchlisthideminor', 'watchlisthidebots', 'watchlisthideown',
- 'watchlisthideanons', 'watchlisthideliu' );
- if( $wgUseRCPatrol ) $watchlistToggles[] = 'watchlisthidepatrolled';
-
- $wgOut->addHTML(
- Xml::fieldset( wfMsg( 'prefs-watchlist' ) ) .
- Xml::inputLabel( wfMsg( 'prefs-watchlist-days' ), 'wpWatchlistDays', 'wpWatchlistDays', 3, $this->mWatchlistDays ) . ' ' .
- wfMsgHTML( 'prefs-watchlist-days-max' ) .
- '<br /><br />' .
- $this->getToggle( 'extendwatchlist' ) .
- Xml::inputLabel( wfMsg( 'prefs-watchlist-edits' ), 'wpWatchlistEdits', 'wpWatchlistEdits', 3, $this->mWatchlistEdits ) . ' ' .
- wfMsgHTML( 'prefs-watchlist-edits-max' ) .
- '<br /><br />' .
- $this->getToggles( $watchlistToggles )
- );
-
- if( $wgUser->isAllowed( 'createpage' ) || $wgUser->isAllowed( 'createtalk' ) ) {
- $wgOut->addHTML( $this->getToggle( 'watchcreations' ) );
- }
-
- foreach( array( 'edit' => 'watchdefault', 'move' => 'watchmoves', 'delete' => 'watchdeletion' ) as $action => $toggle ) {
- if( $wgUser->isAllowed( $action ) )
- $wgOut->addHTML( $this->getToggle( $toggle ) );
- }
- $this->mUsedToggles['watchcreations'] = true;
- $this->mUsedToggles['watchdefault'] = true;
- $this->mUsedToggles['watchmoves'] = true;
- $this->mUsedToggles['watchdeletion'] = true;
-
- $wgOut->addHTML( Xml::closeElement( 'fieldset' ) );
-
- # Search
- $mwsuggest = $wgEnableMWSuggest ?
- $this->addRow(
- Xml::label( wfMsg( 'mwsuggest-disable' ), 'wpDisableMWSuggest' ),
- Xml::check( 'wpDisableMWSuggest', $this->mDisableMWSuggest, array( 'id' => 'wpDisableMWSuggest' ) )
- ) : '';
- $wgOut->addHTML(
- // Elements for the search tab itself
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'searchresultshead' ) ) .
- // Elements for the search options in the search tab
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'prefs-searchoptions' ) ) .
- Xml::openElement( 'table' ) .
- $this->addRow(
- Xml::label( wfMsg( 'resultsperpage' ), 'wpSearch' ),
- Xml::input( 'wpSearch', 4, $this->mSearch, array( 'id' => 'wpSearch' ) )
- ) .
- $this->addRow(
- Xml::label( wfMsg( 'contextlines' ), 'wpSearchLines' ),
- Xml::input( 'wpSearchLines', 4, $this->mSearchLines, array( 'id' => 'wpSearchLines' ) )
- ) .
- $this->addRow(
- Xml::label( wfMsg( 'contextchars' ), 'wpSearchChars' ),
- Xml::input( 'wpSearchChars', 4, $this->mSearchChars, array( 'id' => 'wpSearchChars' ) )
- ) .
- $mwsuggest .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'fieldset' ) .
- // Elements for the namespace options in the search tab
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'prefs-namespaces' ) ) .
- wfMsgExt( 'defaultns', array( 'parse' ) ) .
- $ps .
- Xml::closeElement( 'fieldset' ) .
- // End of the search tab
- Xml::closeElement( 'fieldset' )
- );
-
- # Misc
- #
- $uopt = $wgUser->getOption( 'underline' );
- $wgOut->addHTML(
- Xml::fieldset( wfMsg( 'prefs-misc' ) ) .
- Xml::openElement( 'table' ) .
- '<tr>
- <td class="mw-label">' .
- // Xml::label() cannot be used because 'stub-threshold' contains plain HTML
- Xml::tags( 'label', array( 'for' => 'wpStubs' ), wfMsg( 'stub-threshold' ) ) .
- '</td>
- <td class="mw-input">' .
- Xml::input( 'wpStubs', 6, $this->mStubs, array( 'id' => 'wpStubs' ) ) .
- '</td>
- </tr><tr>
- <td class="mw-label">' .
- Xml::label( wfMsg( 'tog-underline' ), 'wpOpunderline' ) .
- '</td>
- <td class="mw-input">' .
- Xml::openElement( 'select', array( 'id' => 'wpOpunderline', 'name' => 'wpOpunderline' ) ) .
- Xml::option( wfMsg ( 'underline-never' ), '0', $uopt == 0 ) .
- Xml::option( wfMsg ( 'underline-always' ), '1', $uopt == 1 ) .
- Xml::option( wfMsg ( 'underline-default' ), '2', $uopt == 2 ) .
- Xml::closeElement( 'select' ) .
- '</td>
- </tr>' .
- Xml::closeElement( 'table' )
- );
-
- # And now the rest = Misc.
- foreach ( $togs as $tname ) {
- if( !array_key_exists( $tname, $this->mUsedToggles ) ) {
- if( $tname == 'norollbackdiff' && $wgUser->isAllowed( 'rollback' ) )
- $wgOut->addHTML( $this->getToggle( $tname ) );
- else
- $wgOut->addHTML( $this->getToggle( $tname ) );
- }
- }
-
- $wgOut->addHTML( '</fieldset>' );
-
- wfRunHooks( 'RenderPreferencesForm', array( $this, $wgOut ) );
- $token = htmlspecialchars( $wgUser->editToken() );
- $skin = $wgUser->getSkin();
- $rtl = $wgContLang->isRTL() ? 'left' : 'right';
- $wgOut->addHTML( "
- <table id='prefsubmit' cellpadding='0' width='100%' style='background:none;'><tr>
- <td><input type='submit' name='wpSaveprefs' class='btnSavePrefs' value=\"" . wfMsgHtml( 'saveprefs' ) .
- '"'.$skin->tooltipAndAccesskey('save')." />
- <input type='submit' name='wpReset' value=\"" . wfMsgHtml( 'resetprefs' ) . "\" /></td>
- <td align='$rtl'><input type='submit' name='wpRestore' value=\"" . wfMsgHtml( 'restoreprefs' ) . "\" /></td>
- </tr></table>
+ $url = SpecialPage::getTitleFor( 'Preferences' )->getFullURL( 'success' );
- <input type='hidden' name='wpEditToken' value=\"{$token}\" />
- </div></form>\n" );
+ $wgOut->redirect( $url );
- $wgOut->addHTML( Xml::tags( 'div', array( 'class' => "prefcache" ),
- wfMsgExt( 'clearyourcache', 'parseinline' ) )
- );
+ return true;
}
}
diff --git a/includes/specials/SpecialPrefixindex.php b/includes/specials/SpecialPrefixindex.php
index 680fe343..8b5f0c93 100644
--- a/includes/specials/SpecialPrefixindex.php
+++ b/includes/specials/SpecialPrefixindex.php
@@ -63,7 +63,7 @@ class SpecialPrefixindex extends SpecialAllpages {
Xml::label( wfMsg( 'allpagesprefix' ), 'nsfrom' ) .
"</td>
<td class='mw-input'>" .
- Xml::input( 'from', 30, str_replace('_',' ',$from), array( 'id' => 'nsfrom' ) ) .
+ Xml::input( 'prefix', 30, str_replace('_',' ',$from), array( 'id' => 'nsfrom' ) ) .
"</td>
</tr>
<tr>
@@ -115,7 +115,7 @@ class SpecialPrefixindex extends SpecialAllpages {
array( 'page_namespace', 'page_title', 'page_is_redirect' ),
array(
'page_namespace' => $namespace,
- 'page_title LIKE \'' . $dbr->escapeLike( $prefixKey ) .'%\'',
+ 'page_title' . $dbr->buildLike( $prefixKey, $dbr->anyString() ),
'page_title >= ' . $dbr->addQuotes( $fromKey ),
),
__METHOD__,
@@ -136,7 +136,10 @@ class SpecialPrefixindex extends SpecialAllpages {
$t = Title::makeTitle( $s->page_namespace, $s->page_title );
if( $t ) {
$link = ($s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
- $sk->makeKnownLinkObj( $t, htmlspecialchars( $t->getText() ), false, false ) .
+ $sk->linkKnown(
+ $t,
+ htmlspecialchars( $t->getText() )
+ ) .
($s->page_is_redirect ? '</div>' : '' );
} else {
$link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
@@ -170,17 +173,26 @@ class SpecialPrefixindex extends SpecialAllpages {
$nsForm .
'</td>
<td id="mw-prefixindex-nav-form">' .
- $sk->makeKnownLinkObj( $self, wfMsg ( 'allpages' ) );
+ $sk->linkKnown( $self, wfMsgHtml( 'allpages' ) );
if( isset( $res ) && $res && ( $n == $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
- $namespaceparam = $namespace ? "&namespace=$namespace" : "";
+ $query = array(
+ 'from' => $s->page_title,
+ 'prefix' => $prefix
+ );
+
+ if( $namespace ) {
+ $query['namespace'] = $namespace;
+ }
+
$out2 = $wgLang->pipeList( array(
$out2,
- $sk->makeKnownLinkObj(
+ $sk->linkKnown(
$self,
wfMsgHtml( 'nextpage', str_replace( '_',' ', htmlspecialchars( $s->page_title ) ) ),
- "from=" . wfUrlEncode( $s->page_title ) .
- "&prefix=" . wfUrlEncode( $prefix ) . $namespaceparam )
+ array(),
+ $query
+ )
) );
}
$out2 .= "</td></tr>" .
diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php
index a38a8cd1..8229770c 100644
--- a/includes/specials/SpecialProtectedpages.php
+++ b/includes/specials/SpecialProtectedpages.php
@@ -16,7 +16,7 @@ class ProtectedPagesForm {
public function showList( $msg = '' ) {
global $wgOut, $wgRequest;
- if( "" != $msg ) {
+ if( $msg != "" ) {
$wgOut->setSubtitle( $msg );
}
@@ -65,7 +65,7 @@ class ProtectedPagesForm {
$skin = $wgUser->getSkin();
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
- $link = $skin->makeLinkObj( $title );
+ $link = $skin->link( $title );
$description_items = array ();
@@ -86,7 +86,7 @@ class ProtectedPagesForm {
$expiry_description = wfMsg( 'protect-expiring' , $wgLang->timeanddate( $expiry ) ,
$wgLang->date( $expiry ) , $wgLang->time( $expiry ) );
- $description_items[] = $expiry_description;
+ $description_items[] = htmlspecialchars($expiry_description);
}
if(!is_null($size = $row->page_len)) {
@@ -95,17 +95,31 @@ class ProtectedPagesForm {
# Show a link to the change protection form for allowed users otherwise a link to the protection log
if( $wgUser->isAllowed( 'protect' ) ) {
- $changeProtection = ' (' . $skin->makeKnownLinkObj( $title, wfMsgHtml( 'protect_change' ),
- 'action=unprotect' ) . ')';
+ $changeProtection = ' (' . $skin->linkKnown(
+ $title,
+ wfMsgHtml( 'protect_change' ),
+ array(),
+ array( 'action' => 'unprotect' )
+ ) . ')';
} else {
$ltitle = SpecialPage::getTitleFor( 'Log' );
- $changeProtection = ' (' . $skin->makeKnownLinkObj( $ltitle, wfMsgHtml( 'protectlogpage' ),
- 'type=protect&page=' . $title->getPrefixedUrl() ) . ')';
+ $changeProtection = ' (' . $skin->linkKnown(
+ $ltitle,
+ wfMsgHtml( 'protectlogpage' ),
+ array(),
+ array(
+ 'type' => 'protect',
+ 'page' => $title->getPrefixedText()
+ )
+ ) . ')';
}
wfProfileOut( __METHOD__ );
- return '<li>' . wfSpecialList( $link . $stxt, implode( $description_items, ', ' ) ) . $changeProtection . "</li>\n";
+ return Html::rawElement(
+ 'li',
+ array(),
+ wfSpecialList( $link . $stxt, $wgLang->commaList( $description_items ) ) . $changeProtection ) . "\n";
}
/**
@@ -120,7 +134,7 @@ class ProtectedPagesForm {
*/
protected function showOptions( $namespace, $type='edit', $level, $sizetype, $size, $indefOnly, $cascadeOnly ) {
global $wgScript;
- $title = SpecialPage::getTitleFor( 'ProtectedPages' );
+ $title = SpecialPage::getTitleFor( 'Protectedpages' );
return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', array(), wfMsg( 'protectedpages' ) ) .
@@ -128,10 +142,10 @@ class ProtectedPagesForm {
$this->getNamespaceMenu( $namespace ) . "&nbsp;\n" .
$this->getTypeMenu( $type ) . "&nbsp;\n" .
$this->getLevelMenu( $level ) . "&nbsp;\n" .
- "<br/><span style='white-space: nowrap'>" .
+ "<br /><span style='white-space: nowrap'>" .
$this->getExpiryCheck( $indefOnly ) . "&nbsp;\n" .
$this->getCascadeCheck( $cascadeOnly ) . "&nbsp;\n" .
- "</span><br/><span style='white-space: nowrap'>" .
+ "</span><br /><span style='white-space: nowrap'>" .
$this->getSizeLimit( $sizetype, $size ) . "&nbsp;\n" .
"</span>" .
"&nbsp;" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
@@ -185,6 +199,8 @@ class ProtectedPagesForm {
}
/**
+ * Creates the input label of the restriction type
+ * @param $pr_type string Protection type
* @return string Formatted HTML
*/
protected function getTypeMenu( $pr_type ) {
@@ -213,6 +229,8 @@ class ProtectedPagesForm {
}
/**
+ * Creates the input label of the restriction level
+ * @param $pr_level string Protection level
* @return string Formatted HTML
*/
protected function getLevelMenu( $pr_level ) {
@@ -223,6 +241,7 @@ class ProtectedPagesForm {
// First pass to load the log names
foreach( $wgRestrictionLevels as $type ) {
+ // Messages used can be 'restriction-level-sysop' and 'restriction-level-autoconfirmed'
if( $type !='' && $type !='*') {
$text = wfMsg("restriction-level-$type");
$m[$text] = $type;
@@ -235,11 +254,11 @@ class ProtectedPagesForm {
$options[] = Xml::option( $text, $type, $selected );
}
- return
- Xml::label( wfMsg('restriction-level') , $this->IdLevel ) . '&nbsp;' .
+ return "<span style='white-space: nowrap'>" .
+ Xml::label( wfMsg( 'restriction-level' ) , $this->IdLevel ) . ' ' .
Xml::tags( 'select',
array( 'id' => $this->IdLevel, 'name' => $this->IdLevel ),
- implode( "\n", $options ) );
+ implode( "\n", $options ) ) . "</span>";
}
}
diff --git a/includes/specials/SpecialProtectedtitles.php b/includes/specials/SpecialProtectedtitles.php
index 7e8126d9..d65b3f79 100644
--- a/includes/specials/SpecialProtectedtitles.php
+++ b/includes/specials/SpecialProtectedtitles.php
@@ -16,7 +16,7 @@ class ProtectedTitlesForm {
function showList( $msg = '' ) {
global $wgOut, $wgRequest;
- if ( "" != $msg ) {
+ if ( $msg != "" ) {
$wgOut->setSubtitle( $msg );
}
@@ -61,7 +61,7 @@ class ProtectedTitlesForm {
$skin = $wgUser->getSkin();
$title = Title::makeTitleSafe( $row->pt_namespace, $row->pt_title );
- $link = $skin->makeLinkObj( $title );
+ $link = $skin->link( $title );
$description_items = array ();
@@ -94,7 +94,7 @@ class ProtectedTitlesForm {
function showOptions( $namespace, $type='edit', $level, $sizetype, $size ) {
global $wgScript;
$action = htmlspecialchars( $wgScript );
- $title = SpecialPage::getTitleFor( 'ProtectedTitles' );
+ $title = SpecialPage::getTitleFor( 'Protectedtitles' );
$special = htmlspecialchars( $title->getPrefixedDBkey() );
return "<form action=\"$action\" method=\"get\">\n" .
'<fieldset>' .
diff --git a/includes/specials/SpecialRandompage.php b/includes/specials/SpecialRandompage.php
index 31199b23..fd3f17f2 100644
--- a/includes/specials/SpecialRandompage.php
+++ b/includes/specials/SpecialRandompage.php
@@ -9,12 +9,12 @@
*/
class RandomPage extends SpecialPage {
private $namespaces; // namespaces to select pages from
+ protected $isRedir = false; // should the result be a redirect?
+ protected $extra = array(); // Extra SQL statements
- function __construct( $name = 'Randompage' ){
+ public function __construct( $name = 'Randompage' ){
global $wgContentNamespaces;
-
$this->namespaces = $wgContentNamespaces;
-
parent::__construct( $name );
}
@@ -28,22 +28,23 @@ class RandomPage extends SpecialPage {
}
// select redirects instead of normal pages?
- // Overriden by SpecialRandomredirect
public function isRedirect(){
- return false;
+ return $this->isRedir;
}
public function execute( $par ) {
global $wgOut, $wgContLang;
- if ($par)
+ if ($par) {
$this->setNamespace( $wgContLang->getNsIndex( $par ) );
+ }
$title = $this->getRandomTitle();
if( is_null( $title ) ) {
$this->setHeaders();
- $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages', $wgContLang->getNsText( $this->namespace ) );
+ $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages',
+ $this->getNsList(), count( $this->namespaces ) );
return;
}
@@ -51,6 +52,23 @@ class RandomPage extends SpecialPage {
$wgOut->redirect( $title->getFullUrl( $query ) );
}
+ /**
+ * Get a comma-delimited list of namespaces we don't have
+ * any pages in
+ * @return String
+ */
+ private function getNsList() {
+ global $wgContLang;
+ $nsNames = array();
+ foreach( $this->namespaces as $n ) {
+ if( $n === NS_MAIN )
+ $nsNames[] = wfMsgForContent( 'blanknamespace' );
+ else
+ $nsNames[] = $wgContLang->getNsText( $n );
+ }
+ return $wgContLang->commaList( $nsNames );
+ }
+
/**
* Choose a random title.
@@ -58,6 +76,10 @@ class RandomPage extends SpecialPage {
*/
public function getRandomTitle() {
$randstr = wfRandom();
+ $title = null;
+ if ( !wfRunHooks( 'SpecialRandomGetRandomTitle', array( &$randstr, &$this->isRedir, &$this->namespaces, &$this->extra, &$title ) ) ) {
+ return $title;
+ }
$row = $this->selectRandomPageFromDB( $randstr );
/* If we picked a value that was higher than any in
@@ -78,8 +100,6 @@ class RandomPage extends SpecialPage {
private function selectRandomPageFromDB( $randstr ) {
global $wgExtraRandompageSQL;
- $fname = 'RandomPage::selectRandomPageFromDB';
-
$dbr = wfGetDB( DB_SLAVE );
$use_index = $dbr->useIndexClause( 'page_random' );
@@ -87,8 +107,17 @@ class RandomPage extends SpecialPage {
$ns = implode( ",", $this->namespaces );
$redirect = $this->isRedirect() ? 1 : 0;
-
- $extra = $wgExtraRandompageSQL ? "AND ($wgExtraRandompageSQL)" : "";
+
+ if ( $wgExtraRandompageSQL ) {
+ $this->extra[] = $wgExtraRandompageSQL;
+ }
+ if ( $this->addExtraSQL() ) {
+ $this->extra[] = $this->addExtraSQL();
+ }
+ $extra = '';
+ if ( $this->extra ) {
+ $extra = 'AND (' . implode( ') AND (', $this->extra ) . ')';
+ }
$sql = "SELECT page_title, page_namespace
FROM $page $use_index
WHERE page_namespace IN ( $ns )
@@ -98,7 +127,15 @@ class RandomPage extends SpecialPage {
ORDER BY page_random";
$sql = $dbr->limitResult( $sql, 1, 0 );
- $res = $dbr->query( $sql, $fname );
+ $res = $dbr->query( $sql, __METHOD__ );
return $dbr->fetchObject( $res );
}
+
+ /* an alternative to $wgExtraRandompageSQL so subclasses
+ * can add their own SQL by overriding this function
+ * @deprecated, append to $this->extra instead
+ */
+ public function addExtraSQL() {
+ return '';
+ }
}
diff --git a/includes/specials/SpecialRandomredirect.php b/includes/specials/SpecialRandomredirect.php
index 629d5b3c..28cb2aae 100644
--- a/includes/specials/SpecialRandomredirect.php
+++ b/includes/specials/SpecialRandomredirect.php
@@ -10,10 +10,7 @@
class SpecialRandomredirect extends RandomPage {
function __construct(){
parent::__construct( 'Randomredirect' );
+ $this->isRedir = true;
}
- // Override parent::isRedirect()
- public function isRedirect(){
- return true;
- }
}
diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php
index 91c0ecbe..283eeaf4 100644
--- a/includes/specials/SpecialRecentchanges.php
+++ b/includes/specials/SpecialRecentchanges.php
@@ -5,6 +5,8 @@
* @ingroup SpecialPage
*/
class SpecialRecentChanges extends SpecialPage {
+ var $rcOptions, $rcSubpage;
+
public function __construct() {
parent::__construct( 'Recentchanges' );
$this->includable( true );
@@ -40,7 +42,7 @@ class SpecialRecentChanges extends SpecialPage {
}
/**
- * Get a FormOptions object with options as specified by the user
+ * Create a FormOptions object with options as specified by the user
*
* @return FormOptions
*/
@@ -55,31 +57,45 @@ class SpecialRecentChanges extends SpecialPage {
$this->parseParameters( $parameters, $opts );
}
- $opts->validateIntBounds( 'limit', 0, 500 );
+ $opts->validateIntBounds( 'limit', 0, 5000 );
return $opts;
}
/**
- * Get a FormOptions object sepcific for feed requests
+ * Create a FormOptions object specific for feed requests and return it
*
* @return FormOptions
*/
public function feedSetup() {
global $wgFeedLimit, $wgRequest;
$opts = $this->getDefaultOptions();
- # Feed is cached on limit,hideminor; other params would randomly not work
- $opts->fetchValuesFromRequest( $wgRequest, array( 'limit', 'hideminor' ) );
+ # Feed is cached on limit,hideminor,namespace; other params would randomly not work
+ $opts->fetchValuesFromRequest( $wgRequest, array( 'limit', 'hideminor', 'namespace' ) );
$opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
return $opts;
}
/**
+ * Get the current FormOptions for this request
+ */
+ public function getOptions() {
+ if ( $this->rcOptions === null ) {
+ global $wgRequest;
+ $feedFormat = $wgRequest->getVal( 'feed' );
+ $this->rcOptions = $feedFormat ? $this->feedSetup() : $this->setup( $this->rcSubpage );
+ }
+ return $this->rcOptions;
+ }
+
+
+ /**
* Main execution point
*
- * @param $parameters string
+ * @param $subpage string
*/
- public function execute( $parameters ) {
+ public function execute( $subpage ) {
global $wgRequest, $wgOut;
+ $this->rcSubpage = $subpage;
$feedFormat = $wgRequest->getVal( 'feed' );
# 10 seconds server-side caching max
@@ -90,12 +106,11 @@ class SpecialRecentChanges extends SpecialPage {
return;
}
- $opts = $feedFormat ? $this->feedSetup() : $this->setup( $parameters );
+ $opts = $this->getOptions();
$this->setHeaders();
$this->outputHeader();
// Fetch results, prepare a batch link existence check query
- $rows = array();
$conds = $this->buildMainQueryConds( $opts );
$rows = $this->doMainQuery( $conds, $opts );
if( $rows === false ){
@@ -114,10 +129,9 @@ class SpecialRecentChanges extends SpecialPage {
}
$batch->execute();
}
- $target = isset($opts['target']) ? $opts['target'] : ''; // RCL has targets
if( $feedFormat ) {
- list( $feed, $feedObj ) = $this->getFeedObject( $feedFormat );
- $feed->execute( $feedObj, $rows, $opts['limit'], $opts['hideminor'], $lastmod, $target );
+ list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+ $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
} else {
$this->webOutput( $rows, $opts );
}
@@ -131,12 +145,12 @@ class SpecialRecentChanges extends SpecialPage {
* @return array
*/
public function getFeedObject( $feedFormat ){
- $feed = new ChangesFeed( $feedFormat, 'rcfeed' );
- $feedObj = $feed->getFeedObject(
+ $changesFeed = new ChangesFeed( $feedFormat, 'rcfeed' );
+ $formatter = $changesFeed->getFeedObject(
wfMsgForContent( 'recentchanges' ),
wfMsgForContent( 'recentchanges-feed-description' )
);
- return array( $feed, $feedObj );
+ return array( $changesFeed, $formatter );
}
/**
@@ -177,7 +191,7 @@ class SpecialRecentChanges extends SpecialPage {
public function checkLastModified( $feedFormat ) {
global $wgUseRCPatrol, $wgOut;
$dbr = wfGetDB( DB_SLAVE );
- $lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __FUNCTION__ );
+ $lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __METHOD__ );
if( $feedFormat || !$wgUseRCPatrol ) {
if( $lastmod && $wgOut->checkLastModified( $lastmod ) ) {
# Client cache fresh and headers sent, nothing more to do.
@@ -278,8 +292,6 @@ class SpecialRecentChanges extends SpecialPage {
$namespace = $opts['namespace'];
$invert = $opts['invert'];
- $join_conds = array();
-
// JOIN on watchlist for users
if( $uid ) {
$tables[] = 'watchlist';
@@ -293,20 +305,23 @@ class SpecialRecentChanges extends SpecialPage {
// Tag stuff.
$fields = array();
// Fields are * in this case, so let the function modify an empty array to keep it happy.
- ChangeTags::modifyDisplayQuery( $tables,
- $fields,
- $conds,
- $join_conds,
- $query_options,
- $opts['tagfilter']
- );
-
- wfRunHooks('SpecialRecentChangesQuery', array( &$conds, &$tables, &$join_conds, $opts ) );
-
- // Is there either one namespace selected or excluded?
- // Tag filtering also has a better index.
- // Also, if this is "all" or main namespace, just use timestamp index.
- if( is_null($namespace) || $invert || $namespace == NS_MAIN || $opts['tagfilter'] ) {
+ ChangeTags::modifyDisplayQuery(
+ $tables, $fields, $conds, $join_conds, $query_options, $opts['tagfilter']
+ );
+
+ if ( !wfRunHooks( 'SpecialRecentChangesQuery', array( &$conds, &$tables, &$join_conds, $opts, &$query_options ) ) )
+ return false;
+
+ // Don't use the new_namespace_time timestamp index if:
+ // (a) "All namespaces" selected
+ // (b) We want all pages NOT in a certain namespaces (inverted)
+ // (c) There is a tag to filter on (use tag index instead)
+ // (d) UNION + sort/limit is not an option for the DBMS
+ if( is_null($namespace)
+ || $invert
+ || $opts['tagfilter'] != ''
+ || !$dbr->unionSupportsOrderAndLimit() )
+ {
$res = $dbr->select( $tables, '*', $conds, __METHOD__,
array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit ) +
$query_options,
@@ -318,17 +333,18 @@ class SpecialRecentChanges extends SpecialPage {
array( 'rc_new' => 1 ) + $conds,
__METHOD__,
array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit,
- 'USE INDEX' => array('recentchanges' => 'new_name_timestamp') ),
+ 'USE INDEX' => array('recentchanges' => 'rc_timestamp') ),
$join_conds );
// Old pages
$sqlOld = $dbr->selectSQLText( $tables, '*',
array( 'rc_new' => 0 ) + $conds,
__METHOD__,
array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit,
- 'USE INDEX' => array('recentchanges' => 'new_name_timestamp') ),
+ 'USE INDEX' => array('recentchanges' => 'rc_timestamp') ),
$join_conds );
# Join the two fast queries, and sort the result set
- $sql = "($sqlNew) UNION ($sqlOld) ORDER BY rc_timestamp DESC LIMIT $limit";
+ $sql = $dbr->unionQueries(array($sqlNew, $sqlOld), false).' ORDER BY rc_timestamp DESC';
+ $sql = $dbr->limitResult($sql, $limit, false);
$res = $dbr->query( $sql, __METHOD__ );
}
@@ -353,7 +369,7 @@ class SpecialRecentChanges extends SpecialPage {
}
// And now for the content
- $wgOut->setSyndicated( true );
+ $wgOut->setFeedAppendQuery( $this->getFeedQuery() );
if( $wgAllowCategorizedRecentChanges ) {
$this->filterByCategories( $rows, $opts );
@@ -401,6 +417,14 @@ class SpecialRecentChanges extends SpecialPage {
}
/**
+ * Get the query string to append to feed link URLs.
+ * This is overridden by RCL to add the target parameter
+ */
+ public function getFeedQuery() {
+ return false;
+ }
+
+ /**
* Return the text to be displayed above the changes
*
* @param $opts FormOptions
@@ -413,7 +437,7 @@ class SpecialRecentChanges extends SpecialPage {
$defaults = $opts->getAllValues();
$nondefaults = $opts->getChangedValues();
- $opts->consumeValues( array( 'namespace', 'invert' ) );
+ $opts->consumeValues( array( 'namespace', 'invert', 'tagfilter' ) );
$panel = array();
$panel[] = $this->optionsPanel( $defaults, $nondefaults );
@@ -456,6 +480,8 @@ class SpecialRecentChanges extends SpecialPage {
Xml::fieldset( wfMsg( 'recentchanges-legend' ), $panelString, array( 'class' => 'rcoptions' ) )
);
+ $wgOut->addHTML( ChangesList::flagLegend() );
+
$this->setBottomText( $wgOut, $opts );
}
@@ -597,8 +623,12 @@ class SpecialRecentChanges extends SpecialPage {
global $wgUser;
$sk = $wgUser->getSkin();
$params = $override + $options;
- return $sk->link( $this->getTitle(), htmlspecialchars( $title ),
- ( $active ? array( 'style'=>'font-weight: bold;' ) : array() ), $params, array( 'known' ) );
+ if ( $active ) {
+ return $sk->link( $this->getTitle(), '<strong>' . htmlspecialchars( $title ) . '</strong>',
+ array(), $params, array( 'known' ) );
+ } else {
+ return $sk->link( $this->getTitle(), htmlspecialchars( $title ), array() , $params, array( 'known' ) );
+ }
}
/**
@@ -618,7 +648,9 @@ class SpecialRecentChanges extends SpecialPage {
if( $options['from'] ) {
$note .= wfMsgExt( 'rcnotefrom', array( 'parseinline' ),
$wgLang->formatNum( $options['limit'] ),
- $wgLang->timeanddate( $options['from'], true ) ) . '<br />';
+ $wgLang->timeanddate( $options['from'], true ),
+ $wgLang->date( $options['from'], true ),
+ $wgLang->time( $options['from'], true ) ) . '<br />';
}
# Sort data for display and make sure it's unique after we've added user data.
diff --git a/includes/specials/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php
index c58ffff0..3b549843 100644
--- a/includes/specials/SpecialRecentchangeslinked.php
+++ b/includes/specials/SpecialRecentchangeslinked.php
@@ -5,6 +5,7 @@
* @ingroup SpecialPage
*/
class SpecialRecentchangeslinked extends SpecialRecentchanges {
+ var $rclTargetTitle;
function __construct(){
SpecialPage::SpecialPage( 'Recentchangeslinked' );
@@ -26,7 +27,6 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
public function feedSetup() {
global $wgRequest;
$opts = parent::feedSetup();
- # Feed is cached on limit,hideminor,target; other params would randomly not work
$opts['target'] = $wgRequest->getVal( 'target' );
return $opts;
}
@@ -34,8 +34,8 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
public function getFeedObject( $feedFormat ){
$feed = new ChangesFeed( $feedFormat, false );
$feedObj = $feed->getFeedObject(
- wfMsgForContent( 'recentchangeslinked-title', $this->mTargetTitle->getPrefixedText() ),
- wfMsgForContent( 'recentchangeslinked' )
+ wfMsgForContent( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() ),
+ wfMsgForContent( 'recentchangeslinked-feed' )
);
return array( $feed, $feedObj );
}
@@ -52,10 +52,9 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
}
$title = Title::newFromURL( $target );
if( !$title || $title->getInterwiki() != '' ){
- $wgOut->wrapWikiMsg( '<div class="errorbox">$1</div><br clear="both" />', 'allpagesbadtitle' );
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">\n$1</div><br style=\"clear: both\" />", 'allpagesbadtitle' );
return false;
}
- $this->mTargetTitle = $title;
$wgOut->setPageTitle( wfMsg( 'recentchangeslinked-title', $title->getPrefixedText() ) );
@@ -84,6 +83,11 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
$select[] = 'wl_user';
$join_conds['watchlist'] = array( 'LEFT JOIN', "wl_user={$uid} AND wl_title=rc_title AND wl_namespace=rc_namespace" );
}
+ if ( $wgUser->isAllowed( 'rollback' ) ) {
+ $tables[] = 'page';
+ $join_conds['page'] = array('LEFT JOIN', 'rc_cur_id=page_id');
+ $select[] = 'page_latest';
+ }
ChangeTags::modifyDisplayQuery( $tables, $select, $conds, $join_conds,
$query_options, $opts['tagfilter'] );
@@ -139,25 +143,37 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
}
}
- $subsql[] = $dbr->selectSQLText(
+ if( $dbr->unionSupportsOrderAndLimit())
+ $order = array( 'ORDER BY' => 'rc_timestamp DESC' );
+ else
+ $order = array();
+
+
+ $query = $dbr->selectSQLText(
array_merge( $tables, array( $link_table ) ),
$select,
$conds + $subconds,
__METHOD__,
- array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit ) + $query_options,
+ $order + $query_options,
$join_conds + array( $link_table => array( 'INNER JOIN', $subjoin ) )
);
+
+ if( $dbr->unionSupportsOrderAndLimit())
+ $query = $dbr->limitResult( $query, $limit );
+
+ $subsql[] = $query;
}
if( count($subsql) == 0 )
return false; // should never happen
- if( count($subsql) == 1 )
+ if( count($subsql) == 1 && $dbr->unionSupportsOrderAndLimit() )
$sql = $subsql[0];
else {
// need to resort and relimit after union
- $sql = "(" . implode( ") UNION (", $subsql ) . ") ORDER BY rc_timestamp DESC LIMIT {$limit}";
+ $sql = $dbr->unionQueries($subsql, false).' ORDER BY rc_timestamp DESC';
+ $sql = $dbr->limitResult($sql, $limit, false);
}
-
+
$res = $dbr->query( $sql, __METHOD__ );
if( $res->numRows() == 0 )
@@ -167,10 +183,10 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
}
function getExtraOptions( $opts ){
- $opts->consumeValues( array( 'showlinkedto', 'target' ) );
+ $opts->consumeValues( array( 'showlinkedto', 'target', 'tagfilter' ) );
$extraOpts = array();
$extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
- $extraOpts['target'] = array( wfMsg( 'recentchangeslinked-page' ),
+ $extraOpts['target'] = array( wfMsgHtml( 'recentchangeslinked-page' ),
Xml::input( 'target', 40, str_replace('_',' ',$opts['target']) ) .
Xml::check( 'showlinkedto', $opts['showlinkedto'], array('id' => 'showlinkedto') ) . ' ' .
Xml::label( wfMsg("recentchangeslinked-to"), 'showlinkedto' ) );
@@ -180,19 +196,37 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
return $extraOpts;
}
+ function getTargetTitle() {
+ if ( $this->rclTargetTitle === null ) {
+ $opts = $this->getOptions();
+ if ( isset( $opts['target'] ) && $opts['target'] !== '' ) {
+ $this->rclTargetTitle = Title::newFromText( $opts['target'] );
+ } else {
+ $this->rclTargetTitle = false;
+ }
+ }
+ return $this->rclTargetTitle;
+ }
+
function setTopText( OutputPage $out, FormOptions $opts ) {
global $wgUser;
$skin = $wgUser->getSkin();
- if( isset( $this->mTargetTitle ) && is_object( $this->mTargetTitle ) )
- $out->setSubtitle( wfMsg( 'recentchangeslinked-backlink', $skin->link( $this->mTargetTitle,
- $this->mTargetTitle->getPrefixedText(), array(), array( 'redirect' => 'no' ) ) ) );
+ $target = $this->getTargetTitle();
+ if( $target )
+ $out->setSubtitle( wfMsg( 'recentchangeslinked-backlink', $skin->link( $target,
+ $target->getPrefixedText(), array(), array( 'redirect' => 'no' ) ) ) );
}
- function setBottomText( OutputPage $out, FormOptions $opts ){
- if( isset( $this->mTargetTitle ) && is_object( $this->mTargetTitle ) ){
- global $wgUser;
- $out->setFeedAppendQuery( "target=" . urlencode( $this->mTargetTitle->getPrefixedDBkey() ) );
+ public function getFeedQuery() {
+ $target = $this->getTargetTitle();
+ if( $target ) {
+ return "target=" . urlencode( $target->getPrefixedDBkey() );
+ } else {
+ return false;
}
+ }
+
+ function setBottomText( OutputPage $out, FormOptions $opts ) {
if( isset( $this->mResultEmpty ) && $this->mResultEmpty ){
$out->addWikiMsg( 'recentchangeslinked-noresult' );
}
diff --git a/includes/specials/SpecialRemoveRestrictions.php b/includes/specials/SpecialRemoveRestrictions.php
index ded6cbe3..a3428a5a 100644
--- a/includes/specials/SpecialRemoveRestrictions.php
+++ b/includes/specials/SpecialRemoveRestrictions.php
@@ -1,9 +1,9 @@
<?php
function wfSpecialRemoveRestrictions() {
- global $wgOut, $wgRequest, $wgUser, $wgLang, $wgTitle;
+ global $wgOut, $wgRequest, $wgUser, $wgLang;
$sk = $wgUser->getSkin();
-
+ $title = SpecialPage::getTitleFor( 'RemoveRestrictions' );
$id = $wgRequest->getVal( 'id' );
if( !is_numeric( $id ) ) {
$wgOut->addWikiMsg( 'removerestrictions-noid' );
@@ -36,17 +36,17 @@ function wfSpecialRemoveRestrictions() {
if( $result )
$wgOut->addHTML( '<strong class="success">' . wfMsgExt( 'removerestrictions-success',
'parseinline', $r->getSubjectText() ) . '</strong>' );
- $wgOut->addHTML( Xml::openElement( 'form', array( 'action' => $wgTitle->getLocalUrl( array( 'id' => $id ) ),
+ $wgOut->addHTML( Xml::openElement( 'form', array( 'action' => $title->getLocalUrl( array( 'id' => $id ) ),
'method' => 'post' ) ) );
$wgOut->addHTML( Xml::buildForm( $form, 'removerestrictions-submit' ) );
$wgOut->addHTML( Xml::hidden( 'id', $r->getId() ) );
- $wgOut->addHTML( Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() ) );
+ $wgOut->addHTML( Xml::hidden( 'title', $title->getPrefixedDbKey() ) );
$wgOut->addHTML( Xml::hidden( 'edittoken', $wgUser->editToken() ) );
$wgOut->addHTML( "</form></fieldset>" );
}
function wfSpecialRemoveRestrictionsProcess( $r ) {
- global $wgUser, $wgRequest;
+ global $wgRequest;
$reason = $wgRequest->getVal( 'reason' );
$result = $r->delete();
$log = new LogPage( 'restrict' );
diff --git a/includes/specials/SpecialResetpass.php b/includes/specials/SpecialResetpass.php
index 059f8dbd..967d2119 100644
--- a/includes/specials/SpecialResetpass.php
+++ b/includes/specials/SpecialResetpass.php
@@ -37,6 +37,11 @@ class SpecialResetpass extends SpecialPage {
return;
}
+ if( $wgRequest->wasPosted() && $wgRequest->getBool( 'wpCancel' ) ) {
+ $this->doReturnTo();
+ return;
+ }
+
if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getVal('token') ) ) {
try {
$this->attemptReset( $this->mNewpass, $this->mRetype );
@@ -54,17 +59,22 @@ class SpecialResetpass extends SpecialPage {
$login = new LoginForm( new FauxRequest( $data, true ) );
$login->execute();
}
- $titleObj = Title::newFromText( $wgRequest->getVal( 'returnto' ) );
- if ( !$titleObj instanceof Title ) {
- $titleObj = Title::newMainPage();
- }
- $wgOut->redirect( $titleObj->getFullURL() );
+ $this->doReturnTo();
} catch( PasswordError $e ) {
$this->error( $e->getMessage() );
}
}
$this->showForm();
}
+
+ function doReturnTo() {
+ global $wgRequest, $wgOut;
+ $titleObj = Title::newFromText( $wgRequest->getVal( 'returnto' ) );
+ if ( !$titleObj instanceof Title ) {
+ $titleObj = Title::newMainPage();
+ }
+ $wgOut->redirect( $titleObj->getFullURL() );
+ }
function error( $msg ) {
global $wgOut;
@@ -102,52 +112,60 @@ class SpecialResetpass extends SpecialPage {
array(
'method' => 'post',
'action' => $self->getLocalUrl(),
- 'id' => 'mw-resetpass-form' ) ) .
- Xml::hidden( 'token', $wgUser->editToken() ) .
- Xml::hidden( 'wpName', $this->mUserName ) .
- Xml::hidden( 'returnto', $wgRequest->getVal( 'returnto' ) ) .
- wfMsgExt( 'resetpass_text', array( 'parse' ) ) .
- Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) .
+ 'id' => 'mw-resetpass-form' ) ) . "\n" .
+ Xml::hidden( 'token', $wgUser->editToken() ) . "\n" .
+ Xml::hidden( 'wpName', $this->mUserName ) . "\n" .
+ Xml::hidden( 'returnto', $wgRequest->getVal( 'returnto' ) ) . "\n" .
+ wfMsgExt( 'resetpass_text', array( 'parse' ) ) . "\n" .
+ Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
$this->pretty( array(
array( 'wpName', 'username', 'text', $this->mUserName ),
array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
- array( 'wpNewPassword', 'newpassword', 'password', '' ),
- array( 'wpRetype', 'retypenew', 'password', '' ),
- ) ) .
+ array( 'wpNewPassword', 'newpassword', 'password', null ),
+ array( 'wpRetype', 'retypenew', 'password', null ),
+ ) ) . "\n" .
$rememberMe .
- '<tr>' .
- '<td></td>' .
+ "<tr>\n" .
+ "<td></td>\n" .
'<td class="mw-input">' .
Xml::submitButton( wfMsg( $submitMsg ) ) .
- '</td>' .
- '</tr>' .
+ Xml::submitButton( wfMsg( 'resetpass-submit-cancel' ), array( 'name' => 'wpCancel' ) ) .
+ "</td>\n" .
+ "</tr>\n" .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'form' ) .
- Xml::closeElement( 'fieldset' )
+ Xml::closeElement( 'fieldset' ) . "\n"
);
}
function pretty( $fields ) {
$out = '';
- foreach( $fields as $list ) {
+ foreach ( $fields as $list ) {
list( $name, $label, $type, $value ) = $list;
if( $type == 'text' ) {
$field = htmlspecialchars( $value );
} else {
- $field = Xml::input( $name, 20, $value,
- array( 'id' => $name, 'type' => $type ) );
+ $attribs = array( 'id' => $name );
+ if ( $name == 'wpNewPassword' || $name == 'wpRetype' ) {
+ $attribs = array_merge( $attribs,
+ User::passwordChangeInputAttribs() );
+ }
+ if ( $name == 'wpPassword' ) {
+ $attribs[] = 'autofocus';
+ }
+ $field = Html::input( $name, $value, $type, $attribs );
}
- $out .= '<tr>';
- $out .= "<td class='mw-label'>";
+ $out .= "<tr>\n";
+ $out .= "\t<td class='mw-label'>";
if ( $type != 'text' )
$out .= Xml::label( wfMsg( $label ), $name );
else
- $out .= wfMsg( $label );
- $out .= '</td>';
- $out .= "<td class='mw-input'>";
+ $out .= wfMsgHtml( $label );
+ $out .= "</td>\n";
+ $out .= "\t<td class='mw-input'>";
$out .= $field;
- $out .= '</td>';
- $out .= '</tr>';
+ $out .= "</td>\n";
+ $out .= "</tr>";
}
return $out;
}
diff --git a/includes/specials/SpecialRestrictUser.php b/includes/specials/SpecialRestrictUser.php
deleted file mode 100644
index b946cde8..00000000
--- a/includes/specials/SpecialRestrictUser.php
+++ /dev/null
@@ -1,190 +0,0 @@
-<?php
-
-function wfSpecialRestrictUser( $par = null ) {
- global $wgOut, $wgRequest;
- $user = $userOrig = null;
- if( $par ) {
- $userOrig = $par;
- } elseif( $wgRequest->getVal( 'user' ) ) {
- $userOrig = $wgRequest->getVal( 'user' );
- } else {
- $wgOut->addHTML( RestrictUserForm::selectUserForm() );
- return;
- }
- $isIP = User::isIP( $userOrig );
- $user = $isIP ? $userOrig : User::getCanonicalName( $userOrig );
- $uid = User::idFromName( $user );
- if( !$uid && !$isIP ) {
- $err = '<strong class="error">' . wfMsgHtml( 'restrictuser-notfound' ) . '</strong>';
- $wgOut->addHTML( RestrictUserForm::selectUserForm( $userOrig, $err ) );
- return;
- }
- $wgOut->addHTML( RestrictUserForm::selectUserForm( $user ) );
-
- UserRestriction::purgeExpired();
- $old = UserRestriction::fetchForUser( $user, true );
-
- RestrictUserForm::pageRestrictionForm( $uid, $user, $old );
- RestrictUserForm::namespaceRestrictionForm( $uid, $user, $old );
-
- // Renew it after possible changes in previous two functions
- $old = UserRestriction::fetchForUser( $user, true );
- if( $old ) {
- $wgOut->addHTML( RestrictUserForm::existingRestrictions( $old ) );
- }
-}
-
-class RestrictUserForm {
- public static function selectUserForm( $val = null, $error = null ) {
- global $wgScript, $wgTitle;
- $action = htmlspecialchars( $wgScript );
- $s = Xml::fieldset( wfMsg( 'restrictuser-userselect' ) ) . "<form action=\"{$action}\">";
- if( $error )
- $s .= '<p>' . $error . '</p>';
- $s .= Xml::hidden( 'title', $wgTitle->getPrefixedDbKey() );
- $form = array( 'restrictuser-user' => Xml::input( 'user', false, $val ) );
- $s .= Xml::buildForm( $form, 'restrictuser-go' );
- $s .= "</form></fieldset>";
- return $s;
- }
-
- public static function existingRestrictions( $restrictions ) {
- //TODO: autoload?
- require_once( dirname( __FILE__ ) . '/SpecialListUserRestrictions.php' );
- $s = Xml::fieldset( wfMsg( 'restrictuser-existing' ) ) . '<ul>';
- foreach( $restrictions as $r )
- $s .= UserRestrictionsPager::formatRestriction( $r );
- $s .= "</ul></fieldset>";
- return $s;
- }
-
- public static function pageRestrictionForm( $uid, $user, $oldRestrictions ) {
- global $wgOut, $wgTitle, $wgRequest, $wgUser;
- $error = '';
- $success = false;
- if( $wgRequest->wasPosted() && $wgRequest->getVal( 'type' ) == UserRestriction::PAGE &&
- $wgUser->matchEditToken( $wgRequest->getVal( 'edittoken' ) ) ) {
-
- $title = Title::newFromText( $wgRequest->getVal( 'page' ) );
- if( !$title ) {
- $error = array( 'restrictuser-badtitle', $wgRequest->getVal( 'page' ) );
- } elseif( UserRestriction::convertExpiry( $wgRequest->getVal( 'expiry' ) ) === false ) {
- $error = array( 'restrictuser-badexpiry', $wgRequest->getVal( 'expiry' ) );
- } else {
- foreach( $oldRestrictions as $r ) {
- if( $r->isPage() && $r->getPage()->equals( $title ) )
- $error = array( 'restrictuser-duptitle' );
- }
- }
- if( !$error ) {
- self::doPageRestriction( $uid, $user );
- $success = array('restrictuser-success', $user);
- }
- }
- $useRequestValues = $wgRequest->getVal( 'type' ) == UserRestriction::PAGE;
- $wgOut->addHTML( Xml::fieldset( wfMsg( 'restrictuser-legend-page' ) ) );
-
- self::printSuccessError( $success, $error );
-
- $wgOut->addHTML( Xml::openElement( 'form', array( 'action' => $wgTitle->getLocalUrl(),
- 'method' => 'post' ) ) );
- $wgOut->addHTML( Xml::hidden( 'type', UserRestriction::PAGE ) );
- $wgOut->addHTML( Xml::hidden( 'edittoken', $wgUser->editToken() ) );
- $wgOut->addHTML( Xml::hidden( 'user', $user ) );
- $form = array();
- $form['restrictuser-title'] = Xml::input( 'page', false,
- $useRequestValues ? $wgRequest->getVal( 'page' ) : false );
- $form['restrictuser-expiry'] = Xml::input( 'expiry', false,
- $useRequestValues ? $wgRequest->getVal( 'expiry' ) : false );
- $form['restrictuser-reason'] = Xml::input( 'reason', false,
- $useRequestValues ? $wgRequest->getVal( 'reason' ) : false );
- $wgOut->addHTML( Xml::buildForm( $form, 'restrictuser-submit' ) );
- $wgOut->addHTML( "</form></fieldset>" );
- }
-
- public static function printSuccessError( $success, $error ) {
- global $wgOut;
- if ( $error )
- $wgOut->wrapWikiMsg( '<strong class="error">$1</strong>', $error );
- if ( $success )
- $wgOut->wrapWikiMsg( '<strong class="success">$1</strong>', $success );
- }
-
- public static function doPageRestriction( $uid, $user ) {
- global $wgUser, $wgRequest;
- $r = new UserRestriction();
- $r->setType( UserRestriction::PAGE );
- $r->setPage( Title::newFromText( $wgRequest->getVal( 'page' ) ) );
- $r->setSubjectId( $uid );
- $r->setSubjectText( $user );
- $r->setBlockerId( $wgUser->getId() );
- $r->setBlockerText( $wgUser->getName() );
- $r->setReason( $wgRequest->getVal( 'reason' ) );
- $r->setExpiry( UserRestriction::convertExpiry( $wgRequest->getVal( 'expiry' ) ) );
- $r->setTimestamp( wfTimestampNow( TS_MW ) );
- $r->commit();
- $logExpiry = $wgRequest->getVal( 'expiry' ) ? $wgRequest->getVal( 'expiry' ) : Block::infinity();
- $l = new LogPage( 'restrict' );
- $l->addEntry( 'restrict', Title::makeTitle( NS_USER, $user ), $r->getReason(),
- array( $r->getType(), $r->getPage()->getFullText(), $logExpiry) );
- }
-
- public static function namespaceRestrictionForm( $uid, $user, $oldRestrictions ) {
- global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgContLang;
- $error = '';
- $success = false;
- if( $wgRequest->wasPosted() && $wgRequest->getVal( 'type' ) == UserRestriction::NAMESPACE &&
- $wgUser->matchEditToken( $wgRequest->getVal( 'edittoken' ) ) ) {
- $ns = $wgRequest->getVal( 'namespace' );
- if( $wgContLang->getNsText( $ns ) === false )
- $error = wfMsgExt( 'restrictuser-badnamespace', 'parseinline' );
- elseif( UserRestriction::convertExpiry( $wgRequest->getVal( 'expiry' ) ) === false )
- $error = wfMsgExt( 'restrictuser-badexpiry', 'parseinline', $wgRequest->getVal( 'expiry' ) );
- else
- foreach( $oldRestrictions as $r )
- if( $r->isNamespace() && $r->getNamespace() == $ns )
- $error = wfMsgExt( 'restrictuser-dupnamespace', 'parse' );
- if( !$error ) {
- self::doNamespaceRestriction( $uid, $user );
- $success = array('restrictuser-success', $user);
- }
- }
- $useRequestValues = $wgRequest->getVal( 'type' ) == UserRestriction::NAMESPACE;
- $wgOut->addHTML( Xml::fieldset( wfMsg( 'restrictuser-legend-namespace' ) ) );
-
- self::printSuccessError( $success, $error );
-
- $wgOut->addHTML( Xml::openElement( 'form', array( 'action' => $wgTitle->getLocalUrl(),
- 'method' => 'post' ) ) );
- $wgOut->addHTML( Xml::hidden( 'type', UserRestriction::NAMESPACE ) );
- $wgOut->addHTML( Xml::hidden( 'edittoken', $wgUser->editToken() ) );
- $wgOut->addHTML( Xml::hidden( 'user', $user ) );
- $form = array();
- $form['restrictuser-namespace'] = Xml::namespaceSelector( $wgRequest->getVal( 'namespace' ) );
- $form['restrictuser-expiry'] = Xml::input( 'expiry', false,
- $useRequestValues ? $wgRequest->getVal( 'expiry' ) : false );
- $form['restrictuser-reason'] = Xml::input( 'reason', false,
- $useRequestValues ? $wgRequest->getVal( 'reason' ) : false );
- $wgOut->addHTML( Xml::buildForm( $form, 'restrictuser-submit' ) );
- $wgOut->addHTML( "</form></fieldset>" );
- }
-
- public static function doNamespaceRestriction( $uid, $user ) {
- global $wgUser, $wgRequest;
- $r = new UserRestriction();
- $r->setType( UserRestriction::NAMESPACE );
- $r->setNamespace( $wgRequest->getVal( 'namespace' ) );
- $r->setSubjectId( $uid );
- $r->setSubjectText( $user );
- $r->setBlockerId( $wgUser->getId() );
- $r->setBlockerText( $wgUser->getName() );
- $r->setReason( $wgRequest->getVal( 'reason' ) );
- $r->setExpiry( UserRestriction::convertExpiry( $wgRequest->getVal( 'expiry' ) ) );
- $r->setTimestamp( wfTimestampNow( TS_MW ) );
- $r->commit();
- $logExpiry = $wgRequest->getVal( 'expiry' ) ? $wgRequest->getVal( 'expiry' ) : Block::infinity();
- $l = new LogPage( 'restrict' );
- $l->addEntry( 'restrict', Title::makeTitle( NS_USER, $user ), $r->getReason(),
- array( $r->getType(), $r->getNamespace(), $logExpiry ) );
- }
-}
diff --git a/includes/specials/SpecialRevisiondelete.php b/includes/specials/SpecialRevisiondelete.php
index 7fdb3cc4..b2db869c 100644
--- a/includes/specials/SpecialRevisiondelete.php
+++ b/includes/specials/SpecialRevisiondelete.php
@@ -8,164 +8,287 @@
*/
class SpecialRevisionDelete extends UnlistedSpecialPage {
+ /** Skin object */
+ var $skin;
+
+ /** True if the submit button was clicked, and the form was posted */
+ var $submitClicked;
+
+ /** Target ID list */
+ var $ids;
+
+ /** Archive name, for reviewing deleted files */
+ var $archiveName;
+
+ /** Edit token for securing image views against XSS */
+ var $token;
+
+ /** Title object for target parameter */
+ var $targetObj;
+
+ /** Deletion type, may be revision, archive, oldimage, filearchive, logging. */
+ var $typeName;
+
+ /** Array of checkbox specs (message, name, deletion bits) */
+ var $checks;
+
+ /** Information about the current type */
+ var $typeInfo;
+
+ /** The RevDel_List object, storing the list of items to be deleted/undeleted */
+ var $list;
+
+ /**
+ * Assorted information about each type, needed by the special page.
+ * TODO Move some of this to the list class
+ */
+ static $allowedTypes = array(
+ 'revision' => array(
+ 'check-label' => 'revdelete-hide-text',
+ 'deletion-bits' => Revision::DELETED_TEXT,
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_RevisionList',
+ ),
+ 'archive' => array(
+ 'check-label' => 'revdelete-hide-text',
+ 'deletion-bits' => Revision::DELETED_TEXT,
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_ArchiveList',
+ ),
+ 'oldimage'=> array(
+ 'check-label' => 'revdelete-hide-image',
+ 'deletion-bits' => File::DELETED_FILE,
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_FileList',
+ ),
+ 'filearchive' => array(
+ 'check-label' => 'revdelete-hide-image',
+ 'deletion-bits' => File::DELETED_FILE,
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_ArchivedFileList',
+ ),
+ 'logging' => array(
+ 'check-label' => 'revdelete-hide-name',
+ 'deletion-bits' => LogPage::DELETED_ACTION,
+ 'success' => 'logdelete-success',
+ 'failure' => 'logdelete-failure',
+ 'list-class' => 'RevDel_LogList',
+ ),
+ );
+
+ /** Type map to support old log entries */
+ static $deprecatedTypeMap = array(
+ 'oldid' => 'revision',
+ 'artimestamp' => 'archive',
+ 'oldimage' => 'oldimage',
+ 'fileid' => 'filearchive',
+ 'logid' => 'logging',
+ );
public function __construct() {
- parent::__construct( 'Revisiondelete', 'deleterevision' );
- $this->includable( false );
+ parent::__construct( 'Revisiondelete', 'deletedhistory' );
}
public function execute( $par ) {
global $wgOut, $wgUser, $wgRequest;
- if( wfReadOnly() ) {
- $wgOut->readOnlyPage();
+ if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
+ $wgOut->permissionRequired( 'deletedhistory' );
return;
- }
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
- $wgOut->permissionRequired( 'deleterevision' );
+ } else if( wfReadOnly() ) {
+ $wgOut->readOnlyPage();
return;
}
- $this->skin =& $wgUser->getSkin();
- # Set title and such
+ $this->mIsAllowed = $wgUser->isAllowed('deleterevision'); // for changes
+ $this->skin = $wgUser->getSkin();
$this->setHeaders();
$this->outputHeader();
- $this->wasPosted = $wgRequest->wasPosted();
- # Handle our many different possible input types
- $this->target = $wgRequest->getText( 'target' );
- $this->oldids = $wgRequest->getArray( 'oldid' );
- $this->artimestamps = $wgRequest->getArray( 'artimestamp' );
- $this->logids = $wgRequest->getArray( 'logid' );
- $this->oldimgs = $wgRequest->getArray( 'oldimage' );
- $this->fileids = $wgRequest->getArray( 'fileid' );
+ $this->submitClicked = $wgRequest->wasPosted() && $wgRequest->getBool( 'wpSubmit' );
+ # Handle our many different possible input types.
+ $ids = $wgRequest->getVal( 'ids' );
+ if ( !is_null( $ids ) ) {
+ # Allow CSV, for backwards compatibility, or a single ID for show/hide links
+ $this->ids = explode( ',', $ids );
+ } else {
+ # Array input
+ $this->ids = array_keys( $wgRequest->getArray('ids',array()) );
+ }
+ // $this->ids = array_map( 'intval', $this->ids );
+ $this->ids = array_unique( array_filter( $this->ids ) );
+
+ if ( $wgRequest->getVal( 'action' ) == 'historysubmit' ) {
+ # For show/hide form submission from history page
+ $this->targetObj = $GLOBALS['wgTitle'];
+ $this->typeName = 'revision';
+ } else {
+ $this->typeName = $wgRequest->getVal( 'type' );
+ $this->targetObj = Title::newFromText( $wgRequest->getText( 'target' ) );
+ }
+
# For reviewing deleted files...
- $this->file = $wgRequest->getVal( 'file' );
- # Only one target set at a time please!
- $i = (bool)$this->file + (bool)$this->oldids + (bool)$this->logids
- + (bool)$this->artimestamps + (bool)$this->fileids + (bool)$this->oldimgs;
- # No targets?
- if( $i == 0 ) {
- $wgOut->showErrorPage( 'notargettitle', 'notargettext' );
+ $this->archiveName = $wgRequest->getVal( 'file' );
+ $this->token = $wgRequest->getVal( 'token' );
+ if ( $this->archiveName && $this->targetObj ) {
+ $this->tryShowFile( $this->archiveName );
return;
}
- # Too many targets?
- if( $i !== 1 ) {
- $wgOut->showErrorPage( 'revdelete-toomanytargets-title', 'revdelete-toomanytargets-text' );
+
+ if ( isset( self::$deprecatedTypeMap[$this->typeName] ) ) {
+ $this->typeName = self::$deprecatedTypeMap[$this->typeName];
+ }
+
+ # No targets?
+ if( !isset( self::$allowedTypes[$this->typeName] ) || count( $this->ids ) == 0 ) {
+ $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
return;
}
- $this->page = Title::newFromUrl( $this->target );
+ $this->typeInfo = self::$allowedTypes[$this->typeName];
+
# If we have revisions, get the title from the first one
# since they should all be from the same page. This allows
# for more flexibility with page moves...
- if( count($this->oldids) > 0 ) {
- $rev = Revision::newFromId( $this->oldids[0] );
- $this->page = $rev ? $rev->getTitle() : $this->page;
+ if( $this->typeName == 'revision' ) {
+ $rev = Revision::newFromId( $this->ids[0] );
+ $this->targetObj = $rev ? $rev->getTitle() : $this->targetObj;
}
+
+ $this->otherReason = $wgRequest->getVal( 'wpReason' );
# We need a target page!
- if( is_null($this->page) ) {
+ if( is_null($this->targetObj) ) {
$wgOut->addWikiMsg( 'undelete-header' );
return;
}
- # Logs must have a type given
- if( $this->logids && !strpos($this->page->getDBKey(),'/') ) {
- $wgOut->showErrorPage( 'revdelete-nologtype-title', 'revdelete-nologtype-text' );
- return;
- }
- # For reviewing deleted files...show it now if allowed
- if( $this->file ) {
- $oimage = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $this->page, $this->file );
- $oimage->load();
- // Check if user is allowed to see this file
- if( !$oimage->userCan(File::DELETED_FILE) ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- } else {
- $this->showFile( $this->file );
- }
- return;
- }
# Give a link to the logs/hist for this page
- if( !is_null($this->page) && $this->page->getNamespace() > -1 ) {
- $links = array();
+ $this->showConvenienceLinks();
- $logtitle = SpecialPage::getTitleFor( 'Log' );
- $links[] = $this->skin->makeKnownLinkObj( $logtitle, wfMsgHtml( 'viewpagelogs' ),
- wfArrayToCGI( array( 'page' => $this->page->getPrefixedUrl() ) ) );
- # Give a link to the page history
- $links[] = $this->skin->makeKnownLinkObj( $this->page, wfMsgHtml( 'pagehist' ),
- wfArrayToCGI( array( 'action' => 'history' ) ) );
- # Link to deleted edits
- if( $wgUser->isAllowed('undelete') ) {
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
- $links[] = $this->skin->makeKnownLinkObj( $undelete, wfMsgHtml( 'deletedhist' ),
- wfArrayToCGI( array( 'target' => $this->page->getPrefixedDBkey() ) ) );
- }
- # Logs themselves don't have histories or archived revisions
- $wgOut->setSubtitle( '<p>'.implode($links,' / ').'</p>' );
- }
- # Lock the operation and the form context
- $this->secureOperation();
- # Either submit or create our form
- if( $this->wasPosted ) {
- $this->submit( $wgRequest );
- } else if( $this->deleteKey == 'oldid' || $this->deleteKey == 'artimestamp' ) {
- $this->showRevs();
- } else if( $this->deleteKey == 'fileid' || $this->deleteKey == 'oldimage' ) {
- $this->showImages();
- } else if( $this->deleteKey == 'logid' ) {
- $this->showLogItems();
- }
- # Show relevant lines from the deletion log. This will show even if said ID
- # does not exist...might be helpful
- $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
- LogEventsList::showLogExtract( $wgOut, 'delete', $this->page->getPrefixedText() );
- if( $wgUser->isAllowed( 'suppressionlog' ) ){
- $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'suppress' ) ) . "</h2>\n" );
- LogEventsList::showLogExtract( $wgOut, 'suppress', $this->page->getPrefixedText() );
- }
- }
-
- private function secureOperation() {
- global $wgUser;
- $this->deleteKey = '';
- // At this point, we should only have one of these
- if( $this->oldids ) {
- $this->revisions = $this->oldids;
- $hide_content_name = array( 'revdelete-hide-text', 'wpHideText', Revision::DELETED_TEXT );
- $this->deleteKey = 'oldid';
- } else if( $this->artimestamps ) {
- $this->archrevs = $this->artimestamps;
- $hide_content_name = array( 'revdelete-hide-text', 'wpHideText', Revision::DELETED_TEXT );
- $this->deleteKey = 'artimestamp';
- } else if( $this->oldimgs ) {
- $this->ofiles = $this->oldimgs;
- $hide_content_name = array( 'revdelete-hide-image', 'wpHideImage', File::DELETED_FILE );
- $this->deleteKey = 'oldimage';
- } else if( $this->fileids ) {
- $this->afiles = $this->fileids;
- $hide_content_name = array( 'revdelete-hide-image', 'wpHideImage', File::DELETED_FILE );
- $this->deleteKey = 'fileid';
- } else if( $this->logids ) {
- $this->events = $this->logids;
- $hide_content_name = array( 'revdelete-hide-name', 'wpHideName', LogPage::DELETED_ACTION );
- $this->deleteKey = 'logid';
- }
- // Our checkbox messages depends one what we are doing,
- // e.g. we don't hide "text" for logs or images
+ # Initialise checkboxes
$this->checks = array(
- $hide_content_name,
+ array( $this->typeInfo['check-label'], 'wpHidePrimary', $this->typeInfo['deletion-bits'] ),
array( 'revdelete-hide-comment', 'wpHideComment', Revision::DELETED_COMMENT ),
array( 'revdelete-hide-user', 'wpHideUser', Revision::DELETED_USER )
);
if( $wgUser->isAllowed('suppressrevision') ) {
- $this->checks[] = array( 'revdelete-hide-restricted', 'wpHideRestricted', Revision::DELETED_RESTRICTED );
+ $this->checks[] = array( 'revdelete-hide-restricted',
+ 'wpHideRestricted', Revision::DELETED_RESTRICTED );
+ }
+
+ # Either submit or create our form
+ if( $this->mIsAllowed && $this->submitClicked ) {
+ $this->submit( $wgRequest );
+ } else {
+ $this->showForm();
+ }
+
+ $qc = $this->getLogQueryCond();
+ # Show relevant lines from the deletion log
+ $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
+ LogEventsList::showLogExtract( $wgOut, 'delete',
+ $this->targetObj->getPrefixedText(), '', array( 'lim' => 25, 'conds' => $qc ) );
+ # Show relevant lines from the suppression log
+ if( $wgUser->isAllowed( 'suppressionlog' ) ) {
+ $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'suppress' ) ) . "</h2>\n" );
+ LogEventsList::showLogExtract( $wgOut, 'suppress',
+ $this->targetObj->getPrefixedText(), '', array( 'lim' => 25, 'conds' => $qc ) );
}
}
/**
+ * Show some useful links in the subtitle
+ */
+ protected function showConvenienceLinks() {
+ global $wgOut, $wgUser, $wgLang;
+ # Give a link to the logs/hist for this page
+ if( $this->targetObj ) {
+ $links = array();
+ $links[] = $this->skin->linkKnown(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'viewpagelogs' ),
+ array(),
+ array( 'page' => $this->targetObj->getPrefixedText() )
+ );
+ if ( $this->targetObj->getNamespace() != NS_SPECIAL ) {
+ # Give a link to the page history
+ $links[] = $this->skin->linkKnown(
+ $this->targetObj,
+ wfMsgHtml( 'pagehist' ),
+ array(),
+ array( 'action' => 'history' )
+ );
+ # Link to deleted edits
+ if( $wgUser->isAllowed('undelete') ) {
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ $links[] = $this->skin->linkKnown(
+ $undelete,
+ wfMsgHtml( 'deletedhist' ),
+ array(),
+ array( 'target' => $this->targetObj->getPrefixedDBkey() )
+ );
+ }
+ }
+ # Logs themselves don't have histories or archived revisions
+ $wgOut->setSubtitle( '<p>' . $wgLang->pipeList( $links ) . '</p>' );
+ }
+ }
+
+ /**
+ * Get the condition used for fetching log snippets
+ */
+ protected function getLogQueryCond() {
+ $conds = array();
+ // Revision delete logs for these item
+ $conds['log_type'] = array('delete','suppress');
+ $conds['log_action'] = $this->getList()->getLogAction();
+ $conds['ls_field'] = RevisionDeleter::getRelationType( $this->typeName );
+ $conds['ls_value'] = $this->ids;
+ return $conds;
+ }
+
+ /**
* Show a deleted file version requested by the visitor.
+ * TODO Mostly copied from Special:Undelete. Refactor.
*/
- private function showFile( $key ) {
- global $wgOut, $wgRequest;
+ protected function tryShowFile( $archiveName ) {
+ global $wgOut, $wgRequest, $wgUser, $wgLang;
+
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $oimage = $repo->newFromArchiveName( $this->targetObj, $archiveName );
+ $oimage->load();
+ // Check if user is allowed to see this file
+ if ( !$oimage->exists() ) {
+ $wgOut->addWikiMsg( 'revdelete-no-file' );
+ return;
+ }
+ if( !$oimage->userCan(File::DELETED_FILE) ) {
+ if( $oimage->isDeleted( File::DELETED_RESTRICTED ) ) {
+ $wgOut->permissionRequired( 'suppressrevision' );
+ } else {
+ $wgOut->permissionRequired( 'deletedtext' );
+ }
+ return;
+ }
+ if ( !$wgUser->matchEditToken( $this->token, $archiveName ) ) {
+ $wgOut->addWikiMsg( 'revdelete-show-file-confirm',
+ $this->targetObj->getText(),
+ $wgLang->date( $oimage->getTimestamp() ),
+ $wgLang->time( $oimage->getTimestamp() ) );
+ $wgOut->addHTML(
+ Xml::openElement( 'form', array(
+ 'method' => 'POST',
+ 'action' => $this->getTitle()->getLocalUrl(
+ 'target=' . urlencode( $oimage->getName() ) .
+ '&file=' . urlencode( $archiveName ) .
+ '&token=' . urlencode( $wgUser->editToken( $archiveName ) ) )
+ )
+ ) .
+ Xml::submitButton( wfMsg( 'revdelete-show-file-submit' ) ) .
+ '</form>'
+ );
+ return;
+ }
$wgOut->disable();
-
# We mustn't allow the output to be Squid cached, otherwise
# if an admin previews a deleted image, and it's cached, then
# a user without appropriate permissions can toddle off and
@@ -174,103 +297,61 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$wgRequest->response()->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
$wgRequest->response()->header( 'Pragma: no-cache' );
- $store = FileStore::get( 'deleted' );
- $store->stream( $key );
+ # Stream the file to the client
+ global $IP;
+ require_once( "$IP/includes/StreamFile.php" );
+ $key = $oimage->getStorageKey();
+ $path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
+ wfStreamFile( $path );
}
/**
- * This lets a user set restrictions for live and archived revisions
+ * Get the list object for this request
*/
- private function showRevs() {
- global $wgOut, $wgUser;
+ protected function getList() {
+ if ( is_null( $this->list ) ) {
+ $class = $this->typeInfo['list-class'];
+ $this->list = new $class( $this, $this->targetObj, $this->ids );
+ }
+ return $this->list;
+ }
+
+ /**
+ * Show a list of items that we will operate on, and show a form with checkboxes
+ * which will allow the user to choose new visibility settings.
+ */
+ protected function showForm() {
+ global $wgOut, $wgUser, $wgLang;
$UserAllowed = true;
- $count = ($this->deleteKey=='oldid') ?
- count($this->revisions) : count($this->archrevs);
- $wgOut->addWikiMsg( 'revdelete-selected', $this->page->getPrefixedText(), $count );
+ if ( $this->typeName == 'logging' ) {
+ $wgOut->addWikiMsg( 'logdelete-selected', $wgLang->formatNum( count($this->ids) ) );
+ } else {
+ $wgOut->addWikiMsg( 'revdelete-selected',
+ $this->targetObj->getPrefixedText(), count( $this->ids ) );
+ }
- $bitfields = 0;
$wgOut->addHTML( "<ul>" );
$where = $revObjs = array();
- $dbr = wfGetDB( DB_MASTER );
- $revisions = 0;
+ $numRevisions = 0;
// Live revisions...
- if( $this->deleteKey=='oldid' ) {
- // Run through and pull all our data in one query
- foreach( $this->revisions as $revid ) {
- $where[] = intval($revid);
- }
- $result = $dbr->select( array('revision','page'), '*',
- array(
- 'rev_page' => $this->page->getArticleID(),
- 'rev_id' => $where,
- 'rev_page = page_id' ),
- __METHOD__ );
- while( $row = $dbr->fetchObject( $result ) ) {
- $revObjs[$row->rev_id] = new Revision( $row );
- }
- foreach( $this->revisions as $revid ) {
- // Hiding top revisison is bad
- if( !isset($revObjs[$revid]) || $revObjs[$revid]->isCurrent() ) {
- continue;
- } else if( !$revObjs[$revid]->userCan(Revision::DELETED_RESTRICTED) ) {
- // If a rev is hidden from sysops
- if( !$this->wasPosted ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return;
- }
- $UserAllowed = false;
- }
- $revisions++;
- $wgOut->addHTML( $this->historyLine( $revObjs[$revid] ) );
- $bitfields |= $revObjs[$revid]->mDeleted;
- }
- // The archives...
- } else {
- // Run through and pull all our data in one query
- foreach( $this->archrevs as $timestamp ) {
- $where[] = $dbr->timestamp( $timestamp );
- }
- $result = $dbr->select( 'archive', '*',
- array(
- 'ar_namespace' => $this->page->getNamespace(),
- 'ar_title' => $this->page->getDBKey(),
- 'ar_timestamp' => $where ),
- __METHOD__ );
- while( $row = $dbr->fetchObject( $result ) ) {
- $timestamp = wfTimestamp( TS_MW, $row->ar_timestamp );
- $revObjs[$timestamp] = new Revision( array(
- 'page' => $this->page->getArticleId(),
- 'id' => $row->ar_rev_id,
- 'text' => $row->ar_text_id,
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'text_id' => $row->ar_text_id,
- 'deleted' => $row->ar_deleted,
- 'len' => $row->ar_len) );
- }
- foreach( $this->archrevs as $timestamp ) {
- if( !isset($revObjs[$timestamp]) ) {
- continue;
- } else if( !$revObjs[$timestamp]->userCan(Revision::DELETED_RESTRICTED) ) {
- // If a rev is hidden from sysops
- if( !$this->wasPosted ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return;
- }
- $UserAllowed = false;
+ $list = $this->getList();
+ for ( $list->reset(); $list->current(); $list->next() ) {
+ $item = $list->current();
+ if ( !$item->canView() ) {
+ if( !$this->submitClicked ) {
+ $wgOut->permissionRequired( 'suppressrevision' );
+ return;
}
- $revisions++;
- $wgOut->addHTML( $this->historyLine( $revObjs[$timestamp] ) );
- $bitfields |= $revObjs[$timestamp]->mDeleted;
+ $UserAllowed = false;
}
+ $numRevisions++;
+ $wgOut->addHTML( $item->getHTML() );
}
- if( !$revisions ) {
+
+ if( !$numRevisions ) {
$wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
return;
}
@@ -282,1235 +363,1485 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
// Normal sysops can always see what they did, but can't always change it
if( !$UserAllowed ) return;
- $items = array(
- Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
- Xml::submitButton( wfMsg( 'revdelete-submit' ) )
- );
- $hidden = array(
- Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
- Xml::hidden( 'target', $this->page->getPrefixedText() ),
- Xml::hidden( 'type', $this->deleteKey )
- );
- if( $this->deleteKey=='oldid' ) {
- foreach( $revObjs as $rev )
- $hidden[] = Xml::hidden( 'oldid[]', $rev->getId() );
+ // Show form if the user can submit
+ if( $this->mIsAllowed ) {
+ $out = Xml::openElement( 'form', array( 'method' => 'post',
+ 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
+ 'id' => 'mw-revdel-form-revisions' ) ) .
+ Xml::fieldset( wfMsg( 'revdelete-legend' ) ) .
+ $this->buildCheckBoxes() .
+ Xml::openElement( 'table' ) .
+ "<tr>\n" .
+ '<td class="mw-label">' .
+ Xml::label( wfMsg( 'revdelete-log' ), 'wpRevDeleteReasonList' ) .
+ '</td>' .
+ '<td class="mw-input">' .
+ Xml::listDropDown( 'wpRevDeleteReasonList',
+ wfMsgForContent( 'revdelete-reason-dropdown' ),
+ wfMsgForContent( 'revdelete-reasonotherlist' ), '', 'wpReasonDropDown', 1
+ ) .
+ '</td>' .
+ "</tr><tr>\n" .
+ '<td class="mw-label">' .
+ Xml::label( wfMsg( 'revdelete-otherreason' ), 'wpReason' ) .
+ '</td>' .
+ '<td class="mw-input">' .
+ Xml::input( 'wpReason', 60, $this->otherReason, array( 'id' => 'wpReason' ) ) .
+ '</td>' .
+ "</tr><tr>\n" .
+ '<td></td>' .
+ '<td class="mw-submit">' .
+ Xml::submitButton( wfMsgExt('revdelete-submit','parsemag',$numRevisions),
+ array( 'name' => 'wpSubmit' ) ) .
+ '</td>' .
+ "</tr>\n" .
+ Xml::closeElement( 'table' ) .
+ Xml::hidden( 'wpEditToken', $wgUser->editToken() ) .
+ Xml::hidden( 'target', $this->targetObj->getPrefixedText() ) .
+ Xml::hidden( 'type', $this->typeName ) .
+ Xml::hidden( 'ids', implode( ',', $this->ids ) ) .
+ Xml::closeElement( 'fieldset' ) . "\n";
} else {
- foreach( $revObjs as $rev )
- $hidden[] = Xml::hidden( 'artimestamp[]', $rev->getTimestamp() );
- }
- $special = SpecialPage::getTitleFor( 'Revisiondelete' );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ),
- 'id' => 'mw-revdel-form-revisions' ) ) .
- Xml::openElement( 'fieldset' ) .
- xml::element( 'legend', null, wfMsg( 'revdelete-legend' ) )
- );
-
- $wgOut->addHTML( $this->buildCheckBoxes( $bitfields ) );
- foreach( $items as $item ) {
- $wgOut->addHTML( Xml::tags( 'p', null, $item ) );
- }
- foreach( $hidden as $item ) {
- $wgOut->addHTML( $item );
+ $out = '';
+ }
+ if( $this->mIsAllowed ) {
+ $out .= Xml::closeElement( 'form' ) . "\n";
+ // Show link to edit the dropdown reasons
+ if( $wgUser->isAllowed( 'editinterface' ) ) {
+ $title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
+ $link = $wgUser->getSkin()->link(
+ $title,
+ wfMsgHtml( 'revdelete-edit-reasonlist' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
+ $out .= Xml::tags( 'p', array( 'class' => 'mw-revdel-editreasons' ), $link ) . "\n";
+ }
}
- $wgOut->addHTML(
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' ) . "\n"
- );
+ $wgOut->addHTML( $out );
}
/**
- * This lets a user set restrictions for archived images
+ * Show some introductory text
+ * FIXME Wikimedia-specific policy text
*/
- private function showImages() {
- global $wgOut, $wgUser, $wgLang;
- $UserAllowed = true;
-
- $count = ($this->deleteKey=='oldimage') ? count($this->ofiles) : count($this->afiles);
- $wgOut->addWikiMsg( 'revdelete-selected', $this->page->getPrefixedText(),
- $wgLang->formatNum($count) );
-
- $bitfields = 0;
- $wgOut->addHTML( "<ul>" );
-
- $where = $filesObjs = array();
- $dbr = wfGetDB( DB_MASTER );
- // Live old revisions...
- $revisions = 0;
- if( $this->deleteKey=='oldimage' ) {
- // Run through and pull all our data in one query
- foreach( $this->ofiles as $timestamp ) {
- $where[] = $timestamp.'!'.$this->page->getDBKey();
- }
- $result = $dbr->select( 'oldimage', '*',
- array(
- 'oi_name' => $this->page->getDBKey(),
- 'oi_archive_name' => $where ),
- __METHOD__ );
- while( $row = $dbr->fetchObject( $result ) ) {
- $filesObjs[$row->oi_archive_name] = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
- $filesObjs[$row->oi_archive_name]->user = $row->oi_user;
- $filesObjs[$row->oi_archive_name]->user_text = $row->oi_user_text;
+ protected function addUsageText() {
+ global $wgOut, $wgUser;
+ $wgOut->addWikiMsg( 'revdelete-text' );
+ if( $wgUser->isAllowed( 'suppressrevision' ) ) {
+ $wgOut->addWikiMsg( 'revdelete-suppress-text' );
+ }
+ if( $this->mIsAllowed ) {
+ $wgOut->addWikiMsg( 'revdelete-confirm' );
+ }
+ }
+
+ /**
+ * @return String: HTML
+ */
+ protected function buildCheckBoxes() {
+ global $wgRequest;
+
+ $html = '<table>';
+ // If there is just one item, use checkboxes
+ $list = $this->getList();
+ if( $list->length() == 1 ) {
+ $list->reset();
+ $bitfield = $list->current()->getBits(); // existing field
+ if( $this->submitClicked ) {
+ $bitfield = $this->extractBitfield( $this->extractBitParams($wgRequest), $bitfield );
}
- // Check through our images
- foreach( $this->ofiles as $timestamp ) {
- $archivename = $timestamp.'!'.$this->page->getDBKey();
- if( !isset($filesObjs[$archivename]) ) {
- continue;
- } else if( !$filesObjs[$archivename]->userCan(File::DELETED_RESTRICTED) ) {
- // If a rev is hidden from sysops
- if( !$this->wasPosted ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return;
- }
- $UserAllowed = false;
- }
- $revisions++;
- // Inject history info
- $wgOut->addHTML( $this->fileLine( $filesObjs[$archivename] ) );
- $bitfields |= $filesObjs[$archivename]->deleted;
+ foreach( $this->checks as $item ) {
+ list( $message, $name, $field ) = $item;
+ $innerHTML = Xml::checkLabel( wfMsg($message), $name, $name, $bitfield & $field );
+ if( $field == Revision::DELETED_RESTRICTED )
+ $innerHTML = "<b>$innerHTML</b>";
+ $line = Xml::tags( 'td', array( 'class' => 'mw-input' ), $innerHTML );
+ $html .= "<tr>$line</tr>\n";
}
- // Archived files...
+ // Otherwise, use tri-state radios
} else {
- // Run through and pull all our data in one query
- foreach( $this->afiles as $id ) {
- $where[] = intval($id);
- }
- $result = $dbr->select( 'filearchive', '*',
- array(
- 'fa_name' => $this->page->getDBKey(),
- 'fa_id' => $where ),
- __METHOD__ );
- while( $row = $dbr->fetchObject( $result ) ) {
- $filesObjs[$row->fa_id] = ArchivedFile::newFromRow( $row );
- }
-
- foreach( $this->afiles as $fileid ) {
- if( !isset($filesObjs[$fileid]) ) {
- continue;
- } else if( !$filesObjs[$fileid]->userCan(File::DELETED_RESTRICTED) ) {
- // If a rev is hidden from sysops
- if( !$this->wasPosted ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return;
- }
- $UserAllowed = false;
+ $html .= '<tr>';
+ $html .= '<th class="mw-revdel-checkbox">'.wfMsgHtml('revdelete-radio-same').'</th>';
+ $html .= '<th class="mw-revdel-checkbox">'.wfMsgHtml('revdelete-radio-unset').'</th>';
+ $html .= '<th class="mw-revdel-checkbox">'.wfMsgHtml('revdelete-radio-set').'</th>';
+ $html .= "<th></th></tr>\n";
+ foreach( $this->checks as $item ) {
+ list( $message, $name, $field ) = $item;
+ // If there are several items, use third state by default...
+ if( $this->submitClicked ) {
+ $selected = $wgRequest->getInt( $name, 0 /* unchecked */ );
+ } else {
+ $selected = -1; // use existing field
+ }
+ $line = '<td class="mw-revdel-checkbox">' . Xml::radio( $name, -1, $selected == -1 ) . '</td>';
+ $line .= '<td class="mw-revdel-checkbox">' . Xml::radio( $name, 0, $selected == 0 ) . '</td>';
+ $line .= '<td class="mw-revdel-checkbox">' . Xml::radio( $name, 1, $selected == 1 ) . '</td>';
+ $label = wfMsgHtml($message);
+ if( $field == Revision::DELETED_RESTRICTED ) {
+ $label = "<b>$label</b>";
}
- $revisions++;
- // Inject history info
- $wgOut->addHTML( $this->archivedfileLine( $filesObjs[$fileid] ) );
- $bitfields |= $filesObjs[$fileid]->deleted;
+ $line .= "<td>$label</td>";
+ $html .= "<tr>$line</tr>\n";
}
}
- if( !$revisions ) {
- $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
- return;
- }
- $wgOut->addHTML( "</ul>" );
- // Explanation text
- $this->addUsageText();
- // Normal sysops can always see what they did, but can't always change it
- if( !$UserAllowed ) return;
-
- $items = array(
- Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
- Xml::submitButton( wfMsg( 'revdelete-submit' ) )
- );
- $hidden = array(
- Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
- Xml::hidden( 'target', $this->page->getPrefixedText() ),
- Xml::hidden( 'type', $this->deleteKey )
- );
- if( $this->deleteKey=='oldimage' ) {
- foreach( $this->ofiles as $filename )
- $hidden[] = Xml::hidden( 'oldimage[]', $filename );
- } else {
- foreach( $this->afiles as $fileid )
- $hidden[] = Xml::hidden( 'fileid[]', $fileid );
- }
- $special = SpecialPage::getTitleFor( 'Revisiondelete' );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ),
- 'id' => 'mw-revdel-form-filerevisions' ) ) .
- Xml::fieldset( wfMsg( 'revdelete-legend' ) )
- );
+ $html .= '</table>';
+ return $html;
+ }
- $wgOut->addHTML( $this->buildCheckBoxes( $bitfields ) );
- foreach( $items as $item ) {
- $wgOut->addHTML( "<p>$item</p>" );
+ /**
+ * UI entry point for form submission.
+ * @param $request WebRequest
+ */
+ protected function submit( $request ) {
+ global $wgUser, $wgOut;
+ # Check edit token on submission
+ if( $this->submitClicked && !$wgUser->matchEditToken( $request->getVal('wpEditToken') ) ) {
+ $wgOut->addWikiMsg( 'sessionfailure' );
+ return false;
}
- foreach( $hidden as $item ) {
- $wgOut->addHTML( $item );
+ $bitParams = $this->extractBitParams( $request );
+ $listReason = $request->getText( 'wpRevDeleteReasonList', 'other' ); // from dropdown
+ $comment = $listReason;
+ if( $comment != 'other' && $this->otherReason != '' ) {
+ // Entry from drop down menu + additional comment
+ $comment .= wfMsgForContent( 'colon-separator' ) . $this->otherReason;
+ } elseif( $comment == 'other' ) {
+ $comment = $this->otherReason;
}
-
- $wgOut->addHTML(
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' ) . "\n"
- );
+ # Can the user set this field?
+ if( $bitParams[Revision::DELETED_RESTRICTED]==1 && !$wgUser->isAllowed('suppressrevision') ) {
+ $wgOut->permissionRequired( 'suppressrevision' );
+ return false;
+ }
+ # If the save went through, go to success message...
+ $status = $this->save( $bitParams, $comment, $this->targetObj );
+ if ( $status->isGood() ) {
+ $this->success();
+ return true;
+ # ...otherwise, bounce back to form...
+ } else {
+ $this->failure( $status );
+ }
+ return false;
}
/**
- * This lets a user set restrictions for log items
+ * Report that the submit operation succeeded
*/
- private function showLogItems() {
- global $wgOut, $wgUser, $wgMessageCache, $wgLang;
- $UserAllowed = true;
-
- $wgOut->addWikiMsg( 'logdelete-selected', $wgLang->formatNum( count($this->events) ) );
+ protected function success() {
+ global $wgOut;
+ $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
+ $wgOut->wrapWikiMsg( '<span class="success">$1</span>', $this->typeInfo['success'] );
+ $this->list->reloadFromMaster();
+ $this->showForm();
+ }
- $bitfields = 0;
- $wgOut->addHTML( "<ul>" );
+ /**
+ * Report that the submit operation failed
+ */
+ protected function failure( $status ) {
+ global $wgOut;
+ $wgOut->setPagetitle( wfMsg( 'actionfailed' ) );
+ $wgOut->addWikiText( $status->getWikiText( $this->typeInfo['failure'] ) );
+ $this->showForm();
+ }
- $where = $logRows = array();
- $dbr = wfGetDB( DB_MASTER );
- // Run through and pull all our data in one query
- $logItems = 0;
- foreach( $this->events as $logid ) {
- $where[] = intval($logid);
+ /**
+ * Put together an array that contains -1, 0, or the *_deleted const for each bit
+ * @param $request WebRequest
+ * @return array
+ */
+ protected function extractBitParams( $request ) {
+ $bitfield = array();
+ foreach( $this->checks as $item ) {
+ list( /* message */ , $name, $field ) = $item;
+ $val = $request->getInt( $name, 0 /* unchecked */ );
+ if( $val < -1 || $val > 1) {
+ $val = -1; // -1 for existing value
+ }
+ $bitfield[$field] = $val;
}
- list($log,$logtype) = explode( '/',$this->page->getDBKey(), 2 );
- $result = $dbr->select( 'logging', '*',
- array(
- 'log_type' => $logtype,
- 'log_id' => $where ),
- __METHOD__ );
- while( $row = $dbr->fetchObject( $result ) ) {
- $logRows[$row->log_id] = $row;
+ if( !isset($bitfield[Revision::DELETED_RESTRICTED]) ) {
+ $bitfield[Revision::DELETED_RESTRICTED] = 0;
}
- $wgMessageCache->loadAllMessages();
- foreach( $this->events as $logid ) {
- // Don't hide from oversight log!!!
- if( !isset( $logRows[$logid] ) || $logRows[$logid]->log_type=='suppress' ) {
- continue;
- } else if( !LogEventsList::userCan( $logRows[$logid],Revision::DELETED_RESTRICTED) ) {
- // If an event is hidden from sysops
- if( !$this->wasPosted ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return;
- }
- $UserAllowed = false;
+ return $bitfield;
+ }
+
+ /**
+ * Put together a rev_deleted bitfield
+ * @param $bitPars array extractBitParams() params
+ * @param $oldfield int current bitfield
+ * @return array
+ */
+ public static function extractBitfield( $bitPars, $oldfield ) {
+ // Build the actual new rev_deleted bitfield
+ $newBits = 0;
+ foreach( $bitPars as $const => $val ) {
+ if( $val == 1 ) {
+ $newBits |= $const; // $const is the *_deleted const
+ } else if( $val == -1 ) {
+ $newBits |= ($oldfield & $const); // use existing
}
- $logItems++;
- $wgOut->addHTML( $this->logLine( $logRows[$logid] ) );
- $bitfields |= $logRows[$logid]->log_deleted;
- }
- if( !$logItems ) {
- $wgOut->showErrorPage( 'revdelete-nologid-title', 'revdelete-nologid-text' );
- return;
}
-
- $wgOut->addHTML( "</ul>" );
- // Explanation text
- $this->addUsageText();
- // Normal sysops can always see what they did, but can't always change it
- if( !$UserAllowed ) return;
+ return $newBits;
+ }
- $items = array(
- Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
- Xml::submitButton( wfMsg( 'revdelete-submit' ) ) );
- $hidden = array(
- Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
- Xml::hidden( 'target', $this->page->getPrefixedText() ),
- Xml::hidden( 'type', $this->deleteKey ) );
- foreach( $this->events as $logid ) {
- $hidden[] = Xml::hidden( 'logid[]', $logid );
- }
-
- $special = SpecialPage::getTitleFor( 'Revisiondelete' );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ),
- 'id' => 'mw-revdel-form-logs' ) ) .
- Xml::fieldset( wfMsg( 'revdelete-legend' ) )
+ /**
+ * Do the write operations. Simple wrapper for RevDel_*List::setVisibility().
+ */
+ protected function save( $bitfield, $reason, $title ) {
+ return $this->getList()->setVisibility(
+ array( 'value' => $bitfield, 'comment' => $reason )
);
-
- $wgOut->addHTML( $this->buildCheckBoxes( $bitfields ) );
- foreach( $items as $item ) {
- $wgOut->addHTML( "<p>$item</p>" );
+ }
+}
+
+/**
+ * Temporary b/c interface, collection of static functions.
+ * @ingroup SpecialPage
+ */
+class RevisionDeleter {
+ /**
+ * Checks for a change in the bitfield for a certain option and updates the
+ * provided array accordingly.
+ *
+ * @param $desc String: description to add to the array if the option was
+ * enabled / disabled.
+ * @param $field Integer: the bitmask describing the single option.
+ * @param $diff Integer: the xor of the old and new bitfields.
+ * @param $new Integer: the new bitfield
+ * @param $arr Array: the array to update.
+ */
+ protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
+ if( $diff & $field ) {
+ $arr[ ( $new & $field ) ? 0 : 1 ][] = $desc;
+ }
+ }
+
+ /**
+ * Gets an array describing the changes made to the visibilit of the revision.
+ * If the resulting array is $arr, then $arr[0] will contain an array of strings
+ * describing the items that were hidden, $arr[2] will contain an array of strings
+ * describing the items that were unhidden, and $arr[3] will contain an array with
+ * a single string, which can be one of "applied restrictions to sysops",
+ * "removed restrictions from sysops", or null.
+ *
+ * @param $n Integer: the new bitfield.
+ * @param $o Integer: the old bitfield.
+ * @return An array as described above.
+ */
+ protected static function getChanges( $n, $o ) {
+ $diff = $n ^ $o;
+ $ret = array( 0 => array(), 1 => array(), 2 => array() );
+ // Build bitfield changes in language
+ self::checkItem( wfMsgForContent( 'revdelete-content' ),
+ Revision::DELETED_TEXT, $diff, $n, $ret );
+ self::checkItem( wfMsgForContent( 'revdelete-summary' ),
+ Revision::DELETED_COMMENT, $diff, $n, $ret );
+ self::checkItem( wfMsgForContent( 'revdelete-uname' ),
+ Revision::DELETED_USER, $diff, $n, $ret );
+ // Restriction application to sysops
+ if( $diff & Revision::DELETED_RESTRICTED ) {
+ if( $n & Revision::DELETED_RESTRICTED )
+ $ret[2][] = wfMsgForContent( 'revdelete-restricted' );
+ else
+ $ret[2][] = wfMsgForContent( 'revdelete-unrestricted' );
}
- foreach( $hidden as $item ) {
- $wgOut->addHTML( $item );
+ return $ret;
+ }
+
+ /**
+ * Gets a log message to describe the given revision visibility change. This
+ * message will be of the form "[hid {content, edit summary, username}];
+ * [unhid {...}][applied restrictions to sysops] for $count revisions: $comment".
+ *
+ * @param $count Integer: The number of effected revisions.
+ * @param $nbitfield Integer: The new bitfield for the revision.
+ * @param $obitfield Integer: The old bitfield for the revision.
+ * @param $isForLog Boolean
+ */
+ public static function getLogMessage( $count, $nbitfield, $obitfield, $isForLog = false ) {
+ global $wgLang;
+ $s = '';
+ $changes = self::getChanges( $nbitfield, $obitfield );
+ if( count( $changes[0] ) ) {
+ $s .= wfMsgForContent( 'revdelete-hid', implode( ', ', $changes[0] ) );
}
+ if( count( $changes[1] ) ) {
+ if ($s) $s .= '; ';
+ $s .= wfMsgForContent( 'revdelete-unhid', implode( ', ', $changes[1] ) );
+ }
+ if( count( $changes[2] ) ) {
+ $s .= $s ? ' (' . $changes[2][0] . ')' : $changes[2][0];
+ }
+ $msg = $isForLog ? 'logdelete-log-message' : 'revdelete-log-message';
+ return wfMsgExt( $msg, array( 'parsemag', 'content' ), $s, $wgLang->formatNum($count) );
- $wgOut->addHTML(
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' ) . "\n"
- );
}
- private function addUsageText() {
- global $wgOut, $wgUser;
- $wgOut->addWikiMsg( 'revdelete-text' );
- if( $wgUser->isAllowed( 'suppressrevision' ) ) {
- $wgOut->addWikiMsg( 'revdelete-suppress-text' );
+ // Get DB field name for URL param...
+ // Future code for other things may also track
+ // other types of revision-specific changes.
+ // @returns string One of log_id/rev_id/fa_id/ar_timestamp/oi_archive_name
+ public static function getRelationType( $typeName ) {
+ if ( isset( SpecialRevisionDelete::$deprecatedTypeMap[$typeName] ) ) {
+ $typeName = SpecialRevisionDelete::$deprecatedTypeMap[$typeName];
+ }
+ if ( isset( SpecialRevisionDelete::$allowedTypes[$typeName] ) ) {
+ $class = SpecialRevisionDelete::$allowedTypes[$typeName]['list-class'];
+ $list = new $class( null, null, null );
+ return $list->getIdField();
+ } else {
+ return null;
}
}
-
+}
+
+/**
+ * Abstract base class for a list of deletable items
+ */
+abstract class RevDel_List {
+ var $special, $title, $ids, $res, $current;
+ var $type = null; // override this
+ var $idField = null; // override this
+ var $dateField = false; // override this
+ var $authorIdField = false; // override this
+ var $authorNameField = false; // override this
+
/**
- * @param int $bitfields, aggregate bitfield of all the bitfields
- * @returns string HTML
- */
- private function buildCheckBoxes( $bitfields ) {
- $html = '';
- // FIXME: all items checked for just one rev are checked, even if not set for the others
- foreach( $this->checks as $item ) {
- list( $message, $name, $field ) = $item;
- $line = Xml::tags( 'div', null, Xml::checkLabel( wfMsg($message), $name, $name,
- $bitfields & $field ) );
- if( $field == Revision::DELETED_RESTRICTED ) $line = "<b>$line</b>";
- $html .= $line;
- }
- return $html;
+ * @param $special The parent SpecialPage
+ * @param $title The target title
+ * @param $ids Array of IDs
+ */
+ public function __construct( $special, $title, $ids ) {
+ $this->special = $special;
+ $this->title = $title;
+ $this->ids = $ids;
}
/**
- * @param Revision $rev
- * @returns string
+ * Get the internal type name of this list. Equal to the table name.
*/
- private function historyLine( $rev ) {
- global $wgLang, $wgUser;
+ public function getType() {
+ return $this->type;
+ }
- $date = $wgLang->timeanddate( $rev->getTimestamp() );
- $difflink = $del = '';
- // Live revisions
- if( $this->deleteKey=='oldid' ) {
- $tokenParams = '&unhide=1&token='.urlencode( $wgUser->editToken( $rev->getId() ) );
- $revlink = $this->skin->makeLinkObj( $this->page, $date, 'oldid='.$rev->getId() . $tokenParams );
- $difflink = '(' . $this->skin->makeKnownLinkObj( $this->page, wfMsgHtml('diff'),
- 'diff=' . $rev->getId() . '&oldid=prev' . $tokenParams ) . ')';
- // Archived revisions
- } else {
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
- $target = $this->page->getPrefixedText();
- $revlink = $this->skin->makeLinkObj( $undelete, $date,
- "target=$target&timestamp=" . $rev->getTimestamp() );
- $difflink = '(' . $this->skin->makeKnownLinkObj( $undelete, wfMsgHtml('diff'),
- "target=$target&diff=prev&timestamp=" . $rev->getTimestamp() ) . ')';
- }
- // Check permissions; items may be "suppressed"
- if( $rev->isDeleted(Revision::DELETED_TEXT) ) {
- $revlink = '<span class="history-deleted">'.$revlink.'</span>';
- $del = ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- if( !$rev->userCan(Revision::DELETED_TEXT) ) {
- $revlink = '<span class="history-deleted">'.$date.'</span>';
- $difflink = '(' . wfMsgHtml('diff') . ')';
- }
- }
- $userlink = $this->skin->revUserLink( $rev );
- $comment = $this->skin->revComment( $rev );
+ /**
+ * Get the DB field name associated with the ID list
+ */
+ public function getIdField() {
+ return $this->idField;
+ }
- return "<li>$difflink $revlink $userlink $comment{$del}</li>";
+ /**
+ * Get the DB field name storing timestamps
+ */
+ public function getTimestampField() {
+ return $this->dateField;
}
/**
- * @param File $file
- * @returns string
+ * Get the DB field name storing user ids
*/
- private function fileLine( $file ) {
- global $wgLang, $wgTitle;
+ public function getAuthorIdField() {
+ return $this->authorIdField;
+ }
- $target = $this->page->getPrefixedText();
- $date = $wgLang->timeanddate( $file->getTimestamp(), true );
+ /**
+ * Get the DB field name storing user names
+ */
+ public function getAuthorNameField() {
+ return $this->authorNameField;
+ }
+ /**
+ * Set the visibility for the revisions in this list. Logging and
+ * transactions are done here.
+ *
+ * @param $params Associative array of parameters. Members are:
+ * value: The integer value to set the visibility to
+ * comment: The log comment.
+ * @return Status
+ */
+ public function setVisibility( $params ) {
+ $bitPars = $params['value'];
+ $comment = $params['comment'];
- $del = '';
- # Hidden files...
- if( $file->isDeleted(File::DELETED_FILE) ) {
- $del = ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- if( !$file->userCan(File::DELETED_FILE) ) {
- $pageLink = $date;
+ $this->res = false;
+ $dbw = wfGetDB( DB_MASTER );
+ $this->doQuery( $dbw );
+ $dbw->begin();
+ $status = Status::newGood();
+ $missing = array_flip( $this->ids );
+ $this->clearFileOps();
+ $idsForLog = array();
+ $authorIds = $authorIPs = array();
+
+ for ( $this->reset(); $this->current(); $this->next() ) {
+ $item = $this->current();
+ unset( $missing[ $item->getId() ] );
+
+ $oldBits = $item->getBits();
+ // Build the actual new rev_deleted bitfield
+ $newBits = SpecialRevisionDelete::extractBitfield( $bitPars, $oldBits );
+
+ if ( $oldBits == $newBits ) {
+ $status->warning( 'revdelete-no-change', $item->formatDate(), $item->formatTime() );
+ $status->failCount++;
+ continue;
+ } elseif ( $oldBits == 0 && $newBits != 0 ) {
+ $opType = 'hide';
+ } elseif ( $oldBits != 0 && $newBits == 0 ) {
+ $opType = 'show';
} else {
- $pageLink = $this->skin->makeKnownLinkObj( $wgTitle, $date,
- "target=$target&file=$file->sha1.".$file->getExtension() );
+ $opType = 'modify';
+ }
+
+ if ( $item->isHideCurrentOp( $newBits ) ) {
+ // Cannot hide current version text
+ $status->error( 'revdelete-hide-current', $item->formatDate(), $item->formatTime() );
+ $status->failCount++;
+ continue;
+ }
+ if ( !$item->canView() ) {
+ // Cannot access this revision
+ $msg = ($opType == 'show') ?
+ 'revdelete-show-no-access' : 'revdelete-modify-no-access';
+ $status->error( $msg, $item->formatDate(), $item->formatTime() );
+ $status->failCount++;
+ continue;
+ }
+ // Cannot just "hide from Sysops" without hiding any fields
+ if( $newBits == Revision::DELETED_RESTRICTED ) {
+ $status->warning( 'revdelete-only-restricted', $item->formatDate(), $item->formatTime() );
+ $status->failCount++;
+ continue;
+ }
+
+ // Update the revision
+ $ok = $item->setBits( $newBits );
+
+ if ( $ok ) {
+ $idsForLog[] = $item->getId();
+ $status->successCount++;
+ if( $item->getAuthorId() > 0 ) {
+ $authorIds[] = $item->getAuthorId();
+ } else if( IP::isIPAddress( $item->getAuthorName() ) ) {
+ $authorIPs[] = $item->getAuthorName();
+ }
+ } else {
+ $status->error( 'revdelete-concurrent-change', $item->formatDate(), $item->formatTime() );
+ $status->failCount++;
}
- $pageLink = '<span class="history-deleted">' . $pageLink . '</span>';
- # Regular files...
- } else {
- $url = $file->getUrlRel();
- $pageLink = "<a href=\"{$url}\">{$date}</a>";
}
- $data = wfMsg( 'widthheight',
- $wgLang->formatNum( $file->getWidth() ),
- $wgLang->formatNum( $file->getHeight() ) ) .
- ' (' . wfMsgExt( 'nbytes', 'parsemag', $wgLang->formatNum( $file->getSize() ) ) . ')';
- $data = htmlspecialchars( $data );
+ // Handle missing revisions
+ foreach ( $missing as $id => $unused ) {
+ $status->error( 'revdelete-modify-missing', $id );
+ $status->failCount++;
+ }
- return "<li>$pageLink ".$this->fileUserTools( $file )." $data ".$this->fileComment( $file )."$del</li>";
- }
+ if ( $status->successCount == 0 ) {
+ $status->ok = false;
+ $dbw->rollback();
+ return $status;
+ }
- /**
- * @param ArchivedFile $file
- * @returns string
- */
- private function archivedfileLine( $file ) {
- global $wgLang;
+ // Save success count
+ $successCount = $status->successCount;
- $target = $this->page->getPrefixedText();
- $date = $wgLang->timeanddate( $file->getTimestamp(), true );
+ // Move files, if there are any
+ $status->merge( $this->doPreCommitUpdates() );
+ if ( !$status->isOK() ) {
+ // Fatal error, such as no configured archive directory
+ $dbw->rollback();
+ return $status;
+ }
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
- $pageLink = $this->skin->makeKnownLinkObj( $undelete, $date, "target=$target&file={$file->getKey()}" );
+ // Log it
+ $this->updateLog( array(
+ 'title' => $this->title,
+ 'count' => $successCount,
+ 'newBits' => $newBits,
+ 'oldBits' => $oldBits,
+ 'comment' => $comment,
+ 'ids' => $idsForLog,
+ 'authorIds' => $authorIds,
+ 'authorIPs' => $authorIPs
+ ) );
+ $dbw->commit();
- $del = '';
- if( $file->isDeleted(File::DELETED_FILE) ) {
- $del = ' <tt>' . wfMsgHtml( 'deletedrev' ) . '</tt>';
- }
+ // Clear caches
+ $status->merge( $this->doPostCommitUpdates() );
+ return $status;
+ }
- $data = wfMsg( 'widthheight',
- $wgLang->formatNum( $file->getWidth() ),
- $wgLang->formatNum( $file->getHeight() ) ) .
- ' (' . wfMsgExt( 'nbytes', 'parsemag', $wgLang->formatNum( $file->getSize() ) ) . ')';
- $data = htmlspecialchars( $data );
+ /**
+ * Reload the list data from the master DB. This can be done after setVisibility()
+ * to allow $item->getHTML() to show the new data.
+ */
+ function reloadFromMaster() {
+ $dbw = wfGetDB( DB_MASTER );
+ $this->res = $this->doQuery( $dbw );
+ }
- return "<li> $pageLink ".$this->fileUserTools( $file )." $data ".$this->fileComment( $file )."$del</li>";
+ /**
+ * Record a log entry on the action
+ * @param $params Associative array of parameters:
+ * newBits: The new value of the *_deleted bitfield
+ * oldBits: The old value of the *_deleted bitfield.
+ * title: The target title
+ * ids: The ID list
+ * comment: The log comment
+ * authorsIds: The array of the user IDs of the offenders
+ * authorsIPs: The array of the IP/anon user offenders
+ */
+ protected function updateLog( $params ) {
+ // Get the URL param's corresponding DB field
+ $field = RevisionDeleter::getRelationType( $this->getType() );
+ if( !$field ) {
+ throw new MWException( "Bad log URL param type!" );
+ }
+ // Put things hidden from sysops in the oversight log
+ if ( ( $params['newBits'] | $params['oldBits'] ) & $this->getSuppressBit() ) {
+ $logType = 'suppress';
+ } else {
+ $logType = 'delete';
+ }
+ // Add params for effected page and ids
+ $logParams = $this->getLogParams( $params );
+ // Actually add the deletion log entry
+ $log = new LogPage( $logType );
+ $logid = $log->addEntry( $this->getLogAction(), $params['title'],
+ $params['comment'], $logParams );
+ // Allow for easy searching of deletion log items for revision/log items
+ $log->addRelations( $field, $params['ids'], $logid );
+ $log->addRelations( 'target_author_id', $params['authorIds'], $logid );
+ $log->addRelations( 'target_author_ip', $params['authorIPs'], $logid );
}
/**
- * @param Array $row row
- * @returns string
+ * Get the log action for this list type
*/
- private function logLine( $row ) {
- global $wgLang;
+ public function getLogAction() {
+ return 'revision';
+ }
- $date = $wgLang->timeanddate( $row->log_timestamp );
- $paramArray = LogPage::extractParams( $row->log_params );
- $title = Title::makeTitle( $row->log_namespace, $row->log_title );
+ /**
+ * Get log parameter array.
+ * @param $params Associative array of log parameters, same as updateLog()
+ * @return array
+ */
+ public function getLogParams( $params ) {
+ return array(
+ $this->getType(),
+ implode( ',', $params['ids'] ),
+ "ofield={$params['oldBits']}",
+ "nfield={$params['newBits']}"
+ );
+ }
- $logtitle = SpecialPage::getTitleFor( 'Log' );
- $loglink = $this->skin->makeKnownLinkObj( $logtitle, wfMsgHtml( 'log' ),
- wfArrayToCGI( array( 'page' => $title->getPrefixedUrl() ) ) );
- // Action text
- if( !LogEventsList::userCan($row,LogPage::DELETED_ACTION) ) {
- $action = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
+ /**
+ * Initialise the current iteration pointer
+ */
+ protected function initCurrent() {
+ $row = $this->res->current();
+ if ( $row ) {
+ $this->current = $this->newItem( $row );
} else {
- $action = LogPage::actionText( $row->log_type, $row->log_action, $title,
- $this->skin, $paramArray, true, true );
- if( $row->log_deleted & LogPage::DELETED_ACTION )
- $action = '<span class="history-deleted">' . $action . '</span>';
- }
- // User links
- $userLink = $this->skin->userLink( $row->log_user, User::WhoIs($row->log_user) );
- if( LogEventsList::isDeleted($row,LogPage::DELETED_USER) ) {
- $userLink = '<span class="history-deleted">' . $userLink . '</span>';
+ $this->current = false;
}
- // Comment
- $comment = $wgLang->getDirMark() . $this->skin->commentBlock( $row->log_comment );
- if( LogEventsList::isDeleted($row,LogPage::DELETED_COMMENT) ) {
- $comment = '<span class="history-deleted">' . $comment . '</span>';
- }
- return "<li>($loglink) $date $userLink $action $comment</li>";
}
/**
- * Generate a user tool link cluster if the current user is allowed to view it
- * @param ArchivedFile $file
- * @return string HTML
+ * Start iteration. This must be called before current() or next().
+ * @return First list item
*/
- private function fileUserTools( $file ) {
- if( $file->userCan( Revision::DELETED_USER ) ) {
- $link = $this->skin->userLink( $file->user, $file->user_text ) .
- $this->skin->userToolLinks( $file->user, $file->user_text );
+ public function reset() {
+ if ( !$this->res ) {
+ $this->res = $this->doQuery( wfGetDB( DB_SLAVE ) );
} else {
- $link = wfMsgHtml( 'rev-deleted-user' );
- }
- if( $file->isDeleted( Revision::DELETED_USER ) ) {
- return '<span class="history-deleted">' . $link . '</span>';
+ $this->res->rewind();
}
- return $link;
+ $this->initCurrent();
+ return $this->current;
}
/**
- * Wrap and format the given file's comment block, if the current
- * user is allowed to view it.
- *
- * @param ArchivedFile $file
- * @return string HTML
+ * Get the current list item, or false if we are at the end
*/
- private function fileComment( $file ) {
- if( $file->userCan( File::DELETED_COMMENT ) ) {
- $block = $this->skin->commentBlock( $file->description );
- } else {
- $block = ' ' . wfMsgHtml( 'rev-deleted-comment' );
- }
- if( $file->isDeleted( File::DELETED_COMMENT ) ) {
- return "<span class=\"history-deleted\">$block</span>";
- }
- return $block;
+ public function current() {
+ return $this->current;
}
/**
- * @param WebRequest $request
+ * Move the iteration pointer to the next list item, and return it.
*/
- private function submit( $request ) {
- global $wgUser, $wgOut;
- # Check edit token on submission
- if( $this->wasPosted && !$wgUser->matchEditToken( $request->getVal('wpEditToken') ) ) {
- $wgOut->addWikiMsg( 'sessionfailure' );
- return false;
- }
- $bitfield = $this->extractBitfield( $request );
- $comment = $request->getText( 'wpReason' );
- # Can the user set this field?
- if( $bitfield & Revision::DELETED_RESTRICTED && !$wgUser->isAllowed('suppressrevision') ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
- }
- # If the save went through, go to success message. Otherwise
- # bounce back to form...
- if( $this->save( $bitfield, $comment, $this->page ) ) {
- $this->success();
- } else if( $request->getCheck( 'oldid' ) || $request->getCheck( 'artimestamp' ) ) {
- return $this->showRevs();
- } else if( $request->getCheck( 'logid' ) ) {
- return $this->showLogs();
- } else if( $request->getCheck( 'oldimage' ) || $request->getCheck( 'fileid' ) ) {
- return $this->showImages();
+ public function next() {
+ $this->res->next();
+ $this->initCurrent();
+ return $this->current;
+ }
+
+ /**
+ * Get the number of items in the list.
+ */
+ public function length() {
+ if( !$this->res ) {
+ return 0;
+ } else {
+ return $this->res->numRows();
}
}
- private function success() {
- global $wgOut;
-
- $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
-
- $wrap = '<span class="success">$1</span>';
+ /**
+ * Clear any data structures needed for doPreCommitUpdates() and doPostCommitUpdates()
+ * STUB
+ */
+ public function clearFileOps() {
+ }
- if( $this->deleteKey=='logid' ) {
- $wgOut->wrapWikiMsg( $wrap, 'logdelete-success' );
- $this->showLogItems();
- } else if( $this->deleteKey=='oldid' || $this->deleteKey=='artimestamp' ) {
- $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' );
- $this->showRevs();
- } else if( $this->deleteKey=='fileid' ) {
- $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' );
- $this->showImages();
- } else if( $this->deleteKey=='oldimage' ) {
- $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' );
- $this->showImages();
- }
+ /**
+ * A hook for setVisibility(): do batch updates pre-commit.
+ * STUB
+ * @return Status
+ */
+ public function doPreCommitUpdates() {
+ return Status::newGood();
}
/**
- * Put together a rev_deleted bitfield from the submitted checkboxes
- * @param WebRequest $request
- * @return int
+ * A hook for setVisibility(): do any necessary updates post-commit.
+ * STUB
+ * @return Status
*/
- private function extractBitfield( $request ) {
- $bitfield = 0;
- foreach( $this->checks as $item ) {
- list( /* message */ , $name, $field ) = $item;
- if( $request->getCheck( $name ) ) {
- $bitfield |= $field;
- }
- }
- return $bitfield;
+ public function doPostCommitUpdates() {
+ return Status::newGood();
}
- private function save( $bitfield, $reason, $title ) {
- $dbw = wfGetDB( DB_MASTER );
- // Don't allow simply locking the interface for no reason
- if( $bitfield == Revision::DELETED_RESTRICTED ) {
- $bitfield = 0;
- }
- $deleter = new RevisionDeleter( $dbw );
- // By this point, only one of the below should be set
- if( isset($this->revisions) ) {
- return $deleter->setRevVisibility( $title, $this->revisions, $bitfield, $reason );
- } else if( isset($this->archrevs) ) {
- return $deleter->setArchiveVisibility( $title, $this->archrevs, $bitfield, $reason );
- } else if( isset($this->ofiles) ) {
- return $deleter->setOldImgVisibility( $title, $this->ofiles, $bitfield, $reason );
- } else if( isset($this->afiles) ) {
- return $deleter->setArchFileVisibility( $title, $this->afiles, $bitfield, $reason );
- } else if( isset($this->events) ) {
- return $deleter->setEventVisibility( $title, $this->events, $bitfield, $reason );
- }
- }
+ /**
+ * Create an item object from a DB result row
+ * @param $row stdclass
+ */
+ abstract public function newItem( $row );
+
+ /**
+ * Do the DB query to iterate through the objects.
+ * @param $db Database object to use for the query
+ */
+ abstract public function doQuery( $db );
+
+ /**
+ * Get the integer value of the flag used for suppression
+ */
+ abstract public function getSuppressBit();
}
/**
- * Implements the actions for Revision Deletion.
- * @ingroup SpecialPage
+ * Abstract base class for deletable items
*/
-class RevisionDeleter {
- function __construct( $db ) {
- $this->dbw = $db;
+abstract class RevDel_Item {
+ /** The parent SpecialPage */
+ var $special;
+
+ /** The parent RevDel_List */
+ var $list;
+
+ /** The DB result row */
+ var $row;
+
+ /**
+ * @param $list RevDel_List
+ * @param $row DB result row
+ */
+ public function __construct( $list, $row ) {
+ $this->special = $list->special;
+ $this->list = $list;
+ $this->row = $row;
}
/**
- * @param $title, the page these events apply to
- * @param array $items list of revision ID numbers
- * @param int $bitfield new rev_deleted value
- * @param string $comment Comment for log records
+ * Get the ID, as it would appear in the ids URL parameter
*/
- function setRevVisibility( $title, $items, $bitfield, $comment ) {
- global $wgOut;
+ public function getId() {
+ $field = $this->list->getIdField();
+ return $this->row->$field;
+ }
- $userAllowedAll = $success = true;
- $revIDs = array();
- $revCount = 0;
- // Run through and pull all our data in one query
- foreach( $items as $revid ) {
- $where[] = intval($revid);
- }
- $result = $this->dbw->select( 'revision', '*',
- array(
- 'rev_page' => $title->getArticleID(),
- 'rev_id' => $where ),
- __METHOD__ );
- while( $row = $this->dbw->fetchObject( $result ) ) {
- $revObjs[$row->rev_id] = new Revision( $row );
- }
- // To work!
- foreach( $items as $revid ) {
- if( !isset($revObjs[$revid]) || $revObjs[$revid]->isCurrent() ) {
- $success = false;
- continue; // Must exist
- } else if( !$revObjs[$revid]->userCan(Revision::DELETED_RESTRICTED) ) {
- $userAllowedAll=false;
- continue;
- }
- // For logging, maintain a count of revisions
- if( $revObjs[$revid]->mDeleted != $bitfield ) {
- $revCount++;
- $revIDs[]=$revid;
+ /**
+ * Get the date, formatted with $wgLang
+ */
+ public function formatDate() {
+ global $wgLang;
+ return $wgLang->date( $this->getTimestamp() );
+ }
- $this->updateRevision( $revObjs[$revid], $bitfield );
- $this->updateRecentChangesEdits( $revObjs[$revid], $bitfield, false );
- }
- }
- // Clear caches...
- // Don't log or touch if nothing changed
- if( $revCount > 0 ) {
- $this->updateLog( $title, $revCount, $bitfield, $revObjs[$revid]->mDeleted,
- $comment, $title, 'oldid', $revIDs );
- $this->updatePage( $title );
- }
- // Where all revs allowed to be set?
- if( !$userAllowedAll ) {
- //FIXME: still might be confusing???
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
- }
+ /**
+ * Get the time, formatted with $wgLang
+ */
+ public function formatTime() {
+ global $wgLang;
+ return $wgLang->time( $this->getTimestamp() );
+ }
- return $success;
+ /**
+ * Get the timestamp in MW 14-char form
+ */
+ public function getTimestamp() {
+ $field = $this->list->getTimestampField();
+ return wfTimestamp( TS_MW, $this->row->$field );
+ }
+
+ /**
+ * Get the author user ID
+ */
+ public function getAuthorId() {
+ $field = $this->list->getAuthorIdField();
+ return intval( $this->row->$field );
+ }
+
+ /**
+ * Get the author user name
+ */
+ public function getAuthorName() {
+ $field = $this->list->getAuthorNameField();
+ return strval( $this->row->$field );
}
- /**
- * @param $title, the page these events apply to
- * @param array $items list of revision ID numbers
- * @param int $bitfield new rev_deleted value
- * @param string $comment Comment for log records
+ /**
+ * Returns true if the item is "current", and the operation to set the given
+ * bits can't be executed for that reason
+ * STUB
*/
- function setArchiveVisibility( $title, $items, $bitfield, $comment ) {
- global $wgOut;
+ public function isHideCurrentOp( $newBits ) {
+ return false;
+ }
- $userAllowedAll = $success = true;
- $count = 0;
- $Id_set = array();
- // Run through and pull all our data in one query
- foreach( $items as $timestamp ) {
- $where[] = $this->dbw->timestamp( $timestamp );
- }
- $result = $this->dbw->select( 'archive', '*',
- array(
- 'ar_namespace' => $title->getNamespace(),
- 'ar_title' => $title->getDBKey(),
- 'ar_timestamp' => $where ),
- __METHOD__ );
- while( $row = $this->dbw->fetchObject( $result ) ) {
- $timestamp = wfTimestamp( TS_MW, $row->ar_timestamp );
- $revObjs[$timestamp] = new Revision( array(
- 'page' => $title->getArticleId(),
- 'id' => $row->ar_rev_id,
- 'text' => $row->ar_text_id,
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'text_id' => $row->ar_text_id,
- 'deleted' => $row->ar_deleted,
- 'len' => $row->ar_len) );
- }
- // To work!
- foreach( $items as $timestamp ) {
- // This will only select the first revision with this timestamp.
- // Since they are all selected/deleted at once, we can just check the
- // permissions of one. UPDATE is done via timestamp, so all revs are set.
- if( !is_object($revObjs[$timestamp]) ) {
- $success = false;
- continue; // Must exist
- } else if( !$revObjs[$timestamp]->userCan(Revision::DELETED_RESTRICTED) ) {
- $userAllowedAll=false;
- continue;
- }
- // Which revisions did we change anything about?
- if( $revObjs[$timestamp]->mDeleted != $bitfield ) {
- $Id_set[]=$timestamp;
- $count++;
+ /**
+ * Returns true if the current user can view the item
+ */
+ abstract public function canView();
+
+ /**
+ * Returns true if the current user can view the item text/file
+ */
+ abstract public function canViewContent();
- $this->updateArchive( $revObjs[$timestamp], $title, $bitfield );
- }
- }
- // For logging, maintain a count of revisions
- if( $count > 0 ) {
- $this->updateLog( $title, $count, $bitfield, $revObjs[$timestamp]->mDeleted,
- $comment, $title, 'artimestamp', $Id_set );
- }
- // Where all revs allowed to be set?
- if( !$userAllowedAll ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
- }
+ /**
+ * Get the current deletion bitfield value
+ */
+ abstract public function getBits();
- return $success;
- }
+ /**
+ * Get the HTML of the list item. Should be include <li></li> tags.
+ * This is used to show the list in HTML form, by the special page.
+ */
+ abstract public function getHTML();
- /**
- * @param $title, the page these events apply to
- * @param array $items list of revision ID numbers
- * @param int $bitfield new rev_deleted value
- * @param string $comment Comment for log records
+ /**
+ * Set the visibility of the item. This should do any necessary DB queries.
+ *
+ * The DB update query should have a condition which forces it to only update
+ * if the value in the DB matches the value fetched earlier with the SELECT.
+ * If the update fails because it did not match, the function should return
+ * false. This prevents concurrency problems.
+ *
+ * @return boolean success
*/
- function setOldImgVisibility( $title, $items, $bitfield, $comment ) {
- global $wgOut;
+ abstract public function setBits( $newBits );
+}
- $userAllowedAll = $success = true;
- $count = 0;
- $set = array();
- // Run through and pull all our data in one query
- foreach( $items as $timestamp ) {
- $where[] = $timestamp.'!'.$title->getDBKey();
- }
- $result = $this->dbw->select( 'oldimage', '*',
+/**
+ * List for revision table items
+ */
+class RevDel_RevisionList extends RevDel_List {
+ var $currentRevId;
+ var $type = 'revision';
+ var $idField = 'rev_id';
+ var $dateField = 'rev_timestamp';
+ var $authorIdField = 'rev_user';
+ var $authorNameField = 'rev_user_text';
+
+ public function doQuery( $db ) {
+ $ids = array_map( 'intval', $this->ids );
+ return $db->select( array('revision','page'), '*',
array(
- 'oi_name' => $title->getDBKey(),
- 'oi_archive_name' => $where ),
- __METHOD__ );
- while( $row = $this->dbw->fetchObject( $result ) ) {
- $filesObjs[$row->oi_archive_name] = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
- $filesObjs[$row->oi_archive_name]->user = $row->oi_user;
- $filesObjs[$row->oi_archive_name]->user_text = $row->oi_user_text;
- }
- // To work!
- foreach( $items as $timestamp ) {
- $archivename = $timestamp.'!'.$title->getDBKey();
- if( !isset($filesObjs[$archivename]) ) {
- $success = false;
- continue; // Must exist
- } else if( !$filesObjs[$archivename]->userCan(File::DELETED_RESTRICTED) ) {
- $userAllowedAll=false;
- continue;
- }
+ 'rev_page' => $this->title->getArticleID(),
+ 'rev_id' => $ids,
+ 'rev_page = page_id'
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_id DESC' )
+ );
+ }
- $transaction = true;
- // Which revisions did we change anything about?
- if( $filesObjs[$archivename]->deleted != $bitfield ) {
- $count++;
-
- $this->dbw->begin();
- $this->updateOldFiles( $filesObjs[$archivename], $bitfield );
- // If this image is currently hidden...
- if( $filesObjs[$archivename]->deleted & File::DELETED_FILE ) {
- if( $bitfield & File::DELETED_FILE ) {
- # Leave it alone if we are not changing this...
- $set[]=$archivename;
- $transaction = true;
- } else {
- # We are moving this out
- $transaction = $this->makeOldImagePublic( $filesObjs[$archivename] );
- $set[]=$transaction;
- }
- // Is it just now becoming hidden?
- } else if( $bitfield & File::DELETED_FILE ) {
- $transaction = $this->makeOldImagePrivate( $filesObjs[$archivename] );
- $set[]=$transaction;
- } else {
- $set[]=$timestamp;
- }
- // If our file operations fail, then revert back the db
- if( $transaction==false ) {
- $this->dbw->rollback();
- return false;
- }
- $this->dbw->commit();
- }
- }
+ public function newItem( $row ) {
+ return new RevDel_RevisionItem( $this, $row );
+ }
- // Log if something was changed
- if( $count > 0 ) {
- $this->updateLog( $title, $count, $bitfield, $filesObjs[$archivename]->deleted,
- $comment, $title, 'oldimage', $set );
- # Purge page/history
- $file = wfLocalFile( $title );
- $file->purgeCache();
- $file->purgeHistory();
- # Invalidate cache for all pages using this file
- $update = new HTMLCacheUpdate( $title, 'imagelinks' );
- $update->doUpdate();
- }
- // Where all revs allowed to be set?
- if( !$userAllowedAll ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
+ public function getCurrent() {
+ if ( is_null( $this->currentRevId ) ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $this->currentRevId = $dbw->selectField(
+ 'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
}
-
- return $success;
+ return $this->currentRevId;
}
- /**
- * @param $title, the page these events apply to
- * @param array $items list of revision ID numbers
- * @param int $bitfield new rev_deleted value
- * @param string $comment Comment for log records
- */
- function setArchFileVisibility( $title, $items, $bitfield, $comment ) {
- global $wgOut;
+ public function getSuppressBit() {
+ return Revision::DELETED_RESTRICTED;
+ }
- $userAllowedAll = $success = true;
- $count = 0;
- $Id_set = array();
+ public function doPreCommitUpdates() {
+ $this->title->invalidateCache();
+ return Status::newGood();
+ }
- // Run through and pull all our data in one query
- foreach( $items as $id ) {
- $where[] = intval($id);
- }
- $result = $this->dbw->select( 'filearchive', '*',
- array( 'fa_name' => $title->getDBKey(),
- 'fa_id' => $where ),
- __METHOD__ );
- while( $row = $this->dbw->fetchObject( $result ) ) {
- $filesObjs[$row->fa_id] = ArchivedFile::newFromRow( $row );
- }
- // To work!
- foreach( $items as $fileid ) {
- if( !isset($filesObjs[$fileid]) ) {
- $success = false;
- continue; // Must exist
- } else if( !$filesObjs[$fileid]->userCan(File::DELETED_RESTRICTED) ) {
- $userAllowedAll=false;
- continue;
- }
- // Which revisions did we change anything about?
- if( $filesObjs[$fileid]->deleted != $bitfield ) {
- $Id_set[]=$fileid;
- $count++;
+ public function doPostCommitUpdates() {
+ $this->title->purgeSquid();
+ // Extensions that require referencing previous revisions may need this
+ wfRunHooks( 'ArticleRevisionVisiblitySet', array( &$this->title ) );
+ return Status::newGood();
+ }
+}
- $this->updateArchFiles( $filesObjs[$fileid], $bitfield );
- }
- }
- // Log if something was changed
- if( $count > 0 ) {
- $this->updateLog( $title, $count, $bitfield, $comment,
- $filesObjs[$fileid]->deleted, $title, 'fileid', $Id_set );
- }
- // Where all revs allowed to be set?
- if( !$userAllowedAll ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
- }
+/**
+ * Item class for a revision table row
+ */
+class RevDel_RevisionItem extends RevDel_Item {
+ var $revision;
- return $success;
+ public function __construct( $list, $row ) {
+ parent::__construct( $list, $row );
+ $this->revision = new Revision( $row );
}
- /**
- * @param $title, the log page these events apply to
- * @param array $items list of log ID numbers
- * @param int $bitfield new log_deleted value
- * @param string $comment Comment for log records
- */
- function setEventVisibility( $title, $items, $bitfield, $comment ) {
- global $wgOut;
+ public function canView() {
+ return $this->revision->userCan( Revision::DELETED_RESTRICTED );
+ }
+
+ public function canViewContent() {
+ return $this->revision->userCan( Revision::DELETED_TEXT );
+ }
- $userAllowedAll = $success = true;
- $count = 0;
- $log_Ids = array();
+ public function getBits() {
+ return $this->revision->mDeleted;
+ }
- // Run through and pull all our data in one query
- foreach( $items as $logid ) {
- $where[] = intval($logid);
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ // Update revision table
+ $dbw->update( 'revision',
+ array( 'rev_deleted' => $bits ),
+ array(
+ 'rev_id' => $this->revision->getId(),
+ 'rev_page' => $this->revision->getPage(),
+ 'rev_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+ if ( !$dbw->affectedRows() ) {
+ // Concurrent fail!
+ return false;
}
- list($log,$logtype) = explode( '/',$title->getDBKey(), 2 );
- $result = $this->dbw->select( 'logging', '*',
+ // Update recentchanges table
+ $dbw->update( 'recentchanges',
+ array(
+ 'rc_deleted' => $bits,
+ 'rc_patrolled' => 1
+ ),
array(
- 'log_type' => $logtype,
- 'log_id' => $where ),
- __METHOD__ );
- while( $row = $this->dbw->fetchObject( $result ) ) {
- $logRows[$row->log_id] = $row;
- }
- // To work!
- foreach( $items as $logid ) {
- if( !isset($logRows[$logid]) ) {
- $success = false;
- continue; // Must exist
- } else if( !LogEventsList::userCan($logRows[$logid], LogPage::DELETED_RESTRICTED)
- || $logRows[$logid]->log_type == 'suppress' ) {
- // Don't hide from oversight log!!!
- $userAllowedAll=false;
- continue;
- }
- // Which logs did we change anything about?
- if( $logRows[$logid]->log_deleted != $bitfield ) {
- $log_Ids[]=$logid;
- $count++;
+ 'rc_this_oldid' => $this->revision->getId(), // condition
+ // non-unique timestamp index
+ 'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
+ ),
+ __METHOD__
+ );
+ return true;
+ }
- $this->updateLogs( $logRows[$logid], $bitfield );
- $this->updateRecentChangesLog( $logRows[$logid], $bitfield, true );
- }
- }
- // Don't log or touch if nothing changed
- if( $count > 0 ) {
- $this->updateLog( $title, $count, $bitfield, $logRows[$logid]->log_deleted,
- $comment, $title, 'logid', $log_Ids );
- }
- // Were all revs allowed to be set?
- if( !$userAllowedAll ) {
- $wgOut->permissionRequired( 'suppressrevision' );
- return false;
- }
+ public function isDeleted() {
+ return $this->revision->isDeleted( Revision::DELETED_TEXT );
+ }
- return $success;
+ public function isHideCurrentOp( $newBits ) {
+ return ( $newBits & Revision::DELETED_TEXT )
+ && $this->list->getCurrent() == $this->getId();
}
/**
- * Moves an image to a safe private location
- * Caller is responsible for clearing caches
- * @param File $oimage
- * @returns mixed, timestamp string on success, false on failure
+ * Get the HTML link to the revision text.
+ * Overridden by RevDel_ArchiveItem.
*/
- function makeOldImagePrivate( $oimage ) {
- $transaction = new FSTransaction();
- if( !FileStore::lock() ) {
- wfDebug( __METHOD__.": failed to acquire file store lock, aborting\n" );
- return false;
- }
- $oldpath = $oimage->getArchivePath() . DIRECTORY_SEPARATOR . $oimage->archive_name;
- // Dupe the file into the file store
- if( file_exists( $oldpath ) ) {
- // Is our directory configured?
- if( $store = FileStore::get( 'deleted' ) ) {
- if( !$oimage->sha1 ) {
- $oimage->upgradeRow(); // sha1 may be missing
- }
- $key = $oimage->sha1 . '.' . $oimage->getExtension();
- $transaction->add( $store->insert( $key, $oldpath, FileStore::DELETE_ORIGINAL ) );
- } else {
- $group = null;
- $key = null;
- $transaction = false; // Return an error and do nothing
- }
+ protected function getRevisionLink() {
+ global $wgLang;
+ $date = $wgLang->timeanddate( $this->revision->getTimestamp(), true );
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $date;
+ }
+ return $this->special->skin->link(
+ $this->list->title,
+ $date,
+ array(),
+ array(
+ 'oldid' => $this->revision->getId(),
+ 'unhide' => 1
+ )
+ );
+ }
+
+ /**
+ * Get the HTML link to the diff.
+ * Overridden by RevDel_ArchiveItem
+ */
+ protected function getDiffLink() {
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return wfMsgHtml('diff');
} else {
- wfDebug( __METHOD__." deleting already-missing '$oldpath'; moving on to database\n" );
- $group = null;
- $key = '';
- $transaction = new FSTransaction(); // empty
+ return
+ $this->special->skin->link(
+ $this->list->title,
+ wfMsgHtml('diff'),
+ array(),
+ array(
+ 'diff' => $this->revision->getId(),
+ 'oldid' => 'prev',
+ 'unhide' => 1
+ ),
+ array(
+ 'known',
+ 'noclasses'
+ )
+ );
}
+ }
- if( $transaction === false ) {
- // Fail to restore?
- wfDebug( __METHOD__.": import to file store failed, aborting\n" );
- throw new MWException( "Could not archive and delete file $oldpath" );
- return false;
+ public function getHTML() {
+ $difflink = $this->getDiffLink();
+ $revlink = $this->getRevisionLink();
+ $userlink = $this->special->skin->revUserLink( $this->revision );
+ $comment = $this->special->skin->revComment( $this->revision );
+ if ( $this->isDeleted() ) {
+ $revlink = "<span class=\"history-deleted\">$revlink</span>";
}
+ return "<li>($difflink) $revlink $userlink $comment</li>";
+ }
+}
- wfDebug( __METHOD__.": set db items, applying file transactions\n" );
- $transaction->commit();
- FileStore::unlock();
+/**
+ * List for archive table items, i.e. revisions deleted via action=delete
+ */
+class RevDel_ArchiveList extends RevDel_RevisionList {
+ var $type = 'archive';
+ var $idField = 'ar_timestamp';
+ var $dateField = 'ar_timestamp';
+ var $authorIdField = 'ar_user';
+ var $authorNameField = 'ar_user_text';
+
+ public function doQuery( $db ) {
+ $timestamps = array();
+ foreach ( $this->ids as $id ) {
+ $timestamps[] = $db->timestamp( $id );
+ }
+ return $db->select( 'archive', '*',
+ array(
+ 'ar_namespace' => $this->title->getNamespace(),
+ 'ar_title' => $this->title->getDBkey(),
+ 'ar_timestamp' => $timestamps
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'ar_timestamp DESC' )
+ );
+ }
- $m = explode('!',$oimage->archive_name,2);
- $timestamp = $m[0];
+ public function newItem( $row ) {
+ return new RevDel_ArchiveItem( $this, $row );
+ }
- return $timestamp;
+ public function doPreCommitUpdates() {
+ return Status::newGood();
}
- /**
- * Moves an image from a safe private location
- * Caller is responsible for clearing caches
- * @param File $oimage
- * @returns mixed, string timestamp on success, false on failure
- */
- function makeOldImagePublic( $oimage ) {
- $transaction = new FSTransaction();
- if( !FileStore::lock() ) {
- wfDebug( __METHOD__." could not acquire filestore lock\n" );
- return false;
- }
+ public function doPostCommitUpdates() {
+ return Status::newGood();
+ }
+}
- $store = FileStore::get( 'deleted' );
- if( !$store ) {
- wfDebug( __METHOD__.": skipping row with no file.\n" );
- return false;
+/**
+ * Item class for a archive table row
+ */
+class RevDel_ArchiveItem extends RevDel_RevisionItem {
+ public function __construct( $list, $row ) {
+ RevDel_Item::__construct( $list, $row );
+ $this->revision = Revision::newFromArchiveRow( $row,
+ array( 'page' => $this->list->title->getArticleId() ) );
+ }
+
+ public function getId() {
+ # Convert DB timestamp to MW timestamp
+ return $this->revision->getTimestamp();
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'archive',
+ array( 'ar_deleted' => $bits ),
+ array( 'ar_namespace' => $this->list->title->getNamespace(),
+ 'ar_title' => $this->list->title->getDBkey(),
+ // use timestamp for index
+ 'ar_timestamp' => $this->row->ar_timestamp,
+ 'ar_rev_id' => $this->row->ar_rev_id,
+ 'ar_deleted' => $this->getBits()
+ ),
+ __METHOD__ );
+ return (bool)$dbw->affectedRows();
+ }
+
+ protected function getRevisionLink() {
+ global $wgLang;
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ $date = $wgLang->timeanddate( $this->revision->getTimestamp(), true );
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $date;
}
+ return $this->special->skin->link( $undelete, $date, array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'timestamp' => $this->revision->getTimestamp()
+ ) );
+ }
- $key = $oimage->sha1.'.'.$oimage->getExtension();
- $destDir = $oimage->getArchivePath();
- if( !is_dir( $destDir ) ) {
- wfMkdirParents( $destDir );
- }
- $destPath = $destDir . DIRECTORY_SEPARATOR . $oimage->archive_name;
- // Check if any other stored revisions use this file;
- // if so, we shouldn't remove the file from the hidden
- // archives so they will still work. Check hidden files first.
- $useCount = $this->dbw->selectField( 'oldimage', '1',
- array( 'oi_sha1' => $oimage->sha1,
- 'oi_deleted & '.File::DELETED_FILE => File::DELETED_FILE ),
- __METHOD__, array( 'FOR UPDATE' ) );
- // Check the rest of the deleted archives too.
- // (these are the ones that don't show in the image history)
- if( !$useCount ) {
- $useCount = $this->dbw->selectField( 'filearchive', '1',
- array( 'fa_storage_group' => 'deleted', 'fa_storage_key' => $key ),
- __METHOD__, array( 'FOR UPDATE' ) );
- }
-
- if( $useCount == 0 ) {
- wfDebug( __METHOD__.": nothing else using {$oimage->sha1}, will deleting after\n" );
- $flags = FileStore::DELETE_ORIGINAL;
- } else {
- $flags = 0;
+ protected function getDiffLink() {
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return wfMsgHtml( 'diff' );
}
- $transaction->add( $store->export( $key, $destPath, $flags ) );
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ return $this->special->skin->link( $undelete, wfMsgHtml('diff'), array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'diff' => 'prev',
+ 'timestamp' => $this->revision->getTimestamp()
+ ) );
+ }
+}
- wfDebug( __METHOD__.": set db items, applying file transactions\n" );
- $transaction->commit();
- FileStore::unlock();
+/**
+ * List for oldimage table items
+ */
+class RevDel_FileList extends RevDel_List {
+ var $type = 'oldimage';
+ var $idField = 'oi_archive_name';
+ var $dateField = 'oi_timestamp';
+ var $authorIdField = 'oi_user';
+ var $authorNameField = 'oi_user_text';
+ var $storeBatch, $deleteBatch, $cleanupBatch;
+
+ public function doQuery( $db ) {
+ $archiveName = array();
+ foreach( $this->ids as $timestamp ) {
+ $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
+ }
+ return $db->select( 'oldimage', '*',
+ array(
+ 'oi_name' => $this->title->getDBkey(),
+ 'oi_archive_name' => $archiveNames
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'oi_timestamp DESC' )
+ );
+ }
- $m = explode('!',$oimage->archive_name,2);
- $timestamp = $m[0];
+ public function newItem( $row ) {
+ return new RevDel_FileItem( $this, $row );
+ }
- return $timestamp;
+ public function clearFileOps() {
+ $this->deleteBatch = array();
+ $this->storeBatch = array();
+ $this->cleanupBatch = array();
}
- /**
- * Update the revision's rev_deleted field
- * @param Revision $rev
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateRevision( $rev, $bitfield ) {
- $this->dbw->update( 'revision',
- array( 'rev_deleted' => $bitfield ),
- array( 'rev_id' => $rev->getId(),
- 'rev_page' => $rev->getPage() ),
- __METHOD__ );
+ public function doPreCommitUpdates() {
+ $status = Status::newGood();
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ if ( $this->storeBatch ) {
+ $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
+ }
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ if ( $this->deleteBatch ) {
+ $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
+ }
+ if ( !$status->isOK() ) {
+ // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
+ // modified (but destined for rollback) causes data loss
+ return $status;
+ }
+ if ( $this->cleanupBatch ) {
+ $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
+ }
+ return $status;
}
- /**
- * Update the revision's rev_deleted field
- * @param Revision $rev
- * @param Title $title
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateArchive( $rev, $title, $bitfield ) {
- $this->dbw->update( 'archive',
- array( 'ar_deleted' => $bitfield ),
- array( 'ar_namespace' => $title->getNamespace(),
- 'ar_title' => $title->getDBKey(),
- 'ar_timestamp' => $this->dbw->timestamp( $rev->getTimestamp() ),
- 'ar_rev_id' => $rev->getId() ),
- __METHOD__ );
+ public function doPostCommitUpdates() {
+ $file = wfLocalFile( $this->title );
+ $file->purgeCache();
+ $file->purgeDescription();
+ return Status::newGood();
}
- /**
- * Update the images's oi_deleted field
- * @param File $file
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateOldFiles( $file, $bitfield ) {
- $this->dbw->update( 'oldimage',
- array( 'oi_deleted' => $bitfield ),
- array( 'oi_name' => $file->getName(),
- 'oi_timestamp' => $this->dbw->timestamp( $file->getTimestamp() ) ),
- __METHOD__ );
+ public function getSuppressBit() {
+ return File::DELETED_RESTRICTED;
}
+}
- /**
- * Update the images's fa_deleted field
- * @param ArchivedFile $file
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateArchFiles( $file, $bitfield ) {
- $this->dbw->update( 'filearchive',
- array( 'fa_deleted' => $bitfield ),
- array( 'fa_id' => $file->getId() ),
- __METHOD__ );
+/**
+ * Item class for an oldimage table row
+ */
+class RevDel_FileItem extends RevDel_Item {
+ var $file;
+
+ public function __construct( $list, $row ) {
+ parent::__construct( $list, $row );
+ $this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
}
- /**
- * Update the logging log_deleted field
- * @param Row $row
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateLogs( $row, $bitfield ) {
- $this->dbw->update( 'logging',
- array( 'log_deleted' => $bitfield ),
- array( 'log_id' => $row->log_id ),
- __METHOD__ );
+ public function getId() {
+ $parts = explode( '!', $this->row->oi_archive_name );
+ return $parts[0];
}
- /**
- * Update the revision's recentchanges record if fields have been hidden
- * @param Revision $rev
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateRecentChangesEdits( $rev, $bitfield ) {
- $this->dbw->update( 'recentchanges',
- array( 'rc_deleted' => $bitfield,
- 'rc_patrolled' => 1 ),
- array( 'rc_this_oldid' => $rev->getId(),
- 'rc_timestamp' => $this->dbw->timestamp( $rev->getTimestamp() ) ),
- __METHOD__ );
+ public function canView() {
+ return $this->file->userCan( File::DELETED_RESTRICTED );
+ }
+
+ public function canViewContent() {
+ return $this->file->userCan( File::DELETED_FILE );
}
- /**
- * Update the revision's recentchanges record if fields have been hidden
- * @param Row $row
- * @param int $bitfield new rev_deleted bitfield value
- */
- function updateRecentChangesLog( $row, $bitfield ) {
- $this->dbw->update( 'recentchanges',
- array( 'rc_deleted' => $bitfield,
- 'rc_patrolled' => 1 ),
- array( 'rc_logid' => $row->log_id,
- 'rc_timestamp' => $row->log_timestamp ),
- __METHOD__ );
+ public function getBits() {
+ return $this->file->getVisibility();
+ }
+
+ public function setBits( $bits ) {
+ # Queue the file op
+ # FIXME: move to LocalFile.php
+ if ( $this->isDeleted() ) {
+ if ( $bits & File::DELETED_FILE ) {
+ # Still deleted
+ } else {
+ # Newly undeleted
+ $key = $this->file->getStorageKey();
+ $srcRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+ $this->list->storeBatch[] = array(
+ $this->file->repo->getVirtualUrl( 'deleted' ) . '/' . $srcRel,
+ 'public',
+ $this->file->getRel()
+ );
+ $this->list->cleanupBatch[] = $key;
+ }
+ } elseif ( $bits & File::DELETED_FILE ) {
+ # Newly deleted
+ $key = $this->file->getStorageKey();
+ $dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+ $this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
+ }
+
+ # Do the database operations
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'oldimage',
+ array( 'oi_deleted' => $bits ),
+ array(
+ 'oi_name' => $this->row->oi_name,
+ 'oi_timestamp' => $this->row->oi_timestamp,
+ 'oi_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+ return (bool)$dbw->affectedRows();
+ }
+
+ public function isDeleted() {
+ return $this->file->isDeleted( File::DELETED_FILE );
}
/**
- * Touch the page's cache invalidation timestamp; this forces cached
- * history views to refresh, so any newly hidden or shown fields will
- * update properly.
- * @param Title $title
+ * Get the link to the file.
+ * Overridden by RevDel_ArchivedFileItem.
*/
- function updatePage( $title ) {
- $title->invalidateCache();
- $title->purgeSquid();
- $title->touchLinks();
- // Extensions that require referencing previous revisions may need this
- wfRunHooks( 'ArticleRevisionVisiblitySet', array( &$title ) );
+ protected function getLink() {
+ global $wgLang, $wgUser;
+ $date = $wgLang->timeanddate( $this->file->getTimestamp(), true );
+ if ( $this->isDeleted() ) {
+ # Hidden files...
+ if ( !$this->canViewContent() ) {
+ $link = $date;
+ } else {
+ $link = $this->special->skin->link(
+ $this->special->getTitle(),
+ $date, array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $this->file->getArchiveName(),
+ 'token' => $wgUser->editToken( $this->file->getArchiveName() )
+ )
+ );
+ }
+ return '<span class="history-deleted">' . $link . '</span>';
+ } else {
+ # Regular files...
+ $url = $this->file->getUrl();
+ return Xml::element( 'a', array( 'href' => $this->file->getUrl() ), $date );
+ }
}
-
/**
- * Checks for a change in the bitfield for a certain option and updates the
- * provided array accordingly.
- *
- * @param String $desc Description to add to the array if the option was
- * enabled / disabled.
- * @param int $field The bitmask describing the single option.
- * @param int $diff The xor of the old and new bitfields.
- * @param array $arr The array to update.
+ * Generate a user tool link cluster if the current user is allowed to view it
+ * @return string HTML
*/
- function checkItem ( $desc, $field, $diff, $new, &$arr ) {
- if ( $diff & $field ) {
- $arr [ ( $new & $field ) ? 0 : 1 ][] = $desc;
+ protected function getUserTools() {
+ if( $this->file->userCan( Revision::DELETED_USER ) ) {
+ $link = $this->special->skin->userLink( $this->file->user, $this->file->user_text ) .
+ $this->special->skin->userToolLinks( $this->file->user, $this->file->user_text );
+ } else {
+ $link = wfMsgHtml( 'rev-deleted-user' );
}
+ if( $this->file->isDeleted( Revision::DELETED_USER ) ) {
+ return '<span class="history-deleted">' . $link . '</span>';
+ }
+ return $link;
}
/**
- * Gets an array describing the changes made to the visibilit of the revision.
- * If the resulting array is $arr, then $arr[0] will contain an array of strings
- * describing the items that were hidden, $arr[2] will contain an array of strings
- * describing the items that were unhidden, and $arr[3] will contain an array with
- * a single string, which can be one of "applied restrictions to sysops",
- * "removed restrictions from sysops", or null.
+ * Wrap and format the file's comment block, if the current
+ * user is allowed to view it.
*
- * @param int $n The new bitfield.
- * @param int $o The old bitfield.
- * @return An array as described above.
+ * @return string HTML
*/
- function getChanges ( $n, $o ) {
- $diff = $n ^ $o;
- $ret = array ( 0 => array(), 1 => array(), 2 => array() );
+ protected function getComment() {
+ if( $this->file->userCan( File::DELETED_COMMENT ) ) {
+ $block = $this->special->skin->commentBlock( $this->file->description );
+ } else {
+ $block = ' ' . wfMsgHtml( 'rev-deleted-comment' );
+ }
+ if( $this->file->isDeleted( File::DELETED_COMMENT ) ) {
+ return "<span class=\"history-deleted\">$block</span>";
+ }
+ return $block;
+ }
- $this->checkItem ( wfMsgForContent ( 'revdelete-content' ),
- Revision::DELETED_TEXT, $diff, $n, $ret );
- $this->checkItem ( wfMsgForContent ( 'revdelete-summary' ),
- Revision::DELETED_COMMENT, $diff, $n, $ret );
- $this->checkItem ( wfMsgForContent ( 'revdelete-uname' ),
- Revision::DELETED_USER, $diff, $n, $ret );
+ public function getHTML() {
+ global $wgLang;
+ $data =
+ wfMsg(
+ 'widthheight',
+ $wgLang->formatNum( $this->file->getWidth() ),
+ $wgLang->formatNum( $this->file->getHeight() )
+ ) .
+ ' (' .
+ wfMsgExt( 'nbytes', 'parsemag', $wgLang->formatNum( $this->file->getSize() ) ) .
+ ')';
+ $pageLink = $this->getLink();
+
+ return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
+ $data . ' ' . $this->getComment(). '</li>';
+ }
+}
- // Restriction application to sysops
- if ( $diff & Revision::DELETED_RESTRICTED ) {
- if ( $n & Revision::DELETED_RESTRICTED )
- $ret[2][] = wfMsgForContent ( 'revdelete-restricted' );
- else
- $ret[2][] = wfMsgForContent ( 'revdelete-unrestricted' );
- }
+/**
+ * List for filearchive table items
+ */
+class RevDel_ArchivedFileList extends RevDel_FileList {
+ var $type = 'filearchive';
+ var $idField = 'fa_id';
+ var $dateField = 'fa_timestamp';
+ var $authorIdField = 'fa_user';
+ var $authorNameField = 'fa_user_text';
+
+ public function doQuery( $db ) {
+ $ids = array_map( 'intval', $this->ids );
+ return $db->select( 'filearchive', '*',
+ array(
+ 'fa_name' => $this->title->getDBkey(),
+ 'fa_id' => $ids
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'fa_id DESC' )
+ );
+ }
- return $ret;
+ public function newItem( $row ) {
+ return new RevDel_ArchivedFileItem( $this, $row );
}
+}
- /**
- * Gets a log message to describe the given revision visibility change. This
- * message will be of the form "[hid {content, edit summary, username}];
- * [unhid {...}][applied restrictions to sysops] for $count revisions: $comment".
- *
- * @param int $count The number of effected revisions.
- * @param int $nbitfield The new bitfield for the revision.
- * @param int $obitfield The old bitfield for the revision.
- * @param string $comment The comment associated with the change.
- * @param bool $isForLog
- */
- function getLogMessage ( $count, $nbitfield, $obitfield, $comment, $isForLog = false ) {
- global $wgContLang;
+/**
+ * Item class for a filearchive table row
+ */
+class RevDel_ArchivedFileItem extends RevDel_FileItem {
+ public function __construct( $list, $row ) {
+ RevDel_Item::__construct( $list, $row );
+ $this->file = ArchivedFile::newFromRow( $row );
+ }
- $s = '';
- $changes = $this->getChanges( $nbitfield, $obitfield );
+ public function getId() {
+ return $this->row->fa_id;
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'filearchive',
+ array( 'fa_deleted' => $bits ),
+ array(
+ 'fa_id' => $this->row->fa_id,
+ 'fa_deleted' => $this->getBits(),
+ ),
+ __METHOD__
+ );
+ return (bool)$dbw->affectedRows();
+ }
- if ( count ( $changes[0] ) ) {
- $s .= wfMsgForContent ( 'revdelete-hid', implode ( ', ', $changes[0] ) );
+ protected function getLink() {
+ global $wgLang, $wgUser;
+ $date = $wgLang->timeanddate( $this->file->getTimestamp(), true );
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ $key = $this->file->getKey();
+ # Hidden files...
+ if( !$this->canViewContent() ) {
+ $link = $date;
+ } else {
+ $link = $this->special->skin->link( $undelete, $date, array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $key,
+ 'token' => $wgUser->editToken( $key )
+ )
+ );
+ }
+ if( $this->isDeleted() ) {
+ $link = '<span class="history-deleted">' . $link . '</span>';
}
+ return $link;
+ }
+}
- if ( count ( $changes[1] ) ) {
- if ($s) $s .= '; ';
+/**
+ * List for logging table items
+ */
+class RevDel_LogList extends RevDel_List {
+ var $type = 'logging';
+ var $idField = 'log_id';
+ var $dateField = 'log_timestamp';
+ var $authorIdField = 'log_user';
+ var $authorNameField = 'log_user_text';
+
+ public function doQuery( $db ) {
+ global $wgMessageCache;
+ $wgMessageCache->loadAllMessages();
+ $ids = array_map( 'intval', $this->ids );
+ return $db->select( 'logging', '*',
+ array( 'log_id' => $ids ),
+ __METHOD__,
+ array( 'ORDER BY' => 'log_id DESC' )
+ );
+ }
- $s .= wfMsgForContent ( 'revdelete-unhid', implode ( ', ', $changes[1] ) );
- }
+ public function newItem( $row ) {
+ return new RevDel_LogItem( $this, $row );
+ }
- if ( count ( $changes[2] )) {
- if ($s)
- $s .= ' (' . $changes[2][0] . ')';
- else
- $s = $changes[2][0];
- }
+ public function getSuppressBit() {
+ return Revision::DELETED_RESTRICTED;
+ }
- $msg = $isForLog ? 'logdelete-log-message' : 'revdelete-log-message';
- $ret = wfMsgExt ( $msg, array( 'parsemag', 'content' ),
- $s, $wgContLang->formatNum( $count ) );
+ public function getLogAction() {
+ return 'event';
+ }
- if ( $comment )
- $ret .= ": $comment";
+ public function getLogParams( $params ) {
+ return array(
+ implode( ',', $params['ids'] ),
+ "ofield={$params['oldBits']}",
+ "nfield={$params['newBits']}"
+ );
+ }
+}
- return $ret;
+/**
+ * Item class for a logging table row
+ */
+class RevDel_LogItem extends RevDel_Item {
+ public function canView() {
+ return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED );
+ }
+
+ public function canViewContent() {
+ return true; // none
+ }
+ public function getBits() {
+ return $this->row->log_deleted;
}
- /**
- * Record a log entry on the action
- * @param Title $title, page where item was removed from
- * @param int $count the number of revisions altered for this page
- * @param int $nbitfield the new _deleted value
- * @param int $obitfield the old _deleted value
- * @param string $comment
- * @param Title $target, the relevant page
- * @param string $param, URL param
- * @param Array $items
- */
- function updateLog( $title, $count, $nbitfield, $obitfield, $comment, $target, $param, $items = array() ) {
- // Put things hidden from sysops in the oversight log
- $logtype = ( ($nbitfield | $obitfield) & Revision::DELETED_RESTRICTED ) ? 'suppress' : 'delete';
- $log = new LogPage( $logtype );
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'recentchanges',
+ array(
+ 'rc_deleted' => $bits,
+ 'rc_patrolled' => 1
+ ),
+ array(
+ 'rc_logid' => $this->row->log_id,
+ 'rc_timestamp' => $this->row->log_timestamp // index
+ ),
+ __METHOD__
+ );
+ $dbw->update( 'logging',
+ array( 'log_deleted' => $bits ),
+ array(
+ 'log_id' => $this->row->log_id,
+ 'log_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+ return (bool)$dbw->affectedRows();
+ }
+
+ public function getHTML() {
+ global $wgLang;
- $reason = $this->getLogMessage ( $count, $nbitfield, $obitfield, $comment, $param == 'logid' );
+ $date = htmlspecialchars( $wgLang->timeanddate( $this->row->log_timestamp ) );
+ $paramArray = LogPage::extractParams( $this->row->log_params );
+ $title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
- if( $param == 'logid' ) {
- $params = array( implode( ',', $items) );
- $log->addEntry( 'event', $title, $reason, $params );
+ // Log link for this page
+ $loglink = $this->special->skin->link(
+ SpecialPage::getTitleFor( 'Log' ),
+ wfMsgHtml( 'log' ),
+ array(),
+ array( 'page' => $title->getPrefixedText() )
+ );
+ // Action text
+ if( !$this->canView() ) {
+ $action = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
} else {
- // Add params for effected page and ids
- $params = array( $param, implode( ',', $items) );
- $log->addEntry( 'revision', $title, $reason, $params );
+ $action = LogPage::actionText( $this->row->log_type, $this->row->log_action, $title,
+ $this->special->skin, $paramArray, true, true );
+ if( $this->row->log_deleted & LogPage::DELETED_ACTION )
+ $action = '<span class="history-deleted">' . $action . '</span>';
}
+ // User links
+ $userLink = $this->special->skin->userLink( $this->row->log_user,
+ User::WhoIs( $this->row->log_user ) );
+ if( LogEventsList::isDeleted($this->row,LogPage::DELETED_USER) ) {
+ $userLink = '<span class="history-deleted">' . $userLink . '</span>';
+ }
+ // Comment
+ $comment = $wgLang->getDirMark() . $this->special->skin->commentBlock( $this->row->log_comment );
+ if( LogEventsList::isDeleted($this->row,LogPage::DELETED_COMMENT) ) {
+ $comment = '<span class="history-deleted">' . $comment . '</span>';
+ }
+ return "<li>($loglink) $date $userLink $action $comment</li>";
}
}
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php
index cb783819..da054e02 100644
--- a/includes/specials/SpecialSearch.php
+++ b/includes/specials/SpecialSearch.php
@@ -29,16 +29,15 @@
* @param $par String: (default '')
*/
function wfSpecialSearch( $par = '' ) {
- global $wgRequest, $wgUser, $wgUseOldSearchUI;
+ global $wgRequest, $wgUser;
// Strip underscores from title parameter; most of the time we'll want
// text form here. But don't strip underscores from actual text params!
$titleParam = str_replace( '_', ' ', $par );
// Fetch the search term
$search = str_replace( "\n", " ", $wgRequest->getText( 'search', $titleParam ) );
- $class = $wgUseOldSearchUI ? 'SpecialSearchOld' : 'SpecialSearch';
- $searchPage = new $class( $wgRequest, $wgUser );
- if( $wgRequest->getVal( 'fulltext' )
- || !is_null( $wgRequest->getVal( 'offset' ))
+ $searchPage = new SpecialSearch( $wgRequest, $wgUser );
+ if( $wgRequest->getVal( 'fulltext' )
+ || !is_null( $wgRequest->getVal( 'offset' ))
|| !is_null( $wgRequest->getVal( 'searchx' )) )
{
$searchPage->showResults( $search );
@@ -74,7 +73,7 @@ class SpecialSearch {
$this->active = 'advanced';
$this->sk = $user->getSkin();
$this->didYouMeanHtml = ''; # html of did you mean... link
- $this->fulltext = $request->getVal('fulltext');
+ $this->fulltext = $request->getVal('fulltext');
}
/**
@@ -103,7 +102,7 @@ class SpecialSearch {
wfRunHooks( 'SpecialSearchNogomatch', array( &$t ) );
# If the feature is enabled, go straight to the edit page
if( $wgGoToEdit ) {
- $wgOut->redirect( $t->getFullURL( 'action=edit' ) );
+ $wgOut->redirect( $t->getFullURL( array( 'action' => 'edit' ) ) );
return;
}
}
@@ -114,11 +113,11 @@ class SpecialSearch {
* @param string $term
*/
public function showResults( $term ) {
- global $wgOut, $wgUser, $wgDisableTextSearch, $wgContLang;
+ global $wgOut, $wgUser, $wgDisableTextSearch, $wgContLang, $wgScript;
wfProfileIn( __METHOD__ );
-
+
$sk = $wgUser->getSkin();
-
+
$this->searchEngine = SearchEngine::create();
$search =& $this->searchEngine;
$search->setLimitOffset( $this->limit, $this->offset );
@@ -126,9 +125,9 @@ class SpecialSearch {
$search->showRedirects = $this->searchRedirects;
$search->prefix = $this->mPrefix;
$term = $search->transformSearchTerm($term);
-
+
$this->setupPage( $term );
-
+
if( $wgDisableTextSearch ) {
global $wgSearchForwardUrl;
if( $wgSearchForwardUrl ) {
@@ -152,10 +151,10 @@ class SpecialSearch {
wfProfileOut( __METHOD__ );
return;
}
-
+
$t = Title::newFromText( $term );
-
- // fetch search results
+
+ // fetch search results
$rewritten = $search->replacePrefixes($term);
$titleMatches = $search->searchTitle( $rewritten );
@@ -165,95 +164,116 @@ class SpecialSearch {
// did you mean... suggestions
if( $textMatches && $textMatches->hasSuggestion() ) {
$st = SpecialPage::getTitleFor( 'Search' );
+
# mirror Go/Search behaviour of original request ..
$didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() );
- if($this->fulltext != NULL)
- $didYouMeanParams['fulltext'] = $this->fulltext;
- $stParams = wfArrayToCGI(
+
+ if($this->fulltext != null)
+ $didYouMeanParams['fulltext'] = $this->fulltext;
+
+ $stParams = array_merge(
$didYouMeanParams,
$this->powerSearchOptions()
);
- $suggestLink = $sk->makeKnownLinkObj( $st,
- $textMatches->getSuggestionSnippet(),
- $stParams );
+
+ $suggestionSnippet = $textMatches->getSuggestionSnippet();
+
+ if( $suggestionSnippet == '' )
+ $suggestionSnippet = null;
+
+ $suggestLink = $sk->linkKnown(
+ $st,
+ $suggestionSnippet,
+ array(),
+ $stParams
+ );
$this->didYouMeanHtml = '<div class="searchdidyoumean">'.wfMsg('search-suggest',$suggestLink).'</div>';
}
-
- // start rendering the page
- $wgOut->addHtml(
- Xml::openElement( 'table', array( 'border'=>0, 'cellpadding'=>0, 'cellspacing'=>0 ) ) .
+ // start rendering the page
+ $wgOut->addHtml(
+ Xml::openElement(
+ 'form',
+ array(
+ 'id' => ( $this->searchAdvanced ? 'powersearch' : 'search' ),
+ 'method' => 'get',
+ 'action' => $wgScript
+ )
+ )
+ );
+ $wgOut->addHtml(
+ Xml::openElement( 'table', array( 'id'=>'mw-search-top-table', 'border'=>0, 'cellpadding'=>0, 'cellspacing'=>0 ) ) .
Xml::openElement( 'tr' ) .
Xml::openElement( 'td' ) . "\n" .
- ( $this->searchAdvanced ? $this->powerSearchBox( $term ) : $this->shortDialog( $term ) ) .
+ $this->shortDialog( $term ) .
Xml::closeElement('td') .
Xml::closeElement('tr') .
Xml::closeElement('table')
);
-
+
// Sometimes the search engine knows there are too many hits
if( $titleMatches instanceof SearchResultTooMany ) {
$wgOut->addWikiText( '==' . wfMsg( 'toomanymatches' ) . "==\n" );
wfProfileOut( __METHOD__ );
return;
}
-
+
$filePrefix = $wgContLang->getFormattedNsText(NS_FILE).':';
- if( '' === trim( $term ) || $filePrefix === trim( $term ) ) {
- $wgOut->addHTML( $this->searchAdvanced ? $this->powerSearchFocus() : $this->searchFocus() );
+ if( trim( $term ) === '' || $filePrefix === trim( $term ) ) {
+ $wgOut->addHTML( $this->searchFocus() );
+ $wgOut->addHTML( $this->formHeader($term, 0, 0));
+ if( $this->searchAdvanced ) {
+ $wgOut->addHTML( $this->powerSearchBox( $term ) );
+ }
+ $wgOut->addHTML( '</form>' );
// Empty query -- straight view of search form
wfProfileOut( __METHOD__ );
return;
}
- // show direct page/create link
- if( !is_null($t) ) {
- if( !$t->exists() ) {
- $wgOut->addWikiMsg( 'searchmenu-new', wfEscapeWikiText( $t->getPrefixedText() ) );
- } else {
- $wgOut->addWikiMsg( 'searchmenu-exists', wfEscapeWikiText( $t->getPrefixedText() ) );
- }
- }
-
// Get number of results
- $titleMatchesSQL = $titleMatches ? $titleMatches->numRows() : 0;
- $textMatchesSQL = $textMatches ? $textMatches->numRows() : 0;
+ $titleMatchesNum = $titleMatches ? $titleMatches->numRows() : 0;
+ $textMatchesNum = $textMatches ? $textMatches->numRows() : 0;
// Total initial query matches (possible false positives)
- $numSQL = $titleMatchesSQL + $textMatchesSQL;
+ $num = $titleMatchesNum + $textMatchesNum;
+
// Get total actual results (after second filtering, if any)
$numTitleMatches = $titleMatches && !is_null( $titleMatches->getTotalHits() ) ?
- $titleMatches->getTotalHits() : $titleMatchesSQL;
+ $titleMatches->getTotalHits() : $titleMatchesNum;
$numTextMatches = $textMatches && !is_null( $textMatches->getTotalHits() ) ?
- $textMatches->getTotalHits() : $textMatchesSQL;
- $totalRes = $numTitleMatches + $numTextMatches;
-
+ $textMatches->getTotalHits() : $textMatchesNum;
+
+ // get total number of results if backend can calculate it
+ $totalRes = 0;
+ if($titleMatches && !is_null( $titleMatches->getTotalHits() ) )
+ $totalRes += $titleMatches->getTotalHits();
+ if($textMatches && !is_null( $textMatches->getTotalHits() ))
+ $totalRes += $textMatches->getTotalHits();
+
// show number of results and current offset
- if( $numSQL > 0 ) {
- if( $numSQL > 0 ) {
- $top = wfMsgExt('showingresultstotal', array( 'parseinline' ),
- $this->offset+1, $this->offset+$numSQL, $totalRes, $numSQL );
- } elseif( $numSQL >= $this->limit ) {
- $top = wfShowingResults( $this->offset, $this->limit );
- } else {
- $top = wfShowingResultsNum( $this->offset, $this->limit, $numSQL );
- }
- $wgOut->addHTML( "<p class='mw-search-numberresults'>{$top}</p>\n" );
+ $wgOut->addHTML( $this->formHeader($term, $num, $totalRes));
+ if( $this->searchAdvanced ) {
+ $wgOut->addHTML( $this->powerSearchBox( $term ) );
}
+
+ $wgOut->addHtml( Xml::closeElement( 'form' ) );
+ $wgOut->addHtml( "<div class='searchresults'>" );
// prev/next links
- if( $numSQL || $this->offset ) {
+ if( $num || $this->offset ) {
+ // Show the create link ahead
+ $this->showCreateLink( $t );
$prevnext = wfViewPrevNext( $this->offset, $this->limit,
SpecialPage::getTitleFor( 'Search' ),
wfArrayToCGI( $this->powerSearchOptions(), array( 'search' => $term ) ),
- max( $titleMatchesSQL, $textMatchesSQL ) < $this->limit
+ max( $titleMatchesNum, $textMatchesNum ) < $this->limit
);
- $wgOut->addHTML( "<p class='mw-search-pager-top'>{$prevnext}</p>\n" );
+ //$wgOut->addHTML( "<p class='mw-search-pager-top'>{$prevnext}</p>\n" );
wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
} else {
wfRunHooks( 'SpecialSearchNoResults', array( $term ) );
- }
+ }
- $wgOut->addHtml( "<div class='searchresults'>" );
if( $titleMatches ) {
if( $numTitleMatches > 0 ) {
$wgOut->wrapWikiMsg( "==$1==\n", 'titlematches' );
@@ -265,10 +285,10 @@ class SpecialSearch {
// output appropriate heading
if( $numTextMatches > 0 && $numTitleMatches > 0 ) {
// if no title matches the heading is redundant
- $wgOut->wrapWikiMsg( "==$1==\n", 'textmatches' );
+ $wgOut->wrapWikiMsg( "==$1==\n", 'textmatches' );
} elseif( $totalRes == 0 ) {
# Don't show the 'no text matches' if we received title matches
- $wgOut->wrapWikiMsg( "==$1==\n", 'notextmatches' );
+ # $wgOut->wrapWikiMsg( "==$1==\n", 'notextmatches' );
}
// show interwiki results if any
if( $textMatches->hasInterwikiResults() ) {
@@ -281,20 +301,41 @@ class SpecialSearch {
$textMatches->free();
}
- if( $totalRes === 0 ) {
- $wgOut->addWikiMsg( 'search-nonefound' );
+ if( $num === 0 ) {
+ $wgOut->addWikiMsg( 'search-nonefound', wfEscapeWikiText( $term ) );
+ $this->showCreateLink( $t );
}
$wgOut->addHtml( "</div>" );
- if( $totalRes === 0 ) {
- $wgOut->addHTML( $this->searchAdvanced ? $this->powerSearchFocus() : $this->searchFocus() );
+ if( $num === 0 ) {
+ $wgOut->addHTML( $this->searchFocus() );
}
- if( $numSQL || $this->offset ) {
+ if( $num || $this->offset ) {
$wgOut->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
}
wfProfileOut( __METHOD__ );
}
+ protected function showCreateLink( $t ) {
+ global $wgOut;
+
+ // show direct page/create link if applicable
+ $messageName = null;
+ if( !is_null($t) ) {
+ if( $t->isKnown() ) {
+ $messageName = 'searchmenu-exists';
+ } elseif( $t->userCan( 'create' ) ) {
+ $messageName = 'searchmenu-new';
+ }
+ }
+ if( $messageName ) {
+ $wgOut->addWikiMsg( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) );
+ } else {
+ // preserve the paragraph for margins etc...
+ $wgOut->addHtml( '<p></p>' );
+ }
+ }
+
/**
*
*/
@@ -304,24 +345,25 @@ class SpecialSearch {
$nsAllSet = array_keys( SearchEngine::searchableNamespaces() );
if( $this->searchAdvanced )
$this->active = 'advanced';
- else if( $this->namespaces === NS_FILE || $this->startsWithImage( $term ) )
- $this->active = 'images';
- elseif( $this->namespaces === $nsAllSet )
- $this->active = 'all';
- elseif( $this->namespaces === SearchEngine::defaultNamespaces() )
- $this->active = 'default';
- elseif( $this->namespaces === SearchEngine::projectNamespaces() )
- $this->active = 'project';
- else
- $this->active = 'advanced';
+ else {
+ $profiles = $this->getSearchProfiles();
+
+ foreach( $profiles as $key => $data ) {
+ if ( $this->namespaces == $data['namespaces'] && $key != 'advanced')
+ $this->active = $key;
+ }
+
+ }
# Should advanced UI be used?
$this->searchAdvanced = ($this->active === 'advanced');
if( !empty( $term ) ) {
$wgOut->setPageTitle( wfMsg( 'searchresults') );
$wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term ) ) );
- }
+ }
$wgOut->setArticleRelated( false );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
+ // add javascript specific to special:search
+ $wgOut->addScriptFile( 'search.js' );
}
/**
@@ -358,8 +400,8 @@ class SpecialSearch {
}
/**
- * Show whole set of results
- *
+ * Show whole set of results
+ *
* @param SearchResultSet $matches
*/
protected function showMatches( &$matches ) {
@@ -403,7 +445,20 @@ class SpecialSearch {
$sk = $wgUser->getSkin();
$t = $result->getTitle();
- $link = $this->sk->makeKnownLinkObj( $t, $result->getTitleSnippet($terms));
+ $titleSnippet = $result->getTitleSnippet($terms);
+
+ if( $titleSnippet == '' )
+ $titleSnippet = null;
+
+ $link_t = clone $t;
+
+ wfRunHooks( 'ShowSearchHitTitle',
+ array( &$link_t, &$titleSnippet, $result, $terms, $this ) );
+
+ $link = $this->sk->linkKnown(
+ $link_t,
+ $titleSnippet
+ );
//If page content is not readable, just return the title.
//This is not quite safe, but better than showing excerpts from non-readable pages
@@ -427,19 +482,42 @@ class SpecialSearch {
$sectionTitle = $result->getSectionTitle();
$sectionText = $result->getSectionSnippet($terms);
$redirect = '';
- if( !is_null($redirectTitle) )
- $redirect = "<span class='searchalttitle'>"
- .wfMsg('search-redirect',$this->sk->makeKnownLinkObj( $redirectTitle, $redirectText))
- ."</span>";
+
+ if( !is_null($redirectTitle) ) {
+ if( $redirectText == '' )
+ $redirectText = null;
+
+ $redirect = "<span class='searchalttitle'>" .
+ wfMsg(
+ 'search-redirect',
+ $this->sk->linkKnown(
+ $redirectTitle,
+ $redirectText
+ )
+ ) .
+ "</span>";
+ }
+
$section = '';
- if( !is_null($sectionTitle) )
- $section = "<span class='searchalttitle'>"
- .wfMsg('search-section', $this->sk->makeKnownLinkObj( $sectionTitle, $sectionText))
- ."</span>";
+
+
+ if( !is_null($sectionTitle) ) {
+ if( $sectionText == '' )
+ $sectionText = null;
+
+ $section = "<span class='searchalttitle'>" .
+ wfMsg(
+ 'search-section', $this->sk->linkKnown(
+ $sectionTitle,
+ $sectionText
+ )
+ ) .
+ "</span>";
+ }
// format text extract
$extract = "<div class='searchresult'>".$result->getTextSnippet($terms)."</div>";
-
+
// format score
if( is_null( $result->getScore() ) ) {
// Search engine doesn't report scoring info
@@ -454,20 +532,32 @@ class SpecialSearch {
$byteSize = $result->getByteSize();
$wordCount = $result->getWordCount();
$timestamp = $result->getTimestamp();
- $size = wfMsgExt( 'search-result-size', array( 'parsemag', 'escape' ),
- $this->sk->formatSize( $byteSize ), $wordCount );
+ $size = wfMsgExt(
+ 'search-result-size',
+ array( 'parsemag', 'escape' ),
+ $this->sk->formatSize( $byteSize ),
+ $wgLang->formatNum( $wordCount )
+ );
$date = $wgLang->timeanddate( $timestamp );
// link to related articles if supported
$related = '';
if( $result->hasRelated() ) {
$st = SpecialPage::getTitleFor( 'Search' );
- $stParams = wfArrayToCGI( $this->powerSearchOptions(),
- array('search' => wfMsgForContent('searchrelated').':'.$t->getPrefixedText(),
- 'fulltext' => wfMsg('search') ));
-
- $related = ' -- ' . $sk->makeKnownLinkObj( $st,
- wfMsg('search-relatedarticle'), $stParams );
+ $stParams = array_merge(
+ $this->powerSearchOptions(),
+ array(
+ 'search' => wfMsgForContent( 'searchrelated' ) . ':' . $t->getPrefixedText(),
+ 'fulltext' => wfMsg( 'search' )
+ )
+ );
+
+ $related = ' -- ' . $sk->linkKnown(
+ $st,
+ wfMsg('search-relatedarticle'),
+ array(),
+ $stParams
+ );
}
// Include a thumbnail for media files...
@@ -508,7 +598,7 @@ class SpecialSearch {
/**
* Show results from other wikis
- *
+ *
* @param SearchResultSet $matches
*/
protected function showInterwiki( &$matches, $query ) {
@@ -517,7 +607,7 @@ class SpecialSearch {
$terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
$out = "<div id='mw-search-interwiki'><div id='mw-search-interwiki-caption'>".
- wfMsg('search-interwiki-caption')."</div>\n";
+ wfMsg('search-interwiki-caption')."</div>\n";
$off = $this->offset + 1;
$out .= "<ul class='mw-search-iwresults'>\n";
@@ -527,15 +617,15 @@ class SpecialSearch {
foreach($customLines as $line) {
$parts = explode(":",$line,2);
if(count($parts) == 2) // validate line
- $customCaptions[$parts[0]] = $parts[1];
+ $customCaptions[$parts[0]] = $parts[1];
}
-
+
$prev = null;
while( $result = $matches->next() ) {
$out .= $this->showInterwikiHit( $result, $prev, $terms, $query, $customCaptions );
$prev = $result->getInterwikiPrefix();
}
- // FIXME: should support paging in a non-confusing way (not sure how though, maybe via ajax)..
+ // TODO: should support paging in a non-confusing way (not sure how though, maybe via ajax)..
$out .= "</ul></div>\n";
// convert the whole thing to desired language variant
@@ -543,63 +633,88 @@ class SpecialSearch {
wfProfileOut( __METHOD__ );
return $out;
}
-
+
/**
* Show single interwiki link
*
* @param SearchResult $result
* @param string $lastInterwiki
* @param array $terms
- * @param string $query
+ * @param string $query
* @param array $customCaptions iw prefix -> caption
*/
protected function showInterwikiHit( $result, $lastInterwiki, $terms, $query, $customCaptions) {
wfProfileIn( __METHOD__ );
global $wgContLang, $wgLang;
-
+
if( $result->isBrokenTitle() ) {
wfProfileOut( __METHOD__ );
return "<!-- Broken link in search result -->\n";
}
-
+
$t = $result->getTitle();
- $link = $this->sk->makeKnownLinkObj( $t, $result->getTitleSnippet($terms));
+ $titleSnippet = $result->getTitleSnippet($terms);
+
+ if( $titleSnippet == '' )
+ $titleSnippet = null;
+
+ $link = $this->sk->linkKnown(
+ $t,
+ $titleSnippet
+ );
// format redirect if any
$redirectTitle = $result->getRedirectTitle();
$redirectText = $result->getRedirectSnippet($terms);
$redirect = '';
- if( !is_null($redirectTitle) )
- $redirect = "<span class='searchalttitle'>"
- .wfMsg('search-redirect',$this->sk->makeKnownLinkObj( $redirectTitle, $redirectText))
- ."</span>";
+ if( !is_null($redirectTitle) ) {
+ if( $redirectText == '' )
+ $redirectText = null;
+
+ $redirect = "<span class='searchalttitle'>" .
+ wfMsg(
+ 'search-redirect',
+ $this->sk->linkKnown(
+ $redirectTitle,
+ $redirectText
+ )
+ ) .
+ "</span>";
+ }
$out = "";
- // display project name
+ // display project name
if(is_null($lastInterwiki) || $lastInterwiki != $t->getInterwiki()) {
if( key_exists($t->getInterwiki(),$customCaptions) )
// captions from 'search-interwiki-custom'
$caption = $customCaptions[$t->getInterwiki()];
else{
- // default is to show the hostname of the other wiki which might suck
+ // default is to show the hostname of the other wiki which might suck
// if there are many wikis on one hostname
$parsed = parse_url($t->getFullURL());
- $caption = wfMsg('search-interwiki-default', $parsed['host']);
- }
+ $caption = wfMsg('search-interwiki-default', $parsed['host']);
+ }
// "more results" link (special page stuff could be localized, but we might not know target lang)
- $searchTitle = Title::newFromText($t->getInterwiki().":Special:Search");
- $searchLink = $this->sk->makeKnownLinkObj( $searchTitle, wfMsg('search-interwiki-more'),
- wfArrayToCGI(array('search' => $query, 'fulltext' => 'Search')));
+ $searchTitle = Title::newFromText($t->getInterwiki().":Special:Search");
+ $searchLink = $this->sk->linkKnown(
+ $searchTitle,
+ wfMsg('search-interwiki-more'),
+ array(),
+ array(
+ 'search' => $query,
+ 'fulltext' => 'Search'
+ )
+ );
$out .= "</ul><div class='mw-search-interwiki-project'><span class='mw-search-interwiki-more'>
{$searchLink}</span>{$caption}</div>\n<ul>";
}
- $out .= "<li>{$link} {$redirect}</li>\n";
+ $out .= "<li>{$link} {$redirect}</li>\n";
wfProfileOut( __METHOD__ );
return $out;
}
-
+
/**
* Generates the power search box at bottom of [[Special:Search]]
@@ -607,172 +722,241 @@ class SpecialSearch {
* @return $out string: HTML form
*/
protected function powerSearchBox( $term ) {
- global $wgScript;
-
- $namespaces = SearchEngine::searchableNamespaces();
-
- $tables = $this->namespaceTables( $namespaces );
-
- $redirect = Xml::check( 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' ) );
- $redirectLabel = Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' );
- $searchField = Xml::inputLabel( wfMsg('powersearch-field'), 'search', 'powerSearchText', 50, $term,
- array( 'type' => 'text') );
- $searchButton = Xml::submitButton( wfMsg( 'powersearch' ), array( 'name' => 'fulltext' )) . "\n";
- $searchTitle = SpecialPage::getTitleFor( 'Search' );
+ global $wgScript, $wgContLang;
- $redirectText = '';
- // show redirects check only if backend supports it
- if( $this->searchEngine->acceptListRedirects() ) {
- $redirectText = "<p>". $redirect . " " . $redirectLabel ."</p>";
+ // Groups namespaces into rows according to subject
+ $rows = array();
+ foreach( SearchEngine::searchableNamespaces() as $namespace => $name ) {
+ $subject = MWNamespace::getSubject( $namespace );
+ if( !array_key_exists( $subject, $rows ) ) {
+ $rows[$subject] = "";
+ }
+ $name = str_replace( '_', ' ', $name );
+ if( $name == '' ) {
+ $name = wfMsg( 'blanknamespace' );
+ }
+ $rows[$subject] .=
+ Xml::openElement(
+ 'td', array( 'style' => 'white-space: nowrap' )
+ ) .
+ Xml::checkLabel(
+ $name,
+ "ns{$namespace}",
+ "mw-search-ns{$namespace}",
+ in_array( $namespace, $this->namespaces )
+ ) .
+ Xml::closeElement( 'td' );
}
+ $rows = array_values( $rows );
+ $numRows = count( $rows );
- $out = Xml::openElement( 'form', array( 'id' => 'powersearch', 'method' => 'get', 'action' => $wgScript ) ) .
- Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n" .
- "<p>" .
- wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) .
- "</p>\n" .
- '<input type="hidden" name="advanced" value="'.$this->searchAdvanced."\"/>\n".
- $tables .
- "<hr style=\"clear: both;\" />\n".
- $redirectText ."\n".
- "<div style=\"padding-top:2px;padding-bottom:2px;\">".
- $searchField .
- "&nbsp;" .
- Xml::hidden( 'fulltext', 'Advanced search' ) . "\n" .
- $searchButton .
- "</div>".
- "</form>";
- $t = Title::newFromText( $term );
- /* if( $t != null && count($this->namespaces) === 1 ) {
- $out .= wfMsgExt( 'searchmenu-prefix', array('parseinline'), $term );
- } */
- return Xml::openElement( 'fieldset', array('id' => 'mw-searchoptions','style' => 'margin:0em;') ) .
+ // Lays out namespaces in multiple floating two-column tables so they'll
+ // be arranged nicely while still accommodating different screen widths
+ $namespaceTables = '';
+ for( $i = 0; $i < $numRows; $i += 4 ) {
+ $namespaceTables .= Xml::openElement(
+ 'table',
+ array( 'cellpadding' => 0, 'cellspacing' => 0, 'border' => 0 )
+ );
+ for( $j = $i; $j < $i + 4 && $j < $numRows; $j++ ) {
+ $namespaceTables .= Xml::tags( 'tr', null, $rows[$j] );
+ }
+ $namespaceTables .= Xml::closeElement( 'table' );
+ }
+ // Show redirects check only if backend supports it
+ $redirects = '';
+ if( $this->searchEngine->acceptListRedirects() ) {
+ $redirects =
+ Xml::check(
+ 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' )
+ ) .
+ ' ' .
+ Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' );
+ }
+ // Return final output
+ return
+ Xml::openElement(
+ 'fieldset',
+ array( 'id' => 'mw-searchoptions', 'style' => 'margin:0em;' )
+ ) .
Xml::element( 'legend', null, wfMsg('powersearch-legend') ) .
- $this->formHeader($term) . $out . $this->didYouMeanHtml .
+ Xml::tags( 'h4', null, wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) ) .
+ Xml::tags(
+ 'div',
+ array( 'id' => 'mw-search-togglebox' ),
+ Xml::label( wfMsg( 'powersearch-togglelabel' ), 'mw-search-togglelabel' ) .
+ Xml::element(
+ 'input',
+ array(
+ 'type'=>'button',
+ 'id' => 'mw-search-toggleall',
+ 'onclick' => 'mwToggleSearchCheckboxes("all");',
+ 'value' => wfMsg( 'powersearch-toggleall' )
+ )
+ ) .
+ Xml::element(
+ 'input',
+ array(
+ 'type'=>'button',
+ 'id' => 'mw-search-togglenone',
+ 'onclick' => 'mwToggleSearchCheckboxes("none");',
+ 'value' => wfMsg( 'powersearch-togglenone' )
+ )
+ )
+ ) .
+ Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
+ $namespaceTables .
+ Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
+ $redirects .
+ Xml::hidden( 'title', SpecialPage::getTitleFor( 'Search' )->getPrefixedText() ) .
+ Xml::hidden( 'advanced', $this->searchAdvanced ) .
+ Xml::hidden( 'fulltext', 'Advanced search' ) .
Xml::closeElement( 'fieldset' );
}
-
+
protected function searchFocus() {
- global $wgJsMimeType;
- return "<script type=\"$wgJsMimeType\">" .
+ $id = $this->searchAdvanced ? 'powerSearchText' : 'searchText';
+ return Html::inlineScript(
"hookEvent(\"load\", function() {" .
- "document.getElementById('searchText').focus();" .
- "});" .
- "</script>";
+ "document.getElementById('$id').focus();" .
+ "});" );
}
+
+ protected function getSearchProfiles() {
+ // Builds list of Search Types (profiles)
+ $nsAllSet = array_keys( SearchEngine::searchableNamespaces() );
+
+ $profiles = array(
+ 'default' => array(
+ 'message' => 'searchprofile-articles',
+ 'tooltip' => 'searchprofile-articles-tooltip',
+ 'namespaces' => SearchEngine::defaultNamespaces(),
+ 'namespace-messages' => SearchEngine::namespacesAsText(
+ SearchEngine::defaultNamespaces()
+ ),
+ ),
+ 'images' => array(
+ 'message' => 'searchprofile-images',
+ 'tooltip' => 'searchprofile-images-tooltip',
+ 'namespaces' => array( NS_FILE ),
+ ),
+ 'help' => array(
+ 'message' => 'searchprofile-project',
+ 'tooltip' => 'searchprofile-project-tooltip',
+ 'namespaces' => SearchEngine::helpNamespaces(),
+ 'namespace-messages' => SearchEngine::namespacesAsText(
+ SearchEngine::helpNamespaces()
+ ),
+ ),
+ 'all' => array(
+ 'message' => 'searchprofile-everything',
+ 'tooltip' => 'searchprofile-everything-tooltip',
+ 'namespaces' => $nsAllSet,
+ ),
+ 'advanced' => array(
+ 'message' => 'searchprofile-advanced',
+ 'tooltip' => 'searchprofile-advanced-tooltip',
+ 'namespaces' => $this->namespaces,
+ 'parameters' => array( 'advanced' => 1 ),
+ )
+ );
+
+ wfRunHooks( 'SpecialSearchProfiles', array( &$profiles ) );
- protected function powerSearchFocus() {
- global $wgJsMimeType;
- return "<script type=\"$wgJsMimeType\">" .
- "hookEvent(\"load\", function() {" .
- "document.getElementById('powerSearchText').focus();" .
- "});" .
- "</script>";
+ foreach( $profiles as $key => &$data ) {
+ sort($data['namespaces']);
+ }
+
+ return $profiles;
}
- protected function formHeader( $term ) {
- global $wgContLang, $wgCanonicalNamespaceNames, $wgLang;
-
- $sep = '&nbsp;&nbsp;&nbsp;';
- $out = Xml::openElement('div', array( 'style' => 'padding-bottom:0.5em;' ) );
-
+ protected function formHeader( $term, $resultsShown, $totalNum ) {
+ global $wgContLang, $wgLang;
+
+ $out = Xml::openElement('div', array( 'class' => 'mw-search-formheader' ) );
+
$bareterm = $term;
- if( $this->startsWithImage( $term ) )
- $bareterm = substr( $term, strpos( $term, ':' ) + 1 ); // delete all/image prefix
-
- $nsAllSet = array_keys( SearchEngine::searchableNamespaces() );
-
- // search profiles headers
- $m = wfMsg( 'searchprofile-articles' );
- $tt = wfMsg( 'searchprofile-articles-tooltip',
- $wgLang->commaList( SearchEngine::namespacesAsText( SearchEngine::defaultNamespaces() ) ) );
- if( $this->active == 'default' ) {
- $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m );
- } else {
- $out .= $this->makeSearchLink( $bareterm, SearchEngine::defaultNamespaces(), $m, $tt );
+ if( $this->startsWithImage( $term ) ) {
+ // Deletes prefixes
+ $bareterm = substr( $term, strpos( $term, ':' ) + 1 );
}
- $out .= $sep;
+
- $m = wfMsg( 'searchprofile-images' );
- $tt = wfMsg( 'searchprofile-images-tooltip' );
- if( $this->active == 'images' ) {
- $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m );
- } else {
- $imageTextForm = $wgContLang->getFormattedNsText(NS_FILE).':'.$bareterm;
- $out .= $this->makeSearchLink( $imageTextForm, array( NS_FILE ) , $m, $tt );
+ $profiles = $this->getSearchProfiles();
+
+ // Outputs XML for Search Types
+ $out .= Xml::openElement( 'div', array( 'class' => 'search-types' ) );
+ $out .= Xml::openElement( 'ul' );
+ foreach ( $profiles as $id => $profile ) {
+ $tooltipParam = isset( $profile['namespace-messages'] ) ?
+ $wgLang->commaList( $profile['namespace-messages'] ) : null;
+ $out .= Xml::tags(
+ 'li',
+ array(
+ 'class' => $this->active == $id ? 'current' : 'normal'
+ ),
+ $this->makeSearchLink(
+ $bareterm,
+ $profile['namespaces'],
+ wfMsg( $profile['message'] ),
+ wfMsg( $profile['tooltip'], $tooltipParam ),
+ isset( $profile['parameters'] ) ? $profile['parameters'] : array()
+ )
+ );
}
- $out .= $sep;
+ $out .= Xml::closeElement( 'ul' );
+ $out .= Xml::closeElement('div') ;
- $m = wfMsg( 'searchprofile-project' );
- $tt = wfMsg( 'searchprofile-project-tooltip',
- $wgLang->commaList( SearchEngine::namespacesAsText( SearchEngine::projectNamespaces() ) ) );
- if( $this->active == 'project' ) {
- $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m );
- } else {
- $out .= $this->makeSearchLink( $bareterm, SearchEngine::projectNamespaces(), $m, $tt );
- }
- $out .= $sep;
-
- $m = wfMsg( 'searchprofile-everything' );
- $tt = wfMsg( 'searchprofile-everything-tooltip' );
- if( $this->active == 'all' ) {
- $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m );
- } else {
- $out .= $this->makeSearchLink( $bareterm, $nsAllSet, $m, $tt );
+ // Results-info
+ if ( $resultsShown > 0 ) {
+ if ( $totalNum > 0 ){
+ $top = wfMsgExt( 'showingresultsheader', array( 'parseinline' ),
+ $wgLang->formatNum( $this->offset + 1 ),
+ $wgLang->formatNum( $this->offset + $resultsShown ),
+ $wgLang->formatNum( $totalNum ),
+ wfEscapeWikiText( $term ),
+ $wgLang->formatNum( $resultsShown )
+ );
+ } elseif ( $resultsShown >= $this->limit ) {
+ $top = wfShowingResults( $this->offset, $this->limit );
+ } else {
+ $top = wfShowingResultsNum( $this->offset, $this->limit, $resultsShown );
+ }
+ $out .= Xml::tags( 'div', array( 'class' => 'results-info' ),
+ Xml::tags( 'ul', null, Xml::tags( 'li', null, $top ) )
+ );
}
- $out .= $sep;
- $m = wfMsg( 'searchprofile-advanced' );
- $tt = wfMsg( 'searchprofile-advanced-tooltip' );
- if( $this->active == 'advanced' ) {
- $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m );
- } else {
- $out .= $this->makeSearchLink( $bareterm, $this->namespaces, $m, $tt, array( 'advanced' => '1' ) );
+ $out .= Xml::element( 'div', array( 'style' => 'clear:both' ), '', false );
+ $out .= Xml::closeElement('div');
+
+ // Adds hidden namespace fields
+ if ( !$this->searchAdvanced ) {
+ foreach( $this->namespaces as $ns ) {
+ $out .= Xml::hidden( "ns{$ns}", '1' );
+ }
}
- $out .= Xml::closeElement('div') ;
return $out;
}
-
+
protected function shortDialog( $term ) {
- global $wgScript;
$searchTitle = SpecialPage::getTitleFor( 'Search' );
$searchable = SearchEngine::searchableNamespaces();
- $out = Xml::openElement( 'form', array( 'id' => 'search', 'method' => 'get', 'action' => $wgScript ) );
- $out .= Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n";
- // show namespaces only for advanced search
- if( $this->active == 'advanced' ) {
- $active = array();
- foreach( $this->namespaces as $ns ) {
- $active[$ns] = $searchable[$ns];
- }
- $out .= wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) . "<br/>\n";
- $out .= $this->namespaceTables( $active, 1 )."<br/>\n";
- // Still keep namespace settings otherwise, but don't show them
- } else {
- foreach( $this->namespaces as $ns ) {
- $out .= Xml::hidden( "ns{$ns}", '1' );
- }
- }
+ $out = Html::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n";
// Keep redirect setting
- $out .= Xml::hidden( "redirs", (int)$this->searchRedirects );
+ $out .= Html::hidden( "redirs", (int)$this->searchRedirects ) . "\n";
// Term box
- $out .= Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'searchText' ) ) . "\n";
- $out .= Xml::hidden( 'fulltext', 'Search' );
- $out .= Xml::submitButton( wfMsg( 'searchbutton' ), array( 'name' => 'fulltext' ) );
- $out .= ' (' . wfMsgExt('searchmenu-help',array('parseinline') ) . ')';
- $out .= Xml::closeElement( 'form' );
- // Add prefix link for single-namespace searches
- $t = Title::newFromText( $term );
- /*if( $t != null && count($this->namespaces) === 1 ) {
- $out .= wfMsgExt( 'searchmenu-prefix', array('parseinline'), $term );
- }*/
- return Xml::openElement( 'fieldset', array('id' => 'mw-searchoptions','style' => 'margin:0em;') ) .
- Xml::element( 'legend', null, wfMsg('searchmenu-legend') ) .
- $this->formHeader($term) . $out . $this->didYouMeanHtml .
- Xml::closeElement( 'fieldset' );
+ $out .= Html::input( 'search', $term, 'search', array(
+ 'id' => $this->searchAdvanced ? 'powerSearchText' : 'searchText',
+ 'size' => '50',
+ 'autofocus'
+ ) ) . "\n";
+ $out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
+ $out .= Xml::submitButton( wfMsg( 'searchbutton' ) ) . "\n";
+ return $out . $this->didYouMeanHtml;
}
-
+
/** Make a search link with some target namespaces */
protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params=array() ) {
$opt = $params;
@@ -781,18 +965,30 @@ class SpecialSearch {
}
$opt['redirs'] = $this->searchRedirects ? 1 : 0;
- $st = SpecialPage::getTitleFor( 'Search' );
- $stParams = wfArrayToCGI( array( 'search' => $term, 'fulltext' => wfMsg( 'search' ) ), $opt );
+ $st = SpecialPage::getTitleFor( 'Search' );
+ $stParams = array_merge(
+ array(
+ 'search' => $term,
+ 'fulltext' => wfMsg( 'search' )
+ ),
+ $opt
+ );
- return Xml::element( 'a',
- array( 'href'=> $st->getLocalURL( $stParams ), 'title' => $tooltip ),
- $label );
+ return Xml::element(
+ 'a',
+ array(
+ 'href' => $st->getLocalURL( $stParams ),
+ 'title' => $tooltip,
+ 'onmousedown' => 'mwSearchHeaderClick(this);',
+ 'onkeydown' => 'mwSearchHeaderClick(this);'),
+ $label
+ );
}
-
+
/** Check if query starts with image: prefix */
protected function startsWithImage( $term ) {
global $wgContLang;
-
+
$p = explode( ':', $term );
if( count( $p ) > 1 ) {
return $wgContLang->getNsIndex( $p[0] ) == NS_FILE;
@@ -800,689 +996,16 @@ class SpecialSearch {
return false;
}
- protected function namespaceTables( $namespaces, $rowsPerTable = 3 ) {
- global $wgContLang;
- // Group namespaces into rows according to subject.
- // Try not to make too many assumptions about namespace numbering.
- $rows = array();
- $tables = "";
- foreach( $namespaces as $ns => $name ) {
- $subj = MWNamespace::getSubject( $ns );
- if( !array_key_exists( $subj, $rows ) ) {
- $rows[$subj] = "";
- }
- $name = str_replace( '_', ' ', $name );
- if( '' == $name ) {
- $name = wfMsg( 'blanknamespace' );
- }
- $rows[$subj] .= Xml::openElement( 'td', array( 'style' => 'white-space: nowrap' ) ) .
- Xml::checkLabel( $name, "ns{$ns}", "mw-search-ns{$ns}", in_array( $ns, $this->namespaces ) ) .
- Xml::closeElement( 'td' ) . "\n";
- }
- $rows = array_values( $rows );
- $numRows = count( $rows );
- // Lay out namespaces in multiple floating two-column tables so they'll
- // be arranged nicely while still accommodating different screen widths
- // Float to the right on RTL wikis
- $tableStyle = $wgContLang->isRTL() ?
- 'float: right; margin: 0 0 0em 1em' : 'float: left; margin: 0 1em 0em 0';
- // Build the final HTML table...
- for( $i = 0; $i < $numRows; $i += $rowsPerTable ) {
- $tables .= Xml::openElement( 'table', array( 'style' => $tableStyle ) );
- for( $j = $i; $j < $i + $rowsPerTable && $j < $numRows; $j++ ) {
- $tables .= "<tr>\n" . $rows[$j] . "</tr>";
- }
- $tables .= Xml::closeElement( 'table' ) . "\n";
- }
- return $tables;
- }
-}
-
-/**
- * implements Special:Search - Run text & title search and display the output
- * @ingroup SpecialPage
- */
-class SpecialSearchOld {
-
- /**
- * Set up basic search parameters from the request and user settings.
- * Typically you'll pass $wgRequest and $wgUser.
- *
- * @param WebRequest $request
- * @param User $user
- * @public
- */
- function __construct( &$request, &$user ) {
- list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' );
- $this->mPrefix = $request->getVal('prefix', '');
- $this->namespaces = $this->powerSearch( $request );
- if( empty( $this->namespaces ) ) {
- $this->namespaces = SearchEngine::userNamespaces( $user );
- }
-
- $this->searchRedirects = $request->getcheck( 'redirs' ) ? true : false;
- $this->fulltext = $request->getVal('fulltext');
- }
-
- /**
- * If an exact title match can be found, jump straight ahead to it.
- * @param string $term
- * @public
- */
- function goResult( $term ) {
- global $wgOut;
- global $wgGoToEdit;
-
- $this->setupPage( $term );
-
- # Try to go to page as entered.
- $t = Title::newFromText( $term );
-
- # If the string cannot be used to create a title
- if( is_null( $t ) ){
- return $this->showResults( $term );
- }
-
- # If there's an exact or very near match, jump right there.
- $t = SearchEngine::getNearMatch( $term );
- if( !is_null( $t ) ) {
- $wgOut->redirect( $t->getFullURL() );
- return;
- }
-
- # No match, generate an edit URL
- $t = Title::newFromText( $term );
- if( ! is_null( $t ) ) {
- wfRunHooks( 'SpecialSearchNogomatch', array( &$t ) );
- # If the feature is enabled, go straight to the edit page
- if ( $wgGoToEdit ) {
- $wgOut->redirect( $t->getFullURL( 'action=edit' ) );
- return;
- }
- }
-
- $extra = $wgOut->parse( '=='.wfMsgNoTrans( 'notitlematches' )."==\n" );
- if( $t->quickUserCan( 'create' ) && $t->quickUserCan( 'edit' ) ) {
- $extra .= wfMsgExt( 'noexactmatch', 'parse', wfEscapeWikiText( $term ) );
- } else {
- $extra .= wfMsgExt( 'noexactmatch-nocreate', 'parse', wfEscapeWikiText( $term ) );
- }
-
- $this->showResults( $term, $extra );
- }
-
- /**
- * @param string $term
- * @param string $extra Extra HTML to add after "did you mean"
- */
- public function showResults( $term, $extra = '' ) {
- wfProfileIn( __METHOD__ );
- global $wgOut, $wgUser;
- $sk = $wgUser->getSkin();
-
- $search = SearchEngine::create();
- $search->setLimitOffset( $this->limit, $this->offset );
- $search->setNamespaces( $this->namespaces );
- $search->showRedirects = $this->searchRedirects;
- $search->prefix = $this->mPrefix;
- $term = $search->transformSearchTerm($term);
-
- $this->setupPage( $term );
-
- $rewritten = $search->replacePrefixes($term);
- $titleMatches = $search->searchTitle( $rewritten );
- $textMatches = $search->searchText( $rewritten );
-
- // did you mean... suggestions
- if($textMatches && $textMatches->hasSuggestion()){
- $st = SpecialPage::getTitleFor( 'Search' );
-
- # mirror Go/Search behaviour of original request
- $didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() );
- if($this->fulltext != NULL)
- $didYouMeanParams['fulltext'] = $this->fulltext;
- $stParams = wfArrayToCGI(
- $didYouMeanParams,
- $this->powerSearchOptions()
- );
-
- $suggestLink = $sk->makeKnownLinkObj( $st,
- $textMatches->getSuggestionSnippet(),
- $stParams );
-
- $wgOut->addHTML('<div class="searchdidyoumean">'.wfMsg('search-suggest',$suggestLink).'</div>');
- }
-
- $wgOut->addHTML( $extra );
-
- $wgOut->wrapWikiMsg( "<div class='mw-searchresult'>\n$1</div>", 'searchresulttext' );
-
- if( '' === trim( $term ) ) {
- // Empty query -- straight view of search form
- $wgOut->setSubtitle( '' );
- $wgOut->addHTML( $this->powerSearchBox( $term ) );
- $wgOut->addHTML( $this->powerSearchFocus() );
- wfProfileOut( __METHOD__ );
- return;
- }
-
- global $wgDisableTextSearch;
- if ( $wgDisableTextSearch ) {
- global $wgSearchForwardUrl;
- if( $wgSearchForwardUrl ) {
- $url = str_replace( '$1', urlencode( $term ), $wgSearchForwardUrl );
- $wgOut->redirect( $url );
- wfProfileOut( __METHOD__ );
- return;
- }
- global $wgInputEncoding;
- $wgOut->addHTML(
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'search-external' ) ) .
- Xml::element( 'p', array( 'class' => 'mw-searchdisabled' ), wfMsg( 'searchdisabled' ) ) .
- wfMsg( 'googlesearch',
- htmlspecialchars( $term ),
- htmlspecialchars( $wgInputEncoding ),
- htmlspecialchars( wfMsg( 'searchbutton' ) )
- ) .
- Xml::closeElement( 'fieldset' )
- );
- wfProfileOut( __METHOD__ );
- return;
- }
-
- $wgOut->addHTML( $this->shortDialog( $term ) );
-
- // Sometimes the search engine knows there are too many hits
- if ($titleMatches instanceof SearchResultTooMany) {
- $wgOut->addWikiText( '==' . wfMsg( 'toomanymatches' ) . "==\n" );
- $wgOut->addHTML( $this->powerSearchBox( $term ) );
- $wgOut->addHTML( $this->powerSearchFocus() );
- wfProfileOut( __METHOD__ );
- return;
- }
-
- // show number of results
- $num = ( $titleMatches ? $titleMatches->numRows() : 0 )
- + ( $textMatches ? $textMatches->numRows() : 0);
- $totalNum = 0;
- if($titleMatches && !is_null($titleMatches->getTotalHits()))
- $totalNum += $titleMatches->getTotalHits();
- if($textMatches && !is_null($textMatches->getTotalHits()))
- $totalNum += $textMatches->getTotalHits();
- if ( $num > 0 ) {
- if ( $totalNum > 0 ){
- $top = wfMsgExt('showingresultstotal', array( 'parseinline' ),
- $this->offset+1, $this->offset+$num, $totalNum, $num );
- } elseif ( $num >= $this->limit ) {
- $top = wfShowingResults( $this->offset, $this->limit );
- } else {
- $top = wfShowingResultsNum( $this->offset, $this->limit, $num );
- }
- $wgOut->addHTML( "<p class='mw-search-numberresults'>{$top}</p>\n" );
- }
-
- // prev/next links
- if( $num || $this->offset ) {
- $prevnext = wfViewPrevNext( $this->offset, $this->limit,
- SpecialPage::getTitleFor( 'Search' ),
- wfArrayToCGI(
- $this->powerSearchOptions(),
- array( 'search' => $term ) ),
- ($num < $this->limit) );
- $wgOut->addHTML( "<p class='mw-search-pager-top'>{$prevnext}</p>\n" );
- wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
- } else {
- wfRunHooks( 'SpecialSearchNoResults', array( $term ) );
- }
-
- if( $titleMatches ) {
- if( $titleMatches->numRows() ) {
- $wgOut->wrapWikiMsg( "==$1==\n", 'titlematches' );
- $wgOut->addHTML( $this->showMatches( $titleMatches ) );
- }
- $titleMatches->free();
- }
-
- if( $textMatches ) {
- // output appropriate heading
- if( $textMatches->numRows() ) {
- if($titleMatches)
- $wgOut->wrapWikiMsg( "==$1==\n", 'textmatches' );
- else // if no title matches the heading is redundant
- $wgOut->addHTML("<hr/>");
- } elseif( $num == 0 ) {
- # Don't show the 'no text matches' if we received title matches
- $wgOut->wrapWikiMsg( "==$1==\n", 'notextmatches' );
- }
- // show interwiki results if any
- if( $textMatches->hasInterwikiResults() )
- $wgOut->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults(), $term ));
- // show results
- if( $textMatches->numRows() )
- $wgOut->addHTML( $this->showMatches( $textMatches ) );
-
- $textMatches->free();
- }
-
- if ( $num == 0 ) {
- $wgOut->addWikiMsg( 'nonefound' );
- }
- if( $num || $this->offset ) {
- $wgOut->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
- }
- $wgOut->addHTML( $this->powerSearchBox( $term ) );
- wfProfileOut( __METHOD__ );
- }
-
- #------------------------------------------------------------------
- # Private methods below this line
-
- /**
- *
- */
- function setupPage( $term ) {
- global $wgOut;
- if( !empty( $term ) ){
- $wgOut->setPageTitle( wfMsg( 'searchresults') );
- $wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term) ) );
- }
- $subtitlemsg = ( Title::newFromText( $term ) ? 'searchsubtitle' : 'searchsubtitleinvalid' );
- $wgOut->setSubtitle( $wgOut->parse( wfMsg( $subtitlemsg, wfEscapeWikiText($term) ) ) );
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- }
-
- /**
- * Extract "power search" namespace settings from the request object,
- * returning a list of index numbers to search.
- *
- * @param WebRequest $request
- * @return array
- * @private
- */
- function powerSearch( &$request ) {
- $arr = array();
- foreach( SearchEngine::searchableNamespaces() as $ns => $name ) {
- if( $request->getCheck( 'ns' . $ns ) ) {
- $arr[] = $ns;
- }
- }
- return $arr;
- }
-
- /**
- * Reconstruct the 'power search' options for links
- * @return array
- * @private
- */
- function powerSearchOptions() {
- $opt = array();
- foreach( $this->namespaces as $n ) {
- $opt['ns' . $n] = 1;
- }
- $opt['redirs'] = $this->searchRedirects ? 1 : 0;
- return $opt;
- }
-
- /**
- * Show whole set of results
- *
- * @param SearchResultSet $matches
- */
- function showMatches( &$matches ) {
- wfProfileIn( __METHOD__ );
-
- global $wgContLang;
- $terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
-
- $out = "";
-
- $infoLine = $matches->getInfo();
- if( !is_null($infoLine) )
- $out .= "\n<!-- {$infoLine} -->\n";
-
-
- $off = $this->offset + 1;
- $out .= "<ul class='mw-search-results'>\n";
-
- while( $result = $matches->next() ) {
- $out .= $this->showHit( $result, $terms );
- }
- $out .= "</ul>\n";
-
- // convert the whole thing to desired language variant
- global $wgContLang;
- $out = $wgContLang->convert( $out );
- wfProfileOut( __METHOD__ );
- return $out;
- }
+ /** Check if query starts with all: prefix */
+ protected function startsWithAll( $term ) {
- /**
- * Format a single hit result
- * @param SearchResult $result
- * @param array $terms terms to highlight
- */
- function showHit( $result, $terms ) {
- wfProfileIn( __METHOD__ );
- global $wgUser, $wgContLang, $wgLang;
+ $allkeyword = wfMsgForContent('searchall');
- if( $result->isBrokenTitle() ) {
- wfProfileOut( __METHOD__ );
- return "<!-- Broken link in search result -->\n";
- }
-
- $t = $result->getTitle();
- $sk = $wgUser->getSkin();
-
- $link = $sk->makeKnownLinkObj( $t, $result->getTitleSnippet($terms));
-
- //If page content is not readable, just return the title.
- //This is not quite safe, but better than showing excerpts from non-readable pages
- //Note that hiding the entry entirely would screw up paging.
- if (!$t->userCanRead()) {
- wfProfileOut( __METHOD__ );
- return "<li>{$link}</li>\n";
- }
-
- // If the page doesn't *exist*... our search index is out of date.
- // The least confusing at this point is to drop the result.
- // You may get less results, but... oh well. :P
- if( $result->isMissingRevision() ) {
- wfProfileOut( __METHOD__ );
- return "<!-- missing page " .
- htmlspecialchars( $t->getPrefixedText() ) . "-->\n";
- }
-
- // format redirects / relevant sections
- $redirectTitle = $result->getRedirectTitle();
- $redirectText = $result->getRedirectSnippet($terms);
- $sectionTitle = $result->getSectionTitle();
- $sectionText = $result->getSectionSnippet($terms);
- $redirect = '';
- if( !is_null($redirectTitle) )
- $redirect = "<span class='searchalttitle'>"
- .wfMsg('search-redirect',$sk->makeKnownLinkObj( $redirectTitle, $redirectText))
- ."</span>";
- $section = '';
- if( !is_null($sectionTitle) )
- $section = "<span class='searchalttitle'>"
- .wfMsg('search-section', $sk->makeKnownLinkObj( $sectionTitle, $sectionText))
- ."</span>";
-
- // format text extract
- $extract = "<div class='searchresult'>".$result->getTextSnippet($terms)."</div>";
-
- // format score
- if( is_null( $result->getScore() ) ) {
- // Search engine doesn't report scoring info
- $score = '';
- } else {
- $percent = sprintf( '%2.1f', $result->getScore() * 100 );
- $score = wfMsg( 'search-result-score', $wgLang->formatNum( $percent ) )
- . ' - ';
- }
-
- // format description
- $byteSize = $result->getByteSize();
- $wordCount = $result->getWordCount();
- $timestamp = $result->getTimestamp();
- $size = wfMsgExt( 'search-result-size', array( 'parsemag', 'escape' ),
- $sk->formatSize( $byteSize ),
- $wordCount );
- $date = $wgLang->timeanddate( $timestamp );
-
- // link to related articles if supported
- $related = '';
- if( $result->hasRelated() ){
- $st = SpecialPage::getTitleFor( 'Search' );
- $stParams = wfArrayToCGI( $this->powerSearchOptions(),
- array('search' => wfMsgForContent('searchrelated').':'.$t->getPrefixedText(),
- 'fulltext' => wfMsg('search') ));
-
- $related = ' -- ' . $sk->makeKnownLinkObj( $st,
- wfMsg('search-relatedarticle'), $stParams );
- }
-
- // Include a thumbnail for media files...
- if( $t->getNamespace() == NS_FILE ) {
- $img = wfFindFile( $t );
- if( $img ) {
- $thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
- if( $thumb ) {
- $desc = $img->getShortDesc();
- wfProfileOut( __METHOD__ );
- // Ugly table. :D
- // Float doesn't seem to interact well with the bullets.
- // Table messes up vertical alignment of the bullet, but I'm
- // not sure what more I can do about that. :(
- return "<li>" .
- '<table class="searchResultImage">' .
- '<tr>' .
- '<td width="120" align="center">' .
- $thumb->toHtml( array( 'desc-link' => true ) ) .
- '</td>' .
- '<td valign="top">' .
- $link .
- $extract .
- "<div class='mw-search-result-data'>{$score}{$desc} - {$date}{$related}</div>" .
- '</td>' .
- '</tr>' .
- '</table>' .
- "</li>\n";
- }
- }
- }
-
- wfProfileOut( __METHOD__ );
- return "<li>{$link} {$redirect} {$section} {$extract}\n" .
- "<div class='mw-search-result-data'>{$score}{$size} - {$date}{$related}</div>" .
- "</li>\n";
-
- }
-
- /**
- * Show results from other wikis
- *
- * @param SearchResultSet $matches
- */
- function showInterwiki( &$matches, $query ) {
- wfProfileIn( __METHOD__ );
-
- global $wgContLang;
- $terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
-
- $out = "<div id='mw-search-interwiki'><div id='mw-search-interwiki-caption'>".wfMsg('search-interwiki-caption')."</div>\n";
- $off = $this->offset + 1;
- $out .= "<ul start='{$off}' class='mw-search-iwresults'>\n";
-
- // work out custom project captions
- $customCaptions = array();
- $customLines = explode("\n",wfMsg('search-interwiki-custom')); // format per line <iwprefix>:<caption>
- foreach($customLines as $line){
- $parts = explode(":",$line,2);
- if(count($parts) == 2) // validate line
- $customCaptions[$parts[0]] = $parts[1];
- }
-
-
- $prev = null;
- while( $result = $matches->next() ) {
- $out .= $this->showInterwikiHit( $result, $prev, $terms, $query, $customCaptions );
- $prev = $result->getInterwikiPrefix();
- }
- // FIXME: should support paging in a non-confusing way (not sure how though, maybe via ajax)..
- $out .= "</ul></div>\n";
-
- // convert the whole thing to desired language variant
- global $wgContLang;
- $out = $wgContLang->convert( $out );
- wfProfileOut( __METHOD__ );
- return $out;
- }
-
- /**
- * Show single interwiki link
- *
- * @param SearchResult $result
- * @param string $lastInterwiki
- * @param array $terms
- * @param string $query
- * @param array $customCaptions iw prefix -> caption
- */
- function showInterwikiHit( $result, $lastInterwiki, $terms, $query, $customCaptions) {
- wfProfileIn( __METHOD__ );
- global $wgUser, $wgContLang, $wgLang;
-
- if( $result->isBrokenTitle() ) {
- wfProfileOut( __METHOD__ );
- return "<!-- Broken link in search result -->\n";
- }
-
- $t = $result->getTitle();
- $sk = $wgUser->getSkin();
-
- $link = $sk->makeKnownLinkObj( $t, $result->getTitleSnippet($terms));
-
- // format redirect if any
- $redirectTitle = $result->getRedirectTitle();
- $redirectText = $result->getRedirectSnippet($terms);
- $redirect = '';
- if( !is_null($redirectTitle) )
- $redirect = "<span class='searchalttitle'>"
- .wfMsg('search-redirect',$sk->makeKnownLinkObj( $redirectTitle, $redirectText))
- ."</span>";
-
- $out = "";
- // display project name
- if(is_null($lastInterwiki) || $lastInterwiki != $t->getInterwiki()){
- if( key_exists($t->getInterwiki(),$customCaptions) )
- // captions from 'search-interwiki-custom'
- $caption = $customCaptions[$t->getInterwiki()];
- else{
- // default is to show the hostname of the other wiki which might suck
- // if there are many wikis on one hostname
- $parsed = parse_url($t->getFullURL());
- $caption = wfMsg('search-interwiki-default', $parsed['host']);
- }
- // "more results" link (special page stuff could be localized, but we might not know target lang)
- $searchTitle = Title::newFromText($t->getInterwiki().":Special:Search");
- $searchLink = $sk->makeKnownLinkObj( $searchTitle, wfMsg('search-interwiki-more'),
- wfArrayToCGI(array('search' => $query, 'fulltext' => 'Search')));
- $out .= "</ul><div class='mw-search-interwiki-project'><span class='mw-search-interwiki-more'>{$searchLink}</span>{$caption}</div>\n<ul>";
- }
-
- $out .= "<li>{$link} {$redirect}</li>\n";
- wfProfileOut( __METHOD__ );
- return $out;
- }
-
-
- /**
- * Generates the power search box at bottom of [[Special:Search]]
- * @param $term string: search term
- * @return $out string: HTML form
- */
- function powerSearchBox( $term ) {
- global $wgScript, $wgContLang;
-
- $namespaces = SearchEngine::searchableNamespaces();
-
- // group namespaces into rows according to subject; try not to make too
- // many assumptions about namespace numbering
- $rows = array();
- foreach( $namespaces as $ns => $name ) {
- $subj = MWNamespace::getSubject( $ns );
- if( !array_key_exists( $subj, $rows ) ) {
- $rows[$subj] = "";
- }
- $name = str_replace( '_', ' ', $name );
- if( '' == $name ) {
- $name = wfMsg( 'blanknamespace' );
- }
- $rows[$subj] .= Xml::openElement( 'td', array( 'style' => 'white-space: nowrap' ) ) .
- Xml::checkLabel( $name, "ns{$ns}", "mw-search-ns{$ns}", in_array( $ns, $this->namespaces ) ) .
- Xml::closeElement( 'td' ) . "\n";
- }
- $rows = array_values( $rows );
- $numRows = count( $rows );
-
- // lay out namespaces in multiple floating two-column tables so they'll
- // be arranged nicely while still accommodating different screen widths
- $rowsPerTable = 3; // seems to look nice
-
- // float to the right on RTL wikis
- $tableStyle = ( $wgContLang->isRTL() ?
- 'float: right; margin: 0 0 1em 1em' :
- 'float: left; margin: 0 1em 1em 0' );
-
- $tables = "";
- for( $i = 0; $i < $numRows; $i += $rowsPerTable ) {
- $tables .= Xml::openElement( 'table', array( 'style' => $tableStyle ) );
- for( $j = $i; $j < $i + $rowsPerTable && $j < $numRows; $j++ ) {
- $tables .= "<tr>\n" . $rows[$j] . "</tr>";
- }
- $tables .= Xml::closeElement( 'table' ) . "\n";
- }
-
- $redirect = Xml::check( 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' ) );
- $redirectLabel = Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' );
- $searchField = Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'powerSearchText' ) );
- $searchButton = Xml::submitButton( wfMsg( 'powersearch' ), array( 'name' => 'fulltext' ) ) . "\n";
- $searchTitle = SpecialPage::getTitleFor( 'Search' );
- $searchHiddens = Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n";
- $searchHiddens .= Xml::hidden( 'fulltext', 'Advanced search' ) . "\n";
-
- $out = Xml::openElement( 'form', array( 'id' => 'powersearch', 'method' => 'get', 'action' => $wgScript ) ) .
- Xml::fieldset( wfMsg( 'powersearch-legend' ),
- "<p>" .
- wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) .
- "</p>\n" .
- $tables .
- "<hr style=\"clear: both\" />\n" .
- "<p>" .
- $redirect . " " . $redirectLabel .
- "</p>\n" .
- wfMsgExt( 'powersearch-field', array( 'parseinline' ) ) .
- "&nbsp;" .
- $searchField .
- "&nbsp;" .
- $searchHiddens .
- $searchButton ) .
- "</form>";
-
- return $out;
- }
-
- function powerSearchFocus() {
- global $wgJsMimeType;
- return "<script type=\"$wgJsMimeType\">" .
- "hookEvent(\"load\", function(){" .
- "document.getElementById('powerSearchText').focus();" .
- "});" .
- "</script>";
- }
-
- function shortDialog($term) {
- global $wgScript;
-
- $out = Xml::openElement( 'form', array(
- 'id' => 'search',
- 'method' => 'get',
- 'action' => $wgScript
- ));
- $searchTitle = SpecialPage::getTitleFor( 'Search' );
- $out .= Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'searchText' ) ) . ' ';
- foreach( SearchEngine::searchableNamespaces() as $ns => $name ) {
- if( in_array( $ns, $this->namespaces ) ) {
- $out .= Xml::hidden( "ns{$ns}", '1' );
- }
+ $p = explode( ':', $term );
+ if( count( $p ) > 1 ) {
+ return $p[0] == $allkeyword;
}
- $out .= Xml::hidden( 'title', $searchTitle->getPrefixedText() );
- $out .= Xml::hidden( 'fulltext', 'Search' );
- $out .= Xml::submitButton( wfMsg( 'searchbutton' ), array( 'name' => 'fulltext' ) );
- $out .= Xml::closeElement( 'form' );
-
- return $out;
+ return false;
}
}
+
diff --git a/includes/specials/SpecialShortpages.php b/includes/specials/SpecialShortpages.php
index 2e7d24a5..c41b15c5 100644
--- a/includes/specials/SpecialShortpages.php
+++ b/includes/specials/SpecialShortpages.php
@@ -74,10 +74,15 @@ class ShortPagesPage extends QueryPage {
if ( !$title ) {
return '<!-- Invalid title ' . htmlspecialchars( "{$result->namespace}:{$result->title}" ). '-->';
}
- $hlink = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'hist' ), 'action=history' );
+ $hlink = $skin->linkKnown(
+ $title,
+ wfMsgHtml( 'hist' ),
+ array(),
+ array( 'action' => 'history' )
+ );
$plink = $this->isCached()
- ? $skin->makeLinkObj( $title )
- : $skin->makeKnownLinkObj( $title );
+ ? $skin->link( $title )
+ : $skin->linkKnown( $title );
$size = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ), $wgLang->formatNum( htmlspecialchars( $result->value ) ) );
return $title->exists()
diff --git a/includes/specials/SpecialSpecialpages.php b/includes/specials/SpecialSpecialpages.php
index 4959f107..84ab689a 100644
--- a/includes/specials/SpecialSpecialpages.php
+++ b/includes/specials/SpecialSpecialpages.php
@@ -55,15 +55,15 @@ function wfSpecialSpecialpages() {
$total = count($sortedPages);
$count = 0;
- $wgOut->wrapWikiMsg( "<h4 class='mw-specialpagesgroup'>$1</h4>\n", "specialpages-group-$group" );
+ $wgOut->wrapWikiMsg( "<h4 class=\"mw-specialpagesgroup\" id=\"mw-specialpagesgroup-$group\">$1</h4>\n", "specialpages-group-$group" );
$wgOut->addHTML( "<table style='width: 100%;' class='mw-specialpages-table'><tr>" );
$wgOut->addHTML( "<td width='30%' valign='top'><ul>\n" );
foreach( $sortedPages as $desc => $specialpage ) {
list( $title, $restricted ) = $specialpage;
- $link = $sk->makeKnownLinkObj( $title , htmlspecialchars( $desc ) );
+ $link = $sk->linkKnown( $title , htmlspecialchars( $desc ) );
if( $restricted ) {
$includesRestrictedPages = true;
- $wgOut->addHTML( "<li class='mw-specialpages-page mw-specialpagerestricted'>{$link}</li>\n" );
+ $wgOut->addHTML( "<li class='mw-specialpages-page mw-specialpagerestricted'><strong>{$link}</strong></li>\n" );
} else {
$wgOut->addHTML( "<li>{$link}</li>\n" );
}
diff --git a/includes/specials/SpecialStatistics.php b/includes/specials/SpecialStatistics.php
index 109c5c30..2e785b8b 100644
--- a/includes/specials/SpecialStatistics.php
+++ b/includes/specials/SpecialStatistics.php
@@ -23,7 +23,7 @@ class SpecialStatistics extends SpecialPage {
}
public function execute( $par ) {
- global $wgOut, $wgRequest, $wgMessageCache;
+ global $wgOut, $wgRequest, $wgMessageCache, $wgMemc;
global $wgDisableCounters, $wgMiserMode;
$wgMessageCache->loadAllMessages();
@@ -38,6 +38,7 @@ class SpecialStatistics extends SpecialPage {
$this->activeUsers = SiteStats::activeUsers();
$this->admins = SiteStats::numberingroup('sysop');
$this->numJobs = SiteStats::jobs();
+ $this->hook = '';
# Staticic - views
$viewsStats = '';
@@ -47,8 +48,13 @@ class SpecialStatistics extends SpecialPage {
# Set active user count
if( !$wgMiserMode ) {
- $dbw = wfGetDB( DB_MASTER );
- SiteStatsUpdate::cacheUpdate( $dbw );
+ $key = wfMemcKey( 'sitestats', 'activeusers-updated' );
+ // Re-calculate the count if the last tally is old...
+ if( !$wgMemc->get($key) ) {
+ $dbw = wfGetDB( DB_MASTER );
+ SiteStatsUpdate::cacheUpdate( $dbw );
+ $wgMemc->set( $key, '1', 24*3600 ); // don't update for 1 day
+ }
}
# Do raw output
@@ -56,10 +62,10 @@ class SpecialStatistics extends SpecialPage {
$this->doRawOutput();
}
- $text = Xml::openElement( 'table', array( 'class' => 'mw-statistics-table' ) );
+ $text = Xml::openElement( 'table', array( 'class' => 'wikitable mw-statistics-table' ) );
# Statistic - pages
- $text .= $this->getPageStats();
+ $text .= $this->getPageStats();
# Statistic - edits
$text .= $this->getEditStats();
@@ -75,6 +81,12 @@ class SpecialStatistics extends SpecialPage {
if( !$wgDisableCounters && !$wgMiserMode ) {
$text .= $this->getMostViewedPages();
}
+
+ # Statistic - other
+ $extraStats = array();
+ if( wfRunHooks( 'SpecialStatsAddExtra', array( &$extraStats ) ) ) {
+ $text .= $this->getOtherStats( $extraStats );
+ }
$text .= Xml::closeElement( 'table' );
@@ -149,14 +161,22 @@ class SpecialStatistics extends SpecialPage {
array( 'class' => 'mw-statistics-jobqueue' ) );
}
private function getUserStats() {
- global $wgLang, $wgRCMaxAge;
+ global $wgLang, $wgUser, $wgRCMaxAge;
+ $sk = $wgUser->getSkin();
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-users', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' ) .
$this->formatRow( wfMsgExt( 'statistics-users', array( 'parseinline' ) ),
$wgLang->formatNum( $this->users ),
array( 'class' => 'mw-statistics-users' ) ) .
- $this->formatRow( wfMsgExt( 'statistics-users-active', array( 'parseinline' ) ),
+ $this->formatRow( wfMsgExt( 'statistics-users-active', array( 'parseinline' ) ) . ' ' .
+ $sk->link(
+ SpecialPage::getTitleFor( 'Activeusers' ),
+ wfMsgHtml( 'listgrouprights-members' ),
+ array(),
+ array(),
+ 'known'
+ ),
$wgLang->formatNum( $this->activeUsers ),
array( 'class' => 'mw-statistics-users-active' ),
'statistics-users-active-desc',
@@ -184,13 +204,19 @@ class SpecialStatistics extends SpecialPage {
} else {
$grouppageLocalized = $msg;
}
- $grouppage = $sk->makeLink( $grouppageLocalized, htmlspecialchars( $groupnameLocalized ) );
- $grouplink = $sk->link( SpecialPage::getTitleFor( 'Listusers' ),
+ $linkTarget = Title::newFromText( $grouppageLocalized );
+ $grouppage = $sk->link(
+ $linkTarget,
+ htmlspecialchars( $groupnameLocalized )
+ );
+ $grouplink = $sk->link(
+ SpecialPage::getTitleFor( 'Listusers' ),
wfMsgHtml( 'listgrouprights-members' ),
array(),
array( 'group' => $group ),
- 'known' );
- # Add a class when a usergroup contains no members to allow hiding these rows
+ 'known'
+ );
+ # Add a class when a usergroup contains no members to allow hiding these rows
$classZero = '';
$countUsers = SiteStats::numberingroup( $groupname );
if( $countUsers == 0 ) {
@@ -238,7 +264,9 @@ class SpecialStatistics extends SpecialPage {
)
);
if( $res->numRows() > 0 ) {
+ $text .= Xml::openElement( 'tr' );
$text .= Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-mostpopular', array( 'parseinline' ) ) );
+ $text .= Xml::closeElement( 'tr' );
while( $row = $res->fetchObject() ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
if( $title instanceof Title ) {
@@ -252,6 +280,26 @@ class SpecialStatistics extends SpecialPage {
return $text;
}
+ private function getOtherStats( $stats ) {
+ global $wgLang;
+
+ if ( !count( $stats ) )
+ return '';
+
+ $return = Xml::openElement( 'tr' ) .
+ Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-hooks', array( 'parseinline' ) ) ) .
+ Xml::closeElement( 'tr' );
+
+ foreach( $stats as $name => $number ) {
+ $name = htmlspecialchars( $name );
+ $number = htmlspecialchars( $number );
+
+ $return .= $this->formatRow( $name, $wgLang->formatNum( $number ), array( 'class' => 'mw-statistics-hook' ) );
+ }
+
+ return $return;
+ }
+
/**
* Do the action=raw output for this page. Legacy, but we support
* it for backwards compatibility
diff --git a/includes/specials/SpecialTags.php b/includes/specials/SpecialTags.php
index 981eb2ff..57feeae7 100644
--- a/includes/specials/SpecialTags.php
+++ b/includes/specials/SpecialTags.php
@@ -36,7 +36,7 @@ class SpecialTags extends SpecialPage {
$html .= $this->doTagRow( $tag, 0 );
}
- $wgOut->addHTML( Xml::tags( 'table', array( 'class' => 'mw-tags-table' ), $html ) );
+ $wgOut->addHTML( Xml::tags( 'table', array( 'class' => 'wikitable mw-tags-table' ), $html ) );
}
function doTagRow( $tag, $hitcount ) {
@@ -49,21 +49,23 @@ class SpecialTags extends SpecialPage {
if ( in_array( $tag, $doneTags ) ) {
return '';
}
+
+ global $wgLang;
$newRow = '';
$newRow .= Xml::tags( 'td', null, Xml::element( 'tt', null, $tag ) );
$disp = ChangeTags::tagDescription( $tag );
- $disp .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag" ), wfMsg( 'tags-edit' ) ) . ')';
+ $disp .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag" ), wfMsgHtml( 'tags-edit' ) ) . ')';
$newRow .= Xml::tags( 'td', null, $disp );
$desc = wfMsgExt( "tag-$tag-description", 'parseinline' );
$desc = wfEmptyMsg( "tag-$tag-description", $desc ) ? '' : $desc;
- $desc .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag-description" ), wfMsg( 'tags-edit' ) ) . ')';
+ $desc .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag-description" ), wfMsgHtml( 'tags-edit' ) ) . ')';
$newRow .= Xml::tags( 'td', null, $desc );
- $hitcount = wfMsg( 'tags-hitcount', $hitcount );
- $hitcount = $sk->link( SpecialPage::getTitleFor( 'RecentChanges' ), $hitcount, array(), array( 'tagfilter' => $tag ) );
+ $hitcount = wfMsgExt( 'tags-hitcount', array( 'parsemag' ), $wgLang->formatNum( $hitcount ) );
+ $hitcount = $sk->link( SpecialPage::getTitleFor( 'Recentchanges' ), $hitcount, array(), array( 'tagfilter' => $tag ) );
$newRow .= Xml::tags( 'td', null, $hitcount );
$doneTags[] = $tag;
diff --git a/includes/specials/SpecialUncategorizedtemplates.php b/includes/specials/SpecialUncategorizedtemplates.php
index cb2a6d40..7e6fd24b 100644
--- a/includes/specials/SpecialUncategorizedtemplates.php
+++ b/includes/specials/SpecialUncategorizedtemplates.php
@@ -23,8 +23,6 @@ class UncategorizedTemplatesPage extends UncategorizedPagesPage {
/**
* Main execution point
- *
- * @param mixed $par Parameter passed to the page
*/
function wfSpecialUncategorizedtemplates() {
list( $limit, $offset ) = wfCheckLimits();
diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php
index d97efb59..4db4e633 100644
--- a/includes/specials/SpecialUndelete.php
+++ b/includes/specials/SpecialUndelete.php
@@ -58,16 +58,15 @@ class PageArchive {
$title = Title::newFromText( $prefix );
if( $title ) {
$ns = $title->getNamespace();
- $encPrefix = $dbr->escapeLike( $title->getDBkey() );
+ $prefix = $title->getDBkey();
} else {
// Prolly won't work too good
// @todo handle bare namespace names cleanly?
$ns = 0;
- $encPrefix = $dbr->escapeLike( $prefix );
}
$conds = array(
'ar_namespace' => $ns,
- "ar_title LIKE '$encPrefix%'",
+ 'ar_title' . $dbr->buildLike( $prefix, $dbr->anyString() ),
);
return self::listPages( $dbr, $conds );
}
@@ -188,20 +187,7 @@ class PageArchive {
'ar_timestamp' => $dbr->timestamp( $timestamp ) ),
__METHOD__ );
if( $row ) {
- return new Revision( array(
- 'page' => $this->title->getArticleId(),
- 'id' => $row->ar_rev_id,
- 'text' => ($row->ar_text_id
- ? null
- : Revision::getRevisionText( $row, 'ar_' ) ),
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $row->ar_timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'text_id' => $row->ar_text_id,
- 'deleted' => $row->ar_deleted,
- 'len' => $row->ar_len) );
+ return Revision::newFromArchiveRow( $row, array( 'page' => $this->title->getArticleId() ) );
} else {
return null;
}
@@ -299,7 +285,7 @@ class PageArchive {
if( $row ) {
return $this->getTextFromRow( $row );
} else {
- return NULL;
+ return null;
}
}
@@ -345,7 +331,7 @@ class PageArchive {
}
if( $restoreText ) {
- $textRestored = $this->undeleteRevisions( $timestamps, $unsuppress );
+ $textRestored = $this->undeleteRevisions( $timestamps, $unsuppress, $comment );
if($textRestored === false) // It must be one of UNDELETE_*
return false;
} else {
@@ -372,7 +358,7 @@ class PageArchive {
}
if( trim( $comment ) != '' )
- $reason .= ": {$comment}";
+ $reason .= wfMsgForContent( 'colon-separator' ) . $comment;
$log->addEntry( 'restore', $this->title, $reason );
return array($textRestored, $filesRestored, $reason);
@@ -390,7 +376,7 @@ class PageArchive {
*
* @return mixed number of revisions restored or false on failure
*/
- private function undeleteRevisions( $timestamps, $unsuppress = false ) {
+ private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
if ( wfReadOnly() )
return false;
$restoreAll = empty( $timestamps );
@@ -399,13 +385,14 @@ class PageArchive {
# Does this page already exist? We'll have to update it...
$article = new Article( $this->title );
- $options = 'FOR UPDATE';
+ $options = 'FOR UPDATE'; // lock page
$page = $dbw->selectRow( 'page',
array( 'page_id', 'page_latest' ),
array( 'page_namespace' => $this->title->getNamespace(),
'page_title' => $this->title->getDBkey() ),
__METHOD__,
- $options );
+ $options
+ );
if( $page ) {
$makepage = false;
# Page already exists. Import the history, and if necessary
@@ -462,50 +449,53 @@ class PageArchive {
$oldones ),
__METHOD__,
/* options */ array( 'ORDER BY' => 'ar_timestamp' )
- );
+ );
$ret = $dbw->resultObject( $result );
$rev_count = $dbw->numRows( $result );
+ if( !$rev_count ) {
+ wfDebug( __METHOD__.": no revisions to restore\n" );
+ return false; // ???
+ }
+
+ $ret->seek( $rev_count - 1 ); // move to last
+ $row = $ret->fetchObject(); // get newest archived rev
+ $ret->seek( 0 ); // move back
if( $makepage ) {
+ // Check the state of the newest to-be version...
+ if( !$unsuppress && ($row->ar_deleted & Revision::DELETED_TEXT) ) {
+ return false; // we can't leave the current revision like this!
+ }
+ // Safe to insert now...
$newid = $article->insertOn( $dbw );
$pageId = $newid;
+ } else {
+ // Check if a deleted revision will become the current revision...
+ if( $row->ar_timestamp > $previousTimestamp ) {
+ // Check the state of the newest to-be version...
+ if( !$unsuppress && ($row->ar_deleted & Revision::DELETED_TEXT) ) {
+ return false; // we can't leave the current revision like this!
+ }
+ }
}
$revision = null;
$restored = 0;
while( $row = $ret->fetchObject() ) {
- if( $row->ar_text_id ) {
- // Revision was deleted in 1.5+; text is in
- // the regular text table, use the reference.
- // Specify null here so the so the text is
- // dereferenced for page length info if needed.
- $revText = null;
- } else {
- // Revision was deleted in 1.4 or earlier.
- // Text is squashed into the archive row, and
- // a new text table entry will be created for it.
- $revText = Revision::getRevisionText( $row, 'ar_' );
- }
// Check for key dupes due to shitty archive integrity.
if( $row->ar_rev_id ) {
$exists = $dbw->selectField( 'revision', '1', array('rev_id' => $row->ar_rev_id), __METHOD__ );
if( $exists ) continue; // don't throw DB errors
}
-
- $revision = new Revision( array(
- 'page' => $pageId,
- 'id' => $row->ar_rev_id,
- 'text' => $revText,
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $row->ar_timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'text_id' => $row->ar_text_id,
- 'deleted' => $unsuppress ? 0 : $row->ar_deleted,
- 'len' => $row->ar_len
+ // Insert one revision at a time...maintaining deletion status
+ // unless we are specifically removing all restrictions...
+ $revision = Revision::newFromArchiveRow( $row,
+ array(
+ 'page' => $pageId,
+ 'deleted' => $unsuppress ? 0 : $row->ar_deleted
) );
+
$revision->insertOn( $dbw );
$restored++;
@@ -529,21 +519,13 @@ class PageArchive {
if( $newid || $wasnew ) {
// Update site stats, link tables, etc
$article->createUpdates( $revision );
- // We don't handle well with top revision deleted
- if( $revision->getVisibility() ) {
- $dbw->update( 'revision',
- array( 'rev_deleted' => 0 ),
- array( 'rev_id' => $revision->getId() ),
- __METHOD__
- );
- }
}
if( $newid ) {
- wfRunHooks( 'ArticleUndelete', array( &$this->title, true ) );
+ wfRunHooks( 'ArticleUndelete', array( &$this->title, true, $comment ) );
Article::onArticleCreate( $this->title );
} else {
- wfRunHooks( 'ArticleUndelete', array( &$this->title, false ) );
+ wfRunHooks( 'ArticleUndelete', array( &$this->title, false, $comment ) );
Article::onArticleEdit( $this->title );
}
@@ -569,7 +551,7 @@ class PageArchive {
*/
class UndeleteForm {
var $mAction, $mTarget, $mTimestamp, $mRestore, $mInvert, $mTargetObj;
- var $mTargetTimestamp, $mAllowed, $mComment, $mToken;
+ var $mTargetTimestamp, $mAllowed, $mCanView, $mComment, $mToken;
function UndeleteForm( $request, $par = "" ) {
global $wgUser;
@@ -594,16 +576,21 @@ class UndeleteForm {
$this->mTarget = $par;
}
if ( $wgUser->isAllowed( 'undelete' ) && !$wgUser->isBlocked() ) {
- $this->mAllowed = true;
- } else {
+ $this->mAllowed = true; // user can restore
+ $this->mCanView = true; // user can view content
+ } elseif ( $wgUser->isAllowed( 'deletedtext' ) ) {
+ $this->mAllowed = false; // user cannot restore
+ $this->mCanView = true; // user can view content
+ } else { // user can only view the list of revisions
$this->mAllowed = false;
+ $this->mCanView = false;
$this->mTimestamp = '';
$this->mRestore = false;
}
if ( $this->mTarget !== "" ) {
$this->mTargetObj = Title::newFromURL( $this->mTarget );
} else {
- $this->mTargetObj = NULL;
+ $this->mTargetObj = null;
}
if( $this->mRestore || $this->mInvert ) {
$timestamps = array();
@@ -642,7 +629,7 @@ class UndeleteForm {
$this->showList( $result );
}
} else {
- $wgOut->addWikiText( wfMsgHtml( 'undelete-header' ) );
+ $wgOut->addWikiMsg( 'undelete-header' );
}
return;
}
@@ -652,8 +639,15 @@ class UndeleteForm {
if( $this->mFile !== null ) {
$file = new ArchivedFile( $this->mTargetObj, '', $this->mFile );
// Check if user is allowed to see this file
- if( !$file->userCan( File::DELETED_FILE ) ) {
- $wgOut->permissionRequired( 'suppressrevision' );
+ if ( !$file->exists() ) {
+ $wgOut->addWikiMsg( 'filedelete-nofile', $this->mFile );
+ return;
+ } else if( !$file->userCan( File::DELETED_FILE ) ) {
+ if( $file->isDeleted( File::DELETED_RESTRICTED ) ) {
+ $wgOut->permissionRequired( 'suppressrevision' );
+ } else {
+ $wgOut->permissionRequired( 'deletedtext' );
+ }
return false;
} elseif ( !$wgUser->matchEditToken( $this->mToken, $this->mFile ) ) {
$this->showFileConfirmationForm( $this->mFile );
@@ -663,6 +657,11 @@ class UndeleteForm {
}
}
if( $this->mRestore && $this->mAction == "submit" ) {
+ global $wgUploadMaintenance;
+ if( $wgUploadMaintenance && $this->mTargetObj && $this->mTargetObj->getNamespace() == NS_FILE ) {
+ $wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n", array( 'filedelete-maintenance' ) );
+ return;
+ }
return $this->undelete();
}
if( $this->mInvert && $this->mAction == "submit" ) {
@@ -707,8 +706,12 @@ class UndeleteForm {
$wgOut->addHTML( "<ul>\n" );
while( $row = $result->fetchObject() ) {
$title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
- $link = $sk->makeKnownLinkObj( $undelete, htmlspecialchars( $title->getPrefixedText() ),
- 'target=' . $title->getPrefixedUrl() );
+ $link = $sk->linkKnown(
+ $undelete,
+ htmlspecialchars( $title->getPrefixedText() ),
+ array(),
+ array( 'target' => $title->getPrefixedText() )
+ );
$revs = wfMsgExt( 'undeleterevisions',
array( 'parseinline' ),
$wgLang->formatNum( $row->count ) );
@@ -741,14 +744,14 @@ class UndeleteForm {
return;
} else {
$wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
- $wgOut->addHTML( '<br/>' );
+ $wgOut->addHTML( '<br />' );
// and we are allowed to see...
}
}
$wgOut->setPageTitle( wfMsg( 'undeletepage' ) );
- $link = $skin->makeKnownLinkObj(
+ $link = $skin->linkKnown(
SpecialPage::getTitleFor( 'Undelete', $this->mTargetObj->getPrefixedDBkey() ),
htmlspecialchars( $this->mTargetObj->getPrefixedText() )
);
@@ -763,7 +766,7 @@ class UndeleteForm {
$wgOut->addHTML( '<hr />' );
}
} else {
- $wgOut->addHTML( wfMsgHtml( 'undelete-nodiff' ) );
+ $wgOut->addWikiMsg( 'undelete-nodiff' );
}
}
@@ -774,13 +777,36 @@ class UndeleteForm {
$t = htmlspecialchars( $wgLang->time( $timestamp, true ) );
$user = $skin->revUserTools( $rev );
- $wgOut->addHTML( '<p>' . wfMsgHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</p>' );
+ if( $this->mPreview ) {
+ $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
+ } else {
+ $openDiv = '<div id="mw-undelete-revision">';
+ }
+
+ // Revision delete links
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $this->mDiff ) {
+ $revdlink = ''; // diffs already have revision delete links
+ } else if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
+ if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) {
+ $revdlink = $skin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $this->mTargetObj->getPrefixedDBkey(),
+ 'ids' => $rev->getTimestamp()
+ );
+ $revdlink = $skin->revDeleteLink( $query,
+ $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
+ }
+ } else {
+ $revdlink = '';
+ }
+ $wgOut->addHTML( $openDiv . $revdlink . wfMsgWikiHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</div>' );
wfRunHooks( 'UndeleteShowRevision', array( $this->mTargetObj, $rev ) );
if( $this->mPreview ) {
- $wgOut->addHTML( "<hr />\n" );
-
//Hide [edit]s
$popts = $wgOut->parserOptions();
$popts->setEditSection( false );
@@ -797,7 +823,7 @@ class UndeleteForm {
Xml::openElement( 'div' ) .
Xml::openElement( 'form', array(
'method' => 'post',
- 'action' => $self->getLocalURL( "action=submit" ) ) ) .
+ 'action' => $self->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
Xml::element( 'input', array(
'type' => 'hidden',
'name' => 'target',
@@ -830,7 +856,7 @@ class UndeleteForm {
* @return string HTML
*/
function showDiff( $previousRev, $currentRev ) {
- global $wgOut, $wgUser;
+ global $wgOut;
$diffEngine = new DifferenceEngine();
$diffEngine->showDiffStyle();
@@ -852,39 +878,63 @@ class UndeleteForm {
$diffEngine->generateDiffBody(
$previousRev->getText(), $currentRev->getText() ) .
"</table>" .
- "</div>\n" );
-
+ "</div>\n"
+ );
}
private function diffHeader( $rev, $prefix ) {
- global $wgUser, $wgLang, $wgLang;
+ global $wgUser, $wgLang;
$sk = $wgUser->getSkin();
$isDeleted = !( $rev->getId() && $rev->getTitle() );
if( $isDeleted ) {
- /// @fixme $rev->getTitle() is null for deleted revs...?
+ /// @todo Fixme: $rev->getTitle() is null for deleted revs...?
$targetPage = SpecialPage::getTitleFor( 'Undelete' );
- $targetQuery = 'target=' .
- $this->mTargetObj->getPrefixedUrl() .
- '&timestamp=' .
- wfTimestamp( TS_MW, $rev->getTimestamp() );
+ $targetQuery = array(
+ 'target' => $this->mTargetObj->getPrefixedText(),
+ 'timestamp' => wfTimestamp( TS_MW, $rev->getTimestamp() )
+ );
} else {
- /// @fixme getId() may return non-zero for deleted revs...
+ /// @todo Fixme getId() may return non-zero for deleted revs...
$targetPage = $rev->getTitle();
- $targetQuery = 'oldid=' . $rev->getId();
+ $targetQuery = array( 'oldid' => $rev->getId() );
+ }
+ // Add show/hide deletion links if available
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
+ $del = ' ';
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $del .= $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $this->mTargetObj->getPrefixedDbkey(),
+ 'ids' => $rev->getTimestamp()
+ );
+ $del .= $sk->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
+ }
+ } else {
+ $del = '';
}
return
'<div id="mw-diff-'.$prefix.'title1"><strong>' .
- $sk->makeLinkObj( $targetPage,
- wfMsgHtml( 'revisionasof',
- $wgLang->timeanddate( $rev->getTimestamp(), true ) ),
- $targetQuery ) .
- ( $isDeleted ? ' ' . wfMsgHtml( 'deletedrev' ) : '' ) .
+ $sk->link(
+ $targetPage,
+ wfMsgHtml(
+ 'revisionasof',
+ htmlspecialchars( $wgLang->timeanddate( $rev->getTimestamp(), true ) ),
+ htmlspecialchars( $wgLang->date( $rev->getTimestamp(), true ) ),
+ htmlspecialchars( $wgLang->time( $rev->getTimestamp(), true ) )
+ ),
+ array(),
+ $targetQuery
+ ) .
'</strong></div>' .
'<div id="mw-diff-'.$prefix.'title2">' .
- $sk->revUserTools( $rev ) . '<br/>' .
+ $sk->revUserTools( $rev ) . '<br />' .
'</div>' .
'<div id="mw-diff-'.$prefix.'title3">' .
- $sk->revComment( $rev ) . '<br/>' .
+ $sk->revComment( $rev ) . $del . '<br />' .
'</div>';
}
@@ -927,8 +977,11 @@ class UndeleteForm {
$wgRequest->response()->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
$wgRequest->response()->header( 'Pragma: no-cache' );
- $store = FileStore::get( 'deleted' );
- $store->stream( $key );
+ global $IP;
+ require_once( "$IP/includes/StreamFile.php" );
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
+ wfStreamFile( $path );
}
private function showHistory( ) {
@@ -941,7 +994,7 @@ class UndeleteForm {
$wgOut->setPagetitle( wfMsg( 'viewdeletedpage' ) );
}
- $wgOut->addWikiText( wfMsgHtml( 'undeletepagetitle', $this->mTargetObj->getPrefixedText()) );
+ $wgOut->wrapWikiMsg( "<div class='mw-undelete-pagetitle'>\n$1</div>\n", array ( 'undeletepagetitle', $this->mTargetObj->getPrefixedText() ) );
$archive = new PageArchive( $this->mTargetObj );
/*
@@ -951,12 +1004,14 @@ class UndeleteForm {
return;
}
*/
+ $wgOut->addHTML( '<div class="mw-undelete-history">' );
if ( $this->mAllowed ) {
$wgOut->addWikiMsg( "undeletehistory" );
$wgOut->addWikiMsg( "undeleterevdel" );
} else {
$wgOut->addWikiMsg( "undeletehistorynoadmin" );
}
+ $wgOut->addHTML( '</div>' );
# List all stored revisions
$revisions = $archive->listRevisions();
@@ -987,7 +1042,7 @@ class UndeleteForm {
if ( $this->mAllowed ) {
$titleObj = SpecialPage::getTitleFor( "Undelete" );
- $action = $titleObj->getLocalURL( "action=submit" );
+ $action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
# Start the form here
$top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'undelete' ) );
$wgOut->addHTML( $top );
@@ -1021,7 +1076,7 @@ class UndeleteForm {
Xml::fieldset( wfMsg( 'undelete-fieldset-title' ) ) .
Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
"<tr>
- <td colspan='2'>" .
+ <td colspan='2' class='mw-undelete-extrahelp'>" .
wfMsgWikiHtml( 'undeleteextrahelp' ) .
"</td>
</tr>
@@ -1091,20 +1146,13 @@ class UndeleteForm {
private function formatRevisionRow( $row, $earliestLiveTime, $remaining, $sk ) {
global $wgUser, $wgLang;
- $rev = new Revision( array(
- 'page' => $this->mTargetObj->getArticleId(),
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $row->ar_timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'deleted' => $row->ar_deleted,
- 'len' => $row->ar_len ) );
-
+ $rev = Revision::newFromArchiveRow( $row,
+ array( 'page' => $this->mTargetObj->getArticleId() ) );
$stxt = '';
$ts = wfTimestamp( TS_MW, $row->ar_timestamp );
+ // Build checkboxen...
if( $this->mAllowed ) {
- if( $this->mInvert){
+ if( $this->mInvert ) {
if( in_array( $ts, $this->mTargetTimestamp ) ) {
$checkBox = Xml::check( "ts$ts");
} else {
@@ -1113,41 +1161,61 @@ class UndeleteForm {
} else {
$checkBox = Xml::check( "ts$ts" );
}
+ } else {
+ $checkBox = '';
+ }
+ // Build page & diff links...
+ if( $this->mCanView ) {
$titleObj = SpecialPage::getTitleFor( "Undelete" );
- $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
# Last link
if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
+ $pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
$last = wfMsgHtml('diff');
} else if( $remaining > 0 || ($earliestLiveTime && $ts > $earliestLiveTime) ) {
- $last = $sk->makeKnownLinkObj( $titleObj, wfMsgHtml('diff'),
- "target=" . $this->mTargetObj->getPrefixedUrl() . "&timestamp=$ts&diff=prev" );
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
+ $last = $sk->linkKnown(
+ $titleObj,
+ wfMsgHtml('diff'),
+ array(),
+ array(
+ 'target' => $this->mTargetObj->getPrefixedText(),
+ 'timestamp' => $ts,
+ 'diff' => 'prev'
+ )
+ );
} else {
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
$last = wfMsgHtml('diff');
}
} else {
- $checkBox = '';
- $pageLink = $wgLang->timeanddate( $ts, true );
+ $pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
$last = wfMsgHtml('diff');
}
+ // User links
$userLink = $sk->revUserTools( $rev );
-
- if(!is_null($size = $row->ar_len)) {
+ // Revision text size
+ if( !is_null($size = $row->ar_len) ) {
$stxt = $sk->formatRevisionSize( $size );
}
+ // Edit summary
$comment = $sk->revComment( $rev );
- $revdlink = '';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Revision delete links
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml('rev-delundel').')' );
+ $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
} else {
- $query = array( 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'artimestamp[]' => $ts
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $this->mTargetObj->getPrefixedDBkey(),
+ 'ids' => $ts
);
- $revdlink = $sk->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) );
+ $revdlink = $sk->revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
}
+ } else {
+ $revdlink = '';
}
-
return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
}
@@ -1177,17 +1245,22 @@ class UndeleteForm {
')';
$data = htmlspecialchars( $data );
$comment = $this->getFileComment( $file, $sk );
- $revdlink = '';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Add show/hide deletion links if available
+ $canHide = $wgUser->isAllowed( 'deleterevision' );
+ if( $canHide || ($file->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
if( !$file->userCan(File::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml('rev-delundel').')' );
+ $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
} else {
- $query = array( 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'fileid' => $row->fa_id
+ $query = array(
+ 'type' => 'filearchive',
+ 'target' => $this->mTargetObj->getPrefixedDBkey(),
+ 'ids' => $row->fa_id
);
- $revdlink = $sk->revDeleteLink( $query, $file->isDeleted( File::DELETED_RESTRICTED ) );
+ $revdlink = $sk->revDeleteLink( $query,
+ $file->isDeleted( File::DELETED_RESTRICTED ), $canHide );
}
+ } else {
+ $revdlink = '';
}
return "<li>$checkBox $revdlink $pageLink . . $userLink $data $comment</li>\n";
}
@@ -1199,11 +1272,20 @@ class UndeleteForm {
function getPageLink( $rev, $titleObj, $ts, $sk ) {
global $wgLang;
+ $time = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
+
if( !$rev->userCan(Revision::DELETED_TEXT) ) {
- return '<span class="history-deleted">' . $wgLang->timeanddate( $ts, true ) . '</span>';
+ return '<span class="history-deleted">' . $time . '</span>';
} else {
- $link = $sk->makeKnownLinkObj( $titleObj, $wgLang->timeanddate( $ts, true ),
- "target=".$this->mTargetObj->getPrefixedUrl()."&timestamp=$ts" );
+ $link = $sk->linkKnown(
+ $titleObj,
+ $time,
+ array(),
+ array(
+ 'target' => $this->mTargetObj->getPrefixedText(),
+ 'timestamp' => $ts
+ )
+ );
if( $rev->isDeleted(Revision::DELETED_TEXT) )
$link = '<span class="history-deleted">' . $link . '</span>';
return $link;
@@ -1220,10 +1302,16 @@ class UndeleteForm {
if( !$file->userCan(File::DELETED_FILE) ) {
return '<span class="history-deleted">' . $wgLang->timeanddate( $ts, true ) . '</span>';
} else {
- $link = $sk->makeKnownLinkObj( $titleObj, $wgLang->timeanddate( $ts, true ),
- "target=".$this->mTargetObj->getPrefixedUrl().
- "&file=$key" .
- "&token=" . urlencode( $wgUser->editToken( $key ) ) );
+ $link = $sk->linkKnown(
+ $titleObj,
+ $wgLang->timeanddate( $ts, true ),
+ array(),
+ array(
+ 'target' => $this->mTargetObj->getPrefixedText(),
+ 'file' => $key,
+ 'token' => $wgUser->editToken( $key )
+ )
+ );
if( $file->isDeleted(File::DELETED_FILE) )
$link = '<span class="history-deleted">' . $link . '</span>';
return $link;
@@ -1282,7 +1370,7 @@ class UndeleteForm {
$wgUser, $this->mComment) );
$skin = $wgUser->getSkin();
- $link = $skin->makeKnownLinkObj( $this->mTargetObj );
+ $link = $skin->linkKnown( $this->mTargetObj );
$wgOut->addHTML( wfMsgWikiHtml( 'undeletedpage', $link ) );
} else {
$wgOut->showFatalError( wfMsg( "cannotundelete" ) );
diff --git a/includes/specials/SpecialUnlockdb.php b/includes/specials/SpecialUnlockdb.php
index a3e8a0c4..fe38a48a 100644
--- a/includes/specials/SpecialUnlockdb.php
+++ b/includes/specials/SpecialUnlockdb.php
@@ -45,7 +45,7 @@ class DBUnlockForm {
$wgOut->setPagetitle( wfMsg( "unlockdb" ) );
$wgOut->addWikiMsg( "unlockdbtext" );
- if ( "" != $err ) {
+ if ( $err != "" ) {
$wgOut->setSubtitle( wfMsg( "formerror" ) );
$wgOut->addHTML( '<p class="error">' . htmlspecialchars( $err ) . "</p>\n" );
}
@@ -55,7 +55,7 @@ class DBUnlockForm {
$action = $titleObj->escapeLocalURL( "action=submit" );
$token = htmlspecialchars( $wgUser->editToken() );
- $wgOut->addHTML( <<<END
+ $wgOut->addHTML( <<<HTML
<form id="unlockdb" method="post" action="{$action}">
<table border="0">
@@ -74,7 +74,7 @@ class DBUnlockForm {
</table>
<input type="hidden" name="wpEditToken" value="{$token}" />
</form>
-END
+HTML
);
}
diff --git a/includes/specials/SpecialUnusedcategories.php b/includes/specials/SpecialUnusedcategories.php
index 406f7944..fe7d7a17 100644
--- a/includes/specials/SpecialUnusedcategories.php
+++ b/includes/specials/SpecialUnusedcategories.php
@@ -34,7 +34,7 @@ class UnusedCategoriesPage extends QueryPage {
function formatResult( $skin, $result ) {
$title = Title::makeTitle( NS_CATEGORY, $result->title );
- return $skin->makeLinkObj( $title, $title->getText() );
+ return $skin->link( $title, $title->getText() );
}
}
diff --git a/includes/specials/SpecialUnusedimages.php b/includes/specials/SpecialUnusedimages.php
index fa66555d..9d9868f6 100644
--- a/includes/specials/SpecialUnusedimages.php
+++ b/includes/specials/SpecialUnusedimages.php
@@ -25,9 +25,19 @@ class UnusedimagesPage extends ImageQueryPage {
global $wgCountCategorizedImagesAsUsed, $wgDBtype;
$dbr = wfGetDB( DB_SLAVE );
- $epoch = $wgDBtype == 'mysql' ?
- 'UNIX_TIMESTAMP(img_timestamp)' :
- 'EXTRACT(epoch FROM img_timestamp)';
+ switch ($wgDBtype) {
+ case 'mysql':
+ $epoch = 'UNIX_TIMESTAMP(img_timestamp)';
+ break;
+ case 'oracle':
+ $epoch = '((trunc(img_timestamp) - to_date(\'19700101\',\'YYYYMMDD\')) * 86400)';
+ break;
+ case 'sqlite':
+ $epoch = 'img_timestamp';
+ break;
+ default:
+ $epoch = 'EXTRACT(epoch FROM img_timestamp)';
+ }
if ( $wgCountCategorizedImagesAsUsed ) {
list( $page, $image, $imagelinks, $categorylinks ) = $dbr->tableNamesN( 'page', 'image', 'imagelinks', 'categorylinks' );
diff --git a/includes/specials/SpecialUnusedtemplates.php b/includes/specials/SpecialUnusedtemplates.php
index 89acd09c..6ddbab32 100644
--- a/includes/specials/SpecialUnusedtemplates.php
+++ b/includes/specials/SpecialUnusedtemplates.php
@@ -33,11 +33,18 @@ class UnusedtemplatesPage extends QueryPage {
function formatResult( $skin, $result ) {
$title = Title::makeTitle( NS_TEMPLATE, $result->title );
- $pageLink = $skin->makeKnownLinkObj( $title, '', 'redirect=no' );
- $wlhLink = $skin->makeKnownLinkObj(
+ $pageLink = $skin->linkKnown(
+ $title,
+ null,
+ array(),
+ array( 'redirect' => 'no' )
+ );
+ $wlhLink = $skin->linkKnown(
SpecialPage::getTitleFor( 'Whatlinkshere' ),
wfMsgHtml( 'unusedtemplateswlh' ),
- 'target=' . $title->getPrefixedUrl() );
+ array(),
+ array( 'target' => $title->getPrefixedText() )
+ );
return wfSpecialList( $pageLink, $wlhLink );
}
diff --git a/includes/specials/SpecialUnwatchedpages.php b/includes/specials/SpecialUnwatchedpages.php
index 64ab3729..483afdaa 100644
--- a/includes/specials/SpecialUnwatchedpages.php
+++ b/includes/specials/SpecialUnwatchedpages.php
@@ -44,8 +44,16 @@ class UnwatchedpagesPage extends QueryPage {
$nt = Title::makeTitle( $result->namespace, $result->title );
$text = $wgContLang->convert( $nt->getPrefixedText() );
- $plink = $skin->makeKnownLinkObj( $nt, htmlspecialchars( $text ) );
- $wlink = $skin->makeKnownLinkObj( $nt, wfMsgHtml( 'watch' ), 'action=watch' );
+ $plink = $skin->linkKnown(
+ $nt,
+ htmlspecialchars( $text )
+ );
+ $wlink = $skin->linkKnown(
+ $nt,
+ wfMsgHtml( 'watch' ),
+ array(),
+ array( 'action' => 'watch' )
+ );
return wfSpecialList( $plink, $wlink );
}
diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php
index 4c5bb160..9569945d 100644
--- a/includes/specials/SpecialUpload.php
+++ b/includes/specials/SpecialUpload.php
@@ -2,250 +2,139 @@
/**
* @file
* @ingroup SpecialPage
+ * @ingroup Upload
+ *
+ * Form for handling uploads and special page.
+ *
*/
-
-/**
- * Entry point
- */
-function wfSpecialUpload() {
- global $wgRequest;
- $form = new UploadForm( $wgRequest );
- $form->execute();
-}
-
-/**
- * implements Special:Upload
- * @ingroup SpecialPage
- */
-class UploadForm {
- const SUCCESS = 0;
- const BEFORE_PROCESSING = 1;
- const LARGE_FILE_SERVER = 2;
- const EMPTY_FILE = 3;
- const MIN_LENGTH_PARTNAME = 4;
- const ILLEGAL_FILENAME = 5;
- const PROTECTED_PAGE = 6;
- const OVERWRITE_EXISTING_FILE = 7;
- const FILETYPE_MISSING = 8;
- const FILETYPE_BADTYPE = 9;
- const VERIFICATION_ERROR = 10;
- const UPLOAD_VERIFICATION_ERROR = 11;
- const UPLOAD_WARNING = 12;
- const INTERNAL_ERROR = 13;
-
- /**#@+
- * @access private
- */
- var $mComment, $mLicense, $mIgnoreWarning, $mCurlError;
- var $mDestName, $mTempPath, $mFileSize, $mFileProps;
- var $mCopyrightStatus, $mCopyrightSource, $mReUpload, $mAction, $mUploadClicked;
- var $mSrcName, $mSessionKey, $mStashed, $mDesiredDestName, $mRemoveTempFile, $mSourceType;
- var $mDestWarningAck, $mCurlDestHandle;
- var $mLocalFile;
-
- # Placeholders for text injection by hooks (must be HTML)
- # extensions should take care to _append_ to the present value
- var $uploadFormTextTop;
- var $uploadFormTextAfterSummary;
-
- const SESSION_VERSION = 1;
- /**#@-*/
-
+class SpecialUpload extends SpecialPage {
/**
* Constructor : initialise object
* Get data POSTed through the form and assign them to the object
- * @param $request Data posted.
+ * @param WebRequest $request Data posted.
*/
- function UploadForm( &$request ) {
- global $wgAllowCopyUploads;
- $this->mDesiredDestName = $request->getText( 'wpDestFile' );
- $this->mIgnoreWarning = $request->getCheck( 'wpIgnoreWarning' );
- $this->mComment = $request->getText( 'wpUploadDescription' );
- $this->mForReUpload = $request->getBool( 'wpForReUpload' );
- $this->mReUpload = $request->getCheck( 'wpReUpload' );
-
- if( !$request->wasPosted() ) {
- # GET requests just give the main form; no data except destination
- # filename and description
- return;
- }
+ public function __construct( $request = null ) {
+ global $wgRequest;
- # Placeholders for text injection by hooks (empty per default)
- $this->uploadFormTextTop = "";
- $this->uploadFormTextAfterSummary = "";
- $this->mUploadClicked = $request->getCheck( 'wpUpload' );
+ parent::__construct( 'Upload', 'upload' );
- $this->mLicense = $request->getText( 'wpLicense' );
- $this->mCopyrightStatus = $request->getText( 'wpUploadCopyStatus' );
- $this->mCopyrightSource = $request->getText( 'wpUploadSource' );
- $this->mWatchthis = $request->getBool( 'wpWatchthis' );
- $this->mSourceType = $request->getText( 'wpSourceType' );
- $this->mDestWarningAck = $request->getText( 'wpDestFileWarningAck' );
-
- $this->mAction = $request->getVal( 'action' );
-
- $this->mSessionKey = $request->getInt( 'wpSessionKey' );
- if( !empty( $this->mSessionKey ) &&
- isset( $_SESSION['wsUploadData'][$this->mSessionKey]['version'] ) &&
- $_SESSION['wsUploadData'][$this->mSessionKey]['version'] == self::SESSION_VERSION ) {
- /**
- * Confirming a temporarily stashed upload.
- * We don't want path names to be forged, so we keep
- * them in the session on the server and just give
- * an opaque key to the user agent.
- */
- $data = $_SESSION['wsUploadData'][$this->mSessionKey];
- $this->mTempPath = $data['mTempPath'];
- $this->mFileSize = $data['mFileSize'];
- $this->mSrcName = $data['mSrcName'];
- $this->mFileProps = $data['mFileProps'];
- $this->mCurlError = 0/*UPLOAD_ERR_OK*/;
- $this->mStashed = true;
- $this->mRemoveTempFile = false;
- } else {
- /**
- *Check for a newly uploaded file.
- */
- if( $wgAllowCopyUploads && $this->mSourceType == 'web' ) {
- $this->initializeFromUrl( $request );
- } else {
- $this->initializeFromUpload( $request );
- }
- }
+ $this->loadRequest( is_null( $request ) ? $wgRequest : $request );
}
- /**
- * Initialize the uploaded file from PHP data
- * @access private
- */
- function initializeFromUpload( $request ) {
- $this->mTempPath = $request->getFileTempName( 'wpUploadFile' );
- $this->mFileSize = $request->getFileSize( 'wpUploadFile' );
- $this->mSrcName = $request->getFileName( 'wpUploadFile' );
- $this->mCurlError = $request->getUploadError( 'wpUploadFile' );
- $this->mSessionKey = false;
- $this->mStashed = false;
- $this->mRemoveTempFile = false; // PHP will handle this
- }
+ /** Misc variables **/
+ protected $mRequest; // The WebRequest or FauxRequest this form is supposed to handle
+ protected $mSourceType;
+ protected $mUpload;
+ protected $mLocalFile;
+ protected $mUploadClicked;
+
+ /** User input variables from the "description" section **/
+ public $mDesiredDestName; // The requested target file name
+ protected $mComment;
+ protected $mLicense;
+
+ /** User input variables from the root section **/
+ protected $mIgnoreWarning;
+ protected $mWatchThis;
+ protected $mCopyrightStatus;
+ protected $mCopyrightSource;
+
+ /** Hidden variables **/
+ protected $mDestWarningAck;
+ protected $mForReUpload; // The user followed an "overwrite this file" link
+ protected $mCancelUpload; // The user clicked "Cancel and return to upload form" button
+ protected $mTokenOk;
+ protected $mUploadSuccessful = false; // Subclasses can use this to determine whether a file was uploaded
+
+ /** Text injection points for hooks not using HTMLForm **/
+ public $uploadFormTextTop;
+ public $uploadFormTextAfterSummary;
+
/**
- * Copy a web file to a temporary file
- * @access private
+ * Initialize instance variables from request and create an Upload handler
+ *
+ * @param WebRequest $request The request to extract variables from
*/
- function initializeFromUrl( $request ) {
- global $wgTmpDirectory;
- $url = $request->getText( 'wpUploadFileURL' );
- $local_file = tempnam( $wgTmpDirectory, 'WEBUPLOAD' );
-
- $this->mTempPath = $local_file;
- $this->mFileSize = 0; # Will be set by curlCopy
- $this->mCurlError = $this->curlCopy( $url, $local_file );
- $pathParts = explode( '/', $url );
- $this->mSrcName = array_pop( $pathParts );
- $this->mSessionKey = false;
- $this->mStashed = false;
-
- // PHP won't auto-cleanup the file
- $this->mRemoveTempFile = file_exists( $local_file );
- }
+ protected function loadRequest( $request ) {
+ global $wgUser;
- /**
- * Safe copy from URL
- * Returns true if there was an error, false otherwise
- */
- private function curlCopy( $url, $dest ) {
- global $wgUser, $wgOut, $wgHTTPProxy;
+ $this->mRequest = $request;
+ $this->mSourceType = $request->getVal( 'wpSourceType', 'file' );
+ $this->mUpload = UploadBase::createFromRequest( $request );
+ $this->mUploadClicked = $request->wasPosted()
+ && ( $request->getCheck( 'wpUpload' )
+ || $request->getCheck( 'wpUploadIgnoreWarning' ) );
- if( !$wgUser->isAllowed( 'upload_by_url' ) ) {
- $wgOut->permissionRequired( 'upload_by_url' );
- return true;
- }
+ // Guess the desired name from the filename if not provided
+ $this->mDesiredDestName = $request->getText( 'wpDestFile' );
+ if( !$this->mDesiredDestName && $request->getFileName( 'wpUploadFile' ) !== null )
+ $this->mDesiredDestName = $request->getFileName( 'wpUploadFile' );
+ $this->mComment = $request->getText( 'wpUploadDescription' );
+ $this->mLicense = $request->getText( 'wpLicense' );
- # Maybe remove some pasting blanks :-)
- $url = trim( $url );
- if( stripos($url, 'http://') !== 0 && stripos($url, 'ftp://') !== 0 ) {
- # Only HTTP or FTP URLs
- $wgOut->showErrorPage( 'upload-proto-error', 'upload-proto-error-text' );
- return true;
- }
- # Open temporary file
- $this->mCurlDestHandle = @fopen( $this->mTempPath, "wb" );
- if( $this->mCurlDestHandle === false ) {
- # Could not open temporary file to write in
- $wgOut->showErrorPage( 'upload-file-error', 'upload-file-error-text');
- return true;
- }
+ $this->mDestWarningAck = $request->getText( 'wpDestFileWarningAck' );
+ $this->mIgnoreWarning = $request->getCheck( 'wpIgnoreWarning' )
+ || $request->getCheck( 'wpUploadIgnoreWarning' );
+ $this->mWatchthis = $request->getBool( 'wpWatchthis' ) && $wgUser->isLoggedIn();
+ $this->mCopyrightStatus = $request->getText( 'wpUploadCopyStatus' );
+ $this->mCopyrightSource = $request->getText( 'wpUploadSource' );
- $ch = curl_init();
- curl_setopt( $ch, CURLOPT_HTTP_VERSION, 1.0); # Probably not needed, but apparently can work around some bug
- curl_setopt( $ch, CURLOPT_TIMEOUT, 10); # 10 seconds timeout
- curl_setopt( $ch, CURLOPT_LOW_SPEED_LIMIT, 512); # 0.5KB per second minimum transfer speed
- curl_setopt( $ch, CURLOPT_URL, $url);
- if( $wgHTTPProxy ) {
- curl_setopt( $ch, CURLOPT_PROXY, $wgHTTPProxy );
- }
- curl_setopt( $ch, CURLOPT_WRITEFUNCTION, array( $this, 'uploadCurlCallback' ) );
- curl_exec( $ch );
- $error = curl_errno( $ch ) ? true : false;
- $errornum = curl_errno( $ch );
- // if ( $error ) print curl_error ( $ch ) ; # Debugging output
- curl_close( $ch );
-
- fclose( $this->mCurlDestHandle );
- unset( $this->mCurlDestHandle );
- if( $error ) {
- unlink( $dest );
- if( wfEmptyMsg( "upload-curl-error$errornum", wfMsg("upload-curl-error$errornum") ) )
- $wgOut->showErrorPage( 'upload-misc-error', 'upload-misc-error-text' );
- else
- $wgOut->showErrorPage( "upload-curl-error$errornum", "upload-curl-error$errornum-text" );
- }
- return $error;
+ $this->mForReUpload = $request->getBool( 'wpForReUpload' ); // updating a file
+ $this->mCancelUpload = $request->getCheck( 'wpCancelUpload' )
+ || $request->getCheck( 'wpReUpload' ); // b/w compat
+
+ // If it was posted check for the token (no remote POST'ing with user credentials)
+ $token = $request->getVal( 'wpEditToken' );
+ if( $this->mSourceType == 'file' && $token == null ) {
+ // Skip token check for file uploads as that can't be faked via JS...
+ // Some client-side tools don't expect to need to send wpEditToken
+ // with their submissions, as that's new in 1.16.
+ $this->mTokenOk = true;
+ } else {
+ $this->mTokenOk = $wgUser->matchEditToken( $token );
+ }
+
+ $this->uploadFormTextTop = '';
+ $this->uploadFormTextAfterSummary = '';
}
/**
- * Callback function for CURL-based web transfer
- * Write data to file unless we've passed the length limit;
- * if so, abort immediately.
- * @access private
+ * This page can be shown if uploading is enabled.
+ * Handle permission checking elsewhere in order to be able to show
+ * custom error messages.
+ *
+ * @param User $user
+ * @return bool
*/
- function uploadCurlCallback( $ch, $data ) {
- global $wgMaxUploadSize;
- $length = strlen( $data );
- $this->mFileSize += $length;
- if( $this->mFileSize > $wgMaxUploadSize ) {
- return 0;
- }
- fwrite( $this->mCurlDestHandle, $data );
- return $length;
+ public function userCanExecute( $user ) {
+ return UploadBase::isEnabled() && parent::userCanExecute( $user );
}
/**
- * Start doing stuff
- * @access public
+ * Special page entry point
*/
- function execute() {
- global $wgUser, $wgOut;
- global $wgEnableUploads;
+ public function execute( $par ) {
+ global $wgUser, $wgOut, $wgRequest;
- # Check php's file_uploads setting
- if( !wfIniGetBool( 'file_uploads' ) ) {
- $wgOut->showErrorPage( 'uploaddisabled', 'php-uploaddisabledtext', array( $this->mDesiredDestName ) );
- return;
- }
+ $this->setHeaders();
+ $this->outputHeader();
# Check uploading enabled
- if( !$wgEnableUploads ) {
- $wgOut->showErrorPage( 'uploaddisabled', 'uploaddisabledtext', array( $this->mDesiredDestName ) );
+ if( !UploadBase::isEnabled() ) {
+ $wgOut->showErrorPage( 'uploaddisabled', 'uploaddisabledtext' );
return;
}
# Check permissions
+ global $wgGroupPermissions;
if( !$wgUser->isAllowed( 'upload' ) ) {
- if( !$wgUser->isLoggedIn() ) {
+ if( !$wgUser->isLoggedIn() && ( $wgGroupPermissions['user']['upload']
+ || $wgGroupPermissions['autoconfirmed']['upload'] ) ) {
+ // Custom message if logged-in users without any special rights can upload
$wgOut->showErrorPage( 'uploadnologin', 'uploadnologintext' );
} else {
$wgOut->permissionRequired( 'upload' );
@@ -259,459 +148,490 @@ class UploadForm {
return;
}
+ # Check whether we actually want to allow changing stuff
if( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
- if( $this->mReUpload ) {
- if( !$this->unsaveUploadedFile() ) {
+ # Unsave the temporary file in case this was a cancelled upload
+ if ( $this->mCancelUpload ) {
+ if ( !$this->unsaveUploadedFile() )
+ # Something went wrong, so unsaveUploadedFile showed a warning
return;
- }
- # Because it is probably checked and shouldn't be
- $this->mIgnoreWarning = false;
-
- $this->mainUploadForm();
- } else if( 'submit' == $this->mAction || $this->mUploadClicked ) {
+ }
+
+ # Process upload or show a form
+ if ( $this->mTokenOk && !$this->mCancelUpload
+ && ( $this->mUpload && $this->mUploadClicked ) ) {
$this->processUpload();
} else {
- $this->mainUploadForm();
+ # Backwards compatibility hook
+ if( !wfRunHooks( 'UploadForm:initial', array( &$this ) ) )
+ {
+ wfDebug( "Hook 'UploadForm:initial' broke output of the upload form" );
+ return;
+ }
+
+ $this->showUploadForm( $this->getUploadForm() );
}
- $this->cleanupTempFile();
+ # Cleanup
+ if ( $this->mUpload )
+ $this->mUpload->cleanupTempFile();
}
/**
- * Do the upload
- * Checks are made in SpecialUpload::execute()
+ * Show the main upload form
*
- * @access private
+ * @param mixed $form An HTMLForm instance or HTML string to show
*/
- function processUpload(){
- global $wgUser, $wgOut, $wgFileExtensions, $wgLang;
- $details = null;
- $value = null;
- $value = $this->internalProcessUpload( $details );
-
- switch($value) {
- case self::SUCCESS:
- $wgOut->redirect( $this->mLocalFile->getTitle()->getFullURL() );
- break;
-
- case self::BEFORE_PROCESSING:
- break;
-
- case self::LARGE_FILE_SERVER:
- $this->mainUploadForm( wfMsgHtml( 'largefileserver' ) );
- break;
-
- case self::EMPTY_FILE:
- $this->mainUploadForm( wfMsgHtml( 'emptyfile' ) );
- break;
-
- case self::MIN_LENGTH_PARTNAME:
- $this->mainUploadForm( wfMsgHtml( 'minlength1' ) );
- break;
-
- case self::ILLEGAL_FILENAME:
- $filtered = $details['filtered'];
- $this->uploadError( wfMsgWikiHtml( 'illegalfilename', htmlspecialchars( $filtered ) ) );
- break;
-
- case self::PROTECTED_PAGE:
- $wgOut->showPermissionsErrorPage( $details['permissionserrors'] );
- break;
+ protected function showUploadForm( $form ) {
+ # Add links if file was previously deleted
+ if ( !$this->mDesiredDestName ) {
+ $this->showViewDeletedLinks();
+ }
+
+ if ( $form instanceof HTMLForm ) {
+ $form->show();
+ } else {
+ global $wgOut;
+ $wgOut->addHTML( $form );
+ }
+
+ }
- case self::OVERWRITE_EXISTING_FILE:
- $errorText = $details['overwrite'];
- $this->uploadError( $wgOut->parse( $errorText ) );
- break;
+ /**
+ * Get an UploadForm instance with title and text properly set.
+ *
+ * @param string $message HTML string to add to the form
+ * @param string $sessionKey Session key in case this is a stashed upload
+ * @return UploadForm
+ */
+ protected function getUploadForm( $message = '', $sessionKey = '', $hideIgnoreWarning = false ) {
+ global $wgOut;
+
+ # Initialize form
+ $form = new UploadForm( array(
+ 'watch' => $this->getWatchCheck(),
+ 'forreupload' => $this->mForReUpload,
+ 'sessionkey' => $sessionKey,
+ 'hideignorewarning' => $hideIgnoreWarning,
+ 'destwarningack' => (bool)$this->mDestWarningAck,
+
+ 'texttop' => $this->uploadFormTextTop,
+ 'textaftersummary' => $this->uploadFormTextAfterSummary,
+ 'destfile' => $this->mDesiredDestName,
+ ) );
+ $form->setTitle( $this->getTitle() );
+
+ # Check the token, but only if necessary
+ if( !$this->mTokenOk && !$this->mCancelUpload
+ && ( $this->mUpload && $this->mUploadClicked ) ) {
+ $form->addPreText( wfMsgExt( 'session_fail_preview', 'parseinline' ) );
+ }
+
+ # Add text to form
+ $form->addPreText( '<div id="uploadtext">' .
+ wfMsgExt( 'uploadtext', 'parse', array( $this->mDesiredDestName ) ) .
+ '</div>' );
+ # Add upload error message
+ $form->addPreText( $message );
+
+ # Add footer to form
+ $uploadFooter = wfMsgNoTrans( 'uploadfooter' );
+ if ( $uploadFooter != '-' && !wfEmptyMsg( 'uploadfooter', $uploadFooter ) ) {
+ $form->addPostText( '<div id="mw-upload-footer-message">'
+ . $wgOut->parse( $uploadFooter ) . "</div>\n" );
+ }
+
+ return $form;
- case self::FILETYPE_MISSING:
- $this->uploadError( wfMsgExt( 'filetype-missing', array ( 'parseinline' ) ) );
- break;
+ }
- case self::FILETYPE_BADTYPE:
- $finalExt = $details['finalExt'];
- $this->uploadError(
- wfMsgExt( 'filetype-banned-type',
- array( 'parseinline' ),
- htmlspecialchars( $finalExt ),
- $wgLang->commaList( $wgFileExtensions ),
- $wgLang->formatNum( count($wgFileExtensions) )
+ /**
+ * Shows the "view X deleted revivions link""
+ */
+ protected function showViewDeletedLinks() {
+ global $wgOut, $wgUser;
+
+ $title = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
+ // Show a subtitle link to deleted revisions (to sysops et al only)
+ if( $title instanceof Title ) {
+ $count = $title->isDeleted();
+ if ( $count > 0 && $wgUser->isAllowed( 'deletedhistory' ) ) {
+ $link = wfMsgExt(
+ $wgUser->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted',
+ array( 'parse', 'replaceafter' ),
+ $wgUser->getSkin()->linkKnown(
+ SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
+ wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $count )
)
);
- break;
-
- case self::VERIFICATION_ERROR:
- $veri = $details['veri'];
- $this->uploadError( $veri->toString() );
- break;
-
- case self::UPLOAD_VERIFICATION_ERROR:
- $error = $details['error'];
- $this->uploadError( $error );
- break;
-
- case self::UPLOAD_WARNING:
- $warning = $details['warning'];
- $this->uploadWarning( $warning );
- break;
-
- case self::INTERNAL_ERROR:
- $internal = $details['internal'];
- $this->showError( $internal );
- break;
+ $wgOut->addHTML( "<div id=\"contentSub2\">{$link}</div>" );
+ }
+ }
- default:
- throw new MWException( __METHOD__ . ": Unknown value `{$value}`" );
- }
+ // Show the relevant lines from deletion log (for still deleted files only)
+ if( $title instanceof Title && $title->isDeletedQuick() && !$title->exists() ) {
+ $this->showDeletionLog( $wgOut, $title->getPrefixedText() );
+ }
}
/**
- * Really do the upload
- * Checks are made in SpecialUpload::execute()
+ * Stashes the upload and shows the main upload form.
*
- * @param array $resultDetails contains result-specific dict of additional values
+ * Note: only errors that can be handled by changing the name or
+ * description should be redirected here. It should be assumed that the
+ * file itself is sane and has passed UploadBase::verifyFile. This
+ * essentially means that UploadBase::VERIFICATION_ERROR and
+ * UploadBase::EMPTY_FILE should not be passed here.
*
- * @access private
+ * @param string $message HTML message to be passed to mainUploadForm
+ */
+ protected function showRecoverableUploadError( $message ) {
+ $sessionKey = $this->mUpload->stashSession();
+ $message = '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n" .
+ '<div class="error">' . $message . "</div>\n";
+
+ $form = $this->getUploadForm( $message, $sessionKey );
+ $form->setSubmitText( wfMsg( 'upload-tryagain' ) );
+ $this->showUploadForm( $form );
+ }
+ /**
+ * Stashes the upload, shows the main form, but adds an "continue anyway button".
+ * Also checks whether there are actually warnings to display.
+ *
+ * @param array $warnings
+ * @return boolean true if warnings were displayed, false if there are no
+ * warnings and the should continue processing like there was no warning
*/
- function internalProcessUpload( &$resultDetails ) {
+ protected function showUploadWarning( $warnings ) {
global $wgUser;
- if( !wfRunHooks( 'UploadForm:BeforeProcessing', array( &$this ) ) )
+ # If there are no warnings, or warnings we can ignore, return early.
+ # mDestWarningAck is set when some javascript has shown the warning
+ # to the user. mForReUpload is set when the user clicks the "upload a
+ # new version" link.
+ if ( !$warnings || ( count( $warnings ) == 1 &&
+ isset( $warnings['exists'] ) &&
+ ( $this->mDestWarningAck || $this->mForReUpload ) ) )
{
- wfDebug( "Hook 'UploadForm:BeforeProcessing' broke processing the file.\n" );
- return self::BEFORE_PROCESSING;
+ return false;
}
- /**
- * If there was no filename or a zero size given, give up quick.
- */
- if( trim( $this->mSrcName ) == '' || empty( $this->mFileSize ) ) {
- return self::EMPTY_FILE;
- }
+ $sessionKey = $this->mUpload->stashSession();
- /* Check for curl error */
- if( $this->mCurlError ) {
- return self::BEFORE_PROCESSING;
- }
+ $sk = $wgUser->getSkin();
- /**
- * Chop off any directories in the given filename. Then
- * filter out illegal characters, and try to make a legible name
- * out of it. We'll strip some silently that Title would die on.
- */
- if( $this->mDesiredDestName ) {
- $basename = $this->mDesiredDestName;
- } else {
- $basename = $this->mSrcName;
- }
- $filtered = wfStripIllegalFilenameChars( $basename );
-
- /* Normalize to title form before we do any further processing */
- $nt = Title::makeTitleSafe( NS_FILE, $filtered );
- if( is_null( $nt ) ) {
- $resultDetails = array( 'filtered' => $filtered );
- return self::ILLEGAL_FILENAME;
+ $warningHtml = '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n"
+ . '<ul class="warning">';
+ foreach( $warnings as $warning => $args ) {
+ $msg = '';
+ if( $warning == 'exists' ) {
+ $msg = "\t<li>" . self::getExistsWarning( $args ) . "</li>\n";
+ } elseif( $warning == 'duplicate' ) {
+ $msg = self::getDupeWarning( $args );
+ } elseif( $warning == 'duplicate-archive' ) {
+ $msg = "\t<li>" . wfMsgExt( 'file-deleted-duplicate', 'parseinline',
+ array( Title::makeTitle( NS_FILE, $args )->getPrefixedText() ) )
+ . "</li>\n";
+ } else {
+ if ( $args === true )
+ $args = array();
+ elseif ( !is_array( $args ) )
+ $args = array( $args );
+ $msg = "\t<li>" . wfMsgExt( $warning, 'parseinline', $args ) . "</li>\n";
+ }
+ $warningHtml .= $msg;
}
- $filtered = $nt->getDBkey();
+ $warningHtml .= "</ul>\n";
+ $warningHtml .= wfMsgExt( 'uploadwarning-text', 'parse' );
+
+ $form = $this->getUploadForm( $warningHtml, $sessionKey, /* $hideIgnoreWarning */ true );
+ $form->setSubmitText( wfMsg( 'upload-tryagain' ) );
+ $form->addButton( 'wpUploadIgnoreWarning', wfMsg( 'ignorewarning' ) );
+ $form->addButton( 'wpCancelUpload', wfMsg( 'reuploaddesc' ) );
+
+ $this->showUploadForm( $form );
- /**
- * We'll want to blacklist against *any* 'extension', and use
- * only the final one for the whitelist.
- */
- list( $partname, $ext ) = $this->splitExtensions( $filtered );
-
- if( count( $ext ) ) {
- $finalExt = $ext[count( $ext ) - 1];
- } else {
- $finalExt = '';
- }
+ # Indicate that we showed a form
+ return true;
+ }
- # If there was more than one "extension", reassemble the base
- # filename to prevent bogus complaints about length
- if( count( $ext ) > 1 ) {
- for( $i = 0; $i < count( $ext ) - 1; $i++ )
- $partname .= '.' . $ext[$i];
- }
+ /**
+ * Show the upload form with error message, but do not stash the file.
+ *
+ * @param string $message
+ */
+ protected function showUploadError( $message ) {
+ $message = '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n" .
+ '<div class="error">' . $message . "</div>\n";
+ $this->showUploadForm( $this->getUploadForm( $message ) );
+ }
- if( strlen( $partname ) < 1 ) {
- return self::MIN_LENGTH_PARTNAME;
- }
+ /**
+ * Do the upload.
+ * Checks are made in SpecialUpload::execute()
+ */
+ protected function processUpload() {
+ global $wgUser, $wgOut;
- $this->mLocalFile = wfLocalFile( $nt );
- $this->mDestName = $this->mLocalFile->getName();
-
- /**
- * If the image is protected, non-sysop users won't be able
- * to modify it by uploading a new revision.
- */
- $permErrors = $nt->getUserPermissionsErrors( 'edit', $wgUser );
- $permErrorsUpload = $nt->getUserPermissionsErrors( 'upload', $wgUser );
- $permErrorsCreate = ( $nt->exists() ? array() : $nt->getUserPermissionsErrors( 'create', $wgUser ) );
-
- if( $permErrors || $permErrorsUpload || $permErrorsCreate ) {
- // merge all the problems into one list, avoiding duplicates
- $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsUpload, $permErrors ) );
- $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsCreate, $permErrors ) );
- $resultDetails = array( 'permissionserrors' => $permErrors );
- return self::PROTECTED_PAGE;
+ // Verify permissions
+ $permErrors = $this->mUpload->verifyPermissions( $wgUser );
+ if( $permErrors !== true ) {
+ $wgOut->showPermissionsErrorPage( $permErrors );
+ return;
}
- /**
- * In some cases we may forbid overwriting of existing files.
- */
- $overwrite = $this->checkOverwrite( $this->mDestName );
- if( $overwrite !== true ) {
- $resultDetails = array( 'overwrite' => $overwrite );
- return self::OVERWRITE_EXISTING_FILE;
+ // Fetch the file if required
+ $status = $this->mUpload->fetchFile();
+ if( !$status->isOK() ) {
+ $this->showUploadForm( $this->getUploadForm( $wgOut->parse( $status->getWikiText() ) ) );
+ return;
}
- /* Don't allow users to override the blacklist (check file extension) */
- global $wgCheckFileExtensions, $wgStrictFileExtensions;
- global $wgFileExtensions, $wgFileBlacklist;
- if ($finalExt == '') {
- return self::FILETYPE_MISSING;
- } elseif ( $this->checkFileExtensionList( $ext, $wgFileBlacklist ) ||
- ($wgCheckFileExtensions && $wgStrictFileExtensions &&
- !$this->checkFileExtension( $finalExt, $wgFileExtensions ) ) ) {
- $resultDetails = array( 'finalExt' => $finalExt );
- return self::FILETYPE_BADTYPE;
+ // Deprecated backwards compatibility hook
+ if( !wfRunHooks( 'UploadForm:BeforeProcessing', array( &$this ) ) )
+ {
+ wfDebug( "Hook 'UploadForm:BeforeProcessing' broke processing the file.\n" );
+ return array( 'status' => UploadBase::BEFORE_PROCESSING );
}
- /**
- * Look at the contents of the file; if we can recognize the
- * type but it's corrupt or data of the wrong type, we should
- * probably not accept it.
- */
- if( !$this->mStashed ) {
- $this->mFileProps = File::getPropsFromPath( $this->mTempPath, $finalExt );
- $this->checkMacBinary();
- $veri = $this->verify( $this->mTempPath, $finalExt );
-
- if( $veri !== true ) { //it's a wiki error...
- $resultDetails = array( 'veri' => $veri );
- return self::VERIFICATION_ERROR;
- }
- /**
- * Provide an opportunity for extensions to add further checks
- */
- $error = '';
- if( !wfRunHooks( 'UploadVerification',
- array( $this->mDestName, $this->mTempPath, &$error ) ) ) {
- $resultDetails = array( 'error' => $error );
- return self::UPLOAD_VERIFICATION_ERROR;
- }
+ // Upload verification
+ $details = $this->mUpload->verifyUpload();
+ if ( $details['status'] != UploadBase::OK ) {
+ $this->processVerificationError( $details );
+ return;
}
+ $this->mLocalFile = $this->mUpload->getLocalFile();
- /**
- * Check for non-fatal conditions
- */
- if ( ! $this->mIgnoreWarning ) {
- $warning = '';
-
- $comparableName = str_replace( ' ', '_', $basename );
- global $wgCapitalLinks, $wgContLang;
- if ( $wgCapitalLinks ) {
- $comparableName = $wgContLang->ucfirst( $comparableName );
- }
-
- if( $comparableName !== $filtered ) {
- $warning .= '<li>'.wfMsgHtml( 'badfilename', htmlspecialchars( $this->mDestName ) ).'</li>';
- }
-
- global $wgCheckFileExtensions;
- if ( $wgCheckFileExtensions ) {
- if ( !$this->checkFileExtension( $finalExt, $wgFileExtensions ) ) {
- global $wgLang;
- $warning .= '<li>' .
- wfMsgExt( 'filetype-unwanted-type',
- array( 'parseinline' ),
- htmlspecialchars( $finalExt ),
- $wgLang->commaList( $wgFileExtensions ),
- $wgLang->formatNum( count($wgFileExtensions) )
- ) . '</li>';
- }
- }
-
- global $wgUploadSizeWarning;
- if ( $wgUploadSizeWarning && ( $this->mFileSize > $wgUploadSizeWarning ) ) {
- $skin = $wgUser->getSkin();
- $wsize = $skin->formatSize( $wgUploadSizeWarning );
- $asize = $skin->formatSize( $this->mFileSize );
- $warning .= '<li>' . wfMsgHtml( 'large-file', $wsize, $asize ) . '</li>';
- }
- if ( $this->mFileSize == 0 ) {
- $warning .= '<li>'.wfMsgHtml( 'emptyfile' ).'</li>';
- }
-
- if ( !$this->mDestWarningAck ) {
- $warning .= self::getExistsWarning( $this->mLocalFile );
- }
-
- $warning .= $this->getDupeWarning( $this->mTempPath, $finalExt, $nt );
-
- if( $warning != '' ) {
- /**
- * Stash the file in a temporary location; the user can choose
- * to let it through and we'll complete the upload then.
- */
- $resultDetails = array( 'warning' => $warning );
- return self::UPLOAD_WARNING;
+ // Check warnings if necessary
+ if( !$this->mIgnoreWarning ) {
+ $warnings = $this->mUpload->checkWarnings();
+ if( $this->showUploadWarning( $warnings ) ) {
+ return;
}
}
- /**
- * Try actually saving the thing...
- * It will show an error form on failure.
- */
+ // Get the page text if this is not a reupload
if( !$this->mForReUpload ) {
$pageText = self::getInitialPageText( $this->mComment, $this->mLicense,
$this->mCopyrightStatus, $this->mCopyrightSource );
- }
-
- $status = $this->mLocalFile->upload( $this->mTempPath, $this->mComment, $pageText,
- File::DELETE_SOURCE, $this->mFileProps );
- if ( !$status->isGood() ) {
- $resultDetails = array( 'internal' => $status->getWikiText() );
- return self::INTERNAL_ERROR;
} else {
- if ( $this->mWatchthis ) {
- global $wgUser;
- $wgUser->addWatch( $this->mLocalFile->getTitle() );
- }
- // Success, redirect to description page
- $img = null; // @todo: added to avoid passing a ref to null - should this be defined somewhere?
- wfRunHooks( 'UploadComplete', array( &$this ) );
- return self::SUCCESS;
+ $pageText = false;
}
+ $status = $this->mUpload->performUpload( $this->mComment, $pageText, $this->mWatchthis, $wgUser );
+ if ( !$status->isGood() ) {
+ $this->showUploadError( $wgOut->parse( $status->getWikiText() ) );
+ return;
+ }
+
+ // Success, redirect to description page
+ $this->mUploadSuccessful = true;
+ wfRunHooks( 'SpecialUploadComplete', array( &$this ) );
+ $wgOut->redirect( $this->mLocalFile->getTitle()->getFullURL() );
+
}
/**
- * Do existence checks on a file and produce a warning
- * This check is static and can be done pre-upload via AJAX
- * Returns an HTML fragment consisting of one or more LI elements if there is a warning
- * Returns an empty string if there is no warning
+ * Get the initial image page text based on a comment and optional file status information
*/
- static function getExistsWarning( $file ) {
- global $wgUser, $wgContLang;
- // Check for uppercase extension. We allow these filenames but check if an image
- // with lowercase extension exists already
- $warning = '';
- $align = $wgContLang->isRtl() ? 'left' : 'right';
-
- if( strpos( $file->getName(), '.' ) == false ) {
- $partname = $file->getName();
- $rawExtension = '';
+ public static function getInitialPageText( $comment = '', $license = '', $copyStatus = '', $source = '' ) {
+ global $wgUseCopyrightUpload;
+ if ( $wgUseCopyrightUpload ) {
+ $licensetxt = '';
+ if ( $license != '' ) {
+ $licensetxt = '== ' . wfMsgForContent( 'license-header' ) . " ==\n" . '{{' . $license . '}}' . "\n";
+ }
+ $pageText = '== ' . wfMsgForContent ( 'filedesc' ) . " ==\n" . $comment . "\n" .
+ '== ' . wfMsgForContent ( 'filestatus' ) . " ==\n" . $copyStatus . "\n" .
+ "$licensetxt" .
+ '== ' . wfMsgForContent ( 'filesource' ) . " ==\n" . $source ;
} else {
- $n = strrpos( $file->getName(), '.' );
- $rawExtension = substr( $file->getName(), $n + 1 );
- $partname = substr( $file->getName(), 0, $n );
+ if ( $license != '' ) {
+ $filedesc = $comment == '' ? '' : '== ' . wfMsgForContent ( 'filedesc' ) . " ==\n" . $comment . "\n";
+ $pageText = $filedesc .
+ '== ' . wfMsgForContent ( 'license-header' ) . " ==\n" . '{{' . $license . '}}' . "\n";
+ } else {
+ $pageText = $comment;
+ }
}
+ return $pageText;
+ }
- $sk = $wgUser->getSkin();
+ /**
+ * See if we should check the 'watch this page' checkbox on the form
+ * based on the user's preferences and whether we're being asked
+ * to create a new file or update an existing one.
+ *
+ * In the case where 'watch edits' is off but 'watch creations' is on,
+ * we'll leave the box unchecked.
+ *
+ * Note that the page target can be changed *on the form*, so our check
+ * state can get out of sync.
+ */
+ protected function getWatchCheck() {
+ global $wgUser;
+ if( $wgUser->getOption( 'watchdefault' ) ) {
+ // Watch all edits!
+ return true;
+ }
- if ( $rawExtension != $file->getExtension() ) {
- // We're not using the normalized form of the extension.
- // Normal form is lowercase, using most common of alternate
- // extensions (eg 'jpg' rather than 'JPEG').
- //
- // Check for another file using the normalized form...
- $nt_lc = Title::makeTitle( NS_FILE, $partname . '.' . $file->getExtension() );
- $file_lc = wfLocalFile( $nt_lc );
+ $local = wfLocalFile( $this->mDesiredDestName );
+ if( $local && $local->exists() ) {
+ // We're uploading a new version of an existing file.
+ // No creation, so don't watch it if we're not already.
+ return $local->getTitle()->userIsWatching();
} else {
- $file_lc = false;
+ // New page should get watched if that's our option.
+ return $wgUser->getOption( 'watchcreations' );
}
+ }
- if( $file->exists() ) {
- $dlink = $sk->makeKnownLinkObj( $file->getTitle() );
- if ( $file->allowInlineDisplay() ) {
- $dlink2 = $sk->makeImageLinkObj( $file->getTitle(), wfMsgExt( 'fileexists-thumb', 'parseinline' ),
- $file->getName(), $align, array(), false, true );
- } elseif ( !$file->allowInlineDisplay() && $file->isSafeFile() ) {
- $icon = $file->iconThumb();
- $dlink2 = '<div style="float:' . $align . '" id="mw-media-icon">' .
- $icon->toHtml( array( 'desc-link' => true ) ) . '<br />' . $dlink . '</div>';
- } else {
- $dlink2 = '';
- }
- $warning .= '<li>' . wfMsgExt( 'fileexists', array('parseinline','replaceafter'), $dlink ) . '</li>' . $dlink2;
-
- } elseif( $file->getTitle()->getArticleID() ) {
- $lnk = $sk->makeKnownLinkObj( $file->getTitle(), '', 'redirect=no' );
- $warning .= '<li>' . wfMsgExt( 'filepageexists', array( 'parseinline', 'replaceafter' ), $lnk ) . '</li>';
- } elseif ( $file_lc && $file_lc->exists() ) {
- # Check if image with lowercase extension exists.
- # It's not forbidden but in 99% it makes no sense to upload the same filename with uppercase extension
- $dlink = $sk->makeKnownLinkObj( $nt_lc );
- if ( $file_lc->allowInlineDisplay() ) {
- $dlink2 = $sk->makeImageLinkObj( $nt_lc, wfMsgExt( 'fileexists-thumb', 'parseinline' ),
- $nt_lc->getText(), $align, array(), false, true );
- } elseif ( !$file_lc->allowInlineDisplay() && $file_lc->isSafeFile() ) {
- $icon = $file_lc->iconThumb();
- $dlink2 = '<div style="float:' . $align . '" id="mw-media-icon">' .
- $icon->toHtml( array( 'desc-link' => true ) ) . '<br />' . $dlink . '</div>';
- } else {
- $dlink2 = '';
- }
+ /**
+ * Provides output to the user for a result of UploadBase::verifyUpload
+ *
+ * @param array $details Result of UploadBase::verifyUpload
+ */
+ protected function processVerificationError( $details ) {
+ global $wgFileExtensions, $wgLang;
- $warning .= '<li>' .
- wfMsgExt( 'fileexists-extension', 'parsemag',
- $file->getTitle()->getPrefixedText(), $dlink ) .
- '</li>' . $dlink2;
+ switch( $details['status'] ) {
- } elseif ( ( substr( $partname , 3, 3 ) == 'px-' || substr( $partname , 2, 3 ) == 'px-' )
- && ereg( "[0-9]{2}" , substr( $partname , 0, 2) ) )
- {
- # Check for filenames like 50px- or 180px-, these are mostly thumbnails
- $nt_thb = Title::newFromText( substr( $partname , strpos( $partname , '-' ) +1 ) . '.' . $rawExtension );
- $file_thb = wfLocalFile( $nt_thb );
- if ($file_thb->exists() ) {
- # Check if an image without leading '180px-' (or similiar) exists
- $dlink = $sk->makeKnownLinkObj( $nt_thb);
- if ( $file_thb->allowInlineDisplay() ) {
- $dlink2 = $sk->makeImageLinkObj( $nt_thb,
- wfMsgExt( 'fileexists-thumb', 'parseinline' ),
- $nt_thb->getText(), $align, array(), false, true );
- } elseif ( !$file_thb->allowInlineDisplay() && $file_thb->isSafeFile() ) {
- $icon = $file_thb->iconThumb();
- $dlink2 = '<div style="float:' . $align . '" id="mw-media-icon">' .
- $icon->toHtml( array( 'desc-link' => true ) ) . '<br />' .
- $dlink . '</div>';
+ /** Statuses that only require name changing **/
+ case UploadBase::MIN_LENGTH_PARTNAME:
+ $this->showRecoverableUploadError( wfMsgHtml( 'minlength1' ) );
+ break;
+ case UploadBase::ILLEGAL_FILENAME:
+ $this->showRecoverableUploadError( wfMsgExt( 'illegalfilename',
+ 'parseinline', $details['filtered'] ) );
+ break;
+ case UploadBase::OVERWRITE_EXISTING_FILE:
+ $this->showRecoverableUploadError( wfMsgExt( $details['overwrite'],
+ 'parseinline' ) );
+ break;
+ case UploadBase::FILETYPE_MISSING:
+ $this->showRecoverableUploadError( wfMsgExt( 'filetype-missing',
+ 'parseinline' ) );
+ break;
+
+ /** Statuses that require reuploading **/
+ case UploadBase::EMPTY_FILE:
+ $this->showUploadForm( $this->getUploadForm( wfMsgHtml( 'emptyfile' ) ) );
+ break;
+ case UploadBase::FILETYPE_BADTYPE:
+ $finalExt = $details['finalExt'];
+ $this->showUploadError(
+ wfMsgExt( 'filetype-banned-type',
+ array( 'parseinline' ),
+ htmlspecialchars( $finalExt ),
+ implode(
+ wfMsgExt( 'comma-separator', array( 'escapenoentities' ) ),
+ $wgFileExtensions
+ ),
+ $wgLang->formatNum( count( $wgFileExtensions ) )
+ )
+ );
+ break;
+ case UploadBase::VERIFICATION_ERROR:
+ unset( $details['status'] );
+ $code = array_shift( $details['details'] );
+ $this->showUploadError( wfMsgExt( $code, 'parseinline', $details['details'] ) );
+ break;
+ case UploadBase::HOOK_ABORTED:
+ if ( is_array( $details['error'] ) ) { # allow hooks to return error details in an array
+ $args = $details['error'];
+ $error = array_shift( $args );
} else {
- $dlink2 = '';
+ $error = $details['error'];
+ $args = null;
}
- $warning .= '<li>' . wfMsgExt( 'fileexists-thumbnail-yes', 'parsemag', $dlink ) .
- '</li>' . $dlink2;
- } else {
- # Image w/o '180px-' does not exists, but we do not like these filenames
- $warning .= '<li>' . wfMsgExt( 'file-thumbnail-no', 'parseinline' ,
- substr( $partname , 0, strpos( $partname , '-' ) +1 ) ) . '</li>';
- }
+ $this->showUploadError( wfMsgExt( $error, 'parseinline', $args ) );
+ break;
+ default:
+ throw new MWException( __METHOD__ . ": Unknown value `{$details['status']}`" );
}
+ }
- $filenamePrefixBlacklist = self::getFilenamePrefixBlacklist();
- # Do the match
- foreach( $filenamePrefixBlacklist as $prefix ) {
- if ( substr( $partname, 0, strlen( $prefix ) ) == $prefix ) {
- $warning .= '<li>' . wfMsgExt( 'filename-bad-prefix', 'parseinline', $prefix ) . '</li>';
- break;
- }
+ /**
+ * Remove a temporarily kept file stashed by saveTempUploadedFile().
+ * @access private
+ * @return success
+ */
+ protected function unsaveUploadedFile() {
+ global $wgOut;
+ if ( !( $this->mUpload instanceof UploadFromStash ) )
+ return true;
+ $success = $this->mUpload->unsaveUploadedFile();
+ if ( ! $success ) {
+ $wgOut->showFileDeleteError( $this->mUpload->getTempPath() );
+ return false;
+ } else {
+ return true;
}
+ }
+
+ /*** Functions for formatting warnings ***/
+
+ /**
+ * Formats a result of UploadBase::getExistsWarning as HTML
+ * This check is static and can be done pre-upload via AJAX
+ *
+ * @param array $exists The result of UploadBase::getExistsWarning
+ * @return string Empty string if there is no warning or an HTML fragment
+ */
+ public static function getExistsWarning( $exists ) {
+ global $wgUser, $wgContLang;
+
+ if ( !$exists )
+ return '';
- if ( $file->wasDeleted() && !$file->exists() ) {
+ $file = $exists['file'];
+ $filename = $file->getTitle()->getPrefixedText();
+ $warning = '';
+
+ $sk = $wgUser->getSkin();
+
+ if( $exists['warning'] == 'exists' ) {
+ // Exact match
+ $warning = wfMsgExt( 'fileexists', 'parseinline', $filename );
+ } elseif( $exists['warning'] == 'page-exists' ) {
+ // Page exists but file does not
+ $warning = wfMsgExt( 'filepageexists', 'parseinline', $filename );
+ } elseif ( $exists['warning'] == 'exists-normalized' ) {
+ $warning = wfMsgExt( 'fileexists-extension', 'parseinline', $filename,
+ $exists['normalizedFile']->getTitle()->getPrefixedText() );
+ } elseif ( $exists['warning'] == 'thumb' ) {
+ // Swapped argument order compared with other messages for backwards compatibility
+ $warning = wfMsgExt( 'fileexists-thumbnail-yes', 'parseinline',
+ $exists['thumbFile']->getTitle()->getPrefixedText(), $filename );
+ } elseif ( $exists['warning'] == 'thumb-name' ) {
+ // Image w/o '180px-' does not exists, but we do not like these filenames
+ $name = $file->getName();
+ $badPart = substr( $name, 0, strpos( $name, '-' ) + 1 );
+ $warning = wfMsgExt( 'file-thumbnail-no', 'parseinline', $badPart );
+ } elseif ( $exists['warning'] == 'bad-prefix' ) {
+ $warning = wfMsgExt( 'filename-bad-prefix', 'parseinline', $exists['prefix'] );
+ } elseif ( $exists['warning'] == 'was-deleted' ) {
# If the file existed before and was deleted, warn the user of this
- # Don't bother doing so if the file exists now, however
$ltitle = SpecialPage::getTitleFor( 'Log' );
- $llink = $sk->makeKnownLinkObj( $ltitle, wfMsgHtml( 'deletionlog' ),
- 'type=delete&page=' . $file->getTitle()->getPrefixedUrl() );
- $warning .= '<li>' . wfMsgWikiHtml( 'filewasdeleted', $llink ) . '</li>';
+ $llink = $sk->linkKnown(
+ $ltitle,
+ wfMsgHtml( 'deletionlog' ),
+ array(),
+ array(
+ 'type' => 'delete',
+ 'page' => $filename
+ )
+ );
+ $warning = wfMsgWikiHtml( 'filewasdeleted', $llink );
}
+
return $warning;
}
@@ -721,7 +641,7 @@ class UploadForm {
* @param string local filename, e.g. 'file exists', 'non-descriptive filename'
* @return array list of warning messages
*/
- static function ajaxGetExistsWarning( $filename ) {
+ public static function ajaxGetExistsWarning( $filename ) {
$file = wfFindFile( $filename );
if( !$file ) {
// Force local file so we have an object to do further checks against
@@ -730,297 +650,181 @@ class UploadForm {
}
$s = '&nbsp;';
if ( $file ) {
- $warning = self::getExistsWarning( $file );
+ $exists = UploadBase::getExistsWarning( $file );
+ $warning = self::getExistsWarning( $exists );
if ( $warning !== '' ) {
- $s = "<ul>$warning</ul>";
+ $s = "<div>$warning</div>";
}
}
return $s;
}
/**
- * Render a preview of a given license for the AJAX preview on upload
- *
- * @param string $license
- * @return string
- */
- public static function ajaxGetLicensePreview( $license ) {
- global $wgParser, $wgUser;
- $text = '{{' . $license . '}}';
- $title = Title::makeTitle( NS_FILE, 'Sample.jpg' );
- $options = ParserOptions::newFromUser( $wgUser );
-
- // Expand subst: first, then live templates...
- $text = $wgParser->preSaveTransform( $text, $title, $wgUser, $options );
- $output = $wgParser->parse( $text, $title, $options );
-
- return $output->getText();
- }
-
- /**
- * Check for duplicate files and throw up a warning before the upload
- * completes.
+ * Construct a warning and a gallery from an array of duplicate files.
*/
- function getDupeWarning( $tempfile, $extension, $destinationTitle ) {
- $hash = File::sha1Base36( $tempfile );
- $dupes = RepoGroup::singleton()->findBySha1( $hash );
- $archivedImage = new ArchivedFile( null, 0, $hash.".$extension" );
+ public static function getDupeWarning( $dupes ) {
if( $dupes ) {
global $wgOut;
$msg = "<gallery>";
foreach( $dupes as $file ) {
$title = $file->getTitle();
- # Don't throw the warning when the titles are the same, it's a reupload
- # and highly redundant.
- if ( !$title->equals( $destinationTitle ) || !$this->mForReUpload ) {
- $msg .= $title->getPrefixedText() .
- "|" . $title->getText() . "\n";
- }
+ $msg .= $title->getPrefixedText() .
+ "|" . $title->getText() . "\n";
}
$msg .= "</gallery>";
return "<li>" .
wfMsgExt( "file-exists-duplicate", array( "parse" ), count( $dupes ) ) .
$wgOut->parse( $msg ) .
"</li>\n";
- } elseif ( $archivedImage->getID() > 0 ) {
- global $wgOut;
- $name = Title::makeTitle( NS_FILE, $archivedImage->getName() )->getPrefixedText();
- return Xml::tags( 'li', null, wfMsgExt( 'file-deleted-duplicate', array( 'parseinline' ), array( $name ) ) );
} else {
return '';
}
}
- /**
- * Get a list of blacklisted filename prefixes from [[MediaWiki:filename-prefix-blacklist]]
- *
- * @return array list of prefixes
- */
- public static function getFilenamePrefixBlacklist() {
- $blacklist = array();
- $message = wfMsgForContent( 'filename-prefix-blacklist' );
- if( $message && !( wfEmptyMsg( 'filename-prefix-blacklist', $message ) || $message == '-' ) ) {
- $lines = explode( "\n", $message );
- foreach( $lines as $line ) {
- // Remove comment lines
- $comment = substr( trim( $line ), 0, 1 );
- if ( $comment == '#' || $comment == '' ) {
- continue;
- }
- // Remove additional comments after a prefix
- $comment = strpos( $line, '#' );
- if ( $comment > 0 ) {
- $line = substr( $line, 0, $comment-1 );
- }
- $blacklist[] = trim( $line );
- }
- }
- return $blacklist;
- }
+}
- /**
- * Stash a file in a temporary directory for later processing
- * after the user has confirmed it.
- *
- * If the user doesn't explicitly cancel or accept, these files
- * can accumulate in the temp directory.
- *
- * @param string $saveName - the destination filename
- * @param string $tempName - the source temporary file to save
- * @return string - full path the stashed file, or false on failure
- * @access private
- */
- function saveTempUploadedFile( $saveName, $tempName ) {
- global $wgOut;
- $repo = RepoGroup::singleton()->getLocalRepo();
- $status = $repo->storeTemp( $saveName, $tempName );
- if ( !$status->isGood() ) {
- $this->showError( $status->getWikiText() );
- return false;
- } else {
- return $status->value;
- }
- }
+/**
+ * Sub class of HTMLForm that provides the form section of SpecialUpload
+ */
+class UploadForm extends HTMLForm {
+ protected $mWatch;
+ protected $mForReUpload;
+ protected $mSessionKey;
+ protected $mHideIgnoreWarning;
+ protected $mDestWarningAck;
+ protected $mDestFile;
+
+ protected $mTextTop;
+ protected $mTextAfterSummary;
+
+ protected $mSourceIds;
- /**
- * Stash a file in a temporary directory for later processing,
- * and save the necessary descriptive info into the session.
- * Returns a key value which will be passed through a form
- * to pick up the path info on a later invocation.
- *
- * @return int
- * @access private
- */
- function stashSession() {
- $stash = $this->saveTempUploadedFile( $this->mDestName, $this->mTempPath );
+ public function __construct( $options = array() ) {
+ global $wgLang;
- if( !$stash ) {
- # Couldn't save the file.
- return false;
- }
+ $this->mWatch = !empty( $options['watch'] );
+ $this->mForReUpload = !empty( $options['forreupload'] );
+ $this->mSessionKey = isset( $options['sessionkey'] )
+ ? $options['sessionkey'] : '';
+ $this->mHideIgnoreWarning = !empty( $options['hideignorewarning'] );
+ $this->mDestWarningAck = !empty( $options['destwarningack'] );
+
+ $this->mTextTop = $options['texttop'];
+ $this->mTextAfterSummary = $options['textaftersummary'];
+ $this->mDestFile = isset( $options['destfile'] ) ? $options['destfile'] : '';
- $key = mt_rand( 0, 0x7fffffff );
- $_SESSION['wsUploadData'][$key] = array(
- 'mTempPath' => $stash,
- 'mFileSize' => $this->mFileSize,
- 'mSrcName' => $this->mSrcName,
- 'mFileProps' => $this->mFileProps,
- 'version' => self::SESSION_VERSION,
- );
- return $key;
- }
+ $sourceDescriptor = $this->getSourceSection();
+ $descriptor = $sourceDescriptor
+ + $this->getDescriptionSection()
+ + $this->getOptionsSection();
- /**
- * Remove a temporarily kept file stashed by saveTempUploadedFile().
- * @access private
- * @return success
- */
- function unsaveUploadedFile() {
- global $wgOut;
- if( !$this->mTempPath ) return true; // nothing to delete
- $repo = RepoGroup::singleton()->getLocalRepo();
- $success = $repo->freeTemp( $this->mTempPath );
- if ( ! $success ) {
- $wgOut->showFileDeleteError( $this->mTempPath );
- return false;
- } else {
- return true;
- }
- }
+ wfRunHooks( 'UploadFormInitDescriptor', array( &$descriptor ) );
+ parent::__construct( $descriptor, 'upload' );
- /* -------------------------------------------------------------- */
+ # Set some form properties
+ $this->setSubmitText( wfMsg( 'uploadbtn' ) );
+ $this->setSubmitName( 'wpUpload' );
+ $this->setSubmitTooltip( 'upload' );
+ $this->setId( 'mw-upload-form' );
+
+ # Build a list of IDs for javascript insertion
+ $this->mSourceIds = array();
+ foreach ( $sourceDescriptor as $key => $field ) {
+ if ( !empty( $field['id'] ) )
+ $this->mSourceIds[] = $field['id'];
+ }
- /**
- * @param string $error as HTML
- * @access private
- */
- function uploadError( $error ) {
- global $wgOut;
- $wgOut->addHTML( '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n" );
- $wgOut->addHTML( '<span class="error">' . $error . '</span>' );
}
/**
- * There's something wrong with this file, not enough to reject it
- * totally but we require manual intervention to save it for real.
- * Stash it away, then present a form asking to confirm or cancel.
- *
- * @param string $warning as HTML
- * @access private
+ * Get the descriptor of the fieldset that contains the file source
+ * selection. The section is 'source'
+ *
+ * @return array Descriptor array
*/
- function uploadWarning( $warning ) {
- global $wgOut;
- global $wgUseCopyrightUpload;
-
- $this->mSessionKey = $this->stashSession();
- if( !$this->mSessionKey ) {
- # Couldn't save file; an error has been displayed so let's go.
- return;
+ protected function getSourceSection() {
+ global $wgLang, $wgUser, $wgRequest;
+
+ if ( $this->mSessionKey ) {
+ return array(
+ 'wpSessionKey' => array(
+ 'type' => 'hidden',
+ 'default' => $this->mSessionKey,
+ ),
+ 'wpSourceType' => array(
+ 'type' => 'hidden',
+ 'default' => 'Stash',
+ ),
+ );
}
- $wgOut->addHTML( '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n" );
- $wgOut->addHTML( '<ul class="warning">' . $warning . "</ul>\n" );
+ $canUploadByUrl = UploadFromUrl::isEnabled() && $wgUser->isAllowed( 'upload_by_url' );
+ $radio = $canUploadByUrl;
+ $selectedSourceType = strtolower( $wgRequest->getText( 'wpSourceType', 'File' ) );
- $titleObj = SpecialPage::getTitleFor( 'Upload' );
-
- if ( $wgUseCopyrightUpload ) {
- $copyright = Xml::hidden( 'wpUploadCopyStatus', $this->mCopyrightStatus ) . "\n" .
- Xml::hidden( 'wpUploadSource', $this->mCopyrightSource ) . "\n";
- } else {
- $copyright = '';
+ $descriptor = array();
+ if ( $this->mTextTop ) {
+ $descriptor['UploadFormTextTop'] = array(
+ 'type' => 'info',
+ 'section' => 'source',
+ 'default' => $this->mTextTop,
+ 'raw' => true,
+ );
+ }
+
+ $descriptor['UploadFile'] = array(
+ 'class' => 'UploadSourceField',
+ 'section' => 'source',
+ 'type' => 'file',
+ 'id' => 'wpUploadFile',
+ 'label-message' => 'sourcefilename',
+ 'upload-type' => 'File',
+ 'radio' => &$radio,
+ 'help' => wfMsgExt( 'upload-maxfilesize',
+ array( 'parseinline', 'escapenoentities' ),
+ $wgLang->formatSize(
+ wfShorthandToInteger( ini_get( 'upload_max_filesize' ) )
+ )
+ ) . ' ' . wfMsgHtml( 'upload_source_file' ),
+ 'checked' => $selectedSourceType == 'file',
+ );
+ if ( $canUploadByUrl ) {
+ global $wgMaxUploadSize;
+ $descriptor['UploadFileURL'] = array(
+ 'class' => 'UploadSourceField',
+ 'section' => 'source',
+ 'id' => 'wpUploadFileURL',
+ 'label-message' => 'sourceurl',
+ 'upload-type' => 'url',
+ 'radio' => &$radio,
+ 'help' => wfMsgExt( 'upload-maxfilesize',
+ array( 'parseinline', 'escapenoentities' ),
+ $wgLang->formatSize( $wgMaxUploadSize )
+ ) . ' ' . wfMsgHtml( 'upload_source_url' ),
+ 'checked' => $selectedSourceType == 'url',
+ );
}
+ wfRunHooks( 'UploadFormSourceDescriptors', array( &$descriptor, &$radio, $selectedSourceType ) );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL( 'action=submit' ),
- 'enctype' => 'multipart/form-data', 'id' => 'uploadwarning' ) ) . "\n" .
- Xml::hidden( 'wpIgnoreWarning', '1' ) . "\n" .
- Xml::hidden( 'wpSessionKey', $this->mSessionKey ) . "\n" .
- Xml::hidden( 'wpUploadDescription', $this->mComment ) . "\n" .
- Xml::hidden( 'wpLicense', $this->mLicense ) . "\n" .
- Xml::hidden( 'wpDestFile', $this->mDesiredDestName ) . "\n" .
- Xml::hidden( 'wpWatchthis', $this->mWatchthis ) . "\n" .
- "{$copyright}<br />" .
- Xml::submitButton( wfMsg( 'ignorewarning' ), array ( 'name' => 'wpUpload', 'id' => 'wpUpload', 'checked' => 'checked' ) ) . ' ' .
- Xml::submitButton( wfMsg( 'reuploaddesc' ), array ( 'name' => 'wpReUpload', 'id' => 'wpReUpload' ) ) .
- Xml::closeElement( 'form' ) . "\n"
+ $descriptor['Extensions'] = array(
+ 'type' => 'info',
+ 'section' => 'source',
+ 'default' => $this->getExtensionsMessage(),
+ 'raw' => true,
);
+ return $descriptor;
}
+
/**
- * Displays the main upload form, optionally with a highlighted
- * error message up at the top.
- *
- * @param string $msg as HTML
- * @access private
+ * Get the messages indicating which extensions are preferred and prohibitted.
+ *
+ * @return string HTML string containing the message
*/
- function mainUploadForm( $msg='' ) {
- global $wgOut, $wgUser, $wgLang, $wgMaxUploadSize;
- global $wgUseCopyrightUpload, $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview;
- global $wgRequest, $wgAllowCopyUploads;
- global $wgStylePath, $wgStyleVersion;
-
- $useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
- $useAjaxLicensePreview = $wgUseAjax && $wgAjaxLicensePreview;
-
- $adc = wfBoolToStr( $useAjaxDestCheck );
- $alp = wfBoolToStr( $useAjaxLicensePreview );
- $autofill = wfBoolToStr( $this->mDesiredDestName == '' );
-
- $wgOut->addScript( "<script type=\"text/javascript\">
-wgAjaxUploadDestCheck = {$adc};
-wgAjaxLicensePreview = {$alp};
-wgUploadAutoFill = {$autofill};
-</script>" );
- $wgOut->addScriptFile( 'upload.js' );
- $wgOut->addScriptFile( 'edit.js' ); // For <charinsert> support
-
- if( !wfRunHooks( 'UploadForm:initial', array( &$this ) ) )
- {
- wfDebug( "Hook 'UploadForm:initial' broke output of the upload form\n" );
- return false;
- }
-
- if( $this->mDesiredDestName ) {
- $title = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
- // Show a subtitle link to deleted revisions (to sysops et al only)
- if( $title instanceof Title && ( $count = $title->isDeleted() ) > 0 && $wgUser->isAllowed( 'deletedhistory' ) ) {
- $link = wfMsgExt(
- $wgUser->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted',
- array( 'parse', 'replaceafter' ),
- $wgUser->getSkin()->makeKnownLinkObj(
- SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
- wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $count )
- )
- );
- $wgOut->addHTML( "<div id=\"contentSub2\">{$link}</div>" );
- }
-
- // Show the relevant lines from deletion log (for still deleted files only)
- if( $title instanceof Title && $title->isDeletedQuick() && !$title->exists() ) {
- $this->showDeletionLog( $wgOut, $title->getPrefixedText() );
- }
- }
-
- $cols = intval($wgUser->getOption( 'cols' ));
-
- if( $wgUser->getOption( 'editwidth' ) ) {
- $width = " style=\"width:100%\"";
- } else {
- $width = '';
- }
-
- if ( '' != $msg ) {
- $sub = wfMsgHtml( 'uploaderror' );
- $wgOut->addHTML( "<h2>{$sub}</h2>\n" .
- "<span class='error'>{$msg}</span>\n" );
- }
- $wgOut->addHTML( '<div id="uploadtext">' );
- $wgOut->addWikiMsg( 'uploadtext', $this->mDesiredDestName );
- $wgOut->addHTML( "</div>\n" );
-
+ protected function getExtensionsMessage() {
# Print a list of allowed file extensions, if so configured. We ignore
# MIME type here, it's incomprehensible to most people and too long.
- global $wgCheckFileExtensions, $wgStrictFileExtensions,
+ global $wgLang, $wgCheckFileExtensions, $wgStrictFileExtensions,
$wgFileExtensions, $wgFileBlacklist;
$allowedExtensions = '';
@@ -1045,805 +849,211 @@ wgUploadAutoFill = {$autofill};
# Everything is permitted.
$extensionsList = '';
}
+ return $extensionsList;
+ }
- # Get the maximum file size from php.ini as $wgMaxUploadSize works for uploads from URL via CURL only
- # See http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize for possible values of upload_max_filesize
- $val = trim( ini_get( 'upload_max_filesize' ) );
- $last = strtoupper( ( substr( $val, -1 ) ) );
- switch( $last ) {
- case 'G':
- $val2 = substr( $val, 0, -1 ) * 1024 * 1024 * 1024;
- break;
- case 'M':
- $val2 = substr( $val, 0, -1 ) * 1024 * 1024;
- break;
- case 'K':
- $val2 = substr( $val, 0, -1 ) * 1024;
- break;
- default:
- $val2 = $val;
- }
- $val2 = $wgAllowCopyUploads ? min( $wgMaxUploadSize, $val2 ) : $val2;
- $maxUploadSize = '<div id="mw-upload-maxfilesize">' .
- wfMsgExt( 'upload-maxfilesize', array( 'parseinline', 'escapenoentities' ),
- $wgLang->formatSize( $val2 ) ) .
- "</div>\n";
-
- $sourcefilename = wfMsgExt( 'sourcefilename', array( 'parseinline', 'escapenoentities' ) );
- $destfilename = wfMsgExt( 'destfilename', array( 'parseinline', 'escapenoentities' ) );
-
- $msg = $this->mForReUpload ? 'filereuploadsummary' : 'fileuploadsummary';
- $summary = wfMsgExt( $msg, 'parseinline' );
-
- $licenses = new Licenses();
- $license = wfMsgExt( 'license', array( 'parseinline' ) );
- $nolicense = wfMsgHtml( 'nolicense' );
- $licenseshtml = $licenses->getHtml();
-
- $ulb = wfMsgHtml( 'uploadbtn' );
-
-
- $titleObj = SpecialPage::getTitleFor( 'Upload' );
-
- $encDestName = htmlspecialchars( $this->mDesiredDestName );
-
- $watchChecked = $this->watchCheck() ? 'checked="checked"' : '';
- # Re-uploads should not need "file exist already" warnings
- $warningChecked = ($this->mIgnoreWarning || $this->mForReUpload) ? 'checked="checked"' : '';
-
- // Prepare form for upload or upload/copy
- if( $wgAllowCopyUploads && $wgUser->isAllowed( 'upload_by_url' ) ) {
- $filename_form =
- "<input type='radio' id='wpSourceTypeFile' name='wpSourceType' value='file' " .
- "onchange='toggle_element_activation(\"wpUploadFileURL\",\"wpUploadFile\")' checked='checked' />" .
- "<input tabindex='1' type='file' name='wpUploadFile' id='wpUploadFile' " .
- "onfocus='" .
- "toggle_element_activation(\"wpUploadFileURL\",\"wpUploadFile\");" .
- "toggle_element_check(\"wpSourceTypeFile\",\"wpSourceTypeURL\")' " .
- "onchange='fillDestFilename(\"wpUploadFile\")' size='60' />" .
- wfMsgHTML( 'upload_source_file' ) . "<br/>" .
- "<input type='radio' id='wpSourceTypeURL' name='wpSourceType' value='web' " .
- "onchange='toggle_element_activation(\"wpUploadFile\",\"wpUploadFileURL\")' />" .
- "<input tabindex='1' type='text' name='wpUploadFileURL' id='wpUploadFileURL' " .
- "onfocus='" .
- "toggle_element_activation(\"wpUploadFile\",\"wpUploadFileURL\");" .
- "toggle_element_check(\"wpSourceTypeURL\",\"wpSourceTypeFile\")' " .
- "onchange='fillDestFilename(\"wpUploadFileURL\")' size='60' disabled='disabled' />" .
- wfMsgHtml( 'upload_source_url' ) ;
- } else {
- $filename_form =
- "<input tabindex='1' type='file' name='wpUploadFile' id='wpUploadFile' " .
- ($this->mDesiredDestName?"":"onchange='fillDestFilename(\"wpUploadFile\")' ") .
- "size='60' />" .
- "<input type='hidden' name='wpSourceType' value='file' />" ;
- }
- if ( $useAjaxDestCheck ) {
- $warningRow = "<tr><td colspan='2' id='wpDestFile-warning'>&nbsp;</td></tr>";
- $destOnkeyup = 'onkeyup="wgUploadWarningObj.keypress();"';
- } else {
- $warningRow = '';
- $destOnkeyup = '';
- }
- $encComment = htmlspecialchars( $this->mComment );
-
+ /**
+ * Get the descriptor of the fieldset that contains the file description
+ * input. The section is 'description'
+ *
+ * @return array Descriptor array
+ */
+ protected function getDescriptionSection() {
+ global $wgUser, $wgOut;
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL(),
- 'enctype' => 'multipart/form-data', 'id' => 'mw-upload-form' ) ) .
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'upload' ) ) .
- Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-upload-table' ) ) .
- "<tr>
- {$this->uploadFormTextTop}
- <td class='mw-label'>
- <label for='wpUploadFile'>{$sourcefilename}</label>
- </td>
- <td class='mw-input'>
- {$filename_form}
- </td>
- </tr>
- <tr>
- <td></td>
- <td>
- {$maxUploadSize}
- {$extensionsList}
- </td>
- </tr>
- <tr>
- <td class='mw-label'>
- <label for='wpDestFile'>{$destfilename}</label>
- </td>
- <td class='mw-input'>"
+ $cols = intval( $wgUser->getOption( 'cols' ) );
+ if( $wgUser->getOption( 'editwidth' ) ) {
+ $wgOut->addInlineStyle( '#mw-htmlform-description { width: 100%; }' );
+ }
+
+ $descriptor = array(
+ 'DestFile' => array(
+ 'type' => 'text',
+ 'section' => 'description',
+ 'id' => 'wpDestFile',
+ 'label-message' => 'destfilename',
+ 'size' => 60,
+ 'default' => $this->mDestFile,
+ # FIXME: hack to work around poor handling of the 'default' option in HTMLForm
+ 'nodata' => strval( $this->mDestFile ) !== '',
+ ),
+ 'UploadDescription' => array(
+ 'type' => 'textarea',
+ 'section' => 'description',
+ 'id' => 'wpUploadDescription',
+ 'label-message' => $this->mForReUpload
+ ? 'filereuploadsummary'
+ : 'fileuploadsummary',
+ 'cols' => $cols,
+ 'rows' => 8,
+ )
);
- if( $this->mForReUpload ) {
- $wgOut->addHTML(
- Xml::hidden( 'wpDestFile', $this->mDesiredDestName, array('id'=>'wpDestFile','tabindex'=>2) ) .
- "<tt>" .
- $encDestName .
- "</tt>"
- );
- }
- else {
- $wgOut->addHTML(
- "<input tabindex='2' type='text' name='wpDestFile' id='wpDestFile' size='60'
- value=\"{$encDestName}\" onchange='toggleFilenameFiller()' $destOnkeyup />"
+ if ( $this->mTextAfterSummary ) {
+ $descriptor['UploadFormTextAfterSummary'] = array(
+ 'type' => 'info',
+ 'section' => 'description',
+ 'default' => $this->mTextAfterSummary,
+ 'raw' => true,
);
}
-
- $wgOut->addHTML(
- "</td>
- </tr>
- <tr>
- <td class='mw-label'>
- <label for='wpUploadDescription'>{$summary}</label>
- </td>
- <td class='mw-input'>
- <textarea tabindex='3' name='wpUploadDescription' id='wpUploadDescription' rows='6'
- cols='{$cols}'{$width}>$encComment</textarea>
- {$this->uploadFormTextAfterSummary}
- </td>
- </tr>
- <tr>"
+ $descriptor += array(
+ 'EditTools' => array(
+ 'type' => 'edittools',
+ 'section' => 'description',
+ ),
+ 'License' => array(
+ 'type' => 'select',
+ 'class' => 'Licenses',
+ 'section' => 'description',
+ 'id' => 'wpLicense',
+ 'label-message' => 'license',
+ ),
);
- # Re-uploads should not need license info
- if ( !$this->mForReUpload && $licenseshtml != '' ) {
- global $wgStylePath;
- $wgOut->addHTML( "
- <td class='mw-label'>
- <label for='wpLicense'>$license</label>
- </td>
- <td class='mw-input'>
- <select name='wpLicense' id='wpLicense' tabindex='4'
- onchange='licenseSelectorCheck()'>
- <option value=''>$nolicense</option>
- $licenseshtml
- </select>
- </td>
- </tr>
- <tr>"
- );
- if( $useAjaxLicensePreview ) {
- $wgOut->addHTML( "
- <td></td>
- <td id=\"mw-license-preview\"></td>
- </tr>
- <tr>"
- );
- }
- }
+ if ( $this->mForReUpload )
+ $descriptor['DestFile']['readonly'] = true;
- if ( !$this->mForReUpload && $wgUseCopyrightUpload ) {
- $filestatus = wfMsgExt( 'filestatus', 'escapenoentities' );
- $copystatus = htmlspecialchars( $this->mCopyrightStatus );
- $filesource = wfMsgExt( 'filesource', 'escapenoentities' );
- $uploadsource = htmlspecialchars( $this->mCopyrightSource );
-
- $wgOut->addHTML( "
- <td class='mw-label' style='white-space: nowrap;'>
- <label for='wpUploadCopyStatus'>$filestatus</label></td>
- <td class='mw-input'>
- <input tabindex='5' type='text' name='wpUploadCopyStatus' id='wpUploadCopyStatus'
- value=\"$copystatus\" size='60' />
- </td>
- </tr>
- <tr>
- <td class='mw-label'>
- <label for='wpUploadCopyStatus'>$filesource</label>
- </td>
- <td class='mw-input'>
- <input tabindex='6' type='text' name='wpUploadSource' id='wpUploadCopyStatus'
- value=\"$uploadsource\" size='60' />
- </td>
- </tr>
- <tr>"
+ global $wgUseCopyrightUpload;
+ if ( $wgUseCopyrightUpload ) {
+ $descriptor['UploadCopyStatus'] = array(
+ 'type' => 'text',
+ 'section' => 'description',
+ 'id' => 'wpUploadCopyStatus',
+ 'label-message' => 'filestatus',
+ );
+ $descriptor['UploadSource'] = array(
+ 'type' => 'text',
+ 'section' => 'description',
+ 'id' => 'wpUploadSource',
+ 'label-message' => 'filesource',
);
}
- $wgOut->addHTML( "
- <td></td>
- <td>
- <input tabindex='7' type='checkbox' name='wpWatchthis' id='wpWatchthis' $watchChecked value='true' />
- <label for='wpWatchthis'>" . wfMsgHtml( 'watchthisupload' ) . "</label>
- <input tabindex='8' type='checkbox' name='wpIgnoreWarning' id='wpIgnoreWarning' value='true' $warningChecked />
- <label for='wpIgnoreWarning'>" . wfMsgHtml( 'ignorewarnings' ) . "</label>
- </td>
- </tr>
- $warningRow
- <tr>
- <td></td>
- <td class='mw-input'>
- <input tabindex='9' type='submit' name='wpUpload' value=\"{$ulb}\"" .
- $wgUser->getSkin()->tooltipAndAccesskey( 'upload' ) . " />
- </td>
- </tr>
- <tr>
- <td></td>
- <td class='mw-input'>"
- );
- $wgOut->addHTML( '<div class="mw-editTools">' );
- $wgOut->addWikiMsgArray( 'edittools', array(), array( 'content' ) );
- $wgOut->addHTML( '</div>' );
- $wgOut->addHTML( "
- </td>
- </tr>" .
- Xml::closeElement( 'table' ) .
- Xml::hidden( 'wpDestFileWarningAck', '', array( 'id' => 'wpDestFileWarningAck' ) ) .
- Xml::hidden( 'wpForReUpload', $this->mForReUpload, array( 'id' => 'wpForReUpload' ) ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
- );
- $uploadfooter = wfMsgNoTrans( 'uploadfooter' );
- if( $uploadfooter != '-' && !wfEmptyMsg( 'uploadfooter', $uploadfooter ) ){
- $wgOut->addWikiText( '<div id="mw-upload-footer-message">' . $uploadfooter . '</div>' );
- }
- }
-
- /* -------------------------------------------------------------- */
-
- /**
- * See if we should check the 'watch this page' checkbox on the form
- * based on the user's preferences and whether we're being asked
- * to create a new file or update an existing one.
- *
- * In the case where 'watch edits' is off but 'watch creations' is on,
- * we'll leave the box unchecked.
- *
- * Note that the page target can be changed *on the form*, so our check
- * state can get out of sync.
- */
- function watchCheck() {
- global $wgUser;
- if( $wgUser->getOption( 'watchdefault' ) ) {
- // Watch all edits!
- return true;
- }
-
- $local = wfLocalFile( $this->mDesiredDestName );
- if( $local && $local->exists() ) {
- // We're uploading a new version of an existing file.
- // No creation, so don't watch it if we're not already.
- return $local->getTitle()->userIsWatching();
- } else {
- // New page should get watched if that's our option.
- return $wgUser->getOption( 'watchcreations' );
- }
- }
-
- /**
- * Split a file into a base name and all dot-delimited 'extensions'
- * on the end. Some web server configurations will fall back to
- * earlier pseudo-'extensions' to determine type and execute
- * scripts, so the blacklist needs to check them all.
- *
- * @return array
- */
- public function splitExtensions( $filename ) {
- $bits = explode( '.', $filename );
- $basename = array_shift( $bits );
- return array( $basename, $bits );
- }
-
- /**
- * Perform case-insensitive match against a list of file extensions.
- * Returns true if the extension is in the list.
- *
- * @param string $ext
- * @param array $list
- * @return bool
- */
- function checkFileExtension( $ext, $list ) {
- return in_array( strtolower( $ext ), $list );
- }
-
- /**
- * Perform case-insensitive match against a list of file extensions.
- * Returns true if any of the extensions are in the list.
- *
- * @param array $ext
- * @param array $list
- * @return bool
- */
- public function checkFileExtensionList( $ext, $list ) {
- foreach( $ext as $e ) {
- if( in_array( strtolower( $e ), $list ) ) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Verifies that it's ok to include the uploaded file
- *
- * @param string $tmpfile the full path of the temporary file to verify
- * @param string $extension The filename extension that the file is to be served with
- * @return mixed true of the file is verified, a WikiError object otherwise.
- */
- function verify( $tmpfile, $extension ) {
- #magically determine mime type
- $magic = MimeMagic::singleton();
- $mime = $magic->guessMimeType($tmpfile,false);
-
-
- #check mime type, if desired
- global $wgVerifyMimeType;
- if ($wgVerifyMimeType) {
- wfDebug ( "\n\nmime: <$mime> extension: <$extension>\n\n");
- #check mime type against file extension
- if( !self::verifyExtension( $mime, $extension ) ) {
- return new WikiErrorMsg( 'uploadcorrupt' );
- }
-
- #check mime type blacklist
- global $wgMimeTypeBlacklist;
- if( isset($wgMimeTypeBlacklist) && !is_null($wgMimeTypeBlacklist) ) {
- if ( $this->checkFileExtension( $mime, $wgMimeTypeBlacklist ) ) {
- return new WikiErrorMsg( 'filetype-badmime', htmlspecialchars( $mime ) );
- }
-
- # Check IE type
- $fp = fopen( $tmpfile, 'rb' );
- $chunk = fread( $fp, 256 );
- fclose( $fp );
- $extMime = $magic->guessTypesForExtension( $extension );
- $ieTypes = $magic->getIEMimeTypes( $tmpfile, $chunk, $extMime );
- foreach ( $ieTypes as $ieType ) {
- if ( $this->checkFileExtension( $ieType, $wgMimeTypeBlacklist ) ) {
- return new WikiErrorMsg( 'filetype-bad-ie-mime', $ieType );
- }
- }
- }
- }
-
- #check for htmlish code and javascript
- if( $this->detectScript ( $tmpfile, $mime, $extension ) ) {
- return new WikiErrorMsg( 'uploadscripted' );
- }
- if( $extension == 'svg' || $mime == 'image/svg+xml' ) {
- if( $this->detectScriptInSvg( $tmpfile ) ) {
- return new WikiErrorMsg( 'uploadscripted' );
- }
- }
-
- /**
- * Scan the uploaded file for viruses
- */
- $virus= $this->detectVirus($tmpfile);
- if ( $virus ) {
- return new WikiErrorMsg( 'uploadvirus', htmlspecialchars($virus) );
- }
-
- wfDebug( __METHOD__.": all clear; passing.\n" );
- return true;
+ return $descriptor;
}
/**
- * Checks if the mime type of the uploaded file matches the file extension.
- *
- * @param string $mime the mime type of the uploaded file
- * @param string $extension The filename extension that the file is to be served with
- * @return bool
+ * Get the descriptor of the fieldset that contains the upload options,
+ * such as "watch this file". The section is 'options'
+ *
+ * @return array Descriptor array
*/
- static function verifyExtension( $mime, $extension ) {
- $magic = MimeMagic::singleton();
-
- if ( ! $mime || $mime == 'unknown' || $mime == 'unknown/unknown' )
- if ( ! $magic->isRecognizableExtension( $extension ) ) {
- wfDebug( __METHOD__.": passing file with unknown detected mime type; " .
- "unrecognized extension '$extension', can't verify\n" );
- return true;
- } else {
- wfDebug( __METHOD__.": rejecting file with unknown detected mime type; ".
- "recognized extension '$extension', so probably invalid file\n" );
- return false;
- }
-
- $match= $magic->isMatchingExtension($extension,$mime);
-
- if ($match===NULL) {
- wfDebug( __METHOD__.": no file extension known for mime type $mime, passing file\n" );
- return true;
- } elseif ($match===true) {
- wfDebug( __METHOD__.": mime type $mime matches extension $extension, passing file\n" );
-
- #TODO: if it's a bitmap, make sure PHP or ImageMagic resp. can handle it!
- return true;
-
- } else {
- wfDebug( __METHOD__.": mime type $mime mismatches file extension $extension, rejecting file\n" );
- return false;
- }
- }
-
-
- /**
- * Heuristic for detecting files that *could* contain JavaScript instructions or
- * things that may look like HTML to a browser and are thus
- * potentially harmful. The present implementation will produce false positives in some situations.
- *
- * @param string $file Pathname to the temporary upload file
- * @param string $mime The mime type of the file
- * @param string $extension The extension of the file
- * @return bool true if the file contains something looking like embedded scripts
- */
- function detectScript($file, $mime, $extension) {
- global $wgAllowTitlesInSVG;
-
- #ugly hack: for text files, always look at the entire file.
- #For binarie field, just check the first K.
-
- if (strpos($mime,'text/')===0) $chunk = file_get_contents( $file );
- else {
- $fp = fopen( $file, 'rb' );
- $chunk = fread( $fp, 1024 );
- fclose( $fp );
- }
+ protected function getOptionsSection() {
+ global $wgUser, $wgOut;
- $chunk= strtolower( $chunk );
-
- if (!$chunk) return false;
-
- #decode from UTF-16 if needed (could be used for obfuscation).
- if (substr($chunk,0,2)=="\xfe\xff") $enc= "UTF-16BE";
- elseif (substr($chunk,0,2)=="\xff\xfe") $enc= "UTF-16LE";
- else $enc= NULL;
-
- if ($enc) $chunk= iconv($enc,"ASCII//IGNORE",$chunk);
-
- $chunk= trim($chunk);
-
- #FIXME: convert from UTF-16 if necessarry!
-
- wfDebug("SpecialUpload::detectScript: checking for embedded scripts and HTML stuff\n");
-
- #check for HTML doctype
- if (eregi("<!DOCTYPE *X?HTML",$chunk)) return true;
-
- /**
- * Internet Explorer for Windows performs some really stupid file type
- * autodetection which can cause it to interpret valid image files as HTML
- * and potentially execute JavaScript, creating a cross-site scripting
- * attack vectors.
- *
- * Apple's Safari browser also performs some unsafe file type autodetection
- * which can cause legitimate files to be interpreted as HTML if the
- * web server is not correctly configured to send the right content-type
- * (or if you're really uploading plain text and octet streams!)
- *
- * Returns true if IE is likely to mistake the given file for HTML.
- * Also returns true if Safari would mistake the given file for HTML
- * when served with a generic content-type.
- */
-
- $tags = array(
- '<a href',
- '<body',
- '<head',
- '<html', #also in safari
- '<img',
- '<pre',
- '<script', #also in safari
- '<table'
+ if( $wgUser->isLoggedIn() ) {
+ $descriptor = array(
+ 'Watchthis' => array(
+ 'type' => 'check',
+ 'id' => 'wpWatchthis',
+ 'label-message' => 'watchthisupload',
+ 'section' => 'options',
+ 'default' => $wgUser->getOption( 'watchcreations' ),
+ )
);
- if( ! $wgAllowTitlesInSVG && $extension !== 'svg' && $mime !== 'image/svg' ) {
- $tags[] = '<title';
}
-
- foreach( $tags as $tag ) {
- if( false !== strpos( $chunk, $tag ) ) {
- return true;
- }
+ if( !$this->mHideIgnoreWarning ) {
+ $descriptor['IgnoreWarning'] = array(
+ 'type' => 'check',
+ 'id' => 'wpIgnoreWarning',
+ 'label-message' => 'ignorewarnings',
+ 'section' => 'options',
+ );
}
- /*
- * look for javascript
- */
-
- #resolve entity-refs to look at attributes. may be harsh on big files... cache result?
- $chunk = Sanitizer::decodeCharReferences( $chunk );
-
- #look for script-types
- if (preg_match('!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim',$chunk)) return true;
-
- #look for html-style script-urls
- if (preg_match('!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim',$chunk)) return true;
-
- #look for css-style script-urls
- if (preg_match('!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim',$chunk)) return true;
-
- wfDebug("SpecialUpload::detectScript: no scripts found\n");
- return false;
- }
-
- function detectScriptInSvg( $filename ) {
- $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
- return $check->filterMatch;
- }
-
- /**
- * @todo Replace this with a whitelist filter!
- */
- function checkSvgScriptCallback( $element, $attribs ) {
- $stripped = $this->stripXmlNamespace( $element );
-
- if( $stripped == 'script' ) {
- wfDebug( __METHOD__ . ": Found script element '$element' in uploaded file.\n" );
- return true;
- }
+ $descriptor['wpDestFileWarningAck'] = array(
+ 'type' => 'hidden',
+ 'id' => 'wpDestFileWarningAck',
+ 'default' => $this->mDestWarningAck ? '1' : '',
+ );
- foreach( $attribs as $attrib => $value ) {
- $stripped = $this->stripXmlNamespace( $attrib );
- if( substr( $stripped, 0, 2 ) == 'on' ) {
- wfDebug( __METHOD__ . ": Found script attribute '$attrib'='value' in uploaded file.\n" );
- return true;
- }
- if( $stripped == 'href' && strpos( strtolower( $value ), 'javascript:' ) !== false ) {
- wfDebug( __METHOD__ . ": Found script href attribute '$attrib'='$value' in uploaded file.\n" );
- return true;
- }
- }
- }
-
- private function stripXmlNamespace( $name ) {
- // 'http://www.w3.org/2000/svg:script' -> 'script'
- $parts = explode( ':', strtolower( $name ) );
- return array_pop( $parts );
- }
-
- /**
- * Generic wrapper function for a virus scanner program.
- * This relies on the $wgAntivirus and $wgAntivirusSetup variables.
- * $wgAntivirusRequired may be used to deny upload if the scan fails.
- *
- * @param string $file Pathname to the temporary upload file
- * @return mixed false if not virus is found, NULL if the scan fails or is disabled,
- * or a string containing feedback from the virus scanner if a virus was found.
- * If textual feedback is missing but a virus was found, this function returns true.
- */
- function detectVirus($file) {
- global $wgAntivirus, $wgAntivirusSetup, $wgAntivirusRequired, $wgOut;
-
- if ( !$wgAntivirus ) {
- wfDebug( __METHOD__.": virus scanner disabled\n");
- return NULL;
- }
-
- if ( !$wgAntivirusSetup[$wgAntivirus] ) {
- wfDebug( __METHOD__.": unknown virus scanner: $wgAntivirus\n" );
- $wgOut->wrapWikiMsg( '<div class="error">$1</div>', array( 'virus-badscanner', $wgAntivirus ) );
- return wfMsg('virus-unknownscanner') . " $wgAntivirus";
- }
-
- # look up scanner configuration
- $command = $wgAntivirusSetup[$wgAntivirus]["command"];
- $exitCodeMap = $wgAntivirusSetup[$wgAntivirus]["codemap"];
- $msgPattern = isset( $wgAntivirusSetup[$wgAntivirus]["messagepattern"] ) ?
- $wgAntivirusSetup[$wgAntivirus]["messagepattern"] : null;
-
- if ( strpos( $command,"%f" ) === false ) {
- # simple pattern: append file to scan
- $command .= " " . wfEscapeShellArg( $file );
- } else {
- # complex pattern: replace "%f" with file to scan
- $command = str_replace( "%f", wfEscapeShellArg( $file ), $command );
- }
-
- wfDebug( __METHOD__.": running virus scan: $command \n" );
-
- # execute virus scanner
- $exitCode = false;
-
- #NOTE: there's a 50 line workaround to make stderr redirection work on windows, too.
- # that does not seem to be worth the pain.
- # Ask me (Duesentrieb) about it if it's ever needed.
- $output = array();
- if ( wfIsWindows() ) {
- exec( "$command", $output, $exitCode );
- } else {
- exec( "$command 2>&1", $output, $exitCode );
- }
-
- # map exit code to AV_xxx constants.
- $mappedCode = $exitCode;
- if ( $exitCodeMap ) {
- if ( isset( $exitCodeMap[$exitCode] ) ) {
- $mappedCode = $exitCodeMap[$exitCode];
- } elseif ( isset( $exitCodeMap["*"] ) ) {
- $mappedCode = $exitCodeMap["*"];
- }
- }
-
- if ( $mappedCode === AV_SCAN_FAILED ) {
- # scan failed (code was mapped to false by $exitCodeMap)
- wfDebug( __METHOD__.": failed to scan $file (code $exitCode).\n" );
-
- if ( $wgAntivirusRequired ) {
- return wfMsg('virus-scanfailed', array( $exitCode ) );
- } else {
- return NULL;
- }
- } else if ( $mappedCode === AV_SCAN_ABORTED ) {
- # scan failed because filetype is unknown (probably imune)
- wfDebug( __METHOD__.": unsupported file type $file (code $exitCode).\n" );
- return NULL;
- } else if ( $mappedCode === AV_NO_VIRUS ) {
- # no virus found
- wfDebug( __METHOD__.": file passed virus scan.\n" );
- return false;
- } else {
- $output = join( "\n", $output );
- $output = trim( $output );
-
- if ( !$output ) {
- $output = true; #if there's no output, return true
- } elseif ( $msgPattern ) {
- $groups = array();
- if ( preg_match( $msgPattern, $output, $groups ) ) {
- if ( $groups[1] ) {
- $output = $groups[1];
- }
- }
- }
-
- wfDebug( __METHOD__.": FOUND VIRUS! scanner feedback: $output \n" );
- return $output;
+ if ( $this->mForReUpload ) {
+ $descriptor['wpForReUpload'] = array(
+ 'type' => 'hidden',
+ 'id' => 'wpForReUpload',
+ 'default' => '1',
+ );
}
- }
-
- /**
- * Check if the temporary file is MacBinary-encoded, as some uploads
- * from Internet Explorer on Mac OS Classic and Mac OS X will be.
- * If so, the data fork will be extracted to a second temporary file,
- * which will then be checked for validity and either kept or discarded.
- *
- * @access private
- */
- function checkMacBinary() {
- $macbin = new MacBinary( $this->mTempPath );
- if( $macbin->isValid() ) {
- $dataFile = tempnam( wfTempDir(), "WikiMacBinary" );
- $dataHandle = fopen( $dataFile, 'wb' );
-
- wfDebug( "SpecialUpload::checkMacBinary: Extracting MacBinary data fork to $dataFile\n" );
- $macbin->extractData( $dataHandle );
- $this->mTempPath = $dataFile;
- $this->mFileSize = $macbin->dataForkLength();
+ return $descriptor;
- // We'll have to manually remove the new file if it's not kept.
- $this->mRemoveTempFile = true;
- }
- $macbin->close();
}
/**
- * If we've modified the upload file we need to manually remove it
- * on exit to clean up.
- * @access private
+ * Add the upload JS and show the form.
*/
- function cleanupTempFile() {
- if ( $this->mRemoveTempFile && $this->mTempPath && file_exists( $this->mTempPath ) ) {
- wfDebug( "SpecialUpload::cleanupTempFile: Removing temporary file {$this->mTempPath}\n" );
- unlink( $this->mTempPath );
- }
+ public function show() {
+ $this->addUploadJS();
+ parent::show();
}
/**
- * Check if there's an overwrite conflict and, if so, if restrictions
- * forbid this user from performing the upload.
- *
- * @return mixed true on success, WikiError on failure
- * @access private
- */
- function checkOverwrite( $name ) {
- $img = wfFindFile( $name );
-
- $error = '';
- if( $img ) {
- global $wgUser, $wgOut;
- if( $img->isLocal() ) {
- if( !self::userCanReUpload( $wgUser, $img->name ) ) {
- $error = 'fileexists-forbidden';
- }
- } else {
- if( !$wgUser->isAllowed( 'reupload' ) ||
- !$wgUser->isAllowed( 'reupload-shared' ) ) {
- $error = "fileexists-shared-forbidden";
- }
- }
- }
-
- if( $error ) {
- $errorText = wfMsg( $error, wfEscapeWikiText( $img->getName() ) );
- return $errorText;
- }
-
- // Rockin', go ahead and upload
- return true;
- }
-
- /**
- * Check if a user is the last uploader
- *
- * @param User $user
- * @param string $img, image name
- * @return bool
+ * Add upload JS to $wgOut
+ *
+ * @param bool $autofill Whether or not to autofill the destination
+ * filename text box
*/
- public static function userCanReUpload( User $user, $img ) {
- if( $user->isAllowed( 'reupload' ) )
- return true; // non-conditional
- if( !$user->isAllowed( 'reupload-own' ) )
- return false;
+ protected function addUploadJS( ) {
+ global $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview, $wgEnableAPI;
+ global $wgOut;
- $dbr = wfGetDB( DB_SLAVE );
- $row = $dbr->selectRow('image',
- /* SELECT */ 'img_user',
- /* WHERE */ array( 'img_name' => $img )
+ $useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
+ $useAjaxLicensePreview = $wgUseAjax && $wgAjaxLicensePreview && $wgEnableAPI;
+
+ $scriptVars = array(
+ 'wgAjaxUploadDestCheck' => $useAjaxDestCheck,
+ 'wgAjaxLicensePreview' => $useAjaxLicensePreview,
+ 'wgUploadAutoFill' => !$this->mForReUpload &&
+ // If we received mDestFile from the request, don't autofill
+ // the wpDestFile textbox
+ $this->mDestFile === '',
+ 'wgUploadSourceIds' => $this->mSourceIds,
);
- if ( !$row )
- return false;
- return $user->getId() == $row->img_user;
+ $wgOut->addScript( Skin::makeVariablesScript( $scriptVars ) );
+
+ // For <charinsert> support
+ $wgOut->addScriptFile( 'edit.js' );
+ $wgOut->addScriptFile( 'upload.js' );
}
/**
- * Display an error with a wikitext description
+ * Empty function; submission is handled elsewhere.
+ *
+ * @return bool false
*/
- function showError( $description ) {
- global $wgOut;
- $wgOut->setPageTitle( wfMsg( "internalerror" ) );
- $wgOut->setRobotPolicy( "noindex,nofollow" );
- $wgOut->setArticleRelated( false );
- $wgOut->enableClientCache( false );
- $wgOut->addWikiText( $description );
+ function trySubmit() {
+ return false;
}
- /**
- * Get the initial image page text based on a comment and optional file status information
- */
- static function getInitialPageText( $comment, $license, $copyStatus, $source ) {
- global $wgUseCopyrightUpload;
- if ( $wgUseCopyrightUpload ) {
- if ( $license != '' ) {
- $licensetxt = '== ' . wfMsgForContent( 'license' ) . " ==\n" . '{{' . $license . '}}' . "\n";
- }
- $pageText = '== ' . wfMsg ( 'filedesc' ) . " ==\n" . $comment . "\n" .
- '== ' . wfMsgForContent ( 'filestatus' ) . " ==\n" . $copyStatus . "\n" .
- "$licensetxt" .
- '== ' . wfMsgForContent ( 'filesource' ) . " ==\n" . $source ;
- } else {
- if ( $license != '' ) {
- $filedesc = $comment == '' ? '' : '== ' . wfMsg ( 'filedesc' ) . " ==\n" . $comment . "\n";
- $pageText = $filedesc .
- '== ' . wfMsgForContent ( 'license' ) . " ==\n" . '{{' . $license . '}}' . "\n";
- } else {
- $pageText = $comment;
- }
- }
- return $pageText;
- }
+}
- /**
- * If there are rows in the deletion log for this file, show them,
- * along with a nice little note for the user
- *
- * @param OutputPage $out
- * @param string filename
- */
- private function showDeletionLog( $out, $filename ) {
- global $wgUser;
- $loglist = new LogEventsList( $wgUser->getSkin(), $out );
- $pager = new LogPager( $loglist, 'delete', false, $filename );
- if( $pager->getNumRows() > 0 ) {
- $out->addHTML( '<div class="mw-warning-with-logexcerpt">' );
- $out->addWikiMsg( 'upload-wasdeleted' );
- $out->addHTML(
- $loglist->beginLogEventsList() .
- $pager->getBody() .
- $loglist->endLogEventsList()
+/**
+ * A form field that contains a radio box in the label
+ */
+class UploadSourceField extends HTMLTextField {
+ function getLabelHtml() {
+ $id = "wpSourceType{$this->mParams['upload-type']}";
+ $label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
+
+ if ( !empty( $this->mParams['radio'] ) ) {
+ $attribs = array(
+ 'name' => 'wpSourceType',
+ 'type' => 'radio',
+ 'id' => $id,
+ 'value' => $this->mParams['upload-type'],
);
- $out->addHTML( '</div>' );
+ if ( !empty( $this->mParams['checked'] ) )
+ $attribs['checked'] = 'checked';
+ $label .= Html::element( 'input', $attribs );
}
+
+ return Html::rawElement( 'td', array( 'class' => 'mw-label' ), $label );
+ }
+ function getSize() {
+ return isset( $this->mParams['size'] )
+ ? $this->mParams['size']
+ : 60;
}
}
+
diff --git a/includes/specials/SpecialUploadMogile.php b/includes/specials/SpecialUploadMogile.php
deleted file mode 100644
index 7ff8fda6..00000000
--- a/includes/specials/SpecialUploadMogile.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup SpecialPage
- */
-
-/**
- * You will need the extension MogileClient to use this special page.
- */
-require_once( 'MogileFS.php' );
-
-/**
- * Entry point
- */
-function wfSpecialUploadMogile() {
- global $wgRequest;
- $form = new UploadFormMogile( $wgRequest );
- $form->execute();
-}
-
-/**
- * Extends Special:Upload with MogileFS.
- * @ingroup SpecialPage
- */
-class UploadFormMogile extends UploadForm {
- /**
- * Move the uploaded file from its temporary location to the final
- * destination. If a previous version of the file exists, move
- * it into the archive subdirectory.
- *
- * @todo If the later save fails, we may have disappeared the original file.
- *
- * @param string $saveName
- * @param string $tempName full path to the temporary file
- * @param bool $useRename Not used in this implementation
- */
- function saveUploadedFile( $saveName, $tempName, $useRename = false ) {
- global $wgOut;
- $mfs = MogileFS::NewMogileFS();
-
- $this->mSavedFile = "image!{$saveName}";
-
- if( $mfs->getPaths( $this->mSavedFile )) {
- $this->mUploadOldVersion = gmdate( 'YmdHis' ) . "!{$saveName}";
- if( !$mfs->rename( $this->mSavedFile, "archive!{$this->mUploadOldVersion}" ) ) {
- $wgOut->showFileRenameError( $this->mSavedFile,
- "archive!{$this->mUploadOldVersion}" );
- return false;
- }
- } else {
- $this->mUploadOldVersion = '';
- }
-
- if ( $this->mStashed ) {
- if (!$mfs->rename($tempName,$this->mSavedFile)) {
- $wgOut->showFileRenameError($tempName, $this->mSavedFile );
- return false;
- }
- } else {
- if ( !$mfs->saveFile($this->mSavedFile,'normal',$tempName )) {
- $wgOut->showFileCopyError( $tempName, $this->mSavedFile );
- return false;
- }
- unlink($tempName);
- }
- return true;
- }
-
- /**
- * Stash a file in a temporary directory for later processing
- * after the user has confirmed it.
- *
- * If the user doesn't explicitly cancel or accept, these files
- * can accumulate in the temp directory.
- *
- * @param string $saveName - the destination filename
- * @param string $tempName - the source temporary file to save
- * @return string - full path the stashed file, or false on failure
- * @access private
- */
- function saveTempUploadedFile( $saveName, $tempName ) {
- global $wgOut;
-
- $stash = 'stash!' . gmdate( "YmdHis" ) . '!' . $saveName;
- $mfs = MogileFS::NewMogileFS();
- if ( !$mfs->saveFile( $stash, 'normal', $tempName ) ) {
- $wgOut->showFileCopyError( $tempName, $stash );
- return false;
- }
- unlink($tempName);
- return $stash;
- }
-
- /**
- * Stash a file in a temporary directory for later processing,
- * and save the necessary descriptive info into the session.
- * Returns a key value which will be passed through a form
- * to pick up the path info on a later invocation.
- *
- * @return int
- * @access private
- */
- function stashSession() {
- $stash = $this->saveTempUploadedFile(
- $this->mUploadSaveName, $this->mUploadTempName );
-
- if( !$stash ) {
- # Couldn't save the file.
- return false;
- }
-
- $key = mt_rand( 0, 0x7fffffff );
- $_SESSION['wsUploadData'][$key] = array(
- 'mUploadTempName' => $stash,
- 'mUploadSize' => $this->mUploadSize,
- 'mOname' => $this->mOname );
- return $key;
- }
-
- /**
- * Remove a temporarily kept file stashed by saveTempUploadedFile().
- * @access private
- * @return success
- */
- function unsaveUploadedFile() {
- global $wgOut;
- $mfs = MogileFS::NewMogileFS();
- if ( ! $mfs->delete( $this->mUploadTempName ) ) {
- $wgOut->showFileDeleteError( $this->mUploadTempName );
- return false;
- } else {
- return true;
- }
- }
-}
diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php
index 8616ae28..8b8d0e9e 100644
--- a/includes/specials/SpecialUserlogin.php
+++ b/includes/specials/SpecialUserlogin.php
@@ -35,21 +35,23 @@ class LoginForm {
const CREATE_BLOCKED = 9;
const THROTTLED = 10;
const USER_BLOCKED = 11;
- const NEED_TOKEN = 12;
- const WRONG_TOKEN = 13;
+ const NEED_TOKEN = 12;
+ const WRONG_TOKEN = 13;
var $mName, $mPassword, $mRetype, $mReturnTo, $mCookieCheck, $mPosted;
var $mAction, $mCreateaccount, $mCreateaccountMail, $mMailmypassword;
- var $mLoginattempt, $mRemember, $mEmail, $mDomain, $mLanguage, $mSkipCookieCheck;
- var $mToken;
+ var $mLoginattempt, $mRemember, $mEmail, $mDomain, $mLanguage;
+ var $mSkipCookieCheck, $mReturnToQuery, $mToken;
+
+ private $mExtUser = null;
/**
* Constructor
- * @param WebRequest $request A WebRequest object passed by reference
+ * @param $request WebRequest: a WebRequest object passed by reference
+ * @param $par String: subpage parameter
*/
function LoginForm( &$request, $par = '' ) {
- global $wgLang, $wgAllowRealName, $wgEnableEmail;
- global $wgAuth, $wgRedirectOnLogin;
+ global $wgAuth, $wgHiddenPrefs, $wgEnableEmail, $wgRedirectOnLogin;
$this->mType = ( $par == 'signup' ) ? $par : $request->getText( 'type' ); # Check for [[Special:Userlogin/signup]]
$this->mName = $request->getText( 'wpName' );
@@ -57,6 +59,7 @@ class LoginForm {
$this->mRetype = $request->getText( 'wpRetype' );
$this->mDomain = $request->getText( 'wpDomain' );
$this->mReturnTo = $request->getVal( 'returnto' );
+ $this->mReturnToQuery = $request->getVal( 'returntoquery' );
$this->mCookieCheck = $request->getVal( 'wpCookieCheck' );
$this->mPosted = $request->wasPosted();
$this->mCreateaccount = $request->getCheck( 'wpCreateaccount' );
@@ -73,6 +76,7 @@ class LoginForm {
if ( $wgRedirectOnLogin ) {
$this->mReturnTo = $wgRedirectOnLogin;
+ $this->mReturnToQuery = '';
}
if( $wgEnableEmail ) {
@@ -80,7 +84,7 @@ class LoginForm {
} else {
$this->mEmail = '';
}
- if( $wgAllowRealName ) {
+ if( !in_array( 'realname', $wgHiddenPrefs ) ) {
$this->mRealName = $request->getText( 'wpRealName' );
} else {
$this->mRealName = '';
@@ -92,8 +96,10 @@ class LoginForm {
$wgAuth->setDomain( $this->mDomain );
# When switching accounts, it sucks to get automatically logged out
- if( $this->mReturnTo == $wgLang->specialPage( 'Userlogout' ) ) {
+ $returnToTitle = Title::newFromText( $this->mReturnTo );
+ if( is_object( $returnToTitle ) && $returnToTitle->isSpecial( 'Userlogout' ) ) {
$this->mReturnTo = '';
+ $this->mReturnToQuery = '';
}
}
@@ -121,14 +127,14 @@ class LoginForm {
function addNewAccountMailPassword() {
global $wgOut;
- if ('' == $this->mEmail) {
+ if ( $this->mEmail == '' ) {
$this->mainLoginForm( wfMsg( 'noemail', htmlspecialchars( $this->mName ) ) );
return;
}
$u = $this->addNewaccountInternal();
- if ($u == NULL) {
+ if ($u == null) {
return;
}
@@ -162,7 +168,7 @@ class LoginForm {
# Create the account and abort if there's a problem doing so
$u = $this->addNewAccountInternal();
- if( $u == NULL )
+ if( $u == null )
return;
# If we showed up language selection links, and one was in use, be
@@ -191,7 +197,7 @@ class LoginForm {
if( $wgUser->isAnon() ) {
$wgUser = $u;
$wgUser->setCookies();
- wfRunHooks( 'AddNewAccount', array( $wgUser ) );
+ wfRunHooks( 'AddNewAccount', array( $wgUser, false ) );
$wgUser->addNewUserLogEntry();
if( $this->hasSessionCookie() ) {
return $this->successfulCreation();
@@ -207,7 +213,7 @@ class LoginForm {
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addHTML( wfMsgWikiHtml( 'accountcreatedtext', $u->getName() ) );
$wgOut->returnToMain( false, $self );
- wfRunHooks( 'AddNewAccount', array( $u ) );
+ wfRunHooks( 'AddNewAccount', array( $u, false ) );
$u->addNewUserLogEntry();
return true;
}
@@ -218,7 +224,6 @@ class LoginForm {
*/
function addNewAccountInternal() {
global $wgUser, $wgOut;
- global $wgEnableSorbs, $wgProxyWhitelist;
global $wgMemc, $wgAccountCreationThrottle;
global $wgAuth, $wgMinimalPasswordLength;
global $wgEmailConfirmToEdit;
@@ -234,7 +239,7 @@ class LoginForm {
// cation server before they create an account (otherwise, they can
// create a local account and login as any domain user). We only need
// to check this for domains that aren't local.
- if( 'local' != $this->mDomain && '' != $this->mDomain ) {
+ if( 'local' != $this->mDomain && $this->mDomain != '' ) {
if( !$wgAuth->canCreateAccounts() && ( !$wgAuth->userExists( $this->mName ) || !$wgAuth->authenticate( $this->mName, $this->mPassword ) ) ) {
$this->mainLoginForm( wfMsg( 'wrongpassword' ) );
return false;
@@ -275,9 +280,7 @@ class LoginForm {
}
$ip = wfGetIP();
- if ( $wgEnableSorbs && !in_array( $ip, $wgProxyWhitelist ) &&
- $wgUser->inSorbsBlacklist( $ip ) )
- {
+ if ( $wgUser->isDnsBlacklisted( $ip, true /* check $wgProxyWhitelist */ ) ) {
$this->mainLoginForm( wfMsg( 'sorbs_create_account_reason' ) . ' (' . htmlspecialchars( $ip ) . ')' );
return false;
}
@@ -285,7 +288,7 @@ class LoginForm {
# Now create a dummy user ($u) and check if it is valid
$name = trim( $this->mName );
$u = User::newFromName( $name, 'creatable' );
- if ( is_null( $u ) ) {
+ if ( !is_object( $u ) ) {
$this->mainLoginForm( wfMsg( 'noname' ) );
return false;
}
@@ -301,9 +304,10 @@ class LoginForm {
}
# check for minimal password length
- if ( !$u->isValidPassword( $this->mPassword ) ) {
+ $valid = $u->getPasswordValidity( $this->mPassword );
+ if ( $valid !== true ) {
if ( !$this->mCreateaccountMail ) {
- $this->mainLoginForm( wfMsgExt( 'passwordtooshort', array( 'parsemag' ), $wgMinimalPasswordLength ) );
+ $this->mainLoginForm( wfMsgExt( $valid, array( 'parsemag' ), $wgMinimalPasswordLength ) );
return false;
} else {
# do not force a password for account creation by email
@@ -383,6 +387,14 @@ class LoginForm {
$wgAuth->initUser( $u, $autocreate );
+ if ( $this->mExtUser ) {
+ $this->mExtUser->linkToLocal( $u->getId() );
+ $email = $this->mExtUser->getPref( 'emailaddress' );
+ if ( $email && !$this->mEmail ) {
+ $u->setEmail( $email );
+ }
+ }
+
$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
$u->saveSettings();
@@ -399,15 +411,13 @@ class LoginForm {
* This may create a local account as a side effect if the
* authentication plugin allows transparent local account
* creation.
- *
- * @public
*/
- function authenticateUserData() {
+ public function authenticateUserData() {
global $wgUser, $wgAuth;
- if ( '' == $this->mName ) {
+ if ( $this->mName == '' ) {
return self::NO_NAME;
}
-
+
// We require a login token to prevent login CSRF
// Handle part of this before incrementing the throttle so
// token-less login attempts don't count towards the throttle
@@ -422,17 +432,17 @@ class LoginForm {
if ( !$this->mToken ) {
return self::NEED_TOKEN;
}
-
+
global $wgPasswordAttemptThrottle;
- $throttleCount=0;
- if ( is_array($wgPasswordAttemptThrottle) ) {
+ $throttleCount = 0;
+ if ( is_array( $wgPasswordAttemptThrottle ) ) {
$throttleKey = wfMemcKey( 'password-throttle', wfGetIP(), md5( $this->mName ) );
$count = $wgPasswordAttemptThrottle['count'];
$period = $wgPasswordAttemptThrottle['seconds'];
global $wgMemc;
- $throttleCount = $wgMemc->get($throttleKey);
+ $throttleCount = $wgMemc->get( $throttleKey );
if ( !$throttleCount ) {
$wgMemc->add( $throttleKey, 1, $period ); // start counter
} else if ( $throttleCount < $count ) {
@@ -457,8 +467,13 @@ class LoginForm {
wfDebug( __METHOD__.": already logged in as {$this->mName}\n" );
return self::SUCCESS;
}
+
+ $this->mExtUser = ExternalUser::newFromName( $this->mName );
+
+ # TODO: Allow some magic here for invalid external names, e.g., let the
+ # user choose a different wiki name.
$u = User::newFromName( $this->mName );
- if( is_null( $u ) || !User::isUsableName( $u->getName() ) ) {
+ if( !( $u instanceof User ) || !User::isUsableName( $u->getName() ) ) {
return self::ILLEGAL;
}
@@ -471,6 +486,15 @@ class LoginForm {
$isAutoCreated = true;
}
} else {
+ global $wgExternalAuthType, $wgAutocreatePolicy;
+ if ( $wgExternalAuthType && $wgAutocreatePolicy != 'never'
+ && is_object( $this->mExtUser )
+ && $this->mExtUser->authenticate( $this->mPassword ) ) {
+ # The external user and local user have the same name and
+ # password, so we assume they're the same.
+ $this->mExtUser->linkToLocal( $u->getID() );
+ }
+
$u->load();
}
@@ -480,6 +504,7 @@ class LoginForm {
return $abort;
}
+ global $wgBlockDisablesLogin;
if (!$u->checkPassword( $this->mPassword )) {
if( $u->checkTemporaryPassword( $this->mPassword ) ) {
// The e-mailed temporary password should not be used for actu-
@@ -508,8 +533,11 @@ class LoginForm {
// faces etc will probably just fail cleanly here.
$retval = self::RESET_PASS;
} else {
- $retval = '' == $this->mPassword ? self::EMPTY_PASS : self::WRONG_PASS;
+ $retval = ($this->mPassword == '') ? self::EMPTY_PASS : self::WRONG_PASS;
}
+ } elseif ( $wgBlockDisablesLogin && $u->isBlocked() ) {
+ // If we've enabled it, make it so that a blocked user cannot login
+ $retval = self::USER_BLOCKED;
} else {
$wgAuth->updateUser( $u );
$wgUser = $u;
@@ -536,26 +564,40 @@ class LoginForm {
* @return integer Status code
*/
function attemptAutoCreate( $user ) {
- global $wgAuth, $wgUser;
+ global $wgAuth, $wgUser, $wgAutocreatePolicy;
+
+ if ( $wgUser->isBlockedFromCreateAccount() ) {
+ wfDebug( __METHOD__.": user is blocked from account creation\n" );
+ return self::CREATE_BLOCKED;
+ }
+
/**
* If the external authentication plugin allows it, automatically cre-
* ate a new account for users that are externally defined but have not
* yet logged in.
*/
- if ( !$wgAuth->autoCreate() ) {
- return self::NOT_EXISTS;
- }
- if ( !$wgAuth->userExists( $user->getName() ) ) {
- wfDebug( __METHOD__.": user does not exist\n" );
- return self::NOT_EXISTS;
- }
- if ( !$wgAuth->authenticate( $user->getName(), $this->mPassword ) ) {
- wfDebug( __METHOD__.": \$wgAuth->authenticate() returned false, aborting\n" );
- return self::WRONG_PLUGIN_PASS;
- }
- if ( $wgUser->isBlockedFromCreateAccount() ) {
- wfDebug( __METHOD__.": user is blocked from account creation\n" );
- return self::CREATE_BLOCKED;
+ if ( $this->mExtUser ) {
+ # mExtUser is neither null nor false, so use the new ExternalAuth
+ # system.
+ if ( $wgAutocreatePolicy == 'never' ) {
+ return self::NOT_EXISTS;
+ }
+ if ( !$this->mExtUser->authenticate( $this->mPassword ) ) {
+ return self::WRONG_PLUGIN_PASS;
+ }
+ } else {
+ # Old AuthPlugin.
+ if ( !$wgAuth->autoCreate() ) {
+ return self::NOT_EXISTS;
+ }
+ if ( !$wgAuth->userExists( $user->getName() ) ) {
+ wfDebug( __METHOD__.": user does not exist\n" );
+ return self::NOT_EXISTS;
+ }
+ if ( !$wgAuth->authenticate( $user->getName(), $this->mPassword ) ) {
+ wfDebug( __METHOD__.": \$wgAuth->authenticate() returned false, aborting\n" );
+ return self::WRONG_PLUGIN_PASS;
+ }
}
wfDebug( __METHOD__.": creating account\n" );
@@ -566,8 +608,7 @@ class LoginForm {
function processLogin() {
global $wgUser, $wgAuth;
- switch ($this->authenticateUserData())
- {
+ switch ( $this->authenticateUserData() ) {
case self::SUCCESS:
# We've verified now, update the real record
if( (bool)$this->mRemember != (bool)$wgUser->getOption( 'rememberpassword' ) ) {
@@ -630,6 +671,10 @@ class LoginForm {
case self::THROTTLED:
$this->mainLoginForm( wfMsg( 'login-throttled' ) );
break;
+ case self::USER_BLOCKED:
+ $this->mainLoginForm( wfMsgExt( 'login-userblocked',
+ array( 'parsemag', 'escape' ), $this->mName ) );
+ break;
default:
throw new MWException( "Unhandled case value" );
}
@@ -664,6 +709,13 @@ class LoginForm {
$this->mainLoginForm( wfMsg( 'blocked-mailpassword' ) );
return;
}
+
+ # Check for hooks
+ $error = null;
+ if ( ! wfRunHooks( 'UserLoginMailPassword', array( $this->mName, &$error ) ) ) {
+ $this->mainLoginForm( $error );
+ return;
+ }
# If the user doesn't have a login token yet, set one.
if ( !self::getLoginToken() ) {
@@ -684,12 +736,12 @@ class LoginForm {
return;
}
- if ( '' == $this->mName ) {
+ if ( $this->mName == '' ) {
$this->mainLoginForm( wfMsg( 'noname' ) );
return;
}
$u = User::newFromName( $this->mName );
- if( is_null( $u ) ) {
+ if( !$u instanceof User ) {
$this->mainLoginForm( wfMsg( 'noname' ) );
return;
}
@@ -725,17 +777,17 @@ class LoginForm {
/**
- * @param object user
- * @param bool throttle
- * @param string message name of email title
- * @param string message name of email text
- * @return mixed true on success, WikiError on failure
+ * @param $u User object
+ * @param $throttle Boolean
+ * @param $emailTitle String: message name of email title
+ * @param $emailText String: message name of email text
+ * @return Mixed: true on success, WikiError on failure
* @private
*/
function mailPasswordInternal( $u, $throttle = true, $emailTitle = 'passwordremindertitle', $emailText = 'passwordremindertext' ) {
global $wgServer, $wgScript, $wgUser, $wgNewPasswordExpiry;
- if ( '' == $u->getEmail() ) {
+ if ( $u->getEmail() == '' ) {
return new WikiError( wfMsg( 'noemail', $u->getName() ) );
}
$ip = wfGetIP();
@@ -748,10 +800,10 @@ class LoginForm {
$np = $u->randomPassword();
$u->setNewpassword( $np, $throttle );
$u->saveSettings();
-
- $m = wfMsgExt( $emailText, array( 'parsemag' ), $ip, $u->getName(), $np,
+ $userLanguage = $u->getOption( 'language' );
+ $m = wfMsgExt( $emailText, array( 'parsemag', 'language' => $userLanguage ), $ip, $u->getName(), $np,
$wgServer . $wgScript, round( $wgNewPasswordExpiry / 86400 ) );
- $result = $u->sendMail( wfMsg( $emailTitle ), $m );
+ $result = $u->sendMail( wfMsgExt( $emailTitle, array( 'parsemag', 'language' => $userLanguage ) ), $m );
return $result;
}
@@ -781,8 +833,7 @@ class LoginForm {
if ( !$titleObj instanceof Title ) {
$titleObj = Title::newMainPage();
}
-
- $wgOut->redirect( $titleObj->getFullURL() );
+ $wgOut->redirect( $titleObj->getFullURL( $this->mReturnToQuery ) );
}
}
@@ -815,7 +866,7 @@ class LoginForm {
$wgOut->addHTML( $injected_html );
if ( !empty( $this->mReturnTo ) ) {
- $wgOut->returnToMain( null, $this->mReturnTo );
+ $wgOut->returnToMain( null, $this->mReturnTo, $this->mReturnToQuery );
} else {
$wgOut->returnToMain( null );
}
@@ -868,7 +919,7 @@ class LoginForm {
* @private
*/
function mainLoginForm( $msg, $msgtype = 'error' ) {
- global $wgUser, $wgOut, $wgAllowRealName, $wgEnableEmail;
+ global $wgUser, $wgOut, $wgHiddenPrefs, $wgEnableEmail;
global $wgCookiePrefix, $wgLoginLanguageSelector;
global $wgAuth, $wgEmailConfirmToEdit, $wgCookieExpiration;
@@ -890,7 +941,7 @@ class LoginForm {
}
}
- if ( '' == $this->mName ) {
+ if ( $this->mName == '' ) {
if ( $wgUser->isLoggedIn() ) {
$this->mName = $wgUser->getName();
} else {
@@ -914,6 +965,9 @@ class LoginForm {
if ( !empty( $this->mReturnTo ) ) {
$returnto = '&returnto=' . wfUrlencode( $this->mReturnTo );
+ if ( !empty( $this->mReturnToQuery ) )
+ $returnto .= '&returntoquery=' .
+ wfUrlencode( $this->mReturnToQuery );
$q .= $returnto;
$linkq .= $returnto;
}
@@ -928,7 +982,7 @@ class LoginForm {
# Don't show a "create account" link if the user can't
if( $this->showCreateOrLoginLink( $wgUser ) )
- $template->set( 'link', wfMsgHtml( $linkmsg, $link ) );
+ $template->set( 'link', wfMsgWikiHtml( $linkmsg, $link ) );
else
$template->set( 'link', '' );
@@ -944,7 +998,7 @@ class LoginForm {
$template->set( 'message', $msg );
$template->set( 'messagetype', $msgtype );
$template->set( 'createemail', $wgEnableEmail && $wgUser->isLoggedIn() );
- $template->set( 'userealname', $wgAllowRealName );
+ $template->set( 'userealname', !in_array( 'realname', $wgHiddenPrefs ) );
$template->set( 'useemail', $wgEnableEmail );
$template->set( 'emailrequired', $wgEmailConfirmToEdit );
$template->set( 'canreset', $wgAuth->allowPasswordChange() );
@@ -971,14 +1025,20 @@ class LoginForm {
}
// Give authentication and captcha plugins a chance to modify the form
- $wgAuth->modifyUITemplate( $template );
+ $wgAuth->modifyUITemplate( $template, $this->mType );
if ( $this->mType == 'signup' ) {
wfRunHooks( 'UserCreateForm', array( &$template ) );
} else {
wfRunHooks( 'UserLoginForm', array( &$template ) );
}
- $wgOut->setPageTitle( wfMsg( 'userlogin' ) );
+ //Changes the title depending on permissions for creating account
+ if ( $wgUser->isAllowed( 'createaccount' ) ) {
+ $wgOut->setPageTitle( wfMsg( 'userlogin' ) );
+ } else {
+ $wgOut->setPageTitle( wfMsg( 'userloginnocreate' ) );
+ }
+
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->setArticleRelated( false );
$wgOut->disallowUserJs(); // just in case...
@@ -1080,8 +1140,6 @@ class LoginForm {
* @private
*/
function onCookieRedirectCheck( $type ) {
- global $wgUser;
-
if ( !$this->hasSessionCookie() ) {
if ( $type == 'new' ) {
return $this->mainLoginForm( wfMsgExt( 'nocookiesnew', array( 'parseinline' ) ) );
@@ -1139,12 +1197,17 @@ class LoginForm {
function makeLanguageSelectorLink( $text, $lang ) {
global $wgUser;
$self = SpecialPage::getTitleFor( 'Userlogin' );
- $attr[] = 'uselang=' . $lang;
+ $attr = array( 'uselang' => $lang );
if( $this->mType == 'signup' )
- $attr[] = 'type=signup';
+ $attr['type'] = 'signup';
if( $this->mReturnTo )
- $attr[] = 'returnto=' . $this->mReturnTo;
+ $attr['returnto'] = $this->mReturnTo;
$skin = $wgUser->getSkin();
- return $skin->makeKnownLinkObj( $self, htmlspecialchars( $text ), implode( '&', $attr ) );
+ return $skin->linkKnown(
+ $self,
+ htmlspecialchars( $text ),
+ array(),
+ $attr
+ );
}
}
diff --git a/includes/specials/SpecialUserlogout.php b/includes/specials/SpecialUserlogout.php
index 3d497bd7..e23df612 100644
--- a/includes/specials/SpecialUserlogout.php
+++ b/includes/specials/SpecialUserlogout.php
@@ -10,6 +10,16 @@
function wfSpecialUserlogout() {
global $wgUser, $wgOut;
+ /**
+ * Some satellite ISPs use broken precaching schemes that log people out straight after
+ * they're logged in (bug 17790). Luckily, there's a way to detect such requests.
+ */
+ if ( isset( $_SERVER['REQUEST_URI'] ) && strpos( $_SERVER['REQUEST_URI'], '&amp;' ) !== false ) {
+ wfDebug( "Special:Userlogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n" );
+ wfHttpError( 400, wfMsg( 'loginerror' ), wfMsg( 'suspicious-userlogout' ) );
+ return;
+ }
+
$oldName = $wgUser->getName();
$wgUser->logout();
$wgOut->setRobotPolicy( 'noindex,nofollow' );
diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php
index 90619109..36caf9a6 100644
--- a/includes/specials/SpecialUserrights.php
+++ b/includes/specials/SpecialUserrights.php
@@ -34,8 +34,8 @@ class UserrightsPage extends SpecialPage {
return !empty( $available['add'] )
or !empty( $available['remove'] )
or ( ( $this->isself || !$checkIfSelf ) and
- (!empty( $available['add-self'] )
- or !empty( $available['remove-self'] )));
+ ( !empty( $available['add-self'] )
+ or !empty( $available['remove-self'] ) ) );
}
/**
@@ -44,10 +44,10 @@ class UserrightsPage extends SpecialPage {
*
* @param $par Mixed: string if any subpage provided, else null
*/
- function execute( $par ) {
+ public function execute( $par ) {
// If the visitor doesn't have permissions to assign or remove
// any groups, it's a bit silly to give them the user search prompt.
- global $wgUser, $wgRequest;
+ global $wgUser, $wgRequest, $wgOut;
if( $par ) {
$this->mTarget = $par;
@@ -55,32 +55,41 @@ class UserrightsPage extends SpecialPage {
$this->mTarget = $wgRequest->getVal( 'user' );
}
- if (!$this->mTarget) {
+ /*
+ * If the user is blocked and they only have "partial" access
+ * (e.g. they don't have the userrights permission), then don't
+ * allow them to use Special:UserRights.
+ */
+ if( $wgUser->isBlocked() && !$wgUser->isAllowed( 'userrights' ) ) {
+ $wgOut->blockedPage();
+ return;
+ }
+
+ $available = $this->changeableGroups();
+
+ if ( !$this->mTarget ) {
/*
* If the user specified no target, and they can only
* edit their own groups, automatically set them as the
* target.
*/
- $available = $this->changeableGroups();
- if (empty($available['add']) && empty($available['remove']))
+ if ( !count( $available['add'] ) && !count( $available['remove'] ) )
$this->mTarget = $wgUser->getName();
}
- if ($this->mTarget == $wgUser->getName())
+ if ( $this->mTarget == $wgUser->getName() )
$this->isself = true;
if( !$this->userCanChangeRights( $wgUser, true ) ) {
// fixme... there may be intermediate groups we can mention.
- global $wgOut;
- $wgOut->showPermissionsErrorPage( array(
+ $wgOut->showPermissionsErrorPage( array( array(
$wgUser->isAnon()
? 'userrights-nologin'
- : 'userrights-notallowed' ) );
+ : 'userrights-notallowed' ) ) );
return;
}
if ( wfReadOnly() ) {
- global $wgOut;
$wgOut->readOnlyPage();
return;
}
@@ -90,7 +99,8 @@ class UserrightsPage extends SpecialPage {
$this->setHeaders();
// show the general form
- $this->switchForm();
+ if ( count( $available['add'] ) || count( $available['remove'] ) )
+ $this->switchForm();
if( $wgRequest->wasPosted() ) {
// save settings
@@ -102,9 +112,7 @@ class UserrightsPage extends SpecialPage {
$this->mTarget,
$reason
);
-
- global $wgOut;
-
+
$url = $this->getSuccessURL();
$wgOut->redirect( $url );
return;
@@ -117,7 +125,7 @@ class UserrightsPage extends SpecialPage {
$this->editUserGroupsForm( $this->mTarget );
}
}
-
+
function getSuccessURL() {
return $this->getTitle( $this->mTarget )->getFullURL();
}
@@ -130,11 +138,12 @@ class UserrightsPage extends SpecialPage {
* @param $reason String: reason for group change
* @return null
*/
- function saveUserGroups( $username, $reason = '') {
+ function saveUserGroups( $username, $reason = '' ) {
global $wgRequest, $wgUser, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
$user = $this->fetchUser( $username );
- if( !$user ) {
+ if( $user instanceof WikiErrorMsg ) {
+ $wgOut->addWikiMsgArray( $user->getMessageKey(), $user->getMessageArgs() );
return;
}
@@ -144,38 +153,58 @@ class UserrightsPage extends SpecialPage {
// This could possibly create a highly unlikely race condition if permissions are changed between
// when the form is loaded and when the form is saved. Ignoring it for the moment.
- foreach ($allgroups as $group) {
+ foreach ( $allgroups as $group ) {
// We'll tell it to remove all unchecked groups, and add all checked groups.
// Later on, this gets filtered for what can actually be removed
- if ($wgRequest->getCheck( "wpGroup-$group" )) {
+ if ( $wgRequest->getCheck( "wpGroup-$group" ) ) {
$addgroup[] = $group;
} else {
$removegroup[] = $group;
}
}
+
+ $this->doSaveUserGroups( $user, $addgroup, $removegroup, $reason );
+ }
+
+ /**
+ * Save user groups changes in the database.
+ *
+ * @param $user User object
+ * @param $add Array of groups to add
+ * @param $remove Array of groups to remove
+ * @param $reason String: reason for group change
+ * @return Array: Tuple of added, then removed groups
+ */
+ function doSaveUserGroups( $user, $add, $remove, $reason = '' ) {
+ global $wgUser;
// Validate input set...
+ $isself = ( $user->getName() == $wgUser->getName() );
+ $groups = $user->getGroups();
$changeable = $this->changeableGroups();
- $addable = array_merge( $changeable['add'], $this->isself ? $changeable['add-self'] : array() );
- $removable = array_merge( $changeable['remove'], $this->isself ? $changeable['remove-self'] : array() );
-
- $removegroup = array_unique(
- array_intersect( (array)$removegroup, $removable ) );
- $addgroup = array_unique(
- array_intersect( (array)$addgroup, $addable ) );
+ $addable = array_merge( $changeable['add'], $isself ? $changeable['add-self'] : array() );
+ $removable = array_merge( $changeable['remove'], $isself ? $changeable['remove-self'] : array() );
+
+ $remove = array_unique(
+ array_intersect( (array)$remove, $removable, $groups ) );
+ $add = array_unique( array_diff(
+ array_intersect( (array)$add, $addable ),
+ $groups )
+ );
$oldGroups = $user->getGroups();
$newGroups = $oldGroups;
+
// remove then add groups
- if( $removegroup ) {
- $newGroups = array_diff($newGroups, $removegroup);
- foreach( $removegroup as $group ) {
+ if( $remove ) {
+ $newGroups = array_diff( $newGroups, $remove );
+ foreach( $remove as $group ) {
$user->removeGroup( $group );
}
}
- if( $addgroup ) {
- $newGroups = array_merge($newGroups, $addgroup);
- foreach( $addgroup as $group ) {
+ if( $add ) {
+ $newGroups = array_merge( $newGroups, $add );
+ foreach( $add as $group ) {
$user->addGroup( $group );
}
}
@@ -186,26 +215,24 @@ class UserrightsPage extends SpecialPage {
wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) );
wfDebug( 'newGroups: ' . print_r( $newGroups, true ) );
- if( $user instanceof User ) {
- // hmmm
- wfRunHooks( 'UserRights', array( &$user, $addgroup, $removegroup ) );
- }
+ wfRunHooks( 'UserRights', array( &$user, $add, $remove ) );
if( $newGroups != $oldGroups ) {
- $this->addLogEntry( $user, $oldGroups, $newGroups );
+ $this->addLogEntry( $user, $oldGroups, $newGroups, $reason );
}
+ return array( $add, $remove );
}
-
+
+
/**
* Add a rights log entry for an action.
*/
- function addLogEntry( $user, $oldGroups, $newGroups ) {
- global $wgRequest;
+ function addLogEntry( $user, $oldGroups, $newGroups, $reason ) {
$log = new LogPage( 'rights' );
$log->addEntry( 'rights',
$user->getUserPage(),
- $wgRequest->getText( 'user-reason' ),
+ $reason,
array(
$this->makeGroupNameListForLog( $oldGroups ),
$this->makeGroupNameListForLog( $newGroups )
@@ -221,7 +248,8 @@ class UserrightsPage extends SpecialPage {
global $wgOut;
$user = $this->fetchUser( $username );
- if( !$user ) {
+ if( $user instanceof WikiErrorMsg ) {
+ $wgOut->addWikiMsgArray( $user->getMessageKey(), $user->getMessageArgs() );
return;
}
@@ -239,10 +267,10 @@ class UserrightsPage extends SpecialPage {
* return a user (or proxy) object for manipulating it.
*
* Side effects: error output for invalid access
- * @return mixed User, UserRightsProxy, or null
+ * @return mixed User, UserRightsProxy, or WikiErrorMsg
*/
- function fetchUser( $username ) {
- global $wgOut, $wgUser, $wgUserrightsInterwikiDelimiter;
+ public function fetchUser( $username ) {
+ global $wgUser, $wgUserrightsInterwikiDelimiter;
$parts = explode( $wgUserrightsInterwikiDelimiter, $username );
if( count( $parts ) < 2 ) {
@@ -250,20 +278,21 @@ class UserrightsPage extends SpecialPage {
$database = '';
} else {
list( $name, $database ) = array_map( 'trim', $parts );
-
- if( !$wgUser->isAllowed( 'userrights-interwiki' ) ) {
- $wgOut->addWikiMsg( 'userrights-no-interwiki' );
- return null;
- }
- if( !UserRightsProxy::validDatabase( $database ) ) {
- $wgOut->addWikiMsg( 'userrights-nodatabase', $database );
- return null;
+
+ if( $database == wfWikiID() ) {
+ $database = '';
+ } else {
+ if( !$wgUser->isAllowed( 'userrights-interwiki' ) ) {
+ return new WikiErrorMsg( 'userrights-no-interwiki' );
+ }
+ if( !UserRightsProxy::validDatabase( $database ) ) {
+ return new WikiErrorMsg( 'userrights-nodatabase', $database );
+ }
}
}
if( $name == '' ) {
- $wgOut->addWikiMsg( 'nouserspecified' );
- return false;
+ return new WikiErrorMsg( 'nouserspecified' );
}
if( $name{0} == '#' ) {
@@ -278,8 +307,13 @@ class UserrightsPage extends SpecialPage {
}
if( !$name ) {
- $wgOut->addWikiMsg( 'noname' );
- return null;
+ return new WikiErrorMsg( 'noname' );
+ }
+ } else {
+ $name = User::getCanonicalName( $name );
+ if( !$name ) {
+ // invalid name
+ return new WikiErrorMsg( 'nosuchusershort', $username );
}
}
@@ -290,8 +324,7 @@ class UserrightsPage extends SpecialPage {
}
if( !$user || $user->isAnon() ) {
- $wgOut->addWikiMsg( 'nosuchusershort', $username );
- return null;
+ return new WikiErrorMsg( 'nosuchusershort', $username );
}
return $user;
@@ -339,14 +372,16 @@ class UserrightsPage extends SpecialPage {
* @return Array: Tuple of addable, then removable groups
*/
protected function splitGroups( $groups ) {
- list($addable, $removable, $addself, $removeself) = array_values( $this->changeableGroups() );
+ list( $addable, $removable, $addself, $removeself ) = array_values( $this->changeableGroups() );
$removable = array_intersect(
- array_merge( $this->isself ? $removeself : array(), $removable ),
- $groups ); // Can't remove groups the user doesn't have
- $addable = array_diff(
- array_merge( $this->isself ? $addself : array(), $addable ),
- $groups ); // Can't add groups the user does have
+ array_merge( $this->isself ? $removeself : array(), $removable ),
+ $groups
+ ); // Can't remove groups the user doesn't have
+ $addable = array_diff(
+ array_merge( $this->isself ? $addself : array(), $addable ),
+ $groups
+ ); // Can't add groups the user does have
return array( $addable, $removable );
}
@@ -364,10 +399,21 @@ class UserrightsPage extends SpecialPage {
foreach( $groups as $group )
$list[] = self::buildGroupLink( $group );
+ $autolist = array();
+ if ( $user instanceof User ) {
+ foreach( Autopromote::getAutopromoteGroups( $user ) as $group ) {
+ $autolist[] = self::buildGroupLink( $group );
+ }
+ }
+
$grouplist = '';
if( count( $list ) > 0 ) {
$grouplist = wfMsgHtml( 'userrights-groupsmember' );
- $grouplist = '<p>' . $grouplist . ' ' . $wgLang->listToText( $list ) . '</p>';
+ $grouplist = '<p>' . $grouplist . ' ' . $wgLang->listToText( $list ) . "</p>\n";
+ }
+ if( count( $autolist ) > 0 ) {
+ $autogrouplistintro = wfMsgHtml( 'userrights-groupsmember-auto' );
+ $grouplist .= '<p>' . $autogrouplistintro . ' ' . $wgLang->listToText( $autolist ) . "</p>\n";
}
$wgOut->addHTML(
Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL(), 'name' => 'editGroup', 'id' => 'mw-userrights-form2' ) ) .
@@ -409,17 +455,17 @@ class UserrightsPage extends SpecialPage {
private static function buildGroupLink( $group ) {
static $cache = array();
if( !isset( $cache[$group] ) )
- $cache[$group] = User::makeGroupLinkHtml( $group, User::getGroupName( $group ) );
+ $cache[$group] = User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupName( $group ) ) );
return $cache[$group];
}
-
+
/**
* Returns an array of all groups that may be edited
* @return array Array of groups that may be edited.
*/
- protected static function getAllGroups() {
- return User::getAllGroups();
- }
+ protected static function getAllGroups() {
+ return User::getAllGroups();
+ }
/**
* Adds a table with checkboxes where you can select what groups to add/remove
@@ -431,11 +477,11 @@ class UserrightsPage extends SpecialPage {
$allgroups = $this->getAllGroups();
$ret = '';
- $column = 1;
- $settable_col = '';
- $unsettable_col = '';
+ # Put all column info into an associative array so that extensions can
+ # more easily manage it.
+ $columns = array( 'unchangeable' => array(), 'changeable' => array() );
- foreach ($allgroups as $group) {
+ foreach( $allgroups as $group ) {
$set = in_array( $group, $usergroups );
# Should the checkbox be disabled?
$disabled = !(
@@ -443,53 +489,54 @@ class UserrightsPage extends SpecialPage {
( !$set && $this->canAdd( $group ) ) );
# Do we need to point out that this action is irreversible?
$irreversible = !$disabled && (
- ($set && !$this->canAdd( $group )) ||
- (!$set && !$this->canRemove( $group ) ) );
-
- $attr = $disabled ? array( 'disabled' => 'disabled' ) : array();
- $text = $irreversible
- ? wfMsgHtml( 'userrights-irreversible-marker', User::getGroupMember( $group ) )
- : User::getGroupMember( $group );
- $checkbox = Xml::checkLabel( $text, "wpGroup-$group",
- "wpGroup-$group", $set, $attr );
- $checkbox = $disabled ? Xml::tags( 'span', array( 'class' => 'mw-userrights-disabled' ), $checkbox ) : $checkbox;
-
- if ($disabled) {
- $unsettable_col .= "$checkbox<br />\n";
+ ( $set && !$this->canAdd( $group ) ) ||
+ ( !$set && !$this->canRemove( $group ) ) );
+
+ $checkbox = array(
+ 'set' => $set,
+ 'disabled' => $disabled,
+ 'irreversible' => $irreversible
+ );
+
+ if( $disabled ) {
+ $columns['unchangeable'][$group] = $checkbox;
} else {
- $settable_col .= "$checkbox<br />\n";
+ $columns['changeable'][$group] = $checkbox;
}
}
- if ($column) {
- $ret .= Xml::openElement( 'table', array( 'border' => '0', 'class' => 'mw-userrights-groups' ) ) .
- "<tr>
-";
- if( $settable_col !== '' ) {
- $ret .= xml::element( 'th', null, wfMsg( 'userrights-changeable-col' ) );
- }
- if( $unsettable_col !== '' ) {
- $ret .= xml::element( 'th', null, wfMsg( 'userrights-unchangeable-col' ) );
- }
- $ret.= "</tr>
- <tr>
-";
- if( $settable_col !== '' ) {
- $ret .=
-" <td style='vertical-align:top;'>
- $settable_col
- </td>
-";
- }
- if( $unsettable_col !== '' ) {
- $ret .=
-" <td style='vertical-align:top;'>
- $unsettable_col
- </td>
-";
+ # Build the HTML table
+ $ret .= Xml::openElement( 'table', array( 'border' => '0', 'class' => 'mw-userrights-groups' ) ) .
+ "<tr>\n";
+ foreach( $columns as $name => $column ) {
+ if( $column === array() )
+ continue;
+ $ret .= xml::element( 'th', null, wfMsg( 'userrights-' . $name . '-col' ) );
+ }
+ $ret.= "</tr>\n<tr>\n";
+ foreach( $columns as $column ) {
+ if( $column === array() )
+ continue;
+ $ret .= "\t<td style='vertical-align:top;'>\n";
+ foreach( $column as $group => $checkbox ) {
+ $attr = $checkbox['disabled'] ? array( 'disabled' => 'disabled' ) : array();
+
+ if ( $checkbox['irreversible'] ) {
+ $text = htmlspecialchars( wfMsg( 'userrights-irreversible-marker',
+ User::getGroupMember( $group ) ) );
+ } else {
+ $text = htmlspecialchars( User::getGroupMember( $group ) );
+ }
+ $checkboxHtml = Xml::checkLabel( $text, "wpGroup-" . $group,
+ "wpGroup-" . $group, $checkbox['set'], $attr );
+ $ret .= "\t\t" . ( $checkbox['disabled']
+ ? Xml::tags( 'span', array( 'class' => 'mw-userrights-disabled' ), $checkboxHtml )
+ : $checkboxHtml
+ ) . "<br />\n";
}
- $ret .= Xml::closeElement( 'tr' ) . Xml::closeElement( 'table' );
+ $ret .= "\t</td>\n";
}
+ $ret .= Xml::closeElement( 'tr' ) . Xml::closeElement( 'table' );
return $ret;
}
@@ -502,7 +549,7 @@ class UserrightsPage extends SpecialPage {
// $this->changeableGroups()['remove'] doesn't work, of course. Thanks,
// PHP.
$groups = $this->changeableGroups();
- return in_array( $group, $groups['remove'] ) || ($this->isself && in_array( $group, $groups['remove-self'] ));
+ return in_array( $group, $groups['remove'] ) || ( $this->isself && in_array( $group, $groups['remove-self'] ) );
}
/**
@@ -511,116 +558,17 @@ class UserrightsPage extends SpecialPage {
*/
private function canAdd( $group ) {
$groups = $this->changeableGroups();
- return in_array( $group, $groups['add'] ) || ($this->isself && in_array( $group, $groups['add-self'] ));
+ return in_array( $group, $groups['add'] ) || ( $this->isself && in_array( $group, $groups['add-self'] ) );
}
/**
- * Returns an array of the groups that the user can add/remove.
+ * Returns $wgUser->changeableGroups()
*
* @return Array array( 'add' => array( addablegroups ), 'remove' => array( removablegroups ) , 'add-self' => array( addablegroups to self), 'remove-self' => array( removable groups from self) )
*/
function changeableGroups() {
global $wgUser;
-
- if( $wgUser->isAllowed( 'userrights' ) ) {
- // This group gives the right to modify everything (reverse-
- // compatibility with old "userrights lets you change
- // everything")
- // Using array_merge to make the groups reindexed
- $all = array_merge( User::getAllGroups() );
- return array(
- 'add' => $all,
- 'remove' => $all,
- 'add-self' => array(),
- 'remove-self' => array()
- );
- }
-
- // Okay, it's not so simple, we will have to go through the arrays
- $groups = array(
- 'add' => array(),
- 'remove' => array(),
- 'add-self' => array(),
- 'remove-self' => array() );
- $addergroups = $wgUser->getEffectiveGroups();
-
- foreach ($addergroups as $addergroup) {
- $groups = array_merge_recursive(
- $groups, $this->changeableByGroup($addergroup)
- );
- $groups['add'] = array_unique( $groups['add'] );
- $groups['remove'] = array_unique( $groups['remove'] );
- $groups['add-self'] = array_unique( $groups['add-self'] );
- $groups['remove-self'] = array_unique( $groups['remove-self'] );
- }
-
- // Run a hook because we can
- wfRunHooks( 'UserrightsChangeableGroups', array( $this, $wgUser, $addergroups, &$groups ) );
-
- return $groups;
- }
-
- /**
- * Returns an array of the groups that a particular group can add/remove.
- *
- * @param $group String: the group to check for whether it can add/remove
- * @return Array array( 'add' => array( addablegroups ), 'remove' => array( removablegroups ) , 'add-self' => array( addablegroups to self), 'remove-self' => array( removable groups from self) )
- */
- private function changeableByGroup( $group ) {
- global $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
-
- $groups = array( 'add' => array(), 'remove' => array(), 'add-self' => array(), 'remove-self' => array() );
- if( empty($wgAddGroups[$group]) ) {
- // Don't add anything to $groups
- } elseif( $wgAddGroups[$group] === true ) {
- // You get everything
- $groups['add'] = User::getAllGroups();
- } elseif( is_array($wgAddGroups[$group]) ) {
- $groups['add'] = $wgAddGroups[$group];
- }
-
- // Same thing for remove
- if( empty($wgRemoveGroups[$group]) ) {
- } elseif($wgRemoveGroups[$group] === true ) {
- $groups['remove'] = User::getAllGroups();
- } elseif( is_array($wgRemoveGroups[$group]) ) {
- $groups['remove'] = $wgRemoveGroups[$group];
- }
-
- // Re-map numeric keys of AddToSelf/RemoveFromSelf to the 'user' key for backwards compatibility
- if( empty($wgGroupsAddToSelf['user']) || $wgGroupsAddToSelf['user'] !== true ) {
- foreach($wgGroupsAddToSelf as $key => $value) {
- if( is_int($key) ) {
- $wgGroupsAddToSelf['user'][] = $value;
- }
- }
- }
-
- if( empty($wgGroupsRemoveFromSelf['user']) || $wgGroupsRemoveFromSelf['user'] !== true ) {
- foreach($wgGroupsRemoveFromSelf as $key => $value) {
- if( is_int($key) ) {
- $wgGroupsRemoveFromSelf['user'][] = $value;
- }
- }
- }
-
- // Now figure out what groups the user can add to him/herself
- if( empty($wgGroupsAddToSelf[$group]) ) {
- } elseif( $wgGroupsAddToSelf[$group] === true ) {
- // No idea WHY this would be used, but it's there
- $groups['add-self'] = User::getAllGroups();
- } elseif( is_array($wgGroupsAddToSelf[$group]) ) {
- $groups['add-self'] = $wgGroupsAddToSelf[$group];
- }
-
- if( empty($wgGroupsRemoveFromSelf[$group]) ) {
- } elseif( $wgGroupsRemoveFromSelf[$group] === true ) {
- $groups['remove-self'] = User::getAllGroups();
- } elseif( is_array($wgGroupsRemoveFromSelf[$group]) ) {
- $groups['remove-self'] = $wgGroupsRemoveFromSelf[$group];
- }
-
- return $groups;
+ return $wgUser->changeableGroups();
}
/**
diff --git a/includes/specials/SpecialVersion.php b/includes/specials/SpecialVersion.php
index 95e06f4b..7da6023e 100644
--- a/includes/specials/SpecialVersion.php
+++ b/includes/specials/SpecialVersion.php
@@ -12,21 +12,29 @@
class SpecialVersion extends SpecialPage {
private $firstExtOpened = true;
+ static $viewvcUrls = array(
+ 'svn+ssh://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
+ 'http://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
+ # Doesn't work at the time of writing but maybe some day:
+ 'https://svn.wikimedia.org/viewvc/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
+ );
+
function __construct(){
- parent::__construct( 'Version' );
+ parent::__construct( 'Version' );
}
/**
* main()
*/
function execute( $par ) {
- global $wgOut, $wgMessageCache, $wgSpecialVersionShowHooks;
+ global $wgOut, $wgMessageCache, $wgSpecialVersionShowHooks, $wgContLang;
$wgMessageCache->loadAllMessages();
$this->setHeaders();
$this->outputHeader();
- $wgOut->addHTML( '<div dir="ltr">' );
+ $wgOut->addHTML( Xml::openElement( 'div',
+ array( 'dir' => $wgContLang->getDir() ) ) );
$text =
$this->MediaWikiCredits() .
$this->softwareInformation() .
@@ -47,13 +55,19 @@ class SpecialVersion extends SpecialPage {
* @return wiki text showing the license information
*/
static function MediaWikiCredits() {
- $ret = Xml::element( 'h2', array( 'id' => 'mw-version-license' ), wfMsg( 'version-license' ) ) .
- "__NOTOC__
+ global $wgContLang;
+
+ $ret = Xml::element( 'h2', array( 'id' => 'mw-version-license' ), wfMsg( 'version-license' ) );
+
+ // This text is always left-to-right.
+ $ret .= '<div dir="ltr">';
+ $ret .= "__NOTOC__
This wiki is powered by '''[http://www.mediawiki.org/ MediaWiki]''',
- copyright (C) 2001-2009 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
+ copyright © 2001-2010 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason,
Niklas Laxström, Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor,
- Aaron Schulz and others.
+ Aaron Schulz, Andrew Garrett, Raimond Spekking, Alexandre Emsenhuber,
+ Siebrand Mazeland, Chad Horohoe and others.
MediaWiki is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -70,6 +84,7 @@ class SpecialVersion extends SpecialPage {
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
or [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].
";
+ $ret .= '</div>';
return str_replace( "\t\t", '', $ret ) . "\n";
}
@@ -80,25 +95,30 @@ class SpecialVersion extends SpecialPage {
static function softwareInformation() {
$dbr = wfGetDB( DB_SLAVE );
- return Xml::element( 'h2', array( 'id' => 'mw-version-software' ), wfMsg( 'version-software' ) ) .
- Xml::openElement( 'table', array( 'id' => 'sv-software' ) ) .
+ // Put the software in an array of form 'name' => 'version'. All messages should
+ // be loaded here, so feel free to use wfMsg*() in the 'name'. Raw HTML or wikimarkup
+ // can be used
+ $software = array();
+ $software['[http://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
+ $software['[http://www.php.net/ PHP]'] = phpversion() . " (" . php_sapi_name() . ")";
+ $software[$dbr->getSoftwareLink()] = $dbr->getServerVersion();
+
+ // Allow a hook to add/remove items
+ wfRunHooks( 'SoftwareInfo', array( &$software ) );
+
+ $out = Xml::element( 'h2', array( 'id' => 'mw-version-software' ), wfMsg( 'version-software' ) ) .
+ Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-software' ) ) .
"<tr>
<th>" . wfMsg( 'version-software-product' ) . "</th>
<th>" . wfMsg( 'version-software-version' ) . "</th>
- </tr>\n
- <tr>
- <td>[http://www.mediawiki.org/ MediaWiki]</td>
- <td>" . self::getVersionLinked() . "</td>
- </tr>\n
- <tr>
- <td>[http://www.php.net/ PHP]</td>
- <td>" . phpversion() . " (" . php_sapi_name() . ")</td>
- </tr>\n
- <tr>
- <td>" . $dbr->getSoftwareLink() . "</td>
- <td>" . $dbr->getServerVersion() . "</td>
- </tr>\n" .
- Xml::closeElement( 'table' );
+ </tr>\n";
+ foreach( $software as $name => $version ) {
+ $out .= "<tr>
+ <td>" . $name . "</td>
+ <td>" . $version . "</td>
+ </tr>\n";
+ }
+ return $out . Xml::closeElement( 'table' );
}
/**
@@ -106,27 +126,52 @@ class SpecialVersion extends SpecialPage {
*
* @return mixed
*/
- public static function getVersion() {
+ public static function getVersion( $flags = '' ) {
global $wgVersion, $IP;
wfProfileIn( __METHOD__ );
- $svn = self::getSvnRevision( $IP );
- $version = $svn ? "$wgVersion (r$svn)" : $wgVersion;
+
+ $info = self::getSvnInfo( $IP );
+ if ( !$info ) {
+ $version = $wgVersion;
+ } elseif( $flags === 'nodb' ) {
+ $version = "$wgVersion (r{$info['checkout-rev']})";
+ } else {
+ $version = $wgVersion . ' ' .
+ wfMsg(
+ 'version-svn-revision',
+ isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
+ $info['checkout-rev']
+ );
+ }
+
wfProfileOut( __METHOD__ );
return $version;
}
/**
- * Return a string of the MediaWiki version with a link to SVN revision if
- * available
+ * Return a wikitext-formatted string of the MediaWiki version with a link to
+ * the SVN revision if available
*
* @return mixed
*/
public static function getVersionLinked() {
global $wgVersion, $IP;
wfProfileIn( __METHOD__ );
- $svn = self::getSvnRevision( $IP );
- $viewvc = 'http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/?pathrev=';
- $version = $svn ? "$wgVersion ([{$viewvc}{$svn} r$svn])" : $wgVersion;
+ $info = self::getSvnInfo( $IP );
+ if ( isset( $info['checkout-rev'] ) ) {
+ $linkText = wfMsg(
+ 'version-svn-revision',
+ isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
+ $info['checkout-rev']
+ );
+ if ( isset( $info['viewvc-url'] ) ) {
+ $version = "$wgVersion [{$info['viewvc-url']} $linkText]";
+ } else {
+ $version = "$wgVersion $linkText";
+ }
+ } else {
+ $version = $wgVersion;
+ }
wfProfileOut( __METHOD__ );
return $version;
}
@@ -148,64 +193,40 @@ class SpecialVersion extends SpecialPage {
wfRunHooks( 'SpecialVersionExtensionTypes', array( &$this, &$extensionTypes ) );
$out = Xml::element( 'h2', array( 'id' => 'mw-version-ext' ), wfMsg( 'version-extensions' ) ) .
- Xml::openElement( 'table', array( 'id' => 'sv-ext' ) );
+ Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-ext' ) );
foreach ( $extensionTypes as $type => $text ) {
if ( isset ( $wgExtensionCredits[$type] ) && count ( $wgExtensionCredits[$type] ) ) {
- $out .= $this->openExtType( $text );
+ $out .= $this->openExtType( $text, 'credits-' . $type );
usort( $wgExtensionCredits[$type], array( $this, 'compare' ) );
foreach ( $wgExtensionCredits[$type] as $extension ) {
- $version = null;
- $subVersion = '';
- if ( isset( $extension['version'] ) ) {
- $version = $extension['version'];
- }
- if ( isset( $extension['svn-revision'] ) &&
- preg_match( '/\$(?:Rev|LastChangedRevision|Revision): *(\d+)/',
- $extension['svn-revision'], $m ) ) {
- $subVersion = 'r' . $m[1];
- }
-
- if( $version && $subVersion ) {
- $version = $version . ' [' . $subVersion . ']';
- } elseif ( !$version && $subVersion ) {
- $version = $subVersion;
- }
-
- $out .= $this->formatCredits(
- isset ( $extension['name'] ) ? $extension['name'] : '',
- $version,
- isset ( $extension['author'] ) ? $extension['author'] : '',
- isset ( $extension['url'] ) ? $extension['url'] : null,
- isset ( $extension['description'] ) ? $extension['description'] : '',
- isset ( $extension['descriptionmsg'] ) ? $extension['descriptionmsg'] : ''
- );
+ $out .= $this->formatCredits( $extension );
}
}
}
if ( count( $wgExtensionFunctions ) ) {
- $out .= $this->openExtType( wfMsg( 'version-extension-functions' ) );
- $out .= '<tr><td colspan="3">' . $this->listToText( $wgExtensionFunctions ) . "</td></tr>\n";
+ $out .= $this->openExtType( wfMsg( 'version-extension-functions' ), 'extension-functions' );
+ $out .= '<tr><td colspan="4">' . $this->listToText( $wgExtensionFunctions ) . "</td></tr>\n";
}
if ( $cnt = count( $tags = $wgParser->getTags() ) ) {
for ( $i = 0; $i < $cnt; ++$i )
$tags[$i] = "&lt;{$tags[$i]}&gt;";
- $out .= $this->openExtType( wfMsg( 'version-parser-extensiontags' ) );
- $out .= '<tr><td colspan="3">' . $this->listToText( $tags ). "</td></tr>\n";
+ $out .= $this->openExtType( wfMsg( 'version-parser-extensiontags' ), 'parser-tags' );
+ $out .= '<tr><td colspan="4">' . $this->listToText( $tags ). "</td></tr>\n";
}
if( $cnt = count( $fhooks = $wgParser->getFunctionHooks() ) ) {
- $out .= $this->openExtType( wfMsg( 'version-parser-function-hooks' ) );
- $out .= '<tr><td colspan="3">' . $this->listToText( $fhooks ) . "</td></tr>\n";
+ $out .= $this->openExtType( wfMsg( 'version-parser-function-hooks' ), 'parser-function-hooks' );
+ $out .= '<tr><td colspan="4">' . $this->listToText( $fhooks ) . "</td></tr>\n";
}
if ( count( $wgSkinExtensionFunctions ) ) {
- $out .= $this->openExtType( wfMsg( 'version-skin-extension-functions' ) );
- $out .= '<tr><td colspan="3">' . $this->listToText( $wgSkinExtensionFunctions ) . "</td></tr>\n";
+ $out .= $this->openExtType( wfMsg( 'version-skin-extension-functions' ), 'skin-extension-functions' );
+ $out .= '<tr><td colspan="4">' . $this->listToText( $wgSkinExtensionFunctions ) . "</td></tr>\n";
}
$out .= Xml::closeElement( 'table' );
return $out;
@@ -223,23 +244,72 @@ class SpecialVersion extends SpecialPage {
}
}
- function formatCredits( $name, $version = null, $author = null, $url = null, $description = null, $descriptionMsg = null ) {
- $extension = isset( $url ) ? "[$url $name]" : $name;
- $version = isset( $version ) ? "(" . wfMsg( 'version-version' ) . " $version)" : '';
+ function formatCredits( $extension ) {
+ $name = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+ if ( isset( $extension['path'] ) ) {
+ $svnInfo = self::getSvnInfo( dirname($extension['path']) );
+ $directoryRev = isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : null;
+ $checkoutRev = isset( $svnInfo['checkout-rev'] ) ? $svnInfo['checkout-rev'] : null;
+ $viewvcUrl = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : null;
+ } else {
+ $directoryRev = null;
+ $checkoutRev = null;
+ $viewvcUrl = null;
+ }
+
+ # Make main link (or just the name if there is no URL)
+ if ( isset( $extension['url'] ) ) {
+ $mainLink = "[{$extension['url']} $name]";
+ } else {
+ $mainLink = $name;
+ }
+ if ( isset( $extension['version'] ) ) {
+ $versionText = '<span class="mw-version-ext-version">' .
+ wfMsg( 'version-version', $extension['version'] ) .
+ '</span>';
+ } else {
+ $versionText = '';
+ }
- # Look for a localized description
- if( isset( $descriptionMsg ) ) {
- $msg = wfMsg( $descriptionMsg );
- if ( !wfEmptyMsg( $descriptionMsg, $msg ) && $msg != '' ) {
- $description = $msg;
+ # Make subversion text/link
+ if ( $checkoutRev ) {
+ $svnText = wfMsg( 'version-svn-revision', $directoryRev, $checkoutRev );
+ $svnText = isset( $viewvcUrl ) ? "[$viewvcUrl $svnText]" : $svnText;
+ } else {
+ $svnText = false;
+ }
+
+ # Make description text
+ $description = isset ( $extension['description'] ) ? $extension['description'] : '';
+ if( isset ( $extension['descriptionmsg'] ) ) {
+ # Look for a localized description
+ $descriptionMsg = $extension['descriptionmsg'];
+ if( is_array( $descriptionMsg ) ) {
+ $descriptionMsgKey = $descriptionMsg[0]; // Get the message key
+ array_shift( $descriptionMsg ); // Shift out the message key to get the parameters only
+ array_map( "htmlspecialchars", $descriptionMsg ); // For sanity
+ $msg = wfMsg( $descriptionMsgKey, $descriptionMsg );
+ } else {
+ $msg = wfMsg( $descriptionMsg );
}
+ if ( !wfEmptyMsg( $descriptionMsg, $msg ) && $msg != '' ) {
+ $description = $msg;
+ }
}
- return "<tr>
- <td><em>$extension $version</em></td>
- <td>$description</td>
- <td>" . $this->listToText( (array)$author ) . "</td>
+ if ( $svnText !== false ) {
+ $extNameVer = "<tr>
+ <td><em>$mainLink $versionText</em></td>
+ <td><em>$svnText</em></td>";
+ } else {
+ $extNameVer = "<tr>
+ <td colspan=\"2\"><em>$mainLink $versionText</em></td>";
+ }
+ $author = isset ( $extension['author'] ) ? $extension['author'] : array();
+ $extDescAuthor = "<td>$description</td>
+ <td>" . $this->listToText( (array)$author, false ) . "</td>
</tr>\n";
+ return $extNameVer . $extDescAuthor;
}
/**
@@ -253,7 +323,7 @@ class SpecialVersion extends SpecialPage {
ksort( $myWgHooks );
$ret = Xml::element( 'h2', array( 'id' => 'mw-version-hooks' ), wfMsg( 'version-hooks' ) ) .
- Xml::openElement( 'table', array( 'id' => 'sv-hooks' ) ) .
+ Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-hooks' ) ) .
"<tr>
<th>" . wfMsg( 'version-hook-name' ) . "</th>
<th>" . wfMsg( 'version-hook-subscribedby' ) . "</th>
@@ -271,19 +341,20 @@ class SpecialVersion extends SpecialPage {
return '';
}
- private function openExtType($text, $name = null) {
- $opt = array( 'colspan' => 3 );
+ private function openExtType( $text, $name = null ) {
+ $opt = array( 'colspan' => 4 );
$out = '';
- if(!$this->firstExtOpened) {
+ if( !$this->firstExtOpened ) {
// Insert a spacing line
$out .= '<tr class="sv-space">' . Xml::element( 'td', $opt ) . "</tr>\n";
}
$this->firstExtOpened = false;
- if($name) { $opt['id'] = "sv-$name"; }
+ if( $name )
+ $opt['id'] = "sv-$name";
- $out .= "<tr>" . Xml::element( 'th', $opt, $text) . "</tr>\n";
+ $out .= "<tr>" . Xml::element( 'th', $opt, $text ) . "</tr>\n";
return $out;
}
@@ -298,9 +369,10 @@ class SpecialVersion extends SpecialPage {
/**
* @param array $list
+ * @param bool $sort
* @return string
*/
- function listToText( $list ) {
+ function listToText( $list, $sort = true ) {
$cnt = count( $list );
if ( $cnt == 1 ) {
@@ -310,7 +382,9 @@ class SpecialVersion extends SpecialPage {
return '';
} else {
global $wgLang;
- sort( $list );
+ if ( $sort ) {
+ sort( $list );
+ }
return $wgLang->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
}
}
@@ -338,12 +412,20 @@ class SpecialVersion extends SpecialPage {
}
/**
- * Retrieve the revision number of a Subversion working directory.
+ * Get an associative array of information about a given path, from its .svn
+ * subdirectory. Returns false on error, such as if the directory was not
+ * checked out with subversion.
*
- * @param string $dir
- * @return mixed revision number as int, or false if not a SVN checkout
+ * Returned keys are:
+ * Required:
+ * checkout-rev The revision which was checked out
+ * Optional:
+ * directory-rev The revision when the directory was last modified
+ * url The subversion URL of the directory
+ * repo-url The base URL of the repository
+ * viewvc-url A ViewVC URL pointing to the checked-out revision
*/
- public static function getSvnRevision( $dir ) {
+ public static function getSvnInfo( $dir ) {
// http://svnbook.red-bean.com/nightly/en/svn.developer.insidewc.html
$entries = $dir . '/.svn/entries';
@@ -351,10 +433,13 @@ class SpecialVersion extends SpecialPage {
return false;
}
- $content = file( $entries );
+ $lines = file( $entries );
+ if ( !count( $lines ) ) {
+ return false;
+ }
// check if file is xml (subversion release <= 1.3) or not (subversion release = 1.4)
- if( preg_match( '/^<\?xml/', $content[0] ) ) {
+ if( preg_match( '/^<\?xml/', $lines[0] ) ) {
// subversion is release <= 1.3
if( !function_exists( 'simplexml_load_file' ) ) {
// We could fall back to expat... YUCK
@@ -371,15 +456,52 @@ class SpecialVersion extends SpecialPage {
if( $xml->entry[0]['name'] == '' ) {
// The directory entry should always have a revision marker.
if( $entry['revision'] ) {
- return intval( $entry['revision'] );
+ return array( 'checkout-rev' => intval( $entry['revision'] ) );
}
}
}
}
return false;
+ }
+
+ // subversion is release 1.4 or above
+ if ( count( $lines ) < 11 ) {
+ return false;
+ }
+ $info = array(
+ 'checkout-rev' => intval( trim( $lines[3] ) ),
+ 'url' => trim( $lines[4] ),
+ 'repo-url' => trim( $lines[5] ),
+ 'directory-rev' => intval( trim( $lines[10] ) )
+ );
+ if ( isset( self::$viewvcUrls[$info['repo-url']] ) ) {
+ $viewvc = str_replace(
+ $info['repo-url'],
+ self::$viewvcUrls[$info['repo-url']],
+ $info['url']
+ );
+ $pathRelativeToRepo = substr( $info['url'], strlen( $info['repo-url'] ) );
+ $viewvc .= '/?pathrev=';
+ $viewvc .= urlencode( $info['checkout-rev'] );
+ $info['viewvc-url'] = $viewvc;
+ }
+ return $info;
+ }
+
+ /**
+ * Retrieve the revision number of a Subversion working directory.
+ *
+ * @param String $dir Directory of the svn checkout
+ * @return int revision number as int
+ */
+ public static function getSvnRevision( $dir ) {
+ $info = self::getSvnInfo( $dir );
+ if ( $info === false ) {
+ return false;
+ } elseif ( isset( $info['checkout-rev'] ) ) {
+ return $info['checkout-rev'];
} else {
- // subversion is release 1.4
- return intval( $content[3] );
+ return false;
}
}
diff --git a/includes/specials/SpecialWantedcategories.php b/includes/specials/SpecialWantedcategories.php
index 7497f9be..5e5a4f17 100644
--- a/includes/specials/SpecialWantedcategories.php
+++ b/includes/specials/SpecialWantedcategories.php
@@ -13,20 +13,12 @@
* @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
-class WantedCategoriesPage extends QueryPage {
+class WantedCategoriesPage extends WantedQueryPage {
function getName() {
return 'Wantedcategories';
}
- function isExpensive() {
- return true;
- }
-
- function isSyndicated() {
- return false;
- }
-
function getSQL() {
$dbr = wfGetDB( DB_SLAVE );
list( $categorylinks, $page ) = $dbr->tableNamesN( 'categorylinks', 'page' );
@@ -45,32 +37,21 @@ class WantedCategoriesPage extends QueryPage {
";
}
- function sortDescending() { return true; }
-
- /**
- * Fetch user page links and cache their existence
- */
- function preprocessResults( $db, $res ) {
- $batch = new LinkBatch;
- while ( $row = $db->fetchObject( $res ) )
- $batch->add( $row->namespace, $row->title );
- $batch->execute();
-
- // Back to start for display
- if ( $db->numRows( $res ) > 0 )
- // If there are no rows we get an error seeking.
- $db->dataSeek( $res, 0 );
- }
-
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
$nt = Title::makeTitle( $result->namespace, $result->title );
- $text = $wgContLang->convert( $nt->getText() );
+ $text = htmlspecialchars( $wgContLang->convert( $nt->getText() ) );
$plink = $this->isCached() ?
- $skin->makeLinkObj( $nt, htmlspecialchars( $text ) ) :
- $skin->makeBrokenLinkObj( $nt, htmlspecialchars( $text ) );
+ $skin->link( $nt, $text ) :
+ $skin->link(
+ $nt,
+ $text,
+ array(),
+ array(),
+ array( 'broken' )
+ );
$nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'),
$wgLang->formatNum( $result->value ) );
diff --git a/includes/specials/SpecialWantedfiles.php b/includes/specials/SpecialWantedfiles.php
index 4957531e..189b9d8b 100644
--- a/includes/specials/SpecialWantedfiles.php
+++ b/includes/specials/SpecialWantedfiles.php
@@ -13,20 +13,12 @@
* @copyright Copyright © 2008, Soxred93
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
-class WantedFilesPage extends QueryPage {
+class WantedFilesPage extends WantedQueryPage {
function getName() {
return 'Wantedfiles';
}
- function isExpensive() {
- return true;
- }
-
- function isSyndicated() {
- return false;
- }
-
function getSQL() {
$dbr = wfGetDB( DB_SLAVE );
list( $imagelinks, $page ) = $dbr->tableNamesN( 'imagelinks', 'page' );
@@ -44,55 +36,6 @@ class WantedFilesPage extends QueryPage {
GROUP BY il_to
";
}
-
- function sortDescending() { return true; }
-
- /**
- * Fetch user page links and cache their existence
- */
- function preprocessResults( $db, $res ) {
- $batch = new LinkBatch;
- while ( $row = $db->fetchObject( $res ) )
- $batch->add( $row->namespace, $row->title );
- $batch->execute();
-
- // Back to start for display
- if ( $db->numRows( $res ) > 0 )
- // If there are no rows we get an error seeking.
- $db->dataSeek( $res, 0 );
- }
-
- function formatResult( $skin, $result ) {
- global $wgLang, $wgContLang;
-
- $nt = Title::makeTitle( $result->namespace, $result->title );
- $text = $wgContLang->convert( $nt->getText() );
-
- $plink = $this->isCached() ?
- $skin->makeLinkObj( $nt, htmlspecialchars( $text ) ) :
- $skin->makeBrokenLinkObj( $nt, htmlspecialchars( $text ) );
-
- return wfSpecialList(
- $plink,
- $this->makeWlhLink( $nt, $skin, $result )
- );
- }
-
- /**
- * Make a "what links here" link for a given title
- *
- * @param Title $title Title to make the link for
- * @param Skin $skin Skin to use
- * @param object $result Result row
- * @return string
- */
- private function makeWlhLink( $title, $skin, $result ) {
- global $wgLang;
- $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
- $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
- $wgLang->formatNum( $result->value ) );
- return $skin->link( $wlh, $label, array(), array( 'target' => $title->getPrefixedText() ) );
- }
}
/**
diff --git a/includes/specials/SpecialWantedpages.php b/includes/specials/SpecialWantedpages.php
index 7307b335..eeca87ab 100644
--- a/includes/specials/SpecialWantedpages.php
+++ b/includes/specials/SpecialWantedpages.php
@@ -8,7 +8,7 @@
* implements Special:Wantedpages
* @ingroup SpecialPage
*/
-class WantedPagesPage extends QueryPage {
+class WantedPagesPage extends WantedQueryPage {
var $nlinks;
function WantedPagesPage( $inc = false, $nlinks = true ) {
@@ -20,11 +20,6 @@ class WantedPagesPage extends QueryPage {
return 'Wantedpages';
}
- function isExpensive() {
- return true;
- }
- function isSyndicated() { return false; }
-
function getSQL() {
global $wgWantedPagesThreshold;
$count = $wgWantedPagesThreshold - 1;
@@ -32,83 +27,23 @@ class WantedPagesPage extends QueryPage {
$pagelinks = $dbr->tableName( 'pagelinks' );
$page = $dbr->tableName( 'page' );
$sql = "SELECT 'Wantedpages' AS type,
- pl_namespace AS namespace,
- pl_title AS title,
- COUNT(*) AS value
- FROM $pagelinks
- LEFT JOIN $page AS pg1
- ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title
- LEFT JOIN $page AS pg2
- ON pl_from = pg2.page_id
- WHERE pg1.page_namespace IS NULL
- AND pl_namespace NOT IN ( 2, 3 )
- AND pg2.page_namespace != 8
- GROUP BY pl_namespace, pl_title
- HAVING COUNT(*) > $count";
+ pl_namespace AS namespace,
+ pl_title AS title,
+ COUNT(*) AS value
+ FROM $pagelinks
+ LEFT JOIN $page AS pg1
+ ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title
+ LEFT JOIN $page AS pg2
+ ON pl_from = pg2.page_id
+ WHERE pg1.page_namespace IS NULL
+ AND pl_namespace NOT IN ( " . NS_USER . ", ". NS_USER_TALK . ")
+ AND pg2.page_namespace != " . NS_MEDIAWIKI . "
+ GROUP BY pl_namespace, pl_title
+ HAVING COUNT(*) > $count";
wfRunHooks( 'WantedPages::getSQL', array( &$this, &$sql ) );
return $sql;
}
-
- /**
- * Cache page existence for performance
- */
- function preprocessResults( $db, $res ) {
- $batch = new LinkBatch;
- while ( $row = $db->fetchObject( $res ) )
- $batch->add( $row->namespace, $row->title );
- $batch->execute();
-
- // Back to start for display
- if ( $db->numRows( $res ) > 0 )
- // If there are no rows we get an error seeking.
- $db->dataSeek( $res, 0 );
- }
-
- /**
- * Format an individual result
- *
- * @param $skin Skin to use for UI elements
- * @param $result Result row
- * @return string
- */
- public function formatResult( $skin, $result ) {
- $title = Title::makeTitleSafe( $result->namespace, $result->title );
- if( $title instanceof Title ) {
- if( $this->isCached() ) {
- $pageLink = $title->exists()
- ? '<s>' . $skin->makeLinkObj( $title ) . '</s>'
- : $skin->makeBrokenLinkObj( $title );
- } else {
- $pageLink = $skin->makeBrokenLinkObj( $title );
- }
- return wfSpecialList( $pageLink, $this->makeWlhLink( $title, $skin, $result ) );
- } else {
- $tsafe = htmlspecialchars( $result->title );
- return wfMsg( 'wantedpages-badtitle', $tsafe );
- }
- }
-
- /**
- * Make a "what links here" link for a specified result if required
- *
- * @param $title Title to make the link for
- * @param $skin Skin to use
- * @param $result Result row
- * @return string
- */
- private function makeWlhLink( $title, $skin, $result ) {
- global $wgLang;
- if( $this->nlinks ) {
- $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
- $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
- $wgLang->formatNum( $result->value ) );
- return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $title->getPrefixedUrl() );
- } else {
- return null;
- }
- }
-
}
/**
diff --git a/includes/specials/SpecialWantedtemplates.php b/includes/specials/SpecialWantedtemplates.php
index 7dd9a262..329d7a3f 100644
--- a/includes/specials/SpecialWantedtemplates.php
+++ b/includes/specials/SpecialWantedtemplates.php
@@ -15,20 +15,12 @@
* @copyright Copyright © 2008, Danny B.
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
-class WantedTemplatesPage extends QueryPage {
+class WantedTemplatesPage extends WantedQueryPage {
function getName() {
return 'Wantedtemplates';
}
- function isExpensive() {
- return true;
- }
-
- function isSyndicated() {
- return false;
- }
-
function getSQL() {
$dbr = wfGetDB( DB_SLAVE );
list( $templatelinks, $page ) = $dbr->tableNamesN( 'templatelinks', 'page' );
@@ -45,55 +37,6 @@ class WantedTemplatesPage extends QueryPage {
GROUP BY tl_namespace, tl_title
";
}
-
- function sortDescending() { return true; }
-
- /**
- * Fetch user page links and cache their existence
- */
- function preprocessResults( $db, $res ) {
- $batch = new LinkBatch;
- while ( $row = $db->fetchObject( $res ) )
- $batch->add( $row->namespace, $row->title );
- $batch->execute();
-
- // Back to start for display
- if ( $db->numRows( $res ) > 0 )
- // If there are no rows we get an error seeking.
- $db->dataSeek( $res, 0 );
- }
-
- function formatResult( $skin, $result ) {
- global $wgLang, $wgContLang;
-
- $nt = Title::makeTitle( $result->namespace, $result->title );
- $text = $wgContLang->convert( $nt->getText() );
-
- $plink = $this->isCached() ?
- $skin->makeLinkObj( $nt, htmlspecialchars( $text ) ) :
- $skin->makeBrokenLinkObj( $nt, htmlspecialchars( $text ) );
-
- return wfSpecialList(
- $plink,
- $this->makeWlhLink( $nt, $skin, $result )
- );
- }
-
- /**
- * Make a "what links here" link for a given title
- *
- * @param Title $title Title to make the link for
- * @param Skin $skin Skin to use
- * @param object $result Result row
- * @return string
- */
- private function makeWlhLink( $title, $skin, $result ) {
- global $wgLang;
- $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
- $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
- $wgLang->formatNum( $result->value ) );
- return $skin->link( $wlh, $label, array(), array( 'target' => $title->getPrefixedText() ) );
- }
}
/**
diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php
index b14577b5..c32af2ae 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -12,7 +12,25 @@
function wfSpecialWatchlist( $par ) {
global $wgUser, $wgOut, $wgLang, $wgRequest;
global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
- global $wgEnotifWatchlist;
+
+ // Add feed links
+ $wlToken = $wgUser->getOption( 'watchlisttoken' );
+ if (!$wlToken) {
+ $wlToken = sha1( mt_rand() . microtime( true ) );
+ $wgUser->setOption( 'watchlisttoken', $wlToken );
+ $wgUser->saveSettings();
+ }
+
+ global $wgServer, $wgScriptPath, $wgFeedClasses;
+ $apiParams = array( 'action' => 'feedwatchlist', 'allrev' => 'allrev',
+ 'wlowner' => $wgUser->getName(), 'wltoken' => $wlToken );
+ $feedTemplate = wfScript('api').'?';
+
+ foreach( $wgFeedClasses as $format => $class ) {
+ $theseParams = $apiParams + array( 'feedformat' => $format );
+ $url = $feedTemplate . wfArrayToCGI( $theseParams );
+ $wgOut->addFeedLink( $format, $url );
+ }
$skin = $wgUser->getSkin();
$specialTitle = SpecialPage::getTitleFor( 'Watchlist' );
@@ -21,8 +39,12 @@ function wfSpecialWatchlist( $par ) {
# Anons don't get a watchlist
if( $wgUser->isAnon() ) {
$wgOut->setPageTitle( wfMsg( 'watchnologin' ) );
- $llink = $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Userlogin' ),
- wfMsgHtml( 'loginreqlink' ), 'returnto=' . $specialTitle->getPrefixedUrl() );
+ $llink = $skin->linkKnown(
+ SpecialPage::getTitleFor( 'Userlogin' ),
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $specialTitle->getPrefixedText() )
+ );
$wgOut->addHTML( wfMsgWikiHtml( 'watchlistanontext', $llink ) );
return;
}
@@ -248,42 +270,17 @@ function wfSpecialWatchlist( $par ) {
$cutofflinks = "\n" . wlCutoffLinks( $days, 'Watchlist', $nondefaults ) . "<br />\n";
- # Spit out some control panel links
$thisTitle = SpecialPage::getTitleFor( 'Watchlist' );
- $skin = $wgUser->getSkin();
- $showLinktext = wfMsgHtml( 'show' );
- $hideLinktext = wfMsgHtml( 'hide' );
- # Hide/show minor edits
- $label = $hideMinor ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hideMinor' => 1 - (int)$hideMinor ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhideminor', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
-
- # Hide/show bot edits
- $label = $hideBots ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hideBots' => 1 - (int)$hideBots ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhidebots', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
-
- # Hide/show anonymous edits
- $label = $hideAnons ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hideAnons' => 1 - (int)$hideAnons ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhideanons', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
-
- # Hide/show logged in edits
- $label = $hideLiu ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hideLiu' => 1 - (int)$hideLiu ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhideliu', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
-
- # Hide/show own edits
- $label = $hideOwn ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hideOwn' => 1 - (int)$hideOwn ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhidemine', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
-
- # Hide/show patrolled edits
+ # Spit out some control panel links
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhideminor', 'hideMinor', $hideMinor );
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhidebots', 'hideBots', $hideBots );
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhideanons', 'hideAnons', $hideAnons );
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhideliu', 'hideLiu', $hideLiu );
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhidemine', 'hideOwn', $hideOwn );
+
if( $wgUser->useRCPatrol() ) {
- $label = $hidePatrolled ? $showLinktext : $hideLinktext;
- $linkBits = wfArrayToCGI( array( 'hidePatrolled' => 1 - (int)$hidePatrolled ), $nondefaults );
- $links[] = wfMsgHtml( 'rcshowhidepatr', $skin->makeKnownLinkObj( $thisTitle, $label, $linkBits ) );
+ $links[] = wlShowHideLink( $nondefaults, 'rcshowhidepatr', 'hidePatrolled', $hidePatrolled );
}
# Namespace filter and put the whole form together.
@@ -311,6 +308,8 @@ function wfSpecialWatchlist( $par ) {
$form .= Xml::closeElement( 'fieldset' );
$wgOut->addHTML( $form );
+ $wgOut->addHTML( ChangesList::flagLegend() );
+
# If there's nothing to show, stop here
if( $numRows == 0 ) {
$wgOut->addWikiMsg( 'watchnochange' );
@@ -334,7 +333,8 @@ function wfSpecialWatchlist( $par ) {
$dbr->dataSeek( $res, 0 );
$list = ChangesList::newFromUser( $wgUser );
-
+ $list->setWatchlistDivs();
+
$s = $list->beginRecentChangesList();
$counter = 1;
while ( $obj = $dbr->fetchObject( $res ) ) {
@@ -368,23 +368,53 @@ function wfSpecialWatchlist( $par ) {
$wgOut->addHTML( $s );
}
+function wlShowHideLink( $options, $message, $name, $value ) {
+ global $wgUser;
+
+ $showLinktext = wfMsgHtml( 'show' );
+ $hideLinktext = wfMsgHtml( 'hide' );
+ $title = SpecialPage::getTitleFor( 'Watchlist' );
+ $skin = $wgUser->getSkin();
+
+ $label = $value ? $showLinktext : $hideLinktext;
+ $options[$name] = 1 - (int) $value;
+
+ return wfMsgHtml( $message, $skin->linkKnown( $title, $label, array(), $options ) );
+}
+
+
function wlHoursLink( $h, $page, $options = array() ) {
global $wgUser, $wgLang, $wgContLang;
+
$sk = $wgUser->getSkin();
- $s = $sk->makeKnownLink(
- $wgContLang->specialPage( $page ),
- $wgLang->formatNum( $h ),
- wfArrayToCGI( array('days' => ($h / 24.0)), $options ) );
+ $title = Title::newFromText( $wgContLang->specialPage( $page ) );
+ $options['days'] = ($h / 24.0);
+
+ $s = $sk->linkKnown(
+ $title,
+ $wgLang->formatNum( $h ),
+ array(),
+ $options
+ );
+
return $s;
}
function wlDaysLink( $d, $page, $options = array() ) {
global $wgUser, $wgLang, $wgContLang;
+
$sk = $wgUser->getSkin();
- $s = $sk->makeKnownLink(
- $wgContLang->specialPage( $page ),
- ($d ? $wgLang->formatNum( $d ) : wfMsgHtml( 'watchlistall2' ) ),
- wfArrayToCGI( array('days' => $d), $options ) );
+ $title = Title::newFromText( $wgContLang->specialPage( $page ) );
+ $options['days'] = $d;
+ $message = ($d ? $wgLang->formatNum( $d ) : wfMsgHtml( 'watchlistall2' ) );
+
+ $s = $sk->linkKnown(
+ $title,
+ $message,
+ array(),
+ $options
+ );
+
return $s;
}
diff --git a/includes/specials/SpecialWhatlinkshere.php b/includes/specials/SpecialWhatlinkshere.php
index 3f485bd8..b63c0eee 100644
--- a/includes/specials/SpecialWhatlinkshere.php
+++ b/includes/specials/SpecialWhatlinkshere.php
@@ -7,40 +7,29 @@
*/
/**
- * Entry point
- * @param $par String: An article name ??
- */
-function wfSpecialWhatlinkshere($par = NULL) {
- global $wgRequest;
- $page = new WhatLinksHerePage( $wgRequest, $par );
- $page->execute();
-}
-
-/**
* implements Special:Whatlinkshere
* @ingroup SpecialPage
*/
-class WhatLinksHerePage {
- // Stored data
- protected $par;
+class SpecialWhatLinksHere extends SpecialPage {
// Stored objects
protected $opts, $target, $selfTitle;
// Stored globals
- protected $skin, $request;
+ protected $skin;
protected $limits = array( 20, 50, 100, 250, 500 );
- function WhatLinksHerePage( $request, $par = null ) {
+ public function __construct() {
+ parent::__construct( 'Whatlinkshere' );
global $wgUser;
- $this->request = $request;
$this->skin = $wgUser->getSkin();
- $this->par = $par;
}
- function execute() {
- global $wgOut;
+ function execute( $par ) {
+ global $wgOut, $wgRequest;
+
+ $this->setHeaders();
$opts = new FormOptions();
@@ -54,12 +43,12 @@ class WhatLinksHerePage {
$opts->add( 'hidelinks', false );
$opts->add( 'hideimages', false );
- $opts->fetchValuesFromRequest( $this->request );
+ $opts->fetchValuesFromRequest( $wgRequest );
$opts->validateIntBounds( 'limit', 0, 5000 );
// Give precedence to subpage syntax
- if ( isset($this->par) ) {
- $opts->setValue( 'target', $this->par );
+ if ( isset($par) ) {
+ $opts->setValue( 'target', $par );
}
// Bind to member variable
@@ -271,8 +260,18 @@ class WhatLinksHerePage {
}
}
- $suppressRedirect = $row->page_is_redirect ? 'redirect=no' : '';
- $link = $this->skin->makeKnownLinkObj( $nt, '', $suppressRedirect );
+ if( $row->page_is_redirect ) {
+ $query = array( 'redirect' => 'no' );
+ } else {
+ $query = array();
+ }
+
+ $link = $this->skin->linkKnown(
+ $nt,
+ null,
+ array(),
+ $query
+ );
// Display properties (redirect or template)
$propsText = '';
@@ -306,12 +305,21 @@ class WhatLinksHerePage {
if ( $title === null )
$title = SpecialPage::getTitleFor( 'Whatlinkshere' );
- $targetText = $target->getPrefixedUrl();
- return $this->skin->makeKnownLinkObj( $title, $text, 'target=' . $targetText );
+ return $this->skin->linkKnown(
+ $title,
+ $text,
+ array(),
+ array( 'target' => $target->getPrefixedText() )
+ );
}
function makeSelfLink( $text, $query ) {
- return $this->skin->makeKnownLinkObj( $this->selfTitle, $text, $query );
+ return $this->skin->linkKnown(
+ $this->selfTitle,
+ $text,
+ array(),
+ $query
+ );
}
function getPrevNext( $prevId, $nextId ) {
@@ -326,18 +334,18 @@ class WhatLinksHerePage {
if ( 0 != $prevId ) {
$overrides = array( 'from' => $this->opts->getValue( 'back' ) );
- $prev = $this->makeSelfLink( $prev, wfArrayToCGI( $overrides, $changed ) );
+ $prev = $this->makeSelfLink( $prev, array_merge( $changed, $overrides ) );
}
if ( 0 != $nextId ) {
$overrides = array( 'from' => $nextId, 'back' => $prevId );
- $next = $this->makeSelfLink( $next, wfArrayToCGI( $overrides, $changed ) );
+ $next = $this->makeSelfLink( $next, array_merge( $changed, $overrides ) );
}
$limitLinks = array();
foreach ( $this->limits as $limit ) {
$prettyLimit = $wgLang->formatNum( $limit );
$overrides = array( 'limit' => $limit );
- $limitLinks[] = $this->makeSelfLink( $prettyLimit, wfArrayToCGI( $overrides, $changed ) );
+ $limitLinks[] = $this->makeSelfLink( $prettyLimit, array_merge( $changed, $overrides ) );
}
$nums = $wgLang->pipeList( $limitLinks );
@@ -346,7 +354,7 @@ class WhatLinksHerePage {
}
function whatlinkshereForm() {
- global $wgScript, $wgTitle;
+ global $wgScript;
// We get nicer value from the title object
$this->opts->consumeValue( 'target' );
@@ -360,7 +368,7 @@ class WhatLinksHerePage {
$f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
# Values that should not be forgotten
- $f .= Xml::hidden( 'title', $wgTitle->getPrefixedText() );
+ $f .= Xml::hidden( 'title', SpecialPage::getTitleFor( 'Whatlinkshere' )->getPrefixedText() );
foreach ( $this->opts->getUnconsumedValues() as $name => $value ) {
$f .= Xml::hidden( $name, $value );
}
@@ -388,6 +396,11 @@ class WhatLinksHerePage {
return $f;
}
+ /**
+ * Create filter panel
+ *
+ * @return string HTML fieldset and filter panel with the show/hide links
+ */
function getFilterPanel() {
global $wgLang;
$show = wfMsgHtml( 'show' );
@@ -400,11 +413,14 @@ class WhatLinksHerePage {
$types = array( 'hidetrans', 'hidelinks', 'hideredirs' );
if( $this->target->getNamespace() == NS_FILE )
$types[] = 'hideimages';
+
+ // Combined message keys: 'whatlinkshere-hideredirs', 'whatlinkshere-hidetrans', 'whatlinkshere-hidelinks', 'whatlinkshere-hideimages'
+ // To be sure they will be find by grep
foreach( $types as $type ) {
$chosen = $this->opts->getValue( $type );
- $msg = wfMsgHtml( "whatlinkshere-{$type}", $chosen ? $show : $hide );
+ $msg = $chosen ? $show : $hide;
$overrides = array( $type => !$chosen );
- $links[] = $this->makeSelfLink( $msg, wfArrayToCGI( $overrides, $changed ) );
+ $links[] = wfMsgHtml( "whatlinkshere-{$type}", $this->makeSelfLink( $msg, array_merge( $changed, $overrides ) ) );
}
return Xml::fieldset( wfMsg( 'whatlinkshere-filters' ), $wgLang->pipeList( $links ) );
}
diff --git a/includes/specials/SpecialWithoutinterwiki.php b/includes/specials/SpecialWithoutinterwiki.php
index 2092e43b..a5d60d2f 100644
--- a/includes/specials/SpecialWithoutinterwiki.php
+++ b/includes/specials/SpecialWithoutinterwiki.php
@@ -53,7 +53,7 @@ class WithoutInterwikiPage extends PageQueryPage {
function getSQL() {
$dbr = wfGetDB( DB_SLAVE );
list( $page, $langlinks ) = $dbr->tableNamesN( 'page', 'langlinks' );
- $prefix = $this->prefix ? "AND page_title LIKE '" . $dbr->escapeLike( $this->prefix ) . "%'" : '';
+ $prefix = $this->prefix ? 'AND page_title' . $dbr->buildLike( $this->prefix , $dbr->anyString() ) : '';
return
"SELECT 'Withoutinterwiki' AS type,
page_namespace AS namespace,
@@ -75,13 +75,10 @@ class WithoutInterwikiPage extends PageQueryPage {
}
function wfSpecialWithoutinterwiki() {
- global $wgRequest, $wgContLang, $wgCapitalLinks;
+ global $wgRequest, $wgContLang;
list( $limit, $offset ) = wfCheckLimits();
- if( $wgCapitalLinks ) {
- $prefix = $wgContLang->ucfirst( $wgRequest->getVal( 'prefix' ) );
- } else {
- $prefix = $wgRequest->getVal( 'prefix' );
- }
+ // Only searching the mainspace anyway
+ $prefix = Title::capitalize( $wgRequest->getVal( 'prefix' ), NS_MAIN );
$wip = new WithoutInterwikiPage();
$wip->setPrefix( $prefix );
$wip->doQuery( $offset, $limit );
diff --git a/includes/templates/NoLocalSettings.php b/includes/templates/NoLocalSettings.php
index 42682d60..45b758a9 100644
--- a/includes/templates/NoLocalSettings.php
+++ b/includes/templates/NoLocalSettings.php
@@ -35,11 +35,11 @@ foreach( $topdirs as $dir ){
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
+<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
<head>
<title>MediaWiki <?php echo htmlspecialchars( $wgVersion ) ?></title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
- <style type='text/css' media='screen, projection'>
+ <style type='text/css' media='screen'>
html, body {
color: #000;
background-color: #fff;
diff --git a/includes/templates/PHP4.php b/includes/templates/PHP4.php
index 058351a0..b071ebd5 100644
--- a/includes/templates/PHP4.php
+++ b/includes/templates/PHP4.php
@@ -27,11 +27,11 @@ if ( preg_match( '!^(.*)/config/[^/]*.php$!', $scriptUrl, $m ) ) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
+<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
<head>
<title>MediaWiki <?php echo htmlspecialchars( $wgVersion ); ?></title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
- <style type='text/css' media='screen, projection'>
+ <style type='text/css' media='screen'>
html, body {
color: #000;
background-color: #fff;
diff --git a/includes/templates/Userlogin.php b/includes/templates/Userlogin.php
index 2ca9c3c4..60f33767 100644
--- a/includes/templates/Userlogin.php
+++ b/includes/templates/Userlogin.php
@@ -16,7 +16,7 @@ class UserloginTemplate extends QuickTemplate {
?>
<div class="<?php $this->text('messagetype') ?>box">
<?php if ( $this->data['messagetype'] == 'error' ) { ?>
- <h2><?php $this->msg('loginerror') ?></h2>
+ <strong><?php $this->msg( 'loginerror' )?></strong><br />
<?php } ?>
<?php $this->html('message') ?>
</div>
@@ -35,17 +35,30 @@ class UserloginTemplate extends QuickTemplate {
<tr>
<td class="mw-label"><label for='wpName1'><?php $this->msg('yourname') ?></label></td>
<td class="mw-input">
- <input type='text' class='loginText' name="wpName" id="wpName1"
- tabindex="1"
- value="<?php $this->text('name') ?>" size='20' />
+ <?php
+ echo Html::input( 'wpName', $this->data['name'], 'text', array(
+ 'class' => 'loginText',
+ 'id' => 'wpName1',
+ 'tabindex' => '1',
+ 'size' => '20',
+ 'required'
+ # Can't do + array( 'autofocus' ) because + for arrays in PHP
+ # only works right for associative arrays! Thanks, PHP.
+ ) + ( $this->data['name'] ? array() : array( 'autofocus' => '' ) ) ); ?>
+
</td>
</tr>
<tr>
<td class="mw-label"><label for='wpPassword1'><?php $this->msg('yourpassword') ?></label></td>
<td class="mw-input">
- <input type='password' class='loginPassword' name="wpPassword" id="wpPassword1"
- tabindex="2"
- value="" size='20' />
+ <?php
+ echo Html::input( 'wpPassword', null, 'password', array(
+ 'class' => 'loginPassword',
+ 'id' => 'wpPassword1',
+ 'tabindex' => '2',
+ 'size' => '20'
+ ) + ( $this->data['name'] ? array( 'autofocus' ) : array() ) ); ?>
+
</td>
</tr>
<?php if( $this->data['usedomain'] ) {
@@ -68,21 +81,32 @@ class UserloginTemplate extends QuickTemplate {
<tr>
<td></td>
<td class="mw-input">
- <input type='checkbox' name="wpRemember"
- tabindex="4"
- value="1" id="wpRemember"
- <?php if( $this->data['remember'] ) { ?>checked="checked"<?php } ?>
- /> <label for="wpRemember"><?php $this->msg('remembermypassword') ?></label>
+ <?php
+ echo Html::input( 'wpRemember', '1', 'checkbox', array(
+ 'tabindex' => '4',
+ 'id' => 'wpRemember'
+ ) + ( $this->data['remember'] ? array( 'checked' ) : array() ) ); ?>
+
+ <label for="wpRemember"><?php $this->msg('remembermypassword') ?></label>
</td>
</tr>
- <?php } ?>
+<?php } ?>
<tr>
<td></td>
<td class="mw-submit">
- <input type='submit' name="wpLoginattempt" id="wpLoginattempt" tabindex="5" value="<?php $this->msg('login') ?>" />&nbsp;<?php if( $this->data['useemail'] && $this->data['canreset']) { ?><input type='submit' name="wpMailmypassword" id="wpMailmypassword"
- tabindex="6"
- value="<?php $this->msg('mailmypassword') ?>" />
- <?php } ?>
+ <?php
+ echo Html::input( 'wpLoginAttempt', wfMsg( 'login' ), 'submit', array(
+ 'id' => 'wpLoginAttempt',
+ 'tabindex' => '5'
+ ) );
+ if ( $this->data['useemail'] && $this->data['canreset'] ) {
+ echo '&nbsp;';
+ echo Html::input( 'wpMailmypassword', wfMsg( 'mailmypassword' ), 'submit', array(
+ 'id' => 'wpMailmypassword',
+ 'tabindex' => '6'
+ ) );
+ } ?>
+
</td>
</tr>
</table>
@@ -100,12 +124,13 @@ class UserloginTemplate extends QuickTemplate {
* @ingroup Templates
*/
class UsercreateTemplate extends QuickTemplate {
- function addInputItem( $name, $value, $type, $msg ) {
+ function addInputItem( $name, $value, $type, $msg, $helptext = false ) {
$this->data['extraInput'][] = array(
'name' => $name,
'value' => $value,
'type' => $type,
'msg' => $msg,
+ 'helptext' => $helptext,
);
}
@@ -114,7 +139,7 @@ class UsercreateTemplate extends QuickTemplate {
?>
<div class="<?php $this->text('messagetype') ?>box">
<?php if ( $this->data['messagetype'] == 'error' ) { ?>
- <h2><?php $this->msg('loginerror') ?></h2>
+ <strong><?php $this->msg( 'loginerror' )?></strong><br />
<?php } ?>
<?php $this->html('message') ?>
</div>
@@ -131,17 +156,27 @@ class UsercreateTemplate extends QuickTemplate {
<tr>
<td class="mw-label"><label for='wpName2'><?php $this->msg('yourname') ?></label></td>
<td class="mw-input">
- <input type='text' class='loginText' name="wpName" id="wpName2"
- tabindex="1"
- value="<?php $this->text('name') ?>" size='20' />
+ <?php
+ echo Html::input( 'wpName', $this->data['name'], 'text', array(
+ 'class' => 'loginText',
+ 'id' => 'wpName2',
+ 'tabindex' => '1',
+ 'size' => '20',
+ 'required',
+ 'autofocus'
+ ) ); ?>
</td>
</tr>
<tr>
<td class="mw-label"><label for='wpPassword2'><?php $this->msg('yourpassword') ?></label></td>
<td class="mw-input">
- <input type='password' class='loginPassword' name="wpPassword" id="wpPassword2"
- tabindex="2"
- value="" size='20' />
+<?php
+ echo Html::input( 'wpPassword', null, 'password', array(
+ 'class' => 'loginPassword',
+ 'id' => 'wpPassword2',
+ 'tabindex' => '2',
+ 'size' => '20'
+ ) + User::passwordChangeInputAttribs() ); ?>
</td>
</tr>
<?php if( $this->data['usedomain'] ) {
@@ -163,19 +198,26 @@ class UsercreateTemplate extends QuickTemplate {
<tr>
<td class="mw-label"><label for='wpRetype'><?php $this->msg('yourpasswordagain') ?></label></td>
<td class="mw-input">
- <input type='password' class='loginPassword' name="wpRetype" id="wpRetype"
- tabindex="4"
- value=""
- size='20' />
+ <?php
+ echo Html::input( 'wpRetype', null, 'password', array(
+ 'class' => 'loginPassword',
+ 'id' => 'wpRetype',
+ 'tabindex' => '4',
+ 'size' => '20'
+ ) + User::passwordChangeInputAttribs() ); ?>
</td>
</tr>
<tr>
<?php if( $this->data['useemail'] ) { ?>
<td class="mw-label"><label for='wpEmail'><?php $this->msg('youremail') ?></label></td>
<td class="mw-input">
- <input type='text' class='loginText' name="wpEmail" id="wpEmail"
- tabindex="5"
- value="<?php $this->text('email') ?>" size='20' />
+ <?php
+ echo Html::input( 'wpEmail', $this->data['email'], 'email', array(
+ 'class' => 'loginText',
+ 'id' => 'wpEmail',
+ 'tabindex' => '5',
+ 'size' => '20'
+ ) ); ?>
<div class="prefsectiontip">
<?php if( $this->data['emailrequired'] ) {
$this->msgWiki('prefs-help-email-required');
@@ -245,7 +287,12 @@ class UsercreateTemplate extends QuickTemplate {
<label for="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"><?php
$this->msgHtml( $inputItem['msg'] ) ?></label><?php
}
+ if( $inputItem['helptext'] !== false ) {
?>
+ <div class="prefsectiontip">
+ <?php $this->msgWiki( $inputItem['helptext'] ); ?>
+ </div>
+ <?php } ?>
</td>
</tr>
<?php
diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php
new file mode 100644
index 00000000..5d955b36
--- /dev/null
+++ b/includes/upload/UploadBase.php
@@ -0,0 +1,1091 @@
+<?php
+/**
+ * @file
+ * @ingroup upload
+ *
+ * UploadBase and subclasses are the backend of MediaWiki's file uploads.
+ * The frontends are formed by ApiUpload and SpecialUpload.
+ *
+ * See also includes/docs/upload.txt
+ *
+ * @author Brion Vibber
+ * @author Bryan Tong Minh
+ * @author Michael Dale
+ */
+
+abstract class UploadBase {
+ protected $mTempPath;
+ protected $mDesiredDestName, $mDestName, $mRemoveTempFile, $mSourceType;
+ protected $mTitle = false, $mTitleError = 0;
+ protected $mFilteredName, $mFinalExtension;
+ protected $mLocalFile;
+
+ const SUCCESS = 0;
+ const OK = 0;
+ const EMPTY_FILE = 3;
+ const MIN_LENGTH_PARTNAME = 4;
+ const ILLEGAL_FILENAME = 5;
+ const OVERWRITE_EXISTING_FILE = 7;
+ const FILETYPE_MISSING = 8;
+ const FILETYPE_BADTYPE = 9;
+ const VERIFICATION_ERROR = 10;
+ const UPLOAD_VERIFICATION_ERROR = 11;
+ const HOOK_ABORTED = 11;
+
+ const SESSION_VERSION = 2;
+
+ /**
+ * Returns true if uploads are enabled.
+ * Can be override by subclasses.
+ */
+ public static function isEnabled() {
+ global $wgEnableUploads;
+ if ( !$wgEnableUploads ) {
+ return false;
+ }
+
+ # Check php's file_uploads setting
+ if( !wfIniGetBool( 'file_uploads' ) ) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Returns true if the user can use this upload module or else a string
+ * identifying the missing permission.
+ * Can be overriden by subclasses.
+ */
+ public static function isAllowed( $user ) {
+ if( !$user->isAllowed( 'upload' ) ) {
+ return 'upload';
+ }
+ return true;
+ }
+
+ // Upload handlers. Should probably just be a global.
+ static $uploadHandlers = array( 'Stash', 'File', 'Url' );
+
+ /**
+ * Create a form of UploadBase depending on wpSourceType and initializes it
+ */
+ public static function createFromRequest( &$request, $type = null ) {
+ $type = $type ? $type : $request->getVal( 'wpSourceType', 'File' );
+
+ if( !$type ) {
+ return null;
+ }
+
+ // Get the upload class
+ $type = ucfirst( $type );
+
+ // Give hooks the chance to handle this request
+ $className = null;
+ wfRunHooks( 'UploadCreateFromRequest', array( $type, &$className ) );
+ if ( is_null( $className ) ) {
+ $className = 'UploadFrom' . $type;
+ wfDebug( __METHOD__ . ": class name: $className\n" );
+ if( !in_array( $type, self::$uploadHandlers ) ) {
+ return null;
+ }
+ }
+
+ // Check whether this upload class is enabled
+ if( !call_user_func( array( $className, 'isEnabled' ) ) ) {
+ return null;
+ }
+
+ // Check whether the request is valid
+ if( !call_user_func( array( $className, 'isValidRequest' ), $request ) ) {
+ return null;
+ }
+
+ $handler = new $className;
+
+ $handler->initializeFromRequest( $request );
+ return $handler;
+ }
+
+ /**
+ * Check whether a request if valid for this handler
+ */
+ public static function isValidRequest( $request ) {
+ return false;
+ }
+
+ public function __construct() {}
+
+ /**
+ * Initialize the path information
+ * @param $name string the desired destination name
+ * @param $tempPath string the temporary path
+ * @param $fileSize int the file size
+ * @param $removeTempFile bool (false) remove the temporary file?
+ * @return null
+ */
+ public function initializePathInfo( $name, $tempPath, $fileSize, $removeTempFile = false ) {
+ $this->mDesiredDestName = $name;
+ $this->mTempPath = $tempPath;
+ $this->mFileSize = $fileSize;
+ $this->mRemoveTempFile = $removeTempFile;
+ }
+
+ /**
+ * Initialize from a WebRequest. Override this in a subclass.
+ */
+ public abstract function initializeFromRequest( &$request );
+
+ /**
+ * Fetch the file. Usually a no-op
+ */
+ public function fetchFile() {
+ return Status::newGood();
+ }
+
+ /**
+ * Return the file size
+ */
+ public function isEmptyFile() {
+ return empty( $this->mFileSize );
+ }
+
+ /**
+ * @param string $srcPath the source path
+ * @returns the real path if it was a virtual URL
+ */
+ function getRealPath( $srcPath ) {
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ if ( $repo->isVirtualUrl( $srcPath ) ) {
+ return $repo->resolveVirtualUrl( $srcPath );
+ }
+ return $srcPath;
+ }
+
+ /**
+ * Verify whether the upload is sane.
+ * Returns self::OK or else an array with error information
+ */
+ public function verifyUpload() {
+ /**
+ * If there was no filename or a zero size given, give up quick.
+ */
+ if( $this->isEmptyFile() ) {
+ return array( 'status' => self::EMPTY_FILE );
+ }
+
+ /**
+ * Look at the contents of the file; if we can recognize the
+ * type but it's corrupt or data of the wrong type, we should
+ * probably not accept it.
+ */
+ $verification = $this->verifyFile();
+ if( $verification !== true ) {
+ if( !is_array( $verification ) ) {
+ $verification = array( $verification );
+ }
+ return array(
+ 'status' => self::VERIFICATION_ERROR,
+ 'details' => $verification
+ );
+ }
+
+ $nt = $this->getTitle();
+ if( is_null( $nt ) ) {
+ $result = array( 'status' => $this->mTitleError );
+ if( $this->mTitleError == self::ILLEGAL_FILENAME ) {
+ $result['filtered'] = $this->mFilteredName;
+ }
+ if ( $this->mTitleError == self::FILETYPE_BADTYPE ) {
+ $result['finalExt'] = $this->mFinalExtension;
+ }
+ return $result;
+ }
+ $this->mDestName = $this->getLocalFile()->getName();
+
+ /**
+ * In some cases we may forbid overwriting of existing files.
+ */
+ $overwrite = $this->checkOverwrite();
+ if( $overwrite !== true ) {
+ return array(
+ 'status' => self::OVERWRITE_EXISTING_FILE,
+ 'overwrite' => $overwrite
+ );
+ }
+
+ $error = '';
+ if( !wfRunHooks( 'UploadVerification',
+ array( $this->mDestName, $this->mTempPath, &$error ) ) ) {
+ // This status needs another name...
+ return array( 'status' => self::HOOK_ABORTED, 'error' => $error );
+ }
+
+ return array( 'status' => self::OK );
+ }
+
+ /**
+ * Verifies that it's ok to include the uploaded file
+ *
+ * @return mixed true of the file is verified, a string or array otherwise.
+ */
+ protected function verifyFile() {
+ $this->mFileProps = File::getPropsFromPath( $this->mTempPath, $this->mFinalExtension );
+ $this->checkMacBinary();
+
+ # magically determine mime type
+ $magic = MimeMagic::singleton();
+ $mime = $magic->guessMimeType( $this->mTempPath, false );
+
+ # check mime type, if desired
+ global $wgVerifyMimeType;
+ if ( $wgVerifyMimeType ) {
+ wfDebug ( "\n\nmime: <$mime> extension: <{$this->mFinalExtension}>\n\n");
+ if ( !$this->verifyExtension( $mime, $this->mFinalExtension ) ) {
+ return array( 'filetype-mime-mismatch' );
+ }
+
+ global $wgMimeTypeBlacklist;
+ if ( $this->checkFileExtension( $mime, $wgMimeTypeBlacklist ) ) {
+ return array( 'filetype-badmime', $mime );
+ }
+
+ # Check IE type
+ $fp = fopen( $this->mTempPath, 'rb' );
+ $chunk = fread( $fp, 256 );
+ fclose( $fp );
+ $extMime = $magic->guessTypesForExtension( $this->mFinalExtension );
+ $ieTypes = $magic->getIEMimeTypes( $this->mTempPath, $chunk, $extMime );
+ foreach ( $ieTypes as $ieType ) {
+ if ( $this->checkFileExtension( $ieType, $wgMimeTypeBlacklist ) ) {
+ return array( 'filetype-bad-ie-mime', $ieType );
+ }
+ }
+ }
+
+ # check for htmlish code and javascript
+ if( self::detectScript( $this->mTempPath, $mime, $this->mFinalExtension ) ) {
+ return 'uploadscripted';
+ }
+ if( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
+ if( self::detectScriptInSvg( $this->mTempPath ) ) {
+ return 'uploadscripted';
+ }
+ }
+
+ /**
+ * Scan the uploaded file for viruses
+ */
+ $virus = $this->detectVirus( $this->mTempPath );
+ if ( $virus ) {
+ return array( 'uploadvirus', $virus );
+ }
+ wfDebug( __METHOD__ . ": all clear; passing.\n" );
+ return true;
+ }
+
+ /**
+ * Check whether the user can edit, upload and create the image.
+ *
+ * @param User $user the user to verify the permissions against
+ * @return mixed An array as returned by getUserPermissionsErrors or true
+ * in case the user has proper permissions.
+ */
+ public function verifyPermissions( $user ) {
+ /**
+ * If the image is protected, non-sysop users won't be able
+ * to modify it by uploading a new revision.
+ */
+ $nt = $this->getTitle();
+ if( is_null( $nt ) ) {
+ return true;
+ }
+ $permErrors = $nt->getUserPermissionsErrors( 'edit', $user );
+ $permErrorsUpload = $nt->getUserPermissionsErrors( 'upload', $user );
+ $permErrorsCreate = ( $nt->exists() ? array() : $nt->getUserPermissionsErrors( 'create', $user ) );
+ if( $permErrors || $permErrorsUpload || $permErrorsCreate ) {
+ $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsUpload, $permErrors ) );
+ $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsCreate, $permErrors ) );
+ return $permErrors;
+ }
+ return true;
+ }
+
+ /**
+ * Check for non fatal problems with the file
+ *
+ * @return array Array of warnings
+ */
+ public function checkWarnings() {
+ $warnings = array();
+
+ $localFile = $this->getLocalFile();
+ $filename = $localFile->getName();
+ $n = strrpos( $filename, '.' );
+ $partname = $n ? substr( $filename, 0, $n ) : $filename;
+
+ /**
+ * Check whether the resulting filename is different from the desired one,
+ * but ignore things like ucfirst() and spaces/underscore things
+ */
+ $comparableName = str_replace( ' ', '_', $this->mDesiredDestName );
+ $comparableName = Title::capitalize( $comparableName, NS_FILE );
+
+ if( $this->mDesiredDestName != $filename && $comparableName != $filename ) {
+ $warnings['badfilename'] = $filename;
+ }
+
+ // Check whether the file extension is on the unwanted list
+ global $wgCheckFileExtensions, $wgFileExtensions;
+ if ( $wgCheckFileExtensions ) {
+ if ( !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) ) {
+ $warnings['filetype-unwanted-type'] = $this->mFinalExtension;
+ }
+ }
+
+ global $wgUploadSizeWarning;
+ if ( $wgUploadSizeWarning && ( $this->mFileSize > $wgUploadSizeWarning ) ) {
+ $warnings['large-file'] = $wgUploadSizeWarning;
+ }
+
+ if ( $this->mFileSize == 0 ) {
+ $warnings['emptyfile'] = true;
+ }
+
+ $exists = self::getExistsWarning( $localFile );
+ if( $exists !== false ) {
+ $warnings['exists'] = $exists;
+ }
+
+ // Check dupes against existing files
+ $hash = File::sha1Base36( $this->mTempPath );
+ $dupes = RepoGroup::singleton()->findBySha1( $hash );
+ $title = $this->getTitle();
+ // Remove all matches against self
+ foreach ( $dupes as $key => $dupe ) {
+ if( $title->equals( $dupe->getTitle() ) ) {
+ unset( $dupes[$key] );
+ }
+ }
+ if( $dupes ) {
+ $warnings['duplicate'] = $dupes;
+ }
+
+ // Check dupes against archives
+ $archivedImage = new ArchivedFile( null, 0, "{$hash}.{$this->mFinalExtension}" );
+ if ( $archivedImage->getID() > 0 ) {
+ $warnings['duplicate-archive'] = $archivedImage->getName();
+ }
+
+ return $warnings;
+ }
+
+ /**
+ * Really perform the upload. Stores the file in the local repo, watches
+ * if necessary and runs the UploadComplete hook.
+ *
+ * @return mixed Status indicating the whether the upload succeeded.
+ */
+ public function performUpload( $comment, $pageText, $watch, $user ) {
+ wfDebug( "\n\n\performUpload: sum:" . $comment . ' c: ' . $pageText . ' w:' . $watch );
+ $status = $this->getLocalFile()->upload( $this->mTempPath, $comment, $pageText,
+ File::DELETE_SOURCE, $this->mFileProps, false, $user );
+
+ if( $status->isGood() && $watch ) {
+ $user->addWatch( $this->getLocalFile()->getTitle() );
+ }
+
+ if( $status->isGood() ) {
+ wfRunHooks( 'UploadComplete', array( &$this ) );
+ }
+
+ return $status;
+ }
+
+ /**
+ * Returns the title of the file to be uploaded. Sets mTitleError in case
+ * the name was illegal.
+ *
+ * @return Title The title of the file or null in case the name was illegal
+ */
+ public function getTitle() {
+ if ( $this->mTitle !== false ) {
+ return $this->mTitle;
+ }
+
+ /**
+ * Chop off any directories in the given filename. Then
+ * filter out illegal characters, and try to make a legible name
+ * out of it. We'll strip some silently that Title would die on.
+ */
+ $basename = $this->mDesiredDestName;
+
+ $this->mFilteredName = wfStripIllegalFilenameChars( $basename );
+ /* Normalize to title form before we do any further processing */
+ $nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
+ if( is_null( $nt ) ) {
+ $this->mTitleError = self::ILLEGAL_FILENAME;
+ return $this->mTitle = null;
+ }
+ $this->mFilteredName = $nt->getDBkey();
+
+ /**
+ * We'll want to blacklist against *any* 'extension', and use
+ * only the final one for the whitelist.
+ */
+ list( $partname, $ext ) = $this->splitExtensions( $this->mFilteredName );
+
+ if( count( $ext ) ) {
+ $this->mFinalExtension = trim( $ext[count( $ext ) - 1] );
+ } else {
+ $this->mFinalExtension = '';
+ }
+
+ /* Don't allow users to override the blacklist (check file extension) */
+ global $wgCheckFileExtensions, $wgStrictFileExtensions;
+ global $wgFileExtensions, $wgFileBlacklist;
+ if ( $this->mFinalExtension == '' ) {
+ $this->mTitleError = self::FILETYPE_MISSING;
+ return $this->mTitle = null;
+ } elseif ( $this->checkFileExtensionList( $ext, $wgFileBlacklist ) ||
+ ( $wgCheckFileExtensions && $wgStrictFileExtensions &&
+ !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) ) ) {
+ $this->mTitleError = self::FILETYPE_BADTYPE;
+ return $this->mTitle = null;
+ }
+
+ # If there was more than one "extension", reassemble the base
+ # filename to prevent bogus complaints about length
+ if( count( $ext ) > 1 ) {
+ for( $i = 0; $i < count( $ext ) - 1; $i++ ) {
+ $partname .= '.' . $ext[$i];
+ }
+ }
+
+ if( strlen( $partname ) < 1 ) {
+ $this->mTitleError = self::MIN_LENGTH_PARTNAME;
+ return $this->mTitle = null;
+ }
+
+ $nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
+ if( is_null( $nt ) ) {
+ $this->mTitleError = self::ILLEGAL_FILENAME;
+ return $this->mTitle = null;
+ }
+ return $this->mTitle = $nt;
+ }
+
+ /**
+ * Return the local file and initializes if necessary.
+ */
+ public function getLocalFile() {
+ if( is_null( $this->mLocalFile ) ) {
+ $nt = $this->getTitle();
+ $this->mLocalFile = is_null( $nt ) ? null : wfLocalFile( $nt );
+ }
+ return $this->mLocalFile;
+ }
+
+ /**
+ * Stash a file in a temporary directory for later processing
+ * after the user has confirmed it.
+ *
+ * If the user doesn't explicitly cancel or accept, these files
+ * can accumulate in the temp directory.
+ *
+ * @param string $saveName - the destination filename
+ * @param string $tempSrc - the source temporary file to save
+ * @return string - full path the stashed file, or false on failure
+ */
+ protected function saveTempUploadedFile( $saveName, $tempSrc ) {
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $status = $repo->storeTemp( $saveName, $tempSrc );
+ return $status;
+ }
+
+ /**
+ * Stash a file in a temporary directory for later processing,
+ * and save the necessary descriptive info into the session.
+ * Returns a key value which will be passed through a form
+ * to pick up the path info on a later invocation.
+ *
+ * @return int Session key
+ */
+ public function stashSession() {
+ $status = $this->saveTempUploadedFile( $this->mDestName, $this->mTempPath );
+ if( !$status->isOK() ) {
+ # Couldn't save the file.
+ return false;
+ }
+ if( !isset( $_SESSION ) ) {
+ session_start(); // start up the session (might have been previously closed to prevent php session locking)
+ }
+ $key = $this->getSessionKey();
+ $_SESSION['wsUploadData'][$key] = array(
+ 'mTempPath' => $status->value,
+ 'mFileSize' => $this->mFileSize,
+ 'mFileProps' => $this->mFileProps,
+ 'version' => self::SESSION_VERSION,
+ );
+ return $key;
+ }
+
+ /**
+ * Generate a random session key from stash in cases where we want to start an upload without much information
+ */
+ protected function getSessionKey() {
+ $key = mt_rand( 0, 0x7fffffff );
+ $_SESSION['wsUploadData'][$key] = array();
+ return $key;
+ }
+
+ /**
+ * If we've modified the upload file we need to manually remove it
+ * on exit to clean up.
+ */
+ public function cleanupTempFile() {
+ if ( $this->mRemoveTempFile && $this->mTempPath && file_exists( $this->mTempPath ) ) {
+ wfDebug( __METHOD__ . ": Removing temporary file {$this->mTempPath}\n" );
+ unlink( $this->mTempPath );
+ }
+ }
+
+ public function getTempPath() {
+ return $this->mTempPath;
+ }
+
+ /**
+ * Split a file into a base name and all dot-delimited 'extensions'
+ * on the end. Some web server configurations will fall back to
+ * earlier pseudo-'extensions' to determine type and execute
+ * scripts, so the blacklist needs to check them all.
+ *
+ * @return array
+ */
+ public static function splitExtensions( $filename ) {
+ $bits = explode( '.', $filename );
+ $basename = array_shift( $bits );
+ return array( $basename, $bits );
+ }
+
+ /**
+ * Perform case-insensitive match against a list of file extensions.
+ * Returns true if the extension is in the list.
+ *
+ * @param string $ext
+ * @param array $list
+ * @return bool
+ */
+ public static function checkFileExtension( $ext, $list ) {
+ return in_array( strtolower( $ext ), $list );
+ }
+
+ /**
+ * Perform case-insensitive match against a list of file extensions.
+ * Returns true if any of the extensions are in the list.
+ *
+ * @param array $ext
+ * @param array $list
+ * @return bool
+ */
+ public static function checkFileExtensionList( $ext, $list ) {
+ foreach( $ext as $e ) {
+ if( in_array( strtolower( $e ), $list ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks if the mime type of the uploaded file matches the file extension.
+ *
+ * @param string $mime the mime type of the uploaded file
+ * @param string $extension The filename extension that the file is to be served with
+ * @return bool
+ */
+ public static function verifyExtension( $mime, $extension ) {
+ $magic = MimeMagic::singleton();
+
+ if ( !$mime || $mime == 'unknown' || $mime == 'unknown/unknown' )
+ if ( !$magic->isRecognizableExtension( $extension ) ) {
+ wfDebug( __METHOD__ . ": passing file with unknown detected mime type; " .
+ "unrecognized extension '$extension', can't verify\n" );
+ return true;
+ } else {
+ wfDebug( __METHOD__ . ": rejecting file with unknown detected mime type; ".
+ "recognized extension '$extension', so probably invalid file\n" );
+ return false;
+ }
+
+ $match = $magic->isMatchingExtension( $extension, $mime );
+
+ if ( $match === null ) {
+ wfDebug( __METHOD__ . ": no file extension known for mime type $mime, passing file\n" );
+ return true;
+ } elseif( $match === true ) {
+ wfDebug( __METHOD__ . ": mime type $mime matches extension $extension, passing file\n" );
+
+ #TODO: if it's a bitmap, make sure PHP or ImageMagic resp. can handle it!
+ return true;
+
+ } else {
+ wfDebug( __METHOD__ . ": mime type $mime mismatches file extension $extension, rejecting file\n" );
+ return false;
+ }
+ }
+
+ /**
+ * Heuristic for detecting files that *could* contain JavaScript instructions or
+ * things that may look like HTML to a browser and are thus
+ * potentially harmful. The present implementation will produce false
+ * positives in some situations.
+ *
+ * @param string $file Pathname to the temporary upload file
+ * @param string $mime The mime type of the file
+ * @param string $extension The extension of the file
+ * @return bool true if the file contains something looking like embedded scripts
+ */
+ public static function detectScript( $file, $mime, $extension ) {
+ global $wgAllowTitlesInSVG;
+
+ # ugly hack: for text files, always look at the entire file.
+ # For binary field, just check the first K.
+
+ if( strpos( $mime,'text/' ) === 0 ) {
+ $chunk = file_get_contents( $file );
+ } else {
+ $fp = fopen( $file, 'rb' );
+ $chunk = fread( $fp, 1024 );
+ fclose( $fp );
+ }
+
+ $chunk = strtolower( $chunk );
+
+ if( !$chunk ) {
+ return false;
+ }
+
+ # decode from UTF-16 if needed (could be used for obfuscation).
+ if( substr( $chunk, 0, 2 ) == "\xfe\xff" ) {
+ $enc = 'UTF-16BE';
+ } elseif( substr( $chunk, 0, 2 ) == "\xff\xfe" ) {
+ $enc = 'UTF-16LE';
+ } else {
+ $enc = null;
+ }
+
+ if( $enc ) {
+ $chunk = iconv( $enc, "ASCII//IGNORE", $chunk );
+ }
+
+ $chunk = trim( $chunk );
+
+ # FIXME: convert from UTF-16 if necessarry!
+ wfDebug( __METHOD__ . ": checking for embedded scripts and HTML stuff\n" );
+
+ # check for HTML doctype
+ if ( preg_match( "/<!DOCTYPE *X?HTML/i", $chunk ) ) {
+ return true;
+ }
+
+ /**
+ * Internet Explorer for Windows performs some really stupid file type
+ * autodetection which can cause it to interpret valid image files as HTML
+ * and potentially execute JavaScript, creating a cross-site scripting
+ * attack vectors.
+ *
+ * Apple's Safari browser also performs some unsafe file type autodetection
+ * which can cause legitimate files to be interpreted as HTML if the
+ * web server is not correctly configured to send the right content-type
+ * (or if you're really uploading plain text and octet streams!)
+ *
+ * Returns true if IE is likely to mistake the given file for HTML.
+ * Also returns true if Safari would mistake the given file for HTML
+ * when served with a generic content-type.
+ */
+ $tags = array(
+ '<a href',
+ '<body',
+ '<head',
+ '<html', #also in safari
+ '<img',
+ '<pre',
+ '<script', #also in safari
+ '<table'
+ );
+
+ if( !$wgAllowTitlesInSVG && $extension !== 'svg' && $mime !== 'image/svg' ) {
+ $tags[] = '<title';
+ }
+
+ foreach( $tags as $tag ) {
+ if( false !== strpos( $chunk, $tag ) ) {
+ return true;
+ }
+ }
+
+ /*
+ * look for JavaScript
+ */
+
+ # resolve entity-refs to look at attributes. may be harsh on big files... cache result?
+ $chunk = Sanitizer::decodeCharReferences( $chunk );
+
+ # look for script-types
+ if( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) ) {
+ return true;
+ }
+
+ # look for html-style script-urls
+ if( preg_match( '!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
+ return true;
+ }
+
+ # look for css-style script-urls
+ if( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
+ return true;
+ }
+
+ wfDebug( __METHOD__ . ": no scripts found\n" );
+ return false;
+ }
+
+ protected function detectScriptInSvg( $filename ) {
+ $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
+ return $check->filterMatch;
+ }
+
+ /**
+ * @todo Replace this with a whitelist filter!
+ */
+ public function checkSvgScriptCallback( $element, $attribs ) {
+ $stripped = $this->stripXmlNamespace( $element );
+
+ if( $stripped == 'script' ) {
+ wfDebug( __METHOD__ . ": Found script element '$element' in uploaded file.\n" );
+ return true;
+ }
+
+ foreach( $attribs as $attrib => $value ) {
+ $stripped = $this->stripXmlNamespace( $attrib );
+ if( substr( $stripped, 0, 2 ) == 'on' ) {
+ wfDebug( __METHOD__ . ": Found script attribute '$attrib'='value' in uploaded file.\n" );
+ return true;
+ }
+ if( $stripped == 'href' && strpos( strtolower( $value ), 'javascript:' ) !== false ) {
+ wfDebug( __METHOD__ . ": Found script href attribute '$attrib'='$value' in uploaded file.\n" );
+ return true;
+ }
+ }
+ }
+
+ private function stripXmlNamespace( $name ) {
+ // 'http://www.w3.org/2000/svg:script' -> 'script'
+ $parts = explode( ':', strtolower( $name ) );
+ return array_pop( $parts );
+ }
+
+ /**
+ * Generic wrapper function for a virus scanner program.
+ * This relies on the $wgAntivirus and $wgAntivirusSetup variables.
+ * $wgAntivirusRequired may be used to deny upload if the scan fails.
+ *
+ * @param string $file Pathname to the temporary upload file
+ * @return mixed false if not virus is found, NULL if the scan fails or is disabled,
+ * or a string containing feedback from the virus scanner if a virus was found.
+ * If textual feedback is missing but a virus was found, this function returns true.
+ */
+ public static function detectVirus( $file ) {
+ global $wgAntivirus, $wgAntivirusSetup, $wgAntivirusRequired, $wgOut;
+
+ if ( !$wgAntivirus ) {
+ wfDebug( __METHOD__ . ": virus scanner disabled\n" );
+ return null;
+ }
+
+ if ( !$wgAntivirusSetup[$wgAntivirus] ) {
+ wfDebug( __METHOD__ . ": unknown virus scanner: $wgAntivirus\n" );
+ $wgOut->wrapWikiMsg( "<div class=\"error\">\n$1</div>", array( 'virus-badscanner', $wgAntivirus ) );
+ return wfMsg( 'virus-unknownscanner' ) . " $wgAntivirus";
+ }
+
+ # look up scanner configuration
+ $command = $wgAntivirusSetup[$wgAntivirus]['command'];
+ $exitCodeMap = $wgAntivirusSetup[$wgAntivirus]['codemap'];
+ $msgPattern = isset( $wgAntivirusSetup[$wgAntivirus]['messagepattern'] ) ?
+ $wgAntivirusSetup[$wgAntivirus]['messagepattern'] : null;
+
+ if ( strpos( $command, "%f" ) === false ) {
+ # simple pattern: append file to scan
+ $command .= " " . wfEscapeShellArg( $file );
+ } else {
+ # complex pattern: replace "%f" with file to scan
+ $command = str_replace( "%f", wfEscapeShellArg( $file ), $command );
+ }
+
+ wfDebug( __METHOD__ . ": running virus scan: $command \n" );
+
+ # execute virus scanner
+ $exitCode = false;
+
+ # NOTE: there's a 50 line workaround to make stderr redirection work on windows, too.
+ # that does not seem to be worth the pain.
+ # Ask me (Duesentrieb) about it if it's ever needed.
+ $output = wfShellExec( "$command 2>&1", $exitCode );
+
+ # map exit code to AV_xxx constants.
+ $mappedCode = $exitCode;
+ if ( $exitCodeMap ) {
+ if ( isset( $exitCodeMap[$exitCode] ) ) {
+ $mappedCode = $exitCodeMap[$exitCode];
+ } elseif ( isset( $exitCodeMap["*"] ) ) {
+ $mappedCode = $exitCodeMap["*"];
+ }
+ }
+
+ if ( $mappedCode === AV_SCAN_FAILED ) {
+ # scan failed (code was mapped to false by $exitCodeMap)
+ wfDebug( __METHOD__ . ": failed to scan $file (code $exitCode).\n" );
+
+ if ( $wgAntivirusRequired ) {
+ return wfMsg( 'virus-scanfailed', array( $exitCode ) );
+ } else {
+ return null;
+ }
+ } elseif ( $mappedCode === AV_SCAN_ABORTED ) {
+ # scan failed because filetype is unknown (probably imune)
+ wfDebug( __METHOD__ . ": unsupported file type $file (code $exitCode).\n" );
+ return null;
+ } elseif ( $mappedCode === AV_NO_VIRUS ) {
+ # no virus found
+ wfDebug( __METHOD__ . ": file passed virus scan.\n" );
+ return false;
+ } else {
+ $output = trim( $output );
+
+ if ( !$output ) {
+ $output = true; #if there's no output, return true
+ } elseif ( $msgPattern ) {
+ $groups = array();
+ if ( preg_match( $msgPattern, $output, $groups ) ) {
+ if ( $groups[1] ) {
+ $output = $groups[1];
+ }
+ }
+ }
+
+ wfDebug( __METHOD__ . ": FOUND VIRUS! scanner feedback: $output \n" );
+ return $output;
+ }
+ }
+
+ /**
+ * Check if the temporary file is MacBinary-encoded, as some uploads
+ * from Internet Explorer on Mac OS Classic and Mac OS X will be.
+ * If so, the data fork will be extracted to a second temporary file,
+ * which will then be checked for validity and either kept or discarded.
+ */
+ private function checkMacBinary() {
+ $macbin = new MacBinary( $this->mTempPath );
+ if( $macbin->isValid() ) {
+ $dataFile = tempnam( wfTempDir(), 'WikiMacBinary' );
+ $dataHandle = fopen( $dataFile, 'wb' );
+
+ wfDebug( __METHOD__ . ": Extracting MacBinary data fork to $dataFile\n" );
+ $macbin->extractData( $dataHandle );
+
+ $this->mTempPath = $dataFile;
+ $this->mFileSize = $macbin->dataForkLength();
+
+ // We'll have to manually remove the new file if it's not kept.
+ $this->mRemoveTempFile = true;
+ }
+ $macbin->close();
+ }
+
+ /**
+ * Check if there's an overwrite conflict and, if so, if restrictions
+ * forbid this user from performing the upload.
+ *
+ * @return mixed true on success, error string on failure
+ */
+ private function checkOverwrite() {
+ global $wgUser;
+ // First check whether the local file can be overwritten
+ $file = $this->getLocalFile();
+ if( $file->exists() ) {
+ if( !self::userCanReUpload( $wgUser, $file ) ) {
+ return 'fileexists-forbidden';
+ } else {
+ return true;
+ }
+ }
+
+ /* Check shared conflicts: if the local file does not exist, but
+ * wfFindFile finds a file, it exists in a shared repository.
+ */
+ $file = wfFindFile( $this->getTitle() );
+ if ( $file && !$wgUser->isAllowed( 'reupload-shared' ) ) {
+ return 'fileexists-shared-forbidden';
+ }
+
+ return true;
+ }
+
+ /**
+ * Check if a user is the last uploader
+ *
+ * @param User $user
+ * @param string $img, image name
+ * @return bool
+ */
+ public static function userCanReUpload( User $user, $img ) {
+ if( $user->isAllowed( 'reupload' ) ) {
+ return true; // non-conditional
+ }
+ if( !$user->isAllowed( 'reupload-own' ) ) {
+ return false;
+ }
+ if( is_string( $img ) ) {
+ $img = wfLocalFile( $img );
+ }
+ if ( !( $img instanceof LocalFile ) ) {
+ return false;
+ }
+
+ return $user->getId() == $img->getUser( 'id' );
+ }
+
+ /**
+ * Helper function that does various existence checks for a file.
+ * The following checks are performed:
+ * - The file exists
+ * - Article with the same name as the file exists
+ * - File exists with normalized extension
+ * - The file looks like a thumbnail and the original exists
+ *
+ * @param File $file The file to check
+ * @return mixed False if the file does not exists, else an array
+ */
+ public static function getExistsWarning( $file ) {
+ if( $file->exists() ) {
+ return array( 'warning' => 'exists', 'file' => $file );
+ }
+
+ if( $file->getTitle()->getArticleID() ) {
+ return array( 'warning' => 'page-exists', 'file' => $file );
+ }
+
+ if ( $file->wasDeleted() && !$file->exists() ) {
+ return array( 'warning' => 'was-deleted', 'file' => $file );
+ }
+
+ if( strpos( $file->getName(), '.' ) == false ) {
+ $partname = $file->getName();
+ $extension = '';
+ } else {
+ $n = strrpos( $file->getName(), '.' );
+ $extension = substr( $file->getName(), $n + 1 );
+ $partname = substr( $file->getName(), 0, $n );
+ }
+ $normalizedExtension = File::normalizeExtension( $extension );
+
+ if ( $normalizedExtension != $extension ) {
+ // We're not using the normalized form of the extension.
+ // Normal form is lowercase, using most common of alternate
+ // extensions (eg 'jpg' rather than 'JPEG').
+ //
+ // Check for another file using the normalized form...
+ $nt_lc = Title::makeTitle( NS_FILE, "{$partname}.{$normalizedExtension}" );
+ $file_lc = wfLocalFile( $nt_lc );
+
+ if( $file_lc->exists() ) {
+ return array(
+ 'warning' => 'exists-normalized',
+ 'file' => $file,
+ 'normalizedFile' => $file_lc
+ );
+ }
+ }
+
+ if ( self::isThumbName( $file->getName() ) ) {
+ # Check for filenames like 50px- or 180px-, these are mostly thumbnails
+ $nt_thb = Title::newFromText( substr( $partname , strpos( $partname , '-' ) +1 ) . '.' . $extension, NS_FILE );
+ $file_thb = wfLocalFile( $nt_thb );
+ if( $file_thb->exists() ) {
+ return array(
+ 'warning' => 'thumb',
+ 'file' => $file,
+ 'thumbFile' => $file_thb
+ );
+ } else {
+ // File does not exist, but we just don't like the name
+ return array(
+ 'warning' => 'thumb-name',
+ 'file' => $file,
+ 'thumbFile' => $file_thb
+ );
+ }
+ }
+
+
+ foreach( self::getFilenamePrefixBlacklist() as $prefix ) {
+ if ( substr( $partname, 0, strlen( $prefix ) ) == $prefix ) {
+ return array(
+ 'warning' => 'bad-prefix',
+ 'file' => $file,
+ 'prefix' => $prefix
+ );
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Helper function that checks whether the filename looks like a thumbnail
+ */
+ public static function isThumbName( $filename ) {
+ $n = strrpos( $filename, '.' );
+ $partname = $n ? substr( $filename, 0, $n ) : $filename;
+ return (
+ substr( $partname , 3, 3 ) == 'px-' ||
+ substr( $partname , 2, 3 ) == 'px-'
+ ) &&
+ preg_match( "/[0-9]{2}/" , substr( $partname , 0, 2 ) );
+ }
+
+ /**
+ * Get a list of blacklisted filename prefixes from [[MediaWiki:Filename-prefix-blacklist]]
+ *
+ * @return array list of prefixes
+ */
+ public static function getFilenamePrefixBlacklist() {
+ $blacklist = array();
+ $message = wfMsgForContent( 'filename-prefix-blacklist' );
+ if( $message && !( wfEmptyMsg( 'filename-prefix-blacklist', $message ) || $message == '-' ) ) {
+ $lines = explode( "\n", $message );
+ foreach( $lines as $line ) {
+ // Remove comment lines
+ $comment = substr( trim( $line ), 0, 1 );
+ if ( $comment == '#' || $comment == '' ) {
+ continue;
+ }
+ // Remove additional comments after a prefix
+ $comment = strpos( $line, '#' );
+ if ( $comment > 0 ) {
+ $line = substr( $line, 0, $comment-1 );
+ }
+ $blacklist[] = trim( $line );
+ }
+ }
+ return $blacklist;
+ }
+
+ public function getImageInfo( $result ) {
+ $file = $this->getLocalFile();
+ $imParam = ApiQueryImageInfo::getPropertyNames();
+ return ApiQueryImageInfo::getInfo( $file, array_flip( $imParam ), $result );
+ }
+
+}
diff --git a/includes/upload/UploadFromFile.php b/includes/upload/UploadFromFile.php
new file mode 100644
index 00000000..73581a61
--- /dev/null
+++ b/includes/upload/UploadFromFile.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * @file
+ * @ingroup upload
+ *
+ * @author Bryan Tong Minh
+ *
+ * Implements regular file uploads
+ */
+class UploadFromFile extends UploadBase {
+
+
+ function initializeFromRequest( &$request ) {
+ $desiredDestName = $request->getText( 'wpDestFile' );
+ if( !$desiredDestName )
+ $desiredDestName = $request->getFileName( 'wpUploadFile' );
+ return $this->initializePathInfo(
+ $desiredDestName,
+ $request->getFileTempName( 'wpUploadFile' ),
+ $request->getFileSize( 'wpUploadFile' )
+ );
+ }
+ /**
+ * Entry point for upload from file.
+ */
+ function initialize( $name, $tempPath, $fileSize ) {
+ return $this->initializePathInfo( $name, $tempPath, $fileSize );
+ }
+ static function isValidRequest( $request ) {
+ return (bool)$request->getFileTempName( 'wpUploadFile' );
+ }
+}
diff --git a/includes/upload/UploadFromStash.php b/includes/upload/UploadFromStash.php
new file mode 100644
index 00000000..17e922b0
--- /dev/null
+++ b/includes/upload/UploadFromStash.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * @file
+ * @ingroup upload
+ *
+ * Implements uploading from previously stored file.
+ *
+ * @author Bryan Tong Minh
+ */
+
+class UploadFromStash extends UploadBase {
+ public static function isValidSessionKey( $key, $sessionData ) {
+ return !empty( $key ) &&
+ is_array( $sessionData ) &&
+ isset( $sessionData[$key] ) &&
+ isset( $sessionData[$key]['version'] ) &&
+ $sessionData[$key]['version'] == self::SESSION_VERSION;
+ }
+
+ public static function isValidRequest( $request ) {
+ $sessionData = $request->getSessionData( 'wsUploadData' );
+ return self::isValidSessionKey(
+ $request->getInt( 'wpSessionKey' ),
+ $sessionData
+ );
+ }
+
+ public function initialize( $name, $sessionKey, $sessionData ) {
+ /**
+ * Confirming a temporarily stashed upload.
+ * We don't want path names to be forged, so we keep
+ * them in the session on the server and just give
+ * an opaque key to the user agent.
+ */
+
+ $this->initializePathInfo( $name,
+ $this->getRealPath ( $sessionData['mTempPath'] ),
+ $sessionData['mFileSize'],
+ false
+ );
+
+ $this->mSessionKey = $sessionKey;
+ $this->mVirtualTempPath = $sessionData['mTempPath'];
+ $this->mFileProps = $sessionData['mFileProps'];
+ }
+
+ public function initializeFromRequest( &$request ) {
+ $sessionKey = $request->getInt( 'wpSessionKey' );
+ $sessionData = $request->getSessionData('wsUploadData');
+
+ $desiredDestName = $request->getText( 'wpDestFile' );
+ if( !$desiredDestName )
+ $desiredDestName = $request->getText( 'wpUploadFile' );
+ return $this->initialize( $desiredDestName, $sessionKey, $sessionData[$sessionKey] );
+ }
+
+ /**
+ * File has been previously verified so no need to do so again.
+ */
+ protected function verifyFile() {
+ return true;
+ }
+
+
+ /**
+ * There is no need to stash the image twice
+ */
+ public function stashSession() {
+ if ( !empty( $this->mSessionKey ) )
+ return $this->mSessionKey;
+ return parent::stashSession();
+ }
+
+ /**
+ * Remove a temporarily kept file stashed by saveTempUploadedFile().
+ * @return success
+ */
+ public function unsaveUploadedFile() {
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $success = $repo->freeTemp( $this->mVirtualTempPath );
+ return $success;
+ }
+
+} \ No newline at end of file
diff --git a/includes/upload/UploadFromUrl.php b/includes/upload/UploadFromUrl.php
new file mode 100644
index 00000000..763dae38
--- /dev/null
+++ b/includes/upload/UploadFromUrl.php
@@ -0,0 +1,137 @@
+<?php
+/**
+ * @file
+ * @ingroup upload
+ *
+ * Implements uploading from a HTTP resource.
+ *
+ * @author Bryan Tong Minh
+ * @author Michael Dale
+ */
+class UploadFromUrl extends UploadBase {
+ protected $mTempDownloadPath;
+
+ /**
+ * Checks if the user is allowed to use the upload-by-URL feature. If the
+ * user is allowed, pass on permissions checking to the parent.
+ */
+ public static function isAllowed( $user ) {
+ if( !$user->isAllowed( 'upload_by_url' ) )
+ return 'upload_by_url';
+ return parent::isAllowed( $user );
+ }
+
+ /**
+ * Checks if the upload from URL feature is enabled
+ */
+ public static function isEnabled() {
+ global $wgAllowCopyUploads;
+ return $wgAllowCopyUploads && parent::isEnabled();
+ }
+
+ /**
+ * Entry point for API upload
+ */
+ public function initialize( $name, $url, $na, $nb = false ) {
+ global $wgTmpDirectory;
+
+ $localFile = tempnam( $wgTmpDirectory, 'WEBUPLOAD' );
+ $this->initializePathInfo( $name, $localFile, 0, true );
+
+ $this->mUrl = trim( $url );
+ }
+
+ /**
+ * Entry point for SpecialUpload
+ * @param $request Object: WebRequest object
+ */
+ public function initializeFromRequest( &$request ) {
+ $desiredDestName = $request->getText( 'wpDestFile' );
+ if( !$desiredDestName )
+ $desiredDestName = $request->getText( 'wpUploadFileURL' );
+ return $this->initialize(
+ $desiredDestName,
+ $request->getVal( 'wpUploadFileURL' ),
+ false
+ );
+ }
+
+ /**
+ * @param $request Object: WebRequest object
+ */
+ public static function isValidRequest( $request ){
+ if( !$request->getVal( 'wpUploadFileURL' ) )
+ return false;
+ // check that is a valid url:
+ return self::isValidUrl( $request->getVal( 'wpUploadFileURL' ) );
+ }
+
+ public static function isValidUrl( $url ) {
+ // Only allow HTTP or FTP for now
+ return (bool)preg_match( '!^(http://|ftp://)!', $url );
+ }
+
+ /**
+ * Do the real fetching stuff
+ */
+ function fetchFile() {
+ if( !self::isValidUrl( $this->mUrl ) ) {
+ return Status::newFatal( 'upload-proto-error' );
+ }
+ $res = $this->curlCopy();
+ if( $res !== true ) {
+ return Status::newFatal( $res );
+ }
+ return Status::newGood();
+ }
+
+ /**
+ * Safe copy from URL
+ * Returns true if there was an error, false otherwise
+ */
+ private function curlCopy() {
+ global $wgOut;
+
+ # Open temporary file
+ $this->mCurlDestHandle = @fopen( $this->mTempPath, "wb" );
+ if( $this->mCurlDestHandle === false ) {
+ # Could not open temporary file to write in
+ return 'upload-file-error';
+ }
+
+ $ch = curl_init();
+ curl_setopt( $ch, CURLOPT_HTTP_VERSION, 1.0); # Probably not needed, but apparently can work around some bug
+ curl_setopt( $ch, CURLOPT_TIMEOUT, 10); # 10 seconds timeout
+ curl_setopt( $ch, CURLOPT_LOW_SPEED_LIMIT, 512); # 0.5KB per second minimum transfer speed
+ curl_setopt( $ch, CURLOPT_URL, $this->mUrl);
+ curl_setopt( $ch, CURLOPT_WRITEFUNCTION, array( $this, 'uploadCurlCallback' ) );
+ curl_exec( $ch );
+ $error = curl_errno( $ch );
+ curl_close( $ch );
+
+ fclose( $this->mCurlDestHandle );
+ unset( $this->mCurlDestHandle );
+
+ if( $error )
+ return "upload-curl-error$errornum";
+
+ return true;
+ }
+
+ /**
+ * Callback function for CURL-based web transfer
+ * Write data to file unless we've passed the length limit;
+ * if so, abort immediately.
+ * @access private
+ */
+ function uploadCurlCallback( $ch, $data ) {
+ global $wgMaxUploadSize;
+ $length = strlen( $data );
+ $this->mFileSize += $length;
+ if( $this->mFileSize > $wgMaxUploadSize ) {
+ return 0;
+ }
+ fwrite( $this->mCurlDestHandle, $data );
+ return $length;
+ }
+}
diff --git a/includes/zhtable/Makefile b/includes/zhtable/Makefile
index 618e2f21..5dd88d38 100644
--- a/includes/zhtable/Makefile
+++ b/includes/zhtable/Makefile
@@ -23,7 +23,7 @@ all: ZhConversion.php tradphrases.notsure simpphrases.notsure wordlist toHans.di
# Download Unihan database and Traditional Chinese / Simplified Chinese phrases files
Unihan.zip:
- wget -nc ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip
+ wget -nc http://www.unicode.org/Public/UNIDATA/Unihan.zip
scim-tables-$(SCIM_TABLES_VER).tar.gz:
wget -nc http://$(SF_MIRROR).dl.sourceforge.net/sourceforge/scim/scim-tables-$(SCIM_TABLES_VER).tar.gz
diff --git a/includes/zhtable/Makefile.py b/includes/zhtable/Makefile.py
index 19436457..26e229df 100644
--- a/includes/zhtable/Makefile.py
+++ b/includes/zhtable/Makefile.py
@@ -1,7 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
# @author Philip
-# You should run this script UNDER python 3000.
import tarfile, zipfile
-import os, re, shutil, urllib.request
+import os, re, shutil, sys, platform
+
+pyversion = platform.python_version()
+islinux = platform.system().lower() == 'linux' or False
+
+if pyversion[:3] in ['2.5', '2.6', '2.7']:
+ import urllib as urllib_request
+ import codecs
+ uniopen = codecs.open
+ def unichr2(i):
+ if sys.maxunicode >= 0x10000 or i < 0x10000:
+ return unichr(i)
+ else:
+ return unichr(0xD7C0+(i>>10)) + unichr(0xDC00+(i&0x3FF))
+elif pyversion[:2] == '3.':
+ import urllib.request as urllib_request
+ uniopen = open
+ unichr2 = chr
# DEFINE
SF_MIRROR = 'easynews'
@@ -14,14 +32,23 @@ def GetFileFromURL( url, dest ):
if os.path.isfile(dest):
print( 'File %s up to date.' % dest )
return
- print( 'Downloading from [%s] ...' % url )
- urllib.request.urlretrieve( url, dest )
- print( 'Download complete.\n' )
+ global islinux
+ if islinux:
+ # we use wget instead urlretrieve under Linux,
+ # because wget will display details like download progress
+ os.system('wget %s' % url)
+ else:
+ print( 'Downloading from [%s] ...' % url )
+ urllib_request.urlretrieve( url, dest )
+ print( 'Download complete.\n' )
return
-def GetFileFromZip( path ):
+def GetFileFromUnihan( path ):
print( 'Extracting files from %s ...' % path )
- zipfile.ZipFile(path).extractall()
+ text = zipfile.ZipFile(path).read('Unihan_Variants.txt')
+ uhfile = uniopen('Unihan_Variants.txt', 'w')
+ uhfile.write(text)
+ uhfile.close()
return
def GetFileFromTar( path, member, rename ):
@@ -34,25 +61,25 @@ def GetFileFromTar( path, member, rename ):
def ReadBIG5File( dest ):
print( 'Reading and decoding %s ...' % dest )
- f1 = open( dest, 'r', encoding='big5hkscs', errors='replace' )
+ f1 = uniopen( dest, 'r', encoding='big5hkscs', errors='replace' )
text = f1.read()
text = text.replace( '\ufffd', '\n' )
f1.close()
- f2 = open( dest, 'w', encoding='utf8' )
+ f2 = uniopen( dest, 'w', encoding='utf8' )
f2.write(text)
f2.close()
return text
def ReadFile( dest ):
print( 'Reading and decoding %s ...' % dest )
- f = open( dest, 'r', encoding='utf8' )
+ f = uniopen( dest, 'r', encoding='utf8' )
ret = f.read()
f.close()
return ret
def ReadUnihanFile( dest ):
print( 'Reading and decoding %s ...' % dest )
- f = open( dest, 'r', encoding='utf8' )
+ f = uniopen( dest, 'r', encoding='utf8' )
t2s_code = []
s2t_code = []
while True:
@@ -82,7 +109,7 @@ def RemoveOneCharConv( text ):
def ConvertToChar( code ):
code = code.split('<')[0]
- return chr( int( code[2:], 16 ) )
+ return unichr2( int( code[2:], 16 ) )
def GetDefaultTable( code_table ):
char_table = {}
@@ -101,8 +128,8 @@ def GetManualTable( dest ):
elem = elem.strip('|')
if elem:
temp2 = elem.split( '|', 1 )
- from_char = chr( int( temp2[0][2:7], 16 ) )
- to_chars = [chr( int( code[2:7], 16 ) ) for code in temp2[1].split('|')]
+ from_char = unichr2( int( temp2[0][2:7], 16 ) )
+ to_chars = [unichr2( int( code[2:7], 16 ) ) for code in temp2[1].split('|')]
char_table[from_char] = to_chars
return char_table
@@ -222,24 +249,26 @@ def GetManualWordsTable( src_wordlist, conv_table ):
def CustomRules( dest ):
text = ReadFile( dest )
temp = text.split()
- ret = {temp[i]: temp[i + 1] for i in range( 0, len( temp ), 2 )}
+ ret = dict()
+ for i in range( 0, len( temp ), 2 ):
+ ret[temp[i]] = temp[i + 1]
return ret
def GetPHPArray( table ):
- lines = ['\'%s\' => \'%s\',' % (f, t) for (f, t) in table]
+ lines = ['\'%s\' => \'%s\',' % (f, t) for (f, t) in table if f and t]
#lines = ['"%s"=>"%s",' % (f, t) for (f, t) in table]
return '\n'.join(lines)
def RemoveSameChar( src_table ):
dst_table = {}
for f, t in src_table.items():
- if not f == t:
+ if f != t:
dst_table[f] = t
return dst_table
def main():
#Get Unihan.zip:
- url = 'ftp://ftp.unicode.org/Public/UNIDATA/Unihan.zip'
+ url = 'http://www.unicode.org/Public/UNIDATA/Unihan.zip'
han_dest = 'Unihan.zip'
GetFileFromURL( url, han_dest )
@@ -261,7 +290,7 @@ def main():
# Extract the file from a comressed files
# Unihan.txt Simp. & Trad
- GetFileFromZip( han_dest )
+ GetFileFromUnihan( han_dest )
# Make word lists
t_wordlist = []
@@ -341,7 +370,7 @@ def main():
# Make char to char convertion table
# Unihan.txt, dict t2s_code, s2t_code = { 'U+XXXX': 'U+YYYY( U+ZZZZ) ... ', ... }
- ( t2s_code, s2t_code ) = ReadUnihanFile( 'Unihan.txt' )
+ ( t2s_code, s2t_code ) = ReadUnihanFile( 'Unihan_Variants.txt' )
# dict t2s_1tomany = { '\uXXXX': '\uYYYY\uZZZZ ... ', ... }
t2s_1tomany = {}
t2s_1tomany.update( GetDefaultTable( t2s_code ) )
@@ -429,10 +458,20 @@ $zh2Hant = array(\n'''
php += GetPHPArray( toSG )
php += '\n);'
- f = open( 'ZhConversion.php', 'w', encoding = 'utf8' )
+ f = uniopen( 'ZhConversion.php', 'w', encoding = 'utf8' )
print ('Writing ZhConversion.php ... ')
f.write( php )
f.close()
+
+ #Remove temp files
+ print ('Deleting temp files ... ')
+ os.remove('EZ.txt.in')
+ os.remove('phrase_lib.txt')
+ os.remove('tsi.src')
+ os.remove('Unihan_Variants.txt')
+ os.remove('Wubi.txt.in')
+ os.remove('Ziranma.txt.in')
+
if __name__ == '__main__':
- main() \ No newline at end of file
+ main()
diff --git a/includes/zhtable/simp2trad.manual b/includes/zhtable/simp2trad.manual
index 2a405073..bb4eb7ef 100644
--- a/includes/zhtable/simp2trad.manual
+++ b/includes/zhtable/simp2trad.manual
@@ -1,215 +1,5 @@
-U+0753b画|U+0756b畫|U+07575畵|
-U+0677f板|U+0677f板|U+095c6闆|
-U+08868表|U+08868表|U+09336錶|
-U+0624d才|U+0624d才|U+07e94纔|
-U+04e11丑|U+04e11丑|U+0919c醜|
-U+051fa出|U+051fa出|U+09f63齣|
-U+06dc0淀|U+06dc0淀|U+06fb1澱|
-U+051ac冬|U+051ac冬|U+09f15鼕|
-U+08303范|U+08303范|U+07bc4範|
-U+04e30丰|U+08c50豐|U+04e30丰|
-U+0522e刮|U+0522e刮|U+098b3颳|
-U+0540e后|U+0540e后|U+05f8c後|
-U+080e1胡|U+080e1胡|U+09b0d鬍|U+0885a衚|
-U+056de回|U+056de回|U+08ff4迴|
-U+04f19伙|U+04f19伙|U+05925夥|
-U+059dc姜|U+059dc姜|U+08591薑|
-U+0501f借|U+0501f借|U+085c9藉|
-U+0514b克|U+0514b克|U+0524b剋|
-U+056f0困|U+056f0困|U+0774f睏|
-U+06f13漓|U+06f13漓|U+07055灕|
-U+091cc里|U+091cc里|U+088e1裡|U+088cf裏|
-U+05e18帘|U+07c3e簾|U+05e18帘|
-U+09709霉|U+09709霉|U+09ef4黴|
-U+09762面|U+09762面|U+09eb5麵|U+09eaa麪|U+09eab麫|
-U+08511蔑|U+08511蔑|U+0884a衊|
-U+05343千|U+05343千|U+097c6韆|
-U+079cb秋|U+079cb秋|U+097a6鞦|
-U+0677e松|U+0677e松|U+09b06鬆|
-U+054b8咸|U+054b8咸|U+09e79鹹|
-U+05411向|U+05411向|U+056ae嚮|U+066cf曏|
-U+04f59余|U+04f59余|U+09918餘|
-U+09980馀|U+09918餘|
-U+090c1郁|U+090c1郁|U+09b31鬱|
-U+05fa1御|U+05fa1御|U+079a6禦|
-U+0613f愿|U+09858願|U+0613f愿|
-U+04e91云|U+096f2雲|U+04e91云|
-U+082b8芸|U+082b8芸|U+08553蕓|
-U+06c84沄|U+06c84沄|U+06f90澐|
-U+081f4致|U+081f4致|U+07dfb緻|
-U+05236制|U+05236制|U+088fd製|
-U+06731朱|U+06731朱|U+07843硃|
-U+07b51筑|U+07bc9築|U+07b51筑|
-U+051c6准|U+051c6准|U+06e96準|
-U+05382厂|U+05ee0廠|U+05382厂|
-U+05e7f广|U+05ee3廣|U+05e7f广|
-U+08f9f辟|U+08f9f辟|U+095e2闢|
-U+0522b别|U+05225別|U+05f46彆|
-U+0535c卜|U+0535c卜|U+08514蔔|
-U+06c88沈|U+06c88沈|U+0700b瀋|
-U+051b2冲|U+06c96沖|U+0885d衝|
-U+079cd种|U+07a2e種|U+079cd种|
-U+0866b虫|U+087f2蟲|U+0866b虫|
-U+062c5担|U+064d4擔|U+062c5担|
-U+0515a党|U+09ee8黨|U+0515a党|
-U+06597斗|U+06597斗|U+09b25鬥|
-U+0513f儿|U+05152兒|U+0513f儿|
-U+05e72干|U+05e72干|U+04e7e乾|U+05e79幹|U+069a6榦|
-U+08c37谷|U+08c37谷|U+07a40穀|
-U+067dc柜|U+06ac3櫃|U+067dc柜|
-U+05408合|U+05408合|U+095a4閤|
-U+05212划|U+05212划|U+05283劃|
-U+0574f坏|U+058de壞|U+0574f坏|
-U+051e0几|U+05e7e幾|U+051e0几|
-U+07cfb系|U+07cfb系|U+07e6b繫|U+04fc2係|
-U+05bb6家|U+05bb6家|U+050a2傢|
-U+04ef7价|U+050f9價|U+04ef7价|
-U+0636e据|U+064da據|U+0636e据|
-U+05377卷|U+05377卷|U+06372捲|
-U+09002适|U+09069適|U+09002适|
-U+08721蜡|U+0881f蠟|U+08721蜡|
-U+0814a腊|U+081d8臘|U+0814a腊|
-U+04e86了|U+04e86了|U+077ad瞭|
-U+07d2f累|U+07d2f累|U+07e8d纍|
-U+04e48么|U+04e48么|U+09ebd麽|U+05e7a幺|U+09ebc麼|
-U+08499蒙|U+08499蒙|U+077c7矇|U+06fdb濛|U+061de懞|
-U+04e07万|U+0842c萬|U+04e07万|
-U+05b81宁|U+05be7寧|U+05b81宁|
-U+06734朴|U+06734朴|U+06a38樸|
-U+082f9苹|U+0860b蘋|U+082f9苹|
-U+04ec6仆|U+04ec6仆|U+050d5僕|
-U+066f2曲|U+066f2曲|U+09eaf麯|U+09eb4麯|
-U+0786e确|U+078ba確|U+0786e确|
-U+0820d舍|U+0820d舍|U+06368捨|
-U+080dc胜|U+052dd勝|U+080dc胜|
-U+0672f术|U+08853術|U+0672e朮|
-U+053f0台|U+053f0台|U+081fa臺|U+06aaf檯|U+098b1颱|
-U+04f53体|U+09ad4體|U+04f53体|
-U+06d82涂|U+05857塗|U+06d82涂|
-U+053f6叶|U+08449葉|U+053f6叶|
-U+05401吁|U+05401吁|U+07c72籲|
-U+065cb旋|U+065cb旋|U+0955f镟|
-U+04f63佣|U+04f63佣|U+050ad傭|
-U+04e0e与|U+08207與|U+04e0e与|
-U+06298折|U+06298折|U+0647a摺|
-U+05f81征|U+05f81征|U+05fb5徵|
-U+075c7症|U+075c7症|U+07665癥|
-U+06076恶|U+060e1惡|U+05641噁|
-U+053d1发|U+0767c發|U+09aee髮|
-U+0590d复|U+05fa9復|U+08907複|
-U+06c47汇|U+0532f匯|U+06ed9滙|U+05f59彙|
-U+083b7获|U+07372獲|U+07a6b穫|
-U+09965饥|U+098e2飢|U+09951饑|
-U+05c3d尽|U+076e1盡|U+05118儘|
-U+05386历|U+06b77歷|U+066c6曆|U+053a4厤|
-U+05364卤|U+09e75鹵|U+06ef7滷|
-U+05f25弥|U+05f4c彌|U+07030瀰|
-U+07b7e签|U+07c3d簽|U+07c64籤|
-U+07ea4纤|U+07e96纖|U+07e34縴|
-U+082cf苏|U+08607蘇|U+056cc囌|U+07c64甦|
-U+0575b坛|U+058c7壇|U+07f48罈|
-U+056e2团|U+05718團|U+07cf0糰|
-U+0987b须|U+09808須|U+09b1a鬚|
-U+0810f脏|U+081df臟|U+09ad2髒|
-U+053ea只|U+053ea只|U+096bb隻|
-U+0949f钟|U+0937e鍾|U+09418鐘|
-U+0836f药|U+0846f葯|U+085e5藥|
-U+0540c同|U+0540c同|U+08855衕|
-U+05fd7志|U+05fd7志|U+08a8c誌|
-U+0676f杯|U+0676f杯|U+076c3盃|
-U+05cb3岳|U+05cb3岳|U+05dbd嶽|
-U+05e03布|U+05e03布|U+04f48佈|
-U+05f53当|U+07576當|U+05679噹|
-U+0540a吊|U+0540a吊|U+05f14弔|
-U+04ec7仇|U+04ec7仇|U+08b8e讎|
-U+08574蕴|U+0860a蘊|U+085f4藴|
-U+07ebf线|U+07dda線|U+07dab綫|
-U+04e3a为|U+070ba為|U+07232爲|
-U+04ea7产|U+07522產|U+07523産|
-U+04f17众|U+0773e眾|U+08846衆|
-U+04f2a伪|U+0507d偽|U+050de僞|
-U+051eb凫|U+09ce7鳧|U+09cec鳬|
-U+05395厕|U+05ec1廁|U+053a0厠|
-U+0542f启|U+0555f啟|U+05553啓|
-U+05899墙|U+07246牆|U+058bb墻|
-U+058f3壳|U+06bbc殼|U+06bbb殻|
-U+05956奖|U+0734e獎|U+0596c奬|
-U+059ab妫|U+05aaf媯|U+05b00嬀|
-U+05e76并|U+04e26並|U+04f75併|
-U+05f55录|U+09304錄|U+09332録|
-U+060ab悫|U+06128愨|U+06164慤|
-U+06781极|U+06975極|U+06781极|
-U+06ca9沩|U+06e88溈|U+06f59潙|
-U+07618瘘|U+0763a瘺|U+0763b瘻|
-U+07877硷|U+07906礆|U+09e7c鹼|
-U+07ad6竖|U+08c4e豎|U+07aea竪|
-U+07edd绝|U+07d55絕|U+07d76絶|
-U+07ee3绣|U+07d89綉|U+07e61繡|
-U+07ee6绦|U+07d5b絛|U+07e27縧|
-U+07ef1绱|U+07dd4緔|U+0979d鞝|
-U+07ef7绷|U+07db3綳|U+07e43繃|
-U+07eff绿|U+07da0綠|U+07dd1緑|
-U+07f30缰|U+097c1韁|U+07e6e繮|
-U+082e7苧|U+082ce苎|U+085b4薴|
-U+083bc莼|U+08493蒓|U+084f4蓴|
-U+08bf4说|U+08aaa說|U+08aac説|
-U+08c23谣|U+08b20謠|U+08b21謡|
-U+08c2b谫|U+08b7e譾|U+08b2d謭|
-U+08d43赃|U+08d13贓|U+08d1c贜|
-U+08d4d赍|U+09f4e齎|U+08ceb賫|
-U+08d5d赝|U+08d17贗|U+08d0b贋|
-U+0915d酝|U+0919e醞|U+09196醖|
-U+091c7采|U+091c7采|U+063a1採|U+057f0埰|
-U+094a9钩|U+09264鉤|U+0920e鈎|
-U+094b5钵|U+07f3d缽|U+09262鉢|
-U+09508锈|U+092b9銹|U+093fd鏽|
-U+09510锐|U+092b3銳|U+092ed鋭|
-U+09528锨|U+06774杴|U+09341鍁|
-U+0954c镌|U+0942b鐫|U+093b8鎸|
-U+09562镢|U+09481钁|U+0941d鐝|
-U+09605阅|U+095b1閱|U+095b2閲|
-U+09893颓|U+09839頹|U+0983d頽|
-U+0989c颜|U+0984f顏|U+09854顔|
-U+09a82骂|U+07f75罵|U+099e1駡|
-U+09c87鲇|U+09bf0鯰|U+09b8e鮎|
-U+09c9e鲞|U+09bd7鯗|U+09b9d鮝|
-U+09cc4鳄|U+09c77鱷|U+09c10鰐|
-U+09e21鸡|U+096de雞|U+09dc4鷄|
-U+09e5a鹚|U+09dbf鶿|U+09dc0鷀|
-U+054c4哄|U+054c4哄|U+09b28鬨|
-U+05582喂|U+05582喂|U+09935餵|
-U+06e38游|U+06e38游|U+0904a遊|
-U+04e8e于|U+04e8e于|U+065bc於|
-U+05446呆|U+05446呆|U+07343獃|
-U+096c7雇|U+096c7雇|U+050f1僱|
-U+05978奸|U+05978奸|U+059e6姦|
-U+068f1棱|U+068f1棱|U+07a1c稜|
-U+05347升|U+05347升|U+06607昇|U+0965e陞|
-U+06258托|U+06258托|U+08a17託|
-U+0633d挽|U+0633d挽|U+08f13輓|
-U+05e78幸|U+05e78幸|U+05016倖|
-U+06d8c涌|U+06d8c涌|U+06e67湧|
-U+06b32欲|U+06b32欲|U+0617e慾|
-U+0624e扎|U+0624e扎|U+07d2e紮|
-U+05360占|U+05360占|U+04f54佔|
-U+06ce8注|U+06ce8注|U+08a3b註|
-U+04ed1仑|U+04f96侖|U+05d19崙|
-U+06817栗|U+06817栗|U+06144慄|
-U+05742坂|U+05742坂|U+0962a阪|
-U+096d5雕|U+096d5雕|U+09d70鵰|
-U+05398厘|U+05398厘|U+091d0釐|
-U+06881梁|U+06881梁|U+06a11樑|
-U+05e84庄|U+05e84庄|U+0838a莊|
-U+062fc拼|U+062fc拼|U+062da拚|
-U+08d5e赞|U+08d0a贊|U+08b9a讚|
-U+0E82D|U+068E1棡|
-U+29F8C𩾌|U+09C47鱇|
-U+070BC炼|U+07149煉|U+0934A鍊|
-U+04E2A个|U+0500B個|U+07B87箇|
-U+094F2铲|U+093DF鏟|U+05277剷|
-U+05EB5庵|U+05EB5庵|U+083F4菴|
-U+05F69彩|U+05F69彩|U+07DB5綵|
-U+20BB6𠮶|U+055F0嗰|
+U+03CE0㳠|U+06FBE澾|
+U+0447D䑽|U+26A99𦪙|
U+0497A䥺|U+091FE釾|
U+0497D䥽|U+093FA鏺|
U+04983䦃|U+0942F鐯|
@@ -220,6 +10,237 @@ U+04CA0䲠|U+09C06鰆|
U+04CA1䲡|U+09C0C鰌|
U+04CA2䲢|U+09C27鰧|
U+04CA3䲣|U+04C77䱷|
+U+04E07万|U+0842C萬|U+04E07万|
+U+04E0E与|U+08207與|U+04E0E与|
+U+04E11丑|U+04E11丑|U+0919C醜|
+U+04E2A个|U+0500B個|U+07B87箇|
+U+04E30丰|U+08C50豐|U+04E30丰|
+U+04E3A为|U+070BA為|U+07232爲|
+U+04E48么|U+04E48么|U+09EBD麽|U+05E7A幺|U+09EBC麼|
+U+04E86了|U+04E86了|U+077AD瞭|
+U+04E8E于|U+065BC於|U+04E8E于|
+U+04E91云|U+096F2雲|U+04E91云|
+U+04EA7产|U+07522產|U+07523産|
+U+04EC6仆|U+04EC6仆|U+050D5僕|
+U+04EC7仇|U+04EC7仇|U+08B8E讎|
+U+04ED1仑|U+04F96侖|U+05D19崙|
+U+04EF7价|U+050F9價|U+04EF7价|
+U+04F17众|U+0773E眾|U+08846衆|
+U+04F19伙|U+04F19伙|U+05925夥|
+U+04F2A伪|U+0507D偽|U+050DE僞|
+U+04F53体|U+09AD4體|U+04F53体|
+U+04F59余|U+04F59余|U+09918餘|
+U+04F63佣|U+04F63佣|U+050AD傭|
+U+0501F借|U+0501F借|U+085C9藉|
+U+0513F儿|U+05152兒|U+0513F儿|
+U+0514B克|U+0514B克|U+0524B剋|
+U+0515A党|U+09EE8黨|U+0515A党|
+U+051AC冬|U+051AC冬|U+09F15鼕|
+U+051B2冲|U+06C96沖|U+0885D衝|
+U+051C6准|U+051C6准|U+06E96準|
+U+051E0几|U+05E7E幾|U+051E0几|
+U+051EB凫|U+09CE7鳧|U+09CEC鳬|
+U+051FA出|U+051FA出|U+09F63齣|
+U+05212划|U+05212划|U+05283劃|
+U+0522B别|U+05225別|U+05F46彆|
+U+0522E刮|U+0522E刮|U+098B3颳|
+U+05236制|U+05236制|U+088FD製|
+U+05343千|U+05343千|U+097C6韆|
+U+05347升|U+05347升|U+06607昇|U+0965E陞|
+U+0535C卜|U+0535C卜|U+08514蔔|
+U+05360占|U+05360占|U+04F54佔|
+U+05364卤|U+09E75鹵|U+06EF7滷|
+U+05377卷|U+05377卷|U+06372捲|
+U+0537A卺|U+05DF9巹|
+U+05382厂|U+05EE0廠|U+05382厂|
+U+05386历|U+06B77歷|U+066C6曆|U+053A4厤|
+U+05395厕|U+05EC1廁|U+053A0厠|
+U+05398厘|U+05398厘|U+091D0釐|
+U+053D1发|U+0767C發|U+09AEE髮|
+U+053EA只|U+053EA只|U+096BB隻|
+U+053F0台|U+053F0台|U+081FA臺|U+06AAF檯|U+098B1颱|
+U+053F6叶|U+08449葉|U+053F6叶|
+U+05401吁|U+05401吁|U+07C72籲|
+U+05408合|U+05408合|U+095A4閤|
+U+0540A吊|U+0540A吊|U+05F14弔|
+U+0540C同|U+0540C同|U+08855衕|
+U+0540E后|U+0540E后|U+05F8C後|
+U+05411向|U+05411向|U+056AE嚮|U+066CF曏|
+U+0542F启|U+0555F啟|U+05553啓|
+U+05446呆|U+05446呆|U+07343獃|
+U+054B8咸|U+054B8咸|U+09E79鹹|
+U+054C4哄|U+054C4哄|U+09B28鬨|
+U+05582喂|U+05582喂|U+09935餵|
+U+056DE回|U+056DE回|U+08FF4迴|
+U+056E2团|U+05718團|U+07CF0糰|
+U+056F0困|U+056F0困|U+0774F睏|
+U+05742坂|U+05742坂|U+0962A阪|
+U+0574F坏|U+058DE壞|U+0574F坏|
+U+0575B坛|U+058C7壇|U+07F48罈|
+U+057FC埼|U+057FC埼|U+07895碕|
+U+05899墙|U+07246牆|U+058BB墻|
+U+058F3壳|U+06BBC殼|U+06BBB殻|
+U+0590D复|U+05FA9復|U+08907複|
+U+05956奖|U+0734E獎|U+0596C奬|
+U+05978奸|U+05978奸|U+059E6姦|
+U+059AB妫|U+05AAF媯|U+05B00嬀|
+U+059DC姜|U+059DC姜|U+08591薑|
+U+05B81宁|U+05BE7寧|U+05B81宁|
+U+05BB6家|U+05BB6家|U+050A2傢|
+U+05C3D尽|U+076E1盡|U+05118儘|
+U+05CB3岳|U+05CB3岳|U+05DBD嶽|
+U+05E03布|U+05E03布|U+04F48佈|
+U+05E18帘|U+07C3E簾|U+05E18帘|
+U+05E5E幞|U+08946襆|
+U+05E72干|U+05E72干|U+04E7E乾|U+05E79幹|U+069A6榦|
+U+05E76并|U+04E26並|U+04F75併|
+U+05E78幸|U+05E78幸|U+05016倖|
+U+05E7F广|U+05EE3廣|U+05E7F广|
+U+05E84庄|U+05E84庄|U+0838A莊|
+U+05EB5庵|U+05EB5庵|U+083F4菴|
+U+05F25弥|U+05F4C彌|U+07030瀰|
+U+05F53当|U+07576當|U+05679噹|
+U+05F55录|U+09304錄|U+09332録|
+U+05F69彩|U+05F69彩|U+07DB5綵|
+U+05F81征|U+05F81征|U+05FB5徵|
+U+05FA1御|U+05FA1御|U+079A6禦|
+U+05FD7志|U+05FD7志|U+08A8C誌|
+U+06076恶|U+060E1惡|U+05641噁|
+U+060AB悫|U+06128愨|U+06164慤|
+U+0613F愿|U+09858願|U+0613F愿|
+U+0621A戚|U+0621A戚|U+0617C慼|U+093DA鏚|
+U+0624D才|U+0624D才|U+07E94纔|
+U+0624E扎|U+0624E扎|U+07D2E紮|
+U+06258托|U+06258托|U+08A17託|
+U+06298折|U+06298折|U+0647A摺|
+U+062C5担|U+064D4擔|U+062C5担|
+U+062FC拼|U+062FC拼|U+062DA拚|
+U+06328挨|U+06328挨|U+06371捱|
+U+0633D挽|U+0633D挽|U+08F13輓|
+U+0636E据|U+064DA據|U+0636E据|
+U+06597斗|U+06597斗|U+09B25鬥|
+U+065CB旋|U+065CB旋|U+0955F镟|
+U+065D7旗|U+065D7旗|U+065C2旂|
+U+066F2曲|U+066F2曲|U+09EAF麯|U+09EB4麯|
+U+0672F术|U+08853術|U+0672E朮|
+U+06731朱|U+06731朱|U+07843硃|
+U+06734朴|U+06734朴|U+06A38樸|
+U+0676F杯|U+0676F杯|U+076C3盃|
+U+0677E松|U+0677E松|U+09B06鬆|
+U+0677F板|U+0677F板|U+095C6闆|
+U+06781极|U+06975極|U+06781极|
+U+067DC柜|U+06AC3櫃|U+067DC柜|
+U+06817栗|U+06817栗|U+06144慄|
+U+06881梁|U+06881梁|U+06A11樑|
+U+068F1棱|U+068F1棱|U+07A1C稜|
+U+06B32欲|U+06B32欲|U+0617E慾|
+U+06C47汇|U+0532F匯|U+06ED9滙|U+05F59彙|
+U+06C84沄|U+06C84沄|U+06F90澐|
+U+06C88沈|U+06C88沈|U+0700B瀋|
+U+06CA9沩|U+06E88溈|U+06F59潙|
+U+06CE8注|U+06CE8注|U+08A3B註|
+U+06D82涂|U+05857塗|U+06D82涂|
+U+06D8C涌|U+06D8C涌|U+06E67湧|
+U+06DC0淀|U+06DC0淀|U+06FB1澱|
+U+06E38游|U+06E38游|U+0904A遊|
+U+06EAF溯|U+06EAF溯|U+06CDD泝|
+U+06F13漓|U+06F13漓|U+07055灕|
+U+070BC炼|U+07149煉|U+0934A鍊|
+U+0753B画|U+0756B畫|U+07575畵|
+U+075C7症|U+075C7症|U+07665癥|
+U+07618瘘|U+0763A瘺|U+0763B瘻|
+U+0786E确|U+078BA確|U+0786E确|
+U+07877硷|U+07906礆|U+09E7C鹼|
+U+079CB秋|U+079CB秋|U+097A6鞦|
+U+079CD种|U+07A2E種|U+079CD种|
+U+07A57穗|U+07A57穗|U+07E50繐|
+U+07AD6竖|U+08C4E豎|U+07AEA竪|
+U+07B51筑|U+07BC9築|U+07B51筑|
+U+07B7E签|U+07C3D簽|U+07C64籤|
+U+07CFB系|U+07CFB系|U+07E6B繫|U+04FC2係|
+U+07D2F累|U+07D2F累|U+07E8D纍|
+U+07EA4纤|U+07E96纖|U+07E34縴|
+U+07EBF线|U+07DDA線|U+07DAB綫|
+U+07EDD绝|U+07D55絕|U+07D76絶|
+U+07EE3绣|U+07D89綉|U+07E61繡|
+U+07EE6绦|U+07D5B絛|U+07E27縧|
+U+07EF1绱|U+07DD4緔|U+0979D鞝|
+U+07EF7绷|U+07DB3綳|U+07E43繃|
+U+07EFF绿|U+07DA0綠|U+07DD1緑|
+U+07F30缰|U+097C1韁|U+07E6E繮|
+U+07FA1羡|U+07FA8羨|
+U+080DC胜|U+052DD勝|U+080DC胜|
+U+080E1胡|U+080E1胡|U+09B0D鬍|U+0885A衚|
+U+0810F脏|U+081DF臟|U+09AD2髒|
+U+0814A腊|U+081D8臘|U+0814A腊|
+U+081F4致|U+081F4致|U+07DFB緻|
+U+0820D舍|U+0820D舍|U+06368捨|
+U+082B8芸|U+082B8芸|U+08553蕓|
+U+082CE苎|U+082E7苧|
+U+082CF苏|U+08607蘇|U+056CC囌|U+07C64甦|
+U+082E7苧|U+085B4薴|
+U+082F9苹|U+0860B蘋|U+082F9苹|
+U+08303范|U+08303范|U+07BC4範|
+U+0836F药|U+0846F葯|U+085E5藥|
+U+083B7获|U+07372獲|U+07A6B穫|
+U+083BC莼|U+08493蒓|U+084F4蓴|
+U+08499蒙|U+08499蒙|U+077C7矇|U+06FDB濛|U+061DE懞|
+U+084D1蓑|U+084D1蓑|U+07C11簑|
+U+08511蔑|U+08511蔑|U+0884A衊|
+U+08574蕴|U+0860A蘊|U+085F4藴|
+U+0866B虫|U+087F2蟲|U+0866B虫|
+U+08721蜡|U+0881F蠟|U+08721蜡|
+U+0874E蝎|U+0880D蠍|
+U+08868表|U+08868表|U+09336錶|
+U+08BF4说|U+08AAA說|U+08AAC説|
+U+08C23谣|U+08B20謠|U+08B21謡|
+U+08C2B谫|U+08B7E譾|U+08B2D謭|
+U+08C37谷|U+08C37谷|U+07A40穀|
+U+08D43赃|U+08D13贓|U+08D1C贜|
+U+08D4D赍|U+09F4E齎|U+08CEB賫|
+U+08D5D赝|U+08D17贗|U+08D0B贋|
+U+08D5E赞|U+08D0A贊|U+08B9A讚|
+U+08F9F辟|U+08F9F辟|U+095E2闢|
+U+09002适|U+09069適|U+09002适|
+U+090C1郁|U+090C1郁|U+09B31鬱|
+U+0915D酝|U+0919E醞|U+09196醖|
+U+09170酰|U+09170酰|U+091AF醯|
+U+09178酸|U+09178酸|U+075E0痠|
+U+091C7采|U+091C7采|U+063A1採|U+057F0埰|
+U+091CC里|U+091CC里|U+088E1裡|U+088CF裏|
+U+093AD鎭|U+093AE鎮|
+U+0949F钟|U+0937E鍾|U+09418鐘|
+U+094A9钩|U+09264鉤|U+0920E鈎|
+U+094B5钵|U+07F3D缽|U+09262鉢|
+U+094F2铲|U+093DF鏟|U+05277剷|
+U+09508锈|U+092B9銹|U+093FD鏽|
+U+09510锐|U+092B3銳|U+092ED鋭|
+U+09528锨|U+06774杴|U+09341鍁|
+U+0954C镌|U+0942B鐫|U+093B8鎸|
+U+09562镢|U+09481钁|U+0941D鐝|
+U+09605阅|U+095B1閱|U+095B2閲|
+U+096C7雇|U+096C7雇|U+050F1僱|
+U+096D5雕|U+096D5雕|U+09D70鵰|
+U+09709霉|U+09709霉|U+09EF4黴|
+U+09762面|U+09762面|U+09EB5麵|U+09EAA麪|U+09EAB麫|
+U+097B2鞲|U+097DD韝|
+U+0987B须|U+09808須|U+09B1A鬚|
+U+09893颓|U+09839頹|U+0983D頽|
+U+0989C颜|U+0984F顏|U+09854顔|
+U+09965饥|U+098E2飢|U+09951饑|
+U+09980馀|U+09918餘|
+U+09986馆|U+09928館|U+08218舘|
+U+09A82骂|U+07F75罵|U+099E1駡|
+U+09C87鲇|U+09BF0鯰|U+09B8E鮎|
+U+09C9E鲞|U+09BD7鯗|U+09B9D鮝|
+U+09CC4鳄|U+09C77鱷|U+09C10鰐|
+U+09E21鸡|U+096DE雞|U+09DC4鷄|
+U+09E5A鹚|U+09DBF鶿|U+09DC0鷀|
+U+09E6E鹮|U+04D09䴉|
+U+09F44齄|U+09F47齇|
+U+0E82D|U+068E1棡|
+U+20BB6𠮶|U+055F0嗰|
+U+26216𦈖|U+04308䌈|
U+28C3E𨰾|U+093B7鎷|
U+28C3F𨰿|U+091F3釳|
U+28C40𨱀|U+2895B𨥛|
@@ -322,6 +343,7 @@ U+29F88𩾈|U+04C59䱙|
U+29F8A𩾊|U+04C6C䱬|
U+29F8B𩾋|U+04C70䱰|
U+29F8C𩾌|U+09C47鱇|
+U+29F8C𩾌|U+09C47鱇|
U+29F8E𩾎|U+29F47𩽇|
U+2A242𪉂|U+04CB0䲰|
U+2A243𪉃|U+09CFC鳼|
@@ -347,15 +369,4 @@ U+2A38A𪎊|U+09EA8麨|
U+2A38B𪎋|U+04D34䴴|
U+2A38C𪎌|U+09EB3麳|
U+2A68F𪚏|U+2A600𪘀|
-U+2A690𪚐|U+2A62F𪘯|
-U+0621A戚|U+0621A戚|U+0617C慼|U+093DA鏚|
-U+057FC埼|U+057FC埼|U+07895碕|
-U+065D7旗|U+065D7旗|U+065C2旂|
-U+06328挨|U+06328挨|U+06371捱|
-U+06EAF溯|U+06EAF溯|U+06CDD泝|
-U+09178酸|U+09178酸|U+075E0痠|
-U+07A57穗|U+07A57穗|U+07E50繐|
-U+084D1蓑|U+084D1蓑|U+07C11簑|
-U+26216𦈖|U+04308䌈|
-U+03CE0㳠|U+06FBE澾|
-U+0447D䑽|U+26A99𦪙| \ No newline at end of file
+U+2A690𪚐|U+2A62F𪘯| \ No newline at end of file
diff --git a/includes/zhtable/simpphrases.manual b/includes/zhtable/simpphrases.manual
index 6339ff83..a015a34b 100644
--- a/includes/zhtable/simpphrases.manual
+++ b/includes/zhtable/simpphrases.manual
@@ -111,6 +111,8 @@
乾龙
乾,健也
乾,天也
+乾健也
+乾天也
坤乾
天道为乾
尼乾陀
@@ -119,13 +121,20 @@
旋乾转坤
易·乾
《易乾
-《周易乾
+周易乾
易经·乾
易经乾
李乾德
萧乾
郭子乾
雍乾
+乾务
+乾沓和
+乾沓婆
+乾通
+乾忠
+乾淳
+李乾顺
不着痕迹
不着边际
与着
@@ -448,6 +457,8 @@
含著称
含著者
含著述
+听得着
+听不着
听着
听著书
听著作
@@ -824,16 +835,9 @@
扛著称
扛著者
扛著述
+找得着
找不着
-找不著书
-找不著作
-找不著名
-找不著录
-找不著称
-找不著者
-找不著述
抓着
-抓著书
抓著作
抓著名
抓著录
@@ -849,7 +853,6 @@
披著者
披著述
抬着
-抬著书
抬著作
抬著名
抬著录
@@ -857,7 +860,6 @@
抬著者
抬著述
抱着
-抱著书
抱著作
抱著名
抱著录
@@ -873,7 +875,6 @@
拉著者
拉著述
拎着
-拎著书
拎著作
拎著名
拎著录
@@ -881,7 +882,6 @@
拎著者
拎著述
拖着
-拖著书
拖著作
拖著名
拖著录
@@ -889,7 +889,6 @@
拖著者
拖著述
拼着
-拼著书
拼著作
拼著名
拼著录
@@ -897,7 +896,6 @@
拼著者
拼著述
拿着
-拿著书
拿著作
拿著名
拿著录
@@ -905,7 +903,6 @@
拿著者
拿著述
持着
-持著书
持著作
持著名
持著录
@@ -913,7 +910,6 @@
持著者
持著述
挑着
-挑著书
挑著作
挑著名
挑著录
@@ -921,7 +917,6 @@
挑著者
挑著述
挡着
-挡著书
挡著作
挡著名
挡著录
@@ -937,7 +932,6 @@
挣著者
挣著述
挥着
-挥著书
挥著作
挥著名
挥著录
@@ -945,7 +939,6 @@
挥著者
挥著述
挨着
-挨著书
挨著作
挨著名
挨著录
@@ -953,7 +946,6 @@
挨著者
挨著述
捆着
-捆著书
捆著作
捆著名
捆著录
@@ -969,7 +961,6 @@
据著者
据著述
掖着
-掖著书
掖著作
掖著名
掖著录
@@ -977,7 +968,6 @@
掖著者
掖著述
接着
-接著书
接著作
接著名
接著录
@@ -993,7 +983,6 @@
揉著者
揉著述
提着
-提著书
提著作
提著名
提著录
@@ -1001,7 +990,6 @@
提著者
提著述
搂着
-搂著书
搂著作
搂著名
搂著录
@@ -1009,7 +997,6 @@
搂著者
搂著述
摆着
-摆著书
摆著作
摆著名
摆著录
@@ -1025,7 +1012,6 @@
撼著者
撼著述
敞着
-敞著书
敞著作
敞著名
敞著录
@@ -1033,7 +1019,6 @@
敞著者
敞著述
数着
-数著书
数著作
数著名
数著录
@@ -1073,7 +1058,6 @@
映著者
映著述
晃着
-晃著书
晃著作
晃著名
晃著录
@@ -1097,7 +1081,6 @@
有著者
有著述
望着
-望著书
望著作
望著名
望著录
@@ -1105,7 +1088,6 @@
望著者
望著述
朝着
-朝著书
朝著作
朝著名
朝著录
@@ -1145,7 +1127,6 @@
来著者
来著述
枕着
-枕著书
枕著作
枕著名
枕著录
@@ -1161,7 +1142,6 @@
梦著者
梦著述
梳着
-梳著书
梳著作
梳著名
梳著录
@@ -1302,6 +1282,7 @@
牵著称
牵著者
牵著述
+犯得着
犯不着
独着
独著书
@@ -1327,14 +1308,8 @@
甜著称
甜著者
甜著述
+用得着
用不着
-用不着书
-用不著作
-用不著名
-用不著录
-用不著称
-用不著者
-用不著述
用着
用著书
用著作
@@ -1391,6 +1366,8 @@
盾著称
盾著者
盾著述
+看得着
+看不着
看着
看着书
看著作
@@ -1399,6 +1376,14 @@
看著称
看著者
看著述
+瞧着
+瞧着书
+瞧著作
+瞧著名
+瞧著录
+瞧著称
+瞧著者
+瞧著述
着业
着丝
着么
@@ -1501,14 +1486,8 @@
着鞭
着题
着魔
+睡得着
睡不着
-睡不著书
-睡不著作
-睡不著名
-睡不著录
-睡不著称
-睡不著者
-睡不著述
睡着
睡著书
睡著作
@@ -2150,6 +2129,37 @@
护著称
护著者
护著述
+保护着
+爱护着
+庇护着
+传着
+传著书
+传著作
+传著名
+传著录
+传著称
+传著者
+传著述
+标志着
+流露着
+靠着
+靠著作
+靠著名
+靠著录
+靠著称
+靠著者
+靠著述
+玩着
+迫着
+吃得着
+吃不着
+吃着
+闻得着
+闻不着
+闻着
+嗅得着
+嗅不着
+嗅着
於乎
於戏
魏徵
@@ -2162,13 +2172,19 @@
樊於期
於菟
於潜县
-馀年
石碁镇
因著《
因著〈
李泽钜
於祥玉
於崇文
+於世成
+於乙宇同
+於宇同
+朴於宇同
+於哲
+於除鞬
+於志贺
覆蓋
五箇山
麽麽
@@ -2197,4 +2213,12 @@
幺谦
麴义
麴英
-麯崇裕 \ No newline at end of file
+麯崇裕
+阿部正瞭
+醯酱
+醯鸡
+醯醋
+醯醢
+醯壶
+苧烯
+近角聪信
diff --git a/includes/zhtable/simpphrases_exclude.manual b/includes/zhtable/simpphrases_exclude.manual
index a8f61e09..4606041f 100644
--- a/includes/zhtable/simpphrases_exclude.manual
+++ b/includes/zhtable/simpphrases_exclude.manual
@@ -15,4 +15,6 @@
-樑 \ No newline at end of file
+樑
+摺叠
+餗 \ No newline at end of file
diff --git a/includes/zhtable/toCN.manual b/includes/zhtable/toCN.manual
index 5bfcc00c..e3c12d0b 100644
--- a/includes/zhtable/toCN.manual
+++ b/includes/zhtable/toCN.manual
@@ -24,6 +24,10 @@
字型檔 字库
欄位 字段
字元 字符
+字元济 字元济
+字元濟 字元济
+字元会 字元会
+字元會 字元会
存檔 存盘
定址 寻址
章節附註 尾注
@@ -82,13 +86,14 @@
掃瞄器 扫瞄仪
寬頻 宽带
資料庫 数据库
-乳酪 奶酪
鉅賈 巨商
萬曆 万历
永曆 永历
辭彙 词汇
母音 元音
自由球 任意球
+自由球员 自由球员
+自由球員 自由球员
頭槌 头球
進球 入球
顆進球 粒入球
@@ -223,6 +228,7 @@
夜学 夜校
华乐 民乐
中樂 民乐
+华乐街 华乐街
屋价 房价
計程車 出租车
公車 公共汽车
@@ -249,8 +255,10 @@
拿破崙 拿破仑
布殊 布什
布希 布什
+布希亞 布希亚
+布希亚 布希亚
柯林頓 克林顿
-海珊 萨达姆
+海珊 侯赛因
梵谷 凡高
大衛碧咸 大卫·贝克汉姆
米高奧雲 迈克尔·欧文
diff --git a/includes/zhtable/toHK.manual b/includes/zhtable/toHK.manual
index a39d6409..10a3dfcb 100644
--- a/includes/zhtable/toHK.manual
+++ b/includes/zhtable/toHK.manual
@@ -2,6 +2,8 @@
“ 「
‘ 『
’ 』
+鉤 鈎
+衛 衞
凶殺 兇殺
凶殘 兇殘
緝凶 緝兇
@@ -134,6 +136,8 @@
拿破崙 拿破侖
布什 布殊
布希 布殊
+布希亞 布希亞
+布希亚 布希亞
柯林頓 克林頓
萨达姆 薩達姆
海珊 侯賽因
@@ -197,6 +201,7 @@
獨著 獨着
對著 對着
盾著 盾着
+犯得著 犯得着
犯不著 犯不着
福著 福着
趕著 趕着
@@ -232,6 +237,8 @@
借著 借着
據著 據着
開著 開着
+看得著 看得着
+看不著 看不着
看著 看着
康著 康着
扛著 扛着
@@ -300,6 +307,7 @@
梳著 梳着
豎著 豎着
數著 數着
+睡得著 睡得着
睡不著 睡不着
睡著 睡着
順著 順着
@@ -311,7 +319,8 @@
甜著 甜着
挑著 挑着
跳著 跳着
-聽著 聽着
+聽得著 聽得着
+聽不著 聽不着
聽著 聽着
偷著 偷着
拖著 拖着
@@ -342,6 +351,7 @@
印著 印着
應著 應着
映著 映着
+用得著 用得着
用不著 用不着
用著 用着
悠著 悠着
@@ -360,6 +370,7 @@
戰著 戰着
蘸著 蘸着
仗著 仗着
+找得著 找得着
找不著 找不着
照著 照着
罩著 罩着
@@ -436,7 +447,6 @@
挨著述 挨著述
挨著稱 挨著稱
挨著錄 挨著錄
-挨著書 挨著書
愛著作 愛著作
愛著者 愛著者
愛著名 愛著名
@@ -464,7 +474,6 @@
擺著述 擺著述
擺著稱 擺著稱
擺著錄 擺著錄
-擺著書 擺著書
伴著作 伴著作
伴著者 伴著者
伴著名 伴著名
@@ -499,7 +508,6 @@
抱著述 抱著述
抱著稱 抱著稱
抱著錄 抱著錄
-抱著書 抱著書
背著作 背著作
背著者 背著者
背著名 背著名
@@ -583,7 +591,6 @@
敞著述 敞著述
敞著稱 敞著稱
敞著錄 敞著錄
-敞著書 敞著書
唱著作 唱著作
唱著者 唱著者
唱著名 唱著名
@@ -597,7 +604,6 @@
朝著述 朝著述
朝著稱 朝著稱
朝著錄 朝著錄
-朝著書 朝著書
沉著作 沉著作
沉著者 沉著者
沉著名 沉著名
@@ -618,7 +624,6 @@
持著述 持著述
持著稱 持著稱
持著錄 持著錄
-持著書 持著書
斥著作 斥著作
斥著者 斥著者
斥著名 斥著名
@@ -695,7 +700,6 @@
擋著述 擋著述
擋著稱 擋著稱
擋著錄 擋著錄
-擋著書 擋著書
得著作 得著作
得著者 得著者
得著名 得著名
@@ -905,14 +909,12 @@
晃著述 晃著述
晃著稱 晃著稱
晃著錄 晃著錄
-晃著書 晃著書
揮著作 揮著作
揮著者 揮著者
揮著名 揮著名
揮著述 揮著述
揮著稱 揮著稱
揮著錄 揮著錄
-揮著書 揮著書
活著作 活著作
活著者 活著者
活著名 活著名
@@ -996,7 +998,6 @@
接著述 接著述
接著稱 接著稱
接著錄 接著錄
-接著書 接著書
借著作 借著作
借著者 借著者
借著名 借著名
@@ -1094,7 +1095,6 @@
捆著述 捆著述
捆著稱 捆著稱
捆著錄 捆著錄
-捆著書 捆著書
困著作 困著作
困著者 困著者
困著名 困著名
@@ -1178,7 +1178,6 @@
拎著述 拎著述
拎著稱 拎著稱
拎著錄 拎著錄
-拎著書 拎著書
領著作 領著作
領著者 領著者
領著名 領著名
@@ -1206,7 +1205,6 @@
摟著述 摟著述
摟著稱 摟著稱
摟著錄 摟著錄
-摟著書 摟著書
陋著作 陋著作
陋著者 陋著者
陋著名 陋著名
@@ -1283,7 +1281,6 @@
拿著述 拿著述
拿著稱 拿著稱
拿著錄 拿著錄
-拿著書 拿著書
逆著作 逆著作
逆著者 逆著者
逆著名 逆著名
@@ -1360,7 +1357,6 @@
拼著述 拼著述
拼著稱 拼著稱
拼著錄 拼著錄
-拼著書 拼著書
鋪著作 鋪著作
鋪著者 鋪著者
鋪著名 鋪著名
@@ -1486,7 +1482,6 @@
梳著述 梳著述
梳著稱 梳著稱
梳著錄 梳著錄
-梳著書 梳著書
豎著作 豎著作
豎著者 豎著者
豎著名 豎著名
@@ -1500,14 +1495,6 @@
數著述 數著述
數著稱 數著稱
數著錄 數著錄
-數著書 數著書
-睡不著作 睡不著作
-睡不著者 睡不著者
-睡不著名 睡不著名
-睡不著述 睡不著述
-睡不著稱 睡不著稱
-睡不著錄 睡不著錄
-睡不著書 睡不著書
睡著作 睡著作
睡著者 睡著者
睡著名 睡著名
@@ -1535,14 +1522,12 @@
踏著述 踏著述
踏著稱 踏著稱
踏著錄 踏著錄
-踏著書 踏著書
抬著作 抬著作
抬著者 抬著者
抬著名 抬著名
抬著述 抬著述
抬著稱 抬著稱
抬著錄 抬著錄
-抬著書 抬著書
躺著作 躺著作
躺著者 躺著者
躺著名 躺著名
@@ -1556,7 +1541,6 @@
提著述 提著述
提著稱 提著稱
提著錄 提著錄
-提著書 提著書
甜著作 甜著作
甜著者 甜著者
甜著名 甜著名
@@ -1570,7 +1554,6 @@
挑著述 挑著述
挑著稱 挑著稱
挑著錄 挑著錄
-挑著書 挑著書
跳著作 跳著作
跳著者 跳著者
跳著名 跳著名
@@ -1585,13 +1568,6 @@
聽著稱 聽著稱
聽著錄 聽著錄
聽著書 聽著書
-聽著作 聽著作
-聽著者 聽著者
-聽著名 聽著名
-聽著述 聽著述
-聽著稱 聽著稱
-聽著錄 聽著錄
-聽著書 聽著書
偷著作 偷著作
偷著者 偷著者
偷著名 偷著名
@@ -1605,7 +1581,6 @@
拖著述 拖著述
拖著稱 拖著稱
拖著錄 拖著錄
-拖著書 拖著書
望著作 望著作
望著者 望著者
望著名 望著名
@@ -1738,7 +1713,6 @@
掖著述 掖著述
掖著稱 掖著稱
掖著錄 掖著錄
-掖著書 掖著書
衣著作 衣著作
衣著者 衣著者
衣著名 衣著名
@@ -1795,13 +1769,6 @@
映著稱 映著稱
映著錄 映著錄
映著書 映著書
-用不著作 用不著作
-用不著者 用不著者
-用不著名 用不著名
-用不著述 用不著述
-用不著稱 用不著稱
-用不著錄 用不著錄
-用不著書 用不著書
用著作 用著作
用著者 用著者
用著名 用著名
@@ -1921,13 +1888,6 @@
仗著稱 仗著稱
仗著錄 仗著錄
仗著書 仗著書
-找不著作 找不著作
-找不著者 找不著者
-找不著名 找不著名
-找不著述 找不著述
-找不著稱 找不著稱
-找不著錄 找不著錄
-找不著書 找不著書
照著作 照著作
照著者 照著者
照著名 照著名
@@ -1955,7 +1915,6 @@
枕著述 枕著述
枕著稱 枕著稱
枕著錄 枕著錄
-枕著書 枕著書
爭著作 爭著作
爭著者 爭著者
爭著名 爭著名
@@ -2004,7 +1963,6 @@
抓著述 抓著述
抓著稱 抓著稱
抓著錄 抓著錄
-抓著書 抓著書
轉著作 轉著作
轉著者 轉著者
轉著名 轉著名
@@ -2138,8 +2096,146 @@
殺著稱 殺著稱
殺著錄 殺著錄
殺著書 殺著書
+標誌著 標誌着
+幹著 幹着
+干着 幹着
+干着急 干着急
+流露著 流露着
+靠著 靠着
+靠著作 靠著作
+靠著名 靠著名
+靠著錄 靠著錄
+靠著录 靠著錄
+靠著稱 靠著稱
+靠著称 靠著稱
+靠著者 靠著者
+靠著述 靠著述
新著龍虎門 新著龍虎門
+迫著 迫着
+心繫著 心繫着
+藉著 藉着
+吃得著 吃得着
+吃不著 吃不着
+吃著 吃着
+聞得著 闻得着
+聞不著 闻不着
+聞著 闻着
+嗅得著 嗅得着
+嗅不著 嗅不着
+嗅著 嗅着
榴莲 榴槤
榴蓮 榴槤
发布 發佈
-發布 發佈 \ No newline at end of file
+發布 發佈
+掛鉤 掛鈎
+鉤心鬥角 鈎心鬥角
+咤 咤
+叱吒 叱咤
+叱咤 叱咤
+醯 酰
+醯醬 醯醬
+醯雞 醯雞
+醯酱 醯醬
+醯鸡 醯雞
+醯醋 醯醋
+醯醢 醯醢
+醯壶 醯壺
+醯壺 醯壺
+菸 煙
+雪裡紅 雪裏紅
+雪裡蕻 雪裏蕻
+雪里蕻 雪裏蕻
+雪里红 雪裏紅
+森林裡 森林裏
+森林里 森林裏
+日子裡 日子裏
+日子里 日子裏
+故事裡 故事裏
+故事里 故事裏
+領域裡 領域裏
+领域里 領域裏
+時間裡 時間裏
+时间里 時間裏
+深淵裡 深淵裏
+深渊里 深渊裏
+醫院裡 醫院裏
+医院里 医院裏
+春假裡 春假裏
+春假里 春假裏
+暑假裡 暑假裏
+暑假里 暑假裏
+秋假裡 秋假裏
+秋假里 秋假裏
+寒假裡 寒假裏
+寒假里 寒假裏
+春天裡 春天裏
+春天里 春天裏
+夏天裡 夏天裏
+夏天里 夏天裏
+秋天裡 秋天裏
+秋天里 秋天裏
+冬天裡 冬天裏
+冬天里 冬天裏
+春日裡 春日裏
+夏日裡 夏日裏
+秋日裡 秋日裏
+冬日裡 冬日裏
+春日里 春日裏
+夏日里 夏日裏
+秋日里 秋日裏
+冬日里 冬日裏
+嘴裡 嘴裏
+嘴里 嘴裏
+心裡 心裏
+心里 心裏
+皮裡陽秋 皮裏陽秋
+皮里阳秋 皮裏陽秋
+肚裡 肚裏
+肚里 肚裏
+苦裡 苦裏
+苦里 苦裏
+裡勾外連 裏勾外連
+里勾外连 裏勾外連
+裡面 裏面
+里面 裏面
+這裡 這裏
+這里 這裏
+點裡 點裏
+点里 點裏
+中文裡 中文裏
+中文里 中文裏
+山洞里 山洞裏
+山洞裡 山洞裏
+近角聪信 近角聰信
+近角聰信 近角聰信
+世界里 世界裏
+世界裡 世界裏
+眼睛里 眼睛裏
+眼睛裡 眼睛裏
+百科裡 百科裏
+百科里 百科裏
+歷史裡 歷史裏
+历史里 歷史裏
+戲裡 戲裏
+戏里 戲裏
+作品裡 作品裏
+作品里 作品裏
+專輯裡 專輯裏
+专辑里 專輯裏
+年代裡 年代裏
+年代里 年代裏
+棺材裡 棺材裏
+棺材里 棺材裏
+學裡 學裏
+学里 學裏
+獄裡 獄裏
+狱里 獄裏
+館裡 館裏
+馆里 館裏
+系列裡 系列裏
+系列里 系列裏
+村子裡 村子裏
+村子里 村子裏
+分布 分佈
+分布于 分佈於
+分布於 分佈於
diff --git a/includes/zhtable/toSimp.manual b/includes/zhtable/toSimp.manual
index c02ed00e..f424ee73 100644
--- a/includes/zhtable/toSimp.manual
+++ b/includes/zhtable/toSimp.manual
@@ -44,10 +44,12 @@
天道为乾 天道为乾
易经·乾 易经·乾
易经乾 易经乾
+乾务 乾务
柳诒徵 柳诒徵
於夫罗 於夫罗
於梨华 於梨华
於潜县 於潜县
+於志贺 於志贺
憑藉 凭借
藉端 借端
藉故 借故
@@ -58,6 +60,8 @@
藉機 借机
藉此 借此
藉由 借由
+藉著 借着
+藉着 借着
沈積 沉积
沈船 沉船
沈默 沉默
@@ -116,4 +120,23 @@
么二三 幺二三
么篇 幺篇
么謙 幺谦
-麴义 麴义 \ No newline at end of file
+麴义 麴义
+乾乾淨淨 干干净净
+乾乾脆脆 干干脆脆
+肉乾乾 肉干干
+魚乾乾 鱼干干
+於于同 於于同
+於乙于同 於乙于同
+閻懷禮 闫怀礼
+醯酱 醯酱
+醯鸡 醯鸡
+醯壶 醯壶
+苧烯 苧烯
+李乾顺 李乾顺
+幹著 干着
+氾濫 泛滥
+显著 显著
+顯著 显著
+標誌著 标志着
+近角聪信 近角聪信
+修鍊 修炼
diff --git a/includes/zhtable/toTW.manual b/includes/zhtable/toTW.manual
index 1cc527fa..2ce16f3f 100644
--- a/includes/zhtable/toTW.manual
+++ b/includes/zhtable/toTW.manual
@@ -3,6 +3,9 @@
‘ 『
’ 』
着 著
+鈎 鉤
+钩 鉤
+衞 衛
元凶 元凶
元兇 元凶
凶器 凶器
@@ -124,6 +127,8 @@
新紀元 新紀元
宋元 宋元
任意球 自由球
+任意球员 任意球員
+任意球員 任意球員
头球 頭槌
入球 進球
粒入球 顆進球
@@ -317,7 +322,6 @@
出租车 計程車
台球 撞球
桌球 撞球
-雪糕 冰淇淋
卫生 衛生
衞生 衛生
平治之亂 平治之亂
@@ -354,4 +358,55 @@
戏彩娱亲 戲綵娛親
剪彩 剪綵
榴莲 榴槤
-榴蓮 榴槤 \ No newline at end of file
+榴蓮 榴槤
+掛鈎 掛鉤
+挂钩 掛鉤
+鈎心鬥角 鉤心鬥角
+钩心斗角 鉤心鬥角
+酰 醯
+雪裏紅 雪裡紅
+雪裏蕻 雪裡蕻
+森林裏 森林裡
+日子裏 日子裡
+故事裏 故事裡
+領域裏 領域裡
+時間裏 時間裡
+深淵裏 深淵裡
+醫院裏 醫院裡
+春假裏 春假裡
+暑假裏 暑假裡
+秋假裏 秋假裡
+寒假裏 寒假裡
+春天裏 春天裡
+夏天裏 夏天裡
+秋天裏 秋天裡
+冬天裏 冬天裡
+春日裏 春日裡
+夏日裏 夏日裡
+秋日裏 秋日裡
+冬日裏 冬日裡
+百科裏 百科裡
+歷史裏 歷史裡
+戲裏 戲裡
+作品裏 作品裡
+專輯裏 專輯裡
+年代裏 年代裡
+棺材裏 棺材裡
+嘴裏 嘴裡
+心裏 心裡
+皮裏陽秋 皮裡陽秋
+肚裏 肚裡
+苦裏 苦裡
+裏勾外連 裡勾外連
+裏面 裡面
+這裏 這裡
+點裏 點裡
+中文裏 中文裡
+山洞裏 山洞裡
+世界裏 世界裡
+眼睛裏 眼睛裡
+學裏 學裡
+獄裏 獄裡
+館裏 館裡
+系列裏 系列裡
+村子裏 村子裡
diff --git a/includes/zhtable/toTrad.manual b/includes/zhtable/toTrad.manual
index b392adc5..b3459054 100644
--- a/includes/zhtable/toTrad.manual
+++ b/includes/zhtable/toTrad.manual
@@ -64,4 +64,79 @@
不好干預 不好干預
不干預 不干預
不干擾 不干擾
-不干牠 不干牠 \ No newline at end of file
+不干牠 不干牠
+矽谷 矽谷
+范文瀾 范文瀾
+發表 發表
+機械系 機械系
+頂多 頂多
+馬占山 馬占山
+叱咤樂壇 叱咤樂壇
+闫怀礼 閆懷禮
+变髒 變髒
+薴烯 薴烯
+后豐 后豐
+于謙 于謙
+詩云 詩云
+鄭凱云 鄭凱云
+云為 云為
+古書云 古書云
+古語云 古語云
+經有云 經有云
+語有云 語有云
+显著标志 顯著標志
+占領 佔領
+采納 採納
+風采 風采
+于樂 于樂
+于軍 于軍
+于堅 于堅
+于帥 于帥
+于濤 于濤
+于贈 于贈
+于會泳 于會泳
+于偉國 于偉國
+于光遠 于光遠
+于鳳至 于鳳至
+于台煙 于台煙
+于國楨 于國楨
+于大寶 于大寶
+于學忠 于學忠
+于小偉 于小偉
+于山國 于山國
+于幼軍 于幼軍
+于廣洲 于廣洲
+于從濂 于從濂
+于志寧 于志寧
+于成龍 于成龍
+于明濤 于明濤
+于根偉 于根偉
+于樹潔 于樹潔
+于正昇 于正昇
+于漢超 于漢超
+于洪區 于洪區
+于湘蘭 于湘蘭
+于蔭霖 于蔭霖
+于遠偉 于遠偉
+于都縣 于都縣
+于震寰 于震寰
+于震環 于震環
+于非闇 于非闇
+于風政 于風政
+于鳳桐 于鳳桐
+于默奧 于默奧
+于爾岑 于爾岑
+于默奧 于默奧
+于貝爾 于貝爾
+于爾根 于爾根
+于雙戈 于雙戈
+于澤爾 于澤爾
+于斯達爾 于斯達爾
+于爾里克 于爾里克
+于奇庫杜克 于奇庫杜克
+于韋斯屈萊 于韋斯屈萊
+于克-蘭多縣 于克-蘭多縣
+于斯納爾斯貝里 于斯納爾斯貝里
+涂澤民 涂澤民
+涂長望 涂長望
+台历 枱曆 \ No newline at end of file
diff --git a/includes/zhtable/trad2simp.manual b/includes/zhtable/trad2simp.manual
index d5bcfa0e..4aed7e1d 100644
--- a/includes/zhtable/trad2simp.manual
+++ b/includes/zhtable/trad2simp.manual
@@ -1,139 +1,143 @@
-U+056a5嚥|U+054bd咽|
-U+0585a塚|U+051a2冢|
-U+05dbd嶽|U+05cb3岳|
-U+04e99亙|U+04e98亘|
-U+081e5臥|U+05367卧|
-U+04f48佈|U+05e03布|
-U+06dd2淒|U+051c4凄|
-U+06de8淨|U+051c0净|
-U+05147兇|U+051f6凶|
-U+04f48佈|U+05e03布|
-U+06c59汙|U+06c61污|
-U+056ae嚮|U+05411向|
-U+09031週|U+05468周|
-U+0904a遊|U+06e38游|
-U+06de9淩|U+051cc凌|
-U+095e2闢|U+08f9f辟|
-U+05bc0寀|U+091c7采|
-U+08518蔘|U+053c2参|
-U+06b05欅|U+06989榉|
-U+07343獃|U+05446呆|
-U+09918餘|U+04f59余|U+09980馀|
-U+09592閒|U+095f2闲|
-U+08b6d譭|U+06bc1毁|
-U+071ec燬|U+06bc1毁|
-U+08457著|U+08457著|U+07740着|
-U+05d11崑|U+06606昆|
-U+06372捲|U+05377卷|
-U+07D2E紮|U+0624E扎|
-U+07C64籤|U+07B7E签|
-U+05925夥|U+04F19伙|
-U+05F46彆|U+0522B别|
-U+09D70鵰|U+096D5雕|U+05F6B彫|
-U+0617E慾|U+06B32欲|
-U+07A1C稜|U+068F1棱|
-U+06A11樑|U+06881梁|
+U+03473㑳|U+03447㑇|
+U+04308䌈|U+26216𦈖|
+U+04A8F䪏|U+293FC𩏼|
+U+04A97䪗|U+29400𩐀|
+U+04A98䪘|U+293FF𩏿|
+U+04AF4䫴|U+29597𩖗|
+U+04B18䬘|U+2966E𩙮|
+U+04B1D䬝|U+2966F𩙯|
+U+04B40䭀|U+29807𩠇|
+U+04B43䭃|U+29808𩠈|
+U+04B7F䭿|U+299ED𩧭|
+U+04B9D䮝|U+299F0𩧰|
+U+04B9E䮞|U+29A01𩨁|
+U+04BA0䮠|U+299FF𩧿|
+U+04BB3䮳|U+29A0F𩨏|
+U+04BBE䮾|U+299EA𩧪|
+U+04C59䱙|U+29F88𩾈|
+U+04C6C䱬|U+29F8A𩾊|
+U+04C70䱰|U+29F8B𩾋|
+U+04C77䱷|U+04CA3䲣|
+U+04CB0䲰|U+2A242𪉂|
+U+04D2C䴬|U+2A388𪎈|
+U+04D34䴴|U+2A38B𪎋|
+U+04E99亙|U+04E98亘|
+U+04F48佈|U+05E03布|
+U+04F48佈|U+05E03布|
U+04F54佔|U+05360占|
U+05016倖|U+05E78幸|
U+050A2傢|U+05BB6家|
U+050F1僱|U+096C7雇|
+U+05138儸|U+03469㑩|U+07F57罗|
+U+05147兇|U+051F6凶|
+U+05277剷|U+094F2铲|
+U+052F3勳|U+052CB勋|
+U+0537D卽|U+05373即|
U+053A4厤|U+05386历|
+U+055AB喫|U+05403吃|
+U+055F0嗰|U+20BB6𠮶|
U+05641噁|U+06076恶|
+U+05690嚐|U+05C1D尝|
+U+056A5嚥|U+054BD咽|
+U+056AE嚮|U+05411向|
U+056CC囌|U+082CF苏|
+U+0585A塚|U+051A2冢|
+U+058B0墰|U+0575B坛|
+U+058DC壜|U+0575B坛|
+U+05925夥|U+04F19伙|
+U+05BC0寀|U+091C7采|
+U+05D11崑|U+06606昆|
U+05D19崙|U+04ED1仑|
+U+05D57嵗|U+05C81岁|
+U+05DBD嶽|U+05CB3岳|
+U+05DD6巖|U+05CA9岩|
+U+05DF9巹|U+0537A卺|
U+05F14弔|U+0540A吊|
+U+05F46彆|U+0522B别|
+U+0617C慼|U+0621A戚|
+U+0617E慾|U+06B32欲|
U+061DE懞|U+08499蒙|
U+062DA拚|U+062FC拼|
+U+06331挱|U+06332挲|
+U+06371捱|U+06328挨|
+U+06372捲|U+05377卷|
U+0647A摺|U+06298折|
+U+065C2旂|U+065D7旗|
+U+065E3旣|U+065E2既|
U+06607昇|U+05347升|
U+0672E朮|U+0672F术|
+U+068CA棊|U+068CB棋|
+U+068E1棡|U+0E82D|
U+069A6榦|U+05E72干|
+U+069D3槓|U+06760杠|
+U+06A11樑|U+06881梁|
+U+06B05欅|U+06989榉|
+U+06B4E歎|U+053F9叹|
+U+06BAD殭|U+050F5僵|
+U+06C59汙|U+06C61污|
+U+06CDD泝|U+06EAF溯|
+U+06D29洩|U+06CC4泄|
+U+06DD2淒|U+051C4凄|
+U+06DE8淨|U+051C0净|
+U+06DE9淩|U+051CC凌|
U+06E67湧|U+06D8C涌|
U+06ED9滙|U+06C47汇|
U+06F90澐|U+06C84沄|
-U+06FDB濛|U+08499蒙|
+U+06FBE澾|U+03CE0㳠|
+U+06FDB濛|U+06FDB濛|U+08499蒙|
U+07030瀰|U+05F25弥|
+U+071EC燬|U+06BC1毁|
+U+07343獃|U+05446呆|
+U+07515甕|U+074EE瓮|
U+07526甦|U+082CF苏|
-U+07575畵|U+0753B画|U+05212划|
U+0756B畫|U+0753B画|U+05212划|
+U+07575畵|U+0753B画|U+05212划|
+U+075E0痠|U+09178酸|
+U+07652癒|U+06108愈|
+U+07661癡|U+075F4痴|
U+076C3盃|U+0676F杯|
U+077AD瞭|U+04E86了|
U+077C7矇|U+08499蒙|
U+07843硃|U+06731朱|
+U+07895碕|U+057FC埼|
+U+07958祘|U+07B97算|
+U+07A1C稜|U+068F1棱|
+U+07B87箇|U+04E2A个|
+U+07C11簑|U+084D1蓑|
+U+07C64籤|U+07B7E签|
U+07C72籲|U+05401吁|
U+07CF0糰|U+056E2团|
+U+07D2E紮|U+0624E扎|
+U+07DB5綵|U+05F69彩|U+0433D䌽|
U+07E34縴|U+07EA4纤|
+U+07E50繐|U+07A57穗|
U+07E94纔|U+0624D才|
+U+07F4E罎|U+0575B坛|
+U+07FA8羨|U+07FA1羡|
+U+08123脣|U+05507唇|
+U+081E5臥|U+05367卧|
+U+08218舘|U+09986馆|
+U+083F4菴|U+05EB5庵|
+U+08457著|U+08457著|U+07740着|
+U+08518蔘|U+053C2参|
U+08591薑|U+059DC姜|
+U+085C9藉|U+085C9藉|U+0501F借|
+U+0880D蠍|U+0874E蝎|
U+0884A衊|U+08511蔑|
+U+08946襆|U+05E5E幞|
+U+08986覆|U+08986覆|U+0590D复|
U+08A17託|U+06258托|U+08BAC讬|
+U+08AEE諮|U+054A8咨|U+08C18谘|
+U+08B6D譭|U+06BC1毁|
U+08B8E讎|U+04EC7仇|
U+08B9A讚|U+08D5E赞|
-U+08FF4迴|U+056DE回|
-U+0955F镟|U+065CB旋|
-U+095A4閤|U+05408合|
-U+0965E陞|U+05347升|
-U+097A6鞦|U+079CB秋|U+097A7鞧|
-U+097C6韆|U+05343千|
-U+09935餵|U+05582喂|
-U+09B28鬨|U+054C4哄|
-U+09EAA麪|U+09762面|
-U+09EAB麫|U+09762面|
-U+09EAF麯|U+066F2曲|
-U+09EF4黴|U+09709霉|
-U+09F15鼕|U+051AC冬|
-U+09F63齣|U+051FA出|
-U+068E1棡|U+0E82D|
U+08C54豔|U+08273艳|
-U+06B4E歎|U+053F9叹|
-U+0938C鎌|U+09570镰|
-U+07515甕|U+074EE瓮|
-U+07652癒|U+06108愈|
-U+069D3槓|U+06760杠|
-U+06D29洩|U+06CC4泄|
-U+09451鑑|U+09274鉴|
-U+08AEE諮|U+054A8咨|U+08C18谘|
-U+052F3勳|U+052CB勋|
-U+06BAD殭|U+050F5僵|
-U+09C47鱇|U+29F8C𩾌|
-U+03473㑳|U+03447㑇|
-U+09E7C鹼|U+078B1碱|U+07877硷|
-U+0962A阪|U+0962A阪|U+05742坂|
-U+0934A鍊|U+070BC炼|U+094FE链|
-U+08986覆|U+08986覆|U+0590D复|
-U+085C9藉|U+085C9藉|U+0501F借|
-U+05138儸|U+03469㑩|U+07F57罗|
-U+06FDB濛|U+06FDB濛|U+08499蒙|
-U+07B87箇|U+04E2A个|
-U+05277剷|U+094F2铲|
-U+05690嚐|U+05C1D尝|
-U+055AB喫|U+05403吃|
-U+07661癡|U+075F4痴|
-U+083F4菴|U+05EB5庵|
-U+07DB5綵|U+05F69彩|U+0433D䌽|
-U+08123脣|U+05507唇|
-U+055F0嗰|U+20BB6𠮶|
-U+04A8F䪏|U+293FC𩏼|
-U+04A97䪗|U+29400𩐀|
-U+04A98䪘|U+293FF𩏿|
-U+04AF4䫴|U+29597𩖗|
-U+04B18䬘|U+2966E𩙮|
-U+04B1D䬝|U+2966F𩙯|
-U+04B40䭀|U+29807𩠇|
-U+04B43䭃|U+29808𩠈|
-U+04B7F䭿|U+299ED𩧭|
-U+04B9D䮝|U+299F0𩧰|
-U+04B9E䮞|U+29A01𩨁|
-U+04BA0䮠|U+299FF𩧿|
-U+04BB3䮳|U+29A0F𩨏|
-U+04BBE䮾|U+299EA𩧪|
-U+04C59䱙|U+29F88𩾈|
-U+04C6C䱬|U+29F8A𩾊|
-U+04C70䱰|U+29F8B𩾋|
-U+04C77䱷|U+04CA3䲣|
-U+04CB0䲰|U+2A242𪉂|
-U+04D2C䴬|U+2A388𪎈|
-U+04D34䴴|U+2A38B𪎋|
+U+08FF4迴|U+056DE回|
+U+09031週|U+05468周|
+U+0904A遊|U+06E38游|
+U+09061遡|U+06EAF溯|
+U+091A3醣|U+07CD6糖|
+U+091AF醯|U+09170酰|
U+091F3釳|U+28C3F𨰿|
U+091FE釾|U+0497A䥺|
U+0920B鈋|U+28C42𨱂|
@@ -145,23 +149,40 @@ U+092B6銶|U+28C47𨱇|
U+092C9鋉|U+28C48𨱈|
U+09302錂|U+28C4B𨱋|
U+09344鍄|U+28C49𨱉|
+U+0934A鍊|U+070BC炼|U+094FE链|
U+0936E鍮|U+28C4E𨱎|
+U+0938C鎌|U+09570镰|
U+0939D鎝|U+28C4F𨱏|
+U+093AD鎭|U+093AE镇|
U+093AF鎯|U+28C4D𨱍|
U+093B7鎷|U+28C3E𨰾|
U+093C6鏆|U+28C4C𨱌|
U+093C9鏉|U+28C52𨱒|
+U+093DA鏚|U+0621A戚|
U+093FA鏺|U+0497D䥽|
U+0940E鐎|U+28C53𨱓|
U+0940F鐏|U+28C54𨱔|
U+09425鐥|U+04985䦅|
U+0942F鐯|U+04983䦃|
+U+09451鑑|U+09274鉴|
+U+0955F镟|U+065CB旋|
U+0958D閍|U+28E02𨸂|
U+09590閐|U+28E03𨸃|
+U+09592閒|U+095F2闲|
+U+095A4閤|U+05408合|
+U+095E2闢|U+08F9F辟|
+U+0962A阪|U+0962A阪|U+05742坂|
+U+0965E陞|U+05347升|
+U+097A6鞦|U+079CB秋|U+097A7鞧|
+U+097C6韆|U+05343千|
+U+097DD韝|U+097B2鞲|
U+09843顃|U+29596𩖖|
U+098B0颰|U+29665𩙥|
U+098B7颷|U+2966A𩙪|
U+098BE颾|U+2966B𩙫|
+U+098F1飱|U+098E7飧|
+U+09918餘|U+04F59余|U+09980馀|
+U+09935餵|U+05582喂|
U+09938餸|U+2980C𩠌|
U+099CE駎|U+299E8𩧨|
U+099DA駚|U+299EB𩧫|
@@ -174,6 +195,7 @@ U+09A1D騝|U+29A03𩨃|
U+09A1F騟|U+29A08𩨈|
U+09A2A騪|U+29A04𩨄|
U+09A4B驋|U+299EF𩧯|
+U+09B28鬨|U+054C4哄|
U+09B65魥|U+29F79𩽹|
U+09B95鮕|U+29F80𩾀|
U+09B9F鮟|U+29F7E𩽾|
@@ -186,15 +208,28 @@ U+09C06鰆|U+04CA0䲠|
U+09C0C鰌|U+04CA1䲡|
U+09C27鰧|U+04CA2䲢|
U+09C47鱇|U+29F8C𩾌|
+U+09C47鱇|U+29F8C𩾌|
U+09CFC鳼|U+2A243𪉃|
U+09D1C鴜|U+2A248𪉈|
U+09D32鴲|U+2A246𪉆|
U+09D5A鵚|U+2A24D𪉍|
+U+09D70鵰|U+096D5雕|U+05F6B彫|
U+09DD4鷔|U+2A251𪉑|
U+09DE8鷨|U+2A24A𪉊|
+U+09E7C鹼|U+078B1碱|U+07877硷|
U+09EA8麨|U+2A38A𪎊|
+U+09EAA麪|U+09762面|
+U+09EAB麫|U+09762面|
+U+09EAF麯|U+066F2曲|
U+09EB2麲|U+2A389𪎉|
U+09EB3麳|U+2A38C𪎌|
+U+09EB4麴|U+066F2曲|U+09EB4麴|
+U+09EF4黴|U+09709霉|
+U+09F15鼕|U+051AC冬|
+U+09F47齇|U+09F44齄|
+U+09F63齣|U+051FA出|
+U+21ED5𡻕|U+05C81岁|
+U+26A99𦪙|U+0447D䑽|
U+2895B𨥛|U+28C40𨱀|
U+289F1𨧱|U+28C4A𨱊|
U+28AD2𨫒|U+28C50𨱐|
@@ -250,30 +285,4 @@ U+2A106𪄆|U+2A254𪉔|
U+2A115𪄕|U+2A252𪉒|
U+2A1F3𪇳|U+2A255𪉕|
U+2A600𪘀|U+2A68F𪚏|
-U+2A62F𪘯|U+2A690𪚐|
-U+0617C慼|U+0621A戚|
-U+093DA鏚|U+0621A戚|
-U+07895碕|U+057FC埼|
-U+068CA棊|U+068CB棋|
-U+065C2旂|U+065D7旗|
-U+06371捱|U+06328挨|
-U+09061遡|U+06EAF溯|
-U+06CDD泝|U+06EAF溯|
-U+075E0痠|U+09178酸|
-U+07958祘|U+07B97算|
-U+05D57嵗|U+05C81岁|
-U+21ED5𡻕|U+05C81岁|
-U+07E50繐|U+07A57穗|
-U+098F1飱|U+098E7飧|
-U+06331挱|U+06332挲|
-U+07C11簑|U+084D1蓑|
-U+04308䌈|U+26216𦈖|
-U+06FBE澾|U+03CE0㳠|
-U+26A99𦪙|U+0447D䑽|
-U+07F4E罎|U+0575B坛|
-U+058DC壜|U+0575B坛|
-U+058B0墰|U+0575B坛|
-U+091A3醣|U+07CD6糖|
-U+0537D卽|U+05373即|
-U+065E3旣|U+065E2既|
-U+09EB4麴|U+066F2曲|U+09EB4麴| \ No newline at end of file
+U+2A62F𪘯|U+2A690𪚐| \ No newline at end of file
diff --git a/includes/zhtable/tradphrases.manual b/includes/zhtable/tradphrases.manual
index 4e9f7498..f3a95335 100644
--- a/includes/zhtable/tradphrases.manual
+++ b/includes/zhtable/tradphrases.manual
@@ -34,9 +34,9 @@
千隻
萬隻
億隻
-多只是
-多只需
-最多只
+最多
+至多
+頂多
多隻
0多隻
0多隻
@@ -46,6 +46,30 @@
千多隻
萬多隻
億多隻
+多只能
+多只可
+多只在
+多只有
+多只是
+多只需
+多只會
+大只能
+大只可
+大只在
+大只有
+大只是
+大只需
+大只會
+小只能
+小只可
+小只在
+小只有
+小只是
+小只需
+小只會
+隻身
+形單影隻
+首隻
數天後
幾天後
多天後
@@ -224,8 +248,6 @@
別著
刮著
千絲萬縷
-參与
-參与者
參合
參考價值
參與
@@ -266,7 +288,6 @@
斗轉參橫
旋繞著
板著臉
-標志著
正當著
沈著
沖著
@@ -340,10 +361,15 @@
雞絲麵
面朝著
面臨著
-顯著標志
颳著
髮絲
斷髮
+不斷發
+判斷發
+評斷發
+買斷發
+賣斷發
+打斷發
披頭散髮
髮禁
鬥著
@@ -375,6 +401,11 @@
錶帶
錶針
錶蒙子
+袋錶
+腕錶
+碼錶
+錶冠
+魔錶
彆口氣
彆強
皺彆
@@ -487,6 +518,7 @@
官地為寀
寮寀
蔘綏
+個人# “個人參數”不是“個人蔘數”
人蔘
蕭蔘
人參與
@@ -691,6 +723,17 @@
霽範
鴻範
沒樣範
+錢範
+銅範
+金範
+範金
+垂範
+範性形變
+範字
+有事之無範
+置言成範
+吾爲之範我馳驅
+天地為範
丰采
丰標不凡
丰神
@@ -710,6 +753,7 @@
複函數
複流
反複製
+複對數
顛覆
答覆
覆沒
@@ -835,6 +879,8 @@
西歷史
國歷史
國歷代
+國歷任
+國歷屆
新歷史
夏歷史
百花曆
@@ -877,6 +923,10 @@
儒略改革曆
希伯來曆
格里曆
+格里高利曆
+共和曆
+掛曆
+共和歷史
厤物之意
爰定祥厤
白黴
@@ -1043,6 +1093,10 @@
上簽字
上簽收
上簽寫
+下簽名
+下簽字
+下簽收
+下簽寫
犖确
磽确
确瘠
@@ -1071,6 +1125,7 @@
兀朮
白朮
蒼朮
+赤朮
朮赤
髼鬆
皮鬆
@@ -1085,6 +1140,8 @@
鬆寬
鬆氣
鬆一口氣
+鬆元音
+鬆喉
囉囉囌囌
囉囌
骨罈
@@ -1184,11 +1241,9 @@
松山庄
厂部
閤府
-分佈
佈道
剪綵
衝量
-韶山衝
衝車
書獃子
相干
@@ -1273,6 +1328,8 @@
杰特
李連杰
周杰倫
+杰倫
+姜文杰
稜鏡
稜角
稜台
@@ -1451,7 +1508,7 @@
於國
於潛縣
於焉
-於征
+於徵
離於
於畢
麗於
@@ -1740,6 +1797,7 @@
佔後
佔著
佔山
+馬占山
佔比
佔停車
佔哺乳
@@ -1807,11 +1865,14 @@
碰鐘
鳴鐘
晨鐘
+鐘體
飯後鐘
盜鐘
-當一天和尚撞一天鐘
+一天鐘
+撞鐘
殿鐘自鳴
天文鐘
+天文學鐘
洛鐘東應
亮鐘
郘鐘
@@ -1822,12 +1883,11 @@
擊鐘
警世鐘
竊鐘掩耳
-潛水鐘
琴鐘
見鐘不打
釁鐘
朝鐘
-撞木鐘
+木鐘
鐘不扣不鳴
鐘鳴
鐘塔
@@ -1837,7 +1897,7 @@
鐘形蟲
鐘乳洞
鐘乳石
-鐘在寺里
+鐘在寺裡
詩鐘
懸鐘
山崩鐘應
@@ -1845,13 +1905,230 @@
宗周鐘
塞耳盜鐘
二缶鐘惑
-一口鐘
+口鐘
+鐘的
+的鐘
+這鐘
叩鐘
音聲如鐘
應鐘
原子鐘
泳氣鐘
電子鐘
+電子鐘錶
+石英鐘錶
+石英鐘
+鐘錶王
+鐘律
+看鐘
+看錶
+看表面
+鐵鐘
+看下鐘
+看下錶
+瞅下鐘
+瞅下錶
+拿下鐘
+拿下錶
+鐘不敲不響
+對準鐘
+對準鐘錶
+對準錶
+鐘錶快
+鐘快
+錶快
+鐘錶慢
+鐘慢
+錶慢
+響鐘
+鐘敲
+大本鐘敲
+大笨鐘敲
+世紀鐘錶
+世紀鐘
+錶王
+鐘王
+鐘錶
+古鐘
+古鐘錶
+鐘面
+鐘表面
+南京鐘
+南京鐘錶
+造鐘錶
+造鐘
+九龍表行
+鐘錶行
+鐘行
+錶行
+小型鐘表面
+小型鐘面
+小型鐘錶
+小型鐘
+中型鐘表面
+中型鐘面
+中型鐘錶
+中型鐘
+大型鐘表面
+大型鐘面
+大型鐘錶
+大型鐘
+鐘匠
+深山何處鐘
+下課鐘
+上課鐘
+老爺鐘
+萬年曆錶
+個鐘
+個鐘錶
+喜歡鐘
+喜歡鐘錶
+喜歡錶
+大鐘
+佛鐘
+鐘壁
+鐘腰
+鐘口
+鐘身
+鐘模
+鐘頂
+鐘紐
+鐘座
+他鐘
+寺鐘
+座鐘
+盜鐘
+大笨鐘
+大本鐘
+鐘錶歷史
+錶的歷史
+鐘錶的歷史
+點多鐘
+點半鐘
+分多鐘
+刻多鐘
+分半鐘
+刻半鐘
+教學鐘
+操作鐘
+南屏晚鐘
+敲鐘
+瞧著鐘
+瞧著鐘錶
+瞧著錶
+警報鐘
+猶如鐘
+猶如鐘錶
+猶如錶
+舊鐘錶
+繁鐘
+四面鐘
+更鐘
+警示鐘
+鐘差
+任何鐘錶
+任何鐘
+任何錶
+選手表現
+選手表達
+選手表示
+選手表明
+選手表決
+分子鐘
+飛行鐘
+鐘罩
+主鐘差
+花鐘
+磬鐘
+主鐘曲線
+鐘速
+紅鐘
+各類鐘
+打著鐘
+鐘意
+衛星鐘
+該鐘
+錶轉
+鐘調
+調鐘錶
+調錶
+原鐘
+鐘錶速
+件鐘
+鐘發音
+逆鐘
+拂鐘無聲
+鐘不空則啞
+看著鐘錶
+看著鐘
+看著錶
+晚鐘
+潛水鐘錶
+潛水鐘
+潛水錶
+樂器鐘
+鐘左右
+埋頭尋鐘錶
+埋頭尋鐘
+埋頭尋錶
+鐘陳列
+驚鐘
+望著鐘錶
+望著鐘
+望著錶
+鐘錶停
+鐘停
+銫鐘
+數字鐘錶
+數字鐘
+數字錶
+顯示鐘錶
+顯示鐘
+顯示錶
+坐如鐘
+錶停
+西周鐘
+東周鐘
+錶速
+機械鐘錶
+機械鐘
+機械錶
+之鐘
+鐘形
+架鐘
+順鐘向
+逆鐘向
+遺傳鐘
+鬧錶
+華嚴鐘
+懷鐘
+生物鐘
+鐘錶的
+錶的嘀嗒
+的鐘錶
+嘀嗒的錶
+鐘好
+鐘太
+鐘不
+鐘有
+鐘盤
+鐘錶盤
+鐘沒
+鐘被
+制鐘
+布穀鳥鐘
+咕咕鐘
+拉克施爾德鐘
+鐘上
+鐘下
+摸鐘
+舊鐘
+舊錶
+台鐘
+鐘響
+叩鐘
+計時錶
+防水錶
射鵰
神鵰
神雕像
@@ -1859,7 +2136,6 @@
采石之戰
采石之役
聊齋志異
-不斷發
部落發
角落發
村落發
@@ -1883,7 +2159,6 @@
林郁方
讚歌
編餘
-三餘
餘墨
唾餘
餘韻
@@ -1977,6 +2252,42 @@
剩餘
餘生
有餘
+一餘
+二餘
+兩餘
+三餘
+四餘
+五餘
+六餘
+七餘
+八餘
+九餘
+十餘
+百餘
+千餘
+萬餘
+億餘
+兆餘
+0餘
+1餘
+2餘
+3餘
+4餘
+5餘
+6餘
+7餘
+8餘
+9餘
+0餘
+1餘
+2餘
+3餘
+4餘
+5餘
+6餘
+7餘
+8餘
+9餘
余光生
余光中
崑山
@@ -2079,7 +2390,6 @@
青蠅弔客
慶弔
形影相弔
-上弔
哀弔
一弔
唁弔
@@ -2163,8 +2473,12 @@
現於
較於
於之
-分佈於
+分布於
分散於
+優於
+早於
+晚於
+感於
鬼谷子
于美人
緊緻
@@ -2252,6 +2566,8 @@
困鬥
好勇鬥狠
爭奇鬥豔
+使其鬥
+鬥地主
石樑
木樑
藏歷史
@@ -2299,7 +2615,6 @@
餘8
餘9
餘0
-0餘
餘1
餘2
餘3
@@ -2310,7 +2625,6 @@
餘8
餘9
餘0
-0餘
餘數
其餘
尸居餘氣
@@ -2334,6 +2648,7 @@
病余
餘俗
餘倍
+同餘
大讚
唄讚
褒讚
@@ -2385,6 +2700,10 @@
三徵七辟
額徵
有徵
+有征服
+有征戰
+有征伐
+有征討
無徵不信
文徵明
徵跡
@@ -2458,12 +2777,17 @@
請君入甕
甕安
痊癒
+治癒
+病癒
+大病初癒
+癒合
槓桿
宣洩
圖鑑
諮詢
勳章
張勳
+趙治勳
殭屍
有栖川
兇惡
@@ -2485,7 +2809,6 @@
凝鍊
鍊貧
鍊度
-鍊金
鍊形
鍊師
鍊石
@@ -2496,6 +2819,7 @@
闖鍊
鍊汞
淬鍊
+鋼之鍊金術師
索馬里
范登堡
世田谷
@@ -2577,7 +2901,6 @@
齣子
齣兒
賣獃
-痴獃
發獃
大獃
獃獃
@@ -2611,28 +2934,54 @@
撲鼕鼕
普鼕鼕
鼕鼕鼓
+令人髮指
+開發
+剪其髮
+吐哺捉髮
+吐哺握髮
+含齒戴髮
+大金髮苔
+寸髮千金
+心長髮短
+戴髮含齒
+拔髮
+拔鬚
+揪髮
+揪鬚
+整髮用品
+斷髮文身
+滿頭洋髮
+燙一個髮
+燙一次髮
+燙個髮
+燙完髮
+燙次髮
+理一個髮
+理一次髮
+理個髮
+理完髮
+理次髮
+細如髮
+繫於一髮
+膚髮
+華髮
+蒼髮
+被髮佯狂
被髮入山
被髮左衽
-被髮佯狂
-被髮陽狂
被髮纓冠
+被髮陽狂
+身體髮膚
+髒髮
髮光可鑑
-髮際
+髮已霜白
髮油
+髮為血之本
髮網
髮踊沖冠
-大金髮苔
-戴髮含齒
-斷髮文身
-吐哺捉髮
-吐哺握髮
-令人髮指
-含齒戴髮
-華髮
+髮際
黃髮
-心長髮短
齒落髮白
-身體髮膚
剷頭
剷刈
口燥唇乾
@@ -2983,6 +3332,7 @@
蜡月
蜡祭
言云
+宜云
貴价
郁郁菲菲
馬杆
@@ -3000,4 +3350,552 @@
麴院
鼠麴草
不乾不淨
-生發生 \ No newline at end of file
+生發生
+必須
+須根據
+·范
+、剋制
+,剋制
+。剋制
+!剋制
+?剋制
+;剋制
+:剋制
+不剋制
+也剋制
+了剋制
+他剋制
+們剋制
+剋制不了
+剋制不住
+力剋制
+力求剋制
+可以剋制
+和剋制
+在剋制
+地剋制
+夠剋制
+她剋制
+你剋制
+您剋制
+就剋制
+彼此剋制
+得剋制
+快剋制
+想剋制
+意剋制
+應剋制
+我剋制
+才剋制
+於剋制
+易剋制
+無法剋制
+的剋制
+盡量剋制
+而剋制
+能剋制
+與剋制
+著剋制
+要剋制
+軍隊剋制
+空投佈雷
+火箭佈雷
+海灣佈雷
+空中佈雷
+海上佈雷
+佈雷的
+佈雷,
+佈雷、
+佈雷。
+佈雷;
+佈雷艦
+佈雷艇
+佈雷速度
+佈雷封鎖
+滿拚自盡
+拚生盡死
+拚卻
+拚老命
+拚絕
+成於思
+單單於
+積澱
+澱積
+澱北片
+澱解物
+澱謂之滓
+淺澱
+堙澱
+茂都澱
+並曰入澱
+澱乃不耕之地
+藍澱
+皆可作澱
+澱山
+澱澱
+掛鈎
+薴悴
+絡腮鬍
+落腮鬍
+山羊鬍
+幸運鬍
+刮鬍
+剃鬍
+吹鬍
+蓄鬍
+白鬍
+長鬍
+鬍髯
+髯鬍
+髭鬍
+鬚鬍
+范文瀾
+范文同
+范文正公
+范文程
+范文芳
+范文藤
+范文虎
+范文照
+發表
+乾重
+若干
+鈎心鬥角
+若干
+乾重
+全面包圍
+全面包裹
+機械系
+體系
+心理
+複分解
+鹰鵰
+叱咤903
+叱咤MY903
+叱咤My903
+叱咤樂壇
+叱咤咤
+叱咤叱咤叱咤咤
+叱咤叱叱咤
+正在叱咤
+空餘
+變髒
+天地志狼
+薴烯
+阿斯圖里亞斯
+雙折射
+心繫家
+心繫國
+心繫祖
+心繫北
+心繫京
+心繫南
+心繫西
+心繫東
+心繫四
+心繫川
+心繫浙
+心繫汶
+心繫廣
+心繫湖
+心繫山
+心繫台
+心繫江
+心繫昌
+心繫香
+心繫澳
+心繫港
+心繫泰
+心繫健
+心繫天
+心繫地
+心繫大
+心繫小
+心繫全
+心繫眾
+心繫奧
+心繫世
+心繫中
+心繫高
+心繫災
+心繫非
+心繫群
+心繫新
+心繫沈
+心繫唐
+心繫黃
+心繫乔
+心繫阮
+心繫父
+心繫母
+心繫病
+心繫故
+心繫哪
+心繫中
+心繫英
+心繫美
+心繫日
+心繫德
+心繫功
+心繫曉
+心繫神
+心繫萬
+心繫的
+心繫在
+心繫兩
+心繫社
+心繫曼
+心繫彼
+心繫風
+心繫募
+心繫一
+心繫何
+心繫困
+心繫輸
+心繫人
+心繫民
+心繫十
+心繫百
+心繫千
+心繫和
+心繫選
+心繫囑
+心繫我
+心繫你
+心繫您
+心繫他
+心繫她
+心繫它
+心繫伊
+心繫長
+心繫舞
+心繫蘭
+心繫五
+心繫生
+心繫婦
+心繫幼
+心繫茶
+心繫動
+心繫沙
+心繫林
+心繫摩
+心繫农
+心繫慈
+心繫麥
+心繫貧
+心繫富
+心繫遠
+心繫近
+心繫宣
+心繫傳
+心繫紅
+心繫老
+心繫重
+心繫震
+心繫妻
+心繫夫
+心繫女
+心繫子
+心繫著
+重回
+挑大樑
+扛大樑
+后豐
+製得
+限制
+控制
+製取
+第四出局
+心臟
+肝臟
+脾臟
+肺臟
+腎臟
+參與
+浮誇
+星巴克
+于謙
+于寘
+淳于
+于禁
+于敏中
+註:# 不作“注:”
+呆呆獸
+劃為# 不作“划為”
+併為一體
+併為一家
+一個# 避免“個裡”的錯誤
+兩個
+二個
+三個
+四個
+五個
+六個
+七個
+八個
+九個
+十個
+百個
+千個
+萬個
+億個
+兆個
+零個
+云:# 不作“雲:”
+電子表格
+雪裡紅
+雪裡蕻
+森林裡
+日子裡
+故事裡
+領域裡
+時間裡
+深淵裡
+醫院裡
+春假裡
+暑假裡
+秋假裡
+寒假裡
+春天裡
+夏天裡
+秋天裡
+冬天裡
+春日裡
+夏日裡
+秋日裡
+冬日裡
+嘴裡
+心裡
+皮裡陽秋
+肚裡
+苦裡
+裡勾外連
+裡面
+這裡
+中文裡
+山洞裡
+世界裡
+眼睛裡
+首發
+夸脫
+誰幹的
+鐘螺
+風采
+代碼表
+編碼表
+字碼表
+電碼表
+科斗
+佔領
+灕水
+點裡
+這只是
+葉叶琹
+胡子昂
+包括
+特别致
+分别致
+會上簽訂
+會上簽署
+周一 # (及以下)避免“周一齣版”的錯誤
+周二
+周三
+周四
+周五
+周六
+韶山沖
+總裁制
+于丹
+于樂
+于冕
+于軍
+于吉
+于堅
+于姓
+于娜
+于娟
+于山
+于帥
+于慧
+于振
+于敏
+于斌
+于晴
+于波
+于濤
+于衡
+于贈
+于越
+于靖
+于勒
+于格
+于仁泰
+于會泳
+于偉國
+于佳卉
+于光遠
+于克勒
+于凌奎
+于鳳至
+于化虎
+于占元
+于台煙
+于品海
+于國楨
+于大寶
+于天仁
+于子千
+于孔兼
+于學忠
+于家堡
+于小偉
+于小彤
+于山國
+于幼軍
+于廣洲
+于康震
+于式枚
+于從濂
+于德海
+于志寧
+于慎行
+于成龍
+于振武
+于明濤
+于是之
+于晨楠
+于根偉
+于樹潔
+于欣源
+于正昇
+于正昌
+于永波
+于漢超
+于江震
+于洪區
+于浩威
+于海洋
+于湘蘭
+于特森
+于玉立
+于秀敏
+于素秋
+于若木
+于蔭霖
+于西翰
+于遠偉
+于道泉
+于都縣
+于震寰
+于震環
+于非闇
+于風政
+于鳳桐
+于默奧
+于家堡
+于爾岑
+于默奧
+于貝爾
+于爾根
+于雙戈
+于里察
+于澤爾
+于斯塔德
+于斯達爾
+于爾里克
+于奇庫杜克
+于韋斯屈萊
+于克-蘭多縣
+于斯納爾斯貝里
+涂坤
+涂天相
+涂序瑄
+涂澤民
+涂紹煃
+涂羽卿
+涂逢年
+涂長望
+總裁制
+故云
+強制作用
+鬱南
+西米谷
+一出生
+二出生
+三出生
+四出生
+五出生
+六出生
+七出生
+八出生
+九出生
+十出生
+一出版
+二出版
+三出版
+四出版
+五出版
+六出版
+七出版
+八出版
+九出版
+十出版
+一出刊
+二出刊
+三出刊
+四出刊
+五出刊
+六出刊
+七出刊
+八出刊
+九出刊
+十出刊
+一出逃
+二出逃
+三出逃
+四出逃
+五出逃
+六出逃
+七出逃
+八出逃
+九出逃
+十出逃
+一出口
+二出口
+三出口
+四出口
+五出口
+六出口
+七出口
+八出口
+九出口
+十出口
+一出祁山
+二出祁山
+三出祁山
+四出祁山
+五出祁山
+六出祁山
+七出祁山
+八出祁山
+九出祁山
+十出祁山
+鬱林
+饑荒
+免徵
+亞美尼亞曆
+百科裡
+歷史裡
+戲裡
+作品裡
+專輯裡
+年代裡
+棺材裡
+注釋
+月面
+修杰楷
+學裡
+獄裡
+館裡
+系列裡
+村子裡
diff --git a/includes/zhtable/tradphrases_exclude.manual b/includes/zhtable/tradphrases_exclude.manual
index 9dadb6f7..5fec98b2 100644
--- a/includes/zhtable/tradphrases_exclude.manual
+++ b/includes/zhtable/tradphrases_exclude.manual
@@ -105,6 +105,7 @@
鬆毛蟲
鬆節油
濕地鬆
+尼克鬆
紮伊爾
阿布紮比
阿紮尼亞
@@ -143,6 +144,7 @@
彆腳
併力
併列
+併為
豐富多採
採採
尼採
@@ -266,4 +268,53 @@
朝乾夕惕
大曲酒
-神麴 \ No newline at end of file
+神麴
+便于
+偏于
+勇于
+居于
+常見于
+強加于
+從事于
+忙于
+敢于
+服務于
+服從于
+樂于
+歸罪于
+歸諸于
+活動于
+瀕于
+苦于
+莫過于
+處于
+適于
+乾和
+鉤
+高陞
+大胆
+託福
+繫系
+酰
+醯
+大樑
+光採
+鍾錶
+複原
+參与
+浮夸
+剋日
+羡
+旅游
+穀風
+復讎
+避暑山庄
+遊牧
+烟草
+征
+占領
+入夥
+懸挂
+註釋
+浮遊
+冶鍊
diff --git a/index.php b/index.php
index 1aa59b70..b413533e 100644
--- a/index.php
+++ b/index.php
@@ -13,7 +13,7 @@
*
* ----------
*
- * Copyright (C) 2001-2009 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
+ * Copyright (C) 2001-2010 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
* Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason,
* Niklas Laxström, Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor,
* Aaron Schulz and others.
@@ -57,8 +57,9 @@ if( !is_null( $maxLag ) && !$mediaWiki->checkMaxLag( $maxLag ) ) {
$action = $wgRequest->getVal( 'action', 'view' );
$title = $wgRequest->getVal( 'title' );
+# Set title from request parameters
$wgTitle = $mediaWiki->checkInitialQueries( $title, $action );
-if( $wgTitle === NULL ) {
+if( $wgTitle === null ) {
unset( $wgTitle );
}
@@ -113,7 +114,7 @@ $mediaWiki->setVal( 'SquidMaxage', $wgSquidMaxage );
$mediaWiki->setVal( 'UseExternalEditor', $wgUseExternalEditor );
$mediaWiki->setVal( 'UsePathInfo', $wgUsePathInfo );
-$mediaWiki->initialize( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );
+$mediaWiki->performRequestForTitle( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );
$mediaWiki->finalCleanup( $wgDeferredUpdateList, $wgOut );
# Not sure when $wgPostCommitUpdateList gets set, so I keep this separate from finalCleanup
diff --git a/languages/Language.php b/languages/Language.php
index 8853aced..343ac8a7 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -34,11 +34,13 @@ if( function_exists( 'mb_strtoupper' ) ) {
*/
class FakeConverter {
var $mLang;
- function FakeConverter($langobj) {$this->mLang = $langobj;}
- function convert($t, $i) {return $t;}
- function parserConvert($t, $p) {return $t;}
+ function FakeConverter( $langobj ) { $this->mLang = $langobj; }
+ function autoConvertToAllVariants( $text ) { return $text; }
+ function convert( $t ) { return $t; }
+ function convertTitle( $t ) { return $t->getPrefixedText(); }
function getVariants() { return array( $this->mLang->getCode() ); }
- function getPreferredVariant() {return $this->mLang->getCode(); }
+ function getPreferredVariant() { return $this->mLang->getCode(); }
+ function getConvRuleTitle() { return false; }
function findVariantLink(&$l, &$n, $ignoreOtherCond = false) {}
function getExtraHashOptions() {return '';}
function getParsedTitle() {return '';}
@@ -56,24 +58,16 @@ class Language {
var $mConverter, $mVariants, $mCode, $mLoaded = false;
var $mMagicExtensions = array(), $mMagicHookDone = false;
- static public $mLocalisationKeys = array(
- 'fallback', 'namespaceNames', 'mathNames', 'bookstoreList',
- 'magicWords', 'messages', 'rtl', 'digitTransformTable',
- 'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension',
- 'defaultUserOptionOverrides', 'linkTrail', 'namespaceAliases',
- 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
- 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
- 'imageFiles'
- );
-
- static public $mMergeableMapKeys = array( 'messages', 'namespaceNames', 'mathNames',
- 'dateFormats', 'defaultUserOptionOverrides', 'magicWords', 'imageFiles' );
-
- static public $mMergeableListKeys = array( 'extraUserToggles' );
+ var $mNamespaceIds, $namespaceNames, $namespaceAliases;
+ var $dateFormatStrings = array();
+ var $mExtendedSpecialPageAliases;
- static public $mMergeableAliasListKeys = array( 'specialPageAliases' );
+ /**
+ * ReplacementArray object caches
+ */
+ var $transformData = array();
- static public $mLocalisationCache = array();
+ static public $dataCache;
static public $mLangObjCache = array();
static public $mWeekdayMsgs = array(
@@ -122,7 +116,7 @@ class Language {
'hebrew-calendar-m10-gen', 'hebrew-calendar-m11-gen', 'hebrew-calendar-m12-gen',
'hebrew-calendar-m6a-gen', 'hebrew-calendar-m6b-gen'
);
-
+
static public $mHijriCalendarMonthMsgs = array(
'hijri-calendar-m1', 'hijri-calendar-m2', 'hijri-calendar-m3',
'hijri-calendar-m4', 'hijri-calendar-m5', 'hijri-calendar-m6',
@@ -165,7 +159,7 @@ class Language {
if ( $recursionLevel > 5 ) {
throw new MWException( "Language fallback loop detected when creating class $class\n" );
- }
+ }
if( ! class_exists( $class ) ) {
$fallback = Language::getFallbackFor( $code );
@@ -179,6 +173,18 @@ class Language {
return $lang;
}
+ /**
+ * Get the LocalisationCache instance
+ */
+ public static function getLocalisationCache() {
+ if ( is_null( self::$dataCache ) ) {
+ global $wgLocalisationCacheConf;
+ $class = $wgLocalisationCacheConf['class'];
+ self::$dataCache = new $class( $wgLocalisationCacheConf );
+ }
+ return self::$dataCache;
+ }
+
function __construct() {
$this->mConverter = new FakeConverter($this);
// Set the code to the name of the descendant
@@ -187,6 +193,7 @@ class Language {
} else {
$this->mCode = str_replace( '_', '-', strtolower( substr( get_class( $this ), 8 ) ) );
}
+ self::getLocalisationCache();
}
/**
@@ -214,7 +221,11 @@ class Language {
}
function getFallbackLanguageCode() {
- return self::getFallbackFor( $this->mCode );
+ if ( $this->mCode === 'en' ) {
+ return false;
+ } else {
+ return self::$dataCache->getItem( $this->mCode, 'fallback' );
+ }
}
/**
@@ -222,15 +233,34 @@ class Language {
* @return array
*/
function getBookstoreList() {
- $this->load();
- return $this->bookstoreList;
+ return self::$dataCache->getItem( $this->mCode, 'bookstoreList' );
}
/**
* @return array
*/
function getNamespaces() {
- $this->load();
+ if ( is_null( $this->namespaceNames ) ) {
+ global $wgExtraNamespaces, $wgMetaNamespace, $wgMetaNamespaceTalk;
+
+ $this->namespaceNames = self::$dataCache->getItem( $this->mCode, 'namespaceNames' );
+ if ( $wgExtraNamespaces ) {
+ $this->namespaceNames = $wgExtraNamespaces + $this->namespaceNames;
+ }
+
+ $this->namespaceNames[NS_PROJECT] = $wgMetaNamespace;
+ if ( $wgMetaNamespaceTalk ) {
+ $this->namespaceNames[NS_PROJECT_TALK] = $wgMetaNamespaceTalk;
+ } else {
+ $talk = $this->namespaceNames[NS_PROJECT_TALK];
+ $this->namespaceNames[NS_PROJECT_TALK] =
+ $this->fixVariableInNamespace( $talk );
+ }
+
+ # The above mixing may leave namespaces out of canonical order.
+ # Re-order by namespace ID number...
+ ksort( $this->namespaceNames );
+ }
return $this->namespaceNames;
}
@@ -286,11 +316,54 @@ class Language {
* @return mixed An integer if $text is a valid value otherwise false
*/
function getLocalNsIndex( $text ) {
- $this->load();
$lctext = $this->lc($text);
- return isset( $this->mNamespaceIds[$lctext] ) ? $this->mNamespaceIds[$lctext] : false;
+ $ids = $this->getNamespaceIds();
+ return isset( $ids[$lctext] ) ? $ids[$lctext] : false;
+ }
+
+ function getNamespaceAliases() {
+ if ( is_null( $this->namespaceAliases ) ) {
+ $aliases = self::$dataCache->getItem( $this->mCode, 'namespaceAliases' );
+ if ( !$aliases ) {
+ $aliases = array();
+ } else {
+ foreach ( $aliases as $name => $index ) {
+ if ( $index === NS_PROJECT_TALK ) {
+ unset( $aliases[$name] );
+ $name = $this->fixVariableInNamespace( $name );
+ $aliases[$name] = $index;
+ }
+ }
+ }
+ $this->namespaceAliases = $aliases;
+ }
+ return $this->namespaceAliases;
+ }
+
+ function getNamespaceIds() {
+ if ( is_null( $this->mNamespaceIds ) ) {
+ global $wgNamespaceAliases;
+ # Put namespace names and aliases into a hashtable.
+ # If this is too slow, then we should arrange it so that it is done
+ # before caching. The catch is that at pre-cache time, the above
+ # class-specific fixup hasn't been done.
+ $this->mNamespaceIds = array();
+ foreach ( $this->getNamespaces() as $index => $name ) {
+ $this->mNamespaceIds[$this->lc($name)] = $index;
+ }
+ foreach ( $this->getNamespaceAliases() as $name => $index ) {
+ $this->mNamespaceIds[$this->lc($name)] = $index;
+ }
+ if ( $wgNamespaceAliases ) {
+ foreach ( $wgNamespaceAliases as $name => $index ) {
+ $this->mNamespaceIds[$this->lc($name)] = $index;
+ }
+ }
+ }
+ return $this->mNamespaceIds;
}
+
/**
* Get a namespace key by value, case insensitive. Canonical namespace
* names override custom ones defined for the current language.
@@ -299,10 +372,12 @@ class Language {
* @return mixed An integer if $text is a valid value otherwise false
*/
function getNsIndex( $text ) {
- $this->load();
$lctext = $this->lc($text);
- if( ( $ns = MWNamespace::getCanonicalIndex( $lctext ) ) !== null ) return $ns;
- return isset( $this->mNamespaceIds[$lctext] ) ? $this->mNamespaceIds[$lctext] : false;
+ if ( ( $ns = MWNamespace::getCanonicalIndex( $lctext ) ) !== null ) {
+ return $ns;
+ }
+ $ids = $this->getNamespaceIds();
+ return isset( $ids[$lctext] ) ? $ids[$lctext] : false;
}
/**
@@ -334,48 +409,41 @@ class Language {
}
function getMathNames() {
- $this->load();
- return $this->mathNames;
+ return self::$dataCache->getItem( $this->mCode, 'mathNames' );
}
function getDatePreferences() {
- $this->load();
- return $this->datePreferences;
+ return self::$dataCache->getItem( $this->mCode, 'datePreferences' );
}
-
+
function getDateFormats() {
- $this->load();
- return $this->dateFormats;
+ return self::$dataCache->getItem( $this->mCode, 'dateFormats' );
}
function getDefaultDateFormat() {
- $this->load();
- return $this->defaultDateFormat;
+ $df = self::$dataCache->getItem( $this->mCode, 'defaultDateFormat' );
+ if ( $df === 'dmy or mdy' ) {
+ global $wgAmericanDates;
+ return $wgAmericanDates ? 'mdy' : 'dmy';
+ } else {
+ return $df;
+ }
}
function getDatePreferenceMigrationMap() {
- $this->load();
- return $this->datePreferenceMigrationMap;
+ return self::$dataCache->getItem( $this->mCode, 'datePreferenceMigrationMap' );
}
function getImageFile( $image ) {
- $this->load();
- return $this->imageFiles[$image];
+ return self::$dataCache->getSubitem( $this->mCode, 'imageFiles', $image );
}
function getDefaultUserOptionOverrides() {
- $this->load();
- # XXX - apparently some languageas get empty arrays, didn't get to it yet -- midom
- if (is_array($this->defaultUserOptionOverrides)) {
- return $this->defaultUserOptionOverrides;
- } else {
- return array();
- }
+ return self::$dataCache->getItem( $this->mCode, 'defaultUserOptionOverrides' );
}
function getExtraUserToggles() {
- $this->load();
- return $this->extraUserToggles;
+ return self::$dataCache->getItem( $this->mCode, 'extraUserToggles' );
}
function getUserToggle( $tog ) {
@@ -392,17 +460,14 @@ class Language {
if ( !$customisedOnly ) {
return $allNames;
}
-
+
global $IP;
$names = array();
$dir = opendir( "$IP/languages/messages" );
while( false !== ( $file = readdir( $dir ) ) ) {
- $m = array();
- if( preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $file, $m ) ) {
- $code = str_replace( '_', '-', strtolower( $m[1] ) );
- if ( isset( $allNames[$code] ) ) {
- $names[$code] = $allNames[$code];
- }
+ $code = self::getCodeFromFileName( $file, 'Messages' );
+ if ( $code && isset( $allNames[$code] ) ) {
+ $names[$code] = $allNames[$code];
}
}
closedir( $dir );
@@ -458,11 +523,11 @@ class Language {
function getHebrewCalendarMonthNameGen( $key ) {
return $this->getMessageFromDB( self::$mHebrewCalendarMonthGenMsgs[$key-1] );
}
-
+
function getHijriCalendarMonthName( $key ) {
return $this->getMessageFromDB( self::$mHijriCalendarMonthMsgs[$key-1] );
}
-
+
/**
* Used by date() and time() to adjust the time output.
*
@@ -514,7 +579,7 @@ class Language {
wfSuppressWarnings(); // E_STRICT system time bitching
# Generate an adjusted date; take advantage of the fact that mktime
- # will normalize out-of-range values so we don't have to split $minDiff
+ # will normalize out-of-range values so we don't have to split $minDiff
# into hours and minutes.
$t = mktime( (
(int)substr( $ts, 8, 2) ), # Hours
@@ -523,19 +588,19 @@ class Language {
(int)substr( $ts, 4, 2 ), # Month
(int)substr( $ts, 6, 2 ), # Day
(int)substr( $ts, 0, 4 ) ); #Year
-
+
$date = date( 'YmdHis', $t );
wfRestoreWarnings();
-
+
return $date;
}
/**
* This is a workalike of PHP's date() function, but with better
- * internationalisation, a reduced set of format characters, and a better
+ * internationalisation, a reduced set of format characters, and a better
* escaping format.
*
- * Supported format characters are dDjlNwzWFmMntLoYyaAgGhHiscrU. See the
+ * Supported format characters are dDjlNwzWFmMntLoYyaAgGhHiscrU. See the
* PHP manual for definitions. "o" format character is supported since
* PHP 5.1.0, previous versions return literal o.
* There are a number of extensions, which start with "x":
@@ -566,6 +631,11 @@ class Language {
*
* xkY Y (full year) in Thai solar calendar. Months and days are
* identical to the Gregorian calendar
+ * xoY Y (full year) in Minguo calendar or Juche year.
+ * Months and days are identical to the
+ * Gregorian calendar
+ * xtY Y (full year) in Japanese nengo. Months and days are
+ * identical to the Gregorian calendar
*
* Characters enclosed in double quotes will be considered literal (with
* the quotes themselves removed). Unmatched quotes will be considered
@@ -578,7 +648,7 @@ class Language {
*
* Input timestamp is assumed to be pre-normalized to the desired local
* time zone, if any.
- *
+ *
* @param $format String
* @param $ts String: 14-character timestamp
* YYYYMMDDHHMMSS
@@ -597,6 +667,8 @@ class Language {
$hebrew = false;
$hijri = false;
$thai = false;
+ $minguo = false;
+ $tenno = false;
for ( $p = 0; $p < strlen( $format ); $p++ ) {
$num = false;
$code = $format[$p];
@@ -604,7 +676,7 @@ class Language {
$code .= $format[++$p];
}
- if ( ( $code === 'xi' || $code == 'xj' || $code == 'xk' || $code == 'xm' ) && $p < strlen( $format ) - 1 ) {
+ if ( ( $code === 'xi' || $code == 'xj' || $code == 'xk' || $code == 'xm' || $code == 'xo' || $code == 'xt' ) && $p < strlen( $format ) - 1 ) {
$code .= $format[++$p];
}
@@ -748,9 +820,17 @@ class Language {
$num = $hebrew[0];
break;
case 'xkY':
- if ( !$thai ) $thai = self::tsToThai( $ts );
+ if ( !$thai ) $thai = self::tsToYear( $ts, 'thai' );
$num = $thai[0];
break;
+ case 'xoY':
+ if ( !$minguo ) $minguo = self::tsToYear( $ts, 'minguo' );
+ $num = $minguo[0];
+ break;
+ case 'xtY':
+ if ( !$tenno ) $tenno = self::tsToYear( $ts, 'tenno' );
+ $num = $tenno[0];
+ break;
case 'y':
$num = substr( $ts, 2, 2 );
break;
@@ -770,7 +850,7 @@ class Language {
case 'h':
$h = substr( $ts, 8, 2 );
$num = sprintf( '%02d', $h % 12 ? $h % 12 : 12 );
- break;
+ break;
case 'H':
$num = substr( $ts, 8, 2 );
break;
@@ -841,11 +921,11 @@ class Language {
private static $GREG_DAYS = array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
private static $IRANIAN_DAYS = array( 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 );
/**
- * Algorithm by Roozbeh Pournader and Mohammad Toossi to convert
+ * Algorithm by Roozbeh Pournader and Mohammad Toossi to convert
* Gregorian dates to Iranian dates. Originally written in C, it
* is released under the terms of GNU Lesser General Public
* License. Conversion to PHP was performed by Niklas Laxström.
- *
+ *
* Link: http://www.farsiweb.info/jalali/jalali.c
*/
private static function tsToIranian( $ts ) {
@@ -872,7 +952,7 @@ class Language {
// Days passed in current month
$gDayNo += $gd;
-
+
$jDayNo = $gDayNo - 79;
$jNp = floor($jDayNo / 12053);
@@ -906,7 +986,7 @@ class Language {
$year = substr( $ts, 0, 4 );
$month = substr( $ts, 4, 2 );
$day = substr( $ts, 6, 2 );
-
+
$zyr = $year;
$zd=$day;
$zm=$month;
@@ -916,15 +996,15 @@ class Language {
if (($zy>1582)||(($zy==1582)&&($zm>10))||(($zy==1582)&&($zm==10)&&($zd>14)))
{
-
-
+
+
$zjd=(int)((1461*($zy + 4800 + (int)( ($zm-14) /12) ))/4) + (int)((367*($zm-2-12*((int)(($zm-14)/12))))/12)-(int)((3*(int)(( ($zy+4900+(int)(($zm-14)/12))/100)))/4)+$zd-32075;
}
else
{
$zjd = 367*$zy-(int)((7*($zy+5001+(int)(($zm-9)/7)))/4)+(int)((275*$zm)/9)+$zd+1729777;
}
-
+
$zl=$zjd-1948440+10632;
$zn=(int)(($zl-1)/10631);
$zl=$zl-10631*$zn+354;
@@ -1112,26 +1192,72 @@ class Language {
}
/**
- * Algorithm to convert Gregorian dates to Thai solar dates.
+ * Algorithm to convert Gregorian dates to Thai solar dates,
+ * Minguo dates or Minguo dates.
*
* Link: http://en.wikipedia.org/wiki/Thai_solar_calendar
+ * http://en.wikipedia.org/wiki/Minguo_calendar
+ * http://en.wikipedia.org/wiki/Japanese_era_name
*
- * @param $ts String: 14-character timestamp
+ * @param $ts String: 14-character timestamp, calender name
* @return array converted year, month, day
*/
- private static function tsToThai( $ts ) {
+ private static function tsToYear( $ts, $cName ) {
$gy = substr( $ts, 0, 4 );
$gm = substr( $ts, 4, 2 );
$gd = substr( $ts, 6, 2 );
- # Add 543 years to the Gregorian calendar
- # Months and days are identical
- $gy_thai = $gy + 543;
+ if (!strcmp($cName,'thai')) {
+ # Thai solar dates
+ # Add 543 years to the Gregorian calendar
+ # Months and days are identical
+ $gy_offset = $gy + 543;
+ } else if ((!strcmp($cName,'minguo')) || !strcmp($cName,'juche')) {
+ # Minguo dates
+ # Deduct 1911 years from the Gregorian calendar
+ # Months and days are identical
+ $gy_offset = $gy - 1911;
+ } else if (!strcmp($cName,'tenno')) {
+ # Nengō dates up to Meiji period
+ # Deduct years from the Gregorian calendar
+ # depending on the nengo periods
+ # Months and days are identical
+ if (($gy < 1912) || (($gy == 1912) && ($gm < 7)) || (($gy == 1912) && ($gm == 7) && ($gd < 31))) {
+ # Meiji period
+ $gy_gannen = $gy - 1868 + 1;
+ $gy_offset = $gy_gannen;
+ if ($gy_gannen == 1)
+ $gy_offset = '元';
+ $gy_offset = '明治'.$gy_offset;
+ } else if ((($gy == 1912) && ($gm == 7) && ($gd == 31)) || (($gy == 1912) && ($gm >= 8)) || (($gy > 1912) && ($gy < 1926)) || (($gy == 1926) && ($gm < 12)) || (($gy == 1926) && ($gm == 12) && ($gd < 26))) {
+ # Taishō period
+ $gy_gannen = $gy - 1912 + 1;
+ $gy_offset = $gy_gannen;
+ if ($gy_gannen == 1)
+ $gy_offset = '元';
+ $gy_offset = '大正'.$gy_offset;
+ } else if ((($gy == 1926) && ($gm == 12) && ($gd >= 26)) || (($gy > 1926) && ($gy < 1989)) || (($gy == 1989) && ($gm == 1) && ($gd < 8))) {
+ # Shōwa period
+ $gy_gannen = $gy - 1926 + 1;
+ $gy_offset = $gy_gannen;
+ if ($gy_gannen == 1)
+ $gy_offset = '元';
+ $gy_offset = '昭和'.$gy_offset;
+ } else {
+ # Heisei period
+ $gy_gannen = $gy - 1989 + 1;
+ $gy_offset = $gy_gannen;
+ if ($gy_gannen == 1)
+ $gy_offset = '元';
+ $gy_offset = '平成'.$gy_offset;
+ }
+ } else {
+ $gy_offset = $gy;
+ }
- return array( $gy_thai, $gm, $gd );
+ return array( $gy_offset, $gm, $gd );
}
-
/**
* Roman number formatting up to 3000
*/
@@ -1142,7 +1268,7 @@ class Language {
array( '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', 'M' ),
array( '', 'M', 'MM', 'MMM' )
);
-
+
$num = intval( $num );
if ( $num > 3000 || $num <= 0 ) {
return $num;
@@ -1252,11 +1378,33 @@ class Language {
if( $datePreference == '' ) {
return 'default';
}
-
+
return $datePreference;
}
/**
+ * Get a format string for a given type and preference
+ * @param $type May be date, time or both
+ * @param $pref The format name as it appears in Messages*.php
+ */
+ function getDateFormatString( $type, $pref ) {
+ if ( !isset( $this->dateFormatStrings[$type][$pref] ) ) {
+ if ( $pref == 'default' ) {
+ $pref = $this->getDefaultDateFormat();
+ $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
+ } else {
+ $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
+ if ( is_null( $df ) ) {
+ $pref = $this->getDefaultDateFormat();
+ $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
+ }
+ }
+ $this->dateFormatStrings[$type][$pref] = $df;
+ }
+ return $this->dateFormatStrings[$type][$pref];
+ }
+
+ /**
* @param $ts Mixed: the time format which needs to be turned into a
* date('YmdHis') format with wfTimestamp(TS_MW,$ts)
* @param $adj Bool: whether to adjust the time output according to the
@@ -1267,16 +1415,11 @@ class Language {
* @return string
*/
function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
- $this->load();
- if ( $adj ) {
- $ts = $this->userAdjust( $ts, $timecorrection );
- }
-
- $pref = $this->dateFormat( $format );
- if( $pref == 'default' || !isset( $this->dateFormats["$pref date"] ) ) {
- $pref = $this->defaultDateFormat;
+ if ( $adj ) {
+ $ts = $this->userAdjust( $ts, $timecorrection );
}
- return $this->sprintfDate( $this->dateFormats["$pref date"], $ts );
+ $df = $this->getDateFormatString( 'date', $this->dateFormat( $format ) );
+ return $this->sprintfDate( $df, $ts );
}
/**
@@ -1290,16 +1433,11 @@ class Language {
* @return string
*/
function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
- $this->load();
- if ( $adj ) {
- $ts = $this->userAdjust( $ts, $timecorrection );
- }
-
- $pref = $this->dateFormat( $format );
- if( $pref == 'default' || !isset( $this->dateFormats["$pref time"] ) ) {
- $pref = $this->defaultDateFormat;
+ if ( $adj ) {
+ $ts = $this->userAdjust( $ts, $timecorrection );
}
- return $this->sprintfDate( $this->dateFormats["$pref time"], $ts );
+ $df = $this->getDateFormatString( 'time', $this->dateFormat( $format ) );
+ return $this->sprintfDate( $df, $ts );
}
/**
@@ -1314,69 +1452,74 @@ class Language {
* @return string
*/
function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
- $this->load();
-
$ts = wfTimestamp( TS_MW, $ts );
-
- if ( $adj ) {
- $ts = $this->userAdjust( $ts, $timecorrection );
- }
-
- $pref = $this->dateFormat( $format );
- if( $pref == 'default' || !isset( $this->dateFormats["$pref both"] ) ) {
- $pref = $this->defaultDateFormat;
+ if ( $adj ) {
+ $ts = $this->userAdjust( $ts, $timecorrection );
}
-
- return $this->sprintfDate( $this->dateFormats["$pref both"], $ts );
+ $df = $this->getDateFormatString( 'both', $this->dateFormat( $format ) );
+ return $this->sprintfDate( $df, $ts );
}
function getMessage( $key ) {
- $this->load();
- return isset( $this->messages[$key] ) ? $this->messages[$key] : null;
+ return self::$dataCache->getSubitem( $this->mCode, 'messages', $key );
}
function getAllMessages() {
- $this->load();
- return $this->messages;
+ return self::$dataCache->getItem( $this->mCode, 'messages' );
}
function iconv( $in, $out, $string ) {
- # For most languages, this is a wrapper for iconv
- return iconv( $in, $out . '//IGNORE', $string );
+ # This is a wrapper for iconv in all languages except esperanto,
+ # which does some nasty x-conversions beforehand
+
+ # Even with //IGNORE iconv can whine about illegal characters in
+ # *input* string. We just ignore those too.
+ # REF: http://bugs.php.net/bug.php?id=37166
+ # REF: https://bugzilla.wikimedia.org/show_bug.cgi?id=16885
+ wfSuppressWarnings();
+ $text = iconv( $in, $out . '//IGNORE', $string );
+ wfRestoreWarnings();
+ return $text;
}
// callback functions for uc(), lc(), ucwords(), ucwordbreaks()
function ucwordbreaksCallbackAscii($matches){
return $this->ucfirst($matches[1]);
}
-
+
function ucwordbreaksCallbackMB($matches){
return mb_strtoupper($matches[0]);
}
-
+
function ucCallback($matches){
list( $wikiUpperChars ) = self::getCaseMaps();
return strtr( $matches[1], $wikiUpperChars );
}
-
+
function lcCallback($matches){
list( , $wikiLowerChars ) = self::getCaseMaps();
return strtr( $matches[1], $wikiLowerChars );
}
-
+
function ucwordsCallbackMB($matches){
return mb_strtoupper($matches[0]);
}
-
+
function ucwordsCallbackWiki($matches){
list( $wikiUpperChars ) = self::getCaseMaps();
return strtr( $matches[0], $wikiUpperChars );
}
function ucfirst( $str ) {
- if ( empty($str) ) return $str;
- if ( ord($str[0]) < 128 ) return ucfirst($str);
- else return self::uc($str,true); // fall back to more complex logic in case of multibyte strings
+ $o = ord( $str );
+ if ( $o < 96 ) {
+ return $str;
+ } elseif ( $o < 128 ) {
+ return ucfirst($str);
+ } else {
+ // fall back to more complex logic in case of multibyte strings
+ return self::uc($str,true);
+ }
}
function uc( $str, $first = false ) {
@@ -1404,15 +1547,19 @@ class Language {
}
}
}
-
+
function lcfirst( $str ) {
- if ( empty($str) ) return $str;
- if ( is_string( $str ) && ord($str[0]) < 128 ) {
- // editing string in place = cool
- $str[0]=strtolower($str[0]);
+ $o = ord( $str );
+ if ( !$o ) {
+ return strval( $str );
+ } elseif ( $o >= 128 ) {
+ return self::lc( $str, true );
+ } elseif ( $o > 96 ) {
+ return $str;
+ } else {
+ $str[0] = strtolower( $str[0] );
return $str;
}
- else return self::lc( $str, true );
}
function lc( $str, $first = false ) {
@@ -1455,7 +1602,7 @@ class Language {
array($this,"ucwordsCallbackMB"),
$str
);
- else
+ else
return preg_replace_callback(
$replaceRegexp,
array($this,"ucwordsCallbackWiki"),
@@ -1483,7 +1630,7 @@ class Language {
array($this,"ucwordbreaksCallbackMB"),
$str
);
- else
+ else
return preg_replace_callback(
$replaceRegexp,
array($this,"ucwordsCallbackWiki"),
@@ -1500,7 +1647,7 @@ class Language {
/**
* Return a case-folded representation of $s
*
- * This is a representation such that caseFold($s1)==caseFold($s2) if $s1
+ * This is a representation such that caseFold($s1)==caseFold($s2) if $s1
* and $s2 are the same except for the case of their characters. It is not
* necessary for the value returned to make sense when displayed.
*
@@ -1528,89 +1675,55 @@ class Language {
}
function fallback8bitEncoding() {
- $this->load();
- return $this->fallback8bitEncoding;
+ return self::$dataCache->getItem( $this->mCode, 'fallback8bitEncoding' );
+ }
+
+ /**
+ * Most writing systems use whitespace to break up words.
+ * Some languages such as Chinese don't conventionally do this,
+ * which requires special handling when breaking up words for
+ * searching etc.
+ */
+ function hasWordBreaks() {
+ return true;
}
/**
- * Some languages have special punctuation to strip out
- * or characters which need to be converted for MySQL's
- * indexing to grok it correctly. Make such changes here.
- *
+ * Some languages such as Chinese require word segmentation,
+ * Specify such segmentation when overridden in derived class.
+ *
* @param $string String
* @return String
*/
- function stripForSearch( $string ) {
- global $wgDBtype;
- if ( $wgDBtype != 'mysql' ) {
- return $string;
- }
-
-
- wfProfileIn( __METHOD__ );
-
- // MySQL fulltext index doesn't grok utf-8, so we
- // need to fold cases and convert to hex
- $out = preg_replace_callback(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/",
- array( $this, 'stripForSearchCallback' ),
- $this->lc( $string ) );
-
- // And to add insult to injury, the default indexing
- // ignores short words... Pad them so we can pass them
- // through without reconfiguring the server...
- $minLength = $this->minSearchLength();
- if( $minLength > 1 ) {
- $n = $minLength-1;
- $out = preg_replace(
- "/\b(\w{1,$n})\b/",
- "$1u800",
- $out );
- }
-
- // Periods within things like hostnames and IP addresses
- // are also important -- we want a search for "example.com"
- // or "192.168.1.1" to work sanely.
- //
- // MySQL's search seems to ignore them, so you'd match on
- // "example.wikipedia.com" and "192.168.83.1" as well.
- $out = preg_replace(
- "/(\w)\.(\w|\*)/u",
- "$1u82e$2",
- $out );
-
- wfProfileOut( __METHOD__ );
- return $out;
+ function wordSegmentation( $string ) {
+ return $string;
}
-
+
/**
- * Armor a case-folded UTF-8 string to get through MySQL's
- * fulltext search without being mucked up by funny charset
- * settings or anything else of the sort.
+ * Some languages have special punctuation need to be normalized.
+ * Make such changes here.
+ *
+ * @param $string String
+ * @return String
*/
- protected function stripForSearchCallback( $matches ) {
- return 'u8' . bin2hex( $matches[1] );
+ function normalizeForSearch( $string ) {
+ return $string;
}
-
+
/**
- * Check MySQL server's ft_min_word_len setting so we know
- * if we need to pad short words...
- */
- protected function minSearchLength() {
- if( !isset( $this->minSearchLength ) ) {
- $sql = "show global variables like 'ft\\_min\\_word\\_len'";
- $dbr = wfGetDB( DB_SLAVE );
- $result = $dbr->query( $sql );
- $row = $result->fetchObject();
- $result->free();
-
- if( $row && $row->Variable_name == 'ft_min_word_len' ) {
- $this->minSearchLength = intval( $row->Value );
- } else {
- $this->minSearchLength = 0;
- }
- }
- return $this->minSearchLength;
+ * convert double-width roman characters to single-width.
+ * range: ff00-ff5f ~= 0020-007f
+ */
+ protected static function convertDoubleWidth( $string ) {
+ $string = preg_replace( '/\xef\xbc([\x80-\xbf])/e', 'chr((ord("$1") & 0x3f) + 0x20)', $string );
+ $string = preg_replace( '/\xef\xbd([\x80-\x99])/e', 'chr((ord("$1") & 0x3f) + 0x60)', $string );
+ return $string;
+ }
+
+ protected static function insertSpace( $string, $pattern ) {
+ $string = preg_replace( $pattern, " $1 ", $string );
+ $string = preg_replace( '/ +/', ' ', $string );
+ return $string;
}
function convertForSearchResult( $termsArray ) {
@@ -1620,7 +1733,7 @@ class Language {
}
/**
- * Get the first character of a string.
+ * Get the first character of a string.
*
* @param $s string
* @return string
@@ -1634,7 +1747,7 @@ class Language {
if ( strlen( $matches[1] ) != 3 ) {
return $matches[1];
}
-
+
// Break down Hangul syllables to grab the first jamo
$code = utf8ToCodepoint( $matches[1] );
if ( $code < 0xac00 || 0xd7a4 <= $code) {
@@ -1712,13 +1825,74 @@ class Language {
}
/**
+ * Convert a UTF-8 string to normal form C. In Malayalam and Arabic, this
+ * also cleans up certain backwards-compatible sequences, converting them
+ * to the modern Unicode equivalent.
+ *
+ * This is language-specific for performance reasons only.
+ */
+ function normalize( $s ) {
+ return UtfNormal::cleanUp( $s );
+ }
+
+ /**
+ * Transform a string using serialized data stored in the given file (which
+ * must be in the serialized subdirectory of $IP). The file contains pairs
+ * mapping source characters to destination characters.
+ *
+ * The data is cached in process memory. This will go faster if you have the
+ * FastStringSearch extension.
+ */
+ function transformUsingPairFile( $file, $string ) {
+ if ( !isset( $this->transformData[$file] ) ) {
+ $data = wfGetPrecompiledData( $file );
+ if ( $data === false ) {
+ throw new MWException( __METHOD__.": The transformation file $file is missing" );
+ }
+ $this->transformData[$file] = new ReplacementArray( $data );
+ }
+ return $this->transformData[$file]->replace( $string );
+ }
+
+ /**
* For right-to-left language support
*
* @return bool
*/
- function isRTL() {
- $this->load();
- return $this->rtl;
+ function isRTL() {
+ return self::$dataCache->getItem( $this->mCode, 'rtl' );
+ }
+
+ /**
+ * Return the correct HTML 'dir' attribute value for this language.
+ * @return String
+ */
+ function getDir() {
+ return $this->isRTL() ? 'rtl' : 'ltr';
+ }
+
+ /**
+ * Return 'left' or 'right' as appropriate alignment for line-start
+ * for this language's text direction.
+ *
+ * Should be equivalent to CSS3 'start' text-align value....
+ *
+ * @return String
+ */
+ function alignStart() {
+ return $this->isRTL() ? 'right' : 'left';
+ }
+
+ /**
+ * Return 'right' or 'left' as appropriate alignment for line-end
+ * for this language's text direction.
+ *
+ * Should be equivalent to CSS3 'end' text-align value....
+ *
+ * @return String
+ */
+ function alignEnd() {
+ return $this->isRTL() ? 'left' : 'right';
}
/**
@@ -1730,6 +1904,10 @@ class Language {
return $this->isRTL() ? "\xE2\x80\x8F" : "\xE2\x80\x8E";
}
+ function capitalizeAllNouns() {
+ return self::$dataCache->getItem( $this->mCode, 'capitalizeAllNouns' );
+ }
+
/**
* An arrow, depending on the language direction
*
@@ -1745,34 +1923,29 @@ class Language {
* @return bool
*/
function linkPrefixExtension() {
- $this->load();
- return $this->linkPrefixExtension;
+ return self::$dataCache->getItem( $this->mCode, 'linkPrefixExtension' );
}
- function &getMagicWords() {
- $this->load();
- return $this->magicWords;
+ function getMagicWords() {
+ return self::$dataCache->getItem( $this->mCode, 'magicWords' );
}
# Fill a MagicWord object with data from here
- function getMagic( &$mw ) {
+ function getMagic( $mw ) {
if ( !$this->mMagicHookDone ) {
$this->mMagicHookDone = true;
+ wfProfileIn( 'LanguageGetMagic' );
wfRunHooks( 'LanguageGetMagic', array( &$this->mMagicExtensions, $this->getCode() ) );
+ wfProfileOut( 'LanguageGetMagic' );
}
if ( isset( $this->mMagicExtensions[$mw->mId] ) ) {
$rawEntry = $this->mMagicExtensions[$mw->mId];
} else {
- $magicWords =& $this->getMagicWords();
+ $magicWords = $this->getMagicWords();
if ( isset( $magicWords[$mw->mId] ) ) {
$rawEntry = $magicWords[$mw->mId];
} else {
- # Fall back to English if local list is incomplete
- $magicWords =& Language::getMagicWords();
- if ( !isset($magicWords[$mw->mId]) ) {
- throw new MWException("Magic word '{$mw->mId}' not found" );
- }
- $rawEntry = $magicWords[$mw->mId];
+ $rawEntry = false;
}
}
@@ -1810,43 +1983,11 @@ class Language {
* case folded alias => real name
*/
function getSpecialPageAliases() {
- $this->load();
-
// Cache aliases because it may be slow to load them
- if ( !isset( $this->mExtendedSpecialPageAliases ) ) {
-
+ if ( is_null( $this->mExtendedSpecialPageAliases ) ) {
// Initialise array
- $this->mExtendedSpecialPageAliases = $this->specialPageAliases;
-
- global $wgExtensionAliasesFiles;
- foreach ( $wgExtensionAliasesFiles as $file ) {
-
- // Fail fast
- if ( !file_exists($file) )
- throw new MWException( "Aliases file does not exist: $file" );
-
- $aliases = array();
- require($file);
-
- // Check the availability of aliases
- if ( !isset($aliases['en']) )
- throw new MWException( "Malformed aliases file: $file" );
-
- // Merge all aliases in fallback chain
- $code = $this->getCode();
- do {
- if ( !isset($aliases[$code]) ) continue;
-
- $aliases[$code] = $this->fixSpecialPageAliases( $aliases[$code] );
- /* Merge the aliases, THIS will break if there is special page name
- * which looks like a numerical key, thanks to PHP...
- * See the array_merge_recursive manual entry */
- $this->mExtendedSpecialPageAliases = array_merge_recursive(
- $this->mExtendedSpecialPageAliases, $aliases[$code] );
-
- } while ( $code = self::getFallbackFor( $code ) );
- }
-
+ $this->mExtendedSpecialPageAliases =
+ self::$dataCache->getItem( $this->mCode, 'specialPageAliases' );
wfRunHooks( 'LanguageGetSpecialPageAliases',
array( &$this->mExtendedSpecialPageAliases, $this->getCode() ) );
}
@@ -1855,20 +1996,6 @@ class Language {
}
/**
- * Function to fix special page aliases. Will convert the first letter to
- * upper case and spaces to underscores. Can be given a full aliases array,
- * in which case it will recursively fix all aliases.
- */
- public function fixSpecialPageAliases( $mixed ) {
- // Work recursively until in string level
- if ( is_array($mixed) ) {
- $callback = array( $this, 'fixSpecialPageAliases' );
- return array_map( $callback, $mixed );
- }
- return str_replace( ' ', '_', $this->ucfirst( $mixed ) );
- }
-
- /**
* Italic is unsuitable for some languages
*
* @param $text String: the text to be emphasized.
@@ -1940,13 +2067,11 @@ class Language {
}
function digitTransformTable() {
- $this->load();
- return $this->digitTransformTable;
+ return self::$dataCache->getItem( $this->mCode, 'digitTransformTable' );
}
function separatorTransformTable() {
- $this->load();
- return $this->separatorTransformTable;
+ return self::$dataCache->getItem( $this->mCode, 'separatorTransformTable' );
}
@@ -1987,7 +2112,7 @@ class Language {
function commaList( $list ) {
return implode(
$list,
- wfMsgExt( 'comma-separator', array( 'escapenoentities', 'language' => $this ) ) );
+ wfMsgExt( 'comma-separator', array( 'parsemag', 'escapenoentities', 'language' => $this ) ) );
}
/**
@@ -1999,7 +2124,7 @@ class Language {
function semicolonList( $list ) {
return implode(
$list,
- wfMsgExt( 'semicolon-separator', array( 'escapenoentities', 'language' => $this ) ) );
+ wfMsgExt( 'semicolon-separator', array( 'parsemag', 'escapenoentities', 'language' => $this ) ) );
}
/**
@@ -2022,7 +2147,7 @@ class Language {
* are included, otherwise broken characters can be passed to the user
*
* If $length is negative, the string will be truncated from the beginning
- *
+ *
* @param $string String to truncate
* @param $length Int: maximum length (excluding ellipses)
* @param $ellipsis String to append to the truncated text
@@ -2040,6 +2165,7 @@ class Language {
if ( strlen( $string ) <= abs( $length ) ) {
return $string;
}
+ $stringOriginal = $string;
if( $length > 0 ) {
$string = substr( $string, 0, $length );
$char = ord( $string[strlen( $string ) - 1] );
@@ -2053,7 +2179,8 @@ class Language {
# We chopped in the middle of a character; remove it
$string = $m[1];
}
- return $string . $ellipsis;
+ $string = $string . $ellipsis;
+
} else {
$string = substr( $string, $length );
$char = ord( $string[0] );
@@ -2061,7 +2188,13 @@ class Language {
# We chopped in the middle of a character; remove the whole thing
$string = preg_replace( '/^[\x80-\xbf]+/', '', $string );
}
- return $ellipsis . $string;
+ $string = $ellipsis . $string;
+ }
+ # Do not truncate if the ellipsis actually make the string longer. Bug 22181
+ if ( strlen( $string ) < strlen( $stringOriginal ) ) {
+ return $string;
+ } else {
+ return $stringOriginal;
}
}
@@ -2181,14 +2314,19 @@ class Language {
return $text;
}
+ # convert text to all supported variants
+ function autoConvertToAllVariants($text) {
+ return $this->mConverter->autoConvertToAllVariants($text);
+ }
+
# convert text to different variants of a language.
- function convert( $text, $isTitle = false) {
- return $this->mConverter->convert($text, $isTitle);
+ function convert( $text ) {
+ return $this->mConverter->convert( $text );
}
- # Convert text from within Parser
- function parserConvert( $text, &$parser ) {
- return $this->mConverter->parserConvert( $text, $parser );
+ # Convert a Title object to a string in the preferred variant
+ function convertTitle( $title ) {
+ return $this->mConverter->convertTitle( $title );
}
# Check if this is a language with variants
@@ -2197,15 +2335,15 @@ class Language {
}
# Put custom tags (e.g. -{ }-) around math to prevent conversion
- function armourMath($text){
+ function armourMath($text){
return $this->mConverter->armourMath($text);
}
/**
* Perform output conversion on a string, and encode for safe HTML output.
- * @param $text String
- * @param $isTitle Bool -- wtf?
+ * @param $text String text to be converted
+ * @param $isTitle Bool whether this conversion is for the article title
* @return string
* @todo this should get integrated somewhere sane
*/
@@ -2228,8 +2366,8 @@ class Language {
}
- function getPreferredVariant( $fromUser = true ) {
- return $this->mConverter->getPreferredVariant( $fromUser );
+ function getPreferredVariant( $fromUser = true, $fromHeader = false ) {
+ return $this->mConverter->getPreferredVariant( $fromUser, $fromHeader );
}
/**
@@ -2298,8 +2436,7 @@ class Language {
* @return string
*/
function linkTrail() {
- $this->load();
- return $this->linkTrail;
+ return self::$dataCache->getItem( $this->mCode, 'linkTrail' );
}
function getLangObj() {
@@ -2317,10 +2454,34 @@ class Language {
$this->mCode = $code;
}
+ /**
+ * Get the name of a file for a certain language code
+ * @param $prefix string Prepend this to the filename
+ * @param $code string Language code
+ * @param $suffix string Append this to the filename
+ * @return string $prefix . $mangledCode . $suffix
+ */
static function getFileName( $prefix = 'Language', $code, $suffix = '.php' ) {
return $prefix . str_replace( '-', '_', ucfirst( $code ) ) . $suffix;
}
+ /**
+ * Get the language code from a file name. Inverse of getFileName()
+ * @param $filename string $prefix . $languageCode . $suffix
+ * @param $prefix string Prefix before the language code
+ * @param $suffix string Suffix after the language code
+ * @return Language code, or false if $prefix or $suffix isn't found
+ */
+ static function getCodeFromFileName( $filename, $prefix = 'Language', $suffix = '.php' ) {
+ $m = null;
+ preg_match( '/' . preg_quote( $prefix, '/' ) . '([A-Z][a-z_]+)' .
+ preg_quote( $suffix, '/' ) . '/', $filename, $m );
+ if ( !count( $m ) ) {
+ return false;
+ }
+ return str_replace( '_', '-', strtolower( $m[1] ) );
+ }
+
static function getMessagesFileName( $code ) {
global $IP;
return self::getFileName( "$IP/languages/messages/Messages", $code, '.php' );
@@ -2330,305 +2491,32 @@ class Language {
global $IP;
return self::getFileName( "$IP/languages/classes/Language", $code, '.php' );
}
-
- static function getLocalisationArray( $code, $disableCache = false ) {
- self::loadLocalisation( $code, $disableCache );
- return self::$mLocalisationCache[$code];
- }
-
- /**
- * Load localisation data for a given code into the static cache
- *
- * @return array Dependencies, map of filenames to mtimes
- */
- static function loadLocalisation( $code, $disableCache = false ) {
- static $recursionGuard = array();
- global $wgMemc, $wgEnableSerializedMessages, $wgCheckSerialized;
-
- if ( !$code ) {
- throw new MWException( "Invalid language code requested" );
- }
-
- if ( !$disableCache ) {
- # Try the per-process cache
- if ( isset( self::$mLocalisationCache[$code] ) ) {
- return self::$mLocalisationCache[$code]['deps'];
- }
-
- wfProfileIn( __METHOD__ );
-
- # Try the serialized directory
- if( $wgEnableSerializedMessages ) {
- $cache = wfGetPrecompiledData( self::getFileName( "Messages", $code, '.ser' ) );
- if ( $cache ) {
- if ( $wgCheckSerialized && self::isLocalisationOutOfDate( $cache ) ) {
- $cache = false;
- wfDebug( "Language::loadLocalisation(): precompiled data file for $code is out of date\n" );
- } else {
- self::$mLocalisationCache[$code] = $cache;
- wfDebug( "Language::loadLocalisation(): got localisation for $code from precompiled data file\n" );
- wfProfileOut( __METHOD__ );
- return self::$mLocalisationCache[$code]['deps'];
- }
- }
- }
-
- # Try the global cache
- $memcKey = wfMemcKey('localisation', $code );
- $fbMemcKey = wfMemcKey('fallback', $cache['fallback'] );
- $cache = $wgMemc->get( $memcKey );
- if ( $cache ) {
- if ( self::isLocalisationOutOfDate( $cache ) ) {
- $wgMemc->delete( $memcKey );
- $wgMemc->delete( $fbMemcKey );
- $cache = false;
- wfDebug( "Language::loadLocalisation(): localisation cache for $code had expired\n" );
- } else {
- self::$mLocalisationCache[$code] = $cache;
- wfDebug( "Language::loadLocalisation(): got localisation for $code from cache\n" );
- wfProfileOut( __METHOD__ );
- return $cache['deps'];
- }
- }
- } else {
- wfProfileIn( __METHOD__ );
- }
-
- # Default fallback, may be overridden when the messages file is included
- if ( $code != 'en' ) {
- $fallback = 'en';
- } else {
- $fallback = false;
- }
-
- # Load the primary localisation from the source file
- $filename = self::getMessagesFileName( $code );
- if ( !file_exists( $filename ) ) {
- wfDebug( "Language::loadLocalisation(): no localisation file for $code, using implicit fallback to en\n" );
- $cache = compact( self::$mLocalisationKeys ); // Set correct fallback
- $deps = array();
- } else {
- $deps = array( $filename => filemtime( $filename ) );
- require( $filename );
- $cache = compact( self::$mLocalisationKeys );
- wfDebug( "Language::loadLocalisation(): got localisation for $code from source\n" );
- }
-
- # Load magic word source file
- global $IP;
- $filename = "$IP/includes/MagicWord.php";
- $newDeps = array( $filename => filemtime( $filename ) );
- $deps = array_merge( $deps, $newDeps );
-
- if ( !empty( $fallback ) ) {
- # Load the fallback localisation, with a circular reference guard
- if ( isset( $recursionGuard[$code] ) ) {
- throw new MWException( "Error: Circular fallback reference in language code $code" );
- }
- $recursionGuard[$code] = true;
- $newDeps = self::loadLocalisation( $fallback, $disableCache );
- unset( $recursionGuard[$code] );
-
- $secondary = self::$mLocalisationCache[$fallback];
- $deps = array_merge( $deps, $newDeps );
-
- # Merge the fallback localisation with the current localisation
- foreach ( self::$mLocalisationKeys as $key ) {
- if ( isset( $cache[$key] ) ) {
- if ( isset( $secondary[$key] ) ) {
- if ( in_array( $key, self::$mMergeableMapKeys ) ) {
- $cache[$key] = $cache[$key] + $secondary[$key];
- } elseif ( in_array( $key, self::$mMergeableListKeys ) ) {
- $cache[$key] = array_merge( $secondary[$key], $cache[$key] );
- } elseif ( in_array( $key, self::$mMergeableAliasListKeys ) ) {
- $cache[$key] = array_merge_recursive( $cache[$key], $secondary[$key] );
- }
- }
- } else {
- $cache[$key] = $secondary[$key];
- }
- }
-
- # Merge bookstore lists if requested
- if ( !empty( $cache['bookstoreList']['inherit'] ) ) {
- $cache['bookstoreList'] = array_merge( $cache['bookstoreList'], $secondary['bookstoreList'] );
- }
- if ( isset( $cache['bookstoreList']['inherit'] ) ) {
- unset( $cache['bookstoreList']['inherit'] );
- }
- }
-
- # Add dependencies to the cache entry
- $cache['deps'] = $deps;
-
- # Replace spaces with underscores in namespace names
- $cache['namespaceNames'] = str_replace( ' ', '_', $cache['namespaceNames'] );
-
- # And do the same for specialpage aliases. $page is an array.
- foreach ( $cache['specialPageAliases'] as &$page ) {
- $page = str_replace( ' ', '_', $page );
- }
- # Decouple the reference to prevent accidental damage
- unset($page);
-
- # Save to both caches
- self::$mLocalisationCache[$code] = $cache;
- if ( !$disableCache ) {
- $wgMemc->set( $memcKey, $cache );
- $wgMemc->set( $fbMemcKey, (string) $cache['fallback'] );
- }
-
- wfProfileOut( __METHOD__ );
- return $deps;
- }
/**
- * Test if a given localisation cache is out of date with respect to the
- * source Messages files. This is done automatically for the global cache
- * in $wgMemc, but is only done on certain occasions for the serialized
- * data file.
- *
- * @param $cache mixed Either a language code or a cache array
- */
- static function isLocalisationOutOfDate( $cache ) {
- if ( !is_array( $cache ) ) {
- self::loadLocalisation( $cache );
- $cache = self::$mLocalisationCache[$cache];
- }
- // At least one language file and the MagicWord file needed
- if( count($cache['deps']) < 2 ) {
- return true;
- }
- $expired = false;
- foreach ( $cache['deps'] as $file => $mtime ) {
- if ( !file_exists( $file ) || filemtime( $file ) > $mtime ) {
- $expired = true;
- break;
- }
- }
- return $expired;
- }
-
- /**
* Get the fallback for a given language
*/
static function getFallbackFor( $code ) {
- // Shortcut
- if ( $code === 'en' ) return false;
-
- // Local cache
- static $cache = array();
- // Quick return
- if ( isset($cache[$code]) ) return $cache[$code];
-
- // Try memcache
- global $wgMemc;
- $memcKey = wfMemcKey( 'fallback', $code );
- $fbcode = $wgMemc->get( $memcKey );
-
- if ( is_string($fbcode) ) {
- // False is stored as a string to detect failures in memcache properly
- if ( $fbcode === '' ) $fbcode = false;
-
- // Update local cache and return
- $cache[$code] = $fbcode;
- return $fbcode;
+ if ( $code === 'en' ) {
+ // Shortcut
+ return false;
+ } else {
+ return self::getLocalisationCache()->getItem( $code, 'fallback' );
}
-
- // Nothing in caches, load and and update both caches
- self::loadLocalisation( $code );
- $fbcode = self::$mLocalisationCache[$code]['fallback'];
-
- $cache[$code] = $fbcode;
- $wgMemc->set( $memcKey, (string) $fbcode );
-
- return $fbcode;
}
- /**
+ /**
* Get all messages for a given language
+ * WARNING: this may take a long time
*/
static function getMessagesFor( $code ) {
- self::loadLocalisation( $code );
- return self::$mLocalisationCache[$code]['messages'];
+ return self::getLocalisationCache()->getItem( $code, 'messages' );
}
- /**
+ /**
* Get a message for a given language
*/
static function getMessageFor( $key, $code ) {
- self::loadLocalisation( $code );
- return isset( self::$mLocalisationCache[$code]['messages'][$key] ) ? self::$mLocalisationCache[$code]['messages'][$key] : null;
- }
-
- /**
- * Load localisation data for this object
- */
- function load() {
- if ( !$this->mLoaded ) {
- self::loadLocalisation( $this->getCode() );
- $cache =& self::$mLocalisationCache[$this->getCode()];
- foreach ( self::$mLocalisationKeys as $key ) {
- $this->$key = $cache[$key];
- }
- $this->mLoaded = true;
-
- $this->fixUpSettings();
- }
- }
-
- /**
- * Do any necessary post-cache-load settings adjustment
- */
- function fixUpSettings() {
- global $wgExtraNamespaces, $wgMetaNamespace, $wgMetaNamespaceTalk,
- $wgNamespaceAliases, $wgAmericanDates;
- wfProfileIn( __METHOD__ );
- if ( $wgExtraNamespaces ) {
- $this->namespaceNames = $wgExtraNamespaces + $this->namespaceNames;
- }
-
- $this->namespaceNames[NS_PROJECT] = $wgMetaNamespace;
- if ( $wgMetaNamespaceTalk ) {
- $this->namespaceNames[NS_PROJECT_TALK] = $wgMetaNamespaceTalk;
- } else {
- $talk = $this->namespaceNames[NS_PROJECT_TALK];
- $this->namespaceNames[NS_PROJECT_TALK] =
- $this->fixVariableInNamespace( $talk );
- }
-
- # The above mixing may leave namespaces out of canonical order.
- # Re-order by namespace ID number...
- ksort( $this->namespaceNames );
-
- # Put namespace names and aliases into a hashtable.
- # If this is too slow, then we should arrange it so that it is done
- # before caching. The catch is that at pre-cache time, the above
- # class-specific fixup hasn't been done.
- $this->mNamespaceIds = array();
- foreach ( $this->namespaceNames as $index => $name ) {
- $this->mNamespaceIds[$this->lc($name)] = $index;
- }
- if ( $this->namespaceAliases ) {
- foreach ( $this->namespaceAliases as $name => $index ) {
- if ( $index === NS_PROJECT_TALK ) {
- unset( $this->namespaceAliases[$name] );
- $name = $this->fixVariableInNamespace( $name );
- $this->namespaceAliases[$name] = $index;
- }
- $this->mNamespaceIds[$this->lc($name)] = $index;
- }
- }
- if ( $wgNamespaceAliases ) {
- foreach ( $wgNamespaceAliases as $name => $index ) {
- $this->mNamespaceIds[$this->lc($name)] = $index;
- }
- }
-
- if ( $this->defaultDateFormat == 'dmy or mdy' ) {
- $this->defaultDateFormat = $wgAmericanDates ? 'mdy' : 'dmy';
- }
- wfProfileOut( __METHOD__ );
+ return self::getLocalisationCache()->getSubitem( $code, 'messages', $key );
}
function fixVariableInNamespace( $talk ) {
@@ -2638,10 +2526,10 @@ class Language {
$talk = str_replace( '$1', $wgMetaNamespace, $talk );
# Allow grammar transformations
- # Allowing full message-style parsing would make simple requests
- # such as action=raw much more expensive than they need to be.
+ # Allowing full message-style parsing would make simple requests
+ # such as action=raw much more expensive than they need to be.
# This will hopefully cover most cases.
- $talk = preg_replace_callback( '/{{grammar:(.*?)\|(.*?)}}/i',
+ $talk = preg_replace_callback( '/{{grammar:(.*?)\|(.*?)}}/i',
array( &$this, 'replaceGrammarInNamespace' ), $talk );
return str_replace( ' ', '_', $talk );
}
@@ -2659,7 +2547,7 @@ class Language {
wfProfileIn( __METHOD__ );
$arr = wfGetPrecompiledData( 'Utf8Case.ser' );
if ( $arr === false ) {
- throw new MWException(
+ throw new MWException(
"Utf8Case.ser is missing, please run \"make\" in the serialized directory\n" );
}
extract( $arr );
@@ -2673,13 +2561,13 @@ class Language {
} elseif ( $seconds < 60 ) {
return $this->formatNum( round( $seconds ) ) . wfMsg( 'seconds-abbrev' );
} elseif ( $seconds < 3600 ) {
- return $this->formatNum( floor( $seconds / 60 ) ) . wfMsg( 'minutes-abbrev' ) .
+ return $this->formatNum( floor( $seconds / 60 ) ) . wfMsg( 'minutes-abbrev' ) .
$this->formatNum( round( fmod( $seconds, 60 ) ) ) . wfMsg( 'seconds-abbrev' );
} else {
$hours = floor( $seconds / 3600 );
$minutes = floor( ( $seconds - $hours * 3600 ) / 60 );
$secondsPart = round( $seconds - $hours * 3600 - $minutes * 60 );
- return $this->formatNum( $hours ) . wfMsg( 'hours-abbrev' ) .
+ return $this->formatNum( $hours ) . wfMsg( 'hours-abbrev' ) .
$this->formatNum( $minutes ) . wfMsg( 'minutes-abbrev' ) .
$this->formatNum( $secondsPart ) . wfMsg( 'seconds-abbrev' );
}
@@ -2732,4 +2620,11 @@ class Language {
$text = $this->getMessageFromDB( $msg );
return str_replace( '$1', $this->formatNum( $size ), $text );
}
+
+ /**
+ * Get the conversion rule title, if any.
+ */
+ function getConvRuleTitle() {
+ return $this->mConverter->getConvRuleTitle();
+ }
}
diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php
index dcfb8bae..75075fee 100644
--- a/languages/LanguageConverter.php
+++ b/languages/LanguageConverter.php
@@ -9,87 +9,84 @@
*/
/**
- * base class for language convert
+ * Base class for language conversion.
* @ingroup Language
*
* @author Zhengzhu Feng <zhengzhu@gmail.com>
* @maintainers fdcn <fdcn64@gmail.com>, shinjiman <shinjiman@gmail.com>, PhiLiP <philip.npc@gmail.com>
*/
class LanguageConverter {
- var $mPreferredVariant='';
var $mMainLanguageCode;
var $mVariants, $mVariantFallbacks, $mVariantNames;
var $mTablesLoaded = false;
var $mTables;
- var $mManualAddTables;
- var $mManualRemoveTables;
var $mNamespaceTables;
- var $mTitleDisplay='';
- var $mDoTitleConvert=true, $mDoContentConvert=true;
- var $mManualLevel; // 'bidirectional' 'unidirectional' 'disable' for each variants
- var $mTitleFromFlag = false;
+ // 'bidirectional' 'unidirectional' 'disable' for each variant
+ var $mManualLevel;
var $mCacheKey;
var $mLangObj;
- var $mMarkup;
var $mFlags;
- var $mDescCodeSep = ':',$mDescVarSep = ';';
+ var $mDescCodeSep = ':', $mDescVarSep = ';';
var $mUcfirst = false;
+ var $mConvRuleTitle = false;
+ var $mURLVariant;
+ var $mUserVariant;
+ var $mHeaderVariant;
+ var $mMaxDepth = 10;
+ var $mVarSeparatorPattern;
const CACHE_VERSION_KEY = 'VERSION 6';
/**
* Constructor
*
- * @param string $maincode the main language code of this language
- * @param array $variants the supported variants of this language
- * @param array $variantfallback the fallback language of each variant
- * @param array $markup array defining the markup used for manual conversion
- * @param array $flags array defining the custom strings that maps to the flags
- * @param array $manualLevel limit for supported variants
- * @public
+ * @param $langobj The Language Object
+ * @param $maincode String: the main language code of this language
+ * @param $variants Array: the supported variants of this language
+ * @param $variantfallbacks Array: the fallback language of each variant
+ * @param $flags Array: defining the custom strings that maps to the flags
+ * @param $manualLevel Array: limit for supported variants
*/
- function __construct($langobj, $maincode,
- $variants=array(),
- $variantfallbacks=array(),
- $markup=array(),
+ public function __construct( $langobj, $maincode,
+ $variants = array(),
+ $variantfallbacks = array(),
$flags = array(),
$manualLevel = array() ) {
$this->mLangObj = $langobj;
$this->mMainLanguageCode = $maincode;
- $this->mVariants = $variants;
+
+ global $wgDisabledVariants;
+ $this->mVariants = array();
+ foreach ( $variants as $variant ) {
+ if ( !in_array( $variant, $wgDisabledVariants ) ) {
+ $this->mVariants[] = $variant;
+ }
+ }
$this->mVariantFallbacks = $variantfallbacks;
global $wgLanguageNames;
$this->mVariantNames = $wgLanguageNames;
$this->mCacheKey = wfMemcKey( 'conversiontables', $maincode );
- $m = array(
- 'begin'=>'-{',
- 'flagsep'=>'|',
- 'unidsep'=>'=>', //for unidirectional conversion
- 'codesep'=>':',
- 'varsep'=>';',
- 'end'=>'}-'
- );
- $this->mMarkup = array_merge($m, $markup);
- $f = array(
+ $f = array(
// 'S' show converted text
// '+' add rules for alltext
// 'E' the gave flags is error
// these flags above are reserved for program
- 'A'=>'A', // add rule for convert code (all text convert)
- 'T'=>'T', // title convert
- 'R'=>'R', // raw content
- 'D'=>'D', // convert description (subclass implement)
- '-'=>'-', // remove convert (not implement)
- 'H'=>'H', // add rule for convert code (but no display in placed code )
- 'N'=>'N' // current variant name
+ 'A' => 'A', // add rule for convert code (all text convert)
+ 'T' => 'T', // title convert
+ 'R' => 'R', // raw content
+ 'D' => 'D', // convert description (subclass implement)
+ '-' => '-', // remove convert (not implement)
+ 'H' => 'H', // add rule for convert code
+ // (but no display in placed code )
+ 'N' => 'N' // current variant name
);
- $this->mFlags = array_merge($f, $flags);
- foreach( $this->mVariants as $v) {
- $this->mManualLevel[$v]=array_key_exists($v,$manualLevel)
- ?$manualLevel[$v]
- :'bidirectional';
- $this->mManualAddTables[$v] = array();
- $this->mManualRemoveTables[$v] = array();
+ $this->mFlags = array_merge( $f, $flags );
+ foreach ( $this->mVariants as $v ) {
+ if ( array_key_exists( $v, $manualLevel ) ) {
+ $this->mManualLevel[$v] = $manualLevel[$v];
+ } else {
+ $this->mManualLevel[$v] = 'bidirectional';
+ }
$this->mNamespaceTables[$v] = array();
$this->mFlags[$v] = $v;
}
@@ -103,108 +100,206 @@ class LanguageConverter {
}
/**
- * in case some variant is not defined in the markup, we need
- * to have some fallback. for example, in zh, normally people
+ * In case some variant is not defined in the markup, we need
+ * to have some fallback. For example, in zh, normally people
* will define zh-hans and zh-hant, but less so for zh-sg or zh-hk.
* when zh-sg is preferred but not defined, we will pick zh-hans
- * in this case. right now this is only used by zh.
+ * in this case. Right now this is only used by zh.
*
- * @param string $v the language code of the variant
- * @return string array the code of the fallback language or false if there is no fallback
+ * @param string $v The language code of the variant
+ * @return string array The code of the fallback language or false if there
+ * is no fallback
* @public
*/
- function getVariantFallbacks($v) {
- if( isset( $this->mVariantFallbacks[$v] ) ) {
+ function getVariantFallbacks( $v ) {
+ if ( isset( $this->mVariantFallbacks[$v] ) ) {
return $this->mVariantFallbacks[$v];
}
return $this->mMainLanguageCode;
}
/**
- * get preferred language variants.
+ * Get the title produced by the conversion rule.
+ * @returns string
+ */
+ function getConvRuleTitle() {
+ return $this->mConvRuleTitle;
+ }
+
+ /**
+ * Get preferred language variants.
* @param boolean $fromUser Get it from $wgUser's preferences
+ * @param boolean $fromHeader Get it from Accept-Language
* @return string the preferred language code
* @public
*/
- function getPreferredVariant( $fromUser = true ) {
- global $wgUser, $wgRequest, $wgVariantArticlePath, $wgDefaultLanguageVariant;
+ function getPreferredVariant( $fromUser = true, $fromHeader = false ) {
+ global $wgDefaultLanguageVariant;
- if($this->mPreferredVariant)
- return $this->mPreferredVariant;
+ $req = $this->getURLVariant();
- // figure out user lang without constructing wgLang to avoid infinite recursion
- if( $fromUser )
- $defaultUserLang = $wgUser->getOption( 'language' );
- else
- $defaultUserLang = $this->mMainLanguageCode;
- $userLang = $wgRequest->getVal( 'uselang', $defaultUserLang );
- // see if interface language is same as content, if not, prevent conversion
- if( ! in_array( $userLang, $this->mVariants ) ){
- $this->mPreferredVariant = $this->mMainLanguageCode; // no conversion
- return $this->mPreferredVariant;
+ if ( $fromUser && !$req ) {
+ $req = $this->getUserVariant();
}
- // see if the preference is set in the request
- $req = $wgRequest->getText( 'variant' );
- if( in_array( $req, $this->mVariants ) ) {
- $this->mPreferredVariant = $req;
+ if ( $fromHeader && !$req ) {
+ $req = $this->getHeaderVariant();
+ }
+
+ if ( $wgDefaultLanguageVariant && !$req ) {
+ $req = $this->validateVariant( $wgDefaultLanguageVariant );
+ }
+
+ // This function, unlike the other get*Variant functions, is
+ // not memoized (i.e. there return value is not cached) since
+ // new information might appear during processing after this
+ // is first called.
+ if ( $req ) {
return $req;
}
+ return $this->mMainLanguageCode;
+ }
- // check the syntax /code/ArticleTitle
- if($wgVariantArticlePath!=false && isset($_SERVER['SCRIPT_NAME'])){
- // Note: SCRIPT_NAME probably won't hold the correct value if PHP is run as CGI
- // (it will hold path to php.cgi binary), and might not exist on some very old PHP installations
- $scriptBase = basename( $_SERVER['SCRIPT_NAME'] );
- if(in_array($scriptBase,$this->mVariants)){
- $this->mPreferredVariant = $scriptBase;
- return $this->mPreferredVariant;
- }
+ /**
+ * Validate the variant
+ * @param string $v the variant to validate
+ * @returns mixed returns the variant if it is valid, null otherwise
+ */
+ function validateVariant( $v = null ) {
+ if ( $v !== null && in_array( $v, $this->mVariants ) ) {
+ return $v;
+ }
+ return null;
+ }
+
+ /**
+ * Get the variant specified in the URL
+ *
+ * @returns mixed variant if one found, false otherwise.
+ */
+ function getURLVariant() {
+ global $wgRequest;
+ $ret = null;
+
+ if ( $this->mURLVariant ) {
+ return $this->mURLVariant;
+ }
+
+ // see if the preference is set in the request
+ $ret = $wgRequest->getText( 'variant' );
+
+ if ( !$ret ) {
+ $ret = $wgRequest->getVal( 'uselang' );
}
+ return $this->mURLVariant = $this->validateVariant( $ret );
+ }
+
+ /**
+ * Determine if the user has a variant set.
+ *
+ * @returns mixed variant if one found, false otherwise.
+ */
+ function getUserVariant() {
+ global $wgUser;
+ $ret = null;
+
+ // memoizing this function wreaks havoc on parserTest.php
+ /* if ( $this->mUserVariant ) { */
+ /* return $this->mUserVariant; */
+ /* } */
+
// get language variant preference from logged in users
- // Don't call this on stub objects because that causes infinite
+ // Don't call this on stub objects because that causes infinite
// recursion during initialisation
- if( $fromUser && $wgUser->isLoggedIn() ) {
- $this->mPreferredVariant = $wgUser->getOption('variant');
- return $this->mPreferredVariant;
- }
-
- // see if default variant is globaly set
- if($wgDefaultLanguageVariant != false && in_array( $wgDefaultLanguageVariant, $this->mVariants )){
- $this->mPreferredVariant = $wgDefaultLanguageVariant;
- return $this->mPreferredVariant;
- }
-
- # FIXME rewrite code for parsing http header. The current code
- # is written specific for detecting zh- variants
- if( !$this->mPreferredVariant ) {
- // see if some supported language variant is set in the
- // http header, but we don't set the mPreferredVariant
- // variable in case this is called before the user's
- // preference is loaded
- $pv=$this->mMainLanguageCode;
- if(array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) {
- $header = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
- $zh = strstr($header, $pv.'-');
- if($zh) {
- $ary = split("[,;]",$zh);
- $pv = $ary[0];
- }
+ if ( $wgUser->isLoggedIn() ) {
+ $ret = $wgUser->getOption( 'variant' );
+ }
+ else {
+ // figure out user lang without constructing wgLang to avoid
+ // infinite recursion
+ $ret = $wgUser->getOption( 'language' );
+ }
+
+ return $this->mUserVariant = $this->validateVariant( $ret );
+ }
+
+
+ /**
+ * Determine the language variant from the Accept-Language header.
+ *
+ * @returns mixed variant if one found, false otherwise.
+ */
+ function getHeaderVariant() {
+ global $wgRequest;
+ $ret = null;
+
+ if ( $this->mHeaderVariant ) {
+ return $this->mHeaderVariant;
+ }
+
+ // see if some supported language variant is set in the
+ // http header.
+
+ $acceptLanguage = $wgRequest->getHeader( 'Accept-Language' );
+ if ( !$acceptLanguage ) {
+ return null;
+ }
+
+ // explode by comma
+ $result = StringUtils::explode( ',', strtolower( $acceptLanguage ) );
+ $languages = array();
+
+ foreach ( $result as $elem ) {
+ // if $elem likes 'zh-cn;q=0.9'
+ if ( ( $posi = strpos( $elem, ';' ) ) !== false ) {
+ // get the real language code likes 'zh-cn'
+ $languages[] = substr( $elem, 0, $posi );
+ } else {
+ $languages[] = $elem;
}
- // don't try to return bad variant
- if(in_array( $pv, $this->mVariants ))
- return $pv;
}
- return $this->mMainLanguageCode;
+ $fallback_languages = array();
+ foreach ( $languages as $language ) {
+ // strip whitespace
+ $language = trim( $language );
+ $this->mHeaderVariant = $this->validateVariant( $language );
+ if ( $this->mHeaderVariant ) {
+ break;
+ }
+
+ // To see if there are fallbacks of current language.
+ // We record these fallback variants, and process
+ // them later.
+ $fallbacks = $this->getVariantFallbacks( $language );
+ if ( is_string( $fallbacks ) ) {
+ $fallback_languages[] = $fallbacks;
+ } elseif ( is_array( $fallbacks ) ) {
+ $fallback_languages =
+ array_merge( $fallback_languages,
+ $fallbacks );
+ }
+ }
+
+ if ( !$this->mHeaderVariant ) {
+ // process fallback languages now
+ $fallback_languages = array_unique( $fallback_languages );
+ foreach ( $fallback_languages as $language ) {
+ $this->mHeaderVariant = $this->validateVariant( $language );
+ if ( $this->mHeaderVariant ) {
+ break;
+ }
+ }
+ }
+ return $this->mHeaderVariant;
}
-
+
/**
- * caption convert, base on preg_replace_callback
+ * Caption convert, base on preg_replace_callback.
*
- * to convert text in "title" or "alt", like '<img alt="text" ... '
+ * To convert text in "title" or "alt", like '<img alt="text" ... '
* or '<span title="text" ... '
*
* @return string like ' alt="yyyy"' or ' title="yyyy"'
@@ -215,31 +310,35 @@ class LanguageConverter {
$title = $matches[1];
$text = $matches[2];
// we convert captions except URL
- if( !strpos( $text, '://' ) )
- $text = $this->translate($text, $toVariant);
+ if ( !strpos( $text, '://' ) ) {
+ $text = $this->translate( $text, $toVariant );
+ }
return " $title=\"$text\"";
}
/**
- * dictionary-based conversion
+ * Dictionary-based conversion.
*
* @param string $text the text to be converted
* @param string $toVariant the target language code
* @return string the converted text
* @private
*/
- function autoConvert($text, $toVariant=false) {
- $fname="LanguageConverter::autoConvert";
+ function autoConvert( $text, $toVariant = false ) {
+ $fname = 'LanguageConverter::autoConvert';
wfProfileIn( $fname );
- if(!$this->mTablesLoaded)
+ if ( !$this->mTablesLoaded ) {
$this->loadTables();
+ }
- if(!$toVariant)
+ if ( !$toVariant ) {
$toVariant = $this->getPreferredVariant();
- if(!in_array($toVariant, $this->mVariants))
- return $text;
+ if ( !$toVariant ) {
+ return $text;
+ }
+ }
/* we convert everything except:
1. html markups (anything between < and >)
@@ -247,10 +346,11 @@ class LanguageConverter {
3. place holders created by the parser
*/
global $wgParser;
- if (isset($wgParser) && $wgParser->UniqPrefix()!=''){
+ if ( isset( $wgParser ) && $wgParser->UniqPrefix() != '' ) {
$marker = '|' . $wgParser->UniqPrefix() . '[\-a-zA-Z0-9]+';
- } else
- $marker = "";
+ } else {
+ $marker = '';
+ }
// this one is needed when the text is inside an html markup
$htmlfix = '|<[^>]+$|^[^<>]*>';
@@ -262,31 +362,49 @@ class LanguageConverter {
// disable conversion of <pre xxxx> ... </pre>
$prefix = '<pre.*?>.*?<\/pre>|';
- $reg = '/'.$codefix . $scriptfix . $prefix . '<[^>]+>|&[a-zA-Z#][a-z0-9]+;' . $marker . $htmlfix . '/s';
-
- $matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
-
- $m = array_shift($matches);
-
- $ret = $this->translate($m[0], $toVariant);
- $mstart = $m[1]+strlen($m[0]);
-
- // enable convertsion of '<img alt="xxxx" ... ' or '<span title="xxxx" ... '
- $captionpattern = '/\s(title|alt)\s*=\s*"([\s\S]*?)"/';
- foreach($matches as $m) {
- $mark = substr($text, $mstart, $m[1]-$mstart);
- $mark = preg_replace_callback($captionpattern, array(&$this, 'captionConvert'), $mark);
- $ret .= $mark;
- $ret .= $this->translate($m[0], $toVariant);
- $mstart = $m[1] + strlen($m[0]);
+ $reg = '/' . $codefix . $scriptfix . $prefix .
+ '<[^>]+>|&[a-zA-Z#][a-z0-9]+;' . $marker . $htmlfix . '/s';
+
+ $matches = preg_split( $reg, $text, - 1, PREG_SPLIT_OFFSET_CAPTURE );
+
+ $m = array_shift( $matches );
+
+ $ret = $this->translate( $m[0], $toVariant );
+ $mstart = $m[1] + strlen( $m[0] );
+
+ // enable convertsion of '<img alt="xxxx" ... '
+ // or '<span title="xxxx" ... '
+ $captionpattern = '/\s(title|alt)\s*=\s*"([\s\S]*?)"/';
+
+ $trtext = '';
+ $trtextmark = "\0";
+ $notrtext = array();
+ foreach ( $matches as $m ) {
+ $mark = substr( $text, $mstart, $m[1] - $mstart );
+ $mark = preg_replace_callback( $captionpattern,
+ array( &$this, 'captionConvert' ),
+ $mark );
+ // Let's convert the trtext only once,
+ // it would give us more performance improvement
+ $notrtext[] = $mark;
+ $trtext .= $m[0] . $trtextmark;
+ $mstart = $m[1] + strlen( $m[0] );
+ }
+ $notrtext[] = '';
+ $trtext = $this->translate( $trtext, $toVariant );
+ $trtext = StringUtils::explode( $trtextmark, $trtext );
+ foreach ( $trtext as $t ) {
+ $ret .= array_shift( $notrtext );
+ $ret .= $t;
}
wfProfileOut( $fname );
return $ret;
}
/**
- * Translate a string to a variant
- * Doesn't process markup or do any of that other stuff, for that use convert()
+ * Translate a string to a variant.
+ * Doesn't process markup or do any of that other stuff, for that use
+ * convert().
*
* @param string $text Text to convert
* @param string $variant Variant language code
@@ -295,29 +413,35 @@ class LanguageConverter {
*/
function translate( $text, $variant ) {
wfProfileIn( __METHOD__ );
- if( !$this->mTablesLoaded )
- $this->loadTables();
- $text = $this->mTables[$variant]->replace( $text );
+ // If $text is empty or only includes spaces, do nothing
+ // Otherwise translate it
+ if ( trim( $text ) ) {
+ if ( !$this->mTablesLoaded ) {
+ $this->loadTables();
+ }
+ $text = $this->mTables[$variant]->replace( $text );
+ }
wfProfileOut( __METHOD__ );
return $text;
}
/**
- * convert text to all supported variants
+ * Convert text to all supported variants.
*
* @param string $text the text to be converted
* @return array of string
* @public
*/
- function autoConvertToAllVariants($text) {
- $fname="LanguageConverter::autoConvertToAllVariants";
+ function autoConvertToAllVariants( $text ) {
+ $fname = 'LanguageConverter::autoConvertToAllVariants';
wfProfileIn( $fname );
- if( !$this->mTablesLoaded )
+ if ( !$this->mTablesLoaded ) {
$this->loadTables();
+ }
$ret = array();
- foreach($this->mVariants as $variant) {
- $ret[$variant] = $this->translate($text, $variant);
+ foreach ( $this->mVariants as $variant ) {
+ $ret[$variant] = $this->translate( $text, $variant );
}
wfProfileOut( $fname );
@@ -325,267 +449,272 @@ class LanguageConverter {
}
/**
- * convert link text to all supported variants
+ * Convert link text to all supported variants.
*
* @param string $text the text to be converted
* @return array of string
* @public
*/
- function convertLinkToAllVariants($text) {
- if( !$this->mTablesLoaded )
+ function convertLinkToAllVariants( $text ) {
+ if ( !$this->mTablesLoaded ) {
$this->loadTables();
+ }
$ret = array();
- $tarray = explode($this->mMarkup['begin'], $text);
- $tfirst = array_shift($tarray);
+ $tarray = StringUtils::explode( '-{', $text );
+ $first = true;
- foreach($this->mVariants as $variant)
- $ret[$variant] = $this->translate($tfirst,$variant);
+ foreach ( $tarray as $txt ) {
+ if ( $first ) {
+ $first = false;
+ foreach ( $this->mVariants as $variant ) {
+ $ret[$variant] = $this->translate( $txt, $variant );
+ }
+ continue;
+ }
- foreach($tarray as $txt) {
- $marked = explode($this->mMarkup['end'], $txt, 2);
+ $marked = explode( '}-', $txt, 2 );
- foreach($this->mVariants as $variant){
- $ret[$variant] .= $this->mMarkup['begin'].$marked[0].$this->mMarkup['end'];
- if(array_key_exists(1, $marked))
- $ret[$variant] .= $this->translate($marked[1],$variant);
+ foreach ( $this->mVariants as $variant ) {
+ $ret[$variant] .= '-{' . $marked[0] . '}-';
+ if ( array_key_exists( 1, $marked ) ) {
+ $ret[$variant] .= $this->translate( $marked[1], $variant );
+ }
}
-
+
}
return $ret;
}
-
+
/**
- * prepare manual conversion table
+ * Prepare manual conversion table.
* @private
*/
- function prepareManualConv( $convRule ){
- // use syntax -{T|zh:TitleZh;zh-tw:TitleTw}- for custom conversion in title
- $title = $convRule->getTitle();
- if( $title ){
- $this->mTitleFromFlag = true;
- $this->mTitleDisplay = $title;
- }
+ function applyManualConv( $convRule ) {
+ // use syntax -{T|zh:TitleZh;zh-tw:TitleTw}- for custom
+ // conversion in title
+ $this->mConvRuleTitle = $convRule->getTitle();
- //apply manual conversion table to global table
+ // apply manual conversion table to global table
$convTable = $convRule->getConvTable();
$action = $convRule->getRulesAction();
- foreach( $convTable as $v => $t ) {
- if( !in_array( $v, $this->mVariants ) )continue;
- if( $action=="add" ) {
- foreach( $t as $from => $to ) {
+ foreach ( $convTable as $variant => $pair ) {
+ if ( !$this->validateVariant( $variant ) ) {
+ continue;
+ }
+
+ if ( $action == 'add' ) {
+ foreach ( $pair as $from => $to ) {
// to ensure that $from and $to not be left blank
// so $this->translate() could always return a string
- if ( $from || $to )
+ if ( $from || $to ) {
// more efficient than array_merge(), about 2.5 times.
- $this->mManualAddTables[$v][$from] = $to;
- }
- }
- elseif ( $action == "remove" ) {
- foreach ( $t as $from=>$to ) {
- if ( $from || $to )
- $this->mManualRemoveTables[$v][$from] = $to;
+ $this->mTables[$variant]->setPair( $from, $to );
+ }
}
+ } elseif ( $action == 'remove' ) {
+ $this->mTables[$variant]->removeArray( $pair );
}
}
}
/**
- * apply manual conversion from $this->mManualAddTables and $this->mManualRemoveTables
- * @private
- */
- function applyManualConv(){
- //apply manual conversion table to global table
- foreach($this->mVariants as $v) {
- if (count($this->mManualAddTables[$v]) > 0) {
- $this->mTables[$v]->mergeArray($this->mManualAddTables[$v]);
- }
- if (count($this->mManualRemoveTables[$v]) > 0)
- $this->mTables[$v]->removeArray($this->mManualRemoveTables[$v]);
- }
- }
-
- /**
- * Convert text using a parser object for context
- * @public
+ * Convert text to different variants of a language. The automatic
+ * conversion is done in autoConvert(). Here we parse the text
+ * marked with -{}-, which specifies special conversions of the
+ * text that can not be accomplished in autoConvert().
+ *
+ * Syntax of the markup:
+ * -{code1:text1;code2:text2;...}- or
+ * -{flags|code1:text1;code2:text2;...}- or
+ * -{text}- in which case no conversion should take place for text
+ *
+ * @param $text String: text to be converted
+ * @return String: converted text
*/
- function parserConvert( $text, &$parser ) {
+ public function convert( $text ) {
global $wgDisableLangConversion;
- /* don't do anything if this is the conversion table */
- if ( $parser->getTitle()->getNamespace() == NS_MEDIAWIKI &&
- strpos($parser->mTitle->getText(), "Conversiontable") !== false )
- {
- return $text;
- }
-
- if ( $wgDisableLangConversion )
- return $text;
+ if ( $wgDisableLangConversion ) return $text;
- $text = $this->convert( $text );
+ $variant = $this->getPreferredVariant();
- if ( $this->mTitleFromFlag )
- $parser->mOutput->setTitleText( $this->mTitleDisplay );
- return $text;
- }
-
- /**
- * convert namespace
- * @param string $title the title included namespace
- * @return array of string
- * @private
- */
- function convertNamespace( $title, $variant ) {
- $splittitle = explode( ':', $title );
- if (count($splittitle) < 2)
- return $title;
- if ( isset( $this->mNamespaceTables[$variant][$splittitle[0]] ) )
- $splittitle[0] = $this->mNamespaceTables[$variant][$splittitle[0]];
- $ret = implode(':', $splittitle );
- return $ret;
+ return $this->recursiveConvertTopLevel( $text, $variant );
}
/**
- * convert title
- * @private
+ * Convert a Title object to a readable string in the preferred variant
*/
- function convertTitle( $text, $variant ){
- global $wgDisableTitleConversion, $wgUser;
-
- // check for global param and __NOTC__ tag
- if( $wgDisableTitleConversion || !$this->mDoTitleConvert || $wgUser->getOption('noconvertlink') == 1 ) {
- $this->mTitleDisplay = $text;
- return $text;
- }
-
- // use the title from the T flag if any
- if( $this->mTitleFromFlag ){
- $this->mTitleFromFlag = false;
- return $this->mTitleDisplay;
- }
-
- global $wgRequest;
- $isredir = $wgRequest->getText( 'redirect', 'yes' );
- $action = $wgRequest->getText( 'action' );
- $linkconvert = $wgRequest->getText( 'linkconvert', 'yes' );
- if ( $isredir == 'no' || $action == 'edit' || $action == 'submit' || $linkconvert == 'no' ) {
- return $text;
+ public function convertTitle( $title ) {
+ $variant = $this->getPreferredVariant();
+ if ( $title->getNamespace() === NS_MAIN ) {
+ $text = '';
} else {
- $text = $this->convertNamespace( $text, $variant );
- $this->mTitleDisplay = $this->convert( $text );
- return $this->mTitleDisplay;
+ $text = $title->getNsText();
+ if ( isset( $this->mNamespaceTables[$variant][$text] ) ) {
+ $text = $this->mNamespaceTables[$variant][$text];
+ }
+ $text .= ':';
}
+ $text .= $title->getText();
+ $text = $this->autoConvert( $text, $variant );
+ return $text;
}
- /**
- * convert text to different variants of a language. the automatic
- * conversion is done in autoConvert(). here we parse the text
- * marked with -{}-, which specifies special conversions of the
- * text that can not be accomplished in autoConvert()
- *
- * syntax of the markup:
- * -{code1:text1;code2:text2;...}- or
- * -{flags|code1:text1;code2:text2;...}- or
- * -{text}- in which case no conversion should take place for text
- *
- * @param string $text text to be converted
- * @param bool $isTitle whether this conversion is for the article title
- * @return string converted text
- * @public
- */
- function convert( $text, $isTitle = false ) {
+ protected function recursiveConvertTopLevel( $text, $variant, $depth = 0 ) {
+ $startPos = 0;
+ $out = '';
+ $length = strlen( $text );
+ while ( $startPos < $length ) {
+ $m = false;
+ $pos = strpos( $text, '-{', $startPos );
+
+ if ( $pos === false ) {
+ // No more markup, append final segment
+ $out .= $this->autoConvert( substr( $text, $startPos ), $variant );
+ $startPos = $length;
+ return $out;
+ }
- $mw =& MagicWord::get( 'notitleconvert' );
- if( $mw->matchAndRemove( $text ) )
- $this->mDoTitleConvert = false;
- $mw =& MagicWord::get( 'nocontentconvert' );
- if( $mw->matchAndRemove( $text ) ) {
- $this->mDoContentConvert = false;
+ // Markup found
+ // Append initial segment
+ $out .= $this->autoConvert( substr( $text, $startPos, $pos - $startPos ), $variant );
+
+ // Advance position
+ $startPos = $pos;
+
+ // Do recursive conversion
+ $out .= $this->recursiveConvertRule( $text, $variant, $startPos, $depth + 1 );
}
- // no conversion if redirecting
- $mw =& MagicWord::get( 'redirect' );
- if( $mw->matchStart( $text ) )
- return $text;
+ return $out;
+ }
- $plang = $this->getPreferredVariant();
+ protected function recursiveConvertRule( $text, $variant, &$startPos, $depth = 0 ) {
+ // Quick sanity check (no function calls)
+ if ( $text[$startPos] !== '-' || $text[$startPos + 1] !== '{' ) {
+ throw new MWException( __METHOD__.': invalid input string' );
+ }
- // for title convertion
- if ( $isTitle ) return $this->convertTitle( $text, $plang );
+ $startPos += 2;
+ $inner = '';
+ $warningDone = false;
+ $length = strlen( $text );
- $tarray = StringUtils::explode( $this->mMarkup['end'], $text );
- $text = '';
+ while ( $startPos < $length ) {
+ $m = false;
+ preg_match( '/-\{|\}-/', $text, $m, PREG_OFFSET_CAPTURE, $startPos );
+ if ( !$m ) {
+ // Unclosed rule
+ break;
+ }
- $marks = array();
- foreach ( $tarray as $txt ) {
- $marked = explode( $this->mMarkup['begin'], $txt, 2 );
- if ( array_key_exists( 1, $marked ) ) {
- $crule = new ConverterRule($marked[1], $this);
- $crule->parse( $plang );
- $marked[1] = $crule->getDisplay();
- $this->prepareManualConv( $crule );
+ $token = $m[0][0];
+ $pos = $m[0][1];
+
+ // Markup found
+ // Append initial segment
+ $inner .= substr( $text, $startPos, $pos - $startPos );
+
+ // Advance position
+ $startPos = $pos;
+
+ switch ( $token ) {
+ case '-{':
+ // Check max depth
+ if ( $depth >= $this->mMaxDepth ) {
+ $inner .= '-{';
+ if ( !$warningDone ) {
+ $inner .= '<span class="error">' .
+ wfMsgForContent( 'language-converter-depth-warning',
+ $this->mMaxDepth ) .
+ '</span>';
+ $warningDone = true;
+ }
+ $startPos += 2;
+ continue;
+ }
+ // Recursively parse another rule
+ $inner .= $this->recursiveConvertRule( $text, $variant, $startPos, $depth + 1 );
+ break;
+ case '}-':
+ // Apply the rule
+ $startPos += 2;
+ $rule = new ConverterRule( $inner, $this );
+ $rule->parse( $variant );
+ $this->applyManualConv( $rule );
+ return $rule->getDisplay();
+ default:
+ throw new MWException( __METHOD__.': invalid regex match' );
}
- else
- $marked[0] .= $this->mMarkup['end'];
- array_push( $marks, $marked );
- }
- $this->applyManualConv();
- foreach ( $marks as $marked ) {
- if( $this->mDoContentConvert )
- $text .= $this->autoConvert( $marked[0], $plang );
- else
- $text .= $marked[0];
- if( array_key_exists( 1, $marked ) )
- $text .= $marked[1];
- }
- // Remove the last delimiter (wasn't real)
- $text = substr( $text, 0, -strlen( $this->mMarkup['end'] ) );
+ }
- return $text;
+ // Unclosed rule
+ if ( $startPos < $length ) {
+ $inner .= substr( $text, $startPos );
+ }
+ $startPos = $length;
+ return '-{' . $this->autoConvert( $inner, $variant );
}
/**
- * if a language supports multiple variants, it is
+ * If a language supports multiple variants, it is
* possible that non-existing link in one variant
- * actually exists in another variant. this function
+ * actually exists in another variant. This function
* tries to find it. See e.g. LanguageZh.php
*
* @param string $link the name of the link
* @param mixed $nt the title object of the link
* @param boolean $ignoreOtherCond: to disable other conditions when
- * we need to transclude a template or update a category's link
+ * we need to transclude a template or update a category's link
* @return null the input parameters may be modified upon return
* @public
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
- global $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest, $wgUser;
+ # If the article has already existed, there is no need to
+ # check it again, otherwise it may cause a fault.
+ if ( is_object( $nt ) && $nt->exists() ) {
+ return;
+ }
+
+ global $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest,
+ $wgUser;
$isredir = $wgRequest->getText( 'redirect', 'yes' );
$action = $wgRequest->getText( 'action' );
$linkconvert = $wgRequest->getText( 'linkconvert', 'yes' );
- $disableLinkConversion = $wgDisableLangConversion || $wgDisableTitleConversion;
+ $disableLinkConversion = $wgDisableLangConversion
+ || $wgDisableTitleConversion;
$linkBatch = new LinkBatch();
- $ns=NS_MAIN;
+ $ns = NS_MAIN;
- if ( $disableLinkConversion || ( !$ignoreOtherCond && ( $isredir == 'no' || $action == 'edit'
- || $action == 'submit' || $linkconvert == 'no' || $wgUser->getOption('noconvertlink') == 1 ) ) )
+ if ( $disableLinkConversion ||
+ ( !$ignoreOtherCond &&
+ ( $isredir == 'no'
+ || $action == 'edit'
+ || $action == 'submit'
+ || $linkconvert == 'no'
+ || $wgUser->getOption( 'noconvertlink' ) == 1 ) ) ) {
return;
+ }
- if(is_object($nt))
+ if ( is_object( $nt ) ) {
$ns = $nt->getNamespace();
+ }
- $variants = $this->autoConvertToAllVariants($link);
- if($variants == false) //give up
+ $variants = $this->autoConvertToAllVariants( $link );
+ if ( $variants == false ) { // give up
return;
+ }
$titles = array();
- foreach( $variants as $v ) {
- if($v != $link){
+ foreach ( $variants as $v ) {
+ if ( $v != $link ) {
$varnt = Title::newFromText( $v, $ns );
- if(!is_null($varnt)){
- $linkBatch->addObj($varnt);
- $titles[]=$varnt;
+ if ( !is_null( $varnt ) ) {
+ $linkBatch->addObj( $varnt );
+ $titles[] = $varnt;
}
}
}
@@ -593,8 +722,8 @@ class LanguageConverter {
// fetch all variants in single query
$linkBatch->execute();
- foreach( $titles as $varnt ) {
- if( $varnt->getArticleID() > 0 ) {
+ foreach ( $titles as $varnt ) {
+ if ( $varnt->getArticleID() > 0 ) {
$nt = $varnt;
$link = $varnt->getText();
break;
@@ -603,7 +732,7 @@ class LanguageConverter {
}
/**
- * returns language specific hash options
+ * Returns language specific hash options.
*
* @public
*/
@@ -612,143 +741,110 @@ class LanguageConverter {
return '!' . $variant ;
}
- /**
- * get title text as defined in the body of the article text
- *
- * @public
- */
- function getParsedTitle() {
- return $this->mTitleDisplay;
- }
-
/**
- * a write lock to the cache
- *
- * @private
- */
- function lockCache() {
- global $wgMemc;
- $success = false;
- for($i=0; $i<30; $i++) {
- if($success = $wgMemc->add($this->mCacheKey . "lock", 1, 10))
- break;
- sleep(1);
- }
- return $success;
- }
-
- /**
- * unlock cache
- *
- * @private
- */
- function unlockCache() {
- global $wgMemc;
- $wgMemc->delete($this->mCacheKey . "lock");
- }
-
-
- /**
- * Load default conversion tables
- * This method must be implemented in derived class
+ * Load default conversion tables.
+ * This method must be implemented in derived class.
*
* @private
*/
function loadDefaultTables() {
- $name = get_class($this);
- wfDie("Must implement loadDefaultTables() method in class $name");
+ $name = get_class( $this );
+ wfDie( "Must implement loadDefaultTables() method in class $name" );
}
/**
- * load conversion tables either from the cache or the disk
+ * Load conversion tables either from the cache or the disk.
* @private
*/
- function loadTables($fromcache=true) {
+ function loadTables( $fromcache = true ) {
global $wgMemc;
- if( $this->mTablesLoaded )
+ if ( $this->mTablesLoaded ) {
return;
+ }
wfProfileIn( __METHOD__ );
$this->mTablesLoaded = true;
$this->mTables = false;
- if($fromcache) {
- wfProfileIn( __METHOD__.'-cache' );
+ if ( $fromcache ) {
+ wfProfileIn( __METHOD__ . '-cache' );
$this->mTables = $wgMemc->get( $this->mCacheKey );
- wfProfileOut( __METHOD__.'-cache' );
+ wfProfileOut( __METHOD__ . '-cache' );
}
- if ( !$this->mTables || !isset( $this->mTables[self::CACHE_VERSION_KEY] ) ) {
- wfProfileIn( __METHOD__.'-recache' );
+ if ( !$this->mTables
+ || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
+ wfProfileIn( __METHOD__ . '-recache' );
// not in cache, or we need a fresh reload.
// we will first load the default tables
// then update them using things in MediaWiki:Zhconversiontable/*
$this->loadDefaultTables();
- foreach($this->mVariants as $var) {
- $cached = $this->parseCachedTable($var);
- $this->mTables[$var]->mergeArray($cached);
+ foreach ( $this->mVariants as $var ) {
+ $cached = $this->parseCachedTable( $var );
+ $this->mTables[$var]->mergeArray( $cached );
}
$this->postLoadTables();
$this->mTables[self::CACHE_VERSION_KEY] = true;
- if($this->lockCache()) {
- $wgMemc->set($this->mCacheKey, $this->mTables, 43200);
- $this->unlockCache();
- }
- wfProfileOut( __METHOD__.'-recache' );
+ $wgMemc->set( $this->mCacheKey, $this->mTables, 43200 );
+ wfProfileOut( __METHOD__ . '-recache' );
}
wfProfileOut( __METHOD__ );
}
/**
- * Hook for post processig after conversion tables are loaded
+ * Hook for post processig after conversion tables are loaded.
*
*/
- function postLoadTables() {}
+ function postLoadTables() { }
/**
- * Reload the conversion tables
+ * Reload the conversion tables.
*
* @private
*/
function reloadTables() {
- if($this->mTables)
- unset($this->mTables);
+ if ( $this->mTables ) {
+ unset( $this->mTables );
+ }
$this->mTablesLoaded = false;
- $this->loadTables(false);
+ $this->loadTables( false );
}
/**
- * parse the conversion table stored in the cache
+ * Parse the conversion table stored in the cache.
*
- * the tables should be in blocks of the following form:
+ * The tables should be in blocks of the following form:
* -{
* word => word ;
* word => word ;
* ...
* }-
*
- * to make the tables more manageable, subpages are allowed
- * and will be parsed recursively if $recursive=true
+ * To make the tables more manageable, subpages are allowed
+ * and will be parsed recursively if $recursive == true.
*
*/
- function parseCachedTable($code, $subpage='', $recursive=true) {
+ function parseCachedTable( $code, $subpage = '', $recursive = true ) {
global $wgMessageCache;
static $parsed = array();
- if(!is_object($wgMessageCache))
+ if ( !is_object( $wgMessageCache ) ) {
return array();
+ }
- $key = 'Conversiontable/'.$code;
- if($subpage)
+ $key = 'Conversiontable/' . $code;
+ if ( $subpage ) {
$key .= '/' . $subpage;
-
- if(array_key_exists($key, $parsed))
+ }
+ if ( array_key_exists( $key, $parsed ) ) {
return array();
+ }
if ( strpos( $code, '/' ) === false ) {
$txt = $wgMessageCache->get( 'Conversiontable', true, $code );
} else {
- $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Conversiontable/$code" );
+ $title = Title::makeTitleSafe( NS_MEDIAWIKI,
+ "Conversiontable/$code" );
if ( $title && $title->exists() ) {
$article = new Article( $title );
$txt = $article->getContents();
@@ -759,57 +855,66 @@ class LanguageConverter {
// get all subpage links of the form
// [[MediaWiki:conversiontable/zh-xx/...|...]]
- $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ':Conversiontable';
- $subs = explode('[[', $txt);
+ $linkhead = $this->mLangObj->getNsText( NS_MEDIAWIKI ) .
+ ':Conversiontable';
+ $subs = StringUtils::explode( '[[', $txt );
$sublinks = array();
- foreach( $subs as $sub ) {
- $link = explode(']]', $sub, 2);
- if(count($link) != 2)
+ foreach ( $subs as $sub ) {
+ $link = explode( ']]', $sub, 2 );
+ if ( count( $link ) != 2 ) {
continue;
- $b = explode('|', $link[0]);
- $b = explode('/', trim($b[0]), 3);
- if(count($b)==3)
+ }
+ $b = explode( '|', $link[0], 2 );
+ $b = explode( '/', trim( $b[0] ), 3 );
+ if ( count( $b ) == 3 ) {
$sublink = $b[2];
- else
+ } else {
$sublink = '';
+ }
- if($b[0] == $linkhead && $b[1] == $code) {
+ if ( $b[0] == $linkhead && $b[1] == $code ) {
$sublinks[] = $sublink;
}
}
// parse the mappings in this page
- $blocks = explode($this->mMarkup['begin'], $txt);
- array_shift($blocks);
+ $blocks = StringUtils::explode( '-{', $txt );
$ret = array();
- foreach($blocks as $block) {
- $mappings = explode($this->mMarkup['end'], $block, 2);
- $stripped = str_replace(array("'", '"', '*','#'), '', $mappings[0]);
- $table = explode( ';', $stripped );
- foreach( $table as $t ) {
- $m = explode( '=>', $t );
- if( count( $m ) != 2)
+ $first = true;
+ foreach ( $blocks as $block ) {
+ if ( $first ) {
+ // Skip the part before the first -{
+ $first = false;
+ continue;
+ }
+ $mappings = explode( '}-', $block, 2 );
+ $stripped = str_replace( array( "'", '"', '*', '#' ), '',
+ $mappings[0] );
+ $table = StringUtils::explode( ';', $stripped );
+ foreach ( $table as $t ) {
+ $m = explode( '=>', $t, 3 );
+ if ( count( $m ) != 2 )
continue;
// trim any trailling comments starting with '//'
- $tt = explode('//', $m[1], 2);
- $ret[trim($m[0])] = trim($tt[0]);
+ $tt = explode( '//', $m[1], 2 );
+ $ret[trim( $m[0] )] = trim( $tt[0] );
}
}
$parsed[$key] = true;
// recursively parse the subpages
- if($recursive) {
- foreach($sublinks as $link) {
- $s = $this->parseCachedTable($code, $link, $recursive);
- $ret = array_merge($ret, $s);
+ if ( $recursive ) {
+ foreach ( $sublinks as $link ) {
+ $s = $this->parseCachedTable( $code, $link, $recursive );
+ $ret = array_merge( $ret, $s );
}
}
- if ($this->mUcfirst) {
- foreach ($ret as $k => $v) {
- $ret[Language::ucfirst($k)] = Language::ucfirst($v);
+ if ( $this->mUcfirst ) {
+ foreach ( $ret as $k => $v ) {
+ $ret[Language::ucfirst( $k )] = Language::ucfirst( $v );
}
}
return $ret;
@@ -817,42 +922,44 @@ class LanguageConverter {
/**
* Enclose a string with the "no conversion" tag. This is used by
- * various functions in the Parser
+ * various functions in the Parser.
*
* @param string $text text to be tagged for no conversion
* @return string the tagged text
* @public
*/
- function markNoConversion($text, $noParse=false) {
+ function markNoConversion( $text, $noParse = false ) {
# don't mark if already marked
- if(strpos($text, $this->mMarkup['begin']) ||
- strpos($text, $this->mMarkup['end']))
+ if ( strpos( $text, '-{' ) || strpos( $text, '}-' ) ) {
return $text;
+ }
- $ret = $this->mMarkup['begin'] .'R|'. $text . $this->mMarkup['end'];
+ $ret = "-{R|$text}-";
return $ret;
}
/**
- * convert the sorting key for category links. this should make different
- * keys that are variants of each other map to the same key
+ * Convert the sorting key for category links. This should make different
+ * keys that are variants of each other map to the same key.
*/
function convertCategoryKey( $key ) {
return $key;
}
+
/**
- * hook to refresh the cache of conversion tables when
- * MediaWiki:conversiontable* is updated
+ * Hook to refresh the cache of conversion tables when
+ * MediaWiki:conversiontable* is updated.
* @private
*/
- function OnArticleSaveComplete($article, $user, $text, $summary, $isminor, $iswatch, $section, $flags, $revision) {
+ function OnArticleSaveComplete( $article, $user, $text, $summary, $isminor,
+ $iswatch, $section, $flags, $revision ) {
$titleobj = $article->getTitle();
- if($titleobj->getNamespace() == NS_MEDIAWIKI) {
+ if ( $titleobj->getNamespace() == NS_MEDIAWIKI ) {
$title = $titleobj->getDBkey();
- $t = explode('/', $title, 3);
- $c = count($t);
- if( $c > 1 && $t[0] == 'Conversiontable' ) {
- if(in_array($t[1], $this->mVariants)) {
+ $t = explode( '/', $title, 3 );
+ $c = count( $t );
+ if ( $c > 1 && $t[0] == 'Conversiontable' ) {
+ if ( $this->validateVariant( $t[1] ) ) {
$this->reloadTables();
}
}
@@ -860,30 +967,64 @@ class LanguageConverter {
return true;
}
- /**
- * Armour rendered math against conversion
- * Wrap math into rawoutput -{R| math }- syntax
+ /**
+ * Armour rendered math against conversion.
+ * Wrap math into rawoutput -{R| math }- syntax.
* @public
*/
- function armourMath($text){
- $ret = $this->mMarkup['begin'] . 'R|' . $text . $this->mMarkup['end'];
+ function armourMath( $text ) {
+ // we need to convert '-{' and '}-' to '-&#123;' and '&#125;-'
+ // to avoid a unwanted '}-' appeared after the math-image.
+ $text = strtr( $text, array( '-{' => '-&#123;', '}-' => '&#125;-' ) );
+ $ret = "-{R|$text}-";
return $ret;
}
+
+ /**
+ * Get the cached separator pattern for ConverterRule::parseRules()
+ */
+ function getVarSeparatorPattern() {
+ if ( is_null( $this->mVarSeparatorPattern ) ) {
+ // varsep_pattern for preg_split:
+ // text should be splited by ";" only if a valid variant
+ // name exist after the markup, for example:
+ // -{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:\
+ // <span style="font-size:120%;">yyy</span>;}-
+ // we should split it as:
+ // array(
+ // [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>'
+ // [1] => 'zh-hant:<span style="font-size:120%;">yyy</span>'
+ // [2] => ''
+ // )
+ $pat = '/;\s*(?=';
+ foreach ( $this->mVariants as $variant ) {
+ // zh-hans:xxx;zh-hant:yyy
+ $pat .= $variant . '\s*:|';
+ // xxx=>zh-hans:yyy; xxx=>zh-hant:zzz
+ $pat .= '[^;]*?=>\s*' . $variant . '\s*:|';
+ }
+ $pat .= '\s*$)/';
+ $this->mVarSeparatorPattern = $pat;
+ }
+ return $this->mVarSeparatorPattern;
+ }
}
/**
- * parser for rules of language conversion , parse rules in -{ }- tag
+ * Parser for rules of language conversion , parse rules in -{ }- tag.
* @ingroup Language
* @author fdcn <fdcn64@gmail.com>, PhiLiP <philip.npc@gmail.com>
*/
class ConverterRule {
var $mText; // original text in -{text}-
- var $mConverter; // LanguageConverter object
- var $mManualCodeError='<strong class="error">code error!</strong>';
- var $mRuleDisplay = '',$mRuleTitle=false;
+ var $mConverter; // LanguageConverter object
+ var $mManualCodeError = '<strong class="error">code error!</strong>';
+ var $mRuleDisplay = '';
+ var $mRuleTitle = false;
var $mRules = '';// string : the text of the rules
var $mRulesAction = 'none';
var $mFlags = array();
+ var $mVariantFlags = array();
var $mConvTable = array();
var $mBidtable = array();// array of the translation in each variant
var $mUnidtable = array();// array of the translation in each variant
@@ -891,107 +1032,98 @@ class ConverterRule {
/**
* Constructor
*
- * @param string $text the text between -{ and }-
- * @param object $converter a LanguageConverter object
- * @access public
+ * @param $text String: the text between -{ and }-
+ * @param $converter LanguageConverter object
*/
- function __construct($text,$converter){
+ public function __construct( $text, $converter ) {
$this->mText = $text;
- $this->mConverter=$converter;
- foreach($converter->mVariants as $v){
- $this->mConvTable[$v]=array();
- }
+ $this->mConverter = $converter;
}
/**
- * check if variants array in convert array
+ * Check if variants array in convert array.
*
- * @param string $variant Variant language code
- * @return string Translated text
- * @public
+ * @param $variants Array or string: variant language code
+ * @return String: translated text
*/
- function getTextInBidtable($variants){
- if(is_string($variants)){ $variants=array($variants); }
- if(!is_array($variants)) return false;
- foreach ($variants as $variant){
- if(array_key_exists($variant, $this->mBidtable)){
+ public function getTextInBidtable( $variants ) {
+ $variants = (array)$variants;
+ if ( !$variants ) {
+ return false;
+ }
+ foreach ( $variants as $variant ) {
+ if ( isset( $this->mBidtable[$variant] ) ) {
return $this->mBidtable[$variant];
}
}
return false;
}
-
+
/**
* Parse flags with syntax -{FLAG| ... }-
* @private
*/
- function parseFlags(){
+ function parseFlags() {
$text = $this->mText;
- if(strlen($text) < 2 ) {
- $this->mFlags = array( 'R' );
- $this->mRules = $text;
- return;
- }
-
$flags = array();
- $markup = $this->mConverter->mMarkup;
- $validFlags = $this->mConverter->mFlags;
- $variants = $this->mConverter->mVariants;
-
- $tt = explode($markup['flagsep'], $text, 2);
- if(count($tt) == 2) {
- $f = explode($markup['varsep'], $tt[0]);
- foreach($f as $ff) {
- $ff = trim($ff);
- if(array_key_exists($ff, $validFlags) &&
- !in_array($validFlags[$ff], $flags))
- $flags[] = $validFlags[$ff];
+ $variantFlags = array();
+
+ $sepPos = strpos( $text, '|' );
+ if ( $sepPos !== false ) {
+ $validFlags = $this->mConverter->mFlags;
+ $f = StringUtils::explode( ';', substr( $text, 0, $sepPos ) );
+ foreach ( $f as $ff ) {
+ $ff = trim( $ff );
+ if ( isset( $validFlags[$ff] ) ) {
+ $flags[$validFlags[$ff]] = true;
+ }
}
- $rules = $tt[1];
- } else {
- $rules = $text;
- }
-
- //check flags
- if( in_array('R',$flags) ){
- $flags = array('R');// remove other flags
- } elseif ( in_array('N',$flags) ){
- $flags = array('N');// remove other flags
- } elseif ( in_array('-',$flags) ){
- $flags = array('-');// remove other flags
- } elseif (count($flags)==1 && $flags[0]=='T'){
- $flags[]='H';
- } elseif ( in_array('H',$flags) ){
+ $text = strval( substr( $text, $sepPos + 1 ) );
+ }
+
+ if ( !$flags ) {
+ $flags['S'] = true;
+ } elseif ( isset( $flags['R'] ) ) {
+ $flags = array( 'R' => true );// remove other flags
+ } elseif ( isset( $flags['N'] ) ) {
+ $flags = array( 'N' => true );// remove other flags
+ } elseif ( isset( $flags['-'] ) ) {
+ $flags = array( '-' => true );// remove other flags
+ } elseif ( count( $flags ) == 1 && isset( $flags['T'] ) ) {
+ $flags['H'] = true;
+ } elseif ( isset( $flags['H'] ) ) {
// replace A flag, and remove other flags except T
- $temp=array('+','H');
- if(in_array('T',$flags)) $temp[] = 'T';
- if(in_array('D',$flags)) $temp[] = 'D';
+ $temp = array( '+' => true, 'H' => true );
+ if ( isset( $flags['T'] ) ) {
+ $temp['T'] = true;
+ }
+ if ( isset( $flags['D'] ) ) {
+ $temp['D'] = true;
+ }
$flags = $temp;
} else {
- if ( in_array('A',$flags) ) {
- $flags[]='+';
- $flags[]='S';
+ if ( isset( $flags['A'] ) ) {
+ $flags['+'] = true;
+ $flags['S'] = true;
+ }
+ if ( isset( $flags['D'] ) ) {
+ unset( $flags['S'] );
}
- if ( in_array('D',$flags) )
- $flags=array_diff($flags,array('S'));
- $flags_temp = array();
- foreach ($variants as $variant) {
- // try to find flags like "zh-hans", "zh-hant"
- // allow syntaxes like "-{zh-hans;zh-hant|XXXX}-"
- if ( in_array($variant, $flags) )
- $flags_temp[] = $variant;
+ // try to find flags like "zh-hans", "zh-hant"
+ // allow syntaxes like "-{zh-hans;zh-hant|XXXX}-"
+ $variantFlags = array_intersect( array_keys( $flags ), $this->mConverter->mVariants );
+ if ( $variantFlags ) {
+ $variantFlags = array_flip( $variantFlags );
+ $flags = array();
}
- if ( count($flags_temp) !== 0 )
- $flags = $flags_temp;
}
- if ( count($flags) == 0 )
- $flags = array('S');
- $this->mRules=$rules;
- $this->mFlags=$flags;
+ $this->mVariantFlags = $variantFlags;
+ $this->mRules = $text;
+ $this->mFlags = $flags;
}
-
+
/**
- * generate conversion table
+ * Generate conversion table.
* @private
*/
function parseRules() {
@@ -999,50 +1131,37 @@ class ConverterRule {
$flags = $this->mFlags;
$bidtable = array();
$unidtable = array();
- $markup = $this->mConverter->mMarkup;
$variants = $this->mConverter->mVariants;
+ $varsep_pattern = $this->mConverter->getVarSeparatorPattern();
+
+ $choice = preg_split( $varsep_pattern, $rules );
- // varsep_pattern for preg_split:
- // text should be splited by ";" only if a valid variant
- // name exist after the markup, for example:
- // -{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:<span style="font-size:120%;">yyy</span>;}-
- // we should split it as:
- // array(
- // [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>'
- // [1] => 'zh-hant:<span style="font-size:120%;">yyy</span>'
- // [2] => ''
- // )
- $varsep_pattern = '/' . $markup['varsep'] . '\s*' . '(?=';
- foreach( $variants as $variant ) {
- $varsep_pattern .= $variant . '\s*' . $markup['codesep'] . '|'; // zh-hans:xxx;zh-hant:yyy
- $varsep_pattern .= '[^;]*?' . $markup['unidsep'] . '\s*' . $variant
- . '\s*' . $markup['codesep'] . '|'; // xxx=>zh-hans:yyy; xxx=>zh-hant:zzz
- }
- $varsep_pattern .= '\s*$)/';
-
- $choice = preg_split($varsep_pattern, $rules);
-
- foreach( $choice as $c ) {
- $v = explode($markup['codesep'], $c, 2);
- if( count($v) != 2 )
- continue;// syntax error, skip
- $to = trim($v[1]);
- $v = trim($v[0]);
- $u = explode($markup['unidsep'], $v);
+ foreach ( $choice as $c ) {
+ $v = explode( ':', $c, 2 );
+ if ( count( $v ) != 2 ) {
+ // syntax error, skip
+ continue;
+ }
+ $to = trim( $v[1] );
+ $v = trim( $v[0] );
+ $u = explode( '=>', $v, 2 );
// if $to is empty, strtr() could return a wrong result
- if( count($u) == 1 && $to && in_array( $v, $variants ) ) {
+ if ( count( $u ) == 1 && $to && in_array( $v, $variants ) ) {
$bidtable[$v] = $to;
- } else if(count($u) == 2){
- $from = trim($u[0]);
- $v = trim($u[1]);
- if( array_key_exists( $v, $unidtable ) && !is_array( $unidtable[$v] )
- && $to && in_array( $v, $variants ) )
- $unidtable[$v] = array( $from=>$to );
- elseif ( $to && in_array( $v, $variants ) )
+ } elseif ( count( $u ) == 2 ) {
+ $from = trim( $u[0] );
+ $v = trim( $u[1] );
+ if ( array_key_exists( $v, $unidtable )
+ && !is_array( $unidtable[$v] )
+ && $to
+ && in_array( $v, $variants ) ) {
+ $unidtable[$v] = array( $from => $to );
+ } elseif ( $to && in_array( $v, $variants ) ) {
$unidtable[$v][$from] = $to;
+ }
}
// syntax error, pass
- if ( !array_key_exists( $v, $this->mConverter->mVariantNames ) ){
+ if ( !isset( $this->mConverter->mVariantNames[$v] ) ) {
$bidtable = array();
$unidtable = array();
break;
@@ -1055,111 +1174,127 @@ class ConverterRule {
/**
* @private
*/
- function getRulesDesc(){
+ function getRulesDesc() {
$codesep = $this->mConverter->mDescCodeSep;
$varsep = $this->mConverter->mDescVarSep;
- $text='';
- foreach($this->mBidtable as $k => $v)
- $text .= $this->mConverter->mVariantNames[$k]."$codesep$v$varsep";
- foreach($this->mUnidtable as $k => $a)
- foreach($a as $from=>$to)
- $text.=$from.'⇒'.$this->mConverter->mVariantNames[$k]."$codesep$to$varsep";
+ $text = '';
+ foreach ( $this->mBidtable as $k => $v ) {
+ $text .= $this->mConverter->mVariantNames[$k] . "$codesep$v$varsep";
+ }
+ foreach ( $this->mUnidtable as $k => $a ) {
+ foreach ( $a as $from => $to ) {
+ $text .= $from . '⇒' . $this->mConverter->mVariantNames[$k] .
+ "$codesep$to$varsep";
+ }
+ }
return $text;
}
/**
- * Parse rules conversion
+ * Parse rules conversion.
* @private
*/
- function getRuleConvertedStr($variant,$doConvert){
+ function getRuleConvertedStr( $variant ) {
$bidtable = $this->mBidtable;
$unidtable = $this->mUnidtable;
- if( count($bidtable) + count($unidtable) == 0 ){
+ if ( count( $bidtable ) + count( $unidtable ) == 0 ) {
return $this->mRules;
- } elseif ($doConvert){// the text converted
+ } else {
// display current variant in bidirectional array
- $disp = $this->getTextInBidtable($variant);
+ $disp = $this->getTextInBidtable( $variant );
// or display current variant in fallbacks
- if(!$disp)
+ if ( !$disp ) {
$disp = $this->getTextInBidtable(
- $this->mConverter->getVariantFallbacks($variant));
+ $this->mConverter->getVariantFallbacks( $variant ) );
+ }
// or display current variant in unidirectional array
- if(!$disp && array_key_exists($variant,$unidtable)){
- $disp = array_values($unidtable[$variant]);
+ if ( !$disp && array_key_exists( $variant, $unidtable ) ) {
+ $disp = array_values( $unidtable[$variant] );
$disp = $disp[0];
}
// or display frist text under disable manual convert
- if(!$disp && $this->mConverter->mManualLevel[$variant]=='disable') {
- if(count($bidtable)>0){
- $disp = array_values($bidtable);
+ if ( !$disp
+ && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
+ if ( count( $bidtable ) > 0 ) {
+ $disp = array_values( $bidtable );
$disp = $disp[0];
} else {
- $disp = array_values($unidtable);
- $disp = array_values($disp[0]);
+ $disp = array_values( $unidtable );
+ $disp = array_values( $disp[0] );
$disp = $disp[0];
}
}
return $disp;
- } else {// no convert
- return $this->mRules;
}
}
/**
- * generate conversion table for all text
+ * Generate conversion table for all text.
* @private
*/
- function generateConvTable(){
- $flags = $this->mFlags;
+ function generateConvTable() {
+ // Special case optimisation
+ if ( !$this->mBidtable && !$this->mUnidtable ) {
+ $this->mConvTable = array();
+ return;
+ }
+
$bidtable = $this->mBidtable;
$unidtable = $this->mUnidtable;
$manLevel = $this->mConverter->mManualLevel;
- $vmarked=array();
- foreach($this->mConverter->mVariants as $v) {
+ $vmarked = array();
+ foreach ( $this->mConverter->mVariants as $v ) {
/* for bidirectional array
fill in the missing variants, if any,
with fallbacks */
- if(!array_key_exists($v, $bidtable)) {
- $variantFallbacks = $this->mConverter->getVariantFallbacks($v);
- $vf = $this->getTextInBidtable($variantFallbacks);
- if($vf) $bidtable[$v] = $vf;
+ if ( !isset( $bidtable[$v] ) ) {
+ $variantFallbacks =
+ $this->mConverter->getVariantFallbacks( $v );
+ $vf = $this->getTextInBidtable( $variantFallbacks );
+ if ( $vf ) {
+ $bidtable[$v] = $vf;
+ }
}
- if(array_key_exists($v,$bidtable)){
- foreach($vmarked as $vo){
- // use syntax: -{A|zh:WordZh;zh-tw:WordTw}-
- // or -{H|zh:WordZh;zh-tw:WordTw}- or -{-|zh:WordZh;zh-tw:WordTw}-
+ if ( isset( $bidtable[$v] ) ) {
+ foreach ( $vmarked as $vo ) {
+ // use syntax: -{A|zh:WordZh;zh-tw:WordTw}-
+ // or -{H|zh:WordZh;zh-tw:WordTw}-
+ // or -{-|zh:WordZh;zh-tw:WordTw}-
// to introduce a custom mapping between
- // words WordZh and WordTw in the whole text
- if($manLevel[$v]=='bidirectional'){
- $this->mConvTable[$v][$bidtable[$vo]]=$bidtable[$v];
+ // words WordZh and WordTw in the whole text
+ if ( $manLevel[$v] == 'bidirectional' ) {
+ $this->mConvTable[$v][$bidtable[$vo]] = $bidtable[$v];
}
- if($manLevel[$vo]=='bidirectional'){
- $this->mConvTable[$vo][$bidtable[$v]]=$bidtable[$vo];
+ if ( $manLevel[$vo] == 'bidirectional' ) {
+ $this->mConvTable[$vo][$bidtable[$v]] = $bidtable[$vo];
}
}
- $vmarked[]=$v;
+ $vmarked[] = $v;
}
- /*for unidirectional array
- fill to convert tables */
- $allow_unid = $manLevel[$v]=='bidirectional'
- || $manLevel[$v]=='unidirectional';
- if($allow_unid && array_key_exists($v,$unidtable)){
- $ct=$this->mConvTable[$v];
- $this->mConvTable[$v] = array_merge($ct,$unidtable[$v]);
+ /*for unidirectional array fill to convert tables */
+ if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
+ && isset( $unidtable[$v] ) )
+ {
+ if ( isset( $this->mConvTable[$v] ) ) {
+ $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] );
+ } else {
+ $this->mConvTable[$v] = $unidtable[$v];
+ }
}
}
}
/**
- * Parse rules and flags
+ * Parse rules and flags.
* @public
*/
- function parse($variant){
- if(!$variant)
+ function parse( $variant = NULL ) {
+ if ( !$variant ) {
$variant = $this->mConverter->getPreferredVariant();
+ }
$variants = $this->mConverter->mVariants;
$this->parseFlags();
@@ -1167,125 +1302,151 @@ class ConverterRule {
// convert to specified variant
// syntax: -{zh-hans;zh-hant[;...]|<text to convert>}-
- if( count( array_diff( $flags, $variants ) ) == 0 and count( $flags ) != 0 ) {
- if ( in_array( $variant, $flags ) ) // check if current variant in flags
+ if ( $this->mVariantFlags ) {
+ // check if current variant in flags
+ if ( isset( $this->mVariantFlags[$variant] ) ) {
// then convert <text to convert> to current language
- $this->mRules = $this->mConverter->autoConvert( $this->mRules, $variant );
- else { // if current variant no in flags,
+ $this->mRules = $this->mConverter->autoConvert( $this->mRules,
+ $variant );
+ } else { // if current variant no in flags,
// then we check its fallback variants.
- $variantFallbacks = $this->mConverter->getVariantFallbacks($variant);
+ $variantFallbacks =
+ $this->mConverter->getVariantFallbacks( $variant );
foreach ( $variantFallbacks as $variantFallback ) {
// if current variant's fallback exist in flags
- if ( in_array( $variantFallback, $flags ) ) {
+ if ( isset( $this->mVariantFlags[$variantFallback] ) ) {
// then convert <text to convert> to fallback language
- $this->mRules = $this->mConverter->autoConvert( $this->mRules, $variantFallback );
+ $this->mRules =
+ $this->mConverter->autoConvert( $this->mRules,
+ $variantFallback );
break;
}
}
}
- $this->mFlags = $flags = array('R');
+ $this->mFlags = $flags = array( 'R' => true );
}
- if( !in_array( 'R', $flags ) || !in_array( 'N', $flags ) ) {
- // decode => HTML entities modified by Sanitizer::removeHTMLtags
- $this->mRules = str_replace('=&gt;','=>',$this->mRules);
-
+ if ( !isset( $flags['R'] ) && !isset( $flags['N'] ) ) {
+ // decode => HTML entities modified by Sanitizer::removeHTMLtags
+ $this->mRules = str_replace( '=&gt;', '=>', $this->mRules );
$this->parseRules();
}
$rules = $this->mRules;
- if( count( $this->mBidtable ) == 0 && count( $this->mUnidtable ) == 0 ){
- if(in_array('+',$flags) || in_array('-',$flags))
+ if ( !$this->mBidtable && !$this->mUnidtable ) {
+ if ( isset( $flags['+'] ) || isset( $flags['-'] ) ) {
// fill all variants if text in -{A/H/-|text} without rules
- foreach($this->mConverter->mVariants as $v)
+ foreach ( $this->mConverter->mVariants as $v ) {
$this->mBidtable[$v] = $rules;
- elseif (!in_array('N',$flags) && !in_array('T',$flags) )
- $this->mFlags = $flags = array('R');
- }
-
- if( in_array('R',$flags) ) {
- // if we don't do content convert, still strip the -{}- tags
- $this->mRuleDisplay = $rules;
- } elseif ( in_array('N',$flags) ){
- // proces N flag: output current variant name
- $this->mRuleDisplay = $this->mConverter->mVariantNames[trim($rules)];
- } elseif ( in_array('D',$flags) ){
- // proces D flag: output rules description
- $this->mRuleDisplay = $this->getRulesDesc();
- } elseif ( in_array('H',$flags) || in_array('-',$flags) ) {
- // proces H,- flag or T only: output nothing
- $this->mRuleDisplay = '';
- } elseif ( in_array('S',$flags) ){
- $this->mRuleDisplay = $this->getRuleConvertedStr($variant,
- $this->mConverter->mDoContentConvert);
- } else {
- $this->mRuleDisplay= $this->mManualCodeError;
+ }
+ } elseif ( !isset( $flags['N'] ) && !isset( $flags['T'] ) ) {
+ $this->mFlags = $flags = array( 'R' => true );
+ }
+ }
+
+ $this->mRuleDisplay = false;
+ foreach ( $flags as $flag => $unused ) {
+ switch ( $flag ) {
+ case 'R':
+ // if we don't do content convert, still strip the -{}- tags
+ $this->mRuleDisplay = $rules;
+ break;
+ case 'N':
+ // process N flag: output current variant name
+ $ruleVar = trim( $rules );
+ if ( isset( $this->mConverter->mVariantNames[$ruleVar] ) ) {
+ $this->mRuleDisplay = $this->mConverter->mVariantNames[$ruleVar];
+ } else {
+ $this->mRuleDisplay = '';
+ }
+ break;
+ case 'D':
+ // process D flag: output rules description
+ $this->mRuleDisplay = $this->getRulesDesc();
+ break;
+ case 'H':
+ // process H,- flag or T only: output nothing
+ $this->mRuleDisplay = '';
+ break;
+ case '-':
+ $this->mRulesAction = 'remove';
+ $this->mRuleDisplay = '';
+ break;
+ case '+':
+ $this->mRulesAction = 'add';
+ $this->mRuleDisplay = '';
+ break;
+ case 'S':
+ $this->mRuleDisplay = $this->getRuleConvertedStr( $variant );
+ break;
+ case 'T':
+ $this->mRuleTitle = $this->getRuleConvertedStr( $variant );
+ $this->mRuleDisplay = '';
+ break;
+ default:
+ // ignore unknown flags (but see error case below)
+ }
}
- // proces T flag
- if ( in_array('T',$flags) ) {
- $this->mRuleTitle = $this->getRuleConvertedStr($variant,
- $this->mConverter->mDoTitleConvert);
+ if ( $this->mRuleDisplay === false ) {
+ $this->mRuleDisplay = $this->mManualCodeError;
}
- if (in_array('-', $flags))
- $this->mRulesAction='remove';
- if (in_array('+', $flags))
- $this->mRulesAction='add';
-
$this->generateConvTable();
}
-
+
/**
* @public
*/
- function hasRules(){
+ function hasRules() {
// TODO:
}
/**
- * get display text on markup -{...}-
+ * Get display text on markup -{...}-
* @public
*/
- function getDisplay(){
+ function getDisplay() {
return $this->mRuleDisplay;
}
+
/**
- * get converted title
+ * Get converted title.
* @public
*/
- function getTitle(){
+ function getTitle() {
return $this->mRuleTitle;
}
/**
- * return how deal with conversion rules
+ * Return how deal with conversion rules.
* @public
*/
- function getRulesAction(){
+ function getRulesAction() {
return $this->mRulesAction;
}
/**
- * get conversion table ( bidirectional and unidirectional conversion table )
+ * Get conversion table. ( bidirectional and unidirectional
+ * conversion table )
* @public
*/
- function getConvTable(){
+ function getConvTable() {
return $this->mConvTable;
}
/**
- * get conversion rules string
+ * Get conversion rules string.
* @public
*/
- function getRules(){
+ function getRules() {
return $this->mRules;
}
/**
- * get conversion flags
+ * Get conversion flags.
* @public
*/
- function getFlags(){
+ function getFlags() {
return $this->mFlags;
}
}
diff --git a/languages/Names.php b/languages/Names.php
index 5bf042d1..79759c95 100644
--- a/languages/Names.php
+++ b/languages/Names.php
@@ -15,7 +15,7 @@
'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
'am' => 'አማርኛ', # Amharic
'an' => 'Aragonés', # Aragonese
- 'ang' => 'Anglo-Saxon', # Old English
+ 'ang' => 'Ænglisc', # Old English (Bug 23283)
'ar' => 'العربية', # Arabic
'arc' => 'ܐܪܡܝܐ', # Aramaic
'arn' => 'Mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
@@ -25,7 +25,7 @@
'av' => 'Авар', # Avar
'avk' => 'Kotava', # Kotava
'ay' => 'Aymar aru', # Aymara
- 'az' => 'Azərbaycan', # Azerbaijani
+ 'az' => 'Azərbaycanca', # Azerbaijani
'ba' => 'Башҡорт', # Bashkir
'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean)
'bat-smg' => 'Žemaitėška', # Samogitian
@@ -44,7 +44,6 @@
'bqi' => 'بختياري', # Bakthiari
'br' => 'Brezhoneg', # Breton
'bs' => 'Bosanski', # Bosnian
- 'bto' => 'Iriga Bicolano', # Iriga Bicolano/Rinconada Bikol
'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Bugis
'bxr' => 'Буряад', # Buryat (Russia)
'ca' => 'Català', # Catalan
@@ -56,15 +55,19 @@
'cho' => 'Choctaw', # Choctaw
'chr' => 'ᏣᎳᎩ', # Cherokee
'chy' => 'Tsetsêhestâhese', # Cheyenne
+ 'ckb' => 'Soranî / کوردی', # Sorani
+ 'ckb-latn' => "\xE2\x80\xAASoranî (latînî)\xE2\x80\xAC", # Central Kurdish Latin script
+ 'ckb-arab' => "\xE2\x80\xABکوردی (عەرەبی)\xE2\x80\xAC", # Central Kurdish Arabic script
'co' => 'Corsu', # Corsican
+ 'cps' => 'Capiceño', # Capiznon
'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ', # Cree
'crh' => 'Qırımtatarca', # Crimean Tatar
'crh-latn' => "\xE2\x80\xAAQırımtatarca (Latin)\xE2\x80\xAC", # Crimean Tatar (Latin)
'crh-cyrl' => "\xE2\x80\xAAКъырымтатарджа (Кирилл)\xE2\x80\xAC", # Crimean Tatar (Cyrillic)
'cs' => 'Česky', # Czech
'csb' => 'Kaszëbsczi', # Cassubian
- 'cu' => 'Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ', # Old Church Slavonic (ancient language)
- 'cv' => 'Чăвашла', # Chuvash
+ 'cu' => 'Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ', # Old Church Slavonic (ancient language)
+ 'cv' => 'Чӑвашла', # Chuvash
'cy' => 'Cymraeg', # Welsh
'da' => 'Dansk', # Danish
'de' => 'Deutsch', # German ("Du")
@@ -72,7 +75,7 @@
'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
'de-formal' => 'Deutsch (Sie-Form)', # German - formal address ("Sie")
'diq' => 'Zazaki', # Zazaki
- 'dk' => 'Dansk (deprecated:da)', # Unused code currently falls back to Danish, 'da' is correct for the language
+ 'dk' => 'Dansk (deprecated:da)', # Unused code currently falls back to Danish, 'da' is correct for the language
'dsb' => 'Dolnoserbski', # Lower Sorbian
'dv' => 'ދިވެހިބަސް', # Dhivehi
'dz' => 'ཇོང་ཁ', # Bhutani
@@ -95,13 +98,14 @@
'fr' => 'Français', # French
'frc' => 'Français cadien', # Cajun French
'frp' => 'Arpetan', # Franco-Provençal/Arpitan
+ 'frr' => 'Frasch', # North Frisian
'fur' => 'Furlan', # Friulian
'fy' => 'Frysk', # Frisian
'ga' => 'Gaeilge', # Irish
'gag' => 'Gagauz', # Gagauz
- 'gan' => '贛語', # Gan-hant
- 'gan-hans' => '赣语(简体)', # Gan-hans
- 'gan-hant' => '贛語(繁體)', # Gan-hant
+ 'gan' => '贛語', # Gan
+ 'gan-hans' => '赣语(简体)', # Gan (Simplified Han)
+ 'gan-hant' => '贛語(繁體)', # Gan (Traditional Han)
'gd' => 'Gàidhlig', # Scots Gaelic
'gl' => 'Galego', # Galician
'glk' => 'گیلکی', # Gilaki
@@ -150,6 +154,7 @@
'kab' => 'Taqbaylit', # Kabyle
'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
'ki' => 'Gĩkũyũ', # Gikuyu
+ 'kiu' => 'Kırmancki', # Kirmanjki
'kj' => 'Kwanyama', # Kwanyama
'kk' => 'Қазақша', # Kazakh
'kk-arab' => "\xE2\x80\xABقازاقشا (تٴوتە)\xE2\x80\xAC", # Kazakh Arabic
@@ -162,15 +167,18 @@
'km' => 'ភាសាខ្មែរ', # Khmer, Central
'kn' => 'ಕನ್ನಡ', # Kannada
'ko' => '한국어', # Korean
+ 'ko-kp' => '한국어 (조선)', # Korean (DPRK)
+ 'koi' => 'Перем Коми', # Komi-Permyak
'kr' => 'Kanuri', # Kanuri, Central
+ 'krc' => 'Къарачай-Малкъар', # Karachay-Balkar
'kri' => 'Krio', # Krio
'krj' => 'Kinaray-a', # Kinaray-a
'ks' => 'कश्मीरी - (كشميري)', # Kashmiri
- 'ksh' => 'Ripoarisch', # Ripuarian
- 'ku' => 'Kurdî / كوردی', # Kurdish
+ 'ksh' => 'Ripoarisch', # Ripuarian
+ 'ku' => 'Kurdî', # Kurdish
'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Northern Kurdish Latin script
'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC", # Northern Kurdish Arabic script
- 'kv' => 'Коми', # Komi-Zyrian, cyrillic is common script but also written in latin script
+ 'kv' => 'Коми', # Komi-Zyrian, cyrillic is common script but also written in latin script
'kw' => 'Kernewek', # Cornish
'ky' => 'Кыргызча', # Kirghiz
'la' => 'Latina', # Latin
@@ -182,15 +190,15 @@
'lg' => 'Luganda', # Ganda
'li' => 'Limburgs', # Limburgian
'lij' => 'Líguru', # Ligurian
- 'lld' => 'Ladin', # Ladin
'lmo' => 'Lumbaart', # Lombard
'ln' => 'Lingála', # Lingala
'lo' => 'ລາວ',# Laotian
'loz' => 'Silozi', # Lozi
'lt' => 'Lietuvių', # Lithuanian
+ 'ltg' => 'Latgaļu', # Latgalian
'lv' => 'Latviešu', # Latvian
'lzh' => '文言', # Literary Chinese -- (bug 8217) lzh instead of zh-classical, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=l
- 'lzz' => 'Lazuri Nena', #Laz
+ 'lzz' => 'Lazuri', # Laz
'mai' => 'मैथिली', # Maithili
'map-bms' => 'Basa Banyumasan', # Banyumasan
'mdf' => 'Мокшень', # Moksha
@@ -203,13 +211,14 @@
'mn' => 'Монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
'mo' => 'Молдовеняскэ', # Moldovan
'mr' => 'मराठी', # Marathi
+ 'mrj' => 'Кырык мары', # Hill Mari
'ms' => 'Bahasa Melayu', # Malay
'mt' => 'Malti', # Maltese
'mus' => 'Mvskoke', # Muskogee/Creek
'mwl' => 'Mirandés', # Mirandese
- 'my' => 'Myanmasa', # Burmese
- 'myv' => 'Эрзянь', # Erzya
- 'mzn' => 'مَزِروني', # Mazanderani
+ 'my' => 'မြန်မာဘာသာ', # Burmese
+ 'myv' => 'Эрзянь', # Erzya
+ 'mzn' => 'مازِرونی', # Mazanderani
'na' => 'Dorerin Naoero', # Nauruan
'nah' => 'Nāhuatl', # Nahuatl, en:Wikipedia writes Nahuatlahtolli, while another form is Náhuatl
'nan' => 'Bân-lâm-gú', # Min-nan -- (bug 8217) nan instead of zh-min-nan, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=n
@@ -230,27 +239,29 @@
'nv' => 'Diné bizaad', # Navajo
'ny' => 'Chi-Chewa', # Chichewa
'oc' => 'Occitan', # Occitan
- 'om' => 'Oromoo', # Oromo
+ 'om' => 'Oromoo', # Oromo
'or' => 'ଓଡ଼ିଆ', # Oriya
'os' => 'Иронау', # Ossetic
'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (pan)
'pag' => 'Pangasinan', # Pangasinan
'pam' => 'Kapampangan', # Pampanga
'pap' => 'Papiamentu', # Papiamentu
- 'pdc' => 'Deitsch', # Pennsylvania German
- 'pdt' => 'Plautdietsch', # Plautdietsch/Mennonite Low German
- 'pfl' => 'Pfälzisch', # Palatinate German
+ 'pcd' => 'Picard', # Picard
+ 'pdc' => 'Deitsch', # Pennsylvania German
+ 'pdt' => 'Plautdietsch', # Plautdietsch/Mennonite Low German
+ 'pfl' => 'Pfälzisch', # Palatinate German
'pi' => 'पािऴ', # Pali
'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
'pl' => 'Polski', # Polish
- 'plm' => 'Palembang', # Palembang
- 'pms' => 'Piemontèis', # Piedmontese
+ 'pms' => 'Piemontèis', # Piedmontese
'pnb' => 'پنجابی', # Western Punjabi
- 'pnt' => 'Ποντιακά', # Pontic/Pontic Greek
+ 'pnt' => 'Ποντιακά', # Pontic/Pontic Greek
+ 'prg' => 'Prūsiskan', # Prussian
'ps' => 'پښتو', # Pashto, Northern/Paktu/Pakhtu/Pakhtoo/Afghan/Pakhto/Pashtu/Pushto/Yusufzai Pashto
'pt' => 'Português', # Portuguese
'pt-br' => 'Português do Brasil', # Brazilian Portuguese
'qu' => 'Runa Simi', # Quechua
+ 'rgn' => 'Rumagnôl', # Romagnol
'rif' => 'Tarifit', # Tarifit
'rm' => 'Rumantsch', # Raeto-Romance
'rmy' => 'Romani', # Vlax Romany
@@ -259,9 +270,10 @@
'roa-rup' => 'Armãneashce', # Aromanian
'roa-tara' => 'Tarandíne', # Tarantino
'ru' => 'Русский', # Russian
+ 'rue' => 'русиньскый язык', # Rusyn
'ruq' => 'Vlăheşte', # Megleno-Romanian (falls back to ruq-latn)
'ruq-cyrl' => 'Влахесте', # Megleno-Romanian (Cyrillic script)
- 'ruq-grek' => 'Βλαεστε', # Megleno-Romanian (Greek script)
+ #'ruq-grek' => 'Βλαεστε', # Megleno-Romanian (Greek script)
'ruq-latn' => 'Vlăheşte', # Megleno-Romanian (Latin script)
'rw' => 'Kinyarwanda', # Kinyarwanda, should possibly be Kinyarwandi
'sa' => 'संस्कृत', # Sanskrit
@@ -280,14 +292,15 @@
'simple' => 'Simple English', # Simple English
'sk' => 'Slovenčina', # Slovak
'sl' => 'Slovenščina', # Slovenian
+ 'sli' => 'Schläsch', # Lower Selisian
'sm' => 'Gagana Samoa', # Samoan
'sma' => 'Åarjelsaemien', # Southern Sami
'sn' => 'chiShona', # Shona
'so' => 'Soomaaliga', # Somali
'sq' => 'Shqip', # Albanian
'sr' => 'Српски / Srpski', # Serbian
- 'sr-ec' => 'ћирилица', # Serbian cyrillic ekavian
- 'sr-el' => 'latinica', # Serbian latin ekavian
+ 'sr-ec' => 'Српски (ћирилица)', # Serbian Cyrillic ekavian
+ 'sr-el' => 'Srpski (latinica)', # Serbian Latin ekavian
'srn' => 'Sranantongo', # Sranan Tongo
'ss' => 'SiSwati', # Swati
'st' => 'Sesotho', # Southern Sotho
@@ -307,7 +320,6 @@
'ti' => 'ትግርኛ', # Tigrinya
'tk' => 'Türkmençe', # Turkmen
'tl' => 'Tagalog', # Tagalog
- #'tlh' => 'tlhIngan-Hol', # Klingon - no interlanguage links allowed
'tn' => 'Setswana', # Setswana
'to' => 'lea faka-Tonga', # Tonga (Tonga Islands)
'tokipona' => 'Toki Pona', # Toki Pona
@@ -315,17 +327,16 @@
'tpi' => 'Tok Pisin', # Tok Pisin
'tr' => 'Türkçe', # Turkish
'ts' => 'Xitsonga', # Tsonga
- 'tt' => 'Tatarça/Татарча', # Tatar (multiple scripts - defaults to Latin)
+ 'tt' => 'Татарча/Tatarça', # Tatar (multiple scripts - defaults to Cyrillic)
'tt-cyrl' => 'Татарча', # Tatar (Cyrillic script)
'tt-latn' => 'Tatarça', # Tatar (Latin script)
'tum' => 'chiTumbuka', # Tumbuka
'tw' => 'Twi', # Twi, (FIXME!)
'ty' => 'Reo Mā`ohi', # Tahitian
'tyv' => 'Тыва дыл', # Tyvan
- 'tzm' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', # (Central Morocco) Tamazight
'udm' => 'Удмурт', # Udmurt
'ug' => 'Uyghurche‎ / ئۇيغۇرچە', # Uyghur (multiple scripts - defaults to Latin)
- #'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script). Disabled until sufficient localisation can be committed
+ 'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script)
'ug-latn' => 'Uyghurche‎', # Uyghur (Latin script - default)
'uk' => 'Українська', # Ukrainian
'ur' => 'اردو', # Urdu
@@ -335,7 +346,9 @@
'vep' => 'Vepsan kel\'', # Veps
'vi' => 'Tiếng Việt', # Vietnamese
'vls' => 'West-Vlams', # West Flemish
+ 'vmf' => 'Mainfränkisch', # Upper Franconian, Main-Franconian
'vo' => 'Volapük', # Volapük
+ 'vot' => 'Vaďďa', # Vod/Votian
'vro' => 'Võro', # Võro
'wa' => 'Walon', # Walloon
'war' => 'Winaray', # Waray-Waray
@@ -344,11 +357,10 @@
'xal' => 'Хальмг', # Kalmyk-Oirat (Kalmuk, Kalmuck, Kalmack, Qalmaq, Kalmytskii Jazyk, Khal:mag, Oirat, Volga Oirat, European Oirat, Western Mongolian)
'xh' => 'isiXhosa', # Xhosan
'xmf' => 'მარგალური', # Mingrelian
- 'ydd' => 'מיזרח־ייִדיש', # Eastern Yiddish
'yi' => 'ייִדיש', # Yiddish
'yo' => 'Yorùbá', # Yoruba
- 'yue' => '粵語', # Cantonese -- (bug 8217) yue instead of zh-yue, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=y
- 'za' => 'Sawcuengh', # Zhuang
+ 'yue' => '粵語', # Cantonese -- (bug 8217) yue instead of zh-yue, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=y
+ 'za' => 'Vahcuengh', # Zhuang
'zea' => 'Zeêuws', # Zeeuws/Zeaws
'zh' => '中文', # (Zhōng Wén) - Chinese
'zh-classical' => '文言', # Classical Chinese/Literary Chinese -- (see bug 8217)
@@ -356,10 +368,10 @@
'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC", # Chinese written using the Simplified Chinese script
'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC", # Chinese written using the Traditional Chinese script
'zh-hk' => "\xE2\x80\xAA中文(香港)\xE2\x80\xAC", # Chinese (Hong Kong)
- 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217)
+ 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217)
'zh-mo' => "\xE2\x80\xAA中文(澳門)\xE2\x80\xAC", # Chinese (Macau)
'zh-my' => "\xE2\x80\xAA中文(马来西亚)\xE2\x80\xAC", # Chinese (Malaysia)
- 'zh-sg' => "\xE2\x80\xAA中文(新加坡)\xE2\x80\xAC", # Chinese (Singapore)
+ 'zh-sg' => "\xE2\x80\xAA中文(新加坡)\xE2\x80\xAC", # Chinese (Singapore)
'zh-tw' => "\xE2\x80\xAA中文(台灣)\xE2\x80\xAC", # Chinese (Taiwan)
'zh-yue' => '粵語', # Cantonese -- (see bug 8217)
'zu' => 'isiZulu' # Zulu
diff --git a/languages/classes/LanguageAm.php b/languages/classes/LanguageAm.php
new file mode 100644
index 00000000..cf31c709
--- /dev/null
+++ b/languages/classes/LanguageAm.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageAm extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageAr.php b/languages/classes/LanguageAr.php
index 01c921a0..70a53f86 100644
--- a/languages/classes/LanguageAr.php
+++ b/languages/classes/LanguageAr.php
@@ -6,22 +6,39 @@
* @author Niklas Laxström
*/
class LanguageAr extends Language {
-
function convertPlural( $count, $forms ) {
if ( !count($forms) ) { return ''; }
- $forms = $this->preConvertPlural( $forms, 5 );
+ $forms = $this->preConvertPlural( $forms, 6 );
- if ( $count == 1 ) {
+ if ( $count == 0 ) {
$index = 0;
- } elseif( $count == 2 ) {
+ } elseif ( $count == 1 ) {
$index = 1;
- } elseif( $count < 11 && $count > 2 ) {
+ } elseif( $count == 2 ) {
$index = 2;
- } elseif( $count % 100 == 0) {
+ } elseif( $count % 100 >= 3 && $count % 100 <= 10 ) {
$index = 3;
- } else {
+ } elseif( $count % 100 >= 11 && $count % 100 <= 99 ) {
$index = 4;
+ } else {
+ $index = 5;
}
return $forms[$index];
}
+
+ /**
+ * Temporary hack for bug 9413: replace Arabic presentation forms with their
+ * standard equivalents.
+ *
+ * FIXME: This is language-specific for now only to avoid the negative
+ * performance impact of enabling it for all languages.
+ */
+ function normalize( $s ) {
+ global $wgFixArabicUnicode;
+ $s = parent::normalize( $s );
+ if ( $wgFixArabicUnicode ) {
+ $s = $this->transformUsingPairFile( 'normalize-ar.ser', $s );
+ }
+ return $s;
+ }
}
diff --git a/languages/classes/LanguageBe.php b/languages/classes/LanguageBe.php
index 1468daff..b86a5f30 100644
--- a/languages/classes/LanguageBe.php
+++ b/languages/classes/LanguageBe.php
@@ -7,7 +7,6 @@
* @ingroup Language
*
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- * @bug 1638, 2135
* @link http://be.wikipedia.org/wiki/Talk:LanguageBe.php
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
* @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
@@ -17,6 +16,8 @@ class LanguageBe extends Language {
function convertPlural( $count, $forms ) {
if ( !count($forms) ) { return ''; }
+ // FIXME: CLDR defines 4 plural forms instead of 3
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
if ($count > 10 && floor(($count % 100) / 10) == 1) {
diff --git a/languages/classes/LanguageBe_tarask.php b/languages/classes/LanguageBe_tarask.php
index 358cb486..96ad9467 100644
--- a/languages/classes/LanguageBe_tarask.php
+++ b/languages/classes/LanguageBe_tarask.php
@@ -4,7 +4,6 @@
* @ingroup Language
*
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- * @bug 1638, 2135
* @link http://be.wikipedia.org/wiki/Talk:LanguageBe.php
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
* @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
@@ -25,6 +24,8 @@ class LanguageBe_tarask extends Language {
//if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+ // FIXME: CLDR defines 4 plural forms instead of 3
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
if ($count > 10 && floor(($count % 100) / 10) == 1) {
diff --git a/languages/classes/LanguageBh.php b/languages/classes/LanguageBh.php
new file mode 100644
index 00000000..80119ec7
--- /dev/null
+++ b/languages/classes/LanguageBh.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageBh extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageBs.php b/languages/classes/LanguageBs.php
index 24f6adde..df522f83 100644
--- a/languages/classes/LanguageBs.php
+++ b/languages/classes/LanguageBs.php
@@ -10,6 +10,8 @@ class LanguageBs extends Language {
if ( !count($forms) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
+ // FIXME: CLDR defines 4 plural forms instead of 3. Plural for decimals is missing.
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
if ($count > 10 && floor(($count % 100) / 10) == 1) {
return $forms[2];
} else {
diff --git a/languages/classes/LanguageCy.php b/languages/classes/LanguageCy.php
index 486f7a7c..9a395393 100644
--- a/languages/classes/LanguageCy.php
+++ b/languages/classes/LanguageCy.php
@@ -8,6 +8,9 @@
class LanguageCy extends Language {
function convertPlural( $count, $forms ) {
if ( !count($forms) ) { return ''; }
+
+ // FIXME: CLDR defines 4 plural forms; very different, actually.
+ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#cy
$forms = $this->preConvertPlural( $forms, 6 );
$count = abs( $count );
if ( $count >= 0 && $count <= 3 ) {
diff --git a/languages/classes/LanguageEo.php b/languages/classes/LanguageEo.php
index c58d424f..822a43f7 100644
--- a/languages/classes/LanguageEo.php
+++ b/languages/classes/LanguageEo.php
@@ -6,7 +6,6 @@
*/
class LanguageEo extends Language {
function iconv( $in, $out, $string ) {
- # For most languages, this is a wrapper for iconv
# Por multaj lingvoj, ĉi tiu nur voku la sisteman funkcion iconv()
# Ni ankaŭ konvertu X-sistemajn surogotajn
if( strcasecmp( $in, 'x' ) == 0 and strcasecmp( $out, 'utf-8' ) == 0) {
@@ -42,7 +41,7 @@ class LanguageEo extends Language {
return preg_replace( '/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]'.
'|\xc5[\x9c\x9d\xac\xad])x*)/ei', 'strtr( "$1", $ux )', $string );
}
- return iconv( $in, $out, $string );
+ return parent::iconv( $in, $out, $string );
}
function checkTitleEncoding( $s ) {
diff --git a/languages/classes/LanguageGa.php b/languages/classes/LanguageGa.php
index 2fdeed04..344fdc84 100644
--- a/languages/classes/LanguageGa.php
+++ b/languages/classes/LanguageGa.php
@@ -34,4 +34,20 @@ class LanguageGa extends Language {
}
return $word;
}
+
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+
+ // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ga
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ $index = 0;
+ } elseif( $count == 2 ) {
+ $index = 1;
+ } else {
+ $index = 2;
+ }
+ return $forms[$index];
+ }
}
diff --git a/languages/classes/LanguageGan.php b/languages/classes/LanguageGan.php
index f4541059..3c8b5fdb 100644
--- a/languages/classes/LanguageGan.php
+++ b/languages/classes/LanguageGan.php
@@ -11,7 +11,6 @@ class GanConverter extends LanguageConverter {
function __construct($langobj, $maincode,
$variants=array(),
$variantfallbacks=array(),
- $markup=array(),
$flags = array(),
$manualLevel = array() ) {
$this->mDescCodeSep = ':';
@@ -19,7 +18,6 @@ class GanConverter extends LanguageConverter {
parent::__construct($langobj, $maincode,
$variants,
$variantfallbacks,
- $markup,
$flags,
$manualLevel);
$names = array(
@@ -117,7 +115,7 @@ class LanguageGan extends LanguageZh {
$this->mConverter = new GanConverter( $this, 'gan',
$variants, $variantfallbacks,
- array(),array(),
+ array(),
$ml);
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
@@ -137,32 +135,16 @@ class LanguageGan extends LanguageZh {
}
// word segmentation
- function stripForSearch( $string ) {
- wfProfileIn( __METHOD__ );
-
- // eventually this should be a word segmentation
- // for now just treat each character as a word
- // @fixme only do this for Han characters...
- $t = preg_replace(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/",
- " $1", $string);
-
- //always convert to gan-hans before indexing. it should be
- //better to use gan-hans for search, since conversion from
- //Traditional to Simplified is less ambiguous than the
- //other way around
-
- $t = $this->mConverter->autoConvert($t, 'gan-hans');
- $t = parent::stripForSearch( $t );
- wfProfileOut( __METHOD__ );
- return $t;
-
+ function normalizeForSearch( $string, $autoVariant = 'gan-hans' ) {
+ // LanguageZh::normalizeForSearch
+ return parent::normalizeForSearch( $string, $autoVariant );
}
function convertForSearchResult( $termsArray ) {
$terms = implode( '|', $termsArray );
+ $terms = self::convertDoubleWidth( $terms );
$terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) );
$ret = array_unique( explode('|', $terms) );
return $ret;
}
-} \ No newline at end of file
+}
diff --git a/languages/classes/LanguageGd.php b/languages/classes/LanguageGd.php
new file mode 100644
index 00000000..6c307f60
--- /dev/null
+++ b/languages/classes/LanguageGd.php
@@ -0,0 +1,35 @@
+<?php
+/** Scots Gaelic (Gàidhlig)
+ *
+ * @ingroup Language
+ *
+ * @author Raimond Spekking
+ */
+class LanguageGd extends Language {
+
+ /**
+ * Plural form transformations
+ * Based on this discussion: http://translatewiki.net/w/i.php?title=Portal_talk:Gd&oldid=1094065#%C3%80ireamhan
+ *
+ * $forms[0] - singular form (for 1)
+ * $forms[1] - dual form (for 2)
+ * $forms[2] - plural form 1 (for 3-10)
+ * $forms[3] - plural form 2 (for >= 11)
+ *
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 4 );
+
+ $count = abs( $count );
+ if ( $count === 1 ) {
+ return $forms[0];
+ } elseif ( $count === 2 ) {
+ return $forms[1];
+ } elseif ( $count >= 3 && $count <= 10 ) {
+ return $forms[2];
+ } else {
+ return $forms[3];
+ }
+ }
+}
diff --git a/languages/classes/LanguageHi.php b/languages/classes/LanguageHi.php
new file mode 100644
index 00000000..705c73bc
--- /dev/null
+++ b/languages/classes/LanguageHi.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageHi extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
index 5fe6b3a7..d8e84876 100644
--- a/languages/classes/LanguageHr.php
+++ b/languages/classes/LanguageHr.php
@@ -8,6 +8,8 @@ class LanguageHr extends Language {
function convertPlural( $count, $forms ) {
if ( !count($forms) ) { return ''; }
+ // FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
if ($count > 10 && floor(($count % 100) / 10) == 1) {
diff --git a/languages/classes/LanguageJa.php b/languages/classes/LanguageJa.php
index 72c06e19..4a24260b 100644
--- a/languages/classes/LanguageJa.php
+++ b/languages/classes/LanguageJa.php
@@ -6,15 +6,11 @@
* @ingroup Language
*/
class LanguageJa extends Language {
- function stripForSearch( $string ) {
- # MySQL fulltext index doesn't grok utf-8, so we
- # need to fold cases and convert to hex
- $s = $string;
+ function wordSegmentation( $string ) {
+ // Strip known punctuation ?
+ // $s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f
- # Strip known punctuation ?
- #$s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f
-
- # Space strings of like hiragana/katakana/kanji
+ // Space strings of like hiragana/katakana/kanji
$hiragana = '(?:\xe3(?:\x81[\x80-\xbf]|\x82[\x80-\x9f]))'; # U3040-309f
$katakana = '(?:\xe3(?:\x82[\xa0-\xbf]|\x83[\x80-\xbf]))'; # U30a0-30ff
$kanji = '(?:\xe3[\x88-\xbf][\x80-\xbf]'
@@ -22,14 +18,17 @@ class LanguageJa extends Language {
. '|\xe9[\x80-\xa5][\x80-\xbf]'
. '|\xe9\xa6[\x80-\x99])';
# U3200-9999 = \xe3\x88\x80-\xe9\xa6\x99
- $s = preg_replace( "/({$hiragana}+|{$katakana}+|{$kanji}+)/", ' $1 ', $s );
-
- # Double-width roman characters: ff00-ff5f ~= 0020-007f
- $s = preg_replace( '/\xef\xbc([\x80-\xbf])/e', 'chr((ord("$1") & 0x3f) + 0x20)', $s );
- $s = preg_replace( '/\xef\xbd([\x80-\x99])/e', 'chr((ord("$1") & 0x3f) + 0x60)', $s );
+ $reg = "/({$hiragana}+|{$katakana}+|{$kanji}+)/";
+ $s = self::insertSpace( $string, $reg );
+ return $s;
+ }
+ function normalizeForSearch( $string ) {
+ // Double-width roman characters
+ $s = self::convertDoubleWidth( $string );
+
# Do general case folding and UTF-8 armoring
- return parent::stripForSearch( $s );
+ return parent::normalizeForSearch( $s );
}
# Italic is not appropriate for Japanese script
diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php
index b358a709..318b82a8 100644
--- a/languages/classes/LanguageKk.php
+++ b/languages/classes/LanguageKk.php
@@ -21,10 +21,9 @@ class KkConverter extends LanguageConverter {
function __construct($langobj, $maincode,
$variants=array(),
$variantfallbacks=array(),
- $markup=array(),
$flags = array()) {
parent::__construct( $langobj, $maincode,
- $variants, $variantfallbacks, $markup, $flags );
+ $variants, $variantfallbacks, $flags );
// No point delaying this since they're in code.
// Waiting until loadDefaultTables() means they never get loaded
@@ -209,16 +208,6 @@ class KkConverter extends LanguageConverter {
return $carray;
}
- // Do not convert content on talk pages
- function parserConvert( $text, &$parser ){
- if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
- $this->mDoContentConvert=false;
- else
- $this->mDoContentConvert=true;
-
- return parent::parserConvert($text, $parser );
- }
-
/*
* A function wrapper:
* - if there is no selected variant, leave the link
diff --git a/languages/classes/LanguageKu.php b/languages/classes/LanguageKu.php
index 3b84a9b3..5ce68c57 100644
--- a/languages/classes/LanguageKu.php
+++ b/languages/classes/LanguageKu.php
@@ -132,16 +132,6 @@ class KuConverter extends LanguageConverter {
);
}
- // Do not convert content on talk pages
- function parserConvert( $text, &$parser ){
- if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
- $this->mDoContentConvert=false;
- else
- $this->mDoContentConvert=true;
-
- return parent::parserConvert($text, $parser );
- }
-
/*
* A function wrapper:
* - if there is no selected variant, leave the link
diff --git a/languages/classes/LanguageLn.php b/languages/classes/LanguageLn.php
new file mode 100644
index 00000000..bcf5f6e3
--- /dev/null
+++ b/languages/classes/LanguageLn.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageLn extends Language {
+ /**
+ * Use singular form for zero
+ * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ln
+
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageLv.php b/languages/classes/LanguageLv.php
index 2c8d9f31..84974c37 100644
--- a/languages/classes/LanguageLv.php
+++ b/languages/classes/LanguageLv.php
@@ -23,6 +23,9 @@ class LanguageLv extends Language {
*/
function convertPlural( $count, $forms ) {
if ( !count($forms) ) { return ''; }
+
+ // FIXME: CLDR defines 3 plural forms instead of 2. Form for 0 is missing.
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#lv
$forms = $this->preConvertPlural( $forms, 2 );
return ( ( $count % 10 == 1 ) && ( $count % 100 != 11 ) ) ? $forms[0] : $forms[1];
diff --git a/languages/classes/LanguageMg.php b/languages/classes/LanguageMg.php
new file mode 100644
index 00000000..8593a298
--- /dev/null
+++ b/languages/classes/LanguageMg.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageMg extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageMk.php b/languages/classes/LanguageMk.php
new file mode 100644
index 00000000..268365df
--- /dev/null
+++ b/languages/classes/LanguageMk.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageMk extends Language {
+ /**
+ * Plural forms per
+ * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mk
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ if ( $count % 10 === 1 && $count % 100 !== 11 ) {
+ return $forms[0];
+ } else {
+ return $forms[1];
+ }
+ }
+}
diff --git a/languages/classes/LanguageMl.php b/languages/classes/LanguageMl.php
new file mode 100644
index 00000000..98b5fc96
--- /dev/null
+++ b/languages/classes/LanguageMl.php
@@ -0,0 +1,22 @@
+<?php
+
+class LanguageMl extends Language {
+ /**
+ * Temporary hack for the issue described at
+ * http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46396
+ * Convert Unicode 5.0 style Malayalam input to Unicode 5.1. Similar to
+ * bug 9413. Also fixes miscellaneous problems due to mishandling of ZWJ,
+ * e.g. bug 11162.
+ *
+ * FIXME: This is language-specific for now only to avoid the negative
+ * performance impact of enabling it for all languages.
+ */
+ function normalize( $s ) {
+ global $wgFixMalayalamUnicode;
+ $s = parent::normalize( $s );
+ if ( $wgFixMalayalamUnicode ) {
+ $s = $this->transformUsingPairFile( 'normalize-ml.ser', $s );
+ }
+ return $s;
+ }
+}
diff --git a/languages/classes/LanguageMo.php b/languages/classes/LanguageMo.php
new file mode 100644
index 00000000..83cfafb8
--- /dev/null
+++ b/languages/classes/LanguageMo.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageMo extends Language {
+ function convertPlural( $count, $forms ) {
+ // Plural rules per
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mo
+ if ( !count($forms) ) { return ''; }
+
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ $index = 0;
+ } elseif ( $count == 0 || $count % 100 < 20 ) {
+ $index = 1;
+ } else {
+ $index = 2;
+ }
+ return $forms[$index];
+ }
+}
diff --git a/languages/classes/LanguageNso.php b/languages/classes/LanguageNso.php
new file mode 100644
index 00000000..1b56e76a
--- /dev/null
+++ b/languages/classes/LanguageNso.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageNso extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguagePl.php b/languages/classes/LanguagePl.php
index 54314fab..bb798913 100644
--- a/languages/classes/LanguagePl.php
+++ b/languages/classes/LanguagePl.php
@@ -21,4 +21,12 @@ class LanguagePl extends Language {
return $forms[2]; // plural genitive
}
}
+
+ function commafy($_) {
+ if (!preg_match('/^\d{1,4}(.\d+)?$/',$_)) {
+ return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
+ } else {
+ return $_;
+ }
+ }
}
diff --git a/languages/classes/LanguageRo.php b/languages/classes/LanguageRo.php
new file mode 100644
index 00000000..928f79fb
--- /dev/null
+++ b/languages/classes/LanguageRo.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageRo extends Language {
+ function convertPlural( $count, $forms ) {
+ // Plural rules per
+ // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ro
+ if ( !count($forms) ) { return ''; }
+
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ $index = 0;
+ } elseif ( $count == 0 || $count % 100 < 20 ) {
+ $index = 1;
+ } else {
+ $index = 2;
+ }
+ return $forms[$index];
+ }
+}
diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php
index 5933b47a..bb737e84 100644
--- a/languages/classes/LanguageRu.php
+++ b/languages/classes/LanguageRu.php
@@ -76,6 +76,8 @@ class LanguageRu extends Language {
//if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+ // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
$forms = $this->preConvertPlural( $forms, 3 );
if ($count > 10 && floor(($count % 100) / 10) == 1) {
diff --git a/languages/classes/LanguageSe.php b/languages/classes/LanguageSe.php
new file mode 100644
index 00000000..aac943d6
--- /dev/null
+++ b/languages/classes/LanguageSe.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageSe extends Language {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+
+ // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#se
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ $index = 0;
+ } elseif( $count == 2 ) {
+ $index = 1;
+ } else {
+ $index = 2;
+ }
+ return $forms[$index];
+ }
+}
diff --git a/languages/classes/LanguageSh.php b/languages/classes/LanguageSh.php
new file mode 100644
index 00000000..29f06f4f
--- /dev/null
+++ b/languages/classes/LanguageSh.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageSh extends Language {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+
+ //if no number with word, then use $form[0] for singular and $form[1] for plural or zero
+ if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+
+ // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sh
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ($count > 10 && floor(($count % 100) / 10) == 1) {
+ return $forms[2];
+ } else {
+ switch ($count % 10) {
+ case 1: return $forms[0];
+ case 2:
+ case 3:
+ case 4: return $forms[1];
+ default: return $forms[2];
+ }
+ }
+ }
+}
diff --git a/languages/classes/LanguageSma.php b/languages/classes/LanguageSma.php
new file mode 100644
index 00000000..5167fb08
--- /dev/null
+++ b/languages/classes/LanguageSma.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageSma extends Language {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+
+ // plural forms per http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sma
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ $index = 1;
+ } elseif( $count == 2 ) {
+ $index = 2;
+ } else {
+ $index = 3;
+ }
+ return $forms[$index];
+ }
+}
diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php
index 79a2ec25..693660fb 100644
--- a/languages/classes/LanguageSr.php
+++ b/languages/classes/LanguageSr.php
@@ -76,16 +76,6 @@ class SrConverter extends LanguageConverter {
return $carray;
}
- // Do not convert content on talk pages
- function parserConvert( $text, &$parser ){
- if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
- $this->mDoContentConvert=false;
- else
- $this->mDoContentConvert=true;
-
- return parent::parserConvert($text, $parser );
- }
-
/*
* A function wrapper:
* - if there is no selected variant, leave the link
@@ -175,12 +165,34 @@ class LanguageSr extends LanguageSr_ec {
'sr-el' => 'sr',
);
- $marker = array();//don't mess with these, leave them as they are
$flags = array(
'S' => 'S', 'писмо' => 'S', 'pismo' => 'S',
'W' => 'W', 'реч' => 'W', 'reč' => 'W', 'ријеч' => 'W', 'riječ' => 'W'
);
- $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $marker, $flags);
+ $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $flags);
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
}
+
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+
+ //if no number with word, then use $form[0] for singular and $form[1] for plural or zero
+ if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+
+ // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ($count > 10 && floor(($count % 100) / 10) == 1) {
+ return $forms[2];
+ } else {
+ switch ($count % 10) {
+ case 1: return $forms[0];
+ case 2:
+ case 3:
+ case 4: return $forms[1];
+ default: return $forms[2];
+ }
+ }
+ }
}
diff --git a/languages/classes/LanguageTi.php b/languages/classes/LanguageTi.php
new file mode 100644
index 00000000..1974915d
--- /dev/null
+++ b/languages/classes/LanguageTi.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageTi extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageTl.php b/languages/classes/LanguageTl.php
new file mode 100644
index 00000000..23b6ad6f
--- /dev/null
+++ b/languages/classes/LanguageTl.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ *
+ * @ingroup Language
+ */
+class LanguageTl extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+}
diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php
index 8a2dee09..57b0fd07 100644
--- a/languages/classes/LanguageTr.php
+++ b/languages/classes/LanguageTr.php
@@ -7,7 +7,7 @@
*/
class LanguageTr extends Language {
function ucfirst ( $string ) {
- if ( $string[0] == 'i' ) {
+ if ( !empty($string) && $string[0] == 'i' ) {
return 'İ' . substr( $string, 1 );
} else {
return parent::ucfirst( $string );
diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php
index dbebb134..4b1dfde5 100644
--- a/languages/classes/LanguageUk.php
+++ b/languages/classes/LanguageUk.php
@@ -62,6 +62,8 @@ class LanguageUk extends Language {
//if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+ // FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
+ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
$forms = $this->preConvertPlural( $forms, 3 );
if ($count > 10 && floor(($count % 100) / 10) == 1) {
diff --git a/languages/classes/LanguageWa.php b/languages/classes/LanguageWa.php
index d97b2026..4a4296ca 100644
--- a/languages/classes/LanguageWa.php
+++ b/languages/classes/LanguageWa.php
@@ -9,14 +9,22 @@
# k' i gn a.
class LanguageWa extends Language {
+ /**
+ * Use singular form for zero
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+
###
### Dates in Walloon are "1î d' <monthname>" for 1st of the month,
### "<day> di <monthname>" for months starting by a consoun, and
### "<day> d' <monthname>" for months starting with a vowel
###
function date( $ts, $adj = false, $format = true, $tc = false ) {
- global $wgUser;
-
if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
$datePreference = $this->dateFormat( $format );
diff --git a/languages/classes/LanguageYue.php b/languages/classes/LanguageYue.php
index fc7f233c..6581d788 100644
--- a/languages/classes/LanguageYue.php
+++ b/languages/classes/LanguageYue.php
@@ -3,19 +3,30 @@
* @ingroup Language
*/
class LanguageYue extends Language {
- function stripForSearch( $string ) {
+ function hasWordBreaks() {
+ return false;
+ }
+
+ /**
+ * Eventually this should be a word segmentation;
+ * for now just treat each character as a word.
+ * @todo Fixme: only do this for Han characters...
+ */
+ function wordSegmentation( $string ) {
+ $reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/";
+ $s = self::insertSpace( $string, $reg );
+ return $s;
+ }
+
+ function normalizeForSearch( $string ) {
wfProfileIn( __METHOD__ );
- // eventually this should be a word segmentation
- // for now just treat each character as a word
- // @fixme only do this for Han characters...
- $t = preg_replace(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/",
- " $1", $string);
+ // Double-width roman characters
+ $s = self::convertDoubleWidth( $string );
+ $s = trim( $s );
+ $s = parent::normalizeForSearch( $s );
- // Do general case folding and UTF-8 armoring
- $t = parent::stripForSearch( $t );
wfProfileOut( __METHOD__ );
- return $t;
+ return $s;
}
}
diff --git a/languages/classes/LanguageZh.php b/languages/classes/LanguageZh.php
index cbb748c3..4a73c665 100644
--- a/languages/classes/LanguageZh.php
+++ b/languages/classes/LanguageZh.php
@@ -11,7 +11,6 @@ class ZhConverter extends LanguageConverter {
function __construct($langobj, $maincode,
$variants=array(),
$variantfallbacks=array(),
- $markup=array(),
$flags = array(),
$manualLevel = array() ) {
$this->mDescCodeSep = ':';
@@ -19,7 +18,6 @@ class ZhConverter extends LanguageConverter {
parent::__construct($langobj, $maincode,
$variants,
$variantfallbacks,
- $markup,
$flags,
$manualLevel);
$names = array(
@@ -133,6 +131,7 @@ class LanguageZh extends LanguageZh_hans {
parent::__construct();
$variants = array('zh','zh-hans','zh-hant','zh-cn','zh-hk','zh-mo','zh-my','zh-sg','zh-tw');
+
$variantfallbacks = array(
'zh' => array('zh-hans','zh-hant','zh-cn','zh-tw','zh-hk','zh-sg','zh-mo','zh-my'),
'zh-hans' => array('zh-cn','zh-sg','zh-my'),
@@ -152,7 +151,7 @@ class LanguageZh extends LanguageZh_hans {
$this->mConverter = new ZhConverter( $this, 'zh',
$variants, $variantfallbacks,
- array(),array(),
+ array(),
$ml);
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
@@ -171,31 +170,31 @@ class LanguageZh extends LanguageZh_hans {
"\"$1\"", $text);
}
- // word segmentation
- function stripForSearch( $string ) {
+ /**
+ * auto convert to zh-hans and normalize special characters.
+ *
+ * @param $string String
+ * @param $autoVariant String, default to 'zh-hans'
+ * @return String
+ */
+ function normalizeForSearch( $string, $autoVariant = 'zh-hans' ) {
wfProfileIn( __METHOD__ );
- // eventually this should be a word segmentation
- // for now just treat each character as a word
- // @fixme only do this for Han characters...
- $t = preg_replace(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/",
- " $1", $string);
-
- //always convert to zh-hans before indexing. it should be
- //better to use zh-hans for search, since conversion from
- //Traditional to Simplified is less ambiguous than the
- //other way around
-
- $t = $this->mConverter->autoConvert($t, 'zh-hans');
- $t = parent::stripForSearch( $t );
+ // always convert to zh-hans before indexing. it should be
+ // better to use zh-hans for search, since conversion from
+ // Traditional to Simplified is less ambiguous than the
+ // other way around
+ $s = $this->mConverter->autoConvert( $string, $autoVariant );
+ // LanguageZh_hans::normalizeForSearch
+ $s = parent::normalizeForSearch( $s );
wfProfileOut( __METHOD__ );
- return $t;
+ return $s;
}
function convertForSearchResult( $termsArray ) {
$terms = implode( '|', $termsArray );
+ $terms = self::convertDoubleWidth( $terms );
$terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) );
$ret = array_unique( explode('|', $terms) );
return $ret;
diff --git a/languages/classes/LanguageZh_hans.php b/languages/classes/LanguageZh_hans.php
index 983dd485..5b03d731 100644
--- a/languages/classes/LanguageZh_hans.php
+++ b/languages/classes/LanguageZh_hans.php
@@ -4,21 +4,30 @@
* @ingroup Language
*/
class LanguageZh_hans extends Language {
- function stripForSearch( $string ) {
- # MySQL fulltext index doesn't grok utf-8, so we
- # need to fold cases and convert to hex
- # we also separate characters as "words"
- if( function_exists( 'mb_strtolower' ) ) {
- return preg_replace(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
- "' U8' . bin2hex( \"$1\" )",
- mb_strtolower( $string ) );
- } else {
- list( , $wikiLowerChars ) = Language::getCaseMaps();
- return preg_replace(
- "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
- "' U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )",
- $string );
- }
+ function hasWordBreaks() {
+ return false;
}
-}
+
+ /**
+ * Eventually this should be a word segmentation;
+ * for now just treat each character as a word.
+ * @todo Fixme: only do this for Han characters...
+ */
+ function wordSegmentation( $string ) {
+ $reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/";
+ $s = self::insertSpace( $string, $reg );
+ return $s;
+ }
+
+ function normalizeForSearch( $string ) {
+ wfProfileIn( __METHOD__ );
+
+ // Double-width roman characters
+ $s = self::convertDoubleWidth( $string );
+ $s = trim( $s );
+ $s = parent::normalizeForSearch( $s );
+
+ wfProfileOut( __METHOD__ );
+ return $s;
+ }
+} \ No newline at end of file
diff --git a/languages/messages/MessagesAb.php b/languages/messages/MessagesAb.php
index 8a34f2bd..54b45c7a 100644
--- a/languages/messages/MessagesAb.php
+++ b/languages/messages/MessagesAb.php
@@ -64,13 +64,31 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Акатегориа|Акатегориақәа}}',
-'article' => 'Адаҟьа',
+'article' => 'Адаҟьа',
+'mytalk' => 'Сахцәажәара',
+'navigation' => 'Анавигациа',
+
+# Cologne Blue skin
'qbfind' => 'Аҧшаара',
'qbedit' => 'Ариашара',
'qbpageoptions' => 'Ари адаҟьа',
'qbspecialpages' => 'Цастәи адаҟьақәа',
-'mytalk' => 'Сахцәажәара',
-'navigation' => 'Анавигациа',
+
+# Vector skin
+'vector-namespace-category' => 'Акатегориа',
+'vector-namespace-help' => 'Ацхыраара адаҟьа',
+'vector-namespace-image' => 'Афаил',
+'vector-namespace-main' => 'Адаҟьа',
+'vector-namespace-project' => 'Апроект',
+'vector-namespace-special' => 'Цастәи адаҟьа',
+'vector-namespace-talk' => 'Ахцәажәара',
+'vector-namespace-template' => 'Ашаблон',
+'vector-namespace-user' => 'Иалахә Адаҟьа',
+'vector-view-create' => 'Арҿиара',
+'vector-view-edit' => 'Ариашамҭа',
+'vector-view-history' => 'Аҭоурых',
+'vector-view-view' => 'Аҧхьара',
+'vector-view-viewsource' => 'Ахәаҧшра',
'help' => 'Ацхыраара',
'search' => 'Аҧшаара',
@@ -89,7 +107,7 @@ $messages = array(
'talk' => 'Ахцәажәара',
'toolbox' => 'Амаҵыругақәа',
'otherlanguages' => 'Абызшәақәа',
-'lastmodifiedat' => 'Ацыхәтәантәи аҧсахрақәа абри адаҟьа аҟны: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ацыхәтәантәи аҧсахрақәа абри адаҟьа аҟны: $2, $1.',
'jumptonavigation' => 'Анавигациа',
'jumptosearch' => 'Аҧшаара',
@@ -126,8 +144,6 @@ $messages = array(
'userlogin' => 'Урдырра/Арегистрациара',
'logout' => 'Асеанс дәылҵра',
'userlogout' => 'Асеанс дәылҵра',
-'uid' => 'Иалоу ID:',
-'yourlanguage' => 'Абызшәа:',
'loginlanguagelabel' => 'Абызшәа: $1',
# Edit pages
@@ -142,6 +158,8 @@ $messages = array(
'preferences' => 'Архиарақәа',
'mypreferences' => 'Архиарақәа',
'searchresultshead' => 'Аҧшаара',
+'uid' => 'Иалоу ID:',
+'yourlanguage' => 'Абызшәа:',
# Groups
'group-user' => 'Иалоуқәа',
@@ -151,11 +169,14 @@ $messages = array(
'grouppage-sysop' => '{{ns:project}}:Администраторцәа',
# Recent changes
-'recentchanges' => 'Арҽеира ҿыцқәа',
-'newpageletter' => 'Ҿ',
+'recentchanges' => 'Арҽеира ҿыцқәа',
+'recentchanges-legend-newpage' => '$1 — адаҟьа ҿыц',
+'newpageletter' => 'Ҿ',
# Recent changes linked
-'recentchangeslinked' => 'Еимадоу ариашарақәа',
+'recentchangeslinked' => 'Еимадоу ариашарақәа',
+'recentchangeslinked-feed' => 'Еимадоу ариашарақәа',
+'recentchangeslinked-toolbox' => 'Еимадоу ариашарақәа',
# Upload
'upload' => 'Афаил аҭагалара',
@@ -166,6 +187,8 @@ $messages = array(
# Random page
'randompage' => 'Машәырлатәи аҩымҭа',
+'brokenredirects-edit' => 'ариашамҭа',
+
# Miscellaneous special pages
'newpages-username' => 'Иалахә:',
@@ -189,6 +212,7 @@ $messages = array(
'mycontris' => 'Салагала',
'contribsub2' => 'Алагала $1 ($2)',
+'sp-contributions-talk' => 'ахцәажәара',
'sp-contributions-submit' => 'Аҧшаара',
# What links here
@@ -198,6 +222,9 @@ $messages = array(
# Block/unblock
'contribslink' => 'алагала',
+# Namespace 8 related
+'allmessages-language' => 'Абызшәа:',
+
# Special:NewFiles
'ilsubmit' => 'Аҧшаара',
diff --git a/languages/messages/MessagesAce.php b/languages/messages/MessagesAce.php
index ec44c787..b0acb659 100644
--- a/languages/messages/MessagesAce.php
+++ b/languages/messages/MessagesAce.php
@@ -47,6 +47,7 @@ $messages = array(
'tog-enotifminoredits' => "Peu'ek cit surat-e keu lon bak neuandam bacut",
'tog-enotifrevealaddr' => 'Peuleumah alamat surat-e lon bak neubrithee surat-e',
'tog-shownumberswatching' => 'Peuleumah jumeulah ureueng kalon',
+'tog-oldsig' => 'Peuleumah tanda jaroe:',
'tog-fancysig' => 'Peujeuet tanda jaroe sibagoe naseukah wiki (hana hubong keudroe)',
'tog-externaleditor' => 'Nguy alat leumiek keu ngon peugot kata luwa',
'tog-externaldiff' => 'Nguy alat leumiek luwa keu eu bida neuandam',
@@ -127,10 +128,18 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Kawan nyoë cit na saboh ôn nyoë.|Kawan nyoë na {{PLURAL:$1|ôn|$1 ôn }}, dari ban dum $2.}}',
'listingcontinuesabbrev' => 'samb.',
-'about' => 'Bhah',
-'article' => 'Teunuléh',
-'newwindow' => '(peuhah bak tingkap barô)',
-'cancel' => 'Peubateuë',
+'about' => 'Bhah',
+'article' => 'Teunuléh',
+'newwindow' => '(peuhah bak tingkap barô)',
+'cancel' => 'Peubateuë',
+'moredotdotdot' => 'Lom...',
+'mypage' => 'Ôn lôn',
+'mytalk' => 'Peugah haba lôn',
+'anontalk' => 'Peugah haba IP nyoë.',
+'navigation' => 'Navigasi',
+'and' => '&#32;ngon',
+
+# Cologne Blue skin
'qbfind' => 'Mita',
'qbbrowse' => 'Lop',
'qbedit' => 'Andam',
@@ -138,15 +147,28 @@ $messages = array(
'qbpageinfo' => 'Asoe ôn',
'qbmyoptions' => 'Ôn lôn',
'qbspecialpages' => 'Ôn istimewa',
-'moredotdotdot' => 'Lom...',
-'mypage' => 'Ôn lôn',
-'mytalk' => 'Peugah haba lôn',
-'anontalk' => 'Peugah haba IP nyoë.',
-'navigation' => 'Navigasi',
-'and' => '&#32;ngon',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Beunagi barô',
+'vector-action-delete' => 'Sampôh',
+'vector-action-move' => 'Peupinah',
+'vector-action-protect' => 'Peulindông',
+'vector-action-undelete' => 'Bateuë sampôh',
+'vector-action-unprotect' => 'Bateuë peulindông',
+'vector-namespace-category' => 'Kawan',
+'vector-namespace-help' => 'Ôn beunantu',
+'vector-namespace-image' => 'Beureukah',
+'vector-namespace-main' => 'Ôn',
+'vector-namespace-media' => 'Ôn media',
+'vector-namespace-mediawiki' => 'Peusan',
+'vector-view-create' => 'Peugöt',
+'vector-view-edit' => 'Andam',
+'vector-view-history' => 'Riwayat away',
+'vector-view-view' => 'Baca',
+'vector-view-viewsource' => 'Eu nè',
+'variants' => 'Varian',
'errorpagetitle' => 'Seunalah',
'returnto' => 'Gisa u $1.',
@@ -180,7 +202,7 @@ $messages = array(
'otherlanguages' => 'Bahsa la’én',
'redirectedfrom' => '(Geupeupinah nibak $1)',
'redirectpagesub' => 'Ôn peupinah',
-'lastmodifiedat' => 'Ôn nyoë keuneulheuëh geu’ubah bak $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ôn nyoë keuneulheuëh geu’ubah bak $2, $1.',
'jumpto' => 'Langsông u:',
'jumptonavigation' => 'navigasi',
'jumptosearch' => 'mita',
@@ -196,8 +218,6 @@ $messages = array(
'disclaimerpage' => 'Project:Beunantah umom',
'edithelp' => 'Bantu andam',
'edithelppage' => 'Help:Andam',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Asoë',
'mainpage' => 'Ôn Keuë',
'mainpage-description' => 'Ôn Keuë',
@@ -267,9 +287,6 @@ Meunyo kön nyoë sababjih, Droëneuh kadang ka neuteumèë saboh bug lam softwa
'createaccount' => 'Peudapeuta nan barô',
'gotaccount' => "Ka lheuëh neudapeuta? '''$1'''.",
'gotaccountlink' => 'Tamong',
-'yourrealname' => 'Nan aseuli:',
-'prefs-help-realname' => '* Nan aseuli hana meucéh neupasoë.
-Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë nyang tuléh.',
'loginsuccesstitle' => 'Meuhasé tamong',
'loginsuccess' => "'''Droëneuh jinoë ka neutamong di {{SITENAME}} sibagoë \"\$1\".'''",
'nosuchuser' => 'Hana ureuëng nguy ngön nan "$1".
@@ -280,8 +297,7 @@ Préksa keulayi neu’ija Droëneuh.',
'nouserspecified' => 'Neupasoë nan Droëneuh.',
'wrongpassword' => 'Lageuëm nyang neupasoë salah. Neubaci lom.',
'wrongpasswordempty' => 'Droëneuh hana neupasoë lageuëm. Neubaci lom.',
-'passwordtooshort' => 'Lageuëm rahsia Droëneuh hana sah atawa paneuk that.
-Lageuëm rahsia paléng kureung {{PLURAL:$1|1 karakter|$1 karakter}} ngön beubida ngön nan Droëneuh.',
+'passwordtooshort' => "Lageuëm paléng h'an haroh na {{PLURAL:$1|1 karakter|$1 karakter}}.",
'mailmypassword' => 'Kirém lageuëm barô',
'passwordremindertitle' => 'Lageuëm seumeuntara barô keu {{SITENAME}}',
'passwordremindertext' => 'Salah sidroë (kadang Droëneuh, ngön alamat IP $1) geulakèë kamoë keu meukirém lageuëm rahsia nyang barô keu {{SITENAME}} ($4).
@@ -350,24 +366,25 @@ Ji Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] ba
'copyrightwarning' => "Beuneuingat bahwa ban mandum nyang Droëneuh tuléh keu {{SITENAME}} geukira geupeuteubiët di yup $2 (ngiëng $1 keu leubèh jeulah). Meunyoë Droëneuh h‘an neutém teunuléh Droëneuh ji’andam ngön jiba ho ho la’én, bèk neupasoë teunuléh Droëneuh keunoë.<br />Droëneuh neumeujanji chit meunyoë teunuléh nyoë nakeuh atra neutuléh keudroë, atawa neucok nibak nè nè atra umôm atawa nè bibeuëh la’én.
'''BÈK NEUPASOË TEUNULÉH NYANG GEUPEULINDÔNG HAK KARANG NYANG HANA IDIN'''",
'longpagewarning' => "'''INGAT: Ôn nyoë panyangjih nakeuh $1 kilobit; ladôm alat rawoh web kadang na masalah bak ji’andam ôn nyang panyangjih 32 kb atawa leubèh. Beu neupeutimang keu neuplah jeuët padum boh beunagi nyang leubèh cut. '''",
-'templatesused' => 'Templat nyang geunguy bak ôn nyoë:',
-'templatesusedpreview' => 'Templat nyang geunguy bak eu dilèë nyoë',
+'templatesused' => '{{PLURAL:$1|Templat|Templat}} nyang geunguy bak ôn nyoë:',
+'templatesusedpreview' => '{{PLURAL:$1|Templat|Templat}} nyang geunguy bak eu dilèë nyoë:',
'template-protected' => '(geulindông)',
'template-semiprotected' => '(siteungoh-lindông)',
'hiddencategories' => 'Ôn nyoë nakeuh anggèëta nibak {{PLURAL:$1|1 kawan teusom |$1 kawan teusom}}:',
'nocreatetext' => '{{SITENAME}} ka jikot bak peugöt ôn barô. Ji Droëneuh jeuët neuriwang teuma ngön neu’andam ôn nyang ka na, atawa [[Special:UserLogin|neutamong atawa neudapeuta]].',
'permissionserrorstext-withaction' => 'Droëneuh hana hak tamöng keu $2, muroë {{PLURAL:$1|choë|choë}} nyoë:',
-'recreate-deleted-warn' => "'''Ingat: Droëneuh teungoh neupeugöt ulang saboh ôn nyang ka tom geusampôh. ''',
+'recreate-moveddeleted-warn' => "'''Ingat: Droëneuh teungoh neupeugöt ulang saboh ôn nyang ka tom geusampôh. ''',
Neutimang-timang dilèë peuë ék patôt neupeulanjut atra nyang teungoh neu’andam.
Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
+'moveddeleted-notice' => 'Ôn nyoë ka geusampôh. Meunyo peureulèë, nyoë pat nakeuh log seunampôh ôn nyoë.',
# History pages
'viewpagelogs' => 'Eu log ôn nyoë',
'currentrev' => 'Geunantoë jinoë',
'currentrev-asof' => 'Geunantoë paléng barô bak $1',
'revisionasof' => 'Gantoë tiëp $1',
-'revision-info' => 'Geunantoë tiëp $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Geunantoë tiëp $1; $2',
'previousrevision' => '←Geunantoë sigohlomjih',
'nextrevision' => 'Geunantoë lheuëh nyan→',
'currentrevisionlink' => 'Geunantoë jinoë',
@@ -381,7 +398,7 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'histlast' => 'Paléng barô',
# Revision feed
-'history-feed-item-nocomment' => '$1 bak $2', # user at time
+'history-feed-item-nocomment' => '$1 bak $2',
# Revision deletion
'rev-delundel' => 'peuleumah/peusom',
@@ -404,13 +421,11 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'searchresulttext' => 'Keu beurita leubèh le bhah meunita bak {{SITENAME}}, eu [[{{MediaWiki:Helppage}}|ôn beunantu]].',
'searchsubtitle' => 'Droëneuh neumita \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ban dum ôn nyang geupuphôn ngön "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|bandum ôn nyang teuhubông u "$1"]])',
'searchsubtitleinvalid' => "Droëneuh neumita '''$1'''",
-'noexactmatch' => "'''Hana ôn nyang nanjih ''$1''. ''' Droëneuh jeuët [[:$1|peugèt ôn nyoë]].",
-'noexactmatch-nocreate' => "'''Hana ôn ngön nan \"\$1\".'''",
'notitlematches' => 'Hana nan ôn nyang pah',
'notextmatches' => 'Hana naseukah ôn nyang pah',
-'prevn' => '$1 sigohlomjih',
-'nextn' => '$1 lheuëh nyan',
-'viewprevnext' => 'Eu ($1)($2)($3)',
+'prevn' => '{{PLURAL:$1|$1}} sigohlomjih',
+'nextn' => '{{PLURAL:$1|$1}} lheuëh nyan',
+'viewprevnext' => 'Eu ($1 {{int:pipe-separator}} $2)($3)',
'searchhelp-url' => 'Help:Asoë',
'search-result-size' => '$1 ({{PLURAL:$2|1 kata|$2 kata}})',
'search-redirect' => '(peuninah $1)',
@@ -421,7 +436,6 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'search-interwiki-more' => '(lom)',
'search-mwsuggest-enabled' => 'ngon saran',
'search-mwsuggest-disabled' => 'hana saran',
-'showingresultstotal' => "Hasé mita {{PLURAL:$4|'''$1'''|'''$1 - $2'''}} dari '''$3'''",
'nonefound' => "'''Ceunatat''': Cit ladôm ruweuëng nyang seucara baku geupeutamöng lam meunita. Ci neupuphôn leunakèë Droëneuh ngön ''all:'' keu mita ban dum asoë (rôh cit ôn peugah haba, tèmplat, ngön nyang la’én (nnl)), atawa neunguy ruweuëng nan nyang neumeuh’eut sibagoë neu’away.",
'powersearch' => 'Mita lanjut',
'powersearch-legend' => 'Mita lanjut',
@@ -430,9 +444,12 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'powersearch-field' => 'Mita',
# Preferences page
-'preferences' => 'Galak',
-'mypreferences' => 'Lôn galak',
-'prefs-rc' => 'Ban meuubah',
+'preferences' => 'Galak',
+'mypreferences' => 'Lôn galak',
+'prefs-rc' => 'Ban meuubah',
+'yourrealname' => 'Nan aseuli:',
+'prefs-help-realname' => '* Nan aseuli hana meucéh neupasoë.
+Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë nyang tuléh.',
# Groups
'group-sysop' => 'Ureuëng urôh',
@@ -472,6 +489,8 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
# Recent changes linked
'recentchangeslinked' => 'Neuubah meuhubông',
+'recentchangeslinked-feed' => 'Seundi meuhubông',
+'recentchangeslinked-toolbox' => 'Seundi meuhubông',
'recentchangeslinked-title' => 'Neuubah nyang meuhubông ngön $1',
'recentchangeslinked-noresult' => 'Hana neu’ubah bak ôn-ôn meuhubông silawét masa nyang ka geupeuteuntèë.',
'recentchangeslinked-summary' => "Ôn husôh nyoë geupeuleumah dapeuta neu’ubah keuneulheuëh bak ôn ôn meuhubông. Ôn nyang neukalön geubri tanda ngön '''citak teubay'''.",
@@ -488,6 +507,7 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'listfiles' => 'Dapeuta beureukah',
# File description page
+'file-anchor-link' => 'Beureukah',
'filehist' => 'Riwayat beureukah',
'filehist-help' => 'Teugon bak tanggay/watèë keu eu beureukah nyoë ‘oh watèë nyan.',
'filehist-current' => 'jinoë hat',
@@ -501,9 +521,7 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'imagelinks' => 'Hubông beureukah',
'linkstoimage' => 'Ôn di yup nyoë na {{PLURAL:$1|hubông|$1 hubông}} u beureukah nyoë:',
'nolinkstoimage' => 'Hana ôn nyang na hubông u beureukah nyoë.',
-'sharedupload' => 'Beureukah nyoë dari $1 ngön kadang geunguy lé buët-buët la’én.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Hana beureukah ngön nan nyan, Droëneuh jeuët $1.',
-'noimage-linktext' => 'peutamong beureukah',
+'sharedupload' => 'Beureukah nyoë dari $1 ngön kadang geunguy lé buët-buët la’én.',
'uploadnewversion-linktext' => 'Peulöt seunalén nyang leubèh barô nibak beureukah nyoë.',
# MIME search
@@ -647,7 +665,6 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
'protectexpiry' => 'Maté tanggay:',
'protect_expiry_invalid' => 'Watèë maté tanggay hana sah.',
'protect_expiry_old' => 'Watèë maté tanggay nakeuh bak masa u likôt.',
-'protect-unchain' => 'Peuhah neulindông peupinah',
'protect-text' => "Droëneuh jeuët neu’eu atawa neugantoë tingkat lindông keu ôn '''<nowiki>$1</nowiki>''' nyoë pat.",
'protect-locked-access' => "Nan dapeuta Droëneuh hana hak keu jak gantoë tingkat lindông ôn. Nyoë pat nakeuh konfigurasi atra jinoë keu ôn '''$1''':",
'protect-cascadeon' => 'Ôn nyoë teungöh geulindông kareuna geupeuseureuta lam {{PLURAL:$1|ôn|ôn-ôn}} nyoë nyang ka geulindông ngön peuniléh lindông meuturôt geupeuudép.
@@ -660,7 +677,7 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
'protect-expiring' => 'maté tanggay $1 (UTC)',
'protect-cascade' => 'Peulindông ban mandum ôn nyang rôh lam ôn nyoë (lindông meuturôt).',
'protect-cantedit' => 'Droëneuh h‘an jeuët neu’ubah tingkat lindông ôn nyoë kareuna Droëneuh hana hak keu neupeulaku nyan.',
-'protect-expiry-options' => '1 jeum:1 hour,1 uroë:1 day,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 jeum:1 hour,1 uroë:1 day,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite',
'restriction-type' => 'Lindông:',
'restriction-level' => 'Tingkat:',
@@ -686,6 +703,7 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
'sp-contributions-newbies' => 'Keu ureuëng-ureuëng nyang ban nguy mantöng',
'sp-contributions-newbies-sub' => 'Keu ureuëng nguy barô',
'sp-contributions-blocklog' => 'Log peutheun',
+'sp-contributions-talk' => 'Peugah haba',
'sp-contributions-search' => 'Mita soë nyang tuléh',
'sp-contributions-username' => 'Alamat IP atawa nan ureuëng nguy:',
'sp-contributions-submit' => 'Mita',
@@ -709,7 +727,7 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
# Block/unblock
'blockip' => 'Theun ureuëng nguy',
-'ipboptions' => '2 jeum:2 hours,1 uroë:1 day,3 uroë:3 days,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 jeum:2 hours,1 uroë:1 day,3 uroë:3 days,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite',
'ipblocklist' => 'Dapeuta neutheun',
'blocklink' => 'theun',
'unblocklink' => 'peugadöh theun',
@@ -737,7 +755,7 @@ Lam masalah nyoë, meunyo neuhawa, Droëneuh jeuët neupeupinah atawa neupeugab
'move-watch' => 'Kalön ôn nyoë',
'movepagebtn' => 'Peupinah ôn',
'pagemovedsub' => 'Peupinah meuhasé',
-'movepage-moved' => '\'\'\'"$1" ka geupeupinah u "$2".\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ka geupeupinah u "$2".\'\'\'',
'articleexists' => 'Ôn ngön nan nyan ka na atawa nan nyang neupiléh hana sah. Neupiléh nan la’én.',
'talkexists' => 'Ôn nyan ka geupeupinah, tapi ôn peugah haba bak ôn nyan h‘an jeuët geupeupinah kareuna ka na ôn peugah haba bak nan barô. Neupeusapat mantöng ôn ôn peugah haba nyan keudroë.',
'movedto' => 'geupeupinah u',
@@ -784,6 +802,7 @@ Droëneuh cit jeuët neu’eu nèjih.',
'tooltip-search-go' => 'Mita saboh ôn ngon nan nyang peureuséh lagèë nyoë meunyo na',
'tooltip-search-fulltext' => 'Mita ôn nyang na asoë lagèë nyoë',
'tooltip-n-mainpage' => 'Jak u Ôn Keuë',
+'tooltip-n-mainpage-description' => 'Saweuë Ôn Keuë',
'tooltip-n-portal' => 'Bhah buët, peuë nyang jeuët neupeulaku, pat tamita sipeuë hay',
'tooltip-n-currentevents' => 'Mita beurita nyang paléng barô',
'tooltip-n-recentchanges' => 'Dapeuta nyang ban meu’ubah lam wiki.',
@@ -849,7 +868,7 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Andam beureukah nyoë ngön aplikasi luwa',
@@ -866,7 +885,7 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
'watchlisttools-raw' => 'Andam dapeuta keunalön meuntah',
# Special:Version
-'version' => 'Curak', # Not used as normal message but as header for the special page itself
+'version' => 'Curak',
# Special:SpecialPages
'specialpages' => 'Ôn husôh',
diff --git a/languages/messages/MessagesAf.php b/languages/messages/MessagesAf.php
index fe5d570c..9326cf44 100644
--- a/languages/messages/MessagesAf.php
+++ b/languages/messages/MessagesAf.php
@@ -10,9 +10,11 @@
* @author Adriaan
* @author Anrie
* @author Arnobarnard
+ * @author Byeboer
* @author Deadelf
* @author Manie
* @author Naudefj
+ * @author Purodha
* @author SPQRobin
* @author Spacebirdy
*/
@@ -48,13 +50,50 @@ $magicWords = array(
'forcetoc' => array( '0', '__DWINGIO__', '__FORCETOC__' ),
'toc' => array( '0', '__IO__', '__TOC__' ),
'noeditsection' => array( '0', '__GEENNUWEAFDELING__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'HUIDIGEMAAND', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__GEENOPSKRIF__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'HUIDIGEMAAND', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'HUIDIGEMAAND1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'HUIDIGEDAG', 'CURRENTDAY' ),
'currentday2' => array( '1', 'HUIDIGEDAG2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'HUIDIGEDAGNAAM', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'HUIDIGEJAAR', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'HUIDIGETYD', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HUIDIGEUUR', 'CURRENTHOUR' ),
+ 'numberofpages' => array( '1', 'AANTALBLADSYE', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'AANTALARTIKELS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'AANTALLêERS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'AANTALGEBRUIKERS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'AANTALAKTIEWEGEBRUIKERS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'AANTALWYSIGINGS', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'AANTALKEERGESIEN', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'BLADSYNAAM', 'PAGENAME' ),
+ 'namespace' => array( '1', 'NAAMSPASIE', 'NAMESPACE' ),
+ 'talkspace' => array( '1', 'BESPREKINGSBLADSY', 'TALKSPACE' ),
+ 'img_right' => array( '1', 'regs', 'right' ),
+ 'img_left' => array( '1', 'links', 'left' ),
+ 'img_none' => array( '1', 'geen', 'none' ),
+ 'img_border' => array( '1', 'raam', 'border' ),
+ 'img_top' => array( '1', 'bo', 'top' ),
+ 'img_middle' => array( '1', 'middel', 'middle' ),
+ 'img_bottom' => array( '1', 'onder', 'bottom' ),
+ 'sitename' => array( '1', 'WERFNAAM', 'SITENAME' ),
+ 'server' => array( '0', 'BEDIENER', 'SERVER' ),
+ 'servername' => array( '0', 'BEDIENERNAAM', 'SERVERNAME' ),
+ 'gender' => array( '0', 'GESLAG:', 'GENDER:' ),
+ 'localweek' => array( '1', 'HUIDIGEWEEK', 'LOCALWEEK' ),
+ 'plural' => array( '0', 'MEERVOUD', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'VOLURL', 'FULLURL:' ),
+ 'displaytitle' => array( '1', 'VERTOONTITEL', 'DISPLAYTITLE' ),
+ 'currentversion' => array( '1', 'HUIDIGEWEERGAWE', 'CURRENTVERSION' ),
'language' => array( '0', '#TAAL:', '#LANGUAGE:' ),
+ 'special' => array( '0', 'spesiaal', 'special' ),
+ 'filepath' => array( '0', 'LêERPAD:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'etiket', 'tag' ),
+ 'pagesize' => array( '1', 'BLADSYGROOTTE', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEKS__', '__INDEX__' ),
+ 'noindex' => array( '1', '__GEENINDEKS__', '__NOINDEX__' ),
);
$specialPageAliases = array(
@@ -82,7 +121,9 @@ $specialPageAliases = array(
'Unusedcategories' => array( 'OngebruikdeKategorieë' ),
'Unusedimages' => array( 'OngebruikdeBeelde' ),
'Wantedpages' => array( 'GesoekdeBladsye', 'GebreekteSkakels' ),
- 'Wantedcategories' => array( 'GesoekdeKategorieë' ),
+ 'Wantedcategories' => array( 'GesoekteKategorieë' ),
+ 'Wantedfiles' => array( 'GesoekteLêers' ),
+ 'Wantedtemplates' => array( 'GesoekteSjablone' ),
'Mostlinked' => array( 'MeeteGeskakel' ),
'Mostlinkedcategories' => array( 'MeesGeskakeldeKategorieë' ),
'Mostlinkedtemplates' => array( 'MeesGeskakeldeSjablone' ),
@@ -105,22 +146,45 @@ $specialPageAliases = array(
'Emailuser' => array( 'Stuur e-pos', 'Stuure-pos', 'Stuur epos', 'Stuurepos' ),
'Confirmemail' => array( 'Bevestig e-posadres', 'Bevestige-posadres', 'Bevestig eposadres', 'Bevestigeposadres' ),
'Whatlinkshere' => array( 'Skakels hierheen', 'Skakelshierheen' ),
+ 'Recentchangeslinked' => array( 'OnlangseVeranderingsMetSkakels', 'VerwanteVeranderings' ),
'Movepage' => array( 'Skuif bladsy', 'Skuifbladsy' ),
'Blockme' => array( 'BlokMy' ),
'Booksources' => array( 'Boekbronne' ),
'Categories' => array( 'Kategorieë' ),
+ 'Export' => array( 'Eksporteer' ),
'Version' => array( 'Weergawe' ),
'Allmessages' => array( 'Stelselboodskappe', 'Alle stelselboodskappe', 'Allestelselboodskappe', 'Boodskappe' ),
+ 'Log' => array( 'Logboek', 'Logboeke' ),
'Blockip' => array( 'BlokIP' ),
+ 'Undelete' => array( 'Ontskrap' ),
+ 'Import' => array( 'Importeer' ),
+ 'Lockdb' => array( 'SluitDB' ),
+ 'Unlockdb' => array( 'OntsluitDB' ),
+ 'Userrights' => array( 'GebruikersRegte' ),
'MIMEsearch' => array( 'MIME-soek', 'MIMEsoek', 'MIME soek' ),
+ 'FileDuplicateSearch' => array( 'LerDuplikaatSoek' ),
+ 'Unwatchedpages' => array( 'NieDopgehoudeBladsye' ),
+ 'Listredirects' => array( 'LysAansture' ),
+ 'Revisiondelete' => array( 'WeergaweSkrap' ),
+ 'Unusedtemplates' => array( 'OngebruikteSjablone' ),
'Randomredirect' => array( 'Lukrake aanstuur', 'Lukrakeaanstuur' ),
- 'Mypage' => array( 'Mybladsy' ),
+ 'Mypage' => array( 'MyBladsy' ),
'Mytalk' => array( 'Mybespreking', 'Mybesprekings' ),
'Mycontributions' => array( 'Mybydrae' ),
+ 'Listadmins' => array( 'LysAdministrateurs' ),
+ 'Listbots' => array( 'LysRobotte' ),
+ 'Popularpages' => array( 'PopulêreBladsye' ),
'Search' => array( 'Soek' ),
'Resetpass' => array( 'HerstelWagwoord' ),
'Withoutinterwiki' => array( 'Sonder taalskakels', 'Sondertaalskakels' ),
+ 'MergeHistory' => array( 'VersmeltGeskiedenis' ),
'Filepath' => array( 'Lêerpad' ),
+ 'Invalidateemail' => array( 'OngeldigeEpos' ),
+ 'Blankpage' => array( 'SkoonBladsy' ),
+ 'LinkSearch' => array( 'SkakelSoektog' ),
+ 'DeletedContributions' => array( 'GeskrapteBydraes' ),
+ 'Tags' => array( 'Etikette' ),
+ 'Activeusers' => array( 'AktieweGebruikers' ),
);
# South Africa uses space for thousands and comma for decimal
@@ -160,6 +224,7 @@ $messages = array(
'tog-enotifminoredits' => 'Stuur ook e-pos vir klein bladsywysigings',
'tog-enotifrevealaddr' => 'Stel my e-posadres bloot in kennisgewingspos',
'tog-shownumberswatching' => 'Wys die aantal gebruikers wat dophou',
+'tog-oldsig' => 'Voorskou van bestaande handtekening:',
'tog-fancysig' => 'Hanteer handtekening as wikiteks (sonder outomatiese skakels)',
'tog-externaleditor' => "Gebruik outomaties 'n eksterne redigeringsprogram",
'tog-externaldiff' => "Gebruik 'n eksterne vergelykingsprogram (net vir deskundiges - benodig spesiale verstellings op u rekenaar)",
@@ -181,6 +246,13 @@ $messages = array(
'underline-never' => 'Nooit',
'underline-default' => 'Blaaierverstek',
+# Font style option in Special:Preferences
+'editfont-style' => 'Lettertipe vir wysigingsvenster:',
+'editfont-default' => 'Blaaierverstek',
+'editfont-monospace' => 'Monospaced lettertipe',
+'editfont-sansserif' => 'Sans-serif lettertipe',
+'editfont-serif' => 'Serif lettertipe',
+
# Dates
'sunday' => 'Sondag',
'monday' => 'Maandag',
@@ -240,7 +312,7 @@ $messages = array(
'category-media-header' => 'Media in kategorie "$1"',
'category-empty' => "''Hierdie kategorie bevat geen bladsye of media nie.''",
'hidden-categories' => '{{PLURAL:$1|Versteekte kategorie|Versteekte kategorië}}',
-'hidden-category-category' => 'Versteekte kategorieë', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Versteekte kategorieë',
'category-subcat-count' => "{{PLURAL:$2|Hierdie kategorie bevat slegs die volgende subkategorie.|Hierdie kategorie bevat die volgende {{PLURAL:$1|subkategorie|$1 subkategorië}}, uit 'n totaal van $2.}}",
'category-subcat-count-limited' => 'Hierdie kategorie het die volgende {{PLURAL:$1|subkategorie|$1 subkategorië}}.',
'category-article-count' => "{{PLURAL:$2|Hierdie kategorie bevat slegs die volgende bladsy.|Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} is in hierdie kategorie, uit 'n totaal van $2.}}",
@@ -248,6 +320,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Hierdie kategorie bevat net die volgende lêer.|Die volgende {{PLURAL:$1|lêer|$1 lêers}} is in hierdie kategorie, uit 'n totaal van $2.}}",
'category-file-count-limited' => 'Die volgende {{PLURAL:$1|lêer|$1 lêers}} is in die huidige kategorie.',
'listingcontinuesabbrev' => 'vervolg',
+'index-category' => 'Geïndekseerde bladsye',
+'noindex-category' => 'Ongeïndekseerde bladsye',
'mainpagetext' => "'''MediaWiki is suksesvol geïnstalleer.'''",
'mainpagedocfooter' => "Konsulteer '''[http://meta.wikimedia.org/wiki/Help:Contents User's Guide]''' vir inligting oor hoe om die wikisagteware te gebruik.
@@ -257,10 +331,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Aangaande',
-'article' => 'Inhoudbladsy',
-'newwindow' => '(verskyn in nuwe venster)',
-'cancel' => 'Kanselleer',
+'about' => 'Aangaande',
+'article' => 'Inhoudbladsy',
+'newwindow' => '(verskyn in nuwe venster)',
+'cancel' => 'Kanselleer',
+'moredotdotdot' => 'Meer…',
+'mypage' => 'My bladsy',
+'mytalk' => 'My besprekings',
+'anontalk' => 'Besprekingsblad vir hierdie IP',
+'navigation' => 'Navigasie',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Vind',
'qbbrowse' => 'Snuffel',
'qbedit' => 'Wysig',
@@ -268,15 +350,35 @@ $messages = array(
'qbpageinfo' => 'Bladsyinligting',
'qbmyoptions' => 'My bladsye',
'qbspecialpages' => 'Spesiale bladsye',
-'moredotdotdot' => 'Meer…',
-'mypage' => 'My bladsy',
-'mytalk' => 'My besprekings',
-'anontalk' => 'Besprekingsblad vir hierdie IP',
-'navigation' => 'Navigasie',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Gewilde vrae',
+'faqpage' => 'Project:GewildeVrae',
+
+# Vector skin
+'vector-action-addsection' => 'Nuwe onderwerp',
+'vector-action-delete' => 'Skrap',
+'vector-action-move' => 'Skuif',
+'vector-action-protect' => 'Beskerm',
+'vector-action-undelete' => 'Ontskrap',
+'vector-action-unprotect' => 'Verwyder beskerming',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hulpbladsy',
+'vector-namespace-image' => 'Lêer',
+'vector-namespace-main' => 'Bladsy',
+'vector-namespace-media' => 'Mediablad',
+'vector-namespace-mediawiki' => 'Boodskap',
+'vector-namespace-project' => 'Projekblad',
+'vector-namespace-special' => 'Spesiale bladsy',
+'vector-namespace-talk' => 'Bespreking',
+'vector-namespace-template' => 'Sjabloon',
+'vector-namespace-user' => 'Gebruikersblad',
+'vector-view-create' => 'Skep',
+'vector-view-edit' => 'Wysig',
+'vector-view-history' => 'Wys geskiedenis',
+'vector-view-view' => 'Lees',
+'vector-view-viewsource' => 'Wys bronteks',
+'actions' => 'Aksies',
+'namespaces' => 'Naamruimtes',
+'variants' => 'Variante',
'errorpagetitle' => 'Fout',
'returnto' => 'Keer terug na $1.',
@@ -326,18 +428,22 @@ $messages = array(
'otherlanguages' => 'Ander tale',
'redirectedfrom' => '(Aangestuur vanaf $1)',
'redirectpagesub' => 'Aanstuurblad',
-'lastmodifiedat' => 'Laaste wysiging op $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Laaste wysiging op $2, $1.',
'viewcount' => 'Hierdie bladsy is al {{PLURAL:$1|keer|$1 kere}} aangevra.',
'protectedpage' => 'Beskermde bladsy',
'jumpto' => 'Spring na:',
'jumptonavigation' => 'navigasie',
'jumptosearch' => 'soek',
+'view-pool-error' => "Jammer, die bedieners is tans oorbelas.
+Te veel gebruikers probeer om na hierdie bladsy te kyk.
+Wag asseblief 'n rukkie voordat u weer probeer om die bladsy op te roep.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Inligting oor {{SITENAME}}',
'aboutpage' => 'Project:Omtrent',
'copyright' => 'Teks is beskikbaar onderhewig aan $1.',
-'copyrightpagename' => '{{SITENAME}} kopiereg',
'copyrightpage' => '{{ns:project}}:kopiereg',
'currentevents' => 'Huidige gebeure',
'currentevents-url' => 'Project:Huidige gebeure',
@@ -345,8 +451,6 @@ $messages = array(
'disclaimerpage' => 'Project:Voorwaardes',
'edithelp' => 'Wysighulp',
'edithelppage' => 'Help:Wysig',
-'faq' => 'Gewilde vrae',
-'faqpage' => 'Project:GewildeVrae',
'helppage' => 'Help:Inhoud',
'mainpage' => 'Tuisblad',
'mainpage-description' => 'Tuisblad',
@@ -426,10 +530,6 @@ Die laaste navraag was:
"$1"
vanuit funksie "$2".
Databasis gee foutboodskap: "$3: $4".',
-'noconnect' => 'Die wiki ondervind tegniese probleme en kon nie na die databasis konnekteer nie.<br />
-$1',
-'nodb' => 'Kon nie databasis $1 selekteer nie',
-'cachederror' => "Die volgende is 'n gekaste kopie van die aangevraagde blad, en is dalk nie op datum nie.",
'laggedslavemode' => 'Waarskuwing: Onlangse wysigings dalk nie in bladsy vervat nie.',
'readonly' => 'Databasis gesluit',
'enterlockreason' => 'Rede vir die sluiting,
@@ -450,6 +550,8 @@ Indien dit nie die geval is nie, het u moontlik 'n fout in die sagteware ontdek.
'readonly_lag' => 'Die databasis is outomaties gesluit terwyl die slaafdatabasisse sinchroniseer met die meester',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
+'fileappenderrorread' => 'Kon nie "$1" tydens die "append" lees nie.',
+'fileappenderror' => 'Kon nie "$1" agteraan "$2" voeg nie.',
'filecopyerror' => 'Kon nie lêer van "$1" na "$2" kopieer nie.',
'filerenameerror' => 'Kon nie lêernaam van "$1" na "$2" wysig nie.',
'filedeleteerror' => 'Kon nie lêer "$1" skrap nie.',
@@ -459,7 +561,8 @@ Indien dit nie die geval is nie, het u moontlik 'n fout in die sagteware ontdek.
'unexpected' => 'Onverwagte waarde: "$1"="$2".',
'formerror' => 'Fout: kon vorm nie stuur nie',
'badarticleerror' => 'Die aksie kon nie op hierdie bladsy uitgevoer word nie.',
-'cannotdelete' => 'Kon nie die bladsy of prent skrap nie, iemand anders het dit miskien reeds geskrap.',
+'cannotdelete' => 'Die bladsy of lêer "$1" kon nie skrap word nie.
+Iemand anders het dit moontlik reeds geskrap.',
'badtitle' => 'Ongeldige titel',
'badtitletext' => "Die bladsytitel waarvoor gevra is, is ongeldig, leeg, of
'n verkeerd geskakelde tussen-taal of tussen-wiki titel.",
@@ -492,7 +595,6 @@ Die rede gegee is ''$2''.",
'virus-unknownscanner' => 'onbekende antivirus:',
# Login and logout pages
-'logouttitle' => 'Teken uit',
'logouttext' => "'''U is nou uitgeteken'''
U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer [[Special:UserLogin|inteken]] as dieselfde of 'n ander gebruiker.
@@ -500,7 +602,6 @@ Dit is moontlik dat sommige bladsye nog sal aandui dat u aangeteken is totdat u
'welcomecreation' => '== Welkom, $1! ==
U rekening is geskep;
moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}}]] te stel nie.',
-'loginpagetitle' => 'Teken in',
'yourname' => 'Gebruikersnaam:',
'yourpassword' => 'Wagwoord:',
'yourpasswordagain' => 'Herhaal wagwoord',
@@ -511,6 +612,7 @@ moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}}
'nav-login-createaccount' => 'Teken in',
'loginprompt' => 'U blaaier moet koekies toelaat om by {{SITENAME}} te kan aanteken.',
'userlogin' => 'Teken in / registreer',
+'userloginnocreate' => 'Teken in',
'logout' => 'Teken uit',
'userlogout' => 'Teken uit',
'notloggedin' => 'Nie ingeteken nie',
@@ -523,28 +625,8 @@ moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}}
'badretype' => 'Die ingetikte wagwoorde is nie dieselfde nie.',
'userexists' => "Die gebruikersnaam wat u gekies het is reeds geneem.
Kies asseblief 'n ander naam.",
-'youremail' => 'E-pos',
-'username' => 'Gebruikersnaam:',
-'uid' => 'Gebruiker-ID:',
-'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepe}}:',
-'yourrealname' => 'Regte naam:',
-'yourlanguage' => 'Taal:',
-'yournick' => 'Bynaam (vir handtekening)',
-'badsig' => 'Ongeldige handtekening; gaan HTML na.',
-'badsiglength' => 'U handtekening is te lank.
-Dit mag nie meer as $1 {{PLURAL:$1|karakter|karakters}} bevat nie.',
-'yourgender' => 'Geslag:',
-'gender-unknown' => 'Nie gespesifiseer',
-'gender-male' => 'Man',
-'gender-female' => 'Vrou',
-'prefs-help-gender' => 'Opsioneel: dit word gebruik om gebruikers korrek aan te spreek in die sagteware.
-Die inligting is vir ander gebruikers sigbaar.',
-'email' => 'E-pos',
-'prefs-help-realname' => 'Regte naam (opsioneel): as u hierdie verskaf, kan dit gebruik word om erkenning vir u werk te gee.',
'loginerror' => 'Intekenfout',
-'prefs-help-email' => 'E-posadres is opsioneel, maar maak dit moontlik om u wagwoord aan u te pos sou u dit vergeet.
-U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of besprekingsblad wysig sonder om u identiteit te verraai.',
-'prefs-help-email-required' => 'E-pos adres word benodig.',
+'createaccounterror' => "Kon nie 'n rekening skep nie: $1",
'nocookiesnew' => 'Die gebruikersrekening is geskep, maar u is nie ingeteken nie.
{{SITENAME}} gebruik koekies om gebruikers in te teken.
U rekenaar laat tans nie koekies toe nie.
@@ -558,16 +640,19 @@ Gebruikersname is gevoelig vir hoofletters.
Maak seker dit is reg gespel of [[Special:UserLogin/signup|skep \'n nuwe rekening]].',
'nosuchusershort' => 'Daar is geen gebruikersnaam "<nowiki>$1</nowiki>" nie. Maak seker dit is reg gespel.',
'nouserspecified' => "U moet 'n gebruikersnaam spesifiseer.",
+'login-userblocked' => 'Hierdie gebruiker is geblokkeer.
+Intekening word verbied.',
'wrongpassword' => 'Ongeldige wagwoord, probeer weer.',
'wrongpasswordempty' => 'Die wagwoord was leeg. Probeer asseblief weer.',
-'passwordtooshort' => 'U wagwoord is te kort.
-Dit moet ten minste {{PLURAL:$1|1 karakter|$1 karakters}} hê en kan nie u gebruikersnaam insluit nie.',
+'passwordtooshort' => 'Wagwoorde moet ten minste {{PLURAL:$1|1 karakter|$1 karakters}} lank wees.',
+'password-name-match' => 'U wagwoord mag nie dieselfde as u gebruikersnaam wees nie.',
'mailmypassword' => "E-pos my 'n nuwe wagwoord",
'passwordremindertitle' => 'Wagwoordwenk van {{SITENAME}}',
'passwordremindertext' => 'Iemand (waarskynlik u vanaf IP-adres $1) het \'n nuwe wagwoord vir {{SITENAME}} ($4) gevra. \'n Tydelike wagwoord is vir gebruiker "$2" geskep. Die nuwe wagwoord is "$3". U kan met die tydelike wagwoord aanteken en \'n nuwe wagwoord stel. Die tydelike wagwoord sal na {{PLURAL:$5|een dag|$5 dae}} verval.
Indien iemand anders hierdie navraag gerig het, of u het die wagwoord intussen onthou en wil nie meer die wagwoord wysig nie, kan u die boodskap ignoreer en voortgaan om die ou wagwoord te gebruik.',
'noemail' => 'Daar is geen e-posadres vir gebruiker "$1" nie.',
+'noemailcreate' => "U moet 'n geldige e-posadres verskaf",
'passwordsent' => 'Nuwe wagwoord gestuur na e-posadres vir "$1".
Teken asseblief in na u dit ontvang het.',
'blocked-mailpassword' => 'U IP-adres is tans teen wysigings geblokkeer. Om verdere misbruik te voorkom is dit dus nie moontlik om die wagwoordherwinningfunksie te gebruik nie.',
@@ -591,9 +676,11 @@ Voer asseblief 'n geldige e-posadres in, of laat die veld leeg.",
U word aangeraai om in te teken so gou as moontlik u wagwoord te verander.
Indien hierdie rekening foutief geskep is, kan u hierdie boodskap ignoreer.',
+'usernamehasherror' => "'n Gebruikersnaam mag nie 'n hekkie-karakter (#) in hê nie",
'login-throttled' => "U het al te veel kere met 'n ongeldige wagwoord probeer aanteken.
Wag asseblief alvorens u weer probeer.",
'loginlanguagelabel' => 'Taal: $1',
+'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
# Password reset dialog
'resetpass' => 'Verander wagwoord',
@@ -605,18 +692,13 @@ Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
'retypenew' => 'Tik nuwe wagwoord weer in',
'resetpass_submit' => 'Stel wagwoord en teken in',
'resetpass_success' => 'U wagwoord is suksesvol gewysig! Besig om u in te teken ...',
-'resetpass_bad_temporary' => "Ongeldige tydelike wagwoord.
-U het u wagwoord al gewysig of 'n nuwe tydelike wagwoord aangevra.",
'resetpass_forbidden' => 'Wagwoorde kannie gewysig word nie.',
'resetpass-no-info' => 'U moet ingeteken wees om hierdie bladsy direk te kan gebruik.',
'resetpass-submit-loggedin' => 'Verander wagwoord',
+'resetpass-submit-cancel' => 'Kanselleer',
'resetpass-wrong-oldpass' => "Die huidige of tydelike wagwoord is ongeldig.
U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
'resetpass-temp-password' => 'Tydelike wagwoord:',
-'resetpass-log' => 'Logboek van wagwoorde herstel',
-'resetpass-logtext' => "Onder is 'n logboek van gebruikers wat se wagwoorde deur administrateurs herstel is.",
-'resetpass-logentry' => 'verander die wagwoord vir $1',
-'resetpass-comment' => 'Rede vir herstel van wagwoord:',
# Edit page toolbar
'bold_sample' => 'Vetgedrukte teks',
@@ -690,7 +772,6 @@ Vermeld asseblief die bovermelde bloknommer as u die saak rapporteer,",
'blockededitsource' => "Die teks van '''u wysigings''' aan '''$1''' word hier onder vertoon:",
'whitelistedittitle' => 'U moet aangeteken wees om te kan redigeer.',
'whitelistedittext' => 'U moet $1 om bladsye te wysig.',
-'confirmedittitle' => 'E-pos-bevestiging nodig om te redigeer',
'confirmedittext' => 'U moet u e-posadres bevestig voor u bladsye wysig. Verstel en bevestig asseblief u e-posadres by u [[Special:Preferences|voorkeure]].',
'nosuchsectiontitle' => 'Kan nie die afdeling vind nie',
'nosuchsectiontext' => "U het probeer om 'n afdeling wat nie bestaan nie te wysig.
@@ -711,9 +792,15 @@ As u per ongeluk hier uitgekom het, gebruik u blaaier se '''terug'''-knoppie.",
U kan [[Special:Search/{{PAGENAME}}|vir die bladsytitel in ander bladsye soek]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]
of [{{fullurl:{{FULLPAGENAME}}|action=edit}} hierdie bladsy wysig]</span>.',
+'noarticletext-nopermission' => 'Daar is tans geen teks in hierdie bladsy nie. U kan vir die bladsytitel [[Special:Search/{{PAGENAME}}|in ander bladsye soek]] of
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]</span>.',
'userpage-userdoesnotexist' => 'U is besig om \'n gebruikersblad wat nie bestaan nie te wysig (gebruiker "$1"). Maak asseblief seker of u die bladsy wil skep/ wysig.',
+'userpage-userdoesnotexist-view' => 'Die gebruiker "$1" is nie geregistreer nie.',
+'blocked-notice-logextract' => 'Hierdie gebruiker is tans geblokkeer.
+Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:',
'clearyourcache' => "'''Let wel''': Na die voorkeure gestoor is, moet u blaaier se kasgeheue verfris word om die veranderinge te sien: '''Mozilla:''' klik ''Reload'' (of ''Ctrl-R''), '''IE / Opera:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-R'', '''Konqueror''' ''Ctrl-R''.",
-'usercssjsyoucanpreview' => "'''Wenk:''' Gebruik die \"Wys voorskou\"-knoppie om u nuwe CSS/JS te toets voor u stoor.",
+'usercssyoucanpreview' => "'''Wenk:''' Gebruik die \"{{int:showpreview}}\"-knoppie om u nuwe CSS te toets voor u dit stoor.",
+'userjsyoucanpreview' => "'''Wenk:''' Gebruik die \"{{int:showpreview}}\"-knoppie om u nuwe JS te toets voor u dit stoor.",
'usercsspreview' => "'''Onthou hierdie is slegs 'n voorskou van u persoonlike CSS.'''
'''Dit is nog nie gestoor nie!'''",
'userjspreview' => "'''Onthou hierdie is slegs 'n toets/voorskou van u gebruiker-JavaScript, dit is nog nie gestoor nie.'''",
@@ -763,13 +850,14 @@ Die bladsy kan nie gestoor word nie.'''",
'readonlywarning' => "'''WAARSKUWING: Die databasis is gesluit vir onderhoud. Dus sal u nie nou u wysigings kan stoor nie. Dalk wil u die teks plak in 'n lêer en stoor vir later.'''
Een administrateur het die databasis geblokkeer vir hierdie rede: $1",
-'protectedpagewarning' => "'''WAARSKUWING: Hierdie blad is beskerm, en slegs administrateurs kan die inhoud verander.'''",
-'semiprotectedpagewarning' => "'''Let wel:''' Hierdie artikel is beskerm sodat slegs ingetekende gebruikers dit kan wysig.",
+'protectedpagewarning' => "'''WAARSKUWING: Hierdie bladsy is beveilig sodat slegs administrateurs die inhoud sal kan verander.''' Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
+'semiprotectedpagewarning' => "'''Let wel:''' Hierdie artikel is beveilig sodat slegs ingetekende gebruikers dit sal kan wysig. Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
'cascadeprotectedwarning' => "'''Waarskuwing:''' Die bladsy was beveilig sodat dit slegs deur administrateurs gewysig kan word, omrede dit ingesluit is in die volgende {{PLURAL:$1|bladsy|bladsye}} wat kaskade-beskerming geniet:",
-'titleprotectedwarning' => "'''WAARSKUWING: Die bladsy is gesluit sodat net gebruikers met [[Special:ListGroupRights|spesiale regte]] dit sal kan skep.'''",
-'templatesused' => 'Sjablone in gebruik op hierdie blad:',
-'templatesusedpreview' => 'Sjablone in hierdie voorskou gebruik:',
-'templatesusedsection' => 'Sjablone gebruik in hierdie afdeling:',
+'titleprotectedwarning' => "'''WAARSKUWING: Hierdie bladsy is beveilig. Slegs gebruikers met [[Special:ListGroupRights|spesiale regte]] sal dit kan skep.'''
+Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
+'templatesused' => 'Hierdie bladsy {{PLURAL:$1|gebruik sjabloon|gebruik sjablone}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Sjabloon|Sjablone}} gebruik in hierdie voorskou:',
+'templatesusedsection' => 'Die volgende {{PLURAL:$1|sjabloon|sjablone}} word in hierdie afdeling gebruik:',
'template-protected' => '(beskermd)',
'template-semiprotected' => '(half-beskerm)',
'hiddencategories' => "Hierdie bladsy is 'n lid van {{PLURAL:$1|1 versteekte kategorie|$1 versteekte kategorië}}:",
@@ -778,16 +866,18 @@ Een administrateur het die databasis geblokkeer vir hierdie rede: $1",
'nocreatetext' => '{{SITENAME}} het die skep van nuwe bladsye beperk.
U kan slegs bestaande bladsye wysig, of u kan [[Special:UserLogin|aanteken of registreer]].',
'nocreate-loggedin' => 'U het nie regte om nuwe blaaie te skep nie.',
+'sectioneditnotsupported-title' => 'Dit is nie moontlik om paragrawe te wysig nie',
+'sectioneditnotsupported-text' => 'Dit is nie moontlik om paragrawe op hierdie bladsy te wysig nie.',
'permissionserrors' => 'Toestemmings Foute',
'permissionserrorstext' => 'U het nie toestemming om hierdie te doen nie, om die volgende {{PLURAL:$1|rede|redes}}:',
'permissionserrorstext-withaction' => 'U het geen regte om $2, vir die volgende {{PLURAL:$1|rede|redes}}:',
-'recreate-deleted-warn' => "'''Waarskuwing: U skep 'n bladsy wat vantevore verwyder was.'''
+'recreate-moveddeleted-warn' => "'''Waarskuwing: U skep 'n bladsy wat vantevore verwyder was.'''
U moet besluit of dit wys is om voort te gaan en aan die bladsy te werk.
Die verwyderingslogboek vir die blad word hier onder vertoon vir u gerief:",
-'deleted-notice' => 'Hierdie bladsy is verwyder.
-Die skraplogboek word hieronder ter inligting weergegee.',
-'deletelog-fulllog' => 'Wys volledige logboek',
+'moveddeleted-notice' => 'Hierdie bladsy is verwyder.
+Die skrap- en skuif-logboeke word hieronder ter inligting weergegee.',
+'log-fulllog' => 'Wys volledige logboek',
'edit-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
Geen verduideliking is verskaf nie.",
'edit-gone-missing' => 'Die bladsy is nie gewysig nie.
@@ -810,6 +900,7 @@ Hierdie parameters is uitgelaat.",
'post-expand-template-argument-category' => 'Bladsye met weggelate sjabloonargumente',
'parser-template-loop-warning' => "Sjablone is in 'n oneindige lus: [[$1]]",
'parser-template-recursion-depth-warning' => 'Die rekursiediepte vir sjablone is oorskry ($1)',
+'language-converter-depth-warning' => 'Die dieptelimiet vir die taalomskakelaar is oorskrei ($1)',
# "Undo" feature
'undo-success' => 'Die wysiging kan ongedaan gemaak word.
@@ -830,7 +921,7 @@ Die rede verskaf deur $3 is ''$2''",
'currentrev' => 'Huidige wysiging',
'currentrev-asof' => 'Huidige wysiging per $1',
'revisionasof' => 'Wysiging soos op $1',
-'revision-info' => 'Weergawe soos op $1 deur $2', # Additionally available: $3: revision id
+'revision-info' => 'Weergawe soos op $1 deur $2',
'previousrevision' => '← Ouer weergawe',
'nextrevision' => 'Nuwer weergawe →',
'currentrevisionlink' => 'Huidige weergawe',
@@ -842,7 +933,7 @@ Die rede verskaf deur $3 is ''$2''",
'histlegend' => 'Byskrif: (huidige) = verskil van huidige weergawe,
(vorige) = verskil van vorige weergawe, M = klein wysiging',
'history-fieldset-title' => 'Blaai deur geskiedenis',
-'deletedrev' => '[geskrap]',
+'history-show-deleted' => 'Slegs geskrapte',
'histfirst' => 'Oudste',
'histlast' => 'Nuutste',
'historysize' => '({{PLURAL:$1|1 greep|$1 grepe}})',
@@ -851,68 +942,114 @@ Die rede verskaf deur $3 is ''$2''",
# Revision feed
'history-feed-title' => 'Weergawegeskiedenis',
'history-feed-description' => 'Wysigingsgeskiedenis vir die bladsy op die wiki',
-'history-feed-item-nocomment' => '$1 by $2', # user at time
+'history-feed-item-nocomment' => '$1 by $2',
'history-feed-empty' => 'Die verlangde bladsy bestaan nie.
Dit was moontlik geskrap of geskuif.
[[Special:Search|Deursoek die wiki]] vir relevante bladsye.',
# Revision deletion
-'rev-deleted-comment' => '(opsomming geskrap)',
-'rev-deleted-user' => '(gebruikersnaam geskrap)',
-'rev-deleted-event' => '(stawingsaksie verwyder)',
-'rev-deleted-text-permission' => "Hierdie weergawe van die bladsy was '''geskrap'''.
+'rev-deleted-comment' => '(opsomming geskrap)',
+'rev-deleted-user' => '(gebruikersnaam geskrap)',
+'rev-deleted-event' => '(stawingsaksie verwyder)',
+'rev-deleted-user-contribs' => '[gebruikersnaam of IP-adres is verwyder - wysiging versteek in bydraes]',
+'rev-deleted-text-permission' => "Die weergawe van die bladsy is '''verwyder'''.
Vir meer besonderhede, raadpleeg die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skrapingslogboek].",
-'rev-deleted-text-view' => "Hierdie bladsy weergawe was '''geskrap'''.
-As administrateur kan u dit wel sien; daar mag dalk meer besonderhede in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skrapingslogboek] wees.",
-'rev-deleted-no-diff' => "U kan nie hierdie verandering sien nie, omdat een van die hersienings '''geskrap''' is.<br />
-Daar mag dalk meer inligting in die [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} skraplogboek] beskikbaar wees.",
-'rev-delundel' => 'wys/versteek',
-'revisiondelete' => 'Verwyder/herstel weergawes',
-'revdelete-nooldid-title' => 'Ongeldige teiken weergawe',
-'revdelete-nooldid-text' => 'U het geen teikenweergawes vir hierdie aksie verskaf nie, die aangegewe weergawe bestaan nie, of u probeer om die laaste weergawe te verberg.',
-'revdelete-nologtype-title' => 'Geen logboektipe verskaf nie',
-'revdelete-nologtype-text' => "U het nie 'n logboektipe verskaf om hierdie handeling op uit te voer nie.",
-'revdelete-toomanytargets-title' => 'Te veel teikens',
-'revdelete-toomanytargets-text' => 'U het te veel tipes teikens verskaf om die aksie uit te voer.',
-'revdelete-nologid-title' => 'Ongeldige logboekreël',
-'revdelete-nologid-text' => 'U het óf geen logboeke gespesifiseer nie óf die gevraagde lyn bestaan nie in die logboek nie.',
-'revdelete-selected' => "'''Geselekteerde {{PLURAL:$2|wysiging|wysigings}} vir [[:$1]]:'''",
-'logdelete-selected' => "'''Geselekteerde {{PLURAL:$1|logboek aksie|logboek aksies}}:'''",
-'revdelete-text' => "'''Geskrapte weergawes en gebeure sal steeds sigbaar wees in die bladsy se geskiedenis en logboeke, maar dele van die huidige inhoud sal ontoeganklik wees vir die publiek.'''
-Ander administrateurs van {{SITENAME}} sal steeds in staat wees om toegang te kry tot die versteekte inhoud en kan dit weer herstel deur gebruik te maak van dieselfde koppelvlak indien daar geen addisionele beperkinge gestel is nie.
-
-Bevestig asseblief u voorneme, dat u die gevolge van u voorneme verstaan en dat u dit doen in ooreenstemming met [[{{MediaWiki:Policy-url}}|die beleid]].",
-'revdelete-suppress-text' => "Verberging van weergawes mag '''slegs''' in die volgende gevalle gebruik word:
+'rev-deleted-text-unhide' => "Hierdie weergawe van die bladsy is '''verwyder'''.
+Details kan moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] aanwesig wees.
+As administrateur kan u, as u wil, na [$1 die weergawe kyk].",
+'rev-suppressed-text-unhide' => "Hierdie weergawe van die blad word '''onderdruk'''.
+Details kan moontlik in die [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek van onderdrukte weergawes] gesien word.
+As administrateur kan u, as u wil, na [$1 die verskille kyk].",
+'rev-deleted-text-view' => "Hierdie weergawe is '''verwyder'''.
+As administrateur kan u dit wel sien.
+Details kan moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] aanwesig wees.",
+'rev-suppressed-text-view' => "Hierdie weergawe van die bladsy word '''onderdruk'''.
+As administrateur kan u dit sien.
+Details kan moontlik in die [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek van onderdrukte weergawes] gesien word.",
+'rev-deleted-no-diff' => "U kan nie die verskille sien nie omdat een van die weergawes '''verwyder''' is.
+Details kan moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] aanwesig wees.",
+'rev-suppressed-no-diff' => "U kan nie hierdie verskil sien nie omdat een van die weergawes '''geskrap''' is.",
+'rev-deleted-unhide-diff' => "Een van die weergawes vir hierdie verskil wat u aangevra het is '''verwyder'''.
+Meer details mag moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwyderingslogboek] aanwesig wees.
+As administrateur kan u steeds [$1 die verskille sien] as u wil voortgaan.",
+'rev-suppressed-unhide-diff' => "Een van die weergawes vir hierdie verskil wat u aangevra het is '''onderdruk'''.
+Meer details mag moontlik in die [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek] aanwesig wees.
+As administrateur kan u steeds [$1 hierdie weergawe sien] as u wil voortgaan.",
+'rev-deleted-diff-view' => "Een van die weergawes van die verskil wat u aangevra het is '''verwyder'''.
+As administrateur kan u hierdie verskil sien. Meer details mag moontlik is die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwyderingslogboek] beskikbaar wees.",
+'rev-suppressed-diff-view' => "Een van die weergawes vir die verskil wat u aangevra het is '''onderdruk'''.
+As administrateur kan u hierdie verskil sien. Meer details mag moontlik in die [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek] beskikbaar wees.",
+'rev-delundel' => 'wys/versteek',
+'rev-showdeleted' => 'wys',
+'revisiondelete' => 'Verwyder/herstel weergawes',
+'revdelete-nooldid-title' => 'Ongeldige teiken weergawe',
+'revdelete-nooldid-text' => 'U het geen teikenweergawes vir hierdie aksie verskaf nie, die aangegewe weergawe bestaan nie, of u probeer om die laaste weergawe te verberg.',
+'revdelete-nologtype-title' => 'Geen logboektipe verskaf nie',
+'revdelete-nologtype-text' => "U het nie 'n logboektipe verskaf om hierdie handeling op uit te voer nie.",
+'revdelete-nologid-title' => 'Ongeldige logboekreël',
+'revdelete-nologid-text' => 'U het óf geen logboeke gespesifiseer nie óf die gevraagde lyn bestaan nie in die logboek nie.',
+'revdelete-no-file' => 'Die gespesifiseerde lêer bestaan nie.',
+'revdelete-show-file-confirm' => 'Is u seker u wil die geskrapte weergawe van die lêer "<nowiki>$1</nowiki>" van $2 om $3 sien?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''Geselekteerde {{PLURAL:$2|wysiging|wysigings}} vir [[:$1]]:'''",
+'logdelete-selected' => "'''Geselekteerde {{PLURAL:$1|logboek aksie|logboek aksies}}:'''",
+'revdelete-text' => "'''Geskrapte wysigings en aksies sal in die geskiedenis en logboeke sigbaar bly, maar dele van die inhoud sal nie publiek toeganklik wees nie.'''
+Ander administrateurs van {{SITENAME}} kan steeds die verborge inhoud sien en die verwydering met behulp van die vorm ongedaan maak, tensy aanvullende beperkinge deur die stelseladministrateur opgelê is.",
+'revdelete-confirm' => 'Bevestig asseblief dat u dit wil doen, dat u die nagevolge verstaan en dat u dit doen in ooreenstemming met die [[{{MediaWiki:Policy-url}}|beleid]].',
+'revdelete-suppress-text' => "Verberging van weergawes mag '''slegs''' in die volgende gevalle gebruik word:
* Potensieel lasterlike inligting
* Ongepaste persoonlike inligting
*: ''woonadres, telefoonnommers, ID-nommers, ensovoorts.''",
-'revdelete-legend' => 'Stel sigbaarheid beperkinge',
-'revdelete-hide-text' => 'Steek hersiening teks weg',
-'revdelete-hide-name' => 'Steek aksie en teiken weg',
-'revdelete-hide-comment' => 'Versteek wysigopsomming',
-'revdelete-hide-user' => 'Steek redigeerder se gebruikersnaam/IP weg',
-'revdelete-hide-restricted' => 'Onderdruk data van administrateurs asook andere',
-'revdelete-suppress' => 'Onderdruk data van administrateurs en ander.',
-'revdelete-hide-image' => 'Steek lêer inhoud weg',
-'revdelete-unsuppress' => 'Verwyder beperkinge op herstelde weergawes',
-'revdelete-log' => 'Rede:',
-'revdelete-submit' => 'Pas op gekose weergawe toe',
-'revdelete-logentry' => 'sigbaarheid van weergawe is gewysig vir [[$1]]',
-'logdelete-logentry' => 'verander sigbaarheid van gebeurtenis [[$1]]',
-'revdelete-success' => "'''Die sigbaarheid van die wysiging is suksesvol opgedateer.'''",
-'logdelete-success' => "'''Sigbaarheid van die gebeurtenis suksesvol gestel.'''",
-'revdel-restore' => 'Verander sigbaarheid',
-'pagehist' => 'Bladsy geskiedenis',
-'deletedhist' => 'Verwyderde geskiedenis',
-'revdelete-content' => 'inhoud',
-'revdelete-summary' => 'redigeringsopsomming',
-'revdelete-uname' => 'gebruikersnaam',
-'revdelete-restricted' => 'beperkings is aan administrateurs opgelê',
-'revdelete-unrestricted' => 'beperkings vir administrateurs is opgehef',
-'revdelete-hid' => '$1 verskuil',
-'revdelete-unhid' => '$1 onverskuil',
-'revdelete-log-message' => '$1 vir $2 {{PLURAL:$2|weergawe|weergawes}}',
-'logdelete-log-message' => '$1 vir $2 {{PLURAL:$2|gebeurtenis|gebeurtenisse}}',
+'revdelete-legend' => 'Stel sigbaarheid beperkinge',
+'revdelete-hide-text' => 'Steek hersiening teks weg',
+'revdelete-hide-image' => 'Steek lêer inhoud weg',
+'revdelete-hide-name' => 'Steek aksie en teiken weg',
+'revdelete-hide-comment' => 'Versteek wysigopsomming',
+'revdelete-hide-user' => 'Steek redigeerder se gebruikersnaam/IP weg',
+'revdelete-hide-restricted' => 'Onderdruk data van administrateurs asook andere',
+'revdelete-radio-same' => '(moenie verander nie)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nee',
+'revdelete-suppress' => 'Onderdruk data van administrateurs en ander.',
+'revdelete-unsuppress' => 'Verwyder beperkinge op herstelde weergawes',
+'revdelete-log' => 'Rede:',
+'revdelete-submit' => 'Pas op gekose {{PLURAL:$1|weergawe|weergawes}} toe',
+'revdelete-logentry' => 'sigbaarheid van weergawe is gewysig vir [[$1]]',
+'logdelete-logentry' => 'verander sigbaarheid van gebeurtenis [[$1]]',
+'revdelete-success' => "'''Die sigbaarheid van die wysiging is suksesvol opgedateer.'''",
+'revdelete-failure' => "'''Die sigbaarheid van die wysiging kon nie opgedateer word nie:'''
+$1",
+'logdelete-success' => "'''Sigbaarheid van die gebeurtenis suksesvol gestel.'''",
+'logdelete-failure' => "'''Sigbaarheid kon nie vir die logboekreël gestel word nie:'''
+$1",
+'revdel-restore' => 'Verander sigbaarheid',
+'pagehist' => 'Bladsy geskiedenis',
+'deletedhist' => 'Verwyderde geskiedenis',
+'revdelete-content' => 'inhoud',
+'revdelete-summary' => 'redigeringsopsomming',
+'revdelete-uname' => 'gebruikersnaam',
+'revdelete-restricted' => 'beperkings is aan administrateurs opgelê',
+'revdelete-unrestricted' => 'beperkings vir administrateurs is opgehef',
+'revdelete-hid' => '$1 verskuil',
+'revdelete-unhid' => '$1 onverskuil',
+'revdelete-log-message' => '$1 vir $2 {{PLURAL:$2|weergawe|weergawes}}',
+'logdelete-log-message' => '$1 vir $2 {{PLURAL:$2|gebeurtenis|gebeurtenisse}}',
+'revdelete-hide-current' => 'Fout met die wegsteek van die item gedateer $2 om $1 uur: hierdie is die huidige weergawe. Dit kan nie versteek word nie.',
+'revdelete-show-no-access' => 'Fout met die vertoon van die item gedateer $2 om $1 uur: hierdie item is as "beskermd" gemerk.
+U het nie toegang tot die item nie.',
+'revdelete-modify-no-access' => 'Fout met die wysiging van die item gedateer $2 om $1 uur: hierdie item is as "beskermd" gemerk. U het nie toegang tot die item nie.',
+'revdelete-modify-missing' => 'Fout met die wysiging van item ID $1: dit is nie in die databasis nie!',
+'revdelete-no-change' => "'''Waarskuwing:''' die item van $1 om $2 uur het reeds die gevraagde sigbaarheidsinstellings.",
+'revdelete-concurrent-change' => "'n Fout het voorgekom met die wysiging van die objek van $1 om $2 uur: die status is intussen deur iemand anders gewysig.
+Kontroleer asseblief die logboeke.",
+'revdelete-only-restricted' => "'n Fout het voorgekom met die verberging van die item van $1, $2: u kan nie items onderdruk uit die sig van administrateurs sonder om ook een van die ander sigbaarheidsopsies te kies nie.",
+'revdelete-reason-dropdown' => '* Algemene redes vir skrapping
+** Skending van outeursreg
+** Onbetaamlike persoonlike inligting',
+'revdelete-otherreason' => 'Ander rede:',
+'revdelete-reasonotherlist' => 'Ander rede',
+'revdelete-edit-reasonlist' => 'Wysig skrap redes',
+'revdelete-offender' => 'Outeur van hersiening:',
# Suppression log
'suppressionlog' => 'Verbergingslogboek',
@@ -951,67 +1088,13 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel
'mergelogpagetext' => "Hieronder is 'n lys van die mees onlangse versmeltings van een bladsy se geskiedenis na 'n ander.",
# Diffs
-'history-title' => 'Weergawegeskiedenis van "$1"',
-'difference' => '(Verskil tussen weergawes)',
-'lineno' => 'Lyn $1:',
-'compareselectedversions' => 'Vergelyk gekose weergawes',
-'visualcomparison' => 'Visuele vergelyking',
-'wikicodecomparison' => 'Wikiteks vergelyking',
-'editundo' => 'maak ongedaan',
-'diff-multi' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} word nie gewys nie.)',
-'diff-movedto' => 'geskuif na $1',
-'diff-styleadded' => 'styl $1 toegevoeg',
-'diff-added' => '$1 bygevoeg',
-'diff-changedto' => 'verander na $1',
-'diff-movedoutof' => 'uitgeskuif uit $1',
-'diff-styleremoved' => 'styl $1 is verwyder',
-'diff-removed' => '$1 is verwyder',
-'diff-changedfrom' => 'gewysig van $1',
-'diff-src' => 'bron',
-'diff-withdestination' => 'met bestemming $1',
-'diff-with' => '&#32;met $1 $2',
-'diff-with-final' => '&#32;en $1 $2',
-'diff-width' => 'breedte',
-'diff-height' => 'hoogte',
-'diff-p' => "'n '''paragraaf'''",
-'diff-blockquote' => "'n '''aanhaling'''",
-'diff-h1' => "'n '''Opskrif (vlak 1)'''",
-'diff-h2' => "'n '''Opskrif (vlak 2)'''",
-'diff-h3' => "'n '''Opskrif (vlak 3)'''",
-'diff-h4' => "'n '''Opskrif (vlak 4)'''",
-'diff-h5' => "'n '''Opskrif (vlak 5)'''",
-'diff-pre' => "'n '''voorgeformatteerde teksblok'''",
-'diff-div' => "'n '''afdeling'''",
-'diff-ul' => "'n '''ongenommerde lys''''",
-'diff-ol' => "'n '''genommerde lys'''",
-'diff-li' => "'n '''lys-item'''",
-'diff-table' => "'n '''tabel'''",
-'diff-tbody' => "'''tabelinhoud'''",
-'diff-tr' => "'n '''ry'''",
-'diff-td' => "'n '''sel'''",
-'diff-th' => "'n '''kolomopskrif'''",
-'diff-br' => "'n '''lynbreek'''",
-'diff-hr' => "'n '''horisontale lyn'''",
-'diff-code' => "'n '''teksblok met programkode'''",
-'diff-dl' => "'n '''definisie-lys'''",
-'diff-dt' => "'n '''definisie-item'''",
-'diff-dd' => "'n '''definisie'''",
-'diff-input' => "'n '''invoerveld'''",
-'diff-form' => "'n '''vorm'''",
-'diff-img' => "'n '''beeld'''",
-'diff-span' => "'n '''span'''",
-'diff-a' => "'n '''skakel'''",
-'diff-i' => "'''kursief'''",
-'diff-b' => "'''vet'''",
-'diff-strong' => "'''sterk'''",
-'diff-em' => "'''nadruk'''",
-'diff-font' => "'''lettertipe'''",
-'diff-big' => "'''groot'''",
-'diff-del' => "'''verwyderd'''",
-'diff-tt' => "'''vaste breedte'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''doodgetrek'''",
+'history-title' => 'Weergawegeskiedenis van "$1"',
+'difference' => '(Verskil tussen weergawes)',
+'lineno' => 'Lyn $1:',
+'compareselectedversions' => 'Vergelyk gekose weergawes',
+'showhideselectedversions' => 'Wys/versteek gekose weergawes',
+'editundo' => 'maak ongedaan',
+'diff-multi' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} word nie gewys nie.)',
# Search results
'searchresults' => 'soekresultate',
@@ -1019,28 +1102,25 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel
'searchresulttext' => 'Vir meer inligting oor {{SITENAME}} soekresultate, lees [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'U soek vir \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle bladsye wat met "$1" begin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle bladsye wat aan "$1" skakel]])',
'searchsubtitleinvalid' => 'Vir navraag "$1"',
-'noexactmatch' => "'''Geen bladsy met die titel \"\$1\" bestaan nie.''' Probeer 'n volteksnavraag of [[:\$1|skep die bladsy]].",
-'noexactmatch-nocreate' => "'''Daar bestaan geen bladsy met titel \"\$1\" nie.'''",
'toomanymatches' => "Te veel resultate. Probeer asseblief 'n ander soektog.",
'titlematches' => 'Artikeltitel resultate',
'notitlematches' => 'Geen artikeltitel resultate nie',
'textmatches' => 'Artikelteks resultate',
'notextmatches' => 'Geen artikelteks resultate nie',
-'prevn' => 'vorige $1',
-'nextn' => 'volgende $1',
+'prevn' => 'vorige {{PLURAL:$1|$1}}',
+'nextn' => 'volgende {{PLURAL:$1|$1}}',
'prevn-title' => 'Vorige {{PLURAL:$1|resultaat|$1 resultate}}',
'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per bladsy',
-'viewprevnext' => 'Kyk na ($1) ($2) ($3).',
+'viewprevnext' => 'Kyk na ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Soekopsies',
'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
'searchhelp-url' => 'Help:Inhoud',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wys bladsye wat met die voorvoegsel begin]]',
'searchprofile-articles' => 'Inhoudelike bladsye',
-'searchprofile-articles-and-proj' => 'Inhoudelike en projekbladsye',
-'searchprofile-project' => 'Projekblaaie',
-'searchprofile-images' => 'Lêers',
+'searchprofile-project' => 'Hulp- en projekbladsye',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Uitgebreid',
'searchprofile-articles-tooltip' => 'Soek in $1',
@@ -1048,8 +1128,6 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel
'searchprofile-images-tooltip' => 'Soek na lêers',
'searchprofile-everything-tooltip' => 'Soek deur alle inhoud (ook besprekingsbladsye)',
'searchprofile-advanced-tooltip' => 'Soek in spesifieke naamruimtes',
-'prefs-search-nsdefault' => 'Soek met verstek-instellings.',
-'prefs-search-nscustom' => 'Soek in aangegewe naamruimtes:',
'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woorde}})',
'search-result-score' => 'Relevansie: $1%',
'search-redirect' => '(aanstuur $1)',
@@ -1062,11 +1140,12 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel
'search-mwsuggest-disabled' => 'geen voorstelle',
'search-relatedarticle' => 'Verwante',
'mwsuggest-disable' => 'Deaktiveer AJAX-voorstelle',
+'searcheverything-enable' => 'Soek in alle naamruimtes',
'searchrelated' => 'verwante',
'searchall' => 'alle',
'showingresults' => "Hier volg {{PLURAL:$1|'''1''' resultaat|'''$1''' resultate}} wat met #'''$2''' begin.",
'showingresultsnum' => "Hier onder {{PLURAL:$3|is '''1''' resultaat|is '''$3''' resultate}} vanaf #'''$2'''.",
-'showingresultstotal' => "Hier onder is {{PLURAL:$4|resultaat '''$1''' van '''$3'''|resultate '''$1 - $2''' van '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} vir '''$4'''",
'nonefound' => "<strong>Opmerking</strong>: nie alle naamruimtes word by verstek deursoek nie.
As die voorvoegsel \"''all:''\" in 'n soekopdrag gebruik word, word alle bladsye deursoek (inklusief besprekengsbladsye, sjablone, ensovoorts).
U kan ook 'n naamruimte as voorvoegsel gebruik.",
@@ -1076,113 +1155,151 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
'powersearch-ns' => 'Soek in naamruimtes:',
'powersearch-redir' => 'Wys aanstuurbladsye',
'powersearch-field' => 'Soek vir',
+'powersearch-togglelabel' => 'Kies',
+'powersearch-toggleall' => 'Alles',
+'powersearch-togglenone' => 'Geen',
'search-external' => 'Eksterne soektog',
'searchdisabled' => '{{SITENAME}} se soekfunksie is tans afgeskakel ter wille van werkverrigting. Gebruik gerus intussen Google of Yahoo! Let daarop dat hulle indekse van die {{SITENAME}}-inhoud verouderd mag wees.',
+# Quickbar
+'qbsettings' => 'Snelbalkvoorkeure',
+'qbsettings-none' => 'Geen',
+'qbsettings-fixedleft' => 'Links vas.',
+'qbsettings-fixedright' => 'Regs vas.',
+'qbsettings-floatingleft' => 'Dryf links.',
+'qbsettings-floatingright' => 'Dryf regs.',
+
# Preferences page
-'preferences' => 'Voorkeure',
-'mypreferences' => 'My voorkeure',
-'prefs-edits' => 'Aantal wysigings:',
-'prefsnologin' => 'Nie ingeteken nie',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} aanteken] om voorkeure te kan verander.',
-'prefsreset' => 'Voorkeure is herstel.',
-'qbsettings' => 'Snelbalkvoorkeure',
-'qbsettings-none' => 'Geen',
-'qbsettings-fixedleft' => 'Links vas.',
-'qbsettings-fixedright' => 'Regs vas.',
-'qbsettings-floatingleft' => 'Dryf links.',
-'qbsettings-floatingright' => 'Dryf regs.',
-'changepassword' => 'Verander wagwoord',
-'skin' => 'Omslag',
-'skin-preview' => 'Voorskou',
-'math' => 'Wiskunde',
-'dateformat' => 'Datumformaat',
-'datedefault' => 'Geen voorkeur',
-'datetime' => 'Datum en tyd',
-'math_failure' => 'Kon nie verbeeld nie',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende funksie',
-'math_lexing_error' => 'leksikale fout',
-'math_syntax_error' => 'sintaksfout',
-'math_image_error' => 'PNG-omskakeling het gefaal.
-Kontroleer of latex, dvips en gs korrek geïnstalleer is en skakel om',
-'math_bad_tmpdir' => 'Die gids vir tydelike lêers vir wiskundige formules bestaan nie of kan nie geskep word nie',
-'math_bad_output' => 'Die gids vir lêers met wiskundige formules bestaan nie of kan nie geskep word nie',
-'math_notexvc' => 'Kan nie die texvc program vind nie;
-stel asseblief op volgens die beskrywing in math/README.',
-'prefs-personal' => 'Gebruikersdata',
-'prefs-rc' => 'Onlangse wysigings',
-'prefs-watchlist' => 'Dophoulys',
-'prefs-watchlist-days' => 'Aantal dae om in dophoulys te wys:',
-'prefs-watchlist-days-max' => '(maksimum 7 dae)',
-'prefs-watchlist-edits' => 'Aantal wysigings om in uitgebreide dophoulys te wys:',
-'prefs-watchlist-edits-max' => '(maksimum aantal: 1000)',
-'prefs-misc' => 'Allerlei',
-'prefs-resetpass' => 'Verander wagwoord',
-'saveprefs' => 'Stoor voorkeure',
-'resetprefs' => 'Herstel voorkeure',
-'restoreprefs' => 'Herstel voorkeure',
-'textboxsize' => 'Wysiging',
-'prefs-edit-boxsize' => 'Afmetings van die wysigingsvenster.',
-'rows' => 'Rye',
-'columns' => 'Kolomme',
-'searchresultshead' => 'Soekresultate',
-'resultsperpage' => 'Aantal resultate om te wys',
-'contextlines' => 'Aantal lyne per resultaat',
-'contextchars' => 'Karakters konteks per lyn',
-'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):',
-'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dag|dae}})',
-'recentchangescount' => 'Aantal titels in onlangse wysigings',
-'savedprefs' => 'U voorkeure is gestoor.',
-'timezonelegend' => 'Tydsone:',
-'timezonetext' => 'Aantal ure waarmee plaaslike tyd van UTC verskil.',
-'localtime' => 'Plaaslike tyd:',
-'timezoneselect' => 'Tydsone:',
-'timezoneuseserverdefault' => 'Bedienerverstek',
-'timezoneuseoffset' => 'Ander (spesifiseer tydsverskil)',
-'timezoneoffset' => 'Tydsverskil¹:',
-'servertime' => 'Bedienertyd:',
-'guesstimezone' => 'Vul in vanaf webblaaier',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktiese gebied',
-'timezoneregion-asia' => 'Asië',
-'timezoneregion-atlantic' => 'Atlantiese Oseaan',
-'timezoneregion-australia' => 'Australië',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiese Oseaan',
-'timezoneregion-pacific' => 'Stille Oseaan',
-'allowemail' => 'Laat e-pos van ander toe',
-'prefs-searchoptions' => 'Soekopsies',
-'prefs-namespaces' => 'Naamruimtes',
-'defaultns' => 'Verstek naamruimtes vir soektog:',
-'default' => 'verstek',
-'files' => 'Lêers',
-'prefs-custom-css' => 'Persoonlike CSS',
-'prefs-custom-js' => 'Persoonlike JS',
+'preferences' => 'Voorkeure',
+'mypreferences' => 'My voorkeure',
+'prefs-edits' => 'Aantal wysigings:',
+'prefsnologin' => 'Nie ingeteken nie',
+'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aanteken] om voorkeure te kan verander.',
+'changepassword' => 'Verander wagwoord',
+'prefs-skin' => 'Omslag',
+'skin-preview' => 'Voorskou',
+'prefs-math' => 'Wiskunde',
+'datedefault' => 'Geen voorkeur',
+'prefs-datetime' => 'Datum en tyd',
+'prefs-personal' => 'Gebruikersdata',
+'prefs-rc' => 'Onlangse wysigings',
+'prefs-watchlist' => 'Dophoulys',
+'prefs-watchlist-days' => 'Aantal dae om in dophoulys te wys:',
+'prefs-watchlist-days-max' => 'Maksimum 7 dae',
+'prefs-watchlist-edits' => 'Aantal wysigings om in uitgebreide dophoulys te wys:',
+'prefs-watchlist-edits-max' => 'Maksimum aantal: 1000',
+'prefs-watchlist-token' => 'Dophoulys-sleutel:',
+'prefs-misc' => 'Allerlei',
+'prefs-resetpass' => 'Verander wagwoord',
+'prefs-email' => 'E-posopsies',
+'prefs-rendering' => 'Voorkoms',
+'saveprefs' => 'Stoor voorkeure',
+'resetprefs' => 'Herstel voorkeure',
+'restoreprefs' => 'Herstel voorkeure',
+'prefs-editing' => 'Wysigings',
+'prefs-edit-boxsize' => 'Afmetings van die wysigingsvenster.',
+'rows' => 'Rye',
+'columns' => 'Kolomme',
+'searchresultshead' => 'Soekresultate',
+'resultsperpage' => 'Aantal resultate om te wys',
+'contextlines' => 'Aantal lyne per resultaat',
+'contextchars' => 'Karakters konteks per lyn',
+'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):',
+'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:',
+'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|dag|dae}}',
+'recentchangescount' => 'Aantal wysigings om by verstek te vertoon:',
+'prefs-help-recentchangescount' => 'Dit geld vir onlangse wysigings, bladsygeskiedenis en logboekbladsye.',
+'prefs-help-watchlist-token' => "Deur 'n geheime sleutel hier in te sleutel word 'n RSS-voer vir u dophoulys geskep.
+Enige een wat die sleutel ken sal u dophoulys kan lees. Kies dus 'n veilige sleutel.
+Hier volg 'n lukraak gegenereerde waarde wat u kan gebruik: $1",
+'savedprefs' => 'U voorkeure is gestoor.',
+'timezonelegend' => 'Tydsone:',
+'localtime' => 'Plaaslike tyd:',
+'timezoneuseserverdefault' => 'Bedienerverstek',
+'timezoneuseoffset' => 'Ander (spesifiseer tydsverskil)',
+'timezoneoffset' => 'Tydsverskil¹:',
+'servertime' => 'Bedienertyd:',
+'guesstimezone' => 'Vul in vanaf webblaaier',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktiese gebied',
+'timezoneregion-asia' => 'Asië',
+'timezoneregion-atlantic' => 'Atlantiese Oseaan',
+'timezoneregion-australia' => 'Australië',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiese Oseaan',
+'timezoneregion-pacific' => 'Stille Oseaan',
+'allowemail' => 'Laat e-pos van ander toe',
+'prefs-searchoptions' => 'Soekopsies',
+'prefs-namespaces' => 'Naamruimtes',
+'defaultns' => 'Anders soek in hierdie naamruimtes:',
+'default' => 'verstek',
+'prefs-files' => 'Lêers',
+'prefs-custom-css' => 'Persoonlike CSS',
+'prefs-custom-js' => 'Persoonlike JS',
+'prefs-reset-intro' => 'U kan die blad gebruik om u voorkeure terug te stel na die webwerf se verstekwaardes.
+Die aksie kan nie ongedaan gemaak word nie.',
+'prefs-emailconfirm-label' => 'E-posbevestiging:',
+'prefs-textboxsize' => 'Afmetings van die wysigingsvenster',
+'youremail' => 'E-pos',
+'username' => 'Gebruikersnaam:',
+'uid' => 'Gebruiker-ID:',
+'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepe}}:',
+'prefs-registration' => 'Registrasiedatum:',
+'yourrealname' => 'Regte naam:',
+'yourlanguage' => 'Taal:',
+'yournick' => 'Bynaam (vir handtekening)',
+'prefs-help-signature' => 'Kommentaar op besprekingsbladsye moet met "<nowiki>~~~~</nowiki>" onderteken word.
+Die tildes word in u handtekening omgeskakel en die datum en tyd word insluit.',
+'badsig' => 'Ongeldige handtekening; gaan HTML na.',
+'badsiglength' => 'U handtekening is te lank.
+Dit mag nie meer as $1 {{PLURAL:$1|karakter|karakters}} bevat nie.',
+'yourgender' => 'Geslag:',
+'gender-unknown' => 'Nie gespesifiseer',
+'gender-male' => 'Man',
+'gender-female' => 'Vrou',
+'prefs-help-gender' => 'Opsioneel: dit word gebruik om gebruikers korrek aan te spreek in die sagteware.
+Die inligting is vir ander gebruikers sigbaar.',
+'email' => 'E-pos',
+'prefs-help-realname' => 'Regte naam (opsioneel): as u hierdie verskaf, kan dit gebruik word om erkenning vir u werk te gee.',
+'prefs-help-email' => 'E-posadres is opsioneel, maar maak dit moontlik om u wagwoord aan u te pos sou u dit vergeet.
+U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of besprekingsblad wysig sonder om u identiteit te verraai.',
+'prefs-help-email-required' => 'E-pos adres word benodig.',
+'prefs-info' => 'Basiese inligting',
+'prefs-i18n' => 'Taalinstellings',
+'prefs-signature' => 'Handtekening',
+'prefs-dateformat' => 'Datumformaat',
+'prefs-timeoffset' => 'Tydsverskil',
+'prefs-advancedediting' => 'Gevorderde instellings',
+'prefs-advancedrc' => 'Gevorderde instellings',
+'prefs-advancedrendering' => 'Gevorderde instellings',
+'prefs-advancedsearchoptions' => 'Gevorderde instellings',
+'prefs-advancedwatchlist' => 'Gevorderde instellings',
+'prefs-display' => 'Vertoonopsies',
+'prefs-diffs' => 'Verskille',
# User rights
-'userrights' => 'Bestuur gebruikersregte', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Beheer gebruikersgroepe',
-'userrights-user-editname' => 'Voer gebruikersnaam in:',
-'editusergroup' => 'Wysig gebruikersgroepe',
-'editinguser' => "Besig om gebruikersregte van gebruiker '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) te wysig",
-'userrights-editusergroup' => 'wysig gebruikersgroepe',
-'saveusergroups' => 'Stoor gebruikersgroepe',
-'userrights-groupsmember' => 'Lid van:',
-'userrights-groups-help' => "U kan die groepe waarvan die gebruiker 'n lid is verander.
+'userrights' => 'Bestuur gebruikersregte',
+'userrights-lookup-user' => 'Beheer gebruikersgroepe',
+'userrights-user-editname' => 'Voer gebruikersnaam in:',
+'editusergroup' => 'Wysig gebruikersgroepe',
+'editinguser' => "Besig om gebruikersregte van gebruiker '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) te wysig",
+'userrights-editusergroup' => 'wysig gebruikersgroepe',
+'saveusergroups' => 'Stoor gebruikersgroepe',
+'userrights-groupsmember' => 'Lid van:',
+'userrights-groupsmember-auto' => 'Implisiete lid van:',
+'userrights-groups-help' => "U kan die groepe waarvan die gebruiker 'n lid is verander.
* 'n Geselekteerde boks beteken dat die gebruiker lid is van die groep.
* 'n Ongeselekteerde boks beteken dat die gebruiker nie 'n lid van die groep is nie.
* 'n Ster (*) beteken dat u nie die gebruiker uit 'n groep kan verwyder as hy eers daaraan behoort nie, of vice versa.",
-'userrights-reason' => 'Rede:',
-'userrights-no-interwiki' => 'U het nie toestemming om gebruikersregte op ander wikis te verander nie.',
-'userrights-nodatabase' => 'Databasis $1 bestaan nie of is nie hier beskikbaar nie.',
-'userrights-nologin' => "U moet [[Special:UserLogin|aanteken]] as 'n administrateur om gebruikersregte te mag toeken.",
-'userrights-notallowed' => 'U het nie die toestemming om gebruikersregte toe te ken nie.',
-'userrights-changeable-col' => 'Groepe wat u kan verander',
-'userrights-unchangeable-col' => 'Groepe wat u nie kan verander nie',
+'userrights-reason' => 'Rede:',
+'userrights-no-interwiki' => 'U het nie toestemming om gebruikersregte op ander wikis te verander nie.',
+'userrights-nodatabase' => 'Databasis $1 bestaan nie of is nie hier beskikbaar nie.',
+'userrights-nologin' => "U moet [[Special:UserLogin|aanteken]] as 'n administrateur om gebruikersregte te mag toeken.",
+'userrights-notallowed' => 'U het nie die toestemming om gebruikersregte toe te ken nie.',
+'userrights-changeable-col' => 'Groepe wat u kan verander',
+'userrights-unchangeable-col' => 'Groepe wat u nie kan verander nie',
# Groups
'group' => 'Groep:',
@@ -1235,6 +1352,7 @@ stel asseblief op volgens die beskrywing in math/README.',
'right-bigdelete' => 'Skrap bladsye met groot geskiedenisse',
'right-deleterevision' => 'Skrap en ontskrap spesifieke hersienings van bladsye',
'right-deletedhistory' => 'Wys geskrapte geskiedenis-inskrywings, sonder hul teks',
+'right-deletedtext' => 'Wys verwyderde teks en veranderings tussen geskrapte weergawes',
'right-browsearchive' => 'Soek uigeveede bladsye',
'right-undelete' => "Ontskrap 'n bladsy",
'right-suppressrevision' => 'Hersien en herstel weergawes verborge van administrateurs',
@@ -1248,6 +1366,8 @@ stel asseblief op volgens die beskrywing in math/README.',
'right-editprotected' => 'Wysig beskermde bladsye (sonder kaskade-beskerming)',
'right-editinterface' => 'Wysig die gebruikerskoppelvlak',
'right-editusercssjs' => 'Wysig ander gebruikers se CSS- en JS-lêers',
+'right-editusercss' => 'Wysig ander gebruikers se CSS-lêers',
+'right-edituserjs' => 'Wysig ander gebruikers se JS-lêers',
'right-rollback' => "Rol wysigings van die laaste gebruiker wat 'n bladsy gewysig het vinnig terug",
'right-markbotedits' => 'Merk teruggerolde wysigings as botbywerkings',
'right-noratelimit' => 'Negeer tydsafhanklike beperkings',
@@ -1264,6 +1384,8 @@ stel asseblief op volgens die beskrywing in math/README.',
'right-siteadmin' => 'Sluit en ontsluit die datbasis',
'right-reset-passwords' => 'Herstel ander gebruikers se wagwoorde',
'right-override-export-depth' => "Eksporteer bladsye insluitend geskakelde bladsye tot 'n diepte van 5",
+'right-versiondetail' => 'Wys omvattende sagteware weergawe inligting',
+'right-sendemail' => 'Stuur e-pos aan ander gebruikers',
# User rights log
'rightslog' => 'Gebruikersregtelogboek',
@@ -1313,6 +1435,15 @@ stel asseblief op volgens die beskrywing in math/README.',
'recentchanges-legend' => 'Opsies vir onlangse wysigings',
'recentchangestext' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.',
'recentchanges-feed-description' => 'Spoor die mees onlangse wysigings op die wiki na in die voer.',
+'recentchanges-label-legend' => 'Sleutel: $1.',
+'recentchanges-legend-newpage' => '$1 - nuwe bladsy',
+'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep",
+'recentchanges-legend-minor' => '$1 - klein wysiging',
+'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
+'recentchanges-legend-bot' => '$1 - botbywerking',
+'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
+'recentchanges-legend-unpatrolled' => '$1 - ongekontroleerde wysiging',
+'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} vir die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4, $5.",
'rcnotefrom' => 'Hier onder is die wysigings sedert <b>$2</b> (tot by <b>$1</b> word gewys).',
'rclistfrom' => 'Vertoon wysigings vanaf $1',
@@ -1339,6 +1470,8 @@ stel asseblief op volgens die beskrywing in math/README.',
# Recent changes linked
'recentchangeslinked' => 'Verwante veranderings',
+'recentchangeslinked-feed' => 'Verwante veranderings',
+'recentchangeslinked-toolbox' => 'Verwante veranderings',
'recentchangeslinked-title' => 'Wysigings verwant aan "$1"',
'recentchangeslinked-noresult' => 'Geen veranderinge op geskakelde bladsye gedurende die periode nie.',
'recentchangeslinked-summary' => "Hier volg 'n lys van wysigings wat onlangs gemaak is aan bladsye wat van die gespesifiseerde bladsy geskakel word (of van bladsye van die gespesifiseerde kategorie).
@@ -1349,8 +1482,8 @@ Bladsye op [[Special:Watchlist|u dophoulys]] word in '''vetdruk''' uitgewys.",
# Upload
'upload' => 'Laai lêer',
'uploadbtn' => 'Laai lêer',
-'reupload' => 'Herlaai',
'reuploaddesc' => 'Keer terug na die laaivorm.',
+'upload-tryagain' => 'Stuur gewysigde lêerbeskrywing',
'uploadnologin' => 'Nie ingeteken nie',
'uploadnologintext' => 'Teken eers in [[Special:UserLogin|logged in]]
om lêers te laai.',
@@ -1390,6 +1523,7 @@ Om die lêer in 'n artikel te gebruik, plaas 'n skakel in een van die volgende f
'minlength1' => 'Prentname moet ten minste een letter lank wees.',
'illegalfilename' => 'Die lêernaam "$1" bevat karakters wat nie toegelaat word in bladsytitels nie. Verander asseblief die naam en probeer die lêer weer laai.',
'badfilename' => 'Prentnaam is verander na "$1".',
+'filetype-mime-mismatch' => 'Lêer-uitbreiding stem nie met die MIME-tipe ooreen nie.',
'filetype-badmime' => 'Lêers met MIME-tipe "$1" word nie toegelaat nie.',
'filetype-bad-ie-mime' => 'Die lêer kan nie opgelaai word nie omdat Internet Explorer dit sal identifiseer as "$1", \'n nie toegelate lêertipe wat moontlik skadelik is.',
'filetype-unwanted-type' => "'''\".\$1\"''' is 'n ongewenste lêertipe.
@@ -1411,7 +1545,6 @@ Wysig asseblief die bladsy handmatig om u beskrywing by te werk.
* Naam van die opgelaaide lêer: '''<tt>[[:$1]]</tt>'''
* Naam van die bestaande lêer: '''<tt>[[:$2]]</tt>'''
Kies asseblief 'n ander naam.",
-'fileexists-thumb' => "<center>'''Bestaande lêer'''</center>",
'fileexists-thumbnail-yes' => "Die lêer lyk na 'n verkleinde weergawe ''(duimnael)''.
[[$1|thumb]]
Kontroleer asseblief die lêer '''<tt>[[:$1]]</tt>'''.
@@ -1431,6 +1564,7 @@ Indien u die lêer nog wil oplaai, gaan asseblief terug en kies 'n ander naam.
Dit word aanbeveel dat u die lêer se skrapgeskiedenis besigtig voor u poog om dit weer op te laai.",
'successfulupload' => 'Laai suksesvol',
'uploadwarning' => 'Laaiwaarskuwing',
+'uploadwarning-text' => 'Verander die onderstaande lêerbeskrywing en probeer dan weer.',
'savefile' => 'Stoor lêer',
'uploadedimage' => 'het "[[$1]]" gelaai',
'overwroteimage' => 'het een nuwe weergawe van "[[$1]]" gelaai',
@@ -1439,11 +1573,14 @@ Dit word aanbeveel dat u die lêer se skrapgeskiedenis besigtig voor u poog om d
'php-uploaddisabledtext' => 'Die oplaai van lêers is in PHP afgeskakel.
Kyk na die "file_uploads"-instelling.',
'uploadscripted' => "Hierdie lêer bevat HTML- en scriptkode wat verkeerdelik deur 'n webblaaier geïnterpreteer kan word.",
-'uploadcorrupt' => "Die lêer is foutief of is van 'n verkeerde tipe. Gaan asseblief die lêer na en laai weer op.",
'uploadvirus' => "Hierdie lêer bevat 'n virus! Inligting: $1",
+'upload-source' => 'Bronlêer',
'sourcefilename' => 'Bronlêernaam:',
+'sourceurl' => 'Bron-URL:',
'destfilename' => 'Teikenlêernaam:',
'upload-maxfilesize' => 'Maksimum lêer grootte: $1',
+'upload-description' => 'Lêerbeskrywing',
+'upload-options' => 'Oplaai-opsies',
'watchthisupload' => 'Hou die lêer dop',
'filewasdeleted' => "'n Lêer met hierdie naam is al voorheen opgelaai en daarna geskrap.
Kyk asseblief na die $1 voor u aangaan om dit weer op te laai.",
@@ -1454,15 +1591,46 @@ Die verwyderingsinligting van die lêer word vir u gemak hier herhaal:",
'filename-bad-prefix' => "Die naam van die lêer wat u besig is om op te laai begin met '''\"\$1\"''', wat 'n nie-beskrywende term is, gewoonlik outomaties toegedien deur digitale kameras.
Kies asseblief 'n meer beskrywende naam vir die lêer.",
-'upload-proto-error' => 'Verkeerde protokol',
-'upload-proto-error-text' => 'Oplaaie via hierdie metode vereis dat die URL met <code>http://</code> of <code>ftp://</code> begin.',
-'upload-file-error' => 'Interne fout',
-'upload-file-error-text' => "'n Interne fout het plaasgevind in die poging om 'n tydelike lêer op die bediener te skep.
+'upload-proto-error' => 'Verkeerde protokol',
+'upload-proto-error-text' => 'Oplaaie via hierdie metode vereis dat die URL met <code>http://</code> of <code>ftp://</code> begin.',
+'upload-file-error' => 'Interne fout',
+'upload-file-error-text' => "'n Interne fout het plaasgevind in die poging om 'n tydelike lêer op die bediener te skep.
Kontak asseblief 'n [[Special:ListUsers/sysop|administrateur]].",
-'upload-misc-error' => 'Onbekende laai fout',
-'upload-misc-error-text' => "'n Onbekende fout het tydens die oplaaiproses voorgekom.
+'upload-misc-error' => 'Onbekende laai fout',
+'upload-misc-error-text' => "'n Onbekende fout het tydens die oplaaiproses voorgekom.
Maak asseblief seker dat die adres (URL) geldig en toeganklik is en probeer dan weer.
As daar steeds probleme is, kontak 'n [[Special:ListUsers/sysop|administrateur]].",
+'upload-too-many-redirects' => 'Die URL bevat te veel aansture',
+'upload-unknown-size' => 'Onbekende grootte',
+'upload-http-error' => "'n HTTP-fout het voorgekom: $1",
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Toegang geweier',
+'img-auth-nopathinfo' => 'PATH_INFO word vermis.
+U bediener is nie ingestel om hierdie inligting deur te stuur nie.
+Miskien gebruik dit CGI, waartydens img_auth nie ondersteun word nie.
+Sien http://www.mediawiki.org/wiki/Manual:Image_Authorization vir meer inligting.',
+'img-auth-notindir' => 'Die aangevraagde pad is nie die ingestelde oplaaigids nie.',
+'img-auth-badtitle' => 'Dit was nie moontlik om \'n geldige bladsynaam van "$1" te maak nie.',
+'img-auth-nologinnWL' => 'U is nie aangeteken en "$1" is nie op die witlys nie.',
+'img-auth-nofile' => 'Lêer "$1" bestaan nie.',
+'img-auth-isdir' => 'U probeer om toegang na gids "$1" te kry.
+Slegs toegang tot lêers word toegelaat.',
+'img-auth-streaming' => 'Besig met die stoom van "$1".',
+'img-auth-public' => "Die doel van img_auth.php is die afvoer van lêers vanaf 'n privaat wiki.
+Hierdie wiki is opgestel as 'n publieke wiki.
+Vir veiligheidsredes is img_auth.php gedeaktiveer.",
+'img-auth-noread' => 'Gebruiker het nie toegang om "$1" te lees nie.',
+
+# HTTP errors
+'http-invalid-url' => 'Ongeldige URL: $1',
+'http-invalid-scheme' => 'URL\'s met die "$1"-skema word nie ondersteun nie',
+'http-request-error' => "'n Onbekende fout het tydens die stuur van die versoek voorgekom.",
+'http-read-error' => 'Fout met die lees van HTTP.',
+'http-timed-out' => 'HTTP-versoek se tyd is verstreke.',
+'http-curl-error' => 'Fout met die ophaal van URL: $1',
+'http-host-unreachable' => 'Die URL is nie bereikbaar nie.',
+'http-bad-status' => "Daar was 'n probleem tydens die HTTP-versoek: $1 $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kon nie die URL bereik nie',
@@ -1474,6 +1642,7 @@ Kontroleer of die webwerf wel beskikbaar is of wag 'n rukkie en probeer dan weer
U kan miskien selfs tydens 'n minder besige tyd weer probeer.",
'license' => 'Lisensiëring:',
+'license-header' => 'Lisensiëring',
'nolicense' => 'Niks gekies',
'license-nopreview' => '(Voorskou nie beskikbaar)',
'upload_source_url' => " ('n geldige, publiek toeganklike URL)",
@@ -1494,6 +1663,7 @@ Klik op die opskrifte om die tabel anders te sorteer.',
'listfiles_count' => 'Weergawes',
# File description page
+'file-anchor-link' => 'Lêer',
'filehist' => 'Lêergeskiedenis',
'filehist-help' => 'Klik op die datum/tyd om te sien hoe die lêer destyds gelyk het.',
'filehist-deleteall' => 'verwyder alles',
@@ -1508,6 +1678,7 @@ Klik op die opskrifte om die tabel anders te sorteer.',
'filehist-dimensions' => 'Dimensies',
'filehist-filesize' => 'Lêergrootte',
'filehist-comment' => 'Opmerking',
+'filehist-missing' => 'Die lêer kon nie gevind word nie',
'imagelinks' => 'Lêerskakels',
'linkstoimage' => 'Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} gebruik hierdie prent:',
'linkstoimage-more' => "Daar is meer as $1 {{PLURAL:$1|skakel|skakels}} na hierdie lêer.
@@ -1517,15 +1688,16 @@ Die volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na
'morelinkstoimage' => 'Wys [[Special:WhatLinksHere/$1|meer skakels]] na die lêer.',
'redirectstofile' => "Die volgende {{PLURAL:$1|lêer is 'n aanstuur|$1 lêers is aansture}} na die lêer:",
'duplicatesoffile' => "Die volgende {{PLURAL:$1|lêer is 'n duplikaat|$1 lêers is duplikate}} van die lêer ([[Special:FileDuplicateSearch/$2|meer details]]):",
-'sharedupload' => 'Die lêer kom vanaf $1 en mag moontlik ook op ander projekte gebruik word.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Sien $1 vir verdere inligting.',
-'shareduploadwiki-desc' => 'Die beskrywing in die $1 uit die gedeelde lêerbank word hier onder weergegee.',
-'shareduploadwiki-linktext' => 'lêerbeskrywingsbladsy',
-'noimage' => "Daar bestaan nie 'n lêer met so 'n naam nie, maar u kan $1.",
-'noimage-linktext' => 'laai een op',
+'sharedupload' => 'Die lêer kom vanaf $1 en mag moontlik ook op ander projekte gebruik word.',
+'sharedupload-desc-there' => 'Hierdie lêer kom vanaf $1 en kan ook in ander projekte gebruik word.
+Sien die [$2 lêer se beskrywingsblad] vir meer inligting.',
+'sharedupload-desc-here' => 'Hierdie lêer kom vanaf $1 en kan ook in ander projekte gebruik word.
+Die beskrywing op die [$2 lêer se inligtingsblad] word hieronder weergegee.',
+'filepage-nofile' => "Daar bestaan nie 'n lêer met die naam nie.",
+'filepage-nofile-link' => "Daar bestaan nie 'n lêer met die naam nie, maar u kan een [$1 oplaai].",
'uploadnewversion-linktext' => "Laai 'n nuwe weergawe van hierdie lêer",
-'shared-repo-from' => 'vanaf $1', # $1 is the repository name
-'shared-repo' => "'n gedeelde lêerbank", # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'vanaf $1',
+'shared-repo' => "'n gedeelde lêerbank",
# File reversion
'filerevert' => 'Maak $1 ongedaan',
@@ -1554,6 +1726,7 @@ Die volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na
** Kopieregskending
** Duplikaatlêer',
'filedelete-edit-reasonlist' => 'Wysig skrap redes',
+'filedelete-maintenance' => 'Die verwydering en terugplasing van lêers is tydelik opgeskort weens onderhoud.',
# MIME search
'mimesearch' => 'MIME-soek',
@@ -1574,7 +1747,7 @@ Die volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na
# Random page
'randompage' => 'Lukrake bladsy',
-'randompage-nopages' => 'Daar is geen bladye in naamspasie "$1".',
+'randompage-nopages' => 'Daar is geen bladye in die volgende {{PLURAL:$2|naamspasie|naamspasies}}: $1.',
# Random redirect
'randomredirect' => 'Lukrake aanstuur',
@@ -1586,6 +1759,7 @@ Die volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na
'statistics-header-edits' => 'Wysig statistieke',
'statistics-header-views' => 'Wys statistieke',
'statistics-header-users' => 'Gebruikerstatistiek',
+'statistics-header-hooks' => 'Ander statistieke',
'statistics-articles' => 'Inhoudelike bladsye',
'statistics-pages' => 'Bladsye',
'statistics-pages-desc' => 'Alle bladsye in die wiki, insluitend besprekings-, aanstuur- en ander bladsye.',
@@ -1615,8 +1789,8 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
'brokenredirects' => 'Stukkende aansture',
'brokenredirectstext' => 'Die volgende aansture skakel na bladsye wat nie bestaan nie.',
-'brokenredirects-edit' => '(wysig)',
-'brokenredirects-delete' => '(skrap)',
+'brokenredirects-edit' => 'wysig',
+'brokenredirects-delete' => 'skrap',
'withoutinterwiki' => 'Bladsye sonder taalskakels',
'withoutinterwiki-summary' => 'Die volgende bladsye het nie skakels na weergawes in ander tale nie:',
@@ -1725,14 +1899,17 @@ Dit is moontlik dat die naam karakters bevat wat nie in titels gebruik mag word
# Special:Categories
'categories' => 'Kategorieë',
-'categoriespagetext' => 'Die volgende kategorieë bestaan op die wiki.',
+'categoriespagetext' => 'Die volgende {{PLURAL:$1|kategorie|kategorieë}} bevat bladsye of media.
+[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie hier weergegee nie.
+Sie ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].',
'categoriesfrom' => 'Wys kategorieë vanaf:',
'special-categories-sort-count' => 'sorteer volgens getal',
'special-categories-sort-abc' => 'sorteer alfabeties',
# Special:DeletedContributions
-'deletedcontributions' => 'Geskrapte gebruikersbydraes',
-'deletedcontributions-title' => 'Geskrapte gebruikersbydraes',
+'deletedcontributions' => 'Geskrapte gebruikersbydraes',
+'deletedcontributions-title' => 'Geskrapte gebruikersbydraes',
+'sp-deletedcontributions-contribs' => 'bydraes',
# Special:LinkSearch
'linksearch' => 'Eksterne skakels',
@@ -1748,6 +1925,16 @@ Ondersteunde protokolle: <tt>$1</tt>',
'listusersfrom' => 'Wys gebruikers, beginnende by:',
'listusers-submit' => 'Wys',
'listusers-noresult' => 'Geen gebruiker gevind.',
+'listusers-blocked' => '(geblokkeer)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktiewe gebruikers',
+'activeusers-intro' => "Hierdie is 'n lys van gebruikers wat die laaste {{PLURAL:$1|dag|$1 dae}} enige aktiwiteit getoon het.",
+'activeusers-count' => '$1 onlangse {{PLURAL:$1|wysiging|wysigings}} in die {{PLURAL:$3|afgelope dag|laatste $3 dae}}',
+'activeusers-from' => 'Wys gebruikers, beginnende by:',
+'activeusers-hidebots' => 'Versteek bots',
+'activeusers-hidesysops' => 'Versteek administrateurs',
+'activeusers-noresult' => 'Geen gebruikers gevind nie.',
# Special:Log/newusers
'newuserlogpage' => 'Logboek van nuwe gebruikers',
@@ -1758,17 +1945,23 @@ Ondersteunde protokolle: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Gebruiker outomaties geskep',
# Special:ListGroupRights
-'listgrouprights' => 'Gebruikersgroepregte',
-'listgrouprights-summary' => "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.
+'listgrouprights' => 'Gebruikersgroepregte',
+'listgrouprights-summary' => "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.
Daar kan [[{{MediaWiki:Listgrouprights-helppage}}|extra inligting]] oor individuele regte aanwesig wees.",
-'listgrouprights-group' => 'Groep',
-'listgrouprights-rights' => 'Regte',
-'listgrouprights-helppage' => 'Help:Groep regte',
-'listgrouprights-members' => '(lys van lede)',
-'listgrouprights-addgroup' => 'Gebruikers by die volgende {{PLURAL:$2|groep|groepe}} byvoeg: $1',
-'listgrouprights-removegroup' => 'Gebruikers uit die volgende {{PLURAL:$2|groep|groepe}} verwyder: $1',
-'listgrouprights-addgroup-all' => 'Gebruikers van alle groepe byvoeg',
-'listgrouprights-removegroup-all' => 'Gebruikers uit alle groepe verwyder',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Toegekende regte</span>
+* <span class="listgrouprights-revoked">Teruggetrekte regte</span>',
+'listgrouprights-group' => 'Groep',
+'listgrouprights-rights' => 'Regte',
+'listgrouprights-helppage' => 'Help:Groep regte',
+'listgrouprights-members' => '(lys van lede)',
+'listgrouprights-addgroup' => 'Gebruikers by die volgende {{PLURAL:$2|groep|groepe}} byvoeg: $1',
+'listgrouprights-removegroup' => 'Gebruikers uit die volgende {{PLURAL:$2|groep|groepe}} verwyder: $1',
+'listgrouprights-addgroup-all' => 'Gebruikers van alle groepe byvoeg',
+'listgrouprights-removegroup-all' => 'Gebruikers uit alle groepe verwyder',
+'listgrouprights-addgroup-self' => 'Die volgende {{PLURAL:$2|groep|groepe}} byvoeg tot eie gebruiker: $1',
+'listgrouprights-removegroup-self' => 'Die volgende {{PLURAL:$2|groep|groepe}} verwyder van eie gebruiker: $1',
+'listgrouprights-addgroup-self-all' => 'Alle groepe byvoeg tot eie gebruiker',
+'listgrouprights-removegroup-self-all' => 'Alle groepe verwyder van eie gebruiker',
# E-mail user
'mailnologin' => 'Geen versendadres beskikbaar',
@@ -1853,13 +2046,17 @@ Outeur se kontakdetails:
E-pos: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Tensy u hierdie bladsy besoek, sal u geen verdere kennisgewings ontvang nie. U kan ook die waarskuwingsvlag op u dophoulys verstel.
+Tensy u hierdie bladsy besoek, sal u geen verdere kennisgewings ontvang nie.
+U kan ook die waarskuwingsvlag op u dophoulys verstel.
- Groete van die {{SITENAME}} waarskuwingssisteem.
+ Groete van {{SITENAME}} se waarskuwingssisteem.
--
U kan u dophoulys wysig by:
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Om die bladsy vanaf u dophoulys te verwyder, besoek:
+$UNWATCHURL
Terugvoer en verdere bystand:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1873,10 +2070,11 @@ Terugvoer en verdere bystand:
'exblank' => 'bladsy was leeg',
'delete-confirm' => 'Skrap "$1"',
'delete-legend' => 'Skrap',
-'historywarning' => "Waarskuwing: Die bladsy het 'n geskiedenis:",
+'historywarning' => "'''Waarskuwing:''' Die bladsy wat u wil verwyder het 'n geskiedenis met ongeveer $1 {{PLURAL:$1|weergawe|weergawes}}:",
'confirmdeletetext' => "U staan op die punt om 'n bladsy of prent asook al hulle geskiedenis uit die databasis te skrap.
Bevestig asseblief dat u dit wil doen, dat u die gevolge verstaan en dat u dit doen in ooreenstemming met die [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Aksie uitgevoer',
+'actionfailed' => 'Aksie het gefaal',
'deletedtext' => '"<nowiki>$1</nowiki>" is geskrap.
Kyk na $2 vir \'n rekord van onlangse skrappings.',
'deletedarticle' => '"$1" geskrap',
@@ -1900,19 +2098,20 @@ Deur weg te doen met hierdie bladsy mag dalk die werking van {{SITENAME}} verste
Tree asseblief versigtig op.",
# Rollback
-'rollback' => 'Rol veranderinge terug',
-'rollback_short' => 'Rol terug',
-'rollbacklink' => 'Rol terug',
-'rollbackfailed' => 'Terugrol onsuksesvol',
-'cantrollback' => 'Kan nie na verandering terug keer nie; die laaste bydraer is die enigste outer van hierdie bladsy.',
-'alreadyrolled' => "Dit is nie moontlik om die laaste wysiging van die bladsy [[:$1]] deur [[User:$2|$2]] ([[User talk:$2|bespreking]]{{int:pipe-separator}}[[Special:Contributions/$2|bydraes]]) ongedaan te maak nie.
+'rollback' => 'Rol veranderinge terug',
+'rollback_short' => 'Rol terug',
+'rollbacklink' => 'Rol terug',
+'rollbackfailed' => 'Terugrol onsuksesvol',
+'cantrollback' => 'Kan nie na verandering terug keer nie; die laaste bydraer is die enigste outer van hierdie bladsy.',
+'alreadyrolled' => "Dit is nie moontlik om die laaste wysiging van die bladsy [[:$1]] deur [[User:$2|$2]] ([[User talk:$2|bespreking]]{{int:pipe-separator}}[[Special:Contributions/$2|bydraes]]) ongedaan te maak nie.
Iemand anders het reeds hierdie bladsy gewysig of teruggerol na 'n vroeëre weergawe.
Die mees onlangse wysiging is gemaak deur [[User:$3|$3]] ([[User talk:$3|bespreking]]{{int:pipe-separator}}[[Special:Contributions/$3|bydraes]]).",
-'editcomment' => "Die wysigsopsomming was: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Wysigings deur [[Special:Contributions/$2|$2]] teruggerol na laaste weergawe deur $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Wysigings deur $1 teruggerol; terugverander na laaste weergawe deur $2.',
-'sessionfailure' => "Dit lyk of daar 'n probleem met u sessie is.
+'editcomment' => "Die wysigsopsomming was: \"''\$1''\".",
+'revertpage' => 'Wysigings deur [[Special:Contributions/$2|$2]] teruggerol na laaste weergawe deur $1',
+'revertpage-nouser' => 'Rol wysigings deur (gebruikersnaam verwyder) terug na die laaste weergawe deur [[User:$1|$1]]',
+'rollback-success' => 'Wysigings deur $1 teruggerol; terugverander na laaste weergawe deur $2.',
+'sessionfailure' => "Dit lyk of daar 'n probleem met u sessie is.
Hierdie aksie is gekanselleer omdat dit 'n veiligheidsrisiko is (moontlike kaping van u sessie).
Gaan een bladsy terug, herlaai die bladsy en probeer dan weer.",
@@ -1931,7 +2130,7 @@ Sien die [[Special:ProtectedPages|lys van beveiligde bladsye]] vir alle bladsye
'protectexpiry' => 'Verval:',
'protect_expiry_invalid' => 'Vervaltyd is ongeldig.',
'protect_expiry_old' => 'Vervaltyd is in die verlede.',
-'protect-unchain' => 'Gee regte om te skuif',
+'protect-unchain-permissions' => 'Ontsluit verdere beskermingsopsies',
'protect-text' => "U kan die veiligheidsvlak vir blad '''<nowiki>$1</nowiki>''' hier bekyk of verander.",
'protect-locked-blocked' => "U kan nie beskermingsvlakke verander terwyl u geblok is nie.
Hier volg die huidige oprigtings vir die bladsy '''$1''':",
@@ -1960,7 +2159,7 @@ Hier is die huidige verstellings vir bladsy '''$1''':",
** Wysigingsoorlog
** Voorkomende beveiliging vir besige bladsye',
'protect-edit-reasonlist' => 'Wysig rede vir beveiliging',
-'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 week:1 week,2 weke:2 weeks,1 maand:1 month,3 maande:3 months,6 maande:6 months,1 jaar:1 year,onbeperk:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 week:1 week,2 weke:2 weeks,1 maand:1 month,3 maande:3 months,6 maande:6 months,1 jaar:1 year,onbeperk:infinite',
'restriction-type' => 'Regte:',
'restriction-level' => 'Beperkingsvlak:',
'minimum-size' => 'Minimum grootte',
@@ -2002,6 +2201,7 @@ U mag moontlik 'n foutiewe skakel hê, of die weergawe is reeds herstel of uit d
'undelete-nodiff' => 'Geen vorige wysigings gevind.',
'undeletebtn' => 'Terugplaas',
'undeletelink' => 'bekyk/herstel',
+'undeleteviewlink' => 'bekyk',
'undeletereset' => 'Herinstel',
'undeleteinvert' => 'Omgekeerde seleksie',
'undeletecomment' => 'Rede:',
@@ -2040,19 +2240,23 @@ $1',
'contributions-title' => '$1 se bydraes',
'mycontris' => 'My bydraes',
'contribsub2' => 'Vir $1 ($2)',
-'nocontribs' => 'Geen veranderinge wat by hierdie kriteria pas, is gevind nie.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Geen veranderinge wat by hierdie kriteria pas, is gevind nie.',
'uctop' => ' (boontoe)',
'month' => 'Vanaf maand (en vroeër):',
'year' => 'Vanaf jaar (en vroeër):',
-'sp-contributions-newbies' => 'Wys slegs bydraes van nuwe gebruikers',
-'sp-contributions-newbies-sub' => 'Vir nuwe gebruikers',
-'sp-contributions-newbies-title' => 'Bydraes van nuwe gebruikers',
-'sp-contributions-blocklog' => 'blokkeer-logboek',
-'sp-contributions-logs' => 'logboeke',
-'sp-contributions-search' => 'Soek na bydraes',
-'sp-contributions-username' => 'IP-adres of gebruikersnaam:',
-'sp-contributions-submit' => 'Vertoon',
+'sp-contributions-newbies' => 'Wys slegs bydraes van nuwe gebruikers',
+'sp-contributions-newbies-sub' => 'Vir nuwe gebruikers',
+'sp-contributions-newbies-title' => 'Bydraes van nuwe gebruikers',
+'sp-contributions-blocklog' => 'blokkeer-logboek',
+'sp-contributions-deleted' => 'geskrapte gebruikersbydraes',
+'sp-contributions-logs' => 'logboeke',
+'sp-contributions-talk' => 'bespreking',
+'sp-contributions-userrights' => 'bestuur gebruikersregte',
+'sp-contributions-blocked-notice' => 'Hierdie gebruiker is tans geblokkeer. Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:',
+'sp-contributions-search' => 'Soek na bydraes',
+'sp-contributions-username' => 'IP-adres of gebruikersnaam:',
+'sp-contributions-submit' => 'Vertoon',
# What links here
'whatlinkshere' => 'Skakels hierheen',
@@ -2075,6 +2279,7 @@ $1',
# Block/unblock
'blockip' => 'Blokkeer gebruiker',
+'blockip-title' => 'Blokkeer gebruiker',
'blockip-legend' => 'Blokkeer gebruiker of IP-adres',
'blockiptext' => "Gebruik die vorm hier onder om skryftoegang van 'n sekere IP-adres te blok.
Dit moet net gedoen word om vandalisme te voorkom en in ooreenstemming met [[{{MediaWiki:Policy-url}}|{{SITENAME}}-beleid]].
@@ -2098,7 +2303,7 @@ Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat ge
'ipbenableautoblock' => 'Outomaties die IP-adresse van die gebruiker blokkeer',
'ipbsubmit' => 'Versper hierdie gebruiker',
'ipbother' => 'Ander tydperk:',
-'ipboptions' => '2 ure:2 hours,1 dag:1 day,3 dae:3 days,1 week:1 week,2 weke:2 weeks,1 maand:1 month,3 maande:3 months,6 maande:6 months,1 jaar:1 year,onbeperk:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ure:2 hours,1 dag:1 day,3 dae:3 days,1 week:1 week,2 weke:2 weeks,1 maand:1 month,3 maande:3 months,6 maande:6 months,1 jaar:1 year,onbeperk:infinite',
'ipbotheroption' => 'ander',
'ipbotherreason' => 'Ander/ekstra rede:',
'ipbhidename' => 'Verberg gebruiker van wysigings en lyste',
@@ -2127,9 +2332,11 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir 'n oorsig van blokkerings.",
'ipblocklist-sh-tempblocks' => 'tydelike blokkades $1',
'ipblocklist-sh-addressblocks' => 'enkel IP-blokkades $1',
'ipblocklist-submit' => 'Soek',
+'ipblocklist-localblock' => 'Lokale blokkade',
+'ipblocklist-otherblocks' => 'Ander {{PLURAL:$1|blokkade|blokkades}}',
'blocklistline' => '$1, $2 het $3 geblok ($4)',
'infiniteblock' => 'vir altyd',
-'expiringblock' => 'verval op $1',
+'expiringblock' => 'verval op $1 om $2',
'anononlyblock' => 'anoniem-alleen',
'noautoblockblock' => 'autoblok afgeskakel',
'createaccountblock' => 'skep van gebruikersrekeninge is geblokkeer',
@@ -2143,7 +2350,10 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir 'n oorsig van blokkerings.",
'contribslink' => 'bydraes',
'autoblocker' => "Outomaties geblokkeer omdat u IP-adres ooreenkom met die van [[User:\$1|\$1]], wat om die volgende rede geblokkeer is: \"'''\$2'''\"",
'blocklogpage' => 'Blokkeer-logboek',
-'blocklog-fulllog' => 'Volledige blokkeerlogboek',
+'blocklog-showlog' => 'Hierdie gebruiker is al vantevore geblokkeer.
+Die blokkeerlogboek word hieronder ter verwysing weergegee:',
+'blocklog-showsuppresslog' => 'Hierdie gebruiker was voorheen geblokkeer gewees en (dele van) wysigings van hierdie gebruiker is verborge.
+Die verbergingslogboek word hieronder ter verwysing weergegee:',
'blocklogentry' => '"[[$1]]" is vir \'n periode van $2 $3 geblok',
'reblock-logentry' => 'het die instellings vir die blokkade vir [[$1]] gewysig. Dit verval nou op $2 om $3',
'blocklogtext' => "Hier is 'n lys van onlangse blokkeer en deblokkeer aksies. Outomaties geblokkeerde IP-adresse word nie vertoon nie.
@@ -2164,11 +2374,13 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir geblokkeerde adresse.",
'ipb-needreblock' => '== Hierdie gebruiker is reeds geblokkeer ==
$1 is al geblokkeer.
Wil u die instellings wysig?',
+'ipb-otherblocks-header' => 'Ander {{PLURAL:$1|blokkade|blokkades}}',
'ipb_cant_unblock' => 'Fout: Blokkade-ID $1 kan nie gevind word nie.
Die blokkade is moontlik reeds opgehef.',
'ipb_blocked_as_range' => "Fout: die IP-adres $1 is nie direk geblokkeer nie en die blokkade kan nie opgehef word nie.
Die blokkade is 'n onderdeel van die reeks $2, waarvan die blokkade wel opgehef kan word.",
'ip_range_invalid' => 'Ongeldige IP waardegebied.',
+'ip_range_toolarge' => 'Reeks-blokkades groter as /$1 word nie toegelaat nie.',
'blockme' => 'Versper my',
'proxyblocker' => 'Proxyblokker',
'proxyblocker-disabled' => 'Die funksie is gedeaktiveer.',
@@ -2179,6 +2391,8 @@ Kontak asseblief u internet-diensverskaffer of tegniese ondersteuning en lig hul
'sorbs_create_account_reason' => "U IP-adres is gelys as 'n oop instaanbediener (proxy) in die DNS-swartlys wat op {{SITENAME}} gebruik word.
U kan nie 'n rekening skep nie.",
'cant-block-while-blocked' => 'U kan nie ander gebruikers blokkeer terwyl u self geblokkeer is nie.',
+'cant-see-hidden-user' => "Die gebruiker wat u probeer blokkeer is reeds geblokkeer en weggesteek.
+Aangesien u nie die 'hideuser'-reg het nie, kan u nie die blokkade van die gebruiker sien of wysig nie.",
# Developer tools
'lockdb' => 'Sluit databasis',
@@ -2219,6 +2433,8 @@ maak asseblief seker dat u die gevolge van hierdie aksie verstaan voordat u voor
Indien wel sal u self die blad moet skuif of versmelt (indien nodig).",
'movearticle' => 'Skuif bladsy',
+'moveuserpage-warning' => "'''Waarskuwing:''' U gaan 'n gebruikersblad skuif.
+Let daarop dat slegs die bladsy geskuif sal word. Die gebruiker self sal ''nie'' hernoem word ''nie''.",
'movenologin' => 'Nie ingeteken nie',
'movenologintext' => "U moet 'n geregistreerde gebruiker wees en [[Special:UserLogin|ingeteken]]
wees om 'n bladsy te skuif.",
@@ -2230,7 +2446,7 @@ wees om 'n bladsy te skuif.",
'move-watch' => 'Hou hierdie bladsy dop',
'movepagebtn' => 'Skuif bladsy',
'pagemovedsub' => 'Verskuiwing het geslaag',
-'movepage-moved' => '\'\'\'"$1" is geskuif na "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" is geskuif na "$2"\'\'\'',
'movepage-moved-redirect' => "'n Aanstuur is geskep.",
'movepage-moved-noredirect' => 'Geen aanstuurblad is geskep nie.',
'articleexists' => "'n Bladsy met daardie naam bestaan reeds, of die naam wat u gekies het, is nie geldig nie.
@@ -2272,6 +2488,13 @@ Die teikenartikel "[[:$1]]" bestaan reeds. Wil u dit skrap om plek te maak vir d
'imageinvalidfilename' => 'Die nuwe lêernaam is ongeldig',
'fix-double-redirects' => 'Opdateer alle aansture wat na die oorspronklike titel wys',
'move-leave-redirect' => "Los 'n aanstuur agter",
+'protectedpagemovewarning' => "'''Waarskuwing:''' Hierdie bladsy kan slegs deur administrateurs geskuif word. Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
+'semiprotectedpagemovewarning' => "'''Let wel:''' Hierdie bladsy kan slegs deur geregistreerde gebruikers geskuif word. Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
+'move-over-sharedrepo' => "== Die lêer bestaan reeds ==
+[[:$1]] bestaan al reeds in 'n gedeelde mediabank.
+As u 'n lêer na die naam skuif, sal die lêer in die gedeelde mediabank nie meer gebruik word nie.",
+'file-exists-sharedrepo' => "Hierdie lêernaam bestaan reeds in 'n gedeelde mediabank.
+Kies asseblief 'n andere lêernaam.",
# Export
'export' => 'Eksporteer bladsye',
@@ -2294,15 +2517,21 @@ In die laatste geval kan u ook \'n verwysing gebruik, byvoorbeeld [[{{#Special:E
'export-pagelinks' => "Sluit geskakelde bladsye by tot 'n diepte van:",
# Namespace 8 related
-'allmessages' => 'Stelselboodskappe',
-'allmessagesname' => 'Naam',
-'allmessagesdefault' => 'Verstekteks',
-'allmessagescurrent' => 'Huidige teks',
-'allmessagestext' => "Hier is 'n lys boodskappe wat in die ''MediaWiki''-naamspasie beskikbaar is.
+'allmessages' => 'Stelselboodskappe',
+'allmessagesname' => 'Naam',
+'allmessagesdefault' => 'Verstekteks',
+'allmessagescurrent' => 'Huidige teks',
+'allmessagestext' => "Hier is 'n lys boodskappe wat in die ''MediaWiki''-naamspasie beskikbaar is.
Gaan na [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [http://translatewiki.net translatewiki.net] as u wil help om MediaWiki te vertaal.",
-'allmessagesnotsupportedDB' => "Daar is geen ondersteuning vir '''{{ns:special}}:Allmessages''' omdat '''\$wgUseDatabaseMessages''' uitgeskakel is.",
-'allmessagesfilter' => 'Boodskapnaamfilter:',
-'allmessagesmodified' => 'Wys slegs gewysigdes',
+'allmessagesnotsupportedDB' => "Daar is geen ondersteuning vir '''{{ns:special}}:Allmessages''' omdat '''\$wgUseDatabaseMessages''' uitgeskakel is.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filtreer op staat van verandering:',
+'allmessages-filter-unmodified' => 'Onveranderd',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Verander',
+'allmessages-prefix' => 'Filter op voorvoegsel:',
+'allmessages-language' => 'Taal:',
+'allmessages-filter-submit' => 'Laat waai',
# Thumbnails
'thumbnail-more' => 'Vergroot',
@@ -2312,6 +2541,9 @@ Gaan na [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [h
'djvu_no_xml' => 'Die XML vir die DjVu-lêer kon nie bekom word nie',
'thumbnail_invalid_params' => 'Ongeldige parameters vir duimnaelskets',
'thumbnail_dest_directory' => 'Nie in staat om die gids te skep nie',
+'thumbnail_image-type' => 'Die lêertipe word nie ondersteun nie',
+'thumbnail_gd-library' => 'Onvolledige GD-biblioteek verstellings: die funksie $1 is weg',
+'thumbnail_image-missing' => 'Lêer blyk weg te wees: $1',
# Special:Import
'import' => 'Voer bladsye in',
@@ -2378,6 +2610,7 @@ Die lêer is slegs gedeeltelik opgelaai.',
'tooltip-ca-viewsource' => 'Hierdie bladsy is beskerm. U kan die bronteks besigtig.',
'tooltip-ca-history' => 'Ouer weergawes van hierdie bladsy.',
'tooltip-ca-protect' => 'Beskerm hierdie bladsy',
+'tooltip-ca-unprotect' => 'Verwyder beskerming vir die bladsy',
'tooltip-ca-delete' => 'Skrap hierdie bladsy',
'tooltip-ca-undelete' => 'Herstel die bydraes aan hierdie bladsy voordat dit geskrap is',
'tooltip-ca-move' => 'Skuif hierdie bladsy',
@@ -2388,6 +2621,7 @@ Die lêer is slegs gedeeltelik opgelaai.',
'tooltip-search-fulltext' => 'Deursoek bladsye vir hierdie teks',
'tooltip-p-logo' => 'Besoek die tuisblad',
'tooltip-n-mainpage' => 'Besoek die Tuisblad',
+'tooltip-n-mainpage-description' => 'Gaan na die tuisblad',
'tooltip-n-portal' => 'Meer oor die projek, wat u kan doen, nuttige skakels',
'tooltip-n-currentevents' => "'n Plek waar almal gesellig kan verkeer",
'tooltip-n-recentchanges' => "'n Lys van onlangse wysigings",
@@ -2436,10 +2670,12 @@ U kan daar \'n wysigingsopsomming byvoeg.',
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}',
'siteuser' => '{{SITENAME}} gebruiker $1',
-'lastmodifiedatby' => 'Hierdie bladsy is laas op $1 om $2 deur $3 gewysig.', # $1 date, $2 time, $3 user
+'anonuser' => 'Anonieme {{SITENAME}}-gebruiker $1',
+'lastmodifiedatby' => 'Hierdie bladsy is laas op $1 om $2 deur $3 gewysig.',
'othercontribs' => 'Gebaseer op werk van $1.',
'others' => 'ander',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|gebruikers|gebruikers}} $1',
+'anonusers' => 'Anonieme {{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1',
'creditspage' => 'Outeursblad',
'nocredits' => 'Geen outeursinligting is vir hierdie bladsy nie beskikbaar nie.',
@@ -2473,11 +2709,24 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
'mw_math_modern' => 'Moderne blaaiers.',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Kon nie verbeeld nie',
+'math_unknown_error' => 'onbekende fout',
+'math_unknown_function' => 'onbekende funksie',
+'math_lexing_error' => 'leksikale fout',
+'math_syntax_error' => 'sintaksfout',
+'math_image_error' => 'PNG-omskakeling het gefaal.
+Kontroleer of latex, dvips en gs korrek geïnstalleer is en skakel om',
+'math_bad_tmpdir' => 'Die gids vir tydelike lêers vir wiskundige formules bestaan nie of kan nie geskep word nie',
+'math_bad_output' => 'Die gids vir lêers met wiskundige formules bestaan nie of kan nie geskep word nie',
+'math_notexvc' => 'Kan nie die texvc program vind nie;
+stel asseblief op volgens die beskrywing in math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Merk as gekontroleerd',
'markaspatrolledtext' => 'Merk hierdie bladsy as gekontroleerd',
'markedaspatrolled' => 'As gekontroleerd gemerk',
-'markedaspatrolledtext' => 'Die gekose weergawe is as gekontroleerd gemerk.',
+'markedaspatrolledtext' => 'Die gekose weergawe van [[:$1]] is as gekontroleerd gemerk.',
'rcpatroldisabled' => 'Onlangse Wysigingskontrolering buiten staat gestel',
'rcpatroldisabledtext' => 'Die Onlangse Wysigingskontroleringsfunksie is tans buiten staat gestel.',
'markedaspatrollederror' => 'Kan nie as gekontroleerd merk nie',
@@ -2507,12 +2756,9 @@ $1',
'previousdiff' => '← Ouer wysiging',
'nextdiff' => 'Nuwer wysiging →',
-# Visual comparison
-'visual-comparison' => 'Visuele vergelyking',
-
# Media information
'mediawarning' => "'''Waarskuwing''': hierdie lêertipe bevat moontlik programkode wat u stelsel skade kan berokken.",
-'imagemaxsize' => 'Beperk beelde op beeldbeskrywingsbladsye tot:',
+'imagemaxsize' => "Beperk beeldgrootte tot:<br />''(vir lêerbeskrywingsbladsye)''",
'thumbsize' => 'Grootte van duimnaelskets:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bladsy|bladsye}}',
'file-info' => '(lêergrootte: $1, MIME-tipe: $2)',
@@ -2521,6 +2767,8 @@ $1',
'svg-long-desc' => '(SVG-lêer, nominaal $1 × $2 pixels, lêergrootte: $3)',
'show-big-image' => 'Volle resolusie',
'show-big-image-thumb' => '<small>Grootte van hierdie voorskou: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'herhalend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|raam|rame}}',
# Special:NewFiles
'newimages' => 'Gallery van nuwe beelde',
@@ -2555,7 +2803,7 @@ Ander velde sal versteek wees.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breedte',
@@ -2682,14 +2930,14 @@ Ander velde sal versteek wees.
'exif-unknowndate' => 'Datum onbekend',
-'exif-orientation-1' => 'Normaal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horisontaal gespieël', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° gedraai', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikaal gespieël', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Spieëlbeeld van linksbo-regsonder', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° regs gedraai', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Spieëlbeeld van linksonder-regsbo', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° links gedraai', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaal',
+'exif-orientation-2' => 'Horisontaal gespieël',
+'exif-orientation-3' => '180° gedraai',
+'exif-orientation-4' => 'Vertikaal gespieël',
+'exif-orientation-5' => 'Spieëlbeeld van linksbo-regsonder',
+'exif-orientation-6' => '90° regs gedraai',
+'exif-orientation-7' => 'Spieëlbeeld van linksonder-regsbo',
+'exif-orientation-8' => '90° links gedraai',
'exif-planarconfiguration-1' => 'chunky dataformaat',
'exif-planarconfiguration-2' => 'planar dataformat',
@@ -2811,7 +3059,7 @@ Ander velde sal versteek wees.
'exif-gpsmeasuremode-2' => '2-dimensionele meting',
'exif-gpsmeasuremode-3' => '3-dimensionele meting',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer per huur',
'exif-gpsspeed-m' => 'Myl per huur',
'exif-gpsspeed-n' => 'Knope',
@@ -2830,6 +3078,7 @@ Ander velde sal versteek wees.
'watchlistall2' => 'alles',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bevestig e-posadres',
@@ -2851,18 +3100,18 @@ Die e-posprogram meld: $1',
'confirmemail_loggedin' => 'U e-posadres is nou bevestig.',
'confirmemail_error' => 'Iets het foutgegaan met die stoor van u bevestiging.',
'confirmemail_subject' => '{{SITENAME}}: E-posadres-bevestiging',
-'confirmemail_body' => 'Iemand, waarskynlik van u IP-adres: $1, het \'n rekening "$2" geregistreer met hierdie e-posadres by {{SITENAME}}.
+'confirmemail_body' => 'Iemand, waarskynlik u vanaf IP-adres: $1, het \'n rekening "$2" met hierdie e-posadres by {{SITENAME}} geregistreer.
-Om te bevestig dat hierdie adres werklik aan u behoort, en om die posfasiliteite by {{SITENAME}} te aktiveer, besoek hierdie skakel in u blaaier:
+Om te bevestig dat hierdie adres werklik aan u behoort, en om die posfasiliteite by {{SITENAME}} te aktiveer, besoek hierdie skakel in u webblaaier:
$3
-Indien dit nié u was nie, ignoreer bloot die skakel (en hierdie pos).
-Follow this link to cancel the e-mail address confirmation:
+Indien dit nié u was nie, ignoreer bloot die skakel (en hierdie e-pos).
+Volg hierdie skakel om die bevestiging van u e-posadres te kanselleer:
$5
-Hierde bevestigingkode verval om $4.',
+Hierdie bevestigingkode verval om $4.',
'confirmemail_invalidated' => 'Die e-pos bevestiging is gekanselleer.',
'invalidateemail' => 'Kanselleer e-pos bevestiging',
@@ -2962,7 +3211,7 @@ U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].',
'duplicate-defaultsort' => 'Waarskuwing: Die standaardsortering "$2" kry voorrang voor die sortering "$1".',
# Special:Version
-'version' => 'Weergawe', # Not used as normal message but as header for the special page itself
+'version' => 'Weergawe',
'version-extensions' => 'Uitbreidings geïnstalleer',
'version-specialpages' => 'Spesiale bladsye',
'version-parserhooks' => 'Ontlederhoeke',
@@ -2976,7 +3225,7 @@ U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].',
'version-skin-extension-functions' => 'Omslag-uitbreidingsfunksies',
'version-hook-name' => 'Hoek naam',
'version-hook-subscribedby' => 'Gebruik deur',
-'version-version' => 'Weergawe',
+'version-version' => '(Weergawe $1)',
'version-license' => 'Lisensie',
'version-software' => 'Geïnstalleerde sagteware',
'version-software-product' => 'Produk',
@@ -3057,4 +3306,15 @@ Verskaf die lêernaam sonder die "{{ns:file}}:" voorvoegsel.',
'dberr-outofdate' => 'Let daarop dat hulle indekse van ons inhoud moontlik verouderd mag wees.',
'dberr-cachederror' => "Hierdie is 'n gekaste kopie van die aangevraagde blad, en dit mag moontlik nie op datum wees nie.",
+# HTML forms
+'htmlform-invalid-input' => 'Daar is probleme met van die ingevoerde waardes',
+'htmlform-select-badoption' => 'Die ingevoerde waarde is ongeldig.',
+'htmlform-int-invalid' => "Die ingevoer waarde is nie 'n heeltal nie.",
+'htmlform-float-invalid' => "Die waarde wat u ingevoer het is nie 'n getal nie.",
+'htmlform-int-toolow' => 'Die ingevoerde waarde is laer as die minimum van $1',
+'htmlform-int-toohigh' => 'Die ingevoerde waarde is groter as die maksimum van $1',
+'htmlform-submit' => 'Dien in',
+'htmlform-reset' => 'Maak wysigings ongedaan',
+'htmlform-selectorother-other' => 'Ander',
+
);
diff --git a/languages/messages/MessagesAk.php b/languages/messages/MessagesAk.php
index e8eb4d3f..2300bd1f 100644
--- a/languages/messages/MessagesAk.php
+++ b/languages/messages/MessagesAk.php
@@ -81,4 +81,6 @@ $messages = array(
# Watchlist
'watch' => 'Hwɛ',
+'sp-contributions-talk' => 'Kasa',
+
);
diff --git a/languages/messages/MessagesAln.php b/languages/messages/MessagesAln.php
index 70711594..cb3408a9 100644
--- a/languages/messages/MessagesAln.php
+++ b/languages/messages/MessagesAln.php
@@ -15,11 +15,52 @@
$fallback = 'sq';
+$namespaceNames = array(
+ NS_SPECIAL => 'Speciale',
+ NS_TALK => 'Diskutim',
+ NS_USER => 'Përdorues',
+ NS_USER_TALK => 'Përdoruesi_diskutim',
+ NS_PROJECT_TALK => '$1_diskutim',
+ NS_FILE => 'Skeda',
+ NS_FILE_TALK => 'Skeda_diskutim',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_diskutim',
+ NS_TEMPLATE => 'Stampa',
+ NS_TEMPLATE_TALK => 'Stampa_diskutim',
+ NS_HELP => 'Ndihmë',
+ NS_HELP_TALK => 'Ndihmë_diskutim',
+ NS_CATEGORY => 'Kategoria',
+ NS_CATEGORY_TALK => 'Kategoria_diskutim',
+);
+
+$namespaceAliases = array(
+ 'Perdoruesi' => NS_USER,
+ 'Perdoruesi_diskutim' => NS_USER_TALK,
+ 'Përdoruesi' => NS_USER,
+ 'Përdoruesi_diskutim' => NS_USER_TALK,
+ 'Figura' => NS_FILE,
+ 'Figura_diskutim' => NS_FILE_TALK,
+ 'Kategori' => NS_CATEGORY,
+ 'Kategori_Diskutim' => NS_CATEGORY_TALK
+);
+
$specialPageAliases = array(
'Popularpages' => array( 'Faqe të famshme' ),
'Search' => array( 'Kërko' ),
);
+$magicWords = array(
+ 'currentmonth' => array( '1', 'MUEJIAKTUAL', 'MUEJIAKTUAL2', 'MUAJIMOMENTAL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MUEJIAKTUAL1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'EMNIMUEJITAKTUAL', 'EMRIIMUAJITMOMENTAL', 'CURRENTMONTHNAME' ),
+ 'currenttime' => array( '1', 'KOHATASH', 'KOHATANI', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ORATASH', 'ORATANI', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MUEJILOKAL', 'MUAJILOKAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'img_center' => array( '1', 'qendër', 'qendrore', 'qëndër', 'qëndrore', 'center', 'centre' ),
+ 'img_baseline' => array( '1', 'vijabazë', 'linjabazë', 'baseline' ),
+ 'servername' => array( '0', 'EMNISERVERIT', 'EMRIISERVERIT', 'SERVERNAME' ),
+ 'currentweek' => array( '1', 'JAVAAKTUALE', 'JAVAMOMENTALE', 'CURRENTWEEK' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Nënvizoji lidhjet',
@@ -51,6 +92,7 @@ $messages = array(
'tog-enotifminoredits' => 'Njoftomë me email për redaktime të vogla të faqeve',
'tog-enotifrevealaddr' => 'Shfaqe adresën time në emailat njoftues',
'tog-shownumberswatching' => 'Shfaqe numrin e përdoruesve mbikëqyrës',
+'tog-oldsig' => 'Parapamja e nënshkrimit ekzistues:',
'tog-fancysig' => 'Trajto nënshkrimin si tekst (pa vegëz automatike)',
'tog-externaleditor' => 'Përdor program të jashtëm për redaktim (vetëm për eksperta, lyp përcaktime speciale në kompjuterin tuej)',
'tog-externaldiff' => 'Përdor program të jashtëm për dallime (vetëm për eksperta, lyp përcaktime speciale në kompjuterin tuej)',
@@ -74,6 +116,13 @@ $messages = array(
'underline-never' => 'kurrë',
'underline-default' => 'njisoj si shfletuesi',
+# Font style option in Special:Preferences
+'editfont-style' => 'Redakto stilin e fontit të fushës:',
+'editfont-default' => 'Parazgjedhja e browserit',
+'editfont-monospace' => "Font me hapësinë t'njitrajtshme",
+'editfont-sansserif' => 'Font pa serifa',
+'editfont-serif' => 'Font me serifa',
+
# Dates
'sunday' => 'E diel',
'monday' => 'E hâne',
@@ -133,7 +182,7 @@ $messages = array(
'category-media-header' => 'Media në kategori "$1"',
'category-empty' => "''Kjo kategori tashpërtash nuk përmban asnji faqe apo media.''",
'hidden-categories' => '{{PLURAL:$1|Kategori e msheftë|Kategori të mshefta}}',
-'hidden-category-category' => 'Kategori të mshefta', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori të mshefta',
'category-subcat-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë nënkategori.|Kjo kategori ka {{PLURAL:$1|këtë nënkategori|$1 këto nënkategori}}, nga gjithsejt $2.}}',
'category-subcat-count-limited' => 'Kjo kategori ka {{PLURAL:$1|këtë nënkategori|$1 këto nënkategori}}.',
'category-article-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë faqe.|Kjo kategori ka {{PLURAL:$1|këtë faqe|$1 faqe}} nga gjithsejt $2.}}',
@@ -141,6 +190,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë skedë.|{{PLURAL:$1|kjo skedë âsht|$1 skeda janë}} në këtë kategori, prej gjithsejt $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Kjo skedë âsht|$1 skeda janë}} në këtë kategori.',
'listingcontinuesabbrev' => 'vazh.',
+'index-category' => 'Faqe e indeksume',
+'noindex-category' => 'Faqe e paindeksume',
'mainpagetext' => "'''MediaWiki software u instalue me sukses.'''",
'mainpagedocfooter' => 'Për mâ shumë informata rreth përdorimit të softwareit wiki, ju lutem shikoni [http://meta.wikimedia.org/wiki/Help:Contents dokumentacionin].
@@ -152,10 +203,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWikit]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWikit]',
-'about' => 'Rreth',
-'article' => 'Artikulli',
-'newwindow' => '(çelet në nji dritare të re)',
-'cancel' => 'Harroji',
+'about' => 'Rreth',
+'article' => 'Artikulli',
+'newwindow' => '(çelet në nji dritare të re)',
+'cancel' => 'Harroji',
+'moredotdotdot' => 'Mâ shumë...',
+'mypage' => 'Faqja jeme',
+'mytalk' => 'Diskutimet e mija',
+'anontalk' => 'Diskutimet për këtë IP',
+'navigation' => 'Navigimi',
+'and' => '&#32;dhe',
+
+# Cologne Blue skin
'qbfind' => 'Kërko',
'qbbrowse' => 'Shfleto',
'qbedit' => 'Redakto',
@@ -163,15 +222,35 @@ $messages = array(
'qbpageinfo' => 'Konteksti',
'qbmyoptions' => 'Faqet e mija',
'qbspecialpages' => 'Faqet speciale',
-'moredotdotdot' => 'Mâ shumë...',
-'mypage' => 'Faqja jeme',
-'mytalk' => 'Diskutimet e mija',
-'anontalk' => 'Diskutimet për këtë IP',
-'navigation' => 'Navigimi',
-'and' => '&#32;dhe',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Pyetjet e shpeshta',
+'faqpage' => 'Project:Pyetjet e shpeshta',
+
+# Vector skin
+'vector-action-addsection' => 'Shto temë',
+'vector-action-delete' => 'Fshij',
+'vector-action-move' => 'Zhvendos',
+'vector-action-protect' => 'Mbroj',
+'vector-action-undelete' => 'Kthe fshimjen mbrapsht',
+'vector-action-unprotect' => 'Hiq mbrojtjen',
+'vector-namespace-category' => 'Kategoria',
+'vector-namespace-help' => 'Faqja e ndihmës',
+'vector-namespace-image' => 'Skeda',
+'vector-namespace-main' => 'Faqja',
+'vector-namespace-media' => 'Faqja e mediave',
+'vector-namespace-mediawiki' => 'Mesazhi',
+'vector-namespace-project' => 'Faqja e projektit',
+'vector-namespace-special' => 'Faqja speciale',
+'vector-namespace-talk' => 'Diskutimi',
+'vector-namespace-template' => 'Shablloni',
+'vector-namespace-user' => 'Faqja e përdoruesit',
+'vector-view-create' => 'Krijo',
+'vector-view-edit' => 'Redakto',
+'vector-view-history' => 'Shih historinë',
+'vector-view-view' => 'Lexo',
+'vector-view-viewsource' => 'Shih kodin',
+'actions' => 'Veprimet',
+'namespaces' => 'Hapësinat',
+'variants' => 'Variantet',
'errorpagetitle' => 'Gabim',
'returnto' => 'Kthehu te $1.',
@@ -221,18 +300,22 @@ $messages = array(
'otherlanguages' => 'Në gjuhë tjera',
'redirectedfrom' => '(Përcjellë nga $1)',
'redirectpagesub' => 'Faqe përcjellëse',
-'lastmodifiedat' => 'Kjo faqe âsht ndryshue për herë të fundit me $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Kjo faqe âsht ndryshue për herë të fundit me $2, $1.',
'viewcount' => 'Kjo faqe âsht pâ {{PLURAL:$1|nji|$1}} herë.',
'protectedpage' => 'Faqe e mbrojtun',
'jumpto' => 'Kce te:',
'jumptonavigation' => 'navigim',
'jumptosearch' => 'kërko',
+'view-pool-error' => 'Na vjen keq, serverat janë të stërngarkuem momentalisht.
+Tepër shumë përdorues po tentojnë me pâ këtë faqe.
+Ju lutem pritni pak para se me tentue me iu qasë faqes prap.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Rreth {{SITENAME}}',
'aboutpage' => 'Project:Rreth',
'copyright' => 'Përmbajtja âsht lëshue nën $1.',
-'copyrightpagename' => '{{SITENAME}} e drejta autoriale',
'copyrightpage' => '{{ns:project}}:Të drejtat autoriale',
'currentevents' => 'Ndodhitë aktuale',
'currentevents-url' => 'Project:Ndodhitë aktuale',
@@ -240,8 +323,6 @@ $messages = array(
'disclaimerpage' => 'Project:Shfajsimet e përgjithshme',
'edithelp' => 'Ndihmë për redaktim',
'edithelppage' => 'Help:Redaktimi',
-'faq' => 'Pyetjet e shpeshta',
-'faqpage' => 'Project:Pyetjet e shpeshta',
'helppage' => 'Help:Përmbajtja',
'mainpage' => 'Faqja Kryesore',
'mainpage-description' => 'Faqja Kryesore',
@@ -324,10 +405,6 @@ Kërkesa e fundit në databazë ishte:
"$1"
mbrenda funksionit "$2".
Databaza ktheu gabimin "$3: $4".',
-'noconnect' => 'Ju kërkojmë të falme! Defekt teknik, rifillojmë së shpejti.<br />
-$1',
-'nodb' => 'Nuk mujta me zgjidh regjistrin $1',
-'cachederror' => 'Kjo asht një kopje e faqes së kërkueme dhe munet me kánë e vjetër.',
'laggedslavemode' => "'''Kujdes:''' Kjo faqe mundet mos me përmbajtë ndryshime të reja.",
'readonly' => 'Databaza âsht e bllokueme',
'enterlockreason' => 'Futni një arsye për bllokimin, gjithashtu futni edhe kohën se kur pritet të çbllokohet',
@@ -344,6 +421,8 @@ Nëse nuk âsht kështu, mund ta keni gjetë nji gabim në software. Ju lutemi,
'readonly_lag' => 'Databaza âsht bllokue automatikisht përderisa serverat e mvarun të skinkronizohen me kryesorin.',
'internalerror' => 'Gabim i mbrendshëm',
'internalerror_info' => 'Gabimi i mbrendshëm: $1',
+'fileappenderrorread' => ' "$1" nuk mujti m\'u lexu gjatë bashkangjitjes.',
+'fileappenderror' => '"$1" nuk mujti me i\'u bashkangjitë "$2".',
'filecopyerror' => 'Nuk mujta me kopjue skedën "$1" te "$2".',
'filerenameerror' => 'Nuk mujta me ndërrue emnin e skedës "$1" në "$2".',
'filedeleteerror' => 'Nuk mujta me fshî skedën "$1".',
@@ -353,7 +432,8 @@ Nëse nuk âsht kështu, mund ta keni gjetë nji gabim në software. Ju lutemi,
'unexpected' => 'Vlerë e papritun: "$1"="$2".',
'formerror' => 'Gabim: nuk mujta me dërgue formularin',
'badarticleerror' => 'Ky veprim nuk mundet me u ekzekutue në këtë faqe.',
-'cannotdelete' => 'Nuk mujta me gris këtë faqe ose figurë të dhënë. (Munet qi asht e grisur nga dikush tjeter.)',
+'cannotdelete' => 'Nuk mujta me fshi faqen apo skedën e dhânë.
+Ndodh që âsht fshi prej dikujt tjetër.',
'badtitle' => 'Titull i keq',
'badtitletext' => 'Titulli i faqes që kërkuet ishte jovalid, bosh, apo ishte nji vegëz gabim e lidhun ndërgjuhesisht apo ndër-wiki.
Ndodh që ka shêja që nuk munden me u përdorë në titull.',
@@ -390,7 +470,6 @@ Arsyeja e dhânë âsht "\'\'$2\'\'".',
'virus-unknownscanner' => 'antivirus i panjoftun:',
# Login and logout pages
-'logouttitle' => 'Përdoruesi ka dál',
'logouttext' => "'''Jeni çlajmërue.'''
Mundeni me vazhdue me shfrytëzue {{SITENAME}} në mënyrë anonime, apo mundeni [[Special:UserLogin|me u kyçë]] si përdoruesi i njêjtë apo si nji tjetër.
@@ -409,6 +488,7 @@ Mos harroni me i ndryshue [[Special:Preferences|parapëlqimet për {{SITENAME}}]
'nav-login-createaccount' => 'Kyçu / çel llogari',
'loginprompt' => 'Shfletuesi duhet me pranue keksa (cookies) për me mujtë me u kyçë në {{SITENAME}}.',
'userlogin' => 'Kyçu / çel llogari',
+'userloginnocreate' => 'Kyçu',
'logout' => 'Çkyçu',
'userlogout' => 'Çkyçu',
'notloggedin' => 'Nuk je i kyçun',
@@ -421,28 +501,8 @@ Mos harroni me i ndryshue [[Special:Preferences|parapëlqimet për {{SITENAME}}]
'badretype' => 'Fjalëkalimet nuk janë të njêjta.',
'userexists' => 'Nofka keni zgjedhë âsht në përdorim.
Zgjedh nji emën tjetër.',
-'youremail' => 'Adresa e email-it*',
-'username' => 'Nofka e përdoruesit:',
-'uid' => 'Nr. i identifikimit:',
-'prefs-memberingroups' => 'Anëtar i {{PLURAL:$1|grupit|grupeve}}:',
-'yourrealname' => 'Emri juej i vërtetë*',
-'yourlanguage' => 'Ndërfaqja gjuhësore',
-'yournick' => 'Nofka :',
-'badsig' => 'Sintaksa e nënshkrimit asht e pavlefshme, kontrolloni HTML-n.',
-'badsiglength' => 'Emri i zgjedhun asht shumë i gjatë; duhet me pas ma pak se $1 shkronja',
-'yourgender' => 'Gjinia:',
-'gender-unknown' => 'Pacaktue',
-'gender-male' => 'Mashkull',
-'gender-female' => 'Femën',
-'prefs-help-gender' => 'Opcionale: përdoret për adresim korrekt në relacion me gjininë nga softwarei.
-Kjo informatë del publike.',
-'email' => 'Email',
-'prefs-help-realname' => 'Emni i vërtetë âsht opcional.
-Nëse zgjedhni me e dhânë, ky do të përdoret për me jua atribuue punën.',
'loginerror' => 'Gabim në kyçje',
-'prefs-help-email' => 'Emaili âsht opcional, por mundëson që fjalëkalimi i ri me mujtë me ju dërgue me email nëse e harroni.
-Mundeni me zgjedhe që të tjerët me ju kontaktue përmjet faqe së diskutimit pa e zbulue identitetin tuej të vërtetë.',
-'prefs-help-email-required' => 'Adresa e emailit âsht e domosdoshme.',
+'createaccounterror' => 'Nuk mund të hapni një llogari $1',
'nocookiesnew' => 'Llogaria e përdoruesit u krijue, por ende nuk je i kyçun.
{{SITENAME}} përdor keksa (cookies) për kyçje.
Keksat i ke jasht funksionit.
@@ -459,10 +519,13 @@ Kontrollo drejtshkrimin ose [[Special:UserLogin/signup|krijo llogari]].',
'nosuchusershort' => 'Nuk ka përdorues me emnin "<nowiki>$1</nowiki>".
Kontrollo drejtshkrimin.',
'nouserspecified' => 'Duhesh me dhânë nji nofkë.',
+'login-userblocked' => 'Ky përdorues është bllokuar. Identifikohu nuk lejohet',
'wrongpassword' => 'Fjalëkalimi i pasaktë.
Provo prap.',
'wrongpasswordempty' => 'Fjalëkalimi ishte i shprazët.
Provo prap.',
+'passwordtooshort' => 'Fjalëkalimi juej duhet me i pasë së paku {{PLURAL:$1|1 shêjë|$1 shêja}}.',
+'password-name-match' => 'Fjalëkalimi duhet me qenë i ndryshëm prej nofkës.',
'mailmypassword' => 'Dërgo fjalëkalimin me email',
'passwordremindertitle' => 'Fjalëkalim i ri i përkohshëm për {{SITENAME}}',
'passwordremindertext' => 'Dikush (me giasë ju vetë, nga adresa IP $1) ka lypë nji
@@ -475,6 +538,7 @@ Nëse dikush tjetër e ka bâ këtë kërkesë, ose ju âsht kujtue fjalëkalimi
dhe nuk dëshironi me ndërrue fjalëkalimin, mundeni me injorue këtë mesazh
dhe me vazhdue me përdorë fajlëkalimin e vjetër.',
'noemail' => 'Nuk ka adresë emaili për përdoruesin "$1".',
+'noemailcreate' => 'Ju duhet të sigurojë një adresë të saktë-mail',
'passwordsent' => 'Nji fjalëkalim i ri u dërgue në adresën e emailit të "$1".
Ju lutem kyçuni mbasi ta keni marrë atê.',
'blocked-mailpassword' => 'Adresa juej IP âsht bllokue për redaktim, dhe nuk lejohet me përdorë funksionin e mëkâmbjes së fjalëkalimit për me parandalue keqpërdorimin.',
@@ -499,9 +563,11 @@ Ju lutemi jepeni nji adresë të formatueme mirë ose leni atë fushë të shpra
Kyçuni tash dhe ndërroni fjalëkalimin.
Nëse kjo llogari âsht krijue gabimisht, mundeni me injorue këtë email.',
+'usernamehasherror' => 'Emri nuk mund të përmbajë karaktere hash',
'login-throttled' => 'Keni bâ shumë tentime frik në fjalëkalimin e kësaj llogarie.
Ju lutemi pritni pak për me provue prap.',
'loginlanguagelabel' => 'Gjuha: $1',
+'suspicious-userlogout' => 'Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy',
# Password reset dialog
'resetpass' => 'Ndrysho fjalëkalimin',
@@ -517,6 +583,7 @@ Për me krye kyçjen, specifikoni fjalëkalimin e ri këtu:',
'resetpass_forbidden' => 'Fjalëkalimet nuk mujnë me u ndryshue',
'resetpass-no-info' => 'Duheni me qenë të kyçun për me iu qasë kësaj faqeje direkt.',
'resetpass-submit-loggedin' => 'Ndrysho fjalëkalimin',
+'resetpass-submit-cancel' => 'Harroji',
'resetpass-wrong-oldpass' => 'Fjalëkalimi i përkohshëm apo ai aktual invalid.
Ndoshta tashmâ e keni ndryshue fjalëkalimin me sukses, apo keni kërkue nji fjalëkalim të përkohshëm.',
'resetpass-temp-password' => 'Fjalëkalimi i përkohshëm:',
@@ -626,7 +693,8 @@ Ju lutemi kontrolloni nëse doni me krijue/redaktue këtë faqe.',
'''Konqueror: '''klikoni ''Reload'' ose trusni ''F5'';
'''Opera:''' fshini cachein në ''Tools → Preferences'';
'''Internet Explorer:''' mbani ''Ctrl'' tue klikue në ''Refresh,'' ose trusni ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapâmjen' për me testue CSS/JS para se me i regjistrue ndryshimet.",
+'usercssyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapâmjen' për me testue CSS para se me i regjistrue ndryshimet.",
+'userjsyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapâmjen' për me testue JS para se me i regjistrue ndryshimet.",
'usercsspreview' => "'''Vini re, jeni tue pâ veç parapâmjen e CSSit tuej.'''
'''Ende nuk e keni ruejtë!'''",
'userjspreview' => "'''Vini re, jeni tue testue/pâ veç parapâmjen e JavaScriptit tuej.'''
@@ -687,6 +755,9 @@ Administruesi që e ka mshelë e ka dhânë këtë shpjegim: $1",
'semiprotectedpagewarning' => "'''Shenim:''' Kjo faqe âsht e mshelun dhe mundet me u redaktue vetëm prej përdoruesve të regjistruem.",
'cascadeprotectedwarning' => "'''Veni re:''' Kjo faqe âsht e mshelun dhe vetëm përdoruesit me tagër administruesi munden me e redaktue, tue qenë se âsht e përfshime në mbrojtje mvarësie në {{PLURAL:$1|faqen e|faqet e}} mâposhtme:",
'titleprotectedwarning' => "'''Veni re: Kjo faqe âsht e mshelun dhe vetëm përdorues me [[Special:ListGroupRights|tagër të veçantë]] munden me e krijue.'''",
+'templatesused' => '{{PLURAL:$1|Stamp|Stampa}} janë përdorë në kët faqe:',
+'templatesusedpreview' => '{{PLURAL:$1|Stamp|Stampa}} janë përdorë në këtë parapâmje:',
+'templatesusedsection' => '{{PLURAL:$1|Stamp|Stampa}} e përdoruna në këtë sekcion:',
'template-protected' => '(e mbrojtme)',
'template-semiprotected' => '(gjysë-mbrojtun)',
'hiddencategories' => 'Kjo faqe bân pjesë në {{PLURAL:$1|1 kategori të msheftë|$1 kategori të mshefta}}:',
@@ -697,6 +768,11 @@ Mundeni me u kthy mbrapa edhe me redaktue faqen ekzistuese, apo [[Special:UserLo
'permissionserrors' => 'Gabim tagri',
'permissionserrorstext' => 'Nuk keni tagër me bâ atë veprim, për {{PLURAL:$1|arsyen|arsyet}} vijuese:',
'permissionserrorstext-withaction' => 'Nuk keni tagër në $2, për {{PLURAL:$1|arsyen|arsyet}} vijuese:',
+'recreate-moveddeleted-warn' => "'''Veni re: Jeni tue rikrijue nji faqe, e cila âsht fshi mâ herët.'''
+
+Mendohuni nëse âsht e udhës me vazhdue me këtë veprim.
+Regjistrin e fshimjes dhe zhvendosjes e keni në vijim:",
+'moveddeleted-notice' => 'Kjo faqe është grisur. Të dhënat e grisjes për këtë faqe gjenden më poshtë, për referencë.',
'edit-gone-missing' => 'Faqja nuk mund t freskohet.
Duket se është grisur.',
'edit-conflict' => 'Konflikt në redaktim.',
@@ -732,8 +808,9 @@ Arsyeja e dhënë nga $3 është ''$2''.",
'viewpagelogs' => 'Shih regjistrat për këtë faqe',
'nohistory' => 'Nuk ka histori redaktimesh për këtë faqe.',
'currentrev' => 'Versioni i tanishëm',
+'currentrev-asof' => 'Redaktimi aktual i datës $1',
'revisionasof' => 'Versioni i $1',
-'revision-info' => 'Versioni me $1 nga $2', # Additionally available: $3: revision id
+'revision-info' => 'Versioni me $1 nga $2',
'previousrevision' => '← Verzion ma i vjetër',
'nextrevision' => 'Redaktimi mâ i ri →',
'currentrevisionlink' => 'Verzioni aktual',
@@ -752,48 +829,58 @@ Legjenda: '''({{int:cur}})''' = dallimi me verzionin aktual,
'historyempty' => '(bosh)',
# Revision feed
-'history-feed-title' => 'Historiku i versioneve',
-'history-feed-description' => 'Historiku i versioneve për këtë faqe në wiki',
-'history-feed-empty' => 'Faqja që kërkuat nuk ekziston. Ajo mund të jetë grisur nga wiki ose mund të jetë zhvendosur nën një emër tjetër. Mund të provoni ta gjeni duke e [[Special:Search|kërkuar]].',
+'history-feed-title' => 'Historiku i versioneve',
+'history-feed-description' => 'Historiku i versioneve për këtë faqe në wiki',
+'history-feed-item-nocomment' => '$1 tek $2',
+'history-feed-empty' => 'Faqja që kërkuat nuk ekziston. Ajo mund të jetë grisur nga wiki ose mund të jetë zhvendosur nën një emër tjetër. Mund të provoni ta gjeni duke e [[Special:Search|kërkuar]].',
# Revision deletion
-'rev-deleted-comment' => '(kometi u largua)',
-'rev-deleted-user' => '(përdoruesi u largua)',
-'rev-deleted-event' => '(veprimi në regjistër është hequr)',
-'rev-delundel' => 'trego/mshef',
-'revisiondelete' => 'Fshij/kthe verzionet',
-'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
-'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
-'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
-'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
-'revdelete-selected' => "'''{{PLURAL:$2|Versioni i zgjedhur i|Versionet e zgjedhura të}} [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:'''",
-'revdelete-legend' => 'Vendosni kufizimet për versionin:',
-'revdelete-hide-text' => 'Fshihe tekstin e versionit',
-'revdelete-hide-name' => 'Fshihe veprimin dhe shënjestrën',
-'revdelete-hide-comment' => 'fshih komentin e redaktimit',
-'revdelete-hide-user' => 'Fshihe emrin/IP-në të redaktuesit',
-'revdelete-hide-restricted' => 'Këto përkufizme vlejnë edhe për Admintratorët (jo vetëm për përdoruesit "normal")',
-'revdelete-suppress' => 'Ndalo të dhëna nga administrues si dhe të tjerë',
-'revdelete-hide-image' => 'Fshih përmbajtjen skedare',
-'revdelete-unsuppress' => 'Hiq kufizimet nga versionet e restauruara',
-'revdelete-log' => 'Arsyeja:',
-'revdelete-logentry' => 'Pamja e versionit u ndryshua për [[$1]]',
-'logdelete-logentry' => 'u ndryshua dukshmëria e ngjarjes së [[$1]]',
-'revdelete-success' => "'''Dukshmëria e versioneve u vendos me sukses.'''",
-'logdelete-success' => "'''Dukshmëria e regjistrave u vendos me sukses.'''",
-'revdel-restore' => 'ndrro dukshmëninë',
-'pagehist' => 'Historiku i faqes',
-'deletedhist' => 'Historiku i grisjeve',
-'revdelete-content' => 'përmbajtja',
-'revdelete-summary' => 'përmbledhja redaktimit',
-'revdelete-uname' => 'përdoruesi',
-'revdelete-restricted' => 'u vendosën kufizime për administruesit',
-'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
-'revdelete-hid' => 'u fsheh $1',
-'revdelete-unhid' => 'u tregua $1',
-'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|version|versione}}',
-'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|ngjarje|ngjarje}}',
+'rev-deleted-comment' => '(kometi u largua)',
+'rev-deleted-user' => '(përdoruesi u largua)',
+'rev-deleted-event' => '(veprimi në regjistër është hequr)',
+'rev-deleted-text-permission' => 'Ky version i faqes është shlyer nga arkivi publik i faqes.
+Shiko tek [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjendet atje më shumë informacion rreth kësaj faqeje.',
+'rev-deleted-text-view' => 'Ky version i faqes është shlyer nga arkivi publik i faqes. Ju si Administrator mund ta shikoni akoma këtë.
+Shiko tek [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjenden atje më shumë informacione rreth kësaj.',
+'rev-delundel' => 'trego/mshef',
+'rev-showdeleted' => 'Trego',
+'revisiondelete' => 'Fshij/kthe verzionet',
+'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
+'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
+'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
+'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
+'revdelete-no-file' => 'Skeda e dhënë nuk ekziston.',
+'revdelete-selected' => "'''{{PLURAL:$2|Versioni i zgjedhur i|Versionet e zgjedhura të}} [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:'''",
+'revdelete-text' => "'''Përmbajtja dhe pjesët e tjera nuk janë të dukshme për të gjithë, por figurojnë në historikun e versioneve.''' Administratorët munden përmbajtjen e larguar ta shikojnë dhe restaurojnë, përveç në rastet kur një gjë e tillë është ndaluar ekstra.",
+'revdelete-legend' => 'Vendosni kufizimet për versionin:',
+'revdelete-hide-text' => 'Fshihe tekstin e versionit',
+'revdelete-hide-image' => 'Fshih përmbajtjen skedare',
+'revdelete-hide-name' => 'Fshihe veprimin dhe shënjestrën',
+'revdelete-hide-comment' => 'fshih komentin e redaktimit',
+'revdelete-hide-user' => 'Fshihe emrin/IP-në të redaktuesit',
+'revdelete-hide-restricted' => 'Këto përkufizme vlejnë edhe për Admintratorët (jo vetëm për përdoruesit "normal")',
+'revdelete-suppress' => 'Ndalo të dhëna nga administrues si dhe të tjerë',
+'revdelete-unsuppress' => 'Hiq kufizimet nga versionet e restauruara',
+'revdelete-log' => 'Arsyeja:',
+'revdelete-submit' => 'Apliko te versionet e zgjedhura',
+'revdelete-logentry' => 'Pamja e versionit u ndryshua për [[$1]]',
+'logdelete-logentry' => 'u ndryshua dukshmëria e ngjarjes së [[$1]]',
+'revdelete-success' => "'''Dukshmëria e versioneve u vendos me sukses.'''",
+'logdelete-success' => "'''Dukshmëria e regjistrave u vendos me sukses.'''",
+'revdel-restore' => 'ndrro dukshmëninë',
+'pagehist' => 'Historiku i faqes',
+'deletedhist' => 'Historiku i grisjeve',
+'revdelete-content' => 'përmbajtja',
+'revdelete-summary' => 'përmbledhja redaktimit',
+'revdelete-uname' => 'përdoruesi',
+'revdelete-restricted' => 'u vendosën kufizime për administruesit',
+'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
+'revdelete-hid' => 'u fsheh $1',
+'revdelete-unhid' => 'u tregua $1',
+'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|version|versione}}',
+'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|ngjarje|ngjarje}}',
+'revdelete-edit-reasonlist' => 'Arsye grisjeje për redaktimet',
# Suppression log
'suppressionlog' => 'Regjistri i ndalimeve',
@@ -843,23 +930,25 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'searchresulttext' => 'Për mâ shumë informata rreth kërkimit në {{SITENAME}} shih [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Keni kërkue \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tâna faqet që nisin me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tâna faqet që lidhen me "$1"]])',
'searchsubtitleinvalid' => "Keni kërkue '''$1'''",
-'noexactmatch' => "'''Nuk ka faqe me titull \"\$1\".'''
-Mundeni [[:\$1|me krijue këtë faqe]].",
-'noexactmatch-nocreate' => "'''Nuk ka faqe me titull \"\$1\".'''",
'toomanymatches' => 'Ka tepër shumë përputhje, provoni nji kërkesë mâ të ngushtë',
'titlematches' => 'Tituj që përputhen',
'notitlematches' => 'Nuk ka përputhje në tituj',
'textmatches' => 'Përputhje në tekst',
'notextmatches' => 'Nuk ka përputhje tekstuale në asnji faqe',
+'prevn' => 'e përparme {{PLURAL:$1|$1}}',
+'nextn' => 'e ardhshme {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|rezultat|rezultate}} të mâhershme',
'nextn-title' => '$1 {{PLURAL:$1|rezultat|rezultate}} të ardhshme',
'shown-title' => 'Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe',
-'viewprevnext' => 'Shih ($1) ($2) ($3).',
+'viewprevnext' => 'Shih ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opcionet e kërkimit',
'searchmenu-exists' => "'''Në këtë wiki âsht nji faqe me titullin \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Krijo faqen \"[[:\$1]]\" në këtë wiki!'''",
'searchhelp-url' => 'Help:Përmbajtja',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfleto faqet me këtë prefiks]]',
+'searchprofile-articles' => 'Faqet me përmbajtje',
+'searchprofile-project' => 'Faqet e ndihmës dhe projekteve',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Gjithçka',
'searchprofile-advanced' => 'Detajshëm',
'searchprofile-articles-tooltip' => 'Kërko në $1',
@@ -879,11 +968,12 @@ Mundeni [[:\$1|me krijue këtë faqe]].",
'search-mwsuggest-disabled' => "s'ka sygjerime",
'search-relatedarticle' => 'Të ngjajshme',
'mwsuggest-disable' => 'Deaktivizo sygjerimet me AJAX',
+'searcheverything-enable' => 'Kërko në tâna hapësinat',
'searchrelated' => 'të ngjajshme',
'searchall' => 'tâna',
'showingresults' => "Mâ poshtë {{PLURAL:$1|tregohet '''1''' rezultat|tregohen '''$1''' rezultate}} që nisin me #'''$2'''.",
'showingresultsnum' => "Mâ poshtë {{PLURAL:$3|tregohet '''1''' rezultat|tregohen '''$3''' rezultate}} që nisin me #'''$2'''.",
-'showingresultstotal' => "Mâ poshtë {{PLURAL:$4|tregohet rezultati '''$1''' prej '''$3'''|tregohen rezultatet '''$1 - $2''' prej '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultati '''$1''' prej '''$3'''|Rezultatet '''$1 - $2''' prej '''$3'''}} për '''$4'''",
'nonefound' => "'''Shenim''': Vetëm disa hapësina kërkohen me t'lême.
Provoni me ia parashtue kërkesës tuej ''tâna:'' që me lypë tânë përmbajtjen (përfshî edhe diskutimet, shabllonat, etj.), ose përdorni hapësinën e dëshirueme si parashtesë.",
'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
@@ -892,71 +982,117 @@ Provoni me ia parashtue kërkesës tuej ''tâna:'' që me lypë tânë përmbajt
'powersearch-ns' => 'Kërkimi në hapësina:',
'powersearch-redir' => 'Listo përcjelljet',
'powersearch-field' => 'Kërko',
+'powersearch-togglelabel' => 'Zgjedh:',
+'powersearch-toggleall' => 'Tâna',
+'powersearch-togglenone' => 'Asnji',
'search-external' => 'Kërkim jashtë',
'searchdisabled' => '{{SITENAME}} kërkimi âsht deaktivue.
Ndërkohë mundeni me lypë me Google.
Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të vjetëruem.',
+# Quickbar
+'qbsettings' => 'Vegla të shpejta',
+'qbsettings-none' => 'Asnji',
+'qbsettings-fixedleft' => 'Lidhun majtas',
+'qbsettings-fixedright' => 'Lidhun djathtas',
+'qbsettings-floatingleft' => 'Pezull majtas',
+'qbsettings-floatingright' => 'Pezull djathtas',
+
# Preferences page
-'preferences' => 'Parapëlqimet',
-'mypreferences' => 'Parapëlqimet e mija',
-'prefs-edits' => 'Numri i redaktimeve:',
-'prefsnologin' => 'Nuk jeni kyçë',
-'qbsettings' => 'Vegla të shpejta',
-'qbsettings-none' => 'Asnji',
-'qbsettings-fixedleft' => 'Lidhun majtas',
-'qbsettings-fixedright' => 'Lidhun djathtas',
-'qbsettings-floatingleft' => 'Pezull majtas',
-'qbsettings-floatingright' => 'Pezull djathtas',
-'changepassword' => 'Ndërrimi i fjalëkalimit',
-'skin-preview' => 'Parapâmja',
-'datedefault' => "S'ka parapëlqim",
-'prefs-personal' => 'Profili i përdoruesit',
-'prefs-rc' => 'Ndryshimet e freskëta',
-'prefs-watchlist' => 'Lista e mbikëqyrjeve',
-'prefs-watchlist-days' => 'Numri i ditëve me i tregue në listën e mbikëqyrjeve:',
-'prefs-watchlist-edits' => 'Numri maksimal i ndryshimeve që tregohen në listën e zgjânueme të mbikëqyrjes:',
-'prefs-misc' => 'Të ndryshme',
-'prefs-resetpass' => 'Ndryshimi i fjalëkalimit',
-'saveprefs' => 'Regjistro',
-'resetprefs' => 'Fshij ndryshimet e paruejtuna',
-'restoreprefs' => 'Kthe tâna përcaktimet si në fillim',
-'prefs-edit-boxsize' => 'Madhësia e dritares redaktuese.',
-'rows' => 'Rreshta:',
-'columns' => 'Kolona:',
-'searchresultshead' => 'Kërkimi',
-'resultsperpage' => 'Gjetje për faqe:',
-'contextlines' => 'Rreshta për gjetje:',
-'contextchars' => 'Konteksti për rresht:',
-'stub-threshold' => 'Pragu për formatimin e <a href="#" class="stub">vegzave të cungueme</a> në (byte):',
-'recentchangesdays' => 'Numri i ditëve për me i tregue te ndryshimet e freskëta:',
-'savedprefs' => 'Parapëlqimet tueja janë ruejtë.',
-'timezonelegend' => 'Zona kohore:',
-'localtime' => 'Ora lokale:',
-'timezoneuseserverdefault' => 'Përdor të paracaktuemen e serverit',
-'timezoneuseoffset' => 'Tjetër (specifiko kcimin)',
-'timezoneoffset' => 'Kcimi¹:',
-'servertime' => 'Ora e serverit:',
-'guesstimezone' => 'Mbush prej shfletuesit:',
-'timezoneregion-africa' => 'Afrikë',
-'timezoneregion-america' => 'Amerikë',
-'timezoneregion-antarctica' => 'Antarktik',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azi',
-'timezoneregion-atlantic' => 'Oqeani Atlantik',
-'timezoneregion-australia' => 'Australi',
-'timezoneregion-europe' => 'Europë',
-'timezoneregion-indian' => 'Oqeani Indian',
-'timezoneregion-pacific' => 'Oqeani Paqësor',
-'allowemail' => 'Lejo emaila prej përdoruesve tjerë',
-'prefs-searchoptions' => 'Opcionet e kërkimit',
-'prefs-namespaces' => 'Hapësinat',
-'default' => 'e paracaktueme',
-'prefs-custom-css' => 'CSS i përpunuem',
-'prefs-custom-js' => 'JavaScripti i përpunuem',
+'preferences' => 'Parapëlqimet',
+'mypreferences' => 'Parapëlqimet e mija',
+'prefs-edits' => 'Numri i redaktimeve:',
+'prefsnologin' => 'Nuk jeni kyçë',
+'prefsnologintext' => 'Duheni me qenë <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} i kyçun]</span> për me i caktue parapëlqimet.',
+'changepassword' => 'Ndërrimi i fjalëkalimit',
+'prefs-skin' => 'Doka',
+'skin-preview' => 'Parapâmja',
+'prefs-math' => 'Formulë',
+'datedefault' => "S'ka parapëlqim",
+'prefs-datetime' => 'Data dhe ora',
+'prefs-personal' => 'Profili i përdoruesit',
+'prefs-rc' => 'Ndryshimet e freskëta',
+'prefs-watchlist' => 'Lista e mbikëqyrjeve',
+'prefs-watchlist-days' => 'Numri i ditëve me i tregue në listën e mbikëqyrjeve:',
+'prefs-watchlist-days-max' => '(maksimalisht 7 ditë)',
+'prefs-watchlist-edits' => 'Numri maksimal i ndryshimeve që tregohen në listën e zgjânueme të mbikëqyrjes:',
+'prefs-watchlist-edits-max' => '(numri maksimal: 1000)',
+'prefs-misc' => 'Të ndryshme',
+'prefs-resetpass' => 'Ndryshimi i fjalëkalimit',
+'prefs-email' => 'Opcionet për email',
+'prefs-rendering' => 'Pâmja',
+'saveprefs' => 'Regjistro',
+'resetprefs' => 'Fshij ndryshimet e paruejtuna',
+'restoreprefs' => 'Kthe tâna përcaktimet si në fillim',
+'prefs-editing' => 'Tue redaktue',
+'prefs-edit-boxsize' => 'Madhësia e dritares redaktuese.',
+'rows' => 'Rreshta:',
+'columns' => 'Kolona:',
+'searchresultshead' => 'Kërkimi',
+'resultsperpage' => 'Gjetje për faqe:',
+'contextlines' => 'Rreshta për gjetje:',
+'contextchars' => 'Konteksti për rresht:',
+'stub-threshold' => 'Pragu për formatimin e <a href="#" class="stub">vegzave të cungueme</a> në (byte):',
+'recentchangesdays' => 'Numri i ditëve për me i tregue te ndryshimet e freskëta:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|ditë|ditë}})',
+'recentchangescount' => 'Numri i redaktimeve me u tregue:',
+'prefs-help-recentchangescount' => 'Kjo përfshin ndryshimet e freskëta, historikun e faqes dhe regjistrat.',
+'savedprefs' => 'Parapëlqimet tueja janë ruejtë.',
+'timezonelegend' => 'Zona kohore:',
+'localtime' => 'Ora lokale:',
+'timezoneuseserverdefault' => 'Përdor të paracaktuemen e serverit',
+'timezoneuseoffset' => 'Tjetër (specifiko kcimin)',
+'timezoneoffset' => 'Kcimi¹:',
+'servertime' => 'Ora e serverit:',
+'guesstimezone' => 'Mbush prej shfletuesit:',
+'timezoneregion-africa' => 'Afrikë',
+'timezoneregion-america' => 'Amerikë',
+'timezoneregion-antarctica' => 'Antarktik',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azi',
+'timezoneregion-atlantic' => 'Oqeani Atlantik',
+'timezoneregion-australia' => 'Australi',
+'timezoneregion-europe' => 'Europë',
+'timezoneregion-indian' => 'Oqeani Indian',
+'timezoneregion-pacific' => 'Oqeani Paqësor',
+'allowemail' => 'Lejo emaila prej përdoruesve tjerë',
+'prefs-searchoptions' => 'Opcionet e kërkimit',
+'prefs-namespaces' => 'Hapësinat',
+'defaultns' => 'Përndryshe kërko në këto hapësina:',
+'default' => 'e paracaktueme',
+'prefs-files' => 'Skedat',
+'prefs-custom-css' => 'CSS i përpunuem',
+'prefs-custom-js' => 'JavaScripti i përpunuem',
+'prefs-reset-intro' => 'Mundeni me përdorë këtë faqe për me i kthy parapëlqimet tueja në ato të paracaktuemet e faqes.
+Kjo nuk mundet me u zhbâ.',
+'prefs-emailconfirm-label' => 'Konfirmimi i emailit:',
+'youremail' => 'Adresa e email-it*',
+'username' => 'Nofka e përdoruesit:',
+'uid' => 'Nr. i identifikimit:',
+'prefs-memberingroups' => 'Anëtar i {{PLURAL:$1|grupit|grupeve}}:',
+'yourrealname' => 'Emri juej i vërtetë*',
+'yourlanguage' => 'Ndërfaqja gjuhësore',
+'yournick' => 'Nofka :',
+'badsig' => 'Sintaksa e nënshkrimit asht e pavlefshme, kontrolloni HTML-n.',
+'badsiglength' => 'Emri i zgjedhun asht shumë i gjatë; duhet me pas ma pak se $1 shkronja',
+'yourgender' => 'Gjinia:',
+'gender-unknown' => 'Pacaktue',
+'gender-male' => 'Mashkull',
+'gender-female' => 'Femën',
+'prefs-help-gender' => 'Opcionale: përdoret për adresim korrekt në relacion me gjininë nga softwarei.
+Kjo informatë del publike.',
+'email' => 'Email',
+'prefs-help-realname' => 'Emni i vërtetë âsht opcional.
+Nëse zgjedhni me e dhânë, ky do të përdoret për me jua atribuue punën.',
+'prefs-help-email' => 'Emaili âsht opcional, por mundëson që fjalëkalimi i ri me mujtë me ju dërgue me email nëse e harroni.
+Mundeni me zgjedhe që të tjerët me ju kontaktue përmjet faqe së diskutimit pa e zbulue identitetin tuej të vërtetë.',
+'prefs-help-email-required' => 'Adresa e emailit âsht e domosdoshme.',
+'prefs-info' => 'Informatat bazike',
+'prefs-i18n' => 'Internacionalizimi',
+'prefs-signature' => 'Firma',
# User rights
-'userrights' => 'Ndrysho privilegjet e përdoruesve', # Not used as normal message but as header for the special page itself
+'userrights' => 'Ndrysho privilegjet e përdoruesve',
'userrights-lookup-user' => 'Ndrysho grupet e përdoruesit',
'userrights-user-editname' => 'Fusni emrin e përdoruesit:',
'editusergroup' => 'Redakto grupet e përdoruesve',
@@ -1029,6 +1165,8 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
'right-editprotected' => 'Redakto faqet e mbrojtura (pa ndryshuar mbrojtjen)',
'right-editinterface' => 'Ndrysho parapamjen e përdoruesit',
'right-editusercssjs' => 'Redakto skedat CSS dhe JS të përdoruesve tjerë',
+'right-editusercss' => 'Redakto skedat CSS të përdoruesve tjerë',
+'right-edituserjs' => 'Redakto skedat JS të përdoruesve tjerë',
'right-noratelimit' => 'Mos u prek nga kufizimet e vlerësimit',
'right-import' => 'Importo faqe nga wiki tjera',
'right-unwatchedpages' => 'Shiko listën e faqeve të pa vëzhguara',
@@ -1077,6 +1215,7 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
'recentchanges-legend' => 'Opcionet e ndryshimeve të reja',
'recentchangestext' => 'Ndiqni ndryshime së fundmi tek kjo faqe.',
'recentchanges-feed-description' => 'Përcjelli ndryshimet mâ të reja të këtij wiki në këtë feed.',
+'recentchanges-label-newpage' => 'Ky redaktim krijoi një faqe të re',
'rcnote' => "Mâ poshtë {{PLURAL:$1|âsht '''1''' ndryshim|janë '''$1''' ndryshimet e fundit}} në {{PLURAL:$2|ditën|'''$2''' ditët}} e fundit, prej $5, $4.",
'rclistfrom' => 'Trego ndryshimet e reja tue fillue prej $1',
'rcshowhideminor' => '$1 redaktimet e vogla',
@@ -1098,6 +1237,8 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
# Recent changes linked
'recentchangeslinked' => 'Ndryshimet fqinje',
+'recentchangeslinked-feed' => 'Ndryshimet fqinje',
+'recentchangeslinked-toolbox' => 'Ndryshimet fqinje',
'recentchangeslinked-title' => 'Ndryshimet në lidhje me "$1"',
'recentchangeslinked-summary' => "Kjo âsht nji listë e ndryshimeve të fundit në faqe që lidhen në artikullin e dhânë (apo që janë në kategorinë e dhânë).
Faqet në [[Special:Watchlist|listën tuej të mbikëqyrjes]] janë '''të theksueme'''.",
@@ -1110,18 +1251,20 @@ Faqet në [[Special:Watchlist|listën tuej të mbikëqyrjes]] janë '''të theks
'uploadedimage' => 'ngarkue "[[$1]]"',
# File description page
+'file-anchor-link' => 'Figura',
'filehist' => 'Historiku i dosjes',
'filehist-help' => 'Kliko në datë/orë për me pa skedën si âsht dukë në atë kohë.',
'filehist-current' => 'aktualisht',
'filehist-datetime' => 'Data/Ora',
'filehist-thumb' => 'Pamja e vogël',
+'filehist-thumbtext' => 'Pâmja e vogël e verzionit të $1',
'filehist-user' => 'Përdoruesi',
'filehist-dimensions' => 'Dimenzionet',
'filehist-filesize' => 'Madhësia e figurës/skedës',
'filehist-comment' => 'Koment',
'imagelinks' => 'Vegzat e skedave',
'linkstoimage' => '{{PLURAL:$1|vegzat|$1 vegza}} në vijim lidhen me këtë skedë:',
-'sharedupload' => 'Kjo skedë âsht preh $1 dhe ka mundësi që përdoret prej projekteve tjera.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Kjo skedë âsht preh $1 dhe ka mundësi që përdoret prej projekteve tjera.',
'uploadnewversion-linktext' => 'Ngarko verzion të ri të kësaj skede',
# File deletion
@@ -1227,7 +1370,6 @@ Shih $2 për regjistrin e fshimjeve të fundit.',
'protectexpiry' => 'Afáti',
'protect_expiry_invalid' => 'Data e skadimit asht e pasaktë.',
'protect_expiry_old' => 'Data e skadimit asht në kohën kalueme.',
-'protect-unchain' => 'Ndryshoje lejen e zhvendosjeve',
'protect-text' => "Këtu muneni me shiku dhe me ndryshu nivelin e mbrojtjes për faqen '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Llogaria juej nuk ka privilegjet e nevojitme për me ndryshu nivelin e mbrojtjes. Kufizimet e kësaj faqe janë '''$1''':",
'protect-cascadeon' => 'Kjo faqe aktualisht âsht e mbrojtun sepse përfshihet në {{PLURAL:$1|faqen që ka|faqet, të cilat kanë}} mbrojtje të përfshimjes.
@@ -1245,6 +1387,7 @@ Mundeni me ndryshue nivelin e mbrojtjes për këtë faqe, por kjo nuk ka me prek
# Undelete
'undeletelink' => 'shih/kthe',
+'undeleteviewlink' => 'shih',
'undeletedarticle' => 'u rikthye "[[$1]]"',
# Namespace form on various pages
@@ -1263,6 +1406,7 @@ Mundeni me ndryshue nivelin e mbrojtjes për këtë faqe, por kjo nuk ka me prek
'sp-contributions-newbies' => 'Trego sall kontributet e përdoruesve të rij',
'sp-contributions-blocklog' => 'regjistri i bllokimeve',
+'sp-contributions-talk' => 'Diskuto',
'sp-contributions-search' => 'Kërko te kontributet',
'sp-contributions-username' => 'Adresa IP ose përdoruesi:',
'sp-contributions-submit' => 'Kërko',
@@ -1285,7 +1429,7 @@ Mundeni me ndryshue nivelin e mbrojtjes për këtë faqe, por kjo nuk ka me prek
# Block/unblock
'blockip' => 'Blloko përdoruesin',
-'ipboptions' => '2 orë:2 hours,1 ditë:1 day,3 ditë:3 days,1 javë:1 week,2 javë:2 weeks,1 muej:1 month,3 muej:3 months,6 muej:6 months,1 vjet:1 year,pa kufi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 orë:2 hours,1 ditë:1 day,3 ditë:3 days,1 javë:1 week,2 javë:2 weeks,1 muej:1 month,3 muej:3 months,6 muej:6 months,1 vjet:1 year,pa kufi:infinite',
'ipblocklist' => 'Përdoruesit dhe adresat IP të bllokueme',
'blocklink' => 'bllokoje',
'unblocklink' => 'çblloko',
@@ -1319,7 +1463,7 @@ Në këto raste, duheni me i bashkue manualisht këto faqe nëse dëshironi.",
'move-watch' => 'Mbikqyre kët faqe',
'movepagebtn' => 'Zhvendose faqen',
'pagemovedsub' => 'Zhvendosja u kry',
-'movepage-moved' => '\'\'\'"$1" âsht zhvendosë te "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" âsht zhvendosë te "$2"\'\'\'',
'articleexists' => 'Nji faqe me këtë titull tashmâ ekziston, apo keni zgjedhë nji titull të pavlefshëm.
Ju lutemi zgjedhni nji titull tjetër.',
'talkexists' => "'''Vetë faqja u zhvendos me sukses, por faqja e diskutimit nuk mujti me u zhvendosë sepse tashmâ ekziston te titulli i ri.
@@ -1363,6 +1507,7 @@ Ju lutemi bashkoni manualisht.'''",
'tooltip-search-fulltext' => 'Kërko faqet me këtë tekst',
'tooltip-p-logo' => 'Shko te faqja kryesore',
'tooltip-n-mainpage' => 'Shko te faqja kryesore',
+'tooltip-n-mainpage-description' => 'Vizito faqen kryesore',
'tooltip-n-portal' => 'Rreth projektit, çka mundeni me bâ, ku gjinden gjânat.',
'tooltip-n-currentevents' => 'Informacion mâ i thukët rreth ndodhive aktuale',
'tooltip-n-recentchanges' => 'Lista e ndryshimeve të freskëta në wiki',
@@ -1410,6 +1555,7 @@ Lejon dhânien e arsyes në përmbledhje.',
'chick.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Chick */',
'simple.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Simple */',
'modern.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Modern */',
+'vector.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */',
'print.css' => '/* CSSi i vednosun këtu ka me e prekë pamjen e shtypjes */',
'handheld.css' => '/* CSSi i vednosun këtu ka me i prekë shfletuesit mobil (të dorës) në dukje e konfigurueme në $wgHandheldStyle */',
@@ -1423,6 +1569,7 @@ Lejon dhânien e arsyes në përmbledhje.',
'chick.js' => '/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Chick */',
'simple.js' => '/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Simple */',
'modern.js' => '/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Modern */',
+'vector.js' => '/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata nuk janë aktivizue në këtë server.',
@@ -1432,7 +1579,7 @@ Lejon dhânien e arsyes në përmbledhje.',
# Attribution
'anonymous' => '{{PLURAL:$1|Përdorues|Përdorues}} anonim të {{SITENAME}}',
'siteuser' => 'Përdoruesi $1 i {{SITENAME}}',
-'lastmodifiedatby' => 'Kjo faqe âsht redaktue së fundi me $2, $1 prej $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Kjo faqe âsht redaktue së fundi me $2, $1 prej $3.',
'othercontribs' => 'Bazue në punën e $1.',
'others' => 'tjerët',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|përdorues|përdorues}} $1',
@@ -1482,7 +1629,7 @@ Tjerat kanë me mbetë të mshefuna.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Ndryshoni kët figurë/skedë me një mjet të jashtëm',
diff --git a/languages/messages/MessagesAls.php b/languages/messages/MessagesAls.php
index 9aa4427f..604f49fc 100644
--- a/languages/messages/MessagesAls.php
+++ b/languages/messages/MessagesAls.php
@@ -1,6 +1,9 @@
<?php
/** Alemannisch
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment Deprecated code. Falls back to 'gsw'.
diff --git a/languages/messages/MessagesAm.php b/languages/messages/MessagesAm.php
index 104b892b..9c12fd3e 100644
--- a/languages/messages/MessagesAm.php
+++ b/languages/messages/MessagesAm.php
@@ -26,14 +26,19 @@ $namespaceNames = array(
NS_FILE_TALK => 'ስዕል_ውይይት',
NS_MEDIAWIKI => 'መልዕክት',
NS_MEDIAWIKI_TALK => 'መልዕክት_ውይይት',
- NS_TEMPLATE => 'መልጠፊያ',
- NS_TEMPLATE_TALK => 'መልጠፊያ_ውይይት',
+ NS_TEMPLATE => 'መለጠፊያ',
+ NS_TEMPLATE_TALK => 'መለጠፊያ_ውይይት',
NS_HELP => 'እርዳታ',
NS_HELP_TALK => 'እርዳታ_ውይይት',
NS_CATEGORY => 'መደብ',
NS_CATEGORY_TALK => 'መደብ_ውይይት',
);
+$namespaceAliases = array(
+ 'መልጠፊያ' => NS_TEMPLATE,
+ 'መልጠፊያ_ውይይት' => NS_TEMPLATE_TALK,
+);
+
$specialPageAliases = array(
'Shortpages' => array( 'አጫጭር_ገጾች' ),
'Longpages' => array( 'ረጃጅም_ገጾች' ),
@@ -71,6 +76,7 @@ $messages = array(
'tog-enotifminoredits' => 'ለአነስተኛ የገጽ እርማቶችም ኤመልዕክት ይላክልኝ',
'tog-enotifrevealaddr' => 'ኤመልዕክት አድራሻዬን በማሳወቂያ መልዕክቶች ውስጥ አሳይ',
'tog-shownumberswatching' => 'የሚከታተሉ ተጠቃሚዎችን ቁጥር አሳይ',
+'tog-oldsig' => ' የቀድሞው ፊርማ ቅደመ እይታ',
'tog-fancysig' => 'ጥሬ ፊርማ (ያለራስገዝ ማያያዣ)',
'tog-externaleditor' => 'በቀዳሚነት ውጪያዊ አራሚን ተጠቀም',
'tog-externaldiff' => 'በቀዳሚነት የውጭ ልዩነት-ማሳያን ተጠቀም',
@@ -150,7 +156,7 @@ $messages = array(
'category-media-header' => 'በመደቡ «$1» የተገኙ ፋይሎች፦',
'category-empty' => 'ይህ መደብ አሁን ባዶ ነው።',
'hidden-categories' => '{{PLURAL:$1|የተደበቀ መደብ|የተደበቁ መደቦች}}',
-'hidden-category-category' => 'የተደበቁ መደቦች', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'የተደበቁ መደቦች',
'category-subcat-count' => '{{PLURAL:$2|በዚሁ መደብ ውስጥ አንድ ንዑስ-መደብ አለ|በዚሁ መደብ ውስጥ {{PLURAL:$1|የሚከተለው ንዕስ-መደብ አለ|የሚከተሉት $1 ንዑስ-መደቦች አሉ}} (በጠቅላላም ከነስውር መደቦች $2 አሉ)}}፦',
'category-subcat-count-limited' => 'በዚሁ መደብ ውስጥ {{PLURAL:$1|የሚከተለው ንዑስ መደብ አለ| የሚከተሉት $1 ንዑስ መደቦች አሉ}}፦',
'category-article-count' => '{{PLURAL:$2|ይኸው መደብ የሚከተለውን መጣጥፍ ብቻ አለው።|በዚሁ መደብ ውስጥ (ከ$2 በጠቅላላ) {{PLURAL:$1|የሚከተለው መጣጥፍ አለ።|የሚከተሉት $1 መጣጥፎች አሉ።}}}}',
@@ -168,10 +174,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'ስለ',
-'article' => 'መጣጥፍ',
-'newwindow' => '(ባዲስ መስኮት ውስጥ ይከፈታል።)',
-'cancel' => 'ሰርዝ',
+'about' => 'ስለ',
+'article' => 'መጣጥፍ',
+'newwindow' => '(ባዲስ መስኮት ውስጥ ይከፈታል።)',
+'cancel' => 'ሰርዝ',
+'moredotdotdot' => 'ተጨማሪ...',
+'mypage' => 'የኔ ገጽ',
+'mytalk' => 'የኔ ውይይት',
+'anontalk' => 'ውይይት ለዚሁ ቁ. አድራሻ',
+'navigation' => 'መቃኘት',
+'and' => '&#32;እና',
+
+# Cologne Blue skin
'qbfind' => 'አግኝ',
'qbbrowse' => 'ቃኝ',
'qbedit' => 'አርም',
@@ -179,15 +193,20 @@ $messages = array(
'qbpageinfo' => 'አግባብ',
'qbmyoptions' => 'የኔ ገጾች',
'qbspecialpages' => 'ልዩ ገጾች',
-'moredotdotdot' => 'ተጨማሪ...',
-'mypage' => 'የኔ ገጽ',
-'mytalk' => 'የኔ ውይይት',
-'anontalk' => 'ውይይት ለዚሁ ቁ. አድራሻ',
-'navigation' => 'መቃኘት',
-'and' => '&#32;እና',
-
-# Metadata in edit box
-'metadata_help' => 'ተጨማሪ መረጃ:',
+'faq' => 'ብጊየጥ (ብዙ ጊዜ የሚጠየቁ ጥያቀዎች)',
+'faqpage' => 'Project:ብጊየጥ',
+
+# Vector skin
+'vector-action-addsection' => 'ርዕስ ጨምር',
+'vector-action-delete' => 'አጥፋ',
+'vector-namespace-category' => 'መደብ',
+'vector-namespace-image' => 'ፋይል',
+'vector-namespace-talk' => 'ውይይት',
+'vector-namespace-user' => 'የተጠቃሚው ገጽ',
+'vector-view-create' => 'አዲስ ፍጠር',
+'vector-view-edit' => 'አርም',
+'vector-view-history' => ' ታሪኩን አሳይ',
+'vector-view-view' => ' የተነበበ',
'errorpagetitle' => 'ስህተት',
'returnto' => '(ወደ $1 ለመመለስ)',
@@ -237,18 +256,21 @@ $messages = array(
'otherlanguages' => 'በሌሎች ቋንቋዎች',
'redirectedfrom' => '(ከ$1 የተዛወረ)',
'redirectpagesub' => 'መምሪያ መንገድ',
-'lastmodifiedat' => 'ይህ ገጽ መጨረሻ የተቀየረው እ.ኣ.አ በ$2፣ $1 ዓ.ም. ነበር።', # $1 date, $2 time
+'lastmodifiedat' => 'ይህ ገጽ መጨረሻ የተቀየረው እ.ኣ.አ በ$2፣ $1 ዓ.ም. ነበር።',
'viewcount' => 'ይህ ገጽ {{PLURAL:$1|አንዴ|$1 ጊዜ}} ታይቷል።',
'protectedpage' => 'የተቆለፈ ገጽ',
'jumpto' => 'ዘልለው ለመሔድ፦',
'jumptonavigation' => 'የማውጫ ቁልፎች',
'jumptosearch' => 'ፍለጋ',
+'view-pool-error' => 'ይቅቅርታ፣ በአሁኑ ወቅት ብዙ ተጠቃሚዎች ገፁን ለማየት እየሞከሩ ስለሆነ ሰርቨሩ ላይ መጨናነቅ ተፈጥሯል
+ስለዚህ እባክዎን ትንሽ ቆይተው በድጋሚ ይዎክሩ።
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'ስለ {{SITENAME}}',
'aboutpage' => 'Project:ስለ',
'copyright' => 'ይዘቱ በ$1 ሥር ይገኛል።',
-'copyrightpagename' => '{{SITENAME}} የቅጂ መብት',
'copyrightpage' => '{{ns:project}}:የማብዛት መብት ደንብ',
'currentevents' => 'ወቅታዊ ጉዳዮች',
'currentevents-url' => 'Project:ወቅታዊ ጉዳዮች',
@@ -256,8 +278,6 @@ $messages = array(
'disclaimerpage' => 'Project:አጠቃላይ የሕግ ነጥቦች',
'edithelp' => 'የማረም መመሪያ',
'edithelppage' => 'Help:የማዘጋጀት እርዳታ',
-'faq' => 'ብጊየጥ (ብዙ ጊዜ የሚጠየቁ ጥያቀዎች)',
-'faqpage' => 'Project:ብጊየጥ',
'helppage' => 'Help:ይዞታ',
'mainpage' => 'ዋናው ገጽ',
'mainpage-description' => 'ዋና ገጽ',
@@ -326,10 +346,6 @@ $messages = array(
'databaseerror' => 'የመረጃ-ቤት ስህተት',
'dberrortext' => 'የመረጃ-ቤት ጥያቄ ስዋሰው ስህተት ሆኗል። ይህ ምናልባት በሶፍትዌሩ ወስጥ ያለ ተውሳክ ሊጠቆም ይችላል። መጨረሻ የተሞከረው መረጃ-ቤት ጥያቄ <blockquote><tt>$1</tt></blockquote> ከተግባሩ «<tt>$2</tt>» ውስጥ ነበረ። MySQL ስህተት «<tt>$3: $4</tt>» መለሰ።',
'dberrortextcl' => 'የመረጃ-ቤት ጥያቄ ስዋሰው ስህተት ሆኗል። መጨረሻ የተሞከረው መረጃ-ቤት ጥያቄ <blockquote><tt>$1</tt></blockquote> ከተግባሩ «<tt>$2</tt>» ውስጥ ነበረ። MySQL ስህተት «<tt>$3: $4</tt>» መለሰ።',
-'noconnect' => 'ይቅርታ! ይህ ዊኪ አሁን የተግባር ችግር ስላጋጠመው የመረጃ-ቤቱን ሰርቨር ሊያገናኝ አይችልም። <br />
-$1',
-'nodb' => 'መረጃ-ቤት $1 ለመምረጥ አልተቻለም',
-'cachederror' => 'የሚከተለው ለተጠየቀው ገጽ የቆጠበው ቅጂ ሆኖ ምናልባት የታደሠ አይሆንም።',
'laggedslavemode' => 'ማስጠንቀቂያ፦ ምናልባት የቅርብ ለውጦች በገጹ ላይ አይታዩም።',
'readonly' => 'መረጃ-ቤት ተቆልፏል',
'enterlockreason' => 'የመቆለፉን ምክንያትና የሚያልቅበትን ሰዓት (በግምት) ይጻፉ።',
@@ -379,7 +395,6 @@ $2",
'virus-unknownscanner' => 'ያልታወቀ antivirus:',
# Login and logout pages
-'logouttitle' => 'የአባል መውጫ',
'logouttext' => "'''አሁን ወጥተዋል።'''
አሁንም በቁጥር መታወቂያዎ ማዘጋጀት ይቻላል። ወይም ደግሞ እንደገና በብዕር ስምዎ መግባት ይችላሉ።
@@ -387,7 +402,6 @@ $2",
'welcomecreation' => '== ሰላምታ፣ $1! ==
የብዕር ስምዎ ተፈጥሯል። ምርጫዎችዎን ለማስተካከል ይችላሉ።',
-'loginpagetitle' => 'የአባል መግቢያ',
'yourname' => 'Username / የብዕር ስም:',
'yourpassword' => 'Password / መግቢያ ቃል',
'yourpasswordagain' => 'መግቢያ ቃልዎን ዳግመኛ ይስጡ',
@@ -409,24 +423,7 @@ $2",
'createaccountmail' => 'በኢ-ሜል',
'badretype' => 'የጻፉት መግቢያ ቃሎች አይስማሙም።',
'userexists' => 'ይህ ብዕር ስም አሁን ይኖራል። እባክዎ፣ ሌላ ብዕር ስም ይምረጡ።',
-'youremail' => 'ኢ-ሜል *',
-'username' => 'የብዕር ስም:',
-'uid' => 'የገባበት ቁ.: #',
-'prefs-memberingroups' => 'ተጠቃሚው {{PLURAL:$1|ያለበት ስብስባ|ያለባቸው ስብስባዎች}}፦',
-'yourrealname' => 'ዕውነተኛ ስም፦',
-'yourlanguage' => 'ቋንቋ',
-'yournick' => 'ቁልምጫ ስም (ለፊርማ)',
-'badsig' => 'ትክክለኛ ያልሆነ ጥሬ ፊርማ፤ HTML ተመልከት።',
-'badsiglength' => 'ያ ቁልምጫ ስም ከመጠን በላይ ይረዝማል፤ ከ$1 ፊደል በታች መሆን አለበት።',
-'yourgender' => 'ሥርዓተ ጾታ',
-'gender-unknown' => ' አታምር',
-'gender-male' => 'ወንድ',
-'gender-female' => ' ሴት',
-'email' => 'ኢ-ሜል',
-'prefs-help-realname' => 'ዕውነተኛ ስምዎን መግለጽ አስፈላጊነት አይደለም። ለመግለጽ ከመረጡ ለሥራዎ ደራሲነቱን ለማስታወቅ ይጠቅማል።',
'loginerror' => 'የመግባት ስኅተት',
-'prefs-help-email' => 'ኢሜል አድራሻን ማቅረብዎ አስፈላጊ አይደለም። ቢያቅርቡት ሌሎች አባላት አድራሻውን ሳያውቁ በፕሮግራሙ አማካኝነት ሊገናኙዎት ተቻለ።',
-'prefs-help-email-required' => 'የኢ-ሜል አድራሻ ያስፈልጋል።',
'nocookiesnew' => 'ብዕር ስም ተፈጠረ፣ እርስዎ ግን ገና አልገቡም። በ{{SITENAME}} ተጠቃሚዎች ለመግባት የቃኚ-ማስታወሻ (cookie) ይጠቀማል። በርስዎ ኮምፒውተር ግን የቃኚ-ማስታወሻ እንዳይሠራ ተደርጓል። እባክዎ እንዲሠራ ያድርጉና በአዲስ ብዕር ስምና መግቢያ ቃልዎ ይግቡ።።',
'nocookieslogin' => 'በ{{SITENAME}} ተጠቃሚዎች ለመግባት የቃኚ-ማስታወሻ (cookie) ይጠቀማል። በርስዎ ኮምፒውተር ግን የቃኚ-ማስታወሻ እንዳይሠራ ተደርጓል። እባክዎ እንዲሠራ ያድርጉና እንደገና ይሞክሩ።',
'noname' => 'የተወሰነው ብዕር ስም ትክክለኛ አይደለም።',
@@ -475,7 +472,6 @@ $2",
'retypenew' => 'አዲስ መግቢያ ቃል ዳግመኛ',
'resetpass_submit' => 'መግቢያ ቃል ለመቀየርና ለመግባት',
'resetpass_success' => 'የመግቢያ ቃልዎ መቀየሩ ተከናወነ! አሁን መግባት ይደረግልዎታል......',
-'resetpass_bad_temporary' => 'ትክክለኛ ያልሆነ ጊዜያዊ መግቢያ ቃል። ምናልባት ከዚህ በፊት መግቢያ ቃልዎን በመከናወን ቀየሩ፤ ወይም አዲስ ጊዜያዊ መግቢያ ቃል ጠይቀዋል።',
'resetpass_forbidden' => 'በ{{SITENAME}} የመግቢያ ቃል መቀየር አይቻልም።',
'resetpass-no-info' => 'ይህንን ገጽ በቀጥታ ለማግኘት አስቀድሞ መግባት ያስፈልጋል።',
'resetpass-submit-loggedin' => 'ቃልዎ ይቀየር',
@@ -547,7 +543,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'blockededitsource' => "በ'''$1''' ላይ '''የእርስዎ ለውጦች''' ጽሕፈት ከዚህ ታች ይታያሉ፦",
'whitelistedittitle' => 'ለማዘጋጀት መግባት አስቀድሞ ያስፈልጋል',
'whitelistedittext' => 'ገጾችን ለማዘጋጀት $1 አስቀድሞ ያስፈልግዎታል።',
-'confirmedittitle' => 'ለማዘጋጀት የኢ-ሜል ማረጋገጫ ያስፈልጋል።',
'confirmedittext' => 'ገጽ ማዘጋጀት ሳይችሉ፣ አስቀድመው የኢ-ሜል አድራሻዎን ማረጋገጥ አለብዎት። እባክዎ፣ በ[[Special:Preferences|ምርጫዎችዎ]] በኩል ኢ-ሜል አድራሻዎን ያረጋግጡ።',
'nosuchsectiontitle' => 'የማይኖር ክፍል',
'nosuchsectiontext' => 'የማይኖር ክፍል ለማዘጋጀት ሞክረዋል።',
@@ -563,7 +558,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'anontalkpagetext' => "----''ይኸው ገጽ ገና ያልገባ ወይም ብዕር ስም የሌለው ተጠቃሚ ውይይት ገጽ ነው። መታወቂያው በ[[ቁጥር አድራሻ]] እንዲሆን ያስፈልጋል። አንዳንዴ ግን አንድ የቁጥር አድራሻ በሁለት ወይም በብዙ ተጠቃሚዎች የጋራ ሊሆን ይችላል። ስለዚህ ለርስዎ የማይገባ ውይይት እንዳይደርስልዎ፣ [[Special:UserLogin|«መግቢያ»]] በመጫን የብዕር ስም ለማውጣት ይችላሉ።''",
'noarticletext' => 'በአሁኑ ወቅት በዚህ ገጽ ላይ ጽሑፍ የለም፤ ነገር ግን በሌሎች ገጾች ላይ [[Special:Search/{{PAGENAME}}|ይህን አርዕስት መፈለግ]]፣ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ከርዕሱ ጋር የተዛመዱ መዝገቦችን መፈልግ]፣ ወይም [{{fullurl:{{FULLPAGENAME}}|action=edit}} አዲስ ገፅ ሊያዘጋጁ] ይችላሉ።',
'userpage-userdoesnotexist' => 'የብዕር ስም «$1» አልተመዘገበም። እባክዎ ይህን ገጽ ለመፍጠር/ ለማስተካከል የፈለጉ እንደ ሆነ ያረጋግጡ።',
-'usercssjsyoucanpreview' => "'''ምክር፦''' ሳይቆጠብ አዲስ CSS/JSዎን ለመሞከር 'ቅድመ እይታ' የሚለውን ይጫኑ።",
+'usercssyoucanpreview' => "'''ምክር፦''' ሳይቆጠብ አዲስ CSSዎን ለመሞከር 'ቅድመ እይታ' የሚለውን ይጫኑ።",
+'userjsyoucanpreview' => "'''ምክር፦''' ሳይቆጠብ አዲስ JSዎን ለመሞከር 'ቅድመ እይታ' የሚለውን ይጫኑ።",
'usercsspreview' => "'''ማስታወሻ፦ CSS-ዎን ለሙከራ ብቻ እያዩ ነው፤ ገና አልተቆጠበም!'''",
'userjspreview' => "'''ማስታወሻ፦ JavaScriptዎን ለሙከራ ብቻ እያዩ ነው፤ ገና አልተቆጠበም!'''",
'userinvalidcssjstitle' => "'''ማስጠንቀቂያ፦''' «$1» የሚባል መልክ የለም። ልዩ .css እና .js ገጾች በትንንሽ እንግሊዝኛ ፊደል መጀመር እንዳለባቸው ያስታውሱ። ለምሳሌ፦ {{ns:user}}:Foo/monobook.css ልክ ነው እንጂ {{ns:user}}:Foo/Monobook.css አይደለም።",
@@ -598,9 +594,9 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'semiprotectedpagewarning' => "'''ማስታወቂያ፦''' ይኸው ገጽ ከቋሚ አዛጋጆች በተቀር በማንም እንዳይለወጥ ተቆልፏል።",
'cascadeprotectedwarning' => "'''ማስጠንቀቂያ፦''' ይህ ገጽ በመጋቢ ብቻ እንዲታረም ተቆልፏል። ምክንያቱም {{PLURAL:$1|በሚከተለው በውስጡ የሚያቆልፍ ገጽ|በሚከተሉ በውስጡ ይሚያቆልፉ ገጾች}} ውስጥ ይገኛል።",
'titleprotectedwarning' => "'''ማስጠንቀቂያ፦ ይህ ገጽ አንዳንድ ተጠቃሚ ብቻ ሊፈጠር እንዲችል ተቆልፏል።'''",
-'templatesused' => 'በዚሁ ገጽ ላይ የሚገኙት መለጠፊያዎች እነዚህ ናቸው፦',
-'templatesusedpreview' => 'በዚሁ ቅድመ-እይታ የሚገኙት መልጠፊያዎች እነዚህ ናቸው፦',
-'templatesusedsection' => 'በዚሁ ክፍል የተጠቀሙት መልጠፊያዎች፦',
+'templatesused' => '{{PLURAL:$1|ምሳሌዎች|ምሳሌዎች}} used on this page:',
+'templatesusedpreview' => 'ለዚህ ገፅ የሚሆኑ {{PLURAL:$1|ምሳሌ|ምሳሌዎች}} :',
+'templatesusedsection' => 'በዚሁ ክፍል የተጠቀሙት መለጠፊያዎች፦',
'template-protected' => '(የተቆለፈ)',
'template-semiprotected' => '(በከፊል የተቆለፈ)',
'hiddencategories' => 'ይህ ገጽ በ{{PLURAL:$1|1 የተደበቀ መደብ|$1 የተደበቁ መድቦች}} ውስጥ ይገኛል።',
@@ -610,14 +606,13 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'permissionserrors' => 'የፈቃድ ስሕተቶች',
'permissionserrorstext' => 'ያ አድራጎት አይቻልም - {{PLURAL:$1|ምክንያቱም|ምክንያቶቹም}}፦',
'permissionserrorstext-withaction' => '$2 አልተፈቀዱም፤ {{PLURAL:$1|ምክንያቱም|ምክንያቱም}}:',
-'recreate-deleted-warn' => ":<strong><big>'''ማስጠንቀቂያ፦ ይኸው አርእስት ከዚህ በፊት የጠፋ ገጽ ነው!'''</big></strong>
+'recreate-moveddeleted-warn' => ":<strong>'''ማስጠንቀቂያ፦ ይኸው አርእስት ከዚህ በፊት የጠፋ ገጽ ነው!'''</strong>
*እባክዎ፥ ገጹ እንደገና እንዲፈጠር የሚገባ መሆኑን ያረጋግጡ።
*የገጹ መጥፋት ዝርዝር ከዚህ ታች ይታያል።",
-'deleted-notice' => 'ይኸው ገጽ ከዚህ በፊት የጠፋ ነው።
+'moveddeleted-notice' => 'ይኸው ገጽ ከዚህ በፊት የጠፋ ነው።
የገጹ መጥፋት ዝርዝር ከዚህ ታች ይታያል።',
-'deletelog-fulllog' => 'ሙሉ መዝገብ ለማየት',
'edit-hook-aborted' => 'ለውጡ በሜንጦ ተቋረጠ።
ምንም ምክንያት አልሰጠም።',
'edit-gone-missing' => 'ገጹን ማሳደስ አልተቻለም። እንደ ጠፋ ይመስላል።',
@@ -644,7 +639,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'currentrev' => 'የአሁኑ እትም',
'currentrev-asof' => 'በ$1 የታተመው ያሁኑኑ እትም',
'revisionasof' => 'እትም በ$1',
-'revision-info' => 'የ$1 ዕትም (ከ$2 ተዘጋጅቶ)', # Additionally available: $3: revision id
+'revision-info' => 'የ$1 ዕትም (ከ$2 ተዘጋጅቶ)',
'previousrevision' => '← የፊተኛው እትም',
'nextrevision' => 'የሚከተለው እትም →',
'currentrevisionlink' => '«የአሁኑን እትም ለመመልከት»',
@@ -655,7 +650,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'page_last' => 'ኋለኞች',
'histlegend' => "ከ2 እትሞች መካከል ልዩነቶቹን ለመናበብ፦ በ2 ክብ ነገሮች ውስጥ ምልክት አድርገው «የተመረጡትን እትሞች ለማነፃፀር» የሚለውን ተጭነው የዛኔ በቀጥታ ይሄዳሉ።<br /> መግለጫ፦ (ከአሁን) - ከአሁኑ እትም ያለው ልዩነት፤ (ካለፈው) - ቀጥሎ ከቀደመው እትም ያለው ልዩነት፤<br /> «'''ጥ'''» ማለት ጥቃቅን ለውጥ ነው።",
'history-fieldset-title' => 'የቀደሙት ዕትሞች ፍለጋ',
-'deletedrev' => '[የተደለዘ]',
'histfirst' => 'ቀድመኞች',
'histlast' => 'ኋለኞች',
'historysize' => '($1 byte)',
@@ -664,7 +658,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
# Revision feed
'history-feed-title' => 'የዕትሞች ታሪክ',
'history-feed-description' => 'በዊኪ ላይ የዕትሞች ታሪክ ለዚሁ ገጽ',
-'history-feed-item-nocomment' => '$1 በ$2', # user at time
+'history-feed-item-nocomment' => '$1 በ$2',
'history-feed-empty' => 'የተጠየቀው ገጽ አይኖርም። ምናልባት ከዊኪው ጠፍቷል፣ ወይም ወደ አዲስ ስም ተዛወረ። ለተመሳሳይ አዲስ ገጽ [[Special:Search|ፍለጋ]] ይሞክሩ።',
# Revision deletion
@@ -677,11 +671,11 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'revdelete-selected' => "'''ከ [[:$1]] {{PLURAL:$2|የተመረጡ ዝርያዎች|የተመረጡ ዝርያዎች}}:'''",
'logdelete-selected' => "'''{{PLURAL:$1|የተመረጠ መዝገብ ድርጊት|የተመረጡ መዝገብ ድርጊቶች}}፦'''",
'revdelete-hide-text' => 'የእትሙ ጽሕፈት ይደበቅ',
+'revdelete-hide-image' => 'የፋይሉ ይዞታ ይደበቅ',
'revdelete-hide-name' => 'ድርጊትና ግቡ ይደበቅ',
'revdelete-hide-comment' => 'ማጠቃለያ ይደበቅ',
'revdelete-hide-user' => 'የአዘጋጁ ብዕር ስም ወይም ቁ. አድርሻ ይደበቅ',
'revdelete-suppress' => 'መረጃ ከመጋቢዎችና ከሌሎች ይደበቅ።',
-'revdelete-hide-image' => 'የፋይሉ ይዞታ ይደበቅ',
'revdelete-log' => 'ምክንያቱ፦',
'revdelete-submit' => 'በተመረጠው ዕትም ይደረግ',
'revdel-restore' => 'እይታን ለማስተካከል',
@@ -726,28 +720,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'difference' => '(በ2ቱ እትሞቹ ዘንድ ያለው ልዩነት)',
'lineno' => 'መስመር፡ $1፦',
'compareselectedversions' => 'የተመረጡትን እትሞች ለማነፃፀር',
-'wikicodecomparison' => 'Wikitext ማነፃፀሪያ',
'editundo' => 'ለውጡ ይገለበጥ',
'diff-multi' => '(ከነዚህ 2 እትሞች መካከል {{PLURAL:$1|አንድ ለውጥ ነበር|$1 ለውጦች ነበሩ}}።)',
-'diff-movedto' => 'ወደ $1 ተዛወረ',
-'diff-added' => '$1 ጨመረ',
-'diff-changedto' => 'ወደ $1 ተቀየረ',
-'diff-movedoutof' => 'ከ$1 ተዛወረ',
-'diff-removed' => '$1 አነሣ',
-'diff-changedfrom' => 'ከ$1 ተቀየረ',
-'diff-with' => '&#32;ከነ $1 $2',
-'diff-with-final' => '&#32;እና $1 $2',
-'diff-width' => 'ስፋት',
-'diff-height' => 'ቁመት',
-'diff-blockquote' => "'''ጥቅስ'''",
-'diff-table' => "'''ሰንጠረዥ'''",
-'diff-tr' => "'''ተርታ'''",
-'diff-hr' => "'''አድማሳዊ መስመር'''",
-'diff-dd' => "'''ትርጒም'''",
-'diff-a' => "'''መያያዣ'''",
-'diff-b' => "'''ጉልህ ፊደላት'''",
-'diff-big' => "'''ትልቅ'''",
-'diff-del' => "'''ጠፋ'''",
# Search results
'searchresults' => 'የፍለጋ ውጤቶች',
@@ -755,22 +729,19 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'searchresulttext' => 'በተጨማሪ ስለ ፍለጋዎች ለመረዳት፣ [[{{MediaWiki:Helppage}}]] ያንብቡ።',
'searchsubtitle' => 'እየፈለግህ/ሽ ያለሀው/ሽው \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all ከሱጋር የተያያዙ በሙላ "$1"]])',
'searchsubtitleinvalid' => "ለ'''$1''' ፈለጉ",
-'noexactmatch' => "በ«$1» አርዕስት የሚሰየም መጣጥፍ '''አልተገኘም'''፤ እርሶ ግን [[:$1|ሊፈጥሩት ይችላሉ]]... ።",
-'noexactmatch-nocreate' => "'''«$1» የሚባል ገጽ የለም።'''",
'toomanymatches' => 'ከመጠን በላይ ያሉ ስምምነቶች ተመለሱ፤ እባክዎ ሌላ ጥያቄ ይሞክሩ።',
'titlematches' => 'የሚስማሙ አርዕስቶች',
'notitlematches' => 'የሚስማሙ አርዕስቶች የሉም',
'textmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች',
'notextmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች የሉም',
-'prevn' => 'ፊተኛ $1',
-'nextn' => 'ቀጥሎ $1',
-'viewprevnext' => 'በቁጥር ለማየት፡ ($1) ($2) ($3).',
+'prevn' => 'ፊተኛ {{PLURAL:$1|$1}}',
+'nextn' => 'ቀጥሎ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'በቁጥር ለማየት፡ ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'የፍለጋ ምርጫዎች',
'searchmenu-exists' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ በዚሁ ዊኪ ላይ አለ።'''",
'searchmenu-new' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ ይፈጠር?'''",
'searchhelp-url' => 'Help:ይዞታ',
'searchprofile-articles' => 'ይዞታ ያላቸው መጣጥፎች',
-'searchprofile-articles-and-proj' => 'የይዞታና የመርሃገብሩ ገጾች',
'searchprofile-project' => 'የመርሃግብሩ ገጾች',
'searchprofile-images' => 'ፋይሎች',
'searchprofile-everything' => 'ሁሉም',
@@ -779,7 +750,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'searchprofile-images-tooltip' => 'ለፋይሎች ለመፈለግ',
'searchprofile-everything-tooltip' => 'ይዞታውን ሁሉ (ከነውይይት ገጾች) ለመፈለግ',
'searchprofile-advanced-tooltip' => 'በልዩ ክፍለ-ዊኪዎች ለመፈለግ',
-'prefs-search-nscustom' => 'ልዩ ክፍለዊኪዎች ለመፈለግ፦',
'search-result-size' => '$1 ({{PLURAL:$2|1 ቃል|$2 ቃላት}})',
'search-result-score' => 'ተገቢነት፦ $1%',
'search-redirect' => '(መምሪያ መንገድ $1)',
@@ -795,7 +765,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'searchall' => 'ሁሉ',
'showingresults' => 'ከ ቁ.#<b>$2</b> ጀምሮ እስከ <b>$1</b> ውጤቶች ድረስ ከዚህ በታች ይታያሉ።',
'showingresultsnum' => "ከ#'''$2''' ጀምሮ {{PLURAL:$3|'''1''' ውጤት|'''$3''' ውጤቶች}} ከዚህ ታች ማየት ይቻላል።",
-'showingresultstotal' => "ከዚህ ታች {{PLURAL:$4|ውጤት '''$1''' (ከ '''$3''') ይታያል።|ውጤቶች '''$1 - $2''' ከ '''$3''' ይታያሉ።}}",
'nonefound' => "\"ማስገንዘቢያ\" የተወሰኑ ፍለጋዎች ብቻ በዋናው ስምምነት መሰረት ተፈልገው ይገኛሉ::
ከምትፈልገው ነገር በፊት ''all:''ን በማስገባት ፍለጋህን ደግመህ ሞክር ይህም ሁሉንም የፍለጋ ቦታዎች እንድታዳርስ ይረዳሃል።",
'search-nonefound' => 'ለጥያቄው ምንም የሚስማማ ውጤት አልተገኘም።',
@@ -804,34 +773,30 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'powersearch-ns' => 'በነዚሁ ክፍለ-ዊኪዎች ይፈልግ:',
'powersearch-redir' => 'መምሪያ መንገዶቹም ይዘርዝሩ',
'powersearch-field' => 'ለዚሁ ጽሕፈት ይፈልግ፦',
+'powersearch-toggleall' => ' ሁሉም',
+'powersearch-togglenone' => ' ምንም',
'search-external' => 'አፍአዊ ፍለጋ',
'searchdisabled' => '{{SITENAME}} ፍለጋ አሁን እንዳይሠራ ተደርጓል። ለጊዜው ግን በGoogle ላይ መፈልግ ይችላሉ። የ{{SITENAME}} ይዞታ ማውጫ በዚያ እንዳልታደሰ ማቻሉ ያስታውሱ።',
+# Quickbar
+'qbsettings-none' => ' ምንም',
+'qbsettings-fixedleft' => 'በግራ የተለጠፈ',
+'qbsettings-fixedright' => 'በቀኝ የተለጠፈ',
+'qbsettings-floatingleft' => 'በግራ ተንሳፋፊ',
+'qbsettings-floatingright' => 'በቀኝ ተንሳፋፊ',
+
# Preferences page
'preferences' => 'ምርጫዎች፤',
'mypreferences' => 'ምርጫዎች፤',
'prefs-edits' => 'የለውጦች ቁጥር:',
'prefsnologin' => 'ገና አልገቡም',
-'prefsnologintext' => 'ምርጫዎችዎን ለማስተካከል አስቀድሞ <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} መግባት]</span> ያስፈልግዎታል።',
-'prefsreset' => 'ምርጫዎች ከመቆጠቢያ ታድሰዋል።',
-'qbsettings-none' => ' ምንም',
-'qbsettings-fixedleft' => 'በግራ የተለጠፈ',
-'qbsettings-fixedright' => 'በቀኝ የተለጠፈ',
-'qbsettings-floatingleft' => 'በግራ ተንሳፋፊ',
-'qbsettings-floatingright' => 'በቀኝ ተንሳፋፊ',
+'prefsnologintext' => 'ምርጫዎችዎን ለማስተካከል አስቀድሞ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} መግባት]</span> ያስፈልግዎታል።',
'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
-'skin' => 'የድህረ-ገጽ መልክ',
+'prefs-skin' => 'የድህረ-ገጽ መልክ',
'skin-preview' => 'ቅድመ-ዕይታ',
-'math' => 'የሂሳብ መልክ',
-'dateformat' => 'ያውሮፓ አቆጣጠር ዘመን ሥርዓት',
+'prefs-math' => 'የሂሳብ መልክ',
'datedefault' => 'ግድ የለኝም',
-'datetime' => 'ዘመንና ሰዓት',
-'math_failure' => 'ዘርዛሪው ተሳነው',
-'math_unknown_error' => 'የማይታወቅ ስኅተት',
-'math_unknown_function' => 'የማይታወቅ ተግባር',
-'math_lexing_error' => 'የlexing ስህተት',
-'math_syntax_error' => 'የሰዋሰው ስህተት',
-'math_bad_output' => 'ወደ math ውጤት ዶሴ መጻፍ ወይም መፍጠር አይቻልም',
+'prefs-datetime' => 'ዘመንና ሰዓት',
'prefs-personal' => 'ያባል ዶሴ',
'prefs-rc' => 'የቅርቡ ለውጦች ዝርዝር',
'prefs-watchlist' => 'የሚከታተሉ ገጾች',
@@ -841,9 +806,10 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'prefs-watchlist-edits-max' => '(ከ1,000 ለውጥ በላይ አይሆንም)',
'prefs-misc' => 'ልዩ ልዩ ምርጫዎች',
'prefs-resetpass' => 'መግቢያ ቃል ለመቀየር',
+'prefs-rendering' => ' አቀራረብ',
'saveprefs' => 'ይቆጠብ',
'resetprefs' => 'እንደ በፊቱ ይታደስ',
-'textboxsize' => 'የማዘጋጀት ምርጫዎች',
+'prefs-editing' => 'የማዘጋጀት ምርጫዎች',
'prefs-edit-boxsize' => 'ይህ የማዘጋጀት ሳጥን ስፋት ለመወሰን ነው።',
'rows' => 'በማዘጋጀቱ ሰንጠረዥ ስንት ተርታዎች?',
'columns' => 'ስንት ዓምዶችስ?',
@@ -856,9 +822,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'recentchangescount' => 'በዝርዝርዎ ላይ ስንት ለውጥ ይታይ? (እስከ 500)',
'savedprefs' => 'ምርጫዎችህ ተቆጥበዋል።',
'timezonelegend' => 'የሰዓት ክልል',
-'timezonetext' => '¹ከ Server time (UTC) ያለው ልዩነት (በሰዓቶች ቁጥር) (እንደ ኢትዮጵያ ጊዜ ለማድረግ እንደገና ስድስት ሰዓት ይጨምሩ።)',
'localtime' => 'የክልሉ ሰዓት (Local time)',
-'timezoneselect' => 'የሰዓት ክልል፦',
'timezoneuseoffset' => 'ሌላ (ኦፍ ሴት ለመወሰን)',
'timezoneoffset' => 'ኦፍ ሰት¹',
'servertime' => 'የሰርቨሩ ሰዓት',
@@ -878,10 +842,31 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'prefs-namespaces' => 'ክፍለ-ዊኪዎች',
'defaultns' => 'በመጀመርያው ፍለጋዎ በነዚህ ክፍለ-ዊኪዎች ብቻ ይደረግ:',
'default' => 'ቀዳሚ',
-'files' => 'የስዕሎች መጠን',
+'prefs-files' => 'የስዕሎች መጠን',
+'youremail' => 'ኢ-ሜል *',
+'username' => 'የብዕር ስም:',
+'uid' => 'የገባበት ቁ.: #',
+'prefs-memberingroups' => 'ተጠቃሚው {{PLURAL:$1|ያለበት ስብስባ|ያለባቸው ስብስባዎች}}፦',
+'yourrealname' => 'ዕውነተኛ ስም፦',
+'yourlanguage' => 'ቋንቋ',
+'yournick' => 'ቁልምጫ ስም (ለፊርማ)',
+'badsig' => 'ትክክለኛ ያልሆነ ጥሬ ፊርማ፤ HTML ተመልከት።',
+'badsiglength' => 'ያ ቁልምጫ ስም ከመጠን በላይ ይረዝማል፤ ከ$1 ፊደል በታች መሆን አለበት።',
+'yourgender' => 'ሥርዓተ ጾታ',
+'gender-unknown' => ' አታምር',
+'gender-male' => 'ወንድ',
+'gender-female' => ' ሴት',
+'email' => 'ኢ-ሜል',
+'prefs-help-realname' => 'ዕውነተኛ ስምዎን መግለጽ አስፈላጊነት አይደለም። ለመግለጽ ከመረጡ ለሥራዎ ደራሲነቱን ለማስታወቅ ይጠቅማል።',
+'prefs-help-email' => 'ኢሜል አድራሻን ማቅረብዎ አስፈላጊ አይደለም። ቢያቅርቡት ሌሎች አባላት አድራሻውን ሳያውቁ በፕሮግራሙ አማካኝነት ሊገናኙዎት ተቻለ።',
+'prefs-help-email-required' => 'የኢ-ሜል አድራሻ ያስፈልጋል።',
+'prefs-info' => ' መሰረታዊ መረጃ',
+'prefs-signature' => 'ፊርማ',
+'prefs-dateformat' => ' የቀን ቅርፀት',
+'prefs-display' => 'የማሳያ አማራጮች',
# User rights
-'userrights' => 'የአባል መብቶች ለማስተዳደር', # Not used as normal message but as header for the special page itself
+'userrights' => 'የአባል መብቶች ለማስተዳደር',
'userrights-lookup-user' => 'የ1 አባል ማዕረግ ለማስተዳደር',
'userrights-user-editname' => 'ለዚሁ ብዕር ስም፦',
'editusergroup' => 'የአባሉ ማዕረግ ለማስተካከል',
@@ -988,6 +973,10 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'recentchanges-legend' => 'የቅርብ ለውጥ አማራጮች፦',
'recentchangestext' => 'በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።',
'recentchanges-feed-description' => 'በዚህ ዊኪ ላይ በቅርብ ግዜ የተለወጠውን በዚሁ feed መከታተል ይችላሉ',
+'recentchanges-label-legend' => 'መግለጫ፦ $1።',
+'recentchanges-legend-newpage' => '$1 - አዲስ ገጽ',
+'recentchanges-legend-minor' => '$1 - ጥቃቅን ለውጥ',
+'recentchanges-legend-bot' => '$1 - የቦት (ሎሌ) ለውጥ',
'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)',
@@ -1013,6 +1002,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
# Recent changes linked
'recentchangeslinked' => 'የተዛመዱ ለውጦች',
+'recentchangeslinked-feed' => 'የተዛመዱ ለውጦች',
+'recentchangeslinked-toolbox' => 'የተዛመዱ ለውጦች',
'recentchangeslinked-title' => 'በ«$1» በተዛመዱ ገጾች ቅርብ ለውጦች',
'recentchangeslinked-noresult' => 'በተመለከተው ጊዜ ውስጥ ከዚህ በተያየዙት ገጾች ላይ ምንም ለውጥ አልነበረም።',
'recentchangeslinked-summary' => "ከዚሁ ገጽ የተያየዙት ሌሎች ጽሑፎች ቅርብ ለውጦች ከታች ይዘረዝራሉ።
@@ -1024,7 +1015,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
# Upload
'upload' => 'ፋይል / ሥዕል ለመላክ',
'uploadbtn' => 'ፋይሉ ይላክ',
-'reupload' => 'እንደገና ለመላክ',
'reuploaddesc' => 'ለመሰረዝና ወደ መላኪያ ማመልከቻ ለመመለስ',
'uploadnologin' => 'ገና አልገቡም',
'uploadnologintext' => 'ፋይል ለመላክ አስቀድሞ [[Special:UserLogin|መግባት]] ያስፈልግዎታል።',
@@ -1065,7 +1055,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
* የሚላክ ፋይል ስም፦ '''<tt>[[:$1]]</tt>'''
* የሚኖር (የቆየው) ፋይል ስም፦ '''<tt>[[:$2]]</tt>'''
እባክዎ ሌላ ስም ይምረጡ።",
-'fileexists-thumb' => "<center>'''የሚኖር ፋይል'''</center>",
'fileexists-thumbnail-yes' => "ፋይሉ የተቀነሰ መጠን ያለበት ስዕል ''(ናሙና)'' እንደ ሆነ ይመስላል። [[$1|thumb]]
እባክዎ ፋይሉን '''<tt>[[:$1]]</tt>''' ይመለከቱ።
ያው ፋይል ለዚሁ ፋይል አንድ አይነት በኦሪጂናሉ መጠን ቢሆን ኖሮ፣ ተጨማሪ ናሙና መላክ አያስፈልግም።",
@@ -1081,7 +1070,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'overwroteimage' => 'የ«[[$1]]» አዲስ ዕትም ላከ',
'uploaddisabled' => 'ፋይል መላክ አይቻልም',
'uploaddisabledtext' => 'ፋይል መላክ በዚህ ዊኪ አይቻልም።',
-'uploadcorrupt' => 'ይህ ፋይል ብልሹ ነው፤ ወይም ትክክለኛ ያልሆነ ቅጥያ አለው። እባክዎ ፋይሉን ተመልክተው እንደገና ይላኩት።',
'uploadvirus' => 'ፋይሉ ቫይረስ አለበት! ዝርዝር፦ $1',
'sourcefilename' => 'የቆየው የፋይሉ ስም፦',
'destfilename' => 'የፋይሉ አዲስ ስም፦',
@@ -1109,6 +1097,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
ምናልባትም በሌላ ጊዜ ትራፊኩ ይቀነሳል።',
'license' => 'የፈቃድ አይነት፦',
+'license-header' => 'የፈቃድ አይነት፦',
'nolicense' => 'ምንም አልተመረጠም',
'license-nopreview' => '(ቅድመ-ዕይታ አይገኝም)',
'upload_source_url' => ' (ትክክለኛ፣ በግልጽ የሚገኝ URL)',
@@ -1125,6 +1114,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'listfiles_description' => 'ማጠቃለያ',
# File description page
+'file-anchor-link' => 'ፋይል',
'filehist' => 'የፋይሉ ታሪክ',
'filehist-help' => 'የቀድሞው ዕትም ካለ ቀን/ሰዓቱን በመጫን መመልከት ይቻላል።',
'filehist-deleteall' => 'ሁሉን ለማጥፋት',
@@ -1145,12 +1135,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'morelinkstoimage' => 'ለዚህ ፋይል [[Special:WhatLinksHere/$1|ተጨማሪ መያያዣዎችን]] ለማየት።',
'redirectstofile' => 'ለዚህ ፋይል {{PLURAL:$1|የሚከተለው ፋይል መምሪያ መንገድ አለ|የሚከተሉት $1 ፋይሎች መምሪያ መንገዶች አሉ}}፦',
'duplicatesoffile' => '{{PLURAL:$1|የሚከተለው ፋይል የዚህ ፋይል ቅጂ ነው|የሚከተሉት $1 ፋይሎች የዚሁ ፋይል ቅጂዎች ናቸው}}፦',
-'sharedupload' => 'ይህ ፋይል ከጋራ ምንጭ ($1) የተቀሰመ ነው። በማንኛውም ዊኪ ላይ ሊጠቅም ይቻላል።', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'በተጨማሪ ለመረዳት $1 ይዩ።',
-'shareduploadwiki-desc' => 'በዚያ በ$1 የሚታየው መግለጫ እንዲህ ይላል፦',
-'shareduploadwiki-linktext' => 'ፋይል መግለጫ ገጹ',
-'noimage' => 'በዚህ ስም የሚታወቅ ፋይል የለም፤ እርስዎ ግን $1 ይችላሉ።',
-'noimage-linktext' => 'ሊልኩት',
+'sharedupload' => 'ይህ ፋይል ከጋራ ምንጭ ($1) የተቀሰመ ነው። በማንኛውም ዊኪ ላይ ሊጠቅም ይቻላል።',
'uploadnewversion-linktext' => 'ለዚሁ ፋይል አዲስ ዕትም ለመላክ',
# File reversion
@@ -1231,8 +1216,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'brokenredirects' => 'ሰባራ መምሪያ መንገዶች',
'brokenredirectstext' => 'እነዚህ መምሪያ መንገዶች ወደማይኖር ጽሑፍ ይመራሉ።',
-'brokenredirects-edit' => '(ለማስተካከል)',
-'brokenredirects-delete' => '(ለማጥፋት)',
+'brokenredirects-edit' => 'ለማስተካከል',
+'brokenredirects-delete' => 'ለማጥፋት',
'withoutinterwiki' => 'በሌሎች ቋንቋዎች ያልተያያዙ',
'withoutinterwiki-summary' => 'እነዚህ ጽሑፎች «በሌሎች ቋንቋዎች» ሥር ወደሆኑት ሌሎች ትርጉሞች ገና አልተያያዙም።',
@@ -1443,7 +1428,7 @@ $NEWPAGE
ከክብር ጋር፣ የ{{SITENAME}} ኢሜል-ማስታወቂያ መርሃግብር።
--
-የሚከታተሉት ገጾች ዝርዝር ለመቀየር፣ {{fullurl:{{ns:special}}:Watchlist/edit}} ይጎበኙ።
+የሚከታተሉት ገጾች ዝርዝር ለመቀየር፣ {{fullurl:{{#special:Watchlist}}/edit}} ይጎበኙ።
በተጨማሪ ለመረዳት፦
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1488,8 +1473,8 @@ $NEWPAGE
'alreadyrolled' => 'የ[[:$1]] መጨረሻ ለውጥ በ[[User:$2|$2]] ([[User talk:$2|ውይይት]]) መገልበት አይቻልም፤ ሌላ ሰው አሁን ገጹን መልሶታል።
መጨረሻው ለውጥ በ[[User:$3|$3]] ([[User talk:$3|ውይይት]]) ነበረ።',
-'editcomment' => "ማጠቃለያው፦ «''$1''» ነበረ።", # only shown if there is an edit comment
-'revertpage' => 'የ$2ን ለውጦች ወደ $1 እትም መለሰ።', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "ማጠቃለያው፦ «''$1''» ነበረ።",
+'revertpage' => 'የ$2ን ለውጦች ወደ $1 እትም መለሰ።',
'rollback-success' => 'የ$1 ለውጦች ተገለበጡ፣ ወደ $2 ዕትም ተመልሷል።',
# Protect
@@ -1506,7 +1491,6 @@ $NEWPAGE
'protectexpiry' => 'የሚያልቅበት ግዜ፦',
'protect_expiry_invalid' => "የተሰጠው 'የሚያልቅበት ጊዜ' ልክ አይደለም።",
'protect_expiry_old' => "የተሰጠው 'የሚያልቅበት ጊዜ' ባለፈው ግዜ ነበር።",
-'protect-unchain' => 'ገጹን የማዛወር ፈቃዶች ለመፍታት',
'protect-text' => "እዚህ ለገጹ «'''<nowiki>$1</nowiki>'''» የመቆለፍ ደረጃ መመልከት ወይም መቀይር ይችላሉ።",
'protect-locked-blocked' => "ማገጃ እያለብዎት የመቆለፍ ደረጃ ለመቀየር አይችሉም። ለገጹ '''$1''' የአሁኑኑ ደረጃ እንዲህ ነው፦",
'protect-locked-dblock' => "መረጃ-ቤቱ እራሱ አሁን ስለሚቆለፍ፣ የገጽ መቆለፍ ደረጃ ሊቀየር አይችልም። ለገጹ '''$1''' የአሁኑኑ ደረጃ እንዲህ ነው፦",
@@ -1527,7 +1511,7 @@ $NEWPAGE
'protect-otherreason' => 'ሌላ/ተጨማሪ ምክንያት፦',
'protect-otherreason-op' => 'ሌላ/ተጨማሪ ምክንያት',
'protect-edit-reasonlist' => "'ተራ የመቆለፍ ምክንያቶች' ለማዘጋጀት",
-'protect-expiry-options' => '2 ሰዓቶች:2 hours,1 ቀን:1 day,1 ሳምንት:1 week,2 ሳምንት:2 weeks,1 ወር:1 month,3 ወር:3 months,6 ወር:6 months,1 አመት:1 year,ዘላለም:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ሰዓቶች:2 hours,1 ቀን:1 day,1 ሳምንት:1 week,2 ሳምንት:2 weeks,1 ወር:1 month,3 ወር:3 months,6 ወር:6 months,1 አመት:1 year,ዘላለም:infinite',
'restriction-type' => 'ፈቃድ፦',
'restriction-level' => 'የመቆለፍ ደረጃ፦',
'minimum-size' => 'ቢያንስ',
@@ -1589,7 +1573,7 @@ $1',
'contributions-title' => 'የ$1 አስተዋጽኦች',
'mycontris' => 'የኔ አስተዋጽኦች፤',
'contribsub2' => 'ለ $1 ($2)',
-'nocontribs' => 'ምንም አልተገኘም።', # Optional parameter: $1 is the user name
+'nocontribs' => 'ምንም አልተገኘም።',
'uctop' => '(ላይኛ)',
'month' => 'እስከዚህ ወር ድረስ፦',
'year' => 'እስከዚህ አመት (እ.ኤ.አ.) ድረስ፡-',
@@ -1598,6 +1582,8 @@ $1',
'sp-contributions-newbies-sub' => '(ለአዳዲስ ተጠቃሚዎች)',
'sp-contributions-newbies-title' => 'የአዳዲስ ተጠቃሚዎች አስተዋጽኦች',
'sp-contributions-blocklog' => 'የማገጃ መዝገብ',
+'sp-contributions-talk' => 'ውይይት',
+'sp-contributions-userrights' => 'የአባል መብቶች ለማስተዳደር',
'sp-contributions-search' => 'የሰውን አስተዋጽኦች ለመፈለግ፦',
'sp-contributions-username' => 'ብዕር ስም ወይም የቁ. አድራሻ፦',
'sp-contributions-submit' => 'ፍለጋ',
@@ -1643,7 +1629,7 @@ $1',
'ipbenableautoblock' => 'በተጠቃሚው መጨረሻ ቁ.# እና ካሁን ወዲያ በሚጠቀመው አድራሻ ላይ ማገጃ ይጣል።',
'ipbsubmit' => 'ማገጃ ለመጣል',
'ipbother' => 'ሌላ የተወሰነ ግዜ፦',
-'ipboptions' => '2 ሰዓቶች:2 hours,1 ቀን:1 day,3 ቀን:3 days,1 ሳምንት:1 week,2 ሳምንት:2 weeks,1 ወር:1 month,3 ወር:3 months,6 ወር:6 months,1 አመት:1 year,ዘላለም:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ሰዓቶች:2 hours,1 ቀን:1 day,3 ቀን:3 days,1 ሳምንት:1 week,2 ሳምንት:2 weeks,1 ወር:1 month,3 ወር:3 months,6 ወር:6 months,1 አመት:1 year,ዘላለም:infinite',
'ipbotheroption' => 'ሌላ',
'ipbotherreason' => 'ሌላ/ተጨማሪ ምክንያት፦',
'badipaddress' => 'የማይሆን የቁ. አድራሻ',
@@ -1667,7 +1653,7 @@ $1',
'ipblocklist-submit' => 'ይፈለግ',
'blocklistline' => '$1 (እ.ኤ.አ.)፦ $2 በ$3 ላይ ማገጃ ጣለ ($4)',
'infiniteblock' => 'መቸም ይማያልቅ',
-'expiringblock' => 'በ$1 እ.ኤ.አ. ያልቃል',
+'expiringblock' => 'በ$1 $2 እ.ኤ.አ. ያልቃል',
'anononlyblock' => 'ያልገቡት የቁ.# ብቻ',
'noautoblockblock' => 'የቀጥታ ማገጃ እንዳይሠራ ተደረገ',
'createaccountblock' => 'ስም ከማውጣት ተከለከለ',
@@ -1680,7 +1666,6 @@ $1',
'change-blocklink' => 'እገዳውን ቀይር',
'contribslink' => 'አስተዋጽኦች',
'blocklogpage' => 'የማገጃ መዝገብ',
-'blocklog-fulllog' => 'ሙሉ የማገጃ መዝገብ',
'blocklogentry' => 'እስከ $2 ድረስ [[$1]] አገዳ $3',
'blocklogtext' => 'ይህ መዝገብ ተጠቃሚዎች መቸም ሲታገዱ ወይም ማገጃ ሲነሣ የሚዘረዝር ነው። ለአሁኑ የታገዱት ሰዎች [[Special:IPBlockList|በአሁኑ ማገጃዎች ዝርዝር]] ይታያሉ።',
'unblocklogentry' => 'የ$1 ማገጃ አነሣ',
@@ -1745,7 +1730,7 @@ $1 አሁን ገና ታግዷል። ዝርዝሩን ማስተካከል ፈለጉ
'move-watch' => 'ይህ ገጽ በተከታተሉት ገጾች ይጨመር',
'movepagebtn' => 'ገጹ ይዛወር',
'pagemovedsub' => 'መዛወሩ ተከናወነ',
-'movepage-moved' => "'''«$1» ወደ «$2» ተዛውሯል'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» ወደ «$2» ተዛውሯል'''",
'articleexists' => 'በዚያ አርዕሥት ሌላ ገጽ አሁን አለ። አለበለዚያ የመረጡት ስም ልክ አይደለም - ሌላ አርእስት ይምረጡ።',
'cantmove-titleprotected' => 'አዲሱ አርዕስት ከመፈጠር ስለተጠበቀ፣ ገጽ ወደዚያው ሥፍራ ለማዛወር አይችሉም።',
'talkexists' => "'''ገጹ ወደ አዲሱ አርዕስት ተዛወረ፤ እንጂ በአዲሱ አርዕስት የቆየ ውይይት ገጽ አስቀድሞ ስለ ኖረ የዚህ ውይይት ገጽ ሊዛወር አልተቻለም። እባክዎ፣ በእጅ ያጋጥሙአቸው።'''",
@@ -1795,8 +1780,6 @@ $1 አሁን ገና ታግዷል። ዝርዝሩን ማስተካከል ፈለጉ
'allmessagestext' => 'በ«MediaWiki» ክፍለ-ዊኪ ያሉት የድረገጽ መልክ መልእክቶች ሙሉ ዝርዝር ይህ ነው።
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ስለ ተዘጋ '''{{ns:special}}:Allmessages''' ሊጠቀም አይችልም።",
-'allmessagesfilter' => 'የመልዕክት ስም ማጣሪያ፦',
-'allmessagesmodified' => 'የተቀየሩ ብቻ ይታዩ',
# Thumbnails
'thumbnail-more' => 'አጎላ',
@@ -1856,6 +1839,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'ይህ ጽሕፈት የሚገኝባቸውን ገጾች ለመፈልግ',
'tooltip-p-logo' => 'ዋና ገጽ',
'tooltip-n-mainpage' => 'ወደ ዋናው ገጽ ለመሔድ',
+'tooltip-n-mainpage-description' => 'ዋናውን ገጽ ተመልከት',
'tooltip-n-portal' => 'ስለ መርሃገብሩ አጠቃቀም አለመረዳት',
'tooltip-n-currentevents' => 'ስለ ወቅታዊ ጉዳዮች / ዜና መረጃ ለማግኘት',
'tooltip-n-recentchanges' => 'በዚሁ ዊኪ ላይ በቅርቡ የተደረጉ ለውጦች',
@@ -1899,7 +1883,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => 'የ{{SITENAME}} ቁ. አድራሻ ተጠቃሚ(ዎች)',
'siteuser' => '{{SITENAME}} ተጠቃሚ $1',
-'lastmodifiedatby' => 'ይህ ገጽ መጨረሻ የተቀየረው $2፣ $1 በ$3 ነበር።', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'ይህ ገጽ መጨረሻ የተቀየረው $2፣ $1 በ$3 ነበር።',
'others' => 'ሌሎች',
'siteusers' => '{{SITENAME}} ተጠቃሚ(ዎች) $1',
@@ -1923,6 +1907,14 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => 'ለዘመናዊ ብራውዘር የተሻለ',
'mw_math_mathml' => 'MathML ከተቻለ (የሙከራ)',
+# Math errors
+'math_failure' => 'ዘርዛሪው ተሳነው',
+'math_unknown_error' => 'የማይታወቅ ስኅተት',
+'math_unknown_function' => 'የማይታወቅ ተግባር',
+'math_lexing_error' => 'የlexing ስህተት',
+'math_syntax_error' => 'የሰዋሰው ስህተት',
+'math_bad_output' => 'ወደ math ውጤት ዶሴ መጻፍ ወይም መፍጠር አይቻልም',
+
# Patrolling
'markaspatrolleddiff' => 'የተሳለፈ ሆኖ ማመልከት',
'markaspatrolledtext' => 'ይህን ገጽ የተመለከተ ሆኖ ለማሳለፍ',
@@ -1990,7 +1982,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'ስፋት',
@@ -2093,10 +2085,10 @@ $1',
'exif-unknowndate' => 'ያልታወቀ ቀን',
-'exif-orientation-1' => 'መደበኛ', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'በአድማሱ ላይ ተገለበጠ', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° የዞረ', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'በዋልታው ላይ ተገለበጠ', # 0th row: bottom; 0th column: left
+'exif-orientation-1' => 'መደበኛ',
+'exif-orientation-2' => 'በአድማሱ ላይ ተገለበጠ',
+'exif-orientation-3' => '180° የዞረ',
+'exif-orientation-4' => 'በዋልታው ላይ ተገለበጠ',
'exif-componentsconfiguration-0' => 'አይኖርም',
@@ -2184,7 +2176,7 @@ $1',
'exif-gpsmeasuremode-2' => '2 አቅጣቻ ያለው መለኪያ',
'exif-gpsmeasuremode-3' => '3 አቅጣቻ ያለው መለኪያ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ኪሎሜትር በየሰዓቱ',
'exif-gpsspeed-m' => 'ማይል (mile) በየሰዓቱ',
'exif-gpsspeed-n' => 'Knot (የመርከብ ፍጥነት መለኪያ)',
@@ -2311,7 +2303,7 @@ $3
'unknown_extension_tag' => 'ያልታወቀ የቅጥያ ምልክት «$1»',
# Special:Version
-'version' => 'ዝርያ', # Not used as normal message but as header for the special page itself
+'version' => 'ዝርያ',
'version-extensions' => 'የተሳኩ ቅጥያዎች',
'version-specialpages' => 'ልዩ ገጾች',
'version-parserhooks' => 'የዘርዛሪ ሜንጦዎች',
@@ -2324,7 +2316,7 @@ $3
'version-skin-extension-functions' => 'የመልክ ቅጥያ ተግባሮች',
'version-hook-name' => 'የሜንጦ ስም',
'version-hook-subscribedby' => 'የተጨመረበት',
-'version-version' => 'ዝርያ',
+'version-version' => '(ዝርያ $1)',
'version-license' => 'ፈቃድ',
'version-software' => 'የተሳካ ሶፍትዌር',
'version-software-product' => 'ሶፍትዌር',
diff --git a/languages/messages/MessagesAn.php b/languages/messages/MessagesAn.php
index 02adbd15..41f9c788 100644
--- a/languages/messages/MessagesAn.php
+++ b/languages/messages/MessagesAn.php
@@ -39,14 +39,13 @@ $namespaceNames = array(
$magicWords = array(
'namespace' => array( '1', 'ESPAZIODENOMBRES', 'NAMESPACE' ),
'namespacee' => array( '1', 'ESPAZIODENOMBRESE', 'NAMESPACEE' ),
- 'img_right' => array( '1', 'dreita', 'right' ),
- 'img_left' => array( '1', 'cucha', 'zurda', 'left' ),
+ 'img_right' => array( '1', 'dreita', 'derecha', 'dcha', 'der', 'right' ),
+ 'img_left' => array( '1', 'cucha', 'zurda', 'izquierda', 'izda', 'izq', 'left' ),
'ns' => array( '0', 'EN:', 'EDN:', 'NS:' ),
- 'displaytitle' => array( '1', 'TÍTOL', 'DISPLAYTITLE' ),
- 'currentversion' => array( '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'CURRENTVERSION' ),
+ 'displaytitle' => array( '1', 'TÍTOL', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ),
+ 'currentversion' => array( '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'CURRENTVERSION' ),
'language' => array( '0', '#LENGUACHE:', '#LUENGA:', '#IDIOMA:', '#LANGUAGE:' ),
'special' => array( '0', 'espezial', 'special' ),
- 'defaultsort' => array( '1', 'ORDENAR:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
);
$specialPageAliases = array(
@@ -148,6 +147,7 @@ $messages = array(
'tog-enotifminoredits' => 'Ninviar-me un correu tamién quan bi haiga edicions menors de pachinas',
'tog-enotifrevealaddr' => 'Fer veyer a mía adreza de correu-e en os correus de notificación',
'tog-shownumberswatching' => "Amostrar o numero d'usuarios que cosiran un articlo",
+'tog-oldsig' => "Vista previa d'a sinyadura:",
'tog-fancysig' => 'Tratar as sinyaduras como wikitexto (sin de vinclo automatico)',
'tog-externaleditor' => "Fer servir l'editor externo por defecto (nomás ta espiertos, cal confegurar o suyo ordenador).",
'tog-externaldiff' => 'Fer servir o visualizador de cambeos externo por defecto (nomás ta espiertos, cal confegurar o suyo ordenador)',
@@ -170,6 +170,13 @@ $messages = array(
'underline-never' => 'Nunca',
'underline-default' => "Confeguración por defecto d'o navegador",
+# Font style option in Special:Preferences
+'editfont-style' => "Tipo de letra de l'aria d'edición:",
+'editfont-default' => "O predeterminau d'o navegador",
+'editfont-monospace' => 'Tipo de letra monoespaciada',
+'editfont-sansserif' => 'Tipo de letra sans-serif',
+'editfont-serif' => 'Tipo de letra Serif',
+
# Dates
'sunday' => 'domingo',
'monday' => 'luns',
@@ -229,7 +236,7 @@ $messages = array(
'category-media-header' => 'Contenius multimedia en a categoría "$1"',
'category-empty' => "''Ista categoría no tiene por agora garra articlo ni conteniu multimedia''",
'hidden-categories' => '{{PLURAL:$1|Categoría amagata|Categorías amagatas}}',
-'hidden-category-category' => 'Categorías amagatas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorías amagatas',
'category-subcat-count' => "{{PLURAL:$2|Ista categoría contiene nomás a siguient subcategoría.|Ista categoría incluye {{PLURAL:$1|a siguient subcategoría|as siguients $1 subcategorías}}, d'un total de $2.}}",
'category-subcat-count-limited' => 'Ista categoría contiene {{PLURAL:$1|a siguient subcategoría|as siguients $1 subcategorías}}.',
'category-article-count' => "{{PLURAL:$2|Ista categoría nomás incluye a pachina siguient.|{{PLURAL:$1|A pachina siguient fa parte|As pachinas siguients fan parte}} d'esta categoría, d'un total de $2.}}",
@@ -237,6 +244,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Ista categoría nomás contiene o fichero siguient.|{{PLURAL:$1|O fichero siguient fa parte|Os $1 fichers siguients fan parte}} d'ista categoría, d'un total de $2.}}",
'category-file-count-limited' => "{{PLURAL:$1|O fichero siguient fa parte|Os $1 fichers siguients fan parte}} d'ista categoría.",
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pachinas indexadas',
+'noindex-category' => 'Pachinas sin indexar',
'mainpagetext' => "'''O programa MediaWiki s'ha instalato correctament.'''",
'mainpagedocfooter' => "Consulta a [http://meta.wikimedia.org/wiki/Help:Contents Guía d'usuario] ta mirar información sobre cómo usar o software wiki.
@@ -247,10 +256,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas cutianas sobre MediaWiki (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correu sobre ta anuncios de MediaWiki]",
-'about' => 'Información sobre',
-'article' => 'Articlo',
-'newwindow' => "(s'ubre en una nueva finestra)",
-'cancel' => 'Cancelar',
+'about' => 'Información sobre',
+'article' => 'Articlo',
+'newwindow' => "(s'ubre en una nueva finestra)",
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Más...',
+'mypage' => 'A mía pachina',
+'mytalk' => 'Pachina de descusión',
+'anontalk' => "Pachina de descusión d'ista IP",
+'navigation' => 'Navego',
+'and' => '&#32;y',
+
+# Cologne Blue skin
'qbfind' => 'Mirar',
'qbbrowse' => 'Navegar',
'qbedit' => 'Editar',
@@ -258,15 +275,35 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'Pachinas propias',
'qbspecialpages' => 'Pachinas especials',
-'moredotdotdot' => 'Más...',
-'mypage' => 'A mía pachina',
-'mytalk' => 'Pachina de descusión',
-'anontalk' => "Pachina de descusión d'ista IP",
-'navigation' => 'Navego',
-'and' => '&#32;y',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'Preguntas freqüents (FAQ)',
+'faqpage' => 'Project:Preguntas freqüents',
+
+# Vector skin
+'vector-action-addsection' => 'Adhibir nueva sección',
+'vector-action-delete' => 'Borrar',
+'vector-action-move' => 'Tresladar',
+'vector-action-protect' => 'Protecher',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Desprotecher',
+'vector-namespace-category' => 'Categoría',
+'vector-namespace-help' => "Pachina d'aduya",
+'vector-namespace-image' => 'Fichero',
+'vector-namespace-main' => 'Pachina',
+'vector-namespace-media' => 'Pachina multimedia',
+'vector-namespace-mediawiki' => 'Mensache',
+'vector-namespace-project' => "Pachina d'o prochecto",
+'vector-namespace-special' => 'Pachina especial',
+'vector-namespace-talk' => 'Discusión',
+'vector-namespace-template' => 'Plantilla',
+'vector-namespace-user' => "Pachina d'usuario",
+'vector-view-create' => 'Creyar',
+'vector-view-edit' => 'Editar',
+'vector-view-history' => "Amostrar l'historial",
+'vector-view-view' => 'Leyer',
+'vector-view-viewsource' => 'Veyer o codigo fuent',
+'actions' => 'Accions',
+'namespaces' => 'Espacios de nombres',
+'variants' => 'Variants',
'errorpagetitle' => 'Error',
'returnto' => 'Tornar ta $1.',
@@ -316,18 +353,22 @@ $messages = array(
'otherlanguages' => 'En atras luengas',
'redirectedfrom' => '(Reendrezato dende $1)',
'redirectpagesub' => 'Pachina reendrezata',
-'lastmodifiedat' => "Zaguera edición d'ista pachina o $1 a las $2.", # $1 date, $2 time
+'lastmodifiedat' => "Zaguera edición d'ista pachina o $1 a las $2.",
'viewcount' => 'Ista pachina ha tenito {{PLURAL:$1|una vesita|$1 vesitas}}.',
'protectedpage' => 'Pachina protechita',
'jumpto' => 'Ir ta:',
'jumptonavigation' => 'navego',
'jumptosearch' => 'busca',
+'view-pool-error' => "Desincuse, os servidors son agora sobrecargaus.
+Masiaus usuarios son mirando d'acceder ta ista pachina.
+Aguarde una mica antes de tornar a acceder ta ista pachina.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Información sobre {{SITENAME}}',
'aboutpage' => 'Project:Sobre',
'copyright' => 'O conteniu ye disponible baixo a licencia $1.',
-'copyrightpagename' => "Dreitos d'autor de {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Dreitos d'autor",
'currentevents' => 'Actualidat',
'currentevents-url' => 'Project:Actualidat',
@@ -335,8 +376,6 @@ $messages = array(
'disclaimerpage' => 'Project:Alvertencias chenerals',
'edithelp' => 'Aduya ta editar pachinas',
'edithelppage' => "Help:Cómo s'edita una pachina",
-'faq' => 'Preguntas freqüents (FAQ)',
-'faqpage' => 'Project:Preguntas freqüents',
'helppage' => 'Help:Aduya',
'mainpage' => 'Portalada',
'mainpage-description' => 'Portalada',
@@ -416,10 +455,6 @@ A zaguera consulta estió:
"$1"
dende adintro d\'a función "$2".
A base de datos retornó a error "$3: $4"',
-'noconnect' => "Agora mesmo, a wiki ye tenendo bellas dificultaz tecnicas, y no se puede contautar con o serbidor d'a base de datos. <br />
-$1",
-'nodb' => 'No se podió trigar a base de datos $1',
-'cachederror' => "Ista ye una copia en caché d'a pachina demandata, y puestar que no siga esbiellata.",
'laggedslavemode' => "Pare cuenta: podrían faltar as zagueras edicions d'ista pachina.",
'readonly' => 'Base de datos bloqueyata',
'enterlockreason' => "Esplique a causa d'o bloqueyo, incluyendo una estimación de quán se producirá o desbloqueyo",
@@ -437,6 +472,8 @@ Por favor, comunique-lo a un [[Special:ListUsers/sysop|almenistrador]] indicando
'readonly_lag' => 'A base de datos ye bloqueyata temporalment entre que os servidors se sincronizan.',
'internalerror' => 'Error interna',
'internalerror_info' => 'Error interna: $1',
+'fileappenderrorread' => 'No s\'ha puesto leyer "$1" durant a inserción.',
+'fileappenderror' => 'No s\'ha puesto adhibir "$1" a "$2".',
'filecopyerror' => 'No s\'ha puesto copiar o fichero "$1" ta "$2".',
'filerenameerror' => 'No s\'ha puesto cambiar o nombre d\'o fichero "$1" a "$2".',
'filedeleteerror' => 'No s\'ha puesto borrar o fichero "$1".',
@@ -446,7 +483,7 @@ Por favor, comunique-lo a un [[Special:ListUsers/sysop|almenistrador]] indicando
'unexpected' => 'Valura no prevista: "$1"="$2".',
'formerror' => 'Error: no se podió ninviar o formulario',
'badarticleerror' => 'Ista acción no se puede no se puede reyalizar en ista pachina.',
-'cannotdelete' => "No se podió borrar a pachina u l'archibo espezificato. (Puestar que belatro usuario l'aiga borrato dinantes)",
+'cannotdelete' => 'No s\'ha puesto borrar pachina u fichero "$1". Talment belatro usuario l\'ha borrato dinantes.',
'badtitle' => 'Títol incorrecto',
'badtitletext' => "O títol d'a pachina demandata ye buedo, incorrecto, u tiene un vinclo interwiki mal feito. Puede contener uno u más caracters que no se pueden fer servir en títols.",
'perfcached' => 'Os datos que siguen son en caché, y podrían no estar esviellatos:',
@@ -477,14 +514,12 @@ A razón data ye ''$2''.",
'virus-unknownscanner' => 'antivirus esconoixito:',
# Login and logout pages
-'logouttitle' => "Fin d'a sesión",
'logouttext' => "'''Ha rematato a sesión.'''
Puede continar navegando por {{SITENAME}} anonimament, u puede [[Special:UserLogin|encetar]] una nueva sesión con o mesmo nombre d'usuario u bell atro diferent. Pare cuenta que, entre que se limpia a caché d'o navegador, puet estar que bellas pachinas s'amuestren como si encara continase en a sesión anterior.",
'welcomecreation' => "== ¡Bienveniu(da), $1! ==
S'ha creyato a suya cuenta.
No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITENAME}}]].",
-'loginpagetitle' => 'Enzetar a sesión',
'yourname' => "Nombre d'usuario:",
'yourpassword' => 'Contrasenya:',
'yourpasswordagain' => 'Torne a escribir a contrasenya:',
@@ -495,6 +530,7 @@ No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITE
'nav-login-createaccount' => 'Encetar una sesión / creyar cuenta',
'loginprompt' => "Ta rechistrar-se en {{SITENAME}} ha d'activar as cookies en o navegador.",
'userlogin' => 'Encetar una sesión / creyar cuenta',
+'userloginnocreate' => 'Encetar una sesión',
'logout' => "Salir d'a sesión",
'userlogout' => 'Salir',
'notloggedin' => 'No ha dentrato en o sistema',
@@ -507,27 +543,8 @@ No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITE
'badretype' => 'As contrasenyas que ha escrito no son iguals.',
'userexists' => "Ixe nombre d'usuario ya ye en uso.
Por favor, meta-ne uno diferent.",
-'youremail' => 'Adreza de correu electronico:',
-'username' => "Nombre d'usuario:",
-'uid' => "ID d'usuario:",
-'prefs-memberingroups' => "Miembro {{PLURAL:$1|d'a colla|d'as collas}}:",
-'yourrealname' => 'Nombre reyal:',
-'yourlanguage' => 'Luenga:',
-'yourvariant' => 'Modalidat linguistica:',
-'yournick' => 'Siñadura:',
-'badsig' => 'A suya sinyadura no ye conforme; comprebe as etiquetas HTML.',
-'badsiglength' => 'A sinyadura ye masiau larga.
-Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'No especificato',
-'gender-male' => 'Hombre',
-'gender-female' => 'Muller',
-'prefs-help-gender' => 'Opcional: Emplegada ta corrección de chenero por o software. Ista información será publica.',
-'email' => 'Adreza de correu-e',
-'prefs-help-realname' => "* Nombre reyal (opcional): si esliche escribir-lo, se ferá servir ta l'atribución d'a suya faina.",
'loginerror' => 'Error en encetar a sesión',
-'prefs-help-email' => "L'adreza de correu-e ye opcional, pero ye precisa ta que le ninviemos una nueva contrasenya si nunc la xublidase. Tamién puede fer que atros usuarios puedan contactar con vusté dende a suya pachina d'usuario u de descusión d'usuario sin haber de revelar a suya identidat.",
-'prefs-help-email-required' => 'Cal una adreza de correu-e.',
+'createaccounterror' => "No s'ha puesto creyar a cuenta: $1",
'nocookiesnew' => "A cuenta d'usuario s'ha creyata, pero encara no ye indentificato. {{SITENAME}} fa servir <em>cookies</em> ta identificar a os usuario rechistratos, pero pareix que las tiene desactivatas. Por favor, active-las e identifique-se con o suyo nombre d'usuario y contrasenya.",
'nocookieslogin' => "{{SITENAME}} fa servir <em>cookies</em> ta la identificación d'usuarios. Tiene as <em>cookies</em> desactivatas en o suyo navegador. Por favor, active-las y prebe d'identificar-se de nuevas.",
'noname' => "No ha escrito un nombre d'usuario correcto.",
@@ -538,9 +555,11 @@ Os nombres d\'usuario son sensibles a las mayusclas.
Comprebe si ha escrito bien o nombre u [[Special:UserLogin/signup|creye una nueva cuenta d\'usuario]].',
'nosuchusershort' => 'No bi ha garra usuario con o nombre "<nowiki>$1</nowiki>". Comprebe si o nombre ye bien escrito.',
'nouserspecified' => "Ha d'escribir un nombre d'usuario.",
+'login-userblocked' => "Iste usuario ye bloqueyau. No se permite l'inicio de sesión.",
'wrongpassword' => 'A contrasenya indicata no ye correcta. Prebe unatra vegada.',
'wrongpasswordempty' => 'No ha escrito garra contrasenya. Prebe unatra vegada.',
-'passwordtooshort' => "A suya palabra de paso no ye conforme u ye masiau curta. Ha de tener como menimo {{PLURAL:$1|1 caráuter|$1 caráuters}} y no puede estar o suyo nombre d'usuario.",
+'passwordtooshort' => 'As contrasenyas han de tener a lo menos {{PLURAL:$1|1 carácter|$1 carácters}}.',
+'password-name-match' => "A contrasenya ha d'estar diferent d'o suyo nombre d'usuario.",
'mailmypassword' => 'Ninviar una nueva contrasenya por correu electronico',
'passwordremindertitle' => 'Nueva contrasenya temporal de {{SITENAME}}',
'passwordremindertext' => 'Bell un (probablement vusté mesmo, dende l\'adreza IP $1) demandó una nueva contrasenya ta la suya cuenta en {{SITENAME}} ($4). S\'ha creyato una nueva contrasenya temporal ta l\'usuario "$2", que ye "$3".
@@ -549,6 +568,7 @@ A suya contrasenya temporal circumducirá en {{PLURAL:$5|un día|$5 días}}
Si estió bell atro qui fació ista demanda, u ya se\'n ha alcordau d\'a contrasenya y ya no deseya cambiar-la, puet ignorar iste mensache y continar fendo servir l\'antiga contrasenya.',
'noemail' => 'No bi ha garra adreza de correu electronico rechistrada ta "$1".',
+'noemailcreate' => "Has d'indicar una adreza de correu electronico valida",
'passwordsent' => 'Una nueva contrasenya plega de ninviar-se ta o correu electronico de "$1".
Por favor, identifique-se un atra vez malas que la reculla.',
'blocked-mailpassword' => "A suya adreza IP ye bloqueyata y, ta privar abusos, no se li premite emplegar d'a función de recuperación de contrasenyas.",
@@ -568,8 +588,10 @@ Por ixo, no se pueden creyar más cuentas por agora dende ixa adreza IP.",
'createaccount-text' => 'Belún ha creyato una cuenta con o nombre "$2" en {{SITENAME}} ($4), con a contrasenya "$3" y indicando a suya adreza de correu. Habría de dentrar-ie agora y cambiar a suya contrasenya.
Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
+'usernamehasherror' => "O nombre d'usuario no puet contener simbolos hash",
'login-throttled' => 'Ha feito masiaus intentos ta encetar una sesión. Por favor, aspere antes de prebar de fer-lo unatra vegada.',
'loginlanguagelabel' => 'Idioma: $1',
+'suspicious-userlogout' => "S'ha denegau a suya demanda de zarrar a sesión ya que pareix que la ninvió un navegador defectuoso u bell proxy amagau.",
# Password reset dialog
'resetpass' => 'Cambiar a contrasenya',
@@ -581,17 +603,13 @@ Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
'retypenew' => 'Torne a escribir a nueva contrasenya:',
'resetpass_submit' => 'Cambiar a contrasenya e identificar-se',
'resetpass_success' => 'A suya contrasenya ya ye cambiata. Agora ya puede dentrar-ie...',
-'resetpass_bad_temporary' => "A palabra de paso temporal no ye conforme. Puede estar que ya aiga cambiato a suya palabra de paso u que aiga demandato o nimbío d'un atra.",
'resetpass_forbidden' => 'No se pueden cambiar as contrasenyas.',
'resetpass-no-info' => 'Debe identificar-se como usuario ta poder acceder dreitament ta ista pachina.',
'resetpass-submit-loggedin' => 'Cambiar a contrasenya',
+'resetpass-submit-cancel' => 'Cancelar',
'resetpass-wrong-oldpass' => 'A contrasenya actual u temporal no ye conforme.
Talment ya ha cambiato a suya contrasenya u ha demandato una nueva contrasenya temporal.',
'resetpass-temp-password' => 'Contrasenya temporal:',
-'resetpass-log' => 'Rechistro de restablimiento de palabras de paso',
-'resetpass-logtext' => "En o cobaixo s'amuestra o rechistro d'os usuarios que un almenistrador lis ha restablito as suyas palabras de paso.",
-'resetpass-logentry' => "S'ha cambiato a palabra de paso de $1",
-'resetpass-comment' => 'Razón ta restablir a palabra de paso:',
# Edit page toolbar
'bold_sample' => 'texto en negreta',
@@ -663,7 +681,6 @@ A suya adreza IP actual ye \$3, y o identificador de bloqueyo ye #\$5. Por favor
'blockededitsource' => "Contino s'amuestra o texto d'as suyas '''edicions''' a '''$1''':",
'whitelistedittitle' => 'Cal encetar una sesión ta poder editar.',
'whitelistedittext' => 'Ha de $1 ta poder editar pachinas.',
-'confirmedittitle' => 'Cal que confirme a suya adreza de correu-e ta poder editar',
'confirmedittext' => "Ha de confirmar a suya adreza de correu-e antis de poder editar pachinas. Por favor, estableixca y confirme una adreza de correu-e a traviés d'as suyas [[Special:Preferences|preferencias d'usuario]].",
'nosuchsectiontitle' => 'No se puede trobar ixa sección',
'nosuchsectiontext' => "Ha mirau d'editar una sección que no existe.
@@ -683,14 +700,21 @@ Si ye plegau por error, punche o botón \"enta zaga\" d'o suyo navegador.",
Barios usuarios pueden compartir una mesma adreza IP.
Si vusté ye un usuario anonimo y creye que l'han escrito comentarios no relevants, [[Special:UserLogin/signup|creye una cuenta]] u [[Special:UserLogin/signup|identifique-se]] ta privar confusions futuras con atros usuarios anonimos.''",
'noarticletext' => 'Por agora no bi ha garra texto en ista pachina. Puet [[Special:Search/{{PAGENAME}}|mirar o títol d\'ista pachina]] en atras pachinas, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mirar os rechistros relacionatos] u [{{fullurl:{{FULLPAGENAME}}|action=edit}} escribir ista pachina].',
+'noarticletext-nopermission' => 'Por l\'inte no i hai garra texto en ista pachina.
+Puet [[Special:Search/{{PAGENAME}}|mirar iste títol]] en atras páginas,
+u bien <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mirar en os rechistros relacionatos]</span>.',
'userpage-userdoesnotexist' => 'A cuenta d\'usuario "$1" no ye rechistrada. Piense si quiere creyar u editar ista pachina.',
+'userpage-userdoesnotexist-view' => 'A cuenta d\'usuario "$1" no ye rechistrada.',
+'blocked-notice-logextract' => "Ista cuenta d'usuario ye actualment bloqueyata.
+A zaguera dentrada d'o rechistro de bloqueyos s'amuestra contino:",
'clearyourcache' => "'''Pare cuenta: Si quiere veyer os cambeos dimpués d'alzar o fichero, puede estar que tienga que refrescar a caché d'o suyo navegador ta veyer os cambeos.'''
*'''Mozilla / Firefox / Safari:''' prete a tecla de ''Mayusclas'' mientras puncha ''Reload,'' u prete '''Ctrl-F5''' u '''Ctrl-R''' (''Command-R'' en un Macintosh);
*'''Konqueror: ''' punche ''Reload'' u prete ''F5;''
*'''Opera:''' limpiar a caché en ''Tools → Preferences;''
*'''Internet Explorer:''' prete ''Ctrl'' mientres puncha ''Refresh,'' u prete ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Consello:''' Faga serbir o botón «Amostrar prebisualizazión» ta prebar o nuebo css/js antes de grabar-lo.",
+'usercssyoucanpreview' => "'''Consello:''' Faiga servir o botón «{{int:showpreview}}» ta fer una prebatina con o nuevo CSS antes de no grabar-lo.",
+'userjsyoucanpreview' => "'''Consello:''' Faiga servir o botón «{{int:showpreview}}» ta fer una prebatina con o nuevo css/js antes de no grabar-lo.",
'usercsspreview' => "'''Remere que isto no ye que una previsualización d'o suyo CSS d'usuario.'''
'''Encara no s'ha alzato!'''",
'userjspreview' => "'''Remere que sólo ye previsualizando o suyo javascript d'usuario y encara no ye grabato!'''",
@@ -730,13 +754,14 @@ Considere, por favor, a posibilidat de troxar ista pachina en trestallos más ch
'readonlywarning' => "'''Pare cuenta: A base de datos ye bloqueyata por custions de mantenimiento. Por ixo, en iste inte ye imposible d'alzar as suyas edicions. Puede copiar y apegar o texto en un fichero y alzar-lo ta dimpués.'''
A esplicación ufierta por l'almenistrador que bloqueyó a base de datos ye ista: $1",
-'protectedpagewarning' => "'''PARE CUENTA: Ista pachina ha estato protechita ta que sólo os usuarios con premisos d'almenistrador puedan editar-la.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Ista pachina ha estato protechita ta que nomás usuarios rechistratos puedan editar-la.",
+'protectedpagewarning' => "'''Pare cuenta: Ista pachina s'ha protechito ta que nomás os usuarios con premisos d'almenistrador puedan editar-la.'''",
+'semiprotectedpagewarning' => "'''Pare cuenta:''' Ista pachina s'ha protechito ta que nomás os usuarios rechistratos puedan editar-la.",
'cascadeprotectedwarning' => "'''Pare cuenta:''' Ista pachina ye protechita ta que nomás os almenistrador puedan editar-la, porque ye incluyita en {{PLURAL:$1|a siguient pachina, protechita|as siguients pachinas, protechitas}} con a opción de ''cascada'' :",
-'titleprotectedwarning' => "'''PARE CUENTA: Ista pachina s'ha bloqueyato, y s'aprezisan [[Special:ListGroupRights|dreitos espezificos]] ta creyar-la.'''",
-'templatesused' => 'Plantillas emplegatas en ista pachina:',
-'templatesusedpreview' => 'Plantillas emplegatas en ista ambiesta prebia:',
-'templatesusedsection' => 'Plantillas usatas en ista sezión:',
+'titleprotectedwarning' => "'''PARE CUENTA: Ista pachina s'ha bloqueyato de traza que s'aprecisan [[Special:ListGroupRights|dreitos especificos]] ta creyar-la.'''
+Como información adicional s'amuestra contino a zaguera dentrada en o rechistro.",
+'templatesused' => '{{PLURAL:$1|Plantilla|Planillas}} emplegatas en ista pachina:',
+'templatesusedpreview' => '{{PLURAL:$1|Plantilla|Plantillas}} emplegadas en ista anvista previa:',
+'templatesusedsection' => '{{PLURAL:$1|Plantilla|Plantillas}} emplegatas en ista sección:',
'template-protected' => '(protechita)',
'template-semiprotected' => '(semiprotechita)',
'hiddencategories' => 'Ista pachina fa parte de {{PLURAL:$1|1 categoría amagata|$1 categorías amagatas}}:',
@@ -744,16 +769,18 @@ A esplicación ufierta por l'almenistrador que bloqueyó a base de datos ye ista
'nocreatetitle' => "S'ha restrinchito a creyación de pachinas",
'nocreatetext' => '{{SITENAME}} ha restrinchito a creyación de nuevas pachinas. Puede tornar entazaga y editar una pachina ya existent, [[Special:UserLogin|identificarse u creyar una cuenta]].',
'nocreate-loggedin' => 'No tiene premiso ta creyar nuevas pachinas.',
+'sectioneditnotsupported-title' => 'A edición por seccions no ye suportada',
+'sectioneditnotsupported-text' => 'A edición por seccions no ye suportada en ista pachina',
'permissionserrors' => 'Errors de premisos',
'permissionserrorstext' => 'No tiene premisos ta fer-lo, por {{PLURAL:$1|ista razón|istas razons}}:',
'permissionserrorstext-withaction' => 'No tiene premisos ta $2, por {{PLURAL:$1|ista razón|istas razons}}:',
-'recreate-deleted-warn' => "'''Pare cuenta: ye creyando una pachina que ya ha estato borrata denantes.'''
+'recreate-moveddeleted-warn' => "Pare cuenta: ye creyando de nuevas una pachina que ya ha s'heba borrada denantes.'''
-Abría de considerar si ye reyalment nezesario continar editando ista pachina.
-Puede consultar o rechistro de borraus que s'amuestra a continuazión:",
-'deleted-notice' => "Ista pachina ye borrata.
-Contino s'amuestra o rechistro de borrau como referenzia.",
-'deletelog-fulllog' => 'Beyer o rechistro completo',
+Considere si ye preciso continar editando ista pachina.
+Contino s'amuestra o rechistro de borraus y treslaus ta ista pachina:",
+'moveddeleted-notice' => "Ista pachina s'ha borrato.
+Contino s'amuestra o rechistro de borraus y treslaus como referencia.",
+'log-fulllog' => 'Veyer o rechistro completo',
'edit-hook-aborted' => 'Edición albortada por o grifio (hook).
No dio garra esplicación.',
'edit-gone-missing' => "No s'ha puesto esviellar a pachina.
@@ -775,6 +802,7 @@ Bellas plantillas no se bi incluyen.",
'post-expand-template-argument-category' => 'Pachinas con argumentos de plantilla omesos',
'parser-template-loop-warning' => "S'ha detectato un bucle de plantillas: [[$1]]",
'parser-template-recursion-depth-warning' => "S'ha brincato o limite de recursión de plantillas ($1)",
+'language-converter-depth-warning' => "S'ha blincau o limite de profundidat d'o conversor d'idiomas ($1)",
# "Undo" feature
'undo-success' => 'A edición se puet desfer.
@@ -793,9 +821,9 @@ A razón indicada por $3 ye ''$2''",
'viewpagelogs' => "Veyer os rechistros d'ista pachina",
'nohistory' => "Ista pachina no tiene un historial d'edicions.",
'currentrev' => 'Versión actual',
-'currentrev-asof' => "zaguera bersión d'o $1",
-'revisionasof' => "Bersión d'o $1",
-'revision-info' => "Bersión d'o $1 feita por $2", # Additionally available: $3: revision id
+'currentrev-asof' => "Zaguera versión d'o $1",
+'revisionasof' => "Versión d'o $1",
+'revision-info' => "Versión d'o $1 feita por $2",
'previousrevision' => '← Versión anterior',
'nextrevision' => 'Versión siguient →',
'currentrevisionlink' => 'Versión actual',
@@ -807,7 +835,7 @@ A razón indicada por $3 ye ''$2''",
'histlegend' => "Selección de diferencias: sinyale as versions a comparar y prete \"enter\" u o botón d'o cobaixo.<br />
Leyenda: '''({{int:cur}})''' = esferencias con a versión actual, '''({{int:last}})''' = esferencias con a versión anterior, '''{{int:minoreditletter}}''' = edición menor",
'history-fieldset-title' => 'Mirar en o historial',
-'deletedrev' => '[borrato]',
+'history-show-deleted' => 'Nomás os borratos',
'histfirst' => 'Primeras contrebucions',
'histlast' => 'Zagueras',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -816,69 +844,114 @@ Leyenda: '''({{int:cur}})''' = esferencias con a versión actual, '''({{int:last
# Revision feed
'history-feed-title' => 'Historial de versions',
'history-feed-description' => "Historial de versions d'ista pachina en o wiki",
-'history-feed-item-nocomment' => '$1 en $2', # user at time
+'history-feed-item-nocomment' => '$1 en $2',
'history-feed-empty' => "A pachina demandata no existe.
Puede que belún l'haiga borrata d'o wiki u renombrata.
Prebe de [[Special:Search|mirar en o wiki]] atras pachinas relevants.",
# Revision deletion
-'rev-deleted-comment' => "(s'ha sacato iste comentario)",
-'rev-deleted-user' => "(s'ha sacato iste nombre d'usuario)",
-'rev-deleted-event' => "(acción borrata d'o rechistro)",
-'rev-deleted-text-permission' => "Ista bersión d'a pachina s'ha '''borrato'''.
-Puede trobar más detalles en o [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rechistro de borratos].",
-'rev-deleted-text-view' => "Ista bersión d'a pachina s'ha '''borrato'''.
-La puet beyer porque ye almenistrador/a; puede trobar más detalles en o [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rechistro de borratos].",
-'rev-deleted-no-diff' => "No puede veyer ista comparanza de pachinas porque una d'as versions s'ha '''borrato'''. Puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
-'rev-deleted-unhide-diff' => "Una d'as versions d'ista comparanza s'ha '''borrato'''.
+'rev-deleted-comment' => "(s'ha sacato iste comentario)",
+'rev-deleted-user' => "(s'ha sacato iste nombre d'usuario)",
+'rev-deleted-event' => "(acción borrata d'o rechistro)",
+'rev-deleted-user-contribs' => "[nombre d'usuario u adreza IP elminada - edición amagada d'as contribucions]",
+'rev-deleted-text-permission' => "Ista versión d'a pachina s'ha '''borrato'''.
+Talment pueda trobe más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-deleted-text-unhide' => "Ista versión d'a pachina ha estau '''borrada'''.
+Puede trobar más detalles en o [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rechistro de borraus].
+Como administrador encara puet [$1 veyer ista versión ] si lo deseya.",
+'rev-suppressed-text-unhide' => "Ista versión d'a pachina ha estau '''borrada'''.
Puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rechistro de borraus].
+Como administrador encara puet [$1 veyer ista versión ] si lo deseya.",
+'rev-deleted-text-view' => "Ista versión d'a pachina s'ha '''borrato'''.
+Como admenistrador, la puet veyer; talment trobe más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-suppressed-text-view' => "Ista versión d'a pachina s'ha '''borrato'''.
+Como administrador, la puet veyer; puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-deleted-no-diff' => "No puede veyer ista comparanza de pachinas porque una d'as versions s'ha '''borrato'''.
+Puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-suppressed-no-diff' => "Nop puet veyer ista diferencia porque una d'as versions ha estau '''borrata'''.",
+'rev-deleted-unhide-diff' => "Una d'as versions d'ista comparanza s'ha '''borrato'''.
+Puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rechistro de borraus].
Como administrador podrá seguir [$1 veyendo ista comparanza] si lo deseya.",
-'rev-delundel' => 'amostrar/amagar',
-'revisiondelete' => 'Borrar/restaurar versions',
-'revdelete-nooldid-title' => 'A versión de destino no ye conforme',
-'revdelete-nooldid-text' => "No ha indicato sobre qué versión u versions de destino s'ha d'aplicar ista función, a versión especificata no existe u ye mirando d'amagar a versión actual.",
-'revdelete-nologtype-title' => "No s'ha indicau garra mena de rechistro",
-'revdelete-nologtype-text' => 'No ha indicato sobre qué tipo de rechistro quiere fer ista acción.',
-'revdelete-toomanytargets-title' => 'Masiaus obchetibos',
-'revdelete-toomanytargets-text' => "Ha endicato masiadas menas d'obchetibos sobre os que fer ista azión.",
-'revdelete-nologid-title' => 'Dentrada de rechistro invalida',
-'revdelete-nologid-text' => 'No ha indicau sobre qué evento rechistrau quiere fer servir ista función u bien no existe a dentrada de rechistro que ha indicau.',
-'revdelete-selected' => "'''{{PLURAL:$2|Versión trigata|Versions trigatas}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Escaicimiento d'o rechistro trigato|Escaicimientos d'o rechistro trigatos}}:'''",
-'revdelete-text' => "'''As bersions borratas encara aparixerán en o istorial y o rechistro d'a pachina, pero os suyos contenius no serán azesibles ta o publico.'''
-
-Atros almenistradors de {{SITENAME}} encara podrán azeder t'o contineiu amagato y podrán esfer o borrau á trabiés d'a mesma interfaz, fueras de si os operadors establen restrizions adizionals.",
-'revdelete-suppress-text' => "Os borraus de versions '''nomás''' s'habrían de fer en os siguients casos:
+'rev-suppressed-unhide-diff' => "Una d'as versions d'ista comparanza s'ha '''borrato'''.
+Puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rechistro de borraus].
+Como administrador encara puet seguir [$1 veyendo ista comparanza] si lo deseya.",
+'rev-deleted-diff-view' => "Una d'as versions d'ista comparanza s'ha '''borrato'''.
+Como administrador puede veyer o conteniu; puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-suppressed-diff-view' => "Una d'as versions d'ista comparanza s'ha '''borrato'''.
+Como administrador encara puet veyer o conteniu; puet trobar más detalles en o [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rechistro de borraus].",
+'rev-delundel' => 'amostrar/amagar',
+'rev-showdeleted' => 'amostrar',
+'revisiondelete' => 'Borrar/restaurar versions',
+'revdelete-nooldid-title' => 'A versión de destino no ye conforme',
+'revdelete-nooldid-text' => "No ha indicato sobre qué versión u versions de destino s'ha d'aplicar ista función, a versión especificata no existe u ye mirando d'amagar a versión actual.",
+'revdelete-nologtype-title' => "No s'ha indicau garra mena de rechistro",
+'revdelete-nologtype-text' => 'No ha indicato sobre qué tipo de rechistro quiere fer ista acción.',
+'revdelete-nologid-title' => 'Dentrada de rechistro invalida',
+'revdelete-nologid-text' => 'No ha indicau sobre qué evento rechistrau quiere fer servir ista función u bien no existe a dentrada de rechistro que ha indicau.',
+'revdelete-no-file' => 'O fichero especificato no existe.',
+'revdelete-show-file-confirm' => 'Seguro que quiere veyer una versión borrata d\'o fichero "<nowiki>$1</nowiki>" d\'o $2 a las $3?',
+'revdelete-show-file-submit' => 'Sí',
+'revdelete-selected' => "'''{{PLURAL:$2|Versión trigata|Versions trigatas}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Escaicimiento d'o rechistro trigato|Escaicimientos d'o rechistro trigatos}}:'''",
+'revdelete-text' => "'''As versions y esdevenimientos borratos encara apareixerán en o historial d'a pachina y en os rechistros, pero bellas partes d'o suyo conteniu serán inaccesibles ta o publico.'''
+Atros admenistradors de {{SITENAME}} encara podrán acceder t'o conteniu amagato y podrán desfer o borrau a traviés d'ista mesma interfaz, fueras de si s'estableixen restriccions adicionals.",
+'revdelete-confirm' => "Por favor confirme que ye mirando de fer ísto, que entiende as conseqüencias, y que lo ye fendo d'alcuerdo con [[{{MediaWiki:Policy-url}}|as politicas]].",
+'revdelete-suppress-text' => "Os borraus de versions '''nomás''' s'habrían de fer en os siguients casos:
* Información potencialment difamatoria o libelo grieu.
* Información personal inapropiada
*: ''domicilios y números de telefono, numeros d'afiliación a la seguridat social, etc.''",
-'revdelete-legend' => 'Establir as restriccions de visibilidat:',
-'revdelete-hide-text' => "Amagar o texto d'a versión",
-'revdelete-hide-name' => 'Amagar acción y obchectivo',
-'revdelete-hide-comment' => "Amagar comentario d'edición",
-'revdelete-hide-user' => "Amagar o nombre/l'adreza IP d'o editor",
-'revdelete-hide-restricted' => "Suprimir os datos d'os almenistradors igual como os d'a resta",
-'revdelete-suppress' => "Sacar os datos d'os almenistradors igual como os d'a resta d'usuarios",
-'revdelete-hide-image' => "Amagar o conteniu d'o fichero",
-'revdelete-unsuppress' => "Sacar restriccions d'as versions restauradas",
-'revdelete-log' => 'Razón:',
-'revdelete-submit' => 'Aplicar á la bersión trigata',
-'revdelete-logentry' => "S'ha cambiato a visibilidat d'a versión de [[$1]]",
-'logdelete-logentry' => "S'ha cambiato a visibilidat d'escaicimientos de [[$1]]",
-'revdelete-success' => "'''S'ha cambiato correctament a visibilidat d'as versions.'''",
-'logdelete-success' => "'''S'ha cambiato correctament a visibilidat d'os escaicimientos.'''",
-'revdel-restore' => 'Cambiar a visibilidat',
-'pagehist' => 'Historial',
-'deletedhist' => 'Historial de borrau',
-'revdelete-content' => 'conteniu',
-'revdelete-summary' => 'editar resumen',
-'revdelete-uname' => "nombre d'usuario",
-'revdelete-restricted' => "S'han aplicato as restriccions ta almenistradors",
-'revdelete-unrestricted' => "S'han borrato as restriccions ta almenistradors",
-'revdelete-hid' => 'amagar $1',
-'revdelete-unhid' => 'amostrar $1',
-'revdelete-log-message' => '$1 ta $2 {{PLURAL:$2|versión|versions}}',
-'logdelete-log-message' => '$1 ta $2 {{PLURAL:$2|esdevenimiento|esdevenimientos}}',
+'revdelete-legend' => 'Establir as restriccions de visibilidat:',
+'revdelete-hide-text' => "Amagar o texto d'a versión",
+'revdelete-hide-image' => "Amagar o conteniu d'o fichero",
+'revdelete-hide-name' => 'Amagar acción y obchectivo',
+'revdelete-hide-comment' => "Amagar comentario d'edición",
+'revdelete-hide-user' => "Amagar o nombre/l'adreza IP d'o editor",
+'revdelete-hide-restricted' => "Suprimir os datos d'os almenistradors igual como os d'a resta",
+'revdelete-radio-same' => '(no cambiar)',
+'revdelete-radio-set' => 'Sí',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => "Sacar os datos d'os almenistradors igual como os d'a resta d'usuarios",
+'revdelete-unsuppress' => "Sacar restriccions d'as versions restauradas",
+'revdelete-log' => 'Razón:',
+'revdelete-submit' => 'Aplicar a {{PLURAL:$1|la versión trigata|las versions trigatas}}',
+'revdelete-logentry' => "S'ha cambiato a visibilidat d'a versión de [[$1]]",
+'logdelete-logentry' => "S'ha cambiato a visibilidat d'escaicimientos de [[$1]]",
+'revdelete-success' => "'''S'ha cambiato correctament a visibilidat d'as versions.'''",
+'revdelete-failure' => "'''La visibilidat d'a versión no s'ha puesto esviellar:'''
+$1",
+'logdelete-success' => "'''S'ha cambiato correctament a visibilidat d'os escaicimientos.'''",
+'logdelete-failure' => "'''A visibilidat d'o rechistro no s'ha puesto achustar:'''
+$1",
+'revdel-restore' => 'Cambiar a visibilidat',
+'pagehist' => 'Historial',
+'deletedhist' => 'Historial de borrau',
+'revdelete-content' => 'conteniu',
+'revdelete-summary' => 'editar resumen',
+'revdelete-uname' => "nombre d'usuario",
+'revdelete-restricted' => "S'han aplicato as restriccions ta almenistradors",
+'revdelete-unrestricted' => "S'han borrato as restriccions ta almenistradors",
+'revdelete-hid' => 'amagar $1',
+'revdelete-unhid' => 'amostrar $1',
+'revdelete-log-message' => '$1 ta $2 {{PLURAL:$2|versión|versions}}',
+'logdelete-log-message' => '$1 ta $2 {{PLURAL:$2|esdevenimiento|esdevenimientos}}',
+'revdelete-hide-current' => "Error en amagar l'obchecto de calendata $2 y $1: ista ye a versión actual.
+No se puet amagar.",
+'revdelete-show-no-access' => 'Error amostrando l\'obchecto de calendata $2, $1: iste obchecto s\'ha marcau como "restrinchiu".
+ No tien acceso a tot.',
+'revdelete-modify-no-access' => 'Error en modificar l\'obchecto de calendata $2, $1: este obchecto s\'ha marcau como "restrinchiu".
+No tien acceso a ell.',
+'revdelete-modify-missing' => "Error en modificar l'obchecto ID $1: no se troba en base de datos!",
+'revdelete-no-change' => "'''Pare cuenta:''' a versión d'o $1 a las $2 ya tien as restriccions de visibilidat solicitadas.",
+'revdelete-concurrent-change' => "Error en modificar l'elemento d'o $1 a las $2: pareix que o suyo estau ha estau cambiau por belatro usuario quan vusté miraba de modificar-lo. Por favor, verifique os rechistros.",
+'revdelete-only-restricted' => "Error en amagar l'elemento d'o $1 a las $2: no puet eliminar elementos d'a vista d'os administradors sin trigar alavez una d'as atras opcions de visibilidat.",
+'revdelete-reason-dropdown' => '*Razons comuns de borraus
+** Violación de Copyright
+** Información personal inapropiada
+** Difamación u calumnias grieus',
+'revdelete-otherreason' => 'Atras/más razons:',
+'revdelete-reasonotherlist' => 'Atra razón',
+'revdelete-edit-reasonlist' => "Editar as razons d'o borrau",
+'revdelete-offender' => "Autor d'a edición:",
# Suppression log
'suppressionlog' => 'Rechistro de supresions',
@@ -914,67 +987,13 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'mergelogpagetext' => "Contino s'amuestra una lista d'as pachinas más recients que os suyos historials s'han fusionato con o d'atra pachina.",
# Diffs
-'history-title' => 'Historial de versions de "$1"',
-'difference' => '(Esferencias entre versions)',
-'lineno' => 'Linia $1:',
-'compareselectedversions' => 'Confrontar as versions trigatas',
-'visualcomparison' => 'Comparanza bisual',
-'wikicodecomparison' => 'Comparanza de testo wiki',
-'editundo' => 'desfer',
-'diff-multi' => "(S'ha amagato {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}}.)",
-'diff-movedto' => 'tresladato ta $1',
-'diff-styleadded' => 'estilo $1 adibito',
-'diff-added' => 'adibito $1',
-'diff-changedto' => 'cambiato á $1',
-'diff-movedoutof' => 'sacato de $1',
-'diff-styleremoved' => 'estilo $1 sacato',
-'diff-removed' => 'sacato $1',
-'diff-changedfrom' => 'cambiato dende $1',
-'diff-src' => 'codigo fuent',
-'diff-withdestination' => 'con destín $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;y $1 $2',
-'diff-width' => 'amplaria',
-'diff-height' => 'altaria',
-'diff-p' => "un '''parrafo'''",
-'diff-blockquote' => "una '''zita'''",
-'diff-h1' => "una '''cabezera (ran 1)'''",
-'diff-h2' => "una '''cabezera (ran 2)'''",
-'diff-h3' => "una '''cabezera (ran 3)'''",
-'diff-h4' => "una '''cabezera (ran 4)'''",
-'diff-h5' => "una '''cabezera (ran 5)'''",
-'diff-pre' => "un '''bloque preformateyato'''",
-'diff-div' => "una '''dibisión'''",
-'diff-ul' => "una '''lista desordenata'''",
-'diff-ol' => "una '''lista ordenata'''",
-'diff-li' => "un '''elemento de lista'''",
-'diff-table' => "una '''tabla'''",
-'diff-tbody' => "un '''conteniu de tabla'''",
-'diff-tr' => "una '''ringlera'''",
-'diff-td' => "una '''zelda'''",
-'diff-th' => "una '''cabezera'''",
-'diff-br' => "un '''brinco de ringlera'''",
-'diff-hr' => "una '''linia orizontal'''",
-'diff-code' => "un '''bloque de codigo d'ordenador'''",
-'diff-dl' => "una '''lista de definizions'''",
-'diff-dt' => "un '''termín de definizión'''",
-'diff-dd' => "una '''definizión'''",
-'diff-input' => "una '''dentrada'''",
-'diff-form' => "un '''formulario'''",
-'diff-img' => "una '''imachen'''",
-'diff-span' => "un '''''span'''''",
-'diff-a' => "un '''binclo'''",
-'diff-i' => "'''cursibas'''",
-'diff-b' => "'''negreta'''",
-'diff-strong' => "'''fuerte'''",
-'diff-em' => "'''enfasis'''",
-'diff-font' => "'''tipo de letra'''",
-'diff-big' => "'''gran'''",
-'diff-del' => "'''borrato'''",
-'diff-tt' => "'''amplaria fixa'''",
-'diff-sub' => "'''subendize'''",
-'diff-sup' => "'''superendize'''",
-'diff-strike' => "'''barriato'''",
+'history-title' => 'Historial de versions de "$1"',
+'difference' => '(Esferencias entre versions)',
+'lineno' => 'Linia $1:',
+'compareselectedversions' => 'Confrontar as versions trigatas',
+'showhideselectedversions' => 'Amostrar/amagar as versions trigadas',
+'editundo' => 'desfer',
+'diff-multi' => "(S'ha amagato {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}}.)",
# Search results
'searchresults' => "Resultau d'a busca",
@@ -982,28 +1001,25 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'searchresulttext' => "Ta más información sobre cómo mirar pachinas en {{SITENAME}}, consulte l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Ha mirato \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas as pachinas que prencipian con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as pachinas con vinclos enta "$1"]])',
'searchsubtitleinvalid' => 'Ha mirato "$1"',
-'noexactmatch' => "'''No esiste garra pachina tetulata \"\$1\".''' Puede aduyar [[:\$1|creyando-la]].",
-'noexactmatch-nocreate' => "'''No bi ha garra pachina tetulata \"\$1\".'''",
'toomanymatches' => "S'ha retornato masiadas coincidencias, por favor, torne a prebar con una consulta diferent",
'titlematches' => 'Consonancias de títols de pachina',
'notitlematches' => "No bi ha garra consonancia en os títols d'as pachinas",
'textmatches' => "Consonancias en o texto d'as pachinas",
'notextmatches' => "No bi ha garra consonancia en os textos d'as pachinas",
-'prevn' => 'anteriors $1',
-'nextn' => 'siguiens $1',
+'prevn' => '{{PLURAL:$1|$1}} anteriors',
+'nextn' => '{{PLURAL:$1|$1}} siguients',
'prevn-title' => '$1 {{PLURAL:$1|resultau anterior|resultaus anteriors}}',
'nextn-title' => 'Siguients $1 {{PLURAL:$1|resultau|resultaus}}',
'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultau|resultaus}} por pachina',
-'viewprevnext' => 'Veyer ($1) ($2) ($3)',
+'viewprevnext' => 'Veyer ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opcions de busca',
'searchmenu-exists' => "'''Bi ha una pachina clamada \"[[\$1]]\" en ista wiki'''",
'searchmenu-new' => "'''Creyar a pachina \"[[:\$1]]\" en ista wiki!'''",
'searchhelp-url' => 'Help:Aduya',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Veyer pachinas con iste prefixo]]',
-'searchprofile-articles' => 'Articlos',
-'searchprofile-articles-and-proj' => "Articlos y pachinas d'o procheuto",
-'searchprofile-project' => "Pachinas d'o procheuto",
-'searchprofile-images' => 'Archibos',
+'searchprofile-articles' => 'Pachinas de conteniu',
+'searchprofile-project' => "Pachinas d'aduya y d'o prochecto",
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tot',
'searchprofile-advanced' => 'Avanzato',
'searchprofile-articles-tooltip' => 'Mirar en $1',
@@ -1011,8 +1027,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'searchprofile-images-tooltip' => 'Mirar fichers',
'searchprofile-everything-tooltip' => 'Mirar en totz os contenius (tamién en as pachinas de descusión)',
'searchprofile-advanced-tooltip' => 'Mirar en os siguients espacios de nombres',
-'prefs-search-nsdefault' => 'Mirar fendo serbir os parametros por defeuto:',
-'prefs-search-nscustom' => 'Mirar en os siguients espazios de nombres:',
'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 parolas}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(endrecera dende $1)',
@@ -1025,11 +1039,12 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'search-mwsuggest-disabled' => 'garra socherencia',
'search-relatedarticle' => 'Relacionato',
'mwsuggest-disable' => "Desactivar as socherencias d'AJAX",
+'searcheverything-enable' => 'Mirar en totz os espacios de nombres',
'searchrelated' => 'relacionato',
'searchall' => 'totz',
'showingresults' => "Contino se bi {{PLURAL:$1|amuestra '''1''' resultau|amuestran '''$1''' resultaus}} prencipiando por o numero '''$2'''.",
'showingresultsnum' => "Contino se bi {{PLURAL:$3|amuestra '''1''' resultau|amuestran os '''$3''' resultaus}} prencipiando por o numero '''$2'''.",
-'showingresultstotal' => "Contino {{PLURAL:$4|s'amuestra o resultau '''$1''' de '''$3'''|s'amuestran os resultaus '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultau '''$1''' de '''$3'''|Resultaus '''$1-$2''' de '''$3'''}} ta '''$4'''",
'nonefound' => "'''Pare cuenta''': Por defecto nomás se mira en bells espacios de nombres. Si quiere mirar en totz os contenius (incluyendo-ie pachinas de descusión, plantillas, etc), mire d'emplegar o prefixo ''all:'' u clave como prefixo o espacio de nombres deseyau.",
'search-nonefound' => "No s'ha trobato garra resultau que cumpla os criterios.",
'powersearch' => 'Busca avanzata',
@@ -1037,112 +1052,149 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'powersearch-ns' => 'Mirar en os espacios de nombres:',
'powersearch-redir' => 'Listar reendreceras',
'powersearch-field' => 'Mirar',
+'powersearch-togglelabel' => 'Marcar:',
+'powersearch-toggleall' => 'Totz',
+'powersearch-togglenone' => 'Garra',
'search-external' => 'Busca externa',
'searchdisabled' => 'A busca en {{SITENAME}} ye temporalment desactivata. Entremistanto, puede mirar en {{SITENAME}} fendo servir buscadors externos, pero pare cuenta que os suyos endices de {{SITENAME}} puede no estar esviellatos.',
+# Quickbar
+'qbsettings' => 'Preferencias de "Quickbar"',
+'qbsettings-none' => 'Garra',
+'qbsettings-fixedleft' => 'Fixa a la zurda',
+'qbsettings-fixedright' => 'Fixa a la dreita',
+'qbsettings-floatingleft' => 'Flotant a la zurda',
+'qbsettings-floatingright' => 'Flotant a la dreita',
+
# Preferences page
-'preferences' => 'Preferencias',
-'mypreferences' => 'Preferencias',
-'prefs-edits' => "Numero d'edicions:",
-'prefsnologin' => 'No ye identificato',
-'prefsnologintext' => 'Ha d\'aber <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} enzetato una sesión] </span> ta cambiar as preferenzias d\'usuario.',
-'prefsreset' => "S'ha tornato as preferenzias t'as suyas baluras almadazenatas.",
-'qbsettings' => 'Preferencias de "Quickbar"',
-'qbsettings-none' => 'Garra',
-'qbsettings-fixedleft' => 'Fixa a la zurda',
-'qbsettings-fixedright' => 'Fixa a la dreita',
-'qbsettings-floatingleft' => 'Flotant a la zurda',
-'qbsettings-floatingright' => 'Flotant a la dreita',
-'changepassword' => 'Cambiar a contrasenya',
-'skin' => 'Aparenzia',
-'skin-preview' => 'Fer una prebatina',
-'math' => 'Esprisions matematicas',
-'dateformat' => 'Formato de calendata',
-'datedefault' => 'Sin de preferencias',
-'datetime' => 'Calendata y ora',
-'math_failure' => 'Error en o codigo',
-'math_unknown_error' => 'error esconoxita',
-'math_unknown_function' => 'función esconoxita',
-'math_lexing_error' => 'error de lexico',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => 'A conversión enta PNG ha tenito errors;
-comprebe si latex, dvips, gs y convert son bien instalatos.',
-'math_bad_tmpdir' => "No s'ha puesto escribir u creyar o directorio temporal d'esprisions matematicas",
-'math_bad_output' => "No s'ha puesto escribir u creyar o directorio de salida d'esprisions matematicas",
-'math_notexvc' => "No s'ha trobato o fichero executable ''texvc''. Por favor, leiga <em>math/README</em> ta confegurar-lo correctament.",
-'prefs-personal' => 'Datos presonals',
-'prefs-rc' => 'Zaguers cambeos',
-'prefs-watchlist' => 'Lista de seguimiento',
-'prefs-watchlist-days' => "Numero de días que s'amostrarán en a lista de seguimiento:",
-'prefs-watchlist-days-max' => '(masimo 7 diyas)',
-'prefs-watchlist-edits' => "Numero d'edicions que s'amostrarán en a lista ixamplata:",
-'prefs-watchlist-edits-max' => '(numero masimo: 1000)',
-'prefs-misc' => 'Atras preferencias',
-'prefs-resetpass' => 'Cambear a contrasenya',
-'saveprefs' => 'Alzar preferencias',
-'resetprefs' => "Tornar t'as preferencias por defecto",
-'restoreprefs' => 'Restaure todas as confeguracions por defecto',
-'textboxsize' => 'Edizión',
-'prefs-edit-boxsize' => "Grandaria d'a finestra d'edición.",
-'rows' => 'Ringleras:',
-'columns' => 'Columnas:',
-'searchresultshead' => 'Mirar',
-'resultsperpage' => "Resultaus que s'amostrarán por pachina:",
-'contextlines' => "Linias de contexto que s'amostrarán por resultau",
-'contextchars' => 'Carácters de contexto por linia',
-'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):',
-'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':",
-'recentchangesdays-max' => '(masimo $1 {{PLURAL:$1|día|días}})',
-'recentchangescount' => "Numero d'edizions que s'amostrarán, por defeuto, en as pachinas de zaguers cambeos, istorials y rechistros:",
-'savedprefs' => "S'han alzato as suyas preferencias.",
-'timezonelegend' => 'Fuso horario:',
-'timezonetext' => "¹Escriba a esferenzia (en oras) entre a suya ora local y a d'o serbidor (UTC).",
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Zona oraria:',
-'timezoneuseserverdefault' => "Usar a zona d'o servidor",
-'timezoneuseoffset' => 'Atra (especifica a esferencia)',
-'timezoneoffset' => 'Esferencia¹:',
-'servertime' => 'A hora en o servidor ye:',
-'guesstimezone' => "Emplir-lo con a hora d'o navegador",
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctico',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ociano Atlantico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ociano Indico',
-'timezoneregion-pacific' => 'Ociano Pacifico',
-'allowemail' => "Activar a recepción de correu d'atros usuarios",
-'prefs-searchoptions' => 'Opcions de busca',
-'prefs-namespaces' => 'Espacios de nombres',
-'defaultns' => 'Mirar por defeuto en istos espazios de nombres:',
-'default' => 'por defecto',
-'files' => 'Archibos',
-'prefs-custom-css' => 'CSS presonalizato',
-'prefs-custom-js' => 'JS presonalizato',
+'preferences' => 'Preferencias',
+'mypreferences' => 'Preferencias',
+'prefs-edits' => "Numero d'edicions:",
+'prefsnologin' => 'No ye identificato',
+'prefsnologintext' => 'Ha d\'haber <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} encetato una sesión] </span> ta cambiar as preferencias d\'usuario.',
+'changepassword' => 'Cambiar a contrasenya',
+'prefs-skin' => 'Aparencia',
+'skin-preview' => 'Fer una prebatina',
+'prefs-math' => 'Esprisions matematicas',
+'datedefault' => 'Sin de preferencias',
+'prefs-datetime' => 'Calendata y hora',
+'prefs-personal' => 'Datos presonals',
+'prefs-rc' => 'Zaguers cambeos',
+'prefs-watchlist' => 'Lista de seguimiento',
+'prefs-watchlist-days' => "Numero de días que s'amostrarán en a lista de seguimiento:",
+'prefs-watchlist-days-max' => '(masimo 7 diyas)',
+'prefs-watchlist-edits' => "Numero d'edicions que s'amostrarán en a lista ixamplata:",
+'prefs-watchlist-edits-max' => '(numero masimo: 1000)',
+'prefs-watchlist-token' => 'Ficha de lista de seguimiento:',
+'prefs-misc' => 'Atras preferencias',
+'prefs-resetpass' => 'Cambear a contrasenya',
+'prefs-email' => 'Opcions de correu electronico',
+'prefs-rendering' => 'Apariencia',
+'saveprefs' => 'Alzar preferencias',
+'resetprefs' => "Tornar t'as preferencias por defecto",
+'restoreprefs' => 'Restaure todas as confeguracions por defecto',
+'prefs-editing' => 'Edición',
+'prefs-edit-boxsize' => "Grandaria d'a finestra d'edición.",
+'rows' => 'Ringleras:',
+'columns' => 'Columnas:',
+'searchresultshead' => 'Mirar',
+'resultsperpage' => "Resultaus que s'amostrarán por pachina:",
+'contextlines' => "Linias de contexto que s'amostrarán por resultau",
+'contextchars' => 'Carácters de contexto por linia',
+'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):',
+'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':",
+'recentchangesdays-max' => '(masimo $1 {{PLURAL:$1|día|días}})',
+'recentchangescount' => "Numero d'edicions a amostrar, por defecto:",
+'prefs-help-recentchangescount' => 'Inclui os zaguers cambeos, historials de pachina y rechistros.',
+'prefs-help-watchlist-token' => "Si plena iste campo con una clau secreta se chenerará n filo RSS t'a suya lista de seguimeinto.
+Qui conoixca ista clau podrá leyer a suya lista de seguimiento, asinas que esliya una clau segura.
+Contino se i amuestra una calu chenerata de traza aleatoria que puede fer servir si quiere: $1",
+'savedprefs' => "S'han alzato as suyas preferencias.",
+'timezonelegend' => 'Fuso horario:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => "Usar a zona d'o servidor",
+'timezoneuseoffset' => 'Atra (especifica a esferencia)',
+'timezoneoffset' => 'Esferencia¹:',
+'servertime' => 'A hora en o servidor ye:',
+'guesstimezone' => "Emplir-lo con a hora d'o navegador",
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctico',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Ociano Atlantico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Ociano Indico',
+'timezoneregion-pacific' => 'Ociano Pacifico',
+'allowemail' => "Activar a recepción de correu d'atros usuarios",
+'prefs-searchoptions' => 'Opcions de busca',
+'prefs-namespaces' => 'Espacios de nombres',
+'defaultns' => 'Si no, mirar en istos espacios de nombres:',
+'default' => 'por defecto',
+'prefs-files' => 'fichers',
+'prefs-custom-css' => 'CSS presonalizato',
+'prefs-custom-js' => 'JS presonalizato',
+'prefs-reset-intro' => "Puet emplegar ista pachina ta restaurar as suyas preferencias a las valuras por defecto d'o sitio.
+No se podrá desfer iste cambio.",
+'prefs-emailconfirm-label' => 'Confirmación de correu electronico:',
+'prefs-textboxsize' => "Mida d'a pachina d'edición",
+'youremail' => 'Adreza de correu electronico:',
+'username' => "Nombre d'usuario:",
+'uid' => "ID d'usuario:",
+'prefs-memberingroups' => "Miembro {{PLURAL:$1|d'a colla|d'as collas}}:",
+'prefs-registration' => 'Tiempo de rechistro:',
+'yourrealname' => 'Nombre reyal:',
+'yourlanguage' => 'Luenga:',
+'yourvariant' => 'Modalidat linguistica:',
+'yournick' => 'Sinyadura:',
+'prefs-help-signature' => 'Os comentarios en pachina de discusión s\'han de sinyar con "<nowiki>~~~~</nowiki>", que se tornará en a suya sinyatura y calendata.',
+'badsig' => 'A suya sinyadura no ye conforme; comprebe as etiquetas HTML.',
+'badsiglength' => 'A sinyadura ye masiau larga.
+Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'No especificato',
+'gender-male' => 'Hombre',
+'gender-female' => 'Muller',
+'prefs-help-gender' => 'Opcional: Emplegada ta corrección de chenero por o software. Ista información será publica.',
+'email' => 'Adreza de correu-e',
+'prefs-help-realname' => "* Nombre reyal (opcional): si esliche escribir-lo, se ferá servir ta l'atribución d'a suya faina.",
+'prefs-help-email' => "L'adreza de correu-e ye opcional, pero ye precisa ta que le ninviemos una nueva contrasenya si nunc la xublidase. Tamién puede fer que atros usuarios puedan contactar con vusté dende a suya pachina d'usuario u de descusión d'usuario sin haber de revelar a suya identidat.",
+'prefs-help-email-required' => 'Cal una adreza de correu-e.',
+'prefs-info' => 'Información basica',
+'prefs-i18n' => 'Internacionalización',
+'prefs-signature' => 'Sinyatura',
+'prefs-dateformat' => 'Formato de calendata',
+'prefs-timeoffset' => 'Diferencia horaria',
+'prefs-advancedediting' => 'Opcions avanzadas',
+'prefs-advancedrc' => 'Opcions avanzadas',
+'prefs-advancedrendering' => 'Opcions avanzadas',
+'prefs-advancedsearchoptions' => 'Opcions avanzadas',
+'prefs-advancedwatchlist' => 'Opcions avanzadas',
+'prefs-display' => 'Opcions de visualización',
+'prefs-diffs' => 'Diferencias',
# User rights
-'userrights' => "Confeguración d'os dreitos d'os usuarios", # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => "Confegurar collas d'usuarios",
-'userrights-user-editname' => "Escriba un nombre d'usuario:",
-'editusergroup' => "Editar as collas d'usuarios",
-'editinguser' => "S'esta cambiando os dreitos de l'usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => "Editar as collas d'usuarios",
-'saveusergroups' => "Alzar as collas d'usuarios",
-'userrights-groupsmember' => 'Miembro de:',
-'userrights-groups-help' => "Puede cambiar as collas a on que bi ye iste usuario.
+'userrights' => "Confeguración d'os dreitos d'os usuarios",
+'userrights-lookup-user' => "Confegurar collas d'usuarios",
+'userrights-user-editname' => "Escriba un nombre d'usuario:",
+'editusergroup' => "Editar as collas d'usuarios",
+'editinguser' => "S'esta cambiando os dreitos de l'usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => "Editar as collas d'usuarios",
+'saveusergroups' => "Alzar as collas d'usuarios",
+'userrights-groupsmember' => 'Miembro de:',
+'userrights-groupsmember-auto' => 'Miembro implicito de:',
+'userrights-groups-help' => "Puede cambiar as collas a on que bi ye iste usuario.
* Un caixa sinyalata significa que l'usuario ye en ixa colla.
* Una caixa no sinyalata significa que l'usuario no ye en ixa colla.
* Un * indica que vusté no puet sacar a colla dimpués d'adhibir-la, u vice-versa.",
-'userrights-reason' => 'Razón:',
-'userrights-no-interwiki' => "No tiene premiso ta editar os dreitos d'usuario en atras wikis.",
-'userrights-nodatabase' => 'A base de datos $1 no existe u no ye local.',
-'userrights-nologin' => "Ha d'[[Special:UserLogin|encetar una sesión]] con una cuenta d'almenistrador ta poder dar dreitos d'usuario.",
-'userrights-notallowed' => "A suya cuenta no tiene premisos ta dar dreitos d'usuario.",
-'userrights-changeable-col' => 'Grupos que puede cambiar',
-'userrights-unchangeable-col' => 'Collas que no puede cambiar',
+'userrights-reason' => 'Razón:',
+'userrights-no-interwiki' => "No tiene premiso ta editar os dreitos d'usuario en atras wikis.",
+'userrights-nodatabase' => 'A base de datos $1 no existe u no ye local.',
+'userrights-nologin' => "Ha d'[[Special:UserLogin|encetar una sesión]] con una cuenta d'almenistrador ta poder dar dreitos d'usuario.",
+'userrights-notallowed' => "A suya cuenta no tiene premisos ta dar dreitos d'usuario.",
+'userrights-changeable-col' => 'Grupos que puede cambiar',
+'userrights-unchangeable-col' => 'Collas que no puede cambiar',
# Groups
'group' => 'Colla:',
@@ -1195,6 +1247,7 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
'right-bigdelete' => 'Borrar pachinas con historials largos',
'right-deleterevision' => "Borrar y recuperar versions especificas d'una pachina",
'right-deletedhistory' => "Veyer as dentradas borratas de l'historial, sin o suyo texto asociato",
+'right-deletedtext' => 'Veyer o texto borrato y os cambios entre versions borratas',
'right-browsearchive' => 'Mirar pachinas borratas',
'right-undelete' => 'Recuperar una pachina',
'right-suppressrevision' => 'Revisar y recuperar versions amagatas ta os Admenistradors',
@@ -1208,6 +1261,8 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
'right-editprotected' => 'Editar pachinas protechitas (sin de protección en cascada)',
'right-editinterface' => "Editar a interficie d'usuario",
'right-editusercssjs' => "Editar os fichers CSS y JS d'atros usuarios",
+'right-editusercss' => "Editar os fichers CSS d'atros usuarios",
+'right-edituserjs' => "Editar os fichers JS d'atros usuarios",
'right-rollback' => "Desfer a escape as edicions d'o zaguer usuario que cambió una pachina",
'right-markbotedits' => 'Sinyalar as edicions esfeitas como edicions de bot',
'right-noratelimit' => 'No se vei afectato por os limites maximos',
@@ -1224,6 +1279,8 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
'right-siteadmin' => 'Trancar y destrancar a base de datos',
'right-reset-passwords' => "Reiniciar a contrasenya d'atros usuarios",
'right-override-export-depth' => 'Exporta pachinas que incluigan as enlazadas dica un fundaria de 5',
+'right-versiondetail' => "Amostrar a información adicional d'a versión d'o software",
+'right-sendemail' => 'Ninviar un correu electronico a atros usuarios',
# User rights log
'rightslog' => "Rechistro de cambios en os dreitos d'os usuarios",
@@ -1273,6 +1330,15 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
'recentchanges-legend' => 'Opcions sobre a pachina de zaguers cambeos',
'recentchangestext' => "Siga os cambeos más recients d'a wiki en ista pachina.",
'recentchanges-feed-description' => "Seguir os cambios más recients d'o wiki en ista fuent de noticias.",
+'recentchanges-label-legend' => 'Leyenda: $1.',
+'recentchanges-legend-newpage' => '$1 - pachina nueva',
+'recentchanges-label-newpage' => 'Ista edición ha creyau una nueva pachina',
+'recentchanges-legend-minor' => '$1 - edición menor',
+'recentchanges-label-minor' => 'Ista ye una edición menor',
+'recentchanges-legend-bot' => '$1 - edición de bot',
+'recentchanges-label-bot' => 'Ista edición fue feita por un bot',
+'recentchanges-legend-unpatrolled' => '$1 - edición sin patrullar',
+'recentchanges-label-unpatrolled' => "Esta edición encara no s'ha controlato",
'rcnote' => "Contino {{PLURAL:$1|s'amuestra o unico cambeo feito|s'amuestran os zaguers '''$1''' cambeos feitos}} en {{PLURAL:$2|o zaguer día|os zaguers '''$2''' días}}, dica o $5, $4.",
'rcnotefrom' => "Contino s'amuestran os cambeos dende '''$2''' (dica '''$1''').",
'rclistfrom' => 'Amostrar cambeos recients dende $1',
@@ -1299,6 +1365,8 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
# Recent changes linked
'recentchangeslinked' => 'Cambeos relacionatos',
+'recentchangeslinked-feed' => 'Cambeos relacionatos',
+'recentchangeslinked-toolbox' => 'Cambios relacionatos',
'recentchangeslinked-title' => 'Cambeos relacionatos con "$1"',
'recentchangeslinked-noresult' => 'No bi habió cambeos en as pachinas vinculatas en o intervalo de tiempo indicato.',
'recentchangeslinked-summary' => "Ista ye una lista d'os zaguers cambios feitos en pachinas con vinclos dende una pachina especifica (u ta miembros d'una categoría especificata). S'amuestran en '''negreta''' as pachinas d'a suya [[Special:Watchlist|lista de seguimiento]].",
@@ -1308,8 +1376,8 @@ comprebe si latex, dvips, gs y convert son bien instalatos.',
# Upload
'upload' => 'Cargar fichero',
'uploadbtn' => 'Cargar un fichero',
-'reupload' => 'Cargar un atra begada',
'reuploaddesc' => 'Anular a carga y tornar ta o formulario de carga de fichers.',
+'upload-tryagain' => "Ninviar a descripción de l'archivo modificau",
'uploadnologin' => 'No ha encetato una sesión',
'uploadnologintext' => "Ha d'estar [[Special:UserLogin|rechistrau]] ta cargar fichers.",
'upload_directory_missing' => 'O directorio de carga ($1) no existe y no lo puede creyar o servidor web.',
@@ -1340,6 +1408,7 @@ Ta incluyir un fichero en una pachina, emplegue un vinclo d'una d'istas trazas
'minlength1' => 'Os nombres de fichero han de tener a lo menos una letra.',
'illegalfilename' => "O nombre de fichero «$1» tiene carácters no premititos en títols de pachinas. Por favor, cambee o nombre d'o fichero y mire de tornar a cargarlo.",
'badfilename' => 'O nombre d\'a imachen s\'ha cambiato por "$1".',
+'filetype-mime-mismatch' => "A extensión d'o fichero no coincide con o suyo tipo MIME.",
'filetype-badmime' => 'No se premite cargar fichers de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'No puet cargar iste fichero porque o Internet Explorer lo consideraría como "$1", que ye un tipo de fichero no premitito y potencialment perigloso.',
'filetype-unwanted-type' => "Os '''\".\$1\"''' son un tipo de fichero no deseyato. Se prefieren os fichers {{PLURAL:\$3|de tipo|d'os tipos}} \$2.",
@@ -1358,7 +1427,6 @@ Si quiere que o suyo resumen amaneixca aquí, habrá d'editar-lo manualment.
* Nombre d'o fichero que ye cargando: '''<tt>[[:$1]]</tt>'''
* Nombre d'o fichero ya existent: '''<tt>[[:$2]]</tt>'''
Por favor, trigue un nombre diferent.",
-'fileexists-thumb' => "<center>'''Archibo esistent'''</center>",
'fileexists-thumbnail-yes' => "Pareix que o fichero ye una imachen chicota ''(miniatura)''. [[$1|thumb]]
Comprebe por favor o fichero '''<tt>[[:$1]]</tt>'''.
Si o fichero comprebato ye a mesma imachen en tamanyo orichinal no cal cargar una nueva miniatura.",
@@ -1372,6 +1440,7 @@ Si encara quiere cargar ixe fichero, torne y faiga servir un nuevo nombre. [[Fil
'file-deleted-duplicate' => "Un fichero igual que iste ([[$1]]) s'ha borrato enantes. Debería mirar-se o historial de borraus d'o fichero antes de continar cargando-lo atra vegada.",
'successfulupload' => 'Cargata correctament',
'uploadwarning' => 'Alvertencia de carga de fichero',
+'uploadwarning-text' => "Por favor, modifique a descripción d'o fichero d'abaixo y torne a intentar-lo.",
'savefile' => 'Alzar fichero',
'uploadedimage' => '«[[$1]]» cargato.',
'overwroteimage' => 's\'ha cargato una nueva versión de "[[$1]]"',
@@ -1379,11 +1448,14 @@ Si encara quiere cargar ixe fichero, torne y faiga servir un nuevo nombre. [[Fil
'uploaddisabledtext' => 'A carga de fichers ye desactivata.',
'php-uploaddisabledtext' => 'A carga de fichers PHP ye desactivata. Por favor, verfique a confeguración de file_uploads.',
'uploadscripted' => 'Iste fichero contiene codigo de script u HTML que puede estar interpretado incorrectament por un navegador.',
-'uploadcorrupt' => "Iste archibo ye corrompito u tiene una estensión incorreuta. Por fabor, comprebe l'archibo y cargue-lo una atra begada.",
'uploadvirus' => 'Iste fichero tiene un virus! Detalles: $1',
+'upload-source' => 'Fichero fuent',
'sourcefilename' => "Nombre d'o fichero d'orichen:",
+'sourceurl' => "URL d'orichen",
'destfilename' => "Nombre d'o fichero de destín:",
'upload-maxfilesize' => "Masima grandaria d'o fichero: $1",
+'upload-description' => "Descripción d'o fichero",
+'upload-options' => 'Opcions de carga',
'watchthisupload' => 'Cosirar iste fichero',
'filewasdeleted' => 'Una fichero con iste mesmo nombre ya se cargó denantes y estió borrato dimpués. Habría de comprebar $1 antes de tornar a cargar-lo una atra vegada.',
'upload-wasdeleted' => "'''Pare cuenta: Ye cargando un fichero que ya estió borrato d'antes más.'''
@@ -1405,12 +1477,43 @@ MGP # Pentax
PICT # misz.
#</pre> <!-- dixe ista linia esautament igual como ye -->',
-'upload-proto-error' => 'Protocolo incorrecto',
-'upload-proto-error-text' => 'Si quiere cargar fichers dende atra pachina, a URL ha de prencipiar por <code>http://</code> u <code>ftp://</code>.',
-'upload-file-error' => 'Error interna',
-'upload-file-error-text' => "Ha escaicito una error interna entre que se prebaba de creyar un fichero temporal en o servidor. Por favor, contaute con un [[Special:ListUsers/sysop|almenistrador]] d'o sistema.",
-'upload-misc-error' => 'Error esconoixita en a carga',
-'upload-misc-error-text' => "Ha escaixito una error entre que se cargaba o fichero. Por favor, comprebe que a URL ye conforme y accesible y dimpués prebe de fer-lo una atra vegada. Si o problema contina, contaute con un [[Special:ListUsers/sysop|almenistrador]] d'o sistema.",
+'upload-proto-error' => 'Protocolo incorrecto',
+'upload-proto-error-text' => 'Si quiere cargar fichers dende atra pachina, a URL ha de prencipiar por <code>http://</code> u <code>ftp://</code>.',
+'upload-file-error' => 'Error interna',
+'upload-file-error-text' => "Ha escaicito una error interna entre que se prebaba de creyar un fichero temporal en o servidor. Por favor, contaute con un [[Special:ListUsers/sysop|almenistrador]] d'o sistema.",
+'upload-misc-error' => 'Error esconoixita en a carga',
+'upload-misc-error-text' => "Ha escaixito una error entre que se cargaba o fichero. Por favor, comprebe que a URL ye conforme y accesible y dimpués prebe de fer-lo una atra vegada. Si o problema contina, contaute con un [[Special:ListUsers/sysop|almenistrador]] d'o sistema.",
+'upload-too-many-redirects' => 'A URL contien masiadas endreceras',
+'upload-unknown-size' => 'Grandaria desconoixid',
+'upload-http-error' => 'Ha ocorriu una error HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acceso refusau',
+'img-auth-nopathinfo' => 'Falta PATH_INFO.
+O suyo servidor no ye configurau ta pasar ista información.
+Puet que siga basau en CGI y no siga compatible con img_auth.
+Se veiga http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'A rota solicitada no ye en o directorio de cargas configurau',
+'img-auth-badtitle' => 'No s\'ha puesto construyir un títol valito dende "$1".',
+'img-auth-nologinnWL' => 'No ha encetau sesión y "$1" no ye en a lista blanca.',
+'img-auth-nofile' => 'No existe l\'archivo "$1".',
+'img-auth-isdir' => 'Ye mirando d\'acceder ta un directorio "$1".
+Nomás ye premitito l\'acceso ta os fichers.',
+'img-auth-streaming' => 'Streaming (lectura contina) "$1".',
+'img-auth-public' => "A función de img_auth.php ye amostrar archivos dende una wiki privada.
+Ista wiki ye configurada como wiki publica.
+Por seguridat, s'ha desactivau img_auth.php.",
+'img-auth-noread' => 'L\'usuario no tien acceso de lectura ta "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL incorrecta: $1',
+'http-invalid-scheme' => 'As URLs con con prefixo "$1" no son compatibles',
+'http-request-error' => 'A demanda HTTP ha fallau por una error desconoixida.',
+'http-read-error' => 'Error de lectura HTTP.',
+'http-timed-out' => 'A requesta HTTP ha circumducito.',
+'http-curl-error' => 'Error en recuperar a URL: $1',
+'http-host-unreachable' => "No s'ha puesto acceder t'a URL.",
+'http-bad-status' => 'Ha habiu un problema en a requesta HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "No s'ha puesto acceder t'a URL",
@@ -1419,6 +1522,7 @@ PICT # misz.
'upload-curl-error28-text' => "O tiempo de respuesta d'a pachina ye masiau gran. Por favor, comprebe si o servidor ye funcionando, aguarde bell ratet y mire de tornar a fer-lo. Talment deseye prebar de nuevas quan o ret tienga menos carga.",
'license' => 'Licencia:',
+'license-header' => 'Licenciando',
'nolicense' => "No s'en ha trigato garra",
'license-nopreview' => '(Anvista previa no disponible)',
'upload_source_url' => ' (una URL conforme y publicament accesible)',
@@ -1439,6 +1543,7 @@ Fendo click en un encabezau de columna se cambia o criterio d'ordenación.",
'listfiles_count' => 'Versions',
# File description page
+'file-anchor-link' => 'Fichero',
'filehist' => "Historial d'o fichero",
'filehist-help' => 'Punche en una calendata/hora ta veyer o fichero como amaneixeba por ixas envueltas.',
'filehist-deleteall' => 'borrar-lo tot',
@@ -1447,12 +1552,13 @@ Fendo click en un encabezau de columna se cambia o criterio d'ordenación.",
'filehist-current' => 'actual',
'filehist-datetime' => 'Calendata/Hora',
'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => "Miniatura d'a bersión de $1",
+'filehist-thumbtext' => "Miniatura d'a versión de $1",
'filehist-nothumb' => 'Sin de miniatura',
'filehist-user' => 'Usuario',
'filehist-dimensions' => 'Dimensions',
'filehist-filesize' => "Grandaria d'o fichero",
'filehist-comment' => 'Comentario',
+'filehist-missing' => 'No se troba o fichero',
'imagelinks' => 'Vinclos ta o fichero',
'linkstoimage' => "{{PLURAL:$1|A pachina siguient tiene|Contino s'amuestran $1 pachinas que tienen}} vinclos ta iste fichero:",
'linkstoimage-more' => 'Bi ha más de {{PLURAL:$1|una pachina con vinclos|$1 pachinas con vinclos}} enta iste fichero.
@@ -1463,15 +1569,16 @@ Tamién puetz consultar a [[Special:WhatLinksHere/$2|lista completa]].',
'morelinkstoimage' => 'Amostrar [[Special:WhatLinksHere/$1|más vinclos]] ta iste fichero.',
'redirectstofile' => '{{PLURAL:$1|O siguient fichero reendreza|Os siguients $1 fichers reendrezan}} enta iste fichero:',
'duplicatesoffile' => "{{PLURAL:$1|O siguient fichero ye un duplicato|Os siguients $1 fichers son duplicatos}} d'iste fichero ([[Special:FileDuplicateSearch/$2|más detalles]]):",
-'sharedupload' => 'Iste fichero provién de $1 y talment siga emplegato en atros prochectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ta más informazión, consulte $1.',
-'shareduploadwiki-desc' => "Contino s'amuestra a descripzión d'a suya $1 en o reposte compartiu.",
-'shareduploadwiki-linktext' => "pachina de descripzión de l'archibo",
-'noimage' => 'No bi ha garra archibo con ixe nombre. Manimenos, puede $1.',
-'noimage-linktext' => 'cargar uno',
+'sharedupload' => 'Iste fichero provién de $1 y talment siga emplegato en atros prochectos.',
+'sharedupload-desc-there' => "Iste fichero ye de $1 y puet estar emplegau por atros prochectos.
+Por favor mire-se a [$2 pachina de descripción d'o fichero] ta trobar más información.",
+'sharedupload-desc-here' => "Iste fichero ye de $1 y pueden emplegar-lo atros prochectos.
+Debaixo s'amuestra a descripción d'a suya [$2 pachina de descripción].",
+'filepage-nofile' => 'No existe garra fichero con ixe nombre.',
+'filepage-nofile-link' => 'No existe garra fichero con ixe nombre, pero puet [$1 puyar-lo].',
'uploadnewversion-linktext' => "Cargar una nueva versión d'iste fichero",
-'shared-repo-from' => 'dende $1', # $1 is the repository name
-'shared-repo' => 'un reposte compartito', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'dende $1',
+'shared-repo' => 'un reposte compartito',
# File reversion
'filerevert' => 'Revertir $1',
@@ -1500,6 +1607,7 @@ Tamién puetz consultar a [[Special:WhatLinksHere/$2|lista completa]].',
** Dreitos d'autor no respetatos
** Archivo duplicato",
'filedelete-edit-reasonlist' => "Editar as razons d'o borrau",
+'filedelete-maintenance' => 'O borramiento y recuperación de fichers ye desactivau temporalment entre que dura o mantenimiento.',
# MIME search
'mimesearch' => 'Mirar por tipo MIME',
@@ -1520,7 +1628,7 @@ Tamién puetz consultar a [[Special:WhatLinksHere/$2|lista completa]].',
# Random page
'randompage' => "Una pachina a l'azar",
-'randompage-nopages' => 'No bi ha garra pachina en o espazio de nombres "$1".',
+'randompage-nopages' => 'No i ha garra pachina en {{PLURAL:$2|o siguient espacio de nombres|os siguients espacios de nombres}}: "$1".',
# Random redirect
'randomredirect' => 'Ir-ie a una adreza qualsiquiera',
@@ -1532,6 +1640,7 @@ Tamién puetz consultar a [[Special:WhatLinksHere/$2|lista completa]].',
'statistics-header-edits' => "Estatisticas d'edicions",
'statistics-header-views' => 'Estatisticas de vesitas',
'statistics-header-users' => "Estatisticas d'usuarios",
+'statistics-header-hooks' => 'Atras estatisticas',
'statistics-articles' => 'Pachinas de contenito',
'statistics-pages' => 'Pachinas',
'statistics-pages-desc' => "Todas as pachinas d'o wiki, incluyendo pachinas de descusión, reendreceras, etz.",
@@ -1560,8 +1669,8 @@ Cada ringlera contién o vinclo t'a primer y segunda reendreceras, y tamién o d
'brokenredirects' => 'Reendreceras crebatas',
'brokenredirectstext' => 'As siguients endreceras levan enta pachinas inexistents.',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(borrar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'borrar',
'withoutinterwiki' => "Pachinas sin d'interwikis",
'withoutinterwiki-summary' => 'As pachinas siguients no tienen vinclos ta versions en atras luengas:',
@@ -1668,16 +1777,17 @@ Puede reducir o listau trigando un tipo de rechistro, o nombre de l'usuario (sen
# Special:Categories
'categories' => 'Categorías',
-'categoriespagetext' => "As siguients categorías contienen bella pachina u archibo multimedia.
+'categoriespagetext' => "{{PLURAL:$1|A siguient categoría contién|As siguients categorías contienen}} pachinas u fichers multimedia.
No s'amuestran aquí as [[Special:UnusedCategories|categorías no emplegatas]].
-Se beigan tamién as [[Special:WantedCategories|categorías requiestas]].",
+Se veigan tamién as [[Special:WantedCategories|categorías requiestas]].",
'categoriesfrom' => 'Amostrar as categoría que prencipien por:',
'special-categories-sort-count' => 'ordenar por recuento',
'special-categories-sort-abc' => 'ordenar alfabeticament',
# Special:DeletedContributions
-'deletedcontributions' => "Contrebucions d'usuario borratas",
-'deletedcontributions-title' => "Contrebucions d'usuario borradas",
+'deletedcontributions' => "Contrebucions d'usuario borratas",
+'deletedcontributions-title' => "Contrebucions d'usuario borradas",
+'sp-deletedcontributions-contribs' => 'contrebucions',
# Special:LinkSearch
'linksearch' => 'vinclos externos',
@@ -1693,6 +1803,16 @@ Protocolos suportados: <tt>$1</tt>',
'listusersfrom' => 'Amostrar usuarios que o nombre suyo prencipie por:',
'listusers-submit' => 'Amostrar',
'listusers-noresult' => "No s'ha trobato ixe usuario.",
+'listusers-blocked' => '({{GENDER:$1|bloqueyato|bloqueyata}})',
+
+# Special:ActiveUsers
+'activeusers' => "Lista d'usuarios activos",
+'activeusers-intro' => "Ista ye una lista d'usuarios que han teniu bella actividat en os zaguers $1 {{PLURAL:$1|diya|diyas}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|edición|edicions}} en os zaguers {{PLURAL:$3|diya|$3 diyas}}',
+'activeusers-from' => "Amostrar nombres d'usuario que prencipien por:",
+'activeusers-hidebots' => 'Amagar robots',
+'activeusers-hidesysops' => 'Amagar administradors',
+'activeusers-noresult' => "No s'han trobato usuarios.",
# Special:Log/newusers
'newuserlogpage' => 'Rechistro de nuevos usuarios',
@@ -1703,16 +1823,22 @@ Protocolos suportados: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Cuenta creyata automaticament',
# Special:ListGroupRights
-'listgrouprights' => "Dreitos d'a colla d'usuarios",
-'listgrouprights-summary' => "Contino trobará a lista de collas d'usuario definitas en iste wiki, con os suyos dreitos d'acceso asociatos. Tamién puet trobar aquí [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre os dreitos individuals.",
-'listgrouprights-group' => 'Colla',
-'listgrouprights-rights' => 'Dreitos',
-'listgrouprights-helppage' => "Help:Dreitos d'a colla",
-'listgrouprights-members' => '(lista de miembros)',
-'listgrouprights-addgroup' => 'Puet adhibir {{PLURAL:$2|colla|collas}}: $1',
-'listgrouprights-removegroup' => 'Puede borrar {{PLURAL:$2|colla|collas}}: $1',
-'listgrouprights-addgroup-all' => 'Puede adhibir todas as collas',
-'listgrouprights-removegroup-all' => 'Puede borrar todas as collas',
+'listgrouprights' => "Dreitos d'a colla d'usuarios",
+'listgrouprights-summary' => "Contino trobará a lista de collas d'usuario definitas en iste wiki, con os suyos dreitos d'acceso asociatos. Tamién puet trobar aquí [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre os dreitos individuals.",
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dreito atorgau</span>
+* <span class="listgrouprights-revoked">Dreito revocau</span>',
+'listgrouprights-group' => 'Colla',
+'listgrouprights-rights' => 'Dreitos',
+'listgrouprights-helppage' => "Help:Dreitos d'a colla",
+'listgrouprights-members' => '(lista de miembros)',
+'listgrouprights-addgroup' => 'Puet adhibir {{PLURAL:$2|colla|collas}}: $1',
+'listgrouprights-removegroup' => 'Puede borrar {{PLURAL:$2|colla|collas}}: $1',
+'listgrouprights-addgroup-all' => 'Puede adhibir todas as collas',
+'listgrouprights-removegroup-all' => 'Puede borrar todas as collas',
+'listgrouprights-addgroup-self' => 'Adhibir {{PLURAL:$2|colla|collas}} a la suya propia cuenta: $1',
+'listgrouprights-removegroup-self' => "Eliminar {{PLURAL:$2|colla|collas}} d'a suya propia cuenta: $1",
+'listgrouprights-addgroup-self-all' => 'Adhibir-se a todas as collas',
+'listgrouprights-removegroup-self-all' => 'Salir de todas as collas',
# E-mail user
'mailnologin' => "No ninviar l'adreza",
@@ -1785,29 +1911,30 @@ L\'adreza de correu-e que endicó en as suyas [[Special:Preferences|preferencias
'enotif_anon_editor' => 'usuario anonimo $1',
'enotif_body' => 'Quiesto/a $WATCHINGUSERNAME,
-A pachina «$PAGETITLE» de {{SITENAME}}
-ha estato $CHANGEDORCREATED por l\'usuario $PAGEEDITOR o $PAGEEDITDATE.
-Puede trobar a bersión autual en {{fullurl:$PAGETITLE}}
+A pachina $PAGETITLE de {{SITENAME}} ha estato $CHANGEDORCREATED por l\'usuario $PAGEEDITOR o $PAGEEDITDATE. Puede veyer a versión actual en $PAGETITLE_URL.
$NEWPAGE
-O resumen d\'a edizión ye: $PAGESUMMARY $PAGEMINOREDIT
+Resumen d\'edición: $PAGESUMMARY $PAGEMINOREDIT
-Ta comunicar-se con l\'usuario:
-por correu: {{fullurl:Special:Emailuser|target=$PAGEEDITOR}}
-en o wiki: {{fullurl:User:$PAGEEDITOR}}
+Ta contactar con l\'editor:
+correu: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
-Ta recullir nuebas notificazions de cambios d\'ista pachina abrá de besitar-la nuebament.
-Tamién puede cambiar, en a su lista de seguimiento, as opzions de notificazión d\'as pachinas que ye cosirando.
+Ta recullir nuevas notificacions de cambios d\'ista pachina habrá de vesitar-la nuevament.
+Tamién puede cambiar, en a su lista de seguimiento, as opcions de notificación d\'as pachinas que ye cosirando.
Atentament,
- O sistema de notificazión de {{SITENAME}}.
+O sistema de notificación de {{SITENAME}}.
--
-Ta cambiar as opzions d\'a suya lista de seguimiento en:
-{{fullurl:Special:Watchlist|edit=yes}}
+Ta cambiar as opcions d\'a suya lista de seguimiento, punche:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Ta borrar ista pachina d\'a suya lista de seguimiento, punche:
+$UNWATCHURL
-Ta obtenir más informazión y aduya:
+Ta obtenir más información y aduya:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1819,10 +1946,11 @@ Ta obtenir más informazión y aduya:
'exblank' => 'a pachina yera bueda',
'delete-confirm' => 'Borrar "$1"',
'delete-legend' => 'Borrar',
-'historywarning' => 'Pare cuenta: A pachina que ba a borrar tiene un istorial de cambeos:',
+'historywarning' => "'''Pare cuenta!:''' A pachina que ye en momentos de borrar tien un historial de $1 {{PLURAL:$1|versión|versions}}:",
'confirmdeletetext' => "Ye en momentos de borrar d'a base de datos una pachina con tot o suyo historial.
Por favor, confirme que reyalment ye mirando de fer ixo, que entiende as conseqüencias, y que lo fa d'alcuerdo con as [[{{MediaWiki:Policy-url}}|politicas]] d'o wiki.",
'actioncomplete' => 'Acción rematada',
+'actionfailed' => "L'acción ha feito fallita",
'deletedtext' => 'S\'ha borrau "<nowiki>$1</nowiki>".
Se veiga en $2 un rechistro d\'os borraus recients.',
'deletedarticle' => 'borrato "$1"',
@@ -1843,18 +1971,19 @@ Se veiga en $2 un rechistro d\'os borraus recients.',
'delete-warning-toobig' => "Ista pachina tiene un historial d'edición prou largo, con más de $1 {{PLURAL:$1|versión|versions}}. Si la borra podría corromper as operacions d'a base de datos de {{SITENAME}}; contine con cuenta.",
# Rollback
-'rollback' => 'Revertir edicions',
-'rollback_short' => 'Revertir',
-'rollbacklink' => 'revertir',
-'rollbackfailed' => "No s'ha puesto revertir",
-'cantrollback' => "No se pueden revertir as edicions; o zaguer colaborador ye o solo autor d'iste articlo.",
-'alreadyrolled' => "No se puet desfer a zaguer edición de [[:$1]] feita por [[User:$2|$2]] ([[User talk:$2|descusión]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); belatro usuario ya ha editato u desfeito edicions en ixa pachina.
+'rollback' => 'Revertir edicions',
+'rollback_short' => 'Revertir',
+'rollbacklink' => 'revertir',
+'rollbackfailed' => "No s'ha puesto revertir",
+'cantrollback' => "No se pueden revertir as edicions; o zaguer colaborador ye o solo autor d'iste articlo.",
+'alreadyrolled' => "No se puet desfer a zaguer edición de [[:$1]] feita por [[User:$2|$2]] ([[User talk:$2|descusión]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); belatro usuario ya ha editato u desfeito edicions en ixa pachina.
A zaguer edición d'a pachina la fació [[User:$3|$3]] ([[User talk:$3|descusión]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "O resumen d'a edición ye: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "S'han revertito as edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Descusión]]); tornando t'a zaguera versión editada por [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Revertidas as edicions de $1; s'ha retornato t'a zaguer versión de $2.",
-'sessionfailure' => 'Pareix que bi ha un problema con a suya sesión;
+'editcomment' => "O resumen d'a edición ye: \"''\$1''\".",
+'revertpage' => "S'han revertito as edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Descusión]]); tornando t'a zaguera versión editada por [[User:$1|$1]]",
+'revertpage-nouser' => "S'han revertito as edicions feitas por (nombre d'usuario eliminato) a la zaguera versión feita por [[User:$1|$1]]",
+'rollback-success' => "Revertidas as edicions de $1; s'ha retornato t'a zaguer versión de $2.",
+'sessionfailure' => 'Pareix que bi ha un problema con a suya sesión;
s\'ha anulato ista acción como mida de precura contra seqüestros de sesión.
Por favor, prete "Entazaga", recargue a pachina d\'a que venió, y torne a prebar alavez.',
@@ -1872,7 +2001,7 @@ Por favor, prete "Entazaga", recargue a pachina d\'a que venió, y torne a preba
'protectexpiry' => 'Calendata de circumducción:',
'protect_expiry_invalid' => 'O tiempo de circumducción ye incorrecto.',
'protect_expiry_old' => 'O tiempo de circumducción ye una calendata ya pasata.',
-'protect-unchain' => 'Confegurar premisos ta treslaus',
+'protect-unchain-permissions' => 'Desbloqueyar opcions de protección avanzatas',
'protect-text' => "Puetz veyer y cambiar o livel e protección d'a pachina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "No puede cambiar os livels de protección mientres ye bloqueyato. Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
'protect-locked-dblock' => "Os livels de protección no se pueden cambiar por un bloqueyo activo d'a base de datos.
@@ -1899,7 +2028,7 @@ Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
**Guerra d'edicions
**Pachina muit vesitada",
'protect-edit-reasonlist' => 'Editar as razons ta protecher',
-'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,ta cutio:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,ta cutio:infinite',
'restriction-type' => 'Premiso:',
'restriction-level' => 'Livel de restricción:',
'minimum-size' => 'Grandaria menima',
@@ -1935,6 +2064,7 @@ Si s'ha creyato una nueva pachina con o mesmo nombre dende que se borró a orich
'undelete-nodiff' => "No s'ha trobato garra versión anterior.",
'undeletebtn' => 'Restaurar!',
'undeletelink' => 'amostrar/restaurar',
+'undeleteviewlink' => 'veyer',
'undeletereset' => 'Prencipiar',
'undeleteinvert' => 'Contornar selección',
'undeletecomment' => 'Razón:',
@@ -1972,19 +2102,23 @@ $1",
'contributions-title' => "Contribucions de l'usuario $1",
'mycontris' => 'Contrebucions',
'contribsub2' => 'De $1 ($2)',
-'nocontribs' => "No s'han trobato cambeos que concordasen con ixos criterios", # Optional parameter: $1 is the user name
+'nocontribs' => "No s'han trobato cambeos que concordasen con ixos criterios",
'uctop' => '(zaguer cambeo)',
'month' => 'Dende o mes (y anteriors):',
'year' => "Dende l'anyo (y anteriors):",
-'sp-contributions-newbies' => "Amostrar nomás as contrebucions d'os usuarios nuevos",
-'sp-contributions-newbies-sub' => 'Por nuevos usuarios',
-'sp-contributions-newbies-title' => "Contrebucions d'os nuevos usuarios",
-'sp-contributions-blocklog' => 'Rechistro de bloqueyos',
-'sp-contributions-logs' => 'rechistros',
-'sp-contributions-search' => 'Mirar contribucions',
-'sp-contributions-username' => "Adreza IP u nombre d'usuario:",
-'sp-contributions-submit' => 'Mirar',
+'sp-contributions-newbies' => "Amostrar nomás as contrebucions d'os usuarios nuevos",
+'sp-contributions-newbies-sub' => 'Por nuevos usuarios',
+'sp-contributions-newbies-title' => "Contrebucions d'os nuevos usuarios",
+'sp-contributions-blocklog' => 'Rechistro de bloqueyos',
+'sp-contributions-deleted' => "contribucions d'usuario borradas",
+'sp-contributions-logs' => 'rechistros',
+'sp-contributions-talk' => 'descusión',
+'sp-contributions-userrights' => "administración de dreitos d'usuario",
+'sp-contributions-blocked-notice' => "Iste usuario ye bloqueyato en istos momentos. A zaguer dentrada d'o rechistro de bloqueyos se presienta debaixo ta más información:",
+'sp-contributions-search' => 'Mirar contribucions',
+'sp-contributions-username' => "Adreza IP u nombre d'usuario:",
+'sp-contributions-submit' => 'Mirar',
# What links here
'whatlinkshere' => 'Pachinas que enlazan con ista',
@@ -2007,6 +2141,7 @@ $1",
# Block/unblock
'blockip' => 'Bloqueyar usuario',
+'blockip-title' => 'Bloqueyar usuario',
'blockip-legend' => 'Bloqueyar usuario',
'blockiptext' => "Replene o siguient formulario ta bloqueyar l'acceso
d'escritura dende una cuenta d'usuario u una adreza IP especifica.
@@ -2033,7 +2168,7 @@ as pachinas que s'han vandalizato).",
'ipbenableautoblock' => "bloqueyar automaticament l'adreza IP emplegata por iste usuario, y qualsiquier IP posterior dende a que prebe d'editar",
'ipbsubmit' => 'bloqueyar a iste usuario',
'ipbother' => 'Especificar atro periodo',
-'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,ta cutio:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,ta cutio:infinite',
'ipbotheroption' => 'un atra',
'ipbotherreason' => 'Razons diferens u adicionals',
'ipbhidename' => "Amagar o nombre d'usuario en edicions y listas",
@@ -2061,9 +2196,11 @@ as pachinas que s'han vandalizato).",
'ipblocklist-sh-tempblocks' => '$1 bloqueyos temporals',
'ipblocklist-sh-addressblocks' => "$1 bloqueyos d'adrezas IP individuals",
'ipblocklist-submit' => 'Mirar',
+'ipblocklist-localblock' => 'Bloqueyo local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Atro bloqueyo|Atros bloqueyos}}',
'blocklistline' => '$1, $2 ha bloqueyato a $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'zircunduze o $1',
+'expiringblock' => 'circumduz o $1 a las $2',
'anononlyblock' => 'nomás anon.',
'noautoblockblock' => 'Bloqueyo automatico desactivato',
'createaccountblock' => "S'ha bloqueyato a creyación de nuevas cuentas",
@@ -2077,7 +2214,10 @@ as pachinas que s'han vandalizato).",
'contribslink' => 'contrebucions',
'autoblocker' => 'Ye bloqueyato automaticament porque a suya adreza IP l\'ha feito servir recientement "[[User:$1|$1]]". A razón data ta bloqueyar a "[[User:$1|$1]]" estió "$2".',
'blocklogpage' => 'Rechistro de bloqueyos',
-'blocklog-fulllog' => 'Rechistro de bloqueyos completo',
+'blocklog-showlog' => "Iste usuario ya ha estau bloqueyau.
+Ta más detalles, debaixo s'amuestro o rechistro de bloqueyos:",
+'blocklog-showsuppresslog' => "Iste usuario ha estau bloqueyau y amagau.
+Ta más detalles, debaixo s'amuestra o rechistro de supresions:",
'blocklogentry' => "S'ha bloqueyato a [[$1]] con una durada de $2 $3",
'reblock-logentry' => 'cambiato o bloqueyo de [[$1]] con circumducción o $3 a las $2',
'blocklogtext' => "Isto ye un rechistro de bloqueyos y desbloqueyos d'usuarios. As adrezas bloqueyatas automaticament no amaneixen aquí. Mire-se a [[Special:IPBlockList|lista d'adrezas IP bloqueyatas]] ta veyer a lista actual de vedas y bloqueyos.",
@@ -2096,9 +2236,11 @@ as pachinas que s'han vandalizato).",
'ipb_already_blocked' => '"$1" ya yera bloqueyato',
'ipb-needreblock' => "== Ya ye bloqueyato ==
$1 ya ye bloqueyato. Quiere cambiar as condicions d'o bloqueyo?",
+'ipb-otherblocks-header' => '{{PLURAL:$1|Atro bloqueyo|Atros bloqueyos}}',
'ipb_cant_unblock' => "'''Error''': no s'ha trobato o ID de bloqueyo $1. Talment sía ya desbloqueyato.",
'ipb_blocked_as_range' => "Error: L'adreza IP $1 no s'ha bloqueyato dreitament y por ixo no se puede desbloqueyar. Manimenos, ye bloqueyata por estar parte d'o rango $2, que sí puede desbloqueyar-se de conchunta.",
'ip_range_invalid' => "O rango d'adrezas IP no ye conforme.",
+'ip_range_toolarge' => 'No se permiten os bloqueyos de rangos más grans que /$1.',
'blockme' => 'bloqueyar-me',
'proxyblocker' => 'bloqueyador de proxies',
'proxyblocker-disabled' => 'Ista función ye desactivata.',
@@ -2107,6 +2249,7 @@ $1 ya ye bloqueyato. Quiere cambiar as condicions d'o bloqueyo?",
'sorbsreason' => 'A suya adreza IP ye en a lista de proxies ubiertos en a DNSBL de {{SITENAME}}.',
'sorbs_create_account_reason' => 'A suya adreza IP ye en a lista de proxies ubiertos en a DNSBL de {{SITENAME}}. No puede creyar una cuenta',
'cant-block-while-blocked' => 'No puet bloqueyar a atros usuarios en o tiempo que ye bloqueyato.',
+'cant-see-hidden-user' => "L'usuario a qui ye mirando de bloqueyar ya ye bloqueyau y amagau. Como que ye posible que vusté no tienga o dreito hideuser, no puede veyer ni editar os bloqueyos d'ixe usuario.",
# Developer tools
'lockdb' => 'Trancar a base de datos',
@@ -2148,6 +2291,7 @@ por favor, asegure-se d'entender as conseqüencias que tendrá ista acción ante
En ixos casos, si lo deseya, habrá de tresladar u combinar manualment o conteniu d'a pachina de descusión.",
'movearticle' => 'Tresladar pachina:',
+'moveuserpage-warning' => "'''Pare cuenta:''' ye en momentos de tresladar una pachina d'usuario. Pare cuenta en que nomás a pachina será tresladada peor l'usuario '''no''' será renombrau.",
'movenologin' => 'No ha encetato sesión',
'movenologintext' => 'Amenista estar un usuario rechistrato y [[Special:UserLogin|aber-se identificato encetando una sesión]] ta tresladar una pachina.',
'movenotallowed' => 'No tiene premisos ta tresladar pachinas.',
@@ -2158,7 +2302,7 @@ En ixos casos, si lo deseya, habrá de tresladar u combinar manualment o conteni
'move-watch' => 'Cosirar iste articlo',
'movepagebtn' => 'Tresladar pachina',
'pagemovedsub' => 'Treslado feito correctament',
-'movepage-moved' => "S'ha tresladato '''\"\$1\" ta \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "S'ha tresladato '''\"\$1\" ta \"\$2\"'''",
'movepage-moved-redirect' => "S'ha creyato una reendrecera.",
'movepage-moved-noredirect' => "S'ha cancelato a creyación d'una reendrecera.",
'articleexists' => 'Ya bi ha una pachina con ixe nombre u o nombre que ha eslechito no ye conforme. Por favor trigue un atro nombre.',
@@ -2199,6 +2343,11 @@ A pachina de destino ("[[:$1]]") ya existe. Quiere borrar-la ta premitir o tresl
'imageinvalidfilename' => "O nombre d'o fichero obchectivo no ye conforme",
'fix-double-redirects' => 'Esviellar todas as reendreceras que plegan ta o títol orichinal',
'move-leave-redirect' => 'Deixar una reendrecera',
+'protectedpagemovewarning' => "'''Pare cuenta:''' Ista pachina s'ha bloqueyat de traza que nomás usuarios con dreitos d'administrador puedan tresladar-la. Ta más información s'amuestra contino a zaguera dentrada d'o rechistro.",
+'semiprotectedpagemovewarning' => "'''Pare cuenta:''' Ista pachina s'ha bloqueyato ta que nomás os usuarios rechistratos pueden puedan tresladar-la. Contino s'amuestra a zaguera dentrada d'o rechistro:",
+'move-over-sharedrepo' => '== O fichero existe ==
+[[:$1]] existe en un reposte compartiu. Mover o fichero ta ista títol invalidará o fichero completo.',
+'file-exists-sharedrepo' => 'O nombre de fichero trigau ya ye estando usato en un reposte compartiu. Por favor, esliya-ne un atro.',
# Export
'export' => 'Exportar pachinas',
@@ -2220,15 +2369,21 @@ En iste zaguer caso tamién puede usar un vinclo, por eixemplo [[{{#Special:Expo
'export-pagelinks' => 'Incluyir pachinas vinculadas con una fundaria de:',
# Namespace 8 related
-'allmessages' => "Mensaches d'o sistema",
-'allmessagesname' => 'Nombre',
-'allmessagesdefault' => 'texto por defecto',
-'allmessagescurrent' => 'texto actual',
-'allmessagestext' => "Ista ye una lista de totz os mensaches disponibles en o espacio de nombres MediaWiki.
+'allmessages' => "Mensaches d'o sistema",
+'allmessagesname' => 'Nombre',
+'allmessagesdefault' => 'texto por defecto',
+'allmessagescurrent' => 'texto actual',
+'allmessagestext' => "Ista ye una lista de totz os mensaches disponibles en o espacio de nombres MediaWiki.
Vesite por favor [http://www.mediawiki.org/wiki/Localisation a pachina sobre localización de MediaWiki] y [http://translatewiki.net translatewiki.net] si deseya contrebuyir t'a localización cheneral de MediaWiki.",
-'allmessagesnotsupportedDB' => 'Ista pachina no ye disponible porque wgUseDatabaseMessages ye desactivato.',
-'allmessagesfilter' => "Filtrar por a etiqueta d'os mensaches:",
-'allmessagesmodified' => 'Amostrar nomás os mensaches cambiatos',
+'allmessagesnotsupportedDB' => 'Ista pachina no ye disponible porque wgUseDatabaseMessages ye desactivato.',
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar por estau de personalización:',
+'allmessages-filter-unmodified' => 'Sin modificar',
+'allmessages-filter-all' => 'Totz',
+'allmessages-filter-modified' => 'Modificato',
+'allmessages-prefix' => 'Filtrar por prefixo:',
+'allmessages-language' => 'Idioma:',
+'allmessages-filter-submit' => 'Ir-ie',
# Thumbnails
'thumbnail-more' => 'Fer más gran',
@@ -2238,6 +2393,9 @@ Vesite por favor [http://www.mediawiki.org/wiki/Localisation a pachina sobre loc
'djvu_no_xml' => "No s'ha puesto replegar o XML ta o fichero DjVu",
'thumbnail_invalid_params' => "Os parametros d'as miniatura no son correctos",
'thumbnail_dest_directory' => "No s'ha puesto creyar o directorio de destino",
+'thumbnail_image-type' => "Mena d'imachen no prevista",
+'thumbnail_gd-library' => "Configuración d'a librería GD incompleta: falta a función $1",
+'thumbnail_image-missing' => 'O fichero pareix no existir: $1',
# Special:Import
'import' => 'Importar pachinas',
@@ -2302,6 +2460,7 @@ Todas as importacions interwiki se rechistran en o [[Special:Log/import|rechistr
Puede veyer-ne, manimenos, o codigo fuent.',
'tooltip-ca-history' => "Versions anteriors d'ista pachina.",
'tooltip-ca-protect' => 'Protecher ista pachina',
+'tooltip-ca-unprotect' => 'Desproteger ista pagina',
'tooltip-ca-delete' => 'Borrar ista pachina',
'tooltip-ca-undelete' => 'Restaurar as edicions feitas a ista pachina antis que no estase borrata',
'tooltip-ca-move' => 'Tresladar (renombrar) ista pachina',
@@ -2312,6 +2471,7 @@ Puede veyer-ne, manimenos, o codigo fuent.',
'tooltip-search-fulltext' => 'Mirar iste texto en as pachinas',
'tooltip-p-logo' => 'Portalada',
'tooltip-n-mainpage' => 'Vesitar a Portalada',
+'tooltip-n-mainpage-description' => 'Vesitar a pachina prencipal',
'tooltip-n-portal' => 'Sobre o prochecto, que puede fer, aon trobar as cosas',
'tooltip-n-currentevents' => 'Trobar información cheneral sobre escaicimientos actuals',
'tooltip-n-recentchanges' => "A lista d'os zaguers cambeos en o wiki",
@@ -2356,10 +2516,12 @@ Puede veyer-ne, manimenos, o codigo fuent.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
'siteuser' => 'Usuario $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Ista pachina estió modificata por zaguer vegada a $2, $1 por $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} usuario anonimo $1',
+'lastmodifiedatby' => 'Ista pachina estió modificata por zaguer vegada a $2, $1 por $3.',
'othercontribs' => 'Basato en o treballo de $1.',
'others' => 'atros',
'siteusers' => '{{PLURAL:$2|Usuario|Usuarios}} $1 de {{SITENAME}}',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|usuario|usuarios}} anonimos $1',
'creditspage' => "Creditos d'a pachina",
'nocredits' => 'No bi ha información de creditos ta ista pachina.',
@@ -2394,11 +2556,23 @@ Puede veyer-ne, manimenos, o codigo fuent.',
'mw_math_modern' => 'Recomendato ta navegadors modernos',
'mw_math_mathml' => 'MathML si ye posible (esperimental)',
+# Math errors
+'math_failure' => 'Error en o codigo',
+'math_unknown_error' => 'error esconoxita',
+'math_unknown_function' => 'función esconoxita',
+'math_lexing_error' => 'error de lexico',
+'math_syntax_error' => 'error de sintaxi',
+'math_image_error' => 'A conversión enta PNG ha tenito errors;
+comprebe si latex, dvips, gs y convert son bien instalatos.',
+'math_bad_tmpdir' => "No s'ha puesto escribir u creyar o directorio temporal d'esprisions matematicas",
+'math_bad_output' => "No s'ha puesto escribir u creyar o directorio de salida d'esprisions matematicas",
+'math_notexvc' => "No s'ha trobato o fichero executable ''texvc''. Por favor, leiga <em>math/README</em> ta confegurar-lo correctament.",
+
# Patrolling
'markaspatrolleddiff' => 'Sinyalar como ya controlato',
'markaspatrolledtext' => 'Sinyalar iste articlo como controlato',
'markedaspatrolled' => 'Sinyalato como controlato',
-'markedaspatrolledtext' => 'A bersión trigata ye siñalata como controlata.',
+'markedaspatrolledtext' => "A versión seleccionata de [[:$1]] s'ha sinyalato como patrullata.",
'rcpatroldisabled' => "S'ha desactivato o control d'os zagurers cambeos",
'rcpatroldisabledtext' => "A función de control d'os zaguers cambeos ye desactivata en iste inte.",
'markedaspatrollederror' => 'No se puede sinyalar como controlata',
@@ -2428,13 +2602,10 @@ $1',
'previousdiff' => "← Ir t'a edición anterior",
'nextdiff' => "Ir t'a edición siguient →",
-# Visual comparison
-'visual-comparison' => 'Comparanza bisual',
-
# Media information
'mediawarning' => "'''Pare cuenta!''': Iste tipo de fichero puet contener codigo endino.
En executar-lo, podría meter en un contornillo a seguridat d'o suyo sistema.",
-'imagemaxsize' => "Limitar as imachens en as pachinas de descripzión d'archibos á:",
+'imagemaxsize' => "Limite de grandaria d'as imáchens:<br />''(ta pachinas de descripción de fichers)''",
'thumbsize' => "Midas d'a miniatura:",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pachina|pachinas}}',
'file-info' => "(grandaria d'o fichero: $1; tipo MIME: $2)",
@@ -2443,6 +2614,8 @@ En executar-lo, podría meter en un contornillo a seguridat d'o suyo sistema.",
'svg-long-desc' => '(fichero SVG, nominalment $1 × $2 píxels, grandaria: $3)',
'show-big-image' => 'Imachen en a maxima resolución',
'show-big-image-thumb' => "<small>Grandaria d'ista anvista previa: $1 × $2 píxels</small>",
+'file-info-gif-looped' => 'embuclau',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|imachen|imáchens}}',
# Special:NewFiles
'newimages' => 'Galería de nuevas imachens',
@@ -2473,7 +2646,7 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Amplaria',
@@ -2600,14 +2773,14 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-unknowndate' => 'Calendata esconoixita',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Contornata horizontalment', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Chirata 180º', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Contornata verticalment', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => "Chirata 90° en contra d'as agullas d'o reloch y contornata verticalment", # 0th row: left; 0th column: top
-'exif-orientation-6' => "Chirata 90° como as agullas d'o reloch", # 0th row: right; 0th column: top
-'exif-orientation-7' => "Chirata 90° como as agullas d'o reloch y contornata verticalment", # 0th row: right; 0th column: bottom
-'exif-orientation-8' => "Chirata 90° en contra d'as agullas d'o reloch", # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Contornata horizontalment',
+'exif-orientation-3' => 'Chirata 180º',
+'exif-orientation-4' => 'Contornata verticalment',
+'exif-orientation-5' => "Chirata 90° en contra d'as agullas d'o reloch y contornata verticalment",
+'exif-orientation-6' => "Chirata 90° como as agullas d'o reloch",
+'exif-orientation-7' => "Chirata 90° como as agullas d'o reloch y contornata verticalment",
+'exif-orientation-8' => "Chirata 90° en contra d'as agullas d'o reloch",
'exif-planarconfiguration-1' => 'formato de paquetz de píxels',
'exif-planarconfiguration-2' => 'formato plano',
@@ -2729,7 +2902,7 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-gpsmeasuremode-2' => 'Mesura bidimensional',
'exif-gpsmeasuremode-3' => 'Mesura tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometros por hora',
'exif-gpsspeed-m' => 'Millas por hora',
'exif-gpsspeed-n' => 'Nugos',
@@ -2748,6 +2921,7 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'watchlistall2' => 'totz',
'namespacesall' => 'totz',
'monthsall' => 'totz',
+'limitall' => 'Totz',
# E-mail address confirmation
'confirmemail' => 'Confirmar adreza de correu-e',
@@ -2767,17 +2941,17 @@ O programa retornó o siguient codigo d'error: $1",
'confirmemail_loggedin' => 'A suya adreza de correu-e ya ye confirmata.',
'confirmemail_error' => 'Bella cosa falló en alzar a suya confirmación.',
'confirmemail_subject' => "confirmación de l'adreza de correu-e de {{SITENAME}}",
-'confirmemail_body' => 'Belún, probablement busté mesmo, ha rechistrato una cuenta "$2" con ista adreza de correu-e en {{SITENAME}} dende l\'adreza IP $1.
+'confirmemail_body' => 'Belún, probablement vusté mesmo, ha rechistrato una cuenta "$2" con ista adreza de correu-e en {{SITENAME}} dende l\'adreza IP $1.
-Ta confirmar que ista cuenta reyalment le perteneixe y autibar as funzions de correu-e en {{SITENAME}}, ubra iste binclo en o suyo nabegador:
+Ta confirmar que ista cuenta reyalment le perteneixe y activar as funcions de correu-e en {{SITENAME}}, ubra iste vinclo en o suyo navegador:
$3
-Si a cuenta *no* ye suya, siga iste atro binclo ta anular a confirmazión d\'adreza de correu-e:
+Si a cuenta *no* ye suya, siga iste atro vinclo ta anular a confirmación d\'adreza de correu-e:
$5
-Iste codigo de confirmazión zircunduzirá en $4.',
+Iste codigo de confirmación circumducirá en $4.',
'confirmemail_invalidated' => "Anular a confirmación d'adreza de correu-e",
'invalidateemail' => 'Anular a confirmación de correu-e',
@@ -2870,7 +3044,7 @@ Tamién puede fer servir o [[Special:Watchlist/edit|editor estándar]].",
'duplicate-defaultsort' => "Pare cuenta: A clau d'ordenación por defecto «$2» anula l'anterior clau d'ordenación por defecto «$1».",
# Special:Version
-'version' => 'Versión', # Not used as normal message but as header for the special page itself
+'version' => 'Versión',
'version-extensions' => 'Estensions instalatas',
'version-specialpages' => 'Pachinas especials',
'version-parserhooks' => "Grifios d'o parser (parser hooks)",
@@ -2884,7 +3058,7 @@ Tamién puede fer servir o [[Special:Watchlist/edit|editor estándar]].",
'version-skin-extension-functions' => "Funcions d'estensión de l'aparencia (Skin)",
'version-hook-name' => "Nombre d'o grifio",
'version-hook-subscribedby' => 'Suscrito por',
-'version-version' => 'Bersión',
+'version-version' => '(Versión $1)',
'version-license' => 'Licencia',
'version-software' => 'Software instalato',
'version-software-product' => 'Producto',
@@ -2965,4 +3139,15 @@ Escriba o nombre d\'o fichero sin o prefixo "{{ns:file}}:".',
'dberr-outofdate' => "Pare cuenta que o suyo endice d'o nuestro conteniu puet que no siga esviellau.",
'dberr-cachederror' => "A siguient pachina ye una pachina alzada d'a pachina solicitada, y podría no estar actualizada.",
+# HTML forms
+'htmlform-invalid-input' => "Bi ha problemas con belún d'os datos que ha escrito",
+'htmlform-select-badoption' => 'A valura especificada no ye una opción conforme.',
+'htmlform-int-invalid' => 'A valura que especificó no ye un entero.',
+'htmlform-float-invalid' => 'A valura que ha especificato no ye un entero.',
+'htmlform-int-toolow' => "A valura que ha especificato ye por debaixo d'o menimo de $1",
+'htmlform-int-toohigh' => "A valura que ha especificato ye alto d'o maximo de $1",
+'htmlform-submit' => 'Ninviar',
+'htmlform-reset' => 'Desfer cambios',
+'htmlform-selectorother-other' => 'Atros',
+
);
diff --git a/languages/messages/MessagesAng.php b/languages/messages/MessagesAng.php
index f68a02d3..3bb379e4 100644
--- a/languages/messages/MessagesAng.php
+++ b/languages/messages/MessagesAng.php
@@ -64,6 +64,13 @@ $messages = array(
'underline-never' => 'Nǣfre',
'underline-default' => 'Ƿebbsēċendes ȝeƿuna',
+# Font style option in Special:Preferences
+'editfont-style' => 'Feldes trahtānsīenmōd ādihtan:',
+'editfont-default' => 'Ƿebbsēċendes ȝeƿuna',
+'editfont-monospace' => 'Ānbrǣdisc trahtānsīen',
+'editfont-sansserif' => 'Būtonscrīfisc trahtānsīen',
+'editfont-serif' => 'Scrīfisc trahtānsīen',
+
# Dates
'sunday' => 'Sunnandæȝ',
'monday' => 'Mōnandæȝ',
@@ -123,7 +130,7 @@ $messages = array(
'category-media-header' => 'Ȝemynda in flocce "$1"',
'category-empty' => "''Þes flocc hæfþ nū nān ȝeƿritu oþþe ȝemynda in.''",
'hidden-categories' => '{{PLURAL:$1|Ȝehȳded flocc|Ȝehȳdede floccas}}',
-'hidden-category-category' => 'Ȝehȳdede floccas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ȝehȳdede floccas',
'category-subcat-count' => '{{PLURAL:$2|Þes flocc hæfþ efne þone folgende underflocc.|Þes flocc hæfþ þā folgende {{PLURAL:$1|underflocc|$1 underfloccas}}, þāra $2.}}',
'category-subcat-count-limited' => 'Þes flocc hæfþ {{PLURAL:$1|þisne underflocc|$1 þās underfloccas}}.',
'category-article-count' => '{{PLURAL:$2|Þes flocc hæfþ efne þā folgende sīdan.|{{PLURAL:$1|Sēo folgende sīde is|$1 Þā folgendan sīdan sind}} in þissum flocce, þāra $2.}}',
@@ -137,10 +144,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-'about' => 'Ymbe',
-'article' => 'Innoþsīde',
-'newwindow' => '(openaþ in nīƿum ēagþyrele)',
-'cancel' => 'Undōn',
+'about' => 'Ymbe',
+'article' => 'Innoþsīde',
+'newwindow' => '(openaþ in nīƿum ēagþyrele)',
+'cancel' => 'Undōn',
+'moredotdotdot' => 'Mā...',
+'mypage' => 'Mīnu sīde',
+'mytalk' => 'Mīn ȝespreċ',
+'anontalk' => 'Ȝespreċ for þissum IP',
+'navigation' => 'Þurhfōr',
+'and' => '&#32;and',
+
+# Cologne Blue skin
'qbfind' => 'Findan',
'qbbrowse' => 'Ofer sēċan',
'qbedit' => 'Ādihtan',
@@ -148,12 +163,34 @@ $messages = array(
'qbpageinfo' => 'Ȝeƿef',
'qbmyoptions' => 'Mīna sīdan',
'qbspecialpages' => 'Syndriȝa sīdan',
-'moredotdotdot' => 'Mā...',
-'mypage' => 'Mīnu sīde',
-'mytalk' => 'Mīn ȝespreċ',
-'anontalk' => 'Ȝespreċ for þissum IP',
-'navigation' => 'Þurhfōr',
-'and' => '&#32;and',
+'faq' => 'Oftost ascoda ascunga',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Mearcunge ēacian',
+'vector-action-move' => 'Ƿeȝan',
+'vector-action-protect' => 'Beorgan',
+'vector-action-undelete' => 'Edƿyrcan',
+'vector-action-unprotect' => 'Unbeorgan',
+'vector-namespace-category' => 'Flocc',
+'vector-namespace-help' => 'Helpsīde',
+'vector-namespace-image' => 'Fīl',
+'vector-namespace-main' => 'Sīde',
+'vector-namespace-media' => 'Ȝemyndesīde',
+'vector-namespace-mediawiki' => 'Ǣrend',
+'vector-namespace-project' => 'Ƿeorcsīde',
+'vector-namespace-special' => 'Syndriȝu sīde',
+'vector-namespace-talk' => 'Ȝespreċ',
+'vector-namespace-template' => 'Bysen',
+'vector-namespace-user' => 'Brūcendsīde',
+'vector-view-create' => 'Scieppan',
+'vector-view-edit' => 'Ādihtan',
+'vector-view-history' => 'Stǣr sēon',
+'vector-view-view' => 'Rǣdan',
+'vector-view-viewsource' => 'Fruma sēon',
+'actions' => 'Fremmendas',
+'namespaces' => 'Namastedas',
+'variants' => 'Missenliċnessa',
'errorpagetitle' => 'Ƿōh',
'returnto' => 'To $1 eftgān.',
@@ -202,11 +239,16 @@ $messages = array(
'otherlanguages' => 'On ōðrum sprǣċum',
'redirectedfrom' => '(Edlǣded fram $1)',
'redirectpagesub' => 'Edlǣdsīde',
-'lastmodifiedat' => 'Man læst þās sīdan hƿearf on $1, æt $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Man læst þās sīdan hƿearf on $1, æt $2.',
'protectedpage' => 'Borgenu sīde',
'jumpto' => 'Forðgangan on:',
'jumptonavigation' => 'þurhfōr',
'jumptosearch' => 'sēcan',
+'view-pool-error' => 'Sāriȝ, þās þeȝntelleras nū ƿyrcaþ tō miċel.
+Tō mæniȝ brūcendas fandiaþ to sēonne þās sīdan.
+Bidde forbyrde scortre tīde fore fandiende to sēonne þās sīdan eft.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Ymbe {{SITENAME}}n',
@@ -219,8 +261,6 @@ $messages = array(
'disclaimerpage' => 'Ƿeorc:Ymbcƿidas',
'edithelp' => 'Ādihtan help',
'edithelppage' => 'Help:Ādihtan',
-'faq' => 'Oftost ascoda ascunga',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Innoþ',
'mainpage' => 'Hēafodsīde',
'mainpage-description' => 'Hēafodsīde',
@@ -285,29 +325,30 @@ $messages = array(
Getæl gengra ānlicra trameta cann mann findand be [[Special:SpecialPages|{{int:specialpages}}]].',
# General errors
-'error' => 'Ƿōh',
-'databaseerror' => 'Cȳþþuhordes ƿōh',
-'dberrortext' => 'Gewitnesshordes bēnes endebyrdnesse unrihtness hæfþ gelumpen.
+'error' => 'Ƿōh',
+'databaseerror' => 'Cȳþþuhordes ƿōh',
+'dberrortext' => 'Gewitnesshordes bēnes endebyrdnesse unrihtness hæfþ gelumpen.
Þis mæg gelimpan unrihtnesse on þǣre sōftware.
Sēo nīwoste gesōhte sōftware bēn wæs:
<blockquote><tt>$1</tt></blockquote>
fram innan weorce "<tt>$2</tt>".
Gewitnesshord edwende unrihtnesse "<tt>$3: $4</tt>"',
-'laggedslavemode' => "'''Ƿarnung:''' Sīde ne mihteliċ ne hæfþ nīƿa nīƿunga.",
-'enterlockreason' => 'Wrīt race þǣre forwiernunge and apunsunge be þǣm tīman on þǣm bēo sēo forwiernung forlǣten',
-'missingarticle-rev' => '(nīƿung#: $1)',
-'internalerror' => 'Innan ƿōh',
-'internalerror_info' => 'Innan ƿōh: $1',
-'filerenameerror' => 'Ne cúðe ednemnan þrǽd "$1" tó "$2".',
-'filenotfound' => 'Ne cūðe findan þrǣd "$1".',
-'formerror' => 'Ƿōh: ne meahte cȳþþuȝeƿrit forþsendan',
-'badarticleerror' => 'Þēos dǣd ne cann bēon gefremed on þissum tramete.',
-'badtitle' => 'Unandfenge títul',
-'viewsource' => 'Fruman sēon',
-'cascadeprotected' => 'Þis trament hafaþ geworden gebeorgod wiþ ādihtunge, for þǣm þe hē is geinnod in þissum trament {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgod mid þǣre "cascading" cyre gesett wyrcende: $2',
+'laggedslavemode' => "'''Ƿarnung:''' Sīde ne mihteliċ ne hæfþ nīƿa nīƿunga.",
+'enterlockreason' => 'Wrīt race þǣre forwiernunge and apunsunge be þǣm tīman on þǣm bēo sēo forwiernung forlǣten',
+'missingarticle-rev' => '(nīƿung#: $1)',
+'internalerror' => 'Innan ƿōh',
+'internalerror_info' => 'Innan ƿōh: $1',
+'fileappenderrorread' => 'Ne meahte "$1" rǣdan on ēacunge.',
+'fileappenderror' => 'Ne meahte "$1" to "$2" ēacian.',
+'filerenameerror' => 'Ne cúðe ednemnan þrǽd "$1" tó "$2".',
+'filenotfound' => 'Ne cūðe findan þrǣd "$1".',
+'formerror' => 'Ƿōh: ne meahte cȳþþuȝeƿrit forþsendan',
+'badarticleerror' => 'Þēos dǣd ne cann bēon gefremed on þissum tramete.',
+'badtitle' => 'Unandfenge títul',
+'viewsource' => 'Fruman sēon',
+'cascadeprotected' => 'Þis trament hafaþ geworden gebeorgod wiþ ādihtunge, for þǣm þe hē is geinnod in þissum trament {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgod mid þǣre "cascading" cyre gesett wyrcende: $2',
# Login and logout pages
-'logouttitle' => 'Brūcendūtmeldung',
'logouttext' => "'''Þū eart nū ūtmeldod.'''
Þū canst ætfeolan tō brūcenne {{SITENAME}} ungecūðe, oþþe þū canst [[Special:UserLogin|inmeldian eft]] tō ylcan oþþe ōðrum brūcende.
@@ -315,7 +356,6 @@ Cnāw þæt sume sīdan cunnon gelǣstende ēowod wesan swā þū wǣre gīet in
'welcomecreation' => '== Ƿilcumen, $1! ==
Þīn hordcleofa ƿearþ ȝescapen. Ne forȝiet tō hƿierfenne þīna [[Special:Preferences|{{SITENAME}} foreberunga]].',
-'loginpagetitle' => 'Brūcendinmeldung',
'yourname' => 'Þīn brūcendnama',
'yourpassword' => 'Þafungƿord:',
'yourpasswordagain' => 'Þafungƿord edƿrītan:',
@@ -324,6 +364,7 @@ Cnāw þæt sume sīdan cunnon gelǣstende ēowod wesan swā þū wǣre gīet in
'login' => 'Inmeldian',
'nav-login-createaccount' => 'Nīƿne hordcleofan scieppan oþþe inmeldian',
'userlogin' => 'Macian nīwne grīman oþþe grīman brūcan',
+'userloginnocreate' => 'Inmeldian',
'logout' => 'Ūtmeldian',
'userlogout' => 'Ūtmeldian',
'notloggedin' => 'Ne inȝemelded',
@@ -334,15 +375,8 @@ Cnāw þæt sume sīdan cunnon gelǣstende ēowod wesan swā þū wǣre gīet in
'badretype' => 'Þā þafungƿord þe ƿrite þū, bēoþ unȝemæcca.',
'userexists' => 'Hƿā hæfþ þæt brūcendnama.
Bidde ōðer brūcendnama ċēosan.',
-'youremail' => 'E-ǣrende *',
-'username' => 'Brūcendnama:',
-'yourrealname' => 'Þīn rihtnama*',
-'yourlanguage' => 'Brūcendofermearces sprǣc',
-'yourvariant' => 'Sprǣce wendung',
-'yourgender' => 'Ȝecynd:',
-'gender-male' => 'Ƿer',
-'gender-female' => 'Frēo',
'loginerror' => 'Inmeldunge ƿōh',
+'createaccounterror' => 'Ne cūðe macian reccend: $1',
'nocookiesnew' => 'Se brūcendreccend wæs gemacod, ac þū neart inmedlod.
{{SITENAME}} brȳcþ tācninclu tō inmeldienne brūcendas.
Þū hafast forwierned tācninclu.
@@ -353,6 +387,7 @@ Bidde þē, lǣt hīe tō twyrcenne, and þǣræfter inmelda þurh þīnne nīwa
Stafena micelnesse sind hefige and ānlica on brūcendnamum.
Scēawa þīne wrītunge eft, oþþe brūc þā cartan þe is hērunder tō [[Special:UserLogin/signup|settene nīwne brūcendreccend]].',
'nosuchusershort' => 'Þǣr is nān brūcend mid þǣm naman "<nowiki>$1</nowiki>". Edscēawa on þīne wrītunge.',
+'passwordtooshort' => 'Gelēafword sculon habban læst {{PLURAL:$1|1 stafan|$1 stafan}}.',
'mailmypassword' => 'Nīƿe þafungƿord bȳ e-mail sendan',
'acct_creation_throttle_hit' => 'Hwæt, þu hæfst gēo geseted {{PLURAL:$1|1 hordcleofan|$1 -}}. Þu ne canst settan ǣnige māran.',
'accountcreated' => 'Hordcleofan ȝescapen',
@@ -412,7 +447,8 @@ Scēawa þīne wrītunge eft, oþþe brūc þā cartan þe is hērunder tō [[Sp
'newarticletext' => "Þu hæfst bende tō tramete gefolgod þe nū gīet ne stendeþ.
Tō scieppene þone tramet, onginn þyddan in þǣre boxe under (sēo þone [[{{MediaWiki:Helppage}}|helptramet]] for mā gefrǣge).
Gif þu hider misfōn cōme, cnoca þā þīnne webbscēaweres '''on bæc''' cnæpp.",
-'usercssjsyoucanpreview' => "'''Rǣd:''' Brūc þone 'Forescēawian' cnæpp tō āfandienne þīne nīwe css/js beforan sparunge.",
+'usercssyoucanpreview' => "'''Rǣd:''' Brūc þone 'Forescēawian' cnæpp tō āfandienne þīne nīwe css/js beforan sparunge.",
+'userjsyoucanpreview' => "'''Rǣd:''' Brūc þone 'Forescēawian' cnæpp tō āfandienne þīne nīwe css/js beforan sparunge.",
'updated' => '(Ednīƿed)',
'note' => "'''Behielde:'''",
'previewnote' => "'''Ȝemune þe þēos efne forescēaƿe is.'''
@@ -434,7 +470,8 @@ folcliċum āgnunge oþþe ȝelīċum frēom horde (sēo $1 for āscungum).
'longpagewarning' => 'WARNUNG: Þes tramet is $1 kilobyta lang; sume
webbscēaweras hæbben earfoðu mid þȳ þe hīe ādihtaþ trametas nēa oþþe lengran þonne 32kb.
Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
-'templatesused' => 'Ongelīcnessa gebrȳcda on þissum tramete:',
+'templatesused' => '{{PLURAL:$1|Bysen|Bysena}} brocen on þisre sīdan:',
+'templatesusedpreview' => '{{PLURAL:$1|Bysen|Bysena}} brocen on þisre forescēaƿe:',
'template-protected' => '(borgen)',
'template-semiprotected' => '(sāmborgen)',
'hiddencategories' => 'Þēos sīde is ȝesīþ {{PLURAL:$1|1 ȝehȳdedes flocces|$1 ȝehȳdeda flocca}}:',
@@ -442,7 +479,7 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'nocreate-loggedin' => 'Þū ne hæfst þafunge to scieppenne nīƿa sīdan.',
'permissionserrors' => 'Þafunga ƿōh',
'permissionserrorstext-withaction' => 'Þū ne hæfst þafunge for $2, forþǣm þe {{PLURAL:$1|race|racum}}:',
-'recreate-deleted-warn' => "'''Warnung: Þu edsciepst tramet þe wæs ǣr āfeorsod.'''
+'recreate-moveddeleted-warn' => "'''Warnung: Þu edsciepst tramet þe wæs ǣr āfeorsod.'''
Þu sceoldest smēagan, hwæðer hit gerādlic sīe, forþ tō gānne mid ādihtunge þisses trametes.
Þæt āfeorsungbred þisses trametes is hēr geīeht for behēfnesse:",
@@ -450,6 +487,8 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
# History pages
'viewpagelogs' => 'Ealdhordas sēon for þisse sīdan',
'nohistory' => 'Nis nān ādihtungstǣr for þissum tramete.',
+'currentrev-asof' => 'Nīƿe fadung sƿā $1',
+'revisionasof' => 'Nīƿung fram',
'previousrevision' => '← Ieldra fadung',
'nextrevision' => 'Nīƿra fadung →',
'currentrevisionlink' => 'Nīƿu fadung',
@@ -462,22 +501,29 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'historyempty' => '(æmettiȝ)',
# Revision feed
-'history-feed-title' => 'Ednīƿunge stǣr',
-'history-feed-description' => 'Ednīƿunge stǣr þisse sīdan on þǣre ƿiki',
+'history-feed-title' => 'Ednīƿunge stǣr',
+'history-feed-description' => 'Ednīƿunge stǣr þisse sīdan on þǣre ƿiki',
+'history-feed-item-nocomment' => '$1 on $2',
# Revision deletion
-'rev-deleted-comment' => '(cƿide fornōm)',
-'rev-deleted-user' => '(brūcendnama fornōm)',
-'rev-delundel' => 'scēaƿian/hȳdan',
-'revdelete-hide-text' => 'Ednīƿungtraht hȳdan',
-'revdelete-hide-comment' => 'Ādihtcƿide hȳdan',
-'revdelete-hide-user' => 'Ādihteres brūcendnama/IP address hȳdan',
-'revdelete-hide-image' => 'Fīlinnoþ hȳdan',
-'revdel-restore' => 'scēaƿnesse hƿeorfan',
-'pagehist' => 'Sīdan stǣr',
-'revdelete-content' => 'innoþ',
-'revdelete-summary' => 'ādihtscortnes',
-'revdelete-uname' => 'brūcendnama',
+'rev-deleted-comment' => '(cƿide fornōm)',
+'rev-deleted-user' => '(brūcendnama fornōm)',
+'rev-delundel' => 'scēaƿian/hȳdan',
+'rev-showdeleted' => 'scēaƿan',
+'revdelete-show-file-submit' => 'Ȝēa',
+'revdelete-hide-text' => 'Ednīƿungtraht hȳdan',
+'revdelete-hide-image' => 'Fīlinnoþ hȳdan',
+'revdelete-hide-comment' => 'Ādihtcƿide hȳdan',
+'revdelete-hide-user' => 'Ādihteres brūcendnama/IP address hȳdan',
+'revdelete-radio-same' => '(ne hƿeorfan)',
+'revdelete-radio-set' => 'Ȝēa',
+'revdelete-radio-unset' => 'Nā',
+'revdel-restore' => 'scēaƿnesse hƿeorfan',
+'pagehist' => 'Sīdan stǣr',
+'revdelete-content' => 'innoþ',
+'revdelete-summary' => 'ādihtscortnes',
+'revdelete-uname' => 'brūcendnama',
+'revdelete-reasonotherlist' => 'Ōðru racu',
# History merging
'mergehistory-from' => 'Frumasīde:',
@@ -502,9 +548,14 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'searchsubtitleinvalid' => "Þū sōhtest '''$1'''",
'notitlematches' => 'Nān sīdenama mæccan',
'notextmatches' => 'Nāne sīdetrahtes mæccan',
-'nextn' => 'nīehst $1',
+'prevn' => 'ǣror {{PLURAL:$1|$1}}',
+'nextn' => 'nīehst {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Sēon ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-new' => "'''Þā sīdan \"[[:\$1]]\" scieppan on þisre ƿiki!'''",
'searchhelp-url' => 'Help:Innoþ',
+'searchprofile-articles' => 'Innoþsīdan',
+'searchprofile-project' => 'Help and Ƿeorc sīdan',
+'searchprofile-images' => 'Mæniȝȝemyndisc',
'searchprofile-everything' => 'Ȝehƿæt',
'searchprofile-articles-tooltip' => 'In $1 sēċan',
'searchprofile-project-tooltip' => 'In $1 sēċan',
@@ -529,16 +580,17 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'powersearch-field' => 'Sēċan',
'search-external' => 'Ūtan sōcn',
+# Quickbar
+'qbsettings-none' => 'Nān',
+
# Preferences page
'preferences' => 'Foreberunga',
'mypreferences' => 'Mīna foreberunga',
'prefsnologin' => 'Ne inȝemelded',
-'qbsettings-none' => 'Nān',
-'skin' => 'Scynn',
+'prefs-skin' => 'Scynn',
'skin-preview' => 'Forescēaƿian',
-'dateformat' => 'Tælmearcwīse',
-'datetime' => 'Tælmearc and tīd',
-'math_unknown_error' => 'uncūþ ƿōh',
+'prefs-math' => 'Rīmcræft',
+'prefs-datetime' => 'Tælmearc and tīd',
'prefs-rc' => 'Nīƿe hƿearfas',
'prefs-watchlist' => 'Ƿæccȝetalu',
'saveprefs' => 'Sparian',
@@ -547,12 +599,20 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'searchresultshead' => 'Sōcnfintan',
'resultsperpage' => 'Tōhīgunga tō īewenne for tramete',
'contextlines' => 'Līnan tō īewenne in tōhīgunge',
-'recentchangescount' => 'Tītula getæl in nīwlicum hweorfungum',
+'recentchangescount' => 'Hū mæniȝ ādihtas to scēaƿenne ȝeþēaƿe:',
'savedprefs' => 'Þīna foreberunga ƿurdon ȝespared.',
'timezonelegend' => 'Tīdstell',
'servertime' => 'Bryttantīma is nū',
'defaultns' => 'Sēcan in þissum namstedum be frambyge:',
'default' => 'gewunelic',
+'youremail' => 'E-ǣrende *',
+'username' => 'Brūcendnama:',
+'yourrealname' => 'Þīn rihtnama*',
+'yourlanguage' => 'Brūcendofermearces sprǣc',
+'yourvariant' => 'Sprǣce wendung',
+'yourgender' => 'Ȝecynd:',
+'gender-male' => 'Ƿer',
+'gender-female' => 'Frēo',
# User rights
'userrights-user-editname' => 'Brūcendnama ƿrītan:',
@@ -589,6 +649,13 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'recentchanges' => 'Nīƿe hƿearfas',
'recentchanges-legend' => 'Nīƿa hƿearfa forebearƿan',
'recentchanges-feed-description' => 'Þā mǣst nīƿoste hƿearfan huntan to þisse ƿiki in þissum strēame',
+'recentchanges-label-legend' => 'Cǣȝ: $1.',
+'recentchanges-legend-newpage' => '$1 - nīƿu sīde',
+'recentchanges-label-newpage' => 'Þes ādiht macode nīƿa sīdan',
+'recentchanges-legend-minor' => '$1 - lȳtl ādiht',
+'recentchanges-label-minor' => 'Þes is lȳtl ādiht',
+'recentchanges-legend-bot' => '$1 - searuþræles ādiht',
+'recentchanges-label-bot' => 'Searuþræl fremmode þisne ādiht',
'rcnote' => "Under {{PLURAL:$1|... '''1''' ...|sind þā æftemestan '''$1''' hweorfunga}} in {{PLURAL:$2|...|þǣm æftemestum '''$2''' dagum}}, . . $5, $4.",
'rcnotefrom' => 'Under sind þā hweorfunga siþþan <b>$2</b> (oþ <b>$1</b> geīewed).',
'rclistfrom' => 'Nīƿe hƿeorfan sēon beȝinnende fram $1',
@@ -610,10 +677,12 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'rc-enhanced-hide' => 'Ȝehanda hȳdan',
# Recent changes linked
-'recentchangeslinked' => 'Sibbhƿearfas',
-'recentchangeslinked-title' => 'Hƿearfas ȝesibbed to "$1"',
-'recentchangeslinked-page' => 'Sīdenama:',
-'recentchangeslinked-to' => 'Hƿearfas to sīdan sēon þe hlenċan habbaþ to þǣre ȝiefen sīdan in stede',
+'recentchangeslinked' => 'Sibbhƿearfas',
+'recentchangeslinked-feed' => 'Sibbhƿearfas',
+'recentchangeslinked-toolbox' => 'Sibbhƿearfas',
+'recentchangeslinked-title' => 'Hƿearfas ȝesibbed to "$1"',
+'recentchangeslinked-page' => 'Sīdenama:',
+'recentchangeslinked-to' => 'Hƿearfas to sīdan sēon þe hlenċan habbaþ to þǣre ȝiefen sīdan in stede',
# Upload
'upload' => 'Fīl forþsendan',
@@ -633,6 +702,7 @@ Bidde behycge þæt þu bricst þone tramet intō smalrum dǣlum.',
'sourcefilename' => 'Fruman þrǣdnama:',
'license' => 'Gelēaf:',
+'license-header' => 'Gelēaf',
'nolicense' => 'Nǣnne gecorenne',
'license-nopreview' => 'Þis gelēaf nis gearu.',
@@ -651,6 +721,7 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'listfiles_count' => 'Fadunga',
# File description page
+'file-anchor-link' => 'Fīl',
'filehist' => 'Fīlanstǣr',
'filehist-help' => 'Cnæpp on dæȝe/tīde to sēonne þā fīlan sƿā ƿæs hēo on þǣre tīde.',
'filehist-deleteall' => 'afeorsian eall',
@@ -659,19 +730,20 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'filehist-current' => 'nū',
'filehist-datetime' => 'Dæȝ/Tīd',
'filehist-thumb' => 'Lȳtlbiliþ',
+'filehist-thumbtext' => 'Lȳtlbiliþ for fadunge sƿā $1',
'filehist-nothumb' => 'Nān biliþincel',
'filehist-user' => 'Brūcend',
'filehist-dimensions' => 'Miċela',
'filehist-filesize' => 'Fīlmicelness',
'filehist-comment' => 'Ymbsprǣċ',
+'filehist-missing' => 'Fīl lēas',
'imagelinks' => 'Fīlhlenċan',
'linkstoimage' => 'Þā folgendan {{PLURAL:$1|sīde hæfþ hlenċe|sīdan habbaþ hlenċan}} for þissum fīle:',
'nolinkstoimage' => 'Þǣr sind nāne trametas þe bindaþ tō þissum biliðe.',
'morelinkstoimage' => 'Seoh [[Special:WhatLinksHere/$1|mā hlencan]] tō þissum fīle.',
'redirectstofile' => '{{PLURAL:$1|Þes fīl edlǣdeþ|$1 Þās fīlas hēr edlǣdaþ}} tō þissum fīle:',
'duplicatesoffile' => '{{PLURAL:$1|Þes fīl hēr is gelīcness|Þās fīlas hēr sind gelīcnessa}} þisses fīles (seoh [[Special:FileDuplicateSearch/$2|mā gewitnesse hērymb]]):',
-'sharedupload' => 'Þēos fīl is fram $1 and man mæȝ hīe brūcan on ōðrum ƿeorcum.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Nān þrǣd mid þissum naman stendeþ nū oþþe nā mā, ac þu canst þēah hine $1.',
+'sharedupload' => 'Þēos fīl is fram $1 and man mæȝ hīe brūcan on ōðrum ƿeorcum.',
'uploadnewversion-linktext' => 'Nīƿe fadunge þisse fīlan forþsendan',
# File reversion
@@ -697,8 +769,8 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'brokenredirects' => 'Brocene ymblǣderas',
'brokenredirectstext' => 'Þā folgendan edlǣdunga bendaþ tō unedwistlicum trametum.',
-'brokenredirects-edit' => '(ādihtan)',
-'brokenredirects-delete' => '(āfeorsian)',
+'brokenredirects-edit' => 'ādihtan',
+'brokenredirects-delete' => 'āfeorsian',
'withoutinterwiki' => 'Trametas būtan sprǣcbendum',
'withoutinterwiki-summary' => 'Þā folgendan trametas ne bindaþ tō ōðrum sprǣcfadungum:',
@@ -758,6 +830,9 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'categories' => 'Floccas',
'categoriespagetext' => 'Þā folgendan floccas standaþ in þǣm wici.',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'forðunga',
+
# Special:LinkSearch
'linksearch' => 'Ūtanƿeard hlenċan',
'linksearch-ok' => 'Sēċan',
@@ -765,6 +840,9 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
# Special:ListUsers
'listusers-noresult' => 'Nǣnne brūcend gefundenne.',
+# Special:ActiveUsers
+'activeusers' => 'Hƿata brūcenda ȝetalu',
+
# Special:Log/newusers
'newuserlogpage' => 'Brūcenda ȝesceaft ȝetalu',
'newuserlog-create-entry' => 'Nīƿe brūcend',
@@ -835,8 +913,8 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'rollback_short' => 'Edhƿeorfan',
'rollbacklink' => 'Edhƿeorfan',
'rollbackfailed' => 'Edhƿeorf misfangen',
-'editcomment' => "Sēo ādihtungymbsprǣc wæs: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ācierde ādihtunga fram [[Special:Contributions/$2|$2]] ([[User talk:$2|Gesprec]]); wendede on bæc tō ǣrran fadunge fram [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Sēo ādihtungymbsprǣc wæs: \"''\$1''\".",
+'revertpage' => 'Ācierde ādihtunga fram [[Special:Contributions/$2|$2]] ([[User talk:$2|Gesprec]]); wendede on bæc tō ǣrran fadunge fram [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Beorges ealdhord',
@@ -857,7 +935,7 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'protect-expiring' => 'endaþ $1 (UTC)',
'protect-cascade' => 'Sīdan beorgan beinnodon þisse sīdan (flōƿende ȝebeorg)',
'protect-cantedit' => 'Þū ne meaht þæt beorges emnet hƿeorfan þisre sīdan, forþǣm ne hæfst þū þafunge to ādihtenne hīe.',
-'protect-expiry-options' => '1 stund:1 hour,1 dæg:1 day,1 wucu:1 week,2 wuca:2 weeks,1 mōnaþ:1 month,3 mōnþas:3 months,6 mōnþas:6 months,1 gēar:1 year,unendiendlic:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 stund:1 hour,1 dæg:1 day,1 wucu:1 week,2 wuca:2 weeks,1 mōnaþ:1 month,3 mōnþas:3 months,6 mōnþas:6 months,1 gēar:1 year,unendiendlic:infinite',
'restriction-type' => 'Þafung:',
'restriction-level' => 'Ȝehæftes emnet:',
@@ -875,6 +953,7 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
# Undelete
'undeletebtn' => 'Edstaðola!',
'undeletelink' => 'sēon/nīƿian',
+'undeleteviewlink' => 'sēon',
'undeletedarticle' => 'edstaðolod "[[$1]]"',
'undelete-search-submit' => 'Sēċan',
@@ -892,6 +971,7 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'month' => 'Fram mōnþe (and ǣror)',
'year' => 'Fram ȝēare (and ǣror)',
+'sp-contributions-talk' => 'ȝespreċ',
'sp-contributions-search' => 'Forðunga sēċan',
'sp-contributions-username' => 'IP address oþþe brūcendnama:',
'sp-contributions-submit' => 'Sēċan',
@@ -925,12 +1005,12 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
** Uncwēme brūcendnama',
'ipbsubmit' => 'Þisne brūcend gǣlan',
'ipbother' => 'Ōðeru tīd',
-'ipboptions' => '2 stunda:2 hours,1 dæȝ:1 day,3 dagas:3 days,1 ƿucu:1 week,2 ƿuca:2 weeks,1 mōnaþ:1 month,3 mōnþas:3 months,6 mōnþas:6 months,1 ȝēar:1 year,unendiend:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 stunda:2 hours,1 dæȝ:1 day,3 dagas:3 days,1 ƿucu:1 week,2 ƿuca:2 weeks,1 mōnaþ:1 month,3 mōnþas:3 months,6 mōnþas:6 months,1 ȝēar:1 year,unendiend:infinite',
'ipbotheroption' => 'ōðer',
'ipbotherreason' => 'Ōðeru/geīecendlicu racu:',
'ipblocklist-submit' => 'Sēċan',
'infiniteblock' => 'unendiende',
-'expiringblock' => 'forealdaþ $1',
+'expiringblock' => 'forealdaþ $1 $2',
'blocklink' => 'fortȳnan',
'unblocklink' => 'unfortȳnan',
'change-blocklink' => 'Fortȳne hƿeorfan',
@@ -945,7 +1025,7 @@ Swenge wiþ sweorhēafod andwendeþ þā endebyrdnessa.',
'move-watch' => 'Frumasīdan and endesīdan ƿæccan',
'movepagebtn' => 'Sīdan ȝeferan',
'pagemovedsub' => 'Ȝefōr spēdde',
-'movepage-moved' => '\'\'\'"$1" ƿæs to "$2"\'\'\' ȝefered', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ƿæs to "$2"\'\'\' ȝefered',
'articleexists' => 'Tramet on þǣm naman ǣr stendeþ, oþþe þone
naman þu cēas nis andfenge.
Bidde cēos ōðerne naman.',
@@ -961,9 +1041,14 @@ Bidde cēos ōðerne naman.',
'export' => 'Sīdan ūtsendan',
# Namespace 8 related
-'allmessagesname' => 'Nama',
-'allmessagesdefault' => 'Fūsliċ traht',
-'allmessagescurrent' => 'Nū traht',
+'allmessagesname' => 'Nama',
+'allmessagesdefault' => 'Fūsliċ traht',
+'allmessagescurrent' => 'Nū traht',
+'allmessages-filter-unmodified' => 'Unhƿorfen',
+'allmessages-filter-all' => 'Eall',
+'allmessages-filter-modified' => 'Hƿorfen',
+'allmessages-language' => 'Sprǣċ:',
+'allmessages-filter-submit' => 'Gān',
# Thumbnails
'thumbnail-more' => 'Mǣrsian',
@@ -994,6 +1079,7 @@ Bidde cēos ōðerne naman.',
Þū meaht hire fruman sēon.',
'tooltip-ca-history' => 'Ǣror fadunga þisse sīdan',
'tooltip-ca-protect' => 'Þās sīdan beorgan',
+'tooltip-ca-unprotect' => 'Þās sīdan unbeorgan',
'tooltip-ca-delete' => 'Þās sīdan āfeorsian',
'tooltip-ca-move' => 'Þās sīdan ȝeferan',
'tooltip-ca-watch' => 'Þās sīdan ēacian to þīnre ƿæccȝetale',
@@ -1003,6 +1089,7 @@ Bidde cēos ōðerne naman.',
'tooltip-search-fulltext' => 'Þā sīdan sēċan mid þissum trahte',
'tooltip-p-logo' => 'Hēafodsīde',
'tooltip-n-mainpage' => 'Þǣre hēafodsīdan gān',
+'tooltip-n-mainpage-description' => 'Þǣre hēafodsīdan gān',
'tooltip-n-portal' => 'Ymbe þǣm ƿeorce, hƿæt meaht þū dōn, hƿǣr to findenne þing',
'tooltip-n-currentevents' => 'Ieldran cȳþþe findan ymbe nīƿum ȝelimpum',
'tooltip-n-recentchanges' => 'Sēo ȝetalu nīƿa hƿearfa in þǣre ƿiki',
@@ -1037,12 +1124,16 @@ Bidde cēos ōðerne naman.',
'anonymous' => 'Namcūþlēas(e) brūcend {{SITENAME}}n',
'siteuser' => '{{SITENAME}}n brūcere $1',
'others' => 'ōðru',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|uncūþ brūcend|uncūðe brūcendas}} $1',
# Info page
'numedits' => 'Hū mæniȝ ādihtas (sīde): $1',
'numtalkedits' => 'Hū mæniȝ ādihtas (ȝespreċsīde): $1',
'numwatchers' => 'Hū mæniȝ ƿæcceras: $1',
+# Math errors
+'math_unknown_error' => 'uncūþ ƿōh',
+
# Patrol log
'patrol-log-auto' => '(selffremmende)',
'patrol-log-diff' => 'nīƿung $1',
@@ -1144,6 +1235,7 @@ Bidde cēos ōðerne naman.',
'watchlistall2' => 'eall',
'namespacesall' => 'eall',
'monthsall' => 'eall',
+'limitall' => 'eall',
# E-mail address confirmation
'confirmemail_body' => 'Hwilchwega, gewēne þu of IP stōwe $1, hæfþ in namanbēc gestt ǣnne hordcleofan
@@ -1191,11 +1283,12 @@ $5
'watchlisttools-raw' => 'Grēne ƿæccȝetale ādihtan',
# Special:Version
-'version' => 'Fadung', # Not used as normal message but as header for the special page itself
+'version' => 'Fadung',
'version-specialpages' => 'Syndriȝa sīdan',
'version-other' => 'Ōðer',
'version-hooks' => 'Anglas',
'version-hook-name' => 'Angelnama',
+'version-version' => '(Fadung $1)',
# Special:FilePath
'filepath' => 'Fīlpæþ',
@@ -1217,4 +1310,9 @@ $5
# Special:Tags
'tags-edit' => 'ādihtan',
+# HTML forms
+'htmlform-submit' => 'Forþsendan',
+'htmlform-reset' => 'Hƿearfas undōn',
+'htmlform-selectorother-other' => 'Ōðer',
+
);
diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php
index b95803ca..eef842a4 100644
--- a/languages/messages/MessagesAr.php
+++ b/languages/messages/MessagesAr.php
@@ -7,23 +7,38 @@
* @ingroup Language
* @file
*
- * @author Agurzil
+ * @author ;Hiba;1
+ * @author Abanima
+ * @author AhmadSherif
* @author Alnokta
* @author Antime
+ * @author Bassem JARKAS
* @author Chaos
* @author Ciphers
+ * @author DrFO.Tn
+ * @author Elmondo21st
+ * @author Elmoro
* @author Gharbeia
+ * @author Hakeem
+ * @author Histolo2
* @author Jak
* @author Khaledhosny
+ * @author Lord Anubis
+ * @author MK
+ * @author Menasim
* @author Meno25
* @author Mido
* @author Mimouni
+ * @author Mo7amedsalim
* @author Obayd
* @author OsamaK
* @author Ouda
* @author Oxydo
+ * @author Riadismet
+ * @author Sami Lab
* @author Tarawneh
- * @author לערי ריינהארט
+ * @author TheEgyptian
+ * @author Uwe a
* @author ترجمان05
* @author عصام بايزيدي
* @author نصوح
@@ -155,66 +170,68 @@ $magicWords = array(
'toc' => array( '0', '__فهرس__', '__TOC__' ),
'noeditsection' => array( '0', '__لاتحريرقسم__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__لاعنوان__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'شهر_حالي', 'شهر', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'اسم_الشهر_الحالي', 'اسم_شهر_حالي', 'اسم_شهر', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'اسم_الشهر_الحالي_المولد', 'اسم_شهر_حالي_مولد', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'اختصار_الشهر_الحالي', 'اختصار_شهر_حالي', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'يوم_حالي', 'يوم', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'يوم_حالي2', 'يوم2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'اسم_اليوم_الحالي', 'اسم_يوم_حالي', 'اسم_يوم', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'عام_حالي', 'عام', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'وقت_حالي', 'وقت', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'ساعة_حالية', 'ساعة', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'شهر_محلي', 'LOCALMONTH' ),
- 'localmonthname' => array( '1', 'اسم_الشهر_المحلي', 'اسم_شهر_محلي', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( '1', 'اسم_الشهر_المحلي_المولد', 'اسم_شهر_محلي_مولد', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( '1', 'اختصار_الشهر_المحلي', 'اختصار_شهر_محلي', 'LOCALMONTHABBREV' ),
+ 'currentmonth' => array( '1', 'شهر_حالي', 'شهر_حالي2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'شهر_حالي1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'اسم_الشهر_الحالي', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'اسم_الشهر_الحالي_المولد', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'اختصار_الشهر_الحالي', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'يوم_حالي', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'يوم_حالي2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'اسم_اليوم_الحالي', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'عام_حالي', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'وقت_حالي', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ساعة_حالية', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'شهر_محلي', 'شهر_محلي2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'شهر_محلي1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'اسم_الشهر_المحلي', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'اسم_الشهر_المحلي_المولد', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'اختصار_الشهر_المحلي', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'يوم_محلي', 'LOCALDAY' ),
'localday2' => array( '1', 'يوم_محلي2', 'LOCALDAY2' ),
- 'localdayname' => array( '1', 'اسم_اليوم_المحلي', 'اسم_يوم_محلي', 'LOCALDAYNAME' ),
+ 'localdayname' => array( '1', 'اسم_اليوم_المحلي', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'عام_محلي', 'LOCALYEAR' ),
'localtime' => array( '1', 'وقت_محلي', 'LOCALTIME' ),
'localhour' => array( '1', 'ساعة_محلية', 'LOCALHOUR' ),
- 'numberofpages' => array( '1', 'عدد_الصفحات', 'عدد_صفحات', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( '1', 'عدد_المقالات', 'عدد_مقالات', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'عدد_الملفات', 'عدد_ملفات', 'NUMBEROFFILES' ),
- 'numberofusers' => array( '1', 'عدد_المستخدمين', 'عدد_مستخدمين', 'NUMBEROFUSERS' ),
- 'numberofactiveusers' => array( '1', 'مستخدمون_نشطون', 'NUMBEROFACTIVEUSERS' ),
- 'numberofedits' => array( '1', 'عدد_التعديلات', 'عدد_تعديلات', 'NUMBEROFEDITS' ),
- 'numberofviews' => array( '1', 'عدد_المشاهدات', 'عدد_مشاهدات', 'NUMBEROFVIEWS' ),
- 'pagename' => array( '1', 'اسم_الصفحة', 'اسم_صفحة', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'عنوان_الصفحة', 'عنوان_صفحة', 'PAGENAMEE' ),
+ 'numberofpages' => array( '1', 'عدد_الصفحات', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'عدد_المقالات', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'عدد_الملفات', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'عدد_المستخدمين', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'عدد_المستخدمين_النشطين', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'عدد_التعديلات', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'عدد_المشاهدات', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'اسم_الصفحة', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'عنوان_الصفحة', 'PAGENAMEE' ),
'namespace' => array( '1', 'نطاق', 'NAMESPACE' ),
'namespacee' => array( '1', 'عنوان_نطاق', 'NAMESPACEE' ),
- 'talkspace' => array( '1', 'نطاق_النقاش', 'نطاق_نقاش', 'TALKSPACE' ),
- 'talkspacee' => array( '1', 'عنوان_النقاش', 'عنوان_نقاش', 'TALKSPACEE' ),
+ 'talkspace' => array( '1', 'نطاق_النقاش', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'عنوان_النقاش', 'TALKSPACEE' ),
'subjectspace' => array( '1', 'نطاق_الموضوع', 'نطاق_المقالة', 'SUBJECTSPACE', 'ARTICLESPACE' ),
'subjectspacee' => array( '1', 'عنوان_نطاق_الموضوع', 'عنوان_نطاق_المقالة', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
'fullpagename' => array( '1', 'اسم_الصفحة_الكامل', 'اسم_صفحة_كامل', 'اسم_كامل', 'FULLPAGENAME' ),
'fullpagenamee' => array( '1', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'عنوان_كامل', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'اسم_الصفحة_الفرعي', 'اسم_صفحة_فرعي', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'عنوان_الصفحة_الفرعي', 'عنوان_صفحة_فرعي', 'SUBPAGENAMEE' ),
- 'basepagename' => array( '1', 'اسم_الصفحة_الأساسي', 'اسم_صفحة_أساسي', 'BASEPAGENAME' ),
- 'basepagenamee' => array( '1', 'عنوان_الصفحة_الأساسي', 'عنوان_صفحة_أساسي', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'اسم_صفحة_النقاش', 'اسم_صفحة_نقاش', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'عنوان_صفحة_النقاش', 'عنوان_صفحة_نقاش', 'TALKPAGENAMEE' ),
+ 'subpagename' => array( '1', 'اسم_الصفحة_الفرعي', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'عنوان_الصفحة_الفرعي', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'اسم_الصفحة_الأساسي', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'عنوان_الصفحة_الأساسي', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'اسم_صفحة_النقاش', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'عنوان_صفحة_النقاش', 'TALKPAGENAMEE' ),
'subjectpagename' => array( '1', 'اسم_صفحة_الموضوع', 'اسم_صفحة_المقالة', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subjectpagenamee' => array( '1', 'عنوان_صفحة_الموضوع', 'عنوان_صفحة_المقالة', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'msg' => array( '0', 'رسالة:', 'MSG:' ),
- 'subst' => array( '0', 'نسخ:', 'إحلال:', 'SUBST:' ),
- 'msgnw' => array( '0', 'مصدر:', 'مصدر_قالب:', 'MSGNW:' ),
+ 'subst' => array( '0', 'نسخ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'رسالة_بدون_تهيئة:', 'MSGNW:' ),
'img_thumbnail' => array( '1', 'تصغير', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'تصغير=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_manualthumb' => array( '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'يمين', 'right' ),
'img_left' => array( '1', 'يسار', 'left' ),
'img_none' => array( '1', 'بدون', 'بلا', 'none' ),
'img_width' => array( '1', '$1بك', '$1عن', '$1px' ),
'img_center' => array( '1', 'مركز', 'center', 'centre' ),
- 'img_framed' => array( '1', 'إطار', 'framed', 'enframed', 'frame' ),
+ 'img_framed' => array( '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'لاإطار', 'frameless' ),
'img_page' => array( '1', 'صفحة=$1', 'صفحة $1', 'page=$1', 'page $1' ),
'img_upright' => array( '1', 'معدول', 'معدول=$1', 'معدول $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( '1', 'حد', 'حدود', 'border' ),
+ 'img_border' => array( '1', 'حدود', 'border' ),
'img_baseline' => array( '1', 'خط_أساسي', 'baseline' ),
'img_sub' => array( '1', 'فرعي', 'sub' ),
'img_super' => array( '1', 'سوبر', 'سب', 'super', 'sup' ),
@@ -226,28 +243,30 @@ $magicWords = array(
'img_link' => array( '1', 'وصلة=$1', 'رابط=$1', 'link=$1' ),
'img_alt' => array( '1', 'بديل=$1', 'alt=$1' ),
'int' => array( '0', 'محتوى:', 'INT:' ),
- 'sitename' => array( '1', 'اسم_الموقع', 'اسم_موقع', 'SITENAME' ),
+ 'sitename' => array( '1', 'اسم_الموقع', 'SITENAME' ),
'ns' => array( '0', 'نط:', 'NS:' ),
+ 'nse' => array( '0', 'نطم:', 'NSE:' ),
'localurl' => array( '0', 'مسار_محلي:', 'LOCALURL:' ),
- 'localurle' => array( '0', 'عنوان_المسار_المحلي:', 'عنوان_مسار_محلي:', 'LOCALURLE:' ),
+ 'localurle' => array( '0', 'عنوان_المسار_المحلي:', 'LOCALURLE:' ),
'server' => array( '0', 'خادم', 'SERVER' ),
- 'servername' => array( '0', 'اسم_الخادم', 'اسم_خادم', 'SERVERNAME' ),
+ 'servername' => array( '0', 'اسم_الخادم', 'SERVERNAME' ),
'scriptpath' => array( '0', 'مسار_السكريبت', 'مسار_سكريبت', 'SCRIPTPATH' ),
- 'grammar' => array( '0', 'قواعد_اللغة:', 'قواعد_لغة:', 'GRAMMAR:' ),
+ 'stylepath' => array( '0', 'مسار_الهيئة', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'قواعد_اللغة:', 'GRAMMAR:' ),
'gender' => array( '0', 'نوع:', 'GENDER:' ),
'notitleconvert' => array( '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( '1', 'أسبوع_حالي', 'أسبوع', 'CURRENTWEEK' ),
+ 'currentweek' => array( '1', 'أسبوع_حالي', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'يوم_حالي_مأ', 'CURRENTDOW' ),
'localweek' => array( '1', 'أسبوع_محلي', 'LOCALWEEK' ),
'localdow' => array( '1', 'يوم_محلي_مأ', 'LOCALDOW' ),
- 'revisionid' => array( '1', 'رقم_النسخة', 'رقم_نسخة', 'REVISIONID' ),
- 'revisionday' => array( '1', 'يوم_النسخة', 'يوم_نسخة', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'يوم_النسخة2', 'يوم_نسخة2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( '1', 'شهر_النسخة', 'شهر_نسخة', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'عام_النسخة', 'عام_نسخة', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( '1', 'طابع_وقت_النسخة', 'طابع_وقت_نسخة', 'REVISIONTIMESTAMP' ),
- 'revisionuser' => array( '1', 'مستخدم_المراجعة', 'مستخدم_النسخة', 'REVISIONUSER' ),
+ 'revisionid' => array( '1', 'رقم_المراجعة', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'يوم_المراجعة', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'يوم_المراجعة2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'شهر_المراجعة', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'عام_المراجعة', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
'plural' => array( '0', 'جمع:', 'PLURAL:' ),
'fullurl' => array( '0', 'عنوان_كامل:', 'FULLURL:' ),
'fullurle' => array( '0', 'مسار_كامل:', 'FULLURLE:' ),
@@ -256,35 +275,36 @@ $magicWords = array(
'lc' => array( '0', 'صغير:', 'LC:' ),
'uc' => array( '0', 'كبير:', 'UC:' ),
'raw' => array( '0', 'خام:', 'RAW:' ),
- 'displaytitle' => array( '1', 'عرض_العنوان', 'عرض_عنوان', 'DISPLAYTITLE' ),
+ 'displaytitle' => array( '1', 'عرض_العنوان', 'DISPLAYTITLE' ),
'rawsuffix' => array( '1', 'أر', 'آر', 'R' ),
'newsectionlink' => array( '1', '__وصلة_قسم_جديد__', '__NEWSECTIONLINK__' ),
- 'nonewsectionlink' => array( '1', '__لا_وصلة_قسم_جديد__', '__لا_رابط_قسم_جديد__', '__NONEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', 'لا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'نسخة_حالية', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'كود_المسار:', 'كود_مسار:', 'URLENCODE:' ),
- 'anchorencode' => array( '0', 'كود_الأنكور', 'كود_أنكور', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( '1', 'طابع_الوقت_الحالي', 'طابع_وقت_حالي', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( '1', 'طابع_الوقت_المحلي', 'طابع_وقت_محلي', 'LOCALTIMESTAMP' ),
+ 'urlencode' => array( '0', 'كود_المسار:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'كود_الأنكور', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'طابع_الوقت_الحالي', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'طابع_الوقت_المحلي', 'LOCALTIMESTAMP' ),
'directionmark' => array( '1', 'علامة_الاتجاه', 'علامة_اتجاه', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#لغة:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', 'لغة_المحتوى', 'لغة_محتوى', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
'pagesinnamespace' => array( '1', 'صفحات_في_نطاق:', 'صفحات_في_نط:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( '1', 'عدد_الإداريين', 'عدد_إداريين', 'NUMBEROFADMINS' ),
+ 'numberofadmins' => array( '1', 'عدد_الإداريين', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'صيغة_رقم', 'FORMATNUM' ),
'padleft' => array( '0', 'باد_يسار', 'PADLEFT' ),
'padright' => array( '0', 'باد_يمين', 'PADRIGHT' ),
'special' => array( '0', 'خاص', 'special' ),
- 'defaultsort' => array( '1', 'ترتيب_قياسي:', 'ترتيب_افتراضي:', 'مفتاح_ترتيب_قياسي:', 'مفتاح_ترتيب_افتراضي:', 'ترتيب_تصنيف_قياسي:', 'ترتيب_تصنيف_افتراضي:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( '0', 'مسار_الملف:', 'مسار_ملف:', 'FILEPATH:' ),
+ 'defaultsort' => array( '1', 'ترتيب_افتراضي:', 'مفتاح_ترتيب_افتراضي:', 'ترتيب_تصنيف_افتراضي:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'مسار_الملف:', 'FILEPATH:' ),
'tag' => array( '0', 'وسم', 'tag' ),
'hiddencat' => array( '1', '__تصنيف_مخفي__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'صفحات في التصنيف', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( '1', 'حجم_الصفحة', 'حجم_صفحة', 'PAGESIZE' ),
+ 'pagesincategory' => array( '1', 'صفحات_في_التصنيف', 'صفحات_في_تصنيف', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'حجم_الصفحة', 'PAGESIZE' ),
'index' => array( '1', '__فهرسة__', '__INDEX__' ),
'noindex' => array( '1', '__لافهرسة__', '__NOINDEX__' ),
'numberingroup' => array( '1', 'عدد_في_المجموعة', 'عدد_في_مجموعة', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ),
- 'protectionlevel' => array( '1', 'مستوى_الحماية', 'مستوى_حماية', 'PROTECTIONLEVEL' ),
+ 'protectionlevel' => array( '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
@@ -301,7 +321,7 @@ $specialPageAliases = array(
'Listfiles' => array( 'عرض_الملفات', 'قائمة_الملفات', 'قائمة_الصور' ),
'Newimages' => array( 'ملفات_جديدة', 'صور_جديدة' ),
'Listusers' => array( 'عرض_المستخدمين', 'قائمة_المستخدمين' ),
- 'Listgrouprights' => array( 'عرض_صلاحيات_المجموعات' ),
+ 'Listgrouprights' => array( 'عرض_صلاحيات_المجموعات', 'صلاحيات_مجموعات_المستخدمين' ),
'Statistics' => array( 'إحصاءات' ),
'Randompage' => array( 'عشوائي', 'صفحة_عشوائية' ),
'Lonelypages' => array( 'صفحات_وحيدة', 'صفحات_يتيمة' ),
@@ -351,7 +371,7 @@ $specialPageAliases = array(
'Import' => array( 'استيراد' ),
'Lockdb' => array( 'غلق_قب' ),
'Unlockdb' => array( 'فتح_قب' ),
- 'Userrights' => array( 'صلاحيات_المستخدم' ),
+ 'Userrights' => array( 'صلاحيات_المستخدم', 'ترقية_مدير_نظام', 'ترقية_بوت' ),
'MIMEsearch' => array( 'بحث_ميم' ),
'FileDuplicateSearch' => array( 'بحث_ملف_مكرر' ),
'Unwatchedpages' => array( 'صفحات_غير_مراقبة' ),
@@ -375,6 +395,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'بحث_الوصلات' ),
'DeletedContributions' => array( 'مساهمات_محذوفة' ),
'Tags' => array( 'وسوم' ),
+ 'Activeusers' => array( 'مستخدمون_نشطون' ),
);
/**
@@ -382,7 +403,7 @@ $specialPageAliases = array(
* the first group, and the remainder of the string as the second group. Modified to match
* Arabic trails too.
*/
-$linkTrail = '/^([a-z\x{0600}-\x{06FF}]+)(.*)$/suD';
+$linkTrail = '/^([a-zء-ي]+)(.*)$/sDu';
$imageFiles = array(
'button-bold' => 'ar/button_bold.png',
@@ -423,6 +444,7 @@ $messages = array(
'tog-enotifminoredits' => 'أرسل لي رسالة إلكترونية عن التعديلات الطفيفة للصفحات أيضا',
'tog-enotifrevealaddr' => 'أظهر عنوان بريدي الإلكتروني في رسائل الإخطار',
'tog-shownumberswatching' => 'اعرض عدد المستخدمين المراقبين',
+'tog-oldsig' => 'معاينة للتوقيع الموجود:',
'tog-fancysig' => 'عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)',
'tog-externaleditor' => 'استخدم محررا خارجيا افتراضيا (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك)',
'tog-externaldiff' => 'استخدم فرقا خارجيا افتراضيا (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك)',
@@ -446,6 +468,13 @@ $messages = array(
'underline-never' => 'أبدا',
'underline-default' => 'تبعا لإعدادات المتصفح',
+# Font style option in Special:Preferences
+'editfont-style' => 'نمط خط منطقة التحرير:',
+'editfont-default' => 'تبعا لإعدادات المتصفح',
+'editfont-monospace' => 'خط Monospaced',
+'editfont-sansserif' => 'خط Sans-serif',
+'editfont-serif' => 'خط Serif',
+
# Dates
'sunday' => 'الأحد',
'monday' => 'الإثنين',
@@ -505,7 +534,7 @@ $messages = array(
'category-media-header' => 'الوسائط في التصنيف "$1"',
'category-empty' => "''هذا التصنيف لا يحتوي حاليا على صفحات أو وسائط.''",
'hidden-categories' => '{{PLURAL:$1|لا تصانيف مخفية|التصنيف المخفي|التصنيفان المخفيان|التصانيف المخفية|التصانيف المخفية|التصانيف المخفية}}',
-'hidden-category-category' => 'تصنيفات مخفية', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'تصنيفات مخفية',
'category-subcat-count' => '{{PLURAL:$2|لا تصانيف فرعية في هذا التصنيف|هذا التصنيف فيه التصنيف الفرعي التالي فقط.|هذا التصنيف فيه {{PLURAL:$1||هذا التصنيف الفرعي|هذين التصنيفين الفرعيين|هذه ال$1 تصانيف الفرعية|هذه ال$1 تصنيفا فرعيا|هذه ال$1 تصنيف فرعي}}، من إجمالي $2.}}',
'category-subcat-count-limited' => 'هذا التصنيف فيه {{PLURAL:$1||التصنيف الفرعي التالي|التصنيفين الفرعيين التاليين|$1 تصانيف فرعية تالية|$1 تصنيفا فرعيا تاليا|$1 تصنيف فرعي تالي}}.',
'category-article-count' => '{{PLURAL:$2|لا يحتوي هذا التصنيف أي صفحات.|هذا التصنيف يحتوي على الصفحة التالية فقط.|{{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|ال$1 صفحات التالية|ال$1 صفحة التالية|ال$1 صفحة التالية}} في هذا التصنيف، من إجمالي $2.}}',
@@ -513,6 +542,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|هذا التصنيف يحتوي فقط على الملف التالي.|{{PLURAL:$1|الملف|ال$1 ملف}} التالية في هذا التصنيف، من إجمالي $2.}}',
'category-file-count-limited' => 'بالأسفل {{PLURAL:$1|ملف|$1 ملف}} في التصنيف الحالي.',
'listingcontinuesabbrev' => 'متابعة',
+'index-category' => 'صفحات مفهرسة',
+'noindex-category' => 'صفحات غير مفهرسة',
'mainpagetext' => "'''تم تثبيت ميدياويكي بنجاح.'''",
'mainpagedocfooter' => 'استشر [http://meta.wikimedia.org/wiki/Help:Contents دليل المستخدم] لمعلومات حول استخدام برنامج الويكي.
@@ -523,10 +554,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ أسئلة متكررة حول ميدياويكي]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce القائمة البريدية الخاصة بإصدار ميدياويكي]',
-'about' => 'عن',
-'article' => 'صفحة محتوى',
-'newwindow' => '(تفتح في نافذة جديدة)',
-'cancel' => 'ألغ',
+'about' => 'عن',
+'article' => 'صفحة محتوى',
+'newwindow' => '(تفتح في نافذة جديدة)',
+'cancel' => 'ألغ',
+'moredotdotdot' => 'المزيد...',
+'mypage' => 'صفحتي',
+'mytalk' => 'نقاشي',
+'anontalk' => 'النقاش لعنوان الأيبي هذا',
+'navigation' => 'إبحار',
+'and' => '&#32;و',
+
+# Cologne Blue skin
'qbfind' => 'جد',
'qbbrowse' => 'تصفح',
'qbedit' => 'عدل',
@@ -534,15 +573,35 @@ $messages = array(
'qbpageinfo' => 'سياق النص',
'qbmyoptions' => 'صفحاتي',
'qbspecialpages' => 'الصفحات الخاصة',
-'moredotdotdot' => 'المزيد...',
-'mypage' => 'صفحتي',
-'mytalk' => 'نقاشي',
-'anontalk' => 'النقاش لعنوان الأيبي هذا',
-'navigation' => 'إبحار',
-'and' => '&#32;و',
-
-# Metadata in edit box
-'metadata_help' => 'بيانات ميتا:',
+'faq' => 'الأسئلة الأكثر تكرارا',
+'faqpage' => 'Project:أسئلة متكررة',
+
+# Vector skin
+'vector-action-addsection' => 'أضف موضوعا',
+'vector-action-delete' => 'احذف',
+'vector-action-move' => 'انقل',
+'vector-action-protect' => 'احم',
+'vector-action-undelete' => 'استرجع الحذف',
+'vector-action-unprotect' => 'أزل الحماية',
+'vector-namespace-category' => 'تصنيف',
+'vector-namespace-help' => 'صفحة مساعدة',
+'vector-namespace-image' => 'ملف',
+'vector-namespace-main' => 'صفحة',
+'vector-namespace-media' => 'صفحة وسيط',
+'vector-namespace-mediawiki' => 'رسالة',
+'vector-namespace-project' => 'صفحة مشروع',
+'vector-namespace-special' => 'صفحة خاصة',
+'vector-namespace-talk' => 'نقاش',
+'vector-namespace-template' => 'قالب',
+'vector-namespace-user' => 'صفحة مستخدم',
+'vector-view-create' => 'أنشئ',
+'vector-view-edit' => 'عدل',
+'vector-view-history' => 'اعرض التاريخ',
+'vector-view-view' => 'اقرأ',
+'vector-view-viewsource' => 'عرض المصدر',
+'actions' => 'أفعال',
+'namespaces' => 'النطاقات',
+'variants' => 'المتغيرات',
'errorpagetitle' => 'خطأ',
'returnto' => 'ارجع إلى $1.',
@@ -592,18 +651,22 @@ $messages = array(
'otherlanguages' => 'بلغات أخرى',
'redirectedfrom' => '(تم التحويل من $1)',
'redirectpagesub' => 'صفحة تحويل',
-'lastmodifiedat' => 'آخر تعديل لهذه الصفحة في $2، $1.', # $1 date, $2 time
+'lastmodifiedat' => 'آخر تعديل لهذه الصفحة في $2، $1.',
'viewcount' => '{{PLURAL:$1|لم تعرض هذه الصفحة أبدا|تم عرض هذه الصفحة مرة واحدة|تم عرض هذه الصفحة مرتين|تم عرض هذه الصفحة $1 مرات|تم عرض هذه الصفحة $1 مرة}}.',
'protectedpage' => 'صفحة محمية',
'jumpto' => 'اذهب إلى:',
'jumptonavigation' => 'تصفح',
'jumptosearch' => 'البحث',
+'view-pool-error' => 'عذرا، الخوادم منهكة حاليا.
+يحاول مستخدمون كثر الوصول إلى هذه الصفحة.
+من فضلك انتظر قليلا قبل أن تحاول الوصول إلى هذه الصفحة مجددا.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'عن {{SITENAME}}',
'aboutpage' => 'Project:عن',
'copyright' => 'المحتوى متوفر تحت $1.',
-'copyrightpagename' => 'حقوق النسخ في {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:حقوق النسخ',
'currentevents' => 'الأحداث الجارية',
'currentevents-url' => 'Project:الأحداث الجارية',
@@ -611,8 +674,6 @@ $messages = array(
'disclaimerpage' => 'Project:عدم مسؤولية عام',
'edithelp' => 'مساعدة التحرير',
'edithelppage' => 'Help:تحرير',
-'faq' => 'الأسئلة الأكثر تكرارا',
-'faqpage' => 'Project:أسئلة متكررة',
'helppage' => 'Help:محتويات',
'mainpage' => 'الصفحة الرئيسية',
'mainpage-description' => 'الصفحة الرئيسية',
@@ -694,10 +755,6 @@ $messages = array(
"$1"
من داخل الدالة "$2".
أرجعت قاعدة البيانات الخطأ "$3: $4"',
-'noconnect' => 'عذرا! الويكي يعاني من بعض المشاكل التقنية، ولا يمكنه الاتصال بخادم قاعدة البيانات. <br />
-$1',
-'nodb' => 'لم يتمكن من اختيار قاعدة البيانات $1',
-'cachederror' => 'هذه نسخة مختزنة من الصفحة المطلوبة، وقد لا تكون محدثة.',
'laggedslavemode' => "'''تحذير:''' الصفحة قد لا تحتوي على أحدث التحديثات.",
'readonly' => 'قاعدة البيانات مغلقة',
'enterlockreason' => 'أدخل سببا للغلق، متضمنا تقديرا لوقت رفع الغلق',
@@ -715,6 +772,8 @@ $1',
'readonly_lag' => 'تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي',
'internalerror' => 'خطأ داخلي',
'internalerror_info' => 'خطأ داخلي: $1',
+'fileappenderrorread' => 'تعذرت قراءة "$1" أثناء الإضافة.',
+'fileappenderror' => 'تعذرت إضافة "$1" إلى "$2".',
'filecopyerror' => 'لم يمكن نسخ الملف "$1" إلى "$2".',
'filerenameerror' => 'لم يمكن إعادة تسمية الملف "$1" إلى "$2".',
'filedeleteerror' => 'لم يمكن حذف الملف "$1".',
@@ -724,8 +783,8 @@ $1',
'unexpected' => 'قيمة غير متوقعة: "$1"="$2".',
'formerror' => 'خطأ: لم يمكن تنفيذ الاستمارة',
'badarticleerror' => 'لا يمكن إجراء هذا الفعل على هذه الصفحة.',
-'cannotdelete' => 'لم يمكن حذف الصفحة أو الملف المحدد.
-ربما يكون قد تم حذفه بواسطة شخص آخر.',
+'cannotdelete' => 'تعذر حذف الصفحة أو الملف "$1".
+ربما حذفها شحص آخر.',
'badtitle' => 'عنوان سيء',
'badtitletext' => 'عنوان الصفحة المطلوب إما غير صحيح أو فارغ، وربما الوصلة بين اللغات أو بين المشاريع خاطئة.
ومن الممكن وجود رموز لا تصلح للاستخدام في العناوين.',
@@ -762,7 +821,6 @@ $2',
'virus-unknownscanner' => 'مضاد فيروسات غير معروف:',
# Login and logout pages
-'logouttitle' => 'خروج المستخدم',
'logouttext' => "'''أنت الآن غير مسجل الدخول.'''
تستطيع المتابعة باستعمال {{SITENAME}} كمجهول، أو [[Special:UserLogin|الدخول مرة أخرى]] بنفس الاسم أو باسم آخر.
@@ -770,7 +828,6 @@ $2',
'welcomecreation' => '== مرحبا، $1! ==
تم إنشاء حسابك.
لا تنس أن تغير [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].',
-'loginpagetitle' => 'دخول المستخدم',
'yourname' => 'اسم المستخدم:',
'yourpassword' => 'كلمة السر:',
'yourpasswordagain' => 'أعد كتابة كلمة السر:',
@@ -781,6 +838,7 @@ $2',
'nav-login-createaccount' => 'ادخل / أنشئ حسابا',
'loginprompt' => 'يجب أن تكون الكوكيز لديك مفعلة لتسجل الدخول إلى {{SITENAME}}.',
'userlogin' => 'دخول / إنشاء حساب',
+'userloginnocreate' => 'دخول',
'logout' => 'اخرج',
'userlogout' => 'اخرج',
'notloggedin' => 'غير مسجل الدخول',
@@ -793,29 +851,8 @@ $2',
'badretype' => 'كلمات السر التي أدخلتها لا تتطابق.',
'userexists' => 'اسم المستخدم الذي تم إدخاله مستعمل بالفعل.
اختر اسما مختلفا.',
-'youremail' => 'البريد:',
-'username' => 'اسم المستخدم:',
-'uid' => 'رقم المستخدم:',
-'prefs-memberingroups' => 'عضو في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:',
-'yourrealname' => 'الاسم الحقيقي:',
-'yourlanguage' => 'اللغة:',
-'yourvariant' => 'اللهجة:',
-'yournick' => 'التوقيع:',
-'badsig' => 'توقيع خام غير صحيح؛ تحقق من وسوم HTML.',
-'badsiglength' => 'توقيعك طويل جدا.
-يجب أن يكون أقل من $1 {{PLURAL:$1|حرف|حروف}}.',
-'yourgender' => 'الجنس:',
-'gender-unknown' => 'غير محدد',
-'gender-male' => 'ذكر',
-'gender-female' => 'أنثى',
-'prefs-help-gender' => 'اختياري: يستخدم للمخاطبة المعتمدة على الجنس بواسطة البرنامج. ستكون هذه المعلومة علنية.',
-'email' => 'البريد الإلكتروني',
-'prefs-help-realname' => 'الاسم الحقيقي اختياري.
-لو اخترت أن توفره، فسيستخدم في الإشارة إلى عملك.',
'loginerror' => 'خطأ في الدخول',
-'prefs-help-email' => 'عنوان البريد الإلكتروني اختياري، لكن يسمح بأن يتم إرسال كلمة السر الخاصة بك إليك لو نسيتها.
-يمكنك أيضا اختيار السماح للآخرين بالاتصال بك عن طريق صفحتك أو صفحة نقاشك من دون معرفة هويتك.',
-'prefs-help-email-required' => 'عنوان البريد الإلكتروني مطلوب.',
+'createaccounterror' => 'تعذر إنشاء حساب المستخدم: $1',
'nocookiesnew' => 'تم إنشاء حساب المستخدم، ولكنك لست مسجل الدخول بعد.
يستخدم {{SITENAME}} كوكيز لتسجيل الدخول.
لديك الكوكيز معطلة.
@@ -832,12 +869,13 @@ $2',
'nosuchusershort' => 'لا يوجد مستخدم باسم <nowiki>$1</nowiki>".
تأكد من إملاء الاسم.',
'nouserspecified' => 'يجب عليك تحديد اسم مستخدم.',
+'login-userblocked' => 'هذا المستخدم ممنوع. لا يسمح بالولوج.',
'wrongpassword' => 'كلمة السر التي أدخلتها غير صحيحة.
من فضلك حاول مرة أخرى.',
'wrongpasswordempty' => 'كلمة السر المدخلة كانت فارغة.
من فضلك حاول مرة أخرى.',
-'passwordtooshort' => 'كلمة السر التي اخترتها غير صحيحة أو قصيرة جدا.
-يجب ألا يقل طول الكلمة عن {{PLURAL:$1|1 حرف|$1 حرف}} حرف وأن تكون مختلفة عن اسم المستخدم الخاص بك.',
+'passwordtooshort' => 'يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.',
+'password-name-match' => 'يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.',
'mailmypassword' => 'أرسل لي كلمة سر جديدة',
'passwordremindertitle' => 'كلمة سر مؤقتة جديدة ل {{SITENAME}}',
'passwordremindertext' => 'لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).
@@ -847,6 +885,7 @@ $2',
إذا كان الذي قام بهذا الطلب شخص آخر أو إذا تذكرت كلمة سرك ولا ترغب في تغييرها، فبإمكانك أن تتجاهل هذه الرسالة وأن تستمر في استخدام كلمة سرك القديمة.',
'noemail' => 'لا يوجد عنوان بريد إلكتروني مسجل للمستخدم "$1".',
+'noemailcreate' => 'عليك تقديم عنوان بريد إلكتروني صالح',
'passwordsent' => 'تم إرسال كلمة سر جديدة إلى عنوان البريد الإلكتروني المسجل للمستخدم "$1".
من فضلك حاول تسجيل الدخول مرة ثانية بعد استلامها.',
'blocked-mailpassword' => 'تم منع عنوان الأيبي الخاص بك من التحرير، ولمنع التخريب لا يمكنك أن تستخدم خاصية استرجاع كلمة السر.',
@@ -871,9 +910,11 @@ $2',
ينبغي عليك تسجيل الدخول وتغيير كلمة السر الخاصة بك الآن.
يمكنك تجاهل هذه الرسالة، لو تم إنشاء هذا الحساب بالخطأ.',
+'usernamehasherror' => 'لا يمكن أن يحتوي اسم المستخدم على محارف هاش',
'login-throttled' => 'لقد قمت بمحاولات دخول كثيرة جدا مؤخرا.
من فضلك انتظر قبل المحاولة مرة أخرى.',
'loginlanguagelabel' => 'اللغة: $1',
+'suspicious-userlogout' => 'رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.',
# Password reset dialog
'resetpass' => 'تغيير كلمة السر',
@@ -886,18 +927,13 @@ $2',
'retypenew' => 'أعد كتابة كلمة السر الجديدة:',
'resetpass_submit' => 'ضبط كلمة السر والدخول',
'resetpass_success' => 'تم تغيير كلمة السر الخاصة بك بنجاح! يتم تسجيل دخولك الآن...',
-'resetpass_bad_temporary' => 'كلمة السر المؤقتة خاطئة.
-ربما تم تغيير كلمة السر فعليا بنجاح أو ربما قمت بطلب كلمة سر مؤقتة جديدة.',
'resetpass_forbidden' => 'كلمات السر لا يمكن تغييرها',
'resetpass-no-info' => 'يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.',
'resetpass-submit-loggedin' => 'تغيير كلمة السر',
+'resetpass-submit-cancel' => 'ألغ',
'resetpass-wrong-oldpass' => 'كلمة سر حالية أو مؤقتة غير صحيحة.
ربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.',
'resetpass-temp-password' => 'كلمة سر مؤقتة:',
-'resetpass-log' => 'سجل إعادة ضبط كلمات السر',
-'resetpass-logtext' => 'بالأسفل سجل بالمستخدمين الذين تمت إعادة ضبط كلمات السر الخاصة بهم بواسطة إداري.',
-'resetpass-logentry' => 'غير كلمة السر ل$1',
-'resetpass-comment' => 'السبب لإعادة ضبط كلمة السر:',
# Edit page toolbar
'bold_sample' => 'نص عريض',
@@ -973,7 +1009,6 @@ $2',
'blockededitsource' => "نص '''تعديلاتك''' في '''$1''' معروض بالأسفل:",
'whitelistedittitle' => 'تسجيل الدخول مطلوب للتحرير',
'whitelistedittext' => 'يجب عليك $1 لتتمكن من تعديل الصفحات.',
-'confirmedittitle' => 'تأكيد البريد الإلكتروني مطلوب لبدء التعديل',
'confirmedittext' => 'يجب عليك تأكيد بريدك الإلكتروني قبل تعديل الصفحات.
من فضلك اكتب وأكد بريدك الإلكتروني من خلال [[Special:Preferences|تفضيلاتك]].',
'nosuchsectiontitle' => 'تعذر إيجاد القسم',
@@ -998,10 +1033,15 @@ $2',
يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى،
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث في السجلات المتعلقة]،
أو [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعديل هذه الصفحة]</span>.',
+'noarticletext-nopermission' => 'لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.',
'userpage-userdoesnotexist' => 'حساب المستخدم "$1" غير مسجل.
من فضلك تأكد أنك تريد إنشاء/تعديل هذه الصفحة.',
+'userpage-userdoesnotexist-view' => 'حساب المستخدم "$1" غير مسجل.',
+'blocked-notice-logextract' => 'هذا المستخدم ممنوع حاليا.
+آخر مدخلة في سجل المنع موفرة بالأسفل كمرجع:',
'clearyourcache' => "'''ملاحظة - بعد الحفظ, ربما ينبغي عليك إفراغ كاش متصفحك لرؤية التغييرات.''' '''موزيللا / فايرفوكس / سافاري:''' اضغط ''Shift'' أثناء ضغط ''Reload,'' أو اضغط أيا من ''Ctrl-F5'' أو ''Ctrl-R'' (''Command-R'' على ماكنتوش); '''كونكرر: '''اضغط ''Reload'' أو اضغط ''F5;'' '''أوبرا:''' أفرغ الكاش في ''Tools → Preferences;'' '''إنترنت إكسبلورر:''' اضغط ''Ctrl'' أثناء ضغط ''Refresh,'' أو اضغط ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''ملاحظة:''' استعمل زر 'أظهر معاينة' لتجربة CSS أو جافاسكربت الجديد قبل الحفظ.",
+'usercssyoucanpreview' => "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة CSS الجديد قبل حفظ الصفحة.",
+'userjsyoucanpreview' => "'''ملاحظة:''' استعمل زر \"{{int:showpreview}}\" لتجربة جافاسكربت الجديدة قبل حفظ الصفحة.",
'usercsspreview' => "'''تذكر أنك تقوم بعرض الأنماط المتراصة (CSS) الخاصة بك فقط
لم يتم حفظها بعد!'''",
'userjspreview' => "'''تذكر أنك فقط تجرب/تعاين جافاسكربت.'''
@@ -1058,13 +1098,16 @@ $2',
إذا رغبت بإمكانك أن تنسخ النص الذي تعمل عليه وتحفظه في ملف نصي إلى وقت لاحق.'''
الإداري الذي أغلقها أعطى هذا التفسير: $1",
-'protectedpagewarning' => "'''تحذير: تمت حماية هذه الصفحة حتى يمكن للمستخدمين ذوي الصلاحيات الإدارية فقط تعديلها.'''",
-'semiprotectedpagewarning' => "'''ملاحظة:''' تمت حماية هذه الصفحة بحيث يمكن للمستخدمين المسجلين فقط تعديلها.",
+'protectedpagewarning' => "'''تحذير: تمت حماية هذه الصفحة حتى يمكن للمستخدمين ذوي الصلاحيات الإدارية فقط تعديلها.'''
+آخر مدخلة سجل موفرة بالأسفل كمرجع:",
+'semiprotectedpagewarning' => "'''ملاحظة:''' تمت حماية هذه الصفحة بحيث يمكن للمستخدمين المسجلين فقط تعديلها.
+آخر مدخلة سجل موفرة بالأسفل كمرجع:",
'cascadeprotectedwarning' => "'''تحذير:''' تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:\$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":",
-'titleprotectedwarning' => "'''تحذير: هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''",
-'templatesused' => 'القوالب المستخدمة في هذه الصفحة:',
-'templatesusedpreview' => 'القوالب المستخدمة في هذا العرض المسبق:',
-'templatesusedsection' => 'القوالب المستخدمة في هذا القسم:',
+'titleprotectedwarning' => "'''تحذير: هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''
+آخر مدخلة سجل موفرة بالأسفل كمرجع:",
+'templatesused' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:',
+'templatesusedpreview' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:',
+'templatesusedsection' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:',
'template-protected' => '(حماية كاملة)',
'template-semiprotected' => '(حماية جزئية)',
'hiddencategories' => '{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:',
@@ -1073,15 +1116,18 @@ $2',
'nocreatetext' => 'قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.
يمكنك العودة وتحرير صفحة موجودة بالفعل، أو [[Special:UserLogin|الدخول أو تسجيل حساب]].',
'nocreate-loggedin' => 'أنت لا تمتلك الصلاحية لإنشاء صفحات جديدة.',
+'sectioneditnotsupported-title' => 'تعديل الأقسام غير مدعوم',
+'sectioneditnotsupported-text' => 'تعديل الأقسام غير مدعوم في هذه الصفحة',
'permissionserrors' => 'أخطاء السماحات',
'permissionserrorstext' => 'لا تمتلك الصلاحية لفعل هذا، {{PLURAL:$1||للسبب التالي|للسببين التاليين|للأسباب التالية}}:',
'permissionserrorstext-withaction' => 'لا تملك الصلاحيات ل$2، لل{{PLURAL:$1||سبب التالي|سببين التاليين|أسباب التالية}}:',
-'recreate-deleted-warn' => "'''تحذير: أنت تقوم بإعادة إنشاء صفحة سبق حذفها.'''
+'recreate-moveddeleted-warn' => "'''تحذير: أنت تقوم بإعادة إنشاء صفحة سبق حذفها.'''
يجب عليك التيقن من أن الاستمرار بتحرير هذه الصفحة ملائم.
-سجل الحذف لهذه الصفحة معروض هنا:",
-'deleted-notice' => 'هذه الصفحة تم حذفها. سجل الحذف للصفحة معروض بالأسفل كمرجع.',
-'deletelog-fulllog' => 'عرض السجل الكامل',
+سجلا الحذف والنقل لهذه الصفحة معروضان هنا للتيسير:",
+'moveddeleted-notice' => 'هذه الصفحة تم حذفها.
+سجلا الحذف والنقل للصفحة معروضان بالأسفل كمرجع.',
+'log-fulllog' => 'أظهر السجل الكامل',
'edit-hook-aborted' => 'التعديل تم تركه بواسطة الخطاف.
لم يعط تفسيرا.',
'edit-gone-missing' => 'لم يمكن تحديث الصفحة.
@@ -1104,6 +1150,7 @@ $2',
'post-expand-template-argument-category' => 'صفحات تحتوي مدخلات القالب المحذوفة',
'parser-template-loop-warning' => 'تم كشف حلقة قالب: [[$1]]',
'parser-template-recursion-depth-warning' => 'تم تجاوز حد عمق فرد القوالب ($1)',
+'language-converter-depth-warning' => 'تم تخطي حد عمق محول اللغة ($1)',
# "Undo" feature
'undo-success' => 'يمكن استرجاع التعديل.
@@ -1124,7 +1171,7 @@ $2',
'currentrev' => 'المراجعة الحالية',
'currentrev-asof' => 'المراجعة الحالية بتاريخ $1',
'revisionasof' => 'مراجعة $1',
-'revision-info' => 'مراجعة $1 بواسطة $2', # Additionally available: $3: revision id
+'revision-info' => 'مراجعة $1 بواسطة $2',
'previousrevision' => '→ مراجعة أقدم',
'nextrevision' => 'مراجعة أحدث ←',
'currentrevisionlink' => 'المراجعة الحالية',
@@ -1137,7 +1184,7 @@ $2',
مفتاح: (الحالي) = الفرق مع النسخة الحالية
(السابق) = الفرق مع النسخة السابقة، ط = تغيير طفيف',
'history-fieldset-title' => 'تصفح التاريخ',
-'deletedrev' => '[محذوفة]',
+'history-show-deleted' => 'المحذوفة فقط',
'histfirst' => 'أول',
'histlast' => 'آخر',
'historysize' => '({{PLURAL:$1|1 بايت|$1 بايت}})',
@@ -1146,71 +1193,115 @@ $2',
# Revision feed
'history-feed-title' => 'تاريخ المراجعة',
'history-feed-description' => 'تاريخ التعديل لهذه الصفحة في الويكي',
-'history-feed-item-nocomment' => '$1 في $2', # user at time
+'history-feed-item-nocomment' => '$1 في $2',
'history-feed-empty' => 'الصفحة المطلوبة غير موجودة.
من المحتمل أن تكون هذه الصفحة قد حذفت من الويكي، أو نقلت.
حاول [[Special:Search|البحث في الويكي]] عن صفحات جديدة ذات صلة.',
# Revision deletion
-'rev-deleted-comment' => '(التعليق تمت إزالته)',
-'rev-deleted-user' => '(اسم المستخدم تمت إزالته)',
-'rev-deleted-event' => '(فعل السجل تمت إزالته)',
-'rev-deleted-text-permission' => "مراجعة الصفحة هذه تم '''حذفها'''.
-ربما تكون هناك تفاصيل في [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-'rev-deleted-text-view' => "مراجعة الصفحة هذه تم '''حذفها'''.
-كإداري يمكنك رؤيتها؛ ربما تكون هناك تفاصيل في [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-'rev-deleted-no-diff' => "لا يمكنك رؤية هذا الفرق لأن واحدة من المراجعات تم '''حذفها'''.
-ربما تكون هناك تفاصيل في [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
-'rev-deleted-unhide-diff' => "واحدة من مراجعتي هذا الفرق تم '''حذفها'''.
-ربما تكون هناك هناك تفاصيل [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].
-كإداري مازال بإمكانك [$1 رؤية هذا الفرق] لو أنك تود المتابعة.",
-'rev-delundel' => 'أظهر/أخف',
-'revisiondelete' => 'حذف/استرجاع المراجعات',
-'revdelete-nooldid-title' => 'مراجعة هدف غير صحيحة',
-'revdelete-nooldid-text' => 'إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.',
-'revdelete-nologtype-title' => 'لا نوع سجل تم إعطاؤه',
-'revdelete-nologtype-text' => 'أنت لم تحدد نوع سجل لعمل هذا الفعل عليه.',
-'revdelete-toomanytargets-title' => 'أهداف كثيرة',
-'revdelete-toomanytargets-text' => 'أنت حددت عددا كبيرا من أنواع الأهداف لعمل هذا الفعل عليها.',
-'revdelete-nologid-title' => 'مدخلة سجل غير صحيحة',
-'revdelete-nologid-text' => 'أنت إما أنك لم تحدد حدث سجل مستهدف لعمل هذه الوظيفة أو أن المدخلة المحددة غير موجودة.',
-'revdelete-selected' => "'''{{PLURAL:$2|المراجعة المختارة|المراجعات المختارة}} ل[[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:'''",
-'revdelete-text' => "'''المراجعات والأحداث المحذوفة ستظل تظهر في تاريخ الصفحة والسجلات،'''
-لكن أجزاء من محتواها لن يكون مسموحا للعامة برؤيتها.
-
-الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.
-من فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].",
-'revdelete-suppress-text' => "الإخفاء ينبغي أن يتم استخدامه '''فقط''' في الحالات التالية:
+'rev-deleted-comment' => '(التعليق تمت إزالته)',
+'rev-deleted-user' => '(اسم المستخدم تمت إزالته)',
+'rev-deleted-event' => '(فعل السجل تمت إزالته)',
+'rev-deleted-user-contribs' => '[اسم المستخدم أو عنوان الأيبي تمت إزالته - التعديل مخفي من المساهمات]',
+'rev-deleted-text-permission' => "تم '''حذف''' مراجعة هذه الصفحة.
+قد تتوفر تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-deleted-text-unhide' => "مراجعة الصفحة هذه تم '''حذفها'''.
+ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].
+كإداري مازال بإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
+'rev-suppressed-text-unhide' => "تم '''حذف''' مراجعة الصفحة هذه.
+قد تتوفر تفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الحذف].
+لا يزال بإمكانك كإداري [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
+'rev-deleted-text-view' => "تم '''حذف''' مراجعة هذه الصفحة.
+كإداري يمكنك رؤيتها؛ ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-suppressed-text-view' => "تم '''حذف''' مراجعة هذه الصفحة.
+تستطيع كإداري مشاهدتها؛ وقد تتوفر تفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-deleted-no-diff' => "لا يمكنك رؤية هذا الفرق لأن واحدة من المراجعات تم '''حذفها'''.
+ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-suppressed-no-diff' => "ليس بإمكانك مشاهدة هذا الفرق لأن إحدى المراجعات '''حذفت'''.",
+'rev-deleted-unhide-diff' => "واحدة من مراجعتي هذا الفرق تم '''حذفها'''.
+ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].
+كإداري مازال بإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
+'rev-suppressed-unhide-diff' => "واحدة من مراجعتي هذا الفرق تم '''حذفها'''.
+ربما توجد تفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الحذف].
+كإداري مازال بإمكانك [$1 رؤية هذا الفرق] إذا أردت المتابعة.",
+'rev-deleted-diff-view' => "واحدة من المراجعتي هذا الفرق تم '''حذفها'''.
+كإداري يمكنك رؤية هذا الفرق؛ ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-suppressed-diff-view' => "واحدة من المراجعتي هذا الفرق تم '''إخفاؤها'''.
+كإداري يمكنك رؤية هذا الفرق؛ ربما تكون هناك تفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].",
+'rev-delundel' => 'أظهر/أخف',
+'rev-showdeleted' => 'أظهر',
+'revisiondelete' => 'حذف/استرجاع المراجعات',
+'revdelete-nooldid-title' => 'مراجعة هدف غير صحيحة',
+'revdelete-nooldid-text' => 'إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.',
+'revdelete-nologtype-title' => 'لا نوع سجل تم إعطاؤه',
+'revdelete-nologtype-text' => 'أنت لم تحدد نوع سجل لعمل هذا الفعل عليه.',
+'revdelete-nologid-title' => 'مدخلة سجل غير صحيحة',
+'revdelete-nologid-text' => 'أنت إما أنك لم تحدد حدث سجل مستهدف لعمل هذه الوظيفة أو أن المدخلة المحددة غير موجودة.',
+'revdelete-no-file' => 'الملف المحدد غير موجود.',
+'revdelete-show-file-confirm' => 'هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف "<nowiki>$1</nowiki>" بتاريخ $2 الساعة $3؟',
+'revdelete-show-file-submit' => 'نعم',
+'revdelete-selected' => "'''{{PLURAL:$2|المراجعة المختارة|المراجعات المختارة}} ل[[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:'''",
+'revdelete-text' => "'''المراجعات والأحداث المحذوفة ستظل تظهر في تاريخ الصفحة والسجلات،'''
+لكن أجزاء من محتواها لن يكون مسموحا للعامة برؤيتها.",
+'revdelete-confirm' => 'الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.
+من فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].',
+'revdelete-suppress-text' => "الإخفاء ينبغي أن يتم استخدامه '''فقط''' في الحالات التالية:
* معلومات شخصية غير ملائمة
*: ''عناوين المنازل وأرقام التليفونات، أرقام الضمان الاجتماعي، إلى آخره.''",
-'revdelete-legend' => 'وضع ضوابط رؤية',
-'revdelete-hide-text' => 'أخف نص المراجعة',
-'revdelete-hide-name' => 'أخف الفعل والهدف',
-'revdelete-hide-comment' => 'أخف تعليق التعديل',
-'revdelete-hide-user' => 'أخف اسم/آيبي المستخدم',
-'revdelete-hide-restricted' => 'أخف البيانات عن الإداريين إضافة إلى الآخرين',
-'revdelete-suppress' => 'أخف البيانات عن مديري النظام والبقية',
-'revdelete-hide-image' => 'أخف محتوى الملف',
-'revdelete-unsuppress' => 'إزالة الضوابط من المراجعات المسترجعة',
-'revdelete-log' => 'السبب:',
-'revdelete-submit' => 'طبق على المراجعة المختارة',
-'revdelete-logentry' => 'غير رؤية المراجعة ل[[$1]]',
-'logdelete-logentry' => 'غير رؤية الحدث ل[[$1]]',
-'revdelete-success' => "'''تم تحديث رؤية المراجعات بنجاح.'''",
-'logdelete-success' => "'''تم ضبط رؤية السجلات بنجاح.'''",
-'revdel-restore' => 'تغيير الرؤية',
-'pagehist' => 'تاريخ الصفحة',
-'deletedhist' => 'التاريخ المحذوف',
-'revdelete-content' => 'محتوى',
-'revdelete-summary' => 'ملخص التعديل',
-'revdelete-uname' => 'اسم المستخدم',
-'revdelete-restricted' => 'طبق الضوابط لمديري النظام',
-'revdelete-unrestricted' => 'أزال الضوابط لمديري النظام',
-'revdelete-hid' => 'أخفى $1',
-'revdelete-unhid' => 'أظهر $1',
-'revdelete-log-message' => '$1 ل$2 {{PLURAL:$2|مراجعة|مراجعة}}',
-'logdelete-log-message' => '$1 ل$2 {{PLURAL:$2|حدث|حدث}}',
+'revdelete-legend' => 'وضع ضوابط رؤية',
+'revdelete-hide-text' => 'أخف نص المراجعة',
+'revdelete-hide-image' => 'أخف محتوى الملف',
+'revdelete-hide-name' => 'أخف الفعل والهدف',
+'revdelete-hide-comment' => 'أخف تعليق التعديل',
+'revdelete-hide-user' => 'أخف اسم/آيبي المستخدم',
+'revdelete-hide-restricted' => 'أخف البيانات عن الإداريين إضافة إلى الآخرين',
+'revdelete-radio-same' => '(لا تغير)',
+'revdelete-radio-set' => 'نعم',
+'revdelete-radio-unset' => 'لا',
+'revdelete-suppress' => 'أخف البيانات عن مديري النظام والبقية',
+'revdelete-unsuppress' => 'إزالة الضوابط من المراجعات المسترجعة',
+'revdelete-log' => 'السبب:',
+'revdelete-submit' => 'طبق على {{PLURAL:$1||المراجعة المختارة|المراجعتين المختارتين|المراجعات المختارة}}',
+'revdelete-logentry' => 'غير رؤية المراجعة ل[[$1]]',
+'logdelete-logentry' => 'غير رؤية الحدث ل[[$1]]',
+'revdelete-success' => "'''تم تحديث رؤية المراجعات بنجاح.'''",
+'revdelete-failure' => "'''تعذر تحديث رؤية المراجعة:'''
+$1",
+'logdelete-success' => "'''تم ضبط رؤية السجلات بنجاح.'''",
+'logdelete-failure' => "'''تعذر ضبط رؤية السجل:'''
+$1",
+'revdel-restore' => 'تغيير الرؤية',
+'pagehist' => 'تاريخ الصفحة',
+'deletedhist' => 'التاريخ المحذوف',
+'revdelete-content' => 'محتوى',
+'revdelete-summary' => 'ملخص التعديل',
+'revdelete-uname' => 'اسم المستخدم',
+'revdelete-restricted' => 'طبق الضوابط لمديري النظام',
+'revdelete-unrestricted' => 'أزال الضوابط لمديري النظام',
+'revdelete-hid' => 'أخفى $1',
+'revdelete-unhid' => 'أظهر $1',
+'revdelete-log-message' => '$1 ل$2 {{PLURAL:$2|مراجعة|مراجعة}}',
+'logdelete-log-message' => '$1 ل$2 {{PLURAL:$2|حدث|حدث}}',
+'revdelete-hide-current' => 'خطأ عند إحفاء العنصر المؤرخ في $2 $1: هذه هي المراجعة الحالية.
+لا يمكن إخفاؤها.',
+'revdelete-show-no-access' => 'خطأ في إظهار العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك"مقيد".
+ليس لك صلاحية الوصول إليه.',
+'revdelete-modify-no-access' => 'خطأ في تعديل العنصر ذا التاريخ $2 $1: هذا العنصر معلم ك"مقيد".
+ليس لك صلاحية الوصول إليه.',
+'revdelete-modify-missing' => 'خطأ في تعديل العنصر ذا الهوية $1: العنصر مفقود من قاعدة البيانات!',
+'revdelete-no-change' => "'''تحذير:''' العنصر ذو التاريخ $2 $1 لديه أصلا إعدادات الظهور المطلوبة.",
+'revdelete-concurrent-change' => 'خطأ في تعديل العنصر ذي التاريخ $2 $1: تظهر حالته أن شخصا آخر عدله أثناء محاولتك تعديله.
+من فضلك راجع السجلات.',
+'revdelete-only-restricted' => 'خطأ إخفاء العنصر المؤرخ $2, $1: لا تستطيع تنحية العناصر من عرض الإداريين بدون أن تحدد أيضا إحدى خيارات التنحية الأخرى.',
+'revdelete-reason-dropdown' => '* أسباب حذف عامة
+** خرق لحقوق النشر
+** معلومات شخصية غير ملائمة
+**معلومات تشهيرية محتملة',
+'revdelete-otherreason' => 'سبب آخر/إضافي:',
+'revdelete-reasonotherlist' => 'سبب آخر',
+'revdelete-edit-reasonlist' => 'عدل أسباب الحذف',
+'revdelete-offender' => 'مؤلف المراجعة:',
# Suppression log
'suppressionlog' => 'سجل الإخفاء',
@@ -1249,67 +1340,13 @@ $2',
'mergelogpagetext' => 'بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.',
# Diffs
-'history-title' => 'تاريخ مراجعة "$1"',
-'difference' => '(الفرق بين المراجعتين)',
-'lineno' => 'سطر $1:',
-'compareselectedversions' => 'قارن بين النسختين المختارتين',
-'visualcomparison' => 'مقارنة بصرية',
-'wikicodecomparison' => 'مقارنة نص الويكي',
-'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1|مراجعة واحدة متوسطة|$1 مراجعة متوسطة}} غير معروضة.)',
-'diff-movedto' => 'تم النقل إلى $1',
-'diff-styleadded' => '$1 نمط تمت إضافته',
-'diff-added' => '$1 تمت إضافته',
-'diff-changedto' => 'تغير إلى $1',
-'diff-movedoutof' => 'تم النقل من $1',
-'diff-styleremoved' => '$1 نمط تمت إزالته',
-'diff-removed' => '$1 تمت إزالته',
-'diff-changedfrom' => 'تغير من $1',
-'diff-src' => 'مصدر',
-'diff-withdestination' => 'بالوجهة $1',
-'diff-with' => '&#32;مع $1 $2',
-'diff-with-final' => '&#32;و $1 $2',
-'diff-width' => 'عرض',
-'diff-height' => 'ارتفاع',
-'diff-p' => "'''فقرة'''",
-'diff-blockquote' => "'''اقتباس'''",
-'diff-h1' => "'''عنوان (مستوى 1)'''",
-'diff-h2' => "'''عنوان (مستوى 2)'''",
-'diff-h3' => "'''عنوان (مستوى 3)'''",
-'diff-h4' => "'''عنوان (مستوى 4)'''",
-'diff-h5' => "'''عنوان (مستوى 5)'''",
-'diff-pre' => "'''قطعة مهيأة من قبل'''",
-'diff-div' => "'''تقسيم'''",
-'diff-ul' => "'''قائمة غير مرتبة'''",
-'diff-ol' => "'''قائمة مرتبة'''",
-'diff-li' => "'''مدخلة قائمة'''",
-'diff-table' => "'''جدول'''",
-'diff-tbody' => "'''محتوى جدول'''",
-'diff-tr' => "'''صف'''",
-'diff-td' => "'''خلية'''",
-'diff-th' => "'''عنوان'''",
-'diff-br' => "'''قاطع'''",
-'diff-hr' => "'''قاعدة أفقية'''",
-'diff-code' => "'''قطعة كود حاسوب'''",
-'diff-dl' => "'''قائمة تعريفات'''",
-'diff-dt' => "'''مصطلح تعريف'''",
-'diff-dd' => "'''تعريف'''",
-'diff-input' => "'''مدخل'''",
-'diff-form' => "'''استمارة'''",
-'diff-img' => "'''صورة'''",
-'diff-span' => "'''سبان'''",
-'diff-a' => "'''وصلة'''",
-'diff-i' => "'''مائل'''",
-'diff-b' => "'''عريض'''",
-'diff-strong' => "'''قوي'''",
-'diff-em' => "'''تأكيد'''",
-'diff-font' => "'''خط'''",
-'diff-big' => "'''كبير'''",
-'diff-del' => "'''محذوف'''",
-'diff-tt' => "'''عرض ثابت'''",
-'diff-sub' => "'''نص تحتي'''",
-'diff-sup' => "'''نص فوقي'''",
-'diff-strike' => "'''شطب'''",
+'history-title' => 'تاريخ مراجعة "$1"',
+'difference' => '(الفرق بين المراجعتين)',
+'lineno' => 'سطر $1:',
+'compareselectedversions' => 'قارن بين النسختين المختارتين',
+'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
+'editundo' => 'تراجع',
+'diff-multi' => '({{PLURAL:$1|مراجعة واحدة متوسطة|$1 مراجعة متوسطة}} غير معروضة.)',
# Search results
'searchresults' => 'نتائج البحث',
@@ -1317,29 +1354,25 @@ $2',
'searchresulttext' => 'للمزيد من المعلومات حول البحث في {{SITENAME}}، انظر [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'لقد بحثت عن \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|كل الصفحات التي تبدأ ب"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|كل الصفحات التي تصل إلى "$1"]])',
'searchsubtitleinvalid' => "لقد بحثت عن '''$1'''",
-'noexactmatch' => "'''لا توجد صفحة بالاسم \"\$1\"'''.
-يمكنك [[:\$1|إنشاء هذه الصفحة]].",
-'noexactmatch-nocreate' => "'''لا توجد صفحة بالاسم \"\$1\".'''",
'toomanymatches' => 'وجدت مطابقات كثيرة، من فضلك جرب استعلاما مختلفا',
'titlematches' => 'عنوان الصفحة يطابق',
'notitlematches' => 'لم يتم إيجاد أي عنوان مطابق',
'textmatches' => 'نص الصفحة يطابق',
'notextmatches' => 'لم يتم إيجاد أي نص مطابق',
-'prevn' => '$1 السابقة',
-'nextn' => '$1 التالية',
+'prevn' => '{{PLURAL:$1|$1}} السابقة',
+'nextn' => '{{PLURAL:$1|$1}} التالية',
'prevn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
-'viewprevnext' => 'عرض ($1) ($2) ($3).',
+'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'خيارات البحث',
'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
'searchhelp-url' => 'Help:محتويات',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|تصفح الصفحات بهذه البادئة]]',
'searchprofile-articles' => 'صفحات المحتوى',
-'searchprofile-articles-and-proj' => 'صفحات المحتوى والمشروع',
-'searchprofile-project' => 'صفحات المشروع',
-'searchprofile-images' => 'الملفات',
+'searchprofile-project' => 'صفحات المساعدة والمشروع',
+'searchprofile-images' => 'الوسائط المتعددة',
'searchprofile-everything' => 'كل شيء',
'searchprofile-advanced' => 'متقدم',
'searchprofile-articles-tooltip' => 'ابحث في $1',
@@ -1347,8 +1380,6 @@ $2',
'searchprofile-images-tooltip' => 'ابحث عن الصور',
'searchprofile-everything-tooltip' => 'ابحث في كل المحتوى (شاملا صفحات النقاش)',
'searchprofile-advanced-tooltip' => 'ابحث في النطاقات المخصصة',
-'prefs-search-nsdefault' => 'ابحث باستخدام الافتراضيات:',
-'prefs-search-nscustom' => 'ابحث في النطاقات المخصصة:',
'search-result-size' => '$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})',
'search-result-score' => 'الارتباط: $1%',
'search-redirect' => '(تحويلة $1)',
@@ -1361,11 +1392,12 @@ $2',
'search-mwsuggest-disabled' => 'لا اقتراحات',
'search-relatedarticle' => 'مرتبطة',
'mwsuggest-disable' => 'عطل اقتراحات أجاكس',
+'searcheverything-enable' => 'ابحث في جميع النطاقات',
'searchrelated' => 'مرتبطة',
'searchall' => 'الكل',
'showingresults' => "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
'showingresultsnum' => "معروض بالأسفل {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} بدءا من رقم'''$2'''.",
-'showingresultstotal' => "معروض بالأسفل {{PLURAL:$4|النتيجة '''$1''' من '''$3'''|النتائج '''$1 - $2''' من '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
'nonefound' => "'''ملاحظة''': فقط بعض النطاقات يتم البحث فيها افتراضيا.
حاول بدء استعلامك ب ''all:'' للبحث في كل المحتوى (شاملا صفحات النقاش، القوالب، إلى آخره)، أو استخدم النطاق المطلوب كبادئة.",
'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
@@ -1374,115 +1406,153 @@ $2',
'powersearch-ns' => 'بحث في النطاقات:',
'powersearch-redir' => 'عرض التحويلات',
'powersearch-field' => 'بحث عن',
+'powersearch-togglelabel' => 'اختر:',
+'powersearch-toggleall' => 'الكل',
+'powersearch-togglenone' => 'لا شيء',
'search-external' => 'بحث خارجي',
'searchdisabled' => 'البحث في {{SITENAME}} معطل.
يمكنك البحث من خلال جوجل في الوقت الحالي.
لاحظ أن فهارسه لمحتوى {{SITENAME}} ربما تكون غير محدثة.',
+# Quickbar
+'qbsettings' => 'لوح سريع',
+'qbsettings-none' => 'بلا تحديد',
+'qbsettings-fixedleft' => 'مثبت لليسار',
+'qbsettings-fixedright' => 'مثبت لليمين',
+'qbsettings-floatingleft' => 'حر لليسار',
+'qbsettings-floatingright' => 'حر لليمين',
+
# Preferences page
-'preferences' => 'تفضيلات',
-'mypreferences' => 'تفضيلاتي',
-'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'غير مسجل',
-'prefsnologintext' => 'يجب أن تكون <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} مسجل الدخول]</span> حتى تتمكن من تعديل تفضيلات المستخدم.',
-'prefsreset' => 'أعيدت التفضيلات إلى الإعداد الافتراضي المخزن.',
-'qbsettings' => 'لوح سريع',
-'qbsettings-none' => 'بلا تحديد',
-'qbsettings-fixedleft' => 'مثبت لليسار',
-'qbsettings-fixedright' => 'مثبت لليمين',
-'qbsettings-floatingleft' => 'حر لليسار',
-'qbsettings-floatingright' => 'حر لليمين',
-'changepassword' => 'غير كلمة السر',
-'skin' => 'واجهة',
-'skin-preview' => 'عرض',
-'math' => 'رياضيات',
-'dateformat' => 'صيغة التاريخ',
-'datedefault' => 'لا تفضيل',
-'datetime' => 'وقت وتاريخ',
-'math_failure' => 'خطأ رياضيات',
-'math_unknown_error' => 'خطأ غير معروف',
-'math_unknown_function' => 'وظيفة غير معروفة',
-'math_lexing_error' => 'خطأ في الصيغة',
-'math_syntax_error' => 'خطأ في الصياغة',
-'math_image_error' => 'فشل التحويل لPNG؛
-تحقق من تثبيت كل من Latex و dvips و gs و convert.',
-'math_bad_tmpdir' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الرياضيات المؤقت',
-'math_bad_output' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الخرج للرياضيات',
-'math_notexvc' => 'مفقود texvc executable؛
-من فضلك انظر math/README للضبط.',
-'prefs-personal' => 'ملف المستخدم',
-'prefs-rc' => 'أحدث التغييرات',
-'prefs-watchlist' => 'قائمة المراقبة',
-'prefs-watchlist-days' => 'عدد الأيام للعرض في قائمة المراقبة:',
-'prefs-watchlist-days-max' => '(حد أقصى 7 أيام)',
-'prefs-watchlist-edits' => 'عدد التعديلات التي تعرض في قائمة المراقبة الموسعة:',
-'prefs-watchlist-edits-max' => '(عدد أقصى: 1000)',
-'prefs-misc' => 'متفرقات',
-'prefs-resetpass' => 'غير كلمة السر',
-'saveprefs' => 'احفظ',
-'resetprefs' => 'أزل التغييرات غير المحفوظة',
-'restoreprefs' => 'استرجع كل الإعدادات الافتراضية',
-'textboxsize' => 'أبعاد صندوق النصوص',
-'prefs-edit-boxsize' => 'حجم نافذة التحرير.',
-'rows' => 'صفوف:',
-'columns' => 'أعمدة:',
-'searchresultshead' => 'ابحث',
-'resultsperpage' => 'عدد النتائج في الصفحة:',
-'contextlines' => 'عدد الأسطر في كل نتيجة:',
-'contextchars' => 'عدد الأحرف في كل سطر',
-'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:',
-'recentchangesdays' => 'عدد الأيام المعروضة في أحدث التغييرات:',
-'recentchangesdays-max' => '(حد أقصى $1 {{PLURAL:$1|يوم|يوم}})',
-'recentchangescount' => 'عدد التعديلات للعرض في أحدث التغييرات، تواريخ الصفحات، وفي السجلات، افتراضيا:',
-'savedprefs' => 'تم حفظ تفضيلاتك.',
-'timezonelegend' => 'المنطقة الزمنية:',
-'timezonetext' => '¹عدد الساعات بين توقيتك المحلي وتوقيت الخادم (UTC).',
-'localtime' => 'الوقت المحلي:',
-'timezoneselect' => 'المنطقة الزمنية:',
-'timezoneuseserverdefault' => 'استخدم افتراض الخادوم',
-'timezoneuseoffset' => 'آخر (حدد الفرق)',
-'timezoneoffset' => 'الفرق¹:',
-'servertime' => 'وقت الخادوم:',
-'guesstimezone' => 'أدخل التوقيت من المتصفح',
-'timezoneregion-africa' => 'أفريقيا',
-'timezoneregion-america' => 'أمريكا',
-'timezoneregion-antarctica' => 'أنتاركتيكا',
-'timezoneregion-arctic' => 'القطب الشمالي',
-'timezoneregion-asia' => 'آسيا',
-'timezoneregion-atlantic' => 'المحيط الأطلنطي',
-'timezoneregion-australia' => 'أستراليا',
-'timezoneregion-europe' => 'أوروبا',
-'timezoneregion-indian' => 'المحيط الهندي',
-'timezoneregion-pacific' => 'المحيط الهادي',
-'allowemail' => 'مكن تلقي البريد الإلكتروني من المستخدمين الآخرين',
-'prefs-searchoptions' => 'خيارات البحث',
-'prefs-namespaces' => 'أسماء النطاقات',
-'defaultns' => 'ابحث في هذه النطاقات افتراضيا:',
-'default' => 'افتراضي',
-'files' => 'ملفات',
-'prefs-custom-css' => 'CSS مخصص',
-'prefs-custom-js' => 'جافاسكربت مخصص',
+'preferences' => 'تفضيلات',
+'mypreferences' => 'تفضيلاتي',
+'prefs-edits' => 'عدد التعديلات:',
+'prefsnologin' => 'غير مسجل',
+'prefsnologintext' => 'يجب أن تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span> حتى تتمكن من تعديل تفضيلات المستخدم.',
+'changepassword' => 'غير كلمة السر',
+'prefs-skin' => 'واجهة',
+'skin-preview' => 'عرض',
+'prefs-math' => 'رياضيات',
+'datedefault' => 'لا تفضيل',
+'prefs-datetime' => 'وقت وتاريخ',
+'prefs-personal' => 'ملف المستخدم',
+'prefs-rc' => 'أحدث التغييرات',
+'prefs-watchlist' => 'قائمة المراقبة',
+'prefs-watchlist-days' => 'عدد الأيام للعرض في قائمة المراقبة:',
+'prefs-watchlist-days-max' => '(حد أقصى 7 أيام)',
+'prefs-watchlist-edits' => 'عدد التعديلات التي تعرض في قائمة المراقبة الموسعة:',
+'prefs-watchlist-edits-max' => 'العدد الأقصى: 1000',
+'prefs-watchlist-token' => 'مفتاح قائمة المراقبة:',
+'prefs-misc' => 'متفرقات',
+'prefs-resetpass' => 'غير كلمة السر',
+'prefs-email' => 'خيارات البريد الإلكتروني',
+'prefs-rendering' => 'المظهر',
+'saveprefs' => 'احفظ',
+'resetprefs' => 'أزل التغييرات غير المحفوظة',
+'restoreprefs' => 'استرجع كل الإعدادات الافتراضية',
+'prefs-editing' => 'التحرير',
+'prefs-edit-boxsize' => 'حجم نافذة التحرير.',
+'rows' => 'صفوف:',
+'columns' => 'أعمدة:',
+'searchresultshead' => 'ابحث',
+'resultsperpage' => 'عدد النتائج في الصفحة:',
+'contextlines' => 'عدد الأسطر في كل نتيجة:',
+'contextchars' => 'عدد الأحرف في كل سطر',
+'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:',
+'recentchangesdays' => 'عدد الأيام المعروضة في أحدث التغييرات:',
+'recentchangesdays-max' => 'الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}',
+'recentchangescount' => 'عدد التعديلات الظاهرة مبدئيا:',
+'prefs-help-recentchangescount' => 'بما في ذلك أحدث التغييرات وتاريخ الصفحات والسجلات.',
+'prefs-help-watchlist-token' => 'سوف يولد ملء هذا الحقل بمفتاح سري تغذية RSS لقائمة مراقبتك.
+سوف يتمكن أي شخص يعرف مفتاح هذا الحقل من قراءة قائمة مراقبتك، لذا فاختر قيمة منيعة.
+هنا قيمة مولدة تلقائيا تستطيع استخدامها: $1',
+'savedprefs' => 'تم حفظ تفضيلاتك.',
+'timezonelegend' => 'المنطقة الزمنية:',
+'localtime' => 'الوقت المحلي:',
+'timezoneuseserverdefault' => 'استخدم افتراض الخادوم',
+'timezoneuseoffset' => 'آخر (حدد الفرق)',
+'timezoneoffset' => 'الفرق¹:',
+'servertime' => 'وقت الخادوم:',
+'guesstimezone' => 'أدخل التوقيت من المتصفح',
+'timezoneregion-africa' => 'أفريقيا',
+'timezoneregion-america' => 'أمريكا',
+'timezoneregion-antarctica' => 'أنتاركتيكا',
+'timezoneregion-arctic' => 'القطب الشمالي',
+'timezoneregion-asia' => 'آسيا',
+'timezoneregion-atlantic' => 'المحيط الأطلنطي',
+'timezoneregion-australia' => 'أستراليا',
+'timezoneregion-europe' => 'أوروبا',
+'timezoneregion-indian' => 'المحيط الهندي',
+'timezoneregion-pacific' => 'المحيط الهادي',
+'allowemail' => 'مكن تلقي البريد الإلكتروني من المستخدمين الآخرين',
+'prefs-searchoptions' => 'خيارات البحث',
+'prefs-namespaces' => 'أسماء النطاقات',
+'defaultns' => 'أو ابحث في هذه النطاقات:',
+'default' => 'افتراضي',
+'prefs-files' => 'ملفات',
+'prefs-custom-css' => 'CSS مخصص',
+'prefs-custom-js' => 'جافاسكربت مخصص',
+'prefs-reset-intro' => 'يمكنك استخدام هذه الصفحة لإعادة تفضيلاتك للحالة الافتراضية للموقع.
+لن تستطيع استرجاع الحالة السابقة.',
+'prefs-emailconfirm-label' => 'تأكيد البريد الإلكتروني:',
+'prefs-textboxsize' => 'حجم نافذة التحرير',
+'youremail' => 'البريد:',
+'username' => 'اسم المستخدم:',
+'uid' => 'رقم المستخدم:',
+'prefs-memberingroups' => 'عضو في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:',
+'prefs-registration' => 'وقت التسجيل:',
+'yourrealname' => 'الاسم الحقيقي:',
+'yourlanguage' => 'اللغة:',
+'yourvariant' => 'اللهجة:',
+'yournick' => 'التوقيع:',
+'prefs-help-signature' => 'يجب أن توقع تعليقات صفحات النقاش باستخدام "<nowiki>~~~~</nowiki>" الذي سيحول إلى توقيعك مع طابع زمني.',
+'badsig' => 'توقيع خام غير صحيح؛ تحقق من وسوم HTML.',
+'badsiglength' => 'توقيعك طويل جدا.
+يجب أن يكون أقل من $1 {{PLURAL:$1|حرف|حروف}}.',
+'yourgender' => 'الجنس:',
+'gender-unknown' => 'غير محدد',
+'gender-male' => 'ذكر',
+'gender-female' => 'أنثى',
+'prefs-help-gender' => 'اختياري: يستخدم للمخاطبة المعتمدة على الجنس بواسطة البرنامج. ستكون هذه المعلومة علنية.',
+'email' => 'البريد الإلكتروني',
+'prefs-help-realname' => 'الاسم الحقيقي اختياري.
+لو اخترت أن توفره، فسيستخدم في الإشارة إلى عملك.',
+'prefs-help-email' => 'عنوان البريد الإلكتروني اختياري، لكن يسمح بأن يتم إرسال كلمة السر الخاصة بك إليك لو نسيتها.
+يمكنك أيضا اختيار السماح للآخرين بالاتصال بك عن طريق صفحتك أو صفحة نقاشك من دون معرفة هويتك.',
+'prefs-help-email-required' => 'عنوان البريد الإلكتروني مطلوب.',
+'prefs-info' => 'المعلومات الأساسية',
+'prefs-i18n' => 'الترجمة',
+'prefs-signature' => 'التوقيع',
+'prefs-dateformat' => 'صيغة الوقت',
+'prefs-timeoffset' => 'المنطقة الزمنية',
+'prefs-advancedediting' => 'خيارات متقدمة',
+'prefs-advancedrc' => 'خيارات متقدمة',
+'prefs-advancedrendering' => 'خيارات متقدمة',
+'prefs-advancedsearchoptions' => 'خيارات متقدمة',
+'prefs-advancedwatchlist' => 'خيارات متقدمة',
+'prefs-display' => 'خيارات العرض',
+'prefs-diffs' => 'فروقات',
# User rights
-'userrights' => 'إدارة صلاحيات المستخدم', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'إدارة مجموعات المستخدم',
-'userrights-user-editname' => 'أدخل اسم مستخدم:',
-'editusergroup' => 'عدل مجموعات المستخدم',
-'editinguser' => "تغيير صلاحيات المستخدم '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'تعديل مجموعات المستخدم',
-'saveusergroups' => 'احفظ مجموعات المستخدم',
-'userrights-groupsmember' => 'عضو في:',
-'userrights-groups-help' => 'يمكنك تغيير المجموعات التي ينتمي هذا المستخدم إليها:
+'userrights' => 'إدارة صلاحيات المستخدم',
+'userrights-lookup-user' => 'إدارة مجموعات المستخدم',
+'userrights-user-editname' => 'أدخل اسم مستخدم:',
+'editusergroup' => 'عدل مجموعات المستخدم',
+'editinguser' => "تغيير صلاحيات المستخدم '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'تعديل مجموعات المستخدم',
+'saveusergroups' => 'احفظ مجموعات المستخدم',
+'userrights-groupsmember' => 'عضو في:',
+'userrights-groupsmember-auto' => 'عضو ضمني في:',
+'userrights-groups-help' => 'يمكنك تغيير المجموعات التي ينتمي هذا المستخدم إليها:
* يعني الصندوق المعلم أن المستخدم في هذه المجموعة.
* يعني الصندوق غير المعلم أن المستخدم ليس في هذه المجموعة.
* تعني علامة * عدم إمكانية إزالة المجموعة متى ما أضفتها، أو العكس.',
-'userrights-reason' => 'السبب:',
-'userrights-no-interwiki' => 'أنت لا تمتلك الصلاحية لتعديل صلاحيات المستخدمين على الويكيات الأخرى.',
-'userrights-nodatabase' => 'قاعدة البيانات $1 غير موجودة أو ليست محلية.',
-'userrights-nologin' => 'يجب عليك [[Special:UserLogin|تسجيل الدخول]] بحساب إداري لتعديل صلاحيات المستخدم.',
-'userrights-notallowed' => 'حسابك لا يمتلك السماح لتعديل صلاحيات المستخدم.',
-'userrights-changeable-col' => 'المجموعات التي يمكنك تغييرها',
-'userrights-unchangeable-col' => 'المجموعات التي لا يمكنك تغييرها',
+'userrights-reason' => 'السبب:',
+'userrights-no-interwiki' => 'أنت لا تمتلك الصلاحية لتعديل صلاحيات المستخدمين على الويكيات الأخرى.',
+'userrights-nodatabase' => 'قاعدة البيانات $1 غير موجودة أو ليست محلية.',
+'userrights-nologin' => 'يجب عليك [[Special:UserLogin|تسجيل الدخول]] بحساب إداري لتعديل صلاحيات المستخدم.',
+'userrights-notallowed' => 'حسابك لا يمتلك السماح لتعديل صلاحيات المستخدم.',
+'userrights-changeable-col' => 'المجموعات التي يمكنك تغييرها',
+'userrights-unchangeable-col' => 'المجموعات التي لا يمكنك تغييرها',
# Groups
'group' => 'المجموعة:',
@@ -1535,6 +1605,7 @@ $2',
'right-bigdelete' => 'حذف الصفحات ذات التواريخ الكبيرة',
'right-deleterevision' => 'حذف واسترجاع مراجعات معينة من الصفحات',
'right-deletedhistory' => 'رؤية مدخلات التاريخ المحذوفة، بدون نصوصها المصاحبة',
+'right-deletedtext' => 'عرض النص المحذوف والتغييرات بين المراجعات المحذوفة',
'right-browsearchive' => 'البحث في الصفحات المحذوفة',
'right-undelete' => 'استرجاع صفحة',
'right-suppressrevision' => 'مراجعة واسترجاع المراجعات المخفية عن مديري النظام',
@@ -1548,6 +1619,8 @@ $2',
'right-editprotected' => 'تعديل الصفحات المحمية (بدون الحماية المضمنة)',
'right-editinterface' => 'تعديل واجهة المستخدم',
'right-editusercssjs' => 'تعديل ملفات CSS و JS للمستخدمين الآخرين',
+'right-editusercss' => 'تعديل ملفات CSS للمستخدمين الآخرين',
+'right-edituserjs' => 'تعديل ملفات JS للمستخدمين الآخرين',
'right-rollback' => 'استرجاع تعديلات آخر مستخدم عدل صفحة معينة سريعا',
'right-markbotedits' => 'التعليم على تعديلات الاسترجاع كتعديلات بوت',
'right-noratelimit' => 'غير متأثر بحدود المعدل',
@@ -1564,6 +1637,8 @@ $2',
'right-siteadmin' => 'غلق ورفع غلق قاعدة البيانات',
'right-reset-passwords' => 'إعادة ضبط كلمة السر للمستخدمين الآخرين',
'right-override-export-depth' => 'تصدير الصفحات متضمنة الصفحات الموصولة حتى عمق 5',
+'right-versiondetail' => 'رؤية معلومات نسخة البرنامج الممتدة',
+'right-sendemail' => 'إرسال رسائل بريد إلكتروني إلى مستخدمين آخرين',
# User rights log
'rightslog' => 'سجل صلاحيات المستخدمين',
@@ -1613,6 +1688,15 @@ $2',
'recentchanges-legend' => 'خيارات أحدث التغييرات',
'recentchangestext' => 'تابع آخر التغييرات في الويكي من هذه الصفحة.',
'recentchanges-feed-description' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
+'recentchanges-label-legend' => 'المفتاح: $1.',
+'recentchanges-legend-newpage' => '$1 - صفحة جديدة',
+'recentchanges-label-newpage' => 'أنشأ هذا التعديل صفحة جديدة',
+'recentchanges-legend-minor' => '$1 - تعديل طفيف',
+'recentchanges-label-minor' => 'هذا تعديل طفيف',
+'recentchanges-legend-bot' => '$1 - تعديل بوت',
+'recentchanges-label-bot' => 'أجرى هذا التعديل بوت',
+'recentchanges-legend-unpatrolled' => '$1 - تعديل غير مراجع',
+'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
'rcnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''اليوم''' الماضي|'''اليومين''' الماضيين|ال'''$2''' أيام الماضية|ال'''$2''' يوما الماضيا|ال'''$2''' يوم الماضي}}، كما في $5، $4.",
'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
'rclistfrom' => 'أظهر التغييرات بدءا من $1',
@@ -1640,6 +1724,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'تغييرات ذات علاقة',
+'recentchangeslinked-feed' => 'تغييرات ذات علاقة',
+'recentchangeslinked-toolbox' => 'تغييرات ذات علاقة',
'recentchangeslinked-title' => 'التغييرات المرتبطة ب "$1"',
'recentchangeslinked-noresult' => 'لم تحدث تعديلات في الصفحات التي لها وصلات هنا خلال الفترة المحددة.',
'recentchangeslinked-summary' => "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).
@@ -1650,8 +1736,8 @@ $2',
# Upload
'upload' => 'ارفع ملفا',
'uploadbtn' => 'ارفع الملف',
-'reupload' => 'أعد الرفع',
'reuploaddesc' => 'إلغاء الرفع والرجوع إلى استمارة الرفع',
+'upload-tryagain' => 'أرسل وصف ملف معدل',
'uploadnologin' => 'لم تقم بتسجيل الدخول',
'uploadnologintext' => 'يجب أن تكون [[Special:UserLogin|مسجلا الدخول]] لتتمكن من رفع الملفات.',
'upload_directory_missing' => 'مجلد الرفع ($1) مفقود ولم يمكن إنشاؤه بواسطة خادوم الوب.',
@@ -1684,6 +1770,7 @@ $2',
'illegalfilename' => 'اسم الملف "$1" يحتوي على حروف غير مسموح بها في عناوين الصفحات.
من فضلك أعد تسمية الملف وحاول رفعه مرة أخرى.',
'badfilename' => 'تم تغيير اسم الملف إلى "$1".',
+'filetype-mime-mismatch' => 'امتداد الملف لا يطابق نوع MIME.',
'filetype-badmime' => 'من غير المسموح به رفع ملفات من النوع "$1".',
'filetype-bad-ie-mime' => 'لم يمكن رفع هذا المف لأن إنترنت إكسبلورر سيكتشفه ك"$1", وهو نوع ملف ممنوع ومن المحتمل أن يكون خطرا.',
'filetype-unwanted-type' => "'''\".\$1\"''' هو نوع ملف غير مرغوب فيه.
@@ -1706,7 +1793,6 @@ $2',
* اسم الملف المراد رفعه: '''<tt>[[:$1]]</tt>'''
* اسم الملف الموجود: '''<tt>[[:$2]]</tt>'''
من فضلك اختر اسما مختلفا.",
-'fileexists-thumb' => "<center>'''الملف الموجود'''</center>",
'fileexists-thumbnail-yes' => "يبدو أن الملف مصغرا لحجم أعلى ''(تصغير)''. [[$1|thumb]]
من فضلك افحص الملف '''<tt>[[:$1]]</tt>'''.
إن كان هو نفس الملف بالحجم الأصلي فلا داعي لرفع تصغير إضافي.",
@@ -1722,6 +1808,7 @@ $2',
'file-deleted-duplicate' => 'ملف مطابق لهذه الملف ([[$1]]) تم حذفه من قبل. ينبغي أن تتحقق من تاريخ الحذف لهذا الملف قبل المتابعة بإعادة رفعه.',
'successfulupload' => 'تم رفع الملف بنجاح',
'uploadwarning' => 'تحذير الرفع',
+'uploadwarning-text' => 'من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.',
'savefile' => 'احفظ الملف',
'uploadedimage' => 'رفع "[[$1]]"',
'overwroteimage' => 'رفع نسخة جديدة من "[[$1]]"',
@@ -1729,12 +1816,14 @@ $2',
'uploaddisabledtext' => 'رفع الملفات معطل.',
'php-uploaddisabledtext' => 'رفع ملفات PHP معطل. من فضلك تحقق من إعدادات رفع الملفات.',
'uploadscripted' => 'هذا الملف يضم كود HTML أو كود آخر يمكن أن يفسره متصفح الوب بطريقة خاطئة.',
-'uploadcorrupt' => 'هذا الملف فاسد أو له امتداد خاطيء.
-من فضلك تأكد من الملف وأعد الرفع مرة أخرى.',
'uploadvirus' => 'الملف يحتوي على فيروس! التفاصيل: $1',
+'upload-source' => 'الملف المصدر',
'sourcefilename' => 'اسم ملف المصدر:',
+'sourceurl' => 'مسار المصدر:',
'destfilename' => 'اسم الملف المستهدف:',
'upload-maxfilesize' => 'حجم الملف الأقصى: $1',
+'upload-description' => 'وصف الملف',
+'upload-options' => 'خيارات الرفع',
'watchthisupload' => 'راقب هذا الملف',
'filewasdeleted' => 'تم رفع ثم حذف ملف بهذا الاسم من قبل.
من الأفضل مراجعة $1 قبل رفعه مرة أخرى.',
@@ -1759,15 +1848,46 @@ MGP # بينتاكس
PICT # متنوع
#</pre> <!-- اترك هذا السطر تماما كما هو -->',
-'upload-proto-error' => 'بروتوكول غير صحيح',
-'upload-proto-error-text' => 'الرفع عن بعد يتطلب مسارا يبدأ بـ <code>http://</code> أو <code>ftp://</code>.',
-'upload-file-error' => 'خطأ داخلي',
-'upload-file-error-text' => 'حدث خطأ داخلي عند محاولة إنشاء ملف مؤقت على الخادوم.
+'upload-proto-error' => 'بروتوكول غير صحيح',
+'upload-proto-error-text' => 'الرفع عن بعد يتطلب مسارا يبدأ بـ <code>http://</code> أو <code>ftp://</code>.',
+'upload-file-error' => 'خطأ داخلي',
+'upload-file-error-text' => 'حدث خطأ داخلي عند محاولة إنشاء ملف مؤقت على الخادوم.
من فضلك اتصل [[Special:ListUsers/sysop|بإداري]].',
-'upload-misc-error' => 'خطأ غير معروف في الرفع',
-'upload-misc-error-text' => 'حدث خطأ غير معروف أثناء عملية الرفع.
+'upload-misc-error' => 'خطأ غير معروف في الرفع',
+'upload-misc-error-text' => 'حدث خطأ غير معروف أثناء عملية الرفع.
من فضلك تاكد أن المسار صحيح ومن الممكن الدخول عليه ثم حاول مرة أخرى.
إذا استمرت المشكلة في الحدوث، اتصل [[Special:ListUsers/sysop|بإداري]].',
+'upload-too-many-redirects' => 'احتوى المسار تحويلات كثيرة جدا',
+'upload-unknown-size' => 'حجم غير معروف',
+'upload-http-error' => 'صودف خطأ HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'رفض الوصول',
+'img-auth-nopathinfo' => 'PATH_INFO مفقودة.
+خادمك ليس مضبوطا لتمرير هذه المعلومات.
+ربما يكون CGI-based ولا يمكنه دعم img_auth.
+انظر http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'المسار المطلوب غير موجود في مجلد الرفع المضبوط.',
+'img-auth-badtitle' => 'تعذر تشكيل عنوان صالح من "$1".',
+'img-auth-nologinnWL' => 'لست والجا و"$1" ليست في القائمة البيضاء.',
+'img-auth-nofile' => 'الملف "$1" غير موجود.',
+'img-auth-isdir' => 'أنت تحاول الوصول إلى الدليل "$1".
+يسمح بوصول الملفات فقط.',
+'img-auth-streaming' => 'عرض "$1".',
+'img-auth-public' => 'وظيفة img_auth.php هي لإخراج الملفات من ويكي سري.
+هذا الويكي مضبوط كويكي علني.
+لتأمين إضافي، img_auth.php تم تعطيلها.',
+'img-auth-noread' => 'لا يملك المستخدم صلاحية قراءة "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'مسار غير صالح: $1',
+'http-invalid-scheme' => 'المسارات ذات البروتكول "$1" غير مدعومة.',
+'http-request-error' => 'فشل طلب HTTP لسبب غير معروف.',
+'http-read-error' => 'خطأ قراءة HTTP.',
+'http-timed-out' => 'انتهت مهلة طلب HTTP.',
+'http-curl-error' => 'فشل جلب المسار: $1',
+'http-host-unreachable' => 'تعذر الوصول إلى المسار.',
+'http-bad-status' => 'ثمة مشكلة أثناء طلب HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'لم يتمكن من الوصول للمسار',
@@ -1779,6 +1899,7 @@ PICT # متنوع
ربما تريد المحاولة في وقت أقل ازدحاما.',
'license' => 'ترخيص:',
+'license-header' => 'ترخيص',
'nolicense' => 'غير محدد',
'license-nopreview' => '(العرض المسبق غير متوفر)',
'upload_source_url' => ' (مسار صحيح، يمكن الوصول إليه)',
@@ -1799,39 +1920,43 @@ PICT # متنوع
'listfiles_count' => 'نسخ',
# File description page
-'filehist' => 'تاريخ الملف',
-'filehist-help' => 'اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.',
-'filehist-deleteall' => 'احذف الكل',
-'filehist-deleteone' => 'حذف',
-'filehist-revert' => 'استرجع',
-'filehist-current' => 'حالي',
-'filehist-datetime' => 'وقت/زمن',
-'filehist-thumb' => 'صورة مصغرة',
-'filehist-thumbtext' => 'تصغير للنسخة بتاريخ $1',
-'filehist-nothumb' => 'لا تصغير',
-'filehist-user' => 'مستخدم',
-'filehist-dimensions' => 'الأبعاد',
-'filehist-filesize' => 'حجم الملف',
-'filehist-comment' => 'تعليق',
-'imagelinks' => 'وصلات الملف',
-'linkstoimage' => '{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:',
-'linkstoimage-more' => 'أكثر من {{PLURAL:$1||صفحة واحدة تصل|صفحتين تصلان|$1 صفحات تصل|$1 صفحة تصل}} إلى هذا الملف.
+'file-anchor-link' => 'ملف',
+'filehist' => 'تاريخ الملف',
+'filehist-help' => 'اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.',
+'filehist-deleteall' => 'احذف الكل',
+'filehist-deleteone' => 'حذف',
+'filehist-revert' => 'استرجع',
+'filehist-current' => 'حالي',
+'filehist-datetime' => 'وقت/زمن',
+'filehist-thumb' => 'صورة مصغرة',
+'filehist-thumbtext' => 'تصغير للنسخة بتاريخ $1',
+'filehist-nothumb' => 'لا تصغير',
+'filehist-user' => 'مستخدم',
+'filehist-dimensions' => 'الأبعاد',
+'filehist-filesize' => 'حجم الملف',
+'filehist-comment' => 'تعليق',
+'filehist-missing' => 'ملف مفقود',
+'imagelinks' => 'وصلات الملف',
+'linkstoimage' => '{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:',
+'linkstoimage-more' => 'أكثر من {{PLURAL:$1||صفحة واحدة تصل|صفحتين تصلان|$1 صفحات تصل|$1 صفحة تصل}} إلى هذا الملف.
القائمة التالية تعرض فقط {{PLURAL:$1||أول صفحة تصل|أول صفحتين تصلان|أول $1 صفحات تصل|أول $1 صفحة تصل}} إلى هذا الملف.
[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.',
-'nolinkstoimage' => 'لا توجد صفحات تصل لهذا الملف.',
-'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|المزيد من الوصلات]] إلى هذا الملف.',
-'redirectstofile' => '{{PLURAL:$1|الملف|ال$1 ملف}} التالي يحول إلى هذا الملف:',
-'duplicatesoffile' => '{{PLURAL:$1|الملف التالي مكرر|ال$1 ملف التالي مكررات}} لهذا الملف
+'nolinkstoimage' => 'لا توجد صفحات تصل لهذا الملف.',
+'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|المزيد من الوصلات]] إلى هذا الملف.',
+'redirectstofile' => '{{PLURAL:$1|الملف|ال$1 ملف}} التالي يحول إلى هذا الملف:',
+'duplicatesoffile' => '{{PLURAL:$1|الملف التالي مكرر|ال$1 ملف التالي مكررات}} لهذا الملف
([[Special:FileDuplicateSearch/$2|المزيد من التفاصيل]]):',
-'sharedupload' => 'هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'من فضلك انظر $1 لمزيد من المعلومات.',
-'shareduploadwiki-desc' => 'الوصف على $1 الخاصة به هناك معروض بالأسفل.',
-'shareduploadwiki-linktext' => 'صفحة وصف الملف',
-'noimage' => 'لا يوجد ملف بهذا الاسم، لكن بإمكانك أن تقوم بـ$1.',
-'noimage-linktext' => 'رفع واحد',
-'uploadnewversion-linktext' => 'ارفع نسخة جديدة من هذا الملف',
-'shared-repo-from' => 'من $1', # $1 is the repository name
-'shared-repo' => 'مستودع مشترك', # used when shared-repo-NAME does not exist
+'sharedupload' => 'هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.',
+'sharedupload-desc-there' => 'هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.
+من فضلك انظر [$2 صفحة وصف الملف] لمزيد من المعلومات.',
+'sharedupload-desc-here' => 'هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.
+الوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.',
+'filepage-nofile' => 'لا ملف موجود بهذا الاسم.',
+'filepage-nofile-link' => 'لا يوجد ملف بهذا الاسم، لكن يمكنك [$1 رفعه].',
+'uploadnewversion-linktext' => 'ارفع نسخة جديدة من هذا الملف',
+'shared-repo-from' => 'من $1',
+'shared-repo' => 'مستودع مشترك',
+'shared-repo-name-wikimediacommons' => 'ويكيميديا كومنز',
# File reversion
'filerevert' => 'استرجع $1',
@@ -1860,6 +1985,7 @@ PICT # متنوع
** خرق حقوق النشر
** ملف مكرر',
'filedelete-edit-reasonlist' => 'عدل أسباب الحذف',
+'filedelete-maintenance' => 'حذف واسترجاع الملفات معطل مؤقتا خلال الصيانة.',
# MIME search
'mimesearch' => 'بحث MIME',
@@ -1882,7 +2008,7 @@ PICT # متنوع
# Random page
'randompage' => 'صفحة عشوائية',
-'randompage-nopages' => 'لا توجد صفحات في النطاق "$1".',
+'randompage-nopages' => 'لا توجد صفحات في {{PLURAL:$2||النطاق التالي|النطاقين التاليين|النطاقات التالية}}: $1.',
# Random redirect
'randomredirect' => 'تحويلة عشوائية',
@@ -1894,6 +2020,7 @@ PICT # متنوع
'statistics-header-edits' => 'إحصاءات التعديلات',
'statistics-header-views' => 'إحصاءات المشاهدة',
'statistics-header-users' => 'إحصاءات المستخدمين',
+'statistics-header-hooks' => 'إحصاءات أخرى',
'statistics-articles' => 'صفحات المحتوى',
'statistics-pages' => 'الصفحات',
'statistics-pages-desc' => 'كل الصفحات في الويكي، بما في ذلك صفحات النقاش، التحويلات، إلى آخره.',
@@ -1923,8 +2050,8 @@ PICT # متنوع
'brokenredirects' => 'تحويلات مكسورة',
'brokenredirectstext' => 'التحويلات التالية تصل لصفحات غير موجودة:',
-'brokenredirects-edit' => '(عدل)',
-'brokenredirects-delete' => '(حذف)',
+'brokenredirects-edit' => 'عدل',
+'brokenredirects-delete' => 'حذف',
'withoutinterwiki' => 'صفحات بدون وصلات لغات أخرى',
'withoutinterwiki-summary' => 'الصفحات التالية لا تصل إلى نسخ بلغات أخرى.',
@@ -2033,7 +2160,7 @@ PICT # متنوع
# Special:Categories
'categories' => 'تصنيفات',
-'categoriespagetext' => 'التصنيفات التالية تحتوي على صفحات أو ميديا.
+'categoriespagetext' => '{{PLURAL:$1||التصنيف التالي يحتوي|التصنيفان التاليان يحتويان|التصنيفات التالية تحتوي}} على صفحات أو وسائط.
[[Special:UnusedCategories|التصنيفات غير المستخدمة]] غير معروضة هنا.
انظر أيضا [[Special:WantedCategories|التصنيفات المطلوبة]].',
'categoriesfrom' => 'أظهر التصنيفات بدءا من:',
@@ -2041,8 +2168,9 @@ PICT # متنوع
'special-categories-sort-abc' => 'رتب هجائيا',
# Special:DeletedContributions
-'deletedcontributions' => 'مساهمات المستخدم المحذوفة',
-'deletedcontributions-title' => 'مساهمات المستخدم المحذوفة',
+'deletedcontributions' => 'مساهمات المستخدم المحذوفة',
+'deletedcontributions-title' => 'مساهمات المستخدم المحذوفة',
+'sp-deletedcontributions-contribs' => 'مساهمات',
# Special:LinkSearch
'linksearch' => 'وصلات خارجية',
@@ -2058,6 +2186,16 @@ PICT # متنوع
'listusersfrom' => 'اعرض المستخدمين بدءا من:',
'listusers-submit' => 'اعرض',
'listusers-noresult' => 'لم يتم إيجاد مستخدم.',
+'listusers-blocked' => '({{GENDER:$1|ممنوع|ممنوعة}})',
+
+# Special:ActiveUsers
+'activeusers' => 'قائمة المستخدمين النشطين',
+'activeusers-intro' => 'هذه قائمة بالمستخدمين الذين مارسوا نوعا من النشاط خلال {{PLURAL:$1||اليوم الماضي|اليومين الماضيين|ال$1 أيام الماضية|ال$1 يوما ماضيا|ال$1 يوم ماضي}}.',
+'activeusers-count' => '{{PLURAL:$1|لا تعديلات حديثة|تعديل حديث واحد|تعديلان حديثان|$1 تعديلات حديثة|$1 تعديلا حديثا|$1 تعديل حديث}} في {{PLURAL:$3||اليوم الماضي|اليومين الماضيين|$3 أيام ماضية|$3 يوما ماضية|ال$1 يوم ماضي}}',
+'activeusers-from' => 'اعرض المستخدمين بدءا من:',
+'activeusers-hidebots' => 'أخف البوتات',
+'activeusers-hidesysops' => 'أخف الإداريين',
+'activeusers-noresult' => 'لا مستخدمون تم إيجادهم.',
# Special:Log/newusers
'newuserlogpage' => 'سجل إنشاء المستخدمين',
@@ -2068,17 +2206,23 @@ PICT # متنوع
'newuserlog-autocreate-entry' => 'الحساب تم إنشاؤه تلقائيا',
# Special:ListGroupRights
-'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
-'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
+'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
+'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
ربما تكون هناك [[{{MediaWiki:Listgrouprights-helppage}}|معلومات إضافية]] حول الصلاحيات المنفردة.',
-'listgrouprights-group' => 'المجموعة',
-'listgrouprights-rights' => 'الصلاحيات',
-'listgrouprights-helppage' => 'Help:صلاحيات المجموعات',
-'listgrouprights-members' => '(قائمة الأعضاء)',
-'listgrouprights-addgroup' => 'يمكنه إضافة {{PLURAL:$2|المجموعة|المجموعات}}: $1',
-'listgrouprights-removegroup' => 'يمكنه إزالة {{PLURAL:$2|المجموعة|المجموعات}}: $1',
-'listgrouprights-addgroup-all' => 'يمكنه إضافة كل المجموعات',
-'listgrouprights-removegroup-all' => 'يمكنه إزالة كل المجموعات',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
+* <span class="listgrouprights-revoked">صلاحية مسحوبة</span>',
+'listgrouprights-group' => 'المجموعة',
+'listgrouprights-rights' => 'الصلاحيات',
+'listgrouprights-helppage' => 'Help:صلاحيات المجموعات',
+'listgrouprights-members' => '(قائمة الأعضاء)',
+'listgrouprights-addgroup' => 'يمكنه إضافة {{PLURAL:$2|المجموعة|المجموعات}}: $1',
+'listgrouprights-removegroup' => 'يمكنه إزالة {{PLURAL:$2|المجموعة|المجموعات}}: $1',
+'listgrouprights-addgroup-all' => 'يمكنه إضافة كل المجموعات',
+'listgrouprights-removegroup-all' => 'يمكنه إزالة كل المجموعات',
+'listgrouprights-addgroup-self' => 'يمكنه إضافة {{PLURAL:$2|المجموعة|المجموعات}} إلى حسابه الخاص: $1',
+'listgrouprights-removegroup-self' => 'يمكنه إزالة {{PLURAL:$2|المجموعة|المجموعات}} من حسابه الخاص: $1',
+'listgrouprights-addgroup-self-all' => 'يمكنه إضافة كل المجموعات إلى حسابه الخاص',
+'listgrouprights-removegroup-self-all' => 'يمكنه إزالة كل المجموعات من حسابه الخاص',
# E-mail user
'mailnologin' => 'لا يوجد عنوان للإرسال',
@@ -2152,25 +2296,29 @@ PICT # متنوع
'enotif_anon_editor' => 'مستخدم مجهول $1',
'enotif_body' => 'عزيزي $WATCHINGUSERNAME،
-إن صفحة $PAGETITLE في {{SITENAME}} قد تغيرت إلى $CHANGEDORCREATED من قبل $PAGEEDITOR، لرؤية النسخة الحالية من الصفحة انظر: $PAGETITLE_URL.
+$CHANGEDORCREATED صفحة $PAGETITLE في {{SITENAME}} من قبل $PAGEEDITOR، لرؤية النسخة الحالية من الصفحة راجع: $PAGETITLE_URL.
$NEWPAGE
ملخص تعديل المحرر: $PAGESUMMARY $PAGEMINOREDIT
اتصل بالمحرر:
-بريد إلكتروني: $PAGEEDITOR_EMAIL
-صفحة المستخدم: $PAGEEDITOR_WIKI
+عبر بريد إلكتروني: $PAGEEDITOR_EMAIL
+عبر الويكي: $PAGEEDITOR_WIKI
-لن يكون هنالك أي إخطارات أخرى عن أية تغييرات تتم في المستقبل إلا إذا زرت هذه الصفحة. يمكنك أيضا أن تعيد تصفير عداد الإخطارات لجميع الصفحات التي تراقبها في قائمة مراقبتك.
+لن يكون هنالك أي إخطارات أخرى عن أية تغييرات تتم في المستقبل إلا إذا زرت هذه الصفحة.
+يمكنك أيضا أن تعيد تصفير عداد الإخطارات لجميع الصفحات التي تراقبها في قائمة مراقبتك.
-نظام إخطار {{SITENAME}}
+ نظام إخطار {{SITENAME}} الودود
--
لتغيير إعدادات قائمة مراقبتك، اذهب إلى:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+لحذف الصفحة من قائمة مراقبتك، زر
+$UNWATCHURL
-للاقتراحات والحصول على مساعدة إضافية:
+للاقتراحات وللحصول على مساعدة إضافية:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2182,10 +2330,11 @@ $NEWPAGE
'exblank' => 'الصفحة كانت فارغة',
'delete-confirm' => 'حذف "$1"',
'delete-legend' => 'حذف',
-'historywarning' => 'تحذير: الصفحة التي توشك على حذفها لديها تاريخ:',
+'historywarning' => "'''تحذير:''' للصفحة التي توشك على حذفها تاريخ فيه تقريبا {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}:",
'confirmdeletetext' => 'أنت على وشك أن تقوم بحذف صفحة بالإضافة إلى كل تاريخها.
من فضلك التأكد من عزمك على الحذف، وبأنك مدرك للعواقب، وبأنك تقوم بهذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].',
'actioncomplete' => 'انتهاء العملية',
+'actionfailed' => 'الفعل فشل',
'deletedtext' => '"<nowiki>$1</nowiki>" تم حذفها.
انظر في $2 لسجل آخر عمليات الحذف.',
'deletedarticle' => 'حذف "[[$1]]"',
@@ -2209,21 +2358,22 @@ $NEWPAGE
استمر مع الحذر.',
# Rollback
-'rollback' => 'استرجاع التعديلات',
-'rollback_short' => 'استرجع',
-'rollbacklink' => 'استرجع',
-'rollbackfailed' => 'لم ينجح الاسترجاع',
-'cantrollback' => 'لم يمكن استرجاع التعديل؛
+'rollback' => 'استرجاع التعديلات',
+'rollback_short' => 'استرجع',
+'rollbacklink' => 'استرجع',
+'rollbackfailed' => 'لم ينجح الاسترجاع',
+'cantrollback' => 'لم يمكن استرجاع التعديل؛
آخر مساهم هو المؤلف الوحيد لهذه الصفحة.',
-'alreadyrolled' => 'لم يمكن استرجاع آخر تعديل ل[[$1]] بواسطة [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])؛
+'alreadyrolled' => 'لم يمكن استرجاع آخر تعديل ل[[$1]] بواسطة [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])؛
شخص آخر عدل أو استرجع الصفحة بالفعل.
آخر تعديل كان بواسطة [[User:$3|$3]] ([[User talk:$3|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "ملخص التعديل كان: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'استرجع التعديلات بواسطة [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]]) حتى آخر نسخة بواسطة [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'استرجع تعديلات $1؛
+'editcomment' => "ملخص التعديل كان: \"''\$1''\".",
+'revertpage' => 'استرجع التعديلات بواسطة [[Special:Contributions/$2|$2]] ([[User talk:$2|نقاش]]) حتى آخر نسخة بواسطة [[User:$1|$1]]',
+'revertpage-nouser' => 'استرجع التعديلات بواسطة (اسم المستخدم تمت إزالته) حتى آخر نسخة بواسطة [[User:$1|$1]]',
+'rollback-success' => 'استرجع تعديلات $1؛
استرجع حتى آخر نسخة بواسطة $2.',
-'sessionfailure' => 'يبدو أنه هناك مشكلة في هذه جلسة الدخول الخاصة بك؛
+'sessionfailure' => 'يبدو أنه هناك مشكلة في هذه جلسة الدخول الخاصة بك؛
لذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق.
من فضلك اضغط على مفتاح "رجوع" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.',
@@ -2242,7 +2392,7 @@ $NEWPAGE
'protectexpiry' => 'تنتهي في:',
'protect_expiry_invalid' => 'وقت الانتهاء غير صحيح.',
'protect_expiry_old' => 'وقت انتهاء المنع يقع في الماضي.',
-'protect-unchain' => 'فصل سماح النقل',
+'protect-unchain-permissions' => 'ألغ قفل خيارات الحماية الأخرى',
'protect-text' => "يمكنك هنا أن تعرض وتغير مستوى الحماية للصفحة '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "لا يمكنك تغيير مستويات الحماية وأنت ممنوع.
الإعدادات الحالية للصفحة '''$1''' هي:",
@@ -2272,7 +2422,7 @@ $NEWPAGE
** حرب تحرير معرقلة للعمل المنتج
** صفحة زوارها كثيرون',
'protect-edit-reasonlist' => 'عدل أسباب الحماية',
-'protect-expiry-options' => '1 ساعة:1 hour,1 يوم:1 day,1 أسبوع:1 week,2 أسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنة:1 year,لا نهائي:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ساعة:1 hour,1 يوم:1 day,1 أسبوع:1 week,2 أسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنة:1 year,لا نهائي:infinite',
'restriction-type' => 'إذن:',
'restriction-level' => 'مستوى الضوابط:',
'minimum-size' => 'الحجم الأدنى',
@@ -2315,6 +2465,7 @@ $NEWPAGE
'undelete-nodiff' => 'لم يتم العثور على مراجعة سابقة.',
'undeletebtn' => 'استرجع',
'undeletelink' => 'اعرض/استعد',
+'undeleteviewlink' => 'اعرض',
'undeletereset' => 'أعد الضبط',
'undeleteinvert' => 'اعكس الاختيار',
'undeletecomment' => 'السبب:',
@@ -2354,19 +2505,24 @@ $1',
'contributions-title' => 'مساهمات المستخدم $1',
'mycontris' => 'مساهماتي',
'contribsub2' => 'ل$1 ($2)',
-'nocontribs' => 'لم يتم العثور على تغييرات تطابق هذه المحددات.', # Optional parameter: $1 is the user name
+'nocontribs' => 'لم يتم العثور على تغييرات تطابق هذه المحددات.',
'uctop' => '(أعلى)',
'month' => 'من شهر (وأقدم):',
'year' => 'من سنة (وأقدم):',
-'sp-contributions-newbies' => 'اعرض مساهمات الحسابات الجديدة فقط',
-'sp-contributions-newbies-sub' => 'للحسابات الجديدة',
-'sp-contributions-newbies-title' => 'مساهمات المستخدم للحسابات الجديدة',
-'sp-contributions-blocklog' => 'سجل المنع',
-'sp-contributions-logs' => 'سجلات',
-'sp-contributions-search' => 'بحث عن مساهمات',
-'sp-contributions-username' => 'عنوان أيبي أو اسم مستخدم:',
-'sp-contributions-submit' => 'ابحث',
+'sp-contributions-newbies' => 'اعرض مساهمات الحسابات الجديدة فقط',
+'sp-contributions-newbies-sub' => 'للحسابات الجديدة',
+'sp-contributions-newbies-title' => 'مساهمات المستخدم للحسابات الجديدة',
+'sp-contributions-blocklog' => 'سجل المنع',
+'sp-contributions-deleted' => 'مساهمات المستخدم المحذوفة',
+'sp-contributions-logs' => 'سجلات',
+'sp-contributions-talk' => 'نقاش',
+'sp-contributions-userrights' => 'إدارة صلاحيات المستخدم',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|هذا المستخدم ممنوع|هذه المستخدمة ممنوعة}} حاليا.
+إن آخر مدخلة في سجل المنع موجودة أدناه كمرجع:',
+'sp-contributions-search' => 'بحث عن مساهمات',
+'sp-contributions-username' => 'عنوان أيبي أو اسم مستخدم:',
+'sp-contributions-submit' => 'ابحث',
# What links here
'whatlinkshere' => 'ماذا يصل هنا',
@@ -2389,6 +2545,7 @@ $1',
# Block/unblock
'blockip' => 'منع مستخدم',
+'blockip-title' => 'منع مستخدم',
'blockip-legend' => 'منع المستخدم',
'blockiptext' => 'استخدم الاستمارة أدناه لمنع عنوان أيبي أو مستخدم مسجل من الكتابة.
يجب أن يتم هذا فقط لمنع التخريب، وبالتوافق مع
@@ -2413,7 +2570,7 @@ $1',
'ipbenableautoblock' => 'تلقائيا امنع آخر عنوان أيبي تم استعماله بواسطة هذا المستخدم، وأي عناوين أيبي أخرى يحاول التحرير من خلالها',
'ipbsubmit' => 'امنع هذا المستخدم',
'ipbother' => 'وقت آخر:',
-'ipboptions' => 'ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite',
'ipbotheroption' => 'غير ذلك',
'ipbotherreason' => 'سبب إضافي/آخر:',
'ipbhidename' => 'أخف اسم المستخدم من التعديلات والقوائم',
@@ -2442,9 +2599,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 عمليات المنع المؤقتة',
'ipblocklist-sh-addressblocks' => '$1 عمليات منع الأيبي المفردة',
'ipblocklist-submit' => 'ابحث',
+'ipblocklist-localblock' => 'المنع المحلي',
+'ipblocklist-otherblocks' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخريات}}',
'blocklistline' => '$1, $2 منع $3 ($4)',
'infiniteblock' => 'لا نهائي',
-'expiringblock' => 'ينتهي في $1',
+'expiringblock' => 'ينتهي في يوم $1 عند الساعة $2',
'anononlyblock' => 'مجهول فقط',
'noautoblockblock' => 'المنع التلقائي معطل',
'createaccountblock' => 'إنشاء الحسابات ممنوع.',
@@ -2459,7 +2618,10 @@ $1',
'autoblocker' => 'تم منعك تلقائيا لأن الأيبي الخاص بك تم استخدامه مؤخرا بواسطة "[[User:$1|$1]]".
السبب المعطى لمنع $1 هو: "$2"',
'blocklogpage' => 'سجل المنع',
-'blocklog-fulllog' => 'سجل المنع الكامل',
+'blocklog-showlog' => 'سبق منع {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.
+سجل المنع معروض بالأسفل كمرجع:',
+'blocklog-showsuppresslog' => 'سبق منع وإخفاء {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.
+سجل الإخفاء معروض بالأسفل كمرجع:',
'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
'blocklogtext' => 'هذا سجل بعمليات المنع ورفع المنع.
@@ -2480,11 +2642,13 @@ $1',
'ipb_already_blocked' => '"$1" ممنوع بالفعل',
'ipb-needreblock' => '== ممنوع بالفعل ==
$1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
+'ipb-otherblocks-header' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخريات}}',
'ipb_cant_unblock' => 'خطأ: لم يتم إيجاد الممنوع $1.
ربما تم رفع منعه بالفعل.',
'ipb_blocked_as_range' => 'خطأ: الأيبي $1 ليس ممنوعا مباشرة ولا يمكن رفع المنع عنه.
لكنه، على أية حال، ممنوع كجزء من النطاق $2، والذي يمكن رفع المنع عنه.',
'ip_range_invalid' => 'نطاق عناوين الأيبي المدخل غير صحيح.',
+'ip_range_toolarge' => 'لا يسمح بنطاقات المنع الأكبر من /$1',
'blockme' => 'منعي',
'proxyblocker' => 'مانع البروكسي',
'proxyblocker-disabled' => 'هذه الخاصية معطلة.',
@@ -2496,6 +2660,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'sorbs_create_account_reason' => 'عنوان الأيبي الخاص بك موجود كبروكسي مفتوح في DNSBL المستخدم بواسطة {{SITENAME}}.
لا يمكنك إنشاء حساب.',
'cant-block-while-blocked' => 'أنت لا يمكنك منع المستخدمين الآخرين بينما أنت ممنوع.',
+'cant-see-hidden-user' => 'المستخدم الذي تحاول منعه تم منعه مسبقا وإخفائه. بما أنك لا تمتلك صلاحية إخفاء المستخدم ، لا يمكنك مشاهدة المنع أو تعديله.',
# Developer tools
'lockdb' => 'قفل قاعدة البيانات',
@@ -2539,6 +2704,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
وفي هذه الحالات، يجب عليك نقل أو دمج محتويات الصفحة يدويا، إذا رغب في ذلك.",
'movearticle' => 'انقل الصفحة:',
+'moveuserpage-warning' => "'''تحذير: أنت على وشك نقل صفحة مستخدم. من فضلك لاحظ أن الصفحة وحدها سوف تنقل وأن المستخدم <u>لن</u> يعاد تسميته.'''",
'movenologin' => 'غير مسجل',
'movenologintext' => 'يجب أن تكون مستخدما مسجلا وأن تقوم [[Special:UserLogin|بالدخول]] لكي تنقل صفحة.',
'movenotallowed' => 'أنت لا تمتلك الصلاحية لنقل الصفحات.',
@@ -2549,7 +2715,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'move-watch' => 'راقب هذه الصفحة',
'movepagebtn' => 'انقل الصفحة',
'pagemovedsub' => 'تم النقل بنجاح',
-'movepage-moved' => '\'\'\'"$1" تم نقلها إلى "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" تم نقلها إلى "$2"\'\'\'',
'movepage-moved-redirect' => 'تم إنشاء تحويلة.',
'movepage-moved-noredirect' => 'إنشاء التحويلة تم التغاضي عنه.',
'articleexists' => 'توجد صفحة بهذا الاسم، أو أن الاسم الذي تم اختياره غير صالح.
@@ -2593,6 +2759,14 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'imageinvalidfilename' => 'اسم الملف الهدف غير صحيح',
'fix-double-redirects' => 'حدث أي تحويلات تشير إلى العنوان الأصلي',
'move-leave-redirect' => 'اترك تحويلة خلفك',
+'protectedpagemovewarning' => "'''تحذير:''' هذه الصفحة قد تم حمايتها، فقط المستخدمون الذين يمتلكون امتيازات الإدارة يمكنهم نقلها.
+آخر مدخلة سجل موفرة بالأسفل كمرجع:",
+'semiprotectedpagemovewarning' => "'''ملاحظة:''' هذه الصفحة تمت حمايتها ليتمكن المستخدمون المسجلون وحدهم من نقلها.
+آخر مدخلة سجل موفرة بالأسفل كمرجع:",
+'move-over-sharedrepo' => '== الملف موجود ==
+[[:$1]] موجود في مستودع مشترك. نقل الملف إلى هذا العنوان سوف يلغي الملف المشترك.',
+'file-exists-sharedrepo' => 'اسم الملف الذي اخترته مستخدم من قبل في مستودع مشترك.
+من فضلك اختر اسما آخرا.',
# Export
'export' => 'تصدير صفحات',
@@ -2614,15 +2788,21 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'export-pagelinks' => 'ضمن الصفحات الموصولة إلى عمق:',
# Namespace 8 related
-'allmessages' => 'رسائل النظام',
-'allmessagesname' => 'الاسم',
-'allmessagesdefault' => 'النص الافتراضي',
-'allmessagescurrent' => 'النص الحالي',
-'allmessagestext' => 'هذه قائمة برسائل النظام المتوفرة في نطاق ميدياويكي.
+'allmessages' => 'رسائل النظام',
+'allmessagesname' => 'الاسم',
+'allmessagesdefault' => 'النص الافتراضي',
+'allmessagescurrent' => 'النص الحالي',
+'allmessagestext' => 'هذه قائمة برسائل النظام المتوفرة في نطاق ميدياويكي.
من فضلك زر [http://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [http://translatewiki.net بيتاويكي] لو كنت ترغب في المساهمة في ترجمة ميدياويكي الأساسية.',
-'allmessagesnotsupportedDB' => "هذه الصفحة لا يمكن استخدامها لأن '''\$wgUseDatabaseMessages''' تم تعطيله.",
-'allmessagesfilter' => 'بحث باسم الرسالة:',
-'allmessagesmodified' => 'عرض المتغير فقط',
+'allmessagesnotsupportedDB' => "هذه الصفحة لا يمكن استخدامها لأن '''\$wgUseDatabaseMessages''' تم تعطيله.",
+'allmessages-filter-legend' => 'المرشح',
+'allmessages-filter' => 'رشح حسب حالة التخصيص:',
+'allmessages-filter-unmodified' => 'غير معدل',
+'allmessages-filter-all' => 'الكل',
+'allmessages-filter-modified' => 'المعدل',
+'allmessages-prefix' => 'رشح حسب البادئة:',
+'allmessages-language' => 'اللغة:',
+'allmessages-filter-submit' => 'اذهب',
# Thumbnails
'thumbnail-more' => 'تكبير',
@@ -2632,6 +2812,9 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'djvu_no_xml' => 'لا يمكن جلب XML لملف DjVu',
'thumbnail_invalid_params' => 'محددات التصغير غير صحيحة',
'thumbnail_dest_directory' => 'غير قادر على إنشاء المجلد الهدف',
+'thumbnail_image-type' => 'نوع الصورة غير مدعوم',
+'thumbnail_gd-library' => 'ضبط مكتبة GD غير مكتمل: دالة مفقودة $1',
+'thumbnail_image-missing' => 'الملف يبدو أنه مفقود: $1',
# Special:Import
'import' => 'استيراد صفحات',
@@ -2700,6 +2883,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
يمكنك رؤية مصدرها.',
'tooltip-ca-history' => 'النسخ السابقة لهذه الصفحة',
'tooltip-ca-protect' => 'احم هذه الصفحة',
+'tooltip-ca-unprotect' => 'أزل حماية هذه الصفحة',
'tooltip-ca-delete' => 'احذف هذه الصفحة',
'tooltip-ca-undelete' => 'استرجع التعديلات التي تمت على هذه الصفحة قبل حذفها',
'tooltip-ca-move' => 'انقل هذه الصفحة',
@@ -2710,6 +2894,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'tooltip-search-fulltext' => 'ابحث في الصفحات عن هذا النص',
'tooltip-p-logo' => 'الصفحة الرئيسية',
'tooltip-n-mainpage' => 'زر الصفحة الرئيسية',
+'tooltip-n-mainpage-description' => 'زر الصفحة الرئيسية',
'tooltip-n-portal' => 'حول المشروع، ماذا يمكن أن تفعل، أين يمكن أن تجد ما تحتاجه',
'tooltip-n-currentevents' => 'مطالعة سريعة لأهم الأحداث الجارية',
'tooltip-n-recentchanges' => 'قائمة أحدث التغييرات في الويكي.',
@@ -2756,6 +2941,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'chick.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة تشيك */',
'simple.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة سيمبل */',
'modern.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مودرن */',
+'vector.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */',
'print.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على ناتج الطباعة */',
'handheld.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على الأجهزة المحمولة بالاعتماد على الواجهة المضبوطة في $wgHandheldStyle */',
@@ -2769,6 +2955,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'chick.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة تشيك */',
'simple.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة سيمبل */',
'modern.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مودرن */',
+'vector.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata معطلة لهذا الخادوم.',
@@ -2778,10 +2965,12 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
# Attribution
'anonymous' => '{{PLURAL:$1|مستخدم مجهول|مستخدمون مجهولون}} ل{{SITENAME}}',
'siteuser' => 'مستخدم {{SITENAME}} $1',
-'lastmodifiedatby' => '{{GENDER:$4|أجرى|أجرت}} آخر تعديل لهذه الصفحة $3 في $2، $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'مستخدم {{SITENAME}} المجهول $1',
+'lastmodifiedatby' => '{{GENDER:$4|أجرى|أجرت}} آخر تعديل لهذه الصفحة $3 في $2، $1.',
'othercontribs' => 'بناء على عمل $1.',
'others' => 'أخرون',
'siteusers' => '{{PLURAL:$2||مستخدم|مستخدمي}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2||مستخدم|مستخدما|مستخدمو}} {{SITENAME}} {{PLURAL:$2||المجهول|المجهولان|المجهولون}} $1',
'creditspage' => 'إشادات الصفحة',
'nocredits' => 'لا توجد معلومات إشادة متوفرة لهذه الصفحة.',
@@ -2811,6 +3000,7 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'skinname-chick' => 'تشيك',
'skinname-simple' => 'سيمبل',
'skinname-modern' => 'مودرن',
+'skinname-vector' => 'فكتور',
# Math options
'mw_math_png' => 'دائما اعرض على هيئة PNG',
@@ -2820,11 +3010,24 @@ $1 ممنوع بالفعل. هل تريد تغيير الإعدادات؟',
'mw_math_modern' => 'مستحسن للمتصفحات الحديثة',
'mw_math_mathml' => 'اعرض بصيغة MathML إن أمكن (تجريبي)',
+# Math errors
+'math_failure' => 'خطأ رياضيات',
+'math_unknown_error' => 'خطأ غير معروف',
+'math_unknown_function' => 'وظيفة غير معروفة',
+'math_lexing_error' => 'خطأ في الصيغة',
+'math_syntax_error' => 'خطأ في الصياغة',
+'math_image_error' => 'فشل التحويل لPNG؛
+تحقق من تثبيت كل من Latex و dvips و gs و convert.',
+'math_bad_tmpdir' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الرياضيات المؤقت',
+'math_bad_output' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الخرج للرياضيات',
+'math_notexvc' => 'مفقود texvc executable؛
+من فضلك انظر math/README للضبط.',
+
# Patrolling
'markaspatrolleddiff' => 'علم كمراجعة',
'markaspatrolledtext' => 'علم على هذه الصفحة كمراجعة',
'markedaspatrolled' => 'تم التعليم كمراجعة',
-'markedaspatrolledtext' => 'المراجعة المختارة تم التعليم عليها كمراجعة.',
+'markedaspatrolledtext' => 'المراجعة المختارة من [[:$1]] تم التعليم عليها كمراجعة.',
'rcpatroldisabled' => 'مراجعة أحدث التغييرات معطلة',
'rcpatroldisabledtext' => 'خاصية مراجعة أحدث التغييرات معطلة حاليا',
'markedaspatrollederror' => 'لا يمكن التعليم بالمراجعة',
@@ -2854,12 +3057,9 @@ $1',
'previousdiff' => '→ التعديل السابق',
'nextdiff' => 'التعديل اللاحق ←',
-# Visual comparison
-'visual-comparison' => 'مقارنة بصرية',
-
# Media information
'mediawarning' => "'''تحذير''': قد يحتوي نوع هذا الملف على كود خبيث، يمكن عند تشغيله السيطرة على نظامك.",
-'imagemaxsize' => 'حدد الصور في صفحات وصف الملفات إلى:',
+'imagemaxsize' => "حد حجم الصور:<br />''(لصفحات وصف الملفات)''",
'thumbsize' => 'حجم العرض المصغر:',
'widthheightpage' => '$1×$2، $3 {{PLURAL:$3|صفحة|صفحة}}',
'file-info' => '(حجم الملف: $1، نوع MIME: $2)',
@@ -2868,6 +3068,8 @@ $1',
'svg-long-desc' => '(ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3)',
'show-big-image' => 'دقة كاملة',
'show-big-image-thumb' => '<small>حجم هذا العرض: $1 × $2 بكسل</small>',
+'file-info-gif-looped' => 'ملفوف',
+'file-info-gif-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارا|$1 إطار}}',
# Special:NewFiles
'newimages' => 'معرض الملفات الجديدة',
@@ -2908,7 +3110,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'العرض',
@@ -3041,14 +3243,14 @@ $1',
'exif-unknowndate' => 'تاريخ غير معروف',
-'exif-orientation-1' => 'عادي', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'دار عرضيا', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'دار 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'دار أفقيا', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'دار 90° CCW و انزلق رأسيا', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'دار 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'دار 90° CW و انزلق رأسيا', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'دار 90° عكس عقارب الساعة', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'عادي',
+'exif-orientation-2' => 'دار عرضيا',
+'exif-orientation-3' => 'دار 180°',
+'exif-orientation-4' => 'دار أفقيا',
+'exif-orientation-5' => 'دار 90° CCW و انزلق رأسيا',
+'exif-orientation-6' => 'دار 90° CW',
+'exif-orientation-7' => 'دار 90° CW و انزلق رأسيا',
+'exif-orientation-8' => 'دار 90° عكس عقارب الساعة',
'exif-planarconfiguration-1' => 'صيغة تشنكي',
'exif-planarconfiguration-2' => 'صيغة مستوية',
@@ -3188,7 +3390,7 @@ $1',
'exif-gpsmeasuremode-2' => 'عملية قياس ثنائية الأبعاد',
'exif-gpsmeasuremode-3' => 'عملية قياس ثلاثية الأبعاد',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'كيلومتر في الساعة',
'exif-gpsspeed-m' => 'ميل في الساعة',
'exif-gpsspeed-n' => 'عقد',
@@ -3207,6 +3409,7 @@ $1',
'watchlistall2' => 'الكل',
'namespacesall' => 'الكل',
'monthsall' => 'الكل',
+'limitall' => 'الكل',
# E-mail address confirmation
'confirmemail' => 'تأكيد عنوان البريد الإلكتروني',
@@ -3412,7 +3615,7 @@ $1',
'duplicate-defaultsort' => '\'\'\'تحذير:\'\'\' مفتاح الترتيب الافتراضي "$2" يتجاوز مفتاح الترتيب الافتراضي السابق "$1".',
# Special:Version
-'version' => 'نسخة', # Not used as normal message but as header for the special page itself
+'version' => 'نسخة',
'version-extensions' => 'الامتدادات المثبتة',
'version-specialpages' => 'صفحات خاصة',
'version-parserhooks' => 'خطاطيف المحلل',
@@ -3426,7 +3629,8 @@ $1',
'version-skin-extension-functions' => 'دوال امتداد الواجهة',
'version-hook-name' => 'اسم الخطاف',
'version-hook-subscribedby' => 'يستخدم بواسطة',
-'version-version' => 'نسخة',
+'version-version' => '(نسخة $1)',
+'version-svn-revision' => '(&رلم;r$2)',
'version-license' => 'الرخصة',
'version-software' => 'البرنامج المثبت',
'version-software-product' => 'المنتج',
@@ -3507,4 +3711,15 @@ $1',
'dberr-outofdate' => 'لاحظ أن فهارسهم لمحتوانا ربما تكون غير محدثة.',
'dberr-cachederror' => 'التالي نسخة مخزنة من الصفحة المطلوبة، وربما لا تكون محدثة.',
+# HTML forms
+'htmlform-invalid-input' => 'توجد مشكلات ضمن بعض من مدخلاتك',
+'htmlform-select-badoption' => 'القيمة التي تم تحديدها غير صالحة كخيار.',
+'htmlform-int-invalid' => 'القيمة التي حددتها ليست عددا صحيحا.',
+'htmlform-float-invalid' => 'القيمة التي حددتها ليست عددا.',
+'htmlform-int-toolow' => 'القيمة التي حددتها أقل من الحد الأدنى وهو $1',
+'htmlform-int-toohigh' => 'القيمة التي حددتها أكبر من الحد الأقصى وهو $1',
+'htmlform-submit' => 'أرسل',
+'htmlform-reset' => 'الرجوع عن التغييرات',
+'htmlform-selectorother-other' => 'أخرى',
+
);
diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php
index 76fd29aa..6ea7cc46 100644
--- a/languages/messages/MessagesArc.php
+++ b/languages/messages/MessagesArc.php
@@ -13,6 +13,49 @@
* @author The Thadman
*/
+$specialPageAliases = array(
+ 'CreateAccount' => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ),
+ 'Preferences' => array( 'ܓܒܝܬ̈ܐ' ),
+ 'Watchlist' => array( 'ܪ̈ܗܝܬܐ' ),
+ 'Recentchanges' => array( 'ܫܘܚܠܦ̈ܐ_ܚܕ̈ܬܐ' ),
+ 'Upload' => array( 'ܐܣܩ' ),
+ 'Shortpages' => array( 'ܦܐܬܬ̈ܐ_ܟܪ̈ܝܬܐ' ),
+ 'Longpages' => array( 'ܦܐܬܬ̈ܐ_ܐܪ̈ܝܟܬܐ' ),
+ 'Newpages' => array( 'ܦܐܬܬ̈ܐ_ܚܕ̈ܬܬܐ' ),
+ 'Protectedpages' => array( 'ܦܐܬܬ̈ܐ_ܢܛܝܪ̈ܬܐ' ),
+ 'Allpages' => array( 'ܟܠ_ܦܐܬܬ̈ܐ' ),
+ 'Specialpages' => array( 'ܦܐܬܬ̈ܐ_ܕ̈ܝܠܢܝܬܐ' ),
+ 'Contributions' => array( 'ܫܘܬܦܘܝܬ̈ܐ' ),
+ 'Whatlinkshere' => array( 'ܡܐ_ܐܣܪ_ܠܟܐ' ),
+ 'Movepage' => array( 'ܫܢܝ_ܦܐܬܐ' ),
+ 'Categories' => array( 'ܣܕܪ̈ܐ' ),
+ 'Allmessages' => array( 'ܟܠ_ܐܓܪ̈ܬܐ' ),
+ 'Log' => array( 'ܣܓܠ̈ܐ' ),
+ 'Mycontributions' => array( 'ܫܘܬܦܘܝܬ̈ܝ' ),
+ 'Search' => array( 'ܒܨܝܐ' ),
+ 'Filepath' => array( 'ܫܒܝܠܐ_ܕܦܐܬܐ' ),
+ 'Blankpage' => array( 'ܦܐܬܐ_ܣܦܝܩܬܐ' ),
+ 'DeletedContributions' => array( 'ܫܘܬܦܘܝܬ̈ܐ_ܫܝܦܬ̈ܐ' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#ܨܘܝܒܐ', '#REDIRECT' ),
+ 'numberofpages' => array( '1', 'ܡܢܝܢܐ_ܕܦܐܬܬ̈ܐ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ܡܢܝܢܐ_ܕܡܠܘܐ̈ܐ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ܡܢܝܢܐ_ܕܠܦܦ̈ܐ', 'NUMBEROFFILES' ),
+ 'pagename' => array( '1', 'ܫܡܐ_ܕܦܐܬܐ', 'PAGENAME' ),
+ 'msg' => array( '0', 'ܐܓܪܬܐ:', 'MSG:' ),
+ 'img_thumbnail' => array( '1', 'ܙܥܘܪܬܐ', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'ܙܥܘܪܬܐ=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'ܝܡܝܢܐ', 'right' ),
+ 'img_left' => array( '1', 'ܣܡܠܐ', 'left' ),
+ 'img_none' => array( '1', 'ܠܐ ܡܕܡ', 'none' ),
+ 'img_center' => array( '1', 'ܡܨܥܐ', 'center', 'centre' ),
+ 'grammar' => array( '0', 'ܬܘܪܨ_ܡܡܠܠܐ', 'GRAMMAR:' ),
+ 'language' => array( '0', '#ܠܫܢܐ:', '#LANGUAGE:' ),
+ 'special' => array( '0', 'ܕܝܠܢܝܐ', 'special' ),
+);
+
$rtl = true;
$defaultUserOptionOverrides = array(
@@ -20,6 +63,26 @@ $defaultUserOptionOverrides = array(
'quickbar' => 2,
);
+$namespaceNames = array(
+ NS_MEDIA => 'ܡܝܕܝܐ',
+ NS_SPECIAL => 'ܕܝܠܢܝܐ',
+ NS_MAIN => '',
+ NS_TALK => 'ܡܡܠܠܐ',
+ NS_USER => 'ܡܬܚܫܚܢܐ',
+ NS_USER_TALK => 'ܡܡܠܠܐ_ܕܡܬܚܫܚܢܐ',
+ NS_PROJECT_TALK => 'ܡܡܠܠܐ_ܕ$1',
+ NS_FILE => 'ܠܦܦܐ',
+ NS_FILE_TALK => 'ܡܡܠܠܐ_ܕܠܦܦܐ',
+ NS_MEDIAWIKI => 'ܡܝܕܝܐܘܝܩܝ',
+ NS_MEDIAWIKI_TALK => 'ܡܡܠܠܐ_ܕܡܝܕܝܐܘܝܩܝ',
+ NS_TEMPLATE => 'ܩܠܒܐ',
+ NS_TEMPLATE_TALK => 'ܡܡܠܠܐ_ܕܩܠܒܐ',
+ NS_HELP => 'ܥܘܕܪܢܐ',
+ NS_HELP_TALK => 'ܡܡܠܠܐ_ܕܥܘܕܪܢܐ',
+ NS_CATEGORY => 'ܣܕܪܐ',
+ NS_CATEGORY_TALK => 'ܡܡܠܠܐ_ܕܣܕܪܐ',
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'ܪܫܘܡ ܣܪܛܐ ܬܚܝܬ ܐܣܘܪܐ:',
@@ -99,28 +162,57 @@ $messages = array(
'subcategories' => 'ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ',
'category-empty' => "''ܗܢܐ ܣܕܪܐ ܗܫܐ ܠܝܬ ܒܗ ܦܐܬܬ̈ܐ ܐܘ ܡܝܕܝܐ.''",
'hidden-categories' => '{{PLURAL:$1|ܣܕܪܐ ܛܘܫܝܐ|ܣܕܪ̈ܐ ܛܘܫܝܐ}}',
-'hidden-category-category' => 'ܣܕܪ̈ܐ ܛܘܫܝ̈ܐ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'ܣܕܪ̈ܐ ܛܘܫܝ̈ܐ',
'category-subcat-count-limited' => 'ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ {{PLURAL:$1|ܣܕܪܐ ܦܪܥܝܐ ܗܢܐ|$1 ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ ܗܠܝܢ}}.',
'category-article-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܦܐܬܐ ܗܕܐ ܒܠܚܘܕ.|ܐܝܬ {{PLURAL:$1|ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܣܕܪܐ ܗܢܐ، ܡܢ $2 ܟܠܢܐܝܬ.}}',
'category-article-count-limited' => '{{PLURAL:$1|ܦܐܬܐ ܗܕܐ|$1 ܦܐܬܬ̈ܐ ܗܠܝܢ}} ܒܣܕܪܐ ܗܢܐ.',
'listingcontinuesabbrev' => '(ܫܘܠܡܐ)',
-'about' => 'ܡܢܘ',
-'article' => 'ܡܓܠܬܐ',
-'newwindow' => '(ܦܬܚ ܒܟܘܬܐ ܚܕܬܐ)',
-'cancel' => 'ܒܛܘܠ',
+'about' => 'ܡܢܘ',
+'article' => 'ܡܓܠܬܐ',
+'newwindow' => '(ܦܬܚ ܒܟܘܬܐ ܚܕܬܐ)',
+'cancel' => 'ܒܛܘܠ',
+'moredotdotdot' => '...ܝܬܝܪ',
+'mypage' => 'ܦܐܬܝ',
+'mytalk' => 'ܡܡܠܠܝ',
+'anontalk' => 'ܡܡܠܠܐ ܕܗܢܐ ܐܝ ܦܝ (IP)',
+'navigation' => 'ܐܠܦܪܘܬܐ',
+'and' => '&#32;ܘ',
+
+# Cologne Blue skin
'qbfind' => 'ܐܫܟܚ',
'qbbrowse' => 'ܡܦܐܬ',
'qbedit' => 'ܫܚܠܦ',
'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
'qbmyoptions' => 'ܓܒܝܬ̈ܝ',
'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
-'moredotdotdot' => '...ܝܬܝܪ',
-'mypage' => 'ܦܐܬܝ',
-'mytalk' => 'ܡܡܠܠܝ',
-'anontalk' => 'ܡܡܠܠܐ ܕܗܢܐ ܐܝ ܦܝ (IP)',
-'navigation' => 'ܐܠܦܪܘܬܐ',
-'and' => '&#32;ܘ',
+'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
+'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
+
+# Vector skin
+'vector-action-addsection' => 'ܐܘܣܦ ܡܠܘܐܐ',
+'vector-action-delete' => 'ܫܘܦ',
+'vector-action-move' => 'ܫܢܝ',
+'vector-action-protect' => 'ܢܛܘܪ',
+'vector-action-undelete' => 'ܠܐ ܫܘܦ',
+'vector-action-unprotect' => 'ܠܐ ܢܛܘܪ',
+'vector-namespace-category' => 'ܣܕܪܐ',
+'vector-namespace-help' => 'ܦܐܬܐ ܕܥܘܕܪܢܐ',
+'vector-namespace-image' => 'ܠܦܦܐ',
+'vector-namespace-main' => 'ܦܐܬܐ',
+'vector-namespace-media' => 'ܦܐܬܐ ܕܡܝܕܝܐ',
+'vector-namespace-mediawiki' => 'ܐܓܪܬܐ',
+'vector-namespace-project' => 'ܦܐܬܐ ܕܬܪܡܝܬܐ',
+'vector-namespace-special' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ',
+'vector-namespace-talk' => 'ܕܘܪܫܐ',
+'vector-namespace-template' => 'ܩܠܒܐ',
+'vector-namespace-user' => 'ܦܐܬܐ ܕܡܦܠܚܢܐ',
+'vector-view-create' => 'ܒܪܝ',
+'vector-view-edit' => 'ܫܚܠܦ',
+'vector-view-history' => 'ܚܙܝ ܬܫܥܝܬܐ',
+'vector-view-view' => 'ܩܪܝ',
+'vector-view-viewsource' => 'ܚܙܝ ܥܩܪܐ',
+'namespaces' => 'ܚܩܠܬ̈ܐ',
'errorpagetitle' => 'ܦܘܕܐ',
'returnto' => 'ܕܥܘܪ ܠ$1.',
@@ -168,7 +260,7 @@ $messages = array(
'otherlanguages' => 'ܠܫܢ̈ܐ ܐܚܪ̈ܢܐ',
'redirectedfrom' => '(ܨܝܒ ܡܢ $1)',
'redirectpagesub' => 'ܦܐܬܐ ܕܨܘܝܒܐ',
-'lastmodifiedat' => 'ܫܘܚܠܦܐ ܐܚܪܝܐ ܕܦܐܬܐ ܗܕܐ ܗܘܐ ܒܣܝܩܘܡ $1, $2.', # $1 date, $2 time
+'lastmodifiedat' => 'ܫܘܚܠܦܐ ܐܚܪܝܐ ܕܦܐܬܐ ܗܕܐ ܗܘܐ ܒܣܝܩܘܡ $1, $2.',
'protectedpage' => 'ܦܐܬܐ ܢܛܝܪܬܐ',
'jumpto' => 'ܫܘܪ ܠ:',
'jumptonavigation' => 'ܐܠܦܪܘܬܐ',
@@ -178,7 +270,6 @@ $messages = array(
'aboutsite' => 'ܡܢܘ {{SITENAME}}',
'aboutpage' => 'Project:ܡܢܘ',
'copyright' => 'ܚܒܝܫܬ̈ܐ ܐܝܬ ܬܚܝܬ $1.',
-'copyrightpagename' => '{{SITENAME}} ܙܕܩ̈ܐ ܕܚܬܡܐ',
'copyrightpage' => '{{ns:project}}:ܙܕ̈ܩܐ ܕܚܬܡܐ',
'currentevents' => 'ܓܕ̈ܫܐ ܗܫܝ̈ܐ',
'currentevents-url' => 'Project:ܓܕ̈ܫܐ ܗܫܝ̈ܐ',
@@ -186,8 +277,6 @@ $messages = array(
'disclaimerpage' => 'Project:ܠܐ ܡܫܬܐܠܢܘܬܐ ܓܘܢܝܬܐ',
'edithelp' => 'ܥܘܕܪܢܐ ܠܫܚܠܦܬܐ',
'edithelppage' => 'Help:ܫܚܠܦܬܐ',
-'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
-'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
'helppage' => 'Help:ܚܒܝܫܬ̈ܐ',
'mainpage' => 'ܦܐܬܐ ܪܫܝܬܐ',
'mainpage-description' => 'ܦܐܬܐ ܪܫܝܬܐ',
@@ -268,20 +357,6 @@ Note that some pages may continue to be displayed as if you were still logged in
'badretype' => 'ܡܠܬܐ ܕܥܠܠܐ ܟܬܒܬ ܐܢܬ ܠܐ ܐܘܝܢܬܐ.',
'userexists' => 'ܫܡܐ ܕܡܦܠܚܢܐ ܫܩܝܠܐ.
ܓܒܝ ܫܡܐ ܐܚܪܢܐ.',
-'youremail' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
-'username' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
-'uid' => 'ܗܝܝܘܬܐ ܕܡܦܠܚܢܐ:',
-'prefs-memberingroups' => 'ܗܕܡܐ ܕ{{PLURAL:$1|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}:',
-'yourrealname' => 'ܫܡܐ ܫܪܝܪܐ:',
-'yourlanguage' => 'ܠܫܢܐ:',
-'yournick' => 'ܪܡܝ ܐܝܕܐ:',
-'badsiglength' => 'ܪܡܝ ܐܝܕܟ ܣܓܝ ܐܪܝܟܬܐ.
-ܐܠܨܐ ܠܟ ܠܐ ܝܬܝܪ ܡܢ $1 {{PLURAL:$1|ܐܬܘܬܐ|ܐܬܘܬ̈ܐ}} ܐܪܝܟܬܐ ܗܘܬ.',
-'yourgender' => 'ܓܢܣܐ:',
-'gender-unknown' => 'ܠܐ ܦܣܝܩܐ',
-'gender-male' => 'ܕܟܪܐ',
-'gender-female' => 'ܢܩܒܐ',
-'email' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
'loginerror' => 'ܦܘܕܐ ܒܥܠܠܐ',
'loginsuccesstitle' => 'ܥܠܠܐ ܓܡܪ',
'loginsuccess' => "'''ܗܫܐ ܥܠܝܠܐ ܐܢܬ ܒ{{SITENAME}} ܒܫܡ \"\$1\".'''",
@@ -336,13 +411,13 @@ Note that some pages may continue to be displayed as if you were still logged in
'editingcomment' => 'ܫܚܠܦܬܐ ܕ $1 (ܡܢܬܐ ܚܕܬܐ)',
'yourtext' => 'ܟܬܒܬܐ ܕܝܠܟ',
'yourdiff' => 'ܦܪ̈ܝܫܘܝܬܐ',
-'templatesused' => 'ܩܠܒ̈ܐ ܒܦܐܬܐ ܗܕܐ',
+'templatesused' => '{{PLURAL:$1|ܩܠܒܐ|ܩܠܒ̈ܐ}} ܒܦܐܬܐ ܗܕܐ:',
'template-protected' => '(ܢܛܝܪܐ)',
'template-semiprotected' => '(ܕܡܘܬ ܢܛܝܪܐ)',
'nocreate-loggedin' => 'ܠܝܬ ܠܟ ܦܣܣܐ ܕܒܪܝܐ ܕܦܐܬܐ ܗܕܐ.',
'permissionserrors' => 'ܦܘܕ̈ܐ ܕܦܣܣ̈ܐ',
'permissionserrorstext-withaction' => 'ܠܝܬ ܠܟ ܦܣܣܐ ܠ$2, ܒ{{PLURAL:$1|ܥܠܬܐ|ܥܠܬ̈ܐ}} ܕ:',
-'deletelog-fulllog' => 'ܚܙܝ ܣܓܠܐ ܓܡܝܪܐ',
+'log-fulllog' => 'ܚܙܝ ܣܓܠܐ ܓܡܝܪܐ',
'edit-already-exists' => 'ܒܪܝܐ ܕܦܐܬܐ ܚܕܬܐ ܠܐ ܡܬܡܨܝܢܐ.
ܦܐܬܐ ܐܝܬ ܡܢ ܟܕܘ.',
@@ -356,6 +431,9 @@ Note that some pages may continue to be displayed as if you were still logged in
'viewpagelogs' => 'ܚܙܝ ܣܓܠ̈ܐ ܕܦܐܬܐ ܗܕܐ',
'nohistory' => 'ܠܝܬ ܬܫܥܝܬܐ ܕܫܘܚܠܦ̈ܐ ܠܦܐܬܐ ܗܕܐ',
'currentrev' => 'ܬܢܝܬܐ ܗܫܝܬܐ',
+'currentrev-asof' => 'ܬܢܝܬܐ ܗܫܝܬܐ ܒܣܝܩܘܡ $1',
+'revisionasof' => 'ܬܢܝܬܐ ܒܣܝܩܘܡ $1',
+'revision-info' => 'ܬܢܝܬܐ ܒܣܝܩܘܡ $1 ܒܝܕ $2',
'previousrevision' => '← ܬܢܝܬܐ ܥܬܝܩܬܐ',
'nextrevision' => 'ܬܢܝܬܐ ܚܕܬܐ →',
'currentrevisionlink' => 'ܬܢܝܬܐ ܗܫܝܬܐ',
@@ -368,28 +446,34 @@ Note that some pages may continue to be displayed as if you were still logged in
ܩܠܝܕܐ: '''({{int:cur}})''' = ܦܪܝܫܘܬܐ ܥܡ ܬܢܝܬܐ ܗܫܝܬܐ,
'''({{int:last}})''' = ܦܪܝܫܘܬܐ ܥܡ ܬܢܝܬܐ ܩܕܝܡܬܐ, '''{{int:minoreditletter}}''' = ܫܘܚܠܦܐ ܙܥܘܪܐ.",
'history-fieldset-title' => 'ܡܦܐܬ ܬܫܥܝܬܐ',
+'history-show-deleted' => 'ܫܝܦܬ̈ܐ ܒܠܚܘܕ',
'histfirst' => 'ܩܕܝܡ ܟܠ',
'histlast' => 'ܐܚܪܝ ܟܠ',
'historyempty' => '(ܣܦܝܩܐ)',
# Revision feed
-'history-feed-title' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ',
-'history-feed-description' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ ܕܗܕܐ ܦܐܬܐ ܥܠ ܘܝܩܝ',
+'history-feed-title' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ',
+'history-feed-description' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ ܕܗܕܐ ܦܐܬܐ ܥܠ ܘܝܩܝ',
+'history-feed-item-nocomment' => '$1 ܒ $2',
# Revision deletion
-'rev-delundel' => 'ܚܘܝ/ܛܫܝ',
-'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
-'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
-'revdelete-hide-text' => 'ܛܫܝ ܟܬܒܬܐ ܕܬܢܝܬܐ',
-'revdelete-hide-user' => 'ܛܫܝ ܫܡܐ/ܐܝ ܦܝ (IP) ܕܡܦܠܚܢܐ',
-'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
-'revdel-restore' => 'ܫܚܠܦ ܚܙܝܬܐ',
-'pagehist' => 'ܬܫܥܝܬܐ ܕܦܐܬܐ',
-'deletedhist' => 'ܬܫܥܝܬܐ ܫܝܦܬܐ',
-'revdelete-summary' => 'ܫܚܠܦ ܦܣܝܩܬ̈ܐ',
-'revdelete-uname' => 'ܫܡܐ ܕܡܦܠܚܢܐ',
-'revdelete-log-message' => '$1 ܠ $2 {{PLURAL:$2|ܬܢܝܬܐ|ܬܢܝܬ̈ܐ}}',
-'logdelete-log-message' => '$1 ܠ $2 {{PLURAL:$2|ܓܕܫܐ|ܓܕ̈ܫܐ}}',
+'rev-delundel' => 'ܚܘܝ/ܛܫܝ',
+'rev-showdeleted' => 'ܚܘܝ',
+'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
+'revdelete-show-file-submit' => 'ܐܝܢ',
+'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
+'revdelete-hide-text' => 'ܛܫܝ ܟܬܒܬܐ ܕܬܢܝܬܐ',
+'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
+'revdelete-hide-user' => 'ܛܫܝ ܫܡܐ/ܐܝ ܦܝ (IP) ܕܡܦܠܚܢܐ',
+'revdel-restore' => 'ܫܚܠܦ ܚܙܝܬܐ',
+'pagehist' => 'ܬܫܥܝܬܐ ܕܦܐܬܐ',
+'deletedhist' => 'ܬܫܥܝܬܐ ܫܝܦܬܐ',
+'revdelete-summary' => 'ܫܚܠܦ ܦܣܝܩܬ̈ܐ',
+'revdelete-uname' => 'ܫܡܐ ܕܡܦܠܚܢܐ',
+'revdelete-log-message' => '$1 ܠ $2 {{PLURAL:$2|ܬܢܝܬܐ|ܬܢܝܬ̈ܐ}}',
+'logdelete-log-message' => '$1 ܠ $2 {{PLURAL:$2|ܓܕܫܐ|ܓܕ̈ܫܐ}}',
+'revdelete-reasonotherlist' => 'ܥܠܬܐ ܐܚܪܬܐ',
+'revdelete-edit-reasonlist' => 'ܫܚܠܦ ܥܠܠܬ̈ܐ ܕܫܝܦܐ',
# History merging
'mergehistory' => 'ܚܒܘܛ ܬܫܥܝܬ̈ܐ ܕܦܐܬܐ',
@@ -407,29 +491,12 @@ Note that some pages may continue to be displayed as if you were still logged in
'revertmerge' => 'ܒܛܘܠ ܚܒܛܐ',
# Diffs
-'history-title' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ ܕ "$1"',
-'difference' => '(ܦܪܝܫܘܬܐ ܒܝܬ ܬܢܝܬ̈ܐ)',
-'lineno' => 'ܣܪܛܐ $1:',
-'compareselectedversions' => 'ܦܚܘܡ ܒܝܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
-'visualcomparison' => 'ܦܘܚܡܐ ܚܝܪܝܐ',
-'wikicodecomparison' => 'ܦܘܚܡܐ ܕܟܬܒܬܐ ܕܘܝܩܝ',
-'editundo' => 'ܠܐ ܥܒܘܕ',
-'diff-movedto' => 'ܫܢܐ ܠ $1',
-'diff-added' => '$1 ܐܘܣܦܬ',
-'diff-src' => 'ܥܩܪܐ',
-'diff-with' => '&#32;ܥܡ $1 $2',
-'diff-with-final' => '&#32;ܘ $1 $2',
-'diff-width' => 'ܦܬܘܐ',
-'diff-height' => 'ܐܘܪܟܐ',
-'diff-p' => "'''ܦܬܓܡܐ'''",
-'diff-table' => "'''ܠܘܚܝܬܐ'''",
-'diff-img' => "'''ܨܘܪܬܐ'''",
-'diff-a' => "'''ܐܣܘܪܐ'''",
-'diff-i' => "'''ܦܠܝܡܬܐ'''",
-'diff-b' => "'''ܥܘܒܝܬܐ'''",
-'diff-strong' => "'''ܚܝܠܬܢܐ'''",
-'diff-big' => "'''ܪܒܐ'''",
-'diff-del' => "'''ܡܫܝܐ'''",
+'history-title' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ ܕ "$1"',
+'difference' => '(ܦܪܝܫܘܬܐ ܒܝܬ ܬܢܝܬ̈ܐ)',
+'lineno' => 'ܣܪܛܐ $1:',
+'compareselectedversions' => 'ܦܚܘܡ ܒܝܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
+'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
+'editundo' => 'ܠܐ ܥܒܘܕ',
# Search results
'searchresults' => 'ܦܠܛ̈ܐ ܕܒܘܨܝܐ',
@@ -437,19 +504,21 @@ Note that some pages may continue to be displayed as if you were still logged in
'searchresulttext' => 'ܠܝܬܝܪ ܝܕ̈ܥܬܐ ܥܠ ܒܨܝܐ ܒ {{SITENAME}}, ܚܙܝ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'ܒܨܐ ܐܢܬ ܥܠ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܫܪܝܢ ܒ"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܐܣܪܝܢ ܥܡ "$1"]])',
'searchsubtitleinvalid' => "ܒܨܐ ܐܢܬ ܥܠ '''$1'''",
-'noexactmatch' => "'''ܠܝܬ ܦܐܬܐ ܒܫܡܐ ܕ \"\$1\".'''
-ܡܨܐ ܐܢܬ [[:\$1|ܒܪܐ ܗܕܐ ܦܐܬܐ]].",
-'noexactmatch-nocreate' => "'''ܠܝܬ ܦܐܬܐ ܒܫܡܐ ܕ \"\$1\".'''",
'titlematches' => 'ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
'notitlematches' => 'ܠܝܬ ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
'textmatches' => 'ܟܬܒܬܐ ܐܘܝܢܬܐ',
'notextmatches' => 'ܠܝܬ ܟܬܒܬܐ ܐܘܝܢܬܐ',
+'prevn' => '{{PLURAL:$1|$1}} ܩܕܝܡܐ',
+'nextn' => '{{PLURAL:$1|$1}} ܐܚܪܢܐ',
'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
-'viewprevnext' => 'ܚܘܝ ($1) ($2) ($3)',
+'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܘܨܝܐ',
'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
'searchhelp-url' => 'Help:ܚܒܝܫܬ̈ܐ',
+'searchprofile-articles' => 'ܦܐܬܬ̈ܐ ܕܚܒܝܫܬ̈ܐ',
+'searchprofile-project' => 'ܦܐܬܬ̈ܐ ܕܬܪ̈ܡܝܬܐ ܘܕܥܘܕܪܢܐ',
+'searchprofile-images' => 'ܡܝܕ̈ܝܐ ܣܓܝܐ̈ܐ (Multimedia)',
'searchprofile-everything' => 'ܟܠ ܡܕܡ',
'searchprofile-advanced' => 'ܡܬܩܕܡܢܐ',
'searchprofile-articles-tooltip' => 'Search in $1',
@@ -462,43 +531,84 @@ Note that some pages may continue to be displayed as if you were still logged in
'search-interwiki-more' => '(ܝܬܝܪ)',
'search-mwsuggest-enabled' => 'ܥܡ ܡܚܫܚܬ̈ܐ',
'search-mwsuggest-disabled' => 'ܠܐ ܡܚܫܚܬ̈ܐ',
+'searcheverything-enable' => 'ܒܨܝ ܒܟܠ ܚܩܠܬ̈ܐ',
'searchall' => 'ܟܠ',
'showingresults' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$1|'''1''' ܦܠܛܐ|'''$1''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝ ܠܗܢܐ ܒܨܝܐ.',
'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:',
'powersearch-redir' => 'ܚܘܝ ܨܘܝܒ̈ܐ',
'powersearch-field' => 'ܒܨܝ ܥܠ',
+'powersearch-togglelabel' => 'ܓܒܝ:',
+'powersearch-toggleall' => 'ܟܠ',
+'powersearch-togglenone' => 'ܠܐ ܡܕܡ',
'search-external' => 'ܒܘܨܝܐ ܒܪܝܐ',
+# Quickbar
+'qbsettings-none' => 'ܠܐ ܡܕܡ',
+
# Preferences page
-'preferences' => 'ܓܒܝܬ̈ܐ',
-'mypreferences' => 'ܓܒܝܬ̈ܝ',
-'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
-'prefsnologin' => 'ܠܐ ܥܠܝܠܐ',
-'qbsettings-none' => 'ܠܐ ܡܕܡ',
-'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
-'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
-'math' => 'ܡܬܡܐܛܝܩܘܬܐ',
-'datedefault' => 'ܠܐ ܓܒܝܬܐ',
-'math_unknown_error' => 'ܦܘܕܐ ܠܐ ܝܕܝܥܐ',
-'prefs-personal' => 'ܠܦܦܐ ܕܡܦܠܚܢܐ',
-'prefs-rc' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
-'prefs-watchlist' => 'ܪ̈ܗܝܬܐ',
-'prefs-watchlist-days' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܪ̈ܗܝܬܐ:',
-'prefs-resetpass' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
-'saveprefs' => 'ܠܒܘܟ',
-'resetprefs' => 'ܡܫܝ ܫܘܚܠܦ̈ܐ ܠܐ ܠܒܝܟ̈ܐ',
-'columns' => 'ܥܡܘܕ̈ܐ:',
-'searchresultshead' => 'ܒܨܝ',
-'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
-'savedprefs' => 'ܓܒܝܬ̈ܐ ܕܝܠܟ ܐܬܠܒܟܬ.',
-'prefs-searchoptions' => 'ܓܒܝܬ̈ܐ ܕܒܘܨܝܐ',
-'prefs-namespaces' => 'ܚܩܠܬ̈ܐ',
+'preferences' => 'ܓܒܝܬ̈ܐ',
+'mypreferences' => 'ܓܒܝܬ̈ܝ',
+'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
+'prefsnologin' => 'ܠܐ ܥܠܝܠܐ',
+'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
+'prefs-skin' => 'ܓܠܕܐ',
+'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
+'prefs-math' => 'ܡܬܡܐܛܝܩܘܬܐ',
+'datedefault' => 'ܠܐ ܓܒܝܬܐ',
+'prefs-datetime' => 'ܣܝܩܘܡܐ ܘܙܒܢܐ',
+'prefs-personal' => 'ܠܦܦܐ ܕܡܦܠܚܢܐ',
+'prefs-rc' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
+'prefs-watchlist' => 'ܪ̈ܗܝܬܐ',
+'prefs-watchlist-days' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܪ̈ܗܝܬܐ:',
+'prefs-resetpass' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
+'prefs-email' => 'ܓܒܝܬ̈ܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
+'prefs-rendering' => 'ܐܣܟܝܡܐ',
+'saveprefs' => 'ܠܒܘܟ',
+'resetprefs' => 'ܡܫܝ ܫܘܚܠܦ̈ܐ ܠܐ ܠܒܝܟ̈ܐ',
+'prefs-editing' => 'ܫܚܠܦܬܐ',
+'columns' => 'ܥܡܘܕ̈ܐ:',
+'searchresultshead' => 'ܒܨܝ',
+'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
+'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
+'savedprefs' => 'ܓܒܝܬ̈ܐ ܕܝܠܟ ܐܬܠܒܟܬ.',
+'prefs-searchoptions' => 'ܓܒܝܬ̈ܐ ܕܒܘܨܝܐ',
+'prefs-namespaces' => 'ܚܩܠܬ̈ܐ',
+'defaultns' => 'ܐܘ ܒܨܝ ܒܚܩܠܬ̈ܐ ܗܢܝܢ',
+'prefs-files' => 'ܠܦܦ̈ܐ',
+'prefs-emailconfirm-label' => 'ܚܘܬܬܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
+'youremail' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
+'username' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
+'uid' => 'ܗܝܝܘܬܐ ܕܡܦܠܚܢܐ:',
+'prefs-memberingroups' => 'ܗܕܡܐ ܕ{{PLURAL:$1|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}:',
+'prefs-registration' => 'ܙܒܢܐ ܕܣܘܓܠܐ:',
+'yourrealname' => 'ܫܡܐ ܫܪܝܪܐ:',
+'yourlanguage' => 'ܠܫܢܐ:',
+'yournick' => 'ܪܡܝ ܐܝܕܐ:',
+'badsiglength' => 'ܪܡܝ ܐܝܕܟ ܣܓܝ ܐܪܝܟܬܐ.
+ܐܠܨܐ ܠܟ ܠܐ ܝܬܝܪ ܡܢ $1 {{PLURAL:$1|ܐܬܘܬܐ|ܐܬܘܬ̈ܐ}} ܐܪܝܟܬܐ ܗܘܬ.',
+'yourgender' => 'ܓܢܣܐ:',
+'gender-unknown' => 'ܠܐ ܦܣܝܩܐ',
+'gender-male' => 'ܕܟܪܐ',
+'gender-female' => 'ܢܩܒܐ',
+'email' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
+'prefs-info' => 'ܝܕ̈ܥܬܐ ܪ̈ܫܝܬܐ',
+'prefs-i18n' => 'ܬܘܪܓܡܐ',
+'prefs-signature' => 'ܪܡܝ ܐܝܕܐ',
+'prefs-dateformat' => 'ܚܫܠܬܐ ܕܙܒܢܐ',
+'prefs-advancedediting' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
+'prefs-advancedrc' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
+'prefs-advancedrendering' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
+'prefs-advancedsearchoptions' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
+'prefs-advancedwatchlist' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
+'prefs-display' => 'ܚܘܝ ܓܒܝܬ̈ܐ',
+'prefs-diffs' => 'ܦܪ̈ܝܫܘܝܬܐ',
# User rights
-'userrights' => 'ܡܕܒܪܢܘܬܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ', # Not used as normal message but as header for the special page itself
+'userrights' => 'ܡܕܒܪܢܘܬܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
'userrights-lookup-user' => 'ܕܒܪ ܟܢܘܫܝ̈ܐ ܕܡܦܠܚܢܐ',
'userrights-user-editname' => 'ܐܥܠ ܫܡܐ ܕܡܦܠܚܢܐ:',
'editusergroup' => 'ܫܚܠܦ ܟܢܘܫܝ̈ܐ ܕܡܦܠܚܢܐ',
@@ -571,35 +681,43 @@ Note that some pages may continue to be displayed as if you were still logged in
'action-userrights' => 'ܫܚܠܦ ܟܠ ܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
-'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
-'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
-'recentchangestext' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.',
-'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
-'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
-'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
-'rcshowhideliu' => '$1 ܡܦܠܚܢ̈ܐ ܥܠܝܠ̈ܐ',
-'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
-'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
-'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ<br />$3',
-'diff' => 'ܦܪܝܫܘܬܐ',
-'hist' => 'ܬܫܥܝܬܐ',
-'hide' => 'ܛܫܝ',
-'show' => 'ܚܘܝ',
-'minoreditletter' => 'ܙ',
-'newpageletter' => 'ܚ',
-'boteditletter' => 'ܒ',
-'newsectionsummary' => '/* $1 */ ܡܢܬܐ ܚܕܬܐ',
-'rc-enhanced-hide' => 'ܛܫܝ ܐܪ̈ܝܟܬܐ',
+'nchanges' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
+'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
+'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
+'recentchangestext' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.',
+'recentchanges-label-legend' => 'ܩܠܝܕܐ: $1.',
+'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-label-newpage' => 'ܫܘܚܠܦܐ ܗܢܐ ܒܪܐ ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-legend-minor' => '$1 - ܫܘܚܠܦܐ ܙܥܘܪܐ',
+'recentchanges-label-minor' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
+'recentchanges-legend-bot' => '$1 - ܫܘܚܠܦܐ ܕܒܘܬ (bot)',
+'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
+'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
+'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
+'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
+'rcshowhideliu' => '$1 ܡܦܠܚܢ̈ܐ ܥܠܝܠ̈ܐ',
+'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
+'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
+'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ<br />$3',
+'diff' => 'ܦܪܝܫܘܬܐ',
+'hist' => 'ܬܫܥܝܬܐ',
+'hide' => 'ܛܫܝ',
+'show' => 'ܚܘܝ',
+'minoreditletter' => 'ܙ',
+'newpageletter' => 'ܚ',
+'boteditletter' => 'ܒ',
+'newsectionsummary' => '/* $1 */ ܡܢܬܐ ܚܕܬܐ',
+'rc-enhanced-hide' => 'ܛܫܝ ܐܪ̈ܝܟܬܐ',
# Recent changes linked
-'recentchangeslinked' => 'ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
-'recentchangeslinked-page' => 'ܫܡܐ ܕܦܐܬܐ:',
+'recentchangeslinked' => 'ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
+'recentchangeslinked-feed' => 'ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
+'recentchangeslinked-toolbox' => 'ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
+'recentchangeslinked-page' => 'ܫܡܐ ܕܦܐܬܐ:',
# Upload
'upload' => 'ܐܣܩ ܠܦܦܐ',
'uploadbtn' => 'ܐܣܩ ܠܦܦܐ',
-'reupload' => 'ܐܣܩ ܙܒܢܬܐ ܐܚܪܬܐ',
'uploadnologin' => 'ܠܐ ܥܠܝܠܐ',
'uploaderror' => 'ܦܘܕܐ ܒܡܣܩܬܐ',
'uploadlog' => 'ܣܓܠܐ ܕܣܠܩܐ',
@@ -624,6 +742,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'listfiles_user' => 'ܡܦܠܚܢܐ',
# File description page
+'file-anchor-link' => 'ܠܦܦܐ',
'filehist' => 'ܬܫܥܝܬܐ ܕܠܦܦܐ',
'filehist-deleteall' => 'ܫܘܦ ܟܠ',
'filehist-deleteone' => 'ܫܘܦ',
@@ -637,7 +756,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'nolinkstoimage' => 'ܠܝܬ ܦܐܬܐ ܕܐܣܪ ܠܗܢܐ ܠܦܦܐ.',
'redirectstofile' => '{{PLURAL:$1|ܠܦܦܐ|$1 ܠܦܦ̈ܐ}} ܕܐܬܐ ܐܣܪ ܠܗܢܐ ܠܦܦܐ:',
'uploadnewversion-linktext' => 'ܐܣܩ ܨܚܚܐ ܚܕܬܐ ܡܢ ܗܢܐ ܠܦܦܐ',
-'shared-repo-from' => 'ܡܢ $1', # $1 is the repository name
+'shared-repo-from' => 'ܡܢ $1',
# File deletion
'filedelete' => 'ܫܘܦ $1',
@@ -663,7 +782,8 @@ Note that some pages may continue to be displayed as if you were still logged in
'unusedtemplateswlh' => 'ܐܣܘܪ̈ܐ ܐܚܪ̈ܢܐ',
# Random page
-'randompage' => 'ܡܓܠ̈ܐ ܚܘܝܚ̈ܐ',
+'randompage' => 'ܡܓܠ̈ܐ ܚܘܝܚ̈ܐ',
+'randompage-nopages' => 'ܠܝܬ ܦܐܬܬ̈ܐ ܒ{{PLURAL:$2|ܚܩܠܐ ܕ|ܚܩܠܬ̈ܐ ܕ}}: $1.',
# Random redirect
'randomredirect' => 'ܨܘܝܒ̈ܐ ܚܘܝܚ̈ܐ',
@@ -679,7 +799,9 @@ Note that some pages may continue to be displayed as if you were still logged in
'double-redirect-fixed-move' => '[[$1]] ܐܫܬܢܝܬ.
ܗܫܐ ܐܝܬܝܗܝ ܨܘܝܒܐ ܠ [[$2]].',
-'brokenredirects' => 'ܨܘܝܒ̈ܐ ܬܒܝܪ̈ܐ',
+'brokenredirects' => 'ܨܘܝܒ̈ܐ ܬܒܝܪ̈ܐ',
+'brokenredirects-edit' => 'ܫܚܠܦ',
+'brokenredirects-delete' => 'ܫܘܦ',
'withoutinterwiki' => 'ܦܐܬܬ̈ܐ ܕܠܐ ܐܣܘܪ̈ܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ',
'withoutinterwiki-submit' => 'ܚܘܝ',
@@ -757,8 +879,9 @@ Note that some pages may continue to be displayed as if you were still logged in
'special-categories-sort-abc' => 'ܛܟܣ ܗܓܝܢܐܝܬ',
# Special:DeletedContributions
-'deletedcontributions' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܫܝܦܬ̈ܐ',
-'deletedcontributions-title' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܫܝܦܬ̈ܐ',
+'deletedcontributions' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܫܝܦܬ̈ܐ',
+'deletedcontributions-title' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܫܝܦܬ̈ܐ',
+'sp-deletedcontributions-contribs' => 'ܫܘܬܦܘܝܬ̈ܐ',
# Special:LinkSearch
'linksearch' => 'ܐܣܘܪܐ ܒܪܝܐ',
@@ -766,8 +889,13 @@ Note that some pages may continue to be displayed as if you were still logged in
'linksearch-ok' => 'ܒܨܝ',
# Special:ListUsers
-'listusersfrom' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܝܢ ܒ:',
-'listusers-submit' => 'ܚܘܝ',
+'listusersfrom' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܝܢ ܒ:',
+'listusers-submit' => 'ܚܘܝ',
+'listusers-blocked' => '(ܚܪܝܡܐ)',
+
+# Special:ActiveUsers
+'activeusers-count' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ ܚܕܬܐ|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܬܐ}}',
+'activeusers-from' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܐ ܥܡ:',
# Special:Log/newusers
'newuserlogpage' => 'ܣܓܠܐ ܕܒܪܝܬܐ ܕܡܦܠܚܢܐ',
@@ -775,15 +903,17 @@ Note that some pages may continue to be displayed as if you were still logged in
'newuserlog-create2-entry' => 'ܒܪܐ ܚܘܫܒܢܐ ܚܕܬܐ $1',
# Special:ListGroupRights
-'listgrouprights' => 'ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ ܕܡܦܠܚܢ̈ܐ',
-'listgrouprights-group' => 'ܟܢܘܫܬܐ',
-'listgrouprights-rights' => 'ܙܕ̈ܩܐ',
-'listgrouprights-helppage' => 'Help:ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ',
-'listgrouprights-members' => '(ܒܪܒܝܢ ܕܗܕ̈ܡܐ)',
-'listgrouprights-addgroup' => 'ܐܘܣܦ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}: $1',
-'listgrouprights-removegroup' => 'ܠܚܝ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}: $1',
-'listgrouprights-addgroup-all' => 'ܐܘܣܦ ܟܠ ܟܢܘܫܬ̈ܐ',
-'listgrouprights-removegroup-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ',
+'listgrouprights' => 'ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ ܕܡܦܠܚܢ̈ܐ',
+'listgrouprights-group' => 'ܟܢܘܫܬܐ',
+'listgrouprights-rights' => 'ܙܕ̈ܩܐ',
+'listgrouprights-helppage' => 'Help:ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ',
+'listgrouprights-members' => '(ܒܪܒܝܢ ܕܗܕ̈ܡܐ)',
+'listgrouprights-addgroup' => 'ܐܘܣܦ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}: $1',
+'listgrouprights-removegroup' => 'ܠܚܝ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}}: $1',
+'listgrouprights-addgroup-all' => 'ܐܘܣܦ ܟܠ ܟܢܘܫܬ̈ܐ',
+'listgrouprights-removegroup-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ',
+'listgrouprights-removegroup-self' => 'ܠܚܝ {{PLURAL:$2|ܟܢܘܫܬܐ|ܟܢܘܫܬ̈ܐ}} ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ: $1',
+'listgrouprights-removegroup-self-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ',
# E-mail user
'emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
@@ -843,7 +973,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'delete-edit-reasonlist' => 'ܫܚܠܦ ܥܠܠܬ̈ܐ ܕܫܝܦܐ',
# Rollback
-'editcomment' => "ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ ܗܘܐ: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ ܗܘܐ: \"''\$1''\".",
# Protect
'protectlogpage' => 'ܣܓܠܐ ܕܢܛܪܐ',
@@ -859,7 +989,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'protect-otherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
'protect-otherreason-op' => 'ܥܠܬܐ ܐܚܪܬܐ',
'protect-edit-reasonlist' => 'ܫܚܠܦ ܥܠܬܐ ܕܢܛܪܐ',
-'protect-expiry-options' => '1 ܫܥܬܐ:1 hour,1 ܝܘܡܐ:1 day,1 ܫܒܘܥܐ:1 week,2 ܫܒܘܥ̈ܐ:2 weeks,1 ܝܪܚܐ:1 month,3 ܝܪ̈ܚܐ:3 months,6 ܝܪ̈ܚܐ:6 months,1 ܫܢܬܐ:1 year,ܕܠܐ ܣܟ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ܫܥܬܐ:1 hour,1 ܝܘܡܐ:1 day,1 ܫܒܘܥܐ:1 week,2 ܫܒܘܥ̈ܐ:2 weeks,1 ܝܪܚܐ:1 month,3 ܝܪ̈ܚܐ:3 months,6 ܝܪ̈ܚܐ:6 months,1 ܫܢܬܐ:1 year,ܕܠܐ ܣܟ:infinite',
'restriction-type' => 'ܦܣܣܐ:',
# Restrictions (nouns)
@@ -873,6 +1003,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'viewdeletedpage' => 'ܚܙܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
'undelete-revision' => 'ܫܦ ܬܢܝܬܐ ܕ $1 (ܒܣܝܩܘܡ $4, ܒ $5) ܒܝܕ $3:',
'undelete-nodiff' => 'ܠܝܬ ܬܢܝܬܐ ܥܬܝܩܬܐ.',
+'undeleteviewlink' => 'ܚܙܝ',
'undeleteinvert' => 'ܐܗܦܟ ܠܓܘܒܝܐ',
'undelete-header' => 'ܚܙܝ [[Special:Log/delete|ܣܓܠܐ ܕܫܝܦܐ]] ܠܚܙܝܐ ܕܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ ܚܕ̈ܬܬܐ.',
'undelete-search-box' => 'ܒܨܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
@@ -898,7 +1029,9 @@ Note that some pages may continue to be displayed as if you were still logged in
'sp-contributions-newbies-sub' => 'ܠܚܘܫܒܢ̈ܐ ܚܕ̈ܬܐ',
'sp-contributions-newbies-title' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܠܚܘܫܒܢ̈ܐ ܚܕ̈ܬܐ',
'sp-contributions-blocklog' => 'ܣܓܠܐ ܕܚܪܡܐ',
+'sp-contributions-deleted' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܫܝܦܬ̈ܐ',
'sp-contributions-logs' => 'ܣܓܠ̈ܐ',
+'sp-contributions-talk' => 'ܡܡܠܠܐ',
'sp-contributions-search' => 'ܒܨܝ ܫܘܬܦܘܝܬ̈ܐ',
'sp-contributions-username' => 'ܐܝ ܦܝ (IP) ܐܘ ܫܡܐ ܕܡܦܠܚܢܐ:',
'sp-contributions-submit' => 'ܒܨܝ',
@@ -929,7 +1062,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'ipbanononly' => 'ܚܪܘܡ ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ ܒܠܚܘܕ',
'ipbsubmit' => 'ܚܪܘܡ ܡܦܠܚܢܐ ܗܢܐ',
'ipbother' => 'ܥܕܢܐ ܐܚܪܬܐ',
-'ipboptions' => '2 ܫܥܬ̈ܐ:2 hours,1 ܝܘܡܐ:1 day,3 ܝܘܡܬ̈ܐ:3 days,1 ܫܒܘܥܐ:1 week,2 ܫܒܘܥ̈ܐ:2 weeks,1 ܝܪܚܐ:1 month,3 ܝܪ̈ܚܐ:3 months,6 ܝܪ̈ܚܐ:6 months,1 ܫܢܬܐ:1 year,ܕܠܐ ܣܟ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ܫܥܬ̈ܐ:2 hours,1 ܝܘܡܐ:1 day,3 ܝܘܡܬ̈ܐ:3 days,1 ܫܒܘܥܐ:1 week,2 ܫܒܘܥ̈ܐ:2 weeks,1 ܝܪܚܐ:1 month,3 ܝܪ̈ܚܐ:3 months,6 ܝܪ̈ܚܐ:6 months,1 ܫܢܬܐ:1 year,ܕܠܐ ܣܟ:infinite',
'ipbotheroption' => 'ܐܚܪܢܐ',
'ipbotherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
'ipbhidename' => 'ܛܫܝ ܫܡܐ ܕܡܦܠܚܢܐ ܡܢ ܫܘܚܠܦ̈ܐ ܘܒܪ̈ܒܝܢ',
@@ -957,7 +1090,6 @@ Note that some pages may continue to be displayed as if you were still logged in
'change-blocklink' => 'ܫܚܠܦ ܚܪܡܐ',
'contribslink' => 'ܫܘܬܦܘܝܬ̈ܐ',
'blocklogpage' => 'ܣܓܠܐ ܕܚܪܡܐ',
-'blocklog-fulllog' => 'ܣܓܠܐ ܕܚܪܡܐ ܫܠܡܐ',
'blocklogentry' => 'ܚܪܡ [[$1]] ܠܡܬܚܐ ܕ $2 $3',
'unblocklogentry' => 'ܫܩܠ ܚܪܡܐ ܡܢ $1',
'block-log-flags-anononly' => 'ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ ܒܠܚܘܕ',
@@ -976,7 +1108,7 @@ Do you want to change the settings?',
'move-watch' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
'movepagebtn' => 'ܫܢܝ ܦܐܬܐ',
'pagemovedsub' => 'ܫܘܢܝܐ ܓܡܪ',
-'movepage-moved' => '\'\'\'"$1" ܐܫܬܢܝܬ ܠ "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ܐܫܬܢܝܬ ܠ "$2"\'\'\'',
'movepage-moved-redirect' => 'ܨܘܝܒܐ ܐܬܒܪܝ',
'movedto' => 'ܐܬܫܢܝ ܠ',
'1movedto2' => 'ܫܢܐ [[$1]] ܠ [[$2]]',
@@ -997,8 +1129,11 @@ Do you want to change the settings?',
'export-download' => 'ܠܒܘܟ ܐܝܟ ܠܦܦܐ',
# Namespace 8 related
-'allmessages' => 'ܐܓܪ̈ܬܐ ܕܛܟܣܐ',
-'allmessagesname' => 'ܫܡܐ',
+'allmessages' => 'ܐܓܪ̈ܬܐ ܕܛܟܣܐ',
+'allmessagesname' => 'ܫܡܐ',
+'allmessages-filter-all' => 'ܟܠ',
+'allmessages-language' => 'ܠܫܢܐ:',
+'allmessages-filter-submit' => 'ܙܠ',
# Thumbnails
'thumbnail-more' => 'ܐܘܪܒ',
@@ -1038,6 +1173,9 @@ Do you want to change the settings?',
'numauthors' => 'ܡܢܝܢܐ ܕܡܫܚܠܦܢ̈ܐ (ܦܐܬܐ): $1',
'numtalkauthors' => 'ܡܢܝܢܐ ܕܡܫܚܠܦܢ̈ܐ (ܦܐܬܐ ܕܕܘܪܫܐ): $1',
+# Math errors
+'math_unknown_error' => 'ܦܘܕܐ ܠܐ ܝܕܝܥܐ',
+
# Patrol log
'patrol-log-auto' => '(ܝܬܐܝܬ)',
'patrol-log-diff' => 'ܬܢܝܬܐ $1',
@@ -1049,9 +1187,6 @@ Do you want to change the settings?',
'previousdiff' => '← ܫܘܚܠܦܐ ܥܬܝܩܐ',
'nextdiff' => 'ܫܘܚܠܦܐ ܚܕܬܐ →',
-# Visual comparison
-'visual-comparison' => 'ܦܘܚܡܐ ܚܝܪܝܐ',
-
# Special:NewFiles
'newimages' => 'ܒܝܬ ܓܠܚܐ ܕܠܦܦ̈ܐ ܚܕܬ̈ܐ',
'newimages-label' => 'ܫܡܐ ܕܠܦܦܐ (ܐܘ ܡܢܬܐ ܡܢܗ)',
@@ -1076,7 +1211,7 @@ Do you want to change the settings?',
'exif-unknowndate' => 'ܣܝܩܘܡܐ ܠܐ ܝܕܝܥܐ',
-'exif-orientation-1' => 'ܟܝܢܝܐ', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'ܟܝܢܝܐ',
'exif-exposureprogram-1' => 'ܐܝܕܝܐ',
'exif-exposureprogram-2' => 'ܬܚܪܙܬܐ ܟܝܢܝܬܐ',
@@ -1105,7 +1240,7 @@ Do you want to change the settings?',
'exif-subjectdistancerange-2' => 'ܚܝܪܐ ܩܪܝܒܐ',
'exif-subjectdistancerange-3' => 'ܚܝܪܐ ܪܚܘܩܐ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ܟܝܠܘܡܬܪ ܒܫܥܬܐ',
'exif-gpsspeed-m' => 'ܡܝܠܐ ܒܫܥܬܐ',
'exif-gpsspeed-n' => 'ܩܛܪ̈ܐ',
@@ -1120,6 +1255,7 @@ Do you want to change the settings?',
'watchlistall2' => 'ܟܠ',
'namespacesall' => 'ܟܠ',
'monthsall' => 'ܟܠ',
+'limitall' => 'ܟܠ',
# E-mail address confirmation
'confirmemail' => 'ܚܬܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
@@ -1196,4 +1332,9 @@ Do you want to change the settings?',
'tags-edit' => 'ܫܚܠܦ',
'tags-hitcount' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
+# HTML forms
+'htmlform-submit' => 'ܫܕܪ',
+'htmlform-reset' => 'ܠܐ ܥܒܘܕ ܫܘܚܠܦ̈ܐ',
+'htmlform-selectorother-other' => 'ܐܚܪܢܐ',
+
);
diff --git a/languages/messages/MessagesArn.php b/languages/messages/MessagesArn.php
index 9d554de2..ebd350f0 100644
--- a/languages/messages/MessagesArn.php
+++ b/languages/messages/MessagesArn.php
@@ -80,16 +80,31 @@ $messages = array(
# Categories related messages
'listingcontinuesabbrev' => 'ramt.',
+'moredotdotdot' => 'Doy...',
+'mypage' => 'tañi nütramkawe',
+'mytalk' => 'Tañi nütramkawe',
+'anontalk' => 'Tüfachi IP ñi nütramkawe',
+'navigation' => 'Miyawvn',
+'and' => '&#32;ka',
+
+# Cologne Blue skin
'qbfind' => 'Kintupe',
'qbedit' => 'Pepikape',
'qbmyoptions' => 'tañi nütramkawe',
'qbspecialpages' => 'Kangelu',
-'moredotdotdot' => 'Doy...',
-'mypage' => 'tañi nütramkawe',
-'mytalk' => 'Tañi nütramkawe',
-'anontalk' => 'Tüfachi IP ñi nütramkawe',
-'navigation' => 'Miyawvn',
-'and' => '&#32;ka',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-delete' => 'Ñamümün',
+'vector-namespace-main' => 'Pakina',
+'vector-namespace-mediawiki' => 'Yefalzugu',
+'vector-namespace-talk' => 'Nvxamkawvn',
+'vector-namespace-user' => 'Kellufe',
+'vector-view-create' => 'Zewmape',
+'vector-view-edit' => 'Pepikan',
+'vector-view-history' => 'Pegelpe rupañmael',
+'vector-view-view' => 'Chillkatun',
'returnto' => 'Amutun $1 püle.',
'tagline' => '{{SITENAME}} mew',
@@ -136,8 +151,6 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'edithelp' => 'Kellü wirin',
'edithelppage' => 'Help:Chum wiringekey pakina',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Kellu',
'mainpage' => 'Ñizol Wvbgiñ',
'mainpage-description' => 'Ñizol Wvbgiñ',
@@ -172,7 +185,6 @@ $messages = array(
'badtitle' => 'Nornongey ta üy',
# Login and logout pages
-'loginpagetitle' => 'Konün',
'yourname' => 'Tami üy',
'yourpassword' => 'Tami kondungu',
'login' => 'Konvn',
@@ -184,11 +196,6 @@ $messages = array(
'nologin' => "Nielaymi kiñe lludüwe? '''$1'''.",
'nologinlink' => 'Dewmafinge',
'gotaccountlink' => 'Konün',
-'username' => 'Üy kellufe:',
-'yourrealname' => 'Tami mupiñ üy *',
-'yourlanguage' => 'Cezugun:',
-'gender-male' => 'Wentru',
-'gender-female' => 'Domo',
'loginlanguagelabel' => 'Cezugun: $1',
# Edit pages
@@ -207,32 +214,30 @@ $messages = array(
# History pages
'page_first' => 'wünen',
'history-fieldset-title' => 'Kintun pünon mew',
-'deletedrev' => '[ñamümüngelu]',
'historyempty' => '(welli)',
# Revision feed
-'history-feed-item-nocomment' => '$1 $2 mew', # user at time
+'history-feed-item-nocomment' => '$1 $2 mew',
# Revision deletion
-'rev-delundel' => 'pegelpe/ejkape',
-'pagehist' => 'pünon pakina',
-'deletedhist' => 'Ñamümüngelu pünon',
-'revdelete-uname' => 'Üy kellufe',
-'revdelete-hid' => 'Ellkan $1',
+'rev-delundel' => 'pegelpe/ejkape',
+'rev-showdeleted' => 'pegelpe',
+'revdelete-show-file-submit' => 'May',
+'pagehist' => 'pünon pakina',
+'deletedhist' => 'Ñamümüngelu pünon',
+'revdelete-uname' => 'Üy kellufe',
+'revdelete-hid' => 'Ellkan $1',
+'revdelete-edit-reasonlist' => 'Wirin dungu ñamümgün mew',
# History merging
'mergehistory-reason' => 'Dungu:',
# Diffs
-'lineno' => 'Wirin $1:',
-'editundo' => 'wüñoeltun',
-'diff-movedto' => 'Nengümülu $1 püle',
-'diff-img' => "kiñe '''ad'''",
-'diff-big' => "'''füta'''",
-'diff-del' => "'''Ñamümün'''",
+'lineno' => 'Wirin $1:',
+'editundo' => 'wüñoeltun',
# Search results
-'viewprevnext' => 'Pen ($1) ($2) ($3).',
+'viewprevnext' => 'Pen ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Mvley kiñe cijka «[[:$1]]» pigelu faci wiki mew'''",
'searchmenu-new' => "'''¡Llitun pakina «[[:$1]]» tüfachi wiki mew!'''",
'searchhelp-url' => 'Help:Kellu',
@@ -248,13 +253,18 @@ $messages = array(
'prefs-edits' => 'Rakin Wirin:',
'prefsnologin' => 'Mülelay Konün',
'skin-preview' => 'Pen chum müley',
-'textboxsize' => 'Wirin',
+'prefs-editing' => 'Wirin',
'searchresultshead' => 'Kintun',
'timezoneregion-africa' => 'Afrika',
'timezoneregion-america' => 'Amerika',
'timezoneregion-arctic' => 'Artiku',
'timezoneregion-asia' => 'Asia',
'timezoneregion-europe' => 'Ewropa',
+'username' => 'Üy kellufe:',
+'yourrealname' => 'Tami mupiñ üy *',
+'yourlanguage' => 'Cezugun:',
+'gender-male' => 'Wentru',
+'gender-female' => 'Domo',
# User rights
'userrights-user-editname' => 'Wirin kiñe üy kellufe mew:',
@@ -292,6 +302,8 @@ $messages = array(
'action-undelete' => 'Namümlay tüfachi pakina',
# Recent changes
+'recentchanges-legend-newpage' => '$1 - We Pakina',
+'recentchanges-legend-minor' => '$1 pichi wirin',
'rcshowhideminor' => '$1 pichi wirin',
'rcshowhidemine' => '$1 tañi wirin',
'hist' => 'rupañ',
@@ -336,8 +348,8 @@ $messages = array(
# Statistics
'statistics-pages' => 'Pakina',
-'brokenredirects-edit' => '(wirin)',
-'brokenredirects-delete' => '(ñamümün)',
+'brokenredirects-edit' => 'pepikan',
+'brokenredirects-delete' => 'ñamümün',
'withoutinterwiki-submit' => 'Pegelpe',
@@ -405,7 +417,7 @@ $messages = array(
'protectexpiry' => 'Afi:',
'protect-level-sysop' => 'Pu ngünefe müṯen',
'protect-summary-cascade' => 'Trayengko',
-'protect-expiry-options' => '1 ora:1 hour,1 aṉtü:1 day,1 semana:1 week,2 semanas:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,Rumel:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 aṉtü:1 day,1 semana:1 week,2 semanas:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,Rumel:infinite',
# Restrictions (nouns)
'restriction-edit' => 'Pepiwelukay',
@@ -414,6 +426,7 @@ $messages = array(
# Undelete
'viewdeletedpage' => 'Pen pakina ñamümüngelu',
+'undeleteviewlink' => 'Pen',
'undelete-search-box' => 'Kintun ñamümüngelu pakina',
'undelete-search-submit' => 'Kintun',
'undelete-show-file-submit' => 'May',
@@ -426,6 +439,7 @@ $messages = array(
'month' => 'Küyeṉ:',
'year' => 'Tripantu:',
+'sp-contributions-talk' => 'Nvxamkawvn',
'sp-contributions-submit' => 'Kintun',
# What links here
@@ -437,10 +451,10 @@ $messages = array(
'ipbexpiry' => 'Afi',
'ipbreason' => 'Dungu:',
'ipbreasonotherlist' => 'Kake dungu:',
-'ipboptions' => '2 ora:2 hours,1 aṉtü:1 day,3 aṉtü:3 days,1 semana:1 week,2 semana:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,rumel:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ora:2 hours,1 aṉtü:1 day,3 aṉtü:3 days,1 semana:1 week,2 semana:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,rumel:infinite',
'ipbotheroption' => 'Kakelu',
'ipblocklist-submit' => 'Kintun',
-'expiringblock' => 'afi $1',
+'expiringblock' => 'afi $1 $2',
'block-log-flags-hiddenname' => 'Üy kellufe ellkan',
'proxyblocksuccess' => 'Dewmangey.',
@@ -461,7 +475,8 @@ $messages = array(
'export' => 'Wiñamün pakina',
# Namespace 8 related
-'allmessagesname' => 'Üy',
+'allmessagesname' => 'Üy',
+'allmessages-language' => 'Cezugun:',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Tami pakina',
@@ -523,6 +538,7 @@ $messages = array(
'watchlistall2' => 'kom',
'namespacesall' => 'kom',
'monthsall' => '(kom)',
+'limitall' => 'Kom',
# Trackbacks
'trackbackremove' => '([$1 Ñamümün])',
@@ -559,4 +575,7 @@ $messages = array(
# Special:Tags
'tags-edit' => 'Wirin',
+# HTML forms
+'htmlform-selectorother-other' => 'Kakelu',
+
);
diff --git a/languages/messages/MessagesArz.php b/languages/messages/MessagesArz.php
index 704d2680..213cdf94 100644
--- a/languages/messages/MessagesArz.php
+++ b/languages/messages/MessagesArz.php
@@ -11,6 +11,7 @@
* @author Dudi
* @author Ghaly
* @author Meno25
+ * @author Ouda
* @author Ramsis II
*/
@@ -58,24 +59,26 @@ $namespaceAliases = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#تحويل', '#تحويل', '#REDIRECT' ),
- 'notoc' => array( '0', '__لافهرس__', '__لافهرس__', '__NOTOC__' ),
- 'nogallery' => array( '0', '__لامعرض__', '__لامعرض__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__لصق_فهرس__', '__لصق_فهرس__', '__FORCETOC__' ),
- 'toc' => array( '0', '__فهرس__', '__فهرس__', '__TOC__' ),
- 'noeditsection' => array( '0', '__لاتحريرقسم__', '__لاتحريرقسم__', '__NOEDITSECTION__' ),
- 'noheader' => array( '0', '__لاعنوان__', '__لاعنوان__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'شهر_حالى', 'شهر', 'شهر_حالي', 'شهر', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'اسم_الشهر_الحالى', 'اسم_شهر_حالى', 'اسم_شهر', 'اسم_الشهر_الحالي', 'اسم_شهر_حالي', 'اسم_شهر', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'اسم_الشهر_الحالى_المولد', 'اسم_شهر_حالى_مولد', 'اسم_الشهر_الحالي_المولد', 'اسم_شهر_حالي_مولد', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'اختصار_الشهر_الحالى', 'اختصار_شهر_حالى', 'اختصار_الشهر_الحالي', 'اختصار_شهر_حالي', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'يوم_حالى', 'يوم', 'يوم_حالي', 'يوم', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'يوم_حالى2', 'يوم2', 'يوم_حالي2', 'يوم2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'اسم_اليوم_الحالى', 'اسم_يوم_حالى', 'اسم_يوم', 'اسم_اليوم_الحالي', 'اسم_يوم_حالي', 'اسم_يوم', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'عام_حالى', 'عام', 'عام_حالي', 'عام', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'وقت_حالى', 'وقت', 'وقت_حالي', 'وقت', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'ساعة_حالية', 'ساعة', 'ساعة_حالية', 'ساعة', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'شهر_محلى', 'شهر_محلي', 'LOCALMONTH' ),
+ 'redirect' => array( '0', '#تحويل', '#REDIRECT' ),
+ 'notoc' => array( '0', '__لافهرس__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__لامعرض__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__لصق_فهرس__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__فهرس__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__لاتحريرقسم__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__لاعنوان__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'شهر_حالى', 'شهر_حالي2', 'شهر_حالي', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'شهر_حالي1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'اسم_الشهر_الحالى', 'اسم_الشهر_الحالي', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'اسم_الشهر_الحالى_المولد', 'اسم_الشهر_الحالي_المولد', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'اختصار_الشهر_الحالى', 'اختصار_الشهر_الحالي', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'يوم_حالى', 'يوم_حالي', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'يوم_حالى2', 'يوم_حالي2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'اسم_اليوم_الحالى', 'اسم_اليوم_الحالي', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'عام_حالى', 'عام_حالي', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'وقت_حالى', 'وقت_حالي', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ساعة_حالية', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'شهر_محلى', 'شهر_محلي2', 'شهر_محلي', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'شهر_محلى1', 'شهر_محلي1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'اسم_الشهر_المحلى', 'اسم_شهر_محلى', 'اسم_الشهر_المحلي', 'اسم_شهر_محلي', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'اسم_الشهر_المحلى_المولد', 'اسم_شهر_محلى_مولد', 'اسم_الشهر_المحلي_المولد', 'اسم_شهر_محلي_مولد', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'اختصار_الشهر_المحلى', 'اختصار_شهر_محلى', 'اختصار_الشهر_المحلي', 'اختصار_شهر_محلي', 'LOCALMONTHABBREV' ),
@@ -84,126 +87,132 @@ $magicWords = array(
'localdayname' => array( '1', 'اسم_اليوم_المحلى', 'اسم_يوم_محلى', 'اسم_اليوم_المحلي', 'اسم_يوم_محلي', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'عام_محلى', 'عام_محلي', 'LOCALYEAR' ),
'localtime' => array( '1', 'وقت_محلى', 'وقت_محلي', 'LOCALTIME' ),
- 'localhour' => array( '1', 'ساعة_محلية', 'ساعة_محلية', 'LOCALHOUR' ),
- 'numberofpages' => array( '1', 'عدد_الصفحات', 'عدد_صفحات', 'عدد_الصفحات', 'عدد_صفحات', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( '1', 'عدد_المقالات', 'عدد_مقالات', 'عدد_المقالات', 'عدد_مقالات', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'عدد_الملفات', 'عدد_ملفات', 'عدد_الملفات', 'عدد_ملفات', 'NUMBEROFFILES' ),
- 'numberofusers' => array( '1', 'عدد_المستخدمين', 'عدد_مستخدمين', 'عدد_المستخدمين', 'عدد_مستخدمين', 'NUMBEROFUSERS' ),
- 'numberofactiveusers' => array( '1', 'مستخدمون_نشطون', 'NUMBEROFACTIVEUSERS' ),
- 'numberofedits' => array( '1', 'عدد_التعديلات', 'عدد_تعديلات', 'عدد_التعديلات', 'عدد_تعديلات', 'NUMBEROFEDITS' ),
- 'numberofviews' => array( '1', 'عدد_المشاهدات', 'عدد_مشاهدات', 'عدد_المشاهدات', 'عدد_مشاهدات', 'NUMBEROFVIEWS' ),
- 'pagename' => array( '1', 'اسم_الصفحة', 'اسم_صفحة', 'اسم_الصفحة', 'اسم_صفحة', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'عنوان_الصفحة', 'عنوان_صفحة', 'عنوان_الصفحة', 'عنوان_صفحة', 'PAGENAMEE' ),
- 'namespace' => array( '1', 'نطاق', 'نطاق', 'NAMESPACE' ),
- 'namespacee' => array( '1', 'عنوان_نطاق', 'عنوان_نطاق', 'NAMESPACEE' ),
- 'talkspace' => array( '1', 'نطاق_النقاش', 'نطاق_نقاش', 'نطاق_النقاش', 'نطاق_نقاش', 'TALKSPACE' ),
- 'talkspacee' => array( '1', 'عنوان_النقاش', 'عنوان_نقاش', 'عنوان_النقاش', 'عنوان_نقاش', 'TALKSPACEE' ),
- 'subjectspace' => array( '1', 'نطاق_الموضوع', 'نطاق_المقالة', 'نطاق_الموضوع', 'نطاق_المقالة', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( '1', 'عنوان_نطاق_الموضوع', 'عنوان_نطاق_المقالة', 'عنوان_نطاق_الموضوع', 'عنوان_نطاق_المقالة', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( '1', 'اسم_الصفحة_الكامل', 'اسم_صفحة_كامل', 'اسم_كامل', 'اسم_الصفحة_الكامل', 'اسم_صفحة_كامل', 'اسم_كامل', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( '1', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'عنوان_كامل', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'عنوان_كامل', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'اسم_الصفحة_الفرعي', 'اسم_صفحة_فرعي', 'اسم_الصفحة_الفرعي', 'اسم_صفحة_فرعي', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'عنوان_الصفحة_الفرعى', 'عنوان_صفحة_فرعى', 'عنوان_الصفحة_الفرعي', 'عنوان_صفحة_فرعي', 'SUBPAGENAMEE' ),
- 'basepagename' => array( '1', 'اسم_الصفحة_الأساسى', 'اسم_صفحة_أساسى', 'اسم_الصفحة_الأساسي', 'اسم_صفحة_أساسي', 'BASEPAGENAME' ),
- 'basepagenamee' => array( '1', 'عنوان_الصفحة_الأساسى', 'عنوان_صفحة_أساسى', 'عنوان_الصفحة_الأساسي', 'عنوان_صفحة_أساسي', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'اسم_صفحة_النقاش', 'اسم_صفحة_نقاش', 'اسم_صفحة_النقاش', 'اسم_صفحة_نقاش', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'عنوان_صفحة_النقاش', 'عنوان_صفحة_نقاش', 'عنوان_صفحة_النقاش', 'عنوان_صفحة_نقاش', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( '1', 'اسم_صفحة_الموضوع', 'اسم_صفحة_المقالة', 'اسم_صفحة_الموضوع', 'اسم_صفحة_المقالة', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( '1', 'عنوان_صفحة_الموضوع', 'عنوان_صفحة_المقالة', 'عنوان_صفحة_الموضوع', 'عنوان_صفحة_المقالة', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( '0', 'رسالة:', 'رسالة:', 'MSG:' ),
- 'subst' => array( '0', 'نسخ:', 'إحلال:', 'نسخ:', 'إحلال:', 'SUBST:' ),
- 'msgnw' => array( '0', 'مصدر:', 'مصدر_قالب:', 'مصدر:', 'مصدر_قالب:', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'تصغير', 'تصغير', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'تصغير=$1', 'تصغير=$1', 'thumbnail=$1', 'thumb=$1' ),
- 'img_right' => array( '1', 'يمين', 'يمين', 'right' ),
- 'img_left' => array( '1', 'يسار', 'يسار', 'left' ),
- 'img_none' => array( '1', 'بدون', 'بلا', 'بدون', 'بلا', 'none' ),
- 'img_width' => array( '1', '$1بك', '$1بك', '$1عن', '$1px' ),
- 'img_center' => array( '1', 'مركز', 'مركز', 'center', 'centre' ),
- 'img_framed' => array( '1', 'إطار', 'إطار', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( '1', 'لاإطار', 'لاإطار', 'frameless' ),
- 'img_page' => array( '1', 'صفحة=$1', 'صفحة $1', 'صفحة=$1', 'صفحة $1', 'page=$1', 'page $1' ),
- 'img_upright' => array( '1', 'معدول', 'معدول=$1', 'معدول $1', 'معدول', 'معدول=$1', 'معدول $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( '1', 'حد', 'حدود', 'حد', 'حدود', 'border' ),
+ 'localhour' => array( '1', 'ساعة_محلية', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'عدد_الصفحات', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'عدد_المقالات', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'عدد_الملفات', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'عدد_المستخدمين', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'عدد_المستخدمين_النشطين', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'عدد_التعديلات', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'عدد_المشاهدات', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'اسم_الصفحة', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'عنوان_الصفحة', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'نطاق', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'عنوان_نطاق', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'نطاق_النقاش', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'عنوان_النقاش', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'نطاق_الموضوع', 'نطاق_المقالة', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'عنوان_نطاق_الموضوع', 'عنوان_نطاق_المقالة', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'اسم_الصفحة_الكامل', 'اسم_صفحة_كامل', 'اسم_كامل', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'عنوان_كامل', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'اسم_الصفحة_الفرعي', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'عنوان_الصفحة_الفرعى', 'عنوان_الصفحة_الفرعي', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'اسم_الصفحة_الأساسى', 'اسم_الصفحة_الأساسي', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'عنوان_الصفحة_الأساسى', 'عنوان_الصفحة_الأساسي', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'اسم_صفحة_النقاش', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'عنوان_صفحة_النقاش', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'اسم_صفحة_الموضوع', 'اسم_صفحة_المقالة', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'عنوان_صفحة_الموضوع', 'عنوان_صفحة_المقالة', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'رسالة:', 'MSG:' ),
+ 'subst' => array( '0', 'نسخ:', 'إحلال:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'مصدر:', 'مصدر_قالب:', 'رسالة_بدون_تهيئة:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'تصغير', 'مصغر', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'يمين', 'right' ),
+ 'img_left' => array( '1', 'يسار', 'left' ),
+ 'img_none' => array( '1', 'بدون', 'بلا', 'none' ),
+ 'img_width' => array( '1', '$1بك', '$1عن', '$1px' ),
+ 'img_center' => array( '1', 'مركز', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'لاإطار', 'frameless' ),
+ 'img_page' => array( '1', 'صفحة=$1', 'صفحة $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'معدول', 'معدول=$1', 'معدول $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'حد', 'حدود', 'border' ),
'img_baseline' => array( '1', 'خط_أساسى', 'خط_أساسي', 'baseline' ),
'img_sub' => array( '1', 'فرعى', 'فرعي', 'sub' ),
- 'img_super' => array( '1', 'سوبر', 'سب', 'سوبر', 'سب', 'super', 'sup' ),
- 'img_top' => array( '1', 'أعلى', 'أعلى', 'top' ),
- 'img_text_top' => array( '1', 'نص_أعلى', 'نص_أعلى', 'text-top' ),
- 'img_middle' => array( '1', 'وسط', 'وسط', 'middle' ),
- 'img_bottom' => array( '1', 'أسفل', 'أسفل', 'bottom' ),
- 'img_text_bottom' => array( '1', 'نص_أسفل', 'نص_أسفل', 'text-bottom' ),
- 'img_link' => array( '1', 'وصلة=$1', 'رابط=$1', 'وصلة=$1', 'رابط=$1', 'link=$1' ),
- 'img_alt' => array( '1', 'بديل=$1', 'بديل=$1', 'alt=$1' ),
- 'int' => array( '0', 'محتوى:', 'محتوى:', 'INT:' ),
- 'sitename' => array( '1', 'اسم_الموقع', 'اسم_موقع', 'اسم_الموقع', 'اسم_موقع', 'SITENAME' ),
- 'ns' => array( '0', 'نط:', 'نط:', 'NS:' ),
+ 'img_super' => array( '1', 'سوبر', 'سب', 'super', 'sup' ),
+ 'img_top' => array( '1', 'أعلى', 'top' ),
+ 'img_text_top' => array( '1', 'نص_أعلى', 'text-top' ),
+ 'img_middle' => array( '1', 'وسط', 'middle' ),
+ 'img_bottom' => array( '1', 'أسفل', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'نص_أسفل', 'text-bottom' ),
+ 'img_link' => array( '1', 'وصلة=$1', 'رابط=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'بديل=$1', 'alt=$1' ),
+ 'int' => array( '0', 'محتوى:', 'INT:' ),
+ 'sitename' => array( '1', 'اسم_الموقع', 'اسم_موقع', 'SITENAME' ),
+ 'ns' => array( '0', 'نط:', 'NS:' ),
+ 'nse' => array( '0', 'نطم:', 'NSE:' ),
'localurl' => array( '0', 'مسار_محلى:', 'مسار_محلي:', 'LOCALURL:' ),
- 'localurle' => array( '0', 'عنوان_المسار_المحلى:', 'عنوان_مسار_محلى:', 'عنوان_المسار_المحلي:', 'عنوان_مسار_محلي:', 'LOCALURLE:' ),
- 'server' => array( '0', 'خادم', 'خادم', 'SERVER' ),
- 'servername' => array( '0', 'اسم_الخادم', 'اسم_خادم', 'اسم_الخادم', 'اسم_خادم', 'SERVERNAME' ),
- 'scriptpath' => array( '0', 'مسار_السكريبت', 'مسار_سكريبت', 'مسار_السكريبت', 'مسار_سكريبت', 'SCRIPTPATH' ),
- 'grammar' => array( '0', 'قواعد_اللغة:', 'قواعد_لغة:', 'قواعد_اللغة:', 'قواعد_لغة:', 'GRAMMAR:' ),
- 'notitleconvert' => array( '0', '__لاتحويل_عنوان__', '__لاتع__', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ),
- 'nocontentconvert' => array( '0', '__لاتحويل_محتوى__', '__لاتم__', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( '1', 'أسبوع_حالى', 'أسبوع', 'أسبوع_حالي', 'أسبوع', 'CURRENTWEEK' ),
+ 'localurle' => array( '0', 'عنوان_المسار_المحلى:', 'عنوان_المسار_المحلي:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'خادم', 'SERVER' ),
+ 'servername' => array( '0', 'اسم_الخادم', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'مسار_السكريبت', 'مسار_سكريبت', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'مسار_الهيئة', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'قواعد_اللغة:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'نوع:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'أسبوع_حالى', 'أسبوع_حالي', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'يوم_حالى_مأ', 'يوم_حالي_مأ', 'CURRENTDOW' ),
'localweek' => array( '1', 'أسبوع_محلى', 'أسبوع_محلي', 'LOCALWEEK' ),
'localdow' => array( '1', 'يوم_محلى_مأ', 'يوم_محلي_مأ', 'LOCALDOW' ),
- 'revisionid' => array( '1', 'رقم_النسخة', 'رقم_نسخة', 'رقم_النسخة', 'رقم_نسخة', 'REVISIONID' ),
- 'revisionday' => array( '1', 'يوم_النسخة', 'يوم_نسخة', 'يوم_النسخة', 'يوم_نسخة', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'يوم_النسخة2', 'يوم_نسخة2', 'يوم_النسخة2', 'يوم_نسخة2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( '1', 'شهر_النسخة', 'شهر_نسخة', 'شهر_النسخة', 'شهر_نسخة', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'عام_النسخة', 'عام_نسخة', 'عام_النسخة', 'عام_نسخة', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( '1', 'طابع_وقت_النسخة', 'طابع_وقت_نسخة', 'طابع_وقت_النسخة', 'طابع_وقت_نسخة', 'REVISIONTIMESTAMP' ),
- 'plural' => array( '0', 'جمع:', 'جمع:', 'PLURAL:' ),
- 'fullurl' => array( '0', 'عنوان_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
- 'fullurle' => array( '0', 'مسار_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
- 'lcfirst' => array( '0', 'عنوان_كبير:', 'عنوان_كبير:', 'LCFIRST:' ),
- 'ucfirst' => array( '0', 'عنوان_صغير:', 'عنوان_صغير:', 'UCFIRST:' ),
- 'lc' => array( '0', 'صغير:', 'صغير:', 'LC:' ),
- 'uc' => array( '0', 'كبير:', 'كبير:', 'UC:' ),
- 'raw' => array( '0', 'خام:', 'خام:', 'RAW:' ),
- 'displaytitle' => array( '1', 'عرض_العنوان', 'عرض_عنوان', 'عرض_العنوان', 'عرض_عنوان', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( '1', 'أر', 'آر', 'أر', 'آر', 'R' ),
- 'newsectionlink' => array( '1', '__وصلة_قسم_جديد__', '__وصلة_قسم_جديد__', '__NEWSECTIONLINK__' ),
- 'currentversion' => array( '1', 'نسخة_حالية', 'نسخة_حالية', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'كود_المسار:', 'كود_مسار:', 'كود_المسار:', 'كود_مسار:', 'URLENCODE:' ),
- 'anchorencode' => array( '0', 'كود_الأنكور', 'كود_أنكور', 'كود_الأنكور', 'كود_أنكور', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( '1', 'طابع_الوقت_الحالي', 'طابع_وقت_حالي', 'طابع_الوقت_الحالي', 'طابع_وقت_حالي', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( '1', 'طابع_الوقت_المحلى', 'طابع_وقت_محلى', 'طابع_الوقت_المحلي', 'طابع_وقت_محلي', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( '1', 'علامة_الاتجاه', 'علامة_اتجاه', 'علامة_الاتجاه', 'علامة_اتجاه', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( '0', '#لغة:', '#لغة:', '#LANGUAGE:' ),
- 'contentlanguage' => array( '1', 'لغة_المحتوى', 'لغة_محتوى', 'لغة_المحتوى', 'لغة_محتوى', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'revisionid' => array( '1', 'رقم_المراجعة', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'يوم_المراجعة', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'يوم_المراجعة2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'شهر_المراجعة', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'عام_المراجعة', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'جمع:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'مسار_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'عنوان_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'عنوان_كبير:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'عنوان_صغير:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'صغير:', 'LC:' ),
+ 'uc' => array( '0', 'كبير:', 'UC:' ),
+ 'raw' => array( '0', 'خام:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'عرض_العنوان', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'أر', 'آر', 'R' ),
+ 'newsectionlink' => array( '1', '__وصلة_قسم_جديد__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__لا_وصلة_قسم_جديد__', 'لا_وصلة_قسم_جديد__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'نسخة_حالية', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'كود_المسار:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'كود_الأنكور', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'طابع_الوقت_الحالي', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'طابع_الوقت_المحلى', 'طابع_الوقت_المحلي', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'علامة_الاتجاه', 'علامة_اتجاه', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#لغة:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'لغة_المحتوى', 'لغة_محتوى', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
'pagesinnamespace' => array( '1', 'صفحات_فى_نطاق:', 'صفحات_فى_نط:', 'صفحات_في_نطاق:', 'صفحات_في_نط:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( '1', 'عدد_الإداريين', 'عدد_إداريين', 'عدد_الإداريين', 'عدد_إداريين', 'NUMBEROFADMINS' ),
- 'formatnum' => array( '0', 'صيغة_رقم', 'صيغة_رقم', 'FORMATNUM' ),
- 'padleft' => array( '0', 'باد_يسار', 'باد_يسار', 'PADLEFT' ),
- 'padright' => array( '0', 'باد_يمين', 'باد_يمين', 'PADRIGHT' ),
- 'special' => array( '0', 'خاص', 'خاص', 'special' ),
+ 'numberofadmins' => array( '1', 'عدد_الإداريين', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'صيغة_رقم', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'باد_يسار', 'PADLEFT' ),
+ 'padright' => array( '0', 'باد_يمين', 'PADRIGHT' ),
+ 'special' => array( '0', 'خاص', 'special' ),
'defaultsort' => array( '1', 'ترتيب_قياسى:', 'ترتيب_افتراضى:', 'مفتاح_ترتيب_قياسى:', 'مفتاح_ترتيب_افتراضى:', 'ترتيب_تصنيف_قياسى:', 'ترتيب_تصنيف_افتراضى:', 'ترتيب_قياسي:', 'ترتيب_افتراضي:', 'مفتاح_ترتيب_قياسي:', 'مفتاح_ترتيب_افتراضي:', 'ترتيب_تصنيف_قياسي:', 'ترتيب_تصنيف_افتراضي:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( '0', 'مسار_الملف:', 'مسار_ملف:', 'مسار_الملف:', 'مسار_ملف:', 'FILEPATH:' ),
- 'tag' => array( '0', 'وسم', 'وسم', 'tag' ),
- 'hiddencat' => array( '1', '__تصنيف_مخفى__', '__تصنيف_مخفي__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'صفحات_فى_التصنيف', 'صفحات في التصنيف', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( '1', 'حجم_الصفحة', 'حجم_صفحة', 'حجم_الصفحة', 'حجم_صفحة', 'PAGESIZE' ),
- 'index' => array( '1', '__فهرسة__', '__فهرسة__', '__INDEX__' ),
- 'noindex' => array( '1', '__لافهرسة__', '__لافهرسة__', '__NOINDEX__' ),
+ 'filepath' => array( '0', 'مسار_الملف:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'وسم', 'tag' ),
+ 'hiddencat' => array( '1', '__تصنيف_مخفي__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'صفحات_فى_التصنيف', 'صفحات في التصنيف', 'صفحات_في_التصنيف', 'صفحات_في_تصنيف', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'حجم_الصفحة', 'PAGESIZE' ),
+ 'index' => array( '1', '__فهرسة__', '__INDEX__' ),
+ 'noindex' => array( '1', '__لافهرسة__', '__NOINDEX__' ),
'numberingroup' => array( '1', 'عدد_فى_المجموعة', 'عدد_فى_مجموعة', 'عدد_في_المجموعة', 'عدد_في_مجموعة', 'NUMBERINGROUP', 'NUMINGROUP' ),
- 'staticredirect' => array( '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ),
- 'protectionlevel' => array( '1', 'مستوى_الحماية', 'مستوى_حماية', 'PROTECTIONLEVEL' ),
+ 'staticredirect' => array( '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
'DoubleRedirects' => array( 'تحويلات_مزدوجة' ),
'BrokenRedirects' => array( 'تحويلات_مكسورة' ),
'Disambiguations' => array( 'توضيحات' ),
- 'Userlogin' => array( 'دخول_المستخدم' ),
- 'Userlogout' => array( 'خروج_المستخدم' ),
+ 'Userlogin' => array( 'دخول_اليوزر' ),
+ 'Userlogout' => array( 'خروج_اليوزر' ),
'CreateAccount' => array( 'إنشاء_حساب' ),
'Preferences' => array( 'تفضيلات' ),
'Watchlist' => array( 'قايمة_المراقبة' ),
- 'Recentchanges' => array( 'أحدث_التغييرات' ),
+ 'Recentchanges' => array( 'اخر_التعديلات' ),
'Upload' => array( 'رفع' ),
'Listfiles' => array( 'عرض_الملفات', 'قايمة_الملفات', 'قايمة_الصور' ),
'Newimages' => array( 'ملفات_جديدة', 'صور_جديدة' ),
@@ -212,12 +221,12 @@ $specialPageAliases = array(
'Statistics' => array( 'إحصائيات' ),
'Randompage' => array( 'عشوائي', 'صفحة_عشوائية' ),
'Lonelypages' => array( 'صفحات_وحيدة', 'صفحات_يتيمة' ),
- 'Uncategorizedpages' => array( 'صفحات_غير_مصنفة' ),
- 'Uncategorizedcategories' => array( 'تصنيفات_غير_مصنفة' ),
- 'Uncategorizedimages' => array( 'ملفات_غير_مصنفة', 'صور_غير_مصنفة' ),
- 'Uncategorizedtemplates' => array( 'قوالب_غير_مصنفة' ),
- 'Unusedcategories' => array( 'تصنيفات_غير_مستخدمة' ),
- 'Unusedimages' => array( 'ملفات_غير_مستخدمة', 'صور_غير_مستخدمة' ),
+ 'Uncategorizedpages' => array( 'صفحات_مش_مصنفة' ),
+ 'Uncategorizedcategories' => array( 'تصنيفات_مش_مصنفة' ),
+ 'Uncategorizedimages' => array( 'ملفات_مش_مصنفة', 'صور_مش_مصنفة' ),
+ 'Uncategorizedtemplates' => array( 'قوالب_مش_مصنفة' ),
+ 'Unusedcategories' => array( 'تصنيفات_مش_مستخدمة' ),
+ 'Unusedimages' => array( 'ملفات_مش_مستخدمة', 'صور_مش_مستخدمة' ),
'Wantedpages' => array( 'صفحات_مطلوبة', 'وصلات_مكسورة' ),
'Wantedcategories' => array( 'تصنيفات_مطلوبة' ),
'Wantedfiles' => array( 'ملفات_مطلوبة' ),
@@ -258,13 +267,13 @@ $specialPageAliases = array(
'Import' => array( 'استيراد' ),
'Lockdb' => array( 'قفل_قب' ),
'Unlockdb' => array( 'فتح_قب' ),
- 'Userrights' => array( 'صلاحيات_المستخدم' ),
+ 'Userrights' => array( 'صلاحيات_المستخدم', 'ترقية_مدير_نظام', 'ترقية_بوت' ),
'MIMEsearch' => array( 'بحث_ميم' ),
'FileDuplicateSearch' => array( 'بحث_ملف_مكرر' ),
- 'Unwatchedpages' => array( 'صفحات_غير_مراقبة' ),
+ 'Unwatchedpages' => array( 'صفحات_مش_مراقبة' ),
'Listredirects' => array( 'عرض_التحويلات' ),
'Revisiondelete' => array( 'حذف_نسخة' ),
- 'Unusedtemplates' => array( 'قوالب_غير_مستخدمة' ),
+ 'Unusedtemplates' => array( 'قوالب_مش_مستخدمة' ),
'Randomredirect' => array( 'تحويلة_عشوائية' ),
'Mypage' => array( 'صفحتى' ),
'Mytalk' => array( 'نقاشى' ),
@@ -282,6 +291,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'بحث_الوصلات' ),
'DeletedContributions' => array( 'مساهمات_محذوفة' ),
'Tags' => array( 'وسوم' ),
+ 'Activeusers' => array( 'مستخدمون_نشطون' ),
);
$messages = array(
@@ -315,6 +325,7 @@ $messages = array(
'tog-enotifminoredits' => 'ابعتلى ايميل للتعديلات الصغيره للصفحات',
'tog-enotifrevealaddr' => 'بين الايميل بتاعى فى ايميلات الاعلام',
'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
+'tog-oldsig' => 'بروفه للامضا الحاليه',
'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
'tog-externaleditor' => 'استعمل محرر خارجى افتراضيا',
'tog-externaldiff' => 'استعمل فرق خارجى افتراضيا',
@@ -338,6 +349,13 @@ $messages = array(
'underline-never' => 'ابدا',
'underline-default' => 'على حسب إعدادات المتصفح',
+# Font style option in Special:Preferences
+'editfont-style' => ':الفونت بتاع مساحة التعديل',
+'editfont-default' => 'حسب إعدادات البراوزر',
+'editfont-monospace' => 'فونت Monospaced',
+'editfont-sansserif' => 'فونت Sans-serif',
+'editfont-serif' => 'فونت Serif',
+
# Dates
'sunday' => 'الحد',
'monday' => 'الاتنين',
@@ -397,7 +415,7 @@ $messages = array(
'category-media-header' => 'ملفات الميديا فى التصنيف "$1"',
'category-empty' => "''التصنيف ده مافيهوش حاليا مقالات او ملفات ميديا.''",
'hidden-categories' => '{{PLURAL:$1|تصنيف مستخبي|تصنيفات مستخبية}}',
-'hidden-category-category' => 'تصنيفات مستخبية', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'تصنيفات مستخبية',
'category-subcat-count' => '{{PLURAL:$2| التصنيف دا فيه التصنيف الفرعى الجاى بس.|التصنيف دا فيه {{PLURAL:$1|تصنيف فرعى|$1 تصنيف فرعى}}، من إجمالى $2.}}',
'category-subcat-count-limited' => ' التصنيف دا فيه {{PLURAL:$1|تصنيف فرعي|$1 تصنيف فرعي}} كدا.',
'category-article-count' => '{{PLURAL:$2| التصنيف دا فيه الصفحة دى بس.|تحت {{PLURAL:$1|ملف|$1 ملف}} فى التصنيف دا ، من إجمالى $2.}}',
@@ -405,6 +423,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2| التصنيف دا فيه الملف الجاى دا بس.|تحت {{PLURAL:$1|ملف|$1 ملف}} فى التصنيف دا، من إجمالى $2.}}',
'category-file-count-limited' => 'تحت {{PLURAL:$1|ملف|$1 ملف}} فى التصنيف الحالى.',
'listingcontinuesabbrev' => 'متابعه',
+'index-category' => 'صفحات متفهرسه',
+'noindex-category' => 'صفحات مش متفهرسه',
'mainpagetext' => "''' ميدياويكى اتنزلت بنجاح.'''",
'mainpagedocfooter' => 'اسال [http://meta.wikimedia.org/wiki/Help:Contents دليل اليوزر] للمعلومات حوالين استخدام برنامج الويكى.
@@ -415,10 +435,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ أسئلة بتكرر حوالين الميدياويكى]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لستة الايميلات بتاعة اعلانات الميدياويكى]',
-'about' => 'عن',
-'article' => 'صفحة محتوى',
-'newwindow' => '(بتفتح ويندو جديده)',
-'cancel' => 'كانسل',
+'about' => 'عن',
+'article' => 'صفحة محتوى',
+'newwindow' => '(بتفتح ويندو جديده)',
+'cancel' => 'كانسل',
+'moredotdotdot' => 'اكتر...',
+'mypage' => 'صفحتى',
+'mytalk' => 'مناقشاتى',
+'anontalk' => 'المناقشة مع عنوان الأيبى دا',
+'navigation' => 'استكشاف',
+'and' => '&#32;و',
+
+# Cologne Blue skin
'qbfind' => 'تدوير',
'qbbrowse' => 'تصفح',
'qbedit' => 'عدل',
@@ -426,15 +454,35 @@ $messages = array(
'qbpageinfo' => 'السياق',
'qbmyoptions' => 'صفحاتى',
'qbspecialpages' => 'الصفحات الخاصة',
-'moredotdotdot' => 'اكتر...',
-'mypage' => 'صفحتى',
-'mytalk' => 'مناقشاتى',
-'anontalk' => 'المناقشة مع عنوان الأيبى دا',
-'navigation' => 'استكشاف',
-'and' => '&#32;و',
-
-# Metadata in edit box
-'metadata_help' => 'ميتا داتا:',
+'faq' => 'اسئله بتتسئل كتير',
+'faqpage' => 'Project:اسئله بتتسئل كتير',
+
+# Vector skin
+'vector-action-addsection' => 'ضيف موضوع',
+'vector-action-delete' => 'مسح',
+'vector-action-move' => 'نقل',
+'vector-action-protect' => 'حمايه',
+'vector-action-undelete' => 'الغى المسح',
+'vector-action-unprotect' => 'الغى الحمايه',
+'vector-namespace-category' => 'تصنيف',
+'vector-namespace-help' => 'صفحة مساعده',
+'vector-namespace-image' => 'ملف',
+'vector-namespace-main' => 'صفحه',
+'vector-namespace-media' => 'صفحة ميديا',
+'vector-namespace-mediawiki' => 'رساله',
+'vector-namespace-project' => 'صفحة مشروع',
+'vector-namespace-special' => 'صفحه مخصوصه',
+'vector-namespace-talk' => 'نقاش',
+'vector-namespace-template' => 'قالب',
+'vector-namespace-user' => 'صفحة يوزر',
+'vector-view-create' => 'اعمل',
+'vector-view-edit' => 'تعديل',
+'vector-view-history' => 'استعراض التاريخ',
+'vector-view-view' => 'قرايه',
+'vector-view-viewsource' => 'استعراض المصدر',
+'actions' => 'أعمال',
+'namespaces' => 'النطاقات',
+'variants' => 'المتغيرات',
'errorpagetitle' => 'غلطه',
'returnto' => 'ارجع ل $1.',
@@ -484,18 +532,22 @@ $messages = array(
'otherlanguages' => 'بلغات تانيه',
'redirectedfrom' => '(تحويل من $1)',
'redirectpagesub' => 'صفحة تحويل',
-'lastmodifiedat' => 'الصفحه دى اتعدلت اخر مره فى $1,‏ $2.', # $1 date, $2 time
+'lastmodifiedat' => 'الصفحه دى اتعدلت اخر مره فى $1,‏ $2.',
'viewcount' => 'الصفحة دى اتدخل عليها{{PLURAL:$1|مرة واحدة|مرتين|$1 مرات|$1 مرة}}.',
'protectedpage' => 'صفحه محميه',
'jumpto' => 'نُط على:',
'jumptonavigation' => 'استكشاف',
'jumptosearch' => 'تدوير',
+'view-pool-error' => 'متأسفين, السيرفرات عليها حمل كبير دلوقتى.
+فى يوزرات كتير قوى بيحاولو يشوفو الصفحه دى.
+لو سمحت تستنا شويه قبل ما تحاول تستعرض الصفحه دى من تانى.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'عن {{SITENAME}}',
'aboutpage' => 'Project:معلومات عن',
'copyright' => 'المحتوى موجود تحت $1.',
-'copyrightpagename' => 'حقوق النسخ فى {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:حقوق النسخ',
'currentevents' => 'الاخبار دلوقتى',
'currentevents-url' => 'Project:الاخبار دلوقتى',
@@ -503,8 +555,6 @@ $messages = array(
'disclaimerpage' => 'Project:تنازل عن مسئوليه عمومى',
'edithelp' => 'مساعده فى التعديل',
'edithelppage' => 'Help:تعديل',
-'faq' => 'اسئله بتتسئل كتير',
-'faqpage' => 'Project:اسئله بتتسئل كتير',
'helppage' => 'Help:محتويات',
'mainpage' => 'الصفحه الرئيسيه',
'mainpage-description' => 'الصفحه الرئيسيه',
@@ -585,10 +635,6 @@ $messages = array(
"$1"
من جوه الخاصيه "$2".
قاعدة البيانات رجعت الغلط "$3: $4"',
-'noconnect' => 'الويكى عندها شوية مشاكل فنية و مش قادرة توصل بسيرفر الداتابيز. <br />
-$1',
-'nodb' => 'ماقدرناش نختار قاعدة البيانات $1',
-'cachederror' => 'دى نسخة متخبية من الصفحة اللى طلبتها، و ممكن ما تكونش متحدثة.',
'laggedslavemode' => "'''تحذير:''' الصفحه يمكن ما يكونش فيها تحديثات جديده.",
'readonly' => 'قاعدة البيانات (الـ database) مقفوله',
'enterlockreason' => 'اكتب سبب القفل, و قول امتى تقريبا ح يتلغى القفل',
@@ -607,6 +653,7 @@ $1',
'readonly_lag' => 'قاعدة البيانات (الـ database) اتقفلت اوتوماتيكى علشان تقدر السيرڤرات الـ slave تلحق السيرڤر الـ master',
'internalerror' => 'غلط جوّانى',
'internalerror_info' => 'غلط جوّانى: $1',
+'fileappenderror' => 'ماقدرناش نضيف "$1" على "$2".',
'filecopyerror' => 'ما نفع ش يتنسخ الفايل "$1" لـ "$2".',
'filerenameerror' => 'ما نفع ش يتغير اسم الفايل "$1" لـ "$2".',
'filedeleteerror' => 'ما نفع ش يتمسح الفايل "$1".',
@@ -616,7 +663,8 @@ $1',
'unexpected' => 'قيمه مش متوقعه: "$1"="$2".',
'formerror' => 'غلط: ما نفعت ش تتقدم الاستماره',
'badarticleerror' => 'مش ممكن تتفذ العمليه دى على الصفحه دى',
-'cannotdelete' => 'ما قدرناش نمسح الصفحة أو الملف المطلوب. (ممكن يكون حد تانى مسحه. )',
+'cannotdelete' => 'مش نافع مسح الصفحه او الفايل "$1".
+ممكن يكون حد تانى مسحها/مسحه قبل كده.',
'badtitle' => 'عنوان غلط',
'badtitletext' => 'العنوان المطلوب للصفحه مش موجود او فاضى, او اللينك بين اللغات او بين المشاريع غلط.
ممكن يكون موجود رمز او اكتر ما ينفع ش يستخدم فى العناوين.',
@@ -649,7 +697,6 @@ $2',
'virus-unknownscanner' => 'انتى فيروس مش معروف:',
# Login and logout pages
-'logouttitle' => 'خروج اليوزر',
'logouttext' => "'''أنت دلوقتى مش مسجل دخولك.'''
تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تاني.
@@ -657,7 +704,6 @@ $2',
'welcomecreation' => '== اهلاً و سهلا يا $1! ==
اتفتحلك حساب.
ما تنساش تغير [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].',
-'loginpagetitle' => 'دخول اليوزر',
'yourname' => 'اليوزرنيم:',
'yourpassword' => 'الباسوورد:',
'yourpasswordagain' => 'اكتب الباسورد تاني:',
@@ -668,6 +714,7 @@ $2',
'nav-login-createaccount' => 'تسجيل دخول / فتح حساب',
'loginprompt' => 'لازم تكون الكوكيز عندك مفعله علشان تقدر تدخل ل {{SITENAME}}.',
'userlogin' => 'دخول / فتح حساب',
+'userloginnocreate' => 'دخول',
'logout' => 'خروج',
'userlogout' => 'خروج',
'notloggedin' => 'انت مش مسجل دخولك',
@@ -680,30 +727,8 @@ $2',
'badretype' => 'كلمتين السر اللى كتبتهم مش زى بعضهم',
'userexists' => 'اسم اليوزر اللى دخلته بيستعمله يوزر غيرك.
دخل اسم تانى.',
-'youremail' => 'الايميل:',
-'username' => 'اسم اليوزر:',
-'uid' => 'رقم اليوزر:',
-'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
-'yourrealname' => 'الاسم الحقيقى:',
-'yourlanguage' => 'اللغة:',
-'yourvariant' => 'اللهجة:',
-'yournick' => 'الإمضا:',
-'badsig' => 'الامضا الخام بتاعتك مش صح.
-اتإكد من التاجز بتاعة الHTML.',
-'badsiglength' => 'الامضا بتاعتك اطول م اللازم.
-لازم تكون اصغر من$1 {{PLURAL:$1|حرف|حرف}}.',
-'yourgender' => 'النوع:',
-'gender-unknown' => 'مش متحدد',
-'gender-male' => 'ذكر',
-'gender-female' => 'انثى',
-'prefs-help-gender' => 'اختياري: بيستعملوه فى المخاطبة المعتمدة على النوع بالسوفتوير. المعلومه دى ح تكون علنيه.',
-'email' => 'الإيميل',
-'prefs-help-realname' => 'الاسم الحقيقى اختيارى.
-لو إخترت تكتبه, حيستعمل بس علشان شغلك يتنسب لإسمك.',
'loginerror' => 'غلط فى الدخول',
-'prefs-help-email' => 'الإيميل اختيارى, بس لازم علشان لو نسيت الپاسوورد.
-ممكن بردو تختار انك تخلّى اليوزرات تبعتلك إيميل من صفحة اليوزر او المناقشه بتاعتك من غير ما تبقى شخصيتك معروفه.',
-'prefs-help-email-required' => 'عنوان الإيميل مطلوب.',
+'createaccounterror' => 'مش قادر يعمل الحساب: $1',
'nocookiesnew' => 'اليوزر خلاص اتفتح له حساب، بس انت لسة ما سجلتش دخولك.
بيستخدم {{SITENAME}} كوكيز عشان يسجل الدخول.
الكوكيز عندك متعطلة.
@@ -720,11 +745,12 @@ $2',
'nosuchusershort' => 'مافيش يوزر باسم <nowiki>$1</nowiki>".
اتاكد من تهجية الاسم.',
'nouserspecified' => 'لازم تحدد اسم يوزر.',
+'login-userblocked' => 'اليوزر دا ممنوع من الدخول.',
'wrongpassword' => 'كلمة السر اللى كتبتها مش صحيحه. من فضلك حاول تانى.',
'wrongpasswordempty' => 'كلمة السر المدخله كانت فاضيه.
من فضلك حاول تانى.',
-'passwordtooshort' => 'كلمة السر اللى اخترتها مش صحيحه أو قصيره قوي.
-لازم مايقلش طول الكلمه عن {{PLURAL:$1|1 حرف|$1 حرف}} وتكون مختلفه عن اسم اليوزر بتاعك.',
+'passwordtooshort' => 'لازم تكون على الاقل{{PLURAL:$1|1 حرف|$1 حروف}}.',
+'password-name-match' => 'الباسورد بتاعتك لازم تكون مختلفه عن اسم اليوزر بتاعك.',
'mailmypassword' => 'ابعتلى كلمة سر جديدة',
'passwordremindertitle' => 'كلمة سر مؤقته جديده ل {{SITENAME}}',
'passwordremindertext' => 'فيه واحد(غالبا انت، من عنوان الاى بى $1)
@@ -734,6 +760,7 @@ $2',
الباسورد المؤقته بتاعتك ح تنتهى صلاحيتها فى خلال {{PLURAL:$5|يوم واحد|$5 ايام}}.
اما لو كان فى حد تانى هوه اللى عمل الطلب ده، أو انك افتكرت الباسورد بتاعتك، وخلاص مش عايز تغيرها، ممكن تتجاهل الرساله دى وتستمر فى استخدام الباسورد القديمة بتاعتك.',
'noemail' => 'مافيش ايميل متسجل لليوزر "$1".',
+'noemailcreate' => 'لازم تكتب عنوان إيميل صح',
'passwordsent' => 'تم إرسال كلمة سر جديدة لعنوان الايميل المتسجل لليوزر "$1".
من فضلك حاول تسجيل الدخول مره تانيه بعد استلامها.',
'blocked-mailpassword' => 'عنوان الايبى بتاعك ممنوع من التحرير، و كمان مش ممكن تسعمل خاصية ترجيع الباسورد علشان نمنع التخريب.',
@@ -758,6 +785,7 @@ $2',
'createaccount-text' => 'فى واحد فتح حساب باسم الايمل بتاعك على {{SITENAME}} ($4) بالاسم "$2"، وبباسورد "$3". لازم تسجل دخولك دلوقتى و تغير الباسورد بتاعتك.
لو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.',
+'usernamehasherror' => 'اسم اليوزر مش ممكن يكون فيه حروف هاش',
'login-throttled' => 'انت عملت محاولات لوجين كتيره حديثة على الحساب ده.
من فضلك استنى قبل المحاولة مرة تانيه.',
'loginlanguagelabel' => 'اللغة: $1',
@@ -772,17 +800,13 @@ $2',
'retypenew' => 'اكتب الباسورد الجديده تانى:',
'resetpass_submit' => 'اظبط الباسورد و ادخل',
'resetpass_success' => 'الباسورد بتاعتك اتغيرت بنجاح! دلوقتى بنسجل دخولك...',
-'resetpass_bad_temporary' => 'الباسورد المؤقتة دى غلط. يمكن الباسورد الاصلية تكون اتغيرت بنحاح أو يمكن انت كنت طلبت باسورد مؤقتة جديدة.',
'resetpass_forbidden' => 'مش ممكن تغيير الباسورد',
'resetpass-no-info' => 'لازم تسجل دخولك علشان تقدر توصل للصفحة دى على طول.',
'resetpass-submit-loggedin' => 'غير الباسورد',
+'resetpass-submit-cancel' => 'الغى',
'resetpass-wrong-oldpass' => 'الباسورد الحالية او المؤقته مش صحيحة.
انتا ممكن تكون بالفعل غيرت الباسورد بتاعتك بنجاح يا إما تكون طلبت باسورد مؤقته جديدة..',
'resetpass-temp-password' => 'باسورد مؤقته:',
-'resetpass-log' => 'سجل ضبط الباسوورد',
-'resetpass-logtext' => 'تحت سجل اليوزرات اللى كلمات السر بتاعتهم غيرها سيسوب.',
-'resetpass-logentry' => 'غير كلمه السر بتاعه $1',
-'resetpass-comment' => 'سبب ضبط الباسوورد:',
# Edit page toolbar
'bold_sample' => 'حروف عريضه',
@@ -855,7 +879,6 @@ $2',
'blockededitsource' => "نص '''تعديلاتك''' فى '''$1''' معروض هنا:",
'whitelistedittitle' => 'لازم تسجل دخولك علشان تقدر تعدل',
'whitelistedittext' => 'لازم $1 علشان تقدر تعدل الصفحات.',
-'confirmedittitle' => 'علشان تبتدى تعدل، لازم نتاكد من الايميل بتاعك',
'confirmedittext' => 'قبل ما تبتدى تعدل لازم نتأكد من الايميل بتاعك. لو سمحت تكتب وتأكد الايميل بتاعك في[[Special:Preferences|تفضيلاتك]]',
'nosuchsectiontitle' => 'مافيش قسم بالاسم ده',
'nosuchsectiontext' => 'انت حاولت تعدّل جزء مش موجود.
@@ -880,9 +903,16 @@ $2',
ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصفحه دى]] فى صفح تانيه,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور فى السجلات اللى ليها علاقه],
او [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعدل الصفحه دى]</span>.',
+'noarticletext-nopermission' => 'مفيش اى نص دلوقتى فى الصفحه دى.
+ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصفحه دى]] فى الصفحات التانيه,
+او <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور فى السجلات بتاعتها]</span>.',
'userpage-userdoesnotexist' => 'حساب اليوزر "$1" مش متسجل. لو سمحت تشوف لو عايز تبتدي/تعدل الصفحة دي.',
+'userpage-userdoesnotexist-view' => 'حساب اليوزر "$1" مش متسجل',
+'blocked-notice-logextract' => 'اليوزر ده معمول له بلوك دلوقتى.
+اخر بلوك فى السجل موجود تحت للمراجعه:',
'clearyourcache' => "'''ملاحظة - بعد التسييف, يمكن لازم تفرغ كاش متصفحك علشان تشوف التغييرات.''' '''موزيللا / فايرفوكس / سافارى:''' دوس على ''Shift'' فى نفس الوقت دوس على ''Reload,'' أو دوس على اما ''Ctrl-F5'' أو ''Ctrl-R'' (''Command-R'' على ماكنتوش); '''كونكرر: '''دوس على ''Reload'' أو دوس على ''F5;'' '''أوبرا:''' فرغ الكاش فى ''Tools → Preferences;'' '''إنترنت إكسبلورر:''' دوس على ''Ctrl'' فى نفس الوقت دوس على ''Refresh,'' أو دوس على ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''ملاحظة:''' استعمل زرار ' عرض بروفة' علشان تجرب النمط (CSS) أو الجافا سكريبت الجديد قبل تسييڤ الصفحه.",
+'usercssyoucanpreview' => "'''ملاحظة:''' استعمل زرار \"{{int:showpreview}}\" علشان تجرب النمط (CSS) أو الجافا سكريبت الجديد قبل تسييڤ الصفحه.",
+'userjsyoucanpreview' => "'''ملاحظة:''' استعمل زرار \"{{int:showpreview}}\" علشان تجرب النمط (CSS) أو الجافا سكريبت الجديد قبل تسييڤ الصفحه.",
'usercsspreview' => "'''افتكر انك بتعرض (CSS) بتاع اليوزر بس.
هى لسه ماتسييڤتش!'''",
'userjspreview' => "'''أفتكر أنك بس بتجرب/بتعرض الجافا سكريبت بتاع اليوزر بتاعك، و انها لسة ماتحفظتش!'''",
@@ -936,13 +966,16 @@ $2',
لو حبيت ممكن تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''
الإدارى اللى أغلقها أعطى هذا التفسير: $1",
-'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرز السيسوبات هم بس اللى يقدرو يعدلوها.'''",
-'semiprotectedpagewarning' => "'''ملاحظة:''' الصفحة دى اتقفلت بطريقة تخلى اليوزرز المتسجلين بس هم اللى يقدرو يعدلوها.",
+'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''
+اخر سجل محطوط تحت علشان المراجعه:",
+'semiprotectedpagewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.
+اخر سجل محطوط تحت علشان المراجعه:",
'cascadeprotectedwarning' => '<strong>تحذير: الصفحة دى اتقفلت بطريقة تخلى اليوزرز السيوبات بس هم اللى يقدرو يعدلوها، ودا علشان هى مدموجة فى {{PLURAL:$1|الصفحة|الصفحات}} التالية واللى اتعملها حمتية بخاصية "حماية الصفحات المدموجة":</strong>',
-'titleprotectedwarning' => "تحذير: الصفحة اتحمت علشان مش كل اليوزرز يقدرو يبتدوها .'''",
-'templatesused' => 'القوالب المستعمله فى الصفحه دى:',
-'templatesusedpreview' => 'القوالب المستعمله فى البروفه دى:',
-'templatesusedsection' => 'القوالب اللى بتستخدم فى القسم دا:',
+'titleprotectedwarning' => "'''تحذير: الصفحه دى اتحمت بطريقه تخلّى [[Special:ListGroupRights|حقوق متحدده]] لازم تحتاجها علشان تعمل الصفحه.'''
+اخر سجل محطوط تحت علشان المراجعه:",
+'templatesused' => '{{PLURAL:$1|القالب المستعمل |القوالب المستعمله }}ا فى الصفحه دى:',
+'templatesusedpreview' => '{{PLURAL:$1|القالب المستعمل |القوالب المستعمله}} فى البروفه دى',
+'templatesusedsection' => '{{PLURAL:$1|القالب|القوالب}} اللى بتستخدم فى القسم دا:',
'template-protected' => '(حمايه كامله)',
'template-semiprotected' => '(حمايه جزئيه )',
'hiddencategories' => 'الصفحه دى موجوده فى {{PLURAL:$1|تصنيف مخفى واحد|$1 تصنيف مخفى}}:',
@@ -951,14 +984,16 @@ $2',
'nocreatetext' => '{{SITENAME}} حدد القدره على انشاء صفحات جديده.
ممكن ترجع وتحرر صفحه موجوده بالفعل، او [[Special:UserLogin|الدخول / فتح حساب]].',
'nocreate-loggedin' => 'انت ما عندك ش صلاحية تعمل صفحات جديدة.',
+'sectioneditnotsupported-title' => 'تعديل الأقسام مش مدعوم',
+'sectioneditnotsupported-text' => 'تعديل الاقسام مش مدعوم فى الصفحه دى',
'permissionserrors' => 'غلطات فى السماح',
'permissionserrorstext' => 'ما عندك ش صلاحية تعمل كدا،{{PLURAL:$1|علشان|علشان}}:',
'permissionserrorstext-withaction' => 'أنت ما عندكش الصلاحيات علشان $2، لل{{PLURAL:$1|سبب|أسباب}} ده:',
-'recreate-deleted-warn' => "'''تحذير: انت بتعيد انشاء صفحه اتمسحت قبل كده.'''
+'recreate-moveddeleted-warn' => "'''تحذير: انت بتعيد انشاء صفحه اتمسحت قبل كده.'''
لازم تتأكد من ان الاستمرار فى تحرير الصفحه دى ملائم.
-سجل الحذف للصفحه دى معروض هنا:",
-'deleted-notice' => 'الصفحة دى اتحذفت. سجل الحذف للصفحة معروض تحت علشان ترجعله.',
-'deletelog-fulllog' => 'عرض السجل الكامل',
+سجلات الحذف و النقل بتوع الصفحه دى معروضه هنا:",
+'moveddeleted-notice' => 'الصفحة دى اتمسحت. سجل المسح و سجل النقل بتوع الصفحة معروضين تحت علشان ترجعلهم.',
+'log-fulllog' => 'استعراض السجل بالكامل',
'edit-hook-aborted' => 'الخطاف ساب التعديل من غير مايدى تفسير.',
'edit-gone-missing' => 'لم يمكن تحديث الصفحة.
يبدو أنه تم حذفها.',
@@ -980,6 +1015,7 @@ $2',
'post-expand-template-argument-category' => 'صفحات فيها مناقشات القالب المحذوفة',
'parser-template-loop-warning' => 'لووب القالب المحدد: [[$1]]',
'parser-template-recursion-depth-warning' => 'حد عمق الريكيرشيون بتاع القالب اتعدى ($1)',
+'language-converter-depth-warning' => 'حد عمق محول اللغه اتعدى ($1)',
# "Undo" feature
'undo-success' => 'ممكن ترجع فى التعديل.
@@ -1000,7 +1036,7 @@ $2',
'currentrev' => 'النسخه دلوقتى',
'currentrev-asof' => 'المراجعة الحالية بتاريخ $1',
'revisionasof' => 'تعديلات من $1',
-'revision-info' => 'نسخه $1 بواسطة $2', # Additionally available: $3: revision id
+'revision-info' => 'نسخه $1 بواسطة $2',
'previousrevision' => '←نسخه اقدم',
'nextrevision' => 'نسخه احدث→',
'currentrevisionlink' => 'النسخه دلوقتى',
@@ -1013,7 +1049,7 @@ $2',
مفتاح: (دلوقتى) = الفرق مع النسخة دلوقتى
(اللى قبل كده) = الفرق مع النسخة اللى قبل كده، ص = تعديل صغير',
'history-fieldset-title' => 'تصفح التاريخ',
-'deletedrev' => '[ممسوحة]',
+'history-show-deleted' => 'محذوف بس',
'histfirst' => 'اول',
'histlast' => 'آخر',
'historysize' => '({{PLURAL:$1|1 بايت|$1 بايت}})',
@@ -1022,71 +1058,111 @@ $2',
# Revision feed
'history-feed-title' => 'تاريخ المراجعة',
'history-feed-description' => 'تاريخ التعديل بتاع الصفحة دى على الويكي',
-'history-feed-item-nocomment' => '$1 فى $2', # user at time
+'history-feed-item-nocomment' => '$1 فى $2',
'history-feed-empty' => 'الصفحة المطلوبة مش موجودة.
من المحتمل تكون الصفحة أتمسحت أو أتنقلت.
حاول [[Special:Search|التدوير فى الويكى]] عن صفحات جديدة ليها صلة.',
# Revision deletion
-'rev-deleted-comment' => '(التعليق اتشال)',
-'rev-deleted-user' => '(اسم اليوزر اتشال)',
-'rev-deleted-event' => '(السجل إتشال)',
-'rev-deleted-text-permission' => 'مراجعة الصفحه دى إتشالت من الأرشيفات العامه.
-ممكن تكون فيه تفاصيل فى [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل المسح].',
-'rev-deleted-text-view' => 'التعديل دا اتمسح من الأرشيف العام.
-ممكن تشوف التعديل دا علشان إنت إدارى فى {{SITENAME}} .
-ممكن يكون فيه تفاصيل بخصوص دا فى [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل المسح].',
-'rev-deleted-no-diff' => 'انت ماينفش تشوف الفرق دا عشان فى واحده م المراجعات اتشالت م الارشيفات العلنيه.
-ممكن تكون فى تفاصيل فى[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل المسح].',
-'rev-deleted-unhide-diff' => "واحده من نسخ الفرق ده '''اتمسحت'''.
-ممكن تكون فيه تفاصيل فى [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].
-كسيسوب إنت ممكن [$1 تشوف الفرق] لو إنت عايز تتابع.",
-'rev-delundel' => 'عرض/تخبيه',
-'revisiondelete' => 'امسح/الغى المسح بتاع المراجعات',
-'revdelete-nooldid-title' => 'مراجعة هدف مش صح',
-'revdelete-nooldid-text' => 'أنت ياإما ما حددتش مراجعة (مراجعات) معينة كهدف للفعل دا، المراجعة المحددة مش موجودة، أو أنك بتحاول تخبى المراجعة الحالية.',
-'revdelete-nologtype-title' => 'انت ما اديتش نوع سجل',
-'revdelete-nologtype-text' => 'انت ما اديتش نوع سجل عشان تعمل العمليه دى عليه',
-'revdelete-toomanytargets-title' => 'اهداف كتيره قوى',
-'revdelete-toomanytargets-text' => 'انت حددت انواع من الاهداف اكتر م اللازم عشان تعمل العمليه دى عليها',
-'revdelete-nologid-title' => 'مدخلة السجل مش صح',
-'revdelete-nologid-text' => 'انتا يا إما ما حددتش حدث سجل مستهدف عشان تعمل العمليه دى يا المدخله اللى انتا حددتها مش موجوده.',
-'revdelete-selected' => "'''{{PLURAL:$2|المراجعه المختاره|المراجعات المختاره}} بتاعة [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:'''",
-'revdelete-text' => "'''المراجعات والأحداث الممسوحة هاتفضل تظهر فى تاريخ الصفحة والسجلات،'''
-لكن أجزاء من محتواهم مش هايكون مسموح للعامة يشوفوها.
-
-الإداريون التانين فى {{SITENAME}}هايفضل بإمكانهم رؤية المحتوى المخفى وممكن يسترجعوه من جديد من خلال الواجهة نفسها، الا اذا تم وضع قيود إضافية.",
-'revdelete-suppress-text' => "الكبت لازم ييتعمل '''بس''' فى الحالات دى:
+'rev-deleted-comment' => '(التعليق اتشال)',
+'rev-deleted-user' => '(اسم اليوزر اتشال)',
+'rev-deleted-event' => '(السجل إتشال)',
+'rev-deleted-user-contribs' => '[اسم اليوزر أو الآى بى اتشال - التعديل مخفى من المساهمات]',
+'rev-deleted-text-permission' => 'مراجعة الصفحه دى إتمسحت من الأرشيفات العامه.
+ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].',
+'rev-deleted-text-unhide' => "مراجعة الصفحه دى '''اتمسحت'''. ممكن تلاقى تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].
+لو كنت انت ادارى ممكن[$1 تشوف المراجعه دى] لو كنت عايز تكمل..",
+'rev-suppressed-text-unhide' => "نسخه الصفحه دى '''اتخبت'''.
+ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].
+كسيسوب إنت ممكن [$1 تشوف النسخه دى] لو إنت عايز تتابع.",
+'rev-deleted-text-view' => 'التعديل ده اتمسح من الأرشيف العام. ممكن تشوف التعديل ده علشان إنت إدارى فى {{SITENAME}} .
+ممكن يكون فيه تفاصيل بخصوص ده فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].',
+'rev-suppressed-text-view' => "نسخه الصفحه دى '''اتخبت'''.
+كسيسوب ممكن تشوفها؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].",
+'rev-deleted-no-diff' => "انت ماينفعش تشوف الفرق دا علشان واحده من المراجعات '''اتمسحت'''. ممكن يكون فيه تفاصيل فى[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].",
+'rev-suppressed-no-diff' => "'''انت ما تقدرش تستعرض التغيير دا لان واحده من التعديلات''' اتمسحت.",
+'rev-deleted-unhide-diff' => "واحده من مراجعات الفرق ده '''اتمسحت'''. ممكن تلاقى تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الكبت].
+انتا لو ادارى ممكن [$1 تشوف الفرق دا] لو كانت عايز تستمر",
+'rev-suppressed-unhide-diff' => "واحده من نسخ الفرق ده '''اتخبت'''.
+ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].
+كسيسوب ممكن [$1 تشوف الفرق ده] لو إنت عايز تكمل.",
+'rev-deleted-diff-view' => "واحده من نسخ الفرق ده '''اتمسحت'''.
+كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+'rev-suppressed-diff-view' => "واحده من نسخ الفرق ده '''اتخبت'''.
+كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].",
+'rev-delundel' => 'عرض/تخبيه',
+'rev-showdeleted' => 'اعرض',
+'revisiondelete' => 'امسح/الغى المسح بتاع المراجعات',
+'revdelete-nooldid-title' => 'مراجعة هدف مش صح',
+'revdelete-nooldid-text' => 'أنت ياإما ما حددتش مراجعة (مراجعات) معينة كهدف للفعل دا، المراجعة المحددة مش موجودة، أو أنك بتحاول تخبى المراجعة الحالية.',
+'revdelete-nologtype-title' => 'انت ما اديتش نوع سجل',
+'revdelete-nologtype-text' => 'انت ما اديتش نوع سجل عشان تعمل العمليه دى عليه',
+'revdelete-nologid-title' => 'مدخلة السجل مش صح',
+'revdelete-nologid-text' => 'انتا يا إما ما حددتش حدث سجل مستهدف عشان تعمل العمليه دى يا المدخله اللى انتا حددتها مش موجوده.',
+'revdelete-no-file' => 'الملف المتحدد مالوش وجود',
+'revdelete-show-file-confirm' => 'انتا متأكد من انك عايز تشوف المراجعه الممسوحه بتاعة الملف "<nowiki>$1</nowiki>" من $2 لحد $3?',
+'revdelete-show-file-submit' => 'ايوه',
+'revdelete-selected' => "'''{{PLURAL:$2|المراجعه المختاره|المراجعات المختاره}} بتاعة [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:'''",
+'revdelete-text' => "'''المراجعات و الاحداث الممسوحه ح تنيها تظهر فى تاريخ الصفحه و فى السجلات, بس فى اجزاء من محتواها مش ح تبقا متاحه لكل الناس .'''
+الاداريين التانيين فى {{SITENAME}} ح يقدرو يوصول للمحتوى المخفىو كمان ممكن يرجعو المسح عن طريق نفس الواجه دى ، الا اذا اتحطت قيود اضافيه.",
+'revdelete-confirm' => 'لو سمحت اتأكدد انك ناوى تعمل كدا, و انك فاهم اللى ح يترتب على كدا, و انك بتعمل كدا بالتوافق مع مع [[{{MediaWiki:Policy-url}}|السياسه]].',
+'revdelete-suppress-text' => "الكبت لازم ييتعمل '''بس''' فى الحالات دى:
* معلومات شخصيه مش مناسبه
*: ''عنوان البيت او رقم التليفون, رقم الضمان الاجتماعى, الخ.''",
-'revdelete-legend' => 'وضع حدود رؤية',
-'revdelete-hide-text' => 'إخفاء نص النسخة',
-'revdelete-hide-name' => 'تخبية الإجراء والهدف منه',
-'revdelete-hide-comment' => 'خبى تعليق التعديل',
-'revdelete-hide-user' => 'خبى اسم/عنوان الاى بى بتاع اليوزر',
-'revdelete-hide-restricted' => 'طبق القواعد دى على السيسوبات زى الباقيين',
-'revdelete-suppress' => 'تخبية البيانات عن السيسوبات و اليوزرز التانيين',
-'revdelete-hide-image' => 'خبى المحتويات بتاعة الملف',
-'revdelete-unsuppress' => 'إزالة الضوابط من المراجعات المسترجعة',
-'revdelete-log' => 'السبب:',
-'revdelete-submit' => 'طبق على النسخه المختاره',
-'revdelete-logentry' => 'غير رؤية المراجعة ل[[$1]]',
-'logdelete-logentry' => 'غير رؤية الحدث ل[[$1]]',
-'revdelete-success' => "''' رؤية المراجعه اتظبطت بنجاح.'''",
-'logdelete-success' => "'''رؤية السجلات اتظبطت بنجاح.'''",
-'revdel-restore' => 'تغيير الشوف',
-'pagehist' => 'تاريخ الصفحة',
-'deletedhist' => 'التاريخ الممسوح',
-'revdelete-content' => 'محتويات',
-'revdelete-summary' => 'ملخص التعديل',
-'revdelete-uname' => 'اسم اليوزر',
-'revdelete-restricted' => 'طبق التعليمات على السيسوبات',
-'revdelete-unrestricted' => 'شيل الضوابط من على السيسوبات',
-'revdelete-hid' => 'أخفى $1',
-'revdelete-unhid' => 'أظهر $1',
-'revdelete-log-message' => '$1 ل$2 {{PLURAL:$2|مراجعة|مراجعة}}',
-'logdelete-log-message' => '$1 ل$2 {{PLURAL:$2|حدث|حدث}}',
+'revdelete-legend' => 'وضع حدود رؤية',
+'revdelete-hide-text' => 'إخفاء نص النسخة',
+'revdelete-hide-image' => 'خبى المحتويات بتاعة الملف',
+'revdelete-hide-name' => 'تخبية الإجراء والهدف منه',
+'revdelete-hide-comment' => 'خبى تعليق التعديل',
+'revdelete-hide-user' => 'خبى اسم/عنوان الاى بى بتاع اليوزر',
+'revdelete-hide-restricted' => 'طبق القواعد دى على السيسوبات زى الباقيين',
+'revdelete-radio-same' => '(ماتغيرش)',
+'revdelete-radio-set' => 'أيوه',
+'revdelete-radio-unset' => 'لأ',
+'revdelete-suppress' => 'تخبية البيانات عن السيسوبات و اليوزرز التانيين',
+'revdelete-unsuppress' => 'إزالة الضوابط من المراجعات المسترجعة',
+'revdelete-log' => 'السبب:',
+'revdelete-submit' => 'طبق على {{PLURAL:$1|المراجعه|المراجعه}} المختارة',
+'revdelete-logentry' => 'غير رؤية المراجعة ل[[$1]]',
+'logdelete-logentry' => 'غير رؤية الحدث ل[[$1]]',
+'revdelete-success' => "''' رؤية المراجعه اتظبطت بنجاح.'''",
+'revdelete-failure' => "'''عرض المراجعه ما نفعش يتعاد ظبطه:'''
+$1",
+'logdelete-success' => "'''رؤية السجلات اتظبطت بنجاح.'''",
+'logdelete-failure' => "'''مانفعش اعادة ظبط عرض السجل:'''
+$1",
+'revdel-restore' => 'تغيير الشوف',
+'pagehist' => 'تاريخ الصفحة',
+'deletedhist' => 'التاريخ الممسوح',
+'revdelete-content' => 'محتويات',
+'revdelete-summary' => 'ملخص التعديل',
+'revdelete-uname' => 'اسم اليوزر',
+'revdelete-restricted' => 'طبق التعليمات على السيسوبات',
+'revdelete-unrestricted' => 'شيل الضوابط من على السيسوبات',
+'revdelete-hid' => 'أخفى $1',
+'revdelete-unhid' => 'أظهر $1',
+'revdelete-log-message' => '$1 ل$2 {{PLURAL:$2|مراجعة|مراجعة}}',
+'logdelete-log-message' => '$1 ل$2 {{PLURAL:$2|حدث|حدث}}',
+'revdelete-hide-current' => 'حصل غلط فى تخبية البند اللى بتاريخ $2, الساعه$1: دى هى النسخه بتاعة دلوقتى.
+ماينفعش يتخبى.',
+'revdelete-show-no-access' => 'حصل غلط فى عرض البند اللى بتاريخ $2, الساعه $1: البند دا متعلم عليه انه"محظور".
+انتا ما عندكش صلاحية الوصول ليه.',
+'revdelete-modify-no-access' => 'حصل غلط فى تعديل البند اللى بتاريخ$2, الساعه $1: البند دا متعلم عليه انه"محظور".
+انتا ماعندكش صلاحية الوصول ليه..',
+'revdelete-modify-missing' => 'حصل غلط فى تعديل ال ID بتاعة البند $1: ضايع من قاعدة المعلومات!',
+'revdelete-no-change' => "'''تحذير:''' البند اللى بتاريخ$2, الساعه $1 اعدادات الرؤيه اللى انتا طلبتها موجوده بالفعل.",
+'revdelete-concurrent-change' => 'حصل غلط فى تعديل البند اللى بتاريخ $2,الساعه $1: حالته الظاهر فى حد تانى غيرها و انتا بتحاول تعدل فيها..
+لو سمحت بص على السجلات.',
+'revdelete-only-restricted' => 'خطأ تخبيه العنصر اللى تاريخه $2, $1: ماينفعش تمنع بنود من ان الاداريين يشوفوها من غير ما تختار كمان واحد من اختيارات الكبت التانيه.',
+'revdelete-reason-dropdown' => '*اسباب المسح المعتاده
+** خرق لحقوق النشر
+** معلومات شخصيه مش مناسبه
+** معلومات للتشهير',
+'revdelete-otherreason' => 'سبب تانى/اضافى:',
+'revdelete-reasonotherlist' => 'سبب تانى',
+'revdelete-edit-reasonlist' => 'عدل أسباب المسح',
+'revdelete-offender' => 'صاحب المراجعة:',
# Suppression log
'suppressionlog' => 'سجل الإخفاء',
@@ -1125,67 +1201,13 @@ $2',
'mergelogpagetext' => 'فى تحت لستة بأحدث عمليات الدمج لتاريخ صفحة فى التانية.',
# Diffs
-'history-title' => 'تاريخ تعديل "$1"',
-'difference' => '(الفرق بين النسخ)',
-'lineno' => 'سطر $1:',
-'compareselectedversions' => 'قارن بين النسختين المختارتين',
-'visualcomparison' => 'مقارنة بصرية',
-'wikicodecomparison' => 'مقارنة نص الويكى',
-'editundo' => 'استرجاع',
-'diff-multi' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخه متوسطه}} مش معروضه.)',
-'diff-movedto' => 'تم النقل إلى $1',
-'diff-styleadded' => '$1 نمط اتضاف',
-'diff-added' => '$1 اتضاف',
-'diff-changedto' => 'اتغير إلى $1',
-'diff-movedoutof' => 'تم النقل من $1',
-'diff-styleremoved' => '$1 نمط اتشال',
-'diff-removed' => '$1 اتشال',
-'diff-changedfrom' => 'اتغير من $1',
-'diff-src' => 'مصدر',
-'diff-withdestination' => 'بالوجهة $1',
-'diff-with' => '&#32;مع $1 $2',
-'diff-with-final' => '&#32;و $1 $2',
-'diff-width' => 'عرض',
-'diff-height' => 'ارتفاع',
-'diff-p' => "'''فقرة'''",
-'diff-blockquote' => "'''اقتباس'''",
-'diff-h1' => "'''عنوان (مستوى 1)'''",
-'diff-h2' => "'''عنوان (مستوى 2)'''",
-'diff-h3' => "'''عنوان (مستوى 3)'''",
-'diff-h4' => "'''عنوان (مستوى 4)'''",
-'diff-h5' => "'''عنوان (مستوى 5)'''",
-'diff-pre' => "'''قطعة مهيأة من قبل'''",
-'diff-div' => "'''تقسيم'''",
-'diff-ul' => "'''قائمة غير مرتبة'''",
-'diff-ol' => "'''قائمة مرتبة'''",
-'diff-li' => "'''مدخلة قائمة'''",
-'diff-table' => "'''جدول'''",
-'diff-tbody' => "'''محتوى جدول'''",
-'diff-tr' => "'''صف'''",
-'diff-td' => "'''خلية'''",
-'diff-th' => "عنوان''''''",
-'diff-br' => "'''قاطع'''",
-'diff-hr' => "'''قاعدة أفقية'''",
-'diff-code' => "'''قطعة كود حاسوب'''",
-'diff-dl' => "'''قائمة تعريفات'''",
-'diff-dt' => "'''مصطلح تعريف'''",
-'diff-dd' => "'''تعريف'''",
-'diff-input' => "'''مدخل'''",
-'diff-form' => "'''استمارة'''",
-'diff-img' => "'''صورة'''",
-'diff-span' => "'''سبان'''",
-'diff-a' => "'''وصلة'''",
-'diff-i' => "'''مائل'''",
-'diff-b' => "'''عريض'''",
-'diff-strong' => "'''قوى'''",
-'diff-em' => "'''تأكيد'''",
-'diff-font' => "'''خط'''",
-'diff-big' => "'''كبير'''",
-'diff-del' => "'''محذوف'''",
-'diff-tt' => "'''عرض ثابت'''",
-'diff-sub' => "'''نص تحتى'''",
-'diff-sup' => "'''نص فوقى'''",
-'diff-strike' => "'''شطب'''",
+'history-title' => 'تاريخ تعديل "$1"',
+'difference' => '(الفرق بين النسخ)',
+'lineno' => 'سطر $1:',
+'compareselectedversions' => 'قارن بين النسختين المختارتين',
+'showhideselectedversions' => 'عرض/تخبية المراجعات المختاره.',
+'editundo' => 'استرجاع',
+'diff-multi' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخه متوسطه}} مش معروضه.)',
# Search results
'searchresults' => 'نتايج التدوير',
@@ -1193,29 +1215,25 @@ $2',
'searchresulttext' => 'لو عاوز تعرف اكتر عن التدوير على {{SITENAME}}, شوف [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'التدوير كان على \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|كل الصفح اللى بتبتدى بـ "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|كل الصفح اللى بتوصل لـ "$1"]])',
'searchsubtitleinvalid' => "انت دورت على '''$1'''",
-'noexactmatch' => "'''مافيش صفحه بالاسم \"\$1\"'''.
-ممكن [[:\$1| تبتدى الصفحه دى]].",
-'noexactmatch-nocreate' => "'''مافيش صفحة بالاسم \"\$1\".'''",
'toomanymatches' => 'لقينا حاجات كتيرة متطابقة، لو سمحت تجرب استعلام مختلف',
'titlematches' => 'عنوان الصفحة زى',
'notitlematches' => 'ما فيش عنوان صفحه زى كده:',
'textmatches' => 'نص الصفحة بيطابق',
'notextmatches' => 'ما لقيناش أى نص مطابق',
-'prevn' => '$1 اللى قبل كده',
-'nextn' => '$1 اللى بعد كده',
+'prevn' => '{{PLURAL:$1|$1}} اللى قبل كده',
+'nextn' => '{{PLURAL:$1|$1}} اللى بعد كده',
'prevn-title' => '$1 {{PLURAL:$1|نتيجه|نتيجه}} سابقه',
'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}} $1 اللى بعد كدا.',
'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
-'viewprevnext' => 'بُص ($1) ($2) ($3)',
+'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'اختيارات التدوير',
'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
'searchhelp-url' => 'Help:محتويات',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|استعرض الصفحات اللى بتبتدى بالبريفيكس دا]]',
-'searchprofile-articles' => 'صفحات المحتوى',
-'searchprofile-articles-and-proj' => 'صفحات المحتوى & المشروع',
-'searchprofile-project' => 'صفحات المشروع',
-'searchprofile-images' => 'الملفات',
+'searchprofile-articles' => 'صفحات محتوى',
+'searchprofile-project' => 'صفحات المساعده و المشروع',
+'searchprofile-images' => 'مالتيميديا',
'searchprofile-everything' => 'كل شىء',
'searchprofile-advanced' => 'متقدم',
'searchprofile-articles-tooltip' => 'ابحث فى $1',
@@ -1223,8 +1241,6 @@ $2',
'searchprofile-images-tooltip' => 'ابحث عن الصور',
'searchprofile-everything-tooltip' => 'ابحث فى كل المحتوى (شاملا صفحات النقاش)',
'searchprofile-advanced-tooltip' => 'ابحث فى النطاقات المخصصة',
-'prefs-search-nsdefault' => 'ابحث باستخدام الافتراضيات:',
-'prefs-search-nscustom' => 'ابحث فى النطاقات المخصصة:',
'search-result-size' => '$1 ({{PLURAL:$2|1 كلمه|$2 كلام}})',
'search-result-score' => 'الارتباط: $1%',
'search-redirect' => '(تحويله $1)',
@@ -1237,11 +1253,12 @@ $2',
'search-mwsuggest-disabled' => 'مافيش اقتراحات',
'search-relatedarticle' => 'مرتبطه',
'mwsuggest-disable' => 'تعطيل اقتراحات أجاكس',
+'searcheverything-enable' => 'دور فى النطاقات كلها.',
'searchrelated' => 'مرتبطه',
'searchall' => 'الكل',
'showingresults' => "القائمة دى بتعرض {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} من أول رقم '''$2'''.",
'showingresultsnum' => "معروض تحت {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} من أول من رقم'''$2'''.",
-'showingresultstotal' => "معروضه تحت {{PLURAL:$4|النتيجه '''$1''' من '''$3'''|النتايج '''$1 - $2''' من '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|النتيجه '''$1''' من'''$3'''|النتايج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
'nonefound' => "'''ملاحظة''': فى شوية اسامى مساحات بس بيتدور فيها اوتوماتيكى.
حاول تبتدى تدويرك بـ ''all:'' علشان تدور فى المحتوى كله (مع صفح المناقشه, القوالب, الخ), او استعمل اسم المساحه المطلوب اللى تدور فيه.",
'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
@@ -1250,114 +1267,154 @@ $2',
'powersearch-ns' => 'تدوير فى اسم المساحه:',
'powersearch-redir' => 'لستة التحويلات',
'powersearch-field' => 'تدوير على',
+'powersearch-togglelabel' => 'التشييك:',
+'powersearch-toggleall' => 'الكل',
+'powersearch-togglenone' => 'و لا حاجه',
'search-external' => 'تدوير بره',
'searchdisabled' => 'التدوير فى {{SITENAME}} متعطل.
ممكن تدور فى جوجل دلوقتي.
لاحظ أن فهارسه لمحتوى {{SITENAME}} يمكن تكون مش متحدثة.',
+# Quickbar
+'qbsettings' => 'البار السريع',
+'qbsettings-none' => 'ما فى ش',
+'qbsettings-fixedleft' => 'متثبت فى الشمال',
+'qbsettings-fixedright' => 'متثبت فى اليمين',
+'qbsettings-floatingleft' => 'عايم على الشمال',
+'qbsettings-floatingright' => 'عايم على اليمين',
+
# Preferences page
-'preferences' => 'تفضيلات',
-'mypreferences' => 'تفضيلاتى',
-'prefs-edits' => 'عدد التعديلات:',
-'prefsnologin' => 'مش متسجل',
-'prefsnologintext' => 'لازم تكون <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} مسجل الدخول]</span> علشان تقدر تعدل تفضيلاتك.',
-'prefsreset' => 'التفضيلات اترجعت تانى زى الأول',
-'qbsettings' => 'البار السريع',
-'qbsettings-none' => 'ما فى ش',
-'qbsettings-fixedleft' => 'متثبت فى الشمال',
-'qbsettings-fixedright' => 'متثبت فى اليمين',
-'qbsettings-floatingleft' => 'عايم على الشمال',
-'qbsettings-floatingright' => 'عايم على اليمين',
-'changepassword' => 'غير الباسورد',
-'skin' => 'الوش',
-'skin-preview' => 'بروفه',
-'math' => 'رياضة',
-'dateformat' => 'طريقة كتابة التاريخ',
-'datedefault' => 'مافبش تفضيل',
-'datetime' => 'وقت وتاريخ',
-'math_failure' => 'الاعراب فشل',
-'math_unknown_error' => 'غلط مش معروف',
-'math_unknown_function' => 'وظيفة مش معروفة',
-'math_lexing_error' => 'غلط فى الكلمة',
-'math_syntax_error' => 'غلط فى تركيب الجملة',
-'math_image_error' => 'فشل التحويل لـ PNG ؛
-اتاكد من التثبيت المضبوط لـ :Latex و dvips و gs و convert.',
-'math_bad_tmpdir' => 'مش ممكن الكتابة أو انشاء مجلد الرياضة الموؤقت',
-'math_bad_output' => 'مش ممكن الكتابة لـ أو إنشاء مجلد الخرج للرياضيات',
-'math_notexvc' => 'ضايعtexvc executable ؛ لو سمحت شوفmath/README للضبط.',
-'prefs-personal' => 'الپروفيل بتاع اليوزر',
-'prefs-rc' => 'اخر التغييرات',
-'prefs-watchlist' => 'ليستة المراقبه',
-'prefs-watchlist-days' => 'الايام اللى تتعرض فى ليستة المراقبه:',
-'prefs-watchlist-days-max' => '(الحد الاقصى 7 ايام)',
-'prefs-watchlist-edits' => 'عدد التعديلات اللى بتتعرض فى لستةالمراقبة المتوسعة:',
-'prefs-watchlist-edits-max' => '(الرقم الاقصى: 1000)',
-'prefs-misc' => 'متفرقات',
-'prefs-resetpass' => 'غير الباسورد',
-'saveprefs' => 'حفظ',
-'resetprefs' => 'امسح التغييرات اللى مش المحفوظة',
-'restoreprefs' => 'استرجع التظبيطات الاصليه',
-'textboxsize' => 'تعديل',
-'prefs-edit-boxsize' => 'كُبر الويندو بتاعة التحرير',
-'rows' => 'صفوف:',
-'columns' => 'عمدان:',
-'searchresultshead' => 'تدوير',
-'resultsperpage' => 'عدد النتايج فى الصفحة:',
-'contextlines' => 'عدد السطور فى كل نتيجة:',
-'contextchars' => 'عدد الحروف فى كل سطر',
-'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">لينك البذرة</a>:',
-'recentchangesdays' => 'عدد الأيام المعروضة فى اخرالتغييرات:',
-'recentchangesdays-max' => '(الحد الاقصى $1 {{PLURAL:$1|يوم|ايام}})',
-'recentchangescount' => 'عدد التعديلات اللى بتظهر اوتوماتيكى فى احدث التغييرات, تواريخ الصفحه, و فى السجلات, :',
-'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
-'timezonelegend' => 'منطقة التوقيت',
-'timezonetext' => '¹الفرق فى الساعات بين توقيتك المحلى و توقيت السيرفر (UTC).',
-'localtime' => 'التوقيت المحلى',
-'timezoneselect' => 'المنطقة الزمنية:',
-'timezoneuseserverdefault' => 'استخدم افتراض السرفر',
-'timezoneuseoffset' => 'تانى (حدد الفرق)',
-'timezoneoffset' => 'فرق¹',
-'servertime' => 'وقت السيرفر',
-'guesstimezone' => 'دخل التوقيت من البراوزر',
-'timezoneregion-africa' => 'افريقيا',
-'timezoneregion-america' => 'امريكا',
-'timezoneregion-antarctica' => 'انتاركتيكا',
-'timezoneregion-arctic' => 'القطب الشمالى',
-'timezoneregion-asia' => 'اسيا',
-'timezoneregion-atlantic' => 'المحيط الاطلانطى',
-'timezoneregion-australia' => 'اوستراليا',
-'timezoneregion-europe' => 'اوروبا',
-'timezoneregion-indian' => 'المحيط الهندى',
-'timezoneregion-pacific' => 'المحيط الهادى',
-'allowemail' => 'السماح لليوزرز التانيين يبعتولى ايميل',
-'prefs-searchoptions' => 'اختيارات التدوير',
-'prefs-namespaces' => 'أسماء النطاقات',
-'defaultns' => 'دور فى النطاقات دى اوتوماتيكي:',
-'default' => 'اوتوماتيكي',
-'files' => 'ملفات',
-'prefs-custom-css' => 'CSS مخصص',
-'prefs-custom-js' => 'مخصص JS',
+'preferences' => 'تفضيلات',
+'mypreferences' => 'تفضيلاتى',
+'prefs-edits' => 'عدد التعديلات:',
+'prefsnologin' => 'مش متسجل',
+'prefsnologintext' => 'لازم تكون <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} مسجل الدخول]</span> علشان تقدر تعدل تفضيلاتك.',
+'changepassword' => 'غير الباسورد',
+'prefs-skin' => 'الوش',
+'skin-preview' => 'بروفه',
+'prefs-math' => 'رياضة',
+'datedefault' => 'مافبش تفضيل',
+'prefs-datetime' => 'وقت وتاريخ',
+'prefs-personal' => 'الپروفيل بتاع اليوزر',
+'prefs-rc' => 'اخر التغييرات',
+'prefs-watchlist' => 'ليستة المراقبه',
+'prefs-watchlist-days' => 'الايام اللى تتعرض فى ليستة المراقبه:',
+'prefs-watchlist-days-max' => '(الحد الاقصى 7 ايام)',
+'prefs-watchlist-edits' => 'عدد التعديلات اللى بتتعرض فى لستةالمراقبة المتوسعة:',
+'prefs-watchlist-edits-max' => '(الرقم الاقصى: 1000)',
+'prefs-watchlist-token' => 'مفتاح قايمة المراقبه:',
+'prefs-misc' => 'متفرقات',
+'prefs-resetpass' => 'غير الباسورد',
+'prefs-email' => 'اختيارات الايميل',
+'prefs-rendering' => 'المنظر',
+'saveprefs' => 'حفظ',
+'resetprefs' => 'امسح التغييرات اللى مش المحفوظة',
+'restoreprefs' => 'استرجع التظبيطات الاصليه',
+'prefs-editing' => 'تعديل',
+'prefs-edit-boxsize' => 'كُبر الويندو بتاعة التحرير',
+'rows' => 'صفوف:',
+'columns' => 'عمدان:',
+'searchresultshead' => 'تدوير',
+'resultsperpage' => 'عدد النتايج فى الصفحة:',
+'contextlines' => 'عدد السطور فى كل نتيجة:',
+'contextchars' => 'عدد الحروف فى كل سطر',
+'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">لينك البذرة</a>:',
+'recentchangesdays' => 'عدد الأيام المعروضة فى اخرالتغييرات:',
+'recentchangesdays-max' => '(الحد الاقصى $1 {{PLURAL:$1|يوم|ايام}})',
+'recentchangescount' => 'عدد التعديلات اللى بتظهر اوتوماتيكى فى اخر التغييرات, تواريخ الصفحه, و فى السجلات, :',
+'prefs-help-recentchangescount' => 'بيحتوى على احدث التغييرات ، تواريخ الصفحات و السجلات.',
+'prefs-help-watchlist-token' => 'ملى الحقل ده بمفتاح سرى حيعمل تلقيم RSS لقايمه مراقبتك.
+اى واحد بعرف المفتاح فى الحقل ده ممكن يقرأ قايمه مراقبتك، علشان كده اختار قيمه متأمنه.
+دى قيمه متولده عشوائى وممكن تستخدمها: $1',
+'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
+'timezonelegend' => 'منطقة التوقيت',
+'localtime' => 'التوقيت المحلى',
+'timezoneuseserverdefault' => 'استخدم افتراض السرفر',
+'timezoneuseoffset' => 'تانى (حدد الفرق)',
+'timezoneoffset' => 'فرق¹',
+'servertime' => 'وقت السيرفر',
+'guesstimezone' => 'دخل التوقيت من البراوزر',
+'timezoneregion-africa' => 'افريقيا',
+'timezoneregion-america' => 'امريكا',
+'timezoneregion-antarctica' => 'انتاركتيكا',
+'timezoneregion-arctic' => 'القطب الشمالى',
+'timezoneregion-asia' => 'اسيا',
+'timezoneregion-atlantic' => 'المحيط الاطلانطى',
+'timezoneregion-australia' => 'اوستراليا',
+'timezoneregion-europe' => 'اوروبا',
+'timezoneregion-indian' => 'المحيط الهندى',
+'timezoneregion-pacific' => 'المحيط الهادى',
+'allowemail' => 'السماح لليوزرز التانيين يبعتولى ايميل',
+'prefs-searchoptions' => 'اختيارات التدوير',
+'prefs-namespaces' => 'أسماء النطاقات',
+'defaultns' => 'أو دور فى النطاقات دى:',
+'default' => 'اوتوماتيكي',
+'prefs-files' => 'ملفات',
+'prefs-custom-css' => 'CSS مخصص',
+'prefs-custom-js' => 'مخصص JS',
+'prefs-reset-intro' => 'ممكن تستعمل الصفحه دى عشان تعيد ظبط التفضيلات بتاعتك و تخليها زى الحاله الافتراضيه للموقع.
+ماينفعش الرجوع فى التعديل دا.',
+'prefs-emailconfirm-label' => 'التأكد من الايميل:',
+'prefs-textboxsize' => 'حجم شباك التعديل',
+'youremail' => 'الايميل:',
+'username' => 'اسم اليوزر:',
+'uid' => 'رقم اليوزر:',
+'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
+'prefs-registration' => 'وقت التسجيل:',
+'yourrealname' => 'الاسم الحقيقى:',
+'yourlanguage' => 'اللغة:',
+'yourvariant' => 'اللهجة:',
+'yournick' => 'الإمضا:',
+'prefs-help-signature' => 'التعليقات فى صفحات النقاش لازم تتوقع ب"<nowiki>~~~~</nowiki>" واللى حتتحول لتوقيعك وتاريخ.',
+'badsig' => 'الامضا الخام بتاعتك مش صح.
+اتإكد من التاجز بتاعة الHTML.',
+'badsiglength' => 'الامضا بتاعتك اطول م اللازم.
+لازم تكون اصغر من$1 {{PLURAL:$1|حرف|حرف}}.',
+'yourgender' => 'النوع:',
+'gender-unknown' => 'مش متحدد',
+'gender-male' => 'ذكر',
+'gender-female' => 'انثى',
+'prefs-help-gender' => 'اختياري: بيستعملوه فى المخاطبة المعتمدة على النوع بالسوفتوير. المعلومه دى ح تكون علنيه.',
+'email' => 'الإيميل',
+'prefs-help-realname' => 'الاسم الحقيقى اختيارى.
+لو إخترت تكتبه, حيستعمل بس علشان شغلك يتنسب لإسمك.',
+'prefs-help-email' => 'الإيميل اختيارى, بس لازم علشان لو نسيت الپاسوورد.
+ممكن بردو تختار انك تخلّى اليوزرات تبعتلك إيميل من صفحة اليوزر او المناقشه بتاعتك من غير ما تبقى شخصيتك معروفه.',
+'prefs-help-email-required' => 'عنوان الإيميل مطلوب.',
+'prefs-info' => 'معلومات اساسيه',
+'prefs-i18n' => 'التدويل',
+'prefs-signature' => 'الامضا',
+'prefs-dateformat' => 'فورمة التاريخ',
+'prefs-timeoffset' => 'أوفسيت الوقت',
+'prefs-advancedediting' => 'اختيارات متقدمه',
+'prefs-advancedrc' => 'اختيارات متقدمه',
+'prefs-advancedrendering' => 'اختيارات متقدمه',
+'prefs-advancedsearchoptions' => 'اختيارات متقدمه',
+'prefs-advancedwatchlist' => 'اختيارات متقدمه',
+'prefs-display' => 'اختيارات العرض',
+'prefs-diffs' => 'التغيير',
# User rights
-'userrights' => 'إدارة الحقوق بتاعة اليوزر', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
-'userrights-user-editname' => 'دخل اسم يوزر:',
-'editusergroup' => 'تعديل مجموعات اليوزر',
-'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
-'saveusergroups' => 'حفظ مجموعات اليوزر',
-'userrights-groupsmember' => 'عضو في:',
-'userrights-groups-help' => 'إنت ممكن تغير المجموعات اللى اليوزر دا عضو فيها .
+'userrights' => 'إدارة الحقوق بتاعة اليوزر',
+'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
+'userrights-user-editname' => 'دخل اسم يوزر:',
+'editusergroup' => 'تعديل مجموعات اليوزر',
+'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
+'saveusergroups' => 'حفظ مجموعات اليوزر',
+'userrights-groupsmember' => 'عضو في:',
+'userrights-groupsmember-auto' => 'عضو ضمنى فى :',
+'userrights-groups-help' => 'إنت ممكن تغير المجموعات اللى اليوزر دا عضو فيها .
* صندوق متعلم يعنى اليوزر دا عضو فى المجموعة دي.
* صندوق مش متعلم يعنى اليوزر دا مش عضو فى المجموعة دي.
* علامة * يعنى انك مش ممكن تشيل المجموعات بعد ما تضيفها و العكس بالعكس.',
-'userrights-reason' => 'السبب:',
-'userrights-no-interwiki' => 'أنت مش من حقك تعدل صلاحيات اليوزرز على الويكيات التانية.',
-'userrights-nodatabase' => 'قاعدة البيانات $1 مش موجودة أو مش محلية.',
-'userrights-nologin' => 'انت لازم [[Special:UserLogin|تسجيل الدخول]] بحساب مدير لتعديل حقوق اليوزر.',
-'userrights-notallowed' => 'حسابك ماعندوش إذن لتعديل حقوق اليوزر.',
-'userrights-changeable-col' => 'المجموعات اللى تقدر تغييرها',
-'userrights-unchangeable-col' => 'المجموعات اللى مش ممكن انك تغيرها',
+'userrights-reason' => 'السبب:',
+'userrights-no-interwiki' => 'أنت مش من حقك تعدل صلاحيات اليوزرز على الويكيات التانية.',
+'userrights-nodatabase' => 'قاعدة البيانات $1 مش موجودة أو مش محلية.',
+'userrights-nologin' => 'انت لازم [[Special:UserLogin|تسجيل الدخول]] بحساب مدير لتعديل حقوق اليوزر.',
+'userrights-notallowed' => 'حسابك ماعندوش إذن لتعديل حقوق اليوزر.',
+'userrights-changeable-col' => 'المجموعات اللى تقدر تغييرها',
+'userrights-unchangeable-col' => 'المجموعات اللى مش ممكن انك تغيرها',
# Groups
'group' => 'المجموعة:',
@@ -1410,6 +1467,7 @@ $2',
'right-bigdelete' => 'مسح الصفحات اللى ليها تواريخ كبيرة',
'right-deleterevision' => 'مسح وترجيع مراجعات معينة من الصفحات',
'right-deletedhistory' => 'شوف مدخلات التاريخ الممسوحة، من غير النصوص اللى معاها',
+'right-deletedtext' => 'شوف النصوص الممسوحة والتغييرات بين المراجعات الممسوحة',
'right-browsearchive' => 'التدوير فى الصفحات الممسوحة',
'right-undelete' => 'استرجاع صفحة',
'right-suppressrevision' => 'مراجعة واسترجاع المراجعات المستخبية عن الإداريين',
@@ -1423,6 +1481,8 @@ $2',
'right-editprotected' => 'تعديل الصفحات المحمية (من غير الحماية المتضمنة)',
'right-editinterface' => 'تعديل الواجهة بتاعة اليوزر',
'right-editusercssjs' => 'تعديل ملفات CSS و JS لليوزرز التانيين',
+'right-editusercss' => 'تعديل ملفات CSS لليوزرز التانيين',
+'right-edituserjs' => 'تعديل ملفات JS لليوزرز التانيين',
'right-rollback' => 'رجع بسرعه التعديلات بتاعة آخر يوزر عدل صفحة معينة',
'right-markbotedits' => 'التعليم على التعديلات المترجعة كتعديلات بوت',
'right-noratelimit' => 'مش متأثر بحدود المعدل',
@@ -1439,6 +1499,8 @@ $2',
'right-siteadmin' => 'قفل وفتح قاعدة البيانات',
'right-reset-passwords' => 'تغيير الباوسورد بتاعة اليوزرات التانيين',
'right-override-export-depth' => 'تصدير الصفحات مع الصفحات الموصوله لحد عمق 5',
+'right-versiondetail' => 'عرض معلومات نسخة السوفتوير المتوسعه',
+'right-sendemail' => 'يبعت إيميل لليوزرز التانيين',
# User rights log
'rightslog' => 'سجل صلاحيات اليوزرز',
@@ -1488,6 +1550,15 @@ $2',
'recentchanges-legend' => 'اختيارات اخر التعديلات',
'recentchangestext' => 'تابع آخر التغييرات فى الويكى على الصفحة دى.',
'recentchanges-feed-description' => 'تابع اخر التعديلات للويكى ده عن طريق الفييد ده .',
+'recentchanges-label-legend' => 'المفتاح: $1.',
+'recentchanges-legend-newpage' => '$1 - صفحه جديده',
+'recentchanges-label-newpage' => 'التعديل ده عمل صفحه جديده',
+'recentchanges-legend-minor' => '$1 - تعديل صغير',
+'recentchanges-label-minor' => 'ده تعديل صغير',
+'recentchanges-legend-bot' => '$1 - تعديل بتاع بوت',
+'recentchanges-label-bot' => 'التعديل ده عمله بوت',
+'recentchanges-legend-unpatrolled' => '$1 - تعديل مش متراجع',
+'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
'rcnote' => "فيه تحت {{PLURAL:$1|'''1''' تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|يوم|'''$2''' يوم}}، بدءا من $5، $4.",
'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
'rclistfrom' => 'اظهر التعديلات بدايه من $1',
@@ -1515,6 +1586,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'تعديلات ليها علاقه',
+'recentchangeslinked-feed' => 'تعديلات ليها علاقه',
+'recentchangeslinked-toolbox' => 'تعديلات ليها علاقه',
'recentchangeslinked-title' => 'التعديلات المرتبطه ب "$1"',
'recentchangeslinked-noresult' => 'مافيش تعديلات حصلت فى الصفحات اللى ليها وصلات هنا خلال الفترة المحدده.',
'recentchangeslinked-summary' => "دى ليستة تغييرات اتعملت قريب فى صفح معمول ليها لينك من صفح مخصوصه (او لاعضاء فى تصنيف معين).
@@ -1525,8 +1598,8 @@ $2',
# Upload
'upload' => 'ارفع فايل (upload file)',
'uploadbtn' => 'حمل الملف',
-'reupload' => 'حمل مره تانيه',
'reuploaddesc' => 'إلغى التحميل وارجع لاستمارة التحميل',
+'upload-tryagain' => 'نفذ وصف الملف المتعدل',
'uploadnologin' => 'ما سجلتش الدخول',
'uploadnologintext' => 'لازم تكون [[Special:UserLogin|مسجل الدخول]] علشان تقدر تحمل الملفات.',
'upload_directory_missing' => 'مجلد التحميل($1) ضايع السيرفير وماقدرش يعمل واحد تاني.',
@@ -1581,7 +1654,6 @@ $2',
* اسم الملف اللى انت عايز تحمله: '''<tt>[[:$1]]</tt>'''
* اسم الملف الموجود: '''<tt>[[:$2]]</tt>'''
لو سمحت تختار اسم تاني.",
-'fileexists-thumb' => "<center>'''الملف الموجود'''</center>",
'fileexists-thumbnail-yes' => "الظاهر ان الملف دا عبارة عن صورة متصغرة ''(تصغير)''. [[$1|thumb]]
لو سمحت تشيك على الملف '''<tt>[[:$1]]</tt>'''.
لو كان الملف هو نفس الصورة بالحجم الاصلي، ف مافيش داعى تحمله مرة تانية",
@@ -1597,6 +1669,7 @@ $2',
'file-deleted-duplicate' => 'فى ملف مطابق للملف دا ([[$1]]) اتمسح قبل كدا. انتا لازم تشيك على تاريخ المسح بتاع الملف دا قبل ما تحمله مرة تانية',
'successfulupload' => 'التحميل ناجح',
'uploadwarning' => 'تحذير التحميل',
+'uploadwarning-text' => 'لو سمحت عدل وصف الملف اللى تحت وحاول تانى.',
'savefile' => 'حفظ الملف',
'uploadedimage' => 'اتحمل "[[$1]]"',
'overwroteimage' => 'اتحملت نسخة جديدة من "[[$1]]"',
@@ -1604,12 +1677,14 @@ $2',
'uploaddisabledtext' => 'تحميل الملفات متعطل.',
'php-uploaddisabledtext' => 'تحميل ملفات PHP متعطل. لو سمحت اتأكدن من إعدادات تحميل الملفات.',
'uploadscripted' => 'الملف دا فيه كود HTML أو كود تانى يمكن البراوزر يفهمه غلط.',
-'uploadcorrupt' => 'الملف دا بايظ أو ليه امتداد غلط.
-لو سمحت ا تأكد من الملف و حمله مرة تانية.',
'uploadvirus' => 'الملف فيه فيروس! التفاصيل: $1',
+'upload-source' => 'الملف المصدر',
'sourcefilename' => 'اسم الملف بتاع المصدر:',
+'sourceurl' => 'URL المصدر:',
'destfilename' => 'اسم الملف المستهدف:',
'upload-maxfilesize' => 'حجم الملف الأقصى: $1',
+'upload-description' => 'وصف الملف',
+'upload-options' => 'أوبشنات الرفع',
'watchthisupload' => 'حط الملف دا تحت المراقبه',
'filewasdeleted' => 'فيه فايل بنفس الاسم دا اتأپلود قبل كدا و بعدين اتمسح.
لازم تشيّك على $1 قبل ما تأپلود الفايل كمان مره.',
@@ -1634,15 +1709,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- سيب السطر ده زى ما هوه -->',
-'upload-proto-error' => 'بروتوكول مش صحيح',
-'upload-proto-error-text' => 'االتحميل عن بعد لازمله يوأرإل بيبتدى بـ <code>http://</code> أو <code>ftp://</code>.',
-'upload-file-error' => 'غلط داخلي',
-'upload-file-error-text' => 'حصل غلط داخلى واحنا بنحاول نعمل ملف مؤقت على السيرفر.
+'upload-proto-error' => 'بروتوكول مش صحيح',
+'upload-proto-error-text' => 'االتحميل عن بعد لازمله يوأرإل بيبتدى بـ <code>http://</code> أو <code>ftp://</code>.',
+'upload-file-error' => 'غلط داخلي',
+'upload-file-error-text' => 'حصل غلط داخلى واحنا بنحاول نعمل ملف مؤقت على السيرفر.
لو سمحت اتصل [[Special:ListUsers/sysop|بسيسوب]].',
-'upload-misc-error' => 'غلط مش معروف فى التحميل',
-'upload-misc-error-text' => 'حصل غلط مش معروف وإنت بتحمل.
+'upload-misc-error' => 'غلط مش معروف فى التحميل',
+'upload-misc-error-text' => 'حصل غلط مش معروف وإنت بتحمل.
لو سمحت تتاكد أن اليوأرإل صح و ممكن تدخل عليه و بعدين حاول تاني.
إذا المشكلة تنتها موجودة،اتصل بإدارى نظام.',
+'upload-too-many-redirects' => 'الـ URL فيه تحويلات اكتر من اللازم',
+'upload-unknown-size' => 'حجم مش معروف',
+'upload-http-error' => 'حصل غلط فى الـHTTB :$1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'الوصول مش مسموح بيه',
+'img-auth-nopathinfo' => 'PATH_INFO مش موجود.
+الخادم بتاعك مش مضبوط علشان يدى المعلومه دى.
+ممكن يكون CGI-based ومايقدرش يدعم img_auth.
+بص على http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'المسار المطلوب مش فى مجلد الرفع المضبوط.',
+'img-auth-badtitle' => 'مش قادر يعمل عنوان صحيح من "$1".',
+'img-auth-nologinnWL' => 'إنت مش مسجل الدخول و"$1" مش فى القايمه البيضا.',
+'img-auth-nofile' => 'الملف "$1" مش موجود',
+'img-auth-isdir' => 'إنت بتحاول تدخل مجلد "$1".
+دخول الملفات بس مسموح بيه.',
+'img-auth-streaming' => 'بيعرض "$1".',
+'img-auth-public' => 'وظيفة img_auth.php هى إنها تخرج ملفات من ويكى سرى.
+الويكى ده مضبوط على إنه ويكى علني.
+علشان أمن افضل، img_auth.php متعطله.',
+'img-auth-noread' => 'اليوزر معندوش صلاحية قرايه "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'مش صحيح URL: $1',
+'http-invalid-scheme' => 'URLاللى بنظام "$1" مش مدعومه.',
+'http-request-error' => 'طلب ال HTTP ما نفعش بسبب غلط مش معروف',
+'http-read-error' => 'فى غلط فى قراية ال HTTP',
+'http-timed-out' => 'طلب ال HTTP خلص وقته',
+'http-curl-error' => 'حصل غلط و احنا بنجيب الURL : $1',
+'http-host-unreachable' => 'ما قدرناش نوصل لل URL.',
+'http-bad-status' => 'HTTP : حصلت مشكله وقت طلب ال $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'ما قدرناش نوصل لليو أر إل',
@@ -1654,6 +1760,7 @@ PICT # misc.
يمكن تجرب تانى فى وقت مايكونش فيه زحمة.',
'license' => 'ترخيص:',
+'license-header' => 'الترخيص',
'nolicense' => 'مش متحدد',
'license-nopreview' => '(البروفه مش متوفره)',
'upload_source_url' => ' (اليوأرإل صحيح وممكن توصل ليه)',
@@ -1674,39 +1781,43 @@ PICT # misc.
'listfiles_count' => 'نسخ',
# File description page
-'filehist' => 'تاريخ الفايل',
-'filehist-help' => 'اضغط على الساعه/التاريخ علشان تشوف الفايل زى ما كان فى الوقت ده.',
-'filehist-deleteall' => 'امسح كله',
-'filehist-deleteone' => 'مسح',
-'filehist-revert' => 'استرجع',
-'filehist-current' => 'دلوقتي',
-'filehist-datetime' => 'الساعه / التاريخ',
-'filehist-thumb' => 'صورة صغيرة',
-'filehist-thumbtext' => 'تصغير للنسخة بتاريخ $1',
-'filehist-nothumb' => 'لا تصغير',
-'filehist-user' => 'يوزر',
-'filehist-dimensions' => 'ابعاد',
-'filehist-filesize' => 'حجم الفايل',
-'filehist-comment' => 'تعليق',
-'imagelinks' => 'لينكات الفايل',
-'linkstoimage' => '{{PLURAL:$1|الصفحة|ال$1 صفحة}} دى فيها وصله للفايل ده:',
-'linkstoimage-more' => 'أكتر من $1 {{PLURAL:$1|صفحة تصل|صفحة تصل}} للملف ده .
+'file-anchor-link' => 'فايل',
+'filehist' => 'تاريخ الفايل',
+'filehist-help' => 'اضغط على الساعه/التاريخ علشان تشوف الفايل زى ما كان فى الوقت ده.',
+'filehist-deleteall' => 'امسح كله',
+'filehist-deleteone' => 'مسح',
+'filehist-revert' => 'استرجع',
+'filehist-current' => 'دلوقتي',
+'filehist-datetime' => 'الساعه / التاريخ',
+'filehist-thumb' => 'صورة صغيرة',
+'filehist-thumbtext' => 'تصغير للنسخة بتاريخ $1',
+'filehist-nothumb' => 'لا تصغير',
+'filehist-user' => 'يوزر',
+'filehist-dimensions' => 'ابعاد',
+'filehist-filesize' => 'حجم الفايل',
+'filehist-comment' => 'تعليق',
+'filehist-missing' => 'ملف مش موجود',
+'imagelinks' => 'لينكات الفايل',
+'linkstoimage' => '{{PLURAL:$1|الصفحة|ال$1 صفحة}} دى فيها وصله للفايل ده:',
+'linkstoimage-more' => 'أكتر من $1 {{PLURAL:$1|صفحة تصل|صفحة تصل}} للملف ده .
القائمة التالية تعرض {{PLURAL:$1|أول وصلة صفحة|أول $1 وصلة صفحة}} للملف ده بس.
[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.',
-'nolinkstoimage' => 'مافيش صفحات بتوصل للفايل ده.',
-'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|لينكات اكتر]] للملف دا.',
-'redirectstofile' => '{{PLURAL:$1| الملف|ال$1 ملف}} اللى جاى بيحول للملف دا:',
-'duplicatesoffile' => '{{PLURAL:$1| الملف|ال$1 ملف اللى بعده}} متكررين من الملف ده:
+'nolinkstoimage' => 'مافيش صفحات بتوصل للفايل ده.',
+'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|لينكات اكتر]] للملف دا.',
+'redirectstofile' => '{{PLURAL:$1| الملف|ال$1 ملف}} اللى جاى بيحول للملف دا:',
+'duplicatesoffile' => '{{PLURAL:$1| الملف|ال$1 ملف اللى بعده}} متكررين من الملف ده:
([[Special:FileDuplicateSearch/$2| تفاصيل اكتر]]):',
-'sharedupload' => 'الملف دا من $1 و ممكن تستعمله مشاريع تانيه.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'لو سمحت تشوف $1 اللى فيه معلومات زيادة.',
-'shareduploadwiki-desc' => 'الوصف على $1 فى الكومونز معروض تحت.',
-'shareduploadwiki-linktext' => 'صفحة وصف الملف',
-'noimage' => 'مافيش ملف بالاسم ده، لكن ممكن انك تـ$1.',
-'noimage-linktext' => 'حمل واحد',
-'uploadnewversion-linktext' => 'حمل نسخه جديده من الملف ده',
-'shared-repo-from' => 'من $1', # $1 is the repository name
-'shared-repo' => 'مخزن مشترك', # used when shared-repo-NAME does not exist
+'sharedupload' => 'الملف دا من $1 و ممكن تستعمله مشاريع تانيه.',
+'sharedupload-desc-there' => 'الملف دا من $1 و ممكن تستعمله المشاريع التانيه.
+لو سمحت تشوف [$2 صفحة وصف الملف] لو عايز معلومات اكتر..',
+'sharedupload-desc-here' => 'الملف دا من $1 و ممكن تستعمله المشاريع التانيه.
+الوصف بتاعه [$2 صفحة وصف الملف] هناك معروض تحت..',
+'filepage-nofile' => 'ما فيش ملف موجود بالاسم دا.',
+'filepage-nofile-link' => 'ما فيش ملف موجود بالاسم دا ، بس انتا ممكن [$1 تحمله].',
+'uploadnewversion-linktext' => 'حمل نسخه جديده من الملف ده',
+'shared-repo-from' => 'من $1',
+'shared-repo' => 'مخزن مشترك',
+'shared-repo-name-wikimediacommons' => 'ويكيميديا كومنز',
# File reversion
'filerevert' => 'استرجع $1',
@@ -1735,6 +1846,7 @@ PICT # misc.
** مخالفة حقوق النشر
** ملف متكرر',
'filedelete-edit-reasonlist' => 'عدل أسباب المسح',
+'filedelete-maintenance' => 'مسح و استرجاع الملفات متعطل مؤقتا خلال الصيانه.',
# MIME search
'mimesearch' => 'تدوير MIME',
@@ -1758,7 +1870,7 @@ PICT # misc.
# Random page
'randompage' => 'صفحة عشوائيه',
-'randompage-nopages' => 'مافيش صفحات فى النطاق "$1"..',
+'randompage-nopages' => 'مافيش صفحات فى النطاق {{PLURAL:$2|namespace|namespaces}}: $1.',
# Random redirect
'randomredirect' => 'تحويله عشوائيه',
@@ -1770,6 +1882,7 @@ PICT # misc.
'statistics-header-edits' => 'إحصاءات التعديلات',
'statistics-header-views' => 'إحصاءات المشاهدة',
'statistics-header-users' => 'الاحصاءات بتاعة اليوزر',
+'statistics-header-hooks' => 'احصائيات تانيه',
'statistics-articles' => 'صفحات المحتوى',
'statistics-pages' => 'الصفحات',
'statistics-pages-desc' => 'كل الصفحات فى الويكى، بما فيها صفحات النقاش، التحويلات، إلى آخره.',
@@ -1799,8 +1912,8 @@ PICT # misc.
'brokenredirects' => 'تحويلات مكسوره',
'brokenredirectstext' => 'التحويلات دى بتودى لصفحات مالهاش وجود:',
-'brokenredirects-edit' => '(تحرير)',
-'brokenredirects-delete' => '(مسح)',
+'brokenredirects-edit' => 'تحرير',
+'brokenredirects-delete' => 'مسح',
'withoutinterwiki' => 'صفحات من غير وصلات للغات تانيه',
'withoutinterwiki-summary' => 'الصفحات دى مالهاش لينكات لنسخ بلغات تانية:',
@@ -1908,16 +2021,17 @@ PICT # misc.
# Special:Categories
'categories' => 'تصانيف',
-'categoriespagetext' => 'التصنيفات دى فيها صفحات أو ميديا
-[[Special:UnusedCategories|التصنيفات المش مستعملة]] مش معروضة هنا.
-شوف كمان [[Special:WantedCategories|التصنيفات المطلوبة]].',
+'categoriespagetext' => '{{PLURAL:$1|التصنيف دا بيحتوى على|التصنيفات دى بتحتوى على}} صفحات او ميديا.
+[[Special:UnusedCategories|التصنيفات اللى مش مستعمله]] مش معروضه هنا.
+شوف كمان [[Special:WantedCategories|التصنيفات المتعازه]].',
'categoriesfrom' => 'اعرض التصانيف من أول:',
'special-categories-sort-count' => 'رتب بالعدد',
'special-categories-sort-abc' => 'ترتيب ابجدي',
# Special:DeletedContributions
-'deletedcontributions' => 'تعديلات اليوزر الممسوحة',
-'deletedcontributions-title' => 'تعديلات اليوزر الممسوحة',
+'deletedcontributions' => 'تعديلات اليوزر الممسوحة',
+'deletedcontributions-title' => 'تعديلات اليوزر الممسوحة',
+'sp-deletedcontributions-contribs' => 'المساهمات',
# Special:LinkSearch
'linksearch' => 'لينكات خارجيه',
@@ -1933,6 +2047,16 @@ PICT # misc.
'listusersfrom' => 'عرض اليوزرز من أول:',
'listusers-submit' => 'عرض',
'listusers-noresult' => 'ما فى ش يوزر',
+'listusers-blocked' => '(ممنوع)',
+
+# Special:ActiveUsers
+'activeusers' => 'ليستة اليوزرات اللى ليهم نشاط',
+'activeusers-intro' => 'دى قايمه اليوزرات اللى عملوا نشاط فى آخر $1 {{PLURAL:$1|يوم|يوم}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|تعديل|تعديل}} فى آخر {{PLURAL:$3|يوم|$3 يوم}}',
+'activeusers-from' => 'عرض اليوزرات بداية من:',
+'activeusers-hidebots' => 'خبى البوتات',
+'activeusers-hidesysops' => 'خبى السيسوبات',
+'activeusers-noresult' => 'مالقيناش اى يوزر',
# Special:Log/newusers
'newuserlogpage' => 'سجل اليوزرز الجداد',
@@ -1943,17 +2067,23 @@ PICT # misc.
'newuserlog-autocreate-entry' => 'الحساب اتفتح اوتوماتيكي',
# Special:ListGroupRights
-'listgrouprights' => 'حقوق مجموعات اليوزرز',
-'listgrouprights-summary' => 'دى لستة بمجموعات اليوزرز المتعرفة فى الويكى دا، بالحقوق اللى معاهم.
+'listgrouprights' => 'حقوق مجموعات اليوزرز',
+'listgrouprights-summary' => 'دى لستة بمجموعات اليوزرز المتعرفة فى الويكى دا، بالحقوق اللى معاهم.
ممكن تلاقى معلومات زيادة عن الحقوق بتاعة كل واحد [[{{MediaWiki:Listgrouprights-helppage}}|هنا]].',
-'listgrouprights-group' => 'المجموعة',
-'listgrouprights-rights' => 'الحقوق',
-'listgrouprights-helppage' => 'Help: حقوق المجموعات',
-'listgrouprights-members' => '(لستة الأعضاء)',
-'listgrouprights-addgroup' => 'ممكن تضيف {{PLURAL:$2|المجموعة|المجموعات}}: $1',
-'listgrouprights-removegroup' => 'ممكن تشيل {{PLURAL:$2|المجموعة|المجموعات}}: $1',
-'listgrouprights-addgroup-all' => 'ممكن تضيف كل المجموعات',
-'listgrouprights-removegroup-all' => 'ممكن تشيل كل المجموعات',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">حق ممنوح</span>
+* <span class="listgrouprights-revoked">حق متصادر</span>',
+'listgrouprights-group' => 'المجموعة',
+'listgrouprights-rights' => 'الحقوق',
+'listgrouprights-helppage' => 'Help: حقوق المجموعات',
+'listgrouprights-members' => '(لستة الأعضاء)',
+'listgrouprights-addgroup' => 'ممكن تضيف {{PLURAL:$2|المجموعة|المجموعات}}: $1',
+'listgrouprights-removegroup' => 'ممكن تشيل {{PLURAL:$2|المجموعة|المجموعات}}: $1',
+'listgrouprights-addgroup-all' => 'ممكن تضيف كل المجموعات',
+'listgrouprights-removegroup-all' => 'ممكن تشيل كل المجموعات',
+'listgrouprights-addgroup-self' => 'اضافة {{PLURAL:$2|مجموعه|مجموعات}} لحسابى الخاص: $1',
+'listgrouprights-removegroup-self' => 'مسح {{PLURAL:$2|مجموعه|مجموعات}} من حسابى الخاص: $1',
+'listgrouprights-addgroup-self-all' => 'اضافة كل المجموعات للحساب بتاعى',
+'listgrouprights-removegroup-self-all' => 'مسح كل المجموعات من الحساب بتاعى',
# E-mail user
'mailnologin' => 'مافيش عنوان نبعت عليه',
@@ -2025,27 +2155,33 @@ PICT # misc.
'enotif_lastvisited' => 'شوف $1 لمراجعة كل التغييرات اللى حصلت من أخر زيارة ليك.',
'enotif_lastdiff' => 'شوف $1 علشان تبص على التغيير دا.',
'enotif_anon_editor' => 'يوزر مش معروف $1',
-'enotif_body' => 'عزيزى $WATCHINGUSERNAME،
+'enotif_body' => 'عزيزى $WATCHINGUSERNAME,
+
-صفحة $PAGETITLE فى {{SITENAME}} إتغيرت ل $CHANGEDORCREATED قبل كدا $PAGEEDITOR، علشان تشوف النسخة الحالية من الصفحة بص: $PAGETITLE_URL.
+الصفحه {{SITENAME}} $PAGETITLE اتغيّرت $CHANGEDORCREATED فى $PAGEEDITDATE من $PAGEEDITOR, شوف $PAGETITLE_URL علشان تعرف مراجعة دلوقتى.
$NEWPAGE
ملخص تعديل المحرر: $PAGESUMMARY $PAGEMINOREDIT
اتصل بالمحرر:
-إيميل: $PAGEEDITOR_EMAIL
+ايميل: $PAGEEDITOR_EMAIL
صفحة اليوزر: $PAGEEDITOR_WIKI
-مش ح يكون فى اى إخطارات تانية عن أى تغييرات ح تحصل فى المستقبل إلا إذا زرت الصفحه دى. ممكن أنك تعيد تصفير عداد الإخطارات لكل الصفحات اللى بتراقبها فى لستة مراقبتك.
+مش ح يكون فيه تنبيهات تانيه فى حالة لو حصل تغييرات اكتر الا اذا زورت الصفحه دى.
+تقدر بردو ترجّع اعلمة التنبيه ع الزيرو لكل الصفح المتراقبه بتاعتك على ليستة المراقبه.
+
-نظام إخطار {{SITENAME}}
+ نظام التنبيه {{SITENAME}} السهل
--
-لتغيير إعدادات قايمة مراقبتك، روح على:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+علشان تغيّر ليستة المراقبه بتاعتك, زور
+{{fullurl:{{#special:Watchlist}}/edit}}
-للاقتراحات والحصول على مساعدة إضافية:
+علشان تمسح الصفحه من على ليستة مراقبتك, زور
+$UNWATCHURL
+
+الfeedback و مساعده اكتر:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2057,10 +2193,11 @@ $NEWPAGE
'exblank' => 'الصفحه كانت فاضيه',
'delete-confirm' => 'مسح"$1"',
'delete-legend' => 'مسح',
-'historywarning' => 'تحذير: الصفحه اللى ها تمسحها ليها تاريخ:',
+'historywarning' => "'''تحذير:''' الصفحه اللى ها تمسحها ليها تاريخ فيه تقريبا $1 {{PLURAL:$1|مراجعة|مراجعة}}:",
'confirmdeletetext' => 'انت على وشك انك تمسح صفحه أو صوره و كل تاريخها.
من فضلك اتأكد انك عايز المسح وبأنك فاهم نتايج العمليه دى. عمليات الحذف لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].',
'actioncomplete' => 'العمليه خلصت',
+'actionfailed' => 'الفعل فشل',
'deletedtext' => '"<nowiki>$1</nowiki>" اتمسحت.
بص على $2 علشان تشوف سجل آخر عمليات المسح.',
'deletedarticle' => 'اتمسحت "[[$1]]"',
@@ -2084,20 +2221,21 @@ $NEWPAGE
استمر بس خد بالك.',
# Rollback
-'rollback' => 'إرجع فى التعديلات',
-'rollback_short' => 'إرجع لـ ورا',
-'rollbacklink' => 'ترجيع',
-'rollbackfailed' => 'الترجيع ما نفعش',
-'cantrollback' => 'ماقدرناش نرجع فى التعديل؛ آخر مساهم هوه الوحيد اللى ساهم فى الصفحة دي.',
-'alreadyrolled' => 'ماقدرناش نرجع التعديل الاخير لـ [[:$1]] بتاع [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'إرجع فى التعديلات',
+'rollback_short' => 'إرجع لـ ورا',
+'rollbacklink' => 'ترجيع',
+'rollbackfailed' => 'الترجيع ما نفعش',
+'cantrollback' => 'ماقدرناش نرجع فى التعديل؛ آخر مساهم هوه الوحيد اللى ساهم فى الصفحة دي.',
+'alreadyrolled' => 'ماقدرناش نرجع التعديل الاخير لـ [[:$1]] بتاع [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
فى واحد تانى عدل الصفحه او عمل استرجاع قبل كده.
اخر تعديل للصفحه دى عمله [[User:$3|$3]] ([[User talk:$3|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "ملخص التعديل كان: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'استرجع التعديلات بتاعة [[Special:Contributions/$2|$2]] ([[User talk:$2|مناقشة]]) لآخر نسخة بتاعة [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'استرجع تعديلات $1؛
+'editcomment' => "ملخص التعديل كان: \"''\$1''\".",
+'revertpage' => 'استرجع التعديلات بتاعة [[Special:Contributions/$2|$2]] ([[User talk:$2|مناقشة]]) لآخر نسخة بتاعة [[User:$1|$1]]',
+'revertpage-nouser' => 'استرجع التعديلات بتاعه (اسم اليوزر اتمسح) لغايه آخر نسخه بتاعه [[User:$1|$1]]',
+'rollback-success' => 'استرجع تعديلات $1؛
استرجع لآخر نسخة بواسطة $2.',
-'sessionfailure' => 'الظاهر انه فى مشكلة فى جلسة دخولك دى ؛
+'sessionfailure' => 'الظاهر انه فى مشكلة فى جلسة دخولك دى ؛
وعلشان كدا العملية دى اتلغت كإجراء احترازى ضد الاختراق.
لو سمحت دوس على زرار"رجوع" علشان تحمل الصفحة اللى جيت منها مرة تانية، و بعدين حاول تاني.',
@@ -2116,7 +2254,7 @@ $NEWPAGE
'protectexpiry' => 'تنتهى فى:',
'protect_expiry_invalid' => 'وقت الانتهاء مش صحيح.',
'protect_expiry_old' => 'وقت انتهاء المنع قديم.',
-'protect-unchain' => 'استعادة سماح النقل',
+'protect-unchain-permissions' => 'شيل حماية أوبشنات الحمايه التانيه',
'protect-text' => "ممكن هنا تعرض و تغير مستوى الحمايه للصفحه '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "انت مش ممكن تغير مستويات الحماية وأنت ممنوع.
الإعدادات بتاعة الصفحة '''$1''' دلوقتى هي:",
@@ -2146,7 +2284,7 @@ $NEWPAGE
** حرب تحرير بتعطل العمل المنتج
** صفحة زوارها كتير',
'protect-edit-reasonlist' => 'عدل أسباب الحماية',
-'protect-expiry-options' => '1 ساعة:1 hour,1 يوم:1 day,1 أسبوع:1 week,2 أسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنة:1 year,لا نهائى:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ساعة:1 hour,1 يوم:1 day,1 أسبوع:1 week,2 أسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنة:1 year,لا نهائى:infinite',
'restriction-type' => 'سماح:',
'restriction-level' => 'مستوى القيود :',
'minimum-size' => 'أقل حجم',
@@ -2191,6 +2329,7 @@ $NEWPAGE
'undelete-nodiff' => 'ما لقيناش نسخة قديمة.',
'undeletebtn' => 'ترجيع',
'undeletelink' => 'عرض/رجع تانى',
+'undeleteviewlink' => 'عرض',
'undeletereset' => 'ابتدى من الأول',
'undeleteinvert' => 'اعكس الاختيار',
'undeletecomment' => 'السبب:',
@@ -2229,19 +2368,24 @@ $1',
'contributions-title' => 'مساهمات اليوزر ل$1',
'mycontris' => 'تعديلاتى',
'contribsub2' => 'لليوزر $1 ($2)',
-'nocontribs' => 'مالقيناش تغييرات تطابق المحددات دي.', # Optional parameter: $1 is the user name
+'nocontribs' => 'مالقيناش تغييرات تطابق المحددات دي.',
'uctop' => '(فوق)',
'month' => 'من شهر (واللى قبل كده):',
'year' => 'من سنة (واللى قبل كده):',
-'sp-contributions-newbies' => 'عرض مساهمات الحسابات الجديدة بس',
-'sp-contributions-newbies-sub' => 'للحسابات الجديده',
-'sp-contributions-newbies-title' => 'مساهمات اليوزر للحسابات الجديدة',
-'sp-contributions-blocklog' => 'سجل المنع',
-'sp-contributions-logs' => 'السجلات',
-'sp-contributions-search' => 'دور على مساهمات',
-'sp-contributions-username' => 'عنوان أيبى أو اسم يوزر:',
-'sp-contributions-submit' => 'تدوير',
+'sp-contributions-newbies' => 'عرض مساهمات الحسابات الجديدة بس',
+'sp-contributions-newbies-sub' => 'للحسابات الجديده',
+'sp-contributions-newbies-title' => 'مساهمات اليوزر للحسابات الجديدة',
+'sp-contributions-blocklog' => 'سجل المنع',
+'sp-contributions-deleted' => 'تعديلات اليوزر الممسوحه',
+'sp-contributions-logs' => 'السجلات',
+'sp-contributions-talk' => 'مناقشه',
+'sp-contributions-userrights' => 'ادارة حقوق اليوزر',
+'sp-contributions-blocked-notice' => 'اليوزر ده ممنوع دلوقتى.
+آخر عمليه منع في السجل موجوده تحت كمرجع:',
+'sp-contributions-search' => 'دور على مساهمات',
+'sp-contributions-username' => 'عنوان أيبى أو اسم يوزر:',
+'sp-contributions-submit' => 'تدوير',
# What links here
'whatlinkshere' => 'ايه بيوصل هنا',
@@ -2264,6 +2408,7 @@ $1',
# Block/unblock
'blockip' => 'منع يوزر',
+'blockip-title' => 'منع اليوزر',
'blockip-legend' => 'منع اليوزر',
'blockiptext' => 'استخدم الاستمارة اللى تحت لمنع عنوان أيبى أو يوزر معين من الكتابة.
دا لازم يحصل بس علشان تمنع التخريب ،و على حسب
@@ -2288,7 +2433,7 @@ $1',
'ipbenableautoblock' => ' امنع آخر عنوان أيبى استخدمه اليوزر دا اوتوماتيكي، وأى عناوين أيبى تانية يحاول التحرير منها',
'ipbsubmit' => 'منع اليوزر دا',
'ipbother' => 'وقت تاني:',
-'ipboptions' => '2 ساعه:2 hours,1 يوم:1 day,3 يوم:3 days,1 اسبوع:1 week,2 اسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنه:1 year,على طول:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ساعه:2 hours,1 يوم:1 day,3 يوم:3 days,1 اسبوع:1 week,2 اسبوع:2 weeks,1 شهر:1 month,3 شهر:3 months,6 شهر:6 months,1 سنه:1 year,على طول:infinite',
'ipbotheroption' => 'كمان',
'ipbotherreason' => 'سبب تاني:',
'ipbhidename' => 'خبى اسم اليوزر من التعديلات و الليستات.',
@@ -2317,9 +2462,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 عمليات المنع المؤقتة',
'ipblocklist-sh-addressblocks' => '$1 عمليات منع الأيبى المفردة',
'ipblocklist-submit' => 'تدوير',
+'ipblocklist-localblock' => 'منع محلى',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|المنع|المنع}} التانى',
'blocklistline' => '$1, $2 منع $3 ($4)',
'infiniteblock' => 'دايم',
-'expiringblock' => 'ينتهى فى $1',
+'expiringblock' => 'بيخلص يوم $1 الساعه $2',
'anononlyblock' => 'مجهول بس',
'noautoblockblock' => 'المنع الاوتوماتيكى متعطل',
'createaccountblock' => ' فتح الحسابات ممنوع',
@@ -2334,7 +2481,10 @@ $1',
'autoblocker' => 'انت اتمنعت اوتوماتيكى لأن الأيبى بتاعك استعمله "[[User:$1|$1]]" فى الفترة الاخيرة.
السبب اللى خلا $1 يتمنع هو: "$2"',
'blocklogpage' => 'سجل المنع',
-'blocklog-fulllog' => 'سجل المنع الكامل',
+'blocklog-showlog' => 'اليوزر ده اتمنع قبل كده.
+سجل المنع موجود هنا كمرجع:',
+'blocklog-showsuppresslog' => 'المستخدم ده اتمنع واتخفى قبل كده.
+سجل التخبيه موجود تحت كمرجع:',
'blocklogentry' => 'منع "[[$1]]" لفتره زمنيه مدتها $2 $3',
'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
'blocklogtext' => 'دا سجل بعمليات المنع ورفع المنع.
@@ -2355,11 +2505,13 @@ $1',
'ipb_already_blocked' => '"$1" ممنوع فعلا',
'ipb-needreblock' => '== ممنوع بالفعل ==
$1 ممنوع فعلا. عايز تغير الإعدادات؟',
+'ipb-otherblocks-header' => '{{PLURAL:$1||المنع التانى|المنعين التانيين|المنوعات التانيين}}',
'ipb_cant_unblock' => 'غلطه: عنوان الااى بى الممنوع مش موجود $1.
يمكن اترفع منعه فعلا.',
'ipb_blocked_as_range' => 'غلط: الأيبى $1 مش ممنوع مباشرةو مش ممكن رفع المنع عنه.
بس هو، على الرغم من كدا،ممنوع لانه جزء من النطاق $2، و اللى ممكن رفع المنع عنه.',
'ip_range_invalid' => 'نطاق عناوين الأيبى مش صحيح.',
+'ip_range_toolarge' => 'حدود المنع اللى اكبر من /$1 مش مسموح بيها.',
'blockme' => 'امنعنى',
'proxyblocker' => 'مانع البروكسي',
'proxyblocker-disabled' => 'الخاصية دى متعطلة.',
@@ -2371,6 +2523,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'sorbs_create_account_reason' => 'عنوان الأيبى بتاعك موجود كبروكسى مفتوح فى ال DNSBL اللى بيستعمله {{SITENAME}}.
ما ينفعش تفتح حساب.',
'cant-block-while-blocked' => 'أنت لا يمكنك منع اليوزرز التانين و أنت ممنوع.',
+'cant-see-hidden-user' => 'اليوزر اللى انت بتحاول تعمل له منع اصلا ممنوع و مخفى.اكمنك ما عندكش صلاحية تخبية اليوزرات، ما ينفعش تشوف المنع او تعدله.',
# Developer tools
'lockdb' => 'اقفل قاعدة البيانات',
@@ -2411,6 +2564,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
وفى الحالات دى، لو عايز تنقل صفحة المناقشه لازم تنقل أو تدمج محتوياتها يدويا.",
'movearticle' => 'انقل الصفحه:',
+'moveuserpage-warning' => "'''خد بالك:''' انت ح تعمل نقل لصفحه بتاعة يوزر. لو سمحت تعمل حسابك ان الصفحه هى بس اللى ح تتنقل و اسم اليوزر''مش'' ح يتغير.",
'movenologin' => 'مش متسجل',
'movenologintext' => 'لازم تكون يوزر متسجل و تعمل [[Special:UserLogin|دخول]] علشان تنقل الصفحة.',
'movenotallowed' => 'ماعندكش الصلاحية لنقل الصفحات.',
@@ -2421,7 +2575,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'move-watch' => 'راقب الصفحه دى',
'movepagebtn' => 'نقل الصفحه',
'pagemovedsub' => 'تم النقل بنجاح',
-'movepage-moved' => '\'\'\'"$1" خلاص اتنقلت لـ "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" خلاص اتنقلت لـ "$2"\'\'\'',
'movepage-moved-redirect' => 'فى تحويله اتعملت.',
'movepage-moved-noredirect' => 'التحويله ما اتعملتش.',
'articleexists' => 'يا اما فيه صفحه بالاسم ده، او ان الاسم اللى تم اختياره مش صالح.
@@ -2465,6 +2619,14 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'imageinvalidfilename' => 'اسم الملف الهدف مش صحيح',
'fix-double-redirects' => 'اعمل تحديث لاى تحويلات بتشاور على العنوان الاصلي',
'move-leave-redirect' => 'سيب تحويله فى الصفحه',
+'protectedpagemovewarning' => "'''تحذير:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات اللى عندهم صلاحيات اداريه هما بس اللى يقدرو ينقلوها.
+اخر سجل محطوط تحت علشان المراجعه:",
+'semiprotectedpagemovewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو ينقلوها.
+اخر سجل محطوط تحت علشان المراجعه:",
+'move-over-sharedrepo' => '==الملف موجود==
+[[:$1]] موجود فى مخزن مشترك.لو نقلت ملف للاسم دا ح يلغى الملف المشترك.',
+'file-exists-sharedrepo' => 'اسم الملف اللى اخترته موجود من قبل كده فى مخزن مشترك.
+لو سمحت تختار اسم تانى.',
# Export
'export' => 'تصدير صفحات',
@@ -2486,15 +2648,21 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'export-pagelinks' => 'تضمين الصفحات المتوصله لحد عمق :',
# Namespace 8 related
-'allmessages' => 'رسايل النظام',
-'allmessagesname' => 'اسم',
-'allmessagesdefault' => 'النص الاوتوماتيكي',
-'allmessagescurrent' => 'النص دلوقتى',
-'allmessagestext' => 'دى لستة برسايل النظام المتوفرة فى نطاق ميدياويكي.
+'allmessages' => 'رسايل النظام',
+'allmessagesname' => 'اسم',
+'allmessagesdefault' => 'النص الاوتوماتيكي',
+'allmessagescurrent' => 'النص دلوقتى',
+'allmessagestext' => 'دى لستة برسايل النظام المتوفرة فى نطاق ميدياويكي.
لو سمحت تزور[http://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] و [http://translatewiki.net بيتاويكي] لو كنت عايز تساهم فى ترجمة ميدياويكى الاصلية.',
-'allmessagesnotsupportedDB' => "الصفحة دى مش يمكن حد يستعملها علشان'''\$wgUseDatabaseMessages''' متعطل.",
-'allmessagesfilter' => 'فلتر اسم الرسالة:',
-'allmessagesmodified' => 'اعرض اللى اتعدل بس',
+'allmessagesnotsupportedDB' => "الصفحة دى مش يمكن حد يستعملها علشان'''\$wgUseDatabaseMessages''' متعطل.",
+'allmessages-filter-legend' => 'فيلتر',
+'allmessages-filter' => 'فلتره بحالة التهيئه:',
+'allmessages-filter-unmodified' => 'مش متعدل',
+'allmessages-filter-all' => 'الكل',
+'allmessages-filter-modified' => 'متعدل',
+'allmessages-prefix' => 'فلتره بالبريفيكس:',
+'allmessages-language' => 'اللغه:',
+'allmessages-filter-submit' => 'روح',
# Thumbnails
'thumbnail-more' => 'كبر',
@@ -2504,6 +2672,9 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'djvu_no_xml' => 'مش ممكن تجيب XML لملف DjVu',
'thumbnail_invalid_params' => 'محددات التصغير مش صحيحة',
'thumbnail_dest_directory' => 'مش قادر ينشئ المجلد الهدف',
+'thumbnail_image-type' => 'نوع الصوره مش مدعوم',
+'thumbnail_gd-library' => 'ضبط المكتبه GD مش كامل:داله مش موجوده $1',
+'thumbnail_image-missing' => 'الظاهر ان الملف ضايع: $1',
# Special:Import
'import' => 'استيراد صفحات',
@@ -2573,6 +2744,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
ممكن تشوف مصدرها.',
'tooltip-ca-history' => 'نسخ قديمه من الصفحه دى',
'tooltip-ca-protect' => 'احمى الصفحه دى',
+'tooltip-ca-unprotect' => 'شيل الحمايه من الصفحه دى',
'tooltip-ca-delete' => 'امسح الصفحه دى',
'tooltip-ca-undelete' => 'رجع التعديلات اللى حصلت على الصفحة دى قبل ما تتمسح',
'tooltip-ca-move' => 'انقل الصفحه دى',
@@ -2583,6 +2755,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'tooltip-search-fulltext' => 'دور فى الصفحات على النَص دا',
'tooltip-p-logo' => 'الصفحه الرئيسيه',
'tooltip-n-mainpage' => 'زور الصفحه الرئيسيه',
+'tooltip-n-mainpage-description' => 'زور الصفحه الرئيسيه',
'tooltip-n-portal' => 'عن المشروع, ممكن تعمل ايه, و فين تلاقى اللى بتدور عليه',
'tooltip-n-currentevents' => 'شوف معلومات على الاحداث اللى بتحصل دلوقتى',
'tooltip-n-recentchanges' => 'ليستة التعديلات الاخرانيه فى الويكى',
@@ -2629,6 +2802,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'chick.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة تشيك */',
'simple.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة سيمبل */',
'modern.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة مودرن */',
+'vector.css' => '/* CSS اللى هنا حتأثر على اليوزرز اللى بيستخدموا واجهة فكتور */',
'print.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على ناتج الطباعة */',
'handheld.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على الأجهزة المحمولة بالاعتماد على الواجهة المضبوطة فى $wgHandheldStyle */',
@@ -2642,6 +2816,7 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'chick.js' => '/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة تشيك */',
'simple.js' => '/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة سيمبل */',
'modern.js' => '/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة مودرن */',
+'vector.js' => '/* اى جافاسكريبت هنا حتتحمل لكل يوزر بيستخدم واجهة فكتور */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata متعطلة للسيرفر دا.',
@@ -2651,10 +2826,12 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
# Attribution
'anonymous' => '{{PLURAL:$1|يوزر مجهول|يوزرز مجهولين}} ل {{SITENAME}}',
'siteuser' => 'يوزر {{SITENAME}} $1',
-'lastmodifiedatby' => 'آخر تعديل للصفحة دى كان فى $2، $1 عن طريق $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} يوزر مجهول $1',
+'lastmodifiedatby' => 'آخر تعديل للصفحة دى كان فى $2، $1 عن طريق $3.',
'othercontribs' => 'بناء على عمل $1.',
'others' => 'تانيين',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|يوزر|يوزرز}} $1',
+'anonusers' => '{{SITENAME}} مجهول {{PLURAL:$2|يوزر|يوزرات}} $1',
'creditspage' => 'حقوق الصفحة',
'nocredits' => 'مافيش معلومات حقوق متوفرة للصفحة دي.',
@@ -2693,11 +2870,23 @@ $1 ممنوع فعلا. عايز تغير الإعدادات؟',
'mw_math_modern' => 'أحسن للبراوزرات الحديثة',
'mw_math_mathml' => 'اعرض بصيغة MathML لو ممكن (تحت التجريب)',
+# Math errors
+'math_failure' => 'الاعراب فشل',
+'math_unknown_error' => 'غلط مش معروف',
+'math_unknown_function' => 'وظيفة مش معروفة',
+'math_lexing_error' => 'غلط فى الكلمة',
+'math_syntax_error' => 'غلط فى تركيب الجملة',
+'math_image_error' => 'فشل التحويل لـ PNG ؛
+اتاكد من التثبيت المضبوط لـ :Latex و dvips و gs و convert.',
+'math_bad_tmpdir' => 'مش ممكن الكتابة أو انشاء مجلد الرياضة الموؤقت',
+'math_bad_output' => 'مش ممكن الكتابة لـ أو إنشاء مجلد الخرج للرياضيات',
+'math_notexvc' => 'ضايعtexvc executable ؛ لو سمحت شوفmath/README للضبط.',
+
# Patrolling
'markaspatrolleddiff' => 'علم عليها انها متراجعة',
'markaspatrolledtext' => 'علم على المقاله دى إنها متراجعة',
'markedaspatrolled' => 'اتعلم عليها متراجعة',
-'markedaspatrolledtext' => 'النسخة المختارة اتعلم عيها انها متراجعة',
+'markedaspatrolledtext' => 'النسخه اللى مختارها من [[:$1]] اتعلّم عيها انها متراجعه.',
'rcpatroldisabled' => 'مراجعة أخر التغييرات متعطلة',
'rcpatroldisabledtext' => 'خاصية مراجعة أحدث التغييرات متعطلة دلوقتي',
'markedaspatrollederror' => 'مش ممكن تعلم علها إنها متراجعة',
@@ -2727,13 +2916,10 @@ $1',
'previousdiff' => '→ التعديل اللى قبل كده',
'nextdiff' => 'التعديل اللى بعد كده ←',
-# Visual comparison
-'visual-comparison' => 'مقارنة بصرية',
-
# Media information
'mediawarning' => "'''تحذير''': الملف دا ممكن يكون فيه كود مضر.
لو شغلته,الكومبيوتر بتاعك ممكن يخرب.",
-'imagemaxsize' => 'حدد الصور فى صفحات وصف الملفات لـ:',
+'imagemaxsize' => "حد حجم الصوره:<br />''(لصفحات الوصف بتاع الملفات)''",
'thumbsize' => 'حجم العرض المتصغر:',
'widthheightpage' => '$1×$2، $3 {{PLURAL:$3|صفحة|صفحة}}',
'file-info' => '(حجم الملف: $1، نوع MIME: $2)',
@@ -2742,6 +2928,8 @@ $1',
'svg-long-desc' => '(ملف SVG، اساسا $1 × $2 بكسل، حجم الملف: $3)',
'show-big-image' => 'الصورة بدقه كامله',
'show-big-image-thumb' => '<small>حجم البروفه دى: $1 × $2 بكسل</small>',
+'file-info-gif-looped' => 'ملفوف',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|برواز|براويز}}',
# Special:NewFiles
'newimages' => 'جاليرى الصور الجديده',
@@ -2781,7 +2969,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'العرض',
@@ -2914,14 +3102,14 @@ $1',
'exif-unknowndate' => 'تاريخ مش معروف',
-'exif-orientation-1' => 'عادي', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'دار بالعرض', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'دار 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'دار بالطول', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'اتلفت 90° CW 90° CW و اتقلب على جنبه', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'اتلفت 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'اتلفت 90° CW 90° CW و اتقلب على راسه', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'اتلفت 90° عكس عقارب الساعة', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'عادي',
+'exif-orientation-2' => 'دار بالعرض',
+'exif-orientation-3' => 'دار 180°',
+'exif-orientation-4' => 'دار بالطول',
+'exif-orientation-5' => 'اتلفت 90° CW 90° CW و اتقلب على جنبه',
+'exif-orientation-6' => 'اتلفت 90° CW',
+'exif-orientation-7' => 'اتلفت 90° CW 90° CW و اتقلب على راسه',
+'exif-orientation-8' => 'اتلفت 90° عكس عقارب الساعة',
'exif-planarconfiguration-1' => 'صيغه تخينه',
'exif-planarconfiguration-2' => 'الصيغه المستويه',
@@ -3049,7 +3237,7 @@ $1',
'exif-gpsmeasuremode-2' => 'قياس ببعدين',
'exif-gpsmeasuremode-3' => 'قياس تلاتى الابعاد',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'كيلومتر فى الساعة',
'exif-gpsspeed-m' => 'ميل فى الساعة',
'exif-gpsspeed-n' => 'عقد',
@@ -3068,6 +3256,7 @@ $1',
'watchlistall2' => 'الكل',
'namespacesall' => 'الكل',
'monthsall' => 'الكل',
+'limitall' => 'الكل',
# E-mail address confirmation
'confirmemail' => 'اعمل تأكيد للأيميل بتاعك',
@@ -3275,7 +3464,7 @@ $1',
'duplicate-defaultsort' => 'تحزير: زرار الترتيب الاوتوماتيكي"$2" بيوقف زرار الترتيب الاوتوماتيكي"$1" القديم.',
# Special:Version
-'version' => 'نسخه', # Not used as normal message but as header for the special page itself
+'version' => 'نسخه',
'version-extensions' => 'الامتدادات المتثبتة',
'version-specialpages' => 'صفحات مخصوصة',
'version-parserhooks' => 'خطاطيف البريزر',
@@ -3289,7 +3478,7 @@ $1',
'version-skin-extension-functions' => 'الوظايف بتاعة امتداد الواجهة',
'version-hook-name' => 'اسم الخطاف',
'version-hook-subscribedby' => 'اشتراك باسم',
-'version-version' => 'نسخه',
+'version-version' => '(نسخه $1)',
'version-license' => 'الترخيص',
'version-software' => 'السوفتوير المتستاب',
'version-software-product' => 'المنتج',
@@ -3369,4 +3558,15 @@ $1',
'dberr-outofdate' => 'خد بالك فهارس المحتوى بتاعنا اللى عندهم ممكن تكون مش متحدثه.',
'dberr-cachederror' => 'دى نسخه متخزنه من الصفحه المطلوبه، و ممكن ما تكونش متحدثه.',
+# HTML forms
+'htmlform-invalid-input' => 'فى مشاكل فى المدخلات بتاعتك',
+'htmlform-select-badoption' => 'القيمه اللى حددتها ما تنفعش كاختيار.',
+'htmlform-int-invalid' => 'القيمه اللى حددتها ما هياش عدد صحيح',
+'htmlform-float-invalid' => 'القيمه اللى انتا حددتها ما هياش رقم',
+'htmlform-int-toolow' => 'القيمه اللى حددتها اصغر من الحد الادنى اللى هو $1',
+'htmlform-int-toohigh' => 'القيمه اللى حددتها اكبر من الحد الاقصى اللى هو $1',
+'htmlform-submit' => 'تقديم',
+'htmlform-reset' => 'الرجوع فى التغييرات',
+'htmlform-selectorother-other' => 'تانيين',
+
);
diff --git a/languages/messages/MessagesAs.php b/languages/messages/MessagesAs.php
index 6d5cd730..5deb70b3 100644
--- a/languages/messages/MessagesAs.php
+++ b/languages/messages/MessagesAs.php
@@ -70,6 +70,7 @@ $specialPageAliases = array(
'Uncategorizedtemplates' => array( 'অবিন্যস্ত সাঁচবোৰ' ),
'Unusedcategories' => array( 'অব্যৱহৃত শ্ৰেণীসমূহ' ),
'Unusedimages' => array( 'অব্যৱহৃত চিত্ৰবোৰ' ),
+ 'Wantedpages' => array( 'আকাংক্ষিত পৃষ্ঠাসমূহ' ),
'Wantedcategories' => array( 'আকাংক্ষিত শ্ৰেণীসমূহ' ),
'Allpages' => array( 'সকলোবোৰ পৃষ্ঠা' ),
'Specialpages' => array( 'বিশেষ পৃষ্ঠাবোৰ' ),
@@ -123,6 +124,7 @@ $messages = array(
'tog-enotifminoredits' => 'অগুৰুত্বপূর্ণ সম্পাদনা হলেও মোলৈ ই-মেইল পঠাব',
'tog-enotifrevealaddr' => 'জাননী ই-মেইল বোৰত মোৰ ই-মেইল ঠিকনা দেখুৱাব',
'tog-shownumberswatching' => 'লক্ষ্য কৰি থকা সদস্য সমুহৰ সংখ্যা দেখুৱাওক',
+'tog-oldsig' => 'স্বাক্ষৰৰ খচৰা:',
'tog-fancysig' => 'স্বাক্ষৰ ৱিকিটেক্সট হিচাপে ব্যৱহাৰ কৰক (স্বয়ংক্রীয় সংযোগ অবিহনে)',
'tog-externaleditor' => 'সদায়ে বাহ্যিক সম্পাদক ব্যৱহাৰ কৰিব (কেৱল জনা সকলৰ বাবে, ইয়াৰ বাবে আপোনাৰ কম্পিউটাৰত বিশেষ ব্যৱস্থা থাকিব লাগিব)',
'tog-showjumplinks' => '"জপিয়াই যাওক" সংযোগ সক্রীয় কৰক',
@@ -142,6 +144,13 @@ $messages = array(
'underline-never' => 'কেতিয়াও নহয়',
'underline-default' => 'ব্রাউজাৰ ডিফল্ট',
+# Font style option in Special:Preferences
+'editfont-style' => 'সম্পাদনাৰ ফন্ট ষ্টাইল',
+'editfont-default' => "ব্ৰাউজাৰ ডিফ'ল্ট",
+'editfont-monospace' => 'মনোস্পেচ ফন্ট',
+'editfont-sansserif' => 'চেৰিফ-বিহীন ফন্ট',
+'editfont-serif' => 'চেৰিফ ফন্ট',
+
# Dates
'sunday' => 'দেওবাৰ',
'monday' => 'সোমবাৰ',
@@ -201,16 +210,26 @@ $messages = array(
'category-media-header' => '"$1" শ্রেণীৰ মেডিয়া',
'category-empty' => "''এই শ্রেণীত বর্তমান কোনো লিখনী বা মাধ্যম নাই''",
'hidden-categories' => '{{PLURAL:$1|গোপন শ্রেণী|গোপন শ্রেণী}}',
-'hidden-category-category' => 'গোপন শ্রেণী সমুহ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'গোপন শ্রেণী সমুহ',
'category-subcat-count' => '{{PLURAL:$2|এই শ্রেণীত নিম্নলিখিত উপশ্রেণী আছে । এই শ্রেণীত নিম্নলিখিত {{PLURAL:$1|উপশ্রেণীটো|$1 উপশ্রেণীসমূহ}} আছে, মুঠতে $2 তা উপশ্রেণী।}}',
'category-subcat-count-limited' => 'এই শ্রেণীত নিম্নলিখিত {{PLURAL:$1|উপশ্রেণী আছে|$1 উপশ্রেণী আছে}}.',
'category-article-count' => '{{PLURAL:$2|এই শ্রেণীটোত কেবল তলত দিয়া লিখনীটোহে আছে । এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা লিখনী আছে|$1 টা লিখনী আছে}}, মুঠ লিখনী $2 টা।}}',
'listingcontinuesabbrev' => 'আগলৈ',
-
-'about' => 'বিষয়ে',
-'article' => 'লিখনী',
-'newwindow' => '(নতুন উইণ্ডোত খোল খায়)',
-'cancel' => 'ৰদ কৰা হওক',
+'index-category' => 'সূচীকৃত পৃষ্ঠাসমূহ',
+'noindex-category' => 'অসূচীকৃত পৃষ্ঠাসমূহ',
+
+'about' => 'বিষয়ে',
+'article' => 'লিখনী',
+'newwindow' => '(নতুন উইণ্ডোত খোল খায়)',
+'cancel' => 'ৰদ কৰা হওক',
+'moredotdotdot' => 'ক্রমশ:...',
+'mypage' => 'মোৰ ব্যক্তিগত পৃষ্ঠা',
+'mytalk' => 'মোৰ কথাবতৰা',
+'anontalk' => 'এই IP-ত যোগাযোগ কৰক',
+'navigation' => 'দিকদৰ্শন',
+'and' => '&#32;আৰু',
+
+# Cologne Blue skin
'qbfind' => 'বিচৰা হওক',
'qbbrowse' => 'বিচৰণ',
'qbedit' => 'সম্পাদনা',
@@ -218,15 +237,35 @@ $messages = array(
'qbpageinfo' => 'প্রসংগ',
'qbmyoptions' => 'মোৰ পৃষ্ঠাসমুহ',
'qbspecialpages' => 'বিশেষ পৃষ্ঠাসমুহ',
-'moredotdotdot' => 'ক্রমশ:...',
-'mypage' => 'মোৰ ব্যক্তিগত পৃষ্ঠা',
-'mytalk' => 'মোৰ কথাবতৰা',
-'anontalk' => 'এই IP-ত যোগাযোগ কৰক',
-'navigation' => 'দিকদৰ্শন',
-'and' => '&#32;আৰু',
-
-# Metadata in edit box
-'metadata_help' => 'মেটাডাটা:',
+'faq' => 'প্রায়ে উঠা প্রশ্ন',
+'faqpage' => 'Project:প্রায়ে উঠা প্রশ্ন',
+
+# Vector skin
+'vector-action-addsection' => 'বিষয় যোগ',
+'vector-action-delete' => 'মচি পেলাওক',
+'vector-action-move' => 'স্থানান্তৰ কৰক',
+'vector-action-protect' => 'সংৰক্ষিত কৰক',
+'vector-action-undelete' => 'মচি পেলাওঁক',
+'vector-action-unprotect' => 'অসংৰক্ষিত কৰক',
+'vector-namespace-category' => 'বিষয়শ্ৰেণী',
+'vector-namespace-help' => 'সহায় পৃষ্ঠা',
+'vector-namespace-image' => 'ফাইল',
+'vector-namespace-main' => 'পৃষ্ঠা',
+'vector-namespace-media' => 'মেডিয়া পৃষ্ঠা',
+'vector-namespace-mediawiki' => 'বাৰ্তা',
+'vector-namespace-project' => 'প্ৰকল্প পৃষ্ঠা',
+'vector-namespace-special' => 'বিশেষ পৃষ্ঠা',
+'vector-namespace-talk' => 'কথা-বতৰা',
+'vector-namespace-template' => 'টেম্পলেট',
+'vector-namespace-user' => 'সদস্য পৃষ্ঠা',
+'vector-view-create' => 'সৃষ্টি কৰক',
+'vector-view-edit' => 'সম্পাদনা',
+'vector-view-history' => 'ইতিহাস চাওঁক',
+'vector-view-view' => 'পঢ়ক',
+'vector-view-viewsource' => 'উৎস চাওঁক',
+'actions' => 'কাৰ্য্যসমূহ',
+'namespaces' => 'নামস্থান',
+'variants' => 'বিকল্পসমূহ',
'errorpagetitle' => 'ভুল',
'returnto' => '$1 লৈ ঘুৰি যাঁওক ।',
@@ -276,7 +315,7 @@ $messages = array(
'otherlanguages' => 'আন ভাষাত',
'redirectedfrom' => '($1 ৰ পৰা)',
'redirectpagesub' => 'পূণঃনির্দেশিত পৃষ্ঠা',
-'lastmodifiedat' => 'এই পৃষ্ঠাটো শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল', # $1 date, $2 time
+'lastmodifiedat' => 'এই পৃষ্ঠাটো শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল',
'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1}} বাৰ চোৱা হৈছে',
'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
'jumpto' => 'গম্যাৰ্থে',
@@ -287,7 +326,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}}ৰ ইতিবৃত্ত',
'aboutpage' => 'Project:ইতিবৃত্ত',
'copyright' => 'এই লিখনী $1 ৰ অন্তর্গত উপলব্ধ।',
-'copyrightpagename' => '{{SITENAME}} স্বত্বাধিকাৰ',
'copyrightpage' => '{{ns:project}}:স্বত্ব',
'currentevents' => 'সাম্প্রতিক ঘটনাৱলী',
'currentevents-url' => 'Project:শেহতীয়া ঘটনাৱলী',
@@ -295,8 +333,6 @@ $messages = array(
'disclaimerpage' => 'Project:সাধাৰণ দায়লুপ্তি',
'edithelp' => 'সম্পাদনাৰ বাবে সহায়',
'edithelppage' => 'Help:সম্পাদনা',
-'faq' => 'প্রায়ে উঠা প্রশ্ন',
-'faqpage' => 'Project:প্রায়ে উঠা প্রশ্ন',
'helppage' => 'Help:সুচী',
'mainpage' => 'বেটুপাত',
'mainpage-description' => 'বেটুপাত',
@@ -363,10 +399,6 @@ $messages = array(
# General errors
'error' => 'ভুল',
'databaseerror' => 'তথ্যকোষৰ ভুল',
-'noconnect' => 'ক্ষ্মমা কৰিব, এই ৱিকিয়ে বর্তমান কাৰিকৰি অসুবিধাৰ কাৰণে তথ্যকোষ চার্ভাৰৰ লগত সম্পর্ক স্থাপন কৰাত অপৰাগ।<br />
-$1',
-'nodb' => 'তথ্যকোষ $1 বাচনী কৰিব পৰা নগল',
-'cachederror' => 'এয়া আগতে জমা কৰি থোৱা(cached) প্রতিলিপী, আৰু এয়া সাম্প্রতিক নহব পাৰে।',
'laggedslavemode' => 'সাবধান: ইয়াত সাম্প্রতিক সাল-সলনি নাথাকিব পাৰে',
'readonly' => 'তথ্যকোষ বন্ধ কৰা আছে',
'enterlockreason' => 'বন্ধ কৰাৰ কাৰণ দিয়ক, লগতে কেতিয়ামানে খোলা হব তাকো জনাব।',
@@ -386,6 +418,8 @@ $1',
'unexpected' => 'অনাকাংক্ষিত মুল্য: "$1"="$2".',
'formerror' => 'ভুল: ফর্ম খন জমা দিব পৰা নগল',
'badarticleerror' => 'এই পৃষ্ঠাটোত এই কামটো কৰিব নোৱাৰি ।',
+'cannotdelete' => '"$1" পৃষ্ঠা বা ফাইল মচা সম্ভব নহয় ।
+সম্ভৱ আনে আগেই মচী থৈছে ।',
'badtitle' => 'অনভিপ্রেত শিৰোণামা',
'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোণামা অযোগ্য, খালী বা ভুলকে জৰিত আন্তর্ভাষিক বা আন্তর্ৱিকি শিৰোণামা। ইয়াত এক বা ততোধিক বর্ণ থাকিব পাৰে যাক শিৰোণামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
'perfcached' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্রতিক নহব পাৰে।',
@@ -412,7 +446,6 @@ $1',
'virus-unknownscanner' => 'অজ্ঞাত এন্টিভাইৰাচ:',
# Login and logout pages
-'logouttitle' => 'সদস্য প্রস্থান',
'logouttext' => "'''আপুনি প্রস্থান কৰিলে ।'''
আপুনি বেনামী ভাবেও {{SITENAME}} ব্যৱহাৰ কৰিব পাৰে, অথবা আকৌ সেই একে বা বেলেগ নামেৰে [[Special:UserLogin|প্রৱেশ]] কৰিব পাৰে।
@@ -420,7 +453,6 @@ $1',
'welcomecreation' => '== স্বাগতম, $1! ==
আপোনাৰ সদস্যভুক্তি হৈ গল ।
[[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]ত আপোনাৰ পচন্দমতে ব্যক্তিগতকৰণ কৰি লবলৈ নাপাহৰে যেন|',
-'loginpagetitle' => 'সদস্য প্র্ৱেশ',
'yourname' => 'সদস্যনাম:',
'yourpassword' => 'আপোনাৰ গুপ্তশব্দ',
'yourpasswordagain' => 'গুপ্তশব্দ আকৌ এবাৰ লিখক',
@@ -430,6 +462,7 @@ $1',
'nav-login-createaccount' => 'প্রৱেশ/সদস্যভুক্তি',
'loginprompt' => '{{SITENAME}}ত প্রৱেশ কৰিবলৈ আপুনি কুকী সক্রীয় কৰিব লাগিব',
'userlogin' => 'প্রৱেশ/সদস্যভুক্তি',
+'userloginnocreate' => 'প্রৱেশ',
'logout' => 'প্রস্থান',
'userlogout' => 'প্রস্থান',
'notloggedin' => 'প্রৱেশ কৰা নাই',
@@ -442,25 +475,8 @@ $1',
'badretype' => 'আপুনি দিয়া গুপ্ত শব্দ দুটা মিলা নাই।',
'userexists' => 'আপুনি দিয়া সদস্যনাম আগৰে পৰাই ব্যৱহাৰ হৈ আছে।
অনুগ্রহ কৰি বেলেগ সদস্যনাম এটা বাচনী কৰক।',
-'youremail' => 'আপোনাৰ ই-মেইল *',
-'username' => 'সদস্যনাম:',
-'uid' => 'সদস্য চিহ্ন:',
-'prefs-memberingroups' => 'এই {{PLURAL:$1|গোটৰ|গোটবোৰৰ}} সদস্য:',
-'yourrealname' => 'আপোনাৰ আচল নাম*',
-'yourlanguage' => 'ভাষা:',
-'yournick' => 'আপোনাৰ স্বাক্ষ্যৰ:',
-'badsig' => 'অনুপোযোগী স্বাক্ষ্যৰ, HTML টেগ পৰীক্ষা কৰি লওক।',
-'badsiglength' => 'আপুনাৰ স্বাক্ষৰ অত্যাধিক দীঘলিয়া ।
-আপুনাৰ স্বাক্ষৰ {{PLURAL:$1| বা| বা}} তাতকৈ কম আখৰৰ হব লাগে ।',
-'yourgender' => 'লিঙ্গ:',
-'gender-unknown' => 'অনিধাৰ্য্য',
-'gender-male' => 'পুৰুষ',
-'gender-female' => 'মহিলা',
-'email' => 'ই-মেইল',
-'prefs-help-realname' => 'আপোনাৰ আচল নাম দিয়াতো জৰুৰি নহয়, কিন্তু দিলে আপোনাৰ কামবোৰ আপোনাৰ নামত দেখুওৱা হব।',
'loginerror' => 'প্রৱেশ সমস্যা',
-'prefs-help-email' => 'ই-মেইল ঠিকন দিয়া বৈকল্পিক, কিন্তু দিলে আন সদস্যই আপোনাৰ চিনাকি নোপোৱাকৈয়ে আপোনাৰ লগত সম্পর্ক স্থাপন কৰিব পাৰিব।',
-'prefs-help-email-required' => 'ই-মেইল ঠিকনা দিবই লাগিব',
+'createaccounterror' => "একাউন্ট সৃষ্টি কৰা নহ'ল: $1",
'nocookiesnew' => 'আপোনাৰ সদস্যভুক্তি হৈ গৈছে, কিন্তু আপুনি প্রৱেশ কৰা নাই।
{{SITENAME}} ত প্রৱেশ কৰিবলৈ কুকী সক্রিয় থাকিব লাগিব।
আপুনি কুকী নিস্ক্রিয় কৰি থৈছে।
@@ -479,8 +495,8 @@ $1',
'nouserspecified' => 'অপুনি সদস্যনাম এটা দিবই লাগিব।',
'wrongpassword' => 'আপুনি ভুল গুপ্তশব্দ দিছে। অনুগ্রহ কৰি আকৌ এবাৰ চেষ্টা কৰক।',
'wrongpasswordempty' => 'দিয়া গুপ্তশব্দতো খালী; অনুগ্রহ কৰি আকৌ এবাৰ চেষ্টা কৰক। ।',
-'passwordtooshort' => 'আপোনাৰ গুপ্তশব্দ অযোগ্য বা একেবাৰ চুটি ।
-ইয়াত কমেও {{PLURAL:$1|তা|তা}} আখৰ থাকিব লাগিব আৰু আপোনাৰ সদস্যনামৰ লগত একে হব নোৱাৰিব।',
+'passwordtooshort' => "গুপ্তশব্দ কমেও {{PLURAL:$1|১ তা|$1 তা}} আখৰ হ'ব লাগিব ।",
+'password-name-match' => "আপুনাৰ গুপ্তশব্দ আৰু আপুনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
'mailmypassword' => 'ই-মেইলত গুপ্তশব্দ পঠাওক',
'passwordremindertitle' => '{{SITENAME}} ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
@@ -491,6 +507,7 @@ $1',
যদি আপুনি এই অনুৰোধ কৰা নাছিল অথবা যদি আপোনাৰ গুপ্তশব্দতো মনত আছে আৰু তাক সলাব নিবিছাৰে, তেনেহলে আপুনি এই বার্তাতো অবজ্ঞা কৰিব পাৰে আৰু আপোনাৰ আগৰ গুপ্তশব্দতোকে ব্যৱহাৰ কৰি থাকিব পাৰে।',
'noemail' => '"$1" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।',
+'noemailcreate' => 'আপুনি এটা সঠিক ইমেইল ঠিকানা দিব লাগে',
'passwordsent' => '"$1" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্রহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্রবেশ কৰক।',
'blocked-mailpassword' => 'আপোনাৰ IP ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুর্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
'eauthentsent' => 'সঞ্চিত ই-মেইল ঠিকনাত নিশ্বিতকৰণ ই-মেইল এখন পঠোৱা হৈছে।
@@ -513,6 +530,7 @@ $1',
'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকণাৰ কাৰণে {{SITENAME}} ($4) ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। আনুগ্রহ কৰি আপুনি প্রৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক।
যদি এ্য়া ভুলতে হৈছে, তেনেহলে আপুনি এই বার্তাটো অবজ্ঞা কৰিব পাৰে ।',
+'usernamehasherror' => 'সদস্যনামত হেচ আখৰ থাকিব নোৱাৰে',
'loginlanguagelabel' => 'ভাষা: $1',
# Password reset dialog
@@ -525,8 +543,6 @@ $1',
'retypenew' => 'নতুন গুপ্তশব্দ আকৌ টাইপ কৰক',
'resetpass_submit' => 'গুপ্তশব্দ বনাওক আৰু প্রৱেশ কৰক',
'resetpass_success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে, এতিয়া আপুনি প্রৱেশ কৰি আছে...',
-'resetpass_bad_temporary' => 'অস্থায়ী গুপ্তশব্দ ভুল ।
-হয়তো আপুনি আগতেই গুপ্তশব্দ সলনি কৰিছে, অথবা নতুন গুপ্তশব্দৰ কাৰণে অনুৰোধ পঠাইছে।',
'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
'resetpass-submit-loggedin' => 'গুপ্তশব্দ সলনি কৰক',
'resetpass-temp-password' => 'অস্থায়ী গুপ্তশব্দ:',
@@ -602,7 +618,6 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'blockededitsource' => "'''$1''' ৰ '''আপুনি কৰা সাল-সলনি''' ৰ পাঠ্য তলত দিয়া হৈছে:",
'whitelistedittitle' => 'সম্পাদনা কৰিবলৈ প্রবেশ কৰিব লাগিব।',
'whitelistedittext' => 'সম্পাদনা কৰিবলৈ $1 কৰক ।',
-'confirmedittitle' => 'সম্পাদনা কৰিবলৈ ই-মেইলেৰে নিশ্বয়তা কৰিব লাগিব।',
'confirmedittext' => 'সম্পাদনা কৰাৰ আগতে আপুনি আপোনাৰ ই-মেইল ঠিকনাটো প্রমানিত কৰিব লাগিব।
অনুগ্রহ কৰি [[Special:Preferences|মোৰ পচন্দ]] ত গৈ আপোনাৰ ই-মেইল ঠিকনা দিয়ক আৰু তাক প্রমানিত কৰক।',
'nosuchsectiontitle' => 'এনেকুৱা কোনো বিভাগ নাই',
@@ -647,8 +662,10 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
অনুগ্রহ কৰি এই পৃষ্ঠাটোক সৰু সৰু খণ্ডত বিভক্ত কৰাৰ কথা বিবেচনা কৰক ।'''",
'longpageerror' => "'''ভুল: আপুনি দিয়া লিখনী $1 কিলো-বাইট আকাৰৰ, যি $2 কিলো-বাইট সীমাটকৈ বেছি।
ইয়াক সঞ্চিত কৰিব পৰা নাযাব।'''",
-'templatesused' => 'এই পৃষ্ঠাত ব্যৱহৃত ঠাঁচ সমুহ',
-'templatesusedpreview' => 'ব্যৱহৃত ঠাঁচ সমুহ',
+'protectedpagewarning' => "'''সকীয়নি: এই পৃষ্ঠা বন্ধ ৰখা হৈছে; কেৱল এডমিনিষ্ট্ৰেটৰ মৰ্যদাৰ সদস্যই হে সম্পাদনা কৰিব পাৰিব ।'''",
+'semiprotectedpagewarning' => "'''নোট: এই পৃষ্ঠা বন্ধ ৰখা হৈছে; কেৱল পঞ্জীভূত সদস্যই হে সম্পাদনা কৰিব পাৰিব ।'''",
+'templatesused' => 'এই পৃষ্ঠাত ব্যৱহৃত {{PLURAL:$1|ঠাঁচ॥ঠাঁচ সমূহ}}:',
+'templatesusedpreview' => 'এই খচৰাত ব্যৱহৃত {{PLURAL:$1|ঠাঁচ|ঠাঁচ সমূহ}}:',
'template-protected' => '(সুৰক্ষিত)',
'template-semiprotected' => '(অর্ধ-সুৰক্ষিত)',
'hiddencategories' => 'এই পৃষ্ঠা {{PLURAL:$1|১-টা নিহিত বিষয়শ্রেণীৰ|$1-টা নিহিত বিষয়শ্রেণীৰ}} সদস্য:',
@@ -656,12 +673,15 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'nocreatetext' => '{{SITENAME}} ত নতুন লিখনী লিখা ৰদ কৰা হৈছে।
আপুনি ঘুৰি গৈ অস্তিত্বত থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin| নতুন সদস্যভর্তি হওক/ প্রবেশ কৰক]] ।',
'nocreate-loggedin' => 'নতুন পৃষ্ঠা সৃষ্টি কৰিবলৈ আপুনাৰ অনুমতি নাই ।',
+'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনাৰ সমর্থন নাই',
+'sectioneditnotsupported-text' => 'এই পৃষ্ঠাত অনুচ্ছেদ সম্পাদনাৰ সমর্থন নাই',
'permissionserrors' => 'অনুমতি ভুলসমূহ',
'permissionserrorstext-withaction' => "আপুনাৰ $2 কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:",
-'recreate-deleted-warn' => "'''সাৱধান: আপুনি আগতে বিলোপিত কৰা পৃষ্ঠা এটা পূণঃনির্মান কৰি আছে। '''
+'recreate-moveddeleted-warn' => "'''সাৱধান: আগতে বিলোপিত কৰা পৃষ্ঠা এটা আপুনি পূণঃনির্মান কৰি আছে। '''
-এই পৄষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নাই আপুনি বিবেচনা কৰি চাওক।
-এই পৃষ্ঠাটো বিলোপ কৰাৰ অভিলেখ আপোনাৰ সুবিধার্থে ইয়াত দিয়া হৈছে।",
+এই পৄষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।
+এই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধার্থে ইয়াত দিয়া হৈছে।",
+'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওঁক',
'edit-conflict' => 'সম্পাদনা দ্বন্দ ।',
'edit-no-change' => 'আপুননাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল ।
@@ -674,7 +694,9 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাঁওক ।',
'nohistory' => 'এই পৃষ্ঠাৰ কোন সম্পাদনাৰ ইতিহাস নাই।',
'currentrev' => 'শেহতীয়া ভাষ্য',
+'currentrev-asof' => '$1 অনুযায়ী বর্তমান সংস্কৰণ',
'revisionasof' => '$1 তম ভাষ্য',
+'revision-info' => '$1-লৈ $2-এ কৰা সংশোধন',
'previousrevision' => '← আগৰ সংশোধন',
'nextrevision' => 'সদ্যসংশোধিত',
'currentrevisionlink' => 'শেহতীয়া ভাষ্য',
@@ -687,35 +709,41 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
লিজেণ্ড: (বর্তমান) = বর্তমানৰ সংকলনৰ লগত পার্থক্য,
(অন্তিম) = আগৰ সংকলনৰ লগত পার্থক্য, M = অগুৰুত্বপুর্ণ সম্পাদনা।',
'history-fieldset-title' => 'ইতিহাসত অনুসন্ধান কৰক',
-'deletedrev' => '[বিলোপন কৰা হল]',
+'history-show-deleted' => 'মাথোঁ মচি পেলোৱা',
'histfirst' => 'আটাইতকৈ পূৰণি',
'histlast' => 'শেহতীয়া',
'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
'historyempty' => '(খালী)',
# Revision feed
-'history-feed-title' => 'সংকলন ইতিহাস',
-'history-feed-description' => 'ৱিকিত উপলব্ধ এই পৃষ্ঠাৰ সংকলন ইতিহাস',
-'history-feed-empty' => 'এই পৃষ্ঠা বা লিখনীটো নাই।
+'history-feed-title' => 'সংকলন ইতিহাস',
+'history-feed-description' => 'ৱিকিত উপলব্ধ এই পৃষ্ঠাৰ সংকলন ইতিহাস',
+'history-feed-item-nocomment' => '$1-য়ে $2',
+'history-feed-empty' => 'এই পৃষ্ঠা বা লিখনীটো নাই।
হয়তো ইয়াক বিলোপিত কৰা হৈছে অথবা ইয়াৰ নাম সলনী কৰা হৈছে।
[[Special:Search|সন্ধান]] ব্যৱহাৰ কৰি চাওক।',
# Revision deletion
-'rev-deleted-comment' => '(মন্তব্য আতৰোৱা হৈছে)',
-'rev-deleted-user' => '(সদস্যনাম আতৰোৱা হৈছে)',
-'rev-delundel' => 'দেখোৱা হওক / লুকুওৱা হওক',
-'revisiondelete' => 'সংকলন বিলোপন কৰক / পুণর্স্থাপিত কৰক',
-'revdelete-hide-text' => 'সংশোধিত পাঠ আঁতৰাওক',
-'revdelete-hide-name' => 'কাৰ্য্য আৰু লক্ষ্য আতৰাই থওঁক',
-'revdelete-hide-comment' => 'সম্পাদনা মন্তব্য আতৰাই থওঁক',
-'revdelete-hide-user' => 'সম্পাদকৰ সদস্যনাম/আই-পি টিকনা আতৰাই থওঁক',
-'revdelete-hide-image' => 'ফাইলৰ বিষয়বস্তু আঁতৰাওক',
-'revdel-restore' => 'দৃষ্টিপাত সালসলনি কৰক',
-'pagehist' => 'পৃষ্ঠা ইতিহাস',
-'deletedhist' => 'মচি পেলোৱা ইতিহাস',
-'revdelete-content' => 'বিষয়বস্তু',
-'revdelete-summary' => 'সম্পাদনাৰ সাৰমৰ্ম',
-'revdelete-uname' => 'সদস্যনাম',
+'rev-deleted-comment' => '(মন্তব্য আতৰোৱা হৈছে)',
+'rev-deleted-user' => '(সদস্যনাম আতৰোৱা হৈছে)',
+'rev-delundel' => 'দেখোৱা হওক / লুকুওৱা হওক',
+'rev-showdeleted' => 'দেখোৱাওক',
+'revisiondelete' => 'সংকলন বিলোপন কৰক / পুণর্স্থাপিত কৰক',
+'revdelete-hide-text' => 'সংশোধিত পাঠ আঁতৰাওক',
+'revdelete-hide-image' => 'ফাইলৰ বিষয়বস্তু আঁতৰাওক',
+'revdelete-hide-name' => 'কাৰ্য্য আৰু লক্ষ্য আতৰাই থওঁক',
+'revdelete-hide-comment' => 'সম্পাদনা মন্তব্য আতৰাই থওঁক',
+'revdelete-hide-user' => 'সম্পাদকৰ সদস্যনাম/আই-পি টিকনা আতৰাই থওঁক',
+'revdelete-radio-set' => 'অঁ',
+'revdelete-radio-unset' => 'না',
+'revdel-restore' => 'দৃষ্টিপাত সালসলনি কৰক',
+'pagehist' => 'পৃষ্ঠা ইতিহাস',
+'deletedhist' => 'মচি পেলোৱা ইতিহাস',
+'revdelete-content' => 'বিষয়বস্তু',
+'revdelete-summary' => 'সম্পাদনাৰ সাৰমৰ্ম',
+'revdelete-uname' => 'সদস্যনাম',
+'revdelete-otherreason' => 'অন্য/অতিৰিক্ত কাৰণ:',
+'revdelete-reasonotherlist' => 'অন্য কাৰণ',
# History merging
'mergehistory-go' => 'একত্রীকৰণযোগ্য সম্পাদনাসমূহ দেখোৱাওঁক',
@@ -738,18 +766,18 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'searchresulttext' => '{{SITENAME}}ৰ বিষয়ে আৰু জানিবলৈ [[{{MediaWiki:Helppage}}|{{int:help}}]] চাওঁক ।',
'searchsubtitle' => 'আপুনি অনুসন্ধান কৰিছে \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" দি আৰম্ভ হোৱা পৃষ্ঠাসমূহ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" লগত সংযুক্ত পৃষ্ঠাসমূহ]])',
'searchsubtitleinvalid' => "আপুনাৰ অনুসন্ধান হ'ল '''$1'''",
-'noexactmatch' => "'''\"\$1\" শিৰোণামাৰ কোনো লিখনী নাই।''' আপুনী এই লিখনী [[:\$1|লিখিব পাৰে]]।",
-'noexactmatch-nocreate' => "'''\"\$1\" শিৰোণামাৰ কোনো লিখনী নাই।'''",
'toomanymatches' => 'বহুত বেছি মিল পোৱা গৈছে, সন্ধাণ-শব্দ সলনি কৰিবলৈ অনুৰোধ কৰা হল',
'titlematches' => 'পৃষ্ঠাৰ শিৰোণামা মিলিছে',
'notitlematches' => 'এটাও পৃষ্ঠাৰ শিৰোণামা মিলা নাই',
'textmatches' => 'লিখনীৰ পাঠ্য মিলিছে',
'notextmatches' => 'এটাও লিখনীৰ পাঠ্য মিলা নাই',
-'prevn' => 'পুর্ববর্তি $1',
-'nextn' => 'পৰৱর্তি $1',
-'viewprevnext' => 'চাওক ($1) ($2) ($3)',
+'prevn' => 'পুর্ববর্তি {{PLURAL:$1|$1}}',
+'nextn' => 'পৰৱর্তি {{PLURAL:$1|$1}}',
+'viewprevnext' => 'চাওক ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
'searchhelp-url' => 'Help:সুচী',
+'searchprofile-articles' => 'সূচিপত্ৰসমূহ',
+'searchprofile-images' => 'মাল্টিমিডিয়া',
'searchprofile-everything' => 'সকলো',
'searchprofile-articles-tooltip' => '$1-ট অনুসন্ধান কৰক',
'searchprofile-project-tooltip' => '$1-ত অনুসন্ধান',
@@ -772,80 +800,112 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'powersearch-ns' => 'নামস্থানবোৰত সন্ধান:',
'powersearch-redir' => 'পূণঃনির্দেশনা বোৰৰ তালিকা',
'powersearch-field' => 'ৰ কাৰণে সন্ধান কৰক',
+'powersearch-togglelabel' => 'চেক:',
+'powersearch-toggleall' => 'সকলো',
'search-external' => 'বাহ্যিক সন্ধান',
'searchdisabled' => '{{SITENAME}} ত অনুসন্ধান কৰা সাময়িক ভাবে নিষ্ক্রিয় কৰা হৈছে।
তেতিয়ালৈকে গুগলত অনুসন্ধান কৰক।
মনত ৰাখিব যে তেঁওলোকৰ {{SITENAME}}ৰ ইণ্ডেক্স পুৰণি হব পাৰে।',
+# Quickbar
+'qbsettings' => 'শীঘ্রদণ্ডিকা',
+'qbsettings-none' => 'একেবাৰে নহয়',
+'qbsettings-fixedleft' => 'বাঁওফাল স্থিৰ',
+'qbsettings-fixedright' => 'সোঁফাল স্থিৰ',
+'qbsettings-floatingleft' => 'বাঁওফাল অস্থিৰ',
+'qbsettings-floatingright' => 'সোঁফাল অস্থিৰ',
+
# Preferences page
-'preferences' => 'ৰুচি',
-'mypreferences' => 'মোৰ পচন্দ',
-'prefs-edits' => 'সম্পাদনা সমুহৰ সংখ্যা:',
-'prefsnologin' => 'প্রৱেশ কৰা নাই',
-'prefsnologintext' => 'আপোনাৰ পচন্দ সলনী কৰিবলৈ হলে [[Special:UserLogin|প্রৱেশ]] কৰাতো আৱশ্যক।',
-'prefsreset' => 'পচন্দ সমুহ পুর্ববত কৰা হৈছে।',
-'qbsettings' => 'শীঘ্রদণ্ডিকা',
-'qbsettings-none' => 'একেবাৰে নহয়',
-'qbsettings-fixedleft' => 'বাঁওফাল স্থিৰ',
-'qbsettings-fixedright' => 'সোঁফাল স্থিৰ',
-'qbsettings-floatingleft' => 'বাঁওফাল অস্থিৰ',
-'qbsettings-floatingright' => 'সোঁফাল অস্থিৰ',
-'changepassword' => 'গুপ্তশব্দ সলনী কৰক',
-'skin' => 'আৱৰন',
-'skin-preview' => 'খচৰা',
-'math' => 'গণিত',
-'dateformat' => 'তাৰিখৰ সজ্জা',
-'datedefault' => 'বিশেষ পচন্দ নাই',
-'datetime' => 'তাৰিখ আৰু সময়',
-'math_failure' => 'পার্চ কৰিব অসমর্থ',
-'math_unknown_error' => 'অপৰিচিত সমস্যা',
-'math_unknown_function' => 'অজ্ঞাত কার্য্য',
-'prefs-personal' => 'সদস্যৰ বিৱৰণ',
-'prefs-rc' => 'শেহতীয়া সাল-সলনী',
-'prefs-watchlist' => 'লক্ষ্য তালিকা',
-'prefs-watchlist-days' => 'লক্ষ্য তালিকাত দেখুৱাব লগা দিন:',
-'prefs-watchlist-edits' => 'বর্ধিত লক্ষ্যসুচীত দেখুৱাব লগা সর্বোচ্চ সাল-সলনী:',
-'prefs-misc' => 'অন্যান্য',
-'prefs-resetpass' => 'গুপ্তশব্দ শলনি কৰক',
-'saveprefs' => 'সঞ্চিত কৰক',
-'resetprefs' => 'অসঞ্চিত সাল-সলনী বাতিল কৰক',
-'textboxsize' => 'সম্পাদন',
-'rows' => 'পথালী শাৰী:',
-'columns' => 'ঠিয় শাৰী:',
-'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্রতি পৃষ্ঠা দর্শন:',
-'contextlines' => 'প্রতি শাৰী দর্শন:',
-'contextchars' => 'প্রতি শাৰীত সন্দর্ভ:',
-'stub-threshold' => '<a href="#" class="stub">আধাৰ সংযোগ</a> ৰ সর্বোচ্চ আকাৰ (বাইটত):',
-'recentchangesdays' => 'শেহতীয়া সাল-সলনীত দেখুৱাব লগা দিন:',
-'recentchangescount' => 'শেহতীয়া সাল-সলনী, ইতিহাস আৰু লগ পৃষ্ঠাত দেখুৱাব লগা সম্পাদনাৰ সংখ্যা:',
-'savedprefs' => 'আপোনাৰ পচন্দসমুহ সংৰক্ষিত কৰা হল।',
-'timezonelegend' => 'সময় স্থান',
-'timezonetext' => '¹চার্ভাৰৰ সময় (UTC) আৰু আপোনাৰ সময়ৰ মাজত পার্থক্য (ঘণ্টাত)।',
-'localtime' => 'স্থানীয় সময়:',
-'timezoneuseoffset' => 'অন্য (অফচেট ধাৰ্য কৰক)',
-'timezoneoffset' => 'অফচেট¹:',
-'servertime' => 'চার্ভাৰৰ সময়:',
-'guesstimezone' => 'ব্রাউজাৰৰ পৰা ভৰাওক',
-'timezoneregion-africa' => 'আফ্ৰিকা',
-'timezoneregion-america' => 'আমেৰিকা',
-'timezoneregion-antarctica' => 'এন্টাৰ্টিকা',
-'timezoneregion-arctic' => 'আৰ্কটিক',
-'timezoneregion-asia' => 'এচিয়া',
-'timezoneregion-atlantic' => 'আটলান্টিক মহাসাগৰ',
-'timezoneregion-australia' => 'অস্ট্ৰেলিয়া',
-'timezoneregion-europe' => 'ইউৰোপ',
-'timezoneregion-indian' => 'ভাৰত মহাসাগৰ',
-'timezoneregion-pacific' => 'প্ৰশান্ত মহাসাগৰ',
-'allowemail' => 'অন্য সদস্যৰ পৰা ই-মেইল সমর্থ কৰক',
-'prefs-searchoptions' => 'সন্ধান বিকল্পসমুহ',
-'prefs-namespaces' => 'নামস্থান',
-'defaultns' => 'এই নামস্থান সমুহত সদায়ে অনুসন্ধান কৰিব:',
-'default' => 'অবিচল',
-'files' => 'ফাইলসমুহ',
+'preferences' => 'ৰুচি',
+'mypreferences' => 'মোৰ পচন্দ',
+'prefs-edits' => 'সম্পাদনা সমুহৰ সংখ্যা:',
+'prefsnologin' => 'প্রৱেশ কৰা নাই',
+'prefsnologintext' => 'আপোনাৰ পচন্দ সলনী কৰিবলৈ হলে <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} প্ৰৱেশ]</span> কৰাতো আৱশ্যক।',
+'changepassword' => 'গুপ্তশব্দ সলনী কৰক',
+'prefs-skin' => 'আৱৰন',
+'skin-preview' => 'খচৰা',
+'prefs-math' => 'গণিত',
+'datedefault' => 'বিশেষ পচন্দ নাই',
+'prefs-datetime' => 'তাৰিখ আৰু সময়',
+'prefs-personal' => 'সদস্যৰ বিৱৰণ',
+'prefs-rc' => 'শেহতীয়া সাল-সলনী',
+'prefs-watchlist' => 'লক্ষ্য তালিকা',
+'prefs-watchlist-days' => 'লক্ষ্য তালিকাত দেখুৱাব লগা দিন:',
+'prefs-watchlist-days-max' => 'সৰ্বোচ্চ ৭ দিন',
+'prefs-watchlist-edits' => 'বর্ধিত লক্ষ্যসুচীত দেখুৱাব লগা সর্বোচ্চ সাল-সলনী:',
+'prefs-watchlist-edits-max' => 'সৰ্বোচ্চ নম্বৰ: ১০০০',
+'prefs-watchlist-token' => 'লক্ষ্যতালিকা টোকেন:',
+'prefs-misc' => 'অন্যান্য',
+'prefs-resetpass' => 'গুপ্তশব্দ শলনি কৰক',
+'saveprefs' => 'সঞ্চিত কৰক',
+'resetprefs' => 'অসঞ্চিত সাল-সলনী বাতিল কৰক',
+'prefs-editing' => 'সম্পাদন',
+'rows' => 'পথালী শাৰী:',
+'columns' => 'ঠিয় শাৰী:',
+'searchresultshead' => 'অনুসন্ধান',
+'resultsperpage' => 'প্রতি পৃষ্ঠা দর্শন:',
+'contextlines' => 'প্রতি শাৰী দর্শন:',
+'contextchars' => 'প্রতি শাৰীত সন্দর্ভ:',
+'stub-threshold' => '<a href="#" class="stub">আধাৰ সংযোগ</a> ৰ সর্বোচ্চ আকাৰ (বাইটত):',
+'recentchangesdays' => 'শেহতীয়া সাল-সলনীত দেখুৱাব লগা দিন:',
+'recentchangesdays-max' => 'সৰ্বোচ্চ $1 {{PLURAL:$1|দিন|দিন}}',
+'recentchangescount' => 'শেহতীয়া সাল-সলনী, ইতিহাস আৰু লগ পৃষ্ঠাত দেখুৱাব লগা সম্পাদনাৰ সংখ্যা:',
+'savedprefs' => 'আপোনাৰ পচন্দসমুহ সংৰক্ষিত কৰা হল।',
+'timezonelegend' => 'সময় স্থান',
+'localtime' => 'স্থানীয় সময়:',
+'timezoneuseoffset' => 'অন্য (অফচেট ধাৰ্য কৰক)',
+'timezoneoffset' => 'অফচেট¹:',
+'servertime' => 'চার্ভাৰৰ সময়:',
+'guesstimezone' => 'ব্রাউজাৰৰ পৰা ভৰাওক',
+'timezoneregion-africa' => 'আফ্ৰিকা',
+'timezoneregion-america' => 'আমেৰিকা',
+'timezoneregion-antarctica' => 'এন্টাৰ্টিকা',
+'timezoneregion-arctic' => 'আৰ্কটিক',
+'timezoneregion-asia' => 'এচিয়া',
+'timezoneregion-atlantic' => 'আটলান্টিক মহাসাগৰ',
+'timezoneregion-australia' => 'অস্ট্ৰেলিয়া',
+'timezoneregion-europe' => 'ইউৰোপ',
+'timezoneregion-indian' => 'ভাৰত মহাসাগৰ',
+'timezoneregion-pacific' => 'প্ৰশান্ত মহাসাগৰ',
+'allowemail' => 'অন্য সদস্যৰ পৰা ই-মেইল সমর্থ কৰক',
+'prefs-searchoptions' => 'সন্ধান বিকল্পসমুহ',
+'prefs-namespaces' => 'নামস্থান',
+'defaultns' => 'অন্যথা এই নামস্থান সমূহত অনুসন্ধান কৰিব:',
+'default' => 'অবিচল',
+'prefs-files' => 'ফাইলসমুহ',
+'prefs-emailconfirm-label' => 'ইমেইল নিশ্চিতকৰণ:',
+'youremail' => 'আপোনাৰ ই-মেইল *',
+'username' => 'সদস্যনাম:',
+'uid' => 'সদস্য চিহ্ন:',
+'prefs-memberingroups' => 'এই {{PLURAL:$1|গোটৰ|গোটবোৰৰ}} সদস্য:',
+'yourrealname' => 'আপোনাৰ আচল নাম*',
+'yourlanguage' => 'ভাষা:',
+'yournick' => 'আপোনাৰ স্বাক্ষ্যৰ:',
+'badsig' => 'অনুপোযোগী স্বাক্ষ্যৰ, HTML টেগ পৰীক্ষা কৰি লওক।',
+'badsiglength' => 'আপুনাৰ স্বাক্ষৰ অত্যাধিক দীঘলিয়া ।
+আপুনাৰ স্বাক্ষৰ {{PLURAL:$1| বা| বা}} তাতকৈ কম আখৰৰ হব লাগে ।',
+'yourgender' => 'লিঙ্গ:',
+'gender-unknown' => 'অনিধাৰ্য্য',
+'gender-male' => 'পুৰুষ',
+'gender-female' => 'মহিলা',
+'email' => 'ই-মেইল',
+'prefs-help-realname' => 'আপোনাৰ আচল নাম দিয়াতো জৰুৰি নহয়, কিন্তু দিলে আপোনাৰ কামবোৰ আপোনাৰ নামত দেখুওৱা হব।',
+'prefs-help-email' => 'ই-মেইল ঠিকন দিয়া বৈকল্পিক, কিন্তু দিলে আন সদস্যই আপোনাৰ চিনাকি নোপোৱাকৈয়ে আপোনাৰ লগত সম্পর্ক স্থাপন কৰিব পাৰিব।',
+'prefs-help-email-required' => 'ই-মেইল ঠিকনা দিবই লাগিব',
+'prefs-info' => 'সাধাৰণ তথ্য',
+'prefs-i18n' => 'আন্তঃৰাষ্ট্ৰীয়কিকৰণ',
+'prefs-signature' => 'স্বাক্ষৰ',
+'prefs-dateformat' => 'তাৰিখ বিন্যাস',
+'prefs-advancedediting' => 'উচ্চতৰ উপায়ান্তৰ সমূহ',
+'prefs-advancedrc' => 'উচ্চতৰ উপায়ান্তৰ সমূহ',
+'prefs-advancedrendering' => 'উচ্চতৰ উপায়ান্তৰ সমূহ',
+'prefs-advancedsearchoptions' => 'উচ্চতৰ উপায়ান্তৰ সমূহ',
+'prefs-advancedwatchlist' => 'উচ্চতৰ উপায়ান্তৰ সমূহ',
+'prefs-display' => 'প্ৰদৰ্শনী উপায়ান্তৰ সমূহ',
+'prefs-diffs' => 'পাৰ্থক্য',
# User rights
-'userrights' => 'সদস্যৰ অধিকাৰ ব্যৱস্থাপনা', # Not used as normal message but as header for the special page itself
+'userrights' => 'সদস্যৰ অধিকাৰ ব্যৱস্থাপনা',
'userrights-lookup-user' => 'সদস্য গোটবোৰ ব্যৱস্থাপনা কৰক',
'userrights-user-editname' => 'সদস্যনাম দিয়ক:',
'editusergroup' => 'সদস্য গোটবোৰ সম্পাদনা কৰক',
@@ -903,6 +963,8 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
# Recent changes linked
'recentchangeslinked' => 'প্রাসংগিক সালসলনিসমূহ',
+'recentchangeslinked-feed' => 'প্রাসংগিক সম্পাদনানমূহ',
+'recentchangeslinked-toolbox' => 'প্রাসংগিক সম্পাদনানমূহ',
'recentchangeslinked-title' => '"$1"ৰ লগত জৰিত সাল-সলনি',
'recentchangeslinked-noresult' => 'দিয়া সময়ৰ ভিতৰত সংযোজিত পৃষ্ঠা সমূহত সাল-সলনি হোৱা নাই |',
'recentchangeslinked-page' => 'পৃষ্ঠাৰ নাম:',
@@ -916,6 +978,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'uploadwarning' => 'আপলোড সতৰ্কবাণী',
'savefile' => 'সংৰক্ষণ',
'uploadedimage' => '"[[$1]]" আপলোড কৰা হ’ল',
+'upload-options' => "আপল'ড বিকল্পসমুহ",
# Special:ListFiles
'listfiles' => 'ফাইলৰ তালিকা',
@@ -927,24 +990,25 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'listfiles_count' => 'সংস্কৰণ',
# File description page
+'file-anchor-link' => 'চিত্র',
'filehist' => 'ফাইলৰ ইতিবৃত্ত',
'filehist-help' => 'ফাইলৰ আগৰ অৱ্স্থা চাবলৈ সেই তাৰিখ/সময়ত টিপা মাৰক ।',
'filehist-deleteone' => 'মচি পেলাওঁক',
'filehist-current' => 'বর্তমান',
'filehist-datetime' => 'তাৰিখ/সময়',
'filehist-thumb' => 'ক্ষুদ্রাকৃতি প্ৰতিকৃতি',
+'filehist-thumbtext' => '$1 পৰ্যন্ত ক্ষুদ্রাকৃতি প্ৰতিকৃতি সংস্কৰণ',
'filehist-user' => 'সদস্য',
'filehist-dimensions' => 'আকাৰ',
'filehist-filesize' => 'ফাইলৰ আকাৰ (বাইট)',
'filehist-comment' => 'মন্তব্য',
+'filehist-missing' => 'ফাইল সন্ধানহীন',
'imagelinks' => 'ফাইল সংযোগসমূহ',
'linkstoimage' => 'তলত দিয়া পৃষ্ঠাবোৰ এই চিত্র খনৰ লগত জৰিত :{{PLURAL:$1|page links|$1 pages link}}',
'nolinkstoimage' => 'এই চিত্রখনলৈ কোনো পৃষ্ঠা সংযোজিত নহয়',
-'sharedupload' => 'এই ফাইলখন $1-ৰ পৰা লোৱা হৈছে আৰু অন্যান্য প্ৰকল্পতো ব্যৱহাৰ হব পাৰে ।', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'এই নামৰ কোনো ফাইল নাই, আপুনি $1 কৰিব পাৰে ।',
-'noimage-linktext' => 'বোজাই কৰক',
+'sharedupload' => 'এই ফাইলখন $1-ৰ পৰা লোৱা হৈছে আৰু অন্যান্য প্ৰকল্পতো ব্যৱহাৰ হব পাৰে ।',
'uploadnewversion-linktext' => 'এই ফাইলতোৰ নতুন সংশোধন এটা বোজাই কৰক',
-'shared-repo-from' => '$1 পৰা', # $1 is the repository name
+'shared-repo-from' => '$1 পৰা',
# File reversion
'filerevert-comment' => 'মন্তব্য:',
@@ -960,7 +1024,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'doubleredirects' => 'দ্বি-পূণঃনির্দেশিত',
-'brokenredirects-edit' => '(সম্পাদনা কৰক)',
+'brokenredirects-edit' => 'সম্পাদনা কৰক',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|বাইট|বাইট}}',
@@ -1048,7 +1112,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'confirm' => 'নিশ্চিত কৰক',
'delete-confirm' => '"$1" বিলোপ কৰক',
'delete-legend' => 'বিলোপ কৰক',
-'historywarning' => 'সাবধান: আপুনি বিলোপ কৰিব বিছৰা পৃষ্ঠাটোৰ ইতিহাস খালী নহয়।',
+'historywarning' => "'''সাবধান:''' আপুনি বিলোপ কৰিব বিছৰা পৃষ্ঠাখনৰ ইতিহাসত প্ৰায় {{PLURAL:$1|সংস্কৰণ|সংস্কৰণ}} আছে:",
'confirmdeletetext' => 'আপুনি পৃষ্ঠা এটা তাৰ ইতিহাসৰ সৈতে বিলোপ কৰিব ওলাইছে।
অনুগ্রহ কৰি নিশ্বিত কৰক যে এয়া [[{{MediaWiki:Policy-url}}|নীতিসম্মত]] । লগতে আপুনি ইয়াৰ পৰিণাম জানে আৰু আপুনি এয়া কৰিব বিছাৰিছে।',
'actioncomplete' => 'কার্য্য সম্পূর্ণ',
@@ -1072,7 +1136,6 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'protectexpiry' => 'সময় শেষ:',
'protect_expiry_invalid' => 'শেষ সময় ভুল ।',
'protect_expiry_old' => 'শেষ সময় পাৰ হৈ গৈছে।',
-'protect-unchain' => 'স্থানান্তৰৰ অনুমতি দিয়ক',
'protect-text' => "'''<nowiki>$1</nowiki>''' পৃষ্ঠাটোৰ সুৰক্ষা-স্তৰ আপুনি চাব আৰু সলনি কৰিব পাৰে।",
'protect-locked-access' => "এই পৃষ্ঠাটোৰ সুৰক্ষা-স্তৰ সলনি কৰাৰ অনুমতি আপোনাক দিয়া হোৱা নাই ।
'''$1''' এই পৃষ্ঠাটোৰ সুৰক্ষা-স্তৰৰ গাঠনী ইয়াত আছে:",
@@ -1083,7 +1146,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'protect-expiring' => ' $1 (UTC) ত সময় শেষ হব',
'protect-cascade' => 'এই পৃষ্ঠাটোৰ লগত জৰিত সকলো পৃষ্ঠা সুৰক্ষিত কৰক (সুৰক্ষা জখলা)',
'protect-cantedit' => 'আপুনি এই পৃষ্ঠাটোৰ সুৰক্ষা-স্তৰ সলনি কৰিব নোৱৰে, কাৰণ আপোনাক সেই অনুমতি দিয়া হোৱা নাই।',
-'protect-expiry-options' => '‌১ ঘণ্টা:1 hour,১ দিন:1 day,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাহ:1 month,৩ মাহ:3 months,৬ মাহ:6 months,১ বছৰ:1 year,অনির্দিস্ট কাল:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '‌১ ঘণ্টা:1 hour,১ দিন:1 day,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাহ:1 month,৩ মাহ:3 months,৬ মাহ:6 months,১ বছৰ:1 year,অনির্দিস্ট কাল:infinite',
'restriction-type' => 'অনুমতি:',
'restriction-level' => 'সুৰক্ষা-স্তৰ:',
@@ -1112,6 +1175,8 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'sp-contributions-newbies-sub' => 'নতুন সভ্যৰ কাৰণে',
'sp-contributions-blocklog' => 'বাৰণ সুচী',
'sp-contributions-logs' => 'অভিলেখ',
+'sp-contributions-talk' => 'আলোচনা',
+'sp-contributions-userrights' => 'সদস্যৰ অধিকাৰ ব্যৱস্থাপনা',
'sp-contributions-search' => 'অবদানসমূহৰ কাৰণে অনুসন্ধান কৰক',
'sp-contributions-username' => 'আইপি ঠিকনা অথবা ব্যৱহাৰকৰ্তাৰ নাম:',
'sp-contributions-submit' => 'সন্ধান কৰক',
@@ -1137,7 +1202,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'blockip' => 'সদস্য বাৰণ কৰক',
'ipbreason' => 'কাৰণ:',
'ipbreasonotherlist' => 'অন্য কাৰণ',
-'ipboptions' => '২ ঘ্ণ্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাহ:1 month,৩ মাহ:3 months,৬ মাহ:6 months,১ বছৰ:1 year,অনির্দিস্ট কাল:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '২ ঘ্ণ্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাহ:1 month,৩ মাহ:3 months,৬ মাহ:6 months,১ বছৰ:1 year,অনির্দিস্ট কাল:infinite',
'ipblocklist' => 'বাৰণ কৰা আই-পি ঠিকনা আৰু সদস্যৰ তালিকা',
'blocklink' => 'সদস্যভুক্তি ৰদ',
'unblocklink' => 'প্ৰতিৰোধ উঠাই লওঁক',
@@ -1166,7 +1231,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'move-watch' => 'এই পৃষ্ঠাটো লক্ষ্য কৰক',
'movepagebtn' => 'পৃষ্ঠাটো স্থানান্তৰ কৰক',
'pagemovedsub' => 'স্থানান্তৰ সফল হল',
-'movepage-moved' => "'''“$1” ক “$2” লৈ স্থানান্তৰ কৰা হৈছে'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''“$1” ক “$2” লৈ স্থানান্তৰ কৰা হৈছে'''",
'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
বেলেগ নাম এটা বাছি লওক।',
'talkexists' => "'''পৃষ্ঠাটো স্থানান্তৰ কৰা হৈছে, কিন্তু ইয়াৰ লগত জৰিত বার্তা পৃষ্ঠাটো স্থানান্তৰ কৰা নহল, কাৰণ নতুন ঠাইত বার্তা পৃষ্ঠা এটা আগৰ পৰাই আছে।
@@ -1183,7 +1248,10 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'export' => 'পৃষ্ঠা নিষ্কাষন',
# Namespace 8 related
-'allmessages' => 'ব্যৱস্থাৰ বতৰা',
+'allmessages' => 'ব্যৱস্থাৰ বতৰা',
+'allmessages-filter-all' => 'সকলো',
+'allmessages-language' => 'ভাষা:',
+'allmessages-filter-submit' => 'যাওঁক',
# Thumbnails
'thumbnail-more' => 'বিবৰ্ধনাৰ্থে',
@@ -1215,6 +1283,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'tooltip-search-fulltext' => 'এই পাঠ পৃষ্ঠাসমূহট অনুসন্ধান কৰক',
'tooltip-p-logo' => 'বেটুপাত খুলিবৰ কাৰণে',
'tooltip-n-mainpage' => 'বেটুপাত খুলিবৰ কাৰণে',
+'tooltip-n-mainpage-description' => 'প্ৰথম পৃষ্ঠা পৰিদৰ্শন কৰক',
'tooltip-n-portal' => "এই প্রকল্পৰ ইতিবৃত্ত, আপুনি কেনেকৈ সহায় কৰিব পাৰে, ইত্যাদি (কি, ক'ত কিয় বিখ্যাত!!)।",
'tooltip-n-currentevents' => 'এতিয়াৰ ঘটনাৰাজীৰ পটভূমী',
'tooltip-n-recentchanges' => 'শেহতীয়া সালসলনিসমূহৰ সূচী',
@@ -1248,6 +1317,11 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
# Info page
'numedits' => 'সম্পাদনাৰ সংখ্যা (পৃষ্ঠা): $1',
+# Math errors
+'math_failure' => 'পার্চ কৰিব অসমর্থ',
+'math_unknown_error' => 'অপৰিচিত সমস্যা',
+'math_unknown_function' => 'অজ্ঞাত কার্য্য',
+
# Browsing diffs
'previousdiff' => 'প্ৰবীণ সম্পাদনা',
'nextdiff' => 'নতুনতৰ সম্পাদনা →',
@@ -1278,9 +1352,9 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'কিলোমিটাৰ প্ৰতি ঘন্টা',
'exif-gpsspeed-m' => 'মাইল প্ৰতি ঘন্টা',
@@ -1294,6 +1368,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'watchlistall2' => 'সকলো',
'namespacesall' => 'সকলোবোৰ',
'monthsall' => 'সকলো',
+'limitall' => 'সকলোবোৰ',
# Delete conflict
'recreate' => 'পুনৰ সৃষ্টি কৰক',
@@ -1333,7 +1408,7 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'watchlisttools-raw' => 'কেঁচা লক্ষ্য-তালিকা সম্পাদনা কৰক',
# Special:Version
-'version' => 'সংস্কৰণ', # Not used as normal message but as header for the special page itself
+'version' => 'সংস্কৰণ',
'version-specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
'version-other' => 'অন্য',
'version-license' => 'লাইচেঞ্চ',
@@ -1365,4 +1440,9 @@ $1ৰ দ্বাৰ এই অবৰোধ কৰা হৈছে ।
'tags-title' => 'টেগসমূহ',
'tags-edit' => 'সম্পাদনা',
+# HTML forms
+'htmlform-submit' => 'দাখিল কৰক',
+'htmlform-reset' => 'সাল-সলনি পণ্ড কৰক',
+'htmlform-selectorother-other' => 'অন্য',
+
);
diff --git a/languages/messages/MessagesAst.php b/languages/messages/MessagesAst.php
index c76715d8..3f50d0c6 100644
--- a/languages/messages/MessagesAst.php
+++ b/languages/messages/MessagesAst.php
@@ -160,7 +160,7 @@ $messages = array(
'category-media-header' => 'Archivos multimedia na categoría "$1"',
'category-empty' => "''Esta categoría nun tien anguaño nengún artículu o ficheru multimedia.''",
'hidden-categories' => '{{PLURAL:$1|Categoría oculta|Categoríes ocultes}}',
-'hidden-category-category' => 'Categoríes ocultes', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categoríes ocultes',
'category-subcat-count' => "{{PLURAL:$2|Esta categoría namái tien la subcategoría siguiente.|Esta categoría tien {{PLURAL:$1|la siguiente subcategoría|les siguientes $1 subcategoríes}}, d'un total de $2.}}",
'category-subcat-count-limited' => 'Esta categoría tien {{PLURAL:$1|la siguiente subcategoría|les siguientes $1 subcategoríes}}.',
'category-article-count' => "{{PLURAL:$2|Esta categoría contién namái la páxina siguiente.|{{PLURAL:$1|La siguiente páxina ta|Les $1 páxines siguientes tán}} nesta categoría, d'un total de $2.}}",
@@ -178,10 +178,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de les ediciones de MediaWiki]",
-'about' => 'Tocante a',
-'article' => 'Conteníu de la páxina',
-'newwindow' => '(abriráse nuna ventana nueva)',
-'cancel' => 'Cancelar',
+'about' => 'Tocante a',
+'article' => 'Conteníu de la páxina',
+'newwindow' => '(abriráse nuna ventana nueva)',
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Más...',
+'mypage' => 'La mio páxina',
+'mytalk' => "La mio páxina d'alderique",
+'anontalk' => 'Alderique pa esta IP',
+'navigation' => 'Navegación',
+'and' => '&#32;y',
+
+# Cologne Blue skin
'qbfind' => 'Alcontrar',
'qbbrowse' => 'Escartafoyar',
'qbedit' => 'Editar',
@@ -189,15 +197,8 @@ $messages = array(
'qbpageinfo' => 'Contestu',
'qbmyoptions' => 'Les mios páxines',
'qbspecialpages' => 'Páxines especiales',
-'moredotdotdot' => 'Más...',
-'mypage' => 'La mio páxina',
-'mytalk' => "La mio páxina d'alderique",
-'anontalk' => 'Alderique pa esta IP',
-'navigation' => 'Navegación',
-'and' => '&#32;y',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:Entrugues más frecuentes',
'errorpagetitle' => 'Error',
'returnto' => 'Vuelve a $1.',
@@ -247,7 +248,7 @@ $messages = array(
'otherlanguages' => 'Otres llingües',
'redirectedfrom' => '(Redirixío dende $1)',
'redirectpagesub' => 'Páxina de redireición',
-'lastmodifiedat' => "Esta páxina foi modificada per postrer vegada'l $1 a les $2.", # $1 date, $2 time
+'lastmodifiedat' => "Esta páxina foi modificada per postrer vegada'l $1 a les $2.",
'viewcount' => 'Esta páxina foi vista {{PLURAL:$1|una vegada|$1 vegaes}}.',
'protectedpage' => 'Páxina protexida',
'jumpto' => 'Saltar a:',
@@ -258,7 +259,6 @@ $messages = array(
'aboutsite' => 'Tocante a {{SITENAME}}',
'aboutpage' => 'Project:Tocante a',
'copyright' => 'Esti conteníu ta disponible baxo los términos de la $1.',
-'copyrightpagename' => "Drechos d'autor de {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Derechos d'autor",
'currentevents' => 'Fechos actuales',
'currentevents-url' => 'Project:Fechos actuales',
@@ -266,8 +266,6 @@ $messages = array(
'disclaimerpage' => 'Project:Llimitación xeneral de responsabilidá',
'edithelp' => "Aida d'edición",
'edithelppage' => 'Help:Edición de páxines',
-'faq' => 'FAQ',
-'faqpage' => 'Project:Entrugues más frecuentes',
'helppage' => 'Help:Conteníos',
'mainpage' => 'Portada',
'mainpage-description' => 'Portada',
@@ -347,10 +345,6 @@ La postrer consulta que s\'intentó foi:
"$1"
dende la función "$2".
La base de datos dió\'l fallu "$3: $4"',
-'noconnect' => '¡Sentímoslo! La wiki ta sufriendo delles dificultaes téuniques y nun pue contautar col sirvidor de la base de datos. <br />
-$1',
-'nodb' => 'Nun se pudo seleicionar la base de datos $1',
-'cachederror' => 'Esta ye una copia sacada del caché de la páxina solicitada y pue nun tar actualizada.',
'laggedslavemode' => 'Avisu: Esta páxina pue que nun tenga actualizaciones recientes.',
'readonly' => 'Base de datos candada',
'enterlockreason' => 'Introduz un motivu pal candáu, amiestando una estimación de cuándo va ser llevantáu esti',
@@ -377,7 +371,8 @@ Por favor informa d'esto a un [[Special:ListUsers/sysop|alministrador]], anotand
'unexpected' => 'Valor inesperáu: "$1"="$2".',
'formerror' => 'Error: nun se pudo unviar el formulariu',
'badarticleerror' => 'Esta aición nun pue facese nesta páxina',
-'cannotdelete' => 'Nun se pudo esborrar la páxina o imaxe seleicionada (seique daquién yá la esborrara).',
+'cannotdelete' => 'Nun pudo desaniciase la páxina o el ficheru "$1".
+Seique daquién yá la desaniciara.',
'badtitle' => 'Títulu incorreutu',
'badtitletext' => 'El títulu de páxina solicitáu nun ye válidu, ta vaciu o tien enllaces inter-llingua o inter-wiki incorreutos. Pue que contenga ún o más carauteres que nun puen ser usaos nos títulos.',
'perfcached' => 'Los siguientes datos tán na caché y pue que nun tean completamente actualizaos.',
@@ -408,7 +403,6 @@ $2',
'virus-unknownscanner' => 'antivirus desconocíu:',
# Login and logout pages
-'logouttitle' => 'Desconexón',
'logouttext' => "'''Yá tas desconectáu.'''
Pues siguir usando {{SITENAME}} de forma anónima, o pues [[Special:UserLogin|volver a entrar]] como'l mesmu o como otru usuariu.
@@ -416,7 +410,6 @@ Ten en cuenta que dalgunes páxines van continuar saliendo como si tovía tuvier
'welcomecreation' => "== Bienveníu, $1! ==
La to cuenta ta creada.
Nun t'escaezas d'escoyer les tos [[Special:Preferences|preferencies de {{SITENAME}}]].",
-'loginpagetitle' => "Identificación d'usuariu",
'yourname' => "Nome d'usuariu:",
'yourpassword' => 'Clave:',
'yourpasswordagain' => 'Reescribi la to clave:',
@@ -427,6 +420,7 @@ Nun t'escaezas d'escoyer les tos [[Special:Preferences|preferencies de {{SITENAM
'nav-login-createaccount' => 'Entrar / Crear cuenta',
'loginprompt' => "Has tener les ''cookies'' activaes pa entrar en {{SITENAME}}.",
'userlogin' => 'Entrar / Crear cuenta',
+'userloginnocreate' => 'Entrar',
'logout' => 'Salir',
'userlogout' => 'Salir',
'notloggedin' => 'Non identificáu',
@@ -438,27 +432,7 @@ Nun t'escaezas d'escoyer les tos [[Special:Preferences|preferencies de {{SITENAM
'createaccountmail' => 'per e-mail',
'badretype' => "Les claves qu'escribisti nun concuayen.",
'userexists' => "El nome d'usuariu conseñáu yá esiste. Por favor escueyi un nome diferente.",
-'youremail' => 'Corréu electrónicu:',
-'username' => "Nome d'usuariu:",
-'uid' => "Númberu d'usuariu:",
-'prefs-memberingroups' => 'Miembru {{PLURAL:$1|del grupu|de los grupos}}:',
-'yourrealname' => 'Nome real:',
-'yourlanguage' => 'Idioma de los menús:',
-'yourvariant' => 'Variante llingüística:',
-'yournick' => 'Firma:',
-'badsig' => 'Firma cruda non válida; comprueba les etiquetes HTML.',
-'badsiglength' => 'La to robla ye demasiao llarga.
-Ha tener menos de $1 {{PLURAL:$1|caráuter|carauteres}}.',
-'yourgender' => 'Xéneru:',
-'gender-unknown' => 'Non especificáu',
-'gender-male' => 'Masculín',
-'gender-female' => 'Femenín',
-'email' => 'Corréu',
-'prefs-help-realname' => "El nome real ye opcional y si decides conseñalu va ser usáu p'atribuyite'l to trabayu.",
'loginerror' => "Error d'identificación",
-'prefs-help-email' => "La direición de corréu ye opcional, pero permite unviate una clave nueva si escaeces la to clave.
-Tamién pues escoyer permitir a los demás contautar contigo al traviés de la to páxina d'usuariu o d'alderique ensin necesidá de revelar la to identidá.",
-'prefs-help-email-required' => 'Necesítase una direición de corréu electrónicu.',
'nocookiesnew' => "La cuenta d'usuariu ta creada, pero nun tas identificáu. {{SITENAME}} usa cookies pa identificar a los usuarios. Tienes les cookies deshabilitaes. Por favor actívales y depués identifícate col to nuevu nome d'usuariu y la clave.",
'nocookieslogin' => '{{SITENAME}} usa cookies pa identificar a los usuarios. Tienes les cookies deshabilitaes. Por favor actívales y inténtalo otra vuelta.',
'noname' => "Nun punxisti un nome d'usuariu válidu.",
@@ -520,7 +494,6 @@ Pues inorar esti mensaxe si la cuenta foi creada por error.',
'retypenew' => 'Repiti la nueva clave:',
'resetpass_submit' => 'Camudar clave y identificase',
'resetpass_success' => '¡La to clave cambióse correutamente! Agora identificándote...',
-'resetpass_bad_temporary' => 'Clave temporal non válida. Seique yá camudaras correutamente la clave o solicitaras una nueva clave temporal.',
'resetpass_forbidden' => 'Les claves nun se puen camudar',
'resetpass-no-info' => "Has tar identificáu p'acceder direutamente a esta páxina.",
'resetpass-submit-loggedin' => 'Camudar clave',
@@ -601,7 +574,6 @@ Por favor, amiesta toos estos detalles nes consultes que faigas.',
'blockededitsource' => "El testu de '''les tos ediciones''' en '''$1''' amuésase equí:",
'whitelistedittitle' => 'Ye necesario tar identificáu pa poder editar',
'whitelistedittext' => 'Tienes que $1 pa editar páxines.',
-'confirmedittitle' => 'Requerida la confirmación de corréu electrónicu pa editar',
'confirmedittext' => "Has confirmar la to direición de corréu electrónicu enantes d'editar páxines. Por favor, configúrala y valídala nes tos [[Special:Preferences|preferencies d'usuariu]].",
'nosuchsectiontitle' => 'Nun esiste tala seición',
'nosuchsectiontext' => 'Intentasti editar una seición que nun esiste.',
@@ -625,7 +597,8 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar ésta equí]</span>.',
*'''IE:''' caltién ''Ctrl'' mentes calques ''Refresh'', o calca ''Ctrl-F5''
*'''Konqueror:''' calca nel botón ''Reload'', o calca ''F5''
*'''Opera:''' los usuarios d'Opera seique necesiten esborrar dafechu'l caché en ''Tools→Preferences''",
-'usercssjsyoucanpreview' => "'''Conseyu:''' Usa'l bottón 'Amosar previsualización' pa probar el to nuevu CSS/JS enantes de guardalu.",
+'usercssyoucanpreview' => "'''Conseyu:''' Usa'l bottón 'Amosar previsualización' pa probar el to nuevu CSS enantes de guardalu.",
+'userjsyoucanpreview' => "'''Conseyu:''' Usa'l bottón 'Amosar previsualización' pa probar el to nuevu JS enantes de guardalu.",
'usercsspreview' => "'''Recuerda que namái tas previsualizando'l to CSS d'usuariu.'''
'''¡Tovía nun ta guardáu!'''",
'userjspreview' => "'''¡Recuerda que namái tas probando/previsualizando'l to JavaScript d'usuariu, entá nun se grabó!'''",
@@ -676,8 +649,8 @@ L'alministrador que la candó ufrió una esplicación: $1",
'semiprotectedpagewarning' => "'''Nota:''' Esta páxina foi candada pa que nun puean editala namái que los usuarios rexistraos.",
'cascadeprotectedwarning' => "'''Avisu:''' Esta páxina ta candada pa que namái los alministradores la puean editar porque ta enxerta {{PLURAL:$1|na siguiente páxina protexida|nes siguientes páxines protexíes}} en cascada:",
'titleprotectedwarning' => "'''AVISU: Esta páxina torgose pa que namái [[Special:ListGroupRights|dalgunos usuarios especiales]] puean creala.'''",
-'templatesused' => 'Plantíes usaes nesta páxina:',
-'templatesusedpreview' => 'Plantíes usaes nesta previsualización:',
+'templatesused' => '{{PLURAL:$1|plantía usada|plantíes usaes}} nesta páxina:',
+'templatesusedpreview' => '{{PLURAL:$1|plantía usada|plantíes usaes}} nesta previsualización:',
'templatesusedsection' => 'Plantíes usaes nesta seición:',
'template-protected' => '(protexida)',
'template-semiprotected' => '(semi-protexida)',
@@ -689,13 +662,12 @@ Pues volver atrás y editar una páxina esistente, o bien [[Special:UserLogin|id
'permissionserrors' => 'Errores de Permisos',
'permissionserrorstext' => 'Nun tienes permisu pa facer eso {{PLURAL:$1|pol siguiente motivu|polos siguientes motivos}}:',
'permissionserrorstext-withaction' => 'Nun tienes permisu pa $2 {{PLURAL:$1|pol siguiente motivu|polos siguientes motivos}}:',
-'recreate-deleted-warn' => "'''Avisu: Tas volviendo a crear una páxina que foi esborrada anteriormente.'''
+'recreate-moveddeleted-warn' => "'''Avisu: Tas volviendo a crear una páxina que foi esborrada anteriormente.'''
Habríes considerar si ye afechisco siguir editando esta páxina.
Equí tienes el rexistru d'esborraos d'esta páxina:",
-'deleted-notice' => "Esta páxina foi eliminada.
+'moveddeleted-notice' => "Esta páxina foi eliminada.
Como referencia, embaxo amuésase'l rexistru d'esborráu de la páxina.",
-'deletelog-fulllog' => 'Ver el rexistru completu',
'edit-hook-aborted' => 'Edición albortada pol hook.
Nun conseñó esplicación.',
'edit-gone-missing' => 'Nun se pudo actualizar la páxina.
@@ -737,7 +709,7 @@ El motivu dau por $3 ye ''$2''",
'currentrev' => 'Revisión actual',
'currentrev-asof' => 'Revisión actual a fecha de $1',
'revisionasof' => 'Revisión a fecha de $1',
-'revision-info' => 'Revisión a fecha de $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisión a fecha de $1; $2',
'previousrevision' => '←Revisión anterior',
'nextrevision' => 'Revisión siguiente→',
'currentrevisionlink' => 'Revisión actual',
@@ -750,7 +722,6 @@ El motivu dau por $3 ye ''$2''",
Lleenda: '''(act)''' = diferencies cola versión actual,
'''(cab)''' = diferencies cola versión anterior, '''m''' = edición menor.",
'history-fieldset-title' => 'Navegar pel historial',
-'deletedrev' => '[esborráu]',
'histfirst' => 'Primera',
'histlast' => 'Cabera',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -759,59 +730,58 @@ Lleenda: '''(act)''' = diferencies cola versión actual,
# Revision feed
'history-feed-title' => 'Historial de revisiones',
'history-feed-description' => "Historial de revisiones d'esta páxina na wiki",
-'history-feed-item-nocomment' => '$1 en $2', # user at time
+'history-feed-item-nocomment' => '$1 en $2',
'history-feed-empty' => 'La páxina solicitada nun esiste.
Seique fuera esborrada o renomada na wiki.
Prueba a [[Special:Search|buscar na wiki]] otres páxines nueves.',
# Revision deletion
-'rev-deleted-comment' => '(comentariu elimináu)',
-'rev-deleted-user' => "(nome d'usuariu elimináu)",
-'rev-deleted-event' => '(aición de rexistru eliminada)',
-'rev-deleted-text-permission' => "Esta revisión de la páxina foi eliminada de los archivos públicos.
-Pue haber detalles nel [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistru d'esborraos].",
-'rev-deleted-text-view' => "Esta revisión de la páxina foi eliminada de los archivos públicos.
-Como alministrador d'esti sitiu pues vela; pue haber detalles nel [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistru d'esborraos].",
-'rev-delundel' => 'amosar/esconder',
-'revisiondelete' => 'Esborrar/restaurar revisiones',
-'revdelete-nooldid-title' => 'Revisión de destín non válida',
-'revdelete-nooldid-text' => 'Nun especificasti una revisión o revisiones de destín sobre les que realizar esta función, la revisión especificada nun esiste, o tas intentando ocultar la revisión actual.',
-'revdelete-toomanytargets-title' => 'Demasiaos oxetivos',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisión seleicionada|Revisiones seleicionaes}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Seleicionáu un eventu de rexistru|Seleicionaos eventos de rexistru}}:'''",
-'revdelete-text' => "'''Les revisiones y eventos eliminaos van siguir apaeciendo nel historial de la páxina
+'rev-deleted-comment' => '(comentariu elimináu)',
+'rev-deleted-user' => "(nome d'usuariu elimináu)",
+'rev-deleted-event' => '(aición de rexistru eliminada)',
+'rev-deleted-text-permission' => "Esta revisión de la páxina foi eliminada de los archivos públicos.
+Pue haber detalles nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistru d'esborraos].",
+'rev-deleted-text-view' => "Esta revisión de la páxina foi eliminada de los archivos públicos.
+Como alministrador d'esti sitiu pues vela; pue haber detalles nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistru d'esborraos].",
+'rev-delundel' => 'amosar/esconder',
+'revisiondelete' => 'Esborrar/restaurar revisiones',
+'revdelete-nooldid-title' => 'Revisión de destín non válida',
+'revdelete-nooldid-text' => 'Nun especificasti una revisión o revisiones de destín sobre les que realizar esta función, la revisión especificada nun esiste, o tas intentando ocultar la revisión actual.',
+'revdelete-selected' => "'''{{PLURAL:$2|Revisión seleicionada|Revisiones seleicionaes}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Seleicionáu un eventu de rexistru|Seleicionaos eventos de rexistru}}:'''",
+'revdelete-text' => "'''Les revisiones y eventos eliminaos van siguir apaeciendo nel historial de la páxina
y nos rexistros, pero parte del so conteníu nun va ser accesible al públicu.'''
Otros alministrados de {{SITENAME}} van siguir pudiendo acceder al conteníu escondíu
y puen restauralu de nuevo al traviés d'esta mesma interfaz, a nun ser que s'establezan
restricciones adicionales.",
-'revdelete-legend' => 'Establecer restricciones de visibilidá',
-'revdelete-hide-text' => 'Esconder testu de revisión',
-'revdelete-hide-name' => 'Esconder aición y oxetivu',
-'revdelete-hide-comment' => "Esconder comentariu d'edición",
-'revdelete-hide-user' => "Esconder el nome d'usuariu/IP del editor",
-'revdelete-hide-restricted' => 'Aplicar estes restricciones a los alministradores y candar la so interfaz',
-'revdelete-suppress' => 'Eliminar datos de los alministradores lo mesmo que los de los demás',
-'revdelete-hide-image' => 'Esconder el conteníu del archivu',
-'revdelete-unsuppress' => 'Eliminar restricciones de revisiones restauraes',
-'revdelete-log' => 'Motivu:',
-'revdelete-submit' => 'Aplicar a la revisión seleicionada',
-'revdelete-logentry' => 'camudada la visibilidá de revisiones de [[$1]]',
-'logdelete-logentry' => "camudada la visibilidá d'eventos de [[$1]]",
-'revdelete-success' => "'''Visibilidá de revisiones establecida correutamente.'''",
-'logdelete-success' => "'''Visibilidá d'eventos establecida correutamente.'''",
-'revdel-restore' => 'Camudar visibilidá',
-'pagehist' => 'Historial de la páxina',
-'deletedhist' => 'Historial elimináu',
-'revdelete-content' => 'conteníu',
-'revdelete-summary' => 'editar resume',
-'revdelete-uname' => "nome d'usuariu",
-'revdelete-restricted' => 'aplicaes les restricciones a los alministradores',
-'revdelete-unrestricted' => 'eliminaes les restricciones a los alministradores',
-'revdelete-hid' => "ocultáu'l $1",
-'revdelete-unhid' => "amosáu'l $1",
-'revdelete-log-message' => '$1 pa {{PLURAL:$2|una revisión|$2 revisiones}}',
-'logdelete-log-message' => '$1 pa {{PLURAL:$2|un eventu|$2 eventos}}',
+'revdelete-legend' => 'Establecer restricciones de visibilidá',
+'revdelete-hide-text' => 'Esconder testu de revisión',
+'revdelete-hide-image' => 'Esconder el conteníu del archivu',
+'revdelete-hide-name' => 'Esconder aición y oxetivu',
+'revdelete-hide-comment' => "Esconder comentariu d'edición",
+'revdelete-hide-user' => "Esconder el nome d'usuariu/IP del editor",
+'revdelete-hide-restricted' => 'Aplicar estes restricciones a los alministradores y candar la so interfaz',
+'revdelete-suppress' => 'Eliminar datos de los alministradores lo mesmo que los de los demás',
+'revdelete-unsuppress' => 'Eliminar restricciones de revisiones restauraes',
+'revdelete-log' => 'Motivu:',
+'revdelete-submit' => 'Aplicar a la revisión seleicionada',
+'revdelete-logentry' => 'camudada la visibilidá de revisiones de [[$1]]',
+'logdelete-logentry' => "camudada la visibilidá d'eventos de [[$1]]",
+'revdelete-success' => "'''Visibilidá de revisiones establecida correutamente.'''",
+'logdelete-success' => "'''Visibilidá d'eventos establecida correutamente.'''",
+'revdel-restore' => 'Camudar visibilidá',
+'pagehist' => 'Historial de la páxina',
+'deletedhist' => 'Historial elimináu',
+'revdelete-content' => 'conteníu',
+'revdelete-summary' => 'editar resume',
+'revdelete-uname' => "nome d'usuariu",
+'revdelete-restricted' => 'aplicaes les restricciones a los alministradores',
+'revdelete-unrestricted' => 'eliminaes les restricciones a los alministradores',
+'revdelete-hid' => "ocultáu'l $1",
+'revdelete-unhid' => "amosáu'l $1",
+'revdelete-log-message' => '$1 pa {{PLURAL:$2|una revisión|$2 revisiones}}',
+'logdelete-log-message' => '$1 pa {{PLURAL:$2|un eventu|$2 eventos}}',
# Suppression log
'suppressionlog' => 'Rexistru de supresiones',
@@ -851,63 +821,8 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'difference' => '(Diferencia ente revisiones)',
'lineno' => 'Llinia $1:',
'compareselectedversions' => 'Comparar les versiones seleicionaes',
-'visualcomparison' => 'Comparación visual',
-'wikicodecomparison' => 'Comparación wikitestu',
'editundo' => 'esfacer',
'diff-multi' => '({{PLURAL:$1|1 revisión intermedia non amosada|$1 revisiones intermedies non amosaes}})',
-'diff-movedto' => 'treslladóse a $1',
-'diff-styleadded' => 'estilu $1 añadíu',
-'diff-added' => 'añadíu $1',
-'diff-changedto' => 'camudáu a $1',
-'diff-movedoutof' => 'quitó de $1',
-'diff-styleremoved' => 'estilu $1 elimináu',
-'diff-removed' => 'elimináu $1',
-'diff-changedfrom' => 'camudáu dende $1',
-'diff-src' => 'fonte',
-'diff-withdestination' => 'con destín $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;y $1 $2',
-'diff-width' => 'anchor',
-'diff-height' => 'altor',
-'diff-p' => "un '''parágrafu'''",
-'diff-blockquote' => "una '''cita'''",
-'diff-h1' => "un '''encabezáu (nivel 1)'''",
-'diff-h2' => "un '''encabezáu (nivel 2)'''",
-'diff-h3' => "un '''encabezáu (nivel 3)'''",
-'diff-h4' => "un '''encabezáu (nivel 4)'''",
-'diff-h5' => "un '''encabezáu (nivel 5)'''",
-'diff-pre' => "un '''bloque preformatiáu'''",
-'diff-div' => "una '''división'''",
-'diff-ul' => "una '''llista non ordenada'''",
-'diff-ol' => "una '''llista ordenada'''",
-'diff-li' => "un '''elementu de llista'''",
-'diff-table' => "una '''tabla'''",
-'diff-tbody' => "un '''conteníu de tabla'''",
-'diff-tr' => "una '''filera'''",
-'diff-td' => "una '''celda'''",
-'diff-th' => "un '''encabezáu'''",
-'diff-br' => "un '''saltu de llinia'''",
-'diff-hr' => "una '''llinia horizontal'''",
-'diff-code' => "un '''bloque de códigu d'ordenador'''",
-'diff-dl' => "una '''llista de definición'''",
-'diff-dt' => "un '''términu de definición'''",
-'diff-dd' => "una '''definición'''",
-'diff-input' => "una '''entrada'''",
-'diff-form' => "un '''formulariu'''",
-'diff-img' => "una '''imaxe'''",
-'diff-span' => "una '''portada'''",
-'diff-a' => "un '''enllaz'''",
-'diff-i' => "'''cursiva'''",
-'diff-b' => "'''negrina'''",
-'diff-strong' => "'''fuerte'''",
-'diff-em' => "'''énfasis'''",
-'diff-font' => "'''fonte'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''elimináu'''",
-'diff-tt' => "'''anchor fixáu'''",
-'diff-sub' => "'''subíndiz'''",
-'diff-sup' => "'''superíndiz'''",
-'diff-strike' => "'''tacháu'''",
# Search results
'searchresults' => 'Resultaos de la busca',
@@ -915,23 +830,20 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'searchresulttext' => 'Pa más información tocante a busques en {{SITENAME}}, vete a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Buscasti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toles páxines qu\'emprimen con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toles páxines qu\'enllacien a "$1"]])',
'searchsubtitleinvalid' => "Buscasti '''$1'''",
-'noexactmatch' => "'''Nun esiste la páxina \"\$1\".''' Pues [[:\$1|crear esta páxina]].",
-'noexactmatch-nocreate' => "'''Nun hai nenguna páxina col títulu \"\$1\".'''",
'toomanymatches' => 'Atopáronse demasiaes coincidencies, por favor fai una consulta diferente',
'titlematches' => 'Coincidencies de los títulos de la páxina',
'notitlematches' => 'Nun hai coincidencies nel títulu de la páxina',
'textmatches' => 'Coincidencies del testu de la páxina',
'notextmatches' => 'Nun hai coincidencies nel testu de la páxina',
-'prevn' => 'previos $1',
-'nextn' => 'siguientes $1',
-'viewprevnext' => 'Ver ($1) ($2) ($3)',
+'prevn' => 'previos {{PLURAL:$1|$1}}',
+'nextn' => 'siguientes {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opciones de busca',
'searchmenu-exists' => "'''Hai una páxina nomada \"[[\$1]]\" nesta wiki'''",
'searchmenu-new' => "'''¡Crear la páxina \"[[:\$1]]\" nesta wiki!'''",
'searchhelp-url' => 'Help:Conteníos',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Restolar páxines con esti prefixu]]',
'searchprofile-articles' => 'Páxines de conteníu',
-'searchprofile-articles-and-proj' => 'Páxines de conteníu y de proyeutu',
'searchprofile-project' => 'Páxines de proyeutu',
'searchprofile-images' => 'Archivos',
'searchprofile-everything' => 'Too',
@@ -941,8 +853,6 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'searchprofile-images-tooltip' => 'Buscar archivos',
'searchprofile-everything-tooltip' => "Buscar tol conteníu (incluyendo páxines d'alderique)",
'searchprofile-advanced-tooltip' => 'Buscar en namespaces personalizaos',
-'prefs-search-nsdefault' => 'Buscar usando los valores por defutu:',
-'prefs-search-nscustom' => 'Buscar namespaces personalizaos:',
'search-result-size' => '$1 ({{PLURAL:$2|1 pallabra|$2 pallabres}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redireición a $1)',
@@ -959,7 +869,6 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'searchall' => 'toos',
'showingresults' => "Abaxo {{PLURAL:$1|amuésase '''un''' resultáu|amuésense '''$1''' resultaos}}, entamando col #'''$2'''.",
'showingresultsnum' => "Abaxo {{PLURAL:$3|amuésase '''un''' resultáu|amuésense '''$3''' resultaos}}, entamando col #'''$2'''.",
-'showingresultstotal' => "Amosando {{PLURAL:$4|embaxo'l resultáu '''$1''' de '''$3'''|embaxo los resultaos '''$1 - $2''' de '''$3'''}}",
'nonefound' => "'''Nota''': Por defeutu namái se busca en dalgunos de los espacios de nome. Prueba a poner delantre de la to consulta ''all:'' pa buscar en tol conteníu (inxiriendo páxines d'alderique, plantíes, etc.), o usa como prefixu l'espaciu de nome deseáu.",
'search-nonefound' => 'Nun hebo resultaos que concueyen cola consulta.',
'powersearch' => 'Buscar',
@@ -970,35 +879,26 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'search-external' => 'Busca esterna',
'searchdisabled' => "La busca en {{SITENAME}} ta desactivada. Mentanto, pues buscar en Google. Has fixate en que'l conteníu de los sos índices de {{SITENAME}} pue tar desfasáu.",
+# Quickbar
+'qbsettings' => 'Barra rápida',
+'qbsettings-none' => 'Nenguna',
+'qbsettings-fixedleft' => 'Fixa a manzorga',
+'qbsettings-fixedright' => 'Fixa a mandrecha',
+'qbsettings-floatingleft' => 'Flotante a manzorga',
+'qbsettings-floatingright' => 'Flotante a mandrecha',
+
# Preferences page
'preferences' => 'Preferencies',
'mypreferences' => 'Les mios preferencies',
'prefs-edits' => "Númberu d'ediciones:",
'prefsnologin' => 'Non identificáu',
-'prefsnologintext' => 'Necesites tar <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} identificáu]</span> pa camudar les preferencies d\'usuariu.',
-'prefsreset' => 'Les preferencies fueron restablecíes a los valores por defeutu.',
-'qbsettings' => 'Barra rápida',
-'qbsettings-none' => 'Nenguna',
-'qbsettings-fixedleft' => 'Fixa a manzorga',
-'qbsettings-fixedright' => 'Fixa a mandrecha',
-'qbsettings-floatingleft' => 'Flotante a manzorga',
-'qbsettings-floatingright' => 'Flotante a mandrecha',
+'prefsnologintext' => 'Necesites tar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} identificáu]</span> pa camudar les preferencies d\'usuariu.',
'changepassword' => 'Camudar clave',
-'skin' => 'Apariencia',
+'prefs-skin' => 'Apariencia',
'skin-preview' => 'Previsualizar',
-'math' => 'Fórmules matemátiques',
-'dateformat' => 'Formatu de fecha',
+'prefs-math' => 'Fórmules matemátiques',
'datedefault' => 'Ensin preferencia',
-'datetime' => 'Fecha y hora',
-'math_failure' => 'Fallu al revisar la fórmula',
-'math_unknown_error' => 'error desconocíu',
-'math_unknown_function' => 'función desconocida',
-'math_lexing_error' => 'Error lléxicu',
-'math_syntax_error' => 'error de sintaxis',
-'math_image_error' => 'Falló la convesión PNG; comprueba que tea bien la instalación de latex, dvips, gs y convert',
-'math_bad_tmpdir' => "Nun se pue escribir o crear el direutoriu temporal 'math'",
-'math_bad_output' => "Nun se pue escribir o crear el direutoriu de salida 'math'",
-'math_notexvc' => "Falta l'executable 'texvc'; por favor mira 'math/README' pa configuralo.",
+'prefs-datetime' => 'Fecha y hora',
'prefs-personal' => 'Datos personales',
'prefs-rc' => 'Cambeos recientes',
'prefs-watchlist' => 'Llista de vixilancia',
@@ -1010,7 +910,7 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'prefs-resetpass' => 'Camudar clave',
'saveprefs' => 'Guardar preferencies',
'resetprefs' => 'Volver a les preferencies por defeutu',
-'textboxsize' => 'Edición',
+'prefs-editing' => 'Edición',
'prefs-edit-boxsize' => "Tamañu de la ventana d'edición.",
'rows' => 'Files:',
'columns' => 'Columnes:',
@@ -1024,9 +924,7 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'recentchangescount' => "Númberu d'ediciones amosaes nes páxines de cambeos recientes, historiales de páxines y rexistros, por defeutu:",
'savedprefs' => 'Les tos preferencies quedaron grabaes.',
'timezonelegend' => 'Zona horaria:',
-'timezonetext' => '¹Diferencia horaria ente la UTC y la to hora llocal.',
'localtime' => 'Hora llocal:',
-'timezoneselect' => 'Zona horaria:',
'timezoneuseserverdefault' => 'Usar el sirvidor preferíu',
'timezoneuseoffset' => 'Otru (especificar diferencia)',
'timezoneoffset' => 'Diferencia¹:',
@@ -1047,12 +945,32 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'prefs-namespaces' => 'Espacios de nome',
'defaultns' => 'Buscar por defeutu nestos espacios de nome:',
'default' => 'por defeutu',
-'files' => 'Archivos',
+'prefs-files' => 'Archivos',
'prefs-custom-css' => 'CSS personalizada',
'prefs-custom-js' => 'JS personalizada',
+'youremail' => 'Corréu electrónicu:',
+'username' => "Nome d'usuariu:",
+'uid' => "Númberu d'usuariu:",
+'prefs-memberingroups' => 'Miembru {{PLURAL:$1|del grupu|de los grupos}}:',
+'yourrealname' => 'Nome real:',
+'yourlanguage' => 'Idioma de los menús:',
+'yourvariant' => 'Variante llingüística:',
+'yournick' => 'Firma:',
+'badsig' => 'Firma cruda non válida; comprueba les etiquetes HTML.',
+'badsiglength' => 'La to robla ye demasiao llarga.
+Ha tener menos de $1 {{PLURAL:$1|caráuter|carauteres}}.',
+'yourgender' => 'Xéneru:',
+'gender-unknown' => 'Non especificáu',
+'gender-male' => 'Masculín',
+'gender-female' => 'Femenín',
+'email' => 'Corréu',
+'prefs-help-realname' => "El nome real ye opcional y si decides conseñalu va ser usáu p'atribuyite'l to trabayu.",
+'prefs-help-email' => "La direición de corréu ye opcional, pero permite unviate una clave nueva si escaeces la to clave.
+Tamién pues escoyer permitir a los demás contautar contigo al traviés de la to páxina d'usuariu o d'alderique ensin necesidá de revelar la to identidá.",
+'prefs-help-email-required' => 'Necesítase una direición de corréu electrónicu.',
# User rights
-'userrights' => "Remanamientu de derechos d'usuariu", # Not used as normal message but as header for the special page itself
+'userrights' => "Remanamientu de derechos d'usuariu",
'userrights-lookup-user' => "Remanamientu de grupos d'usuariu",
'userrights-user-editname' => "Escribi un nome d'usuariu:",
'editusergroup' => "Modificar grupos d'usuariu",
@@ -1136,6 +1054,8 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'right-editprotected' => 'Editar les páxines protexíes (ensin proteición en cascada)',
'right-editinterface' => "Editar la interfaz d'usuariu",
'right-editusercssjs' => "Editar los archivos CSS y JS d'otros usuarios",
+'right-editusercss' => "Editar los archivos CSS d'otros usuarios",
+'right-edituserjs' => "Editar los archivos JS d'otros usuarios",
'right-rollback' => "Revertir rápido a un usuariu qu'editó una páxina determinada",
'right-markbotedits' => 'Marcar les ediciones revertíes como ediciones de bot',
'right-noratelimit' => 'Nun tar afeutáu polos llímites de tasa',
@@ -1225,6 +1145,8 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
# Recent changes linked
'recentchangeslinked' => 'Cambeos rellacionaos',
+'recentchangeslinked-feed' => 'Cambeos rellacionaos',
+'recentchangeslinked-toolbox' => 'Cambeos rellacionaos',
'recentchangeslinked-title' => 'Cambeos rellacionaos con "$1"',
'recentchangeslinked-noresult' => 'Nun hebo cambeos nes páxines enllaciaes nel periodu conseñáu.',
'recentchangeslinked-summary' => "Esta ye una llista de los caberos cambeos fechos nes páxines enllaciaes dende una páxina determinada (o nos miembros d'una categoría determinada). Les páxines de [[Special:Watchlist|la to llista de vixilancia]] tán en '''negrina'''.",
@@ -1234,7 +1156,6 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
# Upload
'upload' => 'Xubir imaxe',
'uploadbtn' => 'Xubir',
-'reupload' => 'Volver a xubir',
'reuploaddesc' => 'Cancelar la xubida y tornar al formulariu de xubíes',
'uploadnologin' => 'Nun tas identificáu',
'uploadnologintext' => 'Tienes que tar [[Special:UserLogin|identificáu]] pa poder xubir archivos.',
@@ -1283,7 +1204,6 @@ Mira la [[Special:NewFiles|galería d'archivos nuevos]] pa una güeyada más vis
* Nome del archivu que se quier xubir: '''<tt>[[:$1]]</tt>'''
* Nome del archivu esistente: '''<tt>[[:$2]]</tt>'''
Por favor escueyi un nome diferente.",
-'fileexists-thumb' => "<center>'''Archivu esistente'''</center>",
'fileexists-thumbnail-yes' => "L'archivu paez ser una imaxe de tamañu menguáu ''(miniatura)''. [[$1|thumb]]
Por favor comprueba l'archivu '''<tt>[[:$1]]</tt>'''.
Si l'archivu comprobáu tien el mesmu tamañu que la imaxe orixinal, nun ye necesario xubir una miniatura extra.",
@@ -1304,7 +1224,6 @@ Si tovía asina quies xubir l'archivu, por favor vuelvi atrás y usa otru nome.
'uploaddisabled' => 'Deshabilitaes les xubíes',
'uploaddisabledtext' => "Les xubíes d'archivos tán desactivaes.",
'uploadscripted' => 'Esti archivu contién códigu HTML o scripts que puen ser interpretaos erróneamente por un navegador.',
-'uploadcorrupt' => "L'archivu ta corruptu o tien una estensión incorreuta. Por favor comprueba l'archivu y vuelve a xubilu.",
'uploadvirus' => "¡L'archivu tien un virus! Detalles: $1",
'sourcefilename' => "Nome d'orixe:",
'destfilename' => 'Nome de destín:',
@@ -1334,6 +1253,7 @@ Si'l problema persiste, contauta con un [[Special:ListUsers/sysop|alministrador]
'upload-curl-error28-text' => "El sitiu tardó demasiáu tiempu en responder. Por favor comprueba que'l sitiu ta activu, espera unos momentos y vuelve a intentalo. Igual ye meyor que lo intentes nun momentu en que tea menos sobrecargáu.",
'license' => 'Llicencia:',
+'license-header' => 'Llicencia:',
'nolicense' => 'Nenguna seleicionada',
'license-nopreview' => '(Previsualización non disponible)',
'upload_source_url' => ' (una URL válida y accesible públicamente)',
@@ -1354,6 +1274,7 @@ Calcando na cabecera d'una columna camúdase l'orde acordies con ella.",
'listfiles_count' => 'Versiones',
# File description page
+'file-anchor-link' => 'Archivu',
'filehist' => 'Historial del archivu',
'filehist-help' => "Calca nuna fecha/hora pa ver l'archivu como taba daquélla.",
'filehist-deleteall' => 'esborrar too',
@@ -1377,12 +1298,7 @@ Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|más enllaces]] a esti archivu.',
'redirectstofile' => '{{PLURAL:$1|El siguiente archivu redirixe|Los siguientes $1 archivos redirixen}} a esti archivu:',
'duplicatesoffile' => "{{PLURAL:$1|El siguiente archivu ye un duplicáu|Los siguientes $1 archivos son duplicaos}} d'esti archivu ([[Special:FileDuplicateSearch/$2|más detalles]]):",
-'sharedupload' => 'El ficheru ye de $1 y pueden que tean usandolu otros proyeutos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Por favor mira la $1 pa más información.',
-'shareduploadwiki-desc' => "La descripción de la so $1 nel direutoriu compartíu ye l'amosada embaxo.",
-'shareduploadwiki-linktext' => 'páxina de descripción del archivu',
-'noimage' => 'Nun esiste archivu dalu con esi nome, pero pues $1.',
-'noimage-linktext' => 'xubir ún',
+'sharedupload' => 'El ficheru ye de $1 y pueden que tean usandolu otros proyeutos.',
'uploadnewversion-linktext' => "Xubir una nueva versión d'esta imaxe",
# File reversion
@@ -1470,8 +1386,8 @@ Alcuérdate de comprobar otros enllaces a les plantíes enantes d'esborrales.",
'brokenredirects' => 'Redireiciones rotes',
'brokenredirectstext' => 'Les siguientes redireiciones enllacien a páxines non esistentes:',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(esborrar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'esborrar',
'withoutinterwiki' => 'Páxines ensin interwikis',
'withoutinterwiki-summary' => "Les páxines siguientes nun enllacien a versiones n'otres llingües:",
@@ -1712,7 +1628,7 @@ En casu de producise más cambeos, nun habrá más notificaciones a nun ser que
--
Pa camudar la configuración de la to llista de vixilancia, visita
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Más aida y sofitu:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1762,8 +1678,8 @@ obra con precaución.",
daquién más yá editó o revirtió la páxina.
La postrer edición foi fecha por [[User:$3|$3]] ([[User talk:$3|alderique]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "El resume de la edición yera: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Revertíes les ediciones de [[Special:Contributions/$2|$2]] ([[User talk:$2|alderique]]) hasta la cabera versión de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "El resume de la edición yera: \"''\$1''\".",
+'revertpage' => 'Revertíes les ediciones de [[Special:Contributions/$2|$2]] ([[User talk:$2|alderique]]) hasta la cabera versión de [[User:$1|$1]]',
'rollback-success' => 'Revertíes les ediciones de $1; camudáu a la última versión de $2.',
'sessionfailure' => 'Paez qu\'hai un problema cola to sesión; por precaución
cancelóse l\'aición que pidisti. Da-y al botón "Atrás" del
@@ -1783,7 +1699,6 @@ navegador pa cargar otra vuelta la páxina y vuelve a intentalo.',
'protectexpiry' => 'Caduca:',
'protect_expiry_invalid' => 'Caducidá non válida.',
'protect_expiry_old' => 'La fecha de caducidá ta pasada.',
-'protect-unchain' => 'Camudar los permisos pa tresllaos',
'protect-text' => "Equí pues ver y camudar el nivel de proteición de la páxina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nun pues camudar los niveles de proteición mentes teas bloquiáu. Esta
ye la configuración actual de la páxina '''$1''':",
@@ -1812,7 +1727,7 @@ Esta ye la configuración actual pa la páxina '''$1''':",
** Guerra d'ediciones contraproducente
** Páxina de tráficu altu",
'protect-edit-reasonlist' => 'Editar los motivos de proteición',
-'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 selmana:1 week,2 selmanes:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year,pa siempre:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 selmana:1 week,2 selmanes:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year,pa siempre:infinite',
'restriction-type' => 'Permisu:',
'restriction-level' => 'Nivel de restricción:',
'minimum-size' => 'Tamañu mínimu',
@@ -1891,7 +1806,7 @@ $1",
'contributions-title' => "Contribuciones d'usuariu pa $1",
'mycontris' => 'Les mios contribuciones',
'contribsub2' => 'De $1 ($2)',
-'nocontribs' => "Nun s'atoparon cambeos que coincidan con esi criteriu.", # Optional parameter: $1 is the user name
+'nocontribs' => "Nun s'atoparon cambeos que coincidan con esi criteriu.",
'uctop' => '(últimu cambéu)',
'month' => "Dende'l mes (y anteriores):",
'year' => "Dende l'añu (y anteriores):",
@@ -1900,6 +1815,7 @@ $1",
'sp-contributions-newbies-sub' => 'Namái les cuentes nueves',
'sp-contributions-newbies-title' => "Contribuciones d'usuariu pa cuentes nueves",
'sp-contributions-blocklog' => 'Rexistru de bloqueos',
+'sp-contributions-talk' => 'Alderique',
'sp-contributions-search' => 'Buscar contribuciones',
'sp-contributions-username' => "Direición IP o nome d'usuariu:",
'sp-contributions-submit' => 'Buscar',
@@ -1947,7 +1863,7 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
'ipbenableautoblock' => "Bloquiar automáticamente la cabera direición IP usada por esti usuariu y toles IP posteriores dende les qu'intente editar",
'ipbsubmit' => 'Bloquiar esti usuariu',
'ipbother' => 'Otru periodu:',
-'ipboptions' => '2 hores:2 hours,1 día:1 day,3 díes:3 days,1 selmana:1 week,2 selmanes:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year,pa siempre:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hores:2 hours,1 día:1 day,3 díes:3 days,1 selmana:1 week,2 selmanes:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year,pa siempre:infinite',
'ipbotheroption' => 'otru',
'ipbotherreason' => 'Otru motivu/motivu adicional:',
'ipbhidename' => "Ocultar el nome d'usuariu del rexistru de bloqueos, de la llista de bloqueos activos y de la llista d'usuarios",
@@ -1978,7 +1894,7 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
'ipblocklist-submit' => 'Buscar',
'blocklistline' => '$1, $2 bloquió a $3 ($4)',
'infiniteblock' => 'pa siempre',
-'expiringblock' => "caduca'l $1",
+'expiringblock' => "caduca'l $1 $2",
'anononlyblock' => 'namái anón.',
'noautoblockblock' => 'bloquéu automáticu desactiváu',
'createaccountblock' => 'bloquiada la creación de cuentes',
@@ -1992,7 +1908,6 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
'contribslink' => 'contribuciones',
'autoblocker' => 'Bloquiáu automáticamente porque la to direición IP foi usada recién por "[[User:$1|$1]]". El motivu del bloquéu de $1 ye: "$2"',
'blocklogpage' => 'Rexistru de bloqueos',
-'blocklog-fulllog' => 'Rexistru de bloqueos completu',
'blocklogentry' => 'bloquió [[$1]] con una caducidá de $2 $3',
'reblock-logentry' => 'camudó los parámetros de bloquéu de [[$1]] con una caducidá de $2 $3',
'blocklogtext' => "Esti ye un rexistru de los bloqueos y desbloqueos d'usuarios.
@@ -2079,7 +1994,7 @@ Nestos casos vas tener que treslladar o fusionar la páxina manualmente.",
'move-watch' => 'Vixilar esta páxina',
'movepagebtn' => 'Treslladar la páxina',
'pagemovedsub' => 'Treslláu correctu',
-'movepage-moved' => '\'\'\'"$1" treslladóse a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" treslladóse a "$2"\'\'\'',
'movepage-moved-redirect' => 'Creóse una redireición.',
'movepage-moved-noredirect' => "Desaniciose la creación d'una redireición.",
'articleexists' => "Yá hai una páxina con esi nome, o'l nome qu'escoyisti nun ye válidu. Por favor, escueyi otru nome.",
@@ -2146,8 +2061,6 @@ Por último, tamién pues usar un enllaz: p.e. [[{{#Special:Export}}/{{MediaWiki
'allmessagestext' => 'Esta ye una llista de los mensaxes de sistema disponibles nel espaciu de nomes de MediaWiki.
Por favor visita [http://www.mediawiki.org/wiki/Localisation Llocalización de MediaWiki] y [http://translatewiki.net translatewiki.net] si quies contribuyer a la llocalización xenérica de MediaWiki.',
'allmessagesnotsupportedDB' => "Nun pue usase '''{{ns:special}}:Allmessages''' porque '''\$wgUseDatabaseMessages''' ta deshabilitáu.",
-'allmessagesfilter' => 'Filtru pal nome del mensax:',
-'allmessagesmodified' => 'Amosar solo modificaos',
# Thumbnails
'thumbnail-more' => 'Agrandar',
@@ -2231,6 +2144,7 @@ Guárdalu nel to ordenador y xúbilu equí.",
'tooltip-search-fulltext' => 'Busca páxines con esti testu',
'tooltip-p-logo' => 'Portada',
'tooltip-n-mainpage' => 'Visita a la Portada',
+'tooltip-n-mainpage-description' => "Dir a la páxina d'aniciu",
'tooltip-n-portal' => 'Tocante al proyeutu, qué facer, ú atopar coses',
'tooltip-n-currentevents' => 'Información sobre los asocedíos actuales',
'tooltip-n-recentchanges' => 'Llista de los cambeos recientes de la wiki.',
@@ -2275,7 +2189,7 @@ Guárdalu nel to ordenador y xúbilu equí.",
# Attribution
'anonymous' => '{{PLURAL:$1|Usuariu anónimu|Usuarios anónimos}} de {{SITENAME}}',
'siteuser' => '{{SITENAME}} usuariu $1',
-'lastmodifiedatby' => "Esta páxina foi modificada per postrer vegada'l $1 a les $2 por $3.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Esta páxina foi modificada per postrer vegada'l $1 a les $2 por $3.",
'othercontribs' => 'Basao nel trabayu fechu por $1.',
'others' => 'otros',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|usuariu|usuarios}} $1',
@@ -2307,6 +2221,17 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
'mw_math_modern' => 'Recomendao pa navegadores modernos',
'mw_math_mathml' => 'MathML si ye posible (esperimental)',
+# Math errors
+'math_failure' => 'Fallu al revisar la fórmula',
+'math_unknown_error' => 'error desconocíu',
+'math_unknown_function' => 'función desconocida',
+'math_lexing_error' => 'Error lléxicu',
+'math_syntax_error' => 'error de sintaxis',
+'math_image_error' => 'Falló la convesión PNG; comprueba que tea bien la instalación de latex, dvips, gs y convert',
+'math_bad_tmpdir' => "Nun se pue escribir o crear el direutoriu temporal 'math'",
+'math_bad_output' => "Nun se pue escribir o crear el direutoriu de salida 'math'",
+'math_notexvc' => "Falta l'executable 'texvc'; por favor mira 'math/README' pa configuralo.",
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como supervisada',
'markaspatrolledtext' => 'Marcar esta páxina como supervisada',
@@ -2341,9 +2266,6 @@ $1",
'previousdiff' => '← Edición más antigua',
'nextdiff' => 'Diferencia más recién →',
-# Visual comparison
-'visual-comparison' => 'Comparación visual',
-
# Media information
'mediawarning' => "'''Avisu''': Esti archivu pue contener códigu maliciosu, pue ser comprometío executalu nel to sistema.",
'imagemaxsize' => 'Llendar les imáxenes nes páxines de descripción a:',
@@ -2387,7 +2309,7 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Anchor',
@@ -2514,14 +2436,14 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-unknowndate' => 'Fecha desconocida',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Voltiada horizontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotada 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Voltiada verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotada 90° a manzorga y voltiada verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotada 90° a mandrecha', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotada 90° a mandrecha y voltiada verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotada 90° a manzorga', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Voltiada horizontalmente',
+'exif-orientation-3' => 'Rotada 180°',
+'exif-orientation-4' => 'Voltiada verticalmente',
+'exif-orientation-5' => 'Rotada 90° a manzorga y voltiada verticalmente',
+'exif-orientation-6' => 'Rotada 90° a mandrecha',
+'exif-orientation-7' => 'Rotada 90° a mandrecha y voltiada verticalmente',
+'exif-orientation-8' => 'Rotada 90° a manzorga',
'exif-planarconfiguration-1' => 'formatu irregular',
'exif-planarconfiguration-2' => 'formatu planu',
@@ -2643,7 +2565,7 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-gpsmeasuremode-2' => 'Midición bidimensional',
'exif-gpsmeasuremode-3' => 'Midición tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilómetros per hora',
'exif-gpsspeed-m' => 'Milles per hora',
'exif-gpsspeed-n' => 'Nueyos',
@@ -2790,7 +2712,7 @@ Tamién pues [[Special:Watchlist/edit|usar l'editor estándar]].",
'duplicate-defaultsort' => 'Avisu: L\'atayu "$2" va trocar l\'atayu "$1".',
# Special:Version
-'version' => 'Versión', # Not used as normal message but as header for the special page itself
+'version' => 'Versión',
'version-extensions' => 'Estensiones instalaes',
'version-specialpages' => 'Páxines especiales',
'version-parserhooks' => "Hooks d'análisis sintáuticu",
@@ -2804,7 +2726,7 @@ Tamién pues [[Special:Watchlist/edit|usar l'editor estándar]].",
'version-skin-extension-functions' => "Funciones d'estensiones de pieles",
'version-hook-name' => 'Nome del hook',
'version-hook-subscribedby' => 'Suscritu por',
-'version-version' => 'Versión',
+'version-version' => '(Versión $1)',
'version-license' => 'Llicencia',
'version-software' => 'Software instaláu',
'version-software-product' => 'Productu',
diff --git a/languages/messages/MessagesAv.php b/languages/messages/MessagesAv.php
index 10e39ccf..e0addeee 100644
--- a/languages/messages/MessagesAv.php
+++ b/languages/messages/MessagesAv.php
@@ -58,17 +58,15 @@ $messages = array(
'viewsource' => 'Код бихьи',
# Login and logout pages
-'loginpagetitle' => 'Цlар бице',
-'userlogin' => 'ЦIар бице',
-'userlogout' => 'Къватlиве лъугьине',
+'userlogin' => 'ЦIар бице',
+'userlogout' => 'Къватlиве лъугьине',
# Edit pages
'savearticle' => 'Хъвай-хъвай цIунизе',
# Preferences page
-'preferences' => 'Рекъезаби',
-'math_unknown_error' => 'Лъалареб гъалатl',
-'localtime' => 'Бакlалъул заман',
+'preferences' => 'Рекъезаби',
+'localtime' => 'Бакlалъул заман',
# User rights
'userrights-user-editname' => 'ГIахьалчиясул цIар хъвай:',
@@ -87,7 +85,9 @@ $messages = array(
'newpageletter' => 'ЦI',
# Recent changes linked
-'recentchangeslinked' => 'Рухьарал хиса-басиял',
+'recentchangeslinked' => 'Рухьарал хиса-басиял',
+'recentchangeslinked-feed' => 'Рухьарал хиса-басиял',
+'recentchangeslinked-toolbox' => 'Рухьарал хиса-басиял',
# Upload
'uploadnologin' => 'Дуца цIар бицун гьечIо',
@@ -125,6 +125,9 @@ $messages = array(
'movearticle' => 'Гьумералъул цIар хисизе',
'movepagebtn' => 'Гьумералъул цlар хисизе',
+# Math errors
+'math_unknown_error' => 'Лъалареб гъалатl',
+
# Special:SpecialPages
'specialpages' => 'Хассал гьумерал',
diff --git a/languages/messages/MessagesAvk.php b/languages/messages/MessagesAvk.php
index e0223a54..9daa028c 100644
--- a/languages/messages/MessagesAvk.php
+++ b/languages/messages/MessagesAvk.php
@@ -202,7 +202,7 @@ $messages = array(
'category-media-header' => 'Ewavaf iyeltakeem koe "$1" loma',
'category-empty' => "''Bata loma va bu ok ewava noelton me ruldar''.",
'hidden-categories' => '{{PLURAL:$1|Palsena loma|Palsena loma}}',
-'hidden-category-category' => 'Palsen lomeem', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Palsen lomeem',
'category-subcat-count' => '{{PLURAL:$2|Bata loma va bata volveyloma anton digir.|Bata loma va bata volveyloma anton digir {{PLURAL:$1|volveyloma|$1 volveyloma}}, anton digir, ke $2 kotron.}}',
'category-subcat-count-limited' => 'Bata loma va {{PLURAL:$1|bata volveyloma|$1 batyona volveyloma}} digir.',
'category-article-count' => '{{PLURAL:$2|Bata loma va batu bu anton digir.|Batu bu {{PLURAL:$1|tir|$1 tid}} koe bata loma, ke $2 varon.}}',
@@ -213,10 +213,18 @@ $messages = array(
'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
-'about' => 'Icdeuca',
-'article' => 'Teliz',
-'newwindow' => '(ko ar dilk fenkur)',
-'cancel' => 'Tumeara',
+'about' => 'Icdeuca',
+'article' => 'Teliz',
+'newwindow' => '(ko ar dilk fenkur)',
+'cancel' => 'Tumeara',
+'moredotdotdot' => 'Ostik...',
+'mypage' => 'Jinafu bu',
+'mytalk' => 'Jinafo keyaksexo',
+'anontalk' => 'Prilara kan IP mane',
+'navigation' => 'Bugrablera',
+'and' => '&#32;is',
+
+# Cologne Blue skin
'qbfind' => 'Aneyara',
'qbbrowse' => 'Farura',
'qbedit' => 'Betara',
@@ -224,15 +232,8 @@ $messages = array(
'qbpageinfo' => 'Givabu',
'qbmyoptions' => 'Jinaf ikatcukseem',
'qbspecialpages' => 'Aptaf bueem',
-'moredotdotdot' => 'Ostik...',
-'mypage' => 'Jinafu bu',
-'mytalk' => 'Jinafo keyaksexo',
-'anontalk' => 'Prilara kan IP mane',
-'navigation' => 'Bugrablera',
-'and' => '&#32;is',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'NEB',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Rokla',
'returnto' => 'Dimgrablera va $1 bu.',
@@ -282,7 +283,7 @@ $messages = array(
'otherlanguages' => 'Ara ava se',
'redirectedfrom' => '(Graskan mal $1)',
'redirectpagesub' => 'Bugraskara',
-'lastmodifiedat' => 'Ironakafa betara va bu tir ba $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ironakafa betara va bu tir ba $2, $1.',
'viewcount' => 'Batu bu {{PLURAL:$1|1-on|$1 -on}} al zo ruper.',
'protectedpage' => 'Nendanu bu',
'jumpto' => 'Grablé kal',
@@ -293,7 +294,6 @@ $messages = array(
'aboutsite' => 'Icde {{SITENAME}}',
'aboutpage' => 'Project:Icdeuca',
'copyright' => 'Deraykan cek kare $1.',
-'copyrightpagename' => 'sorta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Digirarokeem',
'currentevents' => 'Noelaca yo',
'currentevents-url' => 'Project:Noelaf bif yo',
@@ -301,8 +301,6 @@ $messages = array(
'disclaimerpage' => 'Project:Jadifa walzera se',
'edithelp' => 'Pomara',
'edithelppage' => 'Help:Tokinde bubetat',
-'faq' => 'NEB',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Pomara',
'mainpage' => 'Emudexo',
'mainpage-description' => 'Emudexo',
@@ -376,10 +374,6 @@ MySQL va « <tt>$3: $4</tt> » rokla al katacer.',
« $1 »
skuyuna gan « $2 » fliok
MySQL va « $3 : $4 » rokla al dimstakser.',
-'noconnect' => 'Skalev ! Golde brubezvak, dogluyara va wikiorigak tir noelton merotisa. <br />
-$1',
-'nodb' => 'Merotisa rebara va $1 origak',
-'cachederror' => 'Batcoba tir ksudaks va erunu bu nume me zo ronusker',
'laggedslavemode' => 'Obral : bu va ironakaf tuenakseem rotir meruldar',
'readonly' => 'Beta elekana nuskera va origak',
'enterlockreason' => 'Va elekaradanda is uldinera va elekaracek bazel',
@@ -429,12 +423,10 @@ Batdume : ''$2''.",
'virus-unknownscanner' => 'megrupena kevkioxeka :',
# Login and logout pages
-'logouttitle' => 'Solgluyara',
'logouttext' => 'Rin daletoe til solgluyanaf.
Rin va {{SITENAME}} yoltiskon ware rofavel oke, bifoton kan ar yolt, va int toldogluyal.',
'welcomecreation' => '<h2>Til drumbaf, $1!</h2><p>Rinaf favesikpata su zo redur.
Me vulkul da rupeson va "Lodamaceem" bu va intaf {{SITENAME}} rotuilkal.',
-'loginpagetitle' => 'Rinafi pilkomodasiki',
'yourname' => 'Rinaf favesikyolt',
'yourpassword' => 'Rinaf remravlem',
'yourpasswordagain' => 'Va rinaf remravlem tolon bazel',
@@ -457,21 +449,7 @@ Me vulkul da rupeson va "Lodamaceem" bu va intaf {{SITENAME}} rotuilkal.',
'badretype' => 'Toloy suteyen remravlem tid menuxaf.',
'userexists' => 'Favesikyolt rinon suteyen ixam zo faver.
Va amidaf yolt gokiblal.',
-'youremail' => 'Jinafe internetmane',
-'username' => 'Favesikyolt:',
-'uid' => 'Favesikaf ID :',
-'prefs-memberingroups' => 'Bewik ke {{PLURAL:$1|lospa|lospa}}:',
-'yourrealname' => 'Rinaf ageltaf yolt*',
-'yourlanguage' => 'Walasikiava',
-'yournick' => 'Sugdara tori prilara se (do <tt><nowiki>~~~</nowiki></tt>)&nbsp;',
-'badsig' => 'Meenafa rilafa sugdara; va HTML tcala yo stujel !',
-'badsiglength' => 'Sugdara tir abrotcarsafa.
-Gotir le $1 {{PLURAL:$1|staa|staa}}.',
-'email' => '"E-mail"',
-'prefs-help-realname' => '* <strong>Votre nom</strong> (mevrebaf): ede vaon co-bazel, mu gara va rinaf webereem zo faveter.',
'loginerror' => 'Pilkomodajara',
-'prefs-help-email' => "* <strong>Adresse électronique</strong> (facultatif): permet de vous contacter depuis le site sans dévoiler votre adresse, et utilisée pour vous envoyer un nouveau mot de passe si vous l'oubliez.",
-'prefs-help-email-required' => 'E-mail mane zo kucilar.',
'nocookiesnew' => "Le compte utilisateur a été créé, mais vous n'êtes pas connecté. {{SITENAME}} utilise des cookies pour la connexion mais vous avez les cookies désactives. Merci de les activer et de vous reconnecter.",
'nocookieslogin' => '{{SITENAME}} utilise des cookies pour la connexion mais vous avez les cookies désactives. Merci de les activer et de vous reconnecter.',
'noname' => 'Va favesikyolt gobazel.',
@@ -521,8 +499,6 @@ Ta da wan zo pilkomodal, va warzaf remravlem batlize gobazel :",
'retypenew' => 'Va warzaf remravlem gruyel',
'resetpass_submit' => 'Va beksa bazel nume zo dogluyatal !',
'resetpass_success' => 'Rinaf remravlem kiewatcon su zo betar ! Nume rinafa dogluyara tir...',
-'resetpass_bad_temporary' => 'Meenaf ugaloraf remravlem.
-Rin lanon vaon al betanhal oke va warzaf al kucilal.',
'resetpass_forbidden' => 'Kona beksa tir merobetana',
'resetpass-submit-loggedin' => 'Betara va remravlem',
'resetpass-temp-password' => 'Ugaloraf remravlem :',
@@ -581,7 +557,6 @@ Rinaf tise IP mane tir $3 ise ID elekara tir #$5. Va bate ik bane mane ko kota e
'blockededitsource' => "Krent ke '''rinaf betakseem''' va '''$1''' vleveon zo betar :",
'whitelistedittitle' => 'Kucilan login ta sutelara',
'whitelistedittext' => 'Ta bubetara rin gonaskil ta $1',
-'confirmedittitle' => 'Gruyera va e-mail eruyuna ta robetara',
'confirmedittext' => 'Abdi bubetara va rinafe e-mail mane gogruyel. Kan rinaf [[Special:Preferences|favesiklodamaceem]] va rinafe e-mail mane vay plekul ise tuenal !',
'nosuchsectiontitle' => 'Me man gabot',
'nosuchsectiontext' => 'Rin yawal da va metis gabot betal.',
@@ -599,7 +574,8 @@ Vanmiae yonaru bu [[Special:Search/{{PAGENAME}}|va man buvergumvelt rotaneyal]],
oke [{{fullurl:{{FULLPAGENAME}}|action=edit}} va batu bu robetal]</span>.',
'userpage-userdoesnotexist' => '"$1" favesikpata me tir vuesteyena. Vay stujel ede va batu bu roredul ike robetal.',
'clearyourcache' => "'''Note :''' Après avoir sauvegardé, vous devez forcer le rechargement de la page pour voir les changements : '''Mozilla / Konqueror / Firefox''' : ''ctrl-shift-r'', '''IE''' : ''ctrl-f5'', '''Safari''' : ''cmd-shift-r''; '''Konqueror''' : ''f5''.",
-'usercssjsyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
+'usercssyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
+'userjsyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
'usercsspreview' => "'''Rappelez-vous que vous êtes en train de prévisualiser votre propre feuille css et qu'elle n'a pas encore été enregistrée !'''",
'userjspreview' => "'''Rappelez-vous que vous êtes en train de visualiser ou de tester votre code javascript et qu'il n'a pas encore été enregistré !'''",
'updated' => '(Nuskeyen)',
@@ -642,11 +618,11 @@ Rodimal aze va tisu bu robetal oke [[Special:UserLogin|va int rodogluyal oke rop
'permissionserrors' => 'Rictajaks',
'permissionserrorstext' => 'Ta mana askira me zo rictal, golde {{PLURAL:$1|lazava|lazava se}}:',
'permissionserrorstext-withaction' => 'Rin icde $2 me zo rictal, {{PLURAL:$1|yoke|yoke}} :',
-'recreate-deleted-warn' => "'''Obral: Rin va sulayanu bu djutolredul.'''
+'recreate-moveddeleted-warn' => "'''Obral: Rin va sulayanu bu djutolredul.'''
Gokrafial ede tolredura va batu bu tir vodanhaf.
Sulara \"log\" va batu bu krafiason batlize zo nedir :",
-'deleted-notice' => 'Sulayanu bu.
+'moveddeleted-notice' => 'Sulayanu bu.
"Log" sulara va batu bu vleveon vuesteson zo nedir.',
'edit-conflict' => 'Rupera va koboda.',
'edit-already-exists' => 'Buredura tir merotisa.
@@ -674,7 +650,7 @@ Bazeyena lazava ke $3 tir ''$2''.",
'currentrev' => 'Noelaf siatos',
'currentrev-asof' => 'Noeltaf betaks va $1',
'revisionasof' => 'Siatos ba $1',
-'revision-info' => 'Dimplekura va $1 gan $2', # Additionally available: $3: revision id
+'revision-info' => 'Dimplekura va $1 gan $2',
'previousrevision' => '← Abdif siatos',
'nextrevision' => 'Radimif siatos →',
'currentrevisionlink' => 'Wira va noelaf siatos',
@@ -686,7 +662,6 @@ Bazeyena lazava ke $3 tir ''$2''.",
'histlegend' => 'Pebusiki : (noel-) = amiduca gu noelaf siatos ,
(iron-) = amiduca gu abdif siatos, <b>m</b> = betamaks',
'history-fieldset-title' => 'Izvotexulera',
-'deletedrev' => '[sulayan]',
'histfirst' => 'Tel losavsaf',
'histlast' => 'Ironokaf',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -695,7 +670,7 @@ Bazeyena lazava ke $3 tir ''$2''.",
# Revision feed
'history-feed-title' => 'Betarizvot',
'history-feed-description' => 'Betarizvot va batu wikibu',
-'history-feed-item-nocomment' => '$1 koe $2', # user at time
+'history-feed-item-nocomment' => '$1 koe $2',
'history-feed-empty' => 'Erunu bu me tir.
Ont zo sulayar ont zo yoltayar.
Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
@@ -712,12 +687,12 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
'logdelete-selected' => "'''{{PLURAL:\$1|Reban \"log\" bif|Yon reban \"log\" bif}} :'''",
'revdelete-legend' => 'Skus irutareem',
'revdelete-hide-text' => 'Palsera va betaracek',
+'revdelete-hide-image' => 'Palsera va iyeltakcek',
'revdelete-hide-name' => 'Palsera va tegira is xala',
'revdelete-hide-comment' => 'Palsera va betarasebusiki',
'revdelete-hide-user' => 'Palsera va sutes favesikyolt iku IP mane',
'revdelete-hide-restricted' => 'Rewara va bat irutareem pu kot ristusik az elekara va bati walasiki',
'revdelete-suppress' => 'Origsulara mal ristusik lidam artan',
-'revdelete-hide-image' => 'Palsera va iyeltakcek',
'revdelete-unsuppress' => 'Dimirutara va dimplekun betaks yo',
'revdelete-log' => 'Lazava :',
'revdelete-submit' => 'Ko reban siatos rewar',
@@ -737,6 +712,7 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
'revdelete-unhid' => '$1 volpals-',
'revdelete-log-message' => '$1 tori $2 {{PLURAL:$2|betara|betara}}',
'logdelete-log-message' => '$1 tori $2 {{PLURAL:$2|bif|bif}}',
+'revdelete-edit-reasonlist' => 'Betara va sularalazava',
# Suppression log
'suppressionlog' => 'Sulara "log"',
@@ -780,16 +756,14 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
'searchresulttext' => 'Ta lo giva icde aneyara ko {{SITENAME}}, va [[{{MediaWiki:Helppage}}|{{int:help}}]] teliz disukel.',
'searchsubtitle' => 'Rin va \'\'\'[[:$1]]\'\'\' aneyayal ([[Special:Prefixindex/$1|kotu bu dem "$1" toza]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kotu bu gluyasu va "$1"]])',
'searchsubtitleinvalid' => "Rin va '''$1''' aneyayal",
-'noexactmatch' => "'''Manu \"\$1\" bu me tir.''' Va [[:\$1|batu bu]] roredul.",
-'noexactmatch-nocreate' => "'''Me tir bu dem \"\$1\" vergumvelt.'''",
'toomanymatches' => 'Slik trasiks, vay va amidafa aneyara yawal',
'titlematches' => 'Vadjesaceem vanmia vergumvelteem',
'notitlematches' => 'Mek telizvergumvelt ruldas va erune',
'textmatches' => 'Vadjesaceem ko krenteem',
'notextmatches' => 'Mek krentvergumvelt ruldas va erune',
-'prevn' => '$1 abduef',
-'nextn' => '$1 radimef',
-'viewprevnext' => 'Va ($1) ik ($2) ik ($3) disukel.',
+'prevn' => '{{PLURAL:$1|$1}} abduef',
+'nextn' => '{{PLURAL:$1|$1}} radimef',
+'viewprevnext' => 'Va ($1 {{int:pipe-separator}} $2) ik ($3) disukel.',
'searchhelp-url' => 'Help:Pomara',
'searchprofile-images' => 'Iyeltak',
'searchprofile-everything' => 'Kotcoba',
@@ -812,7 +786,6 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
'searchall' => 'kot',
'showingresults' => "Vlevefa nedira va {{PLURAL:$1|'''1''' trasiks|'''$1''' trasiks}} dem #'''$2''' toza.",
'showingresultsnum' => "Nedira va '''$3''' trasiks male #'''$2'''.",
-'showingresultstotal' => "Vleveon nedira va {{PLURAL:$4|trasiks '''$1''' va '''$3'''|trasiks '''$1 - $2''' va '''$3'''}}",
'nonefound' => "'''Straga''': Anton yoltxo omavon zo aneyar.
Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce abdueosta va galpeno yoltxo favel.",
'powersearch' => 'Aneyara',
@@ -823,35 +796,26 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'search-external' => 'Divafa aneyara',
'searchdisabled' => "<p>La fonction de recherche sur l'intégralité du texte a été temporairement désactivée à cause de la grande charge que cela impose au serveur. Nous espérons la rétablir prochainement lorsque nous disposerons d'un serveur plus puissant. En attendant, vous pouvez faire la recherche avec Google:</p>",
+# Quickbar
+'qbsettings' => 'Tuweltara va xekobla',
+'qbsettings-none' => 'Mek',
+'qbsettings-fixedleft' => 'Roneon titickanaf',
+'qbsettings-fixedright' => 'Talteon titickanaf',
+'qbsettings-floatingleft' => 'Roneon ezas',
+'qbsettings-floatingright' => 'Talteon ezas',
+
# Preferences page
'preferences' => 'Lodamaceem',
'mypreferences' => 'Jinaf lodamaceem',
'prefs-edits' => 'Ota va betaks :',
'prefsnologin' => 'Dogluyariskaf',
-'prefsnologintext' => 'Ede va favesiklodamaceem djubetal, gotil <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} dogluyarakiraf]</span>.',
-'prefsreset' => 'Les préférences ont été rétablies à partir de la version enregistrée.',
-'qbsettings' => 'Tuweltara va xekobla',
-'qbsettings-none' => 'Mek',
-'qbsettings-fixedleft' => 'Roneon titickanaf',
-'qbsettings-fixedright' => 'Talteon titickanaf',
-'qbsettings-floatingleft' => 'Roneon ezas',
-'qbsettings-floatingright' => 'Talteon ezas',
+'prefsnologintext' => 'Ede va favesiklodamaceem djubetal, gotil <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dogluyarakiraf]</span>.',
'changepassword' => 'Betara va remravlem',
-'skin' => 'Laviuca',
+'prefs-skin' => 'Laviuca',
'skin-preview' => 'Abdiwira',
-'math' => 'Rendu des maths',
-'dateformat' => 'Evlabreviz',
+'prefs-math' => 'Rendu des maths',
'datedefault' => 'Megelukon',
-'datetime' => 'Evla is bartiv',
-'math_failure' => 'Erreur math',
-'math_unknown_error' => 'erreur indéterminée',
-'math_unknown_function' => 'megrupen fliok',
-'math_lexing_error' => 'ravlemafa rokla',
-'math_syntax_error' => 'erurafa rokla',
-'math_image_error' => "La conversion en PNG a échouée, vérifiez l'installation de Latex, dvips, gs et convert",
-'math_bad_tmpdir' => 'Redura ik sutera ko ugaloraxo tid merotisa',
-'math_bad_output' => 'Redura ik sutera ko divaxo tid merotisa',
-'math_notexvc' => "L'éxécutable « texvc » est introuvable. Lisez math/README pour le configurer.",
+'prefs-datetime' => 'Evla is bartiv',
'prefs-personal' => 'Ilkagiveem',
'prefs-rc' => 'Noeltaf betakseem',
'prefs-watchlist' => 'Suzdasiki',
@@ -863,7 +827,7 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'prefs-resetpass' => 'Betara va remravlem',
'saveprefs' => 'Va lodamaceem tuená',
'resetprefs' => 'Va lodamceem dimplekú',
-'textboxsize' => 'Sutelaxo',
+'prefs-editing' => 'Sutelaxo',
'prefs-edit-boxsize' => 'Lum ke betaradilk.',
'rows' => 'Emacekeem',
'columns' => 'Brizeem',
@@ -876,9 +840,7 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'recentchangescount' => 'Omavon gonedina ota va noeltaf betakseem ik buizvot ik "log" :',
'savedprefs' => 'Lodamaceem su zo giwar.',
'timezonelegend' => 'Bartivxo',
-'timezonetext' => "Si vous ne précisez pas de décalage horaire, c'est l'heure de l'Europe de l'ouest qui sera utilisée.",
'localtime' => 'Lizukaf bartiv :',
-'timezoneselect' => 'Bartivxo :',
'timezoneoffset' => 'Bartivferenuca :',
'servertime' => 'Bartiv ke zanisiko :',
'guesstimezone' => 'Favera va voda ke exulesiki',
@@ -887,10 +849,24 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'prefs-namespaces' => 'Yoltxo',
'defaultns' => 'Omavon, aneyara ko bato yoltxo se :',
'default' => 'omava',
-'files' => 'Iyeltak se',
+'prefs-files' => 'Iyeltak se',
+'youremail' => 'Jinafe internetmane',
+'username' => 'Favesikyolt:',
+'uid' => 'Favesikaf ID :',
+'prefs-memberingroups' => 'Bewik ke {{PLURAL:$1|lospa|lospa}}:',
+'yourrealname' => 'Rinaf ageltaf yolt*',
+'yourlanguage' => 'Walasikiava',
+'yournick' => 'Sugdara tori prilara se (do <tt><nowiki>~~~</nowiki></tt>)&nbsp;',
+'badsig' => 'Meenafa rilafa sugdara; va HTML tcala yo stujel !',
+'badsiglength' => 'Sugdara tir abrotcarsafa.
+Gotir le $1 {{PLURAL:$1|staa|staa}}.',
+'email' => '"E-mail"',
+'prefs-help-realname' => '* <strong>Votre nom</strong> (mevrebaf): ede vaon co-bazel, mu gara va rinaf webereem zo faveter.',
+'prefs-help-email' => "* <strong>Adresse électronique</strong> (facultatif): permet de vous contacter depuis le site sans dévoiler votre adresse, et utilisée pour vous envoyer un nouveau mot de passe si vous l'oubliez.",
+'prefs-help-email-required' => 'E-mail mane zo kucilar.',
# User rights
-'userrights' => 'Pofera va favesikrokeem', # Not used as normal message but as header for the special page itself
+'userrights' => 'Pofera va favesikrokeem',
'userrights-lookup-user' => 'Pofera va favesikeem',
'userrights-user-editname' => 'Va favesikyolt bazel',
'editusergroup' => 'Betara va favesikeem lospa',
@@ -965,6 +941,8 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'right-editprotected' => 'Betara va nendanu bu (a stoyakorafa nendara)',
'right-editinterface' => 'Betara va favesikafi walasiki',
'right-editusercssjs' => 'Betara va CSS ik JS iyeltak ke ar favesik',
+'right-editusercss' => 'Betara va CSS iyeltak ke ar favesik',
+'right-edituserjs' => 'Betara va JS iyeltak ke ar favesik',
'right-rollback' => 'Kaliafa dimsulara va ironokaf favesik betayas va aptafu bu',
'right-import' => 'Bukoburera mal ari wiki',
'right-importupload' => 'Bukoburera mal iyeltakkalvajara',
@@ -1030,6 +1008,8 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
# Recent changes linked
'recentchangeslinked' => 'Gluyasikisuzdara',
+'recentchangeslinked-feed' => 'Gluyasikisuzdara',
+'recentchangeslinked-toolbox' => 'Gluyasikisuzdara',
'recentchangeslinked-title' => 'Betakseem skedas va "$1"',
'recentchangeslinked-noresult' => 'Meka betara va gluyasikikirafu bu remi bata rekola.',
'recentchangeslinked-summary' => "Batu aptafu bu va ironokaf betakseem va gluyasikikirafu bu vexalar.
@@ -1040,7 +1020,6 @@ Bu koe [[Special:Watchlist|rinafi suzdasiki]] tid '''vastaakorafu'''.",
# Upload
'upload' => 'Iyeltakkalvajara',
'uploadbtn' => 'Va iyeltak kalvajá',
-'reupload' => 'Tolon kalvajá',
'reuploaddesc' => 'Empara va kalvajara nume dimpira',
'uploadnologin' => 'Dogluyariskaf',
'uploadnologintext' => 'Gotil [[Special:UserLogin|dogluyarakiraf]] ta kalvajara va iyeltak mo zanisiko.',
@@ -1086,7 +1065,6 @@ Til lanaf da va bat iyeltak djubetal ? [[$1|thumb]]",
* Yolt ke kalvajayan iyeltak : '''<tt>[[:$1]]</tt>'''
* Yolt ke tis iyeltak : '''<tt>[[:$2]]</tt>'''
Va amidaf yolt vay kiblal !",
-'fileexists-thumb' => "<center>'''Kruldes iyeltak'''</center>",
'fileexists-thumbnail-yes' => "Iyeltak nuvelar da tir lumamafa ewava ''(aluk)''. [[$1|thumb]]
Vay va '''<tt>[[:$1]]</tt>''' iyeltak stujel.
Ede stujen iyeltak tir mila lumanhafa ewava, va aptaf aluk me kalvajal !",
@@ -1104,8 +1082,6 @@ Ede va man iyeltak soe co-djukalvajal, vay dimpil ise va warzaf yolt favel. [[Fi
'uploaddisabled' => 'Skalev, staksera va iyeltak tir gritegirayan.',
'uploaddisabledtext' => 'Iyeltakkalvajara tir gritegirayana.',
'uploadscripted' => 'Bat iyeltak va HTML ok Script beksa rotir narujutuna gan web exulesiki ruldar.',
-'uploadcorrupt' => 'Bat iyeltak tir avonanaf ok lumiskaf oke va mewadaf yolt digir.
-Va iyeltak gonageltal.',
'uploadvirus' => 'Iyeltak va kio ruldar ! Pinta se : $1',
'sourcefilename' => 'Klitiyeltakyolt:',
'destfilename' => 'Warzaf iyeltakyolt:',
@@ -1126,6 +1102,7 @@ Sulara \"log\" va batu bu krafiason batlize zo nedir :",
'upload-curl-error28' => 'Kalvajara kaikiana',
'license' => 'Gelfara :',
+'license-header' => 'Gelfara :',
'nolicense' => 'Mecoba rebana',
'license-nopreview' => '(Abdinedira me zo roderaykar)',
'upload_source_url' => ' (enafe sanegon rovansane URL mane)',
@@ -1143,6 +1120,7 @@ Sulara \"log\" va batu bu krafiason batlize zo nedir :",
'listfiles_count' => 'Siatos',
# File description page
+'file-anchor-link' => 'Ewava',
'filehist' => 'Iyeltakizvot',
'filehist-help' => 'Ta da va iyeltak wil dum in batoulon awir va evla/bartiv vulegal !',
'filehist-deleteall' => 'Sulara va kotcoba',
@@ -1162,12 +1140,7 @@ Sulara \"log\" va batu bu krafiason batlize zo nedir :",
'morelinkstoimage' => 'Rupera va [[Special:WhatLinksHere/$1|lofi skedasiki]] va bat iyeltak.',
'redirectstofile' => 'Vlevef {{PLURAL:$1|graskan iyeltak|$1 graskan iyeltak}} va bat iyeltak :',
'duplicatesoffile' => 'Bat {{PLURAL:$1|iyeltak tir|$1 iyeltak tid}} jontolaca ke bat iyeltak ([[Special:FileDuplicateSearch/$2|lo pinta]]) :',
-'sharedupload' => 'Bat iyeltak tir ke $1 ise gan ar abdumimaks zo rofaver.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ta lo giva va $1 vay disukel !',
-'shareduploadwiki-desc' => 'Pimtara icde intaf $1 vleveon zo nedir.',
-'shareduploadwiki-linktext' => 'Iyeltakpimtarabu',
-'noimage' => 'Mek iyeltak dem bat yolt tir voxe rotil va $1.',
-'noimage-linktext' => 'kalvajara',
+'sharedupload' => 'Bat iyeltak tir ke $1 ise gan ar abdumimaks zo rofaver.',
'uploadnewversion-linktext' => 'Kalvajara va warzaf siatos ke bat iyeltak',
# File reversion
@@ -1241,8 +1214,8 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
'brokenredirects' => 'Arlizafa graskaraja yo',
'brokenredirectstext' => 'Kal metisu bu bata graskara stad :',
-'brokenredirects-edit' => '(betara)',
-'brokenredirects-delete' => '(sulara)',
+'brokenredirects-edit' => 'betara',
+'brokenredirects-delete' => 'sulara',
'withoutinterwiki' => 'Avagluyasikiiskaf bueem',
'withoutinterwiki-summary' => 'Batu bu se va aravaf siatos me skedad :',
@@ -1465,7 +1438,7 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your watchlist settings, visit
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Feedback and further assistance:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1512,8 +1485,8 @@ Bazen bartiv tir tel ke zanisiko.',
'alreadyrolled' => 'Dimplekura va ironokafa betara va "$1" teliz gan [[User:$2|$2]] ([[User talk:$2|Prilara]]) me zo roskur; artan va teliz ixam al betar oke al dimplekur.
Ironokafa betara gan [[User:$3|$3]] ([[User talk:$3|Prilara]]) zo skuyur.',
-'editcomment' => "Betaravildeks tiyir : ''« $1 »''.", # only shown if there is an edit comment
-'revertpage' => 'Dimplekuyun betakseem ke [[Special:Contributions/$2|$2]] ([[User talk:$2|Prilara]]); dim ironokaf siatos ke [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Betaravildeks tiyir : ''« $1 »''.",
+'revertpage' => 'Dimplekuyun betakseem ke [[Special:Contributions/$2|$2]] ([[User talk:$2|Prilara]]); dim ironokaf siatos ke [[User:$1|$1]]',
'rollback-success' => 'Dimplekun betaks yo gan $1; dimpira ko ironokaf siatos ke $2.',
# Protect
@@ -1529,7 +1502,6 @@ Ironokafa betara gan [[User:$3|$3]] ([[User talk:$3|Prilara]]) zo skuyur.',
'protectexpiry' => 'Edjatena :',
'protect_expiry_invalid' => 'Edjatena me tir enafa.',
'protect_expiry_old' => 'Edjatena tir abdiugalafa.',
-'protect-unchain' => 'Volelekara va arrundararictara',
'protect-text' => "Rin va nendareka ke '''<nowiki>$1</nowiki>''' bu batlize rowil nume robetal.",
'protect-locked-access' => "Rinafa pata va betara va nendareka me rictar.
Noeltaf plekukseem ke '''$1''' bu batlize tid :",
@@ -1542,7 +1514,7 @@ Noeltaf plekukseem ke '''$1''' bu batlize tid :",
'protect-expiring' => 'edjatena ba $1 (UTC)',
'protect-cascade' => 'Nendan bueem dene batu bu (stoyakorafa nendara)',
'protect-cantedit' => 'Va nendarekeem va batu bu me robetal kire va betararoka me deraykal.',
-'protect-expiry-options' => '1 bartiv:1 hour,1 viel:1 day,1 perka:1 week,2 perka:2 weeks,1 aksat:1 month,3 aksat:3 months,6 aksat:6 months,1 tanda:1 year,kotabon:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 bartiv:1 hour,1 viel:1 day,1 perka:1 week,2 perka:2 weeks,1 aksat:1 month,3 aksat:3 months,6 aksat:6 months,1 tanda:1 year,kotabon:infinite',
'restriction-type' => 'Rictara :',
'restriction-level' => 'Irutareka :',
'minimum-size' => 'Volcugaf lum',
@@ -1603,7 +1575,7 @@ $1',
'contributions-title' => 'Favesikwebekseem icde $1',
'mycontris' => 'Jinaf webekseem',
'contribsub2' => 'Tori $1 ($2)',
-'nocontribs' => 'Meka betara vadjesa va bata luda se al zo trasir.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Meka betara vadjesa va bata luda se al zo trasir.',
'uctop' => ' (ironokaf)',
'month' => 'Mali aksat (is logaveon) :',
'year' => 'Mali ilana (is logaveon) :',
@@ -1611,6 +1583,9 @@ $1',
'sp-contributions-newbies' => 'Anton nedira va warzafavesikaf webekseem',
'sp-contributions-newbies-sub' => 'Tori warzaf favesikeem',
'sp-contributions-blocklog' => 'Elekara va "log" bu',
+'sp-contributions-deleted' => 'Sulayan favesikaf webeks',
+'sp-contributions-talk' => 'Keyaksera',
+'sp-contributions-userrights' => 'Pofera va favesikrokeem',
'sp-contributions-search' => 'Aneyara va webeks',
'sp-contributions-username' => 'IP mane ok favesikyolt :',
'sp-contributions-submit' => 'Aneyara',
@@ -1650,7 +1625,7 @@ Va lazavanha (tulon ozwason va cidayanu bu se) vlevon bazel !',
'ipbemailban' => 'Djira va favesik icde "email" staksera',
'ipbsubmit' => 'Elekara va bate mane',
'ipbother' => 'Arviele :',
-'ipboptions' => '2 bartiv:2 hours,1 viel:1 day,3 viel:3 days,1 perka:1 week,2 perka:2 weeks,1 aksat:1 month,3 aksat:3 months,6 aksat:6 months,1 tanda:1 year,kotabon:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 bartiv:2 hours,1 viel:1 day,3 viel:3 days,1 perka:1 week,2 perka:2 weeks,1 aksat:1 month,3 aksat:3 months,6 aksat:6 months,1 tanda:1 year,kotabon:infinite',
'ipbotheroption' => 'ar',
'ipbotherreason' => 'Ardume/lodume :',
'badipaddress' => 'IP mane tir mewadafe.',
@@ -1674,7 +1649,7 @@ male abdion elekayane IP mane.',
'ipblocklist-submit' => 'Aneyara',
'blocklistline' => '$1 (tenuwer ba $4): $2 va $3 al elekar',
'infiniteblock' => 'parmaf',
-'expiringblock' => 'tenuwer ba $1',
+'expiringblock' => 'tenuwer ba $1 $2',
'anononlyblock' => 'anton yoltiskik',
'noautoblockblock' => "gritegirayan 'autoblock'",
'createaccountblock' => 'pataredura zo elekar',
@@ -1749,7 +1724,7 @@ Dans ce cas, vous devrez renommer ou fusionner la page manuellement si vous le d
'move-watch' => 'Busuzdara',
'movepagebtn' => 'Tolyoltara va teliz',
'pagemovedsub' => 'Tolyoltanhara',
-'movepage-moved' => '\'\'\'"$1" zo arrundayar kal "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" zo arrundayar kal "$2"\'\'\'',
'articleexists' => 'Milvergumveltaf teliz ixam krulder, oke kiblayan vergumvelt tir meenaf. Va ar kiblal !',
'cantmove-titleprotected' => 'Va bu me milinde rotarrundal kire warzaf vergumvelt icde redura zo nendar',
'talkexists' => "La page elle-même a été déplacée avec succès, mais la page de discussion n'a pas pu être déplacée car il en existait déjà une sous le nouveau nom. S'il vous plait, fusionnez les manuellement.",
@@ -1795,8 +1770,6 @@ bu ika int me zo rotarrundar.',
Va [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [http://translatewiki.net translatewiki.net] vay woral ede va tulizukara va Mediawiki co-rowebel.',
'allmessagesnotsupportedDB' => "Batu bu me zo rofaver kire '''\$wgUseDatabaseMessages''' mea tir tegis.",
-'allmessagesfilter' => 'Staksesparayolt :',
-'allmessagesmodified' => 'Anton nedira va betakseem',
# Thumbnails
'thumbnail-more' => 'Tulogijara',
@@ -1865,6 +1838,7 @@ Va [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [http:
'tooltip-search-fulltext' => 'Aneyara va bu dem bat krent',
'tooltip-p-logo' => 'Emudexo',
'tooltip-n-mainpage' => 'Va emudexo woral !',
+'tooltip-n-mainpage-description' => 'Va emudexo woral !',
'tooltip-n-portal' => 'Icde abdumimaks, gonaskinaceem ise lize rotrasil',
'tooltip-n-currentevents' => 'Trasira va icdefa giva icde noeltaf bifeem',
'tooltip-n-recentchanges' => 'Noeltaf betakseem koe wiki.',
@@ -1910,7 +1884,7 @@ Ise va bazera va lazava ko vildeks nover.',
# Attribution
'anonymous' => 'Yoltiskaf {{PLURAL:$1|favesik|favesik}} va {{SITENAME}}',
'siteuser' => '$1 favesik va {{SITENAME}}',
-'lastmodifiedatby' => 'Batu bu ironokon zo betayar ba $2, $1 gan $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Batu bu ironokon zo betayar ba $2, $1 gan $3.',
'othercontribs' => 'Omavaf gu kobara ke $1.',
'others' => 'ar',
'siteusers' => '{{PLURAL:$2|favesik|favesik}} $1',
@@ -1941,6 +1915,17 @@ MediaWiki spam cleanup',
'mw_math_modern' => 'Pour les navigateurs modernes',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Erreur math',
+'math_unknown_error' => 'erreur indéterminée',
+'math_unknown_function' => 'megrupen fliok',
+'math_lexing_error' => 'ravlemafa rokla',
+'math_syntax_error' => 'erurafa rokla',
+'math_image_error' => "La conversion en PNG a échouée, vérifiez l'installation de Latex, dvips, gs et convert",
+'math_bad_tmpdir' => 'Redura ik sutera ko ugaloraxo tid merotisa',
+'math_bad_output' => 'Redura ik sutera ko divaxo tid merotisa',
+'math_notexvc' => "L'éxécutable « texvc » est introuvable. Lisez math/README pour le configurer.",
+
# Patrolling
'markaspatrolleddiff' => 'Marquer comme vérifiée',
'markaspatrolledtext' => 'Marquer cet article comme vérifié',
@@ -2011,7 +1996,7 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Mantuca',
@@ -2096,14 +2081,14 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
'exif-unknowndate' => 'Megrupena evla',
-'exif-orientation-1' => 'Preksafa', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Inversée horizontalement', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Tournée de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Inversée verticalement', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Tournée de 90° à gauche et inversée verticalement', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Tournée de 90° à droite', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Tournée de 90° à droite et inversée verticalement', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Tournée de 90° à gauche', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Preksafa',
+'exif-orientation-2' => 'Inversée horizontalement',
+'exif-orientation-3' => 'Tournée de 180°',
+'exif-orientation-4' => 'Inversée verticalement',
+'exif-orientation-5' => 'Tournée de 90° à gauche et inversée verticalement',
+'exif-orientation-6' => 'Tournée de 90° à droite',
+'exif-orientation-7' => 'Tournée de 90° à droite et inversée verticalement',
+'exif-orientation-8' => 'Tournée de 90° à gauche',
'exif-componentsconfiguration-0' => "n'existe pas",
@@ -2182,7 +2167,7 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
'exif-gpsmeasuremode-2' => '2-lumafa sabera',
'exif-gpsmeasuremode-3' => '3-lumafa sabera',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Bartivon decitmetrolk se',
'exif-gpsspeed-m' => "Bartivon 'mile'",
'exif-gpsspeed-n' => 'Webokeem',
@@ -2309,7 +2294,7 @@ This confirmation code will expire at $4.',
'unknown_extension_tag' => '"$1" megrupena divatcenafa tcala',
# Special:Version
-'version' => 'Siatos', # Not used as normal message but as header for the special page itself
+'version' => 'Siatos',
'version-extensions' => 'Inkeyeni divatcesiki se',
'version-specialpages' => 'Aptaf bueem',
'version-parserhooks' => 'Exulerademi',
@@ -2322,7 +2307,7 @@ This confirmation code will expire at $4.',
'version-skin-extension-functions' => 'Wiatezaf divatces fliok se',
'version-hook-name' => 'Demiyolt',
'version-hook-subscribedby' => 'Wimpayan gan',
-'version-version' => 'Siatos',
+'version-version' => '(Siatos $1)',
'version-license' => 'Sorta',
'version-software' => 'Inkeyen talpeyot',
'version-software-product' => 'Warzeks',
diff --git a/languages/messages/MessagesAy.php b/languages/messages/MessagesAy.php
index 31d4c120..30aa2b23 100644
--- a/languages/messages/MessagesAy.php
+++ b/languages/messages/MessagesAy.php
@@ -119,16 +119,18 @@ $messages = array(
'article' => 'Amtachinu',
'cancel' => 'Jan saña',
+'moredotdotdot' => 'Yapa...',
+'mypage' => 'Uñstawija',
+'navigation' => 'Wampuña',
+'and' => '&#32;-mpi',
+
+# Cologne Blue skin
'qbfind' => 'Thaqaña',
'qbbrowse' => 'Wampuña',
'qbedit' => 'Turkaña',
'qbpageoptions' => 'Uñstawitaki ajllita',
'qbpageinfo' => "Uñstawxat uñt'ayawi",
'qbmyoptions' => 'Ajllitanakaja',
-'moredotdotdot' => 'Yapa...',
-'mypage' => 'Uñstawija',
-'navigation' => 'Wampuña',
-'and' => '&#32;-mpi',
'errorpagetitle' => 'Pantja',
'help' => 'Yanapaña',
@@ -189,13 +191,10 @@ $messages = array(
'error' => 'Pantja',
# Login and logout pages
-'loginpagetitle' => "Qillqt'ayasiña",
'login' => "Qillqt'ayasiña",
'userlogin' => "Qillqt'ayasiña",
'logout' => 'Mistuña',
'userlogout' => 'Mistuña',
-'yourlanguage' => 'Aru:',
-'email' => 'Chaski jalayiri',
'loginlanguagelabel' => 'Aru: $1',
# Edit pages
@@ -208,6 +207,8 @@ $messages = array(
'preferences' => 'Amtajarjama',
'prefs-rc' => 'Jichha kutikiptatanaka',
'timezoneoffset' => 'Jalaqtata',
+'yourlanguage' => 'Aru:',
+'email' => 'Chaski jalayiri',
# Recent changes
'recentchanges' => 'Jichha kutikiptatanaka',
@@ -216,7 +217,8 @@ $messages = array(
# Upload
'fileuploadsummary' => 'Uñt’ayawi:',
-'license' => 'Iyawsawi:',
+'license' => 'Iyawsawi:',
+'license-header' => 'Iyawsawi:',
# Special:ListFiles
'listfiles_date' => 'Uru jakhu',
@@ -224,7 +226,8 @@ $messages = array(
'listfiles_description' => 'Uñt’ayawi',
# File description page
-'filehist-user' => 'Apnaqiri',
+'file-anchor-link' => "Q'ipi",
+'filehist-user' => 'Apnaqiri',
# Miscellaneous special pages
'move' => 'Qillqaraña',
@@ -248,6 +251,7 @@ $messages = array(
# Undelete
'undelete-search-submit' => 'Thaqaña',
+'sp-contributions-talk' => 'Kutkatasiña',
'sp-contributions-submit' => 'Thaqaña',
# Block/unblock
diff --git a/languages/messages/MessagesAz.php b/languages/messages/MessagesAz.php
index 51b33eda..fd52e557 100644
--- a/languages/messages/MessagesAz.php
+++ b/languages/messages/MessagesAz.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Don Alessandro
* @author Gulmammad
* @author PrinceValiant
* @author Sortilegus
@@ -16,13 +17,11 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Mediya',
NS_SPECIAL => 'Xüsusi',
NS_MAIN => '',
NS_TALK => 'Müzakirə',
NS_USER => 'İstifadəçi',
NS_USER_TALK => 'İstifadəçi_müzakirəsi',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_müzakirəsi',
NS_FILE => 'Şəkil',
NS_FILE_TALK => 'Şəkil_müzakirəsi',
@@ -36,6 +35,30 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Kateqoriya_müzakirəsi',
);
+$namespaceAliases = array(
+ 'Mediya' => NS_MEDIA,
+);
+
+$specialPageAliases = array(
+ 'CreateAccount' => array( 'HesabAç' ),
+ 'Preferences' => array( 'Nizamlamalar' ),
+ 'Recentchanges' => array( 'SonDəyişikliklər' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Shortpages' => array( 'QısaSəhifələr' ),
+ 'Longpages' => array( 'UzunSəhifələr' ),
+ 'Newpages' => array( 'YeniSəhifələr' ),
+ 'Allpages' => array( 'BütünSəhifələr' ),
+ 'Specialpages' => array( 'XüsusiSəhifələr' ),
+ 'Contributions' => array( 'Fəaliyyətlər' ),
+ 'Version' => array( 'Versiya' ),
+ 'Undelete' => array( 'Pozma' ),
+ 'Mypage' => array( 'MənimSəhifəm' ),
+ 'Mytalk' => array( 'MənimDanışıqlarım' ),
+ 'Mycontributions' => array( 'MənimFəaliyyətlərim' ),
+ 'Search' => array( 'Axtar' ),
+ 'Activeusers' => array( 'Aktivİstifadəçilər' ),
+);
+
$separatorTransformTable = array(',' => '.', '.' => ',' );
$messages = array(
@@ -69,6 +92,7 @@ $messages = array(
'tog-enotifminoredits' => 'Hətta səhifələrdə kiçik dəyişikliklər olsa belə, mənə e-məktub göndər',
'tog-enotifrevealaddr' => 'Elektron adresimi xəbərdarliq e-məktublarda göstər',
'tog-shownumberswatching' => 'İzləyən istifadəçilərin sayını göstər',
+'tog-oldsig' => 'Hazırkı imzanın sınaq göstərişi:',
'tog-fancysig' => 'Xam imza (daxili bağlantı yaratmaz)',
'tog-externaleditor' => 'Default olaraq xarici redaktə proqramlarından istifadə et (Ekspertlər üçün, kompyuterinizin parametrlərində xüsusi dəyişikliklər tələb olunur)',
'tog-externaldiff' => 'Susmaya görə xarici müqayisə proqramlarından istifadə et',
@@ -89,6 +113,13 @@ $messages = array(
'underline-never' => 'Heç zaman',
'underline-default' => 'Susmaya görə brouzer',
+# Font style option in Special:Preferences
+'editfont-style' => 'Redaktə sahəsinin şrift növü:',
+'editfont-default' => 'Brauzerin tənzimləmələrində təsdiq olunmuş şrift',
+'editfont-monospace' => 'Bərabərenli şrift',
+'editfont-sansserif' => 'Sans-serif şrifti',
+'editfont-serif' => 'Serif şrifti',
+
# Dates
'sunday' => 'Bazar',
'monday' => 'Bazar ertəsi',
@@ -148,7 +179,7 @@ $messages = array(
'category-media-header' => '"$1" kateqoriyasında mediya',
'category-empty' => "''Bu kateqoriyanın tərkibi hal-hazırda boşdur.''",
'hidden-categories' => '{{PLURAL:$1|Gizli kateqoriya|Gizli kateqoriyalar}}',
-'hidden-category-category' => 'Gizli kateqoriyalar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Gizli kateqoriyalar',
'category-subcat-count' => '{{PLURAL:$2|Bu kateqoriya yalnız aşağıdakı altkateqoriyadan ibarətdir.|Cəmi $2 kateqoriyadan {{PLURAL:$1|altkateqoriya|$1 altkateqoriya}} göstərilmişdir.}}',
'category-subcat-count-limited' => 'Bu kateqoriyada {{PLURAL:$1|$1 alt kateqoriya}} var.',
'category-article-count' => '{{PLURAL:$2|Bu kateqoriya yalnız aşağıdakı səhifədən ibarətdir.|Cəmi $2 səhifədən aşağıdakı {{PLURAL:$1|səhifə|$1 səhifə}} bu kateqoriyadadır.}}',
@@ -156,6 +187,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Bu kateqoriya yalnız aşağıdakı fayldan ibarətdir.|Cəmi $2 fayldan {{PLURAL:$1|fayl|$1 fayl}} bu kateqoriyadadır.}}',
'category-file-count-limited' => 'Bu kateqoriyada {{PLURAL:$1|$1 fayl}} var.',
'listingcontinuesabbrev' => '(davam)',
+'index-category' => 'İndeksləşdirilmiş səhifələr',
+'noindex-category' => 'İndeksləşdirilməyən səhifələr',
'mainpagetext' => "'''MediaWiki müvəffəqiyyətlə quraşdırıldı.'''",
'mainpagedocfooter' => 'Bu vikinin istifadəsi ilə bağlı məlumat almaq üçün [http://meta.wikimedia.org/wiki/Help:Contents İstifadəçi məlumat səhifəsinə] baxın.
@@ -165,10 +198,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqqında tez-tez soruşulan suallar]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçt siyahısı]',
-'about' => 'İzah',
-'article' => 'Mündəricat',
-'newwindow' => '(yeni pəncərədə açılır)',
-'cancel' => 'Ləğv et',
+'about' => 'İzah',
+'article' => 'Mündəricat',
+'newwindow' => '(yeni pəncərədə açılır)',
+'cancel' => 'Ləğv et',
+'moredotdotdot' => 'Daha...',
+'mypage' => 'Mənim səhifəm',
+'mytalk' => 'Danışıqlarım',
+'anontalk' => 'Bu IP-yə aid müzakirə',
+'navigation' => 'Rəhbər',
+'and' => '&#32;və',
+
+# Cologne Blue skin
'qbfind' => 'Tap',
'qbbrowse' => 'Gözdən keçir',
'qbedit' => 'Redaktə',
@@ -176,15 +217,35 @@ $messages = array(
'qbpageinfo' => 'Məzmun',
'qbmyoptions' => 'Mənim səhifələrim',
'qbspecialpages' => 'Xüsusi səhifələr',
-'moredotdotdot' => 'Daha...',
-'mypage' => 'Mənim səhifəm',
-'mytalk' => 'Danışıqlarım',
-'anontalk' => 'Bu IP-yə aid müzakirə',
-'navigation' => 'Rəhbər',
-'and' => '&#32;və',
-
-# Metadata in edit box
-'metadata_help' => 'Metaməlumatlar:',
+'faq' => 'TSS',
+'faqpage' => 'Project:TSS',
+
+# Vector skin
+'vector-action-addsection' => 'Mövzu əlavə et',
+'vector-action-delete' => 'Sil',
+'vector-action-move' => 'Adını dəyişdir',
+'vector-action-protect' => 'Mühafizə et',
+'vector-action-undelete' => 'Bərpa et',
+'vector-action-unprotect' => 'Mühafizəni kənarlaşdır',
+'vector-namespace-category' => 'Kateqoriya',
+'vector-namespace-help' => 'Kömək səhifəsi',
+'vector-namespace-image' => 'Fayl',
+'vector-namespace-main' => 'Səhifə',
+'vector-namespace-media' => 'Media səhifəsi',
+'vector-namespace-mediawiki' => 'Mesaj',
+'vector-namespace-project' => 'Layihə haqqında',
+'vector-namespace-special' => 'Xüsusi səhifə',
+'vector-namespace-talk' => 'Müzakirə',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'İstifadəçi səhifəsi',
+'vector-view-create' => 'Yarat',
+'vector-view-edit' => 'Redaktə',
+'vector-view-history' => 'Tarixçə',
+'vector-view-view' => 'Oxu',
+'vector-view-viewsource' => 'Mənbəyə bax',
+'actions' => 'Hərəkətlər',
+'namespaces' => 'Adlar fəzası',
+'variants' => 'Variantlar',
'errorpagetitle' => 'Xəta',
'returnto' => '$1 səhifəsinə qayıt.',
@@ -234,18 +295,22 @@ $messages = array(
'otherlanguages' => 'Başqa dillərdə',
'redirectedfrom' => '($1 səhifəsindən yönləndirilmişdir)',
'redirectpagesub' => 'Yönləndirmə səhifəsi',
-'lastmodifiedat' => 'Bu səhifə sonuncu dəfə $2, $1 tarixində redaktə edilib.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu səhifə sonuncu dəfə $2, $1 tarixində redaktə edilib.',
'viewcount' => 'Bu səhifəyə $1 {{PLURAL:$1|dəfə}} müraciət olunub.',
'protectedpage' => 'Mühafizəli səhifə',
'jumpto' => 'Keçid et:',
'jumptonavigation' => 'naviqasiya',
'jumptosearch' => 'axtar',
+'view-pool-error' => 'Üzr istəyirik, hazırda serverlər artıq yüklənməyə məruz qalmışdır.
+Bu səhifəyə baxmaq üçün həddən artıq müraciət daxil olmuşdur.
+Zəhmət olmasa, bir müddət sonra yenidən cəhd edin.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} haqqında',
'aboutpage' => 'Project:İzah',
'copyright' => 'Bu məzmun $1 əhatəsindədir.',
-'copyrightpagename' => '{{SITENAME}} müəllif',
'copyrightpage' => '{{ns:project}}:Müəllif',
'currentevents' => 'Güncəl hadisələr',
'currentevents-url' => 'Project:Güncəl hadisələr',
@@ -253,8 +318,6 @@ $messages = array(
'disclaimerpage' => 'Project:Məsuliyyətdən imtina',
'edithelp' => 'Redaktə kömək',
'edithelppage' => 'Help:Redaktə',
-'faq' => 'TSS',
-'faqpage' => 'Project:TSS',
'helppage' => 'Help:Mündəricat',
'mainpage' => 'Ana Səhifə',
'mainpage-description' => 'Ana Səhifə',
@@ -324,7 +387,6 @@ Mövcud xüsusi səhifələrin siyahısı: [[Special:SpecialPages|Xüsusi səhif
# General errors
'error' => 'Xəta',
'databaseerror' => 'Verilənlər bazası xətası',
-'cachederror' => 'Bu axtardığınız səhifənin keşdə saxlanılmış surətidir və yenilənməmiş ola bilər.',
'laggedslavemode' => "'''Xəbərdarlıq:''' Səhifə son əlavələri əks etdirməyə bilər.",
'readonly' => 'Verilənlər bazası kilidli',
'enterlockreason' => 'Bloklamanın səbəbini və nəzərdə tutulan müddətini qeyd edin',
@@ -342,7 +404,8 @@ Mövcud xüsusi səhifələrin siyahısı: [[Special:SpecialPages|Xüsusi səhif
'unexpected' => 'Uyğunsuzluq: "$1"="$2".',
'formerror' => 'Xəta: Formanın məlumatlarını əks etdirmək qeydi-mümkündür',
'badarticleerror' => 'Yerinə yetirmək istədiyiniz fəaliyyətin icrası bu səhifədə mümkün deyil.',
-'cannotdelete' => 'İstədiyiniz səhifəni və ya faylı silmək mümkün deyil. (Başqa bir istifadəçi tərəfindən silinmiş ola bilər.)',
+'cannotdelete' => 'İstədiyiniz "$1" səhifə və ya faylını silmək mümkün deyil.
+Bu səhifə və ya fayl başqa bir istifadəçi tərəfindən silinmiş ola bilər.',
'badtitle' => 'Yanlış başlıq',
'wrong_wfQuery_params' => 'wfQuery() funksiyası üçün qəbuledilməz parametrlər <br />
Funksiya: $1<br />
@@ -360,14 +423,12 @@ Göstərilən səbəb odur ki, "\'\'$2\'\'".',
'virus-unknownscanner' => 'naməlum antivirus',
# Login and logout pages
-'logouttitle' => 'İstifadəçi çıxış',
'logouttext' => "'''Sistemdən çıxdınız.'''
{{Vikipediya}}nı anonim olaraq istifadə etməyə davam edəbilər, və ya eyni yaxud başqa istifadəçi adı ilə [[Special:UserLogin|yenidən daxil ol]]a bilərsiniz. Diqqətinizə çatdırırıq ki, ön yaddaşı (browser cache) təmizləyənə qədər bə'zi səhifələr sistemdən çıxdığınız halda da göstərilə bilər.",
'welcomecreation' => '== $1, xoş gəlmişsiniz! ==
Hesabınız yaradıldı.
[[Special:Preferences|{{SITENAME}} nizamlamalarınızı]] dəyişdirməyi unutmayın.',
-'loginpagetitle' => 'İstifadəçi Giriş Səhifəsi',
'yourname' => 'İstifadəçi adı',
'yourpassword' => 'Parol',
'yourpasswordagain' => 'Parolu təkrar yazın',
@@ -377,6 +438,7 @@ Hesabınız yaradıldı.
'nav-login-createaccount' => 'Daxil ol / hesab yarat',
'loginprompt' => '{{SITENAME}}-ya daxil olmaq üçün "veb kökələrinin" (cookies) istifadəsinə icazə verilməlidir.',
'userlogin' => 'Daxil ol və ya istifadəçi yarat',
+'userloginnocreate' => 'Daxil ol',
'logout' => 'Çıxış',
'userlogout' => 'Çıxış',
'notloggedin' => 'Daxil olmamısınız',
@@ -389,27 +451,7 @@ Hesabınız yaradıldı.
'badretype' => 'Daxil etdiyiniz parol uyğun gəlmir.',
'userexists' => 'Daxil edilmiş ad istifadədədir.
Lütfən ayrı ad seçin.',
-'youremail' => 'E-məktub *',
-'username' => 'İstifadəçi adı:',
-'uid' => 'İstifadəçi ID:',
-'prefs-memberingroups' => 'Üzvü olduğu {{PLURAL:$1|qrup|qruplar}}:',
-'yourrealname' => 'Həqiqi adınız:',
-'yourlanguage' => 'Dil:',
-'yournick' => 'Ləqəb:',
-'badsig' => 'Səhv xam imza.
-HTML kodu yoxla.',
-'yourgender' => 'Cins:',
-'gender-unknown' => 'Göstərmə',
-'gender-male' => 'Kişi',
-'gender-female' => 'Qadın',
-'email' => 'E-məktub',
-'prefs-help-realname' => 'Həqiqi adınızı daxil etmək qeyri-məcburidir.
-Bu seçimi etdiyiniz halda, adınız işinizə görə müəlliflik hüququnuzu tanımaq üçün istifadə ediləcək.',
'loginerror' => 'Daxil olunma xətası',
-'prefs-help-email' => 'E-məktub ünvanınızı daxil etmək qeyri-məcburidir.
-Bu parolunuzu unutduğunuz halda sizə yeni parol göndərməyə imkan verir.
-Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadəçi və ya istifadəçi müzakirəsi səhifələriniz vasitəsi ilə əlaqə yaratmalarını seçə bilərsiniz.',
-'prefs-help-email-required' => 'Elektron ünvan tələb olunur.',
'noname' => 'İşlək istifadəçi adı daxil etməmişdiniz.',
'loginsuccesstitle' => 'Daxil olundu',
'loginsuccess' => "'''\"\$1\" olaraq {{SITENAME}}-ya daxil oldunuz.'''",
@@ -419,11 +461,15 @@ Düzgün yazdığına əmin ol, yaxud [[Special:UserLogin/signup|yeni hesab aç]
'nosuchusershort' => '"<nowiki>$1</nowiki>" adında istifadəçi mövcud deyil.
Düzgün yazdığına əmin ol.',
'nouserspecified' => 'İstifadəçi adı daxil etməlisiniz.',
+'login-userblocked' => 'Bu istifadəçi bloklanıb. Sistemə giriş üçün icazə verilmir.',
'wrongpassword' => 'Səhv parol. Təkrar yaz.',
'wrongpasswordempty' => 'Parol boş. Təkrar yaz.',
+'passwordtooshort' => 'Parolda ən azı {{PLURAL:$1|1 hərf yaxud simvol|$1 hərf yaxud simvol}} olmalıdır.',
+'password-name-match' => 'Parol adınızdan fərqli olmalıdır.',
'mailmypassword' => 'E-mail ilə yeni parol göndər',
'passwordremindertitle' => '{{SITENAME}} parol xatırladıcı',
'noemail' => '"$1" adlı istifadəçi e-poçt ünvanını qeyd etməmişdir.',
+'noemailcreate' => 'Düzgün e-mail ünvanı qeyd etməlisiniz',
'passwordsent' => 'Yeni parol "$1" üçün qeydiyyata alınan e-məktub ünvanına göndərilmişdir.
Xahiş edirik, e-məktubu aldıqdan sonra yenidən daxil olasınız.',
'mailerror' => 'Məktub göndərmə xətası: $1',
@@ -438,6 +484,7 @@ Xahiş edirik düzgün formatlı ünvan daxil edin və ya bu sahəni boş qoyun.
'accountcreated' => 'Hesab yaradıldı',
'accountcreatedtext' => '$1 üçün istifadəçi hesabı yaradıldı.',
'createaccount-title' => '{{SITENAME}} hesabın yaradılması',
+'usernamehasherror' => 'İstifadəçi adında "diyez" simvolunun istifadəsi mümkün deyil',
'login-throttled' => 'Sistemə daxil olmaq üçün həddən artıq cəhd etmisiniz.
Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
'loginlanguagelabel' => 'Dil: $1',
@@ -454,6 +501,7 @@ Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
'resetpass_forbidden' => 'Parolu dəyişmək mümkün deyil',
'resetpass-no-info' => 'Bu səhifəni birbaşa açmaq üçün sistemə daxil olmalısınız.',
'resetpass-submit-loggedin' => 'Parolu dəyiş',
+'resetpass-submit-cancel' => 'Ləğv et',
'resetpass-temp-password' => 'Müvəqqəti parol:',
# Edit page toolbar
@@ -498,7 +546,6 @@ Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
'blockededitsource' => "Aşağıda '''$1''' səhifəsində etdiyiniz '''dəyişikliklərin''' mətni göstərilib:",
'whitelistedittitle' => 'Redaktə üçün daxil olmalısınız',
'whitelistedittext' => 'Dəyişiklik edə bilmək üçün $1.',
-'confirmedittitle' => 'Redaktə üçün e-məktub təsdiqi lazımdır',
'nosuchsectiontitle' => 'Belə bölmə yoxdur',
'loginreqtitle' => 'Daxil olmalısınız',
'loginreqlink' => 'daxil olmalısınız',
@@ -528,17 +575,20 @@ və ya səhifəni [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktə]</span> ed
'longpagewarning' => "'''DIQQƏT:Bu səhifənin həcmi $1 kb-dır; Həcmi 32 kb yaxın və ya daha artıq olan səhifələr bəzi brouzerlərdə redaktə ilə bağlı problemlər yarada bilər. Mümkünsə səhifəni daha kiçik bölmələrə bölün.'''",
'semiprotectedpagewarning' => "'''Qeyd:''' Bu səhifə mühafizəli olduğu üçün yalnız qeydiyyatdan keçmiş istifadəçilər redaktə edə bilərlər.",
'titleprotectedwarning' => "'''DİQQƏT: Bu səhifə mühafizəlidir, yalnız [[Special:ListGroupRights|icazəsi olan]] istifadəçilər onu redaktə edə bilərlər.'''",
-'templatesused' => 'Bu səhifədə istifadə edilmiş şablonlar:',
+'templatesused' => 'Bu səhifədə istifadə edilmiş {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedsection' => 'Bu bölmədə istifadə edilmiş {{PLURAL:$1|şablon|şablonlar}}',
'template-protected' => '(mühafizə)',
'template-semiprotected' => '(yarım-mühafizə)',
'nocreatetitle' => 'Səhifə yaratma məhdudlaşdırılıb.',
'nocreate-loggedin' => 'Sizin yeni səhifələr yaratmaq üçün icazəniz yoxdur.',
'permissionserrorstext' => 'Siz, bunu aşağıdakı {{PLURAL:$1|səbəbə|səbəblərə}} görə edə bilməzsiniz:',
'permissionserrorstext-withaction' => 'Aşağıdakı {{PLURAL:$1|səbəbə|səbəblərə}} görə $2 hüququnuz yoxdur:',
-'recreate-deleted-warn' => "'''Diqqət:Siz əvvəllər silinmiş səhifəni bərpa edirsiniz'''
+'recreate-moveddeleted-warn' => "'''Diqqət: Siz əvvəllər silinmiş səhifəni bərpa etmək istəyirsiz.'''
-İlk öncə bu səhifəni redaktə etməyin nə qədər lazımlı olduğunu müəyyənləşdirin
+Bu səhifəni yenidən yaratmağın nə qədər zəruri olduğunu bir daha yoxlayın.
Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
+'moveddeleted-notice' => 'Bu səhifə silinmişdir.
+Məlumat üçün aşağıda bu səhifənin tarixçəsindən müvafiq silmə qeydləri göstərilmişdir.',
'edit-gone-missing' => 'Səhifəni yeniləmək mümkün deyil.
Çox güman ki, səhifə silinmişdir.',
'edit-conflict' => 'Düzəlişlər münaqişəsi',
@@ -566,46 +616,60 @@ Bəzi şablonlar əlavə olunmayacaq.",
'histlegend' => "Fərqə bax: müqayisə etmək istədiyiniz versiyaların yanındakı dairələri işarələyin və \"Enter\"ə və ya \"müqayisə et\" düyməsinə basın.<br />
Açıqlama: '''(hh)''' — hal-hazırkı versiya ilə aradakı fərq, '''(son)''' — əvvəlki versiya ilə aradakı fərq, '''k''' — kiçik redaktə.",
'history-fieldset-title' => 'Tarixçəni nəzərdən keçir',
-'deletedrev' => '[silindi]',
'histfirst' => 'Ən əvvəlki',
'histlast' => 'Ən sonuncu',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
'historyempty' => '(boş)',
# Revision feed
-'history-feed-title' => 'Redaktə tarixçəsi',
-'history-feed-description' => 'Vikidə bu səhifənin dəyişikliklər tarixçəsi',
-'history-feed-empty' => 'Axtardığınız səhifə mövcud deyil.
+'history-feed-title' => 'Redaktə tarixçəsi',
+'history-feed-description' => 'Vikidə bu səhifənin dəyişikliklər tarixçəsi',
+'history-feed-item-nocomment' => '$1-dən $2-yə',
+'history-feed-empty' => 'Axtardığınız səhifə mövcud deyil.
Mümkündür ki, bu səhifə silinib və ya onun adı dəyişdirilib.
Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
# Revision deletion
-'rev-deleted-comment' => '(şərhlər silindi)',
-'rev-deleted-user' => '(istifadəçi adı silindi)',
-'rev-deleted-event' => '(qeyd silindi)',
-'rev-delundel' => 'göstər/gizlət',
-'revisiondelete' => 'Səhifənin versiyalarını sil/bərpa et',
-'revdelete-selected' => "'''[[:$1]] səhifəsinin {{PLURAL:$2|seçilmiş versiyası|seçilmiş versiyaları}}:'''",
-'logdelete-selected' => "'''Jurnalın {{PLURAL:$1|seçilmiş qeydi|seçilmiş qeydləri}}:'''",
-'revdelete-legend' => 'Məhdudiyyətləri müəyyənləşdir:',
-'revdelete-hide-text' => 'Səhifənin bu versiyasının mətnini gizlə',
-'revdelete-hide-comment' => 'Dəyişikliklərin şərhini gizlə',
-'revdelete-hide-user' => 'Redaktə müəllifinin istifadəçi adını/IP ünvanını gizlə',
-'revdelete-hide-restricted' => 'Məlumatları idarəçilərdən də gizlə',
-'revdelete-suppress' => 'Məlumatları idarəçilərdən də gizlə',
-'revdelete-hide-image' => 'Faylın məzmununu gizlə',
-'revdelete-unsuppress' => 'Bərpa olunan versiyalar üzərindən məhdudiyyətləri qaldır',
-'revdelete-log' => 'Səbəb:',
-'revdelete-logentry' => '[[$1]] səhifəsinin versiyasının görünüşünü dəyişdirdi',
-'revdelete-success' => "'''Versiyanın görünüşü yeniləndi.'''",
-'revdel-restore' => 'Görünüşü dəyiş',
-'pagehist' => 'Səhifənin tarixçəsi',
-'deletedhist' => 'Silmə qeydləri',
-'revdelete-content' => 'məzmun',
-'revdelete-summary' => 'redaktə xülasəsi',
-'revdelete-uname' => 'istifadəçi adı',
-'revdelete-restricted' => 'məhdudiyyətlər idarəçilərə tətbiq olunur',
-'revdelete-hid' => 'gizlət $1',
+'rev-deleted-comment' => '(şərhlər silindi)',
+'rev-deleted-user' => '(istifadəçi adı silindi)',
+'rev-deleted-event' => '(qeyd silindi)',
+'rev-deleted-text-permission' => "Səhifənin bu versiyası''' silinib'''.
+Mümkündür ki, bunun səbəbi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.",
+'rev-suppressed-text-unhide' => "Səhifənin bu versiyası''' silinib'''.
+Mümkündür ki, bunun səbəbi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.
+Siz idarəçi olduğunuza görə silinən [$1 bu versiyanı] nəzərdən keçirə bilərsiniz.",
+'rev-deleted-text-view' => "Səhifənin bu versiyası''' silinib'''.
+Siz idarəçi olduğunuza görə silinən bu versiyanı nəzərdən keçirə bilərsiniz. Mümkündür ki, silinmənin səbəbi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.",
+'rev-deleted-no-diff' => "Siz versiyalar arasındakı fərqi nəzərdən keçirə bilməzsiniz. Belə ki, versiyalardan biri '''silinib'''.
+Mümkündür ki, bununla bağlı təfərrüatlar [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.",
+'rev-delundel' => 'göstər/gizlət',
+'revisiondelete' => 'Səhifənin versiyalarını sil/bərpa et',
+'revdelete-no-file' => 'Axtarılan fayl mövcud deyil',
+'revdelete-show-file-submit' => 'Bəli',
+'revdelete-selected' => "'''[[:$1]] səhifəsinin {{PLURAL:$2|seçilmiş versiyası|seçilmiş versiyaları}}:'''",
+'logdelete-selected' => "'''Jurnalın {{PLURAL:$1|seçilmiş qeydi|seçilmiş qeydləri}}:'''",
+'revdelete-legend' => 'Məhdudiyyətləri müəyyənləşdir:',
+'revdelete-hide-text' => 'Səhifənin bu versiyasının mətnini gizlə',
+'revdelete-hide-image' => 'Faylın məzmununu gizlə',
+'revdelete-hide-comment' => 'Dəyişikliklərin şərhini gizlə',
+'revdelete-hide-user' => 'Redaktə müəllifinin istifadəçi adını/IP ünvanını gizlə',
+'revdelete-hide-restricted' => 'Məlumatları idarəçilərdən də gizlə',
+'revdelete-suppress' => 'Məlumatları idarəçilərdən də gizlə',
+'revdelete-unsuppress' => 'Bərpa olunan versiyalar üzərindən məhdudiyyətləri qaldır',
+'revdelete-log' => 'Səbəb:',
+'revdelete-submit' => 'Seçilmiş {{PLURAL:$1|versiyaya|versiyayalara}} tətbiq et',
+'revdelete-logentry' => '[[$1]] səhifəsinin versiyasının görünüşünü dəyişdirdi',
+'revdelete-success' => "'''Versiyanın görünüşü yeniləndi.'''",
+'revdel-restore' => 'Görünüşü dəyiş',
+'pagehist' => 'Səhifənin tarixçəsi',
+'deletedhist' => 'Silmə qeydləri',
+'revdelete-content' => 'məzmun',
+'revdelete-summary' => 'redaktə xülasəsi',
+'revdelete-uname' => 'istifadəçi adı',
+'revdelete-restricted' => 'məhdudiyyətlər idarəçilərə tətbiq olunur',
+'revdelete-hid' => 'gizlət $1',
+'revdelete-reasonotherlist' => 'Digər səbəb',
+'revdelete-edit-reasonlist' => 'Silmə səbəblərini redaktə et',
# Suppression log
'suppressionlog' => 'Qadağa qedi',
@@ -624,20 +688,8 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'difference' => '(Versiyalar arasındakı fərq)',
'lineno' => 'Sətir $1:',
'compareselectedversions' => 'Seçilən versiyaları müqaisə et',
-'visualcomparison' => 'Vizual müqayisə',
'editundo' => 'əvvəlki halına qaytar',
'diff-multi' => '({{PLURAL:$1|bir aralıq dəyişiklik|$1 aralıq dəyişiklik}} göstərilməmişdir.)',
-'diff-added' => '$1 əlavə edildi',
-'diff-src' => 'mənbə',
-'diff-width' => 'en',
-'diff-height' => 'hündürlük',
-'diff-p' => "'''paraqraf'''",
-'diff-blockquote' => "'''sitat'''",
-'diff-table' => "'''cədvəl'''",
-'diff-tr' => "'''sətir'''",
-'diff-dd' => "'''tərif'''",
-'diff-img' => "'''şəkil'''",
-'diff-del' => "'''silinmiş'''",
# Search results
'searchresults' => 'Axtarış nəticələri',
@@ -645,16 +697,15 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'searchresulttext' => '{{SITENAME}}-nı axtarmaqla bağlı ətraflı məlumat üçün [[{{MediaWiki:Helppage}}|{{int:kömək}}]] səhifəsinə baş çək.',
'searchsubtitle' => '"[[:$1]]" üçün axtarış ([[Special:Prefixindex/$1|"$1" ilə başlayan bütün səhifələr]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" səhifəsi ilə əlaqəli olan bütün səhifələr]])',
'searchsubtitleinvalid' => 'Axtarılan: "$1"',
-'noexactmatch' => "\"\$1\" başlığı altında məqalə yoxdur. Bu məqaləni özünüz '''[[:\$1|yarada bilərsiniz]]'''.",
-'noexactmatch-nocreate' => "'''\"\$1\" adında səhifə mövcud deyil.'''",
'notitlematches' => 'Uyğun gələn səhifə adı tapılmadı',
'notextmatches' => 'Məqalələrdə uyğun məzmun tapılmadı',
-'prevn' => 'əvvəlki $1',
-'nextn' => 'sonrakı $1',
-'viewprevnext' => 'Göstər ($1) ($2) ($3).',
+'prevn' => 'əvvəlki {{PLURAL:$1|$1}}',
+'nextn' => 'sonrakı {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Göstər ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcutdur'''",
'searchmenu-new' => "'''Bu vikidə \"[[:\$1]]\" səhifəsini yarat!'''",
'searchhelp-url' => 'Help:Mündəricət',
+'searchprofile-images' => 'Multimedia',
'search-result-size' => '$1 ({{PLURAL:$2|1 söz|$2 sözlər}})',
'search-redirect' => '(yönləndirmə $1)',
'search-section' => '(bölmə $1)',
@@ -672,65 +723,95 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'powersearch-ns' => 'Ad aralığında axtar:',
'powersearch-redir' => 'Yönləndirmələri göstər',
'powersearch-field' => 'Axtar:',
+'powersearch-togglelabel' => 'Yoxla:',
+'powersearch-toggleall' => 'Hamısı',
+'powersearch-togglenone' => 'Heç biri',
+
+# Quickbar
+'qbsettings-none' => 'Heç biri',
# Preferences page
-'preferences' => 'Nizamlamalar',
-'mypreferences' => 'Nizamlamalarım',
-'prefs-edits' => 'Redaktələrin sayı:',
-'qbsettings-none' => 'Heç biri',
-'changepassword' => 'Parolu dəyiş',
-'skin' => 'Üzlük',
-'skin-preview' => 'Sınaq göstərişi',
-'math' => 'Riyaziyyat',
-'dateformat' => 'Tarix formatı',
-'datedefault' => 'Tərcih yox',
-'datetime' => 'Tarix və vaxt',
-'math_unknown_error' => 'bilinməyən xəta',
-'math_unknown_function' => 'bilinməyən funksiya',
-'math_syntax_error' => 'sintaksis xətası',
-'prefs-personal' => 'İstifadəçi profili',
-'prefs-rc' => 'Son dəyişikliklər',
-'prefs-watchlist' => 'İzləmə siyahısı',
-'prefs-watchlist-days' => 'İzləmə siyahısında göstərilən maksimal günlərin sayı:',
-'prefs-watchlist-edits' => 'İzləmə siyahısında göstərilən maksimal redaktələrin sayı:',
-'prefs-misc' => 'Digər tərcihlər',
-'prefs-resetpass' => 'Parolu dəyiş',
-'saveprefs' => 'Qeyd et',
-'resetprefs' => 'Reset',
-'textboxsize' => 'Redaktə',
-'rows' => 'Sıralar:',
-'columns' => 'Sütunlar:',
-'searchresultshead' => 'Axtar',
-'resultsperpage' => 'Səhifəyə aid tapılmış nəticələr:',
-'contextlines' => 'Nəticələrə aid sıralar:',
-'contextchars' => 'Sıraya aid işarələr:',
-'stub-threshold' => '<a href="#" class="stub">Keçidsiz linki</a> format etmək üçün hüdud (baytlarla):',
-'recentchangesdays' => 'Son dəyişiklərdə göstərilən günlərin miqdarı:',
-'recentchangescount' => 'Son dəyişikliklərdə başlıq sayı:',
-'savedprefs' => 'Tərcihlər qeyd edildi.',
-'timezonelegend' => 'Vaxt zonası:',
-'timezonetext' => 'Server ilə vaxt fərqı. (Azərbaycan üçün +04:00)',
-'localtime' => 'Yerli vaxt:',
-'timezoneselect' => 'Vaxt zonası:',
-'timezoneoffset' => 'Vaxt fərqı¹:',
-'servertime' => 'Server vaxtı:',
-'guesstimezone' => 'Brouzerdən götür',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asiya',
-'timezoneregion-atlantic' => 'Atlantik Okean',
-'timezoneregion-australia' => 'Avstraliya',
-'timezoneregion-europe' => 'Avropa',
-'timezoneregion-indian' => 'Hind Okeanı',
-'timezoneregion-pacific' => 'Sakit Okean',
-'allowemail' => 'Digər istifadəçilər mənə e-məktub göndərəbilir',
-'defaultns' => 'Susmaya görə bu ad fəzalarında axtar:',
-'files' => 'Fayllar',
+'preferences' => 'Nizamlamalar',
+'mypreferences' => 'Nizamlamalarım',
+'prefs-edits' => 'Redaktələrin sayı:',
+'prefsnologintext' => 'Nizamlamaları dəyişmək üçün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daxil olmaq]</span> zəruridir.',
+'changepassword' => 'Parolu dəyiş',
+'prefs-skin' => 'Üzlük',
+'skin-preview' => 'Sınaq göstərişi',
+'prefs-math' => 'Riyaziyyat',
+'datedefault' => 'Tərcih yox',
+'prefs-datetime' => 'Tarix və vaxt',
+'prefs-personal' => 'İstifadəçi profili',
+'prefs-rc' => 'Son dəyişikliklər',
+'prefs-watchlist' => 'İzləmə siyahısı',
+'prefs-watchlist-days' => 'İzləmə siyahısında göstərilən maksimal günlərin sayı:',
+'prefs-watchlist-days-max' => 'Maksimum 7 gün',
+'prefs-watchlist-edits' => 'İzləmə siyahısında göstərilən maksimal redaktələrin sayı:',
+'prefs-watchlist-edits-max' => 'Maksimum say: 1000',
+'prefs-misc' => 'Digər tərcihlər',
+'prefs-resetpass' => 'Parolu dəyiş',
+'saveprefs' => 'Qeyd et',
+'resetprefs' => 'Reset',
+'prefs-editing' => 'Redaktə',
+'rows' => 'Sıralar:',
+'columns' => 'Sütunlar:',
+'searchresultshead' => 'Axtar',
+'resultsperpage' => 'Səhifəyə aid tapılmış nəticələr:',
+'contextlines' => 'Nəticələrə aid sıralar:',
+'contextchars' => 'Sıraya aid işarələr:',
+'stub-threshold' => '<a href="#" class="stub">Keçidsiz linki</a> format etmək üçün hüdud (baytlarla):',
+'recentchangesdays' => 'Son dəyişiklərdə göstərilən günlərin miqdarı:',
+'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|gün|gün}}',
+'recentchangescount' => 'Son dəyişikliklərdə başlıq sayı:',
+'prefs-help-watchlist-token' => 'Bu sahəni gizli parolla doldurmağınız sizin izləmə siyahınız üçün RSS yayım kanalı yaradacaqdır.
+Bu parolu bilən hər kəs izləmə siyahınızı oxuya bilər, bu səbəbdən etibarlı parol seçin.
+Təsadüfi yolla seçilmiş bu paroldan istifadə edə bilərsiniz: $1',
+'savedprefs' => 'Tərcihlər qeyd edildi.',
+'timezonelegend' => 'Vaxt zonası:',
+'localtime' => 'Yerli vaxt:',
+'timezoneoffset' => 'Vaxt fərqı¹:',
+'servertime' => 'Server vaxtı:',
+'guesstimezone' => 'Brouzerdən götür',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asiya',
+'timezoneregion-atlantic' => 'Atlantik Okean',
+'timezoneregion-australia' => 'Avstraliya',
+'timezoneregion-europe' => 'Avropa',
+'timezoneregion-indian' => 'Hind Okeanı',
+'timezoneregion-pacific' => 'Sakit Okean',
+'allowemail' => 'Digər istifadəçilər mənə e-məktub göndərəbilir',
+'defaultns' => 'Susmaya görə bu ad fəzalarında axtar:',
+'prefs-files' => 'Fayllar',
+'youremail' => 'E-məktub *',
+'username' => 'İstifadəçi adı:',
+'uid' => 'İstifadəçi ID:',
+'prefs-memberingroups' => 'Üzvü olduğu {{PLURAL:$1|qrup|qruplar}}:',
+'prefs-registration' => 'Qeydiyyat vaxtı:',
+'prefs-registration-date-time' => '$1',
+'yourrealname' => 'Həqiqi adınız:',
+'yourlanguage' => 'Dil:',
+'yournick' => 'Ləqəb:',
+'badsig' => 'Səhv xam imza.
+HTML kodu yoxla.',
+'yourgender' => 'Cins:',
+'gender-unknown' => 'Göstərmə',
+'gender-male' => 'Kişi',
+'gender-female' => 'Qadın',
+'email' => 'E-məktub',
+'prefs-help-realname' => 'Həqiqi adınızı daxil etmək qeyri-məcburidir.
+Bu seçimi etdiyiniz halda, adınız işinizə görə müəlliflik hüququnuzu tanımaq üçün istifadə ediləcək.',
+'prefs-help-email' => 'E-məktub ünvanınızı daxil etmək qeyri-məcburidir.
+Bu parolunuzu unutduğunuz halda sizə yeni parol göndərməyə imkan verir.
+Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadəçi və ya istifadəçi müzakirəsi səhifələriniz vasitəsi ilə əlaqə yaratmalarını seçə bilərsiniz.',
+'prefs-help-email-required' => 'Elektron ünvan tələb olunur.',
+'prefs-i18n' => 'Beynəlxalqlaşdırma',
+'prefs-signature' => 'İmza',
# User rights
-'userrights' => 'İstifadəçi hüququ idarəsi', # Not used as normal message but as header for the special page itself
+'userrights' => 'İstifadəçi hüququ idarəsi',
'userrights-lookup-user' => 'İstifadəçi qruplarını idarə et',
'userrights-user-editname' => 'İstifadəçi adınızı yazın:',
'editusergroup' => 'Redaktə İstifadəçi Qrupları',
@@ -782,6 +863,7 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'right-userrights' => 'Bütün istifadəçi hüquqlarını redaktə et',
'right-userrights-interwiki' => 'Digər vikilərdəki istifadəçilərin istifadəçi hüquqlarını dəyişdir',
'right-siteadmin' => 'Məlumatlar bazasının bloklanması və blokun götürülməsi',
+'right-sendemail' => 'Digər istifadəçilərə elektron poçt göndər',
# User rights log
'rightslog' => 'İstifadəçi hüquqları qeydləri',
@@ -809,6 +891,15 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'recentchanges-legend' => 'Son dəyişiklik seçimləri',
'recentchangestext' => "'''Ən son dəyişiklikləri bu səhifədən izləyin.'''",
'recentchanges-feed-description' => 'Vikidəki ən son dəyişiklikləri bu yayım kanalından izləyin.',
+'recentchanges-label-legend' => 'Şərh: $1.',
+'recentchanges-legend-newpage' => '$1 - yeni səhifə',
+'recentchanges-label-newpage' => 'Bu dəyişiklik yeni səhifə yaratdı',
+'recentchanges-legend-minor' => '$1 - kiçik redaktə',
+'recentchanges-label-minor' => 'Bu kiçik redaktədir',
+'recentchanges-legend-bot' => '$1 - bot redaktəsi',
+'recentchanges-label-bot' => 'Bu redaktə bot tərəfindən edilmişdir',
+'recentchanges-legend-unpatrolled' => '$1 - nəzərdən keçirilməmiş redaktə',
+'recentchanges-label-unpatrolled' => 'Bu redaktə nəzərdən keçirilməmişdir',
'rcnote' => "Aşağıdakı {{PLURAL:$1|'''1''' dəyişiklik|'''$1''' dəyişiklik}} saat $5, $4 tarixinə qədər son {{PLURAL:$2|gün|'''$2''' gün}} ərzində edilmişdir.",
'rclistfrom' => '$1 vaxtından başlayaraq yeni dəyişiklikləri göstər',
'rcshowhideminor' => 'Kiçik redaktələri $1',
@@ -832,6 +923,8 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
# Recent changes linked
'recentchangeslinked' => 'Əlaqəli redaktələr',
+'recentchangeslinked-feed' => 'Əlaqəli redaktələr',
+'recentchangeslinked-toolbox' => 'Əlaqəli redaktələr',
'recentchangeslinked-title' => "''$1'' ilə əlaqəli dəyişikliklər",
'recentchangeslinked-summary' => "Aşağıdakı siyahı, qeyd olunan səhifəyə (və ya qeyd olunan kateqoriyadakı səhifələrə) daxili keçid verən səhifələrdə edilmiş son dəyişikliklərin siyahısıdır.
[[Special:Watchlist|İzləmə siyahınızdakı]] səhifələr '''qalın''' şriftlə göstərilmişdir.",
@@ -841,7 +934,6 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
# Upload
'upload' => 'Qarşıya yüklə',
'uploadbtn' => 'Sənəd yüklə',
-'reupload' => 'Təkrar yüklə',
'reuploaddesc' => 'Return to the upload form.',
'uploadnologintext' => 'Fayl yükləmək üçün [[Special:UserLogin|daxil olmalısınız]].',
'uploaderror' => 'Yükləmə xətası',
@@ -860,7 +952,6 @@ Vikidə buna bənzər səhifələr [[Special:Search|axtarmağa]] cəhd edin.',
'fileexists' => "Yükləmək istədiyiniz adda fayl mövcutdur.
Lütfən '''<tt>[[:$1]]</tt>''' keçidini yoxlayın və bu faylı yükləmək istədiyinizdən əmin olun.
[[$1|thumb]]",
-'fileexists-thumb' => "<center>'''Mövcud şəkil'''</center>",
'successfulupload' => 'Yükləmə tamamlandı',
'uploadwarning' => 'Yükləyiş xəbərdarlıqı',
'savefile' => 'Faylı qeyd et',
@@ -873,8 +964,9 @@ Lütfən '''<tt>[[:$1]]</tt>''' keçidini yoxlayın və bu faylı yükləmək is
Əvvəlcədən bu faylı yenidən yükləməyin nə dərəcədə lazımlı olduğunu müəyyənləşdirməniz məsləhətdir.
Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
-'license' => 'Lisenziya',
-'nolicense' => 'Heç biri seçilməmişdir',
+'license' => 'Lisenziya',
+'license-header' => 'Lisenziya',
+'nolicense' => 'Heç biri seçilməmişdir',
# Special:ListFiles
'listfiles' => 'Fayl siyahısı',
@@ -883,6 +975,7 @@ Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
'listfiles_user' => 'İstifadəçi',
# File description page
+'file-anchor-link' => 'Fayl',
'filehist' => 'Faylın tarixçəsi',
'filehist-deleteone' => 'sil',
'filehist-current' => 'indiki',
@@ -892,8 +985,6 @@ Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
'filehist-dimensions' => 'Ölçülər',
'filehist-comment' => 'Şərh',
'imagelinks' => 'Fayl keçidləri',
-'shareduploadwiki-linktext' => 'fayl təsvir səhifəsi',
-'noimage-linktext' => 'fayl yüklə',
'uploadnewversion-linktext' => 'Bu faylın yeni versiyasını yüklə',
# File deletion
@@ -934,6 +1025,7 @@ Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
'statistics-header-edits' => 'Redaktə statistikası',
'statistics-header-views' => 'Statistikaya bax',
'statistics-header-users' => 'İstifadəçi statistika',
+'statistics-header-hooks' => 'Digər statistikalar',
'statistics-pages' => 'Səhifələr',
'statistics-pages-desc' => 'Vikidə olan bütün səhifələr, istifadəçi müzakirələri, istiqamətləndirmə səhifələri və s. daxil olmaqla',
'statistics-users' => 'Qeydiyyatdan keçmiş [[Special:ListUsers|istifadəçilər]]',
@@ -949,8 +1041,8 @@ Bu səhifə üçün silmə qeydləri aşağıda göstərilmişdir:",
'brokenredirects' => 'Xətalı istiqamətləndirmə',
'brokenredirectstext' => 'Aşağıdakı istiqamətləndirmələr mövcud olmayan səhifələrə keçid verir:',
-'brokenredirects-edit' => '(redaktə)',
-'brokenredirects-delete' => '(sil)',
+'brokenredirects-edit' => 'redaktə',
+'brokenredirects-delete' => 'sil',
'withoutinterwiki' => 'Dil keçidləri olmayan səhifələr',
'withoutinterwiki-submit' => 'Göstər',
@@ -1029,7 +1121,9 @@ Qeyd növü, istifadəçi adı və ya təsir edilmiş səhifəni seçməklə dah
# Special:Categories
'categories' => 'Kateqoriyalar',
-'categoriespagetext' => 'Wikide aşağıdaki kateqoriyalar var.',
+'categoriespagetext' => 'Aşağıdakı {{PLURAL:$1|kateqoriyada|kateqoriyalarda}} səhifələr yaxud mediya var.
+[[Special:UnusedCategories|İstifadədə olmayan kateqoriyalar]] burda göstərilməyib.
+Həmçinin [[Special:WantedCategories|xahiş edilmiş kateqoriyalara]] bax.',
# Special:LinkSearch
'linksearch' => 'Xarici keçidlər',
@@ -1039,6 +1133,9 @@ Qeyd növü, istifadəçi adı və ya təsir edilmiş səhifəni seçməklə dah
'listusers-submit' => 'Göstər',
'listusers-noresult' => 'İstifadəçi tapılmadı.',
+# Special:ActiveUsers
+'activeusers' => 'Aktiv istifadəçilərin siyahısı',
+
# Special:Log/newusers
'newuserlog-create-entry' => 'Yeni istifadəçi hesabı',
'newuserlog-autocreate-entry' => 'Hesab avtomatik olaraq yaradıldı',
@@ -1108,6 +1205,28 @@ Səhifəni izləmə sıyahınızdan çıxarmaq üçün yan lovhədəki "izləmə
'enotif_lastvisited' => 'Sonuncu ziyarətinizdən indiyədək olan bütün dəyişiklikləri görmək üçün baxın: $1.',
'enotif_lastdiff' => 'Bu dəyişikliyi görmək üçün $1 səhifəsinə baxın.',
'enotif_anon_editor' => 'qeydiyyatsız istifadəçi $1',
+'enotif_body' => 'Hörmətli $WATCHINGUSERNAME,
+
+{{SITENAME}} veb-saytındakı $PAGETITLE adlı səhifə $PAGEEDITDATE tarixində $PAGEEDITOR tərəfindən $CHANGEDORCREATED. Səhifənin sonuncu versiyasına baxmaq üçün $PAGETITLE_URL keçidindən istifadə edin.
+
+$NEWPAGE
+
+Dəyişikliyi edən istifadəçinin izahı: $PAGESUMMARY $PAGEMINOREDIT
+
+Səhifəni dəyişdirən istifadəçinin əlaqə məlumatları:
+e-poçt: $PAGEEDITOR_EMAIL
+viki: $PAGEEDITOR_WIKI
+
+Siz haqqında söhbət gedən səhifəyə baxanadək səhifədəki digər dəyişikliklərlə bağlı başqa bildiriş məktubu almayacaqsınız. Siz həmçinin, izləmə siyahınızdakı bütün səhifələrlə bağlı bildiriş məlumatlarını silə bilərsiniz.
+
+ {{SITENAME}} saytının xəbərdarlıq sistemi.
+
+--
+İzləmə siyahısının tənzimləmələrini dəyişmək üçün:
+{{fullurl:Special:Watchlist/edit}}
+
+Yardım və təklifləriniz üçün:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Səhifəni sil',
@@ -1118,9 +1237,10 @@ Səhifəni izləmə sıyahınızdan çıxarmaq üçün yan lovhədəki "izləmə
'exblank' => 'səhifə boş',
'delete-confirm' => 'Silinən səhifə: "$1"',
'delete-legend' => 'Sil',
-'historywarning' => 'Xəbərdarlıq: Silinəcək səhifənin tarixçəsində qeyd olunmuş redaktələr var',
+'historywarning' => "'''Xəbərdarlıq:''' Silinəcək səhifənin tarixçəsində qeyd olunmuş $1 {{PLURAL:$1|redaktə|redaktə}} var:",
'confirmdeletetext' => 'Bu səhifə və ya fayl bütün tarixçəsi ilə birlikdə birdəfəlik silinəcək. Bunu [[{{MediaWiki:Policy-url}}|qaydalara]] uyğun etdiyinizi və əməliyyatın nəticələrini başa düşdüyünüzü təsdiq edin.',
'actioncomplete' => 'Fəaliyyət tamamlandı',
+'actionfailed' => 'Əməliyyat yerinə yetirilmədi',
'deletedtext' => '"<nowiki>$1</nowiki>" silindi.
Sonuncu silinmələrə bax: $2.',
'deletedarticle' => '"[[$1]]" silindi',
@@ -1142,7 +1262,7 @@ Sonuncu silinmələrə bax: $2.',
'rollback' => 'Əvvəlki versiya',
'rollbacklink' => 'əvvəlki halına qaytar',
'cantrollback' => 'Redaktə geri qaytarıla bilməz; axırıncı redaktə səhifədə olan yeganə fəaliyyətdir.',
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Müzakirə]]) tərəfindən edilmiş dəyişikliklər [[User:$1|$1]] tərəfindən edilmiş dəyişikliklərə qaytarıldı.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Müzakirə]]) tərəfindən edilmiş dəyişikliklər [[User:$1|$1]] tərəfindən edilmiş dəyişikliklərə qaytarıldı.',
'rollback-success' => '$1 tərəfindən edilmiş redaktələr geri qaytarıldı; $2 tərəfindən yaradılmış son versiya bərpa olundu.',
# Protect
@@ -1170,7 +1290,7 @@ Sonuncu silinmələrə bax: $2.',
'protect-summary-cascade' => 'kaskad mühafizə',
'protect-expiring' => '$1 (UTC)- tarixində vaxtı bitir',
'protect-cascade' => 'Kaskad mühafizəsi - bu səhifəyə daxil bütün səhifələri qoru',
-'protect-expiry-options' => '1 saat:1 hour,1 gün:1 day,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,sonsuz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 saat:1 hour,1 gün:1 day,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,sonsuz:infinite',
'restriction-type' => 'Hüquqlar:',
'restriction-level' => 'Məhdudiyyət dərəcəsi:',
'pagesize' => '(baytlar)',
@@ -1207,7 +1327,7 @@ Məqalələrin bərpa edilməsi və silinməsi haqqında son dəyişiklikləri n
'contributions-title' => '$1 istifadəçi fəaliyyətləri',
'mycontris' => 'Köməklərim',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Bu kriteriyaya uyğun redaktələr tapılmadı', # Optional parameter: $1 is the user name
+'nocontribs' => 'Bu kriteriyaya uyğun redaktələr tapılmadı',
'uctop' => '(son)',
'month' => 'Ay',
'year' => 'Axtarışa bu tarixdən etibarən başla:',
@@ -1215,6 +1335,8 @@ Məqalələrin bərpa edilməsi və silinməsi haqqında son dəyişiklikləri n
'sp-contributions-newbies' => 'Ancaq yeni istifadəçilərin fəaliyyətlərini göstər',
'sp-contributions-newbies-sub' => 'Yeni istifadəçilər üçün',
'sp-contributions-blocklog' => 'Bloklama qeydləri',
+'sp-contributions-talk' => 'Müzakirə',
+'sp-contributions-userrights' => 'istifadəçi hüquqları idarəsi',
'sp-contributions-search' => 'Fəaliyyətləri axtar',
'sp-contributions-username' => 'İP Ünvanı və ya istifadəçi adı:',
'sp-contributions-submit' => 'Axtar',
@@ -1236,6 +1358,7 @@ Məqalələrin bərpa edilməsi və silinməsi haqqında son dəyişiklikləri n
# Block/unblock
'blockip' => 'İstifadəçini blokla',
+'blockip-title' => 'İstifadəçini blokla',
'blockip-legend' => 'İstifadəçinin bloklanması',
'ipaddress' => 'IP ünvanı',
'ipadressorusername' => 'IP ünvanı və ya istifadəçi adı',
@@ -1245,7 +1368,7 @@ Məqalələrin bərpa edilməsi və silinməsi haqqında son dəyişiklikləri n
'ipbcreateaccount' => 'Hesab açmanı məhdudlaşdır',
'ipbsubmit' => 'Bu istifadəçini blokla',
'ipbother' => 'Başqa vaxt',
-'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,sonsuz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,sonsuz:infinite',
'ipbotheroption' => 'başqa',
'ipbotherreason' => 'Başqa/əlavə səbəb:',
'ipbwatchuser' => 'Bu istifadəçinin müzakirə və istifadəçi səhifəsini izlə',
@@ -1256,7 +1379,7 @@ Məqalələrin bərpa edilməsi və silinməsi haqqında son dəyişiklikləri n
'ipblocklist-submit' => 'Axtar',
'blocklistline' => '$1, $2 bloklandı $3 ($4)',
'infiniteblock' => 'qeyri-müəyyən müddətə',
-'expiringblock' => 'son tarix $1',
+'expiringblock' => 'son tarix $1 saat $2',
'anononlyblock' => 'yalnız anonim istifadəçi',
'createaccountblock' => 'Yeni hesab yaratma bloklanıb',
'blocklink' => 'blokla',
@@ -1282,8 +1405,8 @@ Bloklama şərtlərini dəyişmək istəyirsiniz?',
'proxyblocker' => 'Proksi bloklayıcı',
# Move page
-'move-page-legend' => 'Səhifənin adını dəyiş',
-'movepagetext' => "Aşağıdakı formadan istifədə etmə səhifənin adını, bütün tarixçəsini də köçürməklə yeni başlığa dəyişəcək.
+'move-page-legend' => 'Səhifənin adını dəyiş',
+'movepagetext' => "Aşağıdakı formadan istifədə etmə səhifənin adını, bütün tarixçəsini də köçürməklə yeni başlığa dəyişəcək.
Əvvəlki başlıq yeni başlığa istiqamətləndirmə səhifəsinə çevriləcək.
Köhnə səhifəyə keçidləri avtomatik olaraq dəyişə bilərsiniz.
Bu seçimi etmədiyiniz halda, [[Special:DoubleRedirects|təkrarlanan]] və ya [[Special:BrokenRedirects|qırıq istiqamətləndirmələri]] yoxlamağı yaddan çıxarmayın.
@@ -1293,26 +1416,27 @@ Nəzərə alın ki, hədəf başlığı altında bir səhifə mövcuddursa yerd
'''XƏBƏRDARLIQ!'''
Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bilər, ona görə də bu dəyişikliyi yerinə yetirməzdən əvvəl, bunun mümkün nəticələrini başa düşdüyünüzdən əmin olun.",
-'movearticle' => 'Səhifənin adını dəyişdir',
-'newtitle' => 'Yeni başlıq',
-'move-watch' => 'Bu səhifəni izlə',
-'movepagebtn' => 'Səhifənin adını dəyiş',
-'pagemovedsub' => 'Yerdəyişmə edilmişdir',
-'movepage-moved' => '\'\'\'"$1" səhifəsi "$2" səhifəsinə yerləşdirilmişdir\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'movedto' => 'dəyişdi',
-'movetalk' => 'Bu səhifənin müzakirə səhifəsinin de adını dəyişdir.',
-'1movedto2' => '[[$1]] adı dəyişildi. Yeni adı: [[$2]]',
-'1movedto2_redir' => '[[$1]] adı və məsiri dəyişildi : [[$2]]',
-'movelogpage' => 'Yerdəyişmə qeydləri',
-'movereason' => 'Səbəb:',
-'revertmove' => 'Əvvəlki vəziyyətinə',
-'delete_and_move' => 'Sil və apar',
-'delete_and_move_text' => '==Hazırki məqalənin silinməsi lazımdır==
+'movearticle' => 'Səhifənin adını dəyişdir',
+'newtitle' => 'Yeni başlıq',
+'move-watch' => 'Bu səhifəni izlə',
+'movepagebtn' => 'Səhifənin adını dəyiş',
+'pagemovedsub' => 'Yerdəyişmə edilmişdir',
+'movepage-moved' => '\'\'\'"$1" səhifəsi "$2" səhifəsinə yerləşdirilmişdir\'\'\'',
+'movedto' => 'dəyişdi',
+'movetalk' => 'Bu səhifənin müzakirə səhifəsinin de adını dəyişdir.',
+'1movedto2' => '[[$1]] adı dəyişildi. Yeni adı: [[$2]]',
+'1movedto2_redir' => '[[$1]] adı və məsiri dəyişildi : [[$2]]',
+'movelogpage' => 'Yerdəyişmə qeydləri',
+'movereason' => 'Səbəb:',
+'revertmove' => 'Əvvəlki vəziyyətinə',
+'delete_and_move' => 'Sil və apar',
+'delete_and_move_text' => '==Hazırki məqalənin silinməsi lazımdır==
"[[$1]]" məqaləsi mövcuddur. Bu dəyişikliyin yerinə yetirilə bilməsi üçün həmin məqalənin silinməsini istəyirsinizmi?',
-'delete_and_move_confirm' => 'Bəli, səhifəni sil',
-'delete_and_move_reason' => 'Ad dəyişməyə yer açmaq üçün silinmişdir',
-'selfmove' => 'Səhifənin hazırkı adı ilə dəyişmək istənilən ad eynidir. Bu əməliyyat yerinə yetirilə bilməz.',
+'delete_and_move_confirm' => 'Bəli, səhifəni sil',
+'delete_and_move_reason' => 'Ad dəyişməyə yer açmaq üçün silinmişdir',
+'selfmove' => 'Səhifənin hazırkı adı ilə dəyişmək istənilən ad eynidir. Bu əməliyyat yerinə yetirilə bilməz.',
+'protectedpagemovewarning' => "'''Xəbərdarlıq:''' Bu səhifə mühafizə edildiyi üçün onun adını yalnız idarəçilər dəyişə bilərlər.",
# Export
'export' => 'Səhifələri ixrac et',
@@ -1324,18 +1448,21 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
'export-addns' => 'Əlavə et',
# Namespace 8 related
-'allmessages' => "Sistem mə'lumatları",
-'allmessagesname' => 'Ad',
-'allmessagesdefault' => 'İlkin mətn',
-'allmessagescurrent' => 'İndiki mətn',
-'allmessagestext' => 'Bu MediaWiki-də olan sistem mesajlarının siyahısıdır. Əgər MediaWiki-ni lokallaşdırmaq işində kömək etmək isəyirsənsə, lütfən [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] və [http://translatewiki.net translatewiki.net]-ə baş çək.',
-'allmessagesfilter' => "Mə'lumat adı süzgəci:",
-'allmessagesmodified' => 'Yalnız redaktə olunmuşları göstər',
+'allmessages' => "Sistem mə'lumatları",
+'allmessagesname' => 'Ad',
+'allmessagesdefault' => 'İlkin mətn',
+'allmessagescurrent' => 'İndiki mətn',
+'allmessagestext' => 'Bu MediaWiki-də olan sistem mesajlarının siyahısıdır. Əgər MediaWiki-ni lokallaşdırmaq işində kömək etmək isəyirsənsə, lütfən [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] və [http://translatewiki.net translatewiki.net]-ə baş çək.',
+'allmessages-filter-all' => 'Hamısı',
+'allmessages-filter-modified' => 'Dəyişdirilmiş',
+'allmessages-language' => 'Dil:',
+'allmessages-filter-submit' => 'Keç',
# Thumbnails
-'thumbnail-more' => 'Böyüt',
-'djvu_page_error' => 'DjVu səhifəsi əlçatmazdır',
-'djvu_no_xml' => 'DjVu üçün XML faylı almaq mümkün deyil.',
+'thumbnail-more' => 'Böyüt',
+'djvu_page_error' => 'DjVu səhifəsi əlçatmazdır',
+'djvu_no_xml' => 'DjVu üçün XML faylı almaq mümkün deyil.',
+'thumbnail_image-missing' => 'Belə görünür ki, $1 faylı yoxdur',
# Special:Import
'importnotext' => 'Boş və ya mətn yoxdur',
@@ -1362,6 +1489,7 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
'tooltip-ca-viewsource' => 'Bu səhifə qorunma altındadır. Mənbəsinə baxa bilərsiniz.',
'tooltip-ca-history' => 'Bu səhifənin geçmiş nüsxələri.',
'tooltip-ca-protect' => 'Bu səhifəni qoru',
+'tooltip-ca-unprotect' => 'Bu səhifənin mühafizəsini kənarlaşdır',
'tooltip-ca-delete' => 'Bu səhifəni sil',
'tooltip-ca-undelete' => 'Bu səhifəni silinmədən oncəki halına qaytarın',
'tooltip-ca-move' => 'Bu səhifənin adını dəyiş',
@@ -1372,6 +1500,7 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
'tooltip-search-fulltext' => 'Bu mətnin olduğu səhifələri axtar',
'tooltip-p-logo' => 'Ana səhifə',
'tooltip-n-mainpage' => 'Ana səhifəni ziyarət edin',
+'tooltip-n-mainpage-description' => 'Ana Səhifəyə keç',
'tooltip-n-portal' => 'Layihə haqqında, nələr edəbilərsiniz, axtardıqlarınızı harda tapmaq olar',
'tooltip-n-currentevents' => 'Gündəlik xəbərlər ilə əlaqəli bilgilər',
'tooltip-n-recentchanges' => 'Vikidəki son dəyişikliklər siyahısı.',
@@ -1416,6 +1545,7 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
# Attribution
'anonymous' => '{{SITENAME}} saytının anonim {{PLURAL:$1|istifadəçisi|istifadəçiləri}}',
'siteuser' => '{{SITENAME}} istifadəçisi $1',
+'anonuser' => '{{SITENAME}} anonim istifadəçisi $1',
'creditspage' => 'Səhifə kreditleri',
# Spam protection
@@ -1429,6 +1559,11 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
'mw_math_modern' => 'Müasir brouzerlər üçün məsləhətdir',
'mw_math_mathml' => 'Mümkünsə MathML (sınaq)',
+# Math errors
+'math_unknown_error' => 'bilinməyən xəta',
+'math_unknown_function' => 'bilinməyən funksiya',
+'math_syntax_error' => 'sintaksis xətası',
+
# Patrol log
'patrol-log-auto' => '(avtomatik)',
@@ -1444,7 +1579,7 @@ $1',
'nextdiff' => 'Sonrakı redaktə →',
# Media information
-'imagemaxsize' => 'Şəkilin maksimal tutumu (faylın təsviri səhifələri üçün):',
+'imagemaxsize' => "Şəkilin maksimal tutumu:<br />''(faylın təsviri səhifələri üçün)''",
'thumbsize' => 'Kiçik ölçü:',
'file-info-size' => '($1 × $2 piksel, fayl həcmi: $3, MIME növü: $4)',
'file-nohires' => '<small>Daha dəqiq versiyası yoxdur.</small>',
@@ -1536,7 +1671,7 @@ Həmin sətirdəki sonrakı keçidlər istisnalar kimi qəbul edilir, yəni şə
'watchlisttools-edit' => 'İzlədiyim səhifələri göstər və redaktə et',
# Special:Version
-'version' => 'Versiya', # Not used as normal message but as header for the special page itself
+'version' => 'Versiya',
'version-software-version' => 'Versiya',
# Special:FilePath
@@ -1562,4 +1697,8 @@ Həmin sətirdəki sonrakı keçidlər istisnalar kimi qəbul edilir, yəni şə
# Special:Tags
'tags-edit' => 'redaktə',
+# HTML forms
+'htmlform-reset' => 'Dəyişiklikləri qaytar',
+'htmlform-selectorother-other' => 'Digər',
+
);
diff --git a/languages/messages/MessagesBa.php b/languages/messages/MessagesBa.php
index c5624fd4..85b72a25 100644
--- a/languages/messages/MessagesBa.php
+++ b/languages/messages/MessagesBa.php
@@ -18,11 +18,9 @@ $fallback = 'ru';
$namespaceNames = array(
NS_MEDIA => 'Медиа',
NS_SPECIAL => 'Ярҙамсы',
- NS_MAIN => '',
NS_TALK => 'Фекер_алышыу',
NS_USER => 'Ҡатнашыусы',
- NS_USER_TALK => 'Ҡатнашыусы_м-н_фекер_алышыу',
- #NS_PROJECT set by $wgMetaNamespace
+ NS_USER_TALK => 'Ҡатнашыусы_м-н_фекер_алышыу',
NS_PROJECT_TALK => '$1_б-са_фекер_алышыу',
NS_FILE => 'Рәсем',
NS_FILE_TALK => 'Рәсем_б-са_фекер_алышыу',
@@ -69,6 +67,7 @@ $messages = array(
'tog-enotifminoredits' => 'Әҙ генә үҙгәрештәр тураһында электрон почта аша белдерергә',
'tog-enotifrevealaddr' => 'Белдереү хәбәрҙәрендә поста адресым күрһәтелһен',
'tog-shownumberswatching' => 'Битте күҙәтеү исемлегенә өҫтәгән ҡулланыусылар һанын күрһәтергә',
+'tog-oldsig' => 'Хәҙерге имзаны алдан ҡарау:',
'tog-fancysig' => 'Имзаның үҙ вики-тамғаһы (автоматик һылтанмаһыҙ)',
'tog-externaleditor' => 'Тыш мөхәррирләүсе ҡулланырға (компьютер махсус көйләнгән булырға тейеш)',
'tog-externaldiff' => 'Версияларҙы сағыштырыу өсөн тыш программа ҡулланырға (компьютер махсус көйләнгән булырға тейеш)',
@@ -90,6 +89,13 @@ $messages = array(
'underline-never' => 'Бер ҡасан да',
'underline-default' => 'Браузер көйләүҙәрен ҡулланырға',
+# Font style option in Special:Preferences
+'editfont-style' => 'Үҙгәртеү тәҙрәһендәге шрифт тибы:',
+'editfont-default' => 'Браузер көйләүҙәре ҡулланылһын',
+'editfont-monospace' => 'Тиң киңлекле шрифт',
+'editfont-sansserif' => 'Киртекһеҙ шрифт',
+'editfont-serif' => 'Киртекле шрифт',
+
# Dates
'sunday' => 'Йәкшәмбе',
'monday' => 'Дүшәмбе',
@@ -149,7 +155,7 @@ $messages = array(
'category-media-header' => '«$1» категорияһындағы файлдар',
'category-empty' => '"Был категория әлегә буш."',
'hidden-categories' => '{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}',
-'hidden-category-category' => 'Йәшерен категориялар', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Йәшерен категориялар',
'category-subcat-count' => '{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
'category-subcat-count-limited' => 'Был категорияла {{PLURAL:$1|$1 эске категория}} бар.',
'category-article-count' => '{{PLURAL:$2|Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
@@ -157,6 +163,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}',
'category-file-count-limited' => 'Бу категорияла {{PLURAL:$1|$1 файл}} бар.',
'listingcontinuesabbrev' => '(дауамы)',
+'index-category' => 'Индексланған биттәр',
+'noindex-category' => 'Индексланмаған биттәр',
'mainpagetext' => '«MediaWiki» уңышлы рәүештә ҡоролдо.',
'mainpagedocfooter' => 'Был вики менән эшләү тураһында мәғлүмәтте [http://meta.wikimedia.org/wiki/Ярҙам:Белешмә ошонда] табып була.
@@ -166,10 +174,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki тураһында йыш бирелгән һорауҙар һәм яуаптар (инг.)];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ның яңы версиялары тураһында хәбәрҙәр алып тороу].',
-'about' => 'Тасуирлау',
-'article' => 'Мәҡәлә',
-'newwindow' => '(яңы биттә)',
-'cancel' => 'Бөтөрөргә',
+'about' => 'Тасуирлау',
+'article' => 'Мәҡәлә',
+'newwindow' => '(яңы биттә)',
+'cancel' => 'Бөтөрөргә',
+'moredotdotdot' => 'Дауамы...',
+'mypage' => 'Шәхси бит',
+'mytalk' => 'Минең менән фекер алышыу',
+'anontalk' => 'Был IP-адресының фекер алышыу бите',
+'navigation' => 'Төп йүнәлештәр',
+'and' => '&#32;һәм',
+
+# Cologne Blue skin
'qbfind' => 'Эҙләү',
'qbbrowse' => 'Байҡарға',
'qbedit' => 'Үҙгәртергә',
@@ -177,15 +193,35 @@ $messages = array(
'qbpageinfo' => 'Бит тураһында мәғлүмәттәр',
'qbmyoptions' => 'Көйләү',
'qbspecialpages' => 'Махсус биттәр',
-'moredotdotdot' => 'Дауамы...',
-'mypage' => 'Шәхси бит',
-'mytalk' => 'Минең менән фекер алышыу',
-'anontalk' => 'Был IP-адресының фекер алышыу бите',
-'navigation' => 'Төп йүнәлештәр',
-'and' => '&#32;һәм',
-
-# Metadata in edit box
-'metadata_help' => 'Мета-мәғлүмәттәр:',
+'faq' => 'ЙБҺ',
+'faqpage' => 'Project:ЙБҺ',
+
+# Vector skin
+'vector-action-addsection' => 'Тема өҫтәргә',
+'vector-action-delete' => 'Юйырға',
+'vector-action-move' => 'Исемен үҙгәртергә',
+'vector-action-protect' => 'Һаҡларға',
+'vector-action-undelete' => 'Тергеҙергә',
+'vector-action-unprotect' => 'Һаҡлауҙы сисергә',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Ярҙам бите',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Бит',
+'vector-namespace-media' => 'Медиа-бит',
+'vector-namespace-mediawiki' => 'Хәбәр',
+'vector-namespace-project' => 'Проект бите',
+'vector-namespace-special' => 'Махсус бит',
+'vector-namespace-talk' => 'Фекер алышыу',
+'vector-namespace-template' => 'Ҡалып',
+'vector-namespace-user' => 'Ҡулланыусы бите',
+'vector-view-create' => 'Яһау',
+'vector-view-edit' => 'Үҙгәртергә',
+'vector-view-history' => 'Тарихты ҡарау',
+'vector-view-view' => 'Уҡыу',
+'vector-view-viewsource' => 'Сығанаҡты ҡарарға',
+'actions' => 'Хәрәкәт',
+'namespaces' => 'Исем арауыҡтары',
+'variants' => 'Варианттар',
'errorpagetitle' => 'Хата',
'returnto' => '$1 битенә ҡайтыу.',
@@ -235,12 +271,17 @@ $messages = array(
'otherlanguages' => 'Башҡа телдәрҙә',
'redirectedfrom' => '($1 битенән йүнәлтелде)',
'redirectpagesub' => 'Йүнәлтеү бите',
-'lastmodifiedat' => 'Был биттең һуңғы тапҡыр үҙгәртелеү ваҡыты: $2, $1 .', # $1 date, $2 time
+'lastmodifiedat' => 'Был биттең һуңғы тапҡыр үҙгәртелеү ваҡыты: $2, $1 .',
'viewcount' => 'Был биткә $1 {{PLURAL:$1|тапҡыр}} мөрәжәғәт иттеләр.',
'protectedpage' => 'Һаҡланған бит',
'jumpto' => 'Унда күсергә:',
'jumptonavigation' => 'төп йүнәлештәр',
'jumptosearch' => 'эҙләү',
+'view-pool-error' => 'Ғәфү итегеҙ, хәҙерге ваҡытта серверҙар артыҡ тейәлгән.
+Был битте ҡарарға теләүселәр бик күп.
+Зинһар был биткә һуңырак кереп ҡарағыҙ.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} тураһында',
@@ -253,8 +294,6 @@ $messages = array(
'disclaimerpage' => 'Project:Яуаплылыҡтан баш тартыу',
'edithelp' => 'Мөхәрирләү белешмәһе',
'edithelppage' => 'Help:Төҙәтеү белешмәһе',
-'faq' => 'ЙБҺ',
-'faqpage' => 'Project:ЙБҺ',
'helppage' => 'Help:Белешмә',
'mainpage' => 'Баш бит',
'mainpage-description' => 'Баш бит',
@@ -334,8 +373,6 @@ $messages = array(
$1
«$2» функцияһынан килә.
База «$3: $4» хатаһын кире ҡайтарҙы.',
-'noconnect' => 'Ғәфү итегеҙ, хәҙер викила техник проблемалар бар, мәғлүмәттәр базаһы серверы менән бәйләнеп булмай.<br />
-$1',
'laggedslavemode' => "'''Иғтибар:''' биттә һуңғы үҙгәртеүҙәр күрһәтелмәгән булырға мөмкин.",
'readonly' => 'Мәғлүмәттәр базаһы бикләнгән',
'enterlockreason' => 'Ябылыу сәбәбен һәм ваҡытын белдерегеҙ.',
@@ -354,6 +391,7 @@ $1',
'readonly_lag' => 'Өҫтәмә сервер төп сервер менән синхронлашҡанға тиклем мәғлүмәттәр базаһы автоматик рәүештә үҙгәрештәргә ҡаршы ябылған.',
'internalerror' => 'Эске хата',
'internalerror_info' => 'Эске хата: $1',
+'fileappenderror' => '"$1"ҙе "$2"гә ҡушып булманы.',
'filecopyerror' => '«$2» файлына «$1» файлының күсермәһен яһап булмай.',
'filerenameerror' => '«$1» файлының исемен «$2» исеменә алмаштырып булмай.',
'filedeleteerror' => '«$1» файлын юйып булмай.',
@@ -363,6 +401,8 @@ $1',
'unexpected' => 'Көтөлмәгән ҡиммәт: «$1»=«$2».',
'formerror' => 'Хата: форма мәғлүмәттәрен ебәреп булмай',
'badarticleerror' => 'Был биттә ундай ғәмәл үтәргә ярамай',
+'cannotdelete' => '«$1» исемле битте йәки файлды юйып булмай.
+Уны башҡа ҡулланыусы юйған булыуы мөмкин.',
'badtitle' => 'Ярамаған исем',
'badtitletext' => 'Биттең һоратылған исеме дөрөҫ түгел, буш йәки телдәр араһы йәки интервики исеме яңылыш күрһәтелгән. Исемдә тыйылған символдар булыуы ла мөмкин.',
'perfcached' => 'Был мәғлүмәттәр кэштан алынған, уларҙа һуңғы үҙгәртеүҙәр булмаҫҡа мөмкин.',
@@ -404,7 +444,6 @@ $2',
'welcomecreation' => '== Рәхим итегеҙ, $1! ==
Иҫәп яҙыуығыҙ яһалды.
Шәхси [[Special:Preferences|көйләүҙәрегеҙҙе]] үҙегеҙгә уңайлы итеп үҙгәртергә онотмағыҙ.',
-'loginpagetitle' => 'Танышыу йәки теркәлеү',
'yourname' => 'Ҡатнашыусы исеме',
'yourpassword' => 'Һеҙҙең пароль',
'yourpasswordagain' => 'Парольде ҡабаттан яҙыу',
@@ -415,6 +454,7 @@ $2',
'nav-login-createaccount' => 'Танышыу йәки теркәлеү',
'loginprompt' => '{{SITENAME}} проектына кереү өсөн «cookies» рөхсәт ителгән булырға тейеш.',
'userlogin' => 'Танышыу йәки теркәлеү',
+'userloginnocreate' => 'Танышыу',
'logout' => 'Тамамлау',
'userlogout' => 'Тамамлау',
'notloggedin' => 'Танылмағанһығыҙ',
@@ -427,28 +467,8 @@ $2',
'badretype' => 'Һеҙ кереткән паролдәр тап килмәйҙәр.',
'userexists' => 'Керетелгән исем ҡулланыла.
Зинһар, башҡа исем һайлағыҙ.',
-'youremail' => 'Электрон почта *',
-'username' => 'Ҡулланыусы исеме:',
-'uid' => 'Ҡатнашыусының идентификаторы:',
-'yourrealname' => 'Һеҙҙең ысын исемегеҙ (*)',
-'yourlanguage' => 'Тышҡы күренештә ҡулланылған тел:',
-'yourvariant' => 'Тел төрө',
-'yournick' => 'Һеҙҙең уйҙырма исемегеҙ/ҡушаматығыҙ (имза өсөн):',
-'badsig' => 'Хаталы имза. HTML-тегдарҙың дөрөҫлөгөн тикшерегеҙ.',
-'badsiglength' => 'Бигерәк оҙон имза. Имза оҙонлоғо $1 {{PLURAL:$1|символдан}} артыҡ булмаҫҡа тейеш.',
-'yourgender' => 'Зат:',
-'gender-unknown' => 'күрһәтелмәгән',
-'gender-male' => 'Ир-егет',
-'gender-female' => 'Ҡатын-ҡыҙ',
-'prefs-help-gender' => 'Теләк буйынса: ҡатнашыусының затына бәйле ҡайһы бер программа хәбәрҙәрендә ҡулланыла.
-Был дөйөм мәғлүмәт буласаҡ.',
-'email' => 'Электрон почта',
-'prefs-help-realname' => 'Ысын исемегеҙ (теләк буйынса).
-Әгәр уны күрһәтһәгеҙ, битте кемдең төҙәткәнен күрһәткәндә ҡулланыласаҡ.',
'loginerror' => 'Танышыу хатаһы',
-'prefs-help-email' => 'Электрон почта (теләк буйынса). Күрһәтелгән булһа, ғәмәлдә булған паролегеҙҙе онотҡан осраҡта адресығыҙға яңы пароль ебәреләсәк.
-Шулай уҡ башҡа ҡатнашыусылар менән үҙ битегеҙ аша, электрон почтағыҙҙың адресын күрһәтмәйенсә, тура бәйләнешкә инергә мөмкинселек бирә.',
-'prefs-help-email-required' => 'Электрон почта адресы кәрәк.',
+'createaccounterror' => 'Иҫәп яҙыуын яһап булмай: $1',
'nocookiesnew' => 'Иҫәп яҙыуы яһалды, ләкин һеҙ танылмағанһығыҙ. {{SITENAME}} ҡатнашыусыны таныу өсөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уларға рөхсәт бирегеҙ, шунан яңы ҡатнашыусы исеме һәм пароль менән танылығыҙ.',
'nocookieslogin' => '{{SITENAME}} ҡатнашыусыны таныу өсөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уға рөхсәт бирегеҙ һәм яңынан керегеҙ.',
'noname' => 'Ғәмәлдә булған ҡатнашыусы исемен керетмәнегеҙ.',
@@ -459,14 +479,18 @@ $2',
Исемде тикшерегеҙ йәки [[Special:UserLogin/signup|яңы иҫәп яҙыуы асығыҙ]].',
'nosuchusershort' => '<nowiki>$1</nowiki> исемле ҡулланыусы юҡ. Исемде тикшерегеҙ.',
'nouserspecified' => 'Һеҙ ҡатнашыусы исемен күрһәтергә тейеш.',
+'login-userblocked' => 'Был ҡатнашыусыға рөхсәт юҡ. Исеме тыйылған.',
'wrongpassword' => 'Һеҙ ҡулланған пароль ҡабул ителмәй. Яңынан яҙып ҡарағыҙ.',
'wrongpasswordempty' => 'Зинһар, буш булмаған пароль керетегеҙ.',
+'passwordtooshort' => 'Пароль кәмендә $1 {{PLURAL:$1|символдан}} торорға тейеш.',
+'password-name-match' => 'Керетелгән пароль ҡулланыусы исеменән айырылырға тейеш.',
'mailmypassword' => 'Яңы пароль ебәрергә',
'passwordremindertitle' => '{{SITENAME}} өсөн яңы ваҡытлыса пароль',
'passwordremindertext' => 'Кемдер (бәлки, һеҙ, IP-адресы: $1) {{SITENAME}} ($4) өсөн яңы пароль һоратты. $2 ҡатнашыусыһы өсөн ваҡытлыса яңы пароль яһалды: $3. Әгәр был һеҙ булһағыҙ, системага керегеҙ һәм паролде алмаштырығыҙ. Яңы пароль $5 {{PLURAL:$5|көн}} ғәмәлдә буласаҡ.
Әгәр һеҙ паролде алмаштырыуҙы һоратмаған йәки онотоп кире иҫләгән булһағыҙ һәм үҙгәртергә теләмәһәгеҙ, был хәбәргә иғтибар итмәгеҙ һәм элекке паролегеҙҙе ҡулланыуығыҙҙы дауам итегеҙ.',
'noemail' => '$1 исемле ҡулланыусы өсөн электрон почта адресы белдерелмәгән.',
+'noemailcreate' => 'Дөрөҫ электрон почта адресы күрһәтеү кәрәк',
'passwordsent' => 'Яңы пароль $1 исемле ҡатнашыусының электрон почта адресына ебәрелде.
Зинһар, паролде алғас, системаға яңынан керегеҙ.',
@@ -488,6 +512,7 @@ $2',
'createaccount-text' => 'Кемдер, электрон почта адресығыҙҙ күрһәтеп, {{SITENAME}} ($4) проектында «$3» пароле менән «$2» исемле иҫәп яҙыуы теркәне. Һеҙҙең кереүегеҙ һәм паролегеҙҙе алмаштырыуығыҙ кәрәк.
Иҫәп яҙыуы яңылыш яһалһа был хатҡа иғтибар итмәгеҙ.',
+'usernamehasherror' => 'Ҡулланыусы исемендә "#" символы була алмай',
'login-throttled' => 'Һеҙ системала артыҡ күп танылырға тырыштығыҙ.
Зинһар, ҡабатламаҫтан алда бераҙ көтөгөҙ.',
'loginlanguagelabel' => 'Тел: $1',
@@ -504,6 +529,7 @@ $2',
'resetpass_forbidden' => 'Паролде үҙгәртеп булмай',
'resetpass-no-info' => 'Был битте туранан ҡарау өсөн һеҙге системала танылырға кәрәк.',
'resetpass-submit-loggedin' => 'Паролде үҙгәртергә',
+'resetpass-submit-cancel' => 'Бөтөрөргә',
'resetpass-wrong-oldpass' => 'Хаталы ваҡытлыса йәки ағымдағы пароль.
Һеҙ, бәлки, паролегеҙҙе алмаштырғанһығыҙ йәки яңы пароль һоратҡанһығыҙ.',
'resetpass-temp-password' => 'Ваҡытлыса пароль',
@@ -602,9 +628,16 @@ $2',
Һеҙ [[Special:Search/{{PAGENAME}}|был исемде башҡа биттәрҙә эҙләй]],
<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тап килгән журнал яҙмаларын таба]
йәки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} бындай исемле яңы бит яһай]''' алаһығыҙ.",
+'noarticletext-nopermission' => 'Хәҙерге ваҡытта был биттә текст юҡ.
+Һеҙ башҡа мәҡәләләрҙә [[Special:Search/{{PAGENAME}}|был исемде]] йәки
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналдағы яҙмаларҙы] эҙләй алаһығыҙ.</span>',
'userpage-userdoesnotexist' => '«$1» иҫәп яҙыуы юҡ. Һеҙ бындай бит яһарға йәки битте үҙгәртергә теләһәгеҙ яңынан тикшерегеҙ.',
+'userpage-userdoesnotexist-view' => '«$1» исемле иҫәп яҙыуы юҡ.',
+'blocked-notice-logextract' => 'Хәҙергә был ҡатнашыусы ябылған. Һуңғы ҡулланыусы ябыу яҙмаһы:',
'clearyourcache' => "'''Иҫкәрмә:''' Битте һаҡлағандан һуң үҙгәртеүҙерегеҙ күренһен өсөн браузерығыҙҙың кэшын таҙартығыҙ.
Быны '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''Safari''': ''Cmd+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Konqueror''': ''F5'', '''Opera''': ''Tools→Preferences'' аша эшләп була.",
+'usercssyoucanpreview' => "'''Кәңәш:''' Яңы CSS-файлды һаҡларҙан алда тикшерер өсөн \"алдан ҡарау\" төймәһенә баҫығыҙ.",
+'userjsyoucanpreview' => "'''Кәңәш:''' Яңы JS-файлды һаҡларҙан алда тикшерер өсөн \"алдан ҡарау\" төймәһенә баҫығыҙ.",
'usercsspreview' => "'''Был бары тик CSS файлды алдан ҡарау ғына, ул әле һаҡланмаған!'''",
'userjspreview' => "'''Был бары тик JavaScript файлын алдан ҡарау ғына, ул әле һаҡланмаған!'''",
'userinvalidcssjstitle' => "'''Иғтибар:''' \"\$1\" биҙәү темаһы табылманы. Иҫтә тотоғоҙ, .css һәм .js ҡулланыусы биттәренең исемдәре тик бәләкәй хәрефтәрҙән генә торорға тейеш. Мәҫәлән: {{ns:user}}:Foo/monobook.css, ә {{ns:user}}:Foo/Monobook.css түгел!",
@@ -650,7 +683,16 @@ $2',
Тексты аҙаҡтан ҡулланыу өсөн файлда һаҡлап тора алаһығыҙ.
Хәким белдергән сәбәп: $1",
+'protectedpagewarning' => "'''КИҪӘТЕҮ: Һеҙ был битте үҙгәртә алмайһығыҙ, был хоҡуҡҡа хакимдәр генә эйә.'''
+Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
+'semiprotectedpagewarning' => "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.
+Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хәкимдәр генә үҙгәртә ала, сөнки ул каскадлы һаҡлау асылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} ҡушылған:",
+'titleprotectedwarning' => "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''
+Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
+'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
+'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
+'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
'template-protected' => '(һаҡланған)',
'template-semiprotected' => '(өлөшләтә һаҡланған)',
'hiddencategories' => 'Был бит $1 {{PLURAL:$1|йәшерен категорияға}} керә:',
@@ -658,9 +700,18 @@ $2',
'nocreatetext' => '{{SITENAME}}, яңы бит яһауҙы рөхсәт итмәгән.
Һеҙ кире ҡайта һәм булған битте мөхәррирләй, [[Special:UserLogin|системала таныла йәки яңы иҫәп яҙыуы яһай]] алаһығыҙ.',
'nocreate-loggedin' => 'Яңы биттәр яһау хоҡуғығыҙ юҡ.',
+'sectioneditnotsupported-title' => 'Бүлектәрҙә мөхәррирләү терәкләнмәй',
+'sectioneditnotsupported-text' => 'Был биттә бүлектәрҙе мөхәррирләү терәкләнмәй.',
'permissionserrors' => 'Ирешеү хоҡуҡтары хаталары',
'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|Сәбәбе|Сәбәптәре}}:",
+'recreate-moveddeleted-warn' => "'''Иғтибар: Һеҙ, элек юйылған битте яңынан яһарға теләйһегеҙ.'''
+
+Һеҙгә был битте яңынан яһау кәрәклеген яңынан уйлап ҡарағыҙ.
+Түбәндә биттең юйыу һәм исем үҙгәртеү яҙмалары килетерелә:",
+'moveddeleted-notice' => 'Был бит юйылған.
+Белешмә өсөн киләһе юйыу һәм исем үҙгәртеү яҙмалары килтерелә.',
+'log-fulllog' => 'Бар яҙмаларҙы ҡарарға',
'edit-hook-aborted' => 'Үҙгәртеүҙе ҡармаҡ-процедура кире ҡаҡты.
Өҫтәмә аңлатма килтерелмәй.',
'edit-gone-missing' => 'Битте яңыртып булмай.
@@ -700,6 +751,9 @@ $3 белдергән сәбәп: ''$2''",
'viewpagelogs' => 'Был биттең яҙмаларын ҡарарға',
'nohistory' => 'Был биттең үҙгәртеүҙәр тарихы юҡ.',
'currentrev' => 'Ағымдағы версия',
+'currentrev-asof' => '$1, ағымдағы версия',
+'revisionasof' => '$1 версияһы',
+'revision-info' => 'Версия: $1; $2',
'previousrevision' => '← Алдағы',
'nextrevision' => 'Киләһе →',
'currentrevisionlink' => 'Ағымдағы версия',
@@ -711,62 +765,125 @@ $3 белдергән сәбәп: ''$2''",
'histlegend' => "Айырма һайлау: сағыштырырға теләгән 2 версияны һайлап Enter-ға йәки биттең аҫҡы өлөшөндәге төймәгә баҫығыҙ.<br />
Аңлатмалар: '''({{int:cur}})''' — хәҙерге версиянан айырма, '''({{int:last}})''' — алдағы версиянан айырма, '''{{int:minoreditletter}}''' — әҙ үҙгәреш яһалған.",
'history-fieldset-title' => 'Тарихты ҡарарға',
+'history-show-deleted' => 'Юйылғандар ғына',
'histfirst' => 'Иң иҫке',
'histlast' => 'Һуңғы',
'historysize' => '($1 {{PLURAL:$1|байт}})',
'historyempty' => '(буш)',
# Revision feed
-'history-feed-title' => 'Үҙгәртеүҙәр тарихы',
-'history-feed-description' => 'Викилағы был биттең үҙгәртеүҙәр тарихы',
-'history-feed-empty' => 'Һоратылған бит юҡ.
+'history-feed-title' => 'Үҙгәртеүҙәр тарихы',
+'history-feed-description' => 'Викилағы был биттең үҙгәртеүҙәр тарихы',
+'history-feed-item-nocomment' => '$1, $2',
+'history-feed-empty' => 'Һоратылған бит юҡ.
Ул бит юйылған йәки исеме үҙгәртелгән булыуы мөмкин.
Викила оҡшаш биттәрҙе [[Special:Search|эҙләп ҡарағыҙ]].',
# Revision deletion
-'rev-deleted-comment' => '(комментарий юйылған)',
-'rev-deleted-user' => '(автор исеме юйылған)',
-'rev-deleted-event' => '(яҙма юйылған)',
-'rev-delundel' => 'күрһәт/йәшер',
-'revisiondelete' => 'Бит версияларын юйырға/тергеҙергә',
-'revdelete-nooldid-title' => 'Маҡсат версия билдәләнмәгән',
-'revdelete-nooldid-text' => 'Был функцияны үтәү өсөн һеҙ маҡсат версияны (йәки версияларҙы) билдәләмәнегеҙ. Билдәләнгән версия юҡ йәки версияны йәшерергә тырышаһығыҙ.',
-'revdelete-nologtype-title' => 'Яҙма тибы билдәләнмәгән',
-'revdelete-nologtype-text' => 'Ғәмәл үтәләсәк яҙма тибын билдәләмәгәнһегеҙ.',
-'revdelete-nologid-title' => 'Яҙмалағы яҙыу хаталы',
-'revdelete-nologid-text' => 'Ғәмәлде үтәү өсөн яҙманың маҡсат яҙыуын күрһәтмәнегеҙ йәки күрһәтелгән яҙыу юҡ.',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
-'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
-'revdelete-suppress-text' => "Йәшереү '''тик''' киләһе осраҡтарҙа ғына башҡарыла:
+'rev-deleted-comment' => '(комментарий юйылған)',
+'rev-deleted-user' => '(автор исеме юйылған)',
+'rev-deleted-event' => '(яҙма юйылған)',
+'rev-deleted-user-contribs' => '[ҡулланыусы исеме йәки IP-адрес юйылған — төҙәтеү өлөш битенән йәшерелде]',
+'rev-deleted-text-permission' => "Биттең был версияһы '''юйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-deleted-text-unhide' => "Биттең был версияһы '''юйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.
+Һеҙ хәким булғанлыҡтан [был версияны $1] ҡарай алаһығыҙ.",
+'rev-suppressed-text-unhide' => "Биттең был версияһы '''тыйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Тыйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.
+Һеҙ хәким булғанлыҡтан [был версияны $1] ҡарай алаһығыҙ.",
+'rev-deleted-text-view' => "Биттең был версияһы '''юйылған'''.
+Һеҙ хәким булғанлыҡтан уны ҡарай алаһығыҙ. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-suppressed-text-view' => "Биттең был версияһы '''тыйылған'''.
+Һеҙ хәким булғанлыҡтан уны ҡарай алаһығыҙ.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Тыйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-deleted-no-diff' => "Һеҙ версиялар араһындағы айырманы ҡарай алмайһығыҙ, сөнки бит версияларының береһе '''юйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-deleted-unhide-diff' => "Һеҙ версиялар араһындағы айырманы ҡарай алмайһығыҙ, сөнки бит версияларының береһе '''юйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.
+Һеҙ хәким булғанлыҡтан [был версияны $1] ҡарай алаһығыҙ.",
+'rev-suppressed-unhide-diff' => "Был сағыштырыу версияларының береһе '''тыйылған'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Тыйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.
+Һеҙ хәким булғанлыҡтан, дауам итергә теләһәгеҙ, [был версияны $1] ҡарай алаһығыҙ.",
+'rev-deleted-diff-view' => "Был сағыштырыу версияларының береһе '''юйылған'''.
+Һеҙ хәким булғанлыҡтан был сағыштырыуҙы ҡарай алаһығыҙ.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Юйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-suppressed-diff-view' => "Был сағыштырыу версияларының береһе '''тыйылған'''.
+Һеҙ хәким булғанлыҡтан был сағыштырыуҙы ҡарай алаһығыҙ.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Тыйыу яҙмаларында] аңлатмалар ҡалдырылыуы мөмкин.",
+'rev-delundel' => 'күрһәт/йәшер',
+'rev-showdeleted' => 'күрһәтергә',
+'revisiondelete' => 'Бит версияларын юйырға/тергеҙергә',
+'revdelete-nooldid-title' => 'Маҡсат версия билдәләнмәгән',
+'revdelete-nooldid-text' => 'Был функцияны үтәү өсөн һеҙ маҡсат версияны (йәки версияларҙы) билдәләмәнегеҙ. Билдәләнгән версия юҡ йәки версияны йәшерергә тырышаһығыҙ.',
+'revdelete-nologtype-title' => 'Яҙма тибы билдәләнмәгән',
+'revdelete-nologtype-text' => 'Ғәмәл үтәләсәк яҙма тибын билдәләмәгәнһегеҙ.',
+'revdelete-nologid-title' => 'Яҙмалағы яҙыу хаталы',
+'revdelete-nologid-text' => 'Ғәмәлде үтәү өсөн яҙманың маҡсат яҙыуын күрһәтмәнегеҙ йәки күрһәтелгән яҙыу юҡ.',
+'revdelete-no-file' => 'Күрһәтелгән файл юҡ.',
+'revdelete-show-file-confirm' => '$2, $3 ваҡытлы «<nowiki>$1</nowiki> файлының юйылған версияһын ҡарарға теләүегеҙҙе раҫлайһығыҙмы?',
+'revdelete-show-file-submit' => 'Эйе',
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
+'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
+'revdelete-text' => "'''Биттәрҙең юйылған версиялары һәм ваҡиғалар, бит тарихында һәм яҙмаларҙа күрһәтеләсәк, ләкин уларҙың эстәлектәренең бер өлөшө ябай ҡулланыусыларға асыҡ булмаясаҡ.'''
+{{SITENAME}} проектының хәкимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
+'revdelete-confirm' => 'Зинһар, был ғәмәлде үтәргә теләүегеҙҙе, буласаҡ һөҙөмтәләрҙә аңлауығыҙҙы, [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса эшләүегеҙҙе раҫлағыҙ.',
+'revdelete-suppress-text' => "Йәшереү '''тик''' киләһе осраҡтарҙа ғына башҡарыла:
* Уңай булмаған шәхси мәғлүмәт
* ''өй адресы, телефон номерҙары, паспорт номеры һ.б.''",
-'revdelete-legend' => 'Күренеш сикләүҙәрен көйләргә:',
-'revdelete-hide-text' => 'Биттең был версияһының текстын йәшерергә',
-'revdelete-hide-name' => 'Ғәмәлде һәм маҡсатын йәшерергә',
-'revdelete-hide-comment' => 'Үҙгәртеү тасуирламаларын йәшерергә',
-'revdelete-hide-user' => 'Мөхәррирләүсенең исемен/IP-адресын йәшерергә',
-'revdelete-hide-restricted' => 'Мәғлүмәттәрҙе хәкимдәрҙән дә йәшерергә',
-'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хәкимдәрҙән дә йәшерергә',
-'revdelete-hide-image' => 'Файл эстәлеген йәшерергә',
-'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
-'revdelete-log' => 'Сәбәп:',
-'revdelete-logentry' => '[[$1]] бит версияһының күренеүсәнлеге үҙгәрҙе',
-'logdelete-logentry' => '[[$1]] ваҡиғаһының күренеүсәнлеге үҙгәртелде',
-'revdelete-success' => "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
-'logdelete-success' => "'''Яҙма күренеүсәнлеге үҙгәртелде.'''",
-'revdel-restore' => 'Күренеүсәнлекте үҙгәртергә',
-'pagehist' => 'Бит тарихы',
-'deletedhist' => 'Юйылған тарих',
-'revdelete-content' => 'эстәлек',
-'revdelete-summary' => 'үҙгәртеүҙәр тасуирламаһы',
-'revdelete-uname' => 'ҡатнашыусы исеме',
-'revdelete-restricted' => 'хәкимдәргә ҡаршы ҡулланылған сикләүҙәр',
-'revdelete-unrestricted' => 'хәкимдәрҙән алынған сикләүҙәр',
-'revdelete-hid' => '$1 йәшер',
-'revdelete-unhid' => '$1 күрһәт',
-'revdelete-log-message' => '$2 {{PLURAL:$2|версия|версия}} өсөн $1',
-'logdelete-log-message' => '$2 {{PLURAL:$2|ваҡиға|ваҡиға}} өсөн $1',
+'revdelete-legend' => 'Күренеш сикләүҙәрен көйләргә:',
+'revdelete-hide-text' => 'Биттең был версияһының текстын йәшерергә',
+'revdelete-hide-image' => 'Файл эстәлеген йәшерергә',
+'revdelete-hide-name' => 'Ғәмәлде һәм маҡсатын йәшерергә',
+'revdelete-hide-comment' => 'Үҙгәртеү тасуирламаларын йәшерергә',
+'revdelete-hide-user' => 'Мөхәррирләүсенең исемен/IP-адресын йәшерергә',
+'revdelete-hide-restricted' => 'Мәғлүмәттәрҙе хәкимдәрҙән дә йәшерергә',
+'revdelete-radio-same' => '(үҙгәртмәҫкә)',
+'revdelete-radio-set' => 'Эйе',
+'revdelete-radio-unset' => 'Юҡ',
+'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хәкимдәрҙән дә йәшерергә',
+'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
+'revdelete-log' => 'Сәбәп:',
+'revdelete-submit' => 'Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға',
+'revdelete-logentry' => '[[$1]] бит версияһының күренеүсәнлеге үҙгәрҙе',
+'logdelete-logentry' => '[[$1]] ваҡиғаһының күренеүсәнлеге үҙгәртелде',
+'revdelete-success' => "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
+'revdelete-failure' => "'''Версия күренеүсәнлеген үҙгәртеп булмай:'''
+$1",
+'logdelete-success' => "'''Яҙма күренеүсәнлеге үҙгәртелде.'''",
+'logdelete-failure' => "'''Яҙма күренеүсәнлеге көйләнмәгән:'''
+$1",
+'revdel-restore' => 'Күренеүсәнлекте үҙгәртергә',
+'pagehist' => 'Бит тарихы',
+'deletedhist' => 'Юйылған тарих',
+'revdelete-content' => 'эстәлек',
+'revdelete-summary' => 'үҙгәртеүҙәр тасуирламаһы',
+'revdelete-uname' => 'ҡатнашыусы исеме',
+'revdelete-restricted' => 'хәкимдәргә ҡаршы ҡулланылған сикләүҙәр',
+'revdelete-unrestricted' => 'хәкимдәрҙән алынған сикләүҙәр',
+'revdelete-hid' => '$1 йәшер',
+'revdelete-unhid' => '$1 күрһәт',
+'revdelete-log-message' => '$2 {{PLURAL:$2|версия|версия}} өсөн $1',
+'logdelete-log-message' => '$2 {{PLURAL:$2|ваҡиға|ваҡиға}} өсөн $1',
+'revdelete-hide-current' => '$2, $1 ваҡытлы яҙманы йәшереүҙә хата.
+Уны йәшереп булмай.',
+'revdelete-show-no-access' => '$2, $1 ваҡытлы яҙманы асыуҙа хата: был яҙма «сикләнгән» тип билдәләнгән.
+Уға ирешеү хоҡуғығыҙ юҡ.',
+'revdelete-modify-no-access' => '$2, $1 ваҡытлы яҙманы үҙгәртеүҙә хата: был яҙма «сикләнгән» тип билдәләнгән.
+Уға ирешеү хоҡуғығыҙ юҡ.',
+'revdelete-modify-missing' => 'ID $1 яҙмаһын үҙгәртеүҙә хата: ул мәғлүмәттәр базаһында юҡ!',
+'revdelete-no-change' => "'''Иғтибар:''' $2 $1 ваҡытлы яҙыу, һоратылған күренеүсәнлек көйләүҙәренә эйә.",
+'revdelete-concurrent-change' => '$2, $1 ваҡытлы яҙманы үҙгәртеүҙә хата: һеҙ уны үҙгәртергә тырышҡан ваҡытта уның статусын башҡа берәү үҙгәрткән.
+Зинһар, яҙмаларҙы ҡарағыҙ.',
+'revdelete-only-restricted' => '$2, $1 ваҡытлы яҙманы йәшереүҙә хата: башҡа йәшереү көйләүҙәренең береһен һайламайынса яҙманы хәкимдәрҙән йәшерә алмайһығыҙ.',
+'revdelete-reason-dropdown' => '* Ғәҙәттәге юйыу сәбәптәре
+** Авторлыҡ хоҡуҡтарын боҙоу
+** Урынһыҙ шәхси мәғлүмәттәр',
+'revdelete-otherreason' => 'Башҡа/өҫтәмә сәбәп:',
+'revdelete-reasonotherlist' => 'Башҡа сәбәп',
+'revdelete-edit-reasonlist' => 'Сәбәптәр исемлеген мөхәррирләргә',
+'revdelete-offender' => 'Бит версияһы авторы:',
# Suppression log
'suppressionlog' => 'Йәшереү яҙмалары',
@@ -802,11 +919,12 @@ $3 белдергән сәбәп: ''$2''",
'revertmerge' => 'Бүлергә',
# Diffs
-'history-title' => '$1 битенең үҙгәртеү тарихы',
-'difference' => '(Версиялар араһында айырма)',
-'lineno' => '$1 юл:',
-'compareselectedversions' => 'Һайланған версияларҙы сағыштырыу',
-'editundo' => 'кире алыу',
+'history-title' => '$1 битенең үҙгәртеү тарихы',
+'difference' => '(Версиялар араһында айырма)',
+'lineno' => '$1 юл:',
+'compareselectedversions' => 'Һайланған версияларҙы сағыштырыу',
+'showhideselectedversions' => 'Һайланған версияларҙы күрһәтергә/йәшерергә',
+'editundo' => 'кире алыу',
# Search results
'searchresults' => 'Эҙләү һөҙөмтәләре',
@@ -818,15 +936,20 @@ $3 белдергән сәбәп: ''$2''",
'notitlematches' => 'Бит исемдәрендә тап килеүҙәр юҡ',
'textmatches' => 'Бит эстәлегендә тап килеүҙәр',
'notextmatches' => 'Тап килгән бит табылманы',
+'prevn' => 'алдағы {{PLURAL:$1|$1}}',
+'nextn' => 'киләһе {{PLURAL:$1|$1}}',
'prevn-title' => 'Һуңғы $1 һөҙөмтә',
'nextn-title' => 'Тәүге $1 һөҙөмтә',
'shown-title' => 'Бер биттә $1 һөҙөмтә күрһәт',
-'viewprevnext' => '($1) ($2) ($3) ҡарарға',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ҡарарға',
'searchmenu-legend' => 'Эҙләү көйләүҙәре',
'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
'searchhelp-url' => 'Help:Эстәлек',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Был префикслы биттәрҙе күрһәтергә]]',
+'searchprofile-articles' => 'Эстәлек биттәре',
+'searchprofile-project' => 'Ярҙам һәм проект биттәре',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Барыһы',
'searchprofile-advanced' => 'Киңәйтелгән',
'searchprofile-articles-tooltip' => '$1 эсендә эҙлә',
@@ -846,6 +969,7 @@ $3 белдергән сәбәп: ''$2''",
'search-mwsuggest-disabled' => 'кәңәшһеҙ',
'search-relatedarticle' => 'Ҡағылышлы',
'mwsuggest-disable' => 'AJAX-тәҡдимдәрен ябырға',
+'searcheverything-enable' => 'Бар исем арауыҡтарында эҙләргә',
'searchrelated' => 'ҡағылышлы',
'searchall' => 'барыһы',
'nonefound' => "'''Иҫкәрмә'''. Ғәҙәттә эҙләү бөтә исем арауыҡтарында үтәлмәй. Бөтә исем арауыҡтарында (фекер алышыу биттәре, ҡалыптар, һ.б.) эҙләү өсөн һүҙ башына ''all:'' өҫтәгеҙ йәки кәрәкле исем арауыҡтарын һайлағыҙ.",
@@ -854,67 +978,122 @@ $3 белдергән сәбәп: ''$2''",
'powersearch-ns' => 'Исем аралыҡтарында эҙләү:',
'powersearch-redir' => 'Йүнәлтеүҙәрҙе күрһәтергә',
'powersearch-field' => 'Эҙлә:',
+'powersearch-togglelabel' => 'Һайла:',
+'powersearch-toggleall' => 'Барыһы',
+'powersearch-togglenone' => 'Һис бере',
'search-external' => 'Тышҡы эҙләү',
'searchdisabled' => '{{SITENAME}} эҙләүе ябыҡ.
Хәҙергә эҙләүҙе Google менән үтәй алаһығыҙ.
Тик унда {{SITENAME}} өсөн индекслауҙың иҫке булыуы мөмкинлеген онотмағыҙ.',
+# Quickbar
+'qbsettings' => 'Тиҙ күсеү',
+'qbsettings-none' => 'Һис бере',
+'qbsettings-fixedleft' => 'Һулда нығытылған',
+'qbsettings-fixedright' => 'Уңда нығытылған',
+'qbsettings-floatingleft' => 'Һулда күсеүсе',
+'qbsettings-floatingright' => 'Уңда күсеүсе',
+
# Preferences page
-'preferences' => 'Көйләүҙәр',
-'mypreferences' => 'Көйләүҙәрем',
-'prefs-edits' => 'Төҙәтеүҙәр һаны:',
-'prefsnologin' => 'Танылмағанһығыҙ',
-'qbsettings' => 'Тиҙ күсеү',
-'qbsettings-none' => 'Һис бере',
-'qbsettings-fixedleft' => 'Һулда нығытылған',
-'qbsettings-fixedright' => 'Уңда нығытылған',
-'qbsettings-floatingleft' => 'Һулда күсеүсе',
-'qbsettings-floatingright' => 'Уңда күсеүсе',
-'changepassword' => 'Паролде үҙгәртергә',
-'skin-preview' => 'Алдан байҡау',
-'datedefault' => 'Ғәҙәттәге',
-'math_unknown_error' => 'билдәһеҙ хата',
-'prefs-personal' => 'Шәхси мәғлүмәттәр',
-'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
-'prefs-watchlist' => 'Күҙәтеү исемлеге',
-'prefs-watchlist-days' => 'Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:',
-'prefs-misc' => 'Башҡа көйләүҙәр',
-'prefs-resetpass' => 'Паролде үҙгәртергә',
-'saveprefs' => 'Һаҡларға',
-'resetprefs' => 'Һаҡланмаған үҙгәрештерҙе таҙартырға',
-'restoreprefs' => 'Ғәҙәттәге бар көйләүҙәргә ҡайтырға',
-'prefs-edit-boxsize' => 'Мөхәррирләү бите дәүмәле',
-'rows' => 'Юлдар:',
-'columns' => 'Бағаналар:',
-'searchresultshead' => 'Эҙләү',
-'resultsperpage' => 'Биттә табылған яҙыуҙар',
-'savedprefs' => 'Һеҙҙең көйләүҙәрегеҙ һаҡланды.',
-'timezonelegend' => 'Ваҡыт бүлкәте:',
-'localtime' => 'Урындағы ваҡыт:',
-'timezoneuseserverdefault' => 'Сервер көйләүҙәрен ҡулланырға:',
-'timezoneuseoffset' => 'Башҡа (шылыуҙы керетегеҙ)',
-'timezoneoffset' => 'Шылыу:',
-'servertime' => 'Сервер ваҡыты',
-'guesstimezone' => 'Браузерҙан алырға',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азия',
-'timezoneregion-atlantic' => 'Атлантик океан',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Һинд океаны',
-'timezoneregion-pacific' => 'Тымыҡ океан',
-'allowemail' => 'Башҡа ҡулланыусыларҙан электрон хат алыуҙы рөхсәт итергә',
-'prefs-searchoptions' => 'Эҙләү көйләүҙәре',
-'prefs-namespaces' => 'Исем арауыҡтары',
-'default' => 'ғәҙәттәге',
-'prefs-custom-css' => 'Үҙ CSS',
-'prefs-custom-js' => 'Үҙ JS',
+'preferences' => 'Көйләүҙәр',
+'mypreferences' => 'Көйләүҙәрем',
+'prefs-edits' => 'Төҙәтеүҙәр һаны:',
+'prefsnologin' => 'Танылмағанһығыҙ',
+'changepassword' => 'Паролде үҙгәртергә',
+'prefs-skin' => 'Күренеш',
+'skin-preview' => 'Алдан байҡау',
+'prefs-math' => 'Формулалар',
+'datedefault' => 'Ғәҙәттәге',
+'prefs-datetime' => 'Дата һәм ваҡыт',
+'prefs-personal' => 'Шәхси мәғлүмәттәр',
+'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
+'prefs-watchlist' => 'Күҙәтеү исемлеге',
+'prefs-watchlist-days' => 'Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:',
+'prefs-watchlist-days-max' => 'Иң күбендә 7 көн',
+'prefs-watchlist-edits-max' => 'Иң күбе: 1000',
+'prefs-misc' => 'Башҡа көйләүҙәр',
+'prefs-resetpass' => 'Паролде үҙгәртергә',
+'prefs-email' => 'Электрон почта көйләүҙәре',
+'prefs-rendering' => 'Күренеш',
+'saveprefs' => 'Һаҡларға',
+'resetprefs' => 'Һаҡланмаған үҙгәрештерҙе таҙартырға',
+'restoreprefs' => 'Ғәҙәттәге бар көйләүҙәргә ҡайтырға',
+'prefs-editing' => 'Мөхәррирләү',
+'prefs-edit-boxsize' => 'Мөхәррирләү бите дәүмәле',
+'rows' => 'Юлдар:',
+'columns' => 'Бағаналар:',
+'searchresultshead' => 'Эҙләү',
+'resultsperpage' => 'Биттә табылған яҙыуҙар',
+'prefs-help-watchlist-token' => 'Юыл юлды серле асҡыс менән тултырыу, күҙәтеү исемлегегеҙ өсөн RSS-таҫма яһаясаҡ.
+Был юлдағы асҡысты белгән һәр кем, күҙәтеү исемлегегеҙҙе уҡый аласаҡ, шуның өсөн ышаныслы ҡиммәт һайлағыҙ.
+Осраҡлы рәүештә һайланған ҡиммәтте лә ҡуллана алаһығыҙ: $1',
+'savedprefs' => 'Һеҙҙең көйләүҙәрегеҙ һаҡланды.',
+'timezonelegend' => 'Ваҡыт бүлкәте:',
+'localtime' => 'Урындағы ваҡыт:',
+'timezoneuseserverdefault' => 'Сервер көйләүҙәрен ҡулланырға:',
+'timezoneuseoffset' => 'Башҡа (шылыуҙы керетегеҙ)',
+'timezoneoffset' => 'Шылыу:',
+'servertime' => 'Сервер ваҡыты',
+'guesstimezone' => 'Браузерҙан алырға',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантик океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Һинд океаны',
+'timezoneregion-pacific' => 'Тымыҡ океан',
+'allowemail' => 'Башҡа ҡулланыусыларҙан электрон хат алыуҙы рөхсәт итергә',
+'prefs-searchoptions' => 'Эҙләү көйләүҙәре',
+'prefs-namespaces' => 'Исем арауыҡтары',
+'defaultns' => 'Юғиһә киләһе исем арауыҡтарында эҙләргә:',
+'default' => 'ғәҙәттәге',
+'prefs-files' => 'Файлдар',
+'prefs-custom-css' => 'Үҙ CSS',
+'prefs-custom-js' => 'Үҙ JS',
+'prefs-reset-intro' => 'Был битте, көйләүҙәрегеҙҙе ғәҙәттәге көйләүҙәргә ташлатыу өсөн ҡулланып була.
+Раҫлағандан һуң ғәмәлде кире ҡайтарып булмаясаҡ.',
+'prefs-emailconfirm-label' => 'Электрон почтаны раҫлау:',
+'prefs-textboxsize' => 'Мөхәррирләү тәҙрәһе дәүмәле',
+'youremail' => 'Электрон почта *',
+'username' => 'Ҡулланыусы исеме:',
+'uid' => 'Ҡатнашыусының идентификаторы:',
+'prefs-registration' => 'Теркәлеү ваҡыты:',
+'yourrealname' => 'Һеҙҙең ысын исемегеҙ (*)',
+'yourlanguage' => 'Тышҡы күренештә ҡулланылған тел:',
+'yourvariant' => 'Тел төрө',
+'yournick' => 'Һеҙҙең уйҙырма исемегеҙ/ҡушаматығыҙ (имза өсөн):',
+'badsig' => 'Хаталы имза. HTML-тегдарҙың дөрөҫлөгөн тикшерегеҙ.',
+'badsiglength' => 'Бигерәк оҙон имза. Имза оҙонлоғо $1 {{PLURAL:$1|символдан}} артыҡ булмаҫҡа тейеш.',
+'yourgender' => 'Зат:',
+'gender-unknown' => 'күрһәтелмәгән',
+'gender-male' => 'Ир-егет',
+'gender-female' => 'Ҡатын-ҡыҙ',
+'prefs-help-gender' => 'Теләк буйынса: ҡатнашыусының затына бәйле ҡайһы бер программа хәбәрҙәрендә ҡулланыла.
+Был дөйөм мәғлүмәт буласаҡ.',
+'email' => 'Электрон почта',
+'prefs-help-realname' => 'Ысын исемегеҙ (теләк буйынса).
+Әгәр уны күрһәтһәгеҙ, битте кемдең төҙәткәнен күрһәткәндә ҡулланыласаҡ.',
+'prefs-help-email' => 'Электрон почта (теләк буйынса). Күрһәтелгән булһа, ғәмәлдә булған паролегеҙҙе онотҡан осраҡта адресығыҙға яңы пароль ебәреләсәк.
+Шулай уҡ башҡа ҡатнашыусылар менән үҙ битегеҙ аша, электрон почтағыҙҙың адресын күрһәтмәйенсә, тура бәйләнешкә инергә мөмкинселек бирә.',
+'prefs-help-email-required' => 'Электрон почта адресы кәрәк.',
+'prefs-info' => 'Төп мәғлүмәттәр',
+'prefs-i18n' => 'Интернационалләштереү',
+'prefs-signature' => 'Имза',
+'prefs-dateformat' => 'Дата форматы',
+'prefs-timeoffset' => 'Ваҡыт күсереү:',
+'prefs-advancedediting' => 'Киңәйтелгән көйләүҙәр',
+'prefs-advancedrc' => 'Киңәйтелгән көйләүҙәр',
+'prefs-advancedrendering' => 'Киңәйтелгән көйләүҙәр',
+'prefs-advancedsearchoptions' => 'Киңәйтелгән көйләүҙәр',
+'prefs-advancedwatchlist' => 'Киңәйтелгән көйләүҙәр',
+'prefs-display' => 'Күренеш көйләүҙәре',
+'prefs-diffs' => 'Айырмалар',
# User rights
-'userrights' => 'Ҡулланыусы хоҡуҡтарын идаралау', # Not used as normal message but as header for the special page itself
+'userrights' => 'Ҡулланыусы хоҡуҡтарын идаралау',
'userrights-lookup-user' => 'Ҡулланыусы төркөмдәрен идаралау',
'userrights-user-editname' => 'Ҡулланыусы исемен керетерегеҙ:',
'editusergroup' => 'Ҡулланыусы төркөмдәрен идараларға',
@@ -1000,34 +1179,46 @@ $3 белдергән сәбәп: ''$2''",
'action-siteadmin' => 'Мәғлүмәттәр базаһын асыу һәм ябыу',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
-'recentchanges' => 'Һуңғы үҙгәртеүҙәр',
-'recentchanges-legend' => 'Һуңғы үҙгәртеүҙәр көйләүҙәре',
-'recentchangestext' => '{{grammar:genitive|{{SITENAME}}}}. биттәрендә индерелгән һуңғы үҙгәртеүҙәр исемлеге',
-'recentchanges-feed-description' => 'Был таҫмалағы һуңғы үҙгәртеүҙәрҙе күҙәтеп барырға',
-'rcnote' => 'Аҫта $4 $5 тиклем эшләнгән, һуңғы {{PLURAL:$2|1|$2}} көн эсендәге һуңғы {{PLURAL:$1|1|$1}} үҙгәртеү күрһәтелгән.',
-'rclistfrom' => '$1 башлап яңы үҙгәртеүҙәрҙе күрһәт.',
-'rcshowhideminor' => 'бәләкәй төҙәтеүҙәрҙе $1',
-'rcshowhidebots' => 'боттарҙы $1',
-'rcshowhideliu' => 'танылған ҡулланыусыларҙы $1',
-'rcshowhideanons' => 'танылмаған ҡулланыусыларҙы $1',
-'rcshowhidepatr' => '$1 — ҡаралған төҙәтеүҙәр',
-'rcshowhidemine' => 'минең үҙгәртеүҙәремде $1',
-'rclinks' => 'Һуңғы $2 көн эсендәге һуңғы $1 үҙгәртеүҙе күрһәтергә<br />$3',
-'diff' => 'айыр.',
-'hist' => 'тарих',
-'hide' => 'йәшер',
-'show' => 'күрһәт',
-'minoreditletter' => 'ә',
-'newpageletter' => 'Я',
-'boteditletter' => 'б',
-'rc_categories_any' => 'Һәр',
-'newsectionsummary' => '/* $1 */ яңы бүлек',
-'rc-enhanced-expand' => 'Ваҡлыҡтарҙы күрһәтергә (JavaScript кәрәкле)',
-'rc-enhanced-hide' => 'Ваҡлыҡтарҙы йәшерергә',
+'nchanges' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'recentchanges' => 'Һуңғы үҙгәртеүҙәр',
+'recentchanges-legend' => 'Һуңғы үҙгәртеүҙәр көйләүҙәре',
+'recentchangestext' => '{{grammar:genitive|{{SITENAME}}}}. биттәрендә индерелгән һуңғы үҙгәртеүҙәр исемлеге',
+'recentchanges-feed-description' => 'Был таҫмалағы һуңғы үҙгәртеүҙәрҙе күҙәтеп барырға',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 — яңы бит',
+'recentchanges-label-newpage' => 'Был үҙгәртеү яңы бит яһаны',
+'recentchanges-legend-minor' => '$1 — әҙ үҙгәреш',
+'recentchanges-label-minor' => 'Был әҙ үҙгәреш',
+'recentchanges-legend-bot' => '$1 — бот төҙәтеүе',
+'recentchanges-label-bot' => 'Был төҙәтеү бот тарафынан башҡарылды',
+'recentchanges-legend-unpatrolled' => '$1 — ҡаралмаған төҙәтеү',
+'recentchanges-label-unpatrolled' => 'Был төҙәтеү ҡаралмаған әле',
+'rcnote' => 'Аҫта $4 $5 тиклем эшләнгән, һуңғы {{PLURAL:$2|1|$2}} көн эсендәге һуңғы {{PLURAL:$1|1|$1}} үҙгәртеү күрһәтелгән.',
+'rcnotefrom' => "Түбәндә '''$2''' башлап ('''$1''' тиклем) үҙгәртеүҙәр күрһәтелгән.",
+'rclistfrom' => '$1 башлап яңы үҙгәртеүҙәрҙе күрһәт.',
+'rcshowhideminor' => 'бәләкәй төҙәтеүҙәрҙе $1',
+'rcshowhidebots' => 'боттарҙы $1',
+'rcshowhideliu' => 'танылған ҡулланыусыларҙы $1',
+'rcshowhideanons' => 'танылмаған ҡулланыусыларҙы $1',
+'rcshowhidepatr' => '$1 — ҡаралған төҙәтеүҙәр',
+'rcshowhidemine' => 'минең үҙгәртеүҙәремде $1',
+'rclinks' => 'Һуңғы $2 көн эсендәге һуңғы $1 үҙгәртеүҙе күрһәтергә<br />$3',
+'diff' => 'айыр.',
+'hist' => 'тарих',
+'hide' => 'йәшер',
+'show' => 'күрһәт',
+'minoreditletter' => 'ә',
+'newpageletter' => 'Я',
+'boteditletter' => 'б',
+'rc_categories_any' => 'Һәр',
+'newsectionsummary' => '/* $1 */ яңы бүлек',
+'rc-enhanced-expand' => 'Ваҡлыҡтарҙы күрһәтергә (JavaScript кәрәкле)',
+'rc-enhanced-hide' => 'Ваҡлыҡтарҙы йәшерергә',
# Recent changes linked
'recentchangeslinked' => 'Бәйле үҙгәртеүҙәр',
+'recentchangeslinked-feed' => 'Бәйле үҙгәртеүҙәр',
+'recentchangeslinked-toolbox' => 'Бәйле үҙгәртеүҙәр',
'recentchangeslinked-title' => '"$1" битенә бәйле үҙгәртеүҙәр',
'recentchangeslinked-summary' => "Был күрһәтелгән бит һылтанма яһаған (йәки күрһәтелгән категорияға кергән) һуңғы үҙгәртеүҙәр исемлеге.
[[Special:Watchlist|Күҙәтеү исемлегегеҙгә]] керә торған биттәр '''ҡалын''' итеп күрһәтелгән.",
@@ -1069,16 +1260,22 @@ $3 белдергән сәбәп: ''$2''",
'uploadwarning' => 'Киҫәтеү',
'savefile' => 'Файлды яҙҙырып ҡуйырға',
'uploadedimage' => '«[[$1]]» тейәлгән',
+'upload-source' => 'Сығанаҡ файл',
'sourcefilename' => 'Файлдың сығанаҡ исеме:',
+'sourceurl' => 'Сығанаҡ URL:',
'destfilename' => 'Файлдың яңы исеме:',
'upload-maxfilesize' => 'Файлдың максимум күләме: $1',
+'upload-description' => 'Файл тасуирламаһы',
+'upload-options' => 'Тейәү көйләүҙәре',
'watchthisupload' => 'Файлды күҙәтергә',
-'upload-file-error' => 'Эске хата',
-'upload-misc-error' => 'Файл күсергәндә билдәһеҙ хата',
+'upload-file-error' => 'Эске хата',
+'upload-misc-error' => 'Файл күсергәндә билдәһеҙ хата',
+'upload-unknown-size' => 'Билдәһеҙ дәүмәл',
-'license' => 'Лицензиялау:',
-'nolicense' => 'Бер нимә лә һайланмаған',
+'license' => 'Лицензиялау:',
+'license-header' => 'Лицензиялау',
+'nolicense' => 'Бер нимә лә һайланмаған',
# Special:ListFiles
'listfiles_search_for' => 'Файл исеме буйынса эҙләү:',
@@ -1092,6 +1289,7 @@ $3 белдергән сәбәп: ''$2''",
'listfiles_count' => 'Версиялар',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файл тарихы',
'filehist-help' => 'Файлдың ниндәй хәлдә булғанын ҡарар өсөн Көн/Сәғәткә баҫығыҙ',
'filehist-deleteall' => 'барыһын да юйырға',
@@ -1100,14 +1298,16 @@ $3 белдергән сәбәп: ''$2''",
'filehist-current' => 'хәҙ.',
'filehist-datetime' => 'Көн/ваҡыт',
'filehist-thumb' => 'Бәләкәй рәсем',
+'filehist-thumbtext' => '$1 көнөндәге версияның бәләкәй хәле',
'filehist-nothumb' => 'Бәләкәй рәсем юҡ',
'filehist-user' => 'Ҡулланыусы',
'filehist-dimensions' => 'Дәүмәл',
'filehist-filesize' => 'Файл күләме',
'filehist-comment' => 'Иҫкәрмә',
+'filehist-missing' => 'Файл юҡ',
'imagelinks' => 'Файлға һылтанмалар',
'linkstoimage' => 'Был файлға {{PLURAL:$1|бит|$1 бит}} һылтана:',
-'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.',
'uploadnewversion-linktext' => 'Был файлдың яңы версияһын тейәргә',
# File reversion
@@ -1149,6 +1349,7 @@ $3 белдергән сәбәп: ''$2''",
'statistics-header-edits' => 'Мөхәррирләү статистикаһы',
'statistics-header-views' => 'Ҡарау статистикаһы',
'statistics-header-users' => 'Ҡулланыусы статистикаһы',
+'statistics-header-hooks' => 'Башҡа статистика',
'statistics-articles' => 'Мәҡәләләр',
'statistics-pages' => 'Биттәр',
'statistics-files' => 'Рәсем йәки тауыш эстәлекле күсереп яҙылған файлдар',
@@ -1162,7 +1363,9 @@ $3 белдергән сәбәп: ''$2''",
'doubleredirects' => 'Икеле йүнәлтеүҙәр',
-'brokenredirects' => 'Өҙөлгән юнәлтеүҙәр',
+'brokenredirects' => 'Өҙөлгән юнәлтеүҙәр',
+'brokenredirects-edit' => 'төҙәтеү',
+'brokenredirects-delete' => 'юйырға',
'withoutinterwiki' => 'Телдәр араһы һылтанмаһы булмаған биттәр',
'withoutinterwiki-submit' => 'Күрһәтергә',
@@ -1246,6 +1449,9 @@ $3 белдергән сәбәп: ''$2''",
'listusers-submit' => 'Күрһәтергә',
'listusers-noresult' => 'Ҡатнашыусылыр табылманы',
+# Special:ActiveUsers
+'activeusers' => 'Әүҙем ҡатнашыусылыр исемлеге',
+
# Special:Log/newusers
'newuserlogpage' => 'Яңы ҡулланыусы яҙмалары',
'newuserlog-create-entry' => 'Яңы ҡулланыусы',
@@ -1290,6 +1496,29 @@ $3 белдергән сәбәп: ''$2''",
'enotif_newpagetext' => 'Был яңы бит.',
'changed' => 'үҙгәртелгән',
'created' => 'булдырылды',
+'enotif_body' => 'Хөрмәтле $WATCHINGUSERNAME,
+
+«{{SITENAME}}» проектының $PAGETITLE бите $PAGEEDITDATE көнө $PAGEEDITOR тарафынан $CHANGEDORCREATED. Биттең ағымдағы версияһын $PAGETITLE_URL адресынан ҡарай алаһығыҙ.
+
+$NEWPAGE
+
+Мөхәррирләүҙең ҡыҫҡаса аңлатмаһы: $PAGESUMMARY $PAGEMINOREDIT
+
+Үҙгәртеүсе менән бәйләнеш өсөн:
+эл. почта: $PAGEEDITOR_EMAIL
+вики: $PAGEEDITOR_WIKI
+
+Әгәр һеҙ был битте ҡарамаһағыҙ, бынан һуң буласаҡ үҙгәртеүҙәр тураһында белдереү алмаясаҡһығыҙ. Һеҙ шулай уҡ күҙәтеү исемлегегеҙҙәге бар биттәр өсөн белдереү көйләүен һүндерә алаһығыҙ.
+
+ Белдереү системаһы {{grammar:genitive|{{SITENAME}}}}
+
+--
+
+Күҙәтеү исемлеге көйләүҙәрен үҙгәртергә:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Кире бәйләнеш һәм ярҙам:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Битте юйырға',
@@ -1337,7 +1566,7 @@ $3 белдергән сәбәп: ''$2''",
'protect-cantedit' => 'Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алмайһығыҙ, сөнки уны үҙгәртеү хоҡуғығыҙ юҡ.',
'protect-othertime' => 'Башҡа ваҡыт:',
'protect-othertime-op' => 'башҡа ваҡыт',
-'protect-expiry-options' => '1 сәғәт:1 hour,1 көн:1 day,1 аҙна:1 week,2 аҙна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,сикләүһеҙ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 сәғәт:1 hour,1 көн:1 day,1 аҙна:1 week,2 аҙна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,сикләүһеҙ:infinite',
'restriction-type' => 'Хоҡуҡ:',
'restriction-level' => 'Ирешеү дәрәжәһе:',
'minimum-size' => 'Минимум күләм',
@@ -1361,6 +1590,7 @@ $3 белдергән сәбәп: ''$2''",
'undelete-fieldset-title' => 'Версияларҙы тергеҙергә',
'undeletebtn' => 'Тергеҙергә',
'undeletelink' => 'ҡарарға/тергеҙергә',
+'undeleteviewlink' => 'ҡарарға',
'undeletereset' => 'Юҡ итергә',
'undeleteinvert' => 'Һайланғандарҙы әйләндерергә',
'undeletecomment' => 'Иҫкәрмә',
@@ -1385,7 +1615,9 @@ $3 белдергән сәбәп: ''$2''",
'sp-contributions-newbies' => 'Яңы иҫәп яҙыуҙары кереткән өлөштө генә күрһәтергә',
'sp-contributions-blocklog' => 'блоклау яҙмалары',
+'sp-contributions-deleted' => 'ҡулланыусының юйылған өлөшө',
'sp-contributions-logs' => 'Журналдар',
+'sp-contributions-talk' => ' Фекер алышыу',
'sp-contributions-search' => 'Өлөштәрҙе эҙләү',
'sp-contributions-username' => 'Ҡулланыусының IP-адресы йәки исеме:',
'sp-contributions-submit' => 'Эҙлә',
@@ -1408,6 +1640,7 @@ $3 белдергән сәбәп: ''$2''",
# Block/unblock
'blockip' => 'Ҡатнашыусыны ябыу',
+'blockip-title' => 'Ҡатнашыусыны ябыу',
'blockip-legend' => 'Ҡатнашыусыны ябыу',
'ipaddress' => 'IP-адрес:',
'ipadressorusername' => 'Ҡатнашыусының IP-адресы йәки исеме:',
@@ -1417,7 +1650,7 @@ $3 белдергән сәбәп: ''$2''",
'ipbcreateaccount' => 'Яңы иҫәп яҙыуҙарын булдырыуҙы тыйыу',
'ipbsubmit' => 'Был ҡатнашыусыны тыйырға',
'ipbother' => 'Башҡа ваҡыт:',
-'ipboptions' => '2 сәғәт:2 hours,1 көн:1 day,3 көн:3 days,1 аҙна:1 week,2 аҙна:2 weeks,1 ай:1 month,3ай:3 months,6 ай:6 months,1 йыл:1 year,сикләнмәгән:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сәғәт:2 hours,1 көн:1 day,3 көн:3 days,1 аҙна:1 week,2 аҙна:2 weeks,1 ай:1 month,3ай:3 months,6 ай:6 months,1 йыл:1 year,сикләнмәгән:infinite',
'ipbotheroption' => 'башҡа',
'ipblocklist' => 'Тыйылған IP-адрестар һәм ҡатнашыусылыр',
'ipblocklist-submit' => 'Эҙләү',
@@ -1460,7 +1693,7 @@ $3 белдергән сәбәп: ''$2''",
'move-watch' => 'Был битте күҙәтеү исемлегенә өҫтәргә',
'movepagebtn' => 'Биттең исемен үҙгәртергә',
'pagemovedsub' => 'Бит исеме үҙгәртелде',
-'movepage-moved' => "'''«$1» битенең яңы исеме: «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» битенең яңы исеме: «$2»'''",
'articleexists' => 'Бындай исемле бит бар йәки һеҙ белдергән исем рөхсәт ителмәй.
Зинһар, башҡа исем һайлағыҙ.',
'talkexists' => "'''Бит исеме үҙгәртелде, ләкин фекер алышыу битенең исемен үҙгәртеп булмай, сөнки ундай исемле бит бар инде. Зинһар, уларҙы үҙегеҙ берләштерегеҙ.'''",
@@ -1478,7 +1711,10 @@ $3 белдергән сәбәп: ''$2''",
'export-addns' => 'Өҫтәргә',
# Namespace 8 related
-'allmessagesname' => 'Хәбәр',
+'allmessagesname' => 'Хәбәр',
+'allmessages-filter-legend' => 'Иләк',
+'allmessages-filter-all' => 'Бөтә',
+'allmessages-filter-submit' => 'Күсергә',
# Thumbnails
'thumbnail-more' => 'Ҙурайтырға',
@@ -1507,6 +1743,7 @@ $3 белдергән сәбәп: ''$2''",
'tooltip-search-fulltext' => 'Ошондай эстәлекле биттәрҙе табырға',
'tooltip-p-logo' => 'Баш биткә күсергә',
'tooltip-n-mainpage' => 'Баш биткә күсергә',
+'tooltip-n-mainpage-description' => 'Баш биткә күсеү',
'tooltip-n-portal' => 'Проект буйынса һеҙ нимә эшләй алаһығыҙ һәм ҡайҙа нимә барлығы тураһында белешмә',
'tooltip-n-currentevents' => 'Ағымдағы ваҡиғалар исемлеге',
'tooltip-n-recentchanges' => 'Һуңғы үҙгәртеүҙәр исемлеге',
@@ -1544,6 +1781,9 @@ $3 белдергән сәбәп: ''$2''",
'others' => 'башҡалар',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|ҡатнашыусы|ҡатнашыусылары}} $1',
+# Math errors
+'math_unknown_error' => 'билдәһеҙ хата',
+
# Browsing diffs
'previousdiff' => '← Алдағы төҙәтеү',
'nextdiff' => 'Киләһе үҙгәртеү →',
@@ -1578,7 +1818,7 @@ $3 белдергән сәбәп: ''$2''",
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Киңлек',
@@ -1609,6 +1849,7 @@ $3 белдергән сәбәп: ''$2''",
'watchlistall2' => 'бөтә',
'namespacesall' => 'бөтә',
'monthsall' => 'бөтә',
+'limitall' => 'бөтә',
# Delete conflict
'recreate' => 'Яңынан булдырыу',
@@ -1670,4 +1911,7 @@ $3 белдергән сәбәп: ''$2''",
'tags-tag' => 'Билдә исеме',
'tags-edit' => 'үҙгәртергә',
+# HTML forms
+'htmlform-selectorother-other' => 'Башҡа',
+
);
diff --git a/languages/messages/MessagesBar.php b/languages/messages/MessagesBar.php
index 071ffd65..3697e08b 100644
--- a/languages/messages/MessagesBar.php
+++ b/languages/messages/MessagesBar.php
@@ -107,31 +107,44 @@ $messages = array(
'category-media-header' => 'Medien in da Kategorie „$1“',
'category-empty' => "''De Kategorie enthåit momentan kane Seitn und kane Medien ned.''",
'hidden-categories' => '{{PLURAL:$1|Vasteckte Kategorie|Vasteckte Kategorien}}',
-'hidden-category-category' => 'Vasteckte Kategorie', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Vasteckte Kategorie',
'category-subcat-count' => "{{PLURAL:$2|De Kategorie enthåit netta de foignde Untakategorie:|{{PLURAL:$1|D'foignde Untakategorie is ane vu insgsamt $2 Untakategorien in dea Kategorie:|Vu insgsamt $2 Untakategorien in dea Kategorie wean $1 ãzoagt:}}}}",
'category-subcat-count-limited' => 'In de Kategorie {{PLURAL:$1|is de foignde Untakategorie|san de foigndn Untakategorien}} eisoatiad:',
'category-article-count-limited' => 'De {{PLURAL:$1|foignde Seitn is|foigndn $1 Seitn san}} in dea Kategorie enthåitn:',
'category-file-count-limited' => "{{PLURAL:$1|D'foignde Datei is|De foigndn $1 Datein san}} in de Kategorie eisoatiad:",
'listingcontinuesabbrev' => '(Foatsetzung)',
+'index-category' => 'Indiziade Seitn',
+'noindex-category' => 'Ned indiziade Seitn',
'mainpagetext' => "'''MediaWiki is eafoigreich installiad woan.'''",
'mainpagedocfooter' => 'A Huif zua Benutzung und Konfiguration vo da Wiki-Software findst im [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
-'about' => 'Üba',
-'article' => 'Artikl',
-'newwindow' => '(wiad in am neichn Fensta aufgmåcht)',
-'cancel' => 'Åbbrecha',
+'about' => 'Üba',
+'article' => 'Artikl',
+'newwindow' => '(wiad in am neichn Fensta aufgmåcht)',
+'cancel' => 'Åbbrecha',
+'moredotdotdot' => 'Mehra …',
+'mypage' => 'Eigne Seitn',
+'mytalk' => 'Eigne Diskussion',
+'anontalk' => 'Diskussionsseitn vo dera IP',
+'navigation' => 'Navigazion',
+'and' => '&#32;und',
+
+# Cologne Blue skin
'qbfind' => 'Findn',
'qbedit' => 'werkln',
'qbmyoptions' => 'Meine Seitn',
'qbspecialpages' => 'Spezialseitn',
-'moredotdotdot' => 'Mehra …',
-'mypage' => 'Eigne Seitn',
-'mytalk' => 'Eigne Diskussion',
-'anontalk' => 'Diskussionsseitn vo dera IP',
-'navigation' => 'Navigazion',
-'and' => '&#32;und',
+'faq' => 'FAQ',
+
+# Vector skin
+'vector-action-delete' => 'Löschn',
+'vector-action-move' => 'Vaschiam',
+'vector-action-protect' => 'Schützn',
+'vector-action-undelete' => 'Wiedaheastöin',
+'vector-action-unprotect' => 'Freigem',
+'namespaces' => 'Nãmensräim',
'errorpagetitle' => 'Fehla',
'returnto' => 'Zruck zur Seitn $1.',
@@ -172,7 +185,7 @@ $messages = array(
'otherlanguages' => 'Åndane Språchn',
'redirectedfrom' => '(vu $1 weida gschickt)',
'redirectpagesub' => 'Weidaleitung',
-'lastmodifiedat' => 'De Seitn is zletzt am $1 um $2 gändert worn.', # $1 date, $2 time
+'lastmodifiedat' => 'De Seitn is zletzt am $1 um $2 gändert worn.',
'jumpto' => 'Wechseln zua:',
'jumptonavigation' => 'Navigazion',
'jumptosearch' => 'Suach',
@@ -186,7 +199,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Bearbeitungshuifn',
'edithelppage' => 'Help:Bearbeitungshuifn',
-'faq' => 'FAQ',
'helppage' => 'Help:Inhåitsvazeichnis',
'mainpage' => 'Hauptsaitn',
'mainpage-description' => 'Hauptsaitn',
@@ -230,7 +242,6 @@ $messages = array(
# General errors
'error' => 'Fehla',
'databaseerror' => 'Fehla in da Datenbank',
-'noconnect' => 'Konn koa Verbindung zur Datenbank auf $1 herstelln',
'missingarticle-rev' => '(Veasionsnumma: $1)',
'missingarticle-diff' => '(Untaschiad zwischn Veasionen: $1, $2)',
'internalerror' => 'Inteana Fehla',
@@ -281,9 +292,6 @@ Vagiss bittschee ned, deine [[Special:Preferences|{{SITENAME}}-Eistellungen]] ã
'gotaccount' => "Du hast hast scho a Benutzerkonto? '''$1'''.",
'gotaccountlink' => 'Omeidn',
'userexists' => "Der Benutzernam is schon vergem. Bittschee nehman S' an andern.",
-'username' => 'Benutzernam:',
-'yourrealname' => 'Echter Nam:',
-'yourlanguage' => 'Sprache vo da Benutzeroberfläche:',
'loginerror' => 'Fehla bei da Oomeidung',
'nocookieslogin' => "{{SITENAME}} nimmt Cookies zum Eiloggen vo de Benutzer her. Sie ham Cookies deaktiviert, bittschee aktiviern Sie de und versuchan's nomoi.",
'loginsuccesstitle' => 'Omeidung is erfolgreich gwen',
@@ -338,7 +346,6 @@ Vagiss bittschee ned, deine [[Special:Preferences|{{SITENAME}}-Eistellungen]] ã
'blockedtitle' => 'Benutzer is gesperrt',
'whitelistedittitle' => 'Zum Bearbatn miaßn Sie si oomeidn',
'whitelistedittext' => 'Sie miaßn si $1, um Seiten bearbatn zum kinna.',
-'confirmedittitle' => 'Zum Bearbatn is a E-Mail-Bestätigung erforderlich.',
'loginreqtitle' => 'Es braucht a Oomeidung',
'loginreqlink' => 'oomeidn',
'loginreqpagetext' => 'Sie miaßn si $1, um Seitn lesen zum kinna.',
@@ -374,8 +381,8 @@ Wenn S' speichern, wern alle neiern Versionen übaschriem.</strong>",
Überlegen S' bitte, ob a Aufteilung vo da Seitn in kloanere Abschnitte möglich is.</strong>",
'semiprotectedpagewarning' => "'''Hoibsperrung:''' De Seitn is so gsperrt worn, daß nur registrierte Benutzer de ändern kinnan.",
'titleprotectedwarning' => "'''ACHTUNG: Die Seitenerstellung wurde gesperrt. Nur bestimmte Benutzergruppen können die Seite erstellen.'''",
-'templatesused' => 'De foigendn Vorlagn wern von dera Seitn vawendt:',
-'templatesusedpreview' => 'De foigendn Vorlagn wern von dera Seitnvorschau vawendt:',
+'templatesused' => "{{PLURAL:$1|D'foignde Voalåg wiad|D'foigndn Voalång wean}} auf dea Seitn vawendt:",
+'templatesusedpreview' => "{{PLURAL:$1|D'foignde Voalåg wiad|De foigndn Voalång wean}} in dea Seitn-Voaschau vawendt:",
'templatesusedsection' => 'De foigendn Vorlagn wern von dem Abschnitt vawendt:',
'template-protected' => '(schreibgschützt)',
'template-semiprotected' => '(schreibgschützt fia ned ãngmöidte und neiche Benutza)',
@@ -383,7 +390,7 @@ Wenn S' speichern, wern alle neiern Versionen übaschriem.</strong>",
'nocreatetitle' => 'De Erstellung vo neie Seitn is eingeschränkt.',
'permissionserrorstext-withaction' => "Du håst de Berechtigung ned, dass'd $2.
{{PLURAL:$1|Grund|Gründ}}:",
-'recreate-deleted-warn' => "'''Obacht: Du ladst aa Datei hoach, de scho friara glöscht worn is.'''
+'recreate-moveddeleted-warn' => "'''Obacht: Du ladst aa Datei hoach, de scho friara glöscht worn is.'''
Bittschee prüf gnau, ob as erneite Hoachladn de Richtlinien entspricht.
Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorherige Löschung:",
@@ -392,7 +399,9 @@ Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorheri
# History pages
'viewpagelogs' => 'Logbiacha fia de Seitn oozoang',
-'currentrev-asof' => 'Aktuelle Veasion vum $1',
+'currentrev-asof' => 'Aktuelle Veasion vum $2, $3.',
+'revisionasof' => 'Veasion vum $2, $3.',
+'revision-info' => 'Veasion vum $2 um $5 am $4.',
'previousrevision' => '← Nextöidare Veasion',
'nextrevision' => 'Nextjingare Veasion →',
'currentrevisionlink' => 'Aktuelle Veasion',
@@ -401,7 +410,6 @@ Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorheri
'histlegend' => 'Zum Ozoagn vo Änderungen einfach de zwoa Versionen auswähln und auf de Schaltfläche „{{int:compareselectedversions}}“ klicken.<br />
* (Aktuell) = Untaschied zur aktuellen Version, (Vorherige) = Untaschied zur vorherigen Version
* Uhrzeit/Datum = Version zu dera Zeit, Benutzername/IP-Adresse vom Bearbeiter, K = Kloane Änderung',
-'deletedrev' => '[glöscht]',
'histfirst' => 'öidaste',
'histlast' => 'Neiste',
'historyempty' => '(laa)',
@@ -414,12 +422,12 @@ Vielleicht is sie gelöscht oda verschom worn.
# Revision deletion
'rev-deleted-text-permission' => '<div class="mw-warning plainlinks"> De Version is glöscht worn und is nimma öffentlich zum einseng.
-Nähere Angaben zum Löschvorgang sowia a Begründung findn si im [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} Lösch-Logbuch].</div>',
+Nähere Angaben zum Löschvorgang sowia a Begründung findn si im [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} Lösch-Logbuch].</div>',
'rev-deleted-text-view' => '<div class="mw-warning plainlinks">De Version is gelöscht worn und is nimma öffentlich einsehbar.
Als Administrator kennan Sie weiterhin einseng.
-Nähere Angaben zum Löschvorgang sowia a Begründung finden si im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuach].</div>',
+Nähere Angaben zum Löschvorgang sowia a Begründung finden si im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbuach].</div>',
'rev-deleted-no-diff' => '<div class="mw-warning plainlinks">Du kannst diesen Unterschied nicht betrachten, da eine der Versionen aus den öffentlichen Archiven entfernt wurde.
-Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].</div>',
+Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].</div>',
'rev-delundel' => 'zoang/vastecka',
'revdelete-nooldid-title' => 'Koa Version ogem',
'revdelete-text' => "'''Der Inhalt oder andere Bestandteile gelöschter Versionen sind nicht mehr öffentlich einsehbar, erscheinen jedoch weiterhin als Einträge in der Versionsgeschichte.'''
@@ -443,14 +451,11 @@ Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-
'searchresulttext' => "Fia weidare Infos üwa's Suacha schau auf'd [[{{MediaWiki:Helppage}}|Hüifeseitn]].",
'searchsubtitle' => 'Dei Suachãnfråg: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|ålle Seitn, de mid „$1“ ãnfãngan]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ålle Seitn, de wås nåch „$1“ valinkn]])',
'searchsubtitleinvalid' => 'Dei Suachãnfråg: „$1“.',
-'noexactmatch' => "'''Es gibt ka Seitn mi'm Titl „$1“.'''
-Wãnn'st di mid dem Thema auskennst, kãnnst [[:$1|de Seitn söiwa schreim]].",
-'noexactmatch-nocreate' => "'''A Seitn, de in Titl „$1“ håd, gibt's ned.'''",
'notitlematches' => 'Koane Üwareinstimmungen mid de Seitntitl',
'notextmatches' => 'Ka Üwareinstimmung mid dem Inhåit gfundn',
-'prevn' => "d'voahearing $1",
-'nextn' => 'de nextn $1',
-'viewprevnext' => 'Zoag ($1) ($2) ($3)',
+'prevn' => "d'voahearing {{PLURAL:$1|$1}}",
+'nextn' => 'de nextn {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Zoag ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 Woat|$2 Wöata}})',
'search-redirect' => '(Weidaleitung vu „$1“)',
'search-section' => '(Åbschnitt $1)',
@@ -460,7 +465,6 @@ Wãnn'st di mid dem Thema auskennst, kãnnst [[:$1|de Seitn söiwa schreim]].",
'search-interwiki-more' => '(mea)',
'search-mwsuggest-enabled' => 'mid Voaschläg',
'search-mwsuggest-disabled' => 'kane Voaschläg',
-'showingresultstotal' => "Es {{PLURAL:$4|foigt s'Suacheagebnis '''$1''' vu '''$3:'''|foing de Suacheagebnisse '''$1–$2''' vu '''$3:'''}}",
'powersearch' => 'Suach',
'powersearch-legend' => 'Eaweitate Suach',
'powersearch-ns' => 'Suach in Nãmensräume:',
@@ -468,14 +472,16 @@ Wãnn'st di mid dem Thema auskennst, kãnnst [[:$1|de Seitn söiwa schreim]].",
'powersearch-field' => 'Suach nåch:',
# Preferences page
-'preferences' => 'Eistellungen',
-'mypreferences' => 'Eistellunga',
-'changepassword' => 'Passwort ändan',
-'math_unknown_function' => 'Unbekannte Funktion',
-'textboxsize' => 'Bearbatn',
-'searchresultshead' => 'Suachn',
-'guesstimezone' => 'Vom Browser übanehma',
-'allowemail' => 'E-Mail-Empfang vo andere Benutzer möglich macha.',
+'preferences' => 'Eistellungen',
+'mypreferences' => 'Eistellunga',
+'changepassword' => 'Passwort ändan',
+'prefs-editing' => 'Bearbatn',
+'searchresultshead' => 'Suachn',
+'guesstimezone' => 'Vom Browser übanehma',
+'allowemail' => 'E-Mail-Empfang vo andere Benutzer möglich macha.',
+'username' => 'Benutzernam:',
+'yourrealname' => 'Echter Nam:',
+'yourlanguage' => 'Sprache vo da Benutzeroberfläche:',
# User rights
'userrights-groupsmember' => 'Mitglied vo:',
@@ -537,13 +543,14 @@ Wãnn'st di mid dem Thema auskennst, kãnnst [[:$1|de Seitn söiwa schreim]].",
# Recent changes linked
'recentchangeslinked' => 'Valinkts prüfn',
+'recentchangeslinked-feed' => 'Valinkts prüfn',
+'recentchangeslinked-toolbox' => 'Valinkts prüfn',
'recentchangeslinked-title' => 'Ändarungen auf Seitn, zu de vu da Seitn „$1“ valinkt is',
'recentchangeslinked-summary' => "De Spezialseitn zagt de letztn Änderungen bei de Seitn, zu de vu ana gwissn Seitn valinkt wiad (bzw. de wås in ana gwissn Kategorie eisoatiad han). Seitn vu deina [[Special:Watchlist|Beobåchtungslistn]] wean '''fett''' ãnzoagt.",
'recentchangeslinked-page' => 'Seitn:',
# Upload
'upload' => 'Aufelådn',
-'reupload' => 'Abbrecha',
'uploadnologin' => 'Net ogmeidt',
'uploadnologintext' => "Sie miassn [[Special:UserLogin|ogmeidt sei]], wenn S' Dateien hoachladn wolln.",
'uploadlog' => 'Datei-Logbuach',
@@ -571,6 +578,7 @@ Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorheri
'upload_source_file' => ' (a Datei auf deim Computa)',
# File description page
+'file-anchor-link' => 'Datei',
'filehist' => 'Dateiveasionen',
'filehist-help' => 'Klick auf an Zeitpunkt, damid de Veasion glånd wiad.',
'filehist-current' => 'aktuell',
@@ -589,9 +597,8 @@ A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weidare Links]] fia de Datei.',
'redirectstofile' => "{{PLURAL:$1|D'foignde Datei leitet|De foigndn $1 Datein leitn}} auf de Datei weida:",
'duplicatesoffile' => "{{PLURAL:$1|D'foignde Datei is a Duplikat|De foigndn $1 Datein han Duplikate}} vu dea Datei ([[Special:FileDuplicateSearch/$2|weidare Deteus]]):",
-'sharedupload' => 'De Datei stãmmt aus $1 und deaf bei ãndare Projekte vawendt wean.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'Es folgt der Inhalt der $1 aus dem gemeinsam benutzten Repositorium.',
-'noimage' => "A Datei mit dem Nam existiert net, Sie kinnan s' abe $1.",
+'sharedupload' => 'De Datei stãmmt aus $1 und deaf bei ãndare Projekte vawendt wean.',
+'sharedupload-desc-there' => "De Datei stãmmt aus $1 und deaf bei ãndera Projekte vawendt wean. Schau auf'd [$2 Dateibeschreibungsseitn] fia weidare Infoamazionen.",
'uploadnewversion-linktext' => 'A neie Version vo dera Datei hoachladn',
# File reversion
@@ -761,7 +768,6 @@ und dass Sie in Übaeinstimmung mit de [[{{MediaWiki:Policy-url}}|Richtlinien]]
'protectexpiry' => 'Sperrdaua:',
'protect_expiry_invalid' => "D'eigemne Daua is ungüitig.",
'protect_expiry_old' => "D'Sperrzeid liegt in da Vagãngnheid",
-'protect-unchain' => 'Vaschiab-Schutz ändan',
'protect-text' => "Då kãnnst nåchschau und ändan, wia d'Seitn „$1“ gschützt is.",
'protect-default' => 'Ålle Benutza',
'protect-fallback' => "D'„$1“-Berechtigung is notwendig.",
@@ -807,6 +813,7 @@ Da aktuelle Text vo da glöschtn Seitn is nur fia Administratoren zum seng.',
'sp-contributions-newbies' => 'Netta de Beiträg vu de neichn Benutza ãnzoang',
'sp-contributions-newbies-sub' => 'Fia Neiling',
'sp-contributions-blocklog' => 'Sperrlogbiache',
+'sp-contributions-talk' => 'bschprecha',
'sp-contributions-search' => 'Suach nach Benutzerbeiträge',
'sp-contributions-username' => 'IP-Adress oda Benutzanãm:',
'sp-contributions-submit' => 'Suacha',
@@ -829,7 +836,7 @@ Da aktuelle Text vo da glöschtn Seitn is nur fia Administratoren zum seng.',
# Block/unblock
'blockip' => 'IP-Adresse/Benutzer sperrn',
'blockip-legend' => 'IP-Adresse/Benutzer sperrn',
-'ipboptions' => '2 Stund:2 hours,1 Tåg:1 day,3 Tåg:3 days,1 Woch:1 week,2 Wochn:2 weeks,1 Monat:1 month,3 Monat:3 months,6 Monat:6 months,1 Joa:1 year,Lemslãng:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stund:2 hours,1 Tåg:1 day,3 Tåg:3 days,1 Woch:1 week,2 Wochn:2 weeks,1 Monat:1 month,3 Monat:3 months,6 Monat:6 months,1 Joa:1 year,Lemslãng:infinite',
'badipaddress' => 'De IP-Adress håt a falsch Format.',
'blockipsuccesssub' => 'De Sperre war erfoigreich',
'ipb-unblock-addr' => '„$1“ freigem',
@@ -891,7 +898,7 @@ Bittschee gib außadem druntn in '''neichn''' Nãm vu da Seitn ei und schreib ku
'move-watch' => 'De Seitn beobachten',
'movepagebtn' => 'Seitn vaschiam',
'pagemovedsub' => "s'Vaschiam håd highaud",
-'movepage-moved' => "'''D'Seitn „$1“ is nåch „$2“ vaschom woan.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''D'Seitn „$1“ is nåch „$2“ vaschom woan.'''",
'articleexists' => 'Unter dem Nam existiert bereits a Seitn.
Bitte nehmans an andern Nam.',
'talkexists' => "D'Seitn söiwa is eafoigreich vaschom woan, de dazuaghearade Diskussionsseitn åwa ned, weu's unta dea iahm neichn Nãm schãu a Seitn gibt. Bittschee kümmat di händisch um's Zsãmmfüahn.",
@@ -915,7 +922,6 @@ Bitte nehmans an andern Nam.',
'allmessagestext' => 'Des is a Listn vo de MediaWiki-Systemtexte.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''Special:Allmessages''' is im Moment net möglich, wei de Datenbank offline is.",
-'allmessagesmodified' => 'Nur geänderte zoagn',
# Thumbnails
'thumbnail-more' => 'vagreßan',
@@ -949,6 +955,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Suach nåch Seitn, de den Text enthåitn',
'tooltip-p-logo' => 'Hauptseitn',
'tooltip-n-mainpage' => "d'Hauptseitn ãnzoang",
+'tooltip-n-mainpage-description' => 'Zu da Hauptseitn geh',
'tooltip-n-portal' => "Üwa's Portal, wås'd måcha kãnnst, wo wås zum findn is",
'tooltip-n-currentevents' => 'Hintagrundinfoamazionen üwa aktuelle Ereignisse',
'tooltip-n-recentchanges' => 'Listn vu de letztn Ändarungen auf {{SITENAME}}',
@@ -981,10 +988,13 @@ Vorschau der Änderungen an dieser Seite. Bitte vor dem Speichern benutzen!",
'tooltip-rollback' => 'Setzt ålle Beiträg, de vum gleichn Benutza gmåcht woan han, mid am anzing Klick auf de Veasion zruck, de aktuöi gwen is, bevoa dea oane zum weakln ãngfãnga håd.',
# Attribution
-'lastmodifiedatby' => 'De Seitn is zletzt am $1 um $2 vo $3 gändert worn.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'De Seitn is zletzt am $1 um $2 vo $3 gändert worn.',
'othercontribs' => 'Basiert auf da Arbat vo $1',
'creditspage' => 'Seitninformationa',
+# Math errors
+'math_unknown_function' => 'Unbekannte Funktion',
+
# Patrolling
'markedaspatrollederrortext' => 'Sie miaßn a Seitnänderung auswähln.',
diff --git a/languages/messages/MessagesBat_smg.php b/languages/messages/MessagesBat_smg.php
index 4743f917..7cf68a27 100644
--- a/languages/messages/MessagesBat_smg.php
+++ b/languages/messages/MessagesBat_smg.php
@@ -164,15 +164,23 @@ $messages = array(
'category-media-header' => 'Abruozdielis kateguorėjuo „$1“',
'category-empty' => "''Šėta kateguorėjė nūnā netor nė vėina straipsnė a faila.''",
'hidden-categories' => '{{PLURAL:$1|Pakavuota kateguorėjė|Pakavuotas kateguorėjės}}',
-'hidden-category-category' => 'Pakavuotas kateguorėjės', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Pakavuotas kateguorėjės',
'category-subcat-count' => '{{PLURAL:$2|Tuo kateguorėjuo īr vėina subkateguorėjė.|{{PLURAL:$1|Ruodoma|Ruodomas|Ruodoma}} $1 {{PLURAL:$1|subkateguorėjė|subkateguorėjės|subkateguorėju}} (ėš vėsa īr $2 {{PLURAL:$2|subkateguorėjė|subkateguorėjės|subkateguorėju}}).}}',
'category-article-count' => '{{PLURAL:$2|Tuo kateguorėjuo īr vėins poslapis.|{{PLURAL:$1|Ruodoms|Ruodomė|Ruodoma}} $1 tuos kateguorėjės {{PLURAL:$1|poslapis|poslapē|poslapiu}} (ėš vėsa kateguorėjuo īr $2 {{PLURAL:$2|poslapis|poslapē|poslapiu}}).}}',
'listingcontinuesabbrev' => 'tes.',
-'about' => 'Aple',
-'article' => 'Straipsnis',
-'newwindow' => '(īr atverams naujam longė)',
-'cancel' => 'Nutrauktė',
+'about' => 'Aple',
+'article' => 'Straipsnis',
+'newwindow' => '(īr atverams naujam longė)',
+'cancel' => 'Nutrauktė',
+'moredotdotdot' => 'Daugiau...',
+'mypage' => 'Mona poslapis',
+'mytalk' => 'Mona aptarėms',
+'anontalk' => 'Šėta IP aptarėms',
+'navigation' => 'Naršīms',
+'and' => '&#32;ėr',
+
+# Cologne Blue skin
'qbfind' => 'Ėiškuotė',
'qbbrowse' => 'Naršītė',
'qbedit' => 'Taisītė',
@@ -180,15 +188,35 @@ $messages = array(
'qbpageinfo' => 'Konteksts',
'qbmyoptions' => 'Mona poslapē',
'qbspecialpages' => 'Specēlė̅jė poslapē',
-'moredotdotdot' => 'Daugiau...',
-'mypage' => 'Mona poslapis',
-'mytalk' => 'Mona aptarėms',
-'anontalk' => 'Šėta IP aptarėms',
-'navigation' => 'Naršīms',
-'and' => '&#32;ėr',
-
-# Metadata in edit box
-'metadata_help' => 'Metadoumenīs:',
+'faq' => 'DOK',
+'faqpage' => 'Project:DOK',
+
+# Vector skin
+'vector-action-addsection' => 'Pridietė tema',
+'vector-action-delete' => 'Trintė',
+'vector-action-move' => 'Parvadintė',
+'vector-action-protect' => 'Ožrakintė',
+'vector-action-undelete' => 'Atkortė',
+'vector-action-unprotect' => 'Atrakintė',
+'vector-namespace-category' => 'Kateguorėjė',
+'vector-namespace-help' => 'Pagelbas poslapis',
+'vector-namespace-image' => 'Fails',
+'vector-namespace-main' => 'Poslapis',
+'vector-namespace-media' => 'Abruozdielė poslapis',
+'vector-namespace-mediawiki' => 'Pranešims',
+'vector-namespace-project' => 'Pruojekta poslapis',
+'vector-namespace-special' => 'Specēlos poslapis',
+'vector-namespace-talk' => 'Aptarėms',
+'vector-namespace-template' => 'Šabluons',
+'vector-namespace-user' => 'Nauduotuojė poslapis',
+'vector-view-create' => 'Sokortė',
+'vector-view-edit' => 'Taisītė',
+'vector-view-history' => 'Veizietė istuorėjė',
+'vector-view-view' => 'Skaitītė',
+'vector-view-viewsource' => 'Veizietė kuoda',
+'actions' => 'Vēksmā',
+'namespaces' => 'Vardū srėtīs',
+'variants' => 'Variantā',
'errorpagetitle' => 'Klaida',
'returnto' => 'Grīžtė i $1.',
@@ -237,7 +265,7 @@ $messages = array(
'otherlanguages' => 'Kėtuom kalbuom',
'redirectedfrom' => '(Nokreipta ėš $1)',
'redirectpagesub' => 'Nokreipėma poslapis',
-'lastmodifiedat' => 'Šėts poslapis paskotini karta pakeists $1 $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Šėts poslapis paskotini karta pakeists $1 $2.',
'viewcount' => 'Tas poslapis bova atverts $1 {{PLURAL:$1|čiesa|čiesus|čiesu}}.',
'protectedpage' => 'Ožrakints poslapis',
'jumpto' => 'Paršuoktė i:',
@@ -248,7 +276,6 @@ $messages = array(
'aboutsite' => 'Aple {{SITENAME}}',
'aboutpage' => 'Project:Aple',
'copyright' => 'Turinīs pateikts so $1 licencėjė.',
-'copyrightpagename' => '{{SITENAME}} autorėnės teisės',
'copyrightpage' => '{{ns:project}}:Autuoriu teisės',
'currentevents' => '** Vielībė̅jė ivīkē **',
'currentevents-url' => 'Project:Vielībė̅jė ivīkē',
@@ -256,8 +283,6 @@ $messages = array(
'disclaimerpage' => 'Project:Atsakuomībės aprėbuojims',
'edithelp' => 'Kāp redagoutė',
'edithelppage' => 'Help:Redagavėms',
-'faq' => 'DOK',
-'faqpage' => 'Project:DOK',
'helppage' => 'Help:Torėnīs',
'mainpage' => 'Pėrms poslapis',
'mainpage-description' => 'Pėrms poslapis',
@@ -315,8 +340,6 @@ $messages = array(
# General errors
'error' => 'Klaida',
'databaseerror' => 'Doumenū bazės klaida',
-'noconnect' => 'Atsėprašuom, ale pruojėkts tor teknėniu biedu ė negal prisėjongtė pri doumenū bazės. <br />
-$1',
'laggedslavemode' => 'Diemesė: Poslapī gal nesmatītė naujausiu pakeitėmu.',
'readonly' => 'Doumenū bazė ožrakėnta',
'enterlockreason' => 'Iveskėt ožrakėnėma prižasti, tēpuogi kumet daugmaž bus atrokėnta',
@@ -359,7 +382,6 @@ Ožklausėms: $2',
'ns-specialprotected' => 'Specēlė̅ jė poslapē negal būtė keitamė.',
# Login and logout pages
-'logouttitle' => 'Nauduotuojė atsėjongėms',
'logouttext' => "'''Daba Tamsta esat atsėjongės.'''
Galėt ė tuoliau nauduotė {{SITENAME}} anuonimėškā aba prisėjonkėt ėš naujė šėtuo patiu a kėto nauduotuojė vardu.
@@ -367,7 +389,6 @@ Pastebiejims: katruos nekatruos poslapiuos ė tuoliau gal ruodītė būktā būt
'welcomecreation' => '== Svēkė, $1! ==
Tamstas paskīra bova sokorta. Neožmėrškėt pakeistė sava {{SITENAME}} nustatīmu.',
-'loginpagetitle' => 'Prisėjongėms',
'yourname' => 'Nauduotuojė vards:',
'yourpassword' => 'Slaptažuodis:',
'yourpasswordagain' => 'Pakartuoket slaptažuodė:',
@@ -388,25 +409,7 @@ Tamstas paskīra bova sokorta. Neožmėrškėt pakeistė sava {{SITENAME}} nusta
'badretype' => 'Ivestė slaptažuodē nesotamp.',
'userexists' => 'Irašīts nauduotuojė vards jau īr nauduojams.
Prašuom pasėrėnktė kėtuoki varda.',
-'youremail' => 'El. pašts:',
-'username' => 'Nauduotuojė vards:',
-'uid' => 'Nauduotuojė ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
-'yourrealname' => 'Tėkros vards:',
-'yourlanguage' => 'Aplėnkuos kalba:',
-'yourvariant' => 'Variants',
-'yournick' => 'Pasėrinkts slapīvardis:',
-'badsig' => 'Neteisings parašas; patėkrinkėt HTML žīmės.',
-'badsiglength' => 'Tamstas parašos īr par ėlgs.
-Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuoliu}}.',
-'yourgender' => 'Lītis:',
-'gender-unknown' => 'Nier nuruodīta',
-'gender-male' => 'Vīrs',
-'gender-female' => 'Muoterėška',
-'email' => 'El. pašts',
-'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
'loginerror' => 'Prisėjongėma klaida',
-'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
'nocookiesnew' => 'Nauduotuojė paskīra bova sokurta, ale Tamsta nēsot prisėjongis. {{SITENAME}} nauduo pakavukus, kū prijongtu nauduotuojus. Tamsta esot ėšjongis anūs. Prašuom ijongtė pakavukus, tumet prisėjonkėt so sava nauju nauduotuojė vardu ė slaptažuodiu.',
'nocookieslogin' => "Vikipedėjė nauduo pakavukus (''cookies''), kū prijongtu nauduotuojus. Tamsta esat ėšjongės anūs. Prašuom ijongtė pakavukus ė pamiegītė viel.",
'loginsuccesstitle' => 'Siekmingā prisėjongiet.',
@@ -529,7 +532,6 @@ Prašuom nuruodītė šėtūs doumenis visūmet, kumet kreipiatės diel bluokav
'blockededitsource' => "''Tamstas keitimu'' teksts poslapiui '''$1''' īr ruodoms žemiau:",
'whitelistedittitle' => 'Nuorėnt redagoutė rēk prisėjongtė',
'whitelistedittext' => 'Tamsta torėt $1, kū keistomėt poslapius.',
-'confirmedittitle' => 'Kū galietomiet redagoutė, rēkalėngs el. pašta patvirtinėms',
'nosuchsectiontitle' => 'Nier tuokė skīrė',
'loginreqlink' => 'prisėjongtė',
'accmailtitle' => 'Slaptažuodis ėšsiūsts īr.',
@@ -549,7 +551,8 @@ Tamsta galėt [[Special:Search/{{PAGENAME}}|ėiškuotė šėta poslapė pavadėn
aba [{{fullurl:{{FULLPAGENAME}}|action=edit}} keistė ta poslapi].',
'userpage-userdoesnotexist' => 'Nauduotuojė paskīra „$1“ nier ožregėstrouta. Prašuom patikrėntė, a Tamsta nuorėt kortė/keistė ta poslapi.',
'clearyourcache' => "'''Diemesė:''' ėšsauguojus Tamstā gal prireiktė ėšvalītė Tamstas naršīklės rėnktovė, kū paveizėtomėt pakeitėmus. '''Mozilla / Safari / Konqueror:''' laikīdami ''Shift'' pasėrinkėt ''Atsiōstė ėš nauja'', a paspauskėt ''Ctrl-Shift-R'' (sėstemuo Apple Mac ''Cmd-Shift-R''); '''IE:''' laikīdamė ''Ctrl'' paspauskėt ''Atnaujėntė'', o paspauskėt ''Ctrl-F5''; '''Konqueror:''' paprastiausē paspauskėt ''Perkrautė'' mīgtoka, o paspauskėt ''F5''; '''Opera''' nauduotuojam gal prireiktė pėlnā ėšvalītė anū rėnktovė ''Rakondā→Nustatīmā''.",
-'usercssjsyoucanpreview' => "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS/JS priš ėšsaugont.",
+'usercssyoucanpreview' => "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS priš ėšsaugont.",
+'userjsyoucanpreview' => "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji JS priš ėšsaugont.",
'usercsspreview' => "'''Napamirškėt, kū Tamsta tėk parveizėt sava nauduotoja CSS, ans da nabova ėšsauguots!'''",
'userjspreview' => "'''Nepamirškėt, kū Tamsta tėk testoujat/parvaizėt sava nauduotoja ''JavaScript'', ans da nabova ėšsauguots!'''",
'userinvalidcssjstitle' => "'''Diemesė:''' Nė juokės ėšruodos „$1“. Napamirškėt, kū sava .css ėr .js poslapē nauduo pavadėnėma mažuosiomės raidiemis, pvz., Nauduotuos:Foo/monobook.css, o ne Nauduotuos:Foo/Monobook.css.",
@@ -592,8 +595,8 @@ tudie negaliesėt ėšsauguotė sava pakeitėmu daba. Tamsta galėt nosėkopėjo
'protectedpagewarning' => "'''DIEMESĖ: Šėts poslapis īr ožrakints ėr anū redagoutė gal tėk admėnėstratuorė teises torėntīs prietelē.'''",
'semiprotectedpagewarning' => "'''Pastebiejėms:''' Šėts poslapis bova ožrakėnts ėr anuo gal redagoutė tėk regėstroutė nauduotojā.",
'titleprotectedwarning' => "'''DIEMESĖ: Tas poslapis bova ožrakėnts tēp, ka tėktās kāpkatrė nauduotuojē galietu ana sokortė.'''",
-'templatesused' => 'Straipsnī nauduojami šabluonā:',
-'templatesusedpreview' => 'Šabluonā, nauduotė šėtuo parvaizuo:',
+'templatesused' => '{{PLURAL:$1|Šabluons|Šabluonā}}, katrėi īr nauduojamė poslapī:',
+'templatesusedpreview' => '{{PLURAL:$1|Šabluons|Šabluonā}}, nauduotė šėtuo parvaizuo:',
'templatesusedsection' => 'Šabluonā, nauduotė šėtom skėrsnelī:',
'template-protected' => '(apsauguots)',
'template-semiprotected' => '(posiau apsauguots)',
@@ -604,11 +607,11 @@ Tamsta galėt grīžtė ė redagoutė nūnā esonti poslapi, a [[Special:UserLog
'permissionserrors' => 'Teisiu klaida',
'permissionserrorstext' => 'Tamsta netorėt teisiu šėta darītė diel {{PLURAL:$1|tuos prīžastėis|tū prīžastiū}}:',
'permissionserrorstext-withaction' => 'Tamsta netorėt leidėma $2 dielē {{PLURAL:$1|tos prīžastėis|tū prīžastiu}}:',
-'recreate-deleted-warn' => "'''Diemesė: Tomsta atkoriat poslapi, katros onkstiau bova ėštrints.'''
+'recreate-moveddeleted-warn' => "'''Diemesė: Tomsta atkoriat poslapi, katros onkstiau bova ėštrints.'''
Tomsta torėt nosprēst, a pritėnk tuoliau redagoutė šėta poslapi.
Šėta poslapė šalėnėmu istuorėjė īr pateikta patuogoma vardan:",
-'deleted-notice' => 'Tas poslapis bova ėštrėnts.
+'moveddeleted-notice' => 'Tas poslapis bova ėštrėnts.
Ėštrėnta poslapė versėju sārašos īr pateikts paveiziejėmō žemiau.',
'edit-conflict' => 'Redagavėma kuonflėktos',
@@ -628,7 +631,7 @@ $3 nuruodīta prīžastis īr ''$2''",
'currentrev' => 'Dabartėnė versėjė',
'currentrev-asof' => 'Dabartėnė $1 versėjė',
'revisionasof' => '$1 versėjė',
-'revision-info' => '$1 versėjė nauduotuojė $2', # Additionally available: $3: revision id
+'revision-info' => '$1 versėjė nauduotuojė $2',
'previousrevision' => '←Onkstesnė versėjė',
'nextrevision' => 'Paskesnė versėjė→',
'currentrevisionlink' => 'Dabartėnė versėjė',
@@ -641,7 +644,6 @@ $3 nuruodīta prīžastis īr ''$2''",
Žīmiejimā: (dab) = palīginims so vielibiausė versėjė,
(pask) = palīginims so priš ta bovosia versėjė, S = mažos pataisims.",
'history-fieldset-title' => 'Naršītė istuorėjuo',
-'deletedrev' => '[ėštrinta]',
'histfirst' => 'Seniausė',
'histlast' => 'Vielibė̅jė',
'historysize' => '($1 {{PLURAL:$1|baits|baitā|baitu}})',
@@ -649,20 +651,21 @@ $3 nuruodīta prīžastis īr ''$2''",
# Revision feed
'history-feed-title' => 'Versėju istuorėjė',
-'history-feed-item-nocomment' => '$1 $2', # user at time
+'history-feed-item-nocomment' => '$1 $2',
'history-feed-empty' => 'Prašuoms poslapis nēgzėstuo.
Ans galiejė būtė ėštrėnts ėš pruojekta, aba parvardėnts.
Pamiegīkėt [[Special:Search|ėiškoutė pruojektė]] sosėjosiu naujū poslapiu.',
# Revision deletion
-'rev-delundel' => 'ruodītė/kavuotė',
-'revisiondelete' => 'Trintė/atkortė versėjės',
-'logdelete-selected' => "{{PLURAL:$2|Pasėrinkts|Pasėrinktė|Pasėrinktė}} '''$1''' istuorėjės {{PLURAL:$2|atėtėkims|atsėtėkimā|atsėtėkimā}}:",
-'revdelete-text' => "'''Ėštrintuos versėjės ėr ivīkē vistėik da bus ruodomė poslapė istuorėjuo ėr specēliūju veiksmū istuorėjuo, no anū torėnė dalīs nabus vėišā pasėikiamos.'''
+'rev-delundel' => 'ruodītė/kavuotė',
+'revisiondelete' => 'Trintė/atkortė versėjės',
+'logdelete-selected' => "{{PLURAL:$2|Pasėrinkts|Pasėrinktė|Pasėrinktė}} '''$1''' istuorėjės {{PLURAL:$2|atėtėkims|atsėtėkimā|atsėtėkimā}}:",
+'revdelete-text' => "'''Ėštrintuos versėjės ėr ivīkē vistėik da bus ruodomė poslapė istuorėjuo ėr specēliūju veiksmū istuorėjuo, no anū torėnė dalīs nabus vėišā pasėikiamos.'''
Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta torėni ėr galės ana atkortė viel par šėta pate sasaja, nabent īr nostatītė papėlduomė aprėbuojėmā.",
-'revdelete-unsuppress' => 'Šalėntė apribuojėmos atkortuos versėjės',
-'logdelete-logentry' => 'pakeists [[$1]] atsėtėkima veiziemoms',
-'revdel-restore' => 'Keistė veizėmuma',
+'revdelete-unsuppress' => 'Šalėntė apribuojėmos atkortuos versėjės',
+'logdelete-logentry' => 'pakeists [[$1]] atsėtėkima veiziemoms',
+'revdel-restore' => 'Keistė veizėmuma',
+'revdelete-edit-reasonlist' => 'Keistė trīnėma prīžastis',
# Suppression log
'suppressionlog' => 'Trīnėma istuorėjė',
@@ -680,17 +683,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'compareselectedversions' => 'Palīgintė pasėrinktas versėjės',
'editundo' => 'atšauktė',
'diff-multi' => '($1 {{PLURAL:$1|tarpėnis keitėms nier ruoduoms|tarpėnē keitėmā nier ruoduomė|tarpėniu keitėmu nier ruoduoma}}.)',
-'diff-movedto' => 'parkelta i $1',
-'diff-styleadded' => '$1 stilius pridiets',
-'diff-added' => 'pridieta $1',
-'diff-changedto' => 'pakeista i $1',
-'diff-movedoutof' => 'ėškelta ėš $1',
-'diff-styleremoved' => '$1 stilius ėštrėnts',
-'diff-removed' => '$1 ėštrėnta',
-'diff-changedfrom' => 'pakeista ėš $1',
-'diff-src' => 'šaltėnis',
-'diff-width' => 'platoms',
-'diff-height' => 'aukštoms',
# Search results
'searchresults' => 'Paėiškuos rezoltatā',
@@ -698,22 +690,19 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'searchresulttext' => 'Daugiau infuormacėjės aple paėiška pruojektė {{SITENAME}} rasėt [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tamsta ėiškuojot \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vėsė poslapē katrėi prasėded so "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vėsė poslapē katrėi ruod i "$1"]])',
'searchsubtitleinvalid' => 'Jėškuom „$1“',
-'noexactmatch' => "'''Nier anėjuokė poslapė, pavadėnta „$1“.''' Tamsta galėt [[:$1|sokortė ta poslapi]].",
-'noexactmatch-nocreate' => "'''Nier poslapė so pavadėnėmu „$1“.'''",
'titlematches' => 'Straipsniu pavadėnėmu atitėkmenīs',
'notitlematches' => 'Juokiū pavadinėma atitikmenū',
'textmatches' => 'Poslapė torėnė atėtikmenīs',
'notextmatches' => 'Juokiū poslapė teksta atitikmenū',
-'prevn' => 'onkstesnius $1',
-'nextn' => 'paskesnius $1',
-'viewprevnext' => 'Veizėtė ($1) ($2) ($3).',
+'prevn' => 'onkstesnius {{PLURAL:$1|$1}}',
+'nextn' => 'paskesnius {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Veizėtė ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Paėiškuos nustatīmā',
'searchmenu-exists' => "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
'searchmenu-new' => "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
'searchhelp-url' => 'Help:Torėnīs',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ėiškuotė poslapiu so šėtuom prīšdielio]]',
'searchprofile-articles' => 'Torėnė poslapē',
-'searchprofile-articles-and-proj' => 'Torėnīs ė pruojėkta poslapē',
'searchprofile-project' => 'Pruojėkta poslapē',
'searchprofile-images' => 'Failā',
'searchprofile-everything' => 'Vėsks',
@@ -738,7 +727,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'searchall' => 'vėsė',
'showingresults' => "Žemiau ruodoma lėgė '''$1''' {{PLURAL:$1|rezoltata|rezoltatu|rezoltatu}} pradedont #'''$2'''.",
'showingresultsnum' => "Žemiau ruodoma '''$3''' {{PLURAL:$3|rezoltata|rezoltatu|rezoltatu}} pradedant #'''$2'''.",
-'showingresultstotal' => "Žemiau ruodom{{PLURAL:$4|s rezoltats '''$1''' ėš '''$3'''|ė rezoltatā '''$1 - $2''' ėš '''$3'''}}",
'nonefound' => "'''Pastebiejėms''': Palē nutīliejėma ėiškuoma tėktās kāp katruosė vardū srėtīsė. Pamiegīkėt prirašītė prėišdieli ''all:'', jēgo nuorėt ėiškiuotė vėsa torėnė (tamė tarpė aptarėma poslapius, šabluonus ė tēp tuoliau), aba nauduokėt nuorėma vardū srėti kāp prėišdieli.",
'search-nonefound' => 'Nier rezoltatu, katrėi atitėktu ožklausėma.',
'powersearch' => 'Ėiškuotė',
@@ -748,25 +736,22 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'powersearch-field' => 'Ėiškoutė',
'search-external' => 'Ėšuorėnė paėiška',
+# Quickbar
+'qbsettings' => 'Greitasā pasėrėnkėms',
+'qbsettings-none' => 'Neruodītė',
+
# Preferences page
'preferences' => 'Nustatīmā',
'mypreferences' => 'Mona nustatīmā',
'prefs-edits' => 'Keitėmu skaitlius:',
'prefsnologin' => 'Naprisėjongis',
-'prefsnologintext' => 'Tamstā rēk būtė <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} prisėjongosam]</span>, kū galietomiet keistė sava nustatīmus.',
-'prefsreset' => 'Nustatīmā buva atstatītė ėš saugīklas.',
-'qbsettings' => 'Greitasā pasėrėnkėms',
-'qbsettings-none' => 'Neruodītė',
+'prefsnologintext' => 'Tamstā rēk būtė <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisėjongosam]</span>, kū galietomiet keistė sava nustatīmus.',
'changepassword' => 'Pakeistė slaptažuodė',
-'skin' => 'Ėšruoda',
+'prefs-skin' => 'Ėšruoda',
'skin-preview' => 'Parveiza',
-'math' => 'Matematėka',
-'dateformat' => 'Datuos fuormats',
+'prefs-math' => 'Matematėka',
'datedefault' => 'Juokė pasėrėnkėma',
-'datetime' => 'Data ė čiesos',
-'math_failure' => 'Nepavīka apdoruotė',
-'math_unknown_error' => 'nežinuoma klaida',
-'math_unknown_function' => 'nežinuoma funkcėjė',
+'prefs-datetime' => 'Data ė čiesos',
'prefs-personal' => 'Nauduotuojė pruopilis',
'prefs-rc' => 'Vielībė̅jė pakeitėmā',
'prefs-watchlist' => 'Keravuojamu sārašos',
@@ -779,7 +764,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'saveprefs' => 'Ėšsauguotė',
'resetprefs' => 'Atstatītė nostatīmos',
'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
-'textboxsize' => 'Redagavėms',
+'prefs-editing' => 'Redagavėms',
'prefs-edit-boxsize' => 'Redagavėma longa dėdoms.',
'rows' => 'Eilotės:',
'columns' => 'Štolpalē:',
@@ -793,9 +778,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'recentchangescount' => 'Numatītasā keitėmu skaitlius, ruodoms vielībūju keitėmu, poslapiu istuorėjėsė ė notėkėmu sarašūsė:',
'savedprefs' => 'Nostatīmā siekmėngā ėšsauguotė.',
'timezonelegend' => 'Čiesa zuona',
-'timezonetext' => '¹Iveskitė kėik adīnu Tamstas vėitins čiesos skėrės nu serverė čiesa (UTC).',
'localtime' => 'Vėitinis čiesos:',
-'timezoneselect' => 'Čiesa jousta:',
'timezoneuseserverdefault' => 'Nauduotė palē nutīliejėma ėš serverė',
'timezoneuseoffset' => 'Kėta (patikslėntė skėrtoma)',
'timezoneoffset' => 'Skėrtoms¹:',
@@ -815,10 +798,28 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'prefs-namespaces' => 'Vardū srėtīs',
'defaultns' => 'Palē nutīliejėma ėiškuotė šėtuosė vardū srėtīsė:',
'default' => 'palē nūtīliejėma',
-'files' => 'Failā',
+'prefs-files' => 'Failā',
+'youremail' => 'El. pašts:',
+'username' => 'Nauduotuojė vards:',
+'uid' => 'Nauduotuojė ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
+'yourrealname' => 'Tėkros vards:',
+'yourlanguage' => 'Aplėnkuos kalba:',
+'yourvariant' => 'Variants',
+'yournick' => 'Pasėrinkts slapīvardis:',
+'badsig' => 'Neteisings parašas; patėkrinkėt HTML žīmės.',
+'badsiglength' => 'Tamstas parašos īr par ėlgs.
+Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuoliu}}.',
+'yourgender' => 'Lītis:',
+'gender-unknown' => 'Nier nuruodīta',
+'gender-male' => 'Vīrs',
+'gender-female' => 'Muoterėška',
+'email' => 'El. pašts',
+'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
+'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
# User rights
-'userrights' => 'Nauduotuoju teisiu valdīms', # Not used as normal message but as header for the special page itself
+'userrights' => 'Nauduotuoju teisiu valdīms',
'userrights-lookup-user' => 'Tvarkītė nauduotuojė gropės',
'userrights-user-editname' => 'Iveskėt nauduotuojė varda:',
'editusergroup' => 'Redagoutė nauduotuojė gropes',
@@ -896,6 +897,8 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
# Recent changes linked
'recentchangeslinked' => 'Sosėjėn pakeitėmā',
+'recentchangeslinked-feed' => 'Sosėjėn pakeitėmā',
+'recentchangeslinked-toolbox' => 'Sosėjėn pakeitėmā',
'recentchangeslinked-title' => 'So $1 sosėje pakeitimā',
'recentchangeslinked-noresult' => 'Nier juokiū pakeitėmu sosėitous poslapious douto čieso.',
'recentchangeslinked-summary' => "Šėtom specēliajam poslapi ruodomė vielībė̅jė pakeitėmā poslapiūs, i katrūs īr nuruodoma. Poslapē ėš Tamstas [[Special:Watchlist|keravuojamu sāraša]] īr '''pastuorėntė'''.",
@@ -905,7 +908,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
# Upload
'upload' => 'Ikeltė faila',
'uploadbtn' => 'Ikeltė faila',
-'reupload' => 'Pakartuotė ikielima',
'reuploaddesc' => 'Sogrīžtė i ikielima fuorma.',
'uploadnologin' => 'Naprėsėjongis',
'uploadnologintext' => 'Nuoriedamė ikeltė faila, torėt būt [[Special:UserLogin|prėsėjongis]].',
@@ -941,7 +943,6 @@ Nuoriedamė panauduotė ikelta faila poslapī, nauduokėt tuokės nūoruodas:
* Ikeliama faila pavadinėms: '''<tt>[[:$1]]</tt>'''
* Jau esontė faila pavadinėms: '''<tt>[[:$2]]</tt>'''
Prašuom ėšsėrėnktė kėta varda.",
-'fileexists-thumb' => "<center>'''Esontis fails'''</center>",
'file-exists-duplicate' => 'Tas fails īr {{PLURAL:$1|šėta faila|šėtū failu}} doblėkats:',
'successfulupload' => 'Ikelt siekmėngā',
'uploadwarning' => 'Diemesė',
@@ -950,7 +951,6 @@ Prašuom ėšsėrėnktė kėta varda.",
'overwroteimage' => 'ikruovė nauja „[[$1]]“ versėjė',
'uploaddisabledtext' => 'Failu ikielėmā oždraustė īr.',
'uploadscripted' => 'Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.',
-'uploadcorrupt' => 'Fails īr pažeists a tor neteisėnga galūne. Prašuom patėkrėntė faila ėr ikeltė ana par naujė.',
'uploadvirus' => 'Šėtom faile īr virosas! Ėšsamiau: $1',
'sourcefilename' => 'Ikeliams fails',
'destfilename' => 'Nuorims faila pavadinims',
@@ -975,6 +975,7 @@ Tuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
'upload-curl-error28-text' => 'Atsakontė svetainė ožtronk par ėlgā. Patėkrėnkėt, a svetainė veik, palaukėt tropoti ė vielē pamiegīkit. Mažo Tamstā rēktu pamiegītė ne tuokio apkrauto čieso.',
'license' => 'Licensėjė',
+'license-header' => 'Licensėjė',
'nolicense' => 'Nepasėrėnkt',
'license-nopreview' => '(Parveiza negalėma)',
'upload_source_url' => ' (tėkrs, vėišā priėinams URL)',
@@ -993,6 +994,7 @@ Paspaude ont štolpelė ontraštės pakeisėt ėšruokavėma.',
'listfiles_count' => 'Versėjės',
# File description page
+'file-anchor-link' => 'Fails',
'filehist' => 'Abruozdielė istuorėjė',
'filehist-help' => 'Paspauskėt ont datas/čiesa, ka paveizietomėt faila tuoki, kokis ons bova tū čiesu.',
'filehist-deleteall' => 'trintė vėsus',
@@ -1009,12 +1011,7 @@ Paspaude ont štolpelė ontraštės pakeisėt ėšruokavėma.',
'imagelinks' => 'Faila nūruodas',
'linkstoimage' => '{{PLURAL:$1|Šėts poslapis|Šėtė poslapē}} nuruod i šėta faila:',
'nolinkstoimage' => 'I faila neruod anėjuoks poslapis.',
-'sharedupload' => 'Tas fails īr ėš $1 ė gal būtė nauduojams kėtūs pruojektūs.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Veizėkiet $1 tolėmesnē infuormacėjē.',
-'shareduploadwiki-desc' => 'Aprašīms ėš anuo $1 ruoduoms žemiau īr.',
-'shareduploadwiki-linktext' => 'faila aprašīma poslapi',
-'noimage' => 'Nier faila so šėtokio pavadėnėmo. Tamsta galėt $1.',
-'noimage-linktext' => 'ikeltė ana',
+'sharedupload' => 'Tas fails īr ėš $1 ė gal būtė nauduojams kėtūs pruojektūs.',
'uploadnewversion-linktext' => 'Ikeltė nauja faila versėje',
# File reversion
@@ -1088,8 +1085,8 @@ Paspaude ont štolpelė ontraštės pakeisėt ėšruokavėma.',
'brokenredirects' => 'Neveikiantīs paradresavėmā',
'brokenredirectstext' => 'Žemiau ėšvardintė paradresavėma poslapē ruod i nasontius poslapius:',
-'brokenredirects-edit' => '(redagoutė)',
-'brokenredirects-delete' => '(trintė)',
+'brokenredirects-edit' => 'redagoutė',
+'brokenredirects-delete' => 'trintė',
'withoutinterwiki' => 'Poslapē ba kalbū nūruodu',
'withoutinterwiki-summary' => 'Šėtė poslapē neruod i kėtū kalbū versėjės:',
@@ -1309,8 +1306,8 @@ Paskotiniu pašalinėmu istuorėjė - $2.',
kažkas jau pakeitė straipsnė arba sospiejė pėrmiesnis atmestė keitėma.
Galėnis keitėms dėrbts nauduotuojė [[User:$3|$3]] ([[User talk:$3|Aptarėms]]).',
-'editcomment' => "Redagavėma kuomentars bova: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Atmests [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarėms]]) pakeitėms; sogrōžėnta nauduotuojė [[User:$1|$1]] versėjė', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Redagavėma kuomentars bova: „''$1''“.",
+'revertpage' => 'Atmests [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarėms]]) pakeitėms; sogrōžėnta nauduotuojė [[User:$1|$1]] versėjė',
'rollback-success' => 'Atmestė $1 keitėmā; grōžėnta i paskotėne $2 versėje.',
'sessionfailure' => 'Atruod kū īr biedū so Tamstas prėsėjongėma sesėjė; šėts veiksmos bova atšaukts kāp atsargoma prėimonė priš sesėjės vuogėma.
Prašoum paspaustė „atgal“ ėr parkrautė poslapi ėš katruo atiejot, ė pamieginkėt vielē.',
@@ -1328,7 +1325,6 @@ Prašoum paspaustė „atgal“ ėr parkrautė poslapi ėš katruo atiejot, ė p
'protectexpiry' => 'Beng galiuotė:',
'protect_expiry_invalid' => 'Galiuojėma čiesos īr nateisėngs.',
'protect_expiry_old' => 'Galiuojėma čiesos īr praėitī.',
-'protect-unchain' => 'Atrakintė parvadinėma teises',
'protect-text' => "Čė Tamsta galėt paveizėtė ė pakeistė apsauguos līgi šėtuo poslapio '''$1'''.",
'protect-locked-access' => "Tamstas paskīra netor teisiu keistė poslapiu apsauguos līgiu.
Čė īr dabartėnē nustatīmā poslapiō '''$1''':",
@@ -1353,7 +1349,7 @@ Prašoum paspaustė „atgal“ ėr parkrautė poslapi ėš katruo atiejot, ė p
** Neproduktīvi redagavėma vaina
** Dėdlė svarboma poslapis',
'protect-edit-reasonlist' => 'Keistė ožrakinėma prīžastis',
-'protect-expiry-options' => '1 adīna:1 hour,1 dėina:1 day,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mieniesē:3 months,6 mieniesē:6 months,1 metā:1 year,par omžius:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 adīna:1 hour,1 dėina:1 day,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mieniesē:3 months,6 mieniesē:6 months,1 metā:1 year,par omžius:infinite',
'restriction-type' => 'Laidėms:',
'restriction-level' => 'Aprėbuojėma līgis:',
'minimum-size' => 'Minėmalus dėdoms',
@@ -1430,6 +1426,9 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
'sp-contributions-newbies-sub' => 'Naujuoms paskīruoms',
'sp-contributions-newbies-title' => 'Nauduotuoju keitėmā naujuoms paskīruoms',
'sp-contributions-blocklog' => 'Bluokavėmu istuorėjė',
+'sp-contributions-deleted' => 'Panaikėnts nauduotuojė duovis',
+'sp-contributions-talk' => 'Aptarėms',
+'sp-contributions-userrights' => 'Nauduotuoju teisiu valdīms',
'sp-contributions-search' => 'Ėiškuotė duovė',
'sp-contributions-username' => 'IP adresos a nauduotuojė vards:',
'sp-contributions-submit' => 'Ėiškuotė',
@@ -1477,7 +1476,7 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
'ipbenableautoblock' => 'Autuomatėškā blokoutė tuo nauduotuojė paskiausē nauduota IP adresa, ė bikuokius paskesnius IP adresus, ėš katrū ons miegin redagoutė',
'ipbsubmit' => 'Blokoutė šėta nauduotuoja',
'ipbother' => 'Kėtuoks čiesos',
-'ipboptions' => '2 adīnas:2 hours,1 dėina:1 day,3 dėinas:3 days,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mienesē:3 months,6 mienesē:6 months,1 metā:1 year,omžėms:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 adīnas:2 hours,1 dėina:1 day,3 dėinas:3 days,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mienesē:3 months,6 mienesē:6 months,1 metā:1 year,omžėms:infinite',
'ipbotheroption' => 'kėta',
'ipbotherreason' => 'Kėta/papėlduoma prižastis',
'ipbwatchuser' => 'Keravuotė tuo nauduotuojė poslapi ėr anuo aptarėma poslapi',
@@ -1504,7 +1503,7 @@ onkstiau ožbluokoutam IP adresō a nauduotuojō.',
'ipblocklist-submit' => 'Ėiškuotė',
'blocklistline' => '$1, $2 ožblokava $3 ($4)',
'infiniteblock' => 'neribuotā',
-'expiringblock' => 'beng galiuotė $1',
+'expiringblock' => 'beng galiuotė $1 $2',
'anononlyblock' => 'vėn anuonėmā',
'noautoblockblock' => 'autuomatinis blokavėms ėšjongts',
'createaccountblock' => 'paskīrū korėms oždrausts īr',
@@ -1517,7 +1516,6 @@ onkstiau ožbluokoutam IP adresō a nauduotuojō.',
'contribslink' => 'duovis',
'autoblocker' => 'Autuomatėnis ožbluokavėms, nes dalėnaties IP adreso so nauduotuojo "$1". Prīžastės - "$2".',
'blocklogpage' => 'Ožblokavėmu istuorėjė',
-'blocklog-fulllog' => 'Vėsos bluokavėmu sārošos',
'blocklogentry' => 'ožblokava „[[$1]]“, blokavėma čiesos - $2 $3',
'reblock-logentry' => 'pakeistė [[$1]] bluokavėma nustatīmā, naus bluokavėma čiesos īr $2 $3',
'blocklogtext' => 'Čė īr nauduotuoju blokavėma ėr atblokavėma sārašos. Autuomatėškā blokoutė IP adresā nier ėšvardėntė. Jeigu nuorėt paveizėtė nūnā blokoujamus adresus, veizėkėt [[Special:IPBlockList|IP ožbluokavėmu istuorėjė]].',
@@ -1564,7 +1562,7 @@ kū soprantat vėsas pasiekmes.",
'move-watch' => 'Keravuotė šėta poslapi',
'movepagebtn' => 'Parvadintė poslapė',
'pagemovedsub' => 'Parvadinta siekmingā',
-'movepage-moved' => '\'\'\'"$1" bova parvadints i "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" bova parvadints i "$2"\'\'\'',
'movepage-moved-redirect' => 'Nukreipims bova sokorts.',
'articleexists' => 'Straipsnis so tuokiu vardo jau īr
a parinktāsis vards īr bluogs.
@@ -1602,8 +1600,6 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
'allmessagescurrent' => 'Dabartėnis teksts',
'allmessagestext' => 'Čė pateikamė sėstemėniu pranešėmu sārašos, esontis MediaWiki srėtie.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nepalaikuoms īr, nes nustatīms '''\$wgUseDatabaseMessages''' ėšjungts īr.",
-'allmessagesfilter' => 'Tekstu pavadėnėmu atsėjuotuos:',
-'allmessagesmodified' => 'Ruodītė vėn pakeistus',
# Thumbnails
'thumbnail-more' => 'Padėdintė',
@@ -1644,6 +1640,7 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
'tooltip-search-fulltext' => 'Ėiškuotė poslapiu so tuokiu tekstu',
'tooltip-p-logo' => 'Pėrms poslapis',
'tooltip-n-mainpage' => 'Aplonkītė pėrma poslapi',
+'tooltip-n-mainpage-description' => 'Ētė i pėrma poslapi',
'tooltip-n-portal' => 'Aple pruojekta, ka galėma vēktė, kamė ka rastė',
'tooltip-n-currentevents' => 'Raskėt naujausė infuormacėjė',
'tooltip-n-recentchanges' => 'Vielībūju pakeitėmu sārašos tamė projektė.',
@@ -1680,7 +1677,7 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
# Attribution
'anonymous' => 'Neregėstrouts nauduotuos',
'siteuser' => '{{SITENAME}} nauduotuos $1',
-'lastmodifiedatby' => 'Šėta poslapi paskotini karta redagava $3 $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Šėta poslapi paskotini karta redagava $3 $2, $1.',
'others' => 'kėtė',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|nauduotuos|nauduotuojē}} $1',
'creditspage' => 'Poslapė kūriejē',
@@ -1706,6 +1703,11 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
'mw_math_modern' => 'Rekomendounama muodernioms naršīklems',
'mw_math_mathml' => 'MathML jēgo imanuoma (ekspermentinis)',
+# Math errors
+'math_failure' => 'Nepavīka apdoruotė',
+'math_unknown_error' => 'nežinuoma klaida',
+'math_unknown_function' => 'nežinuoma funkcėjė',
+
# Patrolling
'markaspatrolleddiff' => 'Žīmietė, kū patikrėnta',
'markaspatrolledtext' => 'Pažīmietė, ka poslapis patėkrėnts īr',
@@ -1766,7 +1768,7 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Platoms',
@@ -1789,7 +1791,7 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
'exif-flashenergy' => 'Blėca energėjė',
'exif-contrast' => 'Kuontrasts',
-'exif-orientation-1' => 'Standartėšks', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Standartėšks',
'exif-xyresolution-i' => '$1 puškē cuolī',
'exif-xyresolution-c' => '$1 puškē centėmetrė',
@@ -1905,7 +1907,7 @@ Tamsta tēpuogi galėt [[Special:Watchlist/raw|redagoutė grīnaji keravuojamu s
'watchlisttools-raw' => 'Keistė nebėngta keravuojamu straipsniu sāraša',
# Special:Version
-'version' => 'Versėjė', # Not used as normal message but as header for the special page itself
+'version' => 'Versėjė',
'version-license' => 'Licenzėjė',
# Special:FilePath
diff --git a/languages/messages/MessagesBcc.php b/languages/messages/MessagesBcc.php
index 7d38ee49..4185b803 100644
--- a/languages/messages/MessagesBcc.php
+++ b/languages/messages/MessagesBcc.php
@@ -248,7 +248,7 @@ $messages = array(
'category-media-header' => 'مدیا ته دسته "$1"',
'category-empty' => "''ای دسته ی هچ صفحه یا مدیا نیست''",
'hidden-categories' => '{{PLURAL:$1|پناهین دسته|پناهین دسته جات}}',
-'hidden-category-category' => 'پناهین دسته جات', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'پناهین دسته جات',
'category-subcat-count' => '{{PLURAL:$2|ای دسته فقط جهلیگین زیر دسته ای هست..|ای دسته جهلیگین {{PLURAL:$1|subcategory|$1 زیردسته}}, چه $2 کل.}}',
'category-subcat-count-limited' => 'ای دسته جهلیگی {{PLURAL:$1|زیردسته|$1 زیر دسته جات}}.',
'category-article-count' => '{{PLURAL:$2|ای دسته فقط شامل جهلیگین صفحه انت.|جهلیگین {{PLURAL:$1|صفحه است|$1 صفحات انت}}ته ای دسته , چه $2 کل.}}',
@@ -265,10 +265,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'باره',
-'article' => 'محتوا صفحه',
-'newwindow' => '(ته نوکین پنچره ی پچ کن)',
-'cancel' => 'کنسل',
+'about' => 'باره',
+'article' => 'محتوا صفحه',
+'newwindow' => '(ته نوکین پنچره ی پچ کن)',
+'cancel' => 'کنسل',
+'moredotdotdot' => 'گیشتر...',
+'mypage' => 'می صفحه',
+'mytalk' => 'منی گپ',
+'anontalk' => 'گپ کن گون ای آی پی',
+'navigation' => 'گردگ',
+'and' => '&#32;و',
+
+# Cologne Blue skin
'qbfind' => 'درگیزگ',
'qbbrowse' => 'بروز',
'qbedit' => 'اصلاح',
@@ -276,15 +284,35 @@ $messages = array(
'qbpageinfo' => 'متن',
'qbmyoptions' => 'منی صفحات',
'qbspecialpages' => 'حاصین صفحات',
-'moredotdotdot' => 'گیشتر...',
-'mypage' => 'می صفحه',
-'mytalk' => 'منی گپ',
-'anontalk' => 'گپ کن گون ای آی پی',
-'navigation' => 'گردگ',
-'and' => '&#32;و',
-
-# Metadata in edit box
-'metadata_help' => 'متادیتا',
+'faq' => 'ب.ج.س',
+'faqpage' => 'Project:ب.ج.س',
+
+# Vector skin
+'vector-action-addsection' => 'هور کتن عنوان',
+'vector-action-delete' => 'زورگ',
+'vector-action-move' => 'جاه په جاه',
+'vector-action-protect' => 'حفاظت',
+'vector-action-undelete' => 'ترینگ',
+'vector-action-unprotect' => 'حفاظت درگیزگ',
+'vector-namespace-category' => 'دسته',
+'vector-namespace-help' => 'تاک راهنما',
+'vector-namespace-image' => 'فایل',
+'vector-namespace-main' => 'تاک',
+'vector-namespace-media' => 'تاک مدیا',
+'vector-namespace-mediawiki' => 'کوله',
+'vector-namespace-project' => 'تاک پروژه',
+'vector-namespace-special' => 'حاصین تاک',
+'vector-namespace-talk' => 'گپ',
+'vector-namespace-template' => 'تمپلت',
+'vector-namespace-user' => 'کاربر تاک',
+'vector-view-create' => 'شرکتن',
+'vector-view-edit' => 'اصلاح',
+'vector-view-history' => 'چارتن تاریح',
+'vector-view-view' => 'وانتن',
+'vector-view-viewsource' => 'پیشدارگ بن جاه',
+'actions' => 'کاران',
+'namespaces' => 'فضانامان',
+'variants' => 'گوشگان',
'errorpagetitle' => 'حطا',
'returnto' => 'تررگ به $1.',
@@ -334,18 +362,22 @@ $messages = array(
'otherlanguages' => 'ته دگر زبان',
'redirectedfrom' => '(غیر مستقیم بوتگ چه $1)',
'redirectpagesub' => 'صفحه غیر مستقیم',
-'lastmodifiedat' => ' $2, $1.ای صفحه اهری تغییر دهگ بیته', # $1 date, $2 time
+'lastmodifiedat' => ' $2, $1.ای صفحه اهری تغییر دهگ بیته',
'viewcount' => 'ای صفحه دسترسی بیتگ {{PLURAL:$1|بار|$1رند}}.',
'protectedpage' => 'صفحه محافظتی',
'jumpto' => 'کپ به:',
'jumptonavigation' => 'گردگ',
'jumptosearch' => 'گردگ',
+'view-pool-error' => 'متاسفانه، سرور هنون بازگین باری سر انت.
+بازگین کاربری این تاک ءَ چارگنت.
+لطفا کمی صبر کنیت پیش چه شی که دگه ای تاک بچاریت.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'باره {{SITENAME}}',
'aboutpage' => 'Project:باره',
'copyright' => 'محتوا موجودانت تحت $1.',
-'copyrightpagename' => 'حق کپی{{SITENAME}}',
'copyrightpage' => '{{ns:project}}:حق کپی',
'currentevents' => 'هنوکین رویداد',
'currentevents-url' => 'Project:هنوکین رویداد',
@@ -353,8 +385,6 @@ $messages = array(
'disclaimerpage' => 'Project:عمومی بی میاریگان',
'edithelp' => 'کمک اصلاح',
'edithelppage' => 'Help:اصلاح',
-'faq' => 'ب.ج.س',
-'faqpage' => 'Project:ب.ج.س',
'helppage' => 'Help:محتوا',
'mainpage' => 'صفحه اصلی',
'mainpage-description' => 'صفحه اصلی',
@@ -436,10 +466,6 @@ $messages = array(
"$1"
چه ای عملگر"$2".
مای اس کیو ال ای حطا پیش داشتت "$3: $4"',
-'noconnect' => 'شرمنده! وی کی تکنیکی مشکلاتی هستن و نه تونیت گون دیتابیس اتصال گریت.<br />
-$1',
-'nodb' => 'نه تونیت دیتابیس انتخاب کن $1',
-'cachederror' => 'جهلیگین یک کپی ذخیره ای چه صفحه درخواستین و ممکننت نوک مبیت.',
'laggedslavemode' => 'هوژاری: صفحه شاید نوکین په روچ بییگان داشته می بیت',
'readonly' => 'دیتابیس کبلنت',
'enterlockreason' => 'یک دلیلی په کبل وارد کنیت، شامل یک برآوردی چه وهد کبل ویل بیت',
@@ -502,7 +528,6 @@ $2',
'virus-unknownscanner' => 'ناشناسین آنتی ویروس:',
# Login and logout pages
-'logouttitle' => 'دربیگ کاربر',
'logouttext' => "''' شما الان در بوتت.'''
شما تونیت چه {{SITENAME}} ناشناس استفاده کنیت یا شما تونیت دگه وراد بیت گون دگه یا هما کاربر.
@@ -510,7 +535,6 @@ $2',
'welcomecreation' => '== وش آتکی،$1! ==
شمی حساب شر بیت.
مه شموشیت وتی [[Special:Preferences|{{SITENAME}} ترجیحات]] ترجیحات عوض کنیت',
-'loginpagetitle' => 'ورود کاربر',
'yourname' => 'نام کاربری',
'yourpassword' => 'کلمه رمز',
'yourpasswordagain' => 'کلمه رمز دگه نویس',
@@ -533,28 +557,7 @@ $2',
'badretype' => 'کلماتی رمزی که شما وارد کتگیت یک نهنت.',
'userexists' => 'وارد بیتگیت نام کاربری الان استفاده بیت.
لطفا دگه دابین نامی بزوریت.',
-'youremail' => 'ایمیل:',
-'username' => 'نام کاربری:',
-'uid' => 'کاربر شناسگ:',
-'prefs-memberingroups' => 'عضو گروه {{PLURAL:$1|group|groups}}:',
-'yourrealname' => 'راستین نام:',
-'yourlanguage' => 'زبان:',
-'yourvariant' => 'مغایر:',
-'yournick' => 'امضا:',
-'badsig' => 'نامعتبرین حامین امضا تگان HTML چک کن',
-'badsiglength' => 'شمل امضا باز مزنتت.
-آی بایدن $1 {{PLURAL:$1|کارکاتر|کاراکتران}} مزن تر مبیت',
-'yourgender' => 'جنس:',
-'gender-unknown' => 'نامعلوم',
-'gender-male' => 'مردین',
-'gender-female' => 'جنین',
-'prefs-help-gender' => 'اختیاری: په خاطر توار کتن درست جنس گون برنامه استفاده بیت. ای اطلاعات بلکین عمومی ببنت.',
-'email' => 'ایمیل',
-'prefs-help-realname' => 'راستین نام اهتیاریتن. اگه شما یکی انتخاب کنیت شی په شمی کارء نشان هلگ په روت.',
'loginerror' => 'حطا ورود',
-'prefs-help-email' => 'آدرس ایمیل اختیاری انت، بله اجازت دن که یک نوکین کلمه ی رمزی په شما دیم دهگ بیت وهدی که شما وتی رمزء شموشیت.
-شما هنچوش تونیت دگرانء اجازت بدهیت چه طریق شمی بحث_کاربر صفخه بی شی که وتی شناسگ پیش داریت تماس بگرنت.',
-'prefs-help-email-required' => 'آدرس ایمیل نیازنت.',
'nocookiesnew' => 'حساب کاربر شر بوت بله شما وارد نه بیتگیت ته.
{{SITENAME}} چه کوکی په ورود کابران استفاده کنت.
شما کوکی غیر فعال کتت.
@@ -623,18 +626,12 @@ $2',
'retypenew' => 'کلمه رمز دگه بنویس',
'resetpass_submit' => 'تنظیم کلمه رمز و ورود',
'resetpass_success' => 'شمی کلمه رمز گون موفقیت عوض بون! هنو شما وارد بیگیت...',
-'resetpass_bad_temporary' => 'نامعتبر هنوکین کلمه رمز.
-شما شاید پیشتر وتی کلمه رمز آ عوض کتت یا یک نوکین هنوکین کلمه رمز لوٹتگیت.',
'resetpass_forbidden' => 'کلمات رمز نه توننت عوض بنت.',
'resetpass-no-info' => 'په مستقیمین دسترسی په ای صفحه شما بایدن وارد سایت بیت',
'resetpass-submit-loggedin' => 'عوض کتن کلمه رمز',
'resetpass-wrong-oldpass' => 'کلمه رمز موقت یا هنوکین رمز شر نهنت.
بلیکن شما الان وتی کلمه رمز عوض کتت یا یک نوکین موقتین رمزی لوٹت.',
'resetpass-temp-password' => 'موقتین کلمه رمز:',
-'resetpass-log' => 'سیاهگ بدل کتن کلمه رمز',
-'resetpass-logtext' => 'جهلا سیاهگی چه کاربرانی هستنت که آیانی کلمه رمز گون مدیر عوض بوتت.',
-'resetpass-logentry' => 'کلمه رمز $1 ءَ عوض کت',
-'resetpass-comment' => 'دلیل عوض کتن کلمه رمز:',
# Edit page toolbar
'bold_sample' => 'پررنگین متن',
@@ -707,7 +704,6 @@ $2',
'blockededitsource' => "متن '''your edits'' به '''$1''' جهلآ پیش دارگ بیت:",
'whitelistedittitle' => 'په اصلاح کتن بایدن وارد سیستم بیت',
'whitelistedittext' => 'شما باید $1به اصلاح کتن صفحات.',
-'confirmedittitle' => 'به اصلاح کتن تایید ایمیل نیازنت',
'confirmedittext' => 'شما بایدن وتی آدرس ایمیل آ پیش چه اصلاح کتن صفحات تایید کنیت.
لطفا وتی آدرس ایمیل آی چه طریق [[Special:Preferences|ترجحات کاربر]] تنظیم و معتبر کنیت.',
'nosuchsectiontitle' => 'هچ چوشن بخش',
@@ -730,7 +726,8 @@ $2',
یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} اصلاح ای صفحه]</span>.',
'userpage-userdoesnotexist' => 'حساب کاربر "$1" ثبت نهنت. لطفا کنترل کنیت اگه شما لوٹیت ای صفحه یا شر/اصلاح کنیت.',
'clearyourcache' => "'''توجه:''' بعد چه ذخیره کتن، شما شاید مجبور بیت چه وتی ذخیره ی بروزر رد بیت تا تغییرات بگندیت. '''Mozilla / Firefox / Safari:'' ''Shift'' جهل داریت همی وهدی که کلیک کنیت ''Reload'' یا بداریت ''Ctrl-Shift-R'' (''Cmd-Shift-R'' on Apple Mac);'''IE:''' ''Ctrl'' بداری وهدی که کلیک ''Refresh' یا 'Ctrl-F5''; '''Konqueror:''': راحت کلیک کن دکمه ''Reload'' یا بدار ''F5''; '''Opera''' کاربر بایدن ته ''Tools→Preferences'' ذخیره پاک کنت.",
-'usercssjsyoucanpreview' => "'''نکته:''' چه دکمه 'Show preview' په آزمایش کتن CSS/JS پیش چه ذخیره کتن استفاده کن",
+'usercssyoucanpreview' => "'''نکته:''' چه دکمه 'Show preview' په آزمایش کتن CSS پیش چه ذخیره کتن استفاده کن",
+'userjsyoucanpreview' => "'''نکته:''' چه دکمه 'Show preview' په آزمایش کتن JS پیش چه ذخیره کتن استفاده کن",
'usercsspreview' => "''''بزان که شما فقط وتی CSS کاربری بازبینی کنین. هنگنت آیی ذخیره نه بوتت!''''",
'userjspreview' => "''''په یاد دار که شما فقط وتی کاربری JavaScript بازبینی/آزمایش کنگیت، هنگت ذخیره نه بوتت!''''",
'userinvalidcssjstitle' => "'''هوژاری:''هچ جلدی نیست\"\$1\".
@@ -785,8 +782,8 @@ $2',
'semiprotectedpagewarning' => "''''توجه:'''' ای صفحه کبلنت چوش که فقط ثبت نامی کابران توننت آیء اصلاح کننت.",
'cascadeprotectedwarning' => "''هوژاری''ای صفحه کبلنت چوش که فقط کابران گون دسترسی مدیر سیستم توننت آییء اصلاح کننت،په چی که آیی ته چهلین حمایت آبشاری {{PLURAL:$1|صفحات|صفحه}}:",
'titleprotectedwarning' => "'''هوژاری: ای صفحه کبلنت چوش که فقط لهتی کاربر گون [[Special:ListGroupRights|خاصین حق]] تواننت آیء شر کننت.'''",
-'templatesused' => 'تمپلتانی که ته ای صفحه استفاده بیت:',
-'templatesusedpreview' => 'تلمپلت آنی که ته ای بازبینی استفاده بیت',
+'templatesused' => '{{PLURAL:$1|تمپلت|تمپلت}} که ته ای صفحه کارمز بیتت:',
+'templatesusedpreview' => '{{PLURAL:$1|تمپلت|تمپلت}} ته ای بازبینی کارمرز بوتت',
'templatesusedsection' => 'تمپلتانی که ته ای بخش به کار رونت',
'template-protected' => '(محافظتین)',
'template-semiprotected' => '(نیم محافظتی)',
@@ -799,12 +796,13 @@ $2',
'permissionserrors' => 'حطای اجازت',
'permissionserrorstext' => 'شما را اجازت په انجام آی نیست، په جهلیگین دلیل {{PLURAL:$1|دلیل|دلایل}}:',
'permissionserrorstext-withaction' => 'شما را اجازت په $2, په خاطر جهلیگین {{PLURAL:$1|دلیل|دلایل}}:',
-'recreate-deleted-warn' => "'''هوژاری: شما یک صفحه ای دگه شرکنگیت که پیشتر حذف بوتت.'''
+'recreate-moveddeleted-warn' => "هوژاری: شما یک صفحه ای دگه شرکنگیت که پیشتر حذف بوتت.'''
شما بایدن توجه کنیت که ادامه اصلاح ای صفحه درستنت.
-آمار حذف ای صفحه په شمی حاطرء ادان هستن:",
-'deleted-notice' => 'ای صفحه حذف بوتت. په مراجعه جهل گور آمار حذف پی ای صفحه اتکگت.',
-'deletelog-fulllog' => 'چارگ آمار کامل',
+آمار حذف و جاه په جاهی ای صفحه په شمی حاطرء ادان هستن:",
+'moveddeleted-notice' => 'ای صفحه حذف بوتت.
+په مراجعه جهل گور آمار حذف و جاه په جاهی پی ای صفحه اتکگت.',
+'log-fulllog' => 'چارگ کل سیاهگ',
'edit-hook-aborted' => 'اصلاح گون قلاب بند بوت.
توضیحی ای باره ی دهگ نه بوتت.',
'edit-gone-missing' => 'نه تونیت صفحهء په روچی کنت.
@@ -845,7 +843,7 @@ $2',
'currentrev' => 'هنوکین بازبینی',
'currentrev-asof' => 'هنوکین بازبینی چه $1',
'revisionasof' => 'بازبینی په عنوان $1',
-'revision-info' => 'بازبینی په داب $1 توسط $2', # Additionally available: $3: revision id
+'revision-info' => 'بازبینی په داب $1 توسط $2',
'previousrevision' => '←پیش ترین نسخه',
'nextrevision' => 'نوکین بازبینی→',
'currentrevisionlink' => 'هنوکین بازبینی',
@@ -858,7 +856,6 @@ $2',
Legend: (cur) = تفاوتان گون هنوکین نسخه,
(last) = تفاوت گون بعدی نسخه, M = هوردین اصلاح.',
'history-fieldset-title' => 'گردگ تاریح',
-'deletedrev' => '[حذف]',
'histfirst' => 'اولین',
'histlast' => 'اهرین',
'historysize' => '({{PLURAL:$1|1 بایت|$1 بایت}})',
@@ -867,72 +864,79 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
# Revision feed
'history-feed-title' => 'تاریح بازبینی',
'history-feed-description' => 'تاریح بازبینی په ای صفحه ته ویکی',
-'history-feed-item-nocomment' => '$1 ته $2', # user at time
+'history-feed-item-nocomment' => '$1 ته $2',
'history-feed-empty' => 'لوٹتگین صفحه موجود نهنت.
شاید آی چه ویکی حذف بوتت یا نامی بدل بوتت.
آزمایش کن[[Special:Search|گردگ ته ویکی]] په مربطین نوکین صفحات.',
# Revision deletion
-'rev-deleted-comment' => '(نظر زورگ بیتت)',
-'rev-deleted-user' => '(نام کاربری زورگ بیتت)',
-'rev-deleted-event' => '(کار آمار زورگ بیتت)',
-'rev-deleted-text-permission' => "ای بازبینی صفحه چه آرشیو عمومی '''زورگ''' بیتت.
-شاید جزییاتی ته [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} حذف آمار]. بیت",
-'rev-deleted-text-view' => "ای بازبینی صفحه چه آرشیو عمومی '''زورگ''' بیتت.
+'rev-deleted-comment' => '(نظر زورگ بیتت)',
+'rev-deleted-user' => '(نام کاربری زورگ بیتت)',
+'rev-deleted-event' => '(کار آمار زورگ بیتت)',
+'rev-deleted-text-permission' => "ای بازبینی صفحه چه آرشیو عمومی '''زورگ''' بیتت.
+شاید جزییاتی ته [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} حذف آمار]. بیت",
+'rev-deleted-text-unhide' => "ای اصلاح چه ای صفحه '''زورگ بوتت'''.
+ممکن انت اطلاعات مرتبط گون آیی ءَ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاهگ حذف] بگندیت.
+شما په عنوان یک مدیر هنوچوش توایت اگر بلوٹیت [$1 ای نسخه را بچاریت].",
+'rev-deleted-text-view' => "ای بازبینی صفحه چه آرشیو عمومی '''زورگ''' بیتت.
په عنوان مدیر ته {{SITENAME}} شما تونیت آیء بگنیت;
-شاید جزییاتی ته ببیت [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} آمار حذف].",
-'rev-deleted-no-diff' => "شما نه تونیت تفاوت ای نسخه بچارت په چی که یکی چه نسخ چه عمومی آرشیو '''زورگ''' بوتت.
-ممکن انت [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاهگ حذف] جزئیاتی ببیت.",
-'rev-deleted-unhide-diff' => "یکی چه ای دو نسخهٔ '''حذف بوتت'''.
-ممکن انت اطلاعات این شی باره [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاهگ حذف] موجود ببیت.
+شاید جزییاتی ته ببیت [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} آمار حذف].",
+'rev-deleted-no-diff' => "شما نه تونیت تفاوت ای نسخه بچارت په چی که یکی چه نسخ چه عمومی آرشیو '''زورگ''' بوتت.
+ممکن انت [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاهگ حذف] جزئیاتی ببیت.",
+'rev-deleted-unhide-diff' => "یکی چه ای دو نسخهٔ '''حذف بوتت'''.
+ممکن انت اطلاعات این شی باره [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاهگ حذف] موجود ببیت.
شما په عنوان یک مدیر هنگت توانیت اگر بلوٹیت [$1 ای تفاوت را بچاریت].",
-'rev-delundel' => 'پیش دار/پناه کن',
-'revisiondelete' => 'حذف/حذف مکن بازبینیء',
-'revdelete-nooldid-title' => 'نامعتبر بازبینی هدف',
-'revdelete-nooldid-text' => 'شما یا یک بازبینی هدفی په اجرای ای عمل مشخص نه کتت
+'rev-delundel' => 'پیش دار/پناه کن',
+'revisiondelete' => 'حذف/حذف مکن بازبینیء',
+'revdelete-nooldid-title' => 'نامعتبر بازبینی هدف',
+'revdelete-nooldid-text' => 'شما یا یک بازبینی هدفی په اجرای ای عمل مشخص نه کتت
،بازبینی مشخص موجود نهنت، یا شما تلاش کنیت هنوکین بازبینی پناه کنیت.',
-'revdelete-nologtype-title' => 'نوع لیست سیاهگ مشخص نهنت',
-'revdelete-nologtype-text' => 'شما هیچ دابین نوع سیاهگی مشخص نکتت په اجرای ای کار.',
-'revdelete-toomanytargets-title' => 'بازگین مقصد',
-'revdelete-toomanytargets-text' => 'شما بازگین نوع هدف مشخص کتت په اجرای ای هدف.',
-'revdelete-nologid-title' => 'نامعتبرین ورودی سیاهگ',
-'revdelete-nologid-text' => 'شما یک چیزی ته سیاهگ هدف برای اجرای ای کار مشخص نکتت یا ورودی مشخص این موجود نهنت.',
-'revdelete-selected' => "'''{{PLURAL:$2|بازبینی انتخابی|بازبینی ان انتخابی}} چه [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|رویداد آمار انتخابی|رویداد ان آمار انتخابی}}:'''",
-'revdelete-text' => "'''حذفین بازبینی آن و رویداد ان هنگت ته تاریح و آمار صفحه جاه کاینت، بله لهتی چه محتوا آيان په عام قابل دسترسی نه بنت.'''
+'revdelete-nologtype-title' => 'نوع لیست سیاهگ مشخص نهنت',
+'revdelete-nologtype-text' => 'شما هیچ دابین نوع سیاهگی مشخص نکتت په اجرای ای کار.',
+'revdelete-nologid-title' => 'نامعتبرین ورودی سیاهگ',
+'revdelete-nologid-text' => 'شما یک چیزی ته سیاهگ هدف برای اجرای ای کار مشخص نکتت یا ورودی مشخص این موجود نهنت.',
+'revdelete-no-file' => 'فایل مشخص بیتگین موجود نهنت',
+'revdelete-show-file-submit' => 'بله',
+'revdelete-selected' => "'''{{PLURAL:$2|بازبینی انتخابی|بازبینی ان انتخابی}} چه [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|رویداد آمار انتخابی|رویداد ان آمار انتخابی}}:'''",
+'revdelete-text' => "'''حذفین بازبینی آن و رویداد ان هنگت ته تاریح و آمار صفحه جاه کاینت، بله لهتی چه محتوا آيان په عام قابل دسترسی نه بنت.'''
دگه مدیران ته {{SITENAME}} هنگت نوننت په پناهین محتوا دسترسیش بیت و توننت آیء چه طریق همی دستبری آی> تریننت، مگر شی که گیشین محدودیت بلیت.
لطفا تایید کنیت که شما لوٹیت ای کارءَ انجام دهید و چه آیی نتیجه سهی گیت و ای کار هم داب په [[{{MediaWiki:Policy-url}}|سیاست]]انجام دهید",
-'revdelete-suppress-text' => "فرونشانی بایدن '''فقط''' په جهلگین موارد استفاده بیت:
+'revdelete-suppress-text' => "فرونشانی بایدن '''فقط''' په جهلگین موارد استفاده بیت:
* اطلاعات نامناسب شخصی
*: ''نشانی لوگ، شماره تلفن، شماره تامین اجتماعی و دگه.''",
-'revdelete-legend' => 'تنظیم محدودیت آن دیستن',
-'revdelete-hide-text' => 'پناه کن متن بازبینیء',
-'revdelete-hide-name' => 'پناه کن کار و هدفء',
-'revdelete-hide-comment' => 'پناه کن اصلاح نظرء',
-'revdelete-hide-user' => 'پناه کن اصلاح کنوکء نام کاربری/آی پی',
-'revdelete-hide-restricted' => 'ای محدودیت آنء په مدیران سیستم و دگران بل',
-'revdelete-suppress' => 'توقیف کن دیتاء چه مدیران سیستم و دگران',
-'revdelete-hide-image' => 'پناه کن فایل محتواء',
-'revdelete-unsuppress' => 'بزور محدودیت آنء جه ترینتگین بازبینی آن',
-'revdelete-log' => 'دلیل:',
-'revdelete-submit' => 'بلی اور انتخابی بازبینی',
-'revdelete-logentry' => 'عوض بوت ظاهر بیگ بازبینی [[$1]]',
-'logdelete-logentry' => 'عوض بیت ظاهر بوتن رویداد چه [[$1]]',
-'revdelete-success' => "'''ظاهر بازبینی گون موفقیت تنظیم بوت.'''",
-'logdelete-success' => "''''آمار ظاهر بیگ گون موفقیت تنظیم بوت.''''",
-'revdel-restore' => 'عوض کن ظاهر بیگء',
-'pagehist' => 'تاریح صفحه',
-'deletedhist' => 'تاریح حذف بوت',
-'revdelete-content' => 'محتوا',
-'revdelete-summary' => 'خلاصه اصلاح',
-'revdelete-uname' => 'نام کاربری',
-'revdelete-restricted' => 'محدودیت آن په مدیران سیستم بوت',
-'revdelete-unrestricted' => 'به زور چه مدیران سیستم محدودیتان',
-'revdelete-hid' => 'پناه $1',
-'revdelete-unhid' => ' $1پنهاه مکن',
-'revdelete-log-message' => '$1 په $2 {{PLURAL:$2|بازبینی|بازبینی ان}}',
-'logdelete-log-message' => '$1 په $2 {{PLURAL:$2|رویداد|رویدادان}}',
+'revdelete-legend' => 'تنظیم محدودیت آن دیستن',
+'revdelete-hide-text' => 'پناه کن متن بازبینیء',
+'revdelete-hide-image' => 'پناه کن فایل محتواء',
+'revdelete-hide-name' => 'پناه کن کار و هدفء',
+'revdelete-hide-comment' => 'پناه کن اصلاح نظرء',
+'revdelete-hide-user' => 'پناه کن اصلاح کنوکء نام کاربری/آی پی',
+'revdelete-hide-restricted' => 'ای محدودیت آنء په مدیران سیستم و دگران بل',
+'revdelete-suppress' => 'توقیف کن دیتاء چه مدیران سیستم و دگران',
+'revdelete-unsuppress' => 'بزور محدودیت آنء جه ترینتگین بازبینی آن',
+'revdelete-log' => 'دلیل:',
+'revdelete-submit' => 'بلی اور انتخابی بازبینی',
+'revdelete-logentry' => 'عوض بوت ظاهر بیگ بازبینی [[$1]]',
+'logdelete-logentry' => 'عوض بیت ظاهر بوتن رویداد چه [[$1]]',
+'revdelete-success' => "'''ظاهر بازبینی گون موفقیت تنظیم بوت.'''",
+'revdelete-failure' => "'''پیشدارگ نسخ قابل تنظیم نه بیتن.'''",
+'logdelete-success' => "''''آمار ظاهر بیگ گون موفقیت تنظیم بوت.''''",
+'logdelete-failure' => "'''پیدایی سیاه گان قابل تنظیم نهنت:'''
+$1",
+'revdel-restore' => 'عوض کن ظاهر بیگء',
+'pagehist' => 'تاریح صفحه',
+'deletedhist' => 'تاریح حذف بوت',
+'revdelete-content' => 'محتوا',
+'revdelete-summary' => 'خلاصه اصلاح',
+'revdelete-uname' => 'نام کاربری',
+'revdelete-restricted' => 'محدودیت آن په مدیران سیستم بوت',
+'revdelete-unrestricted' => 'به زور چه مدیران سیستم محدودیتان',
+'revdelete-hid' => 'پناه $1',
+'revdelete-unhid' => ' $1پنهاه مکن',
+'revdelete-log-message' => '$1 په $2 {{PLURAL:$2|بازبینی|بازبینی ان}}',
+'logdelete-log-message' => '$1 په $2 {{PLURAL:$2|رویداد|رویدادان}}',
+'revdelete-edit-reasonlist' => 'اصلاح دلایل حذف',
# Suppression log
'suppressionlog' => 'آمار توقیف',
@@ -971,67 +975,13 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'mergelogpagetext' => 'جهلء یک لیست چه نوکترین چن وبندان یکی تاریح صفحه په دگری هست.',
# Diffs
-'history-title' => 'تاریح بازبینی "$1"',
-'difference' => '(تفاوتان بین نسخه یان)',
-'lineno' => 'خط$1:',
-'compareselectedversions' => 'مقایسه انتخاب بوتگین نسخه یان',
-'visualcomparison' => 'مقایسه تصویری',
-'wikicodecomparison' => 'مقایسه متن ویکی',
-'editundo' => 'خنثی کتن',
-'diff-multi' => '({{PLURAL:$1|یک متوسطین بازبینیان میانی}} پیش دارگ نه بیت .)',
-'diff-movedto' => 'جاه په جاه په $1',
-'diff-styleadded' => 'استایل $1 هور بوت',
-'diff-added' => 'هوربوت $1',
-'diff-changedto' => '$1 عوض بوت په',
-'diff-movedoutof' => 'جاه په جاه بوت چه $1',
-'diff-styleremoved' => 'استایل $1 زورگ بوت',
-'diff-removed' => 'زورگ بوت $1',
-'diff-changedfrom' => '$1 عوض بوتت چه طرف',
-'diff-src' => 'منبع',
-'diff-withdestination' => '$1 گون مقصدء',
-'diff-with' => '&#32;گون $1 $2',
-'diff-with-final' => '&#32;و $1 $2',
-'diff-width' => 'پهنات',
-'diff-height' => 'بلندی',
-'diff-p' => "یک '''پاراگراف'''",
-'diff-blockquote' => "یک '''نقل'''",
-'diff-h1' => "یک '''عنوانی (سطح ۱)'''",
-'diff-h2' => "یک '''عنوانی (سطح ۲)'''",
-'diff-h3' => "یک '''عنوانی (سطح ۳)'''",
-'diff-h4' => "یک '''عنوانی (سطح ۴)'''",
-'diff-h5' => "یک '''عنوانی (سطح ۵)'''",
-'diff-pre' => "یک '''پیش فرمتی بلوک'''",
-'diff-div' => "یک '''بخشی'''",
-'diff-ul' => "یک '''لیست بی ترتییبن'''",
-'diff-ol' => "یک '''مرتبین لیست'''",
-'diff-li' => "یک '''ایتم لیست'''",
-'diff-table' => "یک '''جدول'''",
-'diff-tbody' => "یک '''جدول محتواء'''",
-'diff-tr' => "یک '''ردیف'''",
-'diff-td' => "یک '''سلول'''",
-'diff-th' => "یک '''عنوان'''",
-'diff-br' => "یک '''پروش'''",
-'diff-hr' => "یک ''' خظ افقی'''",
-'diff-code' => "یک ''' بلوک کد کامپیوتری'''",
-'diff-dl' => "یک ''' لیست تعریفی'''",
-'diff-dt' => "یک ''' تعریف موضوعء'''",
-'diff-dd' => "یک '''تعریف'''",
-'diff-input' => "یک '''ورودی'''",
-'diff-form' => "یک '''فرم'''",
-'diff-img' => "یک '''عکس'''",
-'diff-span' => "یک '''فاصلهء'''",
-'diff-a' => "یک '''لینکی'''",
-'diff-i' => "'''ایتالیکی'''",
-'diff-b' => "'''پررنگ'''",
-'diff-strong' => "'''پرزور'''",
-'diff-em' => "'''تاکید'''",
-'diff-font' => "'''فونت'''",
-'diff-big' => "'''مزن'''",
-'diff-del' => "'''حذفی'''",
-'diff-tt' => "'''پهنات ثابت'''",
-'diff-sub' => "'''چیر‌اسکریپت'''",
-'diff-sup' => "'''سوپر‌اسکریپت'''",
-'diff-strike' => "'''حمله چه'''",
+'history-title' => 'تاریح بازبینی "$1"',
+'difference' => '(تفاوتان بین نسخه یان)',
+'lineno' => 'خط$1:',
+'compareselectedversions' => 'مقایسه انتخاب بوتگین نسخه یان',
+'showhideselectedversions' => 'نمایش/پنهان کتن نسخ انتخابی',
+'editundo' => 'خنثی کتن',
+'diff-multi' => '({{PLURAL:$1|یک متوسطین بازبینیان میانی}} پیش دارگ نه بیت .)',
# Search results
'searchresults' => 'نتایج گردگ',
@@ -1039,29 +989,25 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'searchresulttext' => 'په گیشترین اطلاعات گردگ باره {{SITENAME}}، بچار [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'شما گردگیت په \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|کل صفحات شروع بنت گون "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|کل صفحات که لینک انت په "$1"]])',
'searchsubtitleinvalid' => "شما گردگیت په '''$1'''",
-'noexactmatch' => "'''صفحه ی گون عنوان نیست\"\$1\".'''
-شما تونیت [[:\$1|ای صفحه ی شرکنیت]].",
-'noexactmatch-nocreate' => "'''.هچ صفحه ای تحت عنوان \"\$1\" نیست'''",
'toomanymatches' => 'بازگین هم دپ درگیزگ بوت، لطفا یک متفاوتین درخواست آزمایش کنیت',
'titlematches' => 'عنوان صفحه هم دپ نت',
'notitlematches' => 'هچ عنوان صفحه هم دپ نهنت',
'textmatches' => 'متن صفحه هم دپ بنت',
'notextmatches' => 'هچ متن صفحه هم دپ نهنت',
-'prevn' => 'پیشگین $1',
-'nextn' => 'بعدی $1',
+'prevn' => 'پیشگین {{PLURAL:$1|$1}}',
+'nextn' => 'بعدی {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} پیشگین',
'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} دگه',
'shown-title' => 'پیش دار $1 {{PLURAL:$1|نتیجه|نتیجه}} ته هر صفحه',
-'viewprevnext' => '($1) ($2) ($3) دیدگ',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) دیدگ',
'searchmenu-legend' => 'گزینه یان گردگ',
'searchmenu-exists' => "'''صفحه گون نام \"[[\$1]]\" ته ای ویکی نیستن'''",
'searchmenu-new' => "'''شر کن صفحه ای \"[[:\$1]]\" ته ای ویکی!'''",
'searchhelp-url' => 'Help:محتوا',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|بروز صفحات گون پیش وند]]',
-'searchprofile-articles' => 'محتوای صفحات',
-'searchprofile-articles-and-proj' => 'محتوایی و پروژه ای صفحات',
-'searchprofile-project' => 'صفحات پروژه',
-'searchprofile-images' => 'فایلان',
+'searchprofile-articles' => 'صفحات محتوا',
+'searchprofile-project' => 'کمک و صفحات پروژه ای',
+'searchprofile-images' => 'ملتیمدیا',
'searchprofile-everything' => 'هر چیز',
'searchprofile-advanced' => 'پیشرفتگین',
'searchprofile-articles-tooltip' => 'گردگ ته $1',
@@ -1069,8 +1015,6 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'searchprofile-images-tooltip' => 'گردگ په فایلان ته',
'searchprofile-everything-tooltip' => 'گردگ په کل محتوا (هور گون صفحات گپ)',
'searchprofile-advanced-tooltip' => 'گردگ ته نام فضایان دل واه',
-'prefs-search-nsdefault' => 'گردگ گون پیش فرضان:',
-'prefs-search-nscustom' => 'گردگ نام فضایان دل واه:',
'search-result-size' => '$1 ({{PLURAL:$2|1کلمه|$2 کلمات}})',
'search-result-score' => 'ربط: $1%',
'search-redirect' => '(غیر مستقیم $1 )',
@@ -1083,11 +1027,12 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'search-mwsuggest-disabled' => 'هچ پیشنهاد',
'search-relatedarticle' => 'مربوطین',
'mwsuggest-disable' => 'پیشنهادات آژاکسیء غیر فعال کن',
+'searcheverything-enable' => 'گردگ ته کل فضانامان',
'searchrelated' => 'مربوط',
'searchall' => 'کل',
'showingresults' => "جهل پیش دارگنت تا {{PLURAL:$1|'''1'''نتیجه|'''$1''' نتایج}} شروع بنت گون #'''$2'''.",
'showingresultsnum' => "جهل پیش داریت {{PLURAL:$3|'''1''' نتیجه|'''$3''' نتایج}} شروع بیت گون #'''$2'''.",
-'showingresultstotal' => "جهل پیش داریت {{PLURAL:$4|نتیجه '''$1''' چه '''$3'''|نتایج '''$1 - $2''' چه '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|نتیجه '''$1''' چه '''$3'''|نتایج '''$1 - $2''' چه '''$3'''}} په '''$4'''",
'nonefound' => "'''توجه''': فقط لهتی نام فضا په طور پیش فرض گردگ بیتت. سعی کنیت وتی جوستء هور کنیت گون ''all:'' په گردگ په کل محتوا (شامل صفحات گپ، تمپلتان ودگر)، یا استفاده کنیت لوٹیگن نام فضا په داب پیش وند.",
'search-nonefound' => 'نتیجه هم دپ په درخواست نیست',
'powersearch' => 'پیشرپتگی گردگ',
@@ -1095,97 +1040,127 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'powersearch-ns' => 'گردگ ته نام فضا آن',
'powersearch-redir' => 'لیست عیرمستقیم آن',
'powersearch-field' => 'گردگ په',
+'powersearch-togglelabel' => 'کنترل:',
+'powersearch-toggleall' => 'کل',
+'powersearch-togglenone' => 'هچ یک',
'search-external' => 'حارجی گردگ',
'searchdisabled' => '{{SITENAME}} گردگ غیر فعالنت.
شما نونیت بگردیت چه طرق گوگل هم زمان.
توجه که اندیکس آن {{SITENAME}} محتوا شاید تاریح گوستگین بنت.',
+# Quickbar
+'qbsettings' => 'میله سریع',
+'qbsettings-none' => 'هچ یک',
+'qbsettings-fixedleft' => 'چپ ثابت',
+'qbsettings-fixedright' => 'راست ثابت',
+'qbsettings-floatingleft' => 'چپ شناور',
+'qbsettings-floatingright' => 'راست شناور',
+
# Preferences page
-'preferences' => 'ترجیحات',
-'mypreferences' => 'منی ترجیحات',
-'prefs-edits' => 'تعداد اصلاحات:',
-'prefsnologin' => 'وارد نهیت',
-'prefsnologintext' => 'شما بایدن <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} وارد بیت]</span> په تنظیم کتن ترجیحات.',
-'prefsreset' => 'ترجیحات چه ذخیره ترینگ بوتنت.',
-'qbsettings' => 'میله سریع',
-'qbsettings-none' => 'هچ یک',
-'qbsettings-fixedleft' => 'چپ ثابت',
-'qbsettings-fixedright' => 'راست ثابت',
-'qbsettings-floatingleft' => 'چپ شناور',
-'qbsettings-floatingright' => 'راست شناور',
-'changepassword' => 'کلمه رمز عوض کن',
-'skin' => 'پوست',
-'skin-preview' => 'بازین',
-'math' => 'ریاضی',
-'dateformat' => 'فرم تاریح',
-'datedefault' => 'هچ ترجیح',
-'datetime' => 'تاریح و وهد',
-'math_failure' => 'تجزیه پروش وارت',
-'math_unknown_error' => 'ناشناسین حطا',
-'math_unknown_function' => 'ناشناس عملگر',
-'math_lexing_error' => 'حطا نوشتاری',
-'math_syntax_error' => 'حطا ساختار',
-'math_image_error' => 'بدل کتن PNGپروش وارت;
-کنترل کنیت په نصب latex, dvips, gs, و convert',
-'math_bad_tmpdir' => 'نه نونیت بنویسیت یا مسیر غیر دایمی ریاضی شرکنت',
-'math_bad_output' => 'نه تونیت بنویسیت یا مشیر خروجی ریاضی شرکنت.',
-'math_notexvc' => 'ترکیب کتن texvc قابل اجرا;
-لطفا بچار math/README په تنظیم کتن.',
-'prefs-personal' => 'نمایه کاربر',
-'prefs-rc' => 'نوکین تغییرات',
-'prefs-watchlist' => 'لیست چارگ',
-'prefs-watchlist-days' => 'روچان په پیش دارگ ته لیست چارگ',
-'prefs-watchlist-days-max' => '(حداکثر ۷ روچ)',
-'prefs-watchlist-edits' => 'گشیترین تعداد تغییرات په پیشدارگ ته پچین لیست چارگ:',
-'prefs-watchlist-edits-max' => '(گیشترین تعداد: ۱۰۰۰)',
-'prefs-misc' => 'هردابین',
-'prefs-resetpass' => 'عوض کتن کلمه رمز',
-'saveprefs' => 'ذخیره',
-'resetprefs' => 'پاکن تغییرات ذخیره نه بوتگین',
-'restoreprefs' => 'کل پیش فرضین تنظیمات برگردین',
-'textboxsize' => 'اصلاح',
-'prefs-edit-boxsize' => 'حد پنجره اصلاح.',
-'rows' => 'ردیفآن«',
-'columns' => 'ستون‌ان:',
-'searchresultshead' => 'گردگ',
-'resultsperpage' => 'کلیک ته هر صفحه:',
-'contextlines' => 'خطوط در کلیک:',
-'contextchars' => 'متن در خط:',
-'stub-threshold' => 'سرحد په <a href="#" class="stub">چنڈ لینک</a> فرمت (بایت):',
-'recentchangesdays' => 'روچ ان به پیش دارگ ته نوکیت تغییرات:',
-'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روچ|روچ}})',
-'recentchangescount' => 'تعداد اصلاحات به پیش دارگ ته نوکین تغییرات , تاریح صفحات و ته سیاهگ به طور پیش فرض :',
-'savedprefs' => 'شمی ترجیحات ذخیره بوتن',
-'timezonelegend' => 'وهد ملک:',
-'timezonetext' => '¹تعداد ساعاتی که شمی ملکی وهد چه زمان سرور فرق کنت (UTC).',
-'localtime' => 'ملکی وهد:',
-'timezoneselect' => 'منطقه وهد:',
-'timezoneuseserverdefault' => 'چه پیش فرضین سرور استفاده کن',
-'timezoneuseoffset' => 'دگر (اختلاف ءَ مشخص کنیت)',
-'timezoneoffset' => 'اختلاف¹:',
-'servertime' => 'وهد سرور:',
-'guesstimezone' => 'پرکن چه بروزر',
-'timezoneregion-africa' => 'افریکا',
-'timezoneregion-america' => 'امریکا',
-'timezoneregion-antarctica' => 'جنوبی قطب',
-'timezoneregion-arctic' => 'شمالی قطب',
-'timezoneregion-asia' => 'اسیا',
-'timezoneregion-atlantic' => 'اقیانوس اطلس',
-'timezoneregion-australia' => 'استرالیا',
-'timezoneregion-europe' => 'اروپا',
-'timezoneregion-indian' => 'اقیانوس هند',
-'timezoneregion-pacific' => 'اقیانوس آرام',
-'allowemail' => 'فعال کن ایمیل چه دگه کابران',
-'prefs-searchoptions' => 'گردگ انتخابان',
-'prefs-namespaces' => 'نام فصا',
-'defaultns' => 'گردگ ته ای نام فضا آن په طور پیش فرض:',
-'default' => 'پیش فرض',
-'files' => 'فایلان',
-'prefs-custom-css' => 'رسمی سی‌اس‌اس',
-'prefs-custom-js' => 'رسمی جی‌اس',
+'preferences' => 'ترجیحات',
+'mypreferences' => 'منی ترجیحات',
+'prefs-edits' => 'تعداد اصلاحات:',
+'prefsnologin' => 'وارد نهیت',
+'prefsnologintext' => 'شما بایدن <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} وارد بیت]</span> په تنظیم کتن ترجیحات.',
+'changepassword' => 'کلمه رمز عوض کن',
+'prefs-skin' => 'پوست',
+'skin-preview' => 'بازین',
+'prefs-math' => 'ریاضی',
+'datedefault' => 'هچ ترجیح',
+'prefs-datetime' => 'تاریح و وهد',
+'prefs-personal' => 'نمایه کاربر',
+'prefs-rc' => 'نوکین تغییرات',
+'prefs-watchlist' => 'لیست چارگ',
+'prefs-watchlist-days' => 'روچان په پیش دارگ ته لیست چارگ',
+'prefs-watchlist-days-max' => '(حداکثر ۷ روچ)',
+'prefs-watchlist-edits' => 'گشیترین تعداد تغییرات په پیشدارگ ته پچین لیست چارگ:',
+'prefs-watchlist-edits-max' => '(گیشترین تعداد: ۱۰۰۰)',
+'prefs-misc' => 'هردابین',
+'prefs-resetpass' => 'عوض کتن کلمه رمز',
+'prefs-email' => 'گزینه یان ایمیل:',
+'prefs-rendering' => 'شکل صفحه',
+'saveprefs' => 'ذخیره',
+'resetprefs' => 'پاکن تغییرات ذخیره نه بوتگین',
+'restoreprefs' => 'کل پیش فرضین تنظیمات برگردین',
+'prefs-editing' => 'اصلاح',
+'prefs-edit-boxsize' => 'حد پنجره اصلاح.',
+'rows' => 'ردیفآن«',
+'columns' => 'ستون‌ان:',
+'searchresultshead' => 'گردگ',
+'resultsperpage' => 'کلیک ته هر صفحه:',
+'contextlines' => 'خطوط در کلیک:',
+'contextchars' => 'متن در خط:',
+'stub-threshold' => 'سرحد په <a href="#" class="stub">چنڈ لینک</a> فرمت (بایت):',
+'recentchangesdays' => 'روچ ان به پیش دارگ ته نوکیت تغییرات:',
+'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روچ|روچ}})',
+'recentchangescount' => 'تعداد اصلاحات به پیش دارگ به طور پیش فرض :',
+'prefs-help-recentchangescount' => 'شی هور گون نوکین تغییرات تاریح صفحات و سیاهگان انت.',
+'savedprefs' => 'شمی ترجیحات ذخیره بوتن',
+'timezonelegend' => 'وهد ملک:',
+'localtime' => 'ملکی وهد:',
+'timezoneuseserverdefault' => 'چه پیش فرضین سرور استفاده کن',
+'timezoneuseoffset' => 'دگر (اختلاف ءَ مشخص کنیت)',
+'timezoneoffset' => 'اختلاف¹:',
+'servertime' => 'وهد سرور:',
+'guesstimezone' => 'پرکن چه بروزر',
+'timezoneregion-africa' => 'افریکا',
+'timezoneregion-america' => 'امریکا',
+'timezoneregion-antarctica' => 'جنوبی قطب',
+'timezoneregion-arctic' => 'شمالی قطب',
+'timezoneregion-asia' => 'اسیا',
+'timezoneregion-atlantic' => 'اقیانوس اطلس',
+'timezoneregion-australia' => 'استرالیا',
+'timezoneregion-europe' => 'اروپا',
+'timezoneregion-indian' => 'اقیانوس هند',
+'timezoneregion-pacific' => 'اقیانوس آرام',
+'allowemail' => 'فعال کن ایمیل چه دگه کابران',
+'prefs-searchoptions' => 'گردگ انتخابان',
+'prefs-namespaces' => 'نام فصا',
+'defaultns' => 'گردگ ته ای نام فضا آن په طور پیش فرض:',
+'default' => 'پیش فرض',
+'prefs-files' => 'فایلان',
+'prefs-custom-css' => 'رسمی سی‌اس‌اس',
+'prefs-custom-js' => 'رسمی جی‌اس',
+'prefs-reset-intro' => 'شما توانت چه ای صفحه په واترینگ تنظیمات وت په پیش‌فرض استفاده کنیت. ای کار بازگشت‌ناپذیر انت.',
+'prefs-emailconfirm-label' => 'تایید کتن پست الکترونیک:',
+'prefs-textboxsize' => 'اندازه پنجره اصلاح',
+'youremail' => 'ایمیل:',
+'username' => 'نام کاربری:',
+'uid' => 'کاربر شناسگ:',
+'prefs-memberingroups' => 'عضو گروه {{PLURAL:$1|group|groups}}:',
+'prefs-registration' => 'ثبت نام وهد:',
+'yourrealname' => 'راستین نام:',
+'yourlanguage' => 'زبان:',
+'yourvariant' => 'مغایر:',
+'yournick' => 'امضا:',
+'badsig' => 'نامعتبرین حامین امضا تگان HTML چک کن',
+'badsiglength' => 'شمل امضا باز مزنتت.
+آی بایدن $1 {{PLURAL:$1|کارکاتر|کاراکتران}} مزن تر مبیت',
+'yourgender' => 'جنس:',
+'gender-unknown' => 'نامعلوم',
+'gender-male' => 'مردین',
+'gender-female' => 'جنین',
+'prefs-help-gender' => 'اختیاری: په خاطر توار کتن درست جنس گون برنامه استفاده بیت. ای اطلاعات بلکین عمومی ببنت.',
+'email' => 'ایمیل',
+'prefs-help-realname' => 'راستین نام اهتیاریتن. اگه شما یکی انتخاب کنیت شی په شمی کارء نشان هلگ په روت.',
+'prefs-help-email' => 'آدرس ایمیل اختیاری انت، بله اجازت دن که یک نوکین کلمه ی رمزی په شما دیم دهگ بیت وهدی که شما وتی رمزء شموشیت.
+شما هنچوش تونیت دگرانء اجازت بدهیت چه طریق شمی بحث_کاربر صفخه بی شی که وتی شناسگ پیش داریت تماس بگرنت.',
+'prefs-help-email-required' => 'آدرس ایمیل نیازنت.',
+'prefs-info' => 'اولگین اطلاعات',
+'prefs-i18n' => 'بین المللی کتن',
+'prefs-signature' => 'امضا',
+'prefs-dateformat' => 'تاریح داب',
+'prefs-timeoffset' => 'وهد بنگیج',
+'prefs-advancedediting' => 'پیشرفتگین گزینه',
+'prefs-advancedrc' => 'پیشرفتگین گزینه',
+'prefs-advancedrendering' => 'پیشرفتگین گزینه',
+'prefs-advancedsearchoptions' => 'پیشرفتگین گزینه',
+'prefs-advancedwatchlist' => 'پیشرفتگین گزینه',
+'prefs-display' => 'پیشدارگ گزینه هان',
+'prefs-diffs' => 'پرک',
# User rights
-'userrights' => 'مدیریت حقوق کاربر', # Not used as normal message but as header for the special page itself
+'userrights' => 'مدیریت حقوق کاربر',
'userrights-lookup-user' => 'مدیریت گروه کاربر',
'userrights-user-editname' => 'یک نام کاربری وارد کن',
'editusergroup' => 'اصلاح گروه کاربر',
@@ -1269,6 +1244,8 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'right-editprotected' => 'اصلاح کن محافظتی صفحات (بی حفاظت آبشاری)',
'right-editinterface' => 'دستبر کاربر اصلاح کن',
'right-editusercssjs' => 'دگر کابرانی فایلان CSS و JS اصلاح کن',
+'right-editusercss' => 'دگر کابرانی فایلان CSS اصلاح کن',
+'right-edituserjs' => 'دگر کابرانی فایلان JS اصلاح کن',
'right-rollback' => 'سریع برگردین اصلاحات آهری کاربر که یک بخصوصین صفحه ای اصلاح کتت.',
'right-markbotedits' => 'نشان کن اصلاحات برگشتی په داب اصلاحات روباتی',
'right-noratelimit' => 'تاثیر نهلیت گون محدودیاتان میزان',
@@ -1285,6 +1262,7 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'right-siteadmin' => 'کبل و پچ دیتابیس',
'right-reset-passwords' => 'کلمه رمز چه دگه کاربران ءَ عوض کن',
'right-override-export-depth' => 'درگیزگ صفحات گون صفحاتی لینک بوتگین ته سطح ۵',
+'right-versiondetail' => 'اطلاعات نسخه برنامه گیشترین پیشدار',
# User rights log
'rightslog' => 'ورودان حقوق کاربر',
@@ -1360,6 +1338,8 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
# Recent changes linked
'recentchangeslinked' => 'مربوطین تغییرات',
+'recentchangeslinked-feed' => 'مربوطین تغییرات',
+'recentchangeslinked-toolbox' => 'مربوطین تغییرات',
'recentchangeslinked-title' => 'تغییراتی مربوط په "$1"',
'recentchangeslinked-noresult' => 'هچ تغییری ته صفحات لینک بوتگین ته داتگین دوره نیست',
'recentchangeslinked-summary' => "شی یک لیستی چه تغییراتی هستنت که نوکی اعمال بوتگنت په صفحاتی که چه یک صفحه خاصی لینک بوته( یا په اعضای یک خاصین دسته).
@@ -1370,7 +1350,6 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
# Upload
'upload' => 'آپلود کتن فایل',
'uploadbtn' => 'آپلود فایل',
-'reupload' => 'دگه آپلود',
'reuploaddesc' => 'کنسل آپلودء و ترر په فرم آپلود',
'uploadnologin' => 'وارد نهیت',
'uploadnologintext' => 'شما بایدن [[Special:UserLogin|واردبیت]] په آپلود کتن فایل.',
@@ -1424,7 +1403,6 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
* نام فایلی که آپلود بیت: '''<tt>[[:$1]]</tt>'''
* نام هستین فایل:'''<tt>[[:$2]]</tt>'''
لطفا دگه نامی بزوریت.",
-'fileexists-thumb' => "<center>'''هستین فایل'''</center>",
'fileexists-thumbnail-yes' => "فایل به نظر رسیت که یک عکس هورد بوتگین اندازه انت. ''(پنچی انگشت)''. [[$1|thumb]]
لطفا فایل کنترل کن '''<tt>[[:$1]]</tt>'''.
اگر فایل کنترلی هما عکسنت گون اصلی اندازه لازم نهنت یک پنچ انگشتی گیشین آپلود کنیت.",
@@ -1446,8 +1424,6 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
'uploaddisabledtext' => 'آپلود فایل غیر فعال انت.',
'php-uploaddisabledtext' => 'آپلود کتن فایل ته پی‌اچ‌پی فعال نهنت. تنظیم file_uploads کنترل کنیت.',
'uploadscripted' => 'ای فایل شامل کد HTML یا اسکریپت انت که شاید گون وب بروزر اشتباهی وانگ بیت.',
-'uploadcorrupt' => 'ای فایل حرابنت یا اشتباهین بندی هست.
-لطفا فایل کتنرل کنیت و دگه آپلود کنیت.',
'uploadvirus' => 'فایل یک ویروسی داریتن! جزییات: $1',
'sourcefilename' => 'منبع نام فایل:',
'destfilename' => 'مقصد نام فایل',
@@ -1476,15 +1452,18 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'اشتباه پروتوکل',
-'upload-proto-error-text' => 'آپلود دراین نیاز په URL آنی داریت که شروع بیت گون <code>http://</code> یا <code>ftp://</code>.',
-'upload-file-error' => 'حطا درونی',
-'upload-file-error-text' => 'یک حطای درونی پیش اتک وهد شرکتن فایل موقت ته سرور.
+'upload-proto-error' => 'اشتباه پروتوکل',
+'upload-proto-error-text' => 'آپلود دراین نیاز په URL آنی داریت که شروع بیت گون <code>http://</code> یا <code>ftp://</code>.',
+'upload-file-error' => 'حطا درونی',
+'upload-file-error-text' => 'یک حطای درونی پیش اتک وهد شرکتن فایل موقت ته سرور.
لطفا گون یک [[Special:ListUsers/sysop|مدیر]].تماس گریت.',
-'upload-misc-error' => 'ناشناس حطا آپلود',
-'upload-misc-error-text' => 'یک ناشناسین حطا وهد آپلود کتن پیش آتک.
+'upload-misc-error' => 'ناشناس حطا آپلود',
+'upload-misc-error-text' => 'یک ناشناسین حطا وهد آپلود کتن پیش آتک.
لطفا تایید کنیت که URL معتبرانت و دسترسی بیت و دگه سعی کنیت.
اگر مشکل ادامه داشت، گون [[Special:ListUsers/sysop|مدیر]]ء تماس گریت.',
+'upload-too-many-redirects' => 'ای لینک بازگین غیرمستقیم ی هستن',
+'upload-unknown-size' => 'ناشناین اندازه',
+'upload-http-error' => 'یک ارور اچ‌تی‌تی‌پی پیش آتک : $1',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'نه تونیت په URL برسیت',
@@ -1496,6 +1475,7 @@ PICT # misc.
شاید شما یک وهد حلوت تری کوشش کنیت.',
'license' => 'لیسانس کنت:',
+'license-header' => 'لیسانس کنت:',
'nolicense' => 'هچ یک انتخاب نه بوتت',
'license-nopreview' => '(بازبین موجود نهنت)',
'upload_source_url' => '(یک متعبرین، عمومی دسترسی انت URL)',
@@ -1516,6 +1496,7 @@ PICT # misc.
'listfiles_count' => 'نسخ',
# File description page
+'file-anchor-link' => 'فایل',
'filehist' => 'تاریح فایل',
'filehist-help' => 'اور تاریح/زمان کلیک کنیت دان فایلا په داب هما تاریح بگندیت',
'filehist-deleteall' => 'کل حذف',
@@ -1530,6 +1511,7 @@ PICT # misc.
'filehist-dimensions' => 'جنبه یان',
'filehist-filesize' => 'اندازه فایل',
'filehist-comment' => 'نظر',
+'filehist-missing' => 'گارین فایل',
'imagelinks' => 'لینک فایل',
'linkstoimage' => 'جهلیگین {{PLURAL:$1|صفحه |$1 صفحات لینک}} پی ای فایل',
'linkstoimage-more' => 'گیشتر چه $1 {{PLURAL:$1|صفحه لینکان|صفحات لینک}} پی ای فایل.
@@ -1539,15 +1521,16 @@ PICT # misc.
'morelinkstoimage' => 'View [[Special:WhatLinksHere/$1|گیشتر لینکان]]به ای فایل',
'redirectstofile' => 'جهلیگین {{PLURAL:$1|فایل غیر مستقیم بنت|$1 فایلان غیر مستقیم بنت.}} به ای فایل',
'duplicatesoffile' => 'جهلیگین {{PLURAL:$1|فایل یک کپی انت|$2 فایلان کپی انت}} چه هی فایل ([[Special:FileDuplicateSearch/$2|گیشترین اطلاعات]]):',
-'sharedupload' => 'ای فایل چه $1 انت و شاید گون دگه پروژه یان استفاده بیت.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'لطفا بجار $1 په گیشترین اطلاعات',
-'shareduploadwiki-desc' => 'توضیح $1 ای جهل پیش دارگ بیت.',
-'shareduploadwiki-linktext' => 'صفحه توضیح فایل',
-'noimage' => 'چوشین فایل گون ای نام نیست، بله شما تونیت $1',
-'noimage-linktext' => 'یکیء آپلود کن',
+'sharedupload' => 'ای فایل چه $1 انت و شاید گون دگه پروژه یان استفاده بیت.',
+'sharedupload-desc-there' => 'ای پرونده در $1 انت و ممکن انت ته دگه پروژه‌ها هم استفاده ببیت.
+په اطلاعات گیشتذ لطفاً [$2 صفحهٔ توضیحات پرونده] را بچاریت.',
+'sharedupload-desc-here' => 'ای پرونده ته $1 هستن و ممکن انت ته دگه پروژه‌هان هم استفاده ببیت.
+توضیحات موجود ته [$2 صفحهٔ توضیحات پرونده] ته ادان،جهل پیش دارگ بنت.',
+'filepage-nofile' => 'هچ فایلی گون ای نام نیستن',
+'filepage-nofile-link' => 'هی فایلی گوپن ای نام نیستن، بله شما تونیت [آی ءَ $1 بار کنیت]',
'uploadnewversion-linktext' => 'یک نوکین نسخه ای چه ای فایل آپلود کن',
-'shared-repo-from' => 'چه $1', # $1 is the repository name
-'shared-repo' => 'هورین مخزن', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'چه $1',
+'shared-repo' => 'هورین مخزن',
# File reversion
'filerevert' => 'ترین $1',
@@ -1637,8 +1620,8 @@ PICT # misc.
'brokenredirects' => 'پروشتگین غیر مستقیمان',
'brokenredirectstext' => 'جهلیگین غیر مستقیم لینک بوتگن په صفحات نیستن:',
-'brokenredirects-edit' => '(اصلاح)',
-'brokenredirects-delete' => '(حذف)',
+'brokenredirects-edit' => 'اصلاح',
+'brokenredirects-delete' => 'حذف',
'withoutinterwiki' => 'صفحاتی بی لینکان زبان',
'withoutinterwiki-summary' => 'جهلیگین صفحات په دگه نسخه آن زبان لینک نه بوتت:',
@@ -1746,16 +1729,17 @@ PICT # misc.
# Special:Categories
'categories' => 'دسته یان',
-'categoriespagetext' => 'جهلیگین دسته جات شامل صفحات یا مدیا انت
+'categoriespagetext' => 'جهلیگین {{PLURAL:$1|دسته شامل|دسته جات شامل}} صفحات یا مدیا انت
[[Special:UnusedCategories|دسته جات بی استفاده]] ادان پیشدارگ نه بنت.
- هنچوش بچار[[Special:WantedCategories|wanted categories]].',
+ هنچوش بچار[[Special:WantedCategories|لوٹتگین دسته]].',
'categoriesfrom' => 'پیشدار دسته جات که شروع بنت گون:',
'special-categories-sort-count' => 'ترتیب په اساس شمار',
'special-categories-sort-abc' => 'ترتیب الفبی',
# Special:DeletedContributions
-'deletedcontributions' => 'مشارکتان کابر حذف بوتء',
-'deletedcontributions-title' => 'مشارکتان کابر حذف بوتء',
+'deletedcontributions' => 'مشارکتان کابر حذف بوتء',
+'deletedcontributions-title' => 'مشارکتان کابر حذف بوتء',
+'sp-deletedcontributions-contribs' => 'مشارکتان',
# Special:LinkSearch
'linksearch' => 'دراین لینک ان',
@@ -1771,6 +1755,13 @@ PICT # misc.
'listusersfrom' => 'پیشدار کابرانی که شروع بنت گون:',
'listusers-submit' => 'پیش دار',
'listusers-noresult' => 'هچ کابری در گیزگ نه بوت.',
+'listusers-blocked' => '(بند بیتگ)',
+
+# Special:ActiveUsers
+'activeusers' => 'لیست کاربران فعال',
+'activeusers-count' => '$1 {{PLURAL:$1|اصلاح|اصلاح}} نوکین',
+'activeusers-from' => 'پیشدار کاربرانی که شروع بنت گون :‌',
+'activeusers-noresult' => 'هچ کاربری درگیزگ نه بیت',
# Special:Log/newusers
'newuserlogpage' => 'ورود شرکتن کاربر',
@@ -1781,17 +1772,23 @@ PICT # misc.
'newuserlog-autocreate-entry' => 'حساب اتوماتیکی شربوت',
# Special:ListGroupRights
-'listgrouprights' => 'حقوق گروه کاربر',
-'listgrouprights-summary' => 'جهلیگین یک لیستی چه گروهان کاربری تعریف بوتگین ته ای ویکی انت گون آیانی حق دسترسی آن همراهنت.
+'listgrouprights' => 'حقوق گروه کاربر',
+'listgrouprights-summary' => 'جهلیگین یک لیستی چه گروهان کاربری تعریف بوتگین ته ای ویکی انت گون آیانی حق دسترسی آن همراهنت.
درباره هر حقی ته صفحه [[{{MediaWiki:Listgrouprights-helppage}}|گیشترین اطلاعات]] هستن.',
-'listgrouprights-group' => 'گروه',
-'listgrouprights-rights' => 'حقوق',
-'listgrouprights-helppage' => 'Help: حقوق گروه',
-'listgrouprights-members' => '(لیست اعضا)',
-'listgrouprights-addgroup' => 'تونیت اضافه کنت {{PLURAL:$2|گروه|گروهان}}: $1',
-'listgrouprights-removegroup' => 'تونیت بزوریت {{PLURAL:$2|گروهء|گروهانء}}: $1',
-'listgrouprights-addgroup-all' => 'تونیت کل گروهان اضافه کنت',
-'listgrouprights-removegroup-all' => 'تونیت کل گروهانء بزوریت',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">اختیارات داتگین</span>
+* <span class="listgrouprights-revoked">اختیارات گپتگین</span>',
+'listgrouprights-group' => 'گروه',
+'listgrouprights-rights' => 'حقوق',
+'listgrouprights-helppage' => 'Help: حقوق گروه',
+'listgrouprights-members' => '(لیست اعضا)',
+'listgrouprights-addgroup' => 'تونیت اضافه کنت {{PLURAL:$2|گروه|گروهان}}: $1',
+'listgrouprights-removegroup' => 'تونیت بزوریت {{PLURAL:$2|گروهء|گروهانء}}: $1',
+'listgrouprights-addgroup-all' => 'تونیت کل گروهان اضافه کنت',
+'listgrouprights-removegroup-all' => 'تونیت کل گروهانء بزوریت',
+'listgrouprights-addgroup-self' => 'توینت {{PLURAL:$2|گروه|گروهان}} په وتی حساب اضافه کن: $1',
+'listgrouprights-removegroup-self' => 'تونیت {{PLURAL:$2|گروه|گروهان}} چه وتی حساب بزوریت: $1',
+'listgrouprights-addgroup-self-all' => 'نونیت کل گروهان په وتی حساب هور کنت',
+'listgrouprights-removegroup-self-all' => 'تونیت کل گروه ان چه وتی حساب بزوریت',
# E-mail user
'mailnologin' => 'هچ آدرس دیم دهگ',
@@ -1882,7 +1879,7 @@ $NEWPAGE
--
په عوض کتن تنظیمات وتی لیست چارگ،به چار
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
نظرات و گیشترین کمک:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1900,6 +1897,7 @@ $NEWPAGE
'confirmdeletetext' => 'شما لوٹیت یک صفحه ای گون کل تاریحانی حذف کنیت.
لطفا تایید کنیت که شما چوش کنیت که شما زانیت آی ء عاقبتانآ و شی که شما ای کارآ گون [[{{MediaWiki:Policy-url}}|سیاست]] انجام دهیت',
'actioncomplete' => 'کار انجام بیت',
+'actionfailed' => 'عمل پروش وارت',
'deletedtext' => '"<nowiki>$1</nowiki>" حذف بیت.
بگندیت $2 په ثبتی که نوکین حذفیات',
'deletedarticle' => 'حذف بوت "[[$1]]"',
@@ -1933,8 +1931,8 @@ $NEWPAGE
یکی دگه پیش تر صفحهء اصلاح کتت یا بری گردینت.
آهری اصلاح توسط [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "خلاصه اصلاح ات:\"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'ترینت اصلاحات توسط [[Special:Contributions/$2|$2]] ([[User talk:$2|گپ کن]])په آهری بازبینی گون [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "خلاصه اصلاح ات:\"''\$1''\".",
+'revertpage' => 'ترینت اصلاحات توسط [[Special:Contributions/$2|$2]] ([[User talk:$2|گپ کن]])په آهری بازبینی گون [[User:$1|$1]]',
'rollback-success' => 'اصلاحات ترینگ بوتت گون $1;
په آهری نسخه ترینگ بوتنت گون $2.',
'sessionfailure' => 'چوش جاه کیت که گون شمی نند وارد بییگ مشکلی هست;
@@ -1956,7 +1954,6 @@ $NEWPAGE
'protectexpiry' => 'منقضی بیت:',
'protect_expiry_invalid' => 'تاریح انقضای معتبر نهنت.',
'protect_expiry_old' => 'تاریخ انقصا ته گذشته انت.',
-'protect-unchain' => 'اجازه یان جاه په جاهی پچ کن',
'protect-text' => "شما شاید ادان سطح حفاظت بگندیت و تغییر دیهت په صفحه '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "شما نه تونیت سطوح حفاظت وهدی مه محدود انت عوض کنیت.
ادان تنظیمات هنوی په صفحه است'''$1''':",
@@ -1986,7 +1983,7 @@ $NEWPAGE
** اخطار هرابین اصلاح
** مزنین ترافیکی صفحه',
'protect-edit-reasonlist' => 'اصلاح دلایل حفاظت',
-'protect-expiry-options' => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
'restriction-type' => 'اجازت',
'restriction-level' => 'سطح محدود',
'minimum-size' => 'هوردی اندازه',
@@ -2028,6 +2025,7 @@ $NEWPAGE
'undelete-nodiff' => 'هچ پیشگین بازبینی درگیزگ نه بوت.',
'undeletebtn' => 'باز گردینگ',
'undeletelink' => 'بچار/واتر',
+'undeleteviewlink' => 'پیشدارگ',
'undeletereset' => 'برگردینگ',
'undeleteinvert' => 'چپکایگ کتن انتخاب',
'undeletecomment' => 'نظر:',
@@ -2067,7 +2065,7 @@ $1',
'contributions-title' => 'مشارکتان کاربر په $1',
'mycontris' => 'می مشارکتان',
'contribsub2' => 'په $1 ($2)',
-'nocontribs' => 'هچ تغییر هم دپ گون ای معیار در نه بوت.', # Optional parameter: $1 is the user name
+'nocontribs' => 'هچ تغییر هم دپ گون ای معیار در نه بوت.',
'uctop' => '(بالا)',
'month' => 'چه ماه(و پیش تر):',
'year' => 'چه سال(و پیشتر)',
@@ -2076,7 +2074,10 @@ $1',
'sp-contributions-newbies-sub' => 'په نوکین حسابان',
'sp-contributions-newbies-title' => 'مشارکتان کاربر په نوکین حسابان',
'sp-contributions-blocklog' => 'محدود کتن ورود',
+'sp-contributions-deleted' => 'مشارکتان حذف بوتءِ کاربر',
'sp-contributions-logs' => 'سیاهگ',
+'sp-contributions-talk' => 'گپ',
+'sp-contributions-userrights' => 'مدیریت کاربرنی حق',
'sp-contributions-search' => 'گردگ په مشارکتان',
'sp-contributions-username' => 'آدرس آی پی یا نام کاربری',
'sp-contributions-submit' => 'گردگ',
@@ -2125,7 +2126,7 @@ $1',
'ipbenableautoblock' => 'اتوماتیکی اهری آدرس آی پی که گون ای کاربر استفاده بوتت محدود کن، و هر چی زیر آی پی هست که سعی کننت اصلاح کننت',
'ipbsubmit' => 'ای کاربرء محدود کن',
'ipbother' => 'دگر وهد:',
-'ipboptions' => '۲ ساعت:2 hours,۱ روچ:1 day,۳ روچ:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌‌حد:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '۲ ساعت:2 hours,۱ روچ:1 day,۳ روچ:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌‌حد:infinite',
'ipbotheroption' => 'دگر',
'ipbotherreason' => 'دگر/اضافی ان دلیل:',
'ipbhidename' => 'پناه کن نام کاربری چه اصلاحات و لیستان',
@@ -2156,7 +2157,7 @@ $1',
'ipblocklist-submit' => 'گردگ',
'blocklistline' => '$1, $2محدود انت $3 ($4)',
'infiniteblock' => 'بی حد',
-'expiringblock' => 'منقضی بوت $1',
+'expiringblock' => 'منقضی بوت $1 $2',
'anononlyblock' => 'فقط ناش',
'noautoblockblock' => 'اتوماتیکی محدودی غیر فعال',
'createaccountblock' => 'شرکتن حساب محدود انت',
@@ -2171,7 +2172,6 @@ $1',
'autoblocker' => 'اتوماتیک کبلت په چی که شمی آدرس آی پی نوکی استفاده بوتت گون "[[User:$1|$1]]".
داتگین دلیل په محدود کتن $1 شی انت: "$2"',
'blocklogpage' => 'بلاک ورود',
-'blocklog-fulllog' => 'کاملین آمار محدودیت',
'blocklogentry' => 'محدود بوته [[$1]] گون یک زمان انقاضای $2 $3',
'reblock-logentry' => 'تنظیم‌های بندکتن دسترسی [[$1]] را تغییر داتگت به هلگ بند کتن دسترسی ته $2 ساعت $3',
'blocklogtext' => 'شی یک آماری چه کاران محدود و رفع محدودیت چه ای کاربر انت.
@@ -2258,7 +2258,7 @@ $1',
'move-watch' => 'این صفحه یا بچار',
'movepagebtn' => 'جاه په جاه کن صفحه',
'pagemovedsub' => 'جاه په جاهی موفقیت بود',
-'movepage-moved' => '\'\'\'"$1" جاه په اجه بوت په"$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" جاه په اجه بوت په"$2"\'\'\'',
'movepage-moved-redirect' => 'یک غیر مستقیمی شر بوت',
'movepage-moved-noredirect' => 'شرکتن غیر مستقیم بند بوتگ.',
'articleexists' => 'صفحه گون آن نام پیش تر هستت، یا نامی که شما زورتت نامعتبرنت.
@@ -2302,6 +2302,8 @@ $1',
'imageinvalidfilename' => 'فایل عکس هدف نام معتبر انت',
'fix-double-redirects' => 'په روچ کتن هر غیر مستقیمی که په مقاله اصلی اشاره کنت',
'move-leave-redirect' => 'یک تغییر مسیر بل',
+'protectedpagemovewarning' => "'''هوژاری:''' ای صفحه کبل بوتت که فقط مدیران بتواننت آیءَ جاه په جاه کننت.",
+'semiprotectedpagemovewarning' => "'''توجه:''' ای صفحه کبل بوتت که فقط تثب نامی کاربران بتوانن آیءَ جاه په جاه کننت.",
# Export
'export' => 'خروج صفحات',
@@ -2324,15 +2326,21 @@ $1',
'export-pagelinks' => 'صفحاتی که لینک بیتگن تا این عمق هور بنت:',
# Namespace 8 related
-'allmessages' => 'پیامان سیستم',
-'allmessagesname' => 'نام',
-'allmessagesdefault' => 'پیش فرضین متن',
-'allmessagescurrent' => 'هنوکین متن',
-'allmessagestext' => 'شی یک لیستی چه کوله یان موجود ته نام فضای مدیا وی کی انت.
+'allmessages' => 'پیامان سیستم',
+'allmessagesname' => 'نام',
+'allmessagesdefault' => 'پیش فرضین متن',
+'allmessagescurrent' => 'هنوکین متن',
+'allmessagestext' => 'شی یک لیستی چه کوله یان موجود ته نام فضای مدیا وی کی انت.
لطفا بچاریت [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] و [http://translatewiki.net translatewiki.net] اگر شما لوٹیت ته ملکی کتن مدیا وی کی کمک کنیت.',
-'allmessagesnotsupportedDB' => "ای صفحه نه تونیت استفاده بیت په چی که'''\$wgUseDatabaseMessages''' غیر فعالنت.",
-'allmessagesfilter' => 'فیلتر نام کوله:',
-'allmessagesmodified' => 'فقط پیش دار تغییر دهگ بیتیگن',
+'allmessagesnotsupportedDB' => "ای صفحه نه تونیت استفاده بیت په چی که'''\$wgUseDatabaseMessages''' غیر فعالنت.",
+'allmessages-filter-legend' => 'فیلتر',
+'allmessages-filter' => 'فیلتر گون حالت دلواهی',
+'allmessages-filter-unmodified' => 'عوض نه بیتگین',
+'allmessages-filter-all' => 'کل',
+'allmessages-filter-modified' => 'عوض بیتگ',
+'allmessages-prefix' => 'فیلتر گون پیشوند:',
+'allmessages-language' => 'زبان:',
+'allmessages-filter-submit' => 'برو',
# Thumbnails
'thumbnail-more' => 'مزن',
@@ -2342,6 +2350,9 @@ $1',
'djvu_no_xml' => 'نه تونیت XML بیاریت په فایل DjVu',
'thumbnail_invalid_params' => 'نامعتبر پارامتران پنچ انگشتی',
'thumbnail_dest_directory' => 'نه تونیت شرکنت مسیر مقصدء',
+'thumbnail_image-type' => 'ای نوع عکس ساپورت نه بیتن',
+'thumbnail_gd-library' => 'ناقصین کتابخانه جی دی تنظیم : گارین عملگر $1',
+'thumbnail_image-missing' => 'فایل جاه کیت که گارن : $1',
# Special:Import
'import' => 'وارد کن صفحاتء',
@@ -2415,6 +2426,7 @@ $1',
'tooltip-search-fulltext' => 'گرد صفحات په ای متن',
'tooltip-p-logo' => 'صفحه اصلی',
'tooltip-n-mainpage' => 'صفحه اصلی بچار',
+'tooltip-n-mainpage-description' => 'دیستن صفحه اصلی',
'tooltip-n-portal' => 'پروژه ی باره: هرچی که شما تونیت انجام دهیت، جاهی که چیزانا درگیزیت',
'tooltip-n-currentevents' => 'در گیزگ اطلاعات پیش زمینه ته هنوکین رویدادآن',
'tooltip-n-recentchanges' => 'لیست نوکین تغییر ته وی کی',
@@ -2467,7 +2479,7 @@ $1',
# Attribution
'anonymous' => 'ناشناسین {{PLURAL:$1|کاربر|کاربران}} چه {{SITENAME}}',
'siteuser' => '{{SITENAME}} کاربر $1',
-'lastmodifiedatby' => 'ای صفحه اهری رندی که تغییر دهگ بیته $2, $1گون $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'ای صفحه اهری رندی که تغییر دهگ بیته $2, $1گون $3.',
'othercontribs' => 'براساس کار توسط $1.',
'others' => 'دگران',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|کاربر|کاربران}} $1',
@@ -2509,6 +2521,19 @@ $1',
'mw_math_modern' => 'په مدرنین بروزر آن توصیه بیت',
'mw_math_mathml' => 'MathML اگر ممکن انت (آزمایشی)',
+# Math errors
+'math_failure' => 'تجزیه پروش وارت',
+'math_unknown_error' => 'ناشناسین حطا',
+'math_unknown_function' => 'ناشناس عملگر',
+'math_lexing_error' => 'حطا نوشتاری',
+'math_syntax_error' => 'حطا ساختار',
+'math_image_error' => 'بدل کتن PNGپروش وارت;
+کنترل کنیت په نصب latex, dvips, gs, و convert',
+'math_bad_tmpdir' => 'نه نونیت بنویسیت یا مسیر غیر دایمی ریاضی شرکنت',
+'math_bad_output' => 'نه تونیت بنویسیت یا مشیر خروجی ریاضی شرکنت.',
+'math_notexvc' => 'ترکیب کتن texvc قابل اجرا;
+لطفا بچار math/README په تنظیم کتن.',
+
# Patrolling
'markaspatrolleddiff' => 'نشان کن په داب نظارت بوتگین',
'markaspatrolledtext' => 'ای صفحه نشان کن په داب نظارت بوتگین',
@@ -2543,12 +2568,9 @@ $1',
'previousdiff' => '← پیشگین اصلاح',
'nextdiff' => 'نوکترین اصلاح→',
-# Visual comparison
-'visual-comparison' => 'مقایسه تصویری',
-
# Media information
'mediawarning' => "''''هوژاری:'''' ای فایل شاید شامل بد واهین کد بوت،اجرای آیی ته وتی سیستم شاید توافقی بیت.",
-'imagemaxsize' => 'محدودیت تصاویر ته فایل صفحات توضیح ته:',
+'imagemaxsize' => "محدودیت تصاویر: <br />''(په صفحات توضیح فایل)''",
'thumbsize' => 'اندازه پیج انگشتی',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|صفحه|صفحات}}',
'file-info' => '(اندازه فایل: $1, مایم نوع: $2)',
@@ -2634,7 +2656,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'پهنات',
@@ -2767,14 +2789,14 @@ Variants for Chinese language
'exif-unknowndate' => 'ناشناس تاریح',
-'exif-orientation-1' => 'نرمال', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'چپ بیگ افقی', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'گردگ 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'چپ بیگ عمودی', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'چرحتن 90° ضد ساعت گرد و چپ بیگ عمودی', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'چرحتن 90° ساعت گرد', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'چرحتن 90° ساعت گرد و چپ بیگ عمودی', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'چرتن 90°ساعت گرد', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'نرمال',
+'exif-orientation-2' => 'چپ بیگ افقی',
+'exif-orientation-3' => 'گردگ 180°',
+'exif-orientation-4' => 'چپ بیگ عمودی',
+'exif-orientation-5' => 'چرحتن 90° ضد ساعت گرد و چپ بیگ عمودی',
+'exif-orientation-6' => 'چرحتن 90° ساعت گرد',
+'exif-orientation-7' => 'چرحتن 90° ساعت گرد و چپ بیگ عمودی',
+'exif-orientation-8' => 'چرتن 90°ساعت گرد',
'exif-planarconfiguration-1' => 'فرمتی چنکی',
'exif-planarconfiguration-2' => 'فرمت سطحی',
@@ -2913,7 +2935,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => 'اندازه گرگ 2-بعدی',
'exif-gpsmeasuremode-3' => 'اندازه گرگ 3-بعدی',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'کیلومتر ته ساعت',
'exif-gpsspeed-m' => 'مایل ته ساعت',
'exif-gpsspeed-n' => 'گرهنان',
@@ -3121,7 +3143,7 @@ $1',
'duplicate-defaultsort' => 'هژاری: ترتیب پیش فرض «$2» ترتیب پیش فرض پیشگین «$1» را باطل کنت.',
# Special:Version
-'version' => 'نسخه', # Not used as normal message but as header for the special page itself
+'version' => 'نسخه',
'version-extensions' => 'نصب بوتگیت الحاق آن',
'version-specialpages' => 'حاصین صفحات',
'version-parserhooks' => 'تجزیه کنوک گیر کت',
@@ -3135,7 +3157,7 @@ $1',
'version-skin-extension-functions' => 'عملگران الحاقی پوستک',
'version-hook-name' => 'نام گیر',
'version-hook-subscribedby' => 'اشتراک بیت گون',
-'version-version' => 'نسخه',
+'version-version' => '(نسخه $1)',
'version-license' => 'لیسانس',
'version-software' => 'نصبین برنامه',
'version-software-product' => 'محصول',
@@ -3215,4 +3237,15 @@ $1',
'dberr-outofdate' => 'توجه ببینت که می ایندکس محتواءَ بلکین قدیمی ببنت.',
'dberr-cachederror' => 'آ چیزی که رندا کیت یک کپی ذخیره ای چه لوتگین صفحه انت و بلکین قدیمی ببیت',
+# HTML forms
+'htmlform-invalid-input' => 'لهتی چه ورودی شما مشکل هست',
+'htmlform-select-badoption' => 'مقدار وارد بیتگ یک گزینهٔ قابل قبول نهنت.',
+'htmlform-int-invalid' => 'مقداری که وارد کرته اید یک عدد صحیح نهنت.',
+'htmlform-float-invalid' => 'ای چیزی که شما مشخص کتت یک شماره نهنت',
+'htmlform-int-toolow' => 'مقداری که وارد کرته اید کمتر چه $1 انت',
+'htmlform-int-toohigh' => 'مقداری که وارد کرته اید گیشتر چه $1 انت',
+'htmlform-submit' => 'دیم دی',
+'htmlform-reset' => 'ترینگ تغییرات',
+'htmlform-selectorother-other' => 'دگه',
+
);
diff --git a/languages/messages/MessagesBcl.php b/languages/messages/MessagesBcl.php
index 45676639..2cc87419 100644
--- a/languages/messages/MessagesBcl.php
+++ b/languages/messages/MessagesBcl.php
@@ -32,13 +32,13 @@ $namespaceNames = array(
);
$magicWords = array(
- 'currentmonth' => array( '1', 'BULANNGONYAN', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'BULANNGONYAN', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'NGARANBULANNGONYAN', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'ALDAWNGONYAN', 'CURRENTDAY' ),
'currentyear' => array( '1', 'TAONNGONYAN', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'PANAHONNGONYAN', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ORASNGONYAN', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'LOKALBULAN', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'LOKALBULAN', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'NGARANLOKALBULAN', 'LOCALMONTHNAME' ),
'localday' => array( '1', 'LOKALALDAW', 'LOCALDAY' ),
'localday2' => array( '1', 'LOKALALDAW2', 'LOCALDAY2' ),
@@ -198,7 +198,7 @@ $messages = array(
'category-media-header' => 'Media sa kategoryang "$1"',
'category-empty' => "''Mayò nin laog an kategoryang ini sa ngonyan.''",
'hidden-categories' => '{{PLURAL:$1|Nakatagong kategorya|Mga nakatagong kategorya}}',
-'hidden-category-category' => 'Mga nakatagong kategorya', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Mga nakatagong kategorya',
'category-subcat-count-limited' => 'Igwa nin {{PLURAL:$1|sub-kategorya|$1 mga sub-kategorya}} an artikulong ini.',
'category-article-count' => '{{PLURAL:$2|An mga minasunod na pahina sana an laog kan kategoryang ini|An mga minasunod na {{PLURAL:$1|pahina|$1 pahina}} an yaon sa kategoryang ini, sa $2 gabos.}}',
'category-article-count-limited' => 'Yaon sa presenteng kategorya an mga minasunod na {{PLURAL:$1|pahina|$1 pahina}}.',
@@ -213,10 +213,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Manonongod',
-'article' => 'Laog na pahina',
-'newwindow' => '(minabukas sa bàgong bintanà)',
-'cancel' => 'Pondohón',
+'about' => 'Manonongod',
+'article' => 'Laog na pahina',
+'newwindow' => '(minabukas sa bàgong bintanà)',
+'cancel' => 'Pondohón',
+'moredotdotdot' => 'Dakol pa...',
+'mypage' => 'An sakóng pahina',
+'mytalk' => 'An sakóng olay',
+'anontalk' => 'Olay para sa IP na ini',
+'navigation' => 'Nabigasyon',
+'and' => '&#32;asin',
+
+# Cologne Blue skin
'qbfind' => 'Hanápon',
'qbbrowse' => 'Maghalungkát',
'qbedit' => 'Hirahón',
@@ -224,15 +232,16 @@ $messages = array(
'qbpageinfo' => 'Konteksto',
'qbmyoptions' => 'Mga pahina ko',
'qbspecialpages' => 'Espesyal na mga pahina',
-'moredotdotdot' => 'Dakol pa...',
-'mypage' => 'An sakóng pahina',
-'mytalk' => 'An sakóng olay',
-'anontalk' => 'Olay para sa IP na ini',
-'navigation' => 'Nabigasyon',
-'and' => '&#32;asin',
+'faq' => 'HD',
+'faqpage' => 'Project:HD',
-# Metadata in edit box
-'metadata_help' => 'Mga Metadatos:',
+# Vector skin
+'vector-action-delete' => 'paráon',
+'vector-action-move' => 'Ibalyó',
+'vector-namespace-main' => 'Pahina',
+'vector-view-create' => 'Maggíbo',
+'vector-view-edit' => 'Liwatón',
+'vector-view-view' => 'Basáhon',
'errorpagetitle' => 'Salâ',
'returnto' => 'Magbwelta sa $1.',
@@ -282,7 +291,7 @@ $messages = array(
'otherlanguages' => 'Sa ibang mga tataramon',
'redirectedfrom' => '(Piglikay halì sa $1)',
'redirectpagesub' => 'Ilikáy an pahina',
-'lastmodifiedat' => 'Huring pigmodipikar an pahinang ini $2 kan $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Huring pigmodipikar an pahinang ini $2 kan $1.',
'viewcount' => 'Binukasán ining pahina nin {{PLURAL:$1|sarong beses|nin $1 beses}}.',
'protectedpage' => 'Protektadong pahina',
'jumpto' => 'Maglukso sa:',
@@ -293,7 +302,6 @@ $messages = array(
'aboutsite' => 'Manonongod sa {{SITENAME}}',
'aboutpage' => 'Project:Manonongod',
'copyright' => 'Makukua an laog sa $1.',
-'copyrightpagename' => '{{SITENAME}} derechos nin parásurat',
'copyrightpage' => '{{ns:project}}:Mga derechos nin parásurat',
'currentevents' => 'Mga panyayari sa ngonyan',
'currentevents-url' => 'Project:Mga panyayari sa ngonyan',
@@ -301,8 +309,6 @@ $messages = array(
'disclaimerpage' => 'Project:Heneral na renunsya',
'edithelp' => 'Paghirá kan pagtabang',
'edithelppage' => 'Help:Pagliwat',
-'faq' => 'HD',
-'faqpage' => 'Project:HD',
'helppage' => 'Help:Mga laog',
'mainpage' => 'Pangenot na Pahina',
'mainpage-description' => 'Pangenot na Pahina',
@@ -381,10 +387,6 @@ Ini an huring probar na hapót:
"$1"
sa aksyón na "$2".
AnSQL ko nagbalik nin salâ na"$3: $4"',
-'noconnect' => "Despensa! May mga problemang teknikal ining wiki, asin dai makaapód sa ''server'' kan base nin datos. <br />
-$1",
-'nodb' => 'Dae napilî an base nin datos. $1',
-'cachederror' => 'An minasunod sarong kopyang nakaabang kan hinagad na páhina, asin pwede ser na lumâ na.',
'laggedslavemode' => 'Patanid: An pahina pwedeng dai nin pagbabâgo sa ngonyan.',
'readonly' => 'Kandado an base nin datos',
'enterlockreason' => 'Magkaag tabì nin rason sa pagkandado, asin ikalkulo kun nuarin bubukasón an kandado',
@@ -432,7 +434,6 @@ $2',
'virus-unknownscanner' => 'dai aram an antivirus:',
# Login and logout pages
-'logouttitle' => 'Magluwas an paragamit',
'logouttext' => "'''Nakaluwas ka na.'''
Pwede mo pang gamiton an {{SITENAME}} na dai nagpapabisto, o pwede ka giraray lumaog
@@ -440,7 +441,6 @@ bilang pareho o ibang parágamit. Giromdomon tabî na an ibang mga páhina pwede
'welcomecreation' => "== Maogmang Pagdagos, $1! ==
Nagibo na an ''account'' mo. Giromdomon tabi na ribayán an saimong mga kabôtan sa {{SITENAME}}.",
-'loginpagetitle' => 'Maglaog an paragamit',
'yourname' => 'Pangaran kan paragamit:',
'yourpassword' => 'Sekretong panlaog:',
'yourpasswordagain' => 'Itaták giraray an sekretong panlaog:',
@@ -462,23 +462,8 @@ Nagibo na an ''account'' mo. Giromdomon tabi na ribayán an saimong mga kabôtan
'createaccountmail' => 'sa e-koreo',
'badretype' => 'Dai parehas an pigtaták mong mga sekretong panlaog.',
'userexists' => 'Piggagamit na kan iba an pangaran. Magpili tabî nin iba.',
-'youremail' => 'E-koreo:',
-'username' => 'Pangaran kan parágamit:',
-'uid' => 'ID kan parágamit:',
-'prefs-memberingroups' => 'Miembro kan {{PLURAL:$1|grupo|grupos}}:',
-'yourrealname' => 'Totoong pangaran:',
-'yourlanguage' => 'Tataramon:',
-'yourvariant' => 'Bariante:',
-'yournick' => 'Gahâ:',
-'badsig' => 'Dai pwede an bâgong pirmang ini; isúsog an mga HTML na takód.',
-'badsiglength' => 'Halabâon an gahâ; kaipuhan dai mababà sa $1 na mga karakter.',
-'gender-male' => 'Lalaki',
-'gender-female' => 'Babai',
-'email' => 'E-koreo',
-'prefs-help-realname' => 'Opsyonal an totoong pangaran asin kun itatao mo ini, gagamiton ini yangarig an mga sinurat mo maatribuir saimo.',
'loginerror' => 'Salâ an paglaog',
-'prefs-help-email' => 'Opsyonal an e-koreo, alagad pwede ka na masosog kan iba sa paagi kan saimong pahina o pahina nin olay na dai kinakaipuhan na ipabisto an identidad mo.',
-'prefs-help-email-required' => 'Kaipuhan an e-koreo.',
+'createaccounterror' => 'Daí maggíbo an account: $1.',
'nocookiesnew' => 'Nagibo na an account kan parágamit, alagad dai ka pa nakalaog. Naggagamit nin cookies an {{SITENAME}} para magpalaog sa mga parágamit. Nakapondo an cookies mo. Paandaron tabì ini, dangan, maglaog gamit an bàgo mong pangaran asin sekretong panlaog.',
'nocookieslogin' => 'Naggagamit nin mga cookies an {{SITENAME}} para magpalaog nin mga paragamit. Nakapondo an mga cookies mo. Paandaron tabi ini asin probaran giraray.',
'noname' => 'Dai ka pa nagkaag nin pwedeng gamiton na pangaran.',
@@ -528,7 +513,6 @@ $1 na oras.',
'retypenew' => 'Itaták giraray an bàgong panlaog:',
'resetpass_submit' => 'Ipwesto an sekretong panlaog dangan maglaog',
'resetpass_success' => 'Naribayan na an saimong sekretong panlaog! Pigpapadagos ka na...',
-'resetpass_bad_temporary' => 'Dai pwede ining temporariong sekretong panlaog. Pwede ser na binâgo mo na an saimong sekretong panlaog o naghagad ka na nin bâgong temporariong sekretong panlaog.',
'resetpass_forbidden' => 'Dai pwedeng ribayan an mga sekretong panlaog sa ining wiki',
'resetpass-submit-loggedin' => 'Ribayan an sekretong panlaog',
'resetpass-wrong-oldpass' => 'Saláng temporaryo o presenteng sekretong panlaog.
@@ -558,23 +542,23 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
'hr_tip' => 'Pabalagbag na linya (use sparingly)',
# Edit pages
-'summary' => 'Sumada:',
-'subject' => 'Tema/pamayohan:',
-'minoredit' => 'Sadit na paghirá ini',
-'watchthis' => 'Bantayan an pahinang ini',
-'savearticle' => 'Itagáma an pahina',
-'preview' => 'Tànawón',
-'showpreview' => 'Hilingón an patànaw',
-'showlivepreview' => 'Patànaw na direkto',
-'showdiff' => 'Hilingón an mga pagbabàgo',
-'anoneditwarning' => "'''Patanid:''' Dai ka nakalaog. Masusurat an saimong IP sa uusipón kan pagbabàgo kan pahinang ini.",
-'missingsummary' => "'''Paisi:''' Dai ka nagkaag nin sumád kan paghirâ. Kun pindotón mo giraray an Itagama, maitatagama an hirá mo na mayô kaini.",
-'missingcommenttext' => 'Paki lâgan nin komento sa ibabâ.',
-'missingcommentheader' => "'''Paisi:''' Dai ka nagkaag nin tema/pamayohan para sa ining komentaryo. Kun pindoton mo giraray an Itagama, maitatagama an hira mo na mayô ini.",
-'summary-preview' => 'Patànaw nin sumada:',
-'subject-preview' => 'Patânaw nin tema/pamayohan:',
-'blockedtitle' => 'Pigbágat an parágamit',
-'blockedtext' => "'''Pigbagat an pangaran o IP mo.'''
+'summary' => 'Sumada:',
+'subject' => 'Tema/pamayohan:',
+'minoredit' => 'Sadit na paghirá ini',
+'watchthis' => 'Bantayan an pahinang ini',
+'savearticle' => 'Itagáma an pahina',
+'preview' => 'Tànawón',
+'showpreview' => 'Hilingón an patànaw',
+'showlivepreview' => 'Patànaw na direkto',
+'showdiff' => 'Hilingón an mga pagbabàgo',
+'anoneditwarning' => "'''Patanid:''' Dai ka nakalaog. Masusurat an saimong IP sa uusipón kan pagbabàgo kan pahinang ini.",
+'missingsummary' => "'''Paisi:''' Dai ka nagkaag nin sumád kan paghirâ. Kun pindotón mo giraray an Itagama, maitatagama an hirá mo na mayô kaini.",
+'missingcommenttext' => 'Paki lâgan nin komento sa ibabâ.',
+'missingcommentheader' => "'''Paisi:''' Dai ka nagkaag nin tema/pamayohan para sa ining komentaryo. Kun pindoton mo giraray an Itagama, maitatagama an hira mo na mayô ini.",
+'summary-preview' => 'Patànaw nin sumada:',
+'subject-preview' => 'Patânaw nin tema/pamayohan:',
+'blockedtitle' => 'Pigbágat an parágamit',
+'blockedtext' => "'''Pigbagat an pangaran o IP mo.'''
Si $1 an nagbagat. Ini an itinaong rasón, ''$2''.
@@ -585,7 +569,7 @@ Si $1 an nagbagat. Ini an itinaong rasón, ''$2''.
Pwede mong suratan si $1 o an iba pang [[{{MediaWiki:Grouppage-sysop}}|administrador]] para pagoralayan an manonongod sa pagbagat.
Dai mo pwedeng gamiton an ' e-koreohan an paragamit ' kun mayong tamang e-surat sa [[Special:Preferences|mga kabòtan kan account]] mo asin dai ka pigbagat sa paggamit kaini.
$3 an presente mong IP, asin #$5 an ID nin pigbagat. Ikaag tabì an arin man o pareho sain man na hapót.",
-'autoblockedtext' => "Enseguidang pigbagat an IP mo ta ginamit ini kan ibang parágamit, na binagat ni \$1.
+'autoblockedtext' => "Enseguidang pigbagat an IP mo ta ginamit ini kan ibang parágamit, na binagat ni \$1.
Ini an rasón:
:''\$2''
@@ -599,91 +583,91 @@ Pwedeng mong suratan si \$1 o an iba pang mga
Giromdomon tabî na pwede mo sanang gamiton an \"''e''-suratan ining parágamit\" na gamit kun igwa kang tamang ''e''-surat na nakarehistro saimong [[Special:Preferences|mga kabôtan nin parágamit]] asin dai ka pigbabagat sa paggamit kaini.
\$5 an pigbagat na ID. Ikaag tabî ining ID sa gabos na paghapot mo.",
-'blockednoreason' => 'mayong itinaong rason',
-'blockedoriginalsource' => "An ginikanan kan '''$1''' mahihiling sa ibabâ:",
-'blockededitsource' => "An teksto kan '''mga hira mo''' sa '''$1''' mahihiling sa babâ:",
-'whitelistedittitle' => 'Kaipuhan an paglaog tangarig makahirá',
-'whitelistedittext' => 'Kaipuhan mong $1 tangarig makahirá nin mga páhina.',
-'confirmedittitle' => 'Kaipuhan nin kompirmasyon nin e-koreo tangarig makahirá',
-'confirmedittext' => "Kaipuhan mong kompirmaron an saimong ''e''-surat. Ipwesto tabî asin patunayan an saimong ''e''-surat sa [[Special:Preferences|mga kabôtan kan parágamit]].",
-'nosuchsectiontitle' => 'Mayong siring na seksyón',
-'nosuchsectiontext' => 'Mayo man an seksyón an pighihira mo.',
-'loginreqtitle' => 'Kaipuhan Maglaog',
-'loginreqlink' => 'maglaog',
-'loginreqpagetext' => 'Kaipuhan kang $1 tangarig makahilíng nin ibang pahina.',
-'accmailtitle' => 'Napadará na an sekretong panlaog.',
-'accmailtext' => 'An sekretong panlaog ni "$1" naipadará na sa $2.',
-'newarticle' => '(Bàgo)',
-'newarticletext' => 'Sinunod mo an takod sa pahinang mayò pa man.
+'blockednoreason' => 'mayong itinaong rason',
+'blockedoriginalsource' => "An ginikanan kan '''$1''' mahihiling sa ibabâ:",
+'blockededitsource' => "An teksto kan '''mga hira mo''' sa '''$1''' mahihiling sa babâ:",
+'whitelistedittitle' => 'Kaipuhan an paglaog tangarig makahirá',
+'whitelistedittext' => 'Kaipuhan mong $1 tangarig makahirá nin mga páhina.',
+'confirmedittext' => "Kaipuhan mong kompirmaron an saimong ''e''-surat. Ipwesto tabî asin patunayan an saimong ''e''-surat sa [[Special:Preferences|mga kabôtan kan parágamit]].",
+'nosuchsectiontitle' => 'Mayong siring na seksyón',
+'nosuchsectiontext' => 'Mayo man an seksyón an pighihira mo.',
+'loginreqtitle' => 'Kaipuhan Maglaog',
+'loginreqlink' => 'maglaog',
+'loginreqpagetext' => 'Kaipuhan kang $1 tangarig makahilíng nin ibang pahina.',
+'accmailtitle' => 'Napadará na an sekretong panlaog.',
+'accmailtext' => 'An sekretong panlaog ni "$1" naipadará na sa $2.',
+'newarticle' => '(Bàgo)',
+'newarticletext' => 'Sinunod mo an takod sa pahinang mayò pa man.
Tangarig magibo an pahina, magpoon pagsurat sa kahon sa babâ
(hilingón an [[{{MediaWiki:Helppage}}|pahina nin tabang]] para sa iba pang impormasyon).
Kun dai tinuyong nakaabot ka digdi, pindoton sana an back sa browser mo.',
-'anontalkpagetext' => "----''Ini an pahina kan olay kan sarong parágamit na dai bisto na dai pa naggibo nin account o dai naggagamit kaini. Entonces, piggagamit mi an numero nin IP tangarig mabisto siya. Ining IP pwede gamiton kan manlain-lain na mga parágamit. Kun ika sarong paraágamit na dai bisto asin konbensido ka sa pigsasabi ka ining mga komento bakô man dapit saimo, [[Special:UserLogin|maggibo nin'' account ''o maglaog]] tabì tangarig maibitaran an pagkaribong saimo asin sa ibang mga parágamit na dai bisto.''",
-'noarticletext' => 'Mayo man na teksto sa páhinang ini, pwede mong [[Special:Search/{{PAGENAME}}|hanápon ining titulo nin páhina]] sa ibang mga páhina o [{{fullurl:{{FULLPAGENAME}}|action=edit}} hirahon ining páhina].',
-'clearyourcache' => "'''Pagiromdom:''' Pagkatapos kan pagtagama, pwede ser na kaipuhan mong lawigawan an abang kan ''browser'' para mahiling mo an mga pagbabâgo. '''Mozilla / Firefox / Safari:''' doonan an ''shift'' an ''Shift'' sabay an pagpindot sa ''Reload'', o pindoton an ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sa Apple Mac); '''IE:''' doonan (dai halion an muro) an ''Ctrl'' mientras sabay an pagpindot sa ''Refresh'', o pindoton an ''Ctrl-F5''; '''Konqueror:''': pindoton sana ''Reload'', o pindoton an ''F5''; '''Opera''' pwede ser na kaipuhan na halîon an gabos na laog kan abang sa ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Gamiton an 'Show preview' para testingon an bâgong CSS/JS bago magtagama.",
-'usercsspreview' => "'''Giromdomon tabî na pigpapatânaw sana saimo an CSS nin parágamit, dai pa ini nakatagama!'''",
-'userjspreview' => "'''Giromdomon tabi na pigtetest/pighihiling mo sana an patanaw kan saimong JavaScript nin paragamit, dai pa ini naitagama!'''",
-'userinvalidcssjstitle' => "'''Patanid:''' Mayong ''skin'' na \"\$1\". Giromdomon tabî na an .css asin .js na mga páhina naggagamit nin titulong nakasurat sa sadit na letras, halimbawa {{ns:user}}:Foo/monobook.css bakong {{ns:user}}:Foo/Monobook.css.",
-'updated' => '(Binàgo)',
-'note' => "'''Paisi:'''",
-'previewnote' => "'''Patànaw sana ini; dai pa naitagama an mga pagbabàgo!'''",
-'previewconflict' => 'Mahihilíng sa patànaw na ini an tekstong nasa itaas na lugar nin paghirá arog sa maipapahiling kun ini an itatagama mo.',
-'session_fail_preview' => "'''Despensa! Dai mi naipadagos an paghirá mo huli sa pagkawara nin datos kan sesyon.
+'anontalkpagetext' => "----''Ini an pahina kan olay kan sarong parágamit na dai bisto na dai pa naggibo nin account o dai naggagamit kaini. Entonces, piggagamit mi an numero nin IP tangarig mabisto siya. Ining IP pwede gamiton kan manlain-lain na mga parágamit. Kun ika sarong paraágamit na dai bisto asin konbensido ka sa pigsasabi ka ining mga komento bakô man dapit saimo, [[Special:UserLogin|maggibo nin'' account ''o maglaog]] tabì tangarig maibitaran an pagkaribong saimo asin sa ibang mga parágamit na dai bisto.''",
+'noarticletext' => 'Mayo man na teksto sa páhinang ini, pwede mong [[Special:Search/{{PAGENAME}}|hanápon ining titulo nin páhina]] sa ibang mga páhina o [{{fullurl:{{FULLPAGENAME}}|action=edit}} hirahon ining páhina].',
+'clearyourcache' => "'''Pagiromdom:''' Pagkatapos kan pagtagama, pwede ser na kaipuhan mong lawigawan an abang kan ''browser'' para mahiling mo an mga pagbabâgo. '''Mozilla / Firefox / Safari:''' doonan an ''shift'' an ''Shift'' sabay an pagpindot sa ''Reload'', o pindoton an ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sa Apple Mac); '''IE:''' doonan (dai halion an muro) an ''Ctrl'' mientras sabay an pagpindot sa ''Refresh'', o pindoton an ''Ctrl-F5''; '''Konqueror:''': pindoton sana ''Reload'', o pindoton an ''F5''; '''Opera''' pwede ser na kaipuhan na halîon an gabos na laog kan abang sa ''Tools→Preferences''.",
+'usercssyoucanpreview' => "'''Tip:''' Gamiton an 'Show preview' para testingon an bâgong CSS bago magtagama.",
+'userjsyoucanpreview' => "'''Tip:''' Gamiton an 'Show preview' para testingon an bâgong JS bago magtagama.",
+'usercsspreview' => "'''Giromdomon tabî na pigpapatânaw sana saimo an CSS nin parágamit, dai pa ini nakatagama!'''",
+'userjspreview' => "'''Giromdomon tabi na pigtetest/pighihiling mo sana an patanaw kan saimong JavaScript nin paragamit, dai pa ini naitagama!'''",
+'userinvalidcssjstitle' => "'''Patanid:''' Mayong ''skin'' na \"\$1\". Giromdomon tabî na an .css asin .js na mga páhina naggagamit nin titulong nakasurat sa sadit na letras, halimbawa {{ns:user}}:Foo/monobook.css bakong {{ns:user}}:Foo/Monobook.css.",
+'updated' => '(Binàgo)',
+'note' => "'''Paisi:'''",
+'previewnote' => "'''Patànaw sana ini; dai pa naitagama an mga pagbabàgo!'''",
+'previewconflict' => 'Mahihilíng sa patànaw na ini an tekstong nasa itaas na lugar nin paghirá arog sa maipapahiling kun ini an itatagama mo.',
+'session_fail_preview' => "'''Despensa! Dai mi naipadagos an paghirá mo huli sa pagkawara nin datos kan sesyon.
Probaran tabì giraray. Kun dai man giraray magibo, probaran na magluwas dangan maglaog giraray.'''",
-'session_fail_preview_html' => "'''Despensa! Dai mi naipadagos an paghirá mo nin huli sa kawàran kan datos kan sesyon.'''
+'session_fail_preview_html' => "'''Despensa! Dai mi naipadagos an paghirá mo nin huli sa kawàran kan datos kan sesyon.'''
''Huli ta ining wiki may HTML na nakaandar, pigtago an patànaw bilang paglikay kontra sa mga atake sa JavaScript.''
'''Kun talagang boot mong hirahón ini, probaran giraray. Kun dai pa giraray magibo, magluwas dangan maglaog giraray. '''",
-'token_suffix_mismatch' => "'''Dai pigtogotan an paghirá mo ta sinabrit kan client mo an punctuation characters.
+'token_suffix_mismatch' => "'''Dai pigtogotan an paghirá mo ta sinabrit kan client mo an punctuation characters.
Dai pigtogotan ining paghirá tangarig maibitaran na maraot an teksto kan pahina.
Nanyayari nanggad ini kun naggagamit ka nin bakong maraháy asin dai bistong web-based proxy service.'''",
-'editing' => 'Pigliliwat an $1',
-'editingsection' => 'Pighihira an $1 (seksyon)',
-'editingcomment' => 'Pighihira an $1 (komento)',
-'editconflict' => 'Komplikto sa paghihira: $1',
-'explainconflict' => "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.
+'editing' => 'Pigliliwat an $1',
+'editingsection' => 'Pighihira an $1 (seksyon)',
+'editingcomment' => 'Pighihira an $1 (komento)',
+'editconflict' => 'Komplikto sa paghihira: $1',
+'explainconflict' => "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.
Nahihilíng ang pahina kan teksto sa parteng itaas kan teksto.
An mga pagbabàgo mo nahihilíng sa parteng ibabâ kan teksto.
Kaipuhan mong isalak an mga pagbabàgo mo sa presenteng teksto.
An teksto na nasa parteng itaas '''sana''' an maitatagama sa pagpindot mo kan \"Itagama an pahina\".",
-'yourtext' => 'Saimong teksto',
-'storedversion' => 'Itinagamang bersyon',
-'nonunicodebrowser' => "'''PATANID: An browser mo bakong unicode complaint. Igwang temporariong sistema na nakaandar para makahirá ka kan mga pahina: mahihiling an mga karakter na non-ASCII sa kahon nin paghirá bilang mga kodang hexadecimal.'''",
-'editingold' => "'''PATANID: Pighihirá mo an pasó nang pagpakaraháy kaining pahina.
+'yourtext' => 'Saimong teksto',
+'storedversion' => 'Itinagamang bersyon',
+'nonunicodebrowser' => "'''PATANID: An browser mo bakong unicode complaint. Igwang temporariong sistema na nakaandar para makahirá ka kan mga pahina: mahihiling an mga karakter na non-ASCII sa kahon nin paghirá bilang mga kodang hexadecimal.'''",
+'editingold' => "'''PATANID: Pighihirá mo an pasó nang pagpakaraháy kaining pahina.
Kun itatagama mo ini, mawawarà an mga pagbabàgong nagibo poon kan pagpakaraháy kaini.'''",
-'yourdiff' => 'Mga kaibahán',
-'copyrightwarning' => "Giromdomon tabì na an gabos na kontribusyon sa {{SITENAME}} pigkokonsiderar na $2 (hilingón an $1 para sa mga detalye). Kun habò mong mahirá an saimomg sinurat na mayong pakimàno, dai tabì iyan isumiter digdi.<br />
+'yourdiff' => 'Mga kaibahán',
+'copyrightwarning' => "Giromdomon tabì na an gabos na kontribusyon sa {{SITENAME}} pigkokonsiderar na $2 (hilingón an $1 para sa mga detalye). Kun habò mong mahirá an saimomg sinurat na mayong pakimàno, dai tabì iyan isumiter digdi.<br />
Pigpropromesa mo man samuyà na ika an kagsurat kaini, o kinopya mo ini sa dominiong panpubliko o sarong parehong libreng rekurso (hilingón an $1 para sa mga detalye).
'''DAI TABÌ MAGSUMITIR NIN MGA GIBONG IPINAPANGALAD NA KOPYAHON NIN MAYONG PERMISO!'''",
-'copyrightwarning2' => "Giromdomon tabì na an gabos na kontribusyon sa {{SITENAME}} pwedeng hirahón, bàgohon o halion kan ibang mga parágamit. Kun habô mong mahirá an saimomg sinurat na mayong pakimàno, pues, dai tabì isumitir iyan digdi.<br />
+'copyrightwarning2' => "Giromdomon tabì na an gabos na kontribusyon sa {{SITENAME}} pwedeng hirahón, bàgohon o halion kan ibang mga parágamit. Kun habô mong mahirá an saimomg sinurat na mayong pakimàno, pues, dai tabì isumitir iyan digdi.<br />
Pigpapangakò mo man samuyà na ika an nagsurat kaini, o pigkopya mo ini sa dominiong panpubliko o sarong parehong libreng rekurso (hilingon an $1 para sa mga detalye). '''DAI TABÌ MAGSUMITIR NIN MGA GIBONG IPINAPANGALAD NA KOPYAHON NIN MAYONG PERMISO!'''",
-'longpagewarning' => "'''PATANID: $1 na kilobytes na kalabà an pahinang ini; an ibang mga browser pwedeng magkaproblema sa paghirá nin mga pahinang haros o sobra sa 32 kb.
+'longpagewarning' => "'''PATANID: $1 na kilobytes na kalabà an pahinang ini; an ibang mga browser pwedeng magkaproblema sa paghirá nin mga pahinang haros o sobra sa 32 kb.
Paki bangâ ini sa saradit na seksyon.'''",
-'longpageerror' => "'''SALÀ: $1 na kilobytes na kalabà an pahinang isinumitir mo, na mas halabà sa hanggan nin $2 na kilobytes. Dai pwede ining itagama.'''",
-'readonlywarning' => "'''PATANID: Nakakandado an base nin datos para sa pagmantinir, pues, dai mo mûna pwede na itagama an mga paghirá mo. Pwede mo pa man na arogon dangan ipaskil ang teksto sa sarong dokumento arog kan MS Word asbp. asin itagama ini para sa atyan.'''",
-'protectedpagewarning' => "'''PATANID: Nakakandado ining pahina tangarig an mga parágamit na may priblehiyo nin ''sysop'' sana an pwedeng maghira kaini.'''",
-'semiprotectedpagewarning' => "'''Paisi:''' An pahinang ini isinara tangarig mga rehistradong parágamit sana an makahira kaini.",
-'cascadeprotectedwarning' => "'''Patanid:''' Nakakandado an pahinang ini tangarig an mga parágamit na igwang pribilehyo nin sysop sana an pwedeng maghirá kaini, huli ta kabali ini sa mga kataratang protektado na {{PLURAL:$1|pahina|mga pahina}}:",
-'templatesused' => 'Mga templato na piggamit sa pahinang ini:',
-'templatesusedpreview' => 'Mga templato na piggamit sa patànaw na ini:',
-'templatesusedsection' => 'Mga templato na piggamit sa seksyon na ini:',
-'template-protected' => '(protektado)',
-'template-semiprotected' => '(semi-protektado)',
-'edittools' => '<!-- An teksto digdi mahihiling sa babâ kan mga pormang pighihirá asin pigkakarga. -->',
-'nocreatetitle' => 'Limitado an paggibo nin pahina',
-'nocreatetext' => 'Igwang pagpogol sa paggibo nin bàgong pahina sa site na ini.
+'longpageerror' => "'''SALÀ: $1 na kilobytes na kalabà an pahinang isinumitir mo, na mas halabà sa hanggan nin $2 na kilobytes. Dai pwede ining itagama.'''",
+'readonlywarning' => "'''PATANID: Nakakandado an base nin datos para sa pagmantinir, pues, dai mo mûna pwede na itagama an mga paghirá mo. Pwede mo pa man na arogon dangan ipaskil ang teksto sa sarong dokumento arog kan MS Word asbp. asin itagama ini para sa atyan.'''",
+'protectedpagewarning' => "'''PATANID: Nakakandado ining pahina tangarig an mga parágamit na may priblehiyo nin ''sysop'' sana an pwedeng maghira kaini.'''",
+'semiprotectedpagewarning' => "'''Paisi:''' An pahinang ini isinara tangarig mga rehistradong parágamit sana an makahira kaini.",
+'cascadeprotectedwarning' => "'''Patanid:''' Nakakandado an pahinang ini tangarig an mga parágamit na igwang pribilehyo nin sysop sana an pwedeng maghirá kaini, huli ta kabali ini sa mga kataratang protektado na {{PLURAL:$1|pahina|mga pahina}}:",
+'templatesused' => 'Mga templato na piggamit sa pahinang ini:',
+'templatesusedpreview' => 'Mga templato na piggamit sa patànaw na ini:',
+'templatesusedsection' => 'Mga templato na piggamit sa seksyon na ini:',
+'template-protected' => '(protektado)',
+'template-semiprotected' => '(semi-protektado)',
+'edittools' => '<!-- An teksto digdi mahihiling sa babâ kan mga pormang pighihirá asin pigkakarga. -->',
+'nocreatetitle' => 'Limitado an paggibo nin pahina',
+'nocreatetext' => 'Igwang pagpogol sa paggibo nin bàgong pahina sa site na ini.
Pwede kang bumalik dangan maghirá nin presenteng pahina, o [[Special:UserLogin|maglaog o magbukas nin account]].',
-'nocreate-loggedin' => 'Mayò ka nin permiso na maggibo nin mga bàgong pahina sa wiki na ini.',
-'permissionserrors' => 'Mga saláng Permiso',
-'permissionserrorstext' => 'Mayò ka nin permiso na gibohon yan, sa minasunod na {{PLURAL:$1|rason|mga rason}}:',
-'recreate-deleted-warn' => "'''Patanid: Piggigíbo mo giraray an pahina na pigparà na dati pa.'''
+'nocreate-loggedin' => 'Mayò ka nin permiso na maggibo nin mga bàgong pahina sa wiki na ini.',
+'permissionserrors' => 'Mga saláng Permiso',
+'permissionserrorstext' => 'Mayò ka nin permiso na gibohon yan, sa minasunod na {{PLURAL:$1|rason|mga rason}}:',
+'recreate-moveddeleted-warn' => "'''Patanid: Piggigíbo mo giraray an pahina na pigparà na dati pa.'''
Dapat mong isipon kun kaipuhan na ipadagos an paghirá kaining pahina.
An paghalì kan historial para sa pahinang ini yaon digdi para sa saimong kombenyensya:",
-'edit-conflict' => 'Igwang iregularidad sa pagliwat.',
-'edit-already-exists' => 'Dai maggibo an bàgong pahina.
+'edit-conflict' => 'Igwang iregularidad sa pagliwat.',
+'edit-already-exists' => 'Dai maggibo an bàgong pahina.
Igwa na kaini.',
# "Undo" feature
@@ -702,7 +686,7 @@ Igwa na kaini.',
'nohistory' => 'Mayong paghirá nin uusipón sa pahinang ini.',
'currentrev' => 'Sa ngonyan na pagpakarháy',
'revisionasof' => 'Pagpakarháy sa $1',
-'revision-info' => 'An pagpakarháy sa $1 ni $2', # Additionally available: $3: revision id
+'revision-info' => 'An pagpakarháy sa $1 ni $2',
'previousrevision' => '←Orog na lumang pagpakarhay',
'nextrevision' => 'Mas bàgong pagpakarháy→',
'currentrevisionlink' => 'Sa ngonyan na pagpakarháy',
@@ -715,7 +699,6 @@ Igwa na kaini.',
Legend: (ngonyan) = kaibhán sa ngonyan na bersyon,
(huri) = kaibhán sa huring bersyon, S = saradít na paghirá.',
'history-fieldset-title' => 'Rinsayon an uusipon',
-'deletedrev' => '[pigparà]',
'histfirst' => 'Pinakaenot',
'histlast' => 'Pinakahúri',
'historysize' => '($1 bytes)',
@@ -724,7 +707,7 @@ Legend: (ngonyan) = kaibhán sa ngonyan na bersyon,
# Revision feed
'history-feed-title' => 'Uusipón kan pagpakaraháy',
'history-feed-description' => 'Uusipón kan pagpakaraháy para sa pahinang ini sa wiki',
-'history-feed-item-nocomment' => '$1 sa $2', # user at time
+'history-feed-item-nocomment' => '$1 sa $2',
'history-feed-empty' => 'Mayò man an hinágad na pahina.
Pwedeng pigparà na ini sa wiki, o tinàwan nin bàgong pangaran.
Probaran tabì an [[Special:Search|pighahanap sa wiki]] para sa mga pahinang dapít.',
@@ -734,10 +717,10 @@ Probaran tabì an [[Special:Search|pighahanap sa wiki]] para sa mga pahinang dap
'rev-deleted-user' => '(hinalì an parágamit)',
'rev-deleted-event' => '(hinalì an ingreso)',
'rev-deleted-text-permission' => 'Ining pagpakaraháy nin pahina pighalì na sa mga archibong panpubliko.
-Pwedeng igwang mga detalye sa [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
+Pwedeng igwang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
'rev-deleted-text-view' => 'Ining pagpakaraháy nin pahina pighalì na sa mga archibong panpubliko.
Pwede mo ining hilingón bilang sarong tagamató kaining site;
-Pwedeng igwang mga detalye sa [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
+Pwedeng igwang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
'rev-delundel' => 'ipahilíng/tagoon',
'revisiondelete' => 'Paraon/bawion an mga pagpakaraháy',
'revdelete-nooldid-title' => 'Mayong tunggit pagpakaraháy',
@@ -748,12 +731,12 @@ Pwedeng igwang mga detalye sa [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE
An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong laog asin pwede pa nindang bawîon an pagparâ kaini sa paggamit kan parehong ''interface'', kun mayô pang mga ibang restriksyón.",
'revdelete-legend' => 'Ipwesto an mga restriksyón',
'revdelete-hide-text' => 'Tagoon an teksto kan pagpakaraháy',
+'revdelete-hide-image' => 'Tagoon an laog kan file',
'revdelete-hide-name' => 'Tagoon an aksyon asin target',
'revdelete-hide-comment' => 'Tagoon an komento sa paghirá',
'revdelete-hide-user' => 'Tagoon an pangaran kan editor/IP',
'revdelete-hide-restricted' => 'Ibali sa mga restriksyón na ini an mga sysops asin iba pa',
'revdelete-suppress' => 'Dai ipahilíng an mga datos sa mga sysops asin sa mga iba pa',
-'revdelete-hide-image' => 'Tagoon an laog kan file',
'revdelete-unsuppress' => 'Halîon an mga restriksyón sa mga ibinalík na pagpakarhay',
'revdelete-log' => 'Rason:',
'revdelete-submit' => 'Ibílang sa piniling pagpakarhay',
@@ -773,15 +756,6 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
'compareselectedversions' => 'Ikomparar an mga piniling bersyon',
'editundo' => 'ibalik',
'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} dai ipinahihiling.)',
-'diff-width' => 'lakbáng',
-'diff-height' => 'langkáw',
-'diff-blockquote' => "saróng '''quote'''",
-'diff-h1' => "saróng '''pamayohan (tangga 1)'''",
-'diff-h2' => "saróng '''pamayohan (tangga 2)'''",
-'diff-h3' => "saróng '''pamayohan (tangga 3)'''",
-'diff-h4' => "saróng '''pamayohan (tangga 4)'''",
-'diff-h5' => "saróng '''pamayohan (tangga 5)'''",
-'diff-pre' => "saróng '''naformat nang pagbagat'''",
# Search results
'searchresults' => 'Hanapon an mga resulta',
@@ -789,16 +763,14 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
'searchresulttext' => 'Para sa iba pang impormasyon manonongod sa paghanap sa {{SITENAME}}, hilingon tabî an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Hinanap mo an '''[[:$1]]'''",
'searchsubtitleinvalid' => "Hinanap mo an '''$1'''",
-'noexactmatch' => "'''Mayong siring na pahinang may títulong \"\$1\".''' Pwede mong [[:\$1|gibohon ining pahina]].",
-'noexactmatch-nocreate' => "'''Mayong pahina sa titulong \"\$1\".'''",
'toomanymatches' => 'Kadakol-dakol na angay an ipigbalik, probaran an ibang kahaputan',
'titlematches' => 'Angay an título kan artíkulo',
'notitlematches' => 'Mayong angay na título nin pahina',
'textmatches' => 'Angay an teksto nin páhina',
'notextmatches' => 'Mayong ángay na teksto nin páhina',
-'prevn' => 'dati $1',
-'nextn' => 'sunod $1',
-'viewprevnext' => 'Hilingón ($1 ) ($2) ($3)',
+'prevn' => 'dating {{PLURAL:$1|$1}}',
+'nextn' => 'sunod na {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Hilingón ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Mga laog',
'search-result-size' => '$1 ({{PLURAL:$2|1 tatarámon|$2 mga tatarámon}})',
'search-suggest' => 'An boot mo: $1',
@@ -813,66 +785,72 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
'powersearch-field' => 'Hanápon an',
'searchdisabled' => 'Pigpopogolan mûna an paghanap sa {{SITENAME}}. Mientras tanto, pwede ka man maghanap sa Google. Giromdomon tabî na an mga indise kan laog ninda sa {{SITENAME}} pwede ser na lumâ na.',
-# Preferences page
-'preferences' => 'Mga kabòtan',
-'mypreferences' => 'Mga kabòtan ko',
-'prefs-edits' => 'Bilang kan mga hirá:',
-'prefsnologin' => 'Dai nakalaog',
-'prefsnologintext' => 'Ika dapat si [[Special:UserLogin|nakalaog]] para makapwesto nin mga kabôtan nin parágamit.',
-'prefsreset' => 'Napwesto giraray an mga kabôtan hali sa bodega.',
+# Quickbar
'qbsettings' => 'Quickbar',
'qbsettings-none' => 'Mayô',
'qbsettings-fixedleft' => 'Nakatakód sa walá',
'qbsettings-fixedright' => 'Nakatakód sa tûo',
'qbsettings-floatingleft' => 'Naglálatáw sa walá',
'qbsettings-floatingright' => 'Naglálatáw sa tûo',
-'changepassword' => 'Ribayan an sekretong panlaog',
-'skin' => "''Skin''",
-'skin-preview' => 'Tânawon',
-'math' => 'Mat',
-'dateformat' => "''Format'' kan petsa",
-'datedefault' => 'Mayong kabôtan',
-'datetime' => 'Petsa asin oras',
-'math_failure' => 'Nagprakaso an pagatíd-atíd',
-'math_unknown_error' => 'dai aram an salâ',
-'math_unknown_function' => 'Dai aram an gamit',
-'math_lexing_error' => 'may salâ sa analisador léxico',
-'math_syntax_error' => 'may salâ sa analisador nin sintaksis',
-'math_image_error' => 'Nagprakaso an konbersyon kan PNG; sosogon tabî an pagkaag nin latex, dvips, gs, asin ikonbertir',
-'math_bad_tmpdir' => 'Dai masuratan o magibo an direktoryo nin mat temp',
-'math_bad_output' => 'Dai masuratan o magibo an direktoryo kan salida nin math',
-'math_notexvc' => 'May nawawarang texvc na ehekutable; hilingón tabî an mat/README para makonpigurar.',
-'prefs-personal' => 'Pambisto nin parágamit',
-'prefs-rc' => 'Mga kaaagi pa sanang pagribay',
-'prefs-watchlist' => 'Pigbabantayan',
-'prefs-watchlist-days' => 'Máximong número nin mga aldaw na ipapahiling sa lista nin mga pigbabantayan:',
-'prefs-watchlist-edits' => 'Máximong número nin pagbabâgo na ipapahiling sa pinadakulang lista nin pigbabantayan:',
-'prefs-misc' => 'Lain',
-'saveprefs' => 'Itagama',
-'resetprefs' => 'Ipwesto giraray',
-'textboxsize' => 'Pighihira',
-'rows' => 'Mga hilera:',
-'columns' => 'Mga taytay:',
-'searchresultshead' => 'Hanápon',
-'resultsperpage' => 'Mga tamà kada pahina:',
-'contextlines' => 'Mga linya kada tamà:',
-'contextchars' => 'Konteksto kada linya:',
-'stub-threshold' => 'Kasagkoran kan <a href="#" class="stub">takod kan tambô</a> pigpopormato:',
-'recentchangesdays' => 'Mga aldáw na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
-'recentchangescount' => 'Número nin mga paghirá na ipapahiling sa mga kaaaging pa sanang pagbabâgo:',
-'savedprefs' => 'Itinagama na an mga kabôtan mo.',
-'timezonelegend' => 'Zona nin oras',
-'timezonetext' => "¹Bilang nin mga oras na ibá an saimong oras lokal sa oras kan ''server'' (UTC).",
-'localtime' => 'Lokal na oras',
-'servertime' => "Oras kan ''server''",
-'guesstimezone' => "Bugtakan an ''browser''",
-'allowemail' => "Togotan an mga ''e''-surat halî sa ibang mga parágamit",
-'defaultns' => 'Maghilíng mûna sa ining mga ngaran-espacio:',
-'default' => 'pwestong normal',
-'files' => 'Mga dokumento',
+
+# Preferences page
+'preferences' => 'Mga kabòtan',
+'mypreferences' => 'Mga kabòtan ko',
+'prefs-edits' => 'Bilang kan mga hirá:',
+'prefsnologin' => 'Dai nakalaog',
+'prefsnologintext' => 'Ika dapat si [[Special:UserLogin|nakalaog]] para makapwesto nin mga kabôtan nin parágamit.',
+'changepassword' => 'Ribayan an sekretong panlaog',
+'prefs-skin' => "''Skin''",
+'skin-preview' => 'Tânawon',
+'prefs-math' => 'Mat',
+'datedefault' => 'Mayong kabôtan',
+'prefs-datetime' => 'Petsa asin oras',
+'prefs-personal' => 'Pambisto nin parágamit',
+'prefs-rc' => 'Mga kaaagi pa sanang pagribay',
+'prefs-watchlist' => 'Pigbabantayan',
+'prefs-watchlist-days' => 'Máximong número nin mga aldaw na ipapahiling sa lista nin mga pigbabantayan:',
+'prefs-watchlist-edits' => 'Máximong número nin pagbabâgo na ipapahiling sa pinadakulang lista nin pigbabantayan:',
+'prefs-misc' => 'Lain',
+'saveprefs' => 'Itagama',
+'resetprefs' => 'Ipwesto giraray',
+'prefs-editing' => 'Pighihira',
+'rows' => 'Mga hilera:',
+'columns' => 'Mga taytay:',
+'searchresultshead' => 'Hanápon',
+'resultsperpage' => 'Mga tamà kada pahina:',
+'contextlines' => 'Mga linya kada tamà:',
+'contextchars' => 'Konteksto kada linya:',
+'stub-threshold' => 'Kasagkoran kan <a href="#" class="stub">takod kan tambô</a> pigpopormato:',
+'recentchangesdays' => 'Mga aldáw na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
+'recentchangescount' => 'Bilang nin mga paghirá na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
+'savedprefs' => 'Itinagama na an mga kabôtan mo.',
+'timezonelegend' => 'Zona nin oras',
+'localtime' => 'Lokal na oras',
+'servertime' => "Oras kan ''server''",
+'guesstimezone' => "Bugtakan an ''browser''",
+'allowemail' => "Togotan an mga ''e''-surat halî sa ibang mga parágamit",
+'defaultns' => 'Maghilíng mûna sa ining mga ngaran-espacio:',
+'default' => 'pwestong normal',
+'prefs-files' => 'Mga dokumento',
+'youremail' => 'E-koreo:',
+'username' => 'Pangaran kan parágamit:',
+'uid' => 'ID kan parágamit:',
+'prefs-memberingroups' => 'Miembro kan {{PLURAL:$1|grupo|grupos}}:',
+'yourrealname' => 'Totoong pangaran:',
+'yourlanguage' => 'Tataramon:',
+'yourvariant' => 'Bariante:',
+'yournick' => 'Gahâ:',
+'badsig' => 'Dai pwede an bâgong pirmang ini; isúsog an mga HTML na takód.',
+'badsiglength' => 'Halabâon an gahâ; kaipuhan dai mababà sa $1 na mga karakter.',
+'gender-male' => 'Lalaki',
+'gender-female' => 'Babai',
+'email' => 'E-koreo',
+'prefs-help-realname' => 'Opsyonal an totoong pangaran asin kun itatao mo ini, gagamiton ini yangarig an mga sinurat mo maatribuir saimo.',
+'prefs-help-email' => 'Opsyonal an e-koreo, alagad pwede ka na masosog kan iba sa paagi kan saimong pahina o pahina nin olay na dai kinakaipuhan na ipabisto an identidad mo.',
+'prefs-help-email-required' => 'Kaipuhan an e-koreo.',
# User rights
-'userrights' => 'Pagmaneho kan mga derecho nin paragamit', # Not used as normal message but as header for the special page itself
+'userrights' => 'Pagmaneho kan mga derecho nin paragamit',
'userrights-lookup-user' => 'Magmaného kan mga grupo nin parágamit',
'userrights-user-editname' => 'Ilaog an pangaran kan parágamit:',
'editusergroup' => 'Hirahón an mga Grupo kan Parágamit',
@@ -937,6 +915,8 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
# Recent changes linked
'recentchangeslinked' => 'Mga angay na pagbabàgo',
+'recentchangeslinked-feed' => 'Mga angay na pagbabàgo',
+'recentchangeslinked-toolbox' => 'Mga angay na pagbabàgo',
'recentchangeslinked-title' => 'Mga pagbabàgong angay sa "$1"',
'recentchangeslinked-noresult' => 'Warang mga pagbabago sa mga pahinang nakatakod sa itinaong pagkalawig.',
'recentchangeslinked-summary' => "Ini an lista nin mga pagsangli na ginibo pa sana sa mga pahinang nakatakod halì sa sarong espesyal na pahina (o sa mga myembro nin sarong espesyal na kategorya).
@@ -945,7 +925,6 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
# Upload
'upload' => 'Ikargá an file',
'uploadbtn' => 'Ikargá an file',
-'reupload' => 'Ikargá giraray',
'reuploaddesc' => 'Magbalik sa pormulario kan pagkarga.',
'uploadnologin' => 'Dai nakalaog',
'uploadnologintext' => "Kaipuhan ika si [[Special:UserLogin|nakadagos]]
@@ -983,7 +962,6 @@ Kun boot mong ikaag an ladawan sa páhina, gamiton tabî an takod arog kan
* Pangaran kan pigkakargang ''file'': '''<tt>[[:$1]]</tt>'''
* Pangaran kan yaon nang ''file'': '''<tt>[[:$2]]</tt>'''
Magpili tabî nin ibang pangaran.",
-'fileexists-thumb' => "<center>'''Presenteng ladawan'''</center>",
'fileexists-thumbnail-yes' => "An ''file'' garo ladawan kan pinasadit ''(thumbnail)''. [[$1|thumb]]
Sosogon tabî an ''file'' '''<tt>[[:$1]]</tt>'''.
Kun an sinosog na ''file'' iyo an parehong ladawan na nasa dating sokol, dai na kaipuhan magkarga nin iba pang retratito.",
@@ -999,7 +977,6 @@ Kun igwa ka nin ladawan na may resolusyón na maximo ikarga tabî ini, kun dai,
'uploaddisabled' => 'Pigpopondó an mga pagkargá',
'uploaddisabledtext' => "Pigpopogolan an pagkarga nin mga ''file'' o sa ining wiki.",
'uploadscripted' => "Ining ''file'' igwang HTML o kodang eskritura na pwede ser na salang mainterpretar kan ''browser''.",
-'uploadcorrupt' => "Raot ining ''file'' o igwang ekstensyón na salâ. Sosogon tabî an ''file'' asin ikarga giraray.",
'uploadvirus' => "May virus an ''file''! Mga detalye: $1",
'sourcefilename' => 'Ginikanan kan pangaran kan dokumento',
'destfilename' => "''Filename'' kan destinasyón",
@@ -1025,6 +1002,7 @@ An historial nin pagparâ kan ''file'' nakakaag digdi para sa konbenyensya:",
'upload-curl-error28-text' => 'Sobrang haloy an pagsimbag kan sitio. Susugon tabi na nagaandar an sitio, maghalat nin muna asin iprobar giraray. Tibaad moot mong magprobar sa panahon na bako masiadong okupado.',
'license' => 'Paglilisensia',
+'license-header' => 'Paglilisensia',
'nolicense' => 'Mayong pigpilî',
'license-nopreview' => '(Mayong patânaw)',
'upload_source_url' => ' (sarong tama, na bukas sa publikong URL)',
@@ -1041,6 +1019,7 @@ An historial nin pagparâ kan ''file'' nakakaag digdi para sa konbenyensya:",
'listfiles_description' => 'Deskripsión',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Uusipón nin file',
'filehist-help' => 'Magpindot kan petsa/oras para mahiling an hitsura kan file sa piniling oras.',
'filehist-deleteall' => 'parâon gabos',
@@ -1055,11 +1034,7 @@ An historial nin pagparâ kan ''file'' nakakaag digdi para sa konbenyensya:",
'imagelinks' => 'Mga takód',
'linkstoimage' => 'An mga minasunod na pahina nakatakod sa dokumentong ini:',
'nolinkstoimage' => 'Mayong mga pahinang nakatakod sa dokumentong ini.',
-'sharedupload' => "Ining ''file'' sarong bakas na pagkarga asin pwede ser na gamiton kan ibang mga proyekto.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Hilingon tabi an $1 para sa iba pang talastas.',
-'shareduploadwiki-linktext' => "páhina nin descripsyón kan ''file''",
-'noimage' => 'Mayong file na may arog kaining pangaran, pwede kang $1.',
-'noimage-linktext' => 'ikarga ini',
+'sharedupload' => "Ining ''file'' sarong bakas na pagkarga asin pwede ser na gamiton kan ibang mga proyekto.",
'uploadnewversion-linktext' => 'Magkarga nin bàgong bersyon kaining file',
# File reversion
@@ -1125,8 +1100,8 @@ An páhina pigkokonsiderar na páhina nin klaripikasyon kun naggagamit ini nin t
'brokenredirects' => 'Putol na mga paglikay',
'brokenredirectstext' => 'An nagsusunod naglilikay kan takod sa mga pahinang mayo man:',
-'brokenredirects-edit' => '(hirahón)',
-'brokenredirects-delete' => '(parâon)',
+'brokenredirects-edit' => 'hirahón',
+'brokenredirects-delete' => 'parâon',
'withoutinterwiki' => 'Mga pahinang dai nin mga takod sa ibang tataramon',
'withoutinterwiki-summary' => 'An mga nagsusunod na páhina dai nakatakód sa mga bersión na ibang tataramón:',
@@ -1324,7 +1299,7 @@ Mayô nang iba pang paisi na ipapadara dapit sa iba pang mga pagbabâgo kun dai
--
Para bâgohon an pagpwesto kan saimong mga pigbabantayan, bisitahon an
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Komentaryo asin iba pang tabang:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1363,8 +1338,8 @@ Hilingón tabì an $2 para mahiling an lista nin mga kaaagi pa sanang pagparà.'
ni [[User:$2|$2]] ([[User talk:$2|Olay]]); may ibang parágamit na naghirá na o nagbalik na kaini.
Huring hirá ni [[User:$3|$3]] ([[User talk:$3|Olay]]).',
-'editcomment' => "Ini an nakakaag na komentaryo sa paghirá: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Binawî na mga paghirá kan [[Special:Contributions/$2|$2]] ([[User talk:$2|Magtaram]]); pigbalik sa dating bersyón ni [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Ini an nakakaag na komentaryo sa paghirá: \"''\$1''\".",
+'revertpage' => 'Binawî na mga paghirá kan [[Special:Contributions/$2|$2]] ([[User talk:$2|Magtaram]]); pigbalik sa dating bersyón ni [[User:$1|$1]]',
'rollback-success' => 'Binawî na mga paghirá ni $1; pigbalik sa dating bersyón ni $2.',
'sessionfailure' => "Garo may problema sa paglaog mo;
kinanselár ining aksyón bilang sarong paglikay kontra sa ''session hijacking''.
@@ -1383,7 +1358,6 @@ Pindotón tabî an \"back\" asin ikarga giraray an páhinang ginikanan mo, danga
'protectexpiry' => 'Mápasó:',
'protect_expiry_invalid' => 'Dai pwede ining pahanon nin pagpasó.',
'protect_expiry_old' => 'Nakalihis na an panahon nin pagpasó.',
-'protect-unchain' => 'Bawion an kandado sa mga permiso sa pagbalyó',
'protect-text' => "Pwede mong hilingón asin bàgohon an tangga nin proteksyon digdi para sa pahina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Dai mo pwedeng bâgohon an mga tangga kan proteksyon mientras na ika nababágat. Ini an mga presenteng pwesto kan páhina '''$1''':",
'protect-locked-dblock' => "Dai puedeng ibalyo an mga nibel kan proteksión ta may actibong kandado sa base nin datos.
@@ -1399,7 +1373,7 @@ Uya an ngonyan na mga pwesto kan pahinang '''$1''':",
'protect-expiring' => 'mápasó sa $1 (UTC)',
'protect-cascade' => 'Protektarán an mga pahinang nakaiba sa pahinang ini (proteksyon katarata)',
'protect-cantedit' => 'Dai mo mariribayan an mga tanggá kan proteksyon kaining pahina huli ta mayò ka nin permiso na ligwatón ini.',
-'protect-expiry-options' => '1ng ora:1 hour,1ng aldaw:1 day,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daing kasagkoran:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1ng ora:1 hour,1ng aldaw:1 day,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daing kasagkoran:infinite',
'restriction-type' => 'Permiso:',
'restriction-level' => 'Tanggá nin restriksyon:',
'minimum-size' => 'Pinaka sadit na sukol',
@@ -1467,7 +1441,7 @@ $1",
'contributions' => 'Mga kontribusyon kan parágamit',
'mycontris' => 'Mga kontribusyon ko',
'contribsub2' => 'Para sa $1 ($2)',
-'nocontribs' => 'Mayong mga pagbabago na nahanap na kapadis sa ining mga criteria.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Mayong mga pagbabago na nahanap na kapadis sa ining mga criteria.',
'uctop' => '(alituktok)',
'month' => 'Poon bulan (asin mas amay):',
'year' => 'Poon taon (asin mas amay):',
@@ -1475,6 +1449,9 @@ $1",
'sp-contributions-newbies' => 'Ipahiling an mga kontribusión kan mga bagong kuenta sana',
'sp-contributions-newbies-sub' => 'Para sa mga bàgong account',
'sp-contributions-blocklog' => 'Bagáton an usip',
+'sp-contributions-deleted' => 'Parâon an mga kontribusyon kan parágamit',
+'sp-contributions-talk' => 'Pag-olayán',
+'sp-contributions-userrights' => 'Pagmaneho kan mga derecho nin paragamit',
'sp-contributions-search' => 'Maghanap nin mga kontribusyon',
'sp-contributions-username' => 'IP o ngaran kan parágamit:',
'sp-contributions-submit' => 'Hanápon',
@@ -1517,7 +1494,7 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
'ipbenableautoblock' => 'Enseguidang bagaton an huring direccion nin IP na ginamit kaining paragamit, asin kon ano pang ibang IP na proprobaran nindang gamiton',
'ipbsubmit' => 'Bagáton ining parágamit',
'ipbother' => 'Ibang oras:',
-'ipboptions' => '2ng oras:2 hours,1ng aldaw:1 day,3ng aldaw:3 days,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daing kasagkoran:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2ng oras:2 hours,1ng aldaw:1 day,3ng aldaw:3 days,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daing kasagkoran:infinite',
'ipbotheroption' => 'iba',
'ipbotherreason' => 'Iba/dugang na rasón:',
'ipbhidename' => 'Itago an ngaran in paragamit para dai mahiling sa historial nin pagbagat, nakaandar na lista nin binagat asin lista nin paragamit',
@@ -1541,7 +1518,7 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
'ipblocklist-submit' => 'Hanápon',
'blocklistline' => '$1, $2 binagat $3 ($4)',
'infiniteblock' => 'daing siring',
-'expiringblock' => 'minapasó $1',
+'expiringblock' => 'minapasó $1 $2',
'anononlyblock' => 'anon. sana',
'noautoblockblock' => 'pigpopondo an enseguidang pagbagat',
'createaccountblock' => 'binagat an paggibo nin kuenta',
@@ -1613,7 +1590,7 @@ Sa mga kasong iyan, kaipuhan mong ibalyo o isalak an páhina nin mano-mano kun b
'move-watch' => 'Bantayán ining pahina',
'movepagebtn' => 'Ibalyó an pahina',
'pagemovedsub' => 'Naibalyó na',
-'movepage-moved' => '\'\'\'Naihubò na an "$1" sa "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Naihubò na an "$1" sa "$2"\'\'\'',
'articleexists' => 'Igwa nang pahina sa parehong pangaran, o dai pwede an pangaran na pigpilì mo.
Magpilì tabì nin ibang pangaran.',
'talkexists' => "'''Ibinalyo na an mismong pahina, alagad dai naibalyo an pahina nin orolay ta igwa na kaini sa bàgong titulo. Pagsaroon tabì ining duwa nin mano-mano.'''",
@@ -1656,8 +1633,6 @@ Sa kaso kan huri, pwede ka man na maggamit nin takod, arog kan [[{{#Special:Expo
'allmessagestext' => 'Ini an lista kan mga mensahe sa sistema sa ngaran-espacio na MediaWiki.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Dai pwedeng gamiton an '''{{ns:special}}:Allmessages''' ta sarado an '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Pansara nin pangaran kan mensahe:',
-'allmessagesmodified' => 'An mga pigmodikar sana an ipahiling',
# Thumbnails
'thumbnail-more' => 'Padakulaon',
@@ -1721,6 +1696,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Hanápon an mga pahina para sa tekstong ini',
'tooltip-p-logo' => 'Pangenot na Pahina',
'tooltip-n-mainpage' => 'Bisitahon an Pangenot na Pahina',
+'tooltip-n-mainpage-description' => 'Daláwon an pangenot na pahina',
'tooltip-n-portal' => 'Manonongod sa proyekto, an pwede mong gibohon, kun sain mo pwedeng hanapon an mga bagay',
'tooltip-n-currentevents' => 'Hanapon an mga impormasyon na ginikanan sa mga presenteng panyayari',
'tooltip-n-recentchanges' => 'An lista nin mga bàgong pagbabàgo sa wiki.',
@@ -1771,7 +1747,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => '(Mga)paragamit na anónimo kan {{SITENAME}}',
'siteuser' => 'Paragamit kan {{SITENAME}} na si $1',
-'lastmodifiedatby' => 'Ining páhina huring binago sa $2, $1 ni $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ining páhina huring binago sa $2, $1 ni $3.',
'othercontribs' => 'Binase ini sa trabaho ni $1.',
'others' => 'iba pa',
'siteusers' => '(Mga)paragamit kan {{SITENAME}} na si $1',
@@ -1807,6 +1783,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => "Pigrerekomendár para sa mga modernong ''browser''",
'mw_math_mathml' => 'MathML kun posible (experimental)',
+# Math errors
+'math_failure' => 'Nagprakaso an pagatíd-atíd',
+'math_unknown_error' => 'dai aram an salâ',
+'math_unknown_function' => 'Dai aram an gamit',
+'math_lexing_error' => 'may salâ sa analisador léxico',
+'math_syntax_error' => 'may salâ sa analisador nin sintaksis',
+'math_image_error' => 'Nagprakaso an konbersyon kan PNG; sosogon tabî an pagkaag nin latex, dvips, gs, asin ikonbertir',
+'math_bad_tmpdir' => 'Dai masuratan o magibo an direktoryo nin mat temp',
+'math_bad_output' => 'Dai masuratan o magibo an direktoryo kan salida nin math',
+'math_notexvc' => 'May nawawarang texvc na ehekutable; hilingón tabî an mat/README para makonpigurar.',
+
# Patrolling
'markaspatrolleddiff' => 'Markahán na pigpapatrulya',
'markaspatrolledtext' => 'Markahan ining pahina na pigpapatrulya',
@@ -1912,7 +1899,7 @@ Ano man na takod sa parehong linyang ini pigkokonsiderar na eksepsyon, i.e. mga
'exif-scenecapturetype-2' => 'Retrato',
'exif-scenecapturetype-3' => 'Eksenang banggi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometros kada oras',
'exif-gpsspeed-m' => 'Milya kada oras',
@@ -2041,7 +2028,7 @@ Pwede mo man [[Special:Watchlist/edit|gamiton an standard editor]].',
'watchlisttools-raw' => 'Hirahón an bàgong pigbabantayan',
# Special:Version
-'version' => 'Bersyon', # Not used as normal message but as header for the special page itself
+'version' => 'Bersyon',
# Special:SpecialPages
'specialpages' => 'Mga espesyal na pahina',
diff --git a/languages/messages/MessagesBe.php b/languages/messages/MessagesBe.php
index dadf9793..306c1046 100644
--- a/languages/messages/MessagesBe.php
+++ b/languages/messages/MessagesBe.php
@@ -36,24 +36,22 @@ $dateFormats = array(
);
$namespaceNames = array(
- NS_MEDIA => 'Мультымедыя',
- NS_SPECIAL => 'Адмысловае',
- NS_MAIN => '',
- NS_TALK => 'Размовы',
- NS_USER => 'Удзельнік',
- NS_USER_TALK => 'Размовы_з_удзельнікам',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_размовы',
- NS_FILE => 'Выява',
- NS_FILE_TALK => 'Размовы_пра_выяву',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Размовы_пра_MediaWiki',
- NS_TEMPLATE => 'Шаблон',
- NS_TEMPLATE_TALK => 'Размовы_пра_шаблон',
- NS_HELP => 'Даведка',
- NS_HELP_TALK => 'Размовы_пра_даведку',
- NS_CATEGORY => 'Катэгорыя',
- NS_CATEGORY_TALK => 'Размовы_пра_катэгорыю'
+ NS_MEDIA => 'Мультымедыя',
+ NS_SPECIAL => 'Адмысловае',
+ NS_TALK => 'Размовы',
+ NS_USER => 'Удзельнік',
+ NS_USER_TALK => 'Размовы_з_удзельнікам',
+ NS_PROJECT_TALK => '$1_размовы',
+ NS_FILE => 'Выява',
+ NS_FILE_TALK => 'Размовы_пра_выяву',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Размовы_пра_MediaWiki',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Размовы_пра_шаблон',
+ NS_HELP => 'Даведка',
+ NS_HELP_TALK => 'Размовы_пра_даведку',
+ NS_CATEGORY => 'Катэгорыя',
+ NS_CATEGORY_TALK => 'Размовы_пра_катэгорыю',
);
$separatorTransformTable = array(',' => '.', '.' => ',' );
@@ -113,6 +111,13 @@ $messages = array(
'underline-never' => 'Ніколі',
'underline-default' => 'Як у браўзеры',
+# Font style option in Special:Preferences
+'editfont-style' => 'Шрыфт у абшары праўкі:',
+'editfont-default' => 'Як у браўзеры',
+'editfont-monospace' => 'Роўна-шырокі',
+'editfont-sansserif' => 'Без засечак',
+'editfont-serif' => 'З засечкамі',
+
# Dates
'sunday' => 'Нядзеля',
'monday' => 'Панядзелак',
@@ -172,7 +177,7 @@ $messages = array(
'category-media-header' => 'Мультымедыя ў катэгорыі "$1"',
'category-empty' => "''Зараз у катэгорыі няма аніводнай старонкі або мультымедыйнага файла.''",
'hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}',
-'hidden-category-category' => 'Схаваныя катэгорыі', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Схаваныя катэгорыі',
'category-subcat-count' => 'У гэтай катэгорыі ёсць {{PLURAL:$2|наступная падкатэгорыя|наступныя {{PLURAL:$1|наступная падкатэгорыя|наступныя $1 падкатэгорый}} з агульнага ліку $2.}}',
'category-subcat-count-limited' => 'У гэтай катэгорыі ёсць {{PLURAL:$1|наступная падкатэгорыя|наступныя $1 падкатэгорый}}.',
'category-article-count' => '{{PLURAL:$2|У гэтай катэгорыі ёсць толькі наступная старонка.|У гэтай катэгорыі ёсць {{PLURAL:$1|1 старонка|$1 старонак}} з агульнага ліку $2.}}',
@@ -190,10 +195,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ ЧАПЫ MediaWiki (англ.)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ліставанне аб выпусках MediaWiki (англ.)]',
-'about' => 'Што гэта',
-'article' => 'Старонка змесціва',
-'newwindow' => '(адкрыецца ў новым акне)',
-'cancel' => 'Нічога',
+'about' => 'Што гэта',
+'article' => 'Старонка змесціва',
+'newwindow' => '(адкрыецца ў новым акне)',
+'cancel' => 'Нічога',
+'moredotdotdot' => 'Яшчэ...',
+'mypage' => 'Уласная старонка',
+'mytalk' => 'Размовы',
+'anontalk' => 'Размова для гэтага IP',
+'navigation' => 'Навігацыя',
+'and' => '&#32;і',
+
+# Cologne Blue skin
'qbfind' => 'Знайсці',
'qbbrowse' => 'Выбраць',
'qbedit' => 'Правіць',
@@ -201,15 +214,11 @@ $messages = array(
'qbpageinfo' => 'Кантэкст',
'qbmyoptions' => 'Свае старонкі',
'qbspecialpages' => 'Адмысловыя старонкі',
-'moredotdotdot' => 'Яшчэ...',
-'mypage' => 'Уласная старонка',
-'mytalk' => 'Размовы',
-'anontalk' => 'Размова для гэтага IP',
-'navigation' => 'Навігацыя',
-'and' => '&#32;і',
+'faq' => 'ЧАПЫ',
+'faqpage' => 'Project:ЧАПЫ',
-# Metadata in edit box
-'metadata_help' => 'Метазвесткі:',
+# Vector skin
+'vector-view-view' => 'Чытаць',
'errorpagetitle' => 'Памылка',
'returnto' => 'Вярнуцца да $1.',
@@ -259,7 +268,7 @@ $messages = array(
'otherlanguages' => 'На іншых мовах',
'redirectedfrom' => '(Пасля перасылкі з $1)',
'redirectpagesub' => 'Старонка-перасылка',
-'lastmodifiedat' => 'Апошняе змяненне старонкі адбылося $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Апошняе змяненне старонкі адбылося $2, $1.',
'viewcount' => 'Гэту старонку адкрывалі {{PLURAL:$1|адзін раз|$1 разоў}}.',
'protectedpage' => 'Старонка пад аховай',
'jumpto' => 'Перайсці да:',
@@ -270,7 +279,6 @@ $messages = array(
'aboutsite' => 'Пра {{GRAMMAR:вінавальны|{{SITENAME}}}}',
'aboutpage' => 'Project:Пра {{GRAMMAR:вінавальны|{{SITENAME}}}}',
'copyright' => 'Матэрыял даступны на ўмовах $1.',
-'copyrightpagename' => 'Аўтарскія правы {{GRAMMAR:родны|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Аўтарскія правы',
'currentevents' => 'Актуальныя падзеі',
'currentevents-url' => 'Project:Актуальныя падзеі',
@@ -278,8 +286,6 @@ $messages = array(
'disclaimerpage' => 'Project:Агульная адмова ад адказнасці',
'edithelp' => 'Даведка рэдактарскага акна',
'edithelppage' => 'Help:Праўка',
-'faq' => 'ЧАПЫ',
-'faqpage' => 'Project:ЧАПЫ',
'helppage' => 'Help:Змест',
'mainpage' => 'Першая старонка',
'mainpage-description' => 'Першая старонка',
@@ -360,10 +366,6 @@ $messages = array(
"$1"
з функцыі "$2".
Памылка, вернутая з БД: "$3: $4"',
-'noconnect' => 'Вікі-сервер зараз мае тэхнічныя праблемы, і не можа звязацца са сваім серверам баз даных.<br />
-$1',
-'nodb' => 'Немагчыма выбраць базу звестак $1',
-'cachederror' => 'Гэта кэшавая копія патрэбнай старонкі і можа не паказваць яе актуальнага стану.',
'laggedslavemode' => 'Увага: Старонка можа не ўтрымліваць апошніх зменаў.',
'readonly' => 'База звестак заблакаваная',
'enterlockreason' => 'Упішыце прычыну зачынення, а таксама меркаваны час адчынення',
@@ -390,7 +392,7 @@ $1',
'unexpected' => 'Нечаканае значэнне: "$1"="$2".',
'formerror' => 'Памылка: не ўдалося падаць форму',
'badarticleerror' => 'Аперацыя не дазволена на гэтай старонцы.',
-'cannotdelete' => 'Немагчыма выдаліць вызначаную старонку ці файл (магчыма, хтосьці іншы ўжо зрабіў гэта).',
+'cannotdelete' => 'Немагчыма сцерці старонку ці файл "$1". Магчыма, хтосьці іншы ўжо зрабіў гэта.',
'badtitle' => 'Няправільная назва',
'badtitletext' => 'Назва старонкі, па якую звярталіся, аказалася недапушчальнай, пустой, або няправільна прылучанай між-моўнай ці між-вікі назвай. Магчыма, у ёй ёсць знакі, якія нельга ўжываць у назвах.',
'perfcached' => 'Гэта ўзятыя з кэшу звесткі, і яны могуць не быць актуальнымі.',
@@ -425,12 +427,10 @@ $2',
'virus-unknownscanner' => 'невядомы антывірус:',
# Login and logout pages
-'logouttitle' => 'Выхад з сістэмы',
'logouttext' => "'''Вы выйшлі з сістэмы.'''
Можна працягваць працу на {{SITENAME}} ананімна, або можна [[Special:UserLogin|ўвайсці ў сістэму ізноў]], пад тым самым або пад іншым удзельніцкім імем. Заўважце, што некаторыя старонкі могуць паказвацца так, быццам вы яшчэ не выйшлі; у такім разе трэба ачысціць кэш вашага браўзера.",
'welcomecreation' => '== Вітаем, $1! == Ваш рахунак быў створаны. Не забудзьцеся дапасаваць свае [[Special:Preferences|{{SITENAME}} настáўленні]].',
-'loginpagetitle' => 'Уваход у сістэму',
'yourname' => 'Імя ўдзельніка',
'yourpassword' => 'Пароль',
'yourpasswordagain' => 'Паўтарыце пароль',
@@ -453,27 +453,7 @@ $2',
'badretype' => 'Уведзеныя паролі не аднолькавыя.',
'userexists' => 'Такое імя ўдзельніка ўжо занятае.
Трэба выбраць іншае імя.',
-'youremail' => 'Эл.пошта *',
-'username' => 'Імя ўдзельніка:',
-'uid' => 'ID удзельніка:',
-'prefs-memberingroups' => 'Уваходзіць у {{PLURAL:$1|групу|групы}}:',
-'yourrealname' => 'Сапраўднае імя *',
-'yourlanguage' => 'Мова:',
-'yourvariant' => 'Варыянт',
-'yournick' => 'Псеўданім:',
-'badsig' => 'Недапушчальны крынічны тэкст подпісу; праверце тэгі HTML.',
-'badsiglength' => 'Занадта доўгі подпіс. Трэба, каб ён быў карацейшым за $1 {{PLURAL:$1|знак|знакаў}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'Нявызначаны',
-'gender-male' => 'М',
-'gender-female' => 'Ж',
-'prefs-help-gender' => 'Неабавязкова: ужываецца дзеля пола-карэктнага звяртання з боку праграм. Гэтыя звесткі могуць стацца публічна вядомымі.',
-'email' => 'Эл.пошта',
-'prefs-help-realname' => 'Сапраўднае імя паведамляць неабавязкова, а калі яно паведамлена, то ім падпісваецца ваша праца.',
'loginerror' => 'Памылка ўваходу',
-'prefs-help-email' => 'Адрас эл.пошты паведамляць неабавязкова, але, калі ён вядомы, то можна атрымліваць эл.поштай новы пароль, калі забыты стары.
-Але вы можаце і не рассакрэчваць сваёй асобы, і кантактаваць з іншымі ўдзельнікамі на сваёй старонцы ўдзельніка ці ў сваёй старонцы размовы.',
-'prefs-help-email-required' => 'Патрэбны адрас электроннай пошты.',
'nocookiesnew' => 'Рахунак быў створаны, але ў сістэму вы не ўвайшлі. {{SITENAME}} карыстаецца квіткамі (кукі), каб апрацоўваць уваходы ўдзельнікаў, а гэтая функцыянальнасць адключана ў вашым браўзеры. Уключыце квіткі ў браўзеры, тады ўваходзьце са сваімі новымі імем удзельніка і паролем.',
'nocookieslogin' => '{{SITENAME}} карыстаецца квіткамі (кукі), каб пазнаваць удзельнікаў. У вашым браўзеры квіткі не дазволены. Дазвольце іх працу і паспрабуйце ізноў.',
'noname' => 'Вы не вызначылі правільнага імя ўдзельніка.',
@@ -484,7 +464,7 @@ $2',
'nouserspecified' => 'Вы мусіце вызначыць імя ўдзельніка.',
'wrongpassword' => 'Уведзены няправільны пароль. Паспрабуйце нанова.',
'wrongpasswordempty' => 'Быў уведзены пусты пароль. Паспрабуйце нанова.',
-'passwordtooshort' => 'Гэта занадта кароткі пароль. Трэба, каб пароль утрымліваў найменей {{PLURAL:$1|1 знак|$1 знакаў}}.',
+'passwordtooshort' => 'Трэба, каб у паролі было найменей {{PLURAL:$1|1 знак|$1 знакаў}}.',
'mailmypassword' => 'Адаслаць новы пароль эл.поштай',
'passwordremindertitle' => 'Нагаданне пра пароль ад {{SITENAME}}',
'passwordremindertext' => 'Нехта (магчыма, што вы, з адрасу IP $1) папрасіў выслаць новы пароль для пляцоўкі {{SITENAME}} ($4). Для ўдзельніка "$2" быў створаны тымчасовы пароль: "$3".
@@ -524,17 +504,12 @@ $2',
'retypenew' => 'Новы пароль паўторна:',
'resetpass_submit' => 'Наставіць пароль і ўвайсці',
'resetpass_success' => 'Ваш пароль паспяхова зменены! Цяпер уваходзім...',
-'resetpass_bad_temporary' => 'Няправільны часовы пароль. Мабыць, Вы ўжо змянілі пароль ці запыталі новы часовы пароль.',
'resetpass_forbidden' => 'Не дазволена мяняць паролі',
'resetpass-no-info' => 'Трэба ўвайсці ў сістэму, каб звяртацца да гэтай старонкі наўпрост.',
'resetpass-submit-loggedin' => 'Змяніць пароль',
'resetpass-wrong-oldpass' => 'Недапушчальны тымчасовы ці актуальны пароль.
Магчыма, вы ўжо змянілі свой пароль ці папрасілі новы тымчасовы.',
'resetpass-temp-password' => 'Тымчасовы пароль:',
-'resetpass-log' => 'Журнал скідання пароляў',
-'resetpass-logtext' => 'Ніжэй паказаны пералік удзельнікаў, чые паролі скідаліся адміністратарамі.',
-'resetpass-logentry' => 'зменены пароль для $1',
-'resetpass-comment' => 'Прычына скідання пароля:',
# Edit page toolbar
'bold_sample' => 'Цёмны тэкст',
@@ -605,7 +580,6 @@ $2',
'blockededitsource' => "Тэкст '''вашых правак''' у '''$1''' паказаны ніжэй:",
'whitelistedittitle' => 'Каб правіць старонкі, трэба ўвайсці ў сістэму',
'whitelistedittext' => 'Належыць $1 каб правіць старонкі.',
-'confirmedittitle' => 'Для рэдагавання патрабуецца пацверджаны адрас эл.пошты',
'confirmedittext' => 'Вам трэба пацвердзіць свой адрас эл.пошты перад тым, як правіць старонкі.
Вызначце і пацвердзіце адрас ў сваіх [[Special:Preferences|настáўленнях]].',
'nosuchsectiontitle' => 'Няма такога падраздзелу',
@@ -624,7 +598,8 @@ $2',
або [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.',
'userpage-userdoesnotexist' => 'Рахунак удзельніка "$1" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.',
'clearyourcache' => "'''Заўвага:''' Пасля замацоўвання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб пабачыць унесеныя змяненні. '''Mozilla / Firefox / Safari:''' націсніце '''Reload''', утрымліваючы ''Shift'', або націсніце ''Ctrl-F5'' ці ''Ctrl-R'' (''Cmd-R'' на Макінтошах); '''Konqueror:''': націсніце ''Reload'' або ''F5''; '''Opera''': увайдзіце ў настаўленні карыстальніка (меню ''Tools'', падпункт ''Preferences''), там ачысціце кэш; '''Internet Explorer:''' націсніце ''Refresh'', утрымліваючы ''Ctrl'', або націсніце ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Наменка:''' Пакарыстайцеся кнопкай \"''{{:{{ns:mediawiki}}:showpreview}}''\", каб выпрабаваць новы код CSS/JS, ''перш'' чым яго запісваць.",
+'usercssyoucanpreview' => "'''Наменка:''' Пакарыстайцеся кнопкай \"''{{:{{ns:mediawiki}}:showpreview}}''\", каб выпрабаваць новы код CSS, ''перш'' чым яго запісваць.",
+'userjsyoucanpreview' => "'''Наменка:''' Пакарыстайцеся кнопкай \"''{{:{{ns:mediawiki}}:showpreview}}''\", каб выпрабаваць новы код JS, ''перш'' чым яго запісваць.",
'usercsspreview' => "'''Памятайце, што гэта толькі папярэдні паказ вашага ўласнага CSS. Праўкі яшчэ не замацаваныя!'''",
'userjspreview' => "'''Памятайце, што гэта выпрабаванне/папярэдні паказ вашага ўласнага Яваскрыпту, які яшчэ не быў замацаваны!'''",
'userinvalidcssjstitle' => "'''Увага:''' Няма вокладкі з назвай \"\$1\". Памятайце, што свае старонкі .css і .js называюцца толькі малымі літарамі, такім чынам, напр., {{ns:user}}:Foo/monobook.css, а не {{ns:user}}:Foo/Monobook.css.",
@@ -668,13 +643,15 @@ $2',
'readonlywarning' => "'''УВАГА: зараз вы не можаце запісаць свае праўкі, таму што база даных зачынена на абслугоўванне. Магчыма, варта перанесці ваш тэкст у асобны файл і запісаць на потым.
Адміністратар, які зачыніў базу, растлумачыў гэта так: $1'''",
-'protectedpagewarning' => "'''УВАГА: Гэтая старонка пастаўлена пад ахову, і таму яе могуць правіць толькі адміністратары. Праверце, ці Вы кіруецеся [[{{ns:project}}:Праца з засцераганымі старонкамі|правіламі працы са старонкамі пад аховай]].'''",
-'semiprotectedpagewarning' => "'''Увага:''' старонка пад аховай, таму яе могуць правіць толькі рэгістраваныя ўдзельнікі.",
+'protectedpagewarning' => "'''УВАГА: старонка пастаўленая пад ахову, таму яе могуць правіць толькі адміністратары.'''
+Ніжэй паказаны апошні запіс з адпаведнага журналу:",
+'semiprotectedpagewarning' => "'''Увага:''' старонка пастаўленая пад ахову, таму яе могуць правіць толькі рэгістраваныя ўдзельнікі («паў-ахова»). Ніжэй паказаны апошні запіс з адпаведнага журналу:",
'cascadeprotectedwarning' => "'''Увага:''' гэтая старонка ахоўваецца, таму яе могуць правіць толькі ўдзельнікі з правамі адміністратара. Прычына аховы: улучэнне гэтай старонкі ў {{PLURAL:$1|старонку, якая стаіць|старонкі, якія стаяць}} пад каскаднай аховай:",
-'titleprotectedwarning' => "'''УВАГА: Старонка пастаўленая пад такую ахову, што толькі ўдзельнікі з [[Special:ListGroupRights|адмысловымі правамі]] могуць яе ствараць.'''",
-'templatesused' => 'Шаблоны на гэтай старонцы:',
-'templatesusedpreview' => 'Шаблоны ў гэтым перадпаказе:',
-'templatesusedsection' => 'Шаблоны ў гэтым раздзеле:',
+'titleprotectedwarning' => "'''УВАГА: старонка пастаўленая пад ахову, таму яе могуць ствараць толькі ўдзельнікі з [[Special:ListGroupRights|адмысловымі правамі]].'''
+Ніжэй паказаны апошні запіс з адпаведнага журналу:",
+'templatesused' => 'Шабло{{PLURAL:$1|н|ны}} на гэтай старонцы:',
+'templatesusedpreview' => 'Шабло{{PLURAL:$1|н у|ны ў}} гэтым перадпаказе:',
+'templatesusedsection' => 'Шабло{{PLURAL:$1|н у|ны ў}} гэтым раздзеле:',
'template-protected' => '(ахоўваецца)',
'template-semiprotected' => '(часткова ахоўвацца)',
'hiddencategories' => 'Старонка належыць да {{PLURAL:$1|1 схаванай катэгорыі|$1 схаваных катэгорый}}:',
@@ -685,13 +662,12 @@ $2',
'permissionserrors' => 'Памылкі дазволаў',
'permissionserrorstext' => 'Вам не дазволена гэтага рабіць, з наступн{{PLURAL:$1|ай прычыны|ых прычын}}:',
'permissionserrorstext-withaction' => 'Вам не дазволена $2, з-за наступ{{PLURAL:$1|най прычыны|ных прычын}}:',
-'recreate-deleted-warn' => "'''Увага: Вы аднаўляеце старонку, якая раней была сцёрта.'''
+'recreate-moveddeleted-warn' => "'''Увага: Вы аднаўляеце старонку, якая раней была сцёрта.'''
Трэба падумаць, ці варта далей працаваць з гэтай старонкай.
-Вось журнал сціранняў для гэтай старонкі:",
-'deleted-notice' => 'Гэтая старонка была сцёртая.
-Ніжэй паказаны журнал сціранняў для гэтай старонкі.',
-'deletelog-fulllog' => 'Паказаць поўны журнал',
+Вось журнал сціранняў і пераносаў для гэтай старонкі:",
+'moveddeleted-notice' => 'Гэтая старонка была сцёртая.
+Ніжэй паказаны журнал сціранняў і пераносаў для гэтай старонкі.',
'edit-hook-aborted' => 'Праўка спынена хукам (hook).
Тлумачэнняў не было.',
'edit-gone-missing' => 'Не ўдалося абнавіць старонку.
@@ -733,7 +709,7 @@ $2',
'currentrev' => 'Актуальная версія',
'currentrev-asof' => 'Актуальная версія на $1',
'revisionasof' => 'Версія ад $1',
-'revision-info' => 'Версія ад $1, аўтар $2', # Additionally available: $3: revision id
+'revision-info' => 'Версія ад $1, аўтар $2',
'previousrevision' => '← Папярэдн. версія',
'nextrevision' => 'Навейшая версія →',
'currentrevisionlink' => 'Актуальная версія',
@@ -744,7 +720,6 @@ $2',
'page_last' => 'апошн.',
'histlegend' => 'Выбар розніцы: адзначце радыё-боксы версій, якія трэба параўнаць і націсніце enter або кнопку, што ўнізе.<br /> Тлумачэнне: (з актуальн.) = розніца з актуальнай версіяй, (з папярэд.) = розніца з папярэдняй версіяй, д = дробная праўка.',
'history-fieldset-title' => 'Прагляд гісторыі',
-'deletedrev' => '[сцёртая]',
'histfirst' => 'Самае старое',
'histlast' => 'Самае новае',
'historysize' => '({{PLURAL:$1|1 байт|$1 байтаў}})',
@@ -753,67 +728,68 @@ $2',
# Revision feed
'history-feed-title' => 'Гісторыя версій',
'history-feed-description' => 'Гісторыя версій гэтай старонкі',
-'history-feed-item-nocomment' => '$1 на $2', # user at time
+'history-feed-item-nocomment' => '$1 на $2',
'history-feed-empty' => 'Не знойдзена такая старонка.
Магчыма, яна была сцёртая або названая іначай.
Паспрабуйце [[Special:Search|пашукаць яе на гэтай Вікі]] сярод новых старонак.',
# Revision deletion
-'rev-deleted-comment' => '(каментар сцёрты)',
-'rev-deleted-user' => '(удзельнік выдалены)',
-'rev-deleted-event' => '(сцёртае дзеянне з журналам)',
-'rev-deleted-text-permission' => 'Гэтая версія старонкі была сцёртая з публічных архіваў.
-Магчыма, падрабязнасці пра гэта ёсць у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].',
-'rev-deleted-text-view' => 'Гэтая версія старонкі была сцёртая з публічных архіваў.
-Як адміністратар на гэтай пляцоўцы, вы яе можаце бачыць;
-магчыма, падрабязнасці пра гэта ёсць у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].',
-'rev-deleted-no-diff' => 'Немагчыма паказаць гэтую розніцу, таму што адна з версій была сцёртая з публічных архіваў.
-Магчыма, у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў] ёсць падрабязнасці.',
-'rev-delundel' => 'паказаць/схаваць',
-'revisiondelete' => 'Сцерці/аднавіць версіі',
-'revdelete-nooldid-title' => 'Недапушчальная мэтавая версія',
-'revdelete-nooldid-text' => 'Не выбрана мэтавая версія (ці версіі) дзеля выканання гэтай функцыі, азначаная версія не існуе, або вы спрабуеце схаваць актуальную версію.',
-'revdelete-nologtype-title' => 'Не выбраны тып журнала',
-'revdelete-nologtype-text' => 'Вы не выбралі тыпу журнала дзеля гэтага дзеяння.',
-'revdelete-toomanytargets-title' => 'Занадта шмат мэтаў',
-'revdelete-toomanytargets-text' => 'Вы вызначылі занадта шмат мэтавых тыпаў для такога дзеяння.',
-'revdelete-nologid-title' => 'Некарэктны запіс у журнале',
-'revdelete-nologid-text' => 'Вы або не вызначылі падзеі ў мэтавым журнале, з якой жадаеце правесці гэтае дзеянне, або вызначаны запіс не існуе.',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбраная версія|Выбраныя версіі}} [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журналу:'''",
-'revdelete-text' => "'''Сцёртыя версіі і падзеі і надалей будуць паказвацца ў гісторыі старонкі і ў журналах, але часткі іх зместу не будуць даступныя для публікі.'''
-
-Іншыя адміністратары пляцоўкі {{SITENAME}} і надалей змогуць бачыць схаваны змест і аднаўляць яго праз гэты самы інтэрфейс, калі не будзе ўведзена дадатковых абмежаванняў.",
-'revdelete-suppress-text' => "Заглушэнне належыць ужываць '''выключна''' ў наступных выпадках:
+'rev-deleted-comment' => '(каментар сцёрты)',
+'rev-deleted-user' => '(удзельнік выдалены)',
+'rev-deleted-event' => '(сцёртае дзеянне з журналам)',
+'rev-deleted-text-permission' => "Гэтая версія старонкі была '''сцёртая'''.
+Падрабязнасці гл. у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
+'rev-deleted-text-view' => "Гэтая версія старонкі была '''сцёртая'''.
+Адміністратары могуць яе бачыць; падрабязнасці гл. у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
+'rev-deleted-no-diff' => "Немагчыма паказаць розніцу, таму што адна з версій была '''сцёртая'''.
+Падрабязнасці гл. у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
+'rev-deleted-unhide-diff' => "Адна з версій у гэтай розніцы (''diff'') была '''сцёртая'''.
+Падрабязнасці гл. у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].
+Адміністратары могуць [$1 бачыць гэтую розніцу].",
+'rev-delundel' => 'паказаць/схаваць',
+'revisiondelete' => 'Сцерці/аднавіць версіі',
+'revdelete-nooldid-title' => 'Недапушчальная мэтавая версія',
+'revdelete-nooldid-text' => 'Не выбрана мэтавая версія (ці версіі) дзеля выканання гэтай функцыі, азначаная версія не існуе, або вы спрабуеце схаваць актуальную версію.',
+'revdelete-nologtype-title' => 'Не выбраны тып журнала',
+'revdelete-nologtype-text' => 'Вы не выбралі тыпу журнала дзеля гэтага дзеяння.',
+'revdelete-nologid-title' => 'Некарэктны запіс у журнале',
+'revdelete-nologid-text' => 'Вы або не вызначылі падзеі ў мэтавым журнале, з якой жадаеце правесці гэтае дзеянне, або вызначаны запіс не існуе.',
+'revdelete-selected' => "'''{{PLURAL:$2|Выбраная версія|Выбраныя версіі}} [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журналу:'''",
+'revdelete-text' => "'''Сцёртыя версіі і падзеі надалей будуць паказвацца ў гісторыі старонкі і ў журналах, але часткі іх зместу не будуць даступныя для публікі.'''
+Іншыя адміністратары пляцоўкі {{SITENAME}} надалей змогуць бачыць схаваны змест і аднаўляць яго праз гэты самы інтэрфейс, калі не будзе ўведзена дадатковых абмежаванняў.",
+'revdelete-confirm' => 'Пацвердзіце, што вы жадаеце гэта зрабіць, што вы разумееце наступствы, і што вы робіце гэта ў адпаведнасці з [[{{MediaWiki:Policy-url}}|арганізацыйнымі правіламі]].',
+'revdelete-suppress-text' => "Заглушэнне належыць ужываць '''выключна''' ў наступных выпадках:
* Недапушчальная асабістая інфармацыя
*: ''хатнія адрасы і тэлефоны, нумары страхавання і г.д.''",
-'revdelete-legend' => 'Настроіць абмежаванні бачнасці',
-'revdelete-hide-text' => 'Не паказваць тэкст версіі',
-'revdelete-hide-name' => 'Не паказваць дзеяння і мэты',
-'revdelete-hide-comment' => 'Не паказваць тлумачэння праўкі',
-'revdelete-hide-user' => 'Не паказваць ўдзельнага імя аўтара або яго адрас IP',
-'revdelete-hide-restricted' => 'Таксама абмяжоўваць такім чынам адміністратараў',
-'revdelete-suppress' => 'Прыпыняць* звесткі ад адміністратараў таксама',
-'revdelete-hide-image' => 'Схаваць змест файла',
-'revdelete-unsuppress' => 'Зняць абмежаванні на адноўленыя версіі',
-'revdelete-log' => 'Прычына:',
-'revdelete-submit' => 'Зрабіць для выбранай версіі',
-'revdelete-logentry' => 'зменена бачнасць версіі [[$1]]',
-'logdelete-logentry' => 'зменена бачнасць падзеі* [[$1]]',
-'revdelete-success' => "'''Паспяхова абноўлена бачнасць версіі.'''",
-'logdelete-success' => "'''Бачнасць падзеі настаўленая паспяхова.'''",
-'revdel-restore' => 'Памяняць бачнасць',
-'pagehist' => 'Гісторыя старонкі',
-'deletedhist' => 'Сцёртая гісторыя',
-'revdelete-content' => 'змест',
-'revdelete-summary' => 'тлумачэнне праўкі',
-'revdelete-uname' => 'удзельнік',
-'revdelete-restricted' => 'пастаўленыя абмежаванні на адміністратараў',
-'revdelete-unrestricted' => 'знятыя абмежаванні з адміністратараў',
-'revdelete-hid' => 'не паказваць $1',
-'revdelete-unhid' => 'паказваць $1',
-'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|версіі|версій}}',
-'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|падзеі|падзей}}',
+'revdelete-legend' => 'Настроіць абмежаванні бачнасці',
+'revdelete-hide-text' => 'Не паказваць тэкст версіі',
+'revdelete-hide-image' => 'Схаваць змест файла',
+'revdelete-hide-name' => 'Не паказваць дзеяння і мэты',
+'revdelete-hide-comment' => 'Не паказваць тлумачэння праўкі',
+'revdelete-hide-user' => 'Не паказваць ўдзельнага імя аўтара або яго адрас IP',
+'revdelete-hide-restricted' => 'Таксама абмяжоўваць такім чынам адміністратараў',
+'revdelete-suppress' => 'Прыпыняць* звесткі ад адміністратараў таксама',
+'revdelete-unsuppress' => 'Зняць абмежаванні на адноўленыя версіі',
+'revdelete-log' => 'Прычына:',
+'revdelete-submit' => 'Прымяніць да азначан{{PLURAL:$1|ай ерсіі|ых версій}}',
+'revdelete-logentry' => 'зменена бачнасць версіі [[$1]]',
+'logdelete-logentry' => 'зменена бачнасць падзеі* [[$1]]',
+'revdelete-success' => "'''Паспяхова абноўлена бачнасць версіі.'''",
+'logdelete-success' => "'''Бачнасць падзеі настаўленая паспяхова.'''",
+'revdel-restore' => 'Памяняць бачнасць',
+'pagehist' => 'Гісторыя старонкі',
+'deletedhist' => 'Сцёртая гісторыя',
+'revdelete-content' => 'змест',
+'revdelete-summary' => 'тлумачэнне праўкі',
+'revdelete-uname' => 'удзельнік',
+'revdelete-restricted' => 'пастаўленыя абмежаванні на адміністратараў',
+'revdelete-unrestricted' => 'знятыя абмежаванні з адміністратараў',
+'revdelete-hid' => 'не паказваць $1',
+'revdelete-unhid' => 'паказваць $1',
+'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|версіі|версій}}',
+'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|падзеі|падзей}}',
+'revdelete-edit-reasonlist' => 'Правіць прычыны сцірання',
# Suppression log
'suppressionlog' => 'Журнал падаўленняў',
@@ -854,63 +830,8 @@ $2',
'difference' => '(Розніца між версіямі)',
'lineno' => 'Радок $1:',
'compareselectedversions' => 'Параўнаць азначаныя версіі',
-'visualcomparison' => 'Параўнанне на від',
-'wikicodecomparison' => 'Параўнанне вікі-тэкстаў',
'editundo' => 'адкат',
'diff-multi' => '(Не паказан{{PLURAL:$1|а адна прамежкавая версія|ы $1 прамежкавых версій}}.)',
-'diff-movedto' => 'перанесена ў $1',
-'diff-styleadded' => 'дададзены стыль $1',
-'diff-added' => 'дададзена $1',
-'diff-changedto' => 'заменена на $1',
-'diff-movedoutof' => 'вынесена з $1',
-'diff-styleremoved' => 'зняты стыль $1',
-'diff-removed' => 'сцёртае $1',
-'diff-changedfrom' => 'заменена $1',
-'diff-src' => 'выток',
-'diff-withdestination' => 'з мэтай $1',
-'diff-with' => '&#32;у параўнанні з $1 $2',
-'diff-with-final' => '&#32;і $1 $2',
-'diff-width' => 'шырыня',
-'diff-height' => 'вышыня',
-'diff-p' => "'''абзац'''",
-'diff-blockquote' => "'''цытата'''",
-'diff-h1' => "'''загаловак (1-ы ўзровень)'''",
-'diff-h2' => "'''загаловак (2-і ўзровень)'''",
-'diff-h3' => "'''загаловак (3-і ўзровень)'''",
-'diff-h4' => "'''загаловак (4-ы ўзровень)'''",
-'diff-h5' => "'''загаловак (5-ы ўзровень)'''",
-'diff-pre' => "'''самафарматаваны блок'''",
-'diff-div' => "'''падзел'''",
-'diff-ul' => "'''непарадкаваны спіс'''",
-'diff-ol' => "'''упарадкаваны спіс'''",
-'diff-li' => "'''складнік спісу'''",
-'diff-table' => "'''табліца'''",
-'diff-tbody' => "'''змесціва табліцы'''",
-'diff-tr' => "'''радок'''",
-'diff-td' => "'''клетка'''",
-'diff-th' => "'''загаловак'''",
-'diff-br' => "'''разрыў'''",
-'diff-hr' => "'''гарызантальная лінія'''",
-'diff-code' => "'''блок камп'ютарнага тэксту'''",
-'diff-dl' => "'''спіс вызначэнняў'''",
-'diff-dt' => "'''тэрмін у складзе вызначэння'''",
-'diff-dd' => "'''вызначэнне'''",
-'diff-input' => "'''увод'''",
-'diff-form' => "'''фармуляр'''",
-'diff-img' => "'''выява'''",
-'diff-span' => "'''абсяг'''",
-'diff-a' => "'''спасылка'''",
-'diff-i' => "'''курсіў'''",
-'diff-b' => "'''цёмны'''",
-'diff-strong' => "'''моцна выдзелена'''",
-'diff-em' => "'''выдзелена'''",
-'diff-font' => "'''шрыфт'''",
-'diff-big' => "'''вялікі'''",
-'diff-del' => "'''сцёрта'''",
-'diff-tt' => "'''роўнашырокі'''",
-'diff-sub' => "'''ніжні індэкс'''",
-'diff-sup' => "'''верхні індэкс'''",
-'diff-strike' => "'''перакрэслена'''",
# Search results
'searchresults' => 'Вынікі пошуку',
@@ -918,28 +839,25 @@ $2',
'searchresulttext' => 'Больш падрабязна пра пошук на {{SITENAME}}: [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Вы шукалі \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|усе назвы, што пачынаюцца з "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усе назвы, што спасылаюцца на "$1"]])',
'searchsubtitleinvalid' => "Вы шукалі '''$1'''",
-'noexactmatch' => "'''Няма старонкі з назвай \"\$1\".''' Вы можаце яе [[:\$1|стварыць]].",
-'noexactmatch-nocreate' => "'''Няма старонкі з назвай \"\$1\".'''",
'toomanymatches' => 'Знойдзена занадта шмат адпаведнасцяў, паспрабуйце змяніць шуканае.',
'titlematches' => 'Знойдзена ў назвах',
'notitlematches' => 'Нічога не знойдзена ў назвах',
'textmatches' => 'Знойдзена ў тэкстах',
'notextmatches' => 'Нічога не знойдзена ў тэкстах старонак',
-'prevn' => 'папярэдн. $1',
-'nextn' => 'наступ. $1',
+'prevn' => 'папярэдн. {{PLURAL:$1|$1}}',
+'nextn' => 'наступ. {{PLURAL:$1|$1}}',
'prevn-title' => 'Папярэдні{{PLURAL:$1| вынік|я $1 вынікі(аў)}}',
'nextn-title' => 'Наступны{{PLURAL:$1| вынік|я $1 вынікі(аў)}}',
'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі(аў)}} на старонку',
-'viewprevnext' => 'Гл. ($1) ($2) ($3).',
+'viewprevnext' => 'Гл. ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Настаўленні пошуку',
'searchmenu-exists' => "'''На вікі ёсць старонка \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Стварыць на гэтай вікі старонку \"[[:\$1]]\"'''",
'searchhelp-url' => 'Help:Змест',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Паказаць старонкі з гэтым прэфіксам]]',
'searchprofile-articles' => 'Артыкулы',
-'searchprofile-articles-and-proj' => 'Артыкулы і старонкі праекта',
-'searchprofile-project' => 'Старонкі праекта',
-'searchprofile-images' => 'Файлы',
+'searchprofile-project' => 'Старонкі даведкі і праекта',
+'searchprofile-images' => 'Мультымедыя',
'searchprofile-everything' => 'Усё',
'searchprofile-advanced' => 'Складана',
'searchprofile-articles-tooltip' => 'Шукаць у $1',
@@ -947,8 +865,6 @@ $2',
'searchprofile-images-tooltip' => 'Шукаць файлы',
'searchprofile-everything-tooltip' => 'Шукаць паўсюль (таксама ў размовах)',
'searchprofile-advanced-tooltip' => 'Шукаць у дадатковых прасторах назваў',
-'prefs-search-nsdefault' => 'Шукаць стандартна:',
-'prefs-search-nscustom' => 'Шукаць у дадатковых прасторах назваў:',
'search-result-size' => '$1 ({{PLURAL:$2|1 слова|$2 словаў}})',
'search-result-score' => 'Адпаведнасць: $1%',
'search-redirect' => '(перасылка $1)',
@@ -965,7 +881,6 @@ $2',
'searchall' => 'усе',
'showingresults' => "Ніжэй паказаны да {{PLURAL:$1|'''1''' выніку|'''$1''' вынікаў}}, пачынаючы з нумару '''$2'''.",
'showingresultsnum' => "Ніжэй паказаны{{PLURAL:$3| '''1''' вынік|я '''$3''' вынікаў}}, пачынаючы з нумару #'''$2'''.",
-'showingresultstotal' => "Ніжэй паказаны{{PLURAL:$4| вынік '''$1''' з ліку '''$3'''|я вынікі '''$1 - $2''' з ліку '''$3'''}}",
'nonefound' => "'''Увага''': прадвызначана пошук вядзецца толькі ў некаторых прасторах назваў. Паспрабуйце прыпісаць да свайго звароту пачатковае ''all:'', каб шукаць ва ўсім змесце (у размовах, шаблонах і г.д.), або прыпішыце да звароту патрэбную прастору назваў.",
'search-nonefound' => 'Нічога не было знойдзена.',
'powersearch' => 'Знайсці',
@@ -976,35 +891,26 @@ $2',
'search-external' => 'Вонкавы пошук',
'searchdisabled' => 'Функцыя пошуку {{SITENAME}} не працуе. Тымчасова можна шукаць з дапамогай Google. Заўважце, што тамтэйшыя індэксы зместу {{SITENAME}} могуць не быць актуальнымі.',
+# Quickbar
+'qbsettings' => 'Хуткая стужка',
+'qbsettings-none' => 'Няма',
+'qbsettings-fixedleft' => 'Прымацавана злева',
+'qbsettings-fixedright' => 'Прымацавана справа',
+'qbsettings-floatingleft' => 'Плавае злева',
+'qbsettings-floatingright' => 'Плавае справа',
+
# Preferences page
'preferences' => 'Настаўленні',
'mypreferences' => 'Настáўленні',
'prefs-edits' => 'Колькасць правак:',
'prefsnologin' => 'Не ўвайшлі',
-'prefsnologintext' => 'Належыць <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} увайсці ў сістэму]</span>, каб мяняць свае настаўленні.',
-'prefsreset' => 'Настаўленні вернуты да пачатковых з архіву.',
-'qbsettings' => 'Хуткая стужка',
-'qbsettings-none' => 'Няма',
-'qbsettings-fixedleft' => 'Прымацавана злева',
-'qbsettings-fixedright' => 'Прымацавана справа',
-'qbsettings-floatingleft' => 'Плавае злева',
-'qbsettings-floatingright' => 'Плавае справа',
+'prefsnologintext' => 'Належыць <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} увайсці ў сістэму]</span>, каб мяняць свае настаўленні.',
'changepassword' => 'Пароль',
-'skin' => 'Вокладка',
+'prefs-skin' => 'Вокладка',
'skin-preview' => 'перадпаказ',
-'math' => 'Матэматыка',
-'dateformat' => 'Фармат даты',
+'prefs-math' => 'Матэматыка',
'datedefault' => 'Не вызначана',
-'datetime' => 'Дата і час',
-'math_failure' => 'Не ўдалося разабраць',
-'math_unknown_error' => 'невядомая памылка',
-'math_unknown_function' => 'невядомая функцыя',
-'math_lexing_error' => 'лексічная памылка',
-'math_syntax_error' => 'памылка сінтаксісу',
-'math_image_error' => 'Не ўдалося ператварыць PNG; праверце правільнасць інсталяцыі пакетаў latex, dvips, gs, convert',
-'math_bad_tmpdir' => 'Немагчыма запісаць у або стварыць тымчасовы каталог для матэматыкі',
-'math_bad_output' => 'Немагчыма запісаць у або стварыць выводны каталог для матэматыкі',
-'math_notexvc' => 'Не знойдзены выканальны модуль texvc; аб яго настаўленнях чытайце ў math/README.',
+'prefs-datetime' => 'Дата і час',
'prefs-personal' => 'Удзельнік',
'prefs-rc' => '{{:{{ns:mediawiki}}:Recentchanges/be}}',
'prefs-watchlist' => 'Спіс назіранага',
@@ -1017,7 +923,7 @@ $2',
'saveprefs' => 'Запісаць',
'resetprefs' => 'Да пачатковых',
'restoreprefs' => 'Аднавіць усе прадвызначэнні',
-'textboxsize' => 'Праца',
+'prefs-editing' => 'Праца',
'prefs-edit-boxsize' => 'Памер рэдактарскага акна.',
'rows' => 'Радкі:',
'columns' => 'Калонкі:',
@@ -1028,12 +934,10 @@ $2',
'stub-threshold' => 'Парог для паказу спасылкі <a href="#" class="stub">як на пачатковы артыкул</a> (у байтах):',
'recentchangesdays' => 'За колькі дзён паказваць {{lc:{{:{{ns:mediawiki}}:recentchanges/be}}}}:',
'recentchangesdays-max' => '(найбольш $1 {{PLURAL:$1|дзень|дзён}})',
-'recentchangescount' => 'Прадвызначаная колькасць правак для паказу ў нядаўніх змяненнях, гісторыях старонак і журналах:',
+'recentchangescount' => 'Прадвызначаная колькасць правак дзеля паказу:',
'savedprefs' => 'Настáўленні замацаваныя.',
'timezonelegend' => 'Часавы пояс:',
-'timezonetext' => '¹На колькі гадзін мясцовы час адрозніваецца ад сервернага (UTC).',
'localtime' => 'Мясцовы час:',
-'timezoneselect' => 'Часавы пояс:',
'timezoneuseserverdefault' => 'Як на серверы',
'timezoneuseoffset' => 'Іншая розніца',
'timezoneoffset' => 'Розніца¹:',
@@ -1052,14 +956,34 @@ $2',
'allowemail' => 'Атрымліваць эл.пошту ад іншых удзельнікаў',
'prefs-searchoptions' => 'Магчымасці пошуку',
'prefs-namespaces' => 'Прасторы назваў',
-'defaultns' => 'Шукаць у гэтых прасторах назваў, калі не загадана іначай:',
+'defaultns' => 'Іначай шукаць у гэтых прасторах назваў:',
'default' => 'прадвызначэнні',
-'files' => 'Файлы',
+'prefs-files' => 'Файлы',
'prefs-custom-css' => 'Уласны CSS',
'prefs-custom-js' => 'Уласны JS',
+'youremail' => 'Эл.пошта *',
+'username' => 'Імя ўдзельніка:',
+'uid' => 'ID удзельніка:',
+'prefs-memberingroups' => 'Уваходзіць у {{PLURAL:$1|групу|групы}}:',
+'yourrealname' => 'Сапраўднае імя *',
+'yourlanguage' => 'Мова:',
+'yourvariant' => 'Варыянт',
+'yournick' => 'Псеўданім:',
+'badsig' => 'Недапушчальны крынічны тэкст подпісу; праверце тэгі HTML.',
+'badsiglength' => 'Занадта доўгі подпіс. Трэба, каб ён быў карацейшым за $1 {{PLURAL:$1|знак|знакаў}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'Нявызначаны',
+'gender-male' => 'М',
+'gender-female' => 'Ж',
+'prefs-help-gender' => 'Неабавязкова: ужываецца дзеля пола-карэктнага звяртання з боку праграм. Гэтыя звесткі могуць стацца публічна вядомымі.',
+'email' => 'Эл.пошта',
+'prefs-help-realname' => 'Сапраўднае імя паведамляць неабавязкова, а калі яно паведамлена, то ім падпісваецца ваша праца.',
+'prefs-help-email' => 'Адрас эл.пошты паведамляць неабавязкова, але, калі ён вядомы, то можна атрымліваць эл.поштай новы пароль, калі забыты стары.
+Але вы можаце і не рассакрэчваць сваёй асобы, і кантактаваць з іншымі ўдзельнікамі на сваёй старонцы ўдзельніка ці ў сваёй старонцы размовы.',
+'prefs-help-email-required' => 'Патрэбны адрас электроннай пошты.',
# User rights
-'userrights' => 'Распараджэнне правамі ўдзельніка', # Not used as normal message but as header for the special page itself
+'userrights' => 'Распараджэнне правамі ўдзельніка',
'userrights-lookup-user' => 'Распараджацца групамі ўдзельнікаў',
'userrights-user-editname' => 'Увядзіце імя ўдзельніка:',
'editusergroup' => 'Правіць групы ўдзельнікаў',
@@ -1143,6 +1067,8 @@ $2',
'right-editprotected' => 'Правіць старонкі, што пад аховай (але без каскаднай аховы)',
'right-editinterface' => 'Правіць карыстальніцкі інтэрфейс',
'right-editusercssjs' => 'Правіць файлы CSS і JS іншых удзельнікаў',
+'right-editusercss' => 'Правіць файлы CSS іншых удзельнікаў',
+'right-edituserjs' => 'Правіць файлы JS іншых удзельнікаў',
'right-rollback' => 'Паскорана адкочваць праўкі апошняга ўдзельніка, які правіў пэўную старонку',
'right-markbotedits' => 'Меціць адкочаныя праўкі як праўкі робатаў',
'right-noratelimit' => 'Не падпарадкоўвацца абмежаванням хуткасці',
@@ -1234,6 +1160,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Звязаныя праўкі',
+'recentchangeslinked-feed' => 'Звязаныя праўкі',
+'recentchangeslinked-toolbox' => 'Звязаныя праўкі',
'recentchangeslinked-title' => 'Змяненні, якія датычаць "$1"',
'recentchangeslinked-noresult' => 'Без змяненняў на далучаных старонках за азначаны перыяд.',
'recentchangeslinked-summary' => "Гэта пералік нядаўніх змяненняў старонак, на якія спасылаецца азначаная старонка, або змяненняў складнікаў азначанай катэгорыі.
@@ -1244,7 +1172,6 @@ $2',
# Upload
'upload' => 'Укласці файл',
'uploadbtn' => 'Укласці файл',
-'reupload' => 'Укласці нанова',
'reuploaddesc' => 'Спыніць укладанне і вярнуцца да пачатковага фармуляра.',
'uploadnologin' => 'Не ў сістэме',
'uploadnologintext' => 'Каб укладваць файлы, трэба [[Special:UserLogin|ўвайсці ў сістэму]].',
@@ -1292,7 +1219,6 @@ $2',
* Назва ўкладанага файла: '''<tt>[[:$1]]</tt>'''
* Назва наяўнага файла: '''<tt>[[:$2]]</tt>'''
Выберыце іншую назву.",
-'fileexists-thumb' => "<center>'''Існы тут файл'''</center>",
'fileexists-thumbnail-yes' => "Файл падобны на выяву скарочанага памеру ''(драбніца)''. [[$1|thumb]]
Праверце файл '''<tt>[[:$1]]</tt>'''.
Калі правераны файл мае змест і памеры, аднолькавыя з гэтым, то дадатковае ўкладанне драбніцы непатрэбнае.",
@@ -1313,7 +1239,6 @@ $2',
'uploaddisabledtext' => 'Не дазваляюцца ўкладанні файлаў.',
'php-uploaddisabledtext' => 'Укладанне файлаў не дазволена ў асяроддзі PHP. Праверце настаўленне file_uploads.',
'uploadscripted' => 'У файле ўтрымліваецца код HTML або Яваскрыпту, які можа быць памылкова апрацаваны браўзерам.',
-'uploadcorrupt' => 'Файл пашкоджаны або названы з неадпаведным суфіксам. Праверце файл і ўкладзіце яго нанова.',
'uploadvirus' => 'Файл утрымлівае вірус! Падрабязнасці: $1',
'sourcefilename' => 'Вытокавы файл:',
'destfilename' => 'Назва мэтавага файла:',
@@ -1340,6 +1265,7 @@ $2',
'upload-curl-error28-text' => 'Сеціўная пляцоўка занадта доўга не адказвала. Праверце, ці яна працуе, трохі пачакайце, тады паспрабуйце ізноў. Магчыма, варта паспрабаваць тады, калі пляцоўка меней занятая.',
'license' => 'Ліцэнзіяванне:',
+'license-header' => 'Ліцэнзіяванне',
'nolicense' => 'Нішто не выбрана',
'license-nopreview' => '(без перадпаказу)',
'upload_source_url' => ' (сапраўдны, публічна дасягальны URL)',
@@ -1360,6 +1286,7 @@ $2',
'listfiles_count' => 'Версіі',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Гісторыя файла',
'filehist-help' => 'Націснуць на даце з часам, каб паказаць файл, якім ён тады быў.',
'filehist-deleteall' => 'выдаліць усё',
@@ -1383,15 +1310,10 @@ $2',
'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|больш спасылак]] на гэты файл.',
'redirectstofile' => "Наступны{{PLURAL:$1| файл з'яўляецца перасылкай|я $1 файлы з'яўляюцца перасылкамі}} да гэтага файла:",
'duplicatesoffile' => "Наступн{{PLURAL:$1|ы файл з'яўляецца дублікатам|ыя $1 файлы з'яўляюцца дублікатамі}} гэтага файла ([[Special:FileDuplicateSearch/$2|падрабязна]]):",
-'sharedupload' => 'Гэты файл з $1 і можа выкарыстоўвацца іншымі праектамі.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Падрабязнасці глядзіце на $1.',
-'shareduploadwiki-desc' => 'Апісанне на $1 у агульным сховішчы паказанае ніжэй.',
-'shareduploadwiki-linktext' => 'старонка з апісаннем файла',
-'noimage' => 'Няма файла з такой назвай, але можна $1.',
-'noimage-linktext' => 'укласці такі',
+'sharedupload' => 'Гэты файл з $1 і можа выкарыстоўвацца іншымі праектамі.',
'uploadnewversion-linktext' => 'Укласці новую версію гэтага файла',
-'shared-repo-from' => 'з $1', # $1 is the repository name
-'shared-repo' => 'супольнае сховішча', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'з $1',
+'shared-repo' => 'супольнае сховішча',
# File reversion
'filerevert' => 'Адкаціць $1',
@@ -1440,7 +1362,7 @@ $2',
# Random page
'randompage' => 'Выпадковая старонка',
-'randompage-nopages' => 'Няма старонак у прасторы назваў "$1".',
+'randompage-nopages' => 'Няма старонак у наступн{{PLURAL:$2|ай прасторы|ых прасторах}} назваў: $1.',
# Random redirect
'randomredirect' => 'Выпадковая перасылка',
@@ -1481,8 +1403,8 @@ $2',
'brokenredirects' => 'Паламаныя перасылкі',
'brokenredirectstext' => 'Гэтыя перасылкі паказваюць на старонкі, якіх няма:',
-'brokenredirects-edit' => '(правіць)',
-'brokenredirects-delete' => '(выдаліць)',
+'brokenredirects-edit' => 'правіць',
+'brokenredirects-delete' => 'выдаліць',
'withoutinterwiki' => 'Старонкі без адпаведных іншамоўных',
'withoutinterwiki-summary' => 'Спіс артыкулаў без спасылак на іншамоўныя версіі:',
@@ -1589,8 +1511,8 @@ $2',
# Special:Categories
'categories' => 'Катэгорыі',
-'categoriespagetext' => 'Наступныя катэгорыі ўтрымліваюць старонкі або мультымедыю.
-[[Special:UnusedCategories|Катэгорыі без складнікаў]] тут не паказаныя.
+'categoriespagetext' => 'Наступн{{PLURAL:$1|ая катэгорыя ўтрымлівае|ыя $1 катэгорыі(-й) утрымліваюць}} старонкі або мультымедыю.
+Тут не паказаныя [[Special:UnusedCategories|катэгорыі без складнікаў]].
Гл. таксама [[Special:WantedCategories|патрэбныя катэгорыі]].',
'categoriesfrom' => 'Паказаць катэгорыі, пачынаючы з:',
'special-categories-sort-count' => 'пд. колькасці',
@@ -1711,7 +1633,7 @@ $2',
'enotif_body' => 'Шаноўны $WATCHINGUSERNAME,
-Старонка {{SITENAME}} з назвай $PAGETITLE была $CHANGEDORCREATED ($PAGEEDITDATE) удзельнікам $PAGEEDITOR, гл. $PAGETITLE_URL каб бачыць актуальную версію.
+Старонка {{SITENAME}} з назвай $PAGETITLE была $CHANGEDORCREATED ($PAGEEDITDATE) удзельнікам $PAGEEDITOR; гл. актуальную версію на $PAGETITLE_URL.
$NEWPAGE
@@ -1726,10 +1648,11 @@ $NEWPAGE
Сістэма апавяшчэнняў {{SITENAME}}
--
-Настаўленні спісу назіранага мяняюцца тут: {{fullurl:{{ns:special}}:Watchlist/edit}}
+Настаўленні спісу назіранага: {{fullurl:{{#special:Watchlist}}/edit}}
-Зваротная сувязь і далейшая дапамога:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Выняцце старонкі з ліку назіраных: $UNWATCHURL
+
+Зваротная сувязь і далейшая дапамога: {{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Сцерці старонку',
@@ -1740,7 +1663,7 @@ $NEWPAGE
'exblank' => 'старонка была пустой',
'delete-confirm' => 'Сцерці "$1"',
'delete-legend' => 'Сцерці',
-'historywarning' => 'Увага: Старонка, якую вы хочаце сцерці, мае гісторыю:',
+'historywarning' => "'''Увага''': Старонка, якую вы хочаце сцерці, мае гісторыю прыблізна $1 {{PLURAL:$1|праўкі|правак}}:",
'confirmdeletetext' => 'Вы збіраецеся сцерці старонку разам з цэлай яе гісторыяй правак.
Пацвердзіце свой намер зрабіць гэта, сваё разуменне наступстваў, і што вы робіце гэта ў адпаведнасці з [[{{MediaWiki:Policy-url}}|палітыкай (асноўнымі правіламі)]].',
'actioncomplete' => 'Завершана аперацыя',
@@ -1773,8 +1696,8 @@ $NEWPAGE
з таго часу нехта іншы правіў або адкатваў гэтую старонку.
Апошняя праўка старонкі была аўтарства [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Тлумачэнне праўкі было: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Праўкі аўтарства [[Special:Contributions/$2|$2]] ([[User talk:$2|размова]]) адкочаныя; вернута апошняя версія аўтарства [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Тлумачэнне праўкі было: \"''\$1''\".",
+'revertpage' => 'Праўкі аўтарства [[Special:Contributions/$2|$2]] ([[User talk:$2|размова]]) адкочаныя; вернута апошняя версія аўтарства [[User:$1|$1]]',
'rollback-success' => 'Адкочаны праўкі $1; вернута апошняя версія $2.',
'sessionfailure' => 'Магчыма, ёсць праблемы з вашым сеансам працы ў сістэме. Таму вам было адмоўлена ў выкананні дзеяння, каб засцерагчыся ад захопу сеанса. Націсніце "Назад", і перачытайце старонку, з якой вы сюды прыйшлі, тады паспрабуйце нанова.',
@@ -1792,7 +1715,7 @@ $NEWPAGE
'protectexpiry' => 'Канчаецца:',
'protect_expiry_invalid' => 'Недапушчальны час сканчэння.',
'protect_expiry_old' => 'Час сканчэння — у мінулым.',
-'protect-unchain' => 'Дазволіць пераносы',
+'protect-unchain-permissions' => 'Адкрыць падрабязныя магчымасці аховы',
'protect-text' => "Тут можна пабачыць і паправіць узровень аховы для старонкі '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Вы заблакаваны і не можаце мяняць узроўняў аховы. Вось актуальныя настаўленні для старонкі '''$1''':",
'protect-locked-dblock' => "Немагчыма мяняць узроўні аховы, таму што база даных зараз зачынена.
@@ -1820,7 +1743,7 @@ $NEWPAGE
** Шкодная вайна правак
** Старонка з высокай наведвальнасцю',
'protect-edit-reasonlist' => 'Правіць прычыну аховы',
-'protect-expiry-options' => '1 гадз.:1 hour,1 дзень:1 day,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,неабмежавана:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 гадз.:1 hour,1 дзень:1 day,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,неабмежавана:infinite',
'restriction-type' => 'Дазвол:',
'restriction-level' => 'Абмежаванне на ўзроўні:',
'minimum-size' => "Мін. аб'ём",
@@ -1894,7 +1817,7 @@ $1',
'contributions-title' => 'Уклад удзельніка $1',
'mycontris' => 'Уклад',
'contribsub2' => 'Для $1 ($2)',
-'nocontribs' => 'Не знойдзена менаў, адпаведных зададзеным параметрам.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Не знойдзена менаў, адпаведных зададзеным параметрам.',
'uctop' => '(апошн.)',
'month' => 'Ад месяцу (і раней):',
'year' => 'Ад году (і раней):',
@@ -1903,7 +1826,10 @@ $1',
'sp-contributions-newbies-sub' => 'З новых рахункаў',
'sp-contributions-newbies-title' => 'Уклады ўдзельнікаў з новых рахункаў',
'sp-contributions-blocklog' => 'Журнал забаронаў',
+'sp-contributions-deleted' => 'сцёрты ўклад удзельніка',
'sp-contributions-logs' => 'журналы',
+'sp-contributions-talk' => 'размова',
+'sp-contributions-userrights' => 'распараджэнне правамі ўдзельніка',
'sp-contributions-search' => 'Знайсці ўклад',
'sp-contributions-username' => 'Адрас IP або імя ўдзельніка:',
'sp-contributions-submit' => 'Пошук',
@@ -1952,7 +1878,7 @@ $1',
'ipbenableautoblock' => 'Аўтаматычна блакаваць адрас IP, якім удзельнік карыстаўся апошнім разам, і ўсе наступныя адрасы IP, з-пад якіх ён паспрабуе рабіць праўкі',
'ipbsubmit' => 'Заблакаваць удзельніка',
'ipbother' => 'Іншы час',
-'ipboptions' => '2 гадзіны:2 hours,1 дзень:1 day,3 дні:3 days,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 гадзіны:2 hours,1 дзень:1 day,3 дні:3 days,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite',
'ipbotheroption' => 'іншае',
'ipbotherreason' => 'Іншая/дадатковая прычына:',
'ipbhidename' => 'Не паказваць імя ўдзельніка ў гісторыях правак і ў спісах',
@@ -1983,7 +1909,7 @@ $1',
'ipblocklist-submit' => 'Шукаць',
'blocklistline' => '$1, $2 заблакаваны $3 ($4)',
'infiniteblock' => 'бясконца',
-'expiringblock' => 'канчаецца $1',
+'expiringblock' => 'канчаецца $1 $2',
'anononlyblock' => 'толькі ананімы',
'noautoblockblock' => 'аўтаблок не дазволены',
'createaccountblock' => 'стварэнне рахунку заблакавана',
@@ -1997,7 +1923,6 @@ $1',
'contribslink' => 'уклад',
'autoblocker' => 'Аўтаматычны блок таму што вашым адрасам IP нядаўна карыстаўся "[[User:$1|$1]]". Блакаванне $1\'s патлумачана так: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Журнал блокаў',
-'blocklog-fulllog' => 'Поўны журнал блокаў',
'blocklogentry' => 'пастаўлены блок на "[[$1]]", з часам трывання $2 $3',
'reblock-logentry' => 'змененыя настаўленні блока для [[$1]] з часам згасання $2 $3',
'blocklogtext' => 'Журнал пастаноўкі і здымання блокаў. Аўтаматычна блакаваныя адрасы IP тут не паказваюцца. Спіс актуальных забарон і блокаў бач у [[Special:IPBlockList|спісе блокаў IP]].',
@@ -2080,7 +2005,7 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змя
'move-watch' => 'Назіраць за старонкай',
'movepagebtn' => 'Перанесці старонку',
'pagemovedsub' => 'Паспяховы перанос',
-'movepage-moved' => '\'\'\'"$1" перанесена ў "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" перанесена ў "$2"\'\'\'',
'movepage-moved-redirect' => 'Была створаная перасылка.',
'movepage-moved-noredirect' => 'Не была створаная перасылка.',
'articleexists' => 'Старонка з такой назвай ужо існуе, або
@@ -2150,8 +2075,6 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змя
'allmessagescurrent' => 'Актуальны тэкст',
'allmessagestext' => 'Пералік сістэмных паведамленняў, наяўных у прасторы назваў MediaWiki.',
'allmessagesnotsupportedDB' => "Немагчыма паказаць '''{{ns:special}}:{{:{{ns:mediawiki}}:Allmessages}}''', таму што не працуе '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Фільтр назваў паведамленняў:',
-'allmessagesmodified' => 'Паказваць толькі змененыя',
# Thumbnails
'thumbnail-more' => 'Павялічыць',
@@ -2286,10 +2209,12 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змя
# Attribution
'anonymous' => 'Ананімны{{PLURAL:$1| ўдзельнік|я ўдзельнікі}} на пляцоўцы {{SITENAME}}',
'siteuser' => 'удзельнік $1 з {{SITENAME}}',
-'lastmodifiedatby' => 'Апошняе змяненне старонкі адбылося $2, $1 аўтарства $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'ананімны ўдзельнік {{SITENAME}} - $1',
+'lastmodifiedatby' => 'Апошняе змяненне старонкі адбылося $2, $1 аўтарства $3.',
'othercontribs' => 'На аснове працы $1.',
'others' => 'іншае',
'siteusers' => '{{PLURAL:$2|удзельнік|удзельнікі}} з пляцоўкі {{SITENAME}} - $1',
+'anonusers' => 'ананімны{{PLURAL:$2| ўдзельнік|я ўдзельнікі}} {{SITENAME}} - $1',
'creditspage' => 'Аўтарства старонкі',
'nocredits' => 'Няма звестак пра аўтараў гэтай старонкі.',
@@ -2327,11 +2252,22 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змя
'mw_math_modern' => 'Рэкамендуецца для сучасных браўзераў',
'mw_math_mathml' => 'MathML калі магчыма (эксперыментальнае)',
+# Math errors
+'math_failure' => 'Не ўдалося разабраць',
+'math_unknown_error' => 'невядомая памылка',
+'math_unknown_function' => 'невядомая функцыя',
+'math_lexing_error' => 'лексічная памылка',
+'math_syntax_error' => 'памылка сінтаксісу',
+'math_image_error' => 'Не ўдалося ператварыць PNG; праверце правільнасць інсталяцыі пакетаў latex, dvips, gs, convert',
+'math_bad_tmpdir' => 'Немагчыма запісаць у або стварыць тымчасовы каталог для матэматыкі',
+'math_bad_output' => 'Немагчыма запісаць у або стварыць выводны каталог для матэматыкі',
+'math_notexvc' => 'Не знойдзены выканальны модуль texvc; аб яго настаўленнях чытайце ў math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Пазначыць як ухваленае',
'markaspatrolledtext' => 'Пазначыць старонку як ухваленую',
'markedaspatrolled' => 'Пазначана як ухваленае',
-'markedaspatrolledtext' => 'Азначаная версія пазначана як ухваленая.',
+'markedaspatrolledtext' => 'Азначаная версія [[:$1]] пазначана як ухваленая.',
'rcpatroldisabled' => 'Не працуе Ухваленне Нядаўніх Правак',
'rcpatroldisabledtext' => 'Магчымасць Ухвалення Нядаўніх Правак зараз не працуе.',
'markedaspatrollederror' => 'Немагчыма пазначыць як вартае',
@@ -2361,12 +2297,9 @@ $1',
'previousdiff' => '← Папярэдняя праўка',
'nextdiff' => 'Наступная праўка →',
-# Visual comparison
-'visual-comparison' => 'Параўнанне на від',
-
# Media information
'mediawarning' => "'''Увага''': у гэтым тыпе файлаў бывае зламысны код, выкананне якога можа паставіць пад небяспеку вашую сістэму.",
-'imagemaxsize' => 'Абмежаваныя памеры выяваў на адпаведных тлумачальных старонках:',
+'imagemaxsize' => "Мяжа памеру выяваў:<br />''(на тлумачальных старонках)''",
'thumbsize' => 'Памеры драбніцы:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|старонка|старонак}}',
'file-info' => "(аб'ём файла: $1, тып MIME: $2)",
@@ -2375,6 +2308,8 @@ $1',
'svg-long-desc' => "(файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3)",
'show-big-image' => 'Найлепшае разрозненне',
'show-big-image-thumb' => '<small>Памеры гэтага перадпаказу: $1 × $2 кропак</small>',
+'file-info-gif-looped' => 'закальцаваныя',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадраў}}',
# Special:NewFiles
'newimages' => 'Новыя файлы',
@@ -2406,7 +2341,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Шырыня',
@@ -2523,14 +2458,14 @@ $1',
'exif-unknowndate' => 'Невядомая дата',
-'exif-orientation-1' => 'Звычайна', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Адлюстравана злева ўправа', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Павернута на 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Адлюстравана зверху ўніз', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Павернута на 90° супраць гадзінніка і адлюстравана зверху ўніз', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Павернута на 90° па гадзінніку', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Павернута на 90° па гадзінніку і адлюстравана зверху ўніз', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Павернута на 90° супраць гадзінніка', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Звычайна',
+'exif-orientation-2' => 'Адлюстравана злева ўправа',
+'exif-orientation-3' => 'Павернута на 180°',
+'exif-orientation-4' => 'Адлюстравана зверху ўніз',
+'exif-orientation-5' => 'Павернута на 90° супраць гадзінніка і адлюстравана зверху ўніз',
+'exif-orientation-6' => 'Павернута на 90° па гадзінніку',
+'exif-orientation-7' => 'Павернута на 90° па гадзінніку і адлюстравана зверху ўніз',
+'exif-orientation-8' => 'Павернута на 90° супраць гадзінніка',
'exif-planarconfiguration-1' => 'чанкавы фармат',
'exif-planarconfiguration-2' => 'планарны фармат',
@@ -2646,7 +2581,7 @@ $1',
'exif-gpsmeasuremode-2' => '2-вымернае вымярэнне',
'exif-gpsmeasuremode-3' => '3-вымернае вымярэнне',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'кіламетраў за гадзіну',
'exif-gpsspeed-m' => 'міляў за гадзіну',
'exif-gpsspeed-n' => 'вузлоў',
@@ -2665,6 +2600,7 @@ $1',
'watchlistall2' => 'усе',
'namespacesall' => 'усе',
'monthsall' => 'усе',
+'limitall' => 'усе',
# E-mail address confirmation
'confirmemail' => 'Пацвердзіць адрас эл.пошты',
@@ -2784,7 +2720,7 @@ $1',
'duplicate-defaultsort' => 'Увага: прадвызначаная клавіша ўпарадкавання "$2" замяніла ранейшую такую клавішу "$1".',
# Special:Version
-'version' => 'Версія', # Not used as normal message but as header for the special page itself
+'version' => 'Версія',
'version-extensions' => 'Устаноўленыя прыстаўкі',
'version-specialpages' => 'Адмысловыя старонкі',
'version-parserhooks' => 'Хукі парсера',
@@ -2798,7 +2734,7 @@ $1',
'version-skin-extension-functions' => 'Функцыі пашырэння вокладкі',
'version-hook-name' => 'Назва хука',
'version-hook-subscribedby' => 'Сюды падпісаныя',
-'version-version' => 'Версія',
+'version-version' => '(Версія $1)',
'version-license' => 'Ліцэнзія',
'version-software' => 'Устаноўленыя праграмныя прадукты',
'version-software-product' => 'Прадукт',
@@ -2879,4 +2815,15 @@ $1',
'dberr-outofdate' => 'Заўважце, што тамтэйшыя індэксы тутэйшага зместу могуць быць састарэлымі.',
'dberr-cachederror' => 'Гэта копія старонкі, узятая з кэшу, і, магчыма, састарэлая.',
+# HTML forms
+'htmlform-invalid-input' => 'Праблемы з упісаным вамі',
+'htmlform-select-badoption' => "Пададзенае значэнне не з'яўляецца дапушчальным выбарам.",
+'htmlform-int-invalid' => "Пададзенае значэнне не з'яўляецца цэлым лікам.",
+'htmlform-float-invalid' => "Пададзенае значэнне не з'яўляецца лікам.",
+'htmlform-int-toolow' => 'Пададзенае значэнне меншае за мінімум $1',
+'htmlform-int-toohigh' => 'Пададзенае значэнне большае за максімум $1',
+'htmlform-submit' => 'Падаць',
+'htmlform-reset' => 'Адкаціць змяненні',
+'htmlform-selectorother-other' => 'Рознае',
+
);
diff --git a/languages/messages/MessagesBe_tarask.php b/languages/messages/MessagesBe_tarask.php
index 4eddc23f..48caf342 100644
--- a/languages/messages/MessagesBe_tarask.php
+++ b/languages/messages/MessagesBe_tarask.php
@@ -41,7 +41,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__ЗЬМЕСТ_ПРЫМУСАМ__', '__FORCETOC__' ),
'toc' => array( '0', '__ЗЬМЕСТ__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_РЭДАГАВАНЬНЯ_СЭКЦЫІ__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'БЯГУЧЫ_МЕСЯЦ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'БЯГУЧЫ_МЕСЯЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'НАЗВА_БЯГУЧАГА_МЕСЯЦА', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'НАЗВА_БЯГУЧАГА_МЕСЯЦА_Ў_РОДНЫМ_СКЛОНЕ', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'СКАРОЧАНАЯ_НАЗВА_БЯГУЧАГА_МЕСЯЦА', 'CURRENTMONTHABBREV' ),
@@ -51,7 +51,7 @@ $magicWords = array(
'currentyear' => array( '1', 'БЯГУЧЫ_ГОД', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'БЯГУЧЫ_ЧАС', 'CURRENTTIME' ),
'currenthour' => array( '1', 'БЯГУЧАЯ_ГАДЗІНА', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'ЛЯКАЛЬНЫ_МЕСЯЦ', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'ЛЯКАЛЬНЫ_МЕСЯЦ', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'НАЗВА_ЛЯКАЛЬНАГА_МЕСЯЦА', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'НАЗВА_ЛЯКАЛЬНАГА_МЕСЯЦА_Ў_РОДНЫМ_СКЛОНЕ', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'СКАРОЧАНАЯ_НАЗВА_ЛЯКАЛЬНАГА_МЕСЯЦА', 'LOCALMONTHABBREV' ),
@@ -216,7 +216,7 @@ $specialPageAliases = array(
'Export' => array( 'Экспарт' ),
'Version' => array( 'Вэрсія' ),
'Allmessages' => array( 'Сыстэмныя_паведамленьні' ),
- 'Log' => array( 'Журналы_падзей' ),
+ 'Log' => array( 'Журналы_падзеяў' ),
'Blockip' => array( 'Блякаваньне' ),
'Import' => array( 'Імпарт' ),
'Listredirects' => array( 'Сьпіс_перанакіраваньняў' ),
@@ -276,6 +276,7 @@ $messages = array(
'tog-enotifminoredits' => 'Паведамляць праз электронную пошту таксама пра дробныя зьмены старонак',
'tog-enotifrevealaddr' => 'Не хаваць мой адрас электроннай пошты ў паведамленьнях',
'tog-shownumberswatching' => 'Паказваць колькасьць назіральнікаў',
+'tog-oldsig' => 'Папярэдні прагляд існуючага подпісу:',
'tog-fancysig' => 'Апрацоўваць подпіс як вікі-тэкст (без аўтаматычнай спасылкі)',
'tog-externaleditor' => 'Па змоўчаньні выкарыстоўваць вонкавы рэдактар (толькі для адмыслоўцаў, патрэбуе спэцыяльных наладак на вашым кампутары)',
'tog-externaldiff' => 'Выкарыстоўваць па змоўчаньні вонкавую праграму параўнаньня вэрсіяў (толькі для адмыслоўцаў, патрэбуе спэцыяльных наладак на вашым кампутары)',
@@ -297,6 +298,13 @@ $messages = array(
'underline-never' => 'Ніколі',
'underline-default' => 'Як у браўзэры',
+# Font style option in Special:Preferences
+'editfont-style' => 'Стыль шрыфту ў полі рэдагаваньня:',
+'editfont-default' => 'Шрыфт браўзэра па змоўчваньні',
+'editfont-monospace' => 'Шрыфт з аднолькавай шырынёй сымбаляў',
+'editfont-sansserif' => 'Шрыфт без засечак',
+'editfont-serif' => 'Штыфт з засечкамі',
+
# Dates
'sunday' => 'нядзеля',
'monday' => 'панядзелак',
@@ -356,7 +364,7 @@ $messages = array(
'category-media-header' => 'Файлы ў катэгорыі «$1»',
'category-empty' => "''Гэтая катэгорыя ня ўтрымлівае ні старонак, ні файлаў.''",
'hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}',
-'hidden-category-category' => 'Схаваныя катэгорыі', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Схаваныя катэгорыі',
'category-subcat-count' => '{{PLURAL:$2|Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
'category-subcat-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}.',
'category-article-count' => '{{PLURAL:$2|Гэтая катэгорыя ўтрымлівае толькі адну старонку.|{{PLURAL:$1|Паказаная $1 старонка|Паказаныя $1 старонкі|Паказаныя $1 старонак}} гэтай катэгорыі з $2.}}',
@@ -364,6 +372,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Гэтая катэгорыя ўтрымлівае толькі адзін файл.|{{PLURAL:$1|Паказаны $1 файл|Паказаныя $1 файлы|Паказаныя $1 файлаў}} гэтай катэгорыі з $2.}}',
'category-file-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|файл|файлы|файлаў}}.',
'listingcontinuesabbrev' => ' (працяг)',
+'index-category' => 'Індэксаваныя старонкі',
+'noindex-category' => 'Неіндэксаваныя старонкі',
'mainpagetext' => "'''MediaWiki пасьпяхова ўсталяваная.'''",
'mainpagedocfooter' => 'Глядзіце [http://meta.wikimedia.org/wiki/Help:Contents дапаможнік карыстальніка] для атрыманьня інфармацыі па карыстаньні вікі-праграмамі.
@@ -373,10 +383,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Частыя пытаньні MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]',
-'about' => 'Пра',
-'article' => 'Старонка зьместу',
-'newwindow' => '(адкрываецца ў новым акне)',
-'cancel' => 'Скасаваць',
+'about' => 'Пра',
+'article' => 'Старонка зьместу',
+'newwindow' => '(адкрываецца ў новым акне)',
+'cancel' => 'Скасаваць',
+'moredotdotdot' => 'Далей…',
+'mypage' => 'Мая старонка',
+'mytalk' => 'Мае гутаркі',
+'anontalk' => 'Гутаркі для гэтага IP-адрасу',
+'navigation' => 'Навігацыя',
+'and' => '&#32;і',
+
+# Cologne Blue skin
'qbfind' => 'Знайсьці',
'qbbrowse' => 'Праглядзець',
'qbedit' => 'Рэдагаваць',
@@ -384,15 +402,35 @@ $messages = array(
'qbpageinfo' => 'Інфармацыя пра старонку',
'qbmyoptions' => 'Мае старонкі',
'qbspecialpages' => 'Спэцыяльныя старонкі',
-'moredotdotdot' => 'Далей…',
-'mypage' => 'Мая старонка',
-'mytalk' => 'Мае гутаркі',
-'anontalk' => 'Гутаркі для гэтага IP-адрасу',
-'navigation' => 'Навігацыя',
-'and' => '&#32;і',
-
-# Metadata in edit box
-'metadata_help' => 'Мэтазьвесткі:',
+'faq' => 'Частыя пытаньні',
+'faqpage' => 'Project:Частыя пытаньні',
+
+# Vector skin
+'vector-action-addsection' => 'Дадаць тэму',
+'vector-action-delete' => 'Выдаліць',
+'vector-action-move' => 'Перанесьці',
+'vector-action-protect' => 'Абараніць',
+'vector-action-undelete' => 'Аднавіць',
+'vector-action-unprotect' => 'Зьняць абарону',
+'vector-namespace-category' => 'Катэгорыя',
+'vector-namespace-help' => 'Старонка дапамогі',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Старонка',
+'vector-namespace-media' => 'Старонка мэдыя',
+'vector-namespace-mediawiki' => 'Паведамленьне',
+'vector-namespace-project' => 'Старонка праекту',
+'vector-namespace-special' => 'Спэцыяльная старонка',
+'vector-namespace-talk' => 'Абмеркаваньне',
+'vector-namespace-template' => 'Шаблён',
+'vector-namespace-user' => 'Старонка ўдзельніка',
+'vector-view-create' => 'Стварыць',
+'vector-view-edit' => 'Рэдагаваць',
+'vector-view-history' => 'Паказаць гісторыю',
+'vector-view-view' => 'Чытаць',
+'vector-view-viewsource' => 'Паказаць крыніцу',
+'actions' => 'Дзеяньні',
+'namespaces' => 'Прасторы назваў',
+'variants' => 'Варыянты',
'errorpagetitle' => 'Памылка',
'returnto' => 'Вярнуцца да старонкі $1.',
@@ -442,18 +480,22 @@ $messages = array(
'otherlanguages' => 'На іншых мовах',
'redirectedfrom' => '(Перанакіравана з $1)',
'redirectpagesub' => 'Старонка-перанакіраваньне',
-'lastmodifiedat' => 'Гэтая старонка апошні раз рэдагавалася $1 году ў $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Гэтая старонка апошні раз рэдагавалася $1 году ў $2.',
'viewcount' => 'Гэтую старонку праглядалі $1 {{PLURAL:$1|раз|разы|разоў}}.',
'protectedpage' => 'Абароненая старонка',
'jumpto' => 'Перайсьці да:',
'jumptonavigation' => 'навігацыя',
'jumptosearch' => 'пошук',
+'view-pool-error' => 'Прабачце, у цяперашні момант сэрвэры перагружаныя.
+Занадта шмат удзельнікаў спрабуюць праглядзець гэтую старонку.
+Калі ласка, пачакайце і паспрабуйце зайсьці пазьней.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Пра {{GRAMMAR:вінавальны|{{SITENAME}}}}',
'aboutpage' => 'Project:Пра {{GRAMMAR:вінавальны|{{SITENAME}}}}',
'copyright' => 'Зьмест даступны на ўмовах $1.',
-'copyrightpagename' => 'Аўтарскія правы {{GRAMMAR:родны|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Аўтарскія правы',
'currentevents' => 'Актуальныя падзеі',
'currentevents-url' => 'Project:Актуальныя падзеі',
@@ -461,8 +503,6 @@ $messages = array(
'disclaimerpage' => 'Project:Адмова ад адказнасьці',
'edithelp' => 'Дапамога ў рэдагаваньні',
'edithelppage' => 'Help:Рэдагаваньне',
-'faq' => 'Частыя пытаньні',
-'faqpage' => 'Project:Частыя пытаньні',
'helppage' => 'Help:Зьмест',
'mainpage' => 'Галоўная старонка',
'mainpage-description' => 'Галоўная старонка',
@@ -543,10 +583,6 @@ $messages = array(
«$1»
адбыўся з функцыі «$2».
База зьвестак вярнула памылку «$3: $4»',
-'noconnect' => '{{SITENAME}} мае тэхнічныя цяжкасьці і ня можа далучыцца да сэрвэра базы зьвестак.<br />
-$1',
-'nodb' => 'Немагчыма выбраць базу зьвестак $1',
-'cachederror' => 'Наступнае — кэшаваная копія запытанай старонкі; магчыма, яна ўжо не адпавядае рэчаіснасьці.',
'laggedslavemode' => 'Увага: старонка можа ня ўтрымліваць апошніх зьменаў.',
'readonly' => 'База зьвестак заблякаваная',
'enterlockreason' => 'Пазначце прычыну блякаваньня і вызначаны час разблякаваньня',
@@ -564,6 +600,8 @@ $1',
'readonly_lag' => 'База зьвестак была аўтаматычна заблякаваная да выкананьня рэплікацыі галоўнай базы зьвестак з другаснымі',
'internalerror' => 'Унутраная памылка',
'internalerror_info' => 'Унутраная памылка: $1',
+'fileappenderrorread' => 'Немагчыма прачытаць «$1» пад час дапаўненьня.',
+'fileappenderror' => 'Не атрымалася далучыць «$1» да «$2».',
'filecopyerror' => 'Немагчыма cкапіяваць файл «$1» у «$2».',
'filerenameerror' => 'Немагчыма перайменаваць файл «$1» у «$2».',
'filedeleteerror' => 'Немагчыма выдаліць файл «$1».',
@@ -573,7 +611,7 @@ $1',
'unexpected' => 'Нечаканае значэньне: «$1»=«$2».',
'formerror' => 'Памылка: не атрымалася падаць форму',
'badarticleerror' => 'Гэтае дзеяньне немагчыма выканаць на гэтай старонцы.',
-'cannotdelete' => 'Немагчыма выдаліць указаную старонку альбо выяву. (Магчыма, яна ўжо выдаленая кімсьці іншым.)',
+'cannotdelete' => 'Немагчыма выдаліць старонку альбо файл «$1». Магчыма, яна ўжо выдаленая кімсьці іншым.',
'badtitle' => 'Няслушная назва',
'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці міжвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі.',
@@ -607,7 +645,6 @@ $2',
'virus-unknownscanner' => 'невядомы антывірус:',
# Login and logout pages
-'logouttitle' => 'Выхад з сыстэмы',
'logouttext' => "'''Вы выйшлі з сыстэмы.'''
Вы можаце працягваць працу ў {{GRAMMAR:месны|{{SITENAME}}}} ананімна, альбо можаце [[Special:UserLogin|ўвайсьці ў сыстэму]] як той жа альбо іншы ўдзельнік.
@@ -615,7 +652,6 @@ $2',
'welcomecreation' => '== Вітаем, $1! ==
Ваш рахунак быў створаны.
Не забудзьце зьмяніць Вашыя [[Special:Preferences|ўстаноўкі ў {{GRAMMAR:месны|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Уваход у сыстэму',
'yourname' => 'Імя ўдзельніка:',
'yourpassword' => 'Пароль:',
'yourpasswordagain' => 'Паўтарыце пароль:',
@@ -626,6 +662,7 @@ $2',
'nav-login-createaccount' => 'Уваход / стварэньне рахунку',
'loginprompt' => 'Вы павінны дазволіць cookie для ўваходу ў {{GRAMMAR:вінавальны|{{SITENAME}}}}.',
'userlogin' => 'Увайсьці ў сыстэму',
+'userloginnocreate' => 'Увайсьці',
'logout' => 'Выйсьці',
'userlogout' => 'Выйсьці',
'notloggedin' => 'Вы не ўвайшлі ў сыстэму',
@@ -637,27 +674,8 @@ $2',
'createaccountmail' => 'па электроннай пошце',
'badretype' => 'Уведзеныя Вамі паролі не супадаюць.',
'userexists' => 'Выбранае Вамі імя ўдзельніка ўжо выкарыстоўваецца кімсьці іншым. Выберыце іншае імя.',
-'youremail' => 'Адрас электроннай пошты:',
-'username' => 'Імя ўдзельніка/ўдзельніцы:',
-'uid' => 'ID удзельніка/удзельніцы:',
-'prefs-memberingroups' => 'Удзельнік {{PLURAL:$1|групы|групаў}}:',
-'yourrealname' => 'Сапраўднае імя:',
-'yourlanguage' => 'Мова інтэрфэйсу:',
-'yournick' => 'Подпіс:',
-'badsig' => 'Няслушны неапрацаваны подпіс; праверце HTML-тэгі.',
-'badsiglength' => 'Ваш подпіс занадта доўгі.
-Подпіс мусіць быць не даўжэй за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'не пазначаны',
-'gender-male' => 'мужчынскі',
-'gender-female' => 'жаночы',
-'prefs-help-gender' => 'Неабавязковая: выкарыстоўваецца ў паведамленьнях праграмнага забесьпячэньня, якія залежаць ад полу ўдзельніка/ўдзельніцы. Гэта інфармацыя будзе агульнадаступнай.',
-'email' => 'Электронная пошта',
-'prefs-help-realname' => 'Сапраўднае імя паведамляць неабавязкова.
-Калі Вы яго пазначыце, яно будзе выкарыстоўвацца для пазначэньня Вашай працы.',
'loginerror' => 'Памылка ўваходу',
-'prefs-help-email' => 'Адрас электроннай пошты — неабавязковы, але дае магчымасьць даслаць Вам пароль, калі Вы забылі яго. Таксама Адрас электроннай пошты дазваляе іншым зьвязвацца з Вамі праз старонкі ўдзельніка безь неабходнасьці раскрыцьця Вашых асабістых зьвестак.',
-'prefs-help-email-required' => 'Патрабуецца адрас электроннай пошты.',
+'createaccounterror' => 'Немагчыма стварыць рахунак: $1',
'nocookiesnew' => 'Рахунак быў створаны, але ў сыстэму Вы не ўвайшлі.
{{SITENAME}} выкарыстоўвае cookie для ўваходу ў сыстэму.
У Вашым браўзэры cookies адключаныя.
@@ -673,16 +691,18 @@ $2',
Праверце напісаньне альбо [[Special:UserLogin/signup|стварыце новы рахунак]].',
'nosuchusershort' => 'Удзельніка зь іменем «<nowiki>$1</nowiki>» не існуе. Праверце напісаньне.',
'nouserspecified' => 'Вы мусіце пазначыць імя ўдзельніка.',
+'login-userblocked' => '{{GENDER:$1|Гэты ўдзельнік заблякаваны|Гэтая ўдзельніца заблякаваная}}. Уваход у сыстэму забаронены.',
'wrongpassword' => 'Уведзены няслушны пароль. Калі ласка, паспрабуйце яшчэ раз.',
'wrongpasswordempty' => 'Быў уведзены пусты пароль. Калі ласка, паспрабуйце яшчэ раз.',
-'passwordtooshort' => 'Ваш пароль няслушны альбо занадта кароткі.
-Ён павінен утрымліваць ня меней за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}} і адрозьнівацца ад імя ўдзельніка.',
+'passwordtooshort' => 'Паролі павінны ўтрымліваць ня менш за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
+'password-name-match' => 'Ваш пароль павінен адрозьнівацца ад Вашага імя ўдзельніка.',
'mailmypassword' => 'Даслаць новы пароль па электроннай пошце',
'passwordremindertitle' => 'Новы часовы пароль для {{GRAMMAR:родны|{{SITENAME}}}}',
'passwordremindertext' => 'Нехта (магчыма Вы, з IP-адрасу $1) запытаў нас даслаць новы пароль для {{GRAMMAR:родны|{{SITENAME}}}} ($4). Для ўдзельніка «$2» быў створаны часовы пароль і ён цяпер «$3». Калі гэта была Вашая ініцыятыва, Вам трэба ўвайсьці ў сыстэму і адразу зьмяніць пароль. Тэрмін дзеяньня Вашага часовага паролю — $5 {{PLURAL:$5|дзень|дні|дзён}}.
Калі гэты запыт адправіў нехта іншы, альбо Вы ўзгадалі свой пароль і ўжо не жадаеце яго зьмяніць, Вы можаце праігнараваць гэты ліст і працягваць карыстацца старым паролем.',
'noemail' => '{{GENDER:$1|Удзельнік «$1» не пазначыў|Удзельніца «$1» не пазначыла}} ніякага адрасу электроннай пошты.',
+'noemailcreate' => 'Вы павінны пазначыць слушны адрас электроннай пошты',
'passwordsent' => 'Новы пароль быў дасланы на адрас электроннай пошты ўдзельніка «$1».
Калі ласка, увайдзіце ў сыстэму пасьля яго атрыманьня.',
'blocked-mailpassword' => 'З Вашага IP-адрасу забароненыя рэдагаваньні, а таму таксама не даступная функцыя аднаўленьня паролю для прадухіленьня шкоды.',
@@ -706,9 +726,11 @@ $2',
'createaccount-text' => 'Нехта стварыў рахунак «$2» у {{GRAMMAR:месны|{{SITENAME}}}} ($4) для Вашага адрасу электроннай пошты. Пароль для гэтага рахунку — «$3». Вам трэба ўвайсьці і зьмяніць Ваш пароль зараз.
Вы можаце праігнараваць гэты ліст, калі гэты рахунак быў створаны памылкова.',
+'usernamehasherror' => 'Імя ўдзельніка ня можа ўтрымліваць сымбаль #',
'login-throttled' => 'Вы зрабілі занадта шмат спробаў уваходу ў сыстэму.
Калі ласка, пачакайце, перад тым, як паспрабаваць ізноў.',
'loginlanguagelabel' => 'Мова: $1',
+'suspicious-userlogout' => 'Ваш запыт на выхад з сыстэмы быў адхілены, таму што выглядае, што ён быў дасланы пашкоджаным браўзэрам альбо кэшаваным проксі-сэрвэрам.',
# Password reset dialog
'resetpass' => 'Зьмяніць пароль',
@@ -720,18 +742,13 @@ $2',
'retypenew' => 'Паўтарыце новы пароль:',
'resetpass_submit' => 'Наставіць пароль і увайсьці',
'resetpass_success' => 'Ваш пароль быў пасьпяхова зьменены! Выконваецца ўваход у сыстэму…',
-'resetpass_bad_temporary' => 'Няслушны часовы пароль.
-Магчыма Вы ўжо зьмянілі пароль альбо запыталі новы часовы пароль.',
'resetpass_forbidden' => 'Пароль ня можа быць зьменены',
'resetpass-no-info' => 'Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.',
'resetpass-submit-loggedin' => 'Зьмяніць пароль',
+'resetpass-submit-cancel' => 'Скасаваць',
'resetpass-wrong-oldpass' => 'Няслушны часовы альбо цяперашні пароль.
Магчыма Вы ўжо пасьпяхова зьмянілі Ваш пароль альбо запыталі новы часовы пароль.',
'resetpass-temp-password' => 'Часовы пароль:',
-'resetpass-log' => 'Журнал ачыстак пароляў',
-'resetpass-logtext' => 'Ніжэй пададзены сьпіс удзельнікаў, паролі якіх былі ачышчаныя адміністратарамі.',
-'resetpass-logentry' => 'зьменены пароль $1',
-'resetpass-comment' => 'Прычына ачысткі паролю:',
# Edit page toolbar
'bold_sample' => 'Тлусты тэкст',
@@ -806,7 +823,6 @@ $2',
'blockededitsource' => "Тэкст '''Вашых зьменаў''' у '''$1''' паказаны ніжэй:",
'whitelistedittitle' => 'Для рэдагаваньня патрабуецца ўваход у сыстэму',
'whitelistedittext' => 'Вам трэба $1, каб рэдагаваць старонкі.',
-'confirmedittitle' => 'Для рэдагаваньня патрэбнае пацьверджаньне адрасу электроннай пошты',
'confirmedittext' => 'Вы мусіце пацьвердзіць Ваш адрас электроннай пошты перад рэдагаваньнем старонак. Калі ласка, пазначце і пацьвердзіце адрас электроннай пошты праз Вашы [[Special:Preferences|ўстаноўкі]].',
'nosuchsectiontitle' => 'Немагчыма знайсьці сэкцыю',
'nosuchsectiontext' => 'Вы спрабуеце рэдагаваць сэкцыю, якой не існуе.
@@ -826,9 +842,15 @@ $2',
'noarticletext' => 'Цяпер тэкст на гэтай старонцы адсутнічае.
Вы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэтую назву]] ў іншых старонках, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пашукаць у адпаведных журналах падзеяў]
альбо [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} рэдагаваць гэтую старонку]</span>.',
+'noarticletext-nopermission' => 'Зараз на гэтай старонцы тэкст адсутнічае.
+Вы можаце [[Special:Search/{{PAGENAME}}|пашукаць назву гэтай старонкі]] на іншых старонках, альбо <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пашукаць зьвязаныя запісы ў журналах]</span>.',
'userpage-userdoesnotexist' => 'Рахунак удзельніка «$1» не зарэгістраваны. Калі ласка, удакладніце, ці жадаеце Вы стварыць/рэдагаваць гэтую старонку.',
+'userpage-userdoesnotexist-view' => 'Рахунак «$1» ня створаны.',
+'blocked-notice-logextract' => 'Гэты ўдзельнік у дадзены момант заблякаваны.
+Апошні запіс з журналу блякаваньняў пададзены ніжэй для даведкі:',
'clearyourcache' => "'''Заўвага:''' Каб пабачыць зьмены пасьля захаваньня, Вам можа спатрэбіцца ацысьціць кэш Вашага браўзэра. '''Mozilla / Firefox / Safari:''' трымайце ''Shift'' і націсьніце ''Reload'', ці націсьніце ''Ctrl-Shift-R'' (''Cmd-Shift-R'' на Apple Mac); '''IE:''' трымайце ''Ctrl'' і націсьніце ''Refresh'', ці націсьніце ''Ctrl-F5''; '''Konqueror:''': проста націсьніце кнопку ''Reload'', ці націсьніце ''F5''; карыстальнікам '''Opera''' можа спатрэбіцца цалкам ачысьціць кэш праз ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Падказка:''' выкарыстоўвайце кнопку «Папярэдні прагляд», каб паспрабаваць новы код CSS/JS перад тым як яго запісаць.",
+'usercssyoucanpreview' => "'''Падказка:''' выкарыстоўвайце кнопку «{{int:showpreview}}», каб паспрабаваць новы код CSS перад тым як яго запісаць.",
+'userjsyoucanpreview' => "'''Падказка:''' выкарыстоўвайце кнопку «{{int:showpreview}}», каб паспрабаваць новы код JavaScript перад тым як яго запісаць.",
'usercsspreview' => "'''Памятайце, што гэта толькі папярэдні прагляд Вашага CSS. Ён яшчэ не запісаны!'''",
'userjspreview' => "'''Памятайце, што гэта толькі папярэдні прагляд Вашага JavaScript, ён яшчэ не запісаны!'''",
'userinvalidcssjstitle' => "'''Увага:''' няма тэмы афармленьня «$1».
@@ -878,13 +900,16 @@ $2',
Вы можаце скапіяваць тэкст у файл на Вашым кампутары, а пазьней захаваць сюды.'''
Адміністратар, які заблякаваў базу зьвестак, прапанаваў наступнае тлумачэньне: $1",
-'protectedpagewarning' => "'''ПАПЯРЭДЖАНЬНЕ: Гэтая старонка была абароненая, таму толькі адміністратары могуць рэдагаваць яе.'''",
-'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.",
+'protectedpagewarning' => "'''Папярэджаньне: Гэтая старонка была абароненая, таму толькі адміністратары могуць рэдагаваць яе.'''
+Апошні запіс з журнала пададзены ніжэй для даведкі:",
+'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.
+Апошні запіс з журнала пададзены ніжэй для даведкі:",
'cascadeprotectedwarning' => "'''Папярэджаньне:''' Гэтая старонка абароненая, толькі ўдзельнікі з правамі адміністратараў могуць рэдагаваць яе, таму што яна ўключаная ў {{PLURAL:$1|наступную каскадна-абароненую старонку|наступныя каскадна-абароненыя старонкі}}:",
-'titleprotectedwarning' => "'''ПАПЯРЭДЖАНЬНЕ: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''",
-'templatesused' => 'На гэтай старонцы выкарыстаныя наступныя шаблёны:',
-'templatesusedpreview' => 'У гэтым праглядзе выкарыстаныя наступныя шаблёны:',
-'templatesusedsection' => 'У гэтай сэкцыі выкарыстаныя наступныя шаблёны:',
+'titleprotectedwarning' => "'''Папярэджаньне: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''
+Апошні запіс з журнала пададзены ніжэй для даведкі:",
+'templatesused' => 'На гэтай старонцы {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
'template-protected' => '(абаронены)',
'template-semiprotected' => '(часткова абароненая)',
'hiddencategories' => 'Гэтая старонка належыць $1 {{PLURAL:$1|схаванай катэгорыі|схаваным катэгорыям|схаваным катэгорыям}}:',
@@ -892,15 +917,17 @@ $2',
'nocreatetext' => 'У {{GRAMMAR:месны|{{SITENAME}}}} абмежаванае стварэньне новых старонак.
Вы можаце вярнуцца і рэдагаваць існуючую старонку, альбо [[Special:UserLogin|ўвайсьці ў сыстэму ці стварыць рахунак]].',
'nocreate-loggedin' => 'Вы ня маеце дазволу на стварэньне новых старонак.',
+'sectioneditnotsupported-title' => 'Рэдагаваньне сэкцыяў не падтрымліваецца',
+'sectioneditnotsupported-text' => 'Рэдагаваньне сэкцыяў не падтрымліваецца ў гэтай старонцы рэдагаваньня',
'permissionserrors' => 'Памылкі дазволаў',
'permissionserrorstext' => 'Вы ня маеце дазволу на гэтае дзеяньне па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
'permissionserrorstext-withaction' => 'Вы ня маеце дазволу на $2 па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
-'recreate-deleted-warn' => "'''ПАПЯРЭДЖАНЬНЕ: Вы ствараеце старонку, якая раней была выдаленая.'''
+'recreate-moveddeleted-warn' => "'''Увага: Вы ствараеце старонку, якая раней была выдаленая.'''
Упэўніцеся, што стварэньне гэтай старонкі неабходнае.
-Ніжэй знаходзіцца журнал выдаленьняў гэтай старонкі:",
-'deleted-notice' => 'Гэта старонка была выдаленая. Журнал выдаленьняў для гэтай старонкі пададзены ніжэй.',
-'deletelog-fulllog' => 'Паказаць журнал цалкам',
+Ніжэй пададзеныя журналы выдаленьняў і пераносаў гэтай старонкі:",
+'moveddeleted-notice' => 'Гэта старонка была выдаленая. Журналы выдаленьняў і пераносаў для гэтай старонкі пададзеныя ніжэй.',
+'log-fulllog' => 'Паказаць журнал цалкам',
'edit-hook-aborted' => 'Рэдагаваньне скасаванае працэдурай-перахопнікам.
Тлумачэньняў не было.',
'edit-gone-missing' => 'Немагчыма абнавіць старонку.
@@ -923,6 +950,7 @@ $2',
'post-expand-template-argument-category' => 'Старонкі, у якіх прапушчаныя парамэтры шаблёнаў',
'parser-template-loop-warning' => 'Выяўлены цыкль у шаблёнах: [[$1]]',
'parser-template-recursion-depth-warning' => 'Перавышана мяжа глыбіні рэкурсіі шаблёнаў ($1)',
+'language-converter-depth-warning' => 'Перавышанае абмежаваньне глыбіні канвэртару варыянтаў мовы ($1)',
# "Undo" feature
'undo-success' => 'Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.',
@@ -942,7 +970,7 @@ $2',
'currentrev' => 'Цяперашняя вэрсія',
'currentrev-asof' => 'Цяперашняя вэрсія на $1',
'revisionasof' => 'Вэрсія ад $1',
-'revision-info' => 'Вэрсія ад $1, аўтар $2', # Additionally available: $3: revision id
+'revision-info' => 'Вэрсія ад $1, аўтар $2',
'previousrevision' => '← Папярэдняя вэрсія',
'nextrevision' => 'Наступная вэрсія →',
'currentrevisionlink' => 'Цяперашняя вэрсія',
@@ -954,7 +982,7 @@ $2',
'histlegend' => 'Параўнаньне: пазначце кропкамі дзьве вэрсіі для параўнаньня і націсьніце enter альбо кнопку ўнізе.<br />
Тлумачэньне: (цяп) = адрозьненьні ад цяперашняй вэрсіі, (папярэдняя) = адрозьненьні ад папярэдняй вэрсіі, д = дробная праўка.',
'history-fieldset-title' => 'Пошук у гісторыі',
-'deletedrev' => '[выдаленая]',
+'history-show-deleted' => 'Толькі выдаленыя',
'histfirst' => 'найстарэйшыя',
'histlast' => 'найнавейшыя',
'historysize' => '($1 {{PLURAL:$1|байт|байты|байтаў}})',
@@ -963,71 +991,114 @@ $2',
# Revision feed
'history-feed-title' => 'Гісторыя зьменаў',
'history-feed-description' => 'Гісторыя зьменаў гэтай старонкі',
-'history-feed-item-nocomment' => '$1 у $2', # user at time
+'history-feed-item-nocomment' => '$1 у $2',
'history-feed-empty' => 'Запатрабаванай старонкі не існуе.
Магчыма, яна была выдаленая альбо яе перанесьлі.
Паспрабуйце [[Special:Search|пашукаць]] падобныя старонкі.',
# Revision deletion
-'rev-deleted-comment' => '(камэнтар выдалены)',
-'rev-deleted-user' => '(імя ўдзельніка выдаленае)',
-'rev-deleted-event' => '(запіс з журнала падзеяў выдалены)',
-'rev-deleted-text-permission' => "Гэтая вэрсія старонкі была '''выдаленая'''.
-Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
-'rev-deleted-text-view' => "Гэтая вэрсія старонкі была '''выдаленая'''.
+'rev-deleted-comment' => '(камэнтар выдалены)',
+'rev-deleted-user' => '(імя ўдзельніка выдаленае)',
+'rev-deleted-event' => '(запіс з журнала падзеяў выдалены)',
+'rev-deleted-user-contribs' => '[імя ўдзельніка альбо IP-адрас выдалены — рэдагаваньне схаванае з унёску]',
+'rev-deleted-text-permission' => "Гэтая вэрсія старонкі была '''выдаленая'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
+'rev-deleted-text-unhide' => "Гэтая вэрсія старонкі была '''выдаленая'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].
+Як адміністратар, Вы можаце [$1 праглядзець гэтую вэрсію].",
+'rev-suppressed-text-unhide' => "Гэтая вэрсія старонкі была '''схаваная'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].
+Як адміністратар, Вы можаце [$1 праглядзець гэтую вэрсію].",
+'rev-deleted-text-view' => "Гэтая вэрсія старонкі была '''выдаленая'''.
Як адміністратар, Вы можаце праглядзець яе.
-Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
-'rev-deleted-no-diff' => "Вы ня можаце праглядаць гэтую розьніцу паміж вэрсіямі, таму што адна з вэрсіяў была '''выдалена'''.
-Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
-'rev-deleted-unhide-diff' => "Адна з вэрсіяў гэтай старонкі была '''выдалена'''.
-Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].
-Як адміністратар, Вы можаце праглядзець [$1 адрозьненьні паміж вэрсіямі].",
-'rev-delundel' => 'паказаць/схаваць',
-'revisiondelete' => 'Выдаліць/аднавіць вэрсіі',
-'revdelete-nooldid-title' => 'Ня выбрана мэтавая вэрсія',
-'revdelete-nooldid-text' => 'Вы ня выбралі мэтавую вэрсію (ці вэрсіі) для выкананьня гэтай функцыі, выбранай вэрсіі не існуе альбо Вы спрабуеце схаваць цяперашнюю вэрсію.',
-'revdelete-nologtype-title' => 'Ня ўказаны тып журнала',
-'revdelete-nologtype-text' => 'Вы не пазначылі тып журнала, у якім будзе выконвацца гэта дзеяньне.',
-'revdelete-toomanytargets-title' => 'Зашмат мэтаў',
-'revdelete-toomanytargets-text' => 'Вы пазначылі зашмат тыпаў мэтаў, для якіх будзе выконвацца гэта дзеяньне.',
-'revdelete-nologid-title' => 'Няслушны запіс у журнале',
-'revdelete-nologid-text' => 'Вы не пазначылі запіс у журнале для выкананьня гэтай функцыі, альбо выбраны запіс не існуе.',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
-'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць адлюстроўвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
-
-Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць ўведзеныя дадатковыя абмежаваньні.
-Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].",
-'revdelete-suppress-text' => "Схаваньні могуць выкарыстоўвацца '''толькі''' ў наступных выпадках:
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
+'rev-suppressed-text-view' => "Гэтая вэрсія старонкі была '''выдаленьняў'''.
+Як адміністратар Вы можаце яе праглядзець; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].",
+'rev-deleted-no-diff' => "Вы ня можаце праглядаць гэтую розьніцу паміж вэрсіямі, таму што адна з вэрсіяў была '''выдаленая'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
+'rev-suppressed-no-diff' => "Вы ня можаце праглядзець гэтую розьніцу, таму што адна з вэрсіяў была '''выдаленая'''.",
+'rev-deleted-unhide-diff' => "Адна з вэрсіяў гэтай старонкі была '''выдаленая'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].
+Як адміністратар, Вы можаце праглядзець [$1 розьніцу паміж вэрсіямі].",
+'rev-suppressed-unhide-diff' => "Адна з вэрсіяў гэтага параўнаньня была '''схаваная'''.
+Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].
+Як адміністратар, Вы можаце [$1 паглядзець гэту розьніцу].",
+'rev-deleted-diff-view' => "Адна з вэрсіяў гэтага параўнаньня была '''выдаленая'''.
+Як адміністратар, Вы можаце праглядзець гэтую розьніцу паміж вэрсіямі. Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
+'rev-suppressed-diff-view' => "Адна з вэрсіяў гэтага параўнаньня была '''схаваная'''.
+Як адміністратар, Вы можаце праглядзець гэтую розьніцу паміж вэрсіямі. Магчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале хаваньняў].",
+'rev-delundel' => 'паказаць/схаваць',
+'rev-showdeleted' => 'паказаць',
+'revisiondelete' => 'Выдаліць/аднавіць вэрсіі',
+'revdelete-nooldid-title' => 'Ня выбрана мэтавая вэрсія',
+'revdelete-nooldid-text' => 'Вы ня выбралі мэтавую вэрсію (ці вэрсіі) для выкананьня гэтай функцыі, выбранай вэрсіі не існуе альбо Вы спрабуеце схаваць цяперашнюю вэрсію.',
+'revdelete-nologtype-title' => 'Ня ўказаны тып журнала',
+'revdelete-nologtype-text' => 'Вы не пазначылі тып журнала, у якім будзе выконвацца гэта дзеяньне.',
+'revdelete-nologid-title' => 'Няслушны запіс у журнале',
+'revdelete-nologid-text' => 'Вы не пазначылі запіс у журнале для выкананьня гэтай функцыі, альбо выбраны запіс не існуе.',
+'revdelete-no-file' => 'Пазначаны файл не існуе.',
+'revdelete-show-file-confirm' => 'Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?',
+'revdelete-show-file-submit' => 'Так',
+'revdelete-selected' => "'''{{PLURAL:$2|Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
+'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць адлюстроўвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
+Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць ўведзеныя дадатковыя абмежаваньні.",
+'revdelete-confirm' => 'Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
+'revdelete-suppress-text' => "Схаваньні могуць выкарыстоўвацца '''толькі''' ў наступных выпадках:
* Раскрыцьцё асабістых зьвестак
*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г.д.''",
-'revdelete-legend' => 'Усталяваць абмежаваньні бачнасьці',
-'revdelete-hide-text' => 'Схаваць тэкст вэрсіі',
-'revdelete-hide-name' => 'Схаваць дзеяньне і мэту',
-'revdelete-hide-comment' => 'Схаваць кароткае апісаньне зьменаў',
-'revdelete-hide-user' => 'Схаваць імя/IP-адрас удзельніка',
-'revdelete-hide-restricted' => 'Ужываць гэтыя абмежаваньні таксама і для адміністратараў',
-'revdelete-suppress' => 'Схаваць зьвесткі ад адміністратараў як і ад іншых удзельнікаў',
-'revdelete-hide-image' => 'Схаваць зьмест файла',
-'revdelete-unsuppress' => 'Зьняць абмежаваньні з адноўленых вэрсіяў',
-'revdelete-log' => 'Прычына:',
-'revdelete-submit' => 'Ужыць для выбранай вэрсіі',
-'revdelete-logentry' => 'зьмененая бачнасьць вэрсіі старонкі [[$1]]',
-'logdelete-logentry' => 'зьмененая бачнасьць падзеі старонкі [[$1]]',
-'revdelete-success' => "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
-'logdelete-success' => "'''Бачнасьць падзеі пасьпяхова зьмененая.'''",
-'revdel-restore' => 'Зьмяніць бачнасьць',
-'pagehist' => 'Гісторыя старонкі',
-'deletedhist' => 'Выдаленая гісторыя',
-'revdelete-content' => 'зьмест',
-'revdelete-summary' => 'кароткае апісаньне зьменаў',
-'revdelete-uname' => 'імя ўдзельніка',
-'revdelete-restricted' => 'ужыць абмежаваньні для адміністратараў',
-'revdelete-unrestricted' => 'зьнятыя абмежаваньні для адміністратараў',
-'revdelete-hid' => 'схаваць $1',
-'revdelete-unhid' => 'не хаваць $1',
-'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|вэрсіі|вэрсій|вэрсіяў}}',
-'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|падзеі|падзеяў|падзеяў}}',
+'revdelete-legend' => 'Усталяваць абмежаваньні бачнасьці',
+'revdelete-hide-text' => 'Схаваць тэкст вэрсіі',
+'revdelete-hide-image' => 'Схаваць зьмест файла',
+'revdelete-hide-name' => 'Схаваць дзеяньне і мэту',
+'revdelete-hide-comment' => 'Схаваць кароткае апісаньне зьменаў',
+'revdelete-hide-user' => 'Схаваць імя/IP-адрас удзельніка',
+'revdelete-hide-restricted' => 'Ужываць гэтыя абмежаваньні таксама і для адміністратараў',
+'revdelete-radio-same' => '(не зьмяняць)',
+'revdelete-radio-set' => 'Так',
+'revdelete-radio-unset' => 'Не',
+'revdelete-suppress' => 'Схаваць зьвесткі ад адміністратараў як і ад іншых удзельнікаў',
+'revdelete-unsuppress' => 'Зьняць абмежаваньні з адноўленых вэрсіяў',
+'revdelete-log' => 'Прычына:',
+'revdelete-submit' => 'Ужыць для {{PLURAL:$1|выбранай вэрсіі|выбраных вэрсіяў}}',
+'revdelete-logentry' => 'зьмененая бачнасьць вэрсіі старонкі [[$1]]',
+'logdelete-logentry' => 'зьмененая бачнасьць падзеі старонкі [[$1]]',
+'revdelete-success' => "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
+'revdelete-failure' => "'''Немагчыма абнавіць бачнасьць вэрсіі:'''
+$1",
+'logdelete-success' => "'''Бачнасьць падзеі пасьпяхова зьмененая.'''",
+'logdelete-failure' => "'''Немагчыма ўстанавіць бачнасьць у журнале:'''
+$1",
+'revdel-restore' => 'Зьмяніць бачнасьць',
+'pagehist' => 'Гісторыя старонкі',
+'deletedhist' => 'Выдаленая гісторыя',
+'revdelete-content' => 'зьмест',
+'revdelete-summary' => 'кароткае апісаньне зьменаў',
+'revdelete-uname' => 'імя ўдзельніка',
+'revdelete-restricted' => 'ужыць абмежаваньні для адміністратараў',
+'revdelete-unrestricted' => 'зьнятыя абмежаваньні для адміністратараў',
+'revdelete-hid' => 'схаваць $1',
+'revdelete-unhid' => 'не хаваць $1',
+'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|вэрсіі|вэрсій|вэрсіяў}}',
+'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|падзеі|падзеяў|падзеяў}}',
+'revdelete-hide-current' => 'Памылка хаваньня запісу ад $2 $1: гэта цяперашняя вэрсія.
+Запіс ня можа быць схаваны.',
+'revdelete-show-no-access' => 'Памылка паказу запісу ад $2 $1: гэты запіс быў пазначаны як «абмежаваны».
+Вы ня маеце да яго доступу.',
+'revdelete-modify-no-access' => 'Памылка зьмены запісу ад $2 $1: гэты запіс быў пазначаны як «абмежаваны».
+Вы ня маеце да яго доступу.',
+'revdelete-modify-missing' => 'Памылка мадыфікацыі запісу з ідэнтыфікатарам $1: запіс не існуе ў базе зьвестак!',
+'revdelete-no-change' => "'''Папярэджаньне:''' запіс ад $2 $1 ужо мае запатрабаваныя ўстаноўкі бачнасьці.",
+'revdelete-concurrent-change' => 'Памылка зьмены запісу ад $2 $1: яго статус быў зьменены кімсьці іншым, пакуль Вы спрабавалі яго зьмяніць.
+Калі ласка, праверце журналы.',
+'revdelete-only-restricted' => 'Памылка хаваньня запісаў элемэнтаў $2, $1: Вы ня можаце схаваць запісы ад прагляду адміністратарамі без выбару адной зь іншых установак хаваньня.',
+'revdelete-reason-dropdown' => '* Агульныя прычыны выдаленьня
+** Парушэньне аўтарскіх правоў
+** Інфармацыя, якая парушае прыватнасьць',
+'revdelete-otherreason' => 'Іншая/дадатковая прычына:',
+'revdelete-reasonotherlist' => 'Іншая прычына',
+'revdelete-edit-reasonlist' => 'Рэдагаваць прычыны выдаленьня',
+'revdelete-offender' => 'Аўтар вэрсіі:',
# Suppression log
'suppressionlog' => 'Журнал схаваньняў',
@@ -1066,67 +1137,13 @@ $2',
'mergelogpagetext' => "Ніжэй знаходзіцца сьпіс апошніх аб'яднаньняў гісторыяў старонак.",
# Diffs
-'history-title' => 'Гісторыя зьменаў старонкі «$1»',
-'difference' => '(Адрозьненьні паміж вэрсіямі)',
-'lineno' => 'Радок $1:',
-'compareselectedversions' => 'Параўнаць выбраныя вэрсіі',
-'visualcomparison' => 'Візуальнае параўнаньне',
-'wikicodecomparison' => 'Параўнаньне вікі-тэксту',
-'editundo' => 'адмяніць',
-'diff-multi' => '($1 {{PLURAL:$1|прамежная вэрсія не паказаная|прамежныя вэрсіі не паказаныя|прамежных вэрсіяў не паказаныя}})',
-'diff-movedto' => 'перанесены ў $1',
-'diff-styleadded' => 'дададзены стыль $1',
-'diff-added' => 'дададзены $1',
-'diff-changedto' => 'зьменены на $1',
-'diff-movedoutof' => 'перанесены з $1',
-'diff-styleremoved' => 'выдалены стыль $1',
-'diff-removed' => 'выдалены $1',
-'diff-changedfrom' => 'зьменены з $1',
-'diff-src' => 'крыніца',
-'diff-withdestination' => 'з мэтай $1',
-'diff-with' => '&#32;з $1 $2',
-'diff-with-final' => '&#32;і $1 $2',
-'diff-width' => 'шырыня',
-'diff-height' => 'вышыня',
-'diff-p' => "'''абзац'''",
-'diff-blockquote' => "'''цытата'''",
-'diff-h1' => "'''загаловак (1-ы ўзровень)'''",
-'diff-h2' => "'''загаловак (2-і ўзровень)'''",
-'diff-h3' => "'''загаловак (3-і ўзровень)'''",
-'diff-h4' => "'''загаловак (4-ы ўзровень)'''",
-'diff-h5' => "'''загаловак (5-ы ўзровень)'''",
-'diff-pre' => "'''блёк зададзенага фармату'''",
-'diff-div' => "'''падзел'''",
-'diff-ul' => "'''неўпарадкаваны сьпіс'''",
-'diff-ol' => "'''упарадкаваны сьпіс'''",
-'diff-li' => "'''элемэнт сьпісу'''",
-'diff-table' => "'''табліца'''",
-'diff-tbody' => "'''зьмест табліцы'''",
-'diff-tr' => "'''радок'''",
-'diff-td' => "'''ячэйка'''",
-'diff-th' => "'''загаловак'''",
-'diff-br' => "'''разрыў'''",
-'diff-hr' => "'''гарызантальная лінія'''",
-'diff-code' => "'''блёк кампутарнага коду'''",
-'diff-dl' => "'''сьпіс азначэньняў'''",
-'diff-dt' => "'''тэрмін азначэньня'''",
-'diff-dd' => "'''азначэньне'''",
-'diff-input' => "'''увод'''",
-'diff-form' => "'''форма'''",
-'diff-img' => "'''выява'''",
-'diff-span' => "'''дыяпазон'''",
-'diff-a' => "'''спасылка'''",
-'diff-i' => "'''курсіў'''",
-'diff-b' => "'''тлусты шрыфт'''",
-'diff-strong' => "'''тлусты'''",
-'diff-em' => "'''з прыціскам'''",
-'diff-font' => "'''шрыфт'''",
-'diff-big' => "'''вялікі шрыфт'''",
-'diff-del' => "'''выдалена'''",
-'diff-tt' => "'''роўнашырокі шрыфт'''",
-'diff-sub' => "'''ніжні індэкс'''",
-'diff-sup' => "'''верхні індэкс'''",
-'diff-strike' => "'''перакрэсьлены'''",
+'history-title' => 'Гісторыя зьменаў старонкі «$1»',
+'difference' => '(Адрозьненьні паміж вэрсіямі)',
+'lineno' => 'Радок $1:',
+'compareselectedversions' => 'Параўнаць выбраныя вэрсіі',
+'showhideselectedversions' => 'Паказаць/схаваць вызначаныя вэрсіі',
+'editundo' => 'адмяніць',
+'diff-multi' => '($1 {{PLURAL:$1|прамежная вэрсія не паказаная|прамежныя вэрсіі не паказаныя|прамежных вэрсіяў не паказаныя}})',
# Search results
'searchresults' => 'Вынікі пошуку',
@@ -1134,28 +1151,25 @@ $2',
'searchresulttext' => 'Для атрыманьня больш падрабязнай інфармацыі пра пошук у {{GRAMMAR:месны|{{SITENAME}}}}, глядзіце [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Па запыце '''[[:$1]]''' ([[Special:Prefixindex/$1|усе старонкі, якія пачынаюцца з «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усе старонкі, якія спасылаюцца на «$1»]])",
'searchsubtitleinvalid' => "Па запыце '''$1'''",
-'noexactmatch' => "'''Старонкі з гэткай назвай не існуе.''' Вы можаце '''[[:$1|стварыць гэтую старонку]]'''.",
-'noexactmatch-nocreate' => "'''Не існуе старонкі з назвай «$1».'''",
'toomanymatches' => 'Знойдзена зашмат супадзеньняў з запытам, калі ласка, паспрабуйце зьмяніць запыт',
'titlematches' => 'Супадзеньні ў назвах старонак',
'notitlematches' => 'Супадзеньні ў назвах старонак ня знойдзеныя',
'textmatches' => 'Супадзеньні ў тэкстах старонак',
'notextmatches' => 'Супадзеньні ў тэкстах старонак ня знойдзеныя',
-'prevn' => 'папярэднія $1',
-'nextn' => 'наступныя $1',
+'prevn' => '{{PLURAL:$1|папярэдняя|папярэднія|папярэднія}} $1',
+'nextn' => '{{PLURAL:$1|наступная|наступныя|наступныя}} $1',
'prevn-title' => '{{PLURAL:$1|Папярэдні $1 вынік|Папярэднія $1 вынікі|Папярэднія $1 вынікаў}}',
'nextn-title' => '{{PLURAL:$1|Наступны $1 вынік|Наступныя $1 вынікі|Наступныя $1 вынікаў}}',
'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі|вынікаў}} на старонцы',
-'viewprevnext' => 'Паказаць ($1) ($2) ($3)',
+'viewprevnext' => 'Паказаць ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Устаноўкі пошуку',
'searchmenu-exists' => "* Старонка '''[[$1]]'''",
'searchmenu-new' => "'''Стварыць старонку «[[:$1|$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!'''",
'searchhelp-url' => 'Help:Зьмест',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Праглядзець старонкі з гэтым прэфіксам]]',
'searchprofile-articles' => 'Старонкі са зьместам',
-'searchprofile-articles-and-proj' => 'Старонкі са зьместам і старонкі праекту',
-'searchprofile-project' => 'Старонкі праекту',
-'searchprofile-images' => 'Файлы',
+'searchprofile-project' => 'Старонкі дапамогі і праекту',
+'searchprofile-images' => 'Мультымэдыя',
'searchprofile-everything' => 'Усё',
'searchprofile-advanced' => 'Пашыраны',
'searchprofile-articles-tooltip' => 'Пошук у $1',
@@ -1163,8 +1177,6 @@ $2',
'searchprofile-images-tooltip' => 'Пошук файлаў',
'searchprofile-everything-tooltip' => 'Шукаць усюды (уключна са старонкамі абмеркаваньня)',
'searchprofile-advanced-tooltip' => 'Шукаць у дадатковых прасторах назваў',
-'prefs-search-nsdefault' => 'Шукаць з выкарыстаньнем змоўчаньняў:',
-'prefs-search-nscustom' => 'Шукаць у дадатковых прасторах назваў:',
'search-result-size' => '$1 ($2 {{PLURAL:$2|слова|словы|словаў}})',
'search-result-score' => 'Адпаведнасьць: $1%',
'search-redirect' => '(перанакіраваньне $1)',
@@ -1177,11 +1189,12 @@ $2',
'search-mwsuggest-disabled' => 'без парад',
'search-relatedarticle' => 'Зьвязаны',
'mwsuggest-disable' => 'Адключыць AJAX-падказкі',
+'searcheverything-enable' => 'Шукаць ва ўсіх прасторах назваў',
'searchrelated' => 'зьвязаны',
'searchall' => 'усе',
'showingresults' => "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
'showingresultsnum' => "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
-'showingresultstotal' => "Ніжэй {{PLURAL:$4|паказаны '''$1''' вынік з '''$3'''|паказаныя вынікі '''$1 — $2''' з '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
'nonefound' => "'''Увага''': Па змоўчваньні пошук вядзецца не ва ўсіх прасторах назваў. Трэба дапісаць да запыту ''усе:'' каб шукаць па ўсім зьмесьце (уключаючы абмеркаваньні, шаблёны і г.д.) альбо дадаць да запыту неабходную прастору назваў.",
'search-nonefound' => 'Супадзеньняў па запыце ня знойдзена.',
'powersearch' => 'Удасканалены пошук',
@@ -1189,114 +1202,150 @@ $2',
'powersearch-ns' => 'Шукаць у прасторах назваў:',
'powersearch-redir' => 'Паказваць перанакіраваньні',
'powersearch-field' => 'Шукаць',
+'powersearch-togglelabel' => 'Пазначыць:',
+'powersearch-toggleall' => 'Усе',
+'powersearch-togglenone' => 'Нічога',
'search-external' => 'Вонкавы пошук',
'searchdisabled' => 'Функцыя пошуку ў {{GRAMMAR:месны|{{SITENAME}}}} адключаная.
Вы можаце пашукаць з дапамогай Google, але заўважце, што там інфармацыя пра старонкі {{GRAMMAR:родны|{{SITENAME}}}} можа быць састарэлай.',
+# Quickbar
+'qbsettings' => 'Панэль хуткага доступу',
+'qbsettings-none' => 'Не паказваць',
+'qbsettings-fixedleft' => 'Замацаваная зьлева',
+'qbsettings-fixedright' => 'Замацаваная справа',
+'qbsettings-floatingleft' => 'Рухомая зьлева',
+'qbsettings-floatingright' => 'Плавае справа',
+
# Preferences page
-'preferences' => 'Устаноўкі',
-'mypreferences' => 'Мае ўстаноўкі',
-'prefs-edits' => 'Колькасьць рэдагаваньняў:',
-'prefsnologin' => 'Вы не ўвайшлі ў сыстэму',
-'prefsnologintext' => 'Вам трэба <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ўвайсьці ў сыстэму]</span>, каб зьмяняць свае ўстаноўкі.',
-'prefsreset' => 'Адноўленыя ўстаноўкі па змоўчаньні.',
-'qbsettings' => 'Панэль хуткага доступу',
-'qbsettings-none' => 'Не паказваць',
-'qbsettings-fixedleft' => 'Замацаваная зьлева',
-'qbsettings-fixedright' => 'Замацаваная справа',
-'qbsettings-floatingleft' => 'Рухомая зьлева',
-'qbsettings-floatingright' => 'Плавае справа',
-'changepassword' => 'Зьмяніць пароль',
-'skin' => 'Афармленьне',
-'skin-preview' => 'Папярэдні прагляд',
-'math' => 'Матэматыка',
-'dateformat' => 'Фармат даты',
-'datedefault' => 'Па змоўчаньні',
-'datetime' => 'Дата і час',
-'math_failure' => 'Не атрымалася разабраць',
-'math_unknown_error' => 'невядомая памылка',
-'math_unknown_function' => 'невядомая функцыя',
-'math_lexing_error' => 'лексычная памылка',
-'math_syntax_error' => 'сынтаксычная памылка',
-'math_image_error' => 'Не атрымалася пераўтварыць у PNG;
-спраўдзіце дакладнасьць усталяваньня пакетаў latex, dvips, gs, і convert',
-'math_bad_tmpdir' => 'Немагчыма запісаць ці стварыць часовую дырэкторыю для матэматыкі',
-'math_bad_output' => 'Немагчыма запісаць ці стварыць выходную матэматычную дырэкторыю',
-'math_notexvc' => 'Выканаўчы модуль texvc ня знойдзены.
-Калі ласка, прачытайце math/README пра яго канфігурацыю.',
-'prefs-personal' => 'Асабістыя зьвесткі',
-'prefs-rc' => 'Апошнія зьмены',
-'prefs-watchlist' => 'Сьпіс назіраньня',
-'prefs-watchlist-days' => 'Колькасьць дзён для паказу ў сьпісе назіраньня:',
-'prefs-watchlist-days-max' => '(максымальна 7 дзён)',
-'prefs-watchlist-edits' => 'Колькасьць рэдагаваньняў для паказу ў пашыраным сьпісе назіраньня:',
-'prefs-watchlist-edits-max' => '(максымальная колькасьць: 1000)',
-'prefs-misc' => 'Рознае',
-'prefs-resetpass' => 'Зьмяніць пароль',
-'saveprefs' => 'Захаваць',
-'resetprefs' => 'Скінуць',
-'restoreprefs' => 'Вярнуць усе настройкі па змоўчваньні',
-'textboxsize' => 'Рэдагаваньне',
-'prefs-edit-boxsize' => 'Памер акна рэдагаваньня.',
-'rows' => 'Радкоў:',
-'columns' => 'Слупкоў:',
-'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Колькасьць вынікаў на старонцы:',
-'contextlines' => 'Колькасьць радкоў для паказу:',
-'contextchars' => 'Колькасьць сымбаляў на радок:',
-'stub-threshold' => 'Максымальны памер старонкі для паказу спасылак <a href="#" class="stub">як на накід</a> (у байтах):',
-'recentchangesdays' => 'Колькасьць дзён для паказу ў апошніх зьменах:',
-'recentchangesdays-max' => '(максымальна $1 {{PLURAL:$1|дзень|дні|дзён}})',
-'recentchangescount' => 'Колькасьць рэдагаваньняў для паказу ў апошніх зьменах, гісторыях старонак і ў журналах, па змоўчваньні:',
-'savedprefs' => 'Вашыя ўстаноўкі былі захаваныя.',
-'timezonelegend' => 'Часавы пояс:',
-'timezonetext' => '¹На колькі гадзінаў Ваш мясцовы час адрозьніваецца ад сэрвэрнага (UTC).',
-'localtime' => 'Мясцовы час:',
-'timezoneselect' => 'Часавы пояс:',
-'timezoneuseserverdefault' => 'Выкарыстоўваць часавы пояс сэрвэра',
-'timezoneuseoffset' => 'Іншы (пазначце розьніцу ў часе)',
-'timezoneoffset' => 'Розьніца¹:',
-'servertime' => 'Час на сэрвэры:',
-'guesstimezone' => 'Запоўніць з браўзэра',
-'timezoneregion-africa' => 'Афрыка',
-'timezoneregion-america' => 'Амэрыка',
-'timezoneregion-antarctica' => 'Антарктыда',
-'timezoneregion-arctic' => 'Арктыка',
-'timezoneregion-asia' => 'Азія',
-'timezoneregion-atlantic' => 'Атлянтычны акіян',
-'timezoneregion-australia' => 'Аўстралія',
-'timezoneregion-europe' => 'Эўропа',
-'timezoneregion-indian' => 'Індыйскі акіян',
-'timezoneregion-pacific' => 'Ціхі акіян',
-'allowemail' => 'Дазволіць атрыманьне лістоў ад іншых удзельнікаў і ўдзельніц',
-'prefs-searchoptions' => 'Магчымасьці пошуку',
-'prefs-namespaces' => 'Прасторы назваў',
-'defaultns' => 'Па змоўчаньні, шукаць у наступных прасторах назваў:',
-'default' => 'па змоўчваньні',
-'files' => 'Файлы',
-'prefs-custom-css' => 'Індывідуальны CSS',
-'prefs-custom-js' => 'Індывідуальны JS',
+'preferences' => 'Устаноўкі',
+'mypreferences' => 'Мае ўстаноўкі',
+'prefs-edits' => 'Колькасьць рэдагаваньняў:',
+'prefsnologin' => 'Вы не ўвайшлі ў сыстэму',
+'prefsnologintext' => 'Вам трэба <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ўвайсьці ў сыстэму]</span>, каб зьмяняць свае ўстаноўкі.',
+'changepassword' => 'Зьмяніць пароль',
+'prefs-skin' => 'Афармленьне',
+'skin-preview' => 'Папярэдні прагляд',
+'prefs-math' => 'Матэматыка',
+'datedefault' => 'Па змоўчаньні',
+'prefs-datetime' => 'Дата і час',
+'prefs-personal' => 'Асабістыя зьвесткі',
+'prefs-rc' => 'Апошнія зьмены',
+'prefs-watchlist' => 'Сьпіс назіраньня',
+'prefs-watchlist-days' => 'Колькасьць дзён для паказу ў сьпісе назіраньня:',
+'prefs-watchlist-days-max' => '(максымальна 7 дзён)',
+'prefs-watchlist-edits' => 'Колькасьць рэдагаваньняў для паказу ў пашыраным сьпісе назіраньня:',
+'prefs-watchlist-edits-max' => '(максымальная колькасьць: 1000)',
+'prefs-watchlist-token' => 'Сакрэтны ключ сьпісу назіраньня:',
+'prefs-misc' => 'Рознае',
+'prefs-resetpass' => 'Зьмяніць пароль',
+'prefs-email' => 'Устаноўкі электроннай пошты',
+'prefs-rendering' => 'Выгляд',
+'saveprefs' => 'Захаваць',
+'resetprefs' => 'Скінуць',
+'restoreprefs' => 'Вярнуць усе настройкі па змоўчваньні',
+'prefs-editing' => 'Рэдагаваньне',
+'prefs-edit-boxsize' => 'Памер акна рэдагаваньня.',
+'rows' => 'Радкоў:',
+'columns' => 'Слупкоў:',
+'searchresultshead' => 'Пошук',
+'resultsperpage' => 'Колькасьць вынікаў на старонцы:',
+'contextlines' => 'Колькасьць радкоў для паказу:',
+'contextchars' => 'Колькасьць сымбаляў на радок:',
+'stub-threshold' => 'Максымальны памер старонкі для паказу спасылак <a href="#" class="stub">як на накід</a> (у байтах):',
+'recentchangesdays' => 'Колькасьць дзён для паказу ў апошніх зьменах:',
+'recentchangesdays-max' => '(максымальна $1 {{PLURAL:$1|дзень|дні|дзён}})',
+'recentchangescount' => 'Колькасьць рэдагаваньняў для паказу па змоўчваньні:',
+'prefs-help-recentchangescount' => 'Гэта датычыцца апошніх зьменах, гісторый старонак і журналаў.',
+'prefs-help-watchlist-token' => 'Запаўненьне гэтага поля сакрэтным ключом створыць RSS-стужку для Вашага сьпісу назіраньня.
+Кожны, хто ведае ключ у гэтым полі, зможа чытаць Ваш сьпіс назіраньня, таму выбірайце сакрэтнае значэньне.
+Тут Вы зможаце выкарыстоўваць выпадковае значэньне: $1',
+'savedprefs' => 'Вашыя ўстаноўкі былі захаваныя.',
+'timezonelegend' => 'Часавы пояс:',
+'localtime' => 'Мясцовы час:',
+'timezoneuseserverdefault' => 'Выкарыстоўваць часавы пояс сэрвэра',
+'timezoneuseoffset' => 'Іншы (пазначце розьніцу ў часе)',
+'timezoneoffset' => 'Розьніца¹:',
+'servertime' => 'Час на сэрвэры:',
+'guesstimezone' => 'Запоўніць з браўзэра',
+'timezoneregion-africa' => 'Афрыка',
+'timezoneregion-america' => 'Амэрыка',
+'timezoneregion-antarctica' => 'Антарктыда',
+'timezoneregion-arctic' => 'Арктыка',
+'timezoneregion-asia' => 'Азія',
+'timezoneregion-atlantic' => 'Атлянтычны акіян',
+'timezoneregion-australia' => 'Аўстралія',
+'timezoneregion-europe' => 'Эўропа',
+'timezoneregion-indian' => 'Індыйскі акіян',
+'timezoneregion-pacific' => 'Ціхі акіян',
+'allowemail' => 'Дазволіць атрыманьне лістоў ад іншых удзельнікаў і ўдзельніц',
+'prefs-searchoptions' => 'Магчымасьці пошуку',
+'prefs-namespaces' => 'Прасторы назваў',
+'defaultns' => 'Інакш шукаць у наступных прасторах назваў:',
+'default' => 'па змоўчваньні',
+'prefs-files' => 'Файлы',
+'prefs-custom-css' => 'Індывідуальны CSS',
+'prefs-custom-js' => 'Індывідуальны JS',
+'prefs-reset-intro' => 'Вы можаце выкарыстоўваць гэтую старонку для замены Вашых установак на ўстаноўкі сайта па змоўчваньні.
+Гэтае дзеяньне не можа быць адмененае.',
+'prefs-emailconfirm-label' => 'Пацьверджаньне адрасу электроннай пошты:',
+'prefs-textboxsize' => 'Памеры акна рэдагаваньня',
+'youremail' => 'Адрас электроннай пошты:',
+'username' => 'Імя ўдзельніка/ўдзельніцы:',
+'uid' => 'ID удзельніка/удзельніцы:',
+'prefs-memberingroups' => 'Удзельнік {{PLURAL:$1|групы|групаў}}:',
+'prefs-registration' => 'Час рэгістрацыі:',
+'yourrealname' => 'Сапраўднае імя:',
+'yourlanguage' => 'Мова інтэрфэйсу:',
+'yournick' => 'Подпіс:',
+'prefs-help-signature' => 'Камэнтары на старонцы абмеркаваньня павінны быць падпісаны праз даданьне сымбаляў «<nowiki>~~~~</nowiki>», якія будуць пераўтвораны ў Ваш подпіс і цяперашні час.',
+'badsig' => 'Няслушны неапрацаваны подпіс; праверце HTML-тэгі.',
+'badsiglength' => 'Ваш подпіс занадта доўгі.
+Подпіс мусіць быць не даўжэй за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'не пазначаны',
+'gender-male' => 'мужчынскі',
+'gender-female' => 'жаночы',
+'prefs-help-gender' => 'Неабавязковая: выкарыстоўваецца ў паведамленьнях праграмнага забесьпячэньня, якія залежаць ад полу ўдзельніка/ўдзельніцы. Гэта інфармацыя будзе агульнадаступнай.',
+'email' => 'Электронная пошта',
+'prefs-help-realname' => 'Сапраўднае імя паведамляць неабавязкова.
+Калі Вы яго пазначыце, яно будзе выкарыстоўвацца для пазначэньня Вашай працы.',
+'prefs-help-email' => 'Адрас электроннай пошты — неабавязковы, але дае магчымасьць даслаць Вам пароль, калі Вы забылі яго. Таксама Адрас электроннай пошты дазваляе іншым зьвязвацца з Вамі праз старонкі ўдзельніка безь неабходнасьці раскрыцьця Вашых асабістых зьвестак.',
+'prefs-help-email-required' => 'Патрабуецца адрас электроннай пошты.',
+'prefs-info' => 'Асноўныя зьвесткі',
+'prefs-i18n' => 'Інтэрнацыяналізацыя',
+'prefs-signature' => 'Подпіс',
+'prefs-dateformat' => 'Фармат даты',
+'prefs-timeoffset' => 'Розьніца ў часе',
+'prefs-advancedediting' => 'Дадатковыя ўстаноўкі',
+'prefs-advancedrc' => 'Дадатковыя ўстаноўкі',
+'prefs-advancedrendering' => 'Дадатковыя ўстаноўкі',
+'prefs-advancedsearchoptions' => 'Дадатковыя ўстаноўкі',
+'prefs-advancedwatchlist' => 'Дадатковыя ўстаноўкі',
+'prefs-display' => 'Устаноўкі паказу',
+'prefs-diffs' => 'Розьніцы вэрсіяў',
# User rights
-'userrights' => 'Кіраваньне правамі ўдзельнікаў і ўдзельніц', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Кіраваньне групамі ўдзельнікаў і ўдзельніц',
-'userrights-user-editname' => 'Увядзіце імя ўдзельніка:',
-'editusergroup' => 'Рэдагаваць групы ўдзельнікаў і ўдзельніц',
-'editinguser' => "Зьмена правоў удзельніка '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Рэдагаваць групы ўдзельнікаў і ўдзельніц',
-'saveusergroups' => 'Захаваць групы ўдзельнікаў і ўдзельніц',
-'userrights-groupsmember' => 'Уваходзіць у:',
-'userrights-groups-help' => 'Тут можна мяняць групы да якіх належыць гэты ўдзельнік:
+'userrights' => 'Кіраваньне правамі ўдзельнікаў і ўдзельніц',
+'userrights-lookup-user' => 'Кіраваньне групамі ўдзельнікаў і ўдзельніц',
+'userrights-user-editname' => 'Увядзіце імя ўдзельніка:',
+'editusergroup' => 'Рэдагаваць групы ўдзельнікаў і ўдзельніц',
+'editinguser' => "Зьмена правоў удзельніка '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Рэдагаваць групы ўдзельнікаў і ўдзельніц',
+'saveusergroups' => 'Захаваць групы ўдзельнікаў і ўдзельніц',
+'userrights-groupsmember' => 'Уваходзіць у:',
+'userrights-groupsmember-auto' => 'Няяўны чалец:',
+'userrights-groups-help' => 'Тут можна мяняць групы да якіх належыць гэты ўдзельнік:
* Вызначанае поле азначае прыналежнасьць удзельніка да гэтай групы.
* Ня вызначанае поле азначае, што ўдзельнік не належыць гэтай групе.
* Знак * азначае што Вы ня зможаце выдаліць удзельніка з групы, калі дададзіце яго да яе і наадварот.',
-'userrights-reason' => 'Прычына:',
-'userrights-no-interwiki' => 'Вы ня маеце дазволу зьмяняць правы ўдзельнікаў іншых вікаў.',
-'userrights-nodatabase' => 'Базы зьвестак $1 не існуе альбо яна не зьяўляецца лякальнай.',
-'userrights-nologin' => 'Вы павінны [[Special:UserLogin|ўвайсьці ў сыстэму]] як адміністратар, каб прызначаць правы ўдзельнікам.',
-'userrights-notallowed' => 'Вы ня можаце прызначаць правы ўдзельнікам.',
-'userrights-changeable-col' => 'Групы, якія Вы можаце мяняць',
-'userrights-unchangeable-col' => 'Групы, якія Вы ня можаце мяняць',
+'userrights-reason' => 'Прычына:',
+'userrights-no-interwiki' => 'Вы ня маеце дазволу зьмяняць правы ўдзельнікаў іншых вікаў.',
+'userrights-nodatabase' => 'Базы зьвестак $1 не існуе альбо яна не зьяўляецца лякальнай.',
+'userrights-nologin' => 'Вы павінны [[Special:UserLogin|ўвайсьці ў сыстэму]] як адміністратар, каб прызначаць правы ўдзельнікам.',
+'userrights-notallowed' => 'Вы ня можаце прызначаць правы ўдзельнікам.',
+'userrights-changeable-col' => 'Групы, якія Вы можаце мяняць',
+'userrights-unchangeable-col' => 'Групы, якія Вы ня можаце мяняць',
# Groups
'group' => 'Група:',
@@ -1349,6 +1398,7 @@ $2',
'right-bigdelete' => 'Выдаленьне старонак зь вялікімі гісторыямі',
'right-deleterevision' => 'выдаленьне і аднаўленьне асобных вэрсій старонак',
'right-deletedhistory' => 'прагляд выдаленай гісторыі старонак без доступу да выдаленага тэксту',
+'right-deletedtext' => 'прагляд выдаленага тэксту і зьменаў паміж выдаленымі вэрсіямі старонак',
'right-browsearchive' => 'пошук выдаленых старонак',
'right-undelete' => 'аднаўленьне старонак',
'right-suppressrevision' => 'прагляд і аднаўленьне вэрсій схаваных ад адміністратараў',
@@ -1362,6 +1412,8 @@ $2',
'right-editprotected' => 'рэдагаваньне абароненых старонак (без каскаднай абароны)',
'right-editinterface' => 'рэдагаваньне інтэрфэйса карыстальніка',
'right-editusercssjs' => 'рэдагаваньне CSS і JS файлаў іншых удзельнікаў',
+'right-editusercss' => 'рэдагаваньне CSS файлаў іншых удзельнікаў',
+'right-edituserjs' => 'рэдагаваньне JS файлаў іншых удзельнікаў',
'right-rollback' => 'хуткі адкат правак апошняга ўдзельніка, які рэдагаваў старонку',
'right-markbotedits' => 'пазначэньне адкатаў як рэдагаваньне робатам',
'right-noratelimit' => 'няма абмежаваньняў па хуткасьці',
@@ -1378,6 +1430,8 @@ $2',
'right-siteadmin' => 'блякаваньне і разблякаваньне базы зьвестак',
'right-reset-passwords' => 'ачыстка пароляў іншых удзельнікаў',
'right-override-export-depth' => 'экспартаваньне старонак, уключаючы зьвязаныя старонкі з глыбінёй да 5',
+'right-versiondetail' => 'Паказваць пашыраную інфармацыю пра вэрсію праграмнага забесьпячэньня',
+'right-sendemail' => 'адпраўка электронных лістоў іншым удзельнікам',
# User rights log
'rightslog' => 'Журнал правоў удзельнікаў',
@@ -1427,6 +1481,15 @@ $2',
'recentchanges-legend' => 'Устаноўкі апошніх зьменаў',
'recentchangestext' => 'Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} на гэтай старонцы.',
'recentchanges-feed-description' => 'Сачыць за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} праз гэтую стужку.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 — новая старонка',
+'recentchanges-label-newpage' => 'Гэтым рэдагаваньнем была створаная новая старонка',
+'recentchanges-legend-minor' => '$1 — дробнае рэдагаваньне',
+'recentchanges-label-minor' => 'Гэтае рэдагаваньне — дробнае',
+'recentchanges-legend-bot' => '$1 — рэдагаваньне робата',
+'recentchanges-label-bot' => 'Гэтае рэдагаваньне зробленае робатам',
+'recentchanges-legend-unpatrolled' => '$1 — не патруляванае рэдагаваньне',
+'recentchanges-label-unpatrolled' => 'Гэтае рэдагаваньне яшчэ не было адпатруляваным',
'rcnote' => "Ніжэй {{PLURAL:$1|пададзена '''$1''' апошняя зьмена|пададзеныя '''$1''' апошнія зьмены|пададзеныя '''$1''' апошніх зьменаў}} за {{PLURAL:$2|апошні '''$2''' дзень|апошнія '''$2''' дні|апошнія '''$2''' дзён}}, па стане на $5, $4.",
'rcnotefrom' => "Ніжэй знаходзяцца зьмены з '''$2''' (да '''$1''' на старонку).",
'rclistfrom' => 'Паказаць зьмены з $1',
@@ -1453,6 +1516,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Зьвязаныя праўкі',
+'recentchangeslinked-feed' => 'Зьвязаныя праўкі',
+'recentchangeslinked-toolbox' => 'Зьвязаныя праўкі',
'recentchangeslinked-title' => 'Зьвязаныя праўкі для «$1»',
'recentchangeslinked-noresult' => 'Не было ніякіх зьменаў на зьвязаных старонках за вызначаны пэрыяд.',
'recentchangeslinked-summary' => "Гэта сьпіс апошніх зьменаў старонак, на якія спасылаецца азначаная старонка (ці ўсіх старонак, якія належаць азначанай катэгорыі).
@@ -1463,8 +1528,8 @@ $2',
# Upload
'upload' => 'Загрузіць файл',
'uploadbtn' => 'Загрузіць файл',
-'reupload' => 'Загрузіць зноў',
'reuploaddesc' => 'Скасаваць загрузку і вярнуцца да формы загрузкі',
+'upload-tryagain' => 'Даслаць зьмененае апісаньне файла',
'uploadnologin' => 'Вы не ўвайшлі ў сыстэму',
'uploadnologintext' => 'Вам трэба [[Special:UserLogin|ўвайсьці ў сыстэму]] для загрузкі файлаў.',
'upload_directory_missing' => 'Загрузачная дырэкторыя ($1) адсутнічае і ня можа быць створаная сэрвэрам.',
@@ -1495,6 +1560,7 @@ $2',
'minlength1' => 'Назва файла павінна ўтрымліваць хаця б адзін сымбаль.',
'illegalfilename' => 'Назва файла «$1» зьмяшчае сымбалі, якія нельга выкарыстоўваць у назвах старонак. Калі ласка, зьмяніце назву файла і паспрабуйце загрузіць яго зноў.',
'badfilename' => 'Назва файла была зьмененая на «$1».',
+'filetype-mime-mismatch' => 'Пашырэньне файла не адпавядае MIME-тыпу.',
'filetype-badmime' => 'Загрузка файлаў тыпу MIME «$1» забароненая.',
'filetype-bad-ie-mime' => 'Немагчыма загрузіць гэты файл, таму што Internet Explorer вызначыў яго як «$1», што азначае, што тып гэтага файла забаронены і патэнцыяльна небясьпечны.',
'filetype-unwanted-type' => "'''«.$1»''' — непажаданы тып файла.
@@ -1517,7 +1583,6 @@ $2',
* Назва загружанага файла: '''<tt>[[:$1]]</tt>'''
* Назва існуючага файла: '''<tt>[[:$2]]</tt>'''
Калі ласка, выбярыце іншую назву.",
-'fileexists-thumb' => "<center>'''Існуючы файл'''</center>",
'fileexists-thumbnail-yes' => "Верагодна файл зьяўляецца паменшанай копіяй ''(мініятурай)''. [[$1|thumb]]
Калі ласка, праверце файл '''<tt>[[:$1]]</tt>'''.
Калі правераны файл зьяўляецца той жа выявай, то загрузка мініятуры ня мае сэнсу.",
@@ -1532,6 +1597,7 @@ $2',
'file-deleted-duplicate' => 'Падобны файл ([[$1]]) ужо выдаляўся. Калі ласка, паглядзіце гісторыю выдаленьняў гэтага файла перад яго паўторнай загрузкай.',
'successfulupload' => 'Загрузка пасьпяхова скончылася',
'uploadwarning' => 'Папярэджаньне',
+'uploadwarning-text' => 'Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.',
'savefile' => 'Захаваць файл',
'uploadedimage' => 'загружаная «[[$1]]»',
'overwroteimage' => 'загружаная новая вэрсія «[[$1]]»',
@@ -1539,12 +1605,14 @@ $2',
'uploaddisabledtext' => 'Загрузка файлаў забароненая.',
'php-uploaddisabledtext' => 'Загрузка файлаў была забароненая ў PHP. Калі ласка, праверце ўстаноўку «file_uploads».',
'uploadscripted' => 'Гэты файл утрымлівае HTML-код альбо скрыпт, які можа памылкова апрацоўвацца браўзэрам.',
-'uploadcorrupt' => 'Файл пашкоджаны альбо мае неадпаведнае пашырэньне.
-Калі ласка, праверце файл і загрузіце яго зноў.',
'uploadvirus' => 'Файл утрымлівае вірус! Падрабязнасьці: $1',
+'upload-source' => 'Крынічны файл',
'sourcefilename' => 'Пачатковая назва файла:',
+'sourceurl' => 'URL-адрас крыніцы:',
'destfilename' => 'Канчатковая назва файла:',
'upload-maxfilesize' => 'Максымальны памер файла: $1',
+'upload-description' => 'Апісаньне файла',
+'upload-options' => 'Устаноўкі загрузкі',
'watchthisupload' => 'Назіраць за гэтым файлам',
'filewasdeleted' => 'Файл з такой назвай загружаўся, але быў выдалены.
Вам трэба праверыць $1 перад новай загрузкай.',
@@ -1554,15 +1622,46 @@ $2',
Журнал выдаленьняў для гэтага файла знаходзіцца ніжэй:",
'filename-bad-prefix' => "Назва файла, які Вы загружаеце, пачынаецца з '''«$1»'''. Падобныя бессэнсоўныя назвы звычайна ствараюцца аўтаматычна лічбавымі фотаапаратамі. Калі ласка, абярыце больш зразумелую назву для Вашага файла.",
-'upload-proto-error' => 'Няслушны пратакол',
-'upload-proto-error-text' => 'Аддаленая загрузка файлаў патрабуе URL-адрас, які пачынаецца з <code>http://</code> альбо <code>ftp://</code>.',
-'upload-file-error' => 'Унутраная памылка',
-'upload-file-error-text' => 'Адбылася ўнутраная памылка пад час спробы стварыць часовы файл на сэрвэры.
+'upload-proto-error' => 'Няслушны пратакол',
+'upload-proto-error-text' => 'Аддаленая загрузка файлаў патрабуе URL-адрас, які пачынаецца з <code>http://</code> альбо <code>ftp://</code>.',
+'upload-file-error' => 'Унутраная памылка',
+'upload-file-error-text' => 'Адбылася ўнутраная памылка пад час спробы стварыць часовы файл на сэрвэры.
Калі ласка, зьвярніцеся да [[Special:ListUsers/sysop|сыстэмнага адміністратара]].',
-'upload-misc-error' => 'Невядомая памылка загрузкі',
-'upload-misc-error-text' => 'Адбылася невядомая памылка пад час загрузкі.
+'upload-misc-error' => 'Невядомая памылка загрузкі',
+'upload-misc-error-text' => 'Адбылася невядомая памылка пад час загрузкі.
Калі ласка, ўпэўніцеся, што URL-адрас слушны, і паспрабуйце ізноў.
Калі памылка паўтарыцца, зьвярніцеся да [[Special:ListUsers/sysop|сыстэмнага адміністратара]].',
+'upload-too-many-redirects' => 'URL-адрас утрымлівае зашмат перанакіраваньняў',
+'upload-unknown-size' => 'Невядомы памер',
+'upload-http-error' => 'Узьнікла памылка HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Доступ забаронены',
+'img-auth-nopathinfo' => 'Адсутнічае PATH_INFO.
+Ваш сэрвэр не ўстаноўлены на пропуск гэтай інфармацыі.
+Яна можа быць заснавана на CGI і ня можа падтрымліваць img_auth.
+Глядзіце http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Неабходнага шляху няма ў дырэкторыі загрузкі, пазначанай у канфігурацыі.',
+'img-auth-badtitle' => 'Немагчыма стварыць слушную назву з «$1».',
+'img-auth-nologinnWL' => 'Вы не ўвайшлі ў сыстэму, а «$1» не знаходзіцца ў белым сьпісе.',
+'img-auth-nofile' => 'Файл «$1» не існуе.',
+'img-auth-isdir' => 'Вы спрабуеце атрымаць доступ да дырэкторыі «$1».
+Дазволены толькі доступ да файлаў.',
+'img-auth-streaming' => 'Перадача струменя «$1».',
+'img-auth-public' => 'Функцыя img_auth.php ужываецца для файла выхаду з прыватнай вікі.
+Гэта вікі ўсталявана як публічная вікі.
+Для найлепшай бясьпекі img_auth.php выключана.',
+'img-auth-noread' => 'Удзельнік ня мае доступу на чытаньне «$1».',
+
+# HTTP errors
+'http-invalid-url' => 'Няслушны URL-адрас: $1',
+'http-invalid-scheme' => 'URL-адрасы схемы «$1» не падтрымліваюцца',
+'http-request-error' => 'HTTP-запыт не атрымаўся ў выніку невядомай памылкі.',
+'http-read-error' => 'Памылка чытаньня HTTP.',
+'http-timed-out' => 'Скончыўся час чаканьня HTTP-запыту.',
+'http-curl-error' => 'Памылка выбаркі URL-адрасу: $1',
+'http-host-unreachable' => 'Немагчыма дасягнуць URL-адрас',
+'http-bad-status' => 'Адбылася памылка пад час выкананьня HTTP-запыту: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Немагчыма дасягнуць URL-адрас',
@@ -1574,6 +1673,7 @@ $2',
Вы можаце паспрабаваць пад час меншай загрузкі сайта.',
'license' => 'Ліцэнзія:',
+'license-header' => 'Ліцэнзія',
'nolicense' => 'Ня выбраная',
'license-nopreview' => '(Прагляд недаступны)',
'upload_source_url' => ' (слушны, агульнадаступны URL-адрас)',
@@ -1594,6 +1694,7 @@ $2',
'listfiles_count' => 'Вэрсіі',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Гісторыя файла',
'filehist-help' => 'Націсьніце на дату/час, каб паглядзець, як тады выглядаў файл.',
'filehist-deleteall' => 'выдаліць усе',
@@ -1608,6 +1709,7 @@ $2',
'filehist-dimensions' => 'Памеры',
'filehist-filesize' => 'Памер файла',
'filehist-comment' => 'Камэнтар',
+'filehist-missing' => 'Файл адсутнічае',
'imagelinks' => 'Спасылкі на файл',
'linkstoimage' => '{{PLURAL:$1|Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
'linkstoimage-more' => 'Больш чым $1 {{PLURAL:$1|старонка спасылаецца|старонкі спасылаюцца|старонак спасылаюцца}} на гэты файл.
@@ -1617,15 +1719,16 @@ $2',
'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|болей спасылак]] на гэты файл.',
'redirectstofile' => '{{PLURAL:$1|Наступны файл перанакіроўвае|Наступныя файлы перанакіроўваюць}} на гэты файл:',
'duplicatesoffile' => '{{PLURAL:$1|Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
-'sharedupload' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Глядзіце дадатковую інфармацыю на $1.',
-'shareduploadwiki-desc' => 'Апісаньне, пазначанае на $1, паказанае ніжэй.',
-'shareduploadwiki-linktext' => 'старонцы апісаньня файла',
-'noimage' => 'Няма файла з такой назвай, але Вы можаце $1.',
-'noimage-linktext' => 'загрузіць яго',
+'sharedupload' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.',
+'sharedupload-desc-there' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.
+Калі ласка, глядзіце падрабязнасьці на [$2 старонцы апісаньня файла].',
+'sharedupload-desc-here' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.
+Апісаньне са [$2 старонкі апісаньня файла] пададзенае ніжэй.',
+'filepage-nofile' => 'Файл з гэтай назвай не існуе.',
+'filepage-nofile-link' => 'Файл з гэтай назвай не існуе, але Вы можаце [$1 загрузіць яго].',
'uploadnewversion-linktext' => 'Загрузіць новую вэрсію гэтага файла',
-'shared-repo-from' => '$1', # $1 is the repository name
-'shared-repo' => 'агульнага сховішча', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1',
+'shared-repo' => 'агульнага сховішча',
# File reversion
'filerevert' => 'Вярнуць $1',
@@ -1654,6 +1757,7 @@ $2',
** парушэньне аўтарскіх правоў
** файл-дублікат',
'filedelete-edit-reasonlist' => 'Рэдагаваць прычыны выдаленьня',
+'filedelete-maintenance' => 'Выдаленьне і аднаўленьне файлаў часова забароненае па прычыне падтрымкі.',
# MIME search
'mimesearch' => 'Пошук па MIME',
@@ -1676,7 +1780,7 @@ $2',
# Random page
'randompage' => 'Выпадковая старонка',
-'randompage-nopages' => 'У прасторы назваў «$1» няма старонак.',
+'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|наступнай прасторы|наступных прасторах}} назваў: $1.',
# Random redirect
'randomredirect' => 'Выпадковае перанакіраваньне',
@@ -1688,6 +1792,7 @@ $2',
'statistics-header-edits' => 'Статыстыка рэдагаваньняў',
'statistics-header-views' => 'Статыстыка праглядаў',
'statistics-header-users' => 'Статыстыка ўдзелу',
+'statistics-header-hooks' => 'Іншая статыстыка',
'statistics-articles' => 'Колькасьць старонак са зьместам',
'statistics-pages' => 'Колькасьць старонак',
'statistics-pages-desc' => 'Усе старонкі ў вікі, улучна з абмеркаваньнямі, перанакіраваньнямі і г.д.',
@@ -1716,8 +1821,8 @@ $2',
'brokenredirects' => 'Некарэктныя перанакіраваньні',
'brokenredirectstext' => 'Наступныя перанакіраваньні спасылаюцца на неіснуючыя старонкі:',
-'brokenredirects-edit' => '(рэдагаваць)',
-'brokenredirects-delete' => '(выдаліць)',
+'brokenredirects-edit' => 'рэдагаваць',
+'brokenredirects-delete' => 'выдаліць',
'withoutinterwiki' => 'Старонкі без спасылак на іншыя моўныя вэрсіі',
'withoutinterwiki-summary' => 'Наступныя старонкі ня ўтрымліваюць спасылак на іншамоўныя вэрсіі:',
@@ -1824,7 +1929,7 @@ $2',
# Special:Categories
'categories' => 'Катэгорыі',
-'categoriespagetext' => 'Наступныя катэгорыі зьмяшчаюць старонкі і/альбо мэдыя-файлы.
+'categoriespagetext' => '{{PLURAL:$1|Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыя-файлы.
Тут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].
Глядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].',
'categoriesfrom' => 'Паказаць катэгорыі, пачынаючы з:',
@@ -1832,8 +1937,9 @@ $2',
'special-categories-sort-abc' => 'сартаваць паводле альфабэту',
# Special:DeletedContributions
-'deletedcontributions' => 'Выдалены ўнёсак удзельніка',
-'deletedcontributions-title' => 'Выдалены ўнёсак удзельніка',
+'deletedcontributions' => 'Выдалены ўнёсак удзельніка',
+'deletedcontributions-title' => 'Выдалены ўнёсак удзельніка',
+'sp-deletedcontributions-contribs' => 'унёсак',
# Special:LinkSearch
'linksearch' => 'Вонкавыя спасылкі',
@@ -1849,6 +1955,16 @@ $2',
'listusersfrom' => 'Паказаць удзельнікаў, пачынаючы з:',
'listusers-submit' => 'Паказаць',
'listusers-noresult' => 'Удзельнікі ня знойдзеныя.',
+'listusers-blocked' => '({{GENDER:$1|заблякаваны|заблякаваная}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Сьпіс актыўных удзельнікаў',
+'activeusers-intro' => 'Гэта сьпіс удзельнікаў, якія былі актыўнымі на працягу $1 {{PLURAL:$1|апошняга дня|апошніх дзён|апошніх дзён}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|рэдагаваньне|рэдагаваньня|рэдагаваньняў}} за $3 {{PLURAL:$3|апошні дзень|апошнія дні|апошніх дзён}}',
+'activeusers-from' => 'Паказваць ўдзельнікаў, пачынаючы з:',
+'activeusers-hidebots' => 'Схаваць робатаў',
+'activeusers-hidesysops' => 'Схаваць адміністратараў',
+'activeusers-noresult' => 'Удзельнікі ня знойдзеныя.',
# Special:Log/newusers
'newuserlogpage' => 'Журнал стварэньня рахункаў',
@@ -1859,17 +1975,23 @@ $2',
'newuserlog-autocreate-entry' => 'Рахунак створаны аўтаматычна',
# Special:ListGroupRights
-'listgrouprights' => 'Правы групаў удзельнікаў',
-'listgrouprights-summary' => 'Ніжэй пададзены сьпіс групаў удзельнікаў {{GRAMMAR:родны|{{SITENAME}}}}, разам зь іх правамі.
+'listgrouprights' => 'Правы групаў удзельнікаў',
+'listgrouprights-summary' => 'Ніжэй пададзены сьпіс групаў удзельнікаў {{GRAMMAR:родны|{{SITENAME}}}}, разам зь іх правамі.
Таксама можна паглядзець [[{{MediaWiki:Listgrouprights-helppage}}|дадатковую інфармацыю]] пра асабістыя правы.',
-'listgrouprights-group' => 'Група',
-'listgrouprights-rights' => 'Правы',
-'listgrouprights-helppage' => 'Help:Правы групаў удзельнікаў',
-'listgrouprights-members' => '(сьпіс удзельнікаў групы)',
-'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|групу|групы}}: $1',
-'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|групу|групы}}: $1',
-'listgrouprights-addgroup-all' => 'можа дадаваць усе групы',
-'listgrouprights-removegroup-all' => 'можа выдаляць усе групы',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Прызначаныя правы</span>
+* <span class="listgrouprights-revoked">Адабраныя правы</span>',
+'listgrouprights-group' => 'Група',
+'listgrouprights-rights' => 'Правы',
+'listgrouprights-helppage' => 'Help:Правы групаў удзельнікаў',
+'listgrouprights-members' => '(сьпіс удзельнікаў групы)',
+'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|групу|групы}}: $1',
+'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|групу|групы}}: $1',
+'listgrouprights-addgroup-all' => 'можа дадаваць усе групы',
+'listgrouprights-removegroup-all' => 'можа выдаляць усе групы',
+'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|групы|групаў}}: $1',
+'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|групы|групаў}}: $1',
+'listgrouprights-addgroup-self-all' => 'Можа дадаць уласны рахунак да ўсіх груп',
+'listgrouprights-removegroup-self-all' => 'Можа выдаліць уласны рахунак з ўсіх груп',
# E-mail user
'mailnologin' => 'Няма адрасу атрымальніка',
@@ -1941,10 +2063,10 @@ $2',
'enotif_lastvisited' => 'Глядзіце на $1 усе апошнія зьмены, якія адбыліся пасьля Вашага апошняга наведваньня.',
'enotif_lastdiff' => 'Глядзіце $1, каб пабачыць гэтую зьмену.',
'enotif_anon_editor' => 'ананімны ўдзельнік $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Шаноўны $WATCHINGUSERNAME,
-Старонка $PAGETITLE {{GRAMMAR:родны|{{SITENAME}}}} была $CHANGEDORCREATED $PAGEEDITDATE удзельнікам $PAGEEDITOR, цяперашнюю вэрсію глядзіце на $PAGETITLE_URL.
+Старонка $PAGETITLE {{GRAMMAR:родны|{{SITENAME}}}} была $CHANGEDORCREATED $PAGEEDITDATE $PAGEEDITOR, глядзіце цяперашнюю вэрсію на $PAGETITLE_URL.
$NEWPAGE
@@ -1955,13 +2077,13 @@ $NEWPAGE
вікі-старонка: $PAGEEDITOR_WIKI
Паведамленьні ня будуць дасылацца ў выпадку паўторных рэдагаваньняў, пакуль Вы не наведаеце гэтую старонку.
-Вы можаце пазначыць сьцяжкі дасылкі паведамленьняў ва ўсіх старонках назіраньня Вашага сьпісу назіраньня.
+Вы можаце пазначыць сьцяжкі дасылкі паведамленьняў для ўсіх старонках назіраньня Вашага сьпісу назіраньня.
Сыстэма паведамленьняў {{GRAMMAR:родны|{{SITENAME}}}}
--
Каб зьмяніць устаноўкі сьпісу назіраньня, наведайце:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+$UNWATCHURL
Зваротная сувязь і дапамога:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1975,10 +2097,11 @@ $NEWPAGE
'exblank' => 'старонка была пустая',
'delete-confirm' => 'Выдаліць «$1»',
'delete-legend' => 'Выдаліць',
-'historywarning' => 'Папярэджаньне: у старонкі, якую Вы зьбіраецеся выдаліць, ёсьць гісторыя:',
+'historywarning' => "'''Папярэджаньне''': старонка, якую Вы зьбіраецеся выдаліць, мае гісторыю з прыкладна $1 {{PLURAL:$1|вэрсіі|вэрсіяў|вэрсіяў}}:",
'confirmdeletetext' => 'Зараз Вы выдаліце старонку разам з усёй гісторыяй зьменаў.
Калі ласка, пацьвердзіце, што Вы зьбіраецеся гэта зрабіць і што Вы разумееце ўсе наступствы, а таксама робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
'actioncomplete' => 'Дзеяньне завершанае',
+'actionfailed' => 'Дзеяньне ня выкананае',
'deletedtext' => '«<nowiki>$1</nowiki>» была выдаленая.
Глядзіце журнал выдаленьняў у $2.',
'deletedarticle' => 'выдаліў «[[$1]]»',
@@ -2001,19 +2124,20 @@ $NEWPAGE
Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
# Rollback
-'rollback' => 'Адкаціць рэдагаваньні',
-'rollback_short' => 'Адкат',
-'rollbacklink' => 'адкат',
-'rollbackfailed' => 'Памылка адкату',
-'cantrollback' => 'Немагчыма адкаціць зьмену; апошні рэдактар — адзіны аўтар гэтай старонкі.',
-'alreadyrolled' => 'Немагчыма адкаціць апошнюю зьмену [[:$1]], якую {{GENDER:$2|зрабіў|зрабіла}} [[User:$2|$2]] ([[User talk:$2|гутаркі]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); нехта іншы ўжо зьмяніў старонку альбо адкаціў зьмены.
+'rollback' => 'Адкаціць рэдагаваньні',
+'rollback_short' => 'Адкат',
+'rollbacklink' => 'адкат',
+'rollbackfailed' => 'Памылка адкату',
+'cantrollback' => 'Немагчыма адкаціць зьмену; апошні рэдактар — адзіны аўтар гэтай старонкі.',
+'alreadyrolled' => 'Немагчыма адкаціць апошнюю зьмену [[:$1]], якую {{GENDER:$2|зрабіў|зрабіла}} [[User:$2|$2]] ([[User talk:$2|гутаркі]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); нехта іншы ўжо зьмяніў старонку альбо адкаціў зьмены.
Апошнія зьмены зробленыя [[User:$3|$3]] ([[User talk:$3|гутаркі]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Кароткае апісаньне зьменаў было: «''$1''».", # only shown if there is an edit comment
-'revertpage' => 'Рэдагаваньні [[Special:Contributions/$2|$2]] ([[User talk:$2|гутаркі]]) скасаваныя да папярэдняй вэрсіі [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Адмененыя рэдагаваньні $1;
+'editcomment' => "Кароткае апісаньне зьменаў было: «''$1''».",
+'revertpage' => 'Рэдагаваньні [[Special:Contributions/$2|$2]] ([[User talk:$2|гутаркі]]) скасаваныя да папярэдняй вэрсіі [[User:$1|$1]]',
+'revertpage-nouser' => 'Рэдагаваньні (імя ўдзельніка выдаленае) скасаваныя да папярэдняй вэрсіі [[User:$1|$1]]',
+'rollback-success' => 'Адмененыя рэдагаваньні $1;
вернутая папярэдняя вэрсія $2.',
-'sessionfailure' => 'Магчыма ўзьніклі праблемы ў Вашым цяперашнім сэансе працы;
+'sessionfailure' => 'Магчыма ўзьніклі праблемы ў Вашым цяперашнім сэансе працы;
гэта дзеяньне было скасавана для прадухіленьня перахопу сэансу.
Калі ласка, націсьніце «назад» і перазагрузіце старонку, зь якой Вы прыйшлі, і паспрабуйце ізноў.',
@@ -2032,7 +2156,7 @@ $NEWPAGE
'protectexpiry' => 'Тэрмін:',
'protect_expiry_invalid' => 'Няслушны час сканчэньня абароны.',
'protect_expiry_old' => 'Тэрмін абароны прайшоў.',
-'protect-unchain' => 'Дазволіць пераносы',
+'protect-unchain-permissions' => 'Дазволіць дадатковыя ўстаноўкі абароны',
'protect-text' => "Тут можна паглядзець і зьмяніць узровень абароны старонкі '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Вы ня можаце зьмяняць узровень абароны, пакуль Вы заблякаваны.
Цяперашнія ўстаноўкі для старонкі '''$1''':",
@@ -2062,7 +2186,7 @@ $NEWPAGE
** Непрадуктыўная вайна рэдагаваньняў
** Папулярная старонка',
'protect-edit-reasonlist' => 'Рэдагаваць прычыны абароны',
-'protect-expiry-options' => '1 гадзіна:1 hour,1 дзень:1 day,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 гадзіна:1 hour,1 дзень:1 day,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite',
'restriction-type' => 'Дазвол:',
'restriction-level' => 'Узровень абмежаваньня:',
'minimum-size' => 'Мінімальны памер',
@@ -2104,6 +2228,7 @@ $NEWPAGE
'undelete-nodiff' => 'Папярэдняя вэрсія ня знойдзеная.',
'undeletebtn' => 'Аднавіць',
'undeletelink' => 'паглядзець/аднавіць',
+'undeleteviewlink' => 'паказаць',
'undeletereset' => 'Скінуць',
'undeleteinvert' => 'Адваротны выбар',
'undeletecomment' => 'Прычына:',
@@ -2142,19 +2267,23 @@ $1',
'contributions-title' => 'Унёсак {{GENDER:$1|удзельніка|удзельніцы}} $1',
'mycontris' => 'Мой унёсак',
'contribsub2' => 'Для $1 ($2)',
-'nocontribs' => 'Ня знойдзена зьменаў, якія адпавядаюць гэтым крытэрыям.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ня знойдзена зьменаў, якія адпавядаюць гэтым крытэрыям.',
'uctop' => ' (апошняя)',
'month' => 'Ад месяца (і раней):',
'year' => 'Ад году (і раней):',
-'sp-contributions-newbies' => 'Паказаць унёсак толькі з новых рахункаў',
-'sp-contributions-newbies-sub' => 'Унёсак пачынаючых',
-'sp-contributions-newbies-title' => 'Унёсак удзельнікаў з новых рахункаў',
-'sp-contributions-blocklog' => 'журнал блякаваньняў',
-'sp-contributions-logs' => 'журналы падзеяў',
-'sp-contributions-search' => 'Пошук унёску',
-'sp-contributions-username' => 'IP-адрас альбо імя ўдзельніка/ўдзельніцы:',
-'sp-contributions-submit' => 'Шукаць',
+'sp-contributions-newbies' => 'Паказаць унёсак толькі з новых рахункаў',
+'sp-contributions-newbies-sub' => 'Унёсак пачынаючых',
+'sp-contributions-newbies-title' => 'Унёсак удзельнікаў з новых рахункаў',
+'sp-contributions-blocklog' => 'журнал блякаваньняў',
+'sp-contributions-deleted' => 'выдалены ўнёсак удзельніка',
+'sp-contributions-logs' => 'журналы падзеяў',
+'sp-contributions-talk' => 'гутаркі',
+'sp-contributions-userrights' => 'кіраваньне правамі ўдзельнікаў і ўдзельніц',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Гэты ўдзельнік у дадзены момант заблякаваны|Гэтая ўдзельніца ў дадзены момант заблякаваная}}. Апошні запіс з журнала блякаваньняў пададзены ніжэй для даведкі:',
+'sp-contributions-search' => 'Пошук унёску',
+'sp-contributions-username' => 'IP-адрас альбо імя ўдзельніка/ўдзельніцы:',
+'sp-contributions-submit' => 'Шукаць',
# What links here
'whatlinkshere' => 'Спасылкі на старонку',
@@ -2177,6 +2306,7 @@ $1',
# Block/unblock
'blockip' => 'Блякаваньне ўдзельніка ці ўдзельніцы',
+'blockip-title' => 'Блякаваньне ўдзельніка ці ўдзельніцы',
'blockip-legend' => 'Заблякаваць удзельніка',
'blockiptext' => 'Наступная форма дазваляе заблякаваць магчымасьць рэдагаваньня з пэўнага IP-адрасу альбо імя ўдзельніка. Гэта трэба рабіць толькі дзеля прадухіленьня вандалізму і згодна з [[{{MediaWiki:Policy-url}}|правіламі]]. Пазначце ніжэй дакладную прычыну (напрыклад, пералічыце асобныя старонкі, на якіх былі парушэньні).',
'ipaddress' => 'IP-адрас:',
@@ -2198,7 +2328,7 @@ $1',
'ipbenableautoblock' => 'Аўтаматычна блякаваць апошні IP-адрас гэтага ўдзельніка, і ўсіх наступных IP-адрасоў зь якіх ён будзе спрабаваць рэдагаваць',
'ipbsubmit' => 'Заблякаваць гэтага удзельніка',
'ipbother' => 'Іншы тэрмін:',
-'ipboptions' => '2 гадзіны:2 hours,1 дзень:1 day,3 дні:3 days,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 гадзіны:2 hours,1 дзень:1 day,3 дні:3 days,1 тыдзень:1 week,2 тыдні:2 weeks,1 месяц:1 month,3 месяцы:3 months,6 месяцаў:6 months,1 год:1 year,назаўсёды:infinite',
'ipbotheroption' => 'іншы',
'ipbotherreason' => 'Іншая/дадатковая прычына:',
'ipbhidename' => 'Схаваць імя ўдзельніка ў рэдагаваньнях і сьпісах',
@@ -2227,9 +2357,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 часовыя блякаваньні',
'ipblocklist-sh-addressblocks' => '$1 блякаваньні асобных IP-адрасоў',
'ipblocklist-submit' => 'Шукаць',
+'ipblocklist-localblock' => 'Лякальнае блякаваньне',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
'blocklistline' => '$1, $2 заблякаваў $3 ($4)',
'infiniteblock' => 'назаўсёды',
-'expiringblock' => 'канчаецца $1',
+'expiringblock' => 'канчаецца $1 $2',
'anononlyblock' => 'толькі ананімаў',
'noautoblockblock' => 'аўтаматычнае блякаваньне адключанае',
'createaccountblock' => 'стварэньне рахунку заблякаванае',
@@ -2243,7 +2375,8 @@ $1',
'contribslink' => 'унёсак',
'autoblocker' => "Вы аўтаматычна заблякаваныя, таму што Ваш IP-адрас нядаўна ўжываўся «[[User:$1|$1]]». Прычына блякаваньня $1 наступная: «'''$2'''»",
'blocklogpage' => 'Журнал блякаваньняў',
-'blocklog-fulllog' => 'Поўны журнал блякаваньняў',
+'blocklog-showlog' => 'Гэты ўдзельнік ужо заблякаваны. Журнал блякаваньняў пададзены ніжэй:',
+'blocklog-showsuppresslog' => 'Гэты ўдзельнік ужо заблякаваны і схаваны. Журнал хаваньняў пададзены ніжэй:',
'blocklogentry' => 'заблякаваны [[$1]] на тэрмін: $2 $3',
'reblock-logentry' => 'зьмененыя парамэтры блякаваньня для [[$1]] на тэрмін: з $2 да $3',
'blocklogtext' => 'Гэта журнал уліку блякаваньняў і разблякаваньняў удзельнікаў. Аўтаматычна заблякаваныя IP-адрасы не пазначаныя. Глядзіце [[Special:IPBlockList|сьпіс заблякаваных IP-адрасоў]], каб пабачыць дзейныя ў гэты момант блякаваньні.',
@@ -2262,10 +2395,12 @@ $1',
'ipb_already_blocked' => '«$1» ужо заблякаваны',
'ipb-needreblock' => '== Ужо заблякаваны ==
$1 ужо заблякаваны. Вы жадаеце зьмяніць парамэтры?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
'ipb_cant_unblock' => 'Памылка: ID блякаваньня $1 ня знойдзена. Верагодна яно было ўжо зьнятае.',
'ipb_blocked_as_range' => 'Памылка: IP-адрас $1 быў заблякаваны наўпрост і ня можа быць разблякаваны.
Тым ня менш, ён належыць да дыяпазону $2, які можа быць разблякаваны.',
'ip_range_invalid' => 'Некарэктны дыяпазон IP-адрасоў.',
+'ip_range_toolarge' => 'Блякаваньні дыяпазонаў, большых за /$1, не дазволеныя.',
'blockme' => 'Заблякуйце мяне',
'proxyblocker' => 'Блякаваньне проксі',
'proxyblocker-disabled' => 'Гэта функцыя выключаная.',
@@ -2276,6 +2411,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'sorbs_create_account_reason' => 'Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.
Вы ня зможаце стварыць рахунак',
'cant-block-while-blocked' => 'Вы ня можаце блякаваць іншых удзельнікаў, пакуль Вы самі заблякаваныя.',
+'cant-see-hidden-user' => 'Удзельнік, якога Вы спрабуеце заблякаваць, ужо заблякаваны і схаваны. З-за таго, што Вы ня маеце правоў хаваньня ўдзельнікаў, Вы ня можаце бачыць альбо зьмяняць блякаваньне удзельніка.',
# Developer tools
'lockdb' => 'Заблякаваць базу зьвестак',
@@ -2318,6 +2454,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
У такіх выпадках, Вы можаце перанесьці ці аб'яднаць старонку абмеркаваньня самастойна.",
'movearticle' => 'Перанесьці старонку:',
+'moveuserpage-warning' => "'''Папярэджаньне:''' Вы зьбіраецеся перанесьці старонку ўдзельніка. Калі ласка заўважце, што старонка будзе перанесеная, але імя ўдзельніка ''ня'' будзе зьмененае.",
'movenologin' => 'Вы не ўвайшлі ў сыстэму',
'movenologintext' => 'Вам неабходна [[Special:UserLogin|ўвайсьці ў сыстэму]], каб перанесьці старонкі.',
'movenotallowed' => 'Вы ня маеце дазволу на перанос старонак.',
@@ -2328,7 +2465,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'move-watch' => 'Назіраць за гэтай старонкай',
'movepagebtn' => 'Перанесьці старонку',
'pagemovedsub' => 'Пасьпяховы перанос',
-'movepage-moved' => "'''Старонка «$1» была перанесеная ў «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Старонка «$1» была перанесеная ў «$2»'''",
'movepage-moved-redirect' => 'Перанакіраваньне было створана.',
'movepage-moved-noredirect' => 'Перанакіраваньне не было створанае.',
'articleexists' => 'Старонка з такой назвай ужо існуе, альбо абраная Вамі назва недапушчальная. Калі ласка, абярыце іншую назву.',
@@ -2370,6 +2507,15 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'imageinvalidfilename' => 'Няслушная назва мэтавага файла',
'fix-double-redirects' => 'Абнавіць усе перанакіраваньні на першапачатковую назву',
'move-leave-redirect' => 'Пакінуць перанакіраваньне',
+'protectedpagemovewarning' => "'''Папярэджаньне:''' Гэтая старонка была абароненая і яе могуць пераносіць толькі ўдзельнікі з правамі адміністратара.
+Апошні запіс з журнала пададзены ніжэй для даведкі:",
+'semiprotectedpagemovewarning' => "'''Заўвага:''' Гэта старонка была абароненая і яе могуць пераносіць толькі зарэгістраваныя ўдзельнікі.
+Апошні запіс з журнала пададзены ніжэй для даведкі:",
+'move-over-sharedrepo' => '== Файл існуе ==
+
+[[:$1]] існуе ў агульным сховішчы. Перайменаваньне файла ў гэтую назву закрые агульны файл.',
+'file-exists-sharedrepo' => 'Выбраная назва файла ўжо выкарыстоўваецца ў агульным сховішчы.
+Калі ласка, выберыце іншую назву.',
# Export
'export' => 'Экспартаваць старонкі',
@@ -2392,15 +2538,21 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'export-pagelinks' => 'Уключыць зьвязаныя старонкі да глыбіні:',
# Namespace 8 related
-'allmessages' => 'Сыстэмныя паведамленьні',
-'allmessagesname' => 'Назва',
-'allmessagesdefault' => 'Тэкст па змоўчаньні',
-'allmessagescurrent' => 'Цяперашні тэкст',
-'allmessagestext' => 'Сьпіс усіх сыстэмных паведамленьняў, якія існуюць у прасторы назваў MediaWiki.
+'allmessages' => 'Сыстэмныя паведамленьні',
+'allmessagesname' => 'Назва',
+'allmessagesdefault' => 'Тэкст па змоўчаньні',
+'allmessagescurrent' => 'Цяперашні тэкст',
+'allmessagestext' => 'Сьпіс усіх сыстэмных паведамленьняў, якія існуюць у прасторы назваў MediaWiki.
Калі ласка, наведайце [http://www.mediawiki.org/wiki/Localisation старонку пра лякалізацыю MediaWiki] і [http://translatewiki.net translatewiki.net], калі Вы жадаеце ўдзельнічаць у перакладзе MediaWiki.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' не падтрымліваецца, таму што адключанае '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Фільтар рэгулярных выразаў:',
-'allmessagesmodified' => 'Паказаць толькі зьмененыя',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' не падтрымліваецца, таму што адключанае '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Фільтар',
+'allmessages-filter' => 'Фільтар па стане зьменаў:',
+'allmessages-filter-unmodified' => 'Ня зьмененыя',
+'allmessages-filter-all' => 'Усе',
+'allmessages-filter-modified' => 'Зьмененыя',
+'allmessages-prefix' => 'Фільтар па прэфіксе:',
+'allmessages-language' => 'Мова:',
+'allmessages-filter-submit' => 'Паказаць',
# Thumbnails
'thumbnail-more' => 'Павялічыць',
@@ -2410,6 +2562,9 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'djvu_no_xml' => 'Немагчыма атрымаць XML для DjVu-файла',
'thumbnail_invalid_params' => 'Няслушныя парамэтры мініятуры',
'thumbnail_dest_directory' => 'Немагчыма стварыць мэтавую дырэкторыю',
+'thumbnail_image-type' => 'Тып выявы не падтрымліваецца',
+'thumbnail_gd-library' => 'Няпоўная канфігурацыя бібліятэкі GD: няма функцыі $1',
+'thumbnail_image-missing' => 'Верагодна няма файла $1',
# Special:Import
'import' => 'Імпартаваць старонкі',
@@ -2477,6 +2632,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'tooltip-ca-viewsource' => 'Гэтая старонка абароненая. Але можна паглядзець яе крынічны тэкст.',
'tooltip-ca-history' => 'Мінулыя вэрсіі гэтай старонкі.',
'tooltip-ca-protect' => 'Абараніць гэтую старонку',
+'tooltip-ca-unprotect' => 'Зьняць абарону з гэтай старонкі',
'tooltip-ca-delete' => 'Выдаліць гэтую старонку',
'tooltip-ca-undelete' => 'Аднавіць рэдагаваньні, зробленыя да выдаленьня гэтай старонкі',
'tooltip-ca-move' => 'Перанесьці гэтую старонку',
@@ -2487,6 +2643,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'tooltip-search-fulltext' => 'Шукаць гэты тэкст на старонках',
'tooltip-p-logo' => 'Наведаць галоўную старонку',
'tooltip-n-mainpage' => 'Наведаць галоўную старонку',
+'tooltip-n-mainpage-description' => 'Наведаць галоўную старонку',
'tooltip-n-portal' => 'Пра праект, што Вы можаце зрабіць, дзе што знайсьці',
'tooltip-n-currentevents' => 'Атрымаць інфармацыю пра актуальныя падзеі',
'tooltip-n-recentchanges' => 'Сьпіс апошніх зьменаў у {{GRAMMAR:месны|{{SITENAME}}}}.',
@@ -2532,10 +2689,12 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
# Attribution
'anonymous' => '{{PLURAL:$1|Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
'siteuser' => 'Удзельнік/удзельніца {{GRAMMAR:родны|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Гэтую старонку апошні раз рэдагаваў $3 $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'Ананімны ўдзельнік {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Гэтую старонку апошні раз рэдагаваў $3 $2, $1.',
'othercontribs' => 'На аснове працы $1.',
'others' => 'іншыя',
'siteusers' => '{{PLURAL:$2|Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
'creditspage' => 'Падзякі',
'nocredits' => 'Няма інфармацыі пра аўтараў гэтай старонкі.',
@@ -2565,6 +2724,7 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'skinname-chick' => 'Цыпа',
'skinname-simple' => 'Простае',
'skinname-modern' => 'Сучаснае',
+'skinname-vector' => 'Вэктар',
# Math options
'mw_math_png' => 'Заўсёды паказваць як PNG',
@@ -2574,11 +2734,24 @@ $1 ужо заблякаваны. Вы жадаеце зьмяніць пара
'mw_math_modern' => 'Рэкамэндуецца для сучасных браўзэраў',
'mw_math_mathml' => 'MathML, калі магчыма (экспэрымэнтальна)',
+# Math errors
+'math_failure' => 'Не атрымалася разабраць',
+'math_unknown_error' => 'невядомая памылка',
+'math_unknown_function' => 'невядомая функцыя',
+'math_lexing_error' => 'лексычная памылка',
+'math_syntax_error' => 'сынтаксычная памылка',
+'math_image_error' => 'Не атрымалася пераўтварыць у PNG;
+спраўдзіце дакладнасьць усталяваньня пакетаў latex, dvips, gs, і convert',
+'math_bad_tmpdir' => 'Немагчыма запісаць ці стварыць часовую дырэкторыю для матэматыкі',
+'math_bad_output' => 'Немагчыма запісаць ці стварыць выходную матэматычную дырэкторыю',
+'math_notexvc' => 'Выканаўчы модуль texvc ня знойдзены.
+Калі ласка, прачытайце math/README пра яго канфігурацыю.',
+
# Patrolling
'markaspatrolleddiff' => 'Пазначыць як «патруляваную»',
'markaspatrolledtext' => 'Пазначыць гэтую старонку як «патруляваную»',
'markedaspatrolled' => 'Пазначаная як «патруляваная»',
-'markedaspatrolledtext' => 'Абраная вэрсія пазначаная як «патруляваная»',
+'markedaspatrolledtext' => 'Выбраная вэрсія [[:$1]] пазначаная як «патруляваная».',
'rcpatroldisabled' => 'Патруляваньне апошніх зьменаў адключанае',
'rcpatroldisabledtext' => 'Магчымасьць патруляваньня апошніх зьменаў цяпер адключаная.',
'markedaspatrollederror' => 'Немагчыма пазначыць як «патруляваную»',
@@ -2608,12 +2781,9 @@ $1',
'previousdiff' => '← Папярэдняя зьмена',
'nextdiff' => 'Наступная зьмена →',
-# Visual comparison
-'visual-comparison' => 'Візуальнае параўнаньне',
-
# Media information
'mediawarning' => "'''Папярэджаньне''': гэты тып файл можа ўтрымліваць зламысны код. Яго выкананьне можа нашкодзіць вашай сыстэме.",
-'imagemaxsize' => 'Абмяжоўваць памер выяваў на старонках апісаньня да:',
+'imagemaxsize' => "Абмежаваньне памеру выяваў: <br />''(для старонак апісаньня файлаў)''",
'thumbsize' => 'Памер паменшанай вэрсіі выявы:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|старонка|старонкі|старонак}}',
'file-info' => '(памер файла: $1, тып MIME: $2)',
@@ -2622,6 +2792,8 @@ $1',
'svg-long-desc' => '(SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэль|піксэлі|піксэляў}}, памер файла: $3).',
'show-big-image' => 'Найлепшае разрозьненьне',
'show-big-image-thumb' => '<small>Памер пры папярэднім праглядзе: $1 × $2 {{PLURAL:$2|піксэль|піксэлі|піксэляў}}</small>',
+'file-info-gif-looped' => 'паўтараючыся',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
# Special:NewFiles
'newimages' => 'Галерэя новых файлаў',
@@ -2658,7 +2830,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Шырыня',
@@ -2786,14 +2958,14 @@ $1',
'exif-unknowndate' => 'Невядомая дата',
-'exif-orientation-1' => 'Звычайная', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Адлюстраваная па гарызанталі', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Павернутая на 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Адлюстраваная па вэртыкалі', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Павернутая на 90° супраць руху гадзіньнікавай стрэлкі і адлюстраваная вэртыкальна', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Павернутая на 90° па руху гадзіньнікавай стрэлкі', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Павернутая на 90° па руху гадзіньнікавай стрэлкі і адлюстраваная вэртыкальна', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Павернутая на 90° супраць руху гадзіньнікавай стрэлкі', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Звычайная',
+'exif-orientation-2' => 'Адлюстраваная па гарызанталі',
+'exif-orientation-3' => 'Павернутая на 180°',
+'exif-orientation-4' => 'Адлюстраваная па вэртыкалі',
+'exif-orientation-5' => 'Павернутая на 90° супраць руху гадзіньнікавай стрэлкі і адлюстраваная вэртыкальна',
+'exif-orientation-6' => 'Павернутая на 90° па руху гадзіньнікавай стрэлкі',
+'exif-orientation-7' => 'Павернутая на 90° па руху гадзіньнікавай стрэлкі і адлюстраваная вэртыкальна',
+'exif-orientation-8' => 'Павернутая на 90° супраць руху гадзіньнікавай стрэлкі',
'exif-planarconfiguration-1' => 'фармат «chunky»',
'exif-planarconfiguration-2' => 'фармат «planar»',
@@ -2915,7 +3087,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Вымярэньне двухмерных каардынатаў',
'exif-gpsmeasuremode-3' => 'Вымярэньне трохмерных каардынатаў',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Кілямэтраў за гадзіну',
'exif-gpsspeed-m' => 'міляў за гадзіну',
'exif-gpsspeed-n' => 'вузлоў',
@@ -2934,6 +3106,7 @@ $1',
'watchlistall2' => 'усё',
'namespacesall' => 'усе',
'monthsall' => 'усе',
+'limitall' => 'усе',
# E-mail address confirmation
'confirmemail' => 'Пацьвердзіць адрас электроннай пошты',
@@ -2952,13 +3125,13 @@ $1',
'confirmemail_loggedin' => 'Ваш адрас электроннай пошты быў пацьверджаны.',
'confirmemail_error' => 'Нешта пайшло ня так у часе захаваньня вашага пацьверджаньня.',
'confirmemail_subject' => '{{SITENAME}}: Пацьверджаньне адрасу электроннай пошты',
-'confirmemail_body' => 'Нехта, магчыма Вы, з IP-адрасу $1, стварыў рахунак «$2» з гэтым паштовым адрасам у праекце {{SITENAME}}.
+'confirmemail_body' => 'Нехта, магчыма Вы, з IP-адрасу $1, стварыў рахунак «$2» з гэтым адрасам электроннай пошты ў праекце {{SITENAME}}.
-Каб пацьвердзіць, што гэты рахунак належыць Вам актывізаваць магчымасьці электроннай пошты ў {{GRAMMAR:месны|{{SITENAME}}}}, адкрыйце гэтую спасылку у Вашым браўзэры:
+Каб пацьвердзіць, што гэты рахунак належыць Вам і актывізаваць магчымасьці электроннай пошты ў {{GRAMMAR:месны|{{SITENAME}}}}, адкрыйце гэтую спасылку у Вашым браўзэры:
$3
-Калі гэта ня Вы, адкрыйце наступную спасылку для таго, каб не пацьвердзіць адрас электроннай пошты.
+Калі рахунак стварылі *ня* Вы, адкрыйце наступную спасылку для таго, каб не пацьвердзіць адрас электроннай пошты.
$5
@@ -3064,7 +3237,7 @@ $1',
'duplicate-defaultsort' => 'Папярэджаньне: Ключ сартыроўкі па змоўчваньні «$2» замяняе папярэдні ключ сартыроўкі па змоўчваньні «$1».',
# Special:Version
-'version' => 'Вэрсія', # Not used as normal message but as header for the special page itself
+'version' => 'Вэрсія',
'version-extensions' => 'Усталяваныя пашырэньні',
'version-specialpages' => 'Спэцыяльныя старонкі',
'version-parserhooks' => 'Працэдуры-перахопнікі парсэра',
@@ -3078,7 +3251,7 @@ $1',
'version-skin-extension-functions' => 'Функцыі пашырэньня афармленьняў',
'version-hook-name' => 'Назва працэдуры-перахопніка',
'version-hook-subscribedby' => 'Падпісаны на',
-'version-version' => 'Вэрсія',
+'version-version' => '(Вэрсія $1)',
'version-license' => 'Ліцэнзія',
'version-software' => 'Усталяванае праграмнае забесьпячэньне',
'version-software-product' => 'Прадукт',
@@ -3159,4 +3332,15 @@ $1',
'dberr-outofdate' => 'Увага, індэксы нашага зьместу могуць быць састарэлымі.',
'dberr-cachederror' => 'Наступная старонка была загружана з кэшу і можа быць састарэлай.',
+# HTML forms
+'htmlform-invalid-input' => 'Узьніклі праблемы з некаторымі з Вашых уваходных зьвестак',
+'htmlform-select-badoption' => 'Значэньне, якое Вы выбралі, не зьяўляецца слушным.',
+'htmlform-int-invalid' => 'Значэньне, якое Вы выбралі, не зьяўляецца цэлым лікам.',
+'htmlform-float-invalid' => 'Значэньне, якое Вы выбралі, не зьяўляецца лікам.',
+'htmlform-int-toolow' => 'Значэньне, якое вы выбралі, менш за $1',
+'htmlform-int-toohigh' => 'Значэньне, якое Вы выбралі, больш за $1',
+'htmlform-submit' => 'Захаваць',
+'htmlform-reset' => 'Адмяніць зьмены',
+'htmlform-selectorother-other' => 'Іншае',
+
);
diff --git a/languages/messages/MessagesBe_x_old.php b/languages/messages/MessagesBe_x_old.php
index 83bdf93a..26895def 100644
--- a/languages/messages/MessagesBe_x_old.php
+++ b/languages/messages/MessagesBe_x_old.php
@@ -1,6 +1,9 @@
<?php
/** Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment dummy language file. Falls back to 'be-tarask'. Backward compat.
diff --git a/languages/messages/MessagesBg.php b/languages/messages/MessagesBg.php
index ef62033d..544641b5 100644
--- a/languages/messages/MessagesBg.php
+++ b/languages/messages/MessagesBg.php
@@ -61,7 +61,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__СЪССЪДЪРЖАНИЕ__', '__FORCETOC__' ),
'toc' => array( '0', '__СЪДЪРЖАНИЕ__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_РЕДАКТИРАНЕ_НА_РАЗДЕЛИ__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'ТЕКУЩМЕСЕЦ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ТЕКУЩМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ТЕКУЩМЕСЕЦИМЕ', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'ТЕКУЩМЕСЕЦИМЕРОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'ТЕКУЩМЕСЕЦСЪКР', 'CURRENTMONTHABBREV' ),
@@ -174,7 +174,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'Защитени страници' ),
'Protectedtitles' => array( 'Защитени заглавия' ),
'Allpages' => array( 'Всички страници' ),
- 'Prefixindex' => array( 'Всички страници (с представка)' ),
+ 'Prefixindex' => array( 'Всички страници с представка', 'Представка' ),
'Ipblocklist' => array( 'Блокирани потребители' ),
'Specialpages' => array( 'Специални страници' ),
'Contributions' => array( 'Приноси' ),
@@ -210,7 +210,7 @@ $specialPageAliases = array(
'Listbots' => array( 'Ботове' ),
'Popularpages' => array( 'Най-посещавани страници' ),
'Search' => array( 'Търсене' ),
- 'Resetpass' => array( 'Изтриване на парола' ),
+ 'Resetpass' => array( 'Промяна на парола' ),
'Withoutinterwiki' => array( 'Без междууикита' ),
'MergeHistory' => array( 'История на сливането' ),
'Filepath' => array( 'Път към файл' ),
@@ -218,6 +218,8 @@ $specialPageAliases = array(
'Blankpage' => array( 'Празна страница' ),
'LinkSearch' => array( 'Търсене на външни препратки' ),
'DeletedContributions' => array( 'Изтрити приноси' ),
+ 'Tags' => array( 'Етикети' ),
+ 'Activeusers' => array( 'Активни потребители' ),
);
$linkTrail = '/^([a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu';
@@ -255,6 +257,7 @@ $messages = array(
'tog-enotifminoredits' => 'Уведомяване по е-пощата даже при малки промени',
'tog-enotifrevealaddr' => 'Показване на електронния ми адрес в известяващите писма',
'tog-shownumberswatching' => 'Показване на броя на потребителите, наблюдаващи дадена страница',
+'tog-oldsig' => 'Преглед на съществуващия подпис:',
'tog-fancysig' => 'Без превръщане на подписа в препратка към потребителската страница',
'tog-externaleditor' => 'Използване на външен редактор по подразбиране',
'tog-externaldiff' => 'Използване на външна програма за разлики по подразбиране',
@@ -277,6 +280,13 @@ $messages = array(
'underline-never' => 'Никога',
'underline-default' => 'Според настройките на браузъра',
+# Font style option in Special:Preferences
+'editfont-style' => 'Стил на шрифта в кутията за редактиране',
+'editfont-default' => 'По подразбиране за браузъра',
+'editfont-monospace' => 'Равноширок шрифт',
+'editfont-sansserif' => 'Безсерифен шрифт',
+'editfont-serif' => 'Серифен шрифт',
+
# Dates
'sunday' => 'неделя',
'monday' => 'понеделник',
@@ -336,7 +346,7 @@ $messages = array(
'category-media-header' => 'Файлове в категория „$1“',
'category-empty' => "''В момента тази категория не съдържа страници или файлове.''",
'hidden-categories' => '{{PLURAL:$1|Скрита категория|Скрити категории}}',
-'hidden-category-category' => 'Скрити категории', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Скрити категории',
'category-subcat-count' => '{{PLURAL:$2|Тази категория съдържа само една подкатегория.|{{PLURAL:$1|Показана е една|Показани са $1}} от общо $2 подкатегории на тази категория.}}',
'category-subcat-count-limited' => 'Тази категория включва {{PLURAL:$1|следната една подкатегория|следните $1 подкатегории}}.',
'category-article-count' => '{{PLURAL:$2|Тази категория съдържа само една страница.|{{PLURAL:$1|Показана е една|Показани са $1}} от общо $2 страници в тази категория.}}',
@@ -344,6 +354,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Тази категория съдържа само един файл.|{{PLURAL:$1|Показан е един|Показани са $1}} от общо $2 файла в тази категория.}}',
'category-file-count-limited' => 'В текущата категория се {{PLURAL:$1|намира следният файл|намират следните $1 файла}}.',
'listingcontinuesabbrev' => ' продълж.',
+'index-category' => 'Индексирани страници',
+'noindex-category' => 'Неиндексирани страници',
'mainpagetext' => "'''Уикито беше успешно инсталирано.'''",
'mainpagedocfooter' => 'Разгледайте [http://meta.wikimedia.org/wiki/Help:Contents ръководството] за подробна информация относно използването на софтуера.
@@ -354,10 +366,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ ЧЗВ за МедияУики]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Пощенски списък относно нови версии на МедияУики]',
-'about' => 'За {{SITENAME}}',
-'article' => 'Страница',
-'newwindow' => '(отваря се в нов прозорец)',
-'cancel' => 'Отказ',
+'about' => 'За {{SITENAME}}',
+'article' => 'Страница',
+'newwindow' => '(отваря се в нов прозорец)',
+'cancel' => 'Отказ',
+'moredotdotdot' => 'Още…',
+'mypage' => 'Моята страница',
+'mytalk' => 'Моята беседа',
+'anontalk' => 'Беседа за адреса',
+'navigation' => 'Навигация',
+'and' => '&#32;и',
+
+# Cologne Blue skin
'qbfind' => 'Търсене',
'qbbrowse' => 'Избор',
'qbedit' => 'Редактиране',
@@ -365,15 +385,35 @@ $messages = array(
'qbpageinfo' => 'Информация за страницата',
'qbmyoptions' => 'Моите страници',
'qbspecialpages' => 'Специални страници',
-'moredotdotdot' => 'Още…',
-'mypage' => 'Моята страница',
-'mytalk' => 'Моята беседа',
-'anontalk' => 'Беседа за адреса',
-'navigation' => 'Навигация',
-'and' => '&#32;и',
-
-# Metadata in edit box
-'metadata_help' => 'Метаданни:',
+'faq' => 'ЧЗВ',
+'faqpage' => 'Project:ЧЗВ',
+
+# Vector skin
+'vector-action-addsection' => 'Добавяне на тема',
+'vector-action-delete' => 'Изтриване',
+'vector-action-move' => 'Преместване',
+'vector-action-protect' => 'Защита',
+'vector-action-undelete' => 'Възстановяване',
+'vector-action-unprotect' => 'Сваляне на защитата',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Помощ',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Страница',
+'vector-namespace-media' => 'Медия',
+'vector-namespace-mediawiki' => 'Съобщение',
+'vector-namespace-project' => 'Проект',
+'vector-namespace-special' => 'Специална страница',
+'vector-namespace-talk' => 'Беседа',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Потребител',
+'vector-view-create' => 'Създаване',
+'vector-view-edit' => 'Редактиране',
+'vector-view-history' => 'История',
+'vector-view-view' => 'Преглед',
+'vector-view-viewsource' => 'Преглед на кода',
+'actions' => 'Действия',
+'namespaces' => 'Именни пространства',
+'variants' => 'Варианти',
'errorpagetitle' => 'Грешка',
'returnto' => 'Обратно към $1.',
@@ -423,18 +463,22 @@ $messages = array(
'otherlanguages' => 'На други езици',
'redirectedfrom' => '(пренасочване от $1)',
'redirectpagesub' => 'Пренасочваща страница',
-'lastmodifiedat' => 'Последна промяна на страницата: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Последна промяна на страницата: $2, $1.',
'viewcount' => 'Страницата е била преглеждана {{PLURAL:$1|един път|$1 пъти}}.',
'protectedpage' => 'Защитена страница',
'jumpto' => 'Направо към:',
'jumptonavigation' => 'навигация',
'jumptosearch' => 'търсене',
+'view-pool-error' => 'Съжаляваме, но сървърите в момента са претоварени.
+Твърде много потребители се опитват да отворят тази страница.
+Моля, изчакайте малко преди отново да пробвате да отворите страницата.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'За {{SITENAME}}',
'aboutpage' => 'Project:За {{SITENAME}}',
'copyright' => 'Съдържанието е достъпно при условията на $1.',
-'copyrightpagename' => 'Авторски права в {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Авторски права',
'currentevents' => 'Текущи събития',
'currentevents-url' => 'Project:Текущи събития',
@@ -442,8 +486,6 @@ $messages = array(
'disclaimerpage' => 'Project:Условия за ползване',
'edithelp' => 'Помощ при редактиране',
'edithelppage' => 'Help:Редактиране',
-'faq' => 'ЧЗВ',
-'faqpage' => 'Project:ЧЗВ',
'helppage' => 'Help:Съдържание',
'mainpage' => 'Начална страница',
'mainpage-description' => 'Начална страница',
@@ -524,10 +566,6 @@ MySQL върна грешка „<tt>$3: $4</tt>“.',
„$1“
при функцията „$2“.
MySQL върна грешка „$3: $4“',
-'noconnect' => 'В момента са на лице технически затруднения и не може да се осъществи връзка с базата данни.<br />
-$1',
-'nodb' => 'Неуспех при избирането на база от данни $1',
-'cachederror' => 'Показано е складирано копие на желаната страница, което евентуално може да е остаряло.',
'laggedslavemode' => 'Внимание: Страницата може да не съдържа последните обновявания.',
'readonly' => 'Базата от данни е затворена за промени',
'enterlockreason' => 'Посочете причина за затварянето, като дадете и приблизителна оценка кога базата от данни ще бъде отново отворена',
@@ -554,7 +592,7 @@ $1',
'unexpected' => 'Неочаквана стойност: „$1“=„$2“.',
'formerror' => 'Възникна грешка при изпращане на формуляра',
'badarticleerror' => 'Действието не може да се изпълни върху страницата.',
-'cannotdelete' => 'Указаната страница или файл не можа да бъде изтрит(а). Възможно е вече да е изтрит(а) от някой друг.',
+'cannotdelete' => 'Указаната страница или файл "$1" не можа да бъде изтрит(а). Възможно е вече да е бил(а) изтрит(а) от някой друг.',
'badtitle' => 'Невалидно заглавие',
'badtitletext' => 'Желаното заглавие на страница е невалидно, празно или неправилна препратка към друго уики. Възможно е да съдържа знаци, които не са позволени в заглавия.',
'perfcached' => 'Следните данни са извлечени от склада и затова може да не отговарят на текущото състояние:',
@@ -587,7 +625,6 @@ $2',
'virus-unknownscanner' => 'непознат антивирус:',
# Login and logout pages
-'logouttitle' => 'Излизане от системата',
'logouttext' => "'''Излязохте от системата.'''
Можете да продължите да използвате {{SITENAME}} анонимно или да [[Special:UserLogin|влезете отново]] като друг потребител.
@@ -596,7 +633,6 @@ $2',
Вашата сметка беше създадена.
Можете да промените [[Special:Preferences|настройките на {{SITENAME}}]] според предпочитанията си.',
-'loginpagetitle' => 'Влизане в системата',
'yourname' => 'Потребителско име:',
'yourpassword' => 'Парола:',
'yourpasswordagain' => 'Парола (повторно):',
@@ -609,6 +645,7 @@ $2',
Ако все още не сте се регистрирали (нямате открита сметка), лесно можете да сторите това, като последвате препратката '''Създаване на сметка'''.",
'userlogin' => 'Влизане / създаване на сметка',
+'userloginnocreate' => 'Влизане',
'logout' => 'Излизане',
'userlogout' => 'Излизане',
'notloggedin' => 'Не сте влезли',
@@ -621,27 +658,8 @@ $2',
'badretype' => 'Въведените пароли не съвпадат.',
'userexists' => 'Въведеното потребителско име вече се използва.
Изберете друго име.',
-'youremail' => 'Е-поща:',
-'username' => 'Потребителско име:',
-'uid' => 'Потребителски номер:',
-'prefs-memberingroups' => 'Член на {{PLURAL:$1|група|групи}}:',
-'yourrealname' => 'Истинско име:',
-'yourlanguage' => 'Език:',
-'yourvariant' => 'Вариант',
-'yournick' => 'Подпис:',
-'badsig' => 'Избраният подпис не е валиден. Проверете HTML-етикетите!',
-'badsiglength' => 'Вашият подпис е твърде дълъг.
-Подписите не могат да надвишават $1 {{PLURAL:$1|знак|знака}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'Не е посочено',
-'gender-male' => 'Мъж',
-'gender-female' => 'Жена',
-'prefs-help-gender' => 'По желание: използва се за коректно обръщение по род в системните съобщения на софтуера. Тази информация е публично достъпна.',
-'email' => 'Е-поща',
-'prefs-help-realname' => '* <strong>Истинско име</strong> <em>(незадължително)</em>: Ако го посочите, на него ще бъдат приписани вашите приноси.',
'loginerror' => 'Грешка при влизане',
-'prefs-help-email' => 'Електронната поща е незадължителна, но позволява да ви бъде изпратена нова парола, в случай че забравите текущата. Можете също да изберете дали другите потребители могат да се свързват с вас, без да се налага да им съобщавате адреса си.',
-'prefs-help-email-required' => 'Изисква се адрес за електронна поща.',
+'createaccounterror' => 'Не може да бъде създадена сметка: $1',
'nocookiesnew' => 'Потребителската сметка беше създадена, но все още не сте влезли. {{SITENAME}} използва бисквитки при влизането на потребителите. Разрешете бисквитките в браузъра си, тъй като те са забранени, а след това влезте с потребителското си име и парола.',
'nocookieslogin' => '{{SITENAME}} използва бисквитки (cookies) за запис на влизанията. Разрешете бисквитките в браузъра си, тъй като те са забранени, и опитайте отново.',
'noname' => 'Не указахте валидно потребителско име.',
@@ -652,10 +670,11 @@ $2',
Проверете изписването или [[Special:UserLogin/signup|създайте нова сметка]].',
'nosuchusershort' => 'Не съществува потребител с името „<nowiki>$1</nowiki>“. Проверете изписването.',
'nouserspecified' => 'Необходимо е да се посочи потребителско име.',
+'login-userblocked' => 'Този потребител е блокиран. Не се позволява влизане.',
'wrongpassword' => 'Въведената парола е невалидна. Опитайте отново.',
'wrongpasswordempty' => 'Въведената парола е празна. Опитайте отново.',
-'passwordtooshort' => 'Паролата ви е прекалено къса.
-Необходимо е да съдържа поне {{PLURAL:$1|1 знак|$1 знака}} и да е различна от потребителското име.',
+'passwordtooshort' => 'Необходимо е паролата да съдържа поне {{PLURAL:$1|1 знак|$1 знака}}.',
+'password-name-match' => 'Паролата ви трябва да се различава от потребителското ви име.',
'mailmypassword' => 'Изпращане на нова парола',
'passwordremindertitle' => 'Напомняне за парола от {{SITENAME}}',
'passwordremindertext' => 'Някой (най-вероятно вие, от IP-адрес $1) е пожелал нова парола за влизане в {{SITENAME}} ($4).
@@ -665,6 +684,7 @@ $2',
Ако заявката е направена от друг или пък сте си спомнили паролата и не искате да я променяте, можете да пренебрегнете това съобщение и да продължите да използвате старата си парола.',
'noemail' => 'Няма записана електронна поща за потребителя „$1“.',
+'noemailcreate' => 'Необходимо е да въведете валиден адрес за е-поща',
'passwordsent' => 'Нова парола беше изпратена на електронната поща на „$1“.
След като я получите, влезте отново.',
'blocked-mailpassword' => 'Редактирането от вашия IP-адрес е забранено, затова не ви е позволено да използвате възможността за възстановяване на загубена парола.',
@@ -685,9 +705,11 @@ $2',
'createaccount-text' => 'Някой е създал сметка за $2 в {{SITENAME}} ($4) и е посочил този адрес за електронна поща. Паролата за „$2“ е „$3“. Необходимо е да влезете в системата и да смените паролата си.
Можете да пренебрегнете това съобщение, ако сметката е създадена по грешка.',
+'usernamehasherror' => 'Потребителското име не може да съдържа хеш символи т.е. /\\*,:;=+?|<>&%...',
'login-throttled' => 'Направили сте твърде много опити да въведете паролата за тази сметка.
Изчакайте известно време преди да опитате отново.',
'loginlanguagelabel' => 'Език: $1',
+'suspicious-userlogout' => 'Заявката ви за излизане от системата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокси.',
# Password reset dialog
'resetpass' => 'Промяна на парола',
@@ -699,17 +721,13 @@ $2',
'retypenew' => 'Нова парола повторно:',
'resetpass_submit' => 'Избиране на парола и влизане',
'resetpass_success' => 'Паролата ви беше сменена! Сега влизате…',
-'resetpass_bad_temporary' => 'Невалидна временна парола. Възможно е вече да сте променили паролата си или пък да сте поискали нова временна парола.',
'resetpass_forbidden' => 'Не е разрешена смяна на паролата',
'resetpass-no-info' => 'За да достъпвате тази страница директно, необходимо е да влезете в системата.',
'resetpass-submit-loggedin' => 'Промяна на паролата',
+'resetpass-submit-cancel' => 'Отказ',
'resetpass-wrong-oldpass' => 'Невалидна временна или текуща парола.
Възможно е вече успешно да сте сменили паролата си или да сте поискали нова временна парола.',
'resetpass-temp-password' => 'Временна парола:',
-'resetpass-log' => 'Дневник на сменените пароли',
-'resetpass-logtext' => 'Следва дневник на потребителите, чиито пароли са били сменени от администратор.',
-'resetpass-logentry' => 'смени паролата на $1',
-'resetpass-comment' => 'Причина за смяна на паролата:',
# Edit page toolbar
'bold_sample' => 'Получер текст',
@@ -782,7 +800,6 @@ $2',
'blockededitsource' => "По-долу е показан текстът на '''вашите редакции''' на '''$1''':",
'whitelistedittitle' => 'Необходимо е да влезете, за да може да редактирате',
'whitelistedittext' => 'Редактирането на страници изисква $1 в системата.',
-'confirmedittitle' => 'Необходимо е потвърждение на адреса ви за електронна поща',
'confirmedittext' => 'Необходимо е да потвърдите електронната си поща, преди да редактирате страници.
Въведете и потвърдете адреса си на [[Special:Preferences|страницата с настройките]].',
'nosuchsectiontitle' => 'Няма такъв раздел',
@@ -802,13 +819,20 @@ $2',
''Ако сте анонимен потребител и мислите, че тези неуместни коментари са отправени към вас, [[Special:UserLogin/signup|регистрирайте се]] или [[Special:UserLogin|влезте в системата]], за да избегнете евентуално бъдещо объркване с други анонимни потребители.''",
'noarticletext' => 'Тази страница все още не съществува. Можете да [[Special:Search/{{PAGENAME}}|потърсите за заглавието на страницата]] в други страници, да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в дневниците] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} да я създадете]</span>.',
+'noarticletext-nopermission' => 'Понастоящем в тази страница няма текст.
+Можете да [[Special:Search/{{PAGENAME}}|потърсите заглавието на тази страница ]] в други страници или
+да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>.',
'userpage-userdoesnotexist' => 'Няма регистрирана потребителска сметка за „$1“. Изисква се потвърждение, че желаете да създадете/редактирате тази страница?',
+'userpage-userdoesnotexist-view' => 'Не е регистрирана потребителска сметка на име „$1“.',
+'blocked-notice-logextract' => 'В момента този потребител е блокиран.
+По-долу за справка е показан последният запис от Дневника на блокиранията:',
'clearyourcache' => "'''Бележка:''' След съхранението е необходимо да изтриете кеша на браузъра, за да видите промените:
'''Mozilla / Firefox / Safari:''' натиснете бутона ''Shift'' и щракнете върху ''Презареждане'' (''Reload''), или изберете клавишната комбинация ''Ctrl-Shift-R'' (''Cmd-Shift-R'' за Apple Mac);
'''IE:''' натиснете ''Ctrl'' и щракнете върху ''Refresh'', или клавишната комбинация ''CTRL-F5'';
'''Konqueror:''' щракнете върху ''Презареждане'' или натиснете ''F5'';
'''Opera:''' вероятно е необходимо да изчистите кеша през менюто ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Съвет:''' Използвайте бутона „Предварителен преглед“, за да изпробвате новия код на CSS/Джаваскрипт преди съхранението.",
+'usercssyoucanpreview' => "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на CSS преди съхранението.",
+'userjsyoucanpreview' => "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на Джаваскрипт преди съхранението.",
'usercsspreview' => "'''Не забравяйте, че това е само предварителен преглед на кода на CSS. Страницата все още не е съхранена!'''",
'userjspreview' => "'''Не забравяйте, че това е само изпробване/предварителен преглед на кода на Джаваскрипт. Страницата все още не е съхранена!'''",
'userinvalidcssjstitle' => "'''Внимание:''' Не съществува облик „$1“. Необходимо е да се знае, че имената на потребителските ви страници за CSS и Джаваскрипт трябва да се състоят от малки букви, например: „{{ns:user}}:Иван/monobook.css“ (а не „{{ns:user}}:Иван/Monobook.css“).",
@@ -855,13 +879,16 @@ $2',
'readonlywarning' => "'''ВНИМАНИЕ: Базата от данни беше затворена за поддръжка, затова в момента промените ви не могат да бъдат съхранени. Ако желаете, можете да съхраните страницата като текстов файл и да се опитате да я публикувате по-късно.'''
Администраторът, който е затворил базата от данни, е посочил следната причина: $1",
-'protectedpagewarning' => "'''ВНИМАНИЕ: Страницата е защитена и само администратори могат да я редактират.'''",
-'semiprotectedpagewarning' => "'''Забележка:''' Страница е защитена, като само регистрирани потребители могат да я редактират.",
+'protectedpagewarning' => "'''Внимание: Страницата е защитена и само потребители със статут на администратори могат да я редактират.'''
+За справка по-долу е показан последният запис от дневниците.",
+'semiprotectedpagewarning' => "'''Забележка:''' Тази страница е защитена и само регистрирани потребители могат да я редактират.
+За справка по-долу е показан последният запис от дневниците.",
'cascadeprotectedwarning' => "'''Внимание:''' Страницата е защитена, като само потребители с администраторски права могат да я редактират. Тя е включена в {{PLURAL:$1|следната страница|следните страници}} с каскадна защита:",
-'titleprotectedwarning' => "'''ВНИМАНИЕ: Тази страница беше заключена и [[Special:ListGroupRights|само някои]] потребители могат да я създадат.'''",
-'templatesused' => 'Шаблони, използвани на страницата:',
-'templatesusedpreview' => 'Шаблони, използвани в предварителния преглед:',
-'templatesusedsection' => 'Шаблони, използвани в този раздел:',
+'titleprotectedwarning' => "'''Внимание: Тази страница е защитена и са необходими [[Special:ListGroupRights|специално права]], за да бъде създадена.'''
+За справка по-долу е показан последният запис от дневниците.",
+'templatesused' => '{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} на страницата:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} в предварителния преглед:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} в този раздел:',
'template-protected' => '(защитен)',
'template-semiprotected' => '(полузащитен)',
'hiddencategories' => 'Тази страница е включена в {{PLURAL:$1|Една скрита категория|$1 скрити категории}}:',
@@ -869,15 +896,18 @@ $2',
'nocreatetitle' => 'Създаването на страници е ограничено',
'nocreatetext' => 'Създаването на нови страници в {{SITENAME}} е ограничено. Можете да се върнете назад и да редактирате някоя от съществуващите страници, [[Special:UserLogin|да се регистрирате или да създадете нова потребителска сметка]].',
'nocreate-loggedin' => 'Нямате необходимите права да създавате нови страници.',
+'sectioneditnotsupported-title' => 'Не се поддържа редактиране на раздели',
+'sectioneditnotsupported-text' => 'Не се поддържа редактиране на раздели на тази страница.',
'permissionserrors' => 'Грешки при правата на достъп',
'permissionserrorstext' => 'Нямате правата да извършите това действие по {{PLURAL:$1|следната причина|следните причини}}:',
'permissionserrorstext-withaction' => 'Нямате разрешение за $2 поради {{PLURAL:$1|следната причина|следните причини}}:',
-'recreate-deleted-warn' => "'''Внимание: Създавате страница, която по-рано вече е била изтрита.'''
+'recreate-moveddeleted-warn' => "'''Внимание: Създавате страница, която по-рано вече е била изтрита.'''
Обмислете добре дали е уместно повторното създаване на страницата.
За ваша информация по-долу е посочена причината за предишното изтриване на страницата:",
-'deleted-notice' => 'Тази страница е била изтрита. За справка, погледнете по-долу записите за тази страница в Дневника на изтриванията.',
-'deletelog-fulllog' => 'Преглед на пълния дневник',
+'moveddeleted-notice' => 'Тази страница е била изтрита.
+За справка, по-долу са включени извадки от дневниците на изтриванията и преместванията.',
+'log-fulllog' => 'Преглеждане на пълния дневник',
'edit-hook-aborted' => 'Редакцията беше прекъсната от кука. Не беше посочена причина за това.',
'edit-gone-missing' => 'Страницата не можа да се обнови.
Вероятно междувременно е била изтрита.',
@@ -917,7 +947,7 @@ $2',
'currentrev' => 'Текуща версия',
'currentrev-asof' => 'Текуща версия към $1',
'revisionasof' => 'Версия от $1',
-'revision-info' => 'Версия от $1 на $2', # Additionally available: $3: revision id
+'revision-info' => 'Версия от $1 на $2',
'previousrevision' => '←По-стара версия',
'nextrevision' => 'По-нова версия→',
'currentrevisionlink' => 'преглед на текущата версия',
@@ -929,7 +959,7 @@ $2',
'histlegend' => '<em>Разлики:</em> Изберете версиите, които желаете да сравните, чрез превключвателите срещу тях и натиснете &lt;Enter&gt; или бутона за сравнение.<br />
<em>Легенда:</em> (<strong>тек</strong>) = разлика с текущата версия, (<strong>пред</strong>) = разлика с предишната версия, <strong>м</strong>&nbsp;=&nbsp;малка промяна',
'history-fieldset-title' => 'Търсене в историята',
-'deletedrev' => '[изтрита]',
+'history-show-deleted' => 'Само изтритите',
'histfirst' => 'Първи',
'histlast' => 'Последни',
'historysize' => '({{PLURAL:$1|1 байт|$1 байта}})',
@@ -938,69 +968,114 @@ $2',
# Revision feed
'history-feed-title' => 'Редакционна история',
'history-feed-description' => 'Редакционна история на страницата в {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 в $2', # user at time
+'history-feed-item-nocomment' => '$1 в $2',
'history-feed-empty' => 'Исканата страница не съществува — може да е била изтрита или преименувана. Опитайте да [[Special:Search|потърсите]] нови страници, които биха могли да са ви полезни.',
# Revision deletion
-'rev-deleted-comment' => '(коментарът е изтрит)',
-'rev-deleted-user' => '(името на автора е изтрито)',
-'rev-deleted-event' => '(записът е изтрит)',
-'rev-deleted-text-permission' => "Тази версия на страницата е била '''изтрита'''.
-Възможно да има повече подробности в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
-'rev-deleted-text-view' => "Тази версия на страницата е била '''изтрита''' от общодостъпния архив.
+'rev-deleted-comment' => '(коментарът е изтрит)',
+'rev-deleted-user' => '(името на автора е изтрито)',
+'rev-deleted-event' => '(записът е изтрит)',
+'rev-deleted-user-contribs' => '[потребителското име или IP адреса е отстранен - премахната редакция]',
+'rev-deleted-text-permission' => "Тази версия на страницата е била '''изтрита'''.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+'rev-deleted-text-unhide' => "Тази версия на страницата е била '''изтрита'''.
+Допълнителна информация може се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].
+Като администратор на сайта вие можете да [$1 прегледате тази редакция], ако желаете да продължите.",
+'rev-suppressed-text-unhide' => "Тази версия на страницата е била '''прикрита'''.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].
+Като администратор на сайта, вие можете да [$1 прегледате версията], ако желаете да продължите.",
+'rev-deleted-text-view' => "Тази редация на страницата е била '''изтрита'''.
Като администратор на сайта, вие можете да я прегледате.
-Допълнителна информация може да има в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
-'rev-deleted-no-diff' => "Няма достъп до тази разликова връзка, тъй като някоя от версиите е била '''изтрита'''.
-Възможно е да има подробности в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
-'rev-deleted-unhide-diff' => "Една от версиите на тази разликова връзка е била '''изтрита''' от общодостъпния архив.
-Допълнителна информация може да има в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].
-Като администратор на сайта, вие можете да [$1 прегледате разликовата връзка], ако желаете да продължите.",
-'rev-delundel' => 'показване/скриване',
-'revisiondelete' => 'Изтриване/възстановяване на версии',
-'revdelete-nooldid-title' => 'Не е зададена версия',
-'revdelete-nooldid-text' => 'Не сте задали версия или версии за изпълнението на тази функция.',
-'revdelete-nologtype-title' => 'Не е посочен тип на дневника',
-'revdelete-nologtype-text' => 'Не е посочен дневник, в който да бъде изпълнено желаното действие.',
-'revdelete-toomanytargets-title' => 'Твърде много цели',
-'revdelete-nologid-title' => 'Невалиден запис в дневника',
-'revdelete-nologid-text' => 'Не сте указали правилната редакция за изпълнение на тази функция, или такава статия не съществува',
-'revdelete-selected' => "'''{{PLURAL:$2|Избрана версия|Избрани версии}} от '''$1:''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Избрано събитие|Избрани събития}}:'''",
-'revdelete-text' => "'''Изтритите версии ше се показват в историята на страницата, но тяхното съдържание ще бъде недостъпно за обикновенните потребители.'''
-
-Администраторите на {{SITENAME}} ще имат достъп до скритото съдържание и ще могат да го възстановят, с изключение на случаите, когато има наложено допълнително ограничение.
-
-Необходимо е да потвърдите, че велаете да извършите действието, разбирате последствията и го правите според [[{{MediaWiki:Policy-url}}|политиката]].",
-'revdelete-suppress-text' => "Премахването трябва да се използва '''само''' при следните случаи:
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+'rev-suppressed-text-view' => "Тази редация на страницата е била '''прикрита'''.
+Като администратор на сайта, вие можете да я прегледате.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].",
+'rev-deleted-no-diff' => "Нямате достъп до тази разликова препратка, тъй като една от съставящите я редакции е била '''изтрита'''.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+'rev-suppressed-no-diff' => "Не можете да прегледате тази разликова връзка, защото една от участващите в нея версии е била '''изтрита'''.",
+'rev-deleted-unhide-diff' => "Една от редакциите в тази разликова препратка е била '''изтрита'''.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].
+Като администратор на сайта, вие можете да [$1 прегледате разликовата препратка], ако желаете.",
+'rev-suppressed-unhide-diff' => "Една от версиите, съставляващи тази разликова препратка, е била '''прикрита'''.
+Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].
+ато администратор на сайта, вие можете да [$1 прегледате тази разликова препратка], ако желаете да продължите.",
+'rev-deleted-diff-view' => "Една от версиите на тази разлика е била '''изтрита'''.
+Като администратор, можете да видите тази разлика; възможно е да има повече информация в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
+'rev-suppressed-diff-view' => "Една от редакциите беше '''премахната'''.
+Като администратор можете да видите тази редакция; може да има информация в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневника за изтриване].",
+'rev-delundel' => 'показване/скриване',
+'rev-showdeleted' => 'показване',
+'revisiondelete' => 'Изтриване/възстановяване на версии',
+'revdelete-nooldid-title' => 'Не е зададена версия',
+'revdelete-nooldid-text' => 'Не сте задали версия или версии за изпълнението на тази функция.',
+'revdelete-nologtype-title' => 'Не е посочен тип на дневника',
+'revdelete-nologtype-text' => 'Не е посочен дневник, в който да бъде изпълнено желаното действие.',
+'revdelete-nologid-title' => 'Невалиден запис в дневника',
+'revdelete-nologid-text' => 'Не сте указали правилната редакция за изпълнение на тази функция, или такава статия не съществува',
+'revdelete-no-file' => 'Посоченият файл не съществува.',
+'revdelete-show-file-confirm' => 'Необходимо е потвърждение, че желаете да прегледате изтритата версия на файла „<nowiki>$1</nowiki>“ от $2 $3.',
+'revdelete-show-file-submit' => 'Да',
+'revdelete-selected' => "'''{{PLURAL:$2|Избрана версия|Избрани версии}} от '''$1:''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Избрано събитие|Избрани събития}}:'''",
+'revdelete-text' => "'''Изтритите версии ше се показват в историята на страницата, но тяхното съдържание ще бъде недостъпно за обикновенните потребители.'''
+Администраторите на {{SITENAME}} ще имат достъп до скритото съдържание и ще могат да го възстановят, с изключение на случаите, когато има наложено допълнително ограничение.",
+'revdelete-confirm' => 'Необходимо е да потвърдите, че велаете да извършите действието, разбирате последствията и го правите според [[{{MediaWiki:Policy-url}}|политиката]].',
+'revdelete-suppress-text' => "Премахването трябва да се използва '''само''' при следните случаи:
*Неподходяща или неприемлива лична информация
*: ''домашни адреси и телефонни номера, номера за социално осигуряване и др.''",
-'revdelete-legend' => 'Задаване на ограничения:',
-'revdelete-hide-text' => 'Скриване на текста на версията',
-'revdelete-hide-name' => 'Скриване на действието и целта',
-'revdelete-hide-comment' => 'Скриване на коментара',
-'revdelete-hide-user' => 'Скриване на името/IP-адреса на автора',
-'revdelete-hide-restricted' => 'Прилагане на тези ограничения и за администраторите',
-'revdelete-suppress' => 'Скриване на причината за изтриването и от администраторите',
-'revdelete-hide-image' => 'Скриване на файловото съдържание',
-'revdelete-unsuppress' => 'Премахване на ограниченията за възстановените версии',
-'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Прилагане към избраната версия',
-'revdelete-logentry' => 'промени видимостта на версия на [[$1]]',
-'logdelete-logentry' => 'промени видимостта на събитие за [[$1]]',
-'revdelete-success' => "'''Видимостта на версията беше променена успешно.'''",
-'logdelete-success' => 'Видимостта на събитието беше променена.',
-'revdel-restore' => 'Промяна на видимостта',
-'pagehist' => 'История на страницата',
-'deletedhist' => 'Изтрита история',
-'revdelete-content' => 'съдържание',
-'revdelete-summary' => 'резюме',
-'revdelete-uname' => 'потребителско име',
-'revdelete-restricted' => 'добавени ограничения за администраторите',
-'revdelete-unrestricted' => 'премахнати ограничения за администраторите',
-'revdelete-hid' => 'скри $1',
-'revdelete-unhid' => 'разкри $1',
-'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|версия|версии}}',
-'logdelete-log-message' => '$1 за $2 {{PLURAL:$2|събитие|събития}}',
+'revdelete-legend' => 'Задаване на ограничения:',
+'revdelete-hide-text' => 'Скриване на текста на версията',
+'revdelete-hide-image' => 'Скриване на файловото съдържание',
+'revdelete-hide-name' => 'Скриване на действието и целта',
+'revdelete-hide-comment' => 'Скриване на коментара',
+'revdelete-hide-user' => 'Скриване на името/IP-адреса на автора',
+'revdelete-hide-restricted' => 'Прилагане на тези ограничения и за администраторите',
+'revdelete-radio-same' => '(да не се променя)',
+'revdelete-radio-set' => 'Да',
+'revdelete-radio-unset' => 'Не',
+'revdelete-suppress' => 'Скриване на причината за изтриването и от администраторите',
+'revdelete-unsuppress' => 'Премахване на ограниченията за възстановените версии',
+'revdelete-log' => 'Причина:',
+'revdelete-submit' => 'Прилагане към {{PLURAL:$1|избраната версия|избраните версии}}',
+'revdelete-logentry' => 'промени видимостта на версия на [[$1]]',
+'logdelete-logentry' => 'промени видимостта на събитие за [[$1]]',
+'revdelete-success' => "'''Видимостта на версията беше променена успешно.'''",
+'revdelete-failure' => "'''Редакцията не може да се актуализира:'''
+$1",
+'logdelete-success' => 'Видимостта на събитието беше променена.',
+'logdelete-failure' => "'''Данните не могат да се видят:'''
+$1",
+'revdel-restore' => 'Промяна на видимостта',
+'pagehist' => 'История на страницата',
+'deletedhist' => 'Изтрита история',
+'revdelete-content' => 'съдържание',
+'revdelete-summary' => 'резюме',
+'revdelete-uname' => 'потребителско име',
+'revdelete-restricted' => 'добавени ограничения за администраторите',
+'revdelete-unrestricted' => 'премахнати ограничения за администраторите',
+'revdelete-hid' => 'скри $1',
+'revdelete-unhid' => 'разкри $1',
+'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|версия|версии}}',
+'logdelete-log-message' => '$1 за $2 {{PLURAL:$2|събитие|събития}}',
+'revdelete-hide-current' => 'Грешка при скриване на елемента от $2, $1: представлява текущата версия.
+Тя не може да бъде скрита.',
+'revdelete-show-no-access' => 'Грешка при показване на обект, датиран към $2, $1: обектът е бил отбелязан като "ограничен".
+Нямате достъп до него.',
+'revdelete-modify-no-access' => 'Грешка при промяна на елемент от $2, $1: Този елемент е бил отбелязан като „ограничен“.
+Вие нямате достъп до него.',
+'revdelete-modify-missing' => 'Грешка при промяна на елемент с номер $1: липсва в базата данни!',
+'revdelete-no-change' => "'''Внимание:''' елементът от $2, $1 вече притежава поисканите настройки за видимост.",
+'revdelete-concurrent-change' => 'Грешка при модифициране на обект, датиран към $2, $1: изглежда, че статутът му е бил променен от някого, докато сте се опитвали да го модифицирате.
+Моля, погледнете в съответните дневници.',
+'revdelete-only-restricted' => 'Грешка при прикриване на обекта на $2, $1: не можете да прикривате обекти от администраторите, без същевременно да изберете някоя от другите опции за прозрачност.',
+'revdelete-reason-dropdown' => '* Стандартни причини за изтриване
+** Нарушение на авторски права
+** Неуместна лична информация
+** Потенциално клеветническа информация',
+'revdelete-otherreason' => 'Друга/допълнителна причина:',
+'revdelete-reasonotherlist' => 'Друга причина',
+'revdelete-edit-reasonlist' => 'Редактиране на причините за изтриване',
+'revdelete-offender' => 'Автор на версията:',
# Suppression log
'suppressionlog' => 'Дневник на прикриванията',
@@ -1036,53 +1111,13 @@ $2',
'mergelogpagetext' => 'Страницата съдържа списък с последните сливания на редакционни истории.',
# Diffs
-'history-title' => 'Преглед на историята на „$1“',
-'difference' => '(Разлики между версиите)',
-'lineno' => 'Ред $1:',
-'compareselectedversions' => 'Сравнение на избраните версии',
-'visualcomparison' => 'Визуално сравняване',
-'wikicodecomparison' => 'Уикитекстово сравняване',
-'editundo' => 'връщане',
-'diff-multi' => '({{PLURAL:$1|Една междинна версия не е показана|$1 междинни версии не са показани}}.)',
-'diff-styleadded' => '$1 добавен стил',
-'diff-styleremoved' => '$1 премахнат стил',
-'diff-src' => 'изходна страница',
-'diff-withdestination' => 'с целева страница $1',
-'diff-with' => '&#32;с $1 $2',
-'diff-with-final' => '&#32;и $1 $2',
-'diff-width' => 'ширина',
-'diff-height' => 'височина',
-'diff-p' => "'''параграф'''",
-'diff-blockquote' => "'''блок с цитат'''",
-'diff-h1' => "'''заглавие на раздел (ниво 1)'''",
-'diff-h2' => "'''заглавие на раздел (ниво 2)'''",
-'diff-h3' => "'''заглавие на раздел (ниво 3)'''",
-'diff-h4' => "'''заглавие на раздел (ниво 4)'''",
-'diff-h5' => "'''заглавие на раздел (ниво 5)'''",
-'diff-pre' => "'''блок с предварително форматиран текст'''",
-'diff-ul' => "'''неномериран списък'''",
-'diff-ol' => "'''номериран списък'''",
-'diff-li' => "'''елемент от списък'''",
-'diff-table' => "'''таблица'''",
-'diff-tbody' => "'''съдържание на таблица'''",
-'diff-tr' => "'''ред'''",
-'diff-td' => "'''клетка'''",
-'diff-hr' => "'''хоризонтална линия'''",
-'diff-code' => "'''блок с програмен код'''",
-'diff-dl' => "'''списък от дефиниции'''",
-'diff-dt' => "'''термин'''",
-'diff-dd' => "'''дефиниция'''",
-'diff-form' => "'''формуляр'''",
-'diff-img' => "'''картинка'''",
-'diff-a' => "'''препратка'''",
-'diff-i' => "'''курсив'''",
-'diff-b' => "'''получер'''",
-'diff-font' => "'''шрифт'''",
-'diff-del' => "'''изтрито'''",
-'diff-tt' => "'''фиксирана ширина'''",
-'diff-sub' => "'''долен индекс'''",
-'diff-sup' => "'''горен индекс'''",
-'diff-strike' => "'''зачертано'''",
+'history-title' => 'Преглед на историята на „$1“',
+'difference' => '(Разлики между версиите)',
+'lineno' => 'Ред $1:',
+'compareselectedversions' => 'Сравнение на избраните версии',
+'showhideselectedversions' => 'Показване/скриване на избрани версии',
+'editundo' => 'връщане',
+'diff-multi' => '({{PLURAL:$1|Една междинна версия не е показана|$1 междинни версии не са показани}}.)',
# Search results
'searchresults' => 'Резултати от търсенето',
@@ -1090,28 +1125,25 @@ $2',
'searchresulttext' => 'За повече информация относно търсенето в {{SITENAME}}, вижте [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'За заявка „[[:$1]]“ ([[Special:Prefixindex/$1|всички страници, които започват с „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|всички страници, които сочат към „$1“]])',
'searchsubtitleinvalid' => 'За заявка „$1“',
-'noexactmatch' => "В {{SITENAME}} не съществува страница с това заглавие. Можете да я '''[[:$1|създадете]]'''.",
-'noexactmatch-nocreate' => "'''Не съществува страница „$1“.'''",
'toomanymatches' => 'Бяха открити твърде много съвпадения, опитайте с различна заявка',
'titlematches' => 'Съответствия в заглавията на страници',
'notitlematches' => 'Няма съответствия в заглавията на страници',
'textmatches' => 'Съответствия в текста на страници',
'notextmatches' => 'Няма съответствия в текста на страници',
-'prevn' => 'предишни $1',
-'nextn' => 'следващи $1',
+'prevn' => 'предишни {{PLURAL:$1|$1}}',
+'nextn' => 'следващи {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|предишен резултат|предишни резултата}}',
'nextn-title' => '$1 {{PLURAL:$1|следващ резултат|следващи резултата}}',
'shown-title' => 'Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница',
-'viewprevnext' => 'Преглед ($1) ($2) ($3).',
+'viewprevnext' => 'Преглед ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Настройки на търсенето',
'searchmenu-exists' => "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
'searchmenu-new' => "'''Създаване на страницата „[[:$1]]“ в това уики!'''",
'searchhelp-url' => 'Help:Съдържание',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Преглеждане на страниците с тази представка]]',
-'searchprofile-articles' => 'Страници със съдържание',
-'searchprofile-articles-and-proj' => 'Съдържание & проектни страници',
-'searchprofile-project' => 'Проектни страници',
-'searchprofile-images' => 'Файлове',
+'searchprofile-articles' => 'Съдържателни страници',
+'searchprofile-project' => 'Помощни и проектни страници',
+'searchprofile-images' => 'Мултимедия',
'searchprofile-everything' => 'Всичко',
'searchprofile-advanced' => 'Разширено търсене',
'searchprofile-articles-tooltip' => 'Търсене в $1',
@@ -1119,8 +1151,6 @@ $2',
'searchprofile-images-tooltip' => 'Търсене на файлове',
'searchprofile-everything-tooltip' => 'Търсене в цялото съдържание (вкл. беседи)',
'searchprofile-advanced-tooltip' => 'Търсене в избрани именни пространства',
-'prefs-search-nsdefault' => 'Търсене с настройките по подразбиране:',
-'prefs-search-nscustom' => 'Търсене в избрани именни пространства:',
'search-result-size' => '$1 ({{PLURAL:$2|една дума|$2 думи}})',
'search-result-score' => 'Релевантност: $1%',
'search-redirect' => '(пренасочване $1)',
@@ -1133,11 +1163,12 @@ $2',
'search-mwsuggest-disabled' => 'без предположения',
'search-relatedarticle' => 'Свързани',
'mwsuggest-disable' => 'Изключване на AJAX предположенията',
+'searcheverything-enable' => 'Търсене във всички именни пространства',
'searchrelated' => 'свързани',
'searchall' => 'всички',
'showingresults' => "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.",
'showingresultsnum' => "Показване на {{PLURAL:$3|'''1''' резултат|'''$3''' резултата}}, като се започва от номер '''$2'''.",
-'showingresultstotal' => "По-долу {{PLURAL:$4|е показан резултат '''$1''' от '''$3'''|са показани резултати от '''$1''' до '''$2''' от общо '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' от '''$3'''|Резултати '''$1 - $2''' от '''$3'''}} за '''$4'''",
'nonefound' => "'''Забележка''': Търсенето по подразбиране се свежда само до някои именни пространства.
Опитайте пак, като отбележите в заявката си префикса ''all:'', за търсене из цялото съдържание на базата данни (включително дискусионни страници, шаблони и т.н.) или използвайте желаното именно пространство като префикс.",
'search-nonefound' => 'Няма резултати, които да отговарят на заявката.',
@@ -1146,93 +1177,130 @@ $2',
'powersearch-ns' => 'Търсене в именни пространства:',
'powersearch-redir' => 'Списък на пренасочванията',
'powersearch-field' => 'Търсене на',
+'powersearch-togglelabel' => 'Проверка:',
+'powersearch-toggleall' => 'Всички',
+'powersearch-togglenone' => 'Никои',
'search-external' => 'Външно търсене',
'searchdisabled' => 'Търсенето в {{SITENAME}} е временно изключено. Междувременно можете да търсите чрез Google. Обърнете внимание, че съхранените при тях страници най-вероятно са остарели.',
+# Quickbar
+'qbsettings' => 'Лента за бърз избор',
+'qbsettings-none' => 'Без меню',
+'qbsettings-fixedleft' => 'Неподвижно вляво',
+'qbsettings-fixedright' => 'Неподвижно вдясно',
+'qbsettings-floatingleft' => 'Плаващо вляво',
+'qbsettings-floatingright' => 'Плаващо вдясно',
+
# Preferences page
-'preferences' => 'Настройки',
-'mypreferences' => 'Моите настройки',
-'prefs-edits' => 'Брой редакции:',
-'prefsnologin' => 'Не сте влезли',
-'prefsnologintext' => 'Необходимо е <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} да влезете]</span>, за да може да променяте потребителските си настройки.',
-'prefsreset' => 'Текущите промени бяха отменени.',
-'qbsettings' => 'Лента за бърз избор',
-'qbsettings-none' => 'Без меню',
-'qbsettings-fixedleft' => 'Неподвижно вляво',
-'qbsettings-fixedright' => 'Неподвижно вдясно',
-'qbsettings-floatingleft' => 'Плаващо вляво',
-'qbsettings-floatingright' => 'Плаващо вдясно',
-'changepassword' => 'Смяна на парола',
-'skin' => 'Облик',
-'skin-preview' => 'предварителен преглед',
-'math' => 'Математически формули',
-'dateformat' => 'Формат на датата',
-'datedefault' => 'Без предпочитание',
-'datetime' => 'Дата и час',
-'math_failure' => 'Неуспех при разбора',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функция',
-'math_lexing_error' => 'лексикална грешка',
-'math_syntax_error' => 'синтактична грешка',
-'math_image_error' => 'Превръщането към PNG не сполучи. Проверете дали latex, dvips, gs и convert са правилно инсталирани.',
-'math_bad_tmpdir' => 'Невъзможно е писането във или създаването на временна директория за математическите операции',
-'math_bad_output' => 'Невъзможно е писането във или създаването на изходяща директория за математическите операции',
-'math_notexvc' => 'Липсва изпълнимият файл на texvc. Прегледайте math/README за информация относно конфигурирането.',
-'prefs-personal' => 'Потребителски данни',
-'prefs-rc' => 'Последни промени',
-'prefs-watchlist' => 'Списък за наблюдение',
-'prefs-watchlist-days' => 'Брой дни, които да се показват в списъка за наблюдение:',
-'prefs-watchlist-days-max' => '(най-много 7 дни)',
-'prefs-watchlist-edits' => 'Брой редакции, които се показват в разширения списък за наблюдение:',
-'prefs-watchlist-edits-max' => '(максимален брой: 1000)',
-'prefs-misc' => 'Други настройки',
-'prefs-resetpass' => 'Промяна на паролата',
-'saveprefs' => 'Съхраняване',
-'resetprefs' => 'Отмяна на текущите промени',
-'restoreprefs' => 'Възстановяване на всички настройки по подразбиране',
-'textboxsize' => 'Редактиране',
-'prefs-edit-boxsize' => 'Размер на прозореца за редактиране.',
-'rows' => 'Редове:',
-'columns' => 'Колони:',
-'searchresultshead' => 'Търсене',
-'resultsperpage' => 'Резултати на страница:',
-'contextlines' => 'Редове за резултат:',
-'contextchars' => 'Знаци от контекста на ред:',
-'stub-threshold' => 'Праг за форматиране на <a href="#" class="stub">препратки към мъничета</a>:',
-'recentchangesdays' => 'Брой дни в последни промени:',
-'recentchangesdays-max' => '(най-много $1 {{PLURAL:$1|ден|дни}})',
-'recentchangescount' => 'Брой записи за показване в списъка с последни промени, историите на страниците и дневниците:',
-'savedprefs' => 'Настройките ви бяха съхранени.',
-'timezonelegend' => 'Часова зона:',
-'timezonetext' => 'Броят часове, с които вашето местно време се различава от това на сървъра (UTC).',
-'localtime' => 'Местно време:',
-'timezoneselect' => 'Часова зона:',
-'timezoneuseserverdefault' => 'По подразбиране от сървъра',
-'timezoneuseoffset' => 'Друга (посочете отместване)',
-'timezoneoffset' => 'Отместване¹:',
-'servertime' => 'Време на сървъра:',
-'guesstimezone' => 'Попълване чрез браузъра',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктида',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азия',
-'timezoneregion-atlantic' => 'Атлантически океан',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Индийски океан',
-'timezoneregion-pacific' => 'Тихи океан',
-'allowemail' => 'Възможност за получаване на писма от други потребители',
-'prefs-searchoptions' => 'Настройки за търсене',
-'prefs-namespaces' => 'Именни пространства',
-'defaultns' => 'Търсене в тези именни пространства по подразбиране:',
-'default' => 'по подразбиране',
-'files' => 'Файлове',
-'prefs-custom-css' => 'Личен CSS',
-'prefs-custom-js' => 'Личен JS',
+'preferences' => 'Настройки',
+'mypreferences' => 'Моите настройки',
+'prefs-edits' => 'Брой редакции:',
+'prefsnologin' => 'Не сте влезли',
+'prefsnologintext' => 'Необходимо е <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} да влезете]</span>, за да може да променяте потребителските си настройки.',
+'changepassword' => 'Смяна на парола',
+'prefs-skin' => 'Облик',
+'skin-preview' => 'предварителен преглед',
+'prefs-math' => 'Математически формули',
+'datedefault' => 'Без предпочитание',
+'prefs-datetime' => 'Дата и час',
+'prefs-personal' => 'Потребителски данни',
+'prefs-rc' => 'Последни промени',
+'prefs-watchlist' => 'Списък за наблюдение',
+'prefs-watchlist-days' => 'Брой дни, които да се показват в списъка за наблюдение:',
+'prefs-watchlist-days-max' => '(най-много 7 дни)',
+'prefs-watchlist-edits' => 'Брой редакции, които се показват в разширения списък за наблюдение:',
+'prefs-watchlist-edits-max' => '(максимален брой: 1000)',
+'prefs-watchlist-token' => 'Уникален идентификатор на списъка за наблюдение:',
+'prefs-misc' => 'Други настройки',
+'prefs-resetpass' => 'Промяна на паролата',
+'prefs-email' => 'Настройки за електронната поща',
+'prefs-rendering' => 'Изглед',
+'saveprefs' => 'Съхраняване',
+'resetprefs' => 'Отмяна на текущите промени',
+'restoreprefs' => 'Възстановяване на всички настройки по подразбиране',
+'prefs-editing' => 'Редактиране',
+'prefs-edit-boxsize' => 'Размер на прозореца за редактиране.',
+'rows' => 'Редове:',
+'columns' => 'Колони:',
+'searchresultshead' => 'Търсене',
+'resultsperpage' => 'Резултати на страница:',
+'contextlines' => 'Редове за резултат:',
+'contextchars' => 'Знаци от контекста на ред:',
+'stub-threshold' => 'Праг за форматиране на <a href="#" class="stub">препратки към мъничета</a>:',
+'recentchangesdays' => 'Брой дни в последни промени:',
+'recentchangesdays-max' => '(най-много $1 {{PLURAL:$1|ден|дни}})',
+'recentchangescount' => 'Брой показвани редакции по подразбиране:',
+'prefs-help-recentchangescount' => 'Това включва последните промени, историите на страниците и дневниците.',
+'prefs-help-watchlist-token' => 'Вписването на таен ключ в това поле ще генерира RSS емисия за вашия списък за наблюдение.
+Всеки, който знае тази парола, ще може да чете списъка ви за наблюдение, затова изберете някаква сигурна комбинация.
+Можете да използвате следната случайно генерирана комбинация: $1',
+'savedprefs' => 'Настройките ви бяха съхранени.',
+'timezonelegend' => 'Часова зона:',
+'localtime' => 'Местно време:',
+'timezoneuseserverdefault' => 'По подразбиране от сървъра',
+'timezoneuseoffset' => 'Друга (посочете отместване)',
+'timezoneoffset' => 'Отместване¹:',
+'servertime' => 'Време на сървъра:',
+'guesstimezone' => 'Попълване чрез браузъра',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктида',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантически океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индийски океан',
+'timezoneregion-pacific' => 'Тихи океан',
+'allowemail' => 'Възможност за получаване на писма от други потребители',
+'prefs-searchoptions' => 'Настройки за търсене',
+'prefs-namespaces' => 'Именни пространства',
+'defaultns' => 'Или търсене в следните именни пространства:',
+'default' => 'по подразбиране',
+'prefs-files' => 'Файлове',
+'prefs-custom-css' => 'Личен CSS',
+'prefs-custom-js' => 'Личен JS',
+'prefs-reset-intro' => 'Тази страница може да се използва за възстановяване на потребителските настройки към стандартните за сайта.
+Това действие е необратимо.',
+'prefs-emailconfirm-label' => 'Потвърждаване на адрес за е-поща:',
+'prefs-textboxsize' => 'Размер на кутията за редактиране',
+'youremail' => 'Е-поща:',
+'username' => 'Потребителско име:',
+'uid' => 'Потребителски номер:',
+'prefs-memberingroups' => 'Член на {{PLURAL:$1|група|групи}}:',
+'prefs-registration' => 'Регистрация:',
+'yourrealname' => 'Истинско име:',
+'yourlanguage' => 'Език:',
+'yourvariant' => 'Вариант',
+'yournick' => 'Подпис:',
+'prefs-help-signature' => 'Коментарите в дискусионните страници трябва да се подписват с поредица от четири тилди "<nowiki>~~~~</nowiki>", която при съхранение на редакцията сървърът превръща в подпис с потребителско име, дата и час.',
+'badsig' => 'Избраният подпис не е валиден. Проверете HTML-етикетите!',
+'badsiglength' => 'Вашият подпис е твърде дълъг.
+Подписите не могат да надвишават $1 {{PLURAL:$1|знак|знака}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'Не е посочено',
+'gender-male' => 'Мъж',
+'gender-female' => 'Жена',
+'prefs-help-gender' => 'По желание: използва се за коректно обръщение по род в системните съобщения на софтуера. Тази информация е публично достъпна.',
+'email' => 'Е-поща',
+'prefs-help-realname' => '* <strong>Истинско име</strong> <em>(незадължително)</em>: Ако го посочите, на него ще бъдат приписани вашите приноси.',
+'prefs-help-email' => 'Електронната поща е незадължителна, но позволява да ви бъде изпратена нова парола, в случай че забравите текущата. Можете също да изберете дали другите потребители могат да се свързват с вас, без да се налага да им съобщавате адреса си.',
+'prefs-help-email-required' => 'Изисква се адрес за електронна поща.',
+'prefs-info' => 'Основна информация',
+'prefs-i18n' => 'Интернационализация',
+'prefs-signature' => 'Подпис',
+'prefs-dateformat' => 'Формат на датата',
+'prefs-timeoffset' => 'Часово отместване',
+'prefs-advancedediting' => 'Разширени настройки',
+'prefs-advancedrc' => 'Разширени настройки',
+'prefs-advancedrendering' => 'Разширени настройки',
+'prefs-advancedsearchoptions' => 'Разширени настройки',
+'prefs-advancedwatchlist' => 'Разширени настройки',
+'prefs-display' => 'Настройки за показване на списъка',
+'prefs-diffs' => 'Разлики',
# User rights
-'userrights' => 'Управление на потребителските права', # Not used as normal message but as header for the special page itself
+'userrights' => 'Управление на потребителските права',
'userrights-lookup-user' => 'Управляване на потребителските групи',
'userrights-user-editname' => 'Потребителско име:',
'editusergroup' => 'Редактиране на потребителските групи',
@@ -1303,6 +1371,7 @@ $2',
'right-bigdelete' => 'изтриване на страници с големи редакционни истории',
'right-deleterevision' => 'изтриване и възстановяване на отделни версии на страниците',
'right-deletedhistory' => 'преглеждане на записи от изтрити редакционни истории без асоциирания към тях текст',
+'right-deletedtext' => 'Преглед на изтрития текст и промените между изтрите версии',
'right-browsearchive' => 'търсене на изтрити страници',
'right-undelete' => 'възстановяване на страници',
'right-suppressrevision' => 'преглед и възстановяване на версии, скрити от администраторите',
@@ -1316,6 +1385,8 @@ $2',
'right-editprotected' => 'редактиране на защитени страници (без каскадна защита)',
'right-editinterface' => 'редактиране на интерфейса',
'right-editusercssjs' => 'редактиране на CSS и JS файловете на други потребители',
+'right-editusercss' => 'редактиране на CSS файловете на други потребители',
+'right-edituserjs' => 'редактиране на JS файловете на други потребители',
'right-rollback' => 'Бърза отмяна на промените, направени от последния потребител, редактирал дадена страница',
'right-markbotedits' => 'отбелязване на възвърнатите редакции като редакции на ботове',
'right-noratelimit' => 'Пренебрегване на всякакви ограничения',
@@ -1332,6 +1403,8 @@ $2',
'right-siteadmin' => 'заключване и отключване на базата от данни',
'right-reset-passwords' => 'Смяна на паролите на други потребители',
'right-override-export-depth' => 'Изнасяне на страници, включително свързаните с тях в дълбочина до пето ниво',
+'right-versiondetail' => 'Показване на подробна информация за версията на софтуера',
+'right-sendemail' => 'Изпращане на е-писма до другите потребители',
# User rights log
'rightslog' => 'Дневник на потребителските права',
@@ -1384,6 +1457,15 @@ $2',
Легенда: '''тек''' = разлика на текущата версия,
'''ист''' = история на версиите",
'recentchanges-feed-description' => 'Проследяване на последните промени в {{SITENAME}}.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 - нова страница',
+'recentchanges-label-newpage' => 'С тази редакция беше създадена нова страница',
+'recentchanges-legend-minor' => '$1 - малка промяна',
+'recentchanges-label-minor' => 'Това е малка промяна',
+'recentchanges-legend-bot' => '$1 - редакция от бот',
+'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
+'recentchanges-legend-unpatrolled' => '$1 - непроверена редакция',
+'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
'rcnote' => "{{PLURAL:$1|Показана е '''1''' промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния ден|последните '''$2''' дни}}, към $5, $4.",
'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
'rclistfrom' => 'Показване на промени, като се започва от $1.',
@@ -1410,6 +1492,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Свързани промени',
+'recentchangeslinked-feed' => 'Свързани промени',
+'recentchangeslinked-toolbox' => 'Свързани промени',
'recentchangeslinked-title' => 'Промени, свързани с „$1“',
'recentchangeslinked-noresult' => 'Няма промени в свързаните страници за дадения период.',
'recentchangeslinked-summary' => "Тук се показват последните промени на страниците, към които се препраща от дадена страница. При избиране на категория, се показват промените по страниците, влизащи в нея. ''Пример:'' Ако изберете страницата '''А''', която съдържа препратки към '''Б''' и '''В''', тогава ще можете да прегледате промените по '''Б''' и '''В'''.
@@ -1423,8 +1507,8 @@ $2',
# Upload
'upload' => 'Качване',
'uploadbtn' => 'Качване',
-'reupload' => 'Повторно качване',
'reuploaddesc' => 'Връщане към формуляра за качване.',
+'upload-tryagain' => 'Съхраняване на промененото описание на файла',
'uploadnologin' => 'Не сте влезли',
'uploadnologintext' => 'Необходимо е да [[Special:UserLogin|влезете]], за да може да качвате файлове.',
'upload_directory_missing' => 'Директорията за качване ($1) липсва и не може да бъде създадена на сървъра.',
@@ -1452,6 +1536,7 @@ $2',
'minlength1' => 'Имената на файловете трябва да съдържат поне един знак.',
'illegalfilename' => 'Името на файла „$1“ съдържа знаци, които не са позволени в заглавия на страници. Преименувайте файла и се опитайте да го качите отново.',
'badfilename' => 'Файлът беше преименуван на „$1“.',
+'filetype-mime-mismatch' => 'Файловото разширение не отговаря на MIME типа.',
'filetype-badmime' => 'Не е разрешено качването на файлове с MIME-тип „$1“.',
'filetype-bad-ie-mime' => 'Този файл не може да бъде качен, защото Internet Explorer го разпознава като „$1“, който е отхвърлен и потенциално опасен файлов формат.',
'filetype-unwanted-type' => "'''„.$1“''' е нежелан файлов формат. {{PLURAL:$3|Преопръчителният файлов формат е|Препоръчителните файлови формати са}} $2.",
@@ -1468,7 +1553,6 @@ $2',
* Име на файла за качване: '''<tt>[[:$1]]</tt>'''
* Име на съществуващия файл: '''<tt>[[:$2]]</tt>'''
Моля, изберете друго име на файла за качване.",
-'fileexists-thumb' => "<center>'''Съществуваща картинка'''</center>",
'fileexists-thumbnail-yes' => "Изглежда, че файлът е картинка с намален размер ''(миникартинка)''. [[$1|thumb]]
Проверете файла '''<tt>[[:$1]]</tt>'''.
Ако съществуващият файл представлява оригиналната версия на картинката, няма нужда да се качва неин умален вариант.",
@@ -1482,6 +1566,7 @@ $2',
'file-deleted-duplicate' => 'Идентичен с този файл ([[$1]]) вече е бил изтриван. Историята на изтриването на файла следва да се провери, преди да се пристъпи към повторното му качване.',
'successfulupload' => 'Качването беше успешно',
'uploadwarning' => 'Предупреждение при качване',
+'uploadwarning-text' => 'Необходимо е да промените описанието на файла по-долу и да опитате отново.',
'savefile' => 'Съхраняване на файл',
'uploadedimage' => 'качи „[[$1]]“',
'overwroteimage' => 'качи нова версия на „[[$1]]“',
@@ -1489,11 +1574,14 @@ $2',
'uploaddisabledtext' => 'Качването на файлове е забранено.',
'php-uploaddisabledtext' => 'Качванията на файлове са спрени през PHP. Проверете настройката file_uploads.',
'uploadscripted' => 'Файлът съдържа HTML или скриптов код, който може да бъде погрешно интерпретиран от браузъра.',
-'uploadcorrupt' => 'Файлът е повреден или е с неправилно разширение. Проверете го и го качете отново.',
'uploadvirus' => 'Файлът съдържа вирус! Подробности: $1',
+'upload-source' => 'Изходен файл',
'sourcefilename' => 'Първоначално име:',
+'sourceurl' => 'Изходен адрес:',
'destfilename' => 'Целево име:',
'upload-maxfilesize' => 'Максимален допустим размер на файла: $1',
+'upload-description' => 'Описание на файла',
+'upload-options' => 'Настройки за качване',
'watchthisupload' => 'Наблюдаване на файла',
'filewasdeleted' => 'Файл в този име е съществувал преди време, но е бил изтрит. Проверете $1 преди да го качите отново.',
'upload-wasdeleted' => "'''Внимание: Качвате файл, който вече е бил изтрит.'''
@@ -1501,12 +1589,43 @@ $2',
Преценете дали е удачно да продължите с качването на файла. За ваше удобство, ето записа за него в дневника на изтриванията:",
'filename-bad-prefix' => "Името на файла, който качвате, започва с '''„$1“''', което е неописателно име, типично задавано по автоматичен начин от цифровите камери или апарати. Изберете по-описателно име на файла.",
-'upload-proto-error' => 'Неправилен протокол',
-'upload-proto-error-text' => 'Изисква се адрес започващ с <code>http://</code> или <code>ftp://</code>.',
-'upload-file-error' => 'Вътрешна грешка',
-'upload-file-error-text' => 'Вътрешна грешка при опит да се създаде временен файл на сървъра. Обърнете се към [[Special:ListUsers/sysop|администратор]].',
-'upload-misc-error' => 'Неизвестна грешка при качване',
-'upload-misc-error-text' => 'Неизвестна грешка при качване. Убедете се, че адресът е верен и опитайте отново. Ако отново имате проблем, обърнете се към [[Special:ListUsers/sysop|администратор]].',
+'upload-proto-error' => 'Неправилен протокол',
+'upload-proto-error-text' => 'Изисква се адрес започващ с <code>http://</code> или <code>ftp://</code>.',
+'upload-file-error' => 'Вътрешна грешка',
+'upload-file-error-text' => 'Вътрешна грешка при опит да се създаде временен файл на сървъра. Обърнете се към [[Special:ListUsers/sysop|администратор]].',
+'upload-misc-error' => 'Неизвестна грешка при качване',
+'upload-misc-error-text' => 'Неизвестна грешка при качване. Убедете се, че адресът е верен и опитайте отново. Ако отново имате проблем, обърнете се към [[Special:ListUsers/sysop|администратор]].',
+'upload-too-many-redirects' => 'Адресът съдържа твърде много пренасочвания',
+'upload-unknown-size' => 'Неизвестен размер',
+'upload-http-error' => 'Възникна HTTP грешка: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Достъпът е отказан',
+'img-auth-nopathinfo' => 'Липсва PATH_INFO.
+Вашият сървър не е конфигуриран да предава тази информация.
+Той може да е базиран на CGI и да не може да поддържа img_auth.
+Вижте http://www.mediawiki.org/wiki/Manual:Image_Authorization за повече информация.',
+'img-auth-notindir' => 'Търсеният път не е в настроената директория за качвания.',
+'img-auth-badtitle' => 'Грешка при конструирането на валидно заглавие от "$1".',
+'img-auth-nologinnWL' => 'Не сте влезли в системата и „$1“ не е в белия списък.',
+'img-auth-nofile' => 'Файлът „$1“ не съществува.',
+'img-auth-isdir' => 'Опитвате се да осъществите достъп до директорията „$1“.
+Разрешен е само достъп до файловете.',
+'img-auth-streaming' => 'Излъчване "$1"',
+'img-auth-public' => 'Функцията img_auth.php е да извлича файлове от частни уикита.
+Това уики е конфигурирано като публично.
+С цел оптимална сигурност, функцията img_auth.php е деактивирана.',
+'img-auth-noread' => 'Потребителят няма достъп за четене на „$1“.',
+
+# HTTP errors
+'http-invalid-url' => 'Невалиден адрес: $1',
+'http-invalid-scheme' => 'Не се поддържат URL адреси с префикс "$1".',
+'http-request-error' => 'HTTP заявката пропадна поради неизвестна грешка.',
+'http-read-error' => 'HTTP грешка при четене.',
+'http-timed-out' => 'Пресрочено време за HTTP заявка.',
+'http-curl-error' => 'Грешка при извличането на URL: $1',
+'http-host-unreachable' => 'Недостъпен URL.',
+'http-bad-status' => 'Настъпи проблем по време на HTTP заявката: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Не е възможно достигането на указания URL адрес',
@@ -1515,6 +1634,7 @@ $2',
'upload-curl-error28-text' => 'Сайтът не отговаря твърде дълго. Убедете се, че сайтът работи, изчакайте малко и опитайте отново. В краен случай опитайте през по-ненатоварено време.',
'license' => 'Лицензиране:',
+'license-header' => 'Лицензиране',
'nolicense' => 'Нищо не е избрано',
'license-nopreview' => '(Не е наличен предварителен преглед)',
'upload_source_url' => ' (правилен, публично достъпен интернет-адрес)',
@@ -1535,6 +1655,7 @@ $2',
'listfiles_count' => 'Версии',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'История на файла',
'filehist-help' => 'Избирането на дата/час ще покаже как е изглеждал файлът към онзи момент.',
'filehist-deleteall' => 'изтриване на всички',
@@ -1549,6 +1670,7 @@ $2',
'filehist-dimensions' => 'Размер',
'filehist-filesize' => 'Размер на файла',
'filehist-comment' => 'Коментар',
+'filehist-missing' => 'Липсващ файл',
'imagelinks' => 'Препратки към файла',
'linkstoimage' => '{{PLURAL:$1|Следната страница сочи|Следните $1 страници сочат}} към файла:',
'linkstoimage-more' => 'Към този файл {{PLURAL:$1|препраща|препращат}} повече от $1 {{PLURAL:$1|страница|страници}}.
@@ -1558,15 +1680,16 @@ $2',
'morelinkstoimage' => 'Можете да видите [[Special:WhatLinksHere/$1|още препратки]] към този файл.',
'redirectstofile' => '{{PLURAL:$1|Следният файл пренасочва|Следните $1 файла пренасочват}} към този файл:',
'duplicatesoffile' => '{{PLURAL:$1|Следният файл се повтаря|Следните $1 файла се повтарят}} с този файл ([[Special:FileDuplicateSearch/$2|повече подробности]]):',
-'sharedupload' => 'Този файл е от $1 и може да бъде използван от други проекти.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Разгледайте $1 за повече информация.',
-'shareduploadwiki-desc' => 'Следва описанието от $1.',
-'shareduploadwiki-linktext' => 'описателната страница на файла',
-'noimage' => 'Не съществува файл с това име, можете $1.',
-'noimage-linktext' => 'да го качите',
+'sharedupload' => 'Този файл е от $1 и може да бъде използван от други проекти.',
+'sharedupload-desc-there' => 'Този файл е от $1 и може да се използва от други проекти.
+За повече информация вижте [$2 описателната му страница].',
+'sharedupload-desc-here' => 'Този файл е от $1 и може да се използва от други проекти.
+Следва информация за файла, достъпна през [$2 оригиналната му описателна страница].',
+'filepage-nofile' => 'Не съществува файл с това име.',
+'filepage-nofile-link' => 'Не съществува файл с това име, но можете [$1 да го качите].',
'uploadnewversion-linktext' => 'Качване на нова версия на файла',
-'shared-repo-from' => 'от $1', # $1 is the repository name
-'shared-repo' => 'споделено хранилище', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'от $1',
+'shared-repo' => 'споделено хранилище',
# File reversion
'filerevert' => 'Възвръщане на $1',
@@ -1595,6 +1718,7 @@ $2',
** Нарушение на авторските права
** Файлът се повтаря',
'filedelete-edit-reasonlist' => 'Редактиране на причините за изтриване',
+'filedelete-maintenance' => 'Поради поддръжка на сайта, изтриването и възстановяването на файлове е временно ограничено.',
# MIME search
'mimesearch' => 'MIME-търсене',
@@ -1615,7 +1739,7 @@ $2',
# Random page
'randompage' => 'Случайна страница',
-'randompage-nopages' => 'В именно пространство „$1“ няма страници.',
+'randompage-nopages' => 'В {{PLURAL:$2|следното именно пространство|следните именни пространства}} няма страници: $1.',
# Random redirect
'randomredirect' => 'Случайно пренасочване',
@@ -1627,6 +1751,7 @@ $2',
'statistics-header-edits' => 'Статистики за редакциите',
'statistics-header-views' => 'Преглеждане на статистиките',
'statistics-header-users' => 'Потребители',
+'statistics-header-hooks' => 'Други статистики',
'statistics-articles' => 'Съдържателни страници',
'statistics-pages' => 'Страници',
'statistics-pages-desc' => 'Всички страници в уикито, включително дискусионни, пренасочващи страници и т.н.',
@@ -1654,8 +1779,8 @@ $2',
'brokenredirects' => 'Невалидни пренасочвания',
'brokenredirectstext' => 'Следните пренасочващи страници сочат към несъществуващи страници:',
-'brokenredirects-edit' => '(редактиране)',
-'brokenredirects-delete' => '(изтриване)',
+'brokenredirects-edit' => 'редактиране',
+'brokenredirects-delete' => 'изтриване',
'withoutinterwiki' => 'Страници без междуезикови препратки',
'withoutinterwiki-summary' => 'Следните страници не препращат към версии на други езици:',
@@ -1762,7 +1887,7 @@ $2',
# Special:Categories
'categories' => 'Категории',
-'categoriespagetext' => 'Следните категории съдържат страници или медийни файлове.
+'categoriespagetext' => '{{PLURAL:$1|Следната категория съдържа|Следните категории съдържат}} страници или медийни файлове.
[[Special:UnusedCategories|Неизползваните категории]] не са показани тук.
Вижте също списъка с [[Special:WantedCategories|желани категории]].',
'categoriesfrom' => 'Показване на категориите, като се започне от:',
@@ -1770,8 +1895,9 @@ $2',
'special-categories-sort-abc' => 'сортиране по азбучен ред',
# Special:DeletedContributions
-'deletedcontributions' => 'Изтрити приноси на потребител',
-'deletedcontributions-title' => 'Изтрити приноси на потребител',
+'deletedcontributions' => 'Изтрити приноси на потребител',
+'deletedcontributions-title' => 'Изтрити приноси на потребител',
+'sp-deletedcontributions-contribs' => 'приноси',
# Special:LinkSearch
'linksearch' => 'Външни препратки',
@@ -1786,6 +1912,16 @@ $2',
'listusersfrom' => 'Показване на потребителите, започвайки от:',
'listusers-submit' => 'Показване',
'listusers-noresult' => 'Няма намерени потребители.',
+'listusers-blocked' => '(блокиран)',
+
+# Special:ActiveUsers
+'activeusers' => 'Списък на активните потребители',
+'activeusers-intro' => 'Това е списък на потребителите, които са демонстрирали някаква активност през {{PLURAL:$1|последния|последните}} $1 {{PLURAL:$1|ден|дни}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|редакция|редакции}} за {{PLURAL:$3|последния ден|последните $3 дни}}',
+'activeusers-from' => 'Показване на потребителите, започвайки от:',
+'activeusers-hidebots' => 'Скриване на ботовете',
+'activeusers-hidesysops' => 'Скриване на администраторите',
+'activeusers-noresult' => 'Няма намерени потребители.',
# Special:Log/newusers
'newuserlogpage' => 'Дневник на регистрациите',
@@ -1796,16 +1932,22 @@ $2',
'newuserlog-autocreate-entry' => 'Автоматично създадена сметка',
# Special:ListGroupRights
-'listgrouprights' => 'Права по потребителски групи',
-'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
-'listgrouprights-group' => 'Група',
-'listgrouprights-rights' => 'Права',
-'listgrouprights-helppage' => 'Help:Права на групите',
-'listgrouprights-members' => '(списък на членовете)',
-'listgrouprights-addgroup' => 'Може да добавя {{PLURAL:$2|група|групи}}: $1',
-'listgrouprights-removegroup' => 'Може да премахва {{PLURAL:$2|група|групи}}: $1',
-'listgrouprights-addgroup-all' => 'Може да добавя всички групи',
-'listgrouprights-removegroup-all' => 'Може да премахва всички групи',
+'listgrouprights' => 'Права по потребителски групи',
+'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Поверено право</span>
+* <span class="listgrouprights-revoked">Отнето право</span>',
+'listgrouprights-group' => 'Група',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права на групите',
+'listgrouprights-members' => '(списък на членовете)',
+'listgrouprights-addgroup' => 'Може да добавя {{PLURAL:$2|група|групи}}: $1',
+'listgrouprights-removegroup' => 'Може да премахва {{PLURAL:$2|група|групи}}: $1',
+'listgrouprights-addgroup-all' => 'Може да добавя всички групи',
+'listgrouprights-removegroup-all' => 'Може да премахва всички групи',
+'listgrouprights-addgroup-self' => 'Може да добавя {{PLURAL:$2|група|групи}} към собствената сметка: $1',
+'listgrouprights-removegroup-self' => 'Може да премахва {{PLURAL:$2|група|групи}} от собствената си сметка: $1',
+'listgrouprights-addgroup-self-all' => 'Може да добавя всички групи към своята сметка',
+'listgrouprights-removegroup-self-all' => 'Може да премахва всички групи от собствената сметка',
# E-mail user
'mailnologin' => 'Няма електронна поща',
@@ -1879,26 +2021,30 @@ $2',
'enotif_anon_editor' => 'анонимен потребител $1',
'enotif_body' => 'Уважаеми(а) $WATCHINGUSERNAME,
-на $PAGEEDITDATE страницата „$PAGETITLE“ в {{SITENAME}} е била $CHANGEDORCREATED от $PAGEEDITOR.
-
-Текуща версия: $PAGETITLE_URL
+Страницата $PAGETITLE в {{SITENAME}} е била $CHANGEDORCREATED на $PAGEEDITDATE от $PAGEEDITOR. За текущата версия на страницата вижте $PAGETITLE_URL.
$NEWPAGE
-Кратко описание на измененията: $PAGESUMMARY $PAGEMINOREDIT
+Резюме на редакцията: $PAGESUMMARY $PAGEMINOREDIT
Връзка с редактора:
* електронна поща: $PAGEEDITOR_EMAIL
-* уики: $PAGEEDITOR_WIKI
+* уики страница: $PAGEEDITOR_WIKI
-Няма да ви се пращат други известявания за последващи изменения, докато не посетите страницата. На страницата със списъка ви за наблюдение можете да включите известяванията наведнъж за всички страници.
+Няма да получавате други известия за последващи промени, докато не посетите страницата.
+Можете да актуализиране настройките си за този вид известия за всички страници от вашия списък за наблюдение.
Системата за известяване на {{SITENAME}}
--
-За да промените настройките на списъка си за наблюдение, посетете {{fullurl:{{ns:special}}:Watchlist/edit}}
+За да промените настройките на списъка си за наблюдение, посетете
+{{fullurl:{{#special:Watchlist}}/edit}}
-Обратна връзка и помощ: {{fullurl:{{MediaWiki:Helppage}}}}',
+За да изтриете страницата от списъка си за наблюдение, посетете
+$UNWATCHURL
+
+За обратна връзка и помощ:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Изтриване',
@@ -1909,10 +2055,11 @@ $NEWPAGE
'exblank' => 'страницата беше празна',
'delete-confirm' => 'Изтриване на „$1“',
'delete-legend' => 'Изтриване',
-'historywarning' => 'Внимание: Страницата, която ще изтриете, има история:',
+'historywarning' => "'''Внимание:''' Страницата, която възнамерявате да изтриете, има история с приблизително $1 {{PLURAL:$1|редакция|редакции}}:",
'confirmdeletetext' => 'На път сте безвъзвратно да изтриете страница или файл, заедно с цялата прилежаща редакционна история, от базата от данни.
Потвърдете, че искате това, разбирате последствията и правите това в съответствие с [[{{MediaWiki:Policy-url}}|линията на поведение]].',
'actioncomplete' => 'Действието беше изпълнено',
+'actionfailed' => 'Действието не сполучи',
'deletedtext' => 'Страницата „<nowiki>$1</nowiki>“ беше изтрита. Вижте $2 за запис на последните изтривания.',
'deletedarticle' => 'изтри „[[$1]]“',
'suppressedarticle' => 'премахна „[[$1]]“',
@@ -1932,18 +2079,19 @@ $NEWPAGE
'delete-warning-toobig' => 'Тази страница има голяма редакционна история с над $1 {{PLURAL:$1|версия|версии}}. Възможно е изтриването да наруши някои операции в базата данни на {{SITENAME}}; необходимо е особено внимание при продължаване на действието.',
# Rollback
-'rollback' => 'Отмяна на промените',
-'rollback_short' => 'Отмяна',
-'rollbacklink' => 'отмяна',
-'rollbackfailed' => 'Отмяната не сполучи',
-'cantrollback' => 'Не може да се извърши отмяна на редакциите. Последният редактор е и единствен автор на страницата.',
-'alreadyrolled' => 'Редакцията на [[:$1]], направена от [[User:$2|$2]] ([[User talk:$2|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), не може да бъде отменена. Някой друг вече е редактирал страницата или е отменил промените.
+'rollback' => 'Отмяна на промените',
+'rollback_short' => 'Отмяна',
+'rollbacklink' => 'отмяна',
+'rollbackfailed' => 'Отмяната не сполучи',
+'cantrollback' => 'Не може да се извърши отмяна на редакциите. Последният редактор е и единствен автор на страницата.',
+'alreadyrolled' => 'Редакцията на [[:$1]], направена от [[User:$2|$2]] ([[User talk:$2|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), не може да бъде отменена. Някой друг вече е редактирал страницата или е отменил промените.
Последната редакция е на [[User:$3|$3]] ([[User talk:$3|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Резюмето на редакцията беше: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Премахване на [[Special:Contributions/$2|редакции на $2]] ([[User talk:$2|беседа]]); възвръщане към последната версия на [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Отменени редакции на $1; възвръщане към последната версия на $2.',
-'sessionfailure' => 'Изглежда има проблем със сесията ви; действието беше отказано като предпазна мярка срещу крадене на сесията. Натиснете бутона за връщане на браузъра, презаредете страницата, от която сте дошли, и опитайте отново.',
+'editcomment' => "Резюмето на редакцията беше: „''$1''“.",
+'revertpage' => 'Премахване на [[Special:Contributions/$2|редакции на $2]] ([[User talk:$2|беседа]]); възвръщане към последната версия на [[User:$1|$1]]',
+'revertpage-nouser' => 'Премахнати редакции на (отстранено потребителско име) и връщане към последната версия на [[User:$1|$1]]',
+'rollback-success' => 'Отменени редакции на $1; възвръщане към последната версия на $2.',
+'sessionfailure' => 'Изглежда има проблем със сесията ви; действието беше отказано като предпазна мярка срещу крадене на сесията. Натиснете бутона за връщане на браузъра, презаредете страницата, от която сте дошли, и опитайте отново.',
# Protect
'protectlogpage' => 'Дневник на защитата',
@@ -1960,7 +2108,7 @@ $NEWPAGE
'protectexpiry' => 'Изтича на:',
'protect_expiry_invalid' => 'Невалиден срок на изтичане.',
'protect_expiry_old' => 'Срокът на изтичане е минал.',
-'protect-unchain' => 'Позволяване на преместванията',
+'protect-unchain-permissions' => 'Позволяване на по-нататъшни възможности за защита',
'protect-text' => "Тук можете да прегледате и промените нивото на защита на страницата '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Не можете да променяте нивата на защита на страниците, докато сте блокиран(а). Текущите настройки за страницата „'''$1'''“ са:",
'protect-locked-dblock' => "Нивата на защита на страниците не могат да бъдат променяни, защото базата от данни е заключена. Ето текущите настройки за страницата „'''$1'''“:",
@@ -1986,7 +2134,7 @@ $NEWPAGE
** Редакторска война
** Страница, изискваща много сървърни ресурси',
'protect-edit-reasonlist' => 'Редактиране на причините за защита',
-'protect-expiry-options' => 'един час:1 hour,един ден:1 day,една седмица:1 week,две седмици:2 weeks,един месец:1 month,три месеца:3 months,шест месеца:6 months,една година:1 year,безсрочно:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'един час:1 hour,един ден:1 day,една седмица:1 week,две седмици:2 weeks,един месец:1 month,три месеца:3 months,шест месеца:6 months,една година:1 year,безсрочно:infinite',
'restriction-type' => 'Състояние на защитата:',
'restriction-level' => 'Ниво на защитата:',
'minimum-size' => 'Минимален размер',
@@ -2024,6 +2172,7 @@ $NEWPAGE
'undelete-nodiff' => 'Не е открита предишна редакция.',
'undeletebtn' => 'Възстановяване',
'undeletelink' => 'преглед/възстановяване',
+'undeleteviewlink' => 'преглеждане',
'undeletereset' => 'Изчистване',
'undeleteinvert' => 'Обръщане на избора',
'undeletecomment' => 'Причина:',
@@ -2061,19 +2210,24 @@ $1',
'contributions-title' => 'Потребителски приноси за $1',
'mycontris' => 'Моите приноси',
'contribsub2' => 'За $1 ($2)',
-'nocontribs' => 'Не са намерени промени, отговарящи на критерия.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Не са намерени промени, отговарящи на критерия.',
'uctop' => ' (последна)',
'month' => 'Месец:',
'year' => 'Година:',
-'sp-contributions-newbies' => 'Показване само на приносите на нови потребители',
-'sp-contributions-newbies-sub' => 'на нови потребители',
-'sp-contributions-newbies-title' => 'Потребителски приноси за нови сметки',
-'sp-contributions-blocklog' => 'Дневник на блокиранията',
-'sp-contributions-logs' => 'дневници',
-'sp-contributions-search' => 'Търсене на приноси',
-'sp-contributions-username' => 'IP-адрес или потребителско име:',
-'sp-contributions-submit' => 'Търсене',
+'sp-contributions-newbies' => 'Показване само на приносите на нови потребители',
+'sp-contributions-newbies-sub' => 'на нови потребители',
+'sp-contributions-newbies-title' => 'Потребителски приноси за нови сметки',
+'sp-contributions-blocklog' => 'Дневник на блокиранията',
+'sp-contributions-deleted' => 'изтрити приноси на потребител',
+'sp-contributions-logs' => 'дневници',
+'sp-contributions-talk' => 'беседа',
+'sp-contributions-userrights' => 'управление на потребителските права',
+'sp-contributions-blocked-notice' => 'Потребителят понастоящем е блокиран.
+За справка по-долу е показан последния запис за него от дневника на блокиранията:',
+'sp-contributions-search' => 'Търсене на приноси',
+'sp-contributions-username' => 'IP-адрес или потребителско име:',
+'sp-contributions-submit' => 'Търсене',
# What links here
'whatlinkshere' => 'Какво сочи насам',
@@ -2096,6 +2250,7 @@ $1',
# Block/unblock
'blockip' => 'Блокиране',
+'blockip-title' => 'Блокиране на потребител',
'blockip-legend' => 'Блокиране на потребител',
'blockiptext' => 'Формулярът по-долу се използва за да се забрани правото на писане
на определен IP-адрес или потребител.
@@ -2121,7 +2276,7 @@ $1',
'ipbenableautoblock' => 'Автоматично блокиране на последния IP-адрес, използван от потребителя, както и на всички останали адреси, от които се опита да редактира',
'ipbsubmit' => 'Блокиране на потребителя',
'ipbother' => 'Друг срок:',
-'ipboptions' => 'два часа:2 hours,един ден:1 day,три дни:3 days,една седмица:1 week,две седмици:2 weeks,един месец:1 month,три месеца:3 months,шест месеца:6 months,една година:1 year,безсрочно:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'два часа:2 hours,един ден:1 day,три дни:3 days,една седмица:1 week,две седмици:2 weeks,един месец:1 month,три месеца:3 months,шест месеца:6 months,една година:1 year,безсрочно:infinite',
'ipbotheroption' => 'друг',
'ipbotherreason' => 'Друга/допълнителна причина:',
'ipbhidename' => 'Скриване на потребителското име/IP-адреса от редакциите и дневниците',
@@ -2150,9 +2305,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 временни блокирания',
'ipblocklist-sh-addressblocks' => '$1 блокирани отделни IP-адреса',
'ipblocklist-submit' => 'Търсене',
+'ipblocklist-localblock' => 'Локално блокиране',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокиране|Други блокирания}}',
'blocklistline' => '$1, $2 е блокирал $3 ($4)',
'infiniteblock' => 'неограничено',
-'expiringblock' => 'изтича на $1',
+'expiringblock' => 'изтича на $1 в $2',
'anononlyblock' => 'само анон.',
'noautoblockblock' => 'автоблокировката е изключена',
'createaccountblock' => 'създаването на сметки е блокирано',
@@ -2166,7 +2323,10 @@ $1',
'contribslink' => 'приноси',
'autoblocker' => 'Бяхте блокиран автоматично, тъй като неотдавна IP-адресът ви е бил ползван от блокирания в момента потребител [[User:$1|$1]]. Причината за неговото блокиране е: „$2“.',
'blocklogpage' => 'Дневник на блокиранията',
-'blocklog-fulllog' => 'Пълен дневник на блокиранията',
+'blocklog-showlog' => 'Потребителят е бил блокиран в миналото.
+За справка по-долу е дадено извлечение от дневника на блокиранията:',
+'blocklog-showsuppresslog' => 'Потребителят е бил блокиран и прикриван в миналото.
+За справка по-долу е дадено извлечение от дневника на прикриванията:',
'blocklogentry' => 'блокира [[$1]] със срок на изтичане $2 $3',
'reblock-logentry' => 'промени параметрите на блокирането на [[$1]] със срок на изтричане $2 $3',
'blocklogtext' => 'Тази страница съдържа дневник на блокиранията и отблокиранията, извършени от този потребител.
@@ -2187,9 +2347,11 @@ $1',
'ipb_already_blocked' => '„$1“ е вече блокиран',
'ipb-needreblock' => '== Вече е блокиран ==
$1 е вече блокиран. Желаете ли да промените настройките?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокиране|Други блокирания}}',
'ipb_cant_unblock' => 'Грешка: Не е намерен блок с номер $1. Вероятно потребителят е вече отблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP-адресът $1 не може да бъде разблокиран, тъй като е част от блокирания регистър $2. Можете да разблокирате адреса, като разблокирате целия регистър.',
'ip_range_invalid' => 'Невалиден интервал за IP-адреси.',
+'ip_range_toolarge' => 'Забранено е блокиране на диапазони от IP адреси по-големи от /$1.',
'blockme' => 'Самоблокиране',
'proxyblocker' => 'Блокировач на проксита',
'proxyblocker-disabled' => 'Тази функция е деактивирана.',
@@ -2198,6 +2360,7 @@ $1 е вече блокиран. Желаете ли да промените н
'sorbsreason' => 'IP-адресът ви е записан като анонимно достъпен междинен сървър в DNSBL на {{SITENAME}}.',
'sorbs_create_account_reason' => 'IP-адресът ви е записан като анонимно достъпен междинен сървър в DNSBL на {{SITENAME}}. Не може да създадете сметка.',
'cant-block-while-blocked' => 'Не можете да блокирате други потребители, докато сам(а) сте блокиран(а).',
+'cant-see-hidden-user' => 'Потребителят, който опитвате да блокирате, вече е блокиран и скрит. Тъй като нямате права да скривате потребители, не можете да видите или редактирате блокирането на потребителя.',
# Developer tools
'lockdb' => 'Заключване на базата от данни',
@@ -2237,6 +2400,7 @@ $1 е вече блокиран. Желаете ли да промените н
В тези случаи, ако желаете, ще е необходимо да преместите страницата ръчно.",
'movearticle' => 'Преместване на страница:',
+'moveuserpage-warning' => "'''Внимание:''' Предприели сте опит да преместите потребителска страница. Забележете, че от преместването на страницата '''няма''' да последва преименуване на потребителя.",
'movenologin' => 'Не сте влезли',
'movenologintext' => 'Необходимо е да [[Special:UserLogin|влезете]], за да може да премествате страници.',
'movenotallowed' => 'Нямате права за преместване на страници.',
@@ -2247,7 +2411,7 @@ $1 е вече блокиран. Желаете ли да промените н
'move-watch' => 'Наблюдаване на страницата',
'movepagebtn' => 'Преместване',
'pagemovedsub' => 'Преместването беше успешно',
-'movepage-moved' => "'''Страницата „$1“ беше преместена под името „$2“.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Страницата „$1“ беше преместена под името „$2“.'''",
'movepage-moved-redirect' => 'Беше създадено пренасочване.',
'movepage-moved-noredirect' => 'Създаването на пренасочване беше спряно.',
'articleexists' => 'Вече съществува страница с това име или името, което сте избрали, е невалидно. Изберете друго име.',
@@ -2288,6 +2452,14 @@ $1 е вече блокиран. Желаете ли да промените н
'imageinvalidfilename' => 'Целевото име на файл е невалидно',
'fix-double-redirects' => 'Обновяване на всички двойни пренасочвания, които сочат към оригиналното заглавие',
'move-leave-redirect' => 'Оставяне на пренасочваща страница от старото към новото заглавие',
+'protectedpagemovewarning' => "'''Внимание:''' Тази страница е защитена и само потребители със статут на администратори могат да я преместят.
+За справка по-долу е показан последният запис от дневниците.",
+'semiprotectedpagemovewarning' => "'''Внимание:''' Тази страница е защитена и само регистрирани потребители могат да я преместят.
+За справка по-долу е показан последният запис от дневниците.",
+'move-over-sharedrepo' => '== Файлът вече съществува ==
+[[:$1]] вече съществува в споделеното хранилище. Преместване на файл с това заглавие ще замени споделения файл.',
+'file-exists-sharedrepo' => 'Избраното име на файл вече се използва от файл в сопделеното хранилище.
+Необходимо е да изберете друго име.',
# Export
'export' => 'Изнасяне на страници',
@@ -2309,15 +2481,21 @@ $1 е вече блокиран. Желаете ли да промените н
'export-pagelinks' => 'Включване на свързаните страници с дълбочина до:',
# Namespace 8 related
-'allmessages' => 'Системни съобщения',
-'allmessagesname' => 'Име',
-'allmessagesdefault' => 'Текст по подразбиране',
-'allmessagescurrent' => 'Текущ текст',
-'allmessagestext' => 'Тази страница съдържа списък на системните съобщения от именното пространство „МедияУики“.
+'allmessages' => 'Системни съобщения',
+'allmessagesname' => 'Име',
+'allmessagesdefault' => 'Текст по подразбиране',
+'allmessagescurrent' => 'Текущ текст',
+'allmessagestext' => 'Тази страница съдържа списък на системните съобщения от именното пространство „МедияУики“.
Посетете [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] и [http://translatewiki.net translatewiki.net], ако желаете да допринесете за общата локализация на софтуера МедияУики.',
-'allmessagesnotsupportedDB' => "Тази страница не може да бъде използвана, тъй като е изключена възможността '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Филтриране на съобщенията по име:',
-'allmessagesmodified' => 'Показване само на променените',
+'allmessagesnotsupportedDB' => "Тази страница не може да бъде използвана, тъй като е изключена възможността '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Филтър',
+'allmessages-filter' => 'Филтриране по ниво на персонализация:',
+'allmessages-filter-unmodified' => 'Непроменени',
+'allmessages-filter-all' => 'Всички',
+'allmessages-filter-modified' => 'Променени',
+'allmessages-prefix' => 'Филтриране по представка:',
+'allmessages-language' => 'Език:',
+'allmessages-filter-submit' => 'Отваряне',
# Thumbnails
'thumbnail-more' => 'Увеличаване',
@@ -2327,6 +2505,9 @@ $1 е вече блокиран. Желаете ли да промените н
'djvu_no_xml' => 'Не е възможно вземането на XML за DjVu-файла',
'thumbnail_invalid_params' => 'Параметрите за миникартинка са невалидни',
'thumbnail_dest_directory' => 'Целевата директория не може да бъде създадена',
+'thumbnail_image-type' => 'Типът картинка не се поддържа',
+'thumbnail_gd-library' => 'Непълна конфугурация на библиотеката GD: липсва функцията $1',
+'thumbnail_image-missing' => 'Изглежда следният файл липсва: $1',
# Special:Import
'import' => 'Внасяне на страници',
@@ -2390,6 +2571,7 @@ $1 е вече блокиран. Желаете ли да промените н
'tooltip-ca-viewsource' => 'Страницата е защитена. Можете да разгледате изходния й код.',
'tooltip-ca-history' => 'Предишни версии на страницата',
'tooltip-ca-protect' => 'Защитаване на страницата',
+'tooltip-ca-unprotect' => 'Сваляне на защитата от тази страница',
'tooltip-ca-delete' => 'Изтриване на страницата',
'tooltip-ca-undelete' => 'Възстановяване на изтрити редакции на страницата',
'tooltip-ca-move' => 'Преместване на страницата',
@@ -2400,6 +2582,7 @@ $1 е вече блокиран. Желаете ли да промените н
'tooltip-search-fulltext' => 'Търсене в страниците за този текст',
'tooltip-p-logo' => 'Началната страница',
'tooltip-n-mainpage' => 'Началната страница',
+'tooltip-n-mainpage-description' => 'Посещаване на началната страница',
'tooltip-n-portal' => 'Информация за проекта — какво, къде, как',
'tooltip-n-currentevents' => 'Информация за текущите събития по света',
'tooltip-n-recentchanges' => 'Списък на последните промени в {{SITENAME}}',
@@ -2453,10 +2636,12 @@ $1 е вече блокиран. Желаете ли да промените н
# Attribution
'anonymous' => '{{PLURAL:$1|Анонимен потребител|Анонимни потребители}}на {{SITENAME}}',
'siteuser' => 'потребител на {{SITENAME}} $1',
-'lastmodifiedatby' => 'Последната промяна на страницата е извършена от $3 на $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'Анонимен потребител на {{SITENAME}} $1',
+'lastmodifiedatby' => 'Последната промяна на страницата е извършена от $3 на $2, $1.',
'othercontribs' => 'Основаващо се върху работа на $1.',
'others' => 'други',
'siteusers' => '{{PLURAL:$2|потребителят|потребителите}} на {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|Анонимен потребител|Анонимни потребители}} на {{SITENAME}} $1',
'creditspage' => 'Библиография и източници',
'nocredits' => 'Няма въведени източници или библиография.',
@@ -2494,11 +2679,22 @@ $1 е вече блокиран. Желаете ли да промените н
'mw_math_modern' => 'Препоръчително за нови браузъри',
'mw_math_mathml' => 'MathML по възможност (експериментално)',
+# Math errors
+'math_failure' => 'Неуспех при разбора',
+'math_unknown_error' => 'непозната грешка',
+'math_unknown_function' => 'непозната функция',
+'math_lexing_error' => 'лексикална грешка',
+'math_syntax_error' => 'синтактична грешка',
+'math_image_error' => 'Превръщането към PNG не сполучи. Проверете дали latex, dvips, gs и convert са правилно инсталирани.',
+'math_bad_tmpdir' => 'Невъзможно е писането във или създаването на временна директория за математическите операции',
+'math_bad_output' => 'Невъзможно е писането във или създаването на изходяща директория за математическите операции',
+'math_notexvc' => 'Липсва изпълнимият файл на texvc. Прегледайте math/README за информация относно конфигурирането.',
+
# Patrolling
'markaspatrolleddiff' => 'Отбелязване като проверена редакция',
'markaspatrolledtext' => 'Отбелязване на редакцията като проверена',
'markedaspatrolled' => 'Проверена редакция',
-'markedaspatrolledtext' => 'Избраната редакция беше отбелязана като проверена.',
+'markedaspatrolledtext' => 'Избраната редакция на [[:$1]] беше отбелязана като патрулирана.',
'rcpatroldisabled' => 'Патрулът е деактивиран',
'rcpatroldisabledtext' => 'Патрулът на последните промени е деактивиран',
'markedaspatrollederror' => 'Не е възможно да се отбележи като проверена',
@@ -2528,12 +2724,9 @@ $1',
'previousdiff' => '← По-стара редакция',
'nextdiff' => 'По-нова редакция →',
-# Visual comparison
-'visual-comparison' => 'Визуално сравняване',
-
# Media information
'mediawarning' => "'''Внимание''': Възможно е файлът да съдържа злонамерен програмен код. Неговото изпълнение може да доведе до повреди в системата ви.",
-'imagemaxsize' => 'Ограничаване на картинките на описателните им страници до:',
+'imagemaxsize' => "Ограничение на размерите на картинките:<br />''(само за описателните страници)''",
'thumbsize' => 'Размери на миникартинките:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|страница|страници}}',
'file-info' => '(големина на файла: $1, MIME-тип: $2)',
@@ -2542,6 +2735,8 @@ $1',
'svg-long-desc' => '(Файл във формат SVG, основен размер: $1 × $2 пиксела, големина на файла: $3)',
'show-big-image' => 'Пълна разделителна способност',
'show-big-image-thumb' => '<small>Размер на предварителния преглед: $1 × $2 пиксела</small>',
+'file-info-gif-looped' => 'зациклен',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадър|кадъра}}',
# Special:NewFiles
'newimages' => 'Галерия на новите файлове',
@@ -2572,7 +2767,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2699,14 +2894,14 @@ $1',
'exif-unknowndate' => 'Неизвестна дата',
-'exif-orientation-1' => 'Нормално', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Отражение по хоризонталата', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Обърнато на 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Отражение по вертикалата', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Обърнато на 90° срещу часовниковата стрелка и отразено по вертикалата', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Обърнато на 90° по часовниковата стрелка', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Обърнато на 90° по часовниковата стрелка и отразено по вертикалата', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Обърнато на 90° срещу часовниковата стрелка', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нормално',
+'exif-orientation-2' => 'Отражение по хоризонталата',
+'exif-orientation-3' => 'Обърнато на 180°',
+'exif-orientation-4' => 'Отражение по вертикалата',
+'exif-orientation-5' => 'Обърнато на 90° срещу часовниковата стрелка и отразено по вертикалата',
+'exif-orientation-6' => 'Обърнато на 90° по часовниковата стрелка',
+'exif-orientation-7' => 'Обърнато на 90° по часовниковата стрелка и отразено по вертикалата',
+'exif-orientation-8' => 'Обърнато на 90° срещу часовниковата стрелка',
'exif-planarconfiguration-1' => 'формат „chunky“',
'exif-planarconfiguration-2' => 'формат „planar“',
@@ -2831,7 +3026,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Двуизмерно измерване',
'exif-gpsmeasuremode-3' => 'Триизмерно измерване',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'км/час',
'exif-gpsspeed-m' => 'мили/час',
'exif-gpsspeed-n' => 'възли',
@@ -2850,6 +3045,7 @@ $1',
'watchlistall2' => 'всички',
'namespacesall' => 'Всички',
'monthsall' => 'всички',
+'limitall' => 'всички',
# E-mail address confirmation
'confirmemail' => 'Потвърждаване на адрес за електронна поща',
@@ -2969,7 +3165,7 @@ $1',
'duplicate-defaultsort' => 'Внимание: Ключът за сортиране по подразбиране „$2“ отменя по-ранния ключ „$1“.',
# Special:Version
-'version' => 'Версия', # Not used as normal message but as header for the special page itself
+'version' => 'Версия',
'version-extensions' => 'Инсталирани разширения',
'version-specialpages' => 'Специални страници',
'version-parserhooks' => 'Куки в парсера',
@@ -2983,7 +3179,7 @@ $1',
'version-skin-extension-functions' => 'Функции на разширения за облици',
'version-hook-name' => 'Име на куката',
'version-hook-subscribedby' => 'Ползвана от',
-'version-version' => 'Версия',
+'version-version' => '(Версия $1)',
'version-license' => 'Лиценз',
'version-software' => 'Инсталиран софтуер',
'version-software-product' => 'Продукт',
@@ -3061,4 +3257,15 @@ $1',
'dberr-outofdate' => 'Имайте предвид, че индексираното от Гугъл наше съдържание може вече да е неактуално.',
'dberr-cachederror' => 'Следва складирано копие на поисканата страница. Възможно е складираното копие да не е актуално.',
+# HTML forms
+'htmlform-invalid-input' => 'Има проблеми с част от въведения от вас вход',
+'htmlform-select-badoption' => 'Посочената от вас стойност не е валидна алтернатива.',
+'htmlform-int-invalid' => 'Въведената от вас стойност не е цяло число.',
+'htmlform-float-invalid' => 'Посочената стойност не е число.',
+'htmlform-int-toolow' => 'Посочената от вас стойност е под минимално допустимата $1.',
+'htmlform-int-toohigh' => 'Посочената от вас стойност надхвърля максимално допустимата $1.',
+'htmlform-submit' => 'Изпращане',
+'htmlform-reset' => 'Отказване на промените',
+'htmlform-selectorother-other' => 'Друга',
+
);
diff --git a/languages/messages/MessagesBh.php b/languages/messages/MessagesBh.php
index 2ed3bf85..fb6185b1 100644
--- a/languages/messages/MessagesBh.php
+++ b/languages/messages/MessagesBh.php
@@ -75,8 +75,12 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|श्रेणी|श्रेणी}}',
-'newwindow' => '(नया विंडो में खोलीं)',
-'cancel' => 'निरस्त',
+'newwindow' => '(नया विंडो में खोलीं)',
+'cancel' => 'निरस्त',
+'mytalk' => 'हमार बात',
+'navigation' => 'परिभ्रमण',
+
+# Cologne Blue skin
'qbfind' => 'खोज',
'qbbrowse' => 'ब्राउज',
'qbedit' => 'सम्पादन',
@@ -84,8 +88,10 @@ $messages = array(
'qbpageinfo' => 'प्रसंग',
'qbmyoptions' => 'हमार पन्ना',
'qbspecialpages' => 'विशेष पन्ना',
-'mytalk' => 'हमार बात',
-'navigation' => 'परिभ्रमण',
+
+# Vector skin
+'vector-action-delete' => 'मिटाईं',
+'vector-action-move' => 'स्थांतरण',
'tagline' => '{{SITENAME}} कि ओर से',
'help' => 'मदद',
@@ -123,11 +129,16 @@ $messages = array(
'otherlanguages' => 'अन्य भाषा में',
'redirectedfrom' => '($1 द्वारा पुन: निर्देशित)',
'redirectpagesub' => 'पुन: निर्देशित पन्ना',
-'lastmodifiedat' => '$1 के $2 पर ई पन्ना पर अन्तिम बार परिवर्तन भईल।', # $1 date, $2 time
+'lastmodifiedat' => '$1 के $2 पर ई पन्ना पर अन्तिम बार परिवर्तन भईल।',
'protectedpage' => 'सुरक्षित पन्ना',
'jumpto' => 'अहिजा जाईं:',
'jumptonavigation' => 'परिभ्रमण',
'jumptosearch' => 'खोजीं',
+'view-pool-error' => 'क्षमा करीं, ई समय सर्वर पर बहुत ज्यादा लोड बढ़ गईल बा।
+ई पन्ना के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बानी।
+ई पन्ना के फिर से देखे से पहिले कृपया कुछ देर तक इन्तजार करीं।
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} के बारे में',
@@ -203,6 +214,7 @@ $messages = array(
'nav-login-createaccount' => 'खाता प्रवेश / खाता बनाईं',
'loginprompt' => '{{SITENAME}} में प्रवेश खातिर राउर कुकिज चालू होवे के चाहीं',
'userlogin' => 'खाता प्रवेश / खाता बनाईं',
+'userloginnocreate' => 'खाता में प्रवेश',
'logout' => 'खाता से बाहर',
'userlogout' => 'खाता से बाहर',
'notloggedin' => 'खाता में प्रवेश नईखीं भईल',
@@ -215,6 +227,7 @@ $messages = array(
'badretype' => 'रउआ जौन गुप्त शब्द डालत बानी उ नईखे मेल खात।',
'userexists' => 'ई प्रयोगकर्ता नाम पहिले से इस्तेमाल में बा। कृपया कौनो दोसर नाम चुनीं।',
'loginerror' => 'खाता प्रवेश में त्रुटि',
+'createaccounterror' => 'ई खाता ना बन पाईल: $1',
'nocookiesnew' => 'प्रयोगकर्ता खाता त बन गईल, बाँकी रउआ प्रवेश नईखीं भईल।
{{SITENAME}} प्रयोगकर्ता लोग के खाता में प्रवेश करावे खातिर कुकिज के प्रयोग करेला।
राउर कुकिज असक्षम बा।
@@ -231,9 +244,12 @@ $messages = array(
'nosuchusershort' => 'ई नाम से कौनो प्रयोगकर्ता नईखन "<nowiki>$1</nowiki>".
आपन शब्द-वर्तनी के जाँच करीं।',
'nouserspecified' => 'रउआ एगो प्रयोगकर्ता नाम निर्दिष्ट करे के बा।',
+'login-userblocked' => 'ई प्रयोगकर्ता के खाता निष्क्रिय हो चुकल बा। प्रवेश के आज्ञा नईखे।',
'wrongpassword' => 'गलत गुप्त-शब्द डलले बानी।
कृपया फिर से कोशिश करीं।',
'wrongpasswordempty' => 'गुप्त-शब्द खाली बा। कृपया फिर से कोशिश करीं।',
+'passwordtooshort' => 'गुप्त-शब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षर}} के होवे के चाहीं।',
+'password-name-match' => 'राउर गुप्त-शब्द राउर प्रयोगकर्ता नाम से अलग होवे के चाहीं।',
'mailmypassword' => 'नया गुप्त-शब्द ई-मेल पर भेजीं',
'passwordremindertitle' => '{{SITENAME}} खातिर नया अस्थायी गुप्त-शब्द',
@@ -262,6 +278,8 @@ $messages = array(
'yourdiff' => 'अंतर',
# History pages
+'revisionasof' => '$1 के रुप में संशोधन',
+'revision-info' => '$2 में से $1 के रुप में संशोधन',
'previousrevision' => '← पुरान संशोधन',
'nextrevision' => 'नया संशोधन →',
'currentrevisionlink' => 'हाल के संशोधन',
@@ -273,22 +291,27 @@ $messages = array(
'histlegend' => "चुनाव अन्तर: तुलना करे खातिर संशोधन के रेडियो बटन पर निशान लगाईं आ enter बटन दबाईं आ चाहे निचला बटन दबाईं।<br />
Legend: '''({{int:cur}})''' = हाल के संशोधन के साथ अंतर, '''({{int:last}})''' = पुर्ववर्ती संशोधन के साथ अंतर, '''{{int:minoreditletter}}''' = छोट सम्पादन।",
'history-fieldset-title' => 'इतिहास निहारीं',
+'history-show-deleted' => 'खाली मेटावल',
'histfirst' => 'बहुत पहिले के',
'histlast' => 'हाल के',
'historysize' => '({{PLURAL:$1|1 बाइट|$1 बाइट}})',
'historyempty' => '(खाली)',
# Revision feed
-'history-feed-title' => 'संशोधन इतिहास',
-'history-feed-description' => 'विकि पर इ पन्ना के संशोधन के इतिहास',
-'history-feed-empty' => 'अनुरोध करल गईल पन्ना उपलब्ध नईखे। हो सकत बा उ के विकि पर से मिटा दिहल गईल होखे, आ चाहे उ के नाम बदल देवल गईल होखे।
+'history-feed-title' => 'संशोधन इतिहास',
+'history-feed-description' => 'विकि पर इ पन्ना के संशोधन के इतिहास',
+'history-feed-item-nocomment' => '$1 $2 पर',
+'history-feed-empty' => 'अनुरोध करल गईल पन्ना उपलब्ध नईखे। हो सकत बा उ के विकि पर से मिटा दिहल गईल होखे, आ चाहे उ के नाम बदल देवल गईल होखे।
प्रासंगिक पन्ना के [[Special:Search|विकि पर खोजे के]] कोशिश करत रहीं।',
# Revision deletion
-'rev-deleted-comment' => '(टिप्पणी मिटा दिहल गईल बा)',
-'rev-deleted-user' => '(प्रयोगकर्ता के नाम मिटा दिहल गईल बा)',
-'rev-deleted-event' => '(लॉग कार्रवाई मिटा दिहल गईल बा)',
-'rev-delundel' => 'दिखाईं/छुपाईं',
+'rev-deleted-comment' => '(टिप्पणी मिटा दिहल गईल बा)',
+'rev-deleted-user' => '(प्रयोगकर्ता के नाम मिटा दिहल गईल बा)',
+'rev-deleted-event' => '(लॉग कार्रवाई मिटा दिहल गईल बा)',
+'rev-deleted-user-contribs' => '[प्रयोगकर्ता नाम आ चाहे आइ पी पता हटा दिहल गईल बा - योगदान से सम्पादन छुप गईल बा]',
+'rev-deleted-text-permission' => "ई पन्ना के संशोधन '''मिटा'''' दिहल गईल बा।
+मेटावल जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} डिलेशन लॉग] में मिली।",
+'rev-delundel' => 'दिखाईं/छुपाईं',
# Diffs
'lineno' => 'पंक्ति $1:',
@@ -298,6 +321,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'searchresults' => 'खोज परिणाम',
'searchresults-title' => '$1 खातिर खोज परिणाम',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर राउर करल गईल खोज ([[Special:Prefixindex/$1| "$1" से शुरु होवे वाला सब पन्ना]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
+'viewprevnext' => 'देखीं ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 शब्द|$2 शब्द}})',
'search-result-score' => 'प्रासंगिकता: $1%',
'search-redirect' => '(पुन: निर्देशण $1)',
@@ -310,6 +334,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'search-mwsuggest-disabled' => 'कौनो सुझाव ना',
'search-relatedarticle' => 'संबंधित',
'mwsuggest-disable' => 'AJAX सुझाव असक्षम',
+'searcheverything-enable' => 'सभन सन्दर्भ में खोजीं',
'searchrelated' => 'संबंधित',
'searchall' => 'सब',
'showingresults' => "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
@@ -322,6 +347,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'prefsnologin' => 'खाता में प्रवेश नईखीं कईले',
'changepassword' => 'गुप्त शब्द बदलीं',
'skin-preview' => 'पूर्वावलोकन',
+'prefs-math' => 'गणित',
'prefs-rc' => 'तुरंत भईल परिवर्तन',
# Recent changes
@@ -349,6 +375,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'filehist-user' => 'प्रयोगकर्ता',
'filehist-filesize' => 'फाईल के आकार',
'filehist-comment' => 'टिप्पणी',
+'filehist-missing' => 'गायब फाईल',
'imagelinks' => 'फाईल लिंक',
# Random page
@@ -383,16 +410,21 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'contributions' => 'प्रयोगकर्ता योगदान',
'contributions-title' => ' $1 खातिर प्रयोगकर्ता योगदान',
'mycontris' => 'हमार योगदान',
-'nocontribs' => 'ई मानदंड से मिलत जुलत कौनो बदलाव ना मिलल।', # Optional parameter: $1 is the user name
+'nocontribs' => 'ई मानदंड से मिलत जुलत कौनो बदलाव ना मिलल।',
'uctop' => '(शीर्ष)',
'month' => 'महिना से (आ उ से पहिले):',
'year' => 'साल से (आ उ से पहिले):',
-'sp-contributions-newbies' => 'खाली नया खाता के योगदान देखीं।',
-'sp-contributions-newbies-sub' => 'नया खाता खातिर',
-'sp-contributions-newbies-title' => 'नया खाता खातिर प्रयोगकर्ता के योगदान।',
-'sp-contributions-blocklog' => 'निष्क्रीय खाता',
-'sp-contributions-logs' => 'लौग',
+'sp-contributions-newbies' => 'खाली नया खाता के योगदान देखीं।',
+'sp-contributions-newbies-sub' => 'नया खाता खातिर',
+'sp-contributions-newbies-title' => 'नया खाता खातिर प्रयोगकर्ता के योगदान।',
+'sp-contributions-blocklog' => 'निष्क्रीय खाता',
+'sp-contributions-deleted' => 'नष्ट प्रयोगकर्ता के योगदान।',
+'sp-contributions-logs' => 'लौग',
+'sp-contributions-talk' => 'बात-चीत',
+'sp-contributions-userrights' => 'प्रयोगकर्ता अधिकार प्रबन्धन',
+'sp-contributions-blocked-notice' => 'ई प्रयोगकर्ता के ई समय निष्क्रीय करल गईल बा।
+नविनतम नष्ट लौग प्रविष्टी उद्धरण खातिर निचे दिहल बा:',
# What links here
'whatlinkshere' => 'अहिजा का जुड़ी',
@@ -422,31 +454,32 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
'movepagebtn' => 'पन्ना स्थांतरण करीं',
# Tooltip help for the actions
-'tooltip-pt-login' => 'रउआ के खाता प्रवेश खातिर प्रोत्साहित करल जा रहल बा, बाँकि ई अनिवार्य नईखे',
-'tooltip-ca-talk' => 'सामग्री पन्ना के बारे में बात-चीत',
-'tooltip-ca-edit' => 'रउआ ई पन्ना के सम्पादन कर सकत बानी। कृपया पन्ना सुरक्षित करे से पहिले पूर्वावलोकन बटन के इस्तेमाल करीं।',
-'tooltip-ca-history' => 'ई पन्ना के पिछला संशोधन',
-'tooltip-ca-delete' => 'ई पन्ना मिटाईं',
-'tooltip-ca-move' => 'ई पन्ना के स्थांतरण करीं',
-'tooltip-search' => '{{SITENAME}} खोजीं',
-'tooltip-search-go' => 'यदि पन्ना मौजूद होई त ईहे सटीक नाम के साथ उ पन्ना पर जाईं',
-'tooltip-search-fulltext' => 'ई पाठ्य खातिर पन्ना खोजीं',
-'tooltip-p-logo' => 'मुख्य पन्ना पर जाईं',
-'tooltip-n-mainpage' => 'मुख्य पन्ना पर जाईं',
-'tooltip-n-portal' => 'परियोजना के बारे मेँ, रउआ का कर सकत बानी, वस्तु कहाँ खोजब',
-'tooltip-n-currentevents' => 'वर्तमान के घटना पर पृष्ठभूमी जानकारी खोजीं',
-'tooltip-n-recentchanges' => 'विकि पर तुरंत भईल परिवर्तन के सूची',
-'tooltip-n-randompage' => 'बेतरतिब पन्ना लादीं (Load करीं)',
-'tooltip-n-help' => 'जगह पता लगावे खातिर',
-'tooltip-t-whatlinkshere' => 'अहिजा लिंक होखे वाला सब विकि पन्ना के सूची',
-'tooltip-t-recentchangeslinked' => 'ई पन्ना से जुड़ल पन्नवन पर तुरंत भईल परिवर्तन',
-'tooltip-t-upload' => 'फाईल लादीं (अपलोड )',
-'tooltip-t-specialpages' => 'ख़ाश पन्नवन के सूची',
-'tooltip-t-print' => 'ई पन्ना के छापे लायक संस्करण।',
-'tooltip-t-permalink' => 'ई पन्ना के संसोधन खातिर स्थायी लिंक।',
-'tooltip-ca-nstab-main' => 'सामग्री पन्ना देखीं',
-'tooltip-ca-nstab-special' => 'ई एगो ख़ाश पन्ना ह, रउआ ई पन्ना के सम्पादन नईखीं कर सकत',
-'tooltip-save' => 'आपन बदलाव के सुरक्षित करीं',
+'tooltip-pt-login' => 'रउआ के खाता प्रवेश खातिर प्रोत्साहित करल जा रहल बा, बाँकि ई अनिवार्य नईखे',
+'tooltip-ca-talk' => 'सामग्री पन्ना के बारे में बात-चीत',
+'tooltip-ca-edit' => 'रउआ ई पन्ना के सम्पादन कर सकत बानी। कृपया पन्ना सुरक्षित करे से पहिले पूर्वावलोकन बटन के इस्तेमाल करीं।',
+'tooltip-ca-history' => 'ई पन्ना के पिछला संशोधन',
+'tooltip-ca-delete' => 'ई पन्ना मिटाईं',
+'tooltip-ca-move' => 'ई पन्ना के स्थांतरण करीं',
+'tooltip-search' => '{{SITENAME}} खोजीं',
+'tooltip-search-go' => 'यदि पन्ना मौजूद होई त ईहे सटीक नाम के साथ उ पन्ना पर जाईं',
+'tooltip-search-fulltext' => 'ई पाठ्य खातिर पन्ना खोजीं',
+'tooltip-p-logo' => 'मुख्य पन्ना पर जाईं',
+'tooltip-n-mainpage' => 'मुख्य पन्ना पर जाईं',
+'tooltip-n-mainpage-description' => 'मुख्य पन्ना पर पधारीं',
+'tooltip-n-portal' => 'परियोजना के बारे मेँ, रउआ का कर सकत बानी, वस्तु कहाँ खोजब',
+'tooltip-n-currentevents' => 'वर्तमान के घटना पर पृष्ठभूमी जानकारी खोजीं',
+'tooltip-n-recentchanges' => 'विकि पर तुरंत भईल परिवर्तन के सूची',
+'tooltip-n-randompage' => 'बेतरतिब पन्ना लादीं (Load करीं)',
+'tooltip-n-help' => 'जगह पता लगावे खातिर',
+'tooltip-t-whatlinkshere' => 'अहिजा लिंक होखे वाला सब विकि पन्ना के सूची',
+'tooltip-t-recentchangeslinked' => 'ई पन्ना से जुड़ल पन्नवन पर तुरंत भईल परिवर्तन',
+'tooltip-t-upload' => 'फाईल लादीं (अपलोड )',
+'tooltip-t-specialpages' => 'ख़ाश पन्नवन के सूची',
+'tooltip-t-print' => 'ई पन्ना के छापे लायक संस्करण।',
+'tooltip-t-permalink' => 'ई पन्ना के संसोधन खातिर स्थायी लिंक।',
+'tooltip-ca-nstab-main' => 'सामग्री पन्ना देखीं',
+'tooltip-ca-nstab-special' => 'ई एगो ख़ाश पन्ना ह, रउआ ई पन्ना के सम्पादन नईखीं कर सकत',
+'tooltip-save' => 'आपन बदलाव के सुरक्षित करीं',
# Bad image list
'bad_image_list' => 'फोर्मेट निम्न अनुसार बा:
diff --git a/languages/messages/MessagesBi.php b/languages/messages/MessagesBi.php
index 4ee0727d..fefc8ec1 100644
--- a/languages/messages/MessagesBi.php
+++ b/languages/messages/MessagesBi.php
@@ -60,13 +60,15 @@ $messages = array(
'oct' => 'Okt',
'dec' => 'Des',
+'mypage' => 'Pej blong mi',
+'mytalk' => 'Tingting blong mi',
+'and' => '&#32;mo',
+
+# Cologne Blue skin
'qbedit' => 'Jenisim hem',
'qbpageoptions' => 'Pej ia',
'qbmyoptions' => 'Ol pej blong mi',
'qbspecialpages' => 'Ol spesel pej',
-'mypage' => 'Pej blong mi',
-'mytalk' => 'Tingting blong mi',
-'and' => '&#32;mo',
'edit' => 'Jenisim hem',
'newpage' => 'Mekem niu pej',
@@ -110,6 +112,8 @@ $messages = array(
# Contributions
'year' => 'Yia:',
+'sp-contributions-talk' => 'Toktok',
+
# Block/unblock
'proxyblocksuccess' => 'Finis.',
diff --git a/languages/messages/MessagesBm.php b/languages/messages/MessagesBm.php
index 1b91c037..b65f03ff 100644
--- a/languages/messages/MessagesBm.php
+++ b/languages/messages/MessagesBm.php
@@ -31,13 +31,15 @@ $messages = array(
# Categories related messages
'category_header' => 'Nyɛw cogoya kɔnɔ: "$1"',
-'article' => 'Nyɛ',
+'article' => 'Nyɛ',
+'mypage' => "N'ka nyɛ",
+'mytalk' => "N'ka baronyɛ",
+'and' => '&#32;ani',
+
+# Cologne Blue skin
'qbfind' => 'Nyini',
'qbedit' => 'Yɛlɛma',
'qbspecialpages' => 'Nyɛw kɛrɛnkɛrɛnnen',
-'mypage' => "N'ka nyɛ",
-'mytalk' => "N'ka baronyɛ",
-'and' => '&#32;ani',
'help' => 'Dɛmɛ',
'search' => 'Nyini',
@@ -85,11 +87,14 @@ $messages = array(
# Preferences page
'preferences' => 'Fisayali',
-'skin' => 'Apparence',
+'prefs-skin' => 'Apparence',
# Recent changes
'hide' => 'dogo',
+# File description page
+'file-anchor-link' => 'Janin',
+
# Random page
'randompage' => 'Nyɛ min man ni ja',
diff --git a/languages/messages/MessagesBn.php b/languages/messages/MessagesBn.php
index 94681208..a2cc57f9 100644
--- a/languages/messages/MessagesBn.php
+++ b/languages/messages/MessagesBn.php
@@ -85,6 +85,7 @@ $messages = array(
'tog-enotifminoredits' => 'পাতাগুলির অনুল্লেখ্য সম্পাদনার জন্যও আমাকে ই-মেইল করা হোক',
'tog-enotifrevealaddr' => 'বিজ্ঞপ্তি মেইলে আমার ই-মেইল ঠিকানা প্রকাশ করা হোক',
'tog-shownumberswatching' => 'নজরদারী করছে, এমন ব্যবহারকারীর সংখ্যা দেখানো হোক',
+'tog-oldsig' => 'স্বাক্ষরের প্রাকদর্শন:',
'tog-fancysig' => 'স্বাক্ষরকে উইকিটেক্সট হিসেবে মনে করুন (কোন সয়ংক্রিয় লিঙ্ক ছাড়া)',
'tog-externaleditor' => 'প্রাথমিক পছন্দ হিসেবে বহিঃস্থ সম্পাদক ব্যবহার করা হোক (কেবল দক্ষ ব্যবহারকারীদের জন্য, আপনার কম্পিউটারে বিশেষ সেটিংস প্রয়োজন)',
'tog-externaldiff' => 'প্রাথমিক পছন্দ হিসেবে বহিঃস্থ পার্থক্য ব্যবহার করা হোক (কেবল দক্ষ ব্যবহারকারীদের জন্য, আপনার কম্পিউটারে বিশেষ সেটিংস প্রয়োজন)',
@@ -107,6 +108,13 @@ $messages = array(
'underline-never' => 'কখনো নয়',
'underline-default' => 'ব্রাউজারে যেমনভাবে নির্দিষ্ট করা আছে',
+# Font style option in Special:Preferences
+'editfont-style' => 'সম্পাদনা এলাকার ফন্ট স্টাইল:',
+'editfont-default' => 'ব্রাউজার পূর্বনির্ধারিত',
+'editfont-monospace' => 'মনোস্পেস ফন্ট',
+'editfont-sansserif' => 'স্যান্স-সেরিফ ফন্ট',
+'editfont-serif' => 'সেরিফ ফন্ট',
+
# Dates
'sunday' => 'রবিবার',
'monday' => 'সোমবার',
@@ -166,13 +174,15 @@ $messages = array(
'category-media-header' => '"$1" বিষয়শ্রেণীতে অন্তর্ভুক্ত মিডিয়া ফাইলগুলি',
'category-empty' => "''এই বিষয়শ্রণীতে বর্তমানে কোন পাতা বা মিডিয়া ফাইল নেই।''",
'hidden-categories' => '{{PLURAL:$1|লুকায়িত বিষয়শ্রেণী|লুকায়িত বিষয়শ্রেণীসমূহ}}',
-'hidden-category-category' => 'লুকায়িত বিষয়শ্রেণীসমূহ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'লুকায়িত বিষয়শ্রেণীসমূহ',
'category-subcat-count' => '{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবলমাত্র নিচের উপবিষয়শ্রেণীটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি উপবিষয়শ্রেণীর মধ্যে {{PLURAL:$1|টি উপবিষয়শ্রেণী|$1টি উপবিষয়শ্রেণী}} নিচে দেখানো হয়েছে।}}',
'category-subcat-count-limited' => 'এই বিষয়শ্রেণীতে নিচের {{PLURAL:$1|টি উপবিষয়শ্রেণী|$1টি উপবিষয়শ্রেণী আছে}}।',
'category-article-count' => '{{PLURAL:$2|এই বিষয়শ্রেণীতে কেবল নিচের পাতাটি আছে।|এই বিষয়শ্রেণীতে অন্তর্ভুক্ত মোট $2টি পাতার মধ্যে {{PLURAL:$1|টি পাতা|$1টি পাতা}} নিচে দেখানো হল।}}',
'category-article-count-limited' => 'এই {{PLURAL:$1|পাতাটি|$1 পাতাগুলো}} এ বিষয়শ্রেণীতে রয়েছে।',
'category-file-count-limited' => 'নিচের {{PLURAL:$1|ফাইলটি|$1 ফাইলগুলো}} এই বিষয়শ্রেণীতে রয়েছে।',
'listingcontinuesabbrev' => 'আরও আছে',
+'index-category' => 'নির্ঘণ্ট পাতা',
+'noindex-category' => 'নির্ঘণ্ট নয় এমন পাতা',
'mainpagetext' => "'''মিডিয়াউইকি সফলভাবে ইন্সটল করা হয়েছে।'''",
'mainpagedocfooter' => 'কী ভাবে উইকি সফটওয়্যারটি ব্যবহারকার করবেন, তা জানতে [http://meta.wikimedia.org/wiki/Help:Contents ব্যবহারকারী সহায়িকা] দেখুন।
@@ -183,10 +193,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ প্রশ্নোত্তরে মিডিয়াউইকি]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিস্ট]',
-'about' => 'বৃত্তান্ত',
-'article' => 'বিষয়বস্তু আছে এমন পাতা',
-'newwindow' => '(নতুন উইন্ডোতে খুলবে)',
-'cancel' => 'বাতিল করা হোক',
+'about' => 'বৃত্তান্ত',
+'article' => 'বিষয়বস্তু আছে এমন পাতা',
+'newwindow' => '(নতুন উইন্ডোতে খুলবে)',
+'cancel' => 'বাতিল করা হোক',
+'moredotdotdot' => 'আরও...',
+'mypage' => 'আমার পাতা',
+'mytalk' => 'আমার আলাপ',
+'anontalk' => 'এই বেনামী ব্যবহারকারীর আলাপের পাতা',
+'navigation' => 'পরিভ্রমণ',
+'and' => '&#32;এবং',
+
+# Cologne Blue skin
'qbfind' => 'অনুসন্ধান করুন',
'qbbrowse' => 'ঘুরে দেখুন',
'qbedit' => 'সম্পাদনা করুন',
@@ -194,15 +212,35 @@ $messages = array(
'qbpageinfo' => 'পাতা-সংক্রান্ত তথ্য',
'qbmyoptions' => 'আমার পছন্দ',
'qbspecialpages' => 'বিশেষ পাতাসমূহ',
-'moredotdotdot' => 'আরও...',
-'mypage' => 'আমার পাতা',
-'mytalk' => 'আমার আলাপ',
-'anontalk' => 'এই বেনামী ব্যবহারকারীর আলাপের পাতা',
-'navigation' => 'পরিভ্রমণ',
-'and' => '&#32;এবং',
-
-# Metadata in edit box
-'metadata_help' => 'অধিউপাত্ত (metadata):',
+'faq' => 'সম্ভাব্য প্রশ্নসমূহ',
+'faqpage' => 'Project:প্রাজিপ্র',
+
+# Vector skin
+'vector-action-addsection' => 'বিষয় যোগ',
+'vector-action-delete' => 'অপসারণ',
+'vector-action-move' => 'স্থানান্তর',
+'vector-action-protect' => 'সুরক্ষা',
+'vector-action-undelete' => 'পুনরুদ্ধার',
+'vector-action-unprotect' => 'অরক্ষা',
+'vector-namespace-category' => 'বিষয়শ্রেণী',
+'vector-namespace-help' => 'সাহায্য',
+'vector-namespace-image' => 'ফাইল',
+'vector-namespace-main' => 'পাতা',
+'vector-namespace-media' => 'মিডিয়া পাতা',
+'vector-namespace-mediawiki' => 'বার্তা',
+'vector-namespace-project' => 'প্রকল্প পাতা',
+'vector-namespace-special' => 'বিশেষ পাতা',
+'vector-namespace-talk' => 'আলাপ',
+'vector-namespace-template' => 'টেম্পলেট',
+'vector-namespace-user' => 'ব্যবহারকারী পাতা',
+'vector-view-create' => 'তৈরি করুন',
+'vector-view-edit' => 'সম্পাদনা',
+'vector-view-history' => 'ইতিহাস',
+'vector-view-view' => 'পড়ুন',
+'vector-view-viewsource' => 'সোর্স দেখুন',
+'actions' => 'কার্যক্রম',
+'namespaces' => 'নামস্থান',
+'variants' => 'বিকল্পসমূহ',
'errorpagetitle' => 'ত্রুটি',
'returnto' => '$1 শিরোনামের পাতায় ফেরত যান।',
@@ -252,18 +290,22 @@ $messages = array(
'otherlanguages' => 'অন্যান্য ভাষাসমূহ',
'redirectedfrom' => '($1 থেকে ঘুরে এসেছে)',
'redirectpagesub' => 'পুনর্নির্দেশ পাতা',
-'lastmodifiedat' => 'এ পাতায় শেষ পরিবর্তন হয়েছিল $2টার সময়, $1 তারিখে।', # $1 date, $2 time
+'lastmodifiedat' => 'এ পাতায় শেষ পরিবর্তন হয়েছিল $2টার সময়, $1 তারিখে।',
'viewcount' => 'এ পাতাটি {{PLURAL:$1|বার|$1 বার}} দেখা হয়েছে।',
'protectedpage' => 'সুরক্ষিত পাতা',
'jumpto' => 'ঝাঁপ দাও:',
'jumptonavigation' => 'পরিভ্রমন',
'jumptosearch' => 'অনুসন্ধান',
+'view-pool-error' => 'দুঃখিত, সার্ভারে এ মূহুর্তে অতিরিক্ত চাপ রয়েছে।
+অনেক বেশি সংখ্যক ব্যবহারকারী এই পাতাটি দেখার চেষ্টা করছেন।
+নতুন করে এ পাতাটি দেখার চেষ্টা করার আগে কিছুক্ষণ অপেক্ষা করুন।
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} বৃত্তান্ত',
'aboutpage' => 'Project:বৃত্তান্ত',
'copyright' => '$1 এর আওতায় প্রাপ্য।',
-'copyrightpagename' => '{{SITENAME}} কপিরাইট',
'copyrightpage' => '{{ns:project}}:কপিরাইটসমূহ',
'currentevents' => 'সমসাময়িক ঘটনা',
'currentevents-url' => 'Project:সমসাময়িক ঘটনাসমূহ',
@@ -271,8 +313,6 @@ $messages = array(
'disclaimerpage' => 'Project:সাধারণ দাবিত্যাগ',
'edithelp' => 'সম্পাদনা সহায়িকা',
'edithelppage' => 'Help:কিভাবে একটি পাতা সম্পাদনা করবেন',
-'faq' => 'সম্ভাব্য প্রশ্নসমূহ',
-'faqpage' => 'Project:প্রাজিপ্র',
'helppage' => 'Help:সহায়িকা',
'mainpage' => 'প্রধান পাতা',
'mainpage-description' => 'প্রধান পাতা',
@@ -352,10 +392,6 @@ $messages = array(
"$1"
"$2" ফাংশনের ভিতর থেকে।
ডাটাবেজ যে ত্রুটি পাঠিয়েছে: "$3: $4"',
-'noconnect' => 'দুঃখিত! উইকিতে কিছু কারিগরি সমস্যা দেখা দিয়েছে বলে এটি ডাটাবেস সার্ভারের সাথে যোগাযোগ করতে পারছে না। <br />
-$1',
-'nodb' => 'ডাটাবেস $1 নির্বাচন করা যায়নি',
-'cachederror' => 'অনুরোধকৃত পাতার একটি ক্যাশ কপি নিচে দেখানো হল। এটি হালনাগাদকৃত না-ও হতে পারে।',
'laggedslavemode' => 'সতর্কীকরণ: পাতাটি সম্ভবত সাম্প্রতি হালনাগাদকৃত নয়।',
'readonly' => 'ডেটাবেজের ব্যবহার সীমাবদ্ধ',
'enterlockreason' => 'তালাবদ্ধ করার কারণ কি তা বলুন, সাথে কখন তালা খুলবেন তার আনুমানিক সময় উল্লখ্য করুন',
@@ -373,6 +409,8 @@ $1',
'readonly_lag' => 'ডাটাবেজ স্বয়ংক্রিয়ভাবে বন্ধ করে দেয়া হয়েছে, যাতে অধীন ডাটাবেজ সার্ভারগুলি প্রধান ডাটাবেজ সার্ভারের অবস্থায় আসতে পারে।',
'internalerror' => 'আভ্যন্তরীণ ত্রুটি',
'internalerror_info' => 'আভ্যন্তরীণ ত্রুটি: $1',
+'fileappenderrorread' => 'জুড়ে দেওয়ার সময় "$1" পড়া যায়নি।',
+'fileappenderror' => '"$1" কে "$2" এর সাথে জুড়ে দেওয়া সম্ভব নয়।',
'filecopyerror' => '"$1" থেকে "$2" ফাইল কপি করা যায়নি',
'filerenameerror' => '"$1" ফাইলটির নাম বদলে "$2" করা সম্ভব হচ্ছে না।',
'filedeleteerror' => '"$1" ফাইলটি মুছে ফেলা সম্ভব হচ্ছে না।',
@@ -382,7 +420,8 @@ $1',
'unexpected' => 'অপ্রত্যাশিত মান: "$1"="$2"।',
'formerror' => 'ত্রুটি: ফরমটি জমা দেওয়া যায়নি',
'badarticleerror' => 'এই পাতায় এই কাজটি করা সম্ভব নয়।',
-'cannotdelete' => 'এই পাতা বা ফাইলটি মোছা সম্ভব হল না। (সম্ভবতঃ অন্য কেউ আগেই এটিকে মুছে ফেলেছে)',
+'cannotdelete' => '"$1" পাতা বা ফাইলটি মোছা সম্ভব না।
+সম্ভবত অন্য কেউ আগেই এটিকে মুছে ফেলেছেন।',
'badtitle' => 'শিরোনামটি গ্রহনযোগ্য নয়।',
'badtitletext' => 'অনুরোধকৃত পাতার শিরোনামটি অবৈধ, খালি কিংবা কোন ভুল আন্তঃভাষা বা আন্তঃউইকি শিরোনাম সংযোগ ছিল। এটিতে সম্ভবত এমন এক (একাধিক) ক্যারেক্টার আছে, যা (যেগুলি) শিরোনামে ব্যবহারযোগ্য নয়।',
'perfcached' => 'নিচের উপাত্তগুলো ক্যাশ থেকে নেয়া এবং সম্পূর্ণ হালনাগাদকৃত না-ও হতে পারে:',
@@ -412,7 +451,6 @@ $2',
'virus-unknownscanner' => 'অজানা এন্টিভাইরাস:',
# Login and logout pages
-'logouttitle' => 'ব্যবহারকারীর প্রস্থান (logout)',
'logouttext' => "'''আপনি এইমাত্র আপনার একাউন্ট থেকে প্রস্থান করেছেন।'''
এ পরিস্থিতিতে আপনি বেনামে {{SITENAME}} ব্যবহার করতে পারেন, কিংবা একই বা পৃথক নামে [[Special:UserLogin|আবার প্রবেশ করতে]] পারেন।
@@ -420,7 +458,6 @@ $2',
'welcomecreation' => '== স্বাগতম $1! ==
আপনার অ্যাকাউন্ট তৈরী হয়েছে।
আপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]] স্থির করে নিতে ভুলবেন না কিন্তু।',
-'loginpagetitle' => 'ব্যবহারকারী লগ ইন',
'yourname' => 'ব্যবহারকারীর নাম (Username)',
'yourpassword' => 'শব্দচাবি (Password)',
'yourpasswordagain' => 'শব্দচাবিটি (password) আবার লিখুন',
@@ -431,6 +468,7 @@ $2',
'nav-login-createaccount' => 'প্রবেশ/নতুন অ্যাকাউন্ট',
'loginprompt' => '{{SITENAME}}-তে সংযুক্ত হতে চাইলে আপনার ব্রাওজারের কুকি (cookies) অবশ্যই সক্রিয় (enabled) করতে হবে|',
'userlogin' => 'প্রবেশ/নতুন অ্যাকাউন্ট',
+'userloginnocreate' => 'প্রবেশ',
'logout' => 'প্রস্থান করুন',
'userlogout' => 'প্রস্থান',
'notloggedin' => 'আপনি সংযুক্ত নন',
@@ -442,27 +480,8 @@ $2',
'createaccountmail' => 'ই-মেইলের মাধ্যমে',
'badretype' => 'শব্দচাবি (password) দুটি মিলছেনা।',
'userexists' => 'এই ব্যবহারকারী নামটি অন্য কেঊ আগেই ব্যবহার করেছে। দয়া করে অন্য নাম বেছে নিন।',
-'youremail' => 'ইমেইল *',
-'username' => 'ব্যবহারকারীর নাম:',
-'uid' => 'ব্যবহারকারী নং (ID):',
-'prefs-memberingroups' => '{{PLURAL:$1|দলের|দলসমূহের}} সদস্য:',
-'yourrealname' => 'আসল নাম *',
-'yourlanguage' => 'ভাষা:',
-'yourvariant' => 'বিকল্প',
-'yournick' => 'স্বাক্ষর:',
-'badsig' => 'অবৈধ স্বাক্ষর; এইচটিএমএল ট্যাগ পরীক্ষা করুন।',
-'badsiglength' => 'আপনার স্বাক্ষরটি বেশ লম্বা।
-যা অবশ্যই $1 {{PLURAL:$1|অক্ষরের|অক্ষরের}} বেশী হতে পারবে না।',
-'yourgender' => 'লিঙ্গ:',
-'gender-unknown' => 'অনুল্লেখিত',
-'gender-male' => 'পুরুষ',
-'gender-female' => 'মহিলা',
-'email' => 'ই-মেইল',
-'prefs-help-realname' => 'আসল নাম দেওয়া অনাবশ্যক। যদি আসল নাম দেন, তবে আপনার কাজের স্বীকৃতি দানে তা ব্যবহার করা হবে।',
'loginerror' => 'লগ-ইন করতে সমস্যা হয়েছে',
-'prefs-help-email' => 'ই-মেইল ঠিকানা ঐচ্ছিক, কিন্তু শব্দচাবি ভুলে গেলে, এটি নতুন শব্দচাবি পেতে আপনাকে সুযোগ করে দেবে।
-আপনার পরিচয় উন্মোচন ছাড়াই অন্যরা আপনার ব্যবহারকারী পাতা অথবা ব্যবহাকারী_আলাপ পাতার মাধ্যমে আপনার সাথে যোগাযোগ করতে পারে, এমনটিও আপনি পছন্দ করতে পারেন।',
-'prefs-help-email-required' => 'ই-মেইল ঠিকানা আবশ্যক।',
+'createaccounterror' => 'অ্যাকাউন্ট তৈরি হয়নি: $1',
'nocookiesnew' => 'ব্যবহারকারীর অ্যাকাউন্টটি সৃষ্টি করা হয়েছে, কিন্তু আপনি এখনও অ্যাকাউন্টে প্রবেশ করেননি। {{SITENAME}}-তে কুকি ব্যবহার করে ব্যবহারকারীদের অ্যাকাউন্টে প্রবেশ করানো হয়। আপনার ব্রাউজারে কুকিগুলি নিষ্ক্রিয় করা আছে। অনুগ্রহ করে কুকিগুলি সক্রিয় করুন এবং আপনার নতুন ব্যবহারকারী নাম ও শব্দচাবি ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।',
'nocookieslogin' => '{{SITENAME}} এ কুকি (cookies) এর মাধ্যমে ব্যবহারকারীদের লগ-ইন সম্পন্ন করা হয়। আপনার ব্রাঊজারে কুকি বন্ধ করে দেওয়া আছে। কুকি চালু করে আবার চেষ্টা করুন।',
'noname' => 'আপনি সঠিক ব্যবহারকারী নাম নির্দিষ্ট করেননি।',
@@ -473,10 +492,11 @@ $2',
আপনার বানান পরীক্ষা করে দেখুন, অথবা [[Special:UserLogin/signup|নতুন একটি অ্যাকাউন্ট খুলুন]]।',
'nosuchusershort' => '"<nowiki>$1</nowiki>" নামের কোন ব্যবহারকারী নেই। নামের বানান পরীক্ষা করুন।',
'nouserspecified' => 'আপনাকে অবশ্যই ব্যবহারকারী নাম নির্দিষ্ট করতে হবে।',
+'login-userblocked' => 'এই ব্যবহারকারীকে বাধা দেওয়া হয়েছে। লগ-ইন সম্ভব নয়।',
'wrongpassword' => 'আপনি ভুল শব্দচাবি (password) ব্যবহার করেছেন। অনুগ্রহ করে আবার চেষ্টা করুন।',
'wrongpasswordempty' => 'শব্দচাবি (password) প্রবেশের ঘরটি খালি ছিল। দয়াকরে আবার চেষ্টা করুন।',
-'passwordtooshort' => 'আপনার শব্দচাবি অবৈধ অথবা অতিরিক্ত ছোট।
-শব্দচাবিতে অবশ্যই অন্তত {{PLURAL:$1|১টি ক্যারেক্টার|$1টি ক্যারেক্টার}} থাকতে হবে এবং এটিকে ব্যবহারকারী নামের থেকে পৃথক হতে হবে।',
+'passwordtooshort' => 'শব্দচাবি অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।',
+'password-name-match' => 'আপনার শব্দচাবি আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।',
'mailmypassword' => 'নতুন শব্দচাবি ই-মেইলে পাঠানো হোক',
'passwordremindertitle' => '{{SITENAME}}-এর জন্য নতুন সাময়িক শব্দচাবি',
'passwordremindertext' => 'কেউ একজন ($1 আইপি ঠিকানাটি থেকে সম্ভবত আপনি) অনুরোধ করেছেন যেন আমরা আপনাকে {{SITENAME}} ($4) এর জন্য একটি নতুন শব্দচাবি পাঠাই।
@@ -485,6 +505,7 @@ $2',
যদি আপনি ছাড়া অন্য কেউ এই অনুরোধ করে থাকে, কিংবা যদি আপনার পুরনো শব্দচাবিটি মনে পড়ে গিয়ে থাকে ও সেটি আর বদলাবার ইচ্ছা না থাকে, তাহলে এই বার্তাটি উপেক্ষা করতে পারেন এবং পুরনো শব্দচাবিটিই ব্যবহার করে যেতে পারেন।',
'noemail' => '"$1" ব্যবহারকারীর জন্য কোন ই-মেইল ঠিকানা সংরক্ষিত নেই।',
+'noemailcreate' => 'আপনাকে অবশ্যই একটি সঠিক ইমেইল ঠিকানা দিতে হবে',
'passwordsent' => 'একটি নতুন শব্দচাবি "$1" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।',
'blocked-mailpassword' => 'আপনার আইপি ঠিকানাটি থেকে সম্পাদনা করতে বাধা আছে, তাই এই ঠিকানার অপব্যবহার করে শব্দচাবি ফেরত আনতে দেয়া যাবে না।',
'eauthentsent' => 'মনোনীত ই-মেইল ঠিকানায় একটি নিশ্চিতকরণ ই-মেইল পাঠানো হয়েছে।
@@ -504,6 +525,7 @@ $2',
'createaccount-text' => 'কেউ $2-এর জন্য {{SITENAME}}-এ একটি অ্যাকাউন্ট সৃষ্টি করেছেন ($4)। "$2"-এর জন্য শব্দচাবি হল "$3"। আপনার এখন অ্যাকাউন্টে প্রবেশ করে শব্দচাবি পরিবর্তন করা উচিত।
যদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।',
+'usernamehasherror' => 'ব্যবকারকারী নামে হ্যাস বর্ণ থাকতে পারবে না',
'login-throttled' => 'আপনি সাম্প্রতিক পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন।
পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে কিছুক্ষণ অপেক্ষা করুন।',
'loginlanguagelabel' => 'ভাষা: $1',
@@ -518,17 +540,13 @@ $2',
'retypenew' => 'নতুন শব্দচাবি আবার টাইপ করুন:',
'resetpass_submit' => 'শব্দচাবি দাও এবং লগ-ইন করো',
'resetpass_success' => 'আপনার শব্দচাবি সাফল্যের সাথে পরিবর্তীত হয়েছে! এখন আপনি তে লগ-ইন হচ্ছেন...',
-'resetpass_bad_temporary' => 'অস্থায়ী শব্দচাবিটি ভুল। আপনি হয়তো ইতিমধ্যে সফলভাবে শব্দচাবি পরিবর্তন করেছেন অথবা নতুন অস্থায়ী শব্দচাবির জন্য অনুরোধ করেছেন।',
'resetpass_forbidden' => 'শব্দচাবি পরিবর্তন করা সম্ভব নয়',
'resetpass-no-info' => 'এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।',
'resetpass-submit-loggedin' => 'শব্দচাবি পরিবর্তন',
+'resetpass-submit-cancel' => 'বাতিল',
'resetpass-wrong-oldpass' => 'ভুল অস্থায়ী অথবা বর্তমান শব্দচাবি।
সম্ভবতঃ আপনি ইতোমধ্যেই সফলভাবে আপনার শব্দচাবিটি পরিবর্তন করেছেন অথবা একটি নতুন অস্থায়ী শব্দচাবির জন্য অনুরোধ করেছেন।',
'resetpass-temp-password' => 'অস্থায়ী শব্দচাবি:',
-'resetpass-log' => 'শব্দচাবি পুনঃস্থাপনের লগ',
-'resetpass-logtext' => 'যে সকল ব্যবহারকারীর শব্দচাবি কোন প্রশাসক পুনঃস্থাপন করেছেন নিচে তার একটি লগ রয়েছে।',
-'resetpass-logentry' => '$1 এর জন্য শব্দচাবি পরিবর্তন করা হয়েছে।',
-'resetpass-comment' => 'শব্দচাবি পুনঃস্থাপনের কারণ:',
# Edit page toolbar
'bold_sample' => 'গাঢ় লেখা',
@@ -602,7 +620,6 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
'blockededitsource' => "'''$1''' এ '''আপনার সম্পাদনা''' করা লেখাগুলো নিচে দেখানো হল:",
'whitelistedittitle' => 'সম্পাদনা করতে প্রবেশ আবশ্যক',
'whitelistedittext' => 'পাতায় সম্পাদনা করতে আপশ্যই $1 করতে হবে।',
-'confirmedittitle' => 'সম্পাদনা করার জন্য ই-মেইল নিশ্চিতকরণ প্রয়োজন',
'confirmedittext' => 'কোন সম্পাদনা করার আগে আপনার ই-মেইল ঠিকানাটি অবশ্যই নিশ্চিত করতে হবে। দয়া করে আপনার ই-মেইল ঠিকানাটি [[Special:Preferences|ব্যবহারকারীর পছন্দতালিকায়]] ঠিকমত দিন।',
'nosuchsectiontitle' => 'অনুচ্ছেদ পাওয়া যায়নি',
'nosuchsectiontext' => 'আপনি এমন একটি অনুচ্ছেদ সম্পাদনার চেষ্টা করেছেন, যার কোন অস্তিত্ব নেই।
@@ -624,12 +641,16 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
'noarticletext' => 'বর্তমানে এই পাতায় কোন লেখা নেই।
আপনি চাইলে অন্যান্য পাতা [[Special:Search/{{PAGENAME}}| শিরোনামটি অনুসন্ধান করতে পারেন]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} এ সম্পর্কিত লগ অনুসন্ধান করতে পারেন], কিংবা [{{fullurl:{{FULLPAGENAME}}|action=edit}} এই পাতাটি সম্পাদনা করতে পারেন]।',
'userpage-userdoesnotexist' => '"$1" নামের কোন ব্যবহারকারী অ্যাকাউন্ট নিবন্ধিত হয়নি। অনুগ্রহ করে পরীক্ষা করে দেখুন আপনি এই পাতাটি সৃষ্টি/সম্পাদনা করতে চান কি না।',
+'userpage-userdoesnotexist-view' => 'ব্যবহারকারী অ্যাকাউন্ট "$1" অনিবন্ধিত।',
+'blocked-notice-logextract' => 'এই ব্যবহারকারী বর্তমানে ব্লক রয়েছে।
+রেফারেন্সের জন্য সাম্প্রতিক ব্লক লগ ভুক্তি নিচে দেওয়া হল:',
'clearyourcache' => "'''লক্ষ্য করুন:আপনার পছন্দগুলো রক্ষা করার পর পরিবর্তনগুলো দেখার জন্য আপনাকে ব্রাউজারের ক্যাশ এড়াতে হতে পারে।'''
'''মোজিলা/ফায়ারফক্স/সাফারি:''' ''শিফট'' কী চেপে ধরে ''রিলোড''-এ ক্লিক করুন, কিংবা হয় ''কন্ট্রোল-F5'' অথবা ''কন্ট্রোল-R''(অ্যাপল ম্যাক-এ ''কমান্ড-R'') একসাথে চাপুন;
'''কংকারার:''' কেবল ''রিলোড'' ক্লিক করলেই বা ''F5'' চাপলেই চলবে;
'''অপেরা:''' ''Tools→Preferences''-এ গিয়ে ক্যাশ পরিষ্কার করে নিন;
'''ইন্টারনেট এক্সপ্লোরার:''' ''কন্ট্রোল'' চেপে ধরে ''রিফ্রেশ''-এ ক্লিক করুন, কিংবা ''কন্ট্রোল-F5'' চাপুন।",
-'usercssjsyoucanpreview' => "'''অণুসহায়িকা:''' \"প্রাকদর্শন\" বোতাম ব্যবহার করে আপনার নতুন সিএসএস/জাভাস্ক্রিপ্ট সংরক্ষণের আগে পরীক্ষা করে দেখুন।",
+'usercssyoucanpreview' => "'''অণুসহায়িকা:''' \"প্রাকদর্শন\" বোতাম ব্যবহার করে আপনার নতুন সিএসএস/জাভাস্ক্রিপ্ট সংরক্ষণের আগে পরীক্ষা করে দেখুন।",
+'userjsyoucanpreview' => "'''অণুসহায়িকা:''' \"প্রাকদর্শন\" বোতাম ব্যবহার করে আপনার নতুন সিএসএস/জাভাস্ক্রিপ্ট সংরক্ষণের আগে পরীক্ষা করে দেখুন।",
'usercsspreview' => "'''মনে রাখবেন আপনি আপনার জন্য বরাদ্ধকৃত সিএসএস প্রাকদর্শন করছেন।
এটা এখনও সংরক্ষণ করা হয়নি!'''",
'userjspreview' => "'''মনে রাখুন আপনি আপনার ব্যবহারকারী জাভাস্ক্রিপ্ট কেবলমাত্র পরীক্ষা/প্রাকদর্শন করছেন। এটা এখনও সংরক্ষণ করা হয়নি!'''",
@@ -671,13 +692,16 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
আপনি চাইলে লেখাটি কাট এবং পেষ্ট করে ভবিষ্যতের জন্য কোন টেক্সট ফাইলে সংরক্ষণ করতে পারেন।'''
যে প্রশাসক এই ডাটাবেজটি অবরুদ্ধ করেছেন তিনি যা ব্যাখ্যা দিয়েছেন: $1",
-'protectedpagewarning' => "'''সতর্কীকরণ: এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি সম্পাদনা করতে পারবেন।'''",
-'semiprotectedpagewarning' => "'''নোট:''' এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি সম্পাদনা করতে পারবেন।",
+'protectedpagewarning' => "'''সতর্কীকরণ: এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি সম্পাদনা করতে পারবেন।'''
+আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
+'semiprotectedpagewarning' => "'''নোট:''' এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি সম্পাদনা করতে পারবেন।
+আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
'cascadeprotectedwarning' => "'''সতর্কীকরণ:''' এই পাতাটি বন্ধ করা হয়েছে, যাতে কেবল প্রশাসকের ক্ষমতাবিশিষ্ট ব্যবহারকারীরা এটি সম্পাদনা করতে পারেন, কারণ এই পাতাটি নিচের প্রপাতাকারে সুরক্ষিত (cascade-protected) {{PLURAL:$1|টি পাতায়|টি পাতায়}} অন্তর্ভুক্ত আছে:",
-'titleprotectedwarning' => "'''সতর্কীকরণ: এই পাতাটির ব্যবহার সীমিত করা হয়েছে, যাতে কেবলমাত্র [[Special:ListGroupRights|এই নির্দিষ্ট অনুমতিপ্রাপ্ত]] ব্যবহারকারী এটি তৈরি করতে পারেন।'''",
-'templatesused' => 'এই পাতায় ব্যবহৃত টেম্পলেট:',
-'templatesusedpreview' => 'এই প্রাকদর্শনে ব্যবহৃত টেম্পলেটসমূহ:',
-'templatesusedsection' => 'এই অনুচ্ছেদে ব্যবহৃত টেম্পলেটসমূহ:',
+'titleprotectedwarning' => "'''সতর্কীকরণ: এই পাতাটির ব্যবহার সীমিত করা হয়েছে, যাতে কেবলমাত্র [[Special:ListGroupRights|এই নির্দিষ্ট অনুমতিপ্রাপ্ত]] ব্যবহারকারী এটি তৈরি করতে পারেন।'''
+আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
+'templatesused' => 'এই পাতায় ব্যবহৃত {{PLURAL:$1|টেম্পলেট|টেম্পলেটসমূহ}}:',
+'templatesusedpreview' => 'এই প্রাকদর্শনে ব্যবহৃত {{PLURAL:$1|টেম্পলেট| টেম্পলেটসমূহ}}:',
+'templatesusedsection' => 'এই অনুচ্ছেদে ব্যবহৃত {{PLURAL:$1|টেম্পলেট|টেম্পলেটসমূহ}}:',
'template-protected' => '(সুরক্ষিত)',
'template-semiprotected' => '(অর্ধ-সুরক্ষিত)',
'hiddencategories' => 'এ পাতাটি যে {{PLURAL:$1|1 লুকায়িত বিষয়শ্রেণীর|$1 লুকায়িত বিষয়শ্রেণীসমূহের}} সদস্য:',
@@ -685,16 +709,18 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
'nocreatetext' => '{{SITENAME}}-এ নতুন পাতা সৃষ্টি করার ক্ষমতা সীমাবদ্ধ করা হয়েছে।
আপনি ফিরে গিয়ে ইতিমধ্যে বিদ্যমান কোন পাতা সম্পাদনা করতে পারেন, অথবা [[Special:UserLogin|অ্যাকাউন্টে প্রবেশ কিংবা অ্যাকাউন্ট সৃষ্টি করতে পারেন]]।',
'nocreate-loggedin' => 'নতুন পাতা তৈরিতে আপনাকে অনুমোতি দেওয়া হয়নি।',
+'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনা সমর্থন করে না',
+'sectioneditnotsupported-text' => 'এই সম্পাদনা পাতায় অনুচ্ছেদ সম্পাদনা সমর্থন করে না',
'permissionserrors' => 'অনুমতি ত্রুটিসমূহ',
'permissionserrorstext' => 'আপনার এটা করার অনুমতি নেই, নিচের {{PLURAL:$1|টি কারণের|টি কারণের}} জন্য:',
'permissionserrorstext-withaction' => 'আপনার $2 করতে অনুমতি নেই, যার {{PLURAL:$1|কারণ|কারণসমূহ}}:',
-'recreate-deleted-warn' => "'''সতর্কীকরণ: আপনি এমন একটি পাতা সৃষ্টি করছেন যা পূর্বে মুছে দেয়া হয়েছিল।'''
+'recreate-moveddeleted-warn' => "'''সতর্কীকরণ: আপনি এমন একটি পাতা পুনরায় তৈরি করছেন যা পূর্বে অপসারণ করা হয়েছিল।'''
-আপনি পাতাটি আর সম্পাদনা করবেন কি না বিবেচনা করে দেখুন।
-আপনার সুবিধার্থে পাতাটির অবলুপ্তি লগ এখানে দেয়া হল:",
-'deleted-notice' => 'এই পাতাটি মুছে ফেলা হয়েছে।
-নিচে তথ্যসূত্রের জন্য এই পাতাটির মুছে ফেলার লগ দেয়া হল।',
-'deletelog-fulllog' => 'সম্পূর্ণ লগ দেখুন',
+আপনি পাতাটি সম্পাদনা চালিয়ে যাওয়া ঠিক হবে কিনা, তা বিবেচনা করুন।
+আপনার সুবিধার্থে পাতাটির অপলুপ্তি লগ এখানে দেয়া হলো:",
+'moveddeleted-notice' => 'এই পাতাটি অপসারণ করা হয়েছে।
+সূত্র হিসেবে নিচে এ পাতার অবলুপ্তি লগ দেওয়া হলো।',
+'log-fulllog' => 'সম্পূর্ণ লগ দেখাও',
'edit-gone-missing' => 'পাতাটি হালনাগাদ হয়নি।
সম্ভবতঃ পাতাটি মুছে ফেলা হয়েছে।',
'edit-conflict' => 'সম্পাদনা সংঘাত।',
@@ -723,7 +749,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'currentrev' => 'বর্তমান সংশোধন',
'currentrev-asof' => '$1 অনুযায়ী বর্তমান সংস্করণ',
'revisionasof' => '$1 তারিখের সংশোধন',
-'revision-info' => '$1-এ $2-এর করা সংশোধন', # Additionally available: $3: revision id
+'revision-info' => '$1-এ $2-এর করা সংশোধন',
'previousrevision' => '←পুর্বের সংস্করণ',
'nextrevision' => 'পরবর্তী সংস্করণ→',
'currentrevisionlink' => 'বর্তমান সংশোধন',
@@ -735,7 +761,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'histlegend' => 'পার্থক্য (Diff) নির্বাচন: যে সংস্করণগুলো তুলনা করতে চান, সেগুলো চিহ্নিত করে এন্টার বা নিচের বোতামটি টিপুন।<br />
নির্দেশিকা: (বর্তমান) = বর্তমান সংস্করণের সাথে পার্থক্য, (পূর্ববর্তী) = পূর্বের সংস্করণের সাথে পার্থক্য, অ = অনুল্লেখ্য সম্পাদনা।',
'history-fieldset-title' => 'ব্রাউজ ইতিহাস',
-'deletedrev' => '[অবলুপ্ত]',
+'history-show-deleted' => 'শুধুমাত্র অপসারণ',
'histfirst' => 'সবচেয়ে পুরনো',
'histlast' => 'সাম্প্রতিক',
'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
@@ -744,7 +770,7 @@ $3-এর দেয়া কারণ হল ''$2''",
# Revision feed
'history-feed-title' => 'সংশোধন ইতিহাস',
'history-feed-description' => 'এ উইকিতে এই পাতার সংশোধনের ইতিহাস',
-'history-feed-item-nocomment' => '$2-এ $1', # user at time
+'history-feed-item-nocomment' => '$2-এ $1',
'history-feed-empty' => 'অনুরোধকৃত পাতাটির কোন অস্তিত্ব নেই।
হয়ত পাতাটি উইকি থেকে মুছে ফেলা হয়েছে, কিংবা নতুন নামকরণ করা হয়েছে।
প্রাসঙ্গিক নতুন পাতাগুলির জন্য [[Special:Search|উইকি অনুসন্ধানের]] চেষ্টা করুন।',
@@ -753,32 +779,38 @@ $3-এর দেয়া কারণ হল ''$2''",
'rev-deleted-comment' => '(মন্তব্য সরিয়ে নেওয়া হয়েছে)',
'rev-deleted-user' => '(ব্যবহারকারীর নাম সরিয়ে নেওয়া হয়েছে)',
'rev-deleted-event' => '(লগ অ্যাকশন সরানো হয়েছে)',
-'rev-deleted-text-permission' => 'এই সংশোধনটি উন্মুক্ত আর্কাইভ থেকে সরিয়ে ফেলা হয়েছে।
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] এ ব্যাপারে বিস্তারিত বিবরণ থাকতে পারে।',
-'rev-deleted-text-view' => 'এই সংশোধনটি উন্মুক্ত আর্কাইভ থেকে সরিয়ে ফেলা হয়েছে।
-{{SITENAME}}-এর একজন প্রশাসক হিসেবে আপনি এটি দেখতে পারেন; [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] এ ব্যাপারে বিস্তারিত বিবরণ থাকতে পারে।',
+'rev-deleted-text-permission' => 'পাতার এই সংশোধনটি অপসারণ করা হয়েছে।
+এ সংক্রান্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।',
+'rev-deleted-text-view' => 'পাতার এই সংশোধনটি অপসারণ করা হয়েছে।
+একজন প্রশাসক হিসেবে আপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।',
'rev-delundel' => 'দেখাও/আড়াল করো',
+'rev-showdeleted' => 'দেখাও',
'revisiondelete' => 'অবলুপ্ত/পুনঃস্থাপন সংশোধনসমূহ',
'revdelete-nooldid-title' => 'বেঠিক লক্ষ্য সংশোধন',
'revdelete-nooldid-text' => 'এই কাজটি সম্পন্ন করার জন্য আপনি কোন লক্ষ্য সংশোধন নির্বাচন করেননি, নির্বাচিত সংশোধন নেই, অথবা আপনি বর্তমান সংশোধন লুকাতে চাইছেন।',
'revdelete-nologtype-title' => 'কোনো লগ টাইপ দেওয়া হয়নি।',
'revdelete-nologid-title' => 'ভুল লগ ভুক্তি',
+'revdelete-no-file' => 'নির্ধারিত ফাইলটি নেই।',
+'revdelete-show-file-submit' => 'হ্যাঁ',
'revdelete-selected' => "'''[[:$1]]-এর {{PLURAL:$2|টি নির্বাচিত সংশোধন|টি নির্বাচিত সংশোধন}}:'''",
'logdelete-selected' => "'''{{PLURAL:$1|টি নির্বাচিত লগ-ঘটনা|টি নির্বাচিত লগ-ঘটনা}}:'''",
-'revdelete-text' => "'''মুছে ফেলা সংশোধন ও ঘটনাগুলি এখনও পাতার ইতিহাস ও লগগুলিতে দেখা যাবে, কিন্তু তাদের বিষয়বস্তুর অংশবিশেষ সাধারণ জনগণের কাছে উন্মুক্ত থাকবে না।'''
+'revdelete-text' => "'''মুছে ফেলা সংশোধনগুলো এবং ঘটনাগুলি এখনও পাতার ইতিহাস ও লগগুলোতে দেখাবে, কিন্তু তাদের বিষয়বস্তুর অংশবিশেষ সর্বোসাধারণের জন্য উন্মুক্ত থাকবে না।'''
-{{SITENAME}}-এর অন্যান্য প্রশাসকেরা লুকানো বিষয়বস্তু দেখতে পারবেন এবং এই একই ইন্টারফেসের মাধ্যমে এগুলির মুছে ফেলা বাতিল করতে পারবেন, যদি না অতিরিক্ত কোন সীমাবদ্ধতা থেকে থাকে।",
+{{SITENAME}} এর অন্যান্য প্রশাসকগণ লুকানো এই বিষয়বস্তু দেখতে পাবেন এবং বাড়তি কোনো সীমাবদ্ধতা না থাকলে একই ইন্টারফেসের মাধ্যমে এটি পুনরুদ্ধার করতে পারবেন।",
'revdelete-legend' => 'দৃষ্টিপাত সীমাবদ্ধ করো',
'revdelete-hide-text' => 'সংশোধিত লেখা আড়াল করো',
+'revdelete-hide-image' => 'ফাইলের বিষয়বস্তু আড়াল করো',
'revdelete-hide-name' => 'কাজ এবং লক্ষ্য আড়াল করো',
'revdelete-hide-comment' => 'সম্পাদনা মন্তব্য আড়াল করো',
'revdelete-hide-user' => 'সম্পাদকে ব্যবহারকারীর নাম/আইপি আড়াল করো',
'revdelete-hide-restricted' => 'প্রশাসকবৃন্দ এবং অন্যদের ক্ষেত্রে এই ডাটা রোধ করো',
+'revdelete-radio-same' => 'পরিবর্তন নয়',
+'revdelete-radio-set' => 'হ্যাঁ',
+'revdelete-radio-unset' => 'না',
'revdelete-suppress' => 'সব প্রশাসক ও অন্যান্যদের কাছ থেকে উপাত্ত লুকিয়ে রাখা হোক।',
-'revdelete-hide-image' => 'ফাইলের বিষয়বস্তু আড়াল করো',
'revdelete-unsuppress' => 'সংশোধন পুনঃস্থাপনের উপর সীমাবদ্ধতা দূর করো',
'revdelete-log' => 'কারণ:',
-'revdelete-submit' => 'নির্বাচিত সংশোধনে প্রয়োগ করো',
+'revdelete-submit' => 'নির্বাচিত {{PLURAL:$1|সংশোধনে|সংশোধসমূহে}} প্রয়োগ করো',
'revdelete-logentry' => '[[$1]]-এর সংশোধন দৃশ্যমানতা পরিবর্তন করা হয়েছে',
'logdelete-logentry' => '[[$1]]-এর ঘটনা দৃশ্যমানতা পরিবর্তন করা হয়েছে',
'revdelete-success' => "'''সংশোধন দৃশ্যমানতা সফলভাবে হালনাগাদ করা হয়েছে।'''",
@@ -795,6 +827,14 @@ $3-এর দেয়া কারণ হল ''$2''",
'revdelete-unhid' => '$1 দেখাও',
'revdelete-log-message' => '$1 এর জন্য $2 {{PLURAL:$2|সংশোধন|সংশোধন সমূহ}}',
'logdelete-log-message' => '$1 এর জন্য $2 {{PLURAL:$2|ঘটনা|ঘটনা সমূহ}}',
+'revdelete-reason-dropdown' => '*সাধারণ অপসারণের কারণসমূহ
+** কপিরাইট লঙ্ঘন
+** অনুপযুক্ত ব্যক্তিগত তথ্য
+** সম্ভাব্য ক্ষতিকারক তথ্য',
+'revdelete-otherreason' => 'অন্য/বাড়তি কারণ:',
+'revdelete-reasonotherlist' => 'অন্য কারণ',
+'revdelete-edit-reasonlist' => 'অপসারণের কারণ সম্পাদনা',
+'revdelete-offender' => 'সংশোধন লেখক:',
# Suppression log
'suppressionlog' => 'দমন লগ',
@@ -829,50 +869,13 @@ $3-এর দেয়া কারণ হল ''$2''",
'mergelogpagetext' => 'নিচে সবচেয়ে সাম্প্রতিক ঘটা এক পাতার ইতিহাসের সাথে অন্য পাতার ইতিহাসের একত্রীকরণের একটি তালিকা দেওয়া হল।',
# Diffs
-'history-title' => '"$1" এর সংশোধনের ইতিহাস',
-'difference' => '(সংশোধনগুলোর মধ্যে পার্থক্য)',
-'lineno' => '$1 নং লাইন:',
-'compareselectedversions' => 'নির্বাচিত সংস্করণগুলো তুলনা করো',
-'editundo' => 'বাতিল',
-'diff-multi' => '({{PLURAL:$1|একটি অন্তর্বর্তীকালীন সংশোধন|$1টি অন্তর্বর্তীকালীন সংশোধন}} দেখানো হয়নি।)',
-'diff-movedto' => '$1 এ সরিয়ে নাও',
-'diff-styleadded' => '$1 শৈলী যোগ করা হয়েছে',
-'diff-added' => '$1 যোগ করা হয়েছে',
-'diff-changedto' => '$1 এ পরিবর্তন করা হয়েছে',
-'diff-styleremoved' => '$1 শৈলী অপসারিত হয়েছে',
-'diff-removed' => '$1 অপসারিত হয়েছে',
-'diff-changedfrom' => '$1 থেকে পরিবর্তন করা হয়েছে',
-'diff-src' => 'উৎস',
-'diff-width' => 'প্রস্থ',
-'diff-height' => 'উচ্চতা',
-'diff-p' => "একটি '''প্যারাগ্রাফ'''",
-'diff-blockquote' => "একটি '''উক্তি'''",
-'diff-h1' => "একটি '''শিরোনাম (পর্যায় ১)'''",
-'diff-h2' => "একটি '''শিরোনাম (পর্যায় ২)'''",
-'diff-h3' => "একটি '''শিরোনাম (পর্যায় ৩)'''",
-'diff-h4' => "একটি '''শিরোনাম (পর্যায় ৪)'''",
-'diff-h5' => "একটি '''শিরোনাম (পর্যায় ৫)'''",
-'diff-table' => "একটি '''ছক'''",
-'diff-tr' => "একটি '''সারি'''",
-'diff-td' => "একটি '''ঘর'''",
-'diff-th' => "একটি '''শীর্ষচরণ''",
-'diff-br' => "একটি '''বিরতি'''",
-'diff-hr' => "একটি '''আনুভূমিক মাপনি'''",
-'diff-code' => "একটি '''কম্পিউটার কোড ব্লক'''",
-'diff-dl' => "একটি '''সংজ্ঞার তালিকা'''",
-'diff-dt' => "একটি '''সংজ্ঞা শব্দ'''",
-'diff-dd' => "একটি '''সংজ্ঞা'''",
-'diff-input' => "একটি '''ইনপুট'''",
-'diff-form' => "একটি '''ফরম'''",
-'diff-img' => "একটি '''চিত্র'''",
-'diff-span' => "একটি '''স্প্যান'''",
-'diff-a' => "একটি '''সংযোগ'''",
-'diff-i' => "'''ইটালিক'''",
-'diff-b' => "'''গাঢ়'''",
-'diff-strong' => "'''শক্ত'''",
-'diff-font' => "'''ফন্ট'''",
-'diff-big' => "'''বড়'''",
-'diff-del' => "'''অপসারিত'''",
+'history-title' => '"$1" এর সংশোধনের ইতিহাস',
+'difference' => '(সংশোধনগুলোর মধ্যে পার্থক্য)',
+'lineno' => '$1 নং লাইন:',
+'compareselectedversions' => 'নির্বাচিত সংস্করণগুলো তুলনা করো',
+'showhideselectedversions' => 'নির্বাচিত সংশোধনগুলো দেখাও/লুকাও',
+'editundo' => 'বাতিল',
+'diff-multi' => '({{PLURAL:$1|একটি অন্তর্বর্তীকালীন সংশোধন|$1টি অন্তর্বর্তীকালীন সংশোধন}} দেখানো হয়নি।)',
# Search results
'searchresults' => 'অনুসন্ধানের ফলাফল',
@@ -880,26 +883,23 @@ $3-এর দেয়া কারণ হল ''$2''",
'searchresulttext' => '{{SITENAME}} এ অনুসন্ধানের ব্যাপারে আরও তথ্যের জন্য [[{{MediaWiki:Helppage}}|{{int:help}}]] দেখুন।',
'searchsubtitle' => 'আপনি অনুসন্ধান করেছেন \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" দিয়ে শুরু হওয়া সকল পাতাসমূহ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" এর সাথে সংযুক্ত সকল পাতা]])',
'searchsubtitleinvalid' => "আপনি অনুসন্ধান করেছেন '''$1'''",
-'noexactmatch' => "'''\"\$1\" শিরোনামের কোন পাতা নেই।''' আপনি [[:\$1|পাতাটি সৃষ্টি করতে পারেন]]।",
-'noexactmatch-nocreate' => "'''\"\$1\" শিরোনামের কোন পাতা নেই।'''",
'titlematches' => 'নিবন্ধের শিরোনাম মিলেছে',
'notitlematches' => 'কোন পাতার শিরোনামের সাথে মিলে নেই',
'textmatches' => 'পাতার লেখার সাথে মিলেছে',
'notextmatches' => 'কোন পাতার লেখার সাথে মিলে নেই',
-'prevn' => 'পূর্ববর্তী $1টি',
-'nextn' => 'পরবর্তী $1টি',
+'prevn' => 'পূর্ববর্তী {{PLURAL:$1|$1}}টি',
+'nextn' => 'পরবর্তী {{PLURAL:$1|$1}}টি',
'prevn-title' => 'পূর্ববর্তী $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}}',
'nextn-title' => 'পরবর্তী $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}}',
'shown-title' => 'প্রতি পাতায় $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}} দেখাও',
-'viewprevnext' => '($1) ($2) ($3) দেখানো হোক।',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) দেখানো হোক।',
'searchmenu-legend' => 'অনুসন্ধান অপশন',
'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
'searchhelp-url' => 'Help:সহায়িকা',
'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
-'searchprofile-articles-and-proj' => 'বিষয়বস্তু ও প্রকল্প পাতাসমূহ',
-'searchprofile-project' => 'প্রকল্প পাতা',
-'searchprofile-images' => 'ফাইলগুলি',
+'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
+'searchprofile-images' => 'মাল্টিমিডিয়া',
'searchprofile-everything' => 'সমস্তকিছু',
'searchprofile-advanced' => 'উচ্চতর',
'searchprofile-articles-tooltip' => '$1 এ অনুসন্ধান',
@@ -919,11 +919,12 @@ $3-এর দেয়া কারণ হল ''$2''",
'search-mwsuggest-disabled' => 'পরামর্শ নেই',
'search-relatedarticle' => 'সম্পর্কিত',
'mwsuggest-disable' => 'AJAX পরামর্শ নিষ্ক্রিয় করা হোক',
+'searcheverything-enable' => 'সকল নামস্থানে অনুসন্ধান করো',
'searchrelated' => 'সম্পর্কিত',
'searchall' => 'সমস্ত',
'showingresults' => "নিচে '''$2''' নং থেকে শুরু করে {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফলসমূহ}} দেখানো হল।",
'showingresultsnum' => "নিম্নে {{PLURAL:$3|'''1''' ফলাফল|'''$3''' ফলাফলসমূহ}} দেখানো হয়েছে যা শুরু হয়েছে #'''$2''' দিয়ে।",
-'showingresultstotal' => "নিচে দেখানো হয়েছে {{PLURAL:$4| '''$3''' গুলোর মধ্যে '''$1''' ফলাফল|'''$3''' গুলোর মধ্যে '''$1 - $2''' ফলাফল সমূহ}}",
+'showingresultsheader' => "'''$4''' এর জন্য {{PLURAL:$5|ফলাফল '''$3''' এর '''$1'''|ফলাফলসমূহ '''$3''' এর মধ্যে '''$1 - $2'''}}",
'nonefound' => "'''লক্ষ্য করুন''': শুরুতে শুধু মাত্র কিছু নামস্থানে অনুসন্ধান করা হয়।
আপনার অনুসন্ধান ''all:'' ব্যবহার করে সকল কন্টেন্টে অনুসন্ধানের জন্য ঠিক করে নিন (আলাপের পাতা, টেম্পলেট, ইত্যাদি), কিংবা প্রিফিক্স হিসেবে আপনার কাঙ্খিত নামস্থান ব্যবহার করুন।",
'search-nonefound' => 'খোঁজকৃত পাতার সাথে মিলে যায় এমন কোনো ফলাফল নেই।',
@@ -932,92 +933,123 @@ $3-এর দেয়া কারণ হল ''$2''",
'powersearch-ns' => 'নেমস্পেসে অনুসন্ধান করো:',
'powersearch-redir' => 'পুনঃনির্দেশনাসমূহের তালিকা',
'powersearch-field' => 'অনুসন্ধান করো',
+'powersearch-togglelabel' => 'চেক:',
+'powersearch-toggleall' => 'সকল',
+'powersearch-togglenone' => 'কিছু নয়',
'search-external' => 'বহিঃস্থ অনুসন্ধান',
'searchdisabled' => '{{SITENAME}} অনুসন্ধান এখন নিষ্ক্রিয় আছে। আপনি গুগলের মাধ্যমে অনুসন্ধান চালাতে পারেন। লক্ষ্য করুন যে {{SITENAME}}-এর বিষয়বস্তুর উপর গুগলের ইন্ডেক্সগুলি হালনাগাদ না-ও করা থাকতে পারে।',
+# Quickbar
+'qbsettings' => 'কুইকবার',
+'qbsettings-none' => 'কিছুই না',
+'qbsettings-fixedleft' => 'স্থায়ী বাম',
+'qbsettings-fixedright' => 'স্থায়ী ডান',
+'qbsettings-floatingleft' => 'ভাসমান বাম',
+'qbsettings-floatingright' => 'ভাসমান ডান',
+
# Preferences page
-'preferences' => 'আমার পছন্দ',
-'mypreferences' => 'আমার পছন্দ',
-'prefs-edits' => 'সম্পাদনার সংখ্যা:',
-'prefsnologin' => 'আপনি লগ-ইন করেননি',
-'prefsnologintext' => 'ব্যবহারকারীর পছন্দ ঠিক করতে আপনাকে অবশ্যই [[Special:UserLogin|লগ্‌-ইন]] থাকতে হবে।',
-'prefsreset' => 'স্টোরেজ থেকে পছন্দগুলি আদি অবস্থায় ফেরত নেওয়া হয়েছে।',
-'qbsettings' => 'কুইকবার',
-'qbsettings-none' => 'কিছুই না',
-'qbsettings-fixedleft' => 'স্থায়ী বাম',
-'qbsettings-fixedright' => 'স্থায়ী ডান',
-'qbsettings-floatingleft' => 'ভাসমান বাম',
-'qbsettings-floatingright' => 'ভাসমান ডান',
-'changepassword' => 'শব্দচাবি (password) পরিবর্তন',
-'skin' => 'আবরণ (Skin)',
-'skin-preview' => 'প্রাকদর্শন',
-'math' => 'গণিত',
-'dateformat' => 'তারিখের ফরম্যাট',
-'datedefault' => 'কোন পছন্দ নেই',
-'datetime' => 'তারিখ ও সময়',
-'math_failure' => 'পার্স করতে ব্যর্থ',
-'math_unknown_error' => 'অজানা ত্রুটি',
-'math_unknown_function' => 'অজানা ফাংশন',
-'math_lexing_error' => 'লেক্সিং ত্রুটি',
-'math_syntax_error' => 'সিনট্যাক্স ত্রুটি',
-'math_image_error' => 'PNG রূপান্তর ব্যর্থ; latex, dvips, gs, এবং convert ঠিকমত ইন্সটল হয়েছে কি না পরীক্ষা করুন',
-'math_bad_tmpdir' => 'সাময়িক ম্যাথ ডিরেক্টরি সৃষ্টি করতে বা এতে লিখতে পারা যাচ্ছে না।',
-'math_bad_output' => 'ম্যাথ আউটপুট ডিরেক্টরি সৃষ্টি করতে বা এতে লিখতে পারা যাচ্ছে না।',
-'math_notexvc' => 'texvc executable হারানো গেছে; অনুগ্রহ করে কনফিগার করার জন্য math/README দেখুন।',
-'prefs-personal' => 'ব্যবহারকারীর বৃত্তান্ত',
-'prefs-rc' => 'সাম্প্রতিক পরিবর্তনসমূহ',
-'prefs-watchlist' => 'নজর তালিকা',
-'prefs-watchlist-days' => 'যত দিনের নজরতালিকা দেখানো হবে:',
-'prefs-watchlist-days-max' => 'সর্বোচ্চ ৭ দিন',
-'prefs-watchlist-edits' => 'সম্প্রসারিত নজর তালিকায় সর্বোচ্চ সংখ্যার পরিবর্তন দেখানোর জন্য:',
-'prefs-watchlist-edits-max' => 'সর্বোচ্চ সংখ্যা: ১০০০',
-'prefs-misc' => 'বিবিধ',
-'prefs-resetpass' => 'শব্দচাবি পরিবর্তন',
-'saveprefs' => 'সংরক্ষণ করো',
-'resetprefs' => 'অসংরক্ষিত পরিবর্তনগুলো পরিস্কার করো',
-'restoreprefs' => 'সকল পূর্বনির্ধারিত সেটিং ফিরিয়ে আনো',
-'textboxsize' => 'সম্পাদনা',
-'prefs-edit-boxsize' => 'সম্পাদনা উইন্ডোর আকার।',
-'rows' => 'সারি:',
-'columns' => 'কলাম:',
-'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্রতি পাতায় হিট:',
-'contextlines' => 'লাইন প্রতি হিটে:',
-'contextchars' => 'প্রতি লাইনে কন্‌টেক্সট সংখ্যা:',
-'stub-threshold' => '<a href="#" class="stub">অসম্পূর্ণ নিবন্ধের সংযোগগুলির</a> বিশেষ ফরম্যাটিঙের সীমা (বাইটে):',
-'recentchangesdays' => 'সাম্প্রতিক পরিবর্তনে দিনসমূহ দেখানোর জন্য:',
-'recentchangescount' => 'সাম্প্রতিক পরিবর্তনে প্রদর্শিত সম্পাদনার সংখ্যা:',
-'savedprefs' => 'আপনার পছন্দগুলো সংরক্ষণ করা হয়েছে।',
-'timezonelegend' => 'সময় বলয়:',
-'timezonetext' => '¹আপনার স্থানীয় সময় থেকে সার্ভারের সময়ের (UTC) পার্থক্য (ঘন্টায়)।',
-'localtime' => 'স্থানীয় সময়:',
-'timezoneselect' => 'সময় অঞ্চল',
-'timezoneuseserverdefault' => 'ব্যবহারকারী সার্ভার পূর্বনির্ধারিত',
-'timezoneuseoffset' => 'অন্য (অফসেট নির্দিষ্ট করুন)',
-'timezoneoffset' => 'সময়পার্থক্য¹:',
-'servertime' => 'সার্ভারের সময়:',
-'guesstimezone' => 'ব্রাউজার থেকে পূরণ করো',
-'timezoneregion-africa' => 'আফ্রিকা',
-'timezoneregion-america' => 'আমেরিকা',
-'timezoneregion-antarctica' => 'এন্টার্টিকা',
-'timezoneregion-arctic' => 'আর্কটিক',
-'timezoneregion-asia' => 'এশিয়া',
-'timezoneregion-atlantic' => 'আটলান্টিক মহাসাগর',
-'timezoneregion-australia' => 'অস্ট্রেলিয়া',
-'timezoneregion-europe' => 'ইউরোপ',
-'timezoneregion-indian' => 'ভারত মহাসাগর',
-'timezoneregion-pacific' => 'প্রশান্ত মহাসাগর',
-'allowemail' => 'অন্য ব্যবহারকারীদেরকে আপনাকে ই-মেইল পাঠানোর অনুমতি দিন।',
-'prefs-searchoptions' => 'অনুসন্ধানের পছন্দসমূহ',
-'prefs-namespaces' => 'নামস্থানসমূহ',
-'defaultns' => 'নির্দিষ্ট করা না থাকলে এই নামস্থানগুলিতে অনুসন্ধান করা হোক:',
-'default' => 'আদি অবস্থা',
-'files' => 'ফাইল',
-'prefs-custom-css' => 'স্বনির্ধারিত CSS',
-'prefs-custom-js' => 'স্বনির্ধারিত JS',
+'preferences' => 'আমার পছন্দ',
+'mypreferences' => 'আমার পছন্দ',
+'prefs-edits' => 'সম্পাদনার সংখ্যা:',
+'prefsnologin' => 'আপনি লগ-ইন করেননি',
+'prefsnologintext' => 'ব্যবহারকারীর পছন্দ ঠিক করতে হলে আপনাকে অবশ্যই <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} লগইন]</span> করা অবস্থায় থাকতে হবে।',
+'changepassword' => 'শব্দচাবি (password) পরিবর্তন',
+'prefs-skin' => 'আবরণ (Skin)',
+'skin-preview' => 'প্রাকদর্শন',
+'prefs-math' => 'গণিত',
+'datedefault' => 'কোন পছন্দ নেই',
+'prefs-datetime' => 'তারিখ ও সময়',
+'prefs-personal' => 'ব্যবহারকারীর বৃত্তান্ত',
+'prefs-rc' => 'সাম্প্রতিক পরিবর্তনসমূহ',
+'prefs-watchlist' => 'নজর তালিকা',
+'prefs-watchlist-days' => 'যত দিনের নজরতালিকা দেখানো হবে:',
+'prefs-watchlist-days-max' => 'সর্বোচ্চ ৭ দিন',
+'prefs-watchlist-edits' => 'সম্প্রসারিত নজর তালিকায় সর্বোচ্চ সংখ্যার পরিবর্তন দেখানোর জন্য:',
+'prefs-watchlist-edits-max' => 'সর্বোচ্চ নাম্বার: ১০০০',
+'prefs-watchlist-token' => 'নজরতালিকা টোকেন:',
+'prefs-misc' => 'বিবিধ',
+'prefs-resetpass' => 'শব্দচাবি পরিবর্তন',
+'prefs-email' => 'ই-মেইল অপশন',
+'prefs-rendering' => 'অবয়ব',
+'saveprefs' => 'সংরক্ষণ করো',
+'resetprefs' => 'অসংরক্ষিত পরিবর্তনগুলো পরিস্কার করো',
+'restoreprefs' => 'সকল পূর্বনির্ধারিত সেটিং ফিরিয়ে আনো',
+'prefs-editing' => 'সম্পাদনা',
+'prefs-edit-boxsize' => 'সম্পাদনা উইন্ডোর আকার।',
+'rows' => 'সারি:',
+'columns' => 'কলাম:',
+'searchresultshead' => 'অনুসন্ধান',
+'resultsperpage' => 'প্রতি পাতায় হিট:',
+'contextlines' => 'লাইন প্রতি হিটে:',
+'contextchars' => 'প্রতি লাইনে কন্‌টেক্সট সংখ্যা:',
+'stub-threshold' => '<a href="#" class="stub">অসম্পূর্ণ নিবন্ধের সংযোগগুলির</a> বিশেষ ফরম্যাটিঙের সীমা (বাইটে):',
+'recentchangesdays' => 'সাম্প্রতিক পরিবর্তনে দিনসমূহ দেখানোর জন্য:',
+'recentchangesdays-max' => 'সর্বোচ্চ $1 {{PLURAL:$1|দিন|দিন}}',
+'recentchangescount' => 'সাম্প্রতিক পরিবর্তনে প্রদর্শিত সম্পাদনার সংখ্যা:',
+'savedprefs' => 'আপনার পছন্দগুলো সংরক্ষণ করা হয়েছে।',
+'timezonelegend' => 'সময় বলয়:',
+'localtime' => 'স্থানীয় সময়:',
+'timezoneuseserverdefault' => 'ব্যবহারকারী সার্ভার পূর্বনির্ধারিত',
+'timezoneuseoffset' => 'অন্য (অফসেট নির্দিষ্ট করুন)',
+'timezoneoffset' => 'সময়পার্থক্য¹:',
+'servertime' => 'সার্ভারের সময়:',
+'guesstimezone' => 'ব্রাউজার থেকে পূরণ করো',
+'timezoneregion-africa' => 'আফ্রিকা',
+'timezoneregion-america' => 'আমেরিকা',
+'timezoneregion-antarctica' => 'এন্টার্টিকা',
+'timezoneregion-arctic' => 'আর্কটিক',
+'timezoneregion-asia' => 'এশিয়া',
+'timezoneregion-atlantic' => 'আটলান্টিক মহাসাগর',
+'timezoneregion-australia' => 'অস্ট্রেলিয়া',
+'timezoneregion-europe' => 'ইউরোপ',
+'timezoneregion-indian' => 'ভারত মহাসাগর',
+'timezoneregion-pacific' => 'প্রশান্ত মহাসাগর',
+'allowemail' => 'অন্য ব্যবহারকারীদেরকে আপনাকে ই-মেইল পাঠানোর অনুমতি দিন।',
+'prefs-searchoptions' => 'অনুসন্ধানের পছন্দসমূহ',
+'prefs-namespaces' => 'নামস্থানসমূহ',
+'defaultns' => 'নতুবা এই নামস্থানগুলিতে অনুসন্ধান করো:',
+'default' => 'আদি অবস্থা',
+'prefs-files' => 'ফাইল',
+'prefs-custom-css' => 'স্বনির্ধারিত CSS',
+'prefs-custom-js' => 'স্বনির্ধারিত JS',
+'prefs-emailconfirm-label' => 'ই-মেইল নিশ্চিতকরণ:',
+'prefs-textboxsize' => 'সম্পাদনা উইন্ডোর আকার',
+'youremail' => 'ইমেইল *',
+'username' => 'ব্যবহারকারীর নাম:',
+'uid' => 'ব্যবহারকারী নং (ID):',
+'prefs-memberingroups' => '{{PLURAL:$1|দলের|দলসমূহের}} সদস্য:',
+'prefs-registration' => 'নিবন্ধের সময়:',
+'yourrealname' => 'আসল নাম *',
+'yourlanguage' => 'ভাষা:',
+'yourvariant' => 'বিকল্প',
+'yournick' => 'স্বাক্ষর:',
+'prefs-help-signature' => 'আলাপ পাতায় আপনার মন্তব্য অবশ্যই "<nowiki>~~~~</nowiki>" চিহ্ন দ্বারা স্বাক্ষরিত হতে হবে, যা স্বয়ংক্রিয়ভাবে আপনার স্বাক্ষর ও সময় সংযুক্ত করবে।',
+'badsig' => 'অবৈধ স্বাক্ষর; এইচটিএমএল ট্যাগ পরীক্ষা করুন।',
+'badsiglength' => 'আপনার স্বাক্ষরটি বেশ লম্বা।
+যা অবশ্যই $1 {{PLURAL:$1|অক্ষরের|অক্ষরের}} বেশী হতে পারবে না।',
+'yourgender' => 'লিঙ্গ:',
+'gender-unknown' => 'অনুল্লেখিত',
+'gender-male' => 'পুরুষ',
+'gender-female' => 'মহিলা',
+'email' => 'ই-মেইল',
+'prefs-help-realname' => 'আসল নাম দেওয়া অনাবশ্যক। যদি আসল নাম দেন, তবে আপনার কাজের স্বীকৃতি দানে তা ব্যবহার করা হবে।',
+'prefs-help-email' => 'ই-মেইল ঠিকানা ঐচ্ছিক, কিন্তু শব্দচাবি ভুলে গেলে, এটি নতুন শব্দচাবি পেতে আপনাকে সুযোগ করে দেবে।
+আপনার পরিচয় উন্মোচন ছাড়াই অন্যরা আপনার ব্যবহারকারী পাতা অথবা ব্যবহাকারী_আলাপ পাতার মাধ্যমে আপনার সাথে যোগাযোগ করতে পারে, এমনটিও আপনি পছন্দ করতে পারেন।',
+'prefs-help-email-required' => 'ই-মেইল ঠিকানা আবশ্যক।',
+'prefs-info' => 'সাধারণ তথ্য',
+'prefs-i18n' => 'আন্তর্জাতিকিকরণ',
+'prefs-signature' => 'স্বাক্ষর',
+'prefs-dateformat' => 'তারিখ বিন্যাস',
+'prefs-advancedediting' => 'উচ্চতর অপশন',
+'prefs-advancedrc' => 'উচ্চতর অপশন',
+'prefs-advancedrendering' => 'উচ্চতর অপশন',
+'prefs-advancedsearchoptions' => 'উচ্চতর অপশন',
+'prefs-advancedwatchlist' => 'উচ্চতর অপশন',
+'prefs-display' => 'প্রদর্শনী অপশন',
+'prefs-diffs' => 'পার্থক্য',
# User rights
-'userrights' => 'ব্যবহারকারী অধিকার ব্যবস্থাপনা', # Not used as normal message but as header for the special page itself
+'userrights' => 'ব্যবহারকারী অধিকার ব্যবস্থাপনা',
'userrights-lookup-user' => 'ব্যবহারকারী দল ব্যবস্থাপনা করুন',
'userrights-user-editname' => 'ব্যবহারকারীর নাম লিখুন:',
'editusergroup' => 'ব্যবহারকারীর দল সম্পাদনা করো',
@@ -1081,6 +1113,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'right-bigdelete' => 'বিশাল ইতিহাস সম্বলিত পাতা মুছে ফেলো',
'right-deleterevision' => 'পাতার নির্দিষ্ট সংশোধনসমূহ অপসারণ এবং পুনরুদ্ধার',
'right-deletedhistory' => 'অপরাসিত ভুক্তির ইতিহাস দেখাও, তাদের সংশ্লিষ্ট লেখা ছাড়া',
+'right-deletedtext' => 'অপরাসারিত সংশোধনের অপরাসারিত লেখা এবং পরিবর্তনসমূহ দেখাও',
'right-browsearchive' => 'মুছে ফেলা পাতাসমূহ অনুসন্ধান করুন',
'right-undelete' => 'পাতাটি পুনরুদ্ধার করুন',
'right-suppressionlog' => 'ব্যক্তিগত লগ দেখাও',
@@ -1091,6 +1124,8 @@ $3-এর দেয়া কারণ হল ''$2''",
'right-editprotected' => 'সুরক্ষিত পাতা সম্পাদনা (ক্যাসকাডিং সুরক্ষা ছাড়া)',
'right-editinterface' => 'ব্যবহারকারী ইন্টারফেস সম্পাদনা',
'right-editusercssjs' => 'অন্য ব্যবহারকারীগণের CSS এবং JS ফাইল সম্পাদনা',
+'right-editusercss' => 'অন্য ব্যবহারকারীগণের CSS ফাইল সম্পাদনা',
+'right-edituserjs' => 'অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা',
'right-markbotedits' => 'রোলড-ব্যাক সম্পাদনাসমূহকে বট সম্পাদনা হিসেবে চিহ্নিত করো',
'right-import' => 'অন্য উইকি থেকে পাতা আমদানী করো',
'right-patrol' => 'অন্যের সম্পাদনা পরীক্ষিত বলে চিহ্নিত করো',
@@ -1100,6 +1135,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'right-userrights' => 'সকল ব্যবহারকারী অধিকার সম্পাদনা করুন',
'right-userrights-interwiki' => 'অন্যান্য উইকির ব্যবহারকারীদের অধিকারসমূহ সম্পাদনা করুন।',
'right-reset-passwords' => 'অন্য ব্যবহারকারীদের শব্দচাবি পুনরায় নির্ধারণ করুন',
+'right-sendemail' => 'অন্য ব্যবহারকারীকে ইমেইল পাঠান',
# User rights log
'rightslog' => 'ব্যবহারকারীর অধিকার লগ',
@@ -1144,6 +1180,15 @@ $3-এর দেয়া কারণ হল ''$2''",
'recentchanges-legend' => 'সাম্প্রতিক পরিবর্তনের পছন্দসমূহ',
'recentchangestext' => 'এই পাতায় উইকিটির সবচেয়ে সাম্প্রতিক পরিবর্তনগুলি অনুসরণ করুন।',
'recentchanges-feed-description' => 'এই ফিডে উইকিটির সবচেয়ে সাম্প্রতিক পরিবর্তনগুলি অনুসরণ করুন।',
+'recentchanges-label-legend' => 'লিজেন্ড: $1।',
+'recentchanges-legend-newpage' => '$1 - নতুন পাতা',
+'recentchanges-label-newpage' => 'এই সম্পাদনায় একটি নতুন পাতা তৈরি হয়েছে',
+'recentchanges-legend-minor' => '$1 - অনুল্লেখিত সম্পাদনা',
+'recentchanges-label-minor' => 'এটি একটি অনুল্লেখিত সম্পাদনা',
+'recentchanges-legend-bot' => '$1 - বট সম্পাদনা',
+'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
+'recentchanges-legend-unpatrolled' => '$1 - অপরীক্ষিত সম্পাদনা',
+'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
'rcnote' => "বিগত {{PLURAL:$2|দিনে|'''$2''' দিনে}} সংঘটিত {{PLURAL:$1|'''১'''|'''$1'''}}টি পরিবর্তন নীচে দেখানো হল (যেখানে বর্তমান সময় ও তারিখ $5, $4)।",
'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
@@ -1172,6 +1217,8 @@ $3-এর দেয়া কারণ হল ''$2''",
# Recent changes linked
'recentchangeslinked' => 'সম্পর্কিত পরিবর্তন',
+'recentchangeslinked-feed' => 'সম্পর্কিত পরিবর্তন',
+'recentchangeslinked-toolbox' => 'সম্পর্কিত পরিবর্তন',
'recentchangeslinked-title' => '"$1"-এর সাথে সম্পর্কিত পরিবর্তনসমূহ',
'recentchangeslinked-noresult' => 'সংযোগকৃত পাতাগুলিতে প্রদত্ত সময়সীমার জন্য কোন পরিবর্তন হয়নি।',
'recentchangeslinked-summary' => "একটি নির্দিষ্ট পাতা (অথবা নির্দিষ্ট বিষয়শ্রেণীতে) থেকে সংযুক্ত এ পাতার সাম্প্রতিক পরিবর্তনের তালিকা দেওয়া হয়েছে। আপনার [[Special:Watchlist|আপনার নজরতালিকায়]] রাখা পাতাগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
@@ -1181,8 +1228,8 @@ $3-এর দেয়া কারণ হল ''$2''",
# Upload
'upload' => 'আপলোড',
'uploadbtn' => 'ফাইল আপলোড করুন',
-'reupload' => 'পুনরায় আপলোড করা হোক',
'reuploaddesc' => 'আপলোড বাতিল করো এবং আপলোড ফর্মে ফেরত যাও।',
+'upload-tryagain' => 'পরিবর্তিত ফাইল বর্ণনা জমা দিন',
'uploadnologin' => 'আপনি লগ-ইন করেননি।',
'uploadnologintext' => 'আপলোড করতে হলে আপনাকে অবশ্যই আগে [[Special:UserLogin|লগ-ইন]] করতে হবে।',
'upload_directory_missing' => 'আপলোড ডাইরেক্টরি ($1) পাওয়া যাচ্ছে না এবং ওয়েব সার্ভার কর্তৃক তৈরি করা যাচ্ছে না।',
@@ -1226,7 +1273,6 @@ $3-এর দেয়া কারণ হল ''$2''",
* আপলোড করা ফাইলের নাম: '''<tt>[[:$1]]</tt>'''
* একই নামে বর্তমান ফাইলের নাম: '''<tt>[[:$2]]</tt>'''
অনুগ্রহ করে একটি ভিন্ন নাম পছন্দ করুন।",
-'fileexists-thumb' => "<center>'''বিদ্যমান ফাইল'''</center>",
'fileexists-thumbnail-yes' => "ফাইলটি একটি সংক্ষেপিত আকারের ছবি ''(থাম্বনেইল)'' বলে মনে হচ্ছে। [[$1|thumb]]
অনুগ্রহ করে '''<tt>[[:$1]]</tt>''' ফাইলটি পরীক্ষা করে দেখুন।
যদি পরীক্ষাকৃত ফাইলটি একই ছবির মূল আকার হয়, তবে একটি অতিরিক্ত থাম্বনেইল আপলোড করার প্রয়োজন নেই।",
@@ -1241,6 +1287,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'file-exists-duplicate' => 'এই ফাইলটি নিচের {{PLURAL:$1|ফাইল|ফাইলগুলির}} অনুলিপি:',
'successfulupload' => 'আপলোড সফল হয়েছে',
'uploadwarning' => 'আপলোড সতর্কবাণী',
+'uploadwarning-text' => 'অনুগ্রহ করে নিচে ফাইলের বর্ণনা পরিবর্তন করে আবার চেষ্টা করুন।',
'savefile' => 'সংরক্ষণ',
'uploadedimage' => '"[[$1]]" আপলোড করা হয়েছে।',
'overwroteimage' => '"[[$1]]"-এর একটি নতুন সংস্করণ আপলোড করা হয়েছে',
@@ -1249,11 +1296,14 @@ $3-এর দেয়া কারণ হল ''$2''",
'php-uploaddisabledtext' => 'পিএইপি -এ ফাইল আপলোড নিস্ক্রিয় রয়েছে।
অনুগ্রহ করে file_uploads সেটিং পরীক্ষা করুন।',
'uploadscripted' => 'এই ফাইলে এমন HTML বা স্ক্রিপ্ট কোড আছে যা একটি ওয়েব ব্রাউজার ভুল বুঝতে পারে।',
-'uploadcorrupt' => 'ফাইলটি হয় নষ্ট অথবা এর এক্সটেনশনটি ভুল। অনুগ্রহ করে ফাইলটি পরীক্ষা করে দেখুন এবং আবার আপলোড করুন।',
'uploadvirus' => 'এই ফাইলটিতে ভাইরাস আছে! ব্যাখ্যা: $1',
+'upload-source' => 'উৎস ফাইল',
'sourcefilename' => 'উৎস ফাইলের নাম:',
+'sourceurl' => 'উৎস ইউআরএল:',
'destfilename' => 'লক্ষ্য ফাইলের নাম:',
'upload-maxfilesize' => 'ফাইলের সর্বোচ্চ আকার: $1',
+'upload-description' => 'ফাইলের বর্ণনা',
+'upload-options' => 'আপলোড-অপশন',
'watchthisupload' => 'এই ফাইলটি নজরে রাখুন',
'filewasdeleted' => 'এই নামের একটি ফাইল পূর্বে আপলোড করা হয়েছিল এবং তারপর মুছে ফেলা হয়েছিল। আপনি ফাইলটি আবার আপলোড করার আগে $1 পরীক্ষা করে দেখুন।',
'upload-wasdeleted' => "'''সতর্কীকরণ: আপনি এমন একটি ফাইল আপলোড করছেন যা পূর্বে মুছে ফেলা হয়েছিল।'''
@@ -1271,6 +1321,16 @@ $3-এর দেয়া কারণ হল ''$2''",
'upload-misc-error-text' => 'আপলোড করার সময় অজানা কোনো ত্রুটি ঘটেছে।
অনুগ্রহ করে ইউআরএলটি বৈধ কি না তা যাচাই করুন এবং আবার চেষ্টা করুন।
যদি এর পরেও সমস্যা হয়, তবে একজন [[Special:ListUsers/sysop|প্রশাসকের]] সাথে যোগাযোগ করুন।',
+'upload-unknown-size' => 'অজানা আকার',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'প্রবেশাধিকার নাই',
+'img-auth-nofile' => 'ফাইল "$1" নাই।',
+
+# HTTP errors
+'http-invalid-url' => 'ভুল ইউআরএল: $1',
+'http-read-error' => 'HTTP পঠন ত্রুটি।',
+'http-host-unreachable' => 'URL-এ পৌঁছানো যায়নি',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-এ পৌঁছানো যায়নি',
@@ -1279,6 +1339,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'upload-curl-error28-text' => 'সাইটিটি উত্তর দিতে বেশি দেরি করেছে। অনুগ্রহ করে পরীক্ষা করে দেখুন সাইটটি চালু আছে কি না, এবং খানিকক্ষণ অপেক্ষা করে আবার চেষ্টা করুন। আপনি অন্য কোন অপেক্ষাকৃত কম ব্যস্ত সময়েও চেষ্টা করে দেখতে পারেন।',
'license' => 'লাইসেন্সকরণ:',
+'license-header' => 'লাইসেন্স প্রদান',
'nolicense' => 'কিছুই নির্বাচন করা হয়নি',
'license-nopreview' => '(প্রাকদর্শন লভ্য নয়)',
'upload_source_url' => ' (একটি বৈধ, উন্মুক্ত URL)',
@@ -1296,6 +1357,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'listfiles_count' => 'সংস্করণ',
# File description page
+'file-anchor-link' => 'ফাইল',
'filehist' => 'ফাইলের ইতিহাস',
'filehist-help' => 'তারিখ/সময়ে ক্লিক করে দেখুন ফাইলটি তখন কী অবস্থায় ছিল।',
'filehist-deleteall' => 'সব মুছে ফেলুন',
@@ -1310,16 +1372,14 @@ $3-এর দেয়া কারণ হল ''$2''",
'filehist-dimensions' => 'মাত্রা',
'filehist-filesize' => 'ফাইলের আকার',
'filehist-comment' => 'মন্তব্য',
+'filehist-missing' => 'ফাইল পাওয়া যায়নি',
'imagelinks' => 'ফাইলের সংযোগসমূহ',
'linkstoimage' => 'নিচের {{PLURAL:$1|টি পাতা|$1টি পাতা}} থেকে এই ফাইলে সংযোগ আছে:',
'nolinkstoimage' => 'এই ফাইলে সংযোগ করে এমন কোন পাতা নেই।',
-'sharedupload' => 'এই ফাইলটি $1 থেকে নেওয়া হয়েছে এবং এবং অন্যান্য প্রকল্পেও ব্যবহৃত হতে পারে।', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'বিস্তারিত তথ্যের জন্য $1 দেখুন।',
-'shareduploadwiki-linktext' => 'ফাইলের বিবরণ পাতা',
-'noimage' => 'এই নামে কোনো ফাইল নেই, কিন্তু আপনি $1।',
-'noimage-linktext' => 'এই নামের একটি ফাইল আপলোড করতে পারেন',
+'sharedupload' => 'এই ফাইলটি $1 থেকে নেওয়া হয়েছে এবং এবং অন্যান্য প্রকল্পেও ব্যবহৃত হতে পারে।',
+'filepage-nofile' => 'এই নামের কোন ফাইল নেই।',
'uploadnewversion-linktext' => 'এই ফাইলটির একটি নতুন সংস্করণ আপলোড করুন',
-'shared-repo-from' => '$1 থেকে', # $1 is the repository name
+'shared-repo-from' => '$1 থেকে',
# File reversion
'filerevert' => '$1 পূর্বাবস্থায় ফেরত নিন',
@@ -1348,6 +1408,7 @@ $3-এর দেয়া কারণ হল ''$2''",
** কপিরাইট লঙ্ঘন
** ফাইলের অনুলিপি',
'filedelete-edit-reasonlist' => 'অপসারণের কারণ সম্পাদনা',
+'filedelete-maintenance' => 'রক্ষণাবেক্ষণের সময় ফাইল অপরাসণ এবং পুনরুদ্ধার সাময়িকভাবে নিস্ক্রিয় রয়েছে।',
# MIME search
'mimesearch' => 'MIME অনুসন্ধান',
@@ -1380,6 +1441,7 @@ $3-এর দেয়া কারণ হল ''$2''",
'statistics-header-edits' => 'সম্পাদনার পরিসংখ্যান',
'statistics-header-views' => 'প্রদর্শনের পরিসংখ্যান',
'statistics-header-users' => 'ব্যবহারকারীর পরিসংখ্যান',
+'statistics-header-hooks' => 'অন্য পরিসংখ্যান',
'statistics-articles' => 'বিষয়বস্তুর পাতা',
'statistics-pages' => 'পাতা',
'statistics-files' => 'আপলোডকৃত ফাইল',
@@ -1401,8 +1463,8 @@ $3-এর দেয়া কারণ হল ''$2''",
'brokenredirects' => 'অকার্যকর পুনর্নির্দেশনাসমূহ',
'brokenredirectstext' => 'নিচের পুনর্নির্দেশনাগুলো অস্তিত্বহীন পাতাকে নির্দেশ করছে:',
-'brokenredirects-edit' => '(সম্পাদনা)',
-'brokenredirects-delete' => '(মুছে ফেলুন)',
+'brokenredirects-edit' => 'সম্পাদনা',
+'brokenredirects-delete' => 'মুছে ফেলুন',
'withoutinterwiki' => 'ভাষার সংযোগহীন পাতাসমূহ',
'withoutinterwiki-summary' => 'এই পাতা সমূহ অন্য ভাষার সংস্করণের সাথে সংযুক্ত নয়:',
@@ -1510,8 +1572,9 @@ $3-এর দেয়া কারণ হল ''$2''",
'special-categories-sort-abc' => 'বর্ণানুক্রমে সাজান',
# Special:DeletedContributions
-'deletedcontributions' => 'মুছে ফেলা ব্যবহারকারী অবদান',
-'deletedcontributions-title' => 'মুছে ফেলা ব্যবহারকারী অবদান',
+'deletedcontributions' => 'মুছে ফেলা ব্যবহারকারী অবদান',
+'deletedcontributions-title' => 'মুছে ফেলা ব্যবহারকারী অবদান',
+'sp-deletedcontributions-contribs' => 'অবদানসমূহ',
# Special:LinkSearch
'linksearch' => 'বহিঃসংযোগ',
@@ -1524,6 +1587,13 @@ $3-এর দেয়া কারণ হল ''$2''",
'listusersfrom' => 'সেই সব ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:',
'listusers-submit' => 'দেখানো হোক',
'listusers-noresult' => 'কোন ব্যবহারকারী খুঁজে পাওয়া যায়নি।',
+'listusers-blocked' => '(ব্লককৃত)',
+
+# Special:ActiveUsers
+'activeusers' => 'সক্রিয় ব্যবহারকারী তালিকা',
+'activeusers-hidebots' => 'বট লুকাও',
+'activeusers-hidesysops' => 'প্রশাসক লুকাও',
+'activeusers-noresult' => 'কোনো ব্যবহারকারী পাওয়া যায়নি।',
# Special:Log/newusers
'newuserlogpage' => 'ব্যবহারকারী সৃষ্টির লগ',
@@ -1632,7 +1702,7 @@ $NEWPAGE
--
আপনার নজরতালিকা সেটিংস পরিবর্তন করতে চাইলে এখানে যান:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
ফিডব্যাক ও আরও সহযোগিতার জন্য:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1676,8 +1746,8 @@ $NEWPAGE
'alreadyrolled' => '[[:$1]] পাতায় [[User:$2|$2]] ([[User talk:$2|আলাপ]])-এর করা শেষ সম্পাদনাটি রোলব্যাক করা যায়নি; অন্য কেউ ইতিমধ্যে পাতাটি সম্পাদনা বা রোলব্যাক করেছেন।
শেষ সম্পাদনা করেছেন [[User:$3|$3]] ([[User talk:$3|আলাপ]])।',
-'editcomment' => "সম্পাদনা সারাংশ ছিল: \"''\$1''\"।", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User_talk:$2|আলাপ]]) এর সম্পাদিত সংস্করণ হতে [[User:$1|$1]] এর সম্পাদিত সর্বশেষ সংস্করণে ফেরত যাওয়া হয়েছে।', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "সম্পাদনা সারাংশ ছিল: \"''\$1''\"।",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User_talk:$2|আলাপ]]) এর সম্পাদিত সংস্করণ হতে [[User:$1|$1]] এর সম্পাদিত সর্বশেষ সংস্করণে ফেরত যাওয়া হয়েছে।',
'rollback-success' => '$1-এর সম্পাদনাগুলি পূর্বাবস্থায় ফিরিয়ে নেওয়া হয়েছে; $2-এর করা শেষ সংস্করণে পাতাটি ফেরত নেওয়া হয়েছে।',
'sessionfailure' => 'আপনার লগ ইন সেশনে একটি সমস্যা হয়েছে বলে মনে হচ্ছে;
সেশন হাইজ্যাক প্রতিরোধের উপায় হিসেবে এই কাজটি বাতিল করা হয়েছে।
@@ -1696,7 +1766,6 @@ $NEWPAGE
'protectexpiry' => 'মেয়াদোত্তীর্ণ হবে:',
'protect_expiry_invalid' => 'মেয়াদোত্তীর্ণ সময় অবৈধ।',
'protect_expiry_old' => 'মেয়াদোত্তীর্ণ সময় অতীতে অবস্থিত।',
-'protect-unchain' => 'স্থানান্তরের অনুমতিগুলি খুলে দেওয়া হোক',
'protect-text' => "'''<nowiki>$1</nowiki>''' পাতাটির জন্য সুরক্ষার স্তর আপনি এখানে দেখতে ও পরিবর্তন করতে পারেন।",
'protect-locked-blocked' => "বাধাপ্রাপ্ত অবস্থায় আপনি পাতাটির সুরক্ষা স্তর পরিবর্তন করতে পারবেন না। এখানে '''$1''' পাতাটির বর্তমান সেটিংস দেওয়া হল:",
'protect-locked-dblock' => "ডাটাবেজ বন্ধ থাকায় সুরক্ষা স্তর পরিবর্তন করা যাবে না।
@@ -1724,7 +1793,7 @@ $NEWPAGE
** পাল্টা-গঠনমূলক সম্পাদনা যুদ্ধ
** বেশি মাত্রায় প্রদর্শনকৃত পাতা',
'protect-edit-reasonlist' => 'সম্পাদনা সুরক্ষার কারণ',
-'protect-expiry-options' => '২ ঘন্টা:2 hours,১ দিন:1 day,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '২ ঘন্টা:2 hours,১ দিন:1 day,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite',
'restriction-type' => 'অনুমতি:',
'restriction-level' => 'বাধার স্তর:',
'minimum-size' => 'ন্যূনতম আকার',
@@ -1759,6 +1828,7 @@ $NEWPAGE
'undelete-nodiff' => 'পূর্বের কোন সংশোধন খুঁজে পাওয়া যায়নি।',
'undeletebtn' => 'পুনরুদ্ধার',
'undeletelink' => 'দেখুন/পুনর্বহাল করুন',
+'undeleteviewlink' => 'দেখাও',
'undeletereset' => 'আদি অবস্থায় ফেরত',
'undeletecomment' => 'কারণ:',
'undeletedarticle' => '"[[$1]]"-কে পূর্বাবস্থায় ফেরত নেওয়া হয়েছে',
@@ -1794,7 +1864,7 @@ $1',
'contributions-title' => '$1 ব্যবহারকারীর অবদানসমূহ',
'mycontris' => 'আমার অবদান',
'contribsub2' => '$1 ($2)-এর জন্য',
-'nocontribs' => 'এই শর্তগুলির সাথে মিলে যায়, এমন কোন পরিবর্তন খুঁজে পাওয়া যায়নি।', # Optional parameter: $1 is the user name
+'nocontribs' => 'এই শর্তগুলির সাথে মিলে যায়, এমন কোন পরিবর্তন খুঁজে পাওয়া যায়নি।',
'uctop' => '(শীর্ষ)',
'month' => 'এই মাস (বা তার আগে) থেকে:',
'year' => 'এই বছর (এবং তার আগে) থেকে:',
@@ -1802,7 +1872,10 @@ $1',
'sp-contributions-newbies' => 'শুধু নতুন অ্যাকাউন্টের অবদানসমূহ দেখাও',
'sp-contributions-newbies-sub' => 'নতুন অ্যাকাউন্টের জন্য',
'sp-contributions-blocklog' => 'বাধা দানের লগ',
+'sp-contributions-deleted' => 'মুছে ফেলা ব্যবহারকারী অবদান',
'sp-contributions-logs' => 'লগসমূহ',
+'sp-contributions-talk' => 'আলোচনা',
+'sp-contributions-userrights' => 'ব্যবহারকারী অধিকার ব্যবস্থাপনা',
'sp-contributions-search' => 'অবদানসমূহের জন্য অনুসন্ধান',
'sp-contributions-username' => 'আইপি (IP) ঠিকানা অথবা ব্যবহারকারীর নাম:',
'sp-contributions-submit' => 'অনুসন্ধান',
@@ -1828,6 +1901,7 @@ $1',
# Block/unblock
'blockip' => 'ব্যবহারকারীকে বাধা দাও',
+'blockip-title' => 'ব্যবহারকারীকে বাধা দাও',
'blockip-legend' => 'ব্যবহারকারীকে বাধা দেওয়া হোক',
'blockiptext' => 'কোন নির্দিষ্ট আইপি ঠিকানা বা ব্যবহারকারীর লেখার অধিকারে বাধা দিতে নিচের ফর্মটি ব্যবহার করুন।
এটি কেবলমাত্র ধ্বংসপ্রবণতা প্রতিরোধে ও [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে সম্পাদন করা উচিত।
@@ -1851,7 +1925,7 @@ $1',
'ipbenableautoblock' => 'এই ব্যবহারকারীর ব্যবহার করা সর্বশেষ আইপি ঠিকানা, এবং পরবর্তী যেসব আইপি ঠিকানা থেকে সম্পাদনার চেষ্টা করা হবে, সেগুলিকেও স্বয়ংক্রিয়ভাবে বাধা দেয়া হোক।',
'ipbsubmit' => 'এই ব্যবহারকারীকে বাধা দেয়া হোক',
'ipbother' => 'অন্য সময়:',
-'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite',
'ipbotheroption' => 'অন্যান্য',
'ipbotherreason' => 'অন্য/আরও কারণ:',
'ipbhidename' => 'সম্পাদনা ও তালিকা থেকে ব্যবহারকারী নাম লুকিয়ে রাখা হোক',
@@ -1875,9 +1949,10 @@ $1',
'ipblocklist-legend' => 'বাধা দেওয়া কোন ব্যবহারকারীকে অনুসন্ধান করুন',
'ipblocklist-username' => 'ব্যবহারকারী নাম বা আইপি ঠিকানা:',
'ipblocklist-submit' => 'অনুসন্ধান',
+'ipblocklist-localblock' => 'স্থানীয় ব্লক',
'blocklistline' => '$1 তারিখে $2, $3 ($4) কে বাধা দিয়েছেন।',
'infiniteblock' => 'অসীম',
-'expiringblock' => 'শেষ হবে $1',
+'expiringblock' => '$1 তারিখের $2 এ মেয়াদোত্তীর্ণ হবে',
'anononlyblock' => 'শুধু বেনামীদের',
'noautoblockblock' => 'স্বয়ংক্রিয় বাধাদান নিষ্ক্রিয় করা হয়েছে',
'createaccountblock' => 'অ্যাকাউন্ট সৃষ্টিতে বাধা দেওয়া হয়েছে',
@@ -1959,7 +2034,7 @@ $1',
'move-watch' => 'এই পাতাটি নজরে রাখুন',
'movepagebtn' => 'পাতা সরান',
'pagemovedsub' => 'সরিয়ে নেওয়া হয়েছে',
-'movepage-moved' => '\'\'\'"$1"-কে "$2" শিরোনামে স্থানান্তর করা হয়েছে\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1"-কে "$2" শিরোনামে স্থানান্তর করা হয়েছে\'\'\'',
'movepage-moved-redirect' => 'একটি পুনর্নির্দেশনা তৈরি হয়েছে।',
'articleexists' => 'হয় এই শিরোনামের একটি নিবন্ধ ইতোমধ্যে সৃষ্টি হযে গেছে, অথবা আপনি যে শিরোনামটি পছন্দ করেছেন তা গ্রহণযোগ্য নয়। দয়া করে অন্য একটি শিরোনাম দিয়ে চেষ্টা করুন।',
'cantmove-titleprotected' => 'আপনি এই অবস্থানে পাতাটিকে স্থানান্তর করতে পারেন না, কারণ এই নতুন শিরোনামটি সৃষ্টি করা থেকে সুরক্ষিত।',
@@ -2002,15 +2077,19 @@ $1',
'export-download' => 'ফাইল হিসেবে সংরক্ষণ করা হোক',
# Namespace 8 related
-'allmessages' => 'সিস্টেম বার্তাসমূহ',
-'allmessagesname' => 'নাম',
-'allmessagesdefault' => 'আদি টেক্সট',
-'allmessagescurrent' => 'বর্তমান টেক্সট',
-'allmessagestext' => 'নিচে মিডিয়াউইকি: নামস্থানে অন্তর্ভুক্ত সিস্টেম বার্তাগুলোর তালিকা দেওয়া হল।
+'allmessages' => 'সিস্টেম বার্তাসমূহ',
+'allmessagesname' => 'নাম',
+'allmessagesdefault' => 'আদি টেক্সট',
+'allmessagescurrent' => 'বর্তমান টেক্সট',
+'allmessagestext' => 'নিচে মিডিয়াউইকি: নামস্থানে অন্তর্ভুক্ত সিস্টেম বার্তাগুলোর তালিকা দেওয়া হল।
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ব্যবহার করা যাবে না কারণ '''\$wgUseDatabaseMessages''' বন্ধ করে রাখা আছে।",
-'allmessagesfilter' => 'বার্তা নামের ফিল্টার:',
-'allmessagesmodified' => 'শুধু পরিবর্তিত অংশগুলো দেখাও',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ব্যবহার করা যাবে না কারণ '''\$wgUseDatabaseMessages''' বন্ধ করে রাখা আছে।",
+'allmessages-filter-legend' => 'ছাকনী',
+'allmessages-filter-unmodified' => 'অপরিবর্তিত',
+'allmessages-filter-all' => 'সমস্ত',
+'allmessages-filter-modified' => 'পরিবর্তিত',
+'allmessages-language' => 'ভাষা:',
+'allmessages-filter-submit' => 'চলো',
# Thumbnails
'thumbnail-more' => 'বড় করো',
@@ -2076,6 +2155,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-ca-viewsource' => 'এই পাতাটি সুরক্ষিত। আপনি পাতাটির সোর্স দেখতে পারেন।',
'tooltip-ca-history' => 'এই পাতার পুরনো সংস্করণগুলি',
'tooltip-ca-protect' => 'এই পাতাকে সুরক্ষিত করো',
+'tooltip-ca-unprotect' => 'এই পাতার সুরক্ষা সরিয়ে নিন',
'tooltip-ca-delete' => 'পাতাটি মুছে ফেলো',
'tooltip-ca-undelete' => 'পাতাটি মুছে ফেলার আগে যে সম্পাদনাগুলি করা হয়েছিল, সেগুলি উদ্ধার করা হোক।',
'tooltip-ca-move' => 'পাতাটি সরিয়ে ফেলুন',
@@ -2086,6 +2166,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'এই টেক্সটের জন্য পাতাগুলিতে অনুসন্ধান করা হোক',
'tooltip-p-logo' => 'প্রধান পাতা পরিদর্শন করুন',
'tooltip-n-mainpage' => 'প্রধান পাতায় যান',
+'tooltip-n-mainpage-description' => 'প্রধান পাতা পরিদর্শন করুন',
'tooltip-n-portal' => 'প্রকল্পের বৃত্তান্ত, আপনার করণীয়, কোথায় অনুসন্ধান করবেন',
'tooltip-n-currentevents' => 'বর্তমান ঘটনাবলির পটভূমিক তথ্য',
'tooltip-n-recentchanges' => 'উইকিতে সাম্প্রতিক পরিবর্তগুলির তালিকা',
@@ -2131,7 +2212,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => '{{SITENAME}} এর বেনামী ব্যবহারকারীবৃন্দ',
'siteuser' => '{{SITENAME}} ব্যবহারকারী $1',
-'lastmodifiedatby' => 'এই পাতাটিতে শেষ পরিবর্তন হয়েছিল $2, $1 by $3।', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'এই পাতাটিতে শেষ পরিবর্তন হয়েছিল $2, $1 by $3।',
'othercontribs' => '$1-এর কাজের উপর ভিত্তি করে।',
'others' => 'অন্যান্য',
'siteusers' => '{{SITENAME}} ব্যবহারকারী $1',
@@ -2162,6 +2243,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => 'আধুনিক ব্রাউজারগুলোর জন্য সুপারিশকৃত',
'mw_math_mathml' => 'সম্ভব হলে ম্যাথএমএল (MathML) (পরীক্ষামূলক)',
+# Math errors
+'math_failure' => 'পার্স করতে ব্যর্থ',
+'math_unknown_error' => 'অজানা ত্রুটি',
+'math_unknown_function' => 'অজানা ফাংশন',
+'math_lexing_error' => 'লেক্সিং ত্রুটি',
+'math_syntax_error' => 'সিনট্যাক্স ত্রুটি',
+'math_image_error' => 'PNG রূপান্তর ব্যর্থ; latex, dvips, gs, এবং convert ঠিকমত ইন্সটল হয়েছে কি না পরীক্ষা করুন',
+'math_bad_tmpdir' => 'সাময়িক ম্যাথ ডিরেক্টরি সৃষ্টি করতে বা এতে লিখতে পারা যাচ্ছে না।',
+'math_bad_output' => 'ম্যাথ আউটপুট ডিরেক্টরি সৃষ্টি করতে বা এতে লিখতে পারা যাচ্ছে না।',
+'math_notexvc' => 'texvc executable হারানো গেছে; অনুগ্রহ করে কনফিগার করার জন্য math/README দেখুন।',
+
# Patrolling
'markaspatrolleddiff' => 'পরীক্ষিত বলে চিহ্নিত করুন',
'markaspatrolledtext' => 'এই নিবন্ধটিকে পরীক্ষিত বলে চিহ্নিত করুন',
@@ -2233,7 +2325,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'চওড়া',
@@ -2360,14 +2452,14 @@ $1',
'exif-unknowndate' => 'অজানা তারিখ',
-'exif-orientation-1' => 'সাধারণ', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'অনুভূমিকভাবে উল্টানো', # 0th row: top; 0th column: right
-'exif-orientation-3' => '১৮০° ঘোরানো', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'উল্লম্বভাবে উল্টানো', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'ঘড়ির কাঁটার বিপরীতে ৯০° ঘোরানো এবং উল্লম্বভাবে উল্টানো', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'ঘড়ির কাঁটার দিকে ৯০° ঘোরানো', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'ঘড়ির কাঁটার দিকে ৯০° ঘোরানো এবং উল্লম্বভাবে উল্টানো', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'ঘড়ির কাঁটার বিপরীত দিকে ৯০° ঘোরানো', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'সাধারণ',
+'exif-orientation-2' => 'অনুভূমিকভাবে উল্টানো',
+'exif-orientation-3' => '১৮০° ঘোরানো',
+'exif-orientation-4' => 'উল্লম্বভাবে উল্টানো',
+'exif-orientation-5' => 'ঘড়ির কাঁটার বিপরীতে ৯০° ঘোরানো এবং উল্লম্বভাবে উল্টানো',
+'exif-orientation-6' => 'ঘড়ির কাঁটার দিকে ৯০° ঘোরানো',
+'exif-orientation-7' => 'ঘড়ির কাঁটার দিকে ৯০° ঘোরানো এবং উল্লম্বভাবে উল্টানো',
+'exif-orientation-8' => 'ঘড়ির কাঁটার বিপরীত দিকে ৯০° ঘোরানো',
'exif-planarconfiguration-1' => 'খণ্ড ফরম্যাট',
'exif-planarconfiguration-2' => 'সমতলীয় ফরম্যাট',
@@ -2477,7 +2569,7 @@ $1',
'exif-gpsmeasuremode-2' => 'দ্বিমাত্রিক পরিমাপ',
'exif-gpsmeasuremode-3' => 'ত্রিমাত্রিক পরিমাপ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'কিলোমিটার প্রতি ঘন্টা',
'exif-gpsspeed-m' => 'মাইল প্রতি ঘন্টা',
'exif-gpsspeed-n' => 'নট',
@@ -2496,6 +2588,7 @@ $1',
'watchlistall2' => 'সবগুলো',
'namespacesall' => 'সমস্ত',
'monthsall' => 'সমস্ত',
+'limitall' => 'সমস্ত',
# E-mail address confirmation
'confirmemail' => 'ই-মেইলের ঠিকানা নিশ্চিত করুন',
@@ -2515,13 +2608,18 @@ $1',
'confirmemail_loggedin' => 'আপনার ই-মেইল ঠিকানাটি নিশ্চিত করা হয়েছে।',
'confirmemail_error' => 'আপনার নিশ্চিতকরণ সংরক্ষণ করতে হয়তো কিছু সমস্যা হয়েছিল',
'confirmemail_subject' => '{{SITENAME}} ই-মেইল ঠিকানা নিশ্চিতকরণ',
-'confirmemail_body' => 'কেউ, সম্ভবত আপনি, $1 আইপি ঠিকানা থেকে, এই ই-মেইল ঠিকানাটি দিয়ে {{SITENAME}}-এ "$2" নামে অ্যাকাউন্ট খুলেছেন।
+'confirmemail_body' => 'কেউ একজন, সম্ভবত আপনি, $1 আইপি ঠিকানা থেকে,
+এই ই-মেইল ঠিকানাটি দিয়ে {{SITENAME}}-এ "$2" নামে অ্যাকাউন্ট খুলেছেন।
-এই অ্যাকাউন্টটি যে আসলেই আপনার তা নিশ্চিত করার জন্য এবং {{SITENAME}}-এ ই-মেইল ফিচারগুলি সক্রিয় করার জন্য আপনার ব্রাউজারে এই সংযোগটি খুলুন:
+এই অ্যাকাউন্টটি যে আসলেই আপনার তা নিশ্চিত করার জন্য এবং {{SITENAME}}-এ ই-মেইল বৈশিষ্ট্যগুলো সক্রিয় করার জন্য আপনার ব্রাউজারে এই সংযোগটি খুলুন:
$3
-যদি আপনি এই ব্যক্তি *না* হন, তবে সংযোগটি অনুসরণ করবেন না। $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত্তীর্ণ হয়ে যাবে।',
+যদি আপনি এই ব্যক্তি *না* হন, তাহলে ইমেইল ঠিকানা নিশ্চিতকরণ বাতিল করতে এই লিঙ্কটি অনুসরণ করুন"
+
+$5
+
+$4-এ নিশ্চিতকরণ কোডটি মেয়াদোত্তীর্ণ হয়ে যাবে।',
'confirmemail_invalidated' => 'ইমেইল ঠিকানা নিশ্চিতকরণ বাতিল হয়েছে',
'invalidateemail' => 'ইমেইল নিশ্চিতকরণ বাতিল করুন',
@@ -2613,7 +2711,7 @@ $1',
'unknown_extension_tag' => 'অজানা এক্সটেনশন ট্যাগ "$1"',
# Special:Version
-'version' => 'সংস্করণ', # Not used as normal message but as header for the special page itself
+'version' => 'সংস্করণ',
'version-specialpages' => 'বিশেষ পাতাসমূহ',
'version-other' => 'অন্য',
'version-license' => 'লাইসেন্স',
@@ -2663,4 +2761,8 @@ $1',
# Database error messages
'dberr-header' => 'এই উইকিতে কোন সমস্যা রয়েছে',
+# HTML forms
+'htmlform-submit' => 'জমা দাও',
+'htmlform-selectorother-other' => 'অন্য',
+
);
diff --git a/languages/messages/MessagesBo.php b/languages/messages/MessagesBo.php
index ca207fc5..1913215a 100644
--- a/languages/messages/MessagesBo.php
+++ b/languages/messages/MessagesBo.php
@@ -78,12 +78,14 @@ $messages = array(
# Categories related messages
'subcategories' => 'རིགས་ཕལ་བ།',
-'about' => 'ཨཱབོཨུཏ་',
-'cancel' => 'དོར་བ།',
+'about' => 'ཨཱབོཨུཏ་',
+'cancel' => 'དོར་བ།',
+'mytalk' => 'ངའི་གླེང་མོལ།',
+'navigation' => 'དཀར་ཆག',
+
+# Cologne Blue skin
'qbedit' => 'རྩོམ་སྒྲིག',
'qbspecialpages' => 'དམིཊ་བསལ་གྱི་བཟོ་བཅོས།',
-'mytalk' => 'ངའི་གླེང་མོལ།',
-'navigation' => 'དཀར་ཆག',
'help' => 'རོགས་རམ།',
'search' => 'འཚོལ།',
@@ -135,9 +137,6 @@ $messages = array(
'nologinlink' => 'ཐོ་ཞིག་འགོད་པ།',
'createaccount' => 'ཐོ་འགོད།',
'gotaccountlink' => 'ནང་འཛུལ།',
-'youremail' => 'དྲ་འཕྲིན། *:',
-'username' => 'དྲ་མིང་།:',
-'email' => 'དྲ་འཕྲིན།',
# Edit pages
'summary' => 'བསྡུས་དོན།:',
@@ -161,6 +160,9 @@ $messages = array(
'prefsnologin' => 'ནང་འཛུལ་བྱས་མེད།',
'prefs-rc' => 'ཉེ་བའི་བཟོ་བཅོས།',
'searchresultshead' => 'འཚོལ།',
+'youremail' => 'དྲ་འཕྲིན། *:',
+'username' => 'དྲ་མིང་།:',
+'email' => 'དྲ་འཕྲིན།',
# Recent changes
'recentchanges' => 'ཉེ་བའི་བཟོ་བཅོས།',
@@ -168,7 +170,9 @@ $messages = array(
'newpageletter' => 'ཎེ',
# Recent changes linked
-'recentchangeslinked' => 'འབྲེལ་བའི་བཟོ་བཅོས།',
+'recentchangeslinked' => 'འབྲེལ་བའི་བཟོ་བཅོས།',
+'recentchangeslinked-feed' => 'འབྲེལ་བའི་བཟོ་བཅོས།',
+'recentchangeslinked-toolbox' => 'འབྲེལ་བའི་བཟོ་བཅོས།',
# Upload
'upload' => 'ཡར་འཇོག',
@@ -181,8 +185,8 @@ $messages = array(
# Random page
'randompage' => 'རང་མོས་ཤོག་ངོས།',
-'brokenredirects-edit' => '(རྩོམ་སྒྲིག )',
-'brokenredirects-delete' => '(གསུབ་པ།)',
+'brokenredirects-edit' => 'རྩོམ་སྒྲིག',
+'brokenredirects-delete' => 'གསུབ་པ།',
# Miscellaneous special pages
'newpages-username' => 'དྲ་མིང་།:',
diff --git a/languages/messages/MessagesBpy.php b/languages/messages/MessagesBpy.php
index d34f8f30..6d431475 100644
--- a/languages/messages/MessagesBpy.php
+++ b/languages/messages/MessagesBpy.php
@@ -27,24 +27,22 @@ $digitTransformTable = array(
);
$namespaceNames = array(
- NS_MEDIA => 'মিডিয়া',
- NS_SPECIAL => 'বিশেষ',
- NS_MAIN => '',
- NS_TALK => 'য়্যারী',
- NS_USER => 'আতাকুরা',
- NS_USER_TALK => 'আতাকুরার_য়্যারী',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_য়্যারী',
- NS_FILE => 'ছবি',
- NS_FILE_TALK => 'ছবি_য়্যারী',
- NS_MEDIAWIKI => 'মিডিয়াউইকি',
- NS_MEDIAWIKI_TALK => 'মিডিয়াউইকির_য়্যারী',
- NS_TEMPLATE => 'মডেল',
- NS_TEMPLATE_TALK => 'মডেলর_য়্যারী',
- NS_HELP => 'পাংলাক',
- NS_HELP_TALK => 'পাংলাকর_য়্যারী',
- NS_CATEGORY => 'থাক',
- NS_CATEGORY_TALK => 'থাকর_য়্যারী',
+ NS_MEDIA => 'মিডিয়া',
+ NS_SPECIAL => 'বিশেষ',
+ NS_TALK => 'য়্যারী',
+ NS_USER => 'আতাকুরা',
+ NS_USER_TALK => 'আতাকুরার_য়্যারী',
+ NS_PROJECT_TALK => '$1_য়্যারী',
+ NS_FILE => 'ছবি',
+ NS_FILE_TALK => 'ছবি_য়্যারী',
+ NS_MEDIAWIKI => 'মিডিয়াউইকি',
+ NS_MEDIAWIKI_TALK => 'মিডিয়াউইকির_য়্যারী',
+ NS_TEMPLATE => 'মডেল',
+ NS_TEMPLATE_TALK => 'মডেলর_য়্যারী',
+ NS_HELP => 'পাংলাক',
+ NS_HELP_TALK => 'পাংলাকর_য়্যারী',
+ NS_CATEGORY => 'থাক',
+ NS_CATEGORY_TALK => 'থাকর_য়্যারী',
);
$messages = array(
@@ -78,6 +76,7 @@ $messages = array(
'tog-enotifminoredits' => 'মরে ইমেইল কর পাতা আহানর পতানিহান হুরু ইলেউ',
'tog-enotifrevealaddr' => 'জানানি মেইল অতাত মর ইমেইলর ঠিকানাহান ফঙকর',
'tog-shownumberswatching' => 'চাকুরার সংখ্যাহান দেহাদে',
+'tog-oldsig' => 'স্বাক্ষরর আগচা:',
'tog-fancysig' => 'স্বাক্ষরহানরে উইকিটেক্সট বুলিয়া নিংকর (নিজেত্ত লিঙ্ক নেইকরিয়া)',
'tog-externaleditor' => 'পয়লাকাত্তই বারেদের পতানির আতিয়ার আতা',
'tog-externaldiff' => 'পয়লাকাত্ত বারেদের ফারাকহান আতা',
@@ -100,6 +99,13 @@ $messages = array(
'underline-never' => 'সুপৌনা',
'underline-default' => 'বাউজারগত যেসারে আসিল',
+# Font style option in Special:Preferences
+'editfont-style' => 'পতানি লয়ার ফন্ট স্টাইল:',
+'editfont-default' => 'ব্রাউজার ডিফল্ট',
+'editfont-monospace' => 'মনোস্পেস ফন্ট',
+'editfont-sansserif' => 'সেন্স-সেরিফ ফন্ট',
+'editfont-serif' => 'সেরিফ ফন্ট',
+
# Dates
'sunday' => 'লামুইসিং',
'monday' => 'নিংথৌকাপা',
@@ -159,7 +165,7 @@ $messages = array(
'category-media-header' => '"$1" থাকর মিডিয়া',
'category-empty' => "''এরে থাক এহাত এবাকা কোন পাতা বা মিডিয়া নেই''",
'hidden-categories' => '{{PLURAL:$1|গুরিসি থাকহান|গুরিসি থাকহানি}}',
-'hidden-category-category' => 'আরুম করিসি থাকহানি', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'আরুম করিসি থাকহানি',
'category-subcat-count' => '{{PLURAL:$2|এরে বিষয়থাকে হুদ্দা তলর উপবিষয়থাকহানি আসে।|এরে বিষয় থাকে তিলসে মোট $2হান উপবিষয়থাকর মা {{PLURAL:$1|হান উপবিষয়থাক|$1হান উপবিষয়থাক}} তলে দেহানি ইল।}}',
'category-subcat-count-limited' => 'এরে বিষয়থাকে তলর {{PLURAL:$1|হান উপবিষয়থাক|$1হান উপবিষয়থাক আসে}}',
'category-article-count' => '{{PLURAL:$2|এরে বিষয়থাকে হুদ্দা তলর পাতাহান আসে।|এরে বিষয়থাকে তিলসে মোট $2হান পাতার মা {{PLURAL:$1|হান পাতা|$1হান পাতা}} তলে দেখাদেনা ইল।}}',
@@ -167,6 +173,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|এরে বিষয়থাকে হুদ্দা তলর ফাইলগ আসে।|এরে বিষয়থাকে তলে {{PLURAL:$1|গ ফাইল|$1 গি ফাইল}} আসে, হাবিয়ে $2 গর মা।}}',
'category-file-count-limited' => 'তলে {{PLURAL:$1|গ ফাইল|$1 গি ফাইল}} এরে বিষয়থাকে আসে।',
'listingcontinuesabbrev' => 'চলতই',
+'index-category' => 'ইনডেক্স করিসি পাতাহানি',
+'noindex-category' => 'ইনডেক্স নাকরিসি পাতাহানি',
'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইন্সটল ইল.'''",
'mainpagedocfooter' => 'উইকি সফটৱ্যার এহান আতানির বারে দরকার ইলে [http://meta.wikimedia.org/wiki/Help:Contents আতাকুরার গাইড]হানর পাঙলাক নেগা।
@@ -177,10 +185,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ মিডিয়া উইকি আঙলাক]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়া উইকির ফঙপার বারে মেইলর তালিকাহান]',
-'about' => 'বারে',
-'article' => 'মেথেলর পাতা',
-'newwindow' => '(নুৱা উইন্ডত নিকুলতই)',
-'cancel' => 'বাতিল করেদে',
+'about' => 'বারে',
+'article' => 'মেথেলর পাতা',
+'newwindow' => '(নুৱা উইন্ডত নিকুলতই)',
+'cancel' => 'বাতিল করেদে',
+'moredotdotdot' => 'আরাকউ...',
+'mypage' => 'মর পাতাহান',
+'mytalk' => 'মর য়্যারি-পরি',
+'anontalk' => 'অচিনা এগর য়্যারির পাতা',
+'navigation' => 'দিশা-ধরুনী',
+'and' => '&#32;বারো',
+
+# Cologne Blue skin
'qbfind' => 'বিসারিয়া চা',
'qbbrowse' => 'বুলিয়া চা',
'qbedit' => 'পতানি',
@@ -188,15 +204,35 @@ $messages = array(
'qbpageinfo' => 'পাতা এহানর পৌ',
'qbmyoptions' => 'মর পছন',
'qbspecialpages' => 'বিশেষ পাতাহানি',
-'moredotdotdot' => 'আরাকউ...',
-'mypage' => 'মর পাতাহান',
-'mytalk' => 'মর য়্যারি-পরি',
-'anontalk' => 'অচিনা এগর য়্যারির পাতা',
-'navigation' => 'দিশা-ধরুনী',
-'and' => '&#32;বারো',
-
-# Metadata in edit box
-'metadata_help' => 'মেটাডাটা:',
+'faq' => 'আঙলাক',
+'faqpage' => 'Project:আঙলাক',
+
+# Vector skin
+'vector-action-addsection' => 'বিষয় তিলকর',
+'vector-action-delete' => 'পুসে বেলা',
+'vector-action-move' => 'থেইকর',
+'vector-action-protect' => 'লুকর',
+'vector-action-undelete' => 'নাপুসি',
+'vector-action-unprotect' => 'নালুকরি',
+'vector-namespace-category' => 'বিষয়র থাক',
+'vector-namespace-help' => 'পাঙলাক পাতা',
+'vector-namespace-image' => 'ফাইল',
+'vector-namespace-main' => 'পাতা',
+'vector-namespace-media' => 'মিডিয়া পাতা',
+'vector-namespace-mediawiki' => 'পৌ',
+'vector-namespace-project' => 'প্রকল্প পাতা',
+'vector-namespace-special' => 'বিশেষ পাতা',
+'vector-namespace-talk' => 'য়্যারি',
+'vector-namespace-template' => 'মডেল',
+'vector-namespace-user' => 'আতাকুরার পাতা',
+'vector-view-create' => 'হঙকরিক',
+'vector-view-edit' => 'পতানি',
+'vector-view-history' => 'ইতিহাস চেইক',
+'vector-view-view' => 'পাকরিক',
+'vector-view-viewsource' => 'সোর্স চেইক',
+'actions' => 'কার্যক্রম',
+'namespaces' => 'নাঙরলাম',
+'variants' => 'ভেরিয়েন্টহানি',
'errorpagetitle' => 'লাল',
'returnto' => '$1-ত আলথকে যাগা।',
@@ -246,18 +282,22 @@ $messages = array(
'otherlanguages' => 'আরআর ঠারে',
'redirectedfrom' => '($1 -ত্ত পাকদিয়া আহিল)',
'redirectpagesub' => 'কুইপা পাতা',
-'lastmodifiedat' => 'পাতা এহানর লমিলগা পতানিহান $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'পাতা এহানর লমিলগা পতানিহান $2, $1.',
'viewcount' => 'পাতা এহান {{PLURAL:$1|মাউ|$1 মাউ}} চানা ইল।',
'protectedpage' => 'লুকরা পাতা',
'jumpto' => 'চঙদে:',
'jumptonavigation' => 'দিশা ধরানি',
'jumptosearch' => 'বিসারা',
+'view-pool-error' => 'ঙাক্করবাং, সার্ভারগ এপাগা ওভারলোড অসে।
+আবকচা চাকুরাই আকপাকে চেইতারা।
+ডান্ড আহান বাসা পাতা এহান মেলানির কা।
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}র বারে',
'aboutpage' => 'Project:বারে',
'copyright' => '$1-র মাতুঙে এহানর মেথেলহানি পানা একরের।',
-'copyrightpagename' => '{{SITENAME}} স্বত্তাধিকারহান',
'copyrightpage' => '{{ns:project}}:স্বত্তাধিকারহানি',
'currentevents' => 'হাদি এহানর ঘটনা',
'currentevents-url' => 'Project:হাদি এহানর ঘটনাহানি',
@@ -265,8 +305,6 @@ $messages = array(
'disclaimerpage' => 'Project:ইজ্জু দাবি বেলানি',
'edithelp' => 'পতানি পাংলাক',
'edithelppage' => 'Help:কিসাদে_পাতা_আহান_পতানি',
-'faq' => 'আঙলাক',
-'faqpage' => 'Project:আঙলাক',
'helppage' => 'Help:পাংলাক',
'mainpage' => 'পয়লা পাতা',
'mainpage-description' => 'পয়লা পাতা',
@@ -346,7 +384,6 @@ $messages = array(
"$1"
"$2" ফাংশনর ভিতরেত্ত।
ডাটাবেজ লাল হান দিল: "$3: $4"।',
-'cachederror' => 'এরে পাতা এহান বা লাতলগ পুছানি নাকরল। (নিঙকরুরিতাঃ আগেদে কুঙগ আগই পুছে বেলাসিসাত)',
'laggedslavemode' => "'''সিঙুইস:''' পাতা এহানাত হাদি এহানার পতানি নেই।",
'readonly' => 'ডাটাবেস গাথি লাগিসে',
'enterlockreason' => 'তালা দেনার কারণহান মাত, লগে কুম্পাগা মুকিতেই অহান মাত',
@@ -364,6 +401,7 @@ $messages = array(
'readonly_lag' => 'ডাটাবেজহান তার তুন তাই বন্ধ ইসে, তার তলর ডাটাবেজ অতাই মানক ডাটাবেজহানর লগ দরে পারবাতা বুলিয়া',
'internalerror' => 'বিতরর লাল',
'internalerror_info' => 'ভিতরর লাল: $1',
+'fileappenderror' => '"$1" লগে "$2" মিল করানি নাইল।',
'filecopyerror' => '"$1" ত্ত "$2" ফাইল কপি করানি নুৱারলাং',
'filerenameerror' => '"$1" ফাইলগর নাঙহান সিলকরিয়া "$2" থনা নাইল।',
'filedeleteerror' => '"$1" ফাইলগ পুসানি সম্ভব নাইল।',
@@ -373,6 +411,8 @@ $messages = array(
'unexpected' => 'মানহান লালুইসে: "$1"="$2"।',
'formerror' => 'লাল: ফরমহান জমা দেনা নাইল',
'badarticleerror' => 'এরে পাতা এহান কাম এহান করানি সম্ভব নেই।',
+'cannotdelete' => '"$1" নাঙর ফাইলগ/পাতাহান পুসানি নাইল।
+এহান হয়ত আরাক আগই পুসে বেলাসি সাত।',
'badtitle' => 'চিঙনাঙহান চুমনাইসে নাইসে।',
'badtitletext' => 'হেইচা করিসত পাতাহানর চিঙনাঙহান চুম নাইসে, খালি বা আর ঠার বা আন্তঃউইকি চিঙনাঙ মিলাপ অসিল। হয়ত এহানত আক বারো গজে কোন আখর মিহিসে, যেতা চিঙনাঙে বরানি লালুইসে।',
'perfcached' => 'তলর পৌ অতা ক্যাশেত্ত দেহাদেরতা অহানে হালনাগাদ না-ও ইতে পারে:',
@@ -404,14 +444,12 @@ $2',
'virus-unknownscanner' => 'হারনাপাসি এন্টিভাইরাস:',
# Login and logout pages
-'logouttitle' => 'আতাকুরার নিকুলানি',
'logouttext' => "'''তি খানি আগে তর একাউন্টহাত্ত নিকুরিসত।'''
এ পরিস্থিতিত তি বেনাঙল {{SITENAME}} ব্যবহার করানি পারর, নাইলে আরাক নাঙল [[Special:UserLogin|বারো হমানি]] পারর।
খিয়াল থ, কোন কোন পাতা তি আগর অংতাত আসত বুলিয়া দেখা দিতে পারে। অসারে ইলে তি ব্রাওজারর ক্যাশ সেঙকরে বেলা (clear browser cache)।",
'welcomecreation' => '==সম্ভাষা, $1! ==
তর একাউন্টহান হঙিল। তর [[Special:Preferences|{{SITENAME}} পছনহান]] সিলানি না পাহুরিস।',
-'loginpagetitle' => 'আতাকুরার হমানি',
'yourname' => 'আতাকুরার নাংহান (Username)',
'yourpassword' => 'খন্তাচাবিগ (password)',
'yourpasswordagain' => 'খন্তাচাবিগ (password) আরাকমু ইকর',
@@ -433,16 +471,8 @@ $2',
'createaccountmail' => 'ই-মেইলন',
'badretype' => 'খন্তাচাবি (password) দ্বিয়গি না মিলের।',
'userexists' => 'এরে আতাকুরার নাঙ এহান আরাক আগই আগে ব্যবহার করিসে। তি আরাক নাঙ আহান বাছ।',
-'youremail' => 'ই-মেইল *:',
-'yourrealname' => 'আৱৈপা নাংহান *:',
-'yourlanguage' => 'ঠারহান:',
-'yournick' => 'দাহানির নাংহান:',
-'gender-male' => 'মুনি',
-'gender-female' => 'জেলা',
-'email' => 'ইমেইল',
-'prefs-help-realname' => 'আয়ৌপা নাংহান নাদলেউ চলের।
-যদি তি দের অতাইলে তর কামর থাকাত দেনাত সুবিধা অইতই।',
'loginerror' => 'লগইনে লালুইসে',
+'createaccounterror' => 'একাউন্টহান হঙকরানি নুৱারলাং: $1',
'nocookiesnew' => 'আতাকুরার একাউন্টহান হঙপরিলগা কিন্তু তি এপাগাউ লগইন নাকরিসত।
{{SITENAME}} এহানে কুকিল আতাকুরারে লগইন করের।
তি কুকিহানি আতুর করিয়া থসত।
@@ -461,8 +491,8 @@ $2',
আলথকে হতনা কর।',
'wrongpasswordempty' => 'খন্তা চাবি খালি ইসে।
বারো হতনা কর।',
-'passwordtooshort' => 'খন্তাচাবি লালুইসে নাইলে বাট্টি ইসে।
-খন্তাচাবি যেসারেউ {{PLURAL:$1|মেয়েক আকগর|$1 মেয়েকগির}} বারো আতাকুরার নাঙেত্ত তঙাল অনা লাগতই।',
+'passwordtooshort' => 'খন্তাচাবি যেসারেউ {{PLURAL:$1|মেয়েক আকগর|$1 মেয়েকর}} অনা লাগতই।',
+'password-name-match' => 'তর আতাকুরার নাঙহানে বারো খন্তাচাবিয়ে তঙাল অনা লাগতই।',
'mailmypassword' => 'নুৱা খন্তাচাবি ইমেইল করেদে',
'passwordremindertitle' => 'নুয়া খন্তাচাবি {{SITENAME}}র কাজে',
'passwordremindertext' => 'কুঙগ আগই (মনে অর তি, $1 আইপি ঠিকানা এহাত্ত) হেইচা করিসত যে আমি তরে {{SITENAME}}-র কা আরাক নুৱা খন্তাচাবি দিয়া পেঠাদেনার কা ($4)।
@@ -474,6 +504,7 @@ $2',
যদি আরাক আগই কাম এহান করিয়া থাইতারা বারো তি তর পুরানা খন্তাচাবি নিঙইয়া থাইলে বারো পুরানা খন্তাচাবি বদালানি না মনেইলে, তি এহান উচিত না করে পারর বারো পুরা খন্তাচাবিগ ব্যবহার করে পারর।',
'noemail' => 'এহানাত আতাকুরা "$1"র কুন ইমেল ঠিকানা নেয়সে।',
+'noemailcreate' => 'তি চুম্পা ইমেইল ঠিকানা আহান দে',
'passwordsent' => 'নুৱা খন্তাচাবি দিয়াপেঠানি ইল আতাকুরা "$1"র ইমেইল ঠিকানাত।
কৃপা করিয়া লগইন কর পানার লগে লগে।',
'blocked-mailpassword' => 'তর আইপি ঠিকানাহানরে পতানিত থেপ করানি অসে, অহানে এরে ঠিকানা এহানর অপব্যবহার করিয়া খন্তাচাবি আলথক করানি নাকরব।',
@@ -495,6 +526,7 @@ $2',
'createaccount-text' => 'কুঙগআগই $2-র কা {{SITENAME}}র মা অ্যাকাউন্ট হঙকরিসি ($4)। "$2"র কা খন্তাচাবিগ ইলতাই "$3"। তরতা এপাগা অ্যাকাউন্টর মা হমিয়া খন্তা চাবিগ বদালানি থক।
যদি আপ্পানে বা ভুল করিয়া অ্যাকাউন্ট এহান হঙকরিয়া থার, অতাইলে পৌ এহান ইগনর কর।',
+'usernamehasherror' => 'আতাকুরার নাঙে hash মেয়েক থানা নুৱারব',
'login-throttled' => 'হাদি এহান তি বারে বারে হমানির হৎনা করিসত।
বারো হৎনা করানির আগে খানি ঝিরা।',
'loginlanguagelabel' => 'ঠার: $1',
@@ -583,7 +615,6 @@ $2',
'blockededitsource' => "'''$1'''ত '''তর পতাসত''' ইকা দেখাদেনা অইল:",
'whitelistedittitle' => 'পতানির কা লগইন করানি লাগতই',
'whitelistedittext' => 'পাতাহান পতানিরকা $1 করানি লাগতই।',
-'confirmedittitle' => 'সম্পাদনা করানির কা ই-মেইল লেপকানি থকিতই',
'confirmedittext' => 'যেহানউ সম্পাদনা করানির আগে তর ই-মেইল ঠিকানাহন যেসাদেউ লেপকরানি লাগতই। কৃপাকরিয়া তর ই-মেইল ঠিকানাহান [[Special:Preferences|আতাকুরার পছনতালিকা]]ত চুমকরে বরা।',
'nosuchsectiontitle' => 'এসাদে কোন অনুচ্ছেদ নেই',
'nosuchsectiontext' => 'তি এসাদে পরিচ্ছেদ আহান পতানির হৎনা করর যেহানর কোন অস্তিত্ব নেই। $1 নাঙর কোন পরিচ্ছেদ নেই অহানে ইতু করানিরউ কোন জাগা নেই।',
@@ -602,9 +633,15 @@ $2',
আক্কুসে এসাদে আকহান আইপি ব্যবহার করতে পারে।
অহানে তি নিশ্চকে এরে আইপি এহাত্ত উইকিপিডিয়াত হমিয়া কোন হবানেই য়্যারী দেখর, অহান তরে নিঙকরিয়া নাউ ইতে পারে। অহানে হাবিত্ত হবা অর, তি যদি [[Special:UserLogin|লগ-ইন]] করর, নাইলে [[Special:UserLogin/signup|নুৱা একাউন্ট খুলর]] অতা ইলে এসাদে ভুল বুঝাবুঝি নাইব।''",
'noarticletext' => 'এপাগা এরে পাতাত কোন লেখা নেই। তি মনেইলে হের পাতাহান [[Special:Search/{{PAGENAME}}|এরে চিঙনাঙল বিসারা পারর]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} এহানর বারে লগ বিসারা পারর], নাইলে [{{fullurl:{{FULLPAGENAME}}|action=edit}} এরে পাতা এহান পতা পারর।]',
+'noarticletext-nopermission' => 'এপাগাউ কোন মেয়েক নেই পাতা এহাত।
+তি [[Special:Search/{{PAGENAME}}|এরে পাতার চিঙনাঙ এহানল বিসারা]] হের পাতা অতাত,
+নাইলে <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} মিল আসে লগ অতাত বিসারা]</span>।',
'userpage-userdoesnotexist' => 'আতাকুরা "$1"র অ্যাকাউন্টহান না হঙিসে।
তি পাতা এহান হঙকরানি/পতানি চারাতানা কিতা খালকরিয়া চা।',
+'userpage-userdoesnotexist-view' => 'আতাকুরার একাউন্ট "$1" না মিহিসে।',
'clearyourcache' => "'''খিয়াল থ:''' তর পছনহানি রক্ষা করানির থাঙনাত পতাহানি চানার কা তর ব্রাউজারর ক্যাশ লালুয়া যানা লাগতে পারে। '''মোজিলা/ফায়ারফক্স/সাফারি:''' শিফট কী চিপিয়া থয়া রিলোড-এ ক্লিক কর, নাইলে ''কন্ট্রোল-শিফট-R''(এপল ম্যাক-এ ''কমান্ড-শিফট-R'') আকপাকে চিপা; '''ইন্টারনেট এক্সপ্লোরার:''' ''কন্ট্রোল'' চিপিয়া থয়া রিফ্রেশ-এ ক্লিক কর, নাইলে ''কন্ট্রোল-F5'' চিপা; '''কংকারার:''' হুদ্দা রিলোড ক্লিক করলে বা F5 চিপিলে চলতই; '''অপেরা''' আতাকুরাই ''Tools→Preferences''-এ গিয়া কাশ সম্পূর্ণ ঙক্ষি করানি লাগতে পারে।",
+'usercssyoucanpreview' => "'''টিপ:''' 'আগচা' গুথামগত যাতিয়া তর সিএসএস অতা চুমিসেতানা কিতা হবা করে চা।",
+'userjsyoucanpreview' => "'''টিপ:''' 'আগচা' গুথামগত যাতিয়া তর জাভাস্ক্রিপ্ট অতা চুমিসেতানা কিতা হবা করে চা।",
'usercsspreview' => "'''তি মনে থইস এহান তর সিএসএসর আগচাহান।'''
'''এহান এপাগাউ ইতু নাইসে!'''",
'userjspreview' => "'''তি মনে থইস এহান তর জাভাস্ক্রিপ্টর পরীক্ষা/আগচাহান।'''
@@ -644,8 +681,9 @@ $2',
'''স্বত্ব সংরক্ষিত অসে অসাদে কোন লেখা স্বত্বাধিকারীর য়্যাথাঙ না লুইয়া এহাত জমা না দিস!'''",
'longpagewarning' => "'''সিঙুইস: এরে পাতা এহান $1 কিলোবাইট ডাঙর; ব্রাউজার আকেইগত ৩২ কিলোবাইটর গজে ডাঙর পাতানিত বেরা ইতে পারে।
দয়া করিয়া পাতা এহানরে হুরকা হুরকা কত অংশত খেইকরানির হতনা কর।'''",
-'templatesused' => 'পাতাহান মডেল বরাসিতা:',
-'templatesusedpreview' => 'আগচা এহানাত মিহিসে মডেল:',
+'templatesused' => 'পাতাহাত বরাসি {{PLURAL:$1|মডেল|মডেলহানি}}:',
+'templatesusedpreview' => 'আগচা এহানাত মিহিসে {{PLURAL:$1|মডেল|মডেলহানি}}:',
+'templatesusedsection' => 'এহাত {{PLURAL:$1|মডেল|মডেলহানি}} তিলুইসে:',
'template-protected' => '(লুকরিসি)',
'template-semiprotected' => '(আধা-কাচা লুকরিসি)',
'hiddencategories' => 'এ পাতা এহান যে {{PLURAL:$1|১ নাফঙিসে বিষয়থাকর|$1 নাফঙিসে বিষয়থাকহানির}} সদস্য:',
@@ -653,12 +691,15 @@ $2',
'nocreatetext' => '{{SITENAME}}-এরে নুৱা পাতা এহানর পতানিহানাত থিতপা আসে।
তি আলথকে গিয়া আসে হের পাতা সিলকরানি পারর, নাইলে [[Special:UserLogin|অ্যাকাউন্টহানাত হমানি বারো অ্যাকাউন্ট খুলে পারর]]।',
'nocreate-loggedin' => 'তরতা নুৱা পাতা হঙকরানির য়্যাথাং নেই।',
+'sectioneditnotsupported-title' => 'অনুচ্ছেদ বদালানি নাকরের',
+'sectioneditnotsupported-text' => 'এরে পাতা এহান অনুচ্ছেদ বদালানি থা নেই',
'permissionserrors' => 'য়্যাথাঙে লালুইসে',
'permissionserrorstext-withaction' => 'তরতা $2 -ত য়্যাথাং নেই, অহানর {{PLURAL:$1|কারণ|কারণহানি}}:',
-'recreate-deleted-warn' => "'''সিঙুইস: তি যে পতাহান হঙকরলে অহান আগে আরাকমু হঙকরানি অসিল।
+'recreate-moveddeleted-warn' => "'''সিঙুইস: তি যে পাতাহান হঙকরলে অহান আগে পুসানি অসিল।
পাতা এহান তি আরাতা হঙকরতেইতানা কিতা খালকরিয়া চা।
তর সুবিধারকা পাতা এহানর পুসিসি লগ এহানাত দেনা ইল:",
+'log-fulllog' => 'পুরা লগ চা',
'edit-gone-missing' => 'পাতাহান আপডেট করানি নুৱারলাং।
পাতাহান পুস পরসেগা সাত।',
'edit-conflict' => 'পতানিত বেসেপ ইসে',
@@ -676,8 +717,9 @@ $2',
'viewpagelogs' => 'পাতাহানর লগ চা',
'nohistory' => 'পাতা এহান পতানির কোন ইতিহাস নেই।',
'currentrev' => 'হাদিএহানর পতানি',
+'currentrev-asof' => '$1র মাতুঙে এবাকার সংস্করণহান',
'revisionasof' => 'রিভিসনহান $1 পেয়া',
-'revision-info' => '$1 পেয়া $2-এ পতাসেতা', # Additionally available: $3: revision id
+'revision-info' => '$1 পেয়া $2-এ পতাসেতা',
'previousrevision' => '←পুরানা পতানিহান',
'nextrevision' => 'নুৱা ভার্সনহান→',
'currentrevisionlink' => 'হাদি এহানর পতানি',
@@ -689,6 +731,7 @@ $2',
'histlegend' => 'ফারাক (Diff) বাছানি: যে সংস্করণহানি তুলনা করানি চার, অহান লেপকরিয়া এন্টার বা তলর খুথামগত যাতা।<br />
নির্দেশিকা: (এব) = এবাকার সংস্করণহানর লগে ফারাক,(আ) = জানে আগে-আগে গেলগা সংস্করণহানর লগে ফারাক, হ = হুরু-মুরু (নামাতলেউ একরব অসারে) সম্পাদনাহান।',
'history-fieldset-title' => 'ইতিহাসহান ব্রাউজ কর',
+'history-show-deleted' => 'হুদ্দা পুসানি অইল',
'histfirst' => 'হাব্বিত্ত পুরানা',
'histlast' => 'হাব্বিত্ত নুৱা',
'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
@@ -696,36 +739,46 @@ $2',
# Revision feed
'history-feed-title' => 'ইতিহাসহান চুমকর',
-'history-feed-item-nocomment' => '$1 খেন্তাম $2 ত', # user at time
+'history-feed-item-nocomment' => '$1 খেন্তাম $2 ত',
# Revision deletion
-'rev-deleted-comment' => '(মন্তব্য থেইকরলাং)',
-'rev-deleted-user' => '(আতাকুরার নাঙহান থেইকরলাং)',
-'rev-deleted-event' => '(লগ অ্যাকশন থেইকরলাং)',
-'rev-delundel' => 'ফঙ/আরুম কর',
-'revisiondelete' => 'পতানিহান পুস/নাপুসি',
-'revdelete-nooldid-title' => 'টার্গেট চুমকরানি লালুইসে',
-'revdelete-nologtype-title' => 'লগ টাইপ না দিয়াসি',
-'revdelete-nologtype-text' => 'কাম এহান করানির কা কি জাতর লগ লেপ নাকরিসত।',
-'revdelete-nologid-title' => 'লগর পারেঙহানি চুম নাইসে',
-'revdelete-legend' => 'আহির ফঙে থনা হান সিতকর',
-'revdelete-hide-text' => 'চুমকরিসত ইকা গুর',
-'revdelete-hide-name' => 'কাম বারা লক্ষ্যহান গুর',
-'revdelete-hide-comment' => 'পতানির বারে মন্তব্য গুর',
-'revdelete-hide-user' => 'পতাকুরার নাঙহান/আইপি ঠিকানাহান গুর',
-'revdelete-hide-image' => 'ফাইলর বিষয়বস্তু গুর',
-'revdelete-unsuppress' => 'সীমাবদ্ধতাহানি নেইকরেদে',
-'revdelete-log' => 'কারণ:',
-'revdel-restore' => 'দৃষ্টিপাত সিলকর',
-'pagehist' => 'পাতার ইতিহাসহান',
-'deletedhist' => 'ইতিহাসহান পুস',
-'revdelete-content' => 'বিষয়বস্তু',
-'revdelete-summary' => 'সারাংশ পতানি',
-'revdelete-uname' => 'আতাকুরা',
-'revdelete-restricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি ফলা',
-'revdelete-unrestricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি নেইকর',
-'revdelete-hid' => '$1 গুর',
-'revdelete-unhid' => '$1 নাগুরি',
+'rev-deleted-comment' => '(মন্তব্য থেইকরলাং)',
+'rev-deleted-user' => '(আতাকুরার নাঙহান থেইকরলাং)',
+'rev-deleted-event' => '(লগ অ্যাকশন থেইকরলাং)',
+'rev-delundel' => 'ফঙ/আরুম কর',
+'rev-showdeleted' => 'দেহাদে',
+'revisiondelete' => 'পতানিহান পুস/নাপুসি',
+'revdelete-nooldid-title' => 'টার্গেট চুমকরানি লালুইসে',
+'revdelete-nologtype-title' => 'লগ টাইপ না দিয়াসি',
+'revdelete-nologtype-text' => 'কাম এহান করানির কা কি জাতর লগ লেপ নাকরিসত।',
+'revdelete-nologid-title' => 'লগর পারেঙহানি চুম নাইসে',
+'revdelete-no-file' => 'মাতিসত ফাইলগ নেই।',
+'revdelete-show-file-submit' => 'হায়',
+'revdelete-legend' => 'আহির ফঙে থনা হান সিতকর',
+'revdelete-hide-text' => 'চুমকরিসত ইকা গুর',
+'revdelete-hide-image' => 'ফাইলর বিষয়বস্তু গুর',
+'revdelete-hide-name' => 'কাম বারা লক্ষ্যহান গুর',
+'revdelete-hide-comment' => 'পতানির বারে মন্তব্য গুর',
+'revdelete-hide-user' => 'পতাকুরার নাঙহান/আইপি ঠিকানাহান গুর',
+'revdelete-radio-same' => '(না সিলকরিস)',
+'revdelete-radio-set' => 'হায়',
+'revdelete-radio-unset' => 'না',
+'revdelete-unsuppress' => 'সীমাবদ্ধতাহানি নেইকরেদে',
+'revdelete-log' => 'কারণ:',
+'revdel-restore' => 'দৃষ্টিপাত সিলকর',
+'pagehist' => 'পাতার ইতিহাসহান',
+'deletedhist' => 'ইতিহাসহান পুস',
+'revdelete-content' => 'বিষয়বস্তু',
+'revdelete-summary' => 'সারাংশ পতানি',
+'revdelete-uname' => 'আতাকুরা',
+'revdelete-restricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি ফলা',
+'revdelete-unrestricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি নেইকর',
+'revdelete-hid' => '$1 গুর',
+'revdelete-unhid' => '$1 নাগুরি',
+'revdelete-otherreason' => 'আর আর কারণ:',
+'revdelete-reasonotherlist' => 'আরাক কারণ',
+'revdelete-edit-reasonlist' => 'থেইকরানির কারণহান পতা',
+'revdelete-offender' => 'রিভিশন দিয়াসেগ ইলতাই:',
# Suppression log
'suppressionlog' => 'লগ নিকালা',
@@ -756,12 +809,13 @@ $2',
'mergelogpagetext' => 'তলে হাদি এহানর পাতার ইতিহাসর লগে আরাক পাতার ইতিহাস তিলকরিসি অতার লাতঙগ দেনা ইল।',
# Diffs
-'history-title' => '"$1"-র রিভিসন ইতিহাসহান',
-'difference' => '(রিভিসনহানির ফারাকহান)',
-'lineno' => 'লাইন $1:',
-'compareselectedversions' => 'বাসাইল সংস্করণহানি তুলনা কর',
-'editundo' => 'আলকর',
-'diff-multi' => '({{PLURAL:$1|হমবুকর রিভিসন আহান|$1 হমবুকর রিভিসন হানি}} দেহাদেনা এহাত না মিহিসে।)',
+'history-title' => '"$1"-র রিভিসন ইতিহাসহান',
+'difference' => '(রিভিসনহানির ফারাকহান)',
+'lineno' => 'লাইন $1:',
+'compareselectedversions' => 'বাসাইল সংস্করণহানি তুলনা কর',
+'showhideselectedversions' => 'বাসিসি রিভিশনহানি দেখাদে/গুর',
+'editundo' => 'আলকর',
+'diff-multi' => '({{PLURAL:$1|হমবুকর রিভিসন আহান|$1 হমবুকর রিভিসন হানি}} দেহাদেনা এহাত না মিহিসে।)',
# Search results
'searchresults' => 'বিসারলে অতার ফলাফল',
@@ -769,23 +823,24 @@ $2',
'searchresulttext' => '{{SITENAME}} এ বিসারানিরকা আরাকউ পৌরকা [[{{MediaWiki:Helppage}}|{{int:help}}]] চা।',
'searchsubtitle' => 'তি বিসারলে \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" হান্ন অকরা হাব্বি পাতাহানি]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" র লগে তিলসে পাতাহানি]])',
'searchsubtitleinvalid' => "তি বিসারলেতা '''$1'''",
-'noexactmatch' => "'''\"\$1\" চিংনাঙর কোন পাতা নেই।'''
-তি [[:\$1|পাতা এহান হঙকরে পারর]]।",
'toomanymatches' => 'তি বিসারর অহার ৱাখুম বপিসে, আরাক আহান্ন হন্না কর',
'titlematches' => 'পাতার চিঙনাঙর লগে মান্না অসে',
'notitlematches' => 'কোন পাতার চিঙনাঙর মিল নাপেইলাঙ',
'textmatches' => 'পাতার ইকার লগে মান্না অসে',
'notextmatches' => 'পাতাহার লেখার লগে মিল নেই',
-'prevn' => 'পিসেদে $1',
-'nextn' => 'থাংনাত $1',
+'prevn' => 'পিসেদে {{PLURAL:$1|$1}}',
+'nextn' => 'থাংনাত {{PLURAL:$1|$1}}',
'prevn-title' => 'আগেদের $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}}',
'nextn-title' => 'থাঙনার $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}}',
'shown-title' => 'হারি পাতাত $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}} দেহাদে',
-'viewprevnext' => 'চা ($1) ($2) ($3)',
+'viewprevnext' => 'চা ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'বিসারানির অপশনহানি',
'searchmenu-new' => "'''\"[[:\$1]]\" নাঙর পাতাহান এরে উইকিত হঙকর!'''",
'searchhelp-url' => 'Help:পাংলাক',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এরে prefix এতাল আসে পাতাহানি]]',
+'searchprofile-articles' => 'কন্টেন্টর পাতাহানি',
+'searchprofile-project' => 'পাঙলাক বারো প্রকল্পর পাতা',
+'searchprofile-images' => 'মাল্টিমিডিয়া',
'searchprofile-everything' => 'হাব্বি',
'searchprofile-advanced' => 'উচ্চতর',
'searchprofile-articles-tooltip' => '$1 এহাত বিসারা',
@@ -805,6 +860,7 @@ $2',
'search-mwsuggest-disabled' => 'পরামর্শ নেই',
'search-relatedarticle' => 'সাকেই আসে',
'mwsuggest-disable' => 'AJAXরে থা নাদি',
+'searcheverything-enable' => 'হাব্বি নাঙথাকে বিসারা',
'searchrelated' => 'সাকেই আসে',
'searchall' => 'হাব্বি',
'nonefound' => "'''নোট''': অকরাতই হুদ্দা কতহান নাঙরফাম বিসারানি অসিল।
@@ -815,30 +871,56 @@ $2',
'powersearch-ns' => 'নেমস্পেসর মা বিসারা:',
'powersearch-redir' => 'বারোআলথকর লাতঙগ',
'powersearch-field' => 'কা বিসারা',
+'powersearch-togglelabel' => 'চেক কর:',
+'powersearch-toggleall' => 'হাব্বি',
+'powersearch-togglenone' => 'কিত্তাউ নেই',
'search-external' => 'বারেদে বিসারা',
-# Preferences page
-'preferences' => 'পছনহানি',
-'mypreferences' => 'মর পছন',
-'prefs-edits' => 'পতাসি অতার সংখ্যাহান',
+# Quickbar
'qbsettings' => 'কুইকবার',
'qbsettings-none' => 'কিত্তাউ নেই',
'qbsettings-fixedleft' => 'লেপ্পা বিঙ',
'qbsettings-fixedright' => 'লেপ্পা বাত',
'qbsettings-floatingleft' => 'বাহের বিঙ',
'qbsettings-floatingright' => 'বাহের বাত',
+
+# Preferences page
+'preferences' => 'পছনহানি',
+'mypreferences' => 'মর পছন',
+'prefs-edits' => 'পতাসি অতার সংখ্যাহান',
'changepassword' => 'খন্তাচাবি(password) পতা',
+'prefs-skin' => 'সরহান',
'skin-preview' => 'আগচা',
+'prefs-math' => 'গণিত',
'datedefault' => 'পছন করাতা নেই',
+'prefs-datetime' => 'তারিখ বারো সময়',
'prefs-rc' => 'হাদি এহানর পতানি',
+'prefs-watchlist-days-max' => 'বপিলে ৭ দিন পেয়া',
'prefs-misc' => 'নানন',
'prefs-resetpass' => 'খন্তাচাবি সিলকর',
+'prefs-email' => 'ই-মেইল অপশনহানি',
'saveprefs' => 'ইতু',
'columns' => 'দুরগিঃ',
'timezoneregion-america' => 'আমেরিকা',
'timezoneregion-asia' => 'এশিয়া',
'timezoneregion-atlantic' => 'আটলান্টিক মহাসাগর',
'allowemail' => 'আরতা(ব্যবহার করেকুরা)ই ইমেইল করানির য়্যাথাং দে।',
+'prefs-files' => 'ফাইল',
+'youremail' => 'ই-মেইল *:',
+'yourrealname' => 'আৱৈপা নাংহান *:',
+'yourlanguage' => 'ঠারহান:',
+'yournick' => 'দাহানির নাংহান:',
+'gender-male' => 'মুনি',
+'gender-female' => 'জেলা',
+'email' => 'ইমেইল',
+'prefs-help-realname' => 'আয়ৌপা নাংহান নাদলেউ চলের।
+যদি তি দের অতাইলে তর কামর থাকাত দেনাত সুবিধা অইতই।',
+'prefs-advancedediting' => 'উচ্চতর অপশন',
+'prefs-advancedrc' => 'উচ্চতর অপশন',
+'prefs-advancedrendering' => 'উচ্চতর অপশন',
+'prefs-advancedwatchlist' => 'উচ্চতর অপশন',
+'prefs-display' => 'দেহাদেনার অপশন',
+'prefs-diffs' => 'ফারাক',
# Groups
'group-sysop' => 'ডান্ডিকরেকুরাগি',
@@ -892,6 +974,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'সাকেই আসে পতা',
+'recentchangeslinked-feed' => 'সাকেই আসে পতা',
+'recentchangeslinked-toolbox' => 'সাকেই আসে পতা',
'recentchangeslinked-title' => 'পতানিহান "$1"র লগে সর্ম্পক আসে',
'recentchangeslinked-noresult' => 'দেনা অসে খেন্তামর ভিতরে পতাসিতা নেই।',
'recentchangeslinked-summary' => "লেপকরা পাতা আহান (অথবা লেপকরা বিষয়শ্রেণী)ত্ত তিলসে এরে পাতা এহানর হাদি এহান পতাসি অহানর লাতঙ দেনা অইল। তর [[Special:Watchlist|তর চালাতঙ]]এ থসি পাতাহানি '''গাঢ়''' করিয়া দেহাদেনা অসে।",
@@ -932,14 +1016,21 @@ $2',
'badfilename' => 'ফাইলগর নাঙহান পতিয়া $1" করানি ইল।',
'savefile' => 'ফাইল ইতু',
'uploadedimage' => 'আপলোডকরানি অইল "[[$1]]"',
+'upload-source' => 'ফাইলর উৎস',
+'upload-options' => 'আপলোডর পছনহানি',
'watchthisupload' => 'ফাইলগ খিয়ালে থ',
-'upload-misc-error' => 'আপলোডর লালহান হারনাপাসি',
+'upload-misc-error' => 'আপলোডর লালহান হারনাপাসি',
+'upload-unknown-size' => 'সাইজহান হারনাপাসি',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'হমানির য়্যাথাং নেই',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error28' => 'আপলোড সময়হান লিতুইল',
-'license' => 'লাইসেন্সহান:',
+'license' => 'লাইসেন্সহান:',
+'license-header' => 'লাইসেন্সহান',
# Special:ListFiles
'imgfile' => 'ফাইল',
@@ -950,24 +1041,25 @@ $2',
'listfiles_size' => 'সাইজ',
# File description page
+'file-anchor-link' => 'ফাইল',
'filehist' => 'ফাইলর ইতিহাস',
'filehist-help' => 'দিন/সময়-র গজে যাতিলে ঔ খেন্তাম পেয়া হঙিসে ফাইলগ চ পারতেই।',
'filehist-deleteall' => 'হাব্বি পুস',
'filehist-current' => 'এপাগা',
'filehist-datetime' => 'দিন/সময়',
'filehist-thumb' => 'হুরকাকরে ফটকগি',
+'filehist-thumbtext' => '$1 অনু্যায়ী সংস্করণর হুরকাকরে ফটকগি',
'filehist-user' => 'আতাকুরা',
'filehist-dimensions' => 'চাঙহান',
'filehist-filesize' => 'ফাইলর সাইজহান',
'filehist-comment' => 'মতহান',
+'filehist-missing' => 'ফাইলগ মাঙুইসে',
'imagelinks' => 'ফাইলর জুরনহানি',
'linkstoimage' => 'এরে ফাইলর লগে {{PLURAL:$1|পাতার মিলাপ|$1 পাতাহানির মিলাপ}} আসে:',
'nolinkstoimage' => 'ফাইল এগর লগে মিলাপ অসে অসাদে কোন পাতা নেই।',
-'sharedupload' => 'ফাইল এগ $1ত্ত আহিসেগ বারো অন্যান্য প্রকল্পতউ ব্যবহৃত ইতে পারে।', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'এরে নাঙর কোন ফাইল নেই, তি পারর $1।',
-'noimage-linktext' => 'আপলোড কর',
+'sharedupload' => 'ফাইল এগ $1ত্ত আহিসেগ বারো অন্যান্য প্রকল্পতউ ব্যবহৃত ইতে পারে।',
'uploadnewversion-linktext' => 'এরে ফাইল এগর নুৱা সংস্করনহান আপলোড কর',
-'shared-repo-from' => '$1 রাঙতো', # $1 is the repository name
+'shared-repo-from' => '$1 রাঙতো',
# File reversion
'filerevert-comment' => 'মতামত:',
@@ -998,6 +1090,7 @@ $2',
'statistics-header-edits' => 'পতানির পরিসংখ্যান',
'statistics-header-views' => 'চাসিতার পরিসংখ্যান',
'statistics-header-users' => 'আতাকুরার পরিসংখ্যান',
+'statistics-header-hooks' => 'আরআর পরিসংখ্যান',
'statistics-articles' => 'পাতার কন্টেনহানি',
'statistics-pages' => 'পাতাহানি',
@@ -1005,7 +1098,9 @@ $2',
'doubleredirects' => 'আলথকে যানা দ্বিমাউ মাতের',
-'brokenredirects' => 'বারো-নির্দেশ কামনাকরের',
+'brokenredirects' => 'বারো-নির্দেশ কামনাকরের',
+'brokenredirects-edit' => 'পতানি',
+'brokenredirects-delete' => 'পুস',
'withoutinterwiki' => 'ঠারর মিলাপ নেয়সে পাতাহানি',
'withoutinterwiki-submit' => 'দেহাদে',
@@ -1076,11 +1171,18 @@ $2',
'categories' => 'বিষয়রথাকহানি',
'categoriespagetext' => 'ইমারঠারর উইকিপিডিয়াত এবাকার বিষয়রথাক:',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'অবদানহানি',
+
# Special:LinkSearch
'linksearch' => 'বারেদের লগে মিলাপ',
# Special:ListUsers
-'listusers-submit' => 'দেহাদে',
+'listusers-submit' => 'দেহাদে',
+'listusers-blocked' => '(থেপুইসে)',
+
+# Special:ActiveUsers
+'activeusers-noresult' => 'আতাকুরা নাপেইলাং।',
# Special:Log/newusers
'newuserlogpage' => 'আতাকুরা হঙসে লগহানি',
@@ -1088,6 +1190,8 @@ $2',
'newuserlog-create-entry' => 'নুৱা আতাকুরার একাউন্টহান',
# Special:ListGroupRights
+'listgrouprights-key' => '* <span class="listgrouprights-granted">য়্যাথাং পাসে অধিকার</span>
+* <span class="listgrouprights-revoked">থেপকরানি অসে অধিকার</span>',
'listgrouprights-group' => 'গ্রুপহান',
'listgrouprights-rights' => 'অধিকারহানি',
'listgrouprights-members' => '(সদস্যর পারেঙহানি)',
@@ -1159,7 +1263,6 @@ $2',
'protectexpiry' => 'মিয়াদহান লালর:',
'protect_expiry_invalid' => 'খেন্তাম লিতনাহান লালুইসে।',
'protect_expiry_old' => 'বাতিলর খেন্তামহান আগেকার তারিখে পরিসে।',
-'protect-unchain' => 'গুসানি পারানির য়্যাথাঙ মুকা',
'protect-text' => "তি চেইলে '''<nowiki>$1</nowiki> পাতাহানর লুকরানির মাত্রাহান চানা বারো সিলকরানি পারর'''।",
'protect-locked-access' => "তরতা পাতা লুকরে পারানির মত য়্যাথাঙ নেই।
পাতাহান '''$1'''র এপাগার পাজালানিহান:",
@@ -1176,7 +1279,7 @@ $2',
'protect-othertime' => 'আরাক খেন্তামে:',
'protect-othertime-op' => 'আরাক খেন্তামে',
'protect-existing-expiry' => 'আসে এক্সপায়রর খেন্তামহান: $3, $2',
-'protect-expiry-options' => '১ ঘন্টা:1 hour,১ দিন:1 day,১ হাপ্তা:1 week,২ হাপ্তা:2 weeks,১ মাহা:1 month,৩ মাহা:3 months,৬ মাহা:6 months,১ বসর:1 year,লম নেই সময়:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '১ ঘন্টা:1 hour,১ দিন:1 day,১ হাপ্তা:1 week,২ হাপ্তা:2 weeks,১ মাহা:1 month,৩ মাহা:3 months,৬ মাহা:6 months,১ বসর:1 year,লম নেই সময়:infinite',
'restriction-type' => 'য়্যাথাঙ:',
'restriction-level' => 'লুকরানির থাক:',
'minimum-size' => 'হুরকা আকার',
@@ -1216,6 +1319,7 @@ $2',
'sp-contributions-newbies' => 'হুদ্দা নুৱা একাউন্টর অবদানহানি দেহাদে',
'sp-contributions-newbies-sub' => 'নুৱা একাউন্টর কা',
'sp-contributions-blocklog' => 'থেপকরিসি লগ',
+'sp-contributions-talk' => 'অতারা',
'sp-contributions-search' => 'অবদানহানি বিসারা',
'sp-contributions-username' => 'আইপি (IP) ঠিকানা নাইলে আতাকুরার নাঙহান:',
'sp-contributions-submit' => 'বিসারা',
@@ -1262,7 +1366,7 @@ $2',
'ipbenableautoblock' => 'এরে আতাকুরা এগই ব্যবহার করিসিল লমিলগা আইপি ঠিকানাহান, বারো পিসেদে যে যে আইপি ঠিকানাত্ত পতানির হৎনা করতই অতারে আপ্পানে নাদি।',
'ipbsubmit' => 'আতাকুরা এগরে থেপ কর',
'ipbother' => 'আর সময়:',
-'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,হাপ্তা আহান:1 week,হাপ্তা দুহান:2 weeks,মাহা আহান:1 month,৩ মাহা:3 months,৬ মাহা:6 months,বসর আহান:1 year,লম নেই সময়:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,হাপ্তা আহান:1 week,হাপ্তা দুহান:2 weeks,মাহা আহান:1 month,৩ মাহা:3 months,৬ মাহা:6 months,বসর আহান:1 year,লম নেই সময়:infinite',
'ipbotheroption' => 'আর আর',
'ipbotherreason' => 'আরাক/আরাকউ কারণ:',
'ipbhidename' => 'আতাকুরার নাঙ পতানি বারো লাতঙেত্ত গুর',
@@ -1307,7 +1411,7 @@ $2',
'move-watch' => 'পাতা এহান খিয়াল কর',
'movepagebtn' => 'পাতা থেইকর',
'pagemovedsub' => 'গুসানিহান হবা বালাই লমিল',
-'movepage-moved' => '\'\'\'"$1" থেইককরানি ইল "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" থেইককরানি ইল "$2"\'\'\'',
'movepage-moved-redirect' => 'কুইকরা পাতা হঙিল।',
'articleexists' => 'ইতে পারে এরে শিরোনাঙর নিবন্ধহান হঙপরসেগা, নাইলে তি দিয়াসত শিরোনাং এহান দেনার য়্যাথাং নেই। কৃপা করিয়া আরাক শিরোনাং আহান দেনার হৎনা কর।',
'talkexists' => "'''পাতাহান হবা বালাই গুসিল কিন্তু অরে নাঙর য়্যারির পাতা আহান আগেত্তর থানাই না গুসিল।
@@ -1326,12 +1430,16 @@ $2',
'export' => 'পাতাহান দিয়াপেঠা',
# Namespace 8 related
-'allmessages' => 'সিস্টেমর পৌহানি',
-'allmessagesname' => 'নাং',
-'allmessagescurrent' => 'হাদি এহানর ৱাহি',
-'allmessagestext' => 'তলে মিডিয়াউইকির নাঙরথাকে পানা একরের সিস্টেম পৌহানির তালিকাহান দেনা ইল।
+'allmessages' => 'সিস্টেমর পৌহানি',
+'allmessagesname' => 'নাং',
+'allmessagescurrent' => 'হাদি এহানর ৱাহি',
+'allmessagestext' => 'তলে মিডিয়াউইকির নাঙরথাকে পানা একরের সিস্টেম পৌহানির তালিকাহান দেনা ইল।
কৃপা করিয়া [http://www.mediawiki.org/wiki/Localisation মিডিয়াউইকি অনুবাদর হেইচা পাতাত] বারো [http://translatewiki.net translatewiki.net] মিডিয়াউইকি অনুবাদ করানির কা যানা পারর।',
-'allmessagesmodified' => 'পতাসি অতা হুদ্দা দেহাদে',
+'allmessages-filter-legend' => 'সাক',
+'allmessages-filter-unmodified' => 'নাসিলথাইতে',
+'allmessages-filter-all' => 'হাব্বি',
+'allmessages-language' => 'ঠার:',
+'allmessages-filter-submit' => 'হাত',
# Thumbnails
'thumbnail-more' => 'ডাঙরকর',
@@ -1372,6 +1480,7 @@ $2',
'tooltip-search-fulltext' => 'এরে টেক্সটর কা পাতাহানিত বিসারা',
'tooltip-p-logo' => 'পয়লা পাতা',
'tooltip-n-mainpage' => 'মুল পাতাহান চেইক',
+'tooltip-n-mainpage-description' => 'মুল পাতাহান চা',
'tooltip-n-portal' => 'প্রকল্প এহানর বারে, তি কিহান পাংকরে পারতেই, বস্তু কুরাঙত বিসারিয়া পানা',
'tooltip-n-currentevents' => 'এপাগার ইভেন্টহানরকা পিসেদের ইতাহানহান বিসারা',
'tooltip-n-recentchanges' => 'উইকি এহাত হাদি এহান পতাসি পাতার লাতংগ।',
@@ -1409,6 +1518,7 @@ $2',
'anonymous' => '{{SITENAME}}র বেনাঙর {{PLURAL:$1|আতাকুরা|আতাকুরাগি}}',
'others' => 'আরতা',
'siteusers' => '{{SITENAME}}র {{PLURAL:$2|আতাকুরা|আতাকুরাগি}} $1',
+'anonusers' => '{{SITENAME}}র বেনাঙর {{PLURAL:$2|আতাকুরা|আতাকুরাগি}} $1',
# Info page
'infosubtitle' => 'পাতার বারে',
@@ -1451,9 +1561,9 @@ $2',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => 'গাথিগি',
# External editor support
@@ -1466,6 +1576,7 @@ $2',
'watchlistall2' => 'হাব্বি',
'namespacesall' => 'হাব্বি',
'monthsall' => 'হাব্বি',
+'limitall' => 'হাব্বি',
# E-mail address confirmation
'confirmemail' => 'ই-মেইল ঠিকানাহান লেপকর',
@@ -1509,10 +1620,11 @@ $2',
'watchlisttools-raw' => 'পেরকা তালাবির পাতা পতা',
# Special:Version
-'version' => 'সংস্করন', # Not used as normal message but as header for the special page itself
+'version' => 'সংস্করন',
'version-specialpages' => 'বিশেষ পাতাহানি',
'version-other' => 'হের',
'version-hooks' => 'কসিগি',
+'version-version' => '(সংস্করণ $1)',
'version-license' => 'লাইসেন্স',
'version-software' => 'ইনস্টলঅসে সফটওয়্যার',
'version-software-product' => 'পণ্য',
@@ -1553,4 +1665,15 @@ $2',
'dberr-outofdate' => 'সুচীক্রম অহান আপটুডেট নাইসে।',
'dberr-cachederror' => 'এহান ক্যাস পাতাহানে, অহানে আপটুডেট না থাইব।',
+# HTML forms
+'htmlform-invalid-input' => 'তি বরিলে লেখা অতার মা লালুইসে',
+'htmlform-select-badoption' => 'তি দিলে সংখ্যা অহান লেপকরিসি অপসনহান নাবে।',
+'htmlform-int-invalid' => 'তি দিলে সংখ্যা অহান নম্বরগ নাবে।',
+'htmlform-float-invalid' => 'তি দিলে সংখ্যা অহান সংখ্যাহান নাবে।',
+'htmlform-int-toolow' => 'তি দিলে সংখ্যা অহান লেপকরিসি সংখ্যা $1ত্ত হুরকা ইসে',
+'htmlform-int-toohigh' => 'তি দিলে সংখ্যা অহান লেপকরিসি সংখ্যা $1ত্ত ডাঙর ইসে',
+'htmlform-submit' => 'জমাদে',
+'htmlform-reset' => 'পতানিহান আলকর',
+'htmlform-selectorother-other' => 'আরাক',
+
);
diff --git a/languages/messages/MessagesBqi.php b/languages/messages/MessagesBqi.php
index aace2eb5..bc899396 100644
--- a/languages/messages/MessagesBqi.php
+++ b/languages/messages/MessagesBqi.php
@@ -121,7 +121,7 @@ $messages = array(
'category-media-header' => 'مدیا دردسته "$1"',
'category-empty' => 'ای دسته درحال حاضر دارای هیچ صفحه یا مدیایی نه',
'hidden-categories' => '{{PLURAL:$1|دسته قایم|دسته های قایم}}',
-'hidden-category-category' => 'دسته های قایم', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'دسته های قایم',
'category-subcat-count' => '{{PLURAL:$2|ای دسته فقط دسته های فرعی زیر راداره.|ای دسته چیزهای زیر راداره {{PLURAL:$1|دسته فرعی|$1 دسته های فرعی}}, بیشتراز$2 کل.}}',
'category-subcat-count-limited' => 'ای دسته چیزهای زیر راداره {{PLURAL:$1|دسته فرعی|$1 دسته های فرعی}}.',
'category-article-count' => '{{PLURAL:$2|ای دسته فقط دارای صفحات زیره.|ذیل الذکر{{PLURAL:$1|صفحه است|$1 صفحات هستند}} دراین دسته, بیشترزه$2 کل.}}',
@@ -133,10 +133,14 @@ $messages = array(
'about' => 'درباره',
'newwindow' => '(پنجره تازه واز کن)',
'cancel' => 'لغو',
-'qbfind' => 'پیدا کردن',
-'qbedit' => 'اصلاح',
'mytalk' => 'صحبت مو',
+# Cologne Blue skin
+'qbfind' => 'پیدا کردن',
+'qbedit' => 'اصلاح',
+'faq' => 'اف ای کیو',
+'faqpage' => 'Project:اف ای کیو',
+
'errorpagetitle' => 'خطا',
'returnto' => 'بازگشت به $1.',
'tagline' => 'از {{SITENAME}}',
@@ -174,7 +178,7 @@ $messages = array(
'otherlanguages' => 'درزبانهای دیگر',
'redirectedfrom' => '(تصحیح مجدداز$1)',
'redirectpagesub' => 'صفحه تصحیح وهدایت مجدد',
-'lastmodifiedat' => 'این صفحه اخیرا تغییر واصلاح شددر $1, در $2.', # $1 date, $2 time
+'lastmodifiedat' => 'این صفحه اخیرا تغییر واصلاح شددر $1, در $2.',
'viewcount' => 'این صفحه قابل دسترسی شده است {{PLURAL:$1|once|$1 times}}.',
'protectedpage' => 'صفحه حمایت شده',
'jumpto' => 'پریدن به:',
@@ -186,7 +190,6 @@ $messages = array(
'aboutpage' => 'Project:درباره',
'copyright' => 'محتوا باای شماره قابل دسترسیه
$1.',
-'copyrightpagename' => '{{SITENAME}} کپی رایت',
'copyrightpage' => '{{ns:project}}:کپی رایت',
'currentevents' => 'اتفاقات جاری',
'currentevents-url' => 'Project:اتفاقات جاری',
@@ -194,8 +197,6 @@ $messages = array(
'disclaimerpage' => 'Project:انکار کاربران',
'edithelp' => 'کمک برای اصلاح',
'edithelppage' => 'Help:اصلاح',
-'faq' => 'اف ای کیو',
-'faqpage' => 'Project:اف ای کیو',
'helppage' => 'Help:محتوا',
'mainpage' => 'صفحه اصلی',
'mainpage-description' => 'صفحه اصلی',
@@ -269,8 +270,6 @@ $1',
'createaccount' => 'درست کردن حساب کاربری',
'gotaccount' => "آیا تقریبا یه حساب کاربری دارین? '''$1'''.",
'gotaccountlink' => 'اویدن به',
-'yourrealname' => 'نام واقعی:',
-'prefs-help-realname' => 'ذکر نام واقعی اختیاریه ایر تصمیم به گدن بگیرین هنگام ارجاع به آثارتو و انتساب هونو به ایسا زه نام واقعیتو استفاده ابوه',
'loginsuccesstitle' => 'اویدن با بخت وتوفیق به سیستم',
'loginsuccess' => "''' ایسا اویدن به داخل سایت {{SITENAME}} بعنوان \"\$1\".'''",
'nosuchuser' => 'کاربری به ای نام وجود نداره "$1".
@@ -321,18 +320,18 @@ $1',
'hr_tip' => 'خط افقی (کم استفاده کنین)',
# Edit pages
-'summary' => 'خلاصه:',
-'subject' => 'موضوع/سرخط:',
-'minoredit' => 'ای یه اصلاح ریزه-رز',
-'watchthis' => 'پیگیری ای صفحه',
-'savearticle' => 'صفحه ضبط بوه',
-'preview' => 'پیش نمایش',
-'showpreview' => 'پیش‌نمایش',
-'showdiff' => 'نشودادن تغییرات',
-'anoneditwarning' => "'''توجه:''' ایسا داخل سیستم نوابیدین.
+'summary' => 'خلاصه:',
+'subject' => 'موضوع/سرخط:',
+'minoredit' => 'ای یه اصلاح ریزه-رز',
+'watchthis' => 'پیگیری ای صفحه',
+'savearticle' => 'صفحه ضبط بوه',
+'preview' => 'پیش نمایش',
+'showpreview' => 'پیش‌نمایش',
+'showdiff' => 'نشودادن تغییرات',
+'anoneditwarning' => "'''توجه:''' ایسا داخل سیستم نوابیدین.
آی پی آدرستو درگزارش اصلاح صفحه ضبط ابوه.",
-'summary-preview' => 'پیش نمایش - خلاصه:',
-'blockedtext' => ' "\'\'\'دسترسی نام کاربری یا نشانی اینترنتی ایسا بسته وابیده.\'\'\'
+'summary-preview' => 'پیش نمایش - خلاصه:',
+'blockedtext' => ' "\'\'\'دسترسی نام کاربری یا نشانی اینترنتی ایسا بسته وابیده.\'\'\'
ای کار توسط $1 انجام شده‌است.
دلیلی که گده اینه: $2\'\'
* آغاز قطع دسترسی: $8
@@ -345,37 +344,37 @@ $1',
دقت کنین که سی ارسال پست الکترونیکی در ویکی، وا پست الکترونیکی خود را زه طریق صفحه[[Special:Preferences|تنظیمات]] فعال کرده بوین، و نیز، وا امکان استفاده زه ای ویژگی سی ایساقطع نبوه.
نشانی اینترنتی الان ایسا $3 است و شماره قطع دسترسی $5 است.
لطفاً ای شماره را در هر درخواستی که در ای مورد مطرح اکنین ذکر کنین',
-'newarticle' => '(تازه)',
-'newarticletext' => 'ایسا لینکی را دنبال کردین و به صفحه‌ای رسیدین که هنی درست نوابیده.
+'newarticle' => '(تازه)',
+'newarticletext' => 'ایسا لینکی را دنبال کردین و به صفحه‌ای رسیدین که هنی درست نوابیده.
سی ایجاد صفحه، داخل مستطیل زیر شروع به تایپ کنین (سی اطلاعات بیشتر به [[{{ns:project}}:راهنما|صفحه راهنما]] برین).
ایر اشتباهی ایچو اویدین دکمه «برگشت» مرورگرتو را بزنین.',
-'noarticletext' => ' الان ای صفحه متنی نداره، ایسا ترین [[Special:Search/{{PAGENAME}}عنوان ای صفحه را در صفحه‌های دیگر جستجو کنین]] یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ای صفحه را اصلاح کنین].',
-'previewnote' => "'''ای فقط یه پیش نمایشه;
+'noarticletext' => ' الان ای صفحه متنی نداره، ایسا ترین [[Special:Search/{{PAGENAME}}عنوان ای صفحه را در صفحه‌های دیگر جستجو کنین]] یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ای صفحه را اصلاح کنین].',
+'previewnote' => "'''ای فقط یه پیش نمایشه;
تغییراتی که ایسا دادین هنی ضبط نوابیده!'''",
-'editing' => 'درحال اصلاح $1',
-'editingsection' => 'درحال اصلاح $1 (قسمت)',
-'copyrightwarning' => "لطفاً دقت کنین که درنظر گریده ابوه که همه شراکتهای ایسا {{SITENAME}} تحت «$2» منتشر ابون ).
+'editing' => 'درحال اصلاح $1',
+'editingsection' => 'درحال اصلاح $1 (قسمت)',
+'copyrightwarning' => "لطفاً دقت کنین که درنظر گریده ابوه که همه شراکتهای ایسا {{SITENAME}} تحت «$2» منتشر ابون ).
(سی دیدن جزئیات بیشتر به $1 برین
ایر نه خوین نوشته‌هاتو بی‌رحمانه اصلاح بوه و به دلخواه ارسال بوه، ایچو نفرستن.<br />
درضمن ایسادارین به ایما قول ادین که خودتو یونه نوشتین یا هونه زه یک منبع آزاد با مالکیت عمومی یا مثل هو ورداشتین. '''کارهای دارای کارهای دارای حق کپی رایت را بی‌اجازه نفرستین!'''',",
-'longpagewarning' => "'''هشدار: ای صفحه $1 کیلوبایت طول داره؛
+'longpagewarning' => "'''هشدار: ای صفحه $1 کیلوبایت طول داره؛
بعضی زه مرورگرها ممکنه با اصلاح صفحات نزدیک به ۳۲ کیلوبایت یا طولانی‌تر زه آن مشکلاتی داشته بون.
لطفاً درمورد خرد کردن ای صفحه به قسمت‌های کوچکتر فکر کنین.'''",
-'templatesused' => 'قالبهای استفاده شده من ای صفحه:',
-'templatesusedpreview' => 'قالبها یا الگوهای استفاده وابیده در ای پیش نمایش:',
-'template-protected' => '(تحت حمایت)',
-'template-semiprotected' => '(نیمه حمایت وابیده)',
-'nocreatetext' => '{{SITENAME}}قابلیت درست کردن صفحات تازه را محدود کرده‌. ترین برگردین و صفحه‌ موجود را اصلاح کنین یا اینکه [[Special:UserLogin|به سیستم داخل بوین یا حساب کاربری درست کنین]].',
-'recreate-deleted-warn' => "'''هشدار: ایسا در حال درست کردن دوباره صفحه‌ای هدین که قبلاً حذف وابیده '''در نظر داشته بوین که ادامه اصلاح ای صفحه کار درستی هده یا نه. نمایه حذف مربوط به ای صفحه سی راحتی کار در ادامه اویده",
+'templatesused' => 'قالبهای استفاده شده من ای صفحه:',
+'templatesusedpreview' => 'قالبها یا الگوهای استفاده وابیده در ای پیش نمایش:',
+'template-protected' => '(تحت حمایت)',
+'template-semiprotected' => '(نیمه حمایت وابیده)',
+'nocreatetext' => '{{SITENAME}}قابلیت درست کردن صفحات تازه را محدود کرده‌. ترین برگردین و صفحه‌ موجود را اصلاح کنین یا اینکه [[Special:UserLogin|به سیستم داخل بوین یا حساب کاربری درست کنین]].',
+'recreate-moveddeleted-warn' => "'''هشدار: ایسا در حال درست کردن دوباره صفحه‌ای هدین که قبلاً حذف وابیده '''در نظر داشته بوین که ادامه اصلاح ای صفحه کار درستی هده یا نه. نمایه حذف مربوط به ای صفحه سی راحتی کار در ادامه اویده",
# History pages
'viewpagelogs' => 'نشودادن نمایه ها سی ای صفحه',
'currentrev' => 'نسخه جاری',
'revisionasof' => 'اصلاح $1',
-'revision-info' => 'یه نسخه اصلاح شده درتاریخ $1 بوسیله $2', # Additionally available: $3: revision id
+'revision-info' => 'یه نسخه اصلاح شده درتاریخ $1 بوسیله $2',
'previousrevision' => '← اصلاح قبلی',
'nextrevision' => 'نسخه بعدی →',
'currentrevisionlink' => 'نسخه جاری',
@@ -390,7 +389,7 @@ $1',
'histlast' => 'تازه ترین',
# Revision feed
-'history-feed-item-nocomment' => '$1 در $2', # user at time
+'history-feed-item-nocomment' => '$1 در $2',
# Diffs
'history-title' => 'گزارش تاریخی نسخه زه "$1"',
@@ -401,17 +400,17 @@ $1',
'diff-multi' => '({{PLURAL:$1|یه اصلاح میانی|$1 اصلاحات میانی}} نشو داده نوابیده.)',
# Search results
-'noexactmatch' => "'''صفحه ای باای عنوان نه \"\$1\".'''
-ایسا ترین [[:\$1| ای صفحه را ایجاد کنین]].",
-'prevn' => 'قبلی $1',
-'nextn' => 'بعدی $1',
-'viewprevnext' => 'مشاهده ($1) ($2) ($3)',
+'prevn' => 'قبلی {{PLURAL:$1|$1}}',
+'nextn' => 'بعدی {{PLURAL:$1|$1}}',
+'viewprevnext' => 'مشاهده ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:محتوا',
'powersearch' => 'جستجوی کاملتر',
# Preferences page
-'preferences' => 'اولویتها',
-'mypreferences' => 'اولویتهای مو',
+'preferences' => 'اولویتها',
+'mypreferences' => 'اولویتهای مو',
+'yourrealname' => 'نام واقعی:',
+'prefs-help-realname' => 'ذکر نام واقعی اختیاریه ایر تصمیم به گدن بگیرین هنگام ارجاع به آثارتو و انتساب هونو به ایسا زه نام واقعیتو استفاده ابوه',
'grouppage-sysop' => '{{ns:project}}:مدیران',
@@ -442,6 +441,8 @@ $1',
# Recent changes linked
'recentchangeslinked' => 'تغییرات مرتبط',
+'recentchangeslinked-feed' => 'تغییرات مرتبط',
+'recentchangeslinked-toolbox' => 'تغییرات مرتبط',
'recentchangeslinked-title' => 'تغییرهای مرتبط با $1',
'recentchangeslinked-noresult' => 'در دوره زمانی داده‌شده تغییری در صفحه‌های لینک داده رخ نداده‌',
'recentchangeslinked-summary' => " ای صفحه خاص تغییرات اخیر در صفحه‌های لینک داده شده به این صفحه را نشو اده.
@@ -457,6 +458,7 @@ $1',
'listfiles' => 'لیست فایل',
# File description page
+'file-anchor-link' => 'فایل',
'filehist' => 'گزارش تاریخی فایل',
'filehist-help' => 'رو تاریخ‌ها کلیک کنید تا نسخه مرتبط را ببینین.',
'filehist-current' => 'جاری',
@@ -468,9 +470,7 @@ $1',
'imagelinks' => 'لینکها',
'linkstoimage' => 'ذیل الذکر {{PLURAL:$1|لینکهای صفحه|$1 لینک صفحات}} به ای فایل:',
'nolinkstoimage' => 'هیچ صفحه ای نه که لینک وابیده بوه به ای فایل',
-'sharedupload' => 'ای فایل یک آپلود اشتراکی هده و ممکنه زه طریق پروژه‌های دیگه هم قابل دسترسی بوه', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'هیچ فایلی با ای نام موجود نه اما ترین $1.',
-'noimage-linktext' => 'آپلود کنین',
+'sharedupload' => 'ای فایل یک آپلود اشتراکی هده و ممکنه زه طریق پروژه‌های دیگه هم قابل دسترسی بوه',
'uploadnewversion-linktext' => 'آپلود کردن یه نسخه تازه زه ای فایل',
# MIME search
@@ -603,7 +603,6 @@ $2',
'protectexpiry' => 'سپری وابیده ها:',
'protect_expiry_invalid' => 'با سپری وابیدن وقت غیر معتبره.',
'protect_expiry_old' => 'سپری وابیدن وقت مربوط به گذشته.',
-'protect-unchain' => 'واز کردن جابجایی با اجازه گرئدن',
'protect-text' => "ایسا ممکنه بوینین وتغییر بدین سطح حمایت زه ای صفحه'''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "حساب کاربری ایسا اجازه تغییر سطح حمایت ای صفحه را نداره.
ای چونه تنظیمات جاری سی آن صفحه '''$1''':",
@@ -619,7 +618,7 @@ $2',
'protect-expiring' => 'سپری وابیده $1 (UTC)',
'protect-cascade' => 'حمایت صفحات دربرگیرنده در ای صفحه (cascading protection)',
'protect-cantedit' => 'ایسا نترین تغییر بدین سطوح حمایتی ای صفحه را, زیرا ایسا اجازه اصلاح آن را ندارین.',
-'protect-expiry-options' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite',
'restriction-type' => 'اجازه:',
'restriction-level' => 'سطح محدودیت:',
@@ -641,6 +640,7 @@ $2',
'sp-contributions-newbies-sub' => 'سی حسابهای کاربری تازه',
'sp-contributions-blocklog' => 'نمایه بسته وابیده ها',
+'sp-contributions-talk' => 'صحبت',
# What links here
'whatlinkshere' => 'لینک های ای صفحه',
@@ -655,7 +655,7 @@ $2',
# Block/unblock
'blockip' => 'بستن کاربر',
-'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite',
'ipblocklist' => 'آدرسهای آی پی وکاربران بسته وابیدند',
'blocklink' => 'بسته بوه !',
'unblocklink' => 'باز بوه',
@@ -692,7 +692,7 @@ $2',
'move-watch' => 'پیگیری ای صفحه',
'movepagebtn' => 'جابجایی صفحه',
'pagemovedsub' => 'جابجایی با بخت وتوفیق انجام وابید',
-'movepage-moved' => '\'\'\'"$1" جابجا وابیده به "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" جابجا وابیده به "$2"\'\'\'',
'articleexists' => 'یه صفحه زه ای نوم تقریبا موجوده, یا نومی که ایسا انتخاب کردین غیر معتبره
لطفا نوم دیه انتخاب کنین.',
'talkexists' => "'''آن صفحه خوس با بخت وتوفیق جابجا وابید, ولی صفحه صحبت نتره جابجا بوه چونکه یکی تقریبا موجوده درعنوان تازه
@@ -804,7 +804,7 @@ $2',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'اصلاح ای صفحه با استفاده زه یه ویرایشگر خارجی',
@@ -821,7 +821,7 @@ $2',
'watchlisttools-raw' => 'اصلاح لیست خام پی‌گیری‌ها',
# Special:Version
-'version' => 'ترجمه یا تفسیر', # Not used as normal message but as header for the special page itself
+'version' => 'ترجمه یا تفسیر',
# Special:SpecialPages
'specialpages' => 'صفحات ویژه',
diff --git a/languages/messages/MessagesBr.php b/languages/messages/MessagesBr.php
index a426d242..d126b8c5 100644
--- a/languages/messages/MessagesBr.php
+++ b/languages/messages/MessagesBr.php
@@ -8,6 +8,7 @@
* @file
*
* @author Als-Holder
+ * @author Fohanno
* @author Fulup
* @author Malafaya
* @author Y-M D
@@ -47,30 +48,36 @@ $specialPageAliases = array(
'Statistics' => array( 'Stadegoù' ),
'Newpages' => array( 'PajennoùNevez' ),
'Ancientpages' => array( 'PajennoùKozh' ),
+ 'Allpages' => array( 'AnHollBajennoù' ),
+ 'Specialpages' => array( 'PajennoùDibar' ),
'Categories' => array( 'Rummadoù' ),
'Export' => array( 'Ezporzhiañ' ),
'Version' => array( 'Stumm' ),
'Undelete' => array( 'Diziverkañ' ),
'Import' => array( 'Enporzhiañ' ),
'Mypage' => array( 'MaFajenn' ),
+ 'Mytalk' => array( 'MaC\'haozeadennoù' ),
'Search' => array( 'Klask' ),
);
$magicWords = array(
'redirect' => array( '0', '#ADKAS', '#REDIRECT' ),
+ 'pagename' => array( '1', 'ANVPAJENN', 'PAGENAME' ),
'img_right' => array( '1', 'dehou', 'right' ),
'img_left' => array( '1', 'kleiz', 'left' ),
'img_none' => array( '1', 'netra', 'none' ),
'img_center' => array( '1', 'kreiz', 'center', 'centre' ),
'img_top' => array( '1', 'krec\'h', 'top' ),
- 'img_middle' => array( '1', 'kreiz', 'middle' ),
'img_bottom' => array( '1', 'traoñ', 'bottom' ),
+ 'sitename' => array( '1', 'ANVLEC\'HIENN', 'SITENAME' ),
'server' => array( '0', 'SERVIJER', 'SERVER' ),
+ 'servername' => array( '0', 'ANVSERVIJER', 'SERVERNAME' ),
'grammar' => array( '0', 'YEZHADUR:', 'GRAMMAR:' ),
'plural' => array( '0', 'LIESTER:', 'PLURAL:' ),
'currentversion' => array( '1', 'STUMMRED', 'CURRENTVERSION' ),
'language' => array( '0', '#YEZH:', '#LANGUAGE:' ),
'special' => array( '0', 'dibar', 'special' ),
+ 'pagesize' => array( '1', 'MENTPAJENN', 'PAGESIZE' ),
);
$bookstoreList = array(
@@ -122,6 +129,7 @@ $messages = array(
'tog-enotifminoredits' => 'Kas ur postel din, ha pa vije evit kemenn kemmoù dister',
'tog-enotifrevealaddr' => "Lakaat ma chomlec'h postel war wel er posteloù kemenn-diwall",
'tog-shownumberswatching' => 'Diskouez an niver a lennerien',
+'tog-oldsig' => 'Rakwelet ar sinadur zo evit poent :',
'tog-fancysig' => 'Ober gant ar sinadur evel pa vefe wikitestenn (hep liamm emgefre)',
'tog-externaleditor' => "Ober gant ur skridaozer diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se)",
'tog-externaldiff' => "Ober gant ur c'heñverier diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se)",
@@ -145,6 +153,13 @@ $messages = array(
'underline-never' => 'Morse',
'underline-default' => 'Diouzh ar merdeer',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stil font an takad skridaozañ :',
+'editfont-default' => 'Diouzh ar merdeer',
+'editfont-monospace' => 'Font unesaouennet',
+'editfont-sansserif' => 'Font hep-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Sul',
'monday' => 'Lun',
@@ -204,7 +219,7 @@ $messages = array(
'category-media-header' => 'Restroù liesvedia er rummad "$1"',
'category-empty' => "''N'eus na pajenn na media ebet er rummad-mañ evit ar mare.''",
'hidden-categories' => '{{PLURAL:$1|Rummad kuzhet|Rummad kuzhet}}',
-'hidden-category-category' => 'Rummadoù kuzhet', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Rummadoù kuzhet',
'category-subcat-count' => "{{PLURAL:$2|N'eus er rummad-mañ nemet an isrummad da-heul.|{{PLURAL:$1|isrummad|$1 isrummad}} zo d'ar rummad-mañ diwar un hollad a $2.}}",
'category-subcat-count-limited' => 'Er rummad-mañ e kaver an {{PLURAL:$1|isrummad-se|$1 isrummadoù-se}}.',
'category-article-count' => "{{PLURAL:$2|N'eus er rummad-mañ nemet ar bajenn da-heul.|Emañ ar {{PLURAL:$1|bajenn da-heul|$1 pajenn da-heul}} er rummad-mañ, diwar un hollad a $2.}}",
@@ -212,6 +227,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|N'eus er rummad-mañ nemet ar restr da-heul.|Emañ ar {{PLURAL:$1|restr|$1 restr}} da-heul er rummad-mañ, diwar un hollad a $2.}}",
'category-file-count-limited' => '{{PLURAL:$1|Emañ ar restr|Emañ an $1 restr}} da-heul er rummad-mañ.',
'listingcontinuesabbrev' => "(war-lerc'h)",
+'index-category' => 'Pajennoù menegeret',
+'noindex-category' => "Pajennoù n'int ket menegeret",
'mainpagetext' => "'''Meziant MediaWiki staliet.'''",
'mainpagedocfooter' => "Sellit ouzh [http://meta.wikimedia.org/wiki/Help:Contents Sturlevr an implijerien] evit gouzout hiroc'h war an doare da implijout ar meziant wiki.
@@ -222,10 +239,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Diwar-benn',
-'article' => 'Pennad',
-'newwindow' => '(digeriñ en ur prenestr nevez)',
-'cancel' => 'Nullañ',
+'about' => 'Diwar-benn',
+'article' => 'Pennad',
+'newwindow' => '(digeriñ en ur prenestr nevez)',
+'cancel' => 'Nullañ',
+'moredotdotdot' => "Ha muioc'h c'hoazh...",
+'mypage' => 'Ma zammig pajenn',
+'mytalk' => "Ma c'haozeadennoù",
+'anontalk' => "Kaozeal gant ar chomlec'h IP-mañ",
+'navigation' => 'Merdeiñ',
+'and' => '&#32;ha(g)',
+
+# Cologne Blue skin
'qbfind' => 'Klask',
'qbbrowse' => 'Furchal',
'qbedit' => 'Kemmañ',
@@ -233,15 +258,35 @@ $messages = array(
'qbpageinfo' => 'Pajenn gelaouiñ',
'qbmyoptions' => 'Ma dibaboù',
'qbspecialpages' => 'Pajennoù dibar',
-'moredotdotdot' => "Ha muioc'h c'hoazh...",
-'mypage' => 'Ma zammig pajenn',
-'mytalk' => "Ma c'haozeadennoù",
-'anontalk' => "Kaozeal gant ar chomlec'h IP-mañ",
-'navigation' => 'Merdeiñ',
-'and' => '&#32;ha(g)',
-
-# Metadata in edit box
-'metadata_help' => 'Metaroadennoù :',
+'faq' => 'FAG',
+'faqpage' => 'Project:FAG',
+
+# Vector skin
+'vector-action-addsection' => 'Rannbennad nevez',
+'vector-action-delete' => 'Diverkañ',
+'vector-action-move' => 'Adenvel',
+'vector-action-protect' => 'Gwareziñ',
+'vector-action-undelete' => 'Diziverkañ',
+'vector-action-unprotect' => 'Diwareziñ',
+'vector-namespace-category' => 'Rummad',
+'vector-namespace-help' => 'Skoazell',
+'vector-namespace-image' => 'Restr',
+'vector-namespace-main' => 'Pennad',
+'vector-namespace-media' => 'Pajenn vedia',
+'vector-namespace-mediawiki' => 'Kemennadenn',
+'vector-namespace-project' => 'Pajenn ar raktres',
+'vector-namespace-special' => 'Pajenn dibar',
+'vector-namespace-talk' => 'Kaozeal',
+'vector-namespace-template' => 'Patrom',
+'vector-namespace-user' => 'Pajenn implijer',
+'vector-view-create' => 'Krouiñ',
+'vector-view-edit' => 'Kemmañ',
+'vector-view-history' => 'Sellet ouzh an istor',
+'vector-view-view' => 'Lenn',
+'vector-view-viewsource' => 'Sellet ouzh tarzh an destenn',
+'actions' => 'Oberoù',
+'namespaces' => 'Esaouennoù anv',
+'variants' => 'Adstummoù',
'errorpagetitle' => 'Fazi',
'returnto' => "Distreiñ d'ar bajenn $1.",
@@ -291,18 +336,22 @@ $messages = array(
'otherlanguages' => 'Yezhoù all',
'redirectedfrom' => '(Adkaset eus $1)',
'redirectpagesub' => 'Pajenn adkas',
-'lastmodifiedat' => "Kemmoù diwezhañ degaset d'ar bajenn-mañ, d'an $1 da $2.", # $1 date, $2 time
+'lastmodifiedat' => "Kemmoù diwezhañ degaset d'ar bajenn-mañ, d'an $1 da $2.",
'viewcount' => 'Sellet euz eus bet {{PLURAL:$1|$1 wech|$1 (g)wech}} ouzh ar bajenn-mañ.',
'protectedpage' => 'Pajenn warezet',
'jumpto' => 'Mont da :',
'jumptonavigation' => 'merdeiñ',
'jumptosearch' => 'klask',
+'view-pool-error' => 'Ho tigarez, soulgarget eo ar servijerioù evit poent.
+Re a implijerien a glask mont war ar bajenn-mañ war un dro.
+Gortozit ur pennadig a-raok klask mont war ar bjann-mañ en-dro.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Diwar-benn {{SITENAME}}',
'aboutpage' => 'Project:Diwar-benn',
'copyright' => "Danvez a c'haller implijout dindan $1.",
-'copyrightpagename' => 'aotre {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Gwirioù aozer (Copyright)',
'currentevents' => 'Keleier',
'currentevents-url' => 'Project:Keleier',
@@ -310,14 +359,12 @@ $messages = array(
'disclaimerpage' => 'Project:Kemenn hollek',
'edithelp' => 'Skoazell',
'edithelppage' => 'Help:Penaos degas kemmoù en ur bajenn',
-'faq' => 'FAG',
-'faqpage' => 'Project:FAG',
'helppage' => 'Help:Skoazell',
'mainpage' => 'Degemer',
'mainpage-description' => 'Degemer',
'policy-url' => 'Project:Reolennoù',
'portal' => 'Porched ar gumuniezh',
-'portal-url' => 'Project:Degemer',
+'portal-url' => 'Project:Porched ar gumuniezh',
'privacy' => 'Reolennoù prevezded',
'privacypage' => 'Project:Reolennoù prevezded',
@@ -390,10 +437,6 @@ Setu ar goulenn bet pledet gantañ da ziwezhañ :
"$1"
adal an arc\'hwel "$2"
Adkaset eo bet ar fazi "$3 : $4" gant ar bank roadennoù.',
-'noconnect' => "Ho tigarez! Da-heul kudennoù teknikel, n'haller ket kevreañ ouzh servijer ar bank roadennoù evit poent.<br />
-$1",
-'nodb' => 'Dibosupl dibab ar bank roadennoù $1',
-'cachederror' => "Un eilenn eus ar bajenn goulennet eo homañ; marteze n'eo ket bet hizivaet",
'laggedslavemode' => "Diwallit : marteze a-walc'h n'emañ ket ar c'hemmoù diwezhañ war ar bajenn-mañ",
'readonly' => 'Hizivadurioù stanket war ar bank roadennoù',
'enterlockreason' => 'Merkit perak eo stanket hag istimit pegeit e chomo evel-henn',
@@ -411,6 +454,8 @@ Kasit keloù d'ur [[Special:ListUsers/sysop|merer]], en ur verkañ dezhañ choml
'readonly_lag' => "Stanket eo bet ar bank roadennoù ent emgefre p'emañ an eilservijerioù oc'h adpakañ o dale e-keñver ar pennservijer",
'internalerror' => 'Fazi diabarzh',
'internalerror_info' => 'Fazi diabarzh : $1',
+'fileappenderrorread' => 'Dibosupl eo lenn "$1" e-pad an ensoc\'hañ.',
+'fileappenderror' => 'Dibosupl ouzhpennañ « $1 » da « $2 ».',
'filecopyerror' => 'Dibosupl eilañ « $1 » war-du « $2 ».',
'filerenameerror' => 'Dibosupl da adenvel « $1 » e « $2 ».',
'filedeleteerror' => 'Dibosupl da ziverkañ « $1 ».',
@@ -420,7 +465,8 @@ Kasit keloù d'ur [[Special:ListUsers/sysop|merer]], en ur verkañ dezhañ choml
'unexpected' => 'Talvoudenn dic\'hortoz : "$1"="$2".',
'formerror' => 'Fazi: Dibosupl eo kinnig ar furmskrid',
'badarticleerror' => "N'haller ket seveniñ an ober-mañ war ar bajenn-mañ.",
-'cannotdelete' => 'Dibosupl da ziverkañ ar bajenn pe ar skeudenn spisaet.',
+'cannotdelete' => 'Dibosupl diverkañ ar bajenn pe ar restr "$1".
+Marteze e o bet diverket gant unan bennak all dija.',
'badtitle' => 'Titl fall',
'badtitletext' => "Faziek pe c'houllo eo titl ar bajenn goulennet; pe neuze eo faziek al liamm etreyezhel",
'perfcached' => "Krubuilhet eo ar roadennoù da-heul ha marteze n'int ket bet hizivaet.",
@@ -452,7 +498,6 @@ Setu amañ perak ''$2''.",
'virus-unknownscanner' => 'diviruzer dianav :',
# Login and logout pages
-'logouttitle' => 'Digevreañ',
'logouttext' => "'''Digevreet oc'h bremañ.'''
Gallout a rit kenderc'hel da implijout {{SITENAME}} en un doare dizanv, pe [[Special:UserLogin|kevreañ en-dro]] gant an hevelep anv pe un anv all mar fell deoc'h.
@@ -461,7 +506,6 @@ Notit mat e c'hallo pajennoù zo kenderc'hel da vezañ diskwelet evel pa vefec'h
Krouet eo bet ho kont implijer.
Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}}]].',
-'loginpagetitle' => 'Ho tisklêriadenn',
'yourname' => "Hoc'h anv implijer",
'yourpassword' => 'Ho ker-tremen',
'yourpasswordagain' => 'Skrivit ho ker-tremen en-dro',
@@ -472,6 +516,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
'nav-login-createaccount' => 'Krouiñ ur gont pe kevreañ',
'loginprompt' => "Ret eo deoc'h bezañ gweredekaet an toupinoù a-benn gellout kevreañ ouzh {{SITENAME}}.",
'userlogin' => 'Kevreañ / krouiñ ur gont',
+'userloginnocreate' => 'Kevreañ',
'logout' => 'Digevreañ',
'userlogout' => 'Digevreañ',
'notloggedin' => 'Digevreet',
@@ -484,30 +529,8 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
'badretype' => "N'eo ket peurheñvel an eil ouzh egile an daou c'her-tremen bet lakaet ganeoc'h.",
'userexists' => "Implijet eo an anv implijer lakaet ganeoc'h dija.
Dibabit un anv all mar plij.",
-'youremail' => 'Postel *:',
-'username' => 'Anv implijer :',
-'uid' => 'Niv. identelezh an implijer :',
-'prefs-memberingroups' => 'Ezel eus {{PLURAL:$1|ar strollad|ar strolladoù}}:',
-'yourrealname' => 'Anv gwir*',
-'yourlanguage' => 'Yezh an etrefas&nbsp;',
-'yourvariant' => 'Adstumm:',
-'yournick' => 'Sinadur :',
-'badsig' => 'Direizh eo ho sinadur kriz; gwiriit ho palizennoù HTML.',
-'badsiglength' => "Re hir eo ho sinadur.
-Dre ret e rank bezañ nebeutoc'h eget {{PLURAL:$1|arouezenn|arouezenn}} ennañ.",
-'yourgender' => 'Jener :',
-'gender-unknown' => 'Anresisaet',
-'gender-male' => 'Paotr',
-'gender-female' => "Plac'h",
-'prefs-help-gender' => "Diret : implijet evit kenglotadurioù gour e troidigezh etrefas ar meziant.
-A-wel d'an holl e vo an titour-mañ.",
-'email' => 'Postel',
-'prefs-help-realname' => "Diret eo skrivañ hoc'h anv gwir.
-Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset ganeoc'h.",
'loginerror' => 'Kudenn kevreañ',
-'prefs-help-email' => "Diret eo merkañ ur chomlec'h postel met ma lakait unan e vo tu da adkas ur ger-tremen nevez deoc'h ma tichañsfe deoc'h disoñjal ho hini.
-Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implijer ha kaozeal hep na vefe ret deoc'h diskuliañ piv oc'h ivez.",
-'prefs-help-email-required' => "Ezhomm zo eus ur chomlec'h postel.",
+'createaccounterror' => 'Dibosupl krouiñ ar gont : $1',
'nocookiesnew' => "krouet eo bet ar gont implijer met n'hoc'h ket kevreet. {{SITENAME}} a implij toupinoù evit ar c'hrevreañ met diweredekaet eo an toupinoù ganeoc'h. Trugarez da weredekaat anezho ha da gevreañ en-dro.",
'nocookieslogin' => "{{SITENAME}} a implij toupinoù evit kevreañ met diweredekaet eo an toupinoù ganeoc'h. Trugarez da weredekaat anezho ha da gevreañ en-dro.",
'noname' => "N'hoc'h eus lakaet anv implijer ebet.",
@@ -518,10 +541,11 @@ Kizidik eo anv an implijer ouzh ar pennlizherennoù
Gwiriit eo bet skrivet mat an anv ganeoc\'h pe [[Special:UserLogin/signup|krouit ur gont nevez]].',
'nosuchusershort' => "N'eus perzhiad ebet gantañ an anv « <nowiki>$1</nowiki> ». Gwiriit ar reizhskrivadur.",
'nouserspecified' => "Ret eo deoc'h spisaat un anv implijer.",
+'login-userblocked' => "Stanket eo an implijer-mañ. N'eo ket aotret da gevreañ.",
'wrongpassword' => 'Ger-tremen kamm. Klaskit en-dro.',
'wrongpasswordempty' => 'Ger-tremen ebet. Lakait unan mar plij.',
-'passwordtooshort' => 'Fall eo her-tremen pe re verr eo.
-{{PLURAL:$1|1 arouezenn|$1 arouezenn}} a rank bezañ ennañ da nebeutañ ha disheñvel eus an anv implijer e rank bezañ ivez.',
+'passwordtooshort' => '{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.',
+'password-name-match' => "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
'mailmypassword' => 'Kasit din ur ger-tremen nevez',
'passwordremindertitle' => 'Ho ker-tremen berrbad nevez evit {{SITENAME}}',
'passwordremindertext' => "Unan bennak (c'hwi moarvat gant ar chomlec'h IP \$1)
@@ -532,6 +556,7 @@ Mard eo se a felle deoc'h ober e vo ret deoc'h kevreañ ha cheñch ho ker-tremen
Mard eo bet graet ar goulenn gant unan bennak all, pe m'hoc'h eus soñj eus ho ker-tremen bremañ ha
ma ne fell ket deoc'h cheñch anezhañ ken, e c'hallit leuskel ar postel-mañ a-gostez ha kenderc'hel d'ober gant ho ker-tremen kozh.",
'noemail' => 'N\'eus bet enrollet chomlec\'h postel ebet evit an implijer "$1".',
+'noemailcreate' => "Ret eo deoc'h merkañ ur chomlec'h postel reizh",
'passwordsent' => 'Kaset ez eus bet ur ger-tremen nevez da chomlec\'h postel an implijer "$1".
Trugarez deoc\'h da gevreañ kerkent ha ma vo bet resevet ganeoc\'h.',
'blocked-mailpassword' => "N'haller ket degas kemmoù adal ar chomlec'h IP-mañ ken, gant se n'hallit ket implijout an arc'hwel adtapout gerioù-tremen, kuit m'en em ledfe kammvoazioù.",
@@ -554,9 +579,11 @@ Merkit ur chomlec'h reizh pe goullonderit ar vaezienn-mañ.",
Mat e vefe deoc\'h kevreañ ha cheñch ho ker-tremen bremañ.
Na daolit ket evezh ouzh ar c\'hemenn-mañ m\'eo bet krouet ar gont dre fazi.',
+'usernamehasherror' => "N'haller ket ober gant an arouezenn # en anvioù an implijerien",
'login-throttled' => "Betek re oc'h eus klasket kevreañ en aner.
Gortozit a-raok klask en-dro.",
'loginlanguagelabel' => 'Yezh : $1',
+'suspicious-userlogout' => 'Distaolet eo bet ho koulenn digevreañ rak kaset e oa bet gant ur merdeer direizhet pe krubuilhadenn ur proksi, evit doare.',
# Password reset dialog
'resetpass' => 'Cheñch ar ger-tremen',
@@ -568,16 +595,12 @@ Gortozit a-raok klask en-dro.",
'retypenew' => 'Adskrivañ ar ger-tremen nevez :',
'resetpass_submit' => 'Cheñch ar ger-tremen ha kevreañ',
'resetpass_success' => "Cheñchet eo bet ho ker-tremen ! Emaoc'h o kevreañ...",
-'resetpass_bad_temporary' => "Ger-tremen da c'hortoz faziek. Marteze hoc'h eus cheñchet ho ker-tremen dija pe hoc'h eus goulennet ur ger-tremen da c'hortoz all.",
'resetpass_forbidden' => "N'haller ket cheñch ar gerioù-termen",
'resetpass-no-info' => "Ret eo deoc'h bezañ kevreet a-benn mont d'ar bajenn-se war-eeun.",
'resetpass-submit-loggedin' => 'Cheñch ger-tremen',
+'resetpass-submit-cancel' => 'Nullañ',
'resetpass-wrong-oldpass' => "Direizh eo ar ger-tremen a-vremañ pe da c'hortoz.",
'resetpass-temp-password' => "Ger-tremen da c'hortoz :",
-'resetpass-log' => 'Istor adderaouekadurioù ar gerioù-tremen',
-'resetpass-logtext' => 'Setu roll an implijerien zo bet adderaouekaet o ger-tremen gant ur merour.',
-'resetpass-logentry' => 'kemmet ger-tremen $1',
-'resetpass-comment' => 'Abeg evit adweredekaat ar ger-tremen :',
# Edit page toolbar
'bold_sample' => 'Testenn dev',
@@ -653,7 +676,6 @@ Merkit mat an titouroù-se war kement goulenn savet ganeoc'h.
'blockededitsource' => "Kavout a reot testenn ho '''kemmoù''' war '''$1''' a-is :",
'whitelistedittitle' => 'Ret eo bezañ kevreet evit gellout skridaozañ',
'whitelistedittext' => "Ret eo deoc'h en em $1 evit gallout skridaozañ.",
-'confirmedittitle' => "Ret eo kadarnaat e chomlec'h postel a-raok kemmañ pajennoù",
'confirmedittext' => "Rankout a ri bezañ kadarnaet ho chomlec'h postel a-raok gellout degas kemmoù er pajennoù. Skrivit ha kadarnait ho chomlec'h postel en ho [[Special:Preferences|penndibaboù implijer]] mar plij.",
'nosuchsectiontitle' => 'Diposupl eo kavout ar rann-mañ',
'nosuchsectiontext' => "Klasket hoc'h eus degas kemmoù en ur rann n'eus ket anezhi.
@@ -676,9 +698,16 @@ Ma'z oc'h un implijer(ez) dizanv ha ma stadit ez eus bet kaset deoc'h kemennaden
'noarticletext' => 'N\'eus tamm skrid ebet war ar bajenn-mañ evit poent.
Gallout a rit [[Special:Search/{{PAGENAME}}|klask an titl anezhi]] e pajennoù all,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask en oberiadennoù liammet], pe [{{fullurl:{{FULLPAGENAME}}|action=edit}} krouiñ ar bajenn]</span>.',
+'noarticletext-nopermission' => 'N\'eus, evit ar mare, tamm testenn ebet war ar bajenn-mañ.
+Gallout a rit [[Special:Search/{{PAGENAME}}|klask titl ar bajenn-mañ]] war pajennoù all,
+pe <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask er marilhoù kar]</span>.',
'userpage-userdoesnotexist' => 'N\'eo ket enrollet ar gont "$1". Merkit ma fell deoc\'h krouiñ/kemmañ ar bajenn-mañ.',
+'userpage-userdoesnotexist-view' => 'N\'eo ket enrollet ar gont implijer "$1".',
+'blocked-notice-logextract' => "Stanket eo an implijer-mañ evit poent.
+Dindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
'clearyourcache' => "'''Notenn :''' Goude bezañ enrollet ho pajenn e rankot freskaat krubuilh ho merdeer a-bennn gwelet ar c'hemmoù : '''Mozilla / Firefox / Safari : ''' dalc'hit ''Pennlizherenn'' en ur glikañ war ''Adkargañ'', pe pouezañ war ''Ctrl-F5'' pe ''Ctrl-R'' (''Command-R'' war ur Macintosh); '''Konqueror: '''klikañ war ''Adkargañ'' pe pouezañ war ''F5;'' '''Opera:''' riñsañ ar grubuilh e ''Ostilhoù → Penndibaboù;'' '''Internet Explorer:''' derc'hel ''Ctrl'' en ur glikañ war ''Freskaat,'' pe pouezañ war ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tun :''' Grit gant ar bouton '''Rakwelet''' evit testiñ ho follenn CSS/JS nevez a-raok enrollañ anezhi.",
+'usercssyoucanpreview' => "'''Tun :''' Grit gant ar bouton \"{{int:showpreview}}\" evit testiñ ho follenn CSS nevez a-raok enrollañ anezhi.",
+'userjsyoucanpreview' => "'''Tun :''' Grit gant ar bouton \"{{int:showpreview}}\" evit testiñ ho follenn JS nevez a-raok enrollañ anezhi.",
'usercsspreview' => "'''Dalc'hit soñj n'emaoc'h nemet o rakwelet ho follenn CSS deoc'h.'''
'''N'eo ket bet enrollet evit c'hoazh!'''",
'userjspreview' => "'''Dalc'hit soñj emaoc'h o rakwelet pe o testiñ ho kod javascript deoc'h ha n'eo ket bet enrollet c'hoazh!'''",
@@ -722,14 +751,14 @@ Marteze e c'hallfec'h rannañ ar bajenn e rannoù bihanoc'h.'''",
Gallout a rit eilañ-pegañ an destenn en ur restr skrid all hag enrollañ anezhi a-benn diwezhatoc'hik.'''
Setu an displegadenn lakaet gant ar merour en deus stanket an traoù : $1",
-'protectedpagewarning' => "'''KEMENN DIWALL: Stanket eo bet ar bajenn-mañ.
-N'eus nemet an implijerien ganto ar statud merour a c'hall degas kemmoù enni.'''",
-'semiprotectedpagewarning' => "''Notenn :''' Gwarezet eo ar bajenn-mañ; n'eus nemet an implijerien bet krouet ur gont ganto a c'hall degas kemmoù enni.",
+'protectedpagewarning' => "'''KEMENN DIWALL: Gwarezet eo bet ar bajenn-mañ. N'eus nemet an implijerien ganto ar statud merour a c'hall degas kemmoù enni.'''
+Moned ziwezhañ ar marilh a vez diskouezet amañ a-is evel dave :",
+'semiprotectedpagewarning' => "''Notenn :''' Gwarezet eo ar bajenn-mañ; n'eus nemet an implijerien bet krouet ur gont ganto a c'hall degas kemmoù enni. Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :",
'cascadeprotectedwarning' => "'''Diwallit :''' Prennet eo ar bajenn-mañ. N'eus nemet ar verourien a c'hall degas kemmoù enni peogwir he c'haver e-touez ar {{PLURAL:\$1|bajenn|pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :",
-'titleprotectedwarning' => "'''DIWALLIT : Gwarezet eo bet ar bajenn-mañ e doare ma ranker kaout [[Special:ListGroupRights|gwirioù dibar]] a-benn krouiñ anezhi.'''",
-'templatesused' => 'Patromoù implijet war ar bajenn-mañ :',
-'templatesusedpreview' => 'Patromoù implijet er rakweled-mañ :',
-'templatesusedsection' => 'Patromoù implijet er rann-mañ :',
+'titleprotectedwarning' => "'''DIWALLIT : Gwarezet eo bet ar bajenn-mañ e doare ma ranker kaout [[Special:ListGroupRights|gwirioù dibar]] a-benn krouiñ anezhi.''' Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :",
+'templatesused' => '{{PLURAL:$1|Patrom|Patromoù}} implijet war ar bajenn-mañ :',
+'templatesusedpreview' => '{{PLURAL:$1|Patrom|Patromoù}} implijet er rakweladenn-mañ :',
+'templatesusedsection' => '{{PLURAL:$1|Patrom|Patromoù}} implijet er rann-mañ :',
'template-protected' => '(gwarezet)',
'template-semiprotected' => '(damwarezet)',
'hiddencategories' => "{{PLURAL:$1|1 rummad kuzhet|$1 rummad kuzhet}} m'emañ rollet ar bajenn-mañ :",
@@ -738,16 +767,18 @@ N'eus nemet an implijerien ganto ar statud merour a c'hall degas kemmoù enni.''
'nocreatetext' => 'Strishaet eo bet an tu da grouiñ pajennoù nevez war {{SITENAME}}.
Gallout a rit mont war-gil ha degas kemmoù en ur bajenn zo anezhi dija, pe [[Special:UserLogin|en em enrollañ ha krouiñ ur gont]].',
'nocreate-loggedin' => "N'oc'h ket aotreet da grouiñ pajennoù nevez.",
+'sectioneditnotsupported-title' => "N'eo ket skoret ar c'hemmañ rannoù",
+'sectioneditnotsupported-text' => "N'eo ket skoret ar c'hemmañ rannoù evit ar bajenn-mañ",
'permissionserrors' => 'Fazioù Aotre',
'permissionserrorstext' => "N'oc'h ket aotreet d'ober kement-mañ evit {{PLURAL:$1|an abeg-mañ|an abegoù-mañ}} :",
'permissionserrorstext-withaction' => "N'oc'h ket aotreet da $2, evit an {{PLURAL:$1|abeg-mañ|abeg-mañ}} :",
-'recreate-deleted-warn' => "'''Diwallit : Emaoc'h o krouiñ ur bajenn zo bet diverket c'hoazh.'''
+'recreate-moveddeleted-warn' => "'''Diwallit : Emaoc'h o krouiñ ur bajenn zo bet diverket c'hoazh.'''
En em soñjit ervat ha talvoudus eo kenderc'hel krouiñ ar bajenn.
-Deoc'h da c'houzout, aze emañ marilh an diverkadenn :",
-'deleted-notice' => 'Diverket eo bet ar bajenn-mañ.
-Dindan emañ merket dave istor an diverkadennoù.',
-'deletelog-fulllog' => 'Gwelet ar marilh klok',
+Deoc'h da c'houzout, aze emañ ar marilhoù diverkañ hag adenvel :",
+'moveddeleted-notice' => 'Diverket eo bet ar bajenn-mañ.
+Dindan emañ ar marilh diverkañ hag adenvel.',
+'log-fulllog' => 'Gwelet ar marilh klok',
'edit-hook-aborted' => "C'hwitet ar c'hemmañ gant un astenn.
Abeg dianav.",
'edit-gone-missing' => 'Dibosupl hizivaat ar bajenn.
@@ -770,6 +801,7 @@ A-gostez eo bet lezet an arventenn-se.',
'post-expand-template-argument-category' => 'Pajennoù enno arventennoù patrom bet lezet a-gostez',
'parser-template-loop-warning' => "Patrom e kelc'h detektet : [[$1]]",
'parser-template-recursion-depth-warning' => 'Tizhet bevenn donder galvoù ar patromoù ($1)',
+'language-converter-depth-warning' => "Aet eur en tu all d'ar vevenn amdreiñ yezhoù ($1)",
# "Undo" feature
'undo-success' => "Gallout a reer disteurel ar c'hemmoù-mañ. Gwiriit, mar plij, gant ar geñveriadenn a-is evit bezañ sur eo an dra-se a fell deoc'h ober; goude-se enrollit ar c'hemmoù a-is a-benn echuiñ disteurel ar c'hemmoù.",
@@ -789,7 +821,7 @@ An abeg roet gant $3 zo ''$2''",
'currentrev' => 'Stumm a-vremañ pe stumm red',
'currentrev-asof' => 'Stumm red eus an $1',
'revisionasof' => 'Stumm eus an $1',
-'revision-info' => 'Stumm eus an $1 gant $2', # Additionally available: $3: revision id
+'revision-info' => 'Stumm eus an $1 gant $2',
'previousrevision' => '← Stumm kent',
'nextrevision' => "Stumm war-lerc'h →",
'currentrevisionlink' => 'Gwelet ar stumm red',
@@ -802,7 +834,7 @@ An abeg roet gant $3 zo ''$2''",
Alc'hwez : (red) = diforc'hioù gant ar stumm a-vremañ,
(diwez) = diforc'hioù gant ar stumm kent, D = kemm dister",
'history-fieldset-title' => 'Furchal en istor',
-'deletedrev' => '[diverket]',
+'history-show-deleted' => 'Diverket hepken',
'histfirst' => 'Kentañ',
'histlast' => 'Diwezhañ',
'historysize' => '({{PLURAL:$1|$1 okted|$1 okted}})',
@@ -811,71 +843,113 @@ Alc'hwez : (red) = diforc'hioù gant ar stumm a-vremañ,
# Revision feed
'history-feed-title' => "Istor ar c'hemmoù",
'history-feed-description' => "Istor ar c'hemmoù degaset war ar bajenn-mañ eus ar wiki",
-'history-feed-item-nocomment' => "$1 d'an $2", # user at time
+'history-feed-item-nocomment' => "$1 d'an $2",
'history-feed-empty' => "Ar bajenn goulennet n'eus ket anezhi.
Marteze eo bet diverket eus ar wiki, pe adanvet.
Implijit [[Special:Search|klaskit er wiki]] evit kavout pajennoù all a c'hallfe klotañ.",
# Revision deletion
-'rev-deleted-comment' => '(evezhiadenn diverket)',
-'rev-deleted-user' => '(anv implijer diverket)',
-'rev-deleted-event' => '(elfenn dilamet)',
-'rev-deleted-text-permission' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
-Marteze e kavot munudoù war [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} roll ar pajennoù diverket].",
-'rev-deleted-text-view' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
-Dre ma'z oc'h merour e c'hallit sellet outañ;
-Marteze e kavot munudoù all war [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].",
-'rev-deleted-no-diff' => "N'hallit ket gwelet an diff-mañ rak '''diverket''' eo bet unan eus ar stummoù.
-Marteze ez eus muioc'h a vunudoù war [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].",
-'rev-deleted-unhide-diff' => "'''Diverket''' eo bet unan eus stummoù an diforc'h-mañ.
-Marteze e kavot muoic'h a ditouroù war [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].
+'rev-deleted-comment' => '(evezhiadenn diverket)',
+'rev-deleted-user' => '(anv implijer diverket)',
+'rev-deleted-event' => '(elfenn dilamet)',
+'rev-deleted-user-contribs' => "[anv implijer pe chomlec'h IP diverket - kemm kuzhet diouzh an degasadennoù]",
+'rev-deleted-text-permission' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
+Marteze e kavot munudoù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} roll ar pajennoù diverket].",
+'rev-deleted-text-unhide' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
+Marteze e kavot munudoù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].
+Evel merour e c'hallit [$1 gwelet ar stumm-se] c'hoazh mar fell deoc'h kenderc'hel.",
+'rev-suppressed-text-unhide' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
+Marteze e kavor muioc'h a vunudoù war [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].
+Pa'z oc'h merour e c'hallit [$1 gwelet ar stummm-se] mar fell deoc'h kenderc'hel ganti.",
+'rev-deleted-text-view' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.
+Pa'z oc'h merour e c'hallit sellet outañ;
+Marteze e kavot munudoù all war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].",
+'rev-suppressed-text-view' => "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn-mañ.
+Pa'z oc'h merour e c'hallit sellet outañ; marteze e kavot munudoù war [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].",
+'rev-deleted-no-diff' => "N'hallit ket gwelet an diforc'h-mañ rak '''diverket''' eo bet unan eus ar stummoù.
+Marteze ez eus muioc'h a vunudoù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].",
+'rev-suppressed-no-diff' => "N'hallit ket gwelet an diforc'h-se rak '''diverket''' ez eus bet unan eus an adweladennoù.",
+'rev-deleted-unhide-diff' => "'''Diverket''' eo bet unan eus kemmoù an diforc'h-mañ.
+Marteze e kavot muoic'h a ditouroù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].
Evel merour ez oc'h aotreet da [$1 sellet ouzh an diforc'h-mañ] ma karit.",
-'rev-delundel' => 'diskouez/kuzhat',
-'revisiondelete' => 'Diverkañ/diziverkañ stummoù',
-'revdelete-nooldid-title' => "N'eus stumm pal ebet evit an degasadennoù",
-'revdelete-nooldid-text' => "Pe n'eo ket bet spisaet ganeoc'h ar stumm(où) pal da implijout an arc'hwel-mañ evito. pe n'eus ket eus ar stummoù spisaet, pe emaoc'h o klask kuzhat ar stumm red.",
-'revdelete-nologtype-title' => "N'eus bet resisaet seurt marilh ebet",
-'revdelete-nologtype-text' => "N'eus ket bet spisaet ganeoc'h seurt marilh ebet da lakaat an ober-mañ da c'hoarvezout warnañ.",
-'revdelete-toomanytargets-title' => 'Re a wennoù',
-'revdelete-toomanytargets-text' => "Spisaet hoc'h eus re a wennoù disheñvel da vezañ sevenet an ober-mañ warno.",
-'revdelete-nologid-title' => 'Enmont ar marilh direizh',
-'revdelete-nologid-text' => "Pe n'hoc'h eus ket spisaet enmont ebet er marilh da vezañ sevenet an ober-mañ warnañ, pe n'eus ket eus an darvoud merket.",
-'revdelete-selected' => "'''{{PLURAL:$2|Stumm dibabet|Stummoù dibabet}} eus [[:$1]] :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Darvoud eus ar marilh diuzet|Darvoud eus ar marilh diuzet}} :'''",
-'revdelete-text' => "'''Derc'hel a raio ar stummoù ha darvoudoù diverket da zont war wel war istor ar bajenn hag er marilhoù, met dazrn eus ar boued n'hallo ket bezañ gwelet gant an dud.'''
-
-Gouest e vo merourien all {{SITENAME}} da dapout krog en testennoù kuzhet ha da ziziverkañ anezho en-dro dre an hevelep etrefas, nemet e vije bet lakaet e plas strishadurioù ouzhpenn.
-Kadarnait eo mat an dra-se a fell deoc'h ober, e komprenit mat ar pezh a empleg, hag en grit en ur zoujañ d'ar [[{{MediaWiki:Policy-url}}|reolennoù]].",
-'revdelete-suppress-text' => "Ne zlefe an dilemel bezañ implijet '''nemet''' abalamour d'an abegoù da-heul :
+'rev-suppressed-unhide-diff' => "'''Diverket''' ez eus bet unan eus adweladennoù an diff-mañ.
+Titouroù ouzhpenn a c'hall bezañ war [{{lurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].
+Evel merour e c'hallit atav [$1 sellet ouzh an diff-se] mar fell deoc'h kenderc'hel.",
+'rev-deleted-diff-view' => "'''Dilamet''' ez eus bet unan eus stummoù an dif.-mañ.
+Evel merour e c'hallit gwelet an dif.-mañ; muioc'h a ditouroù a c'hall bezañ e [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù]",
+'rev-suppressed-diff-view' => "'''Diverket''' ez eus bet unan eus stummoù an dif.-mañ.
+Evel merour e c'hallit gwelet an dif.-mañ; muioc'h a ditouroù a c'hall bezañ e [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù]",
+'rev-delundel' => 'diskouez/kuzhat',
+'rev-showdeleted' => 'diskouez',
+'revisiondelete' => 'Diverkañ/diziverkañ stummoù',
+'revdelete-nooldid-title' => "N'eus stumm pal ebet evit an degasadennoù",
+'revdelete-nooldid-text' => "Pe n'eo ket bet spisaet ganeoc'h ar stumm(où) pal da implijout an arc'hwel-mañ evito. pe n'eus ket eus ar stummoù spisaet, pe emaoc'h o klask kuzhat ar stumm red.",
+'revdelete-nologtype-title' => "N'eus bet resisaet seurt marilh ebet",
+'revdelete-nologtype-text' => "N'eus ket bet spisaet ganeoc'h seurt marilh ebet da lakaat an ober-mañ da c'hoarvezout warnañ.",
+'revdelete-nologid-title' => 'Enmont ar marilh direizh',
+'revdelete-nologid-text' => "Pe n'hoc'h eus ket spisaet enmont ebet er marilh da vezañ sevenet an ober-mañ warnañ, pe n'eus ket eus an darvoud merket.",
+'revdelete-no-file' => "N'eus ket eus ar restr spisaet ganeoc'h.",
+'revdelete-show-file-confirm' => 'Ha sur oc\'h e fell deoc\'h gwelet stumm diverket ar restr "<nowiki>$1</nowiki>" deiziataet eus an $2 da $3?',
+'revdelete-show-file-submit' => 'Ya',
+'revdelete-selected' => "'''{{PLURAL:$2|Stumm dibabet|Stummoù dibabet}} eus [[:$1]] :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Darvoud eus ar marilh diuzet|Darvoud eus ar marilh diuzet}} :'''",
+'revdelete-text' => "'''Derc'hel a raio ar stummoù ha darvoudoù diverket da zont war wel war istor ar bajenn hag er marilhoù, met dazrn eus ar boued n'hallo ket bezañ gwelet gant an dud.'''
+Gouest e vo merourien all {{SITENAME}} da dapout krog en testennoù kuzhet ha da ziziverkañ anezho en-dro dre an hevelep etrefas, nemet e vije bet lakaet e plas strishadurioù ouzhpenn.",
+'revdelete-confirm' => "Kadarnait eo mat an dra-se a fell deoc'h ober, e komprenit mat ar pezh a empleg, hag en grit en ur zoujañ d'ar [[{{MediaWiki:Policy-url}}|reolennoù]].",
+'revdelete-suppress-text' => "Ne zlefe an dilemel bezañ implijet '''nemet''' abalamour d'an abegoù da-heul :
* Titouroù personel dizere
*: ''chomlec'hioù, niverennoù pellgomz pe surentez sokial personel, hag all''",
-'revdelete-legend' => 'Lakaat strishadurioù gwelet',
-'revdelete-hide-text' => 'Kuzhat testenn ar stumm',
-'revdelete-hide-name' => 'Kuzhat an ober hag ar vukadenn',
-'revdelete-hide-comment' => "Kuzhat notenn ar c'hemm",
-'revdelete-hide-user' => "Kuzhat anv implijer pe chomlec'h IP an aozer",
-'revdelete-hide-restricted' => "Diverkañ ar roadennoù kement d'ar verourien ha d'ar re all",
-'revdelete-suppress' => 'Diverkañ roadennoù ar verourien hag ar re all',
-'revdelete-hide-image' => 'Kuzhat danvez ar restr',
-'revdelete-unsuppress' => 'Lemel ar strishadurioù war ar stummoù assavet',
-'revdelete-log' => 'Abeg :',
-'revdelete-submit' => 'Lakaat da dalvezout evit ar stumm diuzet',
-'revdelete-logentry' => 'Cheñchet eo bet gweluster ar stumm evit [[$1]]',
-'logdelete-logentry' => 'kemmet eo bet gweluster an darvoud evit [[$1]]',
-'revdelete-success' => "''Gweluster ar stummoù hizivaet mat.'''",
-'logdelete-success' => "'''Gweluster ar marilh arventennet evel m'eo dleet.'''",
-'revdel-restore' => 'Cheñch ar gweluster',
-'pagehist' => 'Istor ar bajenn',
-'deletedhist' => 'Diverkañ an istor',
-'revdelete-content' => 'danvez',
-'revdelete-summary' => 'kemmañ an diverrañ',
-'revdelete-uname' => 'anv implijer',
-'revdelete-restricted' => 'Lakaat ar strishadurioù da dalvezout evit ar verourien',
-'revdelete-unrestricted' => 'dilemel ar strishadurioù evit ar verourien',
-'revdelete-hid' => 'kuzhat $1',
-'revdelete-unhid' => 'diguzhat $1',
-'revdelete-log-message' => '$1 evit $2 {{PLURAL:$2|adweladenn|adweladenn}}',
-'logdelete-log-message' => '$1 evit $2 {{PLURAL:$2|darvoud|darvoud}}',
+'revdelete-legend' => 'Lakaat strishadurioù gwelet',
+'revdelete-hide-text' => 'Kuzhat testenn ar stumm',
+'revdelete-hide-image' => 'Kuzhat danvez ar restr',
+'revdelete-hide-name' => 'Kuzhat an ober hag ar vukadenn',
+'revdelete-hide-comment' => "Kuzhat notenn ar c'hemm",
+'revdelete-hide-user' => "Kuzhat anv implijer pe chomlec'h IP an aozer",
+'revdelete-hide-restricted' => "Diverkañ ar roadennoù kement d'ar verourien ha d'ar re all",
+'revdelete-radio-same' => '(arabat cheñch)',
+'revdelete-radio-set' => 'Ya',
+'revdelete-radio-unset' => 'Ket',
+'revdelete-suppress' => 'Diverkañ roadennoù ar verourien hag ar re all',
+'revdelete-unsuppress' => 'Lemel ar strishadurioù war ar stummoù assavet',
+'revdelete-log' => 'Abeg :',
+'revdelete-submit' => 'Lakaat da dalvezout evit an {{PLURAL:$1|adweladenn|adweladennoù}} diuzet',
+'revdelete-logentry' => 'Cheñchet eo bet gweluster ar stumm evit [[$1]]',
+'logdelete-logentry' => 'kemmet eo bet gweluster an darvoud evit [[$1]]',
+'revdelete-success' => "''Gweluster ar stummoù hizivaet mat.'''",
+'revdelete-failure' => "''Dibosupl hizivaat gweluster ar stumm :'''
+$1",
+'logdelete-success' => "'''Gweluster ar marilh arventennet evel m'eo dleet.'''",
+'logdelete-failure' => "'''N'eus ket bet gallet termeniñ gweluster ar marilh :'''
+$1",
+'revdel-restore' => 'Cheñch ar gweluster',
+'pagehist' => 'Istor ar bajenn',
+'deletedhist' => 'Diverkañ an istor',
+'revdelete-content' => 'danvez',
+'revdelete-summary' => 'kemmañ an diverrañ',
+'revdelete-uname' => 'anv implijer',
+'revdelete-restricted' => 'Lakaat ar strishadurioù da dalvezout evit ar verourien',
+'revdelete-unrestricted' => 'dilemel ar strishadurioù evit ar verourien',
+'revdelete-hid' => 'kuzhat $1',
+'revdelete-unhid' => 'diguzhat $1',
+'revdelete-log-message' => '$1 evit $2 {{PLURAL:$2|adweladenn|adweladenn}}',
+'logdelete-log-message' => '$1 evit $2 {{PLURAL:$2|darvoud|darvoud}}',
+'revdelete-hide-current' => "Fazi en ur ziverkañ an elfenn deiziataet eus an $1 da $2 : ar stumm red eo.
+N'hall ket bezañ diverket.",
+'revdelete-show-no-access' => 'Fazi en ur ziskwel an elfenn deiziataet eus an $1 da $2 : merket eo evel "miret".
+N\'oc\'h ket aotreet da vont outi.',
+'revdelete-modify-no-access' => 'Fazi en ur zegas kemmoù en elfenn deiziataet eus an $1 da $2 : merket eo an elfenn evel "miret".
+N\'oc\'h ket aotreet da vont outi.',
+'revdelete-modify-missing' => "Fazi ;en ur zegas kemmoù en elfenn gant ID $1: n'emañ ket er bank roadennoù !",
+'revdelete-no-change' => "'''Evezh :''' emañ an arventennoù gweluster goulennet gant an elfenn deiziataet eus an $1 da $2 dija",
+'revdelete-concurrent-change' => "Fazi pa'z eus bet bet degaset kemmoù en elfenn deiziataet eus an $1 da $2 : cheñchet eo bet e statud gant unan bennak all dres pa oac'h-chwi o kemmañ anezhi. Gwiriit ar marilhoù.",
+'revdelete-only-restricted' => "Ur fazi zo bet en ur guzhat an elfenn deiziadet eus an $1 da $2 : n'hallit ket kuzhat an elfennoù-mañ ouzh ar verourien hep dibab ivez unan eus an dibarzhioù gweluster all.",
+'revdelete-reason-dropdown' => '*Abegoù diverkañ boutin
+**Gaou ouzh ar gwirioù implijout
+** Titouroù personel dizereat',
+'revdelete-otherreason' => 'Abeg all/ouzhpenn :',
+'revdelete-reasonotherlist' => 'Abeg all',
+'revdelete-edit-reasonlist' => 'Kemmañ abegoù an diverkañ',
+'revdelete-offender' => 'Aozer an adlenn :',
# Suppression log
'suppressionlog' => 'Marilh diverkañ',
@@ -911,67 +985,13 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'mergelogpagetext' => 'Setu aze roll kendeuzadennoù diwezhañ un eil pajenn istor gant eben.',
# Diffs
-'history-title' => 'Istor stummoù disheñvel "$1"',
-'difference' => "(Diforc'hioù etre ar stummoù)",
-'lineno' => 'Linenn $1:',
-'compareselectedversions' => 'Keñveriañ ar stummoù diuzet',
-'visualcomparison' => 'Keñveriañ dre welet',
-'wikicodecomparison' => 'Keñveriañ dre Wikiskrid',
-'editundo' => 'disteuler',
-'diff-multi' => "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} kuzhet.)",
-'diff-movedto' => 'kaset da $1',
-'diff-styleadded' => 'Stil $1 ouzhpennet',
-'diff-added' => '$1 ouzhpennet',
-'diff-changedto' => 'kemmet war-du $1',
-'diff-movedoutof' => "dilec'hiet er-maez eus $1",
-'diff-styleremoved' => 'stil $1 tennet kuit',
-'diff-removed' => '$1 tennet kuit',
-'diff-changedfrom' => 'kemmet abaoe $1',
-'diff-src' => 'tarzh',
-'diff-withdestination' => 'gant ar pal $1',
-'diff-with' => '&#32;gant $1 $2',
-'diff-with-final' => '&#32;ha $1 $2',
-'diff-width' => 'ledander',
-'diff-height' => 'uhelder',
-'diff-p' => "ur '''rannbennad'''",
-'diff-blockquote' => "un '''arroud'''",
-'diff-h1' => "un '''talbenn (live 1)'''",
-'diff-h2' => "un '''talbenn (live 2)'''",
-'diff-h3' => "un '''talbenn (live 3)'''",
-'diff-h4' => "un '''talbenn (live 4)'''",
-'diff-h5' => "un '''talbenn (live 5)'''",
-'diff-pre' => "ur '''bloc'had rakfurmadet'''",
-'diff-div' => "ur '''rann'''",
-'diff-ul' => "ur '''roll en dizurzh'''",
-'diff-ol' => "ur '''roll urzhiet'''",
-'diff-li' => "ur '''roll traezoù'''",
-'diff-table' => "un '''daolenn'''",
-'diff-tbody' => "'''endalc'had un daolenn'''",
-'diff-tr' => "ul '''linenn'''",
-'diff-td' => "ur '''gellig'''",
-'diff-th' => "un '''talbenn'''",
-'diff-br' => "un '''torr'''",
-'diff-hr' => "ur '''reolenn a-hed'''",
-'diff-code' => "ur '''bloc'had kod urzhiataer'''",
-'diff-dl' => "ur '''roll termeniñ'''",
-'diff-dt' => "un '''termen termeniñ'''",
-'diff-dd' => "un '''termenadur'''",
-'diff-input' => "un '''enmont'''",
-'diff-form' => "ur '''furmskrid'''",
-'diff-img' => "ur '''skeudenn'''",
-'diff-span' => "ur '''span'''",
-'diff-a' => "ul '''liamm'''",
-'diff-i' => "'''italeg'''",
-'diff-b' => "'''tev'''",
-'diff-strong' => "'''kreñv'''",
-'diff-em' => "'''c'hwezhadur'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''bras'''",
-'diff-del' => "'''diverket'''",
-'diff-tt' => "'''ledander spisaet'''",
-'diff-sub' => "'''isskript'''",
-'diff-sup' => "'''usskript'''",
-'diff-strike' => "'''barrennet a-dreuz'''",
+'history-title' => 'Istor stummoù disheñvel "$1"',
+'difference' => "(Diforc'hioù etre ar stummoù)",
+'lineno' => 'Linenn $1:',
+'compareselectedversions' => 'Keñveriañ ar stummoù diuzet',
+'showhideselectedversions' => 'Diskouez/Kuzhat ar stummoù diuzet',
+'editundo' => 'disteuler',
+'diff-multi' => "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} kuzhet.)",
# Search results
'searchresults' => "Disoc'h ar c'hlask",
@@ -979,28 +999,25 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'searchresulttext' => "Evit gouzout hiroc'h diwar-benn ar c'hlask e {{SITENAME}}, sellet ouzh [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Klasket hoc\'h eus \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|an holl bajennoù a grog gant "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|an holl bajennoù enno ul liamm war-du "$1"]])',
'searchsubtitleinvalid' => "Klasket hoc'h eus '''$1'''",
-'noexactmatch' => "'''N'eus pajenn ebet anvet \"\$1\".''' Gallout a rit [[:\$1|krouiñ anezhi]].",
-'noexactmatch-nocreate' => "'''N'eus pajenn ebet anvet \"\$1\".'''",
'toomanymatches' => 'Re a respontoù a glot gant ar goulenn, klaskit gant ur goulenn all',
'titlematches' => 'Klotadurioù gant an titloù',
'notitlematches' => "N'emañ ar ger(ioù) goulennet e titl pennad ebet",
'textmatches' => 'Klotadurioù en testennoù',
'notextmatches' => "N'emañ ar ger(ioù) goulennet e testenn pennad ebet",
-'prevn' => '$1 kent',
-'nextn' => "$1 war-lerc'h",
+'prevn' => '{{PLURAL:$1|$1}} kent',
+'nextn' => "{{PLURAL:$1|$1}} war-lerc'h",
'prevn-title' => "$1 {{PLURAL:$1|disoc'h|disoc'h}} kent",
'nextn-title' => "$1 {{PLURAL:$1|disoc'h|disoc'h}} war-lerc'h",
'shown-title' => "Diskouez $1 {{PLURAL:$1|disoc'h|disoc'h}} dre bajenn",
-'viewprevnext' => 'Gwelet ($1) ($2) ($3).',
+'viewprevnext' => 'Gwelet ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Dibarzhioù klask',
'searchmenu-exists' => "'''Ur bajenn anvet\"[[:\$1]]\" zo war ar wiki-mañ'''",
'searchmenu-new' => "'''Krouiñ ar bajenn \"[[:\$1]]\" war ar wiki-mañ !'''",
'searchhelp-url' => 'Help:Skoazell',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Furchal er pajennoù a grog gant ar rakger-mañ]]',
-'searchprofile-articles' => "Endalc'had ar pajennoù",
-'searchprofile-articles-and-proj' => 'Pajennoù gant boued enno ha pajennoù ar raktres',
-'searchprofile-project' => 'Pajennoù ar raktres',
-'searchprofile-images' => 'Restroù',
+'searchprofile-articles' => 'Pajennoù gant boued',
+'searchprofile-project' => 'Pajennoù skoazell ha pajennoù ar raktres',
+'searchprofile-images' => 'Liesmedia',
'searchprofile-everything' => 'Pep tra',
'searchprofile-advanced' => 'Araokaet',
'searchprofile-articles-tooltip' => 'Klask e $1',
@@ -1008,8 +1025,6 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'searchprofile-images-tooltip' => 'Klask ar restroù',
'searchprofile-everything-tooltip' => "Klask e pep lec'h (er pajennoù kaozeal ivez)",
'searchprofile-advanced-tooltip' => 'Klask en esaouennoù anv personelaet',
-'prefs-search-nsdefault' => 'Klask en ur ober gant an esaouennoù anv dre ziouer :',
-'prefs-search-nscustom' => 'Klask dre an esaouennoù anv personelaet :',
'search-result-size' => '$1 ({{PLURAL:$2|1 ger|$2 ger}})',
'search-result-score' => 'Klotadusted : $1%',
'search-redirect' => '(adkas $1)',
@@ -1022,11 +1037,12 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'search-mwsuggest-disabled' => 'hep kinnigoù',
'search-relatedarticle' => "Disoc'hoù kar",
'mwsuggest-disable' => 'Diweredekaat kinnigoù AJAX',
+'searcheverything-enable' => 'Klask en holl esaouennoù anv',
'searchrelated' => "disoc'hoù kar",
'searchall' => 'An holl',
'showingresults' => "Diskouez betek {{PLURAL:$1|'''1''' disoc'h|'''$1''' disoc'h}} o kregiñ gant #'''$2'''.",
'showingresultsnum' => "Diskouez {{PLURAL:$3|'''1''' disoc'h|'''$3''' disoc'h}} o kregiñ gant #'''$2'''.",
-'showingresultstotal' => "O tiskouez a-is {{PLURAL:$4|disoc'h '''$1''' diwar '''$3'''|disoc'hoù '''$1 - $2''' diwar ''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Disoc'h '''$1''' diwar '''$3'''|Disoc'hoù '''$1 - $2''' diwar '''$3'''}} evit '''$4'''",
'nonefound' => "'''Notenn''' : dre ziouer ne glasker nemet en esaouennoù anv zo. Klaskit spisaat ho koulenn gant '''all :''' evit klask e pep lec'h (e-barzh ar pajennoù-kaozeal, ar patromoù, hag all), pe dibabit an esaouenn anv a zere.",
'search-nonefound' => "An enklask-mañ ne zisoc'h war netra.",
'powersearch' => 'Klask',
@@ -1034,111 +1050,151 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'powersearch-ns' => 'Klask en esaouennoù anv :',
'powersearch-redir' => 'Roll an adkasoù',
'powersearch-field' => 'Klask',
+'powersearch-togglelabel' => 'Dibab :',
+'powersearch-toggleall' => 'An holl',
+'powersearch-togglenone' => 'Hini ebet',
'search-external' => 'Klask diavaez',
'searchdisabled' => "<p>Diweredekaet eo bet an arc'hwel klask war an destenn a-bezh evit ur frapad rak ur samm re vras e oa evit ar servijer. Emichañs e vo tu d'e adlakaat pa vo ur servijer galloudusoc'h ganeomp. Da c'hortoz e c'hallit klask gant Google:</p>",
+# Quickbar
+'qbsettings' => 'Personelaat ar varrenn ostilhoù',
+'qbsettings-none' => 'Hini ebet',
+'qbsettings-fixedleft' => 'Kleiz',
+'qbsettings-fixedright' => 'Dehou',
+'qbsettings-floatingleft' => 'War-neuñv a-gleiz',
+'qbsettings-floatingright' => 'War-neuñv a-zehou',
+
# Preferences page
-'preferences' => 'Penndibaboù',
-'mypreferences' => 'Penndibaboù',
-'prefs-edits' => 'Niver a zegasadennoù :',
-'prefsnologin' => 'Digevreet',
-'prefsnologintext' => 'Ret eo deoc\'h bezañ <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} luget]</span> a-benn kemmañ ho tibaboù implijer.',
-'prefsreset' => 'Adlakaet eo bet ar penndibaboù diouzh ar stumm bet enrollet.',
-'qbsettings' => 'Personelaat ar varrenn ostilhoù',
-'qbsettings-none' => 'Hini ebet',
-'qbsettings-fixedleft' => 'Kleiz',
-'qbsettings-fixedright' => 'Dehou',
-'qbsettings-floatingleft' => 'War-neuñv a-gleiz',
-'qbsettings-floatingright' => 'War-neuñv a-zehou',
-'changepassword' => 'Kemmañ ar ger-tremen',
-'skin' => 'Gwiskadur',
-'skin-preview' => 'Rakwelet',
-'math' => 'Tres jedoniel',
-'dateformat' => 'Stumm an deiziad',
-'datedefault' => 'Dre ziouer',
-'datetime' => 'Deiziad hag eur',
-'math_failure' => 'Fazi jedoniezh',
-'math_unknown_error' => 'fazi dianav',
-'math_unknown_function' => 'kevreizhenn jedoniel dianav',
-'math_lexing_error' => 'fazi ger',
-'math_syntax_error' => 'fazi ereadur',
-'math_image_error' => "C'hwitet eo bet ar gaozeadenn e PNG, gwiriit staliadur Latex, dvips, gs ha convert",
-'math_bad_tmpdir' => "N'hall ket krouiñ pe skrivañ er c'havlec'h da c'hortoz",
-'math_bad_output' => "N'hall ket krouiñ pe skrivañ er c'havlec'h ermaeziañ",
-'math_notexvc' => "N'hall ket an erounezeg 'texvc' bezañ kavet. Lennit math/README evit he c'hefluniañ.",
-'prefs-personal' => 'Titouroù personel',
-'prefs-rc' => 'Kemmoù diwezhañ',
-'prefs-watchlist' => 'Roll evezhiañ',
-'prefs-watchlist-days' => 'Niver a zevezhioù da ziskouez er rollad evezhiañ :',
-'prefs-watchlist-days-max' => "(7 devezh d'ar muiañ)",
-'prefs-watchlist-edits' => 'Niver a gemmoù da ziskouez er roll evezhiañ astennet :',
-'prefs-watchlist-edits-max' => '(niver brasañ : 1000)',
-'prefs-misc' => 'Penndibaboù liesseurt',
-'prefs-resetpass' => 'Cheñch ar ger-tremen',
-'saveprefs' => 'Enrollañ ar penndibaboù',
-'resetprefs' => 'Adlakaat ar penndibaboù kent',
-'restoreprefs' => 'Adlakaat an holl arventennoù dre ziouer',
-'textboxsize' => 'Prenestr skridaozañ',
-'prefs-edit-boxsize' => 'Ment ar prenestr skridaozañ.',
-'rows' => 'Linennoù :',
-'columns' => 'Bannoù',
-'searchresultshead' => 'Enklaskoù',
-'resultsperpage' => 'Niver a respontoù dre bajenn :',
-'contextlines' => 'Niver a linennoù dre respont',
-'contextchars' => 'Niver a arouezennoù kendestenn dre linenn',
-'stub-threshold' => 'Bevenn uhelañ evit al <a href="#" class="stub">liammoù war-du an danvez pennadoù</a> (okted) :',
-'recentchangesdays' => "Niver a zevezhioù da ziskouez er c'hemmoù diwezhañ :",
-'recentchangesdays-max' => "(d'ar muiañ $1 {{PLURAL:$1|deiz|deiz}})",
-'recentchangescount' => "Niver a gemmoù da ziskouez er c'hemmoù diwezhañ, er pajennoù istor hag er marilhoù, dre ziouer",
-'savedprefs' => 'Enrollet eo bet ar penndibaboù.',
-'timezonelegend' => 'Takad eur :',
-'timezonetext' => "Mar ne resisait ket al linkadur eur e vo graet gant eur Europa ar C'hornôg dre ziouer.",
-'localtime' => "Eur lec'hel :",
-'timezoneselect' => 'Takad eur :',
-'timezoneuseserverdefault' => 'Ober gant talvoudenn ar servijer',
-'timezoneuseoffset' => 'Arall (resisaat al linkadur)',
-'timezoneoffset' => 'Linkadur eur¹ :',
-'servertime' => 'Eur ar servijer :',
-'guesstimezone' => 'Ober gant talvoudenn ar merdeer',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azia',
-'timezoneregion-atlantic' => 'Meurvor Atlantel',
-'timezoneregion-australia' => 'Aostralia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Meurvor Indez',
-'timezoneregion-pacific' => 'Meurvor Habask',
-'allowemail' => 'Aotren ar posteloù a-berzh implijerien all',
-'prefs-searchoptions' => 'Dibarzhioù klask',
-'prefs-namespaces' => 'Esaouennoù',
-'defaultns' => 'Klask en esaouennoù-mañ dre ziouer :',
-'default' => 'dre ziouer',
-'files' => 'Restroù',
-'prefs-custom-css' => 'CSS personelaet',
-'prefs-custom-js' => 'JS personelaet',
+'preferences' => 'Penndibaboù',
+'mypreferences' => 'Penndibaboù',
+'prefs-edits' => 'Niver a zegasadennoù :',
+'prefsnologin' => 'Digevreet',
+'prefsnologintext' => 'Ret eo deoc\'h bezañ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kevreet]</span> a-benn gellout cheñch ho tibaboù implijer.',
+'changepassword' => 'Kemmañ ar ger-tremen',
+'prefs-skin' => 'Gwiskadur',
+'skin-preview' => 'Rakwelet',
+'prefs-math' => 'Tres jedoniel',
+'datedefault' => 'Dre ziouer',
+'prefs-datetime' => 'Deiziad hag eur',
+'prefs-personal' => 'Titouroù personel',
+'prefs-rc' => 'Kemmoù diwezhañ',
+'prefs-watchlist' => 'Roll evezhiañ',
+'prefs-watchlist-days' => 'Niver a zevezhioù da ziskouez er rollad evezhiañ :',
+'prefs-watchlist-days-max' => "(7 devezh d'ar muiañ)",
+'prefs-watchlist-edits' => 'Niver a gemmoù da ziskouez er roll evezhiañ astennet :',
+'prefs-watchlist-edits-max' => '(niver brasañ : 1000)',
+'prefs-watchlist-token' => 'Jedouer evit ar roll evezhiañ :',
+'prefs-misc' => 'Penndibaboù liesseurt',
+'prefs-resetpass' => 'Cheñch ar ger-tremen',
+'prefs-email' => 'Dibarzhioù postel',
+'prefs-rendering' => 'Neuz',
+'saveprefs' => 'Enrollañ ar penndibaboù',
+'resetprefs' => 'Adlakaat ar penndibaboù kent',
+'restoreprefs' => 'Adlakaat an holl arventennoù dre ziouer',
+'prefs-editing' => 'Prenestr skridaozañ',
+'prefs-edit-boxsize' => 'Ment ar prenestr skridaozañ.',
+'rows' => 'Linennoù :',
+'columns' => 'Bannoù',
+'searchresultshead' => 'Enklaskoù',
+'resultsperpage' => 'Niver a respontoù dre bajenn :',
+'contextlines' => 'Niver a linennoù dre respont',
+'contextchars' => 'Niver a arouezennoù kendestenn dre linenn',
+'stub-threshold' => 'Bevenn uhelañ evit al <a href="#" class="stub">liammoù war-du an danvez pennadoù</a> (okted) :',
+'recentchangesdays' => "Niver a zevezhioù da ziskouez er c'hemmoù diwezhañ :",
+'recentchangesdays-max' => "(d'ar muiañ $1 {{PLURAL:$1|deiz|deiz}})",
+'recentchangescount' => 'Niver a gemmoù da ziskouez dre ziouer',
+'prefs-help-recentchangescount' => "Kemer a ra an dra-mañ e kont ar c'hemmoù diwezhañ, istor ar pajennoù hag ar marilhoù.",
+'prefs-help-watchlist-token' => "Leuniañ ar c'hombod-mañ gant un dalvoudenn guzh a lakaio ul lanvad RSS war-sav evit ho rollad evezhiañ.
+Kement den hag a ouio eus ho jedouer a c'hallo lenn ho rollad evezhiañ, dibabit un dalvoudegezh suraet.
+Setu aze un dalvoudenn ganet dre zegouezh hag a c'hallfec'h implijout : $1",
+'savedprefs' => 'Enrollet eo bet ar penndibaboù.',
+'timezonelegend' => 'Takad eur :',
+'localtime' => "Eur lec'hel :",
+'timezoneuseserverdefault' => 'Ober gant talvoudenn ar servijer',
+'timezoneuseoffset' => 'Arall (resisaat al linkadur)',
+'timezoneoffset' => 'Linkadur eur¹ :',
+'servertime' => 'Eur ar servijer :',
+'guesstimezone' => 'Ober gant talvoudenn ar merdeer',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azia',
+'timezoneregion-atlantic' => 'Meurvor Atlantel',
+'timezoneregion-australia' => 'Aostralia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Meurvor Indez',
+'timezoneregion-pacific' => 'Meurvor Habask',
+'allowemail' => 'Aotren ar posteloù a-berzh implijerien all',
+'prefs-searchoptions' => 'Dibarzhioù klask',
+'prefs-namespaces' => 'Esaouennoù',
+'defaultns' => 'Klask en esaouennoù-anv a-hend-all :',
+'default' => 'dre ziouer',
+'prefs-files' => 'Restroù',
+'prefs-custom-css' => 'CSS personelaet',
+'prefs-custom-js' => 'JS personelaet',
+'prefs-reset-intro' => "Ober gant ar bajenn-mañ a c'hallit evit adlakaat ho penndibaboù dre ziouer evit al lec'hienn-mañ. Kement-se n'hallo ket bezañ disc'hraet da c'houde.",
+'prefs-emailconfirm-label' => 'Kadarnaat ar postel :',
+'prefs-textboxsize' => 'Ment ar prenestr skridaozañ',
+'youremail' => 'Postel *:',
+'username' => 'Anv implijer :',
+'uid' => 'Niv. identelezh an implijer :',
+'prefs-memberingroups' => 'Ezel eus {{PLURAL:$1|ar strollad|ar strolladoù}}:',
+'prefs-registration' => 'Deiziad enskrivañ :',
+'yourrealname' => 'Anv gwir*',
+'yourlanguage' => 'Yezh an etrefas&nbsp;',
+'yourvariant' => 'Adstumm:',
+'yournick' => 'Sinadur :',
+'prefs-help-signature' => 'Dleout a rafe an evezhiadennoù war ar pajennoù kaozeal bezañ sinet gant "<nowiki>~~~~</nowiki>" a vo treuzfurmet en ho sinadur hag euriet.',
+'badsig' => 'Direizh eo ho sinadur kriz; gwiriit ho palizennoù HTML.',
+'badsiglength' => "Re hir eo ho sinadur.
+Dre ret e rank bezañ nebeutoc'h eget {{PLURAL:$1|arouezenn|arouezenn}} ennañ.",
+'yourgender' => 'Jener :',
+'gender-unknown' => 'Anresisaet',
+'gender-male' => 'Paotr',
+'gender-female' => "Plac'h",
+'prefs-help-gender' => "Diret : implijet evit kenglotadurioù gour e troidigezh etrefas ar meziant.
+A-wel d'an holl e vo an titour-mañ.",
+'email' => 'Postel',
+'prefs-help-realname' => "Diret eo skrivañ hoc'h anv gwir.
+Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset ganeoc'h.",
+'prefs-help-email' => "Diret eo merkañ ur chomlec'h postel met ma lakait unan e vo tu da adkas ur ger-tremen nevez deoc'h ma tichañsfe deoc'h disoñjal ho hini.
+Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implijer ha kaozeal hep na vefe ret deoc'h diskuliañ piv oc'h ivez.",
+'prefs-help-email-required' => "Ezhomm zo eus ur chomlec'h postel.",
+'prefs-info' => 'Titouroù diazez',
+'prefs-i18n' => 'Etrebroadelaat',
+'prefs-signature' => 'Sinadur',
+'prefs-dateformat' => 'Furmad an deiziadoù',
+'prefs-timeoffset' => 'Linkadur eur',
+'prefs-advancedediting' => 'Dibarzhioù araokaet',
+'prefs-advancedrc' => 'Dibarzhioù araokaet',
+'prefs-advancedrendering' => 'Dibarzhioù araokaet',
+'prefs-advancedsearchoptions' => 'Dibarzhioù araokaet',
+'prefs-advancedwatchlist' => 'Dibarzhioù araokaet',
+'prefs-display' => 'Dibarzhioù diskwel',
+'prefs-diffs' => "Diforc'hioù",
# User rights
-'userrights' => 'Merañ statud an implijerien', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Merañ strolladoù an implijer',
-'userrights-user-editname' => 'Lakait un anv implijer :',
-'editusergroup' => 'Kemmañ ar strolladoù implijerien',
-'editinguser' => "Kemmañ gwirioù an implijer '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Kemmañ strolladoù an implijer',
-'saveusergroups' => 'Enrollañ ar strolladoù implijer',
-'userrights-groupsmember' => 'Ezel eus :',
-'userrights-groups-help' => "Cheñch strollad an implijer a c'hallit ober.
+'userrights' => 'Merañ statud an implijerien',
+'userrights-lookup-user' => 'Merañ strolladoù an implijer',
+'userrights-user-editname' => 'Lakait un anv implijer :',
+'editusergroup' => 'Kemmañ ar strolladoù implijerien',
+'editinguser' => "Kemmañ gwirioù an implijer '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Kemmañ strolladoù an implijer',
+'saveusergroups' => 'Enrollañ ar strolladoù implijer',
+'userrights-groupsmember' => 'Ezel eus :',
+'userrights-groupsmember-auto' => 'Ezel emplegat eus :',
+'userrights-groups-help' => "Cheñch strollad an implijer a c'hallit ober.
* Ul log asket a verk emañ an implijer er strollad.
* Ul log diask a verk n'emañ ket an implijer er strollad.
* Ur * a verk n'hallit ket dilemel ar strollad ur wech bet ouzhpennet, pe ar c'hontrol.",
-'userrights-reason' => 'Abeg :',
-'userrights-no-interwiki' => "N'oc'h ket aotreet da gemmañ ar gwirioù implijer war wikioù all.",
-'userrights-nodatabase' => "N'eus ket eus an diaz titouroù $1 pe n'eo ket lec'hel.",
-'userrights-nologin' => "Ret eo deoc'h [[Special:UserLogin|bezañ enrollet]] gant ur gont merour a-benn reiñ gwirioù implijer.",
-'userrights-notallowed' => "N'eo ket aotreet ho kont da reiñ gwirioù implijer.",
-'userrights-changeable-col' => "Ar strolladoù a c'hallit cheñch",
-'userrights-unchangeable-col' => "Ar strolladoù n'hallit ket cheñch",
+'userrights-reason' => 'Abeg :',
+'userrights-no-interwiki' => "N'oc'h ket aotreet da gemmañ ar gwirioù implijer war wikioù all.",
+'userrights-nodatabase' => "N'eus ket eus an diaz titouroù $1 pe n'eo ket lec'hel.",
+'userrights-nologin' => "Ret eo deoc'h [[Special:UserLogin|bezañ enrollet]] gant ur gont merour a-benn reiñ gwirioù implijer.",
+'userrights-notallowed' => "N'eo ket aotreet ho kont da reiñ gwirioù implijer.",
+'userrights-changeable-col' => "Ar strolladoù a c'hallit cheñch",
+'userrights-unchangeable-col' => "Ar strolladoù n'hallit ket cheñch",
# Groups
'group' => 'Strollad :',
@@ -1191,6 +1247,7 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'right-bigdelete' => 'Diverkañ pajennoù dezho un hir a istor',
'right-deleterevision' => 'Diverkañ ha diziverkañ stummoù zo eus ur pajenn',
'right-deletedhistory' => 'Gwelet anvioù an istorioù diverket hep diskouez an destenn stag outo',
+'right-deletedtext' => "Gwelet ar skrid diverket hag an diforc'hioù etre ar stummoù diverket",
'right-browsearchive' => 'Klask pajennoù bet diverket',
'right-undelete' => 'Assevel ur bajenn',
'right-suppressrevision' => 'Teuler ur sell war ar stummoù kuzhet ouzh ar verourien hag assevel anezho',
@@ -1204,6 +1261,8 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'right-editprotected' => 'Kemmañ ar pajennoù gwarezet (hep gwarez dre skalierad)',
'right-editinterface' => 'Degas kemmoù war an etrefas implijer',
'right-editusercssjs' => 'Kemmañ restroù CSS ha JS implijerien all',
+'right-editusercss' => 'Kemmañ restroù CSS implijerien all',
+'right-edituserjs' => 'Kemmañ restroù JS implijerien all',
'right-rollback' => 'Disteuler prim kemmoù an implijer diwezhañ en deus kemmet ur bajenn resis',
'right-markbotedits' => "Merkañ ar c'hemmoù distaolet evel kemmoù bet graet gant robotoù.",
'right-noratelimit' => 'Na sell ket ar bevennoù feurioù outañ',
@@ -1220,6 +1279,8 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'right-siteadmin' => 'Prennañ ha dibrennañ ar bank-titouroù',
'right-reset-passwords' => 'Kemmañ ger-tremen implijerien all',
'right-override-export-depth' => 'Ezporzhiañ ar pajennoù en ur lakaat e-barzh ar pajennoù liammet betek un donder a 5 live',
+'right-versiondetail' => 'Sellet ouzh an titouroù ouzhpenn diwar-benn stummoù ar meziantoù',
+'right-sendemail' => "Kas ur postel d'an implijerien all",
# User rights log
'rightslog' => 'Marilh statud an implijerien',
@@ -1269,6 +1330,15 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'recentchanges-legend' => "Dibarzhioù ar c'hemmoù diwezhañ",
'recentchangestext' => "Dre ar bajenn-mañ e c'hallit heuliañ ar c'hemmoù diwezhañ bet degaset d'ar wiki.",
'recentchanges-feed-description' => "Heuilhit ar c'hemmoù diwezhañ er wiki el lusk-mañ.",
+'recentchanges-label-legend' => "Alc'hwez : $1.",
+'recentchanges-legend-newpage' => '$1 - pajenn nevez',
+'recentchanges-label-newpage' => "Gant ar c'hemm-mañ e vo krouet ur bajenn nevez.",
+'recentchanges-legend-minor' => '$1 - kemm dister',
+'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
+'recentchanges-legend-bot' => '$1 - kemm degaset gant ur robot',
+'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
+'recentchanges-legend-unpatrolled' => "$1 - kemm n'eo ket bet gwiriet",
+'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
'rcnote' => "Setu aze an {{PLURAL:$1|'''1''' change|'''$1''' kemm diwezhañ}} bet c'hoarvezet e-pad an {{PLURAL:$2|deiz|'''$2''' deiz}} diwezhañ, savet d'an $4 da $5.",
'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
@@ -1295,6 +1365,8 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
# Recent changes linked
'recentchangeslinked' => 'Heuliañ al liammoù',
+'recentchangeslinked-feed' => 'Heuliañ al liammoù',
+'recentchangeslinked-toolbox' => 'Heuliañ al liammoù',
'recentchangeslinked-title' => 'Kemmoù a denn da "$1"',
'recentchangeslinked-noresult' => 'Kemm ebet war ar pajennoù liammet e-pad an amzer spisaet.',
'recentchangeslinked-summary' => "Rollet eo war ar bajenn dibar-mañ ar c'hemmoù diwezhañ bet degaset war ar pajennoù liammet ouzh ur bajenn lakaet (pe ouzh izili ur rummad lakaet).
@@ -1305,8 +1377,8 @@ E '''tev''' emañ ar pajennoù zo war ho [[Special:Watchlist|roll evezhiañ]].",
# Upload
'upload' => 'Kargañ war ar servijer',
'uploadbtn' => 'Kargañ ur restr',
-'reupload' => 'Eilañ adarre',
'reuploaddesc' => "Distreiñ d'ar furmskrid.",
+'upload-tryagain' => 'Kas deskrivadur ar restr kemmet',
'uploadnologin' => 'digevreet',
'uploadnologintext' => "Ret eo deoc'h bezañ [[Special:UserLogin|kevreetet]] a-benn gellout enporzhiañ restroù war ar servijer.",
'upload_directory_missing' => "Mankout a ra ar c'havlec'h enporzhiañ ($1) ha n'eo ket bet ar servijer Web evit e grouiñ.",
@@ -1338,6 +1410,7 @@ S.o [[Special:NewFiles|rann ar skeudennoù nevez]] evit kaout ur sell gwiroc'h",
'minlength1' => 'Anv ar restroù a rank bezañ keit hag ul lizherenn da nebeutañ.',
'illegalfilename' => "Lakaet ez eus bet er restr « $1 » arouezennoù n'int ket aotreet evit titl ur bajenn. Mar plij, adanvit ar restr hag adkasit anezhi.",
'badfilename' => 'Anvet eo bet ar skeudenn « $1 ».',
+'filetype-mime-mismatch' => 'Ne glot ket astenn ar restr gant ar seurt MIME.',
'filetype-badmime' => 'N\'eo ket aotreet pellgargañ ar restroù a seurt MIME "$1".',
'filetype-bad-ie-mime' => 'Dibosupl enporzhiañ ar restr-mañ rak detektet e vefe evel "$1" gant Internet Explorer, ur seurt restroù berzet rak arvarus sañset.',
'filetype-unwanted-type' => "'''Eus ar seurt restroù n'int ket c'hoantaet eo \".\$1\"'''. Ar re a zere ar gwellañ zo eus {{PLURAL:\$3|ar seurt|ar seurt}} \$2.",
@@ -1358,7 +1431,6 @@ Mar fell deoc'h e teufe ho tiverradenn war wel eno eo ret deoc'h-c'hwi kemmañ a
* Anv ar restr emeur oc'h enporzhiañ : '''<tt>[[:$1]]</tt>'''
* Anv ar restr zo anezhi dija : '''<tt>[[:$2]]</tt>'''
Dibabit un anv all mar plij.",
-'fileexists-thumb' => "<center>'''Skeudenn zo anezhi'''</center>",
'fileexists-thumbnail-yes' => "Evit doare ez eus ur skeudenn krennet he ment eus ar restr ''(thumbnail)''. [[$1|thumb]]
Gwiriit ar restr '''<tt>[[:$1]]</tt>'''.
Mard eo an hevelep skeudenn ha hini ar restr orin, ha heñvel he ment, n'eo ket dav pellgargañ ur stumm krennet ouzhpenn.",
@@ -1373,6 +1445,7 @@ Mar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit
'file-deleted-duplicate' => "Diverket ez eus bet c'hoazh ur restr heñvel-poch ouzh ar restr-mañ ([[$1]]). Gwelloc'h e vefe deoc'h teuler ur sell war istor diverkadenn ar bajenn-se a-raok hec'h enporzhiañ en-dro.",
'successfulupload' => 'Eiladenn kaset da benn vat',
'uploadwarning' => 'Diwallit!',
+'uploadwarning-text' => 'Cheñchit deskrivadur ar restr a-is ha klaskit en-dro.',
'savefile' => 'Enrollañ ar restr',
'uploadedimage' => '"[[$1]]" enporzhiet',
'overwroteimage' => 'enporzhiet ur stumm nevez eus "[[$1]]"',
@@ -1380,12 +1453,14 @@ Mar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit
'uploaddisabledtext' => 'Diweredekaet eo an enporzhiañ restroù.',
'php-uploaddisabledtext' => 'Diweredekaet eo bet ar pellgargañ e PHP. Gwiriit an dibarzh arventennoù file_uploads.',
'uploadscripted' => "Er restr-mañ ez eus kodoù HTML pe skriptoù a c'hallfe bezañ kammgomprenet gant ur merdeer Kenrouedad.",
-'uploadcorrupt' => 'Brein eo ar restr-mañ, par eo he ment da netra pe fall eo an astenn anezhi.
-Gwiriit anezhi mar plij.',
'uploadvirus' => 'Viruzet eo ar restr! Titouroù : $1',
+'upload-source' => 'Restr tarzh',
'sourcefilename' => 'Anv ar restr tarzh :',
+'sourceurl' => 'URL tarzh :',
'destfilename' => 'Anv ma vo enrollet ar restr :',
'upload-maxfilesize' => 'Ment vrasañ ar restr : $1',
+'upload-description' => 'Deskrivadur ar restr',
+'upload-options' => 'Dibaboù kargañ',
'watchthisupload' => 'Evezhiañ ar bajenn-mañ',
'filewasdeleted' => "Ur restr gant an anv-mañ zo bet enporzhiet dija ha diverket goude-se. Mat e vefe deoc'h gwiriañ an $1 a-raok hec'h enporzhiañ en-dro.",
'upload-wasdeleted' => "'''Diwallit : Oc'h enporzhiañ ur bajenn bet diverket c'hoazh emaoc'h.'''
@@ -1408,15 +1483,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- leave this line exactly as it is -->",
-'upload-proto-error' => 'Protokol direizh',
-'upload-proto-error-text' => 'Rekis eo an URLoù a grog gant <code>http://</code> pe <code>ftp://</code> evit enporzhiañ.',
-'upload-file-error' => 'Fazi diabarzh',
-'upload-file-error-text' => "Ur fazi diabarzh zo c'hoarvezet en ur grouiñ ur restr da c'hortoz war ar servijer.
+'upload-proto-error' => 'Protokol direizh',
+'upload-proto-error-text' => 'Rekis eo an URLoù a grog gant <code>http://</code> pe <code>ftp://</code> evit enporzhiañ.',
+'upload-file-error' => 'Fazi diabarzh',
+'upload-file-error-text' => "Ur fazi diabarzh zo c'hoarvezet en ur grouiñ ur restr da c'hortoz war ar servijer.
Kit e darempred gant [[Special:ListUsers/sysop|unan eus merourien ar reizhiad]].",
-'upload-misc-error' => 'Fazi kargañ dianav',
-'upload-misc-error-text' => "Ur fazi dianav zo bet e-ser kargañ.
+'upload-misc-error' => 'Fazi kargañ dianav',
+'upload-misc-error-text' => "Ur fazi dianav zo bet e-ser kargañ.
Gwiriit eo reizh an URL hag e c'hall bezañ tizhet ha klaskit en-dro.
Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar reizhiad]].",
+'upload-too-many-redirects' => 'Re a adkasoù zo en URL-mañ.',
+'upload-unknown-size' => 'Ment dianav',
+'upload-http-error' => 'Ur fazi HTTP zo bet : $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => "Moned nac'het",
+'img-auth-nopathinfo' => "Mankout a ra ar PATH_INFO.
+N'eo ket kefluniet ho servijer evit reiñ an titour-mañ.
+Marteze eo diazezet war CGI-based ha n'hall ket skorañ img_auth.
+Gwelet http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "N'emañ ket an hent merket er c'havlec'h enporzhiañ kefluniet.",
+'img-auth-badtitle' => 'Dibosupl krouiñ un titl reizh adalek "$1".',
+'img-auth-nologinnWL' => 'N\'oc\'h ket kevreet ha n\'emañ ket "$1" war ar roll gwenn',
+'img-auth-nofile' => 'n\'eus ket eus ar restr "$1".',
+'img-auth-isdir' => "Klakset hoc'h eus monet d'ar c'havlec'h \"\$1\".
+N'haller monet nemet d'ar restroù.",
+'img-auth-streaming' => 'O lenn en ur dremen "$1"',
+'img-auth-public' => "Talvezout a ra an arc'hwel img_auth.php da ezvont restroù adalek ur wiki prevez.
+Kefluniet eo bet ar wiki-mañ evel ur wiki foran.
+Diweredekaet eo bet img_auth.php evit ur surentez eus ar gwellañ",
+'img-auth-noread' => 'N\'eo ket aotreet an implijer da lenn "$1"',
+
+# HTTP errors
+'http-invalid-url' => 'URL direizh : $1',
+'http-invalid-scheme' => 'N\'eo ket skoret an URLoù gant ar patrom "$1"',
+'http-request-error' => "Ur fazi dianavezet 'zo bet pa veze kaset ar reked.",
+'http-read-error' => 'Fazi lenn HTTP.',
+'http-timed-out' => 'Erru eo termen ar reked HTTP.',
+'http-curl-error' => 'Fazi adtapout an URL : $1',
+'http-host-unreachable' => "N'eus ket bet gallet tizhout an URL.",
+'http-bad-status' => 'Ur gudenn a zo bet e-pad ar reked HTTP : $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "N'eus ket bet gallet tizhout an URL",
@@ -1425,6 +1531,7 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
'upload-curl-error28-text' => "Re bell eo bet al lec'hienn o respont. Gwiriit mat emañ al lec'hienn enlinenn, gortozit ur pennadig ha klaskit en-dro. Mat e vo deoc'h adklask d'ur mare dibresoc'h marteze ivez.",
'license' => 'Aotre implijout :',
+'license-header' => 'Aotre implijout',
'nolicense' => 'Hini ebet diuzet',
'license-nopreview' => '(Dibosupl rakwelet)',
'upload_source_url' => " (Un URL reizh a c'hall bezañ tizhet gant an holl)",
@@ -1445,6 +1552,7 @@ Klikañ e penn ar bann a cheñch an urzh kinnig.',
'listfiles_count' => 'Stummoù',
# File description page
+'file-anchor-link' => 'Skeudenn',
'filehist' => 'Istor ar restr',
'filehist-help' => 'Klikañ war un deiziad/eur da welet ar restr evel ma oa da neuze.',
'filehist-deleteall' => 'diverkañ pep tra',
@@ -1459,6 +1567,7 @@ Klikañ e penn ar bann a cheñch an urzh kinnig.',
'filehist-dimensions' => 'Mentoù',
'filehist-filesize' => 'Ment ar restr',
'filehist-comment' => 'Notenn',
+'filehist-missing' => 'Restr diank',
'imagelinks' => "Liammoù d'ar restr",
'linkstoimage' => "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} d'ar restr-mañ :",
'linkstoimage-more' => "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.
@@ -1468,15 +1577,16 @@ Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
'morelinkstoimage' => 'Gwelet [[Special:WhatLinksHere/$1|liammoù ouzhpenn]] war-du ar restr-mañ.',
'redirectstofile' => 'Adkas a ra ar{{PLURAL:$1|restr-mañ|$1 restr-mañ}} war-du homañ :',
'duplicatesoffile' => "Un eil eus ar restr-mañ eo {{PLURAL:$1|ar restr da-heul|ar restroù da-heul}}, ([[Special:FileDuplicateSearch/$2|evit gouzout hiroc'h]]) :",
-'sharedupload' => 'Dont a ra ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => "Gwelit an $1 mar plij evit gouzout hiroc'h.",
-'shareduploadwiki-desc' => 'Diskouezet eo a-is an deskrivadur a-zivout $1.',
-'shareduploadwiki-linktext' => 'pajenn deskrivañ ar restr',
-'noimage' => "N'eus pajenn ebet anvet evel-se c'hoazh, gallout a rit $1.",
-'noimage-linktext' => 'enporzhiañ unan',
+'sharedupload' => 'Dont a ra ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.',
+'sharedupload-desc-there' => "Tennet eo ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.
+Mar fell deoc'h gouzout hiroc'h sellit ouzh [$2 ar bajenn zeskrivañ].",
+'sharedupload-desc-here' => 'Tennet eo ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.
+Diskouezet eo deskrivadur he [$2 fajenn zeskrivañ] amañ dindan.',
+'filepage-nofile' => "N'eus restr ebet dezhi an anv-se.",
+'filepage-nofile-link' => "N'eus restr ebet dezhi an anv-se, met gallout a rit [$1 pellgargañ anezhi].",
'uploadnewversion-linktext' => 'Kargañ ur stumm nevez eus ar restr-mañ',
-'shared-repo-from' => 'eus $1', # $1 is the repository name
-'shared-repo' => 'ur sanailh rannet', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'eus $1',
+'shared-repo' => 'ur sanailh rannet',
# File reversion
'filerevert' => 'Disteuler $1',
@@ -1505,6 +1615,7 @@ Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
** Gaou ouzh ar gwirioù perc'hennañ
** Restr zo anezhi dija",
'filedelete-edit-reasonlist' => 'Kemmañ a ra an abegoù diverkañ',
+'filedelete-maintenance' => "Evit ar mare eo diweredekaet an diverkañ hag an assevel restroù, amzer d'ober un tamm trezalc'h.",
# MIME search
'mimesearch' => 'Klask MIME',
@@ -1525,7 +1636,7 @@ Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
# Random page
'randompage' => 'Ur bajenn dre zegouezh',
-'randompage-nopages' => 'N\'eus pajenn ebet en esaouenn anv "$1".',
+'randompage-nopages' => 'N\'eus pajenn ebet en {{PLURAL:$2|esaouennn anv|esaouennoù anv}} da-heul : "$1".',
# Random redirect
'randomredirect' => 'Ur bajenn adkas dre zegouezh',
@@ -1537,6 +1648,7 @@ Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
'statistics-header-edits' => "Stadegoù ar c'hemmoù",
'statistics-header-views' => 'Stadegoù ar selladennoù',
'statistics-header-users' => 'Stadegoù implijer',
+'statistics-header-hooks' => 'Stadegoù all',
'statistics-articles' => "Pajennoù endalc'had",
'statistics-pages' => 'Pajennoù',
'statistics-pages-desc' => 'Holl bajennoù ar wiki, en o zouez ar pajennoù kaozeal, an adkasoù, h.a.',
@@ -1566,8 +1678,8 @@ Diskoulmet eo bet an enmontoù <s>barrennet</s>.',
'brokenredirects' => 'Adkasoù torret',
'brokenredirectstext' => "Kas a ra an adkasoù-mañ da bajennoù n'eus ket anezho.",
-'brokenredirects-edit' => '(kemmañ)',
-'brokenredirects-delete' => '(diverkañ)',
+'brokenredirects-edit' => 'kemmañ',
+'brokenredirects-delete' => 'diverkañ',
'withoutinterwiki' => 'Pajennoù hep liammoù yezh',
'withoutinterwiki-summary' => "Ar pajennoù da-heul n'int ket liammet ouzh yezh all ebet :",
@@ -1676,7 +1788,7 @@ Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (d
# Special:Categories
'categories' => 'Roll ar rummadoù',
-'categoriespagetext' => 'Er rummadoù da-heul ez eus pajennoù pe restroù media.
+'categoriespagetext' => 'Er {{PLURAL:$1|rummad|rummadoù}}da-heul ez eus pajennoù pe restroù media.
Ne ziskouezer ket amañ ar [[Special:UnusedCategories|Rummadoù dizimplij]].
Gwelet ivez ar [[Special:WantedCategories|rummadoù a vank]].',
'categoriesfrom' => 'Diskouez ar rummadoù en ur gregiñ gant :',
@@ -1684,8 +1796,9 @@ Gwelet ivez ar [[Special:WantedCategories|rummadoù a vank]].',
'special-categories-sort-abc' => 'urzh al lizherenneg',
# Special:DeletedContributions
-'deletedcontributions' => 'Degasadennoù diverket un implijer',
-'deletedcontributions-title' => 'Degasadennoù diverket un implijer',
+'deletedcontributions' => 'Degasadennoù diverket un implijer',
+'deletedcontributions-title' => 'Degasadennoù diverket un implijer',
+'sp-deletedcontributions-contribs' => 'Degasadennoù',
# Special:LinkSearch
'linksearch' => 'Liammoù diavaez',
@@ -1701,6 +1814,16 @@ Protokoloù skoret : <tt>$1</tt>',
'listusersfrom' => 'Diskouez anv an implijerien adal :',
'listusers-submit' => 'Diskouez',
'listusers-noresult' => "N'eus bet kavet implijer ebet.",
+'listusers-blocked' => '(stanket)',
+
+# Special:ActiveUsers
+'activeusers' => 'Roll an implijerien oberiant',
+'activeusers-intro' => 'Setu aze ur roll eus an implijerien zo bet oberiant mui pe vui e-pad an $1 {{PLURAL:$1|deiz|deiz}} diwezhañ.',
+'activeusers-count' => '$1 {{PLURAL:$1|degasadenn}} abaoe an {{PLURAL:$3|deiz}} diwezhañ',
+'activeusers-from' => 'Diskouez an implijerien adal :',
+'activeusers-hidebots' => 'Kuzhat ar robotoù',
+'activeusers-hidesysops' => 'Kuzhat ar verourien',
+'activeusers-noresult' => "N'eus bet kavet implijer ebet.",
# Special:Log/newusers
'newuserlogpage' => "Marilh ar c'hontoù krouet",
@@ -1711,17 +1834,23 @@ Protokoloù skoret : <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Kont krouet ent emgefre',
# Special:ListGroupRights
-'listgrouprights' => 'Gwirioù ar strolladoù implijer',
-'listgrouprights-summary' => 'Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.
+'listgrouprights' => 'Gwirioù ar strolladoù implijer',
+'listgrouprights-summary' => 'Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.
Gallout a ra bezañ [[{{MediaWiki:Listgrouprights-helppage}}|titouroù ouzhpenn]] diwar-benn ar gwirioù hiniennel.',
-'listgrouprights-group' => 'Strollad',
-'listgrouprights-rights' => 'Gwirioù',
-'listgrouprights-helppage' => 'Help:Gwirioù ar strolladoù',
-'listgrouprights-members' => '(roll an izili)',
-'listgrouprights-addgroup' => 'Gallout a reer ouzhpennañ {{PLURAL:$2|ur strollad|strolladoù}}: $1',
-'listgrouprights-removegroup' => 'Gallout a reer dilemel {{PLURAL:$2|ar strollad|ar strolladoù}}: $1',
-'listgrouprights-addgroup-all' => 'Gallout a reer ouzhpennañ an holl strolladoù',
-'listgrouprights-removegroup-all' => 'Gallout a reer dilemel an holl strolladoù',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Gwirioù grataet</span>
+* <span class="listgrouprights-revoked">Gwirioù lamet</span>',
+'listgrouprights-group' => 'Strollad',
+'listgrouprights-rights' => 'Gwirioù',
+'listgrouprights-helppage' => 'Help:Gwirioù ar strolladoù',
+'listgrouprights-members' => '(roll an izili)',
+'listgrouprights-addgroup' => 'Gallout a reer ouzhpennañ {{PLURAL:$2|ur strollad|strolladoù}}: $1',
+'listgrouprights-removegroup' => 'Gallout a reer dilemel {{PLURAL:$2|ar strollad|ar strolladoù}}: $1',
+'listgrouprights-addgroup-all' => 'Gallout a reer ouzhpennañ an holl strolladoù',
+'listgrouprights-removegroup-all' => 'Gallout a reer dilemel an holl strolladoù',
+'listgrouprights-addgroup-self' => 'Gallout a ra ouzhpennañ {{PLURAL:$2|ar strollad|ar strolladoù}} da gont an-unan : $1',
+'listgrouprights-removegroup-self' => 'Gallout a ra tennañ {{PLURAL:$2|ar strollad|strolladoù}} eus kont an-unan : $1',
+'listgrouprights-addgroup-self-all' => 'Gallout a ra ouzhpennañ an holl strolladoù da gont an-unan',
+'listgrouprights-removegroup-self-all' => 'Gallout a ra tennañ kuit an holl strolladoù eus kont an-unan.',
# E-mail user
'mailnologin' => "Chomlec'h ebet",
@@ -1804,18 +1933,23 @@ $CHANGEDORCREATED eo bet ar bajenn {{SITENAME}} evit $PAGETITLE gant $PAGEEDITOR
$NEWPAGE
-Diverrañ an Implijer : $PAGESUMMARY $PAGEMINOREDIT
+Diverrañ an aozer : $PAGESUMMARY $PAGEMINOREDIT
-Mont e darempred gant an implijer:
+Mont e darempred gant an aozer :
postel: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Nemet e yafec\'h da welet ar bajenn end-eeun, ne vo kemenn all ebet ma vez degaset kemmoù enni pelloc\'h. Gallout a rit nevesaat doare ar pennadoù evezhiet ganeoc\'h en ho rollad evezhiañ ivez.
+Nemet e yafec\'h da welet ar bajenn end-eeun, ne vo kemenn all ebet ma vez degaset kemmoù enni pelloc\'h.
+Gallout a rit nevesaat doare ar pennadoù evezhiet ganeoc\'h en ho rollad evezhiañ ivez.
Ho reizhiad kemenn {{SITENAME}} muiañ karet
--
-A-benn kemmañ doare ho rollad evezhiañ, sellit ouzh {{fullurl:{{ns:special}}:Watchlist/edit}}
+A-benn kemmañ doare ho rollad evezhiañ, sellit ouzh
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+A-benn dilemel ar bajenn eus ho rollad evezhiañ, sellit ouzh
+$UNWATCHURL
Evezhiadennoù ha skoazell pelloc\'h :
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1829,10 +1963,11 @@ Evezhiadennoù ha skoazell pelloc\'h :
'exblank' => "pajenn c'houllo",
'delete-confirm' => 'Diverkañ "$1"',
'delete-legend' => 'Diverkañ',
-'historywarning' => "Diwallit: War-nes diverkañ ur bajenn ganti un istor emaoc'h :",
+'historywarning' => "'''Diwallit :''' Emaoc'h war-nes diverkañ ur bajenn dezhi un istor gant e-tro {{PLURAL:$1|adweladenn|adweladenn}} :",
'confirmdeletetext' => "War-nes diverkañ da viken ur bajenn pe ur skeudenn eus ar bank roadennoù emaoc'h. Diverket e vo ivez an holl stummoù kozh stag outi.
Kadarnait, mar plij, eo mat an dra-se hoc'h eus c'hoant da ober, e komprenit mat an heuliadoù, hag e rit se diouzh ar [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Diverkadenn kaset da benn',
+'actionfailed' => "Ober c'hwitet",
'deletedtext' => '"Diverket eo bet <nowiki>$1</nowiki>".
Sellet ouzh $2 evit roll an diverkadennoù diwezhañ.',
'deletedarticle' => 'diverket "$1"',
@@ -1855,19 +1990,20 @@ Diverkañ anezhi a c'hallo degas reuz war mont en-dro diaz titouroù {{SITENAME}
taolit evezh bras.",
# Rollback
-'rollback' => "disteuler ar c'hemmoù",
-'rollback_short' => 'Disteuler',
-'rollbacklink' => 'disteuler',
-'rollbackfailed' => "C'hwitet eo bet an distaoladenn",
-'cantrollback' => 'Dibosupl da zisteuler: an aozer diwezhañ eo an hini nemetañ da vezañ kemmet ar pennad-mañ',
-'alreadyrolled' => "Dibosupl eo disteuler ar c'hemm diwezhañ graet d'ar bajenn [[:$1]] gant [[User:$2|$2]] ([[User talk:$2|Kaozeal]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => "disteuler ar c'hemmoù",
+'rollback_short' => 'Disteuler',
+'rollbacklink' => 'disteuler',
+'rollbackfailed' => "C'hwitet eo bet an distaoladenn",
+'cantrollback' => 'Dibosupl da zisteuler: an aozer diwezhañ eo an hini nemetañ da vezañ kemmet ar pennad-mañ',
+'alreadyrolled' => "Dibosupl eo disteuler ar c'hemm diwezhañ graet d'ar bajenn [[:$1]] gant [[User:$2|$2]] ([[User talk:$2|Kaozeal]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
kemmet pe distaolet eo bet c'hoazh gant unan bennak all.
Ar c'hemm diwezhañ d'ar bajenn-mañ a oa bet graet gant [[User:$3|$3]] ([[User talk:$3|Kaozeal]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "Diverradenn ar c'hemm a oa : \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Kemmoù distaolet gant [[Special:Contributions/$2|$2]] ([[User talk:$2|Kaozeal]]); adlakaet d'ar stumm diwezhañ a-gent gant [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Disteuler kemmoù $1; distreiñ da stumm diwezhañ $2.',
-'sessionfailure' => 'Evit doare ez eus ur gudenn gant ho talc\'h;
+'editcomment' => "Diverradenn ar c'hemm a oa : \"''\$1''\".",
+'revertpage' => "Kemmoù distaolet gant [[Special:Contributions/$2|$2]] ([[User talk:$2|Kaozeal]]); adlakaet d'ar stumm diwezhañ a-gent gant [[User:$1|$1]]",
+'revertpage-nouser' => "Disteuler kemmoù (anv implijer distaolet) ha distreiñ d'ar stumm diwezhañ gant [[User:$1|$1]]",
+'rollback-success' => 'Disteuler kemmoù $1; distreiñ da stumm diwezhañ $2.',
+'sessionfailure' => 'Evit doare ez eus ur gudenn gant ho talc\'h;
Nullet eo bet an ober-mañ a-benn en em wareziñ diouzh an tagadennoù preizhañ.
Klikit war "kent" hag adkargit ar bajenn oc\'h deuet drezi; goude klaskit en-dro.',
@@ -1885,7 +2021,7 @@ Klikit war "kent" hag adkargit ar bajenn oc\'h deuet drezi; goude klaskit en-dro
'protectexpiry' => 'Termen',
'protect_expiry_invalid' => 'Direizh eo termen ar prantad.',
'protect_expiry_old' => 'Echuet eo ar prantad termen.',
-'protect-unchain' => 'Dibrennañ an aotreoù adenvel',
+'protect-unchain-permissions' => "Dibrennañ muioc'h a zibarzhioù gwareziñ",
'protect-text' => "Amañ e c'hallit gwelet ha cheñch live gwareziñ ar bajenn '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "E-keit ha ma viot stanket ne viot ket evit cheñch al live gwareziñ. Setu aze arventennoù a-vremañ ar bajenn '''$1''':",
'protect-locked-dblock' => "N'haller ket cheñch al liveoù gwareziñ rak prennet eo an diaz titouroù.
@@ -1913,7 +2049,7 @@ Setu an doare a-vremañ evit ar bajenn-mañ '''$1''':",
** Tabutoù toull war kemmoù zo
** Pajenn kemmet alies-tre',
'protect-edit-reasonlist' => 'Kemmañ abegoù ar gwareziñ',
-'protect-expiry-options' => '1 eurvezh:1 hour,1 deiz:1 day,1 sizhun:1 week,2 sizhun:2 weeks,1 miz:1 month,3 miz:3 months,6 miz:6 months,1 bloaz:1 year,da viken:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 eurvezh:1 hour,1 deiz:1 day,1 sizhun:1 week,2 sizhun:2 weeks,1 miz:1 month,3 miz:3 months,6 miz:6 months,1 bloaz:1 year,da viken:infinite',
'restriction-type' => 'Aotre',
'restriction-level' => 'Live strishaat :',
'minimum-size' => 'Ment vihanañ',
@@ -1953,6 +2089,7 @@ Ma'z eus bet krouet ur bajenn nevez dezhi an hevelep anv abaoe an diverkadenn, e
'undelete-nodiff' => "N'eus bet kavet stumm kent ebet.",
'undeletebtn' => 'Diziverkañ!',
'undeletelink' => 'gwelet/assevel',
+'undeleteviewlink' => 'gwelet',
'undeletereset' => 'Adderaouiñ',
'undeleteinvert' => 'Eilpennañ diuzadenn',
'undeletecomment' => 'Abeg :',
@@ -1990,19 +2127,23 @@ $1',
'contributions-title' => 'Degasadennoù an implijer evit $1',
'mycontris' => 'Ma degasadennnoù',
'contribsub2' => 'Evit $1 ($2)',
-'nocontribs' => "N'eus bet kavet kemm ebet o klotañ gant an dezverkoù-se.", # Optional parameter: $1 is the user name
+'nocontribs' => "N'eus bet kavet kemm ebet o klotañ gant an dezverkoù-se.",
'uctop' => ' (diwezhañ)',
'month' => 'Abaoe miz (hag a-raok) :',
'year' => 'Abaoe bloaz (hag a-raok) :',
-'sp-contributions-newbies' => "Diskouez hepken degasadennoù ar c'hontoù nevez",
-'sp-contributions-newbies-sub' => 'Evit an implijerien nevez',
-'sp-contributions-newbies-title' => "Degasadennoù implijer evit ar c'hontoù nevez",
-'sp-contributions-blocklog' => 'Roll ar stankadennoù',
-'sp-contributions-logs' => 'marilhoù',
-'sp-contributions-search' => 'Klask degasadennoù',
-'sp-contributions-username' => "Anv implijer pe chomlec'h IP :",
-'sp-contributions-submit' => 'Klask',
+'sp-contributions-newbies' => "Diskouez hepken degasadennoù ar c'hontoù nevez",
+'sp-contributions-newbies-sub' => 'Evit an implijerien nevez',
+'sp-contributions-newbies-title' => "Degasadennoù implijer evit ar c'hontoù nevez",
+'sp-contributions-blocklog' => 'Roll ar stankadennoù',
+'sp-contributions-deleted' => 'Degasadennoù diverket',
+'sp-contributions-logs' => 'marilhoù',
+'sp-contributions-talk' => 'kaozeal',
+'sp-contributions-userrights' => 'Merañ ar gwirioù',
+'sp-contributions-blocked-notice' => "Stanket eo an implijer-mañ evit poent. Dindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
+'sp-contributions-search' => 'Klask degasadennoù',
+'sp-contributions-username' => "Anv implijer pe chomlec'h IP :",
+'sp-contributions-submit' => 'Klask',
# What links here
'whatlinkshere' => 'Pajennoù liammet',
@@ -2025,6 +2166,7 @@ $1',
# Block/unblock
'blockip' => "Stankañ ur chomlec'h IP",
+'blockip-title' => 'Stankañ an implijer',
'blockip-legend' => 'Stankañ an implijer',
'blockiptext' => "Grit gant ar furmskrid a-is evit stankañ ar moned skrivañ ouzh ur chomlec'h IP pe un implijer bennak.
Seurt diarbennoù n'hallont bezañ kemeret nemet evit mirout ouzh ar vandalerezh hag a-du gant an [[{{MediaWiki:Policy-url}}|erbedadennoù ha reolennoù da heuliañ]].
@@ -2048,7 +2190,7 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
'ipbenableautoblock' => "Stankañ war-eeun ar chomlec'h IP diwezhañ implijet gant an den-mañ hag an holl chomlec'hioù en deus klasket degas kemmoù drezo war-lerc'h",
'ipbsubmit' => "Stankañ ouzh ar chomlec'h-mañ",
'ipbother' => 'Prantad all',
-'ipboptions' => '2 eurvezh:2 hours,1 devezh:1 day,3 devezh:3 days,1 sizhunvezh:1 week,2 sizhunvezh:2 weeks,1 mizvezh:1 month,3 mizvezh:3 months,6 mizvezh:6 months,1 bloaz:1 year,da viken:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 eurvezh:2 hours,1 devezh:1 day,3 devezh:3 days,1 sizhunvezh:1 week,2 sizhunvezh:2 weeks,1 mizvezh:1 month,3 mizvezh:3 months,6 mizvezh:6 months,1 bloaz:1 year,da viken:infinite',
'ipbotheroption' => 'prantad all',
'ipbotherreason' => 'Abeg all/ouzhpenn',
'ipbhidename' => "Kuzhat anv an implijer er rolloù hag er c'hemmoù",
@@ -2080,9 +2222,11 @@ Sellit ouzh [[Special:IPBlockList|roll ar chomlec\'hioù IP ha kontoù stanket]]
'ipblocklist-sh-tempblocks' => '$1 ar stankadennoù dibad',
'ipblocklist-sh-addressblocks' => "$1 stankadennoù ar chomlec'hioù IP unan",
'ipblocklist-submit' => 'Klask',
+'ipblocklist-localblock' => "Stankadenn lec'hel",
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Stankadenn|Stankadennoù}} all',
'blocklistline' => '$1, $2 en/he deus stanket $3 ($4)',
'infiniteblock' => 'da viken',
-'expiringblock' => "a zeu d'e dermen d'an $1",
+'expiringblock' => "a zeu d'e dermen d'an $1 da $2",
'anononlyblock' => 'implijerien dizanv hepken',
'noautoblockblock' => 'emstankañ diweredekaet',
'createaccountblock' => "Harzet eo ar c'hrouiñ kontoù",
@@ -2097,7 +2241,8 @@ Sellit ouzh [[Special:IPBlockList|roll ar chomlec\'hioù IP ha kontoù stanket]]
'autoblocker' => 'Emstanket rak implijet eo bet ho chomlec\'h IP gant "[[User:$1|$1]]" nevez zo.
Setu aze an abeg(où) m\'eo bet stanket $1 : "$2$',
'blocklogpage' => 'Roll ar stankadennoù',
-'blocklog-fulllog' => 'Marilh klok ar stankadennoù',
+'blocklog-showlog' => "Stanket eo bet an implijer-mañ c'hoazh. A-is emañ marilh ar stankadennoù, d'ho titouriñ :",
+'blocklog-showsuppresslog' => "Stanket ha kuzhet eo bet an implijer-mañ c'hoazh. A-is emañ marilh ar diverkadennoù, d'ho titouriñ :",
'blocklogentry' => 'stanket "[[$1]]" $2 $3',
'reblock-logentry' => "en deus kemmet arventennoù ar stankañ [[$1]] gant un termen d'an $2 $3",
'blocklogtext' => "Setu roud stankadennoù ha distankadennoù an implijerien. N'eo ket bet rollet ar chomlec'hioù IP bet stanket outo ent emgefre. Sellet ouzh [[Special:IPBlockList|roll an implijerien stanket]] evit gwelet piv zo stanket e gwirionez.",
@@ -2116,9 +2261,11 @@ Setu aze an abeg(où) m\'eo bet stanket $1 : "$2$',
'ipb_already_blocked' => 'Stanket eo "$1" dija',
'ipb-needreblock' => "== Stanket dija ==
Stanket eo $1 c'hoazh. Kemmañ an arventennoù a fell deoc'h ?",
+'ipb-otherblocks-header' => '{{PLURAL:$1|Stankadenn|Stankadnenoù}} all',
'ipb_cant_unblock' => "Fazi: N'eo ket stanket an ID $1. Moarvat eo bet distanket c'hoazh.",
'ipb_blocked_as_range' => "Fazi : N'eo ket bet stanket ar chomlec'h IP $1 war-eeun, setu n'hall ket bezañ distanket. Stanket eo bet dre al live $2 avat, hag a c'hall bezañ distanket.",
'ip_range_invalid' => 'Stankañ IP direizh.',
+'ip_range_toolarge' => "N'eo ket aotreet stankañ pajennoù brasoc'h evit /$1.",
'blockme' => "Stankit ac'hanon",
'proxyblocker' => 'Stanker proksi',
'proxyblocker-disabled' => "Diweredekaet eo an arc'hwel-mañ.",
@@ -2127,6 +2274,7 @@ Stanket eo $1 c'hoazh. Kemmañ an arventennoù a fell deoc'h ?",
'sorbsreason' => "Rollet eo ho chomlec'h IP evel ur proksi digor en DNSBL implijet gant {{SITENAME}}.",
'sorbs_create_account_reason' => "Rollet eo ho chomlec'h IP evel ur proksi digor war an DNSBL implijet gant {{SITENAME}}. N'hallit ket krouiñ ur gont",
'cant-block-while-blocked' => "N'hallit ket stankañ implijerien all ma'z oc'h stanket c'hwi hoc'h-unan.",
+'cant-see-hidden-user' => "Stanket ha kuzhet eo bet dija an implijer emaoc'h o klask stankañ. Dre ma n'emañ ket ganeoc'h ar gwir hideuser, n'hallit ket gwelet pe kemmañ stankadenn an implijer.",
# Developer tools
'lockdb' => 'Prennañ ar bank',
@@ -2166,6 +2314,7 @@ bezit sur e komprenit mat an heuliadoù a-raok kenderc'hel ganti.",
En degouezh-se e rankot adenvel pe gendeuziñ ar bajenn c'hwi hoc'h-unan ma karit.",
'movearticle' => "Dilec'hiañ ar pennad",
+'moveuserpage-warning' => "'''Diwallit : ''' War-nes dilec'hiañ ur bajenn implijer emaoc'h. Notit mat n'eus nemet ar bajenn a vo dilec'hiet ha ne vo ''ket'' adanvet an implijer.",
'movenologin' => 'Digevreet',
'movenologintext' => 'A-benn gellout adenvel ur pennad e rankit bezañ un implijer enrollet ha bezañ [[Special:UserLogin|kevreet]].',
'movenotallowed' => "N'oc'h ket aotreet da zilec'hiañ pajennoù.",
@@ -2176,7 +2325,7 @@ En degouezh-se e rankot adenvel pe gendeuziñ ar bajenn c'hwi hoc'h-unan ma kari
'move-watch' => 'Evezhiañ ar bajenn-mañ',
'movepagebtn' => 'Adenvel ar pennad',
'pagemovedsub' => "Dilec'hiadenn kaset da benn vat",
-'movepage-moved' => '\'\'\'Adkaset eo bet "$1" war-du "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Adkaset eo bet "$1" war-du "$2"\'\'\'',
'movepage-moved-redirect' => 'Krouet ez eus bet un adkas.',
'movepage-moved-noredirect' => 'Nullet eo bet krouidigezeh un adkas adal an anv kozh.',
'articleexists' => "Ur pennad gantañ an anv-se zo dija pe n'eo ket reizh an titl hoc'h eus dibabet.
@@ -2219,6 +2368,12 @@ Diverkañ anezhañ a fell deoc'h ober evit reiñ lec'h d'an adkas ?",
'imageinvalidfilename' => 'Fall eo anv ar restr tal',
'fix-double-redirects' => 'Hizivaat an holl adkasoù a gas war-du an titl orin',
'move-leave-redirect' => 'Lezel un adkas war-du an titl nevez',
+'protectedpagemovewarning' => "'''DIWALLIT :''' Prennet eo bet ar bajenn-mañ, setu n'eus nemet an implijerien ganto gwrioù merañ a c'hall adenvel anezhi. Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :",
+'semiprotectedpagemovewarning' => "'''NOTENN :''' Prennet eo bet ar bajenn-mañ, setu n'hall bezañ adanvet nemet gant an implijerien enskrivet. Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :",
+'move-over-sharedrepo' => "== Bez' ez eus eus ar restr-se dija ==
+Bez' ez eus eus [[:$1]] war ur sanailh kenrannet dija. Ma cheñchit anv ar restr ne viot ket mui evit tizhout ar restr zo er sanailh kenrannet.",
+'file-exists-sharedrepo' => "Implijet c'hoazh eo an anv dibabet gant ur restr zo war ur sanailh kenrannet.
+Grit gant un anv all.",
# Export
'export' => 'Ezporzhiañ pajennoù',
@@ -2241,15 +2396,21 @@ Mard eo se e c'hallit ivez implijout ul liamm a seurt gant [[{{#Special:Export}}
'export-pagelinks' => 'Lakaat ar pajennoù liammet e-barzh betek un donder a :',
# Namespace 8 related
-'allmessages' => 'Roll kemennoù ar reizhiad',
-'allmessagesname' => 'Anv',
-'allmessagesdefault' => 'Testenn dre ziouer',
-'allmessagescurrent' => 'Testenn zo bremañ',
-'allmessagestext' => "Setu roll ar c'hemennadennoù reizhiad a c'haller kaout en esaouennoù anv MediaWiki.
+'allmessages' => 'Roll kemennoù ar reizhiad',
+'allmessagesname' => 'Anv',
+'allmessagesdefault' => 'Testenn dre ziouer',
+'allmessagescurrent' => 'Testenn zo bremañ',
+'allmessagestext' => "Setu roll ar c'hemennadennoù reizhiad a c'haller kaout en esaouennoù anv MediaWiki.
Kit da welet [http://www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [http://translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
-'allmessagesnotsupportedDB' => "N'haller ket kaout {{ns:special}}:AllMessages rak diweredekaet eo bet wgUseDatabaseMessages.",
-'allmessagesfilter' => 'Sil anv kemennadenn :',
-'allmessagesmodified' => 'Diskouez ar re bet kemmet hepken',
+'allmessagesnotsupportedDB' => "N'haller ket kaout {{ns:special}}:AllMessages rak diweredekaet eo bet wgUseDatabaseMessages.",
+'allmessages-filter-legend' => 'Sil',
+'allmessages-filter' => "Silañ dre stad ar c'hemmoù",
+'allmessages-filter-unmodified' => 'Digemm',
+'allmessages-filter-all' => 'An holl',
+'allmessages-filter-modified' => 'Kemmet',
+'allmessages-prefix' => 'Silañ dre rakger',
+'allmessages-language' => 'Yezh :',
+'allmessages-filter-submit' => 'Mont',
# Thumbnails
'thumbnail-more' => 'Brasaat',
@@ -2259,6 +2420,9 @@ Kit da welet [http://www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki]
'djvu_no_xml' => 'Dibosupl da dapout an XML evit ar restr DjVu',
'thumbnail_invalid_params' => 'Arventennoù direizh evit ar munud',
'thumbnail_dest_directory' => "Dibosupl krouiñ ar c'havlec'h pal",
+'thumbnail_image-type' => "N'eo ket skoret ar seurt skeudennoù",
+'thumbnail_gd-library' => "Kefluniadur diglok al levraoueg GD : dibosupl kavout an arc'hwel $1",
+'thumbnail_image-missing' => "Evit doare n'eus ket eus ar restr : $1",
# Special:Import
'import' => 'Enporzhiañ pajennoù',
@@ -2322,6 +2486,7 @@ Miret eo an holl enporzhiadennoù etrewiki e-barzh [[Special:Log/import|log an e
'tooltip-ca-viewsource' => 'Gwarezet eo ar bajenn-mañ. Gallout a rit gwelet an danvez anezhañ memes tra.',
'tooltip-ca-history' => 'Stummoù kozh ar bajenn-mañ gant an aozerien anezhi.',
'tooltip-ca-protect' => 'Gwareziñ ar bajenn-mañ',
+'tooltip-ca-unprotect' => 'Diwareziñ ar bajenn',
'tooltip-ca-delete' => 'Diverkañ ar bajenn-mañ',
'tooltip-ca-undelete' => 'Adsevel ar bajenn-mañ',
'tooltip-ca-move' => 'Adenvel ar bajenn-mañ',
@@ -2332,6 +2497,7 @@ Miret eo an holl enporzhiadennoù etrewiki e-barzh [[Special:Log/import|log an e
'tooltip-search-fulltext' => 'Klask an destenn-mañ er pajennoù',
'tooltip-p-logo' => 'Pajenn bennañ',
'tooltip-n-mainpage' => 'Diskouez ar Bajenn bennañ',
+'tooltip-n-mainpage-description' => 'Kit da welet an degemer',
'tooltip-n-portal' => "Diwar-benn ar raktres, ar pezh a c'hallit ober, pelec'h kavout an traoù",
'tooltip-n-currentevents' => 'Tapout keleier diwar-benn an darvoudoù diwezhañ',
'tooltip-n-recentchanges' => "Roll ar c'hemmoù diwezhañ c'hoarvezet war ar wiki.",
@@ -2379,6 +2545,7 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
'chick.css' => '/* Ar CSS lakaet amañ a dalvezo evit implijerien ar gwiskadur Plogig */',
'simple.css' => '/* Ar CSS lakaet amañ a dalvezo evit implijerien ar gwiskadur Eeun */',
'modern.css' => '/* Ar CSS lakaet amañ a dalvezo evit implijerien ar gwiskadur Modern */',
+'vector.css' => '/* Ar CSS lakaet amañ a dalvezo evit implijerien ar gwiskadur Vektor */',
'print.css' => '/* Ar CSS lakaet amañ a dalvezo evit ar moullañ */',
'handheld.css' => '/* Ar CSS lakaet amañ a dalvezo evit an ardivinkoù hezoug diouzh ar gwiskadur kefluniet e $wgHandheldStyle */',
@@ -2392,6 +2559,7 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
'chick.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Plogig */',
'simple.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Eeun */',
'modern.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Modern */',
+'vector.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */',
# Metadata
'nodublincore' => "Diweredekaet eo ar metaroadennoù 'Dublin Core RDF' war ar servijer-mañ.",
@@ -2401,10 +2569,12 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
# Attribution
'anonymous' => '{{PLURAL:$1|Implijer|Implijerien}} dizanv war {{SITENAME}}',
'siteuser' => 'Implijer(ez) $1 eus {{SITENAME}}',
-'lastmodifiedatby' => "Kemmet eo bet ar bajenn-mañ da ziwezhañ da $2, d'an $1 gant $3", # $1 date, $2 time, $3 user
+'anonuser' => 'implijer dizanv $1 eus {{SITENAME}}',
+'lastmodifiedatby' => "Kemmet eo bet ar bajenn-mañ da ziwezhañ da $2, d'an $1 gant $3",
'othercontribs' => 'Diazezet war labour $1.',
'others' => 're all',
'siteusers' => '$1 {{PLURAL:$2|implijer|implijer}} eus {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|implijer dizanv|implijerien dizanv}} $1 eus {{SITENAME}}',
'creditspage' => 'Pajennoù kredoù',
'nocredits' => "N'eus tamm titour kred hegerz ebet evit ar bajenn-mañ.",
@@ -2434,6 +2604,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
'skinname-chick' => 'Plogig',
'skinname-simple' => 'Eeun',
'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vektor',
# Math options
'mw_math_png' => 'Produiñ atav ur skeudenn PNG',
@@ -2443,11 +2614,22 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
'mw_math_modern' => 'Evit ar merdeerioù arnevez',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Fazi jedoniezh',
+'math_unknown_error' => 'fazi dianav',
+'math_unknown_function' => 'kevreizhenn jedoniel dianav',
+'math_lexing_error' => 'fazi ger',
+'math_syntax_error' => 'fazi ereadur',
+'math_image_error' => "C'hwitet eo bet ar gaozeadenn e PNG, gwiriit staliadur Latex, dvips, gs ha convert",
+'math_bad_tmpdir' => "N'hall ket krouiñ pe skrivañ er c'havlec'h da c'hortoz",
+'math_bad_output' => "N'hall ket krouiñ pe skrivañ er c'havlec'h ermaeziañ",
+'math_notexvc' => "N'hall ket an erounezeg 'texvc' bezañ kavet. Lennit math/README evit he c'hefluniañ.",
+
# Patrolling
'markaspatrolleddiff' => 'Merkañ evel gwiriet',
'markaspatrolledtext' => 'Merkañ ar pennad-mañ evel gwiriet',
'markedaspatrolled' => 'Merkañ evel gwiriet',
-'markedaspatrolledtext' => 'Merket eo bet ar stumm diuzet evel gwiriet.',
+'markedaspatrolledtext' => 'Merket eo bet ar stumm diuzet eus [[:$1]] evel gwiriet.',
'rcpatroldisabled' => "Diweredekaet ar gwiriañ ar C'hemmoù diwezhañ",
'rcpatroldisabledtext' => "Diweredekaet eo bet an arc'hwel evezhiañ ar c'hemmoù diwezhañ.",
'markedaspatrollederror' => "N'hall ket bezañ merket evel gwiriet",
@@ -2477,13 +2659,10 @@ $1',
'previousdiff' => '← Stumm kent',
'nextdiff' => "Stumm nevesoc'h →",
-# Visual comparison
-'visual-comparison' => 'Keñveriaden dre welet',
-
# Media information
'mediawarning' => "'''Diwallit :''' Kodoù siek a c'hall bezañ er seurt restr-mañ.
Ma vez erounezet ganeoc'h e c'hallje tagañ ho reizhiad.",
-'imagemaxsize' => 'Ment vrasañ ar skeudennoù er pajennoù deskrivañ :',
+'imagemaxsize' => "Bevenn ment vrasañ ar skeudennoù :<br />''(evit ar pajennoù deskrivañ)''",
'thumbsize' => 'Ment an alberz :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pajenn|pajenn}}',
'file-info' => '(ment ar restr : $1, seurt MIME : $2)',
@@ -2492,6 +2671,8 @@ Ma vez erounezet ganeoc'h e c'hallje tagañ ho reizhiad.",
'svg-long-desc' => '(restr SVG file, pizhder $1 × $2 piksel, ment ar restr : $3)',
'show-big-image' => 'Pizhder leun',
'show-big-image-thumb' => '<small>Ment ar rakweled-mañ : $1 × $2 piksel</small>',
+'file-info-gif-looped' => "e kelc'h",
+'file-info-gif-frames' => '$1 {{PLURAL:$1|skeudenn|skeudenn}}',
# Special:NewFiles
'newimages' => 'Roll ar restroù nevez',
@@ -2523,7 +2704,7 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Led',
@@ -2650,14 +2831,14 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-unknowndate' => 'Deiziad dianav',
-'exif-orientation-1' => 'Boutin', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Eilpennet a-hed', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Troet eus 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Eilpennet a-serzh', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Troet eus 90° a-gleiz hag eilpennet a-serzh', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Troet eus 90° a-zehou', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Troet eus 90° a-zehou hag eilpennet a-serzh', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Troet eus 90° a-gleiz', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Boutin',
+'exif-orientation-2' => 'Eilpennet a-hed',
+'exif-orientation-3' => 'Troet eus 180°',
+'exif-orientation-4' => 'Eilpennet a-serzh',
+'exif-orientation-5' => 'Troet eus 90° a-gleiz hag eilpennet a-serzh',
+'exif-orientation-6' => 'Troet eus 90° a-zehou',
+'exif-orientation-7' => 'Troet eus 90° a-zehou hag eilpennet a-serzh',
+'exif-orientation-8' => 'Troet eus 90° a-gleiz',
'exif-planarconfiguration-1' => 'Roadennoù kenstok',
'exif-planarconfiguration-2' => 'Roadennoù distag',
@@ -2779,7 +2960,7 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-gpsmeasuremode-2' => 'Muzuliañ divventek',
'exif-gpsmeasuremode-3' => 'Muzuliañ teirventek',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometr dre eur',
'exif-gpsspeed-m' => 'Miltir dre eur',
'exif-gpsspeed-n' => 'Skoulm',
@@ -2798,6 +2979,7 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'watchlistall2' => 'pep tra',
'namespacesall' => 'pep tra',
'monthsall' => 'an holl',
+'limitall' => 'An holl',
# E-mail address confirmation
'confirmemail' => "Kadarnaat ar chomlec'h postel",
@@ -2945,7 +3127,7 @@ Gallout a rit [[Special:Watchlist/edit|implijout an aozer boutin ivez]].',
'duplicate-defaultsort' => 'Diwallit : Frikañ a ra an alc\'hwez dre ziouer "$2" an hini a oa a-raok "$1".',
# Special:Version
-'version' => 'Stumm', # Not used as normal message but as header for the special page itself
+'version' => 'Stumm',
'version-extensions' => 'Astennoù staliet',
'version-specialpages' => 'Pajennoù dibar',
'version-parserhooks' => 'Galvoù dielfennañ',
@@ -2959,7 +3141,7 @@ Gallout a rit [[Special:Watchlist/edit|implijout an aozer boutin ivez]].',
'version-skin-extension-functions' => "Arc'hwelioù etrefas astennoù",
'version-hook-name' => 'Anv ar galv',
'version-hook-subscribedby' => 'Termenet gant',
-'version-version' => 'Stumm',
+'version-version' => '(Stumm $1)',
'version-license' => 'Aotre-implijout',
'version-software' => 'Meziant staliet',
'version-software-product' => 'Produ',
@@ -3039,4 +3221,15 @@ Merkañ anv ar restr hep ar rakger "{{ns:file}}:"',
'dberr-outofdate' => "Notit mat e c'hall o menegerioù dezho bezañ dispredet e-keñver ar boued zo ganeomp.",
'dberr-cachederror' => 'Un eilstumm memoret eus ar bajenn goulennet eo hemañ, gallout a ra bezañ dispredet.',
+# HTML forms
+'htmlform-invalid-input' => "Kudennoù zo gant talvoudennoù zo merket ganeoc'h.",
+'htmlform-select-badoption' => "Direizh eo an dalvoudenn skrivet ganeoc'h.",
+'htmlform-int-invalid' => "N'eus ket un niver anterin eus an dalvoudenn skrivet ganeoc'h.",
+'htmlform-float-invalid' => "An dalvoudenn bet lakaet ganeoc'h n'eo ket un niver.",
+'htmlform-int-toolow' => "Skrivet hoc'h eus un dalvoudenn zo dindan an niver bihanañ aotreet a $1",
+'htmlform-int-toohigh' => "Skrivet hoc'h eus un dalvoudenn a ya dreist d'an niver uhelañ aotreet a $1",
+'htmlform-submit' => 'Kas',
+'htmlform-reset' => "Dizober ar c'hemmoù",
+'htmlform-selectorother-other' => 'Unan all',
+
);
diff --git a/languages/messages/MessagesBs.php b/languages/messages/MessagesBs.php
index 67b264fb..cf2b45a8 100644
--- a/languages/messages/MessagesBs.php
+++ b/languages/messages/MessagesBs.php
@@ -18,7 +18,7 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Medija',
+ NS_MEDIA => 'Mediji',
NS_SPECIAL => 'Posebno',
NS_TALK => 'Razgovor',
NS_USER => 'Korisnik',
@@ -26,8 +26,8 @@ $namespaceNames = array(
NS_PROJECT_TALK => 'Razgovor_{{grammar:instrumental|$1}}',
NS_FILE => 'Datoteka',
NS_FILE_TALK => 'Razgovor_o_datoteci',
- NS_MEDIAWIKI => 'MedijaViki',
- NS_MEDIAWIKI_TALK => 'Razgovor_o_MedijaVikiju',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_razgovor',
NS_TEMPLATE => 'Šablon',
NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
NS_HELP => 'Pomoć',
@@ -37,45 +37,48 @@ $namespaceNames = array(
);
$namespaceAliases = array(
+ 'Medija' => NS_MEDIA,
'Slika' => NS_FILE,
'Razgovor_o_datoteci' => NS_FILE_TALK,
+ 'MedijaViki' => NS_MEDIAWIKI,
+ 'Razgovor_o_MedijaVikiju' => NS_MEDIAWIKI_TALK,
);
$specialPageAliases = array(
'DoubleRedirects' => array( 'DvostrukaPreusmjerenja' ),
- 'BrokenRedirects' => array( 'NedovrsenaPreusmjerenja' ),
- 'Disambiguations' => array( 'Cvor' ),
- 'Userlogin' => array( 'KorisnickaPrijava' ),
- 'Userlogout' => array( 'KorisnickaOdjava' ),
- 'CreateAccount' => array( 'NapraviRacun' ),
+ 'BrokenRedirects' => array( 'NedovršenaPreusmjerenja' ),
+ 'Disambiguations' => array( 'Čvor' ),
+ 'Userlogin' => array( 'KorisničkaPrijava' ),
+ 'Userlogout' => array( 'KorisničkaOdjava' ),
+ 'CreateAccount' => array( 'NapraviRačun' ),
'Preferences' => array( 'Postavke' ),
- 'Watchlist' => array( 'ListaPracenja' ),
+ 'Watchlist' => array( 'ListaPraćenja' ),
'Recentchanges' => array( 'NedavneIzmjene' ),
- 'Upload' => array( 'Postavljanje' ),
- 'Listfiles' => array( 'ListaSlika' ),
- 'Newimages' => array( 'NoveSlike' ),
+ 'Upload' => array( 'Postavi_datoteku' ),
+ 'Listfiles' => array( 'Datoteke', 'Slike' ),
+ 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
'Listusers' => array( 'ListaKorisnika' ),
- 'Listgrouprights' => array( 'ListaKorisnickihPrava' ),
+ 'Listgrouprights' => array( 'ListaKorisničkihPrava' ),
'Statistics' => array( 'Statistike' ),
- 'Randompage' => array( 'SlucajniClanak' ),
- 'Lonelypages' => array( 'Siromasci' ),
+ 'Randompage' => array( 'Slučajna_stranica' ),
+ 'Lonelypages' => array( 'Siročad' ),
'Uncategorizedpages' => array( 'StraniceBezKategorije' ),
'Uncategorizedcategories' => array( 'KategorijeBezKategorije' ),
'Uncategorizedimages' => array( 'SlikeBezKategorije' ),
'Uncategorizedtemplates' => array( 'SabloniBezKategorije' ),
- 'Unusedcategories' => array( 'NekoristeneKategorije' ),
- 'Unusedimages' => array( 'NekoristeneSlike' ),
- 'Wantedpages' => array( 'ZatrazeneStranice', 'ZatrazeniClanci' ),
- 'Wantedcategories' => array( 'ZatrazeneKategorije' ),
- 'Wantedfiles' => array( 'ZatrazeneDatoteke' ),
- 'Wantedtemplates' => array( 'ZatrazeniSabloni' ),
- 'Mostlinked' => array( 'NajcesceLinkovano' ),
- 'Mostlinkedcategories' => array( 'NajcesceLinkovaneKategorije', 'NajcesceKoristeneKategorije' ),
- 'Mostlinkedtemplates' => array( 'NajcesceLinkovaniSabloni', 'NajcesceKoristeniSabloni' ),
- 'Mostimages' => array( 'NajcesceSlike' ),
- 'Mostcategories' => array( 'NajcesceKategorije' ),
- 'Mostrevisions' => array( 'NajcesceRevizije' ),
- 'Fewestrevisions' => array( 'NajmanjeRevizija' ),
+ 'Unusedcategories' => array( 'NekorišteneKategorije' ),
+ 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
+ 'Wantedpages' => array( 'Tražene_stranice' ),
+ 'Wantedcategories' => array( 'Tražene_kategorije' ),
+ 'Wantedfiles' => array( 'Tražene_datoteke' ),
+ 'Wantedtemplates' => array( 'Traženi_šabloni' ),
+ 'Mostlinked' => array( 'Najviše_povezane_stranice' ),
+ 'Mostlinkedcategories' => array( 'Najviše_povezane_kategorije' ),
+ 'Mostlinkedtemplates' => array( 'Najviše_povezani_šabloni' ),
+ 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
+ 'Mostcategories' => array( 'Najviše_kategorija' ),
+ 'Mostrevisions' => array( 'Najviše_uređivane_stranice' ),
+ 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
'Shortpages' => array( 'KratkeStranice' ),
'Longpages' => array( 'DugeStranice' ),
'Newpages' => array( 'NoveStranice' ),
@@ -108,7 +111,7 @@ $specialPageAliases = array(
'Userrights' => array( 'KorisnickaPrava' ),
'MIMEsearch' => array( 'MIMEPretraga' ),
'FileDuplicateSearch' => array( 'PotragaDuplihFajlova' ),
- 'Unwatchedpages' => array( 'NepregledaneStranice' ),
+ 'Unwatchedpages' => array( 'NepraceneStranice' ),
'Listredirects' => array( 'ListaPreusmjeravanja' ),
'Revisiondelete' => array( 'VratiBrisanje' ),
'Unusedtemplates' => array( 'NekoristeniSabloni' ),
@@ -128,6 +131,8 @@ $specialPageAliases = array(
'Blankpage' => array( 'PraznaStranica' ),
'LinkSearch' => array( 'PotragaLinkova' ),
'DeletedContributions' => array( 'ObrisaniDoprinosi' ),
+ 'Tags' => array( 'Oznake' ),
+ 'Activeusers' => array( 'AktivniKorisnici' ),
);
$magicWords = array(
@@ -137,7 +142,9 @@ $magicWords = array(
'forcetoc' => array( '0', '__FORSIRANISADRŽAJ__', '__FORCETOC__' ),
'toc' => array( '0', '__SADRŽAJ__', '__TOC__' ),
'noeditsection' => array( '0', '__BEZ_IZMJENA__', '__BEZIZMJENA__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'TRENUTNIMJESEC', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__BEZ_ZAGLAVLJA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'TRENUTNIMJESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'TRENUTNIMJESEC1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'TRENUTNIMJESECIME', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'TRENUTNIMJESECROD', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'TRENUTNIMJESECSKR', 'CURRENTMONTHABBREV' ),
@@ -147,7 +154,8 @@ $magicWords = array(
'currentyear' => array( '1', 'TRENUTNAGODINA', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'TRENUTNOVRIJEME', 'CURRENTTIME' ),
'currenthour' => array( '1', 'TRENUTNISAT', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'LOKALNIMJESEC', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'LOKALNIMJESEC', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALNIMJESEC1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'LOKALNIMJESECIME', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'LOKALNIMJESECIMEROD', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'LOKALNIMJESECSKR', 'LOCALMONTHABBREV' ),
@@ -161,7 +169,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'BROJČLANAKA', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'BROJDATOTEKA', 'BROJFAJLOVA', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'BROJKORISNIKA', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'BROJAKTIVNIHKORISNIKA', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'BROJPROMJENA', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'BROJPREGLEDA', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'STRANICA', 'PAGENAME' ),
'pagenamee' => array( '1', 'STRANICE', 'PAGENAMEE' ),
'namespace' => array( '1', 'IMENSKIPROSTOR', 'NAMESPACE' ),
@@ -209,6 +219,7 @@ $magicWords = array(
'servername' => array( '0', 'IMESERVERA', 'SERVERNAME' ),
'scriptpath' => array( '0', 'SKRIPTA', 'SCRIPTPATH' ),
'grammar' => array( '0', 'GRAMATIKA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'POL:', 'GENDER:' ),
'notitleconvert' => array( '0', '__BEZTC__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__BEZCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'TRENUTNASEDMICA', 'CURRENTWEEK' ),
@@ -232,18 +243,23 @@ $magicWords = array(
'currenttimestamp' => array( '1', 'SADASNJIVREMENSKIPECAT', 'CURRENTTIMESTAMP' ),
'localtimestamp' => array( '1', 'LOKALNIVREMENSKIPECAT', 'LOCALTIMESTAMP' ),
'language' => array( '0', '#JEZIK:', '#LANGUAGE:' ),
+ 'pagesinnamespace' => array( '1', 'STRANICEUIMENSKOMPROSTORU:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'BROJADMINISTRATORA', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'NUMERICKIFORMAT', 'FORMATNUM' ),
'padleft' => array( '0', 'JASTUKLIJEVO', 'PADLEFT' ),
'padright' => array( '0', 'JASTUKDESNO', 'PADRIGHT' ),
'special' => array( '0', 'specijalno', 'special' ),
- 'filepath' => array( '0', 'STAZAFAJLA:', 'FILEPATH:' ),
+ 'filepath' => array( '0', 'STAZADATOTEKE:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'oznaka', 'tag' ),
'hiddencat' => array( '1', '__SAKRIVENAKATEGORIJA__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'STRANICEUKATEGORIJI', 'STRANICEUKAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'VELICINASTRANICE', 'PAGESIZE' ),
'index' => array( '1', '__SADRZAJ__', '__INDEX__' ),
'noindex' => array( '1', '__BEZSADRZAJA__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'BROJUGRUPI', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__STATISTICNOPREUSMJERENJE__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVOZASTITE', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formatdatuma', 'formatdate', 'dateformat' ),
);
$fallback8bitEncoding = "iso-8859-2";
@@ -281,6 +297,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pošalji mi e-poštu takođe za male izmjene stranica',
'tog-enotifrevealaddr' => 'Otkrij adresu moje e-pošte u porukama obaviještenja',
'tog-shownumberswatching' => 'Prikaži broj korisnika koji prate',
+'tog-oldsig' => 'Pregled postojećeg potpisa:',
'tog-fancysig' => 'Smatraj potpis kao wikitekst (bez automatskog linka)',
'tog-externaleditor' => 'Po potrebi koristite vanjski program za uređivanje (samo za naprednije korisnike, potrebne su promjene na računaru)',
'tog-externaldiff' => 'Koristi vanjski (diff) program za prikaz razlika',
@@ -304,6 +321,13 @@ $messages = array(
'underline-never' => 'Nikad',
'underline-default' => 'Po podešavanjima preglednika',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stil slova područja uređivanja:',
+'editfont-default' => 'Po podešavanjima preglednika',
+'editfont-monospace' => 'Slova sa jednostrukim razmakom',
+'editfont-sansserif' => 'Slova bez serifa',
+'editfont-serif' => 'Slova serif',
+
# Dates
'sunday' => 'nedjelja',
'monday' => 'ponedjeljak',
@@ -363,7 +387,7 @@ $messages = array(
'category-media-header' => 'Datoteke u kategoriji "$1"',
'category-empty' => "''Ova kategorija trenutno ne sadrži članke ni medije.''",
'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
-'hidden-category-category' => 'Sakrivene kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Sakrivene kategorije',
'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću $1 podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeće podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}',
'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|slijedeću $1 podkategoriju|slijedeće $1 podkategorije|slijedećih $1 podkategorija}}.',
'category-article-count' => '{{PLURAL:$2|U ovoj kategoriji se nalazi $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}',
@@ -371,6 +395,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ova kategorija ima slijedeću $1 datoteku.|{{PLURAL:$1|Prikazana je $1 datoteka|Prikazane su $1 datoteke|Prikazano je $1 datoteka}} u ovoj kategoriji, od ukupno $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Slijedeća $1 datoteka je|Slijedeće $1 datoteke su|Slijedećih $1 datoteka je}} u ovoj kategoriji.',
'listingcontinuesabbrev' => 'nast.',
+'index-category' => 'Indeksirane stranice',
+'noindex-category' => 'Neindeksirane stranice',
'mainpagetext' => "'''MediaViki softver is uspješno instaliran.'''",
'mainpagedocfooter' => 'Kontaktirajte [http://meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
@@ -380,10 +406,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki najčešće postavljana pitanja]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
-'about' => 'O...',
-'article' => 'Članak',
-'newwindow' => '(otvara se u novom prozoru)',
-'cancel' => 'Poništite',
+'about' => 'O...',
+'article' => 'Članak',
+'newwindow' => '(otvara se u novom prozoru)',
+'cancel' => 'Poništite',
+'moredotdotdot' => 'Još...',
+'mypage' => 'Moja stranica',
+'mytalk' => 'Moj razgovor',
+'anontalk' => 'Razgovor za ovu IP adresu',
+'navigation' => 'Navigacija',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Pronađite',
'qbbrowse' => 'Prelistajte',
'qbedit' => 'Uredi',
@@ -391,15 +425,35 @@ $messages = array(
'qbpageinfo' => 'Informacije o stranici',
'qbmyoptions' => 'Moje opcije',
'qbspecialpages' => 'Posebne stranice',
-'moredotdotdot' => 'Još...',
-'mypage' => 'Moja stranica',
-'mytalk' => 'Moj razgovor',
-'anontalk' => 'Razgovor za ovu IP adresu',
-'navigation' => 'Navigacija',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metapodaci:',
+'faq' => 'ČPP',
+'faqpage' => 'Project:NPP',
+
+# Vector skin
+'vector-action-addsection' => 'Dodaj temu',
+'vector-action-delete' => 'Brisanje',
+'vector-action-move' => 'Preusmjeri',
+'vector-action-protect' => 'Zaštiti',
+'vector-action-undelete' => 'Vrati obrisano',
+'vector-action-unprotect' => 'Oslobodi zaštitu',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Stranica pomoći',
+'vector-namespace-image' => 'Datoteka',
+'vector-namespace-main' => 'Stranica',
+'vector-namespace-media' => 'Stranica medije',
+'vector-namespace-mediawiki' => 'Poruka',
+'vector-namespace-project' => 'Stranica projekta',
+'vector-namespace-special' => 'Posebna stranica',
+'vector-namespace-talk' => 'Razgovor',
+'vector-namespace-template' => 'Šablon',
+'vector-namespace-user' => 'Korisnička stranica',
+'vector-view-create' => 'Napravi',
+'vector-view-edit' => 'Uređivanje',
+'vector-view-history' => 'Pregled historije',
+'vector-view-view' => 'Čitanje',
+'vector-view-viewsource' => 'Pogledaj izvor',
+'actions' => 'Akcije',
+'namespaces' => 'Imenski prostori',
+'variants' => 'Varijante',
'errorpagetitle' => 'Greška',
'returnto' => 'Povratak na $1.',
@@ -449,18 +503,22 @@ $messages = array(
'otherlanguages' => 'Ostali jezici',
'redirectedfrom' => '(Preusmjereno sa $1)',
'redirectpagesub' => 'Preusmjeri stranicu',
-'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $2, $1', # $1 date, $2 time
+'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $2, $1',
'viewcount' => 'Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.',
'protectedpage' => 'Zaštićena stranica',
'jumpto' => 'Idi na:',
'jumptonavigation' => 'navigacija',
'jumptosearch' => 'traži',
+'view-pool-error' => 'Žao nam je, serveris u trenutno preopterećeni.
+Previše korisnika pokušava da pregleda ovu stranicu.
+Molimo pričekajte trenutak prije nego što ponovno pokušate pristupiti ovoj stranici.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O projektu {{SITENAME}}',
'aboutpage' => 'Project:O_projektu_{{SITENAME}}',
'copyright' => 'Svi sadržaji podliježu "$1" licenci.',
-'copyrightpagename' => '{{SITENAME}} autorska prava',
'copyrightpage' => '{{ns:project}}:Autorska_prava',
'currentevents' => 'Trenutni događaji',
'currentevents-url' => 'Project:Novosti',
@@ -468,8 +526,6 @@ $messages = array(
'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
'edithelp' => 'Pomoć pri uređivanju stranice',
'edithelppage' => 'Help:Uređivanje',
-'faq' => 'ČPP',
-'faqpage' => 'Project:NPP',
'helppage' => 'Help:Sadržaj',
'mainpage' => 'Početna strana',
'mainpage-description' => 'Početna strana',
@@ -548,10 +604,6 @@ Posljednji pokušani upit je bio:
"$1"
iz funkcije "$2".
Baza podataka je vratila grešku "$3: $4".',
-'noconnect' => 'Žao nam je! Wiki ima neke tehničke poteškoće, i ne može da se poveže sa serverom baze.<br />
-$1',
-'nodb' => 'Ne mogu da izaberem bazu $1',
-'cachederror' => 'Ovo je keširana kopija zahtjevane stranice, i možda nije najnovija.',
'laggedslavemode' => "'''Upozorenje''': Stranica, možda, nije ažurirana.",
'readonly' => 'Baza je zaključana',
'enterlockreason' => 'Unesite razlog za zaključavanje, uključujući procjenu vremena otključavanja',
@@ -570,6 +622,8 @@ Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođ
'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
'internalerror' => 'Unutrašnja greška',
'internalerror_info' => 'Interna greška: $1',
+'fileappenderrorread' => 'Nije se mogao pročitati "$1" tokom dodavanja.',
+'fileappenderror' => 'Ne može se primijeniti "$1" na "$2".',
'filecopyerror' => 'Ne može se kopirati "$1" na "$2".',
'filerenameerror' => 'Ne može se promjeniti ime datoteke "$1" u "$2".',
'filedeleteerror' => 'Ne može se izbrisati datoteka "$1".',
@@ -579,7 +633,7 @@ Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođ
'unexpected' => 'Neočekivana vrijednost: "$1"="$2".',
'formerror' => 'Greška: ne može se poslati upitnik',
'badarticleerror' => 'Ova akcija ne može biti izvršena na ovoj stranici.',
-'cannotdelete' => 'Ne može se obrisati navedena stranica ili datoteka.
+'cannotdelete' => 'Ne može se obrisati stranica ili datoteka "$1".
Moguće je da ju je neko drugi već obrisao.',
'badtitle' => 'Loš naslov',
'badtitletext' => 'Zahtjevani naslov stranice je bio neispravan, prazan ili neispravno povezan međujezički ili interviki naslov.',
@@ -615,7 +669,6 @@ Iz razloga "\'\'$2\'\'".',
'virus-unknownscanner' => 'nepoznati anti-virus program:',
# Login and logout pages
-'logouttitle' => 'Odjavite se',
'logouttext' => "'''Sad ste odjavljeni.'''
Možete nastaviti da koristite {{SITENAME}} anonimno, ili se ponovo [[Special:UserLogin|prijaviti]] kao isti ili kao drugi korisnik.
@@ -623,7 +676,6 @@ Obratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još
'welcomecreation' => '== Dobro došli, $1 ==
Vaš nalog je napravljen.
Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].',
-'loginpagetitle' => 'Prijavljivanje',
'yourname' => 'Korisničko ime:',
'yourpassword' => 'Šifra:',
'yourpasswordagain' => 'Ponovite šifru:',
@@ -634,6 +686,7 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
'nav-login-createaccount' => 'Prijavi se / Registruj se',
'loginprompt' => "Morate imati kolačiće ('''cookies''') omogućene da biste se prijavili na {{SITENAME}}.",
'userlogin' => 'Prijavi se / Registruj se',
+'userloginnocreate' => 'Prijavi se',
'logout' => 'Odjavi me',
'userlogout' => 'Odjavi me',
'notloggedin' => 'Niste prijavljeni',
@@ -646,30 +699,8 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
'badretype' => 'Šifre koje ste unijeli se ne poklapaju.',
'userexists' => 'Korisničko ime koje ste unijeli je već u upotrebi.
Molimo Vas da izaberete drugo ime.',
-'youremail' => 'E-pošta:',
-'username' => 'Korisničko ime:',
-'uid' => 'Korisnički ID:',
-'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
-'yourrealname' => 'Vaše pravo ime:',
-'yourlanguage' => 'Jezik:',
-'yourvariant' => 'Varijanta:',
-'yournick' => 'Nadimak (za potpise):',
-'badsig' => 'Loš sirovi potpis.
-Provjerite HTML tagove.',
-'badsiglength' => 'Vaš potpis je predug.
-Mora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
-'yourgender' => 'Spol:',
-'gender-unknown' => 'neodređen',
-'gender-male' => 'muški',
-'gender-female' => 'žensko',
-'prefs-help-gender' => 'Optionalno: koristi se za ispravke gramatičkog roda u porukama softvera. Ova informacija će biti javna.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Pravo ime nije obavezno.
-Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
'loginerror' => 'Greška pri prijavljivanju',
-'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.
-Također omogućuje drugim korisnicima da vas kontaktiraju preko Vaše korisničke stranice ili stranice za razgovor bez otkrivanja Vašeg identiteta.',
-'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
+'createaccounterror' => 'Ne može se napraviti račun: $1',
'nocookiesnew' => "Korisnički nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolačiće na Vašem računaru. Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
'nocookieslogin' => "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolačiće na Vašem kompjuteru. Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
'noname' => 'Niste izabrali ispravno korisničko ime.',
@@ -681,12 +712,13 @@ Provjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnič
'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>".
Provjerite da li ste dobro ukucali.',
'nouserspecified' => 'Morate izabrati korisničko ime.',
+'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dopuštena.',
'wrongpassword' => 'Unijeli ste neispravnu šifru.
Molimo Vas da pokušate ponovno.',
'wrongpasswordempty' => 'Šifra je bila prazna.
Molimo Vas da pokušate ponovno.',
-'passwordtooshort' => 'Vaša šifra je prekratka.
-Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znakova}} i mora se razlikovati od Vašeg korisničkog imena.',
+'passwordtooshort' => 'Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
+'password-name-match' => 'Vaša šifra mora biti različita od Vašeg korisničkog imena.',
'mailmypassword' => 'Pošalji mi novu šifru',
'passwordremindertitle' => 'Nova privremena šifra za {{SITENAME}}',
'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}} ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
@@ -694,6 +726,7 @@ Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
Ako je neko drugi napravio ovaj zahtjev ili ako ste se sjetili vaše šifre i ne želite više da je promjenite, možete da ignorišete ovu poruku i da nastavite koristeći vašu staru šifru.',
'noemail' => 'Ne postoji adresa e-pošte za korisnika "$1".',
+'noemailcreate' => 'Morate da navedete validnu e-mail adresu',
'passwordsent' => 'Nova šifra je poslata na adresu e-pošte korisnika "$1".
Molimo Vas da se prijavite pošto je primite.',
'blocked-mailpassword' => 'Da bi se spriječila nedozvoljena akcija, Vašoj IP adresi je onemogućeno uređivanje stranica kao i mogućnost zahtijevanje nove šifre.',
@@ -718,9 +751,11 @@ Molimo vas da unesete ispravnu adresu ili ostavite prazno polje.',
Trebali biste se prijaviti i promjeniti šifru.
Možete ignorisati ovu poruku, ako je korisnički račun napravljen greškom.',
+'usernamehasherror' => 'Korisničko ime ne može sadržavati haš znakove',
'login-throttled' => 'Previše puta ste se pokušali prijaviti.
Molimo Vas da sačekate prije nego što pokušate ponovo.',
'loginlanguagelabel' => 'Jezik: $1',
+'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
# Password reset dialog
'resetpass' => 'Promijeni korisničku šifru',
@@ -733,18 +768,13 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
'retypenew' => 'Ukucajte ponovo novu šifru:',
'resetpass_submit' => 'Odredi šifru i prijavi se',
'resetpass_success' => 'Vaša šifra je uspiješno promjenjena! Prijava u toku...',
-'resetpass_bad_temporary' => 'Nevažeća privremena šifra.
-Možda ste već promjenili šifru ili ste zatražili novu privremenu šifru.',
'resetpass_forbidden' => 'Šifre ne mogu biti promjenjene',
'resetpass-no-info' => 'Morate biti prijavljeni da bi ste pristupili ovoj stranici direktno.',
'resetpass-submit-loggedin' => 'Promijeni šifru',
+'resetpass-submit-cancel' => 'Odustani',
'resetpass-wrong-oldpass' => 'Privremena ili trenutna šifra nije validna.
Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.',
'resetpass-temp-password' => 'Privremena šifra:',
-'resetpass-log' => 'Zapisnik resetovanja šifre',
-'resetpass-logtext' => 'Ispod je zapisnik korisnika koji su zatražili od administratora resetovanje svoje šifre.',
-'resetpass-logentry' => 'promijenjena šifra za {{GENDER:$1|korisnika|korisnicu}} $1',
-'resetpass-comment' => 'Razlog za resetovanje šifre:',
# Edit page toolbar
'bold_sample' => 'Podebljan tekst',
@@ -821,7 +851,6 @@ Molimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.',
'blockededitsource' => "Sadržaj '''vaših izmjena''' na '''$1''' je prikazan ispod:",
'whitelistedittitle' => 'Obavezno je prijavljivanje za uređivanje',
'whitelistedittext' => 'Da bi ste uređivali stranice, morate se $1.',
-'confirmedittitle' => 'Potvrda e-maila je potrebna za izmjene',
'confirmedittext' => 'Morate potvrditi Vašu e-mail adresu prije nego počnete mijenjati stranice.
Molimo da postavite i verifikujete Vašu e-mail adresu putem Vaših [[Special:Preferences|korisničkih opcija]].',
'nosuchsectiontitle' => 'Ne mogu pronaći sekciju',
@@ -846,14 +875,20 @@ Ako ste anonimni korisnik i mislite da su vam upućene nebitne primjedbe, molimo
'noarticletext' => 'Na ovoj stranici trenutno nema teksta.
Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama.
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tražiti u povezanim zapisima] ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
+'noarticletext-nopermission' => 'Trenutno nema teksta na ovoj stranici.
+Možete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane zapisnike]</span>.',
'userpage-userdoesnotexist' => 'Korisnički račun "$1" nije registrovan.
Molimo provjerite da li želite napraviti/izmijeniti ovu stranicu.',
+'userpage-userdoesnotexist-view' => 'Korisnički račun "$1" nije registrovan.',
+'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokiran.
+Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
'clearyourcache' => "'''Pažnja: Nakon što sačuvate izmjene, morate \"osvježiti\" keš memoriju vašeg pretraživača da bi ste vidjeli nova podešenja.'''
'''Mozilla / Firefox / Safari:''' držite ''Shift'' tipku i kliknite na ''Reload'' dugme ili ''Ctrl-R'' ili ''Ctrl-F5'' (''Command-R'' na Macintoshu);
'''Konqueror:''' klikni na ''Reload'' ili pritisnite dugme ''F5'';
'''Opera:''' očistite \"keš\" preko izbornika ''Tools → Preferences'';
'''Internet Explorer:''' držite tipku ''Ctrl'' i kliknite na ''Refresh'' ili pritisnite ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Pažnja:''' Koristite 'Prikaži izgled' dugme da testirate svoj novi CSS/JS prije nego što sačuvate.",
+'usercssyoucanpreview' => "'''Pažnja:''' Koristite dugme \"{{int:showpreview}}\" da testirate svoj novi CSS prije nego što sačuvate.",
+'userjsyoucanpreview' => "'''Pažnja:''' Koristite dugme \"{{int:showpreview}}\" da testirate svoj novi JavaScript prije nego što sačuvate.",
'usercsspreview' => "'''Zapamtite ovo je samo izgled Vašeg CSS-a.'''
'''Ovaj pregled još uvijek nije sačuvan!'''",
'userjspreview' => "'''Zapamtite ovo je samo izgled vaše JavaScript-e, još uvijek nije sačuvan!'''",
@@ -908,13 +943,16 @@ Stranica ne može biti spremljena.'''",
Možda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.'''
Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
-'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''",
-'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.",
+'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''
+Posljednja stavka u zapisniku je prikazana ispod kao referenca:",
+'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.
+Posljednja stavka zapisnika je prikazana ispod kao referenca:",
'cascadeprotectedwarning' => "'''Upozorenje:''' Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, lančano povezane, zaštićene stranice}}:",
-'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''",
-'templatesused' => 'Šabloni koji su upotrebljeni na ovoj stranici:',
-'templatesusedpreview' => 'Šabloni prikazani u ovom pregledu:',
-'templatesusedsection' => 'Šabloni korišteni u ovoj sekciji:',
+'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''
+Posljednja stavka zapisnika je prikazana ispod kao referenca:",
+'templatesused' => '{{PLURAL:$1|Šablon|Šabloni}} koji su upotrebljeni na ovoj stranici:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablon|Šabloni}} prikazani u ovom pregledu:',
+'templatesusedsection' => '{{PLURAL:$1|Šablon|Šabloni}} korišteni u ovoj sekciji:',
'template-protected' => '(zaštićeno)',
'template-semiprotected' => '(polu-zaštićeno)',
'hiddencategories' => 'Ova stranica pripada u {{PLURAL:$1|$1 skrivenu kategoriju|$1 skrivene kategorije|$1 skrivenih kategorija}}:',
@@ -923,15 +961,18 @@ Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
'nocreatetext' => 'Na {{SITENAME}} je zabranjeno postavljanje novih stranica.
Možete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti korisnički račun]].',
'nocreate-loggedin' => 'Nemate dopuštenje da kreirate nove stranice.',
+'sectioneditnotsupported-title' => 'Uređivanje sekcije nije podržano',
+'sectioneditnotsupported-text' => 'Uređivanje sekcije nije podržano na ovoj stranici.',
'permissionserrors' => 'Greške pri odobrenju',
'permissionserrorstext' => 'Nemate dopuštenje da to uradite, iz {{PLURAL:$1|slijedećeg razloga|slijedećih razloga}}:',
'permissionserrorstext-withaction' => 'Nemate dopuštenje da $2, iz {{PLURAL:$1|slijedećeg|slijedećih}} razloga:',
-'recreate-deleted-warn' => "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''
+'recreate-moveddeleted-warn' => "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''
-Razmotrite je li nastavljanje uređivanja ove stranice u skladu s pravilima. Za vašu informaciju slijedi evidencija brisanja s obrazloženjem za prethodno brisanje:",
-'deleted-notice' => 'Ova stranica je obrisana.
-Zapis brisanja stranice je prikazan ispod kao referenca.',
-'deletelog-fulllog' => 'Vidi potpuni zapis',
+Razmotrite da li je nastavljanje uređivanja ove stranice u skladu s pravilima.
+Ovdje je naveden zapisnik brisanja i premještanja s obrazloženjem:",
+'moveddeleted-notice' => 'Ova stranica je obrisana.
+Zapis brisanja i premještanja stranice je prikazan ispod kao referenca.',
+'log-fulllog' => 'Vidi potpuni zapisnik',
'edit-hook-aborted' => 'Izmjena je poništena putem interfejsa.
Nije ponuđeno nikakvo objašnjenje.',
'edit-gone-missing' => 'Stranica se nije mogla osvježiti.
@@ -954,6 +995,7 @@ Ovakvi argumenti se trebaju izbjegavati.',
'post-expand-template-argument-category' => 'Stranice koje sadrže nedostajuće argumente u šablonu',
'parser-template-loop-warning' => 'Otkrivena kružna greška u šablonu: [[$1]]',
'parser-template-recursion-depth-warning' => 'Dubina uključivanja šablona prekoračena ($1)',
+'language-converter-depth-warning' => 'Prekoračena granica dubine jezičkog pretvarača ($1)',
# "Undo" feature
'undo-success' => 'Izmjena se može vratiti.
@@ -974,7 +1016,7 @@ Razlog koji je naveo $3 je ''$2''",
'currentrev' => 'Trenutna revizija',
'currentrev-asof' => 'Trenutna revizija na dan $1',
'revisionasof' => 'Revizija od $1',
-'revision-info' => 'Izmjena od $1 korisnika $2', # Additionally available: $3: revision id
+'revision-info' => 'Izmjena od $1 korisnika $2',
'previousrevision' => '←Starije izmjene',
'nextrevision' => 'Novija izmjena →',
'currentrevisionlink' => 'Trenutna verzija',
@@ -987,7 +1029,7 @@ Razlog koji je naveo $3 je ''$2''",
Objašnjenje: '''(tren)''' = razlika sa trenutnom verzijom,
'''(preth)''' = razlika sa prethodnom verzijom, '''m''' = mala izmjena.",
'history-fieldset-title' => 'Pretraga historije',
-'deletedrev' => '[izbrisano]',
+'history-show-deleted' => 'Samo obrisane',
'histfirst' => 'Najstarije',
'histlast' => 'Najnovije',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajta|$1 bajtova}})',
@@ -996,70 +1038,113 @@ Objašnjenje: '''(tren)''' = razlika sa trenutnom verzijom,
# Revision feed
'history-feed-title' => 'Historija izmjena',
'history-feed-description' => 'Historija promjena ove stranice na wikiju',
-'history-feed-item-nocomment' => '$1 u $2', # user at time
+'history-feed-item-nocomment' => '$1 u $2',
'history-feed-empty' => 'Tražena stranica ne postoji.
Moguće da je izbrisana sa wikija, ili preimenovana.
Pokušajte [[Special:Search|pretražiti wiki]] za slične stranice.',
# Revision deletion
-'rev-deleted-comment' => '(komentar uklonjen)',
-'rev-deleted-user' => '(korisničko ime uklonjeno)',
-'rev-deleted-event' => '(stavka zapisa obrisana)',
-'rev-deleted-text-permission' => "Revizija ove stranice je '''obrisana'''.
-Detalje možete vidjeti u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zapisu brisanja].",
-'rev-deleted-text-view' => "Revizija ove stranice je '''obrisana'''.
-Kao administrator na {{SITENAME}} Vi je možete vidjeti; detalji o tome se mogu vidjeti u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zapisu brisanja].",
-'rev-deleted-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.
-Možete pregledati detalje u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zapisima brisanja].",
-'rev-deleted-unhide-diff' => "Jedna od revizija u ovom pregledu razlika je '''obrisana'''.
-Možete pregledati detalje u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].
-Kao administrator na {{SITENAME}} Vi još uvijek možete [$1 vidjeti ove razlike] ako želite da nastavite.",
-'rev-delundel' => 'pokaži/sakrij',
-'revisiondelete' => 'Obriši/vrati revizije',
-'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
-'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija, ili ta revizija nepostoji, ili pokušavate sakriti trenutnu reviziju.',
-'revdelete-nologtype-title' => 'Nije naveden tip zapisa',
-'revdelete-nologtype-text' => 'Niste odredili tip zapisa za izvršavanje ove akcije na njemu.',
-'revdelete-toomanytargets-title' => 'Previše ciljeva',
-'revdelete-toomanytargets-text' => 'Naveli ste previše tipova ciljeva za izvršavanje ove akcije na njima.',
-'revdelete-nologid-title' => 'Nevaljana stavka zapisa',
-'revdelete-nologid-text' => 'Niste odredili ciljnu stavku zapisa za izvršavanje ove funkcije ili navedena stavka ne postoji.',
-'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} od [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Označena stavka zapisa|Označene stavke zapisa}}:'''",
-'revdelete-text' => "'''Obrisane revizije i događaji će i dalje biti vidljivi u historiji stranice i zapisima, ali dijelovi njenog sadržaja neće biti dostupni javnosti.'''
-
-Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakrivenom sadržaju i mogu ga ponovo vratiti kroz ovaj interfejs, osim ako nisu postavljena dodatna ograničenja.
-Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
-'revdelete-suppress-text' => "Ograničenja bi trebala biti korištena '''samo''' u slijedećim slučajevima:
+'rev-deleted-comment' => '(komentar uklonjen)',
+'rev-deleted-user' => '(korisničko ime uklonjeno)',
+'rev-deleted-event' => '(stavka zapisa obrisana)',
+'rev-deleted-user-contribs' => '[korisničko ime ili IP adresa uklonjeni - izmjena sakrivena u spisku doprinosa]',
+'rev-deleted-text-permission' => "Revizija ove stranice je '''obrisana'''.
+Detalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisu brisanja].",
+'rev-deleted-text-unhide' => "Revizija ove stranice je '''obrisana'''.
+Detalje o tome možer vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].
+Kao administrator još je uvijek možete [$1 vidjeti ovu reviziju] ako želite.",
+'rev-suppressed-text-unhide' => "Ova revizija stranice je '''uklonjena'''.
+Možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisu uklanjanja].
+Kao administrator Vi je i dalje možete [$1 vidjeti ovu reviziju] ako želite.",
+'rev-deleted-text-view' => "Revizija ove stranice je '''obrisana'''.
+Kao administrator, Vi je možete vidjeti; detalji o tome se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisu brisanja].",
+'rev-suppressed-text-view' => "Ova revizija stranice je '''uklonjena'''.
+Kao administrator Vi je možete vidjeti; možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisu uklanjanja].",
+'rev-deleted-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.
+Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisima brisanja].",
+'rev-suppressed-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.",
+'rev-deleted-unhide-diff' => "Jedna od revizija u ovom pregledu razlika je '''obrisana'''.
+Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].
+Kao administrator Vi još uvijek možete [$1 vidjeti ove razlike] ako želite da nastavite.",
+'rev-suppressed-unhide-diff' => "Jedna od revizija ove razlike je '''uklonjena'''.
+Postoji mnogo detalja u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku uklanjanja].
+Kao administrator i dalje možete [$1 vidjeti ove razlike] ako želite da nastavite.",
+'rev-deleted-diff-view' => "Jedna od revizija u ovoj razlici je '''obrisana'''.
+Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].",
+'rev-suppressed-diff-view' => "Jedna od revizija u ovoj razlici je '''sakrivena'''.
+Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].",
+'rev-delundel' => 'pokaži/sakrij',
+'rev-showdeleted' => 'Pokaži',
+'revisiondelete' => 'Obriši/vrati revizije',
+'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
+'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija, ili ta revizija nepostoji, ili pokušavate sakriti trenutnu reviziju.',
+'revdelete-nologtype-title' => 'Nije naveden tip zapisa',
+'revdelete-nologtype-text' => 'Niste odredili tip zapisa za izvršavanje ove akcije na njemu.',
+'revdelete-nologid-title' => 'Nevaljana stavka zapisa',
+'revdelete-nologid-text' => 'Niste odredili ciljnu stavku zapisa za izvršavanje ove funkcije ili navedena stavka ne postoji.',
+'revdelete-no-file' => 'Navedena datoteka ne postoji.',
+'revdelete-show-file-confirm' => 'Da li ste sigurni da želite pogledati obrisanu reviziju datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} od [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Označena stavka zapisa|Označene stavke zapisa}}:'''",
+'revdelete-text' => "'''Obrisane revizije i događaji će i dalje biti vidljivi u historiji stranice i zapisima, ali dijelovi njenog sadržaja neće biti dostupni javnosti.'''
+Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakrivenom sadržaju i mogu ga ponovo vratiti kroz ovaj interfejs, osim ako nisu postavljena dodatna ograničenja.",
+'revdelete-confirm' => 'Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
+'revdelete-suppress-text' => "Ograničenja bi trebala biti korištena '''samo''' u slijedećim slučajevima:
* Osjetljive korisničke informacije
*: ''kućne adrese, brojevi telefona, brojevi bankovnih kartica itd.''",
-'revdelete-legend' => 'Postavi ograničenja vidljivosti',
-'revdelete-hide-text' => 'Sakrij tekst revizije',
-'revdelete-hide-name' => 'Sakrij akciju i cilj',
-'revdelete-hide-comment' => 'Sakrij izmjene komentara',
-'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
-'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
-'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
-'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
-'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
-'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Primijeni na odabranu reviziju',
-'revdelete-logentry' => 'promijenjena vidljivost revizije [[$1]]',
-'logdelete-logentry' => 'promijenjena vidljivost događaja [[$1]]',
-'revdelete-success' => "'''Vidljivost revizije uspješno ažurirana.'''",
-'logdelete-success' => "'''Vidljivost evidencije uspješno postavljena.'''",
-'revdel-restore' => 'Promijeni dostupnost',
-'pagehist' => 'Historija stranice',
-'deletedhist' => 'Izbrisana historija',
-'revdelete-content' => 'sadržaj',
-'revdelete-summary' => 'sažetak',
-'revdelete-uname' => 'korisničko ime',
-'revdelete-restricted' => 'primijenjena ograničenja za administratore',
-'revdelete-unrestricted' => 'uklonjena ograničenja za administratore',
-'revdelete-hid' => 'sakrij $1',
-'revdelete-unhid' => 'otkrij $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene|izmjena}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-legend' => 'Postavi ograničenja vidljivosti',
+'revdelete-hide-text' => 'Sakrij tekst revizije',
+'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
+'revdelete-hide-name' => 'Sakrij akciju i cilj',
+'revdelete-hide-comment' => 'Sakrij izmjene komentara',
+'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
+'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
+'revdelete-radio-same' => '(ne mijenjaj)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
+'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
+'revdelete-log' => 'Razlog:',
+'revdelete-submit' => 'Primijeni na odabrane {{PLURAL:$1|reviziju|revizije}}',
+'revdelete-logentry' => 'promijenjena vidljivost revizije [[$1]]',
+'logdelete-logentry' => 'promijenjena vidljivost događaja [[$1]]',
+'revdelete-success' => "'''Vidljivost revizije uspješno ažurirana.'''",
+'revdelete-failure' => "'''Vidljivost revizije nije mogla biti ažurirana:'''
+$1",
+'logdelete-success' => "'''Vidljivost evidencije uspješno postavljena.'''",
+'logdelete-failure' => "'''Zapisnik vidljivosti nije mogao biti postavljen:'''
+$1",
+'revdel-restore' => 'Promijeni dostupnost',
+'pagehist' => 'Historija stranice',
+'deletedhist' => 'Izbrisana historija',
+'revdelete-content' => 'sadržaj',
+'revdelete-summary' => 'sažetak',
+'revdelete-uname' => 'korisničko ime',
+'revdelete-restricted' => 'primijenjena ograničenja za administratore',
+'revdelete-unrestricted' => 'uklonjena ograničenja za administratore',
+'revdelete-hid' => 'sakrij $1',
+'revdelete-unhid' => 'otkrij $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene|izmjena}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-hide-current' => 'Greška pri sakrivanju stavke od $2, $1: ovo je trenutna revizija.
+Ne može biti sakrivena.',
+'revdelete-show-no-access' => 'Greška pri prikazivanju stavke od $2, $1: ova stavka je označena kao "zaštićena".
+Nemate pristup do ove stavke.',
+'revdelete-modify-no-access' => 'Greška pri izmjeni stavke od $2, $1: ova stavka je označena kao "zaštićena".
+Nemate pristup ovoj stavci.',
+'revdelete-modify-missing' => 'Greška pri mijenjanju stavke ID $1: nedostaje u bazi podataka!',
+'revdelete-no-change' => "'''Upozorenje:''' stavka od $2, $1 već posjeduje zatražene postavke vidljivosti.",
+'revdelete-concurrent-change' => 'Greška pri mijenjanju stavke od $2, $1: njen status je izmijenjen od strane nekog drugog dok ste je pokušavali mijenjati.
+Molimo provjerite zapise.',
+'revdelete-only-restricted' => 'Greška pri sakrivanju stavke od dana $2, $1: ne možete ukloniti stavke od pregledavanja administratora bez da odaberete neku od drugih opcija za uklanjanje.',
+'revdelete-reason-dropdown' => '*Uobičajeni razlozi brisanja
+** Kršenje autorskih prava
+** Neadekvatni lični podaci',
+'revdelete-otherreason' => 'Ostali/dodatni razlog:',
+'revdelete-reasonotherlist' => 'Ostali razlozi',
+'revdelete-edit-reasonlist' => 'Uredi razloge brisanja',
+'revdelete-offender' => 'Autor revizije:',
# Suppression log
'suppressionlog' => 'Zapisi sakrivanja',
@@ -1096,68 +1181,13 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
'mergelogpagetext' => 'Ispod je spisak nedavnih spajanja historija stranica.',
# Diffs
-'history-title' => 'Historija izmjena stranice "$1"',
-'difference' => '(Razlika između revizija)',
-'lineno' => 'Linija $1:',
-'compareselectedversions' => 'Uporedite označene verzije',
-'visualcomparison' => 'Vizuelna usporedba',
-'wikicodecomparison' => 'Usporedba wikiteksta',
-'editundo' => 'ukloni ovu izmjenu',
-'diff-multi' => '({{plural:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}})',
-'diff-movedto' => 'preusmjereno na $1',
-'diff-styleadded' => 'dodan $1 stil',
-'diff-added' => '$1 dodan',
-'diff-changedto' => 'promijenjeno u $1',
-'diff-movedoutof' => 'uklonjeno iz $1',
-'diff-styleremoved' => '$1 stil uklonjen',
-'diff-removed' => '$1 uklonjen',
-'diff-changedfrom' => 'promijenjeno od $1',
-'diff-src' => 'izvorno',
-'diff-withdestination' => 'sa odredištem $1',
-'diff-with' => '&#32;sa $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;i $1 $2',
-'diff-width' => 'širina',
-'diff-height' => 'visina',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''blok'''",
-'diff-h1' => "'''naslov (nivo 1)'''",
-'diff-h2' => "'''naslov (nivo 2)'''",
-'diff-h3' => "'''naslov (nivo 3)'''",
-'diff-h4' => "'''naslov (nivo 4)'''",
-'diff-h5' => "'''naslov (nivo 5)'''",
-'diff-pre' => "'''formatirani blok'''",
-'diff-div' => "'''element bloka'''",
-'diff-ul' => "'''neporedani spisak'''",
-'diff-ol' => "'''poredani spisak'''",
-'diff-li' => "'''stavka spiska'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''sadržaj tabele'''",
-'diff-tr' => "'''redak'''",
-'diff-td' => "'''polje'''",
-'diff-th' => "'''zaglavlje'''",
-'diff-br' => "'''prijelom'''",
-'diff-hr' => "'''vodoravna linija'''",
-'diff-code' => "'''računarski kod'''",
-'diff-dl' => "'''spisak definicija'''",
-'diff-dt' => "'''definisan pojam'''",
-'diff-dd' => "'''definicija'''",
-'diff-input' => "'''unos'''",
-'diff-form' => "'''obrazac'''",
-'diff-img' => "'''slika'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''link'''",
-'diff-i' => "'''ukošeno'''",
-'diff-b' => "'''podebljano'''",
-'diff-strong' => "'''jako'''",
-'diff-em' => "'''naglašeno'''",
-'diff-font' => "'''slova'''",
-'diff-big' => "'''veliko'''",
-'diff-del' => "'''obrisano'''",
-'diff-tt' => "'''određena širina'''",
-'diff-sub' => "'''subskipt'''",
-'diff-sup' => "'''faktor'''",
-'diff-strike' => "'''precrtano'''",
+'history-title' => 'Historija izmjena stranice "$1"',
+'difference' => '(Razlika između revizija)',
+'lineno' => 'Linija $1:',
+'compareselectedversions' => 'Uporedite označene verzije',
+'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
+'editundo' => 'ukloni ovu izmjenu',
+'diff-multi' => '({{plural:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}})',
# Search results
'searchresults' => 'Rezultati pretrage',
@@ -1165,32 +1195,25 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
'searchsubtitleinvalid' => 'Tražili ste $1',
-'noexactmatch' => "'''Nema stranice sa imenom \"\$1\".'''
-
-Možete [[:\$1|da napravite članak sa tim naslovom]].
-
-::*'''''<u>Opomena: Nemojte kopirati materijale za koje nemate dozvolu!</u>'''''",
-'noexactmatch-nocreate' => "'''Ne postoji stranica sa naslovom \"\$1\".'''",
'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
'titlematches' => 'Naslov članka odgovara',
'notitlematches' => 'Naslov članka ne odgovara.',
'textmatches' => 'Tekst stranice odgovara',
'notextmatches' => 'Tekst članka ne odgovara',
-'prevn' => 'prethodnih $1',
-'nextn' => 'slijedećih $1',
+'prevn' => '{{PLURAL:$1|prethodni $1|prethodnih $1}}',
+'nextn' => '{{PLURAL:$1|slijedeći $1|slijedećih $1}}',
'prevn-title' => '{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}',
'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
-'viewprevnext' => 'Pogledaj ($1) ($2) ($3).',
+'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opcije pretrage',
'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
'searchhelp-url' => 'Help:Sadržaj',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
'searchprofile-articles' => 'Stranice sadržaja',
-'searchprofile-articles-and-proj' => 'Stranice sadržaja i projekata',
-'searchprofile-project' => 'Stranice projekta',
-'searchprofile-images' => 'Datoteke',
+'searchprofile-project' => 'Stranice pomoći i projekta',
+'searchprofile-images' => 'Multimedija',
'searchprofile-everything' => 'Sve',
'searchprofile-advanced' => 'Napredno',
'searchprofile-articles-tooltip' => 'Pretraga u $1',
@@ -1198,8 +1221,6 @@ Možete [[:\$1|da napravite članak sa tim naslovom]].
'searchprofile-images-tooltip' => 'Traži datoteke',
'searchprofile-everything-tooltip' => 'Pretraži sve sadržaje (ukljujući i stranice za razgovor)',
'searchprofile-advanced-tooltip' => 'Traži u ostalim imenskim prostorima',
-'prefs-search-nsdefault' => 'Pretraga uz pretpostavljeno:',
-'prefs-search-nscustom' => 'Pretraga u ostalim imenskim prostorima:',
'search-result-size' => '$1 ({{PLURAL:$2|$2 riječ|$2 riječi}})',
'search-result-score' => 'Relevantnost: $1%',
'search-redirect' => '(preusmjeravanje $1)',
@@ -1212,11 +1233,12 @@ Možete [[:\$1|da napravite članak sa tim naslovom]].
'search-mwsuggest-disabled' => 'bez sugestija',
'search-relatedarticle' => 'Povezano',
'mwsuggest-disable' => 'Onemogući AJAX prijedloge',
+'searcheverything-enable' => 'Traži u svim imenskim prostorima',
'searchrelated' => 'povezano',
'searchall' => 'sve',
'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
-'showingresultstotal' => "Ispod {{PLURAL:$4|je prikazan rezultat '''$1''' od '''$3'''|su prikazani rezultati '''$1 - $2''' od ukupno '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
'nonefound' => "'''Pažnja''': Po pretpostavljenim postavkama pretražuju se samo neki imenski prostori.
Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sadržaj (uključujući stranice za razgovor, šablone i sl.) ili koristite željeni imenski prostor kao prefiks.",
'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
@@ -1225,111 +1247,152 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'powersearch-ns' => 'Pretraga u imenskim prostorima:',
'powersearch-redir' => 'Spisak preusmjerenja',
'powersearch-field' => 'Traži',
+'powersearch-togglelabel' => 'Označi:',
+'powersearch-toggleall' => 'Sve',
+'powersearch-togglenone' => 'Ništa',
'search-external' => 'Vanjska pretraga',
'searchdisabled' => '<p>Izvinjavamo se! Puno pretraga teksta je privremeno onemogućena. U međuvremenu, možete koristiti Google za pretragu. Indeks može biti stariji.',
+# Quickbar
+'qbsettings' => 'Podešavanja brze palete',
+'qbsettings-none' => 'Nikakva',
+'qbsettings-fixedleft' => 'Pričvršćena lijevo',
+'qbsettings-fixedright' => 'Pričvršćena desno',
+'qbsettings-floatingleft' => 'Plutajuća lijevo',
+'qbsettings-floatingright' => 'Plutajući desno',
+
# Preferences page
-'preferences' => 'Podešavanja',
-'mypreferences' => 'Moje postavke',
-'prefs-edits' => 'Broj izmjena:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Da biste mogli podešavati korisnička podešavanja, morate <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} biti prijavljeni]</span>.',
-'prefsreset' => 'Podešavanja su vraćena na prvotne vrijednosti.',
-'qbsettings' => 'Podešavanja brze palete',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'Pričvršćena lijevo',
-'qbsettings-fixedright' => 'Pričvršćena desno',
-'qbsettings-floatingleft' => 'Plutajuća lijevo',
-'qbsettings-floatingright' => 'Plutajući desno',
-'changepassword' => 'Promijeni šifru',
-'skin' => 'Koža',
-'skin-preview' => 'Pregled',
-'math' => 'Prikazivanje matematike',
-'dateformat' => 'Format datuma',
-'datedefault' => 'Nije bitno',
-'datetime' => 'Datum i vrijeme',
-'math_failure' => 'Neuspjeh pri parsiranju',
-'math_unknown_error' => 'nepoznata greška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'riječnička greška',
-'math_syntax_error' => 'sintaksna greška',
-'math_image_error' => 'PNG konverzija neuspješna; provjerite tačnu instalaciju latex-a, dvips-a, gs-a i convert-a',
-'math_bad_tmpdir' => 'Ne može se napisati ili napraviti privremeni matematični direktorijum',
-'math_bad_output' => 'Ne može se napisati ili napraviti direktorijum za matematični izvještaj.',
-'math_notexvc' => 'Nedostaje izvršno texvc; molimo Vas da pogledate math/README da podesite.',
-'prefs-personal' => 'Korisnički podaci',
-'prefs-rc' => 'Podešavanja nedavnih izmjena',
-'prefs-watchlist' => 'Moji praćeni članci',
-'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
-'prefs-watchlist-days-max' => '(najviše 7 dana)',
-'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
-'prefs-watchlist-edits-max' => '(najveći broj: 1000)',
-'prefs-misc' => 'Ostala podešavanja',
-'prefs-resetpass' => 'Promijeni šifru',
-'saveprefs' => 'Sačuvajte podešavanja',
-'resetprefs' => 'Vrati podešavanja',
-'restoreprefs' => 'Vrati sve pretpostavljene postavke',
-'textboxsize' => 'Uređivanje',
-'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
-'rows' => 'Redova',
-'columns' => 'Kolona',
-'searchresultshead' => 'Podešavanja rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
-'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
-'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
-'recentchangesdays-max' => '(najviše $1 {{PLURAL:$1|dan|dana}})',
-'recentchangescount' => 'Broj naslova za prikaz u nedavnim izmjenama, historijama stranice i zapisnicima, po pretpostavkama:',
-'savedprefs' => 'Vaša podešavanja su sačuvana.',
-'timezonelegend' => 'Vremenska zona:',
-'timezonetext' => 'Unesite broj sati za koji se Vaše lokalno vrijeme razlikuje od serverskog vremena (UTC).',
-'localtime' => 'Lokalno vrijeme:',
-'timezoneselect' => 'Vremenska zona:',
-'timezoneuseserverdefault' => 'Koristi postavke servera',
-'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
-'servertime' => 'Vrijeme na serveru:',
-'guesstimezone' => 'Popuni iz preglednika',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantski okean',
-'timezoneregion-australia' => 'Australija',
-'timezoneregion-europe' => 'Evropa',
-'timezoneregion-indian' => 'Indijski okean',
-'timezoneregion-pacific' => 'Tihi okean',
-'allowemail' => 'Dozvoli e-poštu od ostalih korisnika',
-'prefs-searchoptions' => 'Opcije pretrage',
-'prefs-namespaces' => 'Imenski prostori',
-'defaultns' => 'Uobičajeno tražite u ovim imenskim prostorima:',
-'default' => 'standardno',
-'files' => 'Datoteke',
-'prefs-custom-css' => 'Prilagođeni CSS',
-'prefs-custom-js' => 'Prilagođeni JS',
+'preferences' => 'Podešavanja',
+'mypreferences' => 'Moje postavke',
+'prefs-edits' => 'Broj izmjena:',
+'prefsnologin' => 'Niste prijavljeni',
+'prefsnologintext' => 'Da biste mogli podešavati korisnička podešavanja, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
+'changepassword' => 'Promijeni šifru',
+'prefs-skin' => 'Koža',
+'skin-preview' => 'Pregled',
+'prefs-math' => 'Prikazivanje matematike',
+'datedefault' => 'Nije bitno',
+'prefs-datetime' => 'Datum i vrijeme',
+'prefs-personal' => 'Korisnički podaci',
+'prefs-rc' => 'Podešavanja nedavnih izmjena',
+'prefs-watchlist' => 'Moji praćeni članci',
+'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
+'prefs-watchlist-days-max' => '(najviše 7 dana)',
+'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
+'prefs-watchlist-edits-max' => '(najveći broj: 1000)',
+'prefs-watchlist-token' => 'Token spiska za praćenje:',
+'prefs-misc' => 'Ostala podešavanja',
+'prefs-resetpass' => 'Promijeni šifru',
+'prefs-email' => 'E-mail opcije',
+'prefs-rendering' => 'Izgled',
+'saveprefs' => 'Sačuvajte podešavanja',
+'resetprefs' => 'Vrati podešavanja',
+'restoreprefs' => 'Vrati sve pretpostavljene postavke',
+'prefs-editing' => 'Veličine tekstualnog polja',
+'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
+'rows' => 'Redova',
+'columns' => 'Kolona',
+'searchresultshead' => 'Podešavanja rezultata pretrage',
+'resultsperpage' => 'Pogodaka po stranici:',
+'contextlines' => 'Linija po pogotku:',
+'contextchars' => 'Karaktera konteksta po liniji:',
+'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
+'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
+'recentchangesdays-max' => '(najviše $1 {{PLURAL:$1|dan|dana}})',
+'recentchangescount' => 'Broj uređivanja za prikaz po pretpostavkama:',
+'prefs-help-recentchangescount' => 'Ovo uključuje nedavne izmjene, historije stranice i zapise.',
+'prefs-help-watchlist-token' => 'Popunjavanjem ovog polja tajnim ključem će generisati RSS fid za Vaš spisak praćenja.
+Svako ko zna ključ u ovom polju će biti u mogućnosti da pročita Vaš spisak praćenja, tako da trebate izabrati sigurnu vrijednost.
+Ovdje su navedene neke nasumično odabrane vrijednosti koje možete koristiti: $1',
+'savedprefs' => 'Vaša podešavanja su sačuvana.',
+'timezonelegend' => 'Vremenska zona:',
+'localtime' => 'Lokalno vrijeme:',
+'timezoneuseserverdefault' => 'Koristi postavke servera',
+'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
+'timezoneoffset' => 'Odstupanje¹:',
+'servertime' => 'Vrijeme na serveru:',
+'guesstimezone' => 'Popuni iz preglednika',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantski okean',
+'timezoneregion-australia' => 'Australija',
+'timezoneregion-europe' => 'Evropa',
+'timezoneregion-indian' => 'Indijski okean',
+'timezoneregion-pacific' => 'Tihi okean',
+'allowemail' => 'Dozvoli e-poštu od ostalih korisnika',
+'prefs-searchoptions' => 'Opcije pretrage',
+'prefs-namespaces' => 'Imenski prostori',
+'defaultns' => 'Inače tražite u ovim imenskim prostorima:',
+'default' => 'standardno',
+'prefs-files' => 'Datoteke',
+'prefs-custom-css' => 'Prilagođeni CSS',
+'prefs-custom-js' => 'Prilagođeni JS',
+'prefs-reset-intro' => 'Možete koristiti ovu stranicu da poništite Vaše postavke na ovom sajtu na pretpostavljene vrijednosti.
+Ovo se ne može vratiti unazad.',
+'prefs-emailconfirm-label' => 'E-mail potvrda:',
+'prefs-textboxsize' => 'Veličina prozora za uređivanje',
+'youremail' => 'E-pošta:',
+'username' => 'Korisničko ime:',
+'uid' => 'Korisnički ID:',
+'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
+'prefs-registration' => 'Vrijeme registracije:',
+'yourrealname' => 'Vaše pravo ime:',
+'yourlanguage' => 'Jezik:',
+'yourvariant' => 'Varijanta:',
+'yournick' => 'Nadimak (za potpise):',
+'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
+'badsig' => 'Loš sirovi potpis.
+Provjerite HTML tagove.',
+'badsiglength' => 'Vaš potpis je predug.
+Mora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
+'yourgender' => 'Spol:',
+'gender-unknown' => 'neodređen',
+'gender-male' => 'muški',
+'gender-female' => 'žensko',
+'prefs-help-gender' => 'Optionalno: koristi se za ispravke gramatičkog roda u porukama softvera. Ova informacija će biti javna.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Pravo ime nije obavezno.
+Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
+'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.
+Također omogućuje drugim korisnicima da vas kontaktiraju preko Vaše korisničke stranice ili stranice za razgovor bez otkrivanja Vašeg identiteta.',
+'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
+'prefs-info' => 'Osnovne informacije',
+'prefs-i18n' => 'Internacionalizacije',
+'prefs-signature' => 'Potpis',
+'prefs-dateformat' => 'Format datuma',
+'prefs-timeoffset' => 'Vremenska razlika',
+'prefs-advancedediting' => 'Napredne opcije',
+'prefs-advancedrc' => 'Napredne opcije',
+'prefs-advancedrendering' => 'Napredne opcije',
+'prefs-advancedsearchoptions' => 'Napredne opcije',
+'prefs-advancedwatchlist' => 'Napredne opcije',
+'prefs-display' => 'Postavke izgleda',
+'prefs-diffs' => 'Razlike',
# User rights
-'userrights' => 'Postavke korisničkih prava', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Menadžment korisničkih grupa',
-'userrights-user-editname' => 'Unesi korisničko ime:',
-'editusergroup' => 'Uredi korisničke grupe',
-'editinguser' => "Mijenjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Uredi korisničke grupe',
-'saveusergroups' => 'Sačuvaj korisničke grupe',
-'userrights-groupsmember' => 'Član:',
-'userrights-groups-help' => 'Možete promijeniti grupe kojima ovaj korisnik pripada:
+'userrights' => 'Postavke korisničkih prava',
+'userrights-lookup-user' => 'Menadžment korisničkih grupa',
+'userrights-user-editname' => 'Unesi korisničko ime:',
+'editusergroup' => 'Uredi korisničke grupe',
+'editinguser' => "Mijenjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Uredi korisničke grupe',
+'saveusergroups' => 'Sačuvaj korisničke grupe',
+'userrights-groupsmember' => 'Član:',
+'userrights-groupsmember-auto' => 'Uključeni član od:',
+'userrights-groups-help' => 'Možete promijeniti grupe kojima ovaj korisnik pripada:
* Označeni kvadratić znači da je korisnik u toj grupi.
* Neoznačen kvadratić znači da korisnik nije u toj grupi.
* Oznaka * (zvjezdica) označava da Vi ne možete izbrisati ovu grupu ako je dodate i obrnutno.',
-'userrights-reason' => 'Razlog:',
-'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
-'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
-'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
-'userrights-changeable-col' => 'Grupe koje možete mijenjati',
-'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
+'userrights-reason' => 'Razlog:',
+'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
+'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
+'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
+'userrights-changeable-col' => 'Grupe koje možete mijenjati',
+'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
# Groups
'group' => 'Grupa:',
@@ -1382,6 +1445,7 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'right-bigdelete' => 'Brisanje stranica sa velikom historijom',
'right-deleterevision' => 'Brisanje i vraćanje određenih revizija stranice',
'right-deletedhistory' => 'Pregled stavki obrisane historije, bez povezanog teksta',
+'right-deletedtext' => 'Pregled obrisanog teksta i izmjena između obrisanih revizija',
'right-browsearchive' => 'Pretraživanje obrisanih stranica',
'right-undelete' => 'Vraćanje obrisanih stranica',
'right-suppressrevision' => 'Pregled i povratak revizija sakrivenih od administratora',
@@ -1395,6 +1459,8 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'right-editprotected' => 'Uređivanje zaštićenih stranica (bez povezanih zaštita)',
'right-editinterface' => 'Uređivanje korisničkog interfejsa',
'right-editusercssjs' => 'Uređivanje CSS i JS datoteka drugih korisnika',
+'right-editusercss' => 'Uređivanje CSS datoteka drugih korisnika',
+'right-edituserjs' => 'Uređivanje JS datoteka drugih korisnika',
'right-rollback' => 'Brzo vraćanje izmjena na zadnjeg korisnika koji je uređivao određenu stranicu',
'right-markbotedits' => 'Označavanje vraćenih izmjena kao izmjene bota',
'right-noratelimit' => 'Izbjegavanje ograničenja uzrokovanih brzinom',
@@ -1411,6 +1477,8 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
'right-reset-passwords' => 'Resetuje šifre drugih korisnika',
'right-override-export-depth' => 'Izvoz stranica uključujući povezane stranice do dubine od 5 linkova',
+'right-versiondetail' => 'Pregledavanje proširenih informacija o verzijama softvera',
+'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# User rights log
'rightslog' => 'Zapisnik korisničkih prava',
@@ -1460,6 +1528,15 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'recentchanges-legend' => 'Postavke nedavnih izmjena',
'recentchangestext' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
+'recentchanges-label-newpage' => 'Ovom izmjenom se pravi nova stranica',
+'recentchanges-legend-minor' => '$1 - mala izmjena',
+'recentchanges-label-minor' => 'Ovo je mala izmjena',
+'recentchanges-legend-bot' => '$1 - izmjena bota',
+'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
+'recentchanges-legend-unpatrolled' => '$1 - nepatrolirana izmjena',
+'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
'rclistfrom' => 'Prikaži nove izmjene počev od $1',
@@ -1477,7 +1554,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
'rc_categories' => 'Ograniči na kategorije (razdvojene sa "|")',
'rc_categories_any' => 'Sve',
@@ -1487,6 +1563,8 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
# Recent changes linked
'recentchangeslinked' => 'Srodne izmjene',
+'recentchangeslinked-feed' => 'Srodne izmjene',
+'recentchangeslinked-toolbox' => 'Srodne izmjene',
'recentchangeslinked-title' => 'Srodne promjene sa "$1"',
'recentchangeslinked-noresult' => 'Nema izmjena na povezanim stranicama u zadanom periodu.',
'recentchangeslinked-summary' => "Ova posebna stranica prikazuje promjene na povezanim stranicama.
@@ -1497,8 +1575,8 @@ Stranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podeblja
# Upload
'upload' => 'Postavi datoteku',
'uploadbtn' => 'Postavi datoteku',
-'reupload' => 'Ponovo pošaljite',
'reuploaddesc' => 'Vratite se na upitnik za slanje.',
+'upload-tryagain' => 'Pošaljite izmijenjeni opis datoteke',
'uploadnologin' => 'Niste prijavljeni',
'uploadnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da bi ste slali datoteke.',
'upload_directory_missing' => 'Folder za postavljanje ($1) nedostaje i webserver ga ne može napraviti.',
@@ -1530,6 +1608,7 @@ Da bi ste prikazali datoteku na stranici, koristite link na jedan od slijedećih
'illegalfilename' => 'Ime datoteke "$1" sadrži simbol koji nije dozvoljen u imenu datoteke.
Molimo Vas da promijenite ime datoteke i pokušate da je ponovo postavite.',
'badfilename' => 'Ime datoteke je promijenjeno u "$1".',
+'filetype-mime-mismatch' => 'Proširenje datoteke ne odgovara MIME tipu.',
'filetype-badmime' => 'Datoteke MIME vrste "$1" nije dopušteno postavljati.',
'filetype-bad-ie-mime' => 'Ne može se postaviti ova datoteka jer je Internet Explorer prepoznaje kao "$1", što je nedozvoljena i potencijalno opasna vrsta datoteke.',
'filetype-unwanted-type' => "'''\".\$1\"''' je nepoželjna vrsta datoteke.
@@ -1552,7 +1631,6 @@ Da bi se Vaš opis ovdje našao, potrebno je da ga ručno uredite.
* Naziv datoteke koja se postavlja: '''<tt>[[:$1]]</tt>'''
* Naziv postojeće datoteke: '''<tt>[[:$2]]</tt>'''
Molimo Vas da izaberete drugačiji naziv.",
-'fileexists-thumb' => "<center>'''Postojeća datoteka'''</center>",
'fileexists-thumbnail-yes' => "Izgleda da je datoteka slika smanjene veličine ''(\"thumbnail\")''. [[\$1|thumb]]
Molimo provjerite datoteku '''<tt>[[:\$1]]</tt>'''.
Ako je provjerena datoteka ista slika originalne veličine, nije potrebno postavljati dodatnu sliku.",
@@ -1566,6 +1644,7 @@ Ako i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošal
'file-deleted-duplicate' => 'Datoteka koje je identična ovoj datoteci ([[$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.',
'successfulupload' => 'Uspješno slanje',
'uploadwarning' => 'Upozorenje pri slanju',
+'uploadwarning-text' => 'Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.',
'savefile' => 'Sačuvaj datoteku',
'uploadedimage' => 'poslato "[[$1]]"',
'overwroteimage' => 'postavljena nova verzija datoteke "[[$1]]"',
@@ -1573,12 +1652,14 @@ Ako i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošal
'uploaddisabledtext' => 'Postavljanje datoteka je onemogućeno.',
'php-uploaddisabledtext' => 'Postavljanje datoteka preko PHP je onemogućeno. Molimo provjerite postavku file_uploads.',
'uploadscripted' => 'Ova datoteka sadrži HTML ili skriptni kod koji može izazvati grešku kod internet preglednika.',
-'uploadcorrupt' => 'Datoteka je oštećena ili ima pogrešnu ekstenziju.
-Molimo Vas da provjerite datoteku i ponovno je postavite.',
'uploadvirus' => 'Fajl sadrži virus! Detalji: $1',
+'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime izvorišne datoteke:',
+'sourceurl' => 'URL izvora:',
'destfilename' => 'Ime odredišne datoteke:',
'upload-maxfilesize' => 'Najveća veličina datoteke: $1',
+'upload-description' => 'Opis datoteke',
+'upload-options' => 'Opcije postavljanja',
'watchthisupload' => 'Prati ovu datoteku',
'filewasdeleted' => 'Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.
Prije nego što nastavite da je ponovno postavite trebate provjeriti $1.',
@@ -1603,15 +1684,46 @@ MGP # Pentax
PICT # razni
#</pre> <!-- ostavite ovu liniju onakvom kakva jeste -->',
-'upload-proto-error' => 'Pogrešan protokol',
-'upload-proto-error-text' => 'Postavljanje sa vanjske lokacije zahtjeva URL-ove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
-'upload-file-error' => 'Unutrašnja greška',
-'upload-file-error-text' => 'Desila se interna greška pri pokušaju kreiranja privremene datoteke na serveru.
+'upload-proto-error' => 'Pogrešan protokol',
+'upload-proto-error-text' => 'Postavljanje sa vanjske lokacije zahtjeva URL-ove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
+'upload-file-error' => 'Unutrašnja greška',
+'upload-file-error-text' => 'Desila se interna greška pri pokušaju kreiranja privremene datoteke na serveru.
Molimo kontaktirajte [[Special:ListUsers/sysop|administratora]].',
-'upload-misc-error' => 'Nepoznata greška pri postavljanju',
-'upload-misc-error-text' => 'Desila se nepoznata greška pri postavljanju.
+'upload-misc-error' => 'Nepoznata greška pri postavljanju',
+'upload-misc-error-text' => 'Desila se nepoznata greška pri postavljanju.
Molimo Vas provjerite da li je URL tačan i dostupan pa pokušajte ponovo.
Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administratora]].',
+'upload-too-many-redirects' => 'URL sadrži previše preusmjerenja',
+'upload-unknown-size' => 'Nepoznata veličina',
+'upload-http-error' => 'Desila se HTTP greška: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Pristup onemogućen',
+'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
+Vaš server nije postavljen da daje ovu informaciju.
+On je zasnovan na CGI i ne može podržavati img_auth.
+Pogledajte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Zahtjevana putanje nije u direktorijumu podešenom za postavljanje.',
+'img-auth-badtitle' => 'Ne mogu napraviti valjani naslov iz "$1".',
+'img-auth-nologinnWL' => 'Niste prijavljeni i "$1" nije na spisku dozvoljenih.',
+'img-auth-nofile' => 'Datoteka "$1" ne postoji.',
+'img-auth-isdir' => 'Pokušavate pristupiti direktorijumu "$1".
+Dozvoljen je samo pristup datotekama.',
+'img-auth-streaming' => 'Tok "$1".',
+'img-auth-public' => 'Funkcija img_auth.php služi za izlaz datoteka sa privatnih wikija.
+Ova wiki je postavljena kao javna wiki.
+Za optimalnu sigurnost, img_auth.php je onemogućena.',
+'img-auth-noread' => 'Korisnik nema pristup za čitanje "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Nevaljan URL: $1',
+'http-invalid-scheme' => 'URLovi za koje šema "$1" nije podržana',
+'http-request-error' => 'Nepoznata greška pri slanju zahtjeva.',
+'http-read-error' => 'Greška pri čitanju HTTP.',
+'http-timed-out' => 'Istekao HTTP zahtjev.',
+'http-curl-error' => 'Greška pri otvaranju URLa: $1',
+'http-host-unreachable' => 'Ovaj URL nije bilo moguće otvoriti',
+'http-bad-status' => 'Nastao je problem tokom HTTP zahtjeva: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Ovaj URL nije bilo moguće otvoriti',
@@ -1623,6 +1735,7 @@ Molimo provjerite da li je stranica postavljena, malo pričekajte i pokušajte p
Možda možete pokušati kada bude manje opterećenje.',
'license' => 'Licenca:',
+'license-header' => 'Licenciranje',
'nolicense' => 'Ništa nije odabrano',
'license-nopreview' => '(Pregled nije dostupan)',
'upload_source_url' => ' (validni, javno dostupni URL)',
@@ -1643,6 +1756,7 @@ Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
'listfiles_count' => 'Verzije',
# File description page
+'file-anchor-link' => 'Datoteka',
'filehist' => 'Historija datoteke',
'filehist-help' => 'Kliknite na datum/vrijeme da vidite verziju datoteke iz tog vremena.',
'filehist-deleteall' => 'izbriši sve',
@@ -1657,6 +1771,7 @@ Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
'filehist-dimensions' => 'Dimenzije',
'filehist-filesize' => 'Veličina datoteke',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Datoteka nedostaje',
'imagelinks' => 'Linkovi datoteke',
'linkstoimage' => '{{PLURAL:$1|Slijedeća stranica koristi|Slijedećih $1 stranica koriste}} ovu sliku:',
'linkstoimage-more' => 'Više od $1 {{PLURAL:$1|datoteke|datoteka}} je povezano s ovom datotekom.
@@ -1666,15 +1781,16 @@ Ovdje je dostupan [[Special:WhatLinksHere/$2|potpuni spisak]].',
'morelinkstoimage' => 'Vidi [[Special:WhatLinksHere/$1|ostale linkove]] prema ovoj datoteci.',
'redirectstofile' => '{{PLURAL:$1|Slijedeća datoteka|Slijedeće $1 datoteke|Slijedećih $1 datoteka}} preusmjerava prema ovoj datoteci:',
'duplicatesoffile' => '{{PLURAL:$1|Slijedeća datoteka je dvojnik|Slijedeće $1 datoteke su dvojnici}} ove datoteke ([[Special:FileDuplicateSearch/$2|detaljnije]]):',
-'sharedupload' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Molimo pogledajte $1 za više informacija.',
-'shareduploadwiki-desc' => 'Opis na njenoj $1 je prikazan ispod.',
-'shareduploadwiki-linktext' => 'stranici opisa datoteke',
-'noimage' => 'Slika sa ovim imenom ne postoji, ali je možete $1.',
-'noimage-linktext' => 'postaviti',
+'sharedupload' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.',
+'sharedupload-desc-there' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.
+Molimo pogledajte [$2 stranicu opisa datoteke] za ostale informacije.',
+'sharedupload-desc-here' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.
+Opis sa njene [$2 stranice opisa datoteke] je prikazan ispod.',
+'filepage-nofile' => 'Ne postoji datoteka s ovim nazivom.',
+'filepage-nofile-link' => 'Ne postoji datoteka s ovim imenom, ali je možete [$1 postaviti].',
'uploadnewversion-linktext' => 'Postavite noviju verziju ove datoteke',
-'shared-repo-from' => 'iz $1', # $1 is the repository name
-'shared-repo' => 'dijeljeni repozitorijum', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'iz $1',
+'shared-repo' => 'dijeljeni repozitorijum',
# File reversion
'filerevert' => 'Vrati $1',
@@ -1703,6 +1819,7 @@ Ovdje je dostupan [[Special:WhatLinksHere/$2|potpuni spisak]].',
** Kršenje autorskih prava
** Datoteka dvojnik',
'filedelete-edit-reasonlist' => 'Uredi razloge brisanja',
+'filedelete-maintenance' => 'Brisanje i povratak datoteka je privremeno onemogućen tokom održavanja.',
# MIME search
'mimesearch' => 'MIME pretraga',
@@ -1725,7 +1842,7 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
# Random page
'randompage' => 'Slučajna stranica',
-'randompage-nopages' => 'Nema stranica u imenskom prostoru "$1".',
+'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|slijedećem imenskom prostoru|slijedećim imenskim prostorima}}: "$1".',
# Random redirect
'randomredirect' => 'Slučajno preusmjerenje',
@@ -1737,6 +1854,7 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
'statistics-header-edits' => 'Statistike izmjena',
'statistics-header-views' => 'Statistike pregleda',
'statistics-header-users' => 'Statistike korisnika',
+'statistics-header-hooks' => 'Ostale statistike',
'statistics-articles' => 'Stranice sadržaja',
'statistics-pages' => 'Stranice',
'statistics-pages-desc' => 'Sve stranice na wikiju, uključujući stranice za razgovor, preusmjerenja itd.',
@@ -1766,8 +1884,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
'brokenredirects' => 'Pokvarena preusmjerenja',
'brokenredirectstext' => 'Slijedeća preusmjerenja vode na nepostojeće stranice:',
-'brokenredirects-edit' => '(uredi)',
-'brokenredirects-delete' => '(obriši)',
+'brokenredirects-edit' => 'uredi',
+'brokenredirects-delete' => 'obriši',
'withoutinterwiki' => 'Članci bez interwiki linkova',
'withoutinterwiki-summary' => 'Slijedeće stranice nemaju linkove prema verzijama na drugim jezicima.',
@@ -1876,7 +1994,7 @@ Možda sadrži jedan ili više znakova koji se ne mogu koristiti u naslovima.',
# Special:Categories
'categories' => 'Kategorije',
-'categoriespagetext' => 'Slijedeće kategorije sadrže stranice ili multimedijalne datoteke.
+'categoriespagetext' => '{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.
[[Special:UnusedCategories|Nekorištene kategorije]] nisu prikazane ovdje.
Vidi također [[Special:WantedCategories|zatražene kategorije]].',
'categoriesfrom' => 'Prikaži kategorije počev od:',
@@ -1884,8 +2002,9 @@ Vidi također [[Special:WantedCategories|zatražene kategorije]].',
'special-categories-sort-abc' => 'sortiraj po abecedi',
# Special:DeletedContributions
-'deletedcontributions' => 'Obrisani doprinosi korisnika',
-'deletedcontributions-title' => 'Obrisani doprinosi korisnika',
+'deletedcontributions' => 'Obrisani doprinosi korisnika',
+'deletedcontributions-title' => 'Obrisani doprinosi korisnika',
+'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
'linksearch' => 'Vanjski linkovi',
@@ -1901,6 +2020,16 @@ Podržani protokoli: <tt>$1</tt>',
'listusersfrom' => 'Prikaži korisnike koji počinju sa:',
'listusers-submit' => 'Pokaži',
'listusers-noresult' => 'Nije pronađen korisnik.',
+'listusers-blocked' => '(blokiran)',
+
+# Special:ActiveUsers
+'activeusers' => 'Spisak aktivnih korisnika',
+'activeusers-intro' => 'Ovo je spisak korisnika koji su napravili neku aktivnost u {{PLURAL:$1|zadnji $1 dan|zadnja $1 dana|zadnjih $1 dana}}.',
+'activeusers-count' => '{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
+'activeusers-from' => 'Prikaži korisnike koji počinju sa:',
+'activeusers-hidebots' => 'Sakrij botove',
+'activeusers-hidesysops' => 'Sakrij administratore',
+'activeusers-noresult' => 'Nije pronađen korisnik.',
# Special:Log/newusers
'newuserlogpage' => 'Zapis novih korisnika',
@@ -1911,17 +2040,23 @@ Podržani protokoli: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Račun napravljen automatski',
# Special:ListGroupRights
-'listgrouprights' => 'Prava korisničkih grupa',
-'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
+'listgrouprights' => 'Prava korisničkih grupa',
+'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
O svakoj od njih postoje i [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]].',
-'listgrouprights-group' => 'Grupa',
-'listgrouprights-rights' => 'Prava',
-'listgrouprights-helppage' => 'Help:Grupna prava',
-'listgrouprights-members' => '(spisak članova)',
-'listgrouprights-addgroup' => 'Mogu dodati {{PLURAL:$2|grupu|grupe}}: $1',
-'listgrouprights-removegroup' => 'Mogu ukloniti {{PLURAL:$2|grupu|grupe}}: $1',
-'listgrouprights-addgroup-all' => 'Može dodavati sve grupe',
-'listgrouprights-removegroup-all' => 'Može ukloniti sve grupe',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dodano pravo</span>
+* <span class="listgrouprights-revoked">Uklonjeno pravo</span>',
+'listgrouprights-group' => 'Grupa',
+'listgrouprights-rights' => 'Prava',
+'listgrouprights-helppage' => 'Help:Grupna prava',
+'listgrouprights-members' => '(spisak članova)',
+'listgrouprights-addgroup' => 'Mogu dodati {{PLURAL:$2|grupu|grupe}}: $1',
+'listgrouprights-removegroup' => 'Mogu ukloniti {{PLURAL:$2|grupu|grupe}}: $1',
+'listgrouprights-addgroup-all' => 'Može dodavati sve grupe',
+'listgrouprights-removegroup-all' => 'Može ukloniti sve grupe',
+'listgrouprights-addgroup-self' => 'Može dodati {{PLURAL:$2|grupu|grupe|grupa}} na svoj račun: $1',
+'listgrouprights-removegroup-self' => 'Može ukloniti {{PLURAL:$2|grupu|grupe|grupa}} sa svog računa: $1',
+'listgrouprights-addgroup-self-all' => 'Može dodati sve grupe na svoj račun',
+'listgrouprights-removegroup-self-all' => 'Može ukloniti sve grupe sa svog računa',
# E-mail user
'mailnologin' => 'Nema adrese za slanje',
@@ -1996,27 +2131,30 @@ Ako kasnije želite da uklonite stranicu sa vašeg spiska praćenih članaka, kl
'enotif_lastvisited' => 'Pogledajte $1 za sve izmjene od vaše posljednje posjete.',
'enotif_lastdiff' => 'Vidi $1 da pregledate ovu promjenu.',
'enotif_anon_editor' => 'anonimni korisnik $1',
-'enotif_body' => 'Dragi $WATCHINGUSERNAME,
+'enotif_body' => 'Poštovani $WATCHINGUSERNAME,
{{SITENAME}} strana $PAGETITLE je bila $CHANGEDORCREATED $PAGEEDITDATE od strane $PAGEEDITOR,
-pogledajte {{fullurl:$PAGETITLE}} za trenutnu verziju.
+pogledajte $PAGETITLE_URL za trenutnu verziju.
$NEWPAGE
-Rezime editora: $PAGESUMMARY $PAGEMINOREDIT
+Sažetak editora: $PAGESUMMARY $PAGEMINOREDIT
Kontaktirajte editora:
-pošta {{fullurl:Special:Emailuser|target=$PAGEEDITOR}}
-viki {{fullurl:User:$PAGEEDITOR}}
+pošta: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
Neće biti drugih obaviještenja u slučaju daljih izmjena ukoliko ne posjetite ovu stranu.
-Takođe možete da resetujete zastavice za obaviještenja za sve Vaše praćene stranice na vašem spisku praćenenih članaka.
+Također možete da resetujete zastavice za obaviještenja za sve Vaše praćene stranice na vašem spisku praćenih članaka.
Vaš prijateljski {{SITENAME}} sistem obaviještavanja
--
-Da promjenite podešavanja vezana za spisak praćenenih članaka posjetite
-{{fullurl:Special:Watchlist|edit=yes}}
+Da promjenite podešavanja vezana za spisak praćenih članaka posjetite
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Da obrišete stranicu iz Vašeg spiska praćenja posjetite
+$UNWATCHURL
Fidbek i dalja pomoć:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2030,10 +2168,11 @@ Fidbek i dalja pomoć:
'exblank' => 'stranica je bila prazna',
'delete-confirm' => 'Brisanje "$1"',
'delete-legend' => 'Obriši',
-'historywarning' => 'Upozorenje: Stranica koju želite da obrišete ima historiju:',
+'historywarning' => "'''Upozorenje''': Stranica koju želite da obrišete ima historiju sa otprilike $1 {{PLURAL:$1|revizijom|revizije|revizija}}:",
'confirmdeletetext' => 'Brisanjem ćete obrisati stranicu ili sliku zajedno sa historijom iz baze podataka, ali će se iste moći vratiti kasnije.
Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].',
'actioncomplete' => 'Akcija završena',
+'actionfailed' => 'Akcija nije uspjela',
'deletedtext' => 'Članak "<nowiki>$1</nowiki>" je obrisan.
Pogledajte $2 za zapis o skorašnjim brisanjima.',
'deletedarticle' => 'obrisan "[[$1]]"',
@@ -2057,19 +2196,20 @@ Njeno brisanje može dovesti do opterećenja operacione baze na {{SITENAME}};
nastavite s oprezom.',
# Rollback
-'rollback' => 'Vrati izmjene',
-'rollback_short' => 'Vrati',
-'rollbacklink' => 'vrati',
-'rollbackfailed' => 'Vraćanje nije uspjelo',
-'cantrollback' => 'Ne može se vratiti izmjena; posljednji autor je ujedno i jedini.',
-'alreadyrolled' => 'Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmjenio ili vratio članak.
+'rollback' => 'Vrati izmjene',
+'rollback_short' => 'Vrati',
+'rollbacklink' => 'vrati',
+'rollbackfailed' => 'Vraćanje nije uspjelo',
+'cantrollback' => 'Ne može se vratiti izmjena; posljednji autor je ujedno i jedini.',
+'alreadyrolled' => 'Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmjenio ili vratio članak.
Posljednja izmjena je bila od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Sažetak izmjene je bio: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Poništene izmjene korisnika $1;
+'editcomment' => "Sažetak izmjene je bio: \"''\$1''\".",
+'revertpage' => 'Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]',
+'revertpage-nouser' => 'Vraćene izmjene korisnika (korisničko ime uklonjeno) na posljednju reviziju koju je načinio [[User:$1|$1]]',
+'rollback-success' => 'Poništene izmjene korisnika $1;
vraćeno na posljednju verziju koju je sačuvao $2.',
-'sessionfailure' => "Izgleda da postoji problem sa vašom sesijom; ova akcija je otkazana kao prevencija protiv napadanja sesija. Kliknite \"back\" (''nazad'') i osvježite stranicu sa koje ste došli, i opet pokušajte.",
+'sessionfailure' => "Izgleda da postoji problem sa vašom sesijom; ova akcija je otkazana kao prevencija protiv napadanja sesija. Kliknite \"back\" (''nazad'') i osvježite stranicu sa koje ste došli, i opet pokušajte.",
# Protect
'protectlogpage' => 'Protokol zaključavanja',
@@ -2085,7 +2225,7 @@ vraćeno na posljednju verziju koju je sačuvao $2.',
'protectexpiry' => 'Ističe:',
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Upisani vremenski rok je u prošlosti.',
-'protect-unchain' => 'Deblokirajte dozvole premještanja',
+'protect-unchain-permissions' => 'Otključaj daljnje opcije zaštite',
'protect-text' => "Ovdje možete gledati i izmjeniti level zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ne možete promijeniti nivo zaštite dok ste blokirani.
Ovo su trenutne postavke za stranicu '''$1''':",
@@ -2115,7 +2255,7 @@ Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenos
** Ne produktivni rat izmjena
** Stranica velikog prometa',
'protect-edit-reasonlist' => 'Uredi razloge zaštićavanja',
-'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite',
'restriction-type' => 'Dopuštenje:',
'restriction-level' => 'Stepen ograničenja:',
'minimum-size' => 'Najmanja veličina',
@@ -2156,6 +2296,7 @@ Možda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arh
'undelete-nodiff' => 'Nije pronađena ranija revizija.',
'undeletebtn' => 'Vrati',
'undeletelink' => 'pogledaj/vrati',
+'undeleteviewlink' => 'pogledaj',
'undeletereset' => 'Očisti',
'undeleteinvert' => 'Izmijeni odabir',
'undeletecomment' => 'Razlog:',
@@ -2195,19 +2336,23 @@ $1',
'contributions-title' => 'Doprinosi korisnika $1',
'mycontris' => 'Moj doprinos',
'contribsub2' => 'Za $1 ($2)',
-'nocontribs' => 'Nisu nađene promjene koje zadovoljavaju ove uslove.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nisu nađene promjene koje zadovoljavaju ove uslove.',
'uctop' => ' (vrh)',
'month' => 'Od mjeseca (i ranije):',
'year' => 'Od godine (i ranije):',
-'sp-contributions-newbies' => 'Prikaži samo doprinose novih korisnika',
-'sp-contributions-newbies-sub' => 'Za nove korisnike',
-'sp-contributions-newbies-title' => 'Doprinosi novih korisnika',
-'sp-contributions-blocklog' => 'Evidencija blokiranja',
-'sp-contributions-logs' => 'zapisnici',
-'sp-contributions-search' => 'Pretraga doprinosa',
-'sp-contributions-username' => 'IP adresa ili korisničko ime:',
-'sp-contributions-submit' => 'Traži',
+'sp-contributions-newbies' => 'Prikaži samo doprinose novih korisnika',
+'sp-contributions-newbies-sub' => 'Za nove korisnike',
+'sp-contributions-newbies-title' => 'Doprinosi novih korisnika',
+'sp-contributions-blocklog' => 'Evidencija blokiranja',
+'sp-contributions-deleted' => 'obrisani doprinosi korisnika',
+'sp-contributions-logs' => 'zapisnici',
+'sp-contributions-talk' => 'razgovor',
+'sp-contributions-userrights' => 'postavke korisničkih prava',
+'sp-contributions-blocked-notice' => 'Ovaj korisnik je trenutno blokiran. Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
+'sp-contributions-search' => 'Pretraga doprinosa',
+'sp-contributions-username' => 'IP adresa ili korisničko ime:',
+'sp-contributions-submit' => 'Traži',
# What links here
'whatlinkshere' => 'Šta je povezano ovdje',
@@ -2230,6 +2375,7 @@ $1',
# Block/unblock
'blockip' => 'Blokiraj korisnika',
+'blockip-title' => 'Blokiranje korisnika',
'blockip-legend' => 'Blokiranje korisnika',
'blockiptext' => 'Upotrebite donji upitnik da biste uklonili prava pisanja sa određene IP adrese ili korisničkog imena. Ovo bi trebalo da bude urađeno samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. Unesite konkretan razlog ispod (na primjer, navodeći koje stranice su vandalizovane).',
'ipaddress' => 'IP adresa:',
@@ -2251,7 +2397,7 @@ $1',
'ipbenableautoblock' => 'Automatski blokiraj zadnju IP adresu koju je koristio ovaj korisnik i sve druge IP adrese s kojih je on pokušao uređivati',
'ipbsubmit' => 'Blokirajte ovog korisnika',
'ipbother' => 'Ostali period:',
-'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite',
'ipbotheroption' => 'ostalo',
'ipbotherreason' => 'Ostali/dodatni razlozi:',
'ipbhidename' => 'Sakrij korisničko ime iz uređivanja i spiskova',
@@ -2282,9 +2428,11 @@ ili korisničkom imenu.',
'ipblocklist-sh-tempblocks' => '$1 privremene blokade',
'ipblocklist-sh-addressblocks' => '$1 pojedinačne IP blokade',
'ipblocklist-submit' => 'Traži',
+'ipblocklist-localblock' => 'Lokalna blokada',
+'ipblocklist-otherblocks' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
'blocklistline' => '$1, $2 blokirao korisnika $3 ($4)',
'infiniteblock' => 'nije ograničena',
-'expiringblock' => 'ističe $1',
+'expiringblock' => 'ističe dana $1 u $2',
'anononlyblock' => 'samo anonimni korisnici',
'noautoblockblock' => 'automatsko blokiranje onemogućeno',
'createaccountblock' => 'blokirano pravljenje računa',
@@ -2299,7 +2447,8 @@ ili korisničkom imenu.',
'autoblocker' => 'Automatski ste blokirani jer dijelite IP adresu sa "[[User:$1|$1]]".
Razlog za blokiranje je korisnika $1 je: \'\'$2\'\'',
'blocklogpage' => 'Evidencija blokiranja',
-'blocklog-fulllog' => 'Potpuni spisak zapisa blokiranja',
+'blocklog-showlog' => 'Ovaj korisnik je ranije blokiran. Zapisnik blokiranja je prikazan ispod kao referenca:',
+'blocklog-showsuppresslog' => 'Ovaj korisnik je ranije blokiran i sakriven. Zapisnik sakrivanja je prikazan ispod kao referenca:',
'blocklogentry' => 'je blokirao [[$1]] sa vremenom isticanja blokade od $2 $3',
'reblock-logentry' => 'promjena postavki blokiranja za [[$1]] sa vremenom isteka u $2 $3',
'blocklogtext' => 'Ovo je historija akcija blokiranja i deblokiranja korisnika.
@@ -2320,11 +2469,13 @@ Pogledajte [[Special:IPBlockList|blokirane IP adrese]] za spisak trenutnih zabra
'ipb_already_blocked' => '"$1" je već blokiran',
'ipb-needreblock' => '== Već blokirano ==
$1 je već blokiran. Da li želite promijeniti postavke?',
+'ipb-otherblocks-header' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
'ipb_cant_unblock' => 'Greška: Blokada sa ID oznakom $1 nije pronađena.
Možda je već deblokirana.',
'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može se deblokirati.
Međutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.',
'ip_range_invalid' => 'Netačan raspon IP adresa.',
+'ip_range_toolarge' => 'Nisu dopuštene blokade veće od /$1.',
'blockme' => 'Blokiraj me',
'proxyblocker' => 'Bloker proksija',
'proxyblocker-disabled' => 'Ova funkcija je onemogućena.',
@@ -2334,6 +2485,7 @@ Međutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.',
'sorbs_create_account_reason' => 'Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.
Ne možete napraviti račun',
'cant-block-while-blocked' => 'Ne možete blokirati druge korisnike dok ste blokirani.',
+'cant-see-hidden-user' => 'Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.',
# Developer tools
'lockdb' => 'Zaključajte bazu',
@@ -2387,6 +2539,7 @@ drastična i neočekivana promjena za korisnike.",
U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
'movearticle' => 'Premjestite stranicu',
+'moveuserpage-warning' => "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
'movenologin' => 'Niste prijavljeni',
'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.',
'movenotallowed' => 'Nemate dopuštenje za premještanje stranica.',
@@ -2397,7 +2550,7 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
'move-watch' => 'Prati ovu stranicu',
'movepagebtn' => 'premjestite stranicu',
'pagemovedsub' => 'Premještanje uspjelo',
-'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'',
'movepage-moved-redirect' => 'Preusmjerenje je napravljeno.',
'movepage-moved-noredirect' => 'Pravljenje preusmjerenja je onemogućeno.',
'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno. Molimo Vas da izaberete drugo ime.',
@@ -2439,6 +2592,14 @@ Da li je želite obrisati kako bi ste mogli izvršiti premještanje?',
'imageinvalidfilename' => 'Ciljno ime datoteke nije valjano',
'fix-double-redirects' => 'Ažuriraj sva preusmjerenja koja vode ka originalnom naslovu',
'move-leave-redirect' => 'Ostavi preusmjerenje',
+'protectedpagemovewarning' => "'''Upozorenje:''' Ova stranica je zaključana tako da je mogu premještati samo korisnici sa ovlastima administratora.
+Posljednja stavka zapisnika je prikazana ispod kao referenca:",
+'semiprotectedpagemovewarning' => "'''Napomena:''' Ova stranica je zaključana tako da je mogu uređivati samo registrovani korisnici.
+Posljednja stavka zapisnika je prikazana ispod kao referenca:",
+'move-over-sharedrepo' => '== Datoteka postoji ==
+[[:$1]] postoji na dijeljenom repozitorijumu. Premještanje datoteke na ovaj naslov će prepisati dijeljenu datoteku.',
+'file-exists-sharedrepo' => 'Ime datoteke koje ste odabrali je već korišteno u dijeljenom repozitorijumu.
+Molimo odaberite drugo ime.',
# Export
'export' => 'Izvezite stranice',
@@ -2461,15 +2622,21 @@ U drugom slučaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWi
'export-pagelinks' => 'Uključi povezane stranice do dubine od:',
# Namespace 8 related
-'allmessages' => 'Sve sistemske poruke',
-'allmessagesname' => 'Naziv',
-'allmessagesdefault' => 'Uobičajeni tekst',
-'allmessagescurrent' => 'Trenutni tekst',
-'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
+'allmessages' => 'Sve sistemske poruke',
+'allmessagesname' => 'Naziv',
+'allmessagesdefault' => 'Uobičajeni tekst',
+'allmessagescurrent' => 'Trenutni tekst',
+'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
Molimo posjetite [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [http://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
-'allmessagesnotsupportedDB' => 'Ova stranica ne može biti korištena jer je <i>wgUseDatabaseMessages</i> isključen.',
-'allmessagesfilter' => 'Filter naziva poruka:',
-'allmessagesmodified' => 'Prikaži samo izmijenjeno',
+'allmessagesnotsupportedDB' => 'Ova stranica ne može biti korištena jer je <i>wgUseDatabaseMessages</i> isključen.',
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter po stanju podešavanja:',
+'allmessages-filter-unmodified' => 'Neizmijenjeno',
+'allmessages-filter-all' => 'Sve',
+'allmessages-filter-modified' => 'Izmijenjeno',
+'allmessages-prefix' => 'Filter po prefiksu:',
+'allmessages-language' => 'Jezik:',
+'allmessages-filter-submit' => 'Idi',
# Thumbnails
'thumbnail-more' => 'uvećajte',
@@ -2479,6 +2646,9 @@ Molimo posjetite [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizac
'djvu_no_xml' => 'Za XML-datoteku se ne može pozvati DjVu datoteka',
'thumbnail_invalid_params' => 'Pogrešne postavke smanjenog prikaza',
'thumbnail_dest_directory' => 'Ne može se napraviti odredišni folder',
+'thumbnail_image-type' => 'Tip slike nije podržan',
+'thumbnail_gd-library' => 'Nekompletna konfiguracija GD biblioteke: nedostaje funkcija $1',
+'thumbnail_image-missing' => 'Datoteka ne dostaje: $1',
# Special:Import
'import' => 'Uvoz stranica',
@@ -2546,6 +2716,7 @@ Nedostaje privremeni folder.',
'tooltip-ca-viewsource' => 'Ovaj članak je zaključan. Možete ga samo vidjeti ili kopirati kod.',
'tooltip-ca-history' => 'Prethodne verzije ove stranice.',
'tooltip-ca-protect' => 'Zaštitite stranicu od budućih izmjena',
+'tooltip-ca-unprotect' => 'Odštiti ovu stranicu',
'tooltip-ca-delete' => 'Izbrišite ovu stranicu',
'tooltip-ca-undelete' => 'Vratite izmjene koje su načinjene prije brisanja stranice',
'tooltip-ca-move' => 'Pomjerite stranicu',
@@ -2556,6 +2727,7 @@ Nedostaje privremeni folder.',
'tooltip-search-fulltext' => 'Pretraga stranica sa ovim tekstom',
'tooltip-p-logo' => 'Glavna stranica',
'tooltip-n-mainpage' => 'Posjetite početnu stranicu',
+'tooltip-n-mainpage-description' => 'Posjetite početnu stranicu',
'tooltip-n-portal' => 'O projektu, šta možete da uradite, gdje se šta nalazi',
'tooltip-n-currentevents' => 'Podaci o onome na čemu se trenutno radi',
'tooltip-n-recentchanges' => 'Spisak nedavnih izmjena na wiki.',
@@ -2625,10 +2797,12 @@ Dopušta unos razloga u sažetak.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}',
'siteuser' => '{{SITENAME}} korisnik $1',
-'lastmodifiedatby' => 'Ovu stranicu je posljednji put promjenio $3, u $2, $1', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonimni korisnik $1',
+'lastmodifiedatby' => 'Ovu stranicu je posljednji put promjenio $3, u $2, $1',
'othercontribs' => 'Bazirano na radu od strane korisnika $1.',
'others' => 'ostali',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|korisnik|korisnika}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonimni korisnik|anonimni korisnici}} $1',
'creditspage' => 'Autori stranice',
'nocredits' => 'Autori ove stranice nisu navedeni.',
@@ -2667,11 +2841,22 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
'mw_math_modern' => 'Preporučeno za moderne preglednike',
'mw_math_mathml' => 'MathML ako je moguće (eksperimentalno)',
+# Math errors
+'math_failure' => 'Neuspjeh pri parsiranju',
+'math_unknown_error' => 'nepoznata greška',
+'math_unknown_function' => 'nepoznata funkcija',
+'math_lexing_error' => 'riječnička greška',
+'math_syntax_error' => 'sintaksna greška',
+'math_image_error' => 'PNG konverzija neuspješna; provjerite tačnu instalaciju latex-a, dvips-a, gs-a i convert-a',
+'math_bad_tmpdir' => 'Ne može se napisati ili napraviti privremeni matematični direktorijum',
+'math_bad_output' => 'Ne može se napisati ili napraviti direktorijum za matematični izvještaj.',
+'math_notexvc' => 'Nedostaje izvršno texvc; molimo Vas da pogledate math/README da podesite.',
+
# Patrolling
'markaspatrolleddiff' => 'Označi kao patrolirano',
'markaspatrolledtext' => 'Označi ovaj članak kao patroliran',
'markedaspatrolled' => 'Označeno kao patrolirano',
-'markedaspatrolledtext' => 'Izabrana revizija je označena kao patrolirana.',
+'markedaspatrolledtext' => 'Izabrana revizija [[:$1]] je bila označena kao patrolirana.',
'rcpatroldisabled' => 'Patroliranje nedavnih izmjena onemogućeno',
'rcpatroldisabledtext' => 'Funkcija patroliranja nedavnih izmjena je trenutno isključena.',
'markedaspatrollederror' => 'Ne može se označiti kao patrolirano',
@@ -2701,12 +2886,9 @@ $1',
'previousdiff' => '← Starija izmjena',
'nextdiff' => 'Novija izmjena →',
-# Visual comparison
-'visual-comparison' => 'Vizuelna usporedba',
-
# Media information
'mediawarning' => "'''Upozorenje''': Ova datoteka sadrži loš kod, njegovim izvršavanjem možete da ugrozite Vaš sistem.",
-'imagemaxsize' => 'Ograniči slike na stranicama opisa datoteke na:',
+'imagemaxsize' => "Ograničenje veličine slike:<br />''(za stranice opisa datoteke)''",
'thumbsize' => 'Veličina umanjenog prikaza:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
'file-info' => '(veličina datoteke: $1, MIME tip: $2)',
@@ -2715,6 +2897,8 @@ $1',
'svg-long-desc' => '(SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3)',
'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
'show-big-image-thumb' => '<small>Veličina ovoga prikaza: $1 × $2 piksela</small>',
+'file-info-gif-looped' => 'stalno iznova',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|sličica|sličice|sličica}}',
# Special:NewFiles
'newimages' => 'Galerija novih slika',
@@ -2747,7 +2931,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Širina',
@@ -2874,14 +3058,14 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-unknowndate' => 'Nepoznat datum',
-'exif-orientation-1' => 'Normalna', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontalno preokrenuto', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotirano 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikalno preokrenuto', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotirano 90° suprotno kazaljke i vertikalno obrnuto', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotirano 90° u smijeru kazaljke', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotirano 90° u smijeru kazaljke i preokrenuto vertikalno', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotirano 90° suprotno kazaljke', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalna',
+'exif-orientation-2' => 'Horizontalno preokrenuto',
+'exif-orientation-3' => 'Rotirano 180°',
+'exif-orientation-4' => 'Vertikalno preokrenuto',
+'exif-orientation-5' => 'Rotirano 90° suprotno kazaljke i vertikalno obrnuto',
+'exif-orientation-6' => 'Rotirano 90° u smijeru kazaljke',
+'exif-orientation-7' => 'Rotirano 90° u smijeru kazaljke i preokrenuto vertikalno',
+'exif-orientation-8' => 'Rotirano 90° suprotno kazaljke',
'exif-planarconfiguration-1' => 'grubi format',
'exif-planarconfiguration-2' => 'format u ravni',
@@ -3009,7 +3193,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsmeasuremode-2' => 'dvodimenzionalno mjerenje',
'exif-gpsmeasuremode-3' => 'trodimenzionalno mjerenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometara na sat',
'exif-gpsspeed-m' => 'Milja na sat',
'exif-gpsspeed-n' => 'Čvorova',
@@ -3028,6 +3212,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'watchlistall2' => 'sve',
'namespacesall' => 'sve',
'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3050,7 +3235,7 @@ Povratna pošta: $1',
'confirmemail_subject' => 'Vikiriječnik adresa e-pošte za potvrđivanje',
'confirmemail_body' => 'Neko, vjerovatno Vi, je sa IP adrese $1 registrovao nalog "$2" sa ovom adresom e-pošte na {{SITENAME}}.
-Da potvrdite da ovaj nalog stvarno pripada vama i da aktivirate mogućnost e-pošte na {{SITENAME}}, otvorite ovu poveznicu u vašem pretraživaču:
+Da potvrdite da ovaj nalog stvarno pripada vama i da aktivirate mogućnost e-pošte na {{SITENAME}}, otvorite ovaj link u vašem pregledniku:
$3
@@ -3220,7 +3405,7 @@ Također možete [[Special:Watchlist/edit|koristiti standardni uređivač]].',
'duplicate-defaultsort' => 'Upozorenje: Postavljeni ključ sortiranja "$2" zamjenjuje raniji ključ "$1".',
# Special:Version
-'version' => 'Verzija', # Not used as normal message but as header for the special page itself
+'version' => 'Verzija',
'version-extensions' => 'Instalirana proširenja (ekstenzije)',
'version-specialpages' => 'Posebne stranice',
'version-parserhooks' => 'Kuke parsera',
@@ -3234,7 +3419,7 @@ Također možete [[Special:Watchlist/edit|koristiti standardni uređivač]].',
'version-skin-extension-functions' => 'Funkcije proširenja kože',
'version-hook-name' => 'Naziv kuke',
'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => 'Verzija',
+'version-version' => '(Verzija $1)',
'version-license' => 'Licenca',
'version-software' => 'Instalirani softver',
'version-software-product' => 'Proizvod',
@@ -3315,4 +3500,15 @@ Unesite ime datoteke bez "{{ns:file}}:" prefiksa.',
'dberr-outofdate' => 'Zapamtite da njihovi indeksi našeg sadržaja ne moraju uvijek biti ažurni.',
'dberr-cachederror' => 'Slijedeći tekst je keširana kopija zahtjevane stranice i možda nije potpuno ažurirana.',
+# HTML forms
+'htmlform-invalid-input' => 'Postoje određeni problemi s Vašim unosom',
+'htmlform-select-badoption' => 'Vrijednost koju ste naveli nije valjana opcija.',
+'htmlform-int-invalid' => 'Vrijednost koju ste naveli nije cijeli broj.',
+'htmlform-float-invalid' => 'Vrijednost koju ste unijeli nije broj.',
+'htmlform-int-toolow' => 'Vrijednost koju ste naveli je ispod minimuma od $1',
+'htmlform-int-toohigh' => 'Vrijednost koju ste naveli je iznad maksimuma od $1',
+'htmlform-submit' => 'Pošalji',
+'htmlform-reset' => 'Vrati izmjene',
+'htmlform-selectorother-other' => 'Ostalo',
+
);
diff --git a/languages/messages/MessagesBug.php b/languages/messages/MessagesBug.php
index 9c33d965..7c3d19df 100644
--- a/languages/messages/MessagesBug.php
+++ b/languages/messages/MessagesBug.php
@@ -58,9 +58,16 @@ $messages = array(
'category_header' => 'Leppa rilaleŋ kategori "$1"',
'subcategories' => 'Subkategori',
-'about' => 'Atajangeng',
-'article' => 'Lontara',
-'cancel' => 'Rusa',
+'about' => 'Atajangeng',
+'article' => 'Lontara',
+'cancel' => 'Rusa',
+'mypage' => "Leppana iya'",
+'mytalk' => 'Bicarana iyya',
+'anontalk' => 'Bicarana IP édé',
+'navigation' => 'Navigasi',
+'and' => '&#32;na',
+
+# Cologne Blue skin
'qbfind' => 'Assapparang',
'qbbrowse' => 'Berowoso',
'qbedit' => 'Padécéŋ',
@@ -68,14 +75,8 @@ $messages = array(
'qbpageinfo' => 'Konteks',
'qbmyoptions' => "Leppana iya'",
'qbspecialpages' => 'Leppa spésiala',
-'mypage' => "Leppana iya'",
-'mytalk' => 'Bicarana iyya',
-'anontalk' => 'Bicarana IP édé',
-'navigation' => 'Navigasi',
-'and' => '&#32;na',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Éro',
'returnto' => 'Lisu ri $1.',
@@ -127,8 +128,6 @@ $messages = array(
'disclaimers' => 'Diseklaima',
'edithelp' => 'Paŋinriŋ mapadécéŋ',
'edithelppage' => 'Help:Mapadécéŋ',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Lise',
'mainpage' => 'Leppa Indoë',
'mainpage-description' => 'Leppa Indoë',
@@ -171,8 +170,6 @@ $messages = array(
'virus-unknownscanner' => "Antivirus dé' riisseŋ:",
# Login and logout pages
-'logouttitle' => 'Log maessu papaké',
-'loginpagetitle' => 'Log mattama papaké',
'yourname' => 'Aseŋ papaké:',
'yourpassword' => 'Pasewodo:',
'login' => 'log attama',
@@ -186,10 +183,6 @@ $messages = array(
'createaccount' => 'Ebbu akun',
'gotaccount' => "Purani eŋka akun? '''$1'''.",
'gotaccountlink' => 'Log attama',
-'youremail' => 'E-mail:',
-'username' => 'Aseŋ papaké:',
-'uid' => 'ID papaké:',
-'email' => 'E-mail',
'loginerror' => 'Éro log attama',
'mailmypassword' => 'E-mail pasewodo baru',
@@ -218,14 +211,13 @@ $messages = array(
'previousrevision' => '←Revisi riolo',
'currentrevisionlink' => 'Revisi tannapa',
'page_first' => 'séuwani',
-'deletedrev' => '[ripeddé]',
'histfirst' => 'Poŋ loa',
'histlast' => 'Poŋ nappa',
'historysize' => '($1 {{PLURAL:$1|bita|bita}})',
'historyempty' => '(kapa)',
# Revision feed
-'history-feed-item-nocomment' => '$1 ri $2', # user at time
+'history-feed-item-nocomment' => '$1 ri $2',
# Revision deletion
'rev-deleted-comment' => '(komentar ripeddé)',
@@ -243,41 +235,30 @@ $messages = array(
'revdelete-hid' => 'tapo $1',
# Diffs
-'editundo' => 'undo',
-'diff-movedto' => 'naésu ri $1',
-'diff-changedto' => 'naséllé ri $1',
-'diff-movedoutof' => 'naéssu polé $1',
-'diff-removed' => '$1 ripeddéni',
-'diff-changedfrom' => 'naséllé polé $1',
-'diff-src' => 'sumber',
-'diff-with' => '&#32;sibawa $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;na $1 $2',
-'diff-height' => 'lampé',
-'diff-input' => "séuwa '''input'''",
-'diff-a' => "séuwa '''linke'''",
-'diff-i' => "'''italik'''",
-'diff-b' => "'''umpek'''",
-'diff-strong' => "'''terek'''",
-'diff-big' => "'''loppo'''",
-'diff-del' => "'''ripeddé'''",
+'editundo' => 'undo',
# Search results
'searchsubtitle' => "Masappa iko '''[[:$1]]'''",
'searchsubtitleinvalid' => "Massappa iko '''$1'''",
-'viewprevnext' => 'Ita ($1 ) ($2) ($3)',
+'viewprevnext' => 'Ita ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Lise',
'search-redirect' => '(redirect $1)',
+# Quickbar
+'qbsettings-none' => 'Dégaga',
+
# Preferences page
'mypreferences' => 'Bérékkeŋeŋna iyya',
'prefsnologin' => "Déppa ma'log attama'",
-'qbsettings-none' => 'Dégaga',
'prefs-watchlist' => 'Watchlist',
'prefs-misc' => 'Misc',
'saveprefs' => 'Taro',
-'textboxsize' => 'Mapadécéŋ',
+'prefs-editing' => 'Mapadécéŋ',
'searchresultshead' => 'Masappa',
+'youremail' => 'E-mail:',
+'username' => 'Aseŋ papaké:',
+'uid' => 'ID papaké:',
+'email' => 'E-mail',
# Groups
'group-sysop' => 'Puŋgawa',
@@ -305,7 +286,9 @@ $messages = array(
'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Pappakapinra terkait',
+'recentchangeslinked' => 'Pappakapinra terkait',
+'recentchangeslinked-feed' => 'Pappakapinra terkait',
+'recentchangeslinked-toolbox' => 'Pappakapinra terkait',
# Upload
'upload' => 'Lureng berkas',
@@ -315,6 +298,7 @@ $messages = array(
'listfiles_name' => 'Aseŋ',
# File description page
+'file-anchor-link' => 'Rapang',
'filehist-user' => 'Papaké',
'filehist-dimensions' => 'Dimensi',
'imagelinks' => 'Liŋke',
@@ -388,6 +372,8 @@ Apak ida ronnak mappedde halamang édé ri daftar jagaan, klik \"Mangedda jaga\"
# Namespace form on various pages
'blanknamespace' => '(Utama)',
+'sp-contributions-talk' => 'Bicara',
+
# What links here
'whatlinkshere' => 'Pranala ri halamang édé',
'whatlinkshere-page' => 'Leppa:',
diff --git a/languages/messages/MessagesCa.php b/languages/messages/MessagesCa.php
index 2ba19f97..389b10fd 100644
--- a/languages/messages/MessagesCa.php
+++ b/languages/messages/MessagesCa.php
@@ -16,6 +16,7 @@
* @author McDutchie
* @author Pasqual (ca)
* @author Paucabot
+ * @author PerroVerd
* @author Pérez
* @author Qllach
* @author SMP
@@ -209,6 +210,7 @@ $messages = array(
'tog-enotifminoredits' => "Notifica'm per correu també en casos d'edicions menors",
'tog-enotifrevealaddr' => "Mostra la meua adreça electrònica en els missatges d'avís per correu",
'tog-shownumberswatching' => "Mostra el nombre d'usuaris que hi vigilen",
+'tog-oldsig' => 'Previsualització de la signatura:',
'tog-fancysig' => 'Tractar la signatura com a text wiki (sense enllaç automàtic)',
'tog-externaleditor' => "Utilitza per defecte un editor extern (opció per a experts, requereix la configuració adient de l'ordinador)",
'tog-externaldiff' => "Utilitza per defecte un altre visualitzador de diferències (opció per a experts, requereix la configuració adient de l'ordinador)",
@@ -231,6 +233,13 @@ $messages = array(
'underline-never' => 'Mai',
'underline-default' => 'Configuració per defecte del navegador',
+# Font style option in Special:Preferences
+'editfont-style' => "Editeu l'estil de la lletra:",
+'editfont-default' => 'Per defecte del navegador',
+'editfont-monospace' => 'Font monoespaiada',
+'editfont-sansserif' => 'Font de pal sec',
+'editfont-serif' => 'Lletra amb gràcia',
+
# Dates
'sunday' => 'diumenge',
'monday' => 'dilluns',
@@ -290,7 +299,7 @@ $messages = array(
'category-media-header' => 'Contingut multimèdia en la categoria «$1»',
'category-empty' => "''Aquesta categoria no té cap pàgina ni fitxer.''",
'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categories ocultes}}',
-'hidden-category-category' => 'Categories ocultes', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categories ocultes',
'category-subcat-count' => "{{PLURAL:$2|Aquesta categoria només té la següent subcategoria.|Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}, d'un total de $2.}}",
'category-subcat-count-limited' => 'Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}.',
'category-article-count' => "{{PLURAL:$2|Aquesta categoria només té la següent pàgina.|{{PLURAL:$1|La següent pàgina és|Les següents $1 pàgines són}} dins d'aquesta categoria, d'un total de $2.}}",
@@ -298,6 +307,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Aquesta categoria només té el següent fitxer.|{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins d'aquesta categoria, d'un total de $2.}}",
'category-file-count-limited' => '{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins la categoria actual.',
'listingcontinuesabbrev' => ' cont.',
+'index-category' => 'Pàgines indexades',
+'noindex-category' => 'Pàgines no indexades',
'mainpagetext' => "'''El programari del MediaWiki s'ha instaŀlat correctament.'''",
'mainpagedocfooter' => "Consulteu la [http://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.
@@ -308,10 +319,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ PMF del MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]",
-'about' => 'Quant a',
-'article' => 'Pàgina de contingut',
-'newwindow' => '(obre en una nova finestra)',
-'cancel' => 'Anuŀla',
+'about' => 'Quant a',
+'article' => 'Pàgina de contingut',
+'newwindow' => '(obre en una nova finestra)',
+'cancel' => 'Anuŀla',
+'moredotdotdot' => 'Més...',
+'mypage' => 'Pàgina personal',
+'mytalk' => 'Discussió',
+'anontalk' => "Discussió d'aquesta IP",
+'navigation' => 'Navegació',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Cerca',
'qbbrowse' => 'Navega',
'qbedit' => 'Modifica',
@@ -319,15 +338,35 @@ $messages = array(
'qbpageinfo' => 'Informació de pàgina',
'qbmyoptions' => 'Pàgines pròpies',
'qbspecialpages' => 'Pàgines especials',
-'moredotdotdot' => 'Més...',
-'mypage' => 'Pàgina personal',
-'mytalk' => 'Discussió',
-'anontalk' => "Discussió d'aquesta IP",
-'navigation' => 'Navegació',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metadades:',
+'faq' => 'PMF',
+'faqpage' => 'Project:PMF',
+
+# Vector skin
+'vector-action-addsection' => 'Nova secció',
+'vector-action-delete' => 'Esborra',
+'vector-action-move' => 'Reanomena',
+'vector-action-protect' => 'Protegeix',
+'vector-action-undelete' => 'Restaura',
+'vector-action-unprotect' => 'Desprotegeix',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Ajuda',
+'vector-namespace-image' => 'Fitxer',
+'vector-namespace-main' => 'Pàgina',
+'vector-namespace-media' => 'Pàgina de fitxer',
+'vector-namespace-mediawiki' => 'Missatge',
+'vector-namespace-project' => 'Pàgina del projecte',
+'vector-namespace-special' => 'Pàgina especial',
+'vector-namespace-talk' => 'Discussió',
+'vector-namespace-template' => 'Plantilla',
+'vector-namespace-user' => "Pàgina d'usuari",
+'vector-view-create' => 'Inicia',
+'vector-view-edit' => 'Modifica',
+'vector-view-history' => "Mostra l'historial",
+'vector-view-view' => 'Mostra',
+'vector-view-viewsource' => 'Mostra la font',
+'actions' => 'Accions',
+'namespaces' => 'Espais de noms',
+'variants' => 'Variants',
'errorpagetitle' => 'Error',
'returnto' => 'Torna cap a $1.',
@@ -377,18 +416,22 @@ $messages = array(
'otherlanguages' => 'En altres llengües',
'redirectedfrom' => "(S'ha redirigit des de: $1)",
'redirectpagesub' => 'Pàgina de redirecció',
-'lastmodifiedat' => 'Darrera modificació de la pàgina: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Darrera modificació de la pàgina: $2, $1.',
'viewcount' => 'Aquesta pàgina ha estat visitada {{PLURAL:$1|una vegada|$1 vegades}}.',
'protectedpage' => 'Pàgina protegida',
'jumpto' => 'Dreceres ràpides:',
'jumptonavigation' => 'navegació',
'jumptosearch' => 'cerca',
+'view-pool-error' => "Disculpeu, els servidors es troben sobrecarregats.
+Massa usuaris estan tractant d'accedir a aquesta pàgina.
+Per favor, esperau una mica abans de tornar a accedir a aquesta pàgina.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Quant al projecte {{SITENAME}}',
'aboutpage' => 'Project:Quant a',
'copyright' => "El contingut és disponible sota els termes d'una llicència $1",
-'copyrightpagename' => '{{SITENAME}}, tots els drets reservats',
'copyrightpage' => "{{ns:project}}:Drets d'autor",
'currentevents' => 'Actualitat',
'currentevents-url' => 'Project:Actualitat',
@@ -396,8 +439,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avís general',
'edithelp' => 'Ajuda',
'edithelppage' => "Help:Com s'edita una pàgina",
-'faq' => 'PMF',
-'faqpage' => 'Project:PMF',
'helppage' => 'Help:Ajuda',
'mainpage' => 'Pàgina principal',
'mainpage-description' => 'Pàgina principal',
@@ -477,10 +518,6 @@ La darrera consulta que s'ha intentat fer ha estat:
<blockquote><tt>$1</tt></blockquote>
des de la funció «<tt>$2</tt>».
L'error de retorn ha estat «<tt>$3: $4</tt>».",
-'noconnect' => "Ho sentim! Al programari wiki hi ha algun problema tècnic, i no s'ha pogut contactar amb el servidor de la base de dades. <br />
-$1",
-'nodb' => "No s'ha pogut seleccionar la base de dades $1",
-'cachederror' => 'Tot seguit és una còpia provinent de la memòria cau de la pàgina que hi heu demanat i, per això, podria no estar actualitzada.',
'laggedslavemode' => 'Avís: La pàgina podria mancar de modificacions recents.',
'readonly' => 'La base de dades es troba bloquejada',
'enterlockreason' => 'Escriviu una raó pel bloqueig, així com una estimació de quan tindrà lloc el desbloqueig',
@@ -498,6 +535,8 @@ Aviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li cla
'readonly_lag' => "La base de dades s'ha bloquejat automàticament mentre els servidors esclaus se sincronitzen amb el mestre",
'internalerror' => 'Error intern',
'internalerror_info' => 'Error intern: $1',
+'fileappenderrorread' => 'No s\'ha pogut llegir "$1" durant la inserció.',
+'fileappenderror' => 'No he pogut afegir "$1" a "$2".',
'filecopyerror' => "No s'ha pogut copiar el fitxer «$1» com «$2».",
'filerenameerror' => "No s'ha pogut reanomenar el fitxer «$1» com «$2».",
'filedeleteerror' => "No s'ha pogut eliminar el fitxer «$1».",
@@ -507,7 +546,8 @@ Aviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li cla
'unexpected' => "S'ha trobat un valor imprevist: «$1»=«$2».",
'formerror' => "Error: no s'ha pogut enviar les dades del formulari",
'badarticleerror' => 'Aquesta operació no es pot dur a terme en aquesta pàgina',
-'cannotdelete' => "No s'ha pogut esborrar la pàgina o el fitxer especificat, o potser ja ha estat esborrat per algú altre.",
+'cannotdelete' => "No s'ha pogut esborrar la pàgina o fitxer «$1».
+Potser ja ha estat esborrat per algú altre.",
'badtitle' => 'El títol no és correcte',
'badtitletext' => 'El títol de la pàgina que heu introduït no és correcte, és en blanc o conté un enllaç trencat amb un altre projecte. També podria contenir algun caràcter no acceptat als títols de pàgina.',
'perfcached' => 'Tot seguit es mostren les dades que es troben a la memòria cau, i podria no tenir els últims canvis del dia:',
@@ -539,7 +579,6 @@ Els seus motius han estat: «''$2''».",
'virus-unknownscanner' => 'antivirus desconegut:',
# Login and logout pages
-'logouttitle' => 'Fi de la sessió',
'logouttext' => "'''Heu finalitzat la vostra sessió.'''
Podeu continuar utilitzant {{SITENAME}} de forma anònima, o podeu [[Special:UserLogin|iniciar una sessió una altra vegada]] amb el mateix o un altre usuari.
@@ -548,7 +587,6 @@ Tingueu en compte que algunes pàgines poden continuar mostrant-se com si encara
S'ha creat el vostre compte.
No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITENAME}}]].",
-'loginpagetitle' => 'Inici de sessió',
'yourname' => "Nom d'usuari",
'yourpassword' => 'Contrasenya',
'yourpasswordagain' => 'Escriviu una altra vegada la contrasenya',
@@ -559,6 +597,7 @@ No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITEN
'nav-login-createaccount' => 'Inicia una sessió / crea un compte',
'loginprompt' => 'Heu de tenir les galetes habilitades per a poder iniciar una sessió a {{SITENAME}}.',
'userlogin' => 'Inicia una sessió / crea un compte',
+'userloginnocreate' => 'Inici de sessió',
'logout' => 'Finalitza la sessió',
'userlogout' => 'Finalitza la sessió',
'notloggedin' => 'No us heu identificat',
@@ -570,28 +609,8 @@ No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITEN
'createaccountmail' => 'per correu electrònic',
'badretype' => 'Les contrasenyes que heu introduït no coincideixen.',
'userexists' => 'El nom que heu entrat ja és en ús. Escolliu-ne un de diferent.',
-'youremail' => 'Correu electrònic:',
-'username' => "Nom d'usuari:",
-'uid' => "Identificador d'usuari:",
-'prefs-memberingroups' => 'Membre dels {{PLURAL:$1|grup|grups}}:',
-'yourrealname' => 'Nom real *',
-'yourlanguage' => 'Llengua:',
-'yourvariant' => 'Variant lingüística:',
-'yournick' => 'Signatura:',
-'badsig' => 'La signatura que heu inserit no és vàlida; verifiqueu les etiquetes HTML que heu emprat.',
-'badsiglength' => 'La signatura és massa llarga.
-Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
-'yourgender' => 'Sexe:',
-'gender-unknown' => 'No especificat',
-'gender-male' => 'Masculí',
-'gender-female' => 'Femení',
-'prefs-help-gender' => "Opcional: s'usa perquè el programari se us adreci amb missatges amb el gènere adient. Aquesta informació serà pública.",
-'email' => 'Correu electrònic',
-'prefs-help-realname' => "* Nom real (opcional): si escolliu donar aquesta informació serà utilitzada per a donar-vos l'atribució de la vostra feina.",
'loginerror' => "Error d'inici de sessió",
-'prefs-help-email' => "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas d'oblit de l'actual.
-També podeu contactar amb altres usuaris a través de la vostra pàgina d'usuari o de discussió, sense que així calgui revelar la vostra identitat.",
-'prefs-help-email-required' => 'Cal una adreça de correu electrònic.',
+'createaccounterror' => "No s'ha pogut crear el compte: $1",
'nocookiesnew' => "S'ha creat el compte d'usuari, però no esteu enregistrat. El projecte {{SITENAME}} usa galetes per enregistrar els usuaris. Si us plau activeu-les, per a poder enregistrar-vos amb el vostre nom d'usuari i la clau.",
'nocookieslogin' => 'El programari {{SITENAME}} utilitza galetes per enregistrar usuaris. Teniu les galetes desactivades. Activeu-les i torneu a provar.',
'noname' => "No heu especificat un nom vàlid d'usuari.",
@@ -601,10 +620,11 @@ També podeu contactar amb altres usuaris a través de la vostra pàgina d'usuar
Reviseu-ne l'ortografia (recordeu que es distingeixen les majúscules i minúscules), o [[Special:UserLogin/signup|creeu un compte d'usuari nou]].",
'nosuchusershort' => 'No hi ha cap usuari anomenat «<nowiki>$1</nowiki>». Comproveu que ho hàgiu escrit correctament.',
'nouserspecified' => "Heu d'especificar un nom d'usuari.",
+'login-userblocked' => 'Aquest usuari està bloquejat. Inici de sessió no permès.',
'wrongpassword' => 'La contrasenya que heu introduït és incorrecta. Torneu-ho a provar.',
'wrongpasswordempty' => "La contrasenya que s'ha introduït estava en blanc. Torneu-ho a provar.",
-'passwordtooshort' => "La contrasenya és massa curta o invàlida.
-Ha de tenir un mínim {{PLURAL:$1|d'un caràcter|de $1 caràcters}} i ésser diferent del vostre nom d'usuari.",
+'passwordtooshort' => "La contrasenya ha de tenir un mínim {{PLURAL:$1|d'un caràcter|de $1 caràcters}}.",
+'password-name-match' => "La contrasenya ha de ser diferent al vostre nom d'usuari.",
'mailmypassword' => "Envia'm una nova contrasenya per correu electrònic",
'passwordremindertitle' => 'Nova contrasenya temporal per al projecte {{SITENAME}}',
'passwordremindertext' => "Algú (vós mateix segurament, des de l'adreça l'IP $1) ha soŀlicitat que us enviéssim una nova contrasenya per a iniciar la sessió al projecte {{SITENAME}} ($4).
@@ -614,6 +634,7 @@ Si algú altre hagués fet aquesta soŀlicitud o si ja haguéssiu recordat la vo
no volguéssiu canviar-la, ignoreu aquest missatge i continueu utilitzant
la vostra antiga contrasenya.",
'noemail' => "No hi ha cap adreça electrònica registrada de l'usuari «$1».",
+'noemailcreate' => "Has d'indicar una adreça de correu electrònic vàlida",
'passwordsent' => "S'ha enviat una nova contrasenya a l'adreça electrònica registrada per «$1».
Inicieu una sessió després que la rebeu.",
'blocked-mailpassword' => 'La vostra adreça IP ha estat blocada. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.',
@@ -635,9 +656,11 @@ Introduïu una adreça amb un format adequat o bé buideu el camp.",
($4) amb la vostra adreça de correu electrònic. La contrasenya per a l'usuari «$2» és «$3». Hauríeu d'accedir al compte i canviar-vos aquesta contrasenya quan abans millor.
Si no hi teniu cap relació i aquest compte ha estat creat per error, simplement ignoreu el missatge.",
+'usernamehasherror' => "El nom d'usuari no pot contenir caràcters hash",
'login-throttled' => "Heu realitzat massa intents d'accés a la sessió.
Si us plau, esperi abans de tornar-ho a intentar.",
'loginlanguagelabel' => 'Llengua: $1',
+'suspicious-userlogout' => "S'ha denegat la vostra petició per tancar la sessió ja què sembla que va ser enviada per un navegador defectuós o un proxy cau.",
# Password reset dialog
'resetpass' => 'Canvia la contrasenya',
@@ -649,17 +672,13 @@ Si us plau, esperi abans de tornar-ho a intentar.",
'retypenew' => 'Torneu a escriure la nova contrasenya:',
'resetpass_submit' => 'Definiu una contrasenya i inicieu una sessió',
'resetpass_success' => "S'ha canviat la vostra contrasenya amb èxit! Ara ja podeu iniciar-hi una sessió...",
-'resetpass_bad_temporary' => 'La contrasenya temporal no és vàlida. Potser ja havíeu canviat la vostra contrasenya o heu soŀlicitat una nova contrasenya temporal.',
'resetpass_forbidden' => 'No poden canviar-se les contrasenyes',
'resetpass-no-info' => "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pàgina.",
'resetpass-submit-loggedin' => 'Canvia la contrasenya',
+'resetpass-submit-cancel' => 'Canceŀla',
'resetpass-wrong-oldpass' => 'Contrasenya actual o temporal no vàlida.
Deveu haver canviat la vostra contrasenya o demanat una nova contrasenya temporal.',
'resetpass-temp-password' => 'Contrasenya temporal:',
-'resetpass-log' => 'Registre de restabliments de contrasenya',
-'resetpass-logtext' => "A sota es mostra un registre d'usuaris als què un administrador ha restablert llur contrasenya.",
-'resetpass-logentry' => 'canviada la contrasenya de $1',
-'resetpass-comment' => 'Raó per al restabliment de la contrasenya:',
# Edit page toolbar
'bold_sample' => 'Text en negreta',
@@ -733,7 +752,6 @@ El número d'identificació de la vostra adreça IP és $3, i l'ID del bloqueig
'blockededitsource' => "El text de les vostres edicions a '''$1''' es mostra a continuació:",
'whitelistedittitle' => 'Cal iniciar una sessió per a poder modificar el contingut',
'whitelistedittext' => 'Heu de $1 per modificar pàgines.',
-'confirmedittitle' => "Cal una confirmació de l'adreça electrònica per a poder modificar el contingut",
'confirmedittext' => "Heu de confirmar la vostra adreça electrònica abans de poder modificar les pàgines. Definiu i valideu la vostra adreça electrònica a través de les vostres [[Special:Preferences|preferències d'usuari]].",
'nosuchsectiontitle' => 'No es pot trobar la secció',
'nosuchsectiontext' => 'Heu intentat editar una secció que no existeix.
@@ -755,9 +773,15 @@ Si sou ací per error, simplement cliqueu al botó «Enrere» del vostre navegad
Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres]
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.',
+'noarticletext-nopermission' => 'Actualment no hi ha text en aquesta pàgina.
+Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>.',
'userpage-userdoesnotexist' => "Atenció: El compte d'usuari «$1» no està registrat. En principi no hauríeu de crear ni editar aquesta pàgina.",
+'userpage-userdoesnotexist-view' => 'El compte d\'usuari "$1" no està registrat.',
+'blocked-notice-logextract' => "En aquests moments aquest compte d'usuari es troba blocat.
+Per més detalls, la darrera entrada del registre es mostra a continuació:",
'clearyourcache' => "'''Nota:''' Després de desar, heu de posar al dia la memòria cau del vostre navegador per veure els canvis. '''Mozilla / Firefox / Safari:''' Premeu ''Shift'' mentre cliqueu ''Actualitza'' (Reload), o premeu ''Ctrl+F5'' o ''Ctrl+R'' (''Cmd+R'' en un Mac Apple); '''Internet Explorer:''' premeu ''Ctrl'' mentre cliqueu ''Actualitza'' (Refresh), o premeu ''Ctrl+F5''; '''Konqueror:''': simplement cliqueu el botó ''Recarregar'' (Reload), o premeu ''F5''; '''Opera''' haureu d'esborrar completament la vostra memòria cau (caché) a ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Consell:''' Utilitzeu el botó «Mostra previsualització» per probar el vostre nou CSS/JS abans de desar-lo.",
+'usercssyoucanpreview' => "'''Consell:''' Utilitzeu el botó \"{{int:showpreview}}\" per probar el vostre nou CSS abans de desar-lo.",
+'userjsyoucanpreview' => "'''Consell:''' Utilitzeu el botó \"{{int:showpreview}}\" per probar el vostre nou JavaScript abans de desar-lo.",
'usercsspreview' => "'''Recordeu que esteu previsualitzant el vostre CSS d'usuari.'''
'''Encara no s'ha desat!'''",
'userjspreview' => "'''Recordeu que només estau provant/previsualitzant el vostre JavaScript, encara no ho heu desat!'''",
@@ -804,13 +828,16 @@ i no podeu desar les vostres contribucions en aquests moments. Podeu retallar i
en un fitxer de text i desar-lo més tard.'''
L'administrador que l'ha tancada n'ha donat aquesta justificació: $1",
-'protectedpagewarning' => "'''ATENCIÓ: Aquesta pàgina està bloquejada i només pot ser editada per usuaris administradors.'''",
-'semiprotectedpagewarning' => "'''Atenció:''' Aquesta pàgina està bloquejada i només pot ser editada per usuaris registrats.",
+'protectedpagewarning' => "'''ATENCIÓ: Aquesta pàgina està bloquejada i només els usuaris amb drets d'administrador la poden modificar.
+A continuació es mostra la darrera entrada del registre com a referència:",
+'semiprotectedpagewarning' => "'''Avís:''' Aquesta pàgina està bloquejada i només pot ser modificada per usuaris registrats.
+A continuació es mostra la darrera entrada del registre com a referència:",
'cascadeprotectedwarning' => "'''Atenció:''' Aquesta pàgina està protegida de forma que només la poden modificar els administradors, ja que està inclosa a {{PLURAL:$1|la següent pàgina|les següents pàgines}} amb l'opció de «protecció en cascada» activada:",
-'titleprotectedwarning' => "'''ATENCIÓ: Aquesta pàgina està protegida de tal manera que es necessiten uns [[Special:ListGroupRights|drets específics]] per a poder crear-la.'''",
-'templatesused' => 'Aquesta pàgina fa servir les següents plantilles:',
-'templatesusedpreview' => 'Plantilles usades en aquesta previsualització:',
-'templatesusedsection' => 'Plantilles usades en aquesta secció:',
+'titleprotectedwarning' => "'''ATENCIÓ: Aquesta pàgina està protegida de tal manera que es necessiten uns [[Special:ListGroupRights|drets específics]] per a poder crear-la.'''
+A continuació es mostra la darrera entrada del registre com a referència:",
+'templatesused' => 'Aquesta pàgina fa servir {{PLURAL:$1|la següent plantilla|les següents plantilles}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Plantilla usada|Plantilles usades}} en aquesta previsualització:',
+'templatesusedsection' => '{{PLURAL:$1|Plantilla usada|Plantilles usades}} en aquesta secció:',
'template-protected' => '(protegida)',
'template-semiprotected' => '(semiprotegida)',
'hiddencategories' => 'Aquesta pàgina forma part de {{PLURAL:$1|la següent categoria oculta|les següents categories ocultes}}:',
@@ -819,16 +846,18 @@ L'administrador que l'ha tancada n'ha donat aquesta justificació: $1",
'nocreatetext' => "El projecte {{SITENAME}} ha restringit la possibilitat de crear noves pàgines.
Podeu modificar les planes ja existents o bé [[Special:UserLogin|entrar en un compte d'usuari]].",
'nocreate-loggedin' => 'No teniu permisos per a crear pàgines noves.',
+'sectioneditnotsupported-title' => 'Edició de la secció no suportada',
+'sectioneditnotsupported-text' => "L'edició de la secció no està suportada en aquesta pàgina.",
'permissionserrors' => 'Error de permisos',
'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-deleted-warn' => "'''Avís: Esteu desant una pàgina que ha estat prèviament esborrada.'''
+'recreate-moveddeleted-warn' => "'''Avís: Esteu creant una pàgina que ha estat prèviament esborrada.'''
Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
-A continuació s'ofereix el registre d'esborraments de la pàgina:",
-'deleted-notice' => "Aquesta pàgina ha estat esborrada.
-A continuació us mostrem com a referència el registre d'esborraments de la pàgina.",
-'deletelog-fulllog' => 'Veure tot el registre',
+A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
+'moveddeleted-notice' => "Aquesta pàgina ha estat esborrada.
+A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
+'log-fulllog' => 'Veure tot el registre',
'edit-hook-aborted' => "Modificació avortada pel hook.
No s'ha donat cap explicació.",
'edit-gone-missing' => "No s'ha pogut actualitzar la pàgina.
@@ -851,6 +880,7 @@ Se n'han omès els arguments.",
'post-expand-template-argument-category' => "Pàgines que contenen arguments de plantilla que s'han omès",
'parser-template-loop-warning' => "S'ha detectat un bucle de plantilla: [[$1]]",
'parser-template-recursion-depth-warning' => "S'ha excedit el límit de recursivitat de plantilles ($1)",
+'language-converter-depth-warning' => "El límit de la profunditat del conversor d'idiomes ha excedit ($1)",
# "Undo" feature
'undo-success' => "Pot desfer-se la modificació. Si us plau, reviseu la comparació de sota per a assegurar-vos que és el que voleu fer; llavors deseu els canvis per a finalitzar la desfeta de l'edició.",
@@ -870,7 +900,7 @@ El motiu donat per $3 és ''$2''",
'currentrev' => 'Revisió actual',
'currentrev-asof' => 'Revisió de $1',
'revisionasof' => 'Revisió de $1',
-'revision-info' => 'Revisió de $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisió de $1; $2',
'previousrevision' => '←Versió més antiga',
'nextrevision' => 'Versió més nova→',
'currentrevisionlink' => 'Versió actual',
@@ -882,7 +912,7 @@ El motiu donat per $3 és ''$2''",
'histlegend' => 'Simbologia: (act) = diferència amb la versió actual,
(prev) = diferència amb la versió anterior, m = modificació menor',
'history-fieldset-title' => "Cerca a l'historial",
-'deletedrev' => '[suprimit]',
+'history-show-deleted' => 'Només esborrats',
'histfirst' => 'El primer',
'histlast' => 'El darrer',
'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
@@ -891,73 +921,115 @@ El motiu donat per $3 és ''$2''",
# Revision feed
'history-feed-title' => 'Historial de revisió',
'history-feed-description' => 'Historial de revisió per a aquesta pàgina del wiki',
-'history-feed-item-nocomment' => '$1 a $2', # user at time
+'history-feed-item-nocomment' => '$1 a $2',
'history-feed-empty' => 'La pàgina demanada no existeix.
Potser ha estat esborrada o reanomenada.
Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.',
# Revision deletion
-'rev-deleted-comment' => "(s'ha suprimit el comentari)",
-'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
-'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
-'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Hi poden haver més detalls al [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Com a administrador podeu veure-la; vegeu-ne més detalls al [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè una de les versions ha estat '''esborrada'''.
-Potser trobareu detalls al [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
-Potser trobareu detalls al [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+'rev-deleted-comment' => "(s'ha suprimit el comentari)",
+'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
+'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
+'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
+'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-deleted-text-unhide' => "La revisió d'aquesta pàgina ha estat '''eliminada'''.
+Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+Com a administrador encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
+'rev-suppressed-text-unhide' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+Com a administrador, encara podeu [$1 veure aquesta revisió].",
+'rev-deleted-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+Com a administrador podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+Com a administrador podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè una de les versions ha estat '''esborrada'''.
+Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè una de les revisions ha estat '''esborrada'''.",
+'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
+Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
Com a administrador encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
-'rev-delundel' => 'mostra/amaga',
-'revisiondelete' => 'Esborrar/restaurar revisions',
-'revdelete-nooldid-title' => 'La revisió objectiu no és vàlida',
-'revdelete-nooldid-text' => "No heu especificat unes revisions objectius per a realitzar aquesta
+'rev-suppressed-unhide-diff' => "Una de les revisions d'aquest diff ha estat '''esborrada'''.
+Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions]. Com a administrador, podeu seguir [$1 veient aquest diff] si voleu continuar.",
+'rev-deleted-diff-view' => "Una de les revisions d'aquest diff ha estat '''esborrada'''.
+Com a administrador pot veure aquest diff; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
+'rev-suppressed-diff-view' => "Una de les revisions d'aquest diff ha estat '''esborrada'''.
+Com a administrador pot veure aquest diff; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
+'rev-delundel' => 'mostra/amaga',
+'rev-showdeleted' => 'mostra',
+'revisiondelete' => 'Esborrar/restaurar revisions',
+'revdelete-nooldid-title' => 'La revisió objectiu no és vàlida',
+'revdelete-nooldid-text' => "No heu especificat unes revisions objectius per a realitzar aquesta
funció, la revisió especificada no existeix, o bé esteu provant d'amagar l'actual revisió.",
-'revdelete-nologtype-title' => "No s'ha donat el tipus de registre",
-'revdelete-nologtype-text' => 'No heu especificat un tipus de registre on dur a terme aquesta acció.',
-'revdelete-toomanytargets-title' => 'Massa objectius',
-'revdelete-toomanytargets-text' => 'Heu especificat massa tipus de llocs als quals aplicar aquesta acció.',
-'revdelete-nologid-title' => 'Entrada de registre no vàlida',
-'revdelete-nologid-text' => 'Heu especificat un esdeveniment del registre que no existeix o al que no se li pot aplicar aquesta funció.',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisió seleccionada|Revisions seleccionades}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Esdeveniment del registre seleccionat|Esdeveniments del registre seleccionats}}:'''",
-'revdelete-text' => "'''Les revisions esborrades es mostraran encara als historials de les pàgines i als registres, si bé part del seu contingut serà inaccessible al públic.'''
-
-Els altres administradors de {{SITENAME}} encara podran accedir al contingut amagat i restituir-lo de nou mitjançant aquesta mateixa interfície, si no hi ha cap altra restricció addicional.
-
-Si us plau, confirmeu que és això el que desitjeu fer, que enteneu les conseqüències, i que esteu fent-ho d'acord amb [[{{MediaWiki:Policy-url}}|les polítiques acordades]].",
-'revdelete-suppress-text' => "Les supressions '''només''' han de ser portades a terme en els següents casos:
+'revdelete-nologtype-title' => "No s'ha donat el tipus de registre",
+'revdelete-nologtype-text' => 'No heu especificat un tipus de registre on dur a terme aquesta acció.',
+'revdelete-nologid-title' => 'Entrada de registre no vàlida',
+'revdelete-nologid-text' => 'Heu especificat un esdeveniment del registre que no existeix o al que no se li pot aplicar aquesta funció.',
+'revdelete-no-file' => 'El fitxer especificat no existeix.',
+'revdelete-show-file-confirm' => 'Esteu segurs que voleu veure una revisió esborrada del fitxer «<nowiki>$1</nowiki>» de $2 a $3?',
+'revdelete-show-file-submit' => 'Sí',
+'revdelete-selected' => "'''{{PLURAL:$2|Revisió seleccionada|Revisions seleccionades}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Esdeveniment del registre seleccionat|Esdeveniments del registre seleccionats}}:'''",
+'revdelete-text' => "'''Les revisions esborrades es mostraran encara als historials de les pàgines i als registres, si bé part del seu contingut serà inaccessible al públic.'''
+Els altres administradors de {{SITENAME}} encara podran accedir al contingut amagat i restituir-lo de nou mitjançant aquesta mateixa interfície, si no hi ha cap altra restricció addicional.",
+'revdelete-confirm' => "Si us plau, confirmeu que és això el que desitjeu fer, que enteneu les conseqüències, i que esteu fent-ho d'acord amb [[{{MediaWiki:Policy-url}}|les polítiques acordades]].",
+'revdelete-suppress-text' => "Les supressions '''només''' han de ser portades a terme en els següents casos:
* Informació personal inapropiada
*: ''adreces personals, números de telèfon, números de la seguretat social, etc.''",
-'revdelete-legend' => 'Defineix restriccions en la visibilitat',
-'revdelete-hide-text' => 'Amaga el text de revisió',
-'revdelete-hide-name' => "Acció d'amagar i objectiu",
-'revdelete-hide-comment' => "Amaga el comentari de l'edició",
-'revdelete-hide-user' => "Amaga el nom d'usuari o la IP de l'editor",
-'revdelete-hide-restricted' => 'Suprimir les dades als administradors així com a la resta.',
-'revdelete-suppress' => 'Suprimeix també les dades dels administradors',
-'revdelete-hide-image' => 'Amaga el contingut del fitxer',
-'revdelete-unsuppress' => 'Suprimir les restriccions de les revisions restaurades',
-'revdelete-log' => 'Motiu:',
-'revdelete-submit' => 'Aplica a la revisió seleccionada',
-'revdelete-logentry' => "s'ha canviat la visibilitat de la revisió de [[$1]]",
-'logdelete-logentry' => "s'ha canviat la visibilitat de [[$1]]",
-'revdelete-success' => "'''La visibilitat d'aquesta revissió s'ha actualitzat correctament .'''",
-'logdelete-success' => "'''S'ha establert correctament la visibilitat d'aquest element.'''",
-'revdel-restore' => "Canvia'n la visibilitat",
-'pagehist' => 'Historial',
-'deletedhist' => "Historial d'esborrat",
-'revdelete-content' => 'el contingut',
-'revdelete-summary' => "el resum d'edició",
-'revdelete-uname' => "el nom d'usuari",
-'revdelete-restricted' => 'ha aplicat restriccions al administradors',
-'revdelete-unrestricted' => 'ha esborrat les restriccions per a administradors',
-'revdelete-hid' => 'ha amagat $1',
-'revdelete-unhid' => 'ha tornat a mostrar $1',
-'revdelete-log-message' => '$1 de {{PLURAL:$2|la revisió|les revisions}}
+'revdelete-legend' => 'Defineix restriccions en la visibilitat',
+'revdelete-hide-text' => 'Amaga el text de revisió',
+'revdelete-hide-image' => 'Amaga el contingut del fitxer',
+'revdelete-hide-name' => "Acció d'amagar i objectiu",
+'revdelete-hide-comment' => "Amaga el comentari de l'edició",
+'revdelete-hide-user' => "Amaga el nom d'usuari o la IP de l'editor",
+'revdelete-hide-restricted' => 'Suprimir les dades als administradors així com a la resta.',
+'revdelete-radio-same' => '(no modificar)',
+'revdelete-radio-set' => 'Si',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Suprimeix també les dades dels administradors',
+'revdelete-unsuppress' => 'Suprimir les restriccions de les revisions restaurades',
+'revdelete-log' => 'Motiu:',
+'revdelete-submit' => 'Aplica a {{PLURAL:$1|la revisió seleccionada|les revisions seleccionades}}',
+'revdelete-logentry' => "s'ha canviat la visibilitat de la revisió de [[$1]]",
+'logdelete-logentry' => "s'ha canviat la visibilitat de [[$1]]",
+'revdelete-success' => "'''La visibilitat d'aquesta revissió s'ha actualitzat correctament .'''",
+'revdelete-failure' => "'''La visibilitat de la revisió no ha pogut actualitzar-se:'''
+$1",
+'logdelete-success' => "'''S'ha establert correctament la visibilitat d'aquest element.'''",
+'logdelete-failure' => "'''No s'ha pogut establir la visibilitat del registre:'''
+$1",
+'revdel-restore' => "Canvia'n la visibilitat",
+'pagehist' => 'Historial',
+'deletedhist' => "Historial d'esborrat",
+'revdelete-content' => 'el contingut',
+'revdelete-summary' => "el resum d'edició",
+'revdelete-uname' => "el nom d'usuari",
+'revdelete-restricted' => 'ha aplicat restriccions al administradors',
+'revdelete-unrestricted' => 'ha esborrat les restriccions per a administradors',
+'revdelete-hid' => 'ha amagat $1',
+'revdelete-unhid' => 'ha tornat a mostrar $1',
+'revdelete-log-message' => '$1 de {{PLURAL:$2|la revisió|les revisions}}
$2',
-'logdelete-log-message' => "$1 per {{PLURAL:$2|l'esdeveniment|els esdeveniments}} $2",
+'logdelete-log-message' => "$1 per {{PLURAL:$2|l'esdeveniment|els esdeveniments}} $2",
+'revdelete-hide-current' => "Error en amagar l'edició del $1 a les $2: és la revisió actual.
+No es pot amagar.",
+'revdelete-show-no-access' => "Error en mostrar l'element del $1 a les $2: està marcat com a ''restringit''.
+No hi tens accés.",
+'revdelete-modify-no-access' => "Error en modificar l'element del $1 a les $2: aquest element ha estat marcat com a ''restringit''.
+No hi tens accés.",
+'revdelete-modify-missing' => "Error en modificar l'element ID $1: no figura a la base de dades!",
+'revdelete-no-change' => "'''Atenció:''' la revisió del $1 a les $2 ja té les restriccions de visibilitat sol·licitades.",
+'revdelete-concurrent-change' => "Error en modificar l'element del $1 a les $2: el seu estat sembla haver estat canviat per algú altre quan intentaves modificar-lo.
+Si us plau, verifica els registres.",
+'revdelete-only-restricted' => 'Error amagant els ítems $2, $1: no pots suprimir elements a la vista dels administradors sense seleccionar alhora una de les altres opcions de supressió.',
+'revdelete-reason-dropdown' => "*Raons d'esborrament comunes
+** Violació del copyright
+** Informació personal inapropiada
+** Informació potencialment calumniosa",
+'revdelete-otherreason' => 'Altre motiu / motiu suplementari:',
+'revdelete-reasonotherlist' => 'Altres raons',
+'revdelete-edit-reasonlist' => "Editar el motiu d'esborrament",
+'revdelete-offender' => 'Autor de la revisió:',
# Suppression log
'suppressionlog' => 'Registre de supressió',
@@ -993,67 +1065,13 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'mergelogpagetext' => "A sota hi ha una llista de les fusions més recents d'una pàgina d'historial en una altra.",
# Diffs
-'history-title' => 'Historial de versions de «$1»',
-'difference' => '(Diferència entre revisions)',
-'lineno' => 'Línia $1:',
-'compareselectedversions' => 'Compara les versions seleccionades',
-'visualcomparison' => 'Comparació visual',
-'wikicodecomparison' => 'Comparació del text en format wiki',
-'editundo' => 'desfés',
-'diff-multi' => '(Hi ha {{PLURAL:$1|una revisió intermèdia|$1 revisions intermèdies}})',
-'diff-movedto' => 'mogut a $1',
-'diff-styleadded' => 'estil $1 afegit',
-'diff-added' => '$1 afegit',
-'diff-changedto' => 'canviat a $1',
-'diff-movedoutof' => 'mogut des de $1',
-'diff-styleremoved' => 'estil $1 eliminat',
-'diff-removed' => '$1 eliminat',
-'diff-changedfrom' => 'canviat de $1',
-'diff-src' => 'origen',
-'diff-withdestination' => 'amb destinació $1',
-'diff-with' => '&#32;amb $1 $2',
-'diff-with-final' => '&#32;i $1 $2',
-'diff-width' => 'amplada',
-'diff-height' => 'alçada',
-'diff-p' => "un '''paràgraf'''",
-'diff-blockquote' => "una '''citació'''",
-'diff-h1' => "una '''capçalera (nivell 1)'''",
-'diff-h2' => "una '''capçalera (nivell 2)'''",
-'diff-h3' => "una '''capçalera (nivell 3)'''",
-'diff-h4' => "una '''capçalera (nivell 4)'''",
-'diff-h5' => "una '''capçalera (nivell 5)'''",
-'diff-pre' => "un '''bloc preformatat'''",
-'diff-div' => "una '''bloc de divisió'''",
-'diff-ul' => "una '''llista no ordenada'''",
-'diff-ol' => "una '''llista ordenada'''",
-'diff-li' => "un '''element de la llista'''",
-'diff-table' => "una '''taula'''",
-'diff-tbody' => "un '''contingut de taula'''",
-'diff-tr' => "una '''fila'''",
-'diff-td' => "una '''ceŀla'''",
-'diff-th' => "una '''capçalera'''",
-'diff-br' => "un '''salt de línia'''",
-'diff-hr' => "una '''línia horitzontal'''",
-'diff-code' => "un '''bloc de codi informàtic'''",
-'diff-dl' => "una '''llista de definicions'''",
-'diff-dt' => "un '''terme de definició'''",
-'diff-dd' => "una '''definició'''",
-'diff-input' => "un '''''input'''''",
-'diff-form' => "un '''formulari'''",
-'diff-img' => "una '''imatge'''",
-'diff-span' => "un '''''span'''''",
-'diff-a' => "un '''enllaç'''",
-'diff-i' => "'''cursiva'''",
-'diff-b' => "'''negreta'''",
-'diff-strong' => "'''fort'''",
-'diff-em' => "'''èmfasi'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''gran'''",
-'diff-del' => "'''esborrat'''",
-'diff-tt' => "'''monoespaiat'''",
-'diff-sub' => "'''subíndex'''",
-'diff-sup' => "'''superíndex'''",
-'diff-strike' => "'''barrat'''",
+'history-title' => 'Historial de versions de «$1»',
+'difference' => '(Diferència entre revisions)',
+'lineno' => 'Línia $1:',
+'compareselectedversions' => 'Compara les versions seleccionades',
+'showhideselectedversions' => 'Mostrar/ocultar les versions seleccionades',
+'editundo' => 'desfés',
+'diff-multi' => '(Hi ha {{PLURAL:$1|una revisió intermèdia|$1 revisions intermèdies}})',
# Search results
'searchresults' => 'Resultats de la cerca',
@@ -1061,28 +1079,25 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'searchresulttext' => 'Per a més informació de les cerques del projecte {{SITENAME}}, aneu a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Heu cercat '''[[:$1]]''' ([[Special:Prefixindex/$1|totes les pàgines que comencen amb «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pàgines que enllacen amb «$1»]])",
'searchsubtitleinvalid' => "Heu cercat '''$1'''",
-'noexactmatch' => "'''No hi ha cap pàgina anomenada «$1».''' Si voleu, podeu ajudar [[:$1|creant-la]].",
-'noexactmatch-nocreate' => "'''No hi ha cap pàgina amb títol «$1».'''",
'toomanymatches' => "S'han retornat masses coincidències. Proveu-ho amb una consulta diferent.",
'titlematches' => 'Coincidències de títol de la pàgina',
'notitlematches' => 'No hi ha cap coincidència de títol de pàgina',
'textmatches' => 'Coincidències de text de pàgina',
'notextmatches' => 'No hi ha cap coincidència de text de pàgina',
-'prevn' => '$1 anteriors',
-'nextn' => '$1 següents',
+'prevn' => 'anteriors {{PLURAL:$1|$1}}',
+'nextn' => 'següents {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|resultat|resultats}} anteriors',
'nextn-title' => '$1 {{PLURAL:$1|resultat|resultats}} següents',
'shown-title' => 'Mostra $1 {{PLURAL:$1|resultat|resultats}} per pàgina',
-'viewprevnext' => 'Vés a ($1) ($2) ($3).',
+'viewprevnext' => 'Vés a ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opcions de cerca',
'searchmenu-exists' => "'''Hi ha una pàgina anomenada «[[:$1]]» en aquest wiki'''",
'searchmenu-new' => "'''Creeu la pàgina «[[:$1]]» en aquest wiki!'''",
'searchhelp-url' => 'Help:Ajuda',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mostra pàgines amb aquest prefix]]',
'searchprofile-articles' => 'Pàgines de contingut',
-'searchprofile-articles-and-proj' => 'Pàgines de contingut i de projecte',
-'searchprofile-project' => 'Pàgines del projecte',
-'searchprofile-images' => 'Fitxers',
+'searchprofile-project' => "Pàgines d'ajuda i de projecte",
+'searchprofile-images' => 'Multimèdia',
'searchprofile-everything' => 'Tot',
'searchprofile-advanced' => 'Avançat',
'searchprofile-articles-tooltip' => 'Cerca a $1',
@@ -1090,8 +1105,6 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'searchprofile-images-tooltip' => 'Cerca fitxers',
'searchprofile-everything-tooltip' => "Cerca tot tipus de contingut (s'hi inclouen pàgines de discussió)",
'searchprofile-advanced-tooltip' => 'Cerca als espais de noms predefinits',
-'prefs-search-nsdefault' => 'Cerca usant paràmetres per defecte:',
-'prefs-search-nscustom' => 'Cerca espais predefinits:',
'search-result-size' => '$1 ({{PLURAL:$2|1 paraula|$2 paraules}})',
'search-result-score' => 'Rellevància: $1%',
'search-redirect' => '(redirigit des de $1)',
@@ -1104,11 +1117,12 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'search-mwsuggest-disabled' => 'cap suggeriment',
'search-relatedarticle' => 'Relacionat',
'mwsuggest-disable' => 'Inhabilita els suggeriments en AJAX',
+'searcheverything-enable' => 'Cerca a tots els espais de noms',
'searchrelated' => 'relacionat',
'searchall' => 'tots',
'showingresults' => 'Tot seguit es {{PLURAL:$1|mostra el resultat|mostren els <b>$1</b> resultats començant pel número <b>$2</b>}}.',
'showingresultsnum' => 'Tot seguit es {{PLURAL:$3|llista el resultat|llisten els <b>$3</b> resultats començant pel número <b>$2</b>}}.',
-'showingresultstotal' => "A continuació {{PLURAL:$4|es mostra el resultat '''$1''' de '''$3'''|es mostren els resultats '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' de '''$3'''|Resultats '''$1 - $2''' de '''$3'''}} per '''$4'''",
'nonefound' => "'''Nota''': Només se cerca en alguns espais de noms per defecte. Proveu d'afegir el prefix ''all:'' a la vostra consulta per a cercar a tot el contingut (incloent-hi les pàgines de discussió, les plantilles, etc.), o feu servir l'espai de noms on vulgueu cercar com a prefix.",
'search-nonefound' => 'No hi ha resultats que coincideixin amb la cerca.',
'powersearch' => 'Cerca avançada',
@@ -1116,111 +1130,150 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'powersearch-ns' => 'Cerca als espais de noms:',
'powersearch-redir' => 'Mostra redireccions',
'powersearch-field' => 'Cerca',
+'powersearch-togglelabel' => 'Activar:',
+'powersearch-toggleall' => 'Tots',
+'powersearch-togglenone' => 'Cap',
'search-external' => 'Cerca externa',
'searchdisabled' => 'La cerca dins el projecte {{SITENAME}} està inhabilitada. Mentrestant, podeu cercar a través de Google, però tingueu en compte que la seua base de dades no estarà actualitzada.',
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Cap',
+'qbsettings-fixedleft' => "Fixa a l'esquerra",
+'qbsettings-fixedright' => 'Fixa a la dreta',
+'qbsettings-floatingleft' => "Surant a l'esquerra",
+'qbsettings-floatingright' => 'Surant a la dreta',
+
# Preferences page
-'preferences' => 'Preferències',
-'mypreferences' => 'Preferències',
-'prefs-edits' => "Nombre d'edicions:",
-'prefsnologin' => 'No heu iniciat cap sessió',
-'prefsnologintext' => 'Heu d\'estar <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} autenticats]</span> per a seleccionar les preferències d\'usuari.',
-'prefsreset' => "Les preferències han estat respostes des d'emmagatzematge.",
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Cap',
-'qbsettings-fixedleft' => "Fixa a l'esquerra",
-'qbsettings-fixedright' => 'Fixa a la dreta',
-'qbsettings-floatingleft' => "Surant a l'esquerra",
-'qbsettings-floatingright' => 'Surant a la dreta',
-'changepassword' => 'Canvia la contrasenya',
-'skin' => 'Aparença',
-'skin-preview' => 'prova',
-'math' => 'Com es mostren les fórmules',
-'dateformat' => 'Format de la data',
-'datedefault' => 'Cap preferència',
-'datetime' => 'Data i hora',
-'math_failure' => "No s'ha pogut entendre",
-'math_unknown_error' => 'error desconegut',
-'math_unknown_function' => 'funció desconeguda',
-'math_lexing_error' => 'error de lèxic',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => "Hi ha hagut una errada en la conversió cap el format PNG; verifiqueu la instaŀlació de ''latex'', ''dvips'', ''gs'' i ''convert''.",
-'math_bad_tmpdir' => 'No ha estat possible crear el directori temporal de math o escriure-hi dins.',
-'math_bad_output' => "No ha estat possible crear el directori d'eixida de math o escriure-hi dins.",
-'math_notexvc' => "No s'ha trobat el fitxer executable ''texvc''; si us plau, vegeu math/README per a configurar-lo.",
-'prefs-personal' => "Perfil d'usuari",
-'prefs-rc' => 'Canvis recents',
-'prefs-watchlist' => 'Llista de seguiment',
-'prefs-watchlist-days' => 'Nombre de dies per mostrar en la llista de seguiment:',
-'prefs-watchlist-days-max' => '(màxim set dies)',
-'prefs-watchlist-edits' => 'Nombre de modificacions a mostrar en una llista estesa de seguiment:',
-'prefs-watchlist-edits-max' => '(nombre màxim: 1000)',
-'prefs-misc' => 'Altres preferències',
-'prefs-resetpass' => 'Canvia la contrasenya',
-'saveprefs' => 'Desa les preferències',
-'resetprefs' => 'Esborra els canvis no guardats',
-'restoreprefs' => 'Restaura les preferències per defecte',
-'textboxsize' => "Caixa d'edició",
-'prefs-edit-boxsize' => "Mida de la finestra d'edició.",
-'rows' => 'Files',
-'columns' => 'Columnes',
-'searchresultshead' => 'Preferències de la cerca',
-'resultsperpage' => 'Resultats a mostrar per pàgina',
-'contextlines' => 'Línies a mostrar per resultat',
-'contextchars' => 'Caràcters de context per línia',
-'stub-threshold' => 'Límit per a formatar l\'enllaç com <a href="#" class="stub">esborrany</a> (en octets):',
-'recentchangesdays' => 'Dies a mostrar en els canvis recents:',
-'recentchangesdays-max' => '(màxim $1 {{PLURAL:$1|dia|dies}})',
-'recentchangescount' => "Nombre d'edicions a mostrar per defecte als canvis recents, historials de pàgina i registres:",
-'savedprefs' => "S'han desat les vostres preferències",
-'timezonelegend' => 'Fus horari:',
-'timezonetext' => "¹El nombre d'hores de diferència entre la vostra hora local i la del servidor (UTC).",
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Zona horària:',
-'timezoneuseserverdefault' => 'Usa hora del servidor',
-'timezoneuseoffset' => 'Altres (especifiqueu la diferència)',
-'timezoneoffset' => 'Diferència¹:',
-'servertime' => 'Hora del servidor:',
-'guesstimezone' => 'Omple-ho des del navegador',
-'timezoneregion-africa' => 'Àfrica',
-'timezoneregion-america' => 'Amèrica',
-'timezoneregion-antarctica' => 'Antàrtida',
-'timezoneregion-arctic' => 'Àrtic',
-'timezoneregion-asia' => 'Àsia',
-'timezoneregion-atlantic' => 'Oceà Atlàntic',
-'timezoneregion-australia' => 'Austràlia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceà Índic',
-'timezoneregion-pacific' => 'Oceà Pacífic',
-'allowemail' => "Habilita el correu electrònic des d'altres usuaris",
-'prefs-searchoptions' => 'Preferències de la cerca',
-'prefs-namespaces' => 'Espais de noms',
-'defaultns' => 'Cerca per defecte en els següents espais de noms:',
-'default' => 'per defecte',
-'files' => 'Fitxers',
-'prefs-custom-css' => 'CSS personalitzat',
-'prefs-custom-js' => 'JS personalitzat',
+'preferences' => 'Preferències',
+'mypreferences' => 'Preferències',
+'prefs-edits' => "Nombre d'edicions:",
+'prefsnologin' => 'No heu iniciat cap sessió',
+'prefsnologintext' => 'Heu d\'estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticats]</span> per a seleccionar les preferències d\'usuari.',
+'changepassword' => 'Canvia la contrasenya',
+'prefs-skin' => 'Aparença',
+'skin-preview' => 'prova',
+'prefs-math' => 'Com es mostren les fórmules',
+'datedefault' => 'Cap preferència',
+'prefs-datetime' => 'Data i hora',
+'prefs-personal' => "Perfil d'usuari",
+'prefs-rc' => 'Canvis recents',
+'prefs-watchlist' => 'Llista de seguiment',
+'prefs-watchlist-days' => 'Nombre de dies per mostrar en la llista de seguiment:',
+'prefs-watchlist-days-max' => '(màxim set dies)',
+'prefs-watchlist-edits' => 'Nombre de modificacions a mostrar en una llista estesa de seguiment:',
+'prefs-watchlist-edits-max' => '(nombre màxim: 1000)',
+'prefs-watchlist-token' => 'Fitxa de llista de seguiment:',
+'prefs-misc' => 'Altres preferències',
+'prefs-resetpass' => 'Canvia la contrasenya',
+'prefs-email' => 'Opcions de correu electrònic',
+'prefs-rendering' => 'Aparença',
+'saveprefs' => 'Desa les preferències',
+'resetprefs' => 'Esborra els canvis no guardats',
+'restoreprefs' => 'Restaura les preferències per defecte',
+'prefs-editing' => "Caixa d'edició",
+'prefs-edit-boxsize' => "Mida de la finestra d'edició.",
+'rows' => 'Files',
+'columns' => 'Columnes',
+'searchresultshead' => 'Preferències de la cerca',
+'resultsperpage' => 'Resultats a mostrar per pàgina',
+'contextlines' => 'Línies a mostrar per resultat',
+'contextchars' => 'Caràcters de context per línia',
+'stub-threshold' => 'Límit per a formatar l\'enllaç com <a href="#" class="stub">esborrany</a> (en octets):',
+'recentchangesdays' => 'Dies a mostrar en els canvis recents:',
+'recentchangesdays-max' => '(màxim $1 {{PLURAL:$1|dia|dies}})',
+'recentchangescount' => "Nombre d'edicions a mostrar per defecte:",
+'prefs-help-recentchangescount' => 'Inclou els canvis recents, els historials de pàgines i els registres.',
+'prefs-help-watchlist-token' => 'Si ompliu aquest camp amb una clau secreta es generarà un fil RSS per a la vostra llista de seguiment.
+Aquell qui conegui aquesta clau serà capaç de llegir la vostra llista de seguiment, per tant esculliu un valor segur.
+A continuació es mostra un valor generat de forma aleatòria que podeu fer servir: $1',
+'savedprefs' => "S'han desat les vostres preferències",
+'timezonelegend' => 'Fus horari:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => 'Usa hora del servidor',
+'timezoneuseoffset' => 'Altres (especifiqueu la diferència)',
+'timezoneoffset' => 'Diferència¹:',
+'servertime' => 'Hora del servidor:',
+'guesstimezone' => 'Omple-ho des del navegador',
+'timezoneregion-africa' => 'Àfrica',
+'timezoneregion-america' => 'Amèrica',
+'timezoneregion-antarctica' => 'Antàrtida',
+'timezoneregion-arctic' => 'Àrtic',
+'timezoneregion-asia' => 'Àsia',
+'timezoneregion-atlantic' => 'Oceà Atlàntic',
+'timezoneregion-australia' => 'Austràlia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceà Índic',
+'timezoneregion-pacific' => 'Oceà Pacífic',
+'allowemail' => "Habilita el correu electrònic des d'altres usuaris",
+'prefs-searchoptions' => 'Preferències de la cerca',
+'prefs-namespaces' => 'Espais de noms',
+'defaultns' => 'Cerca per defecte en els següents espais de noms:',
+'default' => 'per defecte',
+'prefs-files' => 'Fitxers',
+'prefs-custom-css' => 'CSS personalitzat',
+'prefs-custom-js' => 'JS personalitzat',
+'prefs-reset-intro' => 'Podeu usar aquesta pàgina per a restablir les vostres preferències als valors per defecte.
+No es podrà desfer el canvi.',
+'prefs-emailconfirm-label' => 'Confirmació de correu electrònic:',
+'prefs-textboxsize' => "Mida de la caixa d'edició",
+'youremail' => 'Correu electrònic:',
+'username' => "Nom d'usuari:",
+'uid' => "Identificador d'usuari:",
+'prefs-memberingroups' => 'Membre dels {{PLURAL:$1|grup|grups}}:',
+'prefs-registration' => 'Hora de registre:',
+'yourrealname' => 'Nom real *',
+'yourlanguage' => 'Llengua:',
+'yourvariant' => 'Variant lingüística:',
+'yournick' => 'Signatura:',
+'prefs-help-signature' => "Els comentaris a les pàgines d'usuari s'han de signar amb \"<nowiki>~~~~</nowiki>\", que serà convertit en la vostra signatura i la data i l'hora.",
+'badsig' => 'La signatura que heu inserit no és vàlida; verifiqueu les etiquetes HTML que heu emprat.',
+'badsiglength' => 'La signatura és massa llarga.
+Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
+'yourgender' => 'Sexe:',
+'gender-unknown' => 'No especificat',
+'gender-male' => 'Masculí',
+'gender-female' => 'Femení',
+'prefs-help-gender' => "Opcional: s'usa perquè el programari se us adreci amb missatges amb el gènere adient. Aquesta informació serà pública.",
+'email' => 'Correu electrònic',
+'prefs-help-realname' => "* Nom real (opcional): si escolliu donar aquesta informació serà utilitzada per a donar-vos l'atribució de la vostra feina.",
+'prefs-help-email' => "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas d'oblit de l'actual.
+També podeu contactar amb altres usuaris a través de la vostra pàgina d'usuari o de discussió, sense que així calgui revelar la vostra identitat.",
+'prefs-help-email-required' => 'Cal una adreça de correu electrònic.',
+'prefs-info' => 'Informació bàsica',
+'prefs-i18n' => 'Internacionalització',
+'prefs-signature' => 'Signatura',
+'prefs-dateformat' => 'Format de la data',
+'prefs-timeoffset' => "Duració de l'acció",
+'prefs-advancedediting' => 'Opcions avançades',
+'prefs-advancedrc' => 'Opcions avançades',
+'prefs-advancedrendering' => 'Opcions avançades',
+'prefs-advancedsearchoptions' => 'Opcions avançades',
+'prefs-advancedwatchlist' => 'Opcions avançades',
+'prefs-display' => "Opcions d'aparença",
+'prefs-diffs' => 'Difs',
# User rights
-'userrights' => "Gestió dels permisos d'usuari", # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => "Gestiona els grups d'usuari",
-'userrights-user-editname' => "Introduïu un nom d'usuari:",
-'editusergroup' => "Edita els grups d'usuaris",
-'editinguser' => "S'està canviant els permisos de l'usuari '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => "Edita els grups d'usuaris",
-'saveusergroups' => "Desa els grups d'usuari",
-'userrights-groupsmember' => 'Membre de:',
-'userrights-groups-help' => "Podeu modificar els grups als quals pertany aquest usuari.
+'userrights' => "Gestió dels permisos d'usuari",
+'userrights-lookup-user' => "Gestiona els grups d'usuari",
+'userrights-user-editname' => "Introduïu un nom d'usuari:",
+'editusergroup' => "Edita els grups d'usuaris",
+'editinguser' => "S'està canviant els permisos de l'usuari '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => "Edita els grups d'usuaris",
+'saveusergroups' => "Desa els grups d'usuari",
+'userrights-groupsmember' => 'Membre de:',
+'userrights-groupsmember-auto' => 'Membre implícit de:',
+'userrights-groups-help' => "Podeu modificar els grups als quals pertany aquest usuari.
* Els requadres marcats indiquen que l'usuari és dins del grup.
* Els requadres sense marcar indiquen que l'usuari no hi pertany.
* Un asterisc (*) indica que no el podreu treure del grup una vegada l'hàgiu afegit o viceversa.",
-'userrights-reason' => 'Raó:',
-'userrights-no-interwiki' => "No teniu permisos per a editar els permisos d'usuari d'altres wikis.",
-'userrights-nodatabase' => 'La base de dades $1 no existeix o no és local.',
-'userrights-nologin' => "Heu [[Special:UserLogin|d'iniciar una sessió]] amb un compte d'administrador per a poder assignar permisos d'usuari.",
-'userrights-notallowed' => "El vostre compte no té permisos per a assignar permisos d'usuari.",
-'userrights-changeable-col' => 'Grups que podeu canviar',
-'userrights-unchangeable-col' => 'Grups que no podeu canviar',
+'userrights-reason' => 'Raó:',
+'userrights-no-interwiki' => "No teniu permisos per a editar els permisos d'usuari d'altres wikis.",
+'userrights-nodatabase' => 'La base de dades $1 no existeix o no és local.',
+'userrights-nologin' => "Heu [[Special:UserLogin|d'iniciar una sessió]] amb un compte d'administrador per a poder assignar permisos d'usuari.",
+'userrights-notallowed' => "El vostre compte no té permisos per a assignar permisos d'usuari.",
+'userrights-changeable-col' => 'Grups que podeu canviar',
+'userrights-unchangeable-col' => 'Grups que no podeu canviar',
# Groups
'group' => 'Grup:',
@@ -1273,6 +1326,7 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'right-bigdelete' => 'Esborrar pàgines amb historials grans',
'right-deleterevision' => 'Esborrar i restaurar versions específiques de pàgines',
'right-deletedhistory' => 'Veure els historials esborrats sense consultar-ne el text',
+'right-deletedtext' => 'Vegeu el text esborrat i els canvis entre revisions esborrades',
'right-browsearchive' => 'Cercar pàgines esborrades',
'right-undelete' => 'Restaurar pàgines esborrades',
'right-suppressrevision' => 'Revisar i restaurar les versions amagades als administradors',
@@ -1286,6 +1340,8 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'right-editprotected' => 'Editar pàgines protegides (sense protecció de cascada)',
'right-editinterface' => "Editar la interfície d'usuari",
'right-editusercssjs' => "Editar els fitxers de configuració CSS i JS d'altres usuaris",
+'right-editusercss' => "Editar els fitxers de configuració CSS d'altres usuaris",
+'right-edituserjs' => "Editar els fitxers de configuració JS d'altres usuaris",
'right-rollback' => "Revertir ràpidament l'últim editor d'una pàgina particular",
'right-markbotedits' => 'Marcar les reversions com a edicions de bot',
'right-noratelimit' => "No es veu afectat pels límits d'accions.",
@@ -1302,6 +1358,8 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'right-siteadmin' => 'Blocar i desblocar la base de dades',
'right-reset-passwords' => "Reiniciar la contrasenya d'altres usuaris",
'right-override-export-depth' => 'Exporta pàgines incloent aquelles enllaçades fins a una fondària de 5',
+'right-versiondetail' => 'Mostra la informació addicional de la versió del programari',
+'right-sendemail' => 'Envia un correu electrònic a altres usuaris.',
# User rights log
'rightslog' => "Registre dels permisos d'usuari",
@@ -1351,6 +1409,15 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'recentchanges-legend' => 'Opcions de canvis recents',
'recentchangestext' => 'Seguiu els canvis recents del projecte {{SITENAME}} en aquesta pàgina.',
'recentchanges-feed-description' => 'Segueix en aquest canal els canvis més recents del wiki.',
+'recentchanges-label-legend' => 'Llegenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova pàgina',
+'recentchanges-label-newpage' => 'Aquesta modificació inicià una pàgina',
+'recentchanges-legend-minor' => '$1 - modificació menor',
+'recentchanges-label-minor' => 'Aquesta és una modificació menor',
+'recentchanges-legend-bot' => "$1 - modificació d'un bot",
+'recentchanges-label-bot' => 'Aquesta modificació fou feta per un bot',
+'recentchanges-legend-unpatrolled' => '$1 - modificació sense patrullar',
+'recentchanges-label-unpatrolled' => 'Aquesta modificació encara no ha estat patrullada',
'rcnote' => 'A continuació hi ha {{PLURAL:$1|el darrer canvi|els darrers <strong>$1</strong> canvis}} en {{PLURAL:$2|el darrer dia|els darrers <strong>$2</strong> dies}}, actualitzats a les $5 del $4.',
'rcnotefrom' => 'A sota hi ha els canvis des de <b>$2</b> (es mostren fins <b>$1</b>).',
'rclistfrom' => 'Mostra els canvis nous des de $1',
@@ -1377,6 +1444,8 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
# Recent changes linked
'recentchangeslinked' => "Seguiment d'enllaços",
+'recentchangeslinked-feed' => 'Canvis relacionats',
+'recentchangeslinked-toolbox' => "Seguiment d'enllaços",
'recentchangeslinked-title' => 'Canvis relacionats amb «$1»',
'recentchangeslinked-noresult' => 'No ha hagut cap canvi a les pàgines enllaçades durant el període de temps.',
'recentchangeslinked-summary' => "A continuació trobareu una llista dels canvis recents a les pàgines enllaçades des de la pàgina donada (o entre els membres d'una categoria especificada).
@@ -1387,8 +1456,8 @@ Les pàgines de la vostra [[Special:Watchlist|llista de seguiment]] apareixen en
# Upload
'upload' => 'Carrega',
'uploadbtn' => 'Carrega un fitxer',
-'reupload' => 'Carrega de nou',
'reuploaddesc' => 'Torna al formulari per apujar.',
+'upload-tryagain' => "Envia la descripció de l'arxiu modificat",
'uploadnologin' => 'No heu iniciat una sessió',
'uploadnologintext' => "Heu d'[[Special:UserLogin|iniciar una sessió]]
per a penjar-hi fitxers.",
@@ -1421,6 +1490,7 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
'minlength1' => "Els noms de fitxer han de ser de com a mínim d'una lletra.",
'illegalfilename' => 'El nom del fitxer «$1» conté caràcters que no estan permesos en els títols de pàgines. Si us plau, canvieu el nom al fitxer i torneu a carregar-lo.',
'badfilename' => "El nom de la imatge s'ha canviat a «$1».",
+'filetype-mime-mismatch' => "L'extensió de fitxer no coincideix amb el tipus MIME.",
'filetype-badmime' => 'No es poden carregar fitxers del tipus MIME «$1».',
'filetype-bad-ie-mime' => 'No es pot carregar aquest fitxer perquè Internet Explorer el detectaria com a «$1», que és un tipus de fitxer prohibit i potencialment perillós.',
'filetype-unwanted-type' => "Els fitxers del tipus «'''.$1'''» no són desitjats. {{PLURAL:$3|Es prefereix el tipus de fitxer|Els tipus de fitxer preferits són}} $2.",
@@ -1437,7 +1507,6 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
* Nom del fitxer que es puja: '''<tt>[[:$1]]</tt>'''
* Nom del fitxer existent: '''<tt>[[:$2]]</tt>'''
Si us plau, trieu un nom diferent.",
-'fileexists-thumb' => "<center>'''Fitxer existent'''</center>",
'fileexists-thumbnail-yes' => "Aquest fitxer sembla ser una imatge en mida reduïda (<em>miniatura</em>). [[$1|thumb]]
Comproveu si us plau el fitxer '''<tt>[[:$1]]</tt>'''.
Si el fitxer és la mateixa imatge a mida original, no cal carregar cap miniatura més.",
@@ -1452,6 +1521,7 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
'file-deleted-duplicate' => "Un fitxer idèntic a aquest ([[$1]]) ha estat esborrat amb anterioritat. Hauríeu de comprovar el registre d'esborrat del fitxer abans de tornar-lo a carregar.",
'successfulupload' => "El fitxer s'ha carregat amb èxit",
'uploadwarning' => 'Avís de càrrega',
+'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
'savefile' => 'Desa el fitxer',
'uploadedimage' => '[[$1]] carregat.',
'overwroteimage' => "s'ha penjat una nova versió de «[[$1]]»",
@@ -1459,11 +1529,14 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
'uploaddisabledtext' => "S'ha inhabilitat la càrrega de fitxers.",
'php-uploaddisabledtext' => 'La càrrega de fitxer està desactivada al PHP. Comproveu les opcions del fitxer file_uploads.',
'uploadscripted' => 'Aquest fitxer conté codi HTML o de seqüències que pot ser interpretat equivocadament per un navegador.',
-'uploadcorrupt' => 'El fitxer està corrupte o té una extensió incorrecte. Reviseu-lo i torneu-lo a pujar.',
'uploadvirus' => 'El fitxer conté un virus! Detalls: $1',
+'upload-source' => 'Fitxer font',
'sourcefilename' => 'Nom del fitxer font:',
+'sourceurl' => "URL d'origen:",
'destfilename' => 'Nom del fitxer de destinació:',
'upload-maxfilesize' => 'Mida màxima de fitxer: $1',
+'upload-description' => 'Descripció del fitxer',
+'upload-options' => 'Opcions de càrrega',
'watchthisupload' => 'Vigila aquest fitxer',
'filewasdeleted' => "Prèviament es va carregar un fitxer d'aquest nom i després va ser esborrat. Hauríeu de verificar $1 abans de procedir a carregar-lo una altra vegada.",
'upload-wasdeleted' => "'''Atenció: Esteu carregant un fitxer que s'havia eliminat abans.'''
@@ -1472,12 +1545,43 @@ Hauríeu de considerar si és realment adequat continuar carregant aquest fitxer
A continuació teniu el registre d'eliminació per a que pugueu comprovar els motius que van portar a la seua eliminació:",
'filename-bad-prefix' => "El nom del fitxer que esteu penjant comença amb '''«$1»''', que és un nom no descriptiu que les càmeres digitals normalment assignen de forma automàtica. Trieu un de més descriptiu per al vostre fitxer.",
-'upload-proto-error' => 'El protocol és incorrecte',
-'upload-proto-error-text' => 'Per a les càrregues remotes cal que els URL comencin amb <code>http://</code> o <code>ftp://</code>.',
-'upload-file-error' => "S'ha produït un error intern",
-'upload-file-error-text' => "S'ha produït un error de càrrega desconegut quan s'intentava crear un fitxer temporal al servidor. Poseu-vos en contacte amb un [[Special:ListUsers/sysop|administrador]].",
-'upload-misc-error' => "S'ha produït un error de càrrega desconegut",
-'upload-misc-error-text' => "S'ha produït un error desconegut durant la càrrega. Verifiqueu que l'URL és vàlid i accessible, i torneu-ho a provar. Si el problema persisteix, adreceu-vos a un [[Special:ListUsers/sysop|administrador]].",
+'upload-proto-error' => 'El protocol és incorrecte',
+'upload-proto-error-text' => 'Per a les càrregues remotes cal que els URL comencin amb <code>http://</code> o <code>ftp://</code>.',
+'upload-file-error' => "S'ha produït un error intern",
+'upload-file-error-text' => "S'ha produït un error de càrrega desconegut quan s'intentava crear un fitxer temporal al servidor. Poseu-vos en contacte amb un [[Special:ListUsers/sysop|administrador]].",
+'upload-misc-error' => "S'ha produït un error de càrrega desconegut",
+'upload-misc-error-text' => "S'ha produït un error desconegut durant la càrrega. Verifiqueu que l'URL és vàlid i accessible, i torneu-ho a provar. Si el problema persisteix, adreceu-vos a un [[Special:ListUsers/sysop|administrador]].",
+'upload-too-many-redirects' => 'La URL conté massa redireccions',
+'upload-unknown-size' => 'Mida desconeguda',
+'upload-http-error' => 'Ha ocorregut un error HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accés denegat',
+'img-auth-nopathinfo' => 'Falta PATH_INFO.
+El vostre servidor no està configurat per a tractar aquesta informació.
+Pot estar basat en CGI i no soportar img_auth.
+Vegeu http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => "No s'ha trobat la ruta sol·licitada al directori de càrrega configurat.",
+'img-auth-badtitle' => 'No s\'ha pogut construir un títol vàlid a partir de "$1".',
+'img-auth-nologinnWL' => 'No has iniciat sessió i "$1" no està a la llista blanca.',
+'img-auth-nofile' => 'No existeix el fitxer "$1".',
+'img-auth-isdir' => "Estàs intentant accedir al directori $1.
+Només està permès l'accés a arxius.",
+'img-auth-streaming' => 'Lectura corrent de "$1".',
+'img-auth-public' => "La funció de img_auth.php és de sortida de fitxers d'un lloc wiki privat.
+Aquest wiki està configurat com a wiki públic.
+Per seguretat, img_auth.php està desactivat.",
+'img-auth-noread' => 'L\'usuari no té accés a la lectura de "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL incorrecta: $1',
+'http-invalid-scheme' => 'Les URLs amb l\'esquema "$1" no són compatibles.',
+'http-request-error' => 'La petició HTTP ha fallat per un error desconegut.',
+'http-read-error' => 'Error de lectura HTTP.',
+'http-timed-out' => 'La petició HTTP ha expirat.',
+'http-curl-error' => "Error en recuperar l'URL: $1",
+'http-host-unreachable' => "No s'ha pogut accedir a l'URL.",
+'http-bad-status' => 'Hi ha hagut un problema durant la petició HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "No s'ha pogut accedir a l'URL",
@@ -1486,6 +1590,7 @@ A continuació teniu el registre d'eliminació per a que pugueu comprovar els mo
'upload-curl-error28-text' => "El lloc ha trigat massa a respondre. Comproveu que està funcionant, espereu una estona i torneu-ho a provar. Podeu mirar d'intentar-ho quan hi hagi menys trànsit a la xarxa.",
'license' => 'Llicència:',
+'license-header' => 'Llicència',
'nolicense' => "No se n'ha seleccionat cap",
'license-nopreview' => '(La previsualització no està disponible)',
'upload_source_url' => ' (un URL vàlid i accessible públicament)',
@@ -1506,6 +1611,7 @@ Clicant al capdamunt de les columnes podeu canviar-ne l'ordenació.",
'listfiles_count' => 'Versions',
# File description page
+'file-anchor-link' => 'Fitxer',
'filehist' => 'Historial del fitxer',
'filehist-help' => 'Cliqueu una data/hora per veure el fitxer tal com era aleshores.',
'filehist-deleteall' => 'elimina-ho tot',
@@ -1520,6 +1626,7 @@ Clicant al capdamunt de les columnes podeu canviar-ne l'ordenació.",
'filehist-dimensions' => 'Dimensions',
'filehist-filesize' => 'Mida del fitxer',
'filehist-comment' => 'Comentari',
+'filehist-missing' => 'Fitxer que falta',
'imagelinks' => 'Enllaços a la imatge',
'linkstoimage' => '{{PLURAL:$1|La següent pàgina enllaça|Les següents pàgines enllacen}} a aquesta imatge:',
'linkstoimage-more' => "Hi ha més de $1 {{PLURAL:$1|pàgina que enllaça|pàgines que enllaçen}} a aquest fitxer.
@@ -1529,15 +1636,16 @@ Podeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
'morelinkstoimage' => 'Visualitza [[Special:WhatLinksHere/$1|més enllaços]] que porten al fitxer.',
'redirectstofile' => '{{PLURAL:$1|El fitxer següent redirigeix cap aquest fitxer|Els següents $1 fitxers redirigeixen cap aquest fitxer:}}',
'duplicatesoffile' => "{{PLURAL:$1|Aquest fitxer és un duplicat del que apareix a continuació|A continuació s'indiquen els $1 duplicats d'aquest fitxer}} ([[Special:FileDuplicateSearch/$2|vegeu-ne més detalls]]):",
-'sharedupload' => 'Aquest fitxer prové de $1 i pot ser utilitzat per altres projectes.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Consulteu la $1 per a més informació.',
-'shareduploadwiki-desc' => 'La $1 en el repositori compartit es mostra a continuació.',
-'shareduploadwiki-linktext' => 'pàgina de descripció del fitxer',
-'noimage' => 'No existeix cap fitxer amb aquest nom, però podeu $1.',
-'noimage-linktext' => "Carrega'n una",
+'sharedupload' => 'Aquest fitxer prové de $1 i pot ser utilitzat per altres projectes.',
+'sharedupload-desc-there' => 'Aquest fitxer prové de $1 i pot ser utilitzat per altres projectes.
+Si us plau vegeu la [$2 pàgina de descripció del fitxer] per a més informació.',
+'sharedupload-desc-here' => 'Aquest fitxer prové de $1 i pot ser usat per altres projectes.
+La descripció de la seva [$2 pàgina de descripció] es mostra a continuació.',
+'filepage-nofile' => 'No hi ha cap fitxer amb aquest nom.',
+'filepage-nofile-link' => 'No existeix cap fitxer amb aquest nom, però podeu [$1 carregar-lo].',
'uploadnewversion-linktext' => "Carrega una nova versió d'aquest fitxer",
-'shared-repo-from' => 'des de $1', # $1 is the repository name
-'shared-repo' => 'un repositori compartit', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'des de $1',
+'shared-repo' => 'un repositori compartit',
# File reversion
'filerevert' => 'Reverteix $1',
@@ -1566,6 +1674,7 @@ Podeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
** Violació dels drets d'autor / copyright
** Fitxer duplicat",
'filedelete-edit-reasonlist' => "Edita els motius d'eliminació",
+'filedelete-maintenance' => "L'esborrament i recuperació d'arxius està temporalment deshabilitada durant el manteniment.",
# MIME search
'mimesearch' => 'Cerca per MIME',
@@ -1586,7 +1695,7 @@ Podeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
# Random page
'randompage' => "Pàgina a l'atzar",
-'randompage-nopages' => "No hi ha cap pàgina en l'espai de noms «$1».",
+'randompage-nopages' => "No hi ha cap pàgina en {{PLURAL:$2|l'espai de noms següent|els espais de noms següents}}: $1.",
# Random redirect
'randomredirect' => "Redirecció a l'atzar",
@@ -1598,6 +1707,7 @@ Podeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
'statistics-header-edits' => "Estadístiques d'edicions",
'statistics-header-views' => 'Visualitza estadístiques',
'statistics-header-users' => "Estadístiques d'usuari",
+'statistics-header-hooks' => 'Altres estadístiques',
'statistics-articles' => 'Pàgines de contingut',
'statistics-pages' => 'Pàgines',
'statistics-pages-desc' => 'Totes les pàgines del wiki, incloent les pàgines de discussió, redireccions, etc.',
@@ -1627,8 +1737,8 @@ Les entrades <s>ratllades</s> s\'han resolt.',
'brokenredirects' => 'Redireccions rompudes',
'brokenredirectstext' => 'Les següents redireccions enllacen a pàgines inexistents:',
-'brokenredirects-edit' => '(edita)',
-'brokenredirects-delete' => '(elimina)',
+'brokenredirects-edit' => 'modifica',
+'brokenredirects-delete' => 'elimina',
'withoutinterwiki' => 'Pàgines sense enllaços a altres llengües',
'withoutinterwiki-summary' => "Les pàgines següents no enllacen a versions d'altres llengües:",
@@ -1735,7 +1845,7 @@ Podeu reduir l'extensió seleccionant el tipus de registre, el nom del usuari (d
# Special:Categories
'categories' => 'Categories',
-'categoriespagetext' => "Les categories següents contenen pàgines, o fitxers multimèdia.
+'categoriespagetext' => "{{PLURAL:$1|La següent categoria conté|Les següents categories contenen}} pàgines, o fitxers multimèdia.
[[Special:UnusedCategories|Les categories no usades]] no s'hi mostren.
Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
'categoriesfrom' => 'Mostra les categories que comencen a:',
@@ -1743,8 +1853,9 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
'special-categories-sort-abc' => 'ordena alfabèticament',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribucions esborrades',
-'deletedcontributions-title' => 'Contribucions esborrades',
+'deletedcontributions' => 'Contribucions esborrades',
+'deletedcontributions-title' => 'Contribucions esborrades',
+'sp-deletedcontributions-contribs' => 'contribucions',
# Special:LinkSearch
'linksearch' => 'Enllaços externs',
@@ -1759,6 +1870,16 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
'listusersfrom' => 'Mostra usuaris començant per:',
'listusers-submit' => 'Mostra',
'listusers-noresult' => "No s'han trobat coincidències de noms d'usuaris. Si us plau, busqueu també amb variacions per majúscules i minúscules.",
+'listusers-blocked' => '({{GENDER:$1|blocat|blocada}})',
+
+# Special:ActiveUsers
+'activeusers' => "Llista d'usuaris actius",
+'activeusers-intro' => "Aquí hi ha una llista d'usuaris que han tingut algun tipus d'activitat en {{PLURAL:$1|el darrer dia|els darrers $1 dies}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|modificació|modificacions}} en {{PLURAL:$3|el darrer dia|els $3 darrers dies}}',
+'activeusers-from' => 'Mostra els usuaris començant per:',
+'activeusers-hidebots' => 'Amaga bots',
+'activeusers-hidesysops' => 'Amaga administradors',
+'activeusers-noresult' => "No s'han trobat usuaris.",
# Special:Log/newusers
'newuserlogpage' => "Registre de creació de l'usuari",
@@ -1769,17 +1890,23 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
'newuserlog-autocreate-entry' => 'Compte creat automàticament',
# Special:ListGroupRights
-'listgrouprights' => "Drets dels grups d'usuaris",
-'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
+'listgrouprights' => "Drets dels grups d'usuaris",
+'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
Pot ser que hi hagi més informació sobre drets individuals [[{{MediaWiki:Listgrouprights-helppage}}|aquí]].",
-'listgrouprights-group' => 'Grup',
-'listgrouprights-rights' => 'Drets',
-'listgrouprights-helppage' => 'Help:Drets del grup',
-'listgrouprights-members' => '(llista de membres)',
-'listgrouprights-addgroup' => 'Pot afegir {{PLURAL:$2|grup|grups}}: $1',
-'listgrouprights-removegroup' => 'Pot treure {{PLURAL:$2|grup|grups}}: $1',
-'listgrouprights-addgroup-all' => 'Pot afegir tots els grups',
-'listgrouprights-removegroup-all' => 'Pot treure tots els grups',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Drets concedits</span>
+* <span class="listgrouprights-revoked">Drets revocats</span>',
+'listgrouprights-group' => 'Grup',
+'listgrouprights-rights' => 'Drets',
+'listgrouprights-helppage' => 'Help:Drets del grup',
+'listgrouprights-members' => '(llista de membres)',
+'listgrouprights-addgroup' => 'Pot afegir {{PLURAL:$2|grup|grups}}: $1',
+'listgrouprights-removegroup' => 'Pot treure {{PLURAL:$2|grup|grups}}: $1',
+'listgrouprights-addgroup-all' => 'Pot afegir tots els grups',
+'listgrouprights-removegroup-all' => 'Pot treure tots els grups',
+'listgrouprights-addgroup-self' => 'Entrar {{PLURAL:$2|al grup|als grups}} $1',
+'listgrouprights-removegroup-self' => 'Sortir {{PLURAL:$2|del grup|dels grups:}} $1',
+'listgrouprights-addgroup-self-all' => 'Afegir-se a qualsevol grup',
+'listgrouprights-removegroup-self-all' => 'Sortir de tots els grups',
# E-mail user
'mailnologin' => "No enviïs l'adreça",
@@ -1859,23 +1986,26 @@ Si voleu deixar de vigilar la pàgina, cliqueu sobre l'enllaç de «Desatén» d
'enotif_anon_editor' => 'usuari anònim $1',
'enotif_body' => 'Benvolgut $WATCHINGUSERNAME,
-La pàgina $PAGETITLE del projecte {{SITENAME}} ha estat $CHANGEDORCREATED el dia $PAGEEDITDATE per $PAGEEDITOR, vegeu $PAGETITLE_URL per la versió actual.
+La pàgina $PAGETITLE del projecte {{SITENAME}} ha estat $CHANGEDORCREATED el dia $PAGEEDITDATE per $PAGEEDITOR, vegeu la versió actual a $PAGETITLE_URL.
$NEWPAGE
-Resum ofert per l\'editor: $PAGESUMMARY $PAGEMINOREDIT
+Resum de l\'editor: $PAGESUMMARY $PAGEMINOREDIT
Contacteu amb l\'editor:
correu: $PAGEEDITOR_EMAIL
-pàgina d\'usuari: $PAGEEDITOR_WIKI
+wiki: $PAGEEDITOR_WIKI
No rebreu més notificacions de futurs canvis si no visiteu la pàgina. També podeu canviar el mode de notificació de les pàgines que vigileu en la vostra llista de seguiment.
- El servei de notificació del projecte {{SITENAME}}
+ El servei de notificacions del projecte {{SITENAME}}
--
-Per a canviar les opcions de la vostra llista de seguiment aneu a:
-{{fullurl:Special:Watchlist/edit}}
+Per a canviar les opcions de la vostra llista de seguiment aneu a
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Per eliminar la pàgina de la vostra llista de seguiment aneu a
+$UNWATCHURL
Suggeriments i ajuda:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1889,11 +2019,12 @@ Suggeriments i ajuda:
'exblank' => 'la pàgina estava en blanc',
'delete-confirm' => 'Elimina «$1»',
'delete-legend' => 'Elimina',
-'historywarning' => 'Avís: La pàgina que eliminareu té un historial:',
+'historywarning' => "'''Avís:''' La pàgina que eliminareu té un historial amb aproximadament {{PLURAL:$1|una modificació|$1 modificacions}}:",
'confirmdeletetext' => "Esteu a punt d'esborrar de forma permanent una pàgina o imatge i tot el seu historial de la base de dades.
Confirmeu que realment ho voleu fer, que enteneu les
conseqüències, i que el que esteu fent està d'acord amb la [[{{MediaWiki:Policy-url}}|política]] del projecte.",
'actioncomplete' => "S'ha realitzat l'acció de manera satisfactòria.",
+'actionfailed' => "L'acció ha fallat",
'deletedtext' => '«<nowiki>$1</nowiki>» ha estat esborrat.
Vegeu $2 per a un registre dels esborrats més recents.',
'deletedarticle' => 'ha esborrat «[[$1]]»',
@@ -1914,19 +2045,20 @@ Vegeu $2 per a un registre dels esborrats més recents.',
'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
# Rollback
-'rollback' => 'Reverteix edicions',
-'rollback_short' => 'Revoca',
-'rollbacklink' => 'Reverteix',
-'rollbackfailed' => "No s'ha pogut revocar",
-'cantrollback' => "No s'ha pogut revertir les edicions; el darrer coŀlaborador és l'únic autor de la pàgina.",
-'alreadyrolled' => "No es pot revertir la darrera modificació de [[:$1]]
+'rollback' => 'Reverteix edicions',
+'rollback_short' => 'Revoca',
+'rollbacklink' => 'Reverteix',
+'rollbackfailed' => "No s'ha pogut revocar",
+'cantrollback' => "No s'ha pogut revertir les edicions; el darrer coŀlaborador és l'únic autor de la pàgina.",
+'alreadyrolled' => "No es pot revertir la darrera modificació de [[:$1]]
de l'usuari [[User:$2|$2]] ([[User talk:$2|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Algú altre ja ha modificat o revertit la pàgina.
La darrera modificació ha estat feta per l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "El resum d'edició ha estat: «$1».", # only shown if there is an edit comment
-'revertpage' => "Revertides les edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussió]]). S'ha recuperat la darrera versió de l'usuari [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
-'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
+'editcomment' => "El resum d'edició ha estat: «$1».",
+'revertpage' => "Revertides les edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussió]]). S'ha recuperat la darrera versió de l'usuari [[User:$1|$1]]",
+'revertpage-nouser' => "Desfetes les edicions de (nom d'usuari eliminat) a l'última revisió feta per [[User:$1|$1]]",
+'rollback-success' => "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
+'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
# Protect
'protectlogpage' => 'Registre de protecció',
@@ -1942,7 +2074,7 @@ La darrera modificació ha estat feta per l'usuari [[User:$3|$3]] ([[User talk:$
'protectexpiry' => "Data d'expiració",
'protect_expiry_invalid' => "Data d'expiració no vàlida",
'protect_expiry_old' => 'El temps de termini ja ha passat.',
-'protect-unchain' => 'Desbloqueja els permisos de reanomenament',
+'protect-unchain-permissions' => 'Desbloqueja les opcions de protecció avançades',
'protect-text' => 'Aquí podeu visualitzar i canviar el nivell de protecció de la pàgina «<nowiki>$1</nowiki>». Assegureu-vos de seguir les polítiques existents.',
'protect-locked-blocked' => "No podeu canviar els nivells de protecció mentre estigueu bloquejats. Ací hi ha els
paràmetres actuals de la pàgina '''$1''':",
@@ -1971,7 +2103,7 @@ Ací es troben els paràmetres actuals de la pàgina '''$1''':",
** Guerra d'edicions improductiva
** Pàgina amb alt trànsit",
'protect-edit-reasonlist' => 'Edita motius de protecció',
-'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite',
'restriction-type' => 'Permís:',
'restriction-level' => 'Nivell de restricció:',
'minimum-size' => 'Mida mínima',
@@ -2015,6 +2147,7 @@ al resum a continuació, juntament amb detalls dels usuaris que l'havien editat
'undelete-nodiff' => "No s'ha trobat cap revisió anterior.",
'undeletebtn' => 'Restaura!',
'undeletelink' => 'mira/restaura',
+'undeleteviewlink' => 'veure',
'undeletereset' => 'Reinicia',
'undeleteinvert' => 'Invertir selecció',
'undeletecomment' => 'Motiu:',
@@ -2052,19 +2185,24 @@ $1",
'contributions-title' => "Contribucions de l'usuari $1",
'mycontris' => 'Contribucions',
'contribsub2' => 'Per $1 ($2)',
-'nocontribs' => "No s'ha trobat canvis que encaixessin amb aquests criteris.", # Optional parameter: $1 is the user name
+'nocontribs' => "No s'ha trobat canvis que encaixessin amb aquests criteris.",
'uctop' => '(actual)',
'month' => 'Mes (i anteriors):',
'year' => 'Any (i anteriors):',
-'sp-contributions-newbies' => 'Mostra les contribucions dels usuaris novells',
-'sp-contributions-newbies-sub' => 'Per a novells',
-'sp-contributions-newbies-title' => "Contribucions dels comptes d'usuari més nous",
-'sp-contributions-blocklog' => 'Registre de bloquejos',
-'sp-contributions-logs' => 'registres',
-'sp-contributions-search' => 'Cerca les contribucions',
-'sp-contributions-username' => "Adreça IP o nom d'usuari:",
-'sp-contributions-submit' => 'Cerca',
+'sp-contributions-newbies' => 'Mostra les contribucions dels usuaris novells',
+'sp-contributions-newbies-sub' => 'Per a novells',
+'sp-contributions-newbies-title' => "Contribucions dels comptes d'usuari més nous",
+'sp-contributions-blocklog' => 'Registre de bloquejos',
+'sp-contributions-deleted' => "contribucions d'usuari esborrades",
+'sp-contributions-logs' => 'registres',
+'sp-contributions-talk' => 'discussió',
+'sp-contributions-userrights' => "gestió de drets d'usuari",
+'sp-contributions-blocked-notice' => "En aquests moments, aquest compte d'usuari es troba blocat.
+Per més detalls, la última entrada del registre es mostra a continuació:",
+'sp-contributions-search' => 'Cerca les contribucions',
+'sp-contributions-username' => "Adreça IP o nom d'usuari:",
+'sp-contributions-submit' => 'Cerca',
# What links here
'whatlinkshere' => 'Què hi enllaça',
@@ -2087,6 +2225,7 @@ $1",
# Block/unblock
'blockip' => "Bloqueig d'usuaris",
+'blockip-title' => "Bloquejar l'usuari",
'blockip-legend' => "Bloca l'usuari",
'blockiptext' => "Empreu el següent formulari per blocar l'accés
d'escriptura des d'una adreça IP específica o des d'un usuari determinat.
@@ -2113,7 +2252,7 @@ quines pàgines en concret estan sent vandalitzades).",
'ipbenableautoblock' => "Bloca l'adreça IP d'aquest usuari, i totes les subseqüents adreces des de les quals intenti registrar-se",
'ipbsubmit' => 'Bloqueja aquesta adreça',
'ipbother' => 'Un altre termini',
-'ipboptions' => '2 hores:2 hours,1 dia:1 day,3 dies:3 days,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hores:2 hours,1 dia:1 day,3 dies:3 days,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite',
'ipbotheroption' => 'un altre',
'ipbotherreason' => 'Altres motius o addicionals:',
'ipbhidename' => "Amaga el nom d'usuari de les edicions i llistes",
@@ -2143,9 +2282,11 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
'ipblocklist-sh-tempblocks' => '$1 bloquejos temporals',
'ipblocklist-sh-addressblocks' => "$1 bloquejos d'una sola adreça IP",
'ipblocklist-submit' => 'Cerca',
+'ipblocklist-localblock' => 'Bloqueig local',
+'ipblocklist-otherblocks' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
'blocklistline' => '$1, $2 bloca $3 ($4)',
'infiniteblock' => 'infinit',
-'expiringblock' => 'venç el $1',
+'expiringblock' => 'venç el $1 a $2',
'anononlyblock' => 'només usuari anònim',
'noautoblockblock' => "S'ha inhabilitat el bloqueig automàtic",
'createaccountblock' => "s'ha blocat la creació de nous comptes",
@@ -2160,7 +2301,10 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
El motiu del bloqueig de $1 és: ''$2''.",
'blocklogpage' => 'Registre de bloquejos',
-'blocklog-fulllog' => 'Registre complet de bloquejos',
+'blocklog-showlog' => 'Aquest usuari ha estat blocat prèviament.
+Per més detalls, a sota es mostra el registre de bloquejos:',
+'blocklog-showsuppresslog' => 'Aquest usuari ha estat blocat i amagat prèviament.
+Per més detalls, a sota es mostra el registre de supressions:',
'blocklogentry' => "ha blocat l'{{GENDER:$1|usuari|usuària}} [[$1]] per un període de: $2 $3",
'reblock-logentry' => 'canviades les opcions del blocatge a [[$1]] amb caducitat a $2, $3',
'blocklogtext' => "Això és una relació de accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:IPBlockList|llista d'usuaris actualment bloquejats]].",
@@ -2179,9 +2323,11 @@ El motiu del bloqueig de $1 és: ''$2''.",
'ipb_already_blocked' => '«$1» ja està blocat',
'ipb-needreblock' => "== Usuari bloquejat ==
L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
+'ipb-otherblocks-header' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
'ipb_cant_unblock' => "Errada: No s'ha trobat el núm. ID de bloqueig $1. És possible que ja s'haguera desblocat.",
'ipb_blocked_as_range' => "Error: L'adreça IP $1 no està blocada directament i per tant no pot ésser desbloquejada. Ara bé, sí que ho està per formar part del rang $2 que sí que pot ser desblocat.",
'ip_range_invalid' => 'Rang de IP no vàlid.',
+'ip_range_toolarge' => 'No estan permesos el bloquejos de rangs més grans que /$1.',
'blockme' => "Bloca'm",
'proxyblocker' => 'Bloqueig de proxy',
'proxyblocker-disabled' => "S'ha inhabilitat la funció.",
@@ -2190,6 +2336,7 @@ L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
'sorbsreason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert dins la llista negra de DNS que fa servir el projecte {{SITENAME}}.",
'sorbs_create_account_reason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert a la llista negra de DNS que utilitza el projecte {{SITENAME}}. No podeu crear-vos-hi un compte",
'cant-block-while-blocked' => 'No podeu blocar altres usuaris quan esteu bloquejat.',
+'cant-see-hidden-user' => "L'usuari que esteu intentant blocar ja ha estat blocat i ocultat. Com que no teniu el permís hideuser no podeu veure ni modificar el seu blocatge.",
# Developer tools
'lockdb' => 'Bloca la base de dades',
@@ -2237,6 +2384,7 @@ assegureu-vos d'entendre les conseqüències que comporta abans de seguir endava
En aquests casos, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.",
'movearticle' => 'Reanomena la pàgina',
+'moveuserpage-warning' => "'''Atenció:''' Esteu a punt de moure una pàgina d'usuari. Tingueu en compte que només la pàgina es desplaçarà i que el compte d'usuari ''no'' canviarà de nom.",
'movenologin' => "No sou a dins d'una sessió",
'movenologintext' => "Heu de ser un usuari registrat i estar [[Special:UserLogin|dintre d'una sessió]]
per reanomenar una pàgina.",
@@ -2248,7 +2396,7 @@ per reanomenar una pàgina.",
'move-watch' => 'Vigila aquesta pàgina',
'movepagebtn' => 'Reanomena la pàgina',
'pagemovedsub' => 'Reanomenament amb èxit',
-'movepage-moved' => "'''«$1» s'ha mogut a «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» s'ha mogut a «$2»'''",
'movepage-moved-redirect' => "S'ha creat una redirecció.",
'movepage-moved-noredirect' => "La creació d'una redirecció s'ha suprimit.",
'articleexists' => 'Ja existeix una pàgina amb aquest nom, o el nom que heu triat no és vàlid.
@@ -2292,6 +2440,13 @@ La pàgina de destinació, «[[:$1]]», ja existeix. Voleu eliminar-la per a fer
'imageinvalidfilename' => 'El nom de fitxer indicat no és vàlid',
'fix-double-redirects' => "Actualitza també les redireccions que apuntin a l'article original",
'move-leave-redirect' => 'Deixar enrera una redirecció',
+'protectedpagemovewarning' => "'''AVÍS: Aquesta pàgina està bloquejada i només els usuaris que tenen drets d'administrador la poden reanomenar.
+A continuació es mostra la darrera entrada del registre com a referència:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Aquesta pàgina està bloquejada i només els usuaris registrats la poden moure.
+A continuació es mostra la darrera entrada del registre com a referència:",
+'move-over-sharedrepo' => "== El fitxer ja existeix ==
+[[:$1]] ja existeix al dipòsit compartit. Moure un fitxer a aquest títol impedirà d'ús del fitxer compartit.",
+'file-exists-sharedrepo' => "El nom de fitxer escollit ja s'utilitza al dipòsit compartit. Escolliu un altre nom.",
# Export
'export' => 'Exporta les pàgines',
@@ -2313,14 +2468,20 @@ En el darrer cas, podeu fer servir un enllaç com ara [[{{#Special:Export}}/{{Me
'export-pagelinks' => 'Inclou pàgines enllaçades fins una profunditat de:',
# Namespace 8 related
-'allmessages' => 'Tots els missatges del sistema',
-'allmessagesname' => 'Nom',
-'allmessagesdefault' => 'Text per defecte',
-'allmessagescurrent' => 'Text actual',
-'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [http://translatewiki.net translatewiki.net].",
-'allmessagesnotsupportedDB' => "No es pot processar '''{{ns:special}}:Allmessages''' perquè la variable '''\$wgUseDatabaseMessages''' està desactivada.",
-'allmessagesfilter' => 'Cerca etiqueta de missatge:',
-'allmessagesmodified' => 'Mostra només missatges modificats',
+'allmessages' => 'Tots els missatges del sistema',
+'allmessagesname' => 'Nom',
+'allmessagesdefault' => 'Text per defecte',
+'allmessagescurrent' => 'Text actual',
+'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [http://translatewiki.net translatewiki.net].",
+'allmessagesnotsupportedDB' => "No es pot processar '''{{ns:special}}:Allmessages''' perquè la variable '''\$wgUseDatabaseMessages''' està desactivada.",
+'allmessages-filter-legend' => 'Filtre',
+'allmessages-filter' => "Filtra per l'estat de personalització:",
+'allmessages-filter-unmodified' => 'Sense modificar',
+'allmessages-filter-all' => 'Tots',
+'allmessages-filter-modified' => 'Modificat',
+'allmessages-prefix' => 'Filtra per prefix:',
+'allmessages-language' => 'Llengua:',
+'allmessages-filter-submit' => 'Vés-hi',
# Thumbnails
'thumbnail-more' => 'Amplia',
@@ -2330,6 +2491,9 @@ En el darrer cas, podeu fer servir un enllaç com ara [[{{#Special:Export}}/{{Me
'djvu_no_xml' => "No s'ha pogut recollir l'XML per al fitxer DjVu",
'thumbnail_invalid_params' => 'Els paràmetres de les miniatures no són vàlids',
'thumbnail_dest_directory' => "No s'ha pogut crear el directori de destinació",
+'thumbnail_image-type' => "Tipus d'imatge no contemplat",
+'thumbnail_gd-library' => 'Configuració de la biblioteca GD incompleta: falta la funció $1',
+'thumbnail_image-missing' => 'Sembla que falta el fitxer: $1',
# Special:Import
'import' => 'Importa les pàgines',
@@ -2394,6 +2558,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
'tooltip-ca-viewsource' => 'Aquesta pàgina està protegida. Podeu veure el seu codi font.',
'tooltip-ca-history' => "Versions antigues d'aquesta pàgina.",
'tooltip-ca-protect' => 'Protegeix aquesta pàgina.',
+'tooltip-ca-unprotect' => 'Desprotegeix la pàgina',
'tooltip-ca-delete' => 'Elimina aquesta pàgina',
'tooltip-ca-undelete' => 'Restaura les edicions fetes a aquesta pàgina abans de que fos esborrada.',
'tooltip-ca-move' => 'Reanomena aquesta pàgina',
@@ -2404,6 +2569,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
'tooltip-search-fulltext' => 'Cerca a les pàgines aquest text',
'tooltip-p-logo' => 'Pàgina principal',
'tooltip-n-mainpage' => 'Visiteu la pàgina principal.',
+'tooltip-n-mainpage-description' => 'Vegeu la pàgina principal',
'tooltip-n-portal' => 'Sobre el projecte, què podeu fer, on podeu trobar coses.',
'tooltip-n-currentevents' => "Per trobar informació general sobre l'actualitat.",
'tooltip-n-recentchanges' => 'La llista de canvis recents a la wiki.',
@@ -2456,10 +2622,12 @@ Permet afegir un motiu al resum.',
# Attribution
'anonymous' => 'Usuari{{PLURAL:$1| anònim|s anònims}} del projecte {{SITENAME}}',
'siteuser' => 'Usuari $1 del projecte {{SITENAME}}',
-'lastmodifiedatby' => 'Va modificar-se la pàgina per darrera vegada el $2, $1 per $3.', # $1 date, $2 time, $3 user
+'anonuser' => '$1, usuari anònim de {{SITENAME}}',
+'lastmodifiedatby' => 'Va modificar-se la pàgina per darrera vegada el $2, $1 per $3.',
'othercontribs' => 'Basat en les contribucions de $1.',
'others' => 'altres',
'siteusers' => 'Usuari{{PLURAL:$2||s}} $1 de {{SITENAME}}',
+'anonusers' => '$1, {{PLURAL:$2|usuari anònim|usuaris anònims}} de {{SITENAME}}',
'creditspage' => 'Crèdits de la pàgina',
'nocredits' => 'No hi ha títols disponibles per aquesta pàgina.',
@@ -2493,11 +2661,22 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
'mw_math_modern' => 'Recomanat per a navegadors moderns',
'mw_math_mathml' => 'MathML si és possible (experimental)',
+# Math errors
+'math_failure' => "No s'ha pogut entendre",
+'math_unknown_error' => 'error desconegut',
+'math_unknown_function' => 'funció desconeguda',
+'math_lexing_error' => 'error de lèxic',
+'math_syntax_error' => 'error de sintaxi',
+'math_image_error' => "Hi ha hagut una errada en la conversió cap el format PNG; verifiqueu la instaŀlació de ''latex'', ''dvips'', ''gs'' i ''convert''.",
+'math_bad_tmpdir' => 'No ha estat possible crear el directori temporal de math o escriure-hi dins.',
+'math_bad_output' => "No ha estat possible crear el directori d'eixida de math o escriure-hi dins.",
+'math_notexvc' => "No s'ha trobat el fitxer executable ''texvc''; si us plau, vegeu math/README per a configurar-lo.",
+
# Patrolling
'markaspatrolleddiff' => 'Marca com a supervisat',
'markaspatrolledtext' => 'Marca la pàgina com a supervisada',
'markedaspatrolled' => 'Marca com a supervisat',
-'markedaspatrolledtext' => "S'ha marcat la revisió seleccionada com supervisada.",
+'markedaspatrolledtext' => 'La revisió seleccionada de [[:$1]] ha estat marcada com a patrullada.',
'rcpatroldisabled' => "S'ha inhabilitat la supervisió dels canvis recents",
'rcpatroldisabledtext' => 'La funció de supervisió de canvis recents està actualment inhabilitada.',
'markedaspatrollederror' => 'No es pot marcar com a supervisat',
@@ -2527,13 +2706,10 @@ $1",
'previousdiff' => "← Vés a l'edició anterior",
'nextdiff' => "Vés a l'edició següent →",
-# Visual comparison
-'visual-comparison' => 'Comparació visual',
-
# Media information
'mediawarning' => "'''Advertència''': Aquest fitxer podria contenir codi maliciós.
Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
-'imagemaxsize' => "Limita les imatges de les pàgines de descripció d'imatges a:",
+'imagemaxsize' => "Límit de mida d'imatges:<br />''(per a pàgines de descripció de fitxers)''",
'thumbsize' => 'Mida de la miniatura:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgines}}',
'file-info' => '(mida: $1, tipus MIME: $2)',
@@ -2542,6 +2718,8 @@ Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
'svg-long-desc' => '(fitxer SVG, nominalment $1 × $2 píxels, mida del fitxer: $3)',
'show-big-image' => 'Imatge en màxima resolució',
'show-big-image-thumb' => "<small>Mida d'aquesta previsualització: $1 × $2 píxels</small>",
+'file-info-gif-looped' => 'embuclat',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogrames}}',
# Special:NewFiles
'newimages' => 'Galeria de nous fitxers',
@@ -2576,7 +2754,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Amplada',
@@ -2703,14 +2881,14 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-unknowndate' => 'Data desconeguda',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Invertit horitzontalment', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Girat 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Invertit verticalment', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotat 90° en sentit antihorari i invertit verticalment', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotat 90° en sentit horari', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotat 90° en sentit horari i invertit verticalment', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotat 90° en sentit antihorari', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Invertit horitzontalment',
+'exif-orientation-3' => 'Girat 180°',
+'exif-orientation-4' => 'Invertit verticalment',
+'exif-orientation-5' => 'Rotat 90° en sentit antihorari i invertit verticalment',
+'exif-orientation-6' => 'Rotat 90° en sentit horari',
+'exif-orientation-7' => 'Rotat 90° en sentit horari i invertit verticalment',
+'exif-orientation-8' => 'Rotat 90° en sentit antihorari',
'exif-planarconfiguration-1' => 'a blocs densos (chunky)',
'exif-planarconfiguration-2' => 'format pla',
@@ -2835,7 +3013,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-gpsmeasuremode-2' => 'Mesura bidimensional',
'exif-gpsmeasuremode-3' => 'Mesura tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilòmetres per hora',
'exif-gpsspeed-m' => 'Milles per hora',
'exif-gpsspeed-n' => 'Nusos',
@@ -2854,6 +3032,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'watchlistall2' => 'totes',
'namespacesall' => 'tots',
'monthsall' => 'tots',
+'limitall' => 'tots',
# E-mail address confirmation
'confirmemail' => "Confirma l'adreça de correu electrònic",
@@ -2987,7 +3166,7 @@ També podeu [[Special:Watchlist/edit|utilitzar l'editor estàndard]].",
'duplicate-defaultsort' => 'Atenció: La clau d\'ordenació per defecte "$2" invalida l\'anterior clau "$1".',
# Special:Version
-'version' => 'Versió', # Not used as normal message but as header for the special page itself
+'version' => 'Versió',
'version-extensions' => 'Extensions instaŀlades',
'version-specialpages' => 'Pàgines especials',
'version-parserhooks' => "Extensions de l'analitzador",
@@ -3001,7 +3180,7 @@ També podeu [[Special:Watchlist/edit|utilitzar l'editor estàndard]].",
'version-skin-extension-functions' => "Funcions d'extensió per l'aparença (skin)",
'version-hook-name' => 'Nom del lligam',
'version-hook-subscribedby' => 'Subscrit per',
-'version-version' => 'Versió',
+'version-version' => '(Versió $1)',
'version-license' => 'Llicència',
'version-software' => 'Programari instaŀlat',
'version-software-product' => 'Producte',
@@ -3082,4 +3261,15 @@ Introduïu el nom del fitxer sense el prefix «{{ns:file}}:».",
'dberr-outofdate' => 'Tingueu en compte que la seva indexació del nostre contingut pot no estar actualitzada.',
'dberr-cachederror' => 'A continuació hi ha una còpia emmagatzemada de la pàgina demanada, que pot no estar actualitzada.',
+# HTML forms
+'htmlform-invalid-input' => 'Hi ha problemes amb alguna de les seves entrades',
+'htmlform-select-badoption' => 'El valor que heu especificat no és una opció vàlida.',
+'htmlform-int-invalid' => 'El valor que heu especificat no és un nombre enter.',
+'htmlform-float-invalid' => 'El valor especificat no és un nombre.',
+'htmlform-int-toolow' => 'El valor que heu especifcat està per sota del mínim de $1',
+'htmlform-int-toohigh' => 'El valor que heu especificat està per sobre del màxim de $1',
+'htmlform-submit' => 'Tramet',
+'htmlform-reset' => 'Desfés els canvis',
+'htmlform-selectorother-other' => 'Altres',
+
);
diff --git a/languages/messages/MessagesCbk_zam.php b/languages/messages/MessagesCbk_zam.php
index 512b9f80..0a4f4fbe 100644
--- a/languages/messages/MessagesCbk_zam.php
+++ b/languages/messages/MessagesCbk_zam.php
@@ -54,7 +54,7 @@ $messages = array(
'views' => 'Maga vista',
'categorypage' => 'Mira con el pagina de categoria',
'otherlanguages' => 'na otro maga lenguaje',
-'lastmodifiedat' => 'Ya modifica con este pagina por ultimo vez en hora $2 del $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ya modifica con este pagina por ultimo vez en hora $2 del $1.',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Acerca de {{SITENAME}}',
@@ -107,7 +107,12 @@ El contraseña de este nuevo cuenta puede cambia na pagina ''[[Special:ChangePas
'allarticles' => 'Todo maga articulo',
# Special:Categories
-'categories' => 'Maga categoria',
+'categories' => 'Maga categoria',
+'categoriespagetext' => 'El maga siguiente {{PLURAL:$1|categoria tiene|categoria tiene}} maga pagina o medio de comunicacion.
+
+El maga [[Special:UnusedCategories|categoria sin usando]] jendeh ta abuya aqui.
+
+Por favor mira tambien el maga [[Special:WantedCategories|categoria requeridas]].',
# Watchlist
'watch' => 'Vicia',
diff --git a/languages/messages/MessagesCdo.php b/languages/messages/MessagesCdo.php
index 88dc49cd..a561ae77 100644
--- a/languages/messages/MessagesCdo.php
+++ b/languages/messages/MessagesCdo.php
@@ -92,17 +92,19 @@ $messages = array(
'category-empty' => "''Ciā lôi-biék â-dā̤ hiêng-câi mò̤ ùng-ciŏng iâ mò̤ muòi-tā̤ ùng-giông.''",
'listingcontinuesabbrev' => '(gié-sṳ̆k sèng-dāu)',
-'about' => 'Guăng-ṳ̀',
-'article' => 'Ùng-ciŏng',
-'newwindow' => '(găk sĭng chŏng-tā̤ tāu kŭi)',
-'cancel' => 'Chṳ̄-siĕu',
+'about' => 'Guăng-ṳ̀',
+'article' => 'Ùng-ciŏng',
+'newwindow' => '(găk sĭng chŏng-tā̤ tāu kŭi)',
+'cancel' => 'Chṳ̄-siĕu',
+'moredotdotdot' => 'Gáing sâ̤...',
+'mypage' => 'Nguāi gì hiĕk-miêng',
+'mytalk' => 'Nguāi gì tō̤-lâung',
+'anontalk' => 'Cī ciáh IP gì tō̤-lâung-hiĕk',
+'navigation' => 'Īng-dô̤',
+'and' => '&#32;gâe̤ng',
+
+# Cologne Blue skin
'qbspecialpages' => 'Dĕk-sṳ̀ hiĕk',
-'moredotdotdot' => 'Gáing sâ̤...',
-'mypage' => 'Nguāi gì hiĕk-miêng',
-'mytalk' => 'Nguāi gì tō̤-lâung',
-'anontalk' => 'Cī ciáh IP gì tō̤-lâung-hiĕk',
-'navigation' => 'Īng-dô̤',
-'and' => '&#32;gâe̤ng',
'returnto' => 'Duōng kó̤ $1.',
'tagline' => 'Lài-nguòng: {{SITENAME}}',
@@ -138,7 +140,7 @@ $messages = array(
'otherlanguages' => 'Gì-tă gì ngṳ̄-ngiòng',
'redirectedfrom' => '(Iù $1 dêng-hióng lì gì)',
'redirectpagesub' => 'Dṳ̀ng-sĭng dêng-hióng hiĕk',
-'lastmodifiedat' => 'Ciā hiĕk-miêng sê diŏh $2, $1 có̤i-hâiu siŭ-gāi gì.', # $1 date, $2 time
+'lastmodifiedat' => 'Ciā hiĕk-miêng sê diŏh $2, $1 có̤i-hâiu siŭ-gāi gì.',
'protectedpage' => 'Bō̤-hô hiĕk',
'jumpto' => 'Tiéu gáu:',
'jumptonavigation' => 'īng-dô̤',
@@ -148,7 +150,6 @@ $messages = array(
'aboutsite' => 'Guăng-ṳ̀ {{SITENAME}}',
'aboutpage' => 'Project:Guăng-ṳ̀',
'copyright' => 'Buōng câng gì cṳ̆-lâiu dŭ sê gŏng-gé̤ṳ $1 huák-buó gì.',
-'copyrightpagename' => '{{SITENAME}} bēng-guòng',
'copyrightpage' => '{{ns:project}}:Bēng-guòng',
'currentevents' => 'Duâi chéu â',
'currentevents-url' => 'Project:Duâi chéu â',
@@ -196,8 +197,6 @@ $messages = array(
# General errors
'databaseerror' => 'Só-gé̤ṳ-kó ô dâng',
-'noconnect' => 'Dó̤i-bók-cê̤ṳ! Wiki huák-sĕng gié-sŭk kòng-nàng, mò̤ nièng-ngài lièng gáu só-gé̤ṳ-kó hŭk-ô-ké. <br />
-$1',
'readonly' => 'Só-gé̤ṳ-kó ké̤ṳk sō̤ kī',
'readonlytext' => 'Só-gé̤ṳ-kó cī-buàng ké̤ṳk nè̤ng sō̤ kī lāu, mâ̤-sāi siā sĭng dèu-mĕ̤k hĕ̤k có̤ siŭ-gāi, ô kō̤-nèng sê ôi-lāu nĭk-siòng mì-hô, cĭ-hâiu cêu â̤ ciáng-siòng.
@@ -213,13 +212,11 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
'editinginterface' => "'''Gīng-gó̤:''' Nṳ̄ hiêng-câi lā̤ siŭ-gāi hiê-tūng gái-miêng gì hiĕk. Dó̤i ciā hiĕk gì gāi-biéng â̤ īng-hiōng gì-tă ê̤ṳng-hô gì gái-miêng.",
# Login and logout pages
-'logouttitle' => 'Ê̤ṳng-hô láuk-chók',
'logouttext' => "'''Nṳ̄ hiêng-câi láuk-chók lāu.'''
Nṳ̄ â̤-sāi sāi mò̤-miàng huŏng-sék gié-sṳ̆k găk {{SITENAME}} gè̤-dēng láuk, nṳ̄ iâ â̤-sāi sāi dè̤ng-iông gì dióng-hô̤ hĕ̤k-ciā bĕk-nó̤h bĭk dióng-hô̤ gái láuk-diē. Diŏh gé lā̤, nṳ̄ báuk-lāng-ké ká̤-chṳ̄ (''browser cache'') nâ mò̤ tĕ̤ng táh gó̤ uâ, ô gì hiĕk giăng â̤ hiēng-sê nṳ̄ gó muôi láuk-chók.",
'welcomecreation' => '== Huăng-ngìng guŏng-lìng, $1! ==
Nṳ̄ gì dióng-hô̤ ī-gĭng kŭi hō̤ lāu. Dāng nṳ̄ â̤-sāi siŭ-gāi nṳ̄ găk {{SITENAME}} gì siék-diâng.',
-'loginpagetitle' => 'Ê̤ṳng-hô láuk-diē',
'yourname' => 'Ê̤ṳng-hô-miàng',
'yourpassword' => 'Mĭk-mā',
'yourpasswordagain' => 'Dṳ̀ng-sĭng páh diē mĭk-mā',
@@ -235,15 +232,7 @@ Nṳ̄ gì dióng-hô̤ ī-gĭng kŭi hō̤ lāu. Dāng nṳ̄ â̤-sāi siŭ-g
'createaccount' => 'Kŭi dióng-hô̤',
'gotaccount' => "Ī-gĭng ô dióng-hô lāu? '''$1'''.",
'gotaccountlink' => 'Láuk-diē',
-'youremail' => 'Diêng-piĕ:',
-'username' => 'Ê̤ṳng-hô-miàng:',
-'uid' => 'Ê̤ṳng-hô ID:',
-'yourrealname' => 'Cĭng miàng:',
-'yourlanguage' => 'Ngṳ̄-ngiòng:',
-'yournick' => 'Nguôi-hô̤:',
-'email' => 'Diêng-piĕ',
'loginerror' => 'Láuk-diē ô dâng',
-'prefs-help-email' => '* Diêng-piĕ (kō̤-sōng): Â̤-kīng bĕk-nè̤ng mâ̤ báik nṳ̄ sĭng-hông cêu dĭk-ciék tŭng-guó nṳ̄ gì ê̤ṳng-hô-hiĕk hĕ̤k tō̤-lâung-hiĕk lièng-hiê nṳ̄.',
'loginsuccesstitle' => 'Láuk-diē sìng-gŭng',
'loginsuccess' => "'''Nṳ̄ hiêng-câi ī-gĭng ī \"\$1\" gì sĭng-hông láuk diē {{SITENAME}} lāu.'''",
'nosuchuser' => 'Mò̤ cūng-kuāng gì ê̤ṳng-hô-miàng "$1". Giēng-chă nṳ̄ gì pĭng-siā, hĕ̤k-ciā kŭi 1 ciáh sĭng dióng-hô̤.',
@@ -278,47 +267,47 @@ Siŭ gáu hâiu, chiāng gái láuk diē siŏh làu.',
'media_tip' => 'Mùi-tā̤ ùng-giông lièng-giék',
# Edit pages
-'summary' => 'Cūng-giék:',
-'subject' => 'Dà̤-mĕ̤k/biĕu-dà̤:',
-'minoredit' => 'Guó-éu siŭ-gāi',
-'watchthis' => 'Gáng-sê ciā hiĕk',
-'savearticle' => 'Bō̤-còng ciā hiĕk',
-'preview' => 'Ché káng mâing',
-'showpreview' => 'Ché káng mâing',
-'showdiff' => 'Káng gāi-biéng gì buô-hông',
-'anoneditwarning' => "'''GĪNG-GÓ̤:''' Nṳ̄ muôi láuk-diē.
+'summary' => 'Cūng-giék:',
+'subject' => 'Dà̤-mĕ̤k/biĕu-dà̤:',
+'minoredit' => 'Guó-éu siŭ-gāi',
+'watchthis' => 'Gáng-sê ciā hiĕk',
+'savearticle' => 'Bō̤-còng ciā hiĕk',
+'preview' => 'Ché káng mâing',
+'showpreview' => 'Ché káng mâing',
+'showdiff' => 'Káng gāi-biéng gì buô-hông',
+'anoneditwarning' => "'''GĪNG-GÓ̤:''' Nṳ̄ muôi láuk-diē.
Nṳ̄ gì IP dê-cī â̤ ké̤ṳk gé diŏh ciā hiĕk-miêng siŭ-gāi lĭk-sṳ̄ diē-sié.",
-'summary-preview' => 'Cūng-giék ché-káng:',
-'blockedtitle' => 'Ê̤ṳng-hô ké̤ṳk hŭng-sō̤ lāu',
-'loginreqtitle' => 'Chiāng sĕng láuk-diē',
-'loginreqlink' => 'Láuk-diē',
-'loginreqpagetext' => 'Sĕng $1 ciáh â̤-sāi káng gì-tă hiĕk-miêng.',
-'accmailtitle' => 'Mĭk-mā gié chók lāu.',
-'accmailtext' => '"$1" gì mĭk-mā ī-gĭng gié ké̤ṳk $2 lāu.',
-'newarticle' => '(Sĭng)',
-'newarticletext' => "Nṳ̄ téng 1 ciáh lièng-giék lì gáu cī miêng gó muôi còng-câi gì hiĕk. Buóh kī-chiū piĕng-siā ciā hiĕk, chiāng diŏh â-dā̤ gì bēng-bēng diē-sié páh cê (chăng-kō̤ [[Help:Mŭk-liŏh]] liēu-gāi gáing sâ̤ séng-sék). Iŏk-sṳ̄ nṳ̄ huák-hiêng cê-gă giàng dâng gó̤, nâ dĭh áik báuk-lāng-ké (''browser'') gì \"'''duōng kó̤ sèng 1 hiĕk'''\" (''back'') cêu â̤-sāi lāu.",
-'anontalkpagetext' => "----''Cī tiŏng tō̤-lâung-hiĕk mò̤ gó-dêng gì dióng-hô̤, nâ ô 1 ciáh IP dê-cī. Chiāng cé̤ṳ-é: Kō̤-nèng ng-nié 1 ciáh nè̤ng sāi-ê̤ṳng cī ciáh IP dê-cī. Iŏk-sṳ̄ nṳ̄ gó muôi kŭi 1 ciáh dióng-hô̤ bêng-chiā giéng-gáe̤k ciā làu-uâ sê làu ké̤ṳk nṳ̄ gì, chiāng nṳ̄ [[Special:UserLogin|kŭi 1 ciáh dióng-hô̤ hĕ̤k-ciā láuk-diē]], cêu â̤ piáh-miēng ī-hâiu gái huák-sĕng cūng-kuāng ông-dà̤.''",
-'noarticletext' => 'Ciā hiĕk-miêng gà̤-dēng mò̤ ùng-cê. Nṳ̄ â̤-sāi găk gì-tă hiĕk-miêng [[Special:Search̤/{{PAGENAME}}|sìng-tō̤ ĭ gì biĕu-dà̤]] hĕ̤k-ciā [{{fullurl:{{FULLPAGENAME}}|action=edit}} cê-gă siā].',
-'clearyourcache' => "'''Cé̤ṳ-é:''' Bō̤-còng cĭ hâiu, kō̤-nèng diŏh tĕ̤ng táh báuk-lāng-ké gì ká̤-chṳ̄ ciáh â̤ káng-giéng diŏh gāi-biéng. '''Mozilla / Firefox / Safari:''' áik ''Reload'' sèng-âu áik diâng ''Shift'', hĕ̤k-ciā áik ''Ctrl-Shift-R'' (Apple Mac sê ''Cmd-Shift-R''); '''IE:''' áik ''Refresh'' sèng-âu áik diâng ''Ctrl'', hĕ̤k-ciā áik ''Ctrl-F5''; '''Konqueror:''' nâ sāi áik ''Reload'', hĕ̤k-ciā áik ''F5''; '''Opera''' ê̤ṳng-hô buóh tĕ̤ng táh ká̤-chṳ̄, chiāng sāi gă-sĭ ''Tools→Preferences''.",
-'previewnote' => "'''Cé̤ṳ-é: Cuòi nâ sê ché káng ùng-cê gì iông-sék; nṳ̄ sū có̤ gì siŭ-gāi gó muôi bō̤-còng!'''",
-'editing' => 'Siŭ-gāi $1',
-'editingsection' => 'Siŭ-gāi $1 (dâung)',
-'editingcomment' => 'Siŭ-gāi $1 (pàng-lâung)',
-'editconflict' => 'Siŭ-gāi dó̤i-chṳ̆ng: $1',
-'explainconflict' => 'Bĕk-nè̤ng diŏh nṳ̄ tā-sĕng siŭ-gāi cī miêng hiĕk gì sèng-âu ô có̤ gì-tă siŭ-gāi. Gà̤-dēng gì bēng-bēng hiēng-sê gì sê hiêng-câi có̤i sĭng gì bēng-buōng. Nṳ̄ sū có̤ gì gāi-biéng găk â-dā̤ gì bēng-bēng diē-sié. Nṳ̄ sṳ̆-iéu găk gà̤-dēng gì bēng-bēng diē-sié cīng-hăk nṳ̄ lâng ciáh nè̤ng sū có̤ gì gāi-biéng. Iŏk-guō nṳ̄ dĭk-ciék áik "Bō̤-còng ciā hiĕk", <b>nâ ô</b> gà̤-dēng bēng-bēng diē-sié gì ùng-cê â̤ ké̤ṳk bō̤-còng.',
-'yourtext' => 'Nṳ̄ gì ùng-cê',
-'editingold' => "'''GĪNG-GÓ̤: Nṳ̄ hiêng-câi lā̤ siŭ-gāi ciā hiĕk-miêng ī-gĭng guó-gĭ gì bēng-buōng. Nṳ̄ nâ bō̤-còng ĭ, cī ciáh gô bēng-buōng cĭ-hâiu gì siŭ-gāi cêu mò̤ lāu.'''",
-'yourdiff' => 'Chă-biék',
-'longpagewarning' => "'''Gīng-gó̤: Buōng hiĕk ô $1 chiĕng-cê-ciék (''kilobyte'') dòng; ô siŏh piĕ báuk-lāng-ké (''browser'') mò̤ nièng-ngài piĕng-cĭk 32 chiĕng-cê-ciék cō̤-êu hĕ̤k-ciā gă dòng gì hiĕk. Chiāng sṳ̆-liòng ciŏng ciā hiĕk tiáh có̤ gă dōi gì dâung.'''",
-'readonlywarning' => "'''Gīng-gó̤: Ôi lāu mì-hô buōng câng, só-gé̤ṳ-kó ké̤ṳk sō̤ kī lāu, gó-chṳ̄ cī-lùng nṳ̄ mò̤ nièng-ngài bō̤-còng nṳ̄ gì siŭ-gāi. Chiāng sĕng bō̤-còng diŏh nṳ̄ diêng-nō̤ buōng-dê, dīng nék-gū mâing gái ché.'''",
-'protectedpagewarning' => "'''GĪNG-GÓ̤: Ciā hiĕk ī-gĭng ké̤ṳk sō̤ kī go̤ lāu, nâ ô guāng-lī-uòng â̤ siŭ-gāi ĭ.'''",
-'semiprotectedpagewarning' => "'''Cé̤ṳ-é:''' Ciā hiĕk-miêng ī-gĭng ké̤ṳk bō̤-hô, gó-chṳ̄ nâ ô láuk-diē gì ê̤ṳng-hô â̤-sāi siŭ-gāi ĭ.",
-'templatesused' => 'Ciā hiĕk gà̤-dēng gì muò-bēng:',
-'templatesusedpreview' => 'Ciā ché-káng-hiĕk gà̤-dēng gì muò-bēng:',
-'templatesusedsection' => 'Cī dâung diē-sié gì muò-bēng:',
-'template-protected' => '(bō̤-hô)',
-'template-semiprotected' => '(buáng bō̤-hô)',
-'recreate-deleted-warn' => "'''Gīng-gó̤: Nṳ̄ ciŏng-buóh dṳ̀ng-sĭng kŭi siŏh tiŏng gô-dā̤ ké̤ṳk chēng lâi gì hiĕk.'''
+'summary-preview' => 'Cūng-giék ché-káng:',
+'blockedtitle' => 'Ê̤ṳng-hô ké̤ṳk hŭng-sō̤ lāu',
+'loginreqtitle' => 'Chiāng sĕng láuk-diē',
+'loginreqlink' => 'Láuk-diē',
+'loginreqpagetext' => 'Sĕng $1 ciáh â̤-sāi káng gì-tă hiĕk-miêng.',
+'accmailtitle' => 'Mĭk-mā gié chók lāu.',
+'accmailtext' => '"$1" gì mĭk-mā ī-gĭng gié ké̤ṳk $2 lāu.',
+'newarticle' => '(Sĭng)',
+'newarticletext' => "Nṳ̄ téng 1 ciáh lièng-giék lì gáu cī miêng gó muôi còng-câi gì hiĕk. Buóh kī-chiū piĕng-siā ciā hiĕk, chiāng diŏh â-dā̤ gì bēng-bēng diē-sié páh cê (chăng-kō̤ [[Help:Mŭk-liŏh]] liēu-gāi gáing sâ̤ séng-sék). Iŏk-sṳ̄ nṳ̄ huák-hiêng cê-gă giàng dâng gó̤, nâ dĭh áik báuk-lāng-ké (''browser'') gì \"'''duōng kó̤ sèng 1 hiĕk'''\" (''back'') cêu â̤-sāi lāu.",
+'anontalkpagetext' => "----''Cī tiŏng tō̤-lâung-hiĕk mò̤ gó-dêng gì dióng-hô̤, nâ ô 1 ciáh IP dê-cī. Chiāng cé̤ṳ-é: Kō̤-nèng ng-nié 1 ciáh nè̤ng sāi-ê̤ṳng cī ciáh IP dê-cī. Iŏk-sṳ̄ nṳ̄ gó muôi kŭi 1 ciáh dióng-hô̤ bêng-chiā giéng-gáe̤k ciā làu-uâ sê làu ké̤ṳk nṳ̄ gì, chiāng nṳ̄ [[Special:UserLogin|kŭi 1 ciáh dióng-hô̤ hĕ̤k-ciā láuk-diē]], cêu â̤ piáh-miēng ī-hâiu gái huák-sĕng cūng-kuāng ông-dà̤.''",
+'noarticletext' => 'Ciā hiĕk-miêng gà̤-dēng mò̤ ùng-cê. Nṳ̄ â̤-sāi găk gì-tă hiĕk-miêng [[Special:Search̤/{{PAGENAME}}|sìng-tō̤ ĭ gì biĕu-dà̤]] hĕ̤k-ciā [{{fullurl:{{FULLPAGENAME}}|action=edit}} cê-gă siā].',
+'clearyourcache' => "'''Cé̤ṳ-é:''' Bō̤-còng cĭ hâiu, kō̤-nèng diŏh tĕ̤ng táh báuk-lāng-ké gì ká̤-chṳ̄ ciáh â̤ káng-giéng diŏh gāi-biéng. '''Mozilla / Firefox / Safari:''' áik ''Reload'' sèng-âu áik diâng ''Shift'', hĕ̤k-ciā áik ''Ctrl-Shift-R'' (Apple Mac sê ''Cmd-Shift-R''); '''IE:''' áik ''Refresh'' sèng-âu áik diâng ''Ctrl'', hĕ̤k-ciā áik ''Ctrl-F5''; '''Konqueror:''' nâ sāi áik ''Reload'', hĕ̤k-ciā áik ''F5''; '''Opera''' ê̤ṳng-hô buóh tĕ̤ng táh ká̤-chṳ̄, chiāng sāi gă-sĭ ''Tools→Preferences''.",
+'previewnote' => "'''Cé̤ṳ-é: Cuòi nâ sê ché káng ùng-cê gì iông-sék; nṳ̄ sū có̤ gì siŭ-gāi gó muôi bō̤-còng!'''",
+'editing' => 'Siŭ-gāi $1',
+'editingsection' => 'Siŭ-gāi $1 (dâung)',
+'editingcomment' => 'Siŭ-gāi $1 (pàng-lâung)',
+'editconflict' => 'Siŭ-gāi dó̤i-chṳ̆ng: $1',
+'explainconflict' => 'Bĕk-nè̤ng diŏh nṳ̄ tā-sĕng siŭ-gāi cī miêng hiĕk gì sèng-âu ô có̤ gì-tă siŭ-gāi. Gà̤-dēng gì bēng-bēng hiēng-sê gì sê hiêng-câi có̤i sĭng gì bēng-buōng. Nṳ̄ sū có̤ gì gāi-biéng găk â-dā̤ gì bēng-bēng diē-sié. Nṳ̄ sṳ̆-iéu găk gà̤-dēng gì bēng-bēng diē-sié cīng-hăk nṳ̄ lâng ciáh nè̤ng sū có̤ gì gāi-biéng. Iŏk-guō nṳ̄ dĭk-ciék áik "Bō̤-còng ciā hiĕk", <b>nâ ô</b> gà̤-dēng bēng-bēng diē-sié gì ùng-cê â̤ ké̤ṳk bō̤-còng.',
+'yourtext' => 'Nṳ̄ gì ùng-cê',
+'editingold' => "'''GĪNG-GÓ̤: Nṳ̄ hiêng-câi lā̤ siŭ-gāi ciā hiĕk-miêng ī-gĭng guó-gĭ gì bēng-buōng. Nṳ̄ nâ bō̤-còng ĭ, cī ciáh gô bēng-buōng cĭ-hâiu gì siŭ-gāi cêu mò̤ lāu.'''",
+'yourdiff' => 'Chă-biék',
+'longpagewarning' => "'''Gīng-gó̤: Buōng hiĕk ô $1 chiĕng-cê-ciék (''kilobyte'') dòng; ô siŏh piĕ báuk-lāng-ké (''browser'') mò̤ nièng-ngài piĕng-cĭk 32 chiĕng-cê-ciék cō̤-êu hĕ̤k-ciā gă dòng gì hiĕk. Chiāng sṳ̆-liòng ciŏng ciā hiĕk tiáh có̤ gă dōi gì dâung.'''",
+'readonlywarning' => "'''Gīng-gó̤: Ôi lāu mì-hô buōng câng, só-gé̤ṳ-kó ké̤ṳk sō̤ kī lāu, gó-chṳ̄ cī-lùng nṳ̄ mò̤ nièng-ngài bō̤-còng nṳ̄ gì siŭ-gāi. Chiāng sĕng bō̤-còng diŏh nṳ̄ diêng-nō̤ buōng-dê, dīng nék-gū mâing gái ché.'''",
+'protectedpagewarning' => "'''GĪNG-GÓ̤: Ciā hiĕk ī-gĭng ké̤ṳk sō̤ kī go̤ lāu, nâ ô guāng-lī-uòng â̤ siŭ-gāi ĭ.'''",
+'semiprotectedpagewarning' => "'''Cé̤ṳ-é:''' Ciā hiĕk-miêng ī-gĭng ké̤ṳk bō̤-hô, gó-chṳ̄ nâ ô láuk-diē gì ê̤ṳng-hô â̤-sāi siŭ-gāi ĭ.",
+'templatesused' => 'Ciā hiĕk gà̤-dēng gì muò-bēng:',
+'templatesusedpreview' => 'Ciā ché-káng-hiĕk gà̤-dēng gì muò-bēng:',
+'templatesusedsection' => 'Cī dâung diē-sié gì muò-bēng:',
+'template-protected' => '(bō̤-hô)',
+'template-semiprotected' => '(buáng bō̤-hô)',
+'recreate-moveddeleted-warn' => "'''Gīng-gó̤: Nṳ̄ ciŏng-buóh dṳ̀ng-sĭng kŭi siŏh tiŏng gô-dā̤ ké̤ṳk chēng lâi gì hiĕk.'''
Nṳ̄ găi-dŏng sṳ̆-liòng lâ, sié lŏ̤h piĕng-cĭk ciā hiĕk-miêng ô gák céng-cháik mò̤. Ôi lāu că-sùng lê-biêng, ciā hiĕk-miêng gì chēng hiĕk nĭk-cé găk cŭ-uái â̤ tō̤ diŏh:",
@@ -367,43 +356,46 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
'searchresulttext' => 'Buóh liēu-gāi diŏh {{SITENAME}} sìng-tō̤ ùng-ciŏng gì gáing sâ̤ séng-sék, chiāng chăng-kō̤ [[{{ns:project}}:Sìng-tō̤]].',
'searchsubtitle' => "Nṳ̄ sìng-tō̤ '''[[:$1]]'''",
'searchsubtitleinvalid' => "Nṳ̄ sìng-tō̤ '''$1'''",
-'noexactmatch' => "'''Tō̤ mâ̤ diŏh dū-dū siŏh-iông gì miàng \"\$1\".''' Nṳ̄ â̤-sāi [[:\$1|cê-gă siā]].",
-'prevn' => 'sèng $1 hâung',
-'nextn' => 'â $1 hâung',
-'viewprevnext' => 'Káng ($1) ($2) ($3).',
+'prevn' => 'sèng {{PLURAL:$1|$1}} hâung',
+'nextn' => 'â {{PLURAL:$1|$1}} hâung',
+'viewprevnext' => 'Káng ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Mŭk-liŏh',
'showingresults' => "Hiēng-sê téng #<b>$2</b> kăi-sṳ̄ gì {{PLURAL:$1|'''1'''|'''$1'''}} bĭk giék-guō.",
'showingresultsnum' => "Hiēng-sê téng #<b>$2</b> kăi-sṳ̄ gì {{PLURAL:$3|'''1'''|'''$3'''}} bĭk giék-guō.",
# Preferences page
-'preferences' => 'Siék-diâng',
-'mypreferences' => 'Nguāi gì siék-diâng',
-'prefs-edits' => 'Siŭ-gāi ché̤ṳ-só:',
-'changepassword' => 'Gāi-biéng mĭk-mā',
-'skin' => 'Puòi-hŭ',
-'math' => 'Só-hŏk',
-'dateformat' => 'Nĭk-gĭ gáh-sék',
-'datedefault' => 'Mò̤ siék-diâng',
-'datetime' => 'Nĭk-gĭ gâe̤ng sì-găng',
-'math_unknown_error' => 'muôi báik gì dâng',
-'math_unknown_function' => 'muôi báik hàng-só',
-'prefs-personal' => 'Ê̤ṳng-hô cṳ̆-lâiu',
-'prefs-rc' => 'Cī-bŏng gì gāi-biéng',
-'prefs-watchlist' => 'Gáng-sê-dăng',
-'prefs-misc' => 'Gì-tă',
-'saveprefs' => 'Bō̤-còng',
-'resetprefs' => 'Dṳ̀ng-sĭng siék-diâng',
-'searchresultshead' => 'Sìng-tō̤',
-'resultsperpage' => 'Mūi hiĕk huōng-ông-liông:',
-'recentchangescount' => 'Cī-bŏng gāi-biéng gì dà̤-mĕ̤k:',
-'savedprefs' => 'Nṳ̄ gì siék-diâng ī-gĭng ké̤ṳk bō̤-còng hō̤ lāu.',
-'timezonelegend' => 'Sì-kṳ̆',
-'timezonetext' => 'Nṳ̄ buōng-dê sì-găng gâe̤ng hŭk-ô-ké sì-găng (UTC) siŏng-chă gì dēng-cṳ̆ng.',
-'localtime' => 'Buōng-dê sì-găng',
-'timezoneoffset' => 'Sì-chă¹',
-'servertime' => 'Hŭk-ô-ké sì-găng',
-'allowemail' => 'Â̤ kīng bĕk-nè̤ng huák diêng-piĕ ké̤ṳk nṳ̄',
-'files' => 'Ùng-giông',
+'preferences' => 'Siék-diâng',
+'mypreferences' => 'Nguāi gì siék-diâng',
+'prefs-edits' => 'Siŭ-gāi ché̤ṳ-só:',
+'changepassword' => 'Gāi-biéng mĭk-mā',
+'prefs-skin' => 'Puòi-hŭ',
+'prefs-math' => 'Só-hŏk',
+'datedefault' => 'Mò̤ siék-diâng',
+'prefs-datetime' => 'Nĭk-gĭ gâe̤ng sì-găng',
+'prefs-personal' => 'Ê̤ṳng-hô cṳ̆-lâiu',
+'prefs-rc' => 'Cī-bŏng gì gāi-biéng',
+'prefs-watchlist' => 'Gáng-sê-dăng',
+'prefs-misc' => 'Gì-tă',
+'saveprefs' => 'Bō̤-còng',
+'resetprefs' => 'Dṳ̀ng-sĭng siék-diâng',
+'searchresultshead' => 'Sìng-tō̤',
+'resultsperpage' => 'Mūi hiĕk huōng-ông-liông:',
+'recentchangescount' => 'Cī-bŏng gāi-biéng gì dà̤-mĕ̤k:',
+'savedprefs' => 'Nṳ̄ gì siék-diâng ī-gĭng ké̤ṳk bō̤-còng hō̤ lāu.',
+'timezonelegend' => 'Sì-kṳ̆',
+'localtime' => 'Buōng-dê sì-găng',
+'timezoneoffset' => 'Sì-chă¹',
+'servertime' => 'Hŭk-ô-ké sì-găng',
+'allowemail' => 'Â̤ kīng bĕk-nè̤ng huák diêng-piĕ ké̤ṳk nṳ̄',
+'prefs-files' => 'Ùng-giông',
+'youremail' => 'Diêng-piĕ:',
+'username' => 'Ê̤ṳng-hô-miàng:',
+'uid' => 'Ê̤ṳng-hô ID:',
+'yourrealname' => 'Cĭng miàng:',
+'yourlanguage' => 'Ngṳ̄-ngiòng:',
+'yournick' => 'Nguôi-hô̤:',
+'email' => 'Diêng-piĕ',
+'prefs-help-email' => '* Diêng-piĕ (kō̤-sōng): Â̤-kīng bĕk-nè̤ng mâ̤ báik nṳ̄ sĭng-hông cêu dĭk-ciék tŭng-guó nṳ̄ gì ê̤ṳng-hô-hiĕk hĕ̤k tō̤-lâung-hiĕk lièng-hiê nṳ̄.',
# User rights
'editusergroup' => 'Siŭ-gāi Ê̤ṳng-hô Cū',
@@ -438,12 +430,13 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
'boteditletter' => '^',
# Recent changes linked
-'recentchangeslinked' => 'Siŏng-guăng gì gāi-biéng',
+'recentchangeslinked' => 'Siŏng-guăng gì gāi-biéng',
+'recentchangeslinked-feed' => 'Siŏng-guăng gì gāi-biéng',
+'recentchangeslinked-toolbox' => 'Siŏng-guăng gì gāi-biéng',
# Upload
'upload' => 'Siông-duòng ùng-giông',
'uploadbtn' => 'Siông-duòng ùng-giông',
-'reupload' => 'Dṳ̀ng-sĭng siông-diòng',
'reuploaddesc' => 'Duōng kó̤ siông-duòng dăng-dăng.',
'uploadnologin' => 'Mò̤ láuk-diē',
'uploadnologintext' => 'Sĕng [[Special:UserLogin|láuk-diē]] ciáh â̤-sāi siông-duòng ùng-giông.',
@@ -478,10 +471,10 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
'listfiles_size' => 'Chióh-cháung',
# File description page
+'file-anchor-link' => 'Ùng-giông',
'imagelinks' => 'Lièng-giék',
'linkstoimage' => 'Â-dā̤ gì hiĕk-miêng lièng gáu ciā ùng-giông:',
'nolinkstoimage' => 'Mò̤ hiĕk-miêng lièng gáu ciā ùng-giông.',
-'noimage-linktext' => 'siông-diòng ĭ',
'uploadnewversion-linktext' => 'Siông-duòng ciā ùng-giông gì sĭng bēng-buōng',
# MIME search
@@ -506,8 +499,8 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
'statistics' => 'Só-gé̤ṳ',
'statistics-header-users' => 'Ê̤ṳng-hô só-gé̤ṳ',
-'brokenredirects-edit' => '(gāi)',
-'brokenredirects-delete' => '(chēng)',
+'brokenredirects-edit' => 'gāi',
+'brokenredirects-delete' => 'chēng',
'withoutinterwiki' => 'Mò̤ kuá wiki gì hiĕk',
'withoutinterwiki-summary' => 'Â-dā̤ hiĕk-miêng mò̤ lièng gáu gì-tă ngṳ̄-ngiòng bēng-buōng gì kuá wiki lièng-giék:',
@@ -639,8 +632,8 @@ Iŏk-sṳ̄ nṳ̄ buóh-siōng téng nṳ̄ gáng-sê-dăng gà̤-dēng dṳ̀
'alreadyrolled' => 'Mò̤ nièng-ngài huòi-tó̤i [[User:$2|$2]] ([[User talk:$2|Tō̤-lâung]]) có̤i âu sū có̤ gì [[$1]] siŭ-gāi; bĕk-nè̤ng ī-gĭng siū-gái hĕ̤k-ciā huòi-tó̤i ciā hiĕk-miêng go̤ lāu.
Có̤i âu gì siŭ-gāi sê [[User:$3|$3]] ([[User talk:$3|Tō̤-lâung]]) sū có̤ gì.',
-'editcomment' => "Siŭ-gāi pàng-lâung sê: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) sū có̤ gì siŭ-gāi duōng kó̤ [[User:$1|$1]] gì sèng 1 bĭk bēng-buōng', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Siŭ-gāi pàng-lâung sê: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) sū có̤ gì siŭ-gāi duōng kó̤ [[User:$1|$1]] gì sèng 1 bĭk bēng-buōng',
# Protect
'protectlogpage' => 'Bō̤-hô nĭk-cé',
@@ -650,7 +643,7 @@ Có̤i âu gì siŭ-gāi sê [[User:$3|$3]] ([[User talk:$3|Tō̤-lâung]]) sū
'protectcomment' => 'Nguòng-ĭng',
'protect-level-autoconfirmed' => 'Hŭng-sō̤ mò̤ cé̤ṳ-cháh ê̤ṳng-hô̤',
'protect-level-sysop' => 'Nâ guāng-lī-uòng',
-'protect-expiry-options' => '2 dēng-cṳ̆ng:2 hours,1 gĕ̤ng:1 day,3 gĕ̤ng:3 days,1 lā̤-buái:1 week,2 lā̤-buái:2 weeks,1 month:1 nguŏk-nĭk,3 nguŏk-nĭk:3 months,6 nguŏk-nĭk:6 months,1 nièng:1 year,īng-uōng:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 dēng-cṳ̆ng:2 hours,1 gĕ̤ng:1 day,3 gĕ̤ng:3 days,1 lā̤-buái:1 week,2 lā̤-buái:2 weeks,1 month:1 nguŏk-nĭk,3 nguŏk-nĭk:3 months,6 nguŏk-nĭk:6 months,1 nièng:1 year,īng-uōng:infinite',
'restriction-type' => 'Guòng-âing:',
'restriction-level' => 'Âing-cié dēng-gék:',
'minimum-size' => 'Có̤i nâung chióh-cháung',
@@ -691,6 +684,8 @@ Có̤i âu gì siŭ-gāi sê [[User:$3|$3]] ([[User talk:$3|Tō̤-lâung]]) sū
'sp-contributions-newbies' => 'Nâ hiēng-sê sĭng kŭi dióng-hô gì góng-hióng',
'sp-contributions-newbies-sub' => 'Ciáh lì gì',
'sp-contributions-blocklog' => 'Hŭng-sō̤ nĭk-cé',
+'sp-contributions-deleted' => 'Ké̤ṳk chēng lâi gì ê̤ṳng-hô góng-hióng',
+'sp-contributions-talk' => 'Tō̤-lâung',
'sp-contributions-search' => 'Sìng-tō̤ góng-hióng',
'sp-contributions-username' => 'IP dê-cī hĕ̤k ê̤ṳng-hô-miàng:',
'sp-contributions-submit' => 'Sìng-tō̤',
@@ -727,7 +722,7 @@ Có̤i âu gì siŭ-gāi sê [[User:$3|$3]] ([[User talk:$3|Tō̤-lâung]]) sū
'ipbenableautoblock' => 'Cê̤ṳ-dông hŭng-sō̤ ciā ê̤ṳng-hô siā-ê̤ṳng gì IP dê-cī',
'ipbsubmit' => 'Hŭng-sō̤ ciā ê̤ṳng-hô',
'ipbother' => 'Gì-tă sì-găng',
-'ipboptions' => '2 dēng-cṳ̆ng:2 hours,1 gĕ̤ng:1 day,3 gĕ̤ng:3 days,1 lā̤-buái:1 week,2 lā̤-buái:2 weeks,1 nguŏk-nĭk:1 month,3 nguŏk-nĭk:3 months,6 nguŏk-nĭk:6 months,1 nièng:1 year,īng-uōng:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 dēng-cṳ̆ng:2 hours,1 gĕ̤ng:1 day,3 gĕ̤ng:3 days,1 lā̤-buái:1 week,2 lā̤-buái:2 weeks,1 nguŏk-nĭk:1 month,3 nguŏk-nĭk:3 months,6 nguŏk-nĭk:6 months,1 nièng:1 year,īng-uōng:infinite',
'ipbotheroption' => 'gì-tă',
'ipbotherreason' => 'Gì-tă nguòng-ĭng:',
'blockipsuccesssub' => 'Hŭng-sō̤ sìng-gŭng',
@@ -803,8 +798,6 @@ Nâ cūng-kuāng, nṳ̄ â̤-sāi cê-gă iè-dông hĕ̤k-ciā sê hăk-biáng
'allmessagescurrent' => 'Hiêng-sì gì ùng-cê',
'allmessagestext' => 'Cī tiŏng dăng-dăng sê MediaWiki miàng-kŭng-găng â̤ ciĕ-tì gì hiê-tūng siĕu-sék.',
'allmessagesnotsupportedDB' => "Mò̤ bâing-huák sāi-ê̤ṳng '''{{ns:special}}:Allmessages''', ĭng-ôi '''\$wgUseDatabaseMessages''' ī-gĭng cĕk lâi gó̤.",
-'allmessagesfilter' => 'Tăi siĕu-sék dèu-mĕ̤k:',
-'allmessagesmodified' => 'Nâ hiēng-sê ô gāi-biéng gì',
# Tooltip help for the actions
'tooltip-search' => 'Sìng-tō̤ {{SITENAME}} [alt-f]',
@@ -813,7 +806,11 @@ Nâ cūng-kuāng, nṳ̄ â̤-sāi cê-gă iè-dông hĕ̤k-ciā sê hăk-biáng
# Attribution
'anonymous' => '{{SITENAME}} gì mò̤ miàng ê̤ṳng-hô.',
-'lastmodifiedatby' => 'Ciā hiĕk-miêng sê diŏh $2, $1, iù $3 có̤i-hâiu siŭ-gāi gì.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ciā hiĕk-miêng sê diŏh $2, $1, iù $3 có̤i-hâiu siŭ-gāi gì.',
+
+# Math errors
+'math_unknown_error' => 'muôi báik gì dâng',
+'math_unknown_function' => 'muôi báik hàng-só',
# Image deletion
'deletedrevision' => 'Ī-gĭng chēng lâi gì bēng-buōng $1.',
diff --git a/languages/messages/MessagesCe.php b/languages/messages/MessagesCe.php
index b70f91c2..c1716289 100644
--- a/languages/messages/MessagesCe.php
+++ b/languages/messages/MessagesCe.php
@@ -36,7 +36,7 @@ $namespaceNames = array(
);
$magicWords = array(
- 'notoc' => array( '0', '__СДЖдац__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
+ 'notoc' => array( '0', '__СДЖдац__', '__БЕЗ_ОГЛ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__NOTOC__' ),
'nogallery' => array( '0', '__ГалерйЯц__', '__БЕЗ_ГАЛЕРЕИ__', '__NOGALLERY__' ),
'language' => array( '0', '#МОТТ', '#ЯЗЫК:', '#LANGUAGE:' ),
'special' => array( '0', 'башхо', 'служебная', 'special' ),
@@ -58,7 +58,7 @@ $messages = array(
'tog-editsection' => 'Гайта хьажориг «нисйе» аьлла хlора агlона',
'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тlетаlийча оцу кортан (JavaScript)',
'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
-'tog-rememberpassword' => 'Даглац со хьокх компьютер тIехь',
+'tog-rememberpassword' => 'Даглаца сан дlавазвалар хlокху гlулкхдечу гlирса тlяхь',
'tog-watchcreations' => 'Тlетоха ас кхоллина агlонаш тергаме могlам чу',
'tog-watchdefault' => 'Тlетоха ас нисйина агlонаш тергаме могlам чу',
'tog-watchmoves' => 'Тlетоха ас цlераш хийцина агlонаш тергаме могlам чу',
@@ -72,6 +72,7 @@ $messages = array(
'tog-enotifminoredits' => 'Хаам бо зlе чухул, цхьа жимма а хийцамаш биняхь',
'tog-enotifrevealaddr' => 'Гайта сан зlе оцу хаамаш барехь',
'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агlо латийна болу шай тергаме могlам юкъа',
+'tog-oldsig' => 'Хьалххьажар долучу куьгтаlорна:',
'tog-fancysig' => 'Шен вики-къастаман куьгтаlдар (ша шех хьажориг йоцуш)',
'tog-externaleditor' => 'Лелайан арахьара рéдаккхар (гlулкхдириг леррина нисйина хила йеза)',
'tog-externaldiff' => 'Лелабан арахьара диллагlарам башхо тарйо гlирс (гlулкхдириг леррина нисйина хила йеза)',
@@ -93,6 +94,13 @@ $messages = array(
'underline-never' => 'Цкъа а',
'underline-default' => 'Лелайа хьажгlодириг нисйарца',
+# Font style option in Special:Preferences
+'editfont-style' => 'Рéдоккхучохь долу йозан тайп:',
+'editfont-default' => 'Йоза оцу хьажгlодириг нисйинчура',
+'editfont-monospace' => 'Цхьатерра доцу йоза',
+'editfont-sansserif' => 'Аьтта доцу йоза',
+'editfont-serif' => 'Аьтта долу йоза',
+
# Dates
'sunday' => 'кlиранан де',
'monday' => 'Оршот',
@@ -152,7 +160,7 @@ $messages = array(
'category-media-header' => 'Хlумнаш оцу кадегар чохь «$1»',
'category-empty' => "''Хlара кадегар хlинца йаьсса ю.''",
'hidden-categories' => '{{PLURAL:$1|Къайлаха кадегар|Къайлаха йолу кадегарш}}',
-'hidden-category-category' => 'Къайлаха йолу кадегарш', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Къайлаха йолу кадегарш',
'category-subcat-count' => '{{PLURAL:$2|Хlокх кадегар чохь ю хlокхуьна бухар кадегар.|{{PLURAL:$1|Гойташ $1 бухар кадегар|Гойту $1 бухар кадегар|Гойту $1 бухар кадегар}} оцу $2.}}',
'category-subcat-count-limited' => 'Хlокх кадегар чохь {{PLURAL:$1|$1 бухар кадегар|$1 бухар кадегарша|$1 бухар кадегарш}}.',
'category-article-count' => '{{PLURAL:$2|Хlокх кадегар чохь яц цхьа агlо бе.|{{PLURAL:$1|Гойташ $1 агlо|Гойту $1 агlонаш|Гойту $1 агlонаш}} хlокх кадегарца кху $2.}}',
@@ -160,6 +168,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Хlокх кадегар чохь цхьа хlум бе яц.|{{PLURAL:$1|Гойта $1 хlум|Гойту $1 хlума|Гойту $1 хlумнаш}} хlокх кадегарца кху $2.}}',
'category-file-count-limited' => 'Хlокх кадегар чохь {{PLURAL:$1|$1 хlум|$1 хlума|$1 хlумнаш}}.',
'listingcontinuesabbrev' => '(кхин дlа)',
+'index-category' => 'Меттигтерахьйо агlонаш',
+'noindex-category' => 'Дlахьушйоцу агlонаш',
'mainpagetext' => "'''Вики-белха гlирс «MediaWiki» кхочуш дика дlахlоттийна.'''",
'mainpagedocfooter' => 'Викийца болх бан хаамаш карор бу хlокху чохь [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 куьйгаллица собаркхе].
@@ -169,10 +179,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Сих сиха лушдолу хаттарш а жоьпаш оцу MediaWiki];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Хаам бохьуьйту араяларца башхонца керла MediaWiki].',
-'about' => 'Цунах лаьцна',
-'article' => 'Яззам',
-'newwindow' => '(керлачу корехь)',
-'cancel' => 'Цаоьшу',
+'about' => 'Цунах лаьцна',
+'article' => 'Яззам',
+'newwindow' => '(керлачу корехь)',
+'cancel' => 'Цаоьшу',
+'moredotdotdot' => 'Кхин дlа…',
+'mypage' => 'Долахь йолу агlо',
+'mytalk' => 'Сан дийцаре агlо',
+'anontalk' => 'Дийцаре хlара IP-долуметтиг',
+'navigation' => 'Шавигар',
+'and' => '&#32;а',
+
+# Cologne Blue skin
'qbfind' => 'Лахар',
'qbbrowse' => 'Хьажар',
'qbedit' => 'Нисйé',
@@ -180,12 +198,35 @@ $messages = array(
'qbpageinfo' => 'Агlонах болу бовзам',
'qbmyoptions' => 'Хьан нисдарш',
'qbspecialpages' => 'Леррина агlонаш',
-'moredotdotdot' => 'Кхин дlа…',
-'mypage' => 'Долахь йолу агlо',
-'mytalk' => 'Сан дийцаре агlо',
-'anontalk' => 'Дийцаре хlара IP-долуметтиг',
-'navigation' => 'Шавигар',
-'and' => '&#32;а',
+'faq' => 'СиХХ',
+'faqpage' => 'Project:СиХХ',
+
+# Vector skin
+'vector-action-addsection' => 'Тlетоха хьедар',
+'vector-action-delete' => 'Дlадайá',
+'vector-action-move' => 'Цlе хийца',
+'vector-action-protect' => 'Гlаролла дé',
+'vector-action-undelete' => 'Меттахlоттадé',
+'vector-action-unprotect' => 'Гlароллех къаста',
+'vector-namespace-category' => 'Кадегар',
+'vector-namespace-help' => 'Собаркхе агlо',
+'vector-namespace-image' => 'Хlум',
+'vector-namespace-main' => 'Агlо',
+'vector-namespace-media' => 'Медиа-агlо',
+'vector-namespace-mediawiki' => 'Хаам',
+'vector-namespace-project' => 'Кхолламех',
+'vector-namespace-special' => 'Белха агlо',
+'vector-namespace-talk' => 'Дийцаре',
+'vector-namespace-template' => 'Куцкеп',
+'vector-namespace-user' => 'Декъашхон агlо',
+'vector-view-create' => 'Кхоллар',
+'vector-view-edit' => 'Нисйинарг',
+'vector-view-history' => 'Хьажа исцlареран',
+'vector-view-view' => 'Éшар',
+'vector-view-viewsource' => 'Билглонашка хьажа',
+'actions' => 'Дийраш',
+'namespaces' => 'Ана цlераш',
+'variants' => 'Кепараш',
'errorpagetitle' => 'Гlалат',
'returnto' => 'Юхагlо оцу агlоне $1.',
@@ -235,12 +276,17 @@ $messages = array(
'otherlanguages' => 'Кхечу маттахь дерш',
'redirectedfrom' => '(Дlасахьажийна кху $1)',
'redirectpagesub' => 'Агlо-дlасахьажайар',
-'lastmodifiedat' => 'Хlокху агlон тlаьххьаралера хийцам: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Хlокху агlон тlаьххьаралера хийцам: $2, $1.',
'viewcount' => 'Хlокху агlонга хьойсина $1 {{PLURAL:$1|за|за|за}}.',
'protectedpage' => 'Гlароллийца йолу агlо',
'jumpto' => 'Дехьавала оцу:',
'jumptonavigation' => 'шавигар',
'jumptosearch' => 'лахар',
+'view-pool-error' => 'Бéхк цабиллар дōха, хlинц гlулкхдириг йōттина ю.
+Каьчна дуккха дехарш хlокху агlонтlе хьажарца.
+Дехар до, собардеш а йуха хьажа хlокху агlонтlе жим тlаьхьо.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{grammar:genitive|{{SITENAME}}}}х лаьцна',
@@ -253,14 +299,12 @@ $messages = array(
'disclaimerpage' => 'Project:Бяхк тlецалацар',
'edithelp' => 'Собаркхе оцу редаккхарна',
'edithelppage' => 'Help:Собаркхе оцу редаккхарна',
-'faq' => 'СиХХ',
-'faqpage' => 'Project:СиХХ',
'helppage' => 'Help:Собаркхе',
'mainpage' => 'Коьрта агlо',
'mainpage-description' => 'Коьрта агlо',
'policy-url' => 'Project:Бакъо',
'portal' => 'Юкъаралла',
-'portal-url' => 'Project:Джамаат',
+'portal-url' => 'Project:Юкъараллин ков',
'privacy' => 'Балалютта къайлаха',
'privacypage' => 'Project:Балалютта къайлаха',
@@ -326,11 +370,10 @@ $messages = array(
'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
# Login and logout pages
-'loginpagetitle' => 'Чу валар',
'yourname' => 'Декъашхон цlе:',
'yourpassword' => 'Ишар:',
'yourpasswordagain' => 'Юха язйе ишар:',
-'remembermypassword' => 'Даглац со хьокх компьютер тьях',
+'remembermypassword' => 'Даглаца сан дlавазвалар хlокху гlулкхдечу гlирса тlяхь',
'yourdomainname' => 'Хьан машан меттиг:',
'login' => 'Вовзийта хьой гlирсан',
'nav-login-createaccount' => 'Вовзийта хьой / дlавазло',
@@ -343,17 +386,7 @@ $messages = array(
'createaccount' => 'Дlавазве керла декъашхо',
'gotaccount' => "Хьо дlавазвина вуй? '''$1'''.",
'gotaccountlink' => 'Вовзийта хьой',
-'youremail' => 'Кехат яздо зlе цlе:',
-'username' => 'Дlаязвиначуьна цlе:',
-'yourrealname' => 'Хьан бакъ цlе:',
-'yourlanguage' => 'Мотт юкъардекъа:',
-'yourvariant' => 'Метта башхо',
-'gender-unknown' => 'хlоттийна яц',
-'gender-male' => 'борша',
-'gender-female' => 'сте',
'loginerror' => 'Гlалат ду декъашхо вовзарехь',
-'prefs-help-email' => 'Кехат яздо зlе цlе цахlоттийча а хlум дац, иза оьшар ю, нагахь хьуна хьай ишар йицлахь.
-Цо атто бийра бу кхечу декъашхошна a хьан кху чура декъа агlонца хьега хаам бахьийта.',
'loginsuccesstitle' => 'Хьо вовзар хаз чакхдели',
'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
'nosuchuser' => 'Декъашхо цlарца $1 воцаш ву.
@@ -373,6 +406,7 @@ $messages = array(
'newpassword' => 'Керла ишар:',
'retypenew' => 'Юха язйе керла ишар:',
'resetpass-submit-loggedin' => 'Хийца ишар',
+'resetpass-submit-cancel' => 'Цаоьшу',
# Edit page toolbar
'bold_sample' => 'Жим хатl дерстинадар',
@@ -421,6 +455,9 @@ $messages = array(
'noarticletext' => 'Хlокх хан чохь кху яззамехь йоза дац.
Шуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта агlо]] кхечу яззамехь,
йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха кхечу тептаршкахь].</span>',
+'noarticletext-nopermission' => 'Хlокх хан чохь кху яззамехь йоза дац.
+Шуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта агlо]] кхечу яззамехь,
+йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха кхечу тептаршкахь].</span>',
'previewnote' => "'''Хlара хьалх хьажар ду, йоза хlинца язданза ду!'''",
'editing' => 'Редаккхар: $1',
'editingsection' => 'Редаккхар $1 (дакъа)',
@@ -432,12 +469,18 @@ $messages = array(
Ишта чlагlо йой ахьа, айхьа далош долучуьн хьо куьг да ву аьлла, йа хьаэцна цхьан
хьостера, хийцам ба а дlаса даржада а чулацам болуш.<br />
'''МАТОХИЙШ БАКЪО ЙОЦУ ГlИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
+'protectedpagewarning' => "'''Дlахьедар. Хlара агlо гlаролла дина ю хийцам цабайта, иза хийца йа нисйа а бакъо йолуш адаманкуьйгалла лелош болу декъашхой бе бац.'''
+Лахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
'cascadeprotectedwarning' => "'''Дlахьедар:''' Хlокху агlонна редаккха бакъо йолуш хlара тоба йу «Адаманкуьйгалхой», хlунда аьлча иза латийна {{PLURAL:$1|кхечу агlонца|кхечу агlонашца}} хlоттделлачу гlароллийца:",
+'templatesused' => '{{PLURAL:$1|Куцкеп, лелийна|Куцкепаш, лелош ду}} хlокху агlон башхонца:',
+'templatesusedpreview' => '{{PLURAL:$1|Куцкеп, лелошдолу|Куцкепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
'template-protected' => '(гlароллийца)',
'template-semiprotected' => '(дуьззина доцуш гlаролла)',
'hiddencategories' => 'Хlара агlо чуйогlуш ю оцу $1 {{PLURAL:$1|къайлаха кадегарчу|къайлаха кадегаршчу|къайлаха кадегаршчу}}:',
'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
+'moveddeleted-notice' => 'Иза агlо дlайайина йара.
+Оцу собаркхен лахахьа гойтуш ю цуьнца долу дlаяздарш кху дlадайина тептар чура а цlе хийцарш а.',
# Parser/template warnings
'parser-template-loop-warning' => 'Карийна куцкепаш юкъахь хилла шад: [[$1]]',
@@ -447,6 +490,8 @@ $messages = array(
# History pages
'viewpagelogs' => 'Гайта хlокху агlонан тептар',
+'currentrev-asof' => 'Хlинцлера башхо оцу $1',
+'revisionasof' => 'Башхо $1',
'previousrevision' => '← Хьалха йоьдург',
'nextrevision' => 'Тlаьхьайогlург →',
'currentrevisionlink' => 'Хlинцлера башхо',
@@ -459,6 +504,7 @@ $messages = array(
# Revision deletion
'rev-delundel' => 'гайта/къайладаккха',
+'rev-showdeleted' => 'гайта',
'revdel-restore' => 'Хийцам бе схьагарехь',
'revdelete-content' => 'чуьраниг',
@@ -469,11 +515,12 @@ $messages = array(
'revertmerge' => 'Йекъа',
# Diffs
-'history-title' => '$1 — хийцаман исцlарера',
-'difference' => '(Тайпанара юкъар башхалла)',
-'lineno' => 'Могlа $1:',
-'compareselectedversions' => 'Хаьржиначуьна башхо муха ю хьажа',
-'editundo' => 'дlадаккха',
+'history-title' => '$1 — хийцаман исцlарера',
+'difference' => '(Тайпанара юкъар башхалла)',
+'lineno' => 'Могlа $1:',
+'compareselectedversions' => 'Хаьржиначуьна башхо муха ю хьажа',
+'showhideselectedversions' => 'Гайта/къайлайаха хаьржина башхонаш',
+'editundo' => 'дlадаккха',
# Search results
'searchresults' => 'Лахарна хилам',
@@ -483,11 +530,17 @@ $messages = array(
'searchsubtitleinvalid' => 'Кху дехарца «$1»',
'notitlematches' => 'Агlонаши цlерашца цхьатера йогlуш яц',
'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
+'prevn' => '{{PLURAL:$1|хьалхарниг $1|хьалхарнаш $1|хьалхарнаш $1}}',
+'nextn' => '{{PLURAL:$1|тlаьхьйогlург $1|тlаьхьйогlурш $1|тlаьхьйогlурш $1}}',
+'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Лахарна гlирс нисба',
'searchmenu-exists' => "'''Хlокху вики-кхолламашца йолуш ю ишта агlо «[[:$1]]»'''",
'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
'searchhelp-url' => 'Help:Чулацам',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Гайта агlонаш ишта хlоттам болуш]]',
+'searchprofile-articles' => 'Къаьстина агlонаш',
+'searchprofile-project' => 'Собаркхе агlонаш а кхолламаш',
+'searchprofile-images' => 'Мялтомшхгl',
'searchprofile-everything' => 'Массанхьа',
'searchprofile-advanced' => 'Шуьйра',
'searchprofile-articles-tooltip' => 'Лаха оцу $1',
@@ -504,8 +557,10 @@ $messages = array(
'search-interwiki-more' => '(кхин)',
'search-mwsuggest-enabled' => 'хьехаршца',
'search-mwsuggest-disabled' => 'хьехар доцуш',
+'searcheverything-enable' => 'Лаха массо ана цlерашкахь',
'searchrelated' => 'хlоттаделларг',
'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
+'showingresultsheader' => "{{PLURAL:$5|Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
'nonefound' => "'''Билгалдаккхар.''' Хlумма цадеш lад йитича массо цlеран энахь цалоху. Лела йе тlехуттург ''all:'', лахийта массо цlеран энахь (юкъадалош декъашхойн дийцарш а куцкепаш а кхин дерг.), йа хlотта йе оьшуш йолу цlеран эна.",
'search-nonefound' => 'Дехарар терра цхьа хlума цакарийна.',
'powersearch' => 'Шуьро лахар',
@@ -513,25 +568,40 @@ $messages = array(
'powersearch-ns' => 'Цlераши анахь лахар:',
'powersearch-redir' => 'Схьагайта дlасахьажийнарш',
'powersearch-field' => 'Лахар',
+'powersearch-toggleall' => 'Массо',
# Preferences page
'preferences' => 'Гlирс нисбан',
'mypreferences' => 'Гlирс нисбан',
'changepassword' => 'Хийцамба ишарна',
'skin-preview' => 'Хьалха муха ю хьажа',
+'prefs-datetime' => 'Терахь а хан',
'prefs-personal' => 'Долахь болу хаамаш',
'prefs-rc' => 'Керла нисдаршан агlо',
'prefs-watchlist' => 'Тергаме могlам',
'prefs-misc' => 'Кхин гlирсаш',
'prefs-resetpass' => 'Хийца ишар',
+'prefs-rendering' => 'Арахьара хатl',
'saveprefs' => 'lалашдан',
-'textboxsize' => 'Xийца',
+'prefs-editing' => 'Редаккхар',
'searchresultshead' => 'Лахар',
'timezonelegend' => 'Сахьатан аса:',
'prefs-searchoptions' => 'Лахарна гlирс нисба',
+'prefs-files' => 'Хlумнаш',
+'youremail' => 'Кехат яздо зlе цlе:',
+'username' => 'Дlаязвиначуьна цlе:',
+'yourrealname' => 'Хьан бакъ цlе:',
+'yourlanguage' => 'Мотт юкъардекъа:',
+'yourvariant' => 'Метта башхо',
+'gender-unknown' => 'хlоттийна яц',
+'gender-male' => 'борша',
+'gender-female' => 'сте',
+'prefs-help-email' => 'Кехат яздо зlе цlе цахlоттийча а хlум дац, иза оьшар ю, нагахь хьуна хьай ишар йицлахь.
+Цо атто бийра бу кхечу декъашхошна a хьан кху чура декъа агlонца хьега хаам бахьийта.',
+'prefs-diffs' => 'Тейп тайпнара башхо',
# User rights
-'userrights' => 'Декъашхочуьн бакъона урхалладар', # Not used as normal message but as header for the special page itself
+'userrights' => 'Декъашхочуьн бакъона урхалладар',
'editinguser' => "Хийца декъашхочуьна бакъо '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
# Groups
@@ -556,6 +626,8 @@ $messages = array(
'recentchanges' => 'Керла нисдарш',
'recentchanges-legend' => 'Гlирс нисбарна керла нисдарш',
'recentchanges-feed-description' => 'Тергам бе тlаьхьара вики хийцаман хlокху ларца.',
+'recentchanges-legend-newpage' => '$1 — керла агlо',
+'recentchanges-label-newpage' => 'Оцу нисдарца кхоллина керла агlо.',
'rcnote' => "{{PLURAL:$1|Тlаьххьара '''$1''' хийцам|Тlаьххьара '''$1''' хийцамаш|Тlаьххьара '''$1''' хийцамаш}} за '''$2''' {{PLURAL:$2|де|дийнахь|дийнахь}}, оцу хан чохь $5 $4.",
'rclistfrom' => 'Гайта хийцам оцу $1.',
'rcshowhideminor' => '$1 кегийра нисдарш',
@@ -578,6 +650,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'Кхуьнца долу нисдарш',
+'recentchangeslinked-feed' => 'Кхуьнца долу нисдарш',
+'recentchangeslinked-toolbox' => 'Кхуьнца долу нисдарш',
'recentchangeslinked-title' => 'Кхуьнца долу нисдарш $1',
'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу кадегарна).
Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
@@ -604,6 +678,7 @@ $messages = array(
'listfiles_description' => 'Цунах лаьцна',
# File description page
+'file-anchor-link' => ' Хlум',
'filehist' => 'Хlуман исцlарера',
'filehist-help' => 'Тlетаlаде терахь/хан, муха хилла хьажарна и хlум.',
'filehist-deleteall' => 'дlадайá массо',
@@ -611,12 +686,13 @@ $messages = array(
'filehist-current' => 'карара',
'filehist-datetime' => 'Терахь/Хан',
'filehist-thumb' => 'Жима',
+'filehist-thumbtext' => 'Жимо башхо оцу $1',
'filehist-user' => 'Декъашхо',
'filehist-dimensions' => 'Хlуман барам',
'filehist-comment' => 'Билгалдаккхар',
'imagelinks' => 'Хьажоригаш оцу хlуман',
'linkstoimage' => '{{PLURAL:$1|Тlаьхьайогlу $1 агlо тlетойжина|Тlаьхьайогlу $1 агlонаш тlетойжина|Тlаьхьайогlу $1 агlонаш тlетойжина}} хlокху хlуман:',
-'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
'uploadnewversion-linktext' => 'Чуяккха керла башхо хlокху хlуман',
# File reversion
@@ -635,7 +711,8 @@ $messages = array(
'double-redirect-fixed-move' => 'Агlон [[$1]] цlе хийцна, хlинца иза дlахьажийна оцу [[$2]]',
-'brokenredirects-delete' => '(дІадайа)',
+'brokenredirects-edit' => 'нисйé',
+'brokenredirects-delete' => 'дlадайá',
'withoutinterwiki-submit' => 'Гайта',
@@ -688,7 +765,8 @@ $messages = array(
'categories' => 'Кадегарш',
# Special:DeletedContributions
-'deletedcontributions' => 'Декъашхочуьн дlабайина къинхьегам',
+'deletedcontributions' => 'Декъашхочуьн дlабайина къинхьегам',
+'sp-deletedcontributions-contribs' => 'къинхьегам',
# Special:LinkSearch
'linksearch' => 'Арахьара хьажоригаш',
@@ -697,6 +775,9 @@ $messages = array(
# Special:ListUsers
'listusers-submit' => 'Гайта',
+# Special:ActiveUsers
+'activeusers' => 'Жигар декъашхой могlам',
+
# Special:Log/newusers
'newuserlogpage' => 'Декъашхой дlабазбина тептар',
'newuserlog-create-entry' => 'Керла декъашхо',
@@ -811,12 +892,14 @@ $messages = array(
'month' => 'Беттаца (йа хьалхе):',
'year' => 'Шерачохь (йа хьалхе):',
-'sp-contributions-newbies' => 'Гайта бекъ къинхьегам, керла дlабазбиначара бина болу',
-'sp-contributions-blocklog' => 'сацораш',
-'sp-contributions-logs' => 'тéптарш',
-'sp-contributions-search' => 'Къинхьегам лахар',
-'sp-contributions-username' => 'IP-долу меттиг йа декъашхон цlе:',
-'sp-contributions-submit' => 'Лаха',
+'sp-contributions-newbies' => 'Гайта бекъ къинхьегам, керла дlабазбиначара бина болу',
+'sp-contributions-blocklog' => 'сацораш',
+'sp-contributions-logs' => 'тéптарш',
+'sp-contributions-talk' => 'дийцаре',
+'sp-contributions-userrights' => 'декъашхочуьн бакъона урхалладар',
+'sp-contributions-search' => 'Къинхьегам лахар',
+'sp-contributions-username' => 'IP-долу меттиг йа декъашхон цlе:',
+'sp-contributions-submit' => 'Лаха',
# What links here
'whatlinkshere' => 'Хьажоригаш кхузе',
@@ -837,7 +920,7 @@ $messages = array(
# Block/unblock
'blockip' => 'Сацаве',
'ipadressorusername' => 'IP-долу меттиг йа декъашхон цlе:',
-'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
'blockipsuccesssub' => 'Сацавар чакхдели',
'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] сацийна ву.<br />
Хьажа. [[Special:IPBlockList|могlам сацийна IP-долу меттигаш]].',
@@ -879,7 +962,7 @@ $messages = array(
'move-watch' => 'Латайé хlара агlо тергаме могlам юкъа',
'movepagebtn' => 'Агlон цlе хийца',
'pagemovedsub' => 'Агlон цlе хийцина',
-'movepage-moved' => "'''Агlон цlе «$1» хийцина хlокху «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Агlон цlе «$1» хийцина хlокху «$2»'''",
'articleexists' => 'Хlарасанна цlе йолу агlо йолуш ю йа ахьа гойтуш йолу цlе магош яц.
Дехар до, харжа кхин цlе.',
'talkexists' => "'''Агlон цlе хийцина йара, амма дийцаре агlон цlе хийца цало, хlунда аьльча иза санна цlе йолу агlо йолуш ю. Дехар до, куьйга хlотта уьш.'''",
@@ -903,10 +986,18 @@ $messages = array(
'export-templates' => 'Латадé куцкепаш',
# Namespace 8 related
-'allmessages' => 'Гlирса хаамаш',
-'allmessagesname' => 'Хаам',
-'allmessagesdefault' => 'Шаьшха йоза',
-'allmessagescurrent' => 'Карарчу хенан йоза',
+'allmessages' => 'Гlирса хаамаш',
+'allmessagesname' => 'Хаам',
+'allmessagesdefault' => 'Шаьшха йоза',
+'allmessagescurrent' => 'Карарчу хенан йоза',
+'allmessages-filter-legend' => 'Литтар',
+'allmessages-filter' => 'Литтар оцу хьола хийцамца:',
+'allmessages-filter-unmodified' => 'Хийцан йоцурш',
+'allmessages-filter-all' => 'Массо',
+'allmessages-filter-modified' => 'Хийцнарш',
+'allmessages-prefix' => 'Литтар оцу дешахьалхе:',
+'allmessages-language' => 'Мотт:',
+'allmessages-filter-submit' => 'Дехьа вала',
# Thumbnails
'thumbnail-more' => 'Доккха де',
@@ -931,6 +1022,7 @@ $messages = array(
'tooltip-ca-viewsource' => 'Хlара агlо хийцам цабайта гароллехь ю, хьоьга далундерг хьажар а дезахь чура йоза хьаэцар',
'tooltip-ca-history' => 'Хlокху агlон хийцамаш болу тептар',
'tooltip-ca-protect' => 'Гlаролла дé хlокху агlон хийцам цабайта',
+'tooltip-ca-unprotect' => 'Дlадаккха хlокху агlонна долу гаролла',
'tooltip-ca-delete' => 'Дlайайá хlара агlо',
'tooltip-ca-move' => 'Агlон цlе хийца',
'tooltip-ca-watch' => 'Тlетоха хlара агlо сан тергаме могlам юкъа',
@@ -940,6 +1032,7 @@ $messages = array(
'tooltip-search-fulltext' => 'Лаха агlонаш ше чулацамехь хlара йоза долуш',
'tooltip-p-logo' => 'Коьрта агIо',
'tooltip-n-mainpage' => 'Дехьавалар коьрта агlончу',
+'tooltip-n-mainpage-description' => 'Дехьавалар коьрта агlончу',
'tooltip-n-portal' => 'Оцу кхолламах, мичахь хlу йу лаьташ а хlудалур ду шуьга',
'tooltip-n-currentevents' => 'Дlаоьхуш болу хаамашна могlам',
'tooltip-n-recentchanges' => 'Тlаьххьаралера хийцаман могlам',
@@ -1024,7 +1117,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-datetime' => 'Хlума хийцина терахь а хан',
@@ -1043,6 +1136,7 @@ $messages = array(
'watchlistall2' => 'массо',
'namespacesall' => 'массо',
'monthsall' => 'массо',
+'limitall' => 'массо',
# Trackbacks
'trackbackremove' => '([$1 дlадайá])',
@@ -1079,7 +1173,7 @@ $messages = array(
'watchlisttools-raw' => 'Йоза санна нисдé',
# Special:Version
-'version' => 'Башхо MediaWiki', # Not used as normal message but as header for the special page itself
+'version' => 'Башхо MediaWiki',
# Special:FilePath
'filepath-page' => 'Хlум:',
diff --git a/languages/messages/MessagesCeb.php b/languages/messages/MessagesCeb.php
index 51d9dd9b..6e87f1ef 100644
--- a/languages/messages/MessagesCeb.php
+++ b/languages/messages/MessagesCeb.php
@@ -93,6 +93,7 @@ $messages = array(
'tog-enotifminoredits' => 'I-email ko alang sa mga ginagmay nga pag-usab',
'tog-enotifrevealaddr' => 'Ibandilyo ang akong adress sa e-mail sa mga e-mail nga magbalita',
'tog-shownumberswatching' => 'Ipakita ang gidaghanon sa mga gumagamit nga nagbantay usab',
+'tog-oldsig' => 'Paunang tan-aw sa eksisting nga pirma:',
'tog-fancysig' => 'Hilaw nga pirma (walay awtomatikong sumpay)',
'tog-externaleditor' => 'Gamita ang eksternal nga editor isip default (para sa mga eksperto lamang, kinahanglan og espesyal nga setting sa imong kompyuter)',
'tog-externaldiff' => 'Gamita ang eksternal nga diff isip default (para sa mga eksperto lamang, kinahanglan og espesyal nga setting sa imong kompyuter)',
@@ -114,6 +115,13 @@ $messages = array(
'underline-never' => 'Ayaw',
'underline-default' => 'Default sa brawser',
+# Font style option in Special:Preferences
+'editfont-style' => 'Font style sa edit area:',
+'editfont-default' => 'Default sa brawser',
+'editfont-monospace' => 'Monospaced font',
+'editfont-sansserif' => 'Sans-serif font',
+'editfont-serif' => 'Serif font',
+
# Dates
'sunday' => 'Dominggo',
'monday' => 'Lunes',
@@ -173,7 +181,7 @@ $messages = array(
'category-media-header' => 'Medya sa kategoriyang "$1"',
'category-empty' => "''Kini nga kategoriya kasamtangang way sulod nga mga panid ug mga medya.''",
'hidden-categories' => '{{PLURAL:$1|Nakatagong kategoriya|Mga nakatagong kategoriya}}',
-'hidden-category-category' => 'Mga nakatagong kategoriya', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Mga nakatagong kategoriya',
'category-subcat-count' => '{{PLURAL:$2|Kini nga kategoriya may usa lamang ka subkategoriya.|Kini nga kategoriya may {{PLURAL:$1|subkategoriya|$1 ka mga subkategorya}}, sa total nga $2.}}',
'category-subcat-count-limited' => 'Kini nga kategoriya adunay {{PLURAL:$1|ka subkategorya|$1 ka mga subkategoriya}}.',
'category-article-count' => '{{PLURAL:$2|Kini nga kategoriya may usa lang ka panid.|Ang kining {{PLURAL:$1|ka panid|$1 ka mga panid}} nahiapil niining kategoryaha, sa $2 nga total.}}',
@@ -190,10 +198,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ sa MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list sa mga release sa MediaWiki]',
-'about' => 'Mahitungod',
-'article' => 'Panid sa sulod',
-'newwindow' => "(maabli sa laing ''window'')",
-'cancel' => 'I-way bili',
+'about' => 'Mahitungod',
+'article' => 'Panid sa sulod',
+'newwindow' => "(maabli sa laing ''window'')",
+'cancel' => 'I-way bili',
+'moredotdotdot' => 'Dugang pa...',
+'mypage' => 'Akong panid',
+'mytalk' => 'Akong hisgot',
+'anontalk' => 'Panghisgot-hisgot alang niining IP',
+'navigation' => 'Tabok-tabok',
+'and' => '&#32;ug',
+
+# Cologne Blue skin
'qbfind' => 'Pangitaa',
'qbbrowse' => 'Browse',
'qbedit' => 'Usba',
@@ -201,15 +217,35 @@ $messages = array(
'qbpageinfo' => 'Konteksto',
'qbmyoptions' => 'Akong mga panid',
'qbspecialpages' => 'Mga espesyal nga panid',
-'moredotdotdot' => 'Dugang pa...',
-'mypage' => 'Akong panid',
-'mytalk' => 'Akong hisgot',
-'anontalk' => 'Panghisgot-hisgot alang niining IP',
-'navigation' => 'Tabok-tabok',
-'and' => '&#32;ug',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Pagdugang og topiko',
+'vector-action-delete' => 'Papasa',
+'vector-action-move' => 'Ibalhin',
+'vector-action-protect' => 'Protektahi',
+'vector-action-undelete' => 'Ayaw papasa',
+'vector-action-unprotect' => 'Ayaw protektahi',
+'vector-namespace-category' => 'Kategoriya',
+'vector-namespace-help' => 'Panid sa tabang',
+'vector-namespace-image' => 'Payl',
+'vector-namespace-main' => 'Panid',
+'vector-namespace-media' => 'Panid sa medya',
+'vector-namespace-mediawiki' => 'Mensahe',
+'vector-namespace-project' => 'Panid sa proyekto',
+'vector-namespace-special' => 'Espesyal nga panid',
+'vector-namespace-talk' => 'Panaghisgot-hisgot',
+'vector-namespace-template' => 'Plantilya',
+'vector-namespace-user' => 'Panid sa tiggamit',
+'vector-view-create' => 'Himoa',
+'vector-view-edit' => 'Usba',
+'vector-view-history' => 'Tan-awa ang kaagi',
+'vector-view-view' => 'Basaha',
+'vector-view-viewsource' => 'Tan-awa ang ginikanan',
+'actions' => 'Mga lihok',
+'namespaces' => 'Mga ngalang espasyo',
+'variants' => 'Mga baryant',
'errorpagetitle' => 'Sayop',
'returnto' => 'Balik sa $1.',
@@ -259,18 +295,22 @@ $messages = array(
'otherlanguages' => 'Sa ubang pinulongan',
'redirectedfrom' => '(Naredirek gikan sa $1)',
'redirectpagesub' => 'Panid sa redirekta',
-'lastmodifiedat' => 'Kini nga panid kataposang giusab niadtong $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Kini nga panid kataposang giusab niadtong $2, $1.',
'viewcount' => 'Naablihan na sa {{PLURAL:$1|maka-usa|$1 ka higayon}} ang kining panid.',
'protectedpage' => 'Giprotektahang panid',
'jumpto' => 'Ambak sa:',
'jumptonavigation' => 'tabok-tabok',
'jumptosearch' => 'pangita',
+'view-pool-error' => 'Pasensya, overloaded ang mga serber sa kasamtangan.
+Sobra ka daghang gumagamit ang misulay og tan-aw niining panid.
+Palihog paghulat bag-o nimo sulayan pag-akses og usab ang kining panid.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Mahitungod sa {{SITENAME}}',
'aboutpage' => 'Project:Mahitungod sa',
'copyright' => 'Mga sulod makita sa $1.',
-'copyrightpagename' => '{{SITENAME}} katungod sa pagpatik',
'copyrightpage' => '{{ns:project}}:Mga katungod sa pagpatik',
'currentevents' => 'Mga bag-ong panghitabo',
'currentevents-url' => 'Project:Kasamtangang panghitabo',
@@ -278,8 +318,6 @@ $messages = array(
'disclaimerpage' => 'Project:Mga pagpasabot',
'edithelp' => 'Tabang sa pag-usab',
'edithelppage' => 'Help:Pag-usab',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Mga sulod',
'mainpage' => 'Unang Panid',
'mainpage-description' => 'Unang Panid',
@@ -357,9 +395,6 @@ Ang naulahing gi-attempt nga database query mao ang:
"$1"
from within function "$2".
MySQL returned error "$3: $4"',
-'noconnect' => "Pasayloa, adunay problemang teknikal sa karon ang kini nga wiki, ug dili makakontak sa serber sa ''database''.<br />
-$1",
-'cachederror' => "Ang mosunod usa ka gi-''cache'' nga kopya sa gihangyong panid, ug mahimong karaan na.",
'laggedslavemode' => 'Pahibalo: Mahimong dili mahiapil sa panid ang mga bag-ong kausaban.',
'readonly' => 'Gitrangkahan ang database',
'enterlockreason' => 'Pagbutang og rason para sa lock, apil ang banabana kon kanus-a ma-release ang lock',
@@ -377,6 +412,7 @@ Palihog ireport kini sa usa ka [[Special:ListUsers/sysop|administrador]], hinumd
'readonly_lag' => 'Ang database awtomatikong na-lock samtang ang mga slave database server mo-catch up sa master',
'internalerror' => 'Internal nga sayop',
'internalerror_info' => 'Internal nga sayop: $1',
+'fileappenderror' => 'Dili ma-append ang "$1" ngadto sa "$2".',
'filecopyerror' => 'Dili makopya ang payl nga "$1" ngadto sa "$2".',
'filerenameerror' => 'Dili mailisag ngalan ang payl "$1" ngadto sa "$2".',
'filedeleteerror' => 'Dili mapapas ang payl "$1".',
@@ -386,6 +422,8 @@ Palihog ireport kini sa usa ka [[Special:ListUsers/sysop|administrador]], hinumd
'unexpected' => 'Wala gi-ekspek nga value: "$1"="$2".',
'formerror' => 'Sayop: dili masumiter ang porma',
'badarticleerror' => 'Ang kining lihok dili puyde mahitabo sa kining panid.',
+'cannotdelete' => 'Dili makapapas sa mao mismong panid o payl.
+Puyde kini gipapas na sa uban.',
'badtitle' => 'Bati nga titulo',
'badtitletext' => 'Ang gihangyong titulo sa panid mahimong inbalido, walay sulod, o nasayop og sumpay nga inter-pinulongan o inter-wiki nga titulo.
Basin aduna kini usa o daghan pang mga karakter nga dili magamit isip titulo.',
@@ -422,77 +460,55 @@ Ang rason nga gihatag mao ang "\'\'$2\'\'".',
'virus-unknownscanner' => 'wala mailhing antivirus:',
# Login and logout pages
-'logouttitle' => 'Pagbiya sa tiggamit',
-'logouttext' => "'''Nakabiya ka na.'''
+'logouttext' => "'''Nakabiya ka na.'''
Mahimo kang magpadayon sa paggamit sa {{SITENAME}} bisan wala ka magpaila o puyde usab nga [[Special:UserLogin|mag-log in ka'g usab]] o isip laing gumagamit. Palihog hinumdomi nga may ubang mga panid nga magpakita sama nga ikaw naka-log in pa; kini tungod kay wala pa nimo malimpiyohi ang cache sa imong brawser.",
-'welcomecreation' => '== Maayong pag-abot, $1! ==
+'welcomecreation' => '== Maayong pag-abot, $1! ==
Nahimo na ang imong akawnt.
Ayaw kalimot sa pag-usab sa imong [[Special:Preferences|{{SITENAME}} mga preperensiya]].',
-'loginpagetitle' => 'Pagdayon sa tiggamit',
-'yourname' => 'Ngalan sa tiggamit:',
-'yourpassword' => 'Pasword:',
-'yourpasswordagain' => 'Itayp og usab ang pasword:',
-'remembermypassword' => 'Hinumdomi ako niini nga kompyuter',
-'yourdomainname' => 'Ang imong domain:',
-'externaldberror' => 'May nahitabong authentication database error o kaha wala ka tugoti nga mag-update sa imong eksternal nga akawnt.',
-'login' => 'Sulod',
-'nav-login-createaccount' => 'Rehistro / Dayon',
-'loginprompt' => 'Kinahanglang naka-enable ang mga koki aron ikaw maka-log-in sa {{SITENAME}}.',
-'userlogin' => 'Rehistro / Dayon',
-'logout' => 'Biya',
-'userlogout' => 'Biya',
-'notloggedin' => 'Wala ka pa masulod',
-'nologin' => "Wala pay akawnt? '''$1'''.",
-'nologinlink' => 'Paghimo og akawnt',
-'createaccount' => "Paghimo'g akawnt",
-'gotaccount' => "Naa ka nay akawnt? '''$1'''.",
-'gotaccountlink' => 'Dayon',
-'createaccountmail' => 'sa e-mail',
-'badretype' => 'Ang mga pasword nga imong gientra wala mag-match.',
-'userexists' => 'Ang ngalan sa tiggamit nga imong gisulat nagamit na.
+'yourname' => 'Ngalan sa tiggamit:',
+'yourpassword' => 'Pasword:',
+'yourpasswordagain' => 'Itayp og usab ang pasword:',
+'remembermypassword' => 'Hinumdomi ako niini nga kompyuter',
+'yourdomainname' => 'Ang imong domain:',
+'externaldberror' => 'May nahitabong authentication database error o kaha wala ka tugoti nga mag-update sa imong eksternal nga akawnt.',
+'login' => 'Sulod',
+'nav-login-createaccount' => 'Rehistro / Dayon',
+'loginprompt' => 'Kinahanglang naka-enable ang mga koki aron ikaw maka-log-in sa {{SITENAME}}.',
+'userlogin' => 'Rehistro / Dayon',
+'logout' => 'Biya',
+'userlogout' => 'Biya',
+'notloggedin' => 'Wala ka pa masulod',
+'nologin' => "Wala pay akawnt? '''$1'''.",
+'nologinlink' => 'Paghimo og akawnt',
+'createaccount' => "Paghimo'g akawnt",
+'gotaccount' => "Naa ka nay akawnt? '''$1'''.",
+'gotaccountlink' => 'Dayon',
+'createaccountmail' => 'sa e-mail',
+'badretype' => 'Ang mga pasword nga imong gientra wala mag-match.',
+'userexists' => 'Ang ngalan sa tiggamit nga imong gisulat nagamit na.
Palihug pagpili og lain nga ngalan.',
-'youremail' => 'E-mail:',
-'username' => 'Username:',
-'uid' => 'ID sa gumagamit:',
-'prefs-memberingroups' => 'Miyembro sa {{PLURAL:$1|grupo|mga grupo}}:',
-'yourrealname' => 'Tinuod nga pangalan:',
-'yourlanguage' => 'Pinulongan:',
-'badsig' => 'Dili sakto ang hilaw nga pirma.
-I-tsek ang mga tag nga HTML.',
-'badsiglength' => 'Grabe ka taas ang imong pirma.
-Dili kini puyde molapas sa $1 {{PLURAL:$1|ka karakter|ka mga karakter}}.',
-'yourgender' => 'Gender:',
-'gender-unknown' => 'Wala gi-specify',
-'gender-male' => 'Lalaki',
-'gender-female' => 'Babaye',
-'prefs-help-gender' => 'Opsyonal: gigamit para sa gender-correct nga pag-adress sa software.
-Publiko kining impormasyon.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Opsyonal ang tinuod nga pangalan.
-Kon gipili nimo nga ihatag kini, gamiton kini aron pasidunggan ka sa imong mga tampo.',
-'loginerror' => 'Sayop sa pagdayon',
-'prefs-help-email-required' => 'Ang e-mail address gikinahanglan.',
-'nocookiesnew' => 'Ang akawnt sa gumagamit nahimo na, pero wala ka pa ma-log-in.
+'loginerror' => 'Sayop sa pagdayon',
+'nocookiesnew' => 'Ang akawnt sa gumagamit nahimo na, pero wala ka pa ma-log-in.
Ang {{SITENAME}} migamit og mga koki aron ma-log in ang mga gumagamit.
Naka-disable ang imong mga koki.
Palihog i-enable kini, unya pag-log-in gamit ang imong bag-ong username ug pasword.',
-'nocookieslogin' => "Ang {{SITENAME}} migamit og mga koki aron ma-log in ang mga gumagamit.
+'nocookieslogin' => "Ang {{SITENAME}} migamit og mga koki aron ma-log in ang mga gumagamit.
Naka-disable ang imong mga koki.
Palihog i-enable kini, ug sulayi'g balik.",
-'noname' => 'Wala ikaw mag-specify og valid nga user name.',
-'loginsuccesstitle' => 'Malamposon ang pagpaila',
-'loginsuccess' => "'''Nailhan ka na sa {{SITENAME}} isip \"\$1\".'''",
-'nosuchuser' => 'Walay gumagamit nga may pangalang "$1".
+'noname' => 'Wala ikaw mag-specify og valid nga user name.',
+'loginsuccesstitle' => 'Malamposon ang pagpaila',
+'loginsuccess' => "'''Nailhan ka na sa {{SITENAME}} isip \"\$1\".'''",
+'nosuchuser' => 'Walay gumagamit nga may pangalang "$1".
Case sensitive ang mga user name.
I-tsek ang imong espeling, o [[Special:UserLogin/signup|paghimo og bag-ong akawnt]].',
-'nosuchusershort' => 'Walay gumagamit nga may pangalang "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Walay gumagamit nga may pangalang "<nowiki>$1</nowiki>".
I-tsek ang imong espeling.',
-'nouserspecified' => 'Kinahanglan mag-specify ka og username.',
-'wrongpassword' => "Sayop nga pasword ang naentra.
+'nouserspecified' => 'Kinahanglan mag-specify ka og username.',
+'wrongpassword' => "Sayop nga pasword ang naentra.
Palihog sulayi'g usab.",
-'mailmypassword' => 'I-email ang bag-ong pasword',
-'loginlanguagelabel' => 'Pinulongan: $1',
+'mailmypassword' => 'I-email ang bag-ong pasword',
+'loginlanguagelabel' => 'Pinulongan: $1',
# Edit page toolbar
'bold_sample' => 'Gilugom nga teksto',
@@ -543,6 +559,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} usba kining panid].',
Nagatimaan ka usab nga ikaw mismo ang nagsulat niini, o gikopya nimo kini gikan sa usa ka publikong rekursos o susamang libreng rekursos.
'''AYAW PAGBUTANG DINHI OG MGA BINUHAT NGA MAY NANAG-IYA SA KATUNGOD SA PAGPATIK NGA WA KAY PERMISO!'''",
'templatesused' => 'Ang mga plantilyang gigamit niini nga panid:',
+'templatesusedpreview' => 'Mga plantilyang gigamit niining paunang tan-aw:',
'template-protected' => '(giprotektahan)',
'template-semiprotected' => '(medyo giprotektahan)',
'hiddencategories' => 'Ang kining panid nahiapil sa {{PLURAL:$1|1 ka kategoriya nga nakatago|$1 ka mga kategoriya nga nakatago}}:',
@@ -583,7 +600,9 @@ Ang rason nga gihatag ni $3 mao nga ''$2''",
'viewpagelogs' => 'Tan-awa ang mga log niining panid',
'nohistory' => 'Walay kaagi sa pag-usab niining panid.',
'currentrev' => 'Kasamtangang rebisyon',
+'currentrev-asof' => 'Rebisyon sa kasamtangan sa taknang $1',
'revisionasof' => 'Rebisyon niadtong $1',
+'revision-info' => 'Rebisyon sa $1 ni $2',
'previousrevision' => '←Mas daang pag-usab',
'nextrevision' => 'Mas bag-ong rebisyon →',
'currentrevisionlink' => 'Kasamtangang rebisyon',
@@ -602,55 +621,92 @@ Leyenda: '''({{int:cur}})''' = kalainan sa kasamtangang rebisyon,
'historyempty' => '(way sulod)',
# Revision feed
-'history-feed-title' => 'Kaagi sa rebisyon',
-'history-feed-description' => 'Kaagi sa rebisyon para niining panid sa wiki',
-'history-feed-empty' => 'Ang gihangyong panid wala pa mahimo.
+'history-feed-title' => 'Kaagi sa rebisyon',
+'history-feed-description' => 'Kaagi sa rebisyon para niining panid sa wiki',
+'history-feed-item-nocomment' => '$1 sa $2',
+'history-feed-empty' => 'Ang gihangyong panid wala pa mahimo.
Puyde gitangtang kini sa wiki, o gialisdan ang ngalan.
Sulayi og [[Special:Search|pagpangita sa wiki]] para sa mga may kalabotang panid.',
# Revision deletion
-'rev-deleted-comment' => '(ang komento gitangtang)',
-'rev-deleted-user' => '(gitangtang ang username)',
-'rev-deleted-event' => '(lihok sa log gitangtang)',
-'rev-delundel' => 'ipakita/tagoa',
-'revisiondelete' => 'Papasa/ayaw papasa ang mga rebisyon',
-'revdelete-nooldid-title' => 'Dili sakto ang target nga rebisyon',
-'revdelete-nooldid-text' => 'Puyde nga wala nimo ma-specify ang target nga (mga) rebisyon aron mahimo kini, ang naka-specify nga rebisyon wala pa mahimo, o kaha imo gisulayan og tago ang kasamtangang rebisyon.',
-'revdelete-nologtype-title' => 'Walay gihatag nga klase sa log',
-'revdelete-nologtype-text' => 'Wala ka mag-specify og klase sa log aron mahimo ang kining lihok.',
-'revdelete-nologid-title' => 'Dili saktong entrada sa log',
-'revdelete-nologid-text' => 'Wala ka mag-specify og target log event aron mahimo ang kining lihok o kaha ang gi-specify nga entrada wala pa.',
-'revdelete-selected' => "'''{{PLURAL:$2|Napiling rebisyon|Napiling mga rebisyon}} sa [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Napiling log event|Mga napiling log event}}:'''",
-'revdelete-suppress-text' => "Ang supresyon gamiton '''lamang''' asa mga mosunod nga kaso:
+'rev-deleted-comment' => '(ang komento gitangtang)',
+'rev-deleted-user' => '(gitangtang ang username)',
+'rev-deleted-event' => '(lihok sa log gitangtang)',
+'rev-deleted-text-permission' => "Ang rebisyon sa panid '''napapas'''.
+Puyde nga mga mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log sa pagpapas].",
+'rev-deleted-text-unhide' => "Ang rebisyon sa panid '''napapas'''.
+Puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log sa pagpapas].
+Isip tagdumala, puyde ka pa gihapon [$1 motan-aw niining rebisyon] kon gusto nimo magpadayon.",
+'rev-suppressed-text-unhide' => "Ang rebisyon sa panid '''naka-suppressed'''.
+Puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log sa supresyon].
+Isip tagdumala, puyde ka pa gihapon [$1 motan-aw niining rebisyon] kon gusto nimo magpadayon.",
+'rev-deleted-text-view' => "Ang rebisyon sa panid '''napapas'''.
+Isip tagdumala, puyde nimo kini tan-awon; puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log sa pagpapas].",
+'rev-suppressed-text-view' => "Ang rebisyon sa panid '''naka-suppressed'''.
+Isip tagdumala, puyde nimo kini tan-awon; puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log sa supresyon].",
+'rev-deleted-no-diff' => "Dili ka puyde motan-aw niining diff tungod kay usa sa mga rebisyon '''napapas'''.
+Puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log sa pagpapas].",
+'rev-deleted-unhide-diff' => "Usa sa mga rebisyon niining diff '''napapas'''.
+Puyde nga may mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log sa pagpapas].
+Isip tagdumala, puyde nimo [$1 tan-awon ang diff] kon gusto ka magpadayon.",
+'rev-delundel' => 'ipakita/tagoa',
+'revisiondelete' => 'Papasa/ayaw papasa ang mga rebisyon',
+'revdelete-nooldid-title' => 'Dili sakto ang target nga rebisyon',
+'revdelete-nooldid-text' => 'Puyde nga wala nimo ma-specify ang target nga (mga) rebisyon aron mahimo kini, ang naka-specify nga rebisyon wala pa mahimo, o kaha imo gisulayan og tago ang kasamtangang rebisyon.',
+'revdelete-nologtype-title' => 'Walay gihatag nga klase sa log',
+'revdelete-nologtype-text' => 'Wala ka mag-specify og klase sa log aron mahimo ang kining lihok.',
+'revdelete-nologid-title' => 'Dili saktong entrada sa log',
+'revdelete-nologid-text' => 'Wala ka mag-specify og target log event aron mahimo ang kining lihok o kaha ang gi-specify nga entrada wala pa.',
+'revdelete-no-file' => 'Ang gi-specify nga payl wala pa.',
+'revdelete-show-file-confirm' => 'Sigurado ka nga gusto nimong tan-awon ang napapas nga rebisyon sa payl "<nowiki>$1</nowiki>" sugod sa $2 sa $3?',
+'revdelete-show-file-submit' => 'Oo',
+'revdelete-selected' => "'''{{PLURAL:$2|Napiling rebisyon|Napiling mga rebisyon}} sa [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Napiling log event|Mga napiling log event}}:'''",
+'revdelete-suppress-text' => "Ang supresyon gamiton '''lamang''' asa mga mosunod nga kaso:
* Dili maayo nga personal nga impormasyon
*: ''adres sa panimalay ug numero sa telepono, social security number, ubp.''",
-'revdelete-legend' => 'I-set ang restriksyon sa bisibilidad',
-'revdelete-hide-text' => 'Tagoa ang teksto sa rebisyon',
-'revdelete-hide-name' => 'Tagoa ang lihok ug target',
-'revdelete-hide-comment' => 'Tagoa ang komento sa pag-usab',
-'revdelete-hide-user' => 'Tagoa ang username/IP sa tag-usab',
-'revdelete-hide-restricted' => 'I-suppress ang data gikan sa mga tagdumala ug sa uban pa',
-'revdelete-suppress' => 'I-suppress ang data gikan sa mga tagdumala ug sa uban pa',
-'revdelete-hide-image' => 'Tagoa ang sulod sa payl',
-'revdelete-unsuppress' => 'Tangtanga ang mga restriksyon sa nabalik nga mga rebisyon',
-'revdelete-log' => 'Rason:',
-'revdelete-logentry' => 'giusab ang bisibilidad sa rebisyon sa [[$1]]',
-'logdelete-logentry' => 'giusab ang bisibilidad sa event sa [[$1]]',
-'revdelete-success' => "'''Ang bisibilidad sa rebisyon malamposong na-set.'''",
-'logdelete-success' => "'''Bisibilidad sa log malamposong na-set.'''",
-'revdel-restore' => 'usba ang bisibilidad',
-'pagehist' => 'Kaagi sa panid',
-'deletedhist' => 'Napapas nga kaagi',
-'revdelete-content' => 'sulod',
-'revdelete-summary' => 'mubong sugid sa pag-usab',
-'revdelete-uname' => 'username',
-'revdelete-restricted' => 'mga na-aplay nga restriksyon sa mga tagdumala',
-'revdelete-unrestricted' => 'gitangtang ang mga restriksyon alang sa mga tagdumala',
-'revdelete-hid' => 'gitago $1',
-'revdelete-unhid' => 'ayaw itago $1',
-'revdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|rebisyon|mga rebisyon}}',
-'logdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|event|mga event}}',
+'revdelete-legend' => 'I-set ang restriksyon sa bisibilidad',
+'revdelete-hide-text' => 'Tagoa ang teksto sa rebisyon',
+'revdelete-hide-image' => 'Tagoa ang sulod sa payl',
+'revdelete-hide-name' => 'Tagoa ang lihok ug target',
+'revdelete-hide-comment' => 'Tagoa ang komento sa pag-usab',
+'revdelete-hide-user' => 'Tagoa ang username/IP sa tag-usab',
+'revdelete-hide-restricted' => 'I-suppress ang data gikan sa mga tagdumala ug sa uban pa',
+'revdelete-suppress' => 'I-suppress ang data gikan sa mga tagdumala ug sa uban pa',
+'revdelete-unsuppress' => 'Tangtanga ang mga restriksyon sa nabalik nga mga rebisyon',
+'revdelete-log' => 'Rason:',
+'revdelete-submit' => 'I-aplay sa napiling rebisyon',
+'revdelete-logentry' => 'giusab ang bisibilidad sa rebisyon sa [[$1]]',
+'logdelete-logentry' => 'giusab ang bisibilidad sa event sa [[$1]]',
+'revdelete-success' => "'''Ang bisibilidad sa rebisyon malamposong na-set.'''",
+'revdelete-failure' => "'''Ang bisibilidad sa rebisyon dili ma-set.'''
+$1",
+'logdelete-success' => "'''Bisibilidad sa log malamposong na-set.'''",
+'logdelete-failure' => "'''Bisibilidad sa log dili ma-set.'''
+$1",
+'revdel-restore' => 'usba ang bisibilidad',
+'pagehist' => 'Kaagi sa panid',
+'deletedhist' => 'Napapas nga kaagi',
+'revdelete-content' => 'sulod',
+'revdelete-summary' => 'mubong sugid sa pag-usab',
+'revdelete-uname' => 'username',
+'revdelete-restricted' => 'mga na-aplay nga restriksyon sa mga tagdumala',
+'revdelete-unrestricted' => 'gitangtang ang mga restriksyon alang sa mga tagdumala',
+'revdelete-hid' => 'gitago $1',
+'revdelete-unhid' => 'ayaw itago $1',
+'revdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|rebisyon|mga rebisyon}}',
+'logdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|event|mga event}}',
+'revdelete-hide-current' => 'Sayop sa pagtago sa item sa petsa sa $2, $1: kini ang kasamtangang rebisyon.
+Dili puyde kini tagoon.',
+'revdelete-show-no-access' => 'Sayop sa pagtago sa item sa petsa sa $2, $1: namarkahan kini isip "restricted".
+Wala kay akses niini.',
+'revdelete-modify-no-access' => 'Sayop sa pagmodipikar sa item sa petsa sa $2, $1: namarkahan kini isip "restricted".
+Wala kay akses niini.',
+'revdelete-modify-missing' => 'Sayop sa pagmodipikar sa item ID $1: nawala kini sa database!',
+'revdelete-no-change' => "'''Pahibalo:''' ang item sa petsa sa $2, $1 anaa nay mga setting sa bisibilidad nga gihangyo.",
+'revdelete-concurrent-change' => 'Sayop sa pagmodipikar sa item sa petsa $2, $1: ang status basin nausab na sa laing gumagamit samtang imo gi-attempt ang pagmodipikar niini.
+Palihog og tsek sa mga log.',
+'revdelete-only-restricted' => 'Dili ka maka-suppress sa mga item gikan sa pagtan-aw sa mga tagdumala kon dili ka mopili og usa sa ubang opsyon sa supresyon.',
# Suppression log
'suppressionlog' => 'Log sa supresyon',
@@ -687,14 +743,11 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
'searchresulttext' => 'Para sa dugang impormasyon mahitungod sa pagpangita sa {{SITENAME}}, tan-awa ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Gipangita nimo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanang panid nga nagsugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanang panid nga misumpay sa "$1"]])',
'searchsubtitleinvalid' => "Imong gipangita ang '''$1'''",
-'noexactmatch' => "'''Walay panid nga ginganla'g \"\$1\".'''
-Mahimo mong [[:\$1|isulat kini nga panid]].",
-'noexactmatch-nocreate' => "'''Walay panid nga may titulong \"\$1\".'''",
'notitlematches' => 'Walay nag-match nga titulo sa panid',
'notextmatches' => 'Walay misaktong teksto sa panid',
-'prevn' => 'miaging $1',
-'nextn' => 'sunod $1',
-'viewprevnext' => 'Tan-awa sa ($1) ($2) ($3)',
+'prevn' => 'miaging {{PLURAL:$1|$1}}',
+'nextn' => 'sunod {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Tan-awa sa ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Mga sulod',
'search-result-size' => '$1 ({{PLURAL:$2|1 pulong|$2 ka mga pulong}})',
'search-redirect' => '(redirek $1)',
@@ -705,7 +758,7 @@ Mahimo mong [[:\$1|isulat kini nga panid]].",
'search-interwiki-more' => '(dugang pa)',
'search-mwsuggest-enabled' => 'may mga sugyot',
'search-mwsuggest-disabled' => 'walay mga sugyot',
-'showingresultstotal' => "Gipakita sa ubos {{PLURAL:$4|resulta '''$1''' sa '''$3'''|mga resulta '''$1 - $2''' sa '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' sa '''$3'''|Mga resulta '''$1 - $2''' of '''$3'''}} sa '''$4'''",
'nonefound' => "'''Bantayi''': Dili tanang ngalang espasyo (namespaces) ang gipangita by default.
Sulayi'g prefix ang imong gipangita gamit ang ''all:'' alang mangita sa tanang sulod (apil ang mga panid sa hisgot, plantilya, ubp), o gamita ang gikinahanglang ngalang espasyo isip prefix.",
'search-nonefound' => 'Walay mga resulta nga nag-match sa gipangita.',
@@ -714,68 +767,118 @@ Sulayi'g prefix ang imong gipangita gamit ang ''all:'' alang mangita sa tanang s
'powersearch-ns' => 'Pangitaa sa mga ngalang espasyo:',
'powersearch-redir' => 'Itala ang mga redirek',
'powersearch-field' => 'Pangitaa ang',
+'powersearch-togglelabel' => 'I-tsek:',
+'powersearch-toggleall' => 'Tanan',
+'powersearch-togglenone' => 'Wala',
'search-external' => 'Eksternal nga pagpangita',
'searchdisabled' => 'Pagpangita sa {{SITENAME}} naka-disable.
Puyde ka mangita gamit ang Google sa kasamtangan.
Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.',
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Wala',
+'qbsettings-fixedleft' => 'Naka-fix sa wala',
+'qbsettings-fixedright' => 'Naka-fix sa tuo',
+'qbsettings-floatingleft' => 'Floating sa wala',
+'qbsettings-floatingright' => 'Floating sa tuo',
+
# Preferences page
-'preferences' => 'Mga preperensiya',
-'mypreferences' => 'Akong preperensiya',
-'prefs-edits' => 'Gidaghanon sa nausab:',
-'prefsnologin' => 'Wala maka-log-in',
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Wala',
-'qbsettings-fixedleft' => 'Naka-fix sa wala',
-'qbsettings-fixedright' => 'Naka-fix sa tuo',
-'qbsettings-floatingleft' => 'Floating sa wala',
-'qbsettings-floatingright' => 'Floating sa tuo',
-'changepassword' => 'Usba ang pasword',
-'skin-preview' => 'Paunang tan-aw',
-'datedefault' => 'Walay preperensiya',
-'prefs-personal' => 'Profile sa gumagamit',
-'prefs-rc' => 'Mga bag-ong pag-usab',
-'prefs-watchlist' => 'Gibantayan',
-'prefs-watchlist-days' => 'Mga adlaw nga ipakita sa gibantayan:',
-'prefs-watchlist-edits' => 'Maximum nga numero sa pag-usab nga ipakita sa ekspanded nga gibantayan:',
-'prefs-misc' => 'Misc',
-'prefs-resetpass' => 'Usba ang pasword',
-'saveprefs' => 'Tipigi',
-'resetprefs' => 'Limpyohi ang wala matipigi nga mga kausaban',
-'restoreprefs' => 'Ibalik ang tanang default settings',
-'prefs-edit-boxsize' => 'Size sa edit window.',
-'rows' => 'Mga row:',
-'columns' => 'Mga kolum:',
-'searchresultshead' => 'Pangitaa',
-'resultsperpage' => 'Mga hit matag panid:',
-'contextlines' => 'Mga linya matag hit:',
-'contextchars' => 'Mga konteksto matag linya:',
-'stub-threshold' => 'Threshold para sa <a href="#" class="stub">stub link</a> formatting (bytes):',
-'recentchangesdays' => 'Mga adlaw nga ipakita sa bag-ong giusab:',
-'savedprefs' => 'Natipigan na ang imong mga preperensiya.',
-'timezonelegend' => 'Sona sa oras:',
-'localtime' => 'Oras sa lokal:',
-'timezoneuseserverdefault' => 'Gamita ang default sa server',
-'timezoneuseoffset' => 'Uban pa (i-specify ang offset)',
-'timezoneoffset' => 'Offset¹:',
-'servertime' => 'Oras sa server:',
-'guesstimezone' => 'Ibutang gikan sa brawser',
-'timezoneregion-africa' => 'Aprika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Artiko',
-'timezoneregion-asia' => 'Asya',
-'timezoneregion-atlantic' => 'Kadagatang Atlantiko',
-'timezoneregion-australia' => 'Australya',
-'timezoneregion-europe' => 'Uropa',
-'timezoneregion-indian' => 'Kadagatang Indyan',
-'timezoneregion-pacific' => 'Kadagatang Pasipiko',
-'allowemail' => 'I-enable ang e-mail gikan sa ubang gumagamit',
-'prefs-searchoptions' => 'Mga opsyon sa pagpangita',
-'prefs-namespaces' => 'Ngalang espasyo',
-'default' => 'default',
-'prefs-custom-css' => 'Kustom nga CSS',
-'prefs-custom-js' => 'Kustom nga JS',
+'preferences' => 'Mga preperensiya',
+'mypreferences' => 'Akong preperensiya',
+'prefs-edits' => 'Gidaghanon sa nausab:',
+'prefsnologin' => 'Wala maka-log-in',
+'prefsnologintext' => 'Kinahanglan ikaw <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} naka-log-in]</span> aron ma-set ang imong mga preperensiya.',
+'changepassword' => 'Usba ang pasword',
+'prefs-skin' => 'Panit',
+'skin-preview' => 'Paunang tan-aw',
+'prefs-math' => 'Math',
+'datedefault' => 'Walay preperensiya',
+'prefs-datetime' => 'Petsa ug oras',
+'prefs-personal' => 'Profile sa gumagamit',
+'prefs-rc' => 'Mga bag-ong pag-usab',
+'prefs-watchlist' => 'Gibantayan',
+'prefs-watchlist-days' => 'Mga adlaw nga ipakita sa gibantayan:',
+'prefs-watchlist-days-max' => 'Maximum 7 ka adlaw',
+'prefs-watchlist-edits' => 'Maximum nga numero sa pag-usab nga ipakita sa ekspanded nga gibantayan:',
+'prefs-watchlist-edits-max' => 'Maximum nga numero: 1000',
+'prefs-watchlist-token' => 'Token sa gibantayan',
+'prefs-misc' => 'Misc',
+'prefs-resetpass' => 'Usba ang pasword',
+'prefs-email' => 'Mga opsyon sa e-mail',
+'prefs-rendering' => 'Appearance',
+'saveprefs' => 'Tipigi',
+'resetprefs' => 'Limpyohi ang wala matipigi nga mga kausaban',
+'restoreprefs' => 'Ibalik ang tanang default settings',
+'prefs-editing' => 'Nagausab',
+'prefs-edit-boxsize' => 'Size sa edit window.',
+'rows' => 'Mga row:',
+'columns' => 'Mga kolum:',
+'searchresultshead' => 'Pangitaa',
+'resultsperpage' => 'Mga hit matag panid:',
+'contextlines' => 'Mga linya matag hit:',
+'contextchars' => 'Mga konteksto matag linya:',
+'stub-threshold' => 'Threshold para sa <a href="#" class="stub">stub link</a> formatting (bytes):',
+'recentchangesdays' => 'Mga adlaw nga ipakita sa bag-ong giusab:',
+'recentchangesdays-max' => 'Maximum $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}}',
+'recentchangescount' => 'Numero sa mga pag-usab nga ipakita isip default:',
+'prefs-help-recentchangescount' => 'Nahiapil dinhi ang mga bag-ong giusab, kaagi sa panid, ug mga log.',
+'savedprefs' => 'Natipigan na ang imong mga preperensiya.',
+'timezonelegend' => 'Sona sa oras:',
+'localtime' => 'Oras sa lokal:',
+'timezoneuseserverdefault' => 'Gamita ang default sa server',
+'timezoneuseoffset' => 'Uban pa (i-specify ang offset)',
+'timezoneoffset' => 'Offset¹:',
+'servertime' => 'Oras sa server:',
+'guesstimezone' => 'Ibutang gikan sa brawser',
+'timezoneregion-africa' => 'Aprika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Artiko',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Kadagatang Atlantiko',
+'timezoneregion-australia' => 'Australya',
+'timezoneregion-europe' => 'Uropa',
+'timezoneregion-indian' => 'Kadagatang Indyan',
+'timezoneregion-pacific' => 'Kadagatang Pasipiko',
+'allowemail' => 'I-enable ang e-mail gikan sa ubang gumagamit',
+'prefs-searchoptions' => 'Mga opsyon sa pagpangita',
+'prefs-namespaces' => 'Ngalang espasyo',
+'defaultns' => 'Kondili, pangita na lang niining mga ngalang espasyo:',
+'default' => 'default',
+'prefs-files' => 'Mga payl',
+'prefs-custom-css' => 'Kustom nga CSS',
+'prefs-custom-js' => 'Kustom nga JS',
+'prefs-reset-intro' => 'Puyde nimo gamiton ang kining panid aron ma-reset ang imong mga preprensiya ngadto sa default sa sayt.
+Dili kini puyde mabalik.',
+'prefs-emailconfirm-label' => 'Kompirmasyon sa e-mail:',
+'prefs-textboxsize' => 'Size sa editing window',
+'youremail' => 'E-mail:',
+'username' => 'Username:',
+'uid' => 'ID sa gumagamit:',
+'prefs-memberingroups' => 'Miyembro sa {{PLURAL:$1|grupo|mga grupo}}:',
+'prefs-registration' => 'Oras sa pagparehistro:',
+'yourrealname' => 'Tinuod nga pangalan:',
+'yourlanguage' => 'Pinulongan:',
+'yournick' => 'Bag-ong pirma:',
+'prefs-help-signature' => 'Ang mga komento sa panid sa hisgot kinahanglan pirmahan gamit ang "<nowiki>~~~~</nowiki>" diin kini ma-convert ngadto sa imong pirma ug may timestamp.',
+'badsig' => 'Dili sakto ang hilaw nga pirma.
+I-tsek ang mga tag nga HTML.',
+'badsiglength' => 'Grabe ka taas ang imong pirma.
+Dili kini puyde molapas sa $1 {{PLURAL:$1|ka karakter|ka mga karakter}}.',
+'yourgender' => 'Gender:',
+'gender-unknown' => 'Wala gi-specify',
+'gender-male' => 'Lalaki',
+'gender-female' => 'Babaye',
+'prefs-help-gender' => 'Opsyonal: gigamit para sa gender-correct nga pag-adress sa software.
+Publiko kining impormasyon.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Opsyonal ang tinuod nga pangalan.
+Kon gipili nimo nga ihatag kini, gamiton kini aron pasidunggan ka sa imong mga tampo.',
+'prefs-help-email-required' => 'Ang e-mail address gikinahanglan.',
+'prefs-info' => 'Basiko nga impormasyon',
+'prefs-i18n' => 'Internasyonalisasyon',
+'prefs-signature' => 'Pirma',
# Groups
'group-sysop' => 'Mga tagdumala',
@@ -834,6 +937,8 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
# Recent changes linked
'recentchangeslinked' => 'Mga may kalabotang kausaban',
+'recentchangeslinked-feed' => 'Mga may kalabotang kausaban',
+'recentchangeslinked-toolbox' => 'Mga may kalabotang kausaban',
'recentchangeslinked-title' => 'Mga pag-usab nga may kalabotan sa "$1"',
'recentchangeslinked-summary' => "Kini ang talaan sa mga bag-ong kausaban sa mga panid nga misumpay sa espesipikong panid (o sa mga sakop sa espesipikong kategoriya).
Ang mga panid sa [[Special:Watchlist|imong gibantayan]] '''nakalugom'''.",
@@ -846,17 +951,19 @@ Ang mga panid sa [[Special:Watchlist|imong gibantayan]] '''nakalugom'''.",
'uploadedimage' => 'na-upload ang "[[$1]]"',
# File description page
+'file-anchor-link' => 'Payl',
'filehist' => 'Kaagi sa payl',
'filehist-help' => 'I-klik ang petsa/oras aron makit-an ang hulagway sa payl niadtong panahona.',
'filehist-current' => 'kasamtangan',
'filehist-datetime' => 'Petsa/Takna',
'filehist-thumb' => 'Thumbnail',
+'filehist-thumbtext' => 'Thumbnail sa bersyon sa $1',
'filehist-user' => 'Tiggamit',
'filehist-dimensions' => 'Mga dimensyon',
'filehist-comment' => 'Komento',
'imagelinks' => 'Mga sumpay sa payl',
'linkstoimage' => 'Ang mosunod nga {{PLURAL:$1|mga panid misumpay|$1 panid misumpay}} niining payl:',
-'sharedupload' => 'Ang kining payl gikan sa $1 ug mahimong gigamit sa ubang mga proyekto.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Ang kining payl gikan sa $1 ug mahimong gigamit sa ubang mga proyekto.',
'uploadnewversion-linktext' => 'Pag-upload og bag-ong bersyon niining payl',
# Random page
@@ -957,7 +1064,6 @@ Tan-awa ang $2 para sa rekord sa mga bag-ong napapas.',
'protectexpiry' => 'Matapos:',
'protect_expiry_invalid' => 'Dili puyde ang expiry time.',
'protect_expiry_old' => 'Ang expiry time miagi na.',
-'protect-unchain' => 'I-unlock ang permiso sa pagbalhin',
'protect-text' => "Puyde nimo tan-awon ug usbon ang proteksyon dinhi para sa panid nga '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Walay permiso ang imong akawnt nga mag-usab og level sa proteksyon sa panid.
Kini ang kasamtangan nga mga setting sa panid nga '''$1''':",
@@ -994,6 +1100,7 @@ Puyde nimo usbon ang level sa proteksyon ning panid, pero dili kini makaapekto s
'sp-contributions-newbies' => 'Ipakita lamang ang mga tampo sa mga bag-ong gumagamit',
'sp-contributions-blocklog' => 'log sa block',
+'sp-contributions-talk' => 'Hisgot',
'sp-contributions-search' => 'Pangitaa ang mga tampo',
'sp-contributions-username' => 'Adres sa IP o username:',
'sp-contributions-submit' => 'Pangitaa',
@@ -1016,7 +1123,7 @@ Puyde nimo usbon ang level sa proteksyon ning panid, pero dili kini makaapekto s
# Block/unblock
'blockip' => 'I-block ang gumagamit',
-'ipboptions' => '2 ka oras:2 hours,1 ka adlaw:1 day,3 ka adlaw:3 days,1 ka semana:1 week,2 ka semana:2 weeks,1 ka buwan:1 month,3 ka buwan:3 months,6 ka buwan:6 months,1 ka tuig:1 year,hangtod-sa-hangtod:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ka oras:2 hours,1 ka adlaw:1 day,3 ka adlaw:3 days,1 ka semana:1 week,2 ka semana:2 weeks,1 ka buwan:1 month,3 ka buwan:3 months,6 ka buwan:6 months,1 ka tuig:1 year,hangtod-sa-hangtod:infinite',
'ipblocklist' => 'Na-block nga mga adres sa IP ug username',
'blocklink' => 'i-block',
'unblocklink' => 'ayaw i-block',
@@ -1050,7 +1157,7 @@ Sa maong mga kaso, manwal nga imo ibalhin o i-merge ang panid kon gustohon.",
'move-watch' => 'Bantayi kining panid',
'movepagebtn' => 'Ibalhin ang panid',
'pagemovedsub' => 'Malamposon ang pagbalhin',
-'movepage-moved' => 'Ang \'\'\'"$1" nabalhin na ngadto sa "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Ang \'\'\'"$1" nabalhin na ngadto sa "$2"\'\'\'',
'articleexists' => 'May panid na sa maong ngalan, o ang ngalan nga imong napili ginadili.
Palihog pagpili og laing ngalan.',
'talkexists' => "'''Ang panid mismo malamposon nga nabalhin, pero ang panid sa hisgot dili mabalhin tungod kay duna nay sulod ang panid sa hisgot sa bag-ong titulo.
@@ -1156,7 +1263,7 @@ Ang uban default nga nakatago.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Usba kining payl gamit ang eksternal nga aplikasyon',
diff --git a/languages/messages/MessagesCh.php b/languages/messages/MessagesCh.php
index 2ddcbf37..eca6432c 100644
--- a/languages/messages/MessagesCh.php
+++ b/languages/messages/MessagesCh.php
@@ -122,7 +122,7 @@ $messages = array(
'category-media-header' => 'Media siha gi katigoria "$1"',
'category-empty' => "''Taya' na påhina pat media siha gi halom este na katigoria.''",
'hidden-categories' => '{{PLURAL:$1|Hinemme na katigoria|Manhinemme na kategoria siha}}',
-'hidden-category-category' => 'Manhinemme na katigoria siha', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Manhinemme na katigoria siha',
'category-subcat-count' => '{{PLURAL:$2|Guåha i sigiente na dibision kategoria gi halom este na kategoria.|Guåha i sigiente {{PLURAL:$1|na dibision kategoria|$1 na dibision kategoria siha}}, ginen $2.}}',
'category-subcat-count-limited' => 'Guåha i sigiente {{PLURAL:$1|dibision katigoria|$1 dibision katigoria siha}} gi halom este na katigoria.',
'category-article-count' => "{{PLURAL:$2|I sigiente na påhina ha' gi este na katigoria.|Guåha {{PLURAL:$1|ha' na påhina|$1 na påhina siha}} ginen $2 gi este na katigoria.}}",
@@ -131,10 +131,18 @@ $messages = array(
'category-file-count-limited' => 'Guåha i sigiente {{PLURAL:$1|atkibu|$1 na atkibu siha}} gi halom i katigoria.',
'listingcontinuesabbrev' => 'kont.',
-'about' => 'Pot',
-'article' => "Påhinan fañodda'an",
-'newwindow' => '(para u baba gi nuebu na bentåna)',
-'cancel' => 'Kansela',
+'about' => 'Pot',
+'article' => "Påhinan fañodda'an",
+'newwindow' => '(para u baba gi nuebu na bentåna)',
+'cancel' => 'Kansela',
+'moredotdotdot' => 'Mas...',
+'mypage' => 'Påhina-hu',
+'mytalk' => 'Kombetsasion-hu',
+'anontalk' => 'Kuentusiyi i IP este',
+'navigation' => 'Nabegasion',
+'and' => '&#32;yan',
+
+# Cologne Blue skin
'qbfind' => "Sodda'",
'qbbrowse' => 'Atan',
'qbedit' => 'Tulaika',
@@ -142,15 +150,9 @@ $messages = array(
'qbpageinfo' => 'Kontekstu',
'qbmyoptions' => 'Påhina-hu siha',
'qbspecialpages' => 'Manespesiat na påhina',
-'moredotdotdot' => 'Mas...',
-'mypage' => 'Påhina-hu',
-'mytalk' => 'Kombetsasion-hu',
-'anontalk' => 'Kuentusiyi i IP este',
-'navigation' => 'Nabegasion',
-'and' => '&#32;yan',
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+# Vector skin
+'vector-namespace-template' => 'Plantiya',
'errorpagetitle' => 'Linachi',
'returnto' => 'Hånao tåtte para $1.',
@@ -200,7 +202,7 @@ $messages = array(
'otherlanguages' => 'Gi otru na lengguahe siha',
'redirectedfrom' => '(Madirihi ginen $1)',
'redirectpagesub' => "Na'dirihi i påhina",
-'lastmodifiedat' => "Må'pos na tinilaikan påhina gi $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Må'pos na tinilaikan påhina gi $2, $1.",
'viewcount' => "Ma'usa este na påhina {{PLURAL:$1|un biahi|$1 na biahi}}.",
'protectedpage' => 'Maprotehi i påhina',
'jumpto' => "Ta'yuki guatu:",
@@ -211,7 +213,6 @@ $messages = array(
'aboutsite' => 'Pot {{SITENAME}}',
'aboutpage' => 'Project:Pot',
'copyright' => 'Guåha i sinahguan gi halom $1.',
-'copyrightpagename' => "{{SITENAME}} direchun i mantituge'",
'copyrightpage' => "{{ns:project}}:Direchun i mantituge'",
'currentevents' => 'Estorian modetnu siha',
'currentevents-url' => 'Project:Estorian modetnu siha',
@@ -305,7 +306,6 @@ Pot fabot ripotta este para un [[Special:ListUsers/sysop|administrator]], ya un
Ha nå'i i rason ''$2''.",
# Login and logout pages
-'logouttitle' => "Logout ni muna'sesetbi",
'logouttext' => "'''Malog-out hao på'go.'''
Siña hao kumontinua manu'usa {{SITENAME}} sin nå'an, pat siña uma'log ta'lo pat siña un usa otra na nå'an muna'sesetbi.
@@ -313,7 +313,6 @@ Fanapunta na pålu na påhina siha para u na'annok na ma'log-in hao, asta ki un
'welcomecreation' => "== Bienbenido, $1! ==
Mafa'tinas i kuenta-mu.
Munga mamalefa tumulaika ga'ña-mu {{SITENAME}}.",
-'loginpagetitle' => "Login muna'sesetbi",
'yourname' => "Nå'an ni muna'setbi:",
'yourpassword' => 'Password:',
'yourpasswordagain' => "Taip ta'lo i password:",
@@ -335,22 +334,7 @@ Munga mamalefa tumulaika ga'ña-mu {{SITENAME}}.",
'badretype' => "Ti parehu i password siha ni un po'lo.",
'userexists' => "Esta guåha na u'usa enao na nå'an muna'sesetbi.
Ayek fan otru na nå'an.",
-'youremail' => 'E-mail:',
-'username' => "Nå'an muna'sesetbi:",
-'uid' => "ID muna'sesetbi:",
-'prefs-memberingroups' => 'Miembron {{PLURAL:$1|i grupu|i grupu siha}}:',
-'yourrealname' => "Minagahet nå'an-mu:",
-'yourlanguage' => 'Lengguahe:',
-'yournick' => 'Fitma:',
-'badsig' => 'Ti maolek i fitma raw; chek i HTML tags.',
-'badsiglength' => "Mampos anakko'-ña i na'an;
-na'lakadada' $1 {{PLURAL:$1|na simbolo|na simbolo siha}}.",
-'email' => 'E-mail',
-'prefs-help-realname' => "Ti nesisario i na'an-mu mågahet.
-Yanggen un decidi mamo'lu, ma'usa ha' sempre para muna'i hao ni kreditu ni che'cho'-mu.",
'loginerror' => 'Lachi gi login',
-'prefs-help-email' => "Ti nesesario i e-mail address, lao ha na'sede otru na taotao siha kumentusi hao ni påhina-mu muna'sesetbi/kombetsasion sin mana'annoki siha ni aidentifikasion-mu.",
-'prefs-help-email-required' => 'Nesisario i e-mail address.',
'nocookiesnew' => "Mafa'tinas i kuentan muna'sesetbi, lao ti malogin hao.
Manusa {{SITENAME}} cookies para muna'login muna'sesetbi siha.
Ti mansedi hao ni cookies.
@@ -472,7 +456,6 @@ Pot fabot, na'hålom i ID gi todus i finaisen-mu siha.",
'blockededitsource' => "Ma'a'annok gi papa' i tinige' '''tinilaika-mu''' gi '''$1''':",
'whitelistedittitle' => 'Nesesario malogin para tumulaika',
'whitelistedittext' => 'Un nesisita ma$1 para tumulaika påhina.',
-'confirmedittitle' => 'Manesita i konfitmasion e-mail para tumulaika',
'confirmedittext' => "Un nesisita un konfotme iyo-mu email åntes di tumulaika påhina.
Pot fabot po'lo yan konfotme iyo-mu e-mail gi [[Special:Preferences|prifirensia muna'sesetbi]].",
'nosuchsectiontitle' => "Tåya' na påtte",
@@ -523,7 +506,7 @@ Yanggen munga hao na matulaika i tinige'-mu yan malamaña ya mana'apåttao ta'lo
Un promette ham lokkue' na hågu ha' i tituge', pat un kopia ha' gi un lugat publika pat otru na lugat dibåtde (atan $1 para i attikulu siha).
'''MUNGA MANFA'BURESI NA GAIDIRECHU I MANTITUGE'!'''",
'templatesused' => "I plantiyas siha ni ma'usa gi påhina:",
-'templatesusedpreview' => "I plantiyas ni ma'usa gi ripasu:",
+'templatesusedpreview' => "I {{PLURAL:$1|plantiya|plantiyas}} ni ma'usa gi ripasu:",
'templatesusedsection' => "Plantiyas siha ni ma'usa gi este na seksion:",
'template-protected' => '(maprotehi)',
'hiddencategories' => "Miembron {{PLURAL:$1|1 manå'na' na kategoria|$1 na mannå'na' na kategoria}} este na påhina:",
@@ -533,7 +516,7 @@ Siña hao humanao tåtte ya tumulaika påhina ni guinaha, pat [[Special:UserLogi
'permissionserrors' => 'Linache siha gi Petmisu',
'permissionserrorstext' => "Ti nahong nibet-mu petmisu chumo'gue enao, pot i sigiente {{PLURAL:$1|na rason|na rason siha}}:",
'permissionserrorstext-withaction' => "Ti nahong nibet-mu petmisu $2, sa' i sigiente {{PLURAL:$1|na rason|na rason siha}}:",
-'recreate-deleted-warn' => "'''Adahi: Esta mana'suha i påhina ni para un fa'tinas ta'lo.'''
+'recreate-moveddeleted-warn' => "'''Adahi: Esta mana'suha i påhina ni para un fa'tinas ta'lo.'''
Konsidera fan anggen maolek ha' kumontinua tumulaika i påhina.
Estague' i historian muna'suha ni påhina:",
@@ -558,7 +541,7 @@ Nina'i i rasion ''$2'' as $3",
'nohistory' => "Tåya' historian tinilaika este na påhina.",
'currentrev' => 'Tinilaika modetnu',
'revisionasof' => 'Maribisa ginen $1',
-'revision-info' => 'Tinilaika ginen $1 as $2', # Additionally available: $3: revision id
+'revision-info' => 'Tinilaika ginen $1 as $2',
'previousrevision' => "←Ribision mas amko'",
'nextrevision' => 'Mas nuebu na tinilaika→',
'currentrevisionlink' => 'I mas nuebu na tinilaika',
@@ -570,7 +553,6 @@ Nina'i i rasion ''$2'' as $3",
'histlegend' => "Seleksion ni diferensia: ayek i kahon rediu siha ni tinilaika ni para un akompara ya yemme' \"enter\" pat i batunes gi sanpapa'.<br />
Leyendu: (på'go) = i diferensia yan i rebision på'go,
(halacha) = i diferensia yan i tinilaika ma'pos, M = dikike' na tinilaika.",
-'deletedrev' => '[mafunas]',
'histfirst' => 'I mas bihu',
'histlast' => 'I mas nuebu',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -579,7 +561,7 @@ Leyendu: (på'go) = i diferensia yan i rebision på'go,
# Revision feed
'history-feed-title' => 'Historian tinilaika',
'history-feed-description' => 'Historian tinilaika gi este na påhina gi wiki',
-'history-feed-item-nocomment' => '$1 gi $2', # user at time
+'history-feed-item-nocomment' => '$1 gi $2',
'history-feed-empty' => "Tåya' na påhina ni finaisen-mu.
Buente mana'suha gi wiki, pat matulaika nå'an-ña.
Chagi fan [[Special:Search|manaligao gi wiki]] para i mannuebu na påhina siha ni manaplikao.",
@@ -589,19 +571,19 @@ Chagi fan [[Special:Search|manaligao gi wiki]] para i mannuebu na påhina siha n
'rev-deleted-user' => "(mana'suha nå'an muna'sesetbi)",
'rev-deleted-event' => "(mana'suha aksion log)",
'rev-deleted-text-permission' => "Mana'suha este na tinilaika ginen i manpubliku na atkibu siha.
-Fana'an guåha attikulo gi [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log muna'susuha].",
+Fana'an guåha attikulo gi [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log muna'susuha].",
'rev-deleted-text-view' => "Mana'suha este na tinilaika ginen i mampubliku na atkibu siha.
Komu administradot {{SITENAME}} siña un atan ha';
-fana'an guåha attikulo gi [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log muna'susuha].",
+fana'an guåha attikulo gi [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log muna'susuha].",
'rev-delundel' => "na'annok/nå'na'",
'revisiondelete' => "Na'suha/para håfa muna'suha i tinilaika",
'revdelete-selected' => "'''{{PLURAL:$2|Tinilaika ma'ayek|Tinilaika manma'ayek}} gi [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Kasun log ni ma'ayek|Kasun log ni manma'ayek}}:'''",
'revdelete-legend' => "Po'lo i chinemma' lini'e'on siha",
'revdelete-hide-text' => "Nå'na' i tinige' ribision",
+'revdelete-hide-image' => "Nå'na' i sinahguan atkibu",
'revdelete-hide-comment' => "Nå'na' i kommentun tinilaika",
'revdelete-hide-user' => "Nå'na' i na'an muna'sesetbi/IP i editot",
-'revdelete-hide-image' => "Nå'na' i sinahguan atkibu",
'revdelete-unsuppress' => "Na'suha i chinemma' siha gi tinilaika manmana'lo siha",
'revdelete-log' => 'Rason:',
'revdelete-submit' => "Na'aplika gi tinilaika ni ma'ayek",
@@ -666,17 +648,14 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
'searchresulttext' => 'Para mas infotmasion nu manaliligao {{SITENAME}}, hånao para [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Un aligao '''[[:$1]]'''",
'searchsubtitleinvalid' => "Un aligao '''$1'''",
-'noexactmatch' => "'''Taya' na påhina mafa'na'an \"\$1\".'''
-Siña un [[:\$1|fa'tinas i påhina]].",
-'noexactmatch-nocreate' => "'''Tåya' na påhina ni titulon \"\$1\".'''",
'toomanymatches' => 'Mampos meggai na manaya ni humuyongña, pot fabot chagi difirente na inaligao',
'titlematches' => 'Titulon påhina siha ni manaya',
'notitlematches' => "Tåya' titulon påhina siha ni manaya",
'textmatches' => "Tinige' påhina siha ni manaya",
'notextmatches' => "Tåya' na tinige' påhina siha ni manaya",
-'prevn' => "$1 ni manmå'pos",
-'nextn' => "$1 ni manmamaila'",
-'viewprevnext' => 'Atan i ($1) ($2) ($3)',
+'prevn' => "{{PLURAL:$1|$1}} ni manmå'pos",
+'nextn' => "{{PLURAL:$1|$1}} ni manmamaila'",
+'viewprevnext' => 'Atan i ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Guinaha',
'search-result-size' => '$1 ({{PLURAL:$2|1 na palabra|$2 na palabra siha}})',
'search-result-score' => 'Prinisisu: $1%',
@@ -694,7 +673,6 @@ Siña un [[:\$1|fa'tinas i påhina]].",
'searchall' => 'todu',
'showingresults' => "A'annok gi sampapa' asta {{PLURAL:$1|'''1''' na humuyongña|'''$1''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
'showingresultsnum' => "A'annok gi sampapa' {{PLURAL:$3|'''1''' na humuyongña|'''$3''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
-'showingresultstotal' => "A'annok gi sampapa' {{PLURAL:$3|i humuyongña '''$1''' ginen '''$3'''|i humuyongña '''$1 - $2''' siha ginen '''$3'''}}",
'nonefound' => "'''Apunta''': Solo ha' manmanaligao palu na sågan nå'an. Chagi fan muna'klå'an mo'na i inaligao-mu yan ''all:'' para un aligao todu i guinaha (kontodu påhinan kombesasion, plantiyas, etc), pat usa i sagan nå'an ni malago'-mu kumu klå'an mo'na.",
'powersearch' => 'Finu na inaligao',
'powersearch-legend' => 'Finu na inaligao',
@@ -706,57 +684,67 @@ Siña un [[:\$1|fa'tinas i påhina]].",
Siña hao manaligao gi Google gi entretanto.
Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
-# Preferences page
-'preferences' => "I ga'ña-mu",
-'mypreferences' => "I ga'ña-hu",
-'prefs-edits' => 'Numirun tinilaika:',
-'prefsnologin' => "Ti ma'log in",
-'prefsnologintext' => "Un nesisita [[Special:UserLogin|muna'log in]] para un tulaika i ga'ña-mu muna'sesetbi.",
-'prefsreset' => "Manmamo'lo ta'lo i prifirensia siha ginen i dipusita.",
+# Quickbar
'qbsettings-none' => "Tåya'",
'qbsettings-fixedleft' => 'Maplanta gi akague',
'qbsettings-fixedright' => "Maplanta gi agapa'",
'qbsettings-floatingleft' => "Mamå'ya gi akague",
'qbsettings-floatingright' => "Mamå'ya gi agapa'",
-'changepassword' => 'Tulaika password',
-'skin' => 'Låssas',
-'skin-preview' => "Na'annok",
-'math' => 'Math',
-'dateformat' => 'Plantiyas fecha',
-'datedefault' => "Tåya' prifirensia",
-'datetime' => 'Fecha yan ora',
-'math_failure' => 'Lachi ma parse',
-'math_unknown_error' => "linachi ti matungo'",
-'math_unknown_function' => "fonksion ti matungo'",
-'math_lexing_error' => 'linachi lexing',
-'math_syntax_error' => 'linachi syntax',
-'prefs-personal' => "Botta muna'sesetbi",
-'prefs-rc' => 'Tinilaika gi halacha',
-'prefs-watchlist' => 'Listan pinilan',
-'prefs-watchlist-days' => "Dihas siha muna'annok gi listan pinilan:",
-'prefs-watchlist-edits' => "I mas takhilo' na numirun tinilaika para u na'annok gi i mana'la'dangkolo i listan pinilan:",
-'prefs-misc' => 'Misc',
-'saveprefs' => 'Såtba',
-'resetprefs' => "Na'funas i tinilaika ti manma'såtba siha",
-'textboxsize' => 'Tumulaika',
-'rows' => 'Fila siha:',
-'columns' => 'Kolumna siha:',
-'searchresultshead' => 'Aligao',
-'resultsperpage' => 'Dinanche siha kada påhina:',
-'contextlines' => 'Liña siha kada dinanche:',
-'contextchars' => 'Guinaha kada liña:',
-'recentchangesdays' => "Diha siha na para u na'annok gi i tinilaika gi halacha:",
-'recentchangescount' => "Kunatu na tinilaika para u na'annok gi i tinilaika gi halacha:",
-'savedprefs' => "Manmaasåtba i ga'ña-mu siha.",
-'allowemail' => "Na'sedi e-mail ginen otru na muna'sesetbi siha",
-'prefs-searchoptions' => 'Inayek manaligao siha',
-'prefs-namespaces' => "Sågan nå'an",
-'defaultns' => "Fanaligao hålom este na sågan nå'an fine'nena:",
-'default' => 'default',
-'files' => 'Atkibu siha',
+
+# Preferences page
+'preferences' => "I ga'ña-mu",
+'mypreferences' => "I ga'ña-hu",
+'prefs-edits' => 'Numirun tinilaika:',
+'prefsnologin' => "Ti ma'log in",
+'prefsnologintext' => "Un nesisita [[Special:UserLogin|muna'log in]] para un tulaika i ga'ña-mu muna'sesetbi.",
+'changepassword' => 'Tulaika password',
+'prefs-skin' => 'Låssas',
+'skin-preview' => "Na'annok",
+'prefs-math' => 'Math',
+'datedefault' => "Tåya' prifirensia",
+'prefs-datetime' => 'Fecha yan ora',
+'prefs-personal' => "Botta muna'sesetbi",
+'prefs-rc' => 'Tinilaika gi halacha',
+'prefs-watchlist' => 'Listan pinilan',
+'prefs-watchlist-days' => "Dihas siha muna'annok gi listan pinilan:",
+'prefs-watchlist-edits' => "I mas takhilo' na numirun tinilaika para u na'annok gi i mana'la'dangkolo i listan pinilan:",
+'prefs-misc' => 'Misc',
+'saveprefs' => 'Såtba',
+'resetprefs' => "Na'funas i tinilaika ti manma'såtba siha",
+'prefs-editing' => 'Tumulaika',
+'rows' => 'Fila siha:',
+'columns' => 'Kolumna siha:',
+'searchresultshead' => 'Aligao',
+'resultsperpage' => 'Dinanche siha kada påhina:',
+'contextlines' => 'Liña siha kada dinanche:',
+'contextchars' => 'Guinaha kada liña:',
+'recentchangesdays' => "Diha siha na para u na'annok gi i tinilaika gi halacha:",
+'recentchangescount' => "Kunatu na tinilaika para u na'annok gi i tinilaika gi halacha:",
+'savedprefs' => "Manmaasåtba i ga'ña-mu siha.",
+'allowemail' => "Na'sedi e-mail ginen otru na muna'sesetbi siha",
+'prefs-searchoptions' => 'Inayek manaligao siha',
+'prefs-namespaces' => "Sågan nå'an",
+'defaultns' => "Fanaligao hålom este na sågan nå'an fine'nena:",
+'default' => 'default',
+'prefs-files' => 'Atkibu siha',
+'youremail' => 'E-mail:',
+'username' => "Nå'an muna'sesetbi:",
+'uid' => "ID muna'sesetbi:",
+'prefs-memberingroups' => 'Miembron {{PLURAL:$1|i grupu|i grupu siha}}:',
+'yourrealname' => "Minagahet nå'an-mu:",
+'yourlanguage' => 'Lengguahe:',
+'yournick' => 'Fitma:',
+'badsig' => 'Ti maolek i fitma raw; chek i HTML tags.',
+'badsiglength' => "Mampos anakko'-ña i na'an;
+na'lakadada' $1 {{PLURAL:$1|na simbolo|na simbolo siha}}.",
+'email' => 'E-mail',
+'prefs-help-realname' => "Ti nesisario i na'an-mu mågahet.
+Yanggen un decidi mamo'lu, ma'usa ha' sempre para muna'i hao ni kreditu ni che'cho'-mu.",
+'prefs-help-email' => "Ti nesesario i e-mail address, lao ha na'sede otru na taotao siha kumentusi hao ni påhina-mu muna'sesetbi/kombetsasion sin mana'annoki siha ni aidentifikasion-mu.",
+'prefs-help-email-required' => 'Nesisario i e-mail address.',
# User rights
-'userrights' => "Inenkåtgan i direchun muna'sesetbi", # Not used as normal message but as header for the special page itself
+'userrights' => "Inenkåtgan i direchun muna'sesetbi",
'userrights-lookup-user' => "Maneha i grupun muna'sesetbi",
'userrights-user-editname' => "Po'lo nå'an muna'sesetbi:",
'editusergroup' => "Tulaika grupun muna'sesetbi",
@@ -794,6 +782,8 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
# Recent changes linked
'recentchangeslinked' => 'Umachetton na tinilaika siha',
+'recentchangeslinked-feed' => 'Umachetton na tinilaika siha',
+'recentchangeslinked-toolbox' => 'Umachetton na tinilaika siha',
'recentchangeslinked-title' => 'Tinilaika pumarehu yan "$1"',
'recentchangeslinked-noresult' => "Tåya' na tinilaika siha ni maninachetton na påhina gi tiempon ma'ayek.",
'recentchangeslinked-summary' => "Lista este ni tinilaika siha gi halacha ginen un påhina ma'ayek (pat ni miembro siha ginen un katigoria ma'ayek).
@@ -810,6 +800,7 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
'listfiles' => 'Listan atkibu',
# File description page
+'file-anchor-link' => 'Atkibu',
'filehist' => 'Historian atkibu',
'filehist-help' => "Yemme' i fecha/ora para un li'e' i atkibu annai annok guihi na momentu.",
'filehist-current' => "pa'go",
@@ -821,9 +812,7 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
'imagelinks' => 'Inachetton dokumento',
'linkstoimage' => 'Umachetton i sigiente {{PLURAL:$1|na påhina|$1 na påhina siha}} yan este na atkibu:',
'nolinkstoimage' => "Tåya' na påhina siha umachetton yan este na atkibu.",
-'sharedupload' => "Ma'apatte este na atkibu ya buente ha' ma'usa gi otru proyektu siha.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => "Tåya' atkibu mafa'na'an enao, siña un $1.",
-'noimage-linktext' => "na'kåtga hulu'",
+'sharedupload' => "Ma'apatte este na atkibu ya buente ha' ma'usa gi otru proyektu siha.",
'uploadnewversion-linktext' => "Na'kåtga hulu' un tinilaikan atkibu mas nuebu",
# MIME search
@@ -850,7 +839,7 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
'doubleredirects' => "Mandoble na inachetton ma'dirihi siha",
'brokenredirects' => "Manmayulang na muna'dirihi siha",
-'brokenredirects-edit' => '(tulaika)',
+'brokenredirects-edit' => 'tulaika',
'withoutinterwiki' => "Påhina siha tai'inachetton ni lengguahe",
@@ -960,7 +949,6 @@ Chek $2 para i historian muna\'suha gi halacha.',
'protectexpiry' => 'Munhåyan:',
'protect_expiry_invalid' => 'Lachi i oran funhåyan.',
'protect_expiry_old' => 'Esta maloffan i oran funhåyan.',
-'protect-unchain' => "Na'suha i petmisun kinanya",
'protect-text' => "Siña un tulaika i nibet proteksion ni påhina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Ti nahong i petmisu kuenta-mu tumulaika nibet proteksion ni påhina siha.
Estague taiguini i nibet i påhina '''$1''':",
@@ -994,6 +982,7 @@ Estague taiguini i nibet i påhina '''$1''':",
'sp-contributions-newbies-sub' => 'Para i mannuebu na kuenta siha',
'sp-contributions-blocklog' => "Na'påra i log",
+'sp-contributions-talk' => 'Kuentusi',
'sp-contributions-submit' => 'Aligao',
# What links here
@@ -1009,7 +998,7 @@ Estague taiguini i nibet i påhina '''$1''':",
# Block/unblock
'blockip' => "Chomma' i muna'sesetbi",
-'ipboptions' => "2 oras:2 hours,1 diha:1 day,3 na diha siha:3 days,1 simana:1 week,2 na simana siha:2 weeks,1 mes:1 month,3 na mes siha:3 months,6 na mes siha:6 months,1 sakkan:1 year,taifinakpo':infinite", # display1:time1,display2:time2,...
+'ipboptions' => "2 oras:2 hours,1 diha:1 day,3 na diha siha:3 days,1 simana:1 week,2 na simana siha:2 weeks,1 mes:1 month,3 na mes siha:3 months,6 na mes siha:6 months,1 sakkan:1 year,taifinakpo':infinite",
'ipblocklist' => "IP yan na'an muna'sesetbi ni manmachomma' siha",
'ipblocklist-submit' => 'Aligao',
'blocklink' => "chomma'",
@@ -1041,7 +1030,7 @@ Pot sienkasu i hilo', nesesario ha' na un kånya pat un na'daña i påhina yangg
'move-watch' => 'Pulan este na påhina',
'movepagebtn' => 'Kånya i påhina',
'pagemovedsub' => 'Munhåyan i siniha',
-'movepage-moved' => '\'\'\'Makånya "$1" para "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Makånya "$1" para "$2"\'\'\'',
'articleexists' => "Esta guåha un påhina mafa'na'an enao, pat ti masedi ni inayek-mu.
Ayek fan otru nå'an-ña.",
'talkexists' => "'''Munhåyan i siniha i påhina mismo, lao ti siña ha kånya i påhinan kombetsasion sa' guåha esta otru ni titulon nuebu.'''",
@@ -1088,6 +1077,7 @@ Ayek fan otru nå'an-ña.",
'tooltip-search-fulltext' => 'Aligao todu siha i pahina para este na palabras.',
'tooltip-p-logo' => 'Fanhaluman',
'tooltip-n-mainpage' => 'Bisita i Fanhaluman',
+'tooltip-n-mainpage-description' => 'Bisita i prinsipat na pahina.',
'tooltip-n-portal' => "Pot i proyektu, håfa siña hao chumo'gue, månu na siña masodda' kosas",
'tooltip-n-currentevents' => 'Aligao infotmasion ni estorian modetnu siha',
'tooltip-n-recentchanges' => "I listan ina'go i wiki gi halacha.",
@@ -1115,6 +1105,13 @@ Ayek fan otru nå'an-ña.",
'tooltip-compareselectedversions' => "Na'annok i diferensia siha gi i dos ma'ayek na tinilaika ni påhina.",
'tooltip-watch' => "Po'lo i påhina gi listan pinilan-mu",
+# Math errors
+'math_failure' => 'Lachi ma parse',
+'math_unknown_error' => "linachi ti matungo'",
+'math_unknown_function' => "fonksion ti matungo'",
+'math_lexing_error' => 'linachi lexing',
+'math_syntax_error' => 'linachi syntax',
+
# Browsing diffs
'previousdiff' => "← I må'pos na dif",
'nextdiff' => "Mamaila' na dif →",
@@ -1163,7 +1160,7 @@ Ti mantattiyi i areklo ni sigienten ina'chetton siha gi mismo liña, i.e. i påh
'watchlisttools-raw' => "Tulaika i listan pinilan ti mana'finu",
# Special:Version
-'version' => 'Tinilaika', # Not used as normal message but as header for the special page itself
+'version' => 'Tinilaika',
'version-specialpages' => 'Manespesiat na påhina',
# Special:FileDuplicateSearch
diff --git a/languages/messages/MessagesChr.php b/languages/messages/MessagesChr.php
index 39d81a3e..81944a03 100644
--- a/languages/messages/MessagesChr.php
+++ b/languages/messages/MessagesChr.php
@@ -18,11 +18,13 @@ $messages = array(
'april' => 'ᏥᎶᏂ',
'june' => 'DᎡᎭᎷᏱ',
-'about' => 'ᎬᏩᏚᏫᏛ',
-'article' => 'ᎤᏓᏡᎬ',
+'about' => 'ᎬᏩᏚᏫᏛ',
+'article' => 'ᎤᏓᏡᎬ',
+'navigation' => 'ᎠᏂᎩᏍᏗ ᏥᏳ',
+
+# Cologne Blue skin
'qbpageinfo' => 'ᎦᎷᎯᏍᏗ',
'qbspecialpages' => 'ᎤᏤᎵᏛ',
-'navigation' => 'ᎠᏂᎩᏍᏗ ᏥᏳ',
'help' => 'ᎠᎵᏍᏕᎸᏗ',
'search' => 'ᎠᏯᏍᏗ',
@@ -64,7 +66,9 @@ $messages = array(
'recentchanges' => 'ᎾᏞᎬ ᏗᎦᏁᏟᏴᏍᏗ',
# Recent changes linked
-'recentchangeslinked' => 'ᎪᎱᏍᏗ ᎠᎾᏓᏛᏂ ᏗᎦᏁᏟᏴᏍᏗ',
+'recentchangeslinked' => 'ᎪᎱᏍᏗ ᎠᎾᏓᏛᏂ ᏗᎦᏁᏟᏴᏍᏗ',
+'recentchangeslinked-feed' => 'ᎪᎱᏍᏗ ᎠᎾᏓᏛᏂ ᏗᎦᏁᏟᏴᏍᏗ',
+'recentchangeslinked-toolbox' => 'ᎪᎱᏍᏗ ᎠᎾᏓᏛᏂ ᏗᎦᏁᏟᏴᏍᏗ',
# Upload
'upload' => 'ᎦᎸᎳᏗᏢ ᎠᎧᎵᎢ ᎠᏝᎥᎢ',
@@ -78,6 +82,8 @@ $messages = array(
# Delete
'actioncomplete' => 'ᎠᏍᏆᏙᏅᎯ',
+'sp-contributions-talk' => 'ᎧᏃᎮᎸᏗ',
+
# What links here
'whatlinkshere' => 'ᎦᏙ ᎤᏍᏗ ᏗᏕᎬᏔᏛ ᎠᎭᏂ',
diff --git a/languages/messages/MessagesCkb.php b/languages/messages/MessagesCkb.php
new file mode 100644
index 00000000..cb5f348f
--- /dev/null
+++ b/languages/messages/MessagesCkb.php
@@ -0,0 +1,12 @@
+<?php
+/** Sorani (Soranî / کوردی)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'ckb-arab';
diff --git a/languages/messages/MessagesCkb_arab.php b/languages/messages/MessagesCkb_arab.php
new file mode 100644
index 00000000..f53591a0
--- /dev/null
+++ b/languages/messages/MessagesCkb_arab.php
@@ -0,0 +1,2997 @@
+<?php
+/** Sorani (Arabic script) (‫کوردی (عەرەبی)‬)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Aras Noori
+ * @author Arastein
+ * @author Asoxor
+ * @author Cyrus abdi
+ * @author Haval
+ * @author Marmzok
+ * @author رزگار
+ */
+
+$linkPrefixExtension = true;
+$fallback8bitEncoding = 'windows-1256';
+
+$rtl = true;
+$defaultUserOptionOverrides = array(
+ # Swap sidebar to right side by default
+ 'quickbar' => 2,
+ # Underlines seriously harm legibility. Force off:
+ 'underline' => 0,
+);
+
+$digitTransformTable = array(
+ '0' => '٠', # &#x0660;
+ '1' => '١', # &#x0661;
+ '2' => '٢', # &#x0662;
+ '3' => '٣', # &#x0663;
+ '4' => '٤', # &#x0664;
+ '5' => '٥', # &#x0665;
+ '6' => '٦', # &#x0666;
+ '7' => '٧', # &#x0667;
+ '8' => '٨', # &#x0668;
+ '9' => '٩', # &#x0669;
+ '.' => '٫', # &#x066b; wrong table ?
+ ',' => '٬', # &#x066c;
+);
+
+$namespaceNames = array(
+ NS_MEDIA => 'میدیا',
+ NS_SPECIAL => 'تایبەت',
+ NS_MAIN => '',
+ NS_TALK => 'لێدوان',
+ NS_USER => 'بەکارھێنەر',
+ NS_USER_TALK => 'لێدوانی_بەکارھێنەر',
+ NS_PROJECT_TALK => 'لێدوانی_$1',
+ NS_FILE => 'پەڕگە',
+ NS_FILE_TALK => 'لێدوانی_پەڕگە',
+ NS_MEDIAWIKI_TALK => 'لێدوانی_میدیاویکی',
+ NS_TEMPLATE => 'داڕێژە',
+ NS_TEMPLATE_TALK => 'لێدوانی_داڕێژە',
+ NS_HELP => 'یارمەتی',
+ NS_HELP_TALK => 'لێدوانی_یارمەتی',
+ NS_CATEGORY => 'پۆل',
+ NS_CATEGORY_TALK => 'لێدوانی_پۆل',
+);
+
+$namespaceAliases = array(
+ 'قسەی_بەکارھێنەر' => NS_USER_TALK,
+ 'قاڵب' => NS_TEMPLATE,
+ 'لێدوانی_قاڵب' => NS_TEMPLATE_TALK,
+);
+
+$specialPageAliases = array(
+ 'CreateAccount' => array( 'ھەژماردروستکردن' ),
+ 'Preferences' => array( 'ھەڵبژاردەکان' ),
+ 'Recentchanges' => array( 'دوایین‌گۆڕانکارییەکان' ),
+ 'Upload' => array( 'بارکردن' ),
+ 'Listfiles' => array( 'لیستی‌پەڕگەکان' ),
+ 'Newimages' => array( 'پەڕگەنوێکان' ),
+ 'Listusers' => array( 'لیستی‌بەکارھێنەران' ),
+ 'Statistics' => array( 'ئامارەکان' ),
+ 'Randompage' => array( 'بەھەڵکەوت' ),
+ 'Shortpages' => array( 'پەڕە‌کورتەکان' ),
+ 'Newpages' => array( 'پەڕەنوێکان' ),
+ 'Ancientpages' => array( 'پەڕەکۆنەکان' ),
+ 'Protectedpages' => array( 'پەڕەپارێزراوەکان' ),
+ 'Allpages' => array( 'ھەمووپەڕەکان' ),
+ 'Specialpages' => array( 'پەڕەتایبەتەکان' ),
+ 'Contributions' => array( 'بەشدارییەکان' ),
+ 'Movepage' => array( 'پەڕەگواستنەوە' ),
+ 'Categories' => array( 'پۆلەکان' ),
+ 'Export' => array( 'ھەناردن' ),
+ 'Version' => array( 'وەشان' ),
+ 'Allmessages' => array( 'ھەمووپەیامەکان' ),
+ 'Log' => array( 'لۆگ' ),
+ 'Mypage' => array( 'پەڕەکەم' ),
+ 'Mycontributions' => array( 'بەشدارییەکانم' ),
+ 'Listadmins' => array( 'لیستی‌بەڕێوبەران' ),
+ 'Search' => array( 'گەڕان' ),
+ 'Resetpass' => array( 'تێپەڕوشەگۆڕان' ),
+ 'Activeusers' => array( 'بەکارھێنەرەچالاکەکان' ),
+);
+
+$magicWords = array(
+ 'img_thumbnail' => array( '1', 'وێنۆک', 'thumbnail', 'thumb' ),
+ 'img_right' => array( '1', 'ڕاست', 'right' ),
+ 'img_left' => array( '1', 'چەپ', 'left' ),
+ 'img_width' => array( '1', '$1پیکسڵ', '$1px' ),
+ 'img_center' => array( '1', 'ناوەڕاست', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'چوارچێوە', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'بێچوارچێوە', 'frameless' ),
+ 'img_border' => array( '1', 'سنوور', 'border' ),
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'ھێڵ ھێنان بەژێر بەستەرەکان:',
+'tog-highlightbroken' => 'بەستەرە شکاوەکان <a href="" class="new">بەم جۆرە</a> بڕازێنەوە (یان: بەەم جۆرە<a href="" class="internal">؟</a>)',
+'tog-justify' => 'پەرەگرافەکان پڕاوپر نیشان بدە',
+'tog-hideminor' => 'دەستکارییە بچوکەکان بشارەوە لە دوا گۆڕانکارییەکاندا',
+'tog-hidepatrolled' => 'لە دوایین گۆڕانکاریەکان، دەستکاریە پارێزراوەکان داشارە',
+'tog-newpageshidepatrolled' => 'لە لیستی لاپەڕە نوێکان، لاپەڕە پارێزراوەکان داشارە',
+'tog-extendwatchlist' => 'لیستی چاودێری درێژبکەرەوە بۆ نیشان دانی ھەموو گۆڕانکارییەکان، نەک تەنھا دوایینەکان.',
+'tog-usenewrc' => 'دوا گۆڕانکارییە پەرە پێدراوەکان بەکار ببە (پێویستی بە جاڤاسکریپتە)',
+'tog-numberheadings' => 'ژمارەکردنی خۆکاری سەردێڕەکان',
+'tog-showtoolbar' => 'شریتی ئامرازەکانی دەستکاری نیشان بدە (JavaScript پێویستە)',
+'tog-editondblclick' => 'دەستکاریی پەڕە بە دووکلیک لەسەر دەق (JavaScript پێویستە)',
+'tog-editsection' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگه‌ی به‌سته‌رەکانی [دەستکاری]',
+'tog-editsectiononrightclick' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگەی کلیکی ڕاست کردن لەسەر سەردێڕی بەشەکان (JavaScript پێویستە)',
+'tog-showtoc' => 'پێرستی ناوەڕۆک نیشان بدە (بۆ ئەو پەڕانە کە زیاتر لە ٣ سەردێڕیان تێدایە)',
+'tog-rememberpassword' => 'چوونەژوورەوەم بەبیربهێنەوە لەسەر ئەم کۆمپیوتەرە',
+'tog-editwidth' => 'چوراچێوە دەستکاری پان کەرەوە تا سەرانسەری شاشەکە پڕ کاتەوە',
+'tog-watchcreations' => 'ئەو پەڕانە کە من دروستم کردوون زیاد بکە بە لیستی چاودێڕییەکەم',
+'tog-watchdefault' => 'ئەو پەڕانە کە من دەستکاریم کردوون زیاد بکە بە لیستی چاودێڕییەکەم',
+'tog-watchmoves' => 'ئەو پەڕانە کە من گواستومنەتەوە زیاد بکە بە لیستی چاودێڕییەکەم',
+'tog-watchdeletion' => 'ئەو پەڕانە کە‌ من سڕیومنەتەوە زیاد بکە‌ بە لیستی چاودێڕییەکەم',
+'tog-minordefault' => 'ھەموو دەستکارییەکان بە ورد نیشان بکە لە حاڵەتی دیفاڵت',
+'tog-previewontop' => 'پێشبینین بەرلە چوارچێوەی دەستکاری نیشان بدە‌',
+'tog-previewonfirst' => 'لە یەکەم دەستکاری دا پێشبینین نیشان بدە',
+'tog-nocache' => 'کەش کردنی (cach) پەڕەکان لە کار بخە',
+'tog-enotifwatchlistpages' => 'ئەگەر پەڕەیەکی لە لیستی چاودێڕییەکانم گۆڕدرا ئیمەیلم بۆ بنێرە',
+'tog-enotifusertalkpages' => 'ئەگەر پەڕەی وتووێژەکەم گۆڕدرا ئیمەیلم بۆ بنێرە',
+'tog-enotifminoredits' => 'بۆ گۆڕانکارییە بچووکەکانی پەڕەکانیش ئیمەیلم بۆ بنێرە',
+'tog-enotifrevealaddr' => 'ئەدرەسی ئیمەیلەکەم لە ئیمەیلە ئاگاداریدەرەکان دا نیشان بدە',
+'tog-shownumberswatching' => 'ژمارەی بەکارھێنەرە چاودێڕەکان نیشان بدە',
+'tog-oldsig' => 'پێش‌بینینی ئەو واژۆی وا هەیە:',
+'tog-fancysig' => 'وەک دەقی ویکی ئیمزا بەرچاو خە (بێ بەستەری خۆکار بۆ پەڕەی بەکارھێنەر)',
+'tog-externaleditor' => 'دەستکاریکەری دەرەکی بە کار بێنە لە حاڵەتی دیفاڵتدا (تەنھا بۆ شارەزایان، تەنزیماتی تایبەتی پێویستە لە سەر کۆمپیوتەرەکەت)',
+'tog-externaldiff' => 'کەڵک وەرگرتن لە پرۆگرامێکی دەرەکی بۆ دیتنی جیاوازیەکان لە بنەڕەتەوە (تەنها بۆ بەکارهێنانی پێشکەوتوو، پێویستی بە ئامرازی تایبەت لە سەر کۆمپیوتەرت هەیە)',
+'tog-showjumplinks' => 'ڕێگە بدە بۆ بەستەرەکانی «{{int:jumpto}}»',
+'tog-uselivepreview' => 'لە پێشبینینی زیندوو کەڵک وەرگرە (جاڤاسکریپت پێویستە) (تاقیکاری‌)',
+'tog-forceeditsummary' => 'ئەگەر پوختەی دەستکاریم نەنووسی پێم بڵێ',
+'tog-watchlisthideown' => 'دەستکارییەکانم بشارەوە لە لیستی چاودێری',
+'tog-watchlisthidebots' => 'دەستکارییەکانی بات بشارەوە لە لیستی چاودێری',
+'tog-watchlisthideminor' => 'دەستکارییە بچووکەکان لە لیستی چاودێریدا بشارەوە',
+'tog-watchlisthideliu' => 'دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری',
+'tog-watchlisthideanons' => 'دەستکارییەکانی بەکارهێنەرانی نەناسراو بشارەوە لە لیستی چاودێری',
+'tog-watchlisthidepatrolled' => 'لە لیستی چاودێریەکان، دەستکاریە پارێزراوەکان داشارە',
+'tog-nolangconversion' => 'لەکارخستنی ئاڵوگۆڕەکانی شێوەزار',
+'tog-ccmeonemails' => 'کۆپییەکانی ئەو ئیمەیلانە کە بۆ بەکارھێنەرانی ترم ناردووە بۆ خۆشم بنێرە',
+'tog-diffonly' => 'ناوەڕۆکی پەڕە لەژێر جیاوازییەکان نیشان مەدە',
+'tog-showhiddencats' => 'ھاوپۆلە شاراوەکان نیشان بدە',
+'tog-noconvertlink' => 'لەکارخستنی ئاڵوگۆڕی سەرناوی بەستەر',
+'tog-norollbackdiff' => 'لە دوای گەڕاندنەوە جیاوازی نیشان مەدە',
+
+'underline-always' => 'ھەمیشە',
+'underline-never' => 'ھەرگیز',
+'underline-default' => 'دیفاڵتی وێبگەڕەکە',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'شێوازی جۆرەپیتی بەشی دەستکاری:',
+'editfont-default' => 'بنچینەی وێبگەڕ',
+'editfont-monospace' => 'جۆرەپیتی تاکەبۆشایی (Monospaced)',
+'editfont-sansserif' => 'جۆرەپیتی Sans-serif',
+'editfont-serif' => 'جۆرەپیتی Serif',
+
+# Dates
+'sunday' => 'یەکشەممە',
+'monday' => 'دووشەممە',
+'tuesday' => 'سێشەممە',
+'wednesday' => 'چوارشه‌ممه‌',
+'thursday' => 'پێنجشه‌ممه‌',
+'friday' => 'هه‌ینی',
+'saturday' => 'شه‌ممه‌',
+'sun' => 'یەکشەممە',
+'mon' => 'دووشەممە',
+'tue' => 'سێشەممە',
+'wed' => 'چوارشەممە',
+'thu' => 'پێنجشەممە',
+'fri' => 'ھەینی',
+'sat' => 'شه‌ممه‌',
+'january' => 'کانوونی دووەم',
+'february' => 'شوبات',
+'march' => 'ئازار',
+'april' => 'نیسان',
+'may_long' => 'ئایار',
+'june' => 'حوزەیران',
+'july' => 'تەمموز',
+'august' => 'ئاب',
+'september' => 'ئەیلوول',
+'october' => 'تشرینی یەکەم',
+'november' => 'تشرینی دووەم',
+'december' => 'کانونی یەکەم',
+'january-gen' => 'کانونی دووەمی',
+'february-gen' => 'شوباتی',
+'march-gen' => 'مارتی',
+'april-gen' => 'نیسانی',
+'may-gen' => 'مایسی',
+'june-gen' => 'حوزەیرانی',
+'july-gen' => 'تەمموزی',
+'august-gen' => 'ئابی',
+'september-gen' => 'ئەیلولی',
+'october-gen' => 'تشرینی یەکەمی',
+'november-gen' => 'تشرینی دووەمی',
+'december-gen' => 'كانونی یەکەمی',
+'jan' => 'كا١',
+'feb' => 'شوب',
+'mar' => 'مارت',
+'apr' => 'ئب',
+'may' => 'مای',
+'jun' => 'حزن',
+'jul' => 'ته‌م',
+'aug' => 'ئاب',
+'sep' => 'ئه‌ی',
+'oct' => 'ت١',
+'nov' => 'ت٢',
+'dec' => 'كا١',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|ھاوپۆل|ھاوپۆلەکان}}',
+'category_header' => 'پەڕە ھاوپۆلەکانی "$1"',
+'subcategories' => 'ژێرھاوپۆلەکان',
+'category-media-header' => 'میدیا له‌ هاوپۆلی "$1" دا',
+'category-empty' => "''ئەم ھاوپۆلە ھەنووکە ھیچ پەڕە یان پەڕگەیەک لە خۆ ناگرێت.‌''",
+'hidden-categories' => '{{PLURAL:$1|ھاوپۆلی شاراوە|ھاوپۆلی شاراوە}}',
+'hidden-category-category' => 'هاوپۆلە شاردراوەکان',
+'category-subcat-count' => '{{PLURAL:$2|ئەم پۆلە تەنھا ژێرپۆلی خوارەوەی تێدایە.| ئەم پۆلە ئەم {{PLURAL:$1|ژێرپۆلەی|$1 ژێرپۆلانەی}} خوارەوەی تێدایە، لە کۆی سەرجەم $2 دانە.}}',
+'category-subcat-count-limited' => 'ئەم هاوپۆلە {{PLURAL:$1|ژێرهاوپۆلی}} لەخۆ گرتووە.',
+'category-article-count' => '{{PLURAL:$2|ئەم پۆلە تەنھا ئەم پەڕەی لەخۆگرتووە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لەم پۆلەدا، لە سەرجەم $2 پەڕە.}}',
+'category-article-count-limited' => 'ئەم {{PLURAL:$1|لاپەڕە|$1 لاپەڕانە}}، لەم هاوپۆلەدان.',
+'category-file-count' => '{{PLURAL:$2|ئەم هاوپۆلە تەنها ئەم پەڕگەی لەخۆ گرتووە.|ئەم‌ {{PLURAL:$1|پەڕگەیە}} کە بەشێکە لە هەموو $2پەڕگەی ئەم هاوپۆلە‌ دەیبینی.}}',
+'category-file-count-limited' => 'ئەم {{PLURAL:$1|پەڕگە|پەڕگانە}} لەم هاوپۆلەدایە.',
+'listingcontinuesabbrev' => '(درێژە)',
+
+'mainpagetext' => "'''ویكیمیدیا به‌سه‌ركه‌وتووی دامه‌زرا.'''",
+'mainpagedocfooter' => 'بكه‌ [http://meta.wikimedia.org/wiki/Help:ناوه‌ڕۆكی چۆنێتی به‌كارهێنان] بۆ وه‌ده‌ست هێنانی زانیاریی له‌سه‌ر چۆنێتی كارگێڕی نه‌رمه‌كاڵای ویكی، سه‌ردانی.
+
+== ده‌ست به‌ كاركردن ==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings لیسته‌ی هه‌ڵبژاردنه‌كان و ڕێكخستنه‌كان]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لیستی وه‌شانه‌كانی ویكیمیدیا]',
+
+'about' => 'سه‌باره‌ت',
+'article' => 'بابەت',
+'newwindow' => '(لە پەڕەیەکی نوێ دەکرێتەوە)',
+'cancel' => 'ھەڵوەشاندنەوە',
+'moredotdotdot' => 'زیاتر',
+'mypage' => 'په‌ڕه‌ی من',
+'mytalk' => 'لێدوانەکەم',
+'anontalk' => 'وتووێژ بۆ ئەم ئای‌پی یە',
+'navigation' => 'ڕێدۆزی',
+'and' => '&#32;و',
+
+# Cologne Blue skin
+'qbfind' => 'بدۆزەرەوە',
+'qbbrowse' => 'بگه‌ڕێ',
+'qbedit' => 'دەستکاری',
+'qbpageoptions' => 'ئەم پەڕەیە',
+'qbpageinfo' => 'زانیاریی په‌ڕه‌',
+'qbmyoptions' => 'پەڕەکانم',
+'qbspecialpages' => 'پەڕە تایبەتەکان',
+'faq' => 'پرسیار و وەڵام (FAQ)',
+'faqpage' => 'Project:پرسیار و وەڵام',
+
+# Vector skin
+'vector-action-addsection' => 'زیادکردنی بابەت',
+'vector-action-delete' => 'سڕینەوە',
+'vector-action-move' => 'گواستنەوە',
+'vector-action-protect' => 'پاراستن',
+'vector-action-undelete' => 'گەڕاندنەوەی سڕین',
+'vector-action-unprotect' => 'نەپاراستن',
+'vector-namespace-category' => 'پۆل',
+'vector-namespace-help' => 'پەڕەی یارمەتی',
+'vector-namespace-image' => 'پەڕگە',
+'vector-namespace-main' => 'پەڕە',
+'vector-namespace-media' => 'پەڕەی میدیا',
+'vector-namespace-mediawiki' => 'پەیام',
+'vector-namespace-project' => 'پەڕەی پرۆژە',
+'vector-namespace-special' => 'پەڕەی تایبەت',
+'vector-namespace-talk' => 'لێدوان',
+'vector-namespace-template' => 'قاڵب',
+'vector-namespace-user' => 'پەڕەی بەکارھێنەر',
+'vector-view-create' => 'دروست‌کردن',
+'vector-view-edit' => 'دەستکاری',
+'vector-view-history' => 'بینینی مێژوو',
+'vector-view-view' => 'خوێندنەوە',
+'vector-view-viewsource' => 'بینینی سەرچاوە',
+'actions' => 'کردارەکان',
+'namespaces' => 'بۆشایی‌ناوەکان',
+'variants' => 'شێوەزارەکان',
+
+'errorpagetitle' => 'ھەڵە',
+'returnto' => 'بگەڕێوە بۆ $1.',
+'tagline' => 'لە {{SITENAME}}',
+'help' => 'یارمەتی',
+'search' => 'گەڕان',
+'searchbutton' => 'بگەڕێ',
+'go' => 'بڕۆ',
+'searcharticle' => 'بڕۆ',
+'history' => 'مێژووی پەڕە',
+'history_short' => 'مێژووی پەڕە',
+'updatedmarker' => 'لە دوای دواسەردانم نوێکراوەتەوە',
+'info_short' => 'زانیاری',
+'printableversion' => 'وەشانی ئامادەی چاپ',
+'permalink' => 'بەستەری ھەمیشەیی',
+'print' => 'چاپ',
+'edit' => 'دەستکاری',
+'create' => 'دروستکردن',
+'editthispage' => 'دەستکاری ئەم پەڕەیە بکە‌',
+'create-this-page' => 'ئەم پەڕە دروست بکە',
+'delete' => 'سڕینەوە',
+'deletethispage' => 'سڕینه‌وه‌ی ئه‌م په‌ڕه‌یه‌',
+'undelete_short' => '{{PLURAL:$1|یەک گۆڕانکاریی|$1 گۆڕانکاریی}} سڕاوە بەجێبھێنەرەوە',
+'protect' => 'پاراستن',
+'protect_change' => 'گۆڕین',
+'protectthispage' => 'ئه‌م په‌ڕه‌یه‌ بپارێزه‌',
+'unprotect' => 'مه‌پارێزه‌',
+'unprotectthispage' => 'ئه‌م په‌ڕه‌یه‌ مه‌پارێزه‌',
+'newpage' => 'پەڕەی نوێ',
+'talkpage' => 'باس لەسەر ئەم پەڕە بکە‌',
+'talkpagelinktext' => 'لێدوان',
+'specialpage' => 'په‌ڕه‌ی تایبه‌ت',
+'personaltools' => 'ئامڕازە تاکەکەسییەکان',
+'postcomment' => 'بەشی نوێ',
+'articlepage' => 'ناوه‌ڕۆكی بابه‌ت ببینه‌',
+'talk' => 'لێدوان',
+'views' => 'بینینەکان',
+'toolbox' => 'ئامرازدان',
+'userpage' => 'په‌ڕه‌ی به‌كارهێنه‌ر نیشانبده‌',
+'projectpage' => 'په‌ڕه‌ی پرۆژه‌ نیشانبده‌',
+'imagepage' => 'پەڕەی پەڕگە نیشان بدە',
+'mediawikipage' => 'په‌ڕه‌ی په‌یام نیشانبده‌',
+'templatepage' => 'په‌ڕه‌ی قاڵب نیشانبده‌',
+'viewhelppage' => 'په‌ڕه‌ی یارمه‌تی نیشانبده‌',
+'categorypage' => 'په‌ڕه‌ی هاوپۆل نیشانبده‌',
+'viewtalkpage' => 'بینینی لێدوان',
+'otherlanguages' => 'بە زمانەکانی تر',
+'redirectedfrom' => '(ڕەوانەکراوە لە $1 ەوە)',
+'redirectpagesub' => 'پەڕەی ڕەوانەکردن',
+'lastmodifiedat' => 'ئەم پەڕەیە دواجار لە $2ی $1 نوێکراوەتەوە.',
+'viewcount' => 'ئەم پەڕەیە {{PLURAL:$1|یەکجار|$1 جار}} بینراوە.',
+'protectedpage' => 'پەڕەی پارێزراو',
+'jumpto' => 'باز بدە بۆ:',
+'jumptonavigation' => 'ڕێدۆزی',
+'jumptosearch' => 'گەڕان',
+'view-pool-error' => 'ببورە، لەم کاتەدا ڕاژەکارەکان زیاباریان لە سەرە.<br />
+ژمارەیەکی زۆر لە بەکارهێنەران هاوکات هەوڵی دیتنی ئەم لاپەرەیان داوە.<br />
+تکایە پێش هەوڵی دووبارە بۆ دیتنی ئەم لاپەڕە، نەختێک بوەستە.<br /><br />
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'دەربارەی {{SITENAME}}',
+'aboutpage' => 'Project:دەربارە',
+'copyright' => 'ناوەڕۆک ئامادەیە لە ژێر $1.',
+'copyrightpage' => '{{ns:project}}:مافەکانی لەبەرگرتنەوە',
+'currentevents' => 'ڕووداوە ھەنووکەییەکان',
+'currentevents-url' => 'Project:ڕووداوە بەردەوامەکان',
+'disclaimers' => 'نابەرپرسییەکان',
+'disclaimerpage' => 'Project:بەرپرس‌نەبوون',
+'edithelp' => 'ڕێنمایی بۆ دەستکاریکردن',
+'edithelppage' => 'Help:دەستکاریکردن',
+'helppage' => 'Help:ناوەڕۆک',
+'mainpage' => 'دەستپێک',
+'mainpage-description' => 'دەستپێک',
+'policy-url' => 'Project: سیاسەت',
+'portal' => 'دەروازەی بەکارھێنەران',
+'portal-url' => 'Project: دەروازەی بەکارھێنەران',
+'privacy' => 'ڕێبازی تایبەتێتی',
+'privacypage' => 'Project:پاراستنی زانیارییەکان',
+
+'badaccess' => 'ھەڵە لە بە دەست ھێنان',
+'badaccess-group0' => 'ڕێگەت پێ نەدراوە بۆ بەجێهێنای ئەو ئەنجامە وا داخوازیت کردووه.',
+'badaccess-groups' => 'ئەو ئەنجامەی وا داخوازیت کردووه مەحدود کراوە بۆ بەکارهێنەرانی {{PLURAL:$2|دەستەی|یەکێک لە دەستەکانی}}: $1',
+
+'versionrequired' => 'وەشانی $1ی‌ میدیاویکی پێویستە',
+'versionrequiredtext' => 'پێویستیت بە وەشانی $1ی ویکیمیدیا ھەیە بۆ بەکاربردنی ئەم پەڕەیە.
+تەماشای [[Special:Version|پەڕەی وەشان]] بکە.',
+
+'ok' => 'باشه‌',
+'retrievedfrom' => 'وەرگیراو لە «$1»',
+'youhavenewmessages' => '$1ت ھەیە ($2).',
+'newmessageslink' => 'پەیامی نوێ',
+'newmessagesdifflink' => 'دوا گۆڕانکارییەکان',
+'youhavenewmessagesmulti' => 'لە $1 دا پەیامی نوێت ھەیە',
+'editsection' => 'دەستکاری',
+'editold' => 'دەستکاری',
+'viewsourceold' => 'بینینی سەرچاوە',
+'editlink' => 'دەستکاری',
+'viewsourcelink' => 'بینینی سەرچاوە',
+'editsectionhint' => 'دەستکاری کردنی بەشی: $1',
+'toc' => 'ناوەڕۆک',
+'showtoc' => 'نیشاندان',
+'hidetoc' => 'شاردنەوە',
+'thisisdeleted' => 'نیشاندان یا گەڕاندنەوەی $1؟',
+'viewdeleted' => '$1 نیشان بده‌؟',
+'restorelink' => '{{PLURAL:$1|گۆڕانکاریی سڕاو|$1 یەک گۆڕانکاریی سڕاو}}',
+'feedlinks' => 'خۆراک:',
+'feed-invalid' => 'ئەندام بوونی ئەو جۆرە خۆراکە نەناسراوە.',
+'feed-unavailable' => 'پەیوەندی فییدەکان ئامادەی کەڵک وەرگرتن نیە',
+'site-rss-feed' => 'فیدی RSS بۆ $1',
+'site-atom-feed' => 'فیدی Atom بۆ $1',
+'page-rss-feed' => 'فیدی RSS بۆ «$1»',
+'page-atom-feed' => 'Atom Feed ـی "$1"',
+'red-link-title' => '$1 (پەڕە بوونی نییە)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'پەڕە',
+'nstab-user' => 'پەڕەی بەکارھێنەر',
+'nstab-media' => 'میدیا',
+'nstab-special' => 'پەڕەی تایبەت',
+'nstab-project' => 'پەڕەی پرۆژە',
+'nstab-image' => 'پەڕگە',
+'nstab-mediawiki' => 'پەیام',
+'nstab-template' => 'قاڵب',
+'nstab-help' => 'پەڕەی یارمەتی',
+'nstab-category' => 'ھاوپۆل',
+
+# Main script and global functions
+'nosuchaction' => 'كرداری به‌م شێوه‌یه‌ نییه‌',
+'nosuchactiontext' => 'ئەو چالاکییەی لە لایەن بەستەرەوە دیاریکراوە ناتەواوە.
+لەوانەیە بە هەڵە بەستەرەکەت نووسیبێت، یان بەستەرێکی هەڵەی بە دواوە بێت.
+لەوانەیە ئەمە نیشانەی هەڵەیەک بێت لەو نەرمەکاڵایەی کە بەکاردێت لە لایەن {{SITENAME}}.',
+'nosuchspecialpage' => 'په‌ڕه‌ی تایبه‌تی له‌و شێوه‌یه‌ نییه‌',
+'nospecialpagetext' => '<strong>پەڕەیەکی تایبەت دەخوازیت کە بوونی نیە.</strong>
+
+لیستێکی پەڕە تایبەتە دروستەکان لە [[Special:SpecialPages|{{int:specialpages}}]] لە بەردەست‌دایە.',
+
+# General errors
+'error' => 'هه‌ڵه‌',
+'databaseerror' => 'هه‌ڵه‌ له‌ بنكه‌دراوه‌دا هه‌یه‌',
+'dberrortext' => 'ھەڵەیەکی ڕستەنووسی لە داواکاریی بنکەیدراو ڕووی داوە.
+لەوانەیە ئەوە نیشاندەری کەلێنێک لە نەرمامێرەکەدا بێت.
+دوایین تێکۆشان بۆ داواکاری بنکەیدراو:
+<blockquote><tt>$1</tt></blockquote>.
+لە نێو کرداری "<tt>$2</tt>".
+بنکەیدراو ھەڵەی"<tt>$3: $4</tt>" گەڕاندووتەوە.',
+'dberrortextcl' => 'هەڵەیەکی ڕستەنووسی لە داواکاریی بنکە‌یدراو ڕوویداوە.
+دوایین تێکۆشان بۆ داواکاری بنکەیدراو ئەمە بووە:
+"$1"
+لە نێو کرداری "$2".
+بنکەیدراو ھەڵەی "$3: $4" گەڕاندووەتەوە',
+'laggedslavemode' => 'ئاگاداری: لەوانەیە لاپەڕەکە نوێکردنەکان لە بەر نەگرێت.',
+'readonly' => 'بنکەدراوە داخراوە',
+'enterlockreason' => 'هۆیەک بۆ قوفڵ‌کردنەکە بنووسە کە تێیدا کاتی کردنەوەی قۆفڵەکە باس کرابێت',
+'readonlytext' => 'بنکەدراوەکە لەم کاتەدا لەبەر چاکسازی ئاسایی بۆ نوسینی نوێ و دەستکاری قوفڵ کراوه. دوای ئەوە ئەگرێتەوە بۆ ئاستی خۆی.
+
+ئەو بەڕێوبەرەی کە قوفڵی کردووه ئەم ڕوون‌کردنەوەی نووسیوە : $1',
+'missing-article' => 'دانەگە (دەیتابەیس) نەیتوانی دەقی پەڕەیەک بدۆزێتەوە کە دەبوا بیدۆزایەتوە، بەناوی "$1" $2 .
+
+ئەمە کاتێ ڕوو ئەدات کە بەدواچوونی بەستەری پەڕەیکی سڕاوە یان جیاوازیەکانی مێژوو تێپەڕبووی دەکەی.
+
+ئەگەر وا نەبێت، ئەوا ڕەنگە گرفتێکت لەم نەرمامێرە دا ھەبێت، کە تۆ پێت زانیوە..
+تکایە ئەمە بە یەکێک لە ئەندامانی [[Special:ListUsers/sysop|بەڕێوبەر]] ڕاپۆرت بدە، و ناونیشانی URLـەکەی پێ بدە.',
+'missingarticle-rev' => '(پیاچوونەوە#: $1)',
+'missingarticle-diff' => '(جیاوازی: $1، $2)',
+'readonly_lag' => 'بنكه‌دراوه‌كه‌ به‌شێوه‌ی خۆكار به‌ندكراوه‌، له‌كاتێكدا بنكه‌دراوه‌ی ڕاژه‌كاره‌كه‌ ڕۆڵی له‌خۆگرتن ده‌گێڕێت',
+'internalerror' => 'هه‌ڵه‌یه‌كی ناوخۆیی ڕویدا',
+'internalerror_info' => 'هه‌ڵه‌ی ناوخۆیی: $1',
+'fileappenderror' => 'نه‌تواندرا "$1" بخرێته‌سه‌ر "$2".',
+'filecopyerror' => 'په‌ڕگه‌ی „$1“ ڕوونوس نابێت بۆ „$2“ .',
+'filerenameerror' => 'ناوی په‌ڕگه‌ی "$1" نه‌گۆڕدرا بۆ "$2".',
+'filedeleteerror' => 'بسڕدرێته‌وه‌"$1" نه‌توانرا په‌ڕگه‌ی',
+'directorycreateerror' => 'نەتوانرا بوخچەی "$1"دروست بکرێت.',
+'filenotfound' => 'په‌ڕگه‌ی "$1" نه‌دۆزرایه‌وه‌',
+'fileexistserror' => 'ناتوانی لەسەر پەڕگەی "$1" بنووسیت: ئەو پەڕگەیە هەیە.',
+'unexpected' => 'نرخی چاوەڕوان نەکراو: "$1"="$2" .',
+'formerror' => 'هەڵە: فورمەکە نانێردرێت.',
+'badarticleerror' => 'ئەو ئاماژە لەم لاپەڕەدا پێک‌نایە.',
+'cannotdelete' => 'نەتوانرا پەڕە یان پەڕگەی «$1» بسڕدرێتەوە.
+لەوانەیە پێشتر لە لایەن کەسێکی ترەوە سڕابێتەوە.',
+'badtitle' => 'ناونیشانی خراپ',
+'badtitletext' => 'سەرناوی ئەو لاپەڕەی کە دەتەوێت پووچە، بەتاڵە، یان سەرناوێکی نێوان-زمانی یان نێوانی-ویکییە کە بە شێوەیەکی ھەڵە لکێندراوە.
+ڕەنگە یەک یان چەند کاراکتێری تێدا بێت کە ناشێت لە نێو سەرناوەکان دا بەکار بھێنرێت.',
+'perfcached' => 'ئەم داتای خوارەوە پاشەکەوتی کەشە وە ناکرێ تازەی بکەیەوە.',
+'perfcachedts' => 'ئەم داتای خوارەوە کەش کراوە، و دوایین جار لە $1 تازە کراوەتەوە',
+'querypage-no-updates' => 'تازەکردنەوەی ئەم لاپەڕە لە حاڵی ئێستا دا ناچالاک کراو.
+داتای ئەم شوێنە بەم زووانە تازە ناکرێتەوە.',
+'wrong_wfQuery_params' => 'پارامێتری ھەڵە بۆ wfQuery()<br />
+کردار: $1<br />
+داواکاری: $2',
+'viewsource' => 'بینینی سەرچاوە',
+'viewsourcefor' => 'بۆ $1',
+'actionthrottled' => 'چالاکی پێشی پێ گیرا',
+'actionthrottledtext' => 'بە مەبەستی پێشگریی لە سپەم، ڕێگە نادرێت تۆ لە ماوەیەکی کورت دا لە سەر یەک ئەمە زۆر جار ئەنجام بدەی، وە ئیستا تۆ لە ڕادە بەدەرت کردووە.
+تکایە پاش چەند خولەک دووبارە تاقی بکەوە.',
+'protectedpagetext' => 'بە مەبەستی پێشگریی لە دەستکاریی، ئەم لاپەڕە قوفڵ کراوە.',
+'viewsourcetext' => 'تۆ دەتوانی سەرچاوەی ئەم لاپەڕە ببینی و کۆپی بکەی:',
+'protectedinterface' => 'ئەم لاپەڕە دەقی ڕوواڵەتی نەرم‌ئامێرەکە نیشان ئەدات، وە بۆ پێشگریی لە خراپکاریی قوفڵ کراوە.',
+'editinginterface' => "'''ئاگاداریی:''' تۆ خەریکی دەستکاریی لاپەڕەیەکی کە بۆ دابینکردنی دەقی ڕوواڵەتی نەرم‌ئامێر بە کار دەھێنرێت.
+گۆڕانکاریی لە ئەم لاپەڕە کاریگەر دەبێت لە سەر ڕواڵەتی لاپەڕەکانی بەکارھێنەرانی دیکە.
+بۆ وەرگێڕان تکایە [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] بەکار بھێنە، واتە پرۆژەی خۆجێیی‌کردنی مێدیاویکی.",
+'sqlhidden' => '(داواکاریی SQL شاراوەیە)',
+'cascadeprotected' => 'ئەم لاپەڕە پارێزراوە لە دەستکاریی، چونکا خراوەتە سەر ڕیزی ئەم {{PLURAL:$1|لاپەڕانه‌، کە}} که‌ به‌ هه‌ڵکردنی بژارده‌ی داڕژان هه‌ڵکراوه‌:
+$2',
+'namespaceprotected' => "تۆ ناتوانی لاپەڕەکانی ناو نەیمسپەیسی '''$1''' بگۆڕی.",
+'customcssjsprotected' => 'تۆ ناتوانی ئەم لاپەڕە دەستکاریی بکەی، چونکا ڕێکراوە تاکەکەسییەکانی بەکارھێنەرێکی دیکەی تێدایە.',
+'ns-specialprotected' => 'تۆ ناتوانی لاپەڕە تایبەتەکان دەستکاریی بکەی.',
+'titleprotected' => 'ئەم سەرناوە پارێزراوە لە دروستکران لە لایەن [[User:$1|$1]].
+ھۆکاری ئەمە بریتیە لە "\'\'$2\'\'".',
+
+# Virus scanner
+'virus-badscanner' => "پێکەربەندیی نابەجێ: ڤایرس سکەنێری نەناسراو: ''$1''",
+'virus-scanfailed' => 'سکەن ئەنجام نەدرا(کۆد $1)',
+'virus-unknownscanner' => 'دژەڤایرس نەناسراوە:',
+
+# Login and logout pages
+'logouttext' => "'''ئێستا تۆ لە ھەژمارەکەت ھاتوویتە دەرەوە.'''
+
+تۆ دەتوانی درێژە بدەی بە بەرکارھێنانی {{SITENAME}} بە شێوەی بێناو، یان دەتوانی [[Special:UserLogin|دیسانەوە بچیتەوە ژوورەوە]] بە ھەمان ناو یان بە ناوی بەکارھێنەرێکی جیاوازەوە.
+ئاگادار بە کە سەرەڕای چوونەدەرەوەی تۆ لە ھەژمارەکەت ھەندێک لە پەڕەکان ھەر بە شێوەیەک نیشان ئەدرێن کە گوایە تۆ ھێشتا لە ژوورەوەیت. ئەمە بەردەوام دەبێت ھەتا کاتێک کە تۆ کەشی وێبگەڕەکەت دەسڕیتەوە.",
+'welcomecreation' => '== بەخێربێی، $1! ==
+ھەژمارەکەت دروست کرا.
+لە بیرت نەچێت کە گۆڕانکاری لە [[Special:Preferences|ھەڵبژاردەکانی {{SITENAME}}]]ی تایبەتی خۆت بدەی.',
+'yourname' => 'ناوی بەکارھێنەر:',
+'yourpassword' => 'تێپەڕوشە:',
+'yourpasswordagain' => 'تێپه‌ڕه‌وشه‌ دووباره:‌',
+'remembermypassword' => 'زانیاریی چوونە ژوورەوەم لەسەر ئەم کۆمپیوتەرە پاشەکەوت بکە‌',
+'yourdomainname' => 'ناوی دۆمه‌ینی خۆت',
+'externaldberror' => 'یان هەڵەی ڕێگەپێدانی بنکەدراو هەیە یان ڕێگات پێ نادرێت بۆ نوێ کردنی هەژماری دەرەکیت.',
+'login' => 'چوونەژوورەوە',
+'nav-login-createaccount' => 'چوونەژوورەوە / دروستکردنی هەژمار',
+'loginprompt' => 'بۆ چونەژوورەوه لە {{SITENAME}}، ئەشێ ڕێگە بدەی بە کووکی‌یەکان.',
+'userlogin' => 'دروست کردنی ھەژمار \\ چوونە ژورەوە',
+'userloginnocreate' => 'چوونەژوورەوە',
+'logout' => 'دەرچوون',
+'userlogout' => 'دەرچوون',
+'notloggedin' => 'له‌ ژووره‌وه‌ نیت',
+'nologin' => "ھەژمارت نییە؟ '''$1'''.",
+'nologinlink' => 'ھەژمارێک دروست بکە',
+'createaccount' => 'ھەژمار دروست بکە',
+'gotaccount' => "خاوه‌نی هه‌ژماری خۆتی؟ '''$1'''.",
+'gotaccountlink' => 'چوونه‌ ژووره‌وه‌',
+'createaccountmail' => 'بە ئیمەیل',
+'badretype' => 'تێپەڕوشەکان لەیەک ناچن.',
+'userexists' => 'ئەو ناوەی تۆ داوتە پێشتر کەسێکی دیکە بەکاری بردووە.
+ناوێکی دیکە ھەڵبژێرە.',
+'loginerror' => 'ھەڵە لە چوونە ژوورەوەدا',
+'nocookiesnew' => 'هەژماری بەکارهێنەر درووست‌کرا، بەڵام بە سەرکەوتوویی نەچوویتەوە ژوورەوە.
+{{SITENAME}} بۆ چوونەوە ژووری بەکارهێنەر لە شەکرۆکە کەڵک وەر دەگرێت.
+تۆ بەکار‌هێنانی شەکرۆکەت لەکارخستە.
+تکایە شەکرۆکە کارا بکە و بە ناو و وشەی تێپەڕبوونی بەکارهێنەر بچۆ ژوورەوە.',
+'nocookieslogin' => '{{SITENAME}} بۆ چوونەژوورەوە لە کووکی‌یەکان کەڵک وەرئەگرێت.
+ڕێگەت نەداوە بە کووکی‌یەکان.
+ڕێگەیان پێ بدەو و دیسان تێبکۆشە.',
+'noname' => 'ناوی بەکارهێنەری گۆنجاوت دابین‌ نەکردووه.',
+'loginsuccesstitle' => 'سەرکەوتی بۆ چوونە ژوورەوە',
+'loginsuccess' => "'''ئێستا لە {{SITENAME}} چوویتەوە ژوورەوە وەک \"\$1\".'''",
+'nosuchuser' => 'بەکارھێنەرێک بە ناوی «$1» نیە.
+ناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.
+ڕێنووسەکەت چاولێکەرەوە، یان [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]].',
+'nosuchusershort' => 'بەکارهێنەر بە ناوی "<nowiki>$1</nowiki>" نیە.
+چاو لە ڕێنووسەکە بکە.',
+'nouserspecified' => 'دەبێ ناوی بەکارهێنەر دابین‌ بکەی.',
+'wrongpassword' => 'تێپەڕوشەی ھەڵە.
+تکایە دووبارە تێبکۆشە.',
+'wrongpasswordempty' => 'تێپەڕەوشەی لێدراو بەتاڵبوو.
+تکایە هەوڵ بدەوە.',
+'passwordtooshort' => 'تێپەڕوشەکەت لانی کەم دەبێ {{PLURAL:$1|١ پیت|$1 پیت}} بێت.',
+'password-name-match' => 'تێپەڕوشەکەت ئەبێ جیاواز بێت لە ناوی بەکارهێنەریت.',
+'mailmypassword' => 'تێپەڕوشەیەکی نوێ بنێرە بۆ ئیمەیلەکەم',
+'passwordremindertitle' => 'تێپەڕوشەیەکی نوێی کاتی بۆ {{SITENAME}}',
+'passwordremindertext' => 'کەسێک (لەوانەیە خۆت، لە ناونیشانی ئای‌پی $1) داخوازی تێپەڕوشەیەکی نوێی کردووە بۆ {{SITENAME}} ($4) .تێپەڕوشەیەکی کاتی بۆ بەکارهێنەر «$2» درووست‌کراوە و وەک «$3» دانراوه. ئەگەر داواکاری تۆ بووە، دەبێ هەر ئێستا بڕۆیتە ژوورەوە و تێپەڕوشەیەکی نوێ هەڵبژێریت. تێپەڕوشەی کاتی لە {{PLURAL:$5|ڕۆژدا|$5 ڕۆژدا}} ماوەی‌ بەسەر دەچێت.
+
+ئەگەر کەسێکی دی ئەو داخوازیەی کردە یان وشە نهێنیەکەت بیر هاتەوە و چی‌تر پێویستت بە گۆڕانی نەبوو، ئەم پەیامە بەتاڵ‌کەوە و لە وشە نهێنیە کۆنەکەت کەڵک وەربگرە.',
+'noemail' => 'ھیچ ئەدرەسێکی ئیمەیل تۆمار نەکراوە بۆ بەکارھێنەر « $1 ».',
+'passwordsent' => 'وشەی نهێنی نوێ بۆ ئەدرەسی ئی‌مێڵغ تۆمار کراو بۆ "$1"، ناردرا.
+تکایە دوای وەرگرتنی دووبارە بچۆ ژوورەوە.',
+'blocked-mailpassword' => 'ئادرەسی ئای‌پی تۆ بۆ دەستکاری کردن بەستراوه بۆیە بۆ بەرگری لە بەکارهێنانی نابەجێ ئەنجامی گەڕانەوەی تێپەڕوشە ڕیگە نەدراوە.',
+'eauthentsent' => 'ئی‌مەیلێکی بڕواپێکردن ناردرا بۆ ئەدرەسی ئی‌مەیلی پاڵێوراو. <br />
+پێش ئەوەی ئی‌مەیلی‌تر بنێردرێ بۆ ئەم هەژمارە، بۆ ئەوەی بڕوات پێ‌بکرێ کە ئەو هەژمارە بەڕاستی هین تۆیە، دەبێ ڕێنوماییەکانی ناو ئەو ئی‌مەیلە هەنگاو بە هەنگاو ئەنجام بدەیت.',
+'throttled-mailpassword' => 'بیرهێنەرەوەیەکی وشەی نهێنی پێش ئەمە لە {{PLURAL:$1|کاتژمێر}}ی ڕابردوودا ناردراوە.
+بۆ بەرگری لە بەکارهێنانی خراپ، تاکە یەک بیرهێنەرەوەی وشەی نهێنی هەر {{PLURAL:$1|کاتژمێر}} دەنێردرێت.',
+'mailerror' => 'هەڵە ڕوویدا لە ناردنی ئیمەیل: $1',
+'acct_creation_throttle_hit' => 'بینەرانی ویکی بەکەڵک وەرگرتن لەم ئای‌پی ئەدرەسەی تۆ لە ڕۆژانی ڕابردوودا، دەستیان کردە بە درووست‌کردنی {{PLURAL:$1|هەژمارە}}، کە زۆرینە ڕیگەپێدان لە یەک ماوە‌دایە.
+وەک ئەنجامی ئەو ڕووداوە، ئەو بینەرانی لەم ئای‌پی ئەدرەسە کەڵک وەر دەگرن لەم کاتەدا ناتوانن هەژماری دیکە درووست‌بکەن.',
+'emailauthenticated' => 'ئیمەیلەکەت بە ڕاست ناسرا لە $3ی $2 دا',
+'emailnotauthenticated' => 'ئیمەیلەکەت ھێشتا نەناسراوە.
+ھیچ ئیمەیلێک بۆ ئەم بابەتانەی خوارەوە نانێردرێت.',
+'noemailprefs' => 'بۆ کەوتنە کاری ئەو تایبەتمەندیانە، لە هەڵبژاردەکانت ئەدرەسەکی ئی‌مێڵ دابین بکە.',
+'emailconfirmlink' => 'ئیمەیلەکەت پشت‌ڕاست بکەرەوە',
+'invalidemailaddress' => 'ئەو ئەدرەسی ئی‌مێڵە لەبەر ئەوەی بە شێوازێکی نەناسراوە، پەسند نەکرا.
+تکایە ئەدرەسێک بە شێوازی ناسراو بنووسە یان ئەو خانەیە بەتاڵ بهێڵەوە.',
+'accountcreated' => 'ھەژمار دروست کرا',
+'accountcreatedtext' => 'هەژماری بەکارهێنەر بۆ $1 درووست‌کرا.',
+'createaccount-title' => 'درووست‌کردنی هەژمارە بۆ {{SITENAME}}',
+'createaccount-text' => 'کەسێک هەژمارەیەکی بۆ ئی‌مێڵ ئەدرەسەکی تۆ لەسەر {{SITENAME}} ($4) بەناوی "$2"، بە وشەی نهێنی "$3".
+ئێستا دەبێ بڕۆیتە ژوورەوە و وشەی نهێنی بگۆڕیت.
+
+ئەگەر ئەو هەژمارە بە هەڵە درووست‌کراوە، ئەم برووسکە لە بەرچاو مەگرە.',
+'login-throttled' => 'ژمارەیەکی زۆر هەوڵت داوە بۆ چوونە ژوورەوە.
+تکایە پێش هەوڵی دووبارە، نەختێک بوەستە.',
+'loginlanguagelabel' => 'زمان: $1',
+
+# Password reset dialog
+'resetpass' => 'گۆڕینی تێپەڕوشە',
+'resetpass_announce' => 'بە کۆدی کاتیی ئیمەیل‌کراو ھاتوویتە ژوورەوە.
+بۆ دوایی ھاتنی چوونە ژوورەوە، ئەشێ تێپەڕوشەیەکی نوێ ھەڵبژێری لێرە:',
+'resetpass_text' => '<!-- تێپه‌ڕه‌وشه‌ی هه‌ژماره‌كه‌ سفر بكه‌ره‌وه‌ -->',
+'resetpass_header' => 'گۆڕینی تێپەڕوشەی ھەژمار',
+'oldpassword' => 'تێپەڕوشەی پێشو:',
+'newpassword' => 'تێپەڕوشەی نوێ:',
+'retypenew' => 'تێپەڕوشەی نوێ دوبارە بنووسەوە:',
+'resetpass_submit' => 'تێپەڕوشە رێکخە و بچۆ ژوورەوە',
+'resetpass_success' => 'تێپەروشەکەت بە سەرکەوتوویی گۆڕدرا. ئێستا چوونە ژوورەوەت...',
+'resetpass_forbidden' => 'تێپەڕوشەکە ناگۆڕدرێت',
+'resetpass-no-info' => 'بۆ گەیشتنی راستەوخۆ بەم پەڕە ئەشێ بچیتە ژوورەوە.',
+'resetpass-submit-loggedin' => 'گۆڕینی تێپەڕوشە',
+'resetpass-submit-cancel' => 'ھەڵوەشاندنەوە',
+'resetpass-wrong-oldpass' => 'تێپەڕوشەی ھەنووکەیی یان تێپەڕوشەی کاتی ھەڵەیە.
+وا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.',
+'resetpass-temp-password' => 'تێپەڕوشەی کاتی:',
+
+# Edit page toolbar
+'bold_sample' => 'دەقی ئەستوور',
+'bold_tip' => 'دەقی ئەستوور',
+'italic_sample' => 'دەقی لار',
+'italic_tip' => 'دەقی لار',
+'link_sample' => 'نێوی بەستەر',
+'link_tip' => 'بەستەری ناوخۆ',
+'extlink_sample' => 'http://www.example.com سەردێڕی بەستەر',
+'extlink_tip' => 'بەستەری دەرەکی (لەبیرت بێ نووسینی پێشگری http:// )',
+'headline_sample' => 'دەقی سەردێڕ',
+'headline_tip' => 'سەردێڕی ئاست ۲',
+'math_sample' => 'فۆرموول لێرە بنووسە',
+'math_tip' => 'فۆرموولی بیرکاری (LaTeX)',
+'nowiki_sample' => 'لەگەرە دەقی نەڕازراو تێ‌بخە',
+'nowiki_tip' => 'لەبەرچاو نەگرتنی دارشتنەکانی ویکی',
+'image_sample' => 'نموونە.jpg',
+'image_tip' => 'وێنەی نێو دەق',
+'media_sample' => 'نموونە.ogg',
+'media_tip' => 'لینکی پەڕگە',
+'sig_tip' => 'ئیمزاکەت بە مۆری ڕێکەوتەوە',
+'hr_tip' => 'هێڵی ئاسۆیی (دەگمەن بەکاری بێنە)',
+
+# Edit pages
+'summary' => 'پوختە:',
+'subject' => 'بابەت/سەردێڕ:',
+'minoredit' => 'ئەم گۆڕانکارییە بچووکە',
+'watchthis' => 'چاودێری ئەم پەڕەیە بکە',
+'savearticle' => 'پاشەکەوتکردنی پەرە',
+'preview' => 'پێشبینین',
+'showpreview' => 'پێشبینینی پەڕە',
+'showlivepreview' => 'پێشبینینی ڕاسته‌وخۆ',
+'showdiff' => 'گۆڕانکارییەکان نیشان بدە',
+'anoneditwarning' => "'''وشیار بە:''' نەچوویتەتە ژوورەوە.
+ئەدرەسی ئەکەت لە مێژووی ئەم پەڕە دا تۆمار دەکرێ.",
+'missingsummary' => "'''وە بیر خستنەوە:''' پوختەیەکت نەنووسیوە بۆ چۆنیەتی گۆڕانکارییەکەت.
+ئەگەر جارێکی تر پاشکەوت کردن لێبدەی، بێ پوختە تۆمار دەکرێ.",
+'missingcommenttext' => 'تکایە لە خوارەوە شرۆڤەیەک بنووسە.',
+'missingcommentheader' => "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.<br />
+ئەگەر دیسان پاشەکەوت لێدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت ئەبێ.",
+'summary-preview' => 'پێشبینینی کورتە:',
+'subject-preview' => 'پێشبینینی بابەت\\سەردێڕ :',
+'blockedtitle' => 'به‌کار هینه‌ر له‌کار خراوه',
+'blockedtext' => '\'\'\'ناوی بەکارهێنەری یان ئای‌پی ئەدرەسی تۆ بەربەست‌ کراوە.\'\'\'<br /><br />
+بەربەست لە لایەن $1 کراوە.<br />
+هۆکاری بەربەست کردن \'\'$2\'\'.<br /><br />
+* دەستپێکی بەربەست‌کران: $8<br />
+* کۆتایی هاتنی بەربەست‌کران: $6<br />
+* بابەتی بەربەست: $7<br /><br />
+دەبێ پەیوەندی بکەی بە $1 یان یەکێ دی لە [[{{MediaWiki:Grouppage-sysop}}|بەڕێوبەران]] بۆ وتووێژ سەبارەت بە بەربەست‌کرانەکە.<br /><br />
+لە بیرت بێ تاکوو ئەمەیل ئەدرەسێکی بڕوا پێ‌کراو لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر]] ڕاچاو نەکەی، نابێت لە هەلی "ئی‌مەیل ناردن بۆ ئەم بەکارهێنەرە" کەڵک وەر بگری؛ کەڵک وەرگرتن لەوە بەربەست نەکراوە بۆت.<br /><br />
+ئای‌پی ئەدرەسی ئێستای تۆ $3 و پەێناسەی بەربەست‌کراو #$5.<br />
+تکایە لە هەر پرس و داواکاریەکت‌دا هەموو وردەکاریەکانی سەرەوە بگونجێنە.',
+'autoblockedtext' => 'ئای‌پی ئەدرەسی تۆ بە شێوەی خۆکار بەربەست کراوە چونکە لە لایەن بەکارهێنەرێکی دی کەڵکی لێ وەرگیراوە کە لە لایەن $1 بەربەست کراوە.<br />
+ئەمە هۆکارەکەیەتی:<br /><br />
+:\'\'$2\'\'<br /><br />
+* دەستپێکی بەربەست‌کران: $8<br />
+* کۆتایی هاتنی بەربەست‌کران: $6<br />
+* بابەتی بەربەست: $7<br /><br />
+
+دەبێ پەیوەندی بکەی بە $1 یان یەکێ دی لە [[{{MediaWiki:Grouppage-sysop}}|بەڕێوبەران]] بۆ وتووێژ سەبارەت بە بەربەست‌کرانەکە.<br /><br />
+
+لە بیرت بێ تاکوو ئەمەیل ئەدرەسێکی بڕوا پێ‌کراو لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر]] ڕاچاو نەکەی، نابێت لە هەلی "ئی‌مەیل ناردن بۆ ئەم بەکارهێنەرە" کەڵک وەر بگری؛ کەڵک وەرگرتن لەوە بەربەست نەکراوە بۆت.<br /><br />
+
+ئای‌پی ئەدرەسی ئێستای تۆ $3 و پەێناسەی بەربەست‌کراو #$5.<br />
+تکایە لە هەر پرس و داواکاریەکت‌دا هەموو وردەکاریەکانی سەرەوە بگونجێنە.',
+'blockednoreason' => 'هیچ هۆکارێک نەدراوە',
+'blockedoriginalsource' => "سەرچاوەی '''$1''' لەخوارەوە پیشاندراوە:",
+'blockededitsource' => "دەقی '''دەستکاریەکانی تۆ''' بۆ '''$1''' لە خوارەوە نیشان‌دراوە:",
+'whitelistedittitle' => 'بۆ دەستکاریکردن پێویستە لەژوورەوە بیت',
+'whitelistedittext' => 'بۆ دەستکاری کردنی لاپەڕەکان دەبێ $1.',
+'confirmedittext' => 'پێویستە پێش هەرجۆرە دەستکاریەکی لاپەڕەکان ئەدرەسی ئیمەیلت ڕاچاو کردبێت .<br />
+تکایە لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر]] ئی‌مەیلەکەت دانێ و بڕواپێکراوی بکە.',
+'nosuchsectiontitle' => 'بەش نەدۆزرایەوە',
+'nosuchsectiontext' => 'هەوڵی دەستکاریکردنی بەشێکت داوە کە بوونی نیە.
+لەوانەیە لەو کاتە خەریکی بینینی پەڕە بوویت گۆزرابێتەوە یان سڕابێتەوە.',
+'loginreqtitle' => 'پێویستە بچیه ژور',
+'loginreqlink' => 'چونە‌ژوور',
+'loginreqpagetext' => 'بۆ دیتنی لاپەڕەکانی دیکە دەبێ $1 .',
+'accmailtitle' => 'وشه‌ی نهێنی ناردرا.',
+'accmailtext' => "تێپەڕوشەیەکی هەرەمەکی درووست‌کراو بۆ [[User talk:$1|$1]] ناردرا بۆ $2 .
+
+کاتێ چوویتە ‌ژوورەوە، لە ''[[Special:ChangePassword|گۆڕینی تێپەڕوشە]]'' دەتوانی وشەی تێپەڕبوون بۆ ئەم هەژمارە نوێیە بگۆڕی.",
+'newarticle' => '(نوێ)',
+'newarticletext' => "بە دوای بەستەری پەڕەیەک کەوتووی کە ھێشتا دروست نەکراوە.
+بۆ دروست کردنی پەڕەکە، لە چوارچێوەکەی خوارەوە دەست بکە بە تایپ کردن. (بۆ زانیاری زورتر
+[[{{MediaWiki:Helppage}}|یارمەتی]] ببینە).
+ئەگەر بە ھەڵەوە ھاتویتە ئێرە، لە سەر دوگمەی '''back'''ی وێبگەڕەکەت کلیک بکە.",
+'anontalkpagetext' => "----''ئەمە لاپەڕەی وتووێژە بۆ بەکارهێنەرێکی نەناسراوە کە هێشتا هەژمارەی درووست‌نەکردووه یان کەڵکی‌ لێ وەرناگرێ .
+لەبەر ئەوە مەجبوورین ئای‌پی ئەدرەسەکی ژمارەیی بۆ ناساندنی بەکار بێنین.
+ئای‌پی ئەدرەسی وا لەوانەیه لە لایەن چەندین بەکارهێنەروە بەکاربێت.
+ئەگەر تۆ بەکارهێنەرێکی نەناسراوی و هەست ئەکەی ئەم لێدوانە پەیوەندی بە تۆوە نیە تکایە [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]] یان [[Special:UserLogin|بچۆ ژوورەوە]] لەبەر ئەوەی لەداهاتوودا دەگەڵ بەکارهێنەرانی‌ نەناسراوی دی تێکەڵ نەکرێیت. ''",
+'noarticletext' => 'ھەنووکە لەم پەڕەدا ھیچ دەقێک نیە.
+دەتوانی بۆ ئەم ناوە لە [[Special:Search/{{PAGENAME}}|پەڕەکانی تر دا بگەڕێی]] ،<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگەکاندا بگەڕی ],
+یان [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەم پەڕە دەستکاری بکەیت. ]</span>.',
+'userpage-userdoesnotexist' => 'هەژماری بەکارهێنەری "$1" تۆمار نەکراوە.<br />
+گەر دەتەوێ ئەم لاپەڕە درووست‌کەی یان دەستکاری بکەی تکایە تاقی‌بکەوە .',
+'clearyourcache' => "'''ئاگاداری - دوای پەشەکەوت‌کردن، بۆ بینینی گۆڕانکارییەکان دەبێ کاشی وێبگەڕەکەت دەور لێ‌دەیتەوە.'''<br />
+'''Mozilla / Firefox / Safari:'''کاتێ لەسەر ''Reload'' کرتە دەکەی، دەست لەسەر''Shift'' ڕاگرە، یان ''Ctrl-F5'' لێدە یا ''Ctrl-R''. (لە ماکینتاش ''Command-R'' ئەبێ لێدەی)<br />
+'''Konqueror: ''' لەسەر ''Reload'' کرتە بکە یا ''F5'' لێدە ؛<br />
+'''Opera:''' کاشەکەت لە ''Tools → Preferences'' بسڕەوە ؛<br />
+'''Internet Explorer:''' کاتێ ''Refresh'' لێ‌ئەدەی ''Ctrl'' ڕاگرە، یان ''Ctrl-F5'' لێدە .",
+'usercssyoucanpreview' => "'''سەرچەشن:''' «{{int:showpreview}}» بەکاربێنە بۆ تاقی‌کردنەوەی CSS نوێ‌کەت، پێش پاشەکەوت‌کردن.",
+'userjsyoucanpreview' => "'''سەرچەشن:''' «{{int:showpreview}}» بەکاربێنە بۆ تاقی‌کردنەوەی جاڤاسکریپتە نوێ‌کەت، پێش پاشەکەوت‌کردن.",
+'usercsspreview' => "'''له‌یادت بێ که‌ ئێسته‌ ته‌نها پێشبینینی CSS به‌کارهێنه‌ریه‌که‌ت ده‌که‌ی.'''
+'''هێشتا پاشه‌که‌وت نه‌بووه !'''",
+'userjspreview' => "'''لەیادت بێ کە ئێستە تەنها پێشبینین\\تاقی‌کردنەوەی جاڤاسکریپتی بەکارهێنەریەکەت دەکەی.'''
+'''هێشتا پاشەکەوت نەبووه !'''",
+'userinvalidcssjstitle' => "'''ئاگادارکردنەوە:''' پێست نیە بۆ \"\$1\".
+لەیادت بێ کە لاپەڕەکانی‌ .css و .js لە بابەت بە پیتی بچووک کەڵک وەر ئەگرن. وەک {{ns:user}}:Foo/monobook.css نە وەک {{ns:user}}:Foo/Monobook.css .",
+'updated' => '(نوێ‌کراوە)',
+'note' => "'''تێبینی:'''",
+'previewnote' => "'''لە بیرت بێت کە ئەمە تەنھا پێشبینینە.'''
+گۆڕانکارییەکانت ھێشتا پاشەکەوت نەکراون!",
+'previewconflict' => 'ئەم پێشبینینە بە تۆ نیشان ئەدات ئەو دەقەی لە شوێنی دەستکاری سەرەوە داتناوە چۆن بەرچاو ئەکەوێت ئەگەر پاشەکەوتی بکەیت.',
+'session_fail_preview' => "'''ببوورە! لەبەر ون‌بوونی هێندێ دراوە ناتوانین دەستکاریەکەت چارەسەر کەین.'''<br />
+تکایە دیسان تاقی‌ بکەوە.<br />
+ئەگەر هێشتا کار ناکات بکۆشە [[Special:UserLogout|بچیتە دەرەوە]] و بگەڕێیتەوە ژوورەوە.",
+'session_fail_preview_html' => "'''ببوورە! لەبەر ون‌بوونی هێندێ دراوە ناتوانین دەستکاریەکەت چارەسەر کەین.'''<br /><br />
+''لەبەر ئەوەی {{SITENAME}} HTMLـی چاک توانا نەدراوە، پێشبینین بۆ بەرگری لە هێرشەکانی جاڤاسکریپتی داشاردراوە.''<br /><br />
+'''ئەگەر ئەمە هەوڵێکی ڕەوا بۆ دەستکاری‌کردنە، تکایە دیسان تاقی‌ بکەوە.'''<br />
+ئەگەر هێشتا کار ناکات بکۆشە [[Special:UserLogout|بچیتە دەرەوە]] و بگەڕێیتەوە ژوورەوە.",
+'token_suffix_mismatch' => "'''دەستکاریەکەت پەسەند نەکرا لەبەر ئەوەی ڕاژەخواز یان وێبگەڕەکەت نووسەکانی خاڵبەندی لەیەک پچڕاندوە.'''<br />
+دەستکاریەکەت بۆ بەرگری لە تێکەڵ‌بوونی دەقی لاپەڕەکە وەر نەگیرا.<br />
+ئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.",
+'editing' => 'دەستکاریکردنی $1',
+'editingsection' => 'گۆڕاندنی: $1 (بەش)',
+'editingcomment' => 'گۆڕاندنی $1 (بەشی نوێ)',
+'editconflict' => 'دەستکاری کێشە : $1',
+'explainconflict' => "لەو ماوەی تۆ خەریک دەستکاری‌کردنی ئەم لاپەڕە بووی‌، کەسێکی‌تر گۆڕانکاری‌ تێدا کردووە.<br />
+بەشی سەرەوەی دەق، شێوازی ئێستای لاپەڕەکە لە خۆ ئەگرێت.<br />
+گۆڕانکاریەکانی تۆش لە بەشی خوارەوەی دەق نیشان‌دراوە.<br />
+دەبێ گۆڕانکاریەکانی خۆت لەگەڵ ئێستەی لاپەڕەکەدا یەک‌بخەی.<br />
+کاتێ \"پاشەکەوتی لاپەڕە\" لێدەی، '''تەنها''' ئەو دەقەی بەشی سەرەوە پاشەکەوت دەبێت.",
+'yourtext' => 'نوسراوی تۆ',
+'storedversion' => 'پێداچوونەوەی پاشەکەوت‌کراو',
+'nonunicodebrowser' => "'''ئاگاداری: وێبگەڕەکەت لە یوونی‌کۆد پاڵپشتی ناکات .'''<br />
+پرۆسەی چارەسەرکردن لە کاردایە بۆ ئەوەی ڕیگەت پێ بدا بە پاراوی دەستکاری لاپەڕەکان بکەیت: ئەو پیتانەی وا ASCII نین لە چوارچێوەی دەستکاری‌کردن‌دا وەک کۆدی ژمارە‌شازدەیی(hexadecimal) نیشان ئەدرێن.",
+'editingold' => "'''ئاگاداری: تۆ خەریکی دەستکاری‌ پێداچوونەوەیەکی کات‌بەسەرچووی ئەم لاپەڕەی.'''<br />
+ئەگەر پاشەکەوتی بکەیت، هەموو گۆڕانکاریەکانی پێش ئەم پێداچوونەوە لەدەست ئەڕوا.",
+'yourdiff' => 'جیاوازیەکان',
+'copyrightwarning' => "تکایە ئاگادار بن کە ھەموو بەشدارییەک بۆ {{SITENAME}} وا فەرز ئەکرێت کە لە ژێر «$2» بڵاو دەبێتەوە (بۆ ئاگاداری زۆرتر $1 سەیر کە). ئەگەر ناتەوێ نوسراوەکەت بێ‌ڕەحمانە دەستکاری بکرێت و بە دڵخواز دیسان بڵاو ببێتەوە، لێرە پێشکەشی مەکە. ھەروەھا بەڵین ئەدەی کە خۆت ئەمەت نووسیوە، یان لە سەرچاوەیەکی بە دەسەڵاتی گشتی ''(public domain)'' یان سەرچاوەیەکی ھاوتا لەبەرت‌گرتوەتەو.
+'''«بەرھەمێک کە مافی لەبەرگرتنەوەی پارێزراوە، بێ ئیجازە بڵاو مەکەرەوە.»'''",
+'copyrightwarning2' => "لە یادتان بێت کە هەموو بەشداریەکان لە {{SITENAME}} لەوانەیە لەلایەن بەشداربووەکانی‌تر دەستکاری بکرێن، بگۆڕدرێن یا بسڕێنەوە.<br />
+ئەگەر ناتەوێ نووسراوەکانت بێ‌بەزەیی دەستکاری بکرێن، هەر مەینێرە بۆ ئێرە.<br />
+هەروا تۆ بڕیارمان پێ‌ئەدوی کە ئەمە خۆت نووسیوتە یان لە شوێنێکی گشتی یا سەرچاوەیەکی ئازاد وەک ئەو کۆپی‌ هەڵت‌ گرتووە (بۆ وردەکاریەکان ئەمە ببینە $1) .<br />
+'''بێ وەرگرتنی یارمەتی‌، کارە ماف‌پارێزراوەکان مەنێرە !'''",
+'longpagewarning' => "'''ئاگاداری:''' درێژاییی ئەم پەڕە $1 کیلوبایتە؛
+بڕێ لە وێبگەڕەکان لەگەڵ دەستکاری کردنی ئەو پەڕانە کە نزیک یان درێژتر لە ٣٢ کیلوبایتن کێشەیان ھەیە.
+تکایە لەت کردنی ئەم پەڕە بۆ چەند بەشی چکۆلەترتان لەبەرچاو بێت.",
+'longpageerror' => "'''هەڵە: ئەو دەقی ناردووتە $1 کیلوبایت درێژەی هەیە، کە لە زۆرینەی $2 کیلۆبایت درێژترە.'''<br />
+پاشەکەوت ناکرێت.",
+'readonlywarning' => "'''ئاگاداری: بنکەدراوە بۆ چاکردنەوە داخراوە، بۆیە ئێستا ناتوانی دەستکاریەکانت پاشەکەوت بکەیت.'''<br />
+باشتر وایە دەقەکە cut و paste بکەیتە ناو پەڕگەیەکی دەق و پاشەکەوتی بکەی بۆ دوایی.<br /><br />
+ئەو بەڕێوبەرەی کە دایخستوە، ئەم هۆکارەی بەردەست خستووە: $1",
+'protectedpagewarning' => "'''ئاگاداری: ئەم پەڕە داخراوە بۆ ئەوی تەنیا ئەو بەکارھێنەرانە کە مافی بەڕێوەبەرایەتییان ھەیە بتوانن دەستکاریی بکەن.'''
+بۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:",
+'semiprotectedpagewarning' => "'''ئاگاداری: ئەم پەڕە داخراوە بۆ ئەوی تەنھا بەکارھێنەرە تۆمارکراوەکان بتوانن دەستکاریی بکەن.'''
+بۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:",
+'cascadeprotectedwarning' => "'''ئاگاداری:''' ئەم لاپەڕە داخراوە بۆیە تەنها ئەو کەسانەی مافی بەڕێوبەرایەتی‌یان هەیە ئەتوانن دەستکاری بکەن، چۆنکا ئەمە {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:",
+'titleprotectedwarning' => "'''ئاگاداری: ئەم پەڕە داخراوە، بۆئەوەی بۆ درووست‌کردنی [[Special:ListGroupRights|مافە تایبەتەکانت]] پێویستن.'''
+بۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:",
+'templatesused' => 'ئەو {{PLURAL:$1|قاڵبە کە لەم پەڕەیەدا بە کارھێنراوە|قاڵبانە کە لەم پەڕەیەدا بە کارھێنراون}}:',
+'templatesusedpreview' => 'ئەو {{PLURAL:$1|قاڵبە کە لەم پێشبینینەدا بە کارھێنراوە|قاڵبانە کە لەم پێشبینینەدا بە کارھێنراون}}:',
+'templatesusedsection' => 'ئەو {{PLURAL:$1|داڕێژە|داڕێژانە}} کە لەم بەشەدا بە کارھێنراون:',
+'template-protected' => '(پارێزراو)',
+'template-semiprotected' => '(نیوەپارێزراو)',
+'hiddencategories' => 'ئەم پەڕە ئەندامێکی {{PLURAL:$1|١ ھاوپۆلی شاراوەیە|$1 ھاوپۆلی شاراوەیە}}:',
+'nocreatetitle' => 'درووست‌کردنی لاپەڕە سنووردار کراوە',
+'nocreatetext' => '{{SITENAME}} توانای درووست‌کردنی لاپەڕە نوێکانی داخستووە.<br />
+ئەتوانی بگەڕێتەوە دواوە و یەکێک لەو لاپەڕانەی وا هەن دەستکاری بکەیت ، یان [[Special:UserLogin|بچۆ ژوورەوە یان هەژمارێک درووست‌بکە]]',
+'nocreate-loggedin' => 'ئیجازەی دروست کردنی پەڕەی نوێت نیە.',
+'sectioneditnotsupported-title' => 'بەش دەستکاریکردنی پشتیوانی ناکرێ',
+'permissionserrors' => 'ھەڵەی ئیجازەکان',
+'permissionserrorstext' => 'مافی ئەنجامی ئەوەت نیە لەبەر ئەم {{PLURAL:$1|هۆکار|هۆکارانە}} :',
+'permissionserrorstext-withaction' => 'دەسەڵاتت نییە بۆ $2 لەبەر ئەم {{PLURAL:$1|هۆکارە|هۆکارانە}}ی خوارەوە:',
+'recreate-moveddeleted-warn' => "'''ئاگاداری: خەریکی دووبارە لاپەڕەیەک درووست‌ ئەکەیته‌وه کە لە پێشدا سڕدراوەتەوە. '''<br /><br />
+دەبێ ئاگات لەوە بێت کە دەستکاری‌کردنی ئەم لاپەڕە قازانجی هەیە یا نا.<br />
+لۆگی سڕینەوە و جێبەجێ کردنی ئەم لاپەڕە بۆ ئاسان‌کاری لێرەدا هاتووە:",
+'moveddeleted-notice' => 'ئەم پەڕەیە سڕاوەتەوە.
+لۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە خوارەوە دابینکراوە.',
+'log-fulllog' => 'دیتنی لۆگی تەواو',
+'edit-hook-aborted' => 'دەستکاری لە لایەن قولاپەوە هەڵوەشێندرایەوە.<br />
+هۆکاری ئەوەی بەردەست نەخستووە.',
+'edit-gone-missing' => 'توانای نوێ‌کردنەوەی لاپەڕەکە نیە.<br />
+لەوە دەچی سڕدرابێتەوه.‌',
+'edit-conflict' => 'کێشەی دەستکاری.',
+'edit-no-change' => 'دەستکاریەکەت بەرچاو نەخرا، لەبەر ئەوەی هیچ گۆڕانکارییەکت لەسەر دەقەکە نەکردووە.',
+'edit-already-exists' => 'توانای درووست‌کردنی لاپەڕەی نوێ نیە.<br />
+ئەوە لەپێش‌دا هەبوو.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''ئاگاداری:''' ئەم لاپەڕە ژمارەیەکی زۆر بانگ‌کەری فەنکشێنی لێک‌کەرەوەی لەخۆ گرتوو.<br /><br />
+ئەوە دەبێ کەمتر بێت لە $2 {{PLURAL:$2|بانگ‌کەردن|بانگ‌کەردن}} کە ئێستا {{PLURAL:$1|بانگ‌کردنی|بانگ‌کردنی}} تێدایە.",
+'expensive-parserfunction-category' => 'ئەو لاپەڕانەی ژمارەیەکی زۆر بانگ‌کەری فەنکشێنی لێک‌کەرەوەیان لەخۆ گرتووە.',
+'post-expand-template-inclusion-warning' => "'''ئاگاداری:''' قەبارەی داڕێژەکە زۆر گەورەیە.<br />
+لەوانەیە هێندێ لە داڕێژەکان لەخۆ نەگرێت.",
+'post-expand-template-inclusion-category' => 'ئەو لاپەڕانەی وا داڕێژە تیێدا قەبارەی تێپەڕیوە',
+'post-expand-template-argument-warning' => "'''ئاگاداری:''' ئەم لاپەڕە لانیکەم یەک بەڵگەی داڕێژە لە خۆ گرتوو کە قەبارەی کردنەوەی زۆر گەورەیە.<br />
+ئەم بەڵگە بەکار نەخراوە.",
+'post-expand-template-argument-category' => 'ئەو لاپەڕانەی بەڵگەی داڕێژەی بەکار نەخراوی لەخۆ گرتووە',
+'parser-template-loop-warning' => 'ئەڵقەی داڕێژە دۆزرایەوە: [[$1]]',
+'parser-template-recursion-depth-warning' => 'سنووری قووڵی گەڕانەوەی داڕێژە تێپەڕیوە ($1)',
+
+# "Undo" feature
+'undo-success' => 'دەستکاریەکە ئەتوانێ ئەنجام‌نەدراو بێت.<br />
+تکایە بۆ ئەوەی ئەرخەیان بیت ئەمەیە ئەوەی‌ دەتویست بیکەی چاو لەو هەڵسەنگاندنەی خوارەوە بکە و دواتر بۆ تەواوکردنی ئەنجام‌نەدراو، گۆڕانکارییەکان پاشەکەوت بکە.',
+'undo-failure' => 'لەبەر کێشەی دەست‌تێ‌وەردان، ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەیت.',
+'undo-norev' => 'ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەی لەبەر ئەوەی بوونی نیە یا سڕدراوەتەوە.',
+'undo-summary' => 'پووچەڵ‌کرنەوەی پێداچوونەوەی $1 لەلایەن [[Special:Contributions/$2|$2]] ([[User talk:$2|وتووێژ]])',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'ناتوانرێت هەژمار دروست بکرێت',
+'cantcreateaccount-text' => 'درووست‌کردنی هەژمارە بۆ ناونیشانی ئای‌پی (\'\'\'$1\'\'\') لە لایەن [[User:$3|$3]] داخراوە.<br /><br />
+$3 هۆکاری "$2" خستوەتەڕوو',
+
+# History pages
+'viewpagelogs' => 'لۆگەکانی ئەم پەڕەیە ببینە',
+'nohistory' => 'هیچ مێژوویەکی دەستکاری نییە بۆ ئەم پەڕەیە.',
+'currentrev' => 'پێداچوونەوی ئێستا',
+'currentrev-asof' => 'بینینەوی ھەنووکە تا $1',
+'revisionasof' => 'وەک بینینەوەی $1',
+'revision-info' => 'پێداچوونەوی $1 لە لایەن $2',
+'previousrevision' => '→پیاچوونەوەی کۆنتر',
+'nextrevision' => 'پیاچوونەوەی نوێتر←',
+'currentrevisionlink' => 'پیاچوونەوەی ئێستا',
+'cur' => 'ئێستا',
+'next' => 'پاش',
+'last' => 'پێشوو',
+'page_first' => 'یەکەمین',
+'page_last' => 'دوایین',
+'histlegend' => "وەشانەکان بۆ ھەڵسەنگاندن دیاری بکە و ئەم دوگمەی خوارەوە لێبدە. <br />
+ڕێنمایی: ('''ئێستا''') = جیاوازی لەگەڵ وەشانی ئێستا، ('''پێشوو''') =جیاوازی لەگەڵ وەشانی پێشوو، '''ب''' = گۆڕانکاریی بچووک.",
+'history-fieldset-title' => 'گەشتی مێژوو',
+'histfirst' => 'کۆنترین',
+'histlast' => 'نوێترین',
+'historysize' => '({{PLURAL:$1|1 بایت|$1 بایت}})',
+'historyempty' => '(پووچ)',
+
+# Revision feed
+'history-feed-title' => 'مێژووی پیاچوونەوە',
+'history-feed-description' => 'مێژووی پیاچوونەوە بۆ ئەم پەڕە لە ویکییەکە',
+'history-feed-item-nocomment' => '$1 لە $2',
+'history-feed-empty' => 'لاپەڕەی داخوازی‌کراو بوونی نیە.<br />
+لەوانەیە لەسەر ویکی سڕدرابێتەوە یان ناوی گۆڕدرابێت.<br />
+بۆ لاپەڕەی وەک ئەوە هەوڵی [[Special:Search|گەڕان لەسەر ویکی]] بدە.',
+
+# Revision deletion
+'rev-deleted-comment' => '(بۆچوون سڕایەوە)',
+'rev-deleted-user' => '(ناوی بەکارهێنەر سڕایەوە)',
+'rev-deleted-event' => '(لۆگی کردەوە سڕایەوە)',
+'rev-deleted-text-permission' => "پێداچوونەوەی ئەم لاپەڕە '''سڕدراوەتەوە'''.<br />
+لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]",
+'rev-deleted-text-unhide' => "پێداچوونەوەی ئەم لاپەڕە '''سڕدراوەتەوە'''.<br />
+لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]<br />
+وەک بەڕێوبەر هێشتا دەتوانی [$1 ئەم پێداچوونەوە] ببینی، گەر دەتەوێ پێشتر بڕۆی.",
+'rev-suppressed-text-unhide' => "پێداچوونەوی ئەم لاپەڕە '''بەرگری''' لێ‌کراوە.
+لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].
+وەک بەڕێوبەر هێشتا دەتوانی [$1 ئەم پێداچوونەوە] ببینی، گەر دەتەوێ پێشتر بڕۆی.",
+'rev-deleted-text-view' => "پێداچوونەوەی ئەم لاپەڕە '''سڕدراوەتەوە'''.<br />
+وەک بەڕێوبەر هێشتا دەتوانی چاوی لێ‌بکەی؛ لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].",
+'rev-suppressed-text-view' => "پێداچوونەوی ئەم لاپەڕە '''بەرگری''' لێ‌کراوە.
+وەک بەڕێوبەر دەتوانی بیبینی؛ لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].",
+'rev-deleted-no-diff' => "ناتوانی ئەم جیاوازیە ببینی لەبەر ئەوەی یەکێک لە پێداچوونەوەکان '''سڕدراوەتەوه'''‌.<br />
+لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].",
+'rev-deleted-unhide-diff' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازیە '''سڕدراوەتەوه'''.<br />
+لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].<br />
+وەک بەڕێوبەر هێشتا دەتوانی [$1 ئەم جیاوزیە‌] ببینی، گەر دەتەوێ پێشتر بڕۆی.",
+'rev-delundel' => 'پیشاندان/شاردنەوە',
+'rev-showdeleted' => 'نیشان بدە',
+'revisiondelete' => 'سڕینەوە\\هاوردنەوەی پێداچوونەوەکان',
+'revdelete-nooldid-title' => 'مەبەستی پێداچوونەوەی نادیار',
+'revdelete-nooldid-text' => 'پێداچوەنەوەی مەبەستت ڕاچاو نەکردە بۆ ئەنجامی ئەم فەنکشێنە یان ئەو پێداچوونەوەی ڕاچاوت کردە بوونی نیە، یا خەریکی هەوڵی داشاردنی پێداچوونەوهی ئێستا‌ ئەدەی.',
+'revdelete-nologtype-title' => 'جۆری لۆگ ڕاچاو نەکراوە',
+'revdelete-nologtype-text' => 'جۆری لۆگت ڕاچاو نەکردە بۆ خستنە‌کاری ئەم کردەوە.',
+'revdelete-nologid-title' => 'پێ‌دراوەی لۆگی نەناسراو',
+'revdelete-nologid-text' => 'بۆ ئەنجامی ئەم فەنکشێنە یا لۆگی ڕووداوی مەبەستت ڕاچاو نەکردووە یان ئەو پێ‌دراوەی ڕاچاوت کردە بوونی نیە.',
+'revdelete-no-file' => 'ئەو پەڕگەی ڕاچاوت کردووە بوونی نیە.',
+'revdelete-show-file-confirm' => 'ئایا دڵنیایت دەتەوێ پێداچوونەوەی سڕاوەی پەڕگەی "<nowiki>$1</nowiki>" لە $2، لە $3دا ببیینی؟',
+'revdelete-show-file-submit' => 'بەڵێ',
+'revdelete-selected' => "'''{{PLURAL:$2|پێداچوونەوەی هەڵبژێراوی|پێداچوونەوەکانی هەڵبژێراوی}} [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|لۆگی ڕووداوەی هەڵبژێراو|لۆگی ڕووداوە هەڵبژێراوەکان}}:'''",
+'revdelete-text' => "'''پێداچوون و ڕووداوە سڕاوەکان هێشتا لە لاپەڕەی مێژوو و لۆگەکان دەست دەکەون،ن بەڵام ناوەڕۆکی ھێندێکیان بەرچاوی گشتیی ناکەون.'''<br />
+بەڕێوبەرانی دیکە لە {{SITENAME}}دا، هێشتا دەتوانن دەستکارییە شاراوەکان ببینن و لە ڕێگەی ھەر ئەم فۆڕمەوە بیانگەڕێننەوە، مەگەر ئەوەی بەربەستی دیکە داندرابێت.",
+'revdelete-confirm' => 'تکایە بەڵێن بدە کە دەتەوێ ئەوە بکەی و لە ئەنجامەکانی ئەوە ئاگاداریت و بە پێی [[{{MediaWiki:Policy-url}}|سیاسەتنامە]] ئەنجامی ئەدەی.',
+'revdelete-suppress-text' => "بەرگری دەبێ '''تەنها''' بۆ ئەم بابەتانە بەکاربهێندرێت:<br />
+* سووکایەتیکردن بە کەسایەتییەک<br />
+* بڵاوکردنەوەی زانیاریی تاکەکەسی نەگونجاو<br />
+*: '' ناونیشانی ماڵ یا ژمارە تەلەفۆن و وەک ئەمانە.''<br />",
+'revdelete-legend' => 'دانانی بەربەستەکانی بەرچاوکەوتن',
+'revdelete-hide-text' => 'داشاردنی دەقی پێداچوونەوە',
+'revdelete-hide-image' => 'ناوەڕۆکی پەڕگە بشارەوە',
+'revdelete-hide-name' => 'داشاردنی مەبەست و کردەوە',
+'revdelete-hide-comment' => 'داشاردنی پوختەی دەستکاری',
+'revdelete-hide-user' => 'شاردنەوەی ناوی بەکارهێنەری\\ئای-‌پی دەستکاریکەر',
+'revdelete-hide-restricted' => 'بەرگری دراوە لە بەڕێوبەران هەر وەک ئەوانی دیکە',
+'revdelete-radio-same' => '(مەیگۆڕە)',
+'revdelete-radio-set' => 'بەڵێ',
+'revdelete-radio-unset' => 'نا',
+'revdelete-suppress' => 'بەرگری دراوە لە بەڕێوبەران هەر وەک ئەوانی دیکە',
+'revdelete-unsuppress' => 'لابردنی بەربەستەکان لە سەر پێداچوونەوە گەڕێندراوەکان',
+'revdelete-log' => 'هۆکار:',
+'revdelete-submit' => 'خستنەکار بۆ سەر پێداچوونەوە {{PLURAL:$1|ھەڵبژێردراوەکە|ھەڵبژێردراوەکان}}',
+'revdelete-logentry' => 'گۆڕانی بەرچاوکەوتنی دەستکارییەکی [[$1]]',
+'logdelete-logentry' => 'بیندرانی ڕووداوە‌ گۆڕاوەکەی [[$1]]',
+'revdelete-success' => "'''چۆنیەتی بیندرانی پێداچوونەوە بە سەرکەوتوویی نوێکراوە.'''",
+'revdelete-failure' => "'''ناکرێ دەرکەوتنی پێداچوونەوە نوێبکرێتەوە:'''
+$1",
+'logdelete-success' => "'''بیندرانی لۆگ‌ بە سەرکەوتوویی داندرا.'''",
+'logdelete-failure' => "'''بیندرانی لۆگ داناندرێت:'''
+$1",
+'revdel-restore' => 'چۆنیەتی دەرکەوتن بگۆڕە',
+'pagehist' => 'مێژووی پەڕە',
+'deletedhist' => 'مێژوو بسڕەوە',
+'revdelete-content' => 'ناوەڕۆک',
+'revdelete-summary' => 'پوختەی دەستکاری',
+'revdelete-uname' => 'ناوی بەکارهێنەر',
+'revdelete-restricted' => 'ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران',
+'revdelete-unrestricted' => 'ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران',
+'revdelete-hid' => '$1ـی داشارد',
+'revdelete-unhid' => '$1ـی ئاشکرا کرد',
+'revdelete-log-message' => '$1 بۆ {{PLURAL:$2|پێداچوونەوەی|پێداچوونەوەکانی}} $2',
+'logdelete-log-message' => '$1 بۆ {{PLURAL:$2|ڕووداوی|ڕووداوەکانی}} $2',
+'revdelete-hide-current' => 'هەڵە لە شاردنەوەی بابەتی ڕیکەوتی $2، کات $1: ئەمە پێداچوونەوی ئێستا لەکاردایە.
+ناکرێ داشاردرێت.',
+'revdelete-show-no-access' => 'هەڵە لە نیشان‌دانی بابەتی ڕیکەوتی $2، کات $1: ئەم بابەتە وەک "بەرگیراو"‌. نیشان‌ کراوە.
+دەسەڵاتی دەست‌پێ‌گەیشتنی ئەوەت نیە.',
+'revdelete-modify-no-access' => 'هەڵە لە چاکسازی بابەتی ڕیکەوتی $2، کات $1: ئەم بابەتە وەک "بەرگیراو"‌. نیشان‌ کراوە.
+دەسەڵاتی دەست‌پێ‌گەیشتنی ئەوەت نیە.',
+'revdelete-modify-missing' => 'هەڵە لە چاکسازی بابەت خاوەن پێناسەی $1: لە بنکەدراو ون بووە !',
+'revdelete-no-change' => "'''ئاگاداری:''' بابەتی ڕێکەوتی $2، کات $1، لە پێش‌دا خاوەن داخوازی هەلبژاردەکانی بیندرانە.",
+'revdelete-concurrent-change' => 'هەڵە لە چاکسازی بابەتی ڕێکەوتی $2 کات $1: لەوانەیە کاتێ تۆ هەوڵی چاکسازیت ئەدا، کەسێکی‌تر دۆخەکەی گۆڕابێت.
+تکایە چاو لە لۆگەکەی بکە.',
+'revdelete-only-restricted' => 'ناتوانی لە دیتنی بابەتەکان لە لایەن بەڕێوبەرانەوە بەرگری بکەیت، مەگەر یەکێک‌تر لە هەڵبژاردەکانی بەرگری هەڵبژێریت.',
+'revdelete-edit-reasonlist' => 'دەستکاری هۆکارەکانی سڕینەوە',
+
+# Suppression log
+'suppressionlog' => 'لۆگی بەرگری‌کردن',
+'suppressionlogtext' => 'لە خوارەوە لیستێک لە سڕاوە و بەرگری‌کراوانەی وا ناوەڕۆکیان لە چاو بەڕێوبەران داشاردراوە دەبینیت.
+بۆ دیتنی ئەو بەرگریانەی ئێستا لە کاردایە چاو لە [[Special:IPBlockList|لیستی بەرگری ئای‌پی]] بکە.',
+
+# History merging
+'mergehistory' => 'یەک‌خستنی مێژووەکانی لاپەڕە',
+'mergehistory-header' => 'ئەم لاپەڕە دەسەڵاتی ئەوەت پێ‌دەدا پێداچوونەوەکانی مێژووی لاپەڕەیەکی مەبەستت بخەیتە سەر لاپەڕەیەکی نوێ.
+ئەرخەیان ببە ئەم گۆڕان‌کاریە لاپەڕە مێژوویەکە بەردەوام دەهێڵێتەوە.',
+'mergehistory-box' => 'سەر یەک‌خستنی پێداچوونەوەکانی دوو لاپەڕە:',
+'mergehistory-from' => 'سەرچاوەی پەڕە',
+'mergehistory-into' => 'پەڕەی مەبەست:',
+'mergehistory-list' => 'ئەو مێژووی لاپەڕانە وا توانای سەر یەک‌خستنیان هەیە',
+'mergehistory-merge' => 'ئەم پێداچوونەوانەی [[:$1]] دەتواندرێ بخرێتە سەر [[:$2]].
+دەتوانی لە ستوونی دوکمە ڕادیۆیەکە بۆ تەنها خستنە‌سەر پێداچوونەوەکانی ڕێکەوتێکی تایبەت یا پێش ئەوە کەڵک وەر بگریت.
+لەیادت بێت کە بەکارهێنانی بەستەرەکانی ڕێن‌نیشاندەر، ستوونەکە وەک ئەوەڵ لێ‌دەکاتەوە.',
+'mergehistory-go' => 'نیشان‌دانی ئەو دەستکاریانە وا توانای خستنەسەر یەکیان هەیە',
+'mergehistory-submit' => 'خستنەسەریەکی پێداچوونەوەکان',
+'mergehistory-empty' => 'ناتواندرێت هیچ یەک لە پێداچوونەوەکان بخرێتە ‌سەریەک.',
+'mergehistory-success' => '$3 {{PLURAL:$3|پێداچوونەوەی|پێداچوونەوەی}} [[:$1]] بە سەرکەوتوویەوە خرایە سەر [[:$2]].',
+'mergehistory-fail' => 'سەریەک خستنی مێژوو پێک‌نایەت، تکایە دیسان دیاریکەرەکانی لاپەڕە و کات چاو لێ بکەوە.',
+'mergehistory-no-source' => 'لاپەڕەی سەرچاوەی $1 بوونی نیە.',
+'mergehistory-no-destination' => 'لاپەڕەی مەبەستی $1 بوونی نیە.',
+'mergehistory-invalid-source' => 'لاپەڕەی سەرچاوە دەبێ سەردێڕێکی گونجاو بێت.',
+'mergehistory-invalid-destination' => 'لاپەڕەی مەبەست دەبێ سەردێڕێکی گونجاو بێت.',
+'mergehistory-autocomment' => '[[:$1]] خرایە سەر [[:$2]]',
+'mergehistory-comment' => '[[:$1]] خرایە سەر [[:$2]]: $3',
+'mergehistory-same-destination' => 'لاپەڕەی سەرچاوە و مەبەست نابێ یەکێک بن.',
+'mergehistory-reason' => 'هۆکار:',
+
+# Merge log
+'mergelog' => 'لۆگی یەککردن',
+'pagemerge-logentry' => '[[$1]] خرایە سەر [[$2]] (پێداچوونەوەکان تا $3)',
+'revertmerge' => 'لەیەک جیاکردنەوە',
+'mergelogpagetext' => 'لە خوارەوە دوایین مێژووی‌لاپەڕە خستنە سەر لاپەڕەیەکی‌تر، دەبینی.',
+
+# Diffs
+'history-title' => 'مێژووی پیاچوونەوەکانی "$1"',
+'difference' => '(جیاوازی نێوان پێداچوونەوەکان)',
+'lineno' => 'ھێڵی $1:',
+'compareselectedversions' => 'ھەڵسەنگاندنی وەشانە ھەڵبژێردراوەکان',
+'showhideselectedversions' => 'نیشان‌دان\\داشاردنی پێداچوونەوەکانی هەڵبژێردراو',
+'editundo' => 'پووچەڵ‌کردنەوە',
+'diff-multi' => '({{PLURAL:$1|پێداچوونەوەیەکی نێوانیی|$1 پێداچوونەوەی نێوانیی}} نیشان نەدراوە)',
+
+# Search results
+'searchresults' => 'ئەنجامەکانی گەڕان',
+'searchresults-title' => 'ئەنجامەکانی گەڕان بۆ "$1"',
+'searchresulttext' => 'بۆ زانیاری زیاتر دەربارەی گەڕان {{SITENAME}} ، بڕوانە لە [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'گەڕایت بۆ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|هەموو ئەو پەڕانەی دەستپێدەکەن بە "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|هەموو ئەو پەڕانەی بەستەرکراون بۆ "$1"]])',
+'searchsubtitleinvalid' => "گەڕایت بۆ '''$1'''",
+'toomanymatches' => 'هاوتای ئەوەی داوات کرد، زۆر هەیە. تکایە داوای‌تر تاقی بکەوە.',
+'titlematches' => 'سەردێڕی پەڕە پێی ئەخوا',
+'notitlematches' => 'لە نێو سەردێڕەکان نەبینرا',
+'textmatches' => 'هاوتاکانی دەقی لاپەڕە',
+'notextmatches' => 'لە دەقی نووسراوەکان دا نەبینرا',
+'prevn' => '{{PLURAL:$1|$1}}ی پێشوو',
+'nextn' => '{{PLURAL:$1|$1}}ی دواتر',
+'prevn-title' => '$1 {{PLURAL:$1|ئەنجامی|ئەنجامی}} پێشو',
+'nextn-title' => '$1 {{PLURAL:$1|ئەنجامی|ئەنجامی}} دواتر',
+'shown-title' => 'لە هەر لاپەڕە $1 {{PLURAL:$1|ئەنجام|ئەنجام}} نیشان‌ بدە',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ببینە',
+'searchmenu-legend' => 'ھەڵبژاردەکانی گەڕان',
+'searchmenu-exists' => "'''لەم ویکیە‌دا لاپەڕەیەک هەیە کە بە \"[[:\$1]]\" ناونراوە.'''",
+'searchmenu-new' => "'''لەم ویکییەدا پەڕەی « [[:$1]] » دروست بکە!'''",
+'searchhelp-url' => 'Help:پێرست',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|گەڕیان لە پەڕەکانی بەم پێشگرەوە]]',
+'searchprofile-articles' => 'پەڕە بە ناوەڕۆکەکان',
+'searchprofile-project' => 'پەڕەکانی یارمەتی و پڕۆژە',
+'searchprofile-images' => 'ڕەنگاڵە',
+'searchprofile-everything' => 'ھەموو شتێک',
+'searchprofile-advanced' => 'پێشکەوتوو',
+'searchprofile-articles-tooltip' => 'بگەڕێ لە $1',
+'searchprofile-project-tooltip' => 'بگەڕێ لە $1',
+'searchprofile-images-tooltip' => 'بگەڕێ بۆ پەڕگەکان',
+'searchprofile-everything-tooltip' => 'لە هەموو ناوەڕۆک بگەڕێ (تەنانەت پەڕەی وتەکانیش)',
+'searchprofile-advanced-tooltip' => 'گەڕان لەناو بۆشایی‌ناوە دڵخوازەکان',
+'search-result-size' => '$1 ({{PLURAL:$2|یەک وشە|$2 وشە}})',
+'search-result-score' => 'پەیوەندی: $1%',
+'search-redirect' => '(ئاڵوگۆڕ $1)',
+'search-section' => '(بەشی $1)',
+'search-suggest' => 'ئایا مەبەستت ئەمە بوو: $1',
+'search-interwiki-caption' => 'پرۆژە خوشکەکان',
+'search-interwiki-default' => '$1 ئەنجام:',
+'search-interwiki-more' => '(زیاتر)',
+'search-mwsuggest-enabled' => 'بە پێشنیارەکانەوە',
+'search-mwsuggest-disabled' => 'بێ پێشنیار',
+'search-relatedarticle' => 'پەیوەست',
+'mwsuggest-disable' => 'پێشنیارەکانی AJAX نیشان مەدە',
+'searcheverything-enable' => 'لە ھەموو بۆشایی‌‌ناوەکان دا بگەڕە',
+'searchrelated' => 'پەیوەست',
+'searchall' => 'هەموو',
+'showingresults' => "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
+'showingresultsnum' => "لە خوارەوە {{PLURAL:$3|'''١''' ئەنجام|'''$3''' ئەنجام}} دەبینن کە لە ئەنجامی ژمارە '''$2'''ەوە دەست{{PLURAL:$3|پێدەکات|پێدەکەن}}",
+'showingresultsheader' => "{{PLURAL:$5|ئەنجامی '''$1''' لە '''$3'''|ئەنجامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
+'nonefound' => "'''تێبینی''': لە حاڵەتی بنچینەیی تەنھا لە ھەندێک لە شوێن-‌ناوەکان گەڕان دەکرێت.<br />
+پێشگری ''all:'' بەکاربێنە بۆ گەڕان لە نێو ھەموو کەرستەکان (وەک پەڕەکانی وتووێژ، داڕێژەکان و هتد)، یان شوێن-‌ناوێکی دڵخواز وەک پێشگر بەکار بێنە.",
+'search-nonefound' => 'ھیچ ئەنجامێک کە بە داواکارییەکەت بخوا نەدۆزرایەوە.',
+'powersearch' => 'بە ھێز بگەڕە',
+'powersearch-legend' => 'گەڕانی پێشکەوتوو',
+'powersearch-ns' => 'گەڕان لە بۆشایی‌ناوەکانی:',
+'powersearch-redir' => 'ڕەوانەکراوەکان لیست بکرێن',
+'powersearch-field' => 'گەڕان بۆ',
+'powersearch-togglelabel' => 'پشکنینی:',
+'powersearch-toggleall' => 'ھەموو',
+'powersearch-togglenone' => 'ھیچیان',
+'search-external' => 'گەڕانی دەرەکی',
+'searchdisabled' => 'گەڕانی {{SITENAME}} ئێستە کار ناکات.
+دەتوانی بۆ ئێستا لە گەڕانی گووگڵ کەڵک وەرگری.
+لەیادت بێت لەوانەیە پێرستەکانیان بۆ گەڕانی ناو {{SITENAME}}، کات‌بەسەرچوو بێت.',
+
+# Quickbar
+'qbsettings' => 'خێرا-تووڵ',
+'qbsettings-none' => 'هیچ',
+'qbsettings-fixedleft' => 'چەپ‌ سەپێندراو',
+'qbsettings-fixedright' => 'ڕاست سەپێندراو',
+'qbsettings-floatingleft' => 'سەراوی چەپ',
+'qbsettings-floatingright' => 'سەراوی ڕاست',
+
+# Preferences page
+'preferences' => 'ھەڵبژاردەکان',
+'mypreferences' => 'ھەڵبژاردەکانم',
+'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
+'prefsnologin' => 'لەژوورەوە نیت',
+'prefsnologintext' => 'بۆ دانانی هەڵبژاردەکانی بەکارهێنەر دەبێ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} بچیتە ژوورەوە]</span>.',
+'changepassword' => 'تێپەڕوشە بگۆڕە',
+'prefs-skin' => 'پێستە',
+'skin-preview' => 'پێش بینین',
+'prefs-math' => 'بیرکاری',
+'datedefault' => 'ھەڵنەبژێردراو',
+'prefs-datetime' => 'کات و ڕێکەوت',
+'prefs-personal' => 'پرۆفایلی بەکارھێنەر',
+'prefs-rc' => 'دوایین گۆڕانکارییەکان',
+'prefs-watchlist' => 'لیستی چاودێڕییەکان',
+'prefs-watchlist-days' => 'ژمارەی ڕۆژە نیشاندراوەکان لە لیستی چاودێڕییەکان:',
+'prefs-watchlist-days-max' => '(ئه‌وپه‌ڕی ٧ ڕۆژە)',
+'prefs-watchlist-edits' => 'ئەوپەڕی ژمارەی گۆڕانکارییەکان بۆ نیشان دان لە لیستی پەرە پێدراوی چاودێڕی:',
+'prefs-watchlist-edits-max' => '(ئەوپەڕی ژمارە: ١٠٠٠)',
+'prefs-watchlist-token' => 'ڕەمزی لیستی چاودێری:',
+'prefs-misc' => 'جۆراوجۆر',
+'prefs-resetpass' => 'تێپەڕوشە بگۆڕە',
+'prefs-email' => 'ھەڵبژاردەکانی ئیمەیل',
+'prefs-rendering' => 'ڕواڵەت',
+'saveprefs' => 'پاشەکەوت',
+'resetprefs' => 'گۆڕانکارییە پاشەکەوت نەکراوەکان پاک بکەرەوە',
+'restoreprefs' => 'ھەموو تەنزیمەکان ببەرەوە بۆ حاڵەتی بنچینەیی',
+'prefs-editing' => 'دەستکاریکردن',
+'prefs-edit-boxsize' => 'قەبارەی پەنجەرەی گۆڕانکاری.',
+'rows' => 'ڕیزەکان:',
+'columns' => 'ستوونەکان:',
+'searchresultshead' => 'گەڕان',
+'resultsperpage' => 'ژمارەی ئەنجامەکان لە ھەر پەڕەیەک:',
+'contextlines' => 'ژمارەی دێڕەکانی ھەر ئەنجام:',
+'contextchars' => 'ژمارەی پیتەکانی ھەر دێڕ:',
+'stub-threshold' => 'بەربەرە بۆ داڕێژانی(بایت) <a href="#" class="stub">بەستەری ناتەواو</a>:',
+'recentchangesdays' => 'ژمارە ڕۆژە نیشاندراوەکان لە دوایین گۆڕانکارییەکان:',
+'recentchangesdays-max' => '(ئەوپەڕی $1 {{PLURAL:$1|ڕۆژە|ڕۆژە}})',
+'recentchangescount' => 'ژمارەی گۆڕانکارییەکان کە نیشان ئەدرێن لە حاڵەتی دیفاڵت:',
+'prefs-help-recentchangescount' => 'ئەمە دوایین گۆڕانکارییەکان، مێژووی پەڕەکان و لۆگەکانیش لەبەردەگرێت.',
+'prefs-help-watchlist-token' => 'بە پڕ کردنەوەی ئەم شوێنە بۆشاییە بە وشەیەکی نهێنی، فیدی RSS بۆ لیستی چاودێریەکەت درووست دەکرێت.
+ هەر کەس ئەو وشە نهێنیەی هەبێ دەتوانێ چاو لە لیستی چاودێریەکەت بکات، بۆیە دراوەیەکی پارێزراو هەڵیبژێرە.
+فەرموو ئەمە دراوەیەکی بە هەڵکەوت درووست‌کراو کە دەتوانی کەڵکی لێ‌وەرگری: $1',
+'savedprefs' => 'ھەڵبژاردەکانت پاشەکەوت کران',
+'timezonelegend' => 'ناوچەکات:',
+'localtime' => 'کاتی ناوچەیی:',
+'timezoneuseserverdefault' => 'کەڵک وەرگرتن لە بنچینەی ڕاژەکار',
+'timezoneuseoffset' => 'دیکە (ناتەواویەکان دیاری بکە)',
+'timezoneoffset' => 'جیاوازی¹:',
+'servertime' => 'کاتی server:',
+'guesstimezone' => 'لە وێبگەڕەکە بیگرە',
+'timezoneregion-africa' => 'ئەفریقا',
+'timezoneregion-america' => 'ئەمریکا',
+'timezoneregion-antarctica' => 'پۆڵی باشوور',
+'timezoneregion-arctic' => 'پۆڵی باکوور',
+'timezoneregion-asia' => 'ئاسیا',
+'timezoneregion-atlantic' => 'زەریای ئەتڵەسی',
+'timezoneregion-australia' => 'ئوستڕاڵیا',
+'timezoneregion-europe' => 'ئەورووپا',
+'timezoneregion-indian' => 'زەریای هندی',
+'timezoneregion-pacific' => 'زەریای هێمن',
+'allowemail' => 'ڕێگە بدە بە بەکارھێنەرانی تر کە ئیمەیلم بۆ بنێرن',
+'prefs-searchoptions' => 'ھەڵبژاردەکانی گەڕان',
+'prefs-namespaces' => 'بۆشایی‌ناوەکان',
+'defaultns' => 'ئەگەرنا لەم بۆشایی ناوانەدا بگەڕە:',
+'default' => 'بنچینەیی',
+'prefs-files' => 'پەڕگەکان',
+'prefs-custom-css' => 'CSSی دڵخواز',
+'prefs-custom-js' => 'JSی دڵخواز',
+'prefs-reset-intro' => 'دەتوانی لەم لاپەڕە بۆ گەڕانەوەی هەڵبژاردەکانت بۆ بنچینەیی ماڵپەر کەڵک وەرگریت.
+گەر ئەوە بکەی ئیتر گۆڕانەکەت ناگەڕێتەوە.',
+'prefs-emailconfirm-label' => 'پشتڕاست کردنەوەی ئیمەیل:',
+'prefs-textboxsize' => 'قەبارەی پەنجەرەی گۆڕانکاری',
+'youremail' => 'ئی‌مەیل:',
+'username' => 'ناوی به‌كارهێنه‌ر:',
+'uid' => 'ژمارەی بەکارھێنەر:',
+'prefs-memberingroups' => 'ئەندامی {{PLURAL:$1|گرووپی|گرووپەکانی}}:',
+'prefs-registration' => 'کاتی خۆتۆمارکردن:',
+'yourrealname' => 'ناوی ڕاستی:',
+'yourlanguage' => 'زمان',
+'yourvariant' => 'زاراوە:',
+'yournick' => 'نازناو',
+'prefs-help-signature' => 'بۆچوونەکان لە لاپەڕەکانی وتووێژدا دەبێ بە "<nowiki>~~~~</nowiki>" دیاری بکرێن، کە دواتر خۆکار دەگۆڕێ بە واژۆکەت و مۆری کاتی.',
+'badsig' => 'ئیمزاكه‌ هه‌ڵه‌یه‌، ته‌ماشای كۆدی HTML بكه‌‌',
+'badsiglength' => 'واژۆکەت زۆر درێژە.
+واژۆ نابێ لە $1 {{PLURAL:$1|نووسە|نووسە}} درێژتر بێت.',
+'yourgender' => 'جنس:',
+'gender-unknown' => 'ئاشکرا نەکراو',
+'gender-male' => 'پیاو',
+'gender-female' => 'ژن',
+'prefs-help-gender' => 'دڵخواز: بۆ بانگ کردنی دروست بە دەستی نەرمامێر.
+ئەم زانیارییە گشتی ئەبێ.',
+'email' => 'ئی‌مەیل',
+'prefs-help-realname' => 'ناوی ڕاستی دڵخوازە.
+ئەگەر پێت خۆش بێت بیدەی، زۆرتر ڕاتدەکێشێت بۆ کارەکانت.',
+'prefs-help-email' => 'دانانی ناونیشانی ئیمەیل دڵخوازانەیە، بەڵام ئەگەر تێپەڕوشەکەت لەیادکرد، بۆ نوێ کردنەوەی ئیمەیل پێویست دەبێت.<br />
+ھەروا دەتوانی ھەڵبژێری کە بەکارھێنەرانی دیکە بێ تێگەیشتن لە کەسایەتیت، لە پەڕەی لێدوان پێوەندیت لەگەڵ بگرن.',
+'prefs-help-email-required' => 'ناونیشانی ئیمەیل پێویستە.',
+'prefs-info' => 'زانیاریی سەرەتایی',
+'prefs-i18n' => 'نێونەتەویی کردن',
+'prefs-signature' => 'واژۆ',
+'prefs-dateformat' => 'ڕازاندنەوەی ڕێکەوت',
+'prefs-timeoffset' => 'قەرەبووکەری کات',
+'prefs-advancedediting' => 'ھەڵبژاردەکانی پێشکەوتوو',
+'prefs-advancedrc' => 'ھەڵبژاردەکانی پێشکەوتوو',
+'prefs-advancedrendering' => 'هەڵبژاردە پێشکەوتووەکان',
+'prefs-advancedsearchoptions' => 'هەڵبژاردە پێشکەوتووەکان',
+'prefs-advancedwatchlist' => 'هەڵبژاردە پێشکەوتووەکان',
+'prefs-display' => 'هەڵبژاردەکانی نیشان‌دان',
+'prefs-diffs' => 'جیاوازییەکان',
+
+# User rights
+'userrights' => 'بەڕێوەبردنی مافەکانی بەکارهێنەران',
+'userrights-lookup-user' => 'بەڕێوەبردنی گرووپەکانی بەکارهێنەران',
+'userrights-user-editname' => 'ناوی بەکارهێنەرێک بنووسە:',
+'editusergroup' => 'گرووپەکانی بەکارهێنەر بگۆڕە',
+'editinguser' => "گۆڕینی مافەکانی بەکارهێنەر بۆ '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'دەستکاری کردنی گرووپەکانی بەکارهێنەران',
+'saveusergroups' => 'گرووپی بەکارهێنەران پاشەکەوت بکە',
+'userrights-groupsmember' => 'ئەندامە لە:',
+'userrights-groups-help' => 'دەتوانی ئەو گرووپانەی ئەم بەکار‌هێنەرە تێیدایە بگۆڕیت:
+* چوارچێوەی نیشان‌کراو مانای ئەوەیە لەو گرووپەدا هەیە.
+* چوارچێوەی نیشان‌نەکراو مانای ئەوەیە لەو گرووپەدا نیە.
+* A * پێت‌دەڵێ ناتوانی ئەو گرووپی جارێکی دی زیادت کردووە لای‌بەری.',
+'userrights-reason' => 'هۆکار:',
+'userrights-no-interwiki' => 'دەسەڵاتی گۆڕینی مافەکانی بەکارهێنەر لە ویکی‌یەکانی دیکەت نیە.',
+'userrights-nodatabase' => 'بنکەدراوی $1 بوونی نیە یا لەم شوێنە نیە.',
+'userrights-nologin' => 'بۆ دانانی مافەکانی بەکارهێنەر دەبێ بە هەژماری بەڕێوبەری [[Special:UserLogin|بچیتە ژووروە]].',
+'userrights-notallowed' => 'هەژمارەکەی تۆ دەسەڵاتی دانانی مافەکانی بەکارهێنەری نیە.',
+'userrights-changeable-col' => 'ئەو گرووپانە بۆت ئەگۆڕدرێن',
+'userrights-unchangeable-col' => 'ئەو گرووپانە بۆت ناگۆڕدرێن',
+
+# Groups
+'group' => 'گرووپ:',
+'group-user' => 'بەکارهێنەران',
+'group-autoconfirmed' => 'بەکارھێنەرە خۆکار پەسندکراوەکان',
+'group-bot' => 'بۆتەکان',
+'group-sysop' => 'بەڕێوبەران',
+'group-bureaucrat' => 'بورووکراتەکان',
+'group-suppress' => 'چاودێرەکان',
+'group-all' => '(هەموو)',
+
+'group-user-member' => 'بەکارھێنەر',
+'group-autoconfirmed-member' => 'بەکارھێنەری خۆکار پەسەندکراو',
+'group-bot-member' => 'بۆت',
+'group-sysop-member' => 'بەڕێوەبەر',
+'group-bureaucrat-member' => 'بورووکرات',
+'group-suppress-member' => 'چاودێر',
+
+'grouppage-user' => '{{ns:project}}:بەکارھێنەران',
+'grouppage-autoconfirmed' => '{{ns:project}}:بەکارهێنەرانی خۆکار-بڕواکراو',
+'grouppage-bot' => '{{ns:project}}:بۆتەکان',
+'grouppage-sysop' => '{{ns:project}}:بەڕێوبەران',
+'grouppage-bureaucrat' => '{{ns:project}}:بورووکراتەکان',
+'grouppage-suppress' => '{{ns:project}}:چاودێر',
+
+# Rights
+'right-read' => 'خوێندنەوەی پەڕەکان',
+'right-edit' => 'دەستکاری کردنی پەڕەکان',
+'right-createpage' => 'دروست کردنی پەڕەکان (کە پەڕەی لێدوان نین)',
+'right-createtalk' => 'دروست کردنی پەڕەکانی لێدوان',
+'right-createaccount' => 'دروست کردنی ھەژماری بەکارھێنەریی نوێ',
+'right-minoredit' => 'بچووک دیاری کردنی گۆڕانکارییەکان',
+'right-move' => 'گواستنەوەی پەڕەکان',
+'right-move-subpages' => 'گواستنەوەی لاپەڕەکان دەگەڵ ژێرلاپەڕەکانی',
+'right-move-rootuserpages' => 'گواستنەوەی بنەرەتی لاپەڕەکانی بەکارهێنەر',
+'right-movefile' => 'گواستنەوەی پەڕگەکان',
+'right-suppressredirect' => 'درووست‌ نەکردنی رەوانەکەر لە لاپەڕەی سەرچاوە کاتی گواستنەوەی لاپەڕەکان',
+'right-upload' => 'بارکردنی پەڕگەکان',
+'right-reupload' => 'سەرنووسینی ئەو پەڕگانەی وا هەن',
+'right-reupload-own' => 'سەرنووسینی ئەو پەڕگانەی وا هەن کاتێ کەسێ خۆی باریان دەکات',
+'right-reupload-shared' => 'بەتاڵ‌کردنەوەی پەڕگە لە سەر میدیا هاوبەشە ناوخۆکان',
+'right-upload_by_url' => 'بارکردنی پەرگە لە ئەدرەسێکی سەر تۆڕەوە',
+'right-purge' => 'خاڵی‌کردنی کاشی وێبگە بۆ لاپەڕەیەک بێ بڕواپێ‌کران',
+'right-autoconfirmed' => 'دەستکاری لاپەڕەکانی‌ نیوەپارێزراو',
+'right-bot' => 'هەڵسوکەوت لەگەڵ‌کران وەک پرۆسەیەکی خۆکار',
+'right-nominornewtalk' => 'دەستکاری بچووکی لاپەڕەی وتووێژ بەو شێوەی نەبێتە هۆی درووست‌بوونی پەیامی نوێ',
+'right-apihighlimits' => 'خستنە‌کاری سنووری زیاتر بۆ داخوازیەکانی API',
+'right-writeapi' => 'کەڵک وەر گرتن لە نووسینی API',
+'right-delete' => 'سڕینەوەی پەڕەکان',
+'right-bigdelete' => 'سڕینەوە و هاوردنەوەی پێداچوونەوەیکی تایبەتی لاپەڕەکان',
+'right-deleterevision' => 'سڕینەوە و هاوردنەوەی پێداچوونەوەیکی تایبەتی لاپەڕەکان',
+'right-deletedhistory' => 'دیتنی دراوە سڕاوەکانی مێژوو بێ دەقە هەڵواسراوەکانی',
+'right-browsearchive' => 'گەڕانی ناو لاپەڕە سڕاوەکان',
+'right-undelete' => 'هاوەردنەوەی لاپەڕەیەک',
+'right-suppressrevision' => 'چاوپێداخشان و هاردنوەی ئەو لاپەڕانەی لە بەڕێوبەران داشاردرابوو.',
+'right-suppressionlog' => 'دیتنی لۆگە ئەهلیەکان',
+'right-block' => 'بەربەستنی بەکارھێنەرانی تر لە دەستکاری کردن',
+'right-blockemail' => 'بەرگری‌کردنی بەکارهێنەرێک لە ناردنی ئی‌مەیل',
+'right-hideuser' => 'بەربەست‌کردنی ناوێکی بەکارهێنەری، داشاردنی لە بەرچاوی هەموان',
+'right-ipblock-exempt' => 'لادان لە بەرگریەکانی ئای‌پی، بەرگریە خۆکارەکان و بەرگریە ڕیزەکان',
+'right-proxyunbannable' => 'لادان لە بەرگری خۆکاری پرۆکسیەکان',
+'right-protect' => 'گۆڕانی ئاستی پارێزراوی و دەستکاری لاپەڕە پارێزراوەکان',
+'right-editprotected' => 'دەستکاری لاپەڕە پارێزراوەکان (بێ پاراستنی زنجیری)',
+'right-editinterface' => 'گۆڕانی ڕووکاری بەکارهێنەر',
+'right-editusercssjs' => 'دەستکاری پەڕگەکانی CSS و JSـی بەکارهێنەرانی دیکە',
+'right-editusercss' => 'گۆڕانی پەڕگەکانی CSSـی دیکەی بەکارهێنەر',
+'right-edituserjs' => 'گۆڕانی پەڕگەکانی JSـی دیکەی بەکارهێنەر',
+'right-rollback' => 'بەخێرایی گەڕانەوەی دەستکاریەکانی دوایین بەکارهێنەر کە لاپەڕەیەکی تایبەتی دەستکاری کردە',
+'right-markbotedits' => 'نیشان‌کردنی دەستکاریە گەڕێنراوەکان وەک دەستکاریەکانی بۆت (bot)',
+'right-noratelimit' => 'کاریگەری وەرنەگرتن لە سنوورەکانی ئاست',
+'right-import' => 'هێنانەناوەی لاپەڕە لە ویکی‌یەکانی دیکە',
+'right-importupload' => 'هێنانەناوەی لاپەڕە لە پەڕگەیەکی بارکراو',
+'right-patrol' => 'لەژێرچاودێری نیشان‌کردنی دەستکاریەکانی کەسانی‌تر',
+'right-autopatrol' => 'خۆکار لەژێرچاودێری نیشان‌کردنی دەستکاریەکانی کەسێک بۆخۆی',
+'right-patrolmarks' => 'دیتنی دوایین دەستکاریەکان وا لەژێرچاودێری نیشان‌کراون',
+'right-unwatchedpages' => 'دیتنی لیستێک لەو لاپەڕانەی چاودێری ناکرێن',
+'right-trackback' => 'ناردنی ڕێچکەیەک',
+'right-mergehistory' => 'سەریەک‌خستنی میژووی لاپەڕەکان',
+'right-userrights' => 'دەستکاری مافەکانی هەموو بەکارهێنەران',
+'right-userrights-interwiki' => 'دەستکاری مافەکانی بەکارهێنەریی بەکارهێنەران لە ویکی‌یەکانی دیکە‌دا',
+'right-siteadmin' => 'داخستن و کردنەوەی بنکەدراو',
+'right-reset-passwords' => 'ڕیکخستنەوەی تێپەڕوشەی بەکارهێنەرانی دیکە',
+'right-override-export-depth' => 'هەناردنی لاپەڕەکان کە لاپەڕەکانی بەستەر پێ‌دراو تا قووڵایی 5 لەخۆ بگرێت',
+'right-versiondetail' => 'نیشان‌دانی زانیاریەکانی وەشانی بڵاوەی نەرم‌ئامێر',
+
+# User rights log
+'rightslog' => 'لۆگی مافەکانی بەکارهێنەر',
+'rightslogtext' => 'ئەمە لۆگی دەستکاری مافەکانی بەکار‌هێنەرە.',
+'rightslogentry' => 'بۆ $1 ئەندامەتی گرووپی $2 گۆڕدرا بۆ $3',
+'rightsnone' => '(ھیچ)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'خوێندنەوەی ئەم پەڕە',
+'action-edit' => 'دەستکاری ئەم پەڕە',
+'action-createpage' => 'درووست‌کردنی لاپەڕە',
+'action-createtalk' => 'درووست‌کردنی لەپەڕەکانی وتووێژ',
+'action-createaccount' => 'درووست‌کردنی هەژمارەی ئەم بەکارهێنەرە',
+'action-minoredit' => 'نیشان‌کردنی ئەم دەستکاریە وەک بچووک',
+'action-move' => 'گواستنەوەی ئەم پەڕە',
+'action-move-subpages' => 'گواستنەوەی ئەم لاپەڕە و ژێرلاپەڕەکانی',
+'action-move-rootuserpages' => 'گواستنەوەی بنەرەتی لاپەڕەکانی بەکارهێنەر',
+'action-movefile' => 'ئەم پەڕگەیە بگوازەوە',
+'action-upload' => 'ئەم پەڕەیە بار بکە',
+'action-reupload' => 'سەرنووسینی ئەم پەڕگە وا هەیە',
+'action-reupload-shared' => 'بەتاڵ‌کردنی ئەم پەڕگە لە‌سەر شوێنێکی هاوبەش',
+'action-upload_by_url' => 'بارکردنی ئەم پەرگە لە ئەدرەسێکی سەر تۆڕەوە',
+'action-writeapi' => 'کەڵک وەر گرتن لە نووسینی API',
+'action-delete' => 'ئەم پەڕەیە بسڕەوە',
+'action-deleterevision' => 'سڕینی ئەم پێداچوونەوە',
+'action-deletedhistory' => 'دیتنی مێژووی سڕاوەی ئەم لاپەڕە',
+'action-browsearchive' => 'گەران لە نێو لاپەڕە سڕاوەکان',
+'action-undelete' => 'گەڕانەوەی ئەم لاپەڕە',
+'action-suppressrevision' => 'چاوپێداخشان و هاردنوەی ئەم لاپەڕە شاراوە',
+'action-suppressionlog' => 'دیتنی ئەم لۆگە ئەهلیە',
+'action-block' => 'بەربەست کردنی ئەم بەکارهێنەرە بۆ دەستکاری‌کردن',
+'action-protect' => 'گۆڕانی ئاستی پارێزراوی بۆ ئەم لاپەڕە',
+'action-import' => 'هێنانەناوەی ئەم لاپەڕە لە ویکی‌یەکی دیکە',
+'action-importupload' => 'هێنانەناوەی ئەم لاپەڕە لە پەڕگەیەکی بارکراو',
+'action-patrol' => 'لەژێرچاودێری نیشان‌کردنی دەستکاریەکانی کەسانی‌تر',
+'action-autopatrol' => 'دەستکاریەکانت وەک لەژێرچاودێری نیشان کراون',
+'action-unwatchedpages' => 'دیتنی لیستێک لەو لاپەڕانەی چاودێری ناکرێن',
+'action-trackback' => 'ناردنی ڕێچکەیەک',
+'action-mergehistory' => 'سەریەک‌خستنی میژووی ئەم لاپەڕە',
+'action-userrights' => 'دەستکاری مافەکانی هەموو بەکارهێنەران',
+'action-userrights-interwiki' => 'دەستکاری مافەکانی بەکارهێنەریی بەکارهێنەران لە ویکی‌یەکانی دیکە‌دا',
+'action-siteadmin' => 'داخستن یا کردنەوەی بنکەدراو',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|گۆڕانکاری|گۆڕانکاری}}',
+'recentchanges' => 'دوایین گۆڕانکارییەکان',
+'recentchanges-legend' => 'هەڵبژاردنەکانی دوا گۆڕانکارییەکان',
+'recentchangestext' => 'دواکەوتنی دوایین گۆڕانکارییەکان لەسەر ویکی لەم لاپەڕەدا.',
+'recentchanges-feed-description' => 'دوای دوایین گۆڕانکارییەکانی ئەم ویکیە بکەوە لەم «فید»ەوە.',
+'recentchanges-label-legend' => 'پێرست: $1.',
+'recentchanges-legend-newpage' => '$1 - لاپەڕەی نوێ',
+'recentchanges-label-newpage' => 'ئەم دەستکاریە لاپەڕەیەکی نوێی درووست‌کرد',
+'recentchanges-legend-minor' => '$1 - دەستکاریی بچووک',
+'recentchanges-label-minor' => 'ئەمە دەستکاریەکی بچووکە',
+'recentchanges-legend-bot' => '$1 - دەستکاریی بۆت',
+'recentchanges-label-bot' => 'ئەم دەستکاریە لە لایەن بۆتەوە پێک هاتووە',
+'recentchanges-legend-unpatrolled' => '$1 - دەستکاری چاودێری‌نەکراو',
+'recentchanges-label-unpatrolled' => 'ئەم دەستکاریە هێشتا نەڕۆشتەتە ژێر چاودێری',
+'rcnote' => "لە خوارەوەدا {{PLURAL:$1|'''۱''' گۆڕانکاری |دوایین '''$1''' گۆڕانکارییەکان}} لە دوایین {{PLURAL:$2|ڕۆژ|'''$2''' ڕۆژەوە}} ، تا $5، $4 دەبینن.",
+'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2''' بۆ ئێستا (هەتا '''$1''' نمایشت).",
+'rclistfrom' => 'گۆڕانکارییە نوێکان کە لە $1ەوە دەست پێدەکەن نیشان بدە.',
+'rcshowhideminor' => 'دەستکارییە بچووکەکان $1',
+'rcshowhidebots' => 'بۆتەکان $1',
+'rcshowhideliu' => 'بەکارھێنەرە لە ژوورەکان $1',
+'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
+'rcshowhidepatr' => 'گۆرانکارییە کۆنترۆڵکراوەکان $1',
+'rcshowhidemine' => 'دەستکارییەکانی من $1',
+'rclinks' => 'دوایین $1 گۆڕانکارییەکانی دوایین $2 ڕۆژی <br />$3',
+'diff' => 'جیاوازی',
+'hist' => 'مێژوو',
+'hide' => 'بشارەوە',
+'show' => 'نیشان بدە',
+'minoreditletter' => 'ب',
+'newpageletter' => 'ن',
+'boteditletter' => '.بۆت',
+'number_of_watching_users_pageview' => '[$1 چاودێر لەسەر {{PLURAL:$1|بەکارهێنەر|بەکارهێنەر}}]',
+'rc_categories' => 'بەرتەسک‌کردنەوە بە هاوپۆلەکان (به "|" جودای بکەوە‌)',
+'rc_categories_any' => 'هەرکام',
+'newsectionsummary' => '/* $1 */ بەشی نوێ',
+'rc-enhanced-expand' => 'وردەکارییەکان پیشان بدە (پێویستی بە جاڤاسکریپتە)',
+'rc-enhanced-hide' => 'وردەکارییەکان بشارەوە',
+
+# Recent changes linked
+'recentchangeslinked' => 'گۆڕانکارییە پەیوەندیدارەکان',
+'recentchangeslinked-feed' => 'گۆڕانکارییە پەیوەندیدارەکان',
+'recentchangeslinked-toolbox' => 'گۆڕانکارییە پەیوەندیدارەکان',
+'recentchangeslinked-title' => 'گۆڕانکارییە پەیوەندیدارەکان بە "$1" ـەوە',
+'recentchangeslinked-noresult' => 'هیچ گۆڕانکارییەک لە لاپەڕەکانی بەستەر پێ‌دراو، لە درێژەی ماوەی دراوە.',
+'recentchangeslinked-summary' => "ئەم لاپەڕە تایبەتە، دوایین گۆڕانکارییەکان لەو لاپەڕانە نیشان ئەدا کە بەستەریان داوە بەم لاپەڕە.
+لاپەڕەکانی ناو [[Special:Watchlist|لیستی چاودێڕییەکانت]] '''ئەستوورن'''.",
+'recentchangeslinked-page' => 'ناوی پەڕە:',
+'recentchangeslinked-to' => 'نیشاندانی گۆڕانکارییەکانی ئەو پەڕگانە کە لینک دراون بەم پەڕگەوە',
+
+# Upload
+'upload' => 'پەڕگەیەک بار بکە',
+'uploadbtn' => 'پەڕگە بار بکە',
+'reuploaddesc' => 'هەڵوەشانەوەی بارکردن و گەڕانەوە بۆ فۆرمی بارکردن',
+'upload-tryagain' => 'پێناسەی گۆڕدراوی پەڕگە بنێرە',
+'uploadnologin' => 'لەژوورەوە نیت',
+'uploadnologintext' => 'بۆ بارکردنی پەڕگەکان ئەشێ [[Special:UserLogin|لە ژوورەوە بیت]].',
+'upload_directory_missing' => 'لقی بارکردن ($1) ون بووە و ڕاژەکاری‌وێب بۆی درووست ناکرێت.',
+'upload_directory_read_only' => 'ڕاژەکاری‌وێب دەسەڵاتی نووسینی سەر لقی بارکردنی ($1) نیە.',
+'uploaderror' => 'ھەڵە لە بارکردن دا',
+'uploadtext' => "فۆرمی خوارەوە بەکاربێنە بۆ بارکردنی پەڕگەکان.<br />
+بۆ بینینی و گەڕان لەو پەڕگانەی پێشتر بار کراون، بڕۆ بۆ [[Special:FileList|لیستی پەڕگە بارکراوەکان]]، ھەروەھا [[Special:Log/upload|ڕەشنووسی بارکردنەکان]] و [[Special:Log/delete|ڕەشنووسی سڕینەوەکان]].<br /><br />
+
+بۆ بەکارھێنانی پەڕگەیەک لە پەڕەیەکدا، بەستەرێک بە یەکێک لەم شێوازانەی خوارەوە بە کار بێنە:
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' بۆ بەکارهێنانی وەشانی تەواوی پەڕگە
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' بۆ بەکارهێنانی بە پانتایی ٢٠٠ پیکسەل لە چوارچێوەیەک لە لێواری چەپ بە 'alt text' وەک شرۆڤە
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' بۆ بەستەرپێدان بە پەڕگەیەک بێ نیشاندانی خۆی پەڕگەکە",
+'upload-permitted' => 'جۆرە پەڕگە ڕێگەپێدراوەکان: $1.',
+'upload-preferred' => 'جۆرە پەڕگانەی بە باشتر دەزانرێن: $1.',
+'upload-prohibited' => 'جۆرە پەڕگانەی قەدەغە کراون: $1.',
+'uploadlog' => 'لۆگی بارکردن',
+'uploadlogpage' => 'لۆگی بارکردن',
+'uploadlogpagetext' => 'لەخوارەوە لیستی دوایین بارکراوەکان دەبینی.
+بۆ ئەوەی چاوێکیان لێ بکەی، [[Special:NewFiles|گالەری پەڕگە نوێکان]] ببینە.',
+'filename' => 'ناوی پەڕگە',
+'filedesc' => 'پوختە',
+'fileuploadsummary' => 'پوختە:',
+'filereuploadsummary' => 'گۆرانکارییەکانی پەڕگە:',
+'filestatus' => 'بارودۆخی مافی لەبەرگرتنەوە:',
+'filesource' => 'سەرچاوە:',
+'uploadedfiles' => 'پەڕگە بارکراوەکان',
+'ignorewarning' => 'چاوپۆشان لە ئاگادارییەکان و پاشەکەوت کردن بە هەر شێوەیەک',
+'ignorewarnings' => 'گوێ مەدە بە ئاگادارییەکان',
+'minlength1' => 'ناوی پەڕگەکان دەبێ لانیکەم یەک پیت ببێت.',
+'illegalfilename' => 'ناوی‌پەڕگەی "$1" پیتێکی تێدایە کە ڕێگەنەدراوە بۆ سەردێڕی لاپەڕە بەکاربێت.
+تکایە ناوی پەڕگەکە بگۆڕە و دیسان باری بکەوە.',
+'badfilename' => 'ناوی پەڕگە بە "$1" گۆڕا .',
+'filetype-badmime' => 'ڕێگە نەدراوە پەڕگەی "$1" جۆری MIME بار بکرێت.',
+'filetype-bad-ie-mime' => 'ناتوانین ئەم پەڕگە باربکەین لەبەر ئەوەی وێبگەڕی Internet Explore ئەوە وەک "$1" دەناسێت کە ڕێگەنەدراوەیە و جۆرە پەڕگەیەکی مەترسی‌دارە.',
+'filetype-unwanted-type' => "'''\".\$1\"''' جۆرە پەڕگەی نەخوازراوە.
+\$2، ئەو جۆرە {{PLURAL:\$3|پەڕگەیە|پەڕگانەیە}} وا بە باش‌ دازاندرێت.",
+'filetype-banned-type' => "'''\".\$1\"''' جۆرە پەڕگەی ڕێگە پێ‌نەدراوە‌.
+\$2، ئەو جۆرە {{PLURAL:\$3|پەڕگەیە|پەڕگانەیە}} وا ڕێگە دراوە.",
+'filetype-missing' => 'پەڕگەکە پاشگری نییە (وەک ".jpg").',
+'large-file' => 'پێشنیار دەکرێت قەبارەی پەڕگەکان زیاتر لە $1 نەبێت؛
+قەبارەی ئەم پەڕگە $2.',
+'largefileserver' => 'ئەم پەڕگە گەورەتر لەوەیە کە ڕاژەکار ڕێگەدەدات.',
+'emptyfile' => 'ئەو پەڕگەی بارت‌کرد لەوەدەچێ بەتاڵ و خاڵی بێت.
+شایەد ئەوە جۆرە هەڵەیەک لە ناوی لاپەڕەکە بێت.
+گەر بە ڕاستی دەتەوێ ئەو پەڕگە باربکەی جارێکی‌کە چاوی لێ‌بکەوە.',
+'fileexists' => "پەڕگەیەک هەر بەو ناوە‌ لە پێش‌دا هەیە، تکایە گەر ئەرخەیان نیت بۆ گۆڕینی، چاوێک لە '''<tt>[[:$1]]</tt>''' بکە.
+[[$1|thumb]]",
+'filepageexists' => "پەڕەی ناساندن بۆ ئەم پەڕگە پێشتر لە '''<tt>[[:$1]]</tt>''' درووستکراوە، بەڵام پەڕگەیەک بەو ناوەوە ئێستا نادۆزرێتەوە.
+ئەو پوختەی کە نووسیوتە لە پەڕەی ناساندن بەرچاو ناکەوێت.
+گەر دەتەوێ پوختەکەت بەرچاو کەوێت دەبێ خۆت دەستی دەستکاری بکەی.
+[[$1|thumb]]",
+'fileexists-extension' => "پەڕگەیەک هەر بەو ناوە هەیە: [[$2|thumb]]
+* ناوی ئەو پەڕگەی باری ئەکەی:'''<tt>[[:$1]]</tt>'''
+* ناوی ئەو پەڕگەی ئێستا هەیە:'''<tt>[[:$2]]</tt>'''
+تکایە ناوێکی دیکە هەڵبژێرە.",
+'fileexists-thumbnail-yes' => "لەوە دەچێ ئەم پەڕگە وێنەیەکی بچووک‌کراوە بێت ''(هێما)''. [[$1|thumb]]
+تکایە چاو لە پەڕگەی '''<tt>[[:$1]]</tt>''' بکه.‌
+گەر ئەوەی چاوت لێ‌کرد قەبارەی ڕەسەنی هەر ئەو وێنەیە، پێویست ناکات دیسان هێماکەی باربکەی.",
+'file-thumbnail-no' => "دەستپێکی ناوی ئەم پەڕگە ئەوەیە: '''<tt>$1</tt>'''
+لەوە دەچێ ئەم پەڕگە وێنەیەکی بچووک‌کراوە بێت ''(هێما)''.
+گەر ئەو وێنەت لە قەبارەی ڕەسەنی‌ خۆی‌دا هەیه،‌ تکایە ئەوە بار بکه،‌ دەنا ناوی پەڕگەکە بگۆڕە.",
+'fileexists-forbidden' => 'پەڕگەیەک بەو ناوە لە پێش‌دا هەیە و سەرنووسین ناکرێت.
+گەر هێشتا دەتەوێ پەڕگەکەت باربکەی، تکایە بگەڕێ دواوە و ناوێکی نوێ بەکاربهێنە.
+[[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'پەڕگەیەک بەو ناوە لە پێش‌دا لە شوێنی پەڕگە هاوبەشەکان هەیه.
+گەر هێشتا دەتەوێ پەڕگەکەت باربکەی، تکایە بگەڕێ دواوە و ناوێکی نوێ بەکاربهێنە.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'ئەم پەڕگەیە لێ‌گرتنەوەی ئەم {{PLURAL:$1|پەڕگەیە|پەڕگانەیە}}:',
+'file-deleted-duplicate' => 'ئەم پەڕگەیە ڕێک وەک ئەم پەڕگە ([[$1]]) دەچێت کە لەم دواییانەدا سڕاوەتەوە.
+پێش دەست‌پێ‌کردنی دیسان بارکردنەوەی، تکایە چاو لە مێژووی سڕینەوەی ئەو پەڕگە بکە.',
+'successfulupload' => 'بارکردنی سەرکەوتوو',
+'uploadwarning' => 'ئاگادارییەکانی بارکردن',
+'savefile' => 'پەڕگە پاشەکەوت بکە',
+'uploadedimage' => '«[[$1]]» بار کرا',
+'overwroteimage' => 'وەشانێکی نوێی «[[$1]]» بار کرد',
+'uploaddisabled' => 'بارکردن قەدەخە کراوە',
+'uploaddisabledtext' => 'بارکردنی پەڕگەکان لە کار خستراوە.',
+'php-uploaddisabledtext' => 'بارکردنی پەڕگەکان لە PHPدا لە کار خستراوە.
+تکایە چاو لە هەڵبژاردەکانی بارکردنی_پەڕگەکان بکە.',
+'uploadscripted' => 'ئەم پەڕگە HTML یان کۆدی سکریپتی لەخۆگرتووە کە لەوانەیە ببێتە هۆی هەڵە تێگەیشتنی هێندێ وێبگەڕەکان.',
+'uploadvirus' => 'ئەم پەڕگە ڤایرۆسی هەیە! وردەکاری: $1',
+'upload-source' => 'پەڕگەی سەرچاوە',
+'sourcefilename' => 'ناوی پەڕگەی سەرچاوە:',
+'destfilename' => 'ناوی مەبەست:',
+'upload-maxfilesize' => 'ئەو پەری قەبارەی فایل: $1',
+'upload-description' => 'پێناسەی پەڕگە',
+'upload-options' => 'ھەڵبژاردەکانی بارکردن',
+'watchthisupload' => 'چاودێریی ئەم پەڕگە بکە',
+'filewasdeleted' => 'پەڕگەیەک بەم ناوە لەم دواییانەدا بارکرا و بە خێرایی سڕایەوە.
+باشتر وایە پێش هەوڵی دووبارە بۆ بارکردن سەرنجی $1 بدەی.',
+'upload-wasdeleted' => "'''ئاگاداری: خەریکی پەڕگەیەک باردەکەی کە لەم دواییانەدا سڕاوەتەوە.'''
+
+پێش بارکردن ئەرخەیان ببە کە بارکردنی ئەو پەڕگە بەسوودە.
+لۆگی سڕینەوەی ئەم پەڕگە بۆ ئاسوودەیی لێرە دانراوە:",
+'filename-bad-prefix' => "دەستپێکی ناوی ئەو پەڕگەی باری دەکەی '''\"\$1\"'''، کە ناوێکی ناسێنەر نیە؛ ئەو جۆرە ناوە زۆربەی کات کامێرا دیجیتاڵەکان خۆکار بەکاری‌دەبەن.
+تکایە ناوێک هەڵبژێرە کە زانیاریی زیاتر بدات سەبارەت بە پەڕگەکەت.",
+
+'upload-proto-error' => 'پرۆتۆکۆڵی هەڵە',
+'upload-proto-error-text' => 'بۆ بارکردن لە تۆڕ، URL دەبێ بە <code>http://</code> یان <code>ftp://</code> دەست‌پێ‌بکات.',
+'upload-file-error' => 'ھەڵەی ناوخۆیی',
+'upload-file-error-text' => 'کێشەیەکی ناوخۆ ڕووی‌دا وەختێ هەوڵی درووست‌کردنی پەڕگەی کاتی ئەدرا لە سەر ڕاژەکار.
+تکایە پەیوەندی بکە بە [[Special:ListUsers/sysop|بەڕێوبەر]].',
+'upload-misc-error' => 'هەڵەیەکی نەناسراوی بارکردن',
+'upload-misc-error-text' => 'هەڵەیەکی نەناسراو لە کاتی بارکردن ڕووی‌دا.
+تکایە لە درووست‌بوون و دەست‌پێ گەیشتنی URL ئەرخەیان ببە و دیسان تاقی‌بکەوە.
+گەر کێشەکە هەر بەردەوام بوو پەیوەندی بکە بە [[Special:ListUsers/sysop|بەڕێوبەر]].',
+'upload-too-many-redirects' => 'URL ڕەوانەکەری زۆری لەخۆ گرتووە',
+'upload-unknown-size' => 'قەبارەی نادیار',
+'upload-http-error' => 'هەڵەیەکی HTTP ڕووئ داوە: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'تێپه‌ربوون ره‌تکرایه‌وه‌',
+'img-auth-nofile' => 'فایلی "$1" بوونی نیه‌',
+'img-auth-isdir' => 'هه‌وڵ ده‌ده‌ی بۆ کردنه‌وه‌ی بوخچه‌ی "$1" له‌ کاتێکدا ته‌نیا کردنه‌وه‌ی فایل رێپێدراوه‌',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'توانای دەست‌پێ‌گەیشتنی URL نیە',
+'upload-curl-error6-text' => 'ئەو URL کە ڕاچاوت کردووە توانای دەست‌پێ‌گەیشتنی نییە.
+تکایە دیسان سەرنجی بدەوە کە URL درووست‌ نووسراوە و ماڵپەڕەکە بەردەوام کار دەکات.',
+'upload-curl-error28' => 'کات‌بەسەرچوونی بارکردن',
+'upload-curl-error28-text' => 'ئەو ماڵپەرە کاتی زۆری خایاند بۆ وەڵام دانەوە.
+تکایە ئەرخەیان بە کە ماڵپەڕ بەردەوامە لە کارکردن، نەختێک ڕاوەستە و دیسان تاقی کەوە.
+لەوانەیە لە کاتێ کە کەمتر سەرقاڵ بێت تاقی بکەیتەوە باشتر بێت.',
+
+'license' => 'بەڵگەنامە:',
+'license-header' => 'بەڵگەنامە',
+'nolicense' => 'هیچ‌کام هەڵنەبژاردراوە',
+'license-nopreview' => '(پێشبینین ئامادەی کەڵک وەرگرتن نییە)',
+'upload_source_url' => ' (URLـی بەکار، بۆ دەست‌پێگەیشتنی گشتی)',
+'upload_source_file' => ' (پەڕگەیەک لەسەر کۆمپیوتەرەکەت)',
+
+# Special:ListFiles
+'listfiles-summary' => 'ئەم لاپەڕە تایبەتە هەموو لاپەڕە بارکراوەکانت نیشان ئەدات.
+لەسەر نمای بنچینەیی، دوایین بارکراوەکان لە سەرووی لیستەکە دەبیندرێن.
+بە کرتە لەسەر سەرپەڕی ستوونەکانی دەتوانی شێوازی چنینەکەیان بگۆڕیت.',
+'listfiles_search_for' => 'گەڕان بۆ ناوی مێدیا:',
+'imgfile' => 'پەڕگە',
+'listfiles' => 'لیستی پەرگەکان',
+'listfiles_date' => 'ڕێکەوت',
+'listfiles_name' => 'ناو',
+'listfiles_user' => 'بەکارھێنەر',
+'listfiles_size' => 'قەبارە',
+'listfiles_description' => 'پەسن',
+'listfiles_count' => 'وەشانەکان',
+
+# File description page
+'file-anchor-link' => 'پەڕگە',
+'filehist' => 'مێژووی پەڕگە',
+'filehist-help' => 'کرتە بکەسەر ڕێکەوت\\کات بۆ بینینی پەڕگەکە بەو شێوەی لەو کاتەدا بووە.',
+'filehist-deleteall' => 'هەمووی بسڕەوە',
+'filehist-deleteone' => 'سڕینەوە',
+'filehist-revert' => 'پێچەوانەکردنەوە',
+'filehist-current' => 'هەنووکە',
+'filehist-datetime' => 'ڕێکەوت/کات',
+'filehist-thumb' => 'ھێما',
+'filehist-thumbtext' => 'ھێما بۆ وەشانی $1',
+'filehist-nothumb' => 'هێما نییه',
+'filehist-user' => 'بەکارهێنەر',
+'filehist-dimensions' => 'دوورییەکان',
+'filehist-filesize' => 'قەبارەی پەڕگە',
+'filehist-comment' => 'لێدوان',
+'filehist-missing' => 'ون‌بوونی پەڕه',
+'imagelinks' => 'بەستەرەکانی پەڕگە',
+'linkstoimage' => 'لەم {{PLURAL:$1|پەڕەی خوارەوە بەستەر دراوە|$1 پەڕەی خوارەوە بەستەر دراوە}} بۆ ئەم پەڕگە:',
+'linkstoimage-more' => 'زیاتر لە $1 {{PLURAL:$1|بەستەری لاپەڕە|بەستەری لاپەڕە}} بۆ ئەم پەڕگه.
+ئەم لیستە {{PLURAL:$1|یەکەم لاپەڕەی بەستەرە|یەکەم لاپەڕە $1 بەستەرە}} بۆ تەنها یەم پەڕگە.
+هەروا [[Special:WhatLinksHere/$2|لیستی تەواو]] ئامادەی کەڵک وەرگرتنە.',
+'nolinkstoimage' => '‌لاپەڕەیەک نەدۆزرایەوە کە بەستەری هەبێ بۆ ئەم پەڕگە.',
+'morelinkstoimage' => '[[Special:WhatLinksHere/$1|بەستەری زیاتر]] ببینە بۆ ئەم پەڕگە.',
+'redirectstofile' => 'ئەم {{PLURAL:$1|پەڕگە ڕەوانکەرە|پەڕگانە ڕەوانکەرن}} بۆ ئەم پەڕگە:',
+'duplicatesoffile' => 'ئەم {{PLURAL:$1|پەڕگە دووبارەکرنەوەیەکی|پەڕگانە دووبارەکردنەوەی}} ئەم پەڕگەن ([[Special:FileDuplicateSearch/$2|وردەکاری زیاتر]]):',
+'sharedupload' => 'ئەم پەڕگە لە $1ەوەیە و لەوە دەچێ لە پرۆژەکانی دیکەش بەکار ببرێت.',
+'sharedupload-desc-there' => 'ئەم پەڕگە لە $1ەوەیە و لەوە دەچێ لە پرۆژەکانی دیکەش بەکار ببرێت.
+تکایە بۆ زانیاریی زیاتر چاو بکە لە [$2 لاپەڕەی ناساندنی پەڕگە].',
+'sharedupload-desc-here' => 'ئەم پەڕگە لە $1ەوەیە و لەوە دەچێ لە پرۆژەکانی دیکەش بەکار ببرێت.
+لە خوارەوە پێناسەکەی کە لە [$2 لاپەڕەی ناساندنی پەڕگە] هەیە، دەبینیت.',
+'filepage-nofile' => 'پەڕگەیەک بەم ناوە نیە.',
+'filepage-nofile-link' => 'پەڕگەیەک بەم ناوە نیە بەڵام دەتوانی [$1 باری بکەی].',
+'uploadnewversion-linktext' => 'وەشانێکی نوێی ئەم پەڕەیە بار بکە',
+'shared-repo-from' => 'لە لایەن $1',
+'shared-repo' => 'شوێنێکی هاوبەشی',
+
+# File reversion
+'filerevert' => 'پێچەوانەکردنەوەی $1',
+'filerevert-backlink' => '→ $1',
+'filerevert-legend' => 'پێچەوانەکردنەوەی پەڕگە',
+'filerevert-intro' => "خەریکی پەڕگەی '''[[Media:$1|$1]]''' دەگەڕینیتەوە بۆ [$4 وەشانی $3، $2].",
+'filerevert-comment' => 'هۆکار:',
+'filerevert-defaultcomment' => 'گەڕێندراوە بۆ وەشانی $2، $1',
+'filerevert-submit' => 'گەڕاندنەوە',
+'filerevert-success' => "'''[[Media:$1|$1]]''' گەڕێندراوەتەوە بۆ [$4 وەشانی $3، $2].",
+'filerevert-badversion' => 'وەشانێکی پێشووی ئەم پەڕگە بەو کاتە ڕاچاوکراوه ‌نەدۆزرایەوە.',
+
+# File deletion
+'filedelete' => 'سڕینەوەی $1',
+'filedelete-backlink' => '→ $1',
+'filedelete-legend' => 'سڕینەوەی پەڕگە',
+'filedelete-intro' => "خەریکی پەڕگەی '''[[Media:$1|$1]]''' دەگەڵ هەموو مێژووی دەسڕیتەوە.",
+'filedelete-intro-old' => "خەریکی وەشانی [$4 $3، $2] لە '''[[Media:$1|$1]]''' دەسڕیتەوە.",
+'filedelete-comment' => 'هۆکار:',
+'filedelete-submit' => 'بسڕەوە',
+'filedelete-success' => "'''$1''' سڕاوەتەوە.",
+'filedelete-success-old' => "وەشانی $3، $2 لە '''[[Media:$1|$1]]''' سڕاوەتەوە.",
+'filedelete-nofile' => "'''$1''' بوونی نییە.",
+'filedelete-nofile-old' => "وەشانێکی ئەرشیڤ‌کراوی '''$1''' بەو تایبەتمەندییە دیاری‌کراوانە نییە.",
+'filedelete-otherreason' => 'هۆکاری دیکە\\زیادی:',
+'filedelete-reason-otherlist' => 'هۆکاری دیکە',
+'filedelete-reason-dropdown' => '*هوکارە هاوبەشەکانی سڕینەوە
+**لادان لە مافەکانی بڵاوکردنەوە
+***پەڕگەی دووبارەکراوە',
+'filedelete-edit-reasonlist' => 'دەستکاری هۆکارەکانی سڕینەوە',
+
+# MIME search
+'mimesearch' => 'گەڕانی MIME',
+'mimesearch-summary' => 'ئەم لاپەڕە پاڵێوتنی هەیە بۆ جۆرەکانی MIME.
+ناودراو: جۆرەی ناوەڕۆک\\ژێرجۆرە، وەک <tt>image/jpeg</tt>.',
+'mimetype' => 'جۆرەی MIME:',
+'download' => 'داگرتن',
+
+# Unwatched pages
+'unwatchedpages' => 'لاپەڕە چاودێری‌نەکراوەکان',
+
+# List redirects
+'listredirects' => 'لیستی ئاڕاستەکراوەکان',
+
+# Unused templates
+'unusedtemplates' => 'داڕێژە بەکارنەھێنراوەکان',
+'unusedtemplatestext' => 'ئەم لاپەڕە هەموو لاپەڕەکانی ناوبۆشایی {{ns:template}} کە نەکەوتوونەتە لاپەڕەی دیکە.
+لە یادت بێ سەرنج بدەی بۆ بەستەری دیکە بۆ داڕێژەکان، پێش سڕینەوەیان.',
+'unusedtemplateswlh' => 'بەستەرەکانی تر',
+
+# Random page
+'randompage' => 'پەڕەیەک بە هەڵکەوت',
+'randompage-nopages' => 'هیچ لاپەڕەیەک لەم {{PLURAL:$2|ناوبۆشاییەدا|ناوبۆشاییانەدا}} نیە: $1.',
+
+# Random redirect
+'randomredirect' => 'ڕەوانکەری هەرمەکی',
+'randomredirect-nopages' => 'لە ناوبۆشایی "$1" هیچ ڕەوانکەرێک نییە.',
+
+# Statistics
+'statistics' => 'ئامارەکان',
+'statistics-header-pages' => 'ئامارەکانی پەڕەکان',
+'statistics-header-edits' => 'ئامارەکانی گۆڕانکارییەکان',
+'statistics-header-views' => 'ئامارەکانی سەردانەکان',
+'statistics-header-users' => 'ئامارەکانی بەکارھێنەران',
+'statistics-header-hooks' => 'ئامارەکانی دیکە',
+'statistics-articles' => 'پەڕە بە ناوەڕۆکەکان',
+'statistics-pages' => 'پەڕەکان',
+'statistics-pages-desc' => 'گشت پەڕەکانی ویکی، بە لەخۆگرتنی پەڕەکانی وتووێژ، ڕەوانەکراوەکان و ھتد.',
+'statistics-files' => 'پەڕگە بارکراوەکان',
+'statistics-edits' => 'دەستکارییەکانی لاپەڕە لە کاتی دامەزراندنی {{SITENAME}}',
+'statistics-edits-average' => 'نێونجی ژمارەی دەستکارییەکان لە پەڕەیەک دا',
+'statistics-views-total' => 'دیتنی هەموو',
+'statistics-views-peredit' => 'دیتنی هەر دەستکارییەک',
+'statistics-jobqueue' => 'درێژی [http://www.mediawiki.org/wiki/Manual:Job_queue ڕیزی کار]',
+'statistics-users' => '[[Special:ListUsers|بەکارھێنەر]]ە تۆمارکراوەکان',
+'statistics-users-active' => 'ئەندامە چالاکەکان',
+'statistics-users-active-desc' => 'ئەو بەکارھێنەرانە کە لە دوایین {{PLURAL:$1|ڕۆژ|$1 ڕۆژ}}دا کارێکیان جێبەجێ کربێت.',
+'statistics-mostpopular' => 'زۆرترین لاپەڕە بینراوەکان',
+
+'disambiguations' => 'پەڕەکانی جوداکردنەوە',
+'disambiguationspage' => 'Template: خاوێن‌کردنەوەی ناوەڕۆک',
+'disambiguations-text' => "ئەم لاپەڕانە بەستەرن بۆ '''لاپەڕەی خاوێن‌کردنەوەی ناوەڕۆک'''.
+ئەوانە دەبێ لە جیاتی ئەوە بەستەر بن بۆ بابەتی گونجاو.<br />
+هەر لاپەڕەیەک کە لە داڕێژی بەستەر پێ‌دراو لە [[MediaWiki:Disambiguationspage]] کەڵک وەرگرێت وەک لاپەڕەی خاوێن‌کردنەوەی نوەڕۆک دەناسرێت.",
+
+'doubleredirects' => 'دووجار ڕەوانەکراوەکان',
+'doubleredirectstext' => 'ئەم لاپەڕە لیستی ئەو لاپەڕانەن وا ڕەوانکەرن بۆ لاپەڕەی ڕەوانکەر دیکە.
+هەر ڕیزێک، بەستەرەکان بۆ یەکەم و دووهەم ڕەوانکەری لەخۆ گرتووە. ئامانجی ڕەوانکەری دووهەم کە زۆربەی کات مەبەستی ڕاستیییە و ڕەوانکەری یەکەمیش هەر دەبێ بۆ ئەوێ ڕەوان بکات.
+دراوەکانی <s>هێڵ بەسەردا کێشراو</s> چارەسەر کرا.',
+'double-redirect-fixed-move' => '[[$1]] گوێسترایەوە.
+ئێستا ڕەوانکەرە بۆ [[$2]].',
+'double-redirect-fixer' => 'چارەسەرکەری ڕەوانکەر',
+
+'brokenredirects' => 'ڕەوانەکراوە خراپەکان',
+'brokenredirectstext' => 'ئەم ڕەوانکەرانە بەستەرن بۆ لاپەڕەهایەک کە بوونیان نیە:',
+'brokenredirects-edit' => 'دەستکاری',
+'brokenredirects-delete' => 'سڕینەوە',
+
+'withoutinterwiki' => 'پەڕەکانی بێ بەستەرەکانی زمان',
+'withoutinterwiki-summary' => 'ئەم پەڕانە بەستەریان بۆ وەشانەکانی زمانەکانی تر نیە.',
+'withoutinterwiki-legend' => 'پێشگر',
+'withoutinterwiki-submit' => 'پیشاندان',
+
+'fewestrevisions' => 'پەڕەکان بە کەمترین پیاچوونەوەوە',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|بایت|بایت}}',
+'ncategories' => '$1 {{PLURAL:$1|ھاوپۆل|ھاوپۆل}}',
+'nlinks' => '$1 {{PLURAL:$1|بەستەر|بەستەر}}',
+'nmembers' => '$1 {{PLURAL:$1|ئەندام|ئەندام}}',
+'nrevisions' => '$1 {{PLURAL:$1|پیاچوونەوە|پیاچوونەوە}}',
+'nviews' => '$1 جار {{PLURAL:$1|بینراو|بینراو}}',
+'specialpage-empty' => 'ئەنجامێک بۆ ئەم ڕاپۆرتە نییە.',
+'lonelypages' => 'پەڕە ھەتیوەکان',
+'lonelypagestext' => 'بەم لاپەڕانە لە هیچ لاپەڕەیەک‌دا لە {{SITENAME}} بەستەر نەدراوە یا هیچ لاپەڕەیەک لەخۆیانی نەگرتووە.',
+'uncategorizedpages' => 'پەڕە پۆلێن نەکراوەکان',
+'uncategorizedcategories' => 'پۆلە پۆلێن نەکراوەکان',
+'uncategorizedimages' => 'پەڕگە پۆلێن نەکراوەکان',
+'uncategorizedtemplates' => 'داڕێژە پۆلێن نەکراوەکان',
+'unusedcategories' => 'پۆلە بەکارنەھێنراوەکان',
+'unusedimages' => 'پەڕگە بەکارنەھێنراوەکان',
+'popularpages' => 'پەڕە مەحبووبەکان',
+'wantedcategories' => 'پۆلە داواکراوەکان',
+'wantedpages' => 'پەڕە داواکراوەکان',
+'wantedpages-badtitle' => 'سەردێڕی نەگونجاو لە سەرجەمی ئەنجامەکان: $1',
+'wantedfiles' => 'پەڕگە داواکراوەکان',
+'wantedtemplates' => 'قاڵبە داواکراوەکان',
+'mostlinked' => 'زیاترین لاپەڕە بەستەر دراوەکان',
+'mostlinkedcategories' => 'زیاترین هاوپۆلە‌ بەستەر دراوەکان',
+'mostlinkedtemplates' => 'زیاترین داڕێژە‌ بەستەر دراوەکان',
+'mostcategories' => 'پەڕەکان بە زۆرترین ھاوپۆلەوە',
+'mostimages' => 'زیاترین پەڕگە‌ بەستەر دراوەکان',
+'mostrevisions' => 'لاپەڕەکان بە زیاترین پێداچوونەوە',
+'prefixindex' => 'گشت پەڕەکان بە پێشگرەوە',
+'shortpages' => 'پەڕە کورتەکان',
+'longpages' => 'پەڕە دڕێژەکان',
+'deadendpages' => 'لاپەڕەکانی دوایین بەستراو',
+'deadendpagestext' => 'ئەم لاپەرانە بە هیچ لاپەڕەیەکی دیکە لە {{SITENAME}}دا بەستەری نەداوە.',
+'protectedpages' => 'پەڕە پارێزراوەکان',
+'protectedpages-indef' => 'تەنها پاراستنە زۆرەکان',
+'protectedpages-cascade' => 'تەنها پاراستنە زنجیرییەکان',
+'protectedpagestext' => 'ئەم لاپەڕانە لە گواستنەوە و دەستکاری‌کردن پارێزراون',
+'protectedpagesempty' => 'هیچ لاپەڕەیک ئێستا بەم دیاریکراوانە نەپارێزراوە.',
+'protectedtitles' => 'سەرناوە پارێزراوەکان',
+'protectedtitlestext' => 'ئەم سەردێڕانە لە درووست‌کردن پارێزراون',
+'protectedtitlesempty' => 'هیچ سەردێڕیك ئێستا بەم دیاریکراوانە نەپارێزراوە.',
+'listusers' => 'لیستی بەکارھێنەران',
+'listusers-editsonly' => 'تەنھا ئەو بەکارھێنەرانە نیشان بدە کە دەستکارییان کردووە',
+'listusers-creationsort' => 'ڕیز کردن بە پێی ڕێکەوتی دروست کردن',
+'usereditcount' => '$1 {{PLURAL:$1|دەستکاری|دەستکاری}}',
+'usercreated' => 'دروست کراو لە $2ی $1',
+'newpages' => 'پەڕە نوێکان',
+'newpages-username' => 'ناوی بەکارھێنەر:',
+'ancientpages' => 'کۆنترین پەڕەکان',
+'move' => 'گواستنەوە',
+'movethispage' => 'ئەم پەڕەیە بگوازەوە',
+'unusedimagestext' => 'تکایە ئاگادار بە کە لەوانەیە ماڵپەڕێک بە URLـی ڕاستەوەخۆ بەستەری دابێت بە پەڕگەیەک و هەر بۆیە لەوانەیە ئێستا لە وەک چالاک لێرەدا لیست‌کرابێت.',
+'unusedcategoriestext' => 'ئەم پەڕەی پۆلانە ھەن، ئەگەرچی ھیچ پەڕە یان پۆلێکی تر کەڵکیان لێ وەرناگرێ.',
+'notargettitle' => 'بێ مەبەست',
+'notargettext' => 'لاپەڕە یان بەکارهێنەرێکت دیاری نەکردوو تاکەە ئەو فەنکشێنە لەسەر بهێنیتە کار.',
+'nopagetitle' => 'چاودێری',
+'nopagetext' => 'لاپەڕەی مەبەست وا ڕاچاوت کردووە بوونی نییە.',
+'pager-newer-n' => '{{PLURAL:$1|یەکێکی نوێتر|$1ی نوێتر}}',
+'pager-older-n' => '{{PLURAL:$1|یەکێک کۆنتر|$1ی کۆنتر}}',
+'suppress' => 'چاودێری',
+
+# Book sources
+'booksources' => 'سەرچاوەکانی کتێب',
+'booksources-search-legend' => 'بۆ سەرچاوەی کتێب بگەڕێ',
+'booksources-go' => 'بڕۆ',
+'booksources-text' => 'لە خوارەوە لیستێک لە بەستەر بۆ ماڵپەڕهایەک کە کتێبی نوێ و بەکارهێنراو دەفرۆشێت و لەوانەیە لەوێ زانیاریی زیاترت دەست‌کەوێت سەبارەت بەو کتێبانەی لە دووی دەگەڕیت:',
+'booksources-invalid-isbn' => 'ISBN دراو لەوە ناچی بەکار بێت، سەرنج بدە لە کاتی کۆپی کردن لە سەرچاوە تووشی هەڵە نوبوبێت.',
+
+# Special:Log
+'specialloguserlabel' => 'بەکارھێنەر:',
+'speciallogtitlelabel' => 'ناونیشان:',
+'log' => 'لۆگەکان',
+'all-logs-page' => 'ھەموو لۆگە گشتییەکان',
+'alllogstext' => 'پیشاندانی تێکەڵ‌کراوی هەموو لۆگەکانی بەردەستی {{SITENAME}}.
+بۆ وردبوونەوەی زیاتر دەتوانی جۆری لۆگ، ناوی بەکارهێنەر یا لاپەڕە گۆراوەکان هەڵبژێریت (هەستیار بە گەورە و بچووکی پیتەکان).',
+'logempty' => 'هیچ بابەتێکی هاوتا لە لۆگەکاندا نەدۆزرایەوە.',
+'log-title-wildcard' => 'گەڕانی ئەو سەرناوانە بەم دەقەوە دەست پێدەکەن',
+
+# Special:AllPages
+'allpages' => 'ھەموو پەڕەکان',
+'alphaindexline' => '$1 تا $2',
+'nextpage' => 'پەڕەی پاشەوە ($1)',
+'prevpage' => 'پەڕەی پێشەوە ($1)',
+'allpagesfrom' => 'بینینی پەڕەکان بە دەست پێ کردن لە:',
+'allpagesto' => 'بینینی پەڕەکان بە دوایی ھاتن بە:',
+'allarticles' => 'ھەمووی وتارەکان',
+'allinnamespace' => 'ھەموو پەڕەکان (بۆشایی-ناوی $1)',
+'allnotinnamespace' => 'ھەموو پەڕەکان (ئەوانەی لە بۆشایی-ناوی $1دا نین)',
+'allpagesprev' => 'پێش',
+'allpagesnext' => 'پاش',
+'allpagessubmit' => 'بڕۆ',
+'allpagesprefix' => 'نیشاندانی پەڕەکان بە پێشگری:',
+'allpagesbadtitle' => 'سەردێڕی لاپەڕە گونجاو نەبوو یان پێشگڕێکی بەینی‌زمانی یان بەینی‌ویکی هەبوو.
+لەوانەیە یەک یان زیاتر پیتی نەگونجاو بۆ سەردێڕی لەخۆ گرتبێ.',
+'allpages-bad-ns' => '{{SITENAME}} ناوبۆشایی نیە "$1".',
+
+# Special:Categories
+'categories' => 'پۆلەكان',
+'categoriespagetext' => 'ئەم {{PLURAL:$1|پۆلە پەڕە یان پەڕگەی|پۆلانە پەڕە یان پەڕگەیان}} لەخۆگرتە.<br />
+[[Special:UnusedCategories|پۆلە بەکارنەھێنراوەکان]] لێرەدا نیشان نەدراون.<br />
+ھەروا دەتوانی [[Special:WantedCategories|پۆلە خوازراوەکان]] ببینی.',
+'categoriesfrom' => 'پیشان‌دانی هاوپۆلەکان بە دەست‌پێ‌کردن لە :',
+'special-categories-sort-count' => 'ڕیز کردن بە پێی ژمارە',
+'special-categories-sort-abc' => 'ڕیز کردن بە پێی ئەلفابێت',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'بەشدارییە سڕاوەکان',
+'deletedcontributions-title' => 'هاوبەشییەکانی سڕاوەی بەکارهێنەر',
+'sp-deletedcontributions-contribs' => 'بەشدارییەکان',
+
+# Special:LinkSearch
+'linksearch' => 'بەستەرە دەرەکییەکان',
+'linksearch-pat' => 'گەڕان بۆ نواندن:',
+'linksearch-ns' => 'بۆشاییی ناو:',
+'linksearch-ok' => 'گەڕان',
+'linksearch-line' => '$1 بەستەرپێ‌دراو لە $2',
+
+# Special:ListUsers
+'listusersfrom' => 'نیشاندانی بەکارھێنەران بە دست پێکردن لە:',
+'listusers-submit' => 'نیشاندان',
+'listusers-noresult' => 'ھیچ بەکارھێنەرێک نەدۆزرایەوە.',
+'listusers-blocked' => '(بەربەست‌کراو)',
+
+# Special:ActiveUsers
+'activeusers' => 'لیستی بەکارھێنەرە چالاکەکان',
+'activeusers-count' => '$1 گۆڕانکاری لە دوایین {{PLURAL:$3|ڕۆژدا|$3 ڕۆژدا}}',
+'activeusers-from' => 'نیشاندانی بەکارھێنەران بە دست پێکردن لە:',
+'activeusers-hidebots' => 'بۆتەکان بشارەوە',
+'activeusers-noresult' => 'هیچ بەکارهێنەرێک نەدۆزرایەوە',
+
+# Special:Log/newusers
+'newuserlogpage' => 'لۆگی دروست کردنی بەکارھێنەر',
+'newuserlogpagetext' => 'ئەمە لۆگێکی درووست‌کردنی بەکارهێنەرە.',
+'newuserlog-byemail' => 'تێپەڕوشە بە ئیمەیل نێردرا.',
+'newuserlog-create-entry' => 'بەکارھێنەری نوێ',
+'newuserlog-create2-entry' => 'ھەژماری $1ی دروست کرد',
+'newuserlog-autocreate-entry' => 'هەژمارە بە جۆری خۆکار درووست‌کرا',
+
+# Special:ListGroupRights
+'listgrouprights' => 'مافەکانی گرووپە بەکارھێنەرییەکان',
+'listgrouprights-summary' => 'ئەمە لیستێکە لە گرووپەکانی بەکارهێنەر لەسەر ئەم ویکی‌یە، دەگەڵ مافەکانی دەست‌پێ‌گەیشتنی هاوپەیوەندیان.
+لێرەدا لەوانەیە [[{{MediaWiki:Listgrouprights-helppage}}|زانیاری زیاترت]] دەست‌کەوێت سەبارەت بە مافە تاکەکەسیەکان.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">مافی دراوە</span>
+* <span class="listgrouprights-granted">مافی سەندراوە</span>',
+'listgrouprights-group' => 'گرووپ',
+'listgrouprights-rights' => 'مافەکان',
+'listgrouprights-helppage' => 'Help:مافەکانی گرووپ',
+'listgrouprights-members' => '(لیستی ئەندامەکان)',
+'listgrouprights-addgroup' => 'زیادکردنی {{PLURAL:$2|گرووپ|گرووپ}}: $1',
+'listgrouprights-removegroup' => 'لابردنی {{PLURAL:$2|گرووپ|گرووپ}}: $1',
+'listgrouprights-addgroup-all' => 'زیادکردنی هەموو گرووپەکان',
+'listgrouprights-removegroup-all' => 'لابردنی هەموو گرووپەکان',
+'listgrouprights-addgroup-self' => 'زیادکردنی {{PLURAL:$2|گرووپ|گرووپه‌کان}} بۆ سه‌ر هه‌ژماری خۆ: $1',
+'listgrouprights-removegroup-self' => 'لابردنی {{PLURAL:$2|گرووپ|گرووپه‌کان}} له‌ سه‌ر هه‌ژماری خۆ: $1',
+'listgrouprights-addgroup-self-all' => 'زیادکردنی هەموو گرووپەکان بۆ سه‌ر هه‌ژماری خۆ',
+'listgrouprights-removegroup-self-all' => 'لابردنی هەموو گرووپەکان له‌ سه‌ر هه‌ژماری خۆ',
+
+# E-mail user
+'mailnologin' => 'ناونیشان بۆ ناردن نییه‌',
+'mailnologintext' => 'ده‌بێ له‌ [[Special:UserLogin|ژووره‌وه‌]] بیت و ناونیشانێکی بڕواپێ‌کراوی ئی‌مه‌یلت له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کان]] دیاری کردبێت تا بتوانی ئی‌مه‌یل بنێریت بۆ به‌کارهێنه‌رانی دیکه‌.',
+'emailuser' => 'ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە',
+'emailpage' => 'ئیمەیل بۆ بەکارھێنەر',
+'emailpagetext' => 'ده‌توانی له‌م فۆرمه‌ی خواره‌وه‌ که‌ڵک وه‌رگریت بۆ ناردنی په‌یامێکی ئی‌مه‌یل بنێریت بۆ ئه‌م به‌کارهێنه‌ره‌.
+ناونیشانی ئی‌مه‌یلت وا له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کانی به‌کارهێنه‌ر‌دا]] نووسیوته‌، بۆ ئه‌دره‌سی "له‌لایه‌ن" ئی‌مه‌یل نیشان ئه‌درێت، هه‌ر بۆیه‌ وه‌گر ده‌توانێ ڕاسته‌وخۆ وه‌ڵامت بداته‌وه‌.',
+'defemailsubject' => 'ئیمەیلی {{SITENAME}}',
+'noemailtitle' => 'هیچ ناونیشانێکی ئی‌مەیل نییە',
+'noemailtext' => 'ئەم بەکارهێنەرە ناونێشانێکی بڕوا پێکراوی ئی‌مەیلی دانەناوە.',
+'nowikiemailtitle' => 'ڕێگە بۆ ئی‌مەیل نەدراوە',
+'nowikiemailtext' => 'ئەم بەکارهێنەرە تایبەتمەندیی وەرنەگرتنی ئی‌مەیل لە بەکارهێنەرانی دیکەی هەلبژاردووە.',
+'email-legend' => 'ناردنی ئیمەیلێک بۆ بەکارهێنەرێکی دیکەی {{SITENAME}}',
+'emailfrom' => 'لە:',
+'emailto' => 'بۆ:',
+'emailsubject' => 'بابەت:',
+'emailmessage' => 'نامە:',
+'emailsend' => 'بینێرە',
+'emailccme' => 'کۆپییەک لە نامەکە بنێرە بۆ ئیمەیلەکەم.',
+'emailccsubject' => 'کۆپیی نامەکەت بۆ $1: $2',
+'emailsent' => 'نامەکەت ناردرا',
+'emailsenttext' => 'نامەکەت ناردرا',
+'emailuserfooter' => 'ئەم ئیمەیلە لە $1ەوە ناردرا بۆ $2 بە "Email user" لە {{SITENAME}}ەوە.',
+
+# Watchlist
+'watchlist' => 'لیستی چاودێڕییەکانی من',
+'mywatchlist' => 'لیستی چاودێرییەکانم',
+'watchlistfor' => "(بۆ '''$1''')",
+'nowatchlist' => 'لە لیستی چاودێڕییەکانتدا ھیچ نیە.',
+'watchlistanontext' => 'تکایە بۆ دیتن و دەستکاری بابەتەکانی لە ناو لیستی چاودێریەکەت‌دا $1.',
+'watchnologin' => 'لە ژوورەوە نیت.',
+'watchnologintext' => 'دەبی لە [[Special:UserLogin|ژوورەوە]] بیت بۆ ئەوەی بتوانی گۆڕانکاری بکەیت لە لیستی چاودێریەکەت‌دا.',
+'addedwatch' => 'بە لیستی چاودێڕییەکانت زێدە کرا',
+'addedwatchtext' => 'پەڕەی "[[:$1]]" خرایە سەر [[Special:Watchlist|لیستی چاودێرییەکەت]].
+گۆڕانکارییەکانی داھاتووی ئەم پەڕە و پەڕەی وتووێژەکەی، لەوێدا ڕیزدەکرێ و پەڕەکە لە [[Special:RecentChanges|لیستی دوایین گۆڕانکارییەکاندا]] ئەستوورکراو دەردەکەوێت بۆ ئەوەی ئاسانتر دەستکەوێت.',
+'removedwatch' => 'لە لیستی چاودێڕییەکانت لابرا',
+'removedwatchtext' => 'پەڕەی "[[:$1]]" لە [[Special:Watchlist|لیستی چاودێڕیەکانت]] لابرا.',
+'watch' => 'چاودێری بکە',
+'watchthispage' => 'چاودێڕیی ئەم پەڕە بکە',
+'unwatch' => 'لابردنی چاودێری',
+'unwatchthispage' => 'ئیتر چاودێری مەکە',
+'notanarticle' => 'پەڕەی بێ ناوەڕۆک',
+'notvisiblerev' => 'پیاچوونەوە سڕاوەتەوە',
+'watchnochange' => 'لە کاتی دیاری کراو دا، بابەتە چاودێڕی کراوەکانت، دەستکاری نەکراون',
+'watchlist-details' => '{{PLURAL:$1|$1 پەڕە|$1 پەڕە}} لە لیستی چاودێڕیەکەت دایە، بێجگە پەڕەکانی لێدوان.',
+'wlheader-enotif' => '* ئەکرێ بە E-mail ئاگاداری بدەی',
+'wlheader-showupdated' => "* ‏ئەو پەڕانە کە لە پاش دواین سەردانت دەستکاری کراون بە '''ئەستوور''' نیشان دراون",
+'watchmethod-recent' => 'سەرنج‌دانی دوایین دەستکاریەکان بۆ لاپەڕە چاودێری‌کراوەکان',
+'watchmethod-list' => 'سەرنج‌دانی لاپەڕە چاودێری‌کراوەکان بۆ دوایین دەستکاریەکان',
+'watchlistcontains' => 'لیستی چاودێڕییەکانت $1 {{PLURAL:$1|پەڕە|پەڕە}}ی تێدایە.',
+'iteminvalidname' => "ھەڵە لەگەڵ بابەتی '$1'، ناوی نادروست...",
+'wlnote' => "خوارەوە {{PLURAL:$1|دوایین گۆڕانکاریە|دوایین '''$1''' گۆڕانکارییەکانن}} لە دواین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}} دا.",
+'wlshowlast' => 'نیشان دانی دوایین $1 کاتژمێری، $2 ڕۆژ لە $3',
+'watchlist-options' => 'ھەڵبژاردەکانی لیستی چاودێڕییەکان',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'چاودێری...',
+'unwatching' => 'لابردنی چاودێری...',
+
+'enotif_mailer' => 'سیستەمی ئاگاداری بە ئی‌مەیلی {{SITENAME}}',
+'enotif_reset' => 'ھەمووی پەڕەکان وەک بینراو دیاری بکە',
+'enotif_newpagetext' => 'ئەمە پەڕەیەکی تازەیە.',
+'enotif_impersonal_salutation' => 'بەکارهێنەری {{SITENAME}}',
+'changed' => 'گۆڕدراو',
+'created' => 'دروستکراو',
+'enotif_subject' => '$PAGETITLE ـی لاپەڕەی {{SITENAME}} لە لایەن $PAGEEDITOR $CHANGEDORCREATED',
+'enotif_lastvisited' => 'بۆ دیتنی هەموو گۆرانکارییەکانی پاش دوایین چاوپێکەوتنت $1 ببینە.',
+'enotif_lastdiff' => 'بۆ دیتنی ئەم گۆڕانە $1 ببینە.',
+'enotif_anon_editor' => 'بەکارهێنەری نەناسراو $1',
+'enotif_body' => '$WATCHINGUSERNAMEی بەڕێز،
+پەڕەی $PAGETITLE لە {{SITENAME}} دا لە ڕێکەوتی $PAGEEDITDATE بە دەستی $PAGEEDITOR $CHANGEDORCREATEDە، سەردانی $PAGETITLE_URL بکە بۆ وەشانی ھەنووکەی ئەو پەڕە.
+
+$NEWPAGE
+
+پوختەی دەستکارییەکەی: $PAGESUMMARY $PAGEMINOREDIT
+
+پەیوەندی لەگەڵ دەستکاریکەر:
+ئیمەیڵ: $PAGEEDITOR_EMAIL
+ویکی: $PAGEEDITOR_WIKI
+
+تا سەردانی ئەو پەڕە نەکەی، ئەگەر گۆڕانکارییەکی تری تێدا ڕووی دا خەبەر پێ نادرێ.
+هەروا دەتوانی نیشانەکانی ئاگاداری بۆ هەموو لاپەڕەکانی ناو لیستی چاودێریت ببیتەوەنووک
+
+
+ بە سوپاسەوە، سیستەمی ڕاگەیاندنی {{SITENAME}}
+--
+بۆ گۆڕینی تەنزیماتی لیستی چاودێرییەکانت، سەربدە لە
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+بۆ لابردنی پەڕەکە لە لیستی چاودێرییەکانت، سەربدە لە
+$UNWATCHURL
+
+رێنوێنیی زۆرتر و دەربڕینی بیروڕا:
+{{fullurl:{{MediaWiki:Helppage}}}}',
+
+# Delete
+'deletepage' => 'پەڕە بسڕەوەو',
+'confirm' => 'پشتدار بکەرەوە',
+'excontent' => "ناوەڕۆک ئەمە بو: '$1'",
+'excontentauthor' => "ناوەڕۆک ئەمە بو: '$1'(و تەنھا بەشداریکەر '[[Special:Contributions/$2|$2]]' بوو)",
+'exbeforeblank' => "ناوەڕۆک بەر لە بەتاڵ کردنەوە ئەمە بوو: '$1'",
+'exblank' => 'پەڕە خاڵی بوو',
+'delete-confirm' => 'سڕینەوەی "$1"',
+'delete-backlink' => '→ $1',
+'delete-legend' => 'سڕینەوە',
+'historywarning' => "'''ئاگاداری:''' ئەم لاپەڕە کە دەتەوێت بیسڕیتەوە پێشتر $1 {{PLURAL:$1|revision|پێداچوونەوەی }} لەسەر کراوە.",
+'confirmdeletetext' => 'تۆ خەریکی پەڕەیەک بە هەموو مێژووەکەیەوە دەسڕیتەو.
+تکایە دووپاتی بکەوە کە دەتەوێت ئەم کارە بکەی، لە ئاکامەکەی تێدەگەی، و ئەم کارە بە پێی [[{{MediaWiki:Policy-url}}|سیاسەتنامە]] ئەنجام ئەدەی.',
+'actioncomplete' => 'کردەوە بە ئاکام گەیشت',
+'actionfailed' => 'کردارەکە سەرنەکەوت',
+'deletedtext' => '"<nowiki>$1</nowiki>" سڕایەوە.
+سەیری $2 بکە بۆ تۆمارێکی دوایین سڕینەوەکان.',
+'deletedarticle' => '«[[$1]]» سڕایەوە',
+'suppressedarticle' => '"[[$1]]" بەرگری‌کراو',
+'dellogpage' => 'لۆگی سڕینەوە',
+'dellogpagetext' => 'ئەوەی خوارەوە لیستێكە لە دوایین سڕینەوەکان',
+'deletionlog' => 'لۆگی سڕینەوە',
+'reverted' => 'گەڕێندراوە بۆ پێداچوونەوەی پێشووتر',
+'deletecomment' => 'هۆکار:',
+'deleteotherreason' => 'ھۆکاری دیکە:',
+'deletereasonotherlist' => 'ھۆکاری دیکە',
+'deletereason-dropdown' => '* ھۆکاری سڕینەوە
+** داواکاریی نووسەر
+** تێکدانی مافی لەبەرگرتنەوە
+** خراپکاری',
+'delete-edit-reasonlist' => 'دەستکاری کردنی ھۆکارەکانی سڕینەوە',
+'delete-toobig' => 'ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.
+بۆ بەرگری لە خراپ‌بوونی چاوەڕوان نەکراوی {{SITENAME}}، سڕینەوەی لاپەڕەی وا بەربەست‌کراوە.',
+'delete-warning-toobig' => 'ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.
+سڕینەوی ئەوە لە وانەیە کارەکانی بنکەدراوی {{SITENAME}} تووشی کێشە بکات؛
+دوورنواڕانە جێ‌بەجێی بکە.',
+
+# Rollback
+'rollback' => 'گەڕاندنەوەی دەستکارییەکان',
+'rollback_short' => 'گەڕاندنەوە',
+'rollbacklink' => 'گەڕاندنەوە',
+'rollbackfailed' => 'گەڕاندنەوە سەرکەوتوو نەبوو',
+'cantrollback' => 'دەستکاریەکان ناگەڕێندرێتەوە؛
+دوایین هاوبەش تەنها ڕێکخەری ئەم لاپەڕەیە.',
+'alreadyrolled' => 'دوایین گۆڕانکاریەکانی لەسەر [[:$1]] لە لایەن [[User:$2|$2]] ناگەڕێندرێنەوە ([[User talk:$2|وتووێژ]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])؛ کەسێکی دیکە لە پێش‌دا دەستکاری کردووە یان گەڕاندوویەتەوە.
+
+دوایین دەستکاری ئەم لاپەڕە [[User:$3|$3]] کردوویە ([[User talk:$3|وتووێژ]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "پوختەی دەستکاری \"''\$1''\" بوو.",
+'revertpage' => 'گەڕاندنەوەی دەستکارییەکان لەلایەن [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]]) بۆ دوایین دەستکاریی [[User:$1|$1]]',
+'rollback-success' => 'دەستکارییەکانی $1 وەرگێرایەوە؛<br />
+گۆڕدرا بۆ دوایین دەستکاریی $2.',
+'sessionfailure' => 'لەوەدەچی بەشی چوونەژوورەوەت تووشی کێشە بووبێت.
+ئەم کردەوە بۆ بەرگری لە ئاڵۆزی و مەترسی دزینی دراوەکان هەڵوەشێندراوە.
+تکایە دوکمەی "back" لێدە و ئەو لاپەڕەی لێیەوە هاتوویتە ئێرە، نوێ بکەوە، ئینجا دیسان تاقی‌بکەوە.',
+
+# Protect
+'protectlogpage' => 'لۆگی پاراستن',
+'protectlogtext' => 'لەخوارەوە لیستێک لە لاپەڕە داخراوەکان و کراوەکان دەبینی.
+بۆ دیتنی لیستی ئەو لاپەرانەی ئێستە پاراستنیان لە ئارادایە [[Special:ProtectedPages|لیستی لاپەڕە پارێزراوەکان ]] ببینە.',
+'protectedarticle' => 'پارێزراو "[[$1]]"',
+'modifiedarticleprotection' => 'ئاستی پاراستنی "[[$1]]"ی گۆڕا',
+'unprotectedarticle' => '"[[$1]]" لە حاڵی ئێستا دا نەپازراوە',
+'movedarticleprotection' => 'ڕێککارییەکانی پاراستن لە "[[$2]]" گوازرایەوە بۆ "[[$1]]"',
+'protect-title' => 'گۆڕینی ئاستی پاراستنی "$1"',
+'prot_1movedto2' => '[[$1]] گوازراوەتەوە بۆ [[$2]]',
+'protect-backlink' => '← $1',
+'protect-legend' => 'پاراستن تەیید بکە',
+'protectcomment' => 'هۆکار:',
+'protectexpiry' => 'ھەتا:',
+'protect_expiry_invalid' => 'کاتی بەسەرچوون نادروستە:',
+'protect_expiry_old' => 'کاتی بەسەرچوون ڕابردووە',
+'protect-text' => "تۆ دەتوانی لێرە ئاستی پاراستنی لاپەڕەکە ببینی وە بیگۆڕی '''<nowiki>$1</nowiki>''' .",
+'protect-locked-blocked' => "ناتوانیت ئاستی پاراستن بگۆڕیت کاتێ بەستراوە.
+ئەوە هەڵبژاردەکانی ئێستای ڕێکخستنی بۆ لاپەڕە '''$1''':",
+'protect-locked-dblock' => "ئاستەکانی پاراستن ناگۆڕدرێن کاتێ بنکەدراوی چالاک داخرابێت.
+ئەوە هەڵبژاردەکانی ئێستای ڕێکخستنی بۆ لاپەڕە '''$1''':",
+'protect-locked-access' => "ھەژمارەکەت ڕێگەی ئەوەی پێ نەدراوە کە بتوانێت ئاستی پاراستنی پەڕە بگۆڕێت.
+ڕێککارییەکانی ئێستای پەڕەی '''$1''' ئەمەتە:",
+'protect-cascadeon' => 'ئەم لاپەڕە لە حاڵی ئێستا دا پارێزراوە چونکا لە نێو ئەم {{PLURAL:$1|لاپەڕ(ان)ە دایە کە }} حاڵەتی پاراستنی تاڤگەیی ئەو(ان) ھەڵکراوە
+
+تۆ دەتوانی ئاستی پاراستنی ئەم لاپەڕە بگۆڕی، بەڵام ئەم گۆڕانە ھیچ کاریگەر نابێت لە سەر پاراستنی تاڤگەیی',
+'protect-default' => 'بە ھەموو بەکارھێنەران ڕێگە بدە',
+'protect-fallback' => 'پێویستی بە ئیزنی «$1» ھەیە',
+'protect-level-autoconfirmed' => 'بەکارھێنەرانی نوێ و تۆمارنەکراو ئاستەنگ بکە',
+'protect-level-sysop' => 'تەنھا بەڕێوەبەران',
+'protect-summary-cascade' => 'تاڤگەیی',
+'protect-expiring' => 'تا ڕێکەوتی $1 (UTC)',
+'protect-expiry-indefinite' => 'زۆر\\نەناسراو',
+'protect-cascade' => 'لاپەڕەکانی نێو ئەم لاپەتە بپارێزە (پاراستنی تاڤگەیی)',
+'protect-cantedit' => 'ناتوانی ئاستی پاراستنی ئەم پەڕە بگۆڕی، چونکوو تۆ ئیجازەی ئەم کارەت نیە.',
+'protect-othertime' => 'کاتی دیکە:',
+'protect-othertime-op' => 'کاتی دیکە',
+'protect-existing-expiry' => 'ئەم کاتی بەسەرچوونی ماوە کە هەیە: $3، $2',
+'protect-otherreason' => 'هۆکاری زیادکراو\\دیکە:',
+'protect-otherreason-op' => 'ھۆکاری دیکە',
+'protect-dropdown' => '*ھۆکارە باوەکانی پاراستن
+** خراپکاریی لەڕادەبەدەر
+** سپامی لەڕادەبەدەر
+** شەڕە دەستکاریی بێ‌سوود
+** پەڕەی زۆربینەردار',
+'protect-edit-reasonlist' => 'دەستکاری کردنی ھۆکارەکانی پاراستن',
+'protect-expiry-options' => '١ کاتژمێر:1 hour,١ ڕۆژ:1 day,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بی‌بڕانەوە:infinite',
+'restriction-type' => 'ئیزن:',
+'restriction-level' => 'ئاستی سنووردارکردن:',
+'minimum-size' => 'کەمترین قەبارە',
+'maximum-size' => 'زۆرترین قەبارە:',
+'pagesize' => '(بایت)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'دەستکاری',
+'restriction-move' => 'گواستنەوە',
+'restriction-create' => 'دروستکردن',
+'restriction-upload' => 'بارکردن',
+
+# Restriction levels
+'restriction-level-sysop' => 'تەواو پارێزراو',
+'restriction-level-autoconfirmed' => 'نیوە پارێزراو',
+'restriction-level-all' => 'هەر ئاستێک',
+
+# Undelete
+'undelete' => 'دیتنی لاپەڕە سڕاوەکان',
+'undeletepage' => 'دیتنی و گەڕاندنەوەی لاپەڕە سڕاوەکان',
+'undeletepagetitle' => "'''ئەمە تێکەڵ‌کراوەی پێداچوونەوە سڕدراوەکانی [[:$1|$1]]'''.",
+'viewdeletedpage' => 'دیتنی لاپەڕە سڕاوەکان',
+'undeletepagetext' => 'ئەم {{PLURAL:$1|سڕاوەتەوە|$1 لاپەڕە سڕاونەتەوە}} بەڵام لەبەر ئەوەی لە ئەرشیڤ‌دا هەن هێشتا دەتوانی بیانهێنیتەوە.
+ئەرشیڤ چەن‌وەخت جارێ لە کاتی دیاری‌کراودا خاوێن‌دەکرێتەوە.',
+'undelete-fieldset-title' => 'هێنانەوەی پێداچوونەوەکان',
+'undeleteextrahelp' => "بۆ هێنانەوەی هەموو مێژووی لاپەڕەیەک، تەواوی چوارچێوەکانی نیشان‌کردن بەتاڵ بهێڵەوە و کرتە بکە سەر '''''هێنانەوە'''''.
+بۆ ئەنجامی گەڕانەوەیەکی هەڵبژاردوو، چوارچێوەی بەرامبەر ئەو پێداچوونەوی دەتەوێ بیهێنیتەوە، نیشان‌بکە و کرتە بکە سەر '''''هێنانەوە'''''.
+کرتەکردن سەر '''''بردنەوە نووک''''' ئەبێتە هۆی سڕینەوەی شوێنی بۆچوونەکان و بەتاڵ بوونەوەی چوارچێوەکان.",
+'undeleterevisions' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}} ئەرشیڤ‌کرا',
+'undeletehistory' => 'ئەگەر لاپەڕەیەک بهێنیتەوە، هەموو پێداچوونەوەکانی دەگەڕێنەوە بۆ لاپەڕەی مێژوو.
+ئەگەر لە کاتی سڕاوەبوون، لاپەڕەیەک هەر بەو ناوە درووست‌کرابێت، پێداچوونەوە هێنراوەکان لە لاپەڕەی مێژووی کۆن‌دا نیشان ئەدرێت.',
+'undeletehistorynoadmin' => 'ئەم لاپەڕە سڕاوەتەوە.
+لەو پۆختەی لە خوارەوە دەیبینی، هۆکاری سڕینەوە و هەروا وردەکاریەکان سەبارە بەو کەسەی پێش سڕینەوە دەستکاری لاپەڕەکەی کردووە، دەست‌دەکەوێ.
+دەقی ڕاستی ئەم پێداچوونەوە سڕاوانە تەنها بۆ بەڕێوبەران دەست‌پێ‌گەیشتنی هەیە.',
+'undelete-revision' => 'پێداچوونەوەی سڕاوەی $1 (لە $4، $5) لەلایەن $3:',
+'undeleterevision-missing' => 'پێداچوونەوەی نادیار یا نەناسراو.
+لەوانەیە خەریکی لە بەستەرێکی خراپ کەڵک وەر ئەگری ئا لەوانەیە پێداچوونەوەکە لە ئەرشیڤ لابرابێت.',
+'undelete-nodiff' => 'هیچ پێداچوونەوەیەکی پێشو نەدۆزرایەوە.',
+'undeletebtn' => 'هێنانەوە',
+'undeletelink' => 'بینین/گەڕاندنەوە',
+'undeleteviewlink' => 'دیتن',
+'undeletereset' => 'بردنەوە نووک',
+'undeleteinvert' => 'هەڵگێڕانەوەی هەڵبژاردن',
+'undeletecomment' => 'هۆکار:',
+'undeletedarticle' => '«[[$1]]» گێڕایەوە',
+'undeletedrevisions' => '{{PLURAL:$1|1 پێداچوونەوە|$1 پێداچوونەوە}} هێنرایەوە',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 پێداچوونەوە|$1 پێداچوونەوە}} و {{PLURAL:$2|1 پەڕگە|$2 پەڕگە}} هێنرایەوە',
+'undeletedfiles' => '{{PLURAL:$1|1 پەڕگە|$1 پەڕگە}} هێنرایەوه',
+'cannotundelete' => 'لە سڕین گەڕانەوە سەرکەوتوو نەبوو؛
+کەسێکی دیکە پێش تۆ گەڕاندوویەتەوە.',
+'undeletedpage' => "'''$1 هێنراوەتەوە'''
+
+بۆ دیتنی پێشینەی دوایین سڕینەوەکان و هێنانەوەکان سەرنجی [[Special:Log/delete|لۆگی سڕینەوە]] بدە.",
+'undelete-header' => 'بۆ دیتنی ئەو لاپەڕانەی لەم داییانەدا سڕاونەتەوە چاو لە [[Special:Log/delete|لۆگی سڕینەوە]] بکە.',
+'undelete-search-box' => 'گەڕان بۆ لاپەڕە سڕاوەکان',
+'undelete-search-prefix' => 'نیشان‌دانی ئەو لاپەڕانەی دەستپێکیان ئەمەیە:',
+'undelete-search-submit' => 'گەڕان',
+'undelete-no-results' => 'لە ئەرشیڤی سڕاوەکانی لاپەڕەیەکی هاوتا نەدۆزرایەوە.',
+'undelete-cleanup-error' => 'هەڵە لە سڕینەوەی ئەرشیڤی بەکەڵک نەهاتووی پەڕگە "$1".',
+'undelete-missing-filearchive' => 'ناکرێ ئەرشیڤی پەڕگە بە پێناسەی $1 بهێنیتەوە لەبەر ئەوەی لە ناو بنکەی دراوە‌دا نییە.
+لەوانەیە لە‌پێش‌دا هێنرابێتەوە.',
+'undelete-error-short' => 'هەڵە لە گەڕاندنەوەی سڕینەوەی پەڕگە: $1',
+'undelete-error-long' => 'هەڵەیەک لە کاتی گەڕاندنەوەی سڕینەوەی پەڕگە ڕووی‌دا:
+
+$1',
+'undelete-show-file-confirm' => 'ئایا ئەرخەیانی کە دەتەوێ پێداچوونەوە سراوەکەی پەڕگەی "<nowiki>$1</nowiki>" لە $2 لە $3 ببینی؟',
+'undelete-show-file-submit' => 'بەڵێ',
+
+# Namespace form on various pages
+'namespace' => 'بۆشاییی ناو',
+'invert' => 'ھەڵبژاردەکان پێچەوانە بکە',
+'blanknamespace' => '(سەرەکی)',
+
+# Contributions
+'contributions' => 'بەشدارییەکانی بەکارھێنەر',
+'contributions-title' => 'بەشدارییەکانی بەکارھێنەر $1',
+'mycontris' => 'بەشدارییەکانم',
+'contribsub2' => 'بۆ $1 ($2)',
+'nocontribs' => 'هیچ گۆڕانکاریەکی هاوتای ئەم پێوەرانە نودۆزرایەوە',
+'uctop' => '(سەر)',
+'month' => 'لە مانگی (و پێشترەوە):',
+'year' => 'لە ساڵی (و پێشترەوە):',
+
+'sp-contributions-newbies' => 'تەنھا بەشدارییەکانی بەکارھێنەرە تازەکان نیشان بدە',
+'sp-contributions-newbies-sub' => 'لە بەکارھێنەرە تازەکانەوە',
+'sp-contributions-newbies-title' => 'هاوبەشیەکانی بەکارهێنەر بۆ هەژمارە نوێکان',
+'sp-contributions-blocklog' => 'لۆگی بەربەستن',
+'sp-contributions-deleted' => 'بەشدارییە سڕاوەکان',
+'sp-contributions-logs' => 'تۆمارەکان',
+'sp-contributions-talk' => 'لێدوان',
+'sp-contributions-userrights' => 'بەڕێوبەرایەتی مافەکانی بەکارهێنەر',
+'sp-contributions-search' => 'گەڕین بۆ بەشدارییەکان',
+'sp-contributions-username' => 'ناونیشانی ئای-پی یا ناوی بەکارهێنەری:',
+'sp-contributions-submit' => 'بگەڕە',
+
+# What links here
+'whatlinkshere' => 'بەسراوەکان بە ئێرەوە',
+'whatlinkshere-title' => 'ئەو پەڕانەی بەستەرکراون بۆ "$1"',
+'whatlinkshere-page' => 'پەڕە:',
+'linkshere' => "ئەم پەڕانە بەستەریان ھەیە بۆ '''[[:$1]]''':",
+'nolinkshere' => "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]'''.",
+'nolinkshere-ns' => "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]''' لە بۆشایی‌ناوی هەڵبژێردراو.",
+'isredirect' => 'پەڕە ڕەوان بکە',
+'istemplate' => 'بەکارھێنراو',
+'isimage' => 'بەستەری وێنە',
+'whatlinkshere-prev' => '{{PLURAL:$1|پێشتر|$1 ی پێشتر}}',
+'whatlinkshere-next' => '{{PLURAL:$1|دیکە|$1 ی دیکە}}',
+'whatlinkshere-links' => '← بەستەرەکان',
+'whatlinkshere-hideredirs' => 'ڕەوانەکراوەکان $1',
+'whatlinkshere-hidetrans' => 'ترانسکلوژنه‌کانی $1',
+'whatlinkshere-hidelinks' => '$1 بەستەر',
+'whatlinkshere-hideimages' => 'بەستەرەکانی وێنەی $1',
+'whatlinkshere-filters' => 'پاڵێوەرەکان',
+
+# Block/unblock
+'blockip' => 'بەربەستنی بەکارھێنەر',
+'blockip-legend' => 'بەربەست‌کردنی بەکارهێنەر',
+'blockiptext' => 'لەم فۆرمەی خوارەوە دەتوانی بۆ بەربەست‌کردنی دەست‌پێ‌گەیشتنی نووسین لە ناونیشانێکی ئای‌پی تایبەت یا ناوی بەکارهێنەریەک، کەڵک وەرگریت.
+ئەمە تەنها دەبێ بۆ بەرگری لە خراپکاری بەکاربێت و ڕێکەوتنی هەبێ دەگەڵ [[{{MediaWiki:Policy-url}}|سیاسەتەکان]].
+لە خوارەوە هۆکارێک بە ڕوونی بنووسە (بۆ نموونە بە وردی ئەو لاپەڕانە و خراپکاری تێدا کراوە وەک، وەک بەڵگە، بنووسە).',
+'ipaddress' => 'ناونیشانی IP:',
+'ipadressorusername' => 'ناونیشانی ئای‌پی یان ناوی‌ بەکارهێنەری:',
+'ipbexpiry' => 'بەسەرچوون:',
+'ipbreason' => 'هۆکار:',
+'ipbreasonotherlist' => 'هۆکاری تر',
+'ipbreason-dropdown' => '*هۆکارە هاوبەشەکانی بەربست‌کران
+**دانانی زانیاریی هەڵە
+**لابردنی ناوەڕۆکی لاپەڕەکان
+**بەستەر بۆ لاپەڕەی دەرەکی نەگونجاو
+**نووسینی قسەی بێ‌مانا و بێ‌سوود
+**هەڵسووکەوت یان وتاری هاندەر بۆ توندوتیژی
+**بەکارهێنانی چەن هەژمارە پێکەوە
+**ناوی بەکارهێنەریی نەگونجاو',
+'ipbanononly' => 'تەنها بەربەست‌کردنی بەکارهێنەرانی نەناسراو',
+'ipbcreateaccount' => 'بەرگری لە درووست‌کردنی هەژمارە',
+'ipbemailban' => 'بەرگری لە ئی‌مەیل ناردنی بەکارهێنەر',
+'ipbenableautoblock' => 'خۆکار بەربەست‌کردنی ئەو ناونیشانی‌ ئای‌پیە وا ئەم بەکار‌هێنەرە کەڵکی لێ‌وەرگرتووە و ئەو ئای‌پی‌یانەی دیکە وا لەوێوە هەوڵی دەستکاری ئەدەن.',
+'ipbsubmit' => 'بەربەست‌کردنی ئەم بەکارهێنەرە',
+'ipbother' => 'کاتی‌ دیکە:',
+'ipboptions' => '2 کاتژمێر:2 hours,1 ڕۆژ:1 day,3 ڕۆژ:3 days,1 ھەفتە:1 week,2 ھەفتە:2 weeks,1 مانگ:1 month,3 مانگ:3 months,6 مانگ:6 months,1 ساڵ:1 year,بێ سنوور:infinite',
+'ipbotheroption' => 'دیکە',
+'ipbotherreason' => 'هۆکاری زیادکراو\\دیکە:',
+'ipbhidename' => 'شاردنەوەی ناوی‌ بەکارهێنەر لە دەستکاری و لیستەکان',
+'ipbwatchuser' => 'دیتنی لاپەڕەی بەکارهێنەر و وتووێژی ئەم بەکارهێنەرە',
+'ipballowusertalk' => 'ڕێگەدان بە ئەم بەکارهێنەرە کە لاپەڕەی وتووێژی خۆی دەستکاری بکات، کاتێ بەربەست‌کراوە',
+'ipb-change-block' => 'دیسان بەربەست‌کردنەوەی ئەم بەکارهێنەرە بەم هەڵبژاردانە',
+'badipaddress' => 'ناونیشانی ئای‌پی نەگونجاو',
+'blockipsuccesssub' => 'بەربەست کردن سەرکەوتوو بوو',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] بەربەست‌کراوە.<br />
+بۆ دیتنی بەربەست‌کراوەکان، چاو لە [[Special:IPBlockList|لیستی بەربەستی ئای‌پی]] بکە.',
+'ipb-edit-dropdown' => 'دەستکاری هۆکارەکانی بەربەست',
+'ipb-unblock-addr' => 'لە بەربەست‌دەرهێنانی $1',
+'ipb-unblock' => 'لە بەربەست‌دەرهێنانی ناوی بەکارهێنەریەک یا ناونیشانێکی ئای‌پی',
+'ipb-blocklist-addr' => 'ئەو بەربەستانەی بۆ $1 هەیە',
+'ipb-blocklist' => 'دیتنی ئەو بەربەستانەی وا هەیە',
+'ipb-blocklist-contribs' => 'هاوبەشیەکان بۆ $1',
+'unblockip' => 'لە بەربەست‌دەرهێنانی بەکارهێنەر',
+'unblockiptext' => 'بۆ گەڕاندنەوەی دەست‌پی‌گەیشتنی نووسین بۆ ئەو دوایین ئای‌پی یان بەکارهێنەری بەربەست کراوە، لەو فۆرمەی خوارەوە کەڵک وەرگرە.',
+'ipusubmit' => 'لابردنی ئەم بەربەستە',
+'unblocked' => '[[User:$1|$1]] لە بەربەست دەرهێنرا',
+'unblocked-id' => 'بەربەستی $1 لابرا',
+'ipblocklist' => 'IP ئەدرەس و بەکارھێنەرە بەربەستراوەکان',
+'ipblocklist-legend' => 'دۆزینەوەی بەکارهێنەرێکی بەربەست‌کراو',
+'ipblocklist-username' => 'ناوی‌ بەکارهێنەری یان ناونیشانی ئای‌پی:',
+'ipblocklist-sh-userblocks' => '$1 بەربەستی هەژمارە',
+'ipblocklist-sh-tempblocks' => '$1 بەربەستی کاتی',
+'ipblocklist-sh-addressblocks' => '$1 بەربەستی تاکە ئای‌پی',
+'ipblocklist-submit' => 'گەڕان',
+'blocklistline' => '$1، $2 بەربەستی کرد $3 ($4)',
+'infiniteblock' => 'زۆر\\نەپێوراو',
+'expiringblock' => 'لە $2، $1 ماوەی بەسەر دەچێ',
+'anononlyblock' => 'تەنها بۆ چەن سات',
+'noautoblockblock' => 'بەربەستی خۆکار لەکار خسترا',
+'createaccountblock' => 'درووست‌کردنی هەژمارە بەربەست کرا',
+'emailblock' => 'ئی‌مەیل بەربەست‌کرا',
+'blocklist-nousertalk' => 'دەستکاری لاپەڕەی وتووێژی خۆ ناکرێت',
+'ipblocklist-empty' => 'لیستی بەربەستەکان بەتاڵە',
+'ipblocklist-no-results' => 'ئای‌پی ئەدرەس یان ناوی‌ بەکارهێنەری داواکراو بەربەست نەکراوە.',
+'blocklink' => 'بەربەستن',
+'unblocklink' => 'لابردنی بەرگری',
+'change-blocklink' => 'گۆڕینی بەرگری',
+'contribslink' => 'بەشداری',
+'autoblocker' => 'خۆکار بەربەست‌کراوە لەبەر ئەوەی ناونیشانی ئای‌پی تۆ لەم دواییانەدا لە لایەن "[[User:$1|$1]]" بەکار هاتووە.
+هۆکاری بەربەست‌کرانی $1 ئەمەیە: "$2"',
+'blocklogpage' => 'لۆگی بەربەستن',
+'blocklogentry' => '[[$1]] ئاستەنگ کرا بۆ ماوەی $2 $3',
+'reblock-logentry' => 'دۆخی ئاستەنگ کردنی [[$1]] بۆ گۆڕدرا بۆ ماوەی $2 $3',
+'blocklogtext' => 'ئەمە لۆگی کردەوەکانی بەربەست‌کران یا لابردنی بەربەستی بەکارهێنەرە.
+بەربەست‌کرانی خۆکاری ئای‌پی لەم لیستەدا نەهاتوون.
+بۆ دیتنی ئەو بەربەستانە ئێستە لە ئارادان چاو لە [[Special:IPBlockList|لیستی بەربەستی ئای‌پی]] بکە.',
+'unblocklogentry' => 'بەربەستنی "$1" بەتاڵ کرا',
+'block-log-flags-anononly' => 'تەنها بەکارهێنەرە نەناسراوەکان',
+'block-log-flags-nocreate' => 'دروستکردنی هەژمار ناچالاککراوە',
+'block-log-flags-noautoblock' => 'بەربست‌کردنی خۆکار لە کار خسترا',
+'block-log-flags-noemail' => 'ئی‌مەیل بەربەست‌کراوە',
+'block-log-flags-nousertalk' => 'دەستکاری لاپەڕەی وتووێژی خۆ ناکرێت',
+'block-log-flags-angry-autoblock' => 'بەربەستی خۆکاری پێشکەوتوو خستراوەتە کار',
+'block-log-flags-hiddenname' => 'شاردنەوەی ناوی‌بەکارهێنەری',
+'range_block_disabled' => 'تایبەتمەندی بەڕێوەبەر بۆ بەربەست‌کردنی زنجیرە لە کارخستراوە.',
+'ipb_expiry_invalid' => 'کاتی بەسەرچوونی نەگونجاو.',
+'ipb_expiry_temp' => 'بەربەستی ناوی‌بەکارهێنەرە شاراوەکان دەبێ پایەدار بێت.',
+'ipb_hide_invalid' => 'بەرگری لەم هەژمارە ناکرێت، لەوانەیە دەستکاری زۆری هەبێت.',
+'ipb_already_blocked' => '"$1" لە پێش‌دا بەربەست‌‌کراوە',
+'ipb-needreblock' => '== لەپێش‌دا بەربەست‌کراو ==
+"$1" لە پێش‌دا بەربەست‌‌کراوە.
+ئایا دەتەو‌ێ هەڵبژاردەکانی بگۆڕیت؟',
+'ipb_cant_unblock' => 'پێناسەی بەربەست‌کردنی $1 نەدۆزرایەوە.
+لەوانەیە لە بەربەستی لابرابێت.',
+'ipb_blocked_as_range' => 'هەڵە: ئای‌پی $1 ڕاستەوخۆ بەربەست نەکراوە بۆیە ناکڕێت لە بەربەست لای‌ بەیت.
+ئەوە وەک بەشێک لە زنجیرە ئای‌پیی $2 بەربەست کراوە و هەر بەو شێوە دەکرێ لە بەربەست دەرچێ.',
+'ip_range_invalid' => 'زنجیرە ئای‌پی نەگونجاو.',
+'blockme' => 'بەربەست‌کردنی من',
+'proxyblocker' => 'بەربەست‌کەری پرۆکسی',
+'proxyblocker-disabled' => 'ئەم فەنکشێنە لەکار خستراوە.',
+'proxyblockreason' => 'ناونیشانی ئای‌پی تۆ بەربەست‌کراوە لەبەر ئەوەی پرۆکسیەکی کراوەیە.
+تکایە پەیوەندی بکە بە دابینکەری خزمەتی ئینتەرنەتی خۆت یان پاڵپشتی تەکنیکی و ئاگادریان کەوە لەو کێشە ئەمنیە گرینگە.',
+'proxyblocksuccess' => 'جێ‌بەجێ‌کرا.',
+'sorbsreason' => 'ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.',
+'sorbs_create_account_reason' => 'ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.
+بۆیە ناتوانی هەژمارە درووست‌بکەی.',
+'cant-block-while-blocked' => 'کاتێ خۆت بەربەست‌کراوی، ناتوانی بەکارهێنەرانی دیکە بەربەست بکەی.',
+
+# Developer tools
+'lockdb' => 'داخستنی بنکەدراوە',
+'unlockdb' => 'کردنەوەی بنکەدراوە',
+'lockdbtext' => 'داخستنی بنکەدراوە ئەبێتە هۆی ڕاگرتنی توانای هەموو بەکارهێنەران بۆ دەستکاری لاپەڕەکان، گۆڕانی هەڵبژاردەکانیان، دەستکاری لیستی چاودێرییەکانیان و هەموو ئەموو ئەو شتانە وا پێویستی بە گۆرانکاری لە بنکەدراوە هەیە.
+تکایە ئەرخەیان بە ئەمە هەر ئەوەیە کە دەتەوێ بیکەی و دوای چاکسازیەکەت لەیادت بێ کە بنکەدراوەکە بکەیتەوە.',
+'unlockdbtext' => 'کردنەوەی بنکەدراوە ئەبێتە هۆی گەڕاندنەوەی توانای هەموو بەکارهێنەران بۆ دەستکاری لاپەڕەکان، گۆڕانی هەڵبژاردەکانیان، دەستکاری لیستی چاودێرییەکانیان و هەموو ئەموو ئەو شتانە وا پێویستی بە گۆرانکاری لە بنکەدراوە هەیە.
+تکایە ئەرخەیان بە ئەمە هەر ئەوەیە کە دەتەوێ بیکەی.',
+'lockconfirm' => 'بەڵێ، ئەرخەیانم دەمەوێ بنکەدراو داخەم.',
+'unlockconfirm' => 'بەڵێ، ئەرخەیانم دەمەوێ بنکەدراو بکەمەوە.',
+'lockbtn' => 'داخستنی بنکەدراو',
+'unlockbtn' => 'کردنەوەی بنکەدراو',
+'locknoconfirm' => 'چوارچێوەی ئەرخەیانیت نیشان‌ نەکرد.',
+'lockdbsuccesssub' => 'داخستنی بنکەدراو بەسەرکەوتوویی جێبەجێ کرا',
+'unlockdbsuccesssub' => 'بنکەدراو کرایەوە',
+'lockdbsuccesstext' => 'بنکەدراو داخرا.<br />
+لەیادت بێ دوای تەواوبوونی چاکسازی [[Special:UnlockDB|بنکەدراو بکەیتەوە]].',
+'unlockdbsuccesstext' => 'بنکەدراو کرایەوە.',
+'lockfilenotwritable' => 'پەڕگەی داخستنی بنکەدراو سەرنووس ناکرێت.
+بۆ کردنەوە یا داخستنی بنکەدراو، پێویستە ڕاژەکار بتوانێ ئەو پەڕگە سەرنووس بکات.',
+'databasenotlocked' => 'بنکەدراو دانەخراوە.',
+
+# Move page
+'move-page' => '$1 بگوازەوە',
+'move-page-legend' => 'گواستنەوەی پەڕە',
+'movepagetext' => "بەکارھێنانی ئەم فۆرمەی خوارەوە ناوی پەڕەیەک دەگۆڕێت، بە گواستنەوەی ھەموو مێژووەکەی بۆ ناوی نوێ.<br />
+<br />ناوە کۆنەکە دەبێتە پەڕەیەکی ئاڕاستەکردنەوە بۆ ناوە نوێکە.
+دەتوانی ئاڕاستەکان بۆ پەڕەی سەرەکی بەشێوەی خۆکار نوێ بکەیتەوە.<br />
+ئەگەر ناتەوێت ئەم کارە بکەی، دڵنیا بە کە [[Special:DoubleRedirects|ئاڕاستە دووبارەکراوەکان]] یان [[Special:BrokenRedirects|شکاوەکان]] تاقی بکەیتەوە.<br />
+تۆ بەرپرسیاری دڵنیا ببیتەوە لەوەی کە بەستەرەکان دەچنە سەر خاڵێک کە چاوەروان دەکرێت بچنە ئەوێ.<br /><br />
+دەبێت بزانی کە پەڕەکە '''ناگوازرێتەوە''' ئەگەر پێشتر پەڕەیەک بە ناوە نوێکەوە ھەبێت، مەگەر ئەوەی کە پەڕەکە واڵا یان ئاڕاستەیەک بێت و ھیچ مێژووی گۆڕاندنی پێشووی نەبێت.<br />
+ئەمە بەو واتایە کە ئەگەر ھەڵەیەک بکەی دەتوانی ناوی پەڕەکە دیسانەوە بگۆڕی بۆ ناوی پێشووی، و ناتوانی بیخەیتە جێگەی پەڕەیەک کە ھەنووکە ھەیە.<br /><br />
+'''ئاگاداری!'''<br />
+ئەمە دەتوانێت گۆڕانێکی زۆر نابەجێ و چاوەڕێنەکراو بێت بۆ پەڕەیەکی بەناوبانگ؛<br />
+تکایە پێش گۆڕینی ناو باش بیر لە ئاکامەکەی بکەوە.",
+'movepagetalktext' => "پەڕەی وتووێژی پەیوەندیدار بە شێوەی خۆکار لەگەڵیدا دەگوازرێتەوە، '''مەگەر:'''
+*پەڕەیەکی لێدوانی ناواڵا پێشتر ھەبێت لە ژێر ناوە نوێکەدا، یان
+*ئەم بۆکسەی خوارەوەت لێنەداوە بکەی.
+<br /><br />
+لەو حاڵەتانەدا، ئەگەر بتەوێت بیگوازیتەوە ناچار دەبیت بە شێوەی دەستی بیگوازیتەوە یان تێکەڵیان بکەی.",
+'movearticle' => 'ئەم پەڕە بگوازەوە:',
+'movenologin' => 'نەچوویتەتە ژوورەوە',
+'movenologintext' => 'بۆ گواستنەوەی پەڕەیەک، ئەشێ ببی بە ئەندام و [[Special:UserLogin|لە ژوورەوە]] بیت.',
+'movenotallowed' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکان.',
+'movenotallowedfile' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی پەڕگەکان.',
+'cant-move-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).',
+'cant-move-to-user-page' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەیەک بۆ لاپەڕەی بەکارهێنەر (غەیری بۆ ژێرلاپەڕەی بەکارهێنەر).',
+'newtitle' => 'بۆ ناوی نوێی:',
+'move-watch' => 'ئەم پەڕە چاودێری بکە',
+'movepagebtn' => 'ئەم پەڕە بگوازەوە',
+'pagemovedsub' => 'گواستنەوە بە سەرکەوتوویی جێبەجێ کرا',
+'movepage-moved' => '\'\'\'"$1" گوازراوەتەوە بۆ "$2"\'\'\'',
+'movepage-moved-redirect' => 'ڕەوانکەرێک درووست‌کرا.',
+'movepage-moved-noredirect' => 'لە دانانی ڕەوانەکەر بەرگری کرا.',
+'articleexists' => 'لاپەڕەیەک بەم ناوە ھەیە، یان ئەو ناوەی تۆ ھەڵتبژاردووە بایەخدار نیە.
+تکایە ناوێکی دیکە ھەڵبژێرە',
+'cantmove-titleprotected' => 'ناتوانی لاپەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، لەبەر ئەوەی سەردێڕی نوێ لە درووست‌کردن پارێزراوە.',
+'talkexists' => "'''خودی پەڕەکە بە سەرکەوتوویی گوازرایەوە، بەڵام پەڕەی وتووێژەکەی ناگوازرێتەوە چونکو پێشتر بە سەردێرە نوێکەوە، یەکێک ھەیە.
+تکایە بە دەستی تێکەڵیان بکە.'''",
+'movedto' => 'بوو بە',
+'movetalk' => 'پەڕەی لێدوانی پەیوەندیدار بگوازەوە',
+'move-subpages' => 'ژێرپەڕەکانی بگۆزەرەوە (بە ئەندازەی $1)',
+'move-talk-subpages' => 'ژێرپەڕەکانی پەڕەی لێدوانی بگۆزەرەوە (بە ئەندارەی $1)',
+'movepage-page-exists' => 'پەڕەی $1 هەیە و ناتوانرێت خۆکار بخرێتە جێی.',
+'movepage-page-moved' => 'پەڕەی $1 گۆزرایەوە بۆ $2.',
+'movepage-page-unmoved' => 'ناکرێ پەڕەی $1 بگوێزرێتەوە بۆ $2.',
+'movepage-max-pages' => 'زۆرینەی ژمارەی $1 {{PLURAL:$1|لاپەڕە|لاپەڕە}} گوێستراوەتەوە و لەوە زیاتر خۆکار ناگوێسترێتەوە.',
+'1movedto2' => '[[$1]] گۆزرایەوە بۆ [[$2]]',
+'1movedto2_redir' => 'بە ڕەوانکردنەوە، [[$1]] گۆزرایەوە بۆ [[$2]]',
+'move-redirect-suppressed' => 'ڕەوانەکردن بەرگری‌کراوە',
+'movelogpage' => 'لۆگی گواستنەوە',
+'movelogpagetext' => 'لە خوارەوەدا لیستی ھەموو پەڕە گواستنەوەکان دەبینن.',
+'movesubpage' => '{{PLURAL:$1|ژێرپەڕە|ژێرپەڕە}}',
+'movesubpagetext' => 'ئەم لاپەڕە $1 {{PLURAL:$1|ژێرلاپەڕەی‌|ژێرلاپەڕەی}} هەیە کە لەخوارە نیشان دراوە.',
+'movenosubpage' => 'ئەم پەڕە ھیچ ژێرپەڕەیەکی نییە.',
+'movereason' => 'هۆکار:',
+'revertmove' => 'پێچەوانەکردنەوە',
+'delete_and_move' => 'بیسڕەوە و بیگوازەوە',
+'delete_and_move_text' => '== پێویستییەکانی سڕینەوە ==
+لاپەڕەی مەبەست "[[:$1]]" لە پێش‌دا هەیە.
+ئایا دەتەوێ ئەوە بسڕیتەوە تا ڕێگە بۆ گواستنەوەی بکەیتەوە؟',
+'delete_and_move_confirm' => 'بەڵێ، لاپەڕەکە بسڕەوه',
+'delete_and_move_reason' => 'بۆ کردنەوەی ڕیگە بۆ گواستنەوەی لاپەڕە، سڕایەوە',
+'selfmove' => 'سەردێڕەکانی سەرچاوە و مەبەست یەکێکن؛
+ناکرێ لاپەڕەیەک بۆ سەر خۆی‌ بگوازرێتەوە.',
+'immobile-source-namespace' => 'گواستنەوەی لاپەڕە لە بۆشایی‌ناو "$1" ناکرێت.',
+'immobile-target-namespace' => 'گواستنەوەی لاپەڕە بۆناو بۆشایی‌ناو "$1" ناکرێت.',
+'immobile-target-namespace-iw' => 'بەستەرێکی نێوان‌ویکی ئامانجێکی گونجاو نیە بۆ گواستنەوەی لاپەڕە.',
+'immobile-source-page' => 'ئەمە لاپەڕە بۆ گواستنەوە نابێت.',
+'immobile-target-page' => 'بۆ ئەم سەردێڕی ئامانجە جێگۆڕ ناکرێ.',
+'imagenocrossnamespace' => 'گواستنەوەی پەڕگە بۆ بۆشایی‌نوێکی غەیری پەڕگە گونجاو نیە.',
+'imagetypemismatch' => 'پاشگری ئەو پەڕگە نوێیە هاوتای جۆری پەڕگەکە نیە.',
+'imageinvalidfilename' => 'ناوی پەڕگەی ئامانج گونجاو نیە',
+'fix-double-redirects' => 'نوێ‌کەردنەوەی هەموو ڕەوانکەرەکان وا ئاماژە بە سەردێڕە سەرەکیەکە دەکەن',
+'move-leave-redirect' => 'لە پاشەوە ڕەوانکەرێک دابنە',
+'protectedpagemovewarning' => "'''ئاگاداری: '''ئەم لاپەڕە داخراوە بۆیە تەنها ئەو بەکارهێنەرانەی مافی بەڕێوبەرایەتیان هەیە دەتوانن جێگۆڕی بکەن.",
+'semiprotectedpagemovewarning' => "'''ئاگاداری: '''ئەم لاپەڕە داخراوە بۆیە تەنها ئەو بەکارهێنەرانەی هەژمارەکەیان تۆمار کراوە دەتوانن جێگۆڕی بکەن.",
+
+# Export
+'export' => 'ھەناردنی پەڕەکان',
+'exporttext' => 'دەتوانی دەق و مێژووی دەستکاری لاپەڕەیەکی تایبەت یان دەستە لاپەڕەیەک بۆ ناو پەڕگەیەکی XML هەناردن بکەیت.
+دواتر بە کەڵک‌وەرگرتن لە [[Special:Import|لاپەڕەی هێنانەناوە]] لە مێدیاویکی‌دا، دەتوانی بیهێنیتە ناو ویکی‌یەکانی دیکە.
+
+بۆ هەناردنی لاپەڕەکان، سەردێڕەکان لە چوارچێوەی دەقی خوارەوە بنووسە، هەر هێڵێک یەک سەردێڕ. هەروا هەڵبژێرە ئایا پێداچوونەوەی ئێستا و هەموو پێداچوونەوە کۆنەکانت دەوێ یان هەر پێداچوونەوەی ئێستا و زانیاریی سەبارەت بە دوایین دەستکاری.
+
+لە بابەتی دواتر هەروەها دەتوانی لە بەستەرێک کەڵک وەرگریت، بۆ نموونە [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] بۆ لەپەڕەی "[[{{MediaWiki:Mainpage}}]]".',
+'exportcuronly' => 'تەنها پێداچوونەوەی ئێستا لەخۆ بگرێت نەک هەموو مێژوو',
+'exportnohistory' => "----
+'''ئاگاداربە: '''ھەناردنی ھەموو مێژووی پەڕەکان لەم فۆرمەوە لەبەر ھۆکاری ڕێخستن، داخراوە.",
+'export-submit' => 'هەناردن',
+'export-addcattext' => 'زیادکردنی لاپەڕەکان لە هاوپۆل:',
+'export-addcat' => 'زیادکردن',
+'export-addnstext' => 'زیادکردنی لاپەڕەکان لە بۆشایی‌ناو:',
+'export-addns' => 'زیادکردن',
+'export-download' => 'پاشەکەوت‌کردن وە پەڕگە',
+'export-templates' => 'داڕێژەکانیش لە خۆگرێت',
+'export-pagelinks' => 'لەخۆگرتنی لاپەڕەکانی بەستەر پێ‌دراو هەتا قووڵایی:',
+
+# Namespace 8 related
+'allmessages' => 'پەیامەکانی سیستەم',
+'allmessagesname' => 'ناو',
+'allmessagesdefault' => 'دەقی بنەڕەتی',
+'allmessagescurrent' => 'دەقی ھەنووکە',
+'allmessagestext' => 'ئەمە لیستێکە لە پەیامەکانی بەردەست لە بۆشایی‌ناوی مێدیاویکی.
+بۆ هاوبەشی لە ناوچەیی‌کردنی مێدیاویکی، تکایە سەرنجی [http://www.mediawiki.org/wiki/Localisation ناوچەیی‌کردن] و [http://translatewiki.net translatewiki.net] بدە.',
+'allmessagesnotsupportedDB' => "ئەم لاپەڕە ناتوانی بەکاربێت لەبەر ئەوەی '''\$wgUseDatabaseMessages''' لەکار خستراوە.",
+'allmessages-filter-legend' => 'پاڵێو',
+'allmessages-filter-unmodified' => 'چاکسازی نەکراو',
+'allmessages-filter-all' => 'هەموو',
+'allmessages-filter-modified' => 'چاکسازی‌کراو',
+'allmessages-prefix' => 'پاڵێو بە پێشگر:',
+'allmessages-language' => 'زمان:',
+'allmessages-filter-submit' => 'ڕۆشتن',
+
+# Thumbnails
+'thumbnail-more' => 'گەورە کردنەوە',
+'filemissing' => 'ون‌بوونی پەڕگە',
+'thumbnail_error' => 'هەڵە کاتی درووست‌کردنی هێما: $1',
+'djvu_page_error' => 'لاپەڕەی DjVu لەدەرۆی ڕیز',
+'djvu_no_xml' => 'XML بۆ پەڕگەی DjVu ناکێشرێتەوە',
+'thumbnail_invalid_params' => 'دیاریکەری نەگونجاوی هێما',
+'thumbnail_dest_directory' => 'پێرستی مەبەست درووست‌ناکرێت',
+'thumbnail_image-type' => 'جۆرەی وێنە پاڵپشت نەکراوە',
+'thumbnail_gd-library' => 'شێوەپێدانی‌ ناتەواوی ژێدەرگەی GD: ون‌بوونی فەنکشێن $1',
+'thumbnail_image-missing' => 'لەوە دەچێ پەڕگە ون بوبێت: $1',
+
+# Special:Import
+'import' => 'هێنانەناوەی لاپەڕەکان',
+'importinterwiki' => 'هێنانەناوەی ترانس‌ویکی',
+'import-interwiki-text' => 'بۆ هێنانە‌ناوە ویکی‌یەک و سەردێڕێکی لاپەڕە هەڵبژێرە.
+ڕێکەوتەکانی پێداچوونەوە و ناوی دەستکاری‌کەرەکان دەپارێزدرێت.
+هەموو کردوەکانی هێنانەناوەی ترانس‌ویکی لە [[Special:Log/import|لۆگی هێنانەناوە]] لۆگ دەکرێت.',
+'import-interwiki-source' => 'سەرچاوەی ویکی\\لاپەڕە :',
+'import-interwiki-history' => 'ڕوونووس‌کردنی هەموو مێژووی پێداچوونەوەکانی ئەم لاپەڕە',
+'import-interwiki-templates' => 'لەخۆگرتنی هەموو داڕێژەکان',
+'import-interwiki-submit' => 'هاوردن',
+'import-interwiki-namespace' => 'بۆشایی‌ناوی مەبەست:',
+'import-upload-filename' => 'پەڕگە‌ناو:',
+'import-comment' => 'بۆچوون:',
+'importtext' => 'تکایە هەناردنی پەڕگە لە سەرچاوەی ویکی‌یەوە بە کەڵک وەرگرتن لە [[Special:Export|ئامێری هەناردن]] بکە.
+لەسەر کۆمپیۆتەرەکەت پاشەکەوتی بکە و باری‌بكە ئێرە.',
+'importstart' => 'هێنانەناوەی لاپەڕەکان',
+'import-revision-count' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
+'importnopages' => 'هیچ لاپەڕەیەک نیە بۆ هێنانەناوە.',
+'importfailed' => 'هێنانەناوە سەرکەوتوو نەبوو: <nowiki>$1</nowiki>',
+'importunknownsource' => 'جۆرەی سەرچاوەی هێنانەناوەی نەناسراو',
+'importcantopen' => 'پەڕگەی هێنانەناوە ناکرێتەوە',
+'importbadinterwiki' => 'بەستەری خراپی نێوان‌ویکی',
+'importnotext' => 'بەتاڵ لە دەق',
+'importsuccess' => 'هێنانەناوە تەواو بوو!',
+'importhistoryconflict' => 'کێشە لەو مێژووی پێداچوونەوانە وا هەیە (لەوانەیە ئەم لاپەڕە لەپێش‌دا هێنرابێتەناوە)',
+'importnosources' => 'هیچ سەرچاوەیەکی هێنانەناوەی نێوان‌ویکی دیاری‌نەکراوە و بارکردنی ڕاستەوخۆی مێژوو لەکارخستراوە.',
+'importnofile' => 'هیچ پەڕگەیەکی هێنانەناوە بارنەکرا.',
+'importuploaderrorsize' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
+پەڕگەکە لەو قەبارەی بۆ بارکردن ڕێگەدراوە گەورەترە.',
+'importuploaderrorpartial' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
+تەنها بەشێک لە پەڕگەکە بارکرا.',
+'importuploaderrortemp' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
+بوخچەیەکی کاتی ون‌بووە.',
+'import-parse-failure' => 'سەرنەکەوتن لە هێنانەناوەی XML',
+'import-noarticle' => 'هیچ لاپەڕەیەک نیە بۆ هێنانەناوە',
+'import-nonewrevisions' => 'هەموو پێداچوونەوەکان لە پێش‌دا هێنراونەتەناوە.',
+'import-upload' => 'بارکردنی دراوەی XML',
+'import-token-mismatch' => 'لەدەست‌ڕۆشتنی دراوەکانی ئەو بەشە.
+تکایە دیسان تاقی‌بکەوە.',
+'import-invalid-interwiki' => 'لە ویکی‌ دیاری‌کراوە ناهێنڕێتەوە ناوە.',
+
+# Import log
+'importlogpage' => 'هێنانەناوەی لۆگ',
+'importlogpagetext' => 'هێنانەناوەی لاپەڕەکان دەگەل مێژووی دەستکاری لە ویکی‌یەکانی دیکەی لە لایەن بەرێوبەرایەتی.',
+'import-logentry-upload' => 'هێنراوەناوەی [[$1]] بە بارکردنی پەڕگە',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
+'import-logentry-interwiki' => 'ترانس‌ویکی‌کراو $1',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}} لە $2',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'پەڕە بەکارھێنەریی تۆ',
+'tooltip-pt-anonuserpage' => 'پەڕەی بەکارھێنەری بۆ ئای‌پی یەکە کە بەناویەوە خەریکی دەستکاری کردنی',
+'tooltip-pt-mytalk' => 'پەڕەی وتوبێژی تۆ',
+'tooltip-pt-anontalk' => 'لێدوان لەسەر دەستکارییەکان لەم ئایپی ئەدرەسەوە',
+'tooltip-pt-preferences' => 'بژاردەکانت',
+'tooltip-pt-watchlist' => 'لیستی ئەو پەڕانە کە چاودێری گۆڕانکارییەکانیانی دەکەی',
+'tooltip-pt-mycontris' => 'لیستی بەشدارییەکانت',
+'tooltip-pt-login' => 'هاندەدرێیت کە بچیتە ژوورەوە؛ هەرچەندە، پێویست نییە',
+'tooltip-pt-anonlogin' => 'پێشنیار دەکەین بڕۆیتەژوورەوە، ئەگەرچی ئەوە زۆرەملیی نیە',
+'tooltip-pt-logout' => 'دەرچوون',
+'tooltip-ca-talk' => 'لێدوان دەربارەی ناوەڕۆکی پەرە',
+'tooltip-ca-edit' => 'ئەتوانی دەستکاری ئەم پەڕەیە بکەیت.
+تکایە دوگمەی پێشبینین بەکارببە پێش پاشەکەوتکردن.',
+'tooltip-ca-addsection' => 'بەشێکی نوێ دەست پێ بکە',
+'tooltip-ca-viewsource' => 'ئەم پەڕەیە پارێزراوە.
+ئەتوانی سەرچاوەکەی ببینیت',
+'tooltip-ca-history' => 'وەشانەکانی پێشووی ئەم پەڕەیە',
+'tooltip-ca-protect' => 'ئەم پەڕەیە بپارێزە',
+'tooltip-ca-delete' => 'ئەم پەڕەیە بسڕەوە',
+'tooltip-ca-undelete' => 'هێنانەوەی دەستکاریەکانی پیش سڕینەوە وا لەسەر ئەم لاپەڕە ڕووی‌داوە',
+'tooltip-ca-move' => 'ئەم پەڕەیە بگوازەوە',
+'tooltip-ca-watch' => 'ئەم پەڕە بخە سەر لیستی چاودێریت',
+'tooltip-ca-unwatch' => 'ئەم پەڕە لە لیستی چاودێڕییەکەت لابە',
+'tooltip-search' => 'لە {{SITENAME}} بگەڕێ',
+'tooltip-search-go' => 'بڕۆ بۆ پەڕەیەک کە بە تەواوەتی ئەم ناوەی تیادایە ئەگەر هەبێت',
+'tooltip-search-fulltext' => 'لە پەڕەکاندا بگەڕێ بۆ ئەم دەقە',
+'tooltip-p-logo' => 'بینینی پەڕەی دەستپێک',
+'tooltip-n-mainpage' => 'بینینی پەڕەی دەستپێک',
+'tooltip-n-mainpage-description' => 'سەردانی پەڕەی سەرەکی بکە',
+'tooltip-n-portal' => 'دەربارەی پڕۆژەکە، چی ئەتوانی بکەیت، لە کوێ شتەکان بدۆزیتەوە',
+'tooltip-n-currentevents' => 'زانیاری پێشینە بەدەست بھێنە دەربارەی بۆنە ھەنووکەییەکان',
+'tooltip-n-recentchanges' => 'لیستی دوایین گۆڕانکارییەکان لەم ویکییەدا',
+'tooltip-n-randompage' => 'پەڕەیەک بە هەڵکەوت نیشان بدە',
+'tooltip-n-help' => 'شوێنێک بۆ دۆزینەوەی',
+'tooltip-t-whatlinkshere' => 'لیستی هەموو ئەو پەڕانەی ویکی کە بەستەرکراون بۆ ئێرە',
+'tooltip-t-recentchangeslinked' => 'دوایین گۆڕانکارییەکان لەو پەڕانە کە بەگرەوە گرێ دراون',
+'tooltip-feed-rss' => 'RSS بۆ ئەم گۆڕانکارییەکانی ئەم پەڕە',
+'tooltip-feed-atom' => 'Atom feed بۆ ئەم گۆڕانکارییەکانی ئەم پەڕە',
+'tooltip-t-contributions' => 'بینینی بەشدارییەکانی ئەم بەکارھێنەرە',
+'tooltip-t-emailuser' => 'ئیمەیلێک بنێرە بۆ ئەم بەکارھێنەرە',
+'tooltip-t-upload' => 'پەڕگەیەک (فایل) بار بکە',
+'tooltip-t-specialpages' => 'لیستی ھەموو پەڕە تایبەتەکان',
+'tooltip-t-print' => 'وەشانی چاپی ئەم پەڕەیە',
+'tooltip-t-permalink' => 'گرێدەری ھەمیشەیی بۆ ئەم وەشانەی ئەم پەڕەیە',
+'tooltip-ca-nstab-main' => 'بینینی پەڕەی ناوەڕۆک',
+'tooltip-ca-nstab-user' => 'پەڕەی بەکارھێنەر تەماشا بکە',
+'tooltip-ca-nstab-media' => 'پەڕەی میدیا چاو لێ بکە',
+'tooltip-ca-nstab-special' => 'ئەمە پەڕەیەکی تایبەتە، ناتوانی خودی ئەم پەڕە دەستکاری بکەیت',
+'tooltip-ca-nstab-project' => 'بینینی پەڕەی پرۆژە',
+'tooltip-ca-nstab-image' => 'بینینی پەڕەی پەڕگە',
+'tooltip-ca-nstab-mediawiki' => 'بینینی پەیامی سیستەم',
+'tooltip-ca-nstab-template' => 'بینینی قاڵبەکە',
+'tooltip-ca-nstab-help' => 'بینینی پەڕەی رێنمایی',
+'tooltip-ca-nstab-category' => 'بینینی پەڕەی ھاوپۆلەکان',
+'tooltip-minoredit' => 'ئەمە وەک گۆڕانکارییەکی بچووک دیاری بکە',
+'tooltip-save' => 'گۆڕانکارییەکانی خۆت پاشکەوت بکە',
+'tooltip-preview' => 'پێش بینینی گۆڕانکارییەکان، تکایە پێش پاشکەوت کردن ئەمە بەکار بھێنە',
+'tooltip-diff' => 'نیشان دانی گۆڕانکارییەکانت لە دەقەکەدا',
+'tooltip-compareselectedversions' => 'جیاوازییەکانی دوو وەشانە دیاریکراوەی ئەم پەڕە ببینە.',
+'tooltip-watch' => 'ئەم پەڕە بخەرە سەر لیستی چاودێڕیەکەت',
+'tooltip-recreate' => 'درووست‌کردنەوەی لاپەڕە ئەگەرچی سڕاوەتەوە',
+'tooltip-upload' => 'دەستپێکردنی بارکردن',
+'tooltip-rollback' => "''گەڕاندنەوە'' بە یەک کلیک گۆڕانکاری (گۆڕانکارییەکانی) ئەم پەڕە ئەباتەوە بۆ ھی دواین بەشدار",
+'tooltip-undo' => '"پاشگەزبوونەوە" گۆڕانکارییەکان دەگەڕەنێتەوە و فۆرمی دەستکاری کردن لە حاڵەتی پێشبینین دەکاتەوە. بەم شێوە دەکرێ ھۆکارێک لە بەشی پوختە دا بنووسرێت.',
+
+# Metadata
+'notacceptable' => 'ڕاژەکاری ویکی ناتوانێت داتا بەوشێوەی بۆ ڕاژەخوازی تۆ بخوێندرێتەوە، ئامادە بکات.',
+
+# Attribution
+'anonymous' => '{{PLURAL:$1|بەکارهێنەری|بەکارهێنەرانی}} نەناسراوی {{SITENAME}}',
+'siteuser' => 'بەکارھێنەری {{SITENAME}}، $1',
+'lastmodifiedatby' => 'ئەم پەڕە دواجار لە $2ی $1 بە دەستی $3 گۆڕدراوە.',
+'othercontribs' => 'لەسەر بنەمای کاری $1.',
+'others' => 'ئەوانی دیکە',
+'siteusers' => '{{PLURAL:$2|بەکارهێنەری|بەکارهێنەرانی}} {{SITENAME}} $1',
+'creditspage' => 'بایەخەکانی لاپەڕە',
+'nocredits' => 'هیچ زانیارییەکی بایەخ لەبەردەست‌دا نیە بۆ ئەم لاپەڕە.',
+
+# Spam protection
+'spamprotectiontitle' => 'پاڵێوی پاراستن لە سپام',
+'spamprotectiontext' => 'ئەو لاپەڕەی دەتویست پاشەکەوتی بکەی، بە پاڵێوی سپام بەربەست‌کرا
+لەوانەیە هۆکاری ئەوە بەستەرەک بووە بۆ ماڵپەڕەکی دەرەکی کە لەناو ڕەش‌لیست‌دایە.',
+'spamprotectionmatch' => 'ئەم دەقە ئەوەیە کە پاڵێوی سپامەکە دەبزوێنێ: $1',
+'spambot_username' => 'خاوێن‌کردنەوەی سپامی مێدیاویکی',
+'spam_reverting' => 'گەڕانەوە بۆ دوایین پێداچوونەوە کە بەستەری لەخۆگرتووە بۆ $1',
+
+# Info page
+'infosubtitle' => 'زانیاریی لاپەڕە',
+'numedits' => 'ژمارەی دەستکارییەکان (پەڕە): $1',
+'numtalkedits' => 'ژمارە گۆڕانکارییەکان (پەڕەی لێدوان): $1',
+'numwatchers' => 'ژمارەی چاودێران: $1',
+'numauthors' => 'ژمارەی نووسەری جودا (لاپەڕە): $1',
+
+# Skin names
+'skinname-standard' => 'کلاسیک',
+'skinname-nostalgia' => 'غەریبی',
+'skinname-cologneblue' => 'شینی کۆلۆن',
+'skinname-monobook' => 'مۆنۆ',
+'skinname-myskin' => 'پێستی خۆم',
+'skinname-chick' => 'جوجه‌',
+'skinname-simple' => 'ساده‌',
+'skinname-modern' => 'مۆدێڕن',
+'skinname-vector' => 'ڤێکتۆر',
+
+# Math options
+'mw_math_png' => 'ھەموو جارێک وەک PNG نیشان بدە',
+'mw_math_simple' => 'HTML ئەگەر ساکار بێت, ئەگەرنا PNG',
+'mw_math_html' => 'ئەگەر بکرێ بە HTML ، ئەگەرنا بە PNG',
+'mw_math_source' => 'وەک TeX بمێنێتەوە (بۆ وێبگەڕە دەقی‌یەکان)',
+'mw_math_modern' => 'بۆ وێبگەڕە مۆدێڕنەکان باشترە',
+
+# Math errors
+'math_unknown_error' => 'هەڵەیەکی نەزانراو',
+'math_unknown_function' => 'فەرمانێکی نەناسراو',
+'math_syntax_error' => 'ڕستەکار هەڵەیە',
+
+# Patrolling
+'markaspatrolleddiff' => 'وەک چاودێری‌کراو نیشان‌کردن',
+'markaspatrolledtext' => 'ئەم لاپەڕە وەک چاودێری‌کراو نیشان بکە',
+'markedaspatrolled' => 'وەک چاودێری‌کراو نیشان‌کرا',
+'markedaspatrolledtext' => 'پێداچوونەوەی هەڵبژێراو وەک چاودێری‌کراو نیشان‌کرا.',
+'rcpatroldisabled' => 'چاودێری دوایین گۆڕانکاریەکان لەکار خسترا',
+'rcpatroldisabledtext' => 'تایبەتمەندی چاودێری دوایین گۆڕانکاریەکان ئێستا لەکار خستراوە.',
+'markedaspatrollederror' => 'ناکرێ وه‌ک چاودێری‌کراو نیشان بکرێت',
+'markedaspatrollederror-noautopatrol' => 'ڕێگەت پێ‌نەدراوە گۆڕانکاریەکانی خۆت وەک چاودێری‌کراو نیشان بکەیت.',
+
+# Patrol log
+'patrol-log-page' => 'لۆگی چاودێری',
+'patrol-log-header' => 'ئەمە لۆگێکی چاودێری پێداچوونەوەکانە.',
+'patrol-log-auto' => '(خۆکار)',
+'patrol-log-diff' => 'پێداچوونەوە $1',
+'log-show-hide-patrol' => 'لۆگی چاودێری $1',
+
+# Image deletion
+'deletedrevision' => 'پێداچوونەوەی کۆنی سڕاوە $1',
+'filedeleteerror-short' => 'هەڵە لە سڕینەوەی پەڕگە: $1',
+'filedeleteerror-long' => 'کاتی سڕینەوەی ئەم پەڕگەی ڕووبەڕووی کێشە بووینەوە:
+
+$1',
+'filedelete-missing' => 'فایلی "$1" ناتوانرێت بسردرێته‌وه‌ ،له‌به‌ر ئه‌وه‌ی بونی نیه‌',
+
+# Browsing diffs
+'previousdiff' => '→ گۆڕانکاریی کۆنتر',
+'nextdiff' => 'گۆڕانکاریی نوێتر ←',
+
+# Media information
+'thumbsize' => 'قەبارەی وێنۆک:',
+'file-info' => '(قه‌باره‌: $1, جۆر: $2)',
+'file-info-size' => '($1 × $2 پیکسێل، قەبارەی پەڕگە: $3، جۆری MIME: $4)',
+'file-nohires' => '<small>رەزۆلوشنی سەرتر لەمە لە بەردەست دا نیە.</small>',
+'svg-long-desc' => '(پەڕگەی SVG، بە ناو $1 × $2 خاڵ، قەبارەی پەڕگە: $3)',
+'show-big-image' => 'گەورە کردنەوە',
+'show-big-image-thumb' => '<small>قەبارەی ئەم پێشبینینە: $1 × $2 خاڵە</small>',
+
+# Special:NewFiles
+'newimages' => 'پێشانگای پەڕگە نوێکان',
+'newimages-legend' => 'پاڵاوتن',
+'noimages' => 'هیچ بۆ دیتن نیە.',
+'ilsubmit' => 'گەڕان',
+'bydate' => 'بەپێی ڕێکەوت',
+
+# Bad image list
+'bad_image_list' => 'فۆرمات بەم شێوەی خوارەوەیە:
+
+تەنھا ئەو بابەتانەی کە کە لیست کراون (واتە ئەو دێڕانەی بە * دەست پێ دەکەن) لێک ئەدرێتەوە.
+یەکەم بەستەر لە سەر دێڕێک دەبێت بەستەری فایلێکی خراپ بێت.
+ھەموو بەستەرەکانی دوای ئەو کە لەسەر ھەمان دێڕن وەکوو نائاسایی دێتە ھەژمار، واتە ئەو لاپەڕانەی کە ڕەنگە تێدا فایل بە شێوەی ئینلاین بێت',
+
+# Variants for Kurdish language
+'variantname-ku-arab' => 'ئەلفوبێی عەرەبی',
+'variantname-ku-latn' => 'ئەلفوبێی لاتینی',
+
+# Metadata
+'metadata' => 'دراوی مێتا',
+'metadata-help' => 'ئەم پەڕگە زانیاری زێدەی ھەیە، کە لەوە دەچێت کامێرا یان ھێماگر (scanner) خستبێتیە سەری. ئەگەر پەڕگەکە لە حاڵەتی سەرەتاییەکەیەوە دەستکاری کرابێ، شایەد بڕێ لە بڕگەکان بە تەواوی زانیارەکانی وێنە گۆڕدراوەکە نیشان نەدەن.',
+'metadata-expand' => 'وردەکارییە درێژکراوەکان پیشان بدە',
+'metadata-collapse' => 'وردەکارییە درێژکراوەکان بشارەوە',
+'metadata-fields' => 'ئەو کێڵگە EXIFانە لەم پەیامە بە ڕیز کراون، کاتێک خشتەی metadata کۆ کراوەش بێ ھەر نیشان ئەدرێت. کێڵگەکانی تر تا خشتەکە باز نەکرێ، شاراوەن.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'پانی',
+'exif-imagelength' => 'بەرزی',
+'exif-imagedescription' => 'ناونیشانی وێنە',
+'exif-model' => 'جۆری کامێرا',
+'exif-artist' => 'نووسەر',
+'exif-colorspace' => 'بۆشایی ره‌نگ',
+'exif-usercomment' => 'بۆچوونەکانی بەکارهێنەر',
+'exif-relatedsoundfile' => 'فایلی ده‌نگی لێکچوو',
+'exif-lightsource' => 'سەرچاوەی ڕووناکی',
+'exif-flash' => 'فلاش',
+'exif-filesource' => 'سەرچاوەی پەڕگە',
+'exif-saturation' => 'تێربوون',
+'exif-gpslatitude' => 'پانی',
+'exif-gpslongitude' => 'درێژی',
+'exif-gpsmeasuremode' => 'جۆری پێوان',
+'exif-gpsdop' => 'وردی پێوان',
+'exif-gpsspeedref' => 'یەکەی خێرایی',
+'exif-gpsspeed' => 'خێرایی وەرگری GPS',
+'exif-gpstrack' => 'ئاڕاستەی جوڵان',
+'exif-gpsimgdirection' => 'ئاڕاستەی وێنە',
+'exif-gpsdatestamp' => 'ڕێکەوتی GPS',
+
+# EXIF attributes
+'exif-compression-1' => 'نەپەستێنراو',
+
+'exif-unknowndate' => 'ڕێکەوتی نەزانراو',
+
+'exif-orientation-1' => 'ئاسایی',
+'exif-orientation-2' => 'ئاسۆیی هەڵگێڕدراوەتەوە',
+'exif-orientation-3' => '١٨٠° سوڕاوەتەوە',
+'exif-orientation-4' => 'ستوونی هەڵگێڕدراوەتەوە',
+
+'exif-componentsconfiguration-0' => 'بوونی نییە',
+
+'exif-exposureprogram-1' => 'دەستکار',
+
+'exif-meteringmode-0' => 'نەزانراو',
+'exif-meteringmode-1' => 'تێکڕا',
+'exif-meteringmode-5' => 'شێوە',
+'exif-meteringmode-6' => 'بەش بەش',
+'exif-meteringmode-255' => 'هیتر',
+
+'exif-lightsource-0' => 'نەزانراو',
+'exif-lightsource-1' => 'ڕووناکی ڕۆژ',
+'exif-lightsource-2' => 'فلۆرسەنت',
+'exif-lightsource-3' => 'تانگەستەن',
+'exif-lightsource-4' => 'فلاش',
+'exif-lightsource-9' => 'ئاسمانی ڕوون',
+'exif-lightsource-10' => 'ئاسمانی هەوری',
+'exif-lightsource-11' => 'سێبەر',
+'exif-lightsource-12' => 'فلۆرسەنتی ڕووناکیی‌ڕۆژ (D 5700 – 7100K)',
+'exif-lightsource-13' => 'فلۆرسەنتی سپیی ڕۆژ (N 4600 – 5400K)',
+'exif-lightsource-14' => 'فلۆرسەنتی سپیی فێنک (W 3900 – 4500K)',
+'exif-lightsource-15' => 'فلۆرسەنتی سپی (WW 3200 – 3700K)',
+'exif-lightsource-17' => 'ڕووناکی ستانداردی A',
+'exif-lightsource-18' => 'ڕووناکی ستانداردی B',
+'exif-lightsource-19' => 'ڕووناکی ستانداردی C',
+'exif-lightsource-24' => 'ISOـی تانگەستەنی ستۆدیۆ',
+'exif-lightsource-255' => 'سەرچاوەی دیکە ڕووناکی',
+
+# Flash modes
+'exif-flash-fired-0' => 'فلاش کاری نەکرد',
+'exif-flash-fired-1' => 'فلاش کاری کرد',
+'exif-flash-return-0' => 'فەنکشێنی بینینەوەی گەڕانەوەی ڕووناکی فلاش نیە',
+'exif-flash-return-2' => 'گەڕانەوەی ڕووناکی فلاش نەبینرایەوە',
+'exif-flash-return-3' => 'گەڕانەوەی ڕووناکی فلاش بینرایەوە',
+'exif-flash-mode-1' => 'کارکردنی ناچاریی فلاش',
+'exif-flash-mode-2' => 'بەرگری ناچاری لە کارکردنی فلاش',
+'exif-flash-mode-3' => 'شێوازی خۆکار',
+'exif-flash-function-1' => 'فەنکشێنی فلاش نیە',
+'exif-flash-redeye-1' => 'شێوازی کەم‌کردنەوەی سوور-چاو',
+
+'exif-focalplaneresolutionunit-2' => 'ئینج',
+
+'exif-sensingmethod-1' => 'دیاری نەکراو',
+'exif-sensingmethod-2' => 'یەک چیپی هەستەوەری بەشی ڕەنگ',
+'exif-sensingmethod-3' => 'دوو چیپی هەستەوەری بەشی ڕەنگ',
+'exif-sensingmethod-4' => 'سێ چیپی هەستەوەری بەشی ڕەنگ',
+'exif-sensingmethod-5' => 'هەستەوەری بەشی ڕەنگی زنجیری',
+'exif-sensingmethod-7' => 'هەستەوەری سێ‌هێڵی',
+'exif-sensingmethod-8' => 'هەستەوەری هێڵی ڕەنگی زنجیری',
+
+'exif-scenetype-1' => 'وێنەیەکی ڕاستەوخۆ وێنەگیراو',
+
+'exif-customrendered-0' => 'پرۆسەی ئاسایی',
+'exif-customrendered-1' => 'پرۆسەی دڵخواز',
+
+'exif-exposuremode-0' => 'بەرچاو خستنی خۆکار',
+'exif-exposuremode-1' => 'بەرچاو خستنی دەستی',
+'exif-exposuremode-2' => 'زنجیرە گرتنی خۆکار',
+
+'exif-whitebalance-0' => 'خۆکار یەکسان‌کردنی سپیایی',
+'exif-whitebalance-1' => 'دەستی یەکسان‌کردنی سپیایی',
+
+'exif-scenecapturetype-0' => 'ستاندارد',
+'exif-scenecapturetype-1' => 'دیمەن',
+'exif-scenecapturetype-2' => 'پۆرترە',
+'exif-scenecapturetype-3' => 'وێنەی شەو',
+
+'exif-gaincontrol-0' => 'هیچ',
+
+'exif-contrast-0' => 'ئاسایی',
+'exif-contrast-1' => 'نەرم',
+'exif-contrast-2' => 'ڕەق',
+
+'exif-saturation-0' => 'ئاسایی',
+'exif-saturation-1' => 'تێرکردنی کەم',
+'exif-saturation-2' => 'تێرکردنی زۆر',
+
+'exif-sharpness-0' => 'ئاسایی',
+'exif-sharpness-1' => 'نەرم',
+'exif-sharpness-2' => 'ڕەق',
+
+'exif-subjectdistancerange-0' => 'نەزانراو',
+'exif-subjectdistancerange-1' => 'گەورە',
+'exif-subjectdistancerange-2' => 'دیمەنی نزیک',
+'exif-subjectdistancerange-3' => 'دیمەنی دوور',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'پانیی جوگرافیایی باکوور',
+'exif-gpslatitude-s' => 'پانیی جوگرافیایی باشوور',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'پانیی جوگرافیایی ڕۆژهەڵات',
+'exif-gpslongitude-w' => 'پانیی جوگرافیایی ڕۆژئاوا',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'کیلۆمەتر هەر کاتژمێر',
+'exif-gpsspeed-m' => 'مایل هەر کاتژمێر',
+
+# External editor support
+'edit-externally' => 'دەستکاری ئەم پەڕەیە بکە بە بەکارهێنانی پڕۆگرامێکی دەرەکی',
+'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [http://www.mediawiki.org/wiki/Manual:External_editors ڕێنماییەکانی دامەزراندن] بکە)',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'ھەموو',
+'imagelistall' => 'ھەموو',
+'watchlistall2' => 'ھەموو',
+'namespacesall' => 'ھەموو',
+'monthsall' => 'ھەموو',
+
+# E-mail address confirmation
+'confirmemail' => 'بڕواپێ‌کردنی ناونیشانی ئی‌مەیل',
+'confirmemail_noemail' => 'لە [[Special:Preferences|هەڵبژاردەکانی بەکارهێنەر]] ناونیشانی ئی‌مەیلی گونجاوت دیاری نەکردووە.',
+'confirmemail_text' => '{{SITENAME}} بە پێویستی دەزانێ پێش کەڵک وەرگرتن لە تایبەتمەندیەکانی ئی‌مەیل، ناونیشانی ئی‌مەیلی خۆت ڕاچاو بکەیت.
+ئەو دوکمەی خوارەوە چالاک بکە تاکوو ئی‌مەیلێکی بڕوا پێ‌کردن بنێردرێت بۆ ناونیشانی ئی‌مەیلەکەت.
+ئەو ئی‌مەیلە بەستەرەکی تێدایە؛ لە وێبگەڕەکەت ئەو بەستەرە ببینە تاکوو ناونیشانی ئی‌مەیلەکەت بڕوادار بێت.',
+'confirmemail_pending' => 'کۆدی بڕواپێ‌کردن لە پێش‌دا ئی‌مەیل کراوە بۆت.
+ئەگەر بە تازەیی هەژمارەت درووست‌کردووە، لەوانەیە باشتربێت چەن خۆلکێک بوەستی بۆ گەیشتنی ئەو ئەمەیلی، پێش دیسان داواکردنەوەی کۆدی نوێ.',
+'confirmemail_send' => 'ئی‌مەیل‌کردنی کۆدی بڕواپێ‌کردن',
+'confirmemail_sent' => 'ئی‌مەیلی بڕواپێ‌کردن ناردرا.',
+'confirmemail_oncreate' => 'کۆدی بڕواپێ‌کردنی ناردرا بۆ ناونیشانی ئی‌مەیلت.
+پێویست نیە بڕۆیتە ژوورەوە، تەنها پێویستە پێش کەڵک وەرگرتن لە تایبەتمەندیەکان ئی‌مەیلیی ویکی ئەوە جێبەجێ بکەیت.',
+'confirmemail_sendfailed' => '{{SITENAME}} ناتوانێ ئی‌مەیلی برواکردن بنێرێت بۆ تۆ.
+تکایە ئەرخەیان بە هەموو پیتەکانی ناونیشانەکەت گونجاوە.
+
+مەیلکەر ئەوەی گەڕاندەوە: $1',
+'confirmemail_invalid' => 'کۆدی بڕواپێ‌کردنی نەگونجاو.
+لەوانەیە ئەو کۆدە ماوەی بەسەر چووبێت.',
+'confirmemail_needlogin' => 'بۆ بڕواپێ‌کردنی ناونیشانی ئی‌مەیلەکەت، دەبێ $1.',
+'confirmemail_success' => 'ناونیشانی ئی‌میلەکەت بڕوای‌پێ‌کرا.
+ئێستە دەتوانی [[Special:UserLogin|بڕۆیتە ژوورەوە]] و لە ویکی کەڵک بگری.',
+'confirmemail_loggedin' => 'ناونیشانی ئی‌مەیلەکەت ئێستا بڕوای پێ‌کرا.',
+'confirmemail_error' => 'کێشەیەک هەیە لە پاشەکەوت‌کردنی بڕواپێ‌کردنی تۆدا.',
+'confirmemail_subject' => 'بڕوا پێ‌کردنی ناونیشانی ئی‌مەیلی {{SITENAME}}',
+'confirmemail_body' => 'کەسێک، لەوانەیە خۆت، لە ناونیشانی ئای‌پی $1،
+لە {{SITENAME}} بەم ناونیشانی ئی‌مەیلە، هەژمارەیەکی تۆمارکردووە "$2" .
+
+بۆ ئەوەی بڕا بکرێت کە ئەم هەژمارە لە ڕاستیدا بۆتۆیە و بۆ چالاک‌کردنی تایبەتمەندیەکانی ئی‌مەیل لە {{SITENAME}}دا، ئەو بەستەرەی خوارەوە لە وێبگەڕەکەت‌دا بکەوە:
+
+$3
+
+ئەگەر تۆ ئەو هەژمارەت تۆمار *نەکردووە*، بۆ هەڵوەشاندنەوەی بڕوا‌پێ‌کردنی ناونیشانی ئی‌مەیل بڕۆ بۆ ئەم بەستەرە:
+
+$5
+
+ئەم کۆدی بڕواپێ‌کردنە لە $4 ماوەی بەسەردێت.',
+'confirmemail_invalidated' => 'بڕواپی‌کردنی ناونیشانی ئی‌مەیل هەڵوەشێندراوە',
+'invalidateemail' => 'هەڵوەشاندنەوەی بڕواپێ‌کردنی ئی‌مەیل',
+
+# Scary transclusion
+'scarytranscludetoolong' => '[URL زۆر درێژە]',
+
+# Trackbacks
+'trackbackremove' => '([سڕینەوە $1])',
+
+# Delete conflict
+'recreate' => 'درووست‌کردنەوە',
+
+# action=purge
+'confirm_purge_button' => 'باشە',
+
+# Separators for various lists, etc.
+'semicolon-separator' => '؛&#32;',
+'comma-separator' => '،&#32;',
+
+# Multipage image navigation
+'imgmultipageprev' => '← پەڕەی پێشوو',
+'imgmultipagenext' => 'پەڕەی داهاتوو →',
+'imgmultigo' => 'بڕۆ!',
+'imgmultigoto' => 'بڕۆ بۆ پەڕەی $1',
+
+# Table pager
+'table_pager_next' => 'پەڕەی داهاتوو',
+'table_pager_prev' => 'پەڕەی پێشوو',
+'table_pager_first' => 'پەرەی یەکەم',
+'table_pager_last' => 'دوا پەڕە',
+'table_pager_limit' => '$1 دانە پیشان بدە بۆ هەر پەڕەیەک',
+'table_pager_limit_submit' => 'بڕۆ',
+'table_pager_empty' => 'هیچ ئەنجامێک نییە',
+
+# Auto-summaries
+'autosumm-blank' => 'پەڕەکەی واڵا کردەوە',
+'autoredircomment' => 'ڕەوانە کرا بۆ [[$1]]',
+'autosumm-new' => "پەڕەیەک دروست کرا بە '$1'",
+
+# Size units
+'size-bytes' => '$1 بایت',
+'size-kilobytes' => '$1 کیلۆبایت',
+'size-megabytes' => '$1 مێگابایت',
+
+# Live preview
+'livepreview-loading' => 'له‌باركردنایه‌ ...',
+'livepreview-ready' => 'ئاماده‌یه‌',
+
+# Friendlier slave lag warnings
+'lag-warn-normal' => 'گۆڕانکاریەکانی نوێ‌تر لە $1 {{PLURAL:$1|چرکە|چرکە}} لەوانەیە لەم لیستەدا نیشان نەدرێن.',
+'lag-warn-high' => 'لەبەر زۆر دواکەوتنی ڕاژەکاری بنکەدراو، گۆڕانکاریەکانی نوێ‌تر لە $1 {{PLURAL:$1|چرکە|چرکە}} لەوانەیە لەم لیستەدا نیشان نەدرێن.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'بێجگە لە پەڕەی وتووێژەکان، لیستی چاودێڕییەکانت {{PLURAL:$1|1 بابەت|$1 بابەت}}ی تێدایە،',
+'watchlistedit-noitems' => 'لیستی چاودێڕییەکانت ھیچ بابەتێکی تێدا نییە.',
+'watchlistedit-normal-title' => 'دە‌ستکاری لیستی چاودێری',
+'watchlistedit-normal-legend' => 'لابردنی سەردێڕەکان لە لیستی چاودێری',
+'watchlistedit-normal-explain' => 'سەردێڕی بڕگەکانی لیستی چاودێریەکەت لە خوارەوە نیشان‌دراون.<br />
+بۆ لابردنی هەرکام، چوارچێوەی بەرامبەری نیشان بکە و کرتە بکە سەر لابردنی سەردێڕەکان.<br />
+هەروا دەتوانی [[Special:Watchlist/raw|دەستکاری لیستی خاو]]بکەیت.',
+'watchlistedit-normal-submit' => 'ناونیشانەکان لاببە',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 سەردێڕ |$1 سەردێڕ}} لە لیستی چاودێریت سڕایەوە:',
+'watchlistedit-raw-title' => 'دەستکاری لیستی خاوی چاودێری',
+'watchlistedit-raw-legend' => 'دەستکاری لیستی خاوی چاودێری',
+'watchlistedit-raw-explain' => 'سەردێڕی بەڕگەکانی لیستی چاودێریەکەت لە خوارەوە نیشان‌دراون و دەتوانی بە زیادکردن و لابردن دەستکاری بکەیت؛<br />
+هەر هێڵێک، سەردێڕێک.<br />
+کاتێ تەواوت‌کرد، کرتە بکە سەر نوێ‌کردنەوەی لیستی چاودێری.<br />
+هەروا دەتوانی لە [[Special:Watchlist/edit|دەستکاریکەری ستاندارد]] کەڵک‌وەرگریت.',
+'watchlistedit-raw-titles' => 'ناونیشانەکان:',
+'watchlistedit-raw-submit' => 'نوێکردنەوەی لیستی چاودێری',
+'watchlistedit-raw-done' => 'لیستی چاودێریەکەت نوێ‌کرایەوە',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} زیادکرا:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} لابرا:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'دیتنی گۆڕانکارییە پەیوەندیدارەکان',
+'watchlisttools-edit' => 'بینین و دەستکاری کردنی لیستی چاودێڕییەکان',
+'watchlisttools-raw' => 'دەستکاری کردنی لیستی خامی چاودێڕییەکان',
+
+# Iranian month names
+'iranian-calendar-m1' => 'خاکەلێوە',
+'iranian-calendar-m2' => 'گوڵان',
+'iranian-calendar-m3' => 'جۆزەردان',
+'iranian-calendar-m4' => 'پووشپەڕ',
+'iranian-calendar-m5' => 'گەلاوێژ',
+'iranian-calendar-m6' => 'خەرمانان',
+
+# Core parser functions
+'unknown_extension_tag' => 'تاگی درێژکراوەی نەناسراو "$1"',
+
+# Special:Version
+'version' => 'وەشان',
+'version-extensions' => 'پێوەکراوە دامەزراوەکان',
+'version-specialpages' => 'پەڕە تایبەتەکان',
+'version-parserhooks' => 'قولاپە لێککەرەکان',
+'version-variables' => 'گۆڕاوەکان',
+'version-other' => 'ھی دیکە',
+'version-mediahandlers' => 'بایەخ‌دەرانی مێدیا',
+'version-hooks' => 'قولاپەکان',
+'version-extension-functions' => 'فەنکشێنەکانی درێژەکراو',
+'version-parser-extensiontags' => 'تاگەکانی درێژکراوی لێککەرەوە',
+'version-parser-function-hooks' => 'قولاپەکانی فەنکشێنی لێککەرەوە',
+'version-skin-extension-functions' => 'فەنکشێنەکانی درێژکراوی ڕووبەرگ',
+'version-hook-name' => 'ناوی قولاپ',
+'version-hook-subscribedby' => 'بەشداربوو لە لایەن',
+'version-version' => '(وەشانی $1)',
+'version-license' => 'مۆڵەت',
+'version-software' => 'نەرمەکاڵای دامەزراو',
+'version-software-product' => 'بەرهەم',
+'version-software-version' => 'وەشان',
+
+# Special:FilePath
+'filepath' => 'ڕێڕەوی پەڕگە',
+'filepath-page' => 'پەڕگە:',
+'filepath-submit' => 'بڕۆ',
+'filepath-summary' => 'ئەم لاپەڕە تایبەتە ڕێڕەوی تەواو بۆ پەڕگەیەک دەگەڕێنێتەوە.
+وێنەکان لە قەبارەی تەواو‌دا نیشان‌ دەدرێن و جۆرە پەڕگەکانی دیکە بە پڕۆگرامی هاوپەیوەندی خۆی ڕاستەوخۆ دەست‌پێ‌دەکات.
+
+ناوی پەڕگەکە بێ پێشگری "{{ns:file}}" بنووسە.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'گەڕان بۆ پەڕگە دووپات کراوەکان',
+'fileduplicatesearch-summary' => 'گەڕان بۆ پەڕگە دووبارەکراوەکان لەسەر بنەمای نرخی hash.
+
+ناوی پەڕگەکە بێ پێشگری "{{ns:file}}" بنووسە.',
+'fileduplicatesearch-legend' => 'گەڕان بۆ دووبارەکردنێک',
+'fileduplicatesearch-filename' => 'ناوی پەرگە:',
+'fileduplicatesearch-submit' => 'گەڕان',
+'fileduplicatesearch-info' => '$1 × $2 پیکسەل<br />قەبارەی پەڕگە: $3<br />MIME جۆری: $4',
+'fileduplicatesearch-result-1' => 'پەڕگەی "$1" دووپاتکراوەیەکی کوتوموتی نییە.',
+'fileduplicatesearch-result-n' => 'پەڕگەی «$1» {{PLURAL:$2|١ دووپاتکراوەی کوتوموتی|$2 دووپاتکراوەی کوتوموتی}} ھەیە.',
+
+# Special:SpecialPages
+'specialpages' => 'پەڕە تایبەتەکان',
+'specialpages-note' => '----
+* لاپەڕە تایبەتە ئاساییەکان
+* <strong class="mw-specialpagerestricted">لاپەڕە تایبەتە بەربەست‌کراوەکان.</strong>',
+'specialpages-group-maintenance' => 'ڕاپۆرتەکانی چاکسازی',
+'specialpages-group-other' => 'پەڕە تایبەتەکانی دیکە',
+'specialpages-group-login' => 'چوونە ژوورەوە/ناونووسین',
+'specialpages-group-changes' => 'دوایین گۆڕانکارییەکان و ڕەشنووسەکان',
+'specialpages-group-media' => 'گوزارشتەکان و بارکردنەکانی مێدیا',
+'specialpages-group-users' => 'بەکارھێنەران و مافەکان',
+'specialpages-group-highuse' => 'پەڕە زۆر بەکار ھێنراوەکان',
+'specialpages-group-pages' => 'لیستەکانی پەڕەکان',
+'specialpages-group-pagetools' => 'ئامرازەکانی پەڕە',
+'specialpages-group-wiki' => 'داتا و ئامرازەکانی ویکی',
+'specialpages-group-redirects' => 'پەڕە تایبەتەکانی رەوانکردنەوە',
+'specialpages-group-spam' => 'ئامرازەکانی سپەم',
+
+# Special:BlankPage
+'blankpage' => 'پەڕەی واڵا',
+'intentionallyblankpage' => 'ئەم لاپەڕە بەقەستی بەتاڵ هێڵراوەتەوە',
+
+# Special:Tags
+'tags' => 'گۆڕانکاری گونجاوی تاگەکان',
+'tag-filter' => 'پاڵێوی [[Special:Tags|تاگ]]:',
+'tag-filter-submit' => 'پاڵاوتن',
+'tags-title' => 'تاگەکان',
+'tags-intro' => 'ئەم لاپەڕە ئەو تاگانەی لیست دەکات کە لەوانەیە نەرمامێر دەستکاریەکی بۆ نیشان بکات و مەبەستی نیشان بدات.',
+'tags-tag' => 'ناوی تاگ',
+'tags-display-header' => 'دیمەن لەسەر لیستەکانی گۆڕان',
+'tags-description-header' => 'پێناسەی تەواوی مەبەست',
+'tags-hitcount-header' => 'گۆڕانکاریە تاگ‌کراوەکان',
+'tags-edit' => 'دەستکاری',
+'tags-hitcount' => '$1 {{PLURAL:$1|گۆڕان|گۆڕانکاری}}',
+
+# Database error messages
+'dberr-header' => 'ئەم ویکی‌یە کێشەی هەیە',
+'dberr-problems' => 'ببورە! ئەم ماڵپەڕە ئێستا خەریک ئەزموونێکی کێشەی تەکنیکیە.',
+'dberr-again' => 'چەن خولک ڕاوەستە و نوێی بکەوە.',
+'dberr-info' => '(پەیوەندی دەگەڵ ڕاژەکاری بنکەدراو پێک‌نایەت: $1)',
+'dberr-usegoogle' => 'دەتوانی هاوکات هەوڵی گەڕان بە گووگڵ بدەیت.',
+'dberr-outofdate' => 'لەیادت بێ لەوانەیە پێرستەکەیان سەبارەت نە ناوەڕۆک ئەم ماڵپەڕە ماوە بەسەرچوو بێت.',
+'dberr-cachederror' => 'ئەمە ڕوونووسێکی کاش‌کراوی لاپەڕەی داواکراوە و لەوانەیە بەڕۆژ نەبێت.',
+
+# HTML forms
+'htmlform-invalid-input' => 'هێندێ کێشە هەیە لە بڕێک لە ناودراوەکانت',
+'htmlform-select-badoption' => 'ئەو نرخەی دیاریت‌کردووە هەڵبژاردەیەکی گونجاو نیە.',
+'htmlform-int-invalid' => 'ئەو نرخەی دیاریت‌کردووه ژمارەیەکی تەواو نیە.',
+'htmlform-float-invalid' => 'ئەو نرخەی دیاریت‌کردووه ژمارە نیە.',
+'htmlform-int-toolow' => 'ئەو نرخەی دیاریت‌کردووه کەمترە لە ئەمپەڕی $1.',
+'htmlform-int-toohigh' => 'ئەو نرخەی دیاریت‌کردووه زیاترە لە ئەوپەڕی $1.',
+'htmlform-submit' => 'ناردن',
+'htmlform-reset' => 'پووچەڵکردنەوەی دەستکارییەکان',
+'htmlform-selectorother-other' => 'دیکە',
+
+);
diff --git a/languages/messages/MessagesCkb_latn.php b/languages/messages/MessagesCkb_latn.php
new file mode 100644
index 00000000..25e5dbde
--- /dev/null
+++ b/languages/messages/MessagesCkb_latn.php
@@ -0,0 +1,12 @@
+<?php
+/** Sorani (Latin script) (Soranî (latînî))
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'ckb-arab';
diff --git a/languages/messages/MessagesCo.php b/languages/messages/MessagesCo.php
index 092d3e4a..fabd455a 100644
--- a/languages/messages/MessagesCo.php
+++ b/languages/messages/MessagesCo.php
@@ -70,18 +70,20 @@ $messages = array(
'category_header' => 'Articuli in a categuria "$1"',
'subcategories' => 'Sottucategurie',
-'about' => 'À prupositu',
-'article' => 'Articulu',
-'cancel' => 'Annullà',
+'about' => 'À prupositu',
+'article' => 'Articulu',
+'cancel' => 'Annullà',
+'mypage' => 'A mo pagina',
+'mytalk' => 'E mo discussioni',
+'anontalk' => 'Discussione per istu indirizzu IP',
+'navigation' => 'Navigazione',
+'and' => '&#32;è',
+
+# Cologne Blue skin
'qbpageoptions' => 'Issa pagina',
'qbpageinfo' => 'Cuntestu',
'qbmyoptions' => 'E mo pagine',
'qbspecialpages' => 'Pagine spiciale',
-'mypage' => 'A mo pagina',
-'mytalk' => 'E mo discussioni',
-'anontalk' => 'Discussione per istu indirizzu IP',
-'navigation' => 'Navigazione',
-'and' => '&#32;è',
'errorpagetitle' => 'Errore',
'returnto' => 'Vultà à $1.',
@@ -108,7 +110,7 @@ $messages = array(
'toolbox' => 'Stuvigli',
'userpage' => 'Vede a pagina di utilizatore',
'otherlanguages' => 'In altri lingui',
-'lastmodifiedat' => 'Ultima mudifica di ista pagina u $1 à e $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultima mudifica di ista pagina u $1 à e $2.',
'protectedpage' => 'Pagina prutetta',
'jumptonavigation' => 'navigazione',
'jumptosearch' => 'ricerca',
@@ -163,11 +165,6 @@ $messages = array(
'nologinlink' => 'Registramentu',
'createaccount' => 'Registramentu',
'gotaccountlink' => 'Cunnessione',
-'youremail' => 'Indirizzu e-mail:',
-'yourrealname' => 'U to veru nome:',
-'yourlanguage' => "Lingua di l'interfaccia:",
-'yourvariant' => 'Variante',
-'yournick' => 'Signatura pè e discussioni:',
'loginsuccesstitle' => 'Cunnessione fatta',
'acct_creation_throttle_hit' => "Desulatu, ai digià fattu $1 registramenti. Ùn ne poi micca fà d'altri.",
'accountcreated' => 'Registramentu fattu',
@@ -205,7 +202,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
# History pages
'currentrev' => 'Ultima revisione',
'page_first' => 'prima',
-'deletedrev' => '[supprimatu]',
'histfirst' => 'Prima',
'histlast' => 'Ultima',
'historysize' => '({{PLURAL:$1|1 ottettu|$1 ottetti}})',
@@ -223,15 +219,19 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
# Preferences page
'preferences' => 'Preferenze',
'mypreferences' => 'Preferenze',
-'math' => 'Matematica',
-'math_syntax_error' => 'errore di sintassa',
+'prefs-math' => 'Matematica',
'prefs-rc' => 'Ultimi cambiamenti',
'prefs-watchlist' => 'Articuli seguitati',
'columns' => 'Culonne:',
'searchresultshead' => 'Ricerca',
'localtime' => 'Ora lucale',
'allowemail' => 'Abilità a ricezzione di e-mail da altri utilizatori',
-'files' => 'Schedarii',
+'prefs-files' => 'Schedarii',
+'youremail' => 'Indirizzu e-mail:',
+'yourrealname' => 'U to veru nome:',
+'yourlanguage' => "Lingua di l'interfaccia:",
+'yourvariant' => 'Variante',
+'yournick' => 'Signatura pè e discussioni:',
# User rights
'editinguser' => "Mudifica di '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -267,7 +267,9 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'show' => 'mustrà',
# Recent changes linked
-'recentchangeslinked' => 'Cambiamenti assuciati',
+'recentchangeslinked' => 'Cambiamenti assuciati',
+'recentchangeslinked-feed' => 'Cambiamenti assuciati',
+'recentchangeslinked-toolbox' => 'Cambiamenti assuciati',
# Upload
'upload' => 'Incaricà un schedariu',
@@ -284,10 +286,10 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'listfiles_user' => 'Utilizatore',
# File description page
+'file-anchor-link' => 'Schedariu',
'filehist' => "Cronolugia di l'imagine",
'filehist-user' => 'Utilizatore',
'imagelinks' => 'Ligami',
-'noimage-linktext' => 'incaricà lu',
# Unused templates
'unusedtemplateswlh' => 'altri ligami',
@@ -299,7 +301,7 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'statistics' => 'Statistiche',
'statistics-header-users' => "Statistiche nant'à l'utilizatori",
-'brokenredirects-edit' => '(mudificà)',
+'brokenredirects-edit' => 'mudificà',
# Miscellaneous special pages
'ncategories' => '$1 {{PLURAL:$1|categuria|categurie}}',
@@ -393,6 +395,8 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'contribsub2' => 'Per $1 ($2)',
'month' => 'Da u mese (è nanzu):',
+'sp-contributions-talk' => 'discussione',
+
# What links here
'istemplate' => 'inclusione',
@@ -433,8 +437,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'allmessagescurrent' => 'Testu attuale',
'allmessagestext' => 'Istu hè u listinu di tutti i messaghji dispunibili in u spaziu MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ùn hè dispunibile perchè '''\$wgUseDatabaseMessages''' ùn hè micca attivu.",
-'allmessagesfilter' => "Filtru nant'à i messaghji:",
-'allmessagesmodified' => 'Mustrà solu i mudificati',
# Special:Import
'import-interwiki-submit' => 'Impurtà',
@@ -464,6 +466,9 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'anonymous' => 'Utilizatore(/i) anonimu(/i) di {{SITENAME}}',
'others' => 'altri',
+# Math errors
+'math_syntax_error' => 'errore di sintassa',
+
# Media information
'show-big-image' => 'Imagine in alta resoluzione',
@@ -479,7 +484,7 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'exif-artist' => 'Autore',
'exif-usercomment' => "Cummenti di l'utilizatore",
-'exif-orientation-1' => 'Nurmale', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Nurmale',
'exif-componentsconfiguration-0' => 'ùn esiste micca',
@@ -513,7 +518,7 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'watchlistedit-raw-titles' => 'Pagine:',
# Special:Version
-'version' => 'Versione', # Not used as normal message but as header for the special page itself
+'version' => 'Versione',
# Special:FilePath
'filepath-page' => 'Schedariu:',
diff --git a/languages/messages/MessagesCps.php b/languages/messages/MessagesCps.php
new file mode 100644
index 00000000..9259ed62
--- /dev/null
+++ b/languages/messages/MessagesCps.php
@@ -0,0 +1,946 @@
+<?php
+/** Capiznon (Capiceño)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Capisano
+ * @author Oxyzen
+ */
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Kuritan sa idalum ang mga link',
+'tog-highlightbroken' => 'I-pormat ang mga utod nga link nga <a href=""class="new"> parehos mini </a> (alternatibo: parehos mini<a href= class="internal">?</a>).',
+'tog-justify' => 'Tadlungon ang mga talata',
+'tog-hideminor' => 'Itago ang mga gamay nga ginliwat sang mini lang ginbag-o',
+'tog-hidepatrolled' => 'Itago ang mga napatrolya nga mga na-islan sang mini lang ginbag-o',
+'tog-newpageshidepatrolled' => 'Itago ang mga napatrolya nga mga pahina halin sa bag-o nga lista sang pahina',
+'tog-extendwatchlist' => 'Palapadon ang lista sang mga ginabantayan para makita ang tanan nga nagla-in, indi lang man ang pinakabag-o',
+'tog-usenewrc' => 'Gamiton ang ginpatahum nga mga bag-ong ilis {kinanglan ang Javascript}',
+'tog-numberheadings' => 'Insigida nga pag-isip sang numero sa mga titulo',
+'tog-showtoolbar' => 'Ipakita ang toolbar sang pag-ilis (kinahanglan ang JavaScript)',
+'tog-editondblclick' => 'Liwaton ang mga pahina sa duwa ka pindot {kinahanglan ang Javascript}',
+'tog-editsection' => 'Pasugtan ang pagilis sang mga seksyon pamaagi sa mga [ilis] nga link',
+'tog-editsectiononrightclick' => 'Pasugtan ang pag-ilis sang mga bahin pama-agi sa tu-o nga pagpindot sa mga titulo sang pahina {kinanglan ang JavaScript}',
+'tog-showtoc' => 'Ipakita ang listahan sang mga kaundan (sa mga pahina nga may madamu pa sa 3 ka titulo)',
+'tog-rememberpassword' => 'Dumdumon ang akon pagsulod sa mini nga kompyuter',
+'tog-editwidth' => 'Palapadun ang kahon sang pang-ilis para masudlan ang bilog nga screen',
+'tog-watchcreations' => 'Idugang sa akon balantayan ang mga pahina nga gin-ubra ko.',
+'tog-watchdefault' => 'Idugang sa akon balantayan ang mga pahina nga akon na-islan',
+'tog-watchmoves' => 'Idugang sa akon balantayan ang mga pahina nga akon ginsaylo',
+'tog-watchdeletion' => 'Idugang sa akon balantayan ang mga pahina nga akon ginpanas',
+'tog-minordefault' => 'Markahan ang tanan nga gin-islan nga gamay lang pamaagi sa default',
+'tog-previewontop' => 'Ipakita ang prebyu antes ang kahon sang pang-ilis',
+'tog-previewonfirst' => 'Ipakita ang prebyu sa una nga pag-ilis',
+'tog-nocache' => 'Pagbawalan ang paglubong sang pahina',
+'tog-enotifwatchlistpages' => 'Padal-an ako sang email kung ang pahina sa akon ginabanatayan nagbag-o',
+'tog-enotifusertalkpages' => 'Padal-an ako sang email kung ginbag-o ang akon nga pahina sang istoryahanay',
+'tog-enotifminoredits' => 'Padal-an man ako sang email sa mga gamay nga pag-ilis sang mini nga pahina',
+'tog-enotifrevealaddr' => 'Ipakita ang address sang akon email sa notipikasyon sang mga email',
+'tog-shownumberswatching' => 'Ipakita ang mga numero sang mga gatan-aw nga manug-usar',
+'tog-oldsig' => 'Prebyu sang mga buhi nga pirma:',
+'tog-fancysig' => 'Ituring ang pirma bilang teksto sang wiki (wala sang automatik nga link)',
+'tog-externaleditor' => 'Maggamit sang panggwa nga manug-ilis pamaagi sa default ( para sa mga ekspeto lang, kinanglan ang espesyal nga setting sa imo kumpyuter)',
+'tog-externaldiff' => 'Maggamit sang panggwa nga kinala-in pamaagi sa default ( para sa mga ekspeto lang, kinanglan ang espesyal nga setting sa imo kumpyuter)',
+'tog-showjumplinks' => 'Pasugtan ang mga "tumbo sa" kadali-an nga mga link',
+'tog-uselivepreview' => 'Maggamit sang buhi nga prebyu (kinanglan ang Javascript) (Eksperimental)',
+'tog-forceeditsummary' => 'Hambalan ako kung nagapasulod sang wala unod nga pag-ilis kabilugan',
+'tog-watchlisthideown' => 'Itago ang akon mga pagbag-o halin sa listahan sang mga ginabantayan',
+'tog-watchlisthidebots' => 'Itago ang mga pagbag-o sang mga bot halin sa listahan ng mga ginabantayan',
+'tog-watchlisthideminor' => 'Itago ang mga gamay nga pagbag-o halin sa listahan sang mga ginabantayan',
+'tog-watchlisthideliu' => 'Tagu-on ang mga pag-ilis sang mga nagsulod nga mga manug-usar halin sa listahan sang mga ginabantayan',
+'tog-watchlisthideanons' => 'Tagu-on ang mga pagbag-o sang wala nakilal-an nga mga manug-usar halin sa listahan sang mga ginabantayan',
+'tog-watchlisthidepatrolled' => 'Tagu-on ang napatrolya nga mga pagbag-o nga naghalin sa listahan sang mga ginabantayan',
+'tog-ccmeonemails' => 'Padal-an ako sang mga kopya sang mga ginpadala ko nga email sa iban nga manug-usar',
+'tog-diffonly' => 'Indi pag ipakita ang unod sang pahina sa idalum sang mga ginkala-in',
+'tog-showhiddencats' => 'Ipakita ang mga nakatago nga kategorya',
+'tog-norollbackdiff' => 'Dula-on ang mga ginkala-in pagkatapos ma-ubra ang pagligid pabalik sa una',
+
+'underline-always' => 'Perme',
+'underline-never' => 'Wala gid',
+'underline-default' => 'Browser nga gintakda',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Ilisan ang ginasakupan sang istilo sang font:',
+'editfont-default' => 'Browser nga gintakda',
+'editfont-monospace' => 'Isa ka lak-ang nga font',
+'editfont-sansserif' => 'Sans- serif nga font',
+'editfont-serif' => 'Serif nga font',
+
+# Dates
+'sunday' => 'Dominggo',
+'monday' => 'Lunes',
+'tuesday' => 'Martes',
+'wednesday' => 'Miyerkules',
+'thursday' => 'Huwebes',
+'friday' => 'Biyernes',
+'saturday' => 'Sabado',
+'sun' => 'Dom',
+'mon' => 'Lun',
+'tue' => 'Mar',
+'wed' => 'Miy',
+'thu' => 'Huw',
+'fri' => 'Biy',
+'sat' => 'Sab',
+'january' => 'Enero',
+'february' => 'Pebrero',
+'march' => 'Marso',
+'april' => 'Abril',
+'may_long' => 'Mayo',
+'june' => 'Hunyo',
+'july' => 'Hulyo',
+'august' => 'Agosto',
+'september' => 'Septiyembre',
+'october' => 'Oktubre',
+'november' => 'Nobiyembre',
+'december' => 'Disyembre',
+'january-gen' => 'Enero',
+'february-gen' => 'Pebrero',
+'march-gen' => 'Marso',
+'april-gen' => 'Abril',
+'may-gen' => 'Mayo',
+'june-gen' => 'Hunyo',
+'july-gen' => 'Hulyo',
+'august-gen' => 'Agosto',
+'september-gen' => 'Septiyembre',
+'october-gen' => 'Oktubre',
+'november-gen' => 'Nobiyembre',
+'december-gen' => 'Disyembre',
+'jan' => 'Ene',
+'feb' => 'Peb',
+'mar' => 'Mar',
+'apr' => 'Abr',
+'may' => 'May',
+'jun' => 'Hun',
+'jul' => 'Hul',
+'aug' => 'Ago',
+'sep' => 'Sep',
+'oct' => 'Okt',
+'nov' => 'Nob',
+'dec' => 'Dis',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategorya|Mga Kategorya}}',
+'category_header' => 'Mga pahina sa kategorya nga "$1"',
+'subcategories' => 'Mga subkategorya',
+'category-media-header' => 'Mga midya sa kategorya nga "$1"',
+'category-empty' => "''Ang mini nga kategorya wala nag-unod yanda sang pahina ukon midya''",
+'hidden-categories' => '{{PLURAL:$1|Nakatago nga kategorya|Nakatago nga mga kategorya}}',
+'hidden-category-category' => 'Nakatago nga mga kategorya',
+'category-subcat-count' => '{{PLURAL:$2|Mini nga kategorya ang may pangduha nga kategorya gid lang. |Mini nga kategorya may ara sang mga gasunod {{PLURAL:$1|subkategorya|$1 mga subkategorya}}, sa $2 kabilugan.}}',
+'category-subcat-count-limited' => 'Ang mini nga kategorya may ara sang nagasunod {{PLURAL:$1|ka subkategorya|$! ka mga subkategorya}}.',
+'category-article-count' => '{{PLURAL:$2|Mini nga kategorya naga-unod lang gid sang gasunod nga pahina.|Ang mga gasunod nga{{PLURAL:$1|pahina|$1 mga pahina}} sa mini nga kategroya, sa $2 nga kabilugan.}}',
+'category-article-count-limited' => 'Ang mga gasunod nga{{PLURAL:$1|ka pahina|$1 ka mga pahina}} ara yanda sa kategorya.',
+'category-file-count' => '{{PLURAL:$2|Mini nga kategorya naga-unod lang gid sang gasunod nga file. |Ang mga gasunod nga {{PLURAL:$1|ka pahina|$1 ka mga pahina}} sa mini nga kategroya, sa $2 nga kabilugan.}}',
+'category-file-count-limited' => 'Ang gasunod nga {{PLURAL:$1|ka file|$1 ka mga file}} ara sa yanda nga kategorya.',
+'listingcontinuesabbrev' => 'padayon',
+'index-category' => 'Na-index nga mga pahina',
+'noindex-category' => 'Wala na-index nga mga pahina',
+
+'mainpagetext' => "'''Madalag-on nga na-install ang MediaWiki.'''",
+'mainpagedocfooter' => 'Kunsultahon ang [http://meta.wikimedia.org/wiki/Help:Pagtuytoy sa Manug-usar] para sa impormasyon sa paggamit sang wiki nga "software".
+
+==Pag-umpisa==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista sang mga setting sang konpigurayon]
+* [http://www.mediawiki.org/wiki/Manual:FAQ Mga perme napangkot sa MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat sang MediaWiki]',
+
+'about' => 'Nahanungod sa',
+'article' => 'Pahina sang ka-undan',
+'newwindow' => '(gabukas sa bag-o nga bintana)',
+'cancel' => 'Kanselahon',
+'moredotdotdot' => 'Madamu pa...',
+'mypage' => 'Akon pahina',
+'mytalk' => 'Akon pag-istoryahanay',
+'anontalk' => 'Istoryahanay parte sa mini nga IP',
+'navigation' => 'Nabigayson',
+'and' => '&#32;kag',
+
+# Cologne Blue skin
+'qbfind' => 'Pangita-on',
+'qbbrowse' => 'Pangita-on',
+'qbedit' => 'Ilisan',
+'qbpageoptions' => 'Mini nga pahina',
+'qbpageinfo' => 'Konteksto',
+'qbmyoptions' => 'Akon mga pahina',
+'qbspecialpages' => 'Pinasahi nga mga pahina',
+'faq' => 'Mga perme napamangkot ("FAQ")',
+'faqpage' => "Project:Mga perme napamangkot (''FAQ'')",
+
+# Vector skin
+'vector-action-addsection' => 'Magdugang sang topiko',
+'vector-action-delete' => 'Panason',
+'vector-action-move' => 'Isdogon',
+'vector-action-protect' => 'Protektahan',
+'vector-action-undelete' => 'Indi pag panason',
+'vector-action-unprotect' => 'Indi pag protektahan',
+'vector-namespace-category' => 'Kategorya',
+'vector-namespace-help' => 'Pahina sang pagtabang',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pahina',
+'vector-namespace-media' => 'Pahina sang midya',
+'vector-namespace-mediawiki' => 'Mensahe',
+'vector-namespace-project' => 'Pahina sang proyekto',
+'vector-namespace-special' => 'Pinasahi nga pahina',
+'vector-namespace-talk' => 'Diskusyon',
+'vector-namespace-template' => 'Templeyt',
+'vector-namespace-user' => 'Pahina sang manug-usar',
+'vector-view-create' => 'Mag-ubra',
+'vector-view-edit' => 'Liwaton',
+'vector-view-history' => 'Ipakita ang kasaysayan',
+'vector-view-view' => 'Basahon',
+'vector-view-viewsource' => 'Lantawon ang ginhalinan',
+'actions' => 'Mga aksyon',
+'namespaces' => 'Espasyo sang pangalan',
+'variants' => 'Mga variant',
+
+'errorpagetitle' => 'Sala/Error',
+'returnto' => 'Balik sa $1.',
+'tagline' => 'Halin sa {{SITENAME}}',
+'help' => 'Tabang',
+'search' => 'Pangita-on',
+'searchbutton' => 'Pangita-on',
+'go' => 'Padayun',
+'searcharticle' => 'Padayun',
+'history' => 'Kasaysayan sang pahina',
+'history_short' => 'Kasaysayan',
+'updatedmarker' => 'na-update halin sang san-o ko lang nga pagbisita',
+'info_short' => 'Impormasyon',
+'printableversion' => 'Pang-imprinta nga bersyon',
+'permalink' => 'Permanente nga link',
+'print' => 'I-imprinta',
+'edit' => 'Liwaton',
+'create' => 'Ubrahon',
+'editthispage' => 'Islan mini nga pahina',
+'create-this-page' => 'I-ubrahon ang mini nga pahina',
+'delete' => 'Panason',
+'deletethispage' => 'Panason ang mini nga pahina',
+'undelete_short' => 'Suli-on ang pagpanas sang {{PLURAL:$1|isa ka pagbag-o|$1 ka mga pagbag-o}}',
+'protect' => 'Protektahan',
+'protect_change' => 'bag-uhon',
+'protectthispage' => 'Protektahan ang mini nga pahina',
+'unprotect' => 'Kuha-on ang pagprotekta',
+'unprotectthispage' => 'Kuha-on ang pagprotekta sang mini nga pahina',
+'newpage' => 'Bag-o nga pahina',
+'talkpage' => 'Diskusyonan ang mini nga pahina',
+'talkpagelinktext' => 'Istoryahanay',
+'specialpage' => 'Pinasahi nga pahina',
+'personaltools' => 'Mga kaugalingon nga kagamiton',
+'postcomment' => 'Bag-o nga seksyon',
+'articlepage' => 'Ipakita ang pahina sang ka-undan',
+'talk' => 'Pag-istoryahanay',
+'views' => 'Mga talanawon',
+'toolbox' => 'Mga galamiton',
+'userpage' => 'Tan-awon ang pahina sang manug-usar',
+'projectpage' => 'Tan-awon ang pahina sang proyekto',
+'imagepage' => 'Tan-awon ang pahina sang file',
+'mediawikipage' => 'Tan-awon ang pahina sang mensahe',
+'templatepage' => 'Tan-awon ang pahina sang templeyt',
+'viewhelppage' => 'Tan-awona ang pahina sang pagtabang',
+'categorypage' => 'Tan-awon ang pahina sang kategorya',
+'viewtalkpage' => 'Tan-awon ang diskusyon',
+'otherlanguages' => 'Sa iban nga linggwahe',
+'redirectedfrom' => '(Gindirekta liwat halin sa $1)',
+'redirectpagesub' => 'Pahina sang pagdirekta',
+'lastmodifiedat' => 'Ang mini nga pahina na-islan lang sang $1, sa $2.',
+'viewcount' => 'Nasudlan ang mini nga pahina sang {{PLURAL:$1|isa|$1}} ka beses.',
+'protectedpage' => 'Ginaprotektahan nga pahina',
+'jumpto' => 'Tumbo sa:',
+'jumptonavigation' => 'nabigayson',
+'jumptosearch' => 'Pangita-on',
+'view-pool-error' => 'Pasesnya, nasobrahan ka karga ang mga server yanda.
+Sobra kadamo nga mga manug-usar ang gusto makita ang mini nga pahina.
+Palihog maghulat sang madali gid lang antes mo tistingan nga sudlan liwat ang mini nga pahina.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Parte sa {{SITENAME}}',
+'aboutpage' => 'Project:Parte sa',
+'copyright' => 'Ang unod bakante sa idalum sang $1',
+'copyrightpage' => '{{ns:project}}:Karapatan sa pangpanag-iya',
+'currentevents' => 'Mga yanda nga hitabo',
+'currentevents-url' => 'Project: Mga yanda nga hitabo',
+'disclaimers' => 'Mga diskleymer',
+'disclaimerpage' => 'Project:Kabilugan nga diskleymer',
+'edithelp' => 'Bulig sa pag-ilis',
+'edithelppage' => 'Help:Pag-ilis',
+'helppage' => 'Help:Mga ka-undan',
+'mainpage' => 'Pangunahon nga pahina',
+'mainpage-description' => 'Pangunahon nga pahina',
+'policy-url' => 'Project:Patakaran',
+'portal' => 'Kaldtu-an sang banwa',
+'portal-url' => 'Project:Kaladtu-an sang banwa',
+'privacy' => 'Patakaran sa pagkapribado',
+'privacypage' => 'Project:Patakaran sa pagkapribado',
+
+'badaccess' => 'Sala sa pagla-ong',
+'badaccess-group0' => 'Indi ka pwede ubrahon ang aksyon nga imo ginla-ong.',
+'badaccess-groups' => 'Limitado ang aksyon nga imo ginla-ong sa mga manug-usar sa {{PLURAL:$2|ka hubon|sa isa ka mga hubon}}:',
+
+'versionrequired' => 'Kinanglan ang $1 nga bersyon sang MediaWiki',
+'versionrequiredtext' => 'Kinahanglan ang $1 nga bersyon sang MediaWiki para magamit ang mini nga pahina.
+Tan-awon ang [[Special:Version|pahina sang bersyon]].',
+
+'ok' => 'Sige',
+'retrievedfrom' => 'Nakuha halin sa "$1"',
+'youhavenewmessages' => 'May ara ka sang $1 ($2).',
+'newmessageslink' => 'mga bag-o nga mensahe',
+'newmessagesdifflink' => 'katapusan nga pag-ilis',
+'youhavenewmessagesmulti' => 'May mga bag-o ka nga mensahe sa $1',
+'editsection' => 'ilisan',
+'editold' => 'liwaton',
+'viewsourceold' => 'lantawon ang ginhalinan',
+'editlink' => 'islan',
+'viewsourcelink' => 'lantawon ang ginhalinan',
+'editsectionhint' => 'Liwaton mining bahin: $1',
+'toc' => 'Ka-undan',
+'showtoc' => 'ipakita',
+'hidetoc' => 'tagu-on',
+'thisisdeleted' => 'Tan-awon ukon ibalik ang sang una nga $1?',
+'viewdeleted' => 'Tan-awon ang $1?',
+'restorelink' => '{{PLURAL:$1|isa ka|$1}} pinanas nga ginbag-o',
+'feedlinks' => 'Pa-on:',
+'feed-invalid' => 'Sala nga sari sang sebisyo sang pagpaabot',
+'feed-unavailable' => 'Wala sang serbisyo halin sa pa-on sang sindikasyon',
+'site-rss-feed' => '$1 pa-on nga RSS',
+'site-atom-feed' => '$1 pa-on nga Atom',
+'page-rss-feed' => '"$1" ka pa-on nga RSS',
+'page-atom-feed' => '"$1" ka pa-on nga Atom',
+'red-link-title' => '$1 (wala mahimo ang mini nga pahina)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Pahina',
+'nstab-user' => 'Pahina sang manug-usar',
+'nstab-media' => 'Pahina sang midya',
+'nstab-special' => 'Pinasahi nga pahina',
+'nstab-project' => 'Pahina sang proyekto',
+'nstab-image' => 'File',
+'nstab-mediawiki' => 'Mensahe',
+'nstab-template' => 'Templeyt',
+'nstab-help' => 'Pahina sang tabang',
+'nstab-category' => 'Kategorya',
+
+# Main script and global functions
+'nosuchaction' => 'Wala sang mina nga aksyon',
+'nosuchactiontext' => 'Indi mabaton ang hulag nga ginhimo sang URL.
+Posible nga nagsala ka sa pagtype sang URL, ukon nagsunod sa isa ka sala nga link.
+Pwede man mini magpakita sang isa ka depekto nga ara sa sulod sang {{SITENAME}}.',
+'nosuchspecialpage' => 'Wala sang mina nga pinasahi nga pahina',
+'nospecialpagetext' => '<strong>Nagpangayo ikaw sang inbalido nga pinasahi nga pahina.</strong>
+
+Ang listahan sang inbalido nga mga pinasahi nga pahina makit-an sa [[Special:SpecialPages|{{int:specialpages}}]].',
+
+# General errors
+'error' => 'Sala',
+'databaseerror' => 'Diperensya sa database',
+'dberrortext' => 'May sala sa database query syntax.
+Posible tungod mini sa depekto sa software.
+Ang nagligad nga database query mini:
+<blockquote><tt>$1</tt></blockquote>
+nga halin sa ulubrahon nga "<tt>$2</tt>".
+Nagbalik sang sala nga "<tt>$3: $4</tt>" ang MySQL.',
+'dberrortextcl' => '',
+'laggedslavemode' => 'Pahibalo: Posible nga wala unod ang pahina sang mga yanda nga bag-ong nadugang.',
+'readonly' => 'Nakakandado ang database',
+'enterlockreason' => 'Maghatag sang kabangdanan sa pagkakandado, upod ang bana-bana kung san-o ang kandado ibuy-an',
+'readonlytext' => '',
+'missing-article' => 'Indi makita ang teksto nga pahina sa database nga dapat nakita na , na nangalanan "$1" $2.
+
+Ang rason kung ngaa nagakatabo mini kay may mga nagasunod bilang daan nga diff o link nga kasaysayan sa may pahina nga napanas.
+
+Kung indi mini ang kaso, basi may nakita ka nga guba ukon diperensiya sa software.
+Palihog isugid sa [[Special:ListUsers/sysop|tagapamahala]], kag i-lista ang iya URL.',
+'missingarticle-rev' => '(pagbag-o#: $1)',
+'missingarticle-diff' => '',
+'readonly_lag' => '',
+'internalerror' => 'Pangsulodlon nga diperensiya',
+'internalerror_info' => 'Pangsulodlon nga diperensiya: $1',
+'filecopyerror' => 'Indi makopya ang file nga "$1" pakadto sa "$2".',
+'filerenameerror' => 'Indi mapangalanan liwat ang file nga "$1" pakadto sa "$2".',
+'filedeleteerror' => 'Indi mapanas ang file nga "$1".',
+'directorycreateerror' => 'Indi maka-ubra sang direktoryo nga "$1".',
+'filenotfound' => 'Indi makita sang file nga "$1".',
+'fileexistserror' => 'Indi makasulat sa file nga "$1": buhi ang file',
+'unexpected' => 'Wala naekspektaran nga bili: "$1"="$2"',
+'formerror' => 'Kasal-anan: indi mapadala ang pormas',
+'badarticleerror' => '',
+'cannotdelete' => '',
+'badtitle' => 'Kala-in nga titulo',
+'badtitletext' => 'Ang ginapangayo nga titulo sang pahina sala, wala unod, ukon may indi insakto nga koneksyon sa inter-language ukon sa titulo sang interwiki.
+Pwede nga naga-unod mini sang isa ukon madamo pa nga mga karakter nga indi pwede gamiton sa mga titulo.',
+'perfcached' => '',
+'perfcachedts' => '',
+'querypage-no-updates' => '',
+'wrong_wfQuery_params' => '',
+'viewsource' => 'Lantawon ang ginhalinan',
+'viewsourcefor' => 'para sa $1',
+'actionthrottled' => 'Ginpunggan ang ulubrahon',
+'actionthrottledtext' => '',
+'protectedpagetext' => 'Ginkandaduhan ang mini nga pahina para indi ma-islan.',
+'viewsourcetext' => 'Pwede mo makita kag makopya ang ginhalinan sang mini nga pahina:',
+'protectedinterface' => "Nagahatag ang mini nga pahina sang teksto nga pangkatapusan (''interface'') para sa software, kag ikandado para mapunggan ang pag-abuso.",
+'editinginterface' => '',
+'sqlhidden' => '(nakatago ang pamangkot sang SQL)',
+'cascadeprotected' => '',
+'namespaceprotected' => "Wala ka sang permiso nga magliwat sang mga pahina nga ara sa namespace nga '''$1'''.",
+'customcssjsprotected' => 'Wala ka sang permiso nga bag-uhon ang ini nga pahina, tungod naga-unod ni sang mga pangkina-ugalingon nga gusto sang iban nga manug-usar.',
+'ns-specialprotected' => 'Indi pwede bag-uhon ang mga pinasahi nga pahina.',
+'titleprotected' => 'Naprotektahan ang mini nga titulo halin sa pag-ubra ni [[User:$1|$1]].
+Mini ang ginhatag nga kabangdanan "\'\'$2\'\'".',
+
+# Virus scanner
+'virus-badscanner' => "Sala nga konpigurasyon: wala nakilal-an nga manugsala sang virus: ''$1''",
+'virus-scanfailed' => '',
+'virus-unknownscanner' => '',
+
+# Login and logout pages
+'logouttext' => '',
+'welcomecreation' => '==Malipayon nga pag-abot, $1! ==
+Nahimo na ang imo account.
+Indi pagkalimtan nga islan ang imo [[Special:Preferences|mga uyon mo sa {{SITENAME}}]].',
+'yourname' => 'Hayo (username):',
+'yourpassword' => 'Password:',
+'yourpasswordagain' => 'Liwata ka pindot ang password:',
+'remembermypassword' => 'Dumduma ang pagsulod ko sa mini nga kompyuter',
+'yourdomainname' => 'Imo domain:',
+'login' => 'Mag sulod',
+'nav-login-createaccount' => 'Magsulod / maghimo account',
+'loginprompt' => '',
+'userlogin' => 'Mag sulod / mag-ubra account',
+'userloginnocreate' => 'Magsulod',
+'logout' => 'Maggwa',
+'userlogout' => 'Maggwa',
+'notloggedin' => 'Wala nakasulod',
+'nologin' => "Wala ka account? '''$1'''.",
+'nologinlink' => 'Mag-ubra account',
+'createaccount' => 'Mag-ubra account',
+'gotaccount' => "May account ka na bala? '''$1'''.",
+'gotaccountlink' => 'Magsulod',
+'createaccountmail' => 'Paagi sa email',
+'badretype' => 'Wala gasanto ang password nga imo ginsulod',
+'userexists' => 'May nagagamit na sang mina nga ngalan sang manug-usar.
+Magpili sang iban nga pangalan.',
+'loginerror' => 'Sala sa pagsulod',
+'createaccounterror' => 'Indi mahimo ang acount nga: $1',
+'noname' => 'Wala mo nahatag ang tsakto nga ngalan sang manug-usar.',
+'nouserspecified' => 'Kinanglan mo ihatag sang insakto ang ngalan sang manug-usar.',
+'wrongpassword' => 'Sala nga pagsulod sang password.
+Palihog tistingan liwat.',
+'wrongpasswordempty' => 'Wala unod ang password nga ginsulod.
+Palihog tistingan liwat.',
+'passwordtooshort' => 'Ang password dapat biskan {{PLURAL:$1|1 ka karakter|$1 ka mga karakter}}.',
+'password-name-match' => 'Dapat la-in ang imo password sa imo ngalan manug-usar.',
+'mailmypassword' => 'I-email ang bag-o nga password',
+'passwordremindertitle' => 'Bag-ong temporaryo nga password para sa {{SITENAME}}',
+'noemail' => 'Wala sang address sang email nga nakalista para sa manug-usar nga "$1".',
+'noemailcreate' => 'Kinahanglan mo maghatag sang pwede nga address sang email',
+'mailerror' => 'Kasal-anan sa pagpadala sang email: $1',
+'emailauthenticated' => 'Ang imo email address nakilal-an sang $2, $3.',
+'noemailprefs' => 'Tukuyon ang isa ka address sang email sa imo mga ginapalabi para sa mini nga mga pitsi-pitsi para maggana.',
+'emailconfirmlink' => 'Kumpirmahon ang imo address sang imo email.',
+'accountcreated' => 'Nahimo na ang account',
+'accountcreatedtext' => 'Nahimo na ang acount sang manug-usar para kay $1.',
+'createaccount-title' => 'Paghimo sang account para sa {{SITENAME}}',
+'usernamehasherror' => 'Ang ngalan sang manug-usar indi dapat mag-unod sang mga labay-labay nga mga karakter.',
+'loginlanguagelabel' => 'Lingguahe:',
+
+# Password reset dialog
+'resetpass' => 'Islan ang password',
+'resetpass_header' => 'Islan ang password sang account',
+'oldpassword' => 'Luma nga password:',
+'newpassword' => 'Bag-ong password:',
+'retypenew' => 'I-type liwat ang bag-o nga password:',
+'resetpass_submit' => 'Itakda ang password kag magsulod',
+'resetpass_forbidden' => 'Indi pwede ma-islan ang password',
+'resetpass-no-info' => 'Nakasulod ka dapat para makadtu-an ang mini nga pahina sang diretso.',
+'resetpass-temp-password' => 'Temporaryo nga password:',
+
+# Edit page toolbar
+'bold_sample' => 'Madukot nga teksto',
+'bold_tip' => 'Madukot nga teksto',
+'italic_sample' => 'Gahilay nga teksto',
+'italic_tip' => 'Gahilay nga teksto',
+'link_sample' => 'Titulo sang link',
+'link_tip' => 'Sa sulod nga link',
+'extlink_sample' => 'http://www.sampol.com titulo nga link',
+'extlink_tip' => 'Halin sa gwa nga link (tandaan ang http:// nga prefiks)',
+'headline_sample' => 'Teksto sang pangulong-dinalan',
+'headline_tip' => 'Lebel 2 pangulong-dinalan',
+'math_sample' => 'Isulod ang diya pormula',
+'math_tip' => 'Pormula nga pangmatematika (LaTeX)',
+'nowiki_sample' => 'Isal-ot ang wala na-format nga teksto diya',
+'nowiki_tip' => 'Pabay-an ang wiki nga sulundan',
+'image_tip' => 'Ginpilit nga file',
+'media_tip' => 'Link sa file',
+'sig_tip' => 'Imo pirma upod sang timestamp',
+'hr_tip' => 'Gapahigda nga linya (gamiton sang laka)',
+
+# Edit pages
+'summary' => 'Kabilugan:',
+'subject' => 'Ginatukoy/pangulong-dinalan:',
+'minoredit' => 'Ini gamay nga pag-ilis',
+'watchthis' => 'Bantayan mining pahina',
+'savearticle' => 'I-save mining mga pahina',
+'preview' => 'Prebyu',
+'showpreview' => 'Ipakita ang preview',
+'showdiff' => 'Ipakita ang inislan',
+'anoneditwarning' => "'''Pa-andam:''' Wala ka pa nakasulod.
+Igasulat ang imo IP adres sa historya sang mga inislan sang mini nga pahina.",
+'missingcommenttext' => 'Palihog isulod ang komento sa idalum.',
+'summary-preview' => 'Kabilugan nga prebyu:',
+'newarticle' => '(Bag-o)',
+'newarticletext' => "Ginsundan mo ang pahina nga wala pa gagana.
+Para ubrahon ang pahina, umpisahan nga mag-type sa kahon sa idalum (tan-awon ang [[{{MediaWiki:Helppage}}|pahina sang tabang]] para sa madamo pa nga info).
+Kung ari ka diya tungod sa sala, pinduton ang ('''back''') nga buton sang imo nga browser.",
+'noarticletext' => 'Wala yanda sang teksto ang mini nga pahina.
+Pwede ka [[Special:Search/{{PAGENAME}}|mangita para sa titulo sang mini nga pahina]] sa iban man nga pahina,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mangita ka sang pareho nga logs],
+o [{{fullurl:{{FULLPAGENAME}}|action=edit}} islan ini nga pahina]</span>.',
+'previewnote' => "'''Tandaan nga prebyu lang mini.'''
+Wala pa na-save ang imo mga gin-islan!",
+'editing' => 'Gina-islan ang $1',
+'editingsection' => 'Ginaliwat ang $1 (seksiyon)',
+'copyrightwarning' => "Panumduma nga ang tanan nga nabulig sa {{SITENAME}} ginakonsidera nga i-release sa idalum sang $2 (lantawon ang $1 para sa mga detalye). Kung indi mo gusto ma-ilisan ang imo sinulatan sang wala lu-oy kag ginapalapta sang basta basta, indi na lang pag-ipasa diya.<br />Ginapromisahan mo man kami nga ikaw ang nagsulat mini, ukon ginkopya mo halin sa isa ka pampubliko nga domain ukon sa pareho nga mga libre nga kuluha-an. ' ' 'Indi pag-ipasa ang mga copyrighted nga ubra nga wala sing permiso! ' ' '",
+'templatesused' => '{{PLURAL:$1|Templeyt|Mga templeyt}} nga gina-usar sa mini nga pahina:',
+'templatesusedpreview' => '{{PLURAL:$1|ka templeyt|ka mga templeyt}} ang ginagamit sa mini nga prebyu:',
+'template-protected' => '(protektado)',
+'template-semiprotected' => '(medyo protektado)',
+'hiddencategories' => 'Ang mini nga pahina myembro sang {{PLURAL:$1|1 ka nakatago nga kategorya|$1 ka mga nakatago nga kategorya}}:',
+'permissionserrorstext-withaction' => 'Wala ka sang permiso para $2, sang mga gasunod {{PLURAL:$1|ka rason|ka mga rason}}:',
+
+# History pages
+'viewpagelogs' => 'Tan-awon ang mga paglista para sa mini nga pahina',
+'currentrev-asof' => 'Bag-o nga rebisyon sang $1 gid lang',
+'revisionasof' => 'Pagbag-o halin sang $1',
+'previousrevision' => '← Daan nga rebisyon',
+'nextrevision' => 'Mas bag-o nga pagbag-o →',
+'currentrevisionlink' => 'Mga inislan yanda',
+'cur' => 'yanda',
+'last' => 'ulihi',
+'histlegend' => "Ikumpara ang mga ginpili: markahi ang mga radyo buton sang mga bersyon para makumpara kag pinduton ang \"enter\" ukon ang buton sa idalum.<br />Pananda: '''({{int:cur}})''' = ang ginkala-in niya sa yanda nga rebisyon,
+'''({{int:last}})''' = ang ginalain niya sa gapadayun nga rebisyon, '''{{int:minoreditletter}}''' = gamay nga pag-ilis.",
+'history-fieldset-title' => 'Tulutan-awon sa kasaysayan',
+'histfirst' => 'Pinaka-una',
+'histlast' => 'Pinakabag-o',
+
+# Revision deletion
+'rev-delundel' => 'ipakita/itago',
+'revdel-restore' => 'Bag-uhon ang lebel sang pwede makit-an',
+
+# Merge log
+'revertmerge' => 'Di pag-upod',
+
+# Diffs
+'history-title' => 'Kasaysayan sang pagbag-o sang "$1"',
+'difference' => '(Ginkala-in sang mga rebisyon)',
+'lineno' => 'Linya $1:',
+'compareselectedversions' => 'I-kumpara ang pinili-an nga mga rebisyon',
+'editundo' => 'ibalik ang pag-ilis',
+
+# Search results
+'searchresults' => 'Resulta sang pagpangita',
+'searchresults-title' => 'Resulta sang Pagpangita para "$1"',
+'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa ang [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
+'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
+'searchsubtitleinvalid' => "Ginapangita mo ang '''$1'''",
+'notitlematches' => 'Wala sang pareho nga titulo sang pahina',
+'notextmatches' => 'Wala sang pahina sang teksto nga pareho',
+'prevn' => 'antes {{PLURAL:$1|$1}}',
+'nextn' => 'sunod {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Lantawon ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 ka tinaga|$2 ka mga tinaga}})',
+'search-redirect' => '(gindirekta ang $1)',
+'search-section' => '(seksiyon $1)',
+'search-suggest' => 'Ambot mo silingon: $1',
+'search-interwiki-caption' => 'Mga utod nga proyekto',
+'search-interwiki-default' => '$1 mga resulta:',
+'search-interwiki-more' => '(mas damu pa)',
+'search-mwsuggest-enabled' => 'may mga suhestiyon',
+'search-mwsuggest-disabled' => 'wala suhestiyon',
+'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ang ginapangita depende sa gintakda.
+Tistingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina pag-istoryahanay, templeyts, etc), ukon gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
+'powersearch' => 'Abanse nga pagpangita',
+'powersearch-legend' => 'Abanse nga pagpangita',
+'powersearch-ns' => 'Magpangita sa mga espasyo sang pangalan:',
+'powersearch-redir' => 'Lista sang mga gindirekta liwat',
+'powersearch-field' => 'Pangita-on ang',
+
+# Preferences page
+'preferences' => 'Mga ginapalabi',
+'mypreferences' => 'Akon mga ginapalabi',
+
+# Groups
+'group-sysop' => 'Mga manugdumala',
+
+'grouppage-sysop' => '{{ns:project}}:Mga manugdumala',
+
+# User rights log
+'rightslog' => 'Lista sang mga karapatan sang manug-usar',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'liwaton mini nga pahina',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|ka pagbag-o|ka mga pagbag-o}}',
+'recentchanges' => 'Mga bag-o lang na-islan',
+'recentchanges-legend' => 'Mga pilili-an sa bag-o lang na-islan',
+'recentchanges-feed-description' => 'Sundon ang pinakabag-o nga nahimo sa wiki sa mini nga feed.',
+'rcnote' => "Diya sa idalum may {{PLURAL:$1|'''1''' ka bag-o| '''$1''' ka mga nabag-o}} sang naligad nga {{PLURAL:$2|ka adlaw|'''$2''' ka adlaw}}, sang mini nga $5, $4.",
+'rclistfrom' => 'Ipakita ang bag-o nga mga na-islan halin sa $1',
+'rcshowhideminor' => '$1 gamay nga mga inislan',
+'rcshowhidebots' => '$1 ka bots',
+'rcshowhideliu' => '$1 ka mga gagamit nga naka-sulod',
+'rcshowhideanons' => '$1 ang wala nakilal-an nga mga ga-usar',
+'rcshowhidemine' => '$1 akon mga na-islan',
+'rclinks' => 'Ipakita ang nagligad ka $1 nga nabag-o lang gid sang $2 ka adlaw<br />$3',
+'diff' => 'ginkala-in',
+'hist' => 'kasaysayan',
+'hide' => 'Itago',
+'show' => 'Ipakita',
+'minoreditletter' => 'minor',
+'newpageletter' => 'B',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Ipakita ang mga detalye (kinahanglan sang JavaScript)',
+'rc-enhanced-hide' => 'Tagu-on ang mga detalye',
+
+# Recent changes linked
+'recentchangeslinked' => 'Mga labot sa pag-ilis',
+'recentchangeslinked-title' => 'Mga lain nga may angot sa "$1"',
+'recentchangeslinked-summary' => "Mini ang lista sang mga bag-o lang gid nahimo nga mga pahina nga gin-link halin sa ginklaro nga pahina (o mga kaupod sa mga kategorya nga ginklaro).
+Mga Pahina sa [[Special:Watchlist|imo watchlist]] '''madukot'''.",
+'recentchangeslinked-page' => 'Ngalan ka pahina:',
+'recentchangeslinked-to' => 'Ipakita na lang ang la-in sa pahina nga gin-link sa ginhatag nga pahina',
+
+# Upload
+'upload' => 'Magpasulod sang file',
+'uploadlogpage' => 'Lista sang upload',
+'uploadedimage' => 'na-upload ang "[[$1]]"',
+
+# File description page
+'filehist' => 'Kasaysayan sang file',
+'filehist-help' => 'Pinduton sa may petsa/oras para makita ang file sa mina nga oras.',
+'filehist-current' => 'yanda',
+'filehist-datetime' => 'Petsa/Oras',
+'filehist-thumb' => 'Thumbnail',
+'filehist-thumbtext' => 'Thumbnail para sa bersiyon sang $1',
+'filehist-user' => 'Naga-usar',
+'filehist-dimensions' => 'Mga takus',
+'filehist-comment' => 'Kumento',
+'imagelinks' => 'Mga link sang file',
+'linkstoimage' => 'Ang nagasunod {{PLURAL:$1|pahina nga nagalink|$1 mga pahina nga nagalink}} sa mini nga file:',
+'sharedupload' => 'Ang mini nga file halin sa $1 kag pwede magamit sang iban pa nga mga proyekto.',
+'uploadnewversion-linktext' => 'Mag-upload sang bag-o nga bersiyon sang mini nga file',
+
+# Statistics
+'statistics' => 'Mga estadistika',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|ka bite|ka mga bite}}',
+'nmembers' => '$1 {{PLURAL:$1|ka myembro|ka mga myembro}}',
+'prefixindex' => 'Tanan nga mga pahina nga may prefiks',
+'newpages' => 'Mga bag-o nga pahina',
+'move' => 'Isdogon',
+'movethispage' => 'Isdogon mining pahina',
+'pager-newer-n' => '{{PLURAL:$1|mas bag-o nga 1|mas bag-o nga $1}}',
+'pager-older-n' => '{{PLURAL:$1|mas daan nga 1|mas daan nga $1}}',
+
+# Book sources
+'booksources' => 'Mga makuhaan nga libro',
+'booksources-search-legend' => 'Magpangita sa makuha-an nga mga libro',
+'booksources-go' => 'Padayon',
+
+# Special:Log
+'log' => 'Mga Listahan',
+
+# Special:AllPages
+'allpages' => 'Tanan nga pahina',
+'alphaindexline' => '$1 asta sa $2',
+'prevpage' => 'Antes nga pahina ($1)',
+'allpagesfrom' => 'Ipakita ang mga pahina halin sa:',
+'allpagesto' => 'Ipakita ang mga pahina nga nagatapos sa:',
+'allarticles' => 'Tanan nga pahina',
+'allpagessubmit' => 'Padayun',
+
+# Special:LinkSearch
+'linksearch' => 'Panggwa nga mga link',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Listahan sang pag-ubra sang manug-usar',
+'newuserlog-create-entry' => 'Bag-o nga manug-usar',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(lista sang mga myembro)',
+
+# E-mail user
+'emailuser' => 'I-email mini nga naga-usar',
+
+# Watchlist
+'watchlist' => 'Mga akon ginabantayan',
+'mywatchlist' => 'Akon ginabantayan',
+'watchlistfor' => "(para sa '''$1''')",
+'addedwatch' => 'Gindugang sa lista sang ginabantayan',
+'addedwatchtext' => "Ang pahina nga \"[[:\$1]]\" gindugang na sa imo [[Special:Watchlist|ginabantayan]].
+Ang mga pagbag-o sa buwas-damlag kag mga kaangot nga pahina sang istoryahanay pagalistahon diya, kag ang pahina maggwa nga '''madukot''' sa [[Special:RecentChanges|lista sang mga nagligad nga pagbag-o]] para mas mahapos makita.",
+'removedwatch' => 'Ginkuha na sa lista sang ginabanatayan',
+'removedwatchtext' => 'Ang pahina nga "[[:$1]]" ginkakas halin sa [[Special:Watchlist|imo lista sang ginabantayan]].',
+'watch' => 'Bantayan',
+'watchthispage' => 'Bantayan ang mini nga pahina',
+'unwatch' => 'Di pagbantayan',
+'watchlist-details' => '{{PLURAL:$1|$1 ka pahina|$1 ka mga pahina}} sa imo listahan sang ginabantayan, wala madala ang mga pahina sang istoryahanay.',
+'wlshowlast' => 'Ipakita ang nagligad nga $1 ka mga oras $2 ka mga adlaw $3',
+'watchlist-options' => 'Pililian para sa listahan sang mga ginabantayan',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Ginabantayan...',
+'unwatching' => 'Wala ginabantayan...',
+
+# Delete
+'deletepage' => 'Panason ang pahina',
+'confirmdeletetext' => 'Imo na pagapanason ang isa ka pahina kaupod sang iya mga kasaysayan.
+Palihog kumpirmahon nga intensyon mo nga himu-on mini, nga na-intindihan mo ang abtan, kag gina-ubra mo mini nga nagasunod sa [[{{MediaWiki:Policy-url}}|patakaran]].',
+'actioncomplete' => 'Tapos na ang aksyon',
+'deletedtext' => 'Napanas na ang "<nowiki>$1</nowiki>".
+Tan-awon ang $2 para sa nalista sang mga bag-o lang napanas.',
+'deletedarticle' => 'ginpanas ang "[[$1]]"',
+'dellogpage' => 'Lista sang pagpanas',
+'deletecomment' => 'Rason:',
+'deleteotherreason' => 'Iban pa/dugang nga rason:',
+'deletereasonotherlist' => 'Iban nga rason',
+
+# Rollback
+'rollbacklink' => 'paligidon pabalik',
+
+# Protect
+'protectlogpage' => 'Listahan sang proteksiyon',
+'protectedarticle' => 'ginaprotektahan nga "[[$1]]"',
+'modifiedarticleprotection' => 'binag-o nga lebel sang proteksiyon para sa "[[$1]]"',
+'protectcomment' => 'Rason:',
+'protectexpiry' => 'Maga-ekspayr sa:',
+'protect_expiry_invalid' => 'Indi pwede ang oras sang pag-ekspayr.',
+'protect_expiry_old' => 'Sang nagligad pa ang oras sang pag-ekspayr.',
+'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diya para sa pahina nga '''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Ang imo account wala nakala-ong para magpangbag-o sang proteksyon nga lebel sang pahina.
+Ari ang mga mga settings yanda para sa pahina nga '''$1''':",
+'protect-cascadeon' => 'Protektado ang mini nga pahina kay nasakop mini sa mga gasunod nga {{PLURAL:$1|pahina, nga may|mga pahina, nga may}} pasunod nga proteksiyon nga naga-andar.
+Pwede mo mabag-o ang lebel sang proteksiyon sang mini nga pahina, pero indi ma-apektuhan ang pasunod nga proteksiyon.',
+'protect-default' => 'Pasugtan ang tanan nga naga-usar',
+'protect-fallback' => 'Kinahanglan sang pag-la-ong nga $1',
+'protect-level-autoconfirmed' => 'Punggan ang bag-o kag di-rehistrado nga mga naga-usar',
+'protect-level-sysop' => 'Mga gapamahala lang',
+'protect-summary-cascade' => 'nagapasunod',
+'protect-expiring' => 'Ma-ekspayr sa $1 (UTC)',
+'protect-cascade' => 'Protektahan ang mga pahina nga ka-upod sa mini nga pahina (pasunod nga proteksiyon)',
+'protect-cantedit' => 'Indi mo pwede mabag-o ang lebel sang proteksiyon sang mini nga pahina, kay wala ka nakala-ong para islan mini.',
+'restriction-type' => 'Pahatnugot:',
+'restriction-level' => 'Lebel sang pagbawal:',
+
+# Undelete
+'undeletelink' => 'tan-awon/ibalik',
+'undeletedarticle' => 'ginbalik ang "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Espasyo sang pangalan:',
+'invert' => 'Suli-on ang seleksyon',
+'blanknamespace' => '(Mayor)',
+
+# Contributions
+'contributions' => 'Mga nabulig sang manug-usar',
+'contributions-title' => 'Mga nabulig sang tagagamit nga si $1',
+'mycontris' => 'Akon nabulig',
+'contribsub2' => 'Para kay $1 ($2)',
+'uctop' => '(ibabaw)',
+'month' => 'Halin sa bulan (kag sa mas timprano):',
+'year' => 'Halin sa tu-ig (kag sa mas timprano):',
+
+'sp-contributions-newbies' => 'Ipakita lang gid ang mga kontribusyon sang mga bag-o nga account',
+'sp-contributions-blocklog' => 'Lista sang pagbangga',
+'sp-contributions-search' => 'Mangita sang mga nabulig',
+'sp-contributions-username' => 'IP address ukon hayo (username):',
+'sp-contributions-submit' => 'Pangita-on',
+
+# What links here
+'whatlinkshere' => 'Ang naga-link diya',
+'whatlinkshere-title' => 'Mga pahina nga naga-link sa $1',
+'whatlinkshere-page' => 'Pahina:',
+'linkshere' => "Ang mga gasunod nga pahina ga-link sa '''[[:$1]]''':",
+'isredirect' => 'pahina pangdirekta',
+'istemplate' => 'transklusyon',
+'isimage' => 'Link sang litrato',
+'whatlinkshere-prev' => '{{PLURAL:$1|antes|antes $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|sunod|sunod nga $1}}',
+'whatlinkshere-links' => '← mga link',
+'whatlinkshere-hideredirs' => '$1 ka mga gindirekta liwat',
+'whatlinkshere-hidetrans' => '$1 ang mga transklusyon',
+'whatlinkshere-hidelinks' => '$1 ang mga link',
+'whatlinkshere-filters' => 'Mga pangsala',
+
+# Block/unblock
+'blockip' => 'Punggan ang naga-usar',
+'ipboptions' => '2 oras:2 hours,1 adlaw:1 day,3 adlaw:3 days,1 semana:1 week,2 semana:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tu-ig:1 year,wala katapusan:infinite',
+'ipblocklist' => 'Napunggan nga mga IP Address kag mga bansag (usernames)',
+'blocklink' => 'bangga-an',
+'unblocklink' => 'di pagpunggan',
+'change-blocklink' => 'pagbag-o sang bangga',
+'contribslink' => 'nabulig',
+'blocklogpage' => 'Lista sang pagbangal',
+'blocklogentry' => 'nabangga-an nga [[$1]] nga magatapos sa $2 $3',
+'unblocklogentry' => 'di pagpunggan si $1',
+'block-log-flags-nocreate' => 'pag-ubra sang account ginbawalan',
+
+# Move page
+'movepagetext' => "Gamit ang pormas sa idalum magala-in ang ngalan sang pahina, masaylo ang tanan nga kasaysayan niya sa bag-o niya nga pangalan.
+Ang daan nga titulo mangin isa ka pahina sang pagdirekta sa bag-o nga titulo.
+Pwede mo ma-update ang mga pagdirekta nga gakadto sa orihinal nga titulo sang diretso.
+Kung indi mo gusto, siguraduhon nga may [[Special:DoubleRedirects|doble]] ukon [[Special:BrokenRedirects|bali nga pangdirekta]].
+Ikaw ang responsable sa pagsiguro nga ang mga links nagapadayon sa pagtudlo kung sa diin sila dapat makadto.
+
+Tandaan nga ang pahina '''indi''' masaylo kung may ara na sang pahina sa bag-o nga titulo, kung indi man wala mini sang unod ukon may pagdirekta kag wala mini sang nagligad nga kasayasayan sa pag-ilis.
+Anbot silingon sini nga pwede mo man ma-islan ngalan ang pahina pabalik sa kung diin mini gin-ngalanan kung nagsala ikaw, kag indi mo matapakan sulat ang mini nga na-una nga pahina.
+
+'''Paandam!'''
+Mini mangin isa ka mala-in kag wala gina-ekspektaran nga pagbag-o para sa isa ka sikat nga pahina;
+siguraduhon nga na-intyendihan mo ang paga-abtan sini antes magpadayun.",
+'movepagetalktext' => "Ang na-upod nga pahina sang istoryahanay diretso nga ma-upod sa iya '''apang:'''
+*Ang indi blangko ngapahina sang istoryahanay ara na nga bal-an sa idalum sa bag-o nga ngalan, ukon
+*Wala mo nachekan ang mga kahon sa idalum.
+
+Sa mga mini nga kaso, kinahanglan mo hulagon ang pahina nga ikaw mismo, kung gusto mo.",
+'movearticle' => 'Sayluhon mining pahina:',
+'newtitle' => 'Pakadto sa bag-o nga titulo:',
+'move-watch' => 'Bantayan ang mini nga pahina',
+'movepagebtn' => 'Sayluhon mini nga pahina',
+'pagemovedsub' => 'Nadayon ang pagsaylo',
+'movepage-moved' => '\'\'\'"Nasaylo na ang "$1" pakadto sa "$2"\'\'\'',
+'articleexists' => 'May-ara na sang pahina nga kapareho sang imo titulo, ukon ang ngalan nga imo ginpili indi pwede.
+Palihog pili liwat sang bag-o nga ngalan.',
+'talkexists' => "'''Nasaylo na mismo ang mina nga pahina, pero ang pahina sang istoryahanay indi masaylo kay may ara na sang nakakuha sang bag-o nga titulo.
+Palihog pakikombinar sa ila sang manomano.'''",
+'movedto' => 'ginsaylo sa',
+'movetalk' => 'Isaylo ang kaangot nga pahina sang istoryahanay',
+'1movedto2' => 'Ang [[$1]] gin-saylo na sa [[$2]]',
+'1movedto2_redir' => 'Ang [[$1]] ginsaylo sa [[$2]] sa ibabaw sang pagdirekta',
+'movelogpage' => 'Lista sang pagsaylo',
+'movereason' => 'Rason:',
+'revertmove' => 'ibalik',
+
+# Export
+'export' => 'I-eksport ang mga pahina',
+
+# Thumbnails
+'thumbnail-more' => 'Padaku-on',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Ang imo kaugalingon nga pahina',
+'tooltip-pt-mytalk' => 'Ang imo pahina sang pag-istoryahanay',
+'tooltip-pt-preferences' => 'Akon ginapalabi',
+'tooltip-pt-watchlist' => 'Ang lista sang mga pahina nga imo ginabantayan sa mga pagbag-o',
+'tooltip-pt-mycontris' => 'Lista sang imo kontribusyon',
+'tooltip-pt-login' => 'Gina-abi-abi ikaw nga magsulod man paagi sa pag log-in, pero indi mini pilitay',
+'tooltip-pt-logout' => 'Maggwa',
+'tooltip-ca-talk' => 'Pag-istoryahahay parte sa mini nga pahina',
+'tooltip-ca-edit' => 'Pwede mo islan ang unod sang mini nga pahina. Palihog gamit sang preview button antes mangin permanente ang gin-islan.',
+'tooltip-ca-addsection' => 'Mag-umpisa sang bag-o nga seksyon',
+'tooltip-ca-viewsource' => 'Naprotektahan ang mini nga pahina.
+Pwede mo matan-aw ang iya ginhalinan',
+'tooltip-ca-history' => 'Nagligad nga rebisyon sa mini nga pahina',
+'tooltip-ca-protect' => 'Protektahan ang mini nga pahina',
+'tooltip-ca-delete' => 'Panason mini nga pahina',
+'tooltip-ca-move' => 'Isdogon mining pahina',
+'tooltip-ca-watch' => 'I-dugang mini nga pahina sa imo listahan sang palangitaon',
+'tooltip-ca-unwatch' => 'Kuhaon mini nga pahina sa imo lista sang ginabantayan',
+'tooltip-search' => 'Pangita-a sa {{SITENAME}}',
+'tooltip-search-go' => 'Kadtu-an ang isa ka pahina nga may mini gid nga insakto nga pangalan.',
+'tooltip-search-fulltext' => 'Pangita-on ang mga pahina para sa mini nga teksto',
+'tooltip-n-mainpage' => 'Magkadto sa pangunahon nga pahina',
+'tooltip-n-mainpage-description' => 'Bisitahon ang Mayor nga Panid',
+'tooltip-n-portal' => 'Parte sa proyekto, ano ang imo mahimo, di-in makakita sang mga bagay.',
+'tooltip-n-currentevents' => 'Pangita-on sang basehan nga impormasyon parte sa mga gakalatabo yanda',
+'tooltip-n-recentchanges' => 'Ang listahan sang mini lang ginbag-o sa wiki.',
+'tooltip-n-randompage' => 'Mag-load sang pahina biskan diin',
+'tooltip-n-help' => 'Ang lugar para mabal-an',
+'tooltip-t-whatlinkshere' => 'Listahan sang tanan nga pahina sang wiki nga naga-link diya',
+'tooltip-t-recentchangeslinked' => 'Bag-o lang gid nahimo nga mga pahina nga gin-link halin sa mini nga pahina',
+'tooltip-feed-rss' => 'RSS feed para sa mini nga pahina',
+'tooltip-feed-atom' => 'Atom feed para sa mini nga pahina',
+'tooltip-t-contributions' => 'Lantawon ang listahan sang mga nagbulig sang mini nga naga-usar',
+'tooltip-t-emailuser' => 'Padal-an sang e-mail sa mini nga naga-usar',
+'tooltip-t-upload' => 'Magpasulod sang mga files',
+'tooltip-t-specialpages' => 'Listahan sang tanan nga pinasahi nga pahina',
+'tooltip-t-print' => 'Bersiyon nga pwede ma-printa sa mini nga pahina',
+'tooltip-t-permalink' => 'Permanente nga link sa mini nga rebisyon sang pahina',
+'tooltip-ca-nstab-main' => '
+Lantawon ang unod sang pahina',
+'tooltip-ca-nstab-user' => 'Tan-awon ang pahina sang naga-usar',
+'tooltip-ca-nstab-special' => 'Pinasahi mini nga pahina, indi mo ma-islan ang mismo nga pahina',
+'tooltip-ca-nstab-project' => 'Tan-awon ang pahina sang proyekto',
+'tooltip-ca-nstab-image' => 'Tan-awon ang pahina sang file',
+'tooltip-ca-nstab-template' => 'Tan-awon ang templeyt',
+'tooltip-ca-nstab-category' => 'Tan-awon ang pahina sang kategorya',
+'tooltip-minoredit' => 'Markahan mini nga daw gamay lang nga pag-ilis',
+'tooltip-save' => 'I-save imo ginpang-islan',
+'tooltip-preview' => 'I-prebyu ang imo mga ginbag-o, palihog gamiton mo mini antes mo i-save!',
+'tooltip-diff' => 'Ipakita ang mga gin-ubra mo nga bag-o sa teksto',
+'tooltip-compareselectedversions' => 'Lantawa ang ginkala-in sang duwa ka napilian nga rebisyon sa mini nga pahina',
+'tooltip-watch' => 'Idugang mini nga pahina sa imo lista nga ginabantayan',
+'tooltip-rollback' => '"Rollback" ginabalik ang (mga) na-islan sa mini nga pahina sa pinaka-ulihi nga gabulig sa isa lang ka klik',
+'tooltip-undo' => '"Indi pag-ubrahon" ginabalik ang gin-islan kag gabukas sa isalin form sa may prebyu mode.
+Ginapasugtan sa pagdugang sang rason sa kabilugan.',
+
+# Browsing diffs
+'previousdiff' => '← Mas daan nga na-islan',
+'nextdiff' => 'Mas bag-o nga gin-islan →',
+
+# Media information
+'file-info-size' => '($1 × $2 piksel, kadakuon sang file: $3, klase sang MIME: $4)',
+'file-nohires' => '<small>Wala na sang mas mataas pa nga resolusyon (katin-aw).</small>',
+'svg-long-desc' => '(SVG file, nga ara sa $1 × $2 ka piksels, kadakuon sang file: $3)',
+'show-big-image' => 'Bilog nga resolusyon (katin-aw)',
+'show-big-image-thumb' => '<small>Kadakuon sang mini nga prebyu: $1 × $2 piksels</small>',
+
+# Bad image list
+'bad_image_list' => 'Ang pormat nga pagasundon:
+
+Mini lang gid nga lista sang mga bagay (mga linya nga ga-umpisa sa *) ang ginapasugtan.
+Ang una nga link sa isa ka linya ginakinahanglan naga-link sa isa ka mala-in nga file.
+Anuman nga pasunod nga link sa parehas nga linya ginasugtan bilang eksepsyon, i.e. mga pahina nga kung sa diin ang file nagapasunod.',
+
+# Metadata
+'metadata' => 'Metadata',
+'metadata-help' => 'Ang mini nga file naga-unod sang dugang nga impormasyon, posible nga gindugan halin sa digital camera ukon skaner nga gingamit ukon gin-digitize mini.
+Kung ang file ginliwat halin sa orihinal nga porma, indi mapakita sang iban nga detalye ang mga ginbag-o nga file.',
+'metadata-expand' => 'Ipakita ang mga dugang nga detalye',
+'metadata-collapse' => 'Itago ang mga dugang nga detalye',
+'metadata-fields' => 'Ang mga lugar sang EXIF metadata nga nalista sa mini nga mensahe pagadal-on sa mga laragway nga ginapakita sa pahina kung maguba ang tabla sang metadata.
+Ang iban ay pagataguon sang default.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Islan ang mini nga file gamit ang panluwas nga aplikasyon',
+'edit-externally-help' => '(Tan-awa ang [http://www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tanan',
+'namespacesall' => 'tanan',
+'monthsall' => 'tanan',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Tan-awon ang mga kapareho nga ginbag-o',
+'watchlisttools-edit' => 'Tan-awon kag islan ang listahan sang balantayan',
+'watchlisttools-raw' => 'Liwaton ang hilaw nga listahan sang mga ginabantayan',
+
+# Special:SpecialPages
+'specialpages' => 'Espesyal nga mga panid',
+
+);
diff --git a/languages/messages/MessagesCrh.php b/languages/messages/MessagesCrh.php
index a7a7a98c..bfff7962 100644
--- a/languages/messages/MessagesCrh.php
+++ b/languages/messages/MessagesCrh.php
@@ -1,6 +1,9 @@
<?php
/** Crimean Turkish (Qırımtatarca)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesCrh_cyrl.php b/languages/messages/MessagesCrh_cyrl.php
index c9b08ac5..ff87b560 100644
--- a/languages/messages/MessagesCrh_cyrl.php
+++ b/languages/messages/MessagesCrh_cyrl.php
@@ -22,24 +22,22 @@ $separatorTransformTable = array(',' => '.', '.' => ',' );
$linkTrail = '/^([a-zâçğıñöşüа-яё“»]+)(.*)$/sDu';
$namespaceNames = array(
- NS_MEDIA => 'Медиа',
- NS_SPECIAL => 'Махсус',
- NS_MAIN => '',
- NS_TALK => 'Музакере',
- NS_USER => 'Къулланыджы',
- NS_USER_TALK => 'Къулланыджы_музакереси',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_музакереси',
- NS_FILE => 'Ресим',
- NS_FILE_TALK => 'Ресим_музакереси',
- NS_MEDIAWIKI => 'МедиаВики',
- NS_MEDIAWIKI_TALK => 'МедиаВики_музакереси',
- NS_TEMPLATE => 'Шаблон',
- NS_TEMPLATE_TALK => 'Шаблон_музакереси',
- NS_HELP => 'Ярдым',
- NS_HELP_TALK => 'Ярдым_музакереси',
- NS_CATEGORY => 'Категория',
- NS_CATEGORY_TALK => 'Категория_музакереси',
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Махсус',
+ NS_TALK => 'Музакере',
+ NS_USER => 'Къулланыджы',
+ NS_USER_TALK => 'Къулланыджы_музакереси',
+ NS_PROJECT_TALK => '$1_музакереси',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файл_музакереси',
+ NS_MEDIAWIKI => 'МедиаВики',
+ NS_MEDIAWIKI_TALK => 'МедиаВики_музакереси',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблон_музакереси',
+ NS_HELP => 'Ярдым',
+ NS_HELP_TALK => 'Ярдым_музакереси',
+ NS_CATEGORY => 'Категория',
+ NS_CATEGORY_TALK => 'Категория_музакереси',
);
# Aliases to latin namespaces
@@ -52,6 +50,8 @@ $namespaceAliases = array(
"$1_muzakeresi" => NS_PROJECT_TALK,
"Resim" => NS_FILE,
"Resim_muzakeresi" => NS_FILE_TALK,
+ "Ресим" => NS_FILE,
+ "Ресим_музакереси" => NS_FILE_TALK,
"MediaViki" => NS_MEDIAWIKI,
"MediaViki_muzakeresi" => NS_MEDIAWIKI_TALK,
'Şablon' => NS_TEMPLATE,
@@ -59,7 +59,7 @@ $namespaceAliases = array(
'Yardım' => NS_HELP,
'Yardım_muzakeresi' => NS_HELP_TALK,
'Kategoriya' => NS_CATEGORY,
- 'Kategoriya_muzakeresi' => NS_CATEGORY_TALK,
+ 'Kategoriya_muzakeresi' => NS_CATEGORY_TALK
);
@@ -134,6 +134,7 @@ $messages = array(
'tog-enotifminoredits' => 'Саифелерде кичик денъишиклик олгъанда да манъа e-mail ёлла',
'tog-enotifrevealaddr' => 'Бильдирюв мектюплеринде e-mail адресимни косьтер',
'tog-shownumberswatching' => 'Козеткен къулланыджы сайысыны косьтер',
+'tog-oldsig' => 'Шимдики имзанъыз:',
'tog-fancysig' => 'Имза викиметин киби олсун (автоматик багъланты олмаз)',
'tog-externaleditor' => 'Денъишикликлерни башкъа эдитор программасы иле яп',
'tog-externaldiff' => 'Тенъештирмелерни тыш программагъа яптыр.',
@@ -156,6 +157,10 @@ $messages = array(
'underline-never' => 'Асла',
'underline-default' => 'Браузер къарар берсин',
+# Font style option in Special:Preferences
+'editfont-style' => 'Язув пенджересинде шрифт тюрю:',
+'editfont-default' => 'Браузерге коре',
+
# Dates
'sunday' => 'Базар',
'monday' => 'Базарэртеси',
@@ -215,7 +220,7 @@ $messages = array(
'category-media-header' => '"$1" категориясындаки медиа файллары',
'category-empty' => "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
'hidden-categories' => 'Гизли {{PLURAL:$1|категория|категориялар}}',
-'hidden-category-category' => 'Гизли категориялар', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Гизли категориялар',
'category-subcat-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} алт категория бар.',
'category-article-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
@@ -223,6 +228,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} файл бар.',
'listingcontinuesabbrev' => ' (девам)',
+'index-category' => 'Индексли саифелер',
+'noindex-category' => 'Индекссиз саифелер',
'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„]+)$/sDu',
'mainpagetext' => "'''MediaWiki мувафакъиетнен къурулды.'''",
@@ -233,10 +240,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki боюнджа сыкъ берильген суаллернен джеваплар];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ янъы версияларынынъ чыкъувындан хабер йиберюв].",
-'about' => 'Акъкъында',
-'article' => 'Саифе',
-'newwindow' => '(янъы бир пенджереде ачылыр)',
-'cancel' => 'Лягъу',
+'about' => 'Акъкъында',
+'article' => 'Саифе',
+'newwindow' => '(янъы бир пенджереде ачылыр)',
+'cancel' => 'Лягъу',
+'moredotdotdot' => 'Даа...',
+'mypage' => 'Саифем',
+'mytalk' => 'Музакере саифем',
+'anontalk' => 'Бу IP-нинъ музакереси',
+'navigation' => 'Сайтта ёл тапув',
+'and' => '&#32;ве',
+
+# Cologne Blue skin
'qbfind' => 'Тап',
'qbbrowse' => 'Бакъып чыкъ',
'qbedit' => 'Денъиштир',
@@ -244,15 +259,35 @@ $messages = array(
'qbpageinfo' => 'Багълам',
'qbmyoptions' => 'Саифелерим',
'qbspecialpages' => 'Махсус саифелер',
-'moredotdotdot' => 'Даа...',
-'mypage' => 'Саифем',
-'mytalk' => 'Музакере саифем',
-'anontalk' => 'Бу IP-нинъ музакереси',
-'navigation' => 'Сайтта ёл тапув',
-'and' => '&#32;ве',
-
-# Metadata in edit box
-'metadata_help' => 'Мета малюматы:',
+'faq' => 'Сыкъ берильген суаллер',
+'faqpage' => 'Project:Сыкъ берильген суаллер',
+
+# Vector skin
+'vector-action-addsection' => 'Мевзу къош',
+'vector-action-delete' => 'Ёкъ эт',
+'vector-action-move' => 'Адыны денъиштир',
+'vector-action-protect' => 'Къорчала',
+'vector-action-undelete' => 'Янъыдан ярат',
+'vector-action-unprotect' => 'Къорчалавны чыкъар',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Ярдым саифеси',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Саифе',
+'vector-namespace-media' => 'Медиа саифеси',
+'vector-namespace-mediawiki' => 'Беянат',
+'vector-namespace-project' => 'Лейха саифеси',
+'vector-namespace-special' => 'Махсус саифе',
+'vector-namespace-talk' => 'Музакере',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Къулланыджы саифеси',
+'vector-view-create' => 'Ярат',
+'vector-view-edit' => 'Денъиштир',
+'vector-view-history' => 'Кечмишини косьтер',
+'vector-view-view' => 'Окъу',
+'vector-view-viewsource' => 'Менба кодуны косьтер',
+'actions' => 'Арекетлер',
+'namespaces' => 'Исим фезалары',
+'variants' => 'Вариантлар',
'errorpagetitle' => 'Хата',
'returnto' => '$1.',
@@ -302,18 +337,20 @@ $messages = array(
'otherlanguages' => 'Дигер тиллерде',
'redirectedfrom' => '($1 саифесинден ёлланды)',
'redirectpagesub' => 'Ёллама саифеси',
-'lastmodifiedat' => 'Бу саифе сонъки оларакъ $1, $2 тарихында янъарды.', # $1 date, $2 time
+'lastmodifiedat' => 'Бу саифе сонъки оларакъ $1, $2 тарихында янъарды.',
'viewcount' => 'Бу саифе {{PLURAL:$1|1|$1}} дефа иришильген.',
'protectedpage' => 'Къорчалавлы саифе',
'jumpto' => 'Бунъа бар:',
'jumptonavigation' => 'къуллан',
'jumptosearch' => 'къыдыр',
+'view-pool-error' => 'Афу этинъиз, сервер шимди адден-ашыр юкленди. Пек чокъ къулланыджы бу саифени ачмагъа тырыша. Лютфен, бу саифени бир даа ачмакътан эвель бираз бекленъиз.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} акъкъында',
'aboutpage' => 'Project:Акъкъында',
'copyright' => 'Малюмат $1 бинаэн кечилип ола.',
-'copyrightpagename' => '{{SITENAME}} муэллифлик акълары',
'copyrightpage' => '{{ns:project}}:Муэллифлик акълары',
'currentevents' => 'Агъымдаки вакъиалар',
'currentevents-url' => 'Project:Агъымдаки вакъиалар',
@@ -321,8 +358,6 @@ $messages = array(
'disclaimerpage' => 'Project:Умумий Малюмат Мукъавелеси',
'edithelp' => 'Саифелер насыл денъиштирилир?',
'edithelppage' => 'Help:Саифе насыл денъиштирилир',
-'faq' => 'Сыкъ берильген суаллер',
-'faqpage' => 'Project:Сыкъ берильген суаллер',
'helppage' => 'Help:Мундеридже',
'mainpage' => 'Баш Саифе',
'mainpage-description' => 'Баш Саифе',
@@ -401,9 +436,6 @@ $messages = array(
«$1»
Къулланылгъан функция «$2».
Малюмат базасынынъ бильдирген хатасы «$3: $4».',
-'noconnect' => 'Багъышланъыз! Техникий проблемалар себебинден wiki малюмат базасынынъ серверинен багълынып оламай. <br /> $1',
-'nodb' => '$1 малюмат базасыны сайламагъа чаре ёкъ',
-'cachederror' => 'Ашагъыда сиз истеген саифенинъ кэширленген копиясыдыр. Бунынъ ичюн о эскирген ола биле.',
'laggedslavemode' => 'Дикъкъат! Бу саифеде сонъки янъарув олмай биле.',
'readonly' => 'Малюмат базасы килитленди',
'enterlockreason' => 'Блок этювнинъ себебини ве девамыны кирсетинъиз.',
@@ -421,6 +453,7 @@ $messages = array(
'readonly_lag' => 'Малюмат базасынынъ экилемджи сервери бирлемджи серверинен синхронизирленгендже малюмат базасы денъиштирильмемеси ичюн автоматик оларакъ блок этильди.',
'internalerror' => 'Ички хата',
'internalerror_info' => 'Ички хата: $1',
+'fileappenderror' => '«$1» файлы «$2» файлына къошулып оламай.',
'filecopyerror' => '"$1" файлы "$2" файлына копияланып оламай.',
'filerenameerror' => 'файлнынъ "$1" деген ады "$2" оларакъ денъиштирилип оламай.',
'filedeleteerror' => '"$1" файлы ёкъ этилип оламай.',
@@ -430,7 +463,7 @@ $messages = array(
'unexpected' => 'бекленмеген дегер: "$1"="$2".',
'formerror' => 'Хата: форманынъ малюматыны ёлламакънынъ ич чареси ёкъ',
'badarticleerror' => 'Сиз япмагъа истеген ишлев бу саифеде япылып оламай.',
-'cannotdelete' => 'Бельгиленген саифе я да корюниш ёкъ этилип оламады. (башкъа бир къулланыджы тарафындан ёкъ этильген ола билир).',
+'cannotdelete' => '«$1» саифе я да файлы ёкъ этилип оламады. Башкъа бир къулланыджы тарафындан ёкъ этильген ола биле.',
'badtitle' => 'Рухсетсиз серлева',
'badtitletext' => 'Истенильген саифе ады догъру дегиль, о боштыр, яхут тиллерара багъланты я да викилерара багъланты догъру язылмагъан. Ихтималы бар ки, саифе адында ясакълангъан ишаретлер бар.',
'perfcached' => 'Малюматлар даа эвельджеден азырлангъан ола билир. Бу себептен эскирген ола билир!',
@@ -462,14 +495,12 @@ $2',
'virus-unknownscanner' => 'билинмеген антивирус:',
# Login and logout pages
-'logouttitle' => 'Отурымны къапат',
'logouttext' => "'''Отурымны къапаттынъыз.'''
Шимди {{SITENAME}} сайтыны аноним оларакъ къулланып оласынъыз, я да янъыдан [[Special:UserLogin|отурым ачып]] оласынъыз (истер айны къулланыджы адынен, истер башкъа бир къулланыджы адынен). Web браузеринъиз кэшини темизлегендже базы саифелер санки аля даа отурымынъыз ачыкъ экен киби корюнип олур.",
'welcomecreation' => '== Хош кельдинъиз, $1! ==
Эсабынъыз ачылды.
Бу сайтнынъ [[Special:Preferences|сазламаларыны]] шахсынъызгъа коре денъиштирмеге унутманъыз.',
-'loginpagetitle' => 'Отурым ач',
'yourname' => 'Къулланыджы адынъыз',
'yourpassword' => 'Паролинъиз',
'yourpasswordagain' => 'Парольни бир даа язынъыз:',
@@ -492,28 +523,8 @@ $2',
'badretype' => 'Кирсеткен пароллеринъиз айны дегиль.',
'userexists' => 'Кирсеткен къулланыджы адынъыз энди къулланыла.
Башкъа бир къулланыджы ады сайланъыз.',
-'youremail' => 'E-mail адресинъиз:',
-'username' => 'Къулланыджы ады:',
-'uid' => 'Къайд номери:',
-'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|группа|группалар}}:',
-'yourrealname' => 'Керчек адынъыз:',
-'yourlanguage' => 'Интерфейс тили:',
-'yourvariant' => 'Тиль сайлавы:',
-'yournick' => 'Сизинъ лагъабынъыз (имзаларда косьтериледжек):',
-'badsig' => 'Янълыш имза. HTML тэглерининъ догърулыгъыны бакъынъыз.',
-'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
-'yourgender' => 'Джынсынъыз:',
-'gender-unknown' => 'Бильдирильмеген',
-'gender-male' => 'Эркек',
-'gender-female' => 'Къадын',
-'prefs-help-gender' => 'Меджбурий дегиль: wiki тарафындан догъру джыныс адреслеви ичюн къулланыла. Бу малюмат умумий оладжакъ.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Керчек адынъыз (меджбурий дегильдир).
-Эгер бильдирсенъиз, саифелердеки денъишикликлерин кимнинъ япкъаныны косьтермек ичюн къулланыладжакъ.',
'loginerror' => 'Отурым ачма хатасы',
-'prefs-help-email' => 'E-mail (меджбурий дегильдир). E-mail адреси бильдирильген олса, шимдики паролинъизни унутсанъыз, янъы бир пароль истеп оласынъыз.
-Бундан гъайры бу викидеки саифенъизден башкъа къулланыджыларгъа сизнен багъланмагъа имкян береджек. E-mail адресинъиз башкъа къулланыджыларгъа косьтерильмейджек.',
-'prefs-help-email-required' => 'E-mail адреси лязим.',
+'createaccounterror' => 'Эсап яратылып оламай: $1',
'nocookiesnew' => 'Къулланыджы эсабы ачылгъан, факъат танытылмагъан. {{SITENAME}} къулланыджыларны танытмакъ ичюн «cookies»ни къуллана. Сизде бу функция къапалы вазиеттедир. «Cookies» функциясыны ишлетип текрар янъы адынъыз ве паролинъизнен тырышып бакъыныз.',
'nocookieslogin' => '{{SITENAME}} «cookies»ни къуллана. Сизде бу функция къапалы вазиеттедир. «Cookies» функциясыны ишлетип текрар тырышып бакъынъыз.',
'noname' => 'Догъру къулланыджы адыны кирсетмединъиз.',
@@ -527,7 +538,8 @@ $2',
'wrongpassword' => 'Кирсеткен паролинъиз янълыштыр. Лютфен, текрар этинъиз.',
'wrongpasswordempty' => 'Кирсеткен паролинъиз боштыр.
Лютфен, текрар этинъиз.',
-'passwordtooshort' => 'Паролинъиз пек къыскъа. Энъ аз $1 ариф ве я ракъамдан ибарет олмалы.',
+'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1|$1}} ишарет олмалы.',
+'password-name-match' => 'Паролинъиз къулланыджы адынъыздан фаркълы олмалы.',
'mailmypassword' => 'Янъы пароль йибер',
'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} къулланыджынынъ пароль хатырлатувы',
'passwordremindertext' => 'Бирев (бельки де бу сизсинъиз, $1 IP адресинден) {{SITENAME}} сайты ичюн ($4) янъы къулланыджы паролини истеди.
@@ -535,6 +547,7 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
Эгер де янъы пароль талап этмеген олсанъыз я да эски паролинъизни хатырлап энди оны денъиштирмеге истемесенъиз, бу мектюпни дикъкъаткъа алмайып эски паролинъизни къулланмагъа девам этип оласынъыз.',
'noemail' => '$1 адлы къулланыджы ичюн e-mail бильдирильмеди.',
+'noemailcreate' => 'Догъру бир e-mail адреси бильдирмек керексинъиз',
'passwordsent' => 'Янъы пароль e-mail ёлунен къулланыджынынъ бильдирген $1 адресине йиберильди. Парольни алгъан сонъ текрар кириш япынъыз.',
'blocked-mailpassword' => 'IP адресинъизден саифелер денъиштирюв ясакълы, пароль хатырлатув функциясы да блок этильди.',
'eauthentsent' => 'Бильдирильген e-mail адресине ичинде тасдыкъ коду олгъан бир мектюп ёлланды. Сиз шу мектюпте язылгъан арекетлерни япып бу e-mail адресининъ саиби керчектен де сиз олгъанынъызны тасдыкълагъан сонъ башкъа мектюп ёлланып олур.',
@@ -555,6 +568,7 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
Сиз шимди отурым ачып паролинъизни денъиштирмек керексинъиз.
Шу эсап хата оларакъ яратылгъан олса бу мектюпке къулакъ асмайып оласынъыз.',
+'usernamehasherror' => 'Къулланыджы адында # ишарети оламаз.',
'login-throttled' => 'Якъын заманда пек чокъ кере кирмеге тырыштынъыз.
Лютфен, къайта кирмезден эвель бираз бекленъиз.',
'loginlanguagelabel' => 'Тиль: $1',
@@ -568,7 +582,6 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
'retypenew' => 'Янъы парольни текрар язынъыз',
'resetpass_submit' => 'Пароль къойып кир',
'resetpass_success' => 'Паролинъиз мувафакъиетнен денъиштирильди! Отурымынъыз ачылмакъта...',
-'resetpass_bad_temporary' => 'Мувакъкъат паролинъиз янълыштыр. Ола билир ки, сиз энди паролинъизни мувафакъиетнен денъиштирген я да e-mail-ге янъы бир пароль ёлламагъа риджа эткендирсинъиз.',
'resetpass_forbidden' => 'Пароль денъиштирмек ясакъ',
'resetpass-no-info' => 'Бу саифеге догърудан иришмек ичюн отурым ачмакъ керексинъиз.',
'resetpass-submit-loggedin' => 'Парольни денъиштир',
@@ -644,7 +657,6 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
'blockededitsource' => "Ашагъыда «$1» саифесиндеки '''япкъан денъиштирмелеринъизнинъ''' метини булуна.",
'whitelistedittitle' => 'Денъиштирмек ичюн отурым ачмалысынъыз',
'whitelistedittext' => 'Саифени денъиштирмек ичюн $1 керексинъиз.',
-'confirmedittitle' => 'E-mail адресини тасдыкъламакъ лязимдир',
'confirmedittext' => 'Саифени денъиштирмеден эвель e-mail адресинъизни тасдыкъламалысынъыз. Лютфен, [[Special:Preferences|сазламалар саифесинде]] e-mail адресинъизни кирсетинъиз ве тасдыкъланъыз.',
'nosuchsectiontitle' => 'Ойле болюк ёкъ',
'nosuchsectiontext' => 'Бар олмагъан болюкни денъиштирип бакътынъыз.',
@@ -660,13 +672,16 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
'anontalkpagetext' => "----''Бу музакере саифеси шимдилик къайд олунмагъан я да отурымыны ачмагъан адсыз (аноним) къулланыджыгъа менсюптир. Идентификация ичюн IP адрес ишлетиле. Бир IP адресинден бир къач къулланыджы файдаланып ола.
Эгер сиз аноним къулланыджы олсанъыз ве сизге кельген беянатларны янълыштан кельгенини беллесенъиз, лютфен, артыкъ бунынъ киби къарышыкълыкъ олмасын деп [[Special:UserLogin|отурым ачынъыз]].''",
'noarticletext' => 'Бу саифе шимди боштыр. Бу серлеваны башкъа саифелерде [[Special:Search/{{PAGENAME}}|къыдырып оласынъыз]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} багълы журнал къайдларыны къыдырып оласынъыз] я да бу саифени озюнъиз [{{fullurl:{{FULLPAGENAME}}|action=edit}} язып оласынъыз]</span>.',
+'noarticletext-nopermission' => 'Бу саифе шимди боштыр. Бу серлеваны башкъа саифелерде [[Special:Search/{{PAGENAME}}|къыдыра биле]] я да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} багълы журналларны козьден кечире билесинъиз]</span>.',
'userpage-userdoesnotexist' => '"$1" адлы къулланыджы ёкътыр. Тамам бу саифени денъиштирмеге истегенинъизни тешкеринъиз.',
+'userpage-userdoesnotexist-view' => '«$1» адлы къулланыджы эсабы ёкъ.',
'clearyourcache' => "'''Ихтар:''' Сазламаларынъызны сакълагъандан сонъ денъишикликлерни корьмек ичюн браузеринъизнинъ кэшини темизлемек керексинъиз.
'''Mozilla / Firefox / Safari:''' ''Shift'' басылы экенде саифени янъыдан юклеп я да ''Ctrl-Shift-R'' япып (Macintosh ичюн ''Command-R'');
'''Konqueror:''' саифени янъыдан юкле дёгмесине я да F5 басып;
'''Opera:''' ''Tools → Preferences'' менюсинде кэшни темизлеп;
'''Internet Explorer:''' ''Ctrl'' басылы экенде саифени янъыдан юклеп я да ''Ctrl-F5'' басып.",
-'usercssjsyoucanpreview' => "'''Тевсие:''' Саифени сакъламаздан эвель '''бакъып чыкъ''' дёгмесине басып япкъан янъы саифенъизни козьден кечиринъиз.",
+'usercssyoucanpreview' => "'''Тевсие:''' Саифени сакъламаздан эвель '''бакъып чыкъ''' дёгмесине басып япкъан янъы саифенъизни козьден кечиринъиз.",
+'userjsyoucanpreview' => "'''Тевсие:''' Саифени сакъламаздан эвель '''бакъып чыкъ''' дёгмесине басып япкъан янъы саифенъизни козьден кечиринъиз.",
'usercsspreview' => "'''Унутманъыз, бу тек бакъып чыкъув - къулланыджы CSS файлынъыз аля даа сакъланмады!'''",
'userjspreview' => "'''Унутманъыз, сиз шимди тек тест этесинъиз я да бакъып чыкъув коресинъиз - къулланыджы JavaScript'и шимдилик сакъланмады.'''",
'userinvalidcssjstitle' => "'''Ихтар:''' \"\$1\" адынен бир тема ёкътыр. тема-ады.css ве .js файлларынынъ адлары кичик афир иле язмакъ керек, яни {{ns:user}}:Темель/'''M'''onobook.css дегиль, {{ns:user}}:Темель/'''m'''onobook.css.",
@@ -711,9 +726,9 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
'semiprotectedpagewarning' => "'''Тенби''': Бу саифе тек къайдлы къулланыджылар тарафындан денъиштирилип олур.",
'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:",
'titleprotectedwarning' => "'''ТЕНБИ: Бу саифе къорчалав алтындадыр, тек [[Special:ListGroupRights|махсус акъларгъа]] саип къулланыджылар оны яратып олалар.'''",
-'templatesused' => 'Бу саифеде къулланылгъан шаблонлар:',
-'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан шаблонлар:',
-'templatesusedsection' => 'Бу болюкте къулланылгъан шаблонлар:',
+'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
+'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
+'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
'template-protected' => '(къорчалав алтында)',
'template-semiprotected' => '(къысмен къорчалав алтында)',
'hiddencategories' => 'Бу саифе {{PLURAL:$1|1|$1}} гизли категориягъа менсюптир:',
@@ -724,11 +739,12 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
'permissionserrors' => 'Иришим акъларынынъ хаталары',
'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|Себеп|Себеплер}}:',
'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
-'recreate-deleted-warn' => "'''Дикъкъат: эвельдже ёкъ этильген саифени янъыдан яратмагъа тырышасынъыз.'''
+'recreate-moveddeleted-warn' => "'''Тенби: Эвельдже ёкъ этильген саифени янъыдан яратасынъыз.'''
-Бу саифени керчектен де янъыдан яратмагъа истейсинъизми? Ашагъыда ёкъ этилюв журналы булуна.",
-'deleted-notice' => 'Бу саифе ёкъ этильди.
-Ёкъ этюв журналындан къайдлары ашагъыда косьтериле.',
+Саифени денъиштирмеге девам эткени уйгъун олып олмагъаныны тюшюнмелисинъиз.
+Саифенинъ ёкъ этилюв ве авуштырылув къайдлары мында берильген:",
+'moveddeleted-notice' => 'Бу саифе ёкъ этильген.
+Саифенинъ ёкъ этилюв ве авуштырылув къайдлары ашагъыда берильген.',
'edit-gone-missing' => 'Саифе янъартылып оламай.
Ола биле ки, о ёкъ этильгендир.',
'edit-conflict' => 'Денъишикликлер конфликти.',
@@ -752,9 +768,9 @@ $3 мына бу себепни бильдирди: ''$2''",
'viewpagelogs' => 'Бу саифенинъ журналларыны косьтер',
'nohistory' => 'Бу саифенинъ кечмиш версиясы ёкъ.',
'currentrev' => 'Шимдики версия',
-'currentrev-asof' => '$1 тарихында сонъки оларакъ денъиштирильген саифенинъ шимдики алы',
+'currentrev-asof' => '$1 тарихында сонъки кере денъиштирильген саифенинъ шимдики алы',
'revisionasof' => 'Саифенинъ $1 тарихындаки алы',
-'revision-info' => 'Саифенинъ $2 тарафындан олуштырылгъан $1 тарихындаки алы', # Additionally available: $3: revision id
+'revision-info' => 'Саифенинъ $2 тарафындан язылгъан $1 тарихындаки алы',
'previousrevision' => '← Эвельки алы',
'nextrevision' => 'Сонъраки алы →',
'currentrevisionlink' => 'энъ янъы алыны косьтер',
@@ -766,7 +782,6 @@ $3 мына бу себепни бильдирди: ''$2''",
'histlegend' => "(фаркъ) = шимдики алнен арадаки фаркъ,
(сонъки) = эвельки алнен арадаки фаркъ, '''к''' = кичик денъишиклик",
'history-fieldset-title' => 'Кечмишке бакъув',
-'deletedrev' => '[ёкъ этильди]',
'histfirst' => 'Энъ эски',
'histlast' => 'Энъ янъы',
'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
@@ -775,7 +790,7 @@ $3 мына бу себепни бильдирди: ''$2''",
# Revision feed
'history-feed-title' => 'Денъишикликлер тарихы',
'history-feed-description' => 'Викиде бу саифенинъ денъишикликлер тарихы',
-'history-feed-item-nocomment' => '$2 устюнде $1', # user at time
+'history-feed-item-nocomment' => '$2 устюнде $1',
'history-feed-empty' => 'Истенильген саифе мевджут дегиль.
О ёкъ эильген я да ады денъиштирильген ола биле.
Викиде бу саифеге ошагъан саифелерни [[Special:Search|тапып бакъынъыз]].',
@@ -785,11 +800,12 @@ $3 мына бу себепни бильдирди: ''$2''",
'rev-deleted-user' => '(къулланыджы ады ёкъ этильди)',
'rev-deleted-event' => '(къайд ёкъ этильди)',
'rev-delundel' => 'косьтер/гизле',
+'rev-showdeleted' => 'косьтер',
'revisiondelete' => 'Версияларны ёкъ эт/кери кетир',
'revdelete-hide-comment' => 'Къыскъа тарифни косьтерме',
'revdelete-hide-user' => 'Денъишикликни япкъан къулланыджы адыны/IP-ни гизле',
'revdelete-hide-restricted' => 'Малюматны адий къулланыджылардан киби идареджилерден де гизле',
-'revdelete-submit' => 'Сайлангъан версиягъа ишлет',
+'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|версиягъа|версияларгъа}} ишлет',
'revdel-restore' => 'корюнювни денъиштир',
# Merge log
@@ -802,7 +818,6 @@ $3 мына бу себепни бильдирди: ''$2''",
'compareselectedversions' => 'Сайлангъан версияларны тенъештир',
'editundo' => 'лягъу эт',
'diff-multi' => '({{PLURAL:$1|1 арадаки версия|$1 арадаки версия}} косьтерильмеди.)',
-'diff-movedto' => '$1 саифесине авуштырылды',
# Search results
'searchresults' => 'Къыдырув нетиджелери',
@@ -810,16 +825,14 @@ $3 мына бу себепни бильдирди: ''$2''",
'searchresulttext' => '{{SITENAME}} ичинде къыдырув япмакъ хусусында малюмат алмакъ ичюн [[{{MediaWiki:Helppage}}|{{int:help}}]] саифесине бакъып оласынъыз.',
'searchsubtitle' => 'Къыдырылгъан: "[[:$1]]" ([[Special:Prefixindex/$1|"$1" иле башлангъан бутюн саифелер]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" саифесине багъланты олгъан бутюн саифелер]])',
'searchsubtitleinvalid' => "Сиз буны къыдырдынъыз '''$1'''",
-'noexactmatch' => "'''\"\$1\" серлевалы бир саифе тапыламады.''' Бу саифени озюнъиз [[:\$1|яратып оласынъыз]].",
-'noexactmatch-nocreate' => "'''«$1» адлы саифе ёкъ.'''",
'toomanymatches' => 'Пек чокъ эшлешме чыкъты, лютфен, башкъа бир соратма сайланъыз.',
'titlematches' => 'Макъале ады бир келе',
'notitlematches' => 'Ич бир серлевада тапыламады',
'textmatches' => 'Саифе метни бир келе',
'notextmatches' => 'Ич бир саифеде тапыламады',
-'prevn' => 'эвельки $1',
-'nextn' => 'сонъраки $1',
-'viewprevnext' => '($1) ( $2) ($3).',
+'prevn' => 'эвельки {{PLURAL:$1|$1}}',
+'nextn' => 'сонъраки {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Мундеридже',
'search-result-size' => '$1 ({{PLURAL:$2|1|$2}} сёз)',
'search-result-score' => 'Уйгъунлыкъ: $1 %',
@@ -833,11 +846,11 @@ $3 мына бу себепни бильдирди: ''$2''",
'search-mwsuggest-disabled' => 'тевсие ёкъ',
'search-relatedarticle' => 'Багълы',
'mwsuggest-disable' => 'AJAX тевсиелерини ишлетме',
+'searcheverything-enable' => 'Бутюн исим фезаларында къыдыр',
'searchrelated' => 'багълы',
'searchall' => 'эписи',
'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|'''1''' нетидже|'''$1''' нетидже}} булуна.",
'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|'''1''' нетидже|'''$3''' нетидже}} булуна.",
-'showingresultstotal' => "Ашагъыда {{PLURAL:$4|'''$3''' данеден '''$1''' нетидже косьтерильген|'''$3''' данеден '''$1 — $2''' нетидже косьтерильген}}",
'nonefound' => "'''Ихтар.''' Адийджесине къыдырув бутюн исим фезаларында япылмай. Бутюн исим фезаларында (бу джумледен къулланыджылар субетлери, шаблонлар ве иляхре) къыдырмакъ ичюн ''all:'' языны къулланынъыз, муайен бир исим фезасында къыдырмакъ ичюн исе ''ад:'' форматында онынъ адыны язынъыз.",
'search-nonefound' => 'Соратманен эшлешкен бир нетидже ёкъ.',
'powersearch' => 'Къыдыр',
@@ -845,77 +858,118 @@ $3 мына бу себепни бильдирди: ''$2''",
'powersearch-ns' => 'Бу исим фезаларында къыдыр:',
'powersearch-redir' => 'Ёллама саифелерини де косьтер',
'powersearch-field' => 'Къыдыр:',
+'powersearch-togglelabel' => 'Сайла:',
+'powersearch-toggleall' => 'Эписи',
+'powersearch-togglenone' => 'Ич бири',
'search-external' => 'Тыш къыдырув',
'searchdisabled' => '{{SITENAME}} сайтында къыдырув япма вакътынджа токътатылды. Бу арада Google къулланып {{SITENAME}} ичинде къыдырув япып оласынъыз. Къыдырув сайтларында индекслемелерининъ бираз эски къалгъан ола биледжегини козь огюне алынъыз.',
+# Quickbar
+'qbsettings' => 'Вызлы иришим сутун сазламалары',
+
# Preferences page
-'preferences' => 'Сазламалар',
-'mypreferences' => 'Сазламаларым',
-'prefs-edits' => 'Япкъан денъишиклик сайысы:',
-'prefsnologin' => 'Отурым ачмадынъыз',
-'prefsnologintext' => 'Шахсий сазламаларынъызны денъиштирмек ичюн <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} отурым ачмакъ]</span> керексинъиз.',
-'prefsreset' => 'Сазламалар ильк алына кетирильди.',
-'qbsettings' => 'Вызлы иришим сутун сазламалары',
-'changepassword' => 'Пароль денъиштир',
-'skin' => 'Ресимлеме',
-'skin-preview' => 'Бакъып чыкъув',
-'math' => 'Риязий (математик) ишаретлер',
-'dateformat' => 'Тарих косьтерими',
-'datedefault' => 'Стандарт',
-'datetime' => 'Тарих ве саат',
-'math_failure' => 'Айырыштырыламды',
-'math_unknown_error' => 'билинмеген хата',
-'math_unknown_function' => 'бельгисиз функция',
-'math_lexing_error' => 'лексик хата',
-'math_syntax_error' => 'синтаксис хатасы',
-'prefs-personal' => 'Къулланыджы малюматы',
-'prefs-rc' => 'Сонъки денъишикликлер',
-'prefs-watchlist' => 'Козетюв джедвели',
-'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
-'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъишиклик сайысы:',
-'prefs-misc' => 'Дигер сазламалар',
-'prefs-resetpass' => 'Парольни денъиштир',
-'saveprefs' => 'Денъишикликлерни сакъла',
-'resetprefs' => 'Сакъланмагъан сазламаларны ильк алына кетир',
-'restoreprefs' => 'Бутюн ог бельгиленген сазламаларны къайтар',
-'textboxsize' => 'Саифе язув пенджереси',
-'prefs-edit-boxsize' => 'Язув пенджересининъ ольчюлери.',
-'rows' => 'Сатыр',
-'columns' => 'Сутун',
-'searchresultshead' => 'Къыдырув',
-'resultsperpage' => 'Саифеде косьтериледжек тапылгъан саифе сайысы',
-'contextlines' => 'Тапылгъан саифе ичюн айрылгъан сатыр сайысы',
-'contextchars' => 'Сатырдаки ариф сайысы',
-'recentchangesdays' => 'Сонъки денъишикликлер саифесинде косьтериледжек кунь сайысы:',
-'recentchangescount' => 'Чешит-тюрлю джедвель ве журналларда косьтерильген денъишикликлер ог бельгиленген сайысы:',
-'savedprefs' => 'Сазламаларынъыз сакъланды.',
-'timezonelegend' => 'Саат къушагъы:',
-'timezonetext' => 'Вики сервери (UTC/GMT) иле аранъыздаки саат фаркъы. (Украина ве Тюркие ичюн +02:00)',
-'localtime' => 'Ерли вакъыт:',
-'timezoneuseserverdefault' => 'Серверге коре олсун',
-'timezoneuseoffset' => 'Башкъа (фракъны кирсетинъиз)',
-'timezoneoffset' => 'Саат фаркъы¹:',
-'servertime' => 'Сервернинъ сааты:',
-'guesstimezone' => 'Браузеринъиз сизинъ еринъизге коре толдурсын',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Асия',
-'timezoneregion-atlantic' => 'Атлантик океан',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Авропа',
-'timezoneregion-indian' => 'Инд океаны',
-'timezoneregion-pacific' => 'Тынч океан',
-'allowemail' => 'Дигер къулланыджылар манъа e-mail мектюплери ёллап олсун',
-'prefs-searchoptions' => 'Къыдырув сазламалары',
-'prefs-namespaces' => 'Исим фезалары',
-'defaultns' => 'Къыдырувны ашагъыда сайлангъан исим фезаларында яп.',
-'default' => 'оригинал',
-'files' => 'Файллар',
+'preferences' => 'Сазламалар',
+'mypreferences' => 'Сазламаларым',
+'prefs-edits' => 'Япкъан денъишиклик сайысы:',
+'prefsnologin' => 'Отурым ачмадынъыз',
+'prefsnologintext' => 'Шахсий сазламаларынъызны денъиштирмек ичюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} отурым ачмакъ]</span> керексинъиз.',
+'changepassword' => 'Пароль денъиштир',
+'prefs-skin' => 'Ресимлеме',
+'skin-preview' => 'Бакъып чыкъув',
+'prefs-math' => 'Риязий (математик) ишаретлер',
+'datedefault' => 'Стандарт',
+'prefs-datetime' => 'Тарих ве саат',
+'prefs-personal' => 'Къулланыджы малюматы',
+'prefs-rc' => 'Сонъки денъишикликлер',
+'prefs-watchlist' => 'Козетюв джедвели',
+'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
+'prefs-watchlist-days-max' => '(энъ чокъ 7 кунь)',
+'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъишиклик сайысы:',
+'prefs-watchlist-edits-max' => '(энъ чокъ 1000)',
+'prefs-watchlist-token' => 'Козетюв джедвели ишарети:',
+'prefs-misc' => 'Дигер сазламалар',
+'prefs-resetpass' => 'Парольни денъиштир',
+'prefs-email' => 'E-mail сазламалары',
+'prefs-rendering' => 'Корюниш',
+'saveprefs' => 'Денъишикликлерни сакъла',
+'resetprefs' => 'Сакъланмагъан сазламаларны ильк алына кетир',
+'restoreprefs' => 'Бутюн ог бельгиленген сазламаларны къайтар',
+'prefs-editing' => 'Саифелерни денъиштирюв',
+'prefs-edit-boxsize' => 'Язув пенджересининъ ольчюлери.',
+'rows' => 'Сатыр',
+'columns' => 'Сутун',
+'searchresultshead' => 'Къыдырув',
+'resultsperpage' => 'Саифеде косьтериледжек тапылгъан саифе сайысы',
+'contextlines' => 'Тапылгъан саифе ичюн айрылгъан сатыр сайысы',
+'contextchars' => 'Сатырдаки ариф сайысы',
+'recentchangesdays' => 'Сонъки денъишикликлер саифесинде косьтериледжек кунь сайысы:',
+'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|кунь|кунь}})',
+'recentchangescount' => 'Ог бельгиленген косьтериледжек денъишикликлер сайысы:',
+'prefs-help-recentchangescount' => 'Бу, сонъки денъишикликлер, саифе кечмиши ве журнал саифелеринде къулланыла.',
+'savedprefs' => 'Сазламаларынъыз сакъланды.',
+'timezonelegend' => 'Саат къушагъы:',
+'localtime' => 'Ерли вакъыт:',
+'timezoneuseserverdefault' => 'Серверге коре олсун',
+'timezoneuseoffset' => 'Башкъа (фракъны кирсетинъиз)',
+'timezoneoffset' => 'Саат фаркъы¹:',
+'servertime' => 'Сервернинъ сааты:',
+'guesstimezone' => 'Браузеринъиз сизинъ еринъизге коре толдурсын',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Асия',
+'timezoneregion-atlantic' => 'Атлантик океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Авропа',
+'timezoneregion-indian' => 'Инд океаны',
+'timezoneregion-pacific' => 'Тынч океан',
+'allowemail' => 'Дигер къулланыджылар манъа e-mail мектюплери ёллап олсун',
+'prefs-searchoptions' => 'Къыдырув сазламалары',
+'prefs-namespaces' => 'Исим фезалары',
+'defaultns' => 'Акис алда бу исим фезаларында къыдыр:',
+'default' => 'оригинал',
+'prefs-files' => 'Файллар',
+'prefs-reset-intro' => 'Бу саифени сазламаларынъызны сайт ог бельгиленгенине къайтармакъ ичюн къуллана билесинъиз. Бу лягъу этилип оламаз.',
+'prefs-emailconfirm-label' => 'E-mail тасдыкъланмасы:',
+'prefs-textboxsize' => 'Язув пенджересининъ ольчюлери',
+'youremail' => 'E-mail адресинъиз:',
+'username' => 'Къулланыджы ады:',
+'uid' => 'Къайд номери:',
+'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|группа|группалар}}:',
+'prefs-registration' => 'Къайд тарихы:',
+'yourrealname' => 'Керчек адынъыз:',
+'yourlanguage' => 'Интерфейс тили:',
+'yourvariant' => 'Тиль сайлавы:',
+'yournick' => 'Янъы имзанъыз:',
+'prefs-help-signature' => 'Музакере саифелериндеки тефсирлерни "<nowiki>~~~~</nowiki>" иле имзаламакъ керек, бу дёрт тильда ерине имзанъыз ве вакъыт косьтерилир.',
+'badsig' => 'Янълыш имза. HTML тэглерининъ догърулыгъыны бакъынъыз.',
+'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
+'yourgender' => 'Джынсынъыз:',
+'gender-unknown' => 'Бильдирильмеген',
+'gender-male' => 'Эркек',
+'gender-female' => 'Къадын',
+'prefs-help-gender' => 'Меджбурий дегиль: wiki тарафындан догъру джыныс адреслеви ичюн къулланыла. Бу малюмат умумий оладжакъ.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Керчек адынъыз (меджбурий дегильдир).
+Эгер бильдирсенъиз, саифелердеки денъишикликлерин кимнинъ япкъаныны косьтермек ичюн къулланыладжакъ.',
+'prefs-help-email' => 'E-mail (меджбурий дегильдир). E-mail адреси бильдирильген олса, шимдики паролинъизни унутсанъыз, янъы бир пароль истеп оласынъыз.
+Бундан гъайры бу викидеки саифенъизден башкъа къулланыджыларгъа сизнен багъланмагъа имкян береджек. E-mail адресинъиз башкъа къулланыджыларгъа косьтерильмейджек.',
+'prefs-help-email-required' => 'E-mail адреси лязим.',
+'prefs-info' => 'Эсас малюмат',
+'prefs-signature' => 'Имза',
+'prefs-dateformat' => 'Тарих форматы',
+'prefs-timeoffset' => 'Заман фаркъы',
+'prefs-advancedediting' => 'Иляве сазламалар',
+'prefs-advancedrc' => 'Иляве сазламалар',
+'prefs-advancedrendering' => 'Иляве сазламалар',
+'prefs-advancedsearchoptions' => 'Иляве сазламалар',
+'prefs-advancedwatchlist' => 'Иляве сазламалар',
+'prefs-display' => 'Косьтерилюв сазламалары',
+'prefs-diffs' => 'Фаркълар',
# User rights
-'userrights' => 'Къулланыджы акъларыны идаре этюв', # Not used as normal message but as header for the special page itself
+'userrights' => 'Къулланыджы акъларыны идаре этюв',
'userrights-lookup-user' => 'Къулланыджы группаларныны идаре эт',
'userrights-user-editname' => 'Озь къулланыджы адынъызны язынъыз:',
'editusergroup' => 'Къулланыджы группалары низамла',
@@ -959,6 +1013,15 @@ $3 мына бу себепни бильдирди: ''$2''",
'recentchanges-legend' => 'Сонъки денъишикликлер сазламалары',
'recentchangestext' => 'Япылгъан энъ сонъки денъишикликлерни бу саифеде корип оласынъыз.',
'recentchanges-feed-description' => 'Бу лента вастасынен викиде сонъки денъишикликлерни козет.',
+'recentchanges-label-legend' => 'Изаат: $1.',
+'recentchanges-legend-newpage' => '$1 - янъы саифе',
+'recentchanges-label-newpage' => 'Бу денъишиклик янъы бир саифе яратты',
+'recentchanges-legend-minor' => '$1 - кичик денъишиклик',
+'recentchanges-label-minor' => 'Бу кичик бир денъишиклик',
+'recentchanges-legend-bot' => '$1 - бот денъишиклиги',
+'recentchanges-label-bot' => 'Бу бир ботнынъ япкъан денъишиклиги',
+'recentchanges-legend-unpatrolled' => '$1 - тешкерильмеген денъишиклик',
+'recentchanges-label-unpatrolled' => 'Бу денъишиклик аля даа тешкерильмеген',
'rcnote' => "$4 $5 тарихында сонъки {{PLURAL:$2|куньде|'''$2''' куньде}} япылгъан '''{{PLURAL:$1|1|$1}}''' денъишиклик:",
'rcnotefrom' => "'''$2''' тарихындан итибарен япылгъан денъишикликлер ашагъыдадыр (энъ чокъ '''$1''' дане саифе косьтериле).",
'rclistfrom' => '$1 тарихындан берли япылгъан денъишикликлерни косьтер',
@@ -985,6 +1048,8 @@ $3 мына бу себепни бильдирди: ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Багълы денъишикликлер',
+'recentchangeslinked-feed' => 'Багълы денъишикликлер',
+'recentchangeslinked-toolbox' => 'Багълы денъишикликлер',
'recentchangeslinked-title' => '"$1" иле багълы денъишикликлер',
'recentchangeslinked-noresult' => 'Сайлангъан вакъытта багълы саифелерде ич денъишиклик ёкъ эди.',
'recentchangeslinked-summary' => "Бу махсус саифеде багълы саифелерде сонъки япкъан денъишикликлер джедвели мевджут. [[Special:Watchlist|Козетюв джедвелинъиз]]деки саифелер '''къалын''' оларакъ косьтериле.",
@@ -994,8 +1059,8 @@ $3 мына бу себепни бильдирди: ''$2''",
# Upload
'upload' => 'Файл юкле',
'uploadbtn' => 'Файл юкле',
-'reupload' => 'Янъыдан юкле',
'reuploaddesc' => 'Юклеме формасына кери къайт.',
+'upload-tryagain' => 'Денъиштирильген файл тарифини ёлла',
'uploadnologin' => 'Отурым ачмадынъыз',
'uploadnologintext' => 'Файл юклеп олмакъ ичюн [[Special:UserLogin|отурым ачмакъ]] керексинъиз.',
'upload_directory_missing' => 'Юклемелер ичюн директория ($1) мевджут дегиль ве веб-сервер тарафындан япылып оламай.',
@@ -1050,7 +1115,6 @@ $3 мына бу себепни бильдирди: ''$2''",
* Юкленген файлнынъ ады: '''<tt>[[:$1]]</tt>'''
* Мевджут олгъан файлнынъ ады: '''<tt>[[:$2]]</tt>'''
Лютфен, башкъа бир ад сайлап язынъыз.",
-'fileexists-thumb' => "<center>'''Мевджут файл'''</center>",
'fileexists-thumbnail-yes' => "Бельки де бу файл бир уфакълаштырылгъан копиядыр (thumbnail). [[$1|thumb]]
Лютфен, '''<tt>[[:$1]]</tt>''' файлыны тешкеринъиз.
Эгер шу файл айны шу ресим олса, онынъ уфакълаштырылгъан копиясыны айры оларакъ юклемек аджети ёкътыр.",
@@ -1071,7 +1135,6 @@ $3 мына бу себепни бильдирди: ''$2''",
'uploaddisabled' => 'Юклеме ясакълыдыр.',
'uploaddisabledtext' => 'Файл юклеме ясакълыдыр.',
'uploadscripted' => 'Бу файлда браузер тарафындан янълышнен ишленип олур HTML коду я да скрипт бар.',
-'uploadcorrupt' => 'Бу файл я зарарланды, я да янълыш узантылы. Лютфен, файлны тешкерип янъыдан юклеп бакъынъыз.',
'uploadvirus' => 'Бу файл вируслыдыр! $1 бакъынъыз',
'sourcefilename' => 'Юклемеге истеген файлынъыз:',
'destfilename' => 'Файлнынъ истенильген ады:',
@@ -1098,6 +1161,7 @@ $3 мына бу себепни бильдирди: ''$2''",
'upload-curl-error28-text' => 'Сайт чокътан джевап къайтармай. Лютфен, сайтнынъ догъру чалышкъаныны тешкерип бираздан сонъ текрарланъыз. Бельки де истеген арекетинъизни сонъ, сайт бошча олгъанда, этмек керектир.',
'license' => 'Лицензиялама:',
+'license-header' => 'Лицензиялама',
'nolicense' => 'Ёкъ',
'license-nopreview' => '(Бакъып чыкъув иришильмез)',
'upload_source_url' => ' (догъру, публик тарзда кирмеге мусаадели интернет адрес)',
@@ -1118,6 +1182,7 @@ $3 мына бу себепни бильдирди: ''$2''",
'listfiles_count' => 'Версиялар',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлнынъ кечмиши',
'filehist-help' => 'Файлнынъ керекли аньки алыны корьмек ичюн тарихкъа/сааткъа басынъыз.',
'filehist-deleteall' => 'эписини ёкъ эт',
@@ -1126,22 +1191,20 @@ $3 мына бу себепни бильдирди: ''$2''",
'filehist-current' => 'шимдики',
'filehist-datetime' => 'Тарих ве саат',
'filehist-thumb' => 'Кичик ресим',
+'filehist-thumbtext' => '$1 тарихындаки версиянынъ уфакълаштырылгъан алы',
'filehist-nothumb' => 'Уфакълаштырылгъан ресим ёкъ',
'filehist-user' => 'Къулланыджы',
'filehist-dimensions' => 'Эн × бой',
'filehist-filesize' => 'Файл буюклиги',
'filehist-comment' => 'Изаат',
+'filehist-missing' => 'Файл ёкъ',
'imagelinks' => 'Файл багълантылары',
'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1|$1}} саифе:',
'nolinkstoimage' => 'Бу файлгъа багълангъан саифе ёкъ.',
-'sharedupload' => 'Бу файл $1 сайтындан ве дигер лейхаларда да къулланылып ола.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Тафсилятны $1 саифесинде тапмакъ мумкюн.',
-'shareduploadwiki-linktext' => 'файл малюмат саифеси',
-'noimage' => 'Бу исимде файл ёкъ, амма сиз $1.',
-'noimage-linktext' => 'оны юклеп оласынъыз',
+'sharedupload' => 'Бу файл $1 сайтындан ве дигер лейхаларда да къулланылып ола.',
'uploadnewversion-linktext' => 'Файлнынъ янъысыны юкленъиз',
-'shared-repo-from' => '$1нден', # $1 is the repository name
-'shared-repo' => 'ортакъ тутулгъан ери', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1нден',
+'shared-repo' => 'ортакъ тутулгъан ери',
# File reversion
'filerevert' => '$1 файлыны эски алына къайтар',
@@ -1168,7 +1231,7 @@ $3 мына бу себепни бильдирди: ''$2''",
# Random page
'randompage' => 'Тесадюфий саифе',
-'randompage-nopages' => '"$1" исим фезасында ич бир саифе ёкъ.',
+'randompage-nopages' => '"$1" {{PLURAL:$2|исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
# Random redirect
'randomredirect' => 'Тесадюфий ёллама саифеси',
@@ -1180,6 +1243,7 @@ $3 мына бу себепни бильдирди: ''$2''",
'statistics-header-edits' => 'Денъиштирюв статистикасы',
'statistics-header-views' => 'Козьден кечирме статистикасы',
'statistics-header-users' => 'Къулланыджы статистикасы',
+'statistics-header-hooks' => 'Дигер статистика',
'statistics-mostpopular' => 'Энъ сыкъ бакъылгъан саифелер',
'disambiguations' => 'Чокъ маналы терминлер саифелери',
@@ -1196,8 +1260,8 @@ $3 мына бу себепни бильдирди: ''$2''",
'brokenredirects' => 'Бар олмагъан саифеге япылгъан ёлламалар',
'brokenredirectstext' => 'Ашагъыдаки ёлламалар бар олмагъан саифелерге багъланты берелер:',
-'brokenredirects-edit' => '(денъиштир)',
-'brokenredirects-delete' => '(ёкъ эт)',
+'brokenredirects-edit' => 'денъиштир',
+'brokenredirects-delete' => 'ёкъ эт',
'withoutinterwiki' => 'Дигер тиллердеки версияларгъа багълантылары олмагъан саифелер',
'withoutinterwiki-summary' => 'Бу саифелерде дигер тиллердеки версияларгъа багълантылар ёкъ:',
@@ -1282,9 +1346,9 @@ $3 мына бу себепни бильдирди: ''$2''",
# Special:Categories
'categories' => 'Саифе категориялары',
-'categoriespagetext' => 'Ашагъыдаки категорияларда саифелер я да медиа-файллар бар.
-Мында [[Special:UnusedCategories|къулланылмагъан категориялар]] косьтерильмеген.
-[[Special:WantedCategories|Талап этильген категорияларнынъ джедвелини]] де бакъынъыз.',
+'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|категорияда|категорияларда}} саифе я да медиа файллар бар.
+[[Special:UnusedCategories|Къулланылмагъан категориялар]] мында косьтерильмеген.
+Айрыджа [[Special:WantedCategories|талап этильген категорияларнынъ джедвелине]] де бакъынъыз.',
'special-categories-sort-count' => 'сайыларына коре сырала',
'special-categories-sort-abc' => 'элифбе сырасынен сырала',
@@ -1375,26 +1439,26 @@ $3 мына бу себепни бильдирди: ''$2''",
'enotif_body' => 'Сайгъылы $WATCHINGUSERNAME,
-{{SITENAME}} сайтындаки $PAGETITLE серлевалы саифе $PAGEEDITDATE тарихында $PAGEEDITOR тарафындан $CHANGEDORCREATED. Шимдики версиягъа $PAGETITLE_URL адресинден етишип оласынъыз.
+{{SITENAME}} сайтындаки $PAGETITLE серлевалы саифе $PAGEEDITDATE тарихында $PAGEEDITOR тарафындан $CHANGEDORCREATED. Шимдики версияны $PAGETITLE_URL адресинде корип оласынъыз.
$NEWPAGE
-Ачыкъламасы: $PAGESUMMARY $PAGEMINOREDIT
+Денъишикликнинъ къыскъа тасвири: $PAGESUMMARY $PAGEMINOREDIT
-Саифени денъиштирген къулланыджынынъ иришим малюматы:
-e-mail: $PAGEEDITOR_EMAIL
-Вики: $PAGEEDITOR_WIKI
+Саифени денъиштирген къулланыджынен багъланмакъ ичюн:
+e-mail адреси: $PAGEEDITOR_EMAIL
+вики саифеси: $PAGEEDITOR_WIKI
-Бахсы кечкен саифени сиз зиярет этмеген муддет ичинде саифенен багълы башкъа денъишиклик тенбиси ёлланмайджакъ. Тенби сазламаларыны козетюв джедвелинъиздеки бутюн саифелер ичюн денъиштирип олурсынъыз.
+Бу саифени зиярет этмесенъиз, бирев оны бир даа денъиштирсе, ич бир тенби беянаты ёлланмайджакъ. Тенби сазламаларыны козетюв джедвелинъиздеки бутюн саифелер ичюн денъиштирип оласынъыз.
{{SITENAME}} тенби системасы.
--
Сазламаларны денъиштирмек ичюн:
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Ярдым ве теклифлер ичюн:
-{{fullurl:Help:Contents}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Саифени ёкъ эт',
@@ -1405,10 +1469,11 @@ e-mail: $PAGEEDITOR_EMAIL
'exblank' => 'саифе метини бош',
'delete-confirm' => '«$1» саифесини ёкъ этмектесинъиз',
'delete-legend' => 'Ёкъ этюв',
-'historywarning' => 'Тенби: Сиз ёкъ этмек узьре олгъан саифенинъ кечмиши бардыр:',
+'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ $1 {{PLURAL:$1|версиялы|версиялы}} кечмиши бардыр:",
'confirmdeletetext' => 'Бир саифени я да ресимни бутюн кечмиши иле бирликте малюмат базасындан къалыджы оларакъ ёкъ этмек узьресинъиз.
Лютфен, нетиджелерини анълагъанынъызны ве [[{{MediaWiki:Policy-url}}|ёкъ этюв политикасына]] уйгъунлыгъыны дикъкъаткъа алып, буны япмагъа истегенинъизни тасдыкъланъыз.',
'actioncomplete' => 'Арекет тамамланды.',
+'actionfailed' => 'Арекет япыламады',
'deletedtext' => '"<nowiki>$1</nowiki>" ёкъ этильди.
якъын заманда ёкъ этильгенлерни корьмек ичюн: $2.',
'deletedarticle' => '"[[$1]]" ёкъ этильди',
@@ -1426,8 +1491,8 @@ e-mail: $PAGEEDITOR_EMAIL
'rollbacklink' => 'эски алына кетир',
'rollbackfailed' => 'кери алув мувафакъиетсиз',
'cantrollback' => 'Денъишикликлер кери алынамай, сонъки денъиштирген киши саифенинъ тек бир муэллифидир',
-'editcomment' => "Денъиштирме изааты: \"''\$1''\" эди.", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|музакере]]) тарафындан япылгъан денъишикликлер кери алынып, [[User:$1|$1]] тарафындан денъиштирильген эвельки версия кери кетирильди.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Денъиштирме изааты: \"''\$1''\" эди.",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|музакере]]) тарафындан япылгъан денъишикликлер кери алынып, [[User:$1|$1]] тарафындан денъиштирильген эвельки версия кери кетирильди.',
# Protect
'protectlogpage' => 'Къорчалав журналы',
@@ -1442,7 +1507,6 @@ e-mail: $PAGEEDITOR_EMAIL
'protectexpiry' => 'Битиш тарихы:',
'protect_expiry_invalid' => 'Битиш тарихы янълыш.',
'protect_expiry_old' => 'Битиш заманы кечмиштедир.',
-'protect-unchain' => 'Саифе ады денъиштирюв килитини чыкъар',
'protect-text' => "'''[[<nowiki>$1</nowiki>]]''' саифесининъ къорчалав севиесини мындан корип олур ве денъиштирип оласынъыз.",
'protect-locked-access' => "Къулланыджы эсабынъыз саифенинъ къорчалав севиелерини денъиштирме еткисине саип дегиль. '''$1''' саифесининъ шимдики сазламалары шуларыдыр:",
'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1|$1}} саифеде къулланыла.
@@ -1455,7 +1519,7 @@ e-mail: $PAGEEDITOR_EMAIL
'protect-expiring' => 'бите: $1 (UTC)',
'protect-cascade' => 'Бу саифеде къулланылгъан бутюн саифелерни къорчалавгъа ал (каскадлы къорчалав)',
'protect-cantedit' => 'Бу саифенинъ къорчалав севиесини денъиштирип оламазсынъыз, чюнки буны япмагъа еткинъиз ёкъ.',
-'protect-expiry-options' => '1 саат:1 hours,1 кунь:1 day,1 афта:1 week,2 афта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,муддетсиз:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 саат:1 hours,1 кунь:1 day,1 афта:1 week,2 афта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,муддетсиз:infinite',
'restriction-type' => 'Рухсети:',
'restriction-level' => 'Рухсет севиеси:',
'minimum-size' => 'Асгъарий (минималь) буюклик',
@@ -1492,7 +1556,7 @@ e-mail: $PAGEEDITOR_EMAIL
'contributions-title' => '$1 къулланыджысынынъ исселери',
'mycontris' => 'Исселерим',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Бу критерийлерге уйгъан денъишиклик тапыламады', # Optional parameter: $1 is the user name
+'nocontribs' => 'Бу критерийлерге уйгъан денъишиклик тапыламады',
'uctop' => '(сонъки)',
'month' => 'Бу ай (ве ондан эрте):',
'year' => 'Бу сене (ве ондан эрте):',
@@ -1500,6 +1564,8 @@ e-mail: $PAGEEDITOR_EMAIL
'sp-contributions-newbies' => 'Тек янъы къулланыджыларнынъ исселерини косьтер',
'sp-contributions-newbies-sub' => 'Янъы къулланыджылар ичюн',
'sp-contributions-blocklog' => 'Блок этюв журналы',
+'sp-contributions-talk' => 'музакере',
+'sp-contributions-userrights' => 'къулланыджы акъларыны идаре этюв',
'sp-contributions-search' => 'Исселерни къыдырув',
'sp-contributions-username' => 'IP адреси я да къулланыджы ады:',
'sp-contributions-submit' => 'Къыдыр',
@@ -1532,7 +1598,7 @@ e-mail: $PAGEEDITOR_EMAIL
'ipbreason' => 'Себеп',
'ipbsubmit' => 'Бу къулланыджыны блок эт',
'ipbother' => 'Фаркълы заман',
-'ipboptions' => '2 саат:2 hours,1 кунь:1 day,3 кунь:3 days,1 афта:1 week,2 афта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,муддетсиз:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 саат:2 hours,1 кунь:1 day,3 кунь:3 days,1 афта:1 week,2 афта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 йыл:1 year,муддетсиз:infinite',
'ipbotheroption' => 'фаркълы',
'ipbotherreason' => 'Дигер/илявели себеп:',
'badipaddress' => 'Янълыш IP адреси',
@@ -1544,7 +1610,7 @@ e-mail: $PAGEEDITOR_EMAIL
'ipblocklist' => 'Блок этильген къулланыджылар ве IP адреслери',
'blocklistline' => '$1, $2 блок этти: $3 ($4)',
'infiniteblock' => 'муддетсиз',
-'expiringblock' => '$1 тарихында битеджек',
+'expiringblock' => '$1 $2 тарихында битеджек',
'blocklink' => 'блок эт',
'unblocklink' => 'блок этмесини чыкъар',
'change-blocklink' => 'блок этювни денъиштир',
@@ -1565,75 +1631,75 @@ e-mail: $PAGEEDITOR_EMAIL
'lockbtn' => 'Малюмат базасы килитли',
# Move page
-'move-page' => '$1 саифесининъ адыны денъиштирмектесинъиз',
-'move-page-legend' => 'Ад денъишиклиги',
-'movepagetext' => "Ашагъыдаки форманы къулланып саифенинъ адыны денъиштирилир. Бунынънен берабер денъишиклик журналы да янъы адгъа авуштырылыр.
+'move-page' => '$1 саифесининъ адыны денъиштирмектесинъиз',
+'move-page-legend' => 'Ад денъишиклиги',
+'movepagetext' => "Ашагъыдаки форманы къулланып саифенинъ адыны денъиштирилир. Бунынънен берабер денъишиклик журналы да янъы адгъа авуштырылыр.
Эски ад янъы адгъа ёллама олур. Эски серлевагъа ёллама саифелерни автоматик оларакъ янъартып оласынъыз. Бу ишлеми автоматик япмагъа истемесенъиз, бутюн [[Special:DoubleRedirects|чифт]] ве [[Special:BrokenRedirects|йыртыкъ]] ёллама саифелерини озюнъиз тюзетмеге меджбур олурсынъыз. Багълантылар эндиден берли догъру чалышмасындан эмин олмалысынъыз.
Янъы адда бир ад энди бар олса, ад денъишиклиги '''япылмайджакъ''', анджакъ мевджут олгъан саифе ёллама я да бош олса ад денъишиклиги мумкюн оладжакъ. Бу демек ки, саифе адыны янълыштан денъиштирген олсанъыз деминки адыны кери къайтарып оласынъыз, амма мевджут олгъан саифени тесадюфен ёкъ эталмайсынъыз.
'''ТЕНБИ!'''
Ад денъиштирюв популяр саифелер ичюн буюк денъишмелерге себеп ола билир. Лютфен, денъишикликни япмадан эвель ола биледжеклерни козь огюне алынъыз.",
-'movepagetalktext' => "Къошулгъан музакере саифесининъ де (бар олса)
+'movepagetalktext' => "Къошулгъан музакере саифесининъ де (бар олса)
ады автоматик тарзда денъиштириледжек. '''Мустесналар:'''
* Айны бу адда бош олмагъан бир музакере саифеси энди бар;
* Ашагъыдаки бошлукъкъа ишарет къоймадынъыз.
Бойле алларда, керек олса, саифелерни къолнен ташымагъа я да бирлештирмеге меджбур олурсынъыз.",
-'movearticle' => 'Эски ад',
-'movenologin' => 'Отурым ачмадынъыз',
-'movenologintext' => 'Саифенинъ адыны денъиштирип олмакъ ичюн [[Special:UserLogin|отурым ачынъыз]].',
-'movenotallowed' => 'Саифелер адларыны денъиштирмеге изининъиз ёкъ.',
-'newtitle' => 'Янъы ад',
-'move-watch' => 'Бу саифени козет',
-'movepagebtn' => 'Адыны денъиштир',
-'pagemovedsub' => 'Ад денъишиклиги тамамланды',
-'movepage-moved' => "'''«$1» саифесининъ ады «$2» оларакъ денъиштирильди'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'movepage-moved-redirect' => 'Бир ёллама яратылды.',
-'movepage-moved-noredirect' => 'Ёллама яратылувы бастырылды.',
-'articleexists' => 'Бу адда бир саифе энди бар я да сиз язгъан ад ясакълы.
+'movearticle' => 'Эски ад',
+'movenologin' => 'Отурым ачмадынъыз',
+'movenologintext' => 'Саифенинъ адыны денъиштирип олмакъ ичюн [[Special:UserLogin|отурым ачынъыз]].',
+'movenotallowed' => 'Саифелер адларыны денъиштирмеге изининъиз ёкъ.',
+'newtitle' => 'Янъы ад',
+'move-watch' => 'Бу саифени козет',
+'movepagebtn' => 'Адыны денъиштир',
+'pagemovedsub' => 'Ад денъишиклиги тамамланды',
+'movepage-moved' => "'''«$1» саифесининъ ады «$2» оларакъ денъиштирильди'''",
+'movepage-moved-redirect' => 'Бир ёллама яратылды.',
+'movepage-moved-noredirect' => 'Ёллама яратылувы бастырылды.',
+'articleexists' => 'Бу адда бир саифе энди бар я да сиз язгъан ад ясакълы.
Лютфен, башкъа бир ад сайлап язынъыз.',
-'cantmove-titleprotected' => 'Сиз язгъан янъы ад ясакълыдыр, бунынъ ичюн саифе адыны денъиштирмекнинъ чареси ёкъ.',
-'talkexists' => "'''Саифенинъ ады денъиштирильди, амма музакере саифесининъ адыны денъиштирмеге мумкюнлик ёкътыр, чюнки айны бу адда бир саифе энди бар. Лютфен, буларны къолнен бирлештиринъиз.'''",
-'movedto' => 'ады денъиштирильди:',
-'movetalk' => 'Музакере саифесининъ адыны денъиштир.',
-'move-subpages' => 'Алт саифелернинъ адларыны да денъиштир ($1 саифеге къадар)',
-'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
-'movepage-page-exists' => '$1 саифеси энди бар, ве автоматик оларакъ янъыдан язылып оламаз.',
-'movepage-page-moved' => '$1 саифесининъ ады $2 оларакъ денъиштирильди.',
-'movepage-page-unmoved' => '$1 саифесининъ ады $2 оларакъ денъиштирилип оламай.',
-'1movedto2' => '"[[$1]]" саифесининъ ады "[[$2]]" оларакъ денъиштирильди',
-'1movedto2_redir' => '[[$1]] серлевасы [[$2]] саифесине ёлланды',
-'move-redirect-suppressed' => 'ёллама бастырылгъан',
-'movelogpage' => 'Ад денъишиклиги журналы',
-'movelogpagetext' => 'Ашагъыда булунгъан джедвель ады денъиштирильген саифелерни косьтере',
-'movesubpage' => '{{PLURAL:$1|Алт саифе|Алт саифелер}}',
-'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|алт саифеси|алт саифеси}} бар.',
-'movenosubpage' => 'Бу саифенинъ алт саифеси ёкъ.',
-'movereason' => 'Себеп',
-'revertmove' => 'Кериге ал',
-'delete_and_move' => 'Ёкъ эт ве адыны денъиштир',
-'delete_and_move_text' => '==Ёкъ этмек лязимдир==
+'cantmove-titleprotected' => 'Сиз язгъан янъы ад ясакълыдыр, бунынъ ичюн саифе адыны денъиштирмекнинъ чареси ёкъ.',
+'talkexists' => "'''Саифенинъ ады денъиштирильди, амма музакере саифесининъ адыны денъиштирмеге мумкюнлик ёкътыр, чюнки айны бу адда бир саифе энди бар. Лютфен, буларны къолнен бирлештиринъиз.'''",
+'movedto' => 'ады денъиштирильди:',
+'movetalk' => 'Музакере саифесининъ адыны денъиштир.',
+'move-subpages' => 'Алт саифелернинъ адларыны да денъиштир ($1 саифеге къадар)',
+'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
+'movepage-page-exists' => '$1 саифеси энди бар, ве автоматик оларакъ янъыдан язылып оламаз.',
+'movepage-page-moved' => '$1 саифесининъ ады $2 оларакъ денъиштирильди.',
+'movepage-page-unmoved' => '$1 саифесининъ ады $2 оларакъ денъиштирилип оламай.',
+'1movedto2' => '"[[$1]]" саифесининъ ады "[[$2]]" оларакъ денъиштирильди',
+'1movedto2_redir' => '[[$1]] серлевасы [[$2]] саифесине ёлланды',
+'move-redirect-suppressed' => 'ёллама бастырылгъан',
+'movelogpage' => 'Ад денъишиклиги журналы',
+'movelogpagetext' => 'Ашагъыда булунгъан джедвель ады денъиштирильген саифелерни косьтере',
+'movesubpage' => '{{PLURAL:$1|Алт саифе|Алт саифелер}}',
+'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|алт саифеси|алт саифеси}} бар.',
+'movenosubpage' => 'Бу саифенинъ алт саифеси ёкъ.',
+'movereason' => 'Себеп',
+'revertmove' => 'Кериге ал',
+'delete_and_move' => 'Ёкъ эт ве адыны денъиштир',
+'delete_and_move_text' => '==Ёкъ этмек лязимдир==
«[[:$1]]» саифеси энди бар. Адыны денъиштирип олмакъ ичюн оны ёкъ этмеге истейсинъизми?',
-'delete_and_move_confirm' => 'Эбет, бу саифени ёкъ эт',
-'delete_and_move_reason' => 'Исим денъиштирип олмакъ ичюн ёкъ этильди',
-'selfmove' => 'Бу саифенинъ адыны денъиштирмеге имкян ёкътыр, чюнки асыл иле янъы адлары бир келе.',
-'move-leave-redirect' => 'Аркъада бир ёллама ташла',
+'delete_and_move_confirm' => 'Эбет, бу саифени ёкъ эт',
+'delete_and_move_reason' => 'Исим денъиштирип олмакъ ичюн ёкъ этильди',
+'selfmove' => 'Бу саифенинъ адыны денъиштирмеге имкян ёкътыр, чюнки асыл иле янъы адлары бир келе.',
+'move-leave-redirect' => 'Аркъада бир ёллама ташла',
+'protectedpagemovewarning' => "'''Тенби:''' Бу саифе килитленген, адыны тек идареджилер денъиштирип олалар.",
+'semiprotectedpagemovewarning' => "'''Ихтар:''' Бу саифе килитленген, адыны тек къайдлы къулланыджылар денъиштирип олалар.",
# Export
'export' => 'Саифелерни экспорт эт',
# Namespace 8 related
-'allmessages' => 'Система беянатлары',
-'allmessagesname' => 'Исим',
-'allmessagesdefault' => 'Оригиналь метин',
-'allmessagescurrent' => 'Шимди къулланылгъан метин',
-'allmessagestext' => 'Ишбу джедвель MediaWiki-де мевджут олгъан бутюн система беянатларынынъ джедвелидир.
+'allmessages' => 'Система беянатлары',
+'allmessagesname' => 'Исим',
+'allmessagesdefault' => 'Оригиналь метин',
+'allmessagescurrent' => 'Шимди къулланылгъан метин',
+'allmessagestext' => 'Ишбу джедвель MediaWiki-де мевджут олгъан бутюн система беянатларынынъ джедвелидир.
MediaWiki интерфейсининъ чешит тиллерге терджиме этювде иштирак этмеге истесенъиз [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ве [http://translatewiki.net translatewiki.net] саифелерине зиярет этинъиз.',
-'allmessagesfilter' => 'Метин айрыштырыджы фильтры:',
-'allmessagesmodified' => 'Тек денъиштирильгенлерни косьтер',
# Thumbnails
'thumbnail-more' => 'Буют',
@@ -1665,6 +1731,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
'tooltip-ca-viewsource' => 'Бу саифе къорчалав алтында. Менба кодуны тек корип оласынъыз, денъиштирип оламайсынъыз.',
'tooltip-ca-history' => 'Бу саифенинъ кечмиш версиялары.',
'tooltip-ca-protect' => 'Бу саифени къорчалав',
+'tooltip-ca-unprotect' => 'Бу саифенинъ къорчалавыны чыкъарув',
'tooltip-ca-delete' => 'Бу саифени ёкъ этюв',
'tooltip-ca-undelete' => 'Саифени ёкъ этильмезден эвельки алына кери кетиринъиз',
'tooltip-ca-move' => 'Саифенинъ адыны денъиштирюв',
@@ -1675,6 +1742,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
'tooltip-search-fulltext' => 'Бу метини олгъан саифелер къыдыр',
'tooltip-p-logo' => 'Баш саифе',
'tooltip-n-mainpage' => 'Баш саифеге барув',
+'tooltip-n-mainpage-description' => 'Баш саифеге бар',
'tooltip-n-portal' => 'Лейха узерине, не къайдадыр, нени япып оласынъыз',
'tooltip-n-currentevents' => 'Агъымдаки вакъиаларнен багълы сонъки малюмат',
'tooltip-n-recentchanges' => 'Викиде япылгъан сонъки денъишикликлернинъ джедвели.',
@@ -1722,10 +1790,12 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
# Attribution
'anonymous' => '{{SITENAME}} сайтынынъ {{PLURAL:$1|1|$1}} къайдсыз (аноним) къулланыджысы',
'siteuser' => '{{SITENAME}} сайтынынъ къулланыджысы $1',
-'lastmodifiedatby' => 'Саифе энъ сонъки $3 тарафындан $1, $2 тарихында денъиштирильди.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) къулланыджысы $1',
+'lastmodifiedatby' => 'Саифе энъ сонъки $3 тарафындан $1, $2 тарихында денъиштирильди.',
'othercontribs' => 'Бу саифени яраткъанда иштирак эткен: $1.',
'others' => 'дигерлери',
'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1|$2}} къулланыджысы $1',
+'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|къулланыджысы|къулланыджылары}} $1',
'creditspage' => 'Тешеккюрлер',
'nocredits' => 'Бу саифе ичюн къулланыджылар джедвели ёкъ.',
@@ -1762,6 +1832,13 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
'mw_math_modern' => 'Земаневий браузерлер ичюн тевсие этильген',
'mw_math_mathml' => 'Мумкюн олса MathML (даа денъеме алында)',
+# Math errors
+'math_failure' => 'Айырыштырыламды',
+'math_unknown_error' => 'билинмеген хата',
+'math_unknown_function' => 'бельгисиз функция',
+'math_lexing_error' => 'лексик хата',
+'math_syntax_error' => 'синтаксис хатасы',
+
# Patrol log
'patrol-log-page' => 'Тешкерюв журналы',
'log-show-hide-patrol' => 'Тешкерюв журналыны $1',
@@ -1780,7 +1857,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
# Media information
'mediawarning' => "'''Ихтар''': Бу файл тюрюнинъ ичинде яман ниетли код ола биле.
Файлны ишлетип ишлетим системанъызгъа зарар кетирип олурсынъыз.",
-'imagemaxsize' => 'Ресимлернинъ малюмат саифелериндеки ресимнинъ азамий (максималь) ольчюси:',
+'imagemaxsize' => "Ресим ольчюси сынъыры:<br />''(файл малюмат саифелери ичюн)''",
'thumbsize' => 'Кичик ольчю:',
'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} саифе',
'file-info' => '(файл буюклиги: $1, MIME чешити: $2)',
@@ -1826,7 +1903,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-make' => 'Камера маркасы',
@@ -1856,7 +1933,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
# EXIF attributes
'exif-compression-1' => 'Сыкъыштырылмагъан',
-'exif-orientation-3' => '180° айландырылгъан', # 0th row: bottom; 0th column: right
+'exif-orientation-3' => '180° айландырылгъан',
'exif-exposureprogram-1' => 'Эльнен',
@@ -1892,6 +1969,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
'watchlistall2' => 'эписини',
'namespacesall' => 'Эписи',
'monthsall' => 'Эписи',
+'limitall' => 'бутюни',
# E-mail address confirmation
'confirmemail' => 'E-mail адресини тасдыкъла',
@@ -2008,7 +2086,7 @@ $1',
'watchlisttools-raw' => 'Козетюв джедвелини адий метин оларакъ денъиштир',
# Special:Version
-'version' => 'Версия', # Not used as normal message but as header for the special page itself
+'version' => 'Версия',
# Special:FileDuplicateSearch
'fileduplicatesearch-legend' => 'Дубликатны къыдыр',
@@ -2037,4 +2115,7 @@ $1',
'blankpage' => 'Бош саифе',
'intentionallyblankpage' => 'Бу саифе аселет бош къалдырылгъан',
+# HTML forms
+'htmlform-reset' => 'Денъишикликлерни кери ал',
+
);
diff --git a/languages/messages/MessagesCrh_latn.php b/languages/messages/MessagesCrh_latn.php
index e9a70af1..c12fb7fb 100644
--- a/languages/messages/MessagesCrh_latn.php
+++ b/languages/messages/MessagesCrh_latn.php
@@ -8,7 +8,6 @@
* @file
*
* @author AlefZet
- * @author Alessandro
* @author Don Alessandro
* @author Urhixidur
*/
@@ -18,24 +17,22 @@ $fallback8bitEncoding = 'windows-1254';
$separatorTransformTable = array(',' => '.', '.' => ',' );
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Mahsus',
- NS_MAIN => '',
- NS_TALK => 'Muzakere',
- NS_USER => 'Qullanıcı',
- NS_USER_TALK => 'Qullanıcı_muzakeresi',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_muzakeresi',
- NS_FILE => 'Resim',
- NS_FILE_TALK => 'Resim_muzakeresi',
- NS_MEDIAWIKI => 'MediaViki',
- NS_MEDIAWIKI_TALK => 'MediaViki_muzakeresi',
- NS_TEMPLATE => 'Şablon',
- NS_TEMPLATE_TALK => 'Şablon_muzakeresi',
- NS_HELP => 'Yardım',
- NS_HELP_TALK => 'Yardım_muzakeresi',
- NS_CATEGORY => 'Kategoriya',
- NS_CATEGORY_TALK => 'Kategoriya_muzakeresi',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Mahsus',
+ NS_TALK => 'Muzakere',
+ NS_USER => 'Qullanıcı',
+ NS_USER_TALK => 'Qullanıcı_muzakeresi',
+ NS_PROJECT_TALK => '$1_muzakeresi',
+ NS_FILE => 'Fayl',
+ NS_FILE_TALK => 'Fayl_muzakeresi',
+ NS_MEDIAWIKI => 'MediaViki',
+ NS_MEDIAWIKI_TALK => 'MediaViki_muzakeresi',
+ NS_TEMPLATE => 'Şablon',
+ NS_TEMPLATE_TALK => 'Şablon_muzakeresi',
+ NS_HELP => 'Yardım',
+ NS_HELP_TALK => 'Yardım_muzakeresi',
+ NS_CATEGORY => 'Kategoriya',
+ NS_CATEGORY_TALK => 'Kategoriya_muzakeresi',
);
# Aliases to cyril namespaces
@@ -48,6 +45,8 @@ $namespaceAliases = array(
"$1_музакереси" => NS_PROJECT_TALK,
"Ресим" => NS_FILE,
"Ресим_музакереси" => NS_FILE_TALK,
+ "Resim" => NS_FILE,
+ "Resim_muzakeresi" => NS_FILE_TALK,
"МедиаВики" => NS_MEDIAWIKI,
"МедиаВики_музакереси" => NS_MEDIAWIKI_TALK,
'Шаблон' => NS_TEMPLATE,
@@ -55,7 +54,7 @@ $namespaceAliases = array(
'Ярдым' => NS_HELP,
'Разговор_о_помоћи' => NS_HELP_TALK,
'Категория' => NS_CATEGORY,
- 'Категория_музакереси' => NS_CATEGORY_TALK,
+ 'Категория_музакереси' => NS_CATEGORY_TALK
);
@@ -132,6 +131,7 @@ $messages = array(
'tog-enotifminoredits' => 'Saifelerde kiçik deñişiklik olğanda da de maña e-mail yolla',
'tog-enotifrevealaddr' => 'Bildirüv mektüplerinde e-mail adresimni köster',
'tog-shownumberswatching' => 'Közetken qullanıcı sayısını köster',
+'tog-oldsig' => 'Şimdiki imzañız:',
'tog-fancysig' => 'İmza vikimetin kibi olsun (avtomatik bağlantı olmaz)',
'tog-externaleditor' => 'Deñişikliklerni başqa editor programması ile yap',
'tog-externaldiff' => 'Teñeştirmelerni tış programmağa yaptır.',
@@ -154,6 +154,10 @@ $messages = array(
'underline-never' => 'Asla',
'underline-default' => 'Brauzer qarar bersin',
+# Font style option in Special:Preferences
+'editfont-style' => 'Yazuv penceresinde şrift türü:',
+'editfont-default' => 'Brauzerge köre',
+
# Dates
'sunday' => 'Bazar',
'monday' => 'Bazarertesi',
@@ -213,7 +217,7 @@ $messages = array(
'category-media-header' => '"$1" kategoriyasındaki media faylları',
'category-empty' => "''İşbu kategoriyada iç bir saife ya da media fayl yoq.''",
'hidden-categories' => 'Gizli {{PLURAL:$1|kategoriya|kategoriyalar}}',
-'hidden-category-category' => 'Gizli kategoriyalar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Gizli kategoriyalar',
'category-subcat-count' => '{{PLURAL:$2|Bu kategoriyada tek bir aşağıdaki alt kategoriya bar.|Bu kategoriyada toplam $2 kategoriyadan aşağıdaki $1 alt kategoriya bar.}}',
'category-subcat-count-limited' => 'Bu kategoriyada aşağıdaki {{PLURAL:$1|1|$1}} alt kategoriya bar.',
'category-article-count' => '{{PLURAL:$2|Bu kategoriyada tek bir aşağıdaki saife bar.|Bu kategoriyadaki toplam $2 saifeden aşağıdaki $1 saife kösterilgen.}}',
@@ -221,6 +225,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Bu kategoriyada tek bir aşağıdaki fayl bar.|Bu kategoriyadaki toplam $2 fayldan aşağıdaki $1 fayl kösterilgen.}}',
'category-file-count-limited' => 'Bu kategoriyada aşağıdaki {{PLURAL:$1|1|$1}} fayl bar.',
'listingcontinuesabbrev' => ' (devam)',
+'index-category' => 'İndeksli saifeler',
+'noindex-category' => 'İndekssiz saifeler',
'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„]+)$/sDu',
'mainpagetext' => "'''MediaWiki muvafaqiyetnen quruldı.'''",
@@ -231,10 +237,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki boyunca sıq berilgen suallernen cevaplar];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-niñ yañı versiyalarınıñ çıquvından haber yiberüv].",
-'about' => 'Aqqında',
-'article' => 'Saife',
-'newwindow' => '(yañı bir pencerede açılır)',
-'cancel' => 'Lâğu',
+'about' => 'Aqqında',
+'article' => 'Saife',
+'newwindow' => '(yañı bir pencerede açılır)',
+'cancel' => 'Lâğu',
+'moredotdotdot' => 'Daa...',
+'mypage' => 'Saifem',
+'mytalk' => 'Muzakere saifem',
+'anontalk' => 'Bu IP-niñ muzakeresi',
+'navigation' => 'Saytta yol tapuv',
+'and' => '&#32;ve',
+
+# Cologne Blue skin
'qbfind' => 'Tap',
'qbbrowse' => 'Baqıp çıq',
'qbedit' => 'Deñiştir',
@@ -242,15 +256,35 @@ $messages = array(
'qbpageinfo' => 'Bağlam',
'qbmyoptions' => 'Saifelerim',
'qbspecialpages' => 'Mahsus saifeler',
-'moredotdotdot' => 'Daa...',
-'mypage' => 'Saifem',
-'mytalk' => 'Muzakere saifem',
-'anontalk' => 'Bu IP-niñ muzakeresi',
-'navigation' => 'Saytta yol tapuv',
-'and' => '&#32;ve',
-
-# Metadata in edit box
-'metadata_help' => 'Meta malümatı:',
+'faq' => 'Sıq berilgen sualler',
+'faqpage' => 'Project:Sıq berilgen sualler',
+
+# Vector skin
+'vector-action-addsection' => 'Mevzu qoş',
+'vector-action-delete' => 'Yoq et',
+'vector-action-move' => 'Adını deñiştir',
+'vector-action-protect' => 'Qorçala',
+'vector-action-undelete' => 'Yañıdan yarat',
+'vector-action-unprotect' => 'Qorçalavnı çıqar',
+'vector-namespace-category' => 'Kategoriya',
+'vector-namespace-help' => 'Yardım saifesi',
+'vector-namespace-image' => 'Fayl',
+'vector-namespace-main' => 'Saife',
+'vector-namespace-media' => 'Media saifesi',
+'vector-namespace-mediawiki' => 'Beyanat',
+'vector-namespace-project' => 'Leyha saifesi',
+'vector-namespace-special' => 'Mahsus saife',
+'vector-namespace-talk' => 'Muzakere',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Qullanıcı saifesi',
+'vector-view-create' => 'Yarat',
+'vector-view-edit' => 'Deñiştir',
+'vector-view-history' => 'Keçmişini köster',
+'vector-view-view' => 'Oqu',
+'vector-view-viewsource' => 'Menba kodunı köster',
+'actions' => 'Areketler',
+'namespaces' => 'İsim fezaları',
+'variants' => 'Variantlar',
'errorpagetitle' => 'Hata',
'returnto' => '$1.',
@@ -300,18 +334,20 @@ $messages = array(
'otherlanguages' => 'Diger tillerde',
'redirectedfrom' => '($1 saifesinden yollandı)',
'redirectpagesub' => 'Yollama saifesi',
-'lastmodifiedat' => 'Bu saife soñki olaraq $1, $2 tarihında yañardı.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu saife soñki olaraq $1, $2 tarihında yañardı.',
'viewcount' => 'Bu saife {{PLURAL:$1|1|$1}} defa irişilgen.',
'protectedpage' => 'Qorçalavlı saife',
'jumpto' => 'Buña bar:',
'jumptonavigation' => 'qullan',
'jumptosearch' => 'qıdır',
+'view-pool-error' => 'Afu etiñiz, server şimdi adden-aşır yüklendi. Pek çoq qullanıcı bu saifeni açmağa tırışa. Lütfen, bu saifeni bir daa açmaqtan evel biraz bekleñiz.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} aqqında',
'aboutpage' => 'Project:Aqqında',
'copyright' => 'Malümat $1 binaen keçilip ola.',
-'copyrightpagename' => '{{SITENAME}} müelliflik aqları',
'copyrightpage' => '{{ns:project}}:Müelliflik aqları',
'currentevents' => 'Ağımdaki vaqialar',
'currentevents-url' => 'Project:Ağımdaki vaqialar',
@@ -319,8 +355,6 @@ $messages = array(
'disclaimerpage' => 'Project:Umumiy Malümat Muqavelesi',
'edithelp' => 'Saifeler nasıl deñiştirilir?',
'edithelppage' => 'Help:Saife nasıl deñiştirilir',
-'faq' => 'Sıq berilgen sualler',
-'faqpage' => 'Project:Sıq berilgen sualler',
'helppage' => 'Help:Münderice',
'mainpage' => 'Baş Saife',
'mainpage-description' => 'Baş Saife',
@@ -399,9 +433,6 @@ Malümat bazasından soñki soratma:
"$1"
Qullanılğan funktsiya "$2".
Malümat bazasınıñ bildirgen hatası "$3: $4".',
-'noconnect' => 'Bağışlañız! Tehnikiy problemalar sebebinden wiki malümat bazasınıñ serverinen bağlınıp olamay. <br /> $1',
-'nodb' => '$1 malümat bazasını saylamağa çare yoq',
-'cachederror' => 'Aşağıda siz istegen saifeniñ keşirlengen kopiyasıdır. Bunıñ içün o eskirgen ola bile.',
'laggedslavemode' => 'Diqqat! Bu saifede soñki yañaruv olmay bile.',
'readonly' => 'Malümat bazası kilitlendi',
'enterlockreason' => 'Blok etüvniñ sebebini ve devamını kirsetiñiz.',
@@ -419,6 +450,7 @@ Lütfen, URL yazıp bundan [[Special:ListUsers/sysop|idarecige]] haber beriñiz.
'readonly_lag' => 'Malümat bazasınıñ ekilemci serveri birlemci serverinen sinhronizirlengence malümat bazası deñiştirilmemesi içün avtomatik olaraq blok etildi.',
'internalerror' => 'İçki hata',
'internalerror_info' => 'İçki hata: $1',
+'fileappenderror' => '"$1" faylı "$2" faylına qoşulıp olamay.',
'filecopyerror' => '"$1" faylı "$2" faylına kopiyalanıp olamay.',
'filerenameerror' => 'faylnıñ "$1" degen adı "$2" olaraq deñiştirilip olamay.',
'filedeleteerror' => '"$1" faylı yoq etilip olamay.',
@@ -428,7 +460,7 @@ Lütfen, URL yazıp bundan [[Special:ListUsers/sysop|idarecige]] haber beriñiz.
'unexpected' => 'beklenmegen deger: "$1"="$2".',
'formerror' => 'Hata: formanıñ malümatını yollamaqnıñ iç çaresi yoq',
'badarticleerror' => 'Siz yapmağa istegen işlev bu saifede yapılıp оlamay.',
-'cannotdelete' => 'Belgilengen saife ya da körüniş yoq etilip olamadı. (başqa bir qullanıcı tarafından yoq etilgen ola bilir).',
+'cannotdelete' => '"$1" saife ya da faylı yoq etilip olamadı. Başqa bir qullanıcı tarafından yoq etilgen ola bile.',
'badtitle' => 'Ruhsetsiz serleva',
'badtitletext' => 'İstenilgen saife adı doğru degil, o boştır, yahut tillerara bağlantı ya da vikilerara bağlantı doğru yazılmağan. İhtimalı bar ki, saife adında yasaqlanğan işaretler bar.',
'perfcached' => 'Malümatlar daa evelceden azırlanğan ola bilir. Bu sebepten eskirgen ola bilir!',
@@ -460,14 +492,12 @@ Sebep: ''$2''.",
'virus-unknownscanner' => 'bilinmegen antivirus:',
# Login and logout pages
-'logouttitle' => 'Oturımnı qapat',
'logouttext' => "'''Oturımnı qapattıñız.'''
Şimdi {{SITENAME}} saytını anonim olaraq qullanıp olasıñız, ya da yañıdan [[Special:UserLogin|oturım açıp]] olasıñız (ister aynı qullanıcı adınen, ister başqa bir qullanıcı adınen). Web brauzeriñiz keşini temizlegence bazı saifeler sanki alâ daa oturımıñız açıq eken kibi körünip olur.",
'welcomecreation' => '== Hoş keldiñiz, $1! ==
Esabıñız açıldı.
Bu saytnıñ [[Special:Preferences|sazlamalarını]] şahsıñızğa köre deñiştirmege unutmañız.',
-'loginpagetitle' => 'Oturım aç',
'yourname' => 'Qullanıcı adıñız',
'yourpassword' => 'Paroliñiz',
'yourpasswordagain' => 'Parolni bir daa yazıñız:',
@@ -490,28 +520,8 @@ Bu saytnıñ [[Special:Preferences|sazlamalarını]] şahsıñızğa köre deñi
'badretype' => 'Kirsetken parolleriñiz aynı degil.',
'userexists' => 'Kirsetken qullanıcı adıñız endi qullanıla.
Başqa bir qullanıcı adı saylañız.',
-'youremail' => 'E-mail adresiñiz:',
-'username' => 'Qullanıcı adı:',
-'uid' => 'Qayd nomeri:',
-'prefs-memberingroups' => 'Azası olğan {{PLURAL:$1|gruppa|gruppalar}}:',
-'yourrealname' => 'Kerçek adıñız:',
-'yourlanguage' => 'İnterfeys tili:',
-'yourvariant' => 'Til saylavı:',
-'yournick' => 'Siziñ lağabıñız (imzalarda kösterilecek):',
-'badsig' => 'Yañlış imza. HTML tegleriniñ doğrulığını baqıñız.',
-'badsiglength' => 'Qarardan ziyade uzun imzadır, {{PLURAL:$1|1|$1}} ziyade işaretten ibaret olması mümkün degil.',
-'yourgender' => 'Cınsıñız:',
-'gender-unknown' => 'Bildirilmegen',
-'gender-male' => 'Erkek',
-'gender-female' => 'Qadın',
-'prefs-help-gender' => 'Mecburiy degil: wiki tarafından doğru cınıs adreslevi içün qullanıla. Bu malümat umumiy olacaq.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Kerçek adıñız (mecburiy degildir).
-Eger bildirseñiz, saifelerdeki deñişikliklerini kimniñ yapqanını köstermek içün qullanılacaq.',
'loginerror' => 'Oturım açma hatası',
-'prefs-help-email' => 'E-mail (mecburiy degildir). E-mail adresi bildirilgen olsa, şimdiki paroliñizni unutsañız, yañı bir parol istep olasıñız.
-Bundan ğayrı bu vikideki saifeñizden başqa qullanıcılarğa siznen bağlanmağa imkân berecek. E-mail adresiñiz başqa qullanıcılarğa kösterilmeycek.',
-'prefs-help-email-required' => 'E-mail adresi lâzim.',
+'createaccounterror' => 'Esap yaratılıp olamay: $1',
'nocookiesnew' => 'Qullanıcı esabı açılğan, faqat tanıtılmağan. {{SITENAME}} qullanıcılarnı tanıtmaq içün "cookies"ni qullana. Sizde bu funktsiya qapalı vaziyettedir. "Cookies" funktsiyasını işletip tekrar yañı adıñız ve paroliñiznen tırışıp baqınız.',
'nocookieslogin' => '{{SITENAME}} "cookies"ni qullana. Sizde bu funktsiya qapalı vaziyettedir. "Cookies" funktsiyasını işletip tekrar tırışıp baqıñız.',
'noname' => 'Doğru qullanıcı adını kirsetmediñiz.',
@@ -525,7 +535,8 @@ Doğru yazğanıñıznı teşkeriñiz ya da [[Special:UserLogin/signup|yañı qu
'wrongpassword' => 'Kirsetken paroliñiz yañlıştır. Lütfen, tekrar etiñiz.',
'wrongpasswordempty' => 'Kirsetken parоliñiz bоştır.
Lütfen, tekrar etiñiz.',
-'passwordtooshort' => 'Paroliñiz pek qısqa. Eñ az $1 arif ve ya raqamdan ibaret olmalı.',
+'passwordtooshort' => 'Paroliñizde eñ az {{PLURAL:$1|1|$1}} işaret olmalı.',
+'password-name-match' => 'Paroliñiz qullanıcı adıñızdan farqlı olmalı.',
'mailmypassword' => 'Yañı parol yiber',
'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} qullanıcınıñ parol hatırlatuvı',
'passwordremindertext' => 'Birev (belki de bu sizsiñiz, $1 IP adresinden) {{SITENAME}} saytı içün ($4) yañı qullanıcı parolini istedi.
@@ -533,6 +544,7 @@ $2 qullanıcısına vaqtınca <code>$3</code> paroli yaratıldı. Eger bu kerçe
Eger de yañı parol talap etmegen olsañız ya da eski paroliñizni hatırlap endi onı deñiştirmege istemeseñiz, bu mektüpni diqqatqa almayıp eski paroliñizni qullanmağa devam etip olasıñız.',
'noemail' => '$1 adlı qullanıcı içün e-mail bildirilmedi.',
+'noemailcreate' => 'Doğru bir e-mail adresi bildirmek kereksiñiz',
'passwordsent' => 'Yañı parol e-mail yolunen qullanıcınıñ bildirgen $1 adresine yiberildi. Parolni alğan soñ tekrar kiriş yapıñız.',
'blocked-mailpassword' => 'IP adresiñizden saifeler deñiştirüv yasaqlı, parol hatırlatuv funktsiyası da blok etildi.',
'eauthentsent' => 'Bildirilgen e-mail adresine içinde tasdıq kodu olğan bir mektüp yollandı. Siz şu mektüpte yazılğan areketlerni yapıp bu e-mail adresiniñ saibi kerçekten de siz olğanıñıznı tasdıqlağan soñ başqa mektüp yollanıp olur.',
@@ -554,6 +566,7 @@ Neticede, bu IP adresini qullanğan ziyaretçiler şimdi daa ziyade esap açıp
Siz şimdi oturım açıp paroliñizni deñiştirmek kereksiñiz.
Şu esap hata olaraq yaratılğan olsa bu mektüpke qulaq asmayıp olasıñız.',
+'usernamehasherror' => 'Qullanıcı adında # işareti olamaz',
'login-throttled' => 'Yaqın zamanda pek çoq kere kirmege tırıştıñız.
Lütfen, qayta kirmezden evel biraz bekleñiz.',
'loginlanguagelabel' => 'Til: $1',
@@ -567,7 +580,6 @@ Lütfen, qayta kirmezden evel biraz bekleñiz.',
'retypenew' => 'Yañı parolni tekrar yazıñız',
'resetpass_submit' => 'Parol qoyıp kir',
'resetpass_success' => 'Paroliñiz muvafaqiyetnen deñiştirildi! Oturımıñız açılmaqta...',
-'resetpass_bad_temporary' => 'Muvaqqat paroliñiz yañlıştır. Ola bilir ki, siz endi paroliñizni muvafaqiyetnen deñiştirgen ya da e-mail-ge yañı bir parol yollamağa rica etkendirsiñiz.',
'resetpass_forbidden' => 'Parol deñiştirmek yasaq',
'resetpass-no-info' => 'Bu saifege doğrudan irişmek içün oturım açmaq kereksiñiz.',
'resetpass-submit-loggedin' => 'Parolni deñiştir',
@@ -642,7 +654,6 @@ IP adresiñiz — $3, blok etüv identifikatorı — #$5. Lütfen, idarecilerge
'blockededitsource' => "Aşağıda \"\$1\" saifesindeki '''yapqan deñiştirmeleriñizniñ''' metini buluna.",
'whitelistedittitle' => 'Deñiştirmek içün oturım açmalısıñız',
'whitelistedittext' => 'Saifeni deñiştirmek içün $1 kereksiñiz.',
-'confirmedittitle' => 'E-mail adresini tasdıqlamaq lâzimdir',
'confirmedittext' => 'Saifeni deñiştirmeden evel e-mail adresiñizni tasdıqlamalısıñız. Lütfen, [[Special:Preferences|sazlamalar saifesinde]] e-mail adresiñizni kirsetiñiz ve tasdıqlañız.',
'nosuchsectiontitle' => 'Öyle bölük yoq',
'nosuchsectiontext' => 'Bar olmağan bölükni deñiştirip baqtıñız.',
@@ -659,13 +670,16 @@ Bu yañı esap içün parol, kiriş yapqandan soñ ''[[Special:ChangePassword|pa
Bir IP adresinden bir qaç qullanıcı faydalanıp ola.
Eger siz anonim qullanıcı olsañız ve sizge kelgen beyanatlarnı yañlıştan kelgenini belleseñiz, lütfen, artıq bunıñ kibi qarışıqlıq olmasın dep [[Special:UserLogin|oturım açıñız]].''",
'noarticletext' => 'Bu saife şimdi boştır. Bu serlevanı başqa saifelerde [[Special:Search/{{PAGENAME}}|qıdırıp olasıñız]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bağlı jurnal qaydlarını qıdırıp olasıñız] ya da bu saifeni özüñiz [{{fullurl:{{FULLPAGENAME}}|action=edit}} yazıp olasıñız]</span>.',
+'noarticletext-nopermission' => 'Bu saife şimdi boştır. Bu serlevanı başqa saifelerde [[Special:Search/{{PAGENAME}}|qıdıra bile]] ya da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bağlı jurnallarnı közden keçire bilesiñiz]</span>.',
'userpage-userdoesnotexist' => '"$1" adlı qullanıcı yoqtır. Tamam bu saifeni deñiştirmege istegeniñizni teşkeriñiz.',
+'userpage-userdoesnotexist-view' => '"$1" adlı qullanıcı esabı yoq.',
'clearyourcache' => "'''İhtar:''' Sazlamalarıñıznı saqlağandan soñ deñişikliklerni körmek içün brauzeriñizniñ keşini temizlemek kereksiñiz.
'''Mozilla / Firefox / Safari:''' ''Shift'' basılı ekende saifeni yañıdan yüklep ya da ''Ctrl-Shift-R'' yapıp (Macintosh içün ''Command-R'');
'''Konqueror:''' saifeni yañıdan yükle dögmesine ya da F5 basıp;
'''Opera:''' ''Tools → Preferences'' menüsinde keşni temizlep;
'''Internet Explorer:''' ''Ctrl'' basılı ekende saifeni yañıdan yüklep ya da ''Ctrl-F5'' basıp.",
-'usercssjsyoucanpreview' => "'''Tevsiye:''' Saifeni saqlamazdan evel '''baqıp çıq''' dögmesine basıp yapqan yañı saifeñizni közden keçiriñiz.",
+'usercssyoucanpreview' => "'''Tevsiye:''' Saifeni saqlamazdan evel '''baqıp çıq''' dögmesine basıp yapqan yañı saifeñizni közden keçiriñiz.",
+'userjsyoucanpreview' => "'''Tevsiye:''' Saifeni saqlamazdan evel '''baqıp çıq''' dögmesine basıp yapqan yañı saifeñizni közden keçiriñiz.",
'usercsspreview' => "'''Unutmañız, bu tek baqıp çıquv - qullanıcı CSS faylıñız alâ daa saqlanmadı!'''",
'userjspreview' => "'''Unutmañız, siz şimdi tek test etesiñiz ya da baqıp çıquv köresiñiz - qullanıcı JavaScript'i şimdilik saqlanmadı.'''",
'userinvalidcssjstitle' => "'''İhtar:''' \"\$1\" adınen bir tema yoqtır. tema-adı.css ve .js fayllarınıñ adları kiçik afir ile yazmaq kerek, yani {{ns:user}}:Temel/'''M'''onobook.css degil, {{ns:user}}:Temel/'''m'''onobook.css.",
@@ -710,9 +724,9 @@ Malümat bazasını kilitlegen idareci öz areketini böyle añlattı: $1",
'semiprotectedpagewarning' => "'''Tenbi''': Bu saife tek qaydlı qullanıcılar tarafından deñiştirilip olur.",
'cascadeprotectedwarning' => "'''Tenbi:''' Bu saifeni tek \"İdareciler\" gruppasına kirgen qullanıcılar deñiştirip olalar, çünki o kaskad qorçalav altında bulunğan {{PLURAL:\$1|saifege|saifelerge}} mensüptir:",
'titleprotectedwarning' => "'''TENBİ: Bu saife qorçalav altındadır, tek [[Special:ListGroupRights|mahsus aqlarğa]] saip qullanıcılar onı yaratıp olalar.'''",
-'templatesused' => 'Bu saifede qullanılğan şablonlar:',
-'templatesusedpreview' => 'Siz baqıp çıqqan saifeñizde qullanılğan şablonlar:',
-'templatesusedsection' => 'Bu bölükte qullanılğan şablonlar:',
+'templatesused' => 'Bu saifede qullanılğan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedpreview' => 'Siz baqıp çıqqan saifeñizde qullanılğan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedsection' => 'Bu bölükte qullanılğan {{PLURAL:$1|şablon|şablonlar}}:',
'template-protected' => '(qorçalav altında)',
'template-semiprotected' => '(qısmen qorçalav altında)',
'hiddencategories' => 'Bu saife {{PLURAL:$1|1|$1}} gizli kategoriyağa mensüptir:',
@@ -723,11 +737,12 @@ Keri qaytıp mevcut olğan saifeni deñiştire, [[Special:UserLogin|oturım aça
'permissionserrors' => 'İrişim aqlarınıñ hataları',
'permissionserrorstext' => 'Bunı yapmağa iziniñiz yoqtır. {{PLURAL:$1|Sebep|Sebepler}}:',
'permissionserrorstext-withaction' => 'Aşağıdaki {{PLURAL:$1|sebepten|sebeplerden}} $2 ruhsetiñiz yoq:',
-'recreate-deleted-warn' => "'''Diqqat: evelce yoq etilgen saifeni yañıdan yaratmağa tırışasıñız.'''
+'recreate-moveddeleted-warn' => "'''Tenbi: Evelce yoq etilgen saifeni yañıdan yaratasıñız.'''
-Bu saifeni kerçekten de yañıdan yaratmağa isteysiñizmi? Aşağıda yoq etilüv jurnalı buluna.",
-'deleted-notice' => 'Bu saife yoq etildi.
-Yoq etüv jurnalından qaydları aşağıda kösterile.',
+Saifeni deñiştirmege devam etkeni uyğun olıp olmağanını tüşünmelisiñiz.
+Saifeniñ yoq etilüv ve avuştırıluv qaydları mında berilgen:",
+'moveddeleted-notice' => 'Bu saife yoq etilgen.
+Saifeniñ yoq etilüv ve avuştırıluv qaydları aşağıda berilgen.',
'edit-gone-missing' => 'Saife yañartılıp olamay.
Ola bile ki, o yoq etilgendir.',
'edit-conflict' => 'Deñişiklikler konflikti.',
@@ -751,9 +766,9 @@ $3 mına bu sebepni bildirdi: ''$2''",
'viewpagelogs' => 'Bu saifeniñ jurnallarını köster',
'nohistory' => 'Bu saifeniñ keçmiş versiyası yoq.',
'currentrev' => 'Şimdiki versiya',
-'currentrev-asof' => '$1 tarihında sоñki оlaraq deñiştirilgen saifeniñ şimdiki alı',
+'currentrev-asof' => '$1 tarihında sоñki kere deñiştirilgen saifeniñ şimdiki alı',
'revisionasof' => 'Saifeniñ $1 tarihındaki alı',
-'revision-info' => 'Saifeniñ $2 tarafından oluştırılğan $1 tarihındaki alı', # Additionally available: $3: revision id
+'revision-info' => 'Saifeniñ $2 tarafından yazılğan $1 tarihındaki alı',
'previousrevision' => '← Evelki alı',
'nextrevision' => 'Soñraki alı →',
'currentrevisionlink' => 'eñ yañı alını köster',
@@ -765,7 +780,6 @@ $3 mına bu sebepni bildirdi: ''$2''",
'histlegend' => "(farq) = şimdiki alnen aradaki farq,
(soñki) = evelki alnen aradaki farq, '''k''' = kiçik deñişiklik",
'history-fieldset-title' => 'Keçmişke baquv',
-'deletedrev' => '[yoq etildi]',
'histfirst' => 'Eñ eski',
'histlast' => 'Eñ yañı',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
@@ -774,7 +788,7 @@ $3 mına bu sebepni bildirdi: ''$2''",
# Revision feed
'history-feed-title' => 'Deñişiklikler tarihı',
'history-feed-description' => 'Vikide bu saifeniñ deñişiklikler tarihı',
-'history-feed-item-nocomment' => '$2 üstünde $1', # user at time
+'history-feed-item-nocomment' => '$2 üstünde $1',
'history-feed-empty' => 'İstenilgen saife mevcut degil.
O yoq eilgen ya da adı deñiştirilgen ola bile.
Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
@@ -784,11 +798,12 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'rev-deleted-user' => '(qullanıcı adı yoq etildi)',
'rev-deleted-event' => '(qayd yoq etildi)',
'rev-delundel' => 'köster/gizle',
+'rev-showdeleted' => 'köster',
'revisiondelete' => 'Versiyalarnı yoq et/keri ketir',
'revdelete-hide-comment' => 'Qısqa tarifni kösterme',
'revdelete-hide-user' => 'Deñişiklikni yapqan qullanıcı adını/IP-ni gizle',
'revdelete-hide-restricted' => 'Malümatnı adiy qullanıcılardan kibi idarecilerden de gizle',
-'revdelete-submit' => 'Saylanğan versiyağa işlet',
+'revdelete-submit' => 'Saylanğan {{PLURAL:$1|versiyağa|versiyalarğa}} işlet',
'revdel-restore' => 'körünüvni deñiştir',
# Merge log
@@ -801,7 +816,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'compareselectedversions' => 'Saylanğan versiyalarnı teñeştir',
'editundo' => 'lâğu et',
'diff-multi' => '({{PLURAL:$1|1 aradaki versiya|$1 aradaki versiya}} kösterilmedi.)',
-'diff-movedto' => '$1 saifesine avuştırıldı',
# Search results
'searchresults' => 'Qıdıruv neticeleri',
@@ -809,16 +823,14 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'searchresulttext' => '{{SITENAME}} içinde qıdıruv yapmaq hususında malümat almaq içün [[{{MediaWiki:Helppage}}|{{int:help}}]] saifesine baqıp olasıñız.',
'searchsubtitle' => 'Qıdırılğan: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ile başlanğan bütün saifeler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" saifesine bağlantı olğan bütün saifeler]])',
'searchsubtitleinvalid' => "Siz bunı qıdırdıñız '''$1'''",
-'noexactmatch' => "'''\"\$1\" serlevalı bir saife tapılamadı.''' Bu saifeni özüñiz [[:\$1|yaratıp olasıñız]].",
-'noexactmatch-nocreate' => "'''\"\$1\" adlı saife yoq.'''",
'toomanymatches' => 'Pek çoq eşleşme çıqtı, lütfen, başqa bir soratma saylañız',
'titlematches' => 'Saife adı bir kele',
'notitlematches' => 'İç bir serlevada tapılamadı',
'textmatches' => 'Saife metni bir kele',
'notextmatches' => 'İç bir saifede tapılamadı',
-'prevn' => 'evelki $1',
-'nextn' => 'soñraki $1',
-'viewprevnext' => '($1) ($2) ($3).',
+'prevn' => 'evelki {{PLURAL:$1|$1}}',
+'nextn' => 'soñraki {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Münderice',
'search-result-size' => '$1 ({{PLURAL:$2|1|$2}} söz)',
'search-result-score' => 'Uyğunlıq: $1%',
@@ -832,11 +844,11 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'search-mwsuggest-disabled' => 'tevsiye yoq',
'search-relatedarticle' => 'Bağlı',
'mwsuggest-disable' => 'AJAX tevsiyelerini işletme',
+'searcheverything-enable' => 'Bütün isim fezalarında qıdır',
'searchrelated' => 'bağlı',
'searchall' => 'episi',
'showingresults' => "Aşağıda №&nbsp;<strong>$2</strong>den başlap {{PLURAL:$1|'''1''' netice|'''$1''' netice}} buluna.",
'showingresultsnum' => "Aşağıda №&nbsp;'''$2'''den başlap {{PLURAL:$3|'''1''' netice|'''$3''' netice}} buluna.",
-'showingresultstotal' => "Aşağıda {{PLURAL:$4|'''$3''' daneden '''$1''' netice kösterilgen|'''$3''' daneden '''$1 — $2''' netice kösterilgen}}",
'nonefound' => "'''İhtar.''' Adiycesine qıdıruv bütün isim fezalarında yapılmay. Bütün isim fezalarında (bu cümleden qullanıcılar subetleri, şablonlar ve ilâhre) qıdırmaq içün ''all:'' yazını qullanıñız, muayyen bir isim fezasında qıdırmaq içün ise ''ad:'' formatında onıñ adını yazıñız.",
'search-nonefound' => 'Soratmanen eşleşken bir netice yoq.',
'powersearch' => 'Qıdır',
@@ -844,77 +856,118 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'powersearch-ns' => 'Bu isim fezalarında qıdır:',
'powersearch-redir' => 'Yollama saifelerini de köster',
'powersearch-field' => 'Qıdır:',
+'powersearch-togglelabel' => 'Sayla:',
+'powersearch-toggleall' => 'Episi',
+'powersearch-togglenone' => 'İç biri',
'search-external' => 'Tış qıdıruv',
'searchdisabled' => '{{SITENAME}} saytında qıdıruv yapma vaqtınca toqtatıldı. Bu arada Google qullanıp {{SITENAME}} içinde qıdıruv yapıp olasıñız. Qıdıruv saytlarında indekslemeleriniñ biraz eski qalğan ola bilecegini köz ögüne alıñız.',
+# Quickbar
+'qbsettings' => 'Vızlı irişim sutun sazlamaları',
+
# Preferences page
-'preferences' => 'Sazlamalar',
-'mypreferences' => 'Sazlamalarım',
-'prefs-edits' => 'Yapqan deñişiklik sayısı:',
-'prefsnologin' => 'Oturım açmadıñız',
-'prefsnologintext' => 'Şahsiy sazlamalarıñıznı deñiştirmek içün <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} oturım açmaq]</span> kereksiñiz.',
-'prefsreset' => 'Sazlamalar ilk alına ketirildi.',
-'qbsettings' => 'Vızlı irişim sutun sazlamaları',
-'changepassword' => 'Parol deñiştir',
-'skin' => 'Resimleme',
-'skin-preview' => 'Baqıp çıquv',
-'math' => 'Riyaziy (matematik) işaretler',
-'dateformat' => 'Tarih kösterimi',
-'datedefault' => 'Standart',
-'datetime' => 'Tarih ve saat',
-'math_failure' => 'Ayırıştırılamadı',
-'math_unknown_error' => 'bilinmegen hata',
-'math_unknown_function' => 'belgisiz funktsiya',
-'math_lexing_error' => 'leksik hata',
-'math_syntax_error' => 'sintaksis hatası',
-'prefs-personal' => 'Qullanıcı malümatı',
-'prefs-rc' => 'Soñki deñişiklikler',
-'prefs-watchlist' => 'Közetüv cedveli',
-'prefs-watchlist-days' => 'Közetüv cedvelinde kösterilecek kün sayısı:',
-'prefs-watchlist-edits' => 'Kenişletilgen közetüv cedvelinde kösterilecek deñişiklik sayısı:',
-'prefs-misc' => 'Diger sazlamalar',
-'prefs-resetpass' => 'Parolni deñiştir',
-'saveprefs' => 'Deñişikliklerni saqla',
-'resetprefs' => 'Saqlanmağan sazlamalarnı ilk alına ketir',
-'restoreprefs' => 'Bütün ög belgilengen sazlamalarnı qaytar',
-'textboxsize' => 'Saife yazuv penceresi',
-'prefs-edit-boxsize' => 'Yazuv penceresiniñ ölçüleri.',
-'rows' => 'Satır',
-'columns' => 'Sutun',
-'searchresultshead' => 'Qıdıruv',
-'resultsperpage' => 'Saifede kösterilecek tapılğan saife sayısı',
-'contextlines' => 'Tapılğan saife içün ayrılğan satır sayısı',
-'contextchars' => 'Satırdaki arif sayısı',
-'recentchangesdays' => 'Soñki deñişiklikler saifesinde kösterilecek kün sayısı:',
-'recentchangescount' => 'Çeşit-türlü cedvel ve jurnallarda kösterilgen deñişiklikler ög belgilengen sayısı:',
-'savedprefs' => 'Sazlamalarıñız saqlandı.',
-'timezonelegend' => 'Saat quşağı:',
-'timezonetext' => 'Viki serveri (UTC/GMT) ile arañızdaki saat farqı. (Ukraina ve Türkiye içün +02:00)',
-'localtime' => 'Yerli vaqıt:',
-'timezoneuseserverdefault' => 'Serverge köre olsun',
-'timezoneuseoffset' => 'Başqa (farqnı kirsetiñiz)',
-'timezoneoffset' => 'Saat farqı¹:',
-'servertime' => 'Serverniñ saatı:',
-'guesstimezone' => 'Brauzeriñiz siziñ yeriñizge köre toldursın',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Asiya',
-'timezoneregion-atlantic' => 'Atlantik okean',
-'timezoneregion-australia' => 'Avstraliya',
-'timezoneregion-europe' => 'Avropa',
-'timezoneregion-indian' => 'İnd okeanı',
-'timezoneregion-pacific' => 'Tınç okean',
-'allowemail' => 'Diger qullanıcılar maña e-mail mektüpleri yollap olsun',
-'prefs-searchoptions' => 'Qıdıruv sazlamaları',
-'prefs-namespaces' => 'İsim fezaları',
-'defaultns' => 'Qıdıruvnı aşağıda saylanğan isim fezalarında yap.',
-'default' => 'original',
-'files' => 'Fayllar',
+'preferences' => 'Sazlamalar',
+'mypreferences' => 'Sazlamalarım',
+'prefs-edits' => 'Yapqan deñişiklik sayısı:',
+'prefsnologin' => 'Oturım açmadıñız',
+'prefsnologintext' => 'Şahsiy sazlamalarıñıznı deñiştirmek içün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oturım açmaq]</span> kereksiñiz.',
+'changepassword' => 'Parol deñiştir',
+'prefs-skin' => 'Resimleme',
+'skin-preview' => 'Baqıp çıquv',
+'prefs-math' => 'Riyaziy (matematik) işaretler',
+'datedefault' => 'Standart',
+'prefs-datetime' => 'Tarih ve saat',
+'prefs-personal' => 'Qullanıcı malümatı',
+'prefs-rc' => 'Soñki deñişiklikler',
+'prefs-watchlist' => 'Közetüv cedveli',
+'prefs-watchlist-days' => 'Közetüv cedvelinde kösterilecek kün sayısı:',
+'prefs-watchlist-days-max' => '(eñ çoq 7 kün)',
+'prefs-watchlist-edits' => 'Kenişletilgen közetüv cedvelinde kösterilecek deñişiklik sayısı:',
+'prefs-watchlist-edits-max' => '(eñ çoq 1000)',
+'prefs-watchlist-token' => 'Közetüv cedveli işareti:',
+'prefs-misc' => 'Diger sazlamalar',
+'prefs-resetpass' => 'Parolni deñiştir',
+'prefs-email' => 'E-mail sazlamaları',
+'prefs-rendering' => 'Körüniş',
+'saveprefs' => 'Deñişikliklerni saqla',
+'resetprefs' => 'Saqlanmağan sazlamalarnı ilk alına ketir',
+'restoreprefs' => 'Bütün ög belgilengen sazlamalarnı qaytar',
+'prefs-editing' => 'Saifelerni deñiştirüv',
+'prefs-edit-boxsize' => 'Yazuv penceresiniñ ölçüleri.',
+'rows' => 'Satır',
+'columns' => 'Sutun',
+'searchresultshead' => 'Qıdıruv',
+'resultsperpage' => 'Saifede kösterilecek tapılğan saife sayısı',
+'contextlines' => 'Tapılğan saife içün ayrılğan satır sayısı',
+'contextchars' => 'Satırdaki arif sayısı',
+'recentchangesdays' => 'Soñki deñişiklikler saifesinde kösterilecek kün sayısı:',
+'recentchangesdays-max' => '(eñ çoq $1 {{PLURAL:$1|kün|kün}})',
+'recentchangescount' => 'Ög belgilengen kösterilecek deñişiklikler sayısı:',
+'prefs-help-recentchangescount' => 'Bu, soñki deñişiklikler, saife keçmişi ve jurnal saifelerinde qullanıla.',
+'savedprefs' => 'Sazlamalarıñız saqlandı.',
+'timezonelegend' => 'Saat quşağı:',
+'localtime' => 'Yerli vaqıt:',
+'timezoneuseserverdefault' => 'Serverge köre olsun',
+'timezoneuseoffset' => 'Başqa (farqnı kirsetiñiz)',
+'timezoneoffset' => 'Saat farqı¹:',
+'servertime' => 'Serverniñ saatı:',
+'guesstimezone' => 'Brauzeriñiz siziñ yeriñizge köre toldursın',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Asiya',
+'timezoneregion-atlantic' => 'Atlantik okean',
+'timezoneregion-australia' => 'Avstraliya',
+'timezoneregion-europe' => 'Avropa',
+'timezoneregion-indian' => 'İnd okeanı',
+'timezoneregion-pacific' => 'Tınç okean',
+'allowemail' => 'Diger qullanıcılar maña e-mail mektüpleri yollap olsun',
+'prefs-searchoptions' => 'Qıdıruv sazlamaları',
+'prefs-namespaces' => 'İsim fezaları',
+'defaultns' => 'Akis alda bu isim fezalarında qıdır:',
+'default' => 'original',
+'prefs-files' => 'Fayllar',
+'prefs-reset-intro' => 'Bu saifeni sazlamalarıñıznı sayt ög belgilengenine qaytarmaq içün qullana bilesiñiz. Bu lâğu etilip olamaz.',
+'prefs-emailconfirm-label' => 'E-mail tasdıqlanması:',
+'prefs-textboxsize' => 'Yazuv penceresiniñ ölçüleri',
+'youremail' => 'E-mail adresiñiz:',
+'username' => 'Qullanıcı adı:',
+'uid' => 'Qayd nomeri:',
+'prefs-memberingroups' => 'Azası olğan {{PLURAL:$1|gruppa|gruppalar}}:',
+'prefs-registration' => 'Qayd tarihı:',
+'yourrealname' => 'Kerçek adıñız:',
+'yourlanguage' => 'İnterfeys tili:',
+'yourvariant' => 'Til saylavı:',
+'yournick' => 'Yañı imzañız:',
+'prefs-help-signature' => 'Muzakere saifelerindeki tefsirlerni "<nowiki>~~~~</nowiki>" ile imzalamaq kerek, bu dört tilda yerine imzañız ve vaqıt kösterilir.',
+'badsig' => 'Yañlış imza. HTML tegleriniñ doğrulığını baqıñız.',
+'badsiglength' => 'Qarardan ziyade uzun imzadır, {{PLURAL:$1|1|$1}} ziyade işaretten ibaret olması mümkün degil.',
+'yourgender' => 'Cınsıñız:',
+'gender-unknown' => 'Bildirilmegen',
+'gender-male' => 'Erkek',
+'gender-female' => 'Qadın',
+'prefs-help-gender' => 'Mecburiy degil: wiki tarafından doğru cınıs adreslevi içün qullanıla. Bu malümat umumiy olacaq.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Kerçek adıñız (mecburiy degildir).
+Eger bildirseñiz, saifelerdeki deñişikliklerini kimniñ yapqanını köstermek içün qullanılacaq.',
+'prefs-help-email' => 'E-mail (mecburiy degildir). E-mail adresi bildirilgen olsa, şimdiki paroliñizni unutsañız, yañı bir parol istep olasıñız.
+Bundan ğayrı bu vikideki saifeñizden başqa qullanıcılarğa siznen bağlanmağa imkân berecek. E-mail adresiñiz başqa qullanıcılarğa kösterilmeycek.',
+'prefs-help-email-required' => 'E-mail adresi lâzim.',
+'prefs-info' => 'Esas malümat',
+'prefs-signature' => 'İmza',
+'prefs-dateformat' => 'Tarih formatı',
+'prefs-timeoffset' => 'Zaman farqı',
+'prefs-advancedediting' => 'İlâve sazlamalar',
+'prefs-advancedrc' => 'İlâve sazlamalar',
+'prefs-advancedrendering' => 'İlâve sazlamalar',
+'prefs-advancedsearchoptions' => 'İlâve sazlamalar',
+'prefs-advancedwatchlist' => 'İlâve sazlamalar',
+'prefs-display' => 'Kösterilüv sazlamaları',
+'prefs-diffs' => 'Farqlar',
# User rights
-'userrights' => 'Qullanıcı aqlarını idare etüv', # Not used as normal message but as header for the special page itself
+'userrights' => 'Qullanıcı aqlarını idare etüv',
'userrights-lookup-user' => 'Qullanıcı gruppalarnını idare et',
'userrights-user-editname' => 'Öz qullanıcı adıñıznı yazıñız:',
'editusergroup' => 'Qullanıcı gruppaları nizamla',
@@ -958,6 +1011,15 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'recentchanges-legend' => 'Soñki deñişiklikler sazlamaları',
'recentchangestext' => 'Yapılğan eñ soñki deñişikliklerni bu saifede körip olasıñız.',
'recentchanges-feed-description' => 'Bu lenta vastasınen vikide soñki deñişikliklerni közet.',
+'recentchanges-label-legend' => 'İzaat: $1.',
+'recentchanges-legend-newpage' => '$1 - yañı saife',
+'recentchanges-label-newpage' => 'Bu deñişiklik yañı bir saife yarattı',
+'recentchanges-legend-minor' => '$1 - kiçik deñişiklik',
+'recentchanges-label-minor' => 'Bu kiçik bir deñişiklik',
+'recentchanges-legend-bot' => '$1 - bot deñişikligi',
+'recentchanges-label-bot' => 'Bu bir botnıñ yapqan deñişikligi',
+'recentchanges-legend-unpatrolled' => '$1 - teşkerilmegen deñişiklik',
+'recentchanges-label-unpatrolled' => 'Bu deñişiklik alâ daa teşkerilmegen',
'rcnote' => "$4 $5 tarihında soñki {{PLURAL:$2|künde|'''$2''' künde}} yapılğan '''{{PLURAL:$1|1|$1}}''' deñişiklik:",
'rcnotefrom' => "'''$2''' tarihından itibaren yapılğan deñişiklikler aşağıdadır (eñ çоq '''$1''' dane saife kösterile).",
'rclistfrom' => '$1 tarihından berli yapılğan deñişikliklerni köster',
@@ -984,6 +1046,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
# Recent changes linked
'recentchangeslinked' => 'Bağlı deñişiklikler',
+'recentchangeslinked-feed' => 'Bağlı deñişiklikler',
+'recentchangeslinked-toolbox' => 'Bağlı deñişiklikler',
'recentchangeslinked-title' => '"$1" ile bağlı deñişiklikler',
'recentchangeslinked-noresult' => 'Saylanğan vaqıtta bağlı saifelerde iç deñişiklik yoq edi.',
'recentchangeslinked-summary' => "Bu mahsus saifede bağlı saifelerde soñki yapqan deñişiklikler cedveli mevcut. [[Special:Watchlist|Közetüv cedveliñiz]]deki saifeler '''qalın''' olaraq kösterile.",
@@ -993,8 +1057,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
# Upload
'upload' => 'Fayl yükle',
'uploadbtn' => 'Fayl yükle',
-'reupload' => 'Yañıdan yükle',
'reuploaddesc' => 'Yükleme formasına keri qayt.',
+'upload-tryagain' => 'Deñiştirilgen fayl tarifini yolla',
'uploadnologin' => 'Oturım açmadıñız',
'uploadnologintext' => 'Fayl yüklep olmaq içün [[Special:UserLogin|oturım açmaq]] kereksiñiz.',
'upload_directory_missing' => 'Yüklemeler içün direktoriya ($1) mevcut degil ve veb-server tarafından yapılıp olamay.',
@@ -1048,7 +1112,6 @@ Tasviriñiz anda kösterilecegi içün, bunı qolnen deñiştirmek kereksiñiz.
* Yüklengen faylnıñ adı: '''<tt>[[:$1]]</tt>'''
* Mevcut olğan faylnıñ adı: '''<tt>[[:$2]]</tt>'''
Lütfen, başqa bir ad saylap yazıñız.",
-'fileexists-thumb' => "<center>'''Mevcut fayl'''</center>",
'fileexists-thumbnail-yes' => "Belki de bu fayl bir ufaqlaştırılğan kopiyadır (thumbnail). [[$1|thumb]]
Lütfen, '''<tt>[[:$1]]</tt>''' faylını teşkeriñiz.
Eger şu fayl aynı şu resim olsa, onıñ ufaqlaştırılğan kopiyasını ayrı olaraq yüklemek aceti yoqtır.",
@@ -1069,7 +1132,6 @@ Eger bu faylnı ep bir yüklemege isteseñiz, keri qaytıñız ve fayl ismini de
'uploaddisabled' => 'Yükleme yasaqlıdır.',
'uploaddisabledtext' => 'Fayl yükleme yasaqlıdır.',
'uploadscripted' => 'Bu faylda brauzer tarafından yañlışnen işlenip olur HTML kodu ya da skript bar.',
-'uploadcorrupt' => 'Bu fayl ya zararlandı, ya da yañlış uzantılı. Lütfen, faylnı teşkerip yañıdan yüklep baqıñız.',
'uploadvirus' => 'Bu fayl viruslıdır! $1 baqıñız',
'sourcefilename' => 'Yüklemege istegen faylıñız:',
'destfilename' => 'Faylnıñ istenilgen adı:',
@@ -1096,6 +1158,7 @@ Bu fayl içün yoq etüvniñ jurnalını mında baqıp olasıñız:",
'upload-curl-error28-text' => 'Sayt çoqtan cevap qaytarmay. Lütfen, saytnıñ doğru çalışqanını teşkerip birazdan soñ tekrarlañız. Belki de istegen areketiñizni soñ, sayt boşça olğanda, etmek kerektir.',
'license' => 'Litsenziyalama:',
+'license-header' => 'Litsenziyalama',
'nolicense' => 'Yoq',
'license-nopreview' => '(Baqıp çıquv irişilmez)',
'upload_source_url' => ' (doğru, püblik tarzda kirmege musaadeli internet adres)',
@@ -1116,6 +1179,7 @@ Sutun serlevasına bir basuv sortirlemeniñ tertibini deñiştirir.',
'listfiles_count' => 'Versiyalar',
# File description page
+'file-anchor-link' => 'Fayl',
'filehist' => 'Faylnıñ keçmişi',
'filehist-help' => 'Faylnıñ kerekli anki alını körmek içün tarihqa/saatqa basıñız.',
'filehist-deleteall' => 'episini yoq et',
@@ -1124,22 +1188,20 @@ Sutun serlevasına bir basuv sortirlemeniñ tertibini deñiştirir.',
'filehist-current' => 'şimdiki',
'filehist-datetime' => 'Tarih ve saat',
'filehist-thumb' => 'Kiçik resim',
+'filehist-thumbtext' => '$1 tarihındaki versiyanıñ ufaqlaştırılğan alı',
'filehist-nothumb' => 'Ufaqlaştırılğan resim yoq',
'filehist-user' => 'Qullanıcı',
'filehist-dimensions' => 'En × boy',
'filehist-filesize' => 'Fayl büyükligi',
'filehist-comment' => 'İzaat',
+'filehist-missing' => 'Fayl yoq',
'imagelinks' => 'Fayl bağlantıları',
'linkstoimage' => 'Bu faylğa bağlantı olğan {{PLURAL:$1|1|$1}} saife:',
'nolinkstoimage' => 'Bu faylğa bağlanğan saife yoq.',
-'sharedupload' => 'Bu fayl $1 saytından ve diger leyhalarda da qullanılıp оla.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Tafsilâtnı $1 saifesinde tapmaq mümkün.',
-'shareduploadwiki-linktext' => 'fayl malümat saifesi',
-'noimage' => 'Bu isimde fayl yoq, amma siz $1.',
-'noimage-linktext' => 'оnı yüklep olasıñız',
+'sharedupload' => 'Bu fayl $1 saytından ve diger leyhalarda da qullanılıp оla.',
'uploadnewversion-linktext' => 'Faylnıñ yañısını yükleñiz',
-'shared-repo-from' => '$1nden', # $1 is the repository name
-'shared-repo' => 'ortaq tutulğan yeri', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1nden',
+'shared-repo' => 'ortaq tutulğan yeri',
# File reversion
'filerevert' => '$1 faylını eski alına qaytar',
@@ -1166,7 +1228,7 @@ Sutun serlevasına bir basuv sortirlemeniñ tertibini deñiştirir.',
# Random page
'randompage' => 'Tesadüfiy saife',
-'randompage-nopages' => '"$1" isim fezasında iç bir saife yoq.',
+'randompage-nopages' => '"$1" {{PLURAL:$2|isim fezasında|isim fezalarında}} iç bir saife yoq.',
# Random redirect
'randomredirect' => 'Tesadüfiy yollama saifesi',
@@ -1178,6 +1240,7 @@ Sutun serlevasına bir basuv sortirlemeniñ tertibini deñiştirir.',
'statistics-header-edits' => 'Deñiştirüv statistikası',
'statistics-header-views' => 'Közden keçirme statistikası',
'statistics-header-users' => 'Qullanıcı statistikası',
+'statistics-header-hooks' => 'Diger statistika',
'statistics-mostpopular' => 'Eñ sıq baqılğan saifeler',
'disambiguations' => 'Çoq manalı terminler saifeleri',
@@ -1194,8 +1257,8 @@ Er satırda birinci ve ekinci yollamağa bağlantılar da, ekinci yollamanıñ m
'brokenredirects' => 'Bar olmağan saifege yapılğan yollamalar',
'brokenredirectstext' => 'Aşağıdaki yollamalar bar olmağan saifelerge bağlantı bereler:',
-'brokenredirects-edit' => '(deñiştir)',
-'brokenredirects-delete' => '(yoq et)',
+'brokenredirects-edit' => 'deñiştir',
+'brokenredirects-delete' => 'yoq et',
'withoutinterwiki' => 'Diger tillerdeki versiyalarğa bağlantıları olmağan saifeler',
'withoutinterwiki-summary' => 'Bu saifelerde diger tillerdeki versiyalarğa bağlantılar yoq:',
@@ -1280,9 +1343,9 @@ Er satırda birinci ve ekinci yollamağa bağlantılar da, ekinci yollamanıñ m
# Special:Categories
'categories' => 'Saife kategoriyaları',
-'categoriespagetext' => 'Aşağıdaki kategoriyalarda saifeler ya da media-fayllar bar.
-Mında [[Special:UnusedCategories|qullanılmağan kategoriyalar]] kösterilmegen.
-[[Special:WantedCategories|Talap etilgen kategoriyalarnıñ cedvelini]] de baqıñız.',
+'categoriespagetext' => 'Aşağıdaki {{PLURAL:$1|kategoriyada|kategoriyalarda}} saife ya da media fayllar bar.
+[[Special:UnusedCategories|Qullanılmağan kategoriyalar]] mında kösterilmegen.
+Ayrıca [[Special:WantedCategories|talap etilgen kategoriyalarnıñ cedveline]] de baqıñız.',
'special-categories-sort-count' => 'sayılarına köre sırala',
'special-categories-sort-abc' => 'elifbe sırasınen sırala',
@@ -1372,26 +1435,26 @@ Birazdan soñ közetüv cedveliñizden bir de bir saifeni yoq etmege isteseñiz
'enotif_body' => 'Sayğılı $WATCHINGUSERNAME,
-{{SITENAME}} saytındaki $PAGETITLE serlevalı saife $PAGEEDITDATE tarihında $PAGEEDITOR tarafından $CHANGEDORCREATED. Şimdiki versiyağa $PAGETITLE_URL adresinden yetişip olasıñız.
+{{SITENAME}} saytındaki $PAGETITLE serlevalı saife $PAGEEDITDATE tarihında $PAGEEDITOR tarafından $CHANGEDORCREATED. Şimdiki versiyanı $PAGETITLE_URL adresinde körip olasıñız.
$NEWPAGE
-Açıqlaması: $PAGESUMMARY $PAGEMINOREDIT
+Deñişiklikniñ qısqa tasviri: $PAGESUMMARY $PAGEMINOREDIT
-Saifeni deñiştirgen qullanıcınıñ irişim malümatı:
-e-mail: $PAGEEDITOR_EMAIL
-Viki: $PAGEEDITOR_WIKI
+Saifeni deñiştirgen qullanıcınen bağlanmaq içün:
+e-mail adresi: $PAGEEDITOR_EMAIL
+viki saifesi: $PAGEEDITOR_WIKI
-Bahsı keçken saifeni siz ziyaret etmegen müddet içinde saifenen bağlı başqa deñişiklik tenbisi yollanmaycaq. Tenbi sazlamalarını közetüv cedveliñizdeki bütün saifeler içün deñiştirip olursıñız.
+Bu saifeni ziyaret etmeseñiz, birev onı bir daa deñiştirse, iç bir tenbi beyanatı yollanmaycaq. Tenbi sazlamalarını közetüv cedveliñizdeki bütün saifeler içün deñiştirip olasıñız.
{{SITENAME}} tenbi sisteması.
--
Sazlamalarnı deñiştirmek içün:
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Yardım ve teklifler içün:
-{{fullurl:Help:Contents}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Saifeni yoq et',
@@ -1402,10 +1465,11 @@ Yardım ve teklifler içün:
'exblank' => 'saife metini boş',
'delete-confirm' => '"$1" saifesini yoq etmektesiñiz',
'delete-legend' => 'Yoq etüv',
-'historywarning' => 'Tenbi: Siz yoq etmek üzre olğan saifeniñ keçmişi bardır:',
+'historywarning' => "'''Tenbi:''' Siz yoq etmege istegen saifeñizniñ $1 {{PLURAL:$1|versiyalı|versiyalı}} keçmişi bardır:",
'confirmdeletetext' => 'Bir saifeni ya da resimni bütün keçmişi ile birlikte malümat bazasından qalıcı olaraq yoq etmek üzresiñiz.
Lütfen, neticelerini añlağanıñıznı ve [[{{MediaWiki:Policy-url}}|yoq etüv politikasına]] uyğunlığını diqqatqa alıp, bunı yapmağa istegeniñizni tasdıqlañız.',
'actioncomplete' => 'Areket tamamlandı',
+'actionfailed' => 'Areket yapılamadı',
'deletedtext' => '"<nowiki>$1</nowiki>" yoq etildi.
yaqın zamanda yoq etilgenlerni körmek içün: $2.',
'deletedarticle' => '"[[$1]]" yoq etildi',
@@ -1423,8 +1487,8 @@ yaqın zamanda yoq etilgenlerni körmek içün: $2.',
'rollbacklink' => 'eski alına ketir',
'rollbackfailed' => 'keri aluv muvafaqiyetsiz',
'cantrollback' => 'Deñişiklikler keri alınamay, soñki deñiştirgen kişi saifeniñ tek bir müellifidir',
-'editcomment' => "Deñiştirme izaatı: \"''\$1''\" edi.", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|muzakere]]) tarafından yapılğan deñişiklikler keri alınıp, [[User:$1|$1]] tarafından deñiştirilgen evelki versiya keri ketirildi.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Deñiştirme izaatı: \"''\$1''\" edi.",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|muzakere]]) tarafından yapılğan deñişiklikler keri alınıp, [[User:$1|$1]] tarafından deñiştirilgen evelki versiya keri ketirildi.',
# Protect
'protectlogpage' => 'Qorçalav jurnalı',
@@ -1439,7 +1503,6 @@ Qorçalav altına alınğan saifeler tam cedveli [[Special:ProtectedPages|bu sai
'protectexpiry' => 'Bitiş tarihı:',
'protect_expiry_invalid' => 'Bitiş tarihı yañlış.',
'protect_expiry_old' => 'Bitiş zamanı keçmiştedir.',
-'protect-unchain' => 'Saife adı deñiştirüv kilitini çıqar',
'protect-text' => "'''[[<nowiki>$1</nowiki>]]''' saifesiniñ qorçalav seviyesini mından körip olur ve deñiştirip olasıñız.",
'protect-locked-access' => "Qullanıcı esabıñız saifeniñ qorçalav seviyelerini deñiştirme yetkisine saip degil. '''$1''' saifesiniñ şimdiki sazlamaları şularıdır:",
'protect-cascadeon' => 'Bu saife şimdi qorçalav altındadır, çünki aşağıda cedvellengen ve kaskadlı qorçalav altındaki {{PLURAL:$1|1|$1}} saifede qullanıla.
@@ -1452,7 +1515,7 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
'protect-expiring' => 'bite: $1 (UTC)',
'protect-cascade' => 'Bu saifede qullanılğan bütün saifelerni qorçalavğa al (kaskadlı qorçalav)',
'protect-cantedit' => 'Bu saifeniñ qorçalav seviyesini deñiştirip olamazsıñız, çünki bunı yapmağa yetkiñiz yoq.',
-'protect-expiry-options' => '1 saat:1 hour,1 kün:1 day,1 afta:1 week,2 afta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,müddetsiz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 saat:1 hour,1 kün:1 day,1 afta:1 week,2 afta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,müddetsiz:infinite',
'restriction-type' => 'Ruhseti:',
'restriction-level' => 'Ruhset seviyesi:',
'minimum-size' => 'Asğariy (minimal) büyüklik',
@@ -1489,7 +1552,7 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
'contributions-title' => '$1 qullanıcısınıñ isseleri',
'mycontris' => 'isselerim',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Bu kriteriylerge uyğan deñişiklik tapılamadı', # Optional parameter: $1 is the user name
+'nocontribs' => 'Bu kriteriylerge uyğan deñişiklik tapılamadı',
'uctop' => '(soñki)',
'month' => 'Bu ay (ve ondan erte):',
'year' => 'Bu sene (ve ondan erte):',
@@ -1497,6 +1560,8 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
'sp-contributions-newbies' => 'Tek yañı qullanıcılarnıñ isselerini köster',
'sp-contributions-newbies-sub' => 'Yañı qullanıcılar içün',
'sp-contributions-blocklog' => 'Blok etüv jurnalı',
+'sp-contributions-talk' => 'muzakere',
+'sp-contributions-userrights' => 'qullanıcı aqlarını idare etüv',
'sp-contributions-search' => 'İsselerni qıdıruv',
'sp-contributions-username' => 'IP adresi ya da qullanıcı adı:',
'sp-contributions-submit' => 'Qıdır',
@@ -1529,7 +1594,7 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
'ipbreason' => 'Sebep',
'ipbsubmit' => 'Bu qullanıcını blok et',
'ipbother' => 'Farqlı zaman',
-'ipboptions' => '2 saat:2 hours,1 kün:1 day,3 kün:3 days,1 afta:1 week,2 afta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,müddetsiz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 saat:2 hours,1 kün:1 day,3 kün:3 days,1 afta:1 week,2 afta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,müddetsiz:infinite',
'ipbotheroption' => 'farqlı',
'ipbotherreason' => 'Diger/ilâveli sebep:',
'badipaddress' => 'Yañlış IP adresi',
@@ -1541,7 +1606,7 @@ Blok etmelerni közden keçirmek içün [[Special:IPBlockList|IP adresi blok eti
'ipblocklist' => 'Blok etilgen qullanıcılar ve IP adresleri',
'blocklistline' => '$1, $2 blok etti: $3 ($4)',
'infiniteblock' => 'müddetsiz',
-'expiringblock' => '$1 tarihında bitecek',
+'expiringblock' => '$1 $2 tarihında bitecek',
'blocklink' => 'blok et',
'unblocklink' => 'blok etmesini çıqar',
'change-blocklink' => 'blok etüvni deñiştir',
@@ -1562,74 +1627,74 @@ Blok etmelerni közden keçirmek içün [[Special:IPBlockList|IP adresi blok eti
'lockbtn' => 'Malümat bazası kilitli',
# Move page
-'move-page' => '$1 saifesiniñ adını deñiştirmektesiñiz',
-'move-page-legend' => 'Ad deñişikligi',
-'movepagetext' => "Aşağıdaki formanı qullanıp saifeniñ adını deñiştirilir. Bunıñnen beraber deñişiklik jurnalı da yañı adğa avuştırılır.
+'move-page' => '$1 saifesiniñ adını deñiştirmektesiñiz',
+'move-page-legend' => 'Ad deñişikligi',
+'movepagetext' => "Aşağıdaki formanı qullanıp saifeniñ adını deñiştirilir. Bunıñnen beraber deñişiklik jurnalı da yañı adğa avuştırılır.
Eski ad yañı adğa yollama olur. Eski serlevağa yollama saifelerni avtomatik olaraq yañartıp olasıñız. Bu işlemi avtomatik yapmağa istemeseñiz, bütün [[Special:DoubleRedirects|çift]] ve [[Special:BrokenRedirects|yırtıq]] yollama saifelerini özüñiz tüzetmege mecbur olursıñız. Bağlantılar endiden berli doğru çalışmasından emin olmalısıñız.
Yañı adda bir ad endi bar olsa, ad deñişikligi '''yapılmaycaq''', ancaq mevcut olğan saife yollama ya da boş olsa ad deñişikligi mümkün olacaq. Bu demek ki, saife adını yañlıştan deñiştirgen olsañız deminki adını keri qaytarıp olasıñız, amma mevcut olğan saifeni tesadüfen yoq etalmaysıñız.
'''TENBİ!'''
Ad deñiştirüv populâr saifeler içün büyük deñişmelerge sebep ola bilir. Lütfen, deñişiklikni yapmadan evel ola bileceklerni köz ögüne alıñız.",
-'movepagetalktext' => "Qoşulğan muzakere saifesiniñ de (bar olsa) adı avtomatik tarzda deñiştirilecek. '''Müstesnalar:'''
+'movepagetalktext' => "Qoşulğan muzakere saifesiniñ de (bar olsa) adı avtomatik tarzda deñiştirilecek. '''Müstesnalar:'''
*Aynı bu isimde boş olmağan bir muzakere saifesi endi bar;
*Aşağıdaki boşluqqa işaret qoymadıñız.
Böyle allarda, kerek olsa, saifelerni qolnen taşımağa ya da birleştirmege mecbur olursıñız.",
-'movearticle' => 'Eski ad',
-'movenologin' => 'Oturım açmadıñız',
-'movenologintext' => 'Saifeniñ adını deñiştirip olmaq içün [[Special:UserLogin|oturım açıñız]].',
-'movenotallowed' => 'Saifeler adlarını deñiştirmege iziniñiz yoq.',
-'newtitle' => 'Yañı ad',
-'move-watch' => 'Bu saifeni közet',
-'movepagebtn' => 'Adını deñiştir',
-'pagemovedsub' => 'Ad deñişikligi tamamlandı',
-'movepage-moved' => '\'\'\'"$1" saifesiniñ adı "$2" olaraq deñiştirildi\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'movepage-moved-redirect' => 'Bir yollama yaratıldı.',
-'movepage-moved-noredirect' => 'Yollama yaratıluvı bastırıldı.',
-'articleexists' => 'Bu adda bir saife endi bar ya da siz yazğan ad yasaqlı.
+'movearticle' => 'Eski ad',
+'movenologin' => 'Oturım açmadıñız',
+'movenologintext' => 'Saifeniñ adını deñiştirip olmaq içün [[Special:UserLogin|oturım açıñız]].',
+'movenotallowed' => 'Saifeler adlarını deñiştirmege iziniñiz yoq.',
+'newtitle' => 'Yañı ad',
+'move-watch' => 'Bu saifeni közet',
+'movepagebtn' => 'Adını deñiştir',
+'pagemovedsub' => 'Ad deñişikligi tamamlandı',
+'movepage-moved' => '\'\'\'"$1" saifesiniñ adı "$2" olaraq deñiştirildi\'\'\'',
+'movepage-moved-redirect' => 'Bir yollama yaratıldı.',
+'movepage-moved-noredirect' => 'Yollama yaratıluvı bastırıldı.',
+'articleexists' => 'Bu adda bir saife endi bar ya da siz yazğan ad yasaqlı.
Lütfen, başqa bir ad saylap yazıñız.',
-'cantmove-titleprotected' => 'Siz yazğan yañı ad yasaqlıdır, bunıñ içün saife adını deñiştirmekniñ çaresi yoq.',
-'talkexists' => "'''Saifeniñ adı deñiştirildi, amma muzakere saifesiniñ adını deñiştirmege mümkünlik yoqtır, çünki aynı bu adda bir saife endi bar. Lütfen, bularnı qolnen birleştiriñiz.'''",
-'movedto' => 'adı deñiştirildi:',
-'movetalk' => 'Muzakere saifesiniñ adını deñiştir.',
-'move-subpages' => 'Alt saifelerniñ adlarını da deñiştir ($1 saifege qadar)',
-'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
-'movepage-page-exists' => '$1 saifesi endi bar, ve avtomatik olaraq yañıdan yazılıp olamaz.',
-'movepage-page-moved' => '$1 saifesiniñ adı $2 olaraq deñiştirildi.',
-'movepage-page-unmoved' => '$1 saifesiniñ adı $2 olaraq deñiştirilip olamay.',
-'1movedto2' => '"[[$1]]" saifesiniñ adı "[[$2]]" olaraq deñiştirildi',
-'1movedto2_redir' => '[[$1]] serlevası [[$2]] saifesine yollandı',
-'move-redirect-suppressed' => 'yollama bastırılğan',
-'movelogpage' => 'Ad deñişikligi jurnalı',
-'movelogpagetext' => 'Aşağıda bulunğan cedvel adı deñiştirilgen saifelerni köstere',
-'movesubpage' => '{{PLURAL:$1|Alt saife|Alt saifeler}}',
-'movesubpagetext' => 'Bu saifeniñ aşağıda kösterilgen $1 {{PLURAL:$1|alt saifesi|alt saifesi}} bar.',
-'movenosubpage' => 'Bu saifeniñ alt saifesi yoq.',
-'movereason' => 'Sebep',
-'revertmove' => 'Kerige al',
-'delete_and_move' => 'Yoq et ve adını deñiştir',
-'delete_and_move_text' => '== Yoq etmek lâzimdir ==
+'cantmove-titleprotected' => 'Siz yazğan yañı ad yasaqlıdır, bunıñ içün saife adını deñiştirmekniñ çaresi yoq.',
+'talkexists' => "'''Saifeniñ adı deñiştirildi, amma muzakere saifesiniñ adını deñiştirmege mümkünlik yoqtır, çünki aynı bu adda bir saife endi bar. Lütfen, bularnı qolnen birleştiriñiz.'''",
+'movedto' => 'adı deñiştirildi:',
+'movetalk' => 'Muzakere saifesiniñ adını deñiştir.',
+'move-subpages' => 'Alt saifelerniñ adlarını da deñiştir ($1 saifege qadar)',
+'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
+'movepage-page-exists' => '$1 saifesi endi bar, ve avtomatik olaraq yañıdan yazılıp olamaz.',
+'movepage-page-moved' => '$1 saifesiniñ adı $2 olaraq deñiştirildi.',
+'movepage-page-unmoved' => '$1 saifesiniñ adı $2 olaraq deñiştirilip olamay.',
+'1movedto2' => '"[[$1]]" saifesiniñ adı "[[$2]]" olaraq deñiştirildi',
+'1movedto2_redir' => '[[$1]] serlevası [[$2]] saifesine yollandı',
+'move-redirect-suppressed' => 'yollama bastırılğan',
+'movelogpage' => 'Ad deñişikligi jurnalı',
+'movelogpagetext' => 'Aşağıda bulunğan cedvel adı deñiştirilgen saifelerni köstere',
+'movesubpage' => '{{PLURAL:$1|Alt saife|Alt saifeler}}',
+'movesubpagetext' => 'Bu saifeniñ aşağıda kösterilgen $1 {{PLURAL:$1|alt saifesi|alt saifesi}} bar.',
+'movenosubpage' => 'Bu saifeniñ alt saifesi yoq.',
+'movereason' => 'Sebep',
+'revertmove' => 'Kerige al',
+'delete_and_move' => 'Yoq et ve adını deñiştir',
+'delete_and_move_text' => '== Yoq etmek lâzimdir ==
"[[:$1]]" saifesi endi bar. Adını deñiştirip olmaq içün onı yoq etmege isteysiñizmi?',
-'delete_and_move_confirm' => 'Ebet, bu saifeni yoq et',
-'delete_and_move_reason' => 'İsim deñiştirip olmaq içün yoq etildi',
-'selfmove' => 'Bu saifeniñ adını deñiştirmege imkân yoqtır, çünki asıl ile yañı adları bir kele.',
-'move-leave-redirect' => 'Arqada bir yollama taşla',
+'delete_and_move_confirm' => 'Ebet, bu saifeni yoq et',
+'delete_and_move_reason' => 'İsim deñiştirip olmaq içün yoq etildi',
+'selfmove' => 'Bu saifeniñ adını deñiştirmege imkân yoqtır, çünki asıl ile yañı adları bir kele.',
+'move-leave-redirect' => 'Arqada bir yollama taşla',
+'protectedpagemovewarning' => "'''Tenbi:''' Bu saife kilitlengen, adını tek idareciler deñiştirip olalar.",
+'semiprotectedpagemovewarning' => "'''İhtar:''' Bu saife kilitlengen, adını tek qaydlı qullanıcılar deñiştirip olalar.",
# Export
'export' => 'Saifelerni eksport et',
# Namespace 8 related
-'allmessages' => 'Sistema beyanatları',
-'allmessagesname' => 'İsim',
-'allmessagesdefault' => 'Original metin',
-'allmessagescurrent' => 'Şimdi qullanılğan metin',
-'allmessagestext' => 'İşbu cedvel MediaWikide mevcut olğan bütün sistema beyanatlarınıñ cedvelidir.
+'allmessages' => 'Sistema beyanatları',
+'allmessagesname' => 'İsim',
+'allmessagesdefault' => 'Original metin',
+'allmessagescurrent' => 'Şimdi qullanılğan metin',
+'allmessagestext' => 'İşbu cedvel MediaWikide mevcut olğan bütün sistema beyanatlarınıñ cedvelidir.
MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege isteseñiz [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ve [http://translatewiki.net translatewiki.net] saifelerine ziyaret etiñiz.',
-'allmessagesfilter' => 'Metin ayrıştırıcı filtrı:',
-'allmessagesmodified' => 'Tek deñiştirilgenlerni köster',
# Thumbnails
'thumbnail-more' => 'Büyüt',
@@ -1661,6 +1726,7 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'tooltip-ca-viewsource' => 'Bu saife qorçalav altında. Menba kodunı tek körip olasıñız, deñiştirip olamaysıñız.',
'tooltip-ca-history' => 'Bu saifeniñ keçmiş versiyaları.',
'tooltip-ca-protect' => 'Bu saifeni qorçalav',
+'tooltip-ca-unprotect' => 'Bu saifeniñ qorçalavını çıqaruv',
'tooltip-ca-delete' => 'Bu saifeni yoq etüv',
'tooltip-ca-undelete' => 'Saifeni yoq etilmezden evelki alına keri ketiriñiz',
'tooltip-ca-move' => 'Saifeniñ adını deñiştirüv',
@@ -1671,6 +1737,7 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'tooltip-search-fulltext' => 'Bu metini olğan saifeler qıdır',
'tooltip-p-logo' => 'Baş saife',
'tooltip-n-mainpage' => 'Baş saifege baruv',
+'tooltip-n-mainpage-description' => 'Baş saifege bar',
'tooltip-n-portal' => 'Leyha üzerine, ne qaydadır, neni yapıp olasıñız',
'tooltip-n-currentevents' => 'Ağımdaki vaqialarnen bağlı soñki malümat',
'tooltip-n-recentchanges' => 'Vikide yapılğan soñki deñişikliklerniñ cedveli.',
@@ -1718,10 +1785,12 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
# Attribution
'anonymous' => '{{SITENAME}} saytınıñ {{PLURAL:$1|1|$1}} qaydsız (anonim) qullanıcıları',
'siteuser' => '{{SITENAME}} saytınıñ qullanıcısı $1',
-'lastmodifiedatby' => 'Saife eñ soñki $3 tarafından $1, $2 tarihında deñiştirildi.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} saytınıñ qaydsız (anonim) qullanıcısı $1',
+'lastmodifiedatby' => 'Saife eñ soñki $3 tarafından $1, $2 tarihında deñiştirildi.',
'othercontribs' => 'Bu saifeni yaratqanda iştirak etken: $1.',
'others' => 'digerleri',
'siteusers' => '{{SITENAME}} saytınıñ {{PLURAL:$2|1|$2}} qullanıcısı $1',
+'anonusers' => '{{SITENAME}} saytınıñ qaydsız (anonim) {{PLURAL:$2|qullanıcısı|qullanıcıları}} $1',
'creditspage' => 'Teşekkürler',
'nocredits' => 'Bu saife içün qullanıcılar cedveli yoq.',
@@ -1758,6 +1827,13 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'mw_math_modern' => 'Zemaneviy brauzerler içün tevsiye etilgen',
'mw_math_mathml' => 'Mümkün olsa MathML (daa deñeme alında)',
+# Math errors
+'math_failure' => 'Ayırıştırılamadı',
+'math_unknown_error' => 'bilinmegen hata',
+'math_unknown_function' => 'belgisiz funktsiya',
+'math_lexing_error' => 'leksik hata',
+'math_syntax_error' => 'sintaksis hatası',
+
# Patrol log
'patrol-log-page' => 'Teşkerüv jurnalı',
'log-show-hide-patrol' => 'Teşkerüv jurnalını $1',
@@ -1776,7 +1852,7 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
# Media information
'mediawarning' => "'''İhtar''': Bu fayl türüniñ içinde yaman niyetli kod ola bile.
Faylnı işletip işletim sistemañızğa zarar ketirip olursıñız.",
-'imagemaxsize' => 'Resimlerniñ malümat saifelerindeki resimniñ azamiy (maksimal) ölçüsi:',
+'imagemaxsize' => "Resim ölçüsi sıñırı:<br />''(fayl malümat saifeleri içün)''",
'thumbsize' => 'Kiçik ölçü:',
'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} saife',
'file-info' => '(fayl büyükligi: $1, MIME çeşiti: $2)',
@@ -1822,7 +1898,7 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-make' => 'Kamera markası',
@@ -1852,7 +1928,7 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
# EXIF attributes
'exif-compression-1' => 'Sıqıştırılmağan',
-'exif-orientation-3' => '180° aylandırılğan', # 0th row: bottom; 0th column: right
+'exif-orientation-3' => '180° aylandırılğan',
'exif-exposureprogram-1' => 'Elnen',
@@ -1888,6 +1964,7 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
'watchlistall2' => 'episini',
'namespacesall' => 'Episi',
'monthsall' => 'Episi',
+'limitall' => 'bütüni',
# E-mail address confirmation
'confirmemail' => 'E-mail adresini tasdıqla',
@@ -2005,7 +2082,7 @@ Saifeni yañıdan yaratmağa isteseñiz, lütfen, bunı tasdıqlañız.",
'watchlisttools-raw' => 'Közetüv cedvelini adiy metin olaraq deñiştir',
# Special:Version
-'version' => 'Versiya', # Not used as normal message but as header for the special page itself
+'version' => 'Versiya',
# Special:FileDuplicateSearch
'fileduplicatesearch-legend' => 'Dublikatnı qıdır',
@@ -2034,4 +2111,7 @@ Saifeni yañıdan yaratmağa isteseñiz, lütfen, bunı tasdıqlañız.",
'blankpage' => 'Bоş saife',
'intentionallyblankpage' => 'Bu saife aselet boş qaldırılğan',
+# HTML forms
+'htmlform-reset' => 'Deñişikliklerni keri al',
+
);
diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php
index 92f56ed0..15c0edd8 100644
--- a/languages/messages/MessagesCs.php
+++ b/languages/messages/MessagesCs.php
@@ -16,6 +16,8 @@
* @author Mercy
* @author Michawiki
* @author Mormegil
+ * @author Mr. Richard Bolla
+ * @author Ragimiri
* @author Reaperman
* @author Urhixidur
* @author לערי ריינהארט
@@ -111,13 +113,14 @@ $bookstoreList = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#REDIRECT', '#PŘESMĚRUJ' ),
+ 'redirect' => array( '0', '#PŘESMĚRUJ', '#REDIRECT' ),
'notoc' => array( '0', '__BEZOBSAHU__', '__NOTOC__' ),
'nogallery' => array( '0', '__BEZGALERIE__', '__NOGALLERY__' ),
'forcetoc' => array( '0', '__VŽDYOBSAH__', '__FORCETOC__' ),
'toc' => array( '0', '__OBSAH__', '__TOC__' ),
'noeditsection' => array( '0', '__BEZEDITOVATČÁST__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'AKTUÁLNÍMĚSÍC', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'AKTUÁLNÍMĚSÍC', 'AKTUÁLNÍMĚSÍC2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'AKTUÁLNÍMĚSÍC1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'AKTUÁLNÍMĚSÍCJMÉNO', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'AKTUÁLNÍMĚSÍCGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'AKTUÁLNÍMĚSÍCZKR', 'CURRENTMONTHABBREV' ),
@@ -127,7 +130,8 @@ $magicWords = array(
'currentyear' => array( '1', 'AKTUÁLNÍROK', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'AKTUÁLNÍČAS', 'CURRENTTIME' ),
'currenthour' => array( '1', 'AKTUÁLNÍHODINA', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MÍSTNÍMĚSÍC', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'MÍSTNÍMĚSÍC', 'MÍSTNÍMĚSÍC2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MÍSTNÍMĚSÍC1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'MÍSTNÍMĚSÍCJMÉNO', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'MÍSTNÍMĚSÍCGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'MÍSTNÍMĚSÍCZKR', 'LOCALMONTHABBREV' ),
@@ -141,6 +145,7 @@ $magicWords = array(
'numberofarticles' => array( '1', 'POČETČLÁNKŮ', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'POČETSOUBORŮ', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'POČETUŽIVATELŮ', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'POČETAKTIVNÍCHUŽIVATELŮ', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'POČETEDITACÍ', 'NUMBEROFEDITS' ),
'pagename' => array( '1', 'NÁZEVSTRANY', 'PAGENAME' ),
'pagenamee' => array( '1', 'NÁZEVSTRANYE', 'PAGENAMEE' ),
@@ -215,7 +220,14 @@ $magicWords = array(
'special' => array( '0', 'speciální', 'special' ),
'defaultsort' => array( '1', 'KLÍČŘAZENÍ:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'CESTAKSOUBORU', 'FILEPATH:' ),
+ 'tag' => array( '0', 'značka', 'tag' ),
'hiddencat' => array( '1', '__SKRÝTKAT__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'STRÁNEKVKATEGORII', 'STRÁNEKVKAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'VELIKOSTSTRÁNKY', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEXOVAT__', '__INDEX__' ),
+ 'noindex' => array( '1', '__NEINDEXOVAT__', '__NOINDEX__' ),
+ 'staticredirect' => array( '1', '__STATICKÉPŘESMĚROVÁNÍ__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'ÚROVEŇZAMČENÍ', 'PROTECTIONLEVEL' ),
);
/**
@@ -230,83 +242,91 @@ $separatorTransformTable = array(',' => "\xc2\xa0", '.' => ',' );
$specialPageAliases = array(
'DoubleRedirects' => array( 'Dvojitá přesměrování', 'Dvojita presmerovani' ),
'BrokenRedirects' => array( 'Přerušená přesměrování', 'Prerusena presmerovani' ),
- 'Disambiguations' => array( 'Rozcestníky' ),
- 'Userlogin' => array( 'Userlogin', 'Přihlásit', 'Prihlasit' ),
- 'Userlogout' => array( 'Userlogout', 'Odhlásit' ),
+ 'Disambiguations' => array( 'Rozcestníky', 'Rozcestniky' ),
+ 'Userlogin' => array( 'Přihlásit', 'Prihlasit' ),
+ 'Userlogout' => array( 'Odhlásit', 'Odhlasit' ),
'CreateAccount' => array( 'Vytvořit účet', 'Vytvorit ucet' ),
- 'Preferences' => array( 'Nastavení' ),
- 'Watchlist' => array( 'Sledované stránky' ),
- 'Recentchanges' => array( 'Recentchanges', 'Poslední změny', 'Posledni zmeny' ),
+ 'Preferences' => array( 'Nastavení', 'Nastaveni' ),
+ 'Watchlist' => array( 'Sledované stránky', 'Sledovane stranky' ),
+ 'Recentchanges' => array( 'Poslední změny', 'Posledni zmeny' ),
'Upload' => array( 'Načíst soubor', 'Nacist soubor', 'Načíst obrázek' ),
- 'Listfiles' => array( 'Listfiles', 'Seznam_souborů' ),
- 'Newimages' => array( 'Newimages', 'Galerie nových obrázků' ),
- 'Listusers' => array( 'Listusers', 'Uživatelé', 'Uzivatele', 'Seznam uživatelů' ),
- 'Listgrouprights' => array( 'Seznam uživatelských práv' ),
+ 'Listfiles' => array( 'Seznam souborů', 'Seznam souboru' ),
+ 'Newimages' => array( 'Nové obrázky', 'Galerie nových obrázků', 'Nove obrazky' ),
+ 'Listusers' => array( 'Uživatelé', 'Uzivatele', 'Seznam uživatelů', 'Seznam uzivatelu' ),
+ 'Listgrouprights' => array( 'Seznam uživatelských práv', 'Seznam uzivatelskych prav' ),
'Statistics' => array( 'Statistiky' ),
- 'Randompage' => array( 'Randompage', 'Náhodná stránka' ),
- 'Lonelypages' => array( 'Lonelypages', 'Sirotčí stránky', 'Sirotci stranky' ),
- 'Uncategorizedpages' => array( 'Uncategorizedpages', 'Nekategorizované stránky' ),
- 'Uncategorizedcategories' => array( 'Uncategorizedcategories', 'Nekategorizované kategorie' ),
- 'Uncategorizedimages' => array( 'Uncategorizedimages', 'Nekategorizované soubory' ),
- 'Uncategorizedtemplates' => array( 'Uncategorizedtemplates', 'Nekategorizované šablony' ),
- 'Unusedcategories' => array( 'Unusedcategories', 'Nepoužívané kategorie', 'Nepouzivane kategorie' ),
- 'Unusedimages' => array( 'Unusedimages', 'Nepoužívané soubory', 'Nepouzivane soubory' ),
- 'Wantedpages' => array( 'Wantedpages', 'Požadované stránky' ),
- 'Wantedcategories' => array( 'Wantedcategories', 'Požadované kategorie' ),
- 'Wantedtemplates' => array( 'Chybějící šablony' ),
- 'Mostlinked' => array( 'Mostlinked', 'Nejodkazovanější stránky', 'Nejodkazovanejsi stranky' ),
- 'Mostlinkedcategories' => array( 'Mostlinkedcategories', 'Nejpoužívanější kategorie', 'Nejpouzivanejsi kategorie' ),
- 'Mostlinkedtemplates' => array( 'Mostlinkedtemplates', 'Nejpoužívanější šablony', 'Nejpouzavanejsi sablony' ),
- 'Mostimages' => array( 'Mostimages', 'Stránky s nejvyšším počtem souborů' ),
- 'Mostcategories' => array( 'Mostcategories', 'Stránky s nejvyšším počtem kategorií' ),
- 'Mostrevisions' => array( 'Mostrevisions', 'Stránky s nejvyšším počtem editací' ),
- 'Fewestrevisions' => array( 'Fewestrevisions', 'Stránky s nejmenším počtem editací' ),
- 'Shortpages' => array( 'Shortpages', 'Nejkratší stránky', 'Nejkratsi stranky' ),
- 'Longpages' => array( 'Longpages', 'Nejdelší stránky', 'Nejdelsi stranky' ),
- 'Newpages' => array( 'Newpages', 'Nejnovější stránky', 'Nejnovejsi stranky' ),
- 'Deadendpages' => array( 'Deadendpages', 'Slepé stránky' ),
- 'Protectedpages' => array( 'Protectedpages', 'Zamčené stránky', 'Zamcene stranky' ),
- 'Protectedtitles' => array( 'Protectedtitles', 'Stránky které nelze vytvořit' ),
- 'Allpages' => array( 'Allpages', 'Všechny stránky', 'Vsechny stranky' ),
- 'Ipblocklist' => array( 'Ipblocklist', 'Blokovaní uživatelé' ),
- 'Specialpages' => array( 'Specialpages', 'Speciální stránky' ),
+ 'Randompage' => array( 'Náhodná stránka', 'Nahodna stranka' ),
+ 'Lonelypages' => array( 'Sirotčí stránky', 'Sirotci stranky' ),
+ 'Uncategorizedpages' => array( 'Nekategorizované stránky', 'Nekategorizovane stranky' ),
+ 'Uncategorizedcategories' => array( 'Nekategorizované kategorie', 'Nekategorizovane kategorie' ),
+ 'Uncategorizedimages' => array( 'Nekategorizované soubory', 'Nekategorizovane soubory' ),
+ 'Uncategorizedtemplates' => array( 'Nekategorizované šablony', 'Nekategorizovane sablony' ),
+ 'Unusedcategories' => array( 'Nepoužívané kategorie', 'Nepouzivane kategorie' ),
+ 'Unusedimages' => array( 'Nepoužívané soubory', 'Nepouzivane soubory' ),
+ 'Wantedpages' => array( 'Požadované stránky', 'Pozadovane stranky', 'Chybějící stránky' ),
+ 'Wantedcategories' => array( 'Požadované kategorie', 'Pozadovane kategorie', 'Chybějící kategorie' ),
+ 'Wantedfiles' => array( 'Požadované soubory', 'Pozadovane soubory', 'Chybějící soubory' ),
+ 'Wantedtemplates' => array( 'Požadované šablony', 'Pozadovane sablony', 'Chybějící šablony' ),
+ 'Mostlinked' => array( 'Nejodkazovanější stránky', 'Nejodkazovanejsi stranky' ),
+ 'Mostlinkedcategories' => array( 'Nejpoužívanější kategorie', 'Nejpouzivanejsi kategorie' ),
+ 'Mostlinkedtemplates' => array( 'Nejpoužívanější šablony', 'Nejpouzivanejsi sablony' ),
+ 'Mostimages' => array( 'Nejpoužívanější soubory', 'Nejpouzivanejsi soubory' ),
+ 'Mostcategories' => array( 'Stránky s nejvíce kategoriemi', 'Stranky s nejvice kategoriemi', 'Stránky s nejvyšším počtem kategorií' ),
+ 'Mostrevisions' => array( 'Stránky s nejvíce editacemi', 'Stranky s nejvice editacemi', 'Stránky s nejvyšším počtem editací' ),
+ 'Fewestrevisions' => array( 'Stránky s nejméně editacemi', 'Stranky s nejmene editacemi', 'Stránky s nejmenším počtem editací' ),
+ 'Shortpages' => array( 'Nejkratší stránky', 'Nejkratsi stranky' ),
+ 'Longpages' => array( 'Nejdelší stránky', 'Nejdelsi stranky' ),
+ 'Newpages' => array( 'Nové stránky', 'Nove stranky', 'Nejnovější stránky', 'Nejnovejsi stranky' ),
+ 'Ancientpages' => array( 'Staré stránky', 'Stare stranky', 'Nejstarší stránky' ),
+ 'Deadendpages' => array( 'Slepé stránky', 'Slepe stranky' ),
+ 'Protectedpages' => array( 'Zamčené stránky', 'Zamcene stranky' ),
+ 'Protectedtitles' => array( 'Zamčené názvy', 'Zamcene nazvy', 'Stránky které nelze vytvořit' ),
+ 'Allpages' => array( 'Všechny stránky', 'Vsechny stranky' ),
+ 'Ipblocklist' => array( 'Blokovaní uživatelé', 'Blokovani uzivatele' ),
+ 'Specialpages' => array( 'Speciální stránky', 'Specialni stranky' ),
'Contributions' => array( 'Příspěvky', 'Prispevky' ),
- 'Emailuser' => array( 'Emailuser', 'E-mail' ),
- 'Confirmemail' => array( 'Confirmemail', 'Potvrdit e-mail' ),
- 'Whatlinkshere' => array( 'Whatlinkshere', 'Odkazuje sem' ),
- 'Recentchangeslinked' => array( 'Recentchangeslinked', 'Související změny', 'Souvisejici zmerny' ),
- 'Movepage' => array( 'Movepage', 'Přesunout stránku' ),
- 'Blockme' => array( 'Blockme', 'Zablokuj mě', 'Zablokuj me' ),
- 'Booksources' => array( 'Booksources', 'Zdroje knih' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Confirmemail' => array( 'Potvrdit e-mail' ),
+ 'Whatlinkshere' => array( 'Co odkazuje na', 'Odkazuje sem' ),
+ 'Recentchangeslinked' => array( 'Související změny', 'Souvisejici zmeny' ),
+ 'Movepage' => array( 'Přesunout stránku' ),
+ 'Blockme' => array( 'Zablokuj mě', 'Zablokuj me' ),
+ 'Booksources' => array( 'Zdroje knih' ),
'Categories' => array( 'Kategorie' ),
'Export' => array( 'Exportovat stránky' ),
'Version' => array( 'Verze' ),
- 'Allmessages' => array( 'Allmessages', 'Všechny zprávy' ),
- 'Log' => array( 'Protokolovací záznamy', 'Protokoly' ),
- 'Blockip' => array( 'Blockip', 'Blokovat uživatele', 'Blokovat IP' ),
- 'Undelete' => array( 'Smazané stránky' ),
+ 'Allmessages' => array( 'Všechny zprávy' ),
+ 'Log' => array( 'Protokolovací záznamy', 'Protokoly', 'Protokol', 'Protokolovaci zaznamy' ),
+ 'Blockip' => array( 'Blokovat uživatele', 'Blokovat IP', 'Blokovat uzivatele' ),
+ 'Undelete' => array( 'Smazané stránky', 'Smazane stranky' ),
'Import' => array( 'Importovat stránky' ),
- 'Lockdb' => array( 'Lockdb', 'Zamknout databázi' ),
- 'Unlockdb' => array( 'Unlockdb', 'Odemknout databázi' ),
- 'Userrights' => array( 'Userrights', 'Správa uživatelů' ),
- 'MIMEsearch' => array( 'MIMEsearch', 'Hledat podle MIME typu' ),
+ 'Lockdb' => array( 'Zamknout databázi', 'Zamknout databazi' ),
+ 'Unlockdb' => array( 'Odemknout databázi', 'Odemknout databazi' ),
+ 'Userrights' => array( 'Uživatelská práva', 'Správa uživatelů', 'Uzivatelska prava' ),
+ 'MIMEsearch' => array( 'Hledání podle MIME', 'Hledani podle MIME', 'Hledat podle MIME typu' ),
+ 'FileDuplicateSearch' => array( 'Hledání duplicitních souborů', 'Hledani duplicitnich souboru' ),
'Unwatchedpages' => array( 'Unwatchedpages', 'Nesledované stránky' ),
- 'Listredirects' => array( 'Listredirects', 'Seznam přesměrování' ),
- 'Revisiondelete' => array( 'Revisiondelete', 'Smazat revizi' ),
- 'Unusedtemplates' => array( 'Unusedtemplates', 'Nepoužívané šablony' ),
- 'Randomredirect' => array( 'Randomredirect', 'Náhodné přesměrování' ),
- 'Mypage' => array( 'Mypage', 'Moje stránka' ),
- 'Mytalk' => array( 'Mytalk', 'Moje diskuse', 'Moje diskuze' ),
- 'Mycontributions' => array( 'Mycontributions', 'Mé příspěvky', 'Me prispevky' ),
- 'Listadmins' => array( 'Listadmins', 'Seznam správců' ),
- 'Listbots' => array( 'Listbots', 'Seznam botů' ),
- 'Popularpages' => array( 'Popularpages', 'Nejnavštěvovanější stránky', 'Nejnavstevovanejsi stranky' ),
- 'Search' => array( 'Hledání' ),
- 'Resetpass' => array( 'Resetpassword', 'Resetovat heslo' ),
- 'Withoutinterwiki' => array( 'Withoutinterwiki', 'Stránky bez interwiki odkazů' ),
- 'MergeHistory' => array( 'Mergehistory', 'Sloučit historii' ),
- 'Invalidateemail' => array( 'Invalidateemail', 'Zrušit potvrzení e-mailu' ),
+ 'Listredirects' => array( 'Seznam přesměrování', 'Seznam presmerovani' ),
+ 'Revisiondelete' => array( 'Smazat revizi' ),
+ 'Unusedtemplates' => array( 'Nepoužívané šablony', 'Nepouzivane sablony' ),
+ 'Randomredirect' => array( 'Náhodné přesměrování', 'Nahodne presmerovani' ),
+ 'Mypage' => array( 'Moje stránka', 'Moje stranka' ),
+ 'Mytalk' => array( 'Moje diskuse', 'Moje diskuze' ),
+ 'Mycontributions' => array( 'Mé příspěvky', 'Me prispevky' ),
+ 'Listadmins' => array( 'Seznam správců', 'Seznam spravcu' ),
+ 'Listbots' => array( 'Seznam botů', 'Seznam botu' ),
+ 'Popularpages' => array( 'Nejnavštěvovanější stránky', 'Nejnavstevovanejsi stranky' ),
+ 'Search' => array( 'Hledání', 'Hledani' ),
+ 'Resetpass' => array( 'Změna hesla', 'Zmena hesla', 'Resetovat heslo' ),
+ 'Withoutinterwiki' => array( 'Bez interwiki', 'Stránky bez interwiki odkazů' ),
+ 'MergeHistory' => array( 'Sloučení historie', 'Slouceni historie', 'Sloučit historii' ),
+ 'Filepath' => array( 'Cesta k souboru' ),
+ 'Invalidateemail' => array( 'Zneplatnit e-mail', 'Zrušit potvrzení e-mailu' ),
'Blankpage' => array( 'Prázdná stránka' ),
+ 'LinkSearch' => array( 'Hledání odkazů', 'Hledani odkazu' ),
+ 'DeletedContributions' => array( 'Smazané příspěvky', 'Smazane prispevky' ),
+ 'Tags' => array( 'Značky', 'Znacky' ),
+ 'Activeusers' => array( 'Aktivní uživatelé', 'Aktivni uzivatele' ),
);
$messages = array(
@@ -340,6 +360,7 @@ $messages = array(
'tog-enotifminoredits' => 'Poslat e-mail i pro menší editace (které jinak nezpůsobují odeslání e-mailu)',
'tog-enotifrevealaddr' => 'Prozradit mou e-mailovou adresu v upozorňujících e-mailech',
'tog-shownumberswatching' => 'Zobrazovat počet sledujících uživatelů',
+'tog-oldsig' => 'Náhled stávajícího podpisu:',
'tog-fancysig' => 'Používat v podpisu wikitext (bez automatického odkazu)',
'tog-externaleditor' => 'Implicitně používat externí editor',
'tog-externaldiff' => 'Implicitně používat externí porovnávací program',
@@ -363,6 +384,13 @@ $messages = array(
'underline-never' => 'Nikdy',
'underline-default' => 'Podle nastavení prohlížeče',
+# Font style option in Special:Preferences
+'editfont-style' => 'Druh písma v editačním poli:',
+'editfont-default' => 'Podle nastavení prohlížeče',
+'editfont-monospace' => 'Neproporcionální písmo',
+'editfont-sansserif' => 'Bezpatkové písmo',
+'editfont-serif' => 'Patkové písmo',
+
# Dates
'sunday' => 'neděle',
'monday' => 'pondělí',
@@ -422,7 +450,7 @@ $messages = array(
'category-media-header' => 'Soubory v kategorii „$1“',
'category-empty' => "''Tato kategorie neobsahuje žádné stránky či soubory.''",
'hidden-categories' => '{{PLURAL:$1|Skrytá kategorie|Skryté kategorie|Skryté kategorie}}',
-'hidden-category-category' => 'Skryté kategorie', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skryté kategorie',
'category-subcat-count' => '{{PLURAL:$2|V této kategorii je pouze následující podkategorie.|{{PLURAL:$1|Zobrazuje se jedna podkategorie|Zobrazují se $1 podkategorie|Zobrazuje se $1 podkategorií}} z celkového počtu $2 podkategorií v této kategorii.|{{PLURAL:$1|Zobrazuje se jedna podkategorie|Zobrazují se $1 podkategorie|Zobrazuje se $1 podkategorií}} z celkového počtu $2 podkategorií v této kategorii.}}',
'category-subcat-count-limited' => 'Tato kategorie obsahuje {{PLURAL:$1|následující podkategorii|následující $1 podkategorie|následujících $1 podkategorií}}.',
'category-article-count' => '{{PLURAL:$2|V této kategorii je pouze následující stránka.|{{PLURAL:$1|Zobrazuje se jedna stránka|Zobrazují se $1 stránky|Zobrazuje se $1 stránek}} z celkového počtu $2 stránek v této kategorii.|{{PLURAL:$1|Zobrazuje se jedna stránka|Zobrazují se $1 stránky|Zobrazuje se $1 stránek}} z celkového počtu $2 stránek v této kategorii.}}',
@@ -430,6 +458,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|V této kategorii je pouze následující soubor.|{{PLURAL:$1|Zobrazuje se jeden soubor|Zobrazují se $1 soubory|Zobrazuje se $1 souborů}} z celkového počtu $2 souborů v této kategorii.|{{PLURAL:$1|Zobrazuje se jedna soubor|Zobrazují se $1 soubory|Zobrazuje se $1 souborů}} z celkového počtu $2 souborů v této kategorii.}}',
'category-file-count-limited' => 'Tato kategorie obsahuje {{PLURAL:$1|následující soubor|následující $1 soubory|následujících $1 souborů}}.',
'listingcontinuesabbrev' => 'pokrač.',
+'index-category' => 'Indexované stránky',
+'noindex-category' => 'Neindexované stránky',
'mainpagetext' => "'''MediaWiki byla úspěšně nainstalována.'''",
'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents Uživatelská příručka] vám napoví, jak MediaWiki používat.
@@ -440,10 +470,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Často kladené otázky o MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]',
-'about' => 'Úvod',
-'article' => 'Obsahová stránka',
-'newwindow' => '(otevře se v novém okně)',
-'cancel' => 'Storno',
+'about' => 'Úvod',
+'article' => 'Obsahová stránka',
+'newwindow' => '(otevře se v novém okně)',
+'cancel' => 'Storno',
+'moredotdotdot' => 'Další…',
+'mypage' => 'Moje stránka',
+'mytalk' => 'Moje diskuse',
+'anontalk' => 'Diskuse k této IP adrese',
+'navigation' => 'Navigace',
+'and' => '&#32;a',
+
+# Cologne Blue skin
'qbfind' => 'Hledání',
'qbbrowse' => 'Listování',
'qbedit' => 'Editování',
@@ -451,15 +489,35 @@ $messages = array(
'qbpageinfo' => 'Kontext',
'qbmyoptions' => 'Moje volby',
'qbspecialpages' => 'Speciální stránky',
-'moredotdotdot' => 'Další…',
-'mypage' => 'Moje stránka',
-'mytalk' => 'Moje diskuse',
-'anontalk' => 'Diskuse k této IP adrese',
-'navigation' => 'Navigace',
-'and' => '&#32;a',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Často kladené otázky',
+'faqpage' => 'Project:Často kladené otázky',
+
+# Vector skin
+'vector-action-addsection' => 'Přidat téma',
+'vector-action-delete' => 'Smazat',
+'vector-action-move' => 'Přesunout',
+'vector-action-protect' => 'Zamknout',
+'vector-action-undelete' => 'Obnovit',
+'vector-action-unprotect' => 'Odemknout',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Nápověda',
+'vector-namespace-image' => 'Soubor',
+'vector-namespace-main' => 'Stránka',
+'vector-namespace-media' => 'Stránka souboru',
+'vector-namespace-mediawiki' => 'Hlášení',
+'vector-namespace-project' => 'Projektová stránka',
+'vector-namespace-special' => 'Speciální stránka',
+'vector-namespace-talk' => 'Diskuse',
+'vector-namespace-template' => 'Šablona',
+'vector-namespace-user' => 'Uživatelská stránka',
+'vector-view-create' => 'Založit',
+'vector-view-edit' => 'Editovat',
+'vector-view-history' => 'Zobrazit historii',
+'vector-view-view' => 'Číst',
+'vector-view-viewsource' => 'Zobrazit zdrojový kód',
+'actions' => 'Akce',
+'namespaces' => 'Jmenné prostory',
+'variants' => 'Varianty',
'errorpagetitle' => 'Chyba',
'returnto' => 'Návrat na stránku „$1“.',
@@ -509,18 +567,22 @@ $messages = array(
'otherlanguages' => 'V jiných jazycích',
'redirectedfrom' => '(Přesměrováno z $1)',
'redirectpagesub' => 'Přesměrování',
-'lastmodifiedat' => 'Stránka byla naposledy editována $1 v $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Stránka byla naposledy editována $1 v $2.',
'viewcount' => 'Stránka byla zobrazena {{PLURAL:$1|jedenkrát|$1krát|$1krát}}.',
'protectedpage' => 'Zamčená stránka',
'jumpto' => 'Přejít na:',
'jumptonavigation' => 'navigace',
'jumptosearch' => 'hledání',
+'view-pool-error' => 'Promiňte, servery jsou momentálně přetíženy.
+Tuto stránku si právě prohlíží příliš mnoho uživatelů.
+Před tím, než ji zkusíte načíst znovu, chvíli počkejte.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O&nbsp;{{grammar:6sg|{{SITENAME}}}}',
'aboutpage' => 'Project:{{SITENAME}}',
'copyright' => 'Obsah je dostupný pod $1.',
-'copyrightpagename' => 'podmínek {{grammar:2sg|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Autorské právo',
'currentevents' => 'Aktuality',
'currentevents-url' => 'Project:Aktuality',
@@ -528,8 +590,6 @@ $messages = array(
'disclaimerpage' => 'Project:Vyloučení odpovědnosti',
'edithelp' => 'Pomoc při editování',
'edithelppage' => 'Help:Jak editovat stránku',
-'faq' => 'Často kladené otázky',
-'faqpage' => 'Project:Často kladené otázky',
'helppage' => 'Help:Obsah',
'mainpage' => 'Hlavní strana',
'mainpage-description' => 'Hlavní strana',
@@ -610,10 +670,6 @@ Poslední dotaz byl:
„$1“
z funkce „$2“.
Databáze vrátila chybu „$3: $4“',
-'noconnect' => 'Tato wiki má nějaké technické potíže a nepodařilo se připojit k databázovém serveru.<br />
-$1',
-'nodb' => 'Nebylo možné vybrat databázi $1',
-'cachederror' => 'Následuje kopie požadované stránky z cache, která nemusí být aktuální.',
'laggedslavemode' => 'Upozornění: Stránka nemusí být zcela aktuální.',
'readonly' => 'Databáze je uzamčena',
'enterlockreason' => 'Udejte důvod zamčení, včetně odhadu, za jak dlouho dojde k odemčení.',
@@ -630,6 +686,8 @@ Pokud toto není váš případ, možná jste nalezli chybu v software. Prosíme
'readonly_lag' => 'Databáze byla automaticky dočasně uzamčena kvůli zpoždění ostatních databázových serverů oproti hlavnímu',
'internalerror' => 'Vnitřní chyba',
'internalerror_info' => 'Vnitřní chyba: $1',
+'fileappenderrorread' => 'Během přidávání se nepodařilo přečíst „$1“.',
+'fileappenderror' => 'Nepodařilo se připojit „$1“ k „$2“.',
'filecopyerror' => 'Nebylo možné zkopírovat soubor „$1“ na „$2“.',
'filerenameerror' => 'Nebylo možné přejmenovat soubor „$1“ na „$2“.',
'filedeleteerror' => 'Nebylo možné smazat soubor „$1“.',
@@ -639,7 +697,8 @@ Pokud toto není váš případ, možná jste nalezli chybu v software. Prosíme
'unexpected' => 'Neočekávaná hodnota: "$1"="$2".',
'formerror' => 'Chyba: nebylo možné odeslat formulář',
'badarticleerror' => 'Tento úkon nelze použít na tuto stránku.',
-'cannotdelete' => 'Nebylo možné smazat zvolenou stránku ani soubor. (Možná už byla smazána někým jiným.)',
+'cannotdelete' => 'Nebylo možné smazat stránku nebo soubor „$1“.
+Možná už byl(a) smazán(a) někým jiným.',
'badtitle' => 'Neplatný název',
'badtitletext' => 'Požadovaný název stránky byl neplatný, prázdný nebo obsahoval nesprávnou předponu mezijazykového či interwiki odkazu. Možná obsahoval znaky, které v názvu nejsou dovoleny.',
'perfcached' => 'Následující data jsou z cache a nemusí být plně aktuální:',
@@ -670,7 +729,6 @@ $2',
'virus-unknownscanner' => 'neznámý antivirus:',
# Login and logout pages
-'logouttitle' => 'Na shledanou!',
'logouttext' => "'''Nyní jste odhlášeni.'''
Můžete pokračovat v anonymním prohlížení a editaci {{grammar:2sg|{{SITENAME}}}}, nebo se můžete [[Special:UserLogin|znovu přihlásit]] jako stejný či jiný uživatel.
@@ -678,7 +736,6 @@ Uvědomte si, že některé stránky se mohou i nadále zobrazovat, jako byste b
'welcomecreation' => '== Vítejte, $1! ==
Váš účet byl úspěšně vytvořen.
Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Přihlaste se',
'yourname' => 'Uživatelské jméno:',
'yourpassword' => 'Vaše heslo',
'yourpasswordagain' => 'Zopakujte heslo:',
@@ -689,6 +746,7 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
'nav-login-createaccount' => 'Přihlášení / vytvoření účtu',
'loginprompt' => 'K přihlášení do {{grammar:2sg|{{SITENAME}}}} musíte mít povoleny cookies.',
'userlogin' => 'Přihlášení / vytvoření účtu',
+'userloginnocreate' => 'Přihlášení',
'logout' => 'Odhlásit se',
'userlogout' => 'Odhlášení',
'notloggedin' => 'Nejste přihlášen(a)',
@@ -700,27 +758,8 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
'createaccountmail' => 'pomocí e-mailu',
'badretype' => 'Vámi napsaná hesla nesouhlasí.',
'userexists' => 'Uživatel se stejným jménem je už registrován. Zvolte jiné jméno.',
-'youremail' => 'Vaše e-mailová adresa:',
-'username' => 'Uživatelské jméno:',
-'uid' => 'Uživatelské ID:',
-'prefs-memberingroups' => 'Člen {{PLURAL:$1|skupiny|skupin}}:',
-'yourrealname' => 'Vaše skutečné jméno:',
-'yourlanguage' => 'Jazyk rozhraní:',
-'yourvariant' => 'Jazyková varianta',
-'yournick' => 'Podpis:',
-'badsig' => 'Chybný podpis, zkontrolujte syntaxi HTML.',
-'badsiglength' => 'Váš podpis je příliš dlouhý. Musí být kratší než $1 {{PLURAL:$1|znak|znaky|znaků}}.',
-'yourgender' => 'Pohlaví:',
-'gender-unknown' => 'Neurčeno',
-'gender-male' => 'Mužské',
-'gender-female' => 'Ženské',
-'prefs-help-gender' => 'Volitelné: používáno softwarem pro správné oslovování v závislosti na pohlaví. Tato informace je veřejná.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Skutečné jméno (volitelné): pokud ho zadáte, bude použito pro označení autorství vaší práce.',
'loginerror' => 'Chyba při přihlašování',
-'prefs-help-email' => 'Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.
-Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat, aniž by byla vaše adresa prozrazena.',
-'prefs-help-email-required' => 'Je vyžadována e-mailová adresa.',
+'createaccounterror' => 'Nepodařilo se vytvořit uživatelský účet: $1',
'nocookiesnew' => 'Uživatelský účet byl vytvořen, ale nejste přihlášeni. {{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapněte je a přihlaste se znovu s vaším novým uživatelským jménem a heslem.',
'nocookieslogin' => '{{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapněte je a zkuste znovu.',
'noname' => 'Musíte uvést jméno svého účtu.',
@@ -729,10 +768,11 @@ Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelsk
'nosuchuser' => 'Neexistuje uživatel se jménem „$1“. U uživatelských jmen se rozlišují malá/velká písmena. Zkontrolujte zápis, nebo si [[Special:UserLogin/signup|vytvořte nový účet]].',
'nosuchusershort' => 'Neexistuje uživatel se jménem „<nowiki>$1</nowiki>“. Zkontrolujte zápis.',
'nouserspecified' => 'Musíte zadat uživatelské jméno.',
+'login-userblocked' => 'Tento uživatel je zablokován. Přihlášení není dovoleno.',
'wrongpassword' => 'Vámi uvedené heslo nesouhlasí. Zkuste to znovu.',
'wrongpasswordempty' => 'Bylo zadáno prázdné heslo. Zkuste to znovu.',
-'passwordtooshort' => 'Vaše heslo není validní nebo je příliš krátké.
-Musí obsahovat nejméně $1 {{plural:$1|znak|znaky|znaků}} a nesmí být stejné jako uživatelské jméno.',
+'passwordtooshort' => 'Heslo musí být dlouhé nejméně $1 {{PLURAL:$1|znak|znaky|znaků}}.',
+'password-name-match' => 'Vaše heslo nesmí být stejné jako uživatelské jméno.',
'mailmypassword' => 'Poslat e-mailem nové heslo',
'passwordremindertitle' => 'Nové dočasné heslo na {{grammar:4sg|{{SITENAME}}}}',
'passwordremindertext' => 'Někdo (patrně Vy, z IP adresy $1) požádal, abychom Vám poslali nové heslo
@@ -745,6 +785,7 @@ Pokud jste o změnu hesla nežádal(a) nebo jste si na původní heslo již
vzpomněl(a) a už ho změnit nechcete, můžete tuto zprávu ignorovat
a používat staré heslo.',
'noemail' => 'Uživatel „$1“ nemá zaregistrovanou e-mailovou adresu.',
+'noemailcreate' => 'Musíte uvést platnou e-mailovou adresu',
'passwordsent' => 'Dočasné heslo bylo zasláno na e-mailovou adresu registrovanou pro „$1“. Přihlaste se, prosím, znovu, jakmile ho obdržíte.',
'blocked-mailpassword' => 'Vaší IP adrese byla zablokována možnost editace, a současně s tím je zablokována funkce pro zaslání nového hesla.',
'eauthentsent' => 'Potvrzovací e-mail byl zaslán na zadanou adresu.
@@ -767,9 +808,11 @@ Heslo: „$3“
Měli byste se co nejdřív přihlásit a změnit si heslo.
Pokud byl účet vytvořen omylem, považujte tuto zprávu za bezpředmětnou.',
+'usernamehasherror' => 'Uživatelské jméno nemůže obsahovat znak mřížka (#)',
'login-throttled' => 'Provedli jste příliš mnoho pokusů o přihlášení.
Počkejte chvíli, než to zkusíte znovu.',
'loginlanguagelabel' => 'Jazyk: $1',
+'suspicious-userlogout' => 'Váš požadavek na odhlášení byl odmítnut, neboť to vypadá, že ho poslal rozbitý prohlížeč nebo cachující proxy.',
# Password reset dialog
'resetpass' => 'Změna hesla',
@@ -781,17 +824,13 @@ Počkejte chvíli, než to zkusíte znovu.',
'retypenew' => 'Napište znovu nové heslo',
'resetpass_submit' => 'Nastavit heslo a přihlásit se',
'resetpass_success' => 'Vaše heslo bylo úspěšně změněno. Probíhá přihlašování…',
-'resetpass_bad_temporary' => 'Neplatné dočasné heslo. Možná již bylo heslo úspěšně změněno nebo někdo znovu požádal o nové dočasné heslo.',
'resetpass_forbidden' => 'Hesla nelze změnit.',
'resetpass-no-info' => 'K této stránce mají přímý přístup jen přihlášení uživatelé.',
'resetpass-submit-loggedin' => 'Změnit heslo',
+'resetpass-submit-cancel' => 'Storno',
'resetpass-wrong-oldpass' => 'Nesprávné dočasné nebo aktuální heslo.
Možná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové dočasné heslo.',
'resetpass-temp-password' => 'Dočasné heslo:',
-'resetpass-log' => 'Kniha záznamů změn hesla',
-'resetpass-logtext' => 'Toto je kniha záznamů uživatelů, kteří si nechali administrátory změnit heslo.',
-'resetpass-logentry' => 'změnil heslo pro uživatele $1',
-'resetpass-comment' => 'Důvod změny hesla:',
# Edit page toolbar
'bold_sample' => 'Tučný text',
@@ -864,7 +903,6 @@ Prosíme, uveďte tyto údaje při komunikaci se správci.",
'blockededitsource' => "Text '''vašich editací''' stránky '''$1''' následuje:",
'whitelistedittitle' => 'Pro editaci je vyžadováno přihlášení',
'whitelistedittext' => 'Pro editaci se musíte $1.',
-'confirmedittitle' => 'Vyžadováno e-mailové potvrzení',
'confirmedittext' => 'Pro editaci stránek je vyžadováno potvrzení vaší e-mailové adresy. Na stránce [[Special:Preferences|nastavení]] zadejte a nechte potvrdit svou e-mailovou adresu.',
'nosuchsectiontitle' => 'Sekce nenalezena',
'nosuchsectiontext' => 'Pokoušíte se editovat neexistující sekci.
@@ -883,9 +921,15 @@ Pokud jste zde omylem, stiskněte ve svém prohlížeči tlačítko ''Zpět''.",
'anontalkpagetext' => "----''Toto je diskusní stránka anonymního uživatele, který si dosud nevytvořil účet nebo ho nepoužívá. K&nbsp;jeho identifikaci proto musíme používat číselnou IP adresu. Takovou IP adresu může sdílet několik uživatelů. Pokud jste anonymní uživatel a&nbsp;máte za to, že jsou vám adresovány irelevantní komentáře, prosíme, [[Special:UserLogin/signup|vytvořte si účet]] nebo [[Special:UserLogin|se přihlaste]], vyhnete se tím budoucí záměně s&nbsp;jinými anonymními uživateli.''",
'noarticletext' => 'Tato stránka zatím neobsahuje žádný text.
Můžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} prohlédnout si příslušné protokolovací záznamy] nebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tuto stránku založit]</span>.',
+'noarticletext-nopermission' => 'Tato stránka zatím neobsahuje žádný text.
+Můžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách nebo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si prohlédnout příslušné protokolovací záznamy]</span>.',
'userpage-userdoesnotexist' => 'Uživatelský účet „$1“ není zaregistrován. Zkontrolujte zda skutečně chcete vytvořit či editovat tuto stránku.',
+'userpage-userdoesnotexist-view' => 'Uživatelský účet „$1“ není zaregistrován.',
+'blocked-notice-logextract' => 'Tento uživatel je momentálně zablokován.
+Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
'clearyourcache' => "'''Poznámka:''' Po uložení musíte smazat cache vašeho prohlížeče, jinak změny neuvidíte: '''Mozilla / Firefox:''' ''Ctrl-Shift-R'', '''IE:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror''': ''F5''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Použijte tlačítko „Ukázat náhled“ k testování vašeho nového CSS/JS před uložením.",
+'usercssyoucanpreview' => "'''Tip:''' Použijte tlačítko „{{int:showpreview}}“ k testování vašeho nového CSS před uložením.",
+'userjsyoucanpreview' => "'''Tip:''' Použijte tlačítko „{{int:showpreview}}“ k testování vašeho nového JavaScriptu před uložením.",
'usercsspreview' => "'''Pamatujte, že si prohlížíte jen náhled vašeho uživatelského CSS.'''
'''Zatím nebylo uloženo!'''",
'userjspreview' => "'''Pamatujte, že testujete a prohlížíte pouze náhled vašeho uživatelského JavaScriptu, dosud nebyl uložen!'''",
@@ -930,13 +974,16 @@ Uložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírová
'readonlywarning' => "'''VAROVÁNÍ: Databáze byla uzamčena kvůli údržbě, takže nebudete moci uložit své změny. Můžete si okopírovat text do souboru a uložit ho na později.'''
Správce serveru, který databázi zamkl, poskytl toto zdůvodnění: $1",
-'protectedpagewarning' => "'''Varování:''' Tato stránka byla zamčena, takže ji mohou editovat pouze správci.",
-'semiprotectedpagewarning' => '<strong>Poznámka:</strong> Tato stránka byla zamčena, takže ji mohou editovat pouze registrovaní uživatelé.',
+'protectedpagewarning' => "'''Varování: Tato stránka byla zamčena, takže ji mohou editovat pouze správci.'''
+Níže je pro přehled zobrazen nejnovější protokolovací záznam:",
+'semiprotectedpagewarning' => "'''Poznámka:''' Tato stránka byla zamčena, takže ji mohou editovat pouze registrovaní uživatelé.
+Níže je pro přehled zobrazen nejnovější protokolovací záznam:",
'cascadeprotectedwarning' => "'''Varování:''' Tato stránka byla zamčena, takže ji mohou editovat pouze správci. Je vložena na následující, kaskádním zámkem {{PLURAL:$1|zamčenou, stránku|zamčené, stránky|zamčené, stránky}}:",
-'titleprotectedwarning' => "'''VAROVÁNÍ: Tato stránka byla uzamčena, takže k jejímu založení jsou potřeba [[Special:ListGroupRights|zvláštní oprávnění]].'''",
-'templatesused' => 'Šablony používané na této stránce:',
-'templatesusedpreview' => 'Šablony používané v tomto náhledu:',
-'templatesusedsection' => 'Šablony používané v této části stránky:',
+'titleprotectedwarning' => "'''Varování: Tato stránka byla uzamčena, takže k jejímu založení jsou potřeba [[Special:ListGroupRights|zvláštní oprávnění]].'''
+Níže je pro přehled zobrazen nejnovější protokolovací záznam:",
+'templatesused' => '{{PLURAL:$1|Šablona použitá|Šablony použité}} na této stránce:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablona použitá|Šablony použité}} v tomto náhledu:',
+'templatesusedsection' => '{{PLURAL:$1|Šablona použitá|Šablony použité}} v této části stránky:',
'template-protected' => '(zamčena)',
'template-semiprotected' => '(polozamčena)',
'hiddencategories' => 'Tato stránka je zařazena {{PLURAL:$1|v jedné skryté kategorii|ve $1 skrytých kategoriích|v $1 skrytých kategoriích}}:',
@@ -945,16 +992,18 @@ Správce serveru, který databázi zamkl, poskytl toto zdůvodnění: $1",
'nocreatetext' => 'Na {{grammar:6sg|{{SITENAME}}}} je možnost vytváření nových stránek omezena.
Můžete se vrátit a editovat již existující stránku, nebo [[Special:UserLogin|se přihlásit či se registrovat]].',
'nocreate-loggedin' => 'Nemáte povoleno zakládat nové stránky.',
+'sectioneditnotsupported-title' => 'Editace sekcí není podporována',
+'sectioneditnotsupported-text' => 'Na této editační stránce není podporována editace jedné sekce.',
'permissionserrors' => 'Chyba povolení',
'permissionserrorstext' => 'Nemáte povoleno toto provést z {{PLURAL:$1|následujícího důvodu|následujících důvodů|následujících důvodů}}:',
'permissionserrorstext-withaction' => 'Nemáte oprávnění „$2“. {{PLURAL:$1|Důvod:|Důvody:}}',
-'recreate-deleted-warn' => "'''Pozor: Pokoušíte se založit stránku, která již byla smazána.'''
+'recreate-moveddeleted-warn' => "'''Upozornění: Pokoušíte se znovuzaložit stránku, která byla v minulosti smazána.'''
-Ujistěte se, že je vhodné pokračovat v editaci stránky.
-Níže vidíte výpis z knihy smazaných stránek pro tuto stránku:",
-'deleted-notice' => 'Tato stránka byla smazána.
-Podrobnosti lze zjistit z níže uvedeného výpisu knihy smazaných stránek.',
-'deletelog-fulllog' => 'Celá kniha smazaných stránek',
+Zvažte, zda je vhodné v editaci této stránky pokračovat.
+Níže vidíte soupis přesunů a smazání této stránky:",
+'moveddeleted-notice' => 'Tato stránka byla smazána.
+Podrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených přesunů a smazání této stránky.',
+'log-fulllog' => 'Zobrazit všechny záznamy',
'edit-hook-aborted' => 'Editace byla zrušena přípojným bodem bez bližšího vysvětlení.',
'edit-gone-missing' => 'Stránku se nepodařilo aktualizovat.
Zřejmě byla smazána.',
@@ -975,6 +1024,7 @@ Tyto argumenty byly vynechány.',
'post-expand-template-argument-category' => 'Stránky obsahující vynechané argumenty šablon',
'parser-template-loop-warning' => 'Nalezena smyčka šablon: [[$1]]',
'parser-template-recursion-depth-warning' => 'Překročen limit hloubky rekurzivního vkládání šablon ($1)',
+'language-converter-depth-warning' => 'Překročen limit vnoření u jazykové konverze ($1)',
# "Undo" feature
'undo-success' => 'Editace může být zrušena. Zkontrolujte a pak potvrďte změny zobrazené níže.',
@@ -994,7 +1044,7 @@ $3 uvádí toto zdůvodnění: ''$2''",
'currentrev' => 'Aktuální verze',
'currentrev-asof' => 'Aktuální verze z $1',
'revisionasof' => 'Verze z $1',
-'revision-info' => 'Verze z $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Verze z $1; $2',
'previousrevision' => '← Starší verze',
'nextrevision' => 'Novější verze →',
'currentrevisionlink' => 'zobrazit aktuální verzi',
@@ -1005,7 +1055,7 @@ $3 uvádí toto zdůvodnění: ''$2''",
'page_last' => 'poslední',
'histlegend' => '(teď) = rozdíly oproti nynější verzi, (předchozí) = rozdíly oproti předchozí verzi, <b>m</b> = malá editace',
'history-fieldset-title' => 'Procházení historie',
-'deletedrev' => '[smazáno]',
+'history-show-deleted' => 'Pouze smazané',
'histfirst' => 'Nejstarší',
'histlast' => 'Nejnovější',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajty|$1 bajtů}})',
@@ -1014,72 +1064,116 @@ $3 uvádí toto zdůvodnění: ''$2''",
# Revision feed
'history-feed-title' => 'Historie editací',
'history-feed-description' => 'Historie editací této stránky',
-'history-feed-item-nocomment' => '$1 v $2', # user at time
+'history-feed-item-nocomment' => '$1 v $2',
'history-feed-empty' => 'Požadovaná stránka neexistuje.
Mohla být smazána či přejmenována.
Zkuste [[Special:Search|hledání]].',
# Revision deletion
-'rev-deleted-comment' => '(komentář odstraněn)',
-'rev-deleted-user' => '(uživatelské jméno odstraněno)',
-'rev-deleted-event' => '(záznam odstraněn)',
-'rev-deleted-text-permission' => "Tato revize byla '''smazána'''.
-Podrobnosti mohou být uvedeny v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
-'rev-deleted-text-view' => "Tato revize byla '''smazána'''.
-Jako správce si ji můžete prohlédnout; podrobnosti mohou být uvedeny v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
-'rev-deleted-no-diff' => "Tento rozdíl si nemůžete prohlédnout, protože jedna z&nbsp;revizí byla '''smazána'''.
-Podrobnosti mohou být uvedeny v&nbsp;[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
-'rev-deleted-unhide-diff' => "Jedna z revizí k tomuto porovnání byla '''smazána'''.
-Podrobnosti mohou být uvedeny v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].
+'rev-deleted-comment' => '(komentář odstraněn)',
+'rev-deleted-user' => '(uživatelské jméno odstraněno)',
+'rev-deleted-event' => '(záznam odstraněn)',
+'rev-deleted-user-contribs' => '[uživatelské jméno nebo IP adresa odstraněny – editace v příspěvcích skryta]',
+'rev-deleted-text-permission' => "Tato revize byla '''smazána'''.
+Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+'rev-deleted-text-unhide' => "Tato revize byla '''smazána'''.
+Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].
+Jako správce si však můžete [$1 tuto revizi prohlédnout], pokud chcete.",
+'rev-suppressed-text-unhide' => "Tato revize byla '''utajena'''.
+Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} záznamu utajení].
+Jako správce si však můžete [$1 tuto revizi prohlédnout], pokud chcete.",
+'rev-deleted-text-view' => "Tato revize byla '''smazána'''.
+Jako správce si ji můžete prohlédnout; podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+'rev-suppressed-text-view' => "Tato revize byla '''utajena'''.
+Jako správce si ji můžete prohlédnout; podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} záznamu utajení].",
+'rev-deleted-no-diff' => "Tento rozdíl si nemůžete prohlédnout, protože jedna z&nbsp;revizí byla '''smazána'''.
+Podrobnosti mohou být uvedeny v&nbsp;[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+'rev-suppressed-no-diff' => "Tento rozdíl si nemůžete prohlédnout, protože jedna z revizí byla '''smazána'''.",
+'rev-deleted-unhide-diff' => "Jedna z revizí k tomuto porovnání byla '''smazána'''.
+Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].
Jako správce si však můžete [$1 tento rozdíl prohlédnout], pokud chcete.",
-'rev-delundel' => 'skrýt/zobrazit',
-'revisiondelete' => 'Smazat/obnovit revize',
-'revdelete-nooldid-title' => 'Nezadána revize',
-'revdelete-nooldid-text' => 'Nezvolili jste revize, na které chcete tuto funkci použít.',
-'revdelete-nologtype-title' => 'Nebyl určen typ protokolu',
-'revdelete-nologtype-text' => '{{GENDER:|Neurčil|Neurčila|Neurčili}} jste knihu protokolovacích záznamů, na které se má operace provést.',
-'revdelete-toomanytargets-title' => 'Příliš mnoho cílů',
-'revdelete-toomanytargets-text' => 'Určili jste příliš mnoho cílů, na kterých se má tato operace provést.',
-'revdelete-nologid-title' => 'Neplatný protokolovací záznam',
-'revdelete-nologid-text' => 'Buď jste nezadali cílový záznam v protokolu nebo zadaný záznam neexistuje.',
-'revdelete-selected' => "'''{{PLURAL:$2|Vybraná|Vybrané}} revize stránky [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Vybraná protokolovaná událost|Vybrané protokolované události}}:'''",
-'revdelete-text' => "'''Smazané verze a události budou nadále zobrazeny v historii stránky a protokolovacích záznamech, ale některé jejich části nebudou veřejně dostupné.'''
-
+'rev-suppressed-unhide-diff' => "Jedna z revizí k tomuto porovnání byla '''utajena'''.
+Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} záznamu utajení].
+Jako správce si však můžete [$1 tento rozdíl prohlédnout], pokud chcete.",
+'rev-deleted-diff-view' => "Jedna z revizí k tomuto porovnání byla '''smazána'''.
+Jako správce si můžete tento rozdíl prohlédnout; podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+'rev-suppressed-diff-view' => "Jedna z revizí k tomuto porovnání byla '''utajena'''.
+Jako správce si můžete tento rozdíl prohlédnout; podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
+'rev-delundel' => 'skrýt/zobrazit',
+'rev-showdeleted' => 'zobrazit',
+'revisiondelete' => 'Smazat/obnovit revize',
+'revdelete-nooldid-title' => 'Nezadána revize',
+'revdelete-nooldid-text' => 'Nezvolili jste revize, na které chcete tuto funkci použít.',
+'revdelete-nologtype-title' => 'Nebyl určen typ protokolu',
+'revdelete-nologtype-text' => '{{GENDER:|Neurčil|Neurčila|Neurčili}} jste knihu protokolovacích záznamů, na které se má operace provést.',
+'revdelete-nologid-title' => 'Neplatný protokolovací záznam',
+'revdelete-nologid-text' => 'Buď jste nezadali cílový záznam v protokolu nebo zadaný záznam neexistuje.',
+'revdelete-no-file' => 'Uvedený soubor neexistuje.',
+'revdelete-show-file-confirm' => 'Určitě si chcete prohlédnout smazanou revizi souboru „<nowiki>$1</nowiki>“ z $2, $3?',
+'revdelete-show-file-submit' => 'Ano',
+'revdelete-selected' => "'''{{PLURAL:$2|Vybraná|Vybrané}} revize stránky [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Vybraná protokolovaná událost|Vybrané protokolované události}}:'''",
+'revdelete-text' => "'''Smazané verze a události budou nadále zobrazeny v historii stránky a protokolovacích záznamech, ale některé jejich části nebudou veřejně dostupné.'''
Ostatní správci {{GRAMMAR:2sg|{{SITENAME}}}} si budou moci skrytý obsah prohlížet a pomocí stejného rozhraní jej také obnovit,
-pokud nebyla nastavena další omezení.
-Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].",
-'revdelete-suppress-text' => "Utajování by se mělo používat '''pouze''' v následujících případech:
+pokud nebyla nastavena další omezení.",
+'revdelete-confirm' => 'Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].',
+'revdelete-suppress-text' => "Utajování by se mělo používat '''pouze''' v následujících případech:
* Potenciálně pomlouvačné informace
* Nevhodné osobní údaje
*: ''adresy bydliště a telefonní čísla, rodná čísla apod.''",
-'revdelete-legend' => 'Nastavit omezení k revizi',
-'revdelete-hide-text' => 'Skrýt text revize',
-'revdelete-hide-name' => 'Skrýt událost a cíl',
-'revdelete-hide-comment' => 'Skrýt editační komentář',
-'revdelete-hide-user' => 'Skrýt uživatelské jméno/IP adresu',
-'revdelete-hide-restricted' => 'Utajit data i před správci',
-'revdelete-suppress' => 'Utajit data i před správci',
-'revdelete-hide-image' => 'Skrýt obsah souboru',
-'revdelete-unsuppress' => 'Odstranit omezení na vrácené verze',
-'revdelete-log' => 'Důvod:',
-'revdelete-submit' => 'Aplikovat nastavení',
-'revdelete-logentry' => 'změnil viditelnost revizí u [[$1]]',
-'logdelete-logentry' => 'mění viditelnost události [[$1]]',
-'revdelete-success' => "'''Viditelnost revize úspěšně nastavena.'''",
-'logdelete-success' => "'''Viditelnost události úspěšně nastavena.'''",
-'revdel-restore' => 'Změnit viditelnost',
-'pagehist' => 'Historie stránky',
-'deletedhist' => 'Smazaná historie',
-'revdelete-content' => 'obsah',
-'revdelete-summary' => 'shrnutí editace',
-'revdelete-uname' => 'uživatelské jméno',
-'revdelete-restricted' => 'omezení správců použito',
-'revdelete-unrestricted' => 'omezení správců odstraněno',
-'revdelete-hid' => 'skryl $1',
-'revdelete-unhid' => 'odkryl $1',
-'revdelete-log-message' => '$1 $2 reviz{{PLURAL:$2|i|e|í}}',
-'logdelete-log-message' => '$1 $2 událost{{PLURAL:$2||i|í}}',
+'revdelete-legend' => 'Nastavit omezení k revizi',
+'revdelete-hide-text' => 'Skrýt text revize',
+'revdelete-hide-image' => 'Skrýt obsah souboru',
+'revdelete-hide-name' => 'Skrýt událost a cíl',
+'revdelete-hide-comment' => 'Skrýt editační komentář',
+'revdelete-hide-user' => 'Skrýt uživatelské jméno/IP adresu',
+'revdelete-hide-restricted' => 'Utajit data i před správci',
+'revdelete-radio-same' => '(neměnit)',
+'revdelete-radio-set' => 'Ano',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Utajit data i před správci',
+'revdelete-unsuppress' => 'Odstranit omezení na vrácené verze',
+'revdelete-log' => 'Důvod:',
+'revdelete-submit' => 'Aplikovat na {{PLURAL:$1|zvolenou revizi|zvolené revize}}',
+'revdelete-logentry' => 'změnil viditelnost revizí u [[$1]]',
+'logdelete-logentry' => 'mění viditelnost události [[$1]]',
+'revdelete-success' => "'''Viditelnost revize úspěšně nastavena.'''",
+'revdelete-failure' => "'''Nepodařilo se nastavit viditelnost revize:'''
+$1",
+'logdelete-success' => "'''Viditelnost události úspěšně nastavena.'''",
+'logdelete-failure' => "'''Nepodařilo se nastavit viditelnost protokolu:'''
+$1",
+'revdel-restore' => 'Změnit viditelnost',
+'pagehist' => 'Historie stránky',
+'deletedhist' => 'Smazaná historie',
+'revdelete-content' => 'obsah',
+'revdelete-summary' => 'shrnutí editace',
+'revdelete-uname' => 'uživatelské jméno',
+'revdelete-restricted' => 'omezení správců použito',
+'revdelete-unrestricted' => 'omezení správců odstraněno',
+'revdelete-hid' => 'skryl $1',
+'revdelete-unhid' => 'odkryl $1',
+'revdelete-log-message' => '$1 $2 reviz{{PLURAL:$2|i|e|í}}',
+'logdelete-log-message' => '$1 $2 událost{{PLURAL:$2||i|í}}',
+'revdelete-hide-current' => 'Chyba při skrývání položky z $1 $2: jedná se o současnou revizi.
+Tu nelze skrýt.',
+'revdelete-show-no-access' => 'Chyba při zobrazování položky z $1 $2: je vyžadováno zvláštní oprávnění.
+Nemáte k ní přístup.',
+'revdelete-modify-no-access' => 'Chyba při změně položky z $1 $2: je vyžadováno zvláštní oprávnění.
+Nemáte k ní přístup.',
+'revdelete-modify-missing' => 'Chyba při změně položky s ID $1: položka nenalezena v databázi!',
+'revdelete-no-change' => "'''Upozornění:''' položka z $1 $2 už měla viditelnost nastavenou tak, jak bylo požadováno.",
+'revdelete-concurrent-change' => 'Chyba při změně položky z $1 $2: zdá se, že mezitím její stav změnil někdo jiný.
+Prohlédněte si protokolovací záznamy.',
+'revdelete-only-restricted' => 'Chyba skrývání položky z $2 $1: Nemůžete položky pouze skrýt před správci, aniž byste současně vybrali i některou z dalších možností utajení.',
+'revdelete-reason-dropdown' => '*Obvyklé důvody smazání
+** Porušení autorských práv
+** Nevhodné osobní údaje
+** Potenciálně pomlouvačné údaje',
+'revdelete-otherreason' => 'Jiný/další důvod:',
+'revdelete-reasonotherlist' => 'Jiný důvod',
+'revdelete-edit-reasonlist' => 'Editovat důvody smazání',
+'revdelete-offender' => 'Autor revize:',
# Suppression log
'suppressionlog' => 'Záznam utajení',
@@ -1115,67 +1209,13 @@ Ujistěte se, že tato změna udrží souvislost a posloupnost verzí v historii
'mergelogpagetext' => 'Níže je seznam nejnovějších sloučení historie jedné stránky s jinou.',
# Diffs
-'history-title' => 'Historie verzí stránky „$1“',
-'difference' => '(Rozdíly mezi verzemi)',
-'lineno' => 'Řádka $1:',
-'compareselectedversions' => 'Porovnat vybrané verze',
-'visualcomparison' => 'Porovnání vzhledu',
-'wikicodecomparison' => 'Porovnání wikitextu',
-'editundo' => 'zrušit editaci',
-'diff-multi' => '({{PLURAL:$1|Není zobrazena jedna mezilehlá verze|Nejsou zobrazeny $1 mezilehlé verze|Není zobrazeno $1 mezilehlých verzí}}.)',
-'diff-movedto' => 'změněno na $1',
-'diff-styleadded' => 'přidán styl $1',
-'diff-added' => 'přidáno $1',
-'diff-changedto' => 'změněno na $1',
-'diff-movedoutof' => 'změněno z $1',
-'diff-styleremoved' => 'odstraněn styl $1',
-'diff-removed' => 'odstraněno $1',
-'diff-changedfrom' => 'změněno z $1',
-'diff-src' => 'zdroj',
-'diff-withdestination' => 'směřující na $1',
-'diff-with' => '&#32;s atributy $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'šířka',
-'diff-height' => 'výška',
-'diff-p' => "'''odstavec'''",
-'diff-blockquote' => "'''bloková citace'''",
-'diff-h1' => "'''nadpis (1. úroveň)'''",
-'diff-h2' => "'''nadpis (2. úroveň)'''",
-'diff-h3' => "'''nadpis (3. úroveň)'''",
-'diff-h4' => "'''nadpis (4. úroveň)'''",
-'diff-h5' => "'''nadpis (5. úroveň)'''",
-'diff-pre' => "'''předformátovaný text'''",
-'diff-div' => "'''blokový element'''",
-'diff-ul' => "'''nečíslovaný seznam'''",
-'diff-ol' => "'''číslovaný seznam'''",
-'diff-li' => "'''položka seznamu'''",
-'diff-table' => "'''tabulka'''",
-'diff-tbody' => "'''tělo tabulky'''",
-'diff-tr' => "'''řádek'''",
-'diff-td' => "'''buňka'''",
-'diff-th' => "'''hlavička'''",
-'diff-br' => "'''zalomení'''",
-'diff-hr' => "'''vodorovná čára'''",
-'diff-code' => "'''blok zdrojového textu'''",
-'diff-dl' => "'''seznam definic'''",
-'diff-dt' => "'''definovaný pojem'''",
-'diff-dd' => "'''definice'''",
-'diff-input' => "'''vstupní pole'''",
-'diff-form' => "'''formulář'''",
-'diff-img' => "'''obrázek'''",
-'diff-span' => "'''řádkový element'''",
-'diff-a' => "'''odkaz'''",
-'diff-i' => "'''kurzíva'''",
-'diff-b' => "'''ztučnění'''",
-'diff-strong' => "'''zvýraznění zesílením'''",
-'diff-em' => "'''zvýraznění náklonem'''",
-'diff-font' => "'''písmo'''",
-'diff-big' => "'''zvětšení'''",
-'diff-del' => "'''smazané'''",
-'diff-tt' => "'''pevná šířka'''",
-'diff-sub' => "'''dolní index'''",
-'diff-sup' => "'''horní index'''",
-'diff-strike' => "'''přeškrtnutí'''",
+'history-title' => 'Historie verzí stránky „$1“',
+'difference' => '(Rozdíly mezi verzemi)',
+'lineno' => 'Řádka $1:',
+'compareselectedversions' => 'Porovnat vybrané verze',
+'showhideselectedversions' => 'Zobrazit/skrýt vybrané revize',
+'editundo' => 'zrušit editaci',
+'diff-multi' => '({{PLURAL:$1|Není zobrazena jedna mezilehlá verze|Nejsou zobrazeny $1 mezilehlé verze|Není zobrazeno $1 mezilehlých verzí}}.)',
# Search results
'searchresults' => 'Výsledky hledání',
@@ -1183,28 +1223,25 @@ Ujistěte se, že tato změna udrží souvislost a posloupnost verzí v historii
'searchresulttext' => 'Pro více informací o tom, jak hledat na {{grammar:6sg|{{SITENAME}}}}, se podívejte do [[{{MediaWiki:Helppage}}|nápovědy]].',
'searchsubtitle' => "Hledáno '''[[:$1]]''' ([[Special:Prefixindex/$1|seznam stránek začínajících „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|seznam stránek odkazujících na „$1“]])",
'searchsubtitleinvalid' => 'Hledáno „$1“',
-'noexactmatch' => "'''Neexistuje žádná stránka s názvem „$1“.''' Můžete ji však [[:$1|vytvořit]].",
-'noexactmatch-nocreate' => "'''Neexistuje žádná stránka s názvem „$1“.'''",
'toomanymatches' => 'Požadavku odpovídá příliš mnoho záznamů, zkuste jiný dotaz.',
'titlematches' => 'Stránky s odpovídajícím názvem',
'notitlematches' => 'Žádné stránky názvem neodpovídají.',
'textmatches' => 'Stránky s odpovídajícím textem',
'notextmatches' => 'Žádné stránky textem neodpovídají.',
-'prevn' => '$1 předchozích',
-'nextn' => '$1 následujících',
+'prevn' => '$1 {{PLURAL:$1|předchozí|předchozí|předchozích}}',
+'nextn' => '$1 {{PLURAL:$1|následující|následující|následujících}}',
'prevn-title' => '{{PLURAL:$1|Předchozí výsledek|Předchozí $1 výsledky|Předchozích $1 výsledků}}',
'nextn-title' => '{{PLURAL:$1|Následující výsledek|Následující $1 výsledky|Následujících $1 výsledků}}',
'shown-title' => 'Zobrazit $1 {{PLURAL:$1|výsledek|výsledky|výsledků}} na stránku',
-'viewprevnext' => 'Ukázat ($1) ($2) ($3)',
+'viewprevnext' => 'Ukázat ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Možnosti hledání',
'searchmenu-exists' => "*Stránka '''[[$1]]'''",
'searchmenu-new' => "'''Vytvořte na této wiki stránku „[[:$1]]“!'''",
'searchhelp-url' => 'Help:Obsah',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zobrazit stránky, jejichž název začíná „$1“]]',
'searchprofile-articles' => 'Články',
-'searchprofile-articles-and-proj' => 'Obsahové i projektové stránky',
-'searchprofile-project' => 'Projektové stránky',
-'searchprofile-images' => 'Soubory',
+'searchprofile-project' => 'Nápověda a projektové stránky',
+'searchprofile-images' => 'Multimédia',
'searchprofile-everything' => 'Všechno',
'searchprofile-advanced' => 'Rozšířené',
'searchprofile-articles-tooltip' => 'Prohledávat: $1',
@@ -1212,8 +1249,6 @@ Ujistěte se, že tato změna udrží souvislost a posloupnost verzí v historii
'searchprofile-images-tooltip' => 'Hledat obrázky a další soubory',
'searchprofile-everything-tooltip' => 'Prohledávat veškerý obsah (včetně diskusních stránek)',
'searchprofile-advanced-tooltip' => 'Nastavit jmenné prostory, ve kterých se má hledat',
-'prefs-search-nsdefault' => 'Používat implicitní nastavení:',
-'prefs-search-nscustom' => 'Prohledávat tyto jmenné prostory:',
'search-result-size' => '$1 ({{PLURAL:$2|1 slovo|$2 slova|$2 slov}})',
'search-result-score' => 'Relevantnost: $1 %',
'search-redirect' => '(přesměrování $1)',
@@ -1226,11 +1261,12 @@ Ujistěte se, že tato změna udrží souvislost a posloupnost verzí v historii
'search-mwsuggest-disabled' => 'bez návrhů',
'search-relatedarticle' => 'Související',
'mwsuggest-disable' => 'Vypnout ajaxové napovídání',
+'searcheverything-enable' => 'Hledat ve všech jmenných prostorech',
'searchrelated' => 'související',
'searchall' => 'vše',
'showingresults' => 'Zobrazuji <strong>$1</strong> {{PLURAL:$1|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
'showingresultsnum' => 'Zobrazuji <strong>$3</strong> {{PLURAL:$3|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
-'showingresultstotal' => "{{PLURAL:$4|Zobrazuje se výsledek '''$1''' z&nbsp;'''$3'''|Zobrazují se výsledky '''$1–$2''' z&nbsp;'''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Výsledek '''$1''' z '''$3'''|Výsledky '''$1–$2''' z '''$3'''}} pro '''$4'''",
'nonefound' => "'''Poznámka''': Standardně se hledá jen v některých jmenných prostorech.
Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně diskusí, šablon atd.), případně místo toho napište název požadovaného jmenného prostoru.",
'search-nonefound' => 'Na váš dotaz nebyly nalezeny žádné výsledky.',
@@ -1239,111 +1275,149 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
'powersearch-ns' => 'Hledat ve jmenných prostorech:',
'powersearch-redir' => 'Vypsat přesměrování',
'powersearch-field' => 'Vyhledat',
+'powersearch-togglelabel' => 'Zaškrtnout:',
+'powersearch-toggleall' => 'Všechno',
+'powersearch-togglenone' => 'Nic',
'search-external' => 'Externí hledání',
'searchdisabled' => '<p>Omlouváme se. Plnotextové vyhledávání je dočasně nedostupné. Zatím můžete zkusit vyhledávání Googlem; je ale možné, že jeho výsledky nemusí být aktuální.</p>',
+# Quickbar
+'qbsettings' => 'Nastavení lišty nástrojů',
+'qbsettings-none' => 'Žádný',
+'qbsettings-fixedleft' => 'Leží vlevo',
+'qbsettings-fixedright' => 'Leží vpravo',
+'qbsettings-floatingleft' => 'Plovoucí vlevo',
+'qbsettings-floatingright' => 'Plovoucí vpravo',
+
# Preferences page
-'preferences' => 'Nastavení',
-'mypreferences' => 'Nastavení',
-'prefs-edits' => 'Počet editací:',
-'prefsnologin' => 'Nejste přihlášen(a)!',
-'prefsnologintext' => 'Pokud chcete měnit uživatelská nastavení, musíte se <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} přihlásit]</span>.',
-'prefsreset' => 'Nastavení vráceno.',
-'qbsettings' => 'Nastavení lišty nástrojů',
-'qbsettings-none' => 'Žádný',
-'qbsettings-fixedleft' => 'Leží vlevo',
-'qbsettings-fixedright' => 'Leží vpravo',
-'qbsettings-floatingleft' => 'Plovoucí vlevo',
-'qbsettings-floatingright' => 'Plovoucí vpravo',
-'changepassword' => 'Změna hesla',
-'skin' => 'Vzhled',
-'skin-preview' => 'Náhled',
-'math' => 'Matematika',
-'dateformat' => 'Formát data',
-'datedefault' => 'Implicitní',
-'datetime' => 'Datum a čas',
-'math_failure' => 'Nelze pochopit',
-'math_unknown_error' => 'neznámá chyba',
-'math_unknown_function' => 'neznámá funkce',
-'math_lexing_error' => 'chyba při lexingu',
-'math_syntax_error' => 'syntaktická chyba',
-'math_image_error' => 'Selhala konverze do PNG; zkontrolujte správnou instalaci latexu, dvips, gs a convertu',
-'math_bad_tmpdir' => 'Nelze zapsat nebo vytvořit dočasný adresář pro matematiku',
-'math_bad_output' => 'Nelze zapsat nebo vytvořit adresář pro výstup matematiky',
-'math_notexvc' => 'Chybí spustitelný texvc; podívejte se prosím do math/README na konfiguraci.',
-'prefs-personal' => 'Údaje o uživateli',
-'prefs-rc' => 'Poslední změny',
-'prefs-watchlist' => 'Sledované stránky',
-'prefs-watchlist-days' => 'Počet dní zobrazených ve sledovaných stránkách:',
-'prefs-watchlist-days-max' => '(maximálně 7 dní)',
-'prefs-watchlist-edits' => 'Počet editací zobrazených ve zdokonalených sledovaných stránkách:',
-'prefs-watchlist-edits-max' => '(maximum: 1000)',
-'prefs-misc' => 'Různé',
-'prefs-resetpass' => 'Změnit heslo',
-'saveprefs' => 'Uložit nastavení',
-'resetprefs' => 'Vrátit původní nastavení',
-'restoreprefs' => 'Obnovit všechna výchozí nastavení',
-'textboxsize' => 'Editace',
-'prefs-edit-boxsize' => 'Velikost editačního okna:',
-'rows' => 'Řádky',
-'columns' => 'Sloupce',
-'searchresultshead' => 'Vyhledávání',
-'resultsperpage' => 'Počet výsledků na jedné stránce',
-'contextlines' => 'Počet řádek zobrazených z každé nalezené stránky',
-'contextchars' => 'Počet znaků kontextu na každé řádce',
-'stub-threshold' => 'Limit pro formátování odkazu jako <a href="#" class="stub">pahýl</a> (v bajtech):',
-'recentchangesdays' => 'Počet dní zobrazených v posledních změnách:',
-'recentchangesdays-max' => '(maximálně $1 {{PLURAL:$1|den|dny|dní}})',
-'recentchangescount' => 'Počet záznamů implicitně zobrazených v posledních změnách, historii a knihách záznamů:',
-'savedprefs' => 'Vaše nastavení bylo uloženo.',
-'timezonelegend' => 'Časové pásmo:',
-'timezonetext' => '¹O kolik se váš místní čas liší od času na serveru (UTC).',
-'localtime' => 'Místní čas:',
-'timezoneselect' => 'Časové pásmo:',
-'timezoneuseserverdefault' => 'Použít nastavení serveru',
-'timezoneuseoffset' => 'Jiné (zadejte posun)',
-'timezoneoffset' => 'Posun¹:',
-'servertime' => 'Čas na serveru:',
-'guesstimezone' => 'Načíst z prohlížeče',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktida',
-'timezoneregion-arctic' => 'Arktida',
-'timezoneregion-asia' => 'Asie',
-'timezoneregion-atlantic' => 'Atlantský oceán',
-'timezoneregion-australia' => 'Austrálie',
-'timezoneregion-europe' => 'Evropa',
-'timezoneregion-indian' => 'Indický oceán',
-'timezoneregion-pacific' => 'Tichý oceán',
-'allowemail' => 'Povolit e-mail od ostatních uživatelů',
-'prefs-searchoptions' => 'Možnosti vyhledávání',
-'prefs-namespaces' => 'Jmenné prostory',
-'defaultns' => 'Implicitně hledat v těchto jmenných prostorech:',
-'default' => 'implicitní',
-'files' => 'Soubory',
-'prefs-custom-css' => 'Vlastní CSS',
-'prefs-custom-js' => 'Vlastní JS',
+'preferences' => 'Nastavení',
+'mypreferences' => 'Nastavení',
+'prefs-edits' => 'Počet editací:',
+'prefsnologin' => 'Nejste přihlášen(a)!',
+'prefsnologintext' => 'Pokud chcete měnit uživatelská nastavení, musíte se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přihlásit]</span>.',
+'changepassword' => 'Změna hesla',
+'prefs-skin' => 'Vzhled',
+'skin-preview' => 'Náhled',
+'prefs-math' => 'Matematika',
+'datedefault' => 'Implicitní',
+'prefs-datetime' => 'Datum a čas',
+'prefs-personal' => 'Údaje o uživateli',
+'prefs-rc' => 'Poslední změny',
+'prefs-watchlist' => 'Sledované stránky',
+'prefs-watchlist-days' => 'Počet dní zobrazených ve sledovaných stránkách:',
+'prefs-watchlist-days-max' => '(maximálně 7 dní)',
+'prefs-watchlist-edits' => 'Počet editací zobrazených ve zdokonalených sledovaných stránkách:',
+'prefs-watchlist-edits-max' => '(maximum: 1000)',
+'prefs-watchlist-token' => 'Klíč k seznamu sledovaných stránek:',
+'prefs-misc' => 'Různé',
+'prefs-resetpass' => 'Změnit heslo',
+'prefs-email' => 'Nastavení e-mailu',
+'prefs-rendering' => 'Vzhled',
+'saveprefs' => 'Uložit nastavení',
+'resetprefs' => 'Vrátit původní nastavení',
+'restoreprefs' => 'Obnovit všechna výchozí nastavení',
+'prefs-editing' => 'Editace',
+'prefs-edit-boxsize' => 'Velikost editačního okna:',
+'rows' => 'Řádky',
+'columns' => 'Sloupce',
+'searchresultshead' => 'Vyhledávání',
+'resultsperpage' => 'Počet výsledků na jedné stránce',
+'contextlines' => 'Počet řádek zobrazených z každé nalezené stránky',
+'contextchars' => 'Počet znaků kontextu na každé řádce',
+'stub-threshold' => 'Limit pro formátování odkazu jako <a href="#" class="stub">pahýl</a> (v bajtech):',
+'recentchangesdays' => 'Počet dní zobrazených v posledních změnách:',
+'recentchangesdays-max' => '(maximálně $1 {{PLURAL:$1|den|dny|dní}})',
+'recentchangescount' => 'Počet implicitně zobrazovaných záznamů:',
+'prefs-help-recentchangescount' => 'Týká se posledních změn, historie stránek a protokolovacích záznamů.',
+'prefs-help-watchlist-token' => 'Pokud do tohoto pole vyplníte tajný klíč, bude vytvořen RSS kanál vašich sledovaných stránek.
+Kdokoli, kdo bude tento klíč znát, pak bude moci váš seznam sledovaných stránek číst, takže dbejte na bezpečnost.
+Můžete použít tuto náhodně vygenerovanou hodnotu: $1',
+'savedprefs' => 'Vaše nastavení bylo uloženo.',
+'timezonelegend' => 'Časové pásmo:',
+'localtime' => 'Místní čas:',
+'timezoneuseserverdefault' => 'Použít nastavení serveru',
+'timezoneuseoffset' => 'Jiné (zadejte posun)',
+'timezoneoffset' => 'Posun¹:',
+'servertime' => 'Čas na serveru:',
+'guesstimezone' => 'Načíst z prohlížeče',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktida',
+'timezoneregion-arctic' => 'Arktida',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-atlantic' => 'Atlantský oceán',
+'timezoneregion-australia' => 'Austrálie',
+'timezoneregion-europe' => 'Evropa',
+'timezoneregion-indian' => 'Indický oceán',
+'timezoneregion-pacific' => 'Tichý oceán',
+'allowemail' => 'Povolit e-mail od ostatních uživatelů',
+'prefs-searchoptions' => 'Možnosti vyhledávání',
+'prefs-namespaces' => 'Jmenné prostory',
+'defaultns' => 'Nebo hledat v těchto jmenných prostorech:',
+'default' => 'implicitní',
+'prefs-files' => 'Soubory',
+'prefs-custom-css' => 'Vlastní CSS',
+'prefs-custom-js' => 'Vlastní JS',
+'prefs-reset-intro' => 'Pomocí této stránky můžete všechna nastavení vrátit na implicitní hodnoty.
+Tuto operaci nelze vrátit zpět.',
+'prefs-emailconfirm-label' => 'Ověření e-mailu:',
+'prefs-textboxsize' => 'Velikost editačního okna',
+'youremail' => 'Vaše e-mailová adresa:',
+'username' => 'Uživatelské jméno:',
+'uid' => 'Uživatelské ID:',
+'prefs-memberingroups' => 'Člen {{PLURAL:$1|skupiny|skupin}}:',
+'prefs-registration' => 'Čas registrace:',
+'yourrealname' => 'Vaše skutečné jméno:',
+'yourlanguage' => 'Jazyk rozhraní:',
+'yourvariant' => 'Jazyková varianta',
+'yournick' => 'Podpis:',
+'prefs-help-signature' => 'Komentáře v diskusích by se měly podepisovat pomocí „<nowiki>~~~~</nowiki>“, což se změní na váš podpis a aktuální čas.',
+'badsig' => 'Chybný podpis, zkontrolujte syntaxi HTML.',
+'badsiglength' => 'Váš podpis je příliš dlouhý. Musí být kratší než $1 {{PLURAL:$1|znak|znaky|znaků}}.',
+'yourgender' => 'Pohlaví:',
+'gender-unknown' => 'Neurčeno',
+'gender-male' => 'Mužské',
+'gender-female' => 'Ženské',
+'prefs-help-gender' => 'Volitelné: používáno softwarem pro správné oslovování v závislosti na pohlaví. Tato informace je veřejná.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Skutečné jméno (volitelné): pokud ho zadáte, bude použito pro označení autorství vaší práce.',
+'prefs-help-email' => 'Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.
+Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat, aniž by byla vaše adresa prozrazena.',
+'prefs-help-email-required' => 'Je vyžadována e-mailová adresa.',
+'prefs-info' => 'Základní údaje',
+'prefs-i18n' => 'Lokalizace',
+'prefs-signature' => 'Podpis',
+'prefs-dateformat' => 'Formát data',
+'prefs-timeoffset' => 'Časový posun',
+'prefs-advancedediting' => 'Rozšířené možnosti',
+'prefs-advancedrc' => 'Rozšířené možnosti',
+'prefs-advancedrendering' => 'Rozšířené možnosti',
+'prefs-advancedsearchoptions' => 'Rozšířené možnosti',
+'prefs-advancedwatchlist' => 'Rozšířené možnosti',
+'prefs-display' => 'Nastavení vzhledu',
+'prefs-diffs' => 'Porovnání verzí',
# User rights
-'userrights' => 'Správa uživatelských skupin', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Spravovat uživatelské skupiny',
-'userrights-user-editname' => 'Zadejte uživatelské jméno:',
-'editusergroup' => 'Upravit uživatelské skupiny',
-'editinguser' => "Úprava práv uživatele '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Upravit uživatelské skupiny',
-'saveusergroups' => 'Uložit uživatelské skupiny',
-'userrights-groupsmember' => 'Člen skupin:',
-'userrights-groups-help' => 'Můžete měnit skupiny, do nichž je uživatel zařazen.
+'userrights' => 'Správa uživatelských skupin',
+'userrights-lookup-user' => 'Spravovat uživatelské skupiny',
+'userrights-user-editname' => 'Zadejte uživatelské jméno:',
+'editusergroup' => 'Upravit uživatelské skupiny',
+'editinguser' => "Úprava práv uživatele '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Upravit uživatelské skupiny',
+'saveusergroups' => 'Uložit uživatelské skupiny',
+'userrights-groupsmember' => 'Člen skupin:',
+'userrights-groupsmember-auto' => 'Automaticky člen skupin:',
+'userrights-groups-help' => 'Můžete měnit skupiny, do nichž je uživatel zařazen.
* Zaškrtnuté políčko znamená, že uživatel je v dané skupině.
* Nezaškrtnuté políčko značí, že uživatel v dané skupině není.
* Hvězdička (*) znamená, že nemůžete danou skupinu odstranit, jakmile ji přidáte, nebo naopak.',
-'userrights-reason' => 'Důvod:',
-'userrights-no-interwiki' => 'Nemáte povoleno měnit uživatelská práva na jiných wiki.',
-'userrights-nodatabase' => 'Databáze $1 neexistuje nebo není místní.',
-'userrights-nologin' => 'Musíte se [[Special:UserLogin|přihlásit]] k účtu správce, abyste mohli měnit uživatelská práva.',
-'userrights-notallowed' => 'Tento účet nemá povoleno měnit uživatelská práva.',
-'userrights-changeable-col' => 'Skupiny, které můžete měnit',
-'userrights-unchangeable-col' => 'Skupiny, které nemůžete měnit',
+'userrights-reason' => 'Důvod:',
+'userrights-no-interwiki' => 'Nemáte povoleno měnit uživatelská práva na jiných wiki.',
+'userrights-nodatabase' => 'Databáze $1 neexistuje nebo není místní.',
+'userrights-nologin' => 'Musíte se [[Special:UserLogin|přihlásit]] k účtu správce, abyste mohli měnit uživatelská práva.',
+'userrights-notallowed' => 'Tento účet nemá povoleno měnit uživatelská práva.',
+'userrights-changeable-col' => 'Skupiny, které můžete měnit',
+'userrights-unchangeable-col' => 'Skupiny, které nemůžete měnit',
# Groups
'group' => 'Skupina:',
@@ -1396,6 +1470,7 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
'right-bigdelete' => 'Mazání stránek s dlouhou historií',
'right-deleterevision' => 'Mazání a obnovování konkrétních revizí stránky',
'right-deletedhistory' => 'Zobrazování smazaných položek v historii bez odpovídajícího textu',
+'right-deletedtext' => 'Prohlížení smazaného textu a rozdílů mezi smazanými verzemi',
'right-browsearchive' => 'Vyhledávání ve smazaných stránkách',
'right-undelete' => 'Obnovování smazaných stránek',
'right-suppressrevision' => 'Prohlížení a obnovování revizí skrytých před správci',
@@ -1409,6 +1484,8 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
'right-editprotected' => 'Editace zamčených stránek (bez kaskádového zámku)',
'right-editinterface' => 'Editace zpráv uživatelského rozhraní',
'right-editusercssjs' => 'Editace CSS a JS souborů jiných uživatelů',
+'right-editusercss' => 'Editace CSS souborů jiných uživatelů',
+'right-edituserjs' => 'Editace JS souborů jiných uživatelů',
'right-rollback' => 'Rychlý revert úprav posledního uživatele editujícího danou stránku',
'right-markbotedits' => 'Označování revertů jako editace bota',
'right-noratelimit' => 'Imunita vůči rychlostním limitům',
@@ -1425,6 +1502,8 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
'right-siteadmin' => 'Zamykání a odemykání databáze',
'right-reset-passwords' => 'Nastavování hesel jiným uživatelům',
'right-override-export-depth' => 'Exportovat stránky včetně odkazovaných stránek až do hloubky 5',
+'right-versiondetail' => 'Prohlížení podrobných informací o verzích nainstalovaného software.',
+'right-sendemail' => 'Odesílání e-mailů ostatním uživatelům',
# User rights log
'rightslog' => 'Kniha práv uživatelů',
@@ -1474,6 +1553,15 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
'recentchanges-legend' => 'Možnosti posledních změn',
'recentchangestext' => 'Sledujte poslední změny na {{grammar:6sg|{{SITENAME}}}} na této stránce.',
'recentchanges-feed-description' => 'Na tomto kanále sledujte poslední změny na {{grammar:6sg|{{SITENAME}}}}.',
+'recentchanges-label-legend' => 'Legenda: $1',
+'recentchanges-legend-newpage' => '$1 – nová stránka',
+'recentchanges-label-newpage' => 'Touto editací byla založena nová stránka',
+'recentchanges-legend-minor' => '$1 – malá editace',
+'recentchanges-label-minor' => 'Toto je malá editace',
+'recentchanges-legend-bot' => '$1 – editace bota',
+'recentchanges-label-bot' => 'Tuto editaci provedl bot',
+'recentchanges-legend-unpatrolled' => '$1 – neprověřená editace',
+'recentchanges-label-unpatrolled' => 'Tato změna dosud nebyla prověřena',
'rcnote' => 'Níže {{plural:$1|je poslední|jsou poslední|je posledních}} <strong>$1</strong> {{plural:$1|změna|změny|změn}} za {{PLURAL:$2|poslední|poslední|posledních}} <strong>$2</strong> {{plural:$2|den|dny|dnů}} před $4, $5.',
'rcnotefrom' => 'Níže {{PLURAL:$1|je|jsou|je}} nejvýše <b>$1</b> {{PLURAL:$1|změna|změny|změn}} od <b>$2</b>.',
'rclistfrom' => 'Ukázat nové změny, počínaje od $1',
@@ -1501,6 +1589,8 @@ $3',
# Recent changes linked
'recentchangeslinked' => 'Související změny',
+'recentchangeslinked-feed' => 'Související změny',
+'recentchangeslinked-toolbox' => 'Související změny',
'recentchangeslinked-title' => 'Související změny pro stránku "$1"',
'recentchangeslinked-noresult' => 'V zadaném období nebyly na odkazovaných stránkách žádné změny.',
'recentchangeslinked-summary' => "Níže je seznam nedávných změn stránek odkazovaných ze zadané stránky (nebo patřících do dané kategorie). Vaše [[Special:Watchlist|sledované stránky]] jsou '''zvýrazněny'''.",
@@ -1510,8 +1600,8 @@ $3',
# Upload
'upload' => 'Načíst soubor',
'uploadbtn' => 'Načíst soubor',
-'reupload' => 'Načíst znovu',
'reuploaddesc' => 'Vrátit se k načtení.',
+'upload-tryagain' => 'Uložit upravený popis souboru',
'uploadnologin' => 'Nejste přihlášen(a)',
'uploadnologintext' => 'Pro načtení souboru se musíte [[Special:UserLogin|přihlásit]].',
'upload_directory_missing' => 'Adresář pro nahrávání souborů ($1) chybí a webový server ho nedokáže vytvořit.',
@@ -1541,6 +1631,7 @@ Pro vložení obrázku do stránky použijte jeden z následujících způsobů
'minlength1' => 'Jméno souboru musí mít alespoň jeden znak.',
'illegalfilename' => 'Název souboru "$1" obsahuje znaky, které nejsou povoleny v názvech stránek. Prosím přejmenujte soubor a zkuste jej nahrát znovu.',
'badfilename' => 'Jméno souboru bylo změněno na „$1“.',
+'filetype-mime-mismatch' => 'Přípona souboru neodpovídá jeho MIME typu.',
'filetype-badmime' => 'Není povoleno načítat soubory MIME typu „$1“.',
'filetype-bad-ie-mime' => 'Nelze načíst tento soubor, neboť Internet Explorer by ho považoval za „$1“, což je nedovolený a potenciálně nebezpečný typ souboru.',
'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{plural:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
@@ -1558,7 +1649,6 @@ Pokud tam chcete své shrnutí zobrazit, budete muset příslušnou stránku edi
* Jméno načítaného souboru: '''<tt>[[:$1]]</tt>'''
* Jméno existujícího souboru: '''<tt>[[:$2]]</tt>'''
Vyberte jiné jméno.",
-'fileexists-thumb' => "<center>'''Existující soubor:'''</center>",
'fileexists-thumbnail-yes' => "Tento soubor je zřejmě obrázek ve zmenšené velikosti ''(náhled)''. [[$1|thumb]]
Zkontrolujte soubor '''<tt>[[:$1]]</tt>'''.
Pokud je zmiňovaný soubor větší, ale jinak stejný, není potřeba zvlášť načítat jeho zmenšenou verzi.",
@@ -1573,6 +1663,7 @@ Pokud chcete přesto soubor načíst, vraťte se a zvolte jiný název.
'file-deleted-duplicate' => 'Identický soubor k tomuto ([[$1]]) byl již dříve smazán. Před tím, než soubor znovu nahrajete, byste měli zkontrolovat záznamy o předchozím smazání.',
'successfulupload' => 'Načtení úspěšně provedeno!',
'uploadwarning' => 'Varování',
+'uploadwarning-text' => 'Prosíme, upravte popis souboru níže a zkuste to znovu.',
'savefile' => 'Uložit soubor',
'uploadedimage' => 'načítá „[[$1]]“',
'overwroteimage' => 'načtena nová verze "[[$1]]"',
@@ -1580,11 +1671,14 @@ Pokud chcete přesto soubor načíst, vraťte se a zvolte jiný název.
'uploaddisabledtext' => 'Načítání souborů je vypnuto.',
'php-uploaddisabledtext' => 'V PHP je vypnuto načítání souborů. Prosím, zkontrolujte nastavení file_uploads.',
'uploadscripted' => 'Tento soubor obsahuje HTML nebo kód skriptu, který by mohl být prohlížečem chybně interpretován.',
-'uploadcorrupt' => 'Soubor je poškozen nebo nemá správnou příponu. Zkontrolujte prosím soubor a zkuste ho načíst znovu.',
'uploadvirus' => 'Tento soubor obsahuje virus! Podrobnosti: $1',
+'upload-source' => 'Zdrojový soubor',
'sourcefilename' => 'Jméno zdrojového souboru:',
+'sourceurl' => 'Zdrojové URL:',
'destfilename' => 'Cílové jméno:',
'upload-maxfilesize' => 'Maximální dovolená velikost souboru: $1',
+'upload-description' => 'Popis souboru',
+'upload-options' => 'Možnosti načtení',
'watchthisupload' => 'Sledovat tento soubor',
'filewasdeleted' => 'Soubor stejného jména byl již dříve načten a posléze smazán. Podrobnosti obsahuje $1.',
'upload-wasdeleted' => "'''Upozornění: Načítáte soubor, který byl již dříve smazán.'''
@@ -1607,13 +1701,44 @@ MGP # Pentax
PICT # různé
#</pre> <!-- tuto řádku ponechte beze změny -->',
-'upload-proto-error' => 'Neplatný protokol',
-'upload-proto-error-text' => 'Nahrání vzdáleného souboru vyžaduje zadání URLs začínající na <code>http://</code> nebo <code>ftp://</code>.',
-'upload-file-error' => 'Vnitřní chyba',
-'upload-file-error-text' => 'Při vytváření dočasného souboru na serveru nastala vnitřní chyba.
+'upload-proto-error' => 'Neplatný protokol',
+'upload-proto-error-text' => 'Nahrání vzdáleného souboru vyžaduje zadání URLs začínající na <code>http://</code> nebo <code>ftp://</code>.',
+'upload-file-error' => 'Vnitřní chyba',
+'upload-file-error-text' => 'Při vytváření dočasného souboru na serveru nastala vnitřní chyba.
Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
-'upload-misc-error' => 'Neznámá chyba',
-'upload-misc-error-text' => 'Neznámá chyba se vyskytla během nahrávání souboru. Zkontrolujte zda je URL platná a přístupné a zkuste to znovu. Pokud se chyba znovu objeví, kontaktuje administrátora systému.',
+'upload-misc-error' => 'Neznámá chyba',
+'upload-misc-error-text' => 'Neznámá chyba se vyskytla během nahrávání souboru. Zkontrolujte zda je URL platná a přístupné a zkuste to znovu. Pokud se chyba znovu objeví, kontaktuje administrátora systému.',
+'upload-too-many-redirects' => 'URL obsahovalo příliš mnoho přesměrování',
+'upload-unknown-size' => 'Neznámá velikost',
+'upload-http-error' => 'Došlo k chybě HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Přístup odepřen',
+'img-auth-nopathinfo' => 'Chybí PATH_INFO.
+Váš server není nastaven tak, aby poskytoval tuto informaci.
+Možná funguje pomocí CGI a img_auth na něm nemůže fungovat.
+Vizte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Požadovaná cesta nespadá pod nakonfigurovaný adresář s načtenými soubory.',
+'img-auth-badtitle' => 'Z „$1“ nelze vytvořit platný název stránky.',
+'img-auth-nologinnWL' => 'Nejste přihlášen(a) a „$1“ není na bílé listině.',
+'img-auth-nofile' => 'Soubor „$1“ neexistuje.',
+'img-auth-isdir' => 'Pokoušíte se zobrazit adresář „$1“.
+Dovolen je pouze přístup k souborům.',
+'img-auth-streaming' => 'Přenáší se „$1“.',
+'img-auth-public' => 'Pomocí img_auth.php se poskytují soubory na soukromých wiki.
+Tato wiki je nastavena jako veřejná.
+Z bezpečnostních důvodů je img_auth.php vypnuto.',
+'img-auth-noread' => 'Uživatel nemá oprávnění ke čtení „$1“.',
+
+# HTTP errors
+'http-invalid-url' => 'Neplatné URL: $1',
+'http-invalid-scheme' => 'URL používající schéma „$1“ nejsou podporována',
+'http-request-error' => 'Neznámá chyba při odesílání požadavku.',
+'http-read-error' => 'Chyba při čtení HTTP.',
+'http-timed-out' => 'Čas pro HTTP požadavek vypršel.',
+'http-curl-error' => 'Chyba při čtení z URL: $1',
+'http-host-unreachable' => 'Nepodařilo se kontaktovat URL',
+'http-bad-status' => 'Při provádění HTTP požadavku nastal problém: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Z URL nelze číst',
@@ -1622,6 +1747,7 @@ Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
'upload-curl-error28-text' => 'Serveru dlouho neodpovídá. Zkontrolujte, že server je dostupný, počkejte chvíli a zkuste to znovu.',
'license' => 'Licence:',
+'license-header' => 'Licence',
'nolicense' => 'Bez udání licence',
'license-nopreview' => '(Náhled není dostupný)',
'upload_source_url' => ' (platné, veřejně přístupné URL)',
@@ -1642,6 +1768,7 @@ Kliknutím na hlavičku sloupce můžete změnit řazení.',
'listfiles_count' => 'Verze',
# File description page
+'file-anchor-link' => 'Soubor',
'filehist' => 'Historie souboru',
'filehist-help' => 'Kliknutím na datum a čas se zobrazí tehdejší verze souboru.',
'filehist-deleteall' => 'smazat vše',
@@ -1656,6 +1783,7 @@ Kliknutím na hlavičku sloupce můžete změnit řazení.',
'filehist-dimensions' => 'Rozměry',
'filehist-filesize' => 'Velikost souboru',
'filehist-comment' => 'Komentář',
+'filehist-missing' => 'Soubor chybí',
'imagelinks' => 'Odkazy na soubor',
'linkstoimage' => 'Na soubor {{PLURAL:$1|odkazuje tato stránka|odkazují tyto $1 stránky|odkazuje těchto $1 stránek}}:',
'linkstoimage-more' => 'Na tento soubor {{PLURAL:$1|odkazuje více stránek|odkazují více než $1 stránky|odkazuje více než $1 stránek}}.
@@ -1665,15 +1793,16 @@ Můžete si prohlédnout [[Special:WhatLinksHere/$2|úplný seznam]].',
'morelinkstoimage' => 'Zobrazit [[Special:WhatLinksHere/$1|další odkazy]] na tento soubor.',
'redirectstofile' => '{{plural:$1|Následující soubor přesměrovává|Následující $1 soubory přesměrovávají|Následujících $1 souborů přesměrovává}} na tento soubor:',
'duplicatesoffile' => '{{plural:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
-'sharedupload' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Více informací obsahuje $1.',
-'shareduploadwiki-desc' => 'Níže jsou zobrazeny informace, které obsahuje jeho tamější $1.',
-'shareduploadwiki-linktext' => 'stránka s popisem souboru',
-'noimage' => 'Soubor s tímto jménem neexistuje, můžete ho $1',
-'noimage-linktext' => 'načíst',
+'sharedupload' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.',
+'sharedupload-desc-there' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.
+Více informací obsahuje jeho [$2 tamější stránka s popisem souboru].',
+'sharedupload-desc-here' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.
+Níže jsou zobrazeny informace, které obsahuje jeho [$2 tamější stránka s popisem souboru].',
+'filepage-nofile' => 'Soubor s tímto názvem neexistuje.',
+'filepage-nofile-link' => 'Soubor s tímto názvem neexistuje, ale můžete [$1 ho načíst].',
'uploadnewversion-linktext' => 'Načíst novou verzi tohoto souboru',
-'shared-repo-from' => 'z {{grammar:2sg|$1}}', # $1 is the repository name
-'shared-repo' => 'sdílené úložiště', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'z {{grammar:2sg|$1}}',
+'shared-repo' => 'sdílené úložiště',
# File reversion
'filerevert' => 'Vrátit zpět $1',
@@ -1702,6 +1831,7 @@ Můžete si prohlédnout [[Special:WhatLinksHere/$2|úplný seznam]].',
** Porušení autorských práv
** Nadbytečná kopie',
'filedelete-edit-reasonlist' => 'Editovat důvody smazání',
+'filedelete-maintenance' => 'Mazání a obnovování souborů je kvůli údržbě dočasně vypnuto.',
# MIME search
'mimesearch' => 'Hledání podle MIME typu',
@@ -1723,7 +1853,7 @@ Vstup: <code>typ obsahu/podtyp</code>, např. <code>image/jpeg</code>.',
# Random page
'randompage' => 'Náhodná stránka',
-'randompage-nopages' => 'Ve jmenném prostoru „$1“ nejsou žádné stránky.',
+'randompage-nopages' => 'V {{PLURAL:$2|následujícím jmenném prostoru|následujících jmenných prostorech}} nejsou žádné stránky: $1.',
# Random redirect
'randomredirect' => 'Náhodné přesměrování',
@@ -1735,6 +1865,7 @@ Vstup: <code>typ obsahu/podtyp</code>, např. <code>image/jpeg</code>.',
'statistics-header-edits' => 'Statistika editací',
'statistics-header-views' => 'Statistika zobrazení',
'statistics-header-users' => 'O uživatelích',
+'statistics-header-hooks' => 'Další statistiky',
'statistics-articles' => 'Obsahové stránky',
'statistics-pages' => 'Stránky',
'statistics-pages-desc' => 'Všechny stránky na wiki včetně diskusí, přesměrování apod.',
@@ -1762,8 +1893,8 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
'brokenredirects' => 'Přerušená přesměrování',
'brokenredirectstext' => 'Tato přesměrování vedou na neexistující stránky:',
-'brokenredirects-edit' => '(editovat)',
-'brokenredirects-delete' => '(smazat)',
+'brokenredirects-edit' => 'editovat',
+'brokenredirects-delete' => 'smazat',
'withoutinterwiki' => 'Stránky bez mezijazykových odkazů (interwiki)',
'withoutinterwiki-summary' => 'Tyto stránky neobsahují žádný mezijazykový odkaz:',
@@ -1870,16 +2001,17 @@ Zobrazení můžete zúžit výběrem typu záznamu, uživatelského jména (zá
# Special:Categories
'categories' => 'Kategorie',
-'categoriespagetext' => 'Následující kategorie obsahují stránky nebo soubory.
-[[Special:UnusedCategories|Nepoužívané kategorie]] nejsou zobrazeny.
-Možná Vás budou zajímat [[Special:WantedCategories|žádané kategorie]].',
+'categoriespagetext' => 'Následující kategorie {{PLURAL:$1|obsahuje|obsahují}} stránky nebo soubory.
+Nezobrazují se tu [[Special:UnusedCategories|nepoužívané kategorie]].
+Podívejte se také na [[Special:WantedCategories|žádané kategorie]].',
'categoriesfrom' => 'Zobrazit kategorie začínající na:',
'special-categories-sort-count' => 'seřadit podle počtu',
'special-categories-sort-abc' => 'seřadit abecedně',
# Special:DeletedContributions
-'deletedcontributions' => 'Smazané editace uživatele',
-'deletedcontributions-title' => 'Smazané editace uživatele',
+'deletedcontributions' => 'Smazané editace uživatele',
+'deletedcontributions-title' => 'Smazané editace uživatele',
+'sp-deletedcontributions-contribs' => 'příspěvky',
# Special:LinkSearch
'linksearch' => 'Externí odkazy',
@@ -1895,6 +2027,16 @@ Podporované protokoly: <tt>$1</tt>',
'listusersfrom' => 'Zobrazit uživatele počínaje od:',
'listusers-submit' => 'Ukázat',
'listusers-noresult' => 'Nenalezen žádný uživatel.',
+'listusers-blocked' => '({{GENDER:$1|zablokován|zablokována|zablokován}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Seznam aktivních uživatelů',
+'activeusers-intro' => 'Toto je seznam uživatelů, kteří byli nějak aktivní v {{plural:$1|posledním dni|posledních $1 dnech}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|editace|editace|editací}} během {{PLURAL:$3|posledního dne|posledních $3 dnů}}',
+'activeusers-from' => 'Zobrazit uživatele počínaje od:',
+'activeusers-hidebots' => 'Skrýt roboty',
+'activeusers-hidesysops' => 'Skrýt správce',
+'activeusers-noresult' => 'Nenalezen žádný uživatel.',
# Special:Log/newusers
'newuserlogpage' => 'Kniha nových uživatelů',
@@ -1905,18 +2047,24 @@ Podporované protokoly: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Účet vytvořen automaticky',
# Special:ListGroupRights
-'listgrouprights' => 'Práva skupin uživatelů',
-'listgrouprights-summary' => 'Toto je seznam uživatelských skupin definovaných na této wiki a&nbsp;jejich přístupových práv.
+'listgrouprights' => 'Práva skupin uživatelů',
+'listgrouprights-summary' => 'Toto je seznam uživatelských skupin definovaných na této wiki a&nbsp;jejich přístupových práv.
[[{{MediaWiki:Listgrouprights-helppage}}|Podrobné informace o&nbsp;jednotlivých právech]]',
-'listgrouprights-group' => 'Skupina',
-'listgrouprights-rights' => 'Práva',
-'listgrouprights-helppage' => 'Help:Práva skupiny',
-'listgrouprights-members' => '(seznam členů)',
-'listgrouprights-addgroup' => 'Přidávání uživatelů do {{PLURAL:$2|skupiny|skupin}} $1',
-'listgrouprights-removegroup' => 'Vyřazování uživatelů ze {{PLURAL:$2|skupiny|skupin}} $1',
-'listgrouprights-addgroup-all' => 'Přidávání uživatelů do libovolné skupiny',
-'listgrouprights-removegroup-all' => 'Vyřazování uživatelů z libovolné skupiny',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Udělená práva</span>
+* <span class="listgrouprights-revoked">Odebraná práva</span>',
+'listgrouprights-group' => 'Skupina',
+'listgrouprights-rights' => 'Práva',
+'listgrouprights-helppage' => 'Help:Práva skupiny',
+'listgrouprights-members' => '(seznam členů)',
+'listgrouprights-addgroup' => 'Přidávání uživatelů do {{PLURAL:$2|skupiny|skupin}} $1',
+'listgrouprights-removegroup' => 'Vyřazování uživatelů ze {{PLURAL:$2|skupiny|skupin}} $1',
+'listgrouprights-addgroup-all' => 'Přidávání uživatelů do libovolné skupiny',
+'listgrouprights-removegroup-all' => 'Vyřazování uživatelů z libovolné skupiny',
+'listgrouprights-addgroup-self' => 'Přidání svého účtu do {{PLURAL:$2|skupiny|skupin}} $1',
+'listgrouprights-removegroup-self' => 'Vyřazení svého účtu ze {{PLURAL:$2|skupiny|skupin}} $1',
+'listgrouprights-addgroup-self-all' => 'Přidání svého účtu do libovolné skupiny',
+'listgrouprights-removegroup-self-all' => 'Vyřazení svého účtu z libovolné skupiny',
# E-mail user
'mailnologin' => 'Bez odesílací adresy',
@@ -1999,14 +2147,17 @@ Uživatele, který změnu provedl, můžete kontaktovat:
e-mailem: $PAGEEDITOR_EMAIL
na wiki: $PAGEEDITOR_WIKI
-Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky, případně do doby, než vynulujete příznaky ve svém seznamu sledovaných stránek.
+Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky, případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
--
-Pro změnu nastavení navštivte
+Nastavení sledovaných stránek může změnit na
{{fullurl:Special:Watchlist/edit}}
+Stránku můžete ze svých sledovaných vyřadit na
+$UNWATCHURL
+
Rady a kontakt:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2019,9 +2170,10 @@ Rady a kontakt:
'exblank' => 'stránka byla prázdná',
'delete-confirm' => 'Smazání stránky „$1“',
'delete-legend' => 'Smazat',
-'historywarning' => 'Varování: Stránka, jíž chcete smazat, má historii:',
+'historywarning' => "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{plural:$1|revizí|revizemi}}:",
'confirmdeletetext' => 'Chystáte se smazat stránku s celou její historií. Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].',
'actioncomplete' => 'Provedeno',
+'actionfailed' => 'Operace se nezdařila',
'deletedtext' => 'Stránka nebo soubor „<nowiki>$1</nowiki>“ byla smazána. $2 zaznamenává poslední smazání.',
'deletedarticle' => 'maže „$1“',
'suppressedarticle' => 'utajil „[[$1]]“',
@@ -2041,18 +2193,19 @@ Rady a kontakt:
'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
# Rollback
-'rollback' => 'Vrátit zpět editace',
-'rollback_short' => 'Vrátit zpět',
-'rollbacklink' => 'vrácení zpět',
-'rollbackfailed' => 'Nešlo vrátit zpět',
-'cantrollback' => 'Nelze vrátit zpět poslední editaci, neboť poslední přispěvatel je jediným autorem této stránky.',
-'alreadyrolled' => 'Nelze vrátit zpět poslední editaci [[:$1]] od uživatele [[User:$2|$2]] ([[User talk:$2|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), protože někdo jiný již stránku editoval nebo vrátil tuto změnu zpět.
+'rollback' => 'Vrátit zpět editace',
+'rollback_short' => 'Vrátit zpět',
+'rollbacklink' => 'vrácení zpět',
+'rollbackfailed' => 'Nešlo vrátit zpět',
+'cantrollback' => 'Nelze vrátit zpět poslední editaci, neboť poslední přispěvatel je jediným autorem této stránky.',
+'alreadyrolled' => 'Nelze vrátit zpět poslední editaci [[:$1]] od uživatele [[User:$2|$2]] ([[User talk:$2|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), protože někdo jiný již stránku editoval nebo vrátil tuto změnu zpět.
Poslední editaci této stránky provedl(a) [[User:$3|$3]] ([[User talk:$3|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Shrnutí editace bylo: ''„$1“''.", # only shown if there is an edit comment
-'revertpage' => 'Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Editace uživatele $1 byla vrácena na poslední verzi od uživatele $2.',
-'sessionfailure' => 'Zřejmě je nějaký problém s vaším přihlášením;
+'editcomment' => "Shrnutí editace bylo: ''„$1“''.",
+'revertpage' => 'Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“',
+'revertpage-nouser' => 'Editace uživatele (uživatelské jméno skryto) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“',
+'rollback-success' => 'Editace uživatele $1 byla vrácena na poslední verzi od uživatele $2.',
+'sessionfailure' => 'Zřejmě je nějaký problém s vaším přihlášením;
vámi požadovaná činnost byla stornována jako prevence před neoprávněným přístupem.
Stiskněte tlačítko „zpět“, obnovte stránku, ze které jste přišli a zkuste činnost znovu.',
@@ -2070,7 +2223,7 @@ Stiskněte tlačítko „zpět“, obnovte stránku, ze které jste přišli a z
'protectexpiry' => 'Čas vypršení',
'protect_expiry_invalid' => 'Čas vypršení je chybný.',
'protect_expiry_old' => 'Čas vypršení již minul.',
-'protect-unchain' => 'Oddělené ovládání zámku přesunů',
+'protect-unchain-permissions' => 'Zpřístupnit další nastavení zámku',
'protect-text' => "Zde si můžete prohlédnout či změnit nastavení zámků stránky '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nemůžete měnit nastavení zámků pokud jste zablokován. Současné nastavení pro tuto stránku je: '''$1''':",
'protect-locked-dblock' => "Nastavení zámků nejde změnit kvůli zamčení databáze.
@@ -2098,7 +2251,7 @@ Současné nastavení pro tuto stránku je: '''$1''':",
** Editační válka
** Často používaná stránka',
'protect-edit-reasonlist' => 'Editace seznamu důvodů zamčení',
-'protect-expiry-options' => '1 hodina:1 hour,1 den:1 day,1 týden:1 week,2 týdny:2 weeks,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 year,do odvolání:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hodina:1 hour,1 den:1 day,1 týden:1 week,2 týdny:2 weeks,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 year,do odvolání:infinite',
'restriction-type' => 'Omezení:',
'restriction-level' => 'Úroveň omezení:',
'minimum-size' => 'Min. velikost',
@@ -2134,6 +2287,7 @@ Archiv může být pravidelně vyprazdňován.',
'undelete-nodiff' => 'Nebyla nalezena žádná předchozí verze.',
'undeletebtn' => 'Obnovit',
'undeletelink' => 'prohlédnout/obnovit',
+'undeleteviewlink' => 'prohlédnout',
'undeletereset' => 'Resetovat',
'undeleteinvert' => 'Invertovat výběr',
'undeletecomment' => 'Důvod:',
@@ -2171,19 +2325,23 @@ $1',
'contributions-title' => 'Příspěvky uživatele $1',
'mycontris' => 'Mé příspěvky',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Nenalezeny žádné změny vyhovující kritériím.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nenalezeny žádné změny vyhovující kritériím.',
'uctop' => ' (aktuální)',
'month' => 'Do měsíce:',
'year' => 'Do roku:',
-'sp-contributions-newbies' => 'Zobrazit příspěvky nově založených účtů',
-'sp-contributions-newbies-sub' => 'Noví uživatelé',
-'sp-contributions-newbies-title' => 'Příspěvky nových uživatelů',
-'sp-contributions-blocklog' => 'kniha zablokování',
-'sp-contributions-logs' => 'protokolovací záznamy',
-'sp-contributions-search' => 'Zobrazení příspěvků',
-'sp-contributions-username' => 'IP adresa nebo uživatelské jméno:',
-'sp-contributions-submit' => 'Zobrazit',
+'sp-contributions-newbies' => 'Zobrazit příspěvky nově založených účtů',
+'sp-contributions-newbies-sub' => 'Noví uživatelé',
+'sp-contributions-newbies-title' => 'Příspěvky nových uživatelů',
+'sp-contributions-blocklog' => 'kniha zablokování',
+'sp-contributions-deleted' => 'smazané editace uživatele',
+'sp-contributions-logs' => 'protokolovací záznamy',
+'sp-contributions-talk' => 'diskuse',
+'sp-contributions-userrights' => 'správa uživatelských práv',
+'sp-contributions-blocked-notice' => 'Tento uživatel je momentálně zablokován. Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
+'sp-contributions-search' => 'Zobrazení příspěvků',
+'sp-contributions-username' => 'IP adresa nebo uživatelské jméno:',
+'sp-contributions-submit' => 'Zobrazit',
# What links here
'whatlinkshere' => 'Odkazuje sem',
@@ -2206,6 +2364,7 @@ $1',
# Block/unblock
'blockip' => 'Zablokovat uživatele',
+'blockip-title' => 'Blokovat uživatele',
'blockip-legend' => 'Zablokovat uživatele',
'blockiptext' => 'Tento formulář slouží k zablokování editací z konkrétní IP adresy nebo uživatelského jména.
Toto by mělo být používáno jen v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].
@@ -2229,7 +2388,7 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
'ipbenableautoblock' => 'Automaticky blokovat IP adresy používané tímto uživatelem',
'ipbsubmit' => 'Zablokovat',
'ipbother' => 'Jiný čas vypršení:',
-'ipboptions' => '2 hodiny:2 hours,1 den:1 day,3 dny:3 days,1 týden:1 week,2 týdny:2 weeks,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 year,do odvolání:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hodiny:2 hours,1 den:1 day,3 dny:3 days,1 týden:1 week,2 týdny:2 weeks,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 year,do odvolání:infinite',
'ipbotheroption' => 'jiný',
'ipbotherreason' => 'Jiný/další důvod:',
'ipbhidename' => 'Skrýt uživatelské jméno u editací a v seznamech',
@@ -2258,9 +2417,11 @@ Můžete si prohlédnout [[Special:IPBlockList|seznam zablokovaných uživatelů
'ipblocklist-sh-tempblocks' => '$1 dočasná zablokování',
'ipblocklist-sh-addressblocks' => '$1 blokování jedné IP adresy',
'ipblocklist-submit' => 'Hledat',
+'ipblocklist-localblock' => 'Místní zablokování',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
'blocklistline' => '$1 $2 zablokoval $3 ($4)',
'infiniteblock' => 'do odvolání',
-'expiringblock' => 'do $1',
+'expiringblock' => 'do $1, $2',
'anononlyblock' => 'jen anonymové',
'noautoblockblock' => 'bez autoblokování',
'createaccountblock' => 'vytváření účtů zablokováno',
@@ -2274,7 +2435,9 @@ Můžete si prohlédnout [[Special:IPBlockList|seznam zablokovaných uživatelů
'contribslink' => 'příspěvky',
'autoblocker' => 'Byli jste automaticky zablokováni, protože sdílíte IP adresu s uživatelem „[[User:$1|$1]]“. Důvod zablokování tohoto uživatele: „$2“',
'blocklogpage' => 'Kniha zablokování',
-'blocklog-fulllog' => 'Celá kniha zablokování',
+'blocklog-showlog' => '{{GENDER:$1|Tento uživatel byl dříve blokován.|Tato uživatelka byla dříve blokována.|Tento uživatel byl dříve blokován.}}
+Zde je pro přehled zobrazen výpis z knihy zablokování:',
+'blocklog-showsuppresslog' => 'Tento uživatel byl zablokován a skryt. Zde je pro přehled zobrazen výpis záznamu utajení:',
'blocklogentry' => 'blokuje „[[$1]]“ s časem vypršení $2 $3',
'reblock-logentry' => 'mění nastavení bloku „[[$1]]“ s časem vypršení $2 $3',
'blocklogtext' => 'Toto je kniha úkonů blokování a odblokování uživatelů. Automaticky blokované IP adresy nejsou vypsány. Podívejte se na [[Special:IPBlockList|seznam blokování IP]] s výčtem aktuálních zákazů a blokování.',
@@ -2293,9 +2456,11 @@ Můžete si prohlédnout [[Special:IPBlockList|seznam zablokovaných uživatelů
'ipb_already_blocked' => '„$1“ již je zablokován.',
'ipb-needreblock' => '== Již zablokován(a) ==
$1 je již zablokován(a). Chcete změnit nastavení bloku?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
'ipb_cant_unblock' => 'Chyba: Blokování s ID $1 nebylo nalezeno. Uživatel již možná byl odblokován.',
'ipb_blocked_as_range' => 'Chyba: IP adresa $1 není blokována přímo a tak ji nelze odblokovat. Je částí zablokovaného rozsahu $2, který může být odblokován.',
'ip_range_invalid' => 'Neplatný IP rozsah.',
+'ip_range_toolarge' => 'Blokování rozsahů větších než /$1 není dovoleno.',
'blockme' => 'Zablokuj mě',
'proxyblocker' => 'Blokování proxy serverů',
'proxyblocker-disabled' => 'Tato funkce je vypnuta.',
@@ -2304,6 +2469,7 @@ $1 je již zablokován(a). Chcete změnit nastavení bloku?',
'sorbsreason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server.',
'sorbs_create_account_reason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server. Z této adresy si nemůžete založit účet',
'cant-block-while-blocked' => 'Nemůžete blokovat jiné uživatele, když jste zablokován(a).',
+'cant-see-hidden-user' => 'Uživatel, kterého se snažíte blokovat, už byl zablokován a skryt. Jelikož nemáte oprávnění hideuser, nemůžete si nastavení bloku tohoto uživatele prohlédnout ani ho změnit.',
# Developer tools
'lockdb' => 'Zamknout databázi',
@@ -2343,6 +2509,7 @@ Přejmenování oblíbené stránky může být drastická a nečekaná změna;
V těchto případech musíte přesunout nebo sloučit stránky manuálně, jestliže si to přejete.",
'movearticle' => 'Přesunout stránku:',
+'moveuserpage-warning' => "'''Upozornění:''' Chystáte se přesunout uživatelskou stránku. Uvědomte si prosím, že bude přesunuta pouze tato stránka, ale uživatel ''nebude'' přejmenován.",
'movenologin' => 'Nejste přihlášen(a)!',
'movenologintext' => 'Pro přesouvání stránek se musíte [[Special:UserLogin|přihlásit]].',
'movenotallowed' => 'Nemáte oprávnění k přesunu stránek.',
@@ -2353,7 +2520,7 @@ V těchto případech musíte přesunout nebo sloučit stránky manuálně, jest
'move-watch' => 'Sledovat tuto stránku',
'movepagebtn' => 'Přesunout stránku',
'pagemovedsub' => 'Úspěšně přesunuto',
-'movepage-moved' => "'''Stránka „$1“ byla přesunuta na „$2“'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Stránka „$1“ byla přesunuta na „$2“'''",
'movepage-moved-redirect' => 'Bylo vytvořeno přesměrování.',
'movepage-moved-noredirect' => 'Přesměrování nebylo vytvořeno.',
'articleexists' => 'Takto nazvaná stránka již existuje, nebo Vámi zvolený název je neplatný. Zvolte jiný název.',
@@ -2394,6 +2561,14 @@ Cílová stránka „[[:$1]]“ již existuje. Přejete si ji smazat pro uvolně
'imageinvalidfilename' => 'Název cílového souboru není platný',
'fix-double-redirects' => 'Opravit všechna přesměrování směřující na původní název',
'move-leave-redirect' => 'Ponechat přesměrování',
+'protectedpagemovewarning' => "'''Varování:''' Tato stránka byla zamčena, takže ji mohou přesouvat pouze správci.
+Níže je pro přehled zobrazen nejnovější protokolovací záznam:",
+'semiprotectedpagemovewarning' => "'''Poznámka:''' Tato stránka byla zamčena, takže ji mohou přesouvat pouze registrovaní uživatelé.
+Níže je pro přehled zobrazen nejnovější protokolovací záznam:",
+'move-over-sharedrepo' => '== Soubor existuje ==
+[[:$1]] existuje ve sdíleném úložišti. Přesun souboru na tento název způsobí potlačení sdíleného souboru.',
+'file-exists-sharedrepo' => 'Vybrané jméno souboru je již používáno ve sdíleném úložišti.
+Prosíme, vyberte jiné jméno.',
# Export
'export' => 'Exportovat stránky',
@@ -2415,15 +2590,21 @@ V druhém případě můžete také používat přímý odkaz, např. pomocí [[
'export-pagelinks' => 'Zahrnout odkazované stránky až do hloubky:',
# Namespace 8 related
-'allmessages' => 'Všechna systémová hlášení',
-'allmessagesname' => 'Označení hlášení',
-'allmessagesdefault' => 'Původní text',
-'allmessagescurrent' => 'Aktuální text',
-'allmessagestext' => 'Toto je seznam všech hlášení dostupných ve jmenném prostoru MediaWiki.
+'allmessages' => 'Všechna systémová hlášení',
+'allmessagesname' => 'Označení hlášení',
+'allmessagesdefault' => 'Původní text',
+'allmessagescurrent' => 'Aktuální text',
+'allmessagestext' => 'Toto je seznam všech hlášení dostupných ve jmenném prostoru MediaWiki.
Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http://www.mediawiki.org/wiki/Localisation lokalizační stránku na mediawiki.org] a [http://translatewiki.net server translatewiki.net].',
-'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages není podporováno, neboť wgUseDatabaseMessages je vypnuto.',
-'allmessagesfilter' => 'Filtr názvů hlášení:',
-'allmessagesmodified' => 'Zobrazit pouze upravená hlášení',
+'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages není podporováno, neboť wgUseDatabaseMessages je vypnuto.',
+'allmessages-filter-legend' => 'Filtr',
+'allmessages-filter' => 'Filtr podle stavu:',
+'allmessages-filter-unmodified' => 'Neupraveno',
+'allmessages-filter-all' => 'Vše',
+'allmessages-filter-modified' => 'Upraveno',
+'allmessages-prefix' => 'Filtr podle začátku názvu:',
+'allmessages-language' => 'Jazyk:',
+'allmessages-filter-submit' => 'Použít',
# Thumbnails
'thumbnail-more' => 'Zvětšit',
@@ -2433,6 +2614,9 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'djvu_no_xml' => 'Vytvoření XML pro soubor DjVu se nezdařilo.',
'thumbnail_invalid_params' => 'Neplatný parametr náhledu',
'thumbnail_dest_directory' => 'Nelze vytvořit cílový adresář',
+'thumbnail_image-type' => 'Nepodporovaný typ obrázku',
+'thumbnail_gd-library' => 'Neúplná konfigurace knihovny GD: chybí funkce $1',
+'thumbnail_image-missing' => 'Soubor patrně chybí: $1',
# Special:Import
'import' => 'Import stránek',
@@ -2494,6 +2678,7 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'tooltip-ca-viewsource' => 'Tato stránka je zamčena. Můžete si prohlédnout její zdrojový kód.',
'tooltip-ca-history' => 'Starší verze této stránky.',
'tooltip-ca-protect' => 'Zamknout tuto stránku.',
+'tooltip-ca-unprotect' => 'Odemknout tuto stránku.',
'tooltip-ca-delete' => 'Smazat tuto stránku.',
'tooltip-ca-undelete' => 'Obnovit editace této stránky provedené před jejím smazáním.',
'tooltip-ca-move' => 'Přesunout tuto stránku',
@@ -2504,6 +2689,7 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'tooltip-search-fulltext' => 'Hledat stránky s tímto textem',
'tooltip-p-logo' => 'Hlavní strana',
'tooltip-n-mainpage' => 'Navštívit Hlavní stranu',
+'tooltip-n-mainpage-description' => 'Přejít na hlavní stranu',
'tooltip-n-portal' => 'O projektu, jak můžete pomoci, kde hledat',
'tooltip-n-currentevents' => 'Informace o aktuálních událostech',
'tooltip-n-recentchanges' => 'Seznam posledních změn na této wiki',
@@ -2550,6 +2736,7 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'chick.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Kuře“ */',
'simple.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Jednoduchý“ */',
'modern.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Moderní“ */',
+'vector.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */',
'print.css' => '/* Zde uvedené CSS bude ovlivňovat tiskový výstup */',
'handheld.css' => '/* Zde uvedené CSS bude ovlivňovat přenosná zařízení vycházející ze stylu nastaveného v proměnné $wgHandheldStyle */',
@@ -2563,6 +2750,7 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'chick.js' => '/* JavaScript pro uživatele používající vzhled „Kuře“ */',
'simple.js' => '/* JavaScript pro uživatele používající vzhled „Jednoduchý“ */',
'modern.js' => '/* JavaScript pro uživatele používající vzhled „Moderní“ */',
+'vector.js' => '/* JavaScript pro uživatele používající vzhled „Vektor“ */',
# Metadata
'nodublincore' => 'Na tomto serveru je vypnuto generování metadat Dublin Core RDF.',
@@ -2572,10 +2760,12 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
# Attribution
'anonymous' => 'anonymní {{PLURAL:$1|uživatel|uživatelé|uživatelé}} {{GRAMMAR:2sg|{{SITENAME}}}}',
'siteuser' => 'uživatel {{grammar:2sg|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Tuto stránku naposledy {{GENDER:$4|změnil|změnila|změnil}} $3 v $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'anonymní uživatel {{grammar:2sg|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Tuto stránku naposledy {{GENDER:$4|změnil|změnila|změnil}} $3 v $2, $1.',
'othercontribs' => 'Do textu {{PLURAL:$2|přispěl|přispěli}} $1.',
'others' => 'další',
'siteusers' => '{{PLURAL:$2|uživatel|uživatelé|uživatelé}} {{grammar:2sg|{{SITENAME}}}} $1',
+'anonusers' => 'anonymní {{PLURAL:$2|uživatel|uživatelé}} {{grammar:2sg|{{SITENAME}}}} $1',
'creditspage' => 'Zásluhy za stránku',
'nocredits' => 'K této stránce neexistuje informace o zásluhách.',
@@ -2603,6 +2793,7 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'skinname-chick' => 'Kuře',
'skinname-simple' => 'Jednoduchý',
'skinname-modern' => 'Moderní',
+'skinname-vector' => 'Vektor',
# Math options
'mw_math_png' => 'Vždy jako PNG',
@@ -2612,11 +2803,22 @@ Pokud si přejete přispívat k lokalizaci softwaru MediaWiki, navštivte [http:
'mw_math_modern' => 'Doporučené nastavení pro moderní prohlížeče',
'mw_math_mathml' => 'MathML, pokud je podporováno (experimentální)',
+# Math errors
+'math_failure' => 'Nelze pochopit',
+'math_unknown_error' => 'neznámá chyba',
+'math_unknown_function' => 'neznámá funkce',
+'math_lexing_error' => 'chyba při lexingu',
+'math_syntax_error' => 'syntaktická chyba',
+'math_image_error' => 'Selhala konverze do PNG; zkontrolujte správnou instalaci latexu, dvips, gs a convertu',
+'math_bad_tmpdir' => 'Nelze zapsat nebo vytvořit dočasný adresář pro matematiku',
+'math_bad_output' => 'Nelze zapsat nebo vytvořit adresář pro výstup matematiky',
+'math_notexvc' => 'Chybí spustitelný texvc; podívejte se prosím do math/README na konfiguraci.',
+
# Patrolling
'markaspatrolleddiff' => 'Označit jako prověřené',
'markaspatrolledtext' => 'Označit tuto stránku jako prověřenou',
'markedaspatrolled' => 'Označeno jako prověřené',
-'markedaspatrolledtext' => 'Vybraná verze byla označena jako prověřená.',
+'markedaspatrolledtext' => 'Vybraná verze stránky [[:$1]] byla označena jako prověřená.',
'rcpatroldisabled' => 'Hlídka posledních změn vypnuta',
'rcpatroldisabledtext' => 'Hlídka posledních změn je momentálně vypnuta.',
'markedaspatrollederror' => 'Nelze označit za prověřené',
@@ -2646,13 +2848,11 @@ $1',
'previousdiff' => '← Porovnání se starší verzí',
'nextdiff' => 'Porovnání s novější verzí →',
-# Visual comparison
-'visual-comparison' => 'Porovnání vzhledu',
-
# Media information
'mediawarning' => "'''Upozornění''': Tento typ souboru může obsahovat škodlivý kód.
Otevřením souboru můžete ohrozit svůj počítač.",
-'imagemaxsize' => 'Omezit obrázky na stránkách s popiskem na:',
+'imagemaxsize' => "Maximální velikost obrázku:<br />
+''(na stránce s popisem souboru)''",
'thumbsize' => 'Velikost náhledu:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránek}}',
'file-info' => '(velikost souboru: $1, MIME typ: $2)',
@@ -2661,6 +2861,8 @@ Otevřením souboru můžete ohrozit svůj počítač.",
'svg-long-desc' => '(soubor SVG, nominální rozměr: $1 × $2 pixelů, velikost souboru: $3)',
'show-big-image' => 'Obrázek ve vyšším rozlišení',
'show-big-image-thumb' => '<small>Velikost tohoto náhledu je: $1 × $2 pixelů</small>',
+'file-info-gif-looped' => 've smyčce',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|snímek|snímky|snímků}}',
# Special:NewFiles
'newimages' => 'Galerie nových souborů',
@@ -2691,7 +2893,7 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Šířka',
@@ -2818,14 +3020,14 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
'exif-unknowndate' => 'neznámé datum',
-'exif-orientation-1' => 'Normální', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Vodorovně převráceno', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Otočeno o 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Svisle převráceno', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Otočeno o 90° proti směru hodinových ručiček a svisle převráceno', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Otočeno o 90° ve směru hodinových ručiček', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Otočeno o 90° ve směru hodinových ručiček a svisle převráceno', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Otočeno o 90° proti směru hodinových ručiček', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normální',
+'exif-orientation-2' => 'Vodorovně převráceno',
+'exif-orientation-3' => 'Otočeno o 180°',
+'exif-orientation-4' => 'Svisle převráceno',
+'exif-orientation-5' => 'Otočeno o 90° proti směru hodinových ručiček a svisle převráceno',
+'exif-orientation-6' => 'Otočeno o 90° ve směru hodinových ručiček',
+'exif-orientation-7' => 'Otočeno o 90° ve směru hodinových ručiček a svisle převráceno',
+'exif-orientation-8' => 'Otočeno o 90° proti směru hodinových ručiček',
'exif-planarconfiguration-1' => 'chunky',
'exif-planarconfiguration-2' => 'planar',
@@ -2949,7 +3151,7 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
'exif-gpsmeasuremode-2' => 'Dvourozměrné měření',
'exif-gpsmeasuremode-3' => 'Trojrozměrné měření',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'kt',
@@ -2968,6 +3170,7 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
'watchlistall2' => 'všechny',
'namespacesall' => 'všechny',
'monthsall' => 'všechny',
+'limitall' => 'vše',
# E-mail address confirmation
'confirmemail' => 'Potvrzení e-mailové adresy',
@@ -3148,7 +3351,7 @@ Seznam editovaných stránek můžete také [[Special:Watchlist/edit|editovat ve
'duplicate-defaultsort' => 'Upozornění: Implicitní klíč řazení (DEFAULTSORTKEY) „$2“ přepisuje dříve nastavenou hodnotu „$1“.',
# Special:Version
-'version' => 'Verze', # Not used as normal message but as header for the special page itself
+'version' => 'Verze',
'version-extensions' => 'Nainstalovaná rozšíření',
'version-specialpages' => 'Speciální stránky',
'version-parserhooks' => 'Přípojné body parseru',
@@ -3162,7 +3365,7 @@ Seznam editovaných stránek můžete také [[Special:Watchlist/edit|editovat ve
'version-skin-extension-functions' => 'Rozšiřující funkce vzhledu',
'version-hook-name' => 'Název přípojného bodu',
'version-hook-subscribedby' => 'Volán z',
-'version-version' => 'Verze',
+'version-version' => '(Verze $1)',
'version-license' => 'Licence',
'version-software' => 'Nainstalovaný software',
'version-software-product' => 'Název',
@@ -3242,4 +3445,15 @@ Zadejte jméno souboru bez označení "{{ns:file}}:".',
'dberr-outofdate' => 'Uvědomte si, že jejich vyhledávací index našeho obsahu může být zastaralý.',
'dberr-cachederror' => 'Následující stránka je kopie z cache a nemusí být aktuální.',
+# HTML forms
+'htmlform-invalid-input' => 'Některé vámi zadané údaje jsou chybné',
+'htmlform-select-badoption' => 'Vámi uvedená hodnota není platná možnost.',
+'htmlform-int-invalid' => 'Uvedená hodnota není celé číslo.',
+'htmlform-float-invalid' => 'Uvedená hodnota není číslo.',
+'htmlform-int-toolow' => 'Vámi zadaná hodnota je menší než dovolené minimum $1',
+'htmlform-int-toohigh' => 'Vámi zadaná hodnota je větší než dovolené maximum $1',
+'htmlform-submit' => 'Odeslat',
+'htmlform-reset' => 'Vrátit změny',
+'htmlform-selectorother-other' => 'Jiná hodnota',
+
);
diff --git a/languages/messages/MessagesCsb.php b/languages/messages/MessagesCsb.php
index ef5b138b..03560717 100644
--- a/languages/messages/MessagesCsb.php
+++ b/languages/messages/MessagesCsb.php
@@ -18,11 +18,9 @@
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Specjalnô',
- NS_MAIN => '',
NS_TALK => 'Diskùsëjô',
NS_USER => 'Brëkòwnik',
NS_USER_TALK => 'Diskùsëjô_brëkòwnika',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Diskùsëjô_$1',
NS_FILE => 'Òbrôzk',
NS_FILE_TALK => 'Diskùsëjô_òbrôzków',
@@ -33,7 +31,7 @@ $namespaceNames = array(
NS_HELP => 'Pòmòc',
NS_HELP_TALK => 'Diskùsëjô_Pòmòcë',
NS_CATEGORY => 'Kategòrëjô',
- NS_CATEGORY_TALK => 'Diskùsëjô_Kategòrëji'
+ NS_CATEGORY_TALK => 'Diskùsëjô_Kategòrëji',
);
$messages = array(
@@ -144,10 +142,18 @@ $messages = array(
'mainpagetext' => "'''MediaWiki òsta zainstalowónô.'''",
-'about' => 'Ò serwise',
-'article' => 'Artikel',
-'newwindow' => '(òtmëkô sã w nowim òczenkù)',
-'cancel' => 'Anulujë',
+'about' => 'Ò serwise',
+'article' => 'Artikel',
+'newwindow' => '(òtmëkô sã w nowim òczenkù)',
+'cancel' => 'Anulujë',
+'moredotdotdot' => 'Wicy...',
+'mypage' => 'Mòja starna',
+'mytalk' => 'Diskùsëjô',
+'anontalk' => 'Diskùsëjô dlô ti IP-adresë',
+'navigation' => 'Nawigacëjô',
+'and' => '&#32;ë',
+
+# Cologne Blue skin
'qbfind' => 'Nalézë',
'qbbrowse' => 'Przezeranié',
'qbedit' => 'Edicëjô',
@@ -155,15 +161,16 @@ $messages = array(
'qbpageinfo' => 'Ò starnie',
'qbmyoptions' => 'Mòje òptacëje',
'qbspecialpages' => 'Specjalné starnë',
-'moredotdotdot' => 'Wicy...',
-'mypage' => 'Mòja starna',
-'mytalk' => 'Diskùsëjô',
-'anontalk' => 'Diskùsëjô dlô ti IP-adresë',
-'navigation' => 'Nawigacëjô',
-'and' => '&#32;ë',
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+# Vector skin
+'vector-action-delete' => 'Rëmôj',
+'vector-namespace-help' => 'Pòmòc',
+'vector-namespace-image' => 'Òbrôzk',
+'vector-namespace-main' => 'Artikel',
+'vector-namespace-special' => 'Specjalnô starna',
+'vector-namespace-user' => 'Starna brëkòwnika',
+'vector-view-edit' => 'Edicëjô',
+'vector-view-view' => 'Czëtaniô',
'errorpagetitle' => 'Brida',
'returnto' => 'Wôrcë sã do starnë: $1.',
@@ -212,7 +219,7 @@ $messages = array(
'otherlanguages' => 'W jinëch jãzëkach',
'redirectedfrom' => '(Przeczerowóné z $1)',
'redirectpagesub' => 'Przeczerëjë starnã',
-'lastmodifiedat' => 'Na starna bëła slédno editowónô ò $2, $1;', # $1 date, $2 time
+'lastmodifiedat' => 'Na starna bëła slédno editowónô ò $2, $1;',
'viewcount' => 'Na starna je òbzéranô ju {{PLURAL:$1|jeden rôz|$1 razy}}',
'protectedpage' => 'Starna je zazychrowónô',
'jumpto' => 'Skòczë do:',
@@ -305,10 +312,8 @@ Mòże to zgłoszëc [[Special:ListUsers/sysop|sprôwnikòwi]], pòdając adres
Przemëszlë dolmaczënié na [http://translatewiki.net/wiki/Main_Page?setlang=csb translatewiki.net], ekstra ùdbie lokalizacëji softwôrë MediaWiki.",
# Login and logout pages
-'logouttitle' => 'Wëlogòwanié brëkòwnika',
'logouttext' => 'Të jes ju wëlogòwóny.
Mòżesz prôcowac z {{SITENAME}} jakno anonimòwi brëkòwnik abò wlogòwac sã jakno zaregistrowóny brëkòwnik.',
-'loginpagetitle' => 'Logòwanié brëkòwnika',
'yourname' => 'Miono brëkòwnika',
'yourpassword' => 'Twòja parola',
'yourpasswordagain' => 'Pòwtórzë parolã',
@@ -318,6 +323,7 @@ Mòżesz prôcowac z {{SITENAME}} jakno anonimòwi brëkòwnik abò wlogòwac s
'nav-login-createaccount' => 'Logòwanié',
'loginprompt' => "Brëkùjesz miec ''cookies'' (kùszczi) włączoné bë sã wlogòwac do {{SITENAME}}.",
'userlogin' => 'Logòwanié',
+'userloginnocreate' => 'Wlogùjë mie',
'logout' => 'Wëlogùjë mie',
'userlogout' => 'Wëlogòwanié',
'notloggedin' => 'Felëje logòwóniô',
@@ -329,23 +335,7 @@ Mòżesz prôcowac z {{SITENAME}} jakno anonimòwi brëkòwnik abò wlogòwac s
'createaccountmail' => 'òb e-mail',
'badretype' => 'Wprowadzone parole jinaczą sã midze sobą.',
'userexists' => 'To miono brëkòwnika je ju w ùżëcym. Proszã wëbrac jiné miono.',
-'youremail' => 'E-mail:',
-'username' => 'Miono brëkòwnika:',
-'uid' => 'ID brëkòwnika:',
-'yourrealname' => 'Twòje jistné miono*',
-'yourlanguage' => 'Twój jãzëk:',
-'yourvariant' => 'Wariant:',
-'yournick' => 'Pòdpisënk:',
-'badsig' => 'Òchëbny pòdpisënk, sprôwdzë tadżi HTML.',
-'badsiglength' => 'Pòdpisënk je za dłudżi.
-Mô bëc mni jakno $1 {{PLURAL:$1|znak|znaczi/znaków}}.',
-'gender-male' => 'Chłop',
-'gender-female' => 'Białka',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Prôwdzewi miono je òptacjowé a czej je dôsz, òstanié ùżëté do pòdpisaniô Twòjégò wkłôdu',
'loginerror' => 'Fela logòwaniô',
-'prefs-help-email' => 'Adresa e-mail je òptacëjnô, zezwôlô równak sélac do ce nową parolã jak tã zabëjesz.
-Mòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją starnã abò starnã diskùsëji, bez mùszebnotë wëskrzënianiô swòjich pòdôwków.',
'loginsuccesstitle' => 'ùdałé logòwanié',
'loginsuccess' => 'Të jes wlogòwóny do {{SITENAME}} jakno "$1".',
'nosuchuser' => 'Nie dô brëkòwnika ò mionie "$1".
@@ -381,6 +371,7 @@ Ni mòżesz miec ju wicy.',
'newpassword' => 'Nowô parola',
'retypenew' => 'Napiszë nową parolã jesz rôz',
'resetpass-submit-loggedin' => 'Zmiana parolë',
+'resetpass-submit-cancel' => 'Anulujë',
# Edit page toolbar
'bold_sample' => 'Wëtłëszczony drëk',
@@ -486,7 +477,7 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'histlast' => 'Nowszé',
# Revision feed
-'history-feed-item-nocomment' => '$1 ò $2', # user at time
+'history-feed-item-nocomment' => '$1 ò $2',
# Revision deletion
'rev-delundel' => 'pòkażë/zatacë',
@@ -508,11 +499,10 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'searchresults-title' => 'Skùtczi szëkbë za "$1"',
'searchresulttext' => 'Dlô dobëcô wicy wëdowiédzë ò szëkbie na {{GRAMMAR:D.lp|{{SITENAME}}}}, zdrzë na [[{{MediaWiki:Helppage}}|starnë pòmòcë]].',
'searchsubtitle' => 'Skùtczi szëkbë za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|starnë naczënającé sã òd "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|starnë, chtërné lënkùją do "$1"]])',
-'noexactmatch' => "'''Nie dô starnë z dokładno taczim titlã \"\$1\"'''. Mòżesz [[:\$1|zrobic ną starnã]].",
'notitlematches' => 'Ni nalazłé w titlach',
-'prevn' => 'wczasniészé $1',
-'nextn' => 'nôslédné $1',
-'viewprevnext' => 'Òbaczë ($1) ($2) ($3).',
+'prevn' => 'wczasniészé {{PLURAL:$1|$1}}',
+'nextn' => 'nôslédné {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Òbaczë ($1 {{int:pipe-separator}} $2) ($3).',
'search-result-size' => '$1 ({{PLURAL:$2|1 słowò|$2 słowa|$2 słów}})',
'search-section' => '(dzél $1)',
'search-interwiki-caption' => 'Sosterné ùdbë',
@@ -525,20 +515,20 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'powersearch-redir' => 'Lësta przeczerowaniów',
'powersearch-field' => 'Szëkba za',
+# Quickbar
+'qbsettings' => 'Sztrépk chùtczégò przistãpù',
+
# Preferences page
'preferences' => 'Preferencëje',
'mypreferences' => 'Mòje nastôwë',
'prefs-edits' => 'Lëczba edicëjów:',
'prefsnologin' => 'Felënk logòwóniô',
-'qbsettings' => 'Sztrépk chùtczégò przistãpù',
'changepassword' => 'Zmiana parolë',
-'skin' => 'Wëzdrzatk',
+'prefs-skin' => 'Wëzdrzatk',
'skin-preview' => 'Pòdzérk',
-'math' => 'Matematika',
-'dateformat' => 'Fòrmat datumù',
+'prefs-math' => 'Matematika',
'datedefault' => 'Felëje preferencëji',
-'datetime' => 'Datum ë czas',
-'math_failure' => 'Parser nie rozmiôł rozpòznac',
+'prefs-datetime' => 'Datum ë czas',
'prefs-personal' => 'Pòdôwczi brëkòwnika',
'prefs-rc' => 'Slédné edicëje',
'prefs-watchlist' => 'Lësta ùzérónëch artiklów',
@@ -547,7 +537,7 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'prefs-misc' => 'Jine',
'saveprefs' => 'Zapiszë',
'resetprefs' => 'Wëczëszczë niezapisóné zmianë',
-'textboxsize' => 'Edicëjô',
+'prefs-editing' => 'Edicëjô',
'rows' => 'Régów:',
'columns' => 'Kòlumnów:',
'searchresultshead' => 'Szëkba',
@@ -559,7 +549,6 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'recentchangescount' => 'Wielëna pòzycëji na lësce slédnëch edicëji',
'savedprefs' => 'Twòjé nastôwë òstałë zapisóné.',
'timezonelegend' => 'Czasowô cona',
-'timezonetext' => '¹Lëczba gòdzënów różnicë midze twòjim môlowim czasã a czasã na serwerze (UTC).',
'localtime' => 'Môlowi czas:',
'timezoneoffset' => 'Różnica¹:',
'servertime' => 'Czas serwera:',
@@ -567,7 +556,23 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
'allowemail' => 'Włączë mòżlewòtã sélaniô e-mailów òd jinëch brëkòwników',
'defaultns' => 'Domëslno przeszëkùjë nôslédné rëmnotë mionów:',
'default' => 'domëszlné',
-'files' => 'Lopczi',
+'prefs-files' => 'Lopczi',
+'youremail' => 'E-mail:',
+'username' => 'Miono brëkòwnika:',
+'uid' => 'ID brëkòwnika:',
+'yourrealname' => 'Twòje jistné miono*',
+'yourlanguage' => 'Twój jãzëk:',
+'yourvariant' => 'Wariant:',
+'yournick' => 'Pòdpisënk:',
+'badsig' => 'Òchëbny pòdpisënk, sprôwdzë tadżi HTML.',
+'badsiglength' => 'Pòdpisënk je za dłudżi.
+Mô bëc mni jakno $1 {{PLURAL:$1|znak|znaczi/znaków}}.',
+'gender-male' => 'Chłop',
+'gender-female' => 'Białka',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Prôwdzewi miono je òptacjowé a czej je dôsz, òstanié ùżëté do pòdpisaniô Twòjégò wkłôdu',
+'prefs-help-email' => 'Adresa e-mail je òptacëjnô, zezwôlô równak sélac do ce nową parolã jak tã zabëjesz.
+Mòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją starnã abò starnã diskùsëji, bez mùszebnotë wëskrzënianiô swòjich pòdôwków.',
# User rights
'editinguser' => "Zmiana praw brëkòwnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -609,6 +614,8 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
# Recent changes linked
'recentchangeslinked' => 'Zmianë w dolënkòwónëch',
+'recentchangeslinked-feed' => 'Zmianë w dolënkòwónëch',
+'recentchangeslinked-toolbox' => 'Zmianë w dolënkòwónëch',
'recentchangeslinked-title' => 'Zjinaczi w lënkòwónëch z "$1"',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-summary' => "Niżi nachôdô sã lësta slédnëch zjinaków na lënkòwónëch starnach z pòdóny starnë (abò we wszëtczich starnach przënôleżącëch do pòdóny kategòrëji).
@@ -619,7 +626,6 @@ Starnë z [[Special:Watchlist|lëstë ùzérónëch artiklów]] są '''pògrëbi
# Upload
'upload' => 'Wladënk lopka',
'uploadbtn' => 'Wladëjë lopk',
-'reupload' => 'Wëslë jesz rôz',
'uploadnologin' => 'Felënk logòwaniô',
'uploadtext' => "Brëkùjë negò fòrmùlara do wladënkù lopków.
Jeżlë chcesz przezdrzec abò szëkac w dotenczas wladowónëch lopkach, biéj do [[Special:FileList|lësta lopków]]. Kòżdi wladënk je registrowóny w [[Special:Log/upload|registrze wladënkù]], a rëmniãcé w [[Special:Log/delete|registrze rëmaniô]].
@@ -649,6 +655,7 @@ Wszëtczé gòdzënë tikają conë ùniwersalnégò czasë.',
'listfiles_user' => 'Brëkòwnik',
# File description page
+'file-anchor-link' => 'Òbrôzk',
'filehist' => 'Historëjô lopka',
'filehist-current' => 'aktualny',
'filehist-datetime' => 'Datum/Czas',
@@ -839,6 +846,7 @@ Slédnym ùsódzcą starnë bëł [[User:$3|$3]] ([[User talk:$3|Diskùsëjô]]{
'sp-contributions-newbies' => 'Pòkażë edicëjã blós nowich brëkòwników',
'sp-contributions-newbies-sub' => 'Dlô nowich brëkòwników',
+'sp-contributions-talk' => 'Diskùsëjô',
'sp-contributions-search' => 'Szëkba za edicëjama',
'sp-contributions-username' => 'Adresa IP abò miono brëkòwnika:',
'sp-contributions-submit' => 'Szëkôj',
@@ -881,7 +889,7 @@ Biéj do [[Special:IPBlockList|lëstë zascëgónëch adresów IP]] abë òbacz
'move-watch' => 'Ùzérôj tã starnã',
'movepagebtn' => 'Przeniesë starnã',
'pagemovedsub' => 'Przeniesenié darzëło sã',
-'movepage-moved' => '\'\'\'"$1" òsta przeniosłô do "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" òsta przeniosłô do "$2"\'\'\'',
'articleexists' => 'Starna ò taczim mionie ju je abò nie je òno bezzmiłkòwé. Wëbierzë nowé miono.',
'movedto' => 'przeniesłô do',
'movetalk' => 'Przeniesë téż starnã <i>Diskùsëje</i>, jeżle je to mòżlëwé.',
@@ -903,8 +911,6 @@ Biéj do [[Special:IPBlockList|lëstë zascëgónëch adresów IP]] abë òbacz
'allmessagestext' => 'To je zestôwk systemòwëch ògłosów przistãpnëch w rumie mion MediaWiki.
Proszã zazdrzë na [http://www.mediawiki.org/wiki/Localisation Lokalizacëjô MediaWiki] ë [http://translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''\$wgUseDatabaseMessages''' je wëłączony.",
-'allmessagesfilter' => 'Filter mion ògłosów:',
-'allmessagesmodified' => 'Pòkażë blós zjinaczone',
# Thumbnails
'thumbnail-more' => 'Zwiszi',
@@ -964,7 +970,7 @@ Mòżesz òbaczëc ji zdrój.',
# Attribution
'anonymous' => 'Anonimòwi {{PLURAL:$1|brëkòwnik|brëkòwnicë}} na {{SITENAME}}',
'siteuser' => 'Brëkòwnik {{SITENAME}} $1',
-'lastmodifiedatby' => 'Na starna bëła slédno editowónô $2, $1 przez $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Na starna bëła slédno editowónô $2, $1 przez $3.',
'othercontribs' => 'Òpiarté na prôcë $1.',
'others' => 'jiné',
@@ -979,6 +985,9 @@ Mòżesz òbaczëc ji zdrój.',
'mw_math_modern' => 'Zalécóné dlô nowoczasnëch przezérników',
'mw_math_mathml' => 'Wëskrzëniwôj jakno MathML jeżlë mòżlëwé (eksperimentalné)',
+# Math errors
+'math_failure' => 'Parser nie rozmiôł rozpòznac',
+
# Browsing diffs
'previousdiff' => '← Pòprzédnô edicëjô',
'nextdiff' => 'Nôslédnô edicëjô →',
@@ -1030,7 +1039,7 @@ Nôslédné lënczi w réżce bãdą ùwzglãdniwóné jakno wëjimczi – są t
'watchlisttools-raw' => 'Editëjë sërą lëstã',
# Special:Version
-'version' => 'Wersëjô', # Not used as normal message but as header for the special page itself
+'version' => 'Wersëjô',
# Special:SpecialPages
'specialpages' => 'Specjalné starnë',
diff --git a/languages/messages/MessagesCu.php b/languages/messages/MessagesCu.php
index fd504527..168fed35 100644
--- a/languages/messages/MessagesCu.php
+++ b/languages/messages/MessagesCu.php
@@ -147,16 +147,42 @@ $messages = array(
'linkprefix' => '/^(.*?)(„|«)$/sD',
-'about' => 'опьса́ниѥ',
+'about' => 'опьса́ниѥ',
+'moredotdotdot' => 'вѧ́щє ···',
+'mypage' => 'моꙗ́ страни́ца',
+'mytalk' => 'моꙗ́ бєсѣ́да',
+'navigation' => 'пла́ваниѥ',
+'and' => '&#32;и',
+
+# Cologne Blue skin
'qbedit' => 'испра́ви',
'qbpageoptions' => 'си страни́ца',
'qbmyoptions' => 'моꙗ́ страни́цѧ',
'qbspecialpages' => 'наро́чьнꙑ страни́цѧ',
-'moredotdotdot' => 'вѧ́щє ···',
-'mypage' => 'моꙗ́ страни́ца',
-'mytalk' => 'моꙗ́ бєсѣ́да',
-'navigation' => 'пла́ваниѥ',
-'and' => '&#32;и',
+
+# Vector skin
+'vector-action-delete' => 'поничьжє́ниѥ',
+'vector-action-move' => 'прѣимєнова́ниѥ',
+'vector-action-protect' => 'ꙁабранѥ́ниѥ',
+'vector-action-unprotect' => 'поущє́ниѥ',
+'vector-namespace-category' => 'катигорі́ꙗ',
+'vector-namespace-help' => 'по́мощь',
+'vector-namespace-image' => 'дѣ́ло',
+'vector-namespace-main' => 'члѣ́нъ',
+'vector-namespace-media' => 'срѣ́дьства',
+'vector-namespace-mediawiki' => 'напьса́ниѥ',
+'vector-namespace-project' => 'съвѣ́тъ',
+'vector-namespace-special' => 'наро́чьна',
+'vector-namespace-talk' => 'бєсѣ́да',
+'vector-namespace-template' => 'обраꙁь́ць',
+'vector-namespace-user' => 'по́льꙃєватєл҄ь',
+'vector-view-create' => 'сътворѥ́ниѥ',
+'vector-view-edit' => 'испра́ви',
+'vector-view-history' => 'їсторі́ꙗ',
+'vector-view-view' => 'чьтѥ́ниѥ',
+'vector-view-viewsource' => 'страни́цѧ исто́чьнъ о́браꙁъ',
+'actions' => 'дѣ́иства',
+'namespaces' => 'имє́нъ просто́рꙑ',
'errorpagetitle' => 'блаꙁна',
'tagline' => '{{grammar:genitive|{{SITENAME}}}} страни́ца',
@@ -189,7 +215,7 @@ $messages = array(
'otherlanguages' => 'ДРОУГꙐ́ ѨꙀꙐКꙐ́',
'redirectedfrom' => '(прѣнаправлѥ́ниѥ о́тъ ⁖ $1 ⁖)',
'redirectpagesub' => 'прѣнаправлѥ́ниѥ',
-'lastmodifiedat' => 'страни́цѧ послѣ́дьнꙗ мѣ́на сътворѥна́ $2 · $1 бѣ ⁙', # $1 date, $2 time
+'lastmodifiedat' => 'страни́цѧ послѣ́дьнꙗ мѣ́на сътворѥна́ $2 · $1 бѣ ⁙',
'jumptonavigation' => 'пла́ваниѥ',
'jumptosearch' => 'иска́ниѥ',
@@ -240,14 +266,13 @@ $messages = array(
'viewsourcefor' => '$1 дѣлꙗ',
# Login and logout pages
-'logouttitle' => 'ис̾хо́дъ',
-'loginpagetitle' => 'Въходъ',
'yourname' => 'твоѥ́ и́мѧ',
'yourpassword' => 'Таино слово напиши',
'yourpasswordagain' => 'Опакы таиноѥ слово напиши',
'login' => 'Въниди',
'nav-login-createaccount' => 'въниди / съꙁи́жди си мѣ́сто',
'userlogin' => 'въниди / съꙁи́жди си мѣ́сто',
+'userloginnocreate' => 'въниди',
'logout' => 'ис̾хо́дъ',
'userlogout' => 'ис̾хо́дъ',
'nologinlink' => 'съꙁи́жди си мѣ́сто',
@@ -255,13 +280,6 @@ $messages = array(
'gotaccount' => "Мѣсто ти ѥстъ ли? '''$1'''.",
'gotaccountlink' => 'Въниди',
'userexists' => 'сѫщє по́льꙃєватєлꙗ и́мѧ пьса ⁙ ино иꙁобрѧщи',
-'username' => 'по́льꙃєватєлꙗ и́мѧ :',
-'uid' => 'по́льꙃєватєлꙗ число́ :',
-'yourrealname' => 'и́стиньно и́мѧ :',
-'yourlanguage' => 'ѩꙁꙑ́къ :',
-'yournick' => 'аѵто́графъ :',
-'gender-male' => 'мѫжъ',
-'gender-female' => 'жєна',
'loginerror' => 'въхода блаꙁна',
'accountcreated' => 'мѣ́сто сътворєно́ ѥ́стъ',
'loginlanguagelabel' => 'ѩꙁꙑ́къ : $1',
@@ -287,7 +305,7 @@ $messages = array(
'note' => "'''НАРОЧИ́ТО:'''",
'editing' => 'исправлѥ́ниѥ: $1',
'editingsection' => 'исправлѥ́ниѥ ⁖ $1 ⁖ (чѧ́сть)',
-'templatesused' => 'сѥѩ страни́цѧ с҄и обраꙁьци́ по́льꙃоуѭтъ сѧ сѫ́тъ :',
+'templatesused' => 'сѥѩ страни́цѧ {{PLURAL:$1|сь обраꙁь́ць по́льꙃоуѥтъ сѧ ѥ́стъ|с҄и обраꙁьца́ по́льꙃоуѭтъ сѧ ѥстє́|с҄и обраꙁьци́ по́льꙃоуѭтъ сѧ сѫ́тъ}} :',
'template-protected' => '(ꙁабранєно ѥ́стъ)',
# History pages
@@ -296,27 +314,23 @@ $messages = array(
'last' => 'пс҃лд',
'page_first' => 'прь́ва страни́ца',
'page_last' => 'послѣ́дьнꙗ страни́ца',
-'deletedrev' => '[поничьжєно ѥ́стъ]',
'histlast' => 'послѣ́дьнꙗ',
'historyempty' => '(поу́сто)',
# Revision feed
'history-feed-title' => 'мѣ́нъ їсторі́ꙗ',
-'history-feed-item-nocomment' => '$1 при $2', # user at time
+'history-feed-item-nocomment' => '$1 при $2',
# Revision deletion
'revdelete-uname' => 'по́льꙃєватєлꙗ и́мѧ',
-# Diffs
-'diff-with' => '&#32;съ $1 $2',
-'diff-with-final' => '&#32;и $1 $2',
-
# Search results
'searchresults' => 'иска́ниꙗ ито́гъ',
'searchresults-title' => 'иска́ниꙗ ⁖ $1 ⁖ ито́гъ',
'searchmenu-new' => "'''страни́цѫ ⁖ [[:$1]] ⁖ сътвори́ти мо́жєши'''",
'searchhelp-url' => 'Help:Ката́логъ',
-'searchprofile-images' => 'дѣ́ла',
+'searchprofile-articles' => 'члѣ́ни',
+'searchprofile-images' => 'дѣла́',
'searchprofile-everything' => 'вьсѩ́ страни́цѧ',
'searchprofile-articles-tooltip' => 'ищи въ $1',
'search-result-size' => '$1 ({{PLURAL:$2|$2 сло́во|$2 сло́ва|$2 словє́съ}})',
@@ -333,7 +347,14 @@ $messages = array(
'prefs-watchlist' => 'блюдє́ниꙗ',
'searchresultshead' => 'иска́ниѥ',
'prefs-searchoptions' => 'иска́ниꙗ строи́',
-'files' => 'дѣла́',
+'prefs-files' => 'дѣла́',
+'username' => 'по́льꙃєватєлꙗ и́мѧ :',
+'uid' => 'по́льꙃєватєлꙗ число́ :',
+'yourrealname' => 'и́стиньно и́мѧ :',
+'yourlanguage' => 'ѩꙁꙑ́къ :',
+'yournick' => 'аѵто́графъ :',
+'gender-male' => 'мѫжъ',
+'gender-female' => 'жєна',
# Groups
'group-user' => 'по́льꙃєватєлє',
@@ -375,8 +396,10 @@ $messages = array(
'boteditletter' => 'а҃ѵ',
# Recent changes linked
-'recentchangeslinked' => 'съвѧ́ꙁанꙑ страни́цѧ',
-'recentchangeslinked-page' => 'страни́цѧ и́мѧ :',
+'recentchangeslinked' => 'съвѧ́ꙁанꙑ страни́цѧ',
+'recentchangeslinked-feed' => 'съвѧ́ꙁанꙑ страни́цѧ',
+'recentchangeslinked-toolbox' => 'съвѧ́ꙁанꙑ страни́цѧ',
+'recentchangeslinked-page' => 'страни́цѧ и́мѧ :',
# Upload
'upload' => 'положє́ниѥ дѣ́ла',
@@ -398,6 +421,7 @@ $messages = array(
'listfiles_size' => 'мѣ́ра',
# File description page
+'file-anchor-link' => 'ви́дъ',
'filehist' => 'дѣ́ла їсторі́ꙗ',
'filehist-deleteone' => 'поничьжє́ниѥ',
'filehist-current' => 'нꙑнѣщьн҄ь о́браꙁъ',
@@ -431,8 +455,8 @@ $messages = array(
'disambiguations' => 'мъногосъмꙑ́слиꙗ',
'disambiguationspage' => 'Template:мъногосъмꙑ́слиѥ',
-'brokenredirects-edit' => '(испра́ви)',
-'brokenredirects-delete' => '(поничьжє́ниѥ)',
+'brokenredirects-edit' => 'испра́ви',
+'brokenredirects-delete' => 'поничьжє́ниѥ',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|ба́итъ|ба́ита|ба́итъ}}',
@@ -534,6 +558,8 @@ $messages = array(
'uctop' => '(послѣ́дьнꙗ мѣ́на)',
'sp-contributions-blocklog' => 'ꙁаграждє́ниꙗ їсторі́ꙗ',
+'sp-contributions-deleted' => 'пони́чьжєнꙑ добродѣꙗ́ниꙗ',
+'sp-contributions-talk' => 'бєсѣ́да',
'sp-contributions-submit' => 'ищи́',
# What links here
@@ -560,7 +586,7 @@ $messages = array(
'move-watch' => 'си страни́цѧ блюдє́ниѥ',
'movepagebtn' => 'прѣимєнова́ниѥ',
'pagemovedsub' => 'прѣимєнова́ниѥ сътворѥно́ ѥ́стъ',
-'movepage-moved' => "'''⁖ $1 ⁖ нарєчє́нъ ⁖ $2⁖ ѥ́стъ'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''⁖ $1 ⁖ нарєчє́нъ ⁖ $2⁖ ѥ́стъ'''",
'movedto' => 'прѣимєновано въ',
'movetalk' => 'си страни́цѧ бєсѣ́дꙑ прѣимєнова́ниѥ',
'1movedto2' => '⁖ [[$1]] ⁖ нарєчє́нъ ⁖ [[$2]] ⁖ ѥ́стъ',
@@ -572,24 +598,25 @@ $messages = array(
'allmessagesname' => 'и́мѧ',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'твоꙗ́ по́льꙃєватєл҄ьска страни́ца',
-'tooltip-pt-mytalk' => 'твоꙗ́ бєсѣ́дꙑ страни́ца',
-'tooltip-pt-preferences' => 'твоꙗ́ строи',
-'tooltip-pt-mycontris' => 'твоꙗ́ добродѣꙗ́ниѩ ката́логъ',
-'tooltip-pt-logout' => 'ис̾хо́дъ',
-'tooltip-ca-viewsource' => 'си страни́ца ꙁабранєна́ ѥ́стъ ⁙
+'tooltip-pt-userpage' => 'твоꙗ́ по́льꙃєватєл҄ьска страни́ца',
+'tooltip-pt-mytalk' => 'твоꙗ́ бєсѣ́дꙑ страни́ца',
+'tooltip-pt-preferences' => 'твоꙗ́ строи',
+'tooltip-pt-mycontris' => 'твоꙗ́ добродѣꙗ́ниѩ ката́логъ',
+'tooltip-pt-logout' => 'ис̾хо́дъ',
+'tooltip-ca-viewsource' => 'си страни́ца ꙁабранєна́ ѥ́стъ ⁙
ѥѩ исто́чьнъ о́браꙁъ ви́дєти мо́жєщи',
-'tooltip-ca-protect' => 'си страни́цѧ ꙁабранє́ниѥ',
-'tooltip-ca-delete' => 'си страни́цѧ поничьжє́ниѥ',
-'tooltip-ca-move' => 'си страни́цѧ прѣимєнова́ниѥ',
-'tooltip-ca-watch' => 'си страни́цѧ блюдє́ниѥ',
-'tooltip-p-logo' => 'гла́вьна страни́ца',
-'tooltip-n-mainpage' => 'ви́ждь гла́вьнѫ страни́цѫ',
-'tooltip-n-recentchanges' => 'послѣ́дьнъ мѣ́нъ ката́логъ',
-'tooltip-t-upload' => 'положє́ниѥ дѣ́лъ',
-'tooltip-t-specialpages' => 'вьсѣѩ наро́чьнъ страни́цѧ ката́логъ',
-'tooltip-ca-nstab-special' => 'си наро́чьна страни́ца ѥ́стъ · ѥѩжє иꙁмѣнꙗ́ти нє можєши',
-'tooltip-watch' => 'си страни́цѧ блюдє́ниѥ',
+'tooltip-ca-protect' => 'си страни́цѧ ꙁабранє́ниѥ',
+'tooltip-ca-delete' => 'си страни́цѧ поничьжє́ниѥ',
+'tooltip-ca-move' => 'си страни́цѧ прѣимєнова́ниѥ',
+'tooltip-ca-watch' => 'си страни́цѧ блюдє́ниѥ',
+'tooltip-p-logo' => 'гла́вьна страни́ца',
+'tooltip-n-mainpage' => 'ви́ждь гла́вьнѫ страни́цѫ',
+'tooltip-n-mainpage-description' => 'ви́ждь гла́вьнѫ страни́цѫ',
+'tooltip-n-recentchanges' => 'послѣ́дьнъ мѣ́нъ ката́логъ',
+'tooltip-t-upload' => 'положє́ниѥ дѣ́лъ',
+'tooltip-t-specialpages' => 'вьсѣѩ наро́чьнъ страни́цѧ ката́логъ',
+'tooltip-ca-nstab-special' => 'си наро́чьна страни́ца ѥ́стъ · ѥѩжє иꙁмѣнꙗ́ти нє можєши',
+'tooltip-watch' => 'си страни́цѧ блюдє́ниѥ',
# Media information
'file-info-size' => '($1 × $2 п҃ѯ · дѣ́ла мѣ́ра : $3 · MIME тѵ́пъ : $4)',
@@ -622,8 +649,8 @@ $messages = array(
'size-bytes' => '$1 Б҃',
# Special:Version
-'version' => 'MediaWiki о́браꙁъ', # Not used as normal message but as header for the special page itself
-'version-version' => 'о́браꙁъ',
+'version' => 'MediaWiki о́браꙁъ',
+'version-version' => '(о́браꙁъ $1)',
'version-license' => 'прощє́ниѥ',
'version-software-version' => 'о́браꙁъ',
diff --git a/languages/messages/MessagesCv.php b/languages/messages/MessagesCv.php
index b577bb21..5bc40db5 100644
--- a/languages/messages/MessagesCv.php
+++ b/languages/messages/MessagesCv.php
@@ -20,11 +20,9 @@ $linkPrefixExtension = true;
$namespaceNames = array(
NS_MEDIA => 'Медиа',
NS_SPECIAL => 'Ятарлă',
- NS_MAIN => '',
NS_TALK => 'Сӳтсе явасси',
NS_USER => 'Хутшăнакан',
NS_USER_TALK => 'Хутшăнаканăн_канашлу_страници',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_сӳтсе_явмалли',
NS_FILE => 'Ӳкерчĕк',
NS_FILE_TALK => 'Ӳкерчĕке_сӳтсе_явмалли',
@@ -145,7 +143,7 @@ $messages = array(
'category-media-header' => '«$1» категорири файлсем',
'category-empty' => "''Хальхи вăхăтра ку категори пушă.''",
'hidden-categories' => '{{PLURAL:$1|Пытарнă категори|Пытарнă категорисем}}',
-'hidden-category-category' => 'Пытарнă категорисем', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Пытарнă категорисем',
'category-subcat-count' => '{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}',
'category-subcat-count-limited' => 'Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.',
'category-article-count' => '{{PLURAL:$2|Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
@@ -163,10 +161,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki тăрăх час-часах ыйтакан ыйтусемпе хуравсем];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верси тухнине пĕлтерекен рассылка].',
-'about' => 'Ăнлантаркăч',
-'article' => 'Статья',
-'newwindow' => '(çĕнĕ чӳречере)',
-'cancel' => 'Пăрахăçла',
+'about' => 'Ăнлантаркăч',
+'article' => 'Статья',
+'newwindow' => '(çĕнĕ чӳречере)',
+'cancel' => 'Пăрахăçла',
+'moredotdotdot' => 'Малалла…',
+'mypage' => 'Ман страница',
+'mytalk' => 'Ман канашлу страници',
+'anontalk' => 'Çак IP-адреса сӳтсе явни',
+'navigation' => 'Меню',
+'and' => '&#32;тата',
+
+# Cologne Blue skin
'qbfind' => 'Шырав',
'qbbrowse' => 'Курăм',
'qbedit' => 'Тӳрлет',
@@ -174,15 +180,19 @@ $messages = array(
'qbpageinfo' => 'Страница çинчен',
'qbmyoptions' => 'Сирĕн ĕнĕрлевсем',
'qbspecialpages' => 'Ятарлӑ страницӑсем',
-'moredotdotdot' => 'Малалла…',
-'mypage' => 'Ман страница',
-'mytalk' => 'Ман канашлу страници',
-'anontalk' => 'Çак IP-адреса сӳтсе явни',
-'navigation' => 'Меню',
-'and' => '&#32;тата',
-
-# Metadata in edit box
-'metadata_help' => 'Метаданнăйсем:',
+'faq' => 'ЫйХу',
+'faqpage' => 'Project:ЫйХу',
+
+# Vector skin
+'vector-action-delete' => 'Кăларса пăрах',
+'vector-action-move' => 'Ятне улăштар',
+'vector-action-protect' => 'Хӳтĕле',
+'vector-namespace-category' => 'Категори',
+'vector-namespace-help' => 'Пулăшу страници',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Страница',
+'vector-namespace-talk' => 'Сӳтсе яв',
+'vector-namespace-template' => 'Шаблон',
'errorpagetitle' => 'Йăнăш',
'returnto' => '$1 страницăна таврăн.',
@@ -232,7 +242,7 @@ $messages = array(
'otherlanguages' => 'Урăх чěлхесем',
'redirectedfrom' => '($1 çинчен куçарнă)',
'redirectpagesub' => 'Куçаракан страница',
-'lastmodifiedat' => 'Ку страницăна юлашки улăштарнă вăхăт: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ку страницăна юлашки улăштарнă вăхăт: $2, $1.',
'viewcount' => 'Ку страницăна $1 хут пăхнă.',
'protectedpage' => 'Хӳтĕленĕ статья',
'jumpto' => 'Куçас:',
@@ -243,7 +253,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} çинчен',
'aboutpage' => 'Project:çинчен',
'copyright' => 'Ку ăшлăх $1 килĕшӳллĕн сарăлать.',
-'copyrightpagename' => '{{SITENAME}} проектăн автор прависем',
'copyrightpage' => '{{ns:project}}:Автор прависем',
'currentevents' => 'Хыпарсем',
'currentevents-url' => 'Project:Хыпарсем',
@@ -251,8 +260,6 @@ $messages = array(
'disclaimerpage' => 'Project:Яваплăха тивĕçтерменни',
'edithelp' => 'Улшăнусене кĕртме пулăшакан пулăшу',
'edithelppage' => 'Help:Улшăнусене кĕртме пулăшакан пулăшу',
-'faq' => 'ЫйХу',
-'faqpage' => 'Project:ЫйХу',
'helppage' => 'Help:Пулăшу',
'mainpage' => 'Тĕп страницă',
'mainpage-description' => 'Тĕп страницă',
@@ -326,10 +333,6 @@ MySQL çак йăнăша тавăрнă <tt>«$3: $4»</tt>.',
«$1»
«$2» функци ыйтнă.
MySQL çак йăнăша тавăрнă «$3: $4».',
-'noconnect' => 'Каçарăр та, хальхи вăхăтра техника йăнăшне пула пĕлĕм пуххин серверĕпе çыханаймастпăр.<br />
-$1',
-'nodb' => '$1 пĕлĕм пуххине усă курма май çук',
-'cachederror' => 'Аяларах эсир ыйтнă страницăн кэшри копине куратăр; вăл кивелме те пултарнă.',
'laggedslavemode' => 'Асăрхăр! Страница çинче юлашки улшăнусене кăтартмасăр пултарнă.',
'readonly' => 'Пĕлĕм пуххине çырассине чарса хунă',
'enterlockreason' => 'Чарнин сăлтавне тата палăртнă вăхăта кăтартăр.',
@@ -384,7 +387,6 @@ $1',
'virus-unknownscanner' => 'паллă мар антивирус:',
# Login and logout pages
-'logouttitle' => 'Сайтран тух',
'logouttext' => 'Эсир палласа илмен хутшăнакан евĕр ĕçлетĕр.
Сайт сире ятпа мар, IP-адрес урлă пĕлет.
Эсир анонимла, е малтанхи евĕрлĕ çĕнĕ сеанс уçса, е урăх ятпа ĕçлеме пултаратăр.
@@ -392,7 +394,6 @@ $1',
'welcomecreation' => '== Ырă сунса кĕтетпĕр, $1! ==
Эсир пирĕн патăмăрта çырăнтăр.
[[Special:Preferences|Сайт ĕнĕрлевĕсене хăвсамăра кирлĕ пек]] лартма ан манса кайăр.',
-'loginpagetitle' => 'Сайта кĕр',
'yourname' => 'Сирĕн ят',
'yourpassword' => 'Вăрттăн сăмах:',
'yourpasswordagain' => 'Вăрттăн сăмах тепре çырăр:',
@@ -413,19 +414,7 @@ $1',
'createaccountmail' => 'эл. почта тăрăх',
'badretype' => 'Эсир кăтартнă парольсем пĕр пек мар.',
'userexists' => 'Эсир усă курас теекен ята йышăннă. Тархасшăн, урăх ят суйласа илĕр.',
-'youremail' => 'Электронлă почта:',
-'username' => 'Хутшăнакан ячĕ:',
-'uid' => 'Хутшăнакан идентификаторĕ:',
-'yourrealname' => 'Сирĕн чăн ят (*)',
-'yourlanguage' => 'Интерфейс чĕлхи:',
-'yourvariant' => 'Чĕлхе варианчĕ',
-'yournick' => 'Сирĕн ят (алă пусма усă курăнĕ):',
-'badsig' => 'Алă пуснинче йăнăш пур. HTML тэгĕсене тĕрĕслĕр.',
-'badsiglength' => 'Алă пусни ытла вăрăм, $1 символтан кĕскерех пулмалла.',
-'email' => 'Эл. почта',
'loginerror' => 'Хутшăнакана палласа илеймерĕмĕр',
-'prefs-help-email' => 'Электронлă почта (вăл кирлисем шутне кĕмест пулин те) ытти хутшăнакансене сирĕнпе ун урлă çыхăнма май парать. Çыхăну тытнă вăхăтра ыттисем сирĕн адреса пĕлеймеççĕ.',
-'prefs-help-email-required' => 'Электронлă почтăн адресне кăтартмалла.',
'noname' => 'Эсир килĕшӳллĕ хутшăнаканăн ятне кăтартман.',
'loginsuccesstitle' => 'Сайта кĕтĕмĕр',
'loginsuccess' => 'Халĕ эсир $1 ятпа ĕçлетĕр.',
@@ -559,8 +548,8 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'viewpagelogs' => 'Ку страницăн журналĕсене пăхасси',
'nohistory' => 'Ку страницăн улшăнусен журналĕ çук.',
'currentrev' => 'Хальхи верси',
-'revisionasof' => '$1 верси',
-'revision-info' => '$1 версийĕ; $2', # Additionally available: $3: revision id
+'revisionasof' => '$1 сăнташ',
+'revision-info' => '$1 версийĕ; $2',
'previousrevision' => '&larr;Малтанхи верси',
'nextrevision' => 'Çěнěрех верси→',
'currentrevisionlink' => 'хальхи верси çине куç',
@@ -569,7 +558,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'last' => 'малт.',
'page_first' => 'пĕрремĕш',
'page_last' => 'юлашки',
-'deletedrev' => '[кăларса пăрахнă]',
'histfirst' => 'Пĕрремĕш',
'histlast' => 'Юлашки',
'historysize' => '$1 байт',
@@ -584,6 +572,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'rev-deleted-user' => '(автор ятне хуратнă)',
'rev-deleted-event' => '(кăларса пăрахнă)',
'rev-delundel' => 'кăтарт/пытар',
+'rev-showdeleted' => 'кăтарт',
'revdelete-legend' => 'Чару ларт:',
'revdelete-hide-text' => 'Страницăн çак верси текстне пытар',
'revdelete-hide-comment' => 'Комментарине пытар',
@@ -608,44 +597,56 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'searchresults' => 'Тупрăмăр',
'notitlematches' => 'Статьясен ячĕсем пĕр пек мар',
'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
-'prevn' => 'малтанхи $1',
-'nextn' => 'малалли $1',
+'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
+'nextn' => 'малалли {{PLURAL:$1|$1}}',
'searchhelp-url' => 'Help:Пулăшу',
'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
'powersearch' => 'Анлă шырав',
'powersearch-legend' => 'Анлă шырав',
+# Quickbar
+'qbsettings' => 'Навигаци хăми',
+
# Preferences page
-'preferences' => 'Ĕнерлевсем',
-'mypreferences' => 'Ман ĕнерлевсем',
-'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
-'prefsnologin' => 'Эсир сайта кĕмен',
-'qbsettings' => 'Навигаци хăми',
-'changepassword' => 'Пароле улăштар',
-'skin' => 'Ерешленӳ',
-'skin-preview' => 'Малтанхи курăну',
-'dateformat' => 'Дата формачĕ',
-'datedefault' => 'Палăртман чухнехи',
-'math_syntax_error' => 'синтаксис йăнăшĕ',
-'prefs-rc' => 'Юлашки улшăнусен страници',
-'prefs-watchlist' => 'Сăнав списокĕ',
-'prefs-misc' => 'Ытти ĕнерлевсем',
-'saveprefs' => 'Çырса хур',
-'textboxsize' => 'Тӳрлетни',
-'rows' => 'Йěркесем',
-'columns' => 'Юпасем:',
-'searchresultshead' => 'Шыраса тупрăмăр',
-'recentchangesdays' => 'Çак кунсен хушшинчи юлашки улшăнусене кăтартмалла:',
-'recentchangescount' => 'Списокра çакăн чухлĕ тӳрлетӳ кăтартмалла:',
-'savedprefs' => 'Сирĕн ĕнерлевсене сыхласа хăвартăмăр',
-'timezonelegend' => 'Сехет поясĕ',
-'localtime' => 'Вырăнти вăхăт',
-'servertime' => 'Сервер вăхăчě',
-'files' => 'Файлсем',
+'preferences' => 'Ĕнерлевсем',
+'mypreferences' => 'Ман ĕнерлевсем',
+'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
+'prefsnologin' => 'Эсир сайта кĕмен',
+'changepassword' => 'Пароле улăштар',
+'prefs-skin' => 'Ерешленӳ',
+'skin-preview' => 'Малтанхи курăну',
+'datedefault' => 'Палăртман чухнехи',
+'prefs-rc' => 'Юлашки улшăнусен страници',
+'prefs-watchlist' => 'Сăнав списокĕ',
+'prefs-misc' => 'Ытти ĕнерлевсем',
+'saveprefs' => 'Çырса хур',
+'prefs-editing' => 'Тӳрлетни',
+'rows' => 'Йěркесем',
+'columns' => 'Юпасем:',
+'searchresultshead' => 'Шыраса тупрăмăр',
+'recentchangesdays' => 'Çак кунсен хушшинчи юлашки улшăнусене кăтартмалла:',
+'recentchangescount' => 'Списокра çакăн чухлĕ тӳрлетӳ кăтартмалла:',
+'savedprefs' => 'Сирĕн ĕнерлевсене сыхласа хăвартăмăр',
+'timezonelegend' => 'Сехет поясĕ',
+'localtime' => 'Вырăнти вăхăт',
+'servertime' => 'Сервер вăхăчě',
+'prefs-files' => 'Файлсем',
+'youremail' => 'Электронлă почта:',
+'username' => 'Хутшăнакан ячĕ:',
+'uid' => 'Хутшăнакан идентификаторĕ:',
+'yourrealname' => 'Сирĕн чăн ят (*)',
+'yourlanguage' => 'Интерфейс чĕлхи:',
+'yourvariant' => 'Чĕлхе варианчĕ',
+'yournick' => 'Сирĕн ят (алă пусма усă курăнĕ):',
+'badsig' => 'Алă пуснинче йăнăш пур. HTML тэгĕсене тĕрĕслĕр.',
+'badsiglength' => 'Алă пусни ытла вăрăм, $1 символтан кĕскерех пулмалла.',
+'email' => 'Эл. почта',
+'prefs-help-email' => 'Электронлă почта (вăл кирлисем шутне кĕмест пулин те) ытти хутшăнакансене сирĕнпе ун урлă çыхăнма май парать. Çыхăну тытнă вăхăтра ыттисем сирĕн адреса пĕлеймеççĕ.',
+'prefs-help-email-required' => 'Электронлă почтăн адресне кăтартмалла.',
# User rights
-'userrights' => 'Хутшăнакансен прависемпе ĕçлесси', # Not used as normal message but as header for the special page itself
+'userrights' => 'Хутшăнакансен прависемпе ĕçлесси',
'userrights-lookup-user' => 'Хутшăнакансен ушкăнĕсемпе ĕçлесси',
'userrights-user-editname' => 'Хутшăнакан ятне кăтартăр:',
'editinguser' => "тӳрлетни '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -680,29 +681,36 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'rightsnone' => '(çук)',
# Recent changes
-'recentchanges' => 'Улшăнусем',
-'recentchanges-legend' => 'Çĕнĕ улшăнусен ĕнерлевĕ',
-'rcnote' => 'Юлашки <strong>$2</strong> кун хушшинчи <strong>$1</strong> улшăнусем. Халě пěтěмпе <strong>{{NUMBEROFARTICLES}}</strong> статья.',
-'rclistfrom' => 'Юлашки улшăнусене $1 вăхăтран пуçласа кăтартнă',
-'rcshowhideminor' => 'пĕчĕк тӳрлетӳсене $1',
-'rcshowhidebots' => 'ботсене $1',
-'rcshowhideliu' => 'сайта кĕнĕскерсене $1',
-'rcshowhideanons' => 'ячĕсене палăртманскерсене $1',
-'rcshowhidepatr' => 'тĕрĕсленĕ тӳрлетӳсене $1',
-'rcshowhidemine' => 'хăвăн тӳрлетӳсене $1',
-'rclinks' => 'Юлашки $2 кун хушшинче тунă $1 улшăнусене кăтартмалла<br />$3',
-'diff' => 'танл.',
-'hist' => 'истори',
-'hide' => 'кăтартмалла мар',
-'show' => 'кăтартмалла',
-'minoreditletter' => 'п',
-'newpageletter' => 'Ç',
-'rc_categories_any' => 'Кашни',
-'newsectionsummary' => '/* $1 */ Çĕнĕ тема',
+'recentchanges' => 'Улшăнусем',
+'recentchanges-legend' => 'Çĕнĕ улшăнусен ĕнерлевĕ',
+'recentchanges-legend-newpage' => '$1 — çĕнĕ страница',
+'recentchanges-legend-minor' => '$1 — пĕчĕк улшăну',
+'recentchanges-legend-bot' => '$1 — бот улăштарни',
+'recentchanges-label-bot' => 'Ку улшăнăва бот тунă',
+'recentchanges-legend-unpatrolled' => '$1 — тĕрĕслемен улшăну',
+'rcnote' => 'Юлашки <strong>$2</strong> кун хушшинчи <strong>$1</strong> улшăнусем. Халě пěтěмпе <strong>{{NUMBEROFARTICLES}}</strong> статья.',
+'rclistfrom' => 'Юлашки улшăнусене $1 вăхăтран пуçласа кăтартнă',
+'rcshowhideminor' => 'пĕчĕк тӳрлетӳсене $1',
+'rcshowhidebots' => 'ботсене $1',
+'rcshowhideliu' => 'сайта кĕнĕскерсене $1',
+'rcshowhideanons' => 'ячĕсене палăртманскерсене $1',
+'rcshowhidepatr' => 'тĕрĕсленĕ тӳрлетӳсене $1',
+'rcshowhidemine' => 'хăвăн тӳрлетӳсене $1',
+'rclinks' => 'Юлашки $2 кун хушшинче тунă $1 улшăнусене кăтартмалла<br />$3',
+'diff' => 'танл.',
+'hist' => 'истори',
+'hide' => 'кăтартмалла мар',
+'show' => 'кăтартмалла',
+'minoreditletter' => 'п',
+'newpageletter' => 'Ç',
+'rc_categories_any' => 'Кашни',
+'newsectionsummary' => '/* $1 */ Çĕнĕ тема',
# Recent changes linked
-'recentchangeslinked' => 'Çыхăннă улшăнусем',
-'recentchangeslinked-page' => 'Страница ячĕ:',
+'recentchangeslinked' => 'Çыхăннă улшăнусем',
+'recentchangeslinked-feed' => 'Çыхăннă улшăнусем',
+'recentchangeslinked-toolbox' => 'Çыхăннă улшăнусем',
+'recentchangeslinked-page' => 'Страница ячĕ:',
# Upload
'upload' => 'Файла кĕртесси',
@@ -759,6 +767,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'listfiles_description' => 'Ăнлантаркăч',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файл историйĕ',
'filehist-current' => 'хальхи',
'filehist-user' => 'Хутшăнакан',
@@ -766,9 +775,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'imagelinks' => 'Файл çине каçасем',
'linkstoimage' => 'Çак страницăсем ку файл çине кăтартаççĕ:',
'nolinkstoimage' => 'Ку файл çине кăтартакан страницăсем çук.',
-'shareduploadwiki' => 'Тĕплĕнрех информацине $1 синче тупма пулать.',
-'noimage' => 'Ун пек ятлă файл çук, эсир ăна $1.',
-'noimage-linktext' => 'кĕртме пултаратăр',
'uploadnewversion-linktext' => 'Ку файлăн çĕнĕ версине кĕрт',
# File reversion
@@ -818,8 +824,8 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'brokenredirects' => 'Татăк куçару страницисем',
'brokenredirectstext' => 'Ку куçару страницисем çук страницăна куçараççĕ:',
-'brokenredirects-edit' => '(тӳрлет)',
-'brokenredirects-delete' => '(кăларса пăрах)',
+'brokenredirects-edit' => 'тӳрлет',
+'brokenredirects-delete' => 'кăларса пăрах',
'fewestrevisions' => 'Сахал тӳрлетнĕ статьясем',
@@ -987,9 +993,11 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'contribsub2' => '$1 ӳсĕмĕ ($2)',
'uctop' => ' (пуçламăш)',
-'sp-contributions-blocklog' => 'Чарса лартнисен журналĕ',
-'sp-contributions-search' => 'Тӳпе шыравĕ',
-'sp-contributions-submit' => 'Шырас',
+'sp-contributions-blocklog' => 'Чарса лартнисен журналĕ',
+'sp-contributions-talk' => 'Сӳтсе яв',
+'sp-contributions-userrights' => 'Хутшăнакансен прависемпе ĕçлесси',
+'sp-contributions-search' => 'Тӳпе шыравĕ',
+'sp-contributions-submit' => 'Шырас',
# What links here
'whatlinkshere' => 'Кунта килекен каçăсем',
@@ -1002,7 +1010,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'blockip' => 'Хăтшăнакана ĕçлеме чар',
'ipbreason' => 'Сăлтавĕ',
'ipbother' => 'Урăх вăхăт:',
-'ipboptions' => '2 сехет:2 hours,1 кун:1 day,3 кун:3 days,1 эрне:1 week,2 эрне:2 weeks,1 уйăх:1 month,3 уйăх:3 months,6 уйăх:6 months,1 çул:1 year,яванлăха:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сехет:2 hours,1 кун:1 day,3 кун:3 days,1 эрне:1 week,2 эрне:2 weeks,1 уйăх:1 month,3 уйăх:3 months,6 уйăх:6 months,1 çул:1 year,яванлăха:infinite',
'ipbotheroption' => 'урăххи',
'badipaddress' => 'IP-адрес формачĕ тĕрĕс мар, е ку ятлă хутшăнакан кунта çук.',
'blockipsuccesssub' => 'Ĕçлеме чартăмăр',
@@ -1052,10 +1060,9 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'export-templates' => 'Шаблонсене ĕçлеттер',
# Namespace 8 related
-'allmessages' => 'Система пĕлтерĕвĕсем',
-'allmessagesname' => 'Пĕлтерӳ',
-'allmessagescurrent' => 'Хальхи текст',
-'allmessagesmodified' => 'Улăштарнисене кăна кăтартмалла',
+'allmessages' => 'Система пĕлтерĕвĕсем',
+'allmessagesname' => 'Пĕлтерӳ',
+'allmessagescurrent' => 'Хальхи текст',
# Thumbnails
'thumbnail-more' => 'Пысăклатмалли',
@@ -1097,7 +1104,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
# Attribution
'anonymous' => '{{GRAMMAR:genitive|{{SITENAME}}}} анонимлă хутшăнакансем',
-'lastmodifiedatby' => 'Ку страницăна юлашки хут $2, $1 вăхăтра $3 хутшăнакан улăштарнă.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ку страницăна юлашки хут $2, $1 вăхăтра $3 хутшăнакан улăштарнă.',
'othercontribs' => '$1 ĕçĕ çинче никĕсленнĕ.',
'others' => 'ыттисем',
'creditspage' => 'Пархатарлăх',
@@ -1118,6 +1125,9 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'mw_math_html' => 'май пулсан HTML, май çук пулсан — PNG',
'mw_math_modern' => 'Хальхи браузерсемпе усă курмашкăн сĕннĕ пек',
+# Math errors
+'math_syntax_error' => 'синтаксис йăнăшĕ',
+
# Patrolling
'markaspatrolleddiff' => 'Тĕрĕсленĕ тесе палăрт',
'markaspatrolledtext' => 'Ку статьяна тĕрĕсленĕ тесе палăртмалла',
@@ -1152,7 +1162,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'exif-scenecapturetype-0' => 'Стандартлă',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'км/сех',
# External editor support
@@ -1211,7 +1221,7 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
'watchlisttools-view' => 'Ку тӳрлетӳпе çыхăннăскерсем',
# Special:Version
-'version' => 'MediaWiki версийĕ', # Not used as normal message but as header for the special page itself
+'version' => 'MediaWiki версийĕ',
# Special:FilePath
'filepath' => 'Файл çулĕ',
diff --git a/languages/messages/MessagesCy.php b/languages/messages/MessagesCy.php
index 5b1483db..fdd29a38 100644
--- a/languages/messages/MessagesCy.php
+++ b/languages/messages/MessagesCy.php
@@ -15,24 +15,22 @@
*/
$namespaceNames = array(
- NS_MEDIA => "Media",
- NS_SPECIAL => "Arbennig",
- NS_MAIN => "",
- NS_TALK => "Sgwrs",
- NS_USER => "Defnyddiwr",
- NS_USER_TALK => "Sgwrs_Defnyddiwr",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => "Sgwrs_$1",
- NS_FILE => "Delwedd",
- NS_FILE_TALK => "Sgwrs_Delwedd",
- NS_MEDIAWIKI => "MediaWici",
- NS_MEDIAWIKI_TALK => "Sgwrs_MediaWici",
- NS_TEMPLATE => "Nodyn",
- NS_TEMPLATE_TALK => "Sgwrs_Nodyn",
- NS_CATEGORY => "Categori",
- NS_CATEGORY_TALK => "Sgwrs_Categori",
- NS_HELP => "Cymorth",
- NS_HELP_TALK => "Sgwrs Cymorth"
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Arbennig',
+ NS_TALK => 'Sgwrs',
+ NS_USER => 'Defnyddiwr',
+ NS_USER_TALK => 'Sgwrs_Defnyddiwr',
+ NS_PROJECT_TALK => 'Sgwrs_$1',
+ NS_FILE => 'Delwedd',
+ NS_FILE_TALK => 'Sgwrs_Delwedd',
+ NS_MEDIAWIKI => 'MediaWici',
+ NS_MEDIAWIKI_TALK => 'Sgwrs_MediaWici',
+ NS_TEMPLATE => 'Nodyn',
+ NS_TEMPLATE_TALK => 'Sgwrs_Nodyn',
+ NS_HELP => 'Cymorth',
+ NS_HELP_TALK => 'Sgwrs Cymorth',
+ NS_CATEGORY => 'Categori',
+ NS_CATEGORY_TALK => 'Sgwrs_Categori',
);
@@ -50,7 +48,7 @@ $magicWords = array(
'redirect' => array( '0', '#ail-cyfeirio', '#ailgyfeirio', '#REDIRECT' ),
'notoc' => array( '0', '__DIMTAFLENCYNNWYS__', '__DIMRHESTRGYNNWYS__', '__DIMRHG__', '__NOTOC__' ),
'noeditsection' => array( '0', '__DIMADRANGOLYGU__', '__DIMGOLYGUADRAN__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'MISCYFOES', 'MISCYFREDOL', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'MISCYFOES', 'MISCYFREDOL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ENWMISCYFOES', 'ENWMISCYFREDOL', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'GENENWMISCYFOES', 'CURRENTMONTHNAMEGEN' ),
'currentday' => array( '1', 'DYDDIADCYFOES', 'DYDDCYFREDOL', 'CURRENTDAY' ),
@@ -83,7 +81,6 @@ $magicWords = array(
'img_sub' => array( '1', 'is', 'sub' ),
'img_super' => array( '1', 'uwch', 'super', 'sup' ),
'img_top' => array( '1', 'brig', 'top' ),
- 'img_middle' => array( '1', 'canol', 'middle' ),
'img_bottom' => array( '1', 'gwaelod', 'godre', 'bottom' ),
'server' => array( '0', 'GWEINYDD', 'SERVER' ),
'servername' => array( '0', 'ENW\'RGWEINYDD', 'SERVERNAME' ),
@@ -146,6 +143,7 @@ $messages = array(
'tog-enotifminoredits' => 'Gyrru e-bost ataf hefyd ar gyfer golygiadau bychain i dudalennau',
'tog-enotifrevealaddr' => 'Datguddio fy nghyfeiriad e-bost mewn e-byst hysbysu',
'tog-shownumberswatching' => "Dangos y nifer o ddefnyddwyr sy'n gwylio",
+'tog-oldsig' => "Rhagolwg o'r llofnod presennol:",
'tog-fancysig' => 'Trin y llofnod fel testun wici (heb gyswllt wici awtomatig)',
'tog-externaleditor' => 'Defnyddio golygydd allanol trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae angen gosodiadau arbennig ar eich cyfrifiadur)',
'tog-externaldiff' => 'Defnyddio "external diff" trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae angen gosodiadau arbennig ar eich cyfrifiadur)',
@@ -167,6 +165,13 @@ $messages = array(
'underline-never' => 'Byth',
'underline-default' => 'Rhagosodyn y porwr',
+# Font style option in Special:Preferences
+'editfont-style' => 'Arddull y ffont yn y blwch golygu:',
+'editfont-default' => 'Rhagosodyn y porwr',
+'editfont-monospace' => 'Ffont unlled',
+'editfont-sansserif' => 'Sans-seriff',
+'editfont-serif' => 'Seriff',
+
# Dates
'sunday' => 'Dydd Sul',
'monday' => 'Dydd Llun',
@@ -226,7 +231,7 @@ $messages = array(
'category-media-header' => "Cyfryngau yn y categori '$1'",
'category-empty' => "''Ar hyn o bryd nid oes unrhyw erthyglau na ffeiliau yn y categori hwn.''",
'hidden-categories' => '{{PLURAL:$1|Categori cuddiedig|Categori cuddiedig|Categorïau cuddiedig|Categorïau cuddiedig|Categorïau cuddiedig|Categorïau cuddiedig}}',
-'hidden-category-category' => 'Categorïau cuddiedig', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorïau cuddiedig',
'category-subcat-count' => "{{PLURAL:$1|Nid oes dim is-gategorïau|Dim ond yr is-gategori sy'n dilyn sydd|Mae'r $1 is-gategori sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 is-gategori sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 is-gategori sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 is-gategori sy'n dilyn ymhlith cyfanswm o $2}} yn y categori hwn.",
'category-subcat-count-limited' => 'Mae gan y categori hwn $1 {{PLURAL:$1|is-gategori}} fel a ganlyn.',
'category-article-count' => "{{PLURAL:$2|Nid oes dim tudalennau|Dim ond y dudalen sy'n dilyn sydd|Dangosir isod y $1 dudalen sydd|Dangosir isod y $1 tudalen sydd|Dangosir isod y $1 thudalen sydd|Dangosir isod $1 {{PLURAL:$1|Dim|dudalen|dudalen|tudalen|thudalen|tudalen}} ymhlith cyfanswm o $2 sydd}} yn y categori hwn.",
@@ -234,6 +239,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Nid oes dim ffeiliau|Dim ond y ffeil sy'n dilyn sydd|Mae'r $1 ffeil sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 ffeil sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 ffeil sy'n dilyn ymhlith cyfanswm o $2|Mae'r $1 ffeil sy'n dilyn ymhlith cyfanswm o $2}} yn y categori hwn.",
'category-file-count-limited' => "Mae'r {{PLURAL:$1|dim ffeil|un ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn y categori hwn.",
'listingcontinuesabbrev' => 'parh.',
+'index-category' => 'Tudalennau wedi eu mynegeio',
+'noindex-category' => 'Tudalennau heb eu mynegeio',
'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [http://meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
@@ -244,10 +251,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]',
-'about' => 'Ynglŷn â',
-'article' => 'Tudalen bwnc (erthygl/ffeil)',
-'newwindow' => '(yn agor mewn ffenest newydd)',
-'cancel' => 'Diddymu',
+'about' => 'Ynglŷn â',
+'article' => 'Tudalen bwnc (erthygl/ffeil)',
+'newwindow' => '(yn agor mewn ffenest newydd)',
+'cancel' => 'Diddymu',
+'moredotdotdot' => 'Rhagor...',
+'mypage' => 'Fy nhudalen',
+'mytalk' => 'Fy sgwrs',
+'anontalk' => 'Sgwrs ar gyfer y cyfeiriad IP hwn',
+'navigation' => 'Panel llywio',
+'and' => '&#32;a/ac',
+
+# Cologne Blue skin
'qbfind' => 'Canfod',
'qbbrowse' => 'Pori',
'qbedit' => 'Golygu',
@@ -255,15 +270,35 @@ $messages = array(
'qbpageinfo' => 'Cyd-destun',
'qbmyoptions' => 'Fy nhudalennau',
'qbspecialpages' => 'Tudalennau arbennig',
-'moredotdotdot' => 'Rhagor...',
-'mypage' => 'Fy nhudalen',
-'mytalk' => 'Fy sgwrs',
-'anontalk' => 'Sgwrs ar gyfer y cyfeiriad IP hwn',
-'navigation' => 'Panel llywio',
-'and' => '&#32;a/ac',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Cwestiynau cyffredin',
+'faqpage' => 'Project:Cwestiynau cyffredin',
+
+# Vector skin
+'vector-action-addsection' => 'Ychwanegu adran',
+'vector-action-delete' => 'Dileu',
+'vector-action-move' => 'Symud',
+'vector-action-protect' => 'Diogelu',
+'vector-action-undelete' => 'Adfer',
+'vector-action-unprotect' => 'Dad-ddiogelu',
+'vector-namespace-category' => 'Categori',
+'vector-namespace-help' => 'Tudalen gymorth',
+'vector-namespace-image' => 'Ffeil',
+'vector-namespace-main' => 'Tudalen',
+'vector-namespace-media' => 'Tudalen cyfrwng',
+'vector-namespace-mediawiki' => 'Neges',
+'vector-namespace-project' => 'Tudalen brosiect',
+'vector-namespace-special' => 'Tudalen arbennig',
+'vector-namespace-talk' => 'Sgwrs',
+'vector-namespace-template' => 'Nodyn',
+'vector-namespace-user' => 'Tudalen defnyddiwr',
+'vector-view-create' => 'Dechrau',
+'vector-view-edit' => 'Golygu',
+'vector-view-history' => 'Gweld yr hanes',
+'vector-view-view' => 'Darllen',
+'vector-view-viewsource' => 'Dagos côd y dudalen',
+'actions' => 'Gweithrediadau',
+'namespaces' => 'Parthau',
+'variants' => 'Amrywiolion',
'errorpagetitle' => 'Gwall',
'returnto' => 'Dychwelyd at $1.',
@@ -313,18 +348,22 @@ $messages = array(
'otherlanguages' => 'Ieithoedd eraill',
'redirectedfrom' => '(Ailgyfeiriad oddi wrth $1)',
'redirectpagesub' => 'Tudalen ailgyfeirio',
-'lastmodifiedat' => 'Newidiwyd y dudalen hon ddiwethaf $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Newidiwyd y dudalen hon ddiwethaf $2, $1.',
'viewcount' => "{{PLURAL:$1|Ni chafwyd dim|Cafwyd $1|Cafwyd $1|Cafwyd $1|Cafwyd $1|Cafwyd $1}} ymweliad â'r dudalen hon.",
'protectedpage' => 'Tudalen a ddiogelwyd',
'jumpto' => 'Neidio i:',
'jumptonavigation' => 'llywio',
'jumptosearch' => 'chwilio',
+'view-pool-error' => 'Ymddiheurwn, mae gormod o waith gan y gweinyddion ar hyn o bryd.
+Mae gormod o ddefnyddwyr am weld y dudalen hon ar unwaith.
+Arhoswch ychydig cyn ceisio mynd at y dudalen hon eto.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Ynglŷn â {{SITENAME}}',
'aboutpage' => 'Project:Amdanom',
'copyright' => "Mae'r cynnwys ar gael o dan $1.",
-'copyrightpagename' => 'Hawlfraint {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hawlfraint',
'currentevents' => 'Materion cyfoes',
'currentevents-url' => 'Project:Materion cyfoes',
@@ -332,8 +371,6 @@ $messages = array(
'disclaimerpage' => 'Project:Gwadiad Cyffredinol',
'edithelp' => 'Help gyda golygu',
'edithelppage' => 'Help:Golygu',
-'faq' => 'Cwestiynau cyffredin',
-'faqpage' => 'Project:Cwestiynau cyffredin',
'helppage' => 'Help:Cymorth',
'mainpage' => 'Hafan',
'mainpage-description' => 'Hafan',
@@ -413,10 +450,6 @@ Y gofyniad olaf y trïodd y databas oedd:
"$1"
o\'r ffwythiant "$2".
Rhoddwyd y côd gwall "$3: $4<".',
-'noconnect' => "Mae'n ddrwg gennym ni! Oherwydd anawsterau technegol, nid yw'r wici yn gallu cysylltu â gweinydd y databas. <br />
-$1",
-'nodb' => 'Ddim yn gallu dewis y databas $1',
-'cachederror' => "Codwyd y copi hwn o'r dudalen y gofynasoch amdani o gelc; efallai nad yw hi'n gyfamserol.",
'laggedslavemode' => "Rhybudd: hwyrach nad yw'r dudalen yn cynnwys diwygiadau diweddar.",
'readonly' => 'Databas ar glo',
'enterlockreason' => "Rhowch eglurhad dros gloi'r databas, ac amcangyfrif hyd at pa bryd y bydd y databas dan glo",
@@ -434,6 +467,8 @@ A fyddech gystal â gwneud adroddiad ar hwn at [[Special:ListUsers/sysop|weinydd
'readonly_lag' => "Mae'r databas wedi'i gloi'n awtomatig tra bod y gwas-weinyddion yn asio gyda'r prif weinydd",
'internalerror' => 'Gwall mewnol',
'internalerror_info' => 'Gwall mewnol: $1',
+'fileappenderrorread' => 'Wedi methu darllen "$1" yn ystod yr atodi.',
+'fileappenderror' => 'Ni ellid atodi "$1" wrth "$2".',
'filecopyerror' => 'Wedi methu copïo\'r ffeil "$1" i "$2".',
'filerenameerror' => "Wedi methu ail-enwi'r ffeil '$1' yn '$2'.",
'filedeleteerror' => 'Wedi methu dileu\'r ffeil "$1".',
@@ -443,7 +478,8 @@ A fyddech gystal â gwneud adroddiad ar hwn at [[Special:ListUsers/sysop|weinydd
'unexpected' => 'Gwerth annisgwyl: "$1"="$2".',
'formerror' => 'Gwall: Wedi methu danfon y ffurflen',
'badarticleerror' => "Mae'n amhosib cyflawni'r weithred hon ar y dudalen hon.",
-'cannotdelete' => "Mae'n amhosib dileu'r dudalen neu'r ddelwedd hon. (Efallai fod rhywun arall eisoes wedi'i dileu).",
+'cannotdelete' => "Mae'n amhosib dileu'r dudalen neu'r ddelwedd \"\$1\".
+Efallai fod rhywun arall eisoes wedi'i dileu.",
'badtitle' => 'Teitl gwael',
'badtitletext' => "Mae'r teitl a ofynnwyd amdano yn annilys, yn wag, neu cysylltu'n anghywir rhwng ieithoedd neu wicïau. Gall fod ynddo un nod neu ragor na ellir eu defnyddio mewn teitlau.",
'perfcached' => "Mae'r wybodaeth ganlynol yn gopi cadw; mae'n bosib nad y fersiwn diweddaraf ydyw.",
@@ -476,7 +512,6 @@ Rhoddwyd y rheswm hwn - ''$2''.",
'virus-unknownscanner' => 'gwrthfirysydd anhysbys:',
# Login and logout pages
-'logouttitle' => "Allgofnodi'r defnyddiwr",
'logouttext' => "'''Rydych wedi allgofnodi.'''
Gallwch ddefnyddio {{SITENAME}} yn anhysbys, neu fe allwch [[Special:UserLogin|fewngofnodi eto]] wrth yr un un enw neu wrth enw arall.
@@ -484,7 +519,6 @@ Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddec
'welcomecreation' => "==Croeso, $1!==
Mae eich cyfrif wedi'i greu.
Cofiwch osod y [[Special:Preferences|dewisiadau]] sydd fwyaf hwylus i chi ar {{SITENAME}}.",
-'loginpagetitle' => 'Mewngofnodi',
'yourname' => 'Eich enw defnyddiwr:',
'yourpassword' => 'Eich cyfrinair:',
'yourpasswordagain' => 'Ail-deipiwch y cyfrinair:',
@@ -495,6 +529,7 @@ Cofiwch osod y [[Special:Preferences|dewisiadau]] sydd fwyaf hwylus i chi ar {{S
'nav-login-createaccount' => 'Mewngofnodi',
'loginprompt' => "Mae'n rhaid galluogi cwcis er mwyn mewngofnodi i {{SITENAME}}.",
'userlogin' => 'Mewngofnodi / creu cyfrif',
+'userloginnocreate' => 'Mewngofnodi',
'logout' => 'Allgofnodi',
'userlogout' => 'Allgofnodi',
'notloggedin' => 'Nid ydych wedi mewngofnodi',
@@ -506,29 +541,8 @@ Cofiwch osod y [[Special:Preferences|dewisiadau]] sydd fwyaf hwylus i chi ar {{S
'createaccountmail' => 'trwy e-bost',
'badretype' => "Nid yw'r cyfrineiriau'n union yr un fath.",
'userexists' => 'Mae rhywun arall wedi dewis yr enw defnyddiwr hwn. Dewiswch un arall os gwelwch yn dda.',
-'youremail' => 'Eich cyfeiriad e-bost',
-'username' => 'Enw defnyddiwr:',
-'uid' => 'ID Defnyddiwr:',
-'prefs-memberingroups' => "Yn aelod o'r {{PLURAL:$1|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}} canlynol:",
-'yourrealname' => 'Eich enw cywir*',
-'yourlanguage' => 'Iaith y rhyngwyneb',
-'yourvariant' => 'Amrywiad',
-'yournick' => 'Eich llysenw (fel llofnod):',
-'badsig' => 'Llofnod crai annilys; gwiriwch y tagiau HTML.',
-'badsiglength' => "Mae'ch llysenw'n rhy hir.
-Gall fod hyd at $1 {{PLURAL:$1|llythyren|lythyren|lythyren|llythyren|llythyren|llythyren}} o hyd.",
-'yourgender' => 'Rhyw:',
-'gender-unknown' => 'Heb ei nodi',
-'gender-male' => 'Gwryw',
-'gender-female' => 'Benyw',
-'prefs-help-gender' => "Heb rheidrwydd: mae'r meddalwedd yn defnyddio hwn i gyfeirio atoch ac i'ch cyfarch yn ôl eich rhyw.
-Mae'r wybodaeth hon ar gael i'r cyhoedd.",
-'email' => 'E-bost',
-'prefs-help-realname' => '* Enw iawn (dewisol): Os ydych yn dewis ei roi, fe fydd yn cael ei ddefnyddio er mwyn rhoi cydnabyddiaeth i chi am eich gwaith.',
'loginerror' => 'Problem mewngofnodi',
-'prefs-help-email' => "Os ydych yn dewis gosod eich cyfeiriad e-bost yna gallwn anfon cyfrinair newydd atoch os aiff yr un gwreiddiol yn angof gennych.
-Gallwch hefyd adael i eraill anfon e-bost atoch trwy'r cyswllt ar eich tudalen defnyddiwr neu eich tudalen sgwrs, heb ddatguddio'ch manylion personol.",
-'prefs-help-email-required' => 'Cyfeiriad e-bost yn angenrheidiol.',
+'createaccounterror' => "Ni lwyddwyd i greu'r cyfrif: $1",
'nocookiesnew' => "Mae'r cyfrif defnyddiwr wedi cael ei greu, ond nid ydych wedi mewngofnodi. Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Mewngofnodwch eto gyda'ch enw defnyddiwr a'ch cyfrinair newydd os gwelwch yn dda, ar ôl galluogi cwcis.",
'nocookieslogin' => 'Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Trïwch eto os gwelwch yn dda, ar ôl galluogi cwcis.',
'noname' => 'Dydych chi ddim wedi cynnig enw defnyddiwr dilys.',
@@ -539,9 +553,11 @@ Mae'r rhaglen yn gwahaniaethu rhwng llythrennau bach a mawr.
Sicrhewch eich bod chi wedi sillafu'r enw'n gywir, neu [[Special:UserLogin/signup|crëwch gyfrif newydd]].",
'nosuchusershort' => 'Does dim defnyddiwr o\'r enw "<nowiki>$1</nowiki>". Gwiriwch eich sillafu.',
'nouserspecified' => "Mae'n rhaid nodi enw defnyddiwr.",
+'login-userblocked' => "Mae'r defnyddiwr hwn wedi ei flocio. Ni ellir mewngofnodi.",
'wrongpassword' => "Nid yw'r cyfrinair a deipiwyd yn gywir. Rhowch gynnig arall arni, os gwelwch yn dda.",
'wrongpasswordempty' => 'Roedd y cyfrinair yn wag. Rhowch gynnig arall arni.',
-'passwordtooshort' => "Mae eich cyfrinair yn rhy fyr neu'n annilys. Mae'n rhaid iddo gynnwys o leia $1 {{PLURAL:$1|nod|nod|nod|nod|nod|nod}} a bod yn wahanol i'ch enw defnyddiwr.",
+'passwordtooshort' => "Mae'n rhaid fod gan gyfrinair o leia $1 {{PLURAL:$1|nod}}.",
+'password-name-match' => "Rhaid i'ch cyfrinair a'ch enw defnyddiwr fod yn wahanol i'w gilydd.",
'mailmypassword' => 'Anfoner cyfrinair newydd ataf trwy e-bost',
'passwordremindertitle' => 'Hysbysu cyfrinair dros dro newydd ar gyfer {{SITENAME}}',
'passwordremindertext' => 'Mae rhywun (chi mwy na thebyg, o\'r cyfeiriad IP $1) wedi gofyn i ni anfon cyfrinair newydd atoch ar gyfer {{SITENAME}} ($4).
@@ -549,6 +565,7 @@ Mae cyfrinair dros dro, sef "$3", wedi ei greu ar gyfer y defnyddiwr "$2". Os ma
Os mai rhywun arall a holodd am y cyfrinair, ynteu eich bod wedi cofio\'r hen gyfrinair, ac nac ydych am newid y cyfrinair, rhydd i chi anwybyddu\'r neges hon a pharhau i ddefnyddio\'r cyfrinair gwreiddiol.',
'noemail' => "Does dim cyfeiriad e-bost yng nghofnodion y defnyddiwr '$1'.",
+'noemailcreate' => "Mae'n rhaid i chi gynnig cyfeiriad e-bost dilys",
'passwordsent' => 'Mae cyfrinair newydd wedi\'i ddanfon at gyfeiriad e-bost cofrestredig "$1". Mewngofnodwch eto ar ôl i chi dderbyn y cyfrinair, os gwelwch yn dda.',
'blocked-mailpassword' => 'Gan fod eich cyfeiriad IP wedi ei atal rhag golygu, ni ellir adfer y cyfrinair.',
'eauthentsent' => 'Anfonwyd e-bost o gadarnhâd at y cyfeiriad a benwyd.
@@ -569,9 +586,11 @@ Felly ni chaiff defnyddwyr sy'n defnyddio'r cyfeiriad IP hwn greu rhagor o gyfri
'createaccount-text' => 'Creodd rhywun gyfrif o\'r enw $2 ar {{SITENAME}} ($4) ar gyfer y cyfeiriad e-bost hwn. "$3" yw\'r cyfrinair ar gyfer "$2". Dylech fewngofnodi a newid eich cyfrinair yn syth.
Rhydd ichi anwybyddu\'r neges hon os mai camgymeriad oedd creu\'r cyfrif.',
+'usernamehasherror' => 'Ni all enw defnyddiwr gynnwys symbolau stwnsh',
'login-throttled' => 'Rydych wedi ceisio mewngofnodi gormod o weithiau ar unwaith.
Oedwch ychydig cyn mentro eto.',
'loginlanguagelabel' => 'Iaith: $1',
+'suspicious-userlogout' => 'Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.',
# Password reset dialog
'resetpass' => 'Newid cyfrinair y cyfrif',
@@ -583,18 +602,13 @@ Er mwyn cwblhau'r mewngofnodi, rhaid i chi osod cyfrinair newydd fel hyn:",
'retypenew' => 'Ail-deipiwch y cyfrinair newydd:',
'resetpass_submit' => 'Gosod y cyfrinair a mewngofnodi',
'resetpass_success' => "Llwyddodd y newid i'ch cyfrinair! Wrthi'n mewngofnodi...",
-'resetpass_bad_temporary' => 'Cyfrinair dros dro annilys.
-Efallai eich bod eisoes wedi llwyddo newid eich cyfrinair neu eich bod wedi gwneud cais am gyfrinair dros dro newydd.',
'resetpass_forbidden' => 'Ni ellir newid cyfrineiriau',
'resetpass-no-info' => 'Ni allwch fynd at y dudalen hon yn uniongyrchol heblaw eich bod wedi mewngofnodi.',
'resetpass-submit-loggedin' => 'Newidier y cyfrinair',
+'resetpass-submit-cancel' => 'Diddymu',
'resetpass-wrong-oldpass' => "Mae'r cyfrinair dros dro neu gyfredol yn annilys.
Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gofyn am gyfrinair dros dro newydd.",
'resetpass-temp-password' => 'Cyfrinair dros dro:',
-'resetpass-log' => 'Lòg ailosod cyfrineiriau',
-'resetpass-logtext' => 'Dyma lòg y defnyddwyr hynny y mae eu cyfrinair wedi ei ailosod ar eu rhan gan weinyddwr.',
-'resetpass-logentry' => 'wedi newid y cyfrinair ar gyfer $1',
-'resetpass-comment' => 'Y rheswm dros ailosod y cyfrinair:',
# Edit page toolbar
'bold_sample' => 'Testun cryf',
@@ -668,7 +682,6 @@ Eich cyfeiriad IP presennol yw $3. Cyfeirnod y bloc yw $5. Nodwch y manylion hyn
'blockededitsource' => "Dangosir testun '''eich golygiadau''' ar '''$1''' isod:",
'whitelistedittitle' => 'Rhaid mewngofnodi cyn golygu',
'whitelistedittext' => 'Rhaid $1 i olygu tudalennau.',
-'confirmedittitle' => 'Cadarnhad trwy e-bost cyn dechrau golygu.',
'confirmedittext' => "Mae'n rhaid i chi gadarnhau eich cyfeiriad e-bost cyn y gallwch ddechrau golygu tudalennau.
Gosodwch eich cyfeiriad e-bost drwy eich [[Special:Preferences|dewisiadau defnyddiwr]] ac yna'i gadarnhau, os gwelwch yn dda.",
'nosuchsectiontitle' => "Heb ddod o hyd i'r adran",
@@ -688,10 +701,16 @@ Os daethoch yma ar ddamwain, cliciwch botwm '''n&ocirc;l''' y porwr.",
'anontalkpagetext' => "----''Dyma dudalen sgwrs ar gyfer defnyddiwr anhysbys sydd heb greu cyfrif eto, neu nad yw'n ei ddefnyddio. Felly mae'n rhaid inni ddefnyddio'r cyfeiriad IP i'w (h)adnabod. Mae cyfeiriadau IP yn gallu cael eu rhannu rhwng nifer o ddefnyddwyr. Os ydych chi'n ddefnyddiwr anhysbys ac yn teimlo'ch bod wedi derbyn sylwadau amherthnasol, [[Special:UserLogin/signup|crëwch gyfrif]] neu [[Special:UserLogin|mewngofnodwch]] i osgoi cael eich drysu gyda defnyddwyr anhysbys eraill o hyn ymlaen.''",
'noarticletext' => "Mae'r dudalen hon yn wag ar hyn o bryd.
Gallwch [[Special:Search/{{PAGENAME}}|chwilio am y teitl hwn]] ar dudalennau eraill, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chwilio drwy'r logiau perthnasol], neu [{{fullurl:{{FULLPAGENAME}}|action=edit}} golygu'r dudalen]</span>.",
+'noarticletext-nopermission' => 'Mae\'r dudalen hon yn wag ar hyn o bryd.
+Gallwch [[Special:Search/{{PAGENAME}}|chwilio am y teitl hwn]] ar dudalennau eraill, neu gallwch <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chwilio drwy\'r logiau perthnasol]</span>.',
'userpage-userdoesnotexist' => 'Nid oes defnyddiwr a\'r enw "$1" yn bod. Gwnewch yn siwr eich bod am greu/golygu\'r dudalen hon.',
+'userpage-userdoesnotexist-view' => 'Nid yw\'r cyfrif defnyddiwr "$1" wedi ei gofrestri.',
+'blocked-notice-logextract' => "Mae'r defnyddiwr hwn wedi ei flocio ar hyn o bryd.
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
'clearyourcache' => "'''Sylwer - Wedi i chi roi'r dudalen ar gadw, efallai y bydd angen mynd heibio celc eich porwr er mwyn gweld y newidiadau.'''
'''Mozilla / Firefox / Safari:''' pwyswch ar ''Shift'' tra'n clicio ''Ail-lwytho/Reload'', neu gwasgwch ''Ctrl-F5'' neu ''Ctrl-R'' (''Command-R'' ar Macintosh); '''Konqueror:''' cliciwch y botwm ''Ail-lwytho/Reload'', neu gwasgwch ''F5''; '''Opera:''' gwacewch y celc yn llwyr trwy ''Offer → Dewisiadau / Tools→Preferences''; '''Internet Explorer:''' pwyswch ar ''Ctrl'' tra'n clicio ''Adnewyddu/Refresh'', neu gwasgwch ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Defnyddiwch y botwm 'Dangos rhagolwg' er mwyn profi eich CSS/JS newydd cyn ei gadw.",
+'usercssyoucanpreview' => "'''Tip:''' Defnyddiwch y botwm \"{{int:showpreview}}\" er mwyn profi eich CSS newydd cyn ei gadw.",
+'userjsyoucanpreview' => "'''Tip:''' Defnyddiwch y botwm \"{{int:showpreview}}\" er mwyn profi eich JS newydd cyn ei gadw.",
'usercsspreview' => "'''Cofiwch - dim ond rhagolwg o'ch CSS defnyddiwr yw hwn.'''
'''Nid yw wedi'i gadw eto!'''",
'userjspreview' => "'''Cofiwch -- dim ond rhagolwg o'ch JavaScript yw hwn; nid yw wedi'i gadw eto!'''",
@@ -741,29 +760,34 @@ Ni ellir ei roi ar gadw.'''",
'readonlywarning' => "'''RHYBUDD: Mae'r databas wedi'i gloi am gyfnod er mwyn cynnal a chadw, felly fyddwch chi ddim yn gallu cadw'ch golygiadau ar hyn o bryd. Rydyn ni'n argymell eich bod chi'n copïo a gludo'r testun i ffeil a'i gadw ar eich disg tan bod y sustem yn weithredol eto.'''
Cynigiodd y gweinyddwr a glodd y databas y rheswm hwn dros ei gloi: $1",
-'protectedpagewarning' => "'''RHYBUDD: Mae'r dudalen hon wedi'i diogelu. Dim ond gweinyddwyr sydd yn gallu ei golygu.'''",
-'semiprotectedpagewarning' => "'''Sylwer:''' Mae'r dudalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.",
+'protectedpagewarning' => "'''RHYBUDD: Mae'r dudalen hon wedi'i diogelu. Dim ond gweinyddwyr sydd yn gallu ei golygu.'''
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
+'semiprotectedpagewarning' => "'''Sylwer:''' Mae'r dudalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
'cascadeprotectedwarning' => "'''Dalier sylw:''' Mae'r dudalen hon wedi ei diogelu fel nad ond defnyddwyr â galluoedd gweinyddwyr sy'n gallu ei newid, oherwydd ei bod yn rhan o'r {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol}} sydd wedi {{PLURAL:$1|ei|ei|eu|eu|eu|eu}} sgydol-ddiogelu.",
-'titleprotectedwarning' => "'''RHYBUDD: Mae'r dudalen hon wedi ei chloi; dim ond rhai defnyddwyr sydd â'r [[Special:ListGroupRights|gallu]] i'w chreu.'''",
-'templatesused' => 'Nodiadau a ddefnyddir yn y dudalen hon:',
-'templatesusedpreview' => 'Nodiadau a ddefnyddir yn y rhagolwg hwn:',
-'templatesusedsection' => 'Nodiadau a ddefnyddir yn yr adran hon:',
+'titleprotectedwarning' => "'''RHYBUDD: Mae'r dudalen hon wedi ei chloi; dim ond rhai defnyddwyr sydd â'r [[Special:ListGroupRights|gallu]] i'w chreu.'''
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
+'templatesused' => 'Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y dudalen hon:',
+'templatesusedpreview' => 'Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y rhagolwg hwn:',
+'templatesusedsection' => 'Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn yr adran hon:',
'template-protected' => '(wedi ei diogelu)',
'template-semiprotected' => '(lled-diogelwyd)',
'hiddencategories' => "Mae'r dudalen hon yn aelod o $1 {{PLURAL:$1|categori|categori|gategori|chategori|chategori|categori}} cuddiedig:",
'nocreatetitle' => 'Cyfyngwyd ar greu tudalennau',
'nocreatetext' => "Mae'r safle hwn wedi cyfyngu'r gallu i greu tudalennau newydd. Gallwch olygu tudalen sydd eisoes yn bodoli, neu [[Special:UserLogin|fewngofnodi, neu greu cyfrif]].",
'nocreate-loggedin' => "Nid yw'r gallu gennych i greu tudalennau.",
+'sectioneditnotsupported-title' => 'Dim modd golygu fesul adran',
+'sectioneditnotsupported-text' => "Nid oes modd golygu'r dudalen hon fesul adran",
'permissionserrors' => 'Gwallau Caniatâd',
'permissionserrorstext' => "Nid yw'r gallu ganddoch i weithredu yn yr achos yma, am y {{PLURAL:$1|rheswm|rheswm|rhesymau|rhesymau|rhesymau|rhesymau}} canlynol:",
'permissionserrorstext-withaction' => "Nid yw'r gallu hwn ($2) ganddoch, am y {{PLURAL:$1|rheswm|rheswm|rhesymau|rhesymau|rhesymau|rhesymau}} canlynol:",
-'recreate-deleted-warn' => "'''Dalier sylw: Rydych yn ail-greu tudalen a ddilewyd rhywdro.'''
+'recreate-moveddeleted-warn' => "'''Dalier sylw: Rydych yn ail-greu tudalen a ddilewyd rhywdro.'''
Ystyriwch a fyddai'n dda o beth i barhau i olygu'r dudalen hon.
-Dyma lòg dileu'r dudalen, er gwybodaeth:",
-'deleted-notice' => "Dilëwyd y dudalen hon.
-Dangosir lòg dileu'r dudalen isod.",
-'deletelog-fulllog' => 'Gweld y lòg cyfan',
+Dyma'r logiau dileu a symud ar gyfer y dudalen, er gwybodaeth:",
+'moveddeleted-notice' => 'Dilëwyd y dudalen hon.
+Dangosir y logiau dileu a symud ar gyfer y dudalen isod.',
+'log-fulllog' => 'Gweld y lòg cyflawn',
'edit-hook-aborted' => 'Terfynwyd y golygiad cyn pryd gan fachyn.
Ni roddodd eglurhad.',
'edit-gone-missing' => "Ni ellid diweddaru'r dudalen.
@@ -786,6 +810,7 @@ Cafodd yr argiau hyn eu hepgor.",
'post-expand-template-argument-category' => 'Tudalennau lle ceir argiau nodiadau coll',
'parser-template-loop-warning' => 'Daethpwyd o hyd i ddolen yn y nodyn: [[$1]]',
'parser-template-recursion-depth-warning' => 'Wedi mynd dros ben y terfyn ar ddyfnder dychweliad nodiadau ($1)',
+'language-converter-depth-warning' => "Wedi mynd tu hwnt i'r terfyn dyfnder ($1) ar y cyfnewidydd iaith.",
# "Undo" feature
'undo-success' => "Gellir dadwneud y golygiad. Byddwch gystal â gwirio'r gymhariaeth isod i sicrhau mai dyma sydd arnoch eisiau gwneud, ac yna rhowch y newidiadau ar gadw i gwblhau'r gwaith o ddadwneud y golygiad.",
@@ -805,7 +830,7 @@ Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
'currentrev' => 'Diwygiad cyfoes',
'currentrev-asof' => 'Y diwygiad cyfredol, am $1',
'revisionasof' => 'Diwygiad $1',
-'revision-info' => 'Y fersiwn a roddwyd ar gadw am $1 gan $2', # Additionally available: $3: revision id
+'revision-info' => 'Y fersiwn a roddwyd ar gadw am $1 gan $2',
'previousrevision' => '← at y diwygiad blaenorol',
'nextrevision' => 'At y diwygiad dilynol →',
'currentrevisionlink' => 'Y diwygiad cyfoes',
@@ -818,7 +843,7 @@ Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
Eglurhad: '''({{int:cur}})''' = gwahaniaethau rhyngddo a'r fersiwn cyfredol,
'''({{int:last}})''' = gwahaniaethau rhyngddo a'r fersiwn cynt, '''({{int:minoreditletter}})''' = golygiad bychan",
'history-fieldset-title' => "Chwilio drwy'r hanes",
-'deletedrev' => '[dilëwyd]',
+'history-show-deleted' => 'Y rhai a ddilëwyd yn unig',
'histfirst' => 'Cynharaf',
'histlast' => 'Diweddaraf',
'historysize' => '({{PLURAL:$1|$1 beit|$1 beit|$1 feit|$1 beit|$1 beit|$1 beit}})',
@@ -827,70 +852,113 @@ Eglurhad: '''({{int:cur}})''' = gwahaniaethau rhyngddo a'r fersiwn cyfredol,
# Revision feed
'history-feed-title' => 'Hanes diwygio',
'history-feed-description' => "Hanes diwygio'r dudalen hon ar y wici",
-'history-feed-item-nocomment' => '$1 am $2', # user at time
+'history-feed-item-nocomment' => '$1 am $2',
'history-feed-empty' => "Nid yw'r dudalen a ofynwyd amdani'n bod.
Gall fod iddi gael ei dileu neu ei hailenwi.
Gallwch [[Special:Search|chwilio'r]] wici am dudalennau eraill perthnasol.",
# Revision deletion
-'rev-deleted-comment' => '(sylwad wedi ei ddiddymu)',
-'rev-deleted-user' => '(enw defnyddiwr wedi ei ddiddymu)',
-'rev-deleted-event' => '(tynnwyd gweithred y lòg)',
-'rev-deleted-text-permission' => "'''Dilewyd''' y diwygiad hon o'r dudalen.
-Hwyrach bod manylion pellach ar y [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} lòg dileu].",
-'rev-deleted-text-view' => "'''Dilewyd''' y diwygiad o'r dudalen.
-Gan eich bod yn weinyddwr gallwch ei weld; gall fod manylion yn y [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} lòg dileu].",
-'rev-deleted-no-diff' => "Ni allwch weld y gwahaniaeth rhwng y fersiynau hyn oherwydd bod un o'r fersiynau wedi ei '''ddileu'''.
-Gall fod manylion ar gael yn y [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} lòg dileu].",
-'rev-deleted-unhide-diff' => "Mae un o'r fersiynau yr ydych am weld y gwahaniaeth rhyngddynt wedi ei '''ddileu'''.
-Gall fod manylion ar gael yn y [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} lòg dileu].
-Gan eich bod yn weinyddwr mae modd i chi [$1 weld y gwahaniaeth rhwng y fersiynau] os y dymunwch.",
-'rev-delundel' => 'dangos/cuddio',
-'revisiondelete' => 'Dileu/dad-ddileu diwygiadau',
-'revdelete-nooldid-title' => 'Anelwyd at olygiad annilys',
-'revdelete-nooldid-text' => "Naill ai; nid ydych wedi dynodi diwygiad yn darged y weithred, neu nid yw'r diwygiad penodedig yn bod, neu rydych wedi ceisio cuddio'r diwygiad presennol.",
-'revdelete-nologtype-title' => 'Ni nodwyd y math o lòg',
-'revdelete-nologtype-text' => "Nid ydych wedi enwi'r math o lòg yr ydych am weithredu arno.",
-'revdelete-toomanytargets-title' => 'Gormod o dargedau',
-'revdelete-toomanytargets-text' => "Rydych wedi enwi gormod o fathau o dargedau i gyflawni'r weithred arnynt.",
-'revdelete-nologid-title' => 'Cofnod lòg annilys',
-'revdelete-nologid-text' => "Ni enwyd y lòg yr ydych am weithio arno ynteu nid yw'r lòg a enwyd yn bod.",
-'revdelete-selected' => "'''Y {{PLURAL:$2|golygiad|golygiad|golygiadau|golygiadau|golygiadau|golygiadau}} dewisedig o [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Digwyddiad|Digwyddiad|Digwyddiadau|Digwyddiadau|Digwyddiadau|Digwyddiadau}} a ddewiswyd o'r lòg:'''",
-'revdelete-text' => "'''Fe fydd y golygiadau a'r digwyddiadau sydd wedi eu diddymu i'w gweld o hyd yn hanes y dudalen ac yn y logiau, ond ni fydd y cyhoedd yn gallu gweld y cynnwys i gyd.'''
-Fe fydd gweinyddwyr eraill {{SITENAME}} o hyd yn gallu gweld yr hyn a guddiwyd. Fe allant ei ddatguddio trwy ddefnyddio'r dudalen arbennig hon, cyhyd ag nad oes cyfyngiadau ychwanegol wedi eu gosod.
-
-Byddwch gystal â chadarnhau eich bod yn bwriadu gwneud hyn, eich bod yn deall yr effaith a gaiff, a'ch bod yn ei wneud yn ôl y [[{{MediaWiki:Policy-url}}|y polisi]].",
-'revdelete-suppress-text' => "'''Dim ond''' yn yr achosion sy'n dilyn y dylech fentro cuddio gwybodaeth:
+'rev-deleted-comment' => '(sylwad wedi ei ddiddymu)',
+'rev-deleted-user' => '(enw defnyddiwr wedi ei ddiddymu)',
+'rev-deleted-event' => '(tynnwyd gweithred y lòg)',
+'rev-deleted-user-contribs' => '[tynnwyd enw defnyddiwr neu gyfeiriad IP i ffwrdd - ni ddangosir y golygiad ar y rhestr cyfraniadau]',
+'rev-deleted-text-permission' => "'''Dilewyd''' y diwygiad hwn o'r dudalen.
+Hwyrach bod manylion pellach ar y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg dileu].",
+'rev-deleted-text-unhide' => "Cafodd y diwygiad hwn o'r dudalen ei '''ddileu'''.
+Gweler cofnod y dileu ar y [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lòg dileu].
+Gan eich bod yn weinyddwr gallwch [$1 weld y diwygiad] os y mynnwch.",
+'rev-suppressed-text-unhide' => "Mae’r diwygiad hwn o’r dudalen wedi cael ei '''guddio'''.
+Cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg cuddio].
+Gan eich bod yn weinyddwr cewch [$1 weld y golygiad] o hyd os y dymunwch.",
+'rev-deleted-text-view' => "'''Dilewyd''' y diwygiad hwn o'r dudalen.
+Gan eich bod yn weinyddwr gallwch ei weld; gall fod manylion yn y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg dileu].",
+'rev-suppressed-text-view' => "Mae’r diwygiad hwn o’r dudalen wedi cael ei '''guddio'''.
+Gan eich bod yn weinyddwr cewch weld y golygiad; mae'r manylion ar gael ar y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg cuddio].",
+'rev-deleted-no-diff' => "Ni allwch gymharu'r diwygiadau oherwydd bod un ohonynt wedi cael ei '''ddileu'''.
+Cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lòg dileu].",
+'rev-suppressed-no-diff' => "Ni allwch gymharu'r diwygiadau oherwydd bod un ohonynt wedi cael ei '''ddileu'''.",
+'rev-deleted-unhide-diff' => "Cafodd un o'r diwygiadau yr ydych am eu cymharu ei '''ddileu'''.
+Cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lòg dileu].
+Gan eich bod yn weinyddwr gallwch [$1 weld y gwahaniaeth] rhyngddynt o hyd, os y dymunwch.",
+'rev-suppressed-unhide-diff' => "Cafodd un o'r diwygiadau yr ydych am eu cymharu ei '''guddio'''.
+Cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg cuddio].
+Gan eich bod yn weinyddwr gallwch [$1 weld y gwahaniaeth] rhyngddynt o hyd, os y dymunwch.",
+'rev-deleted-diff-view' => "Cafodd un o'r diwygiadau yr ydych am eu cymharu ei '''ddileu'''.
+Gan eich bod yn weinyddwr gallwch eu cymharu o hyd; cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lòg dileu].",
+'rev-suppressed-diff-view' => "Cafodd un o'r diwygiadau yr ydych am eu cymharu ei '''guddio'''.
+Gan eich bod yn weinyddwr gallwch eu cymharu o hyd; cewch weld y manylion ar y [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lòg cuddio].",
+'rev-delundel' => 'dangos/cuddio',
+'rev-showdeleted' => 'dangos',
+'revisiondelete' => 'Dileu/dad-ddileu diwygiadau',
+'revdelete-nooldid-title' => 'Anelwyd at olygiad annilys',
+'revdelete-nooldid-text' => "Naill ai; nid ydych wedi dynodi diwygiad yn darged y weithred, neu nid yw'r diwygiad penodedig yn bod, neu rydych wedi ceisio cuddio'r diwygiad presennol.",
+'revdelete-nologtype-title' => 'Ni nodwyd y math o lòg',
+'revdelete-nologtype-text' => "Nid ydych wedi enwi'r math o lòg yr ydych am weithredu arno.",
+'revdelete-nologid-title' => 'Cofnod lòg annilys',
+'revdelete-nologid-text' => "Ni enwyd y lòg yr ydych am weithio arno ynteu nid yw'r lòg a enwyd yn bod.",
+'revdelete-no-file' => "Nid yw'r ffeil a nodwyd yn bod.",
+'revdelete-show-file-confirm' => 'Ydych chi\'n sicr eich bod am weld y diwygiad dilëedig o\'r ffeil "<nowiki>$1</nowiki>" a roddwyd ar gadw am $3 ar $2?',
+'revdelete-show-file-submit' => 'Ydw',
+'revdelete-selected' => "'''Y {{PLURAL:$2|golygiad|golygiad|golygiadau|golygiadau|golygiadau|golygiadau}} dewisedig o [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Digwyddiad|Digwyddiad|Digwyddiadau|Digwyddiadau|Digwyddiadau|Digwyddiadau}} a ddewiswyd o'r lòg:'''",
+'revdelete-text' => "'''Fe fydd y golygiadau a'r digwyddiadau sydd wedi eu diddymu i'w gweld o hyd yn hanes y dudalen ac yn y logiau, ond ni fydd y cyhoedd yn gallu gweld y cynnwys i gyd.'''
+Fe fydd gweinyddwyr eraill {{SITENAME}} o hyd yn gallu gweld yr hyn a guddiwyd. Fe allant ei ddatguddio trwy ddefnyddio'r dudalen arbennig hon, cyhyd ag nad oes cyfyngiadau ychwanegol wedi eu gosod.",
+'revdelete-confirm' => "Byddwch gystal â chadarnhau eich bod yn bwriadu gwneud hyn, eich bod yn deall yr effaith a gaiff, a'ch bod yn ei wneud yn ôl y [[{{MediaWiki:Policy-url}}|y polisi]].",
+'revdelete-suppress-text' => "'''Dim ond''' yn yr achosion sy'n dilyn y dylech fentro cuddio gwybodaeth:
* Gwybodaeth bersonol anaddas
*: ''cyfeiriad cartref, rhif ffôn, rhif yswiriant cenedlaethol, ayb.''",
-'revdelete-legend' => 'Gosod cyfyngiadau ar y gallu i weld',
-'revdelete-hide-text' => 'Cuddio testun y diwygiad',
-'revdelete-hide-name' => "Cuddio'r weithred a'r targed",
-'revdelete-hide-comment' => 'Cuddio sylwad golygu',
-'revdelete-hide-user' => 'Cuddio enw defnyddiwr/IP y golygydd',
-'revdelete-hide-restricted' => 'Gosod y cyfyngiadau gweld data ar weinyddwyr yn ogystal ag eraill',
-'revdelete-suppress' => 'Atal data oddi wrth Weinyddwyr yn ogystal ag eraill',
-'revdelete-hide-image' => 'Cuddio cynnwys y ffeil',
-'revdelete-unsuppress' => "Tynnu'r cyfyngiadau ar y golygiadau a adferwyd",
-'revdelete-log' => 'Rheswm:',
-'revdelete-submit' => 'Rhoi ar waith ar y golgiad dewisedig',
-'revdelete-logentry' => 'wedi newid y gallu i weld golygiadau ar [[$1]]',
-'logdelete-logentry' => 'wedi newid y gallu i weld y digwyddiad ar [[$1]]',
-'revdelete-success' => "'''Diweddarwyd y gallu i weld golygiadau.'''",
-'logdelete-success' => "'''Llwyddwyd i guddio neu i ddatguddio'r digwyddiad rhag y lòg.'''",
-'revdel-restore' => 'Newid gwelededd',
-'pagehist' => 'Hanes y dudalen',
-'deletedhist' => 'Hanes dilëedig',
-'revdelete-content' => 'cynnwys',
-'revdelete-summary' => 'crynodeb golygu',
-'revdelete-uname' => 'yr enw defnyddiwr ar gyfer',
-'revdelete-restricted' => 'cyfyngwyd ar allu gweinyddwyr i weld',
-'revdelete-unrestricted' => 'tynnwyd y cyfyngiadau ar allu gweinyddwyr i weld',
-'revdelete-hid' => 'cuddiwyd $1',
-'revdelete-unhid' => 'datguddiwyd $1',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|golygiad|golygiad|olygiad|golygiad|golygiad|golygiad|}}',
-'logdelete-log-message' => '$1 $2 {{PLURAL:$2||digywddiad|ddigwyddiad|digwyddiad|digwyddiad|digwyddiad}}',
+'revdelete-legend' => 'Gosod cyfyngiadau ar y gallu i weld',
+'revdelete-hide-text' => 'Cuddio testun y diwygiad',
+'revdelete-hide-image' => 'Cuddio cynnwys y ffeil',
+'revdelete-hide-name' => "Cuddio'r weithred a'r targed",
+'revdelete-hide-comment' => 'Cuddio sylwad golygu',
+'revdelete-hide-user' => 'Cuddio enw defnyddiwr/IP y golygydd',
+'revdelete-hide-restricted' => 'Gosod y cyfyngiadau gweld data ar weinyddwyr yn ogystal ag eraill',
+'revdelete-radio-same' => '(peidier â newid)',
+'revdelete-radio-set' => 'Cuddier',
+'revdelete-radio-unset' => 'Na chuddier',
+'revdelete-suppress' => 'Atal data oddi wrth Weinyddwyr yn ogystal ag eraill',
+'revdelete-unsuppress' => "Tynnu'r cyfyngiadau ar y golygiadau a adferwyd",
+'revdelete-log' => 'Rheswm:',
+'revdelete-submit' => 'Rhoi ar waith ar y {{PLURAL:$1|golygiad|golygiad|golygiadau|golygiadau|golygiadau|golygiadau}} dewisedig',
+'revdelete-logentry' => 'wedi newid y gallu i weld golygiadau ar [[$1]]',
+'logdelete-logentry' => 'wedi newid y gallu i weld y digwyddiad ar [[$1]]',
+'revdelete-success' => "'''Diweddarwyd y gallu i weld golygiadau.'''",
+'revdelete-failure' => "'''Ni ellid newid y cyfyngiadau ar y gallu i weld y golygiad:'''
+$1",
+'logdelete-success' => "'''Llwyddwyd i guddio neu i ddatguddio'r digwyddiad rhag y lòg.'''",
+'logdelete-failure' => "'''Ni ellid gosod cyfyngiadau ar y gallu i weld y cofnod lòg:'''
+$1",
+'revdel-restore' => 'Newid gwelededd',
+'pagehist' => 'Hanes y dudalen',
+'deletedhist' => 'Hanes dilëedig',
+'revdelete-content' => 'cynnwys',
+'revdelete-summary' => 'crynodeb golygu',
+'revdelete-uname' => 'yr enw defnyddiwr ar gyfer',
+'revdelete-restricted' => 'cyfyngwyd ar allu gweinyddwyr i weld',
+'revdelete-unrestricted' => 'tynnwyd y cyfyngiadau ar allu gweinyddwyr i weld',
+'revdelete-hid' => 'cuddiwyd $1',
+'revdelete-unhid' => 'datguddiwyd $1',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|golygiad|golygiad|olygiad|golygiad|golygiad|golygiad|}}',
+'logdelete-log-message' => '$1 $2 {{PLURAL:$2||digywddiad|ddigwyddiad|digwyddiad|digwyddiad|digwyddiad}}',
+'revdelete-hide-current' => "Cafwyd gwall wrth geisio cuddio'r eitem a'r dyddiad $2, $1 arno: hwn yw'r diwygiad presennol.
+Ni ellir ei guddio.",
+'revdelete-show-no-access' => 'Cafwyd gwall wrth geisio newid yr eitem gyda\'r dyddiad $2, $1: mae marc "cyfyngedig" arno.
+Ni allwch ei weld.',
+'revdelete-modify-no-access' => 'Cafwyd gwall wrth geisio newid yr eitem gyda\'r dyddiad $2, $1: mae marc "cyfyngedig" arno.
+Ni allwch fynd ato.',
+'revdelete-modify-missing' => "Cafwyd gwall wrth geisio newid yr eitem gyda'r cyfeirnod $1: mae'n eisiau o'r bas data!",
+'revdelete-no-change' => "'''Dalier sylw:''' roedd eisoes gan yr eitem dyddiedig $2, $1 y cyfyngiadau ar y gallu i weld y gwneuthpwyd cais amdanynt.",
+'revdelete-concurrent-change' => "Cafwyd gwall wrth geisio newid yr eitem dyddiedig $2, $1: mae'n ymddangos bod ei statws wedi ei newid gan rywun arall wrth i chi geisio ei addasu eich hunan.
+Edrychwch ar y logiau er mwyn cael rhagor o wybodaeth.",
+'revdelete-only-restricted' => "Cafwyd gwall wrth guddio'r eitem dyddiedig $2, $1: ni allwch guddio eitemau o olwg gweinyddwyr heb ar yr un pryd ddewis un o'r opsiynau eraill i gyfyngu ar y gallu i weld.",
+'revdelete-reason-dropdown' => '*Rhesymau cyffredin dros ddileu
+** Torri hawlfraint
+** Gwybodaeth bersonol anaddas',
+'revdelete-otherreason' => 'Rheswm arall:',
+'revdelete-reasonotherlist' => 'Rheswm arall',
+'revdelete-edit-reasonlist' => 'Golygu rhestr y rhesymau dros ddileu',
+'revdelete-offender' => 'Awdur y golygiad:',
# Suppression log
'suppressionlog' => 'Lòg cuddio',
@@ -927,67 +995,13 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
'mergelogpagetext' => "Fe ddilyn rhestr o'r achosion diweddaraf o hanes tudalen yn cael ei gyfuno a hanes tudalen arall.",
# Diffs
-'history-title' => "Hanes golygu '$1'",
-'difference' => '(Gwahaniaethau rhwng diwygiadau)',
-'lineno' => 'Llinell $1:',
-'compareselectedversions' => 'Cymharer y fersiynau dewisedig',
-'visualcomparison' => "Cymharu â'r llygad",
-'wikicodecomparison' => "Cymharu'r testun wici",
-'editundo' => 'dadwneud',
-'diff-multi' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol.)',
-'diff-movedto' => 'wedi symud i $1',
-'diff-styleadded' => 'ychwanegwyd yr arddull $1',
-'diff-added' => 'wedi ychwanegu $1',
-'diff-changedto' => 'newidiwyd i $1',
-'diff-movedoutof' => "wedi'i symud oddi ar $1",
-'diff-styleremoved' => 'tynnwyd yr arddull $1',
-'diff-removed' => 'tynnwyd $1',
-'diff-changedfrom' => 'wedi newid o $1',
-'diff-src' => 'gwreiddiol',
-'diff-withdestination' => "gyda'r cyrchfan $1",
-'diff-with' => '&#32;a $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'lled',
-'diff-height' => 'uchder',
-'diff-p' => "'''paragraff'''",
-'diff-blockquote' => "'''dyfyniad'''",
-'diff-h1' => "'''pennawd (lefel 1)'''",
-'diff-h2' => "'''pennawd (lefel 2)'''",
-'diff-h3' => "'''pennawd (lefel 3)'''",
-'diff-h4' => "'''pennawd (lefel 4)'''",
-'diff-h5' => "'''pennawd (lefel 5)'''",
-'diff-pre' => "'''bloc wedi ei ragfformatio'''",
-'diff-div' => "'''rhaniad'''",
-'diff-ul' => "'''rhestr heb ei drefnu'''",
-'diff-ol' => "'''rhestr trefnedig'''",
-'diff-li' => "'''eitem ar y rhestr'''",
-'diff-table' => "'''tabl'''",
-'diff-tbody' => "'''cynnwys tabl'''",
-'diff-tr' => "'''rhes'''",
-'diff-td' => "'''cell'''",
-'diff-th' => "'''pennawd'''",
-'diff-br' => "'''toriad'''",
-'diff-hr' => "'''llinell fesur lorweddol'''",
-'diff-code' => "'''bloc o gôd cyfrifiadurol'''",
-'diff-dl' => "'''rhestr diffiniadau'''",
-'diff-dt' => "'''term diffinio'''",
-'diff-dd' => "'''diffiniad'''",
-'diff-input' => "'''mewnbwn'''",
-'diff-form' => "'''ffurflen'''",
-'diff-img' => "'''delwedd'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''cyswllt'''",
-'diff-i' => "'''italig'''",
-'diff-b' => "'''print trwm'''",
-'diff-strong' => "'''cryf'''",
-'diff-em' => "'''pwyslais'''",
-'diff-font' => "'''ffont'''",
-'diff-big' => "'''mawr'''",
-'diff-del' => "'''wedi ei ddileu'''",
-'diff-tt' => "'''lled penodol'''",
-'diff-sub' => "'''isysgrif'''",
-'diff-sup' => "'''uwchysgrif'''",
-'diff-strike' => "'''llinell drwyddo'''",
+'history-title' => "Hanes golygu '$1'",
+'difference' => '(Gwahaniaethau rhwng diwygiadau)',
+'lineno' => 'Llinell $1:',
+'compareselectedversions' => 'Cymharer y fersiynau dewisedig',
+'showhideselectedversions' => 'Dangos/cuddio y diwygiadau dewisedig',
+'editundo' => 'dadwneud',
+'diff-multi' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol.)',
# Search results
'searchresults' => "Canlyniadau'r chwiliad",
@@ -995,28 +1009,25 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
'searchresulttext' => 'Am fwy o wybodaeth am chwilio {{SITENAME}}, gwelwch [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Chwiliwyd am \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pob tudalen yn dechrau gyda "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pob tudalen sy\'n cysylltu â "$1"]])',
'searchsubtitleinvalid' => "Chwiliwyd am '''$1'''",
-'noexactmatch' => "'''Nid oes tudalen a'r enw '$1' yn bod.''' Gallwch [[:$1|greu'r dudalen]].",
-'noexactmatch-nocreate' => "'''Nid oes tudalen o'r enw \"\$1\".'''",
'toomanymatches' => "Cafwyd hyd i ormod o enghreifftiau o'r term chwilio; ceisiwch chwilio am derm arall",
'titlematches' => 'Teitlau erthygl yn cyfateb',
'notitlematches' => 'Does dim teitl yn cyfateb',
'textmatches' => 'Testun erthygl yn cyfateb',
'notextmatches' => 'Does dim testun yn cyfateb',
-'prevn' => 'y $1 cynt',
-'nextn' => 'y $1 nesaf',
+'prevn' => '{{PLURAL:$1||yr $1 cynt|y $1 gynt|y $1 chynt|y $1 chynt|y $1 cynt}}',
+'nextn' => 'y {{PLURAL:$1|$1}} nesaf',
'prevn-title' => 'Y $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} cynt',
'nextn-title' => 'Y $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} nesaf',
'shown-title' => 'Dangos $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} y dudalen',
-'viewprevnext' => 'Dangos ($1) ($2) ($3).',
+'viewprevnext' => 'Dangos ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Dewisiadau chwilio',
'searchmenu-exists' => "'''Mae tudalen o'r enw \"[[\$1]]\" ar y wici hwn'''",
'searchmenu-new' => "'''Creu'r dudalen \"[[:\$1]]\" ar y wici hwn!'''",
'searchhelp-url' => 'Help:Cymorth',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Chwilio drwy tudalennau gyda'r rhagddodiad hwn]]",
-'searchprofile-articles' => 'Tudalennau pwnc',
-'searchprofile-articles-and-proj' => 'Tudalennau pwnc a phrosiect',
-'searchprofile-project' => 'Tudalennau prosiect',
-'searchprofile-images' => 'Ffeiliau',
+'searchprofile-articles' => 'Tudalennau pwnc (erthyglau/ffeiliau)',
+'searchprofile-project' => 'Tudalennau Cymorth a Phrosiect',
+'searchprofile-images' => 'Ffeiliau amlgyfrwng',
'searchprofile-everything' => 'Popeth',
'searchprofile-advanced' => 'Uwch',
'searchprofile-articles-tooltip' => 'Chwilio drwy $1',
@@ -1024,8 +1035,6 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
'searchprofile-images-tooltip' => 'Chwilio am ffeiliau',
'searchprofile-everything-tooltip' => "Chwilio'r cynnwys gyfan (gan gynnwys tudalennau sgwrs)",
'searchprofile-advanced-tooltip' => 'Chwilio drwy parthau dewisol',
-'prefs-search-nsdefault' => "Chwilio gyda'r gosodiadau diofyn:",
-'prefs-search-nscustom' => 'Chwilio drwy parthau dewisol:',
'search-result-size' => '$1 ({{PLURAL:$2|dim geiriau|$2 gair|$2 air|$2 gair|$2 gair|$2 gair|}})',
'search-result-score' => 'Perthnasedd: $1%',
'search-redirect' => '(ailgyfeiriad $1)',
@@ -1038,11 +1047,12 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
'search-mwsuggest-disabled' => 'dim awgrymiadau',
'search-relatedarticle' => 'Erthyglau eraill tebyg',
'mwsuggest-disable' => 'Analluogi awgrymiadau AJAX',
+'searcheverything-enable' => 'Chwilio pob parth',
'searchrelated' => 'erthyglau eraill tebyg',
'searchall' => 'oll',
'showingresults' => "Yn dangos $1 {{PLURAL:$1|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
'showingresultsnum' => "Yn dangos $3 {{PLURAL:$3|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
-'showingresultstotal' => "Yn dangos {{PLURAL:$4|canlyniad '''$1'''|canlyniad '''$1'''|canlyniadau '''$1 - $2'''|canlyniadau '''$1 - $2'''|canlyniadau '''$1 - $2'''|canlyniadau '''$1 - $2'''}} o'r cyfanswm '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5||Canlyniad '''$1''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''}} ar gyfer '''$4'''",
'nonefound' => "'''Sylwer''': Dim ond rhai parthau sy'n cael eu chwilio'n ddiofyn. Os ydych am chwilio'r holl barthau (gan gynnwys tudalennau sgwrs, nodiadau, ayb) teipiwch ''all:'' o flaen yr enw. Os am chwilio parth arbennig teipiwch ''enw'r parth:'' o flaen yr enw.",
'search-nonefound' => "Ni chafwyd dim canlyniadau i'r ymholiad.",
'powersearch' => 'Chwilio',
@@ -1050,113 +1060,153 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
'powersearch-ns' => 'Chwilio yn y parthau:',
'powersearch-redir' => 'Rhestru ailgyfeiriadau',
'powersearch-field' => 'Chwilier am',
+'powersearch-togglelabel' => 'Dewis:',
+'powersearch-toggleall' => 'Oll',
+'powersearch-togglenone' => 'Dim un',
'search-external' => 'Chwiliad allanol',
'searchdisabled' => "Mae'r teclyn chwilio ar {{SITENAME}} wedi'i analluogi dros dro.
Yn y cyfamser gallwch chwilio drwy Google.
Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
+# Quickbar
+'qbsettings' => 'Panel llywio',
+'qbsettings-none' => 'Dim',
+'qbsettings-fixedleft' => 'Sefydlog ar y chwith',
+'qbsettings-fixedright' => 'Sefydlog ar y dde',
+'qbsettings-floatingleft' => 'Yn arnofio ar y chwith',
+'qbsettings-floatingright' => 'Yn arnofio ar y dde',
+
# Preferences page
-'preferences' => 'Dewisiadau',
-'mypreferences' => 'Fy newisiadau',
-'prefs-edits' => 'Nifer y golygiadau:',
-'prefsnologin' => 'Nid ydych wedi mewngofnodi',
-'prefsnologintext' => 'Rhaid i chi <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} fewngofnodi]</span> er mwyn gosod eich dewisiadau defnyddiwr.',
-'prefsreset' => "Mae'r dewisiadau wedi cael eu hail-osod o'r storfa.",
-'qbsettings' => 'Panel llywio',
-'qbsettings-none' => 'Dim',
-'qbsettings-fixedleft' => 'Sefydlog ar y chwith',
-'qbsettings-fixedright' => 'Sefydlog ar y dde',
-'qbsettings-floatingleft' => 'Yn arnofio ar y chwith',
-'qbsettings-floatingright' => 'Yn arnofio ar y dde',
-'changepassword' => 'Newid y cyfrinair',
-'skin' => 'Gwedd',
-'skin-preview' => 'Rhagolwg',
-'math' => 'Mathemateg',
-'dateformat' => 'Fformat dyddiad',
-'datedefault' => 'Dim dewisiad',
-'datetime' => 'Dyddiad ac amser',
-'math_failure' => 'Wedi methu dosrannu',
-'math_unknown_error' => 'gwall anhysbys',
-'math_unknown_function' => 'ffwythiant anhysbys',
-'math_lexing_error' => 'gwall lecsio',
-'math_syntax_error' => 'gwall cystrawen',
-'math_image_error' => "Trosiad PNG wedi methu; gwiriwch fod latex, dvips, a gs wedi'u sefydlu'n gywir cyn trosi.",
-'math_bad_tmpdir' => 'Yn methu creu cyfeiriadur mathemateg dros dro, nac ysgrifennu iddo',
-'math_bad_output' => 'Yn methu creu cyfeiriadur allbwn mathemateg nac ysgrifennu iddo',
-'math_notexvc' => 'Rhaglen texvc yn eisiau; gwelwch math/README er mwyn ei chyflunio.',
-'prefs-personal' => 'Data defnyddiwr',
-'prefs-rc' => 'Newidiadau diweddar',
-'prefs-watchlist' => 'Rhestr wylio',
-'prefs-watchlist-days' => "Nifer y diwrnodau i'w dangos yn y rhestr wylio:",
-'prefs-watchlist-days-max' => '(hyd at 7 diwrnod)',
-'prefs-watchlist-edits' => "Nifer y golygiadau i'w dangos wrth ehangu'r rhestr wylio:",
-'prefs-watchlist-edits-max' => '(hyd at uchafswm o 1000)',
-'prefs-misc' => 'Amrywiol',
-'prefs-resetpass' => 'Newid y cyfrinair',
-'saveprefs' => "Cadw'r dewisiadau",
-'resetprefs' => "Clirio'r darpar newidiadau",
-'restoreprefs' => 'Adfer yr holl osodiadau diofyn',
-'textboxsize' => 'Golygu',
-'prefs-edit-boxsize' => 'Maint y blwch testun.',
-'rows' => 'Rhesi:',
-'columns' => 'Colofnau:',
-'searchresultshead' => 'Chwilio',
-'resultsperpage' => 'Cyfradd taro fesul tudalen:',
-'contextlines' => "Nifer y llinellau i'w dangos ar gyfer pob hit:",
-'contextchars' => 'Nifer y llythrennau a nodau eraill i bob llinell:',
-'stub-threshold' => 'Trothwy ar gyfer fformatio <a href="#" class="stub">cyswllt eginyn</a> (beitiau):',
-'recentchangesdays' => "Nifer y diwrnodau i'w dangos yn 'newidiadau diweddar':",
-'recentchangesdays-max' => '(hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}})',
-'recentchangescount' => "Nifer y golygiadau i'w dangos yn ddiofyn ar dudalennau newidiadau diweddar, hanes, a logiau:",
-'savedprefs' => 'Mae eich dewisiadau wedi cael eu cadw.',
-'timezonelegend' => 'Ardal amser:',
-'timezonetext' => '¹Nifer yr oriau o wahaniaeth rhwng eich amser lleol ac amser y gweinydd (UTC).',
-'localtime' => 'Amser lleol:',
-'timezoneselect' => 'Cylchfa amser:',
-'timezoneuseserverdefault' => 'Amser y gweinydd',
-'timezoneuseoffset' => 'Arall (nodwch yr atred)',
-'timezoneoffset' => 'Atred¹:',
-'servertime' => 'Amser y gweinydd:',
-'guesstimezone' => 'Llenwi oddi wrth y porwr',
-'timezoneregion-africa' => 'Affrica',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Yr Antarctig',
-'timezoneregion-arctic' => 'Yr Arctig',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Môr Iwerydd',
-'timezoneregion-australia' => 'Awstralia',
-'timezoneregion-europe' => 'Ewrop',
-'timezoneregion-indian' => 'Cefnfor yr India',
-'timezoneregion-pacific' => 'Y Môr Tawel',
-'allowemail' => 'Galluogi e-bost oddi wrth ddefnyddwyr eraill',
-'prefs-searchoptions' => 'Chwilio',
-'prefs-namespaces' => 'Parthau',
-'defaultns' => 'Chwiliwch y parthau rhagosodedig isod:',
-'default' => 'rhagosodyn',
-'files' => 'Ffeiliau',
-'prefs-custom-css' => 'CSS o hunan-ddewis',
-'prefs-custom-js' => 'JS o hunan-ddewis',
+'preferences' => 'Dewisiadau',
+'mypreferences' => 'Fy newisiadau',
+'prefs-edits' => 'Nifer y golygiadau:',
+'prefsnologin' => 'Nid ydych wedi mewngofnodi',
+'prefsnologintext' => 'Rhaid i chi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} fewngofnodi]</span> er mwyn gosod eich dewisiadau defnyddiwr.',
+'changepassword' => 'Newid y cyfrinair',
+'prefs-skin' => 'Gwedd',
+'skin-preview' => 'Rhagolwg',
+'prefs-math' => 'Mathemateg',
+'datedefault' => 'Dim dewisiad',
+'prefs-datetime' => 'Dyddiad ac amser',
+'prefs-personal' => 'Data defnyddiwr',
+'prefs-rc' => 'Newidiadau diweddar',
+'prefs-watchlist' => 'Rhestr wylio',
+'prefs-watchlist-days' => "Nifer y diwrnodau i'w dangos yn y rhestr wylio:",
+'prefs-watchlist-days-max' => '(hyd at 7 diwrnod)',
+'prefs-watchlist-edits' => "Nifer y golygiadau i'w dangos wrth ehangu'r rhestr wylio:",
+'prefs-watchlist-edits-max' => '(hyd at uchafswm o 1000)',
+'prefs-watchlist-token' => 'Tocyn y rhestr wylio:',
+'prefs-misc' => 'Amrywiol',
+'prefs-resetpass' => 'Newid y cyfrinair',
+'prefs-email' => 'E-bostio',
+'prefs-rendering' => 'Ymddangosiad',
+'saveprefs' => "Cadw'r dewisiadau",
+'resetprefs' => "Clirio'r darpar newidiadau",
+'restoreprefs' => 'Adfer yr holl osodiadau diofyn',
+'prefs-editing' => 'Golygu',
+'prefs-edit-boxsize' => 'Maint y blwch testun.',
+'rows' => 'Rhesi:',
+'columns' => 'Colofnau:',
+'searchresultshead' => 'Chwilio',
+'resultsperpage' => 'Cyfradd taro fesul tudalen:',
+'contextlines' => "Nifer y llinellau i'w dangos ar gyfer pob hit:",
+'contextchars' => 'Nifer y llythrennau a nodau eraill i bob llinell:',
+'stub-threshold' => 'Trothwy ar gyfer fformatio <a href="#" class="stub">cyswllt eginyn</a> (beitiau):',
+'recentchangesdays' => "Nifer y diwrnodau i'w dangos yn 'newidiadau diweddar':",
+'recentchangesdays-max' => '(hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}})',
+'recentchangescount' => "Nifer y golygiadau i'w dangos yn ddiofyn:",
+'prefs-help-recentchangescount' => 'Mae hwn yn cynnwys newidiadau diweddar, hanesion tudalennau, a logiau.',
+'prefs-help-watchlist-token' => "Gallwch gynhyrchu porthiant RSS ar gyfer eich rhestr wylio drwy osod allwedd gudd yn y blwch hwn.
+Gall unrhywun sy'n gwybod yr allwedd ddarllen eich rhestr wylio, felly gofalwch ddewis allwedd ddiogel.
+Dyma allwedd wedi ei chreu ar hap y gallwch ei defnyddio: $1",
+'savedprefs' => 'Mae eich dewisiadau wedi cael eu cadw.',
+'timezonelegend' => 'Ardal amser:',
+'localtime' => 'Amser lleol:',
+'timezoneuseserverdefault' => 'Amser y gweinydd',
+'timezoneuseoffset' => 'Arall (nodwch yr atred)',
+'timezoneoffset' => 'Atred¹:',
+'servertime' => 'Amser y gweinydd:',
+'guesstimezone' => 'Llenwi oddi wrth y porwr',
+'timezoneregion-africa' => 'Affrica',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Yr Antarctig',
+'timezoneregion-arctic' => 'Yr Arctig',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Môr Iwerydd',
+'timezoneregion-australia' => 'Awstralia',
+'timezoneregion-europe' => 'Ewrop',
+'timezoneregion-indian' => 'Cefnfor yr India',
+'timezoneregion-pacific' => 'Y Môr Tawel',
+'allowemail' => 'Galluogi e-bost oddi wrth ddefnyddwyr eraill',
+'prefs-searchoptions' => 'Chwilio',
+'prefs-namespaces' => 'Parthau',
+'defaultns' => "Neu chwilio'r parthau isod:",
+'default' => 'rhagosodyn',
+'prefs-files' => 'Ffeiliau',
+'prefs-custom-css' => 'CSS o hunan-ddewis',
+'prefs-custom-js' => 'JS o hunan-ddewis',
+'prefs-reset-intro' => "Gallwch ddefnyddio'r dudalen hon i ailosod eich dewisiadau i'r rhai diofyn.
+Ni allwch ddadwneud y weithred hon.",
+'prefs-emailconfirm-label' => "Cadarnhau'r e-bost:",
+'prefs-textboxsize' => 'Maint y ffenestr olygu',
+'youremail' => 'Eich cyfeiriad e-bost',
+'username' => 'Enw defnyddiwr:',
+'uid' => 'ID Defnyddiwr:',
+'prefs-memberingroups' => "Yn aelod o'r {{PLURAL:$1|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}} canlynol:",
+'prefs-registration' => "Amser dechrau'r cyfrif:",
+'yourrealname' => 'Eich enw cywir*',
+'yourlanguage' => 'Iaith y rhyngwyneb',
+'yourvariant' => 'Amrywiad',
+'yournick' => 'Eich llysenw (fel llofnod):',
+'prefs-help-signature' => 'Dylid arwyddo sylwadau ar dudalennau sgwrs gyda "<nowiki>~~~~</nowiki>". Fe ymddengys hwn fel eich enw ac amser y sylw.',
+'badsig' => 'Llofnod crai annilys; gwiriwch y tagiau HTML.',
+'badsiglength' => "Mae'ch llysenw'n rhy hir.
+Gall fod hyd at $1 {{PLURAL:$1|llythyren|lythyren|lythyren|llythyren|llythyren|llythyren}} o hyd.",
+'yourgender' => 'Rhyw:',
+'gender-unknown' => 'Heb ei nodi',
+'gender-male' => 'Gwryw',
+'gender-female' => 'Benyw',
+'prefs-help-gender' => "Heb rheidrwydd: mae'r meddalwedd yn defnyddio hwn i gyfeirio atoch ac i'ch cyfarch yn ôl eich rhyw.
+Mae'r wybodaeth hon ar gael i'r cyhoedd.",
+'email' => 'E-bost',
+'prefs-help-realname' => '* Enw iawn (dewisol): Os ydych yn dewis ei roi, fe fydd yn cael ei ddefnyddio er mwyn rhoi cydnabyddiaeth i chi am eich gwaith.',
+'prefs-help-email' => "Os ydych yn dewis gosod eich cyfeiriad e-bost yna gallwn anfon cyfrinair newydd atoch os aiff yr un gwreiddiol yn angof gennych.
+Gallwch hefyd adael i eraill anfon e-bost atoch trwy'r cyswllt ar eich tudalen defnyddiwr neu eich tudalen sgwrs, heb ddatguddio'ch manylion personol.",
+'prefs-help-email-required' => 'Cyfeiriad e-bost yn angenrheidiol.',
+'prefs-info' => 'Gwybodaeth sylfaenol',
+'prefs-i18n' => 'Iaith',
+'prefs-signature' => 'Llofnod',
+'prefs-dateformat' => 'Fformat dyddiad',
+'prefs-timeoffset' => 'Atred amser',
+'prefs-advancedediting' => 'Dewisiadau uwch',
+'prefs-advancedrc' => 'Dewisiadau uwch',
+'prefs-advancedrendering' => 'Dewisiadau uwch',
+'prefs-advancedsearchoptions' => 'Dewisiadau uwch',
+'prefs-advancedwatchlist' => 'Dewisiadau uwch',
+'prefs-display' => 'Dewisiadau arddangos',
+'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
# User rights
-'userrights' => 'Rheoli galluoedd defnyddwyr', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Rheoli grwpiau defnyddiwr',
-'userrights-user-editname' => 'Rhowch enw defnyddiwr:',
-'editusergroup' => 'Golygu Grwpiau Defnyddwyr',
-'editinguser' => "Newid galluoedd y defnyddiwr '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Golygu grwpiau defnyddwyr',
-'saveusergroups' => "Cadw'r Grwpiau Defnyddwyr",
-'userrights-groupsmember' => 'Yn aelod o:',
-'userrights-groups-help' => 'Gallwch newid y grwpiau y perthyn y defnyddiwr hwn iddynt:
+'userrights' => 'Rheoli galluoedd defnyddwyr',
+'userrights-lookup-user' => 'Rheoli grwpiau defnyddiwr',
+'userrights-user-editname' => 'Rhowch enw defnyddiwr:',
+'editusergroup' => 'Golygu Grwpiau Defnyddwyr',
+'editinguser' => "Newid galluoedd y defnyddiwr '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Golygu grwpiau defnyddwyr',
+'saveusergroups' => "Cadw'r Grwpiau Defnyddwyr",
+'userrights-groupsmember' => 'Yn aelod o:',
+'userrights-groupsmember-auto' => 'Ac ynghlwm wrth aelodaeth y grwpiau uchod, yn aelod o:',
+'userrights-groups-help' => 'Gallwch newid y grwpiau y perthyn y defnyddiwr hwn iddynt:
* Mae defnyddiwr yn perthyn i grŵp pan mae tic yn y bocs.
* Nid yw defnyddiwr yn perthyn i grŵp pan nad oes tic yn y bocs.
* Mae * yn golygu na fyddwch yn gallu dad-wneud unrhyw newid yn y grŵp hwnnw.',
-'userrights-reason' => 'Rheswm:',
-'userrights-no-interwiki' => "Nid yw'r gallu ganddoch i newid galluoedd defnyddwyr ar wicïau eraill.",
-'userrights-nodatabase' => "Nid yw'r bas data $1 yn bod neu nid yw'n un lleol.",
-'userrights-nologin' => 'Rhaid i chi [[Special:UserLogin|fewngofnodi]] ar gyfrif gweinyddwr er mwyn pennu galluoedd defnyddwyr.',
-'userrights-notallowed' => "Nid yw'r gallu i bennu galluoedd defnyddwyr ynghlwm wrth eich cyfrif defnyddiwr.",
-'userrights-changeable-col' => 'Grwpiau y gallwch eu newid',
-'userrights-unchangeable-col' => 'Grwpiau na allwch eu newid',
+'userrights-reason' => 'Rheswm:',
+'userrights-no-interwiki' => "Nid yw'r gallu ganddoch i newid galluoedd defnyddwyr ar wicïau eraill.",
+'userrights-nodatabase' => "Nid yw'r bas data $1 yn bod neu nid yw'n un lleol.",
+'userrights-nologin' => 'Rhaid i chi [[Special:UserLogin|fewngofnodi]] ar gyfrif gweinyddwr er mwyn pennu galluoedd defnyddwyr.',
+'userrights-notallowed' => "Nid yw'r gallu i bennu galluoedd defnyddwyr ynghlwm wrth eich cyfrif defnyddiwr.",
+'userrights-changeable-col' => 'Grwpiau y gallwch eu newid',
+'userrights-unchangeable-col' => 'Grwpiau na allwch eu newid',
# Groups
'group' => 'Grŵp:',
@@ -1209,6 +1259,7 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'right-bigdelete' => 'Dileu tudalennau a hanes llwythog iddynt',
'right-deleterevision' => 'Dileu a dad-ddileu golygiadau arbennig o dudalennau',
'right-deletedhistory' => 'Gweld cofnodion fersiynau sydd wedi eu dileu, heb y testun ynddynt',
+'right-deletedtext' => 'Gweld ysgrifen sydd wedi ei ddileu a newidiadau rhwng fersiynau ar ôl eu dileu',
'right-browsearchive' => 'Chwilio drwy tudalennau dilëedig',
'right-undelete' => 'Adfer tudalen dilëedig',
'right-suppressrevision' => 'Adolygu ac adfer diwygiadau sydd wedi eu cuddio rhag gweinyddwyr',
@@ -1222,6 +1273,8 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'right-editprotected' => 'Golygu tudalennau sydd wedi eu diogelu (ond bod hebddynt ddiogelu sgydol)',
'right-editinterface' => "Golygu'r rhyngwyneb",
'right-editusercssjs' => 'Golygu ffeiliau CSS a JS yn perthyn i ddefnyddwyr eraill',
+'right-editusercss' => 'Golygu ffeiliau CSS yn perthyn i ddefnyddwyr eraill',
+'right-edituserjs' => 'Golygu ffeiliau JS yn perthyn i ddefnyddwyr eraill',
'right-rollback' => 'Gwrthdroi golygiadau defnyddiwr diwethaf rhyw dudalen yn sydyn',
'right-markbotedits' => 'Marcio golygiadau wedi eu gwrthdroi yn olygiadau bot',
'right-noratelimit' => 'Bod heb gyfyngiad ar gyflymder eich gweithredoedd',
@@ -1238,6 +1291,8 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'right-siteadmin' => "Cloi a datgloi'r databas",
'right-reset-passwords' => 'Ailosod cyfrinair defnyddwyr eraill',
'right-override-export-depth' => 'Allforio tudalennau gan gynnwys tudalennau cysylltiedig hyd at ddyfnder o 5',
+'right-versiondetail' => "Gweld y manylion estynedig am y fersiwn hwn o'r meddalwedd",
+'right-sendemail' => 'Anfon e-bost at ddefnyddwyr eraill',
# User rights log
'rightslog' => 'Lòg galluoedd defnyddiwr',
@@ -1287,6 +1342,15 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'recentchanges-legend' => "Dewisiadau'r newidiadau diweddar",
'recentchangestext' => "Dilynwch y newidiadau diweddaraf i'r wici ar y dudalen hon.",
'recentchanges-feed-description' => "Dilynwch y newidiadau diweddaraf i'r wici gyda'r porthiant hwn.",
+'recentchanges-label-legend' => 'Eglurhad: $1.',
+'recentchanges-legend-newpage' => '$1 - tudalen newydd',
+'recentchanges-label-newpage' => 'Dechreuwyd tudalen newydd wrth olygu',
+'recentchanges-legend-minor' => '$1 - mân olygiad',
+'recentchanges-label-minor' => 'Mân olygiad',
+'recentchanges-legend-bot' => '$1 - golygiad gan fot',
+'recentchanges-label-bot' => 'Golygwyd gan fot',
+'recentchanges-legend-unpatrolled' => '$1 - golygiad heb dderbyn ymweliad patrôl eto',
+'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
'rcnote' => "Isod mae'r '''$1''' newid diweddaraf yn ystod y {{PLURAL:$2|diwrnod|diwrnod|deuddydd|tridiau|'''$2''' diwrnod|'''$2''' diwrnod}} diwethaf, hyd at $5, $4.",
'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
'rclistfrom' => 'Dangos newidiadau newydd gan ddechrau o $1',
@@ -1313,6 +1377,8 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
# Recent changes linked
'recentchangeslinked' => 'Newidiadau perthnasol',
+'recentchangeslinked-feed' => 'Newidiadau perthnasol',
+'recentchangeslinked-toolbox' => 'Newidiadau perthnasol',
'recentchangeslinked-title' => 'Newidiadau cysylltiedig â "$1"',
'recentchangeslinked-noresult' => 'Ni chafwyd unrhyw newidiadau i dudalennau cysylltiedig yn ystod cyfnod yr ymholiad.',
'recentchangeslinked-summary' => "Mae'r dudalen arbennig hon yn dangos y newidiadau diweddaraf i'r tudalennau hynny y mae cyswllt yn arwain atynt ar y dudalen a enwir (neu newidiadau i dudalennau sy'n aelodau o'r categori a enwir). Dangosir tudalennau sydd ar [[Special:Watchlist|eich rhestr wylio]] mewn print '''trwm'''.",
@@ -1322,8 +1388,8 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
# Upload
'upload' => 'Uwchlwytho ffeil',
'uploadbtn' => 'Uwchlwytho ffeil',
-'reupload' => 'Ail-uwchlwytho',
'reuploaddesc' => "Dileu'r uwchlwytho a dychwelyd i'r ffurflen uwchlwytho",
+'upload-tryagain' => "Uwchlwyther disgrifiad newydd o'r ffeil",
'uploadnologin' => 'Nid ydych wedi mewngofnodi',
'uploadnologintext' => "Mae'n rhaid i chi [[Special:UserLogin|fewngofnodi]] er mwyn uwchlwytho ffeiliau.",
'upload_directory_missing' => "Mae'r cyfeiriadur uwchlwytho ($1) yn eisiau, ac ni allai'r gweinydd gwe ei greu.",
@@ -1355,6 +1421,7 @@ Gweler y [[Special:NewFiles|galeri o ffeiliau newydd]] i fwrw golwg drostynt.",
'minlength1' => 'Rhaid i enwau ffeiliau gynnwys un llythyren neu ragor.',
'illegalfilename' => 'Mae\'r enw ffeil "$1" yn cynnwys nodau sydd wedi\'u gwahardd mewn teitlau tudalennau. Ail-enwch y ffeil ac uwchlwythwch hi eto os gwelwch yn dda.',
'badfilename' => 'Mae enw\'r ffeil wedi\'i newid i "$1".',
+'filetype-mime-mismatch' => "Nid yw estyniad y ffeil yn cysefeillio â'r math MIME.",
'filetype-badmime' => "Ni chaniateir uwchlwytho ffeiliau o'r math MIME '$1'.",
'filetype-bad-ie-mime' => 'Ni ellir uwchlwytho\'r ffeil hon oherwydd y byddai Internet Explorer yn ei adnabod fel "$1", sef math annilys o ffeil sydd efallai hefyd yn beryglus.',
'filetype-unwanted-type' => "Mae'r math '''\".\$1\"''' o ffeil yn anghymeradwy. Mae'n well defnyddio ffeil {{PLURAL:\$3|o'r math|o'r math|o'r mathau|o'r mathau|o'r mathau|o'r mathau}} \$2.",
@@ -1373,7 +1440,6 @@ Er mwyn gwneud i'r crynodeb ymddangos yno, bydd raid i chi olygu'r dudalen ddisg
* Enw'r ffeil ar fin ei uwchlwytho: '''<tt>[[:$1]]</tt>'''
* Enw'r ffeil sydd eisoes yn bod: '''<tt>[[:$2]]</tt>'''
Dewiswch enw arall os gwelwch yn dda.",
-'fileexists-thumb' => "<center>'''Y ddelwedd eisoes ar glawr'''</center>",
'fileexists-thumbnail-yes' => "Ymddengys bod delwedd wedi ei leihau ''(bawd)'' ar y ffeil. [[$1|thumb]]
Cymharwch gyda'r ffeil '''<tt>[[:$1]]</tt>'''.
Os mai'r un un llun ar ei lawn faint sydd ar yr ail ffeil yna does dim angen uwchlwytho llun ychwanegol o faint bawd.",
@@ -1391,6 +1457,7 @@ Ewch nôl ac uwchlwythwch y ffeil gydag enw gwahanol iddo.
Dylech edrych ar hanes dileu'r ffeil honno cyn bwrw ati i'w llwytho unwaith eto.",
'successfulupload' => 'Wedi llwyddo uwchlwytho',
'uploadwarning' => 'Rhybudd uwchlwytho',
+'uploadwarning-text' => 'Newidiwch ddisgrifiad y ffeil isod ac yna ceisiwch ei huwchlwytho eto, os gwelwch yn dda.',
'savefile' => "Cadw'r ffeil",
'uploadedimage' => 'wedi llwytho "[[$1]]"',
'overwroteimage' => 'wedi uwchlwytho fersiwn newydd o "[[$1]]"',
@@ -1399,11 +1466,14 @@ Dylech edrych ar hanes dileu'r ffeil honno cyn bwrw ati i'w llwytho unwaith eto.
'php-uploaddisabledtext' => 'Anablwyd uwchlwytho ffeiliau yn PHP.
Gwiriwch y gosodiad ar file_uploads.',
'uploadscripted' => "Mae'r ffeil hon yn cynnwys HTML neu sgript a all achosi problemau i borwyr gwe.",
-'uploadcorrupt' => 'Mae nam ar y ffeil neu mae ganddi estyniad anghywir. Gwiriwch y ffeil ac uwchlwythwch eto.',
'uploadvirus' => 'Mae firws gan y ffeil hon! Manylion: $1',
+'upload-source' => 'Y ffeil gwreiddiol',
'sourcefilename' => "Enw'r ffeil wreiddiol:",
+'sourceurl' => 'URL y gwreiddiol:',
'destfilename' => 'Enw ffeil y cyrchfan:',
'upload-maxfilesize' => 'Maint mwyaf ffeil: $1',
+'upload-description' => 'Disgrifiad y ffeil',
+'upload-options' => 'Dewisiadau uwchlwytho',
'watchthisupload' => 'Gwylier y ffeil hon',
'filewasdeleted' => "Cafodd ffeil o'r enw hwn eisoes ei uwchlwytho ac yna ei dileu.
Dylech ddarllen y $1 cyn bwrw ati i'w uwchlwytho unwaith eto.",
@@ -1413,15 +1483,46 @@ Ail-feddyliwch a ddylech barhau i uwchlwytho'r ffel hon.
Dyma'r lòg dileu ar gyfer y ffeil i chi gael gweld:",
'filename-bad-prefix' => "Mae'r enw ar y ffeil yr ydych yn ei uwchlwytho yn dechrau gyda '''\"\$1\"'''. Mae'r math hwn o enw diystyr fel arfer yn cael ei osod yn awtomatig gan gamerâu digidol. Mae'n well gosod enw sy'n disgrifio'r ffeil arno.",
-'upload-proto-error' => 'Protocol gwallus',
-'upload-proto-error-text' => "Rhaid cael URLs yn dechrau gyda <code>http://</code> neu <code>ftp://</code> wrth uwchlwytho'n bell.",
-'upload-file-error' => 'Gwall mewnol',
-'upload-file-error-text' => 'Cafwyd gwall mewnol wrth geisio creu ffeil dros dro ar y gweinydd.
+'upload-proto-error' => 'Protocol gwallus',
+'upload-proto-error-text' => "Rhaid cael URLs yn dechrau gyda <code>http://</code> neu <code>ftp://</code> wrth uwchlwytho'n bell.",
+'upload-file-error' => 'Gwall mewnol',
+'upload-file-error-text' => 'Cafwyd gwall mewnol wrth geisio creu ffeil dros dro ar y gweinydd.
Byddwch gystal â chysylltu â [[Special:ListUsers/sysop|gweinyddwr]].',
-'upload-misc-error' => 'Gwall uwchlwytho anhysbys',
-'upload-misc-error-text' => "Cafwyd gwall anghyfarwydd yn ystod yr uwchlwytho.
+'upload-misc-error' => 'Gwall uwchlwytho anhysbys',
+'upload-misc-error-text' => "Cafwyd gwall anghyfarwydd yn ystod yr uwchlwytho.
Sicrhewch bod yr URL yn ddilys ac yn hygyrch a cheisiwch eto.
Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].",
+'upload-too-many-redirects' => 'Roedd gormod o ailgyfeiriadau yn yr URL',
+'upload-unknown-size' => 'Maint anhysbys',
+'upload-http-error' => 'Digwyddodd gwall HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Ni chaniatawyd mynediad',
+'img-auth-nopathinfo' => "PATH_INFO yn eisiau.
+Nid yw'ch gweinydd wedi ei osod i fedru pasio'r wybodaeth hon.
+Efallai ei fod wedi ei seilio ar CGI, ac heb fod yn gallu cynnal img_auth.
+Gweler http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "Nid yw'r llwybr y gwneuthpwyd cais amdano yn y cyfeiriadur uwchlwytho ffurfweddedig.",
+'img-auth-badtitle' => 'Ddim yn gallu gwneud teitl dilys o "$1".',
+'img-auth-nologinnWL' => 'Nid ydych wedi mewngofnodi ac nid yw "$1" ar y rhestr wen.',
+'img-auth-nofile' => 'Nid oes ffeil a\'r enw "$1" ar gael.',
+'img-auth-isdir' => 'Rydych yn ceisio cyrchu cyfeiriadur o\'r enw "$1".
+Dim ond ffeiliau y cewch eu cyrchu.',
+'img-auth-streaming' => 'Wrthi\'n llifo "$1".',
+'img-auth-public' => "Gwaith img_auth.php yw allbynnu ffeiliau o wici preifat.
+Mae'r wici hwn wedi ei osod yn wici gyhoeddus.
+Er mwyn sicrhau'r diogelwch gorau posib, analluogwyd img_auth.php.",
+'img-auth-noread' => 'Nid yw\'r gallu gan y defnyddiwr hwn i gyrchu\'r ffeil "$1" i\'w ddarllen.',
+
+# HTTP errors
+'http-invalid-url' => 'URL annilys: $1',
+'http-invalid-scheme' => 'Nid ydym yn gallu cynnal URL gyda\'r rhagddodiad "$1".',
+'http-request-error' => 'Methodd y cais HTTP oherwydd gwall anhysbys.',
+'http-read-error' => 'Cafwyd gwall wrth ddarllen yr HTTP.',
+'http-timed-out' => 'Goroedi wedi digwydd ar y cais HTTP.',
+'http-curl-error' => 'Cafwyd gwall wrth nôl yr URL: $1',
+'http-host-unreachable' => 'Wedi methu cyrraedd yr URL.',
+'http-bad-status' => 'Cafwyd trafferth yn ystod y cais HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Wedi methu cyrraedd yr URL',
@@ -1433,6 +1534,7 @@ Sicrhewch bod y wefan ar waith, arhoswch ennyd, yna ceisiwch eto.
Efallai yr hoffech rhoi cynnig arni ar adeg llai prysur.',
'license' => 'Trwyddedu:',
+'license-header' => 'Trwyddedu',
'nolicense' => "Dim un wedi'i ddewis",
'license-nopreview' => '(Dim rhagolwg ar gael)',
'upload_source_url' => " (URL dilys, ar gael i'r cyhoedd)",
@@ -1453,37 +1555,41 @@ Gallwch newid trefn y rhestr trwy bwyso ar bennawd colofn.",
'listfiles_count' => 'Fersiynau',
# File description page
-'filehist' => 'Hanes y ffeil',
-'filehist-help' => 'Cliciwch ar ddyddiad/amser i weld y ffeil fel ag yr oedd bryd hynny.',
-'filehist-deleteall' => 'eu dileu i gyd',
-'filehist-deleteone' => 'dileu',
-'filehist-revert' => 'gwrthdroi',
-'filehist-current' => 'cyfredol',
-'filehist-datetime' => 'Dyddiad/Amser',
-'filehist-thumb' => 'Mân-lun',
-'filehist-thumbtext' => 'Mân-lun y fersiwn am $1',
-'filehist-nothumb' => 'Dim mân-lun',
-'filehist-user' => 'Defnyddiwr',
-'filehist-dimensions' => 'Hyd a lled',
-'filehist-filesize' => 'Maint y ffeil',
-'filehist-comment' => 'Sylw',
-'imagelinks' => "Cysylltiadau'r ffeil",
-'linkstoimage' => "Mae'r {{PLURAL:$1|tudalen|dudalen|tudalennau|tudalennau|tudalennau|tudalennau}} isod yn cysylltu i'r ddelwedd hon:",
-'linkstoimage-more' => "Mae rhagor na $1 {{PLURAL:$1|tudalen yn|dudalen yn|dudalen yn|o dudalennau'n|o dudalennau'n|o dudalennau'n}} cysylltu at y ffeil hon.
+'file-anchor-link' => 'Ffeil',
+'filehist' => 'Hanes y ffeil',
+'filehist-help' => 'Cliciwch ar ddyddiad/amser i weld y ffeil fel ag yr oedd bryd hynny.',
+'filehist-deleteall' => 'eu dileu i gyd',
+'filehist-deleteone' => 'dileu',
+'filehist-revert' => 'gwrthdroi',
+'filehist-current' => 'cyfredol',
+'filehist-datetime' => 'Dyddiad/Amser',
+'filehist-thumb' => 'Mân-lun',
+'filehist-thumbtext' => 'Mân-lun y fersiwn am $1',
+'filehist-nothumb' => 'Dim mân-lun',
+'filehist-user' => 'Defnyddiwr',
+'filehist-dimensions' => 'Hyd a lled',
+'filehist-filesize' => 'Maint y ffeil',
+'filehist-comment' => 'Sylw',
+'filehist-missing' => 'Y ffeil yn eisiau',
+'imagelinks' => "Cysylltiadau'r ffeil",
+'linkstoimage' => "Mae'r {{PLURAL:$1|tudalen|dudalen|tudalennau|tudalennau|tudalennau|tudalennau}} isod yn cysylltu i'r ddelwedd hon:",
+'linkstoimage-more' => "Mae rhagor na $1 {{PLURAL:$1|tudalen yn|dudalen yn|dudalen yn|o dudalennau'n|o dudalennau'n|o dudalennau'n}} cysylltu at y ffeil hon.
Mae'r rhestr canlynol yn dangos y {{PLURAL:$1|$1 cysylltiad cyntaf}} at y ffeil hon yn unig. Mae [[Special:WhatLinksHere/$2|rhestr lawn]] ar gael.",
-'nolinkstoimage' => 'Nid oes cyswllt ar unrhyw dudalen yn arwain at y ffeil hon.',
-'morelinkstoimage' => 'Gweld [[Special:WhatLinksHere/$1|rhagor o gysylltiadau]] at y ffeil hon.',
-'redirectstofile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn ailgyfeirio at y ffeil hon:",
-'duplicatesoffile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn union debyg i'r ffeil hon ([[Special:FileDuplicateSearch/$2|rhagor o fanylion]]):",
-'sharedupload' => 'Daw y ffeil hon o $1, felly gall fod ar waith ar brosiectau eraill.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Gwelwch $1 am fwy o fanylion.',
-'shareduploadwiki-desc' => 'Dangosir isod y disgrifiad ohoni sydd yno ar $1.',
-'shareduploadwiki-linktext' => 'dudalen ddisgrifiad y ffeil',
-'noimage' => "Does dim ffeil o'r enw hwn i gael, ond gallwch $1.",
-'noimage-linktext' => 'uwchlwytho un',
-'uploadnewversion-linktext' => "Uwchlwytho fersiwn newydd o'r ffeil hon",
-'shared-repo-from' => 'oddi ar $1', # $1 is the repository name
-'shared-repo' => 'storfa cyfrannol', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Nid oes cyswllt ar unrhyw dudalen yn arwain at y ffeil hon.',
+'morelinkstoimage' => 'Gweld [[Special:WhatLinksHere/$1|rhagor o gysylltiadau]] at y ffeil hon.',
+'redirectstofile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn ailgyfeirio at y ffeil hon:",
+'duplicatesoffile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn union debyg i'r ffeil hon ([[Special:FileDuplicateSearch/$2|rhagor o fanylion]]):",
+'sharedupload' => 'Daw y ffeil hon o $1, felly gall fod ar waith ar brosiectau eraill.',
+'sharedupload-desc-there' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
+Am wybodaeth pellach gwelwch y disgrifiad ohoni sydd ar [$2 dudalen ddisgrifio'r ffeil] yno.",
+'sharedupload-desc-here' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
+Dangosir isod y disgrifiad sydd ar [$2 dudalen ddisgrifio'r ffeil] yno.",
+'filepage-nofile' => "Does dim ffeil o'r enw hwn ar gael.",
+'filepage-nofile-link' => "Does dim ffeil o'r enw hwn ar gael, ond gallwch [$1 ei huwchlwytho].",
+'uploadnewversion-linktext' => "Uwchlwytho fersiwn newydd o'r ffeil hon",
+'shared-repo-from' => 'oddi ar $1',
+'shared-repo' => 'storfa cyfrannol',
+'shared-repo-name-wikimediacommons' => 'Comin Wikimedia',
# File reversion
'filerevert' => 'Gwrthdroi $1',
@@ -1512,6 +1618,7 @@ Mae'r rhestr canlynol yn dangos y {{PLURAL:$1|$1 cysylltiad cyntaf}} at y ffeil
** Yn torri hawlfraint
** Dwy ffeil yn union debyg',
'filedelete-edit-reasonlist' => 'Golygu rhestr y rhesymau dros ddileu',
+'filedelete-maintenance' => "Mae'r gallu i ddileu ffeiliau a'u hadfer wedi ei anallogi tra bod gwaith cynnal wrthi.",
# MIME search
'mimesearch' => 'Chwiliad MIME',
@@ -1534,7 +1641,7 @@ Cofiwch chwilio am gysylltiadau eraill at nodyn a'u hystyried cyn ei ddileu.",
# Random page
'randompage' => 'Tudalen ar hap',
-'randompage-nopages' => 'Does dim tudalennau yn y parth "$1".',
+'randompage-nopages' => 'Does dim tudalennau yn y {{PLURAL:$2|parth hwn|parth hwn|parthau hyn|parthau hyn|parthau hyn|parthau hyn}}: $1.',
# Random redirect
'randomredirect' => 'Tudalen ailgyfeirio ar hap',
@@ -1546,6 +1653,7 @@ Cofiwch chwilio am gysylltiadau eraill at nodyn a'u hystyried cyn ei ddileu.",
'statistics-header-edits' => 'Ystadegau golygiadau',
'statistics-header-views' => 'Ystadegau ymweliadau',
'statistics-header-users' => 'Ystadegau defnyddwyr',
+'statistics-header-hooks' => 'Ystadegau eraill',
'statistics-articles' => 'Tudalennau pwnc',
'statistics-pages' => 'Tudalennau',
'statistics-pages-desc' => 'Pob tudalen yn y wici, gan gynnwys tudalennau sgwrs, ailgyfeiriadau, ayb.',
@@ -1572,8 +1680,8 @@ Gosodwyd <s>llinell</s> drwy'r eitemau sydd eisoes wedi eu datrys.",
'brokenredirects' => "Ailgyfeiriadau wedi'u torri",
'brokenredirectstext' => "Mae'r ailgyfeiriadau isod yn cysylltu â thudalennau nad ydynt ar gael:",
-'brokenredirects-edit' => '(golygu)',
-'brokenredirects-delete' => '(dileu)',
+'brokenredirects-edit' => 'golygu',
+'brokenredirects-delete' => 'dileu',
'withoutinterwiki' => 'Tudalennau heb gysylltiadau ag ieithoedd eraill',
'withoutinterwiki-summary' => 'Nid oes gysylltiad rhwng y tudalennau canlynol a thudalennau mewn ieithoedd eraill:',
@@ -1681,7 +1789,7 @@ Sylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
# Special:Categories
'categories' => 'Categorïau',
-'categoriespagetext' => "Mae'r categorïau isod yn cynnwys tudalennau neu ffeiliau.
+'categoriespagetext' => "Mae'r {{PLURAL:$1|categori|categori|categorïau|categorïau|categorïau|categorïau}} isod yn cynnwys tudalennau neu ffeiliau amlgyfrwng.
Ni ddangosir [[Special:UnusedCategories|categorïau gwag]] yma.
Gweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
'categoriesfrom' => 'Dangos categorïau gan ddechrau gyda:',
@@ -1689,8 +1797,9 @@ Gweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
'special-categories-sort-abc' => 'trefnu yn ôl yr wyddor',
# Special:DeletedContributions
-'deletedcontributions' => 'Cyfraniadau defnyddiwr i dudalennau dilëedig',
-'deletedcontributions-title' => 'Cyfraniadau defnyddiwr i dudalennau dilëedig',
+'deletedcontributions' => 'Cyfraniadau defnyddiwr i dudalennau dilëedig',
+'deletedcontributions-title' => 'Cyfraniadau defnyddiwr i dudalennau dilëedig',
+'sp-deletedcontributions-contribs' => 'cyfraniadau',
# Special:LinkSearch
'linksearch' => 'Cysylltiadau allanol',
@@ -1706,6 +1815,16 @@ Protocoliau sy\'n cael eu cynnal: <tt>$1</tt>',
'listusersfrom' => 'Dangos y defnyddwyr gan ddechrau â:',
'listusers-submit' => 'Dangos',
'listusers-noresult' => "Dim defnyddiwr i'w gael.",
+'listusers-blocked' => '(wedi ei flocio)',
+
+# Special:ActiveUsers
+'activeusers' => 'Rhestr defnyddwyr gweithgar',
+'activeusers-intro' => 'Dyma restr y defnyddwyr a fuont yn weithgar o fewn y {{PLURAL:$1|diwrnod|diwrnod|deuddydd|tridiau|$1 diwrnod|$1 diwrnod}} diwethaf.',
+'activeusers-count' => '$1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|golygiad}} yn ystod y {{PLURAL:$3|diwrnod|diwrnod|deuddydd|tridiau|$3 diwrnod|$3 diwrnod}} diwethaf',
+'activeusers-from' => "Rhestru'r defnyddwyr gan ddechrau gyda:",
+'activeusers-hidebots' => 'Cuddio botiau',
+'activeusers-hidesysops' => 'Cuddio gweinyddwyr',
+'activeusers-noresult' => "Dim defnyddwyr i'w cael.",
# Special:Log/newusers
'newuserlogpage' => 'Lòg creu cyfrifon defnyddwyr newydd',
@@ -1716,16 +1835,22 @@ Protocoliau sy\'n cael eu cynnal: <tt>$1</tt>',
'newuserlog-autocreate-entry' => "Cyfrif wedi ei greu'n awtomatig",
# Special:ListGroupRights
-'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
-'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
-'listgrouprights-group' => 'Grŵp',
-'listgrouprights-rights' => 'Galluoedd',
-'listgrouprights-helppage' => 'Help:Galluoedd yn ôl grŵp',
-'listgrouprights-members' => '(rhestr aelodau)',
-'listgrouprights-addgroup' => "Yn gallu ychwanegu'r {{PLURAL:$2|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}}: $1",
-'listgrouprights-removegroup' => "Yn gallu tynnu'r {{PLURAL:$2|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}}: $1",
-'listgrouprights-addgroup-all' => "Yn gallu ychwanegu'r holl grwpiau",
-'listgrouprights-removegroup-all' => "Yn gallu tynnu'r holl grwpiau",
+'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
+'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Gallu sydd wedi ei roi</span>
+* <span class="listgrouprights-revoked">Gallu sydd wedi ei dynnu yn ei ôl</span>',
+'listgrouprights-group' => 'Grŵp',
+'listgrouprights-rights' => 'Galluoedd',
+'listgrouprights-helppage' => 'Help:Galluoedd yn ôl grŵp',
+'listgrouprights-members' => '(rhestr aelodau)',
+'listgrouprights-addgroup' => "Yn gallu ychwanegu'r {{PLURAL:$2|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}}: $1",
+'listgrouprights-removegroup' => "Yn gallu tynnu'r {{PLURAL:$2|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}}: $1",
+'listgrouprights-addgroup-all' => "Yn gallu ychwanegu'r holl grwpiau",
+'listgrouprights-removegroup-all' => "Yn gallu tynnu'r holl grwpiau",
+'listgrouprights-addgroup-self' => 'Yn gallu ychwanegu {{PLURAL:$2|grŵp}} at eich cyfrif eich hunan: $1',
+'listgrouprights-removegroup-self' => 'Yn gallu tynnu {{PLURAL:$2|grŵp}} oddi ar eich cyfrif eich hunan: $1',
+'listgrouprights-addgroup-self-all' => "Yn gallu ychwanegu'r holl grwpiau at eich cyfrif eich hunan",
+'listgrouprights-removegroup-self-all' => "Yn gallu tynnu'r holl grwpiau oddi ar eich cyfrif eich hunan",
# E-mail user
'mailnologin' => "Does dim cyfeiriad i'w anfon iddo",
@@ -1803,7 +1928,7 @@ Os ydych am ddiddymu'r dudalen o'r rhestr wylio, cliciwch ar \"Stopio gwylio\" y
'enotif_anon_editor' => 'defnyddiwr anhysbys $1',
'enotif_body' => 'Annwyl $WATCHINGUSERNAME,
-$CHANGEDORCREATED y dudalen \'$PAGETITLE\' ar {{SITENAME}} ar $PAGEEDITDATE gan $PAGEEDITOR; gweler $PAGETITLE_URL am y diwygiad presennol.
+$CHANGEDORCREATED y dudalen \'$PAGETITLE\' ar {{SITENAME}} ar $PAGEEDITDATE gan $PAGEEDITOR; gwelir y diwygiad presennol ar $PAGETITLE_URL.
$NEWPAGE
@@ -1813,13 +1938,16 @@ Cysylltu â\'r golygydd:
e-bost: $PAGEEDITOR_EMAIL
wici: $PAGEEDITOR_WIKI
-Os digwydd mwy o olygiadau i\'r dudalen cyn i chi ymweld â hi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr gwylio, ar gyfer y tudalennau rydych yn eu gwylio.
+Os digwydd mwy o olygiadau i\'r dudalen cyn i chi ymweld â hi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.
Sustem hysbysu {{SITENAME}}
--
I newid eich gosodiadau gwylio, ymwelwch â
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+I dynnu\'r dudalen oddi ar eich rhestr wylio, ewch at
+$UNWATCHURL
Am fwy o gymorth ac adborth:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1833,10 +1961,11 @@ Am fwy o gymorth ac adborth:
'exblank' => 'roedd y dudalen yn wag',
'delete-confirm' => 'Dileu "$1"',
'delete-legend' => 'Dileu',
-'historywarning' => "Rhybudd: mae hanes i'r dudalen rydych ar fin ei dileu.",
+'historywarning' => "'''Rhybudd:''' bu tua $1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|o olygiadau}} yn hanes y dudalen rydych ar fin ei dileu:",
'confirmdeletetext' => "Rydych chi ar fin dileu tudalen neu ddelwedd, ynghŷd â'i hanes, o'r data-bas, a hynny'n barhaol.
Os gwelwch yn dda, cadarnhewch eich bod chi wir yn bwriadu gwneud hyn, eich bod yn deall y canlyniadau, ac yn ei wneud yn ôl [[{{MediaWiki:Policy-url}}|polisïau {{SITENAME}}]].",
'actioncomplete' => "Wedi cwblhau'r weithred",
+'actionfailed' => 'Methodd y weithred',
'deletedtext' => 'Mae "<nowiki>$1</nowiki>" wedi\'i ddileu.
Gwelwch y $2 am gofnod o\'r dileuon diweddar.',
'deletedarticle' => 'wedi dileu "[[$1]]"',
@@ -1859,20 +1988,21 @@ Cyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er
Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.",
# Rollback
-'rollback' => 'Gwrthdroi golygiadau',
-'rollback_short' => 'Gwrthdroi',
-'rollbacklink' => 'gwrthdroi',
-'rollbackfailed' => 'Methodd y gwrthdroi',
-'cantrollback' => "Wedi methu gwrthdroi'r golygiad; y cyfrannwr diwethaf oedd unig awdur y dudalen hon.",
-'alreadyrolled' => "Nid yw'n bosib dadwneud y golygiad diwethaf i'r dudalen [[:$1|$1]] gan [[User:$2|$2]] ([[User talk:$2|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Gwrthdroi golygiadau',
+'rollback_short' => 'Gwrthdroi',
+'rollbacklink' => 'gwrthdroi',
+'rollbackfailed' => 'Methodd y gwrthdroi',
+'cantrollback' => "Wedi methu gwrthdroi'r golygiad; y cyfrannwr diwethaf oedd unig awdur y dudalen hon.",
+'alreadyrolled' => "Nid yw'n bosib dadwneud y golygiad diwethaf i'r dudalen [[:$1|$1]] gan [[User:$2|$2]] ([[User talk:$2|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
mae rhywun arall eisoes wedi dadwneud y golygiad neu wedi golygu'r dudalen.
[[User:$3|$3]] ([[User talk:$3|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) a wnaeth y golygiad diwethaf.",
-'editcomment' => "Crynodeb y golygiad oedd: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Wedi gwrthdroi golygiadau gan [[Special:Contributions/$2|$2]] ([[User talk:$2|Sgwrs]]); wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Gwrthdrowyd y golygiadau gan $1;
+'editcomment' => "Crynodeb y golygiad oedd: \"''\$1''\".",
+'revertpage' => 'Wedi gwrthdroi golygiadau gan [[Special:Contributions/$2|$2]] ([[User talk:$2|Sgwrs]]); wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]',
+'revertpage-nouser' => 'Wedi gwrthdroi golygiadau gan (enw wedi ei guddio); wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]',
+'rollback-success' => "Gwrthdrowyd y golygiadau gan $1;
wedi gwrthdroi i'r golygiad olaf gan $2.",
-'sessionfailure' => "Mae'n debyg fod yna broblem gyda'ch sesiwn mewngofnodi; diddymwyd y weithred er mwyn diogelu'r sustem rhag ddefnyddwyr maleisus. Gwasgwch botwm 'nôl' eich porwr ac ail-lwythwch y dudalen honno, yna ceisiwch eto.",
+'sessionfailure' => "Mae'n debyg fod yna broblem gyda'ch sesiwn mewngofnodi; diddymwyd y weithred er mwyn diogelu'r sustem rhag ddefnyddwyr maleisus. Gwasgwch botwm 'nôl' eich porwr ac ail-lwythwch y dudalen honno, yna ceisiwch eto.",
# Protect
'protectlogpage' => 'Lòg diogelu',
@@ -1889,7 +2019,7 @@ Mae'r tudalennau sydd wedi eu diogelu ar hyn o bryd wedi eu rhestri ar y [[Speci
'protectexpiry' => 'Yn dod i ben:',
'protect_expiry_invalid' => 'Amser terfynu annilys.',
'protect_expiry_old' => "Mae'r amser darfod yn y gorffennol.",
-'protect-unchain' => "Datgloi'r cyfyngiadau ar symud tudalen",
+'protect-unchain-permissions' => 'Datgloi rhagor o opsiynau diogelu',
'protect-text' => "Yma, gallwch weld a newid y lefel diogelu ar gyfer y dudalen '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ni allwch newid y lefel diogelu tra eich bod wedi eich blocio.
Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
@@ -1918,7 +2048,7 @@ Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
** Ymrafael golygu gwrthgynhyrchiol
** Tudalen aml ei defnydd',
'protect-edit-reasonlist' => "Golygu'r rhesymau dros ddiogelu",
-'protect-expiry-options' => 'awr:1 hour,ddiwrnod:1 day,wythnos:1 week,bythefnos:2 weeks,fis:1 month,3 mis:3 months,6 mis:6 months,flwyddyn:1 year,gyfnod amhenodol:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'awr:1 hour,ddiwrnod:1 day,wythnos:1 week,bythefnos:2 weeks,fis:1 month,3 mis:3 months,6 mis:6 months,flwyddyn:1 year,gyfnod amhenodol:infinite',
'restriction-type' => 'Cyfyngiad:',
'restriction-level' => 'Lefel cyfyngu:',
'minimum-size' => 'Maint lleiaf',
@@ -1957,6 +2087,7 @@ Mae'n bosib bod nam ar y cyswllt, neu fod y diwygiad eisoes wedi ei adfer neu we
'undelete-nodiff' => 'Ni chafwyd hyd i olygiad cynharach.',
'undeletebtn' => 'Adfer!',
'undeletelink' => 'gweld/adfer',
+'undeleteviewlink' => 'gweld',
'undeletereset' => 'Ailosoder',
'undeleteinvert' => "Troi'r dewis tu chwith",
'undeletecomment' => 'Rheswm:',
@@ -1996,19 +2127,23 @@ $1',
'contributions-title' => "Cyfraniadau'r defnyddiwr $1",
'mycontris' => 'Fy nghyfraniadau',
'contribsub2' => 'Dros $1 ($2)',
-'nocontribs' => "Heb ddod o hyd i newidiadau gyda'r maen prawf hwn.", # Optional parameter: $1 is the user name
+'nocontribs' => "Heb ddod o hyd i newidiadau gyda'r maen prawf hwn.",
'uctop' => '(cyfredol)',
'month' => 'Cyfraniadau hyd at fis:',
'year' => 'Cyfraniadau hyd at y flwyddyn:',
-'sp-contributions-newbies' => 'Dangos cyfraniadau gan gyfrifon newydd yn unig',
-'sp-contributions-newbies-sub' => 'Ar gyfer cyfrifon newydd',
-'sp-contributions-newbies-title' => 'Cyfraniadau defnyddwyr newydd',
-'sp-contributions-blocklog' => 'Lòg blocio',
-'sp-contributions-logs' => 'logiau',
-'sp-contributions-search' => 'Chwilio am gyfraniadau',
-'sp-contributions-username' => 'Cyfeiriad IP neu enw defnyddiwr:',
-'sp-contributions-submit' => 'Chwilier',
+'sp-contributions-newbies' => 'Dangos cyfraniadau gan gyfrifon newydd yn unig',
+'sp-contributions-newbies-sub' => 'Ar gyfer cyfrifon newydd',
+'sp-contributions-newbies-title' => 'Cyfraniadau defnyddwyr newydd',
+'sp-contributions-blocklog' => 'Lòg blocio',
+'sp-contributions-deleted' => 'cyfraniadau defnyddiwr i dudalennau dilëedig',
+'sp-contributions-logs' => 'logiau',
+'sp-contributions-talk' => 'sgwrs',
+'sp-contributions-userrights' => 'rheoli galluoedd defnyddwyr',
+'sp-contributions-blocked-notice' => "Mae'r defnyddiwr hwn wedi ei atal rhag golygu ar hyn o bryd. Mae'r cofnod diweddaraf yn y lòg blocio i'w weld isod:",
+'sp-contributions-search' => 'Chwilio am gyfraniadau',
+'sp-contributions-username' => 'Cyfeiriad IP neu enw defnyddiwr:',
+'sp-contributions-submit' => 'Chwilier',
# What links here
'whatlinkshere' => "Beth sy'n cysylltu yma",
@@ -2031,6 +2166,7 @@ $1',
# Block/unblock
'blockip' => "Blocio'r defnyddiwr",
+'blockip-title' => "Blocio'r defnyddiwr",
'blockip-legend' => "Blocio'r defnyddiwr",
'blockiptext' => "Defnyddiwch y ffurflen isod i flocio cyfeiriad IP neu ddefnyddiwr rhag ysgrifennu i'r databas. Dylech chi ddim ond gwneud hyn er mwyn rhwystro fandaliaeth a chan ddilyn [[{{MediaWiki:Policy-url}}|polisi'r wici]]. Llenwch y rheswm am y bloc yn y blwch isod -- dywedwch pa dudalen sydd wedi cael ei fandaleiddio.",
'ipaddress' => 'Cyfeiriad IP:',
@@ -2052,7 +2188,7 @@ $1',
'ipbenableautoblock' => "Blocio'n awtomatig y cyfeiriad IP diwethaf y defnyddiodd y defnyddiwr hwn, ac unrhyw gyfeiriad IP arall y bydd yn ceisio defnyddio i olygu ohono.",
'ipbsubmit' => 'Blocier y defnyddiwr hwn',
'ipbother' => 'Cyfnod arall:',
-'ipboptions' => 'o 2 awr:2 hours,o ddiwrnod:1 day,o 3 niwrnod:3 days,o wythnos:1 week,o bythefnos:2 weeks,o fis:1 month,o 3 mis:3 months,o 6 mis:6 months,o flwyddyn:1 year,amhenodol:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'o 2 awr:2 hours,o ddiwrnod:1 day,o 3 niwrnod:3 days,o wythnos:1 week,o bythefnos:2 weeks,o fis:1 month,o 3 mis:3 months,o 6 mis:6 months,o flwyddyn:1 year,amhenodol:infinite',
'ipbotheroption' => 'arall',
'ipbotherreason' => 'Rheswm arall:',
'ipbhidename' => "Cuddio'r enw defnyddiwr rhag ymddangos ar restri a golygiadau",
@@ -2081,9 +2217,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 blociau dros dro',
'ipblocklist-sh-addressblocks' => '$1 blociau IP unigol',
'ipblocklist-submit' => 'Chwilier',
+'ipblocklist-localblock' => 'Bloc lleol',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Bloc arall|Bloc arall|Blociau eraill|Blociau eraill|Blociau eraill|Blociau eraill}}',
'blocklistline' => '$1, $2 wedi blocio $3 ($4)',
'infiniteblock' => 'bloc parhaus',
-'expiringblock' => 'yn dod i ben $1',
+'expiringblock' => 'yn dod i ben ar $1 am $2',
'anononlyblock' => 'ataliwyd dim ond pan nad yw wedi mewngofnodi',
'noautoblockblock' => 'analluogwyd blocio awtomatig',
'createaccountblock' => 'ataliwyd y gallu i greu cyfrif',
@@ -2097,7 +2235,10 @@ $1',
'contribslink' => 'cyfraniadau',
'autoblocker' => 'Rydych chi wedi cael eich blocio yn awtomatig gan eich bod chi\'n rhannu cyfeiriad IP gyda "[[User:$1|$1]]". Dyma\'r rheswm a roddwyd dros flocio $1: "$2".',
'blocklogpage' => 'Lòg blociau',
-'blocklog-fulllog' => 'Lòg blocio llawn',
+'blocklog-showlog' => "Cafodd y defnyddiwr hwn ei flocio o'r blaen.
+Dyma'r lòg blocio perthnasol:",
+'blocklog-showsuppresslog' => "Cafodd y defnyddiwr hwn ei flocio a'i guddio o'r blaen.
+Dyma'r lòg cuddio perthnasol:",
'blocklogentry' => 'wedi blocio "[[$1]]" am gyfnod $2 $3',
'reblock-logentry' => 'wedi newid y gosodiadau blocio ar [[$1]], gan ddod i ben am $2 $3',
'blocklogtext' => "Dyma lòg o'r holl weithredoedd blocio a datflocio. Nid yw'r cyfeiriadau IP sydd wedi cael eu blocio'n awtomatig ar y rhestr. Gweler [[Special:IPBlockList|rhestr y blociau IP]] am restr y blociau a'r gwaharddiadau sydd yn weithredol ar hyn o bryd.",
@@ -2116,10 +2257,12 @@ $1',
'ipb_already_blocked' => 'Mae "$1" eisoes wedi ei flocio',
'ipb-needreblock' => "== Wedi blocio'n barod ==
Mae $1 wedi ei flocio'n barod. Ydych chi am newid y gosodiadau?",
+'ipb-otherblocks-header' => '{{PLURAL:$1|Bloc|Bloc|Blociau|Blociau|Blociau|Blociau}} eraill',
'ipb_cant_unblock' => "Gwall: Ni chafwyd hyd i'r bloc a'r ID $1.
Hwyrach ei fod wedi ei ddad-flocio'n barod.",
'ipb_blocked_as_range' => "Gwall: Nid yw'r IP $1 wedi ei blocio'n uniongyrchol ac felly ni ellir ei datflocio. Wedi dweud hynny, y mae'n rhan o'r amrediad $2 sydd wedi ei blocio; gellir datflocio'r amrediad.",
'ip_range_invalid' => 'Dewis IP annilys.',
+'ip_range_toolarge' => 'Ni chaniateir blociau amrediad mwy na /$1.',
'blockme' => 'Blocier fi',
'proxyblocker' => 'Dirprwy-flociwr',
'proxyblocker-disabled' => 'Analluogwyd y swyddogaeth hon.',
@@ -2129,6 +2272,8 @@ Hwyrach ei fod wedi ei ddad-flocio'n barod.",
'sorbs_create_account_reason' => 'Mae eich cyfeiriad IP wedi cael ei osod ymhlith y dirprwyon agored ar y Rhestr DNS Gwaharddedig a ddefnyddir gan {{SITENAME}}.
Ni allwch greu cyfrif.',
'cant-block-while-blocked' => 'Ni allwch flocio defnyddwyr eraill tra bod bloc arnoch chithau.',
+'cant-see-hidden-user' => "Mae'r defnyddiwr yr ydych am ei flocio eisoes wedi ei flocio a'i guddio.
+Gan nad yw'r gallu \"hideuser\" gennych, ni allwch weld y bloc ar y defnyddiwr na'i olygu.",
# Developer tools
'lockdb' => "Cloi'r databas",
@@ -2171,6 +2316,7 @@ gnewch yn siwr eich bod chi'n deall y canlyniadau cyn mynd ati.",
Os felly, gallwch symud y dudalen sgwrs neu ei gyfuno ar ôl symud y dudalen ei hun.",
'movearticle' => 'Symud y dudalen:',
+'moveuserpage-warning' => "'''Sylwer:''' Yr ydych ar fin symud tudalen defnyddiwr. Sylwch mai'r dudalen yn unig a gaiff ei symud ac ''na fydd'' y defnyddiwr yn cael ei ail-enwi.",
'movenologin' => 'Nid ydych wedi mewngofnodi',
'movenologintext' => "Mae'n rhaid bod yn ddefnyddiwr cofrestredig a'ch bod wedi [[Special:UserLogin|mewngofnodi]] cyn medru symud tudalen.",
'movenotallowed' => 'Nid oes caniatâd gennych i symud tudalennau.',
@@ -2181,7 +2327,7 @@ Os felly, gallwch symud y dudalen sgwrs neu ei gyfuno ar ôl symud y dudalen ei
'move-watch' => 'Gwylier y dudalen hon',
'movepagebtn' => 'Symud y dudalen',
'pagemovedsub' => 'Y symud wedi llwyddo',
-'movepage-moved' => '\'\'\'Symudwyd y dudalen "$1" i "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Symudwyd y dudalen "$1" i "$2"\'\'\'',
'movepage-moved-redirect' => 'Gosodwyd ail-gyfeiriad.',
'movepage-moved-noredirect' => 'Ni osodwyd tudalen ailgyfeirio.',
'articleexists' => "Mae tudalen gyda'r darpar enw yn bodoli'n barod, neu mae eich darpar enw yn annilys.
@@ -2224,6 +2370,14 @@ nid yw'n bosib cyflawnu'r symud.",
'imageinvalidfilename' => "Mae enw'r ffeil darged yn annilys",
'fix-double-redirects' => "Yn diwygio unrhyw ailgyfeiriadau sy'n cysylltu i'r teitl gwreiddiol",
'move-leave-redirect' => "Creu tudalen ail-gyfeirio â'r teitl gwreiddiol",
+'protectedpagemovewarning' => "'''Sylwer:''' Clowyd y dudalen ac felly dim ond defnyddwyr a galluoedd gweinyddu ganddynt sy'n gallu ei symud.
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
+'semiprotectedpagemovewarning' => "'''Sylwer:''' Clowyd y dudalen ac felly dim ond defnyddwyr mewngofnodedig sy'n gallu ei symud.
+Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
+'move-over-sharedrepo' => "== Y ffeil ar gael ==
+Mae'r ffeil [[:$1]] ar gael mewn storfa gyfrannol. Pe byddech yn symud y ffeil i'r teitl hwn, yna byddai'r ffeil o'r storfa gyfrannol yn cael ei disodli.",
+'file-exists-sharedrepo' => "Mae'r enw y dewisoch ar y ffeil yn cael ei ddefnyddio'n barod ar storfa gyfrannol.
+Dewiswch enw arall os gwelwch yn dda.",
# Export
'export' => 'Allforio tudalennau',
@@ -2245,15 +2399,21 @@ Yn achos yr ail ddewis, mae modd defnyddio cyswllt, e.e. [[{{#Special:Export}}/{
'export-pagelinks' => 'Cynhwyser tudalennau cysylltiedig hyd at ddyfnder o:',
# Namespace 8 related
-'allmessages' => 'Pob neges',
-'allmessagesname' => 'Enw',
-'allmessagesdefault' => 'Testun rhagosodedig',
-'allmessagescurrent' => 'Testun cyfredol',
-'allmessagestext' => "Dyma restr o'r holl negeseuon yn y parth MediaWici.
+'allmessages' => 'Pob neges',
+'allmessagesname' => 'Enw',
+'allmessagesdefault' => 'Testun rhagosodedig',
+'allmessagescurrent' => 'Testun cyfredol',
+'allmessagestext' => "Dyma restr o'r holl negeseuon yn y parth MediaWici.
Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki ar y cyd, mae croeso i chi ymweld â [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [http://translatewiki.net translatewiki.net].",
-'allmessagesnotsupportedDB' => "Nid yw '''{{ns:special}}:PobNeges''' yn cael ei gynnal gan fod '''\$wgUseDatabaseMessages''' wedi ei ddiffodd.",
-'allmessagesfilter' => 'Hidl enw neges:',
-'allmessagesmodified' => 'Dangos y rhai a ddiwygiwyd yn unig',
+'allmessagesnotsupportedDB' => "Nid yw '''{{ns:special}}:PobNeges''' yn cael ei gynnal gan fod '''\$wgUseDatabaseMessages''' wedi ei ddiffodd.",
+'allmessages-filter-legend' => 'Hidl',
+'allmessages-filter' => 'Hidlo yn ôl eu cyflwr addasu:',
+'allmessages-filter-unmodified' => 'Heb eu haddasu',
+'allmessages-filter-all' => 'Oll',
+'allmessages-filter-modified' => 'Wedi eu haddasu',
+'allmessages-prefix' => 'Hidlo yn ôl rhagddodiad:',
+'allmessages-language' => 'Iaith:',
+'allmessages-filter-submit' => 'Eler',
# Thumbnails
'thumbnail-more' => 'Chwyddo',
@@ -2263,6 +2423,9 @@ Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki
'djvu_no_xml' => 'Ddim yn gallu mofyn XML ar gyfer ffeil DjVu',
'thumbnail_invalid_params' => 'Paramedrau maint mân-lun annilys',
'thumbnail_dest_directory' => "Methwyd â chreu'r cyfeiriadur cyrchfan",
+'thumbnail_image-type' => "Nid yw'r math hwn o ddelwedd yn cael ei gynnal",
+'thumbnail_gd-library' => 'Mae ffurfwedd y llyfrgell GD yn anghyflawn: y ffwythiant $1 yn eisiau',
+'thumbnail_image-missing' => "Mae'n debyg bod y ffeil yn eisiau: $1",
# Special:Import
'import' => 'Mewnforio tudalennau',
@@ -2329,6 +2492,7 @@ Mae ffolder dros dro yn eisiau.',
'tooltip-ca-viewsource' => "Mae'r dudalen hon wedi'i diogelu. Gallwch weld y côd yma.",
'tooltip-ca-history' => "Fersiynau cynt o'r dudalen hon.",
'tooltip-ca-protect' => "Diogelu'r dudalen hon",
+'tooltip-ca-unprotect' => "Dad-ddiogelu'r dudalen hon",
'tooltip-ca-delete' => "Dileu'r dudalen hon",
'tooltip-ca-undelete' => "Adfer y golygiadau i'r dudalen hon a wnaethpwyd cyn ei dileu",
'tooltip-ca-move' => 'Symud y dudalen hon',
@@ -2339,6 +2503,7 @@ Mae ffolder dros dro yn eisiau.',
'tooltip-search-fulltext' => 'Chwilio am y testun hwn',
'tooltip-p-logo' => 'Yr Hafan',
'tooltip-n-mainpage' => "Ymweld â'r Hafan",
+'tooltip-n-mainpage-description' => 'At yr Hafan',
'tooltip-n-portal' => "Pethau i'w gwneud, adnoddau a thudalennau'r gymuned",
'tooltip-n-currentevents' => 'Gwybodaeth yn gysylltiedig â materion cyfoes',
'tooltip-n-recentchanges' => 'Rhestr y newidiadau diweddar ar y wici.',
@@ -2384,10 +2549,12 @@ Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
# Attribution
'anonymous' => 'chan {{PLURAL:$1|defnyddiwr|ddefnyddiwr|ddefnyddwyr|ddefnyddwyr|ddefnyddwyr|ddefnyddwyr}} anhysbys {{SITENAME}}',
'siteuser' => 'y defnyddiwr {{SITENAME}} $1',
-'lastmodifiedatby' => 'Newidiwyd y dudalen hon ddiwethaf am $2, $1 gan $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Defnyddiwr {{SITENAME}} anhysbys $1',
+'lastmodifiedatby' => 'Newidiwyd y dudalen hon ddiwethaf am $2, $1 gan $3.',
'othercontribs' => 'Yn seiliedig ar waith gan $1.',
'others' => 'eraill',
'siteusers' => 'y {{PLURAL:$2|defnyddiwr|defnyddiwr|defnyddwyr|defnyddwyr|defnyddwyr|defnyddwyr}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|defnyddiwr|defnyddiwr|defnyddwyr|defnyddwyr|defnyddwyr|defnyddwyr}} {{SITENAME}} anhysbys $1',
'creditspage' => "Cydnabyddiaethau'r dudalen",
'nocredits' => "Does dim cydnabyddiaethau i'r dudalen hon.",
@@ -2421,11 +2588,22 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr gwahard
'mw_math_modern' => 'Argymelledig ar gyfer porwyr modern',
'mw_math_mathml' => 'MathML os yn bosib (arbrofol)',
+# Math errors
+'math_failure' => 'Wedi methu dosrannu',
+'math_unknown_error' => 'gwall anhysbys',
+'math_unknown_function' => 'ffwythiant anhysbys',
+'math_lexing_error' => 'gwall lecsio',
+'math_syntax_error' => 'gwall cystrawen',
+'math_image_error' => "Trosiad PNG wedi methu; gwiriwch fod latex, dvips, a gs wedi'u sefydlu'n gywir cyn trosi.",
+'math_bad_tmpdir' => 'Yn methu creu cyfeiriadur mathemateg dros dro, nac ysgrifennu iddo',
+'math_bad_output' => 'Yn methu creu cyfeiriadur allbwn mathemateg nac ysgrifennu iddo',
+'math_notexvc' => 'Rhaglen texvc yn eisiau; gwelwch math/README er mwyn ei chyflunio.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcio ei bod wedi derbyn ymweliad patrôl',
'markaspatrolledtext' => 'Marcio bod y dudalen wedi derbyn ymweliad patrôl',
'markedaspatrolled' => 'Gosodwyd marc ei bod wedi derbyn ymweliad patrôl',
-'markedaspatrolledtext' => 'Wedi gosod marc bod y golygiad dewisedig wedi derbyn ymweliad patrôl.',
+'markedaspatrolledtext' => 'Wedi gosod marc bod y golygiad dewisedig o [[:$1]] wedi derbyn ymweliad patrôl.',
'rcpatroldisabled' => "Patrol y Newidiadau Diweddar wedi'i analluogi",
'rcpatroldisabledtext' => 'Analluogwyd y nodwedd Patrol y Newidiadau Diweddar.',
'markedaspatrollederror' => 'Ni ellir gosod marc ymweliad patrôl',
@@ -2455,13 +2633,10 @@ $1",
'previousdiff' => '← Y fersiwn gynt',
'nextdiff' => 'Y fersiwn dilynol →',
-# Visual comparison
-'visual-comparison' => "Cymharu â'r llygad",
-
# Media information
'mediawarning' => "'''Rhybudd''': Gallasai'r math hwn o ffeil gynnwys côd maleisus.
Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil.",
-'imagemaxsize' => 'Cyfyngu maint lluniau ar eu tudalennau disgrifiad i:',
+'imagemaxsize' => "Maint mwyaf y delweddau:<br />''(ar y tudalennau disgrifiad)''",
'thumbsize' => 'Maint mân-lun :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|tudalen|dudalen|dudalen|tudalen|thudalen|tudalen}}',
'file-info' => '(maint y ffeil: $1, ffurf MIME: $2)',
@@ -2470,6 +2645,8 @@ Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil
'svg-long-desc' => '(Ffeil SVG, maint mewn enw $1 × $2 picsel, maint y ffeil: $3)',
'show-big-image' => 'Maint llawn',
'show-big-image-thumb' => '<small>Maint y rhagolwg: $1 × $2 picsel</small>',
+'file-info-gif-looped' => 'dolennog',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ffrâm}}',
# Special:NewFiles
'newimages' => 'Oriel y ffeiliau newydd',
@@ -2508,7 +2685,7 @@ Cuddir y meysydd eraill trwy ragosodiad.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Lled',
@@ -2636,14 +2813,14 @@ Ymateb yr amledd gofodol',
'exif-unknowndate' => 'Dyddiad anhysbys',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Wedi troi tu chwith ar lorwedd', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Wedi ei droi 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Wedi troi wyneb i waered', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Wedi troi 90° yn erbyn y cloc a thu chwith yn fertigol', # 0th row: left; 0th column: top
-'exif-orientation-6' => "Wedi troi 90° gyda'r cloc", # 0th row: right; 0th column: top
-'exif-orientation-7' => "Wedi troi 90° gyda'r cloc a thu chwith yn fertigol", # 0th row: right; 0th column: bottom
-'exif-orientation-8' => "Wedi troi 90° yn groes i'r cloc", # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Wedi troi tu chwith ar lorwedd',
+'exif-orientation-3' => 'Wedi ei droi 180°',
+'exif-orientation-4' => 'Wedi troi wyneb i waered',
+'exif-orientation-5' => 'Wedi troi 90° yn erbyn y cloc a thu chwith yn fertigol',
+'exif-orientation-6' => "Wedi troi 90° gyda'r cloc",
+'exif-orientation-7' => "Wedi troi 90° gyda'r cloc a thu chwith yn fertigol",
+'exif-orientation-8' => "Wedi troi 90° yn groes i'r cloc",
'exif-planarconfiguration-1' => 'fformat talpiog',
'exif-planarconfiguration-2' => 'fformat planar',
@@ -2765,7 +2942,7 @@ Ymateb yr amledd gofodol',
'exif-gpsmeasuremode-2' => 'mesuriad 2 ddimensiwn',
'exif-gpsmeasuremode-3' => 'mesuriad 3 dimensiwn',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Cilomedr yr awr',
'exif-gpsspeed-m' => 'Milltir yr awr',
'exif-gpsspeed-n' => 'Notiau',
@@ -2784,6 +2961,7 @@ Ymateb yr amledd gofodol',
'watchlistall2' => 'holl',
'namespacesall' => 'pob un',
'monthsall' => 'pob mis',
+'limitall' => 'oll',
# E-mail address confirmation
'confirmemail' => "Cadarnhau'r cyfeiriad e-bost",
@@ -2905,7 +3083,7 @@ Gallwch hefyd [[Special:Watchlist/edit|ddefnyddio\'r rhestr arferol]].',
'duplicate-defaultsort' => 'Rhybudd: Mae\'r allwedd trefnu diofyn "$2" yn gwrthwneud yr allwedd trefnu diofyn blaenorol "$1".',
# Special:Version
-'version' => 'Fersiwn', # Not used as normal message but as header for the special page itself
+'version' => 'Fersiwn',
'version-extensions' => 'Estyniadau gosodedig',
'version-specialpages' => 'Tudalennau arbennig',
'version-parserhooks' => 'Bachau dosrannydd',
@@ -2919,7 +3097,7 @@ Gallwch hefyd [[Special:Watchlist/edit|ddefnyddio\'r rhestr arferol]].',
'version-skin-extension-functions' => 'Ffwythiannau estyn y wedd',
'version-hook-name' => "Enw'r bachyn",
'version-hook-subscribedby' => 'Tanysgrifwyd gan',
-'version-version' => 'Fersiwn',
+'version-version' => '(Fersiwn $1)',
'version-license' => 'Trwydded',
'version-software' => 'Meddalwedd gosodedig',
'version-software-product' => 'Cynnyrch',
@@ -3000,4 +3178,15 @@ Rhowch enw\'r ffeil heb y rhagddodiad "{{ns:file}}:".',
'dberr-outofdate' => "Sylwch y gall eu mynegeion o'n cynnwys fod ar ei hôl hi.",
'dberr-cachederror' => "Dyma gopi o'r dudalen a ofynnwyd amdani, a dynnwyd o'r celc. Mae'n bosib nad y fersiwn diweddaraf yw'r copi hwn.",
+# HTML forms
+'htmlform-invalid-input' => "Mae problemau gyda pheth o'ch mewnbwn",
+'htmlform-select-badoption' => "Nid yw'r gwerth a bennwyd gennych yn ddewis dilys.",
+'htmlform-int-invalid' => "Nid yw'r gwerth a bennwyd gennych yn gyfanrif.",
+'htmlform-float-invalid' => "Nid yw'r gwerth a bennwyd gennych yn rif.",
+'htmlform-int-toolow' => "Mae'r gwerth a bennwyd gennych yn llai na'r isafswm $1",
+'htmlform-int-toohigh' => "Mae'r gwerth a bennwyd gennych yn fwy na'r uchafswm $1",
+'htmlform-submit' => 'Gosoder',
+'htmlform-reset' => 'Datod y newidiadau',
+'htmlform-selectorother-other' => 'Arall',
+
);
diff --git a/languages/messages/MessagesDa.php b/languages/messages/MessagesDa.php
index a749390c..b6c4f1c7 100644
--- a/languages/messages/MessagesDa.php
+++ b/languages/messages/MessagesDa.php
@@ -22,12 +22,14 @@
* @author Kwi
* @author Lars J. Helbo <lars.helbo@gmail.com>
* @author Leolaursen
+ * @author MGA73
* @author Masz
* @author MinuteElectron
* @author Morten LJ
* @author Najami
* @author Nghtwlkr
* @author Peter Andersen
+ * @author Purodha
* @author Qaqqalik
* @author Remember the dot
* @author Sarrus
@@ -99,8 +101,8 @@ $specialPageAliases = array(
'Mostlinked' => array( 'Sider med flest henvisninger' ),
'Mostlinkedcategories' => array( 'Kategorier med flest sider' ),
'Mostlinkedtemplates' => array( 'Hyppigst brugte skabeloner' ),
- 'Mostcategories' => array( 'Sider med flest kategorier' ),
'Mostimages' => array( 'Mest brugte filer' ),
+ 'Mostcategories' => array( 'Sider med flest kategorier' ),
'Mostrevisions' => array( 'Sider med flest redigeringer' ),
'Fewestrevisions' => array( 'Sider med færrest redigeringer' ),
'Shortpages' => array( 'Korteste sider' ),
@@ -199,6 +201,7 @@ $messages = array(
'tog-enotifminoredits' => 'Send mig også en e-mail ved mindre ændringer af overvågede sider',
'tog-enotifrevealaddr' => 'Vis min e-mail-adresse i mails med besked om ændringer',
'tog-shownumberswatching' => 'Vis antal brugere, der overvåger',
+'tog-oldsig' => 'Forhåndsvisning af nuværende signatur',
'tog-fancysig' => 'Behandl signatur som wikitekst uden automatisk henvisning',
'tog-externaleditor' => 'Brug ekstern editor automatisk',
'tog-externaldiff' => 'Brug ekstern forskelsvisning automatisk',
@@ -221,6 +224,13 @@ $messages = array(
'underline-never' => 'Aldrig',
'underline-default' => 'Brug browserens indstilling',
+# Font style option in Special:Preferences
+'editfont-style' => 'Skriftstil ved redigering:',
+'editfont-default' => 'Brug browserens indstilling',
+'editfont-monospace' => 'Fastbreddeskrift',
+'editfont-sansserif' => 'Skrift uden fødder',
+'editfont-serif' => 'Skrift med fødder',
+
# Dates
'sunday' => 'søndag',
'monday' => 'mandag',
@@ -280,7 +290,7 @@ $messages = array(
'category-media-header' => 'Medier i kategorien „$1“',
'category-empty' => "''Denne kategori indeholder for øjeblikket hverken sider eller medie-filer.''",
'hidden-categories' => '{{PLURAL:$1|Skjult kategori|Skjulte kategorier}}',
-'hidden-category-category' => 'Skjulte kategorier', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skjulte kategorier',
'category-subcat-count' => '{{PLURAL:$2|Denne kategori har en underkategori.|Denne kategori indeholder nedenstående {{PLURAL:$1|underkategori|$1 underkategorier}}, af i alt $2.}}',
'category-subcat-count-limited' => 'Denne kategori indeholder {{PLURAL:$1|underkategori|$1 underkategorier}}.',
'category-article-count' => 'Denne kategori indeholder {{PLURAL:$2|kun den nedenstående side|{{PLURAL:$1|den nedenstående side|de nedenstående $1 sider}} af i alt $2.}}',
@@ -288,14 +298,24 @@ $messages = array(
'category-file-count' => 'Denne kategori indeholder {{PLURAL:$2|kun den nedenstående fil.|{{PLURAL:$1|den nedenstående fil|de nedenstående $1 filer}} af i alt $2.}}',
'category-file-count-limited' => 'Kategorien indeholder {{PLURAL:$1|den nedenstående fil|de nedenstående $1 filer}}.',
'listingcontinuesabbrev' => ' forts.',
+'index-category' => 'Indekserede sider',
+'noindex-category' => 'Ikke-indekserede sider',
'mainpagetext' => "'''MediaWiki er nu installeret.'''",
'mainpagedocfooter' => 'Se vores engelsksprogede [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentation om tilpasning af brugergrænsefladen] og [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide brugervejledningen] for oplysninger om opsætning og anvendelse.',
-'about' => 'Om',
-'article' => 'Artikel',
-'newwindow' => '(åbner i et nyt vindue)',
-'cancel' => 'Afbryd',
+'about' => 'Om',
+'article' => 'Artikel',
+'newwindow' => '(åbner i et nyt vindue)',
+'cancel' => 'Afbryd',
+'moredotdotdot' => 'Mere...',
+'mypage' => 'Min side',
+'mytalk' => 'Min diskussion',
+'anontalk' => 'Diskussionsside for denne IP-adresse',
+'navigation' => 'Navigation',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Søg',
'qbbrowse' => 'Gennemse',
'qbedit' => 'Redigér',
@@ -303,15 +323,35 @@ $messages = array(
'qbpageinfo' => 'Information om side',
'qbmyoptions' => 'Mine indstillinger',
'qbspecialpages' => 'Specielle sider',
-'moredotdotdot' => 'Mere...',
-'mypage' => 'Min side',
-'mytalk' => 'Min diskussion',
-'anontalk' => 'Diskussionsside for denne IP-adresse',
-'navigation' => 'Navigation',
-'and' => '&#32;og',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'OSS',
+'faqpage' => 'Project:OSS',
+
+# Vector skin
+'vector-action-addsection' => 'Nyt emne',
+'vector-action-delete' => 'Slet',
+'vector-action-move' => 'Flyt',
+'vector-action-protect' => 'Beskyt',
+'vector-action-undelete' => 'Gendan',
+'vector-action-unprotect' => 'Fjern beskyttelse',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Hjælpeside',
+'vector-namespace-image' => 'Fil',
+'vector-namespace-main' => 'Side',
+'vector-namespace-media' => 'Medieside',
+'vector-namespace-mediawiki' => 'Besked',
+'vector-namespace-project' => 'Projektside',
+'vector-namespace-special' => 'Specialside',
+'vector-namespace-talk' => 'Diskussion',
+'vector-namespace-template' => 'Skabelon',
+'vector-namespace-user' => 'Brugerside',
+'vector-view-create' => 'Opret',
+'vector-view-edit' => 'Redigér',
+'vector-view-history' => 'Se historik',
+'vector-view-view' => 'Vis',
+'vector-view-viewsource' => 'Se kilden',
+'actions' => 'Handlinger',
+'namespaces' => 'Navnerum',
+'variants' => 'Varianter',
'errorpagetitle' => 'Fejl',
'returnto' => 'Tilbage til $1.',
@@ -361,18 +401,22 @@ $messages = array(
'otherlanguages' => 'Andre sprog',
'redirectedfrom' => '(Omdirigeret fra $1)',
'redirectpagesub' => 'Omdirigering',
-'lastmodifiedat' => 'Denne side blev senest ændret $1 $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Denne side blev senest ændret $1 $2.',
'viewcount' => 'Siden er vist i alt $1 {{PLURAL:$1|gang|gange}}.',
'protectedpage' => 'Beskyttet side',
'jumpto' => 'Skift til:',
'jumptonavigation' => 'Navigation',
'jumptosearch' => 'Søgning',
+'view-pool-error' => 'Beklager, men serverne er i øjeblikket overbelastede.
+For mange brugere prøver at vise denne side.
+Vent et øjeblik, før du prøver at vise denne side ige.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Om {{SITENAME}}',
'aboutpage' => 'Project:Om',
'copyright' => 'Indholdet er udgivet under $1.',
-'copyrightpagename' => '{{SITENAME}} ophavsret',
'copyrightpage' => '{{ns:project}}:Ophavsret',
'currentevents' => 'Aktuelle begivenheder',
'currentevents-url' => 'Project:Aktuelle begivenheder',
@@ -380,8 +424,6 @@ $messages = array(
'disclaimerpage' => 'Project:Generelle forbehold',
'edithelp' => 'Hjælp til redigering',
'edithelppage' => 'Help:Hvordan redigerer jeg en side',
-'faq' => 'OSS',
-'faqpage' => 'Project:OSS',
'helppage' => 'Help:Hjælp',
'mainpage' => 'Forside',
'mainpage-description' => 'Forside',
@@ -460,9 +502,6 @@ Den seneste forsøgte databaseforespørgsel var:
"$1"
fra funktionen "$2".
Databasen returnerede fejlen "$3: $4"',
-'noconnect' => 'Beklager! Wikien har tekniske problemer og kan ikke få kontakt til databaseserveren.<br />$1',
-'nodb' => 'Kunne ikke vælge databasen $1',
-'cachederror' => 'Det følgende er en gemt kopi af den ønskede side, og er måske ikke helt opdateret.',
'laggedslavemode' => 'Bemærk: Den viste side indeholder muligvis ikke de nyeste ændringer.',
'readonly' => 'Databasen er skrivebeskyttet',
'enterlockreason' => 'Skriv en begrundelse for skrivebeskyttelsen, med samt en vurdering af, hvornår skrivebeskyttelsen ophæves igen',
@@ -480,6 +519,8 @@ Gør venligst en [[Special:ListUsers/sysop|administrator]] opmærksom på det, o
'readonly_lag' => 'Databasen er automatisk blevet låst mens slave database serverne synkronisere med master databasen',
'internalerror' => 'Intern fejl',
'internalerror_info' => 'Internal fejl: $1',
+'fileappenderrorread' => 'Kunne ikke læse "$1" under tilføjelsen.',
+'fileappenderror' => 'Kunne ikke tilføje "$1" til "$2".',
'filecopyerror' => 'Kunne ikke kopiere filen "$1" til "$2".',
'filerenameerror' => 'Kunne ikke omdøbe filen "$1" til "$2".',
'filedeleteerror' => 'Kunne ikke slette filen "$1".',
@@ -489,7 +530,8 @@ Gør venligst en [[Special:ListUsers/sysop|administrator]] opmærksom på det, o
'unexpected' => 'Uventet værdi: "$1"="$2".',
'formerror' => 'Fejl: Kunne ikke afsende formular',
'badarticleerror' => 'Denne funktion kan ikke udføres på denne side.',
-'cannotdelete' => 'Kunne ikke slette siden eller filen der blev angivet.',
+'cannotdelete' => 'Kunne ikke slette siden eller filen "$1".
+Den kan være blevet slettet af en anden.',
'badtitle' => 'Forkert titel',
'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra en {{SITENAME}} på et andet sprog.',
'perfcached' => 'Følgende data er gemt i cachen, det er muligvis ikke helt opdateret:',
@@ -521,7 +563,6 @@ $2',
'virus-unknownscanner' => 'ukendt virus-scanner:',
# Login and logout pages
-'logouttitle' => 'Bruger-log-af',
'logouttext' => "'''Du er nu logget af.'''
Du kan fortsætte med at bruge {{SITENAME}} anonymt, eller du kan [[Special:UserLogin|logge på igen]] som den samme eller en anden bruger.
@@ -529,7 +570,6 @@ Bemærk, at nogle sider stadigvæk kan vises som om du var logget på, indtil du
'welcomecreation' => '== Velkommen, $1! ==
Din konto er blevet oprettet. Glem ikke at personliggøre dine [[Special:Preferences|{{SITENAME}}-indstillinger]].',
-'loginpagetitle' => 'Bruger log på',
'yourname' => 'Dit brugernavn:',
'yourpassword' => 'Din adgangskode:',
'yourpasswordagain' => 'Gentag adgangskode',
@@ -540,6 +580,7 @@ Din konto er blevet oprettet. Glem ikke at personliggøre dine [[Special:Prefere
'nav-login-createaccount' => 'Opret en konto eller log på',
'loginprompt' => 'Du skal have cookies slået til for at kunne logge på {{SITENAME}}.',
'userlogin' => 'Opret en konto eller log på',
+'userloginnocreate' => 'Log ind',
'logout' => 'Log af',
'userlogout' => 'Log af',
'notloggedin' => 'Ikke logget på',
@@ -551,28 +592,8 @@ Din konto er blevet oprettet. Glem ikke at personliggøre dine [[Special:Prefere
'createaccountmail' => 'via e-mail',
'badretype' => 'De indtastede adgangskoder er ikke ens.',
'userexists' => 'Det brugernavn du har valgt er allerede i brug. Vælg venligst et andet brugernavn.',
-'youremail' => 'Din e-mail-adresse:',
-'username' => 'Brugernavn:',
-'uid' => 'Brugernummer:',
-'prefs-memberingroups' => 'Medlem af {{PLURAL:$1|gruppen|grupperne}}:',
-'yourrealname' => 'Dit rigtige navn:',
-'yourlanguage' => 'Sprog:',
-'yourvariant' => 'Sprogvariant:',
-'yournick' => 'Signatur:',
-'badsig' => 'Syntaksen i underskriften er ugyldig; kontroller venligst den brugte HTML.',
-'badsiglength' => 'Din sigantur er for lang. Den må højst indeholde {{PLURAL:$1|}}$1 tegn.',
-'yourgender' => 'Køn:',
-'gender-unknown' => 'Uspecificeret',
-'gender-male' => 'Mand',
-'gender-female' => 'Kvinde',
-'prefs-help-gender' => 'Angivelse af køn er valgfrit. Det bruges af programmet til at lave kønskorrekte tekster på nogle sprog. Informationen vil være offentlig.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Angivelse af rigtigt navn er valgfrit.
-Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.',
'loginerror' => 'Logon mislykket',
-'prefs-help-email' => 'Angivelse af e-mail-adresse er valgfrit. Det gør det muligt at sende dig en ny adgangskode hvis du glemmer den.
-Du kan også vælge at lade andre brugere kontakte dig gennem din bruger- eller diskussionsside uden at du behøver at afsløre din identitet.',
-'prefs-help-email-required' => 'E-mail-adresse er krævet.',
+'createaccounterror' => 'Kunne ikke oprette konto: $1',
'nocookiesnew' => 'Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og kodeord.',
'nocookieslogin' => '{{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Slå dem venligst til og prøv igen.',
'noname' => 'Du har ikke angivet et gyldigt brugernavn.',
@@ -583,9 +604,11 @@ Der skelnes mellem store og bogstaver i brugernavne.
Kontrollér stavemåden, eller [[Special:UserLogin/signup|opret en ny konto]].',
'nosuchusershort' => 'Der er ingen bruger ved navn "$1". Tjek din stavning.',
'nouserspecified' => 'Angiv venligst et brugernavn.',
+'login-userblocked' => 'Denne bruger er blokeret. Login er ikke tilladt',
'wrongpassword' => 'Den indtastede adgangskode var forkert. Prøv igen.',
'wrongpasswordempty' => 'Du glemte at indtaste password. Prøv igen.',
-'passwordtooshort' => 'Dit kodeord er for kort. Det skal være mindst {{PLURAL:$1|}}$1 tegn langt.',
+'passwordtooshort' => 'Adgangskoden skal mindst være på $1 {{PLURAL:$1|tegn|tegn}}.',
+'password-name-match' => 'Kodeordet må ikke være det samme som brugernavnet.',
'mailmypassword' => 'Send nyt password',
'passwordremindertitle' => 'Nyt password til {{SITENAME}}',
'passwordremindertext' => 'Nogen (sandsynligvis dig, fra IP-adressen $1)
@@ -597,6 +620,7 @@ Din midlertidige adgangskode vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
Hvis en anden har bestilt den nye adgangskode, eller hvis du er kommet i tanke om din gamle adgangskode og ikke længere vil ændre den,
kan du bare ignorere denne e-mail og fortsætte med at bruge din gamle adgangskode.',
'noemail' => 'Der er ikke oplyst en e-mail-adresse for bruger "$1".',
+'noemailcreate' => 'Du skal angive en gyldig e-mailadresse',
'passwordsent' => 'En ny adgangskode er sendt til e-mail-adressen,
som er registreret for "$1".
Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
@@ -620,9 +644,11 @@ Derfor kan besøgende ikke oprette flere kontoer fra denne IP-adresse i øjeblik
Du opfordres til at logge ind og ændre adgangskoden med det samme.
Du kan ignorere denne besked hvis kontoen blev oprettet ved en fejl.',
+'usernamehasherror' => 'Brugernavn må ikke indeholde #',
'login-throttled' => 'Du har forsøgt at logge på for mange gange.
Vent venligst før du prøver igen.',
'loginlanguagelabel' => 'Sprog: $1',
+'suspicious-userlogout' => 'Din anmodning om at logge ud blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.',
# Password reset dialog
'resetpass' => 'Skift adgangskode',
@@ -634,17 +660,13 @@ Vent venligst før du prøver igen.',
'retypenew' => 'Gentag ny adgangskode:',
'resetpass_submit' => 'Gem adgangskode og log på',
'resetpass_success' => 'Din adgangskode er nu ændret. Logger ind...',
-'resetpass_bad_temporary' => 'Ugyldigt foreløbigt password. Du har allerede ændret dit password eller bestilt et nyt foreløbigt password.',
'resetpass_forbidden' => 'Adgangskoder kan ikke ændres',
'resetpass-no-info' => 'Du skal være logget på for at komme direkte til denne side.',
'resetpass-submit-loggedin' => 'Skift adgangskode',
+'resetpass-submit-cancel' => 'Annuller',
'resetpass-wrong-oldpass' => 'Ugyldig midlertidig eller gældende adgangskode.
Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.',
'resetpass-temp-password' => 'Midlertidig adgangskode',
-'resetpass-log' => 'Adgangskodeændringslog',
-'resetpass-logtext' => 'Nedenfor er en log over brugere som har fået deres adgangskode ændret af en administrator.',
-'resetpass-logentry' => 'ændrede adgangskoden for $1',
-'resetpass-comment' => 'Årsag til ændring af adgangskode:',
# Edit page toolbar
'bold_sample' => 'Fed tekst',
@@ -720,7 +742,6 @@ Angiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.',
'blockededitsource' => "Kildekoden fra '''Dine ændringer''' til '''$1''':",
'whitelistedittitle' => 'Log på for at redigere',
'whitelistedittext' => 'Du skal $1 for at kunne redigere sider.',
-'confirmedittitle' => 'For at kunne bearbejde er bekræftelsen af e-mail-adressen nødvendig.',
'confirmedittext' => 'Du skal først bekræfte e-mail-adressen, før du kan lave ændringer. Udfyld og bekræft din e-mail-adresse i dine [[Special:Preferences|Indstillinger]].',
'nosuchsectiontitle' => 'Kan ikke finde afsnittet',
'nosuchsectiontext' => 'Du forsøgte at ændre et ikke-eksisterende afsnit. Det kan være flyttet eller slettet, siden du hentede siden.',
@@ -744,13 +765,20 @@ Hvis du er en anonym bruger og synes, at du har fået irrelevante kommentarer p
Du kan [[Special:Search/{{PAGENAME}}|søge efter sidenavnet]] på andre sider,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søge i relaterede logger]
eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} oprette siden]</span>.',
+'noarticletext-nopermission' => 'Der er i øjeblikket ikke noget tekst på denne side.
+Du kan [[Special:Search/{{PAGENAME}}|søge efter denne sides titel]] på andre sider,
+eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} se de relaterede loglister]</span>.',
'userpage-userdoesnotexist' => 'Brugerkontoen "$1" findes ikke. Overvej om du ønsker at oprette eller redigere denne side.',
+'userpage-userdoesnotexist-view' => 'Brugerkontoen "$1" er ikke oprettet.',
+'blocked-notice-logextract' => 'Denne bruger er i øjeblikket blokeret.
+Loggen over den seneste blokering ses nedenfor:',
'clearyourcache' => "'''Bemærk: Efter at have gemt er du nødt til at tømme din browsers cache for at kunne se ændringerne.'''
'''Mozilla / Firefox / Safari''': Hold ''shifttasten'' nede og klik på ''reload'', eller tryk enten ''Ctrl-F5'' eller ''Ctrl-Shift-r'' (Mac: ''cmd-shift-r'');
'''Konqueror''': Klik på ''reload'' eller tryk på ''F5'';
'''Opera''': Tøm cachen i ''Tools → Preferences'';
'''Internet Explorer''': hold ''controltasten'' nede og klik på ''refresh'' eller tryk på ''control-F5''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Brug knappen 'forhåndsvisning' til at teste dit nye css/js før du gemmer.",
+'usercssyoucanpreview' => "'''Tip:''' Brug \"{{int:showpreview}}\"-knappen for at teste dit nye CSS inden du gemmer.",
+'userjsyoucanpreview' => "'''Tip:''' Brug \"{{int:showpreview}}\"-knappen for at teste dit nye JavaScript inden du gemmer.",
'usercsspreview' => "'''Husk at dette kun er en forhåndsvisning af dit eget css.
'''Det er ikke gemt endnu!'''",
'userjspreview' => "'''Husk at du kun tester/forhåndsviser dit eget javascript, det er ikke gemt endnu!'''",
@@ -797,13 +825,16 @@ Overvej om siden kan opdeles i mindre dele.'''",
'readonlywarning' => "'''ADVARSEL: Databasen er låst på grund af vedligeholdelse, så du kan ikke gemme dine ændringer lige nu. Det kan godt være en god ide at kopiere din tekst til en tekstfil, så du kan gemme den til senere.'''
Systemadministratoren som låste databasen, gav denne forklaring: $1",
-'protectedpagewarning' => "'''ADVARSEL: Denne side er skrivebeskyttet, så kun administratorer kan redigere den.'''",
-'semiprotectedpagewarning' => "'''Bemærk:''' Siden er låst, så kun registrerede brugere kan ændre den.",
+'protectedpagewarning' => "'''ADVARSEL: Denne side er skrivebeskyttet, så kun administratorer kan redigere den.'''<br />
+Den seneste logpost vises nedenfor:",
+'semiprotectedpagewarning' => "'''Bemærk: Siden er låst, så kun registrerede brugere kan ændre den.'''
+<br />Den seneste logpost vises nedenfor:",
'cascadeprotectedwarning' => "'''BEMÆRK: Denne side er skrivebeskyttet, så den kun kan ændres af brugere med Administratorrettigheder. Den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af nedarvende sidebeskyttelse:'''",
-'titleprotectedwarning' => "'''ADVARSEL: Den side er låst så kun [[Special:ListGroupRights|visse brugere]] kan oprette den.'''",
-'templatesused' => 'Skabeloner der er brugt på denne side:',
-'templatesusedpreview' => 'Følgende skabeloner bruges af denne artikelforhåndsvisning:',
-'templatesusedsection' => 'Følgende skabeloner bruges af dette afsnit:',
+'titleprotectedwarning' => "ADVARSEL: Den side er låst så kun [[Special:ListGroupRights|visse brugere]] kan oprette den.'''
+<br />Den seneste logpost vises nedenfor:",
+'templatesused' => '{{PLURAL:$1|Skabelon|Skabeloner}} der er brugt på denne side:',
+'templatesusedpreview' => 'Følgende {{PLURAL:$1|Skabelon|Skabeloner}} bruges af denne artikelforhåndsvisning:',
+'templatesusedsection' => 'Følgende {{PLURAL:$1|skabelon|skabeloner}} bruges af dette afsnit:',
'template-protected' => '(skrivebeskyttet)',
'template-semiprotected' => '(delvist beskyttet)',
'hiddencategories' => 'Denne side er i {{PLURAL:$1|en skjult kategori|$1 skjulte kategorier}}:',
@@ -811,16 +842,17 @@ Systemadministratoren som låste databasen, gav denne forklaring: $1",
'nocreatetitle' => 'Oprettelse af nye sider er begrænset.',
'nocreatetext' => 'Serveren har begrænset oprettelse af nye sider. Bestående sider kan ændres eller [[Special:UserLogin|logge på]].',
'nocreate-loggedin' => 'Du har ikke rettigheder til at oprette nye sider.',
+'sectioneditnotsupported-title' => 'Afsnitsredigering understøttes ikke',
+'sectioneditnotsupported-text' => 'Afsnitsredigering understøttes ikke på denne side.',
'permissionserrors' => 'Rettighedskonflikt',
'permissionserrorstext' => 'Du har ikke rettigheder til at gennemføre denne handling, {{PLURAL:$1|årsagen|årsagerne}} er:',
'permissionserrorstext-withaction' => 'Du har ikke rettigheder til at $2 af følgende {{PLURAL:$1|grund|grunde}}:',
-'recreate-deleted-warn' => "'''Advarsel: Du er ved at genskabe en tidligere slettet side.'''
+'recreate-moveddeleted-warn' => "'''Advarsel: Du er ved at genskabe en tidligere slettet side.'''
-Overvej om det er passende at genoprette siden. De slettede versioner for
-denne side er vist nedenfor:",
-'deleted-notice' => 'Denne side er blevet slettet.
-Sletningsloggen for siden er vist nedenfor.',
-'deletelog-fulllog' => 'Se hele loggen',
+Overvej om det er passende at genoprette siden. Sletnings- og flytteloggerne for siden er vist nedenfor.",
+'moveddeleted-notice' => 'Denne side er blevet slettet.
+Sletnings- og flytteloggerne for siden er vist nedenfor.',
+'log-fulllog' => 'Vis fuldstændig log',
'edit-hook-aborted' => 'Redigering afbrudt af en programfunktion. Ingen tilknyttet forklaring.',
'edit-gone-missing' => 'Kunne ikke opdatere siden.
Den ser du til at være slettet.',
@@ -839,6 +871,7 @@ Der bør være færre end {{PLURAL:$2|$2 kald}}, lige nu er der {{PLURAL:$1|$1 k
'post-expand-template-argument-category' => 'Sider med udeladte skabelonparametre',
'parser-template-loop-warning' => 'Skabelonløkke fundet: [[$1]]',
'parser-template-recursion-depth-warning' => 'En skabelon er rekursivt inkluderet for mange gange ($1)',
+'language-converter-depth-warning' => 'Dybdegrænse for sprogkonvertering overskredet ($1)',
# "Undo" feature
'undo-success' => 'Redigeringen kan fjernes.
@@ -857,7 +890,7 @@ Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du
'currentrev' => 'Nuværende version',
'currentrev-asof' => 'Nuværende version fra $1',
'revisionasof' => 'Versionen fra $1',
-'revision-info' => 'Version fra $1 af $2', # Additionally available: $3: revision id
+'revision-info' => 'Version fra $1 af $2',
'previousrevision' => '←Ældre version',
'nextrevision' => 'Nyere version→',
'currentrevisionlink' => 'se nuværende version',
@@ -869,7 +902,7 @@ Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du
'histlegend' => 'Forklaring: (nuværende) = forskel til den nuværende
version, (forrige) = forskel til den forrige version, M = mindre ændring',
'history-fieldset-title' => 'Bladr i historikken efter dato',
-'deletedrev' => '[slettet]',
+'history-show-deleted' => 'Kun slettede',
'histfirst' => 'Ældste',
'histlast' => 'Nyeste',
'historysize' => '($1 {{PLURAL:$1|Byte|Bytes}})',
@@ -878,69 +911,113 @@ version, (forrige) = forskel til den forrige version, M = mindre ændring',
# Revision feed
'history-feed-title' => 'Versionshistorie',
'history-feed-description' => 'Versionshistorie for denne side i {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 med $2', # user at time
+'history-feed-item-nocomment' => '$1 med $2',
'history-feed-empty' => 'Den ønskede side findes ikke. Måske er den slettet eller flyttet. [[Special:Search|Gennesøg]] {{SITENAME}} efter passende nye sider.',
# Revision deletion
-'rev-deleted-comment' => '(kommentar fjernet)',
-'rev-deleted-user' => '(brugernavn fjernet)',
-'rev-deleted-event' => '(loghandling fjernet)',
-'rev-deleted-text-permission' => "Denne version af siden er '''slettet'''.
-Der er måske flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-text-view' => "Denne version af siden er '''slettet'''.
+'rev-deleted-comment' => '(kommentar fjernet)',
+'rev-deleted-user' => '(brugernavn fjernet)',
+'rev-deleted-event' => '(loghandling fjernet)',
+'rev-deleted-user-contribs' => '[brugernavn eller IP-adresse er fjernet - redigeringer er skjult fra bidragene]',
+'rev-deleted-text-permission' => "Denne version af siden er blevet '''slettet'''.
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-deleted-text-unhide' => "Denne version af siden er '''slettet'''.
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletningsloggen].
+Som administrator kan du stadig [$1 se versionen] hvis du ønsker at fortsætte.",
+'rev-suppressed-text-unhide' => "Denne version af siden er '''skjult'''.
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulningsloggen].
+Som administrator kan du stadig [$1 se versionen] hvis du ønsker at fortsætte.",
+'rev-deleted-text-view' => "Denne version af siden er '''slettet'''.
Som administrator kan du se den.
-Der er måske flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-no-diff' => "Du kan ikke vise denne forskel fordi en af versionerne er '''slettet'''
-Der er måske flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-unhide-diff' => "En af versionerne for denne forskel er '''slettet'''.
-Der er måske flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletningsloggen].",
+'rev-suppressed-text-view' => "Denne version af siden er '''skjult'''.
+Som administrator kan du se den.
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulningsloggen].",
+'rev-deleted-no-diff' => "Du kan ikke vise denne forskel fordi en af versionerne er '''slettet'''
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletningsloggen].",
+'rev-suppressed-no-diff' => "Du kan ikke se denne forskel, fordi en af revisionerne er blevet '''slettet'''.",
+'rev-deleted-unhide-diff' => "En af versionerne for denne forskel er '''slettet'''.
+Der er måske flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletningsloggen].
Som administrator kan du stadig [$1 se forskellen] hvis du ønsker at fortsætte.",
-'rev-delundel' => 'vise/skjule',
-'revisiondelete' => 'Slette/gendanne versioner',
-'revdelete-nooldid-title' => 'Ingen version angivet',
-'revdelete-nooldid-text' => 'Du har ikke angivet en version, som denne handling kan udføres på.',
-'revdelete-nologtype-title' => 'Ingen logtype er angivet',
-'revdelete-nologtype-text' => 'Du har ikke angivet en logtype at udføre denne handling på.',
-'revdelete-toomanytargets-title' => 'For mange mål',
-'revdelete-toomanytargets-text' => 'Du har angivet for mange typer mål at udføre denne handling på.',
-'revdelete-nologid-title' => 'Ugyldig logpost',
-'revdelete-nologid-text' => 'Du har ikke angivet en logpost at udføre denne funktion på eller den angivne post findes ikke.',
-'revdelete-selected' => "'''{{PLURAL:$2|Valgte version|Valgte versioner}} af '''$1:''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valgt logindførsel|Valgte logindførsler}}:'''",
-'revdelete-text' => "'''Slettede versioner vil fortsat vises i sidehistorik og på logsider, men dele af deres indhold vil ikke være offentligt tilgængeligt.'''
-
-Andre administratorer på {{SITENAME}} vil fortsat være i stand til at se det skjulte indhold og kan gendanne det igen, medmindre der laves yderligere restriktioner.
-Vær venlig at bekræfte at du vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].",
-'revdelete-suppress-text' => "Skjulning bør '''kun''' bruges i de følgende tilfælde:
+'rev-suppressed-unhide-diff' => "En af sideversionerne i denne forskel er blevet '''skjult'''.
+Der kan være detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulningsloggen].
+Som en administrator kan du stadig [$1 se denne forskel] hvis du ønsker det.",
+'rev-deleted-diff-view' => "En af revisionerne i denne forskel er blevet '''slettet'''.
+Som administrator kan du se denne forskel; detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletningsloggen].",
+'rev-suppressed-diff-view' => "En af revisionerne i denne forskel er blevet '''skjult'''.
+Som administrator kan du se denne forskel; der kan findes detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulningsloggen].",
+'rev-delundel' => 'vise/skjule',
+'rev-showdeleted' => 'vis',
+'revisiondelete' => 'Slette/gendanne versioner',
+'revdelete-nooldid-title' => 'Ingen version angivet',
+'revdelete-nooldid-text' => 'Du har ikke angivet en version, som denne handling kan udføres på.',
+'revdelete-nologtype-title' => 'Ingen logtype er angivet',
+'revdelete-nologtype-text' => 'Du har ikke angivet en logtype at udføre denne handling på.',
+'revdelete-nologid-title' => 'Ugyldig logpost',
+'revdelete-nologid-text' => 'Du har ikke angivet en logpost at udføre denne funktion på eller den angivne post findes ikke.',
+'revdelete-no-file' => 'Den angivne fil findes ikke.',
+'revdelete-show-file-confirm' => 'Er du sikker på, at du vil vise en slettet version af filen "<nowiki>$1</nowiki>" fra den $2, klokken $3?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Valgte version|Valgte versioner}} af '''$1:''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Valgt logindførsel|Valgte logindførsler}}:'''",
+'revdelete-text' => "'''Slettede versioner vil fortsat vises i sidehistorik og på logsider, men dele af deres indhold vil ikke være offentligt tilgængeligt.'''
+Andre administratorer på {{SITENAME}} vil fortsat være i stand til at se det skjulte indhold og kan gendanne det igen, medmindre der laves yderligere restriktioner.",
+'revdelete-confirm' => 'Vær venlig at bekræfte at du vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].',
+'revdelete-suppress-text' => "Skjulning bør '''kun''' bruges i de følgende tilfælde:
* Upassende personlige oplysninger
*: ''hjemadresser og -telefonnumre, CPR-numre og lign.''",
-'revdelete-legend' => 'Fastlægge begrænsninger for versionerne:',
-'revdelete-hide-text' => 'Skjul versionens tekst',
-'revdelete-hide-name' => 'Skjul handling og mål',
-'revdelete-hide-comment' => 'Skjul ændringskommentar',
-'revdelete-hide-user' => 'Skjul brugerens brugernavn/IP',
-'revdelete-hide-restricted' => 'Skjul også informationen for administratorer',
-'revdelete-suppress' => 'Skjul også informationen for administratorer',
-'revdelete-hide-image' => 'Skjul filindhold',
-'revdelete-unsuppress' => 'Ophæv begrænsninger for gendannede versioner',
-'revdelete-log' => 'Begrundelse:',
-'revdelete-submit' => 'Bruge på udvalgte versioner',
-'revdelete-logentry' => 'Versionsvisning ændret for [[$1]]',
-'logdelete-logentry' => "ændrede [[$1]]'s synlighed",
-'revdelete-success' => "'''Versionsvisningen er ændret.'''",
-'logdelete-success' => "'''Synlighed ændret med success.'''",
-'revdel-restore' => 'Ændre synlighed',
-'pagehist' => 'Sidehistorik',
-'deletedhist' => 'Slettet historik',
-'revdelete-content' => 'indhold',
-'revdelete-summary' => 'redigeringsbeskrivelse',
-'revdelete-uname' => 'bruger',
-'revdelete-restricted' => 'tilføjede begrænsninger for administratorer',
-'revdelete-unrestricted' => 'fjernede begrænsninger for administratorer',
-'revdelete-hid' => 'usynliggjorde $1',
-'revdelete-unhid' => 'synliggjorde $1',
-'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|version|versioner}}',
-'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|hændelse|hændelser}}',
+'revdelete-legend' => 'Fastlægge begrænsninger for versionerne:',
+'revdelete-hide-text' => 'Skjul versionens tekst',
+'revdelete-hide-image' => 'Skjul filindhold',
+'revdelete-hide-name' => 'Skjul handling og mål',
+'revdelete-hide-comment' => 'Skjul ændringskommentar',
+'revdelete-hide-user' => 'Skjul brugerens brugernavn/IP',
+'revdelete-hide-restricted' => 'Skjul også informationen for administratorer',
+'revdelete-radio-same' => '(ændr ikke)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nej',
+'revdelete-suppress' => 'Skjul også informationen for administratorer',
+'revdelete-unsuppress' => 'Ophæv begrænsninger for gendannede versioner',
+'revdelete-log' => 'Begrundelse:',
+'revdelete-submit' => 'Udfør på {{PLURAL:$1|den udvalgte version|de udvalgte versioner}}',
+'revdelete-logentry' => 'Versionsvisning ændret for [[$1]]',
+'logdelete-logentry' => "ændrede [[$1]]'s synlighed",
+'revdelete-success' => "'''Versionsvisningen er ændret.'''",
+'revdelete-failure' => "'''Kunne ikke ændre versionssynligheden:'''
+$1",
+'logdelete-success' => "'''Synlighed ændret med success.'''",
+'logdelete-failure' => "'''Kunne ikke ændre logsynligheden.'''
+$1",
+'revdel-restore' => 'Ændre synlighed',
+'pagehist' => 'Sidehistorik',
+'deletedhist' => 'Slettet historik',
+'revdelete-content' => 'indhold',
+'revdelete-summary' => 'redigeringsbeskrivelse',
+'revdelete-uname' => 'bruger',
+'revdelete-restricted' => 'tilføjede begrænsninger for administratorer',
+'revdelete-unrestricted' => 'fjernede begrænsninger for administratorer',
+'revdelete-hid' => 'usynliggjorde $1',
+'revdelete-unhid' => 'synliggjorde $1',
+'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|version|versioner}}',
+'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|hændelse|hændelser}}',
+'revdelete-hide-current' => 'Der er opstået en fejl under skjulningen af objektet dateret $1 klokken $2: Dette er den nyeste revision.
+Den kan ikke skjules.',
+'revdelete-show-no-access' => 'Fejl under visning af objekt dateret $1 klokken $2: Dette objekt er blevet markeret som "begrænset".
+Du har ikke adgang til det.',
+'revdelete-modify-no-access' => 'Fejl under ændring af objekt dateret $1 klokken $2: Dette objekt er blevet markeret som "begrænset".
+Du har ikke adgang til det.',
+'revdelete-modify-missing' => 'Fejl under redigering af objekt ID $1: Det findes ikke i databasen!',
+'revdelete-no-change' => "'''Advarsel:''' objektet dateret $1 klokken $2 havde allerede de efterspurgte synlighedsindstillinger.",
+'revdelete-concurrent-change' => 'Fejl under modificering af objekt dateret $1 klokken $2: Dens status ser ud til at være blevet ændret af en, imens du prøvede at modificere den.
+Se venligst loglisterne.',
+'revdelete-only-restricted' => 'Fejl under skjulning af objekt dateret $2, $1: Du kan ikke skjule objekter for administratorerne uden at vælge en alternativ indstilling.',
+'revdelete-reason-dropdown' => '* Almindelige sletningsårsager
+** Overtrædelse af ophavsret
+** Upassende personlige oplysninger',
+'revdelete-otherreason' => 'Anden/yderligere årsag:',
+'revdelete-reasonotherlist' => 'Anden årsag',
+'revdelete-edit-reasonlist' => 'Rediger sletningsårsager',
+'revdelete-offender' => 'Forfatter af denne revision:',
# Suppression log
'suppressionlog' => 'Skjulningslog',
@@ -979,67 +1056,13 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
'mergelogpagetext' => 'Nedenfor vises en liste med de nyeste sammenfletninger af en sides historik i en anden.',
# Diffs
-'history-title' => 'Versionshistorik for "$1"',
-'difference' => '(Forskel mellem versioner)',
-'lineno' => 'Linje $1:',
-'compareselectedversions' => 'Sammenlign valgte versioner',
-'visualcomparison' => 'Visuel sammenligning',
-'wikicodecomparison' => 'Wikitekstsammenligning',
-'editundo' => 'fjern redigering',
-'diff-multi' => '(Versionssammenligningen medtager {{plural:$1|en mellemliggende version|$1 mellemliggende versioner}}.)',
-'diff-movedto' => 'flyttet til $1',
-'diff-styleadded' => '$1 stil tilføjet',
-'diff-added' => '$1 tilføjet',
-'diff-changedto' => 'ændret til $1',
-'diff-movedoutof' => 'flyttet væk fra $1',
-'diff-styleremoved' => '$1 stil fjernet',
-'diff-removed' => '$1 fjernet',
-'diff-changedfrom' => 'ændret fra $1',
-'diff-src' => 'kilde',
-'diff-withdestination' => 'med mål $1',
-'diff-with' => '&#32;med $1 $2',
-'diff-with-final' => '&#32;og $1 $2',
-'diff-width' => 'bredde',
-'diff-height' => 'højde',
-'diff-p' => "et '''afsnit'''",
-'diff-blockquote' => "et '''citat'''",
-'diff-h1' => "en '''overskrift (niveau 1)'''",
-'diff-h2' => "en '''overskrift (niveau 2)'''",
-'diff-h3' => "en '''overskrift (niveau 3)'''",
-'diff-h4' => "en '''overskrift (niveau 4)'''",
-'diff-h5' => "en '''overskrift (niveau 5)'''",
-'diff-pre' => "et '''præformateret afsnit'''",
-'diff-div' => "en '''opdeling'''",
-'diff-ul' => "en '''usorteret liste'''",
-'diff-ol' => "en '''sorteret liste'''",
-'diff-li' => "et '''listeelement'''",
-'diff-table' => "en '''tabel'''",
-'diff-tbody' => "en '''tabels indhold'''",
-'diff-tr' => "en '''række'''",
-'diff-td' => "en '''celle'''",
-'diff-th' => "en '''overskrift'''",
-'diff-br' => "et '''linjeskift'''",
-'diff-hr' => "en '''horisontal linje'''",
-'diff-code' => "et '''kildekodeafsnit'''",
-'diff-dl' => "en '''definitionsliste'''",
-'diff-dt' => "et '''definitionsudtryk'''",
-'diff-dd' => "en '''definition'''",
-'diff-input' => "et '''input'''",
-'diff-form' => "et '''skema'''",
-'diff-img' => "et '''billede'''",
-'diff-span' => "en '''spændvidde'''",
-'diff-a' => "en '''forbindelse'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''fed'''",
-'diff-strong' => "'''stærk'''",
-'diff-em' => "'''fremhævelse'''",
-'diff-font' => "'''skrifttype'''",
-'diff-big' => "'''stor'''",
-'diff-del' => "'''slettet'''",
-'diff-tt' => "'''fast bredde'''",
-'diff-sub' => "'''sænket'''",
-'diff-sup' => "'''hævet'''",
-'diff-strike' => "'''overstreget'''",
+'history-title' => 'Versionshistorik for "$1"',
+'difference' => '(Forskel mellem versioner)',
+'lineno' => 'Linje $1:',
+'compareselectedversions' => 'Sammenlign valgte versioner',
+'showhideselectedversions' => 'Vis/skjul udvalgte versioner',
+'editundo' => 'fjern redigering',
+'diff-multi' => '(Versionssammenligningen medtager {{plural:$1|en mellemliggende version|$1 mellemliggende versioner}}.)',
# Search results
'searchresults' => 'Søgeresultater',
@@ -1047,28 +1070,25 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
'searchresulttext' => 'For mere information om søgning på {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Du søgte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle sider som begynder med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som henviser til "$1"]])',
'searchsubtitleinvalid' => 'Til din søgning „$1“.',
-'noexactmatch' => '{{SITENAME}} har ingen artikel med dette navn. Du kan [[:$1|oprette en artikel med dette navn]].',
-'noexactmatch-nocreate' => "'''Der er ingen side med navnet \"\$1\".'''",
'toomanymatches' => 'Søgningen fandt for mange sider. Prøv venligst med en anden søgning.',
'titlematches' => 'Artikeltitler der opfyldte forespørgslen',
'notitlematches' => 'Ingen artikeltitler opfyldte forespørgslen',
'textmatches' => 'Artikeltekster der opfyldte forespørgslen',
'notextmatches' => 'Ingen artikeltekster opfyldte forespørgslen',
-'prevn' => 'forrige $1',
-'nextn' => 'næste $1',
+'prevn' => 'forrige {{PLURAL:$1|$1}}',
+'nextn' => 'næste {{PLURAL:$1|$1}}',
'prevn-title' => 'Forrige $1 {{PLURAL:$1|resultat|resultater}}',
'nextn-title' => 'Næste $1 {{PLURAL:$1|resultat|resultater}}',
'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
-'viewprevnext' => 'Vis ($1) ($2) ($3).',
+'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Søgemuligheder',
'searchmenu-exists' => "'''Der er en side med navnet \"[[:\$1]]\" på denne wiki'''",
'searchmenu-new' => "'''Opret siden \"[[:\$1]]\" i denne wiki'''",
'searchhelp-url' => 'Help:Hjælp',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynder med dette præfiks]]',
'searchprofile-articles' => 'Indholdssider',
-'searchprofile-articles-and-proj' => 'Indholds- og projektsider',
-'searchprofile-project' => 'Projektsider',
-'searchprofile-images' => 'Filer',
+'searchprofile-project' => 'Hjælpe- og projektsider',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alt',
'searchprofile-advanced' => 'Avanceret',
'searchprofile-articles-tooltip' => 'Søg i $1',
@@ -1076,8 +1096,6 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
'searchprofile-images-tooltip' => 'Søg efter filer',
'searchprofile-everything-tooltip' => 'Søg i alt indhold (inklusive diskussionssider)',
'searchprofile-advanced-tooltip' => 'Søg i bestemte navnerum',
-'prefs-search-nsdefault' => 'Søg med brug af standardværdier:',
-'prefs-search-nscustom' => 'Søg i bestemte navnerum:',
'search-result-size' => '$1 ({{PLURAL:$2|et ord|$2 ord}})',
'search-result-score' => 'Relevans: $1%',
'search-redirect' => '(omdiriger $1)',
@@ -1090,11 +1108,12 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
'search-mwsuggest-disabled' => 'ingen forslag',
'search-relatedarticle' => 'Relateret',
'mwsuggest-disable' => 'Slå AJAX-forslag fra',
+'searcheverything-enable' => 'Søg i alle navnerum',
'searchrelated' => 'relateret',
'searchall' => 'alle',
'showingresults' => 'Nedenfor vises <b>$1</b> {{PLURAL:$1|resultat|resultater}} startende med nummer <b>$2</b>.',
'showingresultsnum' => 'Herunder vises <b>$3</b> {{PLURAL:$3|resultat|resultater}} startende med nummer <b>$2</b>.',
-'showingresultstotal' => "Viser {{PLURAL:$4|resultat '''$1''' af '''$3'''|resultater '''$1 - $2''' af '''$3'''}} nedenfor",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' af '''$3'''|Resultat '''$1 - $2''' af '''$3'''}} for '''$4'''",
'nonefound' => "'''Bemærk''': Som standard søges der kun i bestemte navnerum.
Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. diskussionssider, skabeloner osv.), eller brug det ønskede navnerum som præfiks.",
'search-nonefound' => 'Søgningen gav ingen resultater.',
@@ -1103,111 +1122,150 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'powersearch-ns' => 'Søg i navnerummene:',
'powersearch-redir' => 'Vis omdirigeringer',
'powersearch-field' => 'Søg efter',
+'powersearch-togglelabel' => 'Marker:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Ingen',
'search-external' => 'Brug anden søgemaskine',
'searchdisabled' => '<p>Beklager! Fuldtekstsøgningen er midlertidigt afbrudt på grund af for stor belastning på serverne. I mellemtidem kan du anvende Google- eller Yahoo!-søgefelterne herunder. Bemærk at deres kopier af {{SITENAME}}s indhold kan være forældet.</p>',
+# Quickbar
+'qbsettings' => 'Hurtigmenu',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Fast venstre',
+'qbsettings-fixedright' => 'Fast højre',
+'qbsettings-floatingleft' => 'Flydende venstre',
+'qbsettings-floatingright' => 'Flydende højre',
+
# Preferences page
-'preferences' => 'Indstillinger',
-'mypreferences' => 'Indstillinger',
-'prefs-edits' => 'Antal redigeringer:',
-'prefsnologin' => 'Ikke logget på',
-'prefsnologintext' => 'Du skal være <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logget på]</span> for at ændre brugerindstillinger.',
-'prefsreset' => 'Indstillingerne er blevet gendannet fra lageret.',
-'qbsettings' => 'Hurtigmenu',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast højre',
-'qbsettings-floatingleft' => 'Flydende venstre',
-'qbsettings-floatingright' => 'Flydende højre',
-'changepassword' => 'Skift adgangskode',
-'skin' => 'Udseende',
-'skin-preview' => 'Forhåndsvisning',
-'math' => 'Matematiske formler',
-'dateformat' => 'Datoformat',
-'datedefault' => 'Ingen præference',
-'datetime' => 'Dato og klokkeslæt',
-'math_failure' => 'Fejl i matematikken',
-'math_unknown_error' => 'ukendt fejl',
-'math_unknown_function' => 'ukendt funktion',
-'math_lexing_error' => 'lexerfejl',
-'math_syntax_error' => 'syntaksfejl',
-'math_image_error' => 'PNG-konvertering mislykkedes; undersøg om latex, dvips, gs og convert er installeret korrekt',
-'math_bad_tmpdir' => 'Kan ikke skrive til eller oprette temp-mappe til math',
-'math_bad_output' => 'Kan ikke skrive til eller oprette uddata-mappe til math',
-'math_notexvc' => 'Manglende eksekvérbar texvc; se math/README for opsætningsoplysninger.',
-'prefs-personal' => 'Brugerdata',
-'prefs-rc' => 'Seneste ændringer',
-'prefs-watchlist' => 'Overvågningsliste',
-'prefs-watchlist-days' => 'Antal dage, som overvågningslisten standardmæssigt skal omfatte:',
-'prefs-watchlist-days-max' => '(maks. 7 dage)',
-'prefs-watchlist-edits' => 'Antal redigeringer der vises i udvidet overvågningsliste:',
-'prefs-watchlist-edits-max' => '(maks. 1000)',
-'prefs-misc' => 'Forskelligt',
-'prefs-resetpass' => 'Skift adgangskode',
-'saveprefs' => 'Gem indstillinger',
-'resetprefs' => 'Gendan indstillinger',
-'restoreprefs' => 'Gendan alle standardindstillinger',
-'textboxsize' => 'Redigering',
-'prefs-edit-boxsize' => 'Størrelse på redigeringsvinduet.',
-'rows' => 'Rækker',
-'columns' => 'Kolonner',
-'searchresultshead' => 'Søgeresultater',
-'resultsperpage' => 'Resultater pr. side',
-'contextlines' => 'Linjer pr. resultat',
-'contextchars' => 'Tegn pr. linje i resultatet',
-'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
-'recentchangesdays' => 'Antal dage som skal vises i seneste ændringer:',
-'recentchangesdays-max' => '(maks. $1 {{PLURAL:$1|dag|dage}})',
-'recentchangescount' => 'Antal redigeringer som skal vises i seneste ændringer, historikker og logger:',
-'savedprefs' => 'Dine indstillinger er blevet gemt.',
-'timezonelegend' => 'Tidszone:',
-'timezonetext' => '¹Indtast antal timer som din lokale tid er forskellig fra serverens tid (UTC).',
-'localtime' => 'Lokaltid:',
-'timezoneselect' => 'Tidszone:',
-'timezoneuseserverdefault' => 'Brug serverens tid',
-'timezoneuseoffset' => 'Anden (angiv forskel)',
-'timezoneoffset' => 'Forskel¹:',
-'servertime' => 'Serverens tid:',
-'guesstimezone' => 'Hent tidszone fra browseren',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlanterhavet',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiske Ocean',
-'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillad e-mails fra andre brugere',
-'prefs-searchoptions' => 'Søgeindstillinger',
-'prefs-namespaces' => 'Navnerum',
-'defaultns' => 'Søg som standard i disse navnerum:',
-'default' => 'standard',
-'files' => 'Filer',
-'prefs-custom-css' => 'Personlig CSS',
-'prefs-custom-js' => 'Personlig JavaScript',
+'preferences' => 'Indstillinger',
+'mypreferences' => 'Indstillinger',
+'prefs-edits' => 'Antal redigeringer:',
+'prefsnologin' => 'Ikke logget på',
+'prefsnologintext' => 'Du skal være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget på]</span> for at ændre brugerindstillinger.',
+'changepassword' => 'Skift adgangskode',
+'prefs-skin' => 'Udseende',
+'skin-preview' => 'Forhåndsvisning',
+'prefs-math' => 'Matematiske formler',
+'datedefault' => 'Ingen præference',
+'prefs-datetime' => 'Dato og klokkeslæt',
+'prefs-personal' => 'Brugerdata',
+'prefs-rc' => 'Seneste ændringer',
+'prefs-watchlist' => 'Overvågningsliste',
+'prefs-watchlist-days' => 'Antal dage, som overvågningslisten standardmæssigt skal omfatte:',
+'prefs-watchlist-days-max' => '(maks. 7 dage)',
+'prefs-watchlist-edits' => 'Antal redigeringer der vises i udvidet overvågningsliste:',
+'prefs-watchlist-edits-max' => '(maks. 1000)',
+'prefs-watchlist-token' => 'Overvågningslistenøgle:',
+'prefs-misc' => 'Forskelligt',
+'prefs-resetpass' => 'Skift adgangskode',
+'prefs-email' => 'Indstillinger for e-mail',
+'prefs-rendering' => 'Udseende',
+'saveprefs' => 'Gem indstillinger',
+'resetprefs' => 'Gendan indstillinger',
+'restoreprefs' => 'Gendan alle standardindstillinger',
+'prefs-editing' => 'Redigering',
+'prefs-edit-boxsize' => 'Størrelse på redigeringsvinduet.',
+'rows' => 'Rækker',
+'columns' => 'Kolonner',
+'searchresultshead' => 'Søgeresultater',
+'resultsperpage' => 'Resultater pr. side',
+'contextlines' => 'Linjer pr. resultat',
+'contextchars' => 'Tegn pr. linje i resultatet',
+'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
+'recentchangesdays' => 'Antal dage som skal vises i seneste ændringer:',
+'recentchangesdays-max' => '(maks. $1 {{PLURAL:$1|dag|dage}})',
+'recentchangescount' => 'Antal redigeringer som skal vises som standard:',
+'prefs-help-recentchangescount' => 'Det gælder for seneste ændringer, historikker og logger.',
+'prefs-help-watchlist-token' => 'Hvis du udfylder dette felt med en hemmelig værdi, vil der laves et RSS-feed for din overvågingsliste.
+Alle som kender nøglen i feltet vil være i stand til at læse din overvågingsliste, så vælg en sikker værdi.
+Her er en tilfældig genereret værdi som du kan bruge: $1',
+'savedprefs' => 'Dine indstillinger er blevet gemt.',
+'timezonelegend' => 'Tidszone:',
+'localtime' => 'Lokaltid:',
+'timezoneuseserverdefault' => 'Brug serverens tid',
+'timezoneuseoffset' => 'Anden (angiv forskel)',
+'timezoneoffset' => 'Forskel¹:',
+'servertime' => 'Serverens tid:',
+'guesstimezone' => 'Hent tidszone fra browseren',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlanterhavet',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiske Ocean',
+'timezoneregion-pacific' => 'Stillehavet',
+'allowemail' => 'Tillad e-mails fra andre brugere',
+'prefs-searchoptions' => 'Søgeindstillinger',
+'prefs-namespaces' => 'Navnerum',
+'defaultns' => 'Ellers søg i disse navnerum:',
+'default' => 'standard',
+'prefs-files' => 'Filer',
+'prefs-custom-css' => 'Personlig CSS',
+'prefs-custom-js' => 'Personlig JavaScript',
+'prefs-reset-intro' => 'Du kan bruge denne side til at tilbagestille alle dine indstillinger til standardindstillingerne.
+Det kan ikke gøres om.',
+'prefs-emailconfirm-label' => 'Bekræftelse af e-mail:',
+'prefs-textboxsize' => 'Størrelse på redigeringsvindue',
+'youremail' => 'Din e-mail-adresse:',
+'username' => 'Brugernavn:',
+'uid' => 'Brugernummer:',
+'prefs-memberingroups' => 'Medlem af {{PLURAL:$1|gruppen|grupperne}}:',
+'prefs-registration' => 'Registreringstidspunkt:',
+'yourrealname' => 'Dit rigtige navn:',
+'yourlanguage' => 'Sprog:',
+'yourvariant' => 'Sprogvariant:',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Kommentarer på diskussionssider bør signeres med "<nowiki>~~~~</nowiki>" som vil blive konverteret til din signatur og et tidsstempel.',
+'badsig' => 'Syntaksen i underskriften er ugyldig; kontroller venligst den brugte HTML.',
+'badsiglength' => 'Din sigantur er for lang. Den må højst indeholde {{PLURAL:$1|}}$1 tegn.',
+'yourgender' => 'Køn:',
+'gender-unknown' => 'Uspecificeret',
+'gender-male' => 'Mand',
+'gender-female' => 'Kvinde',
+'prefs-help-gender' => 'Angivelse af køn er valgfrit. Det bruges af programmet til at lave kønskorrekte tekster på nogle sprog. Informationen vil være offentlig.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Angivelse af rigtigt navn er valgfrit.
+Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.',
+'prefs-help-email' => 'Angivelse af e-mail-adresse er valgfrit. Det gør det muligt at sende dig en ny adgangskode hvis du glemmer den.
+Du kan også vælge at lade andre brugere kontakte dig gennem din bruger- eller diskussionsside uden at du behøver at afsløre din identitet.',
+'prefs-help-email-required' => 'E-mail-adresse er krævet.',
+'prefs-info' => 'Grundlæggende information',
+'prefs-i18n' => 'Internationalisering:',
+'prefs-signature' => 'Signatur',
+'prefs-dateformat' => 'Dataformat',
+'prefs-timeoffset' => 'Tidsforskel',
+'prefs-advancedediting' => 'Avancerede indstillinger',
+'prefs-advancedrc' => 'Avancerede indstillinger',
+'prefs-advancedrendering' => 'Avancerede indstillinger',
+'prefs-advancedsearchoptions' => 'Avancerede indstillinger',
+'prefs-advancedwatchlist' => 'Avancerede indstillinger',
+'prefs-display' => 'Indstillinger for visning',
+'prefs-diffs' => 'Forskelle',
# User rights
-'userrights' => 'Håndtering af brugerrettigheder', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administrér brugergrupper',
-'userrights-user-editname' => 'Skriv et brugernavn:',
-'editusergroup' => 'Redigér brugergrupper',
-'editinguser' => "Ændrer brugerrettigheder for bruger '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Redigér brugergrupper',
-'saveusergroups' => 'Gem brugergrupper',
-'userrights-groupsmember' => 'Medlem af:',
-'userrights-groups-help' => 'Du kan ændre denne brugers gruppermedlemsskaber:
+'userrights' => 'Håndtering af brugerrettigheder',
+'userrights-lookup-user' => 'Administrér brugergrupper',
+'userrights-user-editname' => 'Skriv et brugernavn:',
+'editusergroup' => 'Redigér brugergrupper',
+'editinguser' => "Ændrer brugerrettigheder for bruger '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Redigér brugergrupper',
+'saveusergroups' => 'Gem brugergrupper',
+'userrights-groupsmember' => 'Medlem af:',
+'userrights-groupsmember-auto' => 'Implicit medlem af:',
+'userrights-groups-help' => 'Du kan ændre denne brugers gruppermedlemsskaber:
* Et markeret afkrydsningsfelt betyder at brugeren er medlen af den pågældende gruppe..
* Et umarkeret felt betyder at brugeren ikke er medlem af gruppen.
* En * betyder at du ikke kan fravælge gruppen, når den først er tilføjet og omvendt.',
-'userrights-reason' => 'Årsag:',
-'userrights-no-interwiki' => 'Du kan ikke ændre brugerrettigheder på andre wikier.',
-'userrights-nodatabase' => 'Databasen $1 eksisterer ikke lokalt.',
-'userrights-nologin' => 'Du skal [[Special:UserLogin|logge på]] med en administrativ konto, før du kan ændre brugerettigheder.',
-'userrights-notallowed' => 'Din konto har ikke andgang til at ændre brugerrettigheder.',
-'userrights-changeable-col' => 'Redigerbare grupper',
-'userrights-unchangeable-col' => 'Uredigerbare grupper',
+'userrights-reason' => 'Årsag:',
+'userrights-no-interwiki' => 'Du kan ikke ændre brugerrettigheder på andre wikier.',
+'userrights-nodatabase' => 'Databasen $1 eksisterer ikke lokalt.',
+'userrights-nologin' => 'Du skal [[Special:UserLogin|logge på]] med en administrativ konto, før du kan ændre brugerettigheder.',
+'userrights-notallowed' => 'Din konto har ikke andgang til at ændre brugerrettigheder.',
+'userrights-changeable-col' => 'Redigerbare grupper',
+'userrights-unchangeable-col' => 'Uredigerbare grupper',
# Groups
'group' => 'Gruppe:',
@@ -1260,6 +1318,7 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'right-bigdelete' => 'Slette sider med mange versioner',
'right-deleterevision' => 'Slette og gendanne enkelte versioner af sider',
'right-deletedhistory' => 'Se slettede verioner, uden at vise versionens indhold.',
+'right-deletedtext' => 'Vise slettet tekst og ændringer i slettede revisioner',
'right-browsearchive' => 'Søge i slettede sider',
'right-undelete' => 'Gendanne en side',
'right-suppressrevision' => 'Skjule og synliggøre sletninger for administratorer',
@@ -1273,6 +1332,8 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'right-editprotected' => 'Ændre beskyttede sider (uden nedarvet sidebeskyttelse)',
'right-editinterface' => 'Ændre brugergrænsefladens tekster',
'right-editusercssjs' => 'Ændre andre brugeres JS og CSS filer',
+'right-editusercss' => 'Ændre andre brugeres CSS filer',
+'right-edituserjs' => 'Ændre andre brugeres JS filer',
'right-rollback' => 'Hurtig gendannelse af alle redigeringer foretaget af den seneste bruger',
'right-markbotedits' => 'Markere gendannelser som ændringer foretaget af en robot',
'right-noratelimit' => 'Upåvirket af hastighedsgrænser',
@@ -1289,6 +1350,8 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'right-siteadmin' => 'Låse og frigive databasen',
'right-reset-passwords' => 'Ændre andre brugeres adgangskode',
'right-override-export-depth' => 'Eksportere sider inkl. henviste sider op til en dybde på 5',
+'right-versiondetail' => 'Se den udvidede information om programversion',
+'right-sendemail' => 'Sende e-mail til andre brugere',
# User rights log
'rightslog' => 'Rettighedslog',
@@ -1338,6 +1401,15 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'recentchanges-legend' => 'Indstillinger for seneste ændringer',
'recentchangestext' => "På denne side kan du følge de seneste ændringer på '''{{SITENAME}}'''.",
'recentchanges-feed-description' => 'Med dette feed kan du følge de seneste ændringer på {{SITENAME}}.',
+'recentchanges-label-legend' => 'Tegnforklaring: $1.',
+'recentchanges-legend-newpage' => '$1 – ny side',
+'recentchanges-label-newpage' => 'Denne redigering oprettede en ny side',
+'recentchanges-legend-minor' => '$1 – mindre ændring',
+'recentchanges-label-minor' => 'Dette er en mindre ændring',
+'recentchanges-legend-bot' => '$1 – botændring',
+'recentchanges-label-bot' => 'Denne redigering blev udført af en bot',
+'recentchanges-legend-unpatrolled' => '$1 – upatruljeret ændring',
+'recentchanges-label-unpatrolled' => 'Denne redigering er endnu ikke blevet patruljeret',
'rcnote' => "Herunder ses {{PLURAL:$1|'''1''' ændring|de sidste '''$1''' ændringer}} fra {{PLURAL:$2|i dag|de sidste '''$2''' dage}} fra den $4, kl. $5.",
'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
'rclistfrom' => 'Vis nye ændringer startende fra $1',
@@ -1365,6 +1437,8 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
# Recent changes linked
'recentchangeslinked' => 'Relaterede ændringer',
+'recentchangeslinked-feed' => 'Relaterede ændringer',
+'recentchangeslinked-toolbox' => 'Relaterede ændringer',
'recentchangeslinked-title' => 'Ændringer der relaterer til $1',
'recentchangeslinked-noresult' => 'I det valgte tidsrum blev der ikke foretaget ændringer på sider der henvises til.',
'recentchangeslinked-summary' => "Denne specialside viser de seneste ændringer på de sider der henvises til. Sider på din overvågningsliste er vist med '''fed''' skrift.",
@@ -1374,8 +1448,8 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
# Upload
'upload' => 'Læg en fil op',
'uploadbtn' => 'Læg en fil op',
-'reupload' => 'Læg en fil op igen',
'reuploaddesc' => 'Tilbage til formularen til at lægge filer op.',
+'upload-tryagain' => 'Gem modificeret filbeskrivelse',
'uploadnologin' => 'Ikke logget på',
'uploadnologintext' => 'Du skal være [[Special:UserLogin|logget på]] for at kunne lægge filer op.',
'upload_directory_missing' => 'upload-kataloget ($1) findes ikke. Webserveren har ikke mulighed for at oprette kataloget.',
@@ -1406,6 +1480,7 @@ Brug en henvisning af en de følgende typer for at bruge en fil på en side:
'minlength1' => 'Navnet på filen skal være på mindst et bogstav.',
'illegalfilename' => 'Filnavnet "$1" indeholder tegn, der ikke er tilladte i sidetitler. Omdøb filen og prøv at lægge den op igen.',
'badfilename' => 'Navnet på filen er blevet ændret til "$1".',
+'filetype-mime-mismatch' => 'Filendelsen svarer ikke til MIME-typen.',
'filetype-badmime' => 'Filer med MIME-typen „$1“ må ikke uploades.',
'filetype-bad-ie-mime' => 'Kan ikke lægge denne fil op fordi Internet Explorer ville betragte den som værende af typen "$1", som er en ikke-tilladt og en potentiel farlig filtype.',
'filetype-unwanted-type' => "'''\".\$1\"''' er ikke en foretrukken filtype. {{PLURAL:\$3|Den foretrukne filtype|De foretrukne filtyper}} er \$2.",
@@ -1424,7 +1499,6 @@ For at få din beskrivelse vist, skal du selv redigere beskrivelsessiden.
* Navnet på den valgte fil: '''<tt>[[:$1]]</tt>'''
* Navnet på den eksisterende fil: '''<tt>[[:$2]]</tt>'''
Vælg venligst et andet navn.",
-'fileexists-thumb' => "<center>'''Eksisterende billede'''</center>",
'fileexists-thumbnail-yes' => "Det ser ud som om filen indeholder et billede i reduceret størrelse ''(thumbnail)''. [[$1|thumb]]
Kontroller filen '''<tt>[[:$1]]</tt>'''.
Hvis det er billedet i original størrelse, er det ikke nødvendigt at uploade et separat forhåndsvisningsbillede.",
@@ -1441,6 +1515,7 @@ Hvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.
'file-deleted-duplicate' => 'En fil identisk med denne fil ([[$1]]) er tidligere blevet slettet. Du bør tjekke den fils sletningshistorik før du prøver at genoplægge den.',
'successfulupload' => 'Oplægningen er gennemført',
'uploadwarning' => 'Advarsel',
+'uploadwarning-text' => 'Vær venlig at ændre filbeskrivelsen nedenfor og prøv igen.',
'savefile' => 'Gem fil',
'uploadedimage' => 'lagde "[[$1]]" op',
'overwroteimage' => 'lagde en ny version af "[[$1]]" op',
@@ -1448,11 +1523,14 @@ Hvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.
'uploaddisabledtext' => 'Oplægning af filer er deaktiveret.',
'php-uploaddisabledtext' => 'Oplægning af filer er forhindret i PHP. Tjek indstillingen for file_uploads.',
'uploadscripted' => 'Denne fil indeholder HTML eller script-kode, der i visse tilfælde can fejlfortolkes af en browser.',
-'uploadcorrupt' => 'Denne fil er beskadiget eller forsynet med en forkert endelse. Kontroller venligst filen og prøv at lægge den op igen.',
'uploadvirus' => 'Denne fil indeholder en virus! Virusnavn: $1',
+'upload-source' => 'Kildefil',
'sourcefilename' => 'Vælg en fil:',
+'sourceurl' => 'Kildens URL:',
'destfilename' => 'Nyt filnavn:',
'upload-maxfilesize' => 'Maksimal filstørrelse: $1',
+'upload-description' => 'Filbeskrivelse',
+'upload-options' => 'Oplægningsindstillinger',
'watchthisupload' => 'Overvåg filen',
'filewasdeleted' => 'En fil med dette navn er tidligere uploadet og i mellemtiden slettet igen. Kontroller først indførslen i $1, før du gemmer filen.',
'upload-wasdeleted' => "'''Advarsel: Du er ved at uploade en fil der tidligere er blevet slettet.'''
@@ -1461,13 +1539,44 @@ Overvej om det er passende at fortsætte med uploadet.
Sletningsloggen for denne fil er gengivet herunder.",
'filename-bad-prefix' => "Navnet på filen du er ved at lægge op begynder med '''\"\$1\"'''. Dette er et ikkebeskrivende navn, der typisk er skabt automatisk af et digitalkamera. Vær venlig at vælge et mere beskrivende navn på dit billede.",
-'upload-proto-error' => 'Forkert protokol',
-'upload-proto-error-text' => 'Adressen skal begynde med <code>http://</code> eller <code>ftp://</code>.',
-'upload-file-error' => 'Intern fejl',
-'upload-file-error-text' => 'Ved oprettelse af en midlertidig fil på serveren, er der sket en fejl.
+'upload-proto-error' => 'Forkert protokol',
+'upload-proto-error-text' => 'Adressen skal begynde med <code>http://</code> eller <code>ftp://</code>.',
+'upload-file-error' => 'Intern fejl',
+'upload-file-error-text' => 'Ved oprettelse af en midlertidig fil på serveren, er der sket en fejl.
Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
-'upload-misc-error' => 'Ukendt fejl ved upload',
-'upload-misc-error-text' => 'Ved upload er der sket en ukendt fejl. Kontroller adressen for fejl, sidens onlinestatus og forsøg igen. Hvis problemet fortsætter, informeres en system-administrator.',
+'upload-misc-error' => 'Ukendt fejl ved upload',
+'upload-misc-error-text' => 'Ved upload er der sket en ukendt fejl. Kontroller adressen for fejl, sidens onlinestatus og forsøg igen. Hvis problemet fortsætter, informeres en system-administrator.',
+'upload-too-many-redirects' => "URL'en indeholdt for mange omdirigeringer",
+'upload-unknown-size' => 'Ukendt størrelse',
+'upload-http-error' => 'Der opstod en HTTP-fejl: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Adgang nægtet',
+'img-auth-nopathinfo' => 'PATH_INFO mangler.
+Din server er ikke sat op til at give denne information.
+Den bruger måske CGI og understøtter ikke img_auth.
+Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Den ønskede sti er ikke i det opsatte oplægningskatalog.',
+'img-auth-badtitle' => 'Kan ikke lave en gyldig titel ud fra "$1".',
+'img-auth-nologinnWL' => 'Du er ikke logget ind, og "$1" er ikke på hvidlisten.',
+'img-auth-nofile' => 'Filen "$1" findes ikke.',
+'img-auth-isdir' => 'Du forsøger at få adgang til kataloget "$1".
+Kun adgang til filer tillades.',
+'img-auth-streaming' => 'Sender "$1".',
+'img-auth-public' => "img_auth.php's funktion er at sende filer fra en privat wiki.
+Denne wiki er konfigureret som en offentlig wiki.
+For optimal sikkerhed er img_auth.php deaktiveret.",
+'img-auth-noread' => 'Brugeren har ikke rettigheder til at læse "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Ugyldig webadresse: $1',
+'http-invalid-scheme' => 'URL\'er af typen "$1" er ikke understøttet.',
+'http-request-error' => 'HTTP-forespørgslen fejlede af ukendte årsager.',
+'http-read-error' => 'HTTP-læsefejl.',
+'http-timed-out' => 'HTTP-forespørgslen tog for lang tid.',
+'http-curl-error' => 'Fejl under hentning af URL: $1',
+'http-host-unreachable' => 'Webadresse er ikke tilgængelig.',
+'http-bad-status' => 'Der opstod et problem under HTTP-forespørgslen: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL er utilgængelig',
@@ -1476,6 +1585,7 @@ Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
'upload-curl-error28-text' => 'Siden er for længe om at svare. Kontroller om siden er online, vent et øjeblik og prøv igen. Det kan måske hjælpe at prøve på et senere tidspunkt.',
'license' => 'Licens',
+'license-header' => 'Licensering',
'nolicense' => 'intet forvalg',
'license-nopreview' => '(forhåndsvisning ikke mulig)',
'upload_source_url' => ' (gyldig, offentligt tillgængelig URL)',
@@ -1494,6 +1604,7 @@ Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
'listfiles_count' => 'Versioner',
# File description page
+'file-anchor-link' => 'Fil',
'filehist' => 'Filhistorik',
'filehist-help' => 'Klik på en dato/tid for at se den version af filen.',
'filehist-deleteall' => 'slet alle',
@@ -1508,6 +1619,7 @@ Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
'filehist-dimensions' => 'Dimensioner',
'filehist-filesize' => 'Filstørrelse',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Fil mangler',
'imagelinks' => 'Filhenvisninger',
'linkstoimage' => '{{Plural:$1|Den følgende side|De følgende $1 sider}} henviser til denne fil:',
'linkstoimage-more' => 'Flere end $1 {{PLURAL:$1|side|sider}} henviser til denne fil.
@@ -1517,15 +1629,16 @@ En [[Special:WhatLinksHere/$2|komplet liste]] er tilgængelig.',
'morelinkstoimage' => 'Se [[Special:WhatLinksHere/$1|flere henvisninger]] til denne fil.',
'redirectstofile' => '{{PLURAL:$1|Nedenstående fil|De nedenstående $1 filer}} er en omdirigering til denne fil:',
'duplicatesoffile' => 'Følgende {{PLURAL:$1|fil er en dublet|filer er dubletter}} af denne fil ([[Special:FileDuplicateSearch/$2|flere detaljer]]):',
-'sharedupload' => 'Denne fil er fra $1 og kan bruges af andre projekter.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Se venligst $1n for yderligere information.',
-'shareduploadwiki-desc' => 'Beskrivelsen på dens $1 der vises nedenfor.',
-'shareduploadwiki-linktext' => 'filbeskrivelsesside',
-'noimage' => 'Der findes ingen fil med dette navn, men du kan $1.',
-'noimage-linktext' => 'lægge en op',
+'sharedupload' => 'Denne fil er fra $1 og kan bruges af andre projekter.',
+'sharedupload-desc-there' => 'Denne fil er fra $1 og kan bruges på andre projekter.
+Se [$2 filbeskrivelsessiden] for nærmere information.',
+'sharedupload-desc-here' => 'Denne fil er fra $1 og kan bruges på andre projekter.
+Indholdet på dens [$2 filbeskrivelsesside] er vist herunder.',
+'filepage-nofile' => 'Der er ingen fil med det navn.',
+'filepage-nofile-link' => 'Der er ingen fil med det navn, med du kan [$1 lægge den op].',
'uploadnewversion-linktext' => 'Læg en ny version af denne fil op',
-'shared-repo-from' => 'fra $1', # $1 is the repository name
-'shared-repo' => 'et delt filarkiv', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'fra $1',
+'shared-repo' => 'et delt filarkiv',
# File reversion
'filerevert' => 'Gendan $1',
@@ -1555,6 +1668,7 @@ En [[Special:WhatLinksHere/$2|komplet liste]] er tilgængelig.',
** Dubletfil
** Filen er ubrugt',
'filedelete-edit-reasonlist' => 'Rediger sletningsårsager',
+'filedelete-maintenance' => 'Sletning og gendannelse af filer er midlertidigt forhindret på grund af vedligeholdelse.',
# MIME search
'mimesearch' => 'Søge efter MIME-type',
@@ -1576,7 +1690,7 @@ Husk at kontrollere for andre henvisninger til skabelonerne før de slettes.',
# Random page
'randompage' => 'Tilfældig artikel',
-'randompage-nopages' => 'Der er ingen sider i navnerummet $1.',
+'randompage-nopages' => 'Der er ingen sider i {{PLURAL:$2|navnerummet|disse navnerum:}} $1.',
# Random redirect
'randomredirect' => 'Tilfældige henvisninger',
@@ -1588,6 +1702,7 @@ Husk at kontrollere for andre henvisninger til skabelonerne før de slettes.',
'statistics-header-edits' => 'Redigeringsstatistik',
'statistics-header-views' => 'Visningsstatistik',
'statistics-header-users' => 'Statistik om brugere på {{SITENAME}}',
+'statistics-header-hooks' => 'Anden statistik',
'statistics-articles' => 'Indholdssider',
'statistics-pages' => 'Sider',
'statistics-pages-desc' => 'Alle sider i wikien inklusive diskussionssider, omdirigeringer og andet',
@@ -1615,8 +1730,8 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
'brokenredirects' => 'Defekte omdirigeringer',
'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
-'brokenredirects-edit' => '(rediger)',
-'brokenredirects-delete' => '(slet)',
+'brokenredirects-edit' => 'rediger',
+'brokenredirects-delete' => 'slet',
'withoutinterwiki' => 'Sider uden henvisninger til andre sprog',
'withoutinterwiki-summary' => 'Følgende sider henviser ikke til andre sprog.',
@@ -1723,7 +1838,7 @@ Du kan afgrænse visningen ved at vælge en logtype, brugernavn eller påvirket
# Special:Categories
'categories' => 'Kategorier',
-'categoriespagetext' => 'Følgende kategorier indeholder sider eller media.
+'categoriespagetext' => 'Følgende {{PLURAL:$1|kategori|kategorier}} indeholder sider eller media.
[[Special:UnusedCategories|Ubrugte kategorier]] vises ikke her.
Se også [[Special:WantedCategories|ønskede kategorier]].',
'categoriesfrom' => 'Vis kategorier startende med:',
@@ -1731,8 +1846,9 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'special-categories-sort-abc' => 'sorter alfabetisk',
# Special:DeletedContributions
-'deletedcontributions' => 'slettede brugerbidrag',
-'deletedcontributions-title' => 'Slettede brugerbidrag',
+'deletedcontributions' => 'slettede brugerbidrag',
+'deletedcontributions-title' => 'Slettede brugerbidrag',
+'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
'linksearch' => 'Eksterne henvisninger',
@@ -1747,6 +1863,16 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'listusersfrom' => 'Vis brugere fra:',
'listusers-submit' => 'Vis',
'listusers-noresult' => 'Ingen bruger fundet.',
+'listusers-blocked' => '(blokeret)',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brugere',
+'activeusers-intro' => 'Dette er en liste over brugere, som har haft en eller anden form for aktivitet inden for {{PLURAL:$1|den|de}} seneste {{PLURAL:$1|dag|$1 dage}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|redigering|redigeringer}} i {{PLURAL:$3|det seneste døgn|de seneste $3 dage}}',
+'activeusers-from' => 'Vis brugere som starter med:',
+'activeusers-hidebots' => 'Skjul robotter',
+'activeusers-hidesysops' => 'Skjul administratorer',
+'activeusers-noresult' => 'Ingen brugere fundet.',
# Special:Log/newusers
'newuserlogpage' => 'Brugeroprettelseslog',
@@ -1757,18 +1883,24 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'newuserlog-autocreate-entry' => 'Automatisk oprettet konto',
# Special:ListGroupRights
-'listgrouprights' => 'Brugergrupperettigheder',
-'listgrouprights-summary' => 'Denne side viser de brugergrupper der er defineret på denne wiki og de enkelte gruppers rettigheder.
+'listgrouprights' => 'Brugergrupperettigheder',
+'listgrouprights-summary' => 'Denne side viser de brugergrupper der er defineret på denne wiki og de enkelte gruppers rettigheder.
Der findes muligvis [[{{MediaWiki:Listgrouprights-helppage}}|yderligere information]] om de enkelte rettigheder.',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Rettigheder',
-'listgrouprights-helppage' => 'Help:Grupperettigheder',
-'listgrouprights-members' => '(vis medlemmer)',
-'listgrouprights-addgroup' => 'Kan tilføje {{PLURAL:$2|gruppen|grupperne}}: $1',
-'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppen|grupperne}}: $1',
-'listgrouprights-addgroup-all' => 'Kan tilføje alle grupper',
-'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Given rettighed</span>
+* <span class="listgrouprights-revoked">Tilbagetrukken rettighed</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Rettigheder',
+'listgrouprights-helppage' => 'Help:Grupperettigheder',
+'listgrouprights-members' => '(vis medlemmer)',
+'listgrouprights-addgroup' => 'Kan tilføje {{PLURAL:$2|gruppen|grupperne}}: $1',
+'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppen|grupperne}}: $1',
+'listgrouprights-addgroup-all' => 'Kan tilføje alle grupper',
+'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights-addgroup-self' => 'Kan tilføje {{PLURAL:$2|gruppe|grupper}} til egen konto: $1',
+'listgrouprights-removegroup-self' => 'Kan fjerne {{PLURAL:$2|gruppe|grupper}} fra egen konto: $1',
+'listgrouprights-addgroup-self-all' => 'Kan tilføje alle grupper til egen konto',
+'listgrouprights-removegroup-self-all' => 'Kan fjerne alle grupper fra egen konto',
# E-mail user
'mailnologin' => 'Du er ikke logget på',
@@ -1841,21 +1973,27 @@ Den e-mail-adresse du har angivet i [[Special:Preferences|dine indstillinger]] v
'enotif_anon_editor' => 'anonym bruger $1',
'enotif_body' => 'Kære $WATCHINGUSERNAME,
-{{SITENAME}}-siden $PAGETITLE er blevet ændret den $PAGEEDITDATE af $PAGEEDITOR, se $PAGETITLE_URL for den nyeste version.
-
+{{SITENAME}}-siden $PAGETITLE er blevet $CHANGEDORCREATED den $PAGEEDITDATE af $PAGEEDITOR, se $PAGETITLE_URL for den aktuelle version.
$NEWPAGE
-Bidragyderens beskrivelse: $PAGESUMMARY $PAGEMINOREDIT
+Bidragyderens opsummering: $PAGESUMMARY $PAGEMINOREDIT
+
Kontakt bidragyderen:
-mail $PAGEEDITOR_EMAIL
-wiki $PAGEEDITOR_WIKI
+e-mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
-Du vil ikke modtage flere beskeder om yderligere ændringer af denne side med mindre du besøger den. På din overvågningsliste kan du også nulstille alle markeringer på de sider, du overvåger.
+Du vil ikke modtage flere beskeder om yderligere ændringer medmindre du besøger denne side.
+På din overvågningsliste kan du også nulstille alle markeringer på de sider, du overvåger.
Med venlig hilsen {{SITENAME}}s informationssystem
---
-Besøg {{fullurl:Special:Watchlist/edit}} for at ændre indstillingerne for din overvågningsliste
+
+--
+For at ændre indstillingerne for din overvågningsliste, besøg
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+For at slette siden fra din overvågningsliste, besøg
+$UNWATCHURL
Tilbagemelding og yderligere hjælp:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1869,10 +2007,11 @@ Tilbagemelding og yderligere hjælp:
'exblank' => 'siden var tom',
'delete-confirm' => 'Slet "$1"',
'delete-legend' => 'Slet',
-'historywarning' => 'Advarsel: Siden du er ved at slette har en historie:',
+'historywarning' => 'Advarsel: Siden du er ved at slette har en historie med $1 {{PLURAL:$1|revision|revisioner}}:',
'confirmdeletetext' => 'Du er ved at slette en side sammen med hele dens tilhørende historik.
Bekræft venligst at du virkelig vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].',
'actioncomplete' => 'Gennemført',
+'actionfailed' => 'Handlingen mislykkedes',
'deletedtext' => '"$1" er slettet. Se $2 for en fortegnelse over de nyeste sletninger.',
'deletedarticle' => 'slettede "$1"',
'suppressedarticle' => 'skjulte "[[$1]]"',
@@ -1893,20 +2032,21 @@ Bekræft venligst at du virkelig vil gøre dette, at du forstår konsekvenserne,
'delete-warning-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.',
# Rollback
-'rollback' => 'Fjern redigeringer',
-'rollback_short' => 'Fjern redigering',
-'rollbacklink' => 'rul tilbage',
-'rollbackfailed' => 'Kunne ikke fjerne redigeringen',
-'cantrollback' => 'Kan ikke fjerne redigering; den sidste bruger er den eneste forfatter.',
-'alreadyrolled' => 'Kan ikke fjerne den seneste redigering af [[:$1]] foretaget af [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Fjern redigeringer',
+'rollback_short' => 'Fjern redigering',
+'rollbacklink' => 'rul tilbage',
+'rollbackfailed' => 'Kunne ikke fjerne redigeringen',
+'cantrollback' => 'Kan ikke fjerne redigering; den sidste bruger er den eneste forfatter.',
+'alreadyrolled' => 'Kan ikke fjerne den seneste redigering af [[:$1]] foretaget af [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
en anden har allerede redigeret siden eller fjernet redigeringen.
Den seneste redigering er foretaget af [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redigeringsbeskrivelsen var: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Gendannelse til seneste version ved [[User:$1|$1]], fjerner ændringer fra [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]])', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Ændringerne fra $1 er fjernet,
+'editcomment' => "Redigeringsbeskrivelsen var: \"''\$1''\".",
+'revertpage' => 'Gendannelse til seneste version ved [[User:$1|$1]], fjerner ændringer fra [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]])',
+'revertpage-nouser' => 'Gendannet til seneste version af [[User:$1|$1]], ændringer fra (brugernavn fjernet) fjernet',
+'rollback-success' => 'Ændringerne fra $1 er fjernet,
og den seneste version af $2 er gendannet.',
-'sessionfailure' => 'Der lader til at være et problem med din loginsession; denne handling blev annulleret som en sikkerhedsforanstaltning mod kapring af sessionen. Tryk på "tilbage"-knappen og genindlæs den side du kom fra, og prøv dernæst igen.',
+'sessionfailure' => 'Der lader til at være et problem med din loginsession; denne handling blev annulleret som en sikkerhedsforanstaltning mod kapring af sessionen. Tryk på "tilbage"-knappen og genindlæs den side du kom fra, og prøv dernæst igen.',
# Protect
'protectlogpage' => 'Skrivebeskyttelseslog',
@@ -1922,7 +2062,7 @@ og den seneste version af $2 er gendannet.',
'protectexpiry' => 'Udløb',
'protect_expiry_invalid' => 'Udløbstiden er ugyldig.',
'protect_expiry_old' => 'Udløbstiden ligger i fortiden.',
-'protect-unchain' => 'Ændre flytningsbeskyttelse',
+'protect-unchain-permissions' => 'Lås yderligere beskyttelsesindstillinger op',
'protect-text' => "Her kan beskyttelsesstatus for siden '''$1''' ses og ændres.",
'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er spærret. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
'protect-locked-dblock' => "Databasen er spærret, sidebeskyttelsen kan derfor ikke ændres. her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
@@ -1948,7 +2088,7 @@ og den seneste version af $2 er gendannet.',
** Redigeringskrig
** Side med mange besøgende',
'protect-edit-reasonlist' => 'Rediger beskyttelsesårsager',
-'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:infinite',
'restriction-type' => 'Beskyttelsesstatus',
'restriction-level' => 'Beskyttelsesniveau:',
'minimum-size' => 'Mindste størrelse',
@@ -1991,6 +2131,7 @@ Teksten i de slettede versioner er kun tilgængelig for administratorer.',
'undelete-nodiff' => 'Der findes ingen tidligere version.',
'undeletebtn' => 'Gendan',
'undeletelink' => 'vis/gendan',
+'undeleteviewlink' => 'vis',
'undeletereset' => 'Afbryd',
'undeleteinvert' => 'Omvend valget af versioner',
'undeletecomment' => 'Begrundelse:',
@@ -2028,19 +2169,23 @@ $1',
'contributions-title' => 'Brugerbidrag for $1',
'mycontris' => 'Mine bidrag',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Ingen ændringer er fundet som opfylder disse kriterier.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ingen ændringer er fundet som opfylder disse kriterier.',
'uctop' => ' (seneste)',
'month' => 'Måned:',
'year' => 'År:',
-'sp-contributions-newbies' => 'Vis kun bidrag fra nye brugere',
-'sp-contributions-newbies-sub' => 'Fra nye kontoer',
-'sp-contributions-newbies-title' => 'Brugerbidrag fra nye kontoer',
-'sp-contributions-blocklog' => 'blokeringslog',
-'sp-contributions-logs' => 'loglister',
-'sp-contributions-search' => 'Søg efter bidrag',
-'sp-contributions-username' => 'IP-adresse eller brugernavn:',
-'sp-contributions-submit' => 'Søg',
+'sp-contributions-newbies' => 'Vis kun bidrag fra nye brugere',
+'sp-contributions-newbies-sub' => 'Fra nye kontoer',
+'sp-contributions-newbies-title' => 'Brugerbidrag fra nye kontoer',
+'sp-contributions-blocklog' => 'blokeringslog',
+'sp-contributions-deleted' => 'slettede brugerbidrag',
+'sp-contributions-logs' => 'loglister',
+'sp-contributions-talk' => 'diskussion',
+'sp-contributions-userrights' => 'håndtering af brugerrettigheder',
+'sp-contributions-blocked-notice' => 'Denne bruger er i øjeblikket blokeret. Loggen over den seneste blokering kan ses nedenfor:',
+'sp-contributions-search' => 'Søg efter bidrag',
+'sp-contributions-username' => 'IP-adresse eller brugernavn:',
+'sp-contributions-submit' => 'Søg',
# What links here
'whatlinkshere' => 'Hvad henviser hertil',
@@ -2063,6 +2208,7 @@ $1',
# Block/unblock
'blockip' => 'Bloker bruger',
+'blockip-title' => 'Bloker bruger',
'blockip-legend' => 'Bloker bruger',
'blockiptext' => 'Brug formularen herunder til at blokere for skriveadgang fra en bestemt IP-adresse eller et brugernavn.
Dette bør kun gøres for at forhindre vandalisme og skal være i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].
@@ -2086,7 +2232,7 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
'ipbenableautoblock' => 'Spærre den IP-adresse, der bruges af denne bruger samt automatisk alle følgende, hvorfra han foretager ændringer eller forsøger at anlægge brugerkonti',
'ipbsubmit' => 'Bloker denne bruger',
'ipbother' => 'Anden varighed (engelsk)',
-'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dage:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dage:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:infinite',
'ipbotheroption' => 'Anden varighed',
'ipbotherreason' => 'Anden/uddybende begrundelse',
'ipbhidename' => 'Skjul brugernavnet i redigeringer og lister',
@@ -2115,9 +2261,11 @@ Se [[Special:IPBlockList|IP-blokeringslisten]] for alle blokeringer.',
'ipblocklist-sh-tempblocks' => '$1 midlertidige blokeringer',
'ipblocklist-sh-addressblocks' => '$1 blokeringer af individuelle IP-adresser',
'ipblocklist-submit' => 'Søg',
+'ipblocklist-localblock' => 'Lokal blokering',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Øvrig blokering|Øvrige blokeringer}}',
'blocklistline' => '$1, $2 blokerede $3 ($4)',
'infiniteblock' => 'udløber infinite',
-'expiringblock' => 'udløber $1',
+'expiringblock' => 'udløber $1 $2',
'anononlyblock' => 'kun anonyme',
'noautoblockblock' => 'Autoblok deaktiveret',
'createaccountblock' => 'Oprettelse af brugerkonti spærret',
@@ -2132,7 +2280,10 @@ Se [[Special:IPBlockList|IP-blokeringslisten]] for alle blokeringer.',
'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
Begrundelse: "$2".',
'blocklogpage' => 'Blokeringslog',
-'blocklog-fulllog' => 'Komplet blokeringslog',
+'blocklog-showlog' => 'Denne bruger er tidligere blevet blokeret.
+Blokeringsloggen vises nedenfor som reference:',
+'blocklog-showsuppresslog' => 'Denne bruger har tidligere været blokeret og skjult.
+Skjulningsloggen vises nedenfor som reference:',
'blocklogentry' => 'blokerede [[$1]] med en varighed på $2 $3',
'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med en varighed $2 $3',
'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere. Automatisk blokerede IP-adresser er ikke anført her. Se [[Special:IPBlockList|blokeringslisten]] for den nuværende liste med blokerede brugere.',
@@ -2151,9 +2302,11 @@ Begrundelse: "$2".',
'ipb_already_blocked' => '„$1“ er allerede blokeret',
'ipb-needreblock' => '== Allerede blokkeret ==
$1 er allerede blokkeret. Vil du ændre indstillingene?',
+'ipb-otherblocks-header' => 'Yderligere {{PLURAL:$1|blokering|blokeringer}}',
'ipb_cant_unblock' => 'Fejl: Spærre-ID $1 ikke fundet. Spærringen er allerede ophævet.',
'ipb_blocked_as_range' => 'Fejl: IP-adressen $1 er ikke dirkete blokeret. Derfor kan en blokering ikke ophæves. Adressen er blokeret som en del af intervallet $2. Denne blokering kan ophæves.',
'ip_range_invalid' => 'Ugyldigt IP-interval.',
+'ip_range_toolarge' => 'Blokeringer af IP-serier større end /$1 er ikke tilladte.',
'blockme' => 'Bloker mig',
'proxyblocker' => 'Proxy-blokering',
'proxyblocker-disabled' => 'Denne funktion er ikke i brug.',
@@ -2162,6 +2315,7 @@ $1 er allerede blokkeret. Vil du ændre indstillingene?',
'sorbsreason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY.',
'sorbs_create_account_reason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY. Oprettelse af nye brugere er ikke mulig.',
'cant-block-while-blocked' => 'Du kan ikke blokkere andre brugere mens du selv er blokkeret.',
+'cant-see-hidden-user' => 'Brugeren du prøver at blokerer er allerede blokeret og skjult. Siden du ikke har rettigheden til at skjule brugere, kan du ikke se eller ændre brugerens blokering.',
# Developer tools
'lockdb' => 'Lås database',
@@ -2190,6 +2344,7 @@ $1 er allerede blokkeret. Vil du ændre indstillingene?',
I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.",
'movearticle' => 'Flyt side',
+'moveuserpage-warning' => "'''Advarsel:''' Du er ved at flytte en brugerside. Bemærk at det kun er siden, der vil blive flyttet – brugeren bliver ''ikke'' omdøbt.",
'movenologin' => 'Ikke logget på',
'movenologintext' => 'Du skal være registreret bruger og [[Special:UserLogin|logget på]] for at flytte en side.',
'movenotallowed' => 'Du har ikke rettigheder til at flytte sider.',
@@ -2200,7 +2355,7 @@ I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.",
'move-watch' => 'Overvåg siden',
'movepagebtn' => 'Flyt side',
'pagemovedsub' => 'Flytning gennemført',
-'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'',
'movepage-moved-redirect' => 'En omdirigering er oprettet.',
'movepage-moved-noredirect' => 'Der oprettedes ikke en omdirigering.',
'articleexists' => 'En side med det navn eksisterer allerede, eller det
@@ -2242,6 +2397,14 @@ Artiklen "[[:$1]]" eksisterer allerede. Vil du slette den for at gøre plads til
'imageinvalidfilename' => 'Destinationsnavnet er ugyldigt',
'fix-double-redirects' => 'Opdater henvisninger til det oprindelige navn',
'move-leave-redirect' => 'Efterlad en omdirigering',
+'protectedpagemovewarning' => "'''Bemærk:''' Denne side er låst så kun administratorer kan flytte den.<br />
+Den seneste logpost vises nedenfor:",
+'semiprotectedpagemovewarning' => "'''Bemærk:''' Denne side er låst så kun registrerede brugere kan flytte den.<br />
+Den seneste logpost vises nedenfor:",
+'move-over-sharedrepo' => '== Fil findes ==
+[[:$1]] findes på en delt kilde. Ved at flytte en fil til denne titel vil overskrive den eksisterende delte fil.',
+'file-exists-sharedrepo' => 'Det valgte filnavn er allerede i brug på en delt kilde.
+Vælg venligst et andet navn.',
# Export
'export' => 'Eksportér sider',
@@ -2263,15 +2426,21 @@ Hvis du kun vil have den seneste version, kan du også bruge en henvisning, for
'export-pagelinks' => 'Inkluder henviste sider til en dybde på:',
# Namespace 8 related
-'allmessages' => 'Alle beskeder',
-'allmessagesname' => 'Navn',
-'allmessagesdefault' => 'Standardtekst',
-'allmessagescurrent' => 'Nuværende tekst',
-'allmessagestext' => 'Dette er en liste med alle systembeskeder i MediaWiki-navnerummet.
+'allmessages' => 'Alle beskeder',
+'allmessagesname' => 'Navn',
+'allmessagesdefault' => 'Standardtekst',
+'allmessagescurrent' => 'Nuværende tekst',
+'allmessagestext' => 'Dette er en liste med alle systembeskeder i MediaWiki-navnerummet.
Besøg venligst [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisering] hvis du ønsker at bidrage til den generelle lokalisering (oversættelse og andre lokale tilpasninger) af MediaWiki.',
-'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.',
-'allmessagesfilter' => 'Meddelelsesnavnefilter:',
-'allmessagesmodified' => 'Vis kun ændrede',
+'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.',
+'allmessages-filter-legend' => 'Filtrér',
+'allmessages-filter' => 'Filtrér efter tilpasningsstatus:',
+'allmessages-filter-unmodified' => 'Uændret',
+'allmessages-filter-all' => 'Alt',
+'allmessages-filter-modified' => 'Ændret',
+'allmessages-prefix' => 'Filtrér efter forstavelse:',
+'allmessages-language' => 'Sprog:',
+'allmessages-filter-submit' => 'Udfør',
# Thumbnails
'thumbnail-more' => 'Forstør',
@@ -2281,6 +2450,9 @@ Besøg venligst [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokaliseri
'djvu_no_xml' => 'XML-data kan ikke hentes til DjVu-filen',
'thumbnail_invalid_params' => 'Ugyldige thumbnail-parametre',
'thumbnail_dest_directory' => 'Kataloget kan ikke oprettes.',
+'thumbnail_image-type' => 'Billedtypen understøttes ikke',
+'thumbnail_gd-library' => 'Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler',
+'thumbnail_image-missing' => 'Filen $1 ser til at mangle',
# Special:Import
'import' => 'Importer sider',
@@ -2345,6 +2517,7 @@ Alle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-logge
Du kan se på kildeteksten.',
'tooltip-ca-history' => 'Tidligere versioner af denne side',
'tooltip-ca-protect' => 'Beskyt denne side',
+'tooltip-ca-unprotect' => 'Fjern beskyttelsen af siden',
'tooltip-ca-delete' => 'Slet denne side',
'tooltip-ca-undelete' => 'Gendan de redigeringer der blev lavet på denne side før den blev slettet',
'tooltip-ca-move' => 'Flyt denne side',
@@ -2355,6 +2528,7 @@ Du kan se på kildeteksten.',
'tooltip-search-fulltext' => 'Søg efter sider der indeholder denne tekst',
'tooltip-p-logo' => 'Forsiden',
'tooltip-n-mainpage' => 'Besøg forsiden',
+'tooltip-n-mainpage-description' => 'Besøg forsiden',
'tooltip-n-portal' => 'Om projektet, hvad du kan gøre, hvor tingene findes',
'tooltip-n-currentevents' => 'Find baggrundsinformation om aktuelle begivenheder',
'tooltip-n-recentchanges' => 'Listen over de seneste ændringer i wikien.',
@@ -2408,10 +2582,12 @@ Det giver mulighed for at tilføje en begrundelse i beskrivelsen.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym bruger|Anonyme brugere}} på {{SITENAME}}',
'siteuser' => '{{SITENAME}} bruger $1',
-'lastmodifiedatby' => 'Denne side blev senest ændret $2, $1 af $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonym bruger $1',
+'lastmodifiedatby' => 'Denne side blev senest ændret $2, $1 af $3.',
'othercontribs' => 'Baseret på arbejde af $1.',
'others' => 'andre',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|bruger|brugere}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonym bruger|anonyme brugere}} $1',
'creditspage' => 'Sidens forfattere',
'nocredits' => 'Der er ingen forfatteroplysninger om denne side.',
@@ -2450,11 +2626,22 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
'mw_math_modern' => 'Anbefalet til moderne browsere',
'mw_math_mathml' => 'MathML hvis muligt',
+# Math errors
+'math_failure' => 'Fejl i matematikken',
+'math_unknown_error' => 'ukendt fejl',
+'math_unknown_function' => 'ukendt funktion',
+'math_lexing_error' => 'lexerfejl',
+'math_syntax_error' => 'syntaksfejl',
+'math_image_error' => 'PNG-konvertering mislykkedes; undersøg om latex, dvips, gs og convert er installeret korrekt',
+'math_bad_tmpdir' => 'Kan ikke skrive til eller oprette temp-mappe til math',
+'math_bad_output' => 'Kan ikke skrive til eller oprette uddata-mappe til math',
+'math_notexvc' => 'Manglende eksekvérbar texvc; se math/README for opsætningsoplysninger.',
+
# Patrolling
'markaspatrolleddiff' => 'Markér som patruljeret',
'markaspatrolledtext' => 'Markér denne artikel som patruljeret',
'markedaspatrolled' => 'Markeret som patruljeret',
-'markedaspatrolledtext' => 'Den valgte revision er nu markeret som patruljeret.',
+'markedaspatrolledtext' => 'Den valgte redigering af [[:$1]] er nu markeret som patruljeret.',
'rcpatroldisabled' => 'Seneste ændringer-patruljeringen er slået fra',
'rcpatroldisabledtext' => 'Funktionen til seneste ændringer-patruljeringen er pt. slået fra.',
'markedaspatrollederror' => 'Markering som „kontrolleret“ ikke mulig.',
@@ -2484,13 +2671,10 @@ $1',
'previousdiff' => '← Gå til forrige ændring',
'nextdiff' => 'Gå til næste ændring →',
-# Visual comparison
-'visual-comparison' => 'Visuel sammenligning',
-
# Media information
'mediawarning' => "'''Advarsel''': Denne filtype kan muligvis indeholde skadelig kode.
Du kan beskadige dit system hvis du udfører den.",
-'imagemaxsize' => 'Begræns størrelsen af billeder på billedsiderne til:',
+'imagemaxsize' => "Maksimal billedstørrelse<br />''(på filbeskrivelsessider)''",
'thumbsize' => 'Thumbnailstørrelse :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|side|sider}}',
'file-info' => '(Filstørrelse: $1, MIME-Type: $2)',
@@ -2499,6 +2683,8 @@ Du kan beskadige dit system hvis du udfører den.",
'svg-long-desc' => '(SVG fil, basisstørrelse $1 × $2 punkters, størrelse: $3)',
'show-big-image' => 'Version i større opløsning',
'show-big-image-thumb' => '<small>Størrelse af forhåndsvisning: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'gentaget',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ramme|rammer}}',
# Special:NewFiles
'newimages' => 'Galleri med de nyeste billeder',
@@ -2532,7 +2718,7 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Bredde',
@@ -2659,14 +2845,14 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-unknowndate' => 'Ukendt dato',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horisontalt spejlet', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Drejet 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikalt spejlet', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Drejet 90° mod uret og spejlet vertikalt', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Drejet 90° med uret', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Drejet 90° med uret og spejlet vertikalt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Drejet 90° mod uret', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Horisontalt spejlet',
+'exif-orientation-3' => 'Drejet 180°',
+'exif-orientation-4' => 'Vertikalt spejlet',
+'exif-orientation-5' => 'Drejet 90° mod uret og spejlet vertikalt',
+'exif-orientation-6' => 'Drejet 90° med uret',
+'exif-orientation-7' => 'Drejet 90° med uret og spejlet vertikalt',
+'exif-orientation-8' => 'Drejet 90° mod uret',
'exif-planarconfiguration-1' => 'Grovformat',
'exif-planarconfiguration-2' => 'Planformat',
@@ -2788,7 +2974,7 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-gpsmeasuremode-2' => '2-dimensional måling',
'exif-gpsmeasuremode-3' => '3-dimensional måling',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Knob',
@@ -2807,6 +2993,7 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'watchlistall2' => 'alle',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bekræft e-mail-adressen',
@@ -2931,7 +3118,7 @@ Du kan også [[Special:Watchlist/edit|bruge standard editoren]].',
'duplicate-defaultsort' => 'Advarsel: Standardsorteringsnøglen "$2" tilsidesætter den tidligere sorteringsnøgle "$1".',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installerede udvidelser',
'version-specialpages' => 'Specialsider',
'version-parserhooks' => 'Oversætter-funktioner',
@@ -2945,7 +3132,7 @@ Du kan også [[Special:Watchlist/edit|bruge standard editoren]].',
'version-skin-extension-functions' => 'Ekstra funktioner til udseende',
'version-hook-name' => 'Navn',
'version-hook-subscribedby' => 'Brugt af',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licens',
'version-software' => 'Installeret software',
'version-software-product' => 'Produkt',
@@ -3027,4 +3214,15 @@ Denne side oplister de tags som programmet kan mærke en redigering med, og dere
'dberr-outofdate' => 'Bemærk at deres indeks over vores sider kan være forældet.',
'dberr-cachederror' => 'Det følgende er en mellemlagret kopi af den forespurgte side. Den kan være forældet.',
+# HTML forms
+'htmlform-invalid-input' => 'Det er problemer med dine angivelser',
+'htmlform-select-badoption' => 'Den angivne værdi er ikke gyldigt valg.',
+'htmlform-int-invalid' => 'Den angivne værdi er ikke et heltal.',
+'htmlform-float-invalid' => 'Den angivne værdi er ikke et tal.',
+'htmlform-int-toolow' => 'Den angivne værdi er under minimumsværdien på $1',
+'htmlform-int-toohigh' => 'Den angivne værdi er over maksimumsværdien på $1',
+'htmlform-submit' => 'Gem',
+'htmlform-reset' => 'Annuller ændringer',
+'htmlform-selectorother-other' => 'Anden',
+
);
diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php
index b4a39b8b..e04a8610 100644
--- a/languages/messages/MessagesDe.php
+++ b/languages/messages/MessagesDe.php
@@ -12,6 +12,7 @@
* @author Church of emacs
* @author DaSch
* @author Duesentrieb
+ * @author Imre
* @author Jan Luca
* @author Jens Liebenau
* @author Jimmy Collins <jimmy.collins@web.de>
@@ -26,6 +27,7 @@
* @author Merlissimo
* @author Metalhead64
* @author MichaelFrey
+ * @author MtaÄ
* @author Omnipaedista
* @author Pill
* @author Purodha
@@ -38,6 +40,7 @@
* @author Tbleher
* @author The Evil IP address
* @author Tim Bartel (avatar) <wikipedistik@computerkultur.org> small changes
+ * @author Tischbeinahe
* @author UV
* @author Umherirrender
* @author W (aka Wuzur)
@@ -45,6 +48,8 @@
* @author לערי ריינהארט
*/
+$capitalizeAllNouns = true;
+
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Spezial',
@@ -72,8 +77,8 @@ $namespaceAliases = array(
$bookstoreList = array(
'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1',
- 'amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1',
- 'buch.de' => 'http://www.buch.de/de.buch.shop/shop/1/home/schnellsuche/buch/?fqbi=$1',
+ 'amazon.de' => 'http://www.amazon.de/gp/search/field-isbn=$1',
+ 'buch.de' => 'http://www.buch.de/shop/home/suche/?sswg=BUCH&sq=$1',
'Karlsruher Virtueller Katalog (KVK)' => 'http://www.ubka.uni-karlsruhe.de/kvk.html?SB=$1',
'Lehmanns Fachbuchhandlung' => 'http://www.lob.de/cgi-bin/work/suche?flag=new&stich1=$1'
);
@@ -82,56 +87,56 @@ $separatorTransformTable = array(',' => '.', '.' => ',' );
$linkTrail = '/^([äöüßa-z]+)(.*)$/sDu';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doppelte_Weiterleitungen' ),
- 'BrokenRedirects' => array( 'Kaputte_Weiterleitungen' ),
+ 'DoubleRedirects' => array( 'Doppelte Weiterleitungen' ),
+ 'BrokenRedirects' => array( 'Kaputte Weiterleitungen' ),
'Disambiguations' => array( 'Begriffsklärungsverweise' ),
'Userlogin' => array( 'Anmelden' ),
'Userlogout' => array( 'Abmelden' ),
- 'CreateAccount' => array( 'Benutzerkonto_anlegen' ),
+ 'CreateAccount' => array( 'Benutzerkonto anlegen' ),
'Preferences' => array( 'Einstellungen' ),
'Watchlist' => array( 'Beobachtungsliste' ),
- 'Recentchanges' => array( 'Letzte_Änderungen' ),
+ 'Recentchanges' => array( 'Letzte Änderungen' ),
'Upload' => array( 'Hochladen' ),
'Listfiles' => array( 'Dateien', 'Dateiliste' ),
- 'Newimages' => array( 'Neue_Dateien' ),
- 'Listusers' => array( 'Benutzer' ),
+ 'Newimages' => array( 'Neue Dateien' ),
+ 'Listusers' => array( 'Benutzer', 'Benutzerliste' ),
'Listgrouprights' => array( 'Gruppenrechte' ),
'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Zufällige_Seite' ),
- 'Lonelypages' => array( 'Verwaiste_Seiten' ),
- 'Uncategorizedpages' => array( 'Nicht_kategorisierte_Seiten' ),
- 'Uncategorizedcategories' => array( 'Nicht_kategorisierte_Kategorien' ),
- 'Uncategorizedimages' => array( 'Nicht_kategorisierte_Dateien' ),
- 'Uncategorizedtemplates' => array( 'Nicht_kategorisierte_Vorlagen' ),
- 'Unusedcategories' => array( 'Unbenutzte_Kategorien' ),
- 'Unusedimages' => array( 'Unbenutzte_Dateien' ),
- 'Wantedpages' => array( 'Gewünschte_Seiten' ),
- 'Wantedcategories' => array( 'Gewünschte_Kategorien' ),
- 'Wantedfiles' => array( 'Fehlende_Dateien' ),
- 'Wantedtemplates' => array( 'Fehlende_Vorlagen' ),
- 'Mostlinked' => array( 'Meistverlinkte_Seiten' ),
- 'Mostlinkedcategories' => array( 'Meistbenutzte_Kategorien' ),
- 'Mostlinkedtemplates' => array( 'Meistbenutzte_Vorlagen' ),
- 'Mostimages' => array( 'Meistbenutzte_Dateien' ),
- 'Mostcategories' => array( 'Meistkategorisierte_Seiten' ),
- 'Mostrevisions' => array( 'Meistbearbeitete_Seiten' ),
- 'Fewestrevisions' => array( 'Wenigstbearbeitete_Seiten' ),
- 'Shortpages' => array( 'Kürzeste_Seiten' ),
- 'Longpages' => array( 'Längste_Seiten' ),
- 'Newpages' => array( 'Neue_Seiten' ),
- 'Ancientpages' => array( 'Älteste_Seiten' ),
+ 'Randompage' => array( 'Zufällige Seite' ),
+ 'Lonelypages' => array( 'Verwaiste Seiten' ),
+ 'Uncategorizedpages' => array( 'Nicht kategorisierte Seiten' ),
+ 'Uncategorizedcategories' => array( 'Nicht kategorisierte Kategorien' ),
+ 'Uncategorizedimages' => array( 'Nicht kategorisierte Dateien' ),
+ 'Uncategorizedtemplates' => array( 'Nicht kategorisierte Vorlagen' ),
+ 'Unusedcategories' => array( 'Unbenutzte Kategorien' ),
+ 'Unusedimages' => array( 'Unbenutzte Dateien' ),
+ 'Wantedpages' => array( 'Gewünschte Seiten' ),
+ 'Wantedcategories' => array( 'Gewünschte Kategorien' ),
+ 'Wantedfiles' => array( 'Fehlende Dateien' ),
+ 'Wantedtemplates' => array( 'Fehlende Vorlagen' ),
+ 'Mostlinked' => array( 'Meistverlinkte Seiten' ),
+ 'Mostlinkedcategories' => array( 'Meistbenutzte Kategorien' ),
+ 'Mostlinkedtemplates' => array( 'Meistbenutzte Vorlagen' ),
+ 'Mostimages' => array( 'Meistbenutzte Dateien' ),
+ 'Mostcategories' => array( 'Meistkategorisierte Seiten' ),
+ 'Mostrevisions' => array( 'Meistbearbeitete Seiten' ),
+ 'Fewestrevisions' => array( 'Wenigstbearbeitete Seiten' ),
+ 'Shortpages' => array( 'Kürzeste Seiten' ),
+ 'Longpages' => array( 'Längste Seiten' ),
+ 'Newpages' => array( 'Neue Seiten' ),
+ 'Ancientpages' => array( 'Älteste Seiten' ),
'Deadendpages' => array( 'Sackgassenseiten' ),
- 'Protectedpages' => array( 'Geschützte_Seiten' ),
- 'Protectedtitles' => array( 'Gesperrte_Titel' ),
- 'Allpages' => array( 'Alle_Seiten' ),
+ 'Protectedpages' => array( 'Geschützte Seiten' ),
+ 'Protectedtitles' => array( 'Gesperrte Titel' ),
+ 'Allpages' => array( 'Alle Seiten' ),
'Prefixindex' => array( 'Präfixindex' ),
- 'Ipblocklist' => array( 'Liste der Sperren', 'Gesperrte_IPs' ),
+ 'Ipblocklist' => array( 'Liste der Sperren', 'Gesperrte IPs' ),
'Specialpages' => array( 'Spezialseiten' ),
'Contributions' => array( 'Beiträge' ),
'Emailuser' => array( 'E-Mail' ),
- 'Confirmemail' => array( 'E-Mail_bestaetigen', 'E-Mail_bestätigen' ),
+ 'Confirmemail' => array( 'E-Mail bestaetigen', 'E-Mail bestätigen' ),
'Whatlinkshere' => array( 'Linkliste', 'Verweisliste' ),
- 'Recentchangeslinked' => array( 'Änderungen_an_verlinkten_Seiten' ),
+ 'Recentchangeslinked' => array( 'Änderungen an verlinkten Seiten' ),
'Movepage' => array( 'Verschieben' ),
'Blockme' => array( 'Proxy-Sperre' ),
'Booksources' => array( 'ISBN-Suche' ),
@@ -142,32 +147,33 @@ $specialPageAliases = array(
'Blockip' => array( 'Sperren' ),
'Undelete' => array( 'Wiederherstellen' ),
'Import' => array( 'Importieren' ),
- 'Lockdb' => array( 'Datenbank_sperren' ),
- 'Unlockdb' => array( 'Datenbank_entsperren' ),
+ 'Lockdb' => array( 'Datenbank sperren' ),
+ 'Unlockdb' => array( 'Datenbank entsperren' ),
'Userrights' => array( 'Benutzerrechte' ),
'MIMEsearch' => array( 'MIME-Typ-Suche' ),
'FileDuplicateSearch' => array( 'Datei-Duplikat-Suche' ),
- 'Unwatchedpages' => array( 'Ignorierte_Seiten', 'Unbeobachtete_Seiten' ),
+ 'Unwatchedpages' => array( 'Ignorierte Seiten', 'Unbeobachtete Seiten' ),
'Listredirects' => array( 'Weiterleitungen' ),
'Revisiondelete' => array( 'Versionslöschung' ),
- 'Unusedtemplates' => array( 'Unbenutzte_Vorlagen' ),
- 'Randomredirect' => array( 'Zufällige_Weiterleitung' ),
- 'Mypage' => array( 'Meine_Benutzerseite' ),
- 'Mytalk' => array( 'Meine_Diskussionsseite' ),
- 'Mycontributions' => array( 'Meine_Beiträge' ),
+ 'Unusedtemplates' => array( 'Unbenutzte Vorlagen' ),
+ 'Randomredirect' => array( 'Zufällige Weiterleitung' ),
+ 'Mypage' => array( 'Meine Benutzerseite' ),
+ 'Mytalk' => array( 'Meine Diskussionsseite' ),
+ 'Mycontributions' => array( 'Meine Beiträge' ),
'Listadmins' => array( 'Administratoren' ),
'Listbots' => array( 'Bots' ),
- 'Popularpages' => array( 'Beliebteste_Seiten' ),
+ 'Popularpages' => array( 'Beliebteste Seiten' ),
'Search' => array( 'Suche' ),
- 'Resetpass' => array( 'Passwort_ändern', 'Passwort_zurücksetzen' ),
- 'Withoutinterwiki' => array( 'Fehlende_Interwikis' ),
- 'MergeHistory' => array( 'Versionsgeschichten_vereinen' ),
+ 'Resetpass' => array( 'Passwort ändern', 'Passwort zurücksetzen' ),
+ 'Withoutinterwiki' => array( 'Fehlende Interwikis' ),
+ 'MergeHistory' => array( 'Versionsgeschichten vereinen' ),
'Filepath' => array( 'Dateipfad' ),
- 'Invalidateemail' => array( 'E-Mail_nicht_bestaetigen' ),
- 'Blankpage' => array( 'Leerseite', 'Leere_Seite' ),
+ 'Invalidateemail' => array( 'E-Mail nicht bestaetigen', 'E-Mail nicht bestätigen' ),
+ 'Blankpage' => array( 'Leerseite', 'Leere Seite' ),
'LinkSearch' => array( 'Weblink-Suche' ),
'DeletedContributions' => array( 'Gelöschte Beiträge' ),
'Tags' => array( 'Markierungen' ),
+ 'Activeusers' => array( 'Aktive Benutzer' ),
);
$datePreferences = array(
@@ -211,7 +217,8 @@ $magicWords = array(
'toc' => array( '0', '__INHALTSVERZEICHNIS__', '__TOC__' ),
'noeditsection' => array( '0', '__ABSCHNITTE_NICHT_BEARBEITEN__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__KEINKOPF__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'JETZIGER_MONAT', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'JETZIGER_MONAT', 'JETZIGER_MONAT_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'JETZIGER_MONAT_1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'JETZIGER_MONATSNAME', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'JETZIGER_MONATSNAME_GENITIV', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'JETZIGER_MONATSNAME_KURZ', 'CURRENTMONTHABBREV' ),
@@ -221,7 +228,8 @@ $magicWords = array(
'currentyear' => array( '1', 'JETZIGES_JAHR', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'JETZIGE_UHRZEIT', 'CURRENTTIME' ),
'currenthour' => array( '1', 'JETZIGE_STUNDE', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'JETZIGER_KALENDERMONAT', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'LOKALER_MONAT', 'LOKALER_MONAT_2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALER_MONAT_1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'LOKALER_MONATSNAME', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'LOKALER_MONATSNAME_GENITIV', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'LOKALER_MONATSNAME_KURZ', 'LOCALMONTHABBREV' ),
@@ -277,8 +285,9 @@ $magicWords = array(
'ns' => array( '0', 'NR:', 'NS:' ),
'localurl' => array( '0', 'LOKALE_URL:', 'LOCALURL:' ),
'scriptpath' => array( '0', 'SKRIPTPFAD', 'SCRIPTPATH' ),
- 'grammar' => array( '0', 'GRAMMATIK', 'GRAMMAR:' ),
- 'gender' => array( '0', 'GESCHLECHT', 'GENDER:' ),
+ 'stylepath' => array( '0', 'STYLEPFAD', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GESCHLECHT:', 'GENDER:' ),
'currentweek' => array( '1', 'JETZIGE_KALENDERWOCHE', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'JETZIGER_WOCHENTAG_ZAHL', 'CURRENTDOW' ),
'localweek' => array( '1', 'LOKALE_KALENDERWOCHE', 'LOCALWEEK' ),
@@ -289,7 +298,7 @@ $magicWords = array(
'revisionmonth' => array( '1', 'REVISIONSMONAT', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'REVISIONSJAHR', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'REVISIONSZEITSTEMPEL', 'REVISIONTIMESTAMP' ),
- 'plural' => array( '0', 'PLURAL', 'PLURAL:' ),
+ 'revisionuser' => array( '1', 'REVISIONSBENUTZER', 'REVISIONUSER' ),
'fullurl' => array( '0', 'VOLLSTÄNDIGE_URL:', 'FULLURL:' ),
'lcfirst' => array( '0', 'INITIAL_KLEIN:', 'LCFIRST:' ),
'ucfirst' => array( '0', 'INITIAL_GROSS:', 'UCFIRST:' ),
@@ -297,7 +306,8 @@ $magicWords = array(
'uc' => array( '0', 'GROSS:', 'UC:' ),
'raw' => array( '0', 'ROH:', 'RAW:' ),
'displaytitle' => array( '1', 'SEITENTITEL', 'DISPLAYTITLE' ),
- 'newsectionlink' => array( '1', '__PLUS_LINK__', '__NEWSECTIONLINK__' ),
+ 'newsectionlink' => array( '1', '__NEUER_ABSCHNITTSLINK__', '__PLUS_LINK__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__KEIN_NEUER_ABSCHNITTSLINK__', '__KEIN_PLUS_LINK__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'JETZIGE_VERSION', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'URLENKODIERT:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'SPRUNGMARKEENKODIERT:', 'ANCHORENCODE' ),
@@ -314,7 +324,7 @@ $magicWords = array(
'special' => array( '0', 'spezial', 'special' ),
'defaultsort' => array( '1', 'SORTIERUNG:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'DATEIPFAD:', 'FILEPATH:' ),
- 'hiddencat' => array( '1', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ),
+ 'hiddencat' => array( '1', '__VERSTECKTE_KATEGORIE__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'SEITEN_IN_KATEGORIE', 'SEITEN_KAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'SEITENGRÖSSE', 'PAGESIZE' ),
'index' => array( '1', '__INDIZIEREN__', '__INDEX__' ),
@@ -322,6 +332,7 @@ $magicWords = array(
'numberingroup' => array( '1', 'BENUTZER_IN_GRUPPE', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__PERMANENTE_WEITERLEITUNG__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'SCHUTZSTATUS', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'DATUMSFORMAT', 'formatdate', 'dateformat' ),
);
$imageFiles = array(
@@ -345,7 +356,7 @@ $messages = array(
'tog-editsection' => 'Links zum Bearbeiten einzelner Abschnitte anzeigen',
'tog-editsectiononrightclick' => 'Einzelne Abschnitte per Rechtsklick bearbeiten (benötigt JavaScript)',
'tog-showtoc' => 'Anzeigen eines Inhaltsverzeichnisses bei Seiten mit mehr als drei Überschriften',
-'tog-rememberpassword' => 'auf diesem Computer dauerhaft angemeldet bleiben',
+'tog-rememberpassword' => 'Auf diesem Computer dauerhaft angemeldet bleiben',
'tog-editwidth' => 'Eingabefeld erweitern, um den ganzen Bildschirm auszufüllen',
'tog-watchcreations' => 'Selbst erstellte Seiten automatisch beobachten',
'tog-watchdefault' => 'Selbst geänderte Seiten automatisch beobachten',
@@ -360,6 +371,7 @@ $messages = array(
'tog-enotifminoredits' => 'Auch bei kleinen Änderungen an beobachteten Seiten E-Mails senden',
'tog-enotifrevealaddr' => 'Meine E-Mail-Adresse in Benachrichtigungs-E-Mails anzeigen',
'tog-shownumberswatching' => 'Anzahl der beobachtenden Benutzer anzeigen',
+'tog-oldsig' => 'Vorschau der aktuellen Signatur:',
'tog-fancysig' => 'Signatur als Wikitext behandeln (ohne automatische Verlinkung)',
'tog-externaleditor' => 'Externen Editor als Standard benutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer)',
'tog-externaldiff' => 'Externes Programm für Versionsunterschiede als Standard benutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer)',
@@ -383,6 +395,13 @@ $messages = array(
'underline-never' => 'nie',
'underline-default' => 'abhängig von Browsereinstellung',
+# Font style option in Special:Preferences
+'editfont-style' => 'Schriftfamilie für den Text im Bearbeitungsfenster:',
+'editfont-default' => 'Browserstandard',
+'editfont-monospace' => 'Schrift mit fester Zeichenbreite',
+'editfont-sansserif' => 'Serifenlose Groteskschrift',
+'editfont-serif' => 'Schrift mit Serifen',
+
# Dates
'sunday' => 'Sonntag',
'monday' => 'Montag',
@@ -442,7 +461,7 @@ $messages = array(
'category-media-header' => 'Medien in der Kategorie „$1“',
'category-empty' => "''Diese Kategorie enthält zurzeit keine Seiten oder Medien.''",
'hidden-categories' => '{{PLURAL:$1|Versteckte Kategorie|Versteckte Kategorien}}',
-'hidden-category-category' => 'Versteckte Kategorien', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Versteckte Kategorien',
'category-subcat-count' => '{{PLURAL:$2|Diese Kategorie enthält folgende Unterkategorie:|{{PLURAL:$1|Folgende Unterkategorie ist eine von insgesamt $2 Unterkategorien in dieser Kategorie:|Es werden $1 von insgesamt $2 Unterkategorien in dieser Kategorie angezeigt:}}}}',
'category-subcat-count-limited' => 'Diese Kategorie enthält folgende {{PLURAL:$1|Unterkategorie|$1 Unterkategorien}}:',
'category-article-count' => '{{PLURAL:$2|Diese Kategorie enthält folgende Seite:|{{PLURAL:$1|Folgende Seite ist eine von insgesamt $2 Seiten in dieser Kategorie:|Es werden $1 von insgesamt $2 Seiten in dieser Kategorie angezeigt:}}}}',
@@ -450,6 +469,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Diese Kategorie enthält folgende Datei:|{{PLURAL:$1|Folgende Datei ist eine von insgesamt $2 Dateien in dieser Kategorie:|Es werden $1 von insgesamt $2 Dateien in dieser Kategorie angezeigt:}}}}',
'category-file-count-limited' => 'Folgende {{PLURAL:$1|Datei ist|$1 Dateien sind}} in dieser Kategorie enthalten:',
'listingcontinuesabbrev' => '(Fortsetzung)',
+'index-category' => 'Indizierte Seiten',
+'noindex-category' => 'Nichtindizierte Seiten',
'mainpagetext' => "'''MediaWiki wurde erfolgreich installiert.'''",
'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
@@ -460,10 +481,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
-'about' => 'Über',
-'article' => 'Seite',
-'newwindow' => '(wird in einem neuen Fenster geöffnet)',
-'cancel' => 'Abbrechen',
+'about' => 'Über',
+'article' => 'Seite',
+'newwindow' => '(wird in einem neuen Fenster geöffnet)',
+'cancel' => 'Abbrechen',
+'moredotdotdot' => 'Mehr …',
+'mypage' => 'Eigene Seite',
+'mytalk' => 'Eigene Diskussion',
+'anontalk' => 'Diskussionsseite dieser IP',
+'navigation' => 'Navigation',
+'and' => '&#32;und',
+
+# Cologne Blue skin
'qbfind' => 'Finden',
'qbbrowse' => 'Blättern',
'qbedit' => 'Bearbeiten',
@@ -471,15 +500,35 @@ $messages = array(
'qbpageinfo' => 'Seitendaten',
'qbmyoptions' => 'Meine Seiten',
'qbspecialpages' => 'Spezialseiten',
-'moredotdotdot' => 'Mehr …',
-'mypage' => 'Eigene Seite',
-'mytalk' => 'Eigene Diskussion',
-'anontalk' => 'Diskussionsseite dieser IP',
-'navigation' => 'Navigation',
-'and' => '&#32;und',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaten:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Abschnitt hinzufügen',
+'vector-action-delete' => 'Löschen',
+'vector-action-move' => 'Verschieben',
+'vector-action-protect' => 'Schützen',
+'vector-action-undelete' => 'Wiederherstellen',
+'vector-action-unprotect' => 'Freigeben',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hilfeseite',
+'vector-namespace-image' => 'Datei',
+'vector-namespace-main' => 'Seite',
+'vector-namespace-media' => 'Medienseite',
+'vector-namespace-mediawiki' => 'MediaWiki-Systemnachricht',
+'vector-namespace-project' => 'Projektseite',
+'vector-namespace-special' => 'Spezialseite',
+'vector-namespace-talk' => 'Diskussion',
+'vector-namespace-template' => 'Vorlage',
+'vector-namespace-user' => 'Benutzerseite',
+'vector-view-create' => 'Erstellen',
+'vector-view-edit' => 'Bearbeiten',
+'vector-view-history' => 'Versionsgeschichte',
+'vector-view-view' => 'Lesen',
+'vector-view-viewsource' => 'Quelltext anzeigen',
+'actions' => 'Aktionen',
+'namespaces' => 'Namensräume',
+'variants' => 'Varianten',
'errorpagetitle' => 'Fehler',
'returnto' => 'Zurück zur Seite $1.',
@@ -529,18 +578,22 @@ $messages = array(
'otherlanguages' => 'In anderen Sprachen',
'redirectedfrom' => '(Weitergeleitet von $1)',
'redirectpagesub' => 'Weiterleitung',
-'lastmodifiedat' => 'Diese Seite wurde zuletzt am $1 um $2 Uhr geändert.', # $1 date, $2 time
+'lastmodifiedat' => 'Diese Seite wurde zuletzt am $1 um $2 Uhr geändert.',
'viewcount' => 'Diese Seite wurde bisher {{PLURAL:$1|einmal|$1-mal}} abgerufen.',
'protectedpage' => 'Geschützte Seite',
'jumpto' => 'Wechseln zu:',
'jumptonavigation' => 'Navigation',
'jumptosearch' => 'Suche',
+'view-pool-error' => 'Entschuldigung, die Server sind im Moment überlastet.
+Zu viele Benutzer versuchen, diese Seite zu besuchen.
+Bitte warte einige Minuten, bevor du es noch einmal versuchst.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Über {{SITENAME}}',
'aboutpage' => 'Project:Über',
'copyright' => 'Inhalt ist verfügbar unter der $1.',
-'copyrightpagename' => '{{SITENAME}} Urheberrecht',
'copyrightpage' => '{{ns:project}}:Urheberrechte',
'currentevents' => 'Aktuelle Ereignisse',
'currentevents-url' => 'Project:Aktuelle Ereignisse',
@@ -548,8 +601,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Bearbeitungshilfe',
'edithelppage' => 'Help:Bearbeiten',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Inhaltsverzeichnis',
'mainpage' => 'Hauptseite',
'mainpage-description' => 'Hauptseite',
@@ -629,10 +680,6 @@ Die Datenbank meldete den Fehler „<tt>$3: $4</tt>“.',
'dberrortextcl' => 'Es gab einen Syntaxfehler in der Datenbankabfrage.
Die letzte Datenbankabfrage lautete: „$1“ aus der Funktion „<tt>$2</tt>“.
Die Datenbank meldete den Fehler: „<tt>$3: $4</tt>“.',
-'noconnect' => 'Im Wiki sind technische Schwierigkeiten aufgetreten; es konnte keine Verbindung zur Datenbank hergestellt werden.<br />
-$1',
-'nodb' => 'Konnte Datenbank $1 nicht auswählen',
-'cachederror' => 'Das Folgende ist eine Kopie aus dem Cache und möglicherweise nicht aktuell.',
'laggedslavemode' => "'''Achtung:''' Die angezeigte Seite könnte unter Umständen nicht die letzten Bearbeitungen enthalten.",
'readonly' => 'Datenbank gesperrt',
'enterlockreason' => 'Bitte gib einen Grund ein, warum die Datenbank gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung',
@@ -649,6 +696,8 @@ Falls dies nicht zutrifft, hast du eventuell einen Fehler in der Software gefun
'readonly_lag' => 'Die Datenbank wurde automatisch für Schreibzugriffe gesperrt, damit sich die verteilten Datenbankserver (slaves) mit dem Hauptdatenbankserver (master) abgleichen können.',
'internalerror' => 'Interner Fehler',
'internalerror_info' => 'Interner Fehler: $1',
+'fileappenderrorread' => '„$1“ konnte während des Hinzufügens nicht gelesen werden.',
+'fileappenderror' => 'Konnte „$1“ nicht an „$2“ anhängen.',
'filecopyerror' => 'Die Datei „$1“ konnte nicht nach „$2“ kopiert werden.',
'filerenameerror' => 'Die Datei „$1“ konnte nicht nach „$2“ umbenannt werden.',
'filedeleteerror' => 'Die Datei „$1“ konnte nicht gelöscht werden.',
@@ -658,7 +707,8 @@ Falls dies nicht zutrifft, hast du eventuell einen Fehler in der Software gefun
'unexpected' => 'Unerwarteter Wert: „$1“ = „$2“',
'formerror' => 'Fehler: Die Eingaben konnten nicht verarbeitet werden.',
'badarticleerror' => 'Diese Aktion kann auf diese Seite nicht angewendet werden.',
-'cannotdelete' => 'Die gewählte Seite kann nicht gelöscht werden. Möglicherweise wurde sie bereits entfernt.',
+'cannotdelete' => 'Die Seite oder Datei „$1“ kann nicht gelöscht werden.
+Möglicherweise wurde sie bereits von jemand anders gelöscht.',
'badtitle' => 'Ungültiger Titel',
'badtitletext' => 'Der Titel der angeforderten Seite ist ungültig, leer oder ein ungültiger Sprachlink von einem anderen Wiki.',
'perfcached' => 'Die folgenden Daten stammen aus dem Cache und sind möglicherweise nicht aktuell:',
@@ -693,7 +743,6 @@ Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerich
'virus-unknownscanner' => 'Unbekannter Virenscanner:',
# Login and logout pages
-'logouttitle' => 'Benutzer-Abmeldung',
'logouttext' => "'''Du bist nun abgemeldet.'''
Du kannst {{SITENAME}} jetzt anonym weiternutzen, oder dich erneut unter demselben oder einem anderen Benutzernamen [[Special:UserLogin|anmelden]].
@@ -702,7 +751,6 @@ Beachte, dass einige Seiten noch anzeigen können, dass du angemeldet bist, sola
Dein Benutzerkonto wurde eingerichtet.
Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupassen.',
-'loginpagetitle' => 'Benutzer-Anmeldung',
'yourname' => 'Benutzername:',
'yourpassword' => 'Passwort:',
'yourpasswordagain' => 'Passwort wiederholen:',
@@ -713,6 +761,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupass
'nav-login-createaccount' => 'Anmelden / Benutzerkonto erstellen',
'loginprompt' => 'Zur Anmeldung müssen Cookies aktiviert sein.',
'userlogin' => 'Anmelden / Benutzerkonto erstellen',
+'userloginnocreate' => 'Anmelden',
'logout' => 'Abmelden',
'userlogout' => 'Abmelden',
'notloggedin' => 'Nicht angemeldet',
@@ -724,27 +773,8 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupass
'createaccountmail' => 'per E-Mail',
'badretype' => 'Die beiden Passwörter stimmen nicht überein.',
'userexists' => 'Dieser Benutzername ist schon vergeben. Bitte wähle einen anderen.',
-'youremail' => 'E-Mail-Adresse:',
-'username' => 'Benutzername:',
-'uid' => 'Benutzer-ID:',
-'prefs-memberingroups' => 'Mitglied der {{PLURAL:$1|Benutzergruppe|Benutzergruppen}}:',
-'yourrealname' => 'Bürgerlicher Name:',
-'yourlanguage' => 'Sprache der Benutzeroberfläche:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Unterschrift:',
-'badsig' => 'Die Syntax der Unterschrift ist ungültig; bitte HTML überprüfen.',
-'badsiglength' => 'Die Signatur darf maximal $1 {{PLURAL:$1|Zeichen|Zeichen}} lang sein.',
-'yourgender' => 'Geschlecht:',
-'gender-unknown' => 'Nicht angegeben',
-'gender-male' => 'Männlich',
-'gender-female' => 'Weiblich',
-'prefs-help-gender' => 'Optional: Wird von der Software für die geschlechtsspezifische Anrede genutzt. Diese Information ist öffentlich.',
-'email' => 'E-Mail',
-'prefs-help-realname' => 'Optional. Damit kann dein bürgerlicher Name deinen Beiträgen zugeordnet werden.',
'loginerror' => 'Fehler bei der Anmeldung',
-'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn du dein Passwort vergessen hast.
-Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.',
-'prefs-help-email-required' => 'Es wird eine gültige E-Mail-Adresse benötigt.',
+'createaccounterror' => 'Benutzerkonto konnte nicht erstellt werden: $1',
'nocookiesnew' => 'Der Benutzerzugang wurde erstellt, aber du bist nicht angemeldet. {{SITENAME}} benötigt für diese Funktion Cookies, bitte aktiviere diese und melde dich dann mit deinem neuen Benutzernamen und dem zugehörigen Passwort an.',
'nocookieslogin' => '{{SITENAME}} benutzt Cookies zur Anmeldung der Benutzer. Du hast Cookies deaktiviert, bitte aktiviere diese und versuche es erneut.',
'noname' => 'Du musst einen gültigen Benutzernamen angeben.',
@@ -754,9 +784,11 @@ Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt
Überprüfe die Schreibweise (Groß-/Kleinschreibung beachten) oder [[Special:UserLogin/signup|melde dich als neuer Benutzer an]].',
'nosuchusershort' => 'Der Benutzername „<nowiki>$1</nowiki>“ existiert nicht. Bitte überprüfe die Schreibweise.',
'nouserspecified' => 'Bitte gib einen Benutzernamen an.',
+'login-userblocked' => '{{GENDER:$1|Dieser Benutzer|Dieser Benutzerin|Dieser Benutzer}} ist gesperrt. Anmeldung nicht erlaubt.',
'wrongpassword' => 'Das Passwort ist falsch. Bitte versuche es erneut.',
'wrongpasswordempty' => 'Es wurde kein Passwort eingegeben. Bitte versuche es erneut.',
-'passwordtooshort' => 'Fehler bei der Wahl des Passwortes: Es muss mindestens {{PLURAL:$1|1 Zeichen|$1 Zeichen}} lang sein und darf nicht mit dem Benutzernamen identisch sein.',
+'passwordtooshort' => 'Passwörter müssen mindestens {{PLURAL:$1|1 Zeichen|$1 Zeichen}} lang sein.',
+'password-name-match' => 'Dein Passwort muss sich von deinem Benutzernamen unterscheiden.',
'mailmypassword' => 'Neues Passwort zusenden',
'passwordremindertitle' => 'Neues Passwort für ein {{SITENAME}}-Benutzerkonto',
'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.
@@ -768,6 +800,7 @@ Das neue Passwort ist {{PLURAL:$5|1 Tag|$5 Tage}} gültig.
Bitte ignoriere diese E-Mail, falls du sie nicht selbst angefordert hast. Das alte Passwort bleibt weiterhin gültig.',
'noemail' => '{{GENDER:$1|Benutzer|Benutzerin|Benutzer}} „$1“ hat keine E-Mail-Adresse angegeben.',
+'noemailcreate' => 'Du musst eine gültige E-Mail-Adresse angeben',
'passwordsent' => 'Ein neues, temporäres Passwort wurde an die E-Mail-Adresse von Benutzer „$1“ gesandt.
Bitte melde dich damit an, sobald du es erhalten hast. Das alte Passwort bleibt weiterhin gültig.',
'blocked-mailpassword' => 'Die von dir verwendete IP-Adresse ist für das Ändern von Seiten gesperrt. Um einen Missbrauch zu verhindern, wurde die Möglichkeit zur Anforderung eines neuen Passwortes ebenfalls gesperrt.',
@@ -790,9 +823,11 @@ Besucher, die diese IP-Adresse verwenden, können momentan keine Benutzerkonten
'createaccount-text' => 'Es wurde für dich ein Benutzerkonto „$2“ auf {{SITENAME}} ($4) erstellt. Das automatisch generierte Passwort für „$2“ ist „$3“. Du solltest dich nun anmelden und das Passwort ändern.
Falls das Benutzerkonto irrtümlich angelegt wurde, kannst du diese Nachricht ignorieren.',
+'usernamehasherror' => 'Benutzernamen dürfen kein Rautenzeichen enthalten',
'login-throttled' => 'Du hast zu oft versucht, dich anzumelden.
Bitte warte, bevor du es erneut probierst.',
'loginlanguagelabel' => 'Sprache: $1',
+'suspicious-userlogout' => 'Deine Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.',
# Password reset dialog
'resetpass' => 'Passwort ändern',
@@ -804,17 +839,13 @@ Bitte warte, bevor du es erneut probierst.',
'retypenew' => 'Neues Passwort (nochmal):',
'resetpass_submit' => 'Passwort übermitteln und anmelden',
'resetpass_success' => 'Dein Passwort wurde erfolgreich geändert. Es folgt die Anmeldung …',
-'resetpass_bad_temporary' => 'Ungültiges vorläufiges Passwort. Du hast bereits dein Passwort erfolgreich geändert oder ein neues, vorläufiges Passwort angefordert.',
'resetpass_forbidden' => 'Das Passwort kann nicht geändert werden.',
'resetpass-no-info' => 'Du musst dich anmelden, um auf diese Seite direkt zuzugreifen.',
'resetpass-submit-loggedin' => 'Passwort ändern',
+'resetpass-submit-cancel' => 'Abbrechen',
'resetpass-wrong-oldpass' => 'Ungültiges temporäres oder aktuelles Passwort.
Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
'resetpass-temp-password' => 'Temporäres Passwort:',
-'resetpass-log' => 'Passwortzurücksetzungs-Logbuch',
-'resetpass-logtext' => 'Unten wird ein Logbuch von Benutzern angezeigt, deren Passwort durch einen Administrator zurückgesetzt wurde.',
-'resetpass-logentry' => 'änderte das Passwort für $1',
-'resetpass-comment' => 'Grund für das Zurücksetzen:',
# Edit page toolbar
'bold_sample' => 'Fetter Text',
@@ -888,7 +919,6 @@ Bitte füge alle Informationen jeder Anfrage hinzu, die du stellt.",
'blockededitsource' => "Der Quelltext '''deiner Änderungen''' an '''$1''':",
'whitelistedittitle' => 'Zum Bearbeiten ist es erforderlich, angemeldet zu sein',
'whitelistedittext' => 'Du musst dich $1, um Seiten bearbeiten zu können.',
-'confirmedittitle' => 'Zum Bearbeiten ist die E-Mail-Bestätigung erforderlich.',
'confirmedittext' => 'Du musst deine E-Mail-Adresse erst bestätigen, bevor du Bearbeitungen durchführen kannst. Bitte ergänze und bestätige Deine E-Mail in den [[Special:Preferences|Einstellungen]].',
'nosuchsectiontitle' => 'Abschnitt nicht gefunden',
'nosuchsectiontext' => 'Du hast versucht, einen Abschnitt zu bearbeiten, der nicht existiert.
@@ -908,9 +938,16 @@ Bist du fälschlicherweise hier, klicke die '''Zurück'''-Schaltfläche deines B
'noarticletext' => 'Diese Seite enthält momentan noch keinen Text.
Du kannst diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]],
<span class="plainlinks">in den zugehörigen [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen] oder diese Seite [{{fullurl:{{FULLPAGENAME}}|action=edit}} bearbeiten]</span>.',
+'noarticletext-nopermission' => 'Diese Seite enthält momentan noch keinen Text.
+Du kannst diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]]
+oder in den zugehörigen <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen].</span>',
'userpage-userdoesnotexist' => 'Das Benutzerkonto „$1“ ist nicht vorhanden. Bitte prüfe, ob du diese Seite wirklich erstellen/bearbeiten willst.',
+'userpage-userdoesnotexist-view' => 'Benutzerkonto „$1“ existiert nicht.',
+'blocked-notice-logextract' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} ist zurzeit gesperrt.
+Zur Information folgt ein aktueller Auszug aus dem Benutzersperr-Logbuch:',
'clearyourcache' => "'''Hinweis - Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können:''' '''Mozilla/Firefox/Safari:''' ''Shift'' gedrückt halten und auf ''Aktualisieren'' klicken oder alternativ entweder ''Strg-F5'' oder ''Strg-R'' (''Befehlstaste-R'' auf dem Macintosh) drücken; '''Konqueror: '''Auf ''Aktualisieren'' klicken oder ''F5'' drücken; '''Opera:''' Cache unter ''Extras → Einstellungen'' leeren; '''Internet Explorer:''' ''Strg-F5'' drücken oder ''Strg'' gedrückt halten und dabei ''Aktualisieren'' anklicken.",
-'usercssjsyoucanpreview' => "'''Tipp:''' Benutze den Vorschau-Button, um dein neues CSS/JS vor dem Speichern zu testen.",
+'usercssyoucanpreview' => "'''Tipp:''' Benutze den „{{int:showpreview}}“-Button, um dein neues CSS vor dem Speichern zu testen.",
+'userjsyoucanpreview' => "'''Tipp:''' Benutze den „{{int:showpreview}}“-Button, um dein neues JavaScript vor dem Speichern zu testen.",
'usercsspreview' => "== Vorschau deines Benutzer-CSS ==
'''Beachte:''' Nach dem Speichern musst du deinen Browser anweisen, die neue Version zu laden: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
'userjspreview' => "== Vorschau deines Benutzer-JavaScript ==
@@ -960,13 +997,13 @@ Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder di
Sichere den Text bitte lokal auf deinem Computer und versuche zu einem späteren Zeitpunkt, die Änderungen zu übertragen.'''
Grund für die Sperre: $1",
-'protectedpagewarning' => "'''ACHTUNG: Diese Seite wurde gesperrt. Nur Benutzer mit Administratorrechten können die Seite bearbeiten.'''",
-'semiprotectedpagewarning' => "'''Halbsperrung:''' Die Seite wurde so gesperrt, dass nur registrierte Benutzer diese ändern können.",
+'protectedpagewarning' => "'''ACHTUNG: Diese Seite wurde gesperrt. Nur Benutzer mit Administratorrechten können die Seite bearbeiten.''' Zur Information folgt der aktuelle Logbucheintrag:",
+'semiprotectedpagewarning' => "'''Halbsperrung:''' Die Seite wurde so gesperrt, dass nur registrierte Benutzer diese ändern können. Zur Information folgt der aktuelle Logbucheintrag:",
'cascadeprotectedwarning' => "'''ACHTUNG: Diese Seite wurde gesperrt, so dass sie nur durch Benutzer mit Administratorrechten bearbeitet werden kann. Sie ist in die {{PLURAL:$1|folgende Seite|folgenden Seiten}} eingebunden, die mittels der Kaskadensperroption geschützt {{PLURAL:$1|ist|sind}}:'''",
-'titleprotectedwarning' => "'''ACHTUNG: Die Seitenerstellung wurde gesperrt. Nur Benutzer mit [[Special:ListGroupRights|speziellen Rechten]] können die Seite erstellen.'''",
-'templatesused' => 'Folgende Vorlagen werden von dieser Seite verwendet:',
-'templatesusedpreview' => 'Folgende Vorlagen werden von dieser Seitenvorschau verwendet:',
-'templatesusedsection' => 'Folgende Vorlagen werden von diesem Abschnitt verwendet:',
+'titleprotectedwarning' => "'''ACHTUNG: Die Seitenerstellung wurde gesperrt. Nur Benutzer mit [[Special:ListGroupRights|speziellen Rechten]] können die Seite erstellen.''' Zur Information folgt der aktuelle Logbucheintrag:",
+'templatesused' => '{{PLURAL:$1|Die folgende Vorlage wird|Folgende Vorlagen werden}} von dieser Seite verwendet:',
+'templatesusedpreview' => '{{PLURAL:$1|Die folgende Vorlage wird|Folgende Vorlagen werden}} von dieser Seitenvorschau verwendet:',
+'templatesusedsection' => '{{PLURAL:$1|Die folgende Vorlage wird|Folgende Vorlagen werden}} von diesem Abschnitt verwendet:',
'template-protected' => '(schreibgeschützt)',
'template-semiprotected' => '(schreibgeschützt für unangemeldete und neue Benutzer)',
'hiddencategories' => 'Diese Seite ist Mitglied von {{PLURAL:$1|1 versteckter Kategorie|$1 versteckten Kategorien}}:',
@@ -974,16 +1011,18 @@ Grund für die Sperre: $1",
'nocreatetitle' => 'Die Erstellung neuer Seiten ist eingeschränkt.',
'nocreatetext' => 'Auf {{SITENAME}} wurde das Erstellen neuer Seiten eingeschränkt. Du kannst bestehende Seiten ändern oder dich [[Special:UserLogin|anmelden]].',
'nocreate-loggedin' => 'Du hast keine Berechtigung, neue Seiten zu erstellen.',
+'sectioneditnotsupported-title' => 'Die Bearbeitung von Abschnitten wird nicht unterstützt',
+'sectioneditnotsupported-text' => 'Die Bearbeitung von Abschnitten wird auf dieser Bearbeitungsseite nicht unterstützt.',
'permissionserrors' => 'Berechtigungsfehler',
'permissionserrorstext' => 'Du bist nicht berechtigt, die Aktion auszuführen. {{PLURAL:$1|Grund|Gründe}}:',
'permissionserrorstext-withaction' => 'Du bist nicht berechtigt, $2.
{{PLURAL:$1|Grund|Gründe}}:',
-'recreate-deleted-warn' => "'''Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.'''
+'recreate-moveddeleted-warn' => "'''Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.'''
Bitte prüfe sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.
-Zu deiner Information folgt das Lösch-Logbuch mit der Begründung für die vorhergehende Löschung:",
-'deleted-notice' => 'Diese Seite wurde gelöscht. Es folgt ein Auszug aus dem Lösch-Logbuch für diese Seite.',
-'deletelog-fulllog' => 'Vollständiges Lösch-Logbuch',
+Zu deiner Information folgt das Lösch- und Verschiebungs-Logbuch mit der Begründung für die vorhergehende Löschung:",
+'moveddeleted-notice' => 'Diese Seite wurde gelöscht. Es folgt ein Auszug aus dem Lösch- und Verschiebungs-Logbuch für diese Seite.',
+'log-fulllog' => 'Alle Logbucheinträge ansehen',
'edit-hook-aborted' => 'Die Bearbeitung wurde ohne Erklärung durch eine Schnittstelle abgebrochen.',
'edit-gone-missing' => 'Die Seite konnt nicht aktualisiert werden.
Sie wurde anscheinend gelöscht.',
@@ -1002,6 +1041,7 @@ Es {{PLURAL:$2|darf nicht mehr als 1 Aufruf|dürfen nicht mehr als $1 Aufrufe}}
'post-expand-template-argument-category' => 'Seiten, die ignorierte Vorlagenargumente enthalten',
'parser-template-loop-warning' => 'Vorlagenschleife entdeckt: [[$1]]',
'parser-template-recursion-depth-warning' => 'Vorlagenrekursionstiefengrenze überschritten ($1)',
+'language-converter-depth-warning' => 'Sprachkonvertertiefenlimit überschritten ($1)',
# "Undo" feature
'undo-success' => 'Die Bearbeitung kann rückgängig gemacht werden.
@@ -1020,9 +1060,9 @@ Grund der Sperre: ''$2''",
'viewpagelogs' => 'Logbücher für diese Seite anzeigen',
'nohistory' => 'Es gibt keine Versionsgeschichte für diese Seite.',
'currentrev' => 'Aktuelle Version',
-'currentrev-asof' => 'Aktuelle Version vom $1',
-'revisionasof' => 'Version vom $1',
-'revision-info' => 'Version vom $1 bei $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Aktuelle Version vom $2, $3 Uhr',
+'revisionasof' => 'Version vom $2, $3 Uhr',
+'revision-info' => 'Version vom $4, $5 Uhr von $2',
'previousrevision' => '← Nächstältere Version',
'nextrevision' => 'Nächstjüngere Version →',
'currentrevisionlink' => 'Aktuelle Version',
@@ -1035,7 +1075,7 @@ Grund der Sperre: ''$2''",
* ({{int:cur}}) = Unterschied zur aktuellen Version, ({{int:last}}) = Unterschied zur vorherigen Version
* Uhrzeit/Datum = Version zu dieser Zeit, Benutzername/IP-Adresse des Bearbeiters, {{int:minoreditletter}} = Kleine Änderung',
'history-fieldset-title' => 'Suche in der Versionsgeschichte',
-'deletedrev' => '[gelöscht]',
+'history-show-deleted' => 'nur gelöschte Versionen',
'histfirst' => 'Älteste',
'histlast' => 'Neueste',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
@@ -1044,69 +1084,112 @@ Grund der Sperre: ''$2''",
# Revision feed
'history-feed-title' => 'Versionsgeschichte',
'history-feed-description' => 'Versionsgeschichte für diese Seite in {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 um $2', # user at time
+'history-feed-item-nocomment' => '$1 am $3 um $4 Uhr',
'history-feed-empty' => 'Die angeforderte Seite existiert nicht. Vielleicht wurde sie gelöscht oder verschoben. [[Special:Search|Durchsuche]] {{SITENAME}} für passende neue Seiten.',
# Revision deletion
-'rev-deleted-comment' => '(Bearbeitungskommentar entfernt)',
-'rev-deleted-user' => '(Benutzername entfernt)',
-'rev-deleted-event' => '(Logbuchaktion entfernt)',
-'rev-deleted-text-permission' => "Diese Version wurde '''gelöscht'''.
-Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
-'rev-deleted-text-view' => "Diese Version wurde '''gelöscht'''.
+'rev-deleted-comment' => '(Bearbeitungskommentar entfernt)',
+'rev-deleted-user' => '(Benutzername entfernt)',
+'rev-deleted-event' => '(Logbuchaktion entfernt)',
+'rev-deleted-user-contribs' => '[Benutzername oder IP-Adresse entfernt – Bearbeitung aus Beiträgen versteckt]',
+'rev-deleted-text-permission' => "Diese Version wurde '''gelöscht'''.
+Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-deleted-text-unhide' => "Diese Version wurde '''gelöscht'''.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
+Als Administrator kannst du [$1 diese Version einsehen].",
+'rev-suppressed-text-unhide' => "Diese Version wurde '''unterdrückt'''.
+Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].
+Als Administrator kannst du [$1 diese Version einsehen].",
+'rev-deleted-text-view' => "Diese Version wurde '''gelöscht'''.
Als Administrator kannst du sie weiterhin einsehen.
-Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
-'rev-deleted-no-diff' => "Du kannst diesen Unterschied nicht betrachten, da eine der Versionen '''gelöscht''' wurde.
-Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
-'rev-deleted-unhide-diff' => "Eine der Versionen dieses Unterschieds wurde '''gelöscht'''.
-Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
-Einem Administrator kannst du [$1 diesen Link zum Versionsunterschied] nennen.",
-'rev-delundel' => 'zeige/verstecke',
-'revisiondelete' => 'Versionen löschen/wiederherstellen',
-'revdelete-nooldid-title' => 'Keine Version angegeben',
-'revdelete-nooldid-text' => 'Du hast entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder du versuchst, die aktuelle Version zu entfernen.',
-'revdelete-nologtype-title' => 'Kein Logtyp angegeben',
-'revdelete-nologtype-text' => 'Es wurde kein Logtyp für diese Aktion angegeben.',
-'revdelete-toomanytargets-title' => 'Zu viele Ziele',
-'revdelete-toomanytargets-text' => 'Es wurden zu viele Logtypen für diese Aktion angegeben.',
-'revdelete-nologid-title' => 'Ungültiger Logeintrag',
-'revdelete-nologid-text' => 'Es wurde kein Logtyp ausgewählt oder der gewählte Logtyp existiert nicht.',
-'revdelete-selected' => "'''{{PLURAL:$2|Gewählte Version|Gewählte Versionen}} von [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Gewählter Logbucheintrag|Gewählte Logbucheinträge}}:'''",
-'revdelete-text' => "'''Gelöschte Versionen und Aktionen verbleiben in der Versionsgeschichte und den Logbüchern, jedoch sind Teile davon für die Öffentlichkeit unzugänglich.'''
-
-Andere Administratoren auf {{SITENAME}} haben Zugriff auf den versteckten Inhalt und können ihn mit der gleichen Seite wiederherstellen, sofern nicht zusätzliche Einschränkungen bestehen.
-Bitte bestätige, dass du beabsichtigst, dies zu tun, die Konsequenzen verstehst und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tust.",
-'revdelete-suppress-text' => "Unterdrückungen sollten '''nur''' in den folgenden Fällen vorgenommen werden:
+Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-suppressed-text-view' => "Diese Version wurde '''unterdrückt'''.
+Administratoren können sie einsehen; Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].",
+'rev-deleted-no-diff' => "Du kannst diesen Unterschied nicht betrachten, da eine der Versionen '''gelöscht''' wurde.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-suppressed-no-diff' => "Du kannst diesen Versionsunterschied nicht betrachten, da eine der Versionen '''gelöscht''' wurde.",
+'rev-deleted-unhide-diff' => "Eine der Versionen dieses Unterschieds wurde '''gelöscht'''.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
+Als Administrator kannst du [$1 diese Version einsehen].",
+'rev-suppressed-unhide-diff' => "Eine der Versionen dieses Unterschieds wurde '''unterdrückt'''.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].
+Als Administrator kannst du [$1 diese Version einsehen].",
+'rev-deleted-diff-view' => "Eine Version dieses Versionsunterschiedes wurde '''gelöscht'''.
+Als Administrator kannst du diesen Versionsunterschied sehen. Details finden sich im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-suppressed-diff-view' => "Eine der Versionen dieses Versionsunterschiedes wurde '''unterdrückt'''.
+Als Administrator kannst du diesen Versionsunterschied sehen. Details finden sich im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].",
+'rev-delundel' => 'zeige/verstecke',
+'rev-showdeleted' => 'zeige',
+'revisiondelete' => 'Versionen löschen/wiederherstellen',
+'revdelete-nooldid-title' => 'Keine Version angegeben',
+'revdelete-nooldid-text' => 'Du hast entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder du versuchst, die aktuelle Version zu entfernen.',
+'revdelete-nologtype-title' => 'Kein Logtyp angegeben',
+'revdelete-nologtype-text' => 'Es wurde kein Logtyp für diese Aktion angegeben.',
+'revdelete-nologid-title' => 'Ungültiger Logeintrag',
+'revdelete-nologid-text' => 'Es wurde kein Logtyp ausgewählt oder der gewählte Logtyp existiert nicht.',
+'revdelete-no-file' => 'Die angegebene Datei existiert nicht.',
+'revdelete-show-file-confirm' => 'Bist du sicher, dass du die gelöschte Version der Datei „<nowiki>$1</nowiki>“ vom $2 um $3 Uhr ansehen willst?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Gewählte Version|Gewählte Versionen}} von [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Gewählter Logbucheintrag|Gewählte Logbucheinträge}}:'''",
+'revdelete-text' => "'''Gelöschte Versionen und Aktionen verbleiben in der Versionsgeschichte und den Logbüchern, jedoch sind Teile davon für die Öffentlichkeit unzugänglich.'''
+Andere Administratoren auf {{SITENAME}} haben Zugriff auf den versteckten Inhalt und können ihn mit der gleichen Seite wiederherstellen, sofern nicht zusätzliche Einschränkungen bestehen.",
+'revdelete-confirm' => 'Bitte bestätige, dass du beabsichtigst, dies zu tun, die Konsequenzen verstehst und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tust.',
+'revdelete-suppress-text' => "Unterdrückungen sollten '''nur''' in den folgenden Fällen vorgenommen werden:
* Unangebrachte persönliche Informationen
*: ''Adressen, Telefonnummern, Sozialversicherungsnummern etc.''",
-'revdelete-legend' => 'Setzen der Sichtbarkeits-Einschränkungen',
-'revdelete-hide-text' => 'Text der Version verstecken',
-'revdelete-hide-name' => 'Logbuch-Aktion verstecken',
-'revdelete-hide-comment' => 'Bearbeitungskommentar verstecken',
-'revdelete-hide-user' => 'Benutzername/IP-Adresse des Bearbeiters verstecken',
-'revdelete-hide-restricted' => 'Daten auch vor Administratoren und anderen unterdrücken',
-'revdelete-suppress' => 'Grund der Löschung auch vor Administratoren verstecken',
-'revdelete-hide-image' => 'Dateiinhalt verstecken',
-'revdelete-unsuppress' => 'Einschränkungen für wiederhergestellte Versionen aufheben',
-'revdelete-log' => 'Grund:',
-'revdelete-submit' => 'Auf ausgewählte Version anwenden',
-'revdelete-logentry' => 'hat die Versionsansicht von „[[$1]]“ geändert',
-'logdelete-logentry' => 'hat die Sichtbarkeit von „[[$1]]“ geändert',
-'revdelete-success' => "'''Die Versionsansicht wurde aktualisiert.'''",
-'logdelete-success' => "'''Logbuchansicht erfolgreich geändert.'''",
-'revdel-restore' => 'Sichtbarkeit ändern',
-'pagehist' => 'Versionsgeschichte',
-'deletedhist' => 'Gelöschte Versionen',
-'revdelete-content' => 'Seiteninhalt',
-'revdelete-summary' => 'Zusammenfassungskommentar',
-'revdelete-uname' => 'Benutzername',
-'revdelete-restricted' => 'Einschränkungen gelten auch für Administratoren',
-'revdelete-unrestricted' => 'Einschränkungen für Administratoren aufgehoben',
-'revdelete-hid' => 'versteckte $1',
-'revdelete-unhid' => 'machte $1 wieder öffentlich',
-'revdelete-log-message' => '$1 für $2 {{PLURAL:$2|Version|Versionen}}',
-'logdelete-log-message' => '$1 für $2 {{PLURAL:$2|Logbucheintrag|Logbucheinträge}}',
+'revdelete-legend' => 'Setzen der Sichtbarkeits-Einschränkungen',
+'revdelete-hide-text' => 'Text der Version verstecken',
+'revdelete-hide-image' => 'Dateiinhalt verstecken',
+'revdelete-hide-name' => 'Logbuch-Aktion verstecken',
+'revdelete-hide-comment' => 'Bearbeitungskommentar verstecken',
+'revdelete-hide-user' => 'Benutzername/IP-Adresse des Bearbeiters verstecken',
+'revdelete-hide-restricted' => 'Daten auch vor Administratoren und anderen unterdrücken',
+'revdelete-radio-same' => '(nicht ändern)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nein',
+'revdelete-suppress' => 'Grund der Löschung auch vor Administratoren verstecken',
+'revdelete-unsuppress' => 'Einschränkungen für wiederhergestellte Versionen aufheben',
+'revdelete-log' => 'Grund:',
+'revdelete-submit' => 'Auf gewählte {{PLURAL:$1|Version|Versionen}} anwenden',
+'revdelete-logentry' => 'hat die Versionsansicht von „[[$1]]“ geändert',
+'logdelete-logentry' => 'hat die Sichtbarkeit von „[[$1]]“ geändert',
+'revdelete-success' => "'''Die Versionsansicht wurde aktualisiert.'''",
+'revdelete-failure' => "'''Die Versionssichtbarkeit konnte nicht aktualisiert werden:'''
+$1",
+'logdelete-success' => "'''Logbuchansicht erfolgreich geändert.'''",
+'logdelete-failure' => "'''Logbuchsichtbarkeit kann nicht geändert werden:'''
+$1",
+'revdel-restore' => 'Sichtbarkeit ändern',
+'pagehist' => 'Versionsgeschichte',
+'deletedhist' => 'Gelöschte Versionen',
+'revdelete-content' => 'Seiteninhalt',
+'revdelete-summary' => 'Zusammenfassungskommentar',
+'revdelete-uname' => 'Benutzername',
+'revdelete-restricted' => 'Einschränkungen gelten auch für Administratoren',
+'revdelete-unrestricted' => 'Einschränkungen für Administratoren aufgehoben',
+'revdelete-hid' => 'versteckte $1',
+'revdelete-unhid' => 'machte $1 wieder öffentlich',
+'revdelete-log-message' => '$1 für $2 {{PLURAL:$2|Version|Versionen}}',
+'logdelete-log-message' => '$1 für $2 {{PLURAL:$2|Logbucheintrag|Logbucheinträge}}',
+'revdelete-hide-current' => 'Fehler beim Verstecken des Eintrags vom $1, $2 Uhr: Dies ist die aktuelle Version.
+Sie kann nicht versteckt werden.',
+'revdelete-show-no-access' => 'Fehler beim Anzeigen des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.
+Du hast darauf keinen Zugriff.',
+'revdelete-modify-no-access' => 'Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.
+Du hast darauf keinen Zugriff.',
+'revdelete-modify-missing' => 'Fehler beim Bearbeiten von ID $1: Es fehlt in der Datenbank!',
+'revdelete-no-change' => "'''Warnung:''' Der Eintrag vom $1, $2 Uhr besitzt bereits die gewünschten Sichtbarkeitseinstellungen.",
+'revdelete-concurrent-change' => 'Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Es scheint, als ob der Status von jemandem geändert wurde, bevor du vorhattest, ihn zu bearbeiten.
+Bitte prüfe die Logbücher.',
+'revdelete-only-restricted' => 'Fehler beim Verstecken des Eintrags vom $1, $2 Uhr: Du kannst keinen Eintrag vor Administratoren verstecken, ohne eine der anderen Ansichtsoptionen gewählt zu haben.',
+'revdelete-reason-dropdown' => '*Allgemeine Löschgründe
+** Urheberrechtsverletzung
+** Unangebrachte persönliche Informationen',
+'revdelete-otherreason' => 'Anderer/ergänzender Grund:',
+'revdelete-reasonotherlist' => 'Anderer Grund',
+'revdelete-edit-reasonlist' => 'Löschgründe bearbeiten',
+'revdelete-offender' => 'Autor der Version:',
# Suppression log
'suppressionlog' => 'Oversight-Logbuch',
@@ -1143,67 +1226,13 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
'mergelogpagetext' => 'Dies ist das Logbuch der vereinigten Versionsgeschichten.',
# Diffs
-'history-title' => 'Versionsgeschichte von „$1“',
-'difference' => '(Unterschied zwischen Versionen)',
-'lineno' => 'Zeile $1:',
-'compareselectedversions' => 'Gewählte Versionen vergleichen',
-'visualcomparison' => 'Visueller Vergleich',
-'wikicodecomparison' => 'Wikitext-Vergleich',
-'editundo' => 'rückgängig',
-'diff-multi' => '(Der Versionsvergleich bezieht {{PLURAL:$1|1 dazwischenliegende Version|$1 dazwischenliegende Versionen}} mit ein.)',
-'diff-movedto' => 'verschoben nach $1',
-'diff-styleadded' => '$1-Style ergänzt',
-'diff-added' => '$1 hinzugefügt',
-'diff-changedto' => 'verändert nach $1',
-'diff-movedoutof' => 'verschoben aus $1',
-'diff-styleremoved' => '$1-Style entfernt',
-'diff-removed' => '$1 entfernt',
-'diff-changedfrom' => 'verändert von $1',
-'diff-src' => 'Quelle',
-'diff-withdestination' => 'mit Ziel $1',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;und $1 $2',
-'diff-width' => 'Breite',
-'diff-height' => 'Höhe',
-'diff-p' => "ein '''Absatz'''",
-'diff-blockquote' => "einen '''Block'''",
-'diff-h1' => "eine '''Überschrift (1. Ordnung)'''",
-'diff-h2' => "eine '''Überschrift (2. Ordnung)'''",
-'diff-h3' => "eine '''Überschrift (3. Ordnung)'''",
-'diff-h4' => "eine '''Überschrift (4. Ordnung)'''",
-'diff-h5' => "eine '''Überschrift (5. Ordnung)'''",
-'diff-pre' => "einen '''formatierten Block'''",
-'diff-div' => "ein '''Blockelement'''",
-'diff-ul' => "eine '''Liste'''",
-'diff-ol' => "eine '''nummerierte Liste'''",
-'diff-li' => "einen '''Listeneintrag'''",
-'diff-table' => "eine '''Tabelle'''",
-'diff-tbody' => "ein '''Tabelleninhalt'''",
-'diff-tr' => "eine '''Zeile'''",
-'diff-td' => "eine '''Zelle'''",
-'diff-th' => "eine '''Spaltenüberschrift'''",
-'diff-br' => "einen '''Zeilenumbruch'''",
-'diff-hr' => "eine '''horizontale Linie'''",
-'diff-code' => "einen '''Bereich Computercode'''",
-'diff-dl' => "eine '''Definitionsliste'''",
-'diff-dt' => "ein '''Definitionsterm'''",
-'diff-dd' => "eine '''Definition'''",
-'diff-input' => "eine '''Eingabe'''",
-'diff-form' => "ein '''Formular'''",
-'diff-img' => "ein '''Bild'''",
-'diff-span' => "ein '''Span'''",
-'diff-a' => "einen '''Link'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''fett'''",
-'diff-strong' => "'''hervorgehoben'''",
-'diff-em' => "'''betont'''",
-'diff-font' => "'''Schriftart'''",
-'diff-big' => "'''groß'''",
-'diff-del' => "'''gelöscht'''",
-'diff-tt' => "'''feste Weite'''",
-'diff-sub' => "'''tiefgestellt'''",
-'diff-sup' => "'''hochgestellt'''",
-'diff-strike' => "'''durchgestrichen'''",
+'history-title' => 'Versionsgeschichte von „$1“',
+'difference' => '(Unterschied zwischen Versionen)',
+'lineno' => 'Zeile $1:',
+'compareselectedversions' => 'Gewählte Versionen vergleichen',
+'showhideselectedversions' => 'Gewählte Versionen zeigen/verstecken',
+'editundo' => 'rückgängig',
+'diff-multi' => '(Der Versionsvergleich bezieht {{PLURAL:$1|1 dazwischenliegende Version|$1 dazwischenliegende Versionen}} mit ein.)',
# Search results
'searchresults' => 'Suchergebnisse',
@@ -1211,29 +1240,25 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
'searchresulttext' => 'Für mehr Informationen zur Suche siehe die [[{{MediaWiki:Helppage}}|Hilfeseite]].',
'searchsubtitle' => 'Deine Suchanfrage: „[[:$1]]“ ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
'searchsubtitleinvalid' => 'Deine Suchanfrage: „$1“.',
-'noexactmatch' => "'''Es existiert keine Seite mit dem Titel „$1“.'''
-Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen]].",
-'noexactmatch-nocreate' => "'''Es existiert keine Seite mit dem Titel „$1“.'''",
'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu groß, bitte versuche eine andere Abfrage.',
'titlematches' => 'Übereinstimmungen mit Seitentiteln',
'notitlematches' => 'Keine Übereinstimmungen mit Seitentiteln',
'textmatches' => 'Übereinstimmungen mit Inhalten',
'notextmatches' => 'Keine Übereinstimmungen mit Inhalten',
-'prevn' => 'vorherige $1',
-'nextn' => 'nächste $1',
+'prevn' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
+'nextn' => '{{PLURAL:$1|nächster|nächste $1}}',
'prevn-title' => '{{PLURAL:$1|Vorheriges Ergebnis|Vorherige $1 Ergebnisse}}',
'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
-'viewprevnext' => 'Zeige ($1) ($2) ($3)',
+'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Suchoptionen',
'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat'''",
'searchmenu-new' => "'''Erstelle die Seite „[[:$1|$1]]“ in diesem Wiki.'''",
'searchhelp-url' => 'Help:Hilfe',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alle Seiten, die mit dem Suchbegriff anfangen]]',
'searchprofile-articles' => 'Inhaltsseiten',
-'searchprofile-articles-and-proj' => 'Inhaltsseiten & Projekt',
-'searchprofile-project' => 'Projekt',
-'searchprofile-images' => 'Dateien',
+'searchprofile-project' => 'Hilfe und Projektseiten',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Erweitert',
'searchprofile-articles-tooltip' => 'Suchen in $1',
@@ -1241,8 +1266,6 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'searchprofile-images-tooltip' => 'Nach Bildern suchen',
'searchprofile-everything-tooltip' => 'Gesamten Inhalt durchsuchen (inklusive Diskussionsseiten)',
'searchprofile-advanced-tooltip' => 'Suche in weiteren Namensräumen',
-'prefs-search-nsdefault' => 'Standard-Namensräume:',
-'prefs-search-nscustom' => 'Suche in weiteren Namensräumen:',
'search-result-size' => '$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Weiterleitung von „$1“)',
@@ -1255,11 +1278,12 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'search-mwsuggest-disabled' => 'keine Vorschläge',
'search-relatedarticle' => 'Verwandte',
'mwsuggest-disable' => 'Vorschläge per Ajax deaktivieren',
+'searcheverything-enable' => 'In allen Namensräumen suchen',
'searchrelated' => 'verwandt',
'searchall' => 'alle',
'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
-'showingresultstotal' => "Es {{PLURAL:$4|folgt Suchergebnis '''$1''' von '''$3:'''|folgen die Suchergebnisse '''$1–$2''' von '''$3:'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
'search-nonefound' => 'Für deine Suchanfrage wurden keine Ergebnisse gefunden.',
'powersearch' => 'Erweiterte Suche',
@@ -1267,110 +1291,150 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'powersearch-ns' => 'Suche in Namensräumen:',
'powersearch-redir' => 'Weiterleitungen anzeigen',
'powersearch-field' => 'Suche nach:',
+'powersearch-togglelabel' => 'Wähle aus:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Keine',
'search-external' => 'Externe Suche',
'searchdisabled' => 'Die {{SITENAME}}-Suche ist deaktiviert. Du kannst unterdessen mit Google suchen. Bitte bedenke, dass der Suchindex für {{SITENAME}} veraltet sein kann.',
+# Quickbar
+'qbsettings' => 'Seitenleiste',
+'qbsettings-none' => 'Keine',
+'qbsettings-fixedleft' => 'Links, fest',
+'qbsettings-fixedright' => 'Rechts, fest',
+'qbsettings-floatingleft' => 'Links, schwebend',
+'qbsettings-floatingright' => 'Rechts, schwebend',
+
# Preferences page
-'preferences' => 'Einstellungen',
-'mypreferences' => 'Einstellungen',
-'prefs-edits' => 'Anzahl der Bearbeitungen:',
-'prefsnologin' => 'Nicht angemeldet',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} angemeldet]</span> sein, um deine Einstellungen ändern zu können.',
-'prefsreset' => 'Die Eingaben wurden verworfen, es erfolgte keine Speicherung.',
-'qbsettings' => 'Seitenleiste',
-'qbsettings-none' => 'Keine',
-'qbsettings-fixedleft' => 'Links, fest',
-'qbsettings-fixedright' => 'Rechts, fest',
-'qbsettings-floatingleft' => 'Links, schwebend',
-'qbsettings-floatingright' => 'Rechts, schwebend',
-'changepassword' => 'Passwort ändern',
-'skin' => 'Skin',
-'skin-preview' => 'Vorschau',
-'math' => 'TeX',
-'dateformat' => 'Datumsformat',
-'datedefault' => 'Standard',
-'datetime' => 'Datum und Zeit',
-'math_failure' => 'Parser-Fehler',
-'math_unknown_error' => 'Unbekannter Fehler',
-'math_unknown_function' => 'Unbekannte Funktion ',
-'math_lexing_error' => '„Lexing“-Fehler',
-'math_syntax_error' => 'Syntaxfehler',
-'math_image_error' => 'die PNG-Konvertierung schlug fehl',
-'math_bad_tmpdir' => 'Das temporäre Verzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
-'math_bad_output' => 'Das Zielverzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
-'math_notexvc' => 'Das texvc-Programm wurde nicht gefunden. Bitte math/README beachten.',
-'prefs-personal' => 'Benutzerdaten',
-'prefs-rc' => 'Letzte Änderungen',
-'prefs-watchlist' => 'Beobachtungsliste',
-'prefs-watchlist-days' => 'Anzahl der Tage, die die Beobachtungsliste standardmäßig umfassen soll:',
-'prefs-watchlist-days-max' => '(Maximal 7 Tage)',
-'prefs-watchlist-edits' => 'Maximale Zahl der Einträge:',
-'prefs-watchlist-edits-max' => '(Maximale Anzahl: 1000)',
-'prefs-misc' => 'Verschiedenes',
-'prefs-resetpass' => 'Passwort ändern',
-'saveprefs' => 'Einstellungen speichern',
-'resetprefs' => 'Eingaben verwerfen',
-'restoreprefs' => 'Alle Standardeinstellungen wiederherstellen',
-'textboxsize' => 'Bearbeiten',
-'prefs-edit-boxsize' => 'Größe des Bearbeitungsfensters:',
-'rows' => 'Zeilen:',
-'columns' => 'Spalten:',
-'searchresultshead' => 'Suche',
-'resultsperpage' => 'Treffer pro Seite:',
-'contextlines' => 'Zeilen pro Treffer:',
-'contextchars' => 'Zeichen pro Zeile:',
-'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Byte):',
-'recentchangesdays' => 'Anzahl der Tage, die die Liste der „Letzten Änderungen“ standardmäßig umfassen soll:',
-'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Tag|Tage}})',
-'recentchangescount' => 'Anzahl der Einträge in der Liste der letzten Änderungen, der Versionsgeschichte und den Logbüchern:',
-'savedprefs' => 'Deine Einstellungen wurden gespeichert.',
-'timezonelegend' => 'Zeitzone:',
-'timezonetext' => '¹Gib die Anzahl der Stunden ein, die zwischen deiner Zeitzone und UTC liegen.',
-'localtime' => 'Ortszeit:',
-'timezoneselect' => 'Zeitzone:',
-'timezoneuseserverdefault' => 'Standardzeit des Servers',
-'timezoneuseoffset' => 'Andere (Unterschied angeben)',
-'timezoneoffset' => 'Unterschied¹:',
-'servertime' => 'Aktuelle Zeit auf dem Server:',
-'guesstimezone' => 'Vom Browser übernehmen',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlantischer Ozean',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indischer Ozean',
-'timezoneregion-pacific' => 'Pazifischer Ozean',
-'allowemail' => 'E-Mail-Empfang von anderen Benutzern ermöglichen',
-'prefs-searchoptions' => 'Suchoptionen',
-'prefs-namespaces' => 'Namensräume',
-'defaultns' => 'In diesen Namensräumen soll standardmäßig gesucht werden:',
-'default' => 'Voreinstellung',
-'files' => 'Dateien',
-'prefs-custom-css' => 'Benutzerdefinierte CSS',
-'prefs-custom-js' => 'Benutzerdefiniertes JavaScript',
+'preferences' => 'Einstellungen',
+'mypreferences' => 'Einstellungen',
+'prefs-edits' => 'Anzahl der Bearbeitungen:',
+'prefsnologin' => 'Nicht angemeldet',
+'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} angemeldet]</span> sein, um deine Einstellungen ändern zu können.',
+'changepassword' => 'Passwort ändern',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Vorschau',
+'prefs-math' => 'TeX',
+'datedefault' => 'Standard',
+'prefs-datetime' => 'Datum und Zeit',
+'prefs-personal' => 'Benutzerdaten',
+'prefs-rc' => 'Letzte Änderungen',
+'prefs-watchlist' => 'Beobachtungsliste',
+'prefs-watchlist-days' => 'Anzahl der Tage, die die Beobachtungsliste standardmäßig umfassen soll:',
+'prefs-watchlist-days-max' => 'Maximal 7 Tage',
+'prefs-watchlist-edits' => 'Maximale Zahl der Einträge:',
+'prefs-watchlist-edits-max' => 'Maximale Anzahl: 1000',
+'prefs-watchlist-token' => 'Beobachtungslisten-Token:',
+'prefs-misc' => 'Verschiedenes',
+'prefs-resetpass' => 'Passwort ändern',
+'prefs-email' => 'E-Mail-Optionen',
+'prefs-rendering' => 'Aussehen',
+'saveprefs' => 'Einstellungen speichern',
+'resetprefs' => 'Eingaben verwerfen',
+'restoreprefs' => 'Alle Standardeinstellungen wiederherstellen',
+'prefs-editing' => 'Bearbeiten',
+'prefs-edit-boxsize' => 'Größe des Bearbeitungsfensters:',
+'rows' => 'Zeilen:',
+'columns' => 'Spalten:',
+'searchresultshead' => 'Suche',
+'resultsperpage' => 'Treffer pro Seite:',
+'contextlines' => 'Zeilen pro Treffer:',
+'contextchars' => 'Zeichen pro Zeile:',
+'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Byte):',
+'recentchangesdays' => 'Anzahl der Tage, die die Liste der „Letzten Änderungen“ standardmäßig umfassen soll:',
+'recentchangesdays-max' => 'Maximal $1 {{PLURAL:$1|Tag|Tage}}',
+'recentchangescount' => 'Anzahl der standardmäßig angezeigten Bearbeitungen:',
+'prefs-help-recentchangescount' => 'Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.',
+'prefs-help-watchlist-token' => 'Das Ausfüllen dieses Feldes mit einem geheimen Schlüssel generiert einen RSS-Feed für deine Beobachtungsliste.
+Jeder, der diesen Schlüssel kennt, kann deine Beobachtungsliste einsehen. Wähle also einen sicheren Wert.
+Hier ein zufällig generierter Wert, den du verwenden kannst: $1',
+'savedprefs' => 'Deine Einstellungen wurden gespeichert.',
+'timezonelegend' => 'Zeitzone:',
+'localtime' => 'Ortszeit:',
+'timezoneuseserverdefault' => 'Standardzeit des Servers',
+'timezoneuseoffset' => 'Andere (Unterschied angeben)',
+'timezoneoffset' => 'Unterschied¹:',
+'servertime' => 'Aktuelle Zeit auf dem Server:',
+'guesstimezone' => 'Vom Browser übernehmen',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlantischer Ozean',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indischer Ozean',
+'timezoneregion-pacific' => 'Pazifischer Ozean',
+'allowemail' => 'E-Mail-Empfang von anderen Benutzern ermöglichen',
+'prefs-searchoptions' => 'Suchoptionen',
+'prefs-namespaces' => 'Namensräume',
+'defaultns' => 'Anderenfalls in diesen Namensräumen suchen:',
+'default' => 'Voreinstellung',
+'prefs-files' => 'Dateien',
+'prefs-custom-css' => 'Benutzerdefinierte CSS',
+'prefs-custom-js' => 'Benutzerdefiniertes JavaScript',
+'prefs-reset-intro' => 'Du kannst diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.
+Dies kann nicht mehr rückgängig gemacht werden.',
+'prefs-emailconfirm-label' => 'E-Mail-Bestätigung:',
+'prefs-textboxsize' => 'Größe des Bearbeitungsfensters',
+'youremail' => 'E-Mail-Adresse:',
+'username' => 'Benutzername:',
+'uid' => 'Benutzer-ID:',
+'prefs-memberingroups' => 'Mitglied der {{PLURAL:$1|Benutzergruppe|Benutzergruppen}}:',
+'prefs-memberingroups-type' => '$2',
+'prefs-registration' => 'Anmeldezeitpunkt:',
+'prefs-registration-date-time' => '$2, $3 Uhr',
+'yourrealname' => 'Bürgerlicher Name:',
+'yourlanguage' => 'Sprache der Benutzeroberfläche:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Beiträge auf Diskussionsseiten sollten mit „<nowiki>~~~~</nowiki>“ signiert werden, was dann in die Signatur mit Zeitstempel umgewandelt wird.',
+'badsig' => 'Die Syntax der Unterschrift ist ungültig; bitte HTML überprüfen.',
+'badsiglength' => 'Die Signatur darf maximal $1 {{PLURAL:$1|Zeichen|Zeichen}} lang sein.',
+'yourgender' => 'Geschlecht:',
+'gender-unknown' => 'Nicht angegeben',
+'gender-male' => 'Männlich',
+'gender-female' => 'Weiblich',
+'prefs-help-gender' => 'Optional: Wird von der Software für die geschlechtsspezifische Anrede genutzt. Diese Information ist öffentlich.',
+'email' => 'E-Mail',
+'prefs-help-realname' => 'Optional. Damit kann dein bürgerlicher Name deinen Beiträgen zugeordnet werden.',
+'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn du dein Passwort vergessen hast.
+Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.',
+'prefs-help-email-required' => 'Es wird eine gültige E-Mail-Adresse benötigt.',
+'prefs-info' => 'Basisinformationen',
+'prefs-i18n' => 'Internationalisierung',
+'prefs-signature' => 'Unterschrift',
+'prefs-dateformat' => 'Datumsformat',
+'prefs-timeoffset' => 'Zeitunterschied',
+'prefs-advancedediting' => 'Erweiterte Optionen',
+'prefs-advancedrc' => 'Erweiterte Optionen',
+'prefs-advancedrendering' => 'Erweiterte Optionen',
+'prefs-advancedsearchoptions' => 'Erweiterte Optionen',
+'prefs-advancedwatchlist' => 'Erweiterte Optionen',
+'prefs-display' => 'Anzeigeoptionen',
+'prefs-diffs' => 'Versionsvergleich',
# User rights
-'userrights' => 'Benutzerrechteverwaltung', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gruppenzugehörigkeit verwalten',
-'userrights-user-editname' => 'Benutzername:',
-'editusergroup' => 'Benutzerrechte bearbeiten',
-'editinguser' => "Ändere Benutzerrechte von '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Benutzer-Gruppenzugehörigkeit bearbeiten',
-'saveusergroups' => 'Gruppenzugehörigkeit ändern',
-'userrights-groupsmember' => 'Mitglied von:',
-'userrights-groups-help' => 'Du kannst die Gruppenzugehörigkeit für diesen Benutzer ändern:
+'userrights' => 'Benutzerrechteverwaltung',
+'userrights-lookup-user' => 'Gruppenzugehörigkeit verwalten',
+'userrights-user-editname' => 'Benutzername:',
+'editusergroup' => 'Benutzerrechte bearbeiten',
+'editinguser' => "Ändere Benutzerrechte von '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Benutzer-Gruppenzugehörigkeit bearbeiten',
+'saveusergroups' => 'Gruppenzugehörigkeit ändern',
+'userrights-groupsmember' => 'Mitglied von:',
+'userrights-groupsmember-auto' => 'Einschließlich Mitglied von:',
+'userrights-groups-help' => 'Du kannst die Gruppenzugehörigkeit für diesen Benutzer ändern:
* Ein markiertes Kästchen bedeutet, dass der Benutzer Mitglied dieser Gruppe ist
* Ein * bedeutet, dass du das Benutzerrecht nach Erteilung nicht wieder zurücknehmen kannst (oder umgekehrt).',
-'userrights-reason' => 'Grund:',
-'userrights-no-interwiki' => 'Du hast keine Berechtigung, Benutzerrechte in anderen Wikis zu ändern.',
-'userrights-nodatabase' => 'Die Datenbank $1 ist nicht vorhanden oder nicht lokal.',
-'userrights-nologin' => 'Du musst dich mit einem Administrator-Benutzerkonto [[Special:UserLogin|anmelden]], um Benutzerrechte zu ändern.',
-'userrights-notallowed' => 'Du besitzt nicht die erforderlichen Berechtigungen, um Benutzerrechte zu vergeben.',
-'userrights-changeable-col' => 'Gruppenzugehörigkeit, die du ändern kannst',
-'userrights-unchangeable-col' => 'Gruppenzugehörigkeit, die du nicht ändern kannst',
+'userrights-reason' => 'Grund:',
+'userrights-no-interwiki' => 'Du hast keine Berechtigung, Benutzerrechte in anderen Wikis zu ändern.',
+'userrights-nodatabase' => 'Die Datenbank $1 ist nicht vorhanden oder nicht lokal.',
+'userrights-nologin' => 'Du musst dich mit einem Administrator-Benutzerkonto [[Special:UserLogin|anmelden]], um Benutzerrechte zu ändern.',
+'userrights-notallowed' => 'Du besitzt nicht die erforderlichen Berechtigungen, um Benutzerrechte zu vergeben.',
+'userrights-changeable-col' => 'Gruppenzugehörigkeit, die du ändern kannst',
+'userrights-unchangeable-col' => 'Gruppenzugehörigkeit, die du nicht ändern kannst',
# Groups
'group' => 'Gruppe:',
@@ -1423,6 +1487,7 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'right-bigdelete' => 'Seiten mit großer Versionsgeschichte löschen',
'right-deleterevision' => 'Einzelne Versionen einer Seite löschen und wiederherstellen',
'right-deletedhistory' => 'Gelöschte Versionen in der Versionsgeschichte ansehen, ohne zugehörigen Text',
+'right-deletedtext' => 'Gelöschte Texte und Versionsunterschiede zwischen gelöschten Versionen ansehen',
'right-browsearchive' => 'Nach gelöschten Seiten suchen',
'right-undelete' => 'Seiten wiederherstellen',
'right-suppressrevision' => 'Versionen ansehen und wiederherstellen, die auch vor Administratoren verborgen sind',
@@ -1436,6 +1501,8 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'right-editprotected' => 'Geschützte Seiten bearbeiten (ohne Kaskadenschutz)',
'right-editinterface' => 'Benutzeroberfläche bearbeiten',
'right-editusercssjs' => 'Fremde CSS- und JavaScript-Dateien bearbeiten',
+'right-editusercss' => 'Fremde CSS-Datei bearbeiten',
+'right-edituserjs' => 'Fremde JavaScript-Datei bearbeiten',
'right-rollback' => 'Schnelles Zurücksetzen',
'right-markbotedits' => 'Schnell zurückgesetzte Bearbeitungen als Bot-Bearbeitung markieren',
'right-noratelimit' => 'Keine Beschränkung durch Limits',
@@ -1452,6 +1519,8 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'right-siteadmin' => 'Datenbank sperren und entsperren',
'right-reset-passwords' => 'Passwort eines anderen Benutzers zurücksetzen',
'right-override-export-depth' => 'Exportiere Seiten einschließlich verlinkter Seiten bis zu einer Tiefe von 5',
+'right-versiondetail' => 'Detailinformation über die Software und ihre Versionsdaten einsehen',
+'right-sendemail' => 'E-Mails an andere Benutzer senden',
# User rights log
'rightslog' => 'Rechte-Logbuch',
@@ -1501,6 +1570,15 @@ Wenn du dich mit dem Thema auskennst, kannst du selbst [[:$1|die Seite verfassen
'recentchanges-legend' => 'Anzeigeoptionen',
'recentchangestext' => "Auf dieser Seite kannst du die letzten Änderungen auf '''{{SITENAME}}''' nachverfolgen.",
'recentchanges-feed-description' => 'Verfolge mit diesem Feed die letzten Änderungen in {{SITENAME}}.',
+'recentchanges-label-legend' => 'Legende: $1.',
+'recentchanges-legend-newpage' => '$1 - neue Seite',
+'recentchanges-label-newpage' => 'Neue Seite',
+'recentchanges-legend-minor' => '$1 - kleine Änderung',
+'recentchanges-label-minor' => 'Kleine Änderung',
+'recentchanges-legend-bot' => '$1 - Änderung durch einen Bot',
+'recentchanges-label-bot' => 'Änderung durch einen Bot',
+'recentchanges-legend-unpatrolled' => '$1 - nicht-kontrollierte Änderung',
+'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
'rcnote' => "{{PLURAL:$1|'''1''' Änderung|'''$1''' Änderungen}} in den {{PLURAL:$2|letzten 24 Stunden|letzten '''$2''' Tagen}}.
Stand: $4, $5 Uhr.",
'rcnotefrom' => "Angezeigt werden die Änderungen seit '''$2''' (max. '''$1''' Einträge).",
@@ -1529,6 +1607,8 @@ Stand: $4, $5 Uhr.",
# Recent changes linked
'recentchangeslinked' => 'Änderungen an verlinkten Seiten',
+'recentchangeslinked-feed' => 'Änderungen an verlinkten Seiten',
+'recentchangeslinked-toolbox' => 'Änderungen an verlinkten Seiten',
'recentchangeslinked-title' => 'Änderungen an Seiten, die von „$1“ verlinkt sind',
'recentchangeslinked-noresult' => 'Im ausgewählten Zeitraum wurden an den verlinkten Seiten keine Änderungen vorgenommen.',
'recentchangeslinked-summary' => "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. bei Kategorien an den Mitgliedern dieser Kategorie). Seiten auf deiner [[Special:Watchlist|Beobachtungsliste]] sind '''fett''' dargestellt.",
@@ -1538,8 +1618,8 @@ Stand: $4, $5 Uhr.",
# Upload
'upload' => 'Datei hochladen',
'uploadbtn' => 'Datei hochladen',
-'reupload' => 'Abbrechen',
'reuploaddesc' => 'Abbrechen und zurück zur Hochladen-Seite',
+'upload-tryagain' => 'Geänderte Dateibeschreibung abschicken',
'uploadnologin' => 'Nicht angemeldet',
'uploadnologintext' => 'Du musst [[Special:UserLogin|angemeldet sein]], um Dateien hochladen zu können.',
'upload_directory_missing' => 'Das Upload-Verzeichnis ($1) fehlt und konnte durch den Webserver auch nicht erstellt werden.',
@@ -1571,6 +1651,7 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
'minlength1' => 'Dateinamen müssen mindestens einen Buchstaben lang sein.',
'illegalfilename' => 'Der Dateiname „$1“ enthält mindestens ein nicht erlaubtes Zeichen. Bitte benenne die Datei um und versuche sie erneut hochzuladen.',
'badfilename' => 'Der Dateiname wurde in „$1“ geändert.',
+'filetype-mime-mismatch' => 'Dateierweiterung stimmt nicht mit dem MIME-Typ überein.',
'filetype-badmime' => 'Dateien mit dem MIME-Typ „$1“ dürfen nicht hochgeladen werden.',
'filetype-bad-ie-mime' => 'Diese Datei kann nicht hochgeladen werden, da der Internet Explorer sie als „$1“ erkennt, welcher ein nicht erlaubter potentiell gefährlicher Dateityp ist.',
'filetype-unwanted-type' => "'''„.$1“''' ist ein unerwünschtes Dateiformat. Erlaubt {{PLURAL:$3|ist das Dateiformat|sind die Dateiformate}}: $2.",
@@ -1590,7 +1671,6 @@ Die Beschreibungsseite musst du nach dem Hochladen der Datei noch manuell bearbe
* Name der hochzuladenden Datei: '''<tt>[[:$1]]</tt>'''
* Name der vorhandenen Datei: '''<tt>[[:$2]]</tt>'''
Bitte wähle einen anderen Namen.",
-'fileexists-thumb' => "<center>'''Vorhandene Datei'''</center>",
'fileexists-thumbnail-yes' => "Bei der Datei scheint es sich um ein Bild verringerter Größe ''(thumbnail)'' zu handeln. [[$1|thumb]]
Bitte prüfe die Datei '''<tt>[[:$1]]</tt>'''.
Wenn es sich um das Bild in Originalgröße handelt, so braucht kein separates Vorschaubild hochgeladen zu werden.",
@@ -1604,6 +1684,7 @@ Wenn du diese Datei trotzdem hochladen möchtest, gehe bitte zurück und ändere
'file-deleted-duplicate' => 'Eine identische Datei dieser Datei ([[$1]]) wurde früher gelöscht. Überprüfe das Lösch-Logbuch, bevor du sie hochlädst.',
'successfulupload' => 'Erfolgreich hochgeladen',
'uploadwarning' => 'Warnung',
+'uploadwarning-text' => 'Bitte ändere unten die Dateibeschreibung und versuche es erneut.',
'savefile' => 'Datei speichern',
'uploadedimage' => 'hat „[[$1]]“ hochgeladen',
'overwroteimage' => 'hat eine neue Version von „[[$1]]“ hochgeladen',
@@ -1612,11 +1693,14 @@ Wenn du diese Datei trotzdem hochladen möchtest, gehe bitte zurück und ändere
'php-uploaddisabledtext' => 'Das Hochladen von Dateien wurde in PHP deaktiviert.
Bitte überprüfe die <code>file_uploads</code>-Einstellung.',
'uploadscripted' => 'Diese Datei enthält HTML- oder Scriptcode, der irrtümlich von einem Webbrowser ausgeführt werden könnte.',
-'uploadcorrupt' => 'Die Datei ist beschädigt oder hat eine falsche Datei-Erweiterung. Bitte überprüfe die Datei und wiederhole den Hochlade-Vorgang.',
'uploadvirus' => 'Diese Datei enthält einen Virus! Details: $1',
+'upload-source' => 'Quelldatei',
'sourcefilename' => 'Quelldatei:',
+'sourceurl' => 'Quell-URL:',
'destfilename' => 'Zielname:',
'upload-maxfilesize' => 'Maximale Dateigröße: $1',
+'upload-description' => 'Dateibeschreibung',
+'upload-options' => 'Hochlade-Optionen',
'watchthisupload' => 'Diese Datei beobachten',
'filewasdeleted' => 'Eine Datei mit diesem Namen wurde schon einmal hochgeladen und zwischenzeitlich wieder gelöscht. Bitte prüfe zuerst den Eintrag im $1, bevor du die Datei wirklich speicherst.',
'upload-wasdeleted' => "'''Achtung: Du lädst eine Datei hoch, die bereits früher gelöscht wurde.'''
@@ -1640,15 +1724,46 @@ MGP # Pentax
PICT # verschiedene
#</pre> <!-- Diese Zeile darf nicht verändert werden!-->',
-'upload-proto-error' => 'Falsches Protokoll',
-'upload-proto-error-text' => 'Die URL muss mit <code>http://</code> oder <code>ftp://</code> beginnen.',
-'upload-file-error' => 'Interner Fehler',
-'upload-file-error-text' => 'Bei der Erstellung einer temporären Datei auf dem Server ist ein interner Fehler aufgetreten.
+'upload-proto-error' => 'Falsches Protokoll',
+'upload-proto-error-text' => 'Die URL muss mit <code>http://</code> oder <code>ftp://</code> beginnen.',
+'upload-file-error' => 'Interner Fehler',
+'upload-file-error-text' => 'Bei der Erstellung einer temporären Datei auf dem Server ist ein interner Fehler aufgetreten.
Bitte informiere einen [[Special:ListUsers/sysop|System-Administrator]].',
-'upload-misc-error' => 'Unbekannter Fehler beim Hochladen',
-'upload-misc-error-text' => 'Beim Hochladen ist ein unbekannter Fehler aufgetreten.
+'upload-misc-error' => 'Unbekannter Fehler beim Hochladen',
+'upload-misc-error-text' => 'Beim Hochladen ist ein unbekannter Fehler aufgetreten.
Prüfe die URL auf Fehler, den Online-Status der Seite und versuche es erneut.
Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|System-Administrator]].',
+'upload-too-many-redirects' => 'Die URL beinhaltete zu viele Weiterleitungen',
+'upload-unknown-size' => 'Unbekannte Größe',
+'upload-http-error' => 'Ein HTTP-Fehler ist aufgetreten: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zugriff verweigert',
+'img-auth-nopathinfo' => 'PATH_INFO fehlt.
+Dein Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
+Es könnte CGI-basiert sein und unterstützt img_auth nicht.
+Siehe http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Der gewünschte Pfad ist nicht im konfigurierten Uploadverzeichnis.',
+'img-auth-badtitle' => 'Aus „$1“ kann kein gültiger Titel erstellt werden.',
+'img-auth-nologinnWL' => 'Du bist nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
+'img-auth-nofile' => 'Datei „$1“ existiert nicht.',
+'img-auth-isdir' => 'Du versuchst, auf ein Verzeichnis „$1“ zuzugreifen.
+Nur Dateizugriff ist erlaubt.',
+'img-auth-streaming' => 'Lade „$1“.',
+'img-auth-public' => 'img_auth.php gibt Dateien von einem privaten Wiki aus.
+Dieses Wiki wurde als ein öffentliches Wiki konfiguriert.
+Aus Sicherheitsgründen ist img_auth.php deaktiviert.',
+'img-auth-noread' => 'Benutzer hat keine Berechtigung, „$1“ zu lesen.',
+
+# HTTP errors
+'http-invalid-url' => 'Ungültige URL: $1',
+'http-invalid-scheme' => 'URLs mit dem Schema „$1“ werden nicht unterstützt',
+'http-request-error' => 'Fehler beim Senden der Anfrage.',
+'http-read-error' => 'HTTP-Lesefehler.',
+'http-timed-out' => 'Zeitüberschreitung bei der HTTP-Anfrage.',
+'http-curl-error' => 'Fehler beim Abruf der URL: $1',
+'http-host-unreachable' => 'URL konnte nicht erreicht werden.',
+'http-bad-status' => 'Während der HTTP-Anfrage ist ein Fehler aufgetreten: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL ist nicht erreichbar',
@@ -1657,6 +1772,7 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
'upload-curl-error28-text' => 'Die Seite braucht zu lange für eine Antwort. Prüfe, ob die Seite online ist, warte einen kurzen Moment und versuche es dann erneut. Es kann sinnvoll sein, einen erneuten Versuch zu einem anderen Zeitpunkt zu probieren.',
'license' => 'Lizenz:',
+'license-header' => 'Lizenz',
'nolicense' => 'keine Vorauswahl',
'license-nopreview' => '(es ist keine Vorschau verfügbar)',
'upload_source_url' => ' (gültige, öffentlich zugängliche URL)',
@@ -1675,6 +1791,7 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
'listfiles_count' => 'Versionen',
# File description page
+'file-anchor-link' => 'Datei',
'filehist' => 'Dateiversionen',
'filehist-help' => 'Klicke auf einen Zeitpunkt, um diese Version zu laden.',
'filehist-deleteall' => 'Alle Versionen löschen',
@@ -1683,12 +1800,13 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
'filehist-current' => 'aktuell',
'filehist-datetime' => 'Version vom',
'filehist-thumb' => 'Vorschaubild',
-'filehist-thumbtext' => 'Vorschaubild für Version vom $1',
+'filehist-thumbtext' => 'Vorschaubild für Version vom $2, $3 Uhr',
'filehist-nothumb' => 'Kein Vorschaubild vorhanden',
'filehist-user' => 'Benutzer',
'filehist-dimensions' => 'Maße',
'filehist-filesize' => 'Dateigröße',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Datei fehlt',
'imagelinks' => 'Dateiverwendungen',
'linkstoimage' => 'Die {{PLURAL:$1|folgende Seite verwendet|folgenden $1 Seiten verwenden}} diese Datei:',
'linkstoimage-more' => 'Mehr als {{PLURAL:$1|eine Seite verlinkt|$1 Seiten verlinken}} auf diese Datei.
@@ -1698,15 +1816,14 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weitere Links]] für diese Datei.',
'redirectstofile' => 'Die {{PLURAL:$1|folgende Datei leitet|folgenden $1 Dateien leiten}} auf diese Datei weiter:',
'duplicatesoffile' => 'Die {{PLURAL:$1|folgende Datei ist ein Duplikat|folgenden $1 Dateien sind Duplikate}} dieser Datei ([[Special:FileDuplicateSearch/$2|weitere Details]]):',
-'sharedupload' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Für weitere Informationen siehe die $1.',
-'shareduploadwiki-desc' => 'Es folgt der Inhalt der $1.',
-'shareduploadwiki-linktext' => 'Datei-Beschreibungsseite',
-'noimage' => 'Eine Datei mit diesem Namen existiert nicht, du kannst sie jedoch $1.',
-'noimage-linktext' => 'hochladen',
+'sharedupload' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden.',
+'sharedupload-desc-there' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden. Siehe auf der [$2 Dateibeschreibungsseite] nach weiteren Informationen.',
+'sharedupload-desc-here' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden. Die Beschreibung der [$2 Dateibeschreibungsseite] wird unten angezeigt.',
+'filepage-nofile' => 'Es existiert keine Datei mit diesem Namen.',
+'filepage-nofile-link' => 'Es existiert keine Datei mit diesem Namen, aber du kannst [$1 diese Datei hochladen].',
'uploadnewversion-linktext' => 'Eine neue Version dieser Datei hochladen',
-'shared-repo-from' => 'aus $1', # $1 is the repository name
-'shared-repo' => 'einem gemeinsam genutzten Medienarchiv', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'aus $1',
+'shared-repo' => 'einem gemeinsam genutzten Medienarchiv',
# File reversion
'filerevert' => 'Zurücksetzen von „$1“',
@@ -1736,6 +1853,7 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
** Urheberrechtsverletzung
** Duplikat',
'filedelete-edit-reasonlist' => 'Löschgründe bearbeiten',
+'filedelete-maintenance' => 'Das Löschen und Wiederherstellen von Dateien ist aufgrund von Wartungsarbeiten vorübergehend deaktiviert.',
# MIME search
'mimesearch' => 'Suche nach MIME-Typ',
@@ -1757,7 +1875,7 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
# Random page
'randompage' => 'Zufällige Seite',
-'randompage-nopages' => 'Im Namensraum „$1“ sind keine Seiten vorhanden.',
+'randompage-nopages' => 'Es sind keine Seiten {{PLURAL:$2|im folgenden Namensraum|in den folgenden Namensräumen}} enthalten: „$1“',
# Random redirect
'randomredirect' => 'Zufällige Weiterleitung',
@@ -1769,6 +1887,7 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
'statistics-header-edits' => 'Bearbeitungsstatistik',
'statistics-header-views' => 'Seitenaufrufstatistik',
'statistics-header-users' => 'Benutzerstatistik',
+'statistics-header-hooks' => 'Andere Statistiken',
'statistics-articles' => 'Inhaltsseiten',
'statistics-pages' => 'Seiten',
'statistics-pages-desc' => 'Alle Seiten in diesem Wiki, inklusive Diskussionsseiten, Weiterleitungen usw.',
@@ -1799,8 +1918,8 @@ Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel
'brokenredirects' => 'Kaputte Weiterleitungen',
'brokenredirectstext' => 'Diese Spezialseite listet Weiterleitungen auf nicht existierende Seiten auf.',
-'brokenredirects-edit' => '(bearbeiten)',
-'brokenredirects-delete' => '(löschen)',
+'brokenredirects-edit' => 'bearbeiten',
+'brokenredirects-delete' => 'löschen',
'withoutinterwiki' => 'Seiten ohne Links zu anderen Sprachen',
'withoutinterwiki-summary' => 'Die folgenden Seiten verlinken nicht auf andere Sprachversionen.',
@@ -1907,7 +2026,7 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
# Special:Categories
'categories' => 'Kategorien',
-'categoriespagetext' => 'Folgende Kategorien enthalten Seiten oder Dateien.
+'categoriespagetext' => 'Folgende {{PLURAL:$1|Kategorie enthält|Kategorien enthalten}} Seiten oder Dateien.
[[Special:UnusedCategories|Unbenutzte Kategorien]] werden hier nicht aufgeführt.
Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
'categoriesfrom' => 'Zeige Kategorien ab:',
@@ -1915,8 +2034,9 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
'special-categories-sort-abc' => 'Sortierung nach Alphabet',
# Special:DeletedContributions
-'deletedcontributions' => 'Gelöschte Beiträge',
-'deletedcontributions-title' => 'Gelöschte Beiträge',
+'deletedcontributions' => 'Gelöschte Beiträge',
+'deletedcontributions-title' => 'Gelöschte Beiträge',
+'sp-deletedcontributions-contribs' => 'Benutzerbeiträge',
# Special:LinkSearch
'linksearch' => 'Weblink-Suche',
@@ -1931,6 +2051,16 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
'listusersfrom' => 'Zeige Benutzer ab:',
'listusers-submit' => 'Zeige',
'listusers-noresult' => 'Keinen Benutzer gefunden.',
+'listusers-blocked' => '(gesperrt)',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste aktiver Benutzer',
+'activeusers-intro' => 'Dies ist eine Liste von Benutzern, die innerhalb {{PLURAL:$1|des letzten Tages|der letzten $1 Tage}} Aktivitäten aufwiesen.',
+'activeusers-count' => '$1 {{PLURAL:$1|Bearbeitung|Bearbeitungen}} in den {{PLURAL:$3|letzten 24 Stunden|vergangenen $3 Tagen}}',
+'activeusers-from' => 'Zeige Benutzer ab:',
+'activeusers-hidebots' => 'Bots ausblenden',
+'activeusers-hidesysops' => 'Administratoren ausblenden',
+'activeusers-noresult' => 'Keine Benutzer gefunden.',
# Special:Log/newusers
'newuserlogpage' => 'Neuanmeldungs-Logbuch',
@@ -1941,17 +2071,23 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
'newuserlog-autocreate-entry' => 'Benutzerkonto wurde automatisch erstellt',
# Special:ListGroupRights
-'listgrouprights' => 'Benutzergruppen-Rechte',
-'listgrouprights-summary' => 'Dies ist eine Liste der in diesem Wiki definierten Benutzergruppen und der damit verbundenen Rechte.
+'listgrouprights' => 'Benutzergruppen-Rechte',
+'listgrouprights-summary' => 'Dies ist eine Liste der in diesem Wiki definierten Benutzergruppen und der damit verbundenen Rechte.
Zusätzliche Informationen über einzelne Rechte können [[{{MediaWiki:Listgrouprights-helppage}}|hier]] gefunden werden.',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Rechte',
-'listgrouprights-helppage' => 'Help:Gruppenrechte',
-'listgrouprights-members' => '(Mitgliederliste)',
-'listgrouprights-addgroup' => 'Benutzer zu {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} hinzufügen: $1',
-'listgrouprights-removegroup' => 'Benutzer aus {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} entfernen: $1',
-'listgrouprights-addgroup-all' => 'Benutzer zu allen Gruppen hinzufügen',
-'listgrouprights-removegroup-all' => 'Benutzer aus allen Gruppen entfernen',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Gewährtes Recht</span>
+* <span class="listgrouprights-revoked">Entzogenes Recht</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Rechte',
+'listgrouprights-helppage' => 'Help:Gruppenrechte',
+'listgrouprights-members' => '(Mitgliederliste)',
+'listgrouprights-addgroup' => 'Benutzer zu {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} hinzufügen: $1',
+'listgrouprights-removegroup' => 'Benutzer aus {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} entfernen: $1',
+'listgrouprights-addgroup-all' => 'Benutzer zu allen Gruppen hinzufügen',
+'listgrouprights-removegroup-all' => 'Benutzer aus allen Gruppen entfernen',
+'listgrouprights-addgroup-self' => 'Eigenes Benutzerkonto zu {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} hinzufügen: $1',
+'listgrouprights-removegroup-self' => 'Eigenes Benutzerkonto aus {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} entfernen: $1',
+'listgrouprights-addgroup-self-all' => 'Kann alle Gruppen zum eigenen Konto hinzufügen',
+'listgrouprights-removegroup-self-all' => 'Kann alle Gruppen vom eigenen Konto entfernen',
# E-mail user
'mailnologin' => 'Fehler beim E-Mail-Versand',
@@ -2025,9 +2161,9 @@ in der Übersicht der [[Special:RecentChanges|letzten Änderungen]] in Fettschri
'enotif_lastvisited' => 'Alle Änderungen auf einen Blick: $1',
'enotif_lastdiff' => 'Siehe $1 nach dieser Änderung.',
'enotif_anon_editor' => 'Anonymer Benutzer $1',
-'enotif_body' => 'Liebe/r $WATCHINGUSERNAME,
+'enotif_body' => 'Hallo $WATCHINGUSERNAME,
-die {{SITENAME}}-Seite "$PAGETITLE" wurde von $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED.
+die {{SITENAME}}-Seite „$PAGETITLE“ wurde von $PAGEEDITOR am $PAGEEDITDATE um $PAGEEDITTIME Uhr $CHANGEDORCREATED.
Aktuelle Version: $PAGETITLE_URL
@@ -2044,7 +2180,11 @@ Es werden solange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die
Dein freundliches {{SITENAME}}-Benachrichtigungssystem
--
-Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche: {{fullurl:Special:Watchlist/edit}}',
+Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{fullurl:{{#special:Watchlist}}/edit}}
+
+Um die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL
+
+Rückmeldungen und weitere Hilfe: {{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Seite löschen',
@@ -2055,9 +2195,10 @@ Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche: {{fullurl:Spe
'exblank' => 'Seite war leer',
'delete-confirm' => 'Löschen von „$1“',
'delete-legend' => 'Löschen',
-'historywarning' => 'Achtung, die Seite, die du löschen möchtest, hat eine Versionsgeschichte:',
+'historywarning' => "'''Achtung:''' Die Seite, die du löschen möchtest, hat eine Versionsgeschichte mit ungefähr $1 {{PLURAL:$1|Version|Versionen}}:",
'confirmdeletetext' => 'Du bist dabei, eine Seite mit allen zugehörigen älteren Versionen zu löschen. Bitte bestätige dazu, dass du dir der Konsequenzen bewusst bist, und dass du in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] handelst.',
'actioncomplete' => 'Aktion beendet',
+'actionfailed' => 'Aktion fehlgeschlagen',
'deletedtext' => '„<nowiki>$1</nowiki>“ wurde gelöscht. Im $2 findest du eine Liste der letzten Löschungen.',
'deletedarticle' => 'hat „[[$1]]“ gelöscht',
'suppressedarticle' => 'veränderte die Sichtbarkeit von „[[$1]]“',
@@ -2077,18 +2218,19 @@ Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche: {{fullurl:Spe
'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
# Rollback
-'rollback' => 'Zurücksetzen der Änderungen',
-'rollback_short' => 'Zurücksetzen',
-'rollbacklink' => 'Zurücksetzen',
-'rollbackfailed' => 'Zurücksetzen gescheitert',
-'cantrollback' => 'Die Änderung kann nicht zurückgesetzt werden, da es keine früheren Autoren gibt.',
-'alreadyrolled' => 'Das Zurücksetzen der Änderungen von [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) an [[:$1]] ist gescheitert, da in der Zwischenzeit ein anderer Benutzer die Seite geändert hat.
+'rollback' => 'Zurücksetzen der Änderungen',
+'rollback_short' => 'Zurücksetzen',
+'rollbacklink' => 'Zurücksetzen',
+'rollbackfailed' => 'Zurücksetzen gescheitert',
+'cantrollback' => 'Die Änderung kann nicht zurückgesetzt werden, da es keine früheren Autoren gibt.',
+'alreadyrolled' => 'Das Zurücksetzen der Änderungen von [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) an [[:$1]] ist gescheitert, da in der Zwischenzeit ein anderer Benutzer die Seite geändert hat.
Die letzte Änderung stammt von [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Die Änderungszusammenfassung lautet: ''„$1“''.", # only shown if there is an edit comment
-'revertpage' => 'Änderungen von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) rückgängig gemacht und letzte Version von [[User:$1|$1]] wiederhergestellt', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Die Änderungen von $1 wurden rückgängig gemacht und die letzte Version von $2 wurde wiederhergestellt.',
-'sessionfailure' => 'Es gab ein Problem mit der Übertragung deiner Benutzerdaten.
+'editcomment' => "Die Änderungszusammenfassung lautet: ''„$1“''.",
+'revertpage' => 'Änderungen von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) rückgängig gemacht und letzte Version von [[User:$1|$1]] wiederhergestellt',
+'revertpage-nouser' => 'Änderungen von (Benutzername entfernt) rückgängig gemacht und letzte Version von [[User:$1|$1]] wiederhergestellt',
+'rollback-success' => 'Die Änderungen von $1 wurden rückgängig gemacht und die letzte Version von $2 wurde wiederhergestellt.',
+'sessionfailure' => 'Es gab ein Problem mit der Übertragung deiner Benutzerdaten.
Diese Aktion wurde daher sicherheitshalber abgebrochen, um eine falsche Zuordnung deiner Änderungen zu einem anderen Benutzer zu verhindern.
Bitte gehe zurück und versuche den Vorgang erneut auszuführen.',
@@ -2107,7 +2249,7 @@ Siehe die [[Special:ProtectedPages|Liste der geschützten Seiten]] für alle akt
'protectexpiry' => 'Sperrdauer:',
'protect_expiry_invalid' => 'Die eingegebene Dauer ist ungültig.',
'protect_expiry_old' => 'Die Sperrzeit liegt in der Vergangenheit.',
-'protect-unchain' => 'Verschiebeschutz ändern',
+'protect-unchain-permissions' => 'Separate Sperroptionen aktivieren',
'protect-text' => 'Hier kannst du den Schutzstatus für die Seite „$1“ einsehen und ändern.',
'protect-locked-blocked' => "Du kannst den Seitenschutz nicht ändern, da dein Benutzerkonto gesperrt ist. Hier sind die aktuellen Seitenschutz-Einstellungen für die Seite '''„$1“:'''",
'protect-locked-dblock' => "Die Datenbank ist gesperrt, der Seitenschutz kann daher nicht geändert werden. Hier sind die aktuellen Seitenschutz-Einstellungen für die Seite '''„$1“:'''",
@@ -2133,7 +2275,7 @@ Siehe die [[Special:ProtectedPages|Liste der geschützten Seiten]] für alle akt
** Häufig eingebundene Vorlage
** Seite mit hoher Besucherzahl',
'protect-edit-reasonlist' => 'Schutzgründe bearbeiten',
-'protect-expiry-options' => '1 Stunde:1 hour,1 Tag:1 day,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year,Unbeschränkt:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Stunde:1 hour,1 Tag:1 day,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year,Unbeschränkt:infinite',
'restriction-type' => 'Schutzstatus:',
'restriction-level' => 'Schutzhöhe:',
'minimum-size' => 'Mindestgröße',
@@ -2174,6 +2316,7 @@ Der aktuelle Text der gelöschten Seite ist nur Administratoren zugänglich.',
'undelete-nodiff' => 'Keine vorhergehende Version vorhanden.',
'undeletebtn' => 'Wiederherstellen',
'undeletelink' => 'ansehen/wiederherstellen',
+'undeleteviewlink' => 'ansehen',
'undeletereset' => 'Abbrechen',
'undeleteinvert' => 'Auswahl umkehren',
'undeletecomment' => 'Grund:',
@@ -2211,19 +2354,23 @@ $1',
'contributions-title' => 'Benutzerbeiträge von „$1“',
'mycontris' => 'Eigene Beiträge',
'contribsub2' => 'Für $1 ($2)',
-'nocontribs' => 'Es wurden keine Benutzerbeiträge mit diesen Kriterien gefunden.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Es wurden keine Benutzerbeiträge mit diesen Kriterien gefunden.',
'uctop' => '(aktuell)',
'month' => 'und Monat:',
'year' => 'bis Jahr:',
-'sp-contributions-newbies' => 'Zeige nur Beiträge neuer Benutzer',
-'sp-contributions-newbies-sub' => 'Für Neulinge',
-'sp-contributions-newbies-title' => 'Benutzerbeiträge von neuen Benutzern',
-'sp-contributions-blocklog' => 'Sperr-Logbuch',
-'sp-contributions-logs' => 'Logbücher',
-'sp-contributions-search' => 'Suche nach Benutzerbeiträgen',
-'sp-contributions-username' => 'IP-Adresse oder Benutzername:',
-'sp-contributions-submit' => 'Suchen',
+'sp-contributions-newbies' => 'Zeige nur Beiträge neuer Benutzer',
+'sp-contributions-newbies-sub' => 'Für Neulinge',
+'sp-contributions-newbies-title' => 'Benutzerbeiträge von neuen Benutzern',
+'sp-contributions-blocklog' => 'Sperr-Logbuch',
+'sp-contributions-deleted' => 'Gelöschte Beiträge',
+'sp-contributions-logs' => 'Logbücher',
+'sp-contributions-talk' => 'Diskussion',
+'sp-contributions-userrights' => 'Benutzerrechteverwaltung',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} ist derzeit gesperrt. Es folgt der aktuelle Eintrag aus dem Benutzersperr-Logbuch:',
+'sp-contributions-search' => 'Suche nach Benutzerbeiträgen',
+'sp-contributions-username' => 'IP-Adresse oder Benutzername:',
+'sp-contributions-submit' => 'Suchen',
# What links here
'whatlinkshere' => 'Links auf diese Seite',
@@ -2246,6 +2393,7 @@ $1',
# Block/unblock
'blockip' => 'IP-Adresse/Benutzer sperren',
+'blockip-title' => 'Benutzer sperren',
'blockip-legend' => 'IP-Adresse/Benutzer sperren',
'blockiptext' => 'Mit diesem Formular sperrst du eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.
Dies sollte nur erfolgen, um Vandalismus zu verhindern und in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].
@@ -2269,7 +2417,7 @@ Bitte gib den Grund für die Sperre an.',
'ipbenableautoblock' => 'Sperre die aktuell von diesem Benutzer genutzte IP-Adresse sowie automatisch alle folgenden, von denen aus er Bearbeitungen oder das Anlegen von Benutzerkonten versucht',
'ipbsubmit' => 'IP-Adresse/Benutzer sperren',
'ipbother' => 'Andere Dauer (englisch):',
-'ipboptions' => '2 Stunden:2 hours,1 Tag:1 day,3 Tage:3 days,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year,Unbeschränkt:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stunden:2 hours,1 Tag:1 day,3 Tage:3 days,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year,Unbeschränkt:infinite',
'ipbotheroption' => 'Andere Dauer',
'ipbotherreason' => 'Anderer/ergänzender Grund:',
'ipbhidename' => 'Benutzername in Bearbeitungen und Listen verstecken',
@@ -2298,9 +2446,11 @@ Zur Aufhebung der Sperre siehe die [[Special:IPBlockList|Liste aller aktiven Spe
'ipblocklist-sh-tempblocks' => 'Befristete Sperren $1',
'ipblocklist-sh-addressblocks' => 'IP-Sperren $1',
'ipblocklist-submit' => 'Suchen',
+'ipblocklist-localblock' => 'Lokale Sperre',
+'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
'blocklistline' => '$1, $2 sperrte $3 ($4)',
'infiniteblock' => 'unbegrenzt',
-'expiringblock' => '$1',
+'expiringblock' => 'endet am $1 um $2 Uhr',
'anononlyblock' => 'nur Anonyme',
'noautoblockblock' => 'Autoblock deaktiviert',
'createaccountblock' => 'Erstellung von Benutzerkonten gesperrt',
@@ -2314,7 +2464,9 @@ Zur Aufhebung der Sperre siehe die [[Special:IPBlockList|Liste aller aktiven Spe
'contribslink' => 'Beiträge',
'autoblocker' => 'Automatische Sperre, da du eine gemeinsame IP-Adresse mit [[User:$1|$1]] benutzt. Grund der Benutzersperre: „$2“.',
'blocklogpage' => 'Benutzersperr-Logbuch',
-'blocklog-fulllog' => 'Vollständiges Benutzersperr-Logbuch',
+'blocklog-showlog' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} wurde schon früher gesperrt. Es folgt der Eintrag aus dem Benutzersperr-Logbuch:',
+'blocklog-showsuppresslog' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} wurde schon früher gesperrt und versteckt.
+Es folgt der Eintrag aus dem Unterdrückungs-Logbuch:',
'blocklogentry' => 'sperrte „[[$1]]“ für den Zeitraum: $2 $3',
'reblock-logentry' => 'änderte die Sperre für „[[$1]]“ für den Zeitraum: $2 $3',
'blocklogtext' => 'Dies ist das Logbuch über Sperrungen und Entsperrungen von Benutzern und IP-Adressen.
@@ -2335,9 +2487,11 @@ Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernam
'ipb_already_blocked' => '„$1“ wurde bereits gesperrt.',
'ipb-needreblock' => '== Sperre vorhanden ==
„$1“ ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
+'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
'ipb_cant_unblock' => 'Fehler: Sperr-ID $1 nicht gefunden. Die Sperre wurde bereits aufgehoben.',
'ipb_blocked_as_range' => 'Fehler: Die IP-Adresse $1 wurde als Teil der Bereichssperre $2 indirekt gesperrt. Eine Entsperrung von $1 alleine ist nicht möglich.',
'ip_range_invalid' => 'Ungültiger IP-Adressbereich.',
+'ip_range_toolarge' => 'Adressbereiche, die größer sind als /$1, sind nicht erlaubt.',
'blockme' => 'Sperre mich',
'proxyblocker' => 'Proxy blocker',
'proxyblocker-disabled' => 'Diese Funktion ist deaktiviert.',
@@ -2346,6 +2500,7 @@ Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernam
'sorbsreason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet.',
'sorbs_create_account_reason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet. Das Anlegen neuer Benutzer ist nicht möglich.',
'cant-block-while-blocked' => 'Du kannst keine anderen Benutzer sperren, während du selbst gesperrt bist.',
+'cant-see-hidden-user' => 'Der Benutzer, den du versuchst zu sperren, wurde bereits gesperrt und verborgen. Da du das „hideuser“-Recht nicht hast, kannst du die Benutzersperre nicht sehen und nicht bearbeiten.',
# Developer tools
'lockdb' => 'Datenbank sperren',
@@ -2386,6 +2541,7 @@ In diesen Fällen musst du, falls gewünscht, den Inhalt der Seite von Hand vers
Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung bitte '''begründen.'''",
'movearticle' => 'Seite verschieben:',
+'moveuserpage-warning' => "'''Warnung:''' Du bist dabei, eine Benutzerseite zu verschieben. Bitte bedenke, dass dadurch nur die Benutzerseite verschoben, '''nicht''' aber der Benutzer umbenannt wird.",
'movenologin' => 'Du bist nicht angemeldet',
'movenologintext' => 'Du musst ein registrierter Benutzer und [[Special:UserLogin|angemeldet]] sein, um eine Seite zu verschieben.',
'movenotallowed' => 'Du hast keine Berechtigung, Seiten zu verschieben.',
@@ -2396,7 +2552,7 @@ Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung
'move-watch' => 'Quell- und Zielseite beobachten',
'movepagebtn' => 'Seite verschieben',
'pagemovedsub' => 'Verschiebung erfolgreich',
-'movepage-moved' => "'''Die Seite „$1“ wurde nach „$2“ verschoben.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Die Seite „$1“ wurde nach „$2“ verschoben.'''",
'movepage-moved-redirect' => 'Es wurde eine Weiterleitung erstellt.',
'movepage-moved-noredirect' => 'Die Erstellung einer Weiterleitung wurde unterdrückt.',
'articleexists' => 'Unter diesem Namen existiert bereits eine Seite. Bitte wähle einen anderen Namen.',
@@ -2437,6 +2593,12 @@ Die Seite „[[:$1]]“ existiert bereits. Möchtest du diese löschen, um die S
'imageinvalidfilename' => 'Der Ziel-Dateiname ist ungültig',
'fix-double-redirects' => 'Nach dem Verschieben doppelte Weiterleitungen auflösen',
'move-leave-redirect' => 'Weiterleitung erstellen',
+'protectedpagemovewarning' => "'''Warnung:''' Diese Seite wurde gesperrt, so dass sie nur von Benutzern mit Administratorenrechten verschoben werden kann. Zur Information folgt der aktuelle Logbucheintrag:",
+'semiprotectedpagemovewarning' => "'''Hinweis:''' Diese Seite wurde gesperrt, so dass sie nur von angemeldeten Benutzern verschoben werden kann. Zur Information folgt der aktuelle Logbucheintrag:",
+'move-over-sharedrepo' => '==Datei existiert==
+[[:$1]] existiert in einem gemeinsam genutzten Repositorium. Das Verschieben einer Datei zu diesem Titel überschreibt die gemeinsam genutzte Datei.',
+'file-exists-sharedrepo' => 'Der gewählte Dateiname wird bereits in einem gemeinsam genutzten Repositorium verwendet.
+Bitte wähle einen anderen Namen.',
# Export
'export' => 'Seiten exportieren',
@@ -2459,15 +2621,21 @@ Alternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:
'export-pagelinks' => 'Verlinkte Seiten automatisch mit exportieren, bis zur Rekursionstiefe von:',
# Namespace 8 related
-'allmessages' => 'MediaWiki-Systemtexte',
-'allmessagesname' => 'Name',
-'allmessagesdefault' => 'Standardtext',
-'allmessagescurrent' => 'Aktueller Text',
-'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
+'allmessages' => 'MediaWiki-Systemtexte',
+'allmessagesname' => 'Name',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Aktueller Text',
+'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
Besuche die Seiten [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [http://translatewiki.net translatewiki.net], wenn du dich an der Lokalisierung von MediaWiki beteiligen möchtest.',
-'allmessagesnotsupportedDB' => 'Diese Spezialseite steht nicht zur Verfügung, da sie über den Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
-'allmessagesfilter' => 'Nachrichtennamensfilter:',
-'allmessagesmodified' => 'Nur geänderte anzeigen',
+'allmessagesnotsupportedDB' => 'Diese Spezialseite steht nicht zur Verfügung, da sie über den Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter für angepassten Zustand:',
+'allmessages-filter-unmodified' => 'Unverändert',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Verändert',
+'allmessages-prefix' => 'Präfixfilter:',
+'allmessages-language' => 'Sprache:',
+'allmessages-filter-submit' => 'Los',
# Thumbnails
'thumbnail-more' => 'vergrößern',
@@ -2477,6 +2645,9 @@ Besuche die Seiten [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalis
'djvu_no_xml' => 'XML-Daten können für die DjVu-Datei nicht abgerufen werden',
'thumbnail_invalid_params' => 'Ungültige Thumbnail-Parameter',
'thumbnail_dest_directory' => 'Zielverzeichnis kann nicht erstellt werden.',
+'thumbnail_image-type' => 'Bildtyp nicht unterstützt',
+'thumbnail_gd-library' => 'Unvollständige Konfiguration der GD-Bibliothek: Fehlende Funktion $1',
+'thumbnail_image-missing' => 'Datei scheint fehlend zu sein: $1',
# Special:Import
'import' => 'Seiten importieren',
@@ -2540,6 +2711,7 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'tooltip-ca-viewsource' => 'Diese Seite ist geschützt. Der Quelltext kann angesehen werden.',
'tooltip-ca-history' => 'Frühere Versionen dieser Seite',
'tooltip-ca-protect' => 'Diese Seite schützen',
+'tooltip-ca-unprotect' => 'Diese Seite freigeben',
'tooltip-ca-delete' => 'Diese Seite löschen',
'tooltip-ca-undelete' => 'Einträge wiederherstellen, bevor diese Seite gelöscht wurde',
'tooltip-ca-move' => 'Diese Seite verschieben',
@@ -2550,6 +2722,7 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'tooltip-search-fulltext' => 'Suche nach Seiten, die diesen Text enthalten',
'tooltip-p-logo' => 'Hauptseite',
'tooltip-n-mainpage' => 'Hauptseite anzeigen',
+'tooltip-n-mainpage-description' => 'Hauptseite besuchen',
'tooltip-n-portal' => 'Über das Projekt, was du tun kannst, wo was zu finden ist',
'tooltip-n-currentevents' => 'Hintergrundinformationen zu aktuellen Ereignissen',
'tooltip-n-recentchanges' => 'Liste der letzten Änderungen in {{SITENAME}}',
@@ -2605,6 +2778,7 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
#preftoc a {
text-transform: none;
}',
+'vector.css' => '/* CSS an dieser Stelle wirkt sich auf den Vector-Skin aus. Für allgemeingültige Skin-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
'print.css' => '/* CSS an dieser Stelle wirkt sich auf die Druckausgabe aus */',
'handheld.css' => '/* CSS an dieser Stelle wirkt sich auf Handheld-Geräte, basierend auf den in $wgHandheldStyle konfigurierten Skin, aus */',
@@ -2618,6 +2792,7 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'chick.js' => '/* Das folgende JavaScript wird für Benutzer geladen, die den Küken-Skin verwenden. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'simple.js' => '/* Das folgende JavaScript wird für Benutzer geladen, die den Einfach-Skin verwenden. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'modern.js' => '/* Das folgende JavaScript wird für Benutzer geladen, die den Modern-Skin verwenden. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'vector.js' => '/* Das folgende JavaScript wird für Benutzer geladen, die den Vector-Skin verwenden. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
# Metadata
'nodublincore' => 'Dublin-Core-RDF-Metadaten sind für diesen Server deaktiviert.',
@@ -2627,10 +2802,12 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymer Benutzer|Anonyme Benutzer}} auf {{SITENAME}}',
'siteuser' => '{{SITENAME}}-{{GENDER:$2|Benutzer|Benutzerin|Benutzer}} $1',
-'lastmodifiedatby' => 'Diese Seite wurde zuletzt am $1 um $2 Uhr von $3 geändert.', # $1 date, $2 time, $3 user
+'anonuser' => 'Anonymer {{SITENAME}}-Benutzer $1',
+'lastmodifiedatby' => 'Diese Seite wurde zuletzt am $1 um $2 Uhr von $3 geändert.',
'othercontribs' => 'Basierend auf der Arbeit von $1.',
'others' => 'anderen',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Benutzer|Benutzer}} $1',
+'anonusers' => '{{PLURAL:$2|anonymer|anonyme}} {{SITENAME}}-{{PLURAL:$2|Benutzer|Benutzer}} $1',
'creditspage' => 'Seiteninformationen',
'nocredits' => 'Für diese Seite sind keine Informationen vorhanden.',
@@ -2659,6 +2836,7 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'skinname-chick' => 'Küken',
'skinname-simple' => 'Einfach',
'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Immer als PNG darstellen',
@@ -2668,11 +2846,22 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'mw_math_modern' => 'Empfehlenswert für moderne Browser',
'mw_math_mathml' => 'MathML (experimentell)',
+# Math errors
+'math_failure' => 'Parser-Fehler',
+'math_unknown_error' => 'Unbekannter Fehler',
+'math_unknown_function' => 'Unbekannte Funktion ',
+'math_lexing_error' => '„Lexing“-Fehler',
+'math_syntax_error' => 'Syntaxfehler',
+'math_image_error' => 'die PNG-Konvertierung schlug fehl',
+'math_bad_tmpdir' => 'Das temporäre Verzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
+'math_bad_output' => 'Das Zielverzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
+'math_notexvc' => 'Das texvc-Programm wurde nicht gefunden. Bitte math/README beachten.',
+
# Patrolling
'markaspatrolleddiff' => 'Als kontrolliert markieren',
'markaspatrolledtext' => 'Diese Seite als kontrolliert markieren',
'markedaspatrolled' => 'Als kontrolliert markiert',
-'markedaspatrolledtext' => 'Die ausgewählte Seitenänderung wurde als kontrolliert markiert.',
+'markedaspatrolledtext' => 'Die ausgewählte Version von [[:$1]] wurde als kontrolliert markiert.',
'rcpatroldisabled' => 'Kontrolle der letzten Änderungen gesperrt',
'rcpatroldisabledtext' => 'Die Kontrolle der letzten Änderungen ist zurzeit gesperrt.',
'markedaspatrollederror' => 'Markierung als „kontrolliert“ nicht möglich.',
@@ -2702,13 +2891,10 @@ $1',
'previousdiff' => '← Zum vorherigen Versionsunterschied',
'nextdiff' => 'Zum nächsten Versionsunterschied →',
-# Visual comparison
-'visual-comparison' => 'Visueller Vergleich',
-
# Media information
'mediawarning' => "'''Warnung:''' Dieser Dateityp kann böswilligen Programmcode enthalten.
Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt werden.",
-'imagemaxsize' => 'Maximale Bildgröße auf Bildbeschreibungsseiten:',
+'imagemaxsize' => "Maximale Bildgröße:<br />''(für Dateibeschreibungsseiten)''",
'thumbsize' => 'Standardgröße der Vorschaubilder (Thumbnails):',
'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seite|$3 Seiten}}',
'file-info' => '(Dateigröße: $1, MIME-Typ: $2)',
@@ -2717,6 +2903,8 @@ Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt wer
'svg-long-desc' => '(SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3)',
'show-big-image' => 'Version in höherer Auflösung',
'show-big-image-thumb' => '<small>Größe der Voransicht: $1 × $2 Pixel</small>',
+'file-info-gif-looped' => 'Endlosschleife',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
# Special:NewFiles
'newimages' => 'Neue Dateien',
@@ -2748,7 +2936,7 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breite',
@@ -2875,14 +3063,14 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-unknowndate' => 'Unbekanntes Datum',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontal gespiegelt', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Um 180° gedreht', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikal gespiegelt', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Entgegen dem Uhrzeigersinn um 90° gedreht und vertikal gespiegelt', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Um 90° im Uhrzeigersinn gedreht', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Um 90° im Uhrzeigersinn gedreht und vertikal gespiegelt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Um 90° entgegen dem Uhrzeigersinn gedreht', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Horizontal gespiegelt',
+'exif-orientation-3' => 'Um 180° gedreht',
+'exif-orientation-4' => 'Vertikal gespiegelt',
+'exif-orientation-5' => 'Entgegen dem Uhrzeigersinn um 90° gedreht und vertikal gespiegelt',
+'exif-orientation-6' => 'Um 90° im Uhrzeigersinn gedreht',
+'exif-orientation-7' => 'Um 90° im Uhrzeigersinn gedreht und vertikal gespiegelt',
+'exif-orientation-8' => 'Um 90° entgegen dem Uhrzeigersinn gedreht',
'exif-planarconfiguration-1' => 'Grobformat',
'exif-planarconfiguration-2' => 'Planarformat',
@@ -3004,7 +3192,7 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-gpsmeasuremode-2' => '2-dimensionale Messung',
'exif-gpsmeasuremode-3' => '3-dimensionale Messung',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Knoten',
@@ -3023,6 +3211,7 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'watchlistall2' => 'alle',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-Mail-Adresse bestätigen (Authentifizierung)',
@@ -3058,7 +3247,7 @@ Wenn du das genannte Benutzerkonto *nicht* registriert hast, folge diesem Link,
$5
-Dieser Bestätigungscode ist gültig bis $4.',
+Dieser Bestätigungscode ist gültig bis $6, $7 Uhr.',
'confirmemail_invalidated' => 'E-Mail-Adressbestätigung abbrechen',
'invalidateemail' => 'E-Mail-Adressbestätigung abbrechen',
@@ -3158,7 +3347,7 @@ Du kannst auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutze
'duplicate-defaultsort' => 'Achtung: Der Sortierungsschlüssel „$2“ überschreibt den vorher verwendeten Schlüssel „$1“.',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installierte Erweiterungen',
'version-specialpages' => 'Spezialseiten',
'version-parserhooks' => 'Parser-Hooks',
@@ -3172,7 +3361,7 @@ Du kannst auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutze
'version-skin-extension-functions' => 'Skin-Erweiterungs-Funktionen',
'version-hook-name' => 'Schnittstellenname',
'version-hook-subscribedby' => 'Aufruf von',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
'version-software' => 'Installierte Software',
'version-software-product' => 'Produkt',
@@ -3252,4 +3441,15 @@ Die Eingabe muss ohne den Zusatz „{{ns:file}}:“ erfolgen.',
'dberr-outofdate' => 'Beachte, dass der Suchindex unserer Inhalte bei Google veraltet sein kann.',
'dberr-cachederror' => 'Folgendes ist eine Kopie des Caches der angeforderten Seite und kann veraltet sein.',
+# HTML forms
+'htmlform-invalid-input' => 'Mit einigen Eingaben gibt es Probleme',
+'htmlform-select-badoption' => 'Der angegebene Wert ist keine gültige Option.',
+'htmlform-int-invalid' => 'Der angegebene Wert ist keine Ganzzahl.',
+'htmlform-float-invalid' => 'Der angegebene Wert ist keine Zahl.',
+'htmlform-int-toolow' => 'Der angegebene Wert ist unter dem Minimum von $1',
+'htmlform-int-toohigh' => 'Der angegebene Wert ist über dem Maximum von $1',
+'htmlform-submit' => 'Übertragen',
+'htmlform-reset' => 'Änderungen rückgängig machen',
+'htmlform-selectorother-other' => 'Andere',
+
);
diff --git a/languages/messages/MessagesDe_ch.php b/languages/messages/MessagesDe_ch.php
index fc5b180e..61a98d31 100644
--- a/languages/messages/MessagesDe_ch.php
+++ b/languages/messages/MessagesDe_ch.php
@@ -24,9 +24,6 @@ $messages = array(
'post-expand-template-inclusion-category' => 'Seiten, in denen die maximale Grösse eingebundener Vorlagen überschritten ist',
'post-expand-template-argument-warning' => 'Warnung: Diese Seite enthält mindestens ein Argument in einer Vorlage, das expandiert zu gross ist. Diese Argumente werden ignoriert.',
-# Diffs
-'diff-big' => "'''gross'''",
-
# Search results
'nonefound' => "'''Hinweis:''' Es werden standardmässig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
@@ -79,7 +76,7 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
'importuploaderrorsize' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Die Datei ist grösser als die maximal erlaubte Dateigrösse.',
# Media information
-'imagemaxsize' => 'Maximale Bildgrösse auf Bildbeschreibungsseiten:',
+'imagemaxsize' => "Maximale Bildgrösse:<br />''(für Dateibeschreibungsseiten)''",
'file-info' => '(Dateigrösse: $1, MIME-Typ: $2)',
'file-info-size' => '($1 × $2 Pixel, Dateigrösse: $3, MIME-Typ: $4)',
diff --git a/languages/messages/MessagesDe_formal.php b/languages/messages/MessagesDe_formal.php
index 2262840c..4562998c 100644
--- a/languages/messages/MessagesDe_formal.php
+++ b/languages/messages/MessagesDe_formal.php
@@ -18,6 +18,7 @@
* @author Raimond Spekking (Raymond) <raimond.spekking@gmail.com> since January 2007
* @author The Evil IP address
* @author Tim Bartel (avatar) <wikipedia@computerkultur.org> formal addressing
+ * @author Tischbeinahe
* @author Umherirrender
* @author Urhixidur
*/
@@ -35,6 +36,12 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+'view-pool-error' => 'Entschuldigung, die Server sind im Moment überlastet.
+Zu viele Benutzer versuchen diese Seite zu besuchen.
+Bitte warten Sie einige Minuten, bevor Sie es noch einmal versuchen.
+
+$1',
+
'badaccess-group0' => 'Sie haben nicht die erforderliche Berechtigung für diese Aktion.',
'youhavenewmessages' => 'Sie haben $1 auf Ihrer Diskussionsseite ($2).',
@@ -73,10 +80,6 @@ Vergessen Sie nicht, Ihre [[Special:Preferences|{{SITENAME}}-Einstellungen]] anz
'nologin' => "Sie haben kein Benutzerkonto? '''$1'''.",
'gotaccount' => "Haben Sie bereits ein Benutzerkonto? '''$1'''.",
'userexists' => 'Dieser Benutzername ist schon vergeben. Bitte wählen Sie einen anderen.',
-'prefs-help-realname' => 'Optional. Damit kann Ihr bürgerlicher Name Ihren Beiträgen zugeordnet werden.',
-'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn Sie Ihr Passwort vergessen haben.
-Mit anderen Benutzer können Sie auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass Sie Ihre Identität offenlegen müssen.',
-'prefs-help-email-required' => 'Es wird eine gültige E-Mail-Adresse benötigt.',
'nocookiesnew' => 'Der Benutzerzugang wurde erstellt, aber Sie sind nicht angemeldet.
{{SITENAME}} benötigt für diese Funktion Cookies, bitte aktivieren Sie diese und melden sich dann mit Ihrem neuen Benutzernamen und dem zugehörigen Passwort an.',
'nocookieslogin' => '{{SITENAME}} benutzt Cookies zur Anmeldung der Benutzer.
@@ -89,6 +92,7 @@ Sie haben Cookies deaktiviert, bitte aktivieren Sie diese und versuchen Sie es e
'nouserspecified' => 'Bitte geben Sie einen Benutzernamen an.',
'wrongpassword' => 'Das Passwort ist falsch. Bitte versuchen Sie es erneut.',
'wrongpasswordempty' => 'Es wurde kein Passwort eingegeben. Bitte versuchen Sie es erneut.',
+'password-name-match' => 'Ihr Passwort muss sich von Ihrem Benutzernamen unterscheiden.',
'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.
Das automatisch generierte Passwort für Benutzer „$2“ lautet nun: $3
@@ -97,6 +101,7 @@ Falls Sie dies wirklich gewünscht haben, sollten Sie sich jetzt anmelden und da
Das neue Passwort ist {{PLURAL:$5|1 Tag|$5 Tage}} gültig.
Bitte ignorieren Sie diese E-Mail, falls Sie sie nicht selbst angefordert haben. Das alte Passwort bleibt weiterhin gültig.',
+'noemailcreate' => 'Sie müssen eine gültige E-Mail-Adresse angeben',
'passwordsent' => 'Ein neues, temporäres Passwort wurde an die E-Mail-Adresse von Benutzer „$1“ gesandt.
Bitte melden Sie sich damit an, sobald sie es erhalten haben. Das alte Passwort bleibt weiterhin gültig.',
'blocked-mailpassword' => 'Die von Ihnen verwendete IP-Adresse ist für das Ändern von Seiten gesperrt. Um einen Missbrauch zu verhindern, wurde die Möglichkeit zur Anforderung eines neuen Passwortes ebenfalls gesperrt.',
@@ -120,7 +125,6 @@ Bitte warten Sie, bevor Sie es erneut probierst.',
'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, müssen Sie jetzt ein neues Passwort wählen.',
'resetpass_text' => '<!-- Ergänzen Sie den Text hier -->',
'resetpass_success' => 'Ihr Passwort wurde erfolgreich geändert. Es folgt die Anmeldung …',
-'resetpass_bad_temporary' => 'Ungültiges vorläufiges Passwort. Sie haben bereits Ihr Passwort erfolgreich geändert oder ein neues, vorläufiges Passwort angefordert.',
'resetpass-no-info' => 'Sie müssen sich anmelden, um auf diese Seite direkt zuzugreifen.',
'resetpass-wrong-oldpass' => 'Ungültiges temporäres oder aktuelles Passwort.
Möglicherweise haben Sie Ihr Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
@@ -174,9 +178,13 @@ Sind Sie fälschlicherweise hier, klicken Sie die '''Zurück'''-Schaltfläche Ih
'noarticletext' => 'Diese Seite enthält momentan noch keinen Text.
Sie können diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]],
<span class="plainlinks">in den zugehörigen [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen] oder diese Seite [{{fullurl:{{FULLPAGENAME}}|action=edit}} bearbeiten]</span>.',
+'noarticletext-nopermission' => 'Diese Seite enthält momentan noch keinen Text.
+Sie können diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]]
+oder in den zugehörigen <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen]</span>.',
'userpage-userdoesnotexist' => 'Das Benutzerkonto „$1“ ist nicht vorhanden. Bitte prüfen Sie, ob Sie diese Seite wirklich erstellen/bearbeiten möchten.',
'clearyourcache' => "'''Hinweis - Leeren Sie nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können:''' '''Mozilla/Firefox/Safari:''' ''Shift'' gedrückt halten und auf ''Aktualisieren'' klicken oder alternativ entweder ''Strg-F5'' oder ''Strg-R'' (''Befehlstaste-R'' auf dem Macintosh) drücken; '''Konqueror: '''Auf ''Aktualisieren'' klicken oder ''F5'' drücken; '''Opera:''' Cache unter ''Extras → Einstellungen'' leeren; '''Internet Explorer:''' ''Strg-F5'' drücken oder ''Strg'' gedrückt halten und dabei auf ''Aktualisieren'' klicken.",
-'usercssjsyoucanpreview' => "'''Tipp:''' Benutzen Sie den Vorschau-Button, um Ihr neues CSS/JS vor dem Speichern zu testen.",
+'usercssyoucanpreview' => "'''Tipp:''' Benutzen Sie den „{{int:showpreview}}“-Button, um Ihr neues CSS vor dem Speichern zu testen.",
+'userjsyoucanpreview' => "'''Tipp:''' Benutzen Sie den „{{int:showpreview}}“-Button, um Ihr neues JavaScript vor dem Speichern zu testen.",
'usercsspreview' => "== Vorschau Ihres Benutzer-CSS ==
'''Hinweis:''' Nach dem Speichern müssen Sie Ihren Browser anweisen, die neue Version zu laden: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
'userjspreview' => "== Vorschau Ihres Benutzer-JavaScript ==
@@ -222,10 +230,10 @@ Grund für die Sperre: $1",
'permissionserrorstext' => 'Sie sind nicht berechtigt, die Aktion auszuführen. {{PLURAL:$1|Grund|Gründe}}:',
'permissionserrorstext-withaction' => 'Sie sind nicht berechtigt, $2.
{{PLURAL:$1|Grund|Gründe}}:',
-'recreate-deleted-warn' => "'''Achtung: Sie erstellen eine Seite, die bereits früher gelöscht wurde.'''
+'recreate-moveddeleted-warn' => "'''Achtung: Sie erstellen eine Seite, die bereits früher gelöscht wurde.'''
Bitte prüfen Sie sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.
-Zu Ihrer Information folgt das Lösch-Logbuch mit der Begründung für die vorhergehende Löschung:",
+Zu Ihrer Information folgt das Lösch- und Verschiebungs-Logbuch mit der Begründung für die vorhergehende Löschung:",
'edit-no-change' => 'Ihre Bearbeitung wurde ignoriert, da keine Änderung an dem Text vorgenomme wurde.',
# "Undo" feature
@@ -233,19 +241,34 @@ Zu Ihrer Information folgt das Lösch-Logbuch mit der Begründung für die vorhe
Bitte prüfen Sie den Vergleich unten um sicherzustellen, dass Sie dies tun möchten, und speicheren Sie dann unten Ihre Änderungen, um die Bearbeitung rückgängig zu machen.',
# Revision deletion
-'rev-deleted-text-view' => "Diese Version wurde '''gelöscht'''.
+'rev-deleted-text-unhide' => "Diese Version wurde '''gelöscht'''.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
+Einem Administrator können Sie [$1 diesen Link zur Version] nennen.",
+'rev-suppressed-text-unhide' => "Diese Version wurde '''unterdrückt'''.
+Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].
+Sie als Administrator können Sie [$1 diese Version einsehen], wenn Sie es wünschen.",
+'rev-deleted-text-view' => "Diese Version wurde '''gelöscht'''.
Als Administrator können Sie sie weiterhin einsehen.
-Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
-'rev-deleted-no-diff' => "Sie können diesen Unterschied nicht betrachten, da eine der Versionen '''gelöscht''' wurde.
-Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
-'rev-deleted-unhide-diff' => "Eine der Versionen dieses Unterschieds wurde '''gelöscht'''.
-Details stehen im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
+Nähere Angaben zum Löschvorgang sowie eine Begründung finden sich im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-deleted-no-diff' => "Sie können diesen Unterschied nicht betrachten, da eine der Versionen '''gelöscht''' wurde.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-deleted-unhide-diff' => "Eine der Versionen dieses Unterschieds wurde '''gelöscht'''.
+Details stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].
Einem Administrator können Sie [$1 diesen Link zum Versionsunterschied] nennen.",
-'revdelete-nooldid-text' => 'Sie haben entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder Sie versuchen, die aktuelle Version zu entfernen.',
-'revdelete-text' => "'''Gelöschte Versionen und Aktionen verbleiben in der Versionsgeschichte und den Logbüchern, jedoch sind Teile davon für die Öffentlichkeit unzugänglich.'''
-
-Andere Administratoren auf {{SITENAME}} haben Zugriff auf den versteckten Inhalt und können ihn mit der gleichen Seite wiederherstellen, sofern nicht zusätzliche Einschränkungen bestehen.
-Bitte bestätigen Sie, dass Sie beabsichtigen, dies zu tun, die Konsequenzen verstehen und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tuen.",
+'rev-deleted-diff-view' => "Eine Version dieses Versionsunterschiedes wurde '''gelöscht'''.
+Als Administrator können Sie diesen Versionsunterschied sehen. Details finden sich im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
+'rev-suppressed-diff-view' => "Eine der Versionen dieses Versionsunterschiedes wurde '''unterdrückt'''.
+Als Administrator können Sie diesen Versionsunterschied sehen. Details finden sich im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].",
+'revdelete-nooldid-text' => 'Sie haben entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder Sie versuchen, die aktuelle Version zu entfernen.',
+'revdelete-show-file-confirm' => 'Sind Sie sicher, dass Sie die gelöschte Version der Datei „<nowiki>$1</nowiki>“ vom $2 um $3 Uhr ansehen wollen?',
+'revdelete-confirm' => 'Bitte bestätigen Sie, dass Sie beabsichtigen, dies zu tun, die Konsequenzen verstehen und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tuen.',
+'revdelete-show-no-access' => 'Fehler beim Anzeigen des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.
+Sie haben darauf keinen Zugriff.',
+'revdelete-modify-no-access' => 'Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.
+Sie haben darauf keinen Zugriff.',
+'revdelete-concurrent-change' => 'Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Es scheint, als ob der Status von jemandem geändert wurde, bevor Sie vorhatten, ihn zu bearbeiten.
+Bitte prüfen Sie die Logbücher.',
+'revdelete-only-restricted' => 'Fehler beim Verstecken des Eintrags vom $1, $2 Uhr: Sie können keinen Eintrag vor Administratoren verstecken, ohne eine der anderen Ansichtsoptionen gewählt zu haben.',
# History merging
'mergehistory-header' => 'Mit dieser Spezialseite können Sie die Versionsgeschichte einer Ursprungsseite mit der Versionsgeschichte einer Zielseite vereinen.
@@ -256,8 +279,6 @@ Stellen Sie sicher, dass die Versionsgeschichte einer Seite historisch korrekt i
# Search results
'searchsubtitle' => 'Ihre Suchanfrage: „[[:$1]]“ ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
'searchsubtitleinvalid' => 'Ihre Suchanfrage: „$1“.',
-'noexactmatch' => "'''Es existiert keine Seite mit dem Titel „$1“.'''
-Wenn Sie sich mit dem Thema auskennen, können Sie selbst die [[:$1|die Seite verfassen]].",
'toomanymatches' => 'Es Anzahl der Suchergnisse ist zu groß, bitte versuchen Sie eine andere Abfrage.',
'search-suggest' => 'Meinten Sie „$1“?',
'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setzen Sie ''all:'' vor Ihren Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
@@ -265,9 +286,16 @@ Wenn Sie sich mit dem Thema auskennen, können Sie selbst die [[:$1|die Seite ve
'searchdisabled' => 'Die {{SITENAME}} Suche wurde deaktiviert. Sie können unterdessen mit Google suchen. Bitte bedenken Sie, dass der Suchindex für {{SITENAME}} veraltet sein kann.',
# Preferences page
-'prefsnologintext' => 'Sie müssen <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} angemeldet]</span> sein, um Ihre Einstellungen ändern zu können.',
-'savedprefs' => 'Ihre Einstellungen wurden gespeichert.',
-'timezonetext' => 'Geben Sie die Anzahl der Stunden ein, die zwischen Ihrer Zeitzone und UTC liegen.',
+'prefsnologintext' => 'Sie müssen <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} angemeldet]</span> sein, um Ihre Einstellungen ändern zu können.',
+'prefs-help-watchlist-token' => 'Das Ausfüllen dieses Feldes mit einem geheimen Schlüssel generiert einen RSS-Feed für Ihre Beobachtungsliste.
+Jeder, der diesen Schlüssel kennt, kann Ihre Beobachtungsliste einsehen. Wählen Sie also einen sicheren Wert.
+Hier ein zufällig generierter Wert, den Sie verwenden können: $1',
+'savedprefs' => 'Ihre Einstellungen wurden gespeichert.',
+'prefs-reset-intro' => 'Sie können diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.
+Dies kann nicht mehr rückgängig gemacht werden.',
+'prefs-help-realname' => 'Optional. Damit kann Ihr bürgerlicher Name Ihren Beiträgen zugeordnet werden.',
+'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn Sie Ihr Passwort vergessen haben.
+Mit anderen Benutzer können Sie auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass Sie Ihre Identität offenlegen müssen.',
# User rights
'userrights-groups-help' => 'Sie können die Gruppenzugehörigkeit für diesen Benutzer ändern.
@@ -311,7 +339,6 @@ Die Beschreibungsseite müssen Sie nach dem Hochladen der Datei noch manuell bea
* Name der hochzuladenden Datei: '''<tt>[[:$1]]</tt>'''
* Name der vorhandenen Datei: '''<tt>[[:$2]]</tt>'''
Bitte wählen Sie einen anderen Namen.",
-'fileexists-thumb' => "<center>'''Vorhandenes Bild'''</center>",
'fileexists-thumbnail-yes' => "Bei der Datei scheint es sich um ein Bild verringerter Größe ''(thumbnail)'' zu handeln. [[$1|thumb]]
Bitte prüfen Sie die Datei '''<tt>[[:$1]]</tt>'''.
Wenn es sich um das Bild in Originalgröße handelt, so braucht kein separates Vorschaubild hochgeladen zu werden.",
@@ -322,9 +349,9 @@ Bitte prüfen Sie, ob Sie das Bild in voller Auflösung vorliegen haben und lade
Wenn Sie diese Datei trotzdem hochladen möchten, gehen Sie bitte zurück und ändern den Namen.
[[File:$1|thumb|center|$1]]',
'file-deleted-duplicate' => 'Eine identische Datei dieser Datei ([[$1]]) wurde früher gelöscht. Überprüfen Sie das Lösch-Logbuch, bevor Sie sie hochladen.',
+'uploadwarning-text' => 'Bitte ändern Sie unten die Dateibeschreibung und versuchen Sie es erneut.',
'php-uploaddisabledtext' => 'Das Hochladen von Dateien wurde in PHP deaktiviert.
Bitte überprüfen Sie die <code>file_uploads</code>-Einstellung.',
-'uploadcorrupt' => 'Die Datei ist beschädigt oder hat eine falsche Datei-Erweiterung. Bitte überprüfen Sie die Datei und wiederholen Sie den Hochlade-Vorgang.',
'filewasdeleted' => 'Eine Datei mit diesem Namen wurde schon einmal hochgeladen und zwischenzeitlich wieder gelöscht. Bitte prüfen Sie zuerst den Eintrag im $1, bevor Sie die Datei wirklich speichern.',
'upload-wasdeleted' => "'''Achtung: Sie laden eine Datei hoch, die bereits früher gelöscht wurde.'''
@@ -339,6 +366,15 @@ Bitte informieren Sie einen [[Special:ListUsers/sysop|System-Administrator]].',
Prüfen Sie die URL auf Fehler, den Online-Status der Seite und versuchem Sie erneut.
Wenn das Problem weiter besteht, informieren Sie einen [[Special:ListUsers/sysop|System-Administrator]].',
+# img_auth script messages
+'img-auth-nopathinfo' => 'PATH_INFO fehlt.
+Ihr Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
+Es könnte CGI-basiert sein und unterstützt img_auth nicht.
+Siehe http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-nologinnWL' => 'Sie sind nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
+'img-auth-isdir' => 'Sie versuchen, auf ein Verzeichnis „$1“ zuzugreifen.
+Nur Dateizugriff ist erlaubt.',
+
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6-text' => 'Die angegebene URL ist nicht erreichbar. Prüfen Sie sowohl die URL auf Fehler als auch den Online-Status der Seite.',
'upload-curl-error28-text' => 'Die Seite braucht zu lange für eine Antwort. Prüfen Sie, ob die Seite online ist, warten Sie einen kurzen Moment und versuchen es dann erneut. Es kann sinnvoll sein, einen erneuten Versuch zu einem anderen Zeitpunkt zu probieren.',
@@ -346,8 +382,8 @@ Wenn das Problem weiter besteht, informieren Sie einen [[Special:ListUsers/sysop
'upload_source_file' => ' (eine Datei auf Ihrem Computer)',
# File description page
-'filehist-help' => 'Klicken Sie auf einen Zeitpunkt, um diese Version zu laden.',
-'noimage' => 'Eine Datei mit diesem Namen existiert nicht, Sie können sie jedoch $1.',
+'filehist-help' => 'Klicken Sie auf einen Zeitpunkt, um diese Version zu laden.',
+'filepage-nofile-link' => 'Es existiert keine Datei mit diesem Namen, aber Sie können [$1 diese Datei hochladen].',
# File reversion
'filerevert-intro' => "Sie setzen die Datei '''[[Media:$1|$1]]''' auf die [$4 Version vom $2, $3 Uhr] zurück.",
@@ -389,9 +425,9 @@ in der Übersicht der [[Special:RecentChanges|letzten Änderungen]] in Fettschri
'watchlist-details' => 'Sie beobachten {{PLURAL:$1|1 Seite|$1 Seiten}}.',
'watchlistcontains' => 'Ihre Beobachtungsliste enthält $1 {{PLURAL:$1|Seite|Seiten}}.',
-'enotif_body' => 'Hallo $WATCHINGUSERNAME,
+'enotif_body' => 'Werter $WATCHINGUSERNAME,
-die {{SITENAME}}-Seite "$PAGETITLE" wurde von $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED.
+die {{SITENAME}}-Seite „$PAGETITLE“ wurde von $PAGEEDITOR am $PAGEEDITDATE um $PAGEEDITTIME Uhr $CHANGEDORCREATED.
Aktuelle Version: $PAGETITLE_URL
@@ -408,10 +444,14 @@ Es werden solange keine weiteren Benachrichtigungs-E-Mails gesendet, bis Sie die
Das freundliche {{SITENAME}}-Benachrichtigungssystem
--
-Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie: {{fullurl:Special:Watchlist/edit}}',
+Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie: {{fullurl:{{#special:Watchlist}}/edit}}
+
+Um die Seite von Ihrer Beobachtungsliste zu entfernen, besuchen Sie $UNWATCHURL
+
+Rückmeldungen und weitere Hilfe: {{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
-'historywarning' => 'Achtung, die Seite, die Sie löschen möchten, hat eine Versionsgeschichte:',
+'historywarning' => "'''Achtung:''' Die Seite, die Sie löschen möchten, hat eine Versionsgeschichte mit etwa $1 {{PLURAL:$1|Version|Versionen}}:",
'confirmdeletetext' => 'Sie sind dabei, eine Seite mit allen zugehörigen älteren Versionen zu löschen. Bitte bestätigen Sie, dass Sie sich der Konsequenzen bewusst sind, und dass Sie in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] handeln.',
'deletedtext' => '„<nowiki>$1</nowiki>“ wurde gelöscht. Im $2 finden Sie eine Liste der letzten Löschungen.',
@@ -450,6 +490,7 @@ Bitte geben Sie den Grund für die Sperre an.',
„$1“ ist bereits gesperrt. Möchten Sie die Sperrparameter ändern?',
'proxyblockreason' => 'Ihre IP-Adresse wurde gesperrt, da sie ein offener Proxy ist. Bitte kontaktieren Sie Ihren Internet-Provider oder Ihre Systemadministratoren und informieren Sie sie über dieses mögliche Sicherheitsproblem.',
'cant-block-while-blocked' => 'Sie können keine anderen Benutzer sperren, während Sie selbst gesperrt sind.',
+'cant-see-hidden-user' => 'Der Benutzer, den Sie versuchen zu sperren, wurde bereits gesperrt und verborgen. Da Sie das „hideuser“-Recht nicht haben, können Sie die Benutzersperre nicht sehen und nicht bearbeiten.',
# Developer tools
'locknoconfirm' => 'Sie haben das Bestätigungsfeld nicht markiert.',
@@ -474,6 +515,7 @@ Sie sollten daher die Konsequenzen verstanden haben, bevor Sie fortfahren.",
In diesen Fällen müssen Sie, falls gewünscht, den Inhalt der Seite von Hand verschieben oder zusammenführen.
Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung bitte '''begründen.'''",
+'moveuserpage-warning' => "'''Warnung:''' Sie sind dabei, eine Benutzerseite zu verschieben. Bitte bedenken Sie, dass dadurch nur die Benutzerseite verschoben, '''nicht''' aber der Benutzer umbenannt wird.",
'movenologin' => 'Sie sind nicht angemeldet',
'movenologintext' => 'Sie müssen ein registrierter Benutzer und [[Special:UserLogin|angemeldet]] sein, um eine Seite zu verschieben.',
'movenotallowed' => 'Sie haben keine Berechtigung, Seiten zu verschieben.',
@@ -485,6 +527,8 @@ Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung
'delete_and_move_text' => '== Löschung erforderlich ==
Die Seite „[[:$1]]“ existiert bereits. Möchten Sie diese löschen, um die Seite verschieben zu können?',
+'file-exists-sharedrepo' => 'Der gewählte Dateiname wird bereits in einem gemeinsam genutzten Repositorium verwendet.
+Bitte wählen Sie einen anderen Namen.',
# Export
'exporttext' => 'Mit dieser Spezialseite können Sie den Text inklusive der Versionsgeschichte einzelner Seiten in eine XML-Datei exportieren.
@@ -505,13 +549,14 @@ Alle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] p
'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuchen Sie es erneut.',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Ihre Benutzerseite',
-'tooltip-pt-anonuserpage' => 'Benutzerseite der IP-Adresse, von der aus Sie Änderungen durchführen',
-'tooltip-pt-mytalk' => 'Ihre Diskussionsseite',
-'tooltip-pt-mycontris' => 'Liste Ihrer Beiträge',
-'tooltip-n-mainpage' => 'Besuchen Sie die Hauptseite',
-'tooltip-n-portal' => 'Über das Projekt, was Sie tun können, wo was zu finden ist',
-'tooltip-watch' => 'Fügt diese Seite Ihrer Beobachtungsliste hinzu',
+'tooltip-pt-userpage' => 'Ihre Benutzerseite',
+'tooltip-pt-anonuserpage' => 'Benutzerseite der IP-Adresse, von der aus Sie Änderungen durchführen',
+'tooltip-pt-mytalk' => 'Ihre Diskussionsseite',
+'tooltip-pt-mycontris' => 'Liste Ihrer Beiträge',
+'tooltip-n-mainpage' => 'Besuchen Sie die Hauptseite',
+'tooltip-n-mainpage-description' => 'Besuchen Sie die Hauptseite',
+'tooltip-n-portal' => 'Über das Projekt, was Sie tun können, wo was zu finden ist',
+'tooltip-watch' => 'Fügt diese Seite Ihrer Beobachtungsliste hinzu',
# Metadata
'notacceptable' => 'Der Wiki-Server kann die Daten nicht für Ihr Ausgabegerät aufbereiten.',
@@ -556,7 +601,7 @@ Wenn Sie das genannte Benutzerkonto *nicht* registriert haben, folgen Sie diesem
$5
-Dieser Bestätigungscode ist gültig bis $4.',
+Dieser Bestätigungscode ist gültig bis $6, $7 Uhr.',
# Delete conflict
'deletedwhileediting' => 'Achtung: Diese Seite wurde gelöscht, nachdem Sie angefangen haben sie zu bearbeiten!
diff --git a/languages/messages/MessagesDiq.php b/languages/messages/MessagesDiq.php
index 9d466969..c3ca0251 100644
--- a/languages/messages/MessagesDiq.php
+++ b/languages/messages/MessagesDiq.php
@@ -45,6 +45,7 @@ $messages = array(
'tog-enotifminoredits' => 'Vurnayışanê qıckekan de ki mı rê e-mail bırışe',
'tog-enotifrevealaddr' => 'E-mailadresa mı emailanê xeberan de bımocne',
'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
+'tog-oldsig' => 'İmza mewcude raver seyr ke:',
'tog-fancysig' => 'İmza rê mameley wikimeqaley bıke (bê gıreyo otomatik)',
'tog-externaleditor' => 'Editorê teberi standard bıxebetne (tenya seba ekspertano, komputerê şıma de ayarê xususiy lazımê)',
'tog-externaldiff' => 'Têverşanayışan pê programê teberi vıraze (tenya seba ekspertano, komputerê şıma de ayarê xususiy lazımê)',
@@ -66,6 +67,13 @@ $messages = array(
'underline-never' => 'Qet',
'underline-default' => 'Qerar cıgeyraoği dest dero',
+# Font style option in Special:Preferences
+'editfont-style' => 'Cayê vurnayişê de tipê nuştışi:',
+'editfont-default' => 'Fereziya cıgeyrayoği',
+'editfont-monospace' => 'Tipê nustey sabıtcagırewtoği',
+'editfont-sansserif' => 'Tipê nustey Sans-serifi',
+'editfont-serif' => 'Tipê nustey Serifi',
+
# Dates
'sunday' => 'Kırê',
'monday' => 'Dışeme',
@@ -125,7 +133,7 @@ $messages = array(
'category-media-header' => 'Medyawa ke kategoriya "$1" dera',
'category-empty' => "''Ena kategoriye de hewna qet nuştey ya ki medyay çıniyê.''",
'hidden-categories' => '{{PLURAL:$1|Kategoriya nımıtiye|Kategoriyê nımıtey}}',
-'hidden-category-category' => 'Kategoriyê nımıtey', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategoriyê nımıtey',
'category-subcat-count' => '{{PLURAL:$2|Na kategoriye de ena kategoriya bınêne esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ena kategoriya bınêne esta|enê $1 kategoriyê bınêni estê.}}, be $2 ra pêro pia.}}',
'category-subcat-count-limited' => 'Na kategoriye de {{PLURAL:$1|ena kategoriya bınêne esta|enê $1 kategoriyê bınêni estê}}.',
'category-article-count' => '{{PLURAL:$2|Na kategoriye de teyna ena pele esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ena pele esta|enê $1 peli estê.}}, be $2 ra pêro pia}}',
@@ -133,6 +141,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Na kategoriye de tenya dosya cêrêne esta.|teberê $2 ra pêro, {{PLURAL:$1|dosya|$1 dosya}}ê cêrêni na kategoriye derê.}}',
'category-file-count-limited' => '{{PLURAL:$1|dosya|$1 dosya}}o cêrın no kategori de yo.',
'listingcontinuesabbrev' => 'dewam',
+'index-category' => 'Pelê endeksıni',
+'noindex-category' => 'Pelê ke endeksıni niyê',
'linkprefix' => "'''MediaWiki niya ro.'''",
'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
@@ -144,10 +154,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'sero',
-'article' => 'Pela tedeesteyan',
-'newwindow' => '(zerrey pençereyê dê newey de beno a)',
-'cancel' => 'Bıtexelne',
+'about' => 'sero',
+'article' => 'Pela tedeesteyan',
+'newwindow' => '(zerrey pençereyê dê newey de beno a)',
+'cancel' => 'Bıtexelne',
+'moredotdotdot' => 'Vêşêri (zêdêri)...',
+'mypage' => 'Pela mı',
+'mytalk' => 'Pela mına werênayışi',
+'anontalk' => 'Pela werênayışê nê IPy',
+'navigation' => 'Pusula',
+'and' => '&#32;u',
+
+# Cologne Blue skin
'qbfind' => 'Bıvêne',
'qbbrowse' => 'Çım ra bıviyarne',
'qbedit' => 'Bıvurne',
@@ -155,15 +173,35 @@ $messages = array(
'qbpageinfo' => 'Melumatê perre',
'qbmyoptions' => 'Perrê mı',
'qbspecialpages' => 'Pelê xasi',
-'moredotdotdot' => 'Vêşêri (zêdêri)...',
-'mypage' => 'Pela mı',
-'mytalk' => 'Pela mına werênayışi',
-'anontalk' => 'Pela werênayışê nê IPy',
-'navigation' => 'Pusula',
-'and' => '&#32;u',
-
-# Metadata in edit box
-'metadata_help' => 'Daê seri:',
+'faq' => 'PZP (Persê ke zehf persiyenê)',
+'faqpage' => 'Proje: PZP',
+
+# Vector skin
+'vector-action-addsection' => 'qal berze cı',
+'vector-action-delete' => 'Bestere (pak ke)',
+'vector-action-move' => 'Bere',
+'vector-action-protect' => 'Bıpawe (bışevekne)',
+'vector-action-undelete' => 'Esterıtışi peyser bıgê',
+'vector-action-unprotect' => 'Ake',
+'vector-namespace-category' => 'Kategoriye',
+'vector-namespace-help' => 'Pela peşti (yardımi)',
+'vector-namespace-image' => 'Dosya',
+'vector-namespace-main' => 'Pele',
+'vector-namespace-media' => 'Pela medya',
+'vector-namespace-mediawiki' => 'Mesac',
+'vector-namespace-project' => 'Pela procey',
+'vector-namespace-special' => 'Pela xase',
+'vector-namespace-talk' => 'Werênayış',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Pela karberi',
+'vector-view-create' => 'Vıraze',
+'vector-view-edit' => 'Bıvurne',
+'vector-view-history' => 'tarixi bımocne',
+'vector-view-view' => 'Bıwane',
+'vector-view-viewsource' => 'Çımey bıvêne',
+'actions' => 'karê kerdey',
+'namespaces' => 'Cayê namey',
+'variants' => 'Varyanti',
'errorpagetitle' => 'Xeta',
'returnto' => 'Peyser şo $1.',
@@ -213,18 +251,22 @@ $messages = array(
'otherlanguages' => 'Zıwananê binan de',
'redirectedfrom' => '($1 ra neqıl bi)',
'redirectpagesub' => 'Pela redireksiyon',
-'lastmodifiedat' => 'Ena pele tewr peyên roca $2, $1 de biya rocaniye.', # $1 date, $2 time
+'lastmodifiedat' => 'Ena pele tewr peyên roca $2, $1 de biya rocaniye.',
'viewcount' => 'Ena perre {{PLURAL:$1|rae|$1 rey}} vêniya.',
'protectedpage' => 'Perra kılitkerdiye',
'jumpto' => 'Şo be:',
'jumptonavigation' => 'pusula',
'jumptosearch' => 'cıgeyre',
+'view-pool-error' => 'Qaytê qısuri mekerên, serverê ma enıka zêde bar gırewto xo ser.
+Hedê xo ra zêde karberi kenê ke seyrê na pele bıkerê.
+Şıma rê zehmet, tenê vınderên, heta ke reyna kenê ke ena pele kewê.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Heqa {{SITENAME}} de',
'aboutpage' => 'Project:Heqa',
'copyright' => 'Zerrek bınê $1i dero.',
-'copyrightpagename' => 'Heqa telifê {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Heqa telifi',
'currentevents' => 'Textey cerrebi',
'currentevents-url' => 'Project:Textey cerrebi',
@@ -232,8 +274,6 @@ $messages = array(
'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
'edithelp' => 'Peştdarina vurnayışi',
'edithelppage' => 'Help:Perre çıtewr vurniyena',
-'faq' => 'PZP (Persê ke zehf persiyenê)',
-'faqpage' => 'Proje: PZP',
'helppage' => 'Help:Tedeestey',
'mainpage' => 'Pela Seri',
'mainpage-description' => 'Pela Seri',
@@ -331,6 +371,8 @@ Kerem kerê, naye be namey ''URL''i yew [[Special:ListUsers/sysop|karber]]i ra v
'readonly_lag' => 'Daegeh (database) otomatikmen kılit bi, sureo ke daegehê bınêni resay daegehê serêni.',
'internalerror' => 'Xeta zerreki',
'internalerror_info' => 'Xeta zerreki: $1',
+'fileappenderrorread' => 'Surey pırakerdene de "$1" nêşa bıwaniyo.',
+'fileappenderror' => 'Dosyayê "$1" têyor nêbeno dosyayê "$2" ri.',
'filecopyerror' => '"$1" qaydê na "$2" dosya nêbeno.',
'filerenameerror' => 'nameyê "$1" dosya nêvuriya no name "$2" ri.',
'filedeleteerror' => 'Na "$1" dosya hewn a nêşi .',
@@ -340,6 +382,8 @@ Kerem kerê, naye be namey ''URL''i yew [[Special:ListUsers/sysop|karber]]i ra v
'unexpected' => 'Endek texmin nêbeni: "$1"="$2".',
'formerror' => 'Xeta: Form nêerşawiyeno',
'badarticleerror' => 'Kar ke şıma kenê, qebul nêbi.',
+'cannotdelete' => 'Pel "$1" o ke şıma nişane kerd hewn a neşı.
+Belka yewna ten kerdo hewn a.',
'badtitle' => 'Sernameo xırabın',
'badtitletext' => 'Sernamey pela ke şıma waşt, nêvêrd, thalo/vengo ya ki zıwano miyanêno ğelet gırêdae ya ki sernamey wiki.
Beno ke, tede yew ya zi zêdê işareti estê ke sernaman de nêxebetiyenê.',
@@ -373,7 +417,6 @@ Sebeb: "\'\'$2\'\'".',
'virus-unknownscanner' => 'antiviruso ke nêzanyeno:',
# Login and logout pages
-'logouttitle' => 'Veciyayışê karberi',
'logouttext' => "'''Şıma hesab qefelna.'''
Nıka kamiyê xo eşkera mekere u siteyê {{SITENAME}} ra eşkeni devam bıkeri, ya zi [[Special:UserLogin|newe ra hesabê xo akere]] (wazeni pey nameyê xo, wazeni pey yewna name).
@@ -382,7 +425,6 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
Hesabê şıma biyo a.
[[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.',
-'loginpagetitle' => 'Cıkewtena karberi',
'yourname' => 'Namey karberi',
'yourpassword' => 'Parola',
'yourpasswordagain' => 'Parola reyna bınusne:',
@@ -393,6 +435,7 @@ Hesabê şıma biyo a.
'nav-login-createaccount' => 'Cıkewe / hesab vıraze',
'loginprompt' => "Cıkewtena {{SITENAME}}i rê gani ''cookies'' akerdey bê.",
'userlogin' => 'Cıkewe ya zi hesab vıraze',
+'userloginnocreate' => 'Cıkewe',
'logout' => 'Veciye',
'userlogout' => 'Veciye',
'notloggedin' => 'Hesab akerde niyo',
@@ -404,28 +447,8 @@ Hesabê şıma biyo a.
'createaccountmail' => 'mı rê e-mail sera parola bırışe',
'badretype' => 'Parolayê ke şıma nuşti yewbini nêtepışneni.',
'userexists' => 'No name ey yewna teno, yewna name bınuse.',
-'youremail' => 'E-Mail (mecbur niyo) *:',
-'username' => 'Namey karberi:',
-'uid' => 'Namey karberi:',
-'prefs-memberingroups' => 'Ezayê {{PLURAL:$1|grup|grupan}}:',
-'yourrealname' => 'Nameyo raştıkên:',
-'yourlanguage' => 'Zıwan:',
-'yournick' => 'imza:',
-'badsig' => 'Îmzayê tu raşt niyo.
-Etiketê HTMLî kontrol bike.',
-'badsiglength' => 'İmzayê şıma zaf dergo.
-$1 gani bınê no {{PLURAL:$1|karakter|karakter}}de bıbo.',
-'yourgender' => 'Cınsiyetê to:',
-'gender-unknown' => 'Cınsiyet nêvato',
-'gender-male' => 'cıwamêrd',
-'gender-female' => 'Cenıke',
-'prefs-help-gender' => 'keyfiyo: sofware qey adersê cinsiyet şuxulneno, no malumat umumiyo.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Nameyo raşt waştena şıma rê mendo.
-Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de mocnenê.',
'loginerror' => 'Xetayê hesab ekerdışi',
-'prefs-help-email' => 'Dayişê adresê e-postayi keyfiyo; labele wexta ke parolayê şıma vind bıbo yew adres bıbo şıma re yewna parola erşawiyeno. Hem zi karberê binan de şıma eşkeni nımtıki xeberdayişi bıkeri.',
-'prefs-help-email-required' => 'E-mail adrese mecburiya.',
+'createaccounterror' => 'Hesab nêvırazyeno: $1',
'nocookiesnew' => 'Hesabê karberi vıraziya, labelê şıma nêşay cı kewê.
Semedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.
Şıma çerezi qapan kerdi.
@@ -441,16 +464,18 @@ Nuştışê namanê karberan de herfa pil u qıce rê diqet kerên.
Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe akerên]].',
'nosuchusershort' => 'No "<nowiki>$1</nowiki>" name de yew ten çino. Kontrolê nuştışi bıkere.',
'nouserspecified' => 'Şıma gani yew name bıde.',
+'login-userblocked' => 'No karber/na karbere blokekerdeyo/blokekerdiya. Cıkewtışi rê musade çıniyo.',
'wrongpassword' => 'Parola ğeleta. Rêna / fına bıcerrebne .',
'wrongpasswordempty' => 'Parola tola, venga. tekrar bınuse.',
-'passwordtooshort' => 'Parola to nêvêrena ya ki zaf kılma.
-It must have at least $1 characters and be different from your username.',
+'passwordtooshort' => 'Parolayê to gani bi {{PLURAL:$1|1 karakter|$1 karakteran}}.',
+'password-name-match' => 'Parola u nameyê şıma gani zeypê (seypê) nêbo.',
'mailmypassword' => 'E-mail sera parola newiye bırışe',
'passwordremindertitle' => 'Qey na keyepel {{SITENAME}} yew parolayo emanet',
'passwordremindertext' => 'Yew ten (muhtemelen, şıma na aderesê IP ra $1 ) {{SITENAME}} ($4) newe yew parola waşt. "$2" no name ri emanet yew parola vıraziya "$3". Eke na şıma waşta, hesabê xo akere u newe yew parola bıvıraze. Muddetê parolayê şıma yo emanet {{PLURAL:$5|1 roc|$5 roci}}.
Eke vurnayişê parolayi, şıma nêwaşt ya zi parolayê şıma ameyo şıma vir u şıma hini qayil nşye parolayê xo bıvurni; no mesaj peygoş kere u bıewne gureyê xo.',
'noemail' => '"$1" No name de yew e-posta çiniyo.',
+'noemailcreate' => 'Şıma gani yew parolayo meqbul peda bıkeri',
'passwordsent' => '"$1" No name de yew e-posta erşawiya (ruşya). hesabê xo, şıma wext mesaj gırewt u çax akere.',
'blocked-mailpassword' => 'Cıkewetışê na keyepel de şıma qedexe biye, ey ra newe yew şifre nêerşawyeno.',
'eauthentsent' => 'Adreso ke şıma dayo ma, ma yew e-posta erşawıt uca, o e-posta de kodê tesdiq kerdış esto.
@@ -474,9 +499,11 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
Cıkewe keyepel u şifreyê xo bıvurne.
Eke no gure şıma bı xetayê kerd no mesaj peygoş bıkere.',
+'usernamehasherror' => 'Namey karberi de karakteri gani têmiyan ra mebê',
'login-throttled' => 'Demekê cıwa ver de şıma zah teşebbusê hesab akerdış kerd.
Bıne vındere u newe ra dest pê bıkere.',
'loginlanguagelabel' => 'Zıwan: $1',
+'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
# Password reset dialog
'resetpass' => 'Parola bıvurne',
@@ -491,6 +518,7 @@ Bıne vındere u newe ra dest pê bıkere.',
'resetpass_forbidden' => 'parolayi nêvuryayi',
'resetpass-no-info' => 'şıma gani hesab akere u hona bıeşke bırese cı',
'resetpass-submit-loggedin' => 'Parola bıvurne',
+'resetpass-submit-cancel' => 'ibtal ke',
'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
'resetpass-temp-password' => 'parolayo muweqet:',
@@ -586,9 +614,17 @@ Eka tı ita semed yew heta ra amey, ser gocekê '''back'''i klik bıkin.",
Tı şenay zerrey pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernamey ena pele cıgeyrê]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cıkewtışê aidi rê cıgeyrê],
ya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele bıvurnê]</span>.',
+'noarticletext-nopermission' => 'No pel nıka veng o.
+No sernuşte şıma [[Special:Search/{{PAGENAME}}|pelanê binan de eşkeni bıgeri]]
+ya zi <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} itara eşekeni bıgere].</span>',
'userpage-userdoesnotexist' => 'Hesabê karberi "$1" lazim niyo.
Eka ti wazeni binusi, kontrol bike.',
+'userpage-userdoesnotexist-view' => 'Hesabê karberi "$1" qeyd nibiyo.',
+'blocked-notice-logextract' => 'No karber/na karbere emanet blokekerdeyo/blokekediya.
+Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
'clearyourcache' => "'''Not:''' Bade eyar qayd kerdış, gani hafızayê cıgerayox pak bıbo: '''Mozilla / Firefox / Safari:''' ''Shift'' ri gıştê şıma ser nayi pel newe ra bar kere veyaxut ''Ctrl-Shift-R'' bıkere u (qey Apple Mac ''Cmd-Shift-R'');, '''IE:''' ''Ctrl-F5'', '''Konqueror:''' tena tuşê pel newe ra bar kere ser a ne.",
+'usercssyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
+'userjsyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
'usercsspreview' => "'''şıma tena verqaydê dosyayê CSS vineni.''' '''Dosyayê Karberi CSS hema qayd nebiyo!'''",
'userjspreview' => "'''şıma tena test keni ya ziverqayn seyr keni - karberê JavaScript'i hema qayd nebiyo.'''",
'userinvalidcssjstitle' => "''Hişyari:''' \"\$1\" no name de yew tema çino. tema- nameyê ey.css u .js ney dosyayi gani pê herfa hurdiye bınusiye , yani {{ns:user}}:bıngeh/'''M'''onobook.css ney, {{ns:user}}:bıngeh/'''m'''onobook.css.",
@@ -627,13 +663,16 @@ Qayd biyayişê ey mumkin niyo..'''",
'readonlywarning' => "'''DİQET: Semedê mıqayti, database kılit biyo. No sebeb ra vurnayişê şıma qayd nêbeno. Nuşteyanê şıma yewna serkar eşkeno wedaro u pey ra şıma eşkeni reyna ita de qayd bıker'''
Serkar o ke kılit kerdo; no beyanat dayo: $1",
-'protectedpagewarning' => 'DİQET: No pel pawyeno, teyna serkari eşkeni bıvurni. Wexta ke şıma no pel vurneni [[Project:Pelo pawtı|qaydeyê pelê pawteyan ri]] diqet bıkeri.',
-'semiprotectedpagewarning' => "'''DİQET''': No pel, teyna qayd kerde eşkeni bıvurni.",
+'protectedpagewarning' => "'''Diqet: No pel pawyeno, teyna serkari eşkeni bıvurni.'''
+Wexta ke şıma no pel vurneni diqet bıkeri:",
+'semiprotectedpagewarning' => "'''Diqet: No pel pawyeno, teyna serkari eşkeni bıvurni.'''
+Wexta ke şıma no pel vurneni diqet bıkeri, log bivini:",
'cascadeprotectedwarning' => "'''Diqet:''' Na pele kılit biya, tenya karberê idarekeri şenê ke naye bıvurnê, çıke na zerrey {{PLURAL:$1|na pela şipa-kılitkerdiye|nê pelanê şipanê-kılitkerdiyan}} dera:",
-'titleprotectedwarning' => "'''Diqet: Na pele kılit biya, [[Special:ListGroupRights|heqê xususiy]] lazımê ke naye vırazê.'''",
-'templatesused' => 'Templateyan ena pele dı ca genê:',
-'templatesusedpreview' => 'Nımuneyê ke na verqayt de xebetnayê:',
-'templatesusedsection' => 'Şablonê ke na qısım de gurêniyenê:',
+'titleprotectedwarning' => "'''Diqet: Na pele kılit biya, [[Special:ListGroupRights|heqê xususiy]] lazımê ke naye vırazê.'''
+Loge peniye cor de este:",
+'templatesused' => '{{PLURAL:$1|Template|Templateyan}} ke ena pele dı ca genê:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Templateyan}} ke na verqayt de xebetnayê:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Templateyan}} ke na qısım de xebetniyenê:',
'template-protected' => '(kılit biyo)',
'template-semiprotected' => '(nimey ena pele kılit biya)',
'hiddencategories' => 'Ena pela bınê {{PLURAL:$1|1 hidden category|$1 categoriyan nımne}}:',
@@ -641,9 +680,17 @@ Serkar o ke kılit kerdo; no beyanat dayo: $1",
'nocreatetext' => '{{SITENAME}}, Pelê neweyi vıraştış re destur çino.
şıma eşkeni tepiya şêri u eke şıma qayd biyaye yê [[Special:UserLogin|şıma eşkeni hesab akeri]], eke niye [[Special:UserLogin|şıma eşkeni qayd bıbiy]].',
'nocreate-loggedin' => 'İcaze şıma çino şıma pelo newe akeri.',
+'sectioneditnotsupported-title' => 'Destekê vurnayışiê qısımi çıniyo',
+'sectioneditnotsupported-text' => 'Destekê vurnayışiê qısımi ena pela vurnayışi de çıniyo.',
'permissionserrors' => 'Xetayê icazeyi',
'permissionserrorstext' => 'Qey {{PLURAL:$1|sebebê|sebebê}} cêrini ra icazeyê şıma çin o:',
'permissionserrorstext-withaction' => 'Desturê to be $2 çıniyo, semedê {{PLURAL:$1|ena sebebi|enê sebeban}} ra:',
+'recreate-moveddeleted-warn' => "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''
+
+Diqet bıkeri no vurnayişê şıma re gerek esto:",
+'moveddeleted-notice' => 'Ma ena pele wederna.
+Qe referansi logê wedernayışi bın de mocnayiya.',
+'log-fulllog' => 'Temamê rocaneyi bıvine',
'edit-hook-aborted' => 'Vurnayiş vınderiya.
Yew sebeb beyan nibı.',
'edit-gone-missing' => 'Pel rocanebiyaye niyo.
@@ -665,6 +712,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
'post-expand-template-argument-category' => 'Pelê ke şablonê eyi qebul niye',
'parser-template-loop-warning' => 'Gıreyê şabloni ca biyo: [[$1]]',
'parser-template-recursion-depth-warning' => 'limitê şablonê newekerdışi biyo de ($1)',
+'language-converter-depth-warning' => 'xoritiya çarnekarê zıwanan viyarnê ra ($1)',
# "Undo" feature
'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
@@ -684,6 +732,7 @@ Sebebo ke terefê $3 ra diyao ''$2''",
'currentrev' => 'Halo nıkayên',
'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
'revisionasof' => 'Verziyonê roca $1ine',
+'revision-info' => 'Teshihkerdışê roca $1ine be terefê $2',
'previousrevision' => '← Çımraviyarnayışo kıhanêr',
'nextrevision' => 'Tekrar-diyayışo newêr →',
'currentrevisionlink' => 'Revizyono peni',
@@ -696,63 +745,122 @@ Sebebo ke terefê $3 ra diyao ''$2''",
Cetwel: (pey) = ferqê versiyonê peni,
(ver) = ferqê versiyonê verni, Q = vurnayışo qıçkek.",
'history-fieldset-title' => 'Tarixê browsey',
-'deletedrev' => '[esterıt]',
+'history-show-deleted' => 'Tenya esterıt',
'histfirst' => 'Verênêr',
'histlast' => 'Peyênêr',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayti}})',
'historyempty' => '(thal)',
# Revision feed
-'history-feed-title' => 'Tarixê çımraviyarnayışi',
-'history-feed-description' => 'Wiki de tarixê çımraviyarnayışê na pele',
-'history-feed-empty' => 'Pela cıgeyrayiye çıniya.
+'history-feed-title' => 'Tarixê çımraviyarnayışi',
+'history-feed-description' => 'Wiki de tarixê çımraviyarnayışê na pele',
+'history-feed-item-nocomment' => '$1 miyanê $2i de',
+'history-feed-empty' => 'Pela cıgeyrayiye çıniya.
Beno ke ena esteriya, ya zi namê cı vuriyo.
Seba pelanê muhimanê newan [[Special:Search|cıgeyrayışê wiki de]] bıcerebne.',
# Revision deletion
-'rev-deleted-comment' => '(tefşir esteriyo)',
-'rev-deleted-user' => '(namey karberi esteriyo)',
-'rev-deleted-event' => '(fealiyetê cıkewtışi esteriyo)',
-'rev-delundel' => 'bımocne/bınımne',
-'revisiondelete' => 'Bıestere/çımraviyarnayışan peyser bia',
-'revdelete-nooldid-title' => 'Çımraviyarnayışo waşte nêvêreno',
-'revdelete-nooldid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew çımraviyarnayışo waşte diyar nêkerdo, çımraviyarnayışo diyarkerde çıniyo, ya ki şıma wazenê ke çımraviyarnayışê nıkayêni bınımnê.',
-'revdelete-nologtype-title' => 'Qet qeydê cınêdiya',
-'revdelete-nologtype-text' => 'Qeydê şımawo diyar çıniyo ke nê fealiyet kewê.',
-'revdelete-nologid-title' => 'Cıkewtış qebul nêbi',
-'revdelete-nologid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew cıkewtışo waşte diyar nêkerdo, ya ki çıkewtışo diyarkerde çıniyo.',
-'revdelete-selected' => "'''[[:$1]]: ra {{PLURAL:$2|çımraviyarnayışo weçinıte|çımraviyarnayışê weçinıtey}}'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Qeydbiyayışo weçinıte|Qeydbiyayışê weçinıtey}}:'''",
-'revdelete-suppress-text' => "Wedardış gani '''tenya''' nê halanê cêrênan de bıxebıtiyo:
+'rev-deleted-comment' => '(tefşir esteriyo)',
+'rev-deleted-user' => '(namey karberi esteriyo)',
+'rev-deleted-event' => '(fealiyetê cıkewtışi esteriyo)',
+'rev-deleted-user-contribs' => '[namey karberi ya zi adresa IPy esteriya - vurnayış iştırakan ra nımniyo]',
+'rev-deleted-text-permission' => "Çımraviyarnayışê ena pele '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-deleted-text-unhide' => "Çımraviyarnayışê ena pele '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+Şıma be idarekerina xo ra şenê hewna [$1 nê çımraviyarnayışi bıvênê], eke wazenê dewam kerê.",
+'rev-suppressed-text-unhide' => "Çımraviyarnayışê ena pele '''dewoşiyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto.
+Şıma be idarekerina xo ra şenê hewna [$1 nê çımraviyarnayışi bıvênê], eke wazenê dewam kerê.",
+'rev-deleted-text-view' => "Çımraviyarnayışê ena pele '''esteriyo'''.
+Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-suppressed-text-view' => "Çımraviyarnayışê ena pele '''dewoşiyo'''.
+Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto.",
+'rev-deleted-no-diff' => "Şıma nêşenê nê ferqi bıvênê, çıke çımraviyarnayışan ra yew '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-suppressed-no-diff' => "Revizyon '''esteriyayo\"' aye ra ti nieşkeno ena diff bivine.",
+'rev-deleted-unhide-diff' => "Çımraviyarnayışanê na ferqi ra yew '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+Şıma be idarekerina xo ra şenê hewna [$1 nê ferqi bıvênê], eke wazenê dewam kerê.",
+'rev-suppressed-unhide-diff' => "Nê revizyonani ra yewi '''çap biyo'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rocaneyê vındertışi] de teferru'ati esti.
+Eke şıma serkari u devam bıkeri [$1 no vurnayiş şıma eşkeni bıvini].",
+'rev-deleted-diff-view' => "Yew revizyonê ena diff '''wedariyayo''.
+Îdarekarî eşkeno ena dif bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} logê wedarnayişî].de detayan esto.",
+'rev-suppressed-diff-view' => "Yew revizyonê ena diff '''suppress'' biyo.
+Îdarekarî eşkeno ena dif bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logê wedarnayişî] de detayan esto.",
+'rev-delundel' => 'bımocne/bınımne',
+'rev-showdeleted' => 'bımocne',
+'revisiondelete' => 'Bıestere/çımraviyarnayışan peyser bia',
+'revdelete-nooldid-title' => 'Çımraviyarnayışo waşte nêvêreno',
+'revdelete-nooldid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew çımraviyarnayışo waşte diyar nêkerdo, çımraviyarnayışo diyarkerde çıniyo, ya ki şıma wazenê ke çımraviyarnayışê nıkayêni bınımnê.',
+'revdelete-nologtype-title' => 'Qet qeydê cınêdiya',
+'revdelete-nologtype-text' => 'Qeydê şımawo diyar çıniyo ke nê fealiyet kewê.',
+'revdelete-nologid-title' => 'Cıkewtış qebul nêbi',
+'revdelete-nologid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew cıkewtışo waşte diyar nêkerdo, ya ki çıkewtışo diyarkerde çıniyo.',
+'revdelete-no-file' => 'Dosya diyarkerdiye çıniya.',
+'revdelete-show-file-confirm' => 'Şıma eminê ke wazenê çımraviyarnayışê esterıtey na dosya "<nowiki>$1</nowiki>" $2 ra $3 de bıvênê?',
+'revdelete-show-file-submit' => 'Heya',
+'revdelete-selected' => "'''[[:$1]]: ra {{PLURAL:$2|çımraviyarnayışo weçinıte|çımraviyarnayışê weçinıtey}}'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Qeydbiyayışo weçinıte|Qeydbiyayışê weçinıtey}}:'''",
+'revdelete-text' => "'''Çımraviyarnayışê esterıtey u kerdışi hewna tarixê pele u qeydan de asenê, hema parçeyê zerrekê dinan areze nêbenê.'''
+Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşenê hewna bıresê zerrekê nımıtey u şenê ey anciya na eyni miyanpele ra peyser biarê.",
+'revdelete-confirm' => 'Ma rica keno testiq bike ti ena hereket keno u ti zano neticeyanê herketanê xo u ti ena hereket pê ena [[{{MediaWiki:Policy-url}}|polici]] ra keno.',
+'revdelete-suppress-text' => "Wedardış gani '''tenya''' nê halanê cêrênan de bıxebıtiyo:
* Melumatê kıfırio mıhtemel
* Melumatê şexio bêmınasıb
*: ''adresa keyey u numreyê têlefoni, numreyê siğorta sosyale, uêb.''",
-'revdelete-legend' => 'Şertanê vênayışi rone',
-'revdelete-hide-text' => 'Nuştey çımraviyarnayışi bınımne',
-'revdelete-hide-name' => "hedef u vaqa' bınımne",
-'revdelete-hide-comment' => 'kılmvatış memocne',
-'revdelete-hide-user' => 'Karber u IP ê ke vurnayiş kerdo bınım.',
-'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
-'revdelete-suppress' => 'Hem ê binan ra hem zi serkaran ra malumatan bınım',
-'revdelete-hide-image' => 'zerreyê dosyayi bınımn',
-'revdelete-unsuppress' => 'reizyonê ke tepiya anciye serbest ker',
-'revdelete-log' => 'Sebeb:',
-'revdelete-logentry' => '[[$1]] qey neyi esayişê revizyon vuriya',
-'logdelete-logentry' => '[[$1]] qey neyi esayişê vaqayi vuriya',
-'revdelete-success' => "''''Esayişê revizyoni bi muvaffaqi eyar bi.'''",
-'logdelete-success' => "'''Esayişê rocaneyi bı muvaffaqi eyar bı.'''",
-'revdel-restore' => 'asayışi bıvurne',
-'pagehist' => 'vere cûyê peli',
-'deletedhist' => 'tarixê hewna şiyaye',
-'revdelete-content' => 'mebhes',
-'revdelete-summary' => 'kılmvatışê vuriyayişi',
-'revdelete-uname' => 'nameyê karberi',
-'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
-'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
-'revdelete-hid' => 'bınım $1',
-'revdelete-unhid' => 'bımoc (musnayiş) $1',
-'revdelete-log-message' => '$2 qey {{PLURAL:$2|revizyon|revizyon}} $1',
-'logdelete-log-message' => '$2 qey {{PLURAL:$2|vaqa|vaqa}} $1',
+'revdelete-legend' => 'Şertanê vênayışi rone',
+'revdelete-hide-text' => 'Nuştey çımraviyarnayışi bınımne',
+'revdelete-hide-image' => 'zerreyê dosyayi bınımn',
+'revdelete-hide-name' => "hedef u vaqa' bınımne",
+'revdelete-hide-comment' => 'kılmvatış memocne',
+'revdelete-hide-user' => 'Karber u IP ê ke vurnayiş kerdo bınım.',
+'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
+'revdelete-radio-same' => '(mevurne)',
+'revdelete-radio-set' => 'Heya',
+'revdelete-radio-unset' => 'Nê',
+'revdelete-suppress' => 'Hem ê binan ra hem zi serkaran ra malumatan bınım',
+'revdelete-unsuppress' => 'reizyonê ke tepiya anciye serbest ker',
+'revdelete-log' => 'Sebeb:',
+'revdelete-submit' => 'Cewab be {{PLURAL:$1|çımraviyarnayışi|çımraviyarnayışan}} de',
+'revdelete-logentry' => '[[$1]] qey neyi esayişê revizyon vuriya',
+'logdelete-logentry' => '[[$1]] qey neyi esayişê vaqayi vuriya',
+'revdelete-success' => "''''Esayişê revizyoni bi muvaffaqi eyar bi.'''",
+'revdelete-failure' => "'''Esayişê revizyoni eyar nibeno:'''
+$1",
+'logdelete-success' => "'''Esayişê rocaneyi bı muvaffaqi eyar bı.'''",
+'logdelete-failure' => "'''Esayişê rocaneyi eyar nêbı:'''
+$1",
+'revdel-restore' => 'asayışi bıvurne',
+'pagehist' => 'vere cûyê peli',
+'deletedhist' => 'tarixê hewna şiyaye',
+'revdelete-content' => 'mebhes',
+'revdelete-summary' => 'kılmvatışê vuriyayişi',
+'revdelete-uname' => 'nameyê karberi',
+'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
+'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
+'revdelete-hid' => 'bınım $1',
+'revdelete-unhid' => 'bımoc (musnayiş) $1',
+'revdelete-log-message' => '$2 qey {{PLURAL:$2|revizyon|revizyon}} $1',
+'logdelete-log-message' => '$2 qey {{PLURAL:$2|vaqa|vaqa}} $1',
+'revdelete-hide-current' => '$2 $1 ney çiye ke wexta diyayene wera (wedar dayiş) xeta da: no reviyon nınımiyeno.',
+'revdelete-show-no-access' => '$2 $1 wexta ke ney tarix de mociyayene xeta da: ne çi "vergırewtı" nişane biyo.
+resayişê şıma çino.',
+'revdelete-modify-no-access' => '$2 $1 no çi yê ke wexta vuriyayene xeta da: no çi "vergırewtı" nişane biyo.
+resayişê şıma çino.',
+'revdelete-modify-missing' => "$1 ID' de wexta ke çiyek vuriyayene xeta vıraziya: database vindbiyaye yo!",
+'revdelete-no-change' => "'''Hişyari:''' $2 $1 no çi re ca ra eyarê esayişi waziyayo.",
+'revdelete-concurrent-change' => '$2 $1 no çi wexta ke vuriya xeta da: wina aseno ke wexta şıma vurnayiş kerdene o enate de yewna te vurnayiş kerdo.
+rocaneyan kontrol bıkere.',
+'revdelete-only-restricted' => 'Xetawa ke maddeyanê rocanê $2, $1ine nımnena: şıma nêşenê maddeyanê ke terefê idarekeran ra nêdiyaeyan, bê weçinıtışê tercihanê vêniyaoğanê binan ra zi yewi, çap kerê.',
+'revdelete-reason-dropdown' => '*sebebê hewna kerdışi umumi
+** ihlalê telifi
+** malumatê şexsiyo ke munasib niye',
+'revdelete-otherreason' => 'ê bini/sebebê bini',
+'revdelete-reasonotherlist' => 'sebebê bini',
+'revdelete-edit-reasonlist' => 'sebebê hewna kerdışani bıvurn',
+'revdelete-offender' => 'nuştoxê revizyoni:',
# Suppression log
'suppressionlog' => 'qeydê pinani kerdışi',
@@ -788,67 +896,13 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
'mergelogpagetext' => 'Cêr de jû liste esta ke mocnena ra, raya tewr peyêne kamci pela tarixi be a bine ra şanawa pê.',
# Diffs
-'history-title' => 'Tarixê revizyoniyê "$1"',
-'difference' => '(Ferqê revizyonan)',
-'lineno' => 'Rêza $1i:',
-'compareselectedversions' => 'Verziyonan kontrol bıke',
-'visualcomparison' => 'miqayesê şeklî',
-'wikicodecomparison' => 'Miqayesê wikitextî',
-'editundo' => 'peyser bia',
-'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} nimocno)',
-'diff-movedto' => 'berd $1',
-'diff-styleadded' => '$1 stil pa biya',
-'diff-added' => '$1 pa biya',
-'diff-changedto' => '$1 vurna',
-'diff-movedoutof' => ' $1 ra berd',
-'diff-styleremoved' => 'stilê $1 wedarna',
-'diff-removed' => '$1 wedarna',
-'diff-changedfrom' => '$1 ra vurna',
-'diff-src' => 'çime',
-'diff-withdestination' => 'pê destinasyonê $1î',
-'diff-with' => '&#32;pê $1 $2',
-'diff-with-final' => '&#32;u $1 $2',
-'diff-width' => 'verni',
-'diff-height' => 'dergî',
-'diff-p' => "yew '''paragraf'''",
-'diff-blockquote' => "yew '''vate'''",
-'diff-h1' => "jû '''sere (sewiyay 1ıne)'''",
-'diff-h2' => "jû '''sere (sewiyay 2ıne)'''",
-'diff-h3' => "jû '''sere (sewiyay 3ıne)'''",
-'diff-h4' => "jû '''sere (sewiyay 4ıne)'''",
-'diff-h5' => "jû '''sere (sewiyay 5ıne)'''",
-'diff-pre' => "yew '''bloko verde ra formatkerde'''",
-'diff-div' => "yew '''ciya'''",
-'diff-ul' => "yew '''listeyê nemîzanî'''",
-'diff-ol' => "yew '''listeyê mîzanî'''",
-'diff-li' => "yew '''listeyê maddeyî''''''",
-'diff-table' => "yew '''tablo'''",
-'diff-tbody' => "yew '''tedeestey tabloy'''",
-'diff-tr' => "yew '''xete'''",
-'diff-td' => "yew '''hucre'''",
-'diff-th' => "yew '''sere'''",
-'diff-br' => "yew '''paragraf'''",
-'diff-hr' => "yew '''peymeko verarde'''",
-'diff-code' => "yew '''blokê codê computerî'''",
-'diff-dl' => "yew '''listeyê menayî'''",
-'diff-dt' => "yew '''terimê menayî'''",
-'diff-dd' => "yew '''mena'''",
-'diff-input' => "yew '''cikewtoğ'''",
-'diff-form' => "yew '''form'''",
-'diff-img' => "yew '''şekl'''",
-'diff-span' => "yew ''keyîş'''",
-'diff-a' => "yew '''link'''",
-'diff-i' => "'''çewt'''",
-'diff-b' => "'''kalin'''",
-'diff-strong' => "'''quwetın'''",
-'diff-em' => "'''gıraniye'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''gırd'''",
-'diff-del' => "'''wedarnaye'''",
-'diff-tt' => "'''derganê verni '''",
-'diff-sub' => "'''nuşteyê binî'''",
-'diff-sup' => "'''nuşteyê serî'''",
-'diff-strike' => "'''striktrug'''",
+'history-title' => 'Tarixê revizyoniyê "$1"',
+'difference' => '(Ferqê revizyonan)',
+'lineno' => 'Rêza $1i:',
+'compareselectedversions' => 'Verziyonan kontrol bıke',
+'showhideselectedversions' => 'Revizyonanê weçinıtan bımocne/bınımne',
+'editundo' => 'peyser bia',
+'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} nimocno)',
# Search results
'searchresults' => 'Neticeyê cıgeyrayışi',
@@ -856,27 +910,25 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
'searchresulttext' => 'Zerrey {{SITENAME}} de heqa cıgeyrayışi de seba melumat gırewtışi, şenay qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
'searchsubtitleinvalid' => "Tı cıgeyra qe '''$1'''",
-'noexactmatch' => "'''Ena nameyê \"\$1\"''' dı nuşte çino.
-Tı şeno/eşkeno [[:\$1|ena name dı nuşte bınusi]].",
-'noexactmatch-nocreate' => "'''Ena name \"\$1\" dı pele çino.'''",
'toomanymatches' => 'Zêde teki (zewci) peyser çarnay, şıma rê zehmet, be persê do bin ra bıcerrebnên.',
'titlematches' => 'tekê (zewcê) sernamey pele',
'notitlematches' => 'Tekê (zewcê) sernamey pele çıniyê.',
'textmatches' => 'Tekê (zewcê) nuştey pele',
'notextmatches' => 'tekê (zewcê) nuştey pele çıniyê',
-'prevn' => '$1 verên',
-'nextn' => '$1 peyên',
+'prevn' => '{{PLURAL:$1|$1}} verên',
+'nextn' => '{{PLURAL:$1|$1}} peyên',
'prevn-title' => '$1o verên {{PLURAL:$1|netice|neticeyan}}',
'nextn-title' => '$1o ke yeno {{PLURAL:$1|netice|neticey}}',
'shown-title' => 'bimocne $1î {{PLURAL:$1|netice|neticeyan}} ser her pel',
-'viewprevnext' => '($1) ($2) ($3) bıvênên',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bıvênên',
'searchmenu-legend' => 'bıgeyre tercihan (sae bıke)',
'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
'searchmenu-new' => "''Na Wikipediya de pela \"[[:\$1]]\" vıraze!'''",
'searchhelp-url' => 'Help:Tedeestey',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
-'searchprofile-project' => 'Pelê procey',
-'searchprofile-images' => 'Dosyey',
+'searchprofile-articles' => 'Pelê tedeestey',
+'searchprofile-project' => 'Pelê yardım u projey',
+'searchprofile-images' => 'Multimedya',
'searchprofile-everything' => 'Hemi',
'searchprofile-advanced' => 'Reverşiyoğî',
'searchprofile-articles-tooltip' => '$1 de bigêre',
@@ -896,11 +948,12 @@ Tı şeno/eşkeno [[:\$1|ena name dı nuşte bınusi]].",
'search-mwsuggest-disabled' => 'teklifi çıniyê',
'search-relatedarticle' => 'Eqreba',
'mwsuggest-disable' => 'Tewsiyay AJAXi bıgê',
+'searcheverything-enable' => 'cayê nameyê hemi de bigêre',
'searchrelated' => 'eleqayî',
'searchall' => 'têdıne',
'showingresults' => "Heta {{PLURAL:$1|'''1''' netice|'''$1''' neticeyan}} ke pê #'''$2''' başli beno ey bimocne .",
'showingresultsnum' => "Heta binê {{PLURAL:$3|'''1''' netice|'''$3''' neticeyan}} ke pê #'''$2''' başli beno ey bimocne .",
-'showingresultstotal' => "mucneno bın {{PLURAL:$4|netice '''$1''' of '''$3'''|neticeyan '''$1 - $2''' of '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' of '''$3'''}} qe '''$4'''",
'nonefound' => "'''Teme''': Teyna tay namecayan cıgeyro beno.
Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mınaqeşe, templatenan, ucb.) ya zi cıgeyro ser namecay ki tı wazeni.",
'search-nonefound' => 'Ser ena çekuye de netice çino',
@@ -909,102 +962,150 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
'powersearch-ns' => 'Cayanê nameyan de cıgeyrayış:',
'powersearch-redir' => 'Raçarnayeyan lista ke',
'powersearch-field' => 'Cıgeyre',
+'powersearch-togglelabel' => 'Qontrol ke:',
+'powersearch-toggleall' => 'Pêro',
+'powersearch-togglenone' => 'Çıniyo',
'search-external' => 'Cıgeyrayışê teberi',
'searchdisabled' => '{{SITENAME}} no keyepel de cıgerayiş muweqqet bıryayo. no benatê de şıma pê Google eşkeni zerreyê {{SITENAME}} de cıgerayiş bıkeri.',
+# Quickbar
+'qbsettings' => 'Çûwo pêt',
+'qbsettings-none' => 'çıniyo',
+'qbsettings-fixedleft' => 'Rêcaene çhep',
+'qbsettings-fixedright' => 'Rêcaene raşt',
+'qbsettings-floatingleft' => 'rêcaene çhep',
+'qbsettings-floatingright' => 'rêcaene raşt',
+
# Preferences page
-'preferences' => 'Tercihi',
-'mypreferences' => 'tercihê mı',
-'prefs-edits' => 'Amarê vurnayışan:',
-'prefsnologin' => 'Şıma cıkewtış nêvıraşto',
-'qbsettings' => 'Çûwo pêt',
-'qbsettings-none' => 'çıniyo',
-'qbsettings-fixedleft' => 'Rêcaene çhep',
-'qbsettings-fixedright' => 'Rêcaene raşt',
-'qbsettings-floatingleft' => 'rêcaene çhep',
-'qbsettings-floatingright' => 'rêcaene raşt',
-'changepassword' => 'parola bivurne',
-'skin-preview' => 'Verqayt',
-'datedefault' => 'Tercih çino',
-'datetime' => 'Tarix u zeman',
-'math_failure' => 'Parse de ğeleti biyo',
-'math_unknown_error' => 'ğeleti nizanyeno',
-'math_unknown_function' => 'fonksiyon nizanyeno',
-'math_lexing_error' => 'ğeleto lexing',
-'math_syntax_error' => 'ğeleto sintaks',
-'math_image_error' => 'Conversiyonê PNG de ğeleti esta;
-qe ronayişê raşti ye latex, dvips, gs kontrol bike u convert bike',
-'math_bad_tmpdir' => 'Nieşkeno binusi ya zi direktorê mathi virazi',
-'math_bad_output' => 'Nieşkeno binusi ya zi direktorê mathi ye outputi virazi',
-'math_notexvc' => "xebetnayekarê texvc'i vindbiyo
-qey 'eyar kerdışi bıewnê math/README'yi.",
-'prefs-personal' => 'Pela karberi',
-'prefs-rc' => 'Vurnayışê peyêni',
-'prefs-watchlist' => 'Lista seyr-kerdışi',
-'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
-'prefs-watchlist-edits' => 'tewr zêde amarê vurnayışi ke lista seyrkerdışia herakerdiye de bıasê:',
-'prefs-misc' => 'ê bini',
-'prefs-resetpass' => 'Parala bivurne',
-'saveprefs' => 'Qeyd ke',
-'resetprefs' => 'Vurnayışê ke qeyd nêbiy, pak ke',
-'restoreprefs' => 'Eyaranê standardan pêroine peyser bia',
-'textboxsize' => 'Vurnayış',
-'prefs-edit-boxsize' => 'Ebatê pencereyê vurnayîşî.',
-'rows' => 'Xeti:',
-'columns' => 'Estûni:',
-'searchresultshead' => 'Cı geyre',
-'resultsperpage' => 'Serê pele amarê cıkewtoğan:',
-'contextlines' => 'serê amarê cıkewtışi rê xeti',
-'contextchars' => 'serê xete elaqa',
-'stub-threshold' => 'Baraj ke <a href="#" class="stub">stub link</a> ho şekil dano (bîtî):',
-'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
-'savedprefs' => 'Tecihê şıma qeyd biy.',
-'timezonelegend' => 'Warey saete:',
-'localtime' => 'saeta mehelliye:',
-'timezoneselect' => 'Warey saete:',
-'timezoneuseserverdefault' => 'Ser serverê defaultî de gure bike',
-'timezoneuseoffset' => 'Zewbina (offseti beli bıke)',
-'timezoneoffset' => 'Offset¹:',
-'servertime' => 'Wextê serveri:',
-'guesstimezone' => 'Browser ra pırr ke',
-'timezoneregion-africa' => 'Afriqa',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Esya',
-'timezoneregion-atlantic' => 'Okyanuso Atlantik',
-'timezoneregion-australia' => 'Evistiralya',
-'timezoneregion-europe' => 'Ewrope',
-'timezoneregion-indian' => 'Okyanuso Hind',
-'timezoneregion-pacific' => 'Okyanuso Pasifik',
-'allowemail' => 'Karberanê binan ra e-mail qebul bıke',
-'prefs-searchoptions' => 'Tercihê cıgeyrayışi',
-'prefs-namespaces' => 'Caê namey',
-'default' => 'default',
-'files' => 'Dosyey',
-'prefs-custom-css' => 'CSSê xasi',
-'prefs-custom-js' => 'JSê xasi',
+'preferences' => 'Tercihi',
+'mypreferences' => 'tercihê mı',
+'prefs-edits' => 'Amarê vurnayışan:',
+'prefsnologin' => 'Şıma cıkewtış nêvıraşto',
+'prefsnologintext' => 'Şıma gani be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cikewte]</span> ke tercihanê karberi xo eyar bıkerê.',
+'changepassword' => 'parola bivurne',
+'prefs-skin' => 'Çerme',
+'skin-preview' => 'Verqayt',
+'prefs-math' => 'Math',
+'datedefault' => 'Tercih çino',
+'prefs-datetime' => 'Wext u Tarix',
+'prefs-personal' => 'Pela karberi',
+'prefs-rc' => 'Vurnayışê peyêni',
+'prefs-watchlist' => 'Lista seyr-kerdışi',
+'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
+'prefs-watchlist-days-max' => 'Tewr zêde/vêşi 7 roci',
+'prefs-watchlist-edits' => 'tewr zêde amarê vurnayışi ke lista seyrkerdışia herakerdiye de bıasê:',
+'prefs-watchlist-edits-max' => 'Amerê tewr zafî: 1000',
+'prefs-watchlist-token' => 'Lista seyrkerdışia nışani:',
+'prefs-misc' => 'ê bini',
+'prefs-resetpass' => 'Parala bivurne',
+'prefs-email' => 'Tercihê e-maili',
+'prefs-rendering' => 'Asayış',
+'saveprefs' => 'Qeyd ke',
+'resetprefs' => 'Vurnayışê ke qeyd nêbiy, pak ke',
+'restoreprefs' => 'Eyaranê standardan pêroine peyser bia',
+'prefs-editing' => 'Ho vurnayeno',
+'prefs-edit-boxsize' => 'Ebatê pencereyê vurnayîşî.',
+'rows' => 'Xeti:',
+'columns' => 'Estûni:',
+'searchresultshead' => 'Cı geyre',
+'resultsperpage' => 'Serê pele amarê cıkewtoğan:',
+'contextlines' => 'serê amarê cıkewtışi rê xeti',
+'contextchars' => 'serê xete elaqa',
+'stub-threshold' => 'Baraj ke <a href="#" class="stub">stub link</a> ho şekil dano (bîtî):',
+'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
+'recentchangesdays-max' => 'Tewr zaf $1 {{PLURAL:$1|roc|roci}}',
+'recentchangescount' => 'Amarê vurnayışiê ke standard bıasê:',
+'prefs-help-recentchangescount' => 'Ney de vurnayışê peyêni, tarixê pelan u cıkewteni asenê.',
+'prefs-help-watchlist-token' => 'Eke no ca pê kılito dızdeni/miyanki pırr bo, lista şımawa seyrkerdışi rê yew cıresnayışê RSSi vıraziyeno.
+Her kamo ke nê kılitê nê cay zaneno, şeno lista şımawa seyrkerdışi ki bıwano, coke ra yewo sağlem weçine.
+Etıya şıma rê yew kılito raştameo ke şıma şenê bıgurenê/bıxebetnê: $1',
+'savedprefs' => 'Tecihê şıma qeyd biy.',
+'timezonelegend' => 'Warey saete:',
+'localtime' => 'saeta mehelliye:',
+'timezoneuseserverdefault' => 'Ser serverê defaultî de gure bike',
+'timezoneuseoffset' => 'Zewbina (offseti beli bıke)',
+'timezoneoffset' => 'Offset¹:',
+'servertime' => 'Wextê serveri:',
+'guesstimezone' => 'Browser ra pırr ke',
+'timezoneregion-africa' => 'Afriqa',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Esya',
+'timezoneregion-atlantic' => 'Okyanuso Atlantik',
+'timezoneregion-australia' => 'Evistiralya',
+'timezoneregion-europe' => 'Ewrope',
+'timezoneregion-indian' => 'Okyanuso Hind',
+'timezoneregion-pacific' => 'Okyanuso Pasifik',
+'allowemail' => 'Karberanê binan ra e-mail qebul bıke',
+'prefs-searchoptions' => 'Tercihê cıgeyrayışi',
+'prefs-namespaces' => 'Caê namey',
+'defaultns' => 'Eke heni, enê cayanê namey de cı geyre (sae ke):',
+'default' => 'default',
+'prefs-files' => 'Dosyey',
+'prefs-custom-css' => 'CSSê xasi',
+'prefs-custom-js' => 'JSê xasi',
+'prefs-reset-intro' => 'ena pele de şıma tercihanê xo şenê bıçarnê be tercihanê keyepelê ke verê coy eyar biy.
+Na game tepeya nêerziyena.',
+'prefs-emailconfirm-label' => 'Konfirmasyonê e-maili',
+'prefs-textboxsize' => 'Ebatê pencerey vurnayışi',
+'youremail' => 'E-Mail (mecbur niyo) *:',
+'username' => 'Namey karberi:',
+'uid' => 'Namey karberi:',
+'prefs-memberingroups' => 'Ezayê {{PLURAL:$1|grup|grupan}}:',
+'prefs-registration' => 'Wextê qeydbiyayışi',
+'yourrealname' => 'Nameyo raştıkên:',
+'yourlanguage' => 'Zıwan:',
+'yournick' => 'imza:',
+'prefs-help-signature' => 'mesajê ke pelê werenayişi de gani pê ney "<nowiki>~~~~</nowiki>" imza bıbi.',
+'badsig' => 'Îmzayê tu raşt niyo.
+Etiketê HTMLî kontrol bike.',
+'badsiglength' => 'İmzayê şıma zaf dergo.
+$1 gani bınê no {{PLURAL:$1|karakter|karakter}}de bıbo.',
+'yourgender' => 'Cınsiyetê to:',
+'gender-unknown' => 'Cınsiyet nêvato',
+'gender-male' => 'cıwamêrd',
+'gender-female' => 'Cenıke',
+'prefs-help-gender' => 'keyfiyo: sofware qey adersê cinsiyet şuxulneno, no malumat umumiyo.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Nameyo raşt waştena şıma rê mendo.
+Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de mocnenê.',
+'prefs-help-email' => 'Dayişê adresê e-postayi keyfiyo; labele wexta ke parolayê şıma vind bıbo yew adres bıbo şıma re yewna parola erşawiyeno. Hem zi karberê binan de şıma eşkeni nımtıki xeberdayişi bıkeri.',
+'prefs-help-email-required' => 'E-mail adrese mecburiya.',
+'prefs-info' => 'Enformasyonê temelî',
+'prefs-i18n' => 'Beynelbinel kerdişî',
+'prefs-signature' => 'İmza',
+'prefs-dateformat' => 'Formatê tarixi',
+'prefs-timeoffset' => 'Wext offset',
+'prefs-advancedediting' => 'Tercihê raverberdey',
+'prefs-advancedrc' => 'Tercihê raverberdey',
+'prefs-advancedrendering' => 'Tercihê raverberdey',
+'prefs-advancedsearchoptions' => 'Tercihê raverberdey',
+'prefs-advancedwatchlist' => 'Tercihê raverberdey',
+'prefs-display' => 'Tercihan bımocne',
+'prefs-diffs' => 'Diffs',
# User rights
-'userrights' => 'İdarey heqanê karberan', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Grubanê karberi/karbere idare bıke',
-'userrights-user-editname' => 'Yew namey karberi bınusne',
-'editusergroup' => 'Grupanê karberi/karbere bıvurne (bıbedelne)',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) Vurnaena heqanê karberanê karberi",
-'userrights-editusergroup' => 'Grubanê karberi/karbere sero bıgureye (bıxebetiye)',
-'saveusergroups' => 'Grubanê karberi qeyd bıke',
-'userrights-groupsmember' => 'Ezaê / Ezaya:',
-'userrights-groups-help' => 'şıma şenê grubanê nê karberi/na karbere, oyo/aya ke tede, bıvurnê:
+'userrights' => 'İdarey heqanê karberan',
+'userrights-lookup-user' => 'Grubanê karberi/karbere idare bıke',
+'userrights-user-editname' => 'Yew namey karberi bınusne',
+'editusergroup' => 'Grupanê karberi/karbere bıvurne (bıbedelne)',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) Vurnaena heqanê karberanê karberi",
+'userrights-editusergroup' => 'Grubanê karberi/karbere sero bıgureye (bıxebetiye)',
+'saveusergroups' => 'Grubanê karberi qeyd bıke',
+'userrights-groupsmember' => 'Ezaê / Ezaya:',
+'userrights-groupsmember-auto' => 'Ezao daxıl/ezaa daxıle ê:',
+'userrights-groups-help' => 'şıma şenê grubanê nê karberi/na karbere, oyo/aya ke tede, bıvurnê:
* qutiya ke nışankerdiya, mocnena ke karber/e na grube dero/dera.
* qutiya ke nışankerdiye niya, mocnena ke karber/ na grube de niyo/niya.
* Yew estare * mocneno ke, gruba ke şıma kerda ra ser (daxıl kerda), şıma nêşenê wedarê/hewa dê ya ki dêmlaşta/tersê cı.',
-'userrights-reason' => 'Sebeb:',
-'userrights-no-interwiki' => 'Heqa şıma çıniya ke heqanê karberanê Wikipediyanê binan sero bıgureyê.',
-'userrights-nodatabase' => 'Database $1 çıniyo ya zi mehelli niyo.',
-'userrights-nologin' => 'Eke şıma wazenê ke heqa karberi/karbere cı dê, şıma gani be [[Special:UserLogin|cikewtiye]] pê yew hesabê idarekeran cı kewê',
-'userrights-notallowed' => 'İzna hesabê şıma çıniya ke heqa karberan cı dê.',
-'userrights-changeable-col' => 'Grubê ke şıma şenê bıvurnê',
-'userrights-unchangeable-col' => 'Grubê ke şıma nêşenê bıvurnê',
+'userrights-reason' => 'Sebeb:',
+'userrights-no-interwiki' => 'Heqa şıma çıniya ke heqanê karberanê Wikipediyanê binan sero bıgureyê.',
+'userrights-nodatabase' => 'Database $1 çıniyo ya zi mehelli niyo.',
+'userrights-nologin' => 'Eke şıma wazenê ke heqa karberi/karbere cı dê, şıma gani be [[Special:UserLogin|cikewtiye]] pê yew hesabê idarekeran cı kewê',
+'userrights-notallowed' => 'İzna hesabê şıma çıniya ke heqa karberan cı dê.',
+'userrights-changeable-col' => 'Grubê ke şıma şenê bıvurnê',
+'userrights-unchangeable-col' => 'Grubê ke şıma nêşenê bıvurnê',
# Groups
'group' => 'Grup:',
@@ -1057,6 +1158,7 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
'right-bigdelete' => 'Pelanê be tarixanê dergan bestere',
'right-deleterevision' => 'Vurnayışê xısusiyê ke ê pelanê, inan bestere ya peyser bia',
'right-deletedhistory' => 'Qeydanê tarixanê esterıteyan de qayt ke, bê nuştey inan',
+'right-deletedtext' => 'Mabênê newede vurnayışanê esterıtiyan de qaytê nuştey esterıtey u vurnayışan ke',
'right-browsearchive' => 'Bıgeyre pelanê eserıtiyan',
'right-undelete' => 'Jû pela esterıtiye peyser bia',
'right-suppressrevision' => 'İdarekeran ra dızdeni/miyanki, newede vurnayışan de qayt ke u newede vıraze',
@@ -1070,6 +1172,8 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
'right-editprotected' => 'Pelanê pawıtiyan sero bıgureye (bê pawıtena kaskadi (game be game))',
'right-editinterface' => 'Interfaceê karberi sero bıgureye',
'right-editusercssjs' => 'CSS u dosyanê JSiê karberanê binan sero bıgureye',
+'right-editusercss' => 'Dosyanê CSSiê karberanê binan sero bıgureye',
+'right-edituserjs' => 'Dosyanê JSiê karberanê binan sero bıgureye',
'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
'right-markbotedits' => 'Vurnayışanê tekraran zey vurnayışanê boti nışan bıde',
'right-noratelimit' => 'Sinoranê xızi (rate limit) ra tesir nêbi',
@@ -1086,6 +1190,8 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
'right-siteadmin' => 'Database kilit bike u a bike',
'right-reset-passwords' => 'Parolayê karberanê binî reset bike',
'right-override-export-depth' => 'Peleyanê ke tede linkanê 5 ra zafyer estê ay export bike',
+'right-versiondetail' => 'Enformasyonê versiyonê software yê detayî bimocne',
+'right-sendemail' => 'Karberanê binî ra e-mail bişirav',
# User rights log
'rightslog' => 'Qeydê heqanê karberi',
@@ -1135,7 +1241,17 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
'recentchanges-legend' => 'Tercihê vurnayışanê peniyan',
'recentchangestext' => 'eno pele de ser wîkî de vurnayîşî penîyî teqib bike',
'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
+'recentchanges-label-legend' => 'Nişan: $1.',
+'recentchanges-legend-newpage' => '$1 - pela newi',
+'recentchanges-label-newpage' => 'Ena edît yew pela newî viraşt',
+'recentchanges-legend-minor' => '$1 - vurnayışo qıckek',
+'recentchanges-label-minor' => 'Eno yew edîto qickek o',
+'recentchanges-legend-bot' => '$1 - vurnayışê boti',
+'recentchanges-label-bot' => 'Eno vurnayış terefê yew boti ra vıraziyo',
+'recentchanges-legend-unpatrolled' => '$1 - edîto patrol nibiyo',
+'recentchanges-label-unpatrolled' => 'Eno edît patrol nibiyo',
'rcnote' => "Bıni dı {{PLURAL:$1|is '''1''' vurnayış|peni '''$1''' vurnayışan estê}} {{PLURAL:$2|roc|'''$2''' roci}}, hetani $5, $4.",
+'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver (heta '''$1''' mucnayiyo).",
'rclistfrom' => '$1 ra vurnayışanê neweyan bımoc',
'rcshowhideminor' => '$1 vurnayışê qıçan',
'rcshowhidebots' => '$1 botan',
@@ -1151,7 +1267,6 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
'minoreditletter' => 'q',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 ho seyr keno {{PLURAL:$1|karber|karberî}}]',
'rc_categories' => 'Kategoriyanî rê limît bike (pê "|" ciya bike)',
'rc_categories_any' => 'Her yew',
@@ -1161,6 +1276,8 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
# Recent changes linked
'recentchangeslinked' => 'Ney sero vurnayışi',
+'recentchangeslinked-feed' => 'Ney sero vurnayışi',
+'recentchangeslinked-toolbox' => 'Ney sero vurnayışi',
'recentchangeslinked-title' => 'vurnayışan ser "$1"',
'recentchangeslinked-noresult' => 'Pelanê ke link biye ey vurnayîşî çino.',
'recentchangeslinked-summary' => "Lista cêrêne, pela bêlikerdiye rê (ya zi karberanê kategoriya bêlikerdiye rê) pelanê gırêdaoğan de lista de vurnayışê peyênana.
@@ -1171,8 +1288,8 @@ qey 'eyar kerdışi bıewnê math/README'yi.",
# Upload
'upload' => 'Dosya bar ke',
'uploadbtn' => 'Dosya bar ke',
-'reupload' => 'Reyna bar bike',
'reuploaddesc' => 'Barkerdışi iptal ke u peyser şo formê barkerdışi',
+'upload-tryagain' => 'Deskripyonê dosyayî ke vurîya ey qeyd bike',
'uploadnologin' => 'Nicikewte',
'uploadnologintext' => 'Ti gani [[Special:UserLogin|cikewte]] biyo ke dosya bar bike.',
'upload_directory_missing' => 'Direktorê dosyayê ($1)î biyo vînî u webserver de nieşkeno viraziye.',
@@ -1203,6 +1320,7 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
'minlength1' => 'Nameyanê dosyayî de gani bî ezamî yew herf est biyê.',
'illegalfilename' => '"$1" no nameyê dosya de tayê karakteri nêşuxulyenî. newe ra tesel bıkerê',
'badfilename' => "Nameyanê dosyayî ''$1'' rê vurneyî biye.",
+'filetype-mime-mismatch' => 'Ekstesiyanê dosyayi tipê MIME rast niyena.',
'filetype-badmime' => 'Dosyaye ke tipê MIME "$1"î de bar nibeno.',
'filetype-bad-ie-mime' => 'na dosya bar nebena çunke Internet Explorer na dosya "$1" zerarın vinena.',
'filetype-unwanted-type' => "'''\".\$1\"''' na tewırê dosyayi nêwazyena. pêşniyaz biyaye {{PLURAL:\$3|tewırê dosyayi|tewırê dosyayi}} \$2.",
@@ -1234,6 +1352,7 @@ eke şıma hhene zi qayili dosyaya xo bar keri ager3e u newe yew name bışuxuln
'file-deleted-duplicate' => 'hemzeyê na dosyayi ([[$1]]) cuwa ver battal biya.',
'successfulupload' => 'bar biyo',
'uploadwarning' => 'Îkazê bar kerdişî',
+'uploadwarning-text' => 'Bînê de deskripyonê dosyayî bivurne u reyna qeyd bike.',
'savefile' => 'Dosya qeyd ke',
'uploadedimage' => '"[[$1]]" bar bi',
'overwroteimage' => 'yew versiyonê newvî ye "[[$1]]"î bar bike',
@@ -1241,11 +1360,14 @@ eke şıma hhene zi qayili dosyaya xo bar keri ager3e u newe yew name bışuxuln
'uploaddisabledtext' => 'Bar kerdişê dosyayî iptal biyo',
'php-uploaddisabledtext' => 'barkerdışê dosyayê PHP nıka çino. kerem kere eyarê file_uploads korol bıkerê.',
'uploadscripted' => 'Ena dosya de yew HTML ya zi kodê scriptî este ke belki browserê webî fam nikeno.',
-'uploadcorrupt' => 'na dosya ya xerebnaye ya ya zi yew qısmê aye şaş a. Dosya kontrol bıkerê u newe ra bar kerê.',
'uploadvirus' => 'Ena dosya de yew virus estê: Qe detayan: $1',
+'upload-source' => 'Dosyayê henî',
'sourcefilename' => 'Nameyê dosyaye çimeyî',
+'sourceurl' => 'URLê henî',
'destfilename' => 'Destînasyonê nameyêdosya',
'upload-maxfilesize' => 'Ebatêî dosya tewr girdî: $1',
+'upload-description' => 'Deskripsiyonê dosyayî',
+'upload-options' => 'Tercihanê bar kerdişî',
'watchthisupload' => 'Ena dosya seyr bike',
'filewasdeleted' => 'no name de yew dosya yew wexto nızdi de bar biya u dıma zi serkaran hewn a kerdo. wexya ke şıma dosya bar keni bıewnê no pel $1.',
'upload-wasdeleted' => "'''hişyari: dosyaya ke cuwa ver hewna biya şıma newe ra bar keni.'''
@@ -1255,15 +1377,46 @@ qaydê hewna biyayeyan tiya de pêşkeş biya:",
'filename-bad-prefix' => "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"\$1\"''' destpêkeno .
kerem kere yewna nameyo eşkera bıvicinê.",
-'upload-proto-error' => 'Porotokol raşt ni yo.',
-'upload-proto-error-text' => 'Bar kerdişê durî gani URLî estbiye ke pe <code>http://</code> ya zi <code>ftp://</code> başli beno.',
-'upload-file-error' => 'Ğeletê dahilî',
-'upload-file-error-text' => 'Peşkeşwan de wexta yew dosya vıraziyayene xeta bı.
+'upload-proto-error' => 'Porotokol raşt ni yo.',
+'upload-proto-error-text' => 'Bar kerdişê durî gani URLî estbiye ke pe <code>http://</code> ya zi <code>ftp://</code> başli beno.',
+'upload-file-error' => 'Ğeletê dahilî',
+'upload-file-error-text' => 'Peşkeşwan de wexta yew dosya vıraziyayene xeta bı.
kerem kerê [[Special:ListUsers/sysop|serkari]]de irtibat kewe.',
-'upload-misc-error' => 'Ğeletê bar kerdişî nizanyeno',
-'upload-misc-error-text' => 'wextê barkerdişî de yew xetayo mechul vırazîya.
+'upload-misc-error' => 'Ğeletê bar kerdişî nizanyeno',
+'upload-misc-error-text' => 'wextê barkerdişî de yew xetayo mechul vırazîya.
konrol bıkeri şıma besteyi? Ya zi şıma karo raşt keni?
Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
+'upload-too-many-redirects' => 'Eno URL de zaf redireksiyonî esto.',
+'upload-unknown-size' => 'ebat nizanyeno',
+'upload-http-error' => 'Yew ğeletê HTTPî biyo: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Cıkewtış red biyo',
+'img-auth-nopathinfo' => 'PATH_INFO kêm o.
+pêşkeşwanê şıma no malumat eyar nıkerdo.
+CGI-no tewır ra yo belka ya zi img_auth ra yo.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization re bıewne.',
+'img-auth-notindir' => 'Patikayê ke ti wazeno direktorê bar biyayişî de çin o.',
+'img-auth-badtitle' => '"$1" ra nieşkeno yew seroğê raştî virazî.',
+'img-auth-nologinnWL' => 'Ti cikewte ni yo u "$1" listeyo sipê de çin o.',
+'img-auth-nofile' => "Dosyayê ''$1''î çin o.",
+'img-auth-isdir' => '"$1" şıma gêrenî bıresî tiya.
+şıma têna eşkenî bıresi dosya.',
+'img-auth-streaming' => '"$1" stream keno.',
+'img-auth-public' => "img_auth.php'nin fonksiyonê ney; wiki ra dosyaya xususiyan vetışo.
+no wiki bı umumi eyar biyo.
+qey pawıtışi, img_auth.php battal verdiyayo.",
+'img-auth-noread' => 'Heqqa karberanî çino ke "$1" biwendi',
+
+# HTTP errors
+'http-invalid-url' => 'URL raşt niya: $1',
+'http-invalid-scheme' => 'URLan ke pê şablonê "$1"i rê destek cini ya.',
+'http-request-error' => 'Waştişê tu HTTP de xeta biya seba yew xetayê ke nizanyeno.',
+'http-read-error' => 'Wendişê HTTP de xeta esta.',
+'http-timed-out' => 'Waştişê HTTP qediya.',
+'http-curl-error' => 'Xetayê URLi: $1',
+'http-host-unreachable' => 'URL rê niresa.',
+'http-bad-status' => 'Waştişê tu HTTP yew problem biya: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL rê nieşkeno biraso',
@@ -1275,6 +1428,7 @@ bıewnê keyepel akerdeyo ya zi bıne vınderê u newe ra tesel bıkerê.
keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
'license' => 'Lisans:',
+'license-header' => 'Lisans',
'nolicense' => 'Çik niweçiyeyo',
'license-nopreview' => '(verqeydî çin o)',
'upload_source_url' => '(yew URLê raştî, şar rê akerde yo)',
@@ -1293,6 +1447,7 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
'listfiles_count' => 'Versiyoni',
# File description page
+'file-anchor-link' => 'Dosya',
'filehist' => 'Tarixê dosya',
'filehist-help' => 'Klik bık ser yew tarih u aye tarih dı versionê dosya bıvin.',
'filehist-deleteall' => 'hemî biestere',
@@ -1307,6 +1462,7 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
'filehist-dimensions' => 'Dimensiyoni',
'filehist-filesize' => 'Ebatê dosyayî',
'filehist-comment' => 'Rexne',
+'filehist-missing' => 'Dosya nieseno',
'imagelinks' => 'Gıreyê dosya',
'linkstoimage' => 'Ena {{PLURAL:$1|pelge şın|$1 pelgayan şın}} ena dosya:',
'linkstoimage-more' => '$1 ra ziyed {{PLURAL:$1|pel|pel}} re gırey dano.
@@ -1316,11 +1472,14 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Linkanê zafyerî]] ena pele ra link biyo bivîne.',
'redirectstofile' => 'Eno {{PLURAL:$1|dosya redireksiyon keno |$1 dosyayî redireksiyonî kenê}} ena dosya:',
'duplicatesoffile' => 'a {{PLURAL:$1|dosya|$1 dosya}}, kopyayê na dosyayi ([[Special:FileDuplicateSearch/$2|teferruati]]):',
-'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage-linktext' => 'yew bar ke',
+'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.',
+'sharedupload-desc-there' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
+'sharedupload-desc-here' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
+'filepage-nofile' => 'Ena name de dosya çin o.',
+'filepage-nofile-link' => 'Ena name de dosya çin o. Feqet ti eşkeno [$1 bar bike].',
'uploadnewversion-linktext' => 'Versiyonê newiyerê ena dosya bar ke',
-'shared-repo-from' => '$1 ra', # $1 is the repository name
-'shared-repo' => 'yew embarê repositoryî', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 ra',
+'shared-repo' => 'yew embarê repositoryî',
# File reversion
'filerevert' => '$1 reyna biyere',
@@ -1349,6 +1508,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
** ihlalê heqê telifi
** Çift/dosyaya kopyayın',
'filedelete-edit-reasonlist' => 'Sebebê esterayîşî bivurne',
+'filedelete-maintenance' => 'Esterayîş u resterasyonê dosyayî wextê texmirî de nibenê.',
# MIME search
'mimesearch' => 'MIME bigêre',
@@ -1368,7 +1528,8 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
'unusedtemplateswlh' => 'linkanê binî',
# Random page
-'randompage' => 'Kamci pele ke raşt amê',
+'randompage' => 'Kamci pele ke raşt amê',
+'randompage-nopages' => 'Ena {{PLURAL:$2|cayêname|cayênameyî}} de enê pelan çin o: $1.',
# Random redirect
'randomredirect' => 'Redereksiyonê randomî',
@@ -1380,6 +1541,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
'statistics-header-edits' => 'Îstatistiksê vurnayîşî',
'statistics-header-views' => 'Îstatistiksê vînayîşî',
'statistics-header-users' => 'Îstatistiksê karberî',
+'statistics-header-hooks' => 'Îstatistiksê binî',
'statistics-articles' => 'Pelanê tedesteyî',
'statistics-pages' => 'Pelî',
'statistics-pages-desc' => 'Pelanê hemî ke wîkî de estê, pelanê mineqeşeyî, redireksiyon ucb... dehil o.',
@@ -1407,8 +1569,8 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
'brokenredirects' => 'Redireksiyonî ke hin nixebitiyeno',
'brokenredirectstext' => 'Redireksiyonê ey ki pelanê hama çiniyeno ra link dano:',
-'brokenredirects-edit' => '(bıvurne)',
-'brokenredirects-delete' => '(bıestere)',
+'brokenredirects-edit' => 'bıvurne',
+'brokenredirects-delete' => 'bıestere',
'withoutinterwiki' => 'Pelî ke bê linkanê ziwanî',
'withoutinterwiki-summary' => 'Enê pelî ke versiyonê ziwanî binî ra link nidano.',
@@ -1515,13 +1677,17 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
# Special:Categories
'categories' => 'Kategoriy',
+'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
+[[Special:UnusedCategories|kategori yê ke nêşuxulyeni]] tiya de nêmociyeni.
+hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
'special-categories-sort-count' => 'goreyê çendi rêz ker.',
'special-categories-sort-abc' => 'alfabetik rêz ker',
# Special:DeletedContributions
-'deletedcontributions' => 'Îştirakê karberî wederna',
-'deletedcontributions-title' => 'Îştirakê karberî wederna',
+'deletedcontributions' => 'Îştirakê karberî wederna',
+'deletedcontributions-title' => 'Îştirakê karberî wederna',
+'sp-deletedcontributions-contribs' => 'îştirakî',
# Special:LinkSearch
'linksearch' => 'Gıreyê teberi',
@@ -1537,6 +1703,16 @@ qaydeyê destek biyayeyi: <tt>$1</tt>',
'listusersfrom' => 'karber ê ke pey ıney detpêkeni ramocın:',
'listusers-submit' => 'Bımocne',
'listusers-noresult' => 'karber nêdiyayo/a.',
+'listusers-blocked' => '(blok biy)',
+
+# Special:ActiveUsers
+'activeusers' => 'Listeyê karberî ke aktiv o.',
+'activeusers-intro' => 'Ena yew listeye ke karberanê ke $1 {{PLURAL:$1|roc|rocan}} de îştiraq kerdo înan mocneno.',
+'activeusers-count' => 'ney {{PLURAL:$3|rocê peyin de|$3 rocê peyin de}} $1 {{PLURAL:$1|vuriyayiş|vuriyayiş}}',
+'activeusers-from' => 'karber ê ke pê ney destpêkeni ramocın:',
+'activeusers-hidebots' => 'Botan bınımne',
+'activeusers-hidesysops' => 'İdarekerdoğan bınımne',
+'activeusers-noresult' => 'Karberî çini yo.',
# Special:Log/newusers
'newuserlogpage' => 'Cıkewtışê hesab-vıraştışi',
@@ -1547,17 +1723,23 @@ qaydeyê destek biyayeyi: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'hesab otomatik vıraziya.',
# Special:ListGroupRights
-'listgrouprights' => 'heqê grubê karberi',
-'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
+'listgrouprights' => 'heqê grubê karberi',
+'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed]] belka esto.',
-'listgrouprights-group' => 'Grup',
-'listgrouprights-rights' => 'Heqqî',
-'listgrouprights-helppage' => 'Help:Heqqanê gruban',
-'listgrouprights-members' => '(lista ezayan)',
-'listgrouprights-addgroup' => 'şıma eşkenî hesabê xo re {{PLURAL:$2|grub|gruban}} têare kerî: $1',
-'listgrouprights-removegroup' => 'şıma eşkenî hesabê xo ra {{PLURAL:$2|grub|gruban}} bıvecî: $1',
-'listgrouprights-addgroup-all' => 'şıma hesabê xo re heme gruban eşkeni têare bıkeri',
-'listgrouprights-removegroup-all' => 'şıma hesabê xo ra heme gruban eşkeni veci',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">heq o ke diyayo</span>
+* <span class="listgrouprights-revoked">heq o ke tepiya geriyayo/span>',
+'listgrouprights-group' => 'Grup',
+'listgrouprights-rights' => 'Heqqî',
+'listgrouprights-helppage' => 'Help:Heqqanê gruban',
+'listgrouprights-members' => '(lista ezayan)',
+'listgrouprights-addgroup' => 'şıma eşkenî hesabê xo re {{PLURAL:$2|grub|gruban}} têare kerî: $1',
+'listgrouprights-removegroup' => 'şıma eşkenî hesabê xo ra {{PLURAL:$2|grub|gruban}} bıvecî: $1',
+'listgrouprights-addgroup-all' => 'şıma hesabê xo re heme gruban eşkeni têare bıkeri',
+'listgrouprights-removegroup-all' => 'şıma hesabê xo ra heme gruban eşkeni veci',
+'listgrouprights-addgroup-self' => 'şıma hesabê xo re eşkeni {{PLURAL:$2|grub|gruban}} têare bıkerî: $1',
+'listgrouprights-removegroup-self' => 'şıma hesabê xo ra eşkeni {{PLURAL:$2|grub|gruban}} bıveci: $1',
+'listgrouprights-addgroup-self-all' => 'şıma eşkeni hesabê xo re heme gruban têare bıkerî',
+'listgrouprights-removegroup-self-all' => 'şıma hesabê xo ra eşkeni heme gruban bıveci',
# E-mail user
'mailnologin' => 'adresa erşawıtışi/ruşnayişi çina.',
@@ -1629,6 +1811,31 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
'enotif_lastvisited' => 'ziyareta şıma ye peyini ra nata heme vuryayiş ê ke biyê bıewnê $1i re..',
'enotif_lastdiff' => 'qey vinayişê ney vurnayişi bıewnê pelê $1i',
'enotif_anon_editor' => 'karbero anonim $1',
+'enotif_body' => 'embazê $WATCHINGUSERNAME,
+
+{{SITENAME}} keyepel de no $PAGETITLE pelo sernameyın re $PAGEEDITDATE no tarix de $PAGEEDITOR no karberi $CHANGEDORCREATED. şıma eşkeni bıresi halê no peli re $PAGETITLE_URL na adresi ra.
+
+$NEWPAGE
+
+beyanatê karber o ke vurnayiş kerdo: $PAGESUMMARY $PAGEMINOREDIT
+
+cıresayişê karber o ke vurnayiş kerdo:
+e-posta: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+no pel o ke behs beno heta ziyaret kerdışê yewna heli, mesajê vuriyayişi nêşawiyeno.
+
+ {{SITENAME}} sistemê hişyariyê keyepeli.
+
+--
+qey vurnayişê eyari:
+{{fullurl:Special:Watchlist/edit}}
+
+qey wedarayişê ena pele liste xo ra seyr kerdişi, şo
+$UNWATCHURL
+
+qey hemkari u pêşniyazi:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Pele bıestere',
@@ -1639,9 +1846,11 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
'exblank' => 'zerreyê peli vengo',
'delete-confirm' => '"$1" bıestere',
'delete-legend' => 'Bıestere',
+'historywarning' => "'''Teme:''' Pela ke şıma esterenê tede yew viyarte be teqriben $1 {{PLURAL:$1|versiyon esto|versiyoni estê}}:",
'confirmdeletetext' => 'Tı ho yew pele u tarixê pele wederneno.
Tı ra rica keno, tı zani tı ho sekeno, tı zani neticeyanê eno wedarnayışi u tı zani tı ser [[{{MediaWiki:Policy-url}}|poliçe]] kar keno.',
'actioncomplete' => 'Aksiyon temam biyo',
+'actionfailed' => 'kar nêbı',
'deletedtext' => '"<nowiki>$1</nowiki>" biya wedariya.
Qe qeydê wedarnayışi, $2 bevinin.',
'deletedarticle' => '"[[$1]]" esterıt',
@@ -1665,20 +1874,21 @@ hewn a kerdışê ıney {{SITENAME}} şuxul bıne gırano;
bı diqqet dewam kerê.',
# Rollback
-'rollback' => 'vurnayişan tepiya bıger',
-'rollback_short' => 'Reyna biyare',
-'rollbacklink' => 'peyser bia',
-'rollbackfailed' => 'peyser ardış nıbı',
-'cantrollback' => 'karbero peyin têna paşt dayo, no semedi ra vuriyayiş tepiya nêgeriyeni.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}} hetê [[Special:Contributions/$2|{{int:contribslink}}]]) ra pelê ıney[[:$1]] de vurnayiş biyo u no vurnayiş tepiya nêgeriyeno;
+'rollback' => 'vurnayişan tepiya bıger',
+'rollback_short' => 'Reyna biyare',
+'rollbacklink' => 'peyser bia',
+'rollbackfailed' => 'peyser ardış nıbı',
+'cantrollback' => 'karbero peyin têna paşt dayo, no semedi ra vuriyayiş tepiya nêgeriyeni.',
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}} hetê [[Special:Contributions/$2|{{int:contribslink}}]]) ra pelê ıney[[:$1]] de vurnayiş biyo u no vurnayiş tepiya nêgeriyeno;
yewna ten pel de vurnayiş kerdo u pel tepiya nêgeriyeno.
oyo ke vurnayişo peyin kerdo: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "kılmnuşteyê vurnayişibi: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'vurnayişê no kesi $1 tepiya geriyayo u hetê no
+'editcomment' => "kılmnuşteyê vurnayişibi: \"''\$1''\".",
+'revertpage' => 'hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.',
+'revertpage-nouser' => '(nameyê karberi veteyo) no keso ke vuriyayiş kerdo vuriyayişê no kesi hetê no [[User:$1|$1]] kesi ra tepiya anciyayo',
+'rollback-success' => 'vurnayişê no kesi $1 tepiya geriyayo u hetê no
$2 kesi ra cıwa ver o ke revizyon biyo no revizyon tepiya anciyayo.',
-'sessionfailure' => 'cıkewtışê hesabê şıma de yew problem aseno;
+'sessionfailure' => 'cıkewtışê hesabê şıma de yew problem aseno;
no kar semedê dızdiyê hesabi ibtal biyo.
kerem kerê "tepiya" şiyerê u pel o ke şıma tera ameyî u o pel newe ra bar kerê , newe ra tesel/cereb kerê.',
@@ -1697,7 +1907,7 @@ qey malumato ziyed bıewnê [[Special:ProtectedPages|protected pages list]].',
'protectexpiry' => 'Qediyeno:',
'protect_expiry_invalid' => 'Demo qediyayışi raşt niyo.',
'protect_expiry_old' => 'Demo qediyayışi tarix dı.',
-'protect-unchain' => 'desturê berdışi a bık',
+'protect-unchain-permissions' => 'Zobina tercihanê mıhafezekerdışi kilıt meke',
'protect-text' => "Tı eşkeno bıvin u seviyê kılit-kerdışi bıvin '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "seviyeya qedexe biyayeyan nevuriyeno.
'''$1''' eyarê peli:",
@@ -1727,7 +1937,7 @@ Tı eşkeno seviyeye kılit kerdışi bıvurno, feqat tı nıeşken "cascading p
** şêrê/herbê vurnayişi
** pel o ke zaf wayirê trafiki yo',
'protect-edit-reasonlist' => 'sebebê pawıtışi bıvurn',
-'protect-expiry-options' => '1 seet:1 hour,1 roc:1 day,1 hefte:1 week,2 hefteyi:2 weeks,1 aşme:1 month,3 aşmî:3 months,6 aşmî:6 months,1 serre:1 year,bê hedd u hesab:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 seet:1 hour,1 roc:1 day,1 hefte:1 week,2 hefteyi:2 weeks,1 aşme:1 month,3 aşmî:3 months,6 aşmî:6 months,1 serre:1 year,bê hedd u hesab:infinite',
'restriction-type' => 'Destur:',
'restriction-level' => 'Sinorê desturi:',
'minimum-size' => 'Ebatê minumî',
@@ -1765,6 +1975,7 @@ Revizyoni ya hewn a biyê ya arşiw ra veciyayê ya zi cıresayişê şımayi ş
'undelete-nodiff' => 'revizyonê verıni nidiya',
'undeletebtn' => 'Restore bike',
'undeletelink' => 'bıvêne/peyser bia',
+'undeleteviewlink' => 'ra mocın',
'undeletereset' => 'Sifir bike',
'undeleteinvert' => 'vicnayeyi qeldaye açarn',
'undeletecomment' => 'Sebeb:',
@@ -1803,19 +2014,24 @@ $1',
'contributions-title' => '$1 de iştırakê karberi',
'mycontris' => 'iştırakê mı',
'contribsub2' => 'Semedê $1 ($2)',
-'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
'uctop' => '(ser)',
'month' => 'Aşm ra (u verniyer):',
'year' => 'Serre ra (u verênêr):',
-'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
-'sp-contributions-newbies-sub' => 'Qe hesebê newe',
-'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Cıkewtışê kılit-kerdışi',
-'sp-contributions-logs' => 'logî',
-'sp-contributions-search' => 'Ser iştariqi bıgeyr',
-'sp-contributions-username' => 'Adresa IPy ya ki namey karberi:',
-'sp-contributions-submit' => 'Cıgeyre',
+'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
+'sp-contributions-newbies-sub' => 'Qe hesebê newe',
+'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
+'sp-contributions-blocklog' => 'Cıkewtışê kılit-kerdışi',
+'sp-contributions-deleted' => 'vurnayîşê karberî wedariyayê',
+'sp-contributions-logs' => 'logî',
+'sp-contributions-talk' => 'werênayış',
+'sp-contributions-userrights' => 'Îdarayê heqqanê karberan',
+'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
+qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
+'sp-contributions-search' => 'Ser iştariqi bıgeyr',
+'sp-contributions-username' => 'Adresa IPy ya ki namey karberi:',
+'sp-contributions-submit' => 'Cıgeyre',
# What links here
'whatlinkshere' => 'Çı tiyay rê gırê beno',
@@ -1838,6 +2054,7 @@ $1',
# Block/unblock
'blockip' => 'Karberi kılit ke',
+'blockip-title' => 'Karberi kılit ke',
'blockip-legend' => 'Karber blok bike',
'blockiptext' => 'pê şuxulnayişê formê cêrıni, şıma eşkeni verniyê vurnayişkerdışê yew karberi ya zi yew IPyi bıgêrî. No têna qey verni-gırewtışê vandalizmiyo u gani şıma [[{{MediaWiki:Policy-url}}|qaydeyan]] re diqqet bıkeri. cêr de muheqqeq sebebê verni-grewtışi bınusi. (mesela: -nê- pelani de vandalizm kerdo).',
'ipaddress' => 'Adresê IPi',
@@ -1859,7 +2076,7 @@ $1',
'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
'ipbsubmit' => 'Ena karber blok bike',
'ipbother' => 'Waxtê bini:',
-'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roc:3 days,1 hefte:1 week,2 hefte:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşm:6 months,1 aşm:1 year,ebedi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roc:3 days,1 hefte:1 week,2 hefte:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşm:6 months,1 aşm:1 year,ebedi:infinite',
'ipbotheroption' => 'bini',
'ipbotherreason' => 'Sebebê bini:',
'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
@@ -1888,8 +2105,11 @@ $1',
'ipblocklist-sh-tempblocks' => 'blokê arizî $1',
'ipblocklist-sh-addressblocks' => 'Blokê IP ye yewî $1',
'ipblocklist-submit' => 'Bigêre',
+'ipblocklist-localblock' => 'blokê mehelli',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|blokê|blokê}} bini',
'blocklistline' => '$1, $2 blok biyê $3 ($4)',
'infiniteblock' => 'ebedî',
+'expiringblock' => 'roca $1i saeta $2i de qediyena',
'anononlyblock' => 'teyna karbero anonim',
'noautoblockblock' => 'otoblok nihebitîyeno',
'createaccountblock' => 'Hesab viraştîş blok biyo',
@@ -1904,6 +2124,8 @@ $1',
'autoblocker' => 'Şıma otomatikmen kılit biy, çıke adresa şımawa \'\'IP\'\'y terefê "[[User:$1|$1]]" gureniyena.
Sebebê kılit-biyayışê $1\'i: "$2"o',
'blocklogpage' => 'Protokolê kıliti',
+'blocklog-showlog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
+'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
'blocklogentry' => '[[$1]] block kerd, hetani $2 $3',
'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
'blocklogtext' => 'tiya de listeya ver-grewtışê cıresayişê karberani esta. verniyê IP adres ê ke otomatik geriyayê tiya de çinê. ê karberi yê ke cıresayişê inani bıriyayê [[Special:IPBlockList|listeya ver-grewtışê IP]]yan no pel de şıma eşkeni bıvini.',
@@ -1923,11 +2145,13 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
'ipb-needreblock' => '==Zaten blok biya ==
"$1" zaten blok biya
Ti wazene ayaran bivurne?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Kılitkerdışo bin|Kılitkerdışê bini}}',
'ipb_cant_unblock' => 'xeta: IDyê ver-grewtışi $1 nêesa/asa.
belka ver-grewtış wedariyayo.',
'ipb_blocked_as_range' => 'xeta: $1 verniyê IPadresi direk nêgeriyayo u ver-gırewtışi nêwedariyeno .
labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no wedari.',
'ip_range_invalid' => 'Rêza IPi nêvêrena.',
+'ip_range_toolarge' => 'Menzilan ke /$1 ra girdêrê inan rê izin nidano.',
'blockme' => 'Mi blok bik',
'proxyblocker' => 'blokarê proxyi',
'proxyblocker-disabled' => 'Eno fonksiyon nêxebetiyeno.',
@@ -1938,6 +2162,7 @@ labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no
şıma neeşkeni hesab bıvırazi',
'cant-block-while-blocked' => 'Ê ye ke verniyê şıma gırewtî şıma nêeşkeni verniyê ninan bıgeri',
+'cant-see-hidden-user' => 'karber o ke şıma gêreni verniyê ey bıgeri ca ra verniyê ey gırewteyo u pinani kerdeyo.',
# Developer tools
'lockdb' => 'Database kilit bik',
@@ -1980,6 +2205,7 @@ Ma tu ra rica keni, tı en verni dı qontrol bıki u bışıravi.",
Oturse, tı gani peleyê mınaqeşeyê manually beri.",
'movearticle' => 'Pele bere:',
+'moveuserpage-warning' => "'''Diqet:''' Ti eka yew pelê karberi beni. Diqet bike teyna pel beni feqat ena pele reyna nameyê newi \"nebeno''.",
'movenologin' => 'Ti ci nikewt',
'movenologintext' => 'qey vurnayişê nameyê peli şıma gani qeyd kerde u cıkewteyê [[Special:UserLogin|sistemi]] bıbiy.',
'movenotallowed' => 'desturê şıma çino, şıma pelan bıkırışi',
@@ -1990,7 +2216,7 @@ Oturse, tı gani peleyê mınaqeşeyê manually beri.",
'move-watch' => 'Ena pele seyr ke',
'movepagebtn' => 'Pele bere',
'pagemovedsub' => 'Berdışi kerd temam',
-'movepage-moved' => '\'\'\'"$1" berd "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" berd "$2"\'\'\'',
'movepage-moved-redirect' => 'yew rayberdışi vıraziya',
'movepage-moved-noredirect' => 'yew rayberdışi çap bı',
'articleexists' => 'Ena nameyê pela database ma dı esta ya zi tı raşt nınuşt. .
@@ -2032,6 +2258,14 @@ Yewna name bınus.',
'imageinvalidfilename' => 'nameyê dosyayi ya hedefi meqbul niyo.',
'fix-double-redirects' => 'rayberdış ê ke sernameyê orjinali re işaret keni rocane bıker.',
'move-leave-redirect' => 'pey de yew rayberdış roni',
+'protectedpagemovewarning' => "'''Diqet: No pel pawyeno, teyna serkari eşkeni bıvurni.'''
+Wexta ke şıma no pel vurneni diqet bıkeri, loge bivini:",
+'semiprotectedpagemovewarning' => "'''Diqet: No pel pawyeno, teyna serkari eşkeni bıvurni.'''
+Wexta ke şıma no pel vurneni diqet bıkeri, loge bivini:",
+'move-over-sharedrepo' => '== Dosya esto ==
+[[:$1]] enbar ma de esto. Eka ti wazeno ena dosyo ser ena sername de bero, yewna dosya sero nusiyeno.',
+'file-exists-sharedrepo' => 'Ena sername zaten embar ma de esto.
+Ma rica keno yewna sername binuse.',
# Export
'export' => 'Pelan export bık',
@@ -2053,13 +2287,21 @@ ma vaci: qey pelê "[[{{MediaWiki:Mainpage}}]]i " [[{{#Special:Export}}/{{MediaW
'export-pagelinks' => 'behsê xorıniya pelê pêrabesteyani:',
# Namespace 8 related
-'allmessages' => 'Mesajanê sistemi',
-'allmessagesname' => 'Name',
-'allmessagesdefault' => 'nuşteyo orjinal',
-'allmessagescurrent' => 'nuşte yo ke şuxuliyeno',
-'allmessagestext' => 'na liste, listeya mesajê cayê nameyê wikimedya yo.
+'allmessages' => 'Mesajanê sistemi',
+'allmessagesname' => 'Name',
+'allmessagesdefault' => 'nuşteyo orjinal',
+'allmessagescurrent' => 'nuşte yo ke şuxuliyeno',
+'allmessagestext' => 'na liste, listeya mesajê cayê nameyê wikimedya yo.
eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [http://www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [http://translatewiki.net translatewiki.net] ziyaret bıkerê.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' qefelnaye yo u ey ra '''{{ns:special}}:Allmessages''' karkerdışi re akerde niyo.",
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' qefelnaye yo u ey ra '''{{ns:special}}:Allmessages''' karkerdışi re akerde niyo.",
+'allmessages-filter-legend' => 'Filitre',
+'allmessages-filter' => 'goreyê xususi kerdışi re filtre bıker',
+'allmessages-filter-unmodified' => 'Nivurnaye',
+'allmessages-filter-all' => 'Heme/pêro',
+'allmessages-filter-modified' => 'Vurnaye',
+'allmessages-prefix' => 'pê prefiks filtre bıker',
+'allmessages-language' => 'Ziwan:',
+'allmessages-filter-submit' => 'Şi',
# Thumbnails
'thumbnail-more' => 'Gırd ke',
@@ -2069,6 +2311,9 @@ eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê
'djvu_no_xml' => 'Qe DjVu nieşkenî XML fetch bikî',
'thumbnail_invalid_params' => 'Parametreya thumbnailî raşt niyşê',
'thumbnail_dest_directory' => 'Nieşkenî direktorê destinasyonî virazî',
+'thumbnail_image-type' => 'Tipê resimî kebul nibeno',
+'thumbnail_gd-library' => 'Configurasyonê katalog ê GDî tam niyo:funksiyonê $1î vînî biyo',
+'thumbnail_image-missing' => 'Dosya vînî biyo: $1',
# Special:Import
'import' => 'Peleyi import bik',
@@ -2138,6 +2383,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
Çımey ena pele bıvin',
'tooltip-ca-history' => 'Versiyonê verênê ena pele',
'tooltip-ca-protect' => 'Ena pele kılit ke',
+'tooltip-ca-unprotect' => 'Ena pele a bike',
'tooltip-ca-delete' => 'Ena pele bıestere',
'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
'tooltip-ca-move' => 'Ena pele bere',
@@ -2148,6 +2394,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
'tooltip-search-fulltext' => 'Seba nê meqaley pelan seha ke',
'tooltip-p-logo' => 'Kiyepele ziyaret bike',
'tooltip-n-mainpage' => 'Pela Seri bıvêne',
+'tooltip-n-mainpage-description' => 'Pela seri bıvêne',
'tooltip-n-portal' => 'Heqa projey de, çı şenay bıkerê, çı koti vêniyeno',
'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
@@ -2193,10 +2440,12 @@ Tı eşkeno yew sebeb bınus.',
# Attribution
'anonymous' => '{{PLURAL:$1|karberê|karberê}} anonimi yê keyepelê {{SITENAME}}i',
'siteuser' => 'karberê {{SITENAME}}i $1',
-'lastmodifiedatby' => 'Ena pele tewr peyên roca $2, $1 by $3. de biya rocaniye', # $1 date, $2 time, $3 user
+'anonuser' => 'karberê anonim o {{SITENAME}}i $1',
+'lastmodifiedatby' => 'Ena pele tewr peyên roca $2, $1 by $3. de biya rocaniye',
'othercontribs' => 'xebatê $1 ıney geriyayo diqqeti/geriyayo nezer.',
'others' => 'bini',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|karberê ey|karberanê ey}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|karberê eyê|karberanê eyê}} anonimi $1',
'creditspage' => 'şınasnameyê peli',
'nocredits' => 'qey no peli hema/hona yew şınasnameyi mewcud niyo',
@@ -2224,11 +2473,24 @@ Tı eşkeno yew sebeb bınus.',
'mw_math_modern' => 'Semed browseroğê moderni tafsiye biyê',
'mw_math_mathml' => 'Eka mumkin, MathML (deneme)',
+# Math errors
+'math_failure' => 'Parse de ğeleti biyo',
+'math_unknown_error' => 'ğeleti nizanyeno',
+'math_unknown_function' => 'fonksiyon nizanyeno',
+'math_lexing_error' => 'ğeleto lexing',
+'math_syntax_error' => 'ğeleto sintaks',
+'math_image_error' => 'Conversiyonê PNG de ğeleti esta;
+qe ronayişê raşti ye latex, dvips, gs kontrol bike u convert bike',
+'math_bad_tmpdir' => 'Nieşkeno binusi ya zi direktorê mathi virazi',
+'math_bad_output' => 'Nieşkeno binusi ya zi direktorê mathi ye outputi virazi',
+'math_notexvc' => "xebetnayekarê texvc'i vindbiyo
+qey 'eyar kerdışi bıewnê math/README'yi.",
+
# Patrolling
'markaspatrolleddiff' => 'Nişan bike ke devriye biyo',
'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
'markedaspatrolled' => 'Nişan biyo ke verni de devriye biyo',
-'markedaspatrolledtext' => 'Versiyone weçinaye nişan biyo ke devriye biyo',
+'markedaspatrolledtext' => 'Versiyone weçinaye [[:$1]] nişan biyo ke devriye biyo',
'rcpatroldisabled' => 'Devriyeyê vurnayışê peyêni nihebitiyeno',
'rcpatroldisabledtext' => 'Devriyeyê vurnayışê peyêni inke kefilnaye biyo u nihebitiyeno',
'markedaspatrollederror' => 'Nişan nibeno ke devriye biyo',
@@ -2258,12 +2520,10 @@ $1',
'previousdiff' => '← Vurnayışê kıhanyer',
'nextdiff' => 'Vurnayışo newêr →',
-# Visual comparison
-'visual-comparison' => 'Kiyasê şekli',
-
# Media information
'mediawarning' => "''Hişyari!''': Na dosya de belka kodê niyetxırabi estî.
Beno ke zerar bıdo sistemê şuxulnayişê şıma.",
+'imagemaxsize' => "Limitê ebat ê resimi:<br />''(qe pela deskripsiyonê dosyayan)''",
'thumbsize' => 'Ebadê Thumbnaili',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pele|peleyi}}',
'file-info' => '(ebatê dosyayi: $1, MIME tip: $2)',
@@ -2272,6 +2532,8 @@ Beno ke zerar bıdo sistemê şuxulnayişê şıma.",
'svg-long-desc' => '(SVG dosya, nominalin $1 × $2 piksels, ebatê dosya: $3)',
'show-big-image' => 'Resolosyonê temami',
'show-big-image-thumb' => '<qıç>Ebatê ena verqeyd: $1 × $2 pixels</qıç>',
+'file-info-gif-looped' => 'viyariye biyo',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|çerçeve|çerçeveyi}}',
# Special:NewFiles
'newimages' => 'Galeyê dosyayanê newe',
@@ -2306,7 +2568,7 @@ Ma aya bini numnen.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Verini',
@@ -2434,14 +2696,14 @@ Ma aya bini numnen.
'exif-unknowndate' => 'Tarix nizanyano',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'kıştki-ser çarnayiş', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° çariyayo', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'dergî-ser çarnayiş', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° çariyayo (çepser) u dergî-ser çarnayiş', # 0th row: left; 0th column: top
-'exif-orientation-6' => "90° çariyayo (hetê se'eti ra)", # 0th row: right; 0th column: top
-'exif-orientation-7' => "90° çariyayo (hetê se'eti ra) u dergî-ser çarnayiş", # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° çariyayo (çepser)', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'kıştki-ser çarnayiş',
+'exif-orientation-3' => '180° çariyayo',
+'exif-orientation-4' => 'dergî-ser çarnayiş',
+'exif-orientation-5' => '90° çariyayo (çepser) u dergî-ser çarnayiş',
+'exif-orientation-6' => "90° çariyayo (hetê se'eti ra)",
+'exif-orientation-7' => "90° çariyayo (hetê se'eti ra) u dergî-ser çarnayiş",
+'exif-orientation-8' => '90° çariyayo (çepser)',
'exif-planarconfiguration-1' => 'chunky format',
'exif-planarconfiguration-2' => 'planar format',
@@ -2563,7 +2825,7 @@ Ma aya bini numnen.
'exif-gpsmeasuremode-2' => '2-dimensional measurement',
'exif-gpsmeasuremode-3' => '3-dimensional measurement',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/s',
'exif-gpsspeed-m' => 'Mil/saat',
'exif-gpsspeed-n' => 'milê deryayi',
@@ -2582,6 +2844,7 @@ Ma aya bini numnen.
'watchlistall2' => 'pêro',
'namespacesall' => 'têde',
'monthsall' => 'pêro',
+'limitall' => 'hemi',
# E-mail address confirmation
'confirmemail' => 'Adresê emaîlî xo konfirme bike',
@@ -2607,6 +2870,18 @@ Ti eşkeno [[Special:UserLogin|ci kewt]].',
'confirmemail_loggedin' => 'Eka email adresê tu konfirme biy.',
'confirmemail_error' => 'Konfirmasyon ni biy, yew ğelet esto.',
'confirmemail_subject' => '{{SITENAME}} konfirmasyonê adres ê emalî',
+'confirmemail_body' => 'yew ten, muhtemelen şıma no IP-adresi ra,
+keyepelê {{SITENAME}}i de pê no $2 e-postayi hesab kerd a.
+
+eke raşta no e-posta eyê şıma yo şıma gani tesdiq bıkerî, qey tesdiq kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrıni bıtıkne.
+
+$3
+
+eke şıma hesab *a nêkerdo*, qey ibtalê tesdiqkerdışê adresa e-postayi gıreyê cêrıni bıtıknê:
+
+$5
+
+kodê tesdiqi heta ıney tarixi $4 meqbul o.',
'confirmemail_invalidated' => 'Konfermasyonê adres ê emaîlî iptal biy',
'invalidateemail' => 'confirmasyonê e-maili iptal bik',
@@ -2698,7 +2973,7 @@ Ti hem zi eşkeno [[Special:Watchlist/edit|use the standard editor]].',
'duplicate-defaultsort' => '\'\'\'Teme:\'\'\' Tuşê default sort "$2" sero tuşê default sort "$1"î ra şino.',
# Special:Version
-'version' => 'Versiyon', # Not used as normal message but as header for the special page itself
+'version' => 'Versiyon',
'version-extensions' => 'Ekstensiyonî ke ronaye',
'version-specialpages' => 'Pelanê xasiyan',
'version-parserhooks' => 'Çengelê Parserî',
@@ -2712,6 +2987,7 @@ Ti hem zi eşkeno [[Special:Watchlist/edit|use the standard editor]].',
'version-skin-extension-functions' => 'Funksiyonê ekstensiyon ê çermeyî',
'version-hook-name' => 'Nameyê çengelî',
'version-hook-subscribedby' => 'Eza biyayoğ',
+'version-version' => '(Versiyon $1)',
'version-license' => 'Lisans',
'version-software' => 'Softwareyê ronayi',
'version-software-product' => 'Mal',
@@ -2792,4 +3068,15 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
'dberr-outofdate' => 'Note bike ke belki îdeksê tedesteyî rocaniye niyo.',
'dberr-cachederror' => 'Pel ke ti wazeno yew kopyayê cacheyî ay esto, ay belki rocaniyeyo.',
+# HTML forms
+'htmlform-invalid-input' => 'Inputê ti de tayê ğeletî estê',
+'htmlform-select-badoption' => 'Ena değer ke ti spesife kerd yew opsiyonê raştî ni yo.',
+'htmlform-int-invalid' => 'Ena değer ke ti spesife kerd yew reqem ni yo.',
+'htmlform-float-invalid' => 'Ena değer ke ti spesife kerd yew amar ni yo.',
+'htmlform-int-toolow' => 'Ena değer ke ti spesife kerd maxsimumê $1î ra kilmyer o.',
+'htmlform-int-toohigh' => 'Ena değer ke ti spesife kerd maxsimumê $1î ra zafyer o.',
+'htmlform-submit' => 'Bişirav',
+'htmlform-reset' => 'Vurnayişî reyna biyar',
+'htmlform-selectorother-other' => 'Bin',
+
);
diff --git a/languages/messages/MessagesDk.php b/languages/messages/MessagesDk.php
index b6e60c76..83c67a4d 100644
--- a/languages/messages/MessagesDk.php
+++ b/languages/messages/MessagesDk.php
@@ -1,6 +1,9 @@
<?php
/** Danish
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment Deprecated code. Falls back to 'dk'.
diff --git a/languages/messages/MessagesDsb.php b/languages/messages/MessagesDsb.php
index d7b2b97e..4a2237ba 100644
--- a/languages/messages/MessagesDsb.php
+++ b/languages/messages/MessagesDsb.php
@@ -69,12 +69,12 @@ $specialPageAliases = array(
'CreateAccount' => array( 'Wužywarske konto załožyś' ),
'Preferences' => array( 'Nastajenja' ),
'Watchlist' => array( 'Wobglědowańka' ),
- 'Recentchanges' => array( 'Slědne změny' ),
+ 'Recentchanges' => array( 'Aktualne změny' ),
'Upload' => array( 'Uploadowaś' ),
'Listfiles' => array( 'Lisćina datajow' ),
'Newimages' => array( 'Nowe dataje' ),
'Listusers' => array( 'Wužywarje' ),
- 'Listgrouprights' => array( 'Kupkowe pšawa' ),
+ 'Listgrouprights' => array( 'Pšawa wužywarskich kupkow' ),
'Statistics' => array( 'Statistika' ),
'Randompage' => array( 'Pśipadny bok' ),
'Lonelypages' => array( 'Wósyrośone boki' ),
@@ -86,6 +86,8 @@ $specialPageAliases = array(
'Unusedimages' => array( 'Njewužywane dataje' ),
'Wantedpages' => array( 'Póžedane boki' ),
'Wantedcategories' => array( 'Póžedane kategorije' ),
+ 'Wantedfiles' => array( 'Felujuce dataje' ),
+ 'Wantedtemplates' => array( 'Felujuce pśedłogi' ),
'Mostlinked' => array( 'Boki na kótarež wjeźo nejwěcej wótkazow' ),
'Mostlinkedcategories' => array( 'Nejwěcej wužywane kategorije' ),
'Mostlinkedtemplates' => array( 'Nejwěcej wužywane pśedłogi' ),
@@ -146,6 +148,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'Pytanje wótkazow' ),
'DeletedContributions' => array( 'Wulašowane pśinoski' ),
'Tags' => array( 'Toflicki' ),
+ 'Activeusers' => array( 'Aktiwne wužywarje' ),
);
$messages = array(
@@ -179,6 +182,7 @@ $messages = array(
'tog-enotifminoredits' => 'E-mail teke małych změnow dla pósłaś',
'tog-enotifrevealaddr' => 'Móju e-mailowu adresu w e-mailowych pówěźeńkach pokazaś',
'tog-shownumberswatching' => 'Licbu wobglědujucych wužywarjow pokazaś',
+'tog-oldsig' => 'Pśeglěd eksistěrowaceje signatury:',
'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadaś (bźez awtomatiskego wótkaza)',
'tog-externaleditor' => 'Eksterny editor ako standard wužywaś (jano za ekspertow, pomina sebje specialne nastajenja na wašom licadle)',
'tog-externaldiff' => 'Eksterny diff-program ako standard wužywaś (jano za ekspertow, pominma sebje specialne nastajenja na wašom licadle)',
@@ -201,6 +205,13 @@ $messages = array(
'underline-never' => 'žednje',
'underline-default' => 'pó standarźe browsera',
+# Font style option in Special:Preferences
+'editfont-style' => 'Pismowy stil wobźěłowańskego póla:',
+'editfont-default' => 'Standard wobglědowaka',
+'editfont-monospace' => 'Pismo z kšuteju znamuškoweju šyrokosću',
+'editfont-sansserif' => 'Bźezserifowe pismo',
+'editfont-serif' => 'Serifowe pismo',
+
# Dates
'sunday' => 'Njeźela',
'monday' => 'Pónjeźele',
@@ -260,7 +271,7 @@ $messages = array(
'category-media-header' => 'Dataje w kategoriji „$1“',
'category-empty' => "''W toś tej kategoriji njejsu něnto žedne nastawki abo medije.''",
'hidden-categories' => '{{PLURAL:$1|Schowana kategorija|Schowanej kategoriji|Schowane kategorije|Schowanych kategorijow}}',
-'hidden-category-category' => 'Schowane kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Schowane kategorije',
'category-subcat-count' => '{{PLURAL:$2|Toś ta kategorija ma jano slědujucu pódkategoriju.|Toś ta kategorija ma {{PLURAL:$1|slědujucu pódkategoriju|slědujucej $1 pódkategoriji|slědujuce $1 kategorije|slědujucych $1 pódkategorijow}} z dogromady $2.}}',
'category-subcat-count-limited' => 'Toś ta kategorija ma {{PLURAL:$1|slědujucu pódkategoriju|slědujucej $1 pódkategoriji|slědujuce $1 pódkategorije|slědujucych $1 pódkategorijow}}.',
'category-article-count' => '{{PLURAL:$2|Toś ta kategorija wopśimujo jano slědujucy bok.|{{PLURAL:$1|Slědujucy bok jo|Slědujucej $1 boka stej|Slědujuce $1 boki su|Slědujucych $1 bokow jo}} w toś tej kategoriji, z dogromady $2.}}',
@@ -268,6 +279,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Toś ta kategorija wopśimujo jano slědujucu dataju:|{{PLURAL:$1|Slědujuca dataja jo|Slědujucej $1 dataji stej|Slědujuce $1 dataje su|Slědujucych $1 datajow jo}} w toś tej kategoriji, z dogromady $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Slědujuca dataja jo|Slědujucej $1 dataji stej|Slědujuce $1 dataje su|Slědujucych $1 datajow jo}} w toś tej kategoriji {{PLURAL:$1|wopśimjona|wopśimjonej|wopśimjone|wopsímjone}}:',
'listingcontinuesabbrev' => 'dalej',
+'index-category' => 'Indicěrowane boki',
+'noindex-category' => 'Njeindicěrowane boki',
'mainpagetext' => "'''MediaWiki jo se wuspěšnje instalěrowało.'''",
'mainpagedocfooter' => "Pomoc pśi wužywanju softwary wiki namakajoš pód [http://meta.wikimedia.org/wiki/Help:Contents User's Guide].
@@ -278,10 +291,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (pšašanja a wótegrona)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lisćina e-mailowych nakładow MediaWiki]",
-'about' => 'Wó',
-'article' => 'Nastawk',
-'newwindow' => '(se wótcynijo w nowem woknje)',
-'cancel' => 'Pśetergnuś',
+'about' => 'Wó',
+'article' => 'Nastawk',
+'newwindow' => '(se wótcynijo w nowem woknje)',
+'cancel' => 'Pśetergnuś',
+'moredotdotdot' => 'Wěcej…',
+'mypage' => 'Mój bok',
+'mytalk' => 'mója diskusija',
+'anontalk' => 'Diskusija z toś teju IP',
+'navigation' => 'Nawigacija',
+'and' => '&#32;a',
+
+# Cologne Blue skin
'qbfind' => 'Namakaś',
'qbbrowse' => 'Pśeběraś',
'qbedit' => 'Pśeměniś',
@@ -289,15 +310,35 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Móje boki',
'qbspecialpages' => 'Specialne boki',
-'moredotdotdot' => 'Wěcej…',
-'mypage' => 'Mój bok',
-'mytalk' => 'mója diskusija',
-'anontalk' => 'Diskusija z toś teju IP',
-'navigation' => 'Nawigacija',
-'and' => '&#32;a',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaty:',
+'faq' => 'FAQ (pšašanja a wótegrona)',
+'faqpage' => 'Project:FAQ (pšašanja a wótegrona)',
+
+# Vector skin
+'vector-action-addsection' => 'Temu pśidaś',
+'vector-action-delete' => 'Wulašowaś',
+'vector-action-move' => 'Pśesunuś',
+'vector-action-protect' => 'Šćitaś',
+'vector-action-undelete' => 'Wótnowiś',
+'vector-action-unprotect' => 'Šćit wótpóraś',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Bok pomocy',
+'vector-namespace-image' => 'Dataja',
+'vector-namespace-main' => 'Bok',
+'vector-namespace-media' => 'Medijowy bok',
+'vector-namespace-mediawiki' => 'Powěźeńka',
+'vector-namespace-project' => 'Projektowy bok',
+'vector-namespace-special' => 'Specialny bok',
+'vector-namespace-talk' => 'Diskusija',
+'vector-namespace-template' => 'Pśedłoga',
+'vector-namespace-user' => 'Wužywarski bok',
+'vector-view-create' => 'Napóraś',
+'vector-view-edit' => 'Wobźěłaś',
+'vector-view-history' => 'Wersije a awtory',
+'vector-view-view' => 'Cytaś',
+'vector-view-viewsource' => 'Žrědło se woglědaś',
+'actions' => 'Akcije',
+'namespaces' => 'Mjenjowe rumy',
+'variants' => 'Warianty',
'errorpagetitle' => 'Zmólka',
'returnto' => 'Slědk k boku $1.',
@@ -347,18 +388,22 @@ $messages = array(
'otherlanguages' => 'W drugich rěcach',
'redirectedfrom' => '(pósrědnjone z boka „$1”)',
'redirectpagesub' => 'Dalejpósrědnjenje',
-'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.', # $1 date, $2 time
+'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.',
'viewcount' => 'Toś ten bok jo był woglědany {{PLURAL:$1|jaden raz|$1 raza|$1 raze}}.',
'protectedpage' => 'Śćitany bok',
'jumpto' => 'Źi na bok:',
'jumptonavigation' => 'Nawigacija',
'jumptosearch' => 'Pytaś',
+'view-pool-error' => 'Wódaj, serwery su we wokognuśu pśeśěžone.
+Pśewjele wužywarjow wopytujo se toś ten bok woglědaś.
+Pšosym pócakaj chylu, nježli až wopytujoš znowego na toś ten bok pśistup měś.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Wó {{GRAMMAR:lokatiw|{{SITENAME}}}}',
'aboutpage' => 'Project:Wó_{{GRAMMAR:lokatiw|{{SITENAME}}}}',
'copyright' => 'Wopśimjeśe stoj pód $1.',
-'copyrightpagename' => '{{SITENAME}} stwóriśelske pšawo',
'copyrightpage' => '{{ns:project}}:Stwóriśelske pšawo',
'currentevents' => 'Aktualne tšojenja',
'currentevents-url' => 'Project:Aktualne tšojenja',
@@ -366,8 +411,6 @@ $messages = array(
'disclaimerpage' => 'Project:impresum',
'edithelp' => 'Pomoc pśi wobźěłanju',
'edithelppage' => 'Help:Pomoc pśi wobźěłanju',
-'faq' => 'FAQ (pšašanja a wótegrona)',
-'faqpage' => 'Project:FAQ (pšašanja a wótegrona)',
'helppage' => 'Help:Pomoc',
'mainpage' => 'Głowny bok',
'mainpage-description' => 'Głowny bok',
@@ -447,10 +490,6 @@ Slědne wopytane wótpšašowanje jo było:
"$1"
z funkcije "$2".
Datowa banka jo zmólku "$3: $4" wrośiła',
-'noconnect' => 'Wódaj! Wiki ma někotare techniske śěže a njamóžo žeden zwisk ze serwerom datoweje banki nawězaś.<br />
-$1',
-'nodb' => 'Njejo móžno było, datowu banku $1 wuzwóliś.',
-'cachederror' => 'Slědujuce jo kopija z pufrowaka. Jo toś móžno, až wopśimjeśe jo zestarjone.',
'laggedslavemode' => 'Glědaj: Jo móžno, až pokazany bok nejaktualnjejše změny njewopśimjejo.',
'readonly' => 'Datowa banka jo zacynjona',
'enterlockreason' => 'Pšosym zapódaj pśicynu za zacynjenje datoweje banki a informaciju, ga buźo zasej pśistupna',
@@ -468,6 +507,8 @@ Pšosym daj to a pśisłušny URL [[Special:ListUsers/sysop|administratoroju]] k
'readonly_lag' => 'Datowa banka jo awtomatiski se zacyniła, aby wótwisne serwery se mógli z głownym serwerom wurownowaś.',
'internalerror' => 'Interna zmólka',
'internalerror_info' => 'Interna zmólka: $1',
+'fileappenderrorread' => '"$1" njejo se dał cytaś pśi pśipowjesanju.',
+'fileappenderror' => 'Njejo móžno było "$1" k "$2" pśipowjesyś.',
'filecopyerror' => 'Njejo było móžno dataju „$1” k „$2” kopěrowaś.',
'filerenameerror' => 'Njejo było móžno dataju „$1” do „$2” pśemjenjowaś.',
'filedeleteerror' => 'Njejo było móžno dataju „$1” wulašowaś.',
@@ -477,7 +518,7 @@ Pšosym daj to a pśisłušny URL [[Special:ListUsers/sysop|administratoroju]] k
'unexpected' => 'Njewócakowana gódnota: „$1“=„$2“.',
'formerror' => 'Zmólka: Njejo móžno formular wótpósłaś.',
'badarticleerror' => 'Akcija njedajo se na toś tom boku wuwjasć.',
-'cannotdelete' => 'Njejo móžno wuzwólony bok abo dataju wulašowaś. Snaź jo to južo něchten drugi cynił.',
+'cannotdelete' => 'Njejo móžno było bok abo dataju "$1" wulašowaś. Snaź jo to južo něchten drugi cynił.',
'badtitle' => 'Njepłaśecy nadpis',
'badtitletext' => 'Nadpis pominanego boka jo był njepłaśecy, prozny abo njekorektny nadpis, póchadajucy z mjazyrěcnego abo interwikijowego wótkaza. Snaź wopśimjejo jadno abo wěcej znamuškow, kótarež njejsu w nadpisach dowólone.',
'perfcached' => 'Toś te daty póchadaju z pufrowaka a mógu toś njeaktualne byś.',
@@ -507,7 +548,6 @@ Wótpšašanje: $2',
'virus-unknownscanner' => 'njeznaty antiwirus:',
# Login and logout pages
-'logouttitle' => 'Wužywarja wótzjawiś',
'logouttext' => "'''Sy se něnto wótzjawił.'''
Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš [[Special:UserLogin|se znowego pśizjawiś]] ako samski abo hynakšy wužywaŕ.
@@ -515,7 +555,6 @@ Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš [[Special:UserLogin
'welcomecreation' => '== Witaj, $1! ==
Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences|nastajenja {{SITENAME}}]].',
-'loginpagetitle' => 'Wužywarja pśizjawiś',
'yourname' => 'mě wužywarja',
'yourpassword' => 'šćitne gronidło:',
'yourpasswordagain' => 'Šćitne gronidło hyšći raz zapódaś:',
@@ -526,6 +565,7 @@ Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences
'nav-login-createaccount' => 'Pśizjawiś se/Konto załožyś',
'loginprompt' => 'Za pśizjawjenje do boka {{SITENAME}} muse cookije dowólone byś.',
'userlogin' => 'Pśizjawiś se/Konto załožyś',
+'userloginnocreate' => 'Pśizjawiś',
'logout' => 'wótzjawiś se',
'userlogout' => 'wótzjawiś se',
'notloggedin' => 'Njepśizjawjony(a)',
@@ -537,26 +577,8 @@ Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences
'createaccountmail' => 'z e-mailku',
'badretype' => 'Šćitnej gronidle, kótarejž sy zapódał, se njemakajotej.',
'userexists' => 'Toś to wužywarske mě słuša južo drugemu wužywarjeju, pšosym wuzwól se druge.',
-'youremail' => 'E-mail:',
-'username' => 'Wužywarske mě:',
-'uid' => 'ID wužywarja:',
-'prefs-memberingroups' => 'Cłonk {{PLURAL:$1|wužywarskeje skupiny|wužywarskeju kupkowu|wužywarskich kupkow|wužiwarskich kupkow}}:',
-'yourrealname' => 'Realne mě *:',
-'yourlanguage' => 'Rěc:',
-'yourvariant' => 'Warianta:',
-'yournick' => 'Pódpismo:',
-'badsig' => 'Signatura njejo dobra; pšosym HTML pśekontrolěrowaś.',
-'badsiglength' => 'Twója signatura jo pśedłujka. Musy mjenjej ako $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} měś.',
-'yourgender' => 'Rod:',
-'gender-unknown' => 'Njepódany',
-'gender-male' => 'Muskecy',
-'gender-female' => 'Žeńscyny',
-'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Realne mě jo opcionalne. Jolic až jo zapódajośo wužywa se za pódpisanje wašych pśinoskow.',
'loginerror' => 'Zmólka pśi pśizjawjenju',
-'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło. Móžoš teke drugim dowóliś se z tobu stajiś do zwiska pśez waš wužywarski abo diskusijny bok, bźez togo až dejš wótekšyś swóju identitu.',
-'prefs-help-email-required' => 'E-mailowa adresa trjebna.',
+'createaccounterror' => 'Wužywarske konto njejo se napóraś dało: $1',
'nocookiesnew' => 'Wužywarske konto jo se južo wutwóriło, ale wužywaŕ njejo pśizjawjony. {{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
'nocookieslogin' => '{{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
'noname' => 'Njejsy žedno płaśece wužywarske mě zapódał.',
@@ -566,9 +588,11 @@ Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences
Pśeglěduj pšawopis abo [[Special:UserLogin/signup|załož nowe konto]].',
'nosuchusershort' => 'Wužywarske mě „<nowiki>$1</nowiki>“ njeeksistěrujo. Pśeglěduj pšawopis.',
'nouserspecified' => 'Pšosym pódaj wužywarske mě.',
+'login-userblocked' => 'Toś ten wužywaŕ jo blokěrowany. Pśizjawjenje njejo dowólone.',
'wrongpassword' => 'Zapódane šćitne gronidło njejo pšawe. Pšosym wopytaj hyšći raz.',
'wrongpasswordempty' => 'Šćitne gronidło jo było prozne. Pšosym zapódaj jo hyšći raz.',
-'passwordtooshort' => 'Twójo gronidło jo njepłaśiwe abo pśeliš krotke. Wóno dej nanejmjenjej {{PLURAL:$|1 pismik|$1 pismika|$1 pismiki|$1 pismikow}} měś a njesmějo se z wužywarskim mjenim makaś.',
+'passwordtooshort' => 'Gronidła deje nanejmjenjej {{PLURAL:$|1 znamuško|$1 znamušce|$1 znamuška|$1 znamuškow}} měś.',
+'password-name-match' => 'Twójo gronidło musy se wót swójogo wužywarskego mjenja rozeznaś.',
'mailmypassword' => 'Nowe gronidło pśipósłaś',
'passwordremindertitle' => 'Nowe nachylne pótajmne słowo za {{SITENAME}}',
'passwordremindertext' => 'Něchten z IP-adresu $1 (nejskerjej ty) jo se wupšosył nowe gronidło za {{SITENAME}} ($4).
@@ -576,6 +600,7 @@ Nachylne gronidło za wužywarja "$2" jo se napórało a jo něnto "$3". Jolic j
Jolic jo něchten drugi wó nowe šćitne gronidło pšosył abo ty sy se zasej dopomnjeł na swójo gronidło a njocoš wěcej jo změniś, móžoš toś tu powěsć ignorěrowaś a swójo stare gronidło dalej wužywaś.',
'noemail' => 'Wužywaŕ „$1“ njejo e-mailowu adresu zapódał.',
+'noemailcreate' => 'Dejš płaśiwu e-mailowu adresu pódaś',
'passwordsent' => 'Nowe šćitne gronidło jo se wótpósłało na e-mailowu adresu wužywarja „$1“.
Pšosym pśizjaw se zasej, gaž jo dostanjoš.',
'blocked-mailpassword' => 'Twója IP-adresa jo se za wobźěłowanje bokow blokěrowała a teke pśipósłanje nowego šćitnego gronidła jo se znjemóžniło, aby se znjewužywanjeju zadorało.',
@@ -597,8 +622,10 @@ Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne ko
'createaccount-text' => 'Něchten jo konto za twóje e-mailowu adresu na {{GRAMMAR:lokatiw|{{SITENAME}}}} ($4) z mjenim "$2", z pótajmnym słowom "$3", wutwórił. Dejš se pśizjawiś a swóje pótajmne słowo něnt změniś.
Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnje wutwóriło.',
+'usernamehasherror' => 'Wužywarske mě njesmějo hašowe znamuška wopśimjeś',
'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym, nježli až wopytajoš znowego.',
'loginlanguagelabel' => 'Rěc: $1',
+'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
# Password reset dialog
'resetpass' => 'Gronidło změniś',
@@ -610,17 +637,13 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
'retypenew' => 'Nowe šćitne gronidło (hyšći raz):',
'resetpass_submit' => 'Šćitne gronidło nastajiś a se pśizjawiś',
'resetpass_success' => 'Twójo nowe šćitne gronidło jo nastajone. Něnto se pśizjaw …',
-'resetpass_bad_temporary' => 'Nachylne e-mailowe šćitne gronidło njejo korektne. Sy swójo šćitne gronidło južo pśeměnił(a) abo wó nowe nachylne gronidło pšošył(a).',
'resetpass_forbidden' => 'Gronidła njedaju se změniś',
'resetpass-no-info' => 'Dejš pśizjawjony byś, aby direktny pśistup na toś ten bok měł.',
'resetpass-submit-loggedin' => 'Gronidło změniś',
+'resetpass-submit-cancel' => 'Pśetergnuś',
'resetpass-wrong-oldpass' => 'Njepłaśiwe nachylne abo aktualne gronidło.
Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło pominał.',
'resetpass-temp-password' => 'Nachylne gronidło:',
-'resetpass-log' => 'Protokol wó anulěrowanju gronidłow',
-'resetpass-logtext' => 'Dołojce jo protokol wužywarjow, kótarychž gronidło administrator jo anulěrował.',
-'resetpass-logentry' => 'jo změnił gronidło za $1',
-'resetpass-comment' => 'Pśicyna za anulěrowanje gronidła:',
# Edit page toolbar
'bold_sample' => 'Tucny tekst',
@@ -694,7 +717,6 @@ Zapśimjejśo pšosym wše górjejce pomjenjowane drobnosći do wšych napšašo
'blockededitsource' => "Žrědłowy tekst '''Twójich pśinoskow''' do '''$1''' jo:",
'whitelistedittitle' => 'Za wobźěłanje dejš se pśizjawiś',
'whitelistedittext' => 'Musyš se $1, aby mógał boki wobźěłowaś.',
-'confirmedittitle' => 'Za wobźěłanje jo wobkšuśenje e-mailki notne.',
'confirmedittext' => 'Nježli až móžoš źěłaš, musyš swóju e-mailowu adresu wobkšuśiś. Pšosym dodaj a wobkšuś swóju e-mailowu adresu w [[Special:Preferences|nastajenjach]].',
'nosuchsectiontitle' => 'Wótrězk njedajo se namakaś',
'nosuchsectiontext' => 'Sy wopytał wótrězk wobźěłaś, kótaryž njeeksistěrujo.
@@ -711,10 +733,17 @@ Gronidło za toś to nowe konto dajo se na boku ''[[Special:ChangePassword|Groni
Aby bok napórał, zapiš do kašćika dołojce (glědaj [[{{MediaWiki:Helppage}}|bok pomocy]] za dalšne informacije). Jolic sy zamólnje how, klikni na tłocašk '''Slědk'' w swójom wobglědowaku.",
'anontalkpagetext' => "---- ''Toś jo diskusijny bok za anonymnego wužywarja, kótaryž njejo dotychměst žedno wužywarske konto załožył abo swójo konto njewužywa. Togodla dejmy numerisku IP-adresu wužywaś, aby jogo/ju identificěrowali. Taka IP-adresa dajo se wót wšakich wužywarjow wužywaś. Jolic sy anonymny wužywaŕ a se mysliš, až su se njerelewantne komentary na tebje měrili, [[Special:UserLogin/signup|załož konto]] abo [[Special:UserLogin|pśizjaw se]], aby se w pśichoźe zmuśenje z drugimi anonymnymi wužywarjami wobinuł.''",
'noarticletext' => 'Dotychměst toś ten bok hyšći njewopśimujo žeden tekst. Móžoš w drugich bokach [[Special:Search/{{PAGENAME}}|titel togo boka pytaś]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wótpowědne protokole pytaś] abo [{{fullurl:{{FULLPAGENAME}}|action=edit}} toś ten bok wobźěłaś]</span>.',
+'noarticletext-nopermission' => 'Tuchylu njejo žeden tekst na toś tom boku.
+Móžoš [[Special:Search/{{PAGENAME}}|toś ten bokowy titel]] na drugich bokach pytaś
+abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wótpowědne protokole pytaś]</span>.',
'userpage-userdoesnotexist' => 'Wužywarske konto "$1" njejo zregistrěrowane. Pšosym pśeglědaj, lěc coš toś ten bok wopšawdu napóraś/wobźěłaś.',
+'userpage-userdoesnotexist-view' => 'Wužywarske konto "$1" njejo zregistrowane.',
+'blocked-notice-logextract' => 'Toś ten wužywaŕ jo tuchylu blokěrowany.
+Nejnowšy zapisk blokěrowańskego protokola pódawa se dołojce ako referenca:',
'clearyourcache' => "'''Pokazka: Jo móžno, až dejš wuprozniś cache wobglědowaka, aby změny wiźeł.'''
'''Mozilla/Firefox/Safari:''' Źarź ''Umsch'' tłocony, mjaztym až kliknjoš ''Znowego'' abo tłoc pak ''Strg-F5'' pak ''Strg-R'' (''Command-R'' na Makintošu); '''Konqueror: '''Klikni ''' na ''Aktualisieren'' abo tłoc ''F5;'' '''Opera:''' wuprozni cache w ''Extras -> Eisntellungen;'' '''Internet Explorer:''' źarź ''Strg'' tłocony, mjaztym až kliknjoš na ''Aktualisieren'' abo tłoc ''Strg-F5.''",
-'usercssjsyoucanpreview' => "'''Pokazka:''' Wužywaj tłocydło \"Pśeglěd\", aby swój nowy css/js testował, nježli až jen składujoš.",
+'usercssyoucanpreview' => "'''Pokazka:''' Wužywaj tłocašk '{{int:showpreview}}', aby swój nowy css testował, nježli až jen składujoš.",
+'userjsyoucanpreview' => "'''Pokazka:''' Wužywaj tłocašk \"{{int:showpreview}}\", aby swój nowy JavaScript testował, nježli až jen składujoš.",
'usercsspreview' => "'''Źiwaj na to, až wobglědujoš se jano pśeglěd swójogo wužywarskego CSS. Njejo se hyšći składował!'''",
'userjspreview' => "== Pśeglěd Wašogo wužywarskego JavaScripta ==
'''Glědaj:''' Pó składowanju musyš swójomu browseroju kazaś, aby nowu wersiju pokazał: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
@@ -755,13 +784,16 @@ Pšosym pśemysli, jolic njamóžo se bok na mjeńše wótrězki rozdźěliś.''
'readonlywarning' => "'''WARNOWANJE: Datowa banka jo se za wótwardowanje zacyniła, togodla njebuźo tuchylu móžno, twóje změny składowaś. Jolic až coš, ga móžoš tekst do tekstoweje dataje kopěrowaś a pózdźej składowaś.'''
Administrator, kenž jo ju zastajił, su toś tu pśicynu pódał: $1",
-'protectedpagewarning' => "'''Glědaj: Toś ten bok jo se zakazał, tak až jano sysopowe wužywarje mógu jen wobźěłaś.'''",
-'semiprotectedpagewarning' => "'''Markuj:''' Toś ten bok jo se zakazał, tak až jano registrěrowane wužywarje mógu jen wobźěłaś.",
+'protectedpagewarning' => "'''Warnowanje: Toś ten bok jo se zastajił, tak až jano wužywarje z pšawami administratora mógu jen wobźěłaś.'''
+Nejnowšy protokolowy zapisk jo dokojce ako referenca pódany:",
+'semiprotectedpagewarning' => "'''Glědaj:''' Toś ten bok jo se zastajił, tak až jano zregistrěrowane wužywarje mógu jen wobźěłaś.
+Nejnowšy protokolowy zapisk jo dołojce ako referenca pódany:",
'cascadeprotectedwarning' => "'''Glědaj: Toś ten bok jo se zakazał, tak až jano wužywarje ze sysopowymi priwiliegijami mógu jen wobźěłaś, dokulaž jo zawězana do {{PLURAL:$1|slědujucego boka|slědujuceju bokowu|slědujucych bokow}}, {{PLURAL:$1|kótaryž jo šćitany|kótarejž stej šćitanej|kótarež su šćitane}} z pomocu kaskadoweje zakazanskeje opcije.'''",
-'titleprotectedwarning' => "'''WARNOWANJE: Toś ten bok bu zakazany, tak až [[Special:ListGroupRights|wósebne pšawa]] su trěbne, aby jen napórał.'''",
-'templatesused' => 'Za toś ten bok su se slědujuce pśedłogi wužywali:',
-'templatesusedpreview' => 'Za toś ten pśeglěd su slědujuce pśedłogi se wužywali:',
-'templatesusedsection' => 'W toś tom wótrězku su slědujuce pśedłogi se wužywali:',
+'titleprotectedwarning' => "'''WARNOWANJE: Toś ten bok jo se zastajił, tak až [[Special:ListGroupRights|wósebne pšawa]] su trěbne, aby se napórał.'''
+Nejnowšy protokolowy zapisk jo dołojce ako referenca pódany:",
+'templatesused' => 'Na toś tom boku {{PLURAL:$1|wužywana pśedłoga|wužywanej pśedłoze|wužyane pśedłogi|wužywane pśedłogi}}:',
+'templatesusedpreview' => 'W toś tom pśeglěźe {{PLURAL:$1|wužywana pśedłoga|wužywanej pśedłoze|wužywane pśedłogi|wužywane pśedłogi}}:',
+'templatesusedsection' => 'W toś tom wótrězku {{PLURAL:$1|wužywana pśedłoga|wužywanej pśedłoze|wužywane pśedłogi|wužywane pśedłogi}}:',
'template-protected' => '(šćitane)',
'template-semiprotected' => '(poł šćitane)',
'hiddencategories' => 'Toś ten bok jo jadna z {{PLURAL:$1|1 schowaneje kategorije|$1 schowaneju kategorijow|$1 schowanych kategorijow|$1 schowanych kategorijow}}:',
@@ -769,15 +801,17 @@ Administrator, kenž jo ju zastajił, su toś tu pśicynu pódał: $1",
'nocreatetitle' => 'Załožowanje nowych bokow jo se wobgranicowało.',
'nocreatetext' => 'Na {{GRAMMAR:lokatiw|{{SITENAME}}}} jo se załoženje nowych bokow wót serwera wobgranicowało. Móžoš hyś slědk a eksistěrujucy bok wobźěłaś, abo se [[Special:UserLogin|pśizjawiś]].',
'nocreate-loggedin' => 'Njamaš pšawo nowe boki napóraś.',
+'sectioneditnotsupported-title' => 'Wobźěłowanje wótrězka se njepódpěra',
+'sectioneditnotsupported-text' => 'Wobźěłowanje wótrězka njepódpěra se na toś tom wobźěłowańskem boku.',
'permissionserrors' => 'Problem z pšawami',
'permissionserrorstext' => 'Njamaš pšawo to cyniś. {{PLURAL:$1|Pśicyna|Pśicynje|Pśicyny}}:',
'permissionserrorstext-withaction' => 'Z {{PLURAL:$1|slědujuceje pśicyny|slědujuceju pśicynowu|slědujucych pśicynow|slědujucych pśicynow}} njamaš pšawo $2:',
-'recreate-deleted-warn' => "'''Glědaj: Ty wótžywijoš bok, kótaryž jo pjerwjej se wulašował.'''
+'recreate-moveddeleted-warn' => "'''Glědaj: Ty wótžywijoš bok, kótaryž jo pjerwjej se wulašował.'''
-Pšosym pśespytuj kradosćiwje, lic wótpowědujo dalšne wótnowjenje bokow směrnicam.
-Aby se mógał informěrowaś, slědujo how wulašowanski log-zapis, w kótaremž namakajoš teke pśicyny wulašowanja.",
-'deleted-notice' => 'Toś ten bok jo se wulašował. Protokol wulašowanjow za toś ten bok pódawa se dołojce ako referenca.',
-'deletelog-fulllog' => 'Dopołny protokol se wobglědaś',
+Pšosym pśespytuj kradosćiwje, lěc jo gódnje z wobźěłowanim boka pokšacowaś.
+Protokol wulašowanjow a pśesunjenjow za toś ten bok so how za informaciju pódawa:",
+'moveddeleted-notice' => 'Toś ten bok jo se wulašował. Protokol wulašowanjow a pśesunjenjow za toś ten bok pódawa se dołojce ako referenca.',
+'log-fulllog' => 'Dopołny protokol se woglědaś',
'edit-hook-aborted' => 'Wobźěłanje pśez kokulu pśetergnjony.
Njejo žedno wujasnjenje.',
'edit-gone-missing' => 'Njejo móžno było bok aktualizěrowaś.
@@ -798,6 +832,7 @@ Njesmějo daś wěcej nježli $2 {{PLURAL:$2|wołanja|wołanjowu|wołanjow|woła
'post-expand-template-argument-category' => 'Boki, kótarež wuwóstajone pśedłogowe argumenty wopśimuju',
'parser-template-loop-warning' => 'Pśedłogowa šlejfa namakana: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limit rekursijneje dłymi pśedłogi pśekšocony ($1)',
+'language-converter-depth-warning' => 'Limit dłymokosći rěcnego konwertera pśekšocony ($1)',
# "Undo" feature
'undo-success' => 'Wobźěłanje móžo se wótpóraś. Pšosym pśeglěduj dołojcne pśirownowanje aby se wěsty był, až to wót wěrnosći coš, a pón składuj změny, aby se wobźěłanje doskóńcnje wótpórało.',
@@ -817,7 +852,7 @@ Pśicyna, kótaruž $3 jo zapódał, jo ''$2''.",
'currentrev' => 'Aktualna wersija',
'currentrev-asof' => 'Aktualna wersija wót $1',
'revisionasof' => 'Wersija z $1',
-'revision-info' => 'Wersija z $1 wót wužywarja $2', # Additionally available: $3: revision id
+'revision-info' => 'Wersija z $1 wót wužywarja $2',
'previousrevision' => '← Zachadna rewizija',
'nextrevision' => 'Pśiduca wersija →',
'currentrevisionlink' => 'Aktualna wersija',
@@ -832,7 +867,7 @@ Legenda:
* (Aktualne) = Rozdźěl k aktualnej wersiji, (pśedchadna) = rozdźěl k pśedchadnej wersiji
* Cas/datum = W toś tom casu aktualna wersija, wužywarske mě/IP-adresa wobźěłarja, D = drobna změna',
'history-fieldset-title' => 'W stawiznach pytaś',
-'deletedrev' => '[wulašowane]',
+'history-show-deleted' => 'Jano wulašowane',
'histfirst' => 'nejstarše',
'histlast' => 'nejnowše',
'historysize' => '({{PLURAL:$1|1 byte|$1 byta|$1 byty}})',
@@ -841,69 +876,112 @@ Legenda:
# Revision feed
'history-feed-title' => 'Stawizny wersijow',
'history-feed-description' => 'Stawizny wersijow za toś ten bok w {{GRAMMAR:lokatiw|{{SITENAME}}}}',
-'history-feed-item-nocomment' => '$1 na $2', # user at time
+'history-feed-item-nocomment' => '$1 na $2',
'history-feed-empty' => 'Pominany bok njeeksistěrujo.
Snaź jo se z wiki wulašował abo hynac pómjenił.
[[Special:Search|Pśepytaj]] {{SITENAME}} za relewantnymi bokami.',
# Revision deletion
-'rev-deleted-comment' => '(Komentar wulašowany)',
-'rev-deleted-user' => '(Wužywarske mě wulašowane)',
-'rev-deleted-event' => '(protokolowa akcija wulašowana)',
-'rev-deleted-text-permission' => "Toś ta wersija boka jo se '''wulašowała'''. Ewentuelne drobnostki su w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
-'rev-deleted-text-view' => "Toś ta wersija boka jo se '''wulašowała'''.
-Ako administrator móžoš se ju woglědaś; glědaj ewentuelne drobnostki w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
-'rev-deleted-no-diff' => "Njamóžoš se toś ten rozdźěl woglědaś, dokulaž jadna z wersijow jo se '''wulašowała'''.
-Glědaj ewentuelne drobnostki w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
-'rev-deleted-unhide-diff' => "Jadna z wersijow toś togo rozdźěla jo se '''wulašowała'''.
-Glědaj ewentuelne drobnostki w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].
+'rev-deleted-comment' => '(Komentar wulašowany)',
+'rev-deleted-user' => '(Wužywarske mě wulašowane)',
+'rev-deleted-event' => '(protokolowa akcija wulašowana)',
+'rev-deleted-user-contribs' => '[wužywarske mě wótpórane abo IP-adresa wótpórana - změna mjez pśinoskami schowana]',
+'rev-deleted-text-permission' => "Toś ta wersija boka jo se '''wulašowała'''. Ewentuelne su drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+'rev-deleted-text-unhide' => "Toś ta wersija boka jo se '''wulašowała'''.
+Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].
+Ako administrator móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
+'rev-suppressed-text-unhide' => "Toś ta wersija boka jo se '''pódtłocyła'''.
+Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódłocenjow].
+Ako administrator móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
+'rev-deleted-text-view' => "Toś ta wersija boka jo se '''wulašowała'''.
+Ako administrator móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+'rev-suppressed-text-view' => "Toś ta wersija boka jo se '''pódtłocyła'''.
+Ako administrator móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
+'rev-deleted-no-diff' => "Njamóžoš se toś ten rozdźěl woglědaś, dokulaž jadna z wersijow jo se '''wulašowała'''.
+Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+'rev-suppressed-no-diff' => "Njamóžoš se toś ten rozdźěl woglědaś, dokulaž jadna z wersijow jo se '''wulašowała'''.",
+'rev-deleted-unhide-diff' => "Jadna z wersijow toś togo rozdźěla jo se '''wulašowała'''.
+Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].
Ako administrator móžoš hyšći se [$1 toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
-'rev-delundel' => 'pokazaś/schowaś',
-'revisiondelete' => 'Wersije wulašowaś/wótnowiś',
-'revdelete-nooldid-title' => 'Njepłaśiwa celowa wersija',
-'revdelete-nooldid-text' => 'Njejsy pak žednu celowu wersiju pódał, aby se toś ta funkcija wuwjadła, pódana funkcija njeeksistěrujo pak wopytujoš aktualnu wersiju chowaś.',
-'revdelete-nologtype-title' => 'Žeden protokolowy typ pódany',
-'revdelete-nologtype-text' => 'Njejsy pódał protokolowy typ, aby wuwjadł toś tu akciju.',
-'revdelete-toomanytargets-title' => 'Pśewjele celow',
-'revdelete-toomanytargets-text' => 'Sy pódał pśewjele celowych typow, aby wuwjadł toś tu akciju.',
-'revdelete-nologid-title' => 'Njepłaśiwy protokolowy zapisk',
-'revdelete-nologid-text' => 'Pak njejsy pódał celowe protokolowe tšojenje, aby wuwjadł toś tu funkciju pak pódany zapisk njeeksistěrujo.',
-'revdelete-selected' => "'''{{PLURAL:$2|Wuzwólona wersija|Wuzwólonej wersiji|Wuzwólone wersije}} wót [[:$1]].'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Wuzwólony protokolowe tšojenje|Wuzwólonej protokolowe tšojeni|wuzwólone protokolowe tšojenja}}:'''",
-'revdelete-text' => "'''Wulašowane wersije a tšojenja budu se dalej w stawiznach boka a w protokolach pokazaś, ale źěle jich wopśimjeśa njebudu pśistupne za zjawnosć.'''
-
-Dalšne administratory na {{GRAMMAR:lokatiw|{{SITENAME}}}} mógu ale pśecej hyšći pśistup na schowane wopśimjeśe měś a mógu jo pśez samki interfejs wótnowiś, snaźkuli su pśidatne wobgranicowanja.
-Pšosym wobkšuś, až coš to cyniś, až rozmějoš slědy a až cyniš to wótpowědujucy [[{{MediaWiki:Policy-url}}|zasadam]].",
-'revdelete-suppress-text' => "Pódtłocenje by se dejał '''jano''' za slědujuce pady wužywaś:
+'rev-suppressed-unhide-diff' => "Jadna z wersijow twójogo rozdźěla jo se '''pódtłócyła'''.
+Za drobnostki glědaj [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokol pódłócenjow].
+Ako administrator móžoš hyšći [$1 se toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
+'rev-deleted-diff-view' => "Jadna z wersijow toś togo rozdźěla jo se '''wulašowała'''.
+Ako administrator móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+'rev-suppressed-diff-view' => "Jadna z wersijow toś togo rozdźěla jo se '''pódtłocyła'''.
+Ako administrator móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
+'rev-delundel' => 'pokazaś/schowaś',
+'rev-showdeleted' => 'pokazaś',
+'revisiondelete' => 'Wersije wulašowaś/wótnowiś',
+'revdelete-nooldid-title' => 'Njepłaśiwa celowa wersija',
+'revdelete-nooldid-text' => 'Njejsy pak žednu celowu wersiju pódał, aby se toś ta funkcija wuwjadła, pódana funkcija njeeksistěrujo pak wopytujoš aktualnu wersiju chowaś.',
+'revdelete-nologtype-title' => 'Žeden protokolowy typ pódany',
+'revdelete-nologtype-text' => 'Njejsy pódał protokolowy typ, aby wuwjadł toś tu akciju.',
+'revdelete-nologid-title' => 'Njepłaśiwy protokolowy zapisk',
+'revdelete-nologid-text' => 'Pak njejsy pódał celowe protokolowe tšojenje, aby wuwjadł toś tu funkciju pak pódany zapisk njeeksistěrujo.',
+'revdelete-no-file' => 'Pódana dataja njeeksistěrujo.',
+'revdelete-show-file-confirm' => 'Coš se napšawdu wulašowanu wersiju dataje "<nowiki>$1</nowiki>" wót $2 $3 woglědaś?',
+'revdelete-show-file-submit' => 'Jo',
+'revdelete-selected' => "'''{{PLURAL:$2|Wuzwólona wersija|Wuzwólonej wersiji|Wuzwólone wersije}} wót [[:$1]].'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Wuzwólony protokolowe tšojenje|Wuzwólonej protokolowe tšojeni|wuzwólone protokolowe tšojenja}}:'''",
+'revdelete-text' => "'''Wulašowane wersije a tšojenja budu se dalej w stawiznach boka a w protokolach pokazaś, ale źěle jich wopśimjeśa njebudu pśistupne za zjawnosć.'''
+Dalšne administratory na {{GRAMMAR:lokatiw|{{SITENAME}}}} mógu ale pśecej hyšći pśistup na schowane wopśimjeśe měś a mógu jo pśez samki interfejs wótnowiś, snaźkuli su pśidatne wobgranicowanja.",
+'revdelete-confirm' => 'Pšosym wobkšuś, až coš to cyniś, až rozmějoš konsekwence a až cyniš to pó [[{{MediaWiki:Policy-url}}|pšawidłach]].',
+'revdelete-suppress-text' => "Pódtłocenje by se dejał '''jano''' za slědujuce pady wužywaś:
* Njegóźece se wósobinske informacije
*: ''bydleńske adrese a telefonowe numery, numery socialnego zawěsćenja atd.''",
-'revdelete-legend' => 'wobgranicowanja widobnosći póstajiś',
-'revdelete-hide-text' => 'Tekst wersije schowaś',
-'revdelete-hide-name' => 'Akciju log-lisćiny schowaś',
-'revdelete-hide-comment' => 'Komentar wobźěłanja schowaś',
-'revdelete-hide-user' => 'mě/IP-adresu wobźěłarja schowaś',
-'revdelete-hide-restricted' => 'Daty wót administratorow ako teke te drugich wužywarjow pódtłocyś',
-'revdelete-suppress' => 'Pśicynu wulašowanja teke za administratorow schowaś',
-'revdelete-hide-image' => 'Wopśimjeśe dataje schowaś',
-'revdelete-unsuppress' => 'Wobgranicowanja za wótnowjone wersije zasej zwignuś.',
-'revdelete-log' => 'Pśicyna:',
-'revdelete-submit' => 'We wuzwólonej wersiji nałožyś',
-'revdelete-logentry' => 'Woglědanje wersije změnjone za [[$1]]',
-'logdelete-logentry' => 'wiźobnosć za [[$1]] změnjona.',
-'revdelete-success' => "'''Widobnosć wersije jo se z wuspěchom zaktualizěrowała.'''",
-'logdelete-success' => "'''Wiźobnosć log-lisćiny z wuspěchom změnjona.'''",
-'revdel-restore' => 'Widobnosć změniś',
-'pagehist' => 'stawizny boka',
-'deletedhist' => 'wulašowane stawizny',
-'revdelete-content' => 'wopśimjeśe',
-'revdelete-summary' => 'Zespominanje wobźěłanja',
-'revdelete-uname' => 'wužywarske mě',
-'revdelete-restricted' => 'Wobgranicowanja se teke na administratorow nałožuju',
-'revdelete-unrestricted' => 'Wobgranicowanja za administratorow wótpórane',
-'revdelete-hid' => 'schowa $1',
-'revdelete-unhid' => 'zasej wótkšy $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|wersiju|wersiji|wersije|wersijow}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|tšojenje|tšojeni|tšojenja|tšojenjow}}',
+'revdelete-legend' => 'wobgranicowanja widobnosći póstajiś',
+'revdelete-hide-text' => 'Tekst wersije schowaś',
+'revdelete-hide-image' => 'Wopśimjeśe dataje schowaś',
+'revdelete-hide-name' => 'Akciju log-lisćiny schowaś',
+'revdelete-hide-comment' => 'Komentar wobźěłanja schowaś',
+'revdelete-hide-user' => 'mě/IP-adresu wobźěłarja schowaś',
+'revdelete-hide-restricted' => 'Daty wót administratorow ako teke te drugich wužywarjow pódtłocyś',
+'revdelete-radio-same' => '(njezměniś)',
+'revdelete-radio-set' => 'Jo',
+'revdelete-radio-unset' => 'Ně',
+'revdelete-suppress' => 'Pśicynu wulašowanja teke za administratorow schowaś',
+'revdelete-unsuppress' => 'Wobgranicowanja za wótnowjone wersije zasej zwignuś.',
+'revdelete-log' => 'Pśicyna:',
+'revdelete-submit' => 'Na {{PLURAL:$1|wubranu wersiju|wubranej wersiji|wubrane wersije|wubrane wersije}} nałožyś',
+'revdelete-logentry' => 'Woglědanje wersije změnjone za [[$1]]',
+'logdelete-logentry' => 'wiźobnosć za [[$1]] změnjona.',
+'revdelete-success' => "'''Widobnosć wersije jo se z wuspěchom zaktualizěrowała.'''",
+'revdelete-failure' => "'''Wersijowa widobnosć njedajo se aktualizěrowaś:'''
+$1",
+'logdelete-success' => "'''Wiźobnosć log-lisćiny z wuspěchom změnjona.'''",
+'logdelete-failure' => "'''Protokolowa wiźobnosć njejo se dała nastajiś:'''
+$1",
+'revdel-restore' => 'Widobnosć změniś',
+'pagehist' => 'stawizny boka',
+'deletedhist' => 'wulašowane stawizny',
+'revdelete-content' => 'wopśimjeśe',
+'revdelete-summary' => 'Zespominanje wobźěłanja',
+'revdelete-uname' => 'wužywarske mě',
+'revdelete-restricted' => 'Wobgranicowanja se teke na administratorow nałožuju',
+'revdelete-unrestricted' => 'Wobgranicowanja za administratorow wótpórane',
+'revdelete-hid' => 'schowa $1',
+'revdelete-unhid' => 'zasej wótkšy $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|wersiju|wersiji|wersije|wersijow}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|tšojenje|tšojeni|tšojenja|tšojenjow}}',
+'revdelete-hide-current' => 'Zmólka pśi chowanju zapiska wót $2, $1: to jo aktualna wersija.
+Njedajo se schowaś.',
+'revdelete-show-no-access' => 'Zmólka pśi pokazowanju zapiska wót $2, $1: toś ten zapisk jo se ako "wobgranicowany" markěrował.
+Njamaš pśistup na njen.',
+'revdelete-modify-no-access' => 'Zmólka pśi změnjanju zapiska wót $2, $1: toś ten zapisk jo se ako "wobgranicowany" markěrował.
+Njamaš pśistup na njen.',
+'revdelete-modify-missing' => 'Zmólka pśi změnjanju zapiska ID $1: felujo w datowej bance!',
+'revdelete-no-change' => "'''Warnowanje:''' zapisk wót $2, $1 jo južo měł pominane nastajenja wiźobnosći.",
+'revdelete-concurrent-change' => 'Zmólka pśi změnjanju zapiska wót $2, $1: zda se, až jogo status jo se změnił wót někogo drugego, mjaztym až sy wopytał jen změniś.
+Pšosym pśeglědaj protokole.',
+'revdelete-only-restricted' => 'Zmólka pśi chowanju zapiska wót $2, $1; njamóžoš zapiski pśed wócami administratorow pódtłocyś, mimo až teke wuběraš jadnu z drugich wiźobnosćowych opcijow.',
+'revdelete-reason-dropdown' => '*Zwucone pśicyny za wulašowanje
+** Pśestupjenje awtorskego pšawa
+** Njegóźece se wósobinske informacije',
+'revdelete-otherreason' => 'Druga/pśidatna pśicyna:',
+'revdelete-reasonotherlist' => 'Druga pśicyna',
+'revdelete-edit-reasonlist' => 'Pśicyny za lašowanje wobźěłaś',
+'revdelete-offender' => 'Awtor wersije:',
# Suppression log
'suppressionlog' => 'Protokol pódłocowanjow',
@@ -939,67 +1017,13 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
'mergelogpagetext' => 'Dołojce jo lisćina nejnowejšych zjadnośenjow historije boka z drugej.',
# Diffs
-'history-title' => 'Stawizny wersijow boka „$1“',
-'difference' => '(rozdźěle mjazy wersijoma/wersijami)',
-'lineno' => 'Rědka $1:',
-'compareselectedversions' => 'Wuzwólonej wersiji pśirownaś',
-'visualcomparison' => 'Wizuelne pśirownanje',
-'wikicodecomparison' => 'Pśirownanje wikiteksta',
-'editundo' => 'wótwrośiś',
-'diff-multi' => '(Pśirownanje wersijow(u) wopśimjejo teke {{PLURAL:$1|mjaz tutyma lažecu wersiju|$1 mjaz tutyma lažecej wersiji|$1 mjaz tutyma lažece wersije}}.)',
-'diff-movedto' => 'pśesunjony do $1',
-'diff-styleadded' => 'Stil $1 pśidany',
-'diff-added' => '$1 pśidany',
-'diff-changedto' => 'pśeměnjony do $1',
-'diff-movedoutof' => 'pśesunjony z $1',
-'diff-styleremoved' => 'Stil $1 wótwónoźony',
-'diff-removed' => '$1 wótwónoźony',
-'diff-changedfrom' => 'pśeměnjony z $1',
-'diff-src' => 'žrědło',
-'diff-withdestination' => 'z celom $1',
-'diff-with' => '&#32;z $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'šyrokosć',
-'diff-height' => 'wusokosć',
-'diff-p' => "'''wótstawk'''",
-'diff-blockquote' => "'''blokowy citat'''",
-'diff-h1' => "'''nadpismo (1. rownina)'''",
-'diff-h2' => "'''nadpismo (2. rownina)'''",
-'diff-h3' => "'''nadpismo (3. rownina)'''",
-'diff-h4' => "'''nadpismo (4. rownina)'''",
-'diff-h5' => "'''nadpismo (5. rownina)'''",
-'diff-pre' => "'''předpformatěrowany blok'''",
-'diff-div' => "'''blokowy element'''",
-'diff-ul' => "'''njenumerěrowana lisćina'''",
-'diff-ol' => "'''numerěrowana lisćina'''",
-'diff-li' => "'''lisćinowy zapisk'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''tabelowe wopśimjeśe'''",
-'diff-tr' => "'''rěd'''",
-'diff-td' => "'''cela'''",
-'diff-th' => "'''słupowe nadpismo'''",
-'diff-br' => "'''łamanje'''",
-'diff-hr' => "'''horicontalna linija'''",
-'diff-code' => "'''blok z komputerowym kodom'''",
-'diff-dl' => "'''definiciska lisćina'''",
-'diff-dt' => "'''definiciske zapśimjeśe'''",
-'diff-dd' => "'''definicija'''",
-'diff-input' => "'''zapódaśe'''",
-'diff-form' => "'''formular'''",
-'diff-img' => "'''wobraz'''",
-'diff-span' => "'''smužkowy element'''",
-'diff-a' => "'''wótkaz'''",
-'diff-i' => "'''kursiwny'''",
-'diff-b' => "'''tucny'''",
-'diff-strong' => "'''mócny'''",
-'diff-em' => "'''wuzwignjenje'''",
-'diff-font' => "'''pismowa družyna'''",
-'diff-big' => "'''wjeliki'''",
-'diff-del' => "'''wulašowany'''",
-'diff-tt' => "'''kšuta šyrokosć'''",
-'diff-sub' => "'''dłymoko stajony'''",
-'diff-sup' => "'''wusoko stajony'''",
-'diff-strike' => "'''pśešmarnuś'''",
+'history-title' => 'Stawizny wersijow boka „$1“',
+'difference' => '(rozdźěle mjazy wersijoma/wersijami)',
+'lineno' => 'Rědka $1:',
+'compareselectedversions' => 'Wuzwólonej wersiji pśirownaś',
+'showhideselectedversions' => 'Wubrane wersije pokazaś/schowaś',
+'editundo' => 'wótwrośiś',
+'diff-multi' => '(Pśirownanje wersijow(u) wopśimjejo teke {{PLURAL:$1|mjaz tutyma lažecu wersiju|$1 mjaz tutyma lažecej wersiji|$1 mjaz tutyma lažece wersije}}.)',
# Search results
'searchresults' => 'Wuslědki pytanja',
@@ -1007,29 +1031,25 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
'searchresulttext' => 'Za wěcej informacijow wó pśepytowanju {{GRAMMAR:genitiw|{{SITENAME}}}} glědaj [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Sy pytał za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wše boki, kótarež zachopiju se z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wše wótkaze, kótarež wótkazuju do "$1"]])',
'searchsubtitleinvalid' => 'Ty sy pytał „$1“.',
-'noexactmatch' => "'''Bok z napismom „$1“ njeeksistěrujo.'''
-Móžoš bok ale teke [[:$1|sam załožyś]].",
-'noexactmatch-nocreate' => "'''Njama boka z nadpismom \"\$1\".'''",
'toomanymatches' => 'Pśewjele pytańskich wuslědkow, pšosym wopytaj druge wótpšašanje.',
'titlematches' => 'boki z wótpowědujucym napismom',
'notitlematches' => 'Boki z wótpowědujucym napismom njeeksistěruju.',
'textmatches' => 'Boki z wótpowědujucym tekstom',
'notextmatches' => 'Boki z wótpowědujucym tekstom njeeksistěruju.',
-'prevn' => 'zachadne $1',
-'nextn' => 'pśiduce $1',
+'prevn' => '{{PLURAL:$1|zachadny $1|zachadnej $1|zachadne $1|zachadnych $1}}',
+'nextn' => '{{PLURAL:$1|pśiducy $1|pśiducej $1|pśiduce $1|pśiducych $1}}',
'prevn-title' => '{{PLURAL:$1|Pjerwjejšny wuslědk|Pjerwjejšnej $1 wuslědka|Pjerwjejšne $1 wuslědki|Pjerwjejšnych $1 wuslědkow}}',
'nextn-title' => '{{PLURAL:$1|Pśiducy wuslědk|Pśiducej $1 wuslědka|Pśiduce $1 wuslědki|Pśiducych $1 wuslědkow}}',
'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědka|wuslědki|wuslědkow}} na bok pokazaś',
-'viewprevnext' => 'Pokazaś ($1) ($2) ($3).',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazaś',
'searchmenu-legend' => 'Pytańske opcije',
'searchmenu-exists' => "'''Jo bok z mjenim \"[[\$1]]\" na toś tom wikiju'''",
'searchmenu-new' => "'''Napóraj bok \"[[:\$1|\$1]]\" na toś tom wikiju!'''",
'searchhelp-url' => 'Help:Pomoc',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Boki z toś tym prefiksom pśepytaś]]',
'searchprofile-articles' => 'Wopśimjeśowe boki',
-'searchprofile-articles-and-proj' => 'Wopśimjeśowe & projektowe boki',
-'searchprofile-project' => 'Projektowe boki',
-'searchprofile-images' => 'Dataje',
+'searchprofile-project' => 'Pomoc a projektowe boki',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Wšykno',
'searchprofile-advanced' => 'Rozšyrjony',
'searchprofile-articles-tooltip' => 'W $1 pytaś',
@@ -1037,8 +1057,6 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'searchprofile-images-tooltip' => 'Za datajami pytaś',
'searchprofile-everything-tooltip' => 'Cełe wopsímjeśe pśepytaś (inkluziwnje diskusijne boki)',
'searchprofile-advanced-tooltip' => 'W swójskich mjenjowych rumach pytaś',
-'prefs-search-nsdefault' => 'Ze standardnymi nastajenjami pytaś',
-'prefs-search-nscustom' => 'Swójske mjenjowe rumy pśepytaś:',
'search-result-size' => '$1 ({{PLURAL:$2|1 słowow|$2 słowje|$2 słowa|$2 słowow}})',
'search-result-score' => 'Relewanca: $1 %',
'search-redirect' => '(pśesměrowanje $1)',
@@ -1051,11 +1069,12 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'search-mwsuggest-disabled' => 'žedne naraźenja',
'search-relatedarticle' => 'swójźbne',
'mwsuggest-disable' => 'Naraźenja pśez AJAX znjemóžniś',
+'searcheverything-enable' => 'We wšych mjenjowych rumach pytaś',
'searchrelated' => 'swójźbne',
'searchall' => 'wše',
'showingresults' => "How {{PLURAL:|jo '''1''' wuslědk|stej '''$1''' wuslědka|su '''$1''' wuslědki}} wót cysła '''$2'''.",
'showingresultsnum' => "How {{PLURAL:$3|jo '''1''' wuslědk|stej '''$3''' wuslědka|su '''$3''' wuslědki}} wót cysła '''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Slědujo wuslědk '''$1''' z '''$3'''|Slědujotej wuslědka '''$1 – $2''' z '''$3'''|Slěduju wuslědki '''$1 – $2''' z '''$3'''|Slědujo wuslědkow '''$1 – $2''' z '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
'nonefound' => "'''Pokazka''': Jano někótare mjenjowe rumy se standarnje pytaju. Wopytaj za swóje wótpšašanje prefiks ''all:'' wužywać, aby cełe wopśimjeśe pytał (inkluziwnje diskusijnych bokow, pśedłogi atd.) abo wužyj póžedany mjenjowy rum ako prefiks.",
'search-nonefound' => 'Njejsu se wuslědki namakali, kótarež wótpowěduju napšašowanjeju.',
'powersearch' => 'Rozšyrjone pytanje',
@@ -1063,111 +1082,148 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'powersearch-ns' => 'W mjenjowych rumach pytaś:',
'powersearch-redir' => 'Dalejpósrědnjenja nalistowaś',
'powersearch-field' => 'Pytaś za:',
+'powersearch-togglelabel' => 'Kontrolěrowaś:',
+'powersearch-toggleall' => 'Wše',
+'powersearch-togglenone' => 'Žeden',
'search-external' => 'Eksterne pytanje',
'searchdisabled' => 'Pytanje we {{SITENAME}} jo se deaktiwěrowało. Tak dłujko móžoš w googlu pytaś. Pšosym wobmysli, až móžo pytanski indeks za {{SITENAME}} njeaktualny byś.',
+# Quickbar
+'qbsettings' => 'Bocna lejstwa',
+'qbsettings-none' => 'Žedne',
+'qbsettings-fixedleft' => 'nalěwo fiksěrowane',
+'qbsettings-fixedright' => 'napšawo fiksěrowane',
+'qbsettings-floatingleft' => 'nalěwo se znosujuce',
+'qbsettings-floatingright' => 'napšawo se znosujuce',
+
# Preferences page
-'preferences' => 'Nastajenja',
-'mypreferences' => 'móje nastajenja',
-'prefs-edits' => 'Licba wobźěłanjow:',
-'prefsnologin' => 'Njejsy pśizjawjony',
-'prefsnologintext' => 'Musyš se <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} pśizjawiś]</span>, aby mógał swóje nastajenja změniś.',
-'prefsreset' => 'Nastajenja su ze składa se wótnowili. Twóje změny njejsu se składowali.',
-'qbsettings' => 'Bocna lejstwa',
-'qbsettings-none' => 'Žedne',
-'qbsettings-fixedleft' => 'nalěwo fiksěrowane',
-'qbsettings-fixedright' => 'napšawo fiksěrowane',
-'qbsettings-floatingleft' => 'nalěwo se znosujuce',
-'qbsettings-floatingright' => 'napšawo se znosujuce',
-'changepassword' => 'Šćitne gronidło změniś',
-'skin' => 'Šat',
-'skin-preview' => 'Pśeglěd',
-'math' => 'Math',
-'dateformat' => 'Format datuma',
-'datedefault' => 'Standard',
-'datetime' => 'Datum a cas',
-'math_failure' => 'Zmólka',
-'math_unknown_error' => 'njeznata zmólka',
-'math_unknown_function' => 'njeznata funkcija',
-'math_lexing_error' => 'leksikaliska zmólka',
-'math_syntax_error' => 'syntaktiska zmólka',
-'math_image_error' => 'PNG-konwertěrowanje njejo se raźiło. Glědaj, lic su latex, dvips gs abo konwertěruj pšawje instalěrowane.',
-'math_bad_tmpdir' => 'Njejo móžno temporarny zapisk za matematiske formule załožyś resp. do njogo pisaś.',
-'math_bad_output' => 'Njejo móžno celowy zapisk za matematiske formule załožyś resp. do njogo pisaś.',
-'math_notexvc' => 'Program texvc felujo. Pšosym glědaj do math/README.',
-'prefs-personal' => 'Wužywarski profil',
-'prefs-rc' => 'Aktualne změny',
-'prefs-watchlist' => 'Wobglědowańka',
-'prefs-watchlist-days' => 'Licba dnjow, kenž maju se we wobglědowańce pokazaś:',
-'prefs-watchlist-days-max' => '(maksimalnje 7 dnjow)',
-'prefs-watchlist-edits' => 'Maksimalna licba změnow, kótarež maju se w rozšyrjonej wobglědowańce pokazaś:',
-'prefs-watchlist-edits-max' => '(maksimalna licba: 1000)',
-'prefs-misc' => 'Wšake nastajenja',
-'prefs-resetpass' => 'Gronidło změniś',
-'saveprefs' => 'Składowaś',
-'resetprefs' => 'Njeskłaźone změny zachyśiś',
-'restoreprefs' => 'Wše standardne nastajenja wobnowiś',
-'textboxsize' => 'Wobźěłaś',
-'prefs-edit-boxsize' => 'Wjelikosć wobźěłowańskego wokna',
-'rows' => 'Rědki:',
-'columns' => 'Słupy:',
-'searchresultshead' => 'Pytaś',
-'resultsperpage' => 'Wuslědki na bok:',
-'contextlines' => 'Rědki na wuslědk:',
-'contextchars' => 'Znamuška na rědku:',
-'stub-threshold' => 'Formatěrowanje <a href="#" class="stub">wótkaza na zarodk</a> (w bytach):',
-'recentchangesdays' => 'Licba dnjow, kenž se pokazuju w "slědnych změnach":',
-'recentchangesdays-max' => '(maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
-'recentchangescount' => 'Licba změnow w „Aktualne změny“, stawiznach boka a w protokolach pó standarźe:',
-'savedprefs' => 'Twóje nastajenja su se składowali.',
-'timezonelegend' => 'Casowa cona:',
-'timezonetext' => '¹Pódaj licbu góźinow, kótarež laže mjazy twójeju casoweju conu a UTC.',
-'localtime' => 'Městny cas:',
-'timezoneselect' => 'Casowa cona',
-'timezoneuseserverdefault' => 'Standard serwera wužywaś',
-'timezoneuseoffset' => 'Drugi (pódaj wótchylenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
-'servertime' => 'Cas serwera:',
-'guesstimezone' => 'Z browsera pśewześ',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantiski ocean',
-'timezoneregion-australia' => 'Awstralija',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiski ocean',
-'timezoneregion-pacific' => 'Pacifiski ocean',
-'allowemail' => 'Dostawanje e-mailow drugich wužywarjow zmóžniś.',
-'prefs-searchoptions' => 'Pytańske opcije',
-'prefs-namespaces' => 'Mjenjowe rumy',
-'defaultns' => 'Standardnje ma se w toś tych mjenjowych rumach pytaś:',
-'default' => 'Standard',
-'files' => 'Dataje',
-'prefs-custom-css' => 'Swójski CSS',
-'prefs-custom-js' => 'Swójski JS',
+'preferences' => 'Nastajenja',
+'mypreferences' => 'móje nastajenja',
+'prefs-edits' => 'Licba wobźěłanjow:',
+'prefsnologin' => 'Njejsy pśizjawjony',
+'prefsnologintext' => 'Musyš se <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} pśizjawiś]</span>, aby mógał swóje nastajenja změniś.',
+'changepassword' => 'Šćitne gronidło změniś',
+'prefs-skin' => 'Šat',
+'skin-preview' => 'Pśeglěd',
+'prefs-math' => 'Math',
+'datedefault' => 'Standard',
+'prefs-datetime' => 'Datum a cas',
+'prefs-personal' => 'Wužywarski profil',
+'prefs-rc' => 'Aktualne změny',
+'prefs-watchlist' => 'Wobglědowańka',
+'prefs-watchlist-days' => 'Licba dnjow, kenž maju se we wobglědowańce pokazaś:',
+'prefs-watchlist-days-max' => '(maksimalnje 7 dnjow)',
+'prefs-watchlist-edits' => 'Maksimalna licba změnow, kótarež maju se w rozšyrjonej wobglědowańce pokazaś:',
+'prefs-watchlist-edits-max' => '(maksimalna licba: 1000)',
+'prefs-watchlist-token' => 'Marka wobglědowańki:',
+'prefs-misc' => 'Wšake nastajenja',
+'prefs-resetpass' => 'Gronidło změniś',
+'prefs-email' => 'E-mailowe opcije',
+'prefs-rendering' => 'Naglěd',
+'saveprefs' => 'Składowaś',
+'resetprefs' => 'Njeskłaźone změny zachyśiś',
+'restoreprefs' => 'Wše standardne nastajenja wobnowiś',
+'prefs-editing' => 'Wobźěłaś',
+'prefs-edit-boxsize' => 'Wjelikosć wobźěłowańskego wokna',
+'rows' => 'Rědki:',
+'columns' => 'Słupy:',
+'searchresultshead' => 'Pytaś',
+'resultsperpage' => 'Wuslědki na bok:',
+'contextlines' => 'Rědki na wuslědk:',
+'contextchars' => 'Znamuška na rědku:',
+'stub-threshold' => 'Formatěrowanje <a href="#" class="stub">wótkaza na zarodk</a> (w bytach):',
+'recentchangesdays' => 'Licba dnjow, kenž se pokazuju w "slědnych změnach":',
+'recentchangesdays-max' => '(maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
+'recentchangescount' => 'Licba změnow, kótaraž ma se pó standarźe pokazaś:',
+'prefs-help-recentchangescount' => 'To wopśimujo aktualne změny, stawizny bokow a protokole.',
+'prefs-help-watchlist-token' => 'Wupołnjenje toś togo póla z pótajmnym klucom buźo RSS-kanal za twóju wobglědowańku napóraś.
+Něchten, kenž znajo kluc w toś tom pólu, móžo twóju wobglědowańku cytaś, wubjeŕ togodla wěstu gódnotu.
+How jo pśipadnje napórana gódnota, kótaruž móžoš wužywaś: $1',
+'savedprefs' => 'Twóje nastajenja su se składowali.',
+'timezonelegend' => 'Casowa cona:',
+'localtime' => 'Městny cas:',
+'timezoneuseserverdefault' => 'Standard serwera wužywaś',
+'timezoneuseoffset' => 'Drugi (pódaj wótchylenje)',
+'timezoneoffset' => 'Rozdźěl¹:',
+'servertime' => 'Cas serwera:',
+'guesstimezone' => 'Z browsera pśewześ',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantiski ocean',
+'timezoneregion-australia' => 'Awstralija',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiski ocean',
+'timezoneregion-pacific' => 'Pacifiski ocean',
+'allowemail' => 'Dostawanje e-mailow drugich wužywarjow zmóžniś.',
+'prefs-searchoptions' => 'Pytańske opcije',
+'prefs-namespaces' => 'Mjenjowe rumy',
+'defaultns' => 'Howac w toś tych mjenjowych rumach pytaś:',
+'default' => 'Standard',
+'prefs-files' => 'Dataje',
+'prefs-custom-css' => 'Swójski CSS',
+'prefs-custom-js' => 'Swójski JS',
+'prefs-reset-intro' => 'You can use this page to reset your preferences to the site defaults. This cannot be undone.
+Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standardne gódnoty sedła. To njedajo se anulěrowaś.',
+'prefs-emailconfirm-label' => 'E-mailowe wobkšuśenje:',
+'prefs-textboxsize' => 'Wjelikosć wobźěłowańskego wokna',
+'youremail' => 'E-mail:',
+'username' => 'Wužywarske mě:',
+'uid' => 'ID wužywarja:',
+'prefs-memberingroups' => 'Cłonk {{PLURAL:$1|wužywarskeje skupiny|wužywarskeju kupkowu|wužywarskich kupkow|wužiwarskich kupkow}}:',
+'prefs-registration' => 'Cas registracije:',
+'yourrealname' => 'Realne mě *:',
+'yourlanguage' => 'Rěc:',
+'yourvariant' => 'Warianta:',
+'yournick' => 'Pódpismo:',
+'prefs-help-signature' => 'Komentary na diskusijnych bokach měli se pśez "<nowiki>~~~~</nowiki>" pódpisaś, kótarež konwertěrujo se do twójeje signatury a casowego kołka.',
+'badsig' => 'Signatura njejo dobra; pšosym HTML pśekontrolěrowaś.',
+'badsiglength' => 'Twója signatura jo pśedłujka. Musy mjenjej ako $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} měś.',
+'yourgender' => 'Rod:',
+'gender-unknown' => 'Njepódany',
+'gender-male' => 'Muskecy',
+'gender-female' => 'Žeńscyny',
+'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Realne mě jo opcionalne. Jolic až jo zapódajośo wužywa se za pódpisanje wašych pśinoskow.',
+'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło. Móžoš teke drugim dowóliś se z tobu stajiś do zwiska pśez waš wužywarski abo diskusijny bok, bźez togo až dejš wótekšyś swóju identitu.',
+'prefs-help-email-required' => 'E-mailowa adresa trjebna.',
+'prefs-info' => 'Zakładne informacije',
+'prefs-i18n' => 'Internacionalizacija',
+'prefs-signature' => 'Pódpis',
+'prefs-dateformat' => 'Datumowy format',
+'prefs-timeoffset' => 'Casowy rozdźěl',
+'prefs-advancedediting' => 'Rozšyrjone opcije',
+'prefs-advancedrc' => 'Rozšyrjone opcije',
+'prefs-advancedrendering' => 'Rozšyrjone opcije',
+'prefs-advancedsearchoptions' => 'Rozšyrjone opcije',
+'prefs-advancedwatchlist' => 'Rozšyrjone opcije',
+'prefs-display' => 'Opcije se woglědaś',
+'prefs-diffs' => 'Rozdźěle',
# User rights
-'userrights' => 'Zastojanje wužywarskich pšawow', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Wužywarske kupki zastojaś',
-'userrights-user-editname' => 'Wužywarske mě:',
-'editusergroup' => 'Wužywarske kupki wobźěłaś.',
-'editinguser' => "Změnjaju se wužywarske pšawa wužywarja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Pšawa wužywarskich kupkow wobźěłaś',
-'saveusergroups' => 'Wužywarske kupki składowaś',
-'userrights-groupsmember' => 'Cłonk kupki:',
-'userrights-groups-help' => 'Móžoš kupki, w kótarychž wužywaŕ jo, změniś:
+'userrights' => 'Zastojanje wužywarskich pšawow',
+'userrights-lookup-user' => 'Wužywarske kupki zastojaś',
+'userrights-user-editname' => 'Wužywarske mě:',
+'editusergroup' => 'Wužywarske kupki wobźěłaś.',
+'editinguser' => "Změnjaju se wužywarske pšawa wužywarja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Pšawa wužywarskich kupkow wobźěłaś',
+'saveusergroups' => 'Wužywarske kupki składowaś',
+'userrights-groupsmember' => 'Cłonk kupki:',
+'userrights-groupsmember-auto' => 'Implicitny cłonk wót:',
+'userrights-groups-help' => 'Móžoš kupki, w kótarychž wužywaŕ jo, změniś:
* Markěrowany kašćik wóznamjenijo, až wužywaŕ jo w toś tej kupce.
* Njemarkěrowany kašćik woznamjenijo, až wužywaŕ njejo w toś tej kupce.
* * pódawa, až njamóžoš kupku wótwónoźeś, gaž sy ju pśidał abo nawopak.',
-'userrights-reason' => 'Pśicyna:',
-'userrights-no-interwiki' => 'Njamaš pšawo wužywarske pšawa w drugich wikijach změniś.',
-'userrights-nodatabase' => 'Datowa banka $1 njeeksistěrujo abo njejo lokalna.',
-'userrights-nologin' => 'Musyš se z administratorowym kontom [[Special:UserLogin|pśizjawiś]], aby wužywarske pšawa změnił.',
-'userrights-notallowed' => 'Twóje konto njama pšawa, aby wužywarske pšawa změniło.',
-'userrights-changeable-col' => 'Kupki, kótarež móžoš změniś',
-'userrights-unchangeable-col' => 'Kupki, kótarež njamóžoš změniś',
+'userrights-reason' => 'Pśicyna:',
+'userrights-no-interwiki' => 'Njamaš pšawo wužywarske pšawa w drugich wikijach změniś.',
+'userrights-nodatabase' => 'Datowa banka $1 njeeksistěrujo abo njejo lokalna.',
+'userrights-nologin' => 'Musyš se z administratorowym kontom [[Special:UserLogin|pśizjawiś]], aby wužywarske pšawa změnił.',
+'userrights-notallowed' => 'Twóje konto njama pšawa, aby wužywarske pšawa změniło.',
+'userrights-changeable-col' => 'Kupki, kótarež móžoš změniś',
+'userrights-unchangeable-col' => 'Kupki, kótarež njamóžoš změniś',
# Groups
'group' => 'Kupka:',
@@ -1220,6 +1276,7 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'right-bigdelete' => 'lašowaś boki, kótarež maju wjelike stawizny',
'right-deleterevision' => 'Specifiske boki lašowaś a wótnowiś',
'right-deletedhistory' => 'Wulašowane wersiji w stawiznach se bśez pśisłušnego teksta wobglědaś',
+'right-deletedtext' => 'Wulašowany tekst a změny mjazy wulašowanymi wersijami se woglědaś',
'right-browsearchive' => 'Wulašowane boki pytaś',
'right-undelete' => 'Bok wótnowiś',
'right-suppressrevision' => 'Wersije, kótarež su pśed admibnistratorami schowane, pśeglědaś a wótnowiś',
@@ -1233,6 +1290,8 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'right-editprotected' => 'Šćitane boki wobźěłaś (bśez kaskadowego šćita)',
'right-editinterface' => 'Wužywański pówjerch wobźěłaś',
'right-editusercssjs' => 'Dataje CSS a JS drugich wužywarjow wobźěłaś',
+'right-editusercss' => 'Dataje CSS drugich wužywarjow wobźěłaś',
+'right-edituserjs' => 'Dataje JS drugich wužywarjow wobźěłaś',
'right-rollback' => 'Spěšne anulěrowanje změnow slědnego wužywarja, kótaryž jo dany bok wobźěłał',
'right-markbotedits' => 'Spěšnje anulěrowane změny ako botowe změny markěrowaś',
'right-noratelimit' => 'Pśez žedne limity wobgranicowany',
@@ -1249,6 +1308,8 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'right-siteadmin' => 'Datowu banku zastajiś a zastajenje wótpóraś',
'right-reset-passwords' => 'Gronidła drugich wužywarjow slědk stajiś',
'right-override-export-depth' => 'Boki inkluziwnje wótkazanych bokow až do dłyma 5 eksportěrowaś',
+'right-versiondetail' => 'Nadrobne informacije wó wersiji softwary pokazaś',
+'right-sendemail' => 'Drugim wužywarjam e-mail pósłaś',
# User rights log
'rightslog' => 'Protokol wužywarskich pšawow',
@@ -1298,6 +1359,15 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
'recentchanges-legend' => 'Opcije aktualnych změnow',
'recentchangestext' => "How móžoš slědne změny we '''{{GRAMMAR:lokatiw|{{SITENAME}}}}''' slědowaś.",
'recentchanges-feed-description' => 'Slěduj z toś tym zapódaśim nejaktualnjejše změny we {{GRAMMAR:lokatiw|{{SITENAME}}}}.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nowy bok',
+'recentchanges-label-newpage' => 'Toś ta změna jo nowy bok napórała.',
+'recentchanges-legend-minor' => '$1 - snadna změna',
+'recentchanges-label-minor' => 'To jo snadna změna',
+'recentchanges-legend-bot' => '$1 - změna bośika',
+'recentchanges-label-bot' => 'Toś ta změna jo se pśez bośik wuwjadła.',
+'recentchanges-legend-unpatrolled' => '$1 - njepśekontrolěrowana změna',
+'recentchanges-label-unpatrolled' => 'Toś ta změna hyšći njejo se pśekontrolěrowała',
'rcnote' => "Dołojce {{PLURAL:$1|jo '''1''' změna|stej slědnej '''$1''' změnje|su slědne '''$1''' změny}} w {{PLURAL:$2|slědnem dnju|slědnyma '''$2''' dnjoma|slědnych '''$2''' dnjach}}, staw wót $4, $5.",
'rcnotefrom' => "Dołojce pokazuju se změny wót '''$2''' (maks. '''$1''' zapisow).",
'rclistfrom' => 'Nowe změny wót $1 pokazaś.',
@@ -1324,6 +1394,8 @@ Móžoš bok ale teke [[:$1|sam załožyś]].",
# Recent changes linked
'recentchangeslinked' => 'Změny w zwězanych bokach',
+'recentchangeslinked-feed' => 'Změny w zwězanych bokach',
+'recentchangeslinked-toolbox' => 'Změny w zwězanych bokach',
'recentchangeslinked-title' => 'Změny na bokach, kótarež su z „$1“ zalinkowane',
'recentchangeslinked-noresult' => 'Zalinkowane boki njejsu we wuzwólonem casu se změnili.',
'recentchangeslinked-summary' => "To jo lisćina slědnych změnow, kótarež buchu na wótkazanych bokach cynjone (resp. pśi wěstych kategorijach na cłonkach kategorije).
@@ -1334,8 +1406,8 @@ Boki na [[Special:Watchlist|wobglědowańce]] su '''tucne'''.",
# Upload
'upload' => 'Dataju nagraś',
'uploadbtn' => 'Dataju nagraś',
-'reupload' => 'Dataju hyšći raz pósłaś.',
'reuploaddesc' => 'Nagraśe pśetergnuś a slědk k nagrawańskemu formularoju',
+'upload-tryagain' => 'Změnjone datajowe wopisanje wótpósłaś',
'uploadnologin' => 'Njepśizjawjony',
'uploadnologintext' => 'Dejš se [[Special:UserLogin|pśizjawiś]], aby mógał dataje nagraś.',
'upload_directory_missing' => 'Nagrawański zapis ($1) felujo a njejo se pśez webserwer napóraś dał.',
@@ -1368,6 +1440,7 @@ Glědaj [[Special:NewFiles|galeriju nowych datajow]] za wizuelny pśeglěd.',
'minlength1' => 'Mjenja datajow muse wopśimjeś nanejmjenjej jaden pismik.',
'illegalfilename' => 'Datajowe mě „$1“ wopśimjejo njedowólone znamuška, kótarež njejsu dowólone w titulami bokow. Pšosym pśemjeń dataju a wopytaj ju wótnowotki nagraś.',
'badfilename' => 'Mě dataje jo se změniło na „$1“.',
+'filetype-mime-mismatch' => 'Datajowy sufiks njewótpowědujo MIME-typoju.',
'filetype-badmime' => 'Dataje z MIME-typom „$1“ njesměju se nagraś.',
'filetype-bad-ie-mime' => 'Toś ta dataja njedajo se nagraś, dokulaž Internet Explorer by ju ako "$1" interpretěrował, kótaryž jo njedowólony a potencielnje tšachotny datajowy typ.',
'filetype-unwanted-type' => "'''„.$1“''' jo njewitany datajowy typ.
@@ -1388,7 +1461,6 @@ Pšosym kontrolěruj '''<tt>[[:\$1]]</tt>''', gaž njejsy se kradu wěsty.
* Mě dataje, kótaraž dej se nagraś: '''<tt>[[:$1]]</tt>'''
* Mě eksistěrujuceje dataje: '''<tt>[[:$2]]</tt>'''
Pšosym wubjeŕ druge mě.",
-'fileexists-thumb' => "<center>'''Eksistěrujucy wobraz'''</center>",
'fileexists-thumbnail-yes' => "Zazdaśim ma dataja reducěrowanu wjelikosć ''(thumbnail)''. [[$1|thumb]]
Kontrolěruj pšosym dataju '''<tt>[[:$1]]</tt>'''.
Jolic skontrolěrowana dataja jo ten samy wobraz w originalnej wjelikosći, pón njejo notne, separatny pśeglědowy wobraz nagraś.",
@@ -1401,6 +1473,7 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
'file-deleted-duplicate' => 'Dataja, kótaraž jo identiska z toś teju dataju ([[$1]]) jo se pjerwjej wulašowała. Ty měł stawizny wulašowanja toś teje dataje pśeglědaś, pjerwjej až pokšacujoš z jeje zasejnagrawanjom.',
'successfulupload' => 'Nagraśe jo było wuspěšne.',
'uploadwarning' => 'Warnowanje',
+'uploadwarning-text' => 'Pšosym změń slědujuce datajowe wopisanje a wopytaj hyšći raz.',
'savefile' => 'Dataju składowaś',
'uploadedimage' => 'jo "[[$1]]" nagrał.',
'overwroteimage' => 'Jo nowu wersiju "[[$1]]" nagrał.',
@@ -1408,11 +1481,14 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
'uploaddisabledtext' => 'Nagraśa datajow su znjemóžnjone.',
'php-uploaddisabledtext' => 'Nagraśa PHP-datajow su znjemóžnjone. Pšosym pśekontrolěruj nastajenje file_uploads.',
'uploadscripted' => 'Toś ta dataja wopśimjejo HTML abo script code, kótaryž móžo wót browsera se zamólnje wuwjasć.',
-'uploadcorrupt' => 'Dataja jo skóńcowana abo ma njekorektnu kóńcowku. Pšosym kontrolěruj dataju a uploaduj hyšći raz.',
'uploadvirus' => 'Toś ta dataja ma wirus! Nadrobnosći: $1',
+'upload-source' => 'Žrědłowa dataja',
'sourcefilename' => 'Mě žrědłoweje dataje:',
+'sourceurl' => 'URL žrědła:',
'destfilename' => 'Celowe mě:',
'upload-maxfilesize' => 'Maksimalna datajowa wjelikosć: $1',
+'upload-description' => 'Datajowe wopisanje',
+'upload-options' => 'Nagrawańske opcije',
'watchthisupload' => 'Toś tu dataju wobglědowaś',
'filewasdeleted' => 'Dataja z toś tym mjenim jo se južo raz nagrała a mjaztym zasej wulašowała. Pšosym kontrolěruj pjerwjej $1, nježli až nagrajoš dataju znowego.',
'upload-wasdeleted' => "'''Glědaj: Nagrawaš dataju, kótaraž jo južo raz se wulašowała.'''
@@ -1435,12 +1511,43 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- Njezměń nic na toś tej rědce! -->',
-'upload-proto-error' => 'Njekorektny protokol',
-'upload-proto-error-text' => 'URL musy zachopiś z <code>http://</code> abo <code>ftp://</code>.',
-'upload-file-error' => 'Interna zmólka',
-'upload-file-error-text' => 'Pśi napóranju temporarneje dataje na serwerje jo nastała interna zmólka. Pšosym staj se ze [[Special:ListUsers/sysop|systemowym administratorom]] do zwiska.',
-'upload-misc-error' => 'Njeznata zmólka pśi nagrawanju.',
-'upload-misc-error-text' => 'Pśi nagrawanju jo nastała njeznata zmólka. Kontrolěruj pšosym, lěc URL jo płaśiwy a pśistupny a wopytaj hyšći raz. Jolic problem dalej eksistěrujo, staj se z [[Special:ListUsers/sysop|administratorom]] do zwiska.',
+'upload-proto-error' => 'Njekorektny protokol',
+'upload-proto-error-text' => 'URL musy zachopiś z <code>http://</code> abo <code>ftp://</code>.',
+'upload-file-error' => 'Interna zmólka',
+'upload-file-error-text' => 'Pśi napóranju temporarneje dataje na serwerje jo nastała interna zmólka. Pšosym staj se ze [[Special:ListUsers/sysop|systemowym administratorom]] do zwiska.',
+'upload-misc-error' => 'Njeznata zmólka pśi nagrawanju.',
+'upload-misc-error-text' => 'Pśi nagrawanju jo nastała njeznata zmólka. Kontrolěruj pšosym, lěc URL jo płaśiwy a pśistupny a wopytaj hyšći raz. Jolic problem dalej eksistěrujo, staj se z [[Special:ListUsers/sysop|administratorom]] do zwiska.',
+'upload-too-many-redirects' => 'URL jo pśewjele dalejpósrědnjenja wopśimjeł',
+'upload-unknown-size' => 'Njeznata wjelikosć',
+'upload-http-error' => 'HTTP-zmólka nastata: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Pśistup zawobarany',
+'img-auth-nopathinfo' => 'PATH_INFO felujo.
+Twój serwer njejo konfigurěrowany, aby toś te informacije dalej pósrědnił.
+Móžo na CGI bazěrowaś a njamóžo img_auth pódpěraś.
+Glědaj http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Pominana šćažka njejo w konfigurěrowanem nagraśowem zapisu.',
+'img-auth-badtitle' => 'Njejo móžno z "$1" płaśiwy titel twóriś.',
+'img-auth-nologinnWL' => 'Njejsy pśizjawjony a "$1" njejo w běłej lisćinje.',
+'img-auth-nofile' => 'Dataja "$1" njeeksistěrujo.',
+'img-auth-isdir' => 'Wopytujoš na zapis "$1" pśistup měś.
+Jano datajowy pśistup jo dowólony.',
+'img-auth-streaming' => '"$1" se tšuga.',
+'img-auth-public' => 'Funkcija img_auth.php jo za wudaśe datajow z priwatnego wikija.
+Toś ten wiki jo ako zjawny wiki konfigurěrowany.
+Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
+'img-auth-noread' => 'Wužywaŕ njama pśistup, aby cytał "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Njepłaśiwy URL: $1',
+'http-invalid-scheme' => 'URL ze šemu "$1" se njepódpěraju.',
+'http-request-error' => 'HTTP-napšašowanje jo se njeraźiło njeznateje zmólki dla.',
+'http-read-error' => 'Cytańska zmólka HTTP.',
+'http-timed-out' => 'HTTP-napšašowanje jo cas pśekšocyło.',
+'http-curl-error' => 'Zmólka pśi wótwółowanju URL: $1',
+'http-host-unreachable' => 'URL njejo był pśistupny.',
+'http-bad-status' => 'Wob cas HTTP-napšašowanje jo problem był: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL njejo pśistupna.',
@@ -1449,6 +1556,7 @@ PICT # misc.
'upload-curl-error28-text' => 'Bok pśedłujko njejo wótegronił. Kontrolěruj, lic jo bok online, pócakaj wokognuśe a wopytaj pón hyšći raz. Móžo byś zmysłapołne, w drugem casu hyšći raz proběrowaś.',
'license' => 'Licenca:',
+'license-header' => 'Licencowanje',
'nolicense' => 'Nic njejo wuzwólone.',
'license-nopreview' => '(Pśeglěd njejo móžny.)',
'upload_source_url' => ' (płaśeca, zjawnje pśistupna URL)',
@@ -1467,6 +1575,7 @@ PICT # misc.
'listfiles_count' => 'Wersije',
# File description page
+'file-anchor-link' => 'Dataja',
'filehist' => 'Stawizny dataje',
'filehist-help' => 'Tłoc na datum/cas aby tencasna wersija se lodowała.',
'filehist-deleteall' => 'Wšykno wulašowaś',
@@ -1481,6 +1590,7 @@ PICT # misc.
'filehist-dimensions' => 'rozměry',
'filehist-filesize' => 'Wjelikosć dataje',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Dataja felujo',
'imagelinks' => 'Datajowe wótkaze',
'linkstoimage' => '{{PLURAL:$1|Slědujucy bok wótkazujo|Slědujucej $1 boka wótkazujotej|Slědujuce $1 boki wótkazuju|Slědujucych $1 bokow wótkazujo}} na toś tu dataju:',
'linkstoimage-more' => 'Wěcej nježli $1 {{PLURAL:$1|bok wótkazujo|boka wótkazujotej|boki wótkazuju|bokow wótkazujo}} na toś tu dataju.
@@ -1490,15 +1600,14 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Dalšne wótkazy]] k toś tej dataji wobglědaś.',
'redirectstofile' => '{{PLURAL:$1|Slědujuca dataja dalej pósrědnja|Slědujucej $1 dataji dalej pósrědnjatej|slědujuce $1 dataje dalej póšrědnjaju|Slědujucych $1 datajow dalej pósrědnja}} k toś tej dataji:',
'duplicatesoffile' => '{{PLURAL:$1|Slědujuca dataja jo duplikat|Slědujucej $1 dataji stej duplikata|Slědujuce dataje $1 su duplikaty|Slědujucych $1 datajow jo duplikaty}} toś teje dataje ([[Special:FileDuplicateSearch/$2|dalšne drobnostki]])::',
-'sharedupload' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Za dalšne informacije glědaj $1.',
-'shareduploadwiki-desc' => 'Wopisanje na $1 se dołojce pókazujo.',
-'shareduploadwiki-linktext' => 'boku wopisanja dataje',
-'noimage' => 'Dataja z takim mjenim njeeksistěrujo, ale móžoš ju $1.',
-'noimage-linktext' => 'nagraś',
+'sharedupload' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś.',
+'sharedupload-desc-there' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś. Pšosym glědaj [$2 bok datajowego wopisanja] za dalšne informacije.',
+'sharedupload-desc-here' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś. Wopisanje na jeje [$2 boku datajowego wopisanja] pokazujo se dołojce.',
+'filepage-nofile' => 'Dataja z toś tym mjenim njeeksistěrujo.',
+'filepage-nofile-link' => 'Dataj z toś tym mjenim njeeksistěrujo, ale móžoš [$1 ju nagraś].',
'uploadnewversion-linktext' => 'Nowu wersiju toś teje dataje nagraś',
-'shared-repo-from' => 'z $1', # $1 is the repository name
-'shared-repo' => 'zgromadny repozitorium', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'z $1',
+'shared-repo' => 'zgromadny repozitorium',
# File reversion
'filerevert' => 'Slědk wześ $1',
@@ -1527,6 +1636,7 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
** Pśekśiwjenje stworiśelskego pšawa
** Dwójna dataja',
'filedelete-edit-reasonlist' => 'Pśicyny za lašowanje wobźěłaś',
+'filedelete-maintenance' => 'Wulašowanje a wótnowjenje datajow stej wótwardowanja dla nachylu znjemóžnjonej.',
# MIME search
'mimesearch' => 'MIME-typ pytaś',
@@ -1547,7 +1657,7 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
# Random page
'randompage' => 'Pśipadny nastawk',
-'randompage-nopages' => 'W mjenjowem rumje "$1" njejsu žedne boki.',
+'randompage-nopages' => 'W {{PLURAL:$2|slědujucem mjenjowem rumje|slědujucyma mjenjowyma rumoma|slědujucych mjenjowych rumach|slědujucych mjenjowych rumach}} žedne boki njejsu: $1',
# Random redirect
'randomredirect' => 'Pśipadne dalejpósrědnjenje',
@@ -1559,6 +1669,7 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
'statistics-header-edits' => 'Statistika změnow',
'statistics-header-views' => 'Statistiku zwobrazniś',
'statistics-header-users' => 'Statistika wužywarjow',
+'statistics-header-hooks' => 'Druga statistika',
'statistics-articles' => 'Wopśimjeśowe boki',
'statistics-pages' => 'Boki',
'statistics-pages-desc' => 'Wše boki w toś tom wikiju, inkluziwnje diskusijne boki, dalejpósrědnjenja atd.',
@@ -1587,8 +1698,8 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
'brokenredirects' => 'Skóńcowane dalejpósrědnjenja',
'brokenredirectstext' => 'Slědujuce dalejpósrědnjenja wótkazuju na njeeksistěrujuce boki:',
-'brokenredirects-edit' => '(wobźěłaś)',
-'brokenredirects-delete' => '(wulašowaś)',
+'brokenredirects-edit' => 'wobźěłaś',
+'brokenredirects-delete' => 'wulašowaś',
'withoutinterwiki' => 'Boki na kótarychž njejsu žedne wótkaze na druge rěcy',
'withoutinterwiki-summary' => 'Slědujuce boki njewótkazuju na druge rěcne wersije:',
@@ -1695,14 +1806,15 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
# Special:Categories
'categories' => 'Kategorije',
-'categoriespagetext' => 'Slědujuce kategorije wopśimuju boki abo medije. [[Special:UnusedCategories|Njewužywane kategorije]] se how njepokazuju. Glědaj teke [[Special:WantedCategories|póžedane kategorije]].',
+'categoriespagetext' => '{{PLURAL:$1|Slědujuca kategorija wopśimujo|Slědujucej kategoriji wopśimujotej|Slědujuce kategorije wopśimuju|Slědujuce kategorije wopśimuju}} boki abo medije. [[Special:UnusedCategories|Njewužywane kategorije]] se how njepokazuju. Glědaj teke [[Special:WantedCategories|póžedane kategorije]].',
'categoriesfrom' => 'Kategorije pokazaś, zachopinajucy z:',
'special-categories-sort-count' => 'pśewuběrowaś pó licbje',
'special-categories-sort-abc' => 'pśewuběrowaś pó alfabeśe',
# Special:DeletedContributions
-'deletedcontributions' => 'Wulašowane wužywarske pśinoski',
-'deletedcontributions-title' => 'Wulašowane wužywarske pśinoski',
+'deletedcontributions' => 'Wulašowane wužywarske pśinoski',
+'deletedcontributions-title' => 'Wulašowane wužywarske pśinoski',
+'sp-deletedcontributions-contribs' => 'pśinoski',
# Special:LinkSearch
'linksearch' => 'Eksterne wótkaze',
@@ -1718,6 +1830,16 @@ Pódpěrane protokole: <tt>$1</tt>',
'listusersfrom' => 'Pokaž wužywarjow wót:',
'listusers-submit' => 'Pokazaś',
'listusers-noresult' => 'Žeden wužywaŕ njejo se namakał.',
+'listusers-blocked' => '(blokěrowany)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lisćina aktiwnych wužywarjow',
+'activeusers-intro' => 'To jo lisćina wužywarjow, kotrež su byli aktiwne za {{PLURAL:$1|slědny źeń|slědnej $1 dnja|slědne $1 dny|slědnych $1 dnjow}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}} w {{PLURAL:$3|slědnem dnju|slědnyma $3 dnjoma|slědnych $3 dnjach|slědnych $3 dnjach}}',
+'activeusers-from' => 'Wužywarjow zwobrazniś, zachopinajucy z:',
+'activeusers-hidebots' => 'Boty schowaś',
+'activeusers-hidesysops' => 'Administratorow schowaś',
+'activeusers-noresult' => 'Žedne wužywarje namakane.',
# Special:Log/newusers
'newuserlogpage' => 'Protokol nowych wužywarjow',
@@ -1728,16 +1850,22 @@ Pódpěrane protokole: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Wužywarske konto bu awtomatiski napórane',
# Special:ListGroupRights
-'listgrouprights' => 'Pšawa wužywarskeje kupki',
-'listgrouprights-summary' => 'To jo lisćina wužywarskich kupkow definěrowanych w toś tom wikiju z jich zwězanymi pśistupnymi pšawami. Móžo [[{{MediaWiki:Listgrouprights-helppage}}|pśidatne informacije]] wó jadnotliwych pšawach daś.',
-'listgrouprights-group' => 'Kupka',
-'listgrouprights-rights' => 'Pšawa',
-'listgrouprights-helppage' => 'Help:Kupkowe pšawa',
-'listgrouprights-members' => '(lisćina cłonkow)',
-'listgrouprights-addgroup' => 'Móžo pśidaś {{PLURAL:$2|kupku|kupce|kupki|kupkow}}: $1',
-'listgrouprights-removegroup' => 'Móžo wótwónoźeś {{PLURAL:$2|kupku|kupce|kupki|kupkow}}: $1',
-'listgrouprights-addgroup-all' => 'Móžo pśidaś wšykne kupki',
-'listgrouprights-removegroup-all' => 'Móžo wótwónoźeś wšykne kupki',
+'listgrouprights' => 'Pšawa wužywarskeje kupki',
+'listgrouprights-summary' => 'To jo lisćina wužywarskich kupkow definěrowanych w toś tom wikiju z jich zwězanymi pśistupnymi pšawami. Móžo [[{{MediaWiki:Listgrouprights-helppage}}|pśidatne informacije]] wó jadnotliwych pšawach daś.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Zagarantěrowane pšawo</span>
+* <span class="listgrouprights-revoked">Slědk wzete pšawo</span>',
+'listgrouprights-group' => 'Kupka',
+'listgrouprights-rights' => 'Pšawa',
+'listgrouprights-helppage' => 'Help:Kupkowe pšawa',
+'listgrouprights-members' => '(lisćina cłonkow)',
+'listgrouprights-addgroup' => 'Móžo pśidaś {{PLURAL:$2|kupku|kupce|kupki|kupkow}}: $1',
+'listgrouprights-removegroup' => 'Móžo wótwónoźeś {{PLURAL:$2|kupku|kupce|kupki|kupkow}}: $1',
+'listgrouprights-addgroup-all' => 'Móžo pśidaś wšykne kupki',
+'listgrouprights-removegroup-all' => 'Móžo wótwónoźeś wšykne kupki',
+'listgrouprights-addgroup-self' => 'Móžo {{PLURAL:$2|kupku|kupce|kupki|kupkow}} swójskemu kontoju pśidaś: $1',
+'listgrouprights-removegroup-self' => 'Móžo {{PLURAL:$2|kupku|kupce|kupki|kupkow}} ze swójskego konta wótpóraś: $1',
+'listgrouprights-addgroup-self-all' => 'Móžo wše kupki swójskemu kontoju pśidaś',
+'listgrouprights-removegroup-self-all' => 'Móžo wše kupki ze swójskego konta wótpóraś',
# E-mail user
'mailnologin' => 'Njejo móžno e-mailku pósłaś.',
@@ -1809,25 +1937,34 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
'enotif_lastvisited' => 'Wšykne změny na jadno póglědnjenje: $1',
'enotif_lastdiff' => 'Za toś tu změnu glědaj w $1.',
'enotif_anon_editor' => 'anonymny wužywaŕ $1',
-'enotif_body' => 'Luby/a $WATCHINGUSERNAME,
+'enotif_body' => 'Luby $WATCHINGUSERNAME,
-{{SITENAME}} bok "$PAGETITLE" jo se wót $PAGEEDITOR $PAGEEDITDATE $CHANGEDORCREATED.
-
-Aktualna wersija: $PAGETITLE_URL
+PAGEEDITOR jo bok {{SITENAME}} "$PAGETITLE" $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
$NEWPAGE
Zespominanje wobźěłarja: $PAGESUMMARY $PAGEMINOREDIT
Kontakt z wobźěłarjom:
-E-Mail: $PAGEEDITOR_EMAIL
+E-mail: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Dalšne e-mailowe powěsći se tak dłujko njepósćelu, až njejsy bok zasej woglědał. W swójich wobglědowańkach móžoš wšykne powěsćowe markery zasej slědk stajiś.
+There will be no other notifications in case of further changes unless you visit this page.
+You could also reset the notification flags for all your watched pages on your watchlist.
+
+Njebudu žedne dalšne powěźeńki w paźe dalšnych změnow, snaźkuli woglědujoš se toś ten bok.
+Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki.
- Twój pśijaśelny {{SITENAME}} powěsćowy system
+ Twój pśijaśelny powěsćowy system {{SITENAME}}
--
-Aby nastajenja twójich wobglědowańkow změnił, woglědaj: {{fullurl:Special:Watchlist/edit}}',
+Aby nastajenja twójeje wobglědowańki změnił, woglědaj:
+{{fullurl:Special:Watchlist/edit}}
+
+Aby se bok z twójeje wobglědowańki wulašował, woglědaj se
+$UNWATCHURL
+
+Pšašanja a dalšna pomoc:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Bok wulašowaś',
@@ -1838,9 +1975,10 @@ Aby nastajenja twójich wobglědowańkow změnił, woglědaj: {{fullurl:Special:
'exblank' => 'bok jo był prozny',
'delete-confirm' => '„$1“ lašowaś',
'delete-legend' => 'Lašowaś',
-'historywarning' => 'Glědaj! Bok, kótaryž coš wulašowaś, ma stawizny:',
+'historywarning' => "'''Glědaj:''' Bok, kótaryž coš wulašowaś, ma historiju z něźi $1 {{PLURAL:$1|wersiju|wersijoma|wersijami|wersijami}}:",
'confirmdeletetext' => 'Coš bok abo dataju ze wšyknymi pśisłušnymi wersijami na pśecej wulašowaś. Pšosym wobkšuś, až sy se wědobny, kake konsekwency móžo to měś, a až jadnaš pó [[{{MediaWiki:Policy-url}}|směrnicach]].',
'actioncomplete' => 'Akcija jo se wugbała.',
+'actionfailed' => 'Akcija jo se njeraźiła',
'deletedtext' => '„<nowiki>$1</nowiki>“ jo se wulašował(a/o). W $2 namakajoš lisćinu slědnych wulašowanjow.',
'deletedarticle' => 'jo "[[$1]]" wulašował',
'suppressedarticle' => '"[[$1]]" pódtłocony',
@@ -1861,18 +1999,19 @@ Aby nastajenja twójich wobglědowańkow změnił, woglědaj: {{fullurl:Special:
póstupujśo z glědanim.',
# Rollback
-'rollback' => 'Wobźěłanja slědk wześ',
-'rollback_short' => 'anulěrowaś',
-'rollbacklink' => 'anulěrowaś',
-'rollbackfailed' => 'Slědkwześe njejo se raźiło.',
-'cantrollback' => 'Njejo móžno změnu slědk wześ, slědny pśinosowaŕ jo jadnučki awtor boka.',
-'alreadyrolled' => 'Njejo móžno slědnu změnu w nastawku [[:$1]] wót [[User:$2|$2]] ([[User talk:$2|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) slědk wześ; drugi wužywaŕ jo mjaztym bok změnił abo južo slědk stajił .
+'rollback' => 'Wobźěłanja slědk wześ',
+'rollback_short' => 'anulěrowaś',
+'rollbacklink' => 'anulěrowaś',
+'rollbackfailed' => 'Slědkwześe njejo se raźiło.',
+'cantrollback' => 'Njejo móžno změnu slědk wześ, slědny pśinosowaŕ jo jadnučki awtor boka.',
+'alreadyrolled' => 'Njejo móžno slědnu změnu w nastawku [[:$1]] wót [[User:$2|$2]] ([[User talk:$2|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) slědk wześ; drugi wužywaŕ jo mjaztym bok změnił abo južo slědk stajił .
Slědnu změnu k bokoju jo pśewjadł [[User:$3|$3]] ([[User talk:$3|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Zapominanje k slědnej změnje jo było: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Změny wužywarja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) su se wótwrośili a slědna wersija wužywarja [[User:$1|$1]] jo se wótnowiła.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Změny wót $1 su se slědk wzeli a slědna wersija wót $2 jo zasej se nawrośiła.',
-'sessionfailure' => 'Problem z twójim wužywarskim pósejźenim jo se wujawił.
+'editcomment' => "Zapominanje k slědnej změnje jo było: \"''\$1''\".",
+'revertpage' => 'Změny wužywarja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) su se wótwrośili a slědna wersija wužywarja [[User:$1|$1]] jo se wótnowiła.',
+'revertpage-nouser' => 'Jo změny wót (wužywarske mě wótpórane) na slědnu wersiju wót [[User:$1|$1]] slědk stajił',
+'rollback-success' => 'Změny wót $1 su se slědk wzeli a slědna wersija wót $2 jo zasej se nawrośiła.',
+'sessionfailure' => 'Problem z twójim wužywarskim pósejźenim jo se wujawił.
Wěstoty dla jo akcija se pśetergnuła, aby se zadorało wopacnemu pśirědowanjoju twójeje změny drugemu wužywarjeju.
Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.',
@@ -1890,7 +2029,7 @@ Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.'
'protectexpiry' => 'cas wótběžy:',
'protect_expiry_invalid' => 'Zapódany cas jo njekorektny.',
'protect_expiry_old' => 'Zapódany cas jo wótběžał.',
-'protect-unchain' => 'Šćit pśed pśesunjenim změniś',
+'protect-unchain-permissions' => 'Dalšne šćitne opcije pśipušćiś',
'protect-text' => "How móžoš status šćita boka '''<nowiki>$1</nowiki>''' wobglědowaś a jen změniś.",
'protect-locked-blocked' => "Njamóžoš status šćita togo boka změniś, dokulaž jo twójo wužywarske konto se blokěrowało. How su aktualne nastajenja šćita za bok '''„$1“:'''.",
'protect-locked-dblock' => "Datowa banka jo zamknjona a toś njejo móžno šćit boka změniś. How su aktualne nastajenja šćita za bok '''„$1“:'''.",
@@ -1916,7 +2055,7 @@ Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.'
** Wobźěłańska wójna
** Bok z wusokim datowym wobchadom',
'protect-edit-reasonlist' => 'Šćitne pśicyny wobźěłaś',
-'protect-expiry-options' => '1 góźina:1 hour,1 źeń:1 day,1 tyźeń:1 week,2 tyźenja:2 weeks,1 mjasec:1 month,3 mjasece:3 months,6 mjasecy:6 months,1 lěto:1 year,na nimjer:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 góźina:1 hour,1 źeń:1 day,1 tyźeń:1 week,2 tyźenja:2 weeks,1 mjasec:1 month,3 mjasece:3 months,6 mjasecy:6 months,1 lěto:1 year,na nimjer:infinite',
'restriction-type' => 'Status šćita',
'restriction-level' => 'Rownina šćita:',
'minimum-size' => 'Minimalna wjelikosć',
@@ -1956,6 +2095,7 @@ W takich padach dejš nejnowše wulašowane wersije markěroanje abo schowanje w
'undelete-nodiff' => 'Žedne něgajšne wersije',
'undeletebtn' => 'Wulašowaś',
'undeletelink' => 'woglědaś se/wótnowiś',
+'undeleteviewlink' => 'woglědaś se',
'undeletereset' => 'Slědk wześ',
'undeleteinvert' => 'Wuběrk pśewobrośiś',
'undeletecomment' => 'Pśicyna:',
@@ -1993,19 +2133,23 @@ $1',
'contributions-title' => 'Wužywarske pśinoski wót $1',
'mycontris' => 'móje pśinoski',
'contribsub2' => 'Za $1 ($2)',
-'nocontribs' => 'Za toś te kriterije njejsu žedne změny se namakali.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Za toś te kriterije njejsu žedne změny se namakali.',
'uctop' => '(aktualny)',
'month' => 'wót mjaseca (a jěsnjej):',
'year' => 'wót lěta (a jěsnjej):',
-'sp-contributions-newbies' => 'Pśinoski jano za nowych wužywarjow pokazaś',
-'sp-contributions-newbies-sub' => 'Za nowackow',
-'sp-contributions-newbies-title' => 'Wužywarske pśinoski nowych kontow',
-'sp-contributions-blocklog' => 'Protokol blokěrowanjow',
-'sp-contributions-logs' => 'protokole',
-'sp-contributions-search' => 'Pśinoski pytaś',
-'sp-contributions-username' => 'IP-adresa abo wužywarske mě:',
-'sp-contributions-submit' => 'Pytaś',
+'sp-contributions-newbies' => 'Pśinoski jano za nowych wužywarjow pokazaś',
+'sp-contributions-newbies-sub' => 'Za nowackow',
+'sp-contributions-newbies-title' => 'Wužywarske pśinoski nowych kontow',
+'sp-contributions-blocklog' => 'Protokol blokěrowanjow',
+'sp-contributions-deleted' => 'Wulašowane wužywarske pśinoski',
+'sp-contributions-logs' => 'protokole',
+'sp-contributions-talk' => 'diskusija',
+'sp-contributions-userrights' => 'Zastojanje wužywarskich pšawow',
+'sp-contributions-blocked-notice' => 'Toś ten wužywaŕ jo tuchylu blokěrowany. Nejnowšy zapisk blokěrowańskego protokola pódawa se dołojce ako referenca:',
+'sp-contributions-search' => 'Pśinoski pytaś',
+'sp-contributions-username' => 'IP-adresa abo wužywarske mě:',
+'sp-contributions-submit' => 'Pytaś',
# What links here
'whatlinkshere' => 'Wótkaze na toś ten bok',
@@ -2028,6 +2172,7 @@ $1',
# Block/unblock
'blockip' => 'Wužywarja blokěrowaś',
+'blockip-title' => 'Wužywarja blokěrowaś',
'blockip-legend' => 'Wužywarja blokěrowaś',
'blockiptext' => 'Wužywaj slědujucy formular, jolic až coš wěstej IP-adresy abo konkretnemu wužywarjeju pśistup znjemóžniś. Take dejało se pó [[{{MediaWiki:Policy-url}}|směrnicach]] jano staś, aby se wandalizmoju zadorało. Pšosym zapódaj pśicynu za twójo blokěrowanje (na pś. mógu se citěrowaś konkretne boki, źo jo se wandalěrowało).',
'ipaddress' => 'IP-adresa',
@@ -2049,7 +2194,7 @@ $1',
'ipbenableautoblock' => 'Awtomatiske blokěrowanje slědneje wót togo wužywarja wužywaneje IP-adresy a wšyknych slědujucych adresow, wót kótarychž wopytajo boki wobźěłaś.',
'ipbsubmit' => 'Togo wužywarja blokěrowaś.',
'ipbother' => 'Drugi cas:',
-'ipboptions' => '2 góźinje:2 hours,1 źeń:1 day,3 dny:3 days,1 tyźeń:1 week,2 tyźenja:2 weeks,1 mjasec:1 month,3 mjasece:3 months,6 mjasecy:6 months,1 lěto:1 year,na nimjer:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 góźinje:2 hours,1 źeń:1 day,3 dny:3 days,1 tyźeń:1 week,2 tyźenja:2 weeks,1 mjasec:1 month,3 mjasece:3 months,6 mjasecy:6 months,1 lěto:1 year,na nimjer:infinite',
'ipbotheroption' => 'drugi',
'ipbotherreason' => 'Hynakša/dalšna pśicyna:',
'ipbhidename' => 'Wužywarske mě w změnach a lisćinach schowaś',
@@ -2078,9 +2223,11 @@ Glědaj do [[Special:IPBlockList|lisćiny aktiwnych blokěrowanjow]], aby blokě
'ipblocklist-sh-tempblocks' => 'nachylne blokěrowanja $1',
'ipblocklist-sh-addressblocks' => 'Blokěrowanja jadnotliwych IP $1',
'ipblocklist-submit' => 'Pytaś',
+'ipblocklist-localblock' => 'Lokalne blokěrowanje',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
'blocklistline' => '$1, $2 jo blokěrował $3 (až do $4)',
'infiniteblock' => 'njewobgranicowany',
-'expiringblock' => 'kóńcy $1',
+'expiringblock' => 'pśepadnjo $1 $2',
'anononlyblock' => 'jano anonymne',
'noautoblockblock' => 'awtomatiske blokěrowanje znjemóžnjone',
'createaccountblock' => 'wutwórjenje wužywarskich kontow znjemóžnjone',
@@ -2094,7 +2241,8 @@ Glědaj do [[Special:IPBlockList|lisćiny aktiwnych blokěrowanjow]], aby blokě
'contribslink' => 'pśinoski',
'autoblocker' => 'Awtomatiski blokěrowany, dokulaž twója IP-adresa jo se rowno wót "[[User:$1|$1]]". Pśicyna za blokěrowanje wužywarja $1 jo: "$2".',
'blocklogpage' => 'Protokol blokěrowanjow',
-'blocklog-fulllog' => 'Dopołny protokol blokěrowanjow',
+'blocklog-showlog' => 'Toś ten wužywaŕ jo se pjerwjej zablokěrował. Protokol blokěrowanjow pódawa se dołojce ako referenca:',
+'blocklog-showsuppresslog' => 'Toś ten wužywaŕ jo se pjerwjej zablokěrował a schował. Protokol pódtłocowanjow pódawa se dołojce ako referenca:',
'blocklogentry' => '[[$1]] blokěrujo se na $2 $3',
'reblock-logentry' => 'jo změnił blokěrowańske nastajenja za [[$1]] z casom spadnjenja $2 $3',
'blocklogtext' => 'To jo protokol blokěrowanjow a dopušćenjow.
@@ -2115,9 +2263,11 @@ Na boce [[Special:IPBlockList|Lisćina blokěrowanych IP-adresow a wužywarskich
'ipb_already_blocked' => '"$1" jo južo blokěrowany.',
'ipb-needreblock' => '== Južo zablokěrowany ==
$1 jo južo zablokěrowany. Coš nastajenja změniś?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
'ipb_cant_unblock' => 'Zmólka: Blokěrowańska ID $1 njejo se namakała. Blokěrowanje jo było južo wótpórane.',
'ipb_blocked_as_range' => 'Zmólka: IP-adresa $1 njejo direktnje blokěrowana a njeda se wótblokěrowaś. Jo pak ako źěl wobcerka $2 blokěrowana, kótaryž da se wótblokěrowaś.',
'ip_range_invalid' => 'Njepłaśecy wobłuk IP-adresow.',
+'ip_range_toolarge' => 'Wobcerkowe bloki, kótarež su wětše ako /$1, njejsu dowólone.',
'blockme' => 'blokěruj mě',
'proxyblocker' => 'Blokěrowanje proxy',
'proxyblocker-disabled' => 'Toś ta funkcija jo znjemóžnjona.',
@@ -2126,6 +2276,7 @@ $1 jo južo zablokěrowany. Coš nastajenja změniś?',
'sorbsreason' => 'Twója IP-adresa jo w DNSBL we {{GRAMMAR:lokatiw|{{SITENAME}}}} zapisana ako wócynjony proxy.',
'sorbs_create_account_reason' => 'Twója IP-adresa jo w DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} ako wócynjony proxy zapisana. Njejo móžno, nowe wužywarske konta załožowaś.',
'cant-block-while-blocked' => 'Njesmějoš žednych drugich wužywarjow blokěrowaś, mjaztym až ty sy blokěrowany.',
+'cant-see-hidden-user' => 'Wužywaŕ, kótaregož wopytujoš blokěrowaś, jo južo zablokěrowany a schowany. Dokulaž njamaš pšawo wužywarja schowaś, njamóžoš blokěrowanje wužywarja wiźeś abo wobźěłaś.',
# Developer tools
'lockdb' => 'Datowu banku zamknuś',
@@ -2165,6 +2316,7 @@ pšosym zawěsć, až konsekwency rozmijoš, nježli až pókšacujoš.",
W toś tyma padoma dej wopśimjeśe boka manualnje se pśesunuś resp. gromadu wjasć, jolic až to coš.",
'movearticle' => 'Bok pśesunuś',
+'moveuserpage-warning' => "'''Warnowanje:''' Coš rowno wužywarski bok pśesunuś. Pšosym wobmysli, až jano bok se pśesunjo a wužiwaŕ '''nje'''buźo se pśemjenjowaś.",
'movenologin' => 'Njepśizjawjony(a)',
'movenologintext' => 'Musyš zregistrěrowany wužywaŕ a [[Special:UserLogin|pśizjawjony]] byś, aby pśesunuł bok.',
'movenotallowed' => 'Njamaš pšawo pśesuwaś boki.',
@@ -2175,7 +2327,7 @@ W toś tyma padoma dej wopśimjeśe boka manualnje se pśesunuś resp. gromadu w
'move-watch' => 'Toś ten bok wobglědowaś',
'movepagebtn' => 'Bok pśesunuś',
'pagemovedsub' => 'Bok jo se pśesunuł.',
-'movepage-moved' => '\'\'\'Bok "$1" jo se do "$2" pśesunuł.\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Bok "$1" jo se do "$2" pśesunuł.\'\'\'',
'movepage-moved-redirect' => 'Dalejpósrědnjenje jo se napórało.',
'movepage-moved-noredirect' => 'Napóranje dalejpósrědnjenja jo se pódtłocyło.',
'articleexists' => 'Bok z takim mjenim južo eksistěrujo abo mě, kótarež sćo wuwzólił jo njepłaśece. Pšosym wuzwól nowe mě.',
@@ -2216,6 +2368,14 @@ Bok „[[:$1]]“ južo eksistěrujo. Coš jen wulašowaś, aby mógał toś ten
'imageinvalidfilename' => 'Mě celoweje dataje jo njepłaśiwe',
'fix-double-redirects' => 'Dalejpósrědnjenja, kótarež wótkazuju na originalny titel, aktualizěrowaś',
'move-leave-redirect' => 'Daleposrědnjenje zawóstajiś',
+'protectedpagemovewarning' => "'''WARNOWANJE:''' Toś ten bok jo se zastajił, aby jano wužiwarje z pšawami administratora mógli jen pśesunuś.
+Nejnowšy protokolowy zapisk jo dołojce ako referenca pódany:",
+'semiprotectedpagemovewarning' => "'''Glědaj:''' Toś ten bok jo se zastajił, aby jano zregistrěrowane wužywarje mógli jen pśesunuś.
+Nejnowšy protokolowy zapisk jo dołojce ako referenca pódany:",
+'move-over-sharedrepo' => '== Dataja eksistěrujo ==
+[[:$1]] eksistěrujo w gromaźe wužywanem repozitoriumje. Pśesunjenje dataje k toś tomu titeloju buźo gromaźe wužywanu dataju pśepisowaś.',
+'file-exists-sharedrepo' => 'Wubrane datajowe mě wužywa se južo w gromaźe wužywanem repozitoriumje.
+Pšosym wubjeŕ druge mě.',
# Export
'export' => 'Boki eksportěrowaś',
@@ -2237,15 +2397,21 @@ W slědnem padźe móžoš teke wótkaz wužywaś, na pś. [[{{#Special:Export}}
'export-pagelinks' => 'Wótkazane boki zapśěgnuś, až k dłymoju wót:',
# Namespace 8 related
-'allmessages' => 'Systemowe zdźělenja',
-'allmessagesname' => 'Mě',
-'allmessagesdefault' => 'Standardny tekst',
-'allmessagescurrent' => 'Aktualny tekst',
-'allmessagestext' => 'How jo lisćina systemowych powěsćow w mjenowem rumje MediaWiki.
+'allmessages' => 'Systemowe zdźělenja',
+'allmessagesname' => 'Mě',
+'allmessagesdefault' => 'Standardny tekst',
+'allmessagescurrent' => 'Aktualny tekst',
+'allmessagestext' => 'How jo lisćina systemowych powěsćow w mjenowem rumje MediaWiki.
Pšosym wobglědaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [http://translatewiki.net translatewiki.net], jolic coš k lokalizaciji MediaWiki pśinosowaś.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' njejo tuchylu móžno, dokulaž jo datowa banka offline.",
-'allmessagesfilter' => 'Filter za mjenja powěsćow:',
-'allmessagesmodified' => 'Jano změnjone pokazaś',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' njejo tuchylu móžno, dokulaž jo datowa banka offline.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Pó pśiměrjeńskem stawje filtrěrowaś:',
+'allmessages-filter-unmodified' => 'Njezměnjony',
+'allmessages-filter-all' => 'Wše',
+'allmessages-filter-modified' => 'Změnjony',
+'allmessages-prefix' => 'Pó prefiksu filtrěrowaś:',
+'allmessages-language' => 'Rěc:',
+'allmessages-filter-submit' => 'Wótpósłaś',
# Thumbnails
'thumbnail-more' => 'Pówětšyś',
@@ -2255,6 +2421,9 @@ Pšosym wobglědaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju Medi
'djvu_no_xml' => 'Njejo móžno, XML za DjVu-dataju wótwołaś.',
'thumbnail_invalid_params' => 'Njepłaśece parametry pśeglěda',
'thumbnail_dest_directory' => 'Njejo móžno celowy zapis stwóriś.',
+'thumbnail_image-type' => 'Wobrazy typ se njepódpěra',
+'thumbnail_gd-library' => 'Njedopołna konfiguracija GD-biblioteki: felujuca funkcija $1',
+'thumbnail_image-missing' => 'Zda se, až dataja felujo: $1',
# Special:Import
'import' => 'Boki importěrowaś',
@@ -2318,6 +2487,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
'tooltip-ca-viewsource' => 'Bok jo šćitany. Jo móžno, žrědłowy tekst woglědaś.',
'tooltip-ca-history' => 'Něgajšne wersije togo boka.',
'tooltip-ca-protect' => 'Toś ten bok šćitaś',
+'tooltip-ca-unprotect' => 'Tutu stronu hižo nješkitać',
'tooltip-ca-delete' => 'Toś ten bok wulašowaś',
'tooltip-ca-undelete' => 'Zapise pśed wulašowanim boka nawrośiś.',
'tooltip-ca-move' => 'Toś ten bok pśesunuś',
@@ -2328,6 +2498,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
'tooltip-search-fulltext' => 'Toś ten tekst w bokach pytaś',
'tooltip-p-logo' => 'Głowny bok',
'tooltip-n-mainpage' => 'Glowny bok pokazaś',
+'tooltip-n-mainpage-description' => 'Hłownu stronu wopytać',
'tooltip-n-portal' => 'Wó portalu, co móžoš cyniś, źo co namakajoš',
'tooltip-n-currentevents' => 'Slězynowe informacije k aktualnym tšojenjam',
'tooltip-n-recentchanges' => 'Lisćina aktualnych změnow w(e) {{SITENAME}}.',
@@ -2381,10 +2552,12 @@ W zespominanju dajo se pśicyna pódaś.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymny wužywaŕ|Anonymnej wužywarja|Anonymne wužywarje}} na {{SITENAME}}',
'siteuser' => '{{SITENAME}}-wužywaŕ $1',
-'lastmodifiedatby' => 'Toś ten bok jo slědny raz se wobźěłał $2, $1 góź. wót wužywarja $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonymny wužywaŕ $1',
+'lastmodifiedatby' => 'Toś ten bok jo slědny raz se wobźěłał $2, $1 góź. wót wužywarja $3.',
'othercontribs' => 'Bazěrujo na źěle $1',
'others' => 'druge',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|wužywaŕ|wužiwarja|wužywarje}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonymny wužywaŕ|anonymnej wužywarja|anonymne wužywarje|anonymnych wužywarjow}} $1',
'creditspage' => 'Informacija wó boku',
'nocredits' => 'Njeeksistěruju žedne informacije za toś ten bok.',
@@ -2422,11 +2595,22 @@ W zespominanju dajo se pśicyna pódaś.',
'mw_math_modern' => 'Pórucyjo se za moderne browsery',
'mw_math_mathml' => 'Jo-lic móžno - MathML (eksperimentelny)',
+# Math errors
+'math_failure' => 'Zmólka',
+'math_unknown_error' => 'njeznata zmólka',
+'math_unknown_function' => 'njeznata funkcija',
+'math_lexing_error' => 'leksikaliska zmólka',
+'math_syntax_error' => 'syntaktiska zmólka',
+'math_image_error' => 'PNG-konwertěrowanje njejo se raźiło. Glědaj, lic su latex, dvips gs abo konwertěruj pšawje instalěrowane.',
+'math_bad_tmpdir' => 'Njejo móžno temporarny zapisk za matematiske formule załožyś resp. do njogo pisaś.',
+'math_bad_output' => 'Njejo móžno celowy zapisk za matematiske formule załožyś resp. do njogo pisaś.',
+'math_notexvc' => 'Program texvc felujo. Pšosym glědaj do math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Ako kontrolěrowane markěrowaś',
'markaspatrolledtext' => 'Markěruj toś ten bok ako kontrolěrowany',
'markedaspatrolled' => 'jo se ako kontrolěrowany markěrował',
-'markedaspatrolledtext' => 'Wuzwólona wersija jo se markěrowała ako kontrolěrowana.',
+'markedaspatrolledtext' => 'Wubrana wersija [[:$1]] jo se markěrowała ako kontrolěrowana.',
'rcpatroldisabled' => 'Kontrolěrowanje slědnych změnow jo se znjemóžniło.',
'rcpatroldisabledtext' => 'Kontrolěrowanje slědnych změnow jo tuchylu se znjemóžniło.',
'markedaspatrollederror' => 'Markěrowanje ako "kontrolěrowane" njejo móžne.',
@@ -2456,12 +2640,9 @@ $1',
'previousdiff' => '← pśedchadna změna',
'nextdiff' => 'Pśiduca změna →',
-# Visual comparison
-'visual-comparison' => 'Wizuelne pśirownanje',
-
# Media information
'mediawarning' => "'''Warnowanje''': Toś ten datajowy typ móžo wopśimjeś złosny programowy kod. Gaž toś ten kod se wuwjeźo, twój system móžo se wobškóźeś.",
-'imagemaxsize' => 'Wobgranicuj wjelikosć wobrazow na bokach z wopisowanim wobrazow na:',
+'imagemaxsize' => "Maksimalna wobrazowa wjelikosć:<br />'' (za boki datajowego wopisanja)''",
'thumbsize' => 'Rozměra miniaturow:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bok|boka|boki|bokow}}',
'file-info' => '(wjelikosć dataje: $1, MIME-Typ: $2)',
@@ -2470,6 +2651,8 @@ $1',
'svg-long-desc' => '(dataja SVG, nominalnje: $1 × $2 piksele, wjelikosć dataje: $3)',
'show-big-image' => 'Połne optiske wótgranicowanje.',
'show-big-image-thumb' => '<small>wjelikosć pśeglěda: $1 × $2 pikselow</small>',
+'file-info-gif-looped' => 'bźezkóńcna šlejfa',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłuka|wobłuki|wobłukow}}',
# Special:NewFiles
'newimages' => 'Nowe dataje',
@@ -2502,7 +2685,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Šyrokosć',
@@ -2629,14 +2812,14 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-unknowndate' => 'Njeznaty datum',
-'exif-orientation-1' => 'Normalny', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'horicontalnje wobrośony', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Pśewobrośony', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'wertikalnje wobrośony', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Wobrośony wó 90° nalěwo a wertikalnje', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Wobrośony wó 90° napšawo', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Wobrośony wó 90° napšawo a wertikalnje', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Wobrośony wó 90° nalěwo', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalny',
+'exif-orientation-2' => 'horicontalnje wobrośony',
+'exif-orientation-3' => 'Pśewobrośony',
+'exif-orientation-4' => 'wertikalnje wobrośony',
+'exif-orientation-5' => 'Wobrośony wó 90° nalěwo a wertikalnje',
+'exif-orientation-6' => 'Wobrośony wó 90° napšawo',
+'exif-orientation-7' => 'Wobrośony wó 90° napšawo a wertikalnje',
+'exif-orientation-8' => 'Wobrośony wó 90° nalěwo',
'exif-planarconfiguration-1' => 'gropny format',
'exif-planarconfiguration-2' => 'płony format',
@@ -2760,7 +2943,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-gpsmeasuremode-2' => '2-dimensionalne měrjenje',
'exif-gpsmeasuremode-3' => '3-dimensionalne měrjenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometry na góźinu',
'exif-gpsspeed-m' => 'Mile na góźinu',
'exif-gpsspeed-n' => 'Suki',
@@ -2779,6 +2962,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'watchlistall2' => 'wšykne',
'namespacesall' => 'wšykne',
'monthsall' => 'wšykne',
+'limitall' => 'wšykne',
# E-mail address confirmation
'confirmemail' => 'E-mailowu adresu wobkšuśiś.',
@@ -2911,7 +3095,7 @@ Móžoš teke [[Special:Watchlist/edit|standardny wobźěłowański bok wužywa
'duplicate-defaultsort' => 'Glědaj: Standardny sortěrowański kluc (DEFAULT SORT KEY) "$2" pśepišo pjerwjej wužyty kluc "$1".',
# Special:Version
-'version' => 'Wersija', # Not used as normal message but as header for the special page itself
+'version' => 'Wersija',
'version-extensions' => 'Instalowane rozšyrjenja',
'version-specialpages' => 'Specialne boki',
'version-parserhooks' => 'Parserowe kokule',
@@ -2925,7 +3109,7 @@ Móžoš teke [[Special:Watchlist/edit|standardny wobźěłowański bok wužywa
'version-skin-extension-functions' => 'Funkcije za rozšyrjenja šatow',
'version-hook-name' => 'Mě kokule',
'version-hook-subscribedby' => 'Aboněrowany wót',
-'version-version' => 'Wersija',
+'version-version' => '(Wersija $1)',
'version-license' => 'Licenca',
'version-software' => 'Instalěrowana software',
'version-software-product' => 'Produkt',
@@ -3005,4 +3189,15 @@ Zapódaj datajowe mě bźez prefiksa "{{ns:file}}:".',
'dberr-outofdate' => 'Źiwaj na to, až jich indekse našogo wopśimjeśa by mógli zestarjone byś.',
'dberr-cachederror' => 'Slědujuca jo pufrowana kopija pominanego boka a by mógła zestarjona byś.',
+# HTML forms
+'htmlform-invalid-input' => 'Su někotare problemy z twójim zapodaśim',
+'htmlform-select-badoption' => 'Gódnota, kótaruž sy pódał, njejo płaśiwa opcija.',
+'htmlform-int-invalid' => 'Gódnota, kótaruž sy pódał, njejo ceła licba.',
+'htmlform-float-invalid' => 'Gódnota, kótaruž sy pódał, njejo licba.',
+'htmlform-int-toolow' => 'Gódnota, kótaruž sy pódał, jo mjeńša ako minimum $1',
+'htmlform-int-toohigh' => 'Gódnota, kótaruž sy pódał, jo wětša ako maksimum $1',
+'htmlform-submit' => 'Wótpósłaś',
+'htmlform-reset' => 'Změny anulěrowaś',
+'htmlform-selectorother-other' => 'Druge',
+
);
diff --git a/languages/messages/MessagesDv.php b/languages/messages/MessagesDv.php
index bca2362c..0a57741e 100644
--- a/languages/messages/MessagesDv.php
+++ b/languages/messages/MessagesDv.php
@@ -119,17 +119,19 @@ $messages = array(
'subcategories' => 'ކުދިގިސްމުތައް',
'category-empty' => "''މި ގިސްމުގައި އެއްވެއސް ސަފްހާ އެއް އަދި އެއްވެސް ފައިލެއް ނުހިމެނެއެވެ.''",
-'about' => 'ތާރަފު',
-'article' => 'ފިހުރިސްތު ޞަފްޙާ',
-'newwindow' => '(އާ ވިންޑޯ އެއް ހުޅުވޭނެއެވެ)',
-'cancel' => 'މަންސޫހު',
+'about' => 'ތާރަފު',
+'article' => 'ފިހުރިސްތު ޞަފްޙާ',
+'newwindow' => '(އާ ވިންޑޯ އެއް ހުޅުވޭނެއެވެ)',
+'cancel' => 'މަންސޫހު',
+'mytalk' => 'މަގޭ ވާހަކަ',
+'navigation' => 'ސަމުގާ',
+'and' => '&#32;އަދި',
+
+# Cologne Blue skin
'qbfind' => 'ހޯއްދަވާ',
'qbedit' => 'އުނިއިތުރުގެންނަވާ',
'qbpageoptions' => 'މި ޞަފްޙާ',
'qbmyoptions' => 'މަގޭ ސަފްހާ ތައް',
-'mytalk' => 'މަގޭ ވާހަކަ',
-'navigation' => 'ސަމުގާ',
-'and' => '&#32;އަދި',
'errorpagetitle' => 'ކުށް',
'returnto' => 'އަނބުރާ $1 އަށް ވަޑައިގަންނަވާ!',
@@ -165,7 +167,7 @@ $messages = array(
'otherlanguages' => 'އެހެން ބަސްބަހުން',
'redirectedfrom' => '(މިސްރާބުކުރެވުނީ $1 އިން)',
'redirectpagesub' => 'ޞަފްޙާގެ މިސްރާބު އައުކުރައްވާ',
-'lastmodifiedat' => 'މި ޞަފްހާ އަށް އެންމެ ފަހުން ބަދަލެއް ގެނެވިފައިވަނީ $1، $2 ގައެވެ.', # $1 date, $2 time
+'lastmodifiedat' => 'މި ޞަފްހާ އަށް އެންމެ ފަހުން ބަދަލެއް ގެނެވިފައިވަނީ $1، $2 ގައެވެ.',
'protectedpage' => 'ދިފާއުކުރެވިފައިވާ ޞަފްޙާ',
'jumptosearch' => 'ހޯއްދަވާ',
@@ -173,7 +175,6 @@ $messages = array(
'aboutsite' => 'ވިކިޕީޑިއާ ގެ ތާރަފު',
'aboutpage' => 'Project:ތާރަފު',
'copyright' => 'ހުރިހާ މާއްދާއެއް $1 ގެ ދަށުން ލިބެން އެބަހުއްޓެވެ.',
-'copyrightpagename' => 'ވިކިޕީޑިއާ:ނަކަލުކުރުމުގެ ހައްގު',
'copyrightpage' => '{{ns:project}}:ނަކަލުކުރުމުގެހައްގު',
'currentevents' => 'ހިނގަމުންދާ ހާދިސާތައް',
'disclaimers' => 'އިއުލާނުތައް',
@@ -212,7 +213,6 @@ $messages = array(
# Login and logout pages
'welcomecreation' => '== މަރުހަބާ، $1 ! ==
ތިޔަބޭފުޅާގެ މެންބަރުޝިޕް ހެދިއްޖެއެވެ. ތިޔަ ބޭފުޅާގެ ވިކިޕީޑިއާގެ ތަރުޖީހުތައް ބަދަލުކުރައްވަން ހަނދުމަފުޅު ބަހައްޓަވާށެވެ.',
-'loginpagetitle' => 'މެންބަރު ވެންނެވުން',
'yourname' => 'މެންބަރުގެނަން',
'yourpassword' => 'ސިއްރުބަސް',
'yourpasswordagain' => 'ސިއްރުބަސް އަލުންލިޔުއްވާ',
@@ -224,12 +224,6 @@ $messages = array(
'createaccount' => 'މެންބަރަކަށް ވެ ވަޑައިގަންނަވާ',
'badretype' => 'ތިޔަ ލިޔުއްވި ދެ ސިއްރުބަސް އެއް ސިއްރު ބަހާއި އަނެއް ސިއްރު ބަހާއި ދިމަލެއް ނުވޭ. އަދި ސިއްރުބަސް ރަނގަޅަށް ޖައްސަވާށެވެ!',
'userexists' => 'ތިޔަ ލިޔުއްވި ނަން މިހާރުވެސް ދަނީ ބޭނުން ކުރެވެމުން، އައު ނަމެއް އިހުތިޔާރު ކުރައްވާ!',
-'youremail' => '٭ އީމޭލު',
-'username' => 'މެންބަރުނަން:',
-'yourrealname' => '* އަސްލު ނަން',
-'yourlanguage' => 'ބަސް:',
-'yournick' => 'ލަގަބު/ކުއްނިއްޔާ:',
-'email' => 'އީމޭލު',
'wrongpassword' => 'ތިޔަ ލިޔުއްވި ސިއްރުބަސް އަދި ރަނގަޅެއް ނޫނެވެ! އަދި މަސައްކަތް ކޮށްލައްވާށެވެ!',
'wrongpasswordempty' => 'ތިޔަ ލިޔުއްވި ސިއްރުބަހެއް ނޭނގުނު. އަލުން މަސައްކަތް ކޮށްލައްވާ!',
'mailmypassword' => 'ސިއްރުބަސް އީމޭލުކުރައްވާ',
@@ -290,7 +284,7 @@ $messages = array(
'compareselectedversions' => 'އިހުތިޔާރު ކުރެވިފައިވާ ނުސްހާތައް އަޅައިކިޔުއްވާ',
# Search results
-'viewprevnext' => 'ބައްލަވާ($1) ($2) ($3).',
+'viewprevnext' => 'ބައްލަވާ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:ފިހުރިސްތު',
# Preferences page
@@ -298,10 +292,16 @@ $messages = array(
'mypreferences' => 'މަގޭ ތަރުޖީހުތައް',
'changepassword' => 'ސިއްރުބަސް ބަދަލުކުރައްވާ',
'columns' => 'ކޮލަންތައް:',
-'files' => 'ފައިލުތައް',
+'prefs-files' => 'ފައިލުތައް',
+'youremail' => '٭ އީމޭލު',
+'username' => 'މެންބަރުނަން:',
+'yourrealname' => '* އަސްލު ނަން',
+'yourlanguage' => 'ބަސް:',
+'yournick' => 'ލަގަބު/ކުއްނިއްޔާ:',
+'email' => 'އީމޭލު',
# User rights
-'userrights' => 'މެންބަރުގެ ހައްގުތަކުގެ އިންތިޒާމް', # Not used as normal message but as header for the special page itself
+'userrights' => 'މެންބަރުގެ ހައްގުތަކުގެ އިންތިޒާމް',
'userrights-user-editname' => 'މެންބަރުނަން ލިޔުއްވާ:',
# Recent changes
@@ -312,7 +312,9 @@ $messages = array(
'show' => 'ދައްކަވާ',
# Recent changes linked
-'recentchangeslinked' => 'ގުޅުންހުރި ބަދަލުތައް',
+'recentchangeslinked' => 'ގުޅުންހުރި ބަދަލުތައް',
+'recentchangeslinked-feed' => 'ގުޅުންހުރި ބަދަލުތައް',
+'recentchangeslinked-toolbox' => 'ގުޅުންހުރި ބަދަލުތައް',
# Upload
'upload' => 'ފައިލު ފޮނުވާ',
@@ -408,6 +410,8 @@ $messages = array(
'contributions' => 'މެންބަރު ގެ ހިއްސާ',
'mycontris' => 'މަގޭ ހިއްސާ',
+'sp-contributions-userrights' => 'މެންބަރުގެ ހައްގުތަކުގެ އިންތިޒާމް',
+
# What links here
'whatlinkshere' => 'މިއާ ގުޅެނީ ކޮންއެއްޗެއް',
@@ -416,7 +420,7 @@ $messages = array(
'ipbreason' => 'ސަބަބު',
'ipbsubmit' => 'މި މެމްބަރާއި މެދު ފިޔަވަޅު އަޅުއްވާ!',
'badipaddress' => 'ނުރަނގަޅު އައި.ޕީ އެޑްރެހެއް',
-'expiringblock' => 'މުއްދަތު ހަމަވާނީ $1',
+'expiringblock' => 'މުއްދަތު ހަމަވާނީ $1 $2',
'blocklink' => 'ފިޔަވަޅުއަޅުއްވާ',
'contribslink' => 'ޙިއްޞާ',
'proxyblocksuccess' => 'ފުރިހަމަވެއްޖެ.',
@@ -460,7 +464,7 @@ $messages = array(
'exif-artist' => 'މުސައްނިފު',
'exif-filesource' => 'ފައިލުގެ މަސްދަރު',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => 'ތަސްވީރުގެ ސުރުހީ',
# 'all' in various places, this might be different for inflected languages
@@ -475,7 +479,7 @@ $messages = array(
'confirm_purge_button' => 'ރަނގަޅު',
# Special:Version
-'version' => 'ނުސްހާ ނަމްބަރު', # Not used as normal message but as header for the special page itself
+'version' => 'ނުސްހާ ނަމްބަރު',
# Special:SpecialPages
'specialpages' => 'ހާއްސަ ޞަފްޙާތައް',
diff --git a/languages/messages/MessagesDz.php b/languages/messages/MessagesDz.php
index 7aad936c..c5942244 100644
--- a/languages/messages/MessagesDz.php
+++ b/languages/messages/MessagesDz.php
@@ -88,10 +88,12 @@ $messages = array(
'about' => 'སྐོར་ལས།',
'newwindow' => '(ཝིན་ཌོ་གསརཔ་ནང་ ཁ་ཕྱེཝ་ཨིན།)',
'cancel' => 'ཆ་མེད་གཏང་།',
-'qbfind' => 'འཚོལ།',
-'qbedit' => 'ཞུན་དག',
'mytalk' => 'ངེ་གི་བློ།',
+# Cologne Blue skin
+'qbfind' => 'འཚོལ།',
+'qbedit' => 'ཞུན་དག',
+
'errorpagetitle' => 'འཛོལ་བ།',
'returnto' => '$1 ལུ་ལོག།',
'tagline' => '{{SITENAME}} ལས།',
@@ -181,8 +183,6 @@ $messages = array(
'createaccount' => 'རྩིས་ཐོ་གསརཔ་བཟོ།',
'gotaccount' => "ཧེ་མ་ལས་རྩིས་ཐོ་ཡོད་ག? '''$1'''",
'gotaccountlink' => 'ནང་བསྐྱོད།',
-'yourrealname' => 'མིང་ངོ་མ:',
-'prefs-help-realname' => 'མིང་ངོ་མ་འདི་ གདམ་ཁ་ཅན་ཨིན་རུང་ ཐོ་བཀོད་འབད་བ་ཅིན་ ཁྱོད་རའི་ལཱ་གི་ཁྱད་བརྗོད་ཀྱི་དོན་ལུ་ ལག་ལེན་འཐབ་འོང་།',
'loginsuccesstitle' => 'ནང་བསྐྱོད་ལེགས་ཤོམ་འབད་ཡོདཔ།',
'loginsuccess' => "'''ད་འབདན་ཁྱོད་ {{SITENAME}} ནང་ \"\$1\" སྦེ་ ནང་བསྐྱོད་འབད་ཡོདཔ།'''",
'nosuchuser' => 'མིང་ "$1" བཟུམ་གྱི་ལག་ལེན་པ་མེད།
@@ -232,18 +232,18 @@ $messages = array(
'hr_tip' => 'ཐད་སྙོམས་གྲལ་ཐིག་ (ཉུང་སུ་སྦེ་ལག་ལེན་འཐབ)',
# Edit pages
-'summary' => 'བཅུད་དོན།:',
-'subject' => 'དོན་ཚན་/གཙོ་དོན།:',
-'minoredit' => 'འདི་ གལ་གནད་ཆུང་བའི་ཞུན་དག་ཅིག་ཨིན།',
-'watchthis' => 'ཤོག་ལེབ་འདི་ལུ་བལྟ།',
-'savearticle' => 'ཤོག་ལེབ་སྲུངས།',
-'preview' => 'སྔོན་ལྟ།',
-'showpreview' => 'སྔོན་ལྟ་སྟོན།',
-'showdiff' => 'བསྒྱུར་བཅོས་ཚུ་སྟོན།',
-'anoneditwarning' => "'''ཉེན་བརྡ:''' ཁྱོད་ཀྱིས་ ནང་བསྐྱོད་མ་འབད་བས།
+'summary' => 'བཅུད་དོན།:',
+'subject' => 'དོན་ཚན་/གཙོ་དོན།:',
+'minoredit' => 'འདི་ གལ་གནད་ཆུང་བའི་ཞུན་དག་ཅིག་ཨིན།',
+'watchthis' => 'ཤོག་ལེབ་འདི་ལུ་བལྟ།',
+'savearticle' => 'ཤོག་ལེབ་སྲུངས།',
+'preview' => 'སྔོན་ལྟ།',
+'showpreview' => 'སྔོན་ལྟ་སྟོན།',
+'showdiff' => 'བསྒྱུར་བཅོས་ཚུ་སྟོན།',
+'anoneditwarning' => "'''ཉེན་བརྡ:''' ཁྱོད་ཀྱིས་ ནང་བསྐྱོད་མ་འབད་བས།
ཁྱོད་ཀྱི་ ཨའི་པི་ཁ་བྱང་འདི་ ཤོག་ལེབ་ཀྱི་ཞུན་དག་སྤྱོད་ཤུལ་འདི་ནང་ ཐོ་བཀོད་འབད་དེ་བཞག་འོང་།",
-'summary-preview' => 'བཅུད་དོན་སྔོན་ལྟ།:',
-'blockedtext' => "'''ཁྱོད་ཀྱི་ ལག་ལེན་པའི་མིང་ ཡང་ན་ ཨའི་པི་ཁ་བྱང་འདི་ བཀག་དམ་འབད་ཡོདཔ།'''
+'summary-preview' => 'བཅུད་དོན་སྔོན་ལྟ།:',
+'blockedtext' => "'''ཁྱོད་ཀྱི་ ལག་ལེན་པའི་མིང་ ཡང་ན་ ཨའི་པི་ཁ་བྱང་འདི་ བཀག་དམ་འབད་ཡོདཔ།'''
དེ་ཡང་ $1 གིས་ བཀག་ཡོདཔ། བཀག་དགོ་པའི་རྒྱུ་མཚན་འདི་ ''$2''ཨིན་པས།
@@ -255,26 +255,26 @@ $messages = array(
ཁྱོད་ཀྱིས་ ཁྱོད་རའི་ [[Special:Preferences|account preferences]] ནང་ ནུས་ལྡན་གློག་འཕྲིན་ཁ་བྱང་ཅིག་ གསལ་བཀོད་མ་འབད་ཚུན་དང་ དེ་ལག་ལེན་འཐབ་ནི་ལས་འགག་བསུབ་མ་འབད་བ་ཅིན་རྐྱངམ་ཅིག་ 'ལག་ལེན་པ་ལུ་ གློག་འཕྲིན་གཏང་' གི་ཁྱད་ཆོས་འདི་ ལག་ལེན་འཐབ་མི་བཏུབ་ཨིན།
ཁྱོད་ཀྱི་ད་ལྟོའི་ཨའི་པི་ཁ་བྱང་འདི་ $3, དང་ འགག་བསུབ་ཨའི་ཌི་འདི་ #$5 ཨིན། དེ་གཉིས་ ཡང་ན་ ག་ཨིན་རུང་ཅིག་ འདྲི་དཔྱད་གང་རུང་གི་གྲངས་སུ་བཙུགས་གནང་།",
-'newarticle' => '(གསརཔ་)',
-'newarticletext' => "ཁྱོད་ཀྱིས་ ཤོག་ལེབ་ཅིག་ལུ་ ད་ཚུན་མེད་པའི་འབྲེལ་མཐུད་འབད་ཡོདཔ།
+'newarticle' => '(གསརཔ་)',
+'newarticletext' => "ཁྱོད་ཀྱིས་ ཤོག་ལེབ་ཅིག་ལུ་ ད་ཚུན་མེད་པའི་འབྲེལ་མཐུད་འབད་ཡོདཔ།
ཤོག་ལེབ་གསརཔ་བཟོ་ནི་ལུ་ འོག་གི་སྒྲོམ་ནང་ ཡིག་དཔར་རྐྱབས་ (བརྡ་དོན་ཁ་གསལ་གྱི་དོན་ལུ་ [[{{MediaWiki:Helppage}}|help page]] ལུ་བལྟ་)།
གལ་སྲིད་འཛོལ་ཏེ་ཡར་སོང་པ་ཅིན་ '''རྒྱབ་''' ཨེབ་རྟ་ལུ་ ཨེབ་གཏང་འབད།",
-'noarticletext' => 'ད་ལྟོ་ ཤོག་ལེབ་འདི་ནང་ ཚིག་ཡིག་མེདཔ་ཨིནམ་དང་ ཁྱོད་ཀྱིས་ [[Special:Search/{{PAGENAME}}| ཤོག་ལེབ་མགོ་མིང་འདི་ ]] ཤོག་ལེབ་གཞན་ནང་ལས་འཚོལ་བཏུབ་ ཡང་ན་ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ཤོག་ལེབ་འདི་ ཞུན་དག་འབད་བཏུབ།]',
-'previewnote' => "'''འདི་ སྔོན་ལྟ་རྐྱངམ་ཅིག་ཨིན་ བསྒྱུར་བཅོས་ཚུ་ ད་ལྟོ་ཚུན་མ་སྲུངས་པས་!'''",
-'editing' => '$1 ཞུན་དག་འབད་དོ།',
-'editingsection' => '$1 (དབྱེ་ཚན་)འདི་ ཞུན་དག་འབད་ནི།',
-'copyrightwarning' => "{{SITENAME}} ལུ་ ཕུལ་མི་ཞལ་འདེབས་ཚུ་ $2 གི་འོག་ལུ་ གསར་བཏོན་འབད་ནིའི་ཆ་འཇོག་གྲུབ་ཡོདཔ་(ཁ་གསལ་གྱི་དོན་ལས་ $1 ལུ་བལྟ་)། གལ་སྲིད་ ཁྱོད་རའི་འབྲི་ལཱ་འདི་ ཞུན་དག་དང་ལོག་བཀྲམ་མ་འབད་ནི་ཨིན་པ་ཅིན་ ནཱ་ལུ་མ་ཕུལ།<br />
+'noarticletext' => 'ད་ལྟོ་ ཤོག་ལེབ་འདི་ནང་ ཚིག་ཡིག་མེདཔ་ཨིནམ་དང་ ཁྱོད་ཀྱིས་ [[Special:Search/{{PAGENAME}}| ཤོག་ལེབ་མགོ་མིང་འདི་ ]] ཤོག་ལེབ་གཞན་ནང་ལས་འཚོལ་བཏུབ་ ཡང་ན་ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ཤོག་ལེབ་འདི་ ཞུན་དག་འབད་བཏུབ།]',
+'previewnote' => "'''འདི་ སྔོན་ལྟ་རྐྱངམ་ཅིག་ཨིན་ བསྒྱུར་བཅོས་ཚུ་ ད་ལྟོ་ཚུན་མ་སྲུངས་པས་!'''",
+'editing' => '$1 ཞུན་དག་འབད་དོ།',
+'editingsection' => '$1 (དབྱེ་ཚན་)འདི་ ཞུན་དག་འབད་ནི།',
+'copyrightwarning' => "{{SITENAME}} ལུ་ ཕུལ་མི་ཞལ་འདེབས་ཚུ་ $2 གི་འོག་ལུ་ གསར་བཏོན་འབད་ནིའི་ཆ་འཇོག་གྲུབ་ཡོདཔ་(ཁ་གསལ་གྱི་དོན་ལས་ $1 ལུ་བལྟ་)། གལ་སྲིད་ ཁྱོད་རའི་འབྲི་ལཱ་འདི་ ཞུན་དག་དང་ལོག་བཀྲམ་མ་འབད་ནི་ཨིན་པ་ཅིན་ ནཱ་ལུ་མ་ཕུལ།<br />
དེ་མ་ཚད་ཁྱོད་ཀྱིས་ ང་བཅས་ལུ་ དེ་ཁྱོད་རང་གིས་བྲིས་འབྲིཝ་དང་ མི་མང་ཌོ་མཱེན་ ཡང་ན་ རྒྱུ་ཁུངས་སྟོང་མར་ནང་ལས་འདྲ་བཤུས་བརྐྱབས་རྐྱབ་ཨིནམ་སྦེ་ བཤདཔ་ཨིན་པས།
'''གནང་བ་མེད་པར་ འདྲ་བཤུས་དབང་ཆ་ཅན་གྱི་ལཱ་མ་ཕུལ་!'''",
-'longpagewarning' => "'''ཉེན་བརྡ་: ཤོག་ལེབ་འདི་རིང་ཚད་ ཀི་ལོ་བའིཊིསི་ $1 ཡོདཔ་དང་ བརྡ་འཚོལ་ལ་ལོ་ཅིག་ནང་ ཀི་ལོ་བའིཊི་ ༣༢ ལས་ལྷག་སྟེ་ཡོད་པའི་ཤོག་ལེབ་ ཞུན་དག་འབད་ནི་ལུ་དཀའ་ངལ་འབྱུང་དོ་ཡོདཔ་ཨིན།
+'longpagewarning' => "'''ཉེན་བརྡ་: ཤོག་ལེབ་འདི་རིང་ཚད་ ཀི་ལོ་བའིཊིསི་ $1 ཡོདཔ་དང་ བརྡ་འཚོལ་ལ་ལོ་ཅིག་ནང་ ཀི་ལོ་བའིཊི་ ༣༢ ལས་ལྷག་སྟེ་ཡོད་པའི་ཤོག་ལེབ་ ཞུན་དག་འབད་ནི་ལུ་དཀའ་ངལ་འབྱུང་དོ་ཡོདཔ་ཨིན།
ཤོག་ལེབ་འདི་ བགོ་བཤའ་རྐྱབ་སྟེ་ཆུང་ཀུ་བཟོ་ནི་ལུ་ཆ་འཇོག་འབད་གནང་།'''",
-'templatesused' => 'ཤོག་ལེབ་འདི་གུ་ལག་ལེན་འཐབ་ཡོད་པའི་ཊེམ་པེལེཊི:',
-'templatesusedpreview' => 'སྔོན་ལྟ་འདི་ནང་ལག་ལེན་འཐབ་ཡོད་པའི་ཊེམ་པེལེཊི:',
-'template-protected' => '(ཉེན་སྐྱོབ་འབད་ཡོདཔ།)',
-'template-semiprotected' => '(ཉེན་སྐྱོབ་ཕྱེད་ཀ་འབད་ཡོདཔ་)',
-'nocreatetext' => '{{SITENAME}} གིས་ ཤོག་ལེབ་གསརཔ་བཟོ་ནི་ལས་ བཀག་དམ་འབད་ཡོདཔ།
+'templatesused' => 'ཤོག་ལེབ་འདི་གུ་ལག་ལེན་འཐབ་ཡོད་པའི་ཊེམ་པེལེཊི:',
+'templatesusedpreview' => 'སྔོན་ལྟ་འདི་ནང་ལག་ལེན་འཐབ་ཡོད་པའི་ {{PLURAL:$1|Template|Templates}} :',
+'template-protected' => '(ཉེན་སྐྱོབ་འབད་ཡོདཔ།)',
+'template-semiprotected' => '(ཉེན་སྐྱོབ་ཕྱེད་ཀ་འབད་ཡོདཔ་)',
+'nocreatetext' => '{{SITENAME}} གིས་ ཤོག་ལེབ་གསརཔ་བཟོ་ནི་ལས་ བཀག་དམ་འབད་ཡོདཔ།
ཁྱོད་ཀྱིས་ ལོག་འགྱོ་ཞིནམ་ལས་ ཡོད་བཞིན་པའི་ཤོག་ལེབ་འདི་ཞུན་དག་འབད་ ཡང་ན་ [[Special:UserLogin|ནང་བསྐྱོད་དང་ ཡངན་ རྩིས་ཐོ་གསརཔ་བཟོ་]].',
-'recreate-deleted-warn' => "'''ཉེན་བརྡ་: ཁྱོད་ཀྱིས་ ཧ་མ་ལས་བཏོན་བཏང་ཡོད་པའི་ཤོག་ལེབ་ཅིག་ ལོག་གསར་བཟོ་འབདཝ་ཨིན་པས།'''
+'recreate-moveddeleted-warn' => "'''ཉེན་བརྡ་: ཁྱོད་ཀྱིས་ ཧ་མ་ལས་བཏོན་བཏང་ཡོད་པའི་ཤོག་ལེབ་ཅིག་ ལོག་གསར་བཟོ་འབདཝ་ཨིན་པས།'''
ཁྱོད་ཀྱིས་ ཤོག་ལེབ་འདི་འཕྲོ་མཐུད་དེ་ཞུན་དག་འབད་ནི་གི་འོས་འབབ་ཡོད་མེད་བལྟ་དགོ།
སྟབས་བདེ་ནིའི་དོན་ལས་ ཤོག་ལེབ་ཀྱི་བཏོན་གཏང་ལོག་འདི་ ནཱ་ལུ་བྱིན་ཏེ་ཡོད།:",
@@ -283,7 +283,7 @@ $messages = array(
'viewpagelogs' => 'ཤོག་ལེབ་འདི་གི་ལོགསི་སྟོན།',
'currentrev' => 'ད་ལྟོའི་བསྐྱར་ཞིབ།',
'revisionasof' => '$1 གི་བསྐྱར་ཞིབ།',
-'revision-info' => '$2 གིས་ $1 ཚུན་གྱི་བསྐྱར་ཞིབ།', # Additionally available: $3: revision id
+'revision-info' => '$2 གིས་ $1 ཚུན་གྱི་བསྐྱར་ཞིབ།',
'previousrevision' => '←བསྐྱར་ཞིབ་རྙིངམ།',
'nextrevision' => 'བསྐྱར་ཞིབ་གསརཔ་→',
'currentrevisionlink' => 'ད་ལྟོའི་བསྐྱར་ཞིབ།',
@@ -298,7 +298,7 @@ $messages = array(
'histlast' => 'གསར་ཤོས།',
# Revision feed
-'history-feed-item-nocomment' => '$༢ ལུ་ $༡', # user at time
+'history-feed-item-nocomment' => '$༢ ལུ་ $༡',
# Diffs
'history-title' => '"$1" གི་བསྐྱར་ཞིབ་སྤྱོད་ཤུལ།',
@@ -309,17 +309,17 @@ $messages = array(
'diff-multi' => '({{PLURAL:$1|བར་ནའི་བསྐྱར་ཞིབ་གཅིག་|$1 བར་ནའི་བསྐྱར་ཞིབ་ཚུ་}} མ་སྟོན་པས།)',
# Search results
-'noexactmatch' => "'''མགོ་མིང་ \"\$1\" ཅན་མའི་ཤོག་ལེབ་མེད།'''
-ཁྱོད་ཀྱིས་ [[:\$1|ཤོག་ལེབ་འདི་ གསརཔ་བཟོ་ཚུགས།]]",
-'prevn' => 'ཧེ་མའི་ $1',
-'nextn' => 'ཤུལ་མའི་ $1',
-'viewprevnext' => '($1) ($2) ($3) སྟོན།',
+'prevn' => 'ཧེ་མའི་ {{PLURAL:$1|$1}}',
+'nextn' => 'ཤུལ་མའི་ {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) སྟོན།',
'searchhelp-url' => 'Help:ནང་དོན།',
'powersearch' => 'མཐོ་རིམ་ཅན་གྱི་འཚོལ་ཞིབ།',
# Preferences page
-'preferences' => 'དགའ་གདམ།',
-'mypreferences' => 'ངེ་གི་དགའ་གདམ།',
+'preferences' => 'དགའ་གདམ།',
+'mypreferences' => 'ངེ་གི་དགའ་གདམ།',
+'yourrealname' => 'མིང་ངོ་མ:',
+'prefs-help-realname' => 'མིང་ངོ་མ་འདི་ གདམ་ཁ་ཅན་ཨིན་རུང་ ཐོ་བཀོད་འབད་བ་ཅིན་ ཁྱོད་རའི་ལཱ་གི་ཁྱད་བརྗོད་ཀྱི་དོན་ལུ་ ལག་ལེན་འཐབ་འོང་།',
'grouppage-sysop' => '{{ns:project}}:བདག་སྐྱོང་པ།',
@@ -350,6 +350,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'འབྲེལ་བ་ཅན་གྱི་བསྒྱུར་བཅོས།',
+'recentchangeslinked-feed' => 'འབྲེལ་བ་ཅན་གྱི་བསྒྱུར་བཅོས།',
+'recentchangeslinked-toolbox' => 'འབྲེལ་བ་ཅན་གྱི་བསྒྱུར་བཅོས།',
'recentchangeslinked-title' => '"$1" དང་འབྲེལ་བ་ཡོད་པའི་བསྒྱུར་བཅོས་ཚུ།',
'recentchangeslinked-noresult' => 'དུས་བཀོད་ཀྱི་སྐབས་ལུ་ འབྲེལ་མཐུད་ཅན་གྱི་ཤོག་ལེབ་ལུ་བསྒྱུར་བཅོས་མེད།',
'recentchangeslinked-summary' => "དམིགས་བསལ་ཤོག་ལེབ་འདི་གིས་ འབྲེལ་མཐུད་ཅན་གྱི་ཤོག་ལེབ་གུ་ མཇུག་ཀྱི་བསྒྱུར་བཅོས་ཚུ་ ཐོ་བཀོད་འབདཝ་ཨིན།
@@ -365,6 +367,7 @@ $messages = array(
'listfiles' => 'ཡིག་སྣོད་ཐོ་ཡིག།',
# File description page
+'file-anchor-link' => 'ཡིག་སྣོད།',
'filehist' => 'ཡིག་སྣོད་སྤྱོད་ཤུལ།',
'filehist-help' => 'ཡིག་སྣོད་འདི་ དེ་བསྒང་སྟོན་དོ་བཟུམ་སྦེ་ བལྟ་ནི་གི་དོན་ལུ་ ཚེས་གྲངས་/ཆུ་ཚོད་གུ་ ཨེབ་གཏང་འབད།',
'filehist-current' => 'ད་ལྟོ།',
@@ -376,9 +379,7 @@ $messages = array(
'imagelinks' => 'འབྲེལ་ལམ།',
'linkstoimage' => 'འོག་གི་ཤོག་ལེབ་ཚུ་ ཡིག་སྣོད་འདི་དང་འབྲེལ་བ་འདུག:',
'nolinkstoimage' => 'ཡིག་སྣོད་དེ་དང་འབྲེལ་བ་ཡོད་པའི་ཤོག་ལེབ་མིན་འདུག།',
-'sharedupload' => 'ཡིག་སྣོད་འདི་རུབ་སྤྱོད་ཅན་གྱི་སྐྱེལ་བཙུགས་ཅིག་ཨིནམ་ལས་ ལས་འགུལ་གཞན་ཚུ་གིས་ལག་ལེན་འཐབ་འོང་།', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'དེ་བཟུམ་གྱི་པར་སྣོད་མིན་འདུག་ ཁྱོད་ཀྱིས་ $1',
-'noimage-linktext' => 'དེ་ སྐྱེལ་བཙུགས་འབད།',
+'sharedupload' => 'ཡིག་སྣོད་འདི་རུབ་སྤྱོད་ཅན་གྱི་སྐྱེལ་བཙུགས་ཅིག་ཨིནམ་ལས་ ལས་འགུལ་གཞན་ཚུ་གིས་ལག་ལེན་འཐབ་འོང་།',
'uploadnewversion-linktext' => 'ཡིག་སྣོད་དེ་གི་ཐོ་རིམ་གསརཔ་ཅིག་ སྐྱེལ་བཙུགས་འབད།',
# MIME search
@@ -507,7 +508,6 @@ $messages = array(
'protectexpiry' => 'དུས་ཡོལ:',
'protect_expiry_invalid' => 'དུས་ཡོལ་དུས་ཚོད་འདི་ ནུས་མེད་ཨིན་པས།',
'protect_expiry_old' => 'དུས་ཡོལ་དུས་ཚོད་འདི་ཚར་ནུག།',
-'protect-unchain' => 'སྤོ་བཤུད་ཀྱི་གནང་བ་ཕྱེ།',
'protect-text' => "ཁྱོད་ཀྱིས་ ནཱ་ལུ་ ཤོག་ལེབ་ '''<nowiki>$1</nowiki>''' གི་དོན་ལུ་ ཉེན་སྐྱོབ་གནས་རིམ་འདི་བསྒྱུར་བཅོས་རྐྱབ་བཏུབ།",
'protect-locked-access' => "ཁྱོད་ཀྱི་རྩིས་ཐོ་ནང་ ཤོག་ལེབ་ཉེན་སྐྱོབ་གནས་རིམ་བསྒྱུར་བཅོས་འབད་ནིའི་གནང་བ་མིན་འདུག།
ད་ལྟོ་ནཱ་ལུ་ཡོད་པའི་སྒྲིག་སྟངས་འདི་ ཤོག་ལེབ་ '''$1''' གི་དོན་ལུ་ཨིན་:",
@@ -521,7 +521,7 @@ $messages = array(
'protect-expiring' => '$1 (UTC) དུས་ཡོལཝ་ཨིན།',
'protect-cascade' => 'ཤོག་ལེབ་(ཀེསི་ཀེ་ཌིང་ཉེན་སྐྱོབ་) ཀྱི་གྲངས་སུ་ཚུད་མི་ཉེན་སྐྱོབ་ཤོག་ལེབ།',
'protect-cantedit' => 'ཁྱོད་ལུ་ ཞུན་དག་གི་གནང་བ་མེདཔ་ལས་ ཤོག་ལེབ་འདི་གི་ཉེན་སྐྱོབ་གནས་རིམ་བསྒྱུར་མི་ཚུགས།',
-'protect-expiry-options' => 'ཆུ་ཚོད་ ༢:2 hours,ཉིནམ་ ༡:1 day,ཉིནམ་ ༣:3 days,བདུན་ཕྲག་ ༡:1 week,བདུན་ཕྲག་ ༢:2 weeks,ཟླཝ་ ༡:1 month,ཟླཝ་ ༣:3 months,ཟླཝ་ ༦:6 months,ལོ་ ༡:1 year,ཚད་ལས་འདས་པ་:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'ཆུ་ཚོད་ ༢:2 hours,ཉིནམ་ ༡:1 day,ཉིནམ་ ༣:3 days,བདུན་ཕྲག་ ༡:1 week,བདུན་ཕྲག་ ༢:2 weeks,ཟླཝ་ ༡:1 month,ཟླཝ་ ༣:3 months,ཟླཝ་ ༦:6 months,ལོ་ ༡:1 year,ཚད་ལས་འདས་པ་:infinite',
'restriction-type' => 'གནང་བ:',
'restriction-level' => 'མི་ཆོག་པའི་གནས་རིམ:',
@@ -543,6 +543,7 @@ $messages = array(
'sp-contributions-newbies-sub' => 'རྩིས་ཐོ་གསརཔ་གི་དོན་ལུ།',
'sp-contributions-blocklog' => 'སྡེབ་ཚན་ལོག།',
+'sp-contributions-talk' => 'བློ།',
# What links here
'whatlinkshere' => 'ནཱ་ལུ་ ག་ཅི་འབྲེལ་མཐུད་འོང་ནི་མས།',
@@ -557,7 +558,7 @@ $messages = array(
# Block/unblock
'blockip' => 'ལག་ལེན་པ་བཀག',
-'ipboptions' => 'ཆུ་ཚོད་ ༢:2 hours,ཉིནམ་ ༡:1 day,ཉིནམ་ ༣:3 days,བདུན་ཕྲག་ ༡:1 week,བདུན་ཕྲག་ ༢:2 weeks,ཟླཝ་ ༡:1 month,ཟླཝ་ ༣:3 months,ཟླཝ་ ༦:6 months,ལོ་ ༡:1 year,ཚད་ལས་འདས་པ་:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'ཆུ་ཚོད་ ༢:2 hours,ཉིནམ་ ༡:1 day,ཉིནམ་ ༣:3 days,བདུན་ཕྲག་ ༡:1 week,བདུན་ཕྲག་ ༢:2 weeks,ཟླཝ་ ༡:1 month,ཟླཝ་ ༣:3 months,ཟླཝ་ ༦:6 months,ལོ་ ༡:1 year,ཚད་ལས་འདས་པ་:infinite',
'ipblocklist' => 'བཀག་ཆ་འབད་ཡོད་པའི ཨའི་པི་ཁ་བྱང་དང་ལག་ལེན་པའི་མིང།',
'blocklink' => 'བཀག།',
'unblocklink' => 'བཀག་བཤོལ་',
@@ -585,7 +586,7 @@ $messages = array(
'move-watch' => 'ཤོག་ལེབ་འདི་ལྟ།',
'movepagebtn' => 'ཤོག་ལེབ་སྤོ་བཤུད་འབད།',
'pagemovedsub' => 'སྤོ་བཤུད་མཐར་འཁྱོལ་བྱུང་ཡོདཔ།',
-'movepage-moved' => '\'\'\'"$1" འདི་ "$2"\'\'\' ལུ་ སྤོ་བཤུད་འབད་ནུག།', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" འདི་ "$2"\'\'\' ལུ་ སྤོ་བཤུད་འབད་ནུག།',
'articleexists' => 'ཤོག་ལེབ་མིང་འདི་ཧེ་མ་ལས་ཡོདཔ་ཨིནམ་དང་ ཡང་ན་ ཁྱོད་ཀྱིས་གདམ་ཁ་བརྐྱབས་མི་མིང་འདི་ ནུས་མེད་ཨིན་པས།
མིང་གཞན་ཅིག་ གདམ་ཁ་རྐྱབས།',
'talkexists' => "'''ཤོག་ལེབ་འདི་ལེགས་ཤོམ་པས་སྤོ་བཤུད་འབད་ཡོད་རུང་ གཅིག་ཧེ་མ་ལས་ར་ མགོ་མིང་གསརཔ་གུ་ཡོདཔ་ལས་ བློ་ཤོག་འདི་སྤོ་བཤུད་འབད་མ་ཚུགས།
@@ -687,7 +688,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'ཕྱིའི་གློག་རིམ་ལག་ལེན་འཐབ་ཐོག་ལས་ ཡིག་སྣོད་འདི་ཞུན་དག་འབད།',
@@ -704,7 +705,7 @@ $messages = array(
'watchlisttools-raw' => 'རགས་ཙམ་གྱི་བལྟ་ཞིབ་ཐོ་ཡིག་ ཞུན་དག་འབད་',
# Special:Version
-'version' => 'ཐོན་རིམ།', # Not used as normal message but as header for the special page itself
+'version' => 'ཐོན་རིམ།',
# Special:SpecialPages
'specialpages' => 'དམིགས་བསལ་ཤོག་ལེབ།',
diff --git a/languages/messages/MessagesEe.php b/languages/messages/MessagesEe.php
index b06bee17..e870fd39 100644
--- a/languages/messages/MessagesEe.php
+++ b/languages/messages/MessagesEe.php
@@ -78,18 +78,30 @@ $messages = array(
# Categories related messages
'listingcontinuesabbrev' => 'yi dzi',
-'about' => 'Ŋutinya',
-'newwindow' => '(eʋua fesre yeye)',
-'cancel' => 'Dzudzɔ etɔtrɔ',
+'about' => 'Ŋutinya',
+'newwindow' => '(eʋua fesre yeye)',
+'cancel' => 'Dzudzɔ etɔtrɔ',
+'mypage' => 'Axa nye',
+'mytalk' => 'Nyeƒe nyamedzroƒe',
+'navigation' => 'Mɔtabiala',
+'and' => '&#32;kpakple',
+
+# Cologne Blue skin
'qbfind' => 'Di',
'qbedit' => 'Trɔ asi le eŋu',
'qbpageoptions' => 'Axa sia',
'qbmyoptions' => 'Nyeƒe axawo',
'qbspecialpages' => 'Axa tɔxewo',
-'mypage' => 'Axa nye',
-'mytalk' => 'Nyeƒe nyamedzroƒe',
-'navigation' => 'Mɔtabiala',
-'and' => '&#32;kpakple',
+
+# Vector skin
+'vector-action-delete' => 'Tutui',
+'vector-action-move' => 'Ɖɔli eƒe nɔƒe',
+'vector-namespace-main' => 'Axa',
+'vector-view-create' => 'Dze egɔme',
+'vector-view-edit' => 'Trɔ asi le eŋu',
+'vector-view-history' => 'Kpɔ xoxoawo',
+'vector-view-view' => 'Xlẽ',
+'vector-view-viewsource' => 'Kpɔ alesi woŋlɔe',
'errorpagetitle' => 'Vodada',
'returnto' => 'Gbugbɔ yi $1.',
@@ -119,7 +131,7 @@ $messages = array(
'toolbox' => 'Dɔwɔnuɖaka',
'otherlanguages' => 'Le gbe bubuwo me',
'redirectedfrom' => '(Woɖo wò ɖe afii tso $1)',
-'lastmodifiedat' => 'Wó ɖɔ axa sia ɖo susue le $2 le ŋkeke $1 dzi.', # $1 date, $2 time
+'lastmodifiedat' => 'Wó ɖɔ axa sia ɖo susue le $2 le ŋkeke $1 dzi.',
'viewcount' => 'Wokpɔ axa sia zi {{PLURAL:$1|ɖeka|$1 sɔ̃}}.',
'jumpto' => 'Dzo yi:',
'jumptonavigation' => 'kuɖɔɖoɖo',
@@ -129,7 +141,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} ŋutinya',
'aboutpage' => 'Project:Ŋutinya',
'copyright' => 'Nusiwo le afii le $1 mɔɖeɖea te.',
-'copyrightpagename' => '{{SITENAME}} mɔɖeɖewo',
'copyrightpage' => '{{ns:project}}:Mɔɖeɖewo',
'currentevents' => 'Amaneɛ',
'currentevents-url' => 'Project:Nusiwo le dzɔdzɔm',
@@ -171,12 +182,13 @@ $messages = array(
# General errors
'error' => 'Vodada',
'badarticleerror' => 'Wòmateŋu awɔ nusia le axa sia dzi o.',
+'cannotdelete' => 'Womateŋu atutu axa sia alo axa "$1" o.
+Ɖewomahĩ ame aɖe tutui xoxo.',
'badtitle' => 'Tanya gbegblẽ',
'viewsource' => 'Kpɔ alesi wowɔe',
'viewsourcefor' => '$1 tɔwo',
# Login and logout pages
-'logouttitle' => 'Do le eme',
'login' => 'Ge ɖe eme',
'nav-login-createaccount' => 'Geɖe me / Ŋlɔ ŋkɔ',
'userlogin' => 'Ge ɖe eme / ŋlɔ ŋkɔ daɖi',
@@ -187,10 +199,6 @@ $messages = array(
'createaccount' => 'Ŋlɔ ŋkɔ daɖi',
'gotaccount' => "Wò ŋlɔ ŋkɔ xoxoa? '''$1'''.",
'gotaccountlink' => 'Ge ɖe eme',
-'yourlanguage' => 'Gbe:',
-'yournick' => 'Dzesi',
-'gender-male' => 'Ŋutsu',
-'gender-female' => 'Nyɔnu',
'loginsuccesstitle' => 'Wò ge ɖe eme azɔ̃.',
'loginsuccess' => "'''Wò le {{SITENAME}} me fifia abe \"\$1\" ene.'''",
'nouserspecified' => 'Elebe na ŋlɔ ŋkɔ si wò zãna',
@@ -222,31 +230,37 @@ Le esiata la, ''IP address'' sia zãlawo mekpɔ mɔ aŋlɔ ŋkɔ bubuwo fifia o.
Wo ŋlɔe xoxo.',
# History pages
-'revisionasof' => 'Tataa le $1',
-'revision-info' => 'Tataa le $1 si $2 wɔ', # Additionally available: $3: revision id
-'previousrevision' => '← Tata xoxoa',
-'nextrevision' => 'Tata yeyea →',
-'currentrevisionlink' => 'Tata susuea',
-'cur' => 'yeyea',
-'next' => 'eyome',
-'last' => 'mamlea',
-'page_first' => 'gbãtɔ',
-'page_last' => 'mamlea',
-'histlegend' => "Vovo tatia: de dzesi tata siwo ƒe vovototowo wò di be yea kpɔ ɖa eye na tia 'enter' alo kpe si le eɖome.<br/>
+'currentrev-asof' => 'Tata susue le $1 dzi',
+'revisionasof' => 'Tataa le $1',
+'revision-info' => 'Tataa le $1 si $2 wɔ',
+'previousrevision' => '← Tata xoxoa',
+'nextrevision' => 'Tata yeyea →',
+'currentrevisionlink' => 'Tata susuea',
+'cur' => 'yeyea',
+'next' => 'eyome',
+'last' => 'mamlea',
+'page_first' => 'gbãtɔ',
+'page_last' => 'mamlea',
+'histlegend' => "Vovo tatia: de dzesi tata siwo ƒe vovototowo wò di be yea kpɔ ɖa eye na tia 'enter' alo kpe si le eɖome.<br/>
Gɔmeɖeɖe: '''({{int:cur}})''' = vovototo tso tata mamlea gbɔ, '''({{int:last}})''' = vovototo tso tata si do ŋgɔ gbɔ, '''{{int:minoreditletter}}''' = tɔtrɔ sue.",
-'histfirst' => 'Xoxoɔwu',
-'histlast' => 'Yeyeɛwu',
+'history-show-deleted' => 'Esiwo wotutu ko',
+'histfirst' => 'Xoxoɔwu',
+'histlast' => 'Yeyeɛwu',
# Revision feed
-'history-feed-item-nocomment' => '$1 le $2', # user at time
+'history-feed-item-nocomment' => '$1 le $2',
'history-feed-empty' => 'Axa si dim wòle meli o.
Dewomahĩ, wotutui le wiki sia dzi alo wotrɔ eƒe ŋkɔ.
Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
# Revision deletion
-'rev-delundel' => 'fia/ɣla',
-'revdelete-hid' => 'ɣla $1',
-'revdelete-unhid' => 'megaɣla $1 o',
+'rev-delundel' => 'fia/ɣla',
+'rev-showdeleted' => 'fia',
+'revdelete-radio-same' => '(megatrɔe o)',
+'revdelete-radio-set' => 'Yo',
+'revdelete-radio-unset' => 'Kpao',
+'revdelete-hid' => 'ɣla $1',
+'revdelete-unhid' => 'megaɣla $1 o',
# Diffs
'history-title' => '"$1" ƒe tata xoxoawo',
@@ -259,14 +273,11 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
'searchresults-title' => 'Nusiwo wofɔ le "$1" didi me',
'searchsubtitle' => 'Nusi wòdi enye \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|axawo katã siwo dze egɔme kple "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|axawo katã siwo kuɖe "$1" ŋu]]).',
'searchsubtitleinvalid' => "Wòdi '''$1'''",
-'noexactmatch' => "'''Tanya \"\$1\" mesɔ kple axa aɖeke tɔ o.'''
-Wòateŋu [[:\$1|adze axa sia gɔme]].",
-'noexactmatch-nocreate' => "'''Tanya \"\$1\" mesɔ kple axa aɖeke tɔ o.'''",
'notitlematches' => 'Mesɔ axa aɖeke ƒe tanya o',
'notextmatches' => 'Axa aɖeke ƒe nyawo mesɔ kple nyasiawo o.',
-'prevn' => '$1 do ŋgɔ',
-'nextn' => '$1 yometɔwo',
-'viewprevnext' => 'Kpɔ ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} do ŋgɔ',
+'nextn' => '{{PLURAL:$1|$1}} yometɔwo',
+'viewprevnext' => 'Kpɔ ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Axa si ŋkɔ enye \"[[:\$1]]\" le wiki sia dzi'''",
'searchmenu-new' => "'''Dze axa \"[[:\$1]]\" sia ŋlɔm ɖe wiki la dzi!'''",
'searchprofile-everything' => 'Nuɖesiaɖe',
@@ -276,15 +287,21 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'search-suggest' => 'Ɖe wò be: $1',
'search-interwiki-more' => '(kɔ kpe ɖe eŋu)',
'searchall' => 'wokatã',
-'showingresultstotal' => "Wofia {{PLURAL:$4|wò didi '''$1''' tso '''$3''' me|wò didiwo '''$1 - $2''' tso '''$3''' me}} le afii",
'powersearch' => 'Dii de eme',
'powersearch-field' => 'Di',
+'powersearch-toggleall' => 'Wokatã',
# Preferences page
-'preferences' => 'Didiwo',
-'mypreferences' => 'Nyeƒe didiwo',
-'skin-preview' => 'Kpɔe do ŋgɔ',
-'timezoneregion-africa' => 'Afrika',
+'preferences' => 'Didiwo',
+'mypreferences' => 'Nyeƒe didiwo',
+'skin-preview' => 'Kpɔe do ŋgɔ',
+'prefs-datetime' => 'Ŋkeke kple gaƒoƒo',
+'prefs-watchlist-days-max' => 'Vaseɖe ŋkeke 7',
+'timezoneregion-africa' => 'Afrika',
+'yourlanguage' => 'Gbe:',
+'yournick' => 'Dzesi',
+'gender-male' => 'Ŋutsu',
+'gender-female' => 'Nyɔnu',
# Groups
'group' => 'Hame:',
@@ -300,7 +317,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'recentchanges' => 'Tɔtrɔ yeyewo',
'recentchanges-legend' => 'Tatiawo na tɔtrɔ yeyewo',
'rcnote' => "Afisia wofia {{PLURAL:$1|tɔtrɔ '''1''' susue|tɔtrɔ '''$1''' susuewo}} le {{PLURAL:$2|ŋkeke si|ŋkeke '''$2''' mamleawo siwo}} vayi la me, le $5, $4.",
-'rcnotefrom' => 'Tɔtrɔwo siwo wowɔ tso <b>$2</b> (wofia vaseɖe <b>$1</b>) le afii.',
+'rcnotefrom' => "Tɔtrɔwo siwo wowɔ tso '''$2''' (wofia vaseɖe '''$1''') le afii.",
'rclistfrom' => 'Fia tɔtrɔ yeyewo tso $1',
'rcshowhideminor' => '$1 tɔtrɔ suewo',
'rcshowhidebots' => '$1 bɔtwo',
@@ -316,22 +333,25 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'newpageletter' => 'Y',
# Recent changes linked
-'recentchangeslinked' => 'Tɔtrɔ siwo kaa afii',
-'recentchangeslinked-title' => 'Tɔtrɔ siwo ku ɖe "$1" ŋu',
-'recentchangeslinked-page' => 'Axaa ƒe ŋkɔ',
+'recentchangeslinked' => 'Tɔtrɔ siwo kaa afii',
+'recentchangeslinked-feed' => 'Tɔtrɔ siwo kaa afii',
+'recentchangeslinked-toolbox' => 'Tɔtrɔ siwo kaa afii',
+'recentchangeslinked-title' => 'Tɔtrɔ siwo ku ɖe "$1" ŋu',
+'recentchangeslinked-page' => 'Axaa ƒe ŋkɔ',
# Upload
'upload' => 'Ɖo agbalẽ ɖa',
'uploadbtn' => 'Ɖo agbalẽ ɖa',
# File description page
+'file-anchor-link' => 'Agbalẽ',
'filehist' => 'Axa sia ƒe tata xoxoawo',
'filehist-help' => 'Tia ŋkeke/gaƒoƒo ɖeka ne wòadi be yea kpɔ axa sia ƒe tata le ɣemaɣi',
'filehist-deleteone' => 'tutui',
'filehist-datetime' => 'Ŋkeke/Gaƒoƒo',
'filehist-user' => 'Ezãla',
'linkstoimage' => 'Axa {{PLURAL:$1|sia|$1 siawo}} ku ɖe agbalẽ sia ŋu.',
-'sharedupload' => "Agbalɛ̃ sia tso $1 eye dɔ (''alo project'') bubuawo woateŋu azãe fãa.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => "Agbalɛ̃ sia tso $1 eye dɔ (''alo project'') bubuawo woateŋu azãe fãa.",
# File deletion
'filedelete-submit' => 'Tutui',
@@ -346,8 +366,8 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
# Statistics
'statistics' => 'Akɔntawo',
-'brokenredirects-edit' => '(trɔ asi le eŋu)',
-'brokenredirects-delete' => '(tutui)',
+'brokenredirects-edit' => 'trɔ asi le eŋu',
+'brokenredirects-delete' => 'tutui',
'fewestrevisions' => 'Axawo siwo womeɖɔɖo zã o',
@@ -420,7 +440,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'protect-level-autoconfirmed' => 'Xemɔ na ame yeyewo kple ŋkɔmaŋlɔlawo',
'protect-expiring' => 'ewunu $1 (UTC)',
'protect-existing-expiry' => 'Nuwuwu gaƒoƒo: $3, $2"',
-'protect-expiry-options' => 'gaƒoƒo 1:1 hour,ŋkeke 1:1 day,kɔsiɖa 1:1 week,kɔsiɖa 2:2 weeks,ɣleti 1:1 month,ɣleti 3:3 months,ɣleti 6:6 months,ƒe 1:1 year,tegbe:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'gaƒoƒo 1:1 hour,ŋkeke 1:1 day,kɔsiɖa 1:1 week,kɔsiɖa 2:2 weeks,ɣleti 1:1 month,ɣleti 3:3 months,ɣleti 6:6 months,ƒe 1:1 year,tegbe:infinite',
'restriction-type' => 'Mɔɖeɖe:',
# Restrictions (nouns)
@@ -431,6 +451,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
# Undelete
'undelete' => 'Kpɔ axawo si wotutu',
'viewdeletedpage' => 'Kpɔ axawo si wotutu',
+'undeleteviewlink' => 'kpɔe',
'undelete-search-submit' => 'Dii',
'undelete-show-file-submit' => 'Yo',
@@ -447,6 +468,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'year' => 'Tso ƒe (kple do ŋgɔ):',
'sp-contributions-newbies' => 'Fia ŋkɔŋlɔla yeyewo ƒe ɖɔɖɔɖowo ko.',
+'sp-contributions-talk' => 'Nyamedzroƒe',
'sp-contributions-search' => 'Di nuŋɔŋlɔwo',
'sp-contributions-submit' => 'Dii',
@@ -463,7 +485,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'blockip' => 'Xe mɔ na ezãla sia',
'blockip-legend' => 'Xe mɔ na ezãla sia',
'ipbexpiry' => 'Nuwuwu:',
-'ipboptions' => 'gaƒoƒo 2:2 hours,ŋkeke 1:1 day,ŋkeke 3:3 days,kɔsiɖa 1:1 week,kɔsiɖa 2:2 weeks,ɣleti 1:1 month,ɣleti 3:3 months,ɣleti 6:6 months,ƒe 1:1 year,tegbe:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'gaƒoƒo 2:2 hours,ŋkeke 1:1 day,ŋkeke 3:3 days,kɔsiɖa 1:1 week,kɔsiɖa 2:2 weeks,ɣleti 1:1 month,ɣleti 3:3 months,ɣleti 6:6 months,ƒe 1:1 year,tegbe:infinite',
'blockipsuccesssub' => 'Mɔxexea dze edzi',
'ipb-unblock-addr' => 'Ɖe $1 ƒe mɔxexe ɖa',
'ipb-blocklist' => 'Kpɔ mɔxexe siwo li xoxo',
@@ -472,6 +494,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'ipblocklist-submit' => 'Dii',
'blocklistline' => '$1, $2 xemɔ na $3 ($4)',
'infiniteblock' => 'tegbee',
+'expiringblock' => 'ewunu le gaƒoƒo $2 le ŋkeke $1 dzi',
'createaccountblock' => 'woxe mɔ na ŋkɔa ŋɔŋlɔ',
'blocklink' => 'xemɔ',
'unblocklink' => 'ɖe mɔxexe',
@@ -487,7 +510,7 @@ Wòateŋu [[:\$1|adze axa sia gɔme]].",
'move-watch' => 'Le ŋku ɖe axa sia ŋu',
'movepagebtn' => 'Ɖɔli eƒe nɔƒe',
'pagemovedsub' => 'Axaa ƒe hehe dze edzi',
-'movepage-moved' => '\'\'\'Wohe "$1" vayi "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Wohe "$1" vayi "$2"\'\'\'',
'articleexists' => 'Tanya alo ŋkɔ sia nye axa bubu aɖe tɔ xoxo, alo eda se dzi.
Tia ŋkɔ alo tanya bubu.',
'cantmove-titleprotected' => 'Wòmateŋu ahe axa aɖeke va afii o, elabena wo xemɔ na tanya sia ƒe ŋɔŋlɔ',
@@ -498,7 +521,9 @@ Tia ŋkɔ alo tanya bubu.',
'export' => 'Ɖo axa siawo ɖa',
# Namespace 8 related
-'allmessages' => 'Gbeƒãɖeɖewo',
+'allmessages' => 'Gbeƒãɖeɖewo',
+'allmessages-filter-all' => 'Wokatã',
+'allmessages-filter-submit' => 'Yi',
# Thumbnails
'thumbnail-more' => 'Ne lolo ɖe edzi',
@@ -521,6 +546,7 @@ Wòateŋu akpɔ alesi woŋlɔe.',
'tooltip-search-go' => 'Yi axa si ƒe ŋkɔ enye esia ne woŋlɔe xoxo',
'tooltip-search-fulltext' => 'Di nyasiawo le axawo me.',
'tooltip-n-mainpage' => 'Yi axa si do ŋgɔ',
+'tooltip-n-mainpage-description' => 'Yi axa si do ŋgɔ',
'tooltip-n-recentchanges' => 'Tɔtrɔ yeyewo le wiki sia me.',
'tooltip-n-randompage' => 'Kpɔ axa ɖesiaɖe ko',
'tooltip-n-help' => 'Nuwo srɔ̃ƒe',
@@ -572,7 +598,7 @@ Wòateŋu akpɔ alesi woŋlɔe.',
'watchlisttools-view' => 'Kpɔ tɔtrɔ siwo hiã la',
# Special:Version
-'version' => 'Tata', # Not used as normal message but as header for the special page itself
+'version' => 'Tata',
# Special:FilePath
'filepath-submit' => 'Yi',
diff --git a/languages/messages/MessagesEl.php b/languages/messages/MessagesEl.php
index aab20c7d..ec60d28f 100644
--- a/languages/messages/MessagesEl.php
+++ b/languages/messages/MessagesEl.php
@@ -24,6 +24,7 @@
* @author Urhixidur
* @author ZaDiak
* @author Απεργός
+ * @author Περίεργος
* @author לערי ריינהארט
*/
@@ -120,7 +121,7 @@ $specialPageAliases = array(
'Protectedtitles' => array( 'ΠροστετευμένοιΤίτλοι' ),
'Allpages' => array( 'ΌλεςΟιΣελίδες' ),
'Prefixindex' => array( 'ΕυρετήριοΠροθεμάτων' ),
- 'Ipblocklist' => array( 'ΦραγώνΚατάλογος', 'ΚατάλογοςΦραγών', 'IPΦραγώνΚατάλογος' ),
+ 'Ipblocklist' => array( 'ΚατάλογοςΦραγών', 'ΦραγώνΚατάλογος', 'ΚατάλογοςΦραγώνIP' ),
'Specialpages' => array( 'ΕιδικέςΣελίδες' ),
'Contributions' => array( 'Συνεισφορές' ),
'Emailuser' => array( 'EmailΧρήστη' ),
@@ -164,11 +165,12 @@ $specialPageAliases = array(
'LinkSearch' => array( 'ΣυνδέσμουΑναζήτηση' ),
'DeletedContributions' => array( 'ΔιαγραμμένεςΣυνεισφορές' ),
'Tags' => array( 'Ετικέτες' ),
+ 'Activeusers' => array( 'ΕνεργοίΧρήστες' ),
);
$fallback8bitEncoding = 'iso-8859-7';
$separatorTransformTable = array(',' => '.', '.' => ',' );
-$linkTrail = '/^([a-z]+)(.*)$/sD';
+$linkTrail = '/^([a-zαβγδεζηθικλμνξοπρστυφχψωςΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίόύώϊϋΐΰΆΈΉΊΌΎΏΪΫ]+)(.*)$/sDu';
$datePreferences = array(
@@ -205,7 +207,8 @@ $magicWords = array(
'toc' => array( '0', '__ΠΠ__', '__TOC__' ),
'noeditsection' => array( '0', '__ΧΩΡΙΣΕΠΕΞΕΝΟΤ__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__ΧΩΡΙΣΚΕΦΑΛΙΔΑ__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΟΝΟΜΑ', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΓΕΝΙΚΗ', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΣΥΝΤ', 'CURRENTMONTHABBREV' ),
@@ -215,7 +218,8 @@ $magicWords = array(
'currentyear' => array( '1', 'ΤΡΕΧΟΝΕΤΟΣ', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'ΤΡΕΧΩΝΧΡΟΝΟΣ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ΤΡΕΧΟΥΣΑΩΡΑ', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣ', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣ1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣΟΝΟΜΑ', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣΓΕΝΙΚΗ', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'ΤΟΠΙΚΟΣΜΗΝΑΣΣΥΝΤ', 'LOCALMONTHABBREV' ),
@@ -253,8 +257,8 @@ $magicWords = array(
'msg' => array( '0', 'ΚΕΙΜΕΝΟ:', 'MSG:' ),
'subst' => array( '0', 'ΑΛΛΑΓΗ:', 'SUBST:' ),
'msgnw' => array( '0', 'ΑΠΛΟΚΕΙΜΕΝΟ:', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'μινιατούρα', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'μινιατούρα=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_thumbnail' => array( '1', 'μικρογραφία', 'μινιατούρα', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'μικρογραφία=$1', 'μινιατούρα=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'δεξιά', 'right' ),
'img_left' => array( '1', 'αριστερά', 'left' ),
'img_none' => array( '1', 'καθόλου', 'none' ),
@@ -366,6 +370,7 @@ $messages = array(
'tog-enotifminoredits' => 'Ειδοποίηση με e-mail και για τις αλλαγές μικρής κλίμακας σε αυτή τη σελίδα',
'tog-enotifrevealaddr' => 'Εμφάνιση της ηλεκτρονικής μου διεύθυνσης στις ειδοποιήσεις που μου αποστέλλονται.',
'tog-shownumberswatching' => 'Εμφάνιση του αριθμού των συνδεδεμένων χρηστών',
+'tog-oldsig' => 'Προεπισκόπηση της υπάρχουσας υπογραφής:',
'tog-fancysig' => 'Μεταχείριση υπογραφής ως κείμενο wiki (χωρίς έναν αυτόματο σύνδεσμο)',
'tog-externaleditor' => 'Εξ αρχής χρήση εξωτερικού επεξεργαστή κειμένου',
'tog-externaldiff' => 'Εξ αρχής χρήση εξωτερικού λογισμικού αντιπαραβολής (diffing)',
@@ -389,6 +394,13 @@ $messages = array(
'underline-never' => 'Ποτέ',
'underline-default' => 'Προεπιλογή του browser',
+# Font style option in Special:Preferences
+'editfont-style' => 'Τύπος γραμματοσειράς της περιοχής επεξεργασίας:',
+'editfont-default' => 'Χρησιμοποίηση των προεπιλογών του πλοηγού',
+'editfont-monospace' => 'Γραμματοσειρά με σταθερό πλάτος χαρακτήρων',
+'editfont-sansserif' => 'Γραμματοσειρά σαν-σερίφ',
+'editfont-serif' => 'Γραμματοσειρά σερίφ',
+
# Dates
'sunday' => 'Κυριακή',
'monday' => 'Δευτέρα',
@@ -448,7 +460,7 @@ $messages = array(
'category-media-header' => 'Πολυμέσα στην κατηγορία «$1»',
'category-empty' => "''Αυτή η κατηγορία δεν περιέχει άρθρα ή εικόνες.''",
'hidden-categories' => '{{PLURAL:$1|Κρυμμένη κατηγορία|Κρυμμένες κατηγορίες}}',
-'hidden-category-category' => 'Κρυμμένες κατηγορίες', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Κρυμμένες κατηγορίες',
'category-subcat-count' => '{{PLURAL:$2|Αυτή η κατηγορία έχει μόνο την ακόλουθη υποκατηγορία.|Αυτή η κατηγορία έχει {{PLURAL:$1|την ακόλουθη υποκατηγορία|τις ακόλουθες $1 υποκατηγορίες}} , από $2 συνολικά.}}',
'category-subcat-count-limited' => 'Αυτή η κατηγορία περιέχει {{PLURAL:$1|την ακόλουθη υποκατηγορία|$1 τις ακόλουθες υποκατηγορίες}}.',
'category-article-count' => '{{PLURAL:$2|Αυτή η κατηγορία περιέχει μόνο την ακόλουθη σελίδα.|{{PLURAL:$1|Η ακόλουθη σελίδα είναι|Οι ακόλουθες $1 σελίδες είναι}} σε αυτή την κατηγορία, από $2 συνολικά.}}',
@@ -456,14 +468,24 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Αυτή η κατηγορία περιέχει μόνο το ακόλουθο αρχείο.|{{PLURAL:$1|Το ακόλουθο αρχείο είναι|Τα ακόλουθα $1 αρχεία είναι}} σε αυτή την κατηγορία, από $2 συνολικά.}}',
'category-file-count-limited' => '{{PLURAL:$1|Το ακόλουθο αρχείο είναι|Τα ακόλουθα $1 αρχεία είναι}} στην τρέχουσα κατηγορία.',
'listingcontinuesabbrev' => 'συνεχίζεται...',
+'index-category' => 'Συντεταγμένες σελίδες',
+'noindex-category' => 'Ασύντακτες σελίδες',
'mainpagetext' => "'''To λογισμικό MediaWiki εγκαταστάθηκε με επιτυχία.'''",
'mainpagedocfooter' => 'Περισσότερες πληροφορίες σχετικά με τη χρήση και με τη ρύθμιση παραμέτρων θα βρείτε στους συνδέσμους: [http://meta.wikimedia.org/wiki/MediaWiki_localisation Οδηγίες για τροποποίηση του περιβάλλοντος εργασίας] και [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Εγχειρίδιο χρήστη].',
-'about' => 'Σχετικά',
-'article' => 'Σελίδα κειμένου (ή άλλου περιεχομένου)',
-'newwindow' => '(ανοίγει σε ξεχωριστό παράθυρο)',
-'cancel' => 'Ακύρωση',
+'about' => 'Σχετικά',
+'article' => 'Σελίδα κειμένου (ή άλλου περιεχομένου)',
+'newwindow' => '(ανοίγει σε ξεχωριστό παράθυρο)',
+'cancel' => 'Ακύρωση',
+'moredotdotdot' => 'Περισσότερα...',
+'mypage' => 'Η σελίδα μου',
+'mytalk' => 'Οι συζητήσεις μου',
+'anontalk' => 'Οι συζητήσεις αυτής της διεύθυνσης IP',
+'navigation' => 'Πλοήγηση',
+'and' => '&#32;και',
+
+# Cologne Blue skin
'qbfind' => 'Εύρεση',
'qbbrowse' => 'Περιήγηση',
'qbedit' => 'Επεξεργασία',
@@ -471,15 +493,35 @@ $messages = array(
'qbpageinfo' => 'Συμφραζόμενα',
'qbmyoptions' => 'Οι σελίδες μου',
'qbspecialpages' => 'Σελίδες λειτουργιών',
-'moredotdotdot' => 'Περισσότερα...',
-'mypage' => 'Η σελίδα μου',
-'mytalk' => 'Οι συζητήσεις μου',
-'anontalk' => 'Οι συζητήσεις αυτής της διεύθυνσης IP',
-'navigation' => 'Πλοήγηση',
-'and' => '&#32;και',
-
-# Metadata in edit box
-'metadata_help' => 'Μεταδεδομένα:',
+'faq' => 'Συχνές ερωτήσεις (FAQ)',
+'faqpage' => 'Project:Συχνές ερωτήσεις (FAQ)',
+
+# Vector skin
+'vector-action-addsection' => 'Προσθήκη θέματος',
+'vector-action-delete' => 'Διαγραφή',
+'vector-action-move' => 'Μετακίνηση',
+'vector-action-protect' => 'Προστασία',
+'vector-action-undelete' => 'Επαναφορά',
+'vector-action-unprotect' => 'Άρση προστασίας',
+'vector-namespace-category' => 'Κατηγορία',
+'vector-namespace-help' => 'Σελίδα βοήθειας',
+'vector-namespace-image' => 'Αρχείο',
+'vector-namespace-main' => 'Σελίδα',
+'vector-namespace-media' => 'Σελίδα μέσου',
+'vector-namespace-mediawiki' => 'Μήνυμα',
+'vector-namespace-project' => 'Σελίδα εγχειρήματος',
+'vector-namespace-special' => 'Ειδική σελίδα',
+'vector-namespace-talk' => 'Συζήτηση',
+'vector-namespace-template' => 'Πρότυπο',
+'vector-namespace-user' => 'Σελίδα χρήστη',
+'vector-view-create' => 'Δημιουργία',
+'vector-view-edit' => 'Επεξεργασία',
+'vector-view-history' => 'Προβολή ιστορικού',
+'vector-view-view' => 'Ανάγνωση',
+'vector-view-viewsource' => 'Εμφάνιση κώδικα',
+'actions' => 'Ενέργειες',
+'namespaces' => 'Περιοχές ονομάτων',
+'variants' => 'Παραλλαγές',
'errorpagetitle' => 'Σφάλμα',
'returnto' => 'Επιστροφή στη σελίδα $1.',
@@ -529,18 +571,22 @@ $messages = array(
'otherlanguages' => 'Άλλες γλώσσες',
'redirectedfrom' => '(Ανακατεύθυνση από $1)',
'redirectpagesub' => 'Σελίδα ανακατεύθυνσης',
-'lastmodifiedat' => 'Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, $1.',
'viewcount' => 'Αυτή η σελίδα έχει προσπελαστεί {{PLURAL:$1|μια φορά|$1 φορές}}.',
'protectedpage' => 'Κλειδωμένη σελίδα',
'jumpto' => 'Μετάβαση σε:',
'jumptonavigation' => 'πλοήγηση',
'jumptosearch' => 'αναζήτηση',
+'view-pool-error' => 'Λυπούμαστε, οι εξυπηρετητές είναι υπερφορτωμένοι αυτή τη στιγμή.
+Πάρα πολλοί χρήστες προσπαθούν να εμφανίσουν αυτή τη σελίδα.
+Παρακαλούμε περιμένετε λίγο πριν ξαναπροσπαθήσετε να μπείτε σε αυτή τη σελίδα.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Σχετικά με τον ιστότοπο {{SITENAME}}',
'aboutpage' => 'Project:Σχετικά',
'copyright' => 'Το περιεχόμενο είναι διαθέσιμο σύμφωνα με την $1.',
-'copyrightpagename' => '{{SITENAME}} δικαιώματα πνευματικής ιδιοκτησίας',
'copyrightpage' => '{{ns:project}}:Πνευματικά Δικαιώματα',
'currentevents' => 'Τρέχοντα γεγονότα',
'currentevents-url' => 'Project:Τρέχοντα γεγονότα',
@@ -548,8 +594,6 @@ $messages = array(
'disclaimerpage' => 'Project:Γενική αποποίηση',
'edithelp' => 'Βοήθεια σχετικά με την επεξεργασία',
'edithelppage' => 'Help:Επεξεργασία',
-'faq' => 'Συχνές ερωτήσεις (FAQ)',
-'faqpage' => 'Project:Συχνές ερωτήσεις (FAQ)',
'helppage' => 'Help:Περιεχόμενα',
'mainpage' => 'Αρχική σελίδα',
'mainpage-description' => 'Αρχική σελίδα',
@@ -629,10 +673,6 @@ $messages = array(
"$1"
μέσα από τη λειτουργία "$2".
Η βάση δεδομένων επέστρεψε σφάλμα "$3: $4".',
-'noconnect' => 'Η εφαρμογή συνάντησε κάποιες τεχνικές δυσκολίες και δεν μπορεί να επικοινωνήσει με τον διακομιστή της βάσης δεδομένων.<br />
-$1',
-'nodb' => 'Αδύνατη η επιλογή της βάσης δεδομένων $1',
-'cachederror' => 'Το ακόλουθο κείμενο προέρχεται από το προσωρινό αρχείο (cache) και πιθανόν να μην περιέχει τις πιο πρόσφατες αλλαγές.',
'laggedslavemode' => 'Προειδοποίηση: Η σελίδα μπορεί να μην έχει ενημερωθεί με τις πρόσφατες αλλαγές.',
'readonly' => 'Κλειδωμένη βάση δεδομένων',
'enterlockreason' => 'Εξηγήστε τους λόγους για το κλείδωμα και το πότε, κατά την εκτίμησή σας, το κλείδωμα αυτό θα αναιρεθεί.',
@@ -648,6 +688,8 @@ $1',
'readonly_lag' => 'Η βάση δεδομένων έχει κλειδωθεί αυτόματα για να μπορέσουν οι επιμέρους servers των αντιγράφων της βάσης δεδομένων (slaves) να καλύψουν τη διαφορά με τον κεντρικό server του πρωτοτύπου της βάσης (master).',
'internalerror' => 'Εσωτερικό σφάλμα',
'internalerror_info' => 'Εσωτερικό σφάλμα: $1',
+'fileappenderrorread' => 'Δεν ήταν δυνατή η ανάγνωση του "$1" κατά τη διάρκεια της επισύναψης.',
+'fileappenderror' => 'Δεν ήταν δυνατή η προσάρτηση του αρχείου "$1" στο "$2".',
'filecopyerror' => 'Δεν ήταν δυνατή η αντιγραφή του αρχείου "$1" στο "$2".',
'filerenameerror' => 'Δεν είναι δυνατή η μετονομασία του αρχείου "$1" σε "$2".',
'filedeleteerror' => 'Δεν ήταν δυνατή η διαγραφή του αρχείου "$1".',
@@ -657,7 +699,8 @@ $1',
'unexpected' => 'Μη προσδοκώμενη τιμή: "$1"="$2"',
'formerror' => 'Σφάλμα: Δεν ήταν δυνατή η υποβολή της φόρμας!',
'badarticleerror' => 'Η ενέργεια αυτή δεν μπορεί να εκτελεσθεί στη συγκεκριμένη σελίδα.',
-'cannotdelete' => 'Αδύνατη η διαγραφή της συγκεκριμένης σελίδας ή εικόνας (Ενδεχομένως να έχει ήδη διαγραφεί από άλλο χρήστη.)',
+'cannotdelete' => 'Η σελίδα ή αρχείο "$1" δεν μπόρεσε να διαγραφεί.
+Ενδεχομένως να έχει ήδη διαγραφεί από άλλο χρήστη.',
'badtitle' => 'Ακατάλληλος τίτλος',
'badtitletext' => 'Ο τίτλος της σελίδας που ζητήσατε είναι άκυρος ή κενός ή πρόκειται για έναν εσφαλμένα συνδεδεμένο διαγλωσσικό τίτλο (ή εσφαλμένα συνδεδεμένο τίτλο ανάμεσα σε διαφορετικά Wiki).',
'perfcached' => 'Τα δεδομένα που ακολουθούν είναι cached και είνα πιθανόν να μην είναι πλήρως ενημερωμένα:',
@@ -689,7 +732,6 @@ $2',
'virus-unknownscanner' => 'άγνωστο αντιικό:',
# Login and logout pages
-'logouttitle' => 'Έξοδος χρήστη',
'logouttext' => "'''Έχετε αποσυνδεθεί.'''
Μπορείτε να παραμείνετε στο {{SITENAME}} ανώνυμα, ή μπορείτε [[Special:UserLogin|να συνδεθείτε ξανά]] με το ίδιο ή με διαφορετικό (εάν έχετε) όνομα χρήστη.
@@ -697,7 +739,6 @@ $2',
'welcomecreation' => '== Καλώς ήλθατε, $1! ==
Ο λογαριασμός σας έχει δημιουργηθεί.
Μην ξεχάσετε να ρυθμίσετε τις [[Special:Preferences|προτιμήσεις]] σας στο {{SITENAME}}.',
-'loginpagetitle' => 'Είσοδος χρήστη',
'yourname' => 'Όνομα χρήστη:',
'yourpassword' => 'Κωδικός:',
'yourpasswordagain' => 'Πληκτρολογήστε ξανά τον κωδικό',
@@ -708,6 +749,7 @@ $2',
'nav-login-createaccount' => 'Δημιουργία Λογαριασμού/Είσοδος',
'loginprompt' => 'Πρέπει να έχετε ενεργοποιήσει τα cookies για να συνδεθείτε στο {{SITENAME}}.',
'userlogin' => 'Δημιουργία Λογαριασμού/Είσοδος',
+'userloginnocreate' => 'Είσοδος',
'logout' => 'Έξοδος',
'userlogout' => 'Έξοδος χρήστη',
'notloggedin' => 'Δεν έχετε συνδεθεί.',
@@ -719,28 +761,8 @@ $2',
'createaccountmail' => 'Με ηλεκτρονικό ταχυδρομείο',
'badretype' => 'Οι κωδικοί που έχετε δηλώσει δεν συμφωνούν μεταξύ τους.',
'userexists' => 'Το όνομα χρήστη που εισαγάγατε ήδη χρησιμοποιείται. Παρακαλούμε, διαλέξτε διαφορετικό.',
-'youremail' => 'Ηλεκτρονική διεύθυνση*',
-'username' => 'Όνομα χρήστη:',
-'uid' => 'Αριθμός αναγνώρισης χρήστη:',
-'prefs-memberingroups' => 'Μέλος {{PLURAL:$1|ομάδας|ομάδων}}:',
-'yourrealname' => 'Πραγματικό όνομα:',
-'yourlanguage' => 'Γλώσσα:',
-'yourvariant' => 'Η γλώσσα που χρησιμοποιείτε',
-'yournick' => 'Υπογραφή:',
-'badsig' => 'Άκυρη υπογραφή raw: ελέγξτε τις ετικέτες HTML.',
-'badsiglength' => 'Η υπογραφή σας είναι πολύ μεγάλη.
-Πρέπει να είναι κάτω από $1 {{PLURAL:$1|χαρακτήρα|χαρακτήρες}}.',
-'yourgender' => 'Φύλο:',
-'gender-unknown' => 'Αδιευκρίνιστο',
-'gender-male' => 'Άντρας',
-'gender-female' => 'Γυναίκα',
-'prefs-help-gender' => 'Προαιρετικό: χρησιμοποιείται για απεύθυνση στο σωστό φύλο από το λογισμικό. Αυτή η πληροφορία θα είναι δημόσια.',
-'email' => 'Ηλεκτρονικό ταχυδρομείο',
-'prefs-help-realname' => '* Πραγματικό όνομα (προαιρετικό): εφόσον εισάγετε το όνομά σας, αυτό θα μπορεί να χρησιμοποιηθεί για να αναγνωριστεί η δουλειά σας.',
'loginerror' => 'Σφάλμα σύνδεσης',
-'prefs-help-email' => 'Το ηλεκτρονικό ταχυδρομείο είναι προαιρετικό, ωστόσο δίνει τη δυνατότητα να σας αποσταλεί ένας νέος κωδικός στην περίπτωση που ξεχάσετε τον κωδικό σας.
-Μπορείτε επίσης να επιτρέψετε σε άλλους χρήστες να επικοινωνήσουν μαζί σας μέσω της σελίδας χρήστη ή της σελίδας συζήτησης χωρίς να αποκαλύπτεται η ταυτότητά σας.',
-'prefs-help-email-required' => 'Απαιτείται διεύθυνση ηλεκτρονικού ταχυδρομείου.',
+'createaccounterror' => 'Δεν ήταν δυνατή η δημιουργία λογαριασμού: $1',
'nocookiesnew' => 'Ο λογαριασμός χρήστη έχει δημιουργηθεί, αλλά δεν έχετε ακόμα συνδεθεί. Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και στη συνέχεια συνδεθείτε χρησιμοποιώντας το νέο όνομα χρήστη σας και τον κωδικό σας.',
'nocookieslogin' => 'Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και ξαναδοκιμάστε!',
'noname' => 'Το όνομα χρήστη που έχετε καθορίσει δεν είναι έγκυρο.',
@@ -751,16 +773,18 @@ $2',
Ελέγξτε την ορθογραφία ή [[Special:UserLogin/signup|δημιουργήστε ένα νέο λογαριασμό]].',
'nosuchusershort' => 'Δεν υπάρχει χρήστης με το όνομα "<nowiki>$1</nowiki>". Παρακαλούμε ελέγξτε την ορθογραφία.',
'nouserspecified' => 'Πρέπει να ορίσετε ένα όνομα χρήστη.',
+'login-userblocked' => 'Αυτός ο χρήστης έχει αποκλειστεί. Δεν επιτρέπεται σύνδεση.',
'wrongpassword' => 'Ο κωδικός που πληκτρολογήσατε είναι λανθασμένος. Παρακαλούμε προσπαθήστε ξανά.',
'wrongpasswordempty' => 'Ο κωδικός πρόσβασης που εισάχθηκε ήταν κενός. Παρακαλούμε προσπαθήστε ξανά.',
-'passwordtooshort' => 'Ο κωδικός σας είναι ή λανθασμένος ή πολύ σύντομος.
-Πρέπει να περιέχει τουλάχιστον {{PLURAL:$1|1 χαρακτήρα|$1 χαρακτήρες}} και να διαφέρει από το όνομα χρήστη σας.',
+'passwordtooshort' => 'Οι κωδικοί πρέπει να περιέχουν τουλάχιστον {{PLURAL:$1|1 χαρακτήρα|$1 χαρακτήρες}}.',
+'password-name-match' => 'Ο κωδικός σου θα πρέπει να είναι διαφορετικός από το όνομα χρήστη σου.',
'mailmypassword' => 'Αποστολή νέου κωδικού',
'passwordremindertitle' => 'Καινούργιος προσωρινός κωδικός για το {{SITENAME}}',
'passwordremindertext' => 'Κάποιος (πιθανώς εσείς, από την διεύθυνση IP $1) ζήτησε να σας στείλουμε ένα νέο κωδικό πρόσβασης για τον ιστότοπο {{SITENAME}} ($4). Ο κωδικός πρόσβασης για το χρήστη "$2" είναι τώρα "$3". Αν το κάνατε εσείς, θα πρέπει να συνδεθείτε και να αλλάξετε τον κωδικό πρόσβασης σας τώρα. Ο προσωρινός σας κωδικός πρόσβασης θα λήξει σε {{PLURAL:$5|μια ημέρα|$5 ημέρες}}.
Αν κάποιος άλλος έκανε αυτή την αίτηση ή αν έχετε θυμηθεί τον κωδικό πρόσβασης σας και δεν επιθυμείτε πλέον να τον αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε τον παλιό κωδικό πρόσβασης σας.',
'noemail' => 'Δεν έχει καθοριστεί ηλεκτρονική διεύθυνση για τον χρήστη "$1".',
+'noemailcreate' => 'Είναι απαραίτητο να υποβάλλετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου',
'passwordsent' => 'Σας έχει σταλεί ένας νέος κωδικός στην ηλεκτρονική διέθυνση που δηλώσατε για "$1".
Σας παρακαλούμε να ξανασυνδεθείτε μόλις τον λάβετε.',
'blocked-mailpassword' => 'Η διεύθυνση IP σας είναι αποκλεισμένη από επεξεργασία, και έτσι
@@ -783,9 +807,11 @@ $2',
'createaccount-text' => 'Κάποιος δημιούργησε έναν λογαριασμό για τη διεύθυνση email σας στο {{SITENAME}} ($4) με το όνομα "$2", με κωδικό πρόσβασης "$3". Θα πρέπει να συνδεθείτε και να αλλάξετε τον κωδικό πρόσβασής σας τώρα.
Μπορείτε να αγνοήσετε αυτό το μήνυμα, αν αυτός ο λογαριασμός δημιουργήθηκε εσφαλμένα.',
+'usernamehasherror' => 'Το όνομα χρήστη δεν μπορεί να περιέχει ειδικούς χαρακτήρες',
'login-throttled' => 'Τελευταία κάνατε πάρα πολλές απόπειρες σύνδεσης.
Παρακαλούμε περιμένετε προτού ξαναδοκιμάσετε.',
'loginlanguagelabel' => 'Γλώσσα: $1',
+'suspicious-userlogout' => 'Το αίτημα αποσύνδεσής σας απερρίφθη επειδή φαίνεται ότι στάλθηκε από ένα λανθασμένο φυλλομετρητή (browser) ή διακομιστή προσωρινής αποθήκευσης.',
# Password reset dialog
'resetpass' => 'Αλλαγή κωδικού πρόσβασης',
@@ -797,17 +823,13 @@ $2',
'retypenew' => 'Πληκτρολογήστε ξανά το νέο κωδικό.',
'resetpass_submit' => 'Δώστε κωδικό πρόσβασης και συνδεθείτε',
'resetpass_success' => 'Ο κωδικός πρόσβασής σας άλλαξε επιτυχώς! Τώρα σας συνδέουμε...',
-'resetpass_bad_temporary' => 'Άκυρος προσωρινός κωδικός πρόσβασης. Μπορεί ήδη να έχετε αλλάξει επιτυχώς τον κωδικό πρόσβασής σας ή να έχετε ζητήσει ένα νέο προσωρινό κωδικό πρόσβασης.',
'resetpass_forbidden' => 'Οι κωδικοί πρόσβασης δεν μπορούν να αλλαχθούν',
'resetpass-no-info' => 'Πρέπει να είστε συνδεδεμένος για να δείτε αυτήν την σελίδα απευθείας',
'resetpass-submit-loggedin' => 'Αλλαγή κωδικού',
+'resetpass-submit-cancel' => 'Ακύρωση',
'resetpass-wrong-oldpass' => 'Λάθος προσωρινός ή κανονικός κωδικός.
Μπορεί να έχετε ήδη αλλάξει επιτυχώς τον κωδικό σας ή να έχετε ζητήσει έναν νέο προσωρινό κωδικό.',
'resetpass-temp-password' => 'Προσωρινός κωδικός:',
-'resetpass-log' => 'Αρχείο καταγραφής αρχικοποιήσεων κωδικών πρόσβασης',
-'resetpass-logtext' => 'Παρακάτω είναι ένα αρχείο καταγραφής των χρηστών των οποίων ο κωδικός πρόσβασης τους έχει αρχικοποιηθεί από έναν διαχειριστή.',
-'resetpass-logentry' => 'άλλαξε τον κωδικό για τον/την $1',
-'resetpass-comment' => 'Λόγος για την αρχικοποίηση κωδικού:',
# Edit page toolbar
'bold_sample' => 'Έντονο κείμενο',
@@ -880,7 +902,6 @@ $2',
'blockededitsource' => "Το κείμενο των '''επεξεργασιών σας''' στο '''$1''' φαίνεται παρακάτω:",
'whitelistedittitle' => 'Για να επεξεργαστείτε μια σελίδα πρέπει πρώτα να συνδεθείτε.',
'whitelistedittext' => 'Πρέπει να $1 για να επεξεργαστείτε σελίδες.',
-'confirmedittitle' => 'Απαιτείται επιβεβαίωση e-mail για την επεξεργασία',
'confirmedittext' => 'Πρέπει να επιβεβαιώσετε την διεύθυνση e-mail σας πριν μπορέσετε να επεξεργαστείτε σελίδες. Παρακαλώ θέστε και επικυρώστε την διεύθυνση e-mail σας μέσω των [[Special:Preferences|προτιμήσεων χρήστη]] σας.',
'nosuchsectiontitle' => 'Δεν υπάρχει τέτοιο τμήμα',
'nosuchsectiontext' => 'Προσπαθήσατε να επεξεργαστείτε μια ενότητα που δεν υπάρχει. Μπορεί να έχει μετακινηθεί ή διαγραφεί, ενώ βλέπατε τη σελίδα.',
@@ -898,9 +919,15 @@ $2',
'noarticletext' => 'Δεν υπάρχει προς το παρόν κείμενο σε αυτή τη σελίδα. Μπορείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο σελίδας]] σε άλλες σελίδες,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να αναζητήσετε τα σχετικά ιστορικά],
ή να [{{fullurl:{{FULLPAGENAME}}|action=edit}} επεξεργαστείτε τη σελίδα αυτή].',
+'noarticletext-nopermission' => 'Δεν υπάρχει κείμενο σε αυτή τη σελίδα αυτή τη στιγμή.
+Μπορείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο]] σε άλλες σελίδες,
+ή <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να αναζητήσετε τα σχετικά αρχεία]</span>.',
'userpage-userdoesnotexist' => 'Ο Λογαριασμός του χρήστη "$1" δεν είναι καταχωρημένος. Παρακαλώ δείτε αν θα θέλατε να δημιουργήσετε/επεξεργαστείτε αυτή τη σελίδα.',
+'userpage-userdoesnotexist-view' => 'Ο λογαριασμός χρήστη "$1" δεν είναι εγγεγραμμένος.',
+'blocked-notice-logextract' => 'Επί του παρόντος, αυτός ο χρήστης έχει υποστεί φραγή. Παρακάτω παρέχεται για αναφορά η πιο πρόσφατη καταχώρηση του αρχείου φραγών.',
'clearyourcache' => "'''Σημείωση:''' Μετά την αποθήκευση, θα χρειαστεί να καθαρίσετε την cache στον browser σας για να μπορέσετε να δείτε τις αλλαγές: '''Mozilla / Firefox / Safari:''' κρατώντας το ''Shift'' κάντε κλικ στο ''Ανανέωση'', ή πατήστε ''Ctrl-F5'' ή ''Ctrl-R''. '''Konqueror:''' κάντε κλικ στο ''Reload'' ή πατήστε ''F5''. '''Opera:''' : Πηγαίνετε ''Εργαλεία → Προτιμήσεις''. '''Internet Explorer:''' κρατώντας το ''Ctrl'' κάντε κλικ στο ''Ανανέωση'' ή πατήστε ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"Προεπισκόπηση\" για να ελέγξτε τα νέα σας CSS/JS πριν τα αποθηκεύσετε.",
+'usercssyoucanpreview' => "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τα νέα σας CSS πριν τα αποθηκεύσετε.",
+'userjsyoucanpreview' => "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τη νέα σας JS πριν την αποθηκεύσετε.",
'usercsspreview' => "'''Σας υπενθυμίζουμε ότι κάνετε απλώς έλεγχο/προεπισκόπηση του CSS του χρήστη -δεν το έχετε ακόμα αποθηκεύσει! '''",
'userjspreview' => "'''Σας υπενθυμίζουμε ότι κάνετε απλώς έλεγχο/προεπισκόπηση του JavaScript του χρήστη -δεν το έχετε ακόμα αποθηκεύσει!'''",
'userinvalidcssjstitle' => "'''Προσοχή:''' Δεν υπάρχει skin με τίτλο \"\$1\". Θυμηθείτε οι προσαρμοσμένες σελίδες .css και .js χρησιμοποιούν έναν τίτλο με μικρά γράμματα, π.χ. {{ns:user}}:Foo/monobook.css σε αντίθεση με το {{ns:user}}:Foo/Monobook.css.",
@@ -944,13 +971,16 @@ $2',
'readonlywarning' => "'''ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η βάση δεδομένων έχει κλειδωθεί για συντήρηση, έτσι δεν θα μπορέσετε να αποθηκεύσετε αυτά που έχετε επεξεργαστεί. Μπορείτε αν θέλετε να αποθηκεύσετε το κείμενο σε αρχείο κειμένου (με αποκοπή-και-επικόλληση) για να το χρησιμοποιήσετε αργότερα.'''
Ο διαχειριστής που την κλείδωσε έδωσε την εξής εξήγηση: $1",
-'protectedpagewarning' => "'''ΠΡΟΣΟΧΗ: Η σελίδα αυτή έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή να μπορούν να την επεξεργαστούν.'''",
-'semiprotectedpagewarning' => "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες να μπορούν να την επεξεργαστούν.",
+'protectedpagewarning' => "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή μπορούν να την επεξεργαστούν.'''
+Η πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
+'semiprotectedpagewarning' => "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες μπορούν να την επεξεργαστούν.
+Η πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
'cascadeprotectedwarning' => "'''Προσοχή:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή συστήματος (sysop) να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην|στις}} {{PLURAL:$1|ακόλουθη|ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη|προστατευμένες}} {{PLURAL:$1|σελίδα|σελίδες}}:",
-'titleprotectedwarning' => "'''ΠΡΟΣΟΧΗ! Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με [[Special:ListGroupRights|συγκεκριμένα δικαιώματα]] να μπορούν να την δημιουργήσουν.'''",
-'templatesused' => 'Πρότυπα που χρησιμοποιούνται στη σελίδα αυτή:',
-'templatesusedpreview' => 'Πρότυπα που χρησιμοποιούνται σε αυτή την προεπισκόπηση:',
-'templatesusedsection' => 'Πρότυπα που χρησιμοποιούνται σε αυτή την ενότητα:',
+'titleprotectedwarning' => "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε χρειάζονται [[Special:ListGroupRights|ειδικά δικαιώματα]] για να δημιουργηθεί.'''
+Η πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
+'templatesused' => '{{PLURAL:$1|Πρότυπο|Πρότυπα}} που χρησιμοποιούνται στη σελίδα αυτή:',
+'templatesusedpreview' => '{{PLURAL:$1|Πρότυπο|Πρότυπα}} που χρησιμοποιούνται σε αυτή την προεπισκόπηση:',
+'templatesusedsection' => '{{PLURAL:$1|Πρότυπο|Πρότυπα}} που χρησιμοποιούνται σε αυτή την ενότητα:',
'template-protected' => '(προστατευμένη)',
'template-semiprotected' => '(ημιπροστατευμένη)',
'hiddencategories' => 'Αυτή η σελίδα είναι μέλος {{PLURAL:$1|μίας κρυμμένης κατηγορίας|$1 κρυμμένων κατηγοριών}}',
@@ -959,16 +989,18 @@ $2',
'nocreatetext' => 'Το {{SITENAME}} έχει περιορίσει την ικανότητα δημιουργίας νέων σελίδων.
Μπορείτε να πάτε πίσω και να επεξεργαστείτε μια υπάρχουσα σελίδα, ή να [[Special:UserLogin|συνδεθείτε ή να δημιουργήσετε ένα λογαριασμό]].',
'nocreate-loggedin' => 'Δεν έχετε άδεια να δημιουργήσετε νέες σελίδες.',
+'sectioneditnotsupported-title' => 'Δεν υποστηρίζετε η επεξεργασία τομέα',
+'sectioneditnotsupported-text' => 'Δεν υποστηρίζετε η επεξεργασία τομέα σε αυτήν τη σελίδα.',
'permissionserrors' => 'Σφάλματα άδειας.',
'permissionserrorstext' => 'Δεν έχετε άδεια να το κάνετε αυτό, για {{PLURAL:$1|τον εξής λόγο|τους εξής λόγους}}:',
'permissionserrorstext-withaction' => 'Δεν έχετε άδεια για $2, για {{PLURAL:$1|τον ακόλουθο λόγο|τους ακόλουθους λόγους}}:',
-'recreate-deleted-warn' => "'''Προειδοποίηση: Ξαναδημιουργείτε μια σελίδα που είχε προηγουμένως διαγραφεί.'''
+'recreate-moveddeleted-warn' => "'''Προειδοποίηση: Ξαναδημιουργείτε μια σελίδα που είχε προηγουμένως διαγραφεί.'''
Θα πρέπει να σκεφτείτε αν θα έπρεπε να συνεχίσετε να επεξεργάζεστε αυτή τη σελίδα.
-Το αρχείο διαγραφής δίνεται εδώ για διευκόλυνση:",
-'deleted-notice' => 'Αυτή η σελίδα έχει διαγραφεί.
-Το αρχείο διαγραφών της σελίδας παρέχεται παρακάτω για παραπομπή.',
-'deletelog-fulllog' => 'Δείτε το πλήρες αρχείο',
+Το αρχείο διαγραφών και μετακινήσεων δίνεται εδώ για διευκόλυνση:",
+'moveddeleted-notice' => 'Αυτή η σελίδα έχει διαγραφεί.
+Το αρχείο διαγραφών και μετακινήσεων της σελίδας παρέχεται παρακάτω για παραπομπή.',
+'log-fulllog' => 'Εμφάνιση πλήρους αρχείου',
'edit-hook-aborted' => 'Η επεξεργασία ματαιώθηκε από το hook.
Δεν έδωσε εξήγηση.',
'edit-gone-missing' => 'Δεν ήταν εφικτό να ενημερωθεί η σελίδα.
@@ -991,6 +1023,7 @@ $2',
'post-expand-template-argument-category' => 'Σελίδες που περιέχουν παραλειπόμενες παραμέτρους προτύπων',
'parser-template-loop-warning' => 'Εντοπίστηκε πρότυπο σε βρόχο: [[$1]]',
'parser-template-recursion-depth-warning' => 'Το όριο του μάκρους της αναδρομής του πρότυπου έχει ξεπεραστεί ($1)',
+'language-converter-depth-warning' => 'Το όριο βάθους του μετατροπέα γλώσσας έχει ξεπεραστεί ($1)',
# "Undo" feature
'undo-success' => 'Η επεξεργασία μπορεί να αναστραφεί. Παρακαλώ ελέγξτε την σύγκριση παρακάτω για να επιβεβαιώσετε ότι αυτό είναι το οποίο θέλετε να κάνετε, και έπειτα αποθηκεύστε τις αλλαγές παρακάτω για να τελειώσετε την αναστροφή της επεξεργασίας.',
@@ -1010,7 +1043,7 @@ $2',
'currentrev' => 'Τρέχουσα αναθεώρηση',
'currentrev-asof' => 'Παρούσα αναθεώρηση της $1',
'revisionasof' => 'Αναθεώρηση της $1',
-'revision-info' => 'Έκδοση στις $1 υπό τον/την $2', # Additionally available: $3: revision id
+'revision-info' => 'Έκδοση στις $1 υπό τον/την $2',
'previousrevision' => '&larr;Παλιότερη αναθεώρηση',
'nextrevision' => 'Νεώτερη αναθεώρηση&rarr;',
'currentrevisionlink' => 'εμφάνιση της τρέχουσας αναθεώρησης',
@@ -1023,7 +1056,7 @@ $2',
Υπόμνημα: '''({{int:cur}})''' = διαφορά από την τρέχουσα έκδοση,
'''({{int:last}})''' = διαφορά από την προηγούμενη έκδοση, '''{{int:minoreditletter}}''' = αλλαγή μικρής κλίμακας.",
'history-fieldset-title' => 'Αναζήτηση στο ιστορικό',
-'deletedrev' => '[διαγράφτηκε]',
+'history-show-deleted' => 'Διαγραμμένα μόνο',
'histfirst' => 'Η πιο παλιά',
'histlast' => 'Η πιο πρόσφατη',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -1032,70 +1065,112 @@ $2',
# Revision feed
'history-feed-title' => 'Ιστορικό εκδόσεων',
'history-feed-description' => 'Ιστορικό αναθεωρήσεων για αυτή τη σελίδα στο wiki',
-'history-feed-item-nocomment' => '$1 στο $2', # user at time
+'history-feed-item-nocomment' => '$1 στο $2',
'history-feed-empty' => 'Η ζητούμενη σελίδα δεν υπάρχει.
Μπορεί να έχει διαγραφεί από το wiki, ή να μετονομάστηκε.
Δοκιμάστε [[Special:Search|να αναζητήσετε στο wiki]] για σχετικές νέες σελίδες.',
# Revision deletion
-'rev-deleted-comment' => '(σχόλιο αφαιρέθηκε)',
-'rev-deleted-user' => '(όνομα χρήστη αφαιρέθηκε)',
-'rev-deleted-event' => '(η καταγραφή στο αρχείο αφαιρέθηκε)',
-'rev-deleted-text-permission' => "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.
-Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
-'rev-deleted-text-view' => "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.
-Ως διαχειριστής μπορείτε να την δείτε. Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
-'rev-deleted-no-diff' => "Δεν μπορείτε να δείτε αυτή τη διαφορά επειδή μια από τις αναθεωρήσεις έχει '''διαγραφεί'''.
-Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} αρχείο διαγραφών].",
-'rev-deleted-unhide-diff' => "Μια από τις αναθεωρήσεις αυτή τη διαφοράς έχει '''διαγραφεί'''.
-Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} αρχείο διαγραφών].
+'rev-deleted-comment' => '(σχόλιο αφαιρέθηκε)',
+'rev-deleted-user' => '(όνομα χρήστη αφαιρέθηκε)',
+'rev-deleted-event' => '(η καταγραφή στο αρχείο αφαιρέθηκε)',
+'rev-deleted-user-contribs' => '[όνομα χρήστη ή διεύθυνση ΙΡ έχουν αφαιρεθεί - η επεξεργασία έχει αποκρυφθεί από τις συνεισφορές]',
+'rev-deleted-text-permission' => "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.
+Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
+'rev-deleted-text-unhide' => "Αυτή η αναθεώρηση σελίδας '''διεγράφη'''.
+Ενδέχεται να υπάρχουν περισσότερες λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ιστορικό διαγραφών].
+Ως διαχειριστής μπορείτε ακόμη να [$1 δειτε αυτήν την αναθεώρηση] αν επιθυμείτε να συνεχίσετε.",
+'rev-suppressed-text-unhide' => "Αυτή η έκδοση της σελίδας έχει '''κατασταλλεί'''.
+Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολής].
+Σαν διαχειριστής μπορείτε ακόμα [$1 να δείτε την έκδοση] αν επιθυμείτε να προχωρήσετε.",
+'rev-deleted-text-view' => "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.
+Ως διαχειριστής μπορείτε να την δείτε. Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
+'rev-suppressed-text-view' => "Αυτή η έκδοση της σελίδας έχει '''κατασταλλεί'''.
+Σαν διαχειριστής μπορείτε να τη δείτε; μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολής].",
+'rev-deleted-no-diff' => "Δεν μπορείτε να δείτε αυτή τη διαφορά επειδή μια από τις αναθεωρήσεις έχει '''διαγραφεί'''.
+Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
+'rev-suppressed-no-diff' => "Δεν μπορείτε να δείτε αυτό το diff επειδή μία από τις αναθεωρήσεις έχει '''διαγραφεί'''.",
+'rev-deleted-unhide-diff' => "Μια από τις αναθεωρήσεις αυτή τη διαφοράς έχει '''διαγραφεί'''.
+Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].
Ως διαχειριστής μπορείτε ακόμη να [$1 δείτε αυτή τη διαφορά] αν επιθυμείτε να συνεχίσετε.",
-'rev-delundel' => 'εμφάνιση/απόκρυψη',
-'revisiondelete' => 'Διαγραφή/επαναφορά αναθεωρήσεων',
-'revdelete-nooldid-title' => 'Άκυρη έκδοση-στόχος',
-'revdelete-nooldid-text' => 'Είτε δεν έχετε ορίσει μία έκδοση-στόχο για να εκτελεστεί η λειτουργία σε αυτή, είτε η ορισμένη έκδοση δεν υπάρχει, είτε δοκιμάσετε να κρύψετε την τρέχουσα έκδοση.',
-'revdelete-nologtype-title' => 'Κανένας τύπος ιστορικού δεν δόθηκε',
-'revdelete-nologtype-text' => 'Δεν καθορίσατε επί ποίου τύπου ιστορικού να εφαρμοστεί αυτή η ενέργεια.',
-'revdelete-toomanytargets-title' => 'Υπερβολικά πολλοί στόχοι',
-'revdelete-toomanytargets-text' => 'Καθορίσατε υπερβολικά πολλούς τὐπους στόχων επί των οποίων είναι να εφαρμοστεί η ενέργεια αυτή.',
-'revdelete-nologid-title' => 'Άκυρη καταχώρηση ιστορικού',
-'revdelete-nologid-text' => 'Είτε δεν καθορίσατε ένα συμβάν πρωτοκόλλου-στόχο για την εφαρμογή αυτής της ενέργειας, είτε η καθορισμένη καταχώρηση δεν υπάρχει.',
-'revdelete-selected' => "'''{{PLURAL:$2|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Επιλεγμένο γεγονός αρχείου καταγραφής|Επιλεγμένα γεγονότα αρχείου καταγραφής}}:'''",
-'revdelete-text' => "'''Οι διεγραμμένες αναθεωρήσεις και τα γεγονότα θα εμφανίζονται ακόμα στο ιστορικό της σελίδας και στα αρχεία καταγραφών, αλλά μέρη του περιεχομένου τους θα είναι απροσπέλαστα στο κοινό.'''
-
-Άλλοι διαχειριστές στον ιστότοπο {{SITENAME}} θα είναι ακόμα ικανοί να προσπελάσουν το κρυμμένο περιεχόμενο και μπορούν να το επαναφέρουν ξανά μέσω αυτής της διεπαφής, εκτός αν τεθούν πρόσθετοι περιορισμοί.
-Παρακαλώ επιβεβαιώστε ότι σκοπεύετε να εκτελέσετε αυτή την ενέργεια, ότι καταλαβαίνετε τις συνέπειες και ότι την εκτελείτε σύμφωνα με [[{{MediaWiki:Policy-url}}|την πολιτική]].",
-'revdelete-suppress-text' => "Η καταστολή μπορεί να χρησιμοποιηθεί ''' μόνο ''' για τις ακόλουθες περιπτώσεις:
+'rev-suppressed-unhide-diff' => "Μια από τις εκδόσεις αυτής της διαφοράς έχει '''κατασταλεί'''.
+Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολών].
+Σαν ένας διαχειριστής μπορείτε ακόμα [$1 να δείτε αυτή τη διαφορά] αν θέλετε να συνεχίσετε.",
+'rev-deleted-diff-view' => "Μια από τις εκδόσεις αυτής της διαφοράς έχει '''διαγραφεί'''.
+Ως διαχειριστής μπορείτε να δείτε αυτή τη διαφορά. Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο διαγραφών].",
+'rev-suppressed-diff-view' => "Μια από τις εκδόσεις αυτής της διαφοράς έχει '''κατασταλεί'''.
+Ως διαχειριστής μπορείτε να δείτε αυτή την διαφορά. Μπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολών].",
+'rev-delundel' => 'εμφάνιση/απόκρυψη',
+'rev-showdeleted' => 'εμφάνιση',
+'revisiondelete' => 'Διαγραφή/επαναφορά αναθεωρήσεων',
+'revdelete-nooldid-title' => 'Άκυρη έκδοση-στόχος',
+'revdelete-nooldid-text' => 'Είτε δεν έχετε ορίσει μία έκδοση-στόχο για να εκτελεστεί η λειτουργία σε αυτή, είτε η ορισμένη έκδοση δεν υπάρχει, είτε δοκιμάσετε να κρύψετε την τρέχουσα έκδοση.',
+'revdelete-nologtype-title' => 'Κανένας τύπος ιστορικού δεν δόθηκε',
+'revdelete-nologtype-text' => 'Δεν καθορίσατε επί ποίου τύπου ιστορικού να εφαρμοστεί αυτή η ενέργεια.',
+'revdelete-nologid-title' => 'Άκυρη καταχώρηση ιστορικού',
+'revdelete-nologid-text' => 'Είτε δεν καθορίσατε ένα συμβάν πρωτοκόλλου-στόχο για την εφαρμογή αυτής της ενέργειας, είτε η καθορισμένη καταχώρηση δεν υπάρχει.',
+'revdelete-no-file' => 'Το αρχείο που καθορίσατε δεν υπάρχει.',
+'revdelete-show-file-confirm' => 'Είστε σίγουροι ότι θέλετε να δείτε μία διεγραμμένη αναθεώρηση του αρχείου "<nowiki>$1</nowiki>" από τις $2 στις $3;',
+'revdelete-show-file-submit' => 'Ναι',
+'revdelete-selected' => "'''{{PLURAL:$2|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Επιλεγμένο γεγονός αρχείου καταγραφής|Επιλεγμένα γεγονότα αρχείου καταγραφής}}:'''",
+'revdelete-text' => "'''Οι διεγραμμένες αναθεωρήσεις και τα γεγονότα θα εμφανίζονται ακόμα στο ιστορικό της σελίδας και στα αρχεία καταγραφών, αλλά μέρη του περιεχομένου τους θα είναι απροσπέλαστα στο κοινό.'''
+Άλλοι διαχειριστές στον ιστότοπο {{SITENAME}} θα είναι ακόμα ικανοί να προσπελάσουν το κρυμμένο περιεχόμενο και μπορούν να το επαναφέρουν ξανά μέσω αυτής της διεπαφής, εκτός αν τεθούν πρόσθετοι περιορισμοί.",
+'revdelete-confirm' => 'Παρακαλούμε επιβεβαιώστε ότι σκοπεύετε να το κάνετε αυτό, ότι αντιλαμβάνεσθε τις συνέπειες, και ότι το κάνετε σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].',
+'revdelete-suppress-text' => "Η καταστολή μπορεί να χρησιμοποιηθεί ''' μόνο ''' για τις ακόλουθες περιπτώσεις:
* Ακατάλληλες προσωπικές πληροφορίες
*: ''διευθύνσεις κατοικίας και αριθμοί τηλεφώνου, αριθμοί ταυτότητας, κλπ. ''",
-'revdelete-legend' => 'Θέστε περιορισμούς ορατότητας',
-'revdelete-hide-text' => 'Κρύψε κείμενο αναθεώρησης',
-'revdelete-hide-name' => 'Κρύψε ενέργεια και στόχο',
-'revdelete-hide-comment' => 'Κρύψε σχόλιο επεξεργασίας',
-'revdelete-hide-user' => 'Κρύψε όνομα χρήστη/IP συντάκτη',
-'revdelete-hide-restricted' => 'Απόκρυψη δεδομένων από διαχειριστές καθώς και από άλλους',
-'revdelete-suppress' => 'Απόκρυψε δεδομένα από διαχειριστές όπως και από άλλους',
-'revdelete-hide-image' => 'Κρύψε περιεχόμενο αρχείου',
-'revdelete-unsuppress' => 'Αφαίρεσε περιορισμούς στις αποκατεστημένες αναθεωρήσεις',
-'revdelete-log' => 'Αιτία:',
-'revdelete-submit' => 'Εφάρμοσε στην επιλεγμένη αναθεώρηση',
-'revdelete-logentry' => 'η ορατότητα της αναθεώρησης του [[$1]] αλλάχθηκε',
-'logdelete-logentry' => 'η ορατότητα γεγονότος του [[$1]] αλλάχθηκε',
-'revdelete-success' => "'''Η ορατότητα έκδοσης ενημερώθηκε επιτυχώς.'''",
-'logdelete-success' => "'''Η ορατότητα γεγονότος τέθηκε επιτυχώς.'''",
-'revdel-restore' => 'Αλλαγή ορατότητας',
-'pagehist' => 'Ιστορικό σελίδας',
-'deletedhist' => 'Διαγραμμένο ιστορικό',
-'revdelete-content' => 'περιεχόμενο',
-'revdelete-summary' => 'επεξεργασία σύνοψης',
-'revdelete-uname' => 'όνομα χρήστη',
-'revdelete-restricted' => 'εφάρμοσε περιορισμούς στους sysops',
-'revdelete-unrestricted' => 'αφαίρεσε περιορισμούς στους sysops',
-'revdelete-hid' => 'αποκρύφθηκε το $1',
-'revdelete-unhid' => 'εμφάνιση $1',
-'revdelete-log-message' => '$1 για $2 {{PLURAL:$2|έκδοση|εκδόσεις}}',
-'logdelete-log-message' => '$1 για $2 {{PLURAL:$2|γεγονός|γεγονότα}}',
+'revdelete-legend' => 'Θέστε περιορισμούς ορατότητας',
+'revdelete-hide-text' => 'Κρύψε κείμενο αναθεώρησης',
+'revdelete-hide-image' => 'Κρύψε περιεχόμενο αρχείου',
+'revdelete-hide-name' => 'Κρύψε ενέργεια και στόχο',
+'revdelete-hide-comment' => 'Κρύψε σχόλιο επεξεργασίας',
+'revdelete-hide-user' => 'Κρύψε όνομα χρήστη/IP συντάκτη',
+'revdelete-hide-restricted' => 'Απόκρυψη δεδομένων από διαχειριστές καθώς και από άλλους',
+'revdelete-radio-same' => '(μην αλλάξετε)',
+'revdelete-radio-set' => 'Ναι',
+'revdelete-radio-unset' => 'Όχι',
+'revdelete-suppress' => 'Απόκρυψε δεδομένα από διαχειριστές όπως και από άλλους',
+'revdelete-unsuppress' => 'Αφαίρεσε περιορισμούς στις αποκατεστημένες αναθεωρήσεις',
+'revdelete-log' => 'Αιτία:',
+'revdelete-submit' => 'Εφάρμοσε {{PLURAL:$1|στην επιλεγμένη αναθεώρηση|στις επιλεγμένες αναθεωρήσεις}}',
+'revdelete-logentry' => 'η ορατότητα της αναθεώρησης του [[$1]] αλλάχθηκε',
+'logdelete-logentry' => 'η ορατότητα γεγονότος του [[$1]] αλλάχθηκε',
+'revdelete-success' => "'''Η ορατότητα έκδοσης ενημερώθηκε επιτυχώς.'''",
+'revdelete-failure' => "'''Η ορατότητα της επεξεργασίας δεν ήταν δυνατόν να ενημερωθεί:''' $1",
+'logdelete-success' => "'''Η ορατότητα γεγονότος τέθηκε επιτυχώς.'''",
+'logdelete-failure' => "'''Η ορατότητα του καταλόγου δεν μπορούσε να ρυθμιστεί:'''
+$1",
+'revdel-restore' => 'Αλλαγή ορατότητας',
+'pagehist' => 'Ιστορικό σελίδας',
+'deletedhist' => 'Διαγραμμένο ιστορικό',
+'revdelete-content' => 'περιεχόμενο',
+'revdelete-summary' => 'επεξεργασία σύνοψης',
+'revdelete-uname' => 'όνομα χρήστη',
+'revdelete-restricted' => 'εφάρμοσε περιορισμούς στους sysops',
+'revdelete-unrestricted' => 'αφαίρεσε περιορισμούς στους sysops',
+'revdelete-hid' => 'αποκρύφθηκε το $1',
+'revdelete-unhid' => 'εμφάνιση $1',
+'revdelete-log-message' => '$1 για $2 {{PLURAL:$2|έκδοση|εκδόσεις}}',
+'logdelete-log-message' => '$1 για $2 {{PLURAL:$2|γεγονός|γεγονότα}}',
+'revdelete-hide-current' => 'Σφάλμα κατά την απόκρυψη του αντικειμένου στις $2, $1: αυτή είναι η τωρινή έκδοση.
+Δεν μπορεί να αποκρυφθεί.',
+'revdelete-show-no-access' => 'Σφάλμα στην προβολή του αντικειμένου στις $2, $1: αυτό το αντικείμενο έχει σημειωθεί ως "περιορισμένο".
+Δεν έχετε πρόσβαση σε αυτό.',
+'revdelete-modify-no-access' => 'Σφάλμα κατά τη μετατροπή του αντικειμένου στις $2, $1: αυτό το αντικείμενο σημάνθηκε ως "περιορισμένο".
+Δεν έχετε πρόσβαση σε αυτό.',
+'revdelete-modify-missing' => 'Σφάλμα κατά την τροποποίηση του στοιχείου με ID $1: δεν βρίσκεται στην βάση δεδομένων!',
+'revdelete-no-change' => "'''Προσοχή:''' το στοιχείο με ημερομηνία $2, $1 έχει ήδη τις αιτούμενες ρυθμίσεις ορατότητας.",
+'revdelete-concurrent-change' => 'Σφάλμα στη μετατροπή του αντικειμένου στις $2, $1: η κατάσταση του φαίνεται να έχει αλλάξει από κάποιον άλλο ενώ εσείς επιχειρούσατε να το μετατρέψετε.
+Παρακαλώ ελέξτε τα αρχεία καταγραφών.',
+'revdelete-only-restricted' => 'Σφάλμα κατα την απόκρυψη του αντικειμένου στις $2, $1: δεν μπορείτε να αποκρύψετε τη προβολή στοιχείων από τους διαχειριστές χωρίς ταυτόχρονα να επιλέξετε και μία από τις άλλες επιλογές απόκρυψης.',
+'revdelete-reason-dropdown' => '*Συνήθεις αιτίες διαγραφής
+** Παραβίαση δικαιωμάτων
+** Ανάρμοστες προσωπικές πληροφορίες',
+'revdelete-otherreason' => 'Άλλος/πρόσθετος λόγος:',
+'revdelete-reasonotherlist' => 'Άλλος λόγος',
+'revdelete-edit-reasonlist' => 'Επεξεργασία λόγων διαγραφής',
+'revdelete-offender' => 'Δημιουργός αναθεώρησης:',
# Suppression log
'suppressionlog' => 'Κατάλογος διαγραφών',
@@ -1132,67 +1207,13 @@ $2',
'mergelogpagetext' => 'Παρακάτω είναι μια λίστα με τις πιο πρόσφατες συγχωνεύσεις ιστορικού μιας σελίδας σε άλλο.',
# Diffs
-'history-title' => 'Ιστορικό εκδόσεων για τη σελίδα "$1"',
-'difference' => '(Διαφορές μεταξύ αναθεωρήσεων)',
-'lineno' => 'Γραμμή $1:',
-'compareselectedversions' => 'Σύγκριση των εκδόσεων που έχουν επιλεγεί',
-'visualcomparison' => 'Οπτική σύγκριση',
-'wikicodecomparison' => 'Σύγκριση wikitext',
-'editundo' => 'αναίρεση',
-'diff-multi' => '({{PLURAL:$1|Μία ενδιάμεση αναθεώρηση|$1 ενδιάμεσες αναθεωρήσεις}} δεν εμφανίζονται.)',
-'diff-movedto' => 'μετακινήθηκε στο $1',
-'diff-styleadded' => '$1 στυλ προστέθηκε',
-'diff-added' => '$1 προστέθηκε',
-'diff-changedto' => 'άλλαξε σε $1',
-'diff-movedoutof' => 'μετακινήθηκε από το $1',
-'diff-styleremoved' => '$1 στυλ έχει αφαιρεθεί',
-'diff-removed' => 'Το $1 αφαιρέθηκε',
-'diff-changedfrom' => 'άλλαξε από $1',
-'diff-src' => 'πηγή',
-'diff-withdestination' => 'με προορισμό $1',
-'diff-with' => '&#32;με $1 $2',
-'diff-with-final' => '&#32;και $1 $2',
-'diff-width' => 'πλάτος',
-'diff-height' => 'ύψος',
-'diff-p' => "μια '''παράγραφος'''",
-'diff-blockquote' => "ένα '''απόφθεγμα'''",
-'diff-h1' => "μία '''επικεφαλίδα (επιπέδου 1)'''",
-'diff-h2' => "μία '''επικεφαλίδα (επιπέδου 2)'''",
-'diff-h3' => "μία '''επικεφαλίδα (επιπέδου 3)'''",
-'diff-h4' => "μία '''επικεφαλίδα (επιπέδου 4)'''",
-'diff-h5' => "μία '''επικεφαλίδα (επιπέδου 5)'''",
-'diff-pre' => "ένα '''προδιαμορφωμένο μπλοκ'''",
-'diff-div' => "μια '''κατηγορία'''",
-'diff-ul' => "μια '''αταξινόμητη λίστα'''",
-'diff-ol' => "μια '''ταξινομημένη λίστα'''",
-'diff-li' => "ένα '''αντικείμενο λίστας'''",
-'diff-table' => "ένας '''πίνακας'''",
-'diff-tbody' => "το '''περιεχόμενο ενός πίνακα'''",
-'diff-tr' => "μια '''σειρά'''",
-'diff-td' => "ένα '''κελί'''",
-'diff-th' => "μια '''επικεφαλίδα'''",
-'diff-br' => "ένα '''κενό'''",
-'diff-hr' => "μια '''οριζόντια γραμμή'''",
-'diff-code' => "ένα '''κομμάτι υπολογιστικού κώδικα'''",
-'diff-dl' => "μια '''λίστα ορισμών'''",
-'diff-dt' => "ένας '''όρος ορισμού'''",
-'diff-dd' => "ένας '''ορισμός'''",
-'diff-input' => "μια '''εισροή'''",
-'diff-form' => "μια '''φόρμα'''",
-'diff-img' => "μια '''εικόνα'''",
-'diff-span' => "μία '''έκταση'''",
-'diff-a' => "ένας '''σύνδεσμος'''",
-'diff-i' => "'''πλάγια γράμματα'''",
-'diff-b' => "'''έντονο'''",
-'diff-strong' => "'''δυνατό'''",
-'diff-em' => "'''έμφαση'''",
-'diff-font' => "'''γραμματοσειρά'''",
-'diff-big' => "'''μεγάλο'''",
-'diff-del' => "'''διαγραμμένο'''",
-'diff-tt' => "'''ρυθμισμένο πλάτος'''",
-'diff-sub' => "'''υπογεγραμμένα'''",
-'diff-sup' => "'''υπεργεγραμμένα'''",
-'diff-strike' => "'''εγκάρσια διαγραφή'''",
+'history-title' => 'Ιστορικό εκδόσεων για τη σελίδα "$1"',
+'difference' => '(Διαφορές μεταξύ αναθεωρήσεων)',
+'lineno' => 'Γραμμή $1:',
+'compareselectedversions' => 'Σύγκριση των εκδόσεων που έχουν επιλεγεί',
+'showhideselectedversions' => 'Εμφάνιση/απόκρυψη των επιλεγμένων εκδοχών',
+'editundo' => 'αναίρεση',
+'diff-multi' => '({{PLURAL:$1|Μία ενδιάμεση αναθεώρηση|$1 ενδιάμεσες αναθεωρήσεις}} δεν εμφανίζονται.)',
# Search results
'searchresults' => 'Αποτελέσματα αναζήτησης',
@@ -1200,29 +1221,25 @@ $2',
'searchresulttext' => 'Για περισσότερες πληροφορίες σχετικά με την αναζήτηση στο {{SITENAME}}, βλ. [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Αναζητήσατε για τον όρο \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|όλες οι σελίδες των οποίων ο τίτλος αρχίζει με τον όρο "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|όλες οι σελίδες που περιέχουν συνδέσμους προς τον όρο "$1"]])',
'searchsubtitleinvalid' => 'Κριτήρια αναζήτησης: "$1"',
-'noexactmatch' => "'''Δεν υπάρχει καμία σελίδα με τίτλο «$1».'''
-Μπορείτε να [[:$1|δημιουργήσετε αυτή τη σελίδα]].",
-'noexactmatch-nocreate' => "'''Δεν υπάρχει καμία σελίδα με τον τίτλο \"\$1\".'''",
'toomanymatches' => 'Ανταποκρίνονται πάρα πολλές περιπτώσεις, παρακαλούμε δοκιμάστε μια διαφορετική ερώτηση',
'titlematches' => 'Τίτλοι άρθρων που ανταποκρίνονται',
'notitlematches' => 'Δεν υπάρχουν αντίστοιχοι τίτλοι σελίδων.',
'textmatches' => 'Κείμενα σελίδων που ανταποκρίνονται:',
'notextmatches' => 'Δεν υπάρχουν αντίστοιχα κείμενα σελίδων.',
-'prevn' => '$1 προηγουμένων',
-'nextn' => '$1 επομένων',
+'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
+'nextn' => '{{PLURAL:$1|$1}} επομένων',
'prevn-title' => '{{PLURAL:$1|Προηγούμενο $1 αποτέλεσμα|Προηγούμενα $1 αποτελέσματα}}',
'nextn-title' => '{{PLURAL:$1|Επόμενο $1 αποτέλεσμα|Επόμενα $1 αποτελέσματα}}',
'shown-title' => 'Εμφάνιση $1 {{PLURAL:$1|αποτελέσματος|αποτελεσμάτων}} ανά σελίδα',
-'viewprevnext' => 'Εμφάνιση ($1) ($2) ($3).',
+'viewprevnext' => 'Εμφάνιση ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Επιλογές αναζήτησης',
'searchmenu-exists' => "'''Υπάρχει μια σελίδα που ονομάζεται \"[[:\$1]]\" σε αυτό το βίκι'''",
'searchmenu-new' => "'''Δημιουργήστε τη σελίδα \"[[:\$1]]\" σε αυτό το βίκι!'''",
'searchhelp-url' => 'Help:Περιεχόμενα',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Πλοηγηθείτε σε σελίδες με αυτό το πρόθεμα]]',
-'searchprofile-articles' => 'Σελίδες περιεχόμενου',
-'searchprofile-articles-and-proj' => 'Σελίδες περιεχομένου & εγχειρήματος',
-'searchprofile-project' => 'Σελίδες εγχειρήματος',
-'searchprofile-images' => 'Αρχεία',
+'searchprofile-articles' => 'Σελίδες περιεχομένων',
+'searchprofile-project' => 'Βοήθεια και σελίδες εγχειρημάτων',
+'searchprofile-images' => 'Πολυμέσα',
'searchprofile-everything' => 'Οτιδήποτε',
'searchprofile-advanced' => 'Προχωρημένο',
'searchprofile-articles-tooltip' => 'Αναζήτηση στο $1',
@@ -1230,8 +1247,6 @@ $2',
'searchprofile-images-tooltip' => 'Αναζήτηση αρχείων',
'searchprofile-everything-tooltip' => 'Αναζήτηση σε όλο το περιεχόμενο (συμπεριλαμβανομένων των σελίδων συζήτησης)',
'searchprofile-advanced-tooltip' => 'Αναζήτηση σε συγκεκριμένες περιοχές',
-'prefs-search-nsdefault' => 'Αναζήτηση χρησιμοποιώντας τις προεπιλεγμένες ρυθμίσεις:',
-'prefs-search-nscustom' => 'Αναζήτηση σε συγκεκριμένες περιοχές:',
'search-result-size' => '$1 ({{PLURAL:$2|1 λέξη|$2 λέξεις}})',
'search-result-score' => 'Σχετικότητα: $1%',
'search-redirect' => '(ανακατεύθυνση $1)',
@@ -1244,11 +1259,12 @@ $2',
'search-mwsuggest-disabled' => 'χωρίς υποδείξεις',
'search-relatedarticle' => 'Σχετικά',
'mwsuggest-disable' => 'Απενεργοποίηση των προτάσεων AJAX',
+'searcheverything-enable' => 'Αναζήτηση σε όλες τις περιοχές ονομάτων',
'searchrelated' => 'σχετικά',
'searchall' => 'όλα',
'showingresults' => "Δείτε παρακάτω μέχρι τα {{PLURAL:$1|'''1'''αποτέλεσμα|'''$1''' αποτελέσματα}} ξεκινώντας με #'''$2'''.",
'showingresultsnum' => "Εμφάνιση {{PLURAL:$3|'''1''' αποτελέσματος|'''$3''' αποτελεσμάτων}} αρχίζοντας με #'''$2'''.",
-'showingresultstotal' => "Παρακάτω {{PLURAL:$4|το αποτέλεσμα '''$1''' του '''$3''' εμφανίζεται|τα αποτελέσματα '''$1 - $2''' του '''$3''' εμφανίζονται}}",
+'showingresultsheader' => "{{PLURAL:$5|Αποτέλεσμα '''$1''' από '''$3'''|Αποτελέσματα '''$1 - $2''' από '''$3'''}} για '''$4'''",
'nonefound' => "'''Σημείωση''': Οι ανεπιτυχείς αναζητήσεις οφείλονται συνήθως στο ότι έχουμε συμπεριλάβει στα κριτήρια μόνο συγκεκριμένες περιοχές ονομάτων. Δοκιμάστε να προσθέσετε το πρόθεμα ''all:'' - ''όλα:'' στην αναζήτηση για να ψάξετε σε όλα τα περιεχόμενα (συμπεριλαμβανόμενων των σελίδων συζητήσεως, προτὐπων κτλ.) ή χρησιμοποιήστε την επιθυμητή περιοχή ονομάτων.",
'search-nonefound' => 'Δεν υπάρχουν αποτελέσματα που να ταιριάζουν με την αναζήτησή σας.',
'powersearch' => 'Αναλυτική αναζήτηση',
@@ -1256,111 +1272,149 @@ $2',
'powersearch-ns' => 'Αναζήτηση στις περιοχές ονομάτων:',
'powersearch-redir' => 'Κατάλογος ανακατευθύνσεων',
'powersearch-field' => 'Αναζήτηση για',
+'powersearch-togglelabel' => 'Έλεγχος:',
+'powersearch-toggleall' => 'Όλες',
+'powersearch-togglenone' => 'Καμία',
'search-external' => 'Εξωτερική αναζήτηση',
'searchdisabled' => 'Η αναζήτηση για τον ιστότοπο "{{SITENAME}}" είναι απενεργοποιημένη. Μπορείτε να αναζητήσετε μέσω του Google εν τω μεταξύ. Σημειώστε ότι οι κατάλογοί τους για το περιεχόμενο του ιστοτόπου "{{SITENAME}}" μπορεί να είναι απαρχαιωμένοι.',
+# Quickbar
+'qbsettings' => 'Γρήγορη πρόσβαση',
+'qbsettings-none' => 'Καμία',
+'qbsettings-fixedleft' => 'Σταθερά αριστερά',
+'qbsettings-fixedright' => 'Σταθερά δεξιά',
+'qbsettings-floatingleft' => 'Πλανώμενα αριστερά',
+'qbsettings-floatingright' => 'Πλανώμενα δεξιά',
+
# Preferences page
-'preferences' => 'Προτιμήσεις',
-'mypreferences' => 'Οι προτιμήσεις μου',
-'prefs-edits' => 'Αριθμός επεξεργασιών:',
-'prefsnologin' => 'Δεν έχετε συνδεθεί.',
-'prefsnologintext' => 'Πρέπει να έχετε <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} συνδεθεί]</span> για να καθορίσετε τις προτιμήσεις χρήστη.',
-'prefsreset' => 'Οι προτιμήσεις σας έχουν αποκατασταθεί σύμφωνα με την αποθηκευμένη έκδοσή τους.',
-'qbsettings' => 'Γρήγορη πρόσβαση',
-'qbsettings-none' => 'Καμία',
-'qbsettings-fixedleft' => 'Σταθερά αριστερά',
-'qbsettings-fixedright' => 'Σταθερά δεξιά',
-'qbsettings-floatingleft' => 'Πλανώμενα αριστερά',
-'qbsettings-floatingright' => 'Πλανώμενα δεξιά',
-'changepassword' => 'Αλλαγή κωδικού',
-'skin' => 'Οπτική οργάνωση (skin)',
-'skin-preview' => 'Προεπισκόπηση',
-'math' => 'Απόδοση μαθηματικών',
-'dateformat' => 'Μορφή ημερομηνίας',
-'datedefault' => 'Χωρίς προτίμηση',
-'datetime' => 'Ημερομηνία και ώρα',
-'math_failure' => 'Δεν μπόρεσε να γίνει ανάλυση του όρου.',
-'math_unknown_error' => 'άγνωστο σφάλμα',
-'math_unknown_function' => 'άγνωστη συνάρτηση',
-'math_lexing_error' => 'Σφάλμα στην λεξική ανάλυση',
-'math_syntax_error' => 'Λάθος σύνταξης',
-'math_image_error' => 'Η μετατροπή σε PNG απέτυχε. Παρακαλούμε ελέγξτε ότι έχουν εγκατασταθεί σωστά τα latex, dvips, gs, και ξαναπροσπαθήστε!',
-'math_bad_tmpdir' => 'Δεν είναι δυνατή η δημιουργία μαθηματικών δεδομένων (ή η εγγραφή σε προσωρινό κατάλογο)',
-'math_bad_output' => 'Δεν είναι δυνατή η δημιουργία μαθηματικών δεδομένων (ή η εγγραφή σε κατάλογο εξόδου)',
-'math_notexvc' => 'Λείπει το εκτελέσιμο texvc -παρακαλούμε συμβουλευτείτε το math/README για να ρυθμίσετε τις παραμέτρους.',
-'prefs-personal' => 'Στοιχεία χρήστη',
-'prefs-rc' => 'Πρόσφατες αλλαγές και εμφάνιση πολύ σύντομων άρθρων',
-'prefs-watchlist' => 'Λίστα παρακολούθησης',
-'prefs-watchlist-days' => 'Ημέρες προς εμφάνιση στη λίστα παρακολούθησης:',
-'prefs-watchlist-days-max' => '(μέγιστο 7 μέρες)',
-'prefs-watchlist-edits' => 'Αριθμός επεξεργασιών προς εμφάνιση στην εκτεταμένη λίστα παρακολούθησης:',
-'prefs-watchlist-edits-max' => '(μέγιστος αριθμός: 1000)',
-'prefs-misc' => 'Διάφορες ρυθμίσεις',
-'prefs-resetpass' => 'Αλλαγή κωδικού',
-'saveprefs' => 'Αποθήκευση',
-'resetprefs' => 'Επαναφορά προτιμήσεων',
-'restoreprefs' => 'Επαναφορά όλων των προεπιλεγμένων ρυθμίσεων',
-'textboxsize' => 'Επεξεργασία',
-'prefs-edit-boxsize' => 'Μέγεθος του παραθύρου επεξεργασίας.',
-'rows' => 'Σειρές',
-'columns' => 'Στήλες',
-'searchresultshead' => 'Αποτελέσματα αναζήτησης/Ρυθμίσεις',
-'resultsperpage' => 'Αποτελέσματα ανά σελίδα',
-'contextlines' => 'Σειρές που θα εμφανίζονται ανά αποτέλεσμα',
-'contextchars' => 'Αριθμός χαρακτήρων στο εμφανιζόμενο κείμενο',
-'stub-threshold' => 'Κατώφλι για μορφοποίηση <span class="mw-stub-example">συνδέσμου επεκτάσιμου</span>:',
-'recentchangesdays' => 'Ημέρες προς εμφάνιση στις πρόσφατες αλλαγές:',
-'recentchangesdays-max' => '($1 {{PLURAL:$1|ημέρα|ημέρες}} το μέγιστο)',
-'recentchangescount' => 'Αριθμός επεξεργασιών που να εμφανίζονται στις πρόσφατες αλλαγές και τα ιστορικά σελίδων σαν προκαθορισμένη επιλογή.',
-'savedprefs' => 'Οι προτιμήσεις σας έχουν αποθηκευτεί.',
-'timezonelegend' => 'Ζώνη ώρας:',
-'timezonetext' => 'Συμπληρώστε τον αριθμό των ωρών κατά τις οποίες η τοπική σας ώρα διαφέρει από την ώρα του server (UTC).',
-'localtime' => 'Εμφάνιση τοπικής ώρας:',
-'timezoneselect' => 'Ζώνη ώρας:',
-'timezoneuseserverdefault' => 'Χρησιμοποίηση των προεπιλογών του εξυπηρετητή',
-'timezoneuseoffset' => 'Ἀλλη (καθορισμός της διαφοράς)',
-'timezoneoffset' => 'Διαφορά ωρών¹:',
-'servertime' => 'Η ώρα του διακομιστή:',
-'guesstimezone' => 'Συμπλήρωση μέσω του browser',
-'timezoneregion-africa' => 'Αφρική',
-'timezoneregion-america' => 'Αμερική',
-'timezoneregion-antarctica' => 'Ανταρκτική',
-'timezoneregion-arctic' => 'Αρκτική',
-'timezoneregion-asia' => 'Ασία',
-'timezoneregion-atlantic' => 'Ατλαντικός Ωκεανός',
-'timezoneregion-australia' => 'Αυστραλία',
-'timezoneregion-europe' => 'Ευρώπη',
-'timezoneregion-indian' => 'Ινδικός Ωκεανός',
-'timezoneregion-pacific' => 'Ειρηνικός Ωκεανός',
-'allowemail' => 'Ενεργοποίηση παραλαβής μηνύματος ηλεκτρονικού ταχυδρομείου από άλλους χρήστες',
-'prefs-searchoptions' => 'Επιλογές αναζήτησης',
-'prefs-namespaces' => 'Περιοχές ονομάτων',
-'defaultns' => 'Αναζήτηση σε αυτές τις περιοχές ονομάτων από προεπιλογή:',
-'default' => 'προεπιλογή',
-'files' => 'Αρχεία',
-'prefs-custom-css' => 'Προκαθορισμένη CSS',
-'prefs-custom-js' => 'Προκαθορισμένη JS',
+'preferences' => 'Προτιμήσεις',
+'mypreferences' => 'Οι προτιμήσεις μου',
+'prefs-edits' => 'Αριθμός επεξεργασιών:',
+'prefsnologin' => 'Δεν έχετε συνδεθεί.',
+'prefsnologintext' => 'Πρέπει να έχετε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεθεί]</span> για να καθορίσετε τις προτιμήσεις χρήστη.',
+'changepassword' => 'Αλλαγή κωδικού',
+'prefs-skin' => 'Οπτική οργάνωση (skin)',
+'skin-preview' => 'Προεπισκόπηση',
+'prefs-math' => 'Απόδοση μαθηματικών',
+'datedefault' => 'Χωρίς προτίμηση',
+'prefs-datetime' => 'Ημερομηνία και ώρα',
+'prefs-personal' => 'Στοιχεία χρήστη',
+'prefs-rc' => 'Πρόσφατες αλλαγές και εμφάνιση πολύ σύντομων άρθρων',
+'prefs-watchlist' => 'Λίστα παρακολούθησης',
+'prefs-watchlist-days' => 'Ημέρες προς εμφάνιση στη λίστα παρακολούθησης:',
+'prefs-watchlist-days-max' => '(μέγιστο 7 μέρες)',
+'prefs-watchlist-edits' => 'Αριθμός επεξεργασιών προς εμφάνιση στην εκτεταμένη λίστα παρακολούθησης:',
+'prefs-watchlist-edits-max' => '(μέγιστος αριθμός: 1000)',
+'prefs-watchlist-token' => 'Σημείο λίστας παρακολούθησης:',
+'prefs-misc' => 'Διάφορες ρυθμίσεις',
+'prefs-resetpass' => 'Αλλαγή κωδικού',
+'prefs-email' => 'Επιλογές e-mail',
+'prefs-rendering' => 'Εμφάνιση',
+'saveprefs' => 'Αποθήκευση',
+'resetprefs' => 'Επαναφορά προτιμήσεων',
+'restoreprefs' => 'Επαναφορά όλων των προεπιλεγμένων ρυθμίσεων',
+'prefs-editing' => 'Επεξεργασία',
+'prefs-edit-boxsize' => 'Μέγεθος του παραθύρου επεξεργασίας.',
+'rows' => 'Σειρές',
+'columns' => 'Στήλες',
+'searchresultshead' => 'Αποτελέσματα αναζήτησης/Ρυθμίσεις',
+'resultsperpage' => 'Αποτελέσματα ανά σελίδα',
+'contextlines' => 'Σειρές που θα εμφανίζονται ανά αποτέλεσμα',
+'contextchars' => 'Αριθμός χαρακτήρων στο εμφανιζόμενο κείμενο',
+'stub-threshold' => 'Κατώφλι για μορφοποίηση <span class="mw-stub-example">συνδέσμου επεκτάσιμου</span>:',
+'recentchangesdays' => 'Ημέρες προς εμφάνιση στις πρόσφατες αλλαγές:',
+'recentchangesdays-max' => '($1 {{PLURAL:$1|ημέρα|ημέρες}} το μέγιστο)',
+'recentchangescount' => 'Αριθμός επεξεργασιών που να εμφανίζονται για προεπιλογή.',
+'prefs-help-recentchangescount' => 'Αυτό περιλαμβάνει τις πρόσφατες αλλαγές, τα ιστορικά των σελίδων, και τα αρχεία διαγραφών.',
+'prefs-help-watchlist-token' => 'Η συμπλήρωση αυτού του πεδίου με ένα κρυφό κλειδί θα δημιουργήσει μια δράση RSS για τη λίστα παρακολούθησής σας.
+Οποιοσδήποτε ξέρει το κλειδί σε αυτό το πεδίο θα μπορεί να διαβάσει τη λίστα παρακολούθησής σας, για αυτό διαλέξτε κάτι ασφαλές.
+Εδώ είναι ένα τυχαίως δημιουργημένο προϊόν που μπορείτε να χρησιμοποιήσετε: $1',
+'savedprefs' => 'Οι προτιμήσεις σας έχουν αποθηκευτεί.',
+'timezonelegend' => 'Ζώνη ώρας:',
+'localtime' => 'Εμφάνιση τοπικής ώρας:',
+'timezoneuseserverdefault' => 'Χρησιμοποίηση των προεπιλογών του εξυπηρετητή',
+'timezoneuseoffset' => 'Ἀλλη (καθορισμός της διαφοράς)',
+'timezoneoffset' => 'Διαφορά ωρών¹:',
+'servertime' => 'Η ώρα του διακομιστή:',
+'guesstimezone' => 'Συμπλήρωση μέσω του browser',
+'timezoneregion-africa' => 'Αφρική',
+'timezoneregion-america' => 'Αμερική',
+'timezoneregion-antarctica' => 'Ανταρκτική',
+'timezoneregion-arctic' => 'Αρκτική',
+'timezoneregion-asia' => 'Ασία',
+'timezoneregion-atlantic' => 'Ατλαντικός Ωκεανός',
+'timezoneregion-australia' => 'Αυστραλία',
+'timezoneregion-europe' => 'Ευρώπη',
+'timezoneregion-indian' => 'Ινδικός Ωκεανός',
+'timezoneregion-pacific' => 'Ειρηνικός Ωκεανός',
+'allowemail' => 'Ενεργοποίηση παραλαβής μηνύματος ηλεκτρονικού ταχυδρομείου από άλλους χρήστες',
+'prefs-searchoptions' => 'Επιλογές αναζήτησης',
+'prefs-namespaces' => 'Περιοχές ονομάτων',
+'defaultns' => 'Ειδάλλως αναζήτηση σε αυτές τις περιοχές ονομάτων:',
+'default' => 'προεπιλογή',
+'prefs-files' => 'Αρχεία',
+'prefs-custom-css' => 'Προκαθορισμένη CSS',
+'prefs-custom-js' => 'Προκαθορισμένη JS',
+'prefs-reset-intro' => 'Μπορείτε να χρησιμοποιήσετε αυτήν την σελίδα για να επαναρρυθμίσετε τις προτιμήσεις σας στις προεπιλογές του ιστότοπου. Αυτό δεν μπορεί να αναστρεφθεί.',
+'prefs-emailconfirm-label' => 'Επιβεβαίωση e-mail:',
+'prefs-textboxsize' => 'Μέγεθος πλαίσιου επεξεργασίας',
+'youremail' => 'Ηλεκτρονική διεύθυνση*',
+'username' => 'Όνομα χρήστη:',
+'uid' => 'Αριθμός αναγνώρισης χρήστη:',
+'prefs-memberingroups' => 'Μέλος {{PLURAL:$1|ομάδας|ομάδων}}:',
+'prefs-registration' => 'Χρόνος εγγραφής:',
+'yourrealname' => 'Πραγματικό όνομα:',
+'yourlanguage' => 'Γλώσσα:',
+'yourvariant' => 'Η γλώσσα που χρησιμοποιείτε',
+'yournick' => 'Υπογραφή:',
+'prefs-help-signature' => 'Τα σχόλια στις σελίδες συζήτησης θα πρέπει να υπογράφονται με "<nowiki>~~~~</nowiki>" το οποίο μετατρέπεται στην υπογραφή σας και σε μία σφραγίδα χρόνου.',
+'badsig' => 'Άκυρη υπογραφή raw: ελέγξτε τις ετικέτες HTML.',
+'badsiglength' => 'Η υπογραφή σας είναι πολύ μεγάλη.
+Πρέπει να είναι κάτω από $1 {{PLURAL:$1|χαρακτήρα|χαρακτήρες}}.',
+'yourgender' => 'Φύλο:',
+'gender-unknown' => 'Αδιευκρίνιστο',
+'gender-male' => 'Άντρας',
+'gender-female' => 'Γυναίκα',
+'prefs-help-gender' => 'Προαιρετικό: χρησιμοποιείται για απεύθυνση στο σωστό φύλο από το λογισμικό. Αυτή η πληροφορία θα είναι δημόσια.',
+'email' => 'Ηλεκτρονικό ταχυδρομείο',
+'prefs-help-realname' => '* Πραγματικό όνομα (προαιρετικό): εφόσον εισάγετε το όνομά σας, αυτό θα μπορεί να χρησιμοποιηθεί για να αναγνωριστεί η δουλειά σας.',
+'prefs-help-email' => 'Το ηλεκτρονικό ταχυδρομείο είναι προαιρετικό, ωστόσο δίνει τη δυνατότητα να σας αποσταλεί ένας νέος κωδικός στην περίπτωση που ξεχάσετε τον κωδικό σας.
+Μπορείτε επίσης να επιτρέψετε σε άλλους χρήστες να επικοινωνήσουν μαζί σας μέσω της σελίδας χρήστη ή της σελίδας συζήτησης χωρίς να αποκαλύπτεται η ταυτότητά σας.',
+'prefs-help-email-required' => 'Απαιτείται διεύθυνση ηλεκτρονικού ταχυδρομείου.',
+'prefs-info' => 'Βασικές πληροφορίες',
+'prefs-i18n' => 'Διεθνοποίηση',
+'prefs-signature' => 'Υπογραφή',
+'prefs-dateformat' => 'Μορφή ημερομηνίας',
+'prefs-timeoffset' => 'Διαφορά χρόνου',
+'prefs-advancedediting' => 'Προηγμένες επιλογές',
+'prefs-advancedrc' => 'Προηγμένες επιλογές',
+'prefs-advancedrendering' => 'Προηγμένες επιλογές',
+'prefs-advancedsearchoptions' => 'Προηγμένες επιλογές',
+'prefs-advancedwatchlist' => 'Προηγμένες επιλογές',
+'prefs-display' => 'Εμφάνιση επιλογών',
+'prefs-diffs' => 'Διαφορές',
# User rights
-'userrights' => 'Διαχείριση δικαιωμάτων χρηστών', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Διαχείριση ομάδων χρηστών',
-'userrights-user-editname' => 'Δηλώστε όνομα χρήστη:',
-'editusergroup' => 'Επεξεργασία ομάδων χρηστών',
-'editinguser' => "Αλλαγή των δικαιωμάτων χρήστη γα το χρήστη '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Επεξεργασία ομάδων χρηστών',
-'saveusergroups' => 'Αποθήκευση ομάδων χρηστών',
-'userrights-groupsmember' => 'Μέλος της ομάδας:',
-'userrights-groups-help' => 'Μπορείτε να τροποποιήσετε τις ομάδες στις οποίες ανήκει αυτός ο χρήστης:
+'userrights' => 'Διαχείριση δικαιωμάτων χρηστών',
+'userrights-lookup-user' => 'Διαχείριση ομάδων χρηστών',
+'userrights-user-editname' => 'Δηλώστε όνομα χρήστη:',
+'editusergroup' => 'Επεξεργασία ομάδων χρηστών',
+'editinguser' => "Αλλαγή των δικαιωμάτων χρήστη γα το χρήστη '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Επεξεργασία ομάδων χρηστών',
+'saveusergroups' => 'Αποθήκευση ομάδων χρηστών',
+'userrights-groupsmember' => 'Μέλος της ομάδας:',
+'userrights-groupsmember-auto' => 'Αυτονόητο μέλος του:',
+'userrights-groups-help' => 'Μπορείτε να τροποποιήσετε τις ομάδες στις οποίες ανήκει αυτός ο χρήστης:
* Ένα κουτί με check δηλώνει ότι ο χρήστης ανήκει σε αυτήν την ομάδα.
* Ένα κουτί χωρίς check δηλώνει ότι ο χρήστης δεν ανήκει σε αυτήν την ομάδα.
* Ένας αστερίσκος (*) δηλώνει ότι δεν μπορείτε να αφαιρέσετε την ομάδα αφού την προσθέσετε ή και το αντίστροφο.',
-'userrights-reason' => 'Αιτία:',
-'userrights-no-interwiki' => 'Δεν έχετε άδεια να επεξεργαστείτε τα δικαιώματα χρηστών σε άλλα wiki.',
-'userrights-nodatabase' => 'Η βάση δεδομένων $1 δεν υπάρχει ή δεν είναι τοπική.',
-'userrights-nologin' => 'Πρέπει να [[Special:UserLogin|συνδεθείτε]] με έναν λογαριασμό διαχειριστή συστήματος ώστε να ορίσετε δικαιώματα χρηστών.',
-'userrights-notallowed' => 'Ο λογαριασμός σας δεν έχει άδεια για να ορίσει δικαιώματα χρηστών.',
-'userrights-changeable-col' => 'Ομάδες που μπορείτε να αλλάξετε',
-'userrights-unchangeable-col' => 'Ομάδες που δεν μπορείτε να αλλάξετε',
+'userrights-reason' => 'Αιτία:',
+'userrights-no-interwiki' => 'Δεν έχετε άδεια να επεξεργαστείτε τα δικαιώματα χρηστών σε άλλα wiki.',
+'userrights-nodatabase' => 'Η βάση δεδομένων $1 δεν υπάρχει ή δεν είναι τοπική.',
+'userrights-nologin' => 'Πρέπει να [[Special:UserLogin|συνδεθείτε]] με έναν λογαριασμό διαχειριστή συστήματος ώστε να ορίσετε δικαιώματα χρηστών.',
+'userrights-notallowed' => 'Ο λογαριασμός σας δεν έχει άδεια για να ορίσει δικαιώματα χρηστών.',
+'userrights-changeable-col' => 'Ομάδες που μπορείτε να αλλάξετε',
+'userrights-unchangeable-col' => 'Ομάδες που δεν μπορείτε να αλλάξετε',
# Groups
'group' => 'Ομάδα:',
@@ -1413,6 +1467,7 @@ $2',
'right-bigdelete' => 'Διαγραφή σελίδων με εκτεταμένο ιστορικό',
'right-deleterevision' => 'Διαγραφή και επαναφορά συγκεκριμένων εκδόσεων σελίδων',
'right-deletedhistory' => 'Προβολή διαγραμμένων εκδόσεων του ιστορικού, χωρίς το σχετικό κείμενο',
+'right-deletedtext' => 'Εμφάνιση διεγραμμένου κειμένου και αλλαγών ανάμεσα στις διεγραμμένες εκδόσεις',
'right-browsearchive' => 'Αναζήτηση στις διαγραμμένες σελίδες',
'right-undelete' => 'Ανάκληση διαγραφής μίας σελίδας',
'right-suppressrevision' => 'Επιθεώρηση και αποκατάσταση αναθεωρήσεων κρυμμένων από τους διαχειριστές',
@@ -1426,6 +1481,8 @@ $2',
'right-editprotected' => 'Επεξεργασία προστατευμένων σελίδων (χωρίς διαδοχική προστασία)',
'right-editinterface' => 'Επεξεργασία της διασύνδεσης χρήστη',
'right-editusercssjs' => 'Μεταγραφή των αρχείων CSS και JS άλλων χρηστών',
+'right-editusercss' => 'Μεταγραφή των αρχείων CSS άλλων χρηστών',
+'right-edituserjs' => 'Μεταγραφή των αρχείων JS άλλων χρηστών',
'right-rollback' => 'Γρήγορη αναστροφή των επεξεργασιών του τελευταίου χρήστη που επεξεργάστηκε μια σελίδα',
'right-markbotedits' => 'Σήμανση επαναφερόμενων επεξεργασιών ως επεξεργασιών μποτ',
'right-noratelimit' => 'Να μην επηρεάζεται από τα όρια ρυθμού',
@@ -1442,6 +1499,8 @@ $2',
'right-siteadmin' => 'Κλείδωμα και ξεκλείδωμα της βάσης δεδομένων',
'right-reset-passwords' => 'Αρχικοποίηση κωδικών πρόσβασης άλλων χρηστών/χρηστριών',
'right-override-export-depth' => 'Εξαγωγή σελίδων συμπεριλαμβάνοντας συνδεδεμένες σελίδες έως ένα βάθος 5 επιπέδων',
+'right-versiondetail' => 'Προβολή των εκτεταμένων πληροφοριών της έκδοσης λογισμικού.',
+'right-sendemail' => 'Αποστολή ηλεκτρονικού μηνύματος σε άλλους χρήστες',
# User rights log
'rightslog' => 'Αρχείο καταγραφών δικαιωμάτων χρηστών',
@@ -1491,6 +1550,15 @@ $2',
'recentchanges-legend' => 'Επιλογές των πρόσφατων αλλαγών',
'recentchangestext' => 'Παρακολουθείστε σε αυτή τη σελίδα τις πιο πρόσφατες αλλαγές στο Wiki.',
'recentchanges-feed-description' => 'Παρακολουθείστε τις πιο πρόσφατες αλλαγές στο wiki σε αυτή τη ροή δεδομένων.',
+'recentchanges-label-legend' => 'Λεζάντα: $1.',
+'recentchanges-legend-newpage' => '$1 - νέα σελίδα',
+'recentchanges-label-newpage' => 'Αυτή η επεξεργασία δημιούργησε μια νέα σελίδα',
+'recentchanges-legend-minor' => '$1 - αλλαγή μικρής κλίμακας',
+'recentchanges-label-minor' => 'Αυτή είναι μια αλλαγή μικρής κλίμακας',
+'recentchanges-legend-bot' => '$1 - αλλαγή bot',
+'recentchanges-label-bot' => 'Αυτή η επεξεργασία έγινε από ένα bot',
+'recentchanges-legend-unpatrolled' => '$1 - μη ελεγμένη αλλαγή',
+'recentchanges-label-unpatrolled' => 'Αυτή η αλλαγή δεν έχει ελεγχθεί ακόμα',
'rcnote' => "Παρακάτω {{PLURAL:$1|υπάρχει '''1''' αλλαγή|υπάρχουν οι τελευταίες '''$1''' αλλαγές}} στο διάστημα {{PLURAL:$2|της τελευταίας ημέρας|των τελευταίων '''$2''' ημερών}}, από τις $5, $4 και εξής.",
'rcnotefrom' => 'Ακολουθούν οι αλλαγές από <b>$2</b> (εμφάνιση <b>$1</b> αλλαγών max).',
'rclistfrom' => 'Εμφάνιση νέων αλλαγών αρχίζοντας από $1',
@@ -1517,6 +1585,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Σχετικές αλλαγές',
+'recentchangeslinked-feed' => 'Σχετικές αλλαγές',
+'recentchangeslinked-toolbox' => 'Σχετικές αλλαγές',
'recentchangeslinked-title' => 'Αλλαγές σχετικές με το "$1"',
'recentchangeslinked-noresult' => 'Δεν υπάρχουν αλλαγές στις συνδεδεμένες σελίδες κατά τη διάρκεια της δοσμένης περιόδου.',
'recentchangeslinked-summary' => "Αυτός είναι ένα κατάλογος αλλαγών που έγιναν πρόσφατα σε σελίδες που συνδέονται από μια καθορισμένη σελίδα (ή σε μέλη μιας καθορισμένης κατηγορίας).
@@ -1527,8 +1597,8 @@ $2',
# Upload
'upload' => 'Φόρτωση αρχείου',
'uploadbtn' => 'Φόρτωση αρχείου',
-'reupload' => 'Επανάληψη φόρτωσης',
'reuploaddesc' => 'Επιστροφή στη φόρμα φόρτωσης',
+'upload-tryagain' => 'Η καταχώρηση άλλαξε την περιγραφή αρχείου',
'uploadnologin' => 'Δεν έχετε συνδεθεί!',
'uploadnologintext' => 'Για να φορτώσετε αρχεία πρέπει πρώτα να [[Special:UserLogin|συνδεθείτε]].',
'upload_directory_missing' => 'Λείπει το αποθηκευτήριο επιφορτώσεων ($1) και δεν μπορεί να δημιουργηθεί από τον webserver.',
@@ -1558,6 +1628,7 @@ $2',
'minlength1' => 'Τα ονόματα αρχείων πρέπει να είναι τουλάχιστον ένα γράμμα.',
'illegalfilename' => 'Το όνομα του αρχείου "$1" περιέχει χαρακτήρες που δεν επιτρέπονται στους τίτλους των σελίδων. Παρακαλούμε δώστε άλλο όνομα στο αρχείο και προσπαθήστε ξανά να το ανεβάσετε.',
'badfilename' => 'Το όνομα της εικόνας άλλαξε σε "$1".',
+'filetype-mime-mismatch' => 'Η επέκταση αρχείου δεν ταιριάζει με τον τύπο MIME.',
'filetype-badmime' => 'Αρχεία του τύπου MIME "$1" δεν επιτρέπεται να επιφορτωθούν.',
'filetype-bad-ie-mime' => 'Δεν μπορεί να επιφορτωθεί αυτό το αρχείο επειδή ο Internet Explorer θα το αναγνώριζε ως "$1", που είναι μη επιτρεπτός και πιθανά επικίνδυνος τύπος αρχείου.',
'filetype-unwanted-type' => "'''\".\$1\"''' είναι ανεπιθύμητος τύπος αρχείου.
@@ -1577,7 +1648,6 @@ $2',
* Όνομα του προς επιφόρτωση αρχείου: '''<tt>[[:$1]]</tt>'''
* Όνομα υπάρχοντος αρχείου: '''<tt>[[:$2]]</tt>'''
Παρακαλώ διαλέξτε ένα διαφορετικό όνομα.",
-'fileexists-thumb' => "<center>'''Υπάρχουσα εικόνα'''</center>",
'fileexists-thumbnail-yes' => "Το αρχείο φαίνεται ότι είναι μια εικόνα μειωμένου μεγέθους ''(μικρογραφία)''. [[$1|thumb]]
Παρακαλώ ελέγξτε το αρχείο '''<tt>[[:$1]]</tt>'''.
Αν το ελεγμένο αρχείο είναι η ίδια εικόνα στο αρχικό μέγεθος δεν είναι απαραίτητο να επιφορτώσετε μια επιπλέον μικρογραφία.",
@@ -1591,6 +1661,7 @@ $2',
'file-deleted-duplicate' => 'Αρχείο παρόμοιο με αυτό εδώ ([[$1]]) έχει προηγουμένως διαγραφεί. Θα πρέπει να ελέγξετε το ιστορικό διαγραφής του πριν να προχωρήσετε στην επαναφόρτωσή του.',
'successfulupload' => 'Επιτυχής φόρτωση',
'uploadwarning' => 'Προειδοποίηση φόρτωσης',
+'uploadwarning-text' => 'Παρακαλώ αλλάξτε την περιγραφή του αρχείου παρακάτω και προσπαθήστε ξανά.',
'savefile' => 'Αποθήκευση αρχείου',
'uploadedimage' => 'Η φόρτωση του "$1" ολοκληρώθηκε.',
'overwroteimage' => 'ανέβασμα νέας έκδοσης του "[[$1]]"',
@@ -1598,11 +1669,14 @@ $2',
'uploaddisabledtext' => 'Η φόρτωση αρχείων είναι απενεργοποιημένη.',
'php-uploaddisabledtext' => 'Οι επιφορτώσεις αρχείων ειναι απενεργοποιημένες στην PHP. Παρακαλούμε, ελέγξτε την ρύθμιση file_uploads.',
'uploadscripted' => 'Αυτό το αρχείο περιέχει κώδικα HTML ή script που μπορεί να παρερμηνευθεί από μερικούς browser.',
-'uploadcorrupt' => 'Το αρχείο είναι κατεστραμμένο ή έχει κάποια λανθασμένη επέκταση. Παρακαλούμε ελέγξτε το και ξαναδοκιμάστε να το ανεβάσετε.',
'uploadvirus' => 'Το αρχείο περιέχει ιό! Λεπτομέρειες: $1',
+'upload-source' => 'Αρχείο πηγής',
'sourcefilename' => 'Όνομα πηγαίου αρχείου:',
+'sourceurl' => 'URL πηγής:',
'destfilename' => 'Όνομα αρχείου προορισμού:',
'upload-maxfilesize' => 'Μέγιστο μέγεθος αρχείου: $1',
+'upload-description' => 'Περιγραφή αρχείου',
+'upload-options' => 'Επιλογές φόρτωσης',
'watchthisupload' => 'Παρακολουθήστε αυτό το αρχείο',
'filewasdeleted' => 'Ένα αρχείο με αυτό το όνομα είχε επιφορτωθεί προηγουμένως και επακολούθως διαγράφηκε. Θα έπρεπε να ελέγξετε το $1 πριν προσπαθήσετε να το επιφορτώσετε ξανά.',
'upload-wasdeleted' => "'''Προειδοποίηση: Ανεβάζετε ένα αρχείο που είχε προηγουμένως διαγραφεί.'''
@@ -1626,15 +1700,46 @@ MGP # Pentax
PICT # διάφορα
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'Λανθασμένο πρωτόκολλο',
-'upload-proto-error-text' => 'Η απομακρυσμένη επιφόρτωση απαιτεί URL με πρόθεμα <code>http://</code> ή <code>ftp://</code>.',
-'upload-file-error' => 'Εσωτερικό σφάλμα',
-'upload-file-error-text' => 'Ένα εσωτερικό σφάλμα εμφανίστηκε κατά την προσπάθεια δημιουργίας ενός προσωρινού αρχείου στον εξυπηρετητή.
+'upload-proto-error' => 'Λανθασμένο πρωτόκολλο',
+'upload-proto-error-text' => 'Η απομακρυσμένη επιφόρτωση απαιτεί URL με πρόθεμα <code>http://</code> ή <code>ftp://</code>.',
+'upload-file-error' => 'Εσωτερικό σφάλμα',
+'upload-file-error-text' => 'Ένα εσωτερικό σφάλμα εμφανίστηκε κατά την προσπάθεια δημιουργίας ενός προσωρινού αρχείου στον εξυπηρετητή.
Παρακαλούμε επικοινωνήστε με έναν [[Special:ListUsers/sysop|διαχειριστή]] του συστήματος.',
-'upload-misc-error' => 'Άγνωστο σφάλμα επιφόρτωσης',
-'upload-misc-error-text' => 'Ένα άγνωστο σφάλμα εμφανίστηκε κατά τη διάρκεια της επιφόρτωσης.
+'upload-misc-error' => 'Άγνωστο σφάλμα επιφόρτωσης',
+'upload-misc-error-text' => 'Ένα άγνωστο σφάλμα εμφανίστηκε κατά τη διάρκεια της επιφόρτωσης.
Παρακαλούμε επιβεβαιώστε ότι το URL είναι έγκυρο και προσβάσιμο, και προσπαθήστε ξανά.
Εάν το πρόβλημα παραμένει, επικοινωνήστε με έναν [[Special:ListUsers/sysop|διαχειριστή του συστήματος]].',
+'upload-too-many-redirects' => 'Το URL περιείχε πάρα πολλές ανακατευθύνσεις',
+'upload-unknown-size' => 'Άγνωστο μέγεθος',
+'upload-http-error' => 'Εμφανίστηκε κάποιο σφάλμα HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Δεν επετράπη η πρόσβαση',
+'img-auth-nopathinfo' => 'Υπολείπεται το PATH_INFO.
+Ο διακομιστής σας δεν είναι παραμετροποιημένος για να περάσει αυτές τις πληροφορίες.
+Μπορεί να είναι βασισμένος σε CGI και να μην υποστηρίζει img_atuh.
+Συμβουλευτείτε το http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Η ζητούμενη διαδρομή δεν βρίσκεται στον διαμορφωμένο αρχειοκατάλογο επιφορτώσεων',
+'img-auth-badtitle' => 'Αδύνατη η κατασκευή έγκυρου τίτλου από "$1".',
+'img-auth-nologinnWL' => 'Δεν έχετε συνδεθεί και η "$1" δεν είναι στην άσπρη λίστα.',
+'img-auth-nofile' => 'Το αρχείο "$1" δεν υπάρχει',
+'img-auth-isdir' => 'Προσπαθείτε να αποκτήσετε πρόσβαση στον αρχειοκατάλογο "$1".
+Μόνον η πρόσβαση σε αρχεία είναι επιτρεπτή.',
+'img-auth-streaming' => 'Ροή "$1".',
+'img-auth-public' => 'Η λειτουργία του img_auth.php είναι να εξάγει αρχεία από ένα ιδιωτικό wiki.
+Αυτό το wiki έχει ρυθμιστεί ως δημόσιο wiki.
+Για τη μεγαλύτερη δυνατή ασφάλεια, η img_auth.php είναι απενεργοποιημένη.',
+'img-auth-noread' => 'Ο χρήστης δεν έχει πρόσβαση στο να διαβάσει το "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Άκυρη διεύθυνση URL: $1',
+'http-invalid-scheme' => 'URL με το σχήμα "$1" δεν υποστηρίζονται',
+'http-request-error' => 'Το αίτημα HTTP απέτυχε λόγω αγνώστου σφάλματος.',
+'http-read-error' => 'Σφάλμα ανάγνωσης HTTP.',
+'http-timed-out' => 'Ο χρόνος του αιτήματος HTTP έληξε.',
+'http-curl-error' => 'Σφάλμα κατά τη λήψη του URL: $1',
+'http-host-unreachable' => 'Το URL δεν ήταν προσβάσιμο.',
+'http-bad-status' => 'Υπήρξε πρόβλημα κατά τη διάρκεια του αιτήματος HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Το URL δεν ήταν προσβάσιμο',
@@ -1643,6 +1748,7 @@ PICT # διάφορα
'upload-curl-error28-text' => 'Ο ιστότοπος άργησε πολύ να αποκριθεί. Παρακαλούμε ελέγξτε ότι ο ιστότοπος είναι διαθέσιμος, περιμένετε για λίγο και προσπαθήστε ξανά. Μπορεί να θέλετε να δοκιμάσετε σε μια λιγότερο πολυσύχναστη ώρα.',
'license' => 'Άδεια χρήσης:',
+'license-header' => 'Άδεια χρήσης',
'nolicense' => 'Καμία επιλεγμένη',
'license-nopreview' => '(Μη διαθέσιμη προεπισκόπηση)',
'upload_source_url' => ' (ένα έγκυρο, δημόσια προσβάσιμο URL)',
@@ -1663,6 +1769,7 @@ PICT # διάφορα
'listfiles_count' => 'Εκδόσεις',
# File description page
+'file-anchor-link' => 'Αρχείο',
'filehist' => 'Ιστορικό αρχείου',
'filehist-help' => 'Πατήστε σε μια ημερομηνία/ώρα για να δείτε το αρχείο όπως εμφανιζόταν εκείνη την ώρα.',
'filehist-deleteall' => 'διαγραφή όλων',
@@ -1677,6 +1784,7 @@ PICT # διάφορα
'filehist-dimensions' => 'Διαστάσεις',
'filehist-filesize' => 'Μέγεθος',
'filehist-comment' => 'Σχόλια',
+'filehist-missing' => 'Το αρχείο λείπει',
'imagelinks' => 'Συνδέσεις αρχείου',
'linkstoimage' => '{{PLURAL:$1|Η ακόλουθη σελίδα συνδέεται|$1 Οι ακόλουθες σελίδες συνδέονται}} με αυτό το αρχείο:',
'linkstoimage-more' => 'Περισσότεροι από $1 {{PLURAL:$1|σύνδεσμο|σύνδεσμοι}} συνδέονται με αυτό το αρχείο.
@@ -1686,15 +1794,16 @@ PICT # διάφορα
'morelinkstoimage' => 'Δείτε [[Special:WhatLinksHere/$1|περισσότερους συνδέσμους]] προς αυτό το αρχείο.',
'redirectstofile' => '{{PLURAL:$1|Το ακόλουθο αρχείο ανακατευθύνει|$1 Τα ακόλουθα αρχεία ανακατευθύνουν}} προς αυτό το αρχείο:',
'duplicatesoffile' => '{{PLURAL:$1|Το ακόλουθο αρχείο είναι διπλότυπο|Τα $1 ακόλουθα αρχεία είναι διπλότυπα}} αυτού του αρχείου ([[Special:FileDuplicateSearch/$2|περισσότερες λεπτομέρειες]]):',
-'sharedupload' => 'Το αρχείο αυτό είναι από το $1 και είναι δυνατόν να χρησιμοποιείται από άλλα εγχειρήματα.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Παρακαλούμε συμβουλευθείτε την [$1 σελίδα περιγραφής αρχείου] για περισσότερες πληροφορίες.',
-'shareduploadwiki-desc' => 'Η περιγραφή στη $1 του εκεί, βρίσκεται παρακάτω.',
-'shareduploadwiki-linktext' => 'σελίδας περιγραφής αρχείου',
-'noimage' => 'Δεν υπάρχει αρχείο με αυτό το όνομα, αλλά μπορείτε να $1.',
-'noimage-linktext' => 'επιφορτώστε ένα',
+'sharedupload' => 'Το αρχείο αυτό είναι από το $1 και είναι δυνατόν να χρησιμοποιείται από άλλα εγχειρήματα.',
+'sharedupload-desc-there' => 'Αυτό το αρχείο προέρχεται από το $1 και ενδέχεται να χρησιμοποιείται και από άλλα εγχειρήματα.
+Παρακαλούμε δείτε τη [$2 σελίδα περιγραφής του αρχείου] για περισσότερες πληροφορίες.',
+'sharedupload-desc-here' => 'Το αρχείο είναι από το $1 και ενδέχεται να χρησιμοποιείται από άλλα εγχειρήματα.
+Η περιγραφή στη [$2 σελίδα περιγραφής αρχείου] εμφανίζεται παρακάτω.',
+'filepage-nofile' => 'Κανένα αρχείο με αυτό το όνομα δεν υπάρχει',
+'filepage-nofile-link' => 'Δεν υπάρχει τέτοιο αρχείο, αλλἀ μπορείτε να [$1 το επιφορτώσετε].',
'uploadnewversion-linktext' => 'Φορτώστε μια νέα έκδοση αυτού του αρχείου',
-'shared-repo-from' => 'από το $1', # $1 is the repository name
-'shared-repo' => 'ένα κοινό εναποθετήριο', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'από το $1',
+'shared-repo' => 'ένα κοινό εναποθετήριο',
# File reversion
'filerevert' => 'Επαναφορά $1',
@@ -1723,6 +1832,7 @@ PICT # διάφορα
** Παραβίαση πνευματικών δικαιωμάτων
** Το αρχείο υπάρχει δυο φορές',
'filedelete-edit-reasonlist' => 'Επεξεργασία λόγων διαγραφής',
+'filedelete-maintenance' => 'Η διαγραφή κι η επαναφορά αρχείων είναι προσωρινά αδύνατη λόγω συντήρησης.',
# MIME search
'mimesearch' => 'Αναζήτηση MIME',
@@ -1743,7 +1853,7 @@ PICT # διάφορα
# Random page
'randompage' => 'Τυχαία σελίδα',
-'randompage-nopages' => 'Δεν υπάρχουν σελίδες σε αυτή την περιοχή ονομάτων "$1".',
+'randompage-nopages' => 'Δεν υπάρχουν σελίδες σε {{PLURAL:$2|αυτή την περιοχή ονομάτων|αυτές τις περιοχές ονομάτων}}: $1.',
# Random redirect
'randomredirect' => 'Τυχαία ανακατεύθυνση',
@@ -1755,6 +1865,7 @@ PICT # διάφορα
'statistics-header-edits' => 'Στατιστικά επεξεργασιών',
'statistics-header-views' => 'Εμφάνιση στατιστικών',
'statistics-header-users' => 'Στατιστικά χρηστών',
+'statistics-header-hooks' => 'Άλλα στατιστικά',
'statistics-articles' => 'Σελίδες περιεχομένου',
'statistics-pages' => 'Σελίδες',
'statistics-pages-desc' => 'Όλες οι σελίδες του wiki, συμπεριλαμβανομένων των σελίδων συζήτησης, ανακατευθύνσεων, κλπ.',
@@ -1782,8 +1893,8 @@ PICT # διάφορα
'brokenredirects' => 'Λανθασμένες ανακατευθύνσεις',
'brokenredirectstext' => 'Οι παρακάτω ανακατευθύνσεις οδηγούν σε σελίδες που δεν υπάρχουν:',
-'brokenredirects-edit' => '(επεξεργασία)',
-'brokenredirects-delete' => '(διαγραφή)',
+'brokenredirects-edit' => 'επεξεργασία',
+'brokenredirects-delete' => 'διαγραφή',
'withoutinterwiki' => 'Σελίδες χωρίς διαγλωσσικούς συνδέσμους',
'withoutinterwiki-summary' => 'Οι ακόλουθες σελίδες δεν συνδέουν σε εκδόσεις σε άλλες γλώσσες.',
@@ -1889,15 +2000,16 @@ PICT # διάφορα
# Special:Categories
'categories' => 'Κατηγορίες',
-'categoriespagetext' => 'Οι ακόλουθες κατηγορίες περιέχουν σελίδες ή αρχεία. Οι [[Special:UnusedCategories|αχρησιμοποίητες κατηγορίες]] δεν εμφανίζονται εδώ.
+'categoriespagetext' => 'Οι ακόλουθες {{PLURAL:$1|κατηγορία περιέχει|κατηγορίες περιέχουν}} σελίδες ή μέσα. Οι [[Special:UnusedCategories|αχρησιμοποίητες κατηγορίες]] δεν εμφανίζονται εδώ.
Δείτε επίσης τις [[Special:WantedCategories|ζητούμενες κατηγορίες]].',
'categoriesfrom' => 'Εμφάνιση κατηγοριών που αρχίζουν από:',
'special-categories-sort-count' => 'ταξινόμηση κατά απαρίθμηση',
'special-categories-sort-abc' => 'αλφαβητική ταξινόμηση',
# Special:DeletedContributions
-'deletedcontributions' => 'Διαγραμμένες συνεισφορές χρήστη',
-'deletedcontributions-title' => 'Διαγραμμένες συνεισφορές χρήστη',
+'deletedcontributions' => 'Διαγραμμένες συνεισφορές χρήστη',
+'deletedcontributions-title' => 'Διαγραμμένες συνεισφορές χρήστη',
+'sp-deletedcontributions-contribs' => 'συνεισφορές',
# Special:LinkSearch
'linksearch' => 'Εξωτερικοί σύνδεσμοι',
@@ -1913,6 +2025,16 @@ PICT # διάφορα
'listusersfrom' => 'Προβολή χρηστών ξεκινώντας από:',
'listusers-submit' => 'Δείξε',
'listusers-noresult' => 'Δεν βρέθηκε χρήστης.',
+'listusers-blocked' => '(υπό φραγή)',
+
+# Special:ActiveUsers
+'activeusers' => 'Κατάλογος ενεργών χρηστών',
+'activeusers-intro' => 'Αυτή είναι μια λίστα από χρήστες που είχαν κάποιου είδους δραστηριότητα {{PLURAL:$1|την τελευταία $1 μέρα|τις τελευταίες $1 μέρες}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}} {{PLURAL:$3|την τελευταία ημέρα|τις τελευταίες $3 ημέρες}}',
+'activeusers-from' => 'Προβολή χρηστών ξεκινώντας από:',
+'activeusers-hidebots' => 'Απόκρυψη bots',
+'activeusers-hidesysops' => 'Απόκρυψη διαχειριστών',
+'activeusers-noresult' => 'Δεν βρέθηκε χρήστης.',
# Special:Log/newusers
'newuserlogpage' => 'Αρχείο δημιουργίας χρηστών',
@@ -1923,17 +2045,23 @@ PICT # διάφορα
'newuserlog-autocreate-entry' => 'Ο λογαριασμός έχει δημιουργηθεί αυτόματα',
# Special:ListGroupRights
-'listgrouprights' => 'Δικαιώματα ομάδων χρηστών',
-'listgrouprights-summary' => 'Ακόλουθεί μία λίστα με τις ομάδες χρηστών σε αυτό το wiki καθώς και με τα δικαιώματα πρόσβασης αυτών.
+'listgrouprights' => 'Δικαιώματα ομάδων χρηστών',
+'listgrouprights-summary' => 'Ακόλουθεί μία λίστα με τις ομάδες χρηστών σε αυτό το wiki καθώς και με τα δικαιώματα πρόσβασης αυτών.
Ενδέχεται να περιέχει [[{{MediaWiki:Listgrouprights-helppage}}|πρόσθετες πληροφορίες]] σχετικά με ατομικά δικαιώματα.',
-'listgrouprights-group' => 'Ομάδα',
-'listgrouprights-rights' => 'Δικαιώματα',
-'listgrouprights-helppage' => 'Help:Δικαιώματα ομάδων',
-'listgrouprights-members' => '(κατάλογος μελών)',
-'listgrouprights-addgroup' => 'Μπορεί να προσθέσει {{PLURAL:$2|ομάδα|ομάδες}}: $1',
-'listgrouprights-removegroup' => 'Μπορεί να αφαιρέσει {{PLURAL:$2|ομάδα|ομάδες}}: $1',
-'listgrouprights-addgroup-all' => 'Μπορεί να προσθέσει όλες τις ομάδες',
-'listgrouprights-removegroup-all' => 'Μπορεί να αφαιρέσει όλες τις ομάδες',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Δόθηκε δικαίωμα</span>
+* <span class="listgrouprights-revoked">Ανακλήθηκε δικαίωμα</span>',
+'listgrouprights-group' => 'Ομάδα',
+'listgrouprights-rights' => 'Δικαιώματα',
+'listgrouprights-helppage' => 'Help:Δικαιώματα ομάδων',
+'listgrouprights-members' => '(κατάλογος μελών)',
+'listgrouprights-addgroup' => 'Μπορεί να προσθέσει {{PLURAL:$2|ομάδα|ομάδες}}: $1',
+'listgrouprights-removegroup' => 'Μπορεί να αφαιρέσει {{PLURAL:$2|ομάδα|ομάδες}}: $1',
+'listgrouprights-addgroup-all' => 'Μπορεί να προσθέσει όλες τις ομάδες',
+'listgrouprights-removegroup-all' => 'Μπορεί να αφαιρέσει όλες τις ομάδες',
+'listgrouprights-addgroup-self' => 'Μπορεί να προσθέσει {{PLURAL:$2|ομάδα|ομάδες}} στο δικό σας λογαριασμό: $1',
+'listgrouprights-removegroup-self' => 'Μπορεί να αφαιρέσει {{PLURAL:$2|ομάδα|ομάδες}} από το δικό σας λογαριασμό: $1',
+'listgrouprights-addgroup-self-all' => 'Μπορεί να προσθέσει όλες τις ομάδες στο δικό σας λογαριασμό',
+'listgrouprights-removegroup-self-all' => 'Μπορεί να αφαιρέσει όλες τις ομάδες από το δικό σας λογαριασμό',
# E-mail user
'mailnologin' => 'Δεν υπάρχει διεύθυνση παραλήπτη.',
@@ -2009,19 +2137,20 @@ PICT # διάφορα
'enotif_lastvisited' => 'Δείτε το $1 για όλες τις αλλαγές που έγιναν από την τελευταία σας επίσκεψη.',
'enotif_lastdiff' => 'Δείτε το $1 για να εμφανίσετε αυτή την αλλαγή.',
'enotif_anon_editor' => 'ανώνυμος χρήστης $1',
-'enotif_body' => 'Αγαπητέ $WATCHINGUSERNAME...
+'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Αγαπητέ|Αγαπητή}} $WATCHINGUSERNAME,
-Η σελίδα $PAGETITLE του εγχειρήματος {{SITENAME}} $CHANGEDORCREATED στις $PAGEEDITDATE από το χρήστη $PAGEEDITOR -ακολουθήστε το σύνδεσμο $PAGETITLE_URL για να δείτε την τρέχουσα αναθεώρηση.
+Η σελίδα $PAGETITLE του εγχειρήματος {{SITENAME}} $CHANGEDORCREATED στις $PAGEEDITDATE από {{GENDER:$PAGEEDITOR|το χρήστη|την χρήστρια}} $PAGEEDITOR -ακολουθήστε το σύνδεσμο $PAGETITLE_URL για να δείτε την τρέχουσα αναθεώρηση.
$NEWPAGE
-Περιγραφή: $PAGESUMMARY $PAGEMINOREDIT
+Περιγραφή επεξεργασίας: $PAGESUMMARY $PAGEMINOREDIT
-Επικοινωνήστε με το συγκεκριμένο χρήστη:
+Επικοινωνήστε με {{GENDER:$PAGEEDITOR|το συγκεκριμένο χρήστη|τη συγκεκριμένη χρήστρια}} :
mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Δεν θα υπάρξει άλλη ειδοποίηση για περαιτέρω αλλαγές αν δεν επισκεφθείτε τη σελίδα. Μπορείτε επίσης να επαναφέρετε την επιλογή ειδοποίησης για όλες τις σελίδες στη λίστα παρακολούθησής σας.
+Δεν θα υπάρξουν άλλες ειδοποιήσεις για περαιτέρω αλλαγές αν δεν επισκεφθείτε τη σελίδα.
+Μπορείτε επίσης να επαναφέρετε την επιλογή ειδοποίησης για όλες τις παρακολουθούμενες σελίδες στη λίστα παρακολούθησής σας.
Φιλικά,
Tο σύστημα ειδοποίησης του εγχειρήματος {{SITENAME}}
@@ -2030,6 +2159,9 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
Για να αλλάξετε τις προτιμήσεις της λίστας παρακολούθησής σας, ακολουθήστε το σύνδεσμο:
{{fullurl:Special:Watchlist/edit}}
+Για να διαγράψετε την σελίδα από την λίστα παρακολούθησής σας:
+$UNWATCHURL
+
Ερωτήσεις και περισσότερες πληροφορίες:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2042,9 +2174,10 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
'exblank' => 'η σελίδα ήταν κενή',
'delete-confirm' => 'Διαγραφή του "$1"',
'delete-legend' => 'Διαγραφή',
-'historywarning' => 'ΠΡΟΕΙΔΟΠΟΙΗΣΗ! Η σελίδα που πρόκειται να διαγράψετε έχει ιστορικό:',
+'historywarning' => "'''Προσοχή:''' Η σελίδα που πρόκειται να διαγράψετε έχει ιστορικό με περίπου $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}:",
'confirmdeletetext' => 'Πρόκειται να διαγράψετε οριστικά από τη βάση δεδομένων μια σελίδα (ή μια εικόνα) μαζί με το ιστορικό της. Παρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να το κάνετε, ότι αντιλαμβάνεσθε τις συνέπειες και ότι το κάνετε σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].',
'actioncomplete' => 'Η ενέργεια ολοκληρώθηκε.',
+'actionfailed' => 'Ανεπιτυχής ενέργεια',
'deletedtext' => 'Η "<nowiki>$1</nowiki>" έχει διαγραφεί.
Για το ιστορικό των πρόσφατων διαγραφών ανατρέξτε στο σύνδεσμο $2',
'deletedarticle' => 'Η $1 διαγράφηκε.',
@@ -2067,18 +2200,19 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
Η διαγραφή της μπορεί να αναστατώσει τη λειτουργία της βάσης δεδομένων του {{SITENAME}}. Συνιστούμε μεγάλη προσοχή.',
# Rollback
-'rollback' => 'Επαναφορά επεξεργασιών',
-'rollback_short' => 'Επαναφορά',
-'rollbacklink' => 'Επαναφορά στην προηγούμενη',
-'rollbackfailed' => 'Η επαναφορά απέτυχε.',
-'cantrollback' => 'Δεν είναι δυνατή η αναίρεση αυτής της αλλαγής, πρόκειται για την αρχική ενέργεια δημιουργίας της σελίδας.',
-'alreadyrolled' => 'Αδύνατον να αναιρεθεί η τελευταία αλλαγή της σελίδας [[:$1]] από το χρήστη ([[User:$2|$2]] ([[User talk:$2|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), διότι κάποιος έχει ήδη αναιρέσει την αλλαγή ή έχει αλλάξει εκ νέου τη σελίδα.
+'rollback' => 'Επαναφορά επεξεργασιών',
+'rollback_short' => 'Επαναφορά',
+'rollbacklink' => 'Επαναφορά στην προηγούμενη',
+'rollbackfailed' => 'Η επαναφορά απέτυχε.',
+'cantrollback' => 'Δεν είναι δυνατή η αναίρεση αυτής της αλλαγής, πρόκειται για την αρχική ενέργεια δημιουργίας της σελίδας.',
+'alreadyrolled' => 'Αδύνατον να αναιρεθεί η τελευταία αλλαγή της σελίδας [[:$1]] από το χρήστη ([[User:$2|$2]] ([[User talk:$2|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), διότι κάποιος έχει ήδη αναιρέσει την αλλαγή ή έχει αλλάξει εκ νέου τη σελίδα.
Τελευταία αλλαγή από το χρήστη ([[User:$3|$3]] ([[User talk:$3|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Το σχόλιο της επεξεργασίας ήταν: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ανάκληση των αλλαγών $2 (επιστροφή στην προηγούμενη αναθεώρηση $1)', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Ανεστραμμένες εκδόσεις από $1, αλλάχθηκαν στην προηγούμενη έκδοση από $2.',
-'sessionfailure' => 'Υπάρχει πρόβλημα με τη σύνδεσή σας -η ενέργεια αυτή ακυρώθηκε προληπτικά για την αντιμετώπιση τυχόν πειρατείας συνόδου (session hijacking). Παρακαλoύμε πατήστε "Επιστροφή", ξαναφορτώστε τη σελίδα από την οποία φθάσατε εδώ και προσπαθήστε ξανά.',
+'editcomment' => "Το σχόλιο της επεξεργασίας ήταν: \"''\$1''\".",
+'revertpage' => 'Ανάκληση των αλλαγών $2 (επιστροφή στην προηγούμενη αναθεώρηση $1)',
+'revertpage-nouser' => 'Αναστράφηκαν οι επεξεργασίες από τον (όνομα χρήστη αφαιρέθηκε) στη τελευταία έκδοση από τον/την [[User:$1|$1]]',
+'rollback-success' => 'Ανεστραμμένες εκδόσεις από $1, αλλάχθηκαν στην προηγούμενη έκδοση από $2.',
+'sessionfailure' => 'Υπάρχει πρόβλημα με τη σύνδεσή σας -η ενέργεια αυτή ακυρώθηκε προληπτικά για την αντιμετώπιση τυχόν πειρατείας συνόδου (session hijacking). Παρακαλoύμε πατήστε "Επιστροφή", ξαναφορτώστε τη σελίδα από την οποία φθάσατε εδώ και προσπαθήστε ξανά.',
# Protect
'protectlogpage' => 'Καταγραφές προστασίας (κλειδώματος)',
@@ -2095,7 +2229,7 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
'protectexpiry' => 'Λήξη',
'protect_expiry_invalid' => 'Ο χρόνος λήξης είναι άκυρος.',
'protect_expiry_old' => 'Ο χρόνος λήξης αναφέρεται στο παρελθόν.',
-'protect-unchain' => 'Ξεκλείδωσε τα δικαιώματα μετακίνησης',
+'protect-unchain-permissions' => 'Ξεκλείδωμα περαιτέρω επιλογών προστασίας',
'protect-text' => "Μπορείτε να δείτε και να αλλάξετε το επίπεδο προστασίας εδώ για τη σελίδα '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Δεν μπορείτε να αλλάξετε επίπεδα προστασίας ενώ είστε σε φραγή.
Εδώ είναι οι τρέχουσες ρυθμίσεις για τη σελίδα '''$1''':",
@@ -2124,7 +2258,7 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
** Αντιπαραγωγική μάχη επεξεργασιών
** Σελίδα μεγάλης κίνησης',
'protect-edit-reasonlist' => 'Επεξεργασία λόγων προστασίας',
-'protect-expiry-options' => '1 ώρα:1 hour,1 ημέρα:1 day,1 εβδομάδα:1 week,2 εβδομάδες:2 weeks,1 μήνα:1 month,3 μήνες:3 months,6 μήνες:6 months,1 χρόνο:1 year,αόριστα:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ώρα:1 hour,1 ημέρα:1 day,1 εβδομάδα:1 week,2 εβδομάδες:2 weeks,1 μήνα:1 month,3 μήνες:3 months,6 μήνες:6 months,1 χρόνο:1 year,αόριστα:infinite',
'restriction-type' => 'Δικαίωμα:',
'restriction-level' => 'Επίπεδο περιορισμού:',
'minimum-size' => 'Ελάχιστο μέγεθος',
@@ -2167,6 +2301,7 @@ Tο σύστημα ειδοποίησης του εγχειρήματος {{SITE
'undelete-nodiff' => 'Δεν βρέθηκε προηγούμενη αναθεώρηση.',
'undeletebtn' => 'Επαναφορά',
'undeletelink' => 'εμφάνιση/επαναφορά',
+'undeleteviewlink' => 'εμφάνιση',
'undeletereset' => 'Ανανέωση',
'undeleteinvert' => 'Ανατροπή επιλογής',
'undeletecomment' => 'Αιτία:',
@@ -2204,19 +2339,24 @@ $1',
'contributions-title' => 'Συνεισφορές του χρήστη $1',
'mycontris' => 'Οι συνεισφορές μου',
'contribsub2' => 'Για τον/την $1 ($2)',
-'nocontribs' => 'Δεν βρέθηκαν αλλαγές με αυτά τα κριτήρια.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Δεν βρέθηκαν αλλαγές με αυτά τα κριτήρια.',
'uctop' => '(τελευταία)',
'month' => 'Από τον μήνα (και νωρίτερα):',
'year' => 'Από τη χρονιά (και νωρίτερα):',
-'sp-contributions-newbies' => 'Εμφάνισε τις συνεισφορές μόνο των νέων λογαριασμών',
-'sp-contributions-newbies-sub' => 'Για νέους λογαριασμούς',
-'sp-contributions-newbies-title' => 'Συνεισφορές χρηστών για νέους λογαριασμούς',
-'sp-contributions-blocklog' => 'Αρχείο καταγραφής φραγών',
-'sp-contributions-logs' => 'καταγραφές',
-'sp-contributions-search' => 'Αναζήτηση για συνεισφορές',
-'sp-contributions-username' => 'Διεύθυνση IP ή όνομα χρήστη:',
-'sp-contributions-submit' => 'Αναζήτηση',
+'sp-contributions-newbies' => 'Εμφάνισε τις συνεισφορές μόνο των νέων λογαριασμών',
+'sp-contributions-newbies-sub' => 'Για νέους λογαριασμούς',
+'sp-contributions-newbies-title' => 'Συνεισφορές χρηστών για νέους λογαριασμούς',
+'sp-contributions-blocklog' => 'Αρχείο καταγραφής φραγών',
+'sp-contributions-deleted' => 'διαγραμμένες συνεισφορές χρήστη',
+'sp-contributions-logs' => 'καταγραφές',
+'sp-contributions-talk' => 'συζήτηση',
+'sp-contributions-userrights' => 'διαχείριση δικαιωμάτων χρηστών',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Αυτός ο χρήστης|Αυτή η χρήστης}} έχει αποκλειστεί επί του παρόντος.
+Η πιο πρόσφατη καταχώρηση του αρχείου καταγραφής φραγών παρέχεται παρακάτω για αναφορά:',
+'sp-contributions-search' => 'Αναζήτηση για συνεισφορές',
+'sp-contributions-username' => 'Διεύθυνση IP ή όνομα χρήστη:',
+'sp-contributions-submit' => 'Αναζήτηση',
# What links here
'whatlinkshere' => 'Αναφορές στη σελίδα',
@@ -2239,6 +2379,7 @@ $1',
# Block/unblock
'blockip' => 'Φραγή χρήστη ή διεύθυνσης IP',
+'blockip-title' => 'Φραγή του χρήστη',
'blockip-legend' => 'Φραγή του χρήστη',
'blockiptext' => 'Χρησιμοποιήστε την παρακάτω φόρμα για να εμποδίσετε παρεμβάσεις στο κείμενο από μια συγκεκριμένη διεύθυνση IP ή όνομα χρήστη.
Το μέτρο αυτό πρέπει να λαμβάνεται μόνο σε περιπτώσεις βανδαλισμού σελίδων και πάντα σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].
@@ -2262,7 +2403,7 @@ $1',
'ipbenableautoblock' => 'Φράξε αυτόματατα την τελευταία διεύθυνση IP που χρησιμοποιήθηκε από αυτό τον χρήστη, και όποιες ακόλουθες IP από τις οποίες δοκιμάζει να επεξεργαστεί',
'ipbsubmit' => 'Φραγή σε αυτό το χρήστη',
'ipbother' => 'Άλλη ώρα',
-'ipboptions' => '2 ώρες:2 hours,1 ημέρα:1 day,3 ημέρες:3 days,1 εβδομάδα:1 week,2 εβδομάδες:2 weeks,1 μήνα:1 month,3 μήνες:3 months,6 μήνες:6 months,1 χρόνο:1 year,αόριστα:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ώρες:2 hours,1 ημέρα:1 day,3 ημέρες:3 days,1 εβδομάδα:1 week,2 εβδομάδες:2 weeks,1 μήνα:1 month,3 μήνες:3 months,6 μήνες:6 months,1 χρόνο:1 year,αόριστα:infinite',
'ipbotheroption' => 'άλλη',
'ipbotherreason' => 'Άλλος/επιπλέον λόγος:',
'ipbhidename' => 'Απόκρυψη ονόματος χρήστη από επεξεργασίες και καταλόγους',
@@ -2291,9 +2432,11 @@ $1',
'ipblocklist-sh-tempblocks' => 'Προσωρινές φραγές του λογαριασμού $1',
'ipblocklist-sh-addressblocks' => '$1 μονός αποκλεισμός IP',
'ipblocklist-submit' => 'Αναζήτηση',
+'ipblocklist-localblock' => 'Τοπική φραγή',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Άλλη φραγή|Άλλες φραγές}}',
'blocklistline' => '$1, ο/η $2 έφραξε τον/την $3 ($4)',
'infiniteblock' => 'αόριστη',
-'expiringblock' => 'λήγει στις $1',
+'expiringblock' => 'λήγει στις $1 στις $2',
'anononlyblock' => 'μόνο τους ανώνυμους',
'noautoblockblock' => 'αυτόματη φραγή απενεργοποιημένη',
'createaccountblock' => 'δημιουργία λογαριασμού μπλοκαρισμένη',
@@ -2307,7 +2450,10 @@ $1',
'contribslink' => 'Συνεισφορές/Προσθήκες',
'autoblocker' => 'Έχετε υποστεί αυτόματα φραγή από το σύστημα επειδή χρησιμοποιείτε την ίδια διεύθυνση IP με το χρήστη "[[User:$1|$1]]". Η αιτιολογία για την φραγή του $1 είναι "$2".',
'blocklogpage' => 'Αρχείο καταγραφής φραγών',
-'blocklog-fulllog' => 'Πλήρης κατάλογος φραγών',
+'blocklog-showlog' => 'Αυτός ο χρήστης έχει φραγεί προηγουμένως.
+Το αρχείο γραφής παράσχεται παρακάτω για παραπομπή:',
+'blocklog-showsuppresslog' => 'Αυτός ο χρήστης έχει φραγεί και αποκρυφτεί προηγουμένως.
+Το αρχείο καταστολής παρέχεται παρακάτω για αναφορά:',
'blocklogentry' => 'O/H [[$1]] φράχθηκε με χρόνο λήξης $2 $3',
'reblock-logentry' => 'άλλαξε τις ρυθμίσεις φραγής για τον/την [[$1]] με χρόνο λήξης $2 $3',
'blocklogtext' => 'Αυτό είναι ένα αρχείο καταγραφής των ενεργειών φραγής και κατάργησης φραγής χρηστών.
@@ -2328,9 +2474,11 @@ $1',
'ipb_already_blocked' => 'Η διεύθυνση IP "$1" είναι ήδη φραγμένη',
'ipb-needreblock' => '== Ἠδη αποκλεισμένη ==
$1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετε τις ρυθμίσεις?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Άλλη φραγή|Άλλες φραγές}}',
'ipb_cant_unblock' => 'Σφάλμα: Ο αριθμός αναγνώρισης φραγής $1 δεν βρέθηκε. Μπορεί να έχει ξεμπλοκαριστεί ήδη.',
'ipb_blocked_as_range' => 'Σφάλμα! Η φραγή της διεύθυνσης IP $1 δεν είναι άμεση και δεν μπορεί να αρθεί. Όμως αποτελεί μέρος της περιοχής $2, της οποίας η φραγή μπορεί να αρθεί.',
'ip_range_invalid' => 'Το εύρος των διευθύνσεων IP δεν είναι έγκυρο.',
+'ip_range_toolarge' => 'Φραγές range μεγαλύτερων από /$1 δεν επιτρέπονται.',
'blockme' => 'Φραγή σε μένα',
'proxyblocker' => 'Εργαλείο φραγής διακομιστών (proxy blocker)',
'proxyblocker-disabled' => 'Η λειτουργία αυτή έχει απενεργοποιηθεί.',
@@ -2339,6 +2487,8 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'sorbsreason' => 'Η διεύθνυση IP σας έχει χαρακτηρισθεί ως open proxy στο DNSBL.',
'sorbs_create_account_reason' => 'Η διεύθυνση IP σας έχει χαρακτηρισθεί open proxy στο DNSBL. Δεν μπορείτε να δημιουργήσετε λογαριασμό χρήστη.',
'cant-block-while-blocked' => 'Δεν μπορείτε να φράξετε άλλους χρήστες ενώ είστε φραγμένος/η.',
+'cant-see-hidden-user' => 'Ο χρήστης που προσπαθείτε να αποκλείσετε έχει ήδη αποκλειστεί και αποκρυφτεί.
+Δεδομένου ότι δεν έχετε το δικαίωμα hideuser, δεν μπορείτε να δείτε ή να επεξεργαστείτε την φραγή του χρήστη.',
# Developer tools
'lockdb' => 'Κλείδωμα βάσης δεδομένων',
@@ -2380,6 +2530,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
Σε αυτές τις περιπτώσεις, θα πρέπει να μετακινήσετε (ή να ενσωματώσετε αν το θέλετε) τη σελίδα με αντιγραφή-και-επικόλληση.",
'movearticle' => 'Μετακίνηση σελίδας',
+'moveuserpage-warning' => "'''Προσοχή:''' Ετοιμάζεστε να μετακινήσετε μια σελίδα χρήστη. Σημειώστε παρακαλώ ότι θα μετακινηθεί μόνο η σελίδα και ο χρήστης '''δεν''' θα μετονομαστεί.",
'movenologin' => 'Δεν έχετε συνδεθεί.',
'movenologintext' => 'Για να μετακινήσετε μια σελίδα πρέπει να είστε εγγεγραμένος χρήστης και [[Special:UserLogin|να έχετε συνδεθεί]] στο Wiκi.',
'movenotallowed' => 'Δεν έχετε άδεια να μετακινείτε σελίδες.',
@@ -2390,7 +2541,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'move-watch' => 'Παρακολούθησε αυτή τη σελίδα',
'movepagebtn' => 'Μετακίνηση σελίδας',
'pagemovedsub' => 'Η μετακίνηση ήταν επιτυχής',
-'movepage-moved' => '\'\'\'"$1" μεταφέρθηκε στο "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" μεταφέρθηκε στο "$2"\'\'\'',
'movepage-moved-redirect' => 'Δημιουργήθηκε μια ανακατεύθυνση.',
'movepage-moved-noredirect' => 'Η δημιουργία ανακατεύθυνσης παρεμποδίστηκε.',
'articleexists' => 'Υπάρχει ήδη σελίδα με αυτό το όνομα. Παρακαλούμε δώστε άλλο όνομα στη σελίδα.',
@@ -2431,6 +2582,14 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'imageinvalidfilename' => 'Το όνομα αρχείου προορισμού είναι άκυρο',
'fix-double-redirects' => 'Ενημερώστε όποια ανακατεύθυνση σκοπεύει προς τον αρχικό τίτλο',
'move-leave-redirect' => 'Αφήστε πίσω μια ανακατεύθυνση',
+'protectedpagemovewarning' => "Προειδοποίηση'' ':''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή μπορούν να την μετακινήσουν.
+Η πιο πρόσφατη καταχώρηση του αρχείου καταγραφής παρέχεται παρακάτω για αναφορά:",
+'semiprotectedpagemovewarning' => "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί έτσι ώστε μόνο οι εγγεγραμμένοι χρήστες να μπορούν να την μετακινήσουν.
+Η πιο πρόσφατη καταχώρηση του αρχείου καταγραφής παρέχεται παρακάτω για αναφορά:",
+'move-over-sharedrepo' => '== Το αρχείο υπάρχει ==
+Το [[:$1]] υπάρχει σε μια κοινή αποθήκη. Η μετακίνηση ενός αρχείου προς αυτόν τον τίτλο θα παρακάμψει το κοινό αρχείο.',
+'file-exists-sharedrepo' => 'Το όνομα αρχείου που επιλέχθηκε είναι ήδη σε χρήση σε ένα κοινό χώρο αποθήκευσης.
+Παρακαλούμε επιλέξτε ένα άλλο όνομα.',
# Export
'export' => 'Εξαγωγή σελίδων',
@@ -2452,15 +2611,21 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'export-pagelinks' => 'Συμπερίληψη συνδεδεμένων σελίδων σε ένα βάθος:',
# Namespace 8 related
-'allmessages' => 'Μηνύματα συστήματος',
-'allmessagesname' => 'Όνομα',
-'allmessagesdefault' => 'Προκαθορισμένο κείμενο',
-'allmessagescurrent' => 'Παρόν κείμενο',
-'allmessagestext' => 'Αυτή είναι μια λίστα με όλα τα μηνύματα συστήματος που βρίσκονται στην περιοχή MediaWiki.
+'allmessages' => 'Μηνύματα συστήματος',
+'allmessagesname' => 'Όνομα',
+'allmessagesdefault' => 'Προκαθορισμένο κείμενο',
+'allmessagescurrent' => 'Παρόν κείμενο',
+'allmessagestext' => 'Αυτή είναι μια λίστα με όλα τα μηνύματα συστήματος που βρίσκονται στην περιοχή MediaWiki.
Παρακαλούμε επισκεφθείτε τα [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] και [http://translatewiki.net translatewiki.net] αν επιθυμείτε να συνεισφέρετε σε μια γενική μετάφραση του MediaWiki.',
-'allmessagesnotsupportedDB' => "Αυτή η σελίδα δεν υποστηρίζεται επειδή το ''wgUseDatabaseMessages'' είναι απενεργοποιημένο.",
-'allmessagesfilter' => 'Φίλτρο ονόματος μηνύματος:',
-'allmessagesmodified' => 'Δείξε μόνο τα τροποποιημένα',
+'allmessagesnotsupportedDB' => "Αυτή η σελίδα δεν υποστηρίζεται επειδή το ''wgUseDatabaseMessages'' είναι απενεργοποιημένο.",
+'allmessages-filter-legend' => 'Φίλτρο',
+'allmessages-filter' => 'Ταξινόμηση βάσει της δήλωσης προσαρμογής:',
+'allmessages-filter-unmodified' => 'Ατροποποίητο',
+'allmessages-filter-all' => 'Όλα',
+'allmessages-filter-modified' => 'Τροποποιημένο',
+'allmessages-prefix' => 'Φίλτρο κατά πρόθεμα:',
+'allmessages-language' => 'Γλώσσα:',
+'allmessages-filter-submit' => 'Μετάβαση',
# Thumbnails
'thumbnail-more' => 'Μεγέθυνση',
@@ -2470,6 +2635,9 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'djvu_no_xml' => 'Αδυναμία προσκόμισης XML για το αρχείο DjVu',
'thumbnail_invalid_params' => 'Άκυρες παράμετροι μικρογραφίας',
'thumbnail_dest_directory' => 'Αδυναμία δημιουργίας καταλόγου προορισμού',
+'thumbnail_image-type' => 'Δεν υποστηρίζεται αυτός ο τύπος εικόνας',
+'thumbnail_gd-library' => 'Ατελής ενεργοποίηση της βιβλιοθήκης GD: αγνοούμενη λειτουργία $1',
+'thumbnail_image-missing' => 'Το αρχείο φαίνεται να λείπει: $1',
# Special:Import
'import' => 'Εισαγωγή σελίδων',
@@ -2533,6 +2701,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'tooltip-ca-viewsource' => 'Αυτό το άρθρο είναι κλειδωμένο. Μπορείτε να δείτε τον πηγαίο κώδικά του.',
'tooltip-ca-history' => 'Παλιές αναθεωρήσεις του άρθρου.',
'tooltip-ca-protect' => 'Κλείδωμα αυτού του άρθρου',
+'tooltip-ca-unprotect' => 'Ξεκλείδωμα της σελίδας',
'tooltip-ca-delete' => 'Διαγραφή αυτής της σελίδας',
'tooltip-ca-undelete' => 'Αποκαταστήστε τις αλλαγές που έγιναν σε αυτή τη σελίδα πριν διαγραφεί.',
'tooltip-ca-move' => 'Μετακινήστε αυτή τη σελίδα',
@@ -2543,6 +2712,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'tooltip-search-fulltext' => 'Αναζήτηση για αυτό το κείμενο',
'tooltip-p-logo' => 'Αρχική σελίδα',
'tooltip-n-mainpage' => 'Δείτε την Αρχική σελίδα',
+'tooltip-n-mainpage-description' => 'Επισκεφθείτε την κύρια σελίδα',
'tooltip-n-portal' => 'Σχετικά με το Wiκi - πώς μπορείτε να βοηθήσετε, πού μπορείτε να απευθυνθείτε',
'tooltip-n-currentevents' => 'Πληροφορίες για πρόσφατα γεγονότα',
'tooltip-n-recentchanges' => 'Η λίστα με τις πρόσφατες αλλαγές στο WiKi',
@@ -2612,10 +2782,12 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
# Attribution
'anonymous' => '{{PLURAL:$1|Ανώνυμος χρήστης|Ανώνυμοι χρήστες}} του {{SITENAME}}',
'siteuser' => '{{SITENAME}} χρήστης $1',
-'lastmodifiedatby' => 'Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, $1 από το χρήστη $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'ανώνυμος χρήστης $1 του {{SITENAME}}',
+'lastmodifiedatby' => 'Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, $1 από το χρήστη $3.',
'othercontribs' => 'Βασισμένο στη δουλειά του/των $1',
'others' => 'άλλοι',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|χρηστή|χρηστών}} του ιστοχώρου $1',
+'anonusers' => '{{PLURAL:$2|ανώνυμος χρήστης|ανώνυμοι χρήστες}} $1 του {{SITENAME}}',
'creditspage' => 'Αναγνώριση συνεισφοράς στη σελίδα',
'nocredits' => 'Δεν υπάρχουν πληροφορίες σχετικά με την αναγνώριση συνεισφοράς σε αυτή τη σελίδα.',
@@ -2650,11 +2822,22 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετ
'mw_math_modern' => 'Προτεινόμενο για σύγχρονους browser',
'mw_math_mathml' => 'MathML όποτε είναι δυνατόν (πειραματικό)',
+# Math errors
+'math_failure' => 'Δεν μπόρεσε να γίνει ανάλυση του όρου.',
+'math_unknown_error' => 'άγνωστο σφάλμα',
+'math_unknown_function' => 'άγνωστη συνάρτηση',
+'math_lexing_error' => 'Σφάλμα στην λεξική ανάλυση',
+'math_syntax_error' => 'Λάθος σύνταξης',
+'math_image_error' => 'Η μετατροπή σε PNG απέτυχε. Παρακαλούμε ελέγξτε ότι έχουν εγκατασταθεί σωστά τα latex, dvips, gs, και ξαναπροσπαθήστε!',
+'math_bad_tmpdir' => 'Δεν είναι δυνατή η δημιουργία μαθηματικών δεδομένων (ή η εγγραφή σε προσωρινό κατάλογο)',
+'math_bad_output' => 'Δεν είναι δυνατή η δημιουργία μαθηματικών δεδομένων (ή η εγγραφή σε κατάλογο εξόδου)',
+'math_notexvc' => 'Λείπει το εκτελέσιμο texvc -παρακαλούμε συμβουλευτείτε το math/README για να ρυθμίσετε τις παραμέτρους.',
+
# Patrolling
'markaspatrolleddiff' => "Να σημειωθεί 'υπό παρακολούθηση'",
'markaspatrolledtext' => "Να σημειωθεί αυτό το άρθρο ως 'υπό παρακολούθηση'.",
'markedaspatrolled' => "Σημειωμένο ως 'υπό παρακολούθηση'",
-'markedaspatrolledtext' => "Η αναθεώρηση που έχει επιλεγεί έχει σημειωθεί ως 'υπό παρακολούθηση'.",
+'markedaspatrolledtext' => 'Η επιλεγμένη αναθεώρηση της [[:$1]] έχει σημειωθεί ως ελεγμένη.',
'rcpatroldisabled' => "Η λειτουργία 'Παρακολούθηση Πρόσφατων Αλλαγών' έχει απενεργοποιηθεί.",
'rcpatroldisabledtext' => "Η λειτουργία 'Παρακολούθηση Πρόσφατων Αλλαγών' είναι αυτή τη στιγμή απενεργοποιημένη.",
'markedaspatrollederror' => 'Δεν μπορεί να σημανθεί ως υπό περιπολία',
@@ -2684,13 +2867,10 @@ $1',
'previousdiff' => '← Προηγούμενη επεξεργασία',
'nextdiff' => 'Επόμενη επεξεργασία →',
-# Visual comparison
-'visual-comparison' => 'Οπτική σύγκριση',
-
# Media information
'mediawarning' => "'''Προειδοποίηση''': Το αρχείο αυτό μπορεί να περιέχει κακοπροαίρετο κώδικα.
Εκτελώντας το, μπορεί να βλάψει το σύστημα του υπολογιστή σας.",
-'imagemaxsize' => 'Περιορισμός του μεγέθους των εικόνων (στις σελίδες περιγραφής εικόνων) σε:',
+'imagemaxsize' => "Όριο μεγέθους εικόνων:<br />''(στις σελίδες περιγραφής εικόνων)''",
'thumbsize' => 'Μέγεθος μικρογραφίας:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|σελίδα|σελίδες}}',
'file-info' => '(μέγεθος αρχείου: $1, τύπος MIME: $2)',
@@ -2699,6 +2879,8 @@ $1',
'svg-long-desc' => "(Αρχείο SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αρχείου: $3)",
'show-big-image' => 'Πλήρης ανάλυση',
'show-big-image-thumb' => '<small>Μέγεθος αυτής της προεπισκόπησης: $1 × $2 εικονοστοιχεία</small>',
+'file-info-gif-looped' => 'περιτυλιγμένο',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
# Special:NewFiles
'newimages' => 'Πινακοθήκη νέων εικόνων',
@@ -2732,7 +2914,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -2859,14 +3041,14 @@ $1',
'exif-unknowndate' => 'Άγνωστη ημερομηνία',
-'exif-orientation-1' => 'Φυσικός', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Έχει αντιστραφεί οριζόντια.', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Έχει περιστραφεί κατά 180° μοίρες.', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Έχει αντιστραφεί κατακόρυφα.', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Έχει περιστραφεί κατά 90° μοίρες με φορά αντίθετα προς τη φορά των δεικτών του ρολογιού και έχει αντιστραφεί κατακόρυφα.', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Έχει περιστραφεί κατά 90° μοίρες κατά τη φορά των δεικτών του ρολογιού.', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Έχει περιστραφεί κατά 90° μοίρες κατά τη φορά των δεικτών του ρολογιού και έχει αντιστραφεί κατακόρυφα.', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Έχει περιστραφή κατά 90° μοίρες αντίθετα προς τη φορά των δεικτών του ρολογιού.', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Φυσικός',
+'exif-orientation-2' => 'Έχει αντιστραφεί οριζόντια.',
+'exif-orientation-3' => 'Έχει περιστραφεί κατά 180° μοίρες.',
+'exif-orientation-4' => 'Έχει αντιστραφεί κατακόρυφα.',
+'exif-orientation-5' => 'Έχει περιστραφεί κατά 90° μοίρες με φορά αντίθετα προς τη φορά των δεικτών του ρολογιού και έχει αντιστραφεί κατακόρυφα.',
+'exif-orientation-6' => 'Έχει περιστραφεί κατά 90° μοίρες κατά τη φορά των δεικτών του ρολογιού.',
+'exif-orientation-7' => 'Έχει περιστραφεί κατά 90° μοίρες κατά τη φορά των δεικτών του ρολογιού και έχει αντιστραφεί κατακόρυφα.',
+'exif-orientation-8' => 'Έχει περιστραφή κατά 90° μοίρες αντίθετα προς τη φορά των δεικτών του ρολογιού.',
'exif-planarconfiguration-1' => 'πεπλατυσμένος σχηματισμός',
'exif-planarconfiguration-2' => 'επίπεδος σχηματισμός',
@@ -2988,7 +3170,7 @@ $1',
'exif-gpsmeasuremode-2' => 'μέτρηση δύο διαστάσεων',
'exif-gpsmeasuremode-3' => 'μέτρηση τριών διαστάσεων',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Χιλιόμετρα/ώρα',
'exif-gpsspeed-m' => 'Μίλια/ώρα',
'exif-gpsspeed-n' => 'Κόμβοι',
@@ -3007,6 +3189,7 @@ $1',
'watchlistall2' => 'όλες',
'namespacesall' => 'όλα',
'monthsall' => 'όλα',
+'limitall' => 'όλες',
# E-mail address confirmation
'confirmemail' => 'Επαλήθευση διεύθυνσης e-mail',
@@ -3131,7 +3314,7 @@ $1',
'duplicate-defaultsort' => 'Προσοχή: Το προκαθορισμένο κλειδί ταξινόμησης "$2" υπερκαλύπτει το προηγούμενο "$1".',
# Special:Version
-'version' => 'Έκδοση', # Not used as normal message but as header for the special page itself
+'version' => 'Έκδοση',
'version-extensions' => 'Εγκαταστημένες επεκτάσεις',
'version-specialpages' => 'Ειδικές σελίδες',
'version-parserhooks' => 'Άγκιστρα του συντακτικού αναλυτή',
@@ -3145,7 +3328,7 @@ $1',
'version-skin-extension-functions' => 'Λειτουργίες επέκτασης της διεπαφής',
'version-hook-name' => 'Όνομα άγκιστρου',
'version-hook-subscribedby' => 'Υπογεγραμμένο από',
-'version-version' => 'Έκδοση',
+'version-version' => '(Έκδοση $1)',
'version-license' => 'Άδεια χρήσης',
'version-software' => 'Εγκατεστημένο λογισμικό',
'version-software-product' => 'Προϊόν',
@@ -3226,4 +3409,15 @@ $1',
'dberr-outofdate' => 'Σημειώστε ότι οι ενδείξεις τους περί του περιεχομένου μας ενδέχεται να μην είναι ενημερωμένες.',
'dberr-cachederror' => 'Το ακόλουθο είναι ένα αντίγραφο από την μνήμη της σελίδας που ζητήσατε και ενδέχεται να μην είναι ενημερωμένο.',
+# HTML forms
+'htmlform-invalid-input' => 'Υπάρχουν κάποια προβλήματα με μερικές από τις εισροές σας',
+'htmlform-select-badoption' => 'Η τιμή που καθορίσατε δεν είναι μια έγκυρη επιλογή.',
+'htmlform-int-invalid' => 'Η τιμή που καθορίσατε δεν είναι ένας ακέραιος αριθμός.',
+'htmlform-float-invalid' => 'Η τιμή που ορίσατε δεν είναι ένας αριθμός.',
+'htmlform-int-toolow' => 'Η αξία που θέσατε είναι πιο κάτω από το ελάχιστο όριο $1',
+'htmlform-int-toohigh' => 'Η τιμή που θέσατε είναι πιο πάνω από το μέγιστο όριο $1',
+'htmlform-submit' => 'Υποβολή',
+'htmlform-reset' => 'Αναστροφή αλλαγών',
+'htmlform-selectorother-other' => 'Άλλο',
+
);
diff --git a/languages/messages/MessagesEml.php b/languages/messages/MessagesEml.php
index b13959b9..0d9ac443 100644
--- a/languages/messages/MessagesEml.php
+++ b/languages/messages/MessagesEml.php
@@ -36,8 +36,10 @@ $messages = array(
'december' => 'Dzèmber',
'may' => 'Mâz',
+'mytalk' => 'I mê discussiòun',
+
+# Cologne Blue skin
'qbspecialpages' => 'Pagini specièli',
-'mytalk' => 'I mê discussiòun',
'returnto' => 'Tórna a $1.',
'help' => 'Per quî rivê da pôch',
@@ -71,8 +73,6 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
'logout' => 'va fôra',
'userlogout' => 'Va fôra',
'userexists' => "Al nòmm ch'èt scélt l'è stê bèle usê: càten un èter, per piasêr.",
-'yourrealname' => 'Al tô vér nàmm:',
-'yourlanguage' => 'Léngua:',
'loginsuccess' => "'''Adèsa sèt cunês in {{SITENAME}} cun al nàmm d'utèint \"\$1\".'''",
'wrongpassword' => "La password ch'et méss l'è sbajèda. Pròva ancàrra.",
'blocked-mailpassword' => "Al tô indirézz IP l'an pôl più feèr di cambiamèint, e l'en brisa abilitê par user la funziòun ed recópper ed password par evitèr di abûs.",
@@ -96,6 +96,8 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
# Preferences page
'mypreferences' => 'AL mê preferèinzi',
+'yourrealname' => 'Al tô vér nàmm:',
+'yourlanguage' => 'Léngua:',
# Recent changes
'recentchanges' => 'Ûltem cambiamèint',
@@ -103,7 +105,9 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
'hist' => 'stôria',
# Recent changes linked
-'recentchangeslinked' => 'Mudéffic curelèdi',
+'recentchangeslinked' => 'Mudéffic curelèdi',
+'recentchangeslinked-feed' => 'Mudéffic curelèdi',
+'recentchangeslinked-toolbox' => 'Mudéffic curelèdi',
# Upload
'upload' => 'Carghèr un file',
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index f66b3f50..282f039d 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -8,6 +8,8 @@
* You can make your customizations on the wiki.
* While logged in as administrator, go to [[Special:Allmessages]]
* and edit the MediaWiki:* pages listed there.
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
*/
/**
@@ -27,6 +29,12 @@ $fallback = false;
$rtl = false;
/**
+ * Should all nouns (not just proper ones) be capitalized?
+ * Enabling this property will add the capitalize-all-nouns class to the <body> tag
+ */
+$capitalizeAllNouns = false;
+
+/**
* Optional array mapping ASCII digits 0-9 to local digits.
*/
$digitTransformTable = null;
@@ -208,7 +216,8 @@ $magicWords = array(
'toc' => array( 0, '__TOC__' ),
'noeditsection' => array( 0, '__NOEDITSECTION__' ),
'noheader' => array( 0, '__NOHEADER__' ),
- 'currentmonth' => array( 1, 'CURRENTMONTH' ),
+ 'currentmonth' => array( 1, 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( 1, 'CURRENTMONTH1' ),
'currentmonthname' => array( 1, 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV' ),
@@ -218,7 +227,8 @@ $magicWords = array(
'currentyear' => array( 1, 'CURRENTYEAR' ),
'currenttime' => array( 1, 'CURRENTTIME' ),
'currenthour' => array( 1, 'CURRENTHOUR' ),
- 'localmonth' => array( 1, 'LOCALMONTH' ),
+ 'localmonth' => array( 1, 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( 1, 'LOCALMONTH1' ),
'localmonthname' => array( 1, 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( 1, 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( 1, 'LOCALMONTHABBREV' ),
@@ -255,6 +265,7 @@ $magicWords = array(
'subjectpagenamee' => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'msg' => array( 0, 'MSG:' ),
'subst' => array( 0, 'SUBST:' ),
+ 'safesubst' => array( 0, 'SAFESUBST:' ),
'msgnw' => array( 0, 'MSGNW:' ),
'img_thumbnail' => array( 1, 'thumbnail', 'thumb' ),
'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1'),
@@ -281,11 +292,13 @@ $magicWords = array(
'int' => array( 0, 'INT:' ),
'sitename' => array( 1, 'SITENAME' ),
'ns' => array( 0, 'NS:' ),
+ 'nse' => array( 0, 'NSE:' ),
'localurl' => array( 0, 'LOCALURL:' ),
'localurle' => array( 0, 'LOCALURLE:' ),
'server' => array( 0, 'SERVER' ),
'servername' => array( 0, 'SERVERNAME' ),
'scriptpath' => array( 0, 'SCRIPTPATH' ),
+ 'stylepath' => array( 0, 'STYLEPATH' ),
'grammar' => array( 0, 'GRAMMAR:' ),
'gender' => array( 0, 'GENDER:' ),
'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
@@ -413,7 +426,7 @@ $specialPageAliases = array(
'Import' => array( 'Import' ),
'Lockdb' => array( 'LockDB' ),
'Unlockdb' => array( 'UnlockDB' ),
- 'Userrights' => array( 'UserRights' ),
+ 'Userrights' => array( 'UserRights', 'MakeSysop', 'MakeBot' ),
'MIMEsearch' => array( 'MIMESearch' ),
'FileDuplicateSearch' => array( 'FileDuplicateSearch' ),
'Unwatchedpages' => array( 'UnwatchedPages' ),
@@ -437,6 +450,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'LinkSearch' ),
'DeletedContributions' => array( 'DeletedContributions' ),
'Tags' => array( 'Tags' ),
+ 'Activeusers' => array( 'ActiveUsers' ),
);
/**
@@ -463,6 +477,109 @@ $imageFiles = array(
'button-hr' => 'button_hr.png',
);
+/**
+ * A list of messages to preload for each request.
+ * We add messages here which are needed for a typical anonymous parser cache hit.
+ */
+$preloadedMessages = array(
+ 'aboutpage',
+ 'aboutsite',
+ 'accesskey-ca-edit',
+ 'accesskey-ca-history',
+ 'accesskey-ca-nstab-main',
+ 'accesskey-ca-talk',
+ 'accesskey-n-currentevents',
+ 'accesskey-n-help',
+ 'accesskey-n-mainpage-description',
+ 'accesskey-n-portal',
+ 'accesskey-n-randompage',
+ 'accesskey-n-recentchanges',
+ 'accesskey-n-sitesupport',
+ 'accesskey-p-logo',
+ 'accesskey-pt-login',
+ 'accesskey-search',
+ 'accesskey-search-fulltext',
+ 'accesskey-search-go',
+ 'accesskey-t-permalink',
+ 'accesskey-t-print',
+ 'accesskey-t-recentchangeslinked',
+ 'accesskey-t-specialpages',
+ 'accesskey-t-whatlinkshere',
+ 'anonnotice',
+ 'catseparator',
+ 'colon-separator',
+ 'currentevents',
+ 'currentevents-url',
+ 'disclaimerpage',
+ 'disclaimers',
+ 'edit',
+ 'help',
+ 'helppage',
+ 'history_short',
+ 'jumpto',
+ 'jumptonavigation',
+ 'jumptosearch',
+ 'lastmodifiedat',
+ 'mainpage',
+ 'mainpage-description',
+ 'nav-login-createaccount',
+ 'navigation',
+ 'nstab-main',
+ 'opensearch-desc',
+ 'pagecategories',
+ 'pagecategorieslink',
+ 'pagetitle',
+ 'pagetitle-view-mainpage',
+ 'permalink',
+ 'personaltools',
+ 'portal',
+ 'portal-url',
+ 'printableversion',
+ 'privacy',
+ 'privacypage',
+ 'randompage',
+ 'randompage-url',
+ 'recentchanges',
+ 'recentchanges-url',
+ 'recentchangeslinked-toolbox',
+ 'retrievedfrom',
+ 'search',
+ 'searcharticle',
+ 'searchbutton',
+ 'sidebar',
+ 'site-atom-feed',
+ 'site-rss-feed',
+ 'sitenotice',
+ 'specialpages',
+ 'tagline',
+ 'talk',
+ 'toolbox',
+ 'tooltip-ca-edit',
+ 'tooltip-ca-history',
+ 'tooltip-ca-nstab-main',
+ 'tooltip-ca-talk',
+ 'tooltip-n-currentevents',
+ 'tooltip-n-help',
+ 'tooltip-n-mainpage-description',
+ 'tooltip-n-portal',
+ 'tooltip-n-randompage',
+ 'tooltip-n-recentchanges',
+ 'tooltip-n-sitesupport',
+ 'tooltip-p-logo',
+ 'tooltip-p-navigation',
+ 'tooltip-pt-login',
+ 'tooltip-search',
+ 'tooltip-search-fulltext',
+ 'tooltip-search-go',
+ 'tooltip-t-permalink',
+ 'tooltip-t-print',
+ 'tooltip-t-recentchangeslinked',
+ 'tooltip-t-specialpages',
+ 'tooltip-t-whatlinkshere',
+ 'views',
+ 'whatlinkshere',
+);
+
#-------------------------------------------------------------------
# Default messages
#-------------------------------------------------------------------
@@ -521,6 +638,7 @@ XHTML id names.
'tog-enotifminoredits' => 'E-mail me also for minor edits of pages',
'tog-enotifrevealaddr' => 'Reveal my e-mail address in notification e-mails',
'tog-shownumberswatching' => 'Show the number of watching users',
+'tog-oldsig' => 'Preview of existing signature:',
'tog-fancysig' => 'Treat signature as wikitext (without an automatic link)',
'tog-externaleditor' => 'Use external editor by default (for experts only, needs special settings on your computer)',
'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer)',
@@ -544,6 +662,13 @@ XHTML id names.
'underline-never' => 'Never',
'underline-default' => 'Browser default',
+# Font style option in Special:Preferences
+'editfont-style' => 'Edit area font style:',
+'editfont-default' => 'Browser default',
+'editfont-monospace' => 'Monospaced font',
+'editfont-sansserif' => 'Sans-serif font',
+'editfont-serif' => 'Serif font',
+
# Dates
'sunday' => 'Sunday',
'monday' => 'Monday',
@@ -604,7 +729,7 @@ XHTML id names.
'category-media-header' => 'Media in category "$1"',
'category-empty' => "''This category currently contains no pages or media.''",
'hidden-categories' => '{{PLURAL:$1|Hidden category|Hidden categories}}',
-'hidden-category-category' => 'Hidden categories', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Hidden categories',
'category-subcat-count' => '{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}',
'category-subcat-count-limited' => 'This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}.',
'category-article-count' => '{{PLURAL:$2|This category contains only the following page.|The following {{PLURAL:$1|page is|$1 pages are}} in this category, out of $2 total.}}',
@@ -612,6 +737,8 @@ XHTML id names.
'category-file-count' => '{{PLURAL:$2|This category contains only the following file.|The following {{PLURAL:$1|file is|$1 files are}} in this category, out of $2 total.}}',
'category-file-count-limited' => 'The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Indexed pages',
+'noindex-category' => 'Noindexed pages',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', # only translate this message to other languages if you have to change it
'mainpagetext' => "'''MediaWiki has been successfully installed.'''",
@@ -622,10 +749,18 @@ XHTML id names.
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'About',
-'article' => 'Content page',
-'newwindow' => '(opens in new window)',
-'cancel' => 'Cancel',
+'about' => 'About',
+'article' => 'Content page',
+'newwindow' => '(opens in new window)',
+'cancel' => 'Cancel',
+'moredotdotdot' => 'More...',
+'mypage' => 'My page',
+'mytalk' => 'My talk',
+'anontalk' => 'Talk for this IP address',
+'navigation' => 'Navigation',
+'and' => '&#32;and',
+
+# Cologne Blue skin
'qbfind' => 'Find',
'qbbrowse' => 'Browse',
'qbedit' => 'Edit',
@@ -633,15 +768,37 @@ XHTML id names.
'qbpageinfo' => 'Context',
'qbmyoptions' => 'My pages',
'qbspecialpages' => 'Special pages',
-'moredotdotdot' => 'More…',
-'mypage' => 'My page',
-'mytalk' => 'My talk',
-'anontalk' => 'Talk for this IP',
-'navigation' => 'Navigation',
-'and' => '&#32;and',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+'sitetitle' => '{{SITENAME}}', # do not translate or duplicate this message to other languages
+'sitesubtitle' => '', # do not translate or duplicate this message to other languages
+
+# Vector skin
+'vector-action-addsection' => 'Add topic',
+'vector-action-delete' => 'Delete',
+'vector-action-move' => 'Move',
+'vector-action-protect' => 'Protect',
+'vector-action-undelete' => 'Undelete',
+'vector-action-unprotect' => 'Unprotect',
+'vector-namespace-category' => 'Category',
+'vector-namespace-help' => 'Help page',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Page',
+'vector-namespace-media' => 'Media page',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-project' => 'Project page',
+'vector-namespace-special' => 'Special page',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'User page',
+'vector-view-create' => 'Create',
+'vector-view-edit' => 'Edit',
+'vector-view-history' => 'View history',
+'vector-view-view' => 'Read',
+'vector-view-viewsource' => 'View source',
+'actions' => 'Actions',
+'namespaces' => 'Namespaces',
+'variants' => 'Variants',
'errorpagetitle' => 'Error',
'returnto' => 'Return to $1.',
@@ -692,18 +849,23 @@ XHTML id names.
'otherlanguages' => 'In other languages',
'redirectedfrom' => '(Redirected from $1)',
'redirectpagesub' => 'Redirect page',
-'lastmodifiedat' => 'This page was last modified on $1, at $2.', # $1 date, $2 time
+'talkpageheader' => '-', # do not translate or duplicate this message to other languages
+'lastmodifiedat' => 'This page was last modified on $1, at $2.',
'viewcount' => 'This page has been accessed {{PLURAL:$1|once|$1 times}}.',
'protectedpage' => 'Protected page',
'jumpto' => 'Jump to:',
'jumptonavigation' => 'navigation',
'jumptosearch' => 'search',
+'view-pool-error' => 'Sorry, the servers are overloaded at the moment.
+Too many users are trying to view this page.
+Please wait a while before you try to access this page again.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'About {{SITENAME}}',
'aboutpage' => 'Project:About',
'copyright' => 'Content is available under $1.',
-'copyrightpagename' => '{{SITENAME}} copyright',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Current events',
'currentevents-url' => 'Project:Current events',
@@ -711,14 +873,12 @@ XHTML id names.
'disclaimerpage' => 'Project:General disclaimer',
'edithelp' => 'Editing help',
'edithelppage' => 'Help:Editing',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Contents',
'mainpage' => 'Main Page',
'mainpage-description' => 'Main page',
'policy-url' => 'Project:Policy',
'portal' => 'Community portal',
-'portal-url' => 'Project:Community Portal',
+'portal-url' => 'Project:Community portal',
'privacy' => 'Privacy policy',
'privacypage' => 'Project:Privacy policy',
@@ -731,16 +891,14 @@ XHTML id names.
See [[Special:Version|version page]].',
'ok' => 'OK',
-'sitetitle' => '{{SITENAME}}', # do not translate or duplicate this message to other languages
'pagetitle' => '$1 - {{SITENAME}}', # only translate this message to other languages if you have to change it
'pagetitle-view-mainpage' => '{{SITENAME}}', # only translate this message to other languages if you have to change it
-'sitesubtitle' => '', # do not translate or duplicate this message to other languages
'retrievedfrom' => 'Retrieved from "$1"',
'youhavenewmessages' => 'You have $1 ($2).',
'newmessageslink' => 'new messages',
'newmessagesdifflink' => 'last change',
'youhavenewmessagesmulti' => 'You have new messages on $1',
-'newtalkseparator' => ',_', # do not translate or duplicate this message to other languages
+'newtalkseparator' => ',&#32;', # do not translate or duplicate this message to other languages
'editsection' => 'edit',
'editsection-brackets' => '[$1]', # only translate this message to other languages if you have to change it
'editold' => 'edit',
@@ -763,7 +921,7 @@ See [[Special:Version|version page]].',
'page-atom-feed' => '"$1" Atom feed',
'feed-atom' => 'Atom', # only translate this message to other languages if you have to change it
'feed-rss' => 'RSS', # only translate this message to other languages if you have to change it
-'sitenotice' => '-', # the equivalent to wgSiteNotice; do not translate or duplicate this message to other languages
+'sitenotice' => '-', # do not translate or duplicate this message to other languages
'anonnotice' => '-', # do not translate or duplicate this message to other languages
'newsectionheaderdefaultlevel' => '== $1 ==', # do not translate or duplicate this message to other languages
'red-link-title' => '$1 (page does not exist)',
@@ -804,10 +962,6 @@ The last attempted database query was:
"$1"
from within function "$2".
Database returned error "$3: $4"',
-'noconnect' => 'Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.<br />
-$1',
-'nodb' => 'Could not select database $1',
-'cachederror' => 'The following is a cached copy of the requested page, and may not be up to date.',
'laggedslavemode' => "'''Warning:''' Page may not contain recent updates.",
'readonly' => 'Database locked',
'enterlockreason' => 'Enter a reason for the lock, including an estimate of when the lock will be released',
@@ -825,6 +979,8 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
'readonly_lag' => 'The database has been automatically locked while the slave database servers catch up to the master',
'internalerror' => 'Internal error',
'internalerror_info' => 'Internal error: $1',
+'fileappenderrorread' => 'Could not read "$1" during append.',
+'fileappenderror' => 'Could not append "$1" to "$2".',
'filecopyerror' => 'Could not copy file "$1" to "$2".',
'filerenameerror' => 'Could not rename file "$1" to "$2".',
'filedeleteerror' => 'Could not delete file "$1".',
@@ -834,7 +990,7 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
'unexpected' => 'Unexpected value: "$1"="$2".',
'formerror' => 'Error: could not submit form',
'badarticleerror' => 'This action cannot be performed on this page.',
-'cannotdelete' => 'Could not delete the page or file specified.
+'cannotdelete' => 'The page or file "$1" could not be deleted.
It may have already been deleted by someone else.',
'badtitle' => 'Bad title',
'badtitletext' => 'The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.
@@ -872,7 +1028,6 @@ The reason given is "\'\'$2\'\'".',
'virus-unknownscanner' => 'unknown antivirus:',
# Login and logout pages
-'logouttitle' => 'User logout',
'logouttext' => "'''You are now logged out.'''
You can continue to use {{SITENAME}} anonymously, or you can [[Special:UserLogin|log in again]] as the same or as a different user.
@@ -880,7 +1035,6 @@ Note that some pages may continue to be displayed as if you were still logged in
'welcomecreation' => '== Welcome, $1! ==
Your account has been created.
Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
-'loginpagetitle' => 'User login',
'yourname' => 'Username:',
'yourpassword' => 'Password:',
'yourpasswordagain' => 'Retype password:',
@@ -891,6 +1045,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
'nav-login-createaccount' => 'Log in / create account',
'loginprompt' => 'You must have cookies enabled to log in to {{SITENAME}}.',
'userlogin' => 'Log in / create account',
+'userloginnocreate' => 'Log in',
'logout' => 'Log out',
'userlogout' => 'Log out',
'notloggedin' => 'Not logged in',
@@ -903,31 +1058,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
'badretype' => 'The passwords you entered do not match.',
'userexists' => 'Username entered already in use.
Please choose a different name.',
-'youremail' => 'E-mail:',
-'username' => 'Username:',
-'uid' => 'User ID:',
-'prefs-memberingroups' => 'Member of {{PLURAL:$1|group|groups}}:',
-'yourrealname' => 'Real name:',
-'yourlanguage' => 'Language:',
-'yourvariant' => 'Variant:', # only translate this message to other languages if you have to change it
-'yournick' => 'Signature:',
-'badsig' => 'Invalid raw signature.
-Check HTML tags.',
-'badsiglength' => 'Your signature is too long.
-It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
-'yourgender' => 'Gender:',
-'gender-unknown' => 'Unspecified',
-'gender-male' => 'Male',
-'gender-female' => 'Female',
-'prefs-help-gender' => 'Optional: used for gender-correct addressing by the software.
-This information will be public.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Real name is optional.
-If you choose to provide it, this will be used for giving you attribution for your work.',
'loginerror' => 'Login error',
-'prefs-help-email' => 'E-mail address is optional, but allows a new password to be e-mailed to you if you forget your password.
-You can also choose to let others contact you through your user or talk page without needing to reveal your identity.',
-'prefs-help-email-required' => 'E-mail address is required.',
+'createaccounterror' => 'Could not create account: $1',
'nocookiesnew' => 'The user account was created, but you are not logged in.
{{SITENAME}} uses cookies to log in users.
You have cookies disabled.
@@ -944,12 +1076,13 @@ Check your spelling, or [[Special:UserLogin/signup|create a new account]].',
'nosuchusershort' => 'There is no user by the name "<nowiki>$1</nowiki>".
Check your spelling.',
'nouserspecified' => 'You have to specify a username.',
+'login-userblocked' => 'This user is blocked. Login not allowed.',
'wrongpassword' => 'Incorrect password entered.
Please try again.',
'wrongpasswordempty' => 'Password entered was blank.
Please try again.',
-'passwordtooshort' => 'Your password is invalid or too short.
-It must have at least {{PLURAL:$1|1 character|$1 characters}} and be different from your username.',
+'passwordtooshort' => 'Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.',
+'password-name-match' => 'Your password must be different from your username.',
'mailmypassword' => 'E-mail new password',
'passwordremindertitle' => 'New temporary password for {{SITENAME}}',
'passwordremindertext' => 'Someone (probably you, from IP address $1) requested a new
@@ -962,6 +1095,7 @@ If someone else made this request, or if you have remembered your password,
and you no longer wish to change it, you may ignore this message and
continue using your old password.',
'noemail' => 'There is no e-mail address recorded for user "$1".',
+'noemailcreate' => 'You need to provide a valid e-mail address',
'passwordsent' => 'A new password has been sent to the e-mail address registered for "$1".
Please log in again after you receive it.',
'blocked-mailpassword' => 'Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.',
@@ -989,6 +1123,7 @@ Please enter a well-formatted address or empty that field.',
You should log in and change your password now.
You may ignore this message, if this account was created in error.',
+'usernamehasherror' => 'Username cannot contain hash characters',
'login-throttled' => 'You have made too many recent login attempts.
Please wait before trying again.',
'loginlanguagelabel' => 'Language: $1',
@@ -999,6 +1134,7 @@ Please wait before trying again.',
* Español|es
* Italiano|it
* Nederlands|nl', # do not translate or duplicate this message to other languages
+'suspicious-userlogout' => 'Your request to log out was denied because it looks like it was sent by a broken browser or caching proxy.',
# Password reset dialog
'resetpass' => 'Change password',
@@ -1012,18 +1148,13 @@ To finish logging in, you must set a new password here:',
'resetpass_submit' => 'Set password and log in',
'resetpass_success' => 'Your password has been changed successfully!
Now logging you in...',
-'resetpass_bad_temporary' => 'Invalid temporary password.
-You may have already successfully changed your password or requested a new temporary password.',
'resetpass_forbidden' => 'Passwords cannot be changed',
'resetpass-no-info' => 'You must be logged in to access this page directly.',
'resetpass-submit-loggedin' => 'Change password',
+'resetpass-submit-cancel' => 'Cancel',
'resetpass-wrong-oldpass' => 'Invalid temporary or current password.
You may have already successfully changed your password or requested a new temporary password.',
'resetpass-temp-password' => 'Temporary password:',
-'resetpass-log' => 'Password resets log',
-'resetpass-logtext' => 'Below is a log of users who have had their password reset by an administrator.',
-'resetpass-logentry' => 'changed the password for $1',
-'resetpass-comment' => 'Reason for password reset:',
# Edit page toolbar
'bold_sample' => 'Bold text',
@@ -1063,7 +1194,7 @@ Your IP address will be recorded in this page's edit history.",
If you click Save again, your edit will be saved without one.",
'missingcommenttext' => 'Please enter a comment below.',
'missingcommentheader' => "'''Reminder:''' You have not provided a subject/headline for this comment.
-If you click Save again, your edit will be saved without one.",
+If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
'summary-preview' => 'Summary preview:',
'subject-preview' => 'Subject/headline preview:',
'blockedtitle' => 'User is blocked',
@@ -1100,12 +1231,11 @@ Please include all above details in any queries you make.',
'blockededitsource' => "The text of '''your edits''' to '''$1''' is shown below:",
'whitelistedittitle' => 'Login required to edit',
'whitelistedittext' => 'You have to $1 to edit pages.',
-'confirmedittitle' => 'E-mail confirmation required to edit',
'confirmedittext' => 'You must confirm your e-mail address before editing pages.
Please set and validate your e-mail address through your [[Special:Preferences|user preferences]].',
'nosuchsectiontitle' => 'Cannot find section',
'nosuchsectiontext' => 'You tried to edit a section that does not exist.
-Since there is no section $1, there is no place to save your edit.',
+It may have been moved or deleted while you were viewing the page.',
'loginreqtitle' => 'Login required',
'loginreqlink' => 'log in',
'loginreqpagetext' => 'You must $1 to view other pages.',
@@ -1125,17 +1255,24 @@ Such an IP address can be shared by several users.
If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:UserLogin/signup|create an account]] or [[Special:UserLogin|log in]] to avoid future confusion with other anonymous users.''",
'noarticletext' => 'There is currently no text in this page.
You can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
-<span class="plainlinks">[{{fullurl:Special:Log|page={{urlencode:{{FULLPAGENAME}}}}}} search the related logs],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
or [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.',
+'noarticletext-nopermission' => 'There is currently no text in this page.
+You can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
+or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>.',
'noarticletextanon' => '{{int:noarticletext}}', # do not translate or duplicate this message to other languages
'userpage-userdoesnotexist' => 'User account "$1" is not registered.
Please check if you want to create/edit this page.',
+'userpage-userdoesnotexist-view' => 'User account "$1" is not registered.',
+'blocked-notice-logextract' => 'This user is currently blocked.
+The latest block log entry is provided below for reference:',
'clearyourcache' => "'''Note: After saving, you may have to bypass your browser's cache to see the changes.'''
'''Mozilla / Firefox / Safari:''' hold ''Shift'' while clicking ''Reload'', or press either ''Ctrl-F5'' or ''Ctrl-R'' (''Command-R'' on a Macintosh);
'''Konqueror: '''click ''Reload'' or press ''F5'';
'''Opera:''' clear the cache in ''Tools → Preferences'';
'''Internet Explorer:''' hold ''Ctrl'' while clicking ''Refresh,'' or press ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Use the 'Show preview' button to test your new CSS/JS before saving.",
+'usercssyoucanpreview' => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
+'userjsyoucanpreview' => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
'usercsspreview' => "'''Remember that you are only previewing your user CSS.'''
'''It has not yet been saved!'''",
'userjspreview' => "'''Remember that you are only testing/previewing your user JavaScript.'''
@@ -1183,6 +1320,7 @@ You are also promising us that you wrote this yourself, or copied it from a publ
If you do not want your writing to be edited mercilessly, then do not submit it here.<br />
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).
'''Do not submit copyrighted work without permission!'''",
+'editpage-tos-summary' => '-', # do not translate or duplicate this message to other languages
'longpagewarning' => "'''Warning:''' This page is $1 kilobytes long;
some browsers may have problems editing pages approaching or longer than 32kb.
Please consider breaking the page into smaller sections.",
@@ -1192,13 +1330,16 @@ It cannot be saved.",
You may wish to cut-n-paste the text into a text file and save it for later.
The administrator who locked it offered this explanation: $1",
-'protectedpagewarning' => "'''Warning: This page has been locked so that only users with administrator privileges can edit it.'''",
-'semiprotectedpagewarning' => "'''Note:''' This page has been locked so that only registered users can edit it.",
+'protectedpagewarning' => "'''Warning: This page has been locked so that only users with administrator privileges can edit it.'''
+The latest log entry is provided below for reference:",
+'semiprotectedpagewarning' => "'''Note:''' This page has been locked so that only registered users can edit it.
+The latest log entry is provided below for reference:",
'cascadeprotectedwarning' => "'''Warning:''' This page has been locked so that only users with administrator privileges can edit it, because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
-'titleprotectedwarning' => "'''Warning: This page has been locked so that [[Special:ListGroupRights|specific rights]] are needed to create it.'''",
-'templatesused' => 'Templates used on this page:',
-'templatesusedpreview' => 'Templates used in this preview:',
-'templatesusedsection' => 'Templates used in this section:',
+'titleprotectedwarning' => "'''Warning: This page has been locked so that [[Special:ListGroupRights|specific rights]] are needed to create it.'''
+The latest log entry is provided below for reference:",
+'templatesused' => '{{PLURAL:$1|Template|Templates}} used on this page:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Templates}} used in this preview:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Templates}} used in this section:',
'template-protected' => '(protected)',
'template-semiprotected' => '(semi-protected)',
'hiddencategories' => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
@@ -1207,16 +1348,18 @@ The administrator who locked it offered this explanation: $1",
'nocreatetext' => '{{SITENAME}} has restricted the ability to create new pages.
You can go back and edit an existing page, or [[Special:UserLogin|log in or create an account]].',
'nocreate-loggedin' => 'You do not have permission to create new pages.',
+'sectioneditnotsupported-title' => 'Section editing not supported',
+'sectioneditnotsupported-text' => 'Section editing is not supported in this page.',
'permissionserrors' => 'Permissions errors',
'permissionserrorstext' => 'You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:',
'permissionserrorstext-withaction' => 'You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:',
-'recreate-deleted-warn' => "'''Warning: You are recreating a page that was previously deleted.'''
+'recreate-moveddeleted-warn' => "'''Warning: You are recreating a page that was previously deleted.'''
You should consider whether it is appropriate to continue editing this page.
-The deletion log for this page is provided here for convenience:",
-'deleted-notice' => 'This page has been deleted.
-The deletion log for the page is provided below for reference.',
-'deletelog-fulllog' => 'View full log',
+The deletion and move log for this page are provided here for convenience:",
+'moveddeleted-notice' => 'This page has been deleted.
+The deletion and move log for the page are provided below for reference.',
+'log-fulllog' => 'View full log',
'edit-hook-aborted' => 'Edit aborted by hook.
It gave no explanation.',
'edit-gone-missing' => 'Could not update the page.
@@ -1225,6 +1368,8 @@ It appears to have been deleted.',
'edit-no-change' => 'Your edit was ignored, because no change was made to the text.',
'edit-already-exists' => 'Could not create a new page.
It already exists.',
+'addsection-preload' => '', # do not translate or duplicate this message to other languages
+'addsection-editintro' => '', # do not translate or duplicate this message to other languages
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Warning:''' This page contains too many expensive parser function calls.
@@ -1239,13 +1384,14 @@ These arguments have been omitted.",
'post-expand-template-argument-category' => 'Pages containing omitted template arguments',
'parser-template-loop-warning' => 'Template loop detected: [[$1]]',
'parser-template-recursion-depth-warning' => 'Template recursion depth limit exceeded ($1)',
+'language-converter-depth-warning' => 'Language converter depth limit exceeded ($1)',
# "Undo" feature
'undo-success' => 'The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.',
'undo-failure' => 'The edit could not be undone due to conflicting intermediate edits.',
'undo-norev' => 'The edit could not be undone because it does not exist or was deleted.',
-'undo-summary' => 'Undo revision $1 by [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]])',
+'undo-summary' => 'Undo revision $1 by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]])',
# Account creation failure
'cantcreateaccounttitle' => 'Cannot create account',
@@ -1260,8 +1406,8 @@ The reason given by $3 is ''$2''",
'currentrev' => 'Latest revision',
'currentrev-asof' => 'Latest revision as of $1',
'revisionasof' => 'Revision as of $1',
-'revision-info' => 'Revision as of $1 by $2', # Additionally available: $3: revision id
-'revision-info-current' => '-', # Available parameters: $1: timestamp; $2: userlinks; $3: revision id; do not translate or duplicate this message to other languages
+'revision-info' => 'Revision as of $1 by $2',
+'revision-info-current' => '-', # do not translate or duplicate this message to other languages
'revision-nav' => '($1) $2{{int:pipe-separator}}$3 ($4){{int:pipe-separator}}$5 ($6)', # do not translate or duplicate this message to other languages
'previousrevision' => '← Older revision',
'nextrevision' => 'Newer revision →',
@@ -1274,8 +1420,8 @@ The reason given by $3 is ''$2''",
'histlegend' => "Diff selection: mark the radio boxes of the revisions to compare and hit enter or the button at the bottom.<br />
Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})''' = difference with preceding revision, '''{{int:minoreditletter}}''' = minor edit.",
'history-fieldset-title' => 'Browse history',
+'history-show-deleted' => 'Deleted only',
'history_copyright' => '-', # do not translate or duplicate this message to other languages
-'deletedrev' => '[deleted]',
'histfirst' => 'Earliest',
'histlast' => 'Latest',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -1284,72 +1430,116 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
# Revision feed
'history-feed-title' => 'Revision history',
'history-feed-description' => 'Revision history for this page on the wiki',
-'history-feed-item-nocomment' => '$1 at $2', # user at time
+'history-feed-item-nocomment' => '$1 at $2',
'history-feed-empty' => 'The requested page does not exist.
It may have been deleted from the wiki, or renamed.
Try [[Special:Search|searching on the wiki]] for relevant new pages.',
# Revision deletion
-'rev-deleted-comment' => '(comment removed)',
-'rev-deleted-user' => '(username removed)',
-'rev-deleted-event' => '(log action removed)',
-'rev-deleted-text-permission' => "This page revision has been '''deleted'''.
-There may be details in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-deleted-text-view' => "This page revision has been '''deleted'''.
-As an administrator you can view it; there may be details in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-deleted-no-diff' => "You cannot view this diff because one of the revisions has been '''deleted'''.
-There may be details in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-deleted-unhide-diff' => "One of the revisions of this diff has been '''deleted'''.
-There may be details in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].
+'rev-deleted-comment' => '(comment removed)',
+'rev-deleted-user' => '(username removed)',
+'rev-deleted-event' => '(log action removed)',
+'rev-deleted-user-contribs' => '[username or IP address removed - edit hidden from contributions]',
+'rev-deleted-text-permission' => "This page revision has been '''deleted'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
+'rev-deleted-text-unhide' => "This page revision has been '''deleted'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
+As an administrator you can still [$1 view this revision] if you wish to proceed.",
+'rev-suppressed-text-unhide' => "This page revision has been '''suppressed'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
+As an administrator you can still [$1 view this revision] if you wish to proceed.",
+'rev-deleted-text-view' => "This page revision has been '''deleted'''.
+As an administrator you can view it; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
+'rev-suppressed-text-view' => "This page revision has been '''suppressed'''.
+As an administrator you can view it; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
+'rev-deleted-no-diff' => "You cannot view this diff because one of the revisions has been '''deleted'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
+'rev-suppressed-no-diff' => "You cannot view this diff because one of the revisions has been '''deleted'''.",
+'rev-deleted-unhide-diff' => "One of the revisions of this diff has been '''deleted'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
As an administrator you can still [$1 view this diff] if you wish to proceed.",
-'rev-delundel' => 'show/hide',
-'revisiondelete' => 'Delete/undelete revisions',
-'revdelete-nooldid-title' => 'Invalid target revision',
-'revdelete-nooldid-text' => 'You have either not specified a target revision(s) to perform this
+'rev-suppressed-unhide-diff' => "One of the revisions of this diff has been '''suppressed'''.
+Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
+As an administrator you can still [$1 view this diff] if you wish to proceed.",
+'rev-deleted-diff-view' => "One of the revisions of this diff has been '''deleted'''.
+As an administrator you can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
+'rev-suppressed-diff-view' => "One of the revisions of this diff has been '''suppressed'''.
+As an administrator you can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
+'rev-delundel' => 'show/hide',
+'rev-showdeleted' => 'show',
+'revisiondelete' => 'Delete/undelete revisions',
+'revdelete-nooldid-title' => 'Invalid target revision',
+'revdelete-nooldid-text' => 'You have either not specified a target revision(s) to perform this
function, the specified revision does not exist, or you are attempting to hide the current revision.',
-'revdelete-nologtype-title' => 'No log type given',
-'revdelete-nologtype-text' => 'You have not specified a log type to perform this action on.',
-'revdelete-toomanytargets-title' => 'Too many targets',
-'revdelete-toomanytargets-text' => 'You have specified too many types of targets to perform this action on.',
-'revdelete-nologid-title' => 'Invalid log entry',
-'revdelete-nologid-text' => 'You have either not specified a target log event to perform this function or the specified entry does not exist.',
-'revdelete-selected' => "'''{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Selected log event|Selected log events}}:'''",
-'revdelete-text' => "'''Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.'''
-Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.
-
-Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].",
-'revdelete-suppress-text' => "Suppression should '''only''' be used for the following cases:
+'revdelete-nologtype-title' => 'No log type given',
+'revdelete-nologtype-text' => 'You have not specified a log type to perform this action on.',
+'revdelete-nologid-title' => 'Invalid log entry',
+'revdelete-nologid-text' => 'You have either not specified a target log event to perform this function or the specified entry does not exist.',
+'revdelete-no-file' => 'The file specified does not exist.',
+'revdelete-show-file-confirm' => 'Are you sure you want to view a deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
+'revdelete-show-file-submit' => 'Yes',
+'revdelete-selected' => "'''{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Selected log event|Selected log events}}:'''",
+'revdelete-text' => "'''Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.'''
+Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
+'revdelete-confirm' => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
+'revdelete-suppress-text' => "Suppression should '''only''' be used for the following cases:
* Potentially libelous information
* Inappropriate personal information
*: ''home addresses and telephone numbers, social security numbers, etc.''",
-'revdelete-legend' => 'Set visibility restrictions',
-'revdelete-hide-text' => 'Hide revision text',
-'revdelete-hide-name' => 'Hide action and target',
-'revdelete-hide-comment' => 'Hide edit summary',
-'revdelete-hide-user' => "Hide editor's username/IP address",
-'revdelete-hide-restricted' => 'Suppress data from administrators as well as others',
-'revdelete-suppress' => 'Suppress data from administrators as well as others',
-'revdelete-hide-image' => 'Hide file content',
-'revdelete-unsuppress' => 'Remove restrictions on restored revisions',
-'revdelete-log' => 'Reason:',
-'revdelete-submit' => 'Apply to selected revision',
-'revdelete-logentry' => 'changed revision visibility of [[$1]]',
-'logdelete-logentry' => 'changed event visibility of [[$1]]',
-'revdelete-success' => "'''Revision visibility successfully updated.'''",
-'logdelete-success' => "'''Log visibility successfully set.'''",
-'revdel-restore' => 'change visibility',
-'pagehist' => 'Page history',
-'deletedhist' => 'Deleted history',
-'revdelete-content' => 'content',
-'revdelete-summary' => 'edit summary',
-'revdelete-uname' => 'username',
-'revdelete-restricted' => 'applied restrictions to administrators',
-'revdelete-unrestricted' => 'removed restrictions for administrators',
-'revdelete-hid' => 'hid $1',
-'revdelete-unhid' => 'unhid $1',
-'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|revision|revisions}}',
-'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|event|events}}',
+'revdelete-legend' => 'Set visibility restrictions',
+'revdelete-hide-text' => 'Hide revision text',
+'revdelete-hide-image' => 'Hide file content',
+'revdelete-hide-name' => 'Hide action and target',
+'revdelete-hide-comment' => 'Hide edit summary',
+'revdelete-hide-user' => "Hide editor's username/IP address",
+'revdelete-hide-restricted' => 'Suppress data from administrators as well as others',
+'revdelete-radio-same' => '(do not change)',
+'revdelete-radio-set' => 'Yes',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Suppress data from administrators as well as others',
+'revdelete-unsuppress' => 'Remove restrictions on restored revisions',
+'revdelete-log' => 'Reason:',
+'revdelete-submit' => 'Apply to selected {{PLURAL:$1|revision|revisions}}',
+'revdelete-logentry' => 'changed revision visibility of "[[$1]]"',
+'logdelete-logentry' => 'changed event visibility of "[[$1]]"',
+'revdelete-success' => "'''Revision visibility successfully updated.'''",
+'revdelete-failure' => "'''Revision visibility could not be updated:'''
+$1",
+'logdelete-success' => "'''Log visibility successfully set.'''",
+'logdelete-failure' => "'''Log visibility could not be set:'''
+$1",
+'revdel-restore' => 'change visibility',
+'pagehist' => 'Page history',
+'deletedhist' => 'Deleted history',
+'revdelete-content' => 'content',
+'revdelete-summary' => 'edit summary',
+'revdelete-uname' => 'username',
+'revdelete-restricted' => 'applied restrictions to administrators',
+'revdelete-unrestricted' => 'removed restrictions for administrators',
+'revdelete-hid' => 'hid $1',
+'revdelete-unhid' => 'unhid $1',
+'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|revision|revisions}}',
+'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|event|events}}',
+'revdelete-hide-current' => 'Error hiding the item dated $2, $1: this is the current revision.
+It cannot be hidden.',
+'revdelete-show-no-access' => 'Error showing the item dated $2, $1: this item has been marked "restricted".
+You do not have access to it.',
+'revdelete-modify-no-access' => 'Error modifying the item dated $2, $1: this item has been marked "restricted".
+You do not have access to it.',
+'revdelete-modify-missing' => 'Error modifying item ID $1: it is missing from the database!',
+'revdelete-no-change' => "'''Warning:''' the item dated $2, $1 already had the requested visibility settings.",
+'revdelete-concurrent-change' => 'Error modifying the item dated $2, $1: its status appears to have been changed by someone else while you attempted to modify it.
+Please check the logs.',
+'revdelete-only-restricted' => 'Error hiding the item dated $2, $1: you cannot suppress items from view by administrators without also selecting one of the other visibility options.',
+'revdelete-reason-dropdown' => '*Common delete reasons
+** Copyright violation
+** Inappropriate personal information
+** Potentially libelous information',
+'revdelete-otherreason' => 'Other/additional reason:',
+'revdelete-reasonotherlist' => 'Other reason',
+'revdelete-edit-reasonlist' => 'Edit delete reasons',
+'revdelete-offender' => 'Revision author:',
# Suppression log
'suppressionlog' => 'Suppression log',
@@ -1388,89 +1578,32 @@ Note that using the navigation links will reset this column.',
'mergelogpagetext' => 'Below is a list of the most recent merges of one page history into another.',
# Diffs
-'history-title' => 'Revision history of "$1"',
-'difference' => '(Difference between revisions)',
-'lineno' => 'Line $1:',
-'compareselectedversions' => 'Compare selected revisions',
-'visualcomparison' => 'Visual comparison',
-'wikicodecomparison' => 'Wikitext comparison',
-'editundo' => 'undo',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} not shown)',
-'diff-movedto' => 'moved to $1',
-'diff-styleadded' => '$1 style added',
-'diff-added' => '$1 added',
-'diff-changedto' => 'changed to $1',
-'diff-movedoutof' => 'moved out of $1',
-'diff-styleremoved' => '$1 style removed',
-'diff-removed' => '$1 removed',
-'diff-changedfrom' => 'changed from $1',
-'diff-src' => 'source',
-'diff-withdestination' => 'with destination $1',
-'diff-with' => '&#32;with $1 $2',
-'diff-with-additional' => '$1 $2', # only translate this message to other languages if you have to change it
-'diff-with-final' => '&#32;and $1 $2',
-'diff-width' => 'width',
-'diff-height' => 'height',
-'diff-p' => "a '''paragraph'''",
-'diff-blockquote' => "a '''quote'''",
-'diff-h1' => "a '''heading (level 1)'''",
-'diff-h2' => "a '''heading (level 2)'''",
-'diff-h3' => "a '''heading (level 3)'''",
-'diff-h4' => "a '''heading (level 4)'''",
-'diff-h5' => "a '''heading (level 5)'''",
-'diff-pre' => "a '''preformatted block'''",
-'diff-div' => "a '''division'''",
-'diff-ul' => "an '''unordered list'''",
-'diff-ol' => "an '''ordered list'''",
-'diff-li' => "a '''list item'''",
-'diff-table' => "a '''table'''",
-'diff-tbody' => "a '''table's content'''",
-'diff-tr' => "a '''row'''",
-'diff-td' => "a '''cell'''",
-'diff-th' => "a '''header'''",
-'diff-br' => "a '''break'''",
-'diff-hr' => "a '''horizontal rule'''",
-'diff-code' => "a '''computer code block'''",
-'diff-dl' => "a '''definition list'''",
-'diff-dt' => "a '''definition term'''",
-'diff-dd' => "a '''definition'''",
-'diff-input' => "an '''input'''",
-'diff-form' => "a '''form'''",
-'diff-img' => "an '''image'''",
-'diff-span' => "a '''span'''",
-'diff-a' => "a '''link'''",
-'diff-i' => "'''italics'''",
-'diff-b' => "'''bold'''",
-'diff-strong' => "'''strong'''",
-'diff-em' => "'''emphasis'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''big'''",
-'diff-del' => "'''deleted'''",
-'diff-tt' => "'''fixed width'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''strikethrough'''",
+'history-title' => 'Revision history of "$1"',
+'difference' => '(Difference between revisions)',
+'lineno' => 'Line $1:',
+'compareselectedversions' => 'Compare selected revisions',
+'showhideselectedversions' => 'Show/hide selected revisions',
+'editundo' => 'undo',
+'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} not shown)',
# Search results
+'search-summary' => '', # do not translate or duplicate this message to other languages
'searchresults' => 'Search results',
'searchresults-title' => 'Search results for "$1"',
'searchresulttext' => 'For more information about searching {{SITENAME}}, see [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'You searched for \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
'searchsubtitleinvalid' => "You searched for '''$1'''",
-'noexactmatch' => "'''There is no page titled \"\$1\".'''
-You can [[:\$1|create this page]].",
-'noexactmatch-nocreate' => "'''There is no page titled \"\$1\".'''",
'toomanymatches' => 'Too many matches were returned, please try a different query',
'titlematches' => 'Page title matches',
'notitlematches' => 'No page title matches',
'textmatches' => 'Page text matches',
'notextmatches' => 'No page text matches',
-'prevn' => 'previous $1',
-'nextn' => 'next $1',
+'prevn' => 'previous {{PLURAL:$1|$1}}',
+'nextn' => 'next {{PLURAL:$1|$1}}',
'prevn-title' => 'Previous $1 {{PLURAL:$1|result|results}}',
'nextn-title' => 'Next $1 {{PLURAL:$1|result|results}}',
'shown-title' => 'Show $1 {{PLURAL:$1|result|results}} per page',
-'viewprevnext' => 'View ($1) ($2) ($3)',
+'viewprevnext' => 'View ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Search options',
'searchmenu-exists' => "'''There is a page named \"[[:\$1]]\" on this wiki'''",
'searchmenu-new' => "'''Create the page \"[[:\$1]]\" on this wiki!'''",
@@ -1478,9 +1611,8 @@ You can [[:\$1|create this page]].",
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]',
'searchmenu-help' => '[[{{MediaWiki:Searchhelp-url}}|{{int:help}}]]?', # do not translate or duplicate this message to other languages
'searchprofile-articles' => 'Content pages',
-'searchprofile-articles-and-proj' => 'Content & project pages',
-'searchprofile-project' => 'Project pages',
-'searchprofile-images' => 'Files',
+'searchprofile-project' => 'Help and Project pages',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Everything',
'searchprofile-advanced' => 'Advanced',
'searchprofile-articles-tooltip' => 'Search in $1',
@@ -1488,8 +1620,6 @@ You can [[:\$1|create this page]].",
'searchprofile-images-tooltip' => 'Search for files',
'searchprofile-everything-tooltip' => 'Search all of content (including talk pages)',
'searchprofile-advanced-tooltip' => 'Search in custom namespaces',
-'prefs-search-nsdefault' => 'Search using defaults:',
-'prefs-search-nscustom' => 'Search custom namespaces:',
'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})',
'search-result-score' => 'Relevance: $1%',
'search-redirect' => '(redirect $1)',
@@ -1503,11 +1633,12 @@ You can [[:\$1|create this page]].",
'search-mwsuggest-disabled' => 'no suggestions',
'search-relatedarticle' => 'Related',
'mwsuggest-disable' => 'Disable AJAX suggestions',
+'searcheverything-enable' => 'Search in all namespaces',
'searchrelated' => 'related',
'searchall' => 'all',
'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
-'showingresultstotal' => "Showing below {{PLURAL:$4|result '''$1''' of '''$3'''|results '''$1 - $2''' of '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
'nonefound' => "'''Note''': Only some namespaces are searched by default.
Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.",
'search-nonefound' => 'There were no results matching the query.',
@@ -1516,6 +1647,9 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
'powersearch-ns' => 'Search in namespaces:',
'powersearch-redir' => 'List redirects',
'powersearch-field' => 'Search for',
+'powersearch-togglelabel' => 'Check:',
+'powersearch-toggleall' => 'All',
+'powersearch-togglenone' => 'None',
'search-external' => 'External search',
'searchdisabled' => '{{SITENAME}} search is disabled.
You can search via Google in the meantime.
@@ -1537,93 +1671,131 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
# OpenSearch description
'opensearch-desc' => '{{SITENAME}} ({{CONTENTLANGUAGE}})', # do not translate or duplicate this message to other languages
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'None',
+'qbsettings-fixedleft' => 'Fixed left',
+'qbsettings-fixedright' => 'Fixed right',
+'qbsettings-floatingleft' => 'Floating left',
+'qbsettings-floatingright' => 'Floating right',
+
# Preferences page
-'preferences' => 'Preferences',
-'preferences-summary' => '', # do not translate or duplicate this message to other languages
-'mypreferences' => 'My preferences',
-'prefs-edits' => 'Number of edits:',
-'prefsnologin' => 'Not logged in',
-'prefsnologintext' => 'You must be <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logged in]</span> to set user preferences.',
-'prefsreset' => 'Preferences have been reset from storage.',
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'None',
-'qbsettings-fixedleft' => 'Fixed left',
-'qbsettings-fixedright' => 'Fixed right',
-'qbsettings-floatingleft' => 'Floating left',
-'qbsettings-floatingright' => 'Floating right',
-'changepassword' => 'Change password',
-'skin' => 'Skin',
-'skin-preview' => 'Preview',
-'math' => 'Math',
-'dateformat' => 'Date format',
-'datedefault' => 'No preference',
-'datetime' => 'Date and time',
-'math_failure' => 'Failed to parse',
-'math_unknown_error' => 'unknown error',
-'math_unknown_function' => 'unknown function',
-'math_lexing_error' => 'lexing error',
-'math_syntax_error' => 'syntax error',
-'math_image_error' => 'PNG conversion failed;
-check for correct installation of latex, dvips, gs, and convert',
-'math_bad_tmpdir' => 'Cannot write to or create math temp directory',
-'math_bad_output' => 'Cannot write to or create math output directory',
-'math_notexvc' => 'Missing texvc executable;
-please see math/README to configure.',
-'prefs-personal' => 'User profile',
-'prefs-rc' => 'Recent changes',
-'prefs-watchlist' => 'Watchlist',
-'prefs-watchlist-days' => 'Days to show in watchlist:',
-'prefs-watchlist-days-max' => '(maximum 7 days)',
-'prefs-watchlist-edits' => 'Maximum number of changes to show in expanded watchlist:',
-'prefs-watchlist-edits-max' => '(maximum number: 1000)',
-'prefs-misc' => 'Misc',
-'prefs-resetpass' => 'Change password',
-'saveprefs' => 'Save',
-'resetprefs' => 'Clear unsaved changes',
-'restoreprefs' => 'Restore all default settings',
-'textboxsize' => 'Editing',
-'prefs-edit-boxsize' => 'Size of the edit window.',
-'rows' => 'Rows:',
-'columns' => 'Columns:',
-'searchresultshead' => 'Search',
-'resultsperpage' => 'Hits per page:',
-'contextlines' => 'Lines per hit:',
-'contextchars' => 'Context per line:',
-'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
-'recentchangesdays' => 'Days to show in recent changes:',
-'recentchangesdays-max' => '(maximum $1 {{PLURAL:$1|day|days}})',
-'recentchangescount' => 'Number of edits to show in recent changes, page histories, and in logs, by default:',
-'savedprefs' => 'Your preferences have been saved.',
-'timezonelegend' => 'Time zone:',
-'timezonetext' => '¹The number of hours your local time differs from server time (UTC).',
-'localtime' => 'Local time:',
-'timezoneselect' => 'Time zone:',
-'timezoneuseserverdefault' => 'Use server default',
-'timezoneuseoffset' => 'Other (specify offset)',
-'timezoneoffset' => 'Offset¹:',
-'servertime' => 'Server time:',
-'guesstimezone' => 'Fill in from browser',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctic',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlantic Ocean',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Indian Ocean',
-'timezoneregion-pacific' => 'Pacific Ocean',
-'allowemail' => 'Enable e-mail from other users',
-'prefs-searchoptions' => 'Search options',
-'prefs-namespaces' => 'Namespaces',
-'defaultns' => 'Search in these namespaces by default:',
-'default' => 'default',
-'files' => 'Files',
-'prefs-custom-css' => 'Custom CSS',
-'prefs-custom-js' => 'Custom JavaScript',
+'preferences' => 'Preferences',
+'preferences-summary' => '', # do not translate or duplicate this message to other languages
+'mypreferences' => 'My preferences',
+'prefs-edits' => 'Number of edits:',
+'prefsnologin' => 'Not logged in',
+'prefsnologintext' => 'You must be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> to set user preferences.',
+'changepassword' => 'Change password',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Preview',
+'prefs-math' => 'Math',
+'datedefault' => 'No preference',
+'prefs-datetime' => 'Date and time',
+'prefs-personal' => 'User profile',
+'prefs-rc' => 'Recent changes',
+'prefs-watchlist' => 'Watchlist',
+'prefs-watchlist-days' => 'Days to show in watchlist:',
+'prefs-watchlist-days-max' => 'Maximum 7 days',
+'prefs-watchlist-edits' => 'Maximum number of changes to show in expanded watchlist:',
+'prefs-watchlist-edits-max' => 'Maximum number: 1000',
+'prefs-watchlist-token' => 'Watchlist token:',
+'prefs-misc' => 'Misc',
+'prefs-resetpass' => 'Change password',
+'prefs-email' => 'E-mail options',
+'prefs-rendering' => 'Appearance',
+'saveprefs' => 'Save',
+'resetprefs' => 'Clear unsaved changes',
+'restoreprefs' => 'Restore all default settings',
+'prefs-editing' => 'Editing',
+'prefs-edit-boxsize' => 'Size of the edit window.',
+'rows' => 'Rows:',
+'columns' => 'Columns:',
+'searchresultshead' => 'Search',
+'resultsperpage' => 'Hits per page:',
+'contextlines' => 'Lines per hit:',
+'contextchars' => 'Context per line:',
+'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
+'recentchangesdays' => 'Days to show in recent changes:',
+'recentchangesdays-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'recentchangescount' => 'Number of edits to show by default:',
+'prefs-help-recentchangescount' => 'This includes recent changes, page histories, and logs.',
+'prefs-help-watchlist-token' => "Filling in this field with a secret key will generate an RSS feed for your watchlist.
+Anyone who knows the key in this field will be able to read your watchlist, so choose a secure value.
+Here's a randomly-generated value you can use: $1",
+'savedprefs' => 'Your preferences have been saved.',
+'timezonelegend' => 'Time zone:',
+'localtime' => 'Local time:',
+'timezoneuseserverdefault' => 'Use server default',
+'timezoneuseoffset' => 'Other (specify offset)',
+'timezoneoffset' => 'Offset¹:',
+'servertime' => 'Server time:',
+'guesstimezone' => 'Fill in from browser',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctic',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlantic Ocean',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Indian Ocean',
+'timezoneregion-pacific' => 'Pacific Ocean',
+'allowemail' => 'Enable e-mail from other users',
+'prefs-searchoptions' => 'Search options',
+'prefs-namespaces' => 'Namespaces',
+'defaultns' => 'Otherwise search in these namespaces:',
+'default' => 'default',
+'prefs-files' => 'Files',
+'prefs-custom-css' => 'Custom CSS',
+'prefs-custom-js' => 'Custom JavaScript',
+'prefs-reset-intro' => 'You can use this page to reset your preferences to the site defaults.
+This cannot be undone.',
+'prefs-emailconfirm-label' => 'E-mail confirmation:',
+'prefs-textboxsize' => 'Size of editing window',
+'youremail' => 'E-mail:',
+'username' => 'Username:',
+'uid' => 'User ID:',
+'prefs-memberingroups' => 'Member of {{PLURAL:$1|group|groups}}:',
+'prefs-memberingroups-type' => '$1', # only translate this message to other languages if you have to change it
+'prefs-registration' => 'Registration time:',
+'prefs-registration-date-time' => '$1', # only translate this message to other languages if you have to change it
+'yourrealname' => 'Real name:',
+'yourlanguage' => 'Language:',
+'yourvariant' => 'Variant:', # only translate this message to other languages if you have to change it
+'yournick' => 'New signature:',
+'prefs-help-signature' => 'Comments on talk pages should be signed with "<nowiki>~~~~</nowiki>" which will be converted into your signature and a timestamp.',
+'badsig' => 'Invalid raw signature.
+Check HTML tags.',
+'badsiglength' => 'Your signature is too long.
+It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
+'yourgender' => 'Gender:',
+'gender-unknown' => 'Unspecified',
+'gender-male' => 'Male',
+'gender-female' => 'Female',
+'prefs-help-gender' => 'Optional: used for gender-correct addressing by the software.
+This information will be public.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Real name is optional.
+If you choose to provide it, this will be used for giving you attribution for your work.',
+'prefs-help-email' => 'E-mail address is optional, but is needed for password resets, should you forget your password.
+You can also choose to let others contact you through your user or talk page without needing to reveal your identity.',
+'prefs-help-email-required' => 'E-mail address is required.',
+'prefs-info' => 'Basic information',
+'prefs-i18n' => 'Internationalisation',
+'prefs-signature' => 'Signature',
+'prefs-dateformat' => 'Date format',
+'prefs-timeoffset' => 'Time offset',
+'prefs-advancedediting' => 'Advanced options',
+'prefs-advancedrc' => 'Advanced options',
+'prefs-advancedrendering' => 'Advanced options',
+'prefs-advancedsearchoptions' => 'Advanced options',
+'prefs-advancedwatchlist' => 'Advanced options',
+'prefs-display' => 'Display options',
+'prefs-diffs' => 'Diffs',
# User rights
-'userrights' => 'User rights management', # Not used as normal message but as header for the special page itself
+'userrights' => 'User rights management',
'userrights-summary' => '', # do not translate or duplicate this message to other languages
'userrights-lookup-user' => 'Manage user groups',
'userrights-user-editname' => 'Enter a username:',
@@ -1632,6 +1804,7 @@ please see math/README to configure.',
'userrights-editusergroup' => 'Edit user groups',
'saveusergroups' => 'Save user groups',
'userrights-groupsmember' => 'Member of:',
+'userrights-groupsmember-auto' => 'Implicit member of:',
'userrights-groups-help' => 'You may alter the groups this user is in:
* A checked box means the user is in that group.
* An unchecked box means the user is not in that group.
@@ -1696,6 +1869,7 @@ please see math/README to configure.',
'right-bigdelete' => 'Delete pages with large histories',
'right-deleterevision' => 'Delete and undelete specific revisions of pages',
'right-deletedhistory' => 'View deleted history entries, without their associated text',
+'right-deletedtext' => 'View deleted text and changes between deleted revisions',
'right-browsearchive' => 'Search deleted pages',
'right-undelete' => 'Undelete a page',
'right-suppressrevision' => 'Review and restore revisions hidden from administrators',
@@ -1709,6 +1883,8 @@ please see math/README to configure.',
'right-editprotected' => 'Edit protected pages (without cascading protection)',
'right-editinterface' => 'Edit the user interface',
'right-editusercssjs' => "Edit other users' CSS and JavaScript files",
+'right-editusercss' => "Edit other users' CSS files",
+'right-edituserjs' => "Edit other users' JavaScript files",
'right-rollback' => 'Quickly rollback the edits of the last user who edited a particular page',
'right-markbotedits' => 'Mark rolled-back edits as bot edits',
'right-noratelimit' => 'Not be affected by rate limits',
@@ -1725,6 +1901,8 @@ please see math/README to configure.',
'right-siteadmin' => 'Lock and unlock the database',
'right-reset-passwords' => "Reset other users' passwords",
'right-override-export-depth' => 'Export pages including linked pages up to a depth of 5',
+'right-versiondetail' => 'Show the extended software version information',
+'right-sendemail' => 'Send e-mail to other users',
# User rights log
'rightslog' => 'User rights log',
@@ -1775,6 +1953,15 @@ please see math/README to configure.',
'recentchanges-legend' => 'Recent changes options',
'recentchangestext' => 'Track the most recent changes to the wiki on this page.',
'recentchanges-feed-description' => 'Track the most recent changes to the wiki in this feed.',
+'recentchanges-label-legend' => 'Legend: $1.',
+'recentchanges-legend-newpage' => '$1 - new page',
+'recentchanges-label-newpage' => 'This edit created a new page',
+'recentchanges-legend-minor' => '$1 - minor edit',
+'recentchanges-label-minor' => 'This is a minor edit',
+'recentchanges-legend-bot' => '$1 - bot edit',
+'recentchanges-label-bot' => 'This edit was performed by a bot',
+'recentchanges-legend-unpatrolled' => '$1 - unpatrolled edit',
+'recentchanges-label-unpatrolled' => 'This edit has not yet been patrolled',
'rcnote' => "Below {{PLURAL:$1|is '''1''' change|are the last '''$1''' changes}} in the last {{PLURAL:$2|day|'''$2''' days}}, as of $5, $4.",
'rcnotefrom' => "Below are the changes since '''$2''' (up to '''$1''' shown).",
'rclistfrom' => 'Show new changes starting from $1',
@@ -1792,6 +1979,7 @@ please see math/README to configure.',
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
+'unpatrolledletter' => '!', # only translate this message to other languages if you have to change it
'sectionlink' => '→', # only translate this message to other languages if you have to change it
'number_of_watching_users_RCview' => '[$1]', # do not translate or duplicate this message to other languages
'number_of_watching_users_pageview' => '[$1 watching {{PLURAL:$1|user|users}}]',
@@ -1804,6 +1992,8 @@ please see math/README to configure.',
# Recent changes linked
'recentchangeslinked' => 'Related changes',
+'recentchangeslinked-feed' => 'Related changes',
+'recentchangeslinked-toolbox' => 'Related changes',
'recentchangeslinked-title' => 'Changes related to "$1"',
'recentchangeslinked-backlink' => '← $1', # only translate this message to other languages if you have to change it
'recentchangeslinked-noresult' => 'No changes on linked pages during the given period.',
@@ -1815,8 +2005,8 @@ Pages on [[Special:Watchlist|your watchlist]] are '''bold'''.",
# Upload
'upload' => 'Upload file',
'uploadbtn' => 'Upload file',
-'reupload' => 'Re-upload',
'reuploaddesc' => 'Cancel upload and return to the upload form',
+'upload-tryagain' => 'Submit modified file description',
'uploadnologin' => 'Not logged in',
'uploadnologintext' => 'You must be [[Special:UserLogin|logged in]] to upload files.',
'upload_directory_missing' => 'The upload directory ($1) is missing and could not be created by the webserver.',
@@ -1851,6 +2041,7 @@ See the [[Special:NewFiles|gallery of new files]] for a more visual overview.',
'illegalfilename' => 'The filename "$1" contains characters that are not allowed in page titles.
Please rename the file and try uploading it again.',
'badfilename' => 'File name has been changed to "$1".',
+'filetype-mime-mismatch' => 'File extension does not match MIME type.',
'filetype-badmime' => 'Files of the MIME type "$1" are not allowed to be uploaded.',
'filetype-bad-ie-mime' => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
'filetype-unwanted-type' => "'''\".\$1\"''' is an unwanted file type.
@@ -1864,45 +2055,52 @@ this file is $2.',
'emptyfile' => 'The file you uploaded seems to be empty.
This might be due to a typo in the file name.
Please check whether you really want to upload this file.',
-'fileexists' => "A file with this name exists already, please check '''<tt>$1</tt>''' if you are not sure if you want to change it.",
-'filepageexists' => "The description page for this file has already been created at '''<tt>$1</tt>''', but no file with this name currently exists.
+'fileexists' => "A file with this name exists already, please check '''<tt>[[:$1]]</tt>''' if you are not sure if you want to change it.
+[[$1|thumb]]",
+'filepageexists' => "The description page for this file has already been created at '''<tt>[[:$1]]</tt>''', but no file with this name currently exists.
The summary you enter will not appear on the description page.
-To make your summary appear there, you will need to manually edit it",
-'fileexists-extension' => "A file with a similar name exists:<br />
-Name of the uploading file: '''<tt>$1</tt>'''<br />
-Name of the existing file: '''<tt>$2</tt>'''<br />
+To make your summary appear there, you will need to manually edit it.
+[[$1|thumb]]",
+'fileexists-extension' => "A file with a similar name exists: [[$2|thumb]]
+* Name of the uploading file: '''<tt>[[:$1]]</tt>'''
+* Name of the existing file: '''<tt>[[:$2]]</tt>'''
Please choose a different name.",
-'fileexists-thumb' => "<center>'''Existing file'''</center>",
'fileexists-thumbnail-yes' => "The file seems to be an image of reduced size ''(thumbnail)''.
-Please check the file '''<tt>$1</tt>'''.<br />
+[[$1|thumb]]
+Please check the file '''<tt>[[:$1]]</tt>'''.
If the checked file is the same image of original size it is not necessary to upload an extra thumbnail.",
'file-thumbnail-no' => "The filename begins with '''<tt>$1</tt>'''.
It seems to be an image of reduced size ''(thumbnail)''.
If you have this image in full resolution upload this one, otherwise change the file name please.",
'fileexists-forbidden' => 'A file with this name already exists, and cannot be overwritten.
-If you still want to upload your file, please go back and use a new name. [[File:$1|thumb|center|$1]]',
+If you still want to upload your file, please go back and use a new name.
+[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'A file with this name exists already in the shared file repository.
-If you still want to upload your file, please go back and use a new name. [[File:$1|thumb|center|$1]]',
+If you still want to upload your file, please go back and use a new name.
+[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
'file-deleted-duplicate' => "A file identical to this file ([[$1]]) has previously been deleted.
You should check that file's deletion history before proceeding to re-upload it.",
'successfulupload' => 'Successful upload',
'uploadwarning' => 'Upload warning',
+'uploadwarning-text' => 'Please modify the file description below and try again.',
'savefile' => 'Save file',
'uploadedimage' => 'uploaded "[[$1]]"',
'overwroteimage' => 'uploaded a new version of "[[$1]]"',
-'uploaddisabled' => 'Uploads disabled',
+'uploaddisabled' => 'Uploads disabled.',
'uploaddisabledtext' => 'File uploads are disabled.',
'php-uploaddisabledtext' => 'File uploads are disabled in PHP.
Please check the file_uploads setting.',
'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
-'uploadcorrupt' => 'The file is corrupt or has an incorrect extension.
-Please check the file and upload again.',
'uploadvirus' => 'The file contains a virus!
Details: $1',
+'upload-source' => 'Source file',
'sourcefilename' => 'Source filename:',
+'sourceurl' => 'Source URL:',
'destfilename' => 'Destination filename:',
'upload-maxfilesize' => 'Maximum file size: $1',
+'upload-description' => 'File description',
+'upload-options' => 'Upload options',
'watchthisupload' => 'Watch this file',
'filewasdeleted' => 'A file of this name has been previously uploaded and subsequently deleted.
You should check the $1 before proceeding to upload it again.',
@@ -1927,15 +2125,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- leave this line exactly as it is -->', # only translate this message to other languages if you have to change it
-'upload-proto-error' => 'Incorrect protocol',
-'upload-proto-error-text' => 'Remote upload requires URLs beginning with <code>http://</code> or <code>ftp://</code>.',
-'upload-file-error' => 'Internal error',
-'upload-file-error-text' => 'An internal error occurred when attempting to create a temporary file on the server.
+'upload-proto-error' => 'Incorrect protocol',
+'upload-proto-error-text' => 'Remote upload requires URLs beginning with <code>http://</code> or <code>ftp://</code>.',
+'upload-file-error' => 'Internal error',
+'upload-file-error-text' => 'An internal error occurred when attempting to create a temporary file on the server.
Please contact an [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Unknown upload error',
-'upload-misc-error-text' => 'An unknown error occurred during the upload.
+'upload-misc-error' => 'Unknown upload error',
+'upload-misc-error-text' => 'An unknown error occurred during the upload.
Please verify that the URL is valid and accessible and try again.
If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'The URL contained too many redirects',
+'upload-unknown-size' => 'Unknown size',
+'upload-http-error' => 'An HTTP error occured: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Access denied',
+'img-auth-nopathinfo' => 'Missing PATH_INFO.
+Your server is not set up to pass this information.
+It may be CGI-based and cannot support img_auth.
+See http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Requested path is not in the configured upload directory.',
+'img-auth-badtitle' => 'Unable to construct a valid title from "$1".',
+'img-auth-nologinnWL' => 'You are not logged in and "$1" is not in the whitelist.',
+'img-auth-nofile' => 'File "$1" does not exist.',
+'img-auth-isdir' => 'You are trying to access a directory "$1".
+Only file access is allowed.',
+'img-auth-streaming' => 'Streaming "$1".',
+'img-auth-public' => 'The function of img_auth.php is to output files from a private wiki.
+This wiki is configured as a public wiki.
+For optimal security, img_auth.php is disabled.',
+'img-auth-noread' => 'User does not have access to read "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Invalid URL: $1',
+'http-invalid-scheme' => 'URLs with the "$1" scheme are not supported.',
+'http-request-error' => 'HTTP request failed due to unknown error.',
+'http-read-error' => 'HTTP read error.',
+'http-timed-out' => 'HTTP request timed out.',
+'http-curl-error' => 'Error fetching URL: $1',
+'http-host-unreachable' => 'Could not reach URL.',
+'http-bad-status' => 'There was a problem during the HTTP request: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Could not reach URL',
@@ -1947,6 +2176,7 @@ Please check the site is up, wait a short while and try again.
You may want to try at a less busy time.',
'license' => 'Licensing:',
+'license-header' => 'Licensing',
'nolicense' => 'None selected',
'licenses' => '-', # do not translate or duplicate this message to other languages
'license-nopreview' => '(Preview not available)',
@@ -1968,39 +2198,43 @@ A click on a column header changes the sorting.',
'listfiles_count' => 'Versions',
# File description page
-'filehist' => 'File history',
-'filehist-help' => 'Click on a date/time to view the file as it appeared at that time.',
-'filehist-deleteall' => 'delete all',
-'filehist-deleteone' => 'delete',
-'filehist-revert' => 'revert',
-'filehist-current' => 'current',
-'filehist-datetime' => 'Date/Time',
-'filehist-thumb' => 'Thumbnail',
-'filehist-thumbtext' => 'Thumbnail for version as of $1',
-'filehist-nothumb' => 'No thumbnail',
-'filehist-user' => 'User',
-'filehist-dimensions' => 'Dimensions',
-'filehist-filesize' => 'File size',
-'filehist-comment' => 'Comment',
-'imagelinks' => 'File links',
-'linkstoimage' => 'The following {{PLURAL:$1|page links|$1 pages link}} to this file:',
-'linkstoimage-more' => 'More than $1 {{PLURAL:$1|page links|pages link}} to this file.
+'file-anchor-link' => 'File',
+'filehist' => 'File history',
+'filehist-help' => 'Click on a date/time to view the file as it appeared at that time.',
+'filehist-deleteall' => 'delete all',
+'filehist-deleteone' => 'delete',
+'filehist-revert' => 'revert',
+'filehist-current' => 'current',
+'filehist-datetime' => 'Date/Time',
+'filehist-thumb' => 'Thumbnail',
+'filehist-thumbtext' => 'Thumbnail for version as of $1',
+'filehist-nothumb' => 'No thumbnail',
+'filehist-user' => 'User',
+'filehist-dimensions' => 'Dimensions',
+'filehist-filesize' => 'File size',
+'filehist-comment' => 'Comment',
+'filehist-missing' => 'File missing',
+'imagelinks' => 'File links',
+'linkstoimage' => 'The following {{PLURAL:$1|page links|$1 pages link}} to this file:',
+'linkstoimage-more' => 'More than $1 {{PLURAL:$1|page links|pages link}} to this file.
The following list shows the {{PLURAL:$1|first page link|first $1 page links}} to this file only.
A [[Special:WhatLinksHere/$2|full list]] is available.',
-'nolinkstoimage' => 'There are no pages that link to this file.',
-'morelinkstoimage' => 'View [[Special:WhatLinksHere/$1|more links]] to this file.',
-'redirectstofile' => 'The following {{PLURAL:$1|file redirects|$1 files redirect}} to this file:',
-'duplicatesoffile' => 'The following {{PLURAL:$1|file is a duplicate|$1 files are duplicates}} of this file ([[Special:FileDuplicateSearch/$2|more details]]):',
-'sharedupload' => 'This file is from $1 and may be used by other projects. $2', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Please see the $1 for further information.',
-'shareduploadwiki-desc' => 'The description on its $1 there is shown below.',
-'shareduploadwiki-linktext' => 'file description page',
-'shareddescriptionfollows' => '-', # do not translate or duplicate this message to other languages
-'noimage' => 'No file by this name exists, but you can $1.',
-'noimage-linktext' => 'upload one',
-'uploadnewversion-linktext' => 'Upload a new version of this file',
-'shared-repo-from' => 'from $1', # $1 is the repository name
-'shared-repo' => 'a shared repository', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'There are no pages that link to this file.',
+'morelinkstoimage' => 'View [[Special:WhatLinksHere/$1|more links]] to this file.',
+'redirectstofile' => 'The following {{PLURAL:$1|file redirects|$1 files redirect}} to this file:',
+'duplicatesoffile' => 'The following {{PLURAL:$1|file is a duplicate|$1 files are duplicates}} of this file ([[Special:FileDuplicateSearch/$2|more details]]):',
+'sharedupload' => 'This file is from $1 and may be used by other projects.',
+'sharedupload-desc-there' => 'This file is from $1 and may be used by other projects.
+Please see the [$2 file description page] for further information.',
+'sharedupload-desc-here' => 'This file is from $1 and may be used by other projects.
+The description on its [$2 file description page] there is shown below.',
+'shareddescriptionfollows' => '-', # do not translate or duplicate this message to other languages
+'filepage-nofile' => 'No file by this name exists.',
+'filepage-nofile-link' => 'No file by this name exists, but you can [$1 upload it].',
+'uploadnewversion-linktext' => 'Upload a new version of this file',
+'shared-repo-from' => 'from $1',
+'shared-repo' => 'a shared repository',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons', # only translate this message to other languages if you have to change it
# File reversion
'filerevert' => 'Revert $1',
@@ -2031,10 +2265,11 @@ A [[Special:WhatLinksHere/$2|full list]] is available.',
** Copyright violation
** Duplicated file',
'filedelete-edit-reasonlist' => 'Edit delete reasons',
+'filedelete-maintenance' => 'Deletion and restoration of files temporarily disabled during maintenance.',
# MIME search
'mimesearch' => 'MIME search',
-'mimesearch-summary' => 'This page enables the filtering of files for its MIME-type.
+'mimesearch-summary' => 'This page enables the filtering of files for its MIME type.
Input: contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
'mimetype' => 'MIME type:',
'download' => 'download',
@@ -2056,7 +2291,7 @@ Remember to check for other links to the templates before deleting them.',
# Random page
'randompage' => 'Random page',
-'randompage-nopages' => 'There are no pages in the namespace "$1".',
+'randompage-nopages' => 'There are no pages in the following {{PLURAL:$2|namespace|namespaces}}: $1.',
'randompage-url' => 'Special:Random', # do not translate or duplicate this message to other languages
# Random redirect
@@ -2070,6 +2305,7 @@ Remember to check for other links to the templates before deleting them.',
'statistics-header-edits' => 'Edit statistics',
'statistics-header-views' => 'View statistics',
'statistics-header-users' => 'User statistics',
+'statistics-header-hooks' => 'Other statistics',
'statistics-articles' => 'Content pages',
'statistics-pages' => 'Pages',
'statistics-pages-desc' => 'All pages in the wiki, including talk pages, redirects, etc.',
@@ -2104,8 +2340,8 @@ It now redirects to [[$2]].',
'brokenredirects' => 'Broken redirects',
'brokenredirects-summary' => '', # do not translate or duplicate this message to other languages
'brokenredirectstext' => 'The following redirects link to non-existent pages:',
-'brokenredirects-edit' => '(edit)',
-'brokenredirects-delete' => '(delete)',
+'brokenredirects-edit' => 'edit',
+'brokenredirects-delete' => 'delete',
'withoutinterwiki' => 'Pages without language links',
'withoutinterwiki-summary' => 'The following pages do not link to other language versions.',
@@ -2247,7 +2483,7 @@ It may contain one or more characters which cannot be used in titles.',
# Special:Categories
'categories' => 'Categories',
'categories-summary' => '', # do not translate or duplicate this message to other languages
-'categoriespagetext' => 'The following categories contain pages or media.
+'categoriespagetext' => 'The following {{PLURAL:$1|category contains|categories contain}} pages or media.
[[Special:UnusedCategories|Unused categories]] are not shown here.
Also see [[Special:WantedCategories|wanted categories]].',
'categoriesfrom' => 'Display categories starting at:',
@@ -2255,8 +2491,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
'special-categories-sort-abc' => 'sort alphabetically',
# Special:DeletedContributions
-'deletedcontributions' => 'Deleted user contributions',
-'deletedcontributions-title' => 'Deleted user contributions',
+'deletedcontributions' => 'Deleted user contributions',
+'deletedcontributions-title' => 'Deleted user contributions',
+'sp-deletedcontributions-contribs' => 'contributions',
# Special:LinkSearch
'linksearch' => 'External links',
@@ -2272,6 +2509,17 @@ Supported protocols: <tt>$1</tt>',
'listusersfrom' => 'Display users starting at:',
'listusers-submit' => 'Show',
'listusers-noresult' => 'No user found.',
+'listusers-blocked' => '(blocked)',
+
+# Special:ActiveUsers
+'activeusers' => 'Active users list',
+'activeusers-summary' => '', # do not translate or duplicate this message to other languages
+'activeusers-intro' => 'This is a list of users who had some kind of activity within the last $1 {{PLURAL:$1|day|days}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|edit|edits}} in the last {{PLURAL:$3|day|$3 days}}',
+'activeusers-from' => 'Display users starting at:',
+'activeusers-hidebots' => 'Hide bots',
+'activeusers-hidesysops' => 'Hide administrators',
+'activeusers-noresult' => 'No users found.',
# Special:Log/newusers
'newuserlogpage' => 'User creation log',
@@ -2283,18 +2531,25 @@ Supported protocols: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Account created automatically',
# Special:ListGroupRights
-'listgrouprights' => 'User group rights',
-'listgrouprights-summary' => 'The following is a list of user groups defined on this wiki, with their associated access rights.
+'listgrouprights' => 'User group rights',
+'listgrouprights-summary' => 'The following is a list of user groups defined on this wiki, with their associated access rights.
There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] about individual rights.',
-'listgrouprights-group' => 'Group',
-'listgrouprights-rights' => 'Rights',
-'listgrouprights-helppage' => 'Help:Group rights',
-'listgrouprights-members' => '(list of members)',
-'listgrouprights-right-display' => '$1 ($2)', # only translate this message to other languages if you have to change it
-'listgrouprights-addgroup' => 'Add {{PLURAL:$2|group|groups}}: $1',
-'listgrouprights-removegroup' => 'Remove {{PLURAL:$2|group|groups}}: $1',
-'listgrouprights-addgroup-all' => 'Add all groups',
-'listgrouprights-removegroup-all' => 'Remove all groups',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Granted right</span>
+* <span class="listgrouprights-revoked">Revoked right</span>',
+'listgrouprights-group' => 'Group',
+'listgrouprights-rights' => 'Rights',
+'listgrouprights-helppage' => 'Help:Group rights',
+'listgrouprights-members' => '(list of members)',
+'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>', # only translate this message to other languages if you have to change it
+'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>', # only translate this message to other languages if you have to change it
+'listgrouprights-addgroup' => 'Add {{PLURAL:$2|group|groups}}: $1',
+'listgrouprights-removegroup' => 'Remove {{PLURAL:$2|group|groups}}: $1',
+'listgrouprights-addgroup-all' => 'Add all groups',
+'listgrouprights-removegroup-all' => 'Remove all groups',
+'listgrouprights-addgroup-self' => 'Add {{PLURAL:$2|group|groups}} to own account: $1',
+'listgrouprights-removegroup-self' => 'Remove {{PLURAL:$2|group|groups}} from own account: $1',
+'listgrouprights-addgroup-self-all' => 'Add all groups to own account',
+'listgrouprights-removegroup-self-all' => 'Remove all groups from own account',
# E-mail user
'mailnologin' => 'No send address',
@@ -2386,7 +2641,10 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your watchlist settings, visit
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+To delete the page from your watchlist, visit
+$UNWATCHURL
Feedback and further assistance:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2401,10 +2659,11 @@ Feedback and further assistance:
'delete-confirm' => 'Delete "$1"',
'delete-backlink' => '← $1', # only translate this message to other languages if you have to change it
'delete-legend' => 'Delete',
-'historywarning' => "'''Warning:''' The page you are about to delete has a history:",
+'historywarning' => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
'confirmdeletetext' => 'You are about to delete a page along with all of its history.
Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
'actioncomplete' => 'Action complete',
+'actionfailed' => 'Action failed',
'deletedtext' => '"<nowiki>$1</nowiki>" has been deleted.
See $2 for a record of recent deletions.',
'deletedarticle' => 'deleted "[[$1]]"',
@@ -2428,23 +2687,24 @@ Deleting it may disrupt database operations of {{SITENAME}};
proceed with caution.',
# Rollback
-'rollback' => 'Roll back edits',
-'rollback_short' => 'Rollback',
-'rollbacklink' => 'rollback',
-'rollbackfailed' => 'Rollback failed',
-'cantrollback' => 'Cannot revert edit;
+'rollback' => 'Roll back edits',
+'rollback_short' => 'Rollback',
+'rollbacklink' => 'rollback',
+'rollbackfailed' => 'Rollback failed',
+'cantrollback' => 'Cannot revert edit;
last contributor is only author of this page.',
-'alreadyrolled' => 'Cannot rollback last edit of [[:$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => 'Cannot rollback last edit of [[:$1]] by [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
someone else has edited or rolled back the page already.
-The last edit to the page was by [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "The edit summary was: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) to last revision by [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Reverted edits by $1;
+The last edit to the page was by [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "The edit summary was: \"''\$1''\".",
+'revertpage' => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) to last revision by [[User:$1|$1]]',
+'revertpage-nouser' => 'Reverted edits by (username removed) to last revision by [[User:$1|$1]]',
+'rollback-success' => 'Reverted edits by $1;
changed back to last revision by $2.',
-'sessionfailure' => 'There seems to be a problem with your login session;
+'sessionfailure' => 'There seems to be a problem with your login session;
this action has been canceled as a precaution against session hijacking.
-Please hit "back" and reload the page you came from, then try again.',
+Go back to the previous page, reload that page and then try again.',
# Protect
'protectlogpage' => 'Protection log',
@@ -2462,7 +2722,7 @@ See the [[Special:ProtectedPages|protected pages list]] for the list of currentl
'protectexpiry' => 'Expires:',
'protect_expiry_invalid' => 'Expiry time is invalid.',
'protect_expiry_old' => 'Expiry time is in the past.',
-'protect-unchain' => 'Unlock move permissions',
+'protect-unchain-permissions' => 'Unlock further protect options',
'protect-text' => "You may view and change the protection level here for the page '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "You cannot change protection levels while blocked.
Here are the current settings for the page '''$1''':",
@@ -2492,7 +2752,7 @@ You can change this page's protection level, but it will not affect the cascadin
** Counter-productive edit warring
** High traffic page',
'protect-edit-reasonlist' => 'Edit protection reasons',
-'protect-expiry-options' => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
'restriction-type' => 'Permission:',
'restriction-level' => 'Restriction level:',
'minimum-size' => 'Min size',
@@ -2535,6 +2795,7 @@ You may have a bad link, or the revision may have been restored or removed from
'undelete-nodiff' => 'No previous revision found.',
'undeletebtn' => 'Restore',
'undeletelink' => 'view/restore',
+'undeleteviewlink' => 'view',
'undeletereset' => 'Reset',
'undeleteinvert' => 'Invert selection',
'undeletecomment' => 'Reason:',
@@ -2574,22 +2835,27 @@ $1',
'contributions-title' => 'User contributions for $1',
'mycontris' => 'My contributions',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'No changes were found matching these criteria.', # Optional parameter: $1 is the user name
+'nocontribs' => 'No changes were found matching these criteria.',
'uctop' => '(top)',
'month' => 'From month (and earlier):',
'year' => 'From year (and earlier):',
-'sp-contributions-newbies' => 'Show contributions of new accounts only',
-'sp-contributions-newbies-sub' => 'For new accounts',
-'sp-contributions-newbies-title' => 'User contributions for new accounts',
-'sp-contributions-blocklog' => 'block log',
-'sp-contributions-logs' => 'logs',
-'sp-contributions-search' => 'Search for contributions',
-'sp-contributions-username' => 'IP address or username:',
-'sp-contributions-submit' => 'Search',
-'sp-contributions-explain' => '', # only translate this message to other languages if you have to change it
-'sp-contributions-footer' => '-', # do not translate or duplicate this message to other languages
-'sp-contributions-footer-anon' => '-', # do not translate or duplicate this message to other languages
+'sp-contributions-newbies' => 'Show contributions of new accounts only',
+'sp-contributions-newbies-sub' => 'For new accounts',
+'sp-contributions-newbies-title' => 'User contributions for new accounts',
+'sp-contributions-blocklog' => 'block log',
+'sp-contributions-deleted' => 'deleted user contributions',
+'sp-contributions-logs' => 'logs',
+'sp-contributions-talk' => 'talk',
+'sp-contributions-userrights' => 'user rights management',
+'sp-contributions-blocked-notice' => 'This user is currently blocked.
+The latest block log entry is provided below for reference:',
+'sp-contributions-search' => 'Search for contributions',
+'sp-contributions-username' => 'IP address or username:',
+'sp-contributions-submit' => 'Search',
+'sp-contributions-explain' => '', # only translate this message to other languages if you have to change it
+'sp-contributions-footer' => '-', # do not translate or duplicate this message to other languages
+'sp-contributions-footer-anon' => '-', # do not translate or duplicate this message to other languages
# What links here
'whatlinkshere' => 'What links here',
@@ -2614,6 +2880,7 @@ $1',
# Block/unblock
'blockip' => 'Block user',
+'blockip-title' => 'Block user',
'blockip-legend' => 'Block user',
'blockiptext' => 'Use the form below to block write access from a specific IP address or username.
This should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].
@@ -2637,7 +2904,7 @@ Fill in a specific reason below (for example, citing particular pages that were
'ipbenableautoblock' => 'Automatically block the last IP address used by this user, and any subsequent IP addresses they try to edit from',
'ipbsubmit' => 'Block this user',
'ipbother' => 'Other time:',
-'ipboptions' => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
'ipbotheroption' => 'other',
'ipbotherreason' => 'Other/additional reason:',
'ipbhidename' => 'Hide username from edits and lists',
@@ -2667,9 +2934,11 @@ See [[Special:IPBlockList|IP block list]] to review blocks.',
'ipblocklist-sh-addressblocks' => '$1 single IP blocks',
'ipblocklist-summary' => '', # do not translate or duplicate this message to other languages
'ipblocklist-submit' => 'Search',
+'ipblocklist-localblock' => 'Local block',
+'ipblocklist-otherblocks' => 'Other {{PLURAL:$1|block|blocks}}',
'blocklistline' => '$1, $2 blocked $3 ($4)',
'infiniteblock' => 'infinite',
-'expiringblock' => 'expires $1',
+'expiringblock' => 'expires on $1 at $2',
'anononlyblock' => 'anon. only',
'noautoblockblock' => 'autoblock disabled',
'createaccountblock' => 'account creation blocked',
@@ -2684,7 +2953,10 @@ See [[Special:IPBlockList|IP block list]] to review blocks.',
'autoblocker' => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]".
The reason given for $1\'s block is: "$2"',
'blocklogpage' => 'Block log',
-'blocklog-fulllog' => 'Full block log',
+'blocklog-showlog' => 'This user has been blocked previously.
+The block log is provided below for reference:',
+'blocklog-showsuppresslog' => 'This user has been blocked and hidden previously.
+The suppress log is provided below for reference:',
'blocklogentry' => 'blocked [[$1]] with an expiry time of $2 $3',
'reblock-logentry' => 'changed block settings for [[$1]] with an expiry time of $2 $3',
'blocklogtext' => 'This is a log of user blocking and unblocking actions.
@@ -2706,11 +2978,13 @@ See the [[Special:IPBlockList|IP block list]] for the list of currently operatio
'ipb-needreblock' => '== Already blocked ==
$1 is already blocked.
Do you want to change the settings?',
+'ipb-otherblocks-header' => 'Other {{PLURAL:$1|block|blocks}}',
'ipb_cant_unblock' => 'Error: Block ID $1 not found.
It may have been unblocked already.',
'ipb_blocked_as_range' => 'Error: The IP address $1 is not blocked directly and cannot be unblocked.
It is, however, blocked as part of the range $2, which can be unblocked.',
'ip_range_invalid' => 'Invalid IP range.',
+'ip_range_toolarge' => 'Range blocks larger than /$1 are not allowed.',
'blockme' => 'Block me',
'proxyblocker' => 'Proxy blocker',
'proxyblocker-disabled' => 'This function is disabled.',
@@ -2722,6 +2996,8 @@ Please contact your Internet service provider or tech support and inform them of
'sorbs_create_account_reason' => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
You cannot create an account',
'cant-block-while-blocked' => 'You cannot block other users while you are blocked.',
+'cant-see-hidden-user' => "The user you are trying to block has already been blocked and hidden.
+Since you do not have the hideuser right, you cannot see or edit the user's block.",
# Developer tools
'lockdb' => 'Lock database',
@@ -2766,6 +3042,7 @@ please be sure you understand the consequences of this before proceeding.",
In those cases, you will have to move or merge the page manually if desired.",
'movearticle' => 'Move page:',
+'moveuserpage-warning' => "'''Warning:''' You are about to move a user page. Please note that only the page will be moved and the user will ''not'' be renamed.",
'movenologin' => 'Not logged in',
'movenologintext' => 'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.',
'movenotallowed' => 'You do not have permission to move pages.',
@@ -2773,10 +3050,10 @@ In those cases, you will have to move or merge the page manually if desired.",
'cant-move-user-page' => 'You do not have permission to move user pages (apart from subpages).',
'cant-move-to-user-page' => 'You do not have permission to move a page to a user page (except to a user subpage).',
'newtitle' => 'To new title:',
-'move-watch' => 'Watch this page',
+'move-watch' => 'Watch source page and target page',
'movepagebtn' => 'Move page',
'pagemovedsub' => 'Move succeeded',
-'movepage-moved' => '<big>\'\'\'"$1" has been moved to "$2"\'\'\'</big>', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" has been moved to "$2"\'\'\'',
'movepage-moved-redirect' => 'A redirect has been created.',
'movepage-moved-noredirect' => 'The creation of a redirect has been suppressed.',
'articleexists' => 'A page of that name already exists, or the name you have chosen is not valid.
@@ -2820,6 +3097,14 @@ cannot move a page over itself.',
'imageinvalidfilename' => 'The target file name is invalid',
'fix-double-redirects' => 'Update any redirects that point to the original title',
'move-leave-redirect' => 'Leave a redirect behind',
+'protectedpagemovewarning' => "'''Warning:''' This page has been locked so that only users with administrator privileges can move it.
+The latest log entry is provided below for reference:",
+'semiprotectedpagemovewarning' => "'''Note:''' This page has been locked so that only registered users can move it.
+The latest log entry is provided below for reference:",
+'move-over-sharedrepo' => '== File exists ==
+[[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.',
+'file-exists-sharedrepo' => 'The file name chosen is already in use on a shared repository.
+Please choose another name.',
# Export
'export' => 'Export pages',
@@ -2842,15 +3127,21 @@ In the latter case you can also use a link, for example [[{{#Special:Export}}/{{
'export-pagelinks' => 'Include linked pages to a depth of:',
# Namespace 8 related
-'allmessages' => 'System messages',
-'allmessagesname' => 'Name',
-'allmessagesdefault' => 'Default message text',
-'allmessagescurrent' => 'Current message text',
-'allmessagestext' => 'This is a list of system messages available in the MediaWiki namespace.
+'allmessages' => 'System messages',
+'allmessagesname' => 'Name',
+'allmessagesdefault' => 'Default message text',
+'allmessagescurrent' => 'Current message text',
+'allmessagestext' => 'This is a list of system messages available in the MediaWiki namespace.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
-'allmessagesnotsupportedDB' => "This page cannot be used because '''\$wgUseDatabaseMessages''' has been disabled.",
-'allmessagesfilter' => 'Message name filter:',
-'allmessagesmodified' => 'Show only modified',
+'allmessagesnotsupportedDB' => "This page cannot be used because '''\$wgUseDatabaseMessages''' has been disabled.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter by customisation state:',
+'allmessages-filter-unmodified' => 'Unmodified',
+'allmessages-filter-all' => 'All',
+'allmessages-filter-modified' => 'Modified',
+'allmessages-prefix' => 'Filter by prefix:',
+'allmessages-language' => 'Language:',
+'allmessages-filter-submit' => 'Go',
# Thumbnails
'thumbnail-more' => 'Enlarge',
@@ -2860,6 +3151,9 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'djvu_no_xml' => 'Unable to fetch XML for DjVu file',
'thumbnail_invalid_params' => 'Invalid thumbnail parameters',
'thumbnail_dest_directory' => 'Unable to create destination directory',
+'thumbnail_image-type' => 'Image type not supported',
+'thumbnail_gd-library' => 'Incomplete GD library configuration: missing function $1',
+'thumbnail_image-missing' => 'File seems to be missing: $1',
# Special:Import
'import' => 'Import pages',
@@ -2928,6 +3222,7 @@ Please try again.',
'accesskey-ca-viewsource' => 'e', # do not translate or duplicate this message to other languages
'accesskey-ca-history' => 'h', # do not translate or duplicate this message to other languages
'accesskey-ca-protect' => '=', # do not translate or duplicate this message to other languages
+'accesskey-ca-unprotect' => '=', # do not translate or duplicate this message to other languages
'accesskey-ca-delete' => 'd', # do not translate or duplicate this message to other languages
'accesskey-ca-undelete' => 'd', # do not translate or duplicate this message to other languages
'accesskey-ca-move' => 'm', # do not translate or duplicate this message to other languages
@@ -2936,8 +3231,9 @@ Please try again.',
'accesskey-search' => 'f', # do not translate or duplicate this message to other languages
'accesskey-search-go' => '', # do not translate or duplicate this message to other languages
'accesskey-search-fulltext' => '', # do not translate or duplicate this message to other languages
-'accesskey-p-logo' => 'z', # do not translate or duplicate this message to other languages
-'accesskey-n-mainpage' => '', # do not translate or duplicate this message to other languages
+'accesskey-p-logo' => '', # do not translate or duplicate this message to other languages
+'accesskey-n-mainpage' => 'z', # do not translate or duplicate this message to other languages
+'accesskey-n-mainpage-description' => 'z', # do not translate or duplicate this message to other languages
'accesskey-n-portal' => '', # do not translate or duplicate this message to other languages
'accesskey-n-currentevents' => '', # do not translate or duplicate this message to other languages
'accesskey-n-recentchanges' => 'r', # do not translate or duplicate this message to other languages
@@ -2968,7 +3264,6 @@ Please try again.',
'accesskey-preview' => 'p', # do not translate or duplicate this message to other languages
'accesskey-diff' => 'v', # do not translate or duplicate this message to other languages
'accesskey-compareselectedversions' => 'v', # do not translate or duplicate this message to other languages
-'accesskey-visualcomparison' => 'b', # do not translate or duplicate this message to other languages
'accesskey-watch' => 'w', # do not translate or duplicate this message to other languages
'accesskey-upload' => 's', # do not translate or duplicate this message to other languages
@@ -2990,6 +3285,7 @@ Please try again.',
You can view its source',
'tooltip-ca-history' => 'Past revisions of this page',
'tooltip-ca-protect' => 'Protect this page',
+'tooltip-ca-unprotect' => 'Unprotect this page',
'tooltip-ca-delete' => 'Delete this page',
'tooltip-ca-undelete' => 'Restore the edits done to this page before it was deleted',
'tooltip-ca-move' => 'Move this page',
@@ -3000,6 +3296,7 @@ You can view its source',
'tooltip-search-fulltext' => 'Search the pages for this text',
'tooltip-p-logo' => 'Visit the main page',
'tooltip-n-mainpage' => 'Visit the main page',
+'tooltip-n-mainpage-description' => 'Visit the main page',
'tooltip-n-portal' => 'About the project, what you can do, where to find things',
'tooltip-n-currentevents' => 'Find background information on current events',
'tooltip-n-recentchanges' => 'The list of recent changes in the wiki',
@@ -3046,6 +3343,7 @@ You can view its source',
'chick.css' => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
'simple.css' => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
'modern.css' => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.css' => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
'print.css' => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
'handheld.css' => '/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */', # only translate this message to other languages if you have to change it
@@ -3059,6 +3357,7 @@ You can view its source',
'chick.js' => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
'simple.js' => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
'modern.js' => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.js' => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
# Metadata
'nodublincore' => 'Dublin Core RDF metadata disabled for this server.',
@@ -3068,10 +3367,12 @@ You can view its source',
# Attribution
'anonymous' => 'Anonymous {{PLURAL:$1|user|users}} of {{SITENAME}}',
'siteuser' => '{{SITENAME}} user $1',
-'lastmodifiedatby' => 'This page was last modified $2, $1 by $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonymous user $1',
+'lastmodifiedatby' => 'This page was last modified $2, $1 by $3.',
'othercontribs' => 'Based on work by $1.',
'others' => 'others',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|user|users}} $1',
+'anonusers' => '{{SITENAME}} anonymous {{PLURAL:$2|user|users}} $1',
'creditspage' => 'Page credits',
'nocredits' => 'There is no credits info available for this page.',
@@ -3101,6 +3402,7 @@ This is probably caused by a link to a blacklisted external site.',
'skinname-chick' => 'Chick', # only translate this message to other languages if you have to change it
'skinname-simple' => 'Simple', # only translate this message to other languages if you have to change it
'skinname-modern' => 'Modern', # only translate this message to other languages if you have to change it
+'skinname-vector' => 'Vector', # only translate this message to other languages if you have to change it
# Math options
'mw_math_png' => 'Always render PNG',
@@ -3110,12 +3412,24 @@ This is probably caused by a link to a blacklisted external site.',
'mw_math_modern' => 'Recommended for modern browsers',
'mw_math_mathml' => 'MathML if possible (experimental)',
+# Math errors
+'math_failure' => 'Failed to parse',
+'math_unknown_error' => 'unknown error',
+'math_unknown_function' => 'unknown function',
+'math_lexing_error' => 'lexing error',
+'math_syntax_error' => 'syntax error',
+'math_image_error' => 'PNG conversion failed;
+check for correct installation of latex, dvips, gs, and convert',
+'math_bad_tmpdir' => 'Cannot write to or create math temp directory',
+'math_bad_output' => 'Cannot write to or create math output directory',
+'math_notexvc' => 'Missing texvc executable; please see math/README to configure.',
+
# Patrolling
'markaspatrolleddiff' => 'Mark as patrolled',
'markaspatrolledlink' => '[$1]', # do not translate or duplicate this message to other languages
'markaspatrolledtext' => 'Mark this page as patrolled',
'markedaspatrolled' => 'Marked as patrolled',
-'markedaspatrolledtext' => 'The selected revision has been marked as patrolled.',
+'markedaspatrolledtext' => 'The selected revision of [[:$1]] has been marked as patrolled.',
'rcpatroldisabled' => 'Recent changes patrol disabled',
'rcpatroldisabledtext' => 'The recent changes patrol feature is currently disabled.',
'markedaspatrollederror' => 'Cannot mark as patrolled',
@@ -3145,12 +3459,10 @@ $1',
'previousdiff' => '← Older edit',
'nextdiff' => 'Newer edit →',
-# Visual comparison
-'visual-comparison' => 'Visual comparison',
-
# Media information
-'mediawarning' => "'''Warning''': This file may contain malicious code, by executing it your system may be compromised.<hr />",
-'imagemaxsize' => 'Limit images on file description pages to:',
+'mediawarning' => "'''Warning''': This file type may contain malicious code.
+By executing it, your system may be compromised.",
+'imagemaxsize' => "Image size limit:<br />''(for file description pages)''",
'thumbsize' => 'Thumbnail size:',
'widthheight' => '$1×$2', # only translate this message to other languages if you have to change it
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|page|pages}}',
@@ -3160,6 +3472,8 @@ $1',
'svg-long-desc' => '(SVG file, nominally $1 × $2 pixels, file size: $3)',
'show-big-image' => 'Full resolution',
'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'looped',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Gallery of new files',
@@ -3245,7 +3559,7 @@ Others will be hidden by default.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Width',
@@ -3383,14 +3697,14 @@ Others will be hidden by default.
'exif-unknowndate' => 'Unknown date',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Flipped horizontally', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotated 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Flipped vertically', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotated 90° CCW and flipped vertically', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotated 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotated 90° CW and flipped vertically', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotated 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Flipped horizontally',
+'exif-orientation-3' => 'Rotated 180°',
+'exif-orientation-4' => 'Flipped vertically',
+'exif-orientation-5' => 'Rotated 90° CCW and flipped vertically',
+'exif-orientation-6' => 'Rotated 90° CW',
+'exif-orientation-7' => 'Rotated 90° CW and flipped vertically',
+'exif-orientation-8' => 'Rotated 90° CCW',
'exif-planarconfiguration-1' => 'chunky format',
'exif-planarconfiguration-2' => 'planar format',
@@ -3530,7 +3844,7 @@ Others will be hidden by default.
'exif-gpsmeasuremode-2' => '2-dimensional measurement',
'exif-gpsmeasuremode-3' => '3-dimensional measurement',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometers per hour',
'exif-gpsspeed-m' => 'Miles per hour',
'exif-gpsspeed-n' => 'Knots',
@@ -3549,6 +3863,7 @@ Others will be hidden by default.
'watchlistall2' => 'all',
'namespacesall' => 'all',
'monthsall' => 'all',
+'limitall' => 'all',
# E-mail address confirmation
'confirmemail' => 'Confirm e-mail address',
@@ -3628,8 +3943,9 @@ Please confirm that you really want to recreate this page.",
'autocomment-prefix' => '-&#32;', # only translate this message to other languages if you have to change it
'pipe-separator' => '&#32;|&#32;', # only translate this message to other languages if you have to change it
'word-separator' => '&#32;', # only translate this message to other languages if you have to change it
-'ellipsis' => '…', # only translate this message to other languages if you have to change it
+'ellipsis' => '...', # only translate this message to other languages if you have to change it
'percent' => '$1%', # only translate this message to other languages if you have to change it
+'parentheses' => '($1)', # only translate this message to other languages if you have to change it
# Multipage image navigation
'imgmultipageprev' => '← previous page',
@@ -3791,7 +4107,7 @@ You can also [[Special:Watchlist/edit|use the standard editor]].',
'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' Default sort key "$2" overrides earlier default sort key "$1".',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installed extensions',
'version-specialpages' => 'Special pages',
'version-parserhooks' => 'Parser hooks',
@@ -3805,7 +4121,8 @@ You can also [[Special:Watchlist/edit|use the standard editor]].',
'version-skin-extension-functions' => 'Skin extension functions',
'version-hook-name' => 'Hook name',
'version-hook-subscribedby' => 'Subscribed by',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
+'version-svn-revision' => '(r$2)', # only translate this message to other languages if you have to change it
'version-license' => 'License',
'version-software' => 'Installed software',
'version-software-product' => 'Product',
@@ -3888,4 +4205,15 @@ This site is experiencing technical difficulties.',
'dberr-outofdate' => 'Note that their indexes of our content may be out of date.',
'dberr-cachederror' => 'This is a cached copy of the requested page, and may not be up to date.',
+# HTML forms
+'htmlform-invalid-input' => 'There are problems with some of your input',
+'htmlform-select-badoption' => 'The value you specified is not a valid option.',
+'htmlform-int-invalid' => 'The value you specified is not an integer.',
+'htmlform-float-invalid' => 'The value you specified is not a number.',
+'htmlform-int-toolow' => 'The value you specified is below the minimum of $1',
+'htmlform-int-toohigh' => 'The value you specified is above the maximum of $1',
+'htmlform-submit' => 'Submit',
+'htmlform-reset' => 'Undo changes',
+'htmlform-selectorother-other' => 'Other',
+
);
diff --git a/languages/messages/MessagesEnRTL.php b/languages/messages/MessagesEnRTL.php
index 71b51dc2..bf408d1d 100644
--- a/languages/messages/MessagesEnRTL.php
+++ b/languages/messages/MessagesEnRTL.php
@@ -1,6 +1,9 @@
<?php
/**
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*/
diff --git a/languages/messages/MessagesEn_gb.php b/languages/messages/MessagesEn_gb.php
index 74323469..102c5654 100644
--- a/languages/messages/MessagesEn_gb.php
+++ b/languages/messages/MessagesEn_gb.php
@@ -61,7 +61,7 @@ If the file has been modified from its original state, some details may not full
'exif-sensingmethod-5' => 'Colour sequential area sensor',
'exif-sensingmethod-8' => 'Colour sequential linear sensor',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometres per hour',
# E-mail address confirmation
diff --git a/languages/messages/MessagesEo.php b/languages/messages/MessagesEo.php
index 768e0301..f1d6d407 100644
--- a/languages/messages/MessagesEo.php
+++ b/languages/messages/MessagesEo.php
@@ -10,6 +10,9 @@
* @author Airon90
* @author Amikeco
* @author ArnoLagrange
+ * @author Castelobranco
+ * @author Jens Liebenau
+ * @author Lucas
* @author Malafaya
* @author Melancholie
* @author Michawiki
@@ -20,6 +23,7 @@
* @author Tlustulimu
* @author Urhixidur
* @author Yekrats
+ * @author Александр Сигачёв
* @author לערי ריינהארט
*/
@@ -103,14 +107,16 @@ $specialPageAliases = array(
'Log' => array( 'Loglibro', 'Loglibroj' ),
'Blockip' => array( 'Forbari IP-adreson' ),
'Undelete' => array( 'Restarigi' ),
+ 'Import' => array( 'Importi' ),
'Popularpages' => array( 'Popularaj paĝoj' ),
'Search' => array( 'Serĉi' ),
+ 'Tags' => array( 'Etikedoj' ),
);
$magicWords = array(
'redirect' => array( '0', '#ALIDIREKTU', '#REDIRECT' ),
'nogallery' => array( '0', '__SENGALERIO__', '__NOGALLERY__' ),
- 'currentmonth' => array( '1', 'NUNAMONATO', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'NUNAMONATO', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentdayname' => array( '1', 'NUNATAGNOMO', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', 'NUNAJARO', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'NUNATEMPO', 'CURRENTTIME' ),
@@ -195,6 +201,7 @@ $messages = array(
'tog-enotifminoredits' => 'Sendi al mi ankaŭ retmesaĝojn por malgrandaj redaktoj de paĝoj',
'tog-enotifrevealaddr' => 'Malkaŝi mian retadreson en informaj retpoŝtaĵoj',
'tog-shownumberswatching' => 'Montri la nombron da priatentaj uzantoj',
+'tog-oldsig' => 'Antaŭvido de nuna subskribo:',
'tog-fancysig' => 'Trakti subskribon kiel vikitekston (sen aŭtomata ligo)',
'tog-externaleditor' => 'Uzi defaŭlte eksteran tekstprilaborilon',
'tog-externaldiff' => 'Uzi defaŭlte eksteran ŝanĝmontrilon',
@@ -218,6 +225,13 @@ $messages = array(
'underline-never' => 'Neniam',
'underline-default' => 'Defaŭlte laŭ foliumilo',
+# Font style option in Special:Preferences
+'editfont-style' => 'Tipara stilo de redakta tekstujo',
+'editfont-default' => 'Retumila defaŭlto',
+'editfont-monospace' => 'Egallarĝa tiparo',
+'editfont-sansserif' => 'Senserifa tiparo',
+'editfont-serif' => 'Serifa tiparo',
+
# Dates
'sunday' => 'dimanĉo',
'monday' => 'lundo',
@@ -277,7 +291,7 @@ $messages = array(
'category-media-header' => 'Dosieroj en kategorio "$1"',
'category-empty' => "''Ĉi tiu kategorio momente ne enhavas artikolojn aŭ mediojn.''",
'hidden-categories' => '{{PLURAL:$1|Kaŝita kategorio|Kaŝitaj kategorioj}}',
-'hidden-category-category' => 'Kaŝitaj kategorioj', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kaŝitaj kategorioj',
'category-subcat-count' => '{{PLURAL:$2|Ĉi tiu kategorio havas nur la suban subkategorion.|Ĉi tiu kategorio havas la {{PLURAL:$1|suban subkategorion|$1 subajn subkategoriojn}}, el $2 entute.}}',
'category-subcat-count-limited' => 'Ĉi tiu kategorio havas la {{PLURAL:$1|jenan subkategorion|jenajn $1 subkategoriojn}}.',
'category-article-count' => '{{PLURAL:$2|Ĉi tiu kategorio enhavas nur la jenan paĝon.|La {{PLURAL:$1|jena paĝo|jenaj $1 paĝoj}} estas en ĉi tiu kategorio, el $2 entute.}}',
@@ -285,6 +299,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ĉi tiu kategorio nur enhavas la jenan dosieron.|La {{PLURAL:$1|jena doesiero|jenaj $1 dosieroj}} estas en ĉi tiun kategorion, el $2 entute.}}',
'category-file-count-limited' => 'La {{PLURAL:$1|jena dosiero|jenaj $1 dosieroj}} estas en la nuna kategorio.',
'listingcontinuesabbrev' => 'daŭrigo',
+'index-category' => 'Indeksitaj paĝoj',
+'noindex-category' => 'Neindeksitaj paĝoj',
'mainpagetext' => "'''MediaWiki estis sukcese instalita.'''",
'mainpagedocfooter' => "Konsultu la [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] por informo pri uzado de vikia programaro.
@@ -295,10 +311,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Oftaj Demandoj] (angla)
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki dissendolisto pri anoncoj] (angla)",
-'about' => 'Enkonduko',
-'article' => 'Artikolo',
-'newwindow' => '(en nova fenestro)',
-'cancel' => 'Nuligi',
+'about' => 'Enkonduko',
+'article' => 'Artikolo',
+'newwindow' => '(en nova fenestro)',
+'cancel' => 'Nuligi',
+'moredotdotdot' => 'Pli...',
+'mypage' => 'Mia paĝo',
+'mytalk' => 'Mia diskuto',
+'anontalk' => 'Diskutpaĝo por tiu ĉi IP',
+'navigation' => 'Navigado',
+'and' => '&#32;kaj',
+
+# Cologne Blue skin
'qbfind' => 'Trovi',
'qbbrowse' => 'Foliumado',
'qbedit' => 'Redakti',
@@ -306,15 +330,35 @@ $messages = array(
'qbpageinfo' => 'Paĝinformoj',
'qbmyoptions' => 'Personaĵoj',
'qbspecialpages' => 'Specialaj paĝoj',
-'moredotdotdot' => 'Pli...',
-'mypage' => 'Mia paĝo',
-'mytalk' => 'Mia diskuto',
-'anontalk' => 'Diskutpaĝo por tiu ĉi IP',
-'navigation' => 'Navigado',
-'and' => '&#32;kaj',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatenoj:',
+'faq' => 'Oftaj demandoj',
+'faqpage' => 'Project:Oftaj demandoj',
+
+# Vector skin
+'vector-action-addsection' => 'Aldoni temon',
+'vector-action-delete' => 'Forigi',
+'vector-action-move' => 'Alinomigi',
+'vector-action-protect' => 'Protekti',
+'vector-action-undelete' => 'Malforigi',
+'vector-action-unprotect' => 'Malprotekti',
+'vector-namespace-category' => 'Kategorio',
+'vector-namespace-help' => 'Helpopaĝo',
+'vector-namespace-image' => 'Dosiero',
+'vector-namespace-main' => 'Paĝo',
+'vector-namespace-media' => 'Dosiera paĝo',
+'vector-namespace-mediawiki' => 'Mesaĝo',
+'vector-namespace-project' => 'Projekta paĝo',
+'vector-namespace-special' => 'Speciala paĝo',
+'vector-namespace-talk' => 'Diskuto',
+'vector-namespace-template' => 'Ŝablono',
+'vector-namespace-user' => 'Uzula paĝo',
+'vector-view-create' => 'Krei',
+'vector-view-edit' => 'Redakti',
+'vector-view-history' => 'Vidi historion',
+'vector-view-view' => 'Legi',
+'vector-view-viewsource' => 'Vidi fonton',
+'actions' => 'Agoj',
+'namespaces' => 'Nomspacoj',
+'variants' => 'Variantoj',
'errorpagetitle' => 'Eraro',
'returnto' => 'Reiri al $1.',
@@ -364,18 +408,22 @@ $messages = array(
'otherlanguages' => 'Aliaj lingvoj',
'redirectedfrom' => '(Alidirektita el $1)',
'redirectpagesub' => 'Alidirektilo',
-'lastmodifiedat' => 'Ĉi tiu paĝo estis lastafoje redaktita je $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ĉi tiu paĝo estis lastafoje redaktita je $2, $1.',
'viewcount' => 'Montrita {{PLURAL:$1|unufoje|$1 fojojn}}.',
'protectedpage' => 'Protektita paĝo',
'jumpto' => 'Iri al:',
'jumptonavigation' => 'navigado',
'jumptosearch' => 'serĉi',
+'view-pool-error' => 'Bedaŭrinde la serviloj estas tro uzata ĉi-momente.
+Tro da uzantoj provas vidi ĉi tiun paĝon.
+Bonvolu atendi iom antaŭ vi provas atingi ĝin denove.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Pri {{SITENAME}}',
'aboutpage' => 'Project:Enkonduko',
'copyright' => 'La enhavo estas disponebla laŭ $1.',
-'copyrightpagename' => '{{SITENAME}}-kopirajto',
'copyrightpage' => '{{ns:project}}:Kopirajto',
'currentevents' => 'Aktualaĵoj',
'currentevents-url' => 'Project:Aktualaĵoj',
@@ -383,8 +431,6 @@ $messages = array(
'disclaimerpage' => 'Project:Malgarantia paĝo',
'edithelp' => 'Helpo pri redaktado',
'edithelppage' => 'Help:Kiel redakti paĝon',
-'faq' => 'Oftaj demandoj',
-'faqpage' => 'Project:Oftaj demandoj',
'helppage' => 'Help:Enhavo',
'mainpage' => 'Ĉefpaĝo',
'mainpage-description' => 'Ĉefpaĝo',
@@ -464,10 +510,6 @@ La lasta provita datumbaza informmendo estis:
"$1"
el la funkcio "$2".
Datumbazo liveris la erarmesaĝon "$3: $4".',
-'noconnect' => 'La vikio suferas teknikajn problemojn, kaj ne eblas kontakti la datumbazan servilon<br />
-$1',
-'nodb' => 'Neeblis elekti datumaron $1',
-'cachederror' => 'Intertempe, jen konservita kopio de la petita paĝo (ĝi eble ne estas ĝisdata).',
'laggedslavemode' => 'Avertu: la paĝo eble ne enhavas lastatempajn ĝisdatigojn.',
'readonly' => 'Datumaro ŝlosita, nurlega',
'enterlockreason' => 'Bonvolu klarigi, kial oni ŝlosas la datumaron, kaj
@@ -489,6 +531,8 @@ Bonvolu raporti ĉi tiun al [[Special:ListUsers/sysop|administranto]], notante l
'readonly_lag' => 'La datumbazo estis aŭtomate ŝlosita dum la subdatumbazo atingas la ĉefan datumbazon.',
'internalerror' => 'Interna eraro',
'internalerror_info' => 'Interna eraro: $1',
+'fileappenderrorread' => 'Ne eblis legi "$1" dum postaldonado.',
+'fileappenderror' => 'Ne eblis postaldoni "$1" al "$2".',
'filecopyerror' => 'Neeblis kopii dosieron "$1" al "$2".',
'filerenameerror' => 'Neeblis alinomi dosieron "$1" al "$2".',
'filedeleteerror' => 'Neeblis forigi dosieron "$1".',
@@ -498,7 +542,8 @@ Bonvolu raporti ĉi tiun al [[Special:ListUsers/sysop|administranto]], notante l
'unexpected' => 'Neatendita valoro: "$1"="$2".',
'formerror' => 'Eraro: neeblis liveri formulon',
'badarticleerror' => 'Tiun ĉi agon oni ne povas apliki al tiu ĉi artikolo.',
-'cannotdelete' => 'Neeblis forigi la elektitan paĝon aŭ dosieron.',
+'cannotdelete' => 'Ne eblis forigi la elektitan paĝon aŭ dosieron "$1".
+Eble ĝi estis jam forigita de iu alia.',
'badtitle' => 'Fuŝa titolo',
'badtitletext' => 'La petita paĝotitolo estis malvalida, malplena, aŭ malĝuste ligita interlingva aŭ intervikia titolo.
Ĝi eble enhavas unu aŭ pliaj signoj kiu ne povas esti uzata en titoloj.',
@@ -532,7 +577,6 @@ La kialo donata estis ''$2''.",
'virus-unknownscanner' => 'nekonata kontraŭviruso:',
# Login and logout pages
-'logouttitle' => 'Elsaluti',
'logouttext' => "'''Vi nun estas elsalutita.'''
Vi rajtas daŭre vikiumi sennome, aŭ vi povas [[Special:UserLogin|reensaluti]] kiel la sama aŭ kiel alia uzanto.
@@ -540,7 +584,6 @@ Notu ke iuj paĝoj daŭre ŝajnos kvazaŭ vi ankoraŭ estas ensalutita, ĝis vi
'welcomecreation' => '== Bonvenon, $1! ==
Via konto estas kreita.
Ne forgesu fari viajn [[Special:Preferences|{{SITENAME}}-preferojn]].',
-'loginpagetitle' => 'Ensaluti / enskribi',
'yourname' => 'Salutnomo:',
'yourpassword' => 'Pasvorto:',
'yourpasswordagain' => 'Retajpu pasvorton',
@@ -551,6 +594,7 @@ Ne forgesu fari viajn [[Special:Preferences|{{SITENAME}}-preferojn]].',
'nav-login-createaccount' => 'Ensaluti / Krei novan konton',
'loginprompt' => 'Via foliumilo nepre permesu kuketojn por ensaluti en la {{SITENAME}}.',
'userlogin' => 'Ensaluti / Krei novan konton',
+'userloginnocreate' => 'Ensaluti',
'logout' => 'Elsaluti',
'userlogout' => 'Elsaluti',
'notloggedin' => 'Ne ensalutinta',
@@ -563,28 +607,8 @@ Ne forgesu fari viajn [[Special:Preferences|{{SITENAME}}-preferojn]].',
'badretype' => 'La pasvortojn kiujn vi tajpis ne egalas.',
'userexists' => 'Salutnomo enigita jam estas uzata.
Bonvolu elekti alian nomon.',
-'youremail' => 'Retadreso:',
-'username' => 'Salutnomo:',
-'uid' => 'Uzantnumero:',
-'prefs-memberingroups' => 'Ano de {{PLURAL:$1|grupo|grupoj}}:',
-'yourrealname' => 'Vera nomo:',
-'yourlanguage' => 'Lingvo',
-'yourvariant' => 'Varianto',
-'yournick' => 'Subskribo:',
-'badsig' => 'Via kaŝnomo (por subskriboj) malvalidas. Bv. kontroli la HTML-etikedojn!',
-'badsiglength' => 'La subskribo estas tro longa.
-Ĝi devas esti sub $1 {{PLURAL:$1|signo|signoj}}.',
-'yourgender' => 'Sekso:',
-'gender-unknown' => 'Nespecifita',
-'gender-male' => 'Vira',
-'gender-female' => 'Ina',
-'prefs-help-gender' => 'Nedeviga: uzita por sekseca salutado de la programaro. Ĉi tiu informo estos publika.',
-'email' => 'Retadreso',
-'prefs-help-realname' => '* Vera nomo (opcia): se vi elektas sciigi ĝin, ĝi estos uzita por aŭtorigi vin pri viaj kontribuoj.',
'loginerror' => 'Ensaluta eraro',
-'prefs-help-email' => 'Retadreso estas nedeviga, sed permesus por via pasvorto esti retpoŝtita al vi se vi forgesus ĝin.
-Vi povas ankaŭ elekti permesigi aliaj uzantoj kontakti vin per via uzanto-paĝo aŭ diskuto-paĝo sen malkaŝante vian identeco.',
-'prefs-help-email-required' => 'Ret-adreso estas bezonata.',
+'createaccounterror' => 'Ne eblis krei konton: $1',
'nocookiesnew' => 'La uzantokonto estis kreita sed vi ne estas ensalutinta. *** E-igo lcfirst {{SITENAME}} uzas kuketojn por akcepti uzantojn. Kuketoj esta malaktivigitaj ĉe vi. Bonvolu aktivigi ilin kaj ensalutu per viaj novaj salutnomo kaj pasvorto.',
'nocookieslogin' => '{{SITENAME}} uzas kuketojn por akcepti uzantojn. Kuketoj esta malaktivigitaj ĉe vi. Bonvolu aktivigi ilin kaj provu denove.',
'noname' => 'Vi ne tajpis validan salutnomon.',
@@ -595,10 +619,11 @@ Nomoj por uzantoj estas usklecodistinga.
Kontrolu vian literumadon, aŭ [[Special:UserLogin/signup|kreu novan konton]].',
'nosuchusershort' => 'Ne ekzistas uzanto kun la nomo "<nowiki>$1</nowiki>". Bonvolu kontroli vian ortografion.',
'nouserspecified' => 'Vi devas entajpi salutnomon.',
+'login-userblocked' => 'Ĉi tiu uzanto estas forbarita. Ensalutado ne estas permesita.',
'wrongpassword' => 'Vi tajpis malĝustan pasvorton. Bonvolu provi denove.',
'wrongpasswordempty' => 'Vi tajpis malplenan pasvorton. Bonvolu provi denove.',
-'passwordtooshort' => 'Via pasvorto estas nevalida aŭ tro mallonga.
-Ĝi entenu minimume $1 {{PLURAL:$1|1 signon|$1 signojn}} kaj nepre malsamas vian salutnomon.',
+'passwordtooshort' => 'Pasvortoj devas esti almenaŭ $1 {{PLURAL:$1|1 signon|$1 signojn}}.',
+'password-name-match' => 'Via pasvorto devas nepre malsami vian salutnomon.',
'mailmypassword' => 'Retpoŝti novan pasvorton',
'passwordremindertitle' => 'Rememorigo el {{SITENAME}} pri perdita pasvorto',
'passwordremindertext' => 'Iu (probable vi, el IP-adreso $1) petis novan
@@ -610,6 +635,7 @@ Se iu alia faris ĉi tiun peton, aŭ se vi estas rememorita vian pasvorton,
kaj ne plu volas ŝanĝi ĝin, vi povas ignori ĉi tiun mesaĝon kaj
kontinui uzante vian malnovan pasvorton.',
'noemail' => 'Retpoŝtadreso ne estas registrita por uzanto "$1".',
+'noemailcreate' => 'Vi devas provizi validan retadreson',
'passwordsent' => 'Oni sendis novan pasvorton al la retpoŝtadreso
registrita por "$1".
Bonvolu saluti denove ricevinte ĝin.',
@@ -633,9 +659,11 @@ Enigi bone formatita adreso aŭ malplenigi tiun kampon.',
'createaccount-text' => 'Iu kreis konton por via retadreso en {{SITENAME}} ($4) nomata "$2", kun pasvorto "$3". Vi ensalutu kaj ŝanĝu vian pasvorton nun.
Vi povas ignori ĉi mesaĝon, se ĉi konto estis kreita erare.',
+'usernamehasherror' => 'Salutnomo ne povas enhavi kriphaketaĵajn signojn',
'login-throttled' => 'Vi tro ofte provis eniri la pasvorton por ĉi tiu konto.
Bonvolu ĝisatendi antaŭ retrovi.',
'loginlanguagelabel' => 'Lingvo: $1',
+'suspicious-userlogout' => 'Via peto por elsaluti estis malpermesita ĉar verŝajne ĝi estis sendita de trompita retumilo aŭ kaŝiganta proksima servilo.',
# Password reset dialog
'resetpass' => 'Ŝanĝi pasvorton',
@@ -647,17 +675,13 @@ Bonvolu ĝisatendi antaŭ retrovi.',
'retypenew' => 'Retajpi novan pasvorton',
'resetpass_submit' => 'Fari pasvorton kaj ensaluti',
'resetpass_success' => 'Via pasvorto estis sukcese ŝanĝita! Nun ensalutanta vin...',
-'resetpass_bad_temporary' => 'Nevalida provizora pasvorto. Vi verŝajne jam sukcese ŝanĝis vian pasvorton aŭ petis novan provizoran pasvorton.',
'resetpass_forbidden' => 'Pasvortoj ne estas ŝanĝeblaj',
'resetpass-no-info' => 'Vi devas ensaluti por atingi ĉi tiun paĝon rekte.',
'resetpass-submit-loggedin' => 'Ŝanĝi pasvorton',
+'resetpass-submit-cancel' => 'Nuligi',
'resetpass-wrong-oldpass' => 'Malvalida provizora aŭ nuna pasvorto.
Vi eble jam ŝanĝis vian pasvorton aŭ petis novan provizoran pasvorton.',
'resetpass-temp-password' => 'Provizora pasvorto:',
-'resetpass-log' => 'Loglibro de pasvortaj reŝanĝoj',
-'resetpass-logtext' => 'Jen protokolo de uzantoj kies pasvortoj estis reŝanĝitaj de administranto.',
-'resetpass-logentry' => 'ŝanĝis la pasvorton por $1',
-'resetpass-comment' => 'Kialo por pasvorta ŝanĝo:',
# Edit page toolbar
'bold_sample' => 'Grasa teksto',
@@ -732,7 +756,6 @@ Bonvolu inkluzivi tiujn detalojn en iuj ajn demandoj kiun vi farus.',
'blockededitsource' => "La teksto de '''viaj redaktoj''' al '''$1''' estas montrata malsupre:",
'whitelistedittitle' => 'Ensalutado devigata por redakti',
'whitelistedittext' => 'Vi devas $1 por redakti paĝojn.',
-'confirmedittitle' => 'Nepras konfirmi per retpoŝto por redakti',
'confirmedittext' => 'Vi devas konfirmi vian retpoŝtan adreson antaŭ ol redakti paĝojn. Bonvolu agordi kaj validigi vian retadreson per viaj [[Special:Preferences|preferoj]].',
'nosuchsectiontitle' => 'Ne povas trovi sekcion',
'nosuchsectiontext' => 'Vi provis redakti sekcion, kiu ne ekzistas.
@@ -754,9 +777,16 @@ Se vi estas anonimulo kaj preferus eviti tiajn mistrafajn komentojn al vi, bonvo
Vi povas [[Special:Search/{{PAGENAME}}|serĉi ĉi tiun paĝtitolon]] en aliaj paĝoj,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serĉi la rilatajn protokolojn],
aŭ [{{fullurl:{{FULLPAGENAME}}|action=edit}} redakti ĉi tiun paĝon]</span>.',
+'noarticletext-nopermission' => 'Estas neniom da teksto en ĉi tiu paĝo.
+Vi povas [[Special:Search/{{PAGENAME}}|serĉi ĉi tiun paĝan titolon]] en aliaj paĝoj,
+aŭ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serĉi la rilatajn protokolojn]</span>.',
'userpage-userdoesnotexist' => 'Uzula konto "$1" ne estas registrita. Bonvolu konfirmi se vi volas krei/redakti ĉi tiu paĝo.',
+'userpage-userdoesnotexist-view' => 'Uzanto-konto "$1" ne estas registrita.',
+'blocked-notice-logextract' => 'Ĉi tiu uzanto estas ĉi-momente forbarita.
+La lasta protokolero estas jene montrata por via referenco:',
'clearyourcache' => "'''Notu:''' Post konservado vi forviŝu la kaŝmemoron de via foliumilo por vidi la ŝanĝojn : '''Mozilo:''' alklaku ''Reŝarĝi'' (aŭ ''Stir-Shift-R''), '''IE / Opera:''' ''Stir-F5'', '''Safari:''' ''Cmd-R'', '''Konqueror''' ''Stir-R''.",
-'usercssjsyoucanpreview' => "'''Konsileto:''' Uzu la \"Antaŭrigardan\" butonon por provi vian novan css/js antaŭ konservi.",
+'usercssyoucanpreview' => "'''Konsileto:''' Uzu la butonon \"Antaŭrigardi\" por provi vian novan CSS-kodon antaŭ konservado.",
+'userjsyoucanpreview' => "'''Konsileto:''' Uzu la butonon \"Antaŭrigard\" por provi vian novan JS-kodon antaŭ konservado.",
'usercsspreview' => "'''Notu ke vi nur antaŭvidas vian uzanto-CSS.
Ĝi ne jam estis konservita!'''",
'userjspreview' => "'''Memoru ke vi nun nur provas kaj antaŭrigardas vian uzantan javaskripton, ĝi ne estas jam konservita'''",
@@ -808,13 +838,16 @@ Se eble, bonvolu disigi la paĝon al malpli grandajn paĝerojn.'''",
Vi eble volus elkopii kaj englui la tekston al tekstdosiero por konservi ĝin por posta uzo.'''
La administranto kiu ŝlosis ĝin donis ĉi tiun eksplikaĵon: $1",
-'protectedpagewarning' => "'''AVERTO: Tiu ĉi paĝo estas ŝlosita kontraŭ redaktado krom de administrantoj (t.e., vi). Bv certiĝi, ke vi sekvas la normojn de la komunumo per via redaktado.'''",
-'semiprotectedpagewarning' => "'''Notu:''' Ĉi paĝo estas protektita tiel ke nur ensalutintaj uzantoj povas redakti ĝin.",
+'protectedpagewarning' => "'''Averto: Ĉi tiu paĝo estas ŝlosita kontraŭ redaktado krom de administrantoj.'''
+Jen la lasta protokolero provizita por via referenco:",
+'semiprotectedpagewarning' => "'''Notu:''' Ĉi tiu paĝo estas ŝlosita tial ke nur ensalutintaj uzantoj povas redakti ĝin.
+Jen la lasta protokolero por via referenco:",
'cascadeprotectedwarning' => "'''Averto:''' Ĉi tiu paĝo estas ŝlosita tiel ke nur uzantoj kun administrantaj privilegioj povas redakti ĝin, ĉar ĝi estas inkludita en la {{PLURAL:$1|sekvan kaskade protektitan paĝon|sekvajn kaskade protektitajn paĝojn}}:",
-'titleprotectedwarning' => "'''AVERTO: Ĉi paĝo estis ŝlosita tial nur [[Special:ListGroupRights|specifaj rajtoj]] estas bezonaj por krei ĝin.'''",
-'templatesused' => 'Ŝablonoj uzitaj sur ĉi paĝo:',
-'templatesusedpreview' => 'Ŝablonoj uzataj dum ĉi tiu antaŭrigardo:',
-'templatesusedsection' => 'Ŝablonoj uzataj en ĉi tiu sekcio:',
+'titleprotectedwarning' => "'''Averto: Ĉi tiu paĝo estis ŝlosita tial nur [[Special:ListGroupRights|specifaj rajtoj]] estas bezonaj por krei ĝin.'''
+Jen la lasta protokolero por via referenco:",
+'templatesused' => '{{PLURAL:$1|Ŝablono uzataj|Ŝablonoj uzataj}} en ĉi tiu paĝo:',
+'templatesusedpreview' => '{{PLURAL:$1|Ŝablono uzata|Ŝablonoj uzataj}} en ĉi tiu antaŭrigardo:',
+'templatesusedsection' => '{{PLURAL:$1|Ŝablono uzata|Ŝablonojuzataj}} en ĉi tiu sekcio:',
'template-protected' => '(protektita)',
'template-semiprotected' => '(duone protektita)',
'hiddencategories' => 'Ĉi tiu paĝo estas membro de {{PLURAL:$1|1 kaŝita kategorio|$1 kaŝitaj kategorioj}}:',
@@ -822,15 +855,18 @@ La administranto kiu ŝlosis ĝin donis ĉi tiun eksplikaĵon: $1",
'nocreatetitle' => 'Paĝa kreado estas limigita',
'nocreatetext' => '{{SITENAME}} restriktas la eblecon krei novajn paĝojn. Vi povas reiri kaj redakti faritan paĝon, aŭ [[Special:UserLogin|ensaluti aŭ krei konton]].',
'nocreate-loggedin' => 'Vi ne rajtas krei novajn paĝojn.',
+'sectioneditnotsupported-title' => 'Redaktado de ĉi tiu sekcio ne estas subtenata',
+'sectioneditnotsupported-text' => 'Redaktado de sekcioj ne estas subtenata en ĉi tiu redakta paĝo.',
'permissionserrors' => 'Eraroj pri rajtoj',
'permissionserrorstext' => 'Vi ne rajtas fari tion pro la {{PLURAL:$1|sekva kialo|sekvaj kialoj}}:',
'permissionserrorstext-withaction' => 'Vi ne rajtas $2, pro la {{PLURAL:$1|jena kialo|jenaj kialoj}}:',
-'recreate-deleted-warn' => "'''Averto: Vi rekreas paĝon tiu estis antaŭe forigita.'''
+'recreate-moveddeleted-warn' => "'''Averto: Vi rekreas paĝon tiu estis antaŭe forigita.'''
Vi konsideru ĉu konvenas daŭre redakti ĉi paĝon.
-Jen la protokolo de forigoj por via oportuno:",
-'deleted-notice' => 'Ĉi tiu paĝo estis forigita. La linio el la protokolo pri forigado estas montrata sube por via referenco.',
-'deletelog-fulllog' => 'Vidi plenan protokolon',
+Jen la protokolo de forigoj kaj alinomigado por via oportuno:",
+'moveddeleted-notice' => 'Ĉi tiu paĝo estis forigita.
+Jen la protokolo pri forigado kaj alinomigado por via referenco.',
+'log-fulllog' => 'Vidi kompletan protokolon',
'edit-hook-aborted' => 'Redakto ĉesigis per hoko.
Ĝi ne donis eksplikon.',
'edit-gone-missing' => 'Ne eblis ĝisdatigi la paĝon.
@@ -853,6 +889,7 @@ Iuj ŝablonoj ne estos inkluzivitaj.',
'post-expand-template-argument-category' => 'Paĝoj enhavantaj forlasitajn argumentojn de ŝablonoj',
'parser-template-loop-warning' => 'Rekursiva ŝablono estis trovita: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limo de ŝablona profundeco pligrandiĝis ($1)',
+'language-converter-depth-warning' => 'Profundo de lingvo-konvertilo preterpasis limon ($1)',
# "Undo" feature
'undo-success' => 'La redakto estas malfarebla.
@@ -873,7 +910,7 @@ La kialo donata de $3 estas ''$2''.",
'currentrev' => 'Aktuala versio',
'currentrev-asof' => 'Nuna versio ekde $1',
'revisionasof' => 'Kiel registrite je $1',
-'revision-info' => 'Redakto de $1 de $2', # Additionally available: $3: revision id
+'revision-info' => 'Redakto de $1 de $2',
'previousrevision' => '← Antaŭa versio',
'nextrevision' => 'Sekva versio →',
'currentrevisionlink' => 'Rigardi nunan version',
@@ -884,7 +921,7 @@ La kialo donata de $3 estas ''$2''.",
'page_last' => 'lasta',
'histlegend' => 'Klarigo: (nuna) = vidu malsamojn kompare kun la nuna versio, (antaŭa) = malsamojn kompare kun la antaŭa versio, <strong>E</strong> = malgranda redakteto',
'history-fieldset-title' => 'Traserĉi historion',
-'deletedrev' => '[forigita]',
+'history-show-deleted' => 'Forigitaĵoj nur',
'histfirst' => 'plej frua',
'histlast' => 'plej lasta',
'historysize' => '({{PLURAL:$1|1 bajto|$1 bajtoj}})',
@@ -893,71 +930,114 @@ La kialo donata de $3 estas ''$2''.",
# Revision feed
'history-feed-title' => 'Historio de redaktoj',
'history-feed-description' => 'Revizia historio por ĉi tiu paĝo en la vikio',
-'history-feed-item-nocomment' => '$1 ĉe $2', # user at time
+'history-feed-item-nocomment' => '$1 ĉe $2',
'history-feed-empty' => 'La petita paĝo ne ekzistas.
Ĝi verŝajne estis forigita de la vikio, aŭ alinomita.
Provu [[Special:Search|serĉi en la vikio]] por rilataj novaj paĝoj.',
# Revision deletion
-'rev-deleted-comment' => '(komento forigita)',
-'rev-deleted-user' => '(uzanto-nomo forigita)',
-'rev-deleted-event' => '(protokola ago forigita)',
-'rev-deleted-text-permission' => "Ĉi tiu revizio de la paĝo estis '''forigita'''.
-Eble estas detaloj en la [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolo de forigoj].",
-'rev-deleted-text-view' => "Ĉi tiu revizio de la paĝo estis '''forigita'''.
-Kiel administranto vi povas rigardi ĝin; eble estas detaloj en la [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolo pri forigoj].",
-'rev-deleted-no-diff' => "Vi ne povas vidi ĉi tiun diferencon ĉar unu el la revizioj estis '''forigitaj'''.
-Eble estas detaloj en la [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolo pri forigoj].",
-'rev-deleted-unhide-diff' => "Unu el la revizioj de ĉi tiu diferenco estis '''forigita'''.
-Eble estas detaloj en la [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolo de forigoj].
+'rev-deleted-comment' => '(komento forigita)',
+'rev-deleted-user' => '(uzanto-nomo forigita)',
+'rev-deleted-event' => '(protokola ago forigita)',
+'rev-deleted-user-contribs' => '[salutnomo aŭ IP-adreso estis forigita - redakto estas kaŝita en kontribuoj]',
+'rev-deleted-text-permission' => "Ĉi tiu revizio de la paĝo estis '''forigita'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
+'rev-deleted-text-unhide' => "Ĉi tiu revizio de la paĝo estis '''forigita'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].
+Kiel administranto, vi ankoraŭ povas [$1 vidi ĉi tiun revizio] se vi volas kontinui.",
+'rev-suppressed-text-unhide' => "Ĉi tiu paĝa revizio estis '''forigita'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].
+Kiel administranto, vi povas ankoraŭ [$1 vidi ĉi tiun revizion] se vi volas daŭrigi.",
+'rev-deleted-text-view' => "Ĉi tiu revizio de la paĝo estis '''forigita'''.
+Kiel administranto vi povas rigardi ĝin; eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
+'rev-suppressed-text-view' => "Ĉi tiu paĝa revizio estis '''forigita'''.
+Kiel administranto, vi povas vidi ĝin; eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
+'rev-deleted-no-diff' => "Vi ne povas vidi ĉi tiun diferencon ĉar unu el la revizioj estis '''forigitaj'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
+'rev-suppressed-no-diff' => "Vi ne povas rigardi ĉi tiun diferencon ĉar unu el la revizioj estis '''forigita'''.",
+'rev-deleted-unhide-diff' => "Unu el la revizioj de ĉi tiu diferenco estis '''forigita'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolo pri forigado].
Kiel administranto vi povas ankoraŭ [$1 vidi ĉi tiun diferencon] se vi volas kontinui.",
-'rev-delundel' => 'montri/kaŝi',
-'revisiondelete' => 'Forigi/malforigi versiojn',
-'revdelete-nooldid-title' => 'Nevalida cela revizio',
-'revdelete-nooldid-text' => 'Vi ne specifis celan version aŭ versiojn fari ĉi tiun
+'rev-suppressed-unhide-diff' => "Unu el la revizioj de ĉi tiu diferenco estis '''forigita'''.
+Eble estas detaloj en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} forigada protokolo].
+Kiel administranto, vi povas ankoraŭ [$1 vidi ĉi tiun diferencon] se vi deziras.",
+'rev-deleted-diff-view' => "Unu el la revizioj de ĉi tiu diferenco estis '''forigita'''.
+Kiel administranto, vi povas rigardi ĉi tiun diferencon, eble estas detaloj en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolo pri forigado].",
+'rev-suppressed-diff-view' => "Unu el la revizioj de ĉi tiu diferenco estis '''forigita'''.
+Kiel administranto, vi povas rigardi ĉi tiun diferencon, eble estas detaloj en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolo pri forigadoj].",
+'rev-delundel' => 'montri/kaŝi',
+'rev-showdeleted' => 'montri',
+'revisiondelete' => 'Forigi/malforigi versiojn',
+'revdelete-nooldid-title' => 'Nevalida cela revizio',
+'revdelete-nooldid-text' => 'Vi ne specifis celan version aŭ versiojn fari ĉi tiun
funkcion, la specifita versio ne ekzistas, aŭ vi estas provanta kaŝi la nunan version.',
-'revdelete-nologtype-title' => 'Neniu protokol-tipo estis donita',
-'revdelete-nologtype-text' => 'Vi ne specifis protokolan tipon por fari ĉi tiun funkcion.',
-'revdelete-toomanytargets-title' => 'Tro multaj celoj',
-'revdelete-toomanytargets-text' => 'Vi specifis tro tipojn da celoj por fari ĉi tiun agon.',
-'revdelete-nologid-title' => 'Malvalida protokolero',
-'revdelete-nologid-text' => 'Vi aŭ ne specifis celan protokolan eventon por fari ĉi tiun funkcion aŭ la specifa protokolero ne ekzistas.',
-'revdelete-selected' => "'''{{PLURAL:$2|Selektata versio|Selektataj versioj}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Selektata protokola evento|Selektataj protokolaj eventoj}}:'''",
-'revdelete-text' => "'''Forigitaj versioj kaj eventoj plu aperos en la historipaĝoj, sed iliaj tekstoj ne estos alireblaj de la publiko.'''
-
-Aliaj administrantoj ĉe {{SITENAME}} plu povos aliri la kaŝitan entenon kaj restarigi ĝin per la sama interfaco, krom se plia limigo estas metita de la paĝaradministrantoj.
-Bonvolu konfirmi ke vi intencias fari ĉi tiel, ke vi komprenas la konsekvencojn, kaj ke vi faras ĉi tiel laŭ [[{{MediaWiki:Policy-url}}|la regularo]].",
-'revdelete-suppress-text' => "Subpremo '''nur''' estu uzata por la jenaj kazoj:
+'revdelete-nologtype-title' => 'Neniu protokol-tipo estis donita',
+'revdelete-nologtype-text' => 'Vi ne specifis protokolan tipon por fari ĉi tiun funkcion.',
+'revdelete-nologid-title' => 'Malvalida protokolero',
+'revdelete-nologid-text' => 'Vi aŭ ne specifis celan protokolan eventon por fari ĉi tiun funkcion aŭ la specifa protokolero ne ekzistas.',
+'revdelete-no-file' => 'La specifita dosiero ne ekzistas.',
+'revdelete-show-file-confirm' => 'Ĉu vi certas ke vi volas vidi forigitan revizion de la dosiero "<nowiki>$1</nowiki>" de $2, $3?',
+'revdelete-show-file-submit' => 'Jes',
+'revdelete-selected' => "'''{{PLURAL:$2|Selektata versio|Selektataj versioj}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Selektata protokola evento|Selektataj protokolaj eventoj}}:'''",
+'revdelete-text' => "'''Forigitaj versioj kaj eventoj plu aperos en la historipaĝoj, sed iliaj tekstoj ne estos alireblaj de la publiko.'''
+Aliaj administrantoj ĉe {{SITENAME}} plu povos aliri la kaŝitan entenon kaj restarigi ĝin per la sama interfaco, krom se plia limigo estas metita de la paĝaradministrantoj.",
+'revdelete-confirm' => 'Bonvolu konfirmi ke vi intencias fari ĉi tion, ke vi komprenas la konsekvencojn kaj ke vi faras ĉi tion laŭ [[{{MediaWiki:Policy-url}}|la regularo]].',
+'revdelete-suppress-text' => "Subpremo '''nur''' estu uzata por la jenaj kazoj:
* Netaŭga persona informo
*: ''hejmaj adresoj kaj telefonnumeroj, ŝtataj identnumeroj, ktp.''",
-'revdelete-legend' => 'Fari videblecajn limigojn',
-'revdelete-hide-text' => 'Kaŝi tekston de versio',
-'revdelete-hide-name' => 'Kaŝi agon kaj celon',
-'revdelete-hide-comment' => 'Kaŝi komenton de redakto',
-'revdelete-hide-user' => 'Kaŝi nomon aŭ IP-adreson de redaktinto',
-'revdelete-hide-restricted' => 'Subpremi ĉi tiujn datenojn de administrantoj kaj ankaŭ aliaj',
-'revdelete-suppress' => 'Subpremi datenojn de kaj administrantoj kaj aliaj',
-'revdelete-hide-image' => 'Kaŝi enhavon de dosieroj',
-'revdelete-unsuppress' => 'Forigi limigojn al restarigitaj versioj',
-'revdelete-log' => 'Kialo:',
-'revdelete-submit' => 'Apliki al la selektita versio',
-'revdelete-logentry' => 'ŝanĝis videblecon de versio por [[$1]]',
-'logdelete-logentry' => 'ŝanĝis eventan videblecon de [[$1]]',
-'revdelete-success' => "'''Revizia videbleco estas sukcese ĝisdatigita.'''",
-'logdelete-success' => "'''Videbleco de evento sukcese farita.'''",
-'revdel-restore' => 'Ŝanĝi videblecon',
-'pagehist' => 'Paĝa historio',
-'deletedhist' => 'Forigita historio',
-'revdelete-content' => 'enhavo',
-'revdelete-summary' => 'redakti resumon',
-'revdelete-uname' => 'salutnomo',
-'revdelete-restricted' => 'aplikis limojn al administrantoj',
-'revdelete-unrestricted' => 'forigis limojn por administrantoj',
-'revdelete-hid' => 'kaŝis $1',
-'revdelete-unhid' => 'malkaŝis $1',
-'revdelete-log-message' => '$1 por $2 {{PLURAL:$2|versio|versioj}}',
-'logdelete-log-message' => '$1 por $2 {{PLURAL:$2|evento|eventoj}}',
+'revdelete-legend' => 'Fari videblecajn limigojn',
+'revdelete-hide-text' => 'Kaŝi tekston de versio',
+'revdelete-hide-image' => 'Kaŝi enhavon de dosieroj',
+'revdelete-hide-name' => 'Kaŝi agon kaj celon',
+'revdelete-hide-comment' => 'Kaŝi komenton de redakto',
+'revdelete-hide-user' => 'Kaŝi nomon aŭ IP-adreson de redaktinto',
+'revdelete-hide-restricted' => 'Subpremi ĉi tiujn datenojn de administrantoj kaj ankaŭ aliaj',
+'revdelete-radio-same' => '(ne ŝanĝi)',
+'revdelete-radio-set' => 'Jes',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Subpremi datenojn de kaj administrantoj kaj aliaj',
+'revdelete-unsuppress' => 'Forigi limigojn al restarigitaj versioj',
+'revdelete-log' => 'Kialo:',
+'revdelete-submit' => 'Apliki al {{PLURAL:$1|elektita revizio|elektitaj revizioj}}',
+'revdelete-logentry' => 'ŝanĝis videblecon de versio por [[$1]]',
+'logdelete-logentry' => 'ŝanĝis eventan videblecon de [[$1]]',
+'revdelete-success' => "'''Revizia videbleco estas sukcese ĝisdatigita.'''",
+'revdelete-failure' => "'''Videblecon de revizio ne eblis ĝisdatigi:'''
+$1",
+'logdelete-success' => "'''Videbleco de evento sukcese farita.'''",
+'logdelete-failure' => "'''Protokola videbleco ne estis akordebla:'''
+$1",
+'revdel-restore' => 'Ŝanĝi videblecon',
+'pagehist' => 'Paĝa historio',
+'deletedhist' => 'Forigita historio',
+'revdelete-content' => 'enhavo',
+'revdelete-summary' => 'redakti resumon',
+'revdelete-uname' => 'salutnomo',
+'revdelete-restricted' => 'aplikis limojn al administrantoj',
+'revdelete-unrestricted' => 'forigis limojn por administrantoj',
+'revdelete-hid' => 'kaŝis $1',
+'revdelete-unhid' => 'malkaŝis $1',
+'revdelete-log-message' => '$1 por $2 {{PLURAL:$2|versio|versioj}}',
+'logdelete-log-message' => '$1 por $2 {{PLURAL:$2|evento|eventoj}}',
+'revdelete-hide-current' => 'Eraro kaŝante la aĵon de $2, $1: ĉi tiu estas la nuna revizio.
+Ĝi ne estas kaŝebla.',
+'revdelete-show-no-access' => 'Eraro montrante la aĵon de $2, $1: ĉi tiu estas markita "limigita".
+Vi ne rajtas atingi ĝin.',
+'revdelete-modify-no-access' => 'Eraro ŝanĝante la aĵon de $2, $1: ĉi tiu estas markita "limigita".
+Vi ne rajtas atingi ĝin.',
+'revdelete-modify-missing' => 'Eraro ŝanĝante aĵon ID $1: ĝi ne estas trovita en la datumbazo!',
+'revdelete-no-change' => "'''Averto:''' la aĵo de $2, $1 jam havas la petitan videblecan agordon.",
+'revdelete-concurrent-change' => 'Eraro ŝanĝante la aĵon de $2, $1: ĝia statuso estis ŝanĝita de alia uzanto dume dum vi provis ŝanĝi ĝin.
+Bonvolu kontroli la protokolojn.',
+'revdelete-only-restricted' => 'Eraro kaŝante la aĵon de $2, $1: Vi ne povas subpremi aĵojn de vido de administrantoj sen ankaŭ selektante unu el la aliaj subpremo-opcioj.',
+'revdelete-reason-dropdown' => '*Oftaj kialoj por forigado
+** Kopirajta malobservo
+** Netaŭga persona informo',
+'revdelete-otherreason' => 'Alia/aldona kialo:',
+'revdelete-reasonotherlist' => 'Alia kialo',
+'revdelete-edit-reasonlist' => 'Redakti kialojn por forigo',
+'revdelete-offender' => 'Aŭtoro de revizio:',
# Suppression log
'suppressionlog' => 'Protokolo pri subigado',
@@ -994,67 +1074,13 @@ Certigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.',
'mergelogpagetext' => 'Jen listo de la plej lastatempaj kunigoj de unu paĝhistorio en alian.',
# Diffs
-'history-title' => 'Redakto-historio de "$1"',
-'difference' => '(Malsamoj inter versioj)',
-'lineno' => 'Linio $1:',
-'compareselectedversions' => 'Kompari la elektitajn versiojn',
-'visualcomparison' => 'Vida komparo',
-'wikicodecomparison' => 'Vikiteksta komparo',
-'editundo' => 'malfari',
-'diff-multi' => '({{PLURAL:$1|Unu meza versio|$1 mezaj versioj}} ne montrata.)',
-'diff-movedto' => 'alnomita al $1',
-'diff-styleadded' => '$1 stilo aldoniĝis',
-'diff-added' => '$1 aldoniĝis',
-'diff-changedto' => 'ŝanĝiĝis al $1',
-'diff-movedoutof' => 'movita el $1',
-'diff-styleremoved' => '$1 stilo foriĝis',
-'diff-removed' => '$1 foriĝis',
-'diff-changedfrom' => 'ŝanĝiĝis de $1',
-'diff-src' => 'fonto',
-'diff-withdestination' => 'kun destino $1',
-'diff-with' => '&#32;kun $1 $2',
-'diff-with-final' => '&#32;kaj $1 $2',
-'diff-width' => 'larĝeco',
-'diff-height' => 'alteco',
-'diff-p' => "'''paragrafo'''",
-'diff-blockquote' => "'''citaĵo'''",
-'diff-h1' => "'''titolo (nivelo 1)'''",
-'diff-h2' => "'''titolo (nivelo 2)'''",
-'diff-h3' => "'''titolo (nivelo 3)'''",
-'diff-h4' => "'''titolo (nivelo 4)'''",
-'diff-h5' => "'''titolo (nivelo 5)'''",
-'diff-pre' => "'''antaŭformatita sekcio'''",
-'diff-div' => "'''divizio'''",
-'diff-ul' => "'''senorda listo'''",
-'diff-ol' => "'''ordigita listo'''",
-'diff-li' => "'''listano'''",
-'diff-table' => "'''tabelo'''",
-'diff-tbody' => "'''enhavo de tabelo'''",
-'diff-tr' => "'''vico'''",
-'diff-td' => "'''ĉelo'''",
-'diff-th' => "'''tabela titolo'''",
-'diff-br' => "'''vertikala spaceto'''",
-'diff-hr' => "'''horizonta linio'''",
-'diff-code' => "'''sekcio de komputika kodo'''",
-'diff-dl' => "'''difina listo'''",
-'diff-dt' => "'''defina termino'''",
-'diff-dd' => "'''difino'''",
-'diff-input' => "'''enigo'''",
-'diff-form' => "'''kamparo'''",
-'diff-img' => "'''bildo'''",
-'diff-span' => "'''grupigo (span)'''",
-'diff-a' => "'''ligilo'''",
-'diff-i' => "'''kursiva'''",
-'diff-b' => "'''grasigita'''",
-'diff-strong' => "'''forta'''",
-'diff-em' => "'''emfazita'''",
-'diff-font' => "'''tiparo'''",
-'diff-big' => "'''granda'''",
-'diff-del' => "'''forigita'''",
-'diff-tt' => "'''fiksite larĝa tiparo'''",
-'diff-sub' => "'''subindico'''",
-'diff-sup' => "'''supraindico'''",
-'diff-strike' => "'''trostrekita'''",
+'history-title' => 'Redakto-historio de "$1"',
+'difference' => '(Malsamoj inter versioj)',
+'lineno' => 'Linio $1:',
+'compareselectedversions' => 'Kompari la elektitajn versiojn',
+'showhideselectedversions' => 'Montri/kaŝi elektitajn versiojn',
+'editundo' => 'malfari',
+'diff-multi' => '({{PLURAL:$1|Unu meza versio|$1 mezaj versioj}} ne montrata.)',
# Search results
'searchresults' => 'Serĉrezultoj',
@@ -1062,28 +1088,25 @@ Certigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.',
'searchresulttext' => 'Por pliaj informoj kiel priserĉi la {{SITENAME}}n, vidu [[{{MediaWiki:Helppage}}|serĉi en {{SITENAME}}]].',
'searchsubtitle' => 'Vi serĉis "\'\'\'[[$1]]\'\'\'" ([[Special:Prefixindex/$1|ĉiuj paĝoj komence de "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ĉiuj paĝoj ligantaj al "$1"]])',
'searchsubtitleinvalid' => 'Serĉmendo "$1"',
-'noexactmatch' => '<b>Ne estas paĝo titolita "$1".</b> Vi povas [[:$1|krei la paĝon]].',
-'noexactmatch-nocreate' => "'''Estas neniu paĝo titolita \"\$1\".'''",
'toomanymatches' => 'Tro da serĉo-trafoj estis trovitaj; bonvolu provi malsaman serĉomendon.',
'titlematches' => 'Trovitaj laŭ titolo',
'notitlematches' => 'Neniu trovita laŭ titolo',
'textmatches' => 'Trovitaj laŭ enhavo',
'notextmatches' => 'Neniu trovita laŭ enhavo',
-'prevn' => '$1 antaŭajn',
-'nextn' => '$1 sekvajn',
+'prevn' => '{{PLURAL:$1|$1 antaŭa|$1 antaŭaj}}',
+'nextn' => '{{PLURAL:$1|$1 sekva|$1 sekvaj}}',
'prevn-title' => '{{PLURAL:$1|Antaŭa $1 rezulto|Antaŭaj $1 rezultoj}}',
'nextn-title' => '{{PLURAL:$1|Posta $1 rezulto|Postaj $1 rezultoj}}',
'shown-title' => 'Montri {{PLURAL:$1|$1 rezulton|$1 rezultojn}} en paĝo',
-'viewprevnext' => 'Montri ($1) ($2) ($3).',
+'viewprevnext' => 'Montri ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Serĉaj opcioj',
'searchmenu-exists' => "* Paĝo '''[[$1]]'''",
'searchmenu-new' => "'''Krei la paĝon \"[[:\$1]]\" en ĉi tiu vikio!'''",
'searchhelp-url' => 'Help:Enhavo',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Traserĉi paĝojn kun ĉi tiu prefikso]]',
'searchprofile-articles' => 'Enhavaj paĝoj',
-'searchprofile-articles-and-proj' => 'Enhavaj & projektaj paĝoj',
-'searchprofile-project' => 'Projektaj paĝoj',
-'searchprofile-images' => 'Dosieroj',
+'searchprofile-project' => 'Paĝoj pri Helpo kaj Projektoj',
+'searchprofile-images' => 'Plurmedio',
'searchprofile-everything' => 'Ĉio',
'searchprofile-advanced' => 'Progresa',
'searchprofile-articles-tooltip' => 'Serĉo en $1',
@@ -1091,8 +1114,6 @@ Certigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.',
'searchprofile-images-tooltip' => 'Serĉi dosierojn',
'searchprofile-everything-tooltip' => 'Traserĉi ĉiun enhavon (inkluzivante diskuto-paĝojn)',
'searchprofile-advanced-tooltip' => 'Serĉi en specialaj nomspacoj',
-'prefs-search-nsdefault' => 'Serĉi defaŭlte:',
-'prefs-search-nscustom' => 'Serĉi specialajn nomspacojn:',
'search-result-size' => '$1 ({{PLURAL:$2|1 vorto|$2 vortoj}})',
'search-result-score' => 'Trafeco: $1%',
'search-redirect' => '(alidirektilo $1)',
@@ -1105,11 +1126,12 @@ Certigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.',
'search-mwsuggest-disabled' => 'sen sugestoj',
'search-relatedarticle' => 'Relataj',
'mwsuggest-disable' => 'Malŝalti AJAX-sugestojn',
+'searcheverything-enable' => 'Traserĉi ĉiujn nomspacojn',
'searchrelated' => 'rilataj',
'searchall' => 'ĉiuj',
'showingresults' => "Montras {{PLURAL:$1|'''1''' trovitan|'''$1''' trovitajn}} ekde la #'''$2'''-a.",
'showingresultsnum' => "Montras {{PLURAL:$3|'''1''' trovitan|'''$3''' trovitajn}} ekde la #'''$2'''-a.",
-'showingresultstotal' => "Montras jene {{PLURAL:$4|rezulton '''$1''' el '''$3'''|rezultojn '''$1 - $2''' el '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezulto '''$1''' el '''$3'''|Rezultoj '''$1 – $2''' el '''$3'''}} por '''$4'''",
'nonefound' => "'''Notu''': Nur kelkaj nomspacoj estas serĉitaj defaulte.
Provu prefiksi vian mendon kun ''all:'' por serĉi ĉiun enhavon (inkluzivante diskuto-paĝojn, ŝablonojn, ktp), aŭ uzi la deziritan nomspacon kiel prefikson.",
'search-nonefound' => 'La serĉomendo rezultis kun neniuj trafoj.',
@@ -1118,114 +1140,151 @@ Provu prefiksi vian mendon kun ''all:'' por serĉi ĉiun enhavon (inkluzivante d
'powersearch-ns' => 'Serĉi en nomspacoj:',
'powersearch-redir' => 'Listigi alidirektilojn',
'powersearch-field' => 'Serĉi',
+'powersearch-togglelabel' => 'Kontroli:',
+'powersearch-toggleall' => 'Ĉio',
+'powersearch-togglenone' => 'Nenio',
'search-external' => 'Ekstera serĉo',
'searchdisabled' => '<p>Oni provizore malŝaltis serĉadon per la plenteksta
indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> aŭ per <i>jahu!</i>:</p>',
+# Quickbar
+'qbsettings' => 'Preferoj pri ilaro',
+'qbsettings-none' => 'Neniu',
+'qbsettings-fixedleft' => 'Fiksiĝas maldekstre',
+'qbsettings-fixedright' => 'Fiksiĝas dekstre',
+'qbsettings-floatingleft' => 'Ŝvebas maldekstre',
+'qbsettings-floatingright' => 'Ŝvebas dekstre',
+
# Preferences page
-'preferences' => 'Preferoj',
-'mypreferences' => 'Miaj preferoj',
-'prefs-edits' => 'Nombro de redaktoj:',
-'prefsnologin' => 'Ne jam salutis!',
-'prefsnologintext' => 'Vi devas esti <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ensalutita]</span> por fari viajn preferojn.',
-'prefsreset' => 'Preferoj reprenitaj el la registro.',
-'qbsettings' => 'Preferoj pri ilaro',
-'qbsettings-none' => 'Neniu',
-'qbsettings-fixedleft' => 'Fiksiĝas maldekstre',
-'qbsettings-fixedright' => 'Fiksiĝas dekstre',
-'qbsettings-floatingleft' => 'Ŝvebas maldekstre',
-'qbsettings-floatingright' => 'Ŝvebas dekstre',
-'changepassword' => 'Ŝanĝi pasvorton',
-'skin' => 'Etoso',
-'skin-preview' => 'Antaŭrigardo',
-'math' => 'Matematikaĵoj',
-'dateformat' => 'Datformato',
-'datedefault' => 'Nenia prefero',
-'datetime' => 'Dato kaj horo',
-'math_failure' => 'malsukcesis analizi formulon',
-'math_unknown_error' => 'nekonata eraro',
-'math_unknown_function' => 'nekonata funkcio',
-'math_lexing_error' => 'leksika analizo malsukcesis',
-'math_syntax_error' => 'sintakseraro',
-'math_image_error' => 'konverto al PNG malsukcesis',
-'math_bad_tmpdir' => 'Ne povas skribi al aŭ krei matematikian labor-dosierujon.',
-'math_bad_output' => 'Ne povas enskribi aŭ krei matematikan eligan dosierujon',
-'math_notexvc' => 'Programo texvc ne ekzistas; bonvolu vidi math/README por konfiguri.',
-'prefs-personal' => 'Datenoj pri uzanto',
-'prefs-rc' => 'Lastaj ŝanĝoj',
-'prefs-watchlist' => 'Atentaro',
-'prefs-watchlist-days' => 'Nombro de tagoj montri en la atentaro:',
-'prefs-watchlist-days-max' => '(maksimume 7 tagoj)',
-'prefs-watchlist-edits' => 'Maksimuma nombro de ŝanĝoj montrendaj en ekspandita atentaro:',
-'prefs-watchlist-edits-max' => '(maksimuma nombro: 1000)',
-'prefs-misc' => 'Miksitaĵoj',
-'prefs-resetpass' => 'Ŝanĝi pasvorton',
-'saveprefs' => 'Konservi preferojn',
-'resetprefs' => 'Forviŝi nekonservitajn ŝanĝojn',
-'restoreprefs' => 'Restarigi ĉiujn defaŭltajn preferojn',
-'textboxsize' => 'Grandeco de redakta tekstujo',
-'prefs-edit-boxsize' => 'Grandeco de la redakto-kesko.',
-'rows' => 'Linioj:',
-'columns' => 'Kolumnoj:',
-'searchresultshead' => 'Serĉi',
-'resultsperpage' => 'Montri trovitajn po',
-'contextlines' => 'Montri liniojn el paĝoj po:',
-'contextchars' => 'Montri literojn el linioj ĝis po:',
-'stub-threshold' => 'Ago-sojlo por formatigo de <a href="#" class="stub">ligil-ĝermo (anglalingve: "stub link")</a> (bitikoj):',
-'recentchangesdays' => 'Tagoj montrendaj en lastaj ŝanĝoj:',
-'recentchangesdays-max' => '(maksimume $1 {{PLURAL:$1|tago|tagoj}})',
-'recentchangescount' => "Nombro de redaktoj por montri en 'Lastaj ŝanĝoj', paĝaj historioj, kaj en protokoloj, laŭ defaŭlto:",
-'savedprefs' => 'Viaj preferoj estas konservitaj.',
-'timezonelegend' => 'Horzono:',
-'timezonetext' => 'Indiku je kiom da horoj via
-loka horzono malsamas disde tiu de la servilo (UTC).
-Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertempo.',
-'localtime' => 'Loka tempo:',
-'timezoneselect' => 'Horzono:',
-'timezoneuseserverdefault' => 'Uzi defaŭlton de servilo',
-'timezoneuseoffset' => 'Alia (Enigu diferencon)',
-'timezoneoffset' => 'Diferenco¹:',
-'servertime' => 'Servila tempo:',
-'guesstimezone' => 'Plenigita el la foliumilo',
-'timezoneregion-africa' => 'Afriko',
-'timezoneregion-america' => 'Ameriko',
-'timezoneregion-antarctica' => 'Antarkto',
-'timezoneregion-arctic' => 'Arkto',
-'timezoneregion-asia' => 'Azio',
-'timezoneregion-atlantic' => 'Atlantiko',
-'timezoneregion-australia' => 'Aŭstralio',
-'timezoneregion-europe' => 'Eŭropo',
-'timezoneregion-indian' => 'Hinda Oceano',
-'timezoneregion-pacific' => 'Pacifiko',
-'allowemail' => 'Rajtigi retmesaĝojn de aliaj uzantoj',
-'prefs-searchoptions' => 'Serĉaj opcioj',
-'prefs-namespaces' => 'Nomspacoj',
-'defaultns' => 'Traserĉi la jenajn nomspacojn:',
-'default' => 'defaŭlte',
-'files' => 'Dosieroj',
-'prefs-custom-css' => 'Propra CSS',
-'prefs-custom-js' => 'Propra JS',
+'preferences' => 'Preferoj',
+'mypreferences' => 'Miaj preferoj',
+'prefs-edits' => 'Nombro de redaktoj:',
+'prefsnologin' => 'Ne jam salutis!',
+'prefsnologintext' => 'Vi devas esti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ensalutita]</span> por fari viajn preferojn.',
+'changepassword' => 'Ŝanĝi pasvorton',
+'prefs-skin' => 'Etoso',
+'skin-preview' => 'Antaŭrigardo',
+'prefs-math' => 'Matematikaĵoj',
+'datedefault' => 'Nenia prefero',
+'prefs-datetime' => 'Dato kaj horo',
+'prefs-personal' => 'Datenoj pri uzanto',
+'prefs-rc' => 'Lastaj ŝanĝoj',
+'prefs-watchlist' => 'Atentaro',
+'prefs-watchlist-days' => 'Nombro de tagoj montri en la atentaro:',
+'prefs-watchlist-days-max' => '(maksimume 7 tagoj)',
+'prefs-watchlist-edits' => 'Maksimuma nombro de ŝanĝoj montrendaj en ekspandita atentaro:',
+'prefs-watchlist-edits-max' => '(maksimuma nombro: 1000)',
+'prefs-watchlist-token' => 'Atentara ĵetono:',
+'prefs-misc' => 'Miksitaĵoj',
+'prefs-resetpass' => 'Ŝanĝi pasvorton',
+'prefs-email' => 'Retpoŝtaj opcioj',
+'prefs-rendering' => 'Aspekto',
+'saveprefs' => 'Konservi preferojn',
+'resetprefs' => 'Forviŝi nekonservitajn ŝanĝojn',
+'restoreprefs' => 'Restarigi ĉiujn defaŭltajn preferojn',
+'prefs-editing' => 'Grandeco de redakta tekstujo',
+'prefs-edit-boxsize' => 'Grandeco de la redakto-kesko.',
+'rows' => 'Linioj:',
+'columns' => 'Kolumnoj:',
+'searchresultshead' => 'Serĉi',
+'resultsperpage' => 'Montri trovitajn po',
+'contextlines' => 'Montri liniojn el paĝoj po:',
+'contextchars' => 'Montri literojn el linioj ĝis po:',
+'stub-threshold' => 'Ago-sojlo por formatigo de <a href="#" class="stub">ligil-ĝermo (anglalingve: "stub link")</a> (bitikoj):',
+'recentchangesdays' => 'Tagoj montrendaj en lastaj ŝanĝoj:',
+'recentchangesdays-max' => '(maksimume $1 {{PLURAL:$1|tago|tagoj}})',
+'recentchangescount' => 'Nombro de redaktoj por montri defaŭlte:',
+'prefs-help-recentchangescount' => 'Ĉi tiu inkluzivas lastajn ŝanĝojn, paĝajn historiojn, kaj protokolojn.',
+'prefs-help-watchlist-token' => 'Plenigo de ĉi tiu kampo kun sekreta ŝlosilo generos RSS-fonton por via atentaro.
+Iu kiu konas la ŝlosilon en ĉi tiu kampo povos legi vian atentaron, do bonvolu elekti sekuran valoron.
+Jen hazarde generita valoro por via uzo: $1',
+'savedprefs' => 'Viaj preferoj estas konservitaj.',
+'timezonelegend' => 'Horzono:',
+'localtime' => 'Loka tempo:',
+'timezoneuseserverdefault' => 'Uzi defaŭlton de servilo',
+'timezoneuseoffset' => 'Alia (Enigu diferencon)',
+'timezoneoffset' => 'Diferenco¹:',
+'servertime' => 'Servila tempo:',
+'guesstimezone' => 'Plenigita el la foliumilo',
+'timezoneregion-africa' => 'Afriko',
+'timezoneregion-america' => 'Ameriko',
+'timezoneregion-antarctica' => 'Antarkto',
+'timezoneregion-arctic' => 'Arkto',
+'timezoneregion-asia' => 'Azio',
+'timezoneregion-atlantic' => 'Atlantiko',
+'timezoneregion-australia' => 'Aŭstralio',
+'timezoneregion-europe' => 'Eŭropo',
+'timezoneregion-indian' => 'Hinda Oceano',
+'timezoneregion-pacific' => 'Pacifiko',
+'allowemail' => 'Rajtigi retmesaĝojn de aliaj uzantoj',
+'prefs-searchoptions' => 'Serĉaj opcioj',
+'prefs-namespaces' => 'Nomspacoj',
+'defaultns' => 'Alimaniere, traserĉi la jenajn nomspacojn:',
+'default' => 'defaŭlte',
+'prefs-files' => 'Dosieroj',
+'prefs-custom-css' => 'Propra CSS',
+'prefs-custom-js' => 'Propra JS',
+'prefs-reset-intro' => 'Vi povas uzi ĉi tiun paĝon por restarigi viajn agordojn al la originalaj defaŭltoj.
+Ĉi tiel ne estus malfarebla.',
+'prefs-emailconfirm-label' => 'Retpoŝta konfirmado:',
+'prefs-textboxsize' => 'Grandeco de redakta fenestro',
+'youremail' => 'Retadreso:',
+'username' => 'Salutnomo:',
+'uid' => 'Uzantnumero:',
+'prefs-memberingroups' => 'Ano de {{PLURAL:$1|grupo|grupoj}}:',
+'prefs-registration' => 'Tempo de registrado:',
+'yourrealname' => 'Vera nomo:',
+'yourlanguage' => 'Lingvo',
+'yourvariant' => 'Varianto',
+'yournick' => 'Subskribo:',
+'prefs-help-signature' => 'Komentoj en diskuto-paĝoj estu subskribita kun "<nowiki>~~~~</nowiki>" kiu estos konvertita al via subskribo kaj tempindiko.',
+'badsig' => 'Via kaŝnomo (por subskriboj) malvalidas. Bv. kontroli la HTML-etikedojn!',
+'badsiglength' => 'La subskribo estas tro longa.
+Ĝi devas esti sub $1 {{PLURAL:$1|signo|signoj}}.',
+'yourgender' => 'Sekso:',
+'gender-unknown' => 'Nespecifita',
+'gender-male' => 'Vira',
+'gender-female' => 'Ina',
+'prefs-help-gender' => 'Nedeviga: uzita por sekseca salutado de la programaro. Ĉi tiu informo estos publika.',
+'email' => 'Retadreso',
+'prefs-help-realname' => '* Vera nomo (opcia): se vi elektas sciigi ĝin, ĝi estos uzita por aŭtorigi vin pri viaj kontribuoj.',
+'prefs-help-email' => 'Retadreso estas nedeviga, sed permesus por via pasvorto esti retpoŝtita al vi se vi forgesus ĝin.
+Vi povas ankaŭ elekti permesigi aliaj uzantoj kontakti vin per via uzanto-paĝo aŭ diskuto-paĝo sen malkaŝante vian identeco.',
+'prefs-help-email-required' => 'Ret-adreso estas bezonata.',
+'prefs-info' => 'Baza informo',
+'prefs-i18n' => 'Internaciigo',
+'prefs-signature' => 'Subskribo',
+'prefs-dateformat' => 'Data formato',
+'prefs-timeoffset' => 'Tempa deŝovo',
+'prefs-advancedediting' => 'Progresaj opcioj',
+'prefs-advancedrc' => 'Progresaj opcioj',
+'prefs-advancedrendering' => 'Progresaj opcioj',
+'prefs-advancedsearchoptions' => 'Progresaj opcioj',
+'prefs-advancedwatchlist' => 'Progresaj opcioj',
+'prefs-display' => 'Montraj opcioj',
+'prefs-diffs' => 'Diferencoj',
# User rights
-'userrights' => 'Prizorgi rajtojn de uzantoj', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administri grupojn de uzantoj',
-'userrights-user-editname' => 'Entajpu salutnomon:',
-'editusergroup' => 'Redakti grupojn de uzantoj',
-'editinguser' => "Redaktante uzanto-rajtojn de uzanto '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Redakti grupojn de uzantoj',
-'saveusergroups' => 'Konservi grupojn de uzantoj',
-'userrights-groupsmember' => 'Membro de:',
-'userrights-groups-help' => 'Vi povas modifi la grupojn kiun ĉi uzanto enestas.
+'userrights' => 'Prizorgi rajtojn de uzantoj',
+'userrights-lookup-user' => 'Administri grupojn de uzantoj',
+'userrights-user-editname' => 'Entajpu salutnomon:',
+'editusergroup' => 'Redakti grupojn de uzantoj',
+'editinguser' => "Redaktante uzanto-rajtojn de uzanto '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Redakti grupojn de uzantoj',
+'saveusergroups' => 'Konservi grupojn de uzantoj',
+'userrights-groupsmember' => 'Membro de:',
+'userrights-groupsmember-auto' => 'Implica membro de:',
+'userrights-groups-help' => 'Vi povas modifi la grupojn kiun ĉi uzanto enestas.
* Markita markbutono signifas ke la uzanto estas en tiu grupo.
* Nemarkita markbutono signifas ke la uzanto ne estas in tiu grupo.
* Steleto (*) signifas ke vi ne povas forigi la grupon post vi aldonis ĝin, aŭ male.',
-'userrights-reason' => 'Kialo:',
-'userrights-no-interwiki' => 'Vi ne rajtas redakti uzanto-rajtojn en aliaj vikioj.',
-'userrights-nodatabase' => 'Datumbazo $1 ne ekzistas aŭ ne estas loka.',
-'userrights-nologin' => 'Vi nepre [[Special:UserLogin|ensalutu]] kun administranto-konto doni uzanto-rajtojn.',
-'userrights-notallowed' => 'Via konto ne rajtas doni uzanto-rajtojn.',
-'userrights-changeable-col' => 'Grupoj kiujn vi povas ŝanĝi',
-'userrights-unchangeable-col' => 'Grupoj kiujn vi ne povas ŝanĝi',
+'userrights-reason' => 'Kialo:',
+'userrights-no-interwiki' => 'Vi ne rajtas redakti uzanto-rajtojn en aliaj vikioj.',
+'userrights-nodatabase' => 'Datumbazo $1 ne ekzistas aŭ ne estas loka.',
+'userrights-nologin' => 'Vi nepre [[Special:UserLogin|ensalutu]] kun administranto-konto doni uzanto-rajtojn.',
+'userrights-notallowed' => 'Via konto ne rajtas doni uzanto-rajtojn.',
+'userrights-changeable-col' => 'Grupoj kiujn vi povas ŝanĝi',
+'userrights-unchangeable-col' => 'Grupoj kiujn vi ne povas ŝanĝi',
# Groups
'group' => 'Grupo:',
@@ -1278,6 +1337,7 @@ Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertemp
'right-bigdelete' => 'Forigi paĝojn kun grandaj historioj',
'right-deleterevision' => 'Forigi kaj malforigi specifajn versiojn de paĝoj',
'right-deletedhistory' => 'Rigardi listanojn de forigitaj historioj, sen ties asociaj tekstoj',
+'right-deletedtext' => 'Rigardi forigitan tekston kaj ŝanĝojn inter forigitaj revizioj.',
'right-browsearchive' => 'Serĉi forigitajn paĝojn',
'right-undelete' => 'Restarigi paĝon',
'right-suppressrevision' => 'Kontroli kaj restarigi versiojn kaŝitajn de administrantoj',
@@ -1291,6 +1351,8 @@ Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertemp
'right-editprotected' => 'Redakti protektitajn paĝojn (sen kaskada protektado)',
'right-editinterface' => 'Redakti la uzulan interfacon',
'right-editusercssjs' => 'Redaktu CSS- kaj JS-dosierojn de aliaj uzantoj',
+'right-editusercss' => 'Redaktu CSS-dosierojn de aliaj uzantoj',
+'right-edituserjs' => 'Redaktu JS-dosierojn de aliaj uzantoj',
'right-rollback' => 'Tuj malfari la redaktojn de la lasta uzanto kiu redaktis specifan paĝon',
'right-markbotedits' => 'Marki restarigitajn redaktojn kiel robotajn redaktojn',
'right-noratelimit' => 'Ne influita de po-limoj',
@@ -1307,6 +1369,8 @@ Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertemp
'right-siteadmin' => 'Ŝlosi kaj malŝlosi la datumbazon',
'right-reset-passwords' => 'Reŝanĝi pasvortojn de aliaj uzantoj',
'right-override-export-depth' => 'Eksporti paĝojn inkluzivante ligitajn paĝojn ĝis profundeco de 5',
+'right-versiondetail' => 'Montri la informon pri la etendita programara versio',
+'right-sendemail' => 'Sendi retpoŝton al aliaj uzantoj',
# User rights log
'rightslog' => 'Protokolo de uzanto-rajtoj',
@@ -1356,6 +1420,15 @@ Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertemp
'recentchanges-legend' => 'Opcioj pri lastaj ŝanĝoj',
'recentchangestext' => 'Sekvi la plej lastajn ŝanĝojn en la {{SITENAME}} per ĉi tiu paĝo.',
'recentchanges-feed-description' => 'Sekvi la plej lastatempajn ŝanĝojn al la vikio en ĉi tiu fonto.',
+'recentchanges-label-legend' => 'Klarigeto: $1.',
+'recentchanges-legend-newpage' => '$1 - nova paĝo',
+'recentchanges-label-newpage' => 'Ĉi tiu redakto kreis novan paĝon',
+'recentchanges-legend-minor' => '$1 - eta redakto',
+'recentchanges-label-minor' => 'Ĉi tiu estas eta redakto',
+'recentchanges-legend-bot' => '$1 - robota redakto',
+'recentchanges-label-bot' => 'Ĉi tiu redakto estis farita per roboto.',
+'recentchanges-legend-unpatrolled' => '$1 - nepatrolita redakto',
+'recentchanges-label-unpatrolled' => 'Ĉi tiu redakto ne jam estis patrolata.',
'rcnote' => "Jen la {{PLURAL:$1|lasta '''1''' ŝanĝo|lastaj '''$1''' ŝanĝoj}} dum la {{PLURAL:$2|lasta tago|lastaj '''$2''' tagoj}}, ekde $5, $4.",
'rcnotefrom' => "Jen la ŝanĝoj ekde '''$2''' (lastaj ĝis '''$1''').",
'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
@@ -1382,6 +1455,8 @@ Ekzemple, por la Centra Eŭropa Horzono, indiku "1" vintre aŭ "2" dum somertemp
# Recent changes linked
'recentchangeslinked' => 'Rilataj paĝoj',
+'recentchangeslinked-feed' => 'Rilataj paĝoj',
+'recentchangeslinked-toolbox' => 'Rilataj paĝoj',
'recentchangeslinked-title' => 'Ŝanĝoj rilataj al "$1"',
'recentchangeslinked-noresult' => 'Neniuj ŝanĝoj en ligitaj paĝoj dum la donata periodo.',
'recentchangeslinked-summary' => "Jen listo de ŝanĝoj faritaj lastatempe al paĝoj ligitaj el specifa paĝo (aŭ al membroj de specifa kategorio).
@@ -1392,8 +1467,8 @@ Paĝoj en [[Special:Watchlist|via atentaro]] estas '''grasaj'''.",
# Upload
'upload' => 'Alŝuti dosieron',
'uploadbtn' => 'Alŝuti dosieron',
-'reupload' => 'Realŝuti',
'reuploaddesc' => 'Reveni al la alŝuta formularo.',
+'upload-tryagain' => 'Enigi ŝanĝitan dosieran priskribon',
'uploadnologin' => 'Ne ensalutinta',
'uploadnologintext' => 'Se vi volas alŝuti dosierojn, vi devas [[Special:UserLogin|ensaluti]].',
'upload_directory_missing' => 'La alŝuta dosierujo ($1) estas nek trovebla nek kreebla de la retservilo.',
@@ -1426,6 +1501,7 @@ Por inkluzivi la dosieron en paĝon, skribu ligilon laŭ la formoj
'minlength1' => 'Nomoj de dosieroj nepre havas almenaŭ unu literon.',
'illegalfilename' => 'La dosiernomo $1 entenas karaktrojn kiuj ne estas permesitaj en paĝaj titoloj. Bonvolu renomi la dosieron kaj provu denove alŝuti ĝin.',
'badfilename' => 'Dosiernomo estis ŝanĝita al "$1".',
+'filetype-mime-mismatch' => 'Dosiera sufikso ne kongruas MIME-tipon.',
'filetype-badmime' => 'Dosieroj de la MIME-tipo "$1" ne estas permesitaj por alŝutado.',
'filetype-bad-ie-mime' => 'Ne povas alŝuti ĉi tiun dosieron, ĉar Interreta Esplorilo detektus ĝin kiel "$1", kiu estas malpermesita kaj eble danĝera dosiertipo.',
'filetype-unwanted-type' => "'''\".\$1\"''' estas nevolata dosiero-tipo. {{PLURAL:\$3|Preferata dosiero-tipo|Prefereataj dosiero-tipoj}} estas \$2.",
@@ -1446,7 +1522,6 @@ Por aperigi vian resumon, vi devos permane redakti ĝin.
* Nomo de la alŝuta dosiero: '''<tt>[[:$1]]</tt>'''
* Nomo de la ekzistanta dosiero: '''<tt>[[:$2]]</tt>'''
Bonvolu elekti malsaman nomon.",
-'fileexists-thumb' => "<center>'''Ekzistanta bildo'''</center>",
'fileexists-thumbnail-yes' => "Ĉi tiu dosiero ŝajnas kiel bildo de malkreskigita grandeco ''(bildeto)''. [[$1|thumb]]
Bonvolu kontroli la dosieron '''<tt>[[:$1]]</tt>'''.
Se la kontrolita dosiero estas la sama bildo kiel la originala grandeco, ĝi ne nepras alŝuti plian bideton.",
@@ -1462,6 +1537,7 @@ Se vi ankoraŭ volas alŝuti vian dosieron, bonvolu retroigi kaj uzi novan nomon
'file-deleted-duplicate' => 'Duplikata dosiero de ĉi tiu dosiero ([[$1]]) estis antaŭe forigita. Vi legu la forigan historion de tiu dosiero antaŭ provi realŝuti ĝin.',
'successfulupload' => 'Alŝuto sukcesis!',
'uploadwarning' => 'Alŝuta averto',
+'uploadwarning-text' => 'Bonvolu ŝanĝi la dosieran priskribon kaj reprovi.',
'savefile' => 'Konservi dosieron',
'uploadedimage' => 'alŝutis "[[$1]]"',
'overwroteimage' => 'alŝutis novan version de "[[$1]]"',
@@ -1469,11 +1545,14 @@ Se vi ankoraŭ volas alŝuti vian dosieron, bonvolu retroigi kaj uzi novan nomon
'uploaddisabledtext' => 'Alŝutado de dosieroj estas malebligita.',
'php-uploaddisabledtext' => 'Dosiera alŝutado estas malŝalta en PHP. Bonvolu kontroli la preferon file_uploads.',
'uploadscripted' => 'HTML-aĵo aŭ skriptokodaĵo troviĝas en tiu ĉi tiu dosiero, kiun TTT-foliumilo eble interpretus erare.',
-'uploadcorrupt' => 'La dosiero estas difektita aŭ havas malĝustan finaĵon. Bonvolu kontroli la dosieron kaj refoje alŝuti ĝin.',
'uploadvirus' => 'Viruso troviĝas en la dosiero! Detaloj: $1',
+'upload-source' => 'Fonta dosiero:',
'sourcefilename' => 'Fonta dosiernomo:',
+'sourceurl' => 'Fonta URL-o:',
'destfilename' => 'Celdosiernomo:',
'upload-maxfilesize' => 'Maksimuma dosier-pezo: $1',
+'upload-description' => 'Dosiera priskribo',
+'upload-options' => 'Alŝutaj agordoj',
'watchthisupload' => 'Atenti ĉi tiun dosieron',
'filewasdeleted' => 'Dosiero de ĉi nomo estis antaŭe alŝutita kaj poste redaktita. Vi kontrolu la $1 antaux alŝutante ĝin denove.',
'upload-wasdeleted' => "'''Averto: Vi alŝutas dosieron kiu estis antaŭe forigita.'''
@@ -1482,14 +1561,45 @@ Vi konsideru ĉu taŭgas alŝuti ĉi tiu dosiero.
jen la protokolo pri forigado por ĉi tiu dosiero por via oportuneco:",
'filename-bad-prefix' => "La nomo de la dosiero kiun vi alŝutas komencas kun '''\"\$1\"''', kiu estas nepriskriba nomo ofte aŭtomate donata de ciferecaj fotiloj. Bonvolu elekti pli priskriban nomon por via bildo.",
-'upload-proto-error' => 'Malvalida protokolo',
-'upload-proto-error-text' => 'Fora alŝuto devas URL-on komence de <code>http://</code> aŭ <code>ftp://</code>.',
-'upload-file-error' => 'Interna eraro',
-'upload-file-error-text' => 'Interna eraro okazis provante krei labordosieron ĉe la servilo. Bonvolu kontakti [[Special:ListUsers/sysop|sistem-administranton]].',
-'upload-misc-error' => 'Nekonata eraro pri alŝutado.',
-'upload-misc-error-text' => 'Nekonata eraro okazis dum la alŝuto.
+'upload-proto-error' => 'Malvalida protokolo',
+'upload-proto-error-text' => 'Fora alŝuto devas URL-on komence de <code>http://</code> aŭ <code>ftp://</code>.',
+'upload-file-error' => 'Interna eraro',
+'upload-file-error-text' => 'Interna eraro okazis provante krei labordosieron ĉe la servilo. Bonvolu kontakti [[Special:ListUsers/sysop|sistem-administranton]].',
+'upload-misc-error' => 'Nekonata eraro pri alŝutado.',
+'upload-misc-error-text' => 'Nekonata eraro okazis dum la alŝuto.
Bonvolu kontroli ke la URL-o estas valida kaj atingebla tiam reprovu.
Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|sisteman administranton]].',
+'upload-too-many-redirects' => 'La URL-o enhavis tro multajn alidirektilojn',
+'upload-unknown-size' => 'Nekonata grandeco',
+'upload-http-error' => 'HTTP-eraro okazis: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Atingo malpermisita',
+'img-auth-nopathinfo' => 'Mankas PATH_INFO. (Informo pri dosiervojo.)
+Via servilo ne estas konfigurita por sendi ĉi tiun informon.
+Eble ĝi estas CGI-bazita kaj ne subtenas img_auth.
+Vidu http://www.mediawiki.org/wiki/Manual:Image_Authorization. (angle)',
+'img-auth-notindir' => 'Petita vojo ne estas en la konfigurita alŝuta dosierujo.',
+'img-auth-badtitle' => 'Ne povas konstrui validan titolon de "$1".',
+'img-auth-nologinnWL' => 'Vi ne estas ensalutita kaj "$1" ne estas en la blankalisto.',
+'img-auth-nofile' => 'Dosiero "$1" ne ekzistas.',
+'img-auth-isdir' => 'Vi provas atingi dosierujon "$1".
+Nur dosiera atingo estas permesita.',
+'img-auth-streaming' => 'Elsendfluante "$1".',
+'img-auth-public' => 'La funkcio de img_auth.php estas eligi dosierojn de privata vikio.
+Ĉi tiu vikio estas konfigurita kiel publika vikio.
+Por optimuma sekureco, img_auth.php estas malŝalta.',
+'img-auth-noread' => 'Uzanto ne havas atingon por legi "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Malvalida URL-o: $1',
+'http-invalid-scheme' => 'URL-oj kun la skemo "$1" ne estas subtenata.',
+'http-request-error' => 'HTTP-peto malsukcesis pro nekonata eraro.',
+'http-read-error' => 'HTTP-legeraro.',
+'http-timed-out' => 'HTTP-peto eltempiĝis.',
+'http-curl-error' => 'Eraro venigante URL-on: $1',
+'http-host-unreachable' => 'URL-o ne estis atingebla.',
+'http-bad-status' => 'Estis problemo dum la HTTP-peto: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-o ne estis atingebla',
@@ -1498,6 +1608,7 @@ Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|sisteman administran
'upload-curl-error28-text' => 'La retejo atendas tro sen respondo. Bonvolu verigi ke la retejo ankoraŭ funkcias kaj reprovi. Vi eble volus trovi dum malpli okupa tempo.',
'license' => 'Licencado:',
+'license-header' => 'Licencado:',
'nolicense' => 'Neniu elektita',
'license-nopreview' => '(Antaŭvido ne montrebla)',
'upload_source_url' => ' (valida, publike atingebla URL-o)',
@@ -1518,6 +1629,7 @@ Klaku la kolumnan titolon por ŝanĝi la direkton de ordigo.',
'listfiles_count' => 'Versioj',
# File description page
+'file-anchor-link' => 'Dosiero',
'filehist' => 'Historio de dosiero',
'filehist-help' => 'Klaku daton/tempon por rigardi la dosieron kiel ĝin ŝajnitan tiame.',
'filehist-deleteall' => 'forigi ĉiujn',
@@ -1532,6 +1644,7 @@ Klaku la kolumnan titolon por ŝanĝi la direkton de ordigo.',
'filehist-dimensions' => 'Dimensioj',
'filehist-filesize' => 'Pezo de dosiero',
'filehist-comment' => 'Komento',
+'filehist-missing' => 'Dosiero mankas',
'imagelinks' => 'Dosieraj ligiloj',
'linkstoimage' => 'La {{PLURAL:$1|jena paĝo|jenaj paĝoj}} ligas al ĉi tiu dosiero:',
'linkstoimage-more' => 'Pli ol $1 {{PLURAL:$1|paĝo|paĝoj}} ligas ĉi tiun dosieron.
@@ -1541,15 +1654,16 @@ La jena listo montras la {{PLURAL:$1|unua paĝligilo|unuaj $1 paĝligiloj}} al n
'morelinkstoimage' => 'Rigardi [[Special:WhatLinksHere/$1|pliajn ligilojn]] al ĉi tiu dosiero.',
'redirectstofile' => 'Jen {{PLURAL:$1|dosiero liganta|dosieroj ligantaj}} al ĉi tiu dosiero:',
'duplicatesoffile' => 'La {{PLURAL:$1|jena dosiero estas duplikato|jenaj dosieroj estas duplikatoj}} de ĉi tiu dosiero ([[Special:FileDuplicateSearch/$2|pluaj detaloj]]):',
-'sharedupload' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla de aliaj projektoj.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Bonvolu vidi la $1 por plua informo.',
-'shareduploadwiki-desc' => 'Jen la priskribo de ties $1 sube.',
-'shareduploadwiki-linktext' => 'paĝon pri dosiera priskribo',
-'noimage' => 'Neniu dosiero de ĉi tiu nomo ekzistas, sed vi povas $1.',
-'noimage-linktext' => 'alŝuti unu',
+'sharedupload' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla de aliaj projektoj.',
+'sharedupload-desc-there' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla en aliaj projektoj.
+Bonvolu vidi la [$2 dosier-priskriban paĝon] por plua informo.',
+'sharedupload-desc-here' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla de aliaj projektoj.
+Jen la priskribo en ties [$2 dosier-priskriba paĝo].',
+'filepage-nofile' => 'Neniu dosiero de ĉi tiu nomo ekzistas.',
+'filepage-nofile-link' => 'Neniu dosiero de ĉi tiu nomo ekzistas, sed vi povas [$1 alŝuti ĝin].',
'uploadnewversion-linktext' => 'Alŝuti novan version de ĉi tiu dosiero',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'komuna dosierujo', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'komuna dosierujo',
# File reversion
'filerevert' => 'Restarigi $1',
@@ -1578,6 +1692,7 @@ La jena listo montras la {{PLURAL:$1|unua paĝligilo|unuaj $1 paĝligiloj}} al n
** Malobservo de kopirajto
** Duplikata dosiero',
'filedelete-edit-reasonlist' => 'Redakti kialojn por forigo',
+'filedelete-maintenance' => 'Forigado kaj restarigado de dosieroj provizore malŝaltis dum funkciteno.',
# MIME search
'mimesearch' => 'MIME-serĉilo',
@@ -1599,7 +1714,7 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
# Random page
'randompage' => 'Hazarda paĝo',
-'randompage-nopages' => 'Ne ekzistas paĝoj en la nomspaco "$1".',
+'randompage-nopages' => 'Ne ekzistas paĝoj en la {{PLURAL:$2|nomspaco|nomspacoj}}: "$1".',
# Random redirect
'randomredirect' => 'Hazarda alidirekto',
@@ -1611,6 +1726,7 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
'statistics-header-edits' => 'Redaktaj statistikoj',
'statistics-header-views' => 'Vidi statistikojn',
'statistics-header-users' => 'Pri la uzantaro',
+'statistics-header-hooks' => 'Aliaj statistikoj',
'statistics-articles' => 'Enhavaj paĝoj',
'statistics-pages' => 'Paĝoj',
'statistics-pages-desc' => 'Ĉiuj paĝoj en la vikio, inkluzivante diskuto-paĝojn, alidirektilojn, ktp.',
@@ -1640,8 +1756,8 @@ Paĝo estas traktata kiel apartigilo se ĝi uzas ŝablonon kiu estas ligita de [
'brokenredirects' => 'Rompitaj alidirektadoj',
'brokenredirectstext' => 'La jenaj alidirektadoj ligas al neekzistantaj paĝoj:',
-'brokenredirects-edit' => '(redakti)',
-'brokenredirects-delete' => '(forigi)',
+'brokenredirects-edit' => 'redakti',
+'brokenredirects-delete' => 'forigi',
'withoutinterwiki' => 'Paĝoj sen lingvaj ligiloj',
'withoutinterwiki-summary' => 'Jenaj paĝoj ne ligas al aliaj lingvoversioj:',
@@ -1751,7 +1867,7 @@ Vi povas plistrikti la mendon per selektado de protokola speco, la salutnomo (in
# Special:Categories
'categories' => 'Kategorioj',
-'categoriespagetext' => 'La jenaj kategorioj ekzistas jam en la vikio.
+'categoriespagetext' => 'La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.
[[Special:UnusedCategories|Neuzataj kategorioj]] ne estis montrataj ĉi tie.
Vidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].',
'categoriesfrom' => 'Montri kategoriojn komencante de:',
@@ -1759,8 +1875,9 @@ Vidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].',
'special-categories-sort-abc' => 'ordigi laŭ alfabeto',
# Special:DeletedContributions
-'deletedcontributions' => 'Forigitaj kontribuoj de uzantoj',
-'deletedcontributions-title' => 'Forigitaj kontribuoj de uzantoj',
+'deletedcontributions' => 'Forigitaj kontribuoj de uzantoj',
+'deletedcontributions-title' => 'Forigitaj kontribuoj de uzantoj',
+'sp-deletedcontributions-contribs' => 'kontribuoj',
# Special:LinkSearch
'linksearch' => 'Eksteraj ligiloj',
@@ -1775,6 +1892,16 @@ Vidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].',
'listusersfrom' => 'Montri uzantojn ekde:',
'listusers-submit' => 'Montri',
'listusers-noresult' => 'Neniu uzanto trovita.',
+'listusers-blocked' => '(forbarita)',
+
+# Special:ActiveUsers
+'activeusers' => 'Listo de aktivaj uzantoj',
+'activeusers-intro' => 'Jen listo de uzantoj kiu faris iom da agoj dum la lastaj $1 {{PLURAL:$1|tago|tagoj}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|lasta redakto|lastaj redaktoj}} dum la {{PLURAL:$3|lasta tago|lastaj $3 tagoj}}',
+'activeusers-from' => 'Montri uzantojn ekde:',
+'activeusers-hidebots' => 'kaŝi robotojn',
+'activeusers-hidesysops' => 'Kaŝi administrantojn',
+'activeusers-noresult' => 'Neniuj uzantoj trovitaj.',
# Special:Log/newusers
'newuserlogpage' => 'Protokolo de uzanto-kreado',
@@ -1785,17 +1912,23 @@ Vidu ankaŭ [[Special:WantedCategories|Dezirataj kategorioj]].',
'newuserlog-autocreate-entry' => 'Konto kreita aŭtomate',
# Special:ListGroupRights
-'listgrouprights' => 'Gruprajtoj de uzantoj',
-'listgrouprights-summary' => 'Jen listo de uzanto-grupoj difinitaj en ĉi tiu vikio, kun ties asociaj atingrajtoj.
+'listgrouprights' => 'Gruprajtoj de uzantoj',
+'listgrouprights-summary' => 'Jen listo de uzanto-grupoj difinitaj en ĉi tiu vikio, kun ties asociaj atingrajtoj.
Estas [[{{MediaWiki:Listgrouprights-helppage}}|aldona informo]] pri individuaj rajtoj.',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Rajtoj',
-'listgrouprights-helppage' => 'Help:Grupaj rajtoj',
-'listgrouprights-members' => '(listo de anoj)',
-'listgrouprights-addgroup' => 'Povi aldoni {{PLURAL:$2|grupon|grupojn}}: $1',
-'listgrouprights-removegroup' => 'Povi forigi {{PLURAL:$2|grupon|grupojn}}: $1',
-'listgrouprights-addgroup-all' => 'Povi aldoni ĉiujn grupojn',
-'listgrouprights-removegroup-all' => 'Povi forigi ĉiujn grupojn',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Donita rajto</span>
+* <span class="listgrouprights-revoked">Maldonita rajto</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Rajtoj',
+'listgrouprights-helppage' => 'Help:Grupaj rajtoj',
+'listgrouprights-members' => '(listo de anoj)',
+'listgrouprights-addgroup' => 'Povi aldoni {{PLURAL:$2|grupon|grupojn}}: $1',
+'listgrouprights-removegroup' => 'Povi forigi {{PLURAL:$2|grupon|grupojn}}: $1',
+'listgrouprights-addgroup-all' => 'Povi aldoni ĉiujn grupojn',
+'listgrouprights-removegroup-all' => 'Povi forigi ĉiujn grupojn',
+'listgrouprights-addgroup-self' => 'Povas aldoni {{PLURAL:$2|grupon|grupojn}} al propra konto: $1',
+'listgrouprights-removegroup-self' => 'Povas forigi {{PLURAL:$2|grupon|grupojn}} de propra konto: $1',
+'listgrouprights-addgroup-self-all' => 'Povas aldoni ĉiujn grupojn al propra konto',
+'listgrouprights-removegroup-self-all' => 'Povas forigi ĉiujn grupojn de propra konto',
# E-mail user
'mailnologin' => 'Neniu alsendota adreso',
@@ -1868,25 +2001,28 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
'enotif_anon_editor' => 'anonima uzanto $1',
'enotif_body' => 'Kara $WATCHINGUSERNAME,
-La paĝo $PAGETITLE de {{SITENAME}} estis $CHANGEDORCREATED je $PAGEEDITDATE de $PAGEEDITOR, vidu $PAGETITLE_URL por la nuna versio.
+La paĝo $PAGETITLE de {{SITENAME}} estis $CHANGEDORCREATED je $PAGEEDITDATE de $PAGEEDITOR; vidu $PAGETITLE_URL por la nuna revizio.
$NEWPAGE
-Redakta resumo: $PAGESUMMARY $PAGEMINOREDIT
+Resumo pri la ŝanĝo de la redaktinto: $PAGESUMMARY $PAGEMINOREDIT
Kontaktu la redaktinton:
retpoŝte: $PAGEEDITOR_EMAIL
vikie: $PAGEEDITOR_WIKI
-Ne estos aliaj avertoj kaze de sekvaj ŝanĝoj krom se vi vizitas la paĝon. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
+Ne estos aliaj avertoj kaze de sekvaj ŝanĝoj krom se vi vizitus la paĝon. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
Sincere via, la avertsistemo de {{SITENAME}}
--
-Por ŝanĝi la elektojn de via atentaro, bv viziti
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Por ŝanĝi la elektojn de via atentaro, bonvolu viziti
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Por forigi la paĝon el via atentaro, bonvolu viziti
+$UNWATCHURL
-Reagoj kaj plia helpo:
+Por viaj reagoj kaj por obteni plian helpon:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1898,9 +2034,10 @@ Reagoj kaj plia helpo:
'exblank' => 'estis malplena',
'delete-confirm' => 'Forigi "$1"',
'delete-legend' => 'Forigi',
-'historywarning' => 'Averto: la forigota paĝo havas historion:',
+'historywarning' => "'''Averto:''' La forigota paĝo havas historion kun pli-malpli $1 {{PLURAL:$1|revizio|revizioj}}:",
'confirmdeletetext' => 'Vi forigos la artikolon aŭ dosieron kaj forviŝos ĝian tutan historion el la datumaro.<br /> Bonvolu konfirmi, ke vi vere intencas tion, kaj ke vi komprenas la sekvojn, kaj ke vi ja sekvas la [[{{MediaWiki:Policy-url}}|regulojn pri forigado]].',
'actioncomplete' => 'Ago farita',
+'actionfailed' => 'Ago malsukcesis',
'deletedtext' => '"<nowiki>$1</nowiki>" estas forigita.
Vidu la paĝon $2 por registro de lastatempaj forigoj.',
'deletedarticle' => 'forigis "$1"',
@@ -1922,18 +2059,19 @@ Vidu la paĝon $2 por registro de lastatempaj forigoj.',
'delete-warning-toobig' => 'Ĉi tiu paĝo havas grandan redakto-historion, pli ol $1 {{PLURAL:$1|version|versiojn}}. Forigo de ĝi povas disrompigi operacion de {{SITENAME}}; forigu singarde.',
# Rollback
-'rollback' => 'Restarigi antaŭan redakton',
-'rollback_short' => 'Malfari',
-'rollbacklink' => 'malfari',
-'rollbackfailed' => 'Malfaro malsukcesis',
-'cantrollback' => 'Ne povas restarigi antaŭan redakton; la redaktinto lasta estas la sola aŭtoro de la paĝo.',
-'alreadyrolled' => 'Ne povas restarigi la lastan redakton de [[:$1]] de la [[User:$2|$2]] ([[User talk:$2|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Restarigi antaŭan redakton',
+'rollback_short' => 'Malfari',
+'rollbacklink' => 'malfari',
+'rollbackfailed' => 'Malfaro malsukcesis',
+'cantrollback' => 'Ne povas restarigi antaŭan redakton; la redaktinto lasta estas la sola aŭtoro de la paĝo.',
+'alreadyrolled' => 'Ne povas restarigi la lastan redakton de [[:$1]] de la [[User:$2|$2]] ([[User talk:$2|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
pro tio, ke oni intertempe redaktis aŭ restarigis la paĝon.
La lasta redaktinto estis [[User:$3|$3]] ([[User talk:$3|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "La resumo de la komento estis: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Malfaris redaktojn de [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuto]]) al la lasta versio de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Restaris redaktojn de $1; ŝanĝis al lasta versio de $2.',
-'sessionfailure' => 'Ŝajnas ke estas problemo kun via ensalutado;
+'editcomment' => "La resumo de la komento estis: \"''\$1''\".",
+'revertpage' => 'Malfaris redaktojn de [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuto]]) al la lasta versio de [[User:$1|$1]]',
+'revertpage-nouser' => 'Restarigita redaktoj de (salutnomo forigita) al lasta revizio de [[User:$1|$1]]',
+'rollback-success' => 'Restaris redaktojn de $1; ŝanĝis al lasta versio de $2.',
+'sessionfailure' => 'Ŝajnas ke estas problemo kun via ensalutado;
Ĉi ago estis nuligita por malhelpi fiensalutadon.
Bonvolu alklalki la reirbutonon kaj reŝarĝi la paĝon el kiu vi venas, kaj provu denove.',
@@ -1952,7 +2090,7 @@ Vidu [[Special:ProtectedPages|liston de protektitaj paĝoj]] por pli da informoj
'protectexpiry' => 'Eksvalidiĝas:',
'protect_expiry_invalid' => 'Malvalida findaŭro.',
'protect_expiry_old' => 'Eksvalidiĝa tempo jam pasis.',
-'protect-unchain' => 'Malŝlosi movrajtojn',
+'protect-unchain-permissions' => 'Malŝlosi pluajn protektajn opciojn',
'protect-text' => "Vi povas ĉi tie vidi kaj ŝanĝi la protektnivelon de la paĝo '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Vi ne povas ŝanĝi prokekto-nivelojn dum forbarita. Jen la nunaj ecoj de la paĝo '''$1''':",
'protect-locked-dblock' => "Ne povas ŝanĝi nivelojn de protekto pro aktiva datumbaza ŝlosado.
@@ -1981,7 +2119,7 @@ Vi povas ŝanĝi ties protektnivelon, sed tio ne ŝanĝos la kaskadan protekton.
** Malutila redakto-milito
** Paĝo kun multo da trafiko',
'protect-edit-reasonlist' => 'Redakti kialojn de protektado',
-'protect-expiry-options' => '1 horo:1 hour,1 tago:1 day,1 semajno:1 week,2 semajnoj:2 weeks,1 monato:1 month,3 monatoj:3 months,6 monatoj:6 months,1 jaro:1 year,porĉiam:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 horo:1 hour,1 tago:1 day,1 semajno:1 week,2 semajnoj:2 weeks,1 monato:1 month,3 monatoj:3 months,6 monatoj:6 months,1 jaro:1 year,porĉiam:infinite',
'restriction-type' => 'Permeso:',
'restriction-level' => 'Nivelo de limigo:',
'minimum-size' => 'Minimuma pezo',
@@ -2021,6 +2159,7 @@ Vi verŝajne havas malbonan ligilon, aŭ la revizio eble estis restarigita aŭ f
'undelete-nodiff' => 'Neniu antaŭa versio troviĝis.',
'undeletebtn' => 'Restarigi',
'undeletelink' => 'vidi/restarigi',
+'undeleteviewlink' => 'vidi',
'undeletereset' => 'Restarigi',
'undeleteinvert' => 'Inversigi selektaĵon',
'undeletecomment' => 'Kialo:',
@@ -2059,19 +2198,23 @@ $1',
'contributions-title' => 'Uzulaj kontribuoj de $1',
'mycontris' => 'Miaj kontribuoj',
'contribsub2' => 'De $1 ($2)',
-'nocontribs' => 'Trovis neniajn redaktojn laŭ tiu kriterio.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Trovis neniajn redaktojn laŭ tiu kriterio.',
'uctop' => ' (lasta)',
'month' => 'Ekde monato (kaj pli frue):',
'year' => 'Ekde jaro (kaj pli frue):',
-'sp-contributions-newbies' => 'Montri nur kontribuojn de novaj kontoj',
-'sp-contributions-newbies-sub' => 'Kontribuoj de novaj uzantoj. Forigitaj paĝoj ne estas montritaj.',
-'sp-contributions-newbies-title' => 'Uzulaj kontribuoj de novaj kontoj',
-'sp-contributions-blocklog' => 'Protokolo de forbaroj',
-'sp-contributions-logs' => 'protokoloj',
-'sp-contributions-search' => 'Serĉado de kontribuoj',
-'sp-contributions-username' => 'IP-adreso aŭ salutnomo:',
-'sp-contributions-submit' => 'Serĉi',
+'sp-contributions-newbies' => 'Montri nur kontribuojn de novaj kontoj',
+'sp-contributions-newbies-sub' => 'Kontribuoj de novaj uzantoj. Forigitaj paĝoj ne estas montritaj.',
+'sp-contributions-newbies-title' => 'Uzulaj kontribuoj de novaj kontoj',
+'sp-contributions-blocklog' => 'Protokolo de forbaroj',
+'sp-contributions-deleted' => 'forigitaj kontribuoj de uzantoj',
+'sp-contributions-logs' => 'protokoloj',
+'sp-contributions-talk' => 'diskuto',
+'sp-contributions-userrights' => 'administri rajtojn de uzantoj',
+'sp-contributions-blocked-notice' => 'La uzanto nune estas forbarita. Jen la lasta blokada listero en protokolo:',
+'sp-contributions-search' => 'Serĉado de kontribuoj',
+'sp-contributions-username' => 'IP-adreso aŭ salutnomo:',
+'sp-contributions-submit' => 'Serĉi',
# What links here
'whatlinkshere' => 'Ligiloj ĉi tien',
@@ -2094,6 +2237,7 @@ $1',
# Block/unblock
'blockip' => 'Forbari uzanton/IP-adreson',
+'blockip-title' => 'Forbari uzanton',
'blockip-legend' => 'Forbari uzanton',
'blockiptext' => "Per jena formularo vi povas forpreni de ajna nomo aŭ IP-adreso la rajton skribi en la vikio. Oni faru tion ''nur'' por eviti vandalismon, kaj sekvante la [[{{MediaWiki:Policy-url}}|regulojn pri forbarado]]. Klarigu la precizan kialon malsupre (ekzemple, citu paĝojn, kiuj estis vandaligitaj).",
'ipaddress' => 'IP-adreso/nomo',
@@ -2115,7 +2259,7 @@ $1',
'ipbenableautoblock' => 'Aŭtomate forbaru la lastan IP-adreson uzitan de la uzanto, kaj ĉiajn subsekvantajn adresojn el kiuj tiu provos redakti',
'ipbsubmit' => 'Forbari ĉi tiun uzanton',
'ipbother' => 'Alia daŭro:',
-'ipboptions' => '2 horoj:2 hours,1 tago:1 day,3 tagoj:3 days,1 semajno:1 week,2 semajnoj:2 weeks,1 monato:1 month,3 monatoj:3 months,6 monatoj:6 months,1 jaro:1 year,porĉiam:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horoj:2 hours,1 tago:1 day,3 tagoj:3 days,1 semajno:1 week,2 semajnoj:2 weeks,1 monato:1 month,3 monatoj:3 months,6 monatoj:6 months,1 jaro:1 year,porĉiam:infinite',
'ipbotheroption' => 'alia',
'ipbotherreason' => 'Alia/kroma kialo:',
'ipbhidename' => 'Kaŝi salutnomon de redaktoj kaj listoj',
@@ -2145,9 +2289,11 @@ forbarita IP-adreso/nomo la povon enskribi en la vikio.',
'ipblocklist-sh-tempblocks' => '$1 provizoraj forbaroj',
'ipblocklist-sh-addressblocks' => '$1 unuopaj IP-adresaj foraroj',
'ipblocklist-submit' => 'Serĉi',
+'ipblocklist-localblock' => 'Loka forbaro',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Alia forbaro|Aliaj forbaroj}}',
'blocklistline' => 'Je $1, $2 forbaris $3 ($4)',
'infiniteblock' => 'senfina',
-'expiringblock' => 'finiĝas je $1',
+'expiringblock' => 'senvalidiĝas je $1 $2',
'anononlyblock' => 'nur anonimuloj',
'noautoblockblock' => 'aŭtomata blokado estas malebligita',
'createaccountblock' => 'Kreado de kontoj forbarita',
@@ -2162,7 +2308,8 @@ forbarita IP-adreso/nomo la povon enskribi en la vikio.',
'autoblocker' => 'Aŭtomate forbarita ĉar via IP-adreso estis lastatempe uzita de "[[User:$1|$1]]".
La kialo donita por la forbaro de $1 estis: "$2"',
'blocklogpage' => 'Protokolo pri forbaroj',
-'blocklog-fulllog' => 'Protokolo de plenaj forbaroj',
+'blocklog-showlog' => 'Ĉi tiu uzanto estis forbarita antaŭe. Jen la forbara protokolo por referenco:',
+'blocklog-showsuppresslog' => 'Ĉi tiu uzanto estis forbarita kaj kaŝita antaŭe. Jen la protokolo pri subpremado por via informo:',
'blocklogentry' => 'forbaris [[$1]] por daŭro de $2 $3',
'reblock-logentry' => 'ŝanĝis forbarajn opciojn [[$1]] kun findato de $2 $3',
'blocklogtext' => 'Ĉi tio estas protokolo pri forbaraj kaj malforbaraj agoj. Aŭtomate forbaritaj IP adresoj ne estas listigitaj. Vidu la [[Special:IPBlockList|IP forbarliston]] por ĉi-momente fobaritaj uzantoj kaj IP-adresoj.',
@@ -2181,9 +2328,11 @@ La kialo donita por la forbaro de $1 estis: "$2"',
'ipb_already_blocked' => '"$1" estas jam forbarita',
'ipb-needreblock' => '== Jam forbarita ==
$1 estas jam forbarita. Ĉu vi volas ŝanĝi la opciojn?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Alia forbaro|Aliaj forbaroj}}',
'ipb_cant_unblock' => 'Eraro: Forbar-identigo $1 ne estas trovita. Ĝi eble estis jam malforbarita.',
'ipb_blocked_as_range' => 'Eraro: La IP-adreso $1 ne estas forbarita rekte kaj ne povas esti malforbarita. Tamen ĝi estas forbarita kiel parto de la intervalo $2, kiu ne povas esti malforbarita.',
'ip_range_invalid' => 'Malvalida IP-adresa intervalo.',
+'ip_range_toolarge' => 'IP-adresaj intervaloj pli grandaj ol /$1 estas malpermesataj.',
'blockme' => 'Forbari min',
'proxyblocker' => 'Forbarilo por prokuriloj.',
'proxyblocker-disabled' => 'Ĉi tiu funkcio estas malŝaltita.',
@@ -2192,6 +2341,7 @@ $1 estas jam forbarita. Ĉu vi volas ŝanĝi la opciojn?',
'sorbsreason' => 'Via IP-adreso estas listigita kiel malferma prokurilo en la DNSBL uzata de {{SITENAME}}.',
'sorbs_create_account_reason' => 'Via IP-adreso estas listigita kiel malferma prokurilo en la DNSBL uzata de {{SITENAME}}. Vi ne rajtas krei konton.',
'cant-block-while-blocked' => 'Vi ne povas forbari aliajn uzantojn dum vi estas forbarita.',
+'cant-see-hidden-user' => 'La uzanto kiun vi provas forbari jam estis forbarita kaj kaŝita. Kiel vi ne havas la rajton kaŝi uzanton, vi ne povas vidi aŭ redakti la forbaron de la uzanto.',
# Developer tools
'lockdb' => 'Ŝlosi datumbazon',
@@ -2240,6 +2390,7 @@ bonvolu certigi vin, ke vi komprenas ties konsekvencojn antaŭ ol vi antaŭeniru
Tiujokaze, vi nepre permane kunigu la diskuto-paĝojn se vi tion deziras.",
'movearticle' => 'Alinomigi paĝon',
+'moveuserpage-warning' => "'''Averto:''' Vi preskaŭ alinomigas paĝon de uzanto. Bonvolu noti ke nur la paĝo estos alinomigita kaj la uzanto mem ''ne'' estos alinomigita.",
'movenologin' => 'Ne ensalutinta',
'movenologintext' => 'Vi nepre estu registrita uzanto kaj [[Special:UserLogin|ensalutu]] por rajti movi paĝojn.',
'movenotallowed' => 'Vi ne rajtas movi paĝojn.',
@@ -2250,7 +2401,7 @@ Tiujokaze, vi nepre permane kunigu la diskuto-paĝojn se vi tion deziras.",
'move-watch' => 'Atenti ĉi tiun paĝon',
'movepagebtn' => 'Alinomigi paĝon',
'pagemovedsub' => 'Sukcesis alinomigo',
-'movepage-moved' => '\'\'\'"$1" estis alinomigita al "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" estis alinomigita al "$2"\'\'\'',
'movepage-moved-redirect' => 'Alidirektilo estis kreita.',
'movepage-moved-noredirect' => 'La kreado de alidirektilo estis nuligita.',
'articleexists' => 'Paĝo kun tiu nomo jam ekzistas, aŭ la nomo kiun vi elektis ne validas.
@@ -2294,6 +2445,14 @@ La celartikolo "[[:$1]]" jam ekzistas. Ĉu vi volas forigi ĝin por krei spacon
'imageinvalidfilename' => 'La cela dosiernomo estas nevalida',
'fix-double-redirects' => 'Ĝisdatigi iujn alidirektilojn kiuj direktas al la originala titolo',
'move-leave-redirect' => 'Forlasi kiel alidirektilon',
+'protectedpagemovewarning' => "'''Averto:''' Ĉi tiu paĝo estis ŝlosita tiel nur uzantoj kun administranto-rajtoj povas movi ĝin.
+Jen la lasta protokolero por via referenco:",
+'semiprotectedpagemovewarning' => "'''Averto:''' Ĉi tiu paĝo estis ŝlosita tiel ĝi estas nur movebla de registritaj uzantoj.
+Jen la lasta protokolero por via referenco:",
+'move-over-sharedrepo' => '== Dosiero ekzistas ==
+[[:$1]] ekzistas en komuna dosierujo. Movante la dosieron al ĉi tiu titolo anstataŭigos la komunan dosieron.',
+'file-exists-sharedrepo' => 'La elektita dosiernomo jam estas uzita en komun dosierujo.
+Bonvolu elekti alian nomon.',
# Export
'export' => 'Eksporti paĝojn',
@@ -2316,16 +2475,22 @@ En la lasta kazo, vi ankaŭ povas uzi ligilo, ekz-e [[{{#Special:Export}}/{{Medi
'export-pagelinks' => 'Inkluzivi ligitajn paĝoj al profundo de:',
# Namespace 8 related
-'allmessages' => 'Ĉiuj mesaĝoj',
-'allmessagesname' => 'Nomo',
-'allmessagesdefault' => 'Defaŭlta teksto',
-'allmessagescurrent' => 'Nuna teksto',
-'allmessagestext' => 'Ĉi tio estas listo de ĉiuj mesaĝoj haveblaj en la MediaWiki-nomspaco.
+'allmessages' => 'Ĉiuj mesaĝoj',
+'allmessagesname' => 'Nomo',
+'allmessagesdefault' => 'Defaŭlta teksto',
+'allmessagescurrent' => 'Nuna teksto',
+'allmessagestext' => 'Ĉi tio estas listo de ĉiuj mesaĝoj haveblaj en la MediaWiki-nomspaco.
Bonvolu aliri [http://www.mediawiki.org/wiki/Localisation MediaWiki-Asimilado] kaj [http://translatewiki.net translatewiki.net]
se vi volus kontribui al la komuna MediaWiki-asimilado.',
-'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages ne subtenata ĉar la variablo wgUseDatabaseMessages estas malkonektita.',
-'allmessagesfilter' => 'Filtrilo laŭ racia esprimo :',
-'allmessagesmodified' => 'Montru nur ŝanĝitajn',
+'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages ne subtenata ĉar la variablo wgUseDatabaseMessages estas malkonektita.',
+'allmessages-filter-legend' => 'Filtri',
+'allmessages-filter' => 'Filtri laŭ ŝanĝada stato',
+'allmessages-filter-unmodified' => 'Neŝanĝitaĵoj',
+'allmessages-filter-all' => 'Ĉio',
+'allmessages-filter-modified' => 'Ŝanĝitaĵoj',
+'allmessages-prefix' => 'Filtri laŭ prefikso:',
+'allmessages-language' => 'Lingvo:',
+'allmessages-filter-submit' => 'Ek!',
# Thumbnails
'thumbnail-more' => 'Pligrandigi',
@@ -2335,6 +2500,9 @@ se vi volus kontribui al la komuna MediaWiki-asimilado.',
'djvu_no_xml' => 'Ne povas akiri XML por DjVu dosiero',
'thumbnail_invalid_params' => 'Nevalidaj bildetaj parametroj',
'thumbnail_dest_directory' => 'Ne povas krei destinan dosierujon',
+'thumbnail_image-type' => 'Tia bildo ne subtenata',
+'thumbnail_gd-library' => 'Nekompleta GD-biblioteka konfiguro: mankas funkcio $1',
+'thumbnail_image-missing' => 'Dosiero verŝajne estas foriga: $1',
# Special:Import
'import' => 'Importitaj paĝoj',
@@ -2398,6 +2566,7 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'tooltip-ca-viewsource' => 'Tiu paĝo estas protektita. Vi povas nur rigardi ties fonton.',
'tooltip-ca-history' => 'Antaŭaj versioj de tiu ĉi paĝo.',
'tooltip-ca-protect' => 'Protekti tiun ĉi paĝon',
+'tooltip-ca-unprotect' => 'Malprotekti ĉi tiun paĝon',
'tooltip-ca-delete' => 'Forigi tiun ĉi paĝon',
'tooltip-ca-undelete' => 'Restarigu la redaktojn faritajn al tiu ĉi paĝo antaŭ ties forigo',
'tooltip-ca-move' => 'Alinomigi tiun ĉi paĝon',
@@ -2408,6 +2577,7 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'tooltip-search-fulltext' => 'Serĉi la paĝojn por ĉi tiu teksto',
'tooltip-p-logo' => 'Ĉefpaĝo',
'tooltip-n-mainpage' => 'Viziti la Ĉefpaĝon',
+'tooltip-n-mainpage-description' => 'Iri al la ĉefpaĝon',
'tooltip-n-portal' => 'Pri la projekto, kion vi povas fari, kie vi povas trovi ion',
'tooltip-n-currentevents' => 'Trovi fonajn informojn pri nunaj eventoj',
'tooltip-n-recentchanges' => 'Listo de la lastaj ŝanĝoj en la vikio.',
@@ -2452,10 +2622,12 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
# Attribution
'anonymous' => '{{PLURAL:$1|Anonima uzanto|Anonimaj uzantoj}} de {{SITENAME}}',
'siteuser' => '{{SITENAME}} uzanto $1',
-'lastmodifiedatby' => 'Ĉi paĝo estis laste ŝanĝita je $2, $1 de $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}-anonimulo $1',
+'lastmodifiedatby' => 'Ĉi paĝo estis laste ŝanĝita je $2, $1 de $3.',
'othercontribs' => 'Bazita sur la laboro de $1.',
'others' => 'aliaj',
'siteusers' => '{{PLURAL:$2|uzanto|uzantoj}} de {{SITENAME}} $1',
+'anonusers' => '{{SITENAME}}-{{PLURAL:$2|anonimulo|anonimuloj}} $1',
'creditspage' => 'Atribuoj de paĝo',
'nocredits' => 'Ne estas informo pri atribuoj por ĉi paĝo.',
@@ -2491,11 +2663,22 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'mw_math_modern' => 'Rekomendita por modernaj foliumiloj',
'mw_math_mathml' => 'MathML seeble (provizora)',
+# Math errors
+'math_failure' => 'malsukcesis analizi formulon',
+'math_unknown_error' => 'nekonata eraro',
+'math_unknown_function' => 'nekonata funkcio',
+'math_lexing_error' => 'leksika analizo malsukcesis',
+'math_syntax_error' => 'sintakseraro',
+'math_image_error' => 'konverto al PNG malsukcesis',
+'math_bad_tmpdir' => 'Ne povas skribi al aŭ krei matematikian labor-dosierujon.',
+'math_bad_output' => 'Ne povas enskribi aŭ krei matematikan eligan dosierujon',
+'math_notexvc' => 'Programo texvc ne ekzistas; bonvolu vidi math/README por konfiguri.',
+
# Patrolling
'markaspatrolleddiff' => 'Marki kiel patrolitan',
'markaspatrolledtext' => 'Marki ĉi tiun paĝon kiel patrolitan',
'markedaspatrolled' => 'Markita kiel patrolita',
-'markedaspatrolledtext' => 'La elektita versio estas markita kiel patrolita.',
+'markedaspatrolledtext' => 'La elektita versio [[:$1]] estas markita kiel patrolita.',
'rcpatroldisabled' => 'Patrolado de lastaj ŝanĝoj malaktivigita',
'rcpatroldisabledtext' => 'La funkcio patrolado de la lastaj ŝanĝoj estas nun malaktivigita.',
'markedaspatrollederror' => 'Ne povas marki kiel patrolitan',
@@ -2525,13 +2708,10 @@ $1',
'previousdiff' => '← Pli malnova redakto',
'nextdiff' => 'Pli nova redakto →',
-# Visual comparison
-'visual-comparison' => 'Vida komparo',
-
# Media information
'mediawarning' => "'''Warning''': This file type may contain malicious code.
By executing it, your system may be compromised.",
-'imagemaxsize' => 'Elmontri bildojn en bildpriskribaj paĝoj je maksimume:',
+'imagemaxsize' => "Limo por bildoj:<br />''(por dosieraj priskribo-paĝoj)''",
'thumbsize' => 'Grandeco de bildetoj:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paĝo|paĝoj}}',
'file-info' => '(pezo de dosiero: $1, MIME-tipo: $2)',
@@ -2540,6 +2720,8 @@ By executing it, your system may be compromised.",
'svg-long-desc' => '(SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3)',
'show-big-image' => 'Plena distingivo',
'show-big-image-thumb' => '<small>Grandeco de ĉi antaŭvido: $1 × $2 rastrumeroj</small>',
+'file-info-gif-looped' => 'ripeta GIF',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ĉelo|ĉeloj}}',
# Special:NewFiles
'newimages' => 'Aro da novaj bildoj',
@@ -2573,7 +2755,7 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la b
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Larĝeco',
@@ -2700,14 +2882,14 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la b
'exif-unknowndate' => 'Nekonata dato',
-'exif-orientation-1' => 'Normala', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Spegulumita horizontale', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotaciigita 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Spegulumita vertikale', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Turnita 90° maldekstre kaj spegulita vertikale', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Turnita 90° dekstre', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Turnita 90° dekstre kaj spegulita vertikale', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Turnita 90° maldekstre', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normala',
+'exif-orientation-2' => 'Spegulumita horizontale',
+'exif-orientation-3' => 'Rotaciigita 180°',
+'exif-orientation-4' => 'Spegulumita vertikale',
+'exif-orientation-5' => 'Turnita 90° maldekstre kaj spegulita vertikale',
+'exif-orientation-6' => 'Turnita 90° dekstre',
+'exif-orientation-7' => 'Turnita 90° dekstre kaj spegulita vertikale',
+'exif-orientation-8' => 'Turnita 90° maldekstre',
'exif-planarconfiguration-1' => 'bloka formato',
'exif-planarconfiguration-2' => 'ebena formato',
@@ -2829,7 +3011,7 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la b
'exif-gpsmeasuremode-2' => '2-dimensia mezuro',
'exif-gpsmeasuremode-3' => '3-dimensia mezuro',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometroj por horo',
'exif-gpsspeed-m' => 'Mejloj por horo',
'exif-gpsspeed-n' => 'Knotoj',
@@ -2848,6 +3030,7 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la b
'watchlistall2' => 'ĉiuj',
'namespacesall' => 'ĉiuj',
'monthsall' => 'ĉiuj',
+'limitall' => 'ĉiuj',
# E-mail address confirmation
'confirmemail' => 'Konfirmi retadreson',
@@ -2973,7 +3156,7 @@ Vi povas ankaŭ [[Special:Watchlist/edit|redakti norme]].',
'duplicate-defaultsort' => '\'\'\'Averto:\'\'\' Defaŭlta ordiga ŝlosilo "$2" anstataŭigas pli fruan defaŭltan ordigan ŝlosilon "$1".',
# Special:Version
-'version' => 'Versio', # Not used as normal message but as header for the special page itself
+'version' => 'Versio',
'version-extensions' => 'Instalitaj kromprogramoj',
'version-specialpages' => 'Specialaj paĝoj',
'version-parserhooks' => 'Sintaksaj hokoj',
@@ -2987,7 +3170,7 @@ Vi povas ankaŭ [[Special:Watchlist/edit|redakti norme]].',
'version-skin-extension-functions' => 'Etendaj funkcioj pri grafika etoso',
'version-hook-name' => 'Nomo de hoko',
'version-hook-subscribedby' => 'Abonita de',
-'version-version' => 'Versio',
+'version-version' => '(Versio $1)',
'version-license' => 'Permesilo',
'version-software' => 'Instalita programaro',
'version-software-product' => 'Produkto',
@@ -3068,4 +3251,15 @@ Enigu la dosiernomon sen la "{{ns:file}}:" prefikso.',
'dberr-outofdate' => 'Notu ke iliaj indeksoj de nia enhavo eble ne estas ĝisdatigaj.',
'dberr-cachederror' => 'Jen kaŝmemorigita kopio de la petita paĝo, kaj eble ne estas ĝisdatigita.',
+# HTML forms
+'htmlform-invalid-input' => 'Estas problemoj kun iom da via enigo',
+'htmlform-select-badoption' => 'La valoro, kiun vi specifis, ne estas valida.',
+'htmlform-int-invalid' => 'La valoro, kiun vi specifis, ne estas entjero.',
+'htmlform-float-invalid' => 'La valoro, kiun vi specifis, ne estas numero.',
+'htmlform-int-toolow' => 'La valoro, kiun vi specifis, estas sub la minimumo de $1',
+'htmlform-int-toohigh' => 'La valoro, kiun vi specifis, estas super la maksimumo de $1',
+'htmlform-submit' => 'Ek!',
+'htmlform-reset' => 'Malfari ŝanĝojn',
+'htmlform-selectorother-other' => 'Alia',
+
);
diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php
index de96aafa..66972964 100644
--- a/languages/messages/MessagesEs.php
+++ b/languages/messages/MessagesEs.php
@@ -17,12 +17,15 @@
* @author Better
* @author BicScope
* @author Boivie
+ * @author Candalua
+ * @author Capmo
* @author Cerealito
* @author Clerc
* @author Crazymadlover
* @author Cvmontuy
* @author David0811
* @author Dferg
+ * @author Diego Grez
* @author Dmcdevit
* @author Drini
* @author Dvortygirl
@@ -31,6 +34,7 @@
* @author Icvav
* @author Imre
* @author Jatrobat
+ * @author Jens Liebenau
* @author Jurock
* @author Lin linao
* @author Locos epraix
@@ -40,6 +44,8 @@
* @author Muro de Aguas
* @author Omnipaedista
* @author Orgullomoore
+ * @author Paucabot
+ * @author PerroVerd
* @author Pertile
* @author Piolinfax
* @author Platonides
@@ -167,44 +173,129 @@ $specialPageAliases = array(
'Blankpage' => array( 'BlanquearPágina', 'Blanquear página' ),
'LinkSearch' => array( 'BúsquedaDeEnlaces', 'Búsqueda de enlaces' ),
'DeletedContributions' => array( 'ContribucionesBorradas', 'Contribuciones Borradas' ),
+ 'Tags' => array( 'Etiquetas' ),
+ 'Activeusers' => array( 'UsuariosActivos' ),
);
$magicWords = array(
- 'redirect' => array( '0', '#REDIRECCIÓN', '#REDIRECT' ),
+ 'redirect' => array( '0', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
'notoc' => array( '0', '__NOTDC__', '__NOTOC__' ),
- 'nogallery' => array( '0', '__NOGALERÍA__', '__NOGALLERY__' ),
+ 'nogallery' => array( '0', '__NOGALERÍA__', '__NOGALERIA__', '__NOGALLERY__' ),
'forcetoc' => array( '0', '__FORZARTDC__', '__FORZARTOC__', '__FORCETOC__' ),
'toc' => array( '0', '__TDC__', '__TOC__' ),
- 'noeditsection' => array( '0', '__NOEDITARSECCIÓN__', '__NOEDITSECTION__' ),
- 'noheader' => array( '0', '__NOTÍTULO__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'MESACTUAL', 'MES ACTUAL', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'NOMBREMESACTUAL', 'NOMBRE MES ACTUAL', 'CURRENTMONTHNAME' ),
+ 'noeditsection' => array( '0', '__NOEDITARSECCIÓN__', '__NOEDITARSECCION__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__NOTÍTULO__', '__NOTITULO__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MESACTUAL', 'MESACTUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MESACTUAL1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NOMBREMESACTUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'GENERADORNOMBREMESACTUAL', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ABREVIACIONNOMBREMESACTUAL', 'ABREVIACIÓNNOMBREMESACTUAL', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'DÍAACTUAL', 'DIAACTUAL', 'DÍA ACTUAL', 'DIA ACTUAL', 'CURRENTDAY' ),
'currentday2' => array( '1', 'DÍAACTUAL2', 'DIAACTUAL2', 'DÍA ACTUAL2', 'DIA ACTUAL2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'NOMBREDÍAACTUAL', 'NOMBREDIAACTUAL', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', 'AÑOACTUAL', 'AÑO ACTUAL', 'CURRENTYEAR' ),
- 'currenthour' => array( '1', 'HORA ACTUAL', 'HORAACTUAL', 'CURRENTHOUR' ),
- 'img_right' => array( '1', 'derecha', 'dcha', 'right' ),
- 'img_left' => array( '1', 'izquierda', 'izda', 'left' ),
+ 'currenttime' => array( '1', 'HORAACTUAL', 'HORA ACTUAL', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HORA MINUTOS ACTUAL', 'HORAMINUTOSACTUAL', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MESLOCAL1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'NOMBREMESLOCAL', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'GENERADORNOMBREMESLOCAL', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ABREVIACIONMESLOCAL', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'DÍALOCAL', 'DIALOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'DIALOCAL2', 'DÍALOCAL2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NOMBREDIALOCAL', 'NOMBREDÍALOCAL', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'AÑOLOCAL', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'HORALOCAL', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'HORAMINUTOSLOCAL', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'NÚMERODEPÁGINAS', 'NUMERODEPAGINAS', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NÚMERODEARTÍCULOS', 'NUMERODEARTICULOS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NÚMERODEARCHIVOS', 'NUMERODEARCHIVOS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NÚMERODEUSUARIOS', 'NUMERODEUSUARIOS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NÚMERODEUSUARIOSACTIVOS', 'NUMERODEUSUARIOSACTIVOS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NÚMERODEEDICIONES', 'NUMERODEEDICIONES', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NÚMERODEVISTAS', 'NUMERODEVISTAS', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NOMBREDEPAGINA', 'NOMBREDEPÁGINA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NOMBREDEPAGINAC', 'NOMBREDEPÁGINAC', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ESPACIODENOMBRE', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ESPACIODENOMBREC', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ESPACIODEDISCUSION', 'ESPACIODEDISCUSIÓN', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ESPACIODEDISCUSIONC', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ESPACIODEASUNTO', 'ESPACIODETEMA', 'ESPACIODEARTÍCULO', 'ESPACIODEARTICULO', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ESPACIODETEMAC', 'ESPACIODEASUNTOC', 'ESPACIODEARTICULOC', 'ESPACIODEARTÍCULOC', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NOMBREDEPÁGINACOMPLETA', 'NOMBREDEPAGINACOMPLETA', 'NOMBREDEPÁGINAENTERA', 'NOMBREDEPAGINAENTERA', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NOMBRECOMPLETODEPAGINAC', 'NOMBRECOMPLETODEPÁGINAC', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NOMBREDESUBPAGINA', 'NOMBREDESUBPÁGINA', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NOMBREDESUBPAGINAC', 'NOMBREDESUBPÁGINAC', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NOMBREDEPAGINABASE', 'NOMBREDEPÁGINABASE', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NOMBREDEPAGINABASEC', 'NOMBREDEPÁGINABASEC', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NOMBREDEPÁGINADEDISCUSIÓN', 'NOMBREDEPAGINADEDISCUSION', 'NOMBREDEPAGINADISCUSION', 'NOMBREDEPÁGINADISCUSIÓN', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NOMBREDEPÁGINADEDISCUSIÓNC', 'NOMBREDEPAGINADEDISCUSIONC', 'NOMBREDEPAGINADISCUSIONC', 'NOMBREDEPÁGINADISCUSIÓNC', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NOMBREDEPAGINADETEMA', 'NOMBREDEPÁGINADETEMA', 'NOMBREDEPÁGINADEASUNTO', 'NOMBREDEPAGINADEASUNTO', 'NOMBREDEPAGINADEARTICULO', 'NOMBREDEPÁGINADEARTÍCULO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NOMBREDEPAGINADETEMAC', 'NOMBREDEPÁGINADETEMAC', 'NOMBREDEPÁGINADEASUNTOC', 'NOMBREDEPAGINADEASUNTOC', 'NOMBREDEPAGINADEARTICULOC', 'NOMBREDEPÁGINADEARTÍCULOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'MSJ:', 'MSG:' ),
+ 'img_thumbnail' => array( '1', 'miniaturadeimagen', 'miniatura', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'derecha', 'dcha', 'der', 'right' ),
+ 'img_left' => array( '1', 'izquierda', 'izda', 'izq', 'left' ),
'img_none' => array( '1', 'ninguna', 'nada', 'no', 'ninguno', 'none' ),
'img_center' => array( '1', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ),
'img_framed' => array( '1', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( '1', 'sinmarco', 'sin embarcar', 'sinenmarcar', 'frameless' ),
+ 'img_frameless' => array( '1', 'sinmarco', 'sin enmarcar', 'sinenmarcar', 'frameless' ),
+ 'img_page' => array( '1', 'pagina=$1', 'página=$1', 'pagina $1', 'página $1', 'page=$1', 'page $1' ),
'img_border' => array( '1', 'borde', 'border' ),
+ 'img_link' => array( '1', 'vínculo=$1', 'vinculo=$1', 'link=$1' ),
+ 'sitename' => array( '1', 'NOMBREDESITIO', 'SITENAME' ),
+ 'localurl' => array( '0', 'URLLOCAL', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URLLOCALC:', 'LOCALURLE:' ),
'server' => array( '0', 'SERVIDOR', 'SERVER' ),
'servername' => array( '0', 'NOMBRESERVIDOR', 'SERVERNAME' ),
- 'scriptpath' => array( '0', 'RUTASCRIPT', 'SCRIPTPATH' ),
+ 'scriptpath' => array( '0', 'RUTASCRIPT', 'RUTADESCRIPT', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'RUTAESTILO', 'RUTADEESTILO', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'GRAMATICA:', 'GRAMÁTICA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GÉNERO:', 'GENERO:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__NOCONVERTIRTITULO__', '__NOCONVERTIRTÍTULO__', '__NOCT___', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__NOCONVERTIRCONTENIDO__', '__NOCC___', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEMANAACTUAL', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'DDSACTUAL', 'DIADESEMANAACTUAL', 'DÍADESEMANAACTUAL', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'SEMANALOCAL', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'DDSLOCAL', 'DIADESEMANALOCAL', 'DÍADESEMANALOCAL', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'IDDEREVISION', 'IDREVISION', 'IDDEREVISIÓN', 'IDREVISIÓN', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'DIADEREVISION', 'DIAREVISION', 'DÍADEREVISIÓN', 'DÍAREVISIÓN', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'DIADEREVISION2', 'DIAREVISION2', 'DÍADEREVISIÓN2', 'DÍAREVISIÓN2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MESDEREVISION', 'MESDEREVISIÓN', 'MESREVISION', 'MESREVISIÓN', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'AÑODEREVISION', 'AÑODEREVISIÓN', 'AÑOREVISION', 'AÑOREVISIÓN', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'MARCADEHORADEREVISION', 'MARCADEHORADEREVISIÓN', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'USUARIODEREVISION', 'USUARIODEREVISIÓN', 'REVISIONUSER' ),
+ 'fullurl' => array( '0', 'URLCOMPLETA:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URLCOMPLETAC:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'PRIMEROMINUS;', 'PRIMEROMINÚS:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'PRIMEROMAYUS;', 'PRIMEROMAYÚS:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'MINUS:', 'MINÚS:', 'LC:' ),
+ 'uc' => array( '0', 'MAYUS:', 'MAYÚS:', 'UC:' ),
'displaytitle' => array( '1', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ),
- 'currentversion' => array( '1', 'REVISIÓNACTUAL', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'CODIFICAR', 'URLENCODE:' ),
- 'numberofadmins' => array( '1', 'NÚMEROADMINISITRADORES', 'NÚMEROADMINS', 'NUMBEROFADMINS' ),
- 'formatnum' => array( '0', 'FORMATONÚMERO', 'FORMATNUM' ),
- 'defaultsort' => array( '1', 'ORDENAR', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( '0', 'RUTAARCHIVO', 'RUTARCHIVO', 'FILEPATH:' ),
+ 'newsectionlink' => array( '1', '__VINCULARANUEVASECCION__', 'VÍNCULARANUEVASECCIÓN__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__NOVINCULARANUEVASECCION__', 'NOVÍNCULARANUEVASECCIÓN__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'VERSIONACTUAL', 'VERSIÓNACTUAL', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'CODIFICARURL:', 'URLENCODE:' ),
+ 'currenttimestamp' => array( '1', 'MARCADEHORAACTUAL', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'MARCADEHORALOCAL', 'LOCALTIMESTAMP' ),
+ 'language' => array( '0', '#IDIOMA:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'IDIOMADELCONTENIDO', 'IDIOMADELCONT', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'numberofadmins' => array( '1', 'NÚMEROADMINISITRADORES', 'NÚMEROADMINS', 'NUMEROADMINS', 'NUMEROADMINISTRADORES', 'NUMERODEADMINISTRADORES', 'NUMERODEADMINS', 'NÚMERODEADMINISTRADORES', 'NÚMERODEADMINS', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'FORMATONÚMERO', 'FORMATONUMERO', 'FORMATNUM' ),
+ 'special' => array( '0', 'especial', 'special' ),
+ 'defaultsort' => array( '1', 'ORDENPREDETERMINADO:', 'CLAVEDEORDENPREDETERMINADO:', 'ORDENDECATEGORIAPREDETERMINADO:', 'ORDENDECATEGORÍAPREDETERMINADO:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'RUTAARCHIVO:', 'RUTARCHIVO:', 'RUTADEARCHIVO:', 'FILEPATH:' ),
'tag' => array( '0', 'etiqueta', 'ETIQUETA', 'tag' ),
'hiddencat' => array( '1', '__CATEGORÍAOCULTA__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'PÁGINASENCATEGORÍA', 'PÁGINASENCAT', 'PAGSENCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( '1', 'TAMAÑOPÁGINA', 'PAGESIZE' ),
+ 'pagesincategory' => array( '1', 'PÁGINASENCATEGORÍA', 'PÁGINASENCAT', 'PAGSENCAT', 'PAGINASENCATEGORIA', 'PAGINASENCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'TAMAÑOPÁGINA', 'TAMAÑODEPÁGINA', 'TAMAÑOPAGINA', 'TAMAÑODEPAGINA', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEXAR__', '__INDEX__' ),
+ 'noindex' => array( '1', '__NOINDEXAR__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NÚMEROENGRUPO', 'NUMEROENGRUPO', 'NUMENGRUPO', 'NÚMENGRUPO', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRECCIONESTATICA__', '__REDIRECCIÓNESTÁTICA__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVELDEPROTECCIÓN', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formatodefecha', 'formatearfecha', 'formatdate', 'dateformat' ),
);
$datePreferences = false;
@@ -249,6 +340,7 @@ $messages = array(
'tog-enotifminoredits' => 'Notifícame también los cambios menores de página',
'tog-enotifrevealaddr' => 'Mostrar mi dirección de correo electrónico en los correos de notificación',
'tog-shownumberswatching' => 'Mostrar el número de usuarios que la vigilan',
+'tog-oldsig' => 'Vista previa de firma existente:',
'tog-fancysig' => 'Tratar firma como wikitexto (sin un enlace automático)',
'tog-externaleditor' => 'Utilizar editor externo por defecto',
'tog-externaldiff' => "Utilizar ''diff'' externo por defecto",
@@ -272,6 +364,13 @@ $messages = array(
'underline-never' => 'Nunca',
'underline-default' => 'Valor por defecto del navegador',
+# Font style option in Special:Preferences
+'editfont-style' => 'Estilo de fuente del área de edición:',
+'editfont-default' => 'Predeterminado del navegador',
+'editfont-monospace' => 'Fuente monoespaciada',
+'editfont-sansserif' => 'Fuente sans-serif',
+'editfont-serif' => 'Fuente serif',
+
# Dates
'sunday' => 'domingo',
'monday' => 'lunes',
@@ -331,7 +430,7 @@ $messages = array(
'category-media-header' => 'Archivos multimedia en la categoría «$1»',
'category-empty' => "''La categoría no contiene actualmente ningún artículo o archivo multimedia.''",
'hidden-categories' => '{{PLURAL:$1|Categoría escondida|Categorías escondidas}}',
-'hidden-category-category' => 'Categorías ocultas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorías ocultas',
'category-subcat-count' => '{{PLURAL:$2|Esta categoría comprende solamente la siguiente categoría.|Esta categoría incluye {{PLURAL:$1|la siguiente categorías|las siguientes $1 subcategorías}}, de un total de $2.}}',
'category-subcat-count-limited' => 'Esta categoría contiene {{PLURAL:$1|la siguiente subcategoría|las siguientes $1 subcategorías}}.',
'category-article-count' => '{{PLURAL:$2|Esta categoría incluye solamente la siguiente página.|{{PLURAL:$1|La siguiente página página pertenece|Las siguientes $1 páginas pertenecen}} a esta categoría, de un total de $2.}}',
@@ -339,6 +438,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Esta categoría contiene solamente el siguiente fichero.|{{PLURAL:$1|El siguiente fichero pertencer|Los siguientes $1 ficheros pertenecen}} a esta categoría, de un total de $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|El siguiente fichero pertenece|Los siguientes $1 ficheros pertenecen}} a esta categoría.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Páginas indexadas',
+'noindex-category' => 'Páginas no indexadas',
'mainpagetext' => "'''MediaWiki ha sido instalado con éxito.'''",
'mainpagedocfooter' => 'Consulta la [http://meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.
@@ -348,10 +449,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
-'about' => 'Acerca de',
-'article' => 'Artículo',
-'newwindow' => '(Se abre en una ventana nueva)',
-'cancel' => 'Cancelar',
+'about' => 'Acerca de',
+'article' => 'Artículo',
+'newwindow' => '(Se abre en una ventana nueva)',
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Más...',
+'mypage' => 'Mi página',
+'mytalk' => 'Mi página de discusión',
+'anontalk' => 'Discusión para esta IP',
+'navigation' => 'Navegación',
+'and' => '&#32;y',
+
+# Cologne Blue skin
'qbfind' => 'Buscar',
'qbbrowse' => 'Navegar',
'qbedit' => 'Editar',
@@ -359,15 +468,35 @@ $messages = array(
'qbpageinfo' => 'Información de página',
'qbmyoptions' => 'Mis opciones',
'qbspecialpages' => 'Páginas especiales',
-'moredotdotdot' => 'Más...',
-'mypage' => 'Mi página',
-'mytalk' => 'Mi página de discusión',
-'anontalk' => 'Discusión para esta IP',
-'navigation' => 'Navegación',
-'and' => '&#32;y',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'Preguntas Frecuentes (FAQ)',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Añadir tema',
+'vector-action-delete' => 'Borrar',
+'vector-action-move' => 'Mover',
+'vector-action-protect' => 'Proteger',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Desproteger',
+'vector-namespace-category' => 'Categoría',
+'vector-namespace-help' => 'Página de ayuda',
+'vector-namespace-image' => 'Archivo',
+'vector-namespace-main' => 'Página',
+'vector-namespace-media' => 'Página de multimedia',
+'vector-namespace-mediawiki' => 'Mensaje',
+'vector-namespace-project' => 'Página de proyecto',
+'vector-namespace-special' => 'Página especial',
+'vector-namespace-talk' => 'Discusión',
+'vector-namespace-template' => 'Plantilla',
+'vector-namespace-user' => 'Página de usuario',
+'vector-view-create' => 'Crear',
+'vector-view-edit' => 'Editar',
+'vector-view-history' => 'Ver historial',
+'vector-view-view' => 'Leer',
+'vector-view-viewsource' => 'Ver fuente',
+'actions' => 'Acciones',
+'namespaces' => 'Espacios de nombres',
+'variants' => 'Variantes',
'errorpagetitle' => 'Error',
'returnto' => 'Volver a $1.',
@@ -417,18 +546,22 @@ $messages = array(
'otherlanguages' => 'Otros idiomas',
'redirectedfrom' => '(Redirigido desde $1)',
'redirectpagesub' => 'Página redirigida',
-'lastmodifiedat' => 'Esta página fue modificada por última vez el $1, a las $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Esta página fue modificada por última vez el $1, a las $2.',
'viewcount' => 'Esta página ha sido visitada {{PLURAL:$1|una vez|$1 veces}}.',
'protectedpage' => 'Página protegida',
'jumpto' => 'Saltar a',
'jumptonavigation' => 'navegación',
'jumptosearch' => 'buscar',
+'view-pool-error' => 'Perdón, los servidores están sobrecargados en este momento.
+Demasiados usuarios están tratando de ver esta página.
+Por favor espera un momento antes de tratar de acceder nuevamente a esta página.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Acerca de {{SITENAME}}',
'aboutpage' => 'Project:Acerca de',
'copyright' => 'El contenido está disponible bajo los términos de la $1.',
-'copyrightpagename' => 'Copyright de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Derechos de autor',
'currentevents' => 'Actualidad',
'currentevents-url' => 'Project:Actualidad',
@@ -436,8 +569,6 @@ $messages = array(
'disclaimerpage' => 'Project:Limitación general de responsabilidad',
'edithelp' => 'Ayuda de edición',
'edithelppage' => 'Help:Cómo se edita una página',
-'faq' => 'Preguntas Frecuentes (FAQ)',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Ayuda',
'mainpage' => 'Página Principal',
'mainpage-description' => 'Página Principal',
@@ -515,10 +646,6 @@ La última consulta a la base de datos que se intentó fue:
"$1"
desde la función "$2".
Base de datos retornó error "$3: $4".',
-'noconnect' => '¡Lo sentimos! La wiki está pasando por problemas técnicos y no puede conectarse con el servidor de la base de datos.<br />
-$1',
-'nodb' => 'No se pudo seleccionar la base de datos $1',
-'cachederror' => 'Esta es una copia guardada en el caché de la página requerida, y puede no estar actualizada.',
'laggedslavemode' => "'''Aviso:''' puede que falten las actualizaciones más recientes en esta página.",
'readonly' => 'Base de datos bloqueada',
'enterlockreason' => 'Explique el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo',
@@ -537,6 +664,8 @@ Por favor, avisa a un [[Special:ListUsers/sysop|administrador]], tomando nota de
'readonly_lag' => 'La base de datos se ha bloqueado temporalmente mientras los servidores se sincronizan.',
'internalerror' => 'Error interno',
'internalerror_info' => 'Error interno: $1',
+'fileappenderrorread' => 'No se ha podido leer "$1" durante la anexión.',
+'fileappenderror' => 'No se ha podido añadir "$1" a "$2".',
'filecopyerror' => 'No se pudo copiar el archivo "$1" a "$2".',
'filerenameerror' => 'No se pudo renombrar el archivo "$1" a "$2".',
'filedeleteerror' => 'No se pudo borrar el archivo "$1".',
@@ -546,8 +675,8 @@ Por favor, avisa a un [[Special:ListUsers/sysop|administrador]], tomando nota de
'unexpected' => 'Valor inesperado: "$1"="$2".',
'formerror' => 'Error: no se pudo enviar el formulario',
'badarticleerror' => 'Esta acción no se puede llevar a cabo en esta página.',
-'cannotdelete' => 'No se pudo borrar la página o archivo especificado.
-Alguien puede haberla borrado antes.',
+'cannotdelete' => 'La página o archivo "$1" no se pudo borrar.
+Puede que ya haya sido borrado por alguien más.',
'badtitle' => 'Título incorrecto',
'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
@@ -580,7 +709,6 @@ El motivo dado fue: "\'\'$2\'\'".',
'virus-unknownscanner' => 'antivirus desconocido:',
# Login and logout pages
-'logouttitle' => 'Fin de sesión',
'logouttext' => "'''Ha terminado su sesión.'''
Puedes continuar usando {{SITENAME}} de forma anónima, o puedes [[Special:UserLogin|iniciar sesión otra vez]] con el mismo u otro usuario.
@@ -589,7 +717,6 @@ Ten en cuenta que las páginas que tengas abiertas en otras ventanas o pestañas
Tu cuenta ha sido creada.
No olvides personalizar [[Special:Preferences|tus preferencias]].',
-'loginpagetitle' => 'Registrarse/Entrar',
'yourname' => 'Nombre de usuario:',
'yourpassword' => 'Contraseña:',
'yourpasswordagain' => 'Repita la contraseña:',
@@ -600,6 +727,7 @@ No olvides personalizar [[Special:Preferences|tus preferencias]].',
'nav-login-createaccount' => 'Registrarse/Entrar',
'loginprompt' => "Es necesario habilitar las ''cookies'' en el navegador para registrarse en {{SITENAME}}.",
'userlogin' => 'Registrarse/Entrar',
+'userloginnocreate' => 'Iniciar sesión',
'logout' => 'Salir',
'userlogout' => 'Salir',
'notloggedin' => 'No has iniciado sesión',
@@ -612,27 +740,8 @@ No olvides personalizar [[Special:Preferences|tus preferencias]].',
'badretype' => 'Las contraseñas no coinciden.',
'userexists' => 'El nombre indicado ya está en uso.
Por favor, indica un nombre diferente.',
-'youremail' => 'Correo electrónico:',
-'username' => 'Nombre de usuario:',
-'uid' => 'ID de usuario:',
-'prefs-memberingroups' => 'Miembro {{PLURAL:$1|del grupo|de los grupos}}:',
-'yourrealname' => 'Nombre real:',
-'yourlanguage' => 'Idioma:',
-'yourvariant' => 'Variante lingüística',
-'yournick' => 'Su apodo (para firmas)',
-'badsig' => 'El código de tu firma no es válido; comprueba las etiquetas HTML.',
-'badsiglength' => 'La firma es muy larga. Debe contener un máximo de {{PLURAL:$1|un caracter|$1 caracteres}}.',
-'yourgender' => 'Género:',
-'gender-unknown' => 'Sin especificar',
-'gender-male' => 'Masculino',
-'gender-female' => 'Femenino',
-'prefs-help-gender' => 'Opcional: Usada para tarea de corrección de género por el software. Esta información será pública.',
-'email' => 'Correo electrónico',
-'prefs-help-realname' => 'El nombre real es opcional. Si decides proporcionarlo, se usará para dar atribución a tu trabajo.',
'loginerror' => 'Error de inicio de sesión',
-'prefs-help-email' => 'La dirección de correo es opcional, pero permite enviar una nueva contraseña en caso de olvidarla.
-También puede permitir a otros usuarios que te contacten a través de tu página de usuario o de tu página de discusión sin necesidad de revelar su identidad.',
-'prefs-help-email-required' => 'Es necesario proporcionar una dirección de correo electrónico.',
+'createaccounterror' => 'No se pudo crear cuenta: $1',
'nocookiesnew' => 'La cuenta de usuario ha sido creada, pero en este momento no has iniciado la sesión. {{SITENAME}} usa <em>cookies</em> para identificar a los usuarios registrados, pero parecen deshabilitadas. Por favor, habilítalas e identifícate con nombre de usuario y contraseña.',
'nocookieslogin' => '{{SITENAME}} utiliza <em>cookies</em> para la autenticación de usuarios. Las <em>cookies</em> están deshabilitadas en tu navegador. Por favor, actívalas e inténtalo de nuevo.',
'noname' => 'No se ha especificado un nombre de usuario válido.',
@@ -643,10 +752,12 @@ Los nombres de usuario son sensibles a las mayúsculas.
Revisa la ortografía, o [[Special:UserLogin/signup|crea una nueva cuenta]].',
'nosuchusershort' => 'No hay un usuario con el nombre "<nowiki>$1</nowiki>". Comprueba que lo has escrito correctamente.',
'nouserspecified' => 'Debes especificar un nombre de usuario.',
+'login-userblocked' => 'Este usuario está bloqueado. Inicio de sesión no permitido.',
'wrongpassword' => 'La contraseña indicada es incorrecta. Por favor, inténtalo de nuevo.',
'wrongpasswordempty' => 'No has escrito una contraseña.
Por favor, inténtalo de nuevo.',
-'passwordtooshort' => 'Tu contraseña no es válida o es muy corta. Debe tener al menos {{PLURAL:$1|un carácter|$1 caracteres}} y ser diferente de tu nombre de usuario.',
+'passwordtooshort' => 'Las contraseñas deben tener al menos {{PLURAL:$1|1 caracter|$1 caracteres}}.',
+'password-name-match' => 'Tu contraseña debe ser diferente de tu nombre de usuario.',
'mailmypassword' => 'Enviar una nueva contraseña por correo electrónico',
'passwordremindertitle' => 'Recordatorio de contraseña de {{SITENAME}}',
'passwordremindertext' => 'Alguien (probablemente tú, desde la dirección IP $1) solicitó que te enviáramos una nueva contraseña para tu cuenta en {{SITENAME}} ($4).
@@ -655,6 +766,7 @@ Ahora deberías iniciar sesión y cambiar tu contraseña. Tu contraseña tempora
Si fue otro quien solicitó este mensaje o has recordado tu contraseña y ya no deseas cambiarla, puedes ignorar este mensaje y seguir usando tu contraseña original.',
'noemail' => 'No hay una dirección de correo electrónico registrada para "$1".',
+'noemailcreate' => 'Necesitas proveer una dirección de correo electrónico válida',
'passwordsent' => 'Se ha enviado una nueva contraseña al correo electrónico de «$1».
Por favor, identifícate de nuevo tras recibirla.',
'blocked-mailpassword' => 'Tu dirección IP está bloqueada, y no se te permite el uso de la función de recuperación de contraseñas para prevenir abusos.',
@@ -679,8 +791,10 @@ Por favor, escribe una dirección en el formato adecuado o deja el campo en blan
La contraseña asignada automáticamente es "$3". Por favor entra ahora y cambia tu contraseña.
Puedes ignorar este mensaje si esta cuenta fue creada erróneamente.',
+'usernamehasherror' => 'El nombre de usuario no puede contener símbolos de almohadilla/numeral',
'login-throttled' => 'Has intentado demasiadas veces iniciar sesión. Por favor espera antes de intentarlo nuevamente.',
'loginlanguagelabel' => 'Idioma: $1',
+'suspicious-userlogout' => 'Su solicitud de desconexión ha sido denegada debido a que parece que ésta ha sido envidada desde un navegador defectuoso o un proxy caché.',
# Password reset dialog
'resetpass' => 'Cambiar la contraseña',
@@ -693,17 +807,13 @@ Por favor, introduce una nueva contraseña aquí:',
'retypenew' => 'Confirmar la nueva contraseña:',
'resetpass_submit' => 'Cambiar la contraseña e identificarse',
'resetpass_success' => 'La contraseña ha sido cambiada. Iniciando sesión...',
-'resetpass_bad_temporary' => 'Contraseña temporal no válida. Puede que ya hayas cambiado tu contraseña o que hayas solicitado el envío de otra.',
'resetpass_forbidden' => 'No se puede cambiar contraseñas',
'resetpass-no-info' => 'Debes identificarte para acceder directamente a esta página.',
'resetpass-submit-loggedin' => 'Cambiar contraseña',
+'resetpass-submit-cancel' => 'Cancelar',
'resetpass-wrong-oldpass' => 'La contraseña antigua no es correcta.
Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
'resetpass-temp-password' => 'Contraseña temporal:',
-'resetpass-log' => 'Registro de restablecimiento de password',
-'resetpass-logtext' => 'Debajo se muestra un registro de usuarios a los que un administrador restableció sus contraseñas.',
-'resetpass-logentry' => 'cambiada la contraseña por $1',
-'resetpass-comment' => 'Razón para el reajuste de contraseña:',
# Edit page toolbar
'bold_sample' => 'Texto en negrita',
@@ -779,7 +889,6 @@ Por favor incluye todos los datos aquí mostrados en cualquier consulta que haga
'blockededitsource' => "El texto de '''tus ediciones''' a '''$1''' se muestran a continuación:",
'whitelistedittitle' => 'Se requiere identificación para editar.',
'whitelistedittext' => 'Tienes que $1 para editar artículos.',
-'confirmedittitle' => 'Se requiere confirmación de dirección electrónica para editar',
'confirmedittext' => 'Debes confirmar tu dirección electrónica antes de editar páginas. Por favor, establece y valida una dirección electrónica a través de tus [[Special:Preferences|preferencias de usuario]].',
'nosuchsectiontitle' => 'Sección no encontrada',
'nosuchsectiontext' => 'Has intentado editar una sección que no existe.
@@ -800,14 +909,21 @@ Si llegaste aquí por error, vuelve a la página anterior.',
Puedes [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otras páginas,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
+'noarticletext-nopermission' => 'Actualmente no hay texto en esta página.
+Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>.',
'userpage-userdoesnotexist' => 'La cuenta de usuario "$1" no está registrada. Por favor comprueba si quieres crear o editar esta página.',
+'userpage-userdoesnotexist-view' => 'Cuenta de usuario "$1" no está registrada.',
+'blocked-notice-logextract' => 'Este usuario está actualmente bloqueado.
+La última entrada del registro de bloqueos es provista debajo para mayor referencia:',
'clearyourcache' => "'''Nota:''' Tras guardar el archivo, debes vaciar la caché del navegador para ver los cambios:
*'''Mozilla / Firefox / Safari:''' pulsa ''Mayúsculas.'' mientras haces click en el botón ''Recargar,'' o pulsa si no ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' en un Macintosh)
*'''Konqueror: '''Haz click en el botón ''Recargar'' o pulsa ''F5;''
*'''Opera:''' Limpia la caché en ''Herramientas → Preferencias;''
*'''Internet Explorer:''' pulsa ''Ctrl'' mientras haces click en ''Actualizar,'' o pulsa ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Consejo:''' Use el botón «Mostrar previsualización» para probar su nuevo css/js antes de grabarlo.",
+'usercssyoucanpreview' => "'''Consejo:''' Usa el botón «{{int:showpreview}}» para probar el nuevo css/js antes de grabarlo.",
+'userjsyoucanpreview' => "'''Consejo:''' Usa el botón «{{int:showpreview}}» para probar el nuevo JS antes de grabarlo.",
'usercsspreview' => "'''Recuerda que sólo está previsualizando tu CSS de usuario.'''
'''¡Aún no se ha grabado!'''",
'userjspreview' => "'''¡Recuerde que sólo estás previsualizando tu javascript de usuario y aún no se ha grabado!'''",
@@ -852,13 +968,16 @@ Por favor considere la posibilidad de dividir esta página en secciones más peq
Puedes copiar y pegar el texto a un archivo y grabarlo para más tarde.'''
El administrador que la bloqueó dio esta explicación: $1",
-'protectedpagewarning' => "'''ADVERTENCIA: Esta página ha sido protegida de manera que sólo usuarios con permisos de administrador pueden editarla.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Esta página ha sido protegida para que sólo usuarios registrados puedan editarla.",
+'protectedpagewarning' => "'''Advertencia: Esta página ha sido protegida de manera que sólo usuarios con permisos de administrador puedan editarla.'''
+A continuación se muestra la última entrada de registro para referencia:",
+'semiprotectedpagewarning' => "'''Nota:''' Esta página ha sido protegida para que sólo usuarios registrados puedan editarla.
+A continuación se provee la última entrada de registro para referencia:",
'cascadeprotectedwarning' => "'''Aviso:''' Esta página está protegida, sólo los administradores pueden editarla porque está incluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} en cascada:",
-'titleprotectedwarning' => "'''ATENCIÓN: Esta página está protegida de modo que [[Special:ListGroupRights|derechos especificos]] son necesarios para crearlo.'''",
-'templatesused' => 'Plantillas usadas en esta página:',
-'templatesusedpreview' => 'Plantillas usadas en esta previsualización:',
-'templatesusedsection' => 'Plantillas usadas en esta sección:',
+'titleprotectedwarning' => "'''Advertencia: Esta página está protegida de modo que se necesita [[Special:ListGroupRights|derechos especificos]] para crearla.'''
+A continuación se muestra la última entrada de registro para referencia:",
+'templatesused' => '{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta página:',
+'templatesusedpreview' => '{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta previsualización:',
+'templatesusedsection' => '{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta sección:',
'template-protected' => '(protegida)',
'template-semiprotected' => '(semiprotegida)',
'hiddencategories' => 'Esta página es un miembro de {{PLURAL:$1|1 categoría oculta|$1 categorías ocultas}}:',
@@ -867,16 +986,18 @@ El administrador que la bloqueó dio esta explicación: $1",
'nocreatetext' => '{{SITENAME}} ha restringido la posibilidad de crear nuevas páginas.
Puede volver atrás y editar una página existente, [[Special:UserLogin|identificarse o crear una cuenta]].',
'nocreate-loggedin' => 'No tienes permiso para crear páginas nuevas.',
+'sectioneditnotsupported-title' => 'Edición de sección no compatible',
+'sectioneditnotsupported-text' => 'La edición de sección no es compatible con esta página.',
'permissionserrors' => 'Errores de permisos',
'permissionserrorstext' => 'No tienes permiso para hacer eso, por {{PLURAL:$1|el siguiente motivo|los siguientes motivos}}:',
'permissionserrorstext-withaction' => 'No tienes permiso para $2, por las siguientes {{PLURAL:$1|razón|razones}}:',
-'recreate-deleted-warn' => "'''Atención: está creando una página que ha sido borrada previamente.'''
+'recreate-moveddeleted-warn' => "'''Atención: estás volviendo a crear una página que ha sido borrada previamente.'''
-Debería considerar si es apropiado continuar editando esta página.
-Consulte a continuación el registro de borrados:",
-'deleted-notice' => 'Esta página ha sido borrada.
-A continuación se muestra el registro de su borrado como referencia.',
-'deletelog-fulllog' => 'Ver el registro completo',
+Deberías considerar si es apropiado continuar editando esta página.
+El registro de borrado y traslados para esta página están provistos aquí por conveniencia:",
+'moveddeleted-notice' => 'Esta página ha sido borrada.
+El registro de borrados y traslados para la página están provistos debajo como referencia.',
+'log-fulllog' => 'Ver todo el registro',
'edit-hook-aborted' => 'Edición abortada por la extensión.
No dió explicaciones.',
'edit-gone-missing' => 'No se pudo actualizar la página.
@@ -899,6 +1020,7 @@ Ese o esos parámetros han sido omitidos.',
'post-expand-template-argument-category' => 'Páginas que contienen plantillas con parámetros descartados',
'parser-template-loop-warning' => 'Detectado bucle de plantilla: [[$1]]',
'parser-template-recursion-depth-warning' => 'Se ha excedido el límite de recursión de plantillas ($1)',
+'language-converter-depth-warning' => 'El límite de profundidad del convertidor de idioma ha excedido ($1)',
# "Undo" feature
'undo-success' => 'La edición puede deshacerse. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así deshacer la edición.',
@@ -916,9 +1038,9 @@ El motivo dado por $3 es ''$2''",
'viewpagelogs' => 'Ver los registros de esta página',
'nohistory' => 'No hay un historial de ediciones para esta página.',
'currentrev' => 'Revisión actual',
-'currentrev-asof' => 'última version al $1',
+'currentrev-asof' => 'Última versión de $1',
'revisionasof' => 'Revisión de $1',
-'revision-info' => 'Revisión a fecha de $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisión a fecha de $1; $2',
'previousrevision' => '← Revisión anterior',
'nextrevision' => 'Revisión siguiente →',
'currentrevisionlink' => 'Revisión actual',
@@ -931,7 +1053,7 @@ El motivo dado por $3 es ''$2''",
Leyenda: (act) = diferencias con la versión actual,
(prev) = diferencias con la versión previa, M = edición menor",
'history-fieldset-title' => 'Buscar en el historial',
-'deletedrev' => '[borrado]',
+'history-show-deleted' => 'Solamente borrado',
'histfirst' => 'Primeras',
'histlast' => 'Últimas',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -940,72 +1062,114 @@ Leyenda: (act) = diferencias con la versión actual,
# Revision feed
'history-feed-title' => 'Historial de revisiones',
'history-feed-description' => 'Historial de revisiones para esta página en el wiki',
-'history-feed-item-nocomment' => '$1 en $2', # user at time
+'history-feed-item-nocomment' => '$1 en $2',
'history-feed-empty' => 'La página solicitada no existe.
Puede haber sido borrada del wiki o renombrada.
Prueba a [[Special:Search|buscar en el wiki]] nuevas páginas relevantes.',
# Revision deletion
-'rev-deleted-comment' => '(comentario eliminado)',
-'rev-deleted-user' => '(nombre de usuario eliminado)',
-'rev-deleted-event' => '(entrada borrada)',
-'rev-deleted-text-permission' => "Esta revisión de la página ha sido '''borrada'''.
-Puede haber detalles en el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de borrado].",
-'rev-deleted-text-view' => "Esta revisión de la página ha sido '''borrada'''.
-Como administrador en {{SITENAME}} puedes verla;
-puede haber detalles en el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de borrado].",
-'rev-deleted-no-diff' => "No puede visualizarse este cambio debido a que las revisiones han sido '''borradas'''.
-Puede haber detalles en el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de borrado].",
-'rev-deleted-unhide-diff' => "Una de las revisiones de este cambio ha sido '''borrada'''.
-Puede haber detalles en el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de borrado].
-Como administrador todavía puedes [$1 ver este cambio] si deseas proceder.",
-'rev-delundel' => 'mostrar/ocultar',
-'revisiondelete' => 'Borrar/restaurar revisiones',
-'revdelete-nooldid-title' => 'No hay revisión destino',
-'revdelete-nooldid-text' => 'No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.',
-'revdelete-nologtype-title' => 'ningún nombre dado',
-'revdelete-nologtype-text' => 'No has especificado ningún nombre para ejecutar esta acción.',
-'revdelete-toomanytargets-title' => 'demasiados objetivos',
-'revdelete-toomanytargets-text' => 'usted ha especificado demasiados tipos de objetivos para ejecutar esta acción.',
-'revdelete-nologid-title' => 'Entrada de registro inválida',
-'revdelete-nologid-text' => 'Tampoco has especificado un objetivo de eventos para ejecutar esta función o la entrada especificada no existe.',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisión seleccionada|Revisiones seleccionadas}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Seleccionado un evento|Seleccionados eventos}}:'''",
-'revdelete-text' => "Las revisiones borradas aún aparecerán en el historial de la página y en los registros, pero sus contenidos no serán accesibles al público.'''
-
-Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y podrán deshacer el borrado a través de la misma interfaz, a menos que se establezcan restricciones adicionales.
-Por favor confirme que está intentando hacer esto, que usted entiende las consecuencias, y que lo esta haciendo de acuerso con [[{{MediaWiki:Policy-url}}|la política]].",
-'revdelete-suppress-text' => "Supresión debería '''solamente''' ser usado para los siguientes casos:
+'rev-deleted-comment' => '(comentario eliminado)',
+'rev-deleted-user' => '(nombre de usuario eliminado)',
+'rev-deleted-event' => '(entrada borrada)',
+'rev-deleted-user-contribs' => '[nombre de usuario o dirección IP eliminada - edición ocultada de las contribuciones]',
+'rev-deleted-text-permission' => "Esta revisión de la página ha sido '''borrada'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-deleted-text-unhide' => "Esta revisión de página ha sido '''borrada'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
+Como administrador todavía puedes [$1 ver esta revisión] si así lo deseas.",
+'rev-suppressed-text-unhide' => "Esta revisión de la página ha sido '''suprimida'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].
+Como administrador podrá seguir [$1 viendo esta revisión] si desea continuar.",
+'rev-deleted-text-view' => "Esta revisión de la página ha sido '''borrada'''.
+Como administrador puedes verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-suppressed-text-view' => "Esta revisión de la página ha sido '''suprimida'''.
+Como administrador puedes verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+'rev-deleted-no-diff' => "No puede visualizarse este cambio debido a que las revisiones han sido '''borradas'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-suppressed-no-diff' => "No puedes ver este diff porque una de las revisiones ha sido '''borrada'''.",
+'rev-deleted-unhide-diff' => "Una de las revisiones de este cambio ha sido '''borrada'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
+Como administrador podrá seguir [$1 viendo este cambio] si así lo deseas.",
+'rev-suppressed-unhide-diff' => "Una de las revisiones de este diff ha sido '''suprimida'''.
+Puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].
+Como administrador podrá seguir [$1 viendo este cambio] si desea proceder.",
+'rev-deleted-diff-view' => "Una de las revisiones de este diff ha sido '''borrada'''.
+Como administrador puede ver el contenido; puede que existan más detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-suppressed-diff-view' => "Una de las revisiones de este diff ha sido '''suprimida'''.
+Como administrador todavía puede ver el contenido; puede que existan más detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+'rev-delundel' => 'mostrar/ocultar',
+'rev-showdeleted' => 'mostrar',
+'revisiondelete' => 'Borrar/restaurar revisiones',
+'revdelete-nooldid-title' => 'No hay revisión destino',
+'revdelete-nooldid-text' => 'No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.',
+'revdelete-nologtype-title' => 'ningún nombre dado',
+'revdelete-nologtype-text' => 'No has especificado ningún nombre para ejecutar esta acción.',
+'revdelete-nologid-title' => 'Entrada de registro inválida',
+'revdelete-nologid-text' => 'Tampoco has especificado un objetivo de eventos para ejecutar esta función o la entrada especificada no existe.',
+'revdelete-no-file' => 'El fichero especificado no existe.',
+'revdelete-show-file-confirm' => '¿Realmente deseas ver la revisión borrada del archivo "<nowiki>$1</nowiki>" del $2 a las $3?',
+'revdelete-show-file-submit' => 'Sí',
+'revdelete-selected' => "'''{{PLURAL:$2|Revisión seleccionada|Revisiones seleccionadas}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Seleccionado un evento|Seleccionados eventos}}:'''",
+'revdelete-text' => "Las revisiones borradas aún aparecerán en el historial de la página y en los registros, pero sus contenidos no serán accesibles al público.'''
+Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y podrán deshacer el borrado a través de la misma interfaz, a menos que se establezcan restricciones adicionales.",
+'revdelete-confirm' => 'Por favor confirma que deseas realizar la operación, que entiendes las consecuencias y que estás ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].',
+'revdelete-suppress-text' => "Supresión debería '''solamente''' ser usado para los siguientes casos:
* Información potencialmente difamatoria o libelo grave.
* Información personal inapropiada
*: ''domicilios y números de teléfono, números de afiliación a la seguridad social, etc.''",
-'revdelete-legend' => 'Establecer restricciones de revisión:',
-'revdelete-hide-text' => 'Ocultar el texto de la revisión',
-'revdelete-hide-name' => 'Ocultar acción y objetivo',
-'revdelete-hide-comment' => 'Ocultar el resumen de edición',
-'revdelete-hide-user' => 'Ocultar el nombre/IP del editor',
-'revdelete-hide-restricted' => 'Suprimir datos a los administradores así como al resto',
-'revdelete-suppress' => 'Suprimir datos a los administradores así como al resto',
-'revdelete-hide-image' => 'Ocultar el contenido del archivo',
-'revdelete-unsuppress' => 'Eliminar restricciones de revisiones restauradas',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Aplicar a la revisión seleccionada',
-'revdelete-logentry' => 'cambió la visibilidad de revisiones de [[$1]]',
-'logdelete-logentry' => 'cambió la visibilidad de eventos de [[$1]]',
-'revdelete-success' => "'''La visibilidad de revisiones ha sido cambiada correctamente.'''",
-'logdelete-success' => 'Visibilidad de eventos cambiada correctamente.',
-'revdel-restore' => 'cambiar visibilidad',
-'pagehist' => 'Historial de la página',
-'deletedhist' => 'Historial borrado',
-'revdelete-content' => 'contenido',
-'revdelete-summary' => 'resumen de edición',
-'revdelete-uname' => 'nombre de usuario',
-'revdelete-restricted' => 'restricciones para administradores aplicadas',
-'revdelete-unrestricted' => 'restricciones para administradores eliminadas',
-'revdelete-hid' => 'ocultó $1',
-'revdelete-unhid' => 'mostró $1',
-'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisión|revisiones}}',
-'logdelete-log-message' => '$1 de $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-legend' => 'Establecer restricciones de revisión:',
+'revdelete-hide-text' => 'Ocultar el texto de la revisión',
+'revdelete-hide-image' => 'Ocultar el contenido del archivo',
+'revdelete-hide-name' => 'Ocultar acción y objetivo',
+'revdelete-hide-comment' => 'Ocultar el resumen de edición',
+'revdelete-hide-user' => 'Ocultar el nombre/IP del editor',
+'revdelete-hide-restricted' => 'Suprimir datos a los administradores así como al resto',
+'revdelete-radio-same' => '(no cambiar)',
+'revdelete-radio-set' => 'Sí',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Suprimir datos a los administradores así como al resto',
+'revdelete-unsuppress' => 'Eliminar restricciones de revisiones restauradas',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Aplicar a {{PLURAL:$1|la revisión seleccionada|las revisiones seleccionadas}}',
+'revdelete-logentry' => 'cambió la visibilidad de revisiones de [[$1]]',
+'logdelete-logentry' => 'cambió la visibilidad de eventos de [[$1]]',
+'revdelete-success' => "'''La visibilidad de revisiones ha sido cambiada correctamente.'''",
+'revdelete-failure' => "'''La visibilidad de la revisión no pudo ser establecida:'''
+$1",
+'logdelete-success' => 'Visibilidad de eventos cambiada correctamente.',
+'logdelete-failure' => "'''La visibilidad del registro no pudo ser ajustada:'''
+$1",
+'revdel-restore' => 'cambiar visibilidad',
+'pagehist' => 'Historial de la página',
+'deletedhist' => 'Historial borrado',
+'revdelete-content' => 'contenido',
+'revdelete-summary' => 'resumen de edición',
+'revdelete-uname' => 'nombre de usuario',
+'revdelete-restricted' => 'restricciones para administradores aplicadas',
+'revdelete-unrestricted' => 'restricciones para administradores eliminadas',
+'revdelete-hid' => 'ocultó $1',
+'revdelete-unhid' => 'mostró $1',
+'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisión|revisiones}}',
+'logdelete-log-message' => '$1 de $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-hide-current' => 'Error al ocultar el objeto de fecha $1 a las $2: es la revisión actual.
+No puede ser ocultada.',
+'revdelete-show-no-access' => 'Error mostrando el objeto de fecha $2, $1: este objeto ha sido marcado como "restringido".
+No tiene acceso a él.',
+'revdelete-modify-no-access' => 'Error modificando el objeto de fecha $2, $1: este objeto ha sido marcado como "restringido".
+No tiene acceso a él.',
+'revdelete-modify-missing' => 'Error modificando el objeto ID $1: ¡no se encuentra en la base de datos!',
+'revdelete-no-change' => "'''Atención:''' la revisión de fecha $1 a las $2 ya tiene las restricciones de visibilidad solicitadas.",
+'revdelete-concurrent-change' => 'Error modificando el objeto de fecha $2, $1: su estado parece haber sido cambiado por alguien más cuando tratabas de modificarlo. Por favor verifica los registros.',
+'revdelete-only-restricted' => 'Error ocultando el item de fecha $2, $1: no puedes suprimir elementos de vista de los administradores sin seleccionar asímismo una de las otras opciones de visibilidad.',
+'revdelete-reason-dropdown' => '*Razones de borrado comunes
+** Violación de Copyright
+** Información personal inapropiada
+** Difamación o libelo grave',
+'revdelete-otherreason' => 'Otra/adicional razón:',
+'revdelete-reasonotherlist' => 'Otra razón',
+'revdelete-edit-reasonlist' => 'Editar razones de borrado',
+'revdelete-offender' => 'Autor de revisión:',
# Suppression log
'suppressionlog' => 'Registro de supresiones',
@@ -1044,68 +1208,13 @@ Nota que usar los enlaces de navegación borrará las selecciones de esta column
'mergelogpagetext' => 'Debajo está una lista de las fusiones más recientes de historial de una página en otra.',
# Diffs
-'history-title' => 'Historial de revisiones para «$1»',
-'difference' => '(Diferencias entre revisiones)',
-'lineno' => 'Línea $1:',
-'compareselectedversions' => 'Comparar versiones seleccionadas',
-'visualcomparison' => 'Comparación visual',
-'wikicodecomparison' => 'Comparación de texto wiki',
-'editundo' => 'deshacer',
-'diff-multi' => '({{PLURAL:$1|Una edición intermedia no se muestra|$1 ediciones intermedias no se muestran}}.)',
-'diff-movedto' => 'movido a $1',
-'diff-styleadded' => 'estilo $1 añadido',
-'diff-added' => 'añadido $1',
-'diff-changedto' => 'modificado a $1',
-'diff-movedoutof' => 'retirado de $1',
-'diff-styleremoved' => 'estilo $1 suprimido',
-'diff-removed' => 'suprimido $1',
-'diff-changedfrom' => 'modificado a partir de $1',
-'diff-src' => 'código fuente',
-'diff-withdestination' => 'con destino $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;y $1 $2',
-'diff-width' => 'ancho',
-'diff-height' => 'alto',
-'diff-p' => "un '''párrafo'''",
-'diff-blockquote' => "una '''cita'''",
-'diff-h1' => "una '''cabecera (nivel 1)'''",
-'diff-h2' => "una '''cabecera (nivel 2)'''",
-'diff-h3' => "una '''cabecera (nivel 3)'''",
-'diff-h4' => "una '''cabecera (nivel 4)'''",
-'diff-h5' => "una '''cabecera (nivel 5)'''",
-'diff-pre' => "un '''bloque preformateado'''",
-'diff-div' => "una '''división'''",
-'diff-ul' => "una '''lista desordenada'''",
-'diff-ol' => "una '''lista ordenada'''",
-'diff-li' => "un '''elemento de lista'''",
-'diff-table' => "una '''tabla'''",
-'diff-tbody' => "un '''contenido de tabla'''",
-'diff-tr' => "una '''fila'''",
-'diff-td' => "una '''celda'''",
-'diff-th' => "una '''cabecera'''",
-'diff-br' => "un '''salto de línea'''",
-'diff-hr' => "una '''línea horizontal'''",
-'diff-code' => "un '''bloque de código de ordenador'''",
-'diff-dl' => "una '''lista de definiciones'''",
-'diff-dt' => "un '''término de definición'''",
-'diff-dd' => "una '''definición'''",
-'diff-input' => "una '''entrada'''",
-'diff-form' => "un '''formulario'''",
-'diff-img' => "una '''imagen'''",
-'diff-span' => "un '''''span'''''",
-'diff-a' => "un '''enlace'''",
-'diff-i' => "'''cursivas'''",
-'diff-b' => "'''negrita'''",
-'diff-strong' => "'''fuerte'''",
-'diff-em' => "'''énfasis'''",
-'diff-font' => "'''tipografía'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''borrado'''",
-'diff-tt' => "'''anchura fija'''",
-'diff-sub' => "'''subíndice'''",
-'diff-sup' => "'''superíndice'''",
-'diff-strike' => "'''tachado'''",
+'history-title' => 'Historial de revisiones para «$1»',
+'difference' => '(Diferencias entre revisiones)',
+'lineno' => 'Línea $1:',
+'compareselectedversions' => 'Comparar versiones seleccionadas',
+'showhideselectedversions' => 'Mostrar/ocultar versiones seleccionadas',
+'editundo' => 'deshacer',
+'diff-multi' => '({{PLURAL:$1|Una edición intermedia no se muestra|$1 ediciones intermedias no se muestran}}.)',
# Search results
'searchresults' => 'Resultados de la búsqueda',
@@ -1113,29 +1222,25 @@ Nota que usar los enlaces de navegación borrará las selecciones de esta column
'searchresulttext' => 'Para más información acerca de las búsquedas en {{SITENAME}}, consulta la [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Has buscado \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas las páginas que empiezan por "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|todas las páginas que enlazan con «$1»]])',
'searchsubtitleinvalid' => "Has buscado '''$1'''",
-'noexactmatch' => "'''No existe una página llamada \"\$1\".'''
-Puedes [[:\$1|crearla]].",
-'noexactmatch-nocreate' => "'''No existe la página \"\$1\".'''",
'toomanymatches' => 'Se han obtenido muchos resultados; por favor intenta una consulta diferente',
'titlematches' => 'Coincidencias de título de artículo',
'notitlematches' => 'No hay coincidencias de título de artículo',
'textmatches' => 'Coincidencias de texto de artículo',
'notextmatches' => 'No hay coincidencias de texto de artículo',
-'prevn' => '$1 previas',
-'nextn' => '$1 siguientes',
+'prevn' => '{{PLURAL:$1|$1}} previas',
+'nextn' => '{{PLURAL:$1|$1}} siguientes',
'prevn-title' => '$1 {{PLURAL:$1|resultado|resultados}} previos',
'nextn-title' => 'Próximos $1 {{PLURAL:$1|resultado|resultados}}',
'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
-'viewprevnext' => 'Ver ($1) ($2) ($3).',
+'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opciones de búsqueda',
'searchmenu-exists' => "'''Hay una página llamada «[[$1]]» en esta wiki'''",
'searchmenu-new' => "'''¡Crear la página «[[:$1]]» en esta wiki!'''",
'searchhelp-url' => 'Help:Ayuda',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Otras páginas con este prefijo]]',
-'searchprofile-articles' => 'Páginas de contenido',
-'searchprofile-articles-and-proj' => 'Páginas de contenido y del proyecto',
-'searchprofile-project' => 'Páginas del proyecto',
-'searchprofile-images' => 'Archivos',
+'searchprofile-articles' => 'páginas de contenido',
+'searchprofile-project' => 'Páginas de ayuda y de proyecto',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Avanzado',
'searchprofile-articles-tooltip' => 'Buscar en $1',
@@ -1143,8 +1248,6 @@ Puedes [[:\$1|crearla]].",
'searchprofile-images-tooltip' => 'Buscar archivos',
'searchprofile-everything-tooltip' => 'Buscar en todo el contenido (incluyendo páginas de discusión)',
'searchprofile-advanced-tooltip' => 'Buscar en espacios de nombre personalizados',
-'prefs-search-nsdefault' => 'Buscar usando valores predefinidos:',
-'prefs-search-nscustom' => 'Buscar utilizando los siguientes espacios de nombres:',
'search-result-size' => '$1 ({{PLURAL:$2|1 palabra|$2 palabras}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redirige desde $1)',
@@ -1157,11 +1260,12 @@ Puedes [[:\$1|crearla]].",
'search-mwsuggest-disabled' => 'sin sugerencias',
'search-relatedarticle' => 'Relacionado',
'mwsuggest-disable' => 'Desactivar AJAX al realizar búsquedas',
+'searcheverything-enable' => 'Buscar en todos los espacios de nombres',
'searchrelated' => 'relacionado',
'searchall' => 'todos',
'showingresults' => "Abajo se {{PLURAL:$1|muestra '''1''' resultado|muestran hasta '''$1''' resultados}} empezando por el nº '''$2'''.",
'showingresultsnum' => "Abajo se {{PLURAL:$3|muestra '''1''' resultado|muestran los '''$3''' resultados}} empezando por el nº '''$2'''.",
-'showingresultstotal' => "Debajo se {{PLURAL:$4|muestra el resultado '''$1''' de '''$3'''|muestran los resultados entre el '''$1''' y el '''$2''', de un total de '''$3'''}}.",
+'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
'nonefound' => "'''Nota''': Por defecto sólo se busca en algunos espacios de nombre.
Prueba a usar el prefijo ''all:'' para buscar en todo el contenido (incluyendo páginas de discusión, plantillas, etc.) o usa el espacio de nombre que quieras como prefijo. También puedes usar el formulario de búsqueda avanzada que aparece abajo.
@@ -1172,111 +1276,148 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
'powersearch-ns' => 'Buscar en los espacios de nombres:',
'powersearch-redir' => 'Listar redirecciones',
'powersearch-field' => 'Buscar',
+'powersearch-togglelabel' => 'Seleccionar:',
+'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'Ninguno',
'search-external' => 'Búsqueda externa',
'searchdisabled' => 'Las búsquedas en {{SITENAME}} está temporalmente deshabilitadas. Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índices relativos a {{SITENAME}} pueden estar desactualizados.',
+# Quickbar
+'qbsettings' => 'Preferencias de "Quickbar"',
+'qbsettings-none' => 'Ninguna',
+'qbsettings-fixedleft' => 'Fija a la izquierda',
+'qbsettings-fixedright' => 'Fija a la derecha',
+'qbsettings-floatingleft' => 'Flotante a la izquierda',
+'qbsettings-floatingright' => 'Flotante a la derecha',
+
# Preferences page
-'preferences' => 'Preferencias',
-'mypreferences' => 'Mis preferencias',
-'prefs-edits' => 'Cantidad de ediciones:',
-'prefsnologin' => 'No está identificado',
-'prefsnologintext' => 'Debe estar <span class="plainlinks">[{{fullurl:Especial:UserLogin|returnto=$1}} autenticado]</span> para cambiar las preferencias de usuario.',
-'prefsreset' => 'Las preferencias han sido restauradas a los valores por defecto.',
-'qbsettings' => 'Preferencias de "Quickbar"',
-'qbsettings-none' => 'Ninguna',
-'qbsettings-fixedleft' => 'Fija a la izquierda',
-'qbsettings-fixedright' => 'Fija a la derecha',
-'qbsettings-floatingleft' => 'Flotante a la izquierda',
-'qbsettings-floatingright' => 'Flotante a la derecha',
-'changepassword' => 'Cambiar contraseña',
-'skin' => 'Apariencia',
-'skin-preview' => 'Previsualizar',
-'math' => 'Fórmulas',
-'dateformat' => 'Formato de fecha',
-'datedefault' => 'Sin preferencia',
-'datetime' => 'Fecha y hora',
-'math_failure' => 'No se pudo entender',
-'math_unknown_error' => 'error desconocido',
-'math_unknown_function' => 'función desconocida',
-'math_lexing_error' => 'error léxico',
-'math_syntax_error' => 'error de sintaxis',
-'math_image_error' => 'La conversión a PNG ha fallado; comprueba que latex, dvips, gs, y convert estén instalados correctamente',
-'math_bad_tmpdir' => 'No se puede escribir o crear el directorio temporal de <em>math</em>',
-'math_bad_output' => 'No se puede escribir o crear el directorio de salida de <em>math</em>',
-'math_notexvc' => 'Falta el ejecutable de <strong>texvc</strong>. Por favor, lea <em>math/README</em> para configurarlo.',
-'prefs-personal' => 'Datos personales',
-'prefs-rc' => 'Cambios recientes',
-'prefs-watchlist' => 'Seguimiento',
-'prefs-watchlist-days' => 'Número de días a mostrar en la lista de seguimiento:',
-'prefs-watchlist-days-max' => '(máximo 7 días)',
-'prefs-watchlist-edits' => 'Número de ediciones a mostrar en la lista extendida:',
-'prefs-watchlist-edits-max' => '(máximo: 1000)',
-'prefs-misc' => 'Miscelánea',
-'prefs-resetpass' => 'Cambiar contraseña',
-'saveprefs' => 'Guardar',
-'resetprefs' => 'Restaurar preferencias por defecto',
-'restoreprefs' => 'Restaure todos las configuraciones por defecto',
-'textboxsize' => 'Edición',
-'prefs-edit-boxsize' => 'Tamaño de la ventana de edición.',
-'rows' => 'Filas:',
-'columns' => 'Columnas:',
-'searchresultshead' => 'Búsquedas',
-'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Número de líneas de contexto por resultado',
-'contextchars' => 'Caracteres de contexto por línea',
-'stub-threshold' => 'Límite para formato de <a href="#" class="stub">enlace a esbozo</a> (bytes):',
-'recentchangesdays' => 'Días a mostrar en cambios recientes:',
-'recentchangesdays-max' => '(máximo {{PLURAL:$1|un día|$1 días}})',
-'recentchangescount' => 'Número de ediciones a mostrar en cambios recientes, historiales y registros, por defecto:',
-'savedprefs' => 'Sus preferencias han sido grabadas.',
-'timezonelegend' => 'Huso horario:',
-'timezonetext' => '¹Indique el número de horas de diferencia entre su hora local y la hora del servidor (UTC).',
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Zona horaria:',
-'timezoneuseserverdefault' => 'Usar la hora del servidor',
-'timezoneuseoffset' => 'Otra (especifica la diferencia horaria)',
-'timezoneoffset' => 'Diferencia¹:',
-'servertime' => 'Hora del servidor:',
-'guesstimezone' => 'Rellenar a partir de la hora del navegador',
-'timezoneregion-africa' => 'África',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antártica',
-'timezoneregion-arctic' => 'Ártico',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Océano Atlántico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Océano Índico',
-'timezoneregion-pacific' => 'Océano Pacífico',
-'allowemail' => 'Aceptar correo electrónico de otros usuarios',
-'prefs-searchoptions' => 'Opciones de búsqueda',
-'prefs-namespaces' => 'Espacios de nombres',
-'defaultns' => 'Buscar en estos espacios de nombres por defecto:',
-'default' => 'por defecto',
-'files' => 'Archivos',
-'prefs-custom-css' => 'CSS preferido',
-'prefs-custom-js' => 'JS preferido',
+'preferences' => 'Preferencias',
+'mypreferences' => 'Mis preferencias',
+'prefs-edits' => 'Cantidad de ediciones:',
+'prefsnologin' => 'No está identificado',
+'prefsnologintext' => 'Debes haber <span class="plainlinks">[{{fullurl:Especial:UserLogin|returnto=$1}} iniciado sesión]</span> para cambiar las preferencias de usuario.',
+'changepassword' => 'Cambiar contraseña',
+'prefs-skin' => 'Apariencia',
+'skin-preview' => 'Previsualizar',
+'prefs-math' => 'Fórmulas',
+'datedefault' => 'Sin preferencia',
+'prefs-datetime' => 'Fecha y hora',
+'prefs-personal' => 'Datos personales',
+'prefs-rc' => 'Cambios recientes',
+'prefs-watchlist' => 'Seguimiento',
+'prefs-watchlist-days' => 'Número de días a mostrar en la lista de seguimiento:',
+'prefs-watchlist-days-max' => '(máximo 7 días)',
+'prefs-watchlist-edits' => 'Número de ediciones a mostrar en la lista extendida:',
+'prefs-watchlist-edits-max' => '(máximo: 1000)',
+'prefs-watchlist-token' => 'Ficha de lista de seguimiento:',
+'prefs-misc' => 'Miscelánea',
+'prefs-resetpass' => 'Cambiar contraseña',
+'prefs-email' => 'Opciones de correo electrónico',
+'prefs-rendering' => 'Apariencia',
+'saveprefs' => 'Guardar',
+'resetprefs' => 'Restaurar preferencias por defecto',
+'restoreprefs' => 'Restaure todos las configuraciones por defecto',
+'prefs-editing' => 'Edición',
+'prefs-edit-boxsize' => 'Tamaño de la ventana de edición.',
+'rows' => 'Filas:',
+'columns' => 'Columnas:',
+'searchresultshead' => 'Búsquedas',
+'resultsperpage' => 'Resultados por página:',
+'contextlines' => 'Número de líneas de contexto por resultado',
+'contextchars' => 'Caracteres de contexto por línea',
+'stub-threshold' => 'Límite para formato de <a href="#" class="stub">enlace a esbozo</a> (bytes):',
+'recentchangesdays' => 'Días a mostrar en cambios recientes:',
+'recentchangesdays-max' => '(máximo {{PLURAL:$1|un día|$1 días}})',
+'recentchangescount' => 'Número de ediciones a mostrar por defecto:',
+'prefs-help-recentchangescount' => 'Esto incluye cambios recientes, historiales de página, y registros.',
+'prefs-help-watchlist-token' => 'Rellenar este campo con una clave secreta generará un canal RSS para tu lista de seguimiento.
+Cualquiera que conozca la clave en este campo será capaz de leer tu lista de seguimiento, así que escoge un valor seguro. Aquí hay un valor generado aleatoriamente que puedes usar: $1',
+'savedprefs' => 'Sus preferencias han sido grabadas.',
+'timezonelegend' => 'Huso horario:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => 'Usar la hora del servidor',
+'timezoneuseoffset' => 'Otra (especifica la diferencia horaria)',
+'timezoneoffset' => 'Diferencia¹:',
+'servertime' => 'Hora del servidor:',
+'guesstimezone' => 'Rellenar a partir de la hora del navegador',
+'timezoneregion-africa' => 'África',
+'timezoneregion-america' => 'América',
+'timezoneregion-antarctica' => 'Antártica',
+'timezoneregion-arctic' => 'Ártico',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Océano Atlántico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Océano Índico',
+'timezoneregion-pacific' => 'Océano Pacífico',
+'allowemail' => 'Aceptar correo electrónico de otros usuarios',
+'prefs-searchoptions' => 'Opciones de búsqueda',
+'prefs-namespaces' => 'Espacios de nombres',
+'defaultns' => 'Buscar en estos espacios de nombres por defecto:',
+'default' => 'por defecto',
+'prefs-files' => 'Archivos',
+'prefs-custom-css' => 'CSS preferido',
+'prefs-custom-js' => 'JS preferido',
+'prefs-reset-intro' => 'Puedes usar esta página para restaurar tus preferencias a los por defecto del sitio.
+Esto no puede ser deshecho.',
+'prefs-emailconfirm-label' => 'Confirmación de correo electrónico:',
+'prefs-textboxsize' => 'Tamaño de la página de edición',
+'youremail' => 'Correo electrónico:',
+'username' => 'Nombre de usuario:',
+'uid' => 'ID de usuario:',
+'prefs-memberingroups' => 'Miembro {{PLURAL:$1|del grupo|de los grupos}}:',
+'prefs-registration' => 'Tiempo de registro:',
+'yourrealname' => 'Nombre real:',
+'yourlanguage' => 'Idioma:',
+'yourvariant' => 'Variante lingüística',
+'yournick' => 'Nueva firma:',
+'prefs-help-signature' => 'Los comentarios en páginas de discusión deberían estar firmados con "<nowiki>~~~~</nowiki>", que se convertirá en tu firma y fecha.',
+'badsig' => 'El código de tu firma no es válido; comprueba las etiquetas HTML.',
+'badsiglength' => 'La firma es muy larga. Debe contener un máximo de {{PLURAL:$1|un caracter|$1 caracteres}}.',
+'yourgender' => 'Género:',
+'gender-unknown' => 'Sin especificar',
+'gender-male' => 'Masculino',
+'gender-female' => 'Femenino',
+'prefs-help-gender' => 'Opcional: Usada para tarea de corrección de género por el software. Esta información será pública.',
+'email' => 'Correo electrónico',
+'prefs-help-realname' => 'El nombre real es opcional. Si decides proporcionarlo, se usará para dar atribución a tu trabajo.',
+'prefs-help-email' => 'La dirección de correo es opcional, pero permite enviar una nueva contraseña en caso de olvidarla.
+También puede permitir a otros usuarios que te contacten a través de tu página de usuario o de tu página de discusión sin necesidad de revelar su identidad.',
+'prefs-help-email-required' => 'Es necesario proporcionar una dirección de correo electrónico.',
+'prefs-info' => 'Información básica',
+'prefs-i18n' => 'Internacionalización',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Formato de fecha',
+'prefs-timeoffset' => 'Diferencia horaria',
+'prefs-advancedediting' => 'Opciones avanzadas',
+'prefs-advancedrc' => 'Opciones avanzadas',
+'prefs-advancedrendering' => 'Opciones avanzadas',
+'prefs-advancedsearchoptions' => 'Opciones avanzadas',
+'prefs-advancedwatchlist' => 'Opciones avanzadas',
+'prefs-display' => 'Opciones de mostrado',
+'prefs-diffs' => 'Diferencias',
# User rights
-'userrights' => 'Configuración de permisos de usuarios', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Configurar grupos de usuarios',
-'userrights-user-editname' => 'Escriba un nombre de usuario:',
-'editusergroup' => 'Modificar grupos de usuarios',
-'editinguser' => "Cambiando los derechos del usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] {{int:pipe-separator}} [[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modificar grupos de usuarios',
-'saveusergroups' => 'Guardar grupos de usuarios',
-'userrights-groupsmember' => 'Miembro de:',
-'userrights-groups-help' => 'Puedes modificar los grupos a los que pertenece este usuario:
+'userrights' => 'Configuración de permisos de usuarios',
+'userrights-lookup-user' => 'Configurar grupos de usuarios',
+'userrights-user-editname' => 'Escriba un nombre de usuario:',
+'editusergroup' => 'Modificar grupos de usuarios',
+'editinguser' => "Cambiando los derechos del usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] {{int:pipe-separator}} [[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modificar grupos de usuarios',
+'saveusergroups' => 'Guardar grupos de usuarios',
+'userrights-groupsmember' => 'Miembro de:',
+'userrights-groupsmember-auto' => 'Miembro implícito de:',
+'userrights-groups-help' => 'Puedes modificar los grupos a los que pertenece este usuario:
* Un recuadro marcado significa que el usuario está en ese grupo.
* Un recuadro no marcado significa que el usuario no está en ese grupo.
* Un * indica que no podrás retirar el grupo una vez que lo concedas, o viceversa.',
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'No tienes permiso para editar los grupos a los que pertenece un usuario en otros wikis.',
-'userrights-nodatabase' => 'La base de datos $1 no existe o no es local.',
-'userrights-nologin' => 'Debes [[Special:UserLogin|iniciar sesión]] con una cuenta de administrador para poder editar los grupos de los usuarios.',
-'userrights-notallowed' => 'No tienes permiso para realizar cambios de grupos a usuarios.',
-'userrights-changeable-col' => 'Grupos que puedes cambiar',
-'userrights-unchangeable-col' => 'Grupos que no puedes cambiar',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'No tienes permiso para editar los grupos a los que pertenece un usuario en otros wikis.',
+'userrights-nodatabase' => 'La base de datos $1 no existe o no es local.',
+'userrights-nologin' => 'Debes [[Special:UserLogin|iniciar sesión]] con una cuenta de administrador para poder editar los grupos de los usuarios.',
+'userrights-notallowed' => 'No tienes permiso para realizar cambios de grupos a usuarios.',
+'userrights-changeable-col' => 'Grupos que puedes cambiar',
+'userrights-unchangeable-col' => 'Grupos que no puedes cambiar',
# Groups
'group' => 'Grupo:',
@@ -1329,6 +1470,7 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
'right-bigdelete' => 'Borrar páginas con historiales grandes',
'right-deleterevision' => 'Borrar y restaurar revisiones específicas de páginas',
'right-deletedhistory' => 'Ver el historial de páginas borradas, sin el texto asociado',
+'right-deletedtext' => 'Ver texto borrado y cambios entre revisiones borradas',
'right-browsearchive' => 'Buscar páginas borradas',
'right-undelete' => 'Restaurar una página',
'right-suppressrevision' => 'Revisar y restaurar revisiones escondidas por administradores',
@@ -1342,6 +1484,8 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
'right-editprotected' => 'Editar páginas protegidas (sin la protección «en cascada»)',
'right-editinterface' => 'Editar la interfaz de usuario',
'right-editusercssjs' => 'Editar las páginas de CSS y JS de otros usuarios',
+'right-editusercss' => 'Editar las páginas de CSS de otros usuarios',
+'right-edituserjs' => 'Editar las páginas de JS de otros usuarios',
'right-rollback' => 'Revertir rápidamente las ediciones del último usuario que modificó una página particular',
'right-markbotedits' => 'Marcar ediciones deshechas como ediciones de un bot',
'right-noratelimit' => 'No afectado por límites de frecuencia',
@@ -1358,6 +1502,8 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
'right-siteadmin' => 'Bloquear y desbloquear la base de datos',
'right-reset-passwords' => 'Reajustar la contraseña de otros usuarios',
'right-override-export-depth' => 'Exporta páginas incluyendo aquellas enlazadas hasta una profundidad de 5',
+'right-versiondetail' => 'Mostrar información ampliada de la versión del software',
+'right-sendemail' => 'Enviar un correo electrónico a otros usuarios',
# User rights log
'rightslog' => 'Cambios de perfil de usuario',
@@ -1407,6 +1553,15 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
'recentchanges-legend' => 'Opciones sobre cambios recientes',
'recentchangestext' => 'Sigue los cambios más recientes de la wiki en esta página.',
'recentchanges-feed-description' => 'Seguir los cambios más recientes en el wiki en este feed.',
+'recentchanges-label-legend' => 'Leyenda: $1.',
+'recentchanges-legend-newpage' => '$1 - página nueva',
+'recentchanges-label-newpage' => 'Esta edición creó una nueva página',
+'recentchanges-legend-minor' => '$1 - edición menor',
+'recentchanges-label-minor' => 'Esta es una edición menor',
+'recentchanges-legend-bot' => '$1 - edición de bot',
+'recentchanges-label-bot' => 'Esta edición fue realizada por un robot',
+'recentchanges-legend-unpatrolled' => '$1 - edición sin patrullar',
+'recentchanges-label-unpatrolled' => 'Esta edición todavía no se ha patrullado',
'rcnote' => "Debajo {{PLURAL:$1|hay '''1''' cambio efectuado|están los últimos '''$1''' cambios efectuados}} en {{PLURAL:$2|el último día|los últimos '''$2''' días}}, hasta el $4, $5.",
'rcnotefrom' => 'A continuación se muestran los cambios desde <b>$2</b> (hasta <b>$1</b>).',
'rclistfrom' => 'Mostrar nuevos cambios desde $1',
@@ -1433,6 +1588,8 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
# Recent changes linked
'recentchangeslinked' => 'Cambios relacionados',
+'recentchangeslinked-feed' => 'Cambios relacionados',
+'recentchangeslinked-toolbox' => 'Cambios relacionados',
'recentchangeslinked-title' => 'Cambios relacionados con "$1"',
'recentchangeslinked-noresult' => 'No hubo cambios en las páginas enlazadas durante el periodo indicado.',
'recentchangeslinked-summary' => "Esta página es una lista de los últimos cambios en las páginas enlazadas desde una página (o en las pertenecientes a una categoría). Las páginas que están en tu [[Special:Watchlist|lista de seguimiento]] aparecen en '''negrita'''.",
@@ -1442,8 +1599,8 @@ Las búsquedas fallidas suelen producirse al buscar palabras comunes como «la»
# Upload
'upload' => 'Subir archivo',
'uploadbtn' => 'Subir un archivo',
-'reupload' => 'Subir otra vez',
'reuploaddesc' => 'Regresar al formulario para subir.',
+'upload-tryagain' => 'Envíe la descripción del archivo modificado',
'uploadnologin' => 'No has iniciado sesión',
'uploadnologintext' => 'Tienes que [[Special:UserLogin|iniciar sesión]] para poder subir archivos.',
'upload_directory_missing' => 'El directorio de subida de archivos ($1) no existe, y no puede ser creado por el servidor.',
@@ -1476,6 +1633,7 @@ Mira la [[Special:NewFiles|galería de archivos nuevos]] para una descripción v
'minlength1' => 'Los nombres de archivo deben tener al menos una letra.',
'illegalfilename' => 'El nombre de archivo «$1» contiene caracteres que no están permitidos en títulos de páginas. Por favor, renombra el archivo e intenta volver a subirlo.',
'badfilename' => 'El nombre de la imagen se ha cambiado a "$1".',
+'filetype-mime-mismatch' => 'La extensión del archivo no coincide con su tipo MIME.',
'filetype-badmime' => 'No se permite subir archivos de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'No se puede subir este fichero porque Internet Explorer podría considerarlo como «$1», que es un tipo de fichero deshabilitado y potencialmente peligroso.',
'filetype-unwanted-type' => "'''«.$1»''' no está entre los tipos de fichero aconsejados.
@@ -1496,7 +1654,6 @@ El resumen que ha ingresado no aparecerá en la página de descripción. Para qu
* Nombre del archivo que se está subiendo: '''<tt>[[:$1]]</tt>'''
* Nombre del archivo ya existente: '''<tt>[[:$2]]</tt>'''
Por favor, elige un nombre diferente.",
-'fileexists-thumb' => "<center>'''Imagen existente'''</center>",
'fileexists-thumbnail-yes' => "El archivo parece ser una imagen de tamaño reducido ''(thumbnail)''. [[$1|thumb]]
Por favor comprueba el archivo '''<tt>[[:$1]]</tt>'''.
Si el archivo comprobado es la misma imagen a tamaño original no es necesario subir un thumbnail más.",
@@ -1510,6 +1667,7 @@ Si todavía quiere subir su archivo, por favor, regrese a la página anterior y
'file-deleted-duplicate' => 'Un archivo idéntico a este ([[$1]]) ha sido borrado con anterioridad. Debes comprobar el historial de borrado del archivo ante de volver a subirlo.',
'successfulupload' => 'Subida con éxito',
'uploadwarning' => 'Advertencia de subida de archivo',
+'uploadwarning-text' => 'Por favor, modifique la descripción del archivo abajo indicada e inténtelo de nuevo.',
'savefile' => 'Guardar archivo',
'uploadedimage' => 'subió «[[$1]]»',
'overwroteimage' => 'subió una nueva versión de «[[$1]]»',
@@ -1517,11 +1675,14 @@ Si todavía quiere subir su archivo, por favor, regrese a la página anterior y
'uploaddisabledtext' => 'No es posible subir archivos.',
'php-uploaddisabledtext' => 'La subida de archivos está deshabilitada en PHP. Por favor compruebe <code>file_uploads</code> en php.ini.',
'uploadscripted' => 'Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.',
-'uploadcorrupt' => 'Este archivo está corrupto o la extensión indicada no se corresponde con el tipo de archivo. Por favor, comprueba el archivo y vuelve a subirlo.',
'uploadvirus' => '¡El archivo contiene un virus! Detalles: $1',
+'upload-source' => 'Archivo fuente',
'sourcefilename' => 'Nombre del archivo origen:',
+'sourceurl' => 'Dirección original:',
'destfilename' => 'Nombre del archivo de destino:',
'upload-maxfilesize' => 'Tamaño máximo del archivo: $1',
+'upload-description' => 'Descripción de archivo',
+'upload-options' => 'Opciones de carga',
'watchthisupload' => 'Vigilar este archivo',
'filewasdeleted' => 'Un archivo con este nombre se subió con anterioridad y posteriormente ha sido borrado. Deberías revisar el $1 antes de subirlo de nuevo.',
'upload-wasdeleted' => "'''Atención: Estás subiendo un archivo que ha sido borrado previamente.'''
@@ -1532,12 +1693,43 @@ A continuación se muestra el registro de borrado de este archivo:",
Por favor, elige un nombre más descriptivo.",
-'upload-proto-error' => 'Protocolo incorrecto',
-'upload-proto-error-text' => 'Para subir archivos desde otra página la URL debe comenzar por <code>http://</code> o <code>ftp://</code>.',
-'upload-file-error' => 'Error interno al subir el archivo',
-'upload-file-error-text' => 'Ha ocurrido un error interno mientras se intentaba crear un fichero temporal en el servidor. Por favor, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
-'upload-misc-error' => 'Error desconocido en la subida',
-'upload-misc-error-text' => 'Ha ocurrido un error durante la subida. Por favor verifica que la URL es válida y accesible e inténtalo de nuevo. Si el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
+'upload-proto-error' => 'Protocolo incorrecto',
+'upload-proto-error-text' => 'Para subir archivos desde otra página la URL debe comenzar por <code>http://</code> o <code>ftp://</code>.',
+'upload-file-error' => 'Error interno al subir el archivo',
+'upload-file-error-text' => 'Ha ocurrido un error interno mientras se intentaba crear un fichero temporal en el servidor. Por favor, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
+'upload-misc-error' => 'Error desconocido en la subida',
+'upload-misc-error-text' => 'Ha ocurrido un error durante la subida. Por favor verifica que la URL es válida y accesible e inténtalo de nuevo. Si el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
+'upload-too-many-redirects' => 'La URL contenía demasiadas redirecciones',
+'upload-unknown-size' => 'Tamaño desconocido',
+'upload-http-error' => 'Ha ocurrido un error HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acceso denegado',
+'img-auth-nopathinfo' => 'Falta PATH_INFO.
+Tu servidor no está configurado para pasar esta información.
+Puede que este basado en CGI y no sea compatible con img_auth.
+Véase http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Ruta solicitad no esá en el directorio de cargas configurado',
+'img-auth-badtitle' => 'Incapaz de construir un título válido de "$1".',
+'img-auth-nologinnWL' => 'No has iniciado sesión y "$1" no está en la lista blanca.',
+'img-auth-nofile' => 'Archivo "$1" no existe.',
+'img-auth-isdir' => 'Estás tratando de acceder a un directorio "$1".
+Solamente acceso a archivos está permitido.',
+'img-auth-streaming' => 'Streaming "$1".',
+'img-auth-public' => 'La función de img_auth.php es mostrar archivos desde una wiki privada.
+Esta wiki está configurada como wiki pública.
+Para optima seguridad, img_auth.php está deshabilitado.',
+'img-auth-noread' => 'Usuario no tiene acceso para leer "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL inválida: $1',
+'http-invalid-scheme' => 'Las URLs con el esquema "$1" no son compatibles',
+'http-request-error' => 'solicitu de HTTP fallida debido a un error desconocido.',
+'http-read-error' => 'Error de lectura HTTP.',
+'http-timed-out' => 'La solicitud HTTP ha expirado.',
+'http-curl-error' => 'Error al recuperar el URL: $1',
+'http-host-unreachable' => 'No fue posible acceder a la URL.',
+'http-bad-status' => 'Ha habido un problema durante la solicitud HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'No se pudo alcanzar la URL',
@@ -1546,6 +1738,7 @@ Por favor, elige un nombre más descriptivo.",
'upload-curl-error28-text' => 'La página tardó demasiado en responder. Por favor, comprueba que el servidor está funcionando, espera un poco y vuelva a intentarlo. Quizás desees intentarlo en otro momento de menos carga.',
'license' => 'Licencia:',
+'license-header' => 'Licencia',
'nolicense' => 'Ninguna seleccionada',
'license-nopreview' => '(Previsualización no disponible)',
'upload_source_url' => ' (una URL válida y accesible públicamente)',
@@ -1566,6 +1759,7 @@ Un click sobre el encabezamiento de la columna cambia el orden.',
'listfiles_count' => 'Versiones',
# File description page
+'file-anchor-link' => 'Archivo',
'filehist' => 'Historial del archivo',
'filehist-help' => 'Haz clic sobre una fecha/hora para ver el
archivo a esa fecha.',
@@ -1581,6 +1775,7 @@ archivo a esa fecha.',
'filehist-dimensions' => 'Dimensiones',
'filehist-filesize' => 'Tamaño',
'filehist-comment' => 'Comentario',
+'filehist-missing' => 'No se encuentra el archivo',
'imagelinks' => 'Enlaces al archivo',
'linkstoimage' => '{{PLURAL:$1|La siguiente página enlaza|Las siguientes páginas enlazan}} a este archivo:',
'linkstoimage-more' => 'Hay más de {{PLURAL:$1|una página que enlaza|$1 páginas que enlazan}} con este archivo.
@@ -1591,15 +1786,16 @@ También puedes consultar la [[Special:WhatLinksHere/$2|lista completa]].',
'morelinkstoimage' => 'Vea [[Special:WhatLinksHere/$1|más enlaces]] a este archivo.',
'redirectstofile' => '{{PLURAL:$1|El siguiente fichero redirige|Los siguientes $1 ficheros redirigen}} a este:',
'duplicatesoffile' => '{{PLURAL:$1|El siguiente archivo es un duplicado|Los siguientes $1 archivos son duplicados}} de éste ([[Special:FileDuplicateSearch/$2|más detalles]]):',
-'sharedupload' => 'Este archivo es de $1 y puede ser usado por otros proyectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Puede consultar $1 para más información.',
-'shareduploadwiki-desc' => 'La descripcion en su $1 hay mostrada debajo.',
-'shareduploadwiki-linktext' => 'página de descripción del archivo',
-'noimage' => 'No existe un archivo con este nombre, pero puede $1.',
-'noimage-linktext' => 'subir uno',
+'sharedupload' => 'Este archivo es de $1 y puede ser usado por otros proyectos.',
+'sharedupload-desc-there' => 'Este archivo es de $1 y puede ser usado por otros proyectos.
+Por favor mira la [$2 página de descripción del archivo] para información adicional.',
+'sharedupload-desc-here' => 'Este archivo es de $1 y puede ser usado por otros proyectos.
+La descripción en su [$2 página de descripción del archivo] está mostrada debajo.',
+'filepage-nofile' => 'No existe ningún archivo con este nombre.',
+'filepage-nofile-link' => 'No existe ningún archivo con este nombre, pero puedes [$1 subirlo].',
'uploadnewversion-linktext' => 'Subir una nueva versión de este archivo',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'un repositorio compartido', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'un repositorio compartido',
# File reversion
'filerevert' => 'Revertir $1',
@@ -1628,6 +1824,7 @@ También puedes consultar la [[Special:WhatLinksHere/$2|lista completa]].',
** Violación de copyright
** Archivo duplicado',
'filedelete-edit-reasonlist' => 'Edita los motivos del borrado',
+'filedelete-maintenance' => 'Borrado y restauración de archivos temporalmente deshabilitados durante el mantenimiento.',
# MIME search
'mimesearch' => 'Búsqueda MIME',
@@ -1649,7 +1846,7 @@ Entrada: contenttype/subtype, p. ej. <tt>image/jpeg</tt>.',
# Random page
'randompage' => 'Página aleatoria',
-'randompage-nopages' => 'No hay páginas en el espacio de nombres «$1».',
+'randompage-nopages' => 'No hay páginas en los siguientes {{PLURAL:$2|espacio de nombre|espacios de nombre}}: $1.',
# Random redirect
'randomredirect' => 'Ir a una redirección cualquiera',
@@ -1661,6 +1858,7 @@ Entrada: contenttype/subtype, p. ej. <tt>image/jpeg</tt>.',
'statistics-header-edits' => 'Estadísticas de ediciones',
'statistics-header-views' => 'Estadísticas de visitas',
'statistics-header-users' => 'Estadísticas de usuario',
+'statistics-header-hooks' => 'Otras estadísticas',
'statistics-articles' => 'Páginas de contenido',
'statistics-pages' => 'Páginas',
'statistics-pages-desc' => 'Todas las páginas de la wiki, incluyendo discusiones, redirecciones, etc.',
@@ -1690,8 +1888,8 @@ Las entradas <s>tachadas</s> han sido resueltas.',
'brokenredirects' => 'Redirecciones incorrectas',
'brokenredirectstext' => 'Las siguientes redirecciones enlazan a páginas que no existen:',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(borrar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'borrar',
'withoutinterwiki' => 'Páginas sin interwikis',
'withoutinterwiki-summary' => 'Las siguientes páginas no enlazan a versiones en otros idiomas:',
@@ -1798,16 +1996,17 @@ Puedes filtrar la vista seleccionando un tipo de registro, el nombre del usuario
# Special:Categories
'categories' => 'Categorías',
-'categoriespagetext' => 'Las siguientes categorías contienen páginas o ficheros.
-No se muestran las [[Special:UnusedCategories|categorías sin uso]].
+'categoriespagetext' => 'Las siguientes {{PLURAL:$1|categoría contiene|categorías contienen}} páginas o medios.
+No se muestran aquí las [[Special:UnusedCategories|categorías sin uso]].
Véase también las [[Special:WantedCategories|categorías requeridas]].',
'categoriesfrom' => 'Mostrar categorías que empiecen por:',
'special-categories-sort-count' => 'ordenar por conteo',
'special-categories-sort-abc' => 'ordenar alfabéticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribuciones borradas de usuario',
-'deletedcontributions-title' => 'Contribuciones borradas de usuario',
+'deletedcontributions' => 'Contribuciones borradas de usuario',
+'deletedcontributions-title' => 'Contribuciones borradas de usuario',
+'sp-deletedcontributions-contribs' => 'contribuciones',
# Special:LinkSearch
'linksearch' => 'Enlaces externos',
@@ -1823,6 +2022,16 @@ Protocolos soportados: <tt>$1</tt>',
'listusersfrom' => 'Mostrar usuarios que empiecen por:',
'listusers-submit' => 'Mostrar',
'listusers-noresult' => 'No se encontró al usuario.',
+'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuarios activos',
+'activeusers-intro' => 'Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|edición|ediciones}} en los últimos {{PLURAL:$3|día|$3 días}}',
+'activeusers-from' => 'Mostrando a los usuarios empezando por:',
+'activeusers-hidebots' => 'Ocultar robots',
+'activeusers-hidesysops' => 'Ocultar administradores',
+'activeusers-noresult' => 'No se encontraron usuarios.',
# Special:Log/newusers
'newuserlogpage' => 'Registro de creación de usuarios',
@@ -1833,17 +2042,23 @@ Protocolos soportados: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Cuenta creada automáticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Permisos del grupo de usuarios',
-'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
+'listgrouprights' => 'Permisos del grupo de usuarios',
+'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
Puede haber información adicional sobre privilegios individuales en [[{{MediaWiki:Listgrouprights-helppage}}]]',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Derechos',
-'listgrouprights-helppage' => 'Help:Derechos de grupos',
-'listgrouprights-members' => '(ver los miembros de este grupo)',
-'listgrouprights-addgroup' => 'Agregar {{PLURAL:$2|grupo|grupos}}: $1',
-'listgrouprights-removegroup' => 'Eliminar {{PLURAL:$2|grupo|grupos}}: $1',
-'listgrouprights-addgroup-all' => 'Agregar todos los grupos',
-'listgrouprights-removegroup-all' => 'Eliminar todos los grupos',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Derecho concedido</span>
+* <span class="listgrouprights-revoked">Derecho revocado</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Derechos',
+'listgrouprights-helppage' => 'Help:Derechos de grupos',
+'listgrouprights-members' => '(ver los miembros de este grupo)',
+'listgrouprights-addgroup' => 'Agregar {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-removegroup' => 'Eliminar {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Agregar todos los grupos',
+'listgrouprights-removegroup-all' => 'Eliminar todos los grupos',
+'listgrouprights-addgroup-self' => 'Agregar {{PLURAL:$2|grupo|grupos}} a tu propia cuenta: $1',
+'listgrouprights-removegroup-self' => 'Eliminar {{PLURAL:$2|grupo|grupos}} de tu propia cuenta: $1',
+'listgrouprights-addgroup-self-all' => 'Agregar todos los grupos a tu propia cuenta',
+'listgrouprights-removegroup-self-all' => 'Eliminar todos los grupos de tu propia cuenta',
# E-mail user
'mailnologin' => 'Ninguna dirección de envio',
@@ -1918,27 +2133,31 @@ Cuando quieras eliminar la página de tu lista de seguimiento, presiona «Dejar
'enotif_anon_editor' => 'usuario anónimo $1',
'enotif_body' => 'Estimado/a $WATCHINGUSERNAME,
-La página de {{SITENAME}} «$PAGETITLE»
-ha sido $CHANGEDORCREATED por el usuario $PAGEEDITOR el $PAGEEDITDATE.
-La versión actual se encuentra en {{fullurl:$PAGETITLE}}
+La página de {{SITENAME}} $PAGETITLE ha sido $CHANGEDORCREATED el $PAGEEDITDATE por el usuario $PAGEEDITOR.
+La versión actual se encuentra en $PAGETITLE_URL
$NEWPAGE
El resumen de edición es: $PAGESUMMARY $PAGEMINOREDIT
-Para comunicarse con el usuario:
-por correo electrónico: {{fullurl:Special:Emailuser|target=$PAGEEDITOR}}
-en el wiki: {{fullurl:User:$PAGEEDITOR}}
+Contacta al editor:
+Correo electrónico: $PAGEEDITOR_EMAIL
+Wiki: $PAGEEDITOR_WIKI
-Para recibir nuevas notificaciones de cambios de esta página, deberá visitarla nuevamente.
-También puede, en su lista de seguimiento, modificar las opciones de notificación de sus
-páginas vigiladas.
+No habrá otras notificaciones en caso de cambios adicionales, a menos que visites esta página nuevamente.
+También puedes reestablecer las notificaciones para todas tus páginas vigiladas en tu página de vigilancia.
El sistema de notificación de {{SITENAME}}.
--
-Cambie las opciones de su lista de seguimiento en:
-{{fullurl:Special:Watchlist|edit=yes}}',
+Para cambiar las opciones de tu lista de seguimiento, visita:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Para borrar la página de tu lista de seguimiento visita:
+$UNWATCHURL
+
+Retroalimentación y asistencia adicional:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Borrar esta página',
@@ -1949,13 +2168,14 @@ Cambie las opciones de su lista de seguimiento en:
'exblank' => 'página estaba vacía',
'delete-confirm' => 'Borrar "$1"',
'delete-legend' => 'Borrar',
-'historywarning' => 'Atención: La página que está a punto de borrar tiene un historial:',
+'historywarning' => "'''Advertencia:''' La página que está a punto de borrar tiene un historial de aproximadamente $1 {{PLURAL:$1|revisión|revisiones}}:",
'confirmdeletetext' => 'Estás a punto de borrar una página
en forma permanente,
así como todo su historial, de la base de datos.
Por favor, confirma que realmente quieres hacer eso, que entiendes las
consecuencias, y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|Políticas]].',
'actioncomplete' => 'Acción realizada',
+'actionfailed' => 'Acción fracasó',
'deletedtext' => '"<nowiki>$1</nowiki>" ha sido borrado.
Véase $2 para un registro de los borrados recientes.',
'deletedarticle' => 'borró «[[$1]]»',
@@ -1976,20 +2196,21 @@ Véase $2 para un registro de los borrados recientes.',
'delete-warning-toobig' => 'Esta página tiene un historial de más de {{PLURAL:$1|revisión|revisiones}}. Eliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}. Ten cuidado al borrar.',
# Rollback
-'rollback' => 'Revertir ediciones',
-'rollback_short' => 'Revertir',
-'rollbacklink' => 'Revertir',
-'rollbackfailed' => 'No se pudo revertir',
-'cantrollback' => 'No se pueden revertir la edición;
+'rollback' => 'Revertir ediciones',
+'rollback_short' => 'Revertir',
+'rollbacklink' => 'Revertir',
+'rollbackfailed' => 'No se pudo revertir',
+'cantrollback' => 'No se pueden revertir la edición;
el último colaborador es el único autor de esta página.',
-'alreadyrolled' => 'No se puede revertir la última edición de [[:$1]] hecha por [[User:$2|$2]] ([[User talk:$2|discusión]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => 'No se puede revertir la última edición de [[:$1]] hecha por [[User:$2|$2]] ([[User talk:$2|discusión]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
alguien más ya ha editado o revertido esa página.
La última edición fue hecha por [[User:$3|$3]] ([[User talk:$3|discusión]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "El resumen de la edición fue: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Revertidos los cambios de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc.]]) a la última edición de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Revertidas las ediciones de $1; recuperada la última versión de $2.',
-'sessionfailure' => 'Parece que hay un problema con tu sesión;
+'editcomment' => "El resumen de la edición fue: \"''\$1''\".",
+'revertpage' => 'Revertidos los cambios de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc.]]) a la última edición de [[User:$1|$1]]',
+'revertpage-nouser' => 'Revertidas ediciones hechas por (nombre de usuario eliminado) a la última revisión hecha por [[User:$1|$1]]',
+'rollback-success' => 'Revertidas las ediciones de $1; recuperada la última versión de $2.',
+'sessionfailure' => 'Parece que hay un problema con tu sesión;
esta acción ha sido cancelada como medida de precaución contra secuestros de sesión.
Por favor, pulsa "Atrás", recarga la página de la que viniste e inténtalo de nuevo.',
@@ -2007,7 +2228,7 @@ Por favor, pulsa "Atrás", recarga la página de la que viniste e inténtalo de
'protectexpiry' => 'Caducidad:',
'protect_expiry_invalid' => 'Tiempo de caducidad incorrecto.',
'protect_expiry_old' => 'El tiempo de expiración está en el pasado.',
-'protect-unchain' => 'Configurar permisos para traslados',
+'protect-unchain-permissions' => 'Desbloquear opciones de protección adicionales',
'protect-text' => "Puedes ver y modificar el nivel de protección de la página '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "No puede cambiar los niveles de protección estando bloqueado. A continuación se muestran las opciones actuales de la página '''$1''':",
'protect-locked-dblock' => "Los niveles de protección no se pueden cambiar debido a un bloqueo activo de la base de datos.
@@ -2035,7 +2256,7 @@ A continuación se muestran las opciones actuales de la página '''$1''':",
**Guerra de ediciones
**Página muy visitada',
'protect-edit-reasonlist' => 'Editar las razones de protección',
-'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
'restriction-type' => 'Permiso:',
'restriction-level' => 'Nivel de restricción:',
'minimum-size' => 'Tamaño mínimo',
@@ -2073,6 +2294,7 @@ o a que la revisión haya sido restaurada o eliminada del archivo.',
'undelete-nodiff' => 'No existe una revisión previa.',
'undeletebtn' => 'Restaurar',
'undeletelink' => 'ver/restaurar',
+'undeleteviewlink' => 'ver',
'undeletereset' => 'Cancelar',
'undeleteinvert' => 'Invertir selección',
'undeletecomment' => 'Razón:',
@@ -2112,19 +2334,23 @@ $1',
'contributions-title' => 'Contribuciones {{GENDER:$1|del usuario|de la usuaria}} $1',
'mycontris' => 'Mis contribuciones',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'No se encontraron cambios que cumplieran estos criterios.', # Optional parameter: $1 is the user name
+'nocontribs' => 'No se encontraron cambios que cumplieran estos criterios.',
'uctop' => ' (última modificación)',
'month' => 'Desde el mes (y anterior):',
'year' => 'Desde el año (y anterior):',
-'sp-contributions-newbies' => 'Mostrar solo las contribuciones de usuarios nuevos',
-'sp-contributions-newbies-sub' => 'Para cuentas nuevas',
-'sp-contributions-newbies-title' => 'Contribuciones de usuarios nuevos',
-'sp-contributions-blocklog' => 'registro de bloqueos',
-'sp-contributions-logs' => 'registros',
-'sp-contributions-search' => 'Buscar contribuciones',
-'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
-'sp-contributions-submit' => 'Buscar',
+'sp-contributions-newbies' => 'Mostrar solo las contribuciones de usuarios nuevos',
+'sp-contributions-newbies-sub' => 'Para cuentas nuevas',
+'sp-contributions-newbies-title' => 'Contribuciones de usuarios nuevos',
+'sp-contributions-blocklog' => 'registro de bloqueos',
+'sp-contributions-deleted' => 'contribuciones de usuario borradas',
+'sp-contributions-logs' => 'registros',
+'sp-contributions-talk' => 'discusión',
+'sp-contributions-userrights' => 'administración de derechos de usuarios',
+'sp-contributions-blocked-notice' => 'Este usuario está actualmente bloqueado. La última entrada del registro de bloqueos es presentada debajo para mayor referencia:',
+'sp-contributions-search' => 'Buscar contribuciones',
+'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
+'sp-contributions-submit' => 'Buscar',
# What links here
'whatlinkshere' => 'Lo que enlaza aquí',
@@ -2147,6 +2373,7 @@ $1',
# Block/unblock
'blockip' => 'Bloquear usuario',
+'blockip-title' => 'Bloquear usuario',
'blockip-legend' => 'Bloquear usuario',
'blockiptext' => 'Usa el siguiente formulario para bloquear el acceso de escritura desde una dirección IP específica o nombre de usuario.
Esto debería hacerse sólo para prevenir vandalismos, y de acuerdo a las [[{{MediaWiki:Policy-url}}|políticas]].
@@ -2170,7 +2397,7 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
'ipbenableautoblock' => 'Bloquear automáticamente la dirección IP usada por este usuario y cualquier IP posterior desde la cual intente editar',
'ipbsubmit' => 'Bloquear a este usuario',
'ipbother' => 'Especificar caducidad',
-'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
'ipbotheroption' => 'otro',
'ipbotherreason' => 'Otra razón:',
'ipbhidename' => 'Ocultar nombre de usuario de ediciones y listas',
@@ -2199,9 +2426,11 @@ Véase la [[Special:IPBlockList|lista de bloqueos]] para revisarlo.',
'ipblocklist-sh-tempblocks' => '$1 bloqueos temporales',
'ipblocklist-sh-addressblocks' => '$1 bloqueos de una sola dirección IP',
'ipblocklist-submit' => 'Buscar',
+'ipblocklist-localblock' => 'Bloqueo local',
+'ipblocklist-otherblocks' => 'Otros {{PLURAL:$1|bloqueo| bloqueos}}',
'blocklistline' => '$1, $2 bloquea a $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'expira $1',
+'expiringblock' => 'expira el $1 a las $2',
'anononlyblock' => 'sólo anón.',
'noautoblockblock' => 'bloqueo automático deshabilitado',
'createaccountblock' => 'creación de cuenta bloqueada',
@@ -2215,7 +2444,8 @@ Véase la [[Special:IPBlockList|lista de bloqueos]] para revisarlo.',
'contribslink' => 'contribuciones',
'autoblocker' => 'Ha sido bloqueado automáticamente porque su dirección IP ha sido usada recientemente por «[[User:$1|$1]]». La razón esgrimida para bloquear a «[[User:$1|$1]]» fue «$2».',
'blocklogpage' => 'Bloqueos de usuarios',
-'blocklog-fulllog' => 'Ver el registro de bloqueos completo',
+'blocklog-showlog' => 'Este usuario ha sido bloqueado previamente. Debajo se provee el registro de bloqueos para mayor referencia:',
+'blocklog-showsuppresslog' => 'Este usuario ha sido bloqueado y ocultado. Se provee el registro de supresiones para más detalle:',
'blocklogentry' => 'bloqueó a [[$1]] $3 durante un plazo de $2',
'reblock-logentry' => 'cambió el bloqueo para [[$1]] con una caducidad de $2 $3',
'blocklogtext' => 'Esto es un registro de bloqueos y desbloqueos de usuarios.
@@ -2236,10 +2466,12 @@ Consulte la [[Special:IPBlockList|lista de direcciones IP bloqueadas]] para ver
'ipb_already_blocked' => '"$1" ya se encuentra bloqueado.',
'ipb-needreblock' => '== Ya está bloqueado ==
$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}',
'ipb_cant_unblock' => "'''Error''': Número ID $1 de bloqueo no encontrado. Pudo haber sido desbloqueado ya.",
'ipb_blocked_as_range' => 'Error: la dirección IP $1 no está bloqueada directamente y no puede ser desbloqueada.
Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado.',
'ip_range_invalid' => 'El rango de IP no es válido.',
+'ip_range_toolarge' => 'Los bloqueos de rango superiores a /$1 no están permitidos.',
'blockme' => 'Bloquearme',
'proxyblocker' => 'Bloqueador de proxies',
'proxyblocker-disabled' => 'Esta función está deshabilitada.',
@@ -2248,6 +2480,7 @@ Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado
'sorbsreason' => 'Su dirección IP está listada como proxy abierto en DNSBL.',
'sorbs_create_account_reason' => 'Su dirección IP está listada como proxy abierto en DNSBL. No puede crear una cuenta',
'cant-block-while-blocked' => 'No puedes bloquear a otros usuarios mientras estás bloqueado.',
+'cant-see-hidden-user' => 'El usuario que está intentando bloquear ya ha sido bloqueado y oculto. Puesto que usted no tiene el derecho hideuser, usted no puede ver o editar los bloqueos del usuario.',
# Developer tools
'lockdb' => 'Bloquear la base de datos',
@@ -2289,6 +2522,7 @@ por favor, asegúrate de entender las consecuencias del procedimiento antes de s
En estos casos, deberá trasladar manualmente el contenido de la página de discusión.",
'movearticle' => 'Renombrar página',
+'moveuserpage-warning' => "'''Advertencia:''' estás a punto de mover una página de usuario. Ten en cuenta de que sólo la página será trasladada pero el usuario '''no''' será renombrado.",
'movenologin' => 'No ha iniciado sesión',
'movenologintext' => 'Es necesario ser usuario registrado y [[Special:UserLogin|haber iniciado sesión]] para renombrar una página.',
'movenotallowed' => 'No tienes permiso para trasladar páginas.',
@@ -2299,7 +2533,7 @@ En estos casos, deberá trasladar manualmente el contenido de la página de disc
'move-watch' => 'Vigilar este artículo',
'movepagebtn' => 'Renombrar página',
'pagemovedsub' => 'Renombrado realizado con éxito',
-'movepage-moved' => '\'\'\'"$1" ha sido trasladado a "$2".\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ha sido trasladado a "$2".\'\'\'',
'movepage-moved-redirect' => 'Se ha creado una redirección.',
'movepage-moved-noredirect' => 'Se ha suprimido la creación de la redirección.',
'articleexists' => 'Ya existe una página con ese nombre, o el nombre que has escogido no es válido.
@@ -2341,6 +2575,14 @@ La página de destino ("[[:$1]]") ya existe. ¿Quiere borrarla para permitir al
'imageinvalidfilename' => 'El nombre del fichero de destino no es válido',
'fix-double-redirects' => 'Actualizar las redirecciones que apuntan al título original',
'move-leave-redirect' => 'Dejar una redirección',
+'protectedpagemovewarning' => "'''Advertencia:''' Esta página ha sido bloqueada de tal manera que solamente usuarios con privilegios de administrador puedan trasladarla.
+A continuación se muestra la última entrada de registro para referencia:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Esta página ha sido bloqueada para que solamente usuarios registrados pueden moverla.
+A continuación se muestra la última entrada de registro para referencia:",
+'move-over-sharedrepo' => '== El archivo existe ==
+[[:$1]] existe en un repositorio compartido. Mover el archivo a este título invalidará el archivo compartido.',
+'file-exists-sharedrepo' => 'El nombre de archivo elegido ya está siendo usado en un repositorio compartido.
+Por favor, elija otro nombre.',
# Export
'export' => 'Exportar páginas',
@@ -2362,15 +2604,21 @@ En el último caso también puedes usar un enlace, por ejemplo [[{{#Special:Expo
'export-pagelinks' => 'Incluir páginas enlazadas a una profundidad de:',
# Namespace 8 related
-'allmessages' => 'Todos los mensajes de MediaWiki',
-'allmessagesname' => 'Nombre',
-'allmessagesdefault' => 'Texto predeterminado',
-'allmessagescurrent' => 'Texto actual',
-'allmessagestext' => 'Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki:
+'allmessages' => 'Todos los mensajes de MediaWiki',
+'allmessagesname' => 'Nombre',
+'allmessagesdefault' => 'Texto predeterminado',
+'allmessagescurrent' => 'Texto actual',
+'allmessagestext' => 'Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki:
Por favor visita [http://www.mediawiki.org/wiki/Localisation Localización MediaWiki] y [http://translatewiki.net translatewiki.net] si deseas contribuir con la localización genérica MediaWiki.',
-'allmessagesnotsupportedDB' => "Esta página no está disponible porque '''\$wgUseDatabaseMessages''' está deshabilitado.",
-'allmessagesfilter' => 'Filtrar por nombre del mensaje:',
-'allmessagesmodified' => 'Mostrar sólo los modificados',
+'allmessagesnotsupportedDB' => "Esta página no está disponible porque '''\$wgUseDatabaseMessages''' está deshabilitado.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar por estado de personalización:',
+'allmessages-filter-unmodified' => 'Sin modificar',
+'allmessages-filter-all' => 'Todo',
+'allmessages-filter-modified' => 'Modificado',
+'allmessages-prefix' => 'Filtrar por prefijo:',
+'allmessages-language' => 'Idioma:',
+'allmessages-filter-submit' => 'Ir',
# Thumbnails
'thumbnail-more' => 'Aumentar',
@@ -2380,6 +2628,9 @@ Por favor visita [http://www.mediawiki.org/wiki/Localisation Localización Media
'djvu_no_xml' => 'Imposible obtener XML para el archivo DjVu',
'thumbnail_invalid_params' => 'Parámetros del thumbnail no válidos',
'thumbnail_dest_directory' => 'Incapaz de crear el directorio de destino',
+'thumbnail_image-type' => 'Tipo de imagen no contemplado',
+'thumbnail_gd-library' => 'Configuración de la librería GD incompleta: falta la función $1',
+'thumbnail_image-missing' => 'El fichero parece no existir: $1',
# Special:Import
'import' => 'Importar páginas',
@@ -2446,6 +2697,7 @@ No hay un directorio temporal.',
'tooltip-ca-viewsource' => 'Esta página está protegida; sólo puedes ver su código fuente',
'tooltip-ca-history' => 'Versiones anteriores de esta página y sus autores',
'tooltip-ca-protect' => 'Proteger esta página',
+'tooltip-ca-unprotect' => 'Desproteger esta página',
'tooltip-ca-delete' => 'Borrar esta página',
'tooltip-ca-undelete' => 'Restaurar las ediciones hechas a esta página antes de que fuese borrada',
'tooltip-ca-move' => 'Trasladar (renombrar) esta página',
@@ -2456,6 +2708,7 @@ No hay un directorio temporal.',
'tooltip-search-fulltext' => 'Busca este texto en las páginas',
'tooltip-p-logo' => 'Portada',
'tooltip-n-mainpage' => 'Visitar la Portada',
+'tooltip-n-mainpage-description' => 'Visitar la página principal',
'tooltip-n-portal' => 'Acerca del proyecto, qué puede hacer, dónde encontrar información',
'tooltip-n-currentevents' => 'Información de contexto sobre acontecimientos actuales',
'tooltip-n-recentchanges' => 'La lista de cambios recientes en el wiki',
@@ -2496,6 +2749,7 @@ Permite añadir una razón al resumen de edición.',
# Stylesheets
'common.css' => '/* Los estilos CSS definidos aquí aplicarán a todas las pieles (skins) */',
'monobook.css' => '/* cambie este archivo para personalizar la piel monobook para el sitio entero */',
+'vector.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios que usen la piel Vector. */',
# Scripts
'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página. */',
@@ -2507,6 +2761,7 @@ Permite añadir una razón al resumen de edición.',
'chick.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Pollito. */',
'simple.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Simple. */',
'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna. */',
+'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector. */',
# Metadata
'nodublincore' => 'Metadatos Dublin Core RDF deshabilitados en este servidor.',
@@ -2516,10 +2771,12 @@ Permite añadir una razón al resumen de edición.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
'siteuser' => '{{GENDER:$1|Usuario|Usuaria}} $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Esta página fue modificada por última vez en $2, $1 por $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} usuario anónimo $1',
+'lastmodifiedatby' => 'Esta página fue modificada por última vez en $2, $1 por $3.',
'othercontribs' => 'Basado en el trabajo de $1.',
'others' => 'otros',
'siteusers' => '{{PLURAL:$2|Usuario|Usuarios}} $1 de {{SITENAME}}',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|usuario|usuarios}} anónimos $1',
'creditspage' => 'Créditos de la página',
'nocredits' => 'Hay información de créditos para esta página.',
@@ -2549,6 +2806,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
'skinname-chick' => 'Pollito',
'skinname-simple' => 'Simple',
'skinname-modern' => 'Moderna',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Producir siempre PNG',
@@ -2558,11 +2816,22 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
'mw_math_modern' => 'Recomendado para navegadores modernos',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'No se pudo entender',
+'math_unknown_error' => 'error desconocido',
+'math_unknown_function' => 'función desconocida',
+'math_lexing_error' => 'error léxico',
+'math_syntax_error' => 'error de sintaxis',
+'math_image_error' => 'La conversión a PNG ha fallado; comprueba que latex, dvips, gs, y convert estén instalados correctamente',
+'math_bad_tmpdir' => 'No se puede escribir o crear el directorio temporal de <em>math</em>',
+'math_bad_output' => 'No se puede escribir o crear el directorio de salida de <em>math</em>',
+'math_notexvc' => 'Falta el ejecutable de <strong>texvc</strong>. Por favor, lea <em>math/README</em> para configurarlo.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como revisado',
'markaspatrolledtext' => 'Marcar este artículo como revisado',
'markedaspatrolled' => 'Marcado como revisado',
-'markedaspatrolledtext' => 'La versión seleccionada ha sido marcada como revisada.',
+'markedaspatrolledtext' => 'La revisión seleccionada de [[:$1|$1]] ha sido marcada como revisada.',
'rcpatroldisabled' => 'Revisión de los Cambios Recientes deshabilitada',
'rcpatroldisabledtext' => 'La capacidad de revisar los Cambios Recientes está deshabilitada en este momento.',
'markedaspatrollederror' => 'No se puede marcar como patrullada',
@@ -2592,13 +2861,10 @@ $1',
'previousdiff' => '← Edición más antigua',
'nextdiff' => 'Edición más nueva →',
-# Visual comparison
-'visual-comparison' => 'Comparación visual',
-
# Media information
'mediawarning' => "'''Atención''': Este fichero puede contener código malicioso.
Ejecutarlo podría comprometer la seguridad de su equipo.",
-'imagemaxsize' => 'Limitar imágenes en las páginas de descripción a:',
+'imagemaxsize' => "Límite de tamaño de imagen:<br />''(para páginas de descripción de archivo)''",
'thumbsize' => 'Tamaño de las vistas en miniatura:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:|página|páginas}}',
'file-info' => '(tamaño de archivo: $1; tipo MIME: $2)',
@@ -2607,6 +2873,8 @@ Ejecutarlo podría comprometer la seguridad de su equipo.",
'svg-long-desc' => '(archivo SVG, nominalmente $1 × $2 píxeles, tamaño de archivo: $3)',
'show-big-image' => 'Resolución original',
'show-big-image-thumb' => '<small>Tamaño de esta vista previa: $1 × $2 píxeles</small>',
+'file-info-gif-looped' => 'bucleado',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Galería de imágenes nuevas',
@@ -2640,7 +2908,7 @@ Existen otros campos que se mantendrán ocultos por defecto.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Anchura',
@@ -2767,14 +3035,14 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-unknowndate' => 'Fecha desconocida',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Volteada horizontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotada 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Volteada verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotada 90° CCW y volteada verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotada 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotada 90° CW y volteada verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotada 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Volteada horizontalmente',
+'exif-orientation-3' => 'Rotada 180°',
+'exif-orientation-4' => 'Volteada verticalmente',
+'exif-orientation-5' => 'Rotada 90° CCW y volteada verticalmente',
+'exif-orientation-6' => 'Rotada 90° CW',
+'exif-orientation-7' => 'Rotada 90° CW y volteada verticalmente',
+'exif-orientation-8' => 'Rotada 90° CCW',
'exif-planarconfiguration-1' => 'formato panorámico',
'exif-planarconfiguration-2' => 'formato plano',
@@ -2896,7 +3164,7 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-gpsmeasuremode-2' => 'Medición bidimensional',
'exif-gpsmeasuremode-3' => 'Medición tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilómetros por hora',
'exif-gpsspeed-m' => 'Millas por hora',
'exif-gpsspeed-n' => 'Nudos',
@@ -2915,6 +3183,7 @@ Existen otros campos que se mantendrán ocultos por defecto.
'watchlistall2' => 'todos',
'namespacesall' => 'todos',
'monthsall' => 'todos',
+'limitall' => 'Todos',
# E-mail address confirmation
'confirmemail' => 'Confirmar dirección de correo electrónico',
@@ -2936,13 +3205,13 @@ Ahora puedes [[Special:UserLogin|identificarte]] y colaborar en el wiki.',
'confirmemail_loggedin' => 'Tu dirección de correo electrónico ha sido confirmada.',
'confirmemail_error' => 'Algo salió mal al guardar su confirmación.',
'confirmemail_subject' => 'confirmación de la dirección de correo de {{SITENAME}}',
-'confirmemail_body' => 'Alguien, probablemente usted mismo, ha registrado una cuenta "$2" con esta dirección de correo en {{SITENAME}}, desde la dirección IP $1.
+'confirmemail_body' => 'Alguien, probablemente usted mismo, ha registrado desde la dirección IP $1 la cuenta "$2" en {{SITENAME}}, utilizando esta dirección de correo.
Para confirmar que esta cuenta realmente le pertenece y activar el correo en {{SITENAME}}, siga este enlace:
$3
-Si la cuenta *no* es suya, siga este enlace para cancelar la confirmación de la dirección de correo:
+Si la cuenta *no* es suya, siga este otro enlace para cancelar la confirmación de la dirección de correo:
$5
@@ -3042,7 +3311,7 @@ También puedes [[Special:Watchlist/edit|usar el editor estándar]].',
'duplicate-defaultsort' => 'Atención: La clave de ordenación por defecto «$2» anula la anterior clave ordenación por defecto «$1».',
# Special:Version
-'version' => 'Versión', # Not used as normal message but as header for the special page itself
+'version' => 'Versión',
'version-extensions' => 'Extensiones instaladas',
'version-specialpages' => 'Páginas especiales',
'version-parserhooks' => 'Extensiones del analizador sintáctico',
@@ -3056,7 +3325,7 @@ También puedes [[Special:Watchlist/edit|usar el editor estándar]].',
'version-skin-extension-functions' => 'Funciones de extensión de la apariencia',
'version-hook-name' => 'Nombre de la extensión',
'version-hook-subscribedby' => 'Suscrito por',
-'version-version' => 'Versión',
+'version-version' => '(Versión $1)',
'version-license' => 'Licencia',
'version-software' => 'Software instalado',
'version-software-product' => 'Producto',
@@ -3137,4 +3406,15 @@ Ingrese el nombre del archivo sin el prefijo "{{ns:file}}:".',
'dberr-outofdate' => 'Ten en cuenta que su índice de nuestro contenido puede estar desactualizado.',
'dberr-cachederror' => 'La siguiente es una página guardada de la página solicitada, y puede no estar actualizada.',
+# HTML forms
+'htmlform-invalid-input' => 'Hay problemas con alguno de los datos que has ingresado',
+'htmlform-select-badoption' => 'El valor que especificaste no es una opción válida.',
+'htmlform-int-invalid' => 'El valor que especificaste no es un entero.',
+'htmlform-float-invalid' => 'El valor que ha especificado no es un número.',
+'htmlform-int-toolow' => 'El valor que especificaste está debajo del mínimo de $1',
+'htmlform-int-toohigh' => 'El valor que especificaste está arriba del máximo de $1',
+'htmlform-submit' => 'Enviar',
+'htmlform-reset' => 'Deshacer cambios',
+'htmlform-selectorother-other' => 'Otro',
+
);
diff --git a/languages/messages/MessagesEt.php b/languages/messages/MessagesEt.php
index 475adc92..a3b71452 100644
--- a/languages/messages/MessagesEt.php
+++ b/languages/messages/MessagesEt.php
@@ -8,6 +8,7 @@
* @file
*
* @author Avjoska
+ * @author Hendrik
* @author Hendrix
* @author Jaan513
* @author KalmerE.
@@ -25,7 +26,7 @@ $namespaceNames = array(
NS_TALK => 'Arutelu',
NS_USER => 'Kasutaja',
NS_USER_TALK => 'Kasutaja_arutelu',
- NS_PROJECT_TALK => '$1_arutelu',
+ NS_PROJECT_TALK => '{{GRAMMAR:genitive|$1}}_arutelu',
NS_FILE => 'Pilt',
NS_FILE_TALK => 'Pildi_arutelu',
NS_MEDIAWIKI => 'MediaWiki',
@@ -38,8 +39,101 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Kategooria_arutelu',
);
-#Lisasin eestimaised poed, aga võõramaiseid ei julenud kustutada.
+$namespaceAliases = array(
+ '$1_arutelu' => NS_PROJECT_TALK,
+);
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'Kahekordsed_ümbersuunamised' ),
+ 'BrokenRedirects' => array( 'Vigased_ümbersuunamised' ),
+ 'Disambiguations' => array( 'Täpsustusleheküljed' ),
+ 'Userlogin' => array( 'Sisselogimine' ),
+ 'Userlogout' => array( 'Väljalogimine' ),
+ 'CreateAccount' => array( 'Konto_loomine' ),
+ 'Preferences' => array( 'Eelistused' ),
+ 'Watchlist' => array( 'Jälgimisloend' ),
+ 'Recentchanges' => array( 'Viimased_muudatused' ),
+ 'Upload' => array( 'Faili_üleslaadimine' ),
+ 'Listfiles' => array( 'Failide_loend' ),
+ 'Newimages' => array( 'Uued_failid' ),
+ 'Listusers' => array( 'Kasutajate_loend' ),
+ 'Listgrouprights' => array( 'Kasutajarühma_õigused' ),
+ 'Statistics' => array( 'Arvandmestik' ),
+ 'Randompage' => array( 'Juhuslik_artikkel' ),
+ 'Lonelypages' => array( 'Viitamata_leheküljed' ),
+ 'Uncategorizedpages' => array( 'Kategoriseerimata_leheküljed' ),
+ 'Uncategorizedcategories' => array( 'Kategoriseerimata_kategooriad' ),
+ 'Uncategorizedimages' => array( 'Kategoriseerimata_failid' ),
+ 'Uncategorizedtemplates' => array( 'Kategoriseerimata_mallid' ),
+ 'Unusedcategories' => array( 'Kasutamata_kategooriad' ),
+ 'Unusedimages' => array( 'Kasutamata_failid' ),
+ 'Wantedpages' => array( 'Oodatud_leheküljed' ),
+ 'Wantedcategories' => array( 'Oodatud_kategooriad' ),
+ 'Wantedfiles' => array( 'Oodatud_failid' ),
+ 'Wantedtemplates' => array( 'Oodatud_mallid' ),
+ 'Mostlinked' => array( 'Kõige_viidatumad_leheküljed' ),
+ 'Mostlinkedcategories' => array( 'Kõige_viidatumad_kategooriad' ),
+ 'Mostlinkedtemplates' => array( 'Kõige_viidatumad_mallid' ),
+ 'Mostimages' => array( 'Kõige_kasutatumad_failid' ),
+ 'Mostcategories' => array( 'Enim_kategoriseeritud' ),
+ 'Mostrevisions' => array( 'Enim_muudatusi' ),
+ 'Fewestrevisions' => array( 'Vähim_muudatusi' ),
+ 'Shortpages' => array( 'Lühikesed_leheküljed' ),
+ 'Longpages' => array( 'Pikad_leheküljed' ),
+ 'Newpages' => array( 'Uued_leheküljed' ),
+ 'Ancientpages' => array( 'Vanimad_leheküljed' ),
+ 'Deadendpages' => array( 'Edasipääsuta_leheküljed' ),
+ 'Protectedpages' => array( 'Kaitstud_leheküljed' ),
+ 'Protectedtitles' => array( 'Kaitstud_pealkirjad' ),
+ 'Allpages' => array( 'Kõik_leheküljed' ),
+ 'Prefixindex' => array( 'Kõik_pealkirjad_eesliitega' ),
+ 'Ipblocklist' => array( 'Blokeerimisloend' ),
+ 'Specialpages' => array( 'Erileheküljed' ),
+ 'Contributions' => array( 'Kaastöö' ),
+ 'Emailuser' => array( 'E-kirja_saatmine' ),
+ 'Confirmemail' => array( 'E-posti_aadressi_kinnitamine' ),
+ 'Whatlinkshere' => array( 'Lingid_siia' ),
+ 'Recentchangeslinked' => array( 'Seotud_muudatused' ),
+ 'Movepage' => array( 'Teisalda' ),
+ 'Booksources' => array( 'Otsi_raamatut' ),
+ 'Categories' => array( 'Kategooriad' ),
+ 'Export' => array( 'Lehekülgede_eksport' ),
+ 'Version' => array( 'Versioon' ),
+ 'Allmessages' => array( 'Kõik_sõnumid' ),
+ 'Log' => array( 'Logid' ),
+ 'Blockip' => array( 'Blokeerimine' ),
+ 'Undelete' => array( 'Taasta_lehekülg' ),
+ 'Import' => array( 'Lehekülgede_import' ),
+ 'Lockdb' => array( 'Lukusta_andmebaas' ),
+ 'Unlockdb' => array( 'Ava_andmebaas' ),
+ 'Userrights' => array( 'Kasutaja_õigused' ),
+ 'MIMEsearch' => array( 'MIME_otsing' ),
+ 'FileDuplicateSearch' => array( 'Otsi_faili_duplikaate' ),
+ 'Unwatchedpages' => array( 'Jälgimata_leheküljed' ),
+ 'Listredirects' => array( 'Ümbersuunamised' ),
+ 'Revisiondelete' => array( 'Kustuta_muudatus' ),
+ 'Unusedtemplates' => array( 'Kasutamata_mallid' ),
+ 'Randomredirect' => array( 'Juhuslik_ümbersuunamine' ),
+ 'Mypage' => array( 'Minu_lehekülg' ),
+ 'Mytalk' => array( 'Minu_aruteluleht' ),
+ 'Mycontributions' => array( 'Minu_kaastöö' ),
+ 'Listadmins' => array( 'Ülemaloend' ),
+ 'Listbots' => array( 'Robotiloend' ),
+ 'Popularpages' => array( 'Loetumad_leheküljed' ),
+ 'Search' => array( 'Otsi' ),
+ 'Resetpass' => array( 'Muuda_parool' ),
+ 'Withoutinterwiki' => array( 'Ilma_keelelinkideta' ),
+ 'MergeHistory' => array( 'Liitmisajalugu' ),
+ 'Filepath' => array( 'Failitee' ),
+ 'Invalidateemail' => array( 'Tühista_e-posti_kinnitus' ),
+ 'Blankpage' => array( 'Tühi_leht' ),
+ 'LinkSearch' => array( 'Otsi_välislinke' ),
+ 'DeletedContributions' => array( 'Kustutatud_kaastöö' ),
+ 'Tags' => array( 'Märgised' ),
+ 'Activeusers' => array( 'Teguskasutajad' ),
+);
+
+#Lisasin eestimaised poed, aga võõramaiseid ei julenud kustutada.
$bookstoreList = array(
'Apollo' => 'http://www.apollo.ee/search.php?keyword=$1&search=OTSI',
'minu Raamat' => 'http://www.raamat.ee/advanced_search_result.php?keywords=$1',
@@ -52,10 +146,99 @@ $bookstoreList = array(
$magicWords = array(
'redirect' => array( '0', '#suuna', '#REDIRECT' ),
+ 'notoc' => array( '0', '__SISUKORRATA__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__GALERIITA__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__SISUKORDEES__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__SISUKORD__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__ALAOSALINGITA__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'HETKEKUU', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'HETKEKUU1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'HETKEKUUNIMETUS', 'CURRENTMONTHNAME' ),
+ 'currentday' => array( '1', 'HETKEKUUPÄEV', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'HETKEKUUPÄEV2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'HETKENÄDALAPÄEV', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'HETKEAASTA', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'HETKEAEG', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HETKETUND', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'KOHALIKKUU', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'KOHALIKKUU1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'KOHALIKKUUNIMETUS', 'LOCALMONTHNAME' ),
+ 'localday' => array( '1', 'KOHALIKKUUPÄEV', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'KOHALIKKUUPÄEV2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'KOHALIKNÄDALAPÄEV', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'KOHALIKAASTA', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'KOHALIKAEG', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'KOHALIKTUND', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'LEHEMÄÄR', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ARTIKLIMÄÄR', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'FAILIMÄÄR', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'KASUTAJAMÄÄR', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'TEGUSKASUTAJAMÄÄR', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'REDIGEERIMISMÄÄR', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'LEHEKÜLJENIMI', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'LEHEKÜLJENIMI1', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'NIMERUUM', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'NIMERUUM1', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ARUTELUNIMERUUM', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ARUTELUNIMERUUM1', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'SISUNIMERUUM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'SISUNIMERUUM1', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'KOGULEHEKÜLJENIMI', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'KOGULEHEKÜLJENIMI1', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'ALAMLEHEKÜLJENIMI', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'ALAMLEHEKÜLJENIMI1', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NIMERUUMITANIMI', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NIMERUUMITANIMI1', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'ARUTELUNIMI', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'ARUTELUNIMI1', 'TALKPAGENAMEE' ),
+ 'subst' => array( '0', 'ASENDA:', 'SUBST:' ),
+ 'img_thumbnail' => array( '1', 'pisi', 'pisipilt', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'pisi=$1', 'pisipilt=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'paremal', 'right' ),
+ 'img_left' => array( '1', 'vasakul', 'left' ),
+ 'img_none' => array( '1', 'tühi', 'none' ),
+ 'img_center' => array( '1', 'keskel', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'raam', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'raamita', 'frameless' ),
+ 'img_border' => array( '1', 'ääris', 'border' ),
+ 'sitename' => array( '1', 'KOHANIMI', 'SITENAME' ),
+ 'ns' => array( '0', 'NR:', 'NS:' ),
+ 'nse' => array( '0', 'NR1:', 'NSE:' ),
+ 'localurl' => array( '0', 'KOHALIKURL', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'KOHALIKURL1', 'LOCALURLE:' ),
+ 'servername' => array( '0', 'SERVERINIMI', 'SERVERNAME' ),
+ 'gender' => array( '0', 'SUGU:', 'GENDER:' ),
+ 'currentweek' => array( '1', 'HETKENÄDAL', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'HETKENÄDALAPÄEV1', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'KOHALIKNÄDAL', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'KOHALIKNÄDALAPÄEV1', 'LOCALDOW' ),
+ 'fullurl' => array( '0', 'KOGUURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'KOGUURL1:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'ESIVT:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'ESIST:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'VT:', 'LC:' ),
+ 'uc' => array( '0', 'ST:', 'UC:' ),
+ 'newsectionlink' => array( '1', '__UUEALAOSALINK__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__UUEALAOSALINGITA__', '__NONEWSECTIONLINK__' ),
+ 'currenttimestamp' => array( '1', 'HETKEAJATEMPEL', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'KOHALIKAJATEMPEL', 'LOCALTIMESTAMP' ),
+ 'language' => array( '0', '#KEEL:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'VAIKEKEEL', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'LEHEKÜLGINIMERUUMIS', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'ÜLEMAMÄÄR', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'ARVUVORMINDUS', 'FORMATNUM' ),
+ 'defaultsort' => array( '1', 'JÄRJESTA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'hiddencat' => array( '1', '__PEIDETUDKAT__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'LEHEKÜLGIKATEGOORIAS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'index' => array( '1', 'INDEKSIGA', '__INDEX__' ),
+ 'noindex' => array( '1', 'INDEKSITA', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'KASUTAJAIDRÜHMAS', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'protectionlevel' => array( '1', 'KAITSETASE', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'kuupäevavormindus', 'formatdate', 'dateformat' ),
);
$separatorTransformTable = array(',' => "\xc2\xa0", '.' => ',' );
-$linkTrail = "/^([a-z]+)(.*)\$/sD";
+$linkTrail = '/^([äöõšüža-z]+)(.*)$/sDu';
$datePreferences = array(
'default',
@@ -119,6 +302,7 @@ $messages = array(
'tog-enotifminoredits' => 'Teata e-posti teel ka pisiparandustest',
'tog-enotifrevealaddr' => 'Näita minu e-posti aadressi teavitus-e-kirjades',
'tog-shownumberswatching' => 'Näita jälgivate kasutajate hulka',
+'tog-oldsig' => 'Praeguse allkirja eelvaade:',
'tog-fancysig' => 'Kasuta vikiteksti vormingus allkirja (ilma automaatse lingita kasutajalehele)',
'tog-externaleditor' => 'Kasuta vaikimisi välist redaktorit',
'tog-externaldiff' => 'Kasuta vaikimisi välist võrdlusvahendit (ainult ekspertidele, tarvilikud on kasutaja arvuti eriseadistused)',
@@ -140,6 +324,13 @@ $messages = array(
'underline-never' => 'Mitte kunagi',
'underline-default' => 'Brauseri vaikeväärtus',
+# Font style option in Special:Preferences
+'editfont-style' => 'Redigeerimisala kirjatüüp:',
+'editfont-default' => 'Veebilehitseja vaikesäte',
+'editfont-monospace' => 'Püsisammuga font',
+'editfont-sansserif' => 'Seriifideta kiri',
+'editfont-serif' => 'Seriifidega kiri',
+
# Dates
'sunday' => 'pühapäev',
'monday' => 'esmaspäev',
@@ -199,7 +390,7 @@ $messages = array(
'category-media-header' => 'Meediafailid kategoorias "$1"',
'category-empty' => "''Selles kategoorias pole ühtegi lehekülge ega meediafaili.''",
'hidden-categories' => '{{PLURAL:$1|Peidetud kategooria|Peidetud kategooriad}}',
-'hidden-category-category' => 'Peidetud kategooriad', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Peidetud kategooriad',
'category-subcat-count' => '{{PLURAL:$2|Selles kategoorias on ainult järgmine alamkategooria.|{{PLURAL:$1|Järgmine alamkategooria|Järgmised $1 alamkategooriat}} on selles kategoorias (kokku $2).}}',
'category-subcat-count-limited' => '{{PLURAL:$1|Järgmine alamkategooria|Järgmised $1 alamkategooriat}} on selles kategoorias.',
'category-article-count' => '{{PLURAL:$2|Antud kategoorias on ainult järgmine lehekülg.|{{PLURAL:$1|Järgmine lehekülg|Järgmised $1 lehekülge}} on selles kategoorias (kokku $2).}}',
@@ -207,15 +398,25 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Selles kategoorias on ainult järgmine fail.|{{PLURAL:$1|Järgmine fail |Järgmised $1 faili}} on selles kategoorias (kokku $2).}}',
'category-file-count-limited' => '{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selles kategoorias.',
'listingcontinuesabbrev' => 'jätk',
+'index-category' => 'Indeksiga leheküljed',
+'noindex-category' => 'Indeksita leheküljed',
'mainpagetext' => "'''MediaWiki tarkvara on edukalt paigaldatud.'''",
'mainpagedocfooter' => 'Juhiste saamiseks kasutamise ning konfigureerimise kohta vaata palun inglisekeelset [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentatsiooni liidese kohaldamisest]
ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].',
-'about' => 'Tiitelandmed',
-'article' => 'artikkel',
-'newwindow' => '(avaneb uues aknas)',
-'cancel' => 'Loobu',
+'about' => 'Tiitelandmed',
+'article' => 'artikkel',
+'newwindow' => '(avaneb uues aknas)',
+'cancel' => 'Loobu',
+'moredotdotdot' => 'Veel...',
+'mypage' => 'Minu lehekülg',
+'mytalk' => 'Arutelu',
+'anontalk' => 'Arutelu selle IP jaoks',
+'navigation' => 'Navigeerimine',
+'and' => '&#32;ja',
+
+# Cologne Blue skin
'qbfind' => 'Otsi',
'qbbrowse' => 'Sirvi',
'qbedit' => 'Redigeeri',
@@ -223,15 +424,35 @@ ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].'
'qbpageinfo' => 'Lehekülje andmed',
'qbmyoptions' => 'Minu suvandid',
'qbspecialpages' => 'Erileheküljed',
-'moredotdotdot' => 'Veel...',
-'mypage' => 'Minu lehekülg',
-'mytalk' => 'Arutelu',
-'anontalk' => 'Arutelu selle IP jaoks',
-'navigation' => 'Navigeerimine',
-'and' => '&#32;ja',
-
-# Metadata in edit box
-'metadata_help' => 'Metaandmed:',
+'faq' => 'KKK',
+'faqpage' => 'Project:KKK',
+
+# Vector skin
+'vector-action-addsection' => 'Lisa teema',
+'vector-action-delete' => 'Kustuta',
+'vector-action-move' => 'Teisalda',
+'vector-action-protect' => 'Kaitse',
+'vector-action-undelete' => 'Taasta',
+'vector-action-unprotect' => 'Tühista kaitse',
+'vector-namespace-category' => 'Kategooria',
+'vector-namespace-help' => 'Abilehekülg',
+'vector-namespace-image' => 'Fail',
+'vector-namespace-main' => 'Artikkel',
+'vector-namespace-media' => 'Meedialeht',
+'vector-namespace-mediawiki' => 'Sõnum',
+'vector-namespace-project' => 'Projektileht',
+'vector-namespace-special' => 'Erileht',
+'vector-namespace-talk' => 'Arutelu',
+'vector-namespace-template' => 'Mall',
+'vector-namespace-user' => 'Kasutaja leht',
+'vector-view-create' => 'Loo',
+'vector-view-edit' => 'Redigeeri',
+'vector-view-history' => 'Näita ajalugu',
+'vector-view-view' => 'Vaata',
+'vector-view-viewsource' => 'Vaata lähteteksti',
+'actions' => 'Toimingud',
+'namespaces' => 'Nimeruumid',
+'variants' => 'Variandid',
'errorpagetitle' => 'Viga',
'returnto' => 'Naase lehele $1',
@@ -281,18 +502,22 @@ ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].'
'otherlanguages' => 'Teistes keeltes',
'redirectedfrom' => '(Ümber suunatud leheküljelt $1)',
'redirectpagesub' => 'Ümbersuunamisleht',
-'lastmodifiedat' => 'Viimane muutmine: $2, $1', # $1 date, $2 time
+'lastmodifiedat' => 'Viimane muutmine: $2, $1',
'viewcount' => 'Seda lehekülge on külastatud {{PLURAL:$1|üks kord|$1 korda}}.',
'protectedpage' => 'Kaitstud lehekülg',
'jumpto' => 'Mine:',
'jumptonavigation' => 'navigeerimiskast',
'jumptosearch' => 'otsi',
+'view-pool-error' => 'Serverid on hetkel üle koormatud.
+Liiga palju kasutajaid üritab korraga seda lehte vaadata.
+Palun oota hetk enne kui uuesti proovid.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{GRAMMAR:genitive|{{SITENAME}}}} tiitelandmed',
'aboutpage' => 'Project:Tiitelandmed',
'copyright' => 'Kogu tekst on kasutatav litsentsi $1 tingimustel.',
-'copyrightpagename' => '{{SITENAME}} ja autoriõigused',
'copyrightpage' => '{{ns:project}}:Autoriõigused',
'currentevents' => 'Sündmused maailmas',
'currentevents-url' => 'Project:Sündmused maailmas',
@@ -300,8 +525,6 @@ ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].'
'disclaimerpage' => 'Project:Hoiatused',
'edithelp' => 'Redigeerimisjuhend',
'edithelppage' => 'Help:Kuidas_lehte_redigeerida',
-'faq' => 'KKK',
-'faqpage' => 'Project:KKK',
'helppage' => 'Help:Sisukord',
'mainpage' => 'Esileht',
'mainpage-description' => 'Esileht',
@@ -384,9 +607,6 @@ Viimane andmebaasipäring oli:
"$1"
ja see kutsuti funktsioonist "$2".
Andmebaas tagastas veateate "$3: $4".',
-'noconnect' => 'Vabandame! Vikil on tehnilisi probleeme ning ei saa andmebaasiserveriga $1 ühendust.',
-'nodb' => 'Andmebaasi $1 ei õnnestunud kätte saada',
-'cachederror' => 'Järgnev tekst pärineb serveri vahemälust ega pruugi olla lehekülje viimane versioon.',
'laggedslavemode' => 'Hoiatus: Leheküljel võivad puududa viimased uuendused.',
'readonly' => 'Andmebaas on hetkel kirjutuskaitse all',
'enterlockreason' => 'Sisesta lukustamise põhjus ning juurdepääsu taastamise ligikaudne aeg',
@@ -404,6 +624,7 @@ Sellisel juhul tuleks teavitada [[Special:ListUsers/sysop|administraatorit]], ed
'readonly_lag' => "Andmebaas on automaatselt lukustatud, seniks kuni ''slave''-andmebaasid on uuendatud.",
'internalerror' => 'Sisemine viga',
'internalerror_info' => 'Sisemine viga: $1',
+'fileappenderror' => 'Faili "$1" ei saanud lisada failile "$2".',
'filecopyerror' => 'Ei saanud faili "$1" kopeerida nimega "$2".',
'filerenameerror' => 'Ei saanud faili "$1" failiks "$2" ümber nimetada.',
'filedeleteerror' => 'Faili nimega "$1" ei ole võimalik kustutada.',
@@ -413,7 +634,8 @@ Sellisel juhul tuleks teavitada [[Special:ListUsers/sysop|administraatorit]], ed
'unexpected' => 'Ootamatu väärtus: "$1"="$2".',
'formerror' => 'Viga: vormi ei saanud salvestada',
'badarticleerror' => 'Seda toimingut ei saa sellel leheküljel sooritada.',
-'cannotdelete' => 'Seda lehekülge või pilti ei ole võimalik kustutada. (Võib-olla keegi teine juba kustutas selle.)',
+'cannotdelete' => 'Lehekülge või faili "$1" ei saa kustutada.
+Võimalik, et keegi on selle juba kustutanud.',
'badtitle' => 'Vigane pealkiri',
'badtitletext' => 'Soovitud lehekülje pealkiri oli vigane, tühi või teisest keeleversioonist või vikist valesti lingitud.
See võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.',
@@ -446,7 +668,6 @@ $2',
'virus-unknownscanner' => 'tundmatu viirusetõrje:',
# Login and logout pages
-'logouttitle' => 'Väljalogimine',
'logouttext' => "'''Oled nüüd välja loginud.'''
Võid jätkata {{GRAMMAR:genitive|{{SITENAME}}}} kasutamist anonüümselt, aga ka sama või mõne teise kasutajana uuesti [[Special:UserLogin|sisse logida]].
@@ -455,7 +676,6 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
Sinu konto on loodud.
Ära unusta oma {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|eelistusi]] seada.',
-'loginpagetitle' => 'Sisselogimine',
'yourname' => 'Kasutajanimi:',
'yourpassword' => 'Parool:',
'yourpasswordagain' => 'Sisesta parool uuesti:',
@@ -465,6 +685,7 @@ Sinu konto on loodud.
'nav-login-createaccount' => 'Logi sisse või registreeru kasutajaks',
'loginprompt' => 'Sisselogimiseks peavab küpsised lubatud olema.',
'userlogin' => 'Sisselogimine või kasutajakonto loomine',
+'userloginnocreate' => 'Sisselogimine',
'logout' => 'Logi välja',
'userlogout' => 'Logi välja',
'notloggedin' => 'Te pole sisse loginud',
@@ -477,27 +698,8 @@ Sinu konto on loodud.
'badretype' => 'Sisestatud paroolid ei lange kokku.',
'userexists' => 'Sisestatud kasutajanimi on juba kasutusel.
Palun valige uus nimi.',
-'youremail' => 'E-posti aadress:',
-'username' => 'Kasutajanimi:',
-'uid' => 'Kasutaja ID:',
-'prefs-memberingroups' => 'Kuulub {{PLURAL:$1|rühma|rühmadesse}}:',
-'yourrealname' => 'Tegelik nimi:',
-'yourlanguage' => 'Keel:',
-'yournick' => 'Teie hüüdnimi (allakirjutamiseks)',
-'badsig' => 'Sobimatu allkiri.
-Palun kontrolli HTML koodi.',
-'badsiglength' => 'Sinu signatuur on liiga pikk.
-See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
-'yourgender' => 'Sugu:',
-'gender-unknown' => 'Määramata',
-'gender-male' => 'Mees',
-'gender-female' => 'Naine',
-'prefs-help-gender' => 'Vabatahtlik: kasutatakse mõnedes keeltes sooliselt korrektse väljendumise otstarbel. Info on avalik.',
-'email' => 'E-post',
-'prefs-help-realname' => 'Vabatahtlik: Kui otsustate selle avaldada, kasutatakse seda teie kaastöö seostamiseks teiega.',
'loginerror' => 'Viga sisselogimisel',
-'prefs-help-email' => 'Elektronpostiaadressi sisestamine ei ole kohustuslik, kuid võimaldab sul tellida parooli meeldetuletuse, kui peaksid oma parooli unustama. Samuti saad aadressi märkides anda oma identiteeti avaldamata teistele kasutajatele võimaluse enesele sõnumeid saata.',
-'prefs-help-email-required' => 'E-posti aadress on vajalik.',
+'createaccounterror' => 'Kasutajakonto loomine ebaõnnestus: $1',
'nocookiesnew' => 'Kasutajakonto loodi, aga sa ei ole sisse logitud, sest {{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja logi siis oma vastse kasutajanime ning parooliga sisse.',
'nocookieslogin' => '{{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja proovi siis uuesti.',
'noname' => 'Sa ei sisestanud kasutajanime lubataval kujul.',
@@ -508,15 +710,19 @@ Kasutajanimed on tõstutundlikud.
Kontrollige kirjapilti või [[Special:UserLogin/signup|looge uus kasutajakonto]].',
'nosuchusershort' => 'Kasutajat nimega "<nowiki>$1</nowiki>" ei ole olemas. Kontrollige kirjapilti.',
'nouserspecified' => 'Kasutajanimi puudub.',
+'login-userblocked' => 'See kasutaja on blokeeritud. Sisselogimine pole lubatud.',
'wrongpassword' => 'Vale parool. Proovige uuesti.',
'wrongpasswordempty' => 'Parool jäi sisestamata. Palun proovi uuesti.',
-'passwordtooshort' => 'Sisestatud parool on vigane või liiga lühike. See peab koosnema vähemalt {{PLURAL:$1|ühest|$1}} tähemärgist ning peab erinema kasutajanimest.',
+'passwordtooshort' => 'Parool on liiga lühike.
+See peab koosnema vähemalt {{PLURAL:$1|ühest|$1}} tähemärgist.',
+'password-name-match' => 'Parool peab kasutajanimest erinema.',
'mailmypassword' => 'Saada e-posti teel uus parool',
'passwordremindertitle' => '{{SITENAME}} – ajutine parool',
'passwordremindertext' => 'Keegi IP-aadressiga $1, tõenäoliselt sa ise, palus, et talle saadetaks {{GRAMMAR:elative|{{SITENAME}}}} uus parool ($4). Kasutaja "$2" ajutiseks paroolis seati "$3". Kui soovid tõepoolest uut parooli, pead sisse logima ja uue parooli valima. Ajutine parool aegub {{PLURAL:$5|ühe päeva|$5 päeva}} pärast.
Kui uut parooli palus keegi teine või sulle meenus vana parool ja sa ei soovi seda enam muuta, võid käesolevat teadet eirata ning jätkata endise parooli kasutamist.',
'noemail' => 'Kasutaja $1 e-posti aadressi meil kahjuks pole.',
+'noemailcreate' => 'Pead sisestama korrektse e-posti aadressi',
'passwordsent' => 'Uus parool on saadetud kasutaja $1 registreeritud e-postiaadressil.
Pärast parooli saamist logige palun sisse.',
'blocked-mailpassword' => 'Sinu IP-aadressi jaoks on toimetamine blokeeritud, seetõttu ei saa sa kasutada ka parooli meeldetuletamise funktsiooni.',
@@ -539,9 +745,11 @@ Ole hea ja anna õige e-aadress või jäta lahter tühjaks.',
'createaccount-text' => 'Keegi on loonud {{GRAMMAR:illative|{{SITENAME}}}} ($4) sinu e-posti aadressile vastava kasutajatunnuse "$2". Parooliks seati "$3". Logi sisse ja muuda oma parool.
Kui kasutajakonto loomine on eksitus, võid käesolevat sõnumit lihtsalt eirata.',
+'usernamehasherror' => 'Kasutajanimi ei või sisaldada trellimärke ("#").',
'login-throttled' => 'Oled lühikese aja jooksul liiga palju äpardunud logimiskatseid sooritanud.
Palun pea nüüd pisut vahet.',
'loginlanguagelabel' => 'Keel: $1',
+'suspicious-userlogout' => 'Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.',
# Password reset dialog
'resetpass' => 'Parooli muutmine',
@@ -554,17 +762,13 @@ Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
'retypenew' => 'Sisesta uus parool uuesti:',
'resetpass_submit' => 'Sisesta parool ja logi sisse',
'resetpass_success' => 'Sinu parool on edukalt muudetud! Sisselogimine...',
-'resetpass_bad_temporary' => 'Vale ajutine parool.
-
-Sa võid olla juba edukalt muutnud oma parooli või küsinud uue ajutise parooli.',
'resetpass_forbidden' => 'Paroole ei saa muuta',
'resetpass-no-info' => 'Pead olema sisselogitud, et sellele lehele pääseda.',
'resetpass-submit-loggedin' => 'Muuda parool',
+'resetpass-submit-cancel' => 'Loobu',
'resetpass-wrong-oldpass' => 'Vigane ajutine või praegune salasõna.
Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist salasõna.',
'resetpass-temp-password' => 'Ajutine parool:',
-'resetpass-logtext' => 'Järgneb nimekiri kasutajatest, kes on lasknud oma salasõna administraatoril ümber muuta.',
-'resetpass-logentry' => 'muutis kasutaja $1 parooli',
# Edit page toolbar
'bold_sample' => 'Rasvane kiri',
@@ -641,7 +845,6 @@ Sinu praegune IP-aadress on $3 ja blokeeringu number #$5. Lisa need andmed kõig
'blockededitsource' => "Sinu muudatused leheküljele '''$1''':",
'whitelistedittitle' => 'Redigeerimiseks tuleb sisse logida',
'whitelistedittext' => 'Lehekülgede toimetamiseks peate $1.',
-'confirmedittitle' => 'E-posti kinnitus on vajalik toimetamiseks',
'confirmedittext' => 'Lehekülgi ei saa toimetada enne e-posti aadressi kinnitamist.
Palun määra ja kinnita e-posti aadress [[Special:Preferences|eelistuste leheküljel]].',
'nosuchsectiontitle' => 'Sellist alaosa pole',
@@ -662,10 +865,17 @@ Kui sattusite siia kogemata, klõpsake lihtsalt brauseri ''tagasi''-nupule.",
'noarticletext' => 'Käesoleval leheküljel hetkel teksti ei ole.
Võid [[Special:Search/{{PAGENAME}}|otsida pealkirjaks olevat fraasi]] teistelt lehtedelt,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uurida asjassepuutuvaid logisid] või [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduva lehekülje ise luua]</span>.',
+'noarticletext-nopermission' => 'Sellel leheküljel ei ole teksti.
+Sa võid [[Special:Search/{{PAGENAME}}|otsida lehekülje nime]] teistelt lehekülgedelt
+või <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida lehekülje nime logidest]</span>.',
'userpage-userdoesnotexist' => 'Kasutajakontot "$1" pole olemas.
Palun mõtle järele, kas soovid seda lehte luua või muuta.',
+'userpage-userdoesnotexist-view' => 'Kasutajakonto "$1" pole registreeritud.',
+'blocked-notice-logextract' => 'See kasutaja on praegu blokeeritud.
+Allpool on toodud viimane blokeerimislogi sissekanne:',
'clearyourcache' => "'''Märkus:''' Pärast salvestamist pead sa muudatuste nägemiseks oma brauseri puhvri tühjendama: '''Mozilla:''' ''ctrl-shift-r'', '''IE:''' ''ctrl-f5'', '''Safari:''' ''cmd-shift-r'', '''Konqueror''' ''f5''.",
-'usercssjsyoucanpreview' => "'''Vihje:''' Kasuta nuppu 'Näita eelvaadet' oma uue css/js testimiseks enne salvestamist.",
+'usercssyoucanpreview' => "'''Vihje:''' Enne salvestamist kasuta oma uue CSSi proovimiseks nuppu \"{{int:showpreview}}\".",
+'userjsyoucanpreview' => "'''Vihje:''' Enne salvestamist kasuta oma uue JavaScripti proovimiseks nuppu \"{{int:showpreview}}\".",
'usercsspreview' => "'''Ärge unustage, et seda versiooni teie isiklikust stiililehest pole veel salvestatud!'''",
'userjspreview' => "'''Ärge unustage, et see versioon teie isiklikust javascriptist on alles salvestamata!'''",
'userinvalidcssjstitle' => "'''Hoiatus:''' Kujundust nimega \"\$1\" ei ole.
@@ -711,13 +921,16 @@ Sa kinnitad ka, et kirjutasid selle ise või võtsid selle kopeerimiskitsenduset
'readonlywarning' => "'''HOIATUS: Andmebaas on lukustatud hooldustöödeks, nii et praegu ei saa parandusi salvestada. Võite teksti hilisemaks kasutamiseks alles hoida tekstifailina.'''
Administraator, kes andmebaasi lukustas, andis järgmise selgituse: $1",
-'protectedpagewarning' => "'''HOIATUS: See lehekülg on lukustatud, nii et seda saavad redigeerida ainult administraatori õigustega kasutajad.'''",
-'semiprotectedpagewarning' => "'''Märkus:''' See lehekülg on lukustatud nii, et üksnes registreeritud kasutajad saavad seda muuta.",
+'protectedpagewarning' => "'''Hoiatus: See lehekülg on lukustatud nii et ainult administraatori õigustega kasutajad saavad seda redigeerida.'''
+Allpool on toodud uusim logisissekanne:",
+'semiprotectedpagewarning' => "'''Märkus:''' See lehekülg on lukustatud nii et üksnes registreeritud kasutajad saavad seda muuta.
+Allpool on toodud uusim logisissekanne:",
'cascadeprotectedwarning' => "'''Hoiatus:''' See lehekülg on nii lukustatud, et ainult ülema õigustega kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmisest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
-'titleprotectedwarning' => "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''",
-'templatesused' => 'Sellel lehel on kasutusel järgnevad mallid:',
-'templatesusedpreview' => 'Selles eelvaates kasutatakse järgmisi malle:',
-'templatesusedsection' => 'Siin rubriigis kasutatud mallid:',
+'titleprotectedwarning' => "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''
+Allpool on toodud uusim logisissekanne:",
+'templatesused' => 'Sellel leheküljel on kasutusel {{PLURAL:$1|järgnev mall|järgnevad mallid}}:',
+'templatesusedpreview' => 'Eelvaates {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
+'templatesusedsection' => 'Selles alaosas {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
'template-protected' => '(kaitstud)',
'template-semiprotected' => '(osaliselt kaitstud)',
'hiddencategories' => 'See lehekülg kuulub {{PLURAL:$1|1 peidetud kategooriasse|$1 peidetud kategooriasse}}:',
@@ -725,17 +938,18 @@ Administraator, kes andmebaasi lukustas, andis järgmise selgituse: $1",
'nocreatetext' => 'Lehekülje loomise õigus on {{GRAMMAR:inessive|{{SITENAME}}}} piiratud.
Võid pöörduda tagasi ja toimetada olemasolevat lehekülge või [[Special:UserLogin|sisse logida või uue konto luua]].',
'nocreate-loggedin' => 'Sul ei ole luba luua uusi lehekülgi.',
+'sectioneditnotsupported-title' => 'Alaosa redigeerimine pole lubatud.',
+'sectioneditnotsupported-text' => 'Sellel leheküljel pole alaosa redigeerimine lubatud.',
'permissionserrors' => 'Viga õigustes',
'permissionserrorstext' => 'Sul pole õigust seda teha {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:',
'permissionserrorstext-withaction' => 'Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgneval põhjusel|järgnevatel põhjustel}}:',
-'recreate-deleted-warn' => "'''Hoiatus: Te loote uuesti lehte, mis on varem kustutatud.'''
+'recreate-moveddeleted-warn' => "'''Hoiatus: Te loote uuesti lehte, mis on varem kustutatud.'''
Kaaluge, kas lehe uuesti loomine on kohane.
-Lehe eelnevad kustutamised:",
-'deleted-notice' => 'See lehekülg on kustutatud.
-
-Lehekülje kustutamise logi on allpool.',
-'deletelog-fulllog' => 'Vaata täielikku logi',
+Lehe eelnevad kustutamised ja teisaldamised:",
+'moveddeleted-notice' => 'See lehekülg on kustutatud.
+Allpool on esitatud lehekülje kustutamis- ja teisaldamislogi.',
+'log-fulllog' => 'Vaata kogu logi',
'edit-gone-missing' => 'Polnud võimalik lehekülge uuendada.
Tundub, et see on kustutatud.',
'edit-conflict' => 'Redigeerimiskonflikt.',
@@ -766,9 +980,9 @@ Kasutaja $3 märkis põhjuseks ''$2''",
'viewpagelogs' => 'Vaata selle lehe logisid',
'nohistory' => 'Sellel leheküljel ei ole eelmisi redaktsioone.',
'currentrev' => 'Viimane redaktsioon',
-'currentrev-asof' => 'Viimane redaktsioon ($1)',
+'currentrev-asof' => 'Viimane redaktsioon: $1',
'revisionasof' => 'Redaktsioon: $1',
-'revision-info' => 'Redaktsioon seisuga $1 kasutajalt $2', # Additionally available: $3: revision id
+'revision-info' => 'Redaktsioon seisuga $1 kasutajalt $2',
'previousrevision' => '←Vanem redaktsioon',
'nextrevision' => 'Uuem redaktsioon→',
'currentrevisionlink' => 'Viimane redaktsiooni',
@@ -781,7 +995,7 @@ Kasutaja $3 märkis põhjuseks ''$2''",
Legend: (viim) = erinevused võrreldes viimase redaktsiooniga,
(eel) = erinevused võrreldes eelmise redaktsiooniga, P = pisimuudatus',
'history-fieldset-title' => 'Ajaloo sirvimine',
-'deletedrev' => '[kustutatud]',
+'history-show-deleted' => 'Üksnes kustutatud',
'histfirst' => 'Esimesed',
'histlast' => 'Viimased',
'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
@@ -790,54 +1004,112 @@ Legend: (viim) = erinevused võrreldes viimase redaktsiooniga,
# Revision feed
'history-feed-title' => 'Redigeerimiste ajalugu',
'history-feed-description' => 'Selle lehekülje redigeerimiste ajalugu',
-'history-feed-item-nocomment' => '$1 - $2', # user at time
+'history-feed-item-nocomment' => '$1 - $2',
'history-feed-empty' => 'Soovitud lehekülge ei ole olemas.
See võib olla vikist kustutatud või ümber nimetatud.
Ürita [[Special:Search|vikist otsida]] teemakohaseid lehekülgi.',
# Revision deletion
-'rev-deleted-comment' => '(kommentaar eemaldatud)',
-'rev-deleted-user' => '(kasutajanimi eemaldatud)',
-'rev-deleted-event' => '(logitoiming eemaldatud)',
-'rev-delundel' => 'näita/peida',
-'revisiondelete' => 'Redaktsioonide kustutamine või taastamine',
-'revdelete-nooldid-title' => 'Sellist redaktsiooni pole.',
-'revdelete-nooldid-text' => 'Sa pole valinud redaktsiooni, valitud redaktsioon puudub või Sa püüad peita viimast redaktsiooni.',
-'revdelete-nologtype-title' => 'Logi tüüpi ei antud',
-'revdelete-nologtype-text' => 'Sa ei ole selle toimingu sooritamiseks logi tüüpi täpsustanud.',
-'revdelete-nologid-title' => 'Vigane logikirje',
-'revdelete-selected' => "'''{{PLURAL:$2|Valitud versioon|Valitud versioonid}} artiklist [[:$1]]:'''",
-'logdelete-selected' => "'''Valitud {{PLURAL:$1|logisissekanne|logisissekanded}}:'''",
-'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgnevatel juhtudel:
+'rev-deleted-comment' => '(kommentaar eemaldatud)',
+'rev-deleted-user' => '(kasutajanimi eemaldatud)',
+'rev-deleted-event' => '(logitoiming eemaldatud)',
+'rev-deleted-user-contribs' => '[kasutajanimi või IP-aadress kustutatud - muudatust ei näidata]',
+'rev-deleted-text-permission' => "See lehekülje redaktsioon on '''kustutatud'''.
+Üksikasju võib olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kustutamise logis].",
+'rev-deleted-text-unhide' => "See lehekülje redaktsioon on '''kustutatud'''.
+Üksikasju võib olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kustutamise logis].
+Administraatorina võid [$1 seda redaktsiooni] näha, kui soovid jätkata.",
+'rev-suppressed-text-unhide' => "See redaktsioon leheküljest on '''varjatud'''.
+Võimalik, et [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} varjamislogis] on üksikasju.
+Ülemana saad soovi korral siiski [$1 seda redaktsiooni vaadata].",
+'rev-deleted-text-view' => "See lehekülje redaktsioon on '''kustutatud'''.
+Administraatorina võid seda näha. Üksikasju võib olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kustutamise logis].",
+'rev-suppressed-text-view' => "See redaktsioon leheküljest on '''varjatud'''.
+Ülemana saad seda vaadata. Võimalik, et üksikasjad on [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} varjamislogis].",
+'rev-deleted-no-diff' => "Seda erinevust ei saa vaadata, kuna üks redaktsioonidest on '''kustutatud'''.
+Üksikasju võib olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kustutamise logis].",
+'rev-suppressed-no-diff' => "Erinevusi ei saa vaadata, sest üks redaktsioonidest on '''kustutatud'''.",
+'rev-deleted-unhide-diff' => "Üks selle lehekülje muudatustest on '''kustutatud'''.
+Üksikasju võib olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kustutamise logis].
+Administraatorina võid [$1 seda muudatust] näha, kui soovid jätkata.",
+'rev-suppressed-unhide-diff' => "Üks selle lehekülje muudatustest on '''varjatud'''.
+Üksikasju võib olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} varjamislogis].
+Administraatorina saad soovi korral siiski [$1 seda muudatust vaadata].",
+'rev-deleted-diff-view' => "Üks selle lehekülje muudatustest on '''kustutatud'''.
+Administraatorina saad seda muudatust vaadata. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Kustutamislogis] võib üksikasju olla.",
+'rev-suppressed-diff-view' => "Üks selle lehekülje muudatustest on '''varjatud'''.
+Administraatorina saad seda muudatust vaadata. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Varjamislogis] võib üksikasju olla.",
+'rev-delundel' => 'näita/peida',
+'rev-showdeleted' => 'näita',
+'revisiondelete' => 'Redaktsioonide kustutamine või taastamine',
+'revdelete-nooldid-title' => 'Sellist redaktsiooni pole.',
+'revdelete-nooldid-text' => 'Sa pole valinud redaktsiooni, valitud redaktsioon puudub või Sa püüad peita viimast redaktsiooni.',
+'revdelete-nologtype-title' => 'Logi tüüpi ei antud',
+'revdelete-nologtype-text' => 'Sa ei ole selle toimingu sooritamiseks logi tüüpi täpsustanud.',
+'revdelete-nologid-title' => 'Vigane logikirje',
+'revdelete-no-file' => 'Faili ei ole.',
+'revdelete-show-file-confirm' => 'Kas oled kindel, et soovid häha faili "<nowiki>$1</nowiki>" kustutatud redaktsiooni, mis tehti $2 kell $3?',
+'revdelete-show-file-submit' => 'Jah',
+'revdelete-selected' => "'''{{PLURAL:$2|Valitud versioon|Valitud versioonid}} artiklist [[:$1]]:'''",
+'logdelete-selected' => "'''Valitud {{PLURAL:$1|logisissekanne|logisissekanded}}:'''",
+'revdelete-text' => "'''Kustutatud redaktsioonid kajastuvad endiselt lehe ajaloos ja logides, kuid osa nende sisust pole tavakasutajatele nähtav.'''
+{{GRAMMAR:genitive|{{SITENAME}}}} administraatorid saavad varjatud sisu siiski vaadata ning seda vajadusel taastada, kui see pole just täiendavalt ära keelatud.",
+'revdelete-confirm' => 'Kinnita, et Sa tõesti soovid seda teha ning et Sa saad aru tagajärgedest ja et tegevus on kooskõlas [[{{MediaWiki:Policy-url}}|siinse sisekorraga]].',
+'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgnevatel juhtudel:
* Sobimatu isiklik teave
*: ''kodune aadress ja telefoninumber, sotsiaalhoolekandenumber jne''",
-'revdelete-legend' => 'Nähtavuse piirangute seadmine',
-'revdelete-hide-text' => 'Peida redigeerimise tekst',
-'revdelete-hide-name' => 'Peida toiming ja sihtmärk',
-'revdelete-hide-comment' => 'Peida muudatuse kommentaar',
-'revdelete-hide-user' => 'Peida toimetaja kasutajanimi või IP-aadress',
-'revdelete-hide-restricted' => 'Varja andmeid nii administraatorite kui ka teiste eest.',
-'revdelete-suppress' => 'Varja andmed nii ülemate kui ka teiste eest.',
-'revdelete-hide-image' => 'Peida faili sisu',
-'revdelete-unsuppress' => 'Eemalda taastatud redaktsioonidelt piirangud',
-'revdelete-log' => 'Põhjus:',
-'revdelete-submit' => 'Pöördu valitud redigeerimise juurde',
-'revdelete-logentry' => 'muutis lehekülje [[$1]] redaktsiooni nähtavust',
-'logdelete-logentry' => 'muutis lehekülje [[$1]] nähtavust',
-'revdelete-success' => "Redaktsiooni nähtavus edukalt värskendatud.'''",
-'logdelete-success' => "'''Logi nähtavus edukalt paigas.'''",
-'revdel-restore' => 'Muuda nähtavust',
-'pagehist' => 'Lehekülje ajalugu',
-'deletedhist' => 'Kustutatud ajalugu',
-'revdelete-content' => 'sisu',
-'revdelete-summary' => 'toimetamise kokkuvõte',
-'revdelete-uname' => 'kasutajanimi',
-'revdelete-restricted' => 'ülematele piirangud kehtestatud',
-'revdelete-unrestricted' => 'ülematelt piirangud eemaldatud',
-'revdelete-hid' => '$1 peidetud',
-'revdelete-unhid' => '$1 nähtavaks tehtud',
-'revdelete-log-message' => '{{PLURAL:$2|Ühe redaktsiooni|$2 redaktsiooni}} kohta $1',
-'logdelete-log-message' => '{{PLURAL:$2|Ühe sündmuse|$2 sündmuse}} kohta $1',
+'revdelete-legend' => 'Nähtavuse piirangute seadmine',
+'revdelete-hide-text' => 'Peida redigeerimise tekst',
+'revdelete-hide-image' => 'Peida faili sisu',
+'revdelete-hide-name' => 'Peida toiming ja sihtmärk',
+'revdelete-hide-comment' => 'Peida muudatuse kommentaar',
+'revdelete-hide-user' => 'Peida toimetaja kasutajanimi või IP-aadress',
+'revdelete-hide-restricted' => 'Varja andmeid nii administraatorite kui ka teiste eest.',
+'revdelete-radio-same' => '(ära muuda)',
+'revdelete-radio-set' => 'Jah',
+'revdelete-radio-unset' => 'Ei',
+'revdelete-suppress' => 'Varja andmed nii ülemate kui ka teiste eest.',
+'revdelete-unsuppress' => 'Eemalda taastatud redaktsioonidelt piirangud',
+'revdelete-log' => 'Põhjus:',
+'revdelete-submit' => 'Rakenda valitud {{PLURAL:$1|redaktsiooni|redaktsioonide}} suhtes',
+'revdelete-logentry' => 'muutis lehekülje [[$1]] redaktsiooni nähtavust',
+'logdelete-logentry' => 'muutis lehekülje [[$1]] nähtavust',
+'revdelete-success' => "Redaktsiooni nähtavus edukalt värskendatud.'''",
+'revdelete-failure' => "'''Redaktsiooni nähtavust ei saanud värskendada:'''
+$1",
+'logdelete-success' => "'''Logi nähtavus edukalt paigas.'''",
+'logdelete-failure' => "'''Logi nähtavust ei saanud paika:'''
+$1",
+'revdel-restore' => 'Muuda nähtavust',
+'pagehist' => 'Lehekülje ajalugu',
+'deletedhist' => 'Kustutatud ajalugu',
+'revdelete-content' => 'sisu',
+'revdelete-summary' => 'toimetamise kokkuvõte',
+'revdelete-uname' => 'kasutajanimi',
+'revdelete-restricted' => 'ülematele piirangud kehtestatud',
+'revdelete-unrestricted' => 'ülematelt piirangud eemaldatud',
+'revdelete-hid' => '$1 peidetud',
+'revdelete-unhid' => '$1 nähtavaks tehtud',
+'revdelete-log-message' => '{{PLURAL:$2|Ühe redaktsiooni|$2 redaktsiooni}} kohta $1',
+'logdelete-log-message' => '{{PLURAL:$2|Ühe sündmuse|$2 sündmuse}} kohta $1',
+'revdelete-hide-current' => 'Tõrge üksuse kuupäevaga $2, kell $1 peitmisel: see on praegune redaktsioon.
+Seda ei saa peita.',
+'revdelete-show-no-access' => 'Tõrge ajatempliga $1 kell $2 üksuse näitamisel: selle on märge "piiranguga".
+Sul ei ole sellele ligipääsu.',
+'revdelete-modify-no-access' => 'Tõrge üksuse kuupäeva $2, kell $1 muutmisel: see on märgitud kui "piiranguga".
+Sul ei ole sellele ligipääsu.',
+'revdelete-modify-missing' => 'Tõrge üksuse $1 muutmisel: see puudub andmebaasist!',
+'revdelete-no-change' => "'''Hoiatus:''' Üksusel kuupäevaga $2, kell $1 olid juba soovitud nähtavussätted.",
+'revdelete-concurrent-change' => 'Tõrge üksuse kuupäevaga $2, kell $1 muutmisel: paistab, et keegi teine on selle olekut sel ajal muutnud, kui sina seda muuta üritasid.
+Palun vaata logisid.',
+'revdelete-only-restricted' => 'Ei õnnestu varjata elementi $2, $1 kuupäevaga: Sa ei saa seda elementi administraatorite eest peita, kui Sa ei märgi ka ühte muudest nähtavussätetest.',
+'revdelete-reason-dropdown' => '*Tavalised kustutamise põhjused
+** Autoriõiguste rikkumine
+** Kohatud eraelulised andmed',
+'revdelete-otherreason' => 'Muu või täiendav põhjus:',
+'revdelete-reasonotherlist' => 'Muu põhjus',
+'revdelete-edit-reasonlist' => 'Redigeeri kustutamise põhjuseid',
+'revdelete-offender' => 'Redaktsiooni tegija:',
# Suppression log
'suppressionlog' => 'Varjamislogi',
@@ -876,57 +1148,13 @@ Navigeerimislinkide kasutamine tühistab redaktsioonide valiku.',
'mergelogpagetext' => 'Allpool on hiljuti üksteisega liidetud leheküljeajalugude logi.',
# Diffs
-'history-title' => 'Lehekülje "$1" muudatuste ajalugu',
-'difference' => '(Erinevused redaktsioonide vahel)',
-'lineno' => 'Rida $1:',
-'compareselectedversions' => 'Võrdle valitud redaktsioone',
-'visualcomparison' => 'Vaateline võrdlus',
-'wikicodecomparison' => 'Lähtetekstide võrdlus',
-'editundo' => 'eemalda',
-'diff-multi' => '({{PLURAL:$1|Ühte vahepealset muudatust|$1 vahepealset muudatust}} ei näidata.)',
-'diff-movedto' => 'teisaldatud leheküljele $1',
-'diff-styleadded' => '$1 stiil lisatud',
-'diff-added' => '$1 lisatud',
-'diff-changedto' => 'muudetud selliseks: $1',
-'diff-movedoutof' => 'teisaldatud leheküljelt $1',
-'diff-styleremoved' => '$1 stiil eemaldatud',
-'diff-removed' => '$1 eemaldatud',
-'diff-changedfrom' => 'muudetud siit: $1',
-'diff-src' => 'allikas',
-'diff-withdestination' => 'sihtkoht: $1',
-'diff-width' => 'laius',
-'diff-height' => 'kõrgus',
-'diff-p' => "'''paragrahv'''",
-'diff-blockquote' => "'''tsitaat'''",
-'diff-h1' => "'''pealkiri (tase 1)'''",
-'diff-h2' => "'''pealkiri (tase 2)'''",
-'diff-h3' => "'''pealkiri (tase 3)'''",
-'diff-h4' => "'''pealkiri (tase 4)'''",
-'diff-h5' => "'''pealkiri (tase 5)'''",
-'diff-ul' => "'''järjestamata loend'''",
-'diff-ol' => "'''järjestatud loend'''",
-'diff-table' => "'''tabel'''",
-'diff-tbody' => "'''tabeli sisu'''",
-'diff-tr' => "'''rida'''",
-'diff-td' => "'''element'''",
-'diff-th' => "'''päis'''",
-'diff-br' => "'''tühik'''",
-'diff-dl' => "'''definitsioonide loend'''",
-'diff-dd' => "'''definitsioon'''",
-'diff-img' => "'''pilt'''",
-'diff-span' => "'''ulatus'''",
-'diff-a' => "'''link'''",
-'diff-i' => "'''kaldkiri'''",
-'diff-b' => "'''rasvane'''",
-'diff-strong' => "'''tugev'''",
-'diff-em' => "'''rõhk'''",
-'diff-font' => "'''kirjatüüp'''",
-'diff-big' => "'''suur'''",
-'diff-del' => "'''kustutatud'''",
-'diff-tt' => "'''fikseeritud laius'''",
-'diff-sub' => "'''alaindeks'''",
-'diff-sup' => "'''ülaindeks'''",
-'diff-strike' => "'''läbi joonitud'''",
+'history-title' => 'Lehekülje "$1" muudatuste ajalugu',
+'difference' => '(Erinevused redaktsioonide vahel)',
+'lineno' => 'Rida $1:',
+'compareselectedversions' => 'Võrdle valitud redaktsioone',
+'showhideselectedversions' => 'Näita/peida valitud versioonid',
+'editundo' => 'eemalda',
+'diff-multi' => '({{PLURAL:$1|Ühte vahepealset muudatust|$1 vahepealset muudatust}} ei näidata.)',
# Search results
'searchresults' => 'Otsingu tulemused',
@@ -934,28 +1162,25 @@ Navigeerimislinkide kasutamine tühistab redaktsioonide valiku.',
'searchresulttext' => 'Lisainfot otsimise kohta vaata [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Otsisid fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik sõnega "$1" algavad lehed]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik lehed, mis sisaldavad linke artiklile "$1"]])',
'searchsubtitleinvalid' => 'Päring "$1"',
-'noexactmatch' => "'''Artiklit pealkirjaga \"\$1\" ei leitud.''' Võite [[:\$1|selle artikli luua]].",
-'noexactmatch-nocreate' => "'''Lehekülge pealkirjaga \"\$1\" ei eksisteeri.'''",
'toomanymatches' => 'Liiga palju tulemusi, ürita teistsugust päringut',
'titlematches' => 'Vasted artikli pealkirjades',
'notitlematches' => 'Artikli pealkirjades otsitavat ei leitud',
'textmatches' => 'Vasted artikli tekstides',
'notextmatches' => 'Artikli tekstides otsitavat ei leitud',
-'prevn' => 'eelmised $1',
-'nextn' => 'järgmised $1',
+'prevn' => '{{PLURAL:$1|eelmine|eelmised $1}}',
+'nextn' => '{{PLURAL:$1|järgmine|järgmised $1}}',
'prevn-title' => '{{PLURAL:$1|Eelmine tulemus|Eelmised $1 tulemust}}',
'nextn-title' => '{{PLURAL:$1|Järgmine tulemus|Järgmised $1 tulemust}}',
'shown-title' => 'Näita lehekülje kohta $1 {{PLURAL:$1|tulemus|tulemust}}',
-'viewprevnext' => 'Näita ($1) ($2) ($3)',
+'viewprevnext' => 'Näita ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Otsingu sätted',
'searchmenu-exists' => "'''Lehekülg pealkirjaga \"[[:\$1]]\" on selles vikis olemas.'''",
'searchmenu-new' => "'''Loo lehekülg pealkirjaga \"[[:\$1]]\".'''",
'searchhelp-url' => 'Help:Sisukord',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sirvi selle eesliitega lehekülgi]]',
'searchprofile-articles' => 'Sisuleheküljed',
-'searchprofile-articles-and-proj' => 'Sisu- & projektileheküljed',
-'searchprofile-project' => 'Projektilehed',
-'searchprofile-images' => 'Failid',
+'searchprofile-project' => 'Abi- ja projektilehed',
+'searchprofile-images' => 'Multimeedia',
'searchprofile-everything' => 'Kõik',
'searchprofile-advanced' => 'Täpsem otsing',
'searchprofile-articles-tooltip' => 'Otsi nimeruumist $1',
@@ -975,11 +1200,12 @@ Navigeerimislinkide kasutamine tühistab redaktsioonide valiku.',
'search-mwsuggest-disabled' => 'ettepanekuid ei ole',
'search-relatedarticle' => 'Seotud',
'mwsuggest-disable' => 'Ära näita otsinguvihjeid',
+'searcheverything-enable' => 'Otsi kõigist nimeruumidest',
'searchrelated' => 'seotud',
'searchall' => 'kõik',
'showingresults' => "Allpool näitame {{PLURAL:$1|'''ühte''' tulemit|'''$1''' tulemit}} alates tulemist #'''$2'''.",
'showingresultsnum' => "Allpool näitame {{PLURAL:$3|'''ühte''' tulemit|'''$3''' tulemit}} alates tulemist #'''$2'''.",
-'showingresultstotal' => "Allpool näidatakse {{PLURAL:$4|'''$1'''. tulemust (otsingutulemuste koguarv '''$3''')|'''$1. - $2.''' tulemust (otsingutulemuste koguarv '''$3''')}}",
+'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st vastest|Vasted '''$1–$2''' '''$3'''-st}} päringule '''$4'''",
'nonefound' => "'''Märkus''': Otsing hõlmab vaikimisi vaid osasid nimeruume.
Kui soovid otsida ühekorraga kõigist nimeruumidest (kaasa arvatud arutelulehed, mallid, jne) kasuta
päringu ees prefiksit ''all:''. Konkreetsest nimeruumist otsimiseks kasuta prefiksina sele nimeruumi nime.",
@@ -989,108 +1215,149 @@ päringu ees prefiksit ''all:''. Konkreetsest nimeruumist otsimiseks kasuta pref
'powersearch-ns' => 'Otsing nimeruumidest:',
'powersearch-redir' => 'Loetle ümbersuunamised',
'powersearch-field' => 'Otsi fraasi',
+'powersearch-togglelabel' => 'Vali:',
+'powersearch-toggleall' => 'Kõik',
+'powersearch-togglenone' => 'Ei ühtegi',
'search-external' => 'Välisotsing',
'searchdisabled' => "<p>Vabandage! Otsing vikist on ajutiselt peatatud, et säilitada muude teenuste normaalne töökiirus. Otsimiseks võite kasutada allpool olevat Google'i otsinguvormi, kuid sellelt saadavad tulemused võivad olla vananenud.</p>",
+# Quickbar
+'qbsettings' => 'Kiirriba sätted',
+'qbsettings-none' => 'Ei_ole',
+'qbsettings-fixedleft' => 'Püsivalt_vasakul',
+'qbsettings-fixedright' => 'Püsivalt paremal',
+'qbsettings-floatingleft' => 'Ujuvalt vasakul',
+'qbsettings-floatingright' => 'Ujuvalt paremal',
+
# Preferences page
-'preferences' => 'Eelistused',
-'mypreferences' => 'Eelistused',
-'prefs-edits' => 'Redigeerimiste arv:',
-'prefsnologin' => 'Te ei ole sisse loginud',
-'prefsnologintext' => 'Et oma eelistusi seada, peate olema <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} sisse logitud]</span>.',
-'prefsreset' => 'Teie eelistused on arvutimälu järgi taastatud.',
-'qbsettings' => 'Kiirriba sätted',
-'qbsettings-none' => 'Ei_ole',
-'qbsettings-fixedleft' => 'Püsivalt_vasakul',
-'qbsettings-fixedright' => 'Püsivalt paremal',
-'qbsettings-floatingleft' => 'Ujuvalt vasakul',
-'qbsettings-floatingright' => 'Ujuvalt paremal',
-'changepassword' => 'Muuda parool',
-'skin' => 'Kujundus',
-'skin-preview' => 'eelvaade',
-'math' => 'Valemite näitamine',
-'dateformat' => 'Kuupäeva formaat',
-'datedefault' => 'Eelistus puudub',
-'datetime' => 'Kuupäev ja kellaaeg',
-'math_failure' => 'Arusaamatu süntaks',
-'math_unknown_error' => 'Tundmatu viga',
-'math_unknown_function' => 'Tundmatu funktsioon',
-'math_lexing_error' => 'Väljalugemisviga',
-'math_syntax_error' => 'Süntaksiviga',
-'math_image_error' => "PNG konverteerimine ebaõnnestus;
-kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korrektsust.",
-'prefs-personal' => 'Kasutaja andmed',
-'prefs-rc' => 'Viimased muudatused',
-'prefs-watchlist' => 'Jälgimisloend',
-'prefs-watchlist-days' => 'Mitme päeva muudatusi näidata loendis:',
-'prefs-watchlist-days-max' => '(maksimaalne päevade arv on 7)',
-'prefs-watchlist-edits' => 'Mitu muudatust näidatakse laiendatud jälgimisloendis:',
-'prefs-watchlist-edits-max' => '(maksimaalne väärtus: 1000)',
-'prefs-misc' => 'Muu',
-'prefs-resetpass' => 'Muuda parooli',
-'saveprefs' => 'Salvesta eelistused',
-'resetprefs' => 'Lähtesta eelistused',
-'restoreprefs' => 'Taasta kõikjal vaikesätted',
-'textboxsize' => 'Redigeerimisseaded',
-'prefs-edit-boxsize' => 'Toimetamise akna suurus.',
-'rows' => 'Ridu:',
-'columns' => 'Veerge:',
-'searchresultshead' => 'Otsingutulemite sätted',
-'resultsperpage' => 'Vasteid leheküljel:',
-'contextlines' => 'Ridu vastes:',
-'contextchars' => 'Kaasteksti rea kohta:',
-'stub-threshold' => '<a href="#" class="stub">Nii</a> lingitud lehekülje suuruse ülempiir (baitides):',
-'recentchangesdays' => 'Mitu päeva näidata viimastes muudatustes:',
-'recentchangescount' => 'Mitut pealkirja näidata vaikimisi viimaste muudatuste lehel, artiklite ajaloolehtedel ja logides:',
-'savedprefs' => 'Teie eelistused on salvestatud.',
-'timezonelegend' => 'Ajavöönd:',
-'timezonetext' => 'Kohaliku aja ja serveri aja (maailmaaja) vahe tundides.',
-'localtime' => 'Kohalik aeg:',
-'timezoneselect' => 'Ajavöönd:',
-'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet',
-'timezoneuseoffset' => 'Muu (määra ajavahe)',
-'timezoneoffset' => 'Ajavahe¹:',
-'servertime' => 'Serveri aeg:',
-'guesstimezone' => 'Loe aeg brauserist',
-'timezoneregion-africa' => 'Aafrika',
-'timezoneregion-america' => 'Ameerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Aasia',
-'timezoneregion-atlantic' => 'Atlandi ookean',
-'timezoneregion-australia' => 'Austraalia',
-'timezoneregion-europe' => 'Euroopa',
-'timezoneregion-indian' => 'India ookean',
-'timezoneregion-pacific' => 'Vaikne ookean',
-'allowemail' => 'Luba teistel kasutajatel mulle e-kirju saata',
-'prefs-searchoptions' => 'Otsimine',
-'prefs-namespaces' => 'Nimeruumid',
-'defaultns' => 'Vaikimisi otsi järgmistest nimeruumidest:',
-'default' => 'vaikeväärtus',
-'files' => 'Failid',
-'prefs-custom-css' => 'kohandatud CSS',
-'prefs-custom-js' => 'kohandatud JS',
+'preferences' => 'Eelistused',
+'mypreferences' => 'Eelistused',
+'prefs-edits' => 'Redigeerimiste arv:',
+'prefsnologin' => 'Te ei ole sisse loginud',
+'prefsnologintext' => 'Et oma eelistusi seada, peate olema <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sisse logitud]</span>.',
+'changepassword' => 'Muuda parool',
+'prefs-skin' => 'Kujundus',
+'skin-preview' => 'eelvaade',
+'prefs-math' => 'Valemite näitamine',
+'datedefault' => 'Eelistus puudub',
+'prefs-datetime' => 'Kuupäev ja kellaaeg',
+'prefs-personal' => 'Kasutaja andmed',
+'prefs-rc' => 'Viimased muudatused',
+'prefs-watchlist' => 'Jälgimisloend',
+'prefs-watchlist-days' => 'Mitme päeva muudatusi näidata loendis:',
+'prefs-watchlist-days-max' => '(Ülemmäär 7 päeva)',
+'prefs-watchlist-edits' => 'Mitu muudatust näidatakse laiendatud jälgimisloendis:',
+'prefs-watchlist-edits-max' => '(Ülemmäär: 1000)',
+'prefs-watchlist-token' => 'Jälgimisloendi tunnus:',
+'prefs-misc' => 'Muu',
+'prefs-resetpass' => 'Muuda parooli',
+'prefs-email' => 'E-posti sätted',
+'prefs-rendering' => 'Ilme',
+'saveprefs' => 'Salvesta eelistused',
+'resetprefs' => 'Lähtesta eelistused',
+'restoreprefs' => 'Taasta kõikjal vaikesätted',
+'prefs-editing' => 'Toimetamine',
+'prefs-edit-boxsize' => 'Toimetamise akna suurus.',
+'rows' => 'Ridu:',
+'columns' => 'Veerge:',
+'searchresultshead' => 'Otsingutulemite sätted',
+'resultsperpage' => 'Vasteid leheküljel:',
+'contextlines' => 'Ridu vastes:',
+'contextchars' => 'Kaasteksti rea kohta:',
+'stub-threshold' => '<a href="#" class="stub">Nii</a> lingitud lehekülje suuruse ülempiir (baitides):',
+'recentchangesdays' => 'Mitu päeva näidata viimastes muudatustes:',
+'recentchangesdays-max' => 'Ülemmäär $1 {{PLURAL:$1|päev|päeva}}',
+'recentchangescount' => 'Mitut redaktsiooni vaikimisi näidata:',
+'prefs-help-recentchangescount' => 'See käib viimaste muudatuste, lehekülgede ajalugude ja logide kohta.',
+'prefs-help-watchlist-token' => 'Selle välja täitmine tekitab sinu jälgimisloendile RSS-toite.
+Igaüks, kes teab sellel väljal olevat võtit, saab lugeda sinu jälgimisloendit, seega vali turvaline väärtus.
+Siin on juhuslik väärtus, mida saad kasutada: $1',
+'savedprefs' => 'Teie eelistused on salvestatud.',
+'timezonelegend' => 'Ajavöönd:',
+'localtime' => 'Kohalik aeg:',
+'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet',
+'timezoneuseoffset' => 'Muu (määra ajavahe)',
+'timezoneoffset' => 'Ajavahe¹:',
+'servertime' => 'Serveri aeg:',
+'guesstimezone' => 'Loe aeg brauserist',
+'timezoneregion-africa' => 'Aafrika',
+'timezoneregion-america' => 'Ameerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Aasia',
+'timezoneregion-atlantic' => 'Atlandi ookean',
+'timezoneregion-australia' => 'Austraalia',
+'timezoneregion-europe' => 'Euroopa',
+'timezoneregion-indian' => 'India ookean',
+'timezoneregion-pacific' => 'Vaikne ookean',
+'allowemail' => 'Luba teistel kasutajatel mulle e-kirju saata',
+'prefs-searchoptions' => 'Otsimine',
+'prefs-namespaces' => 'Nimeruumid',
+'defaultns' => 'Muul juhul otsi järgmistest nimeruumidest:',
+'default' => 'vaikeväärtus',
+'prefs-files' => 'Failid',
+'prefs-custom-css' => 'kohandatud CSS',
+'prefs-custom-js' => 'kohandatud JS',
+'prefs-reset-intro' => 'Sellel leheküljel saad oma eelistused lähtestada võrgukoha vaike-eelistusteks.
+Toimingut ei saa hiljem tühistada.',
+'prefs-emailconfirm-label' => 'E-posti kinnitus:',
+'prefs-textboxsize' => 'Toimetamisakna suurus',
+'youremail' => 'E-posti aadress:',
+'username' => 'Kasutajanimi:',
+'uid' => 'Kasutaja ID:',
+'prefs-memberingroups' => 'Kuulub {{PLURAL:$1|rühma|rühmadesse}}:',
+'prefs-registration' => 'Registreerumise aeg:',
+'yourrealname' => 'Tegelik nimi:',
+'yourlanguage' => 'Keel:',
+'yournick' => 'Uus allkiri:',
+'prefs-help-signature' => 'Kommentaarile tuleks aruteluleheküljel alla kirjutada märkidega <nowiki>~~~~</nowiki>, mis muutuvad sinu allkirjaks ja ajatempliks.',
+'badsig' => 'Sobimatu allkiri.
+Palun kontrolli HTML koodi.',
+'badsiglength' => 'Sinu signatuur on liiga pikk.
+See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
+'yourgender' => 'Sugu:',
+'gender-unknown' => 'Määramata',
+'gender-male' => 'Mees',
+'gender-female' => 'Naine',
+'prefs-help-gender' => 'Vabatahtlik: kasutatakse mõnedes keeltes sooliselt korrektse väljendumise otstarbel. Info on avalik.',
+'email' => 'E-post',
+'prefs-help-realname' => 'Vabatahtlik: Kui otsustate selle avaldada, kasutatakse seda teie kaastöö seostamiseks teiega.',
+'prefs-help-email' => 'Elektronpostiaadressi sisestamine ei ole kohustuslik, kuid võimaldab sul tellida parooli meeldetuletuse, kui peaksid oma parooli unustama. Samuti saad aadressi märkides anda oma identiteeti avaldamata teistele kasutajatele võimaluse enesele sõnumeid saata.',
+'prefs-help-email-required' => 'E-posti aadress on vajalik.',
+'prefs-info' => 'Põhiteave',
+'prefs-i18n' => 'Rahvusvaheline',
+'prefs-signature' => 'Allkiri',
+'prefs-dateformat' => 'Kuupäeva vorming',
+'prefs-timeoffset' => 'Ajavahe',
+'prefs-advancedediting' => 'Täpsemad eelistused',
+'prefs-advancedrc' => 'Täpsemad eelistused',
+'prefs-advancedrendering' => 'Täpsemad eelistused',
+'prefs-advancedsearchoptions' => 'Täpsemad eelistused',
+'prefs-advancedwatchlist' => 'Täpsemad eelistused',
+'prefs-display' => 'Kuvasätted',
+'prefs-diffs' => 'Erinevused',
# User rights
-'userrights' => 'Kasutaja õiguste muutmine', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Kasutajarühma muutmine',
-'userrights-user-editname' => 'Sisesta kasutajatunnus:',
-'editusergroup' => 'Muuda kasutajarühma',
-'editinguser' => "Kasutaja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) õiguste muutmine",
-'userrights-editusergroup' => 'Kasutajarühma valik',
-'saveusergroups' => 'Salvesta rühma muudatused',
-'userrights-groupsmember' => 'Kuulub rühmadesse:',
-'userrights-groups-help' => 'Sa võid muuta selle kasutaja kuuluvust eri kasutajarühmadesse.
+'userrights' => 'Kasutaja õiguste muutmine',
+'userrights-lookup-user' => 'Kasutajarühma muutmine',
+'userrights-user-editname' => 'Sisesta kasutajatunnus:',
+'editusergroup' => 'Muuda kasutajarühma',
+'editinguser' => "Kasutaja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) õiguste muutmine",
+'userrights-editusergroup' => 'Kasutajarühma valik',
+'saveusergroups' => 'Salvesta rühma muudatused',
+'userrights-groupsmember' => 'Kuulub rühmadesse:',
+'userrights-groupsmember-auto' => 'Kuulub vaikimisi rühmadesse:',
+'userrights-groups-help' => 'Sa võid muuta selle kasutaja kuuluvust eri kasutajarühmadesse.
* Märgitud kast tähendab, et kasutaja kuulub sellesse rühma.
* Märkimata kast tähendab, et kasutaja ei kuulu sellesse rühma.
* Aga * kasutajarühma juures tähistab õigust, mida sa peale lisamist enam eemaldada ei saa, või siis ka vastupidi.',
-'userrights-reason' => 'Põhjus:',
-'userrights-no-interwiki' => 'Sul ei ole luba muuta kasutajaõigusi teistes vikides.',
-'userrights-nodatabase' => 'Andmebaasi $1 ei ole olemas või pole see kohalik.',
-'userrights-nologin' => 'Kasutaja õiguste muutmiseks, pead sa ülema õigustega kontoga [[Special:UserLogin|sisse logima]].',
-'userrights-notallowed' => 'Sulle pole antud luba jagada kasutajatele õigusi.',
-'userrights-changeable-col' => 'Rühmad, mida sa saad muuta',
-'userrights-unchangeable-col' => 'Rühmad, mida sa ei saa muuta',
+'userrights-reason' => 'Põhjus:',
+'userrights-no-interwiki' => 'Sul ei ole luba muuta kasutajaõigusi teistes vikides.',
+'userrights-nodatabase' => 'Andmebaasi $1 ei ole olemas või pole see kohalik.',
+'userrights-nologin' => 'Kasutaja õiguste muutmiseks, pead sa ülema õigustega kontoga [[Special:UserLogin|sisse logima]].',
+'userrights-notallowed' => 'Sulle pole antud luba jagada kasutajatele õigusi.',
+'userrights-changeable-col' => 'Rühmad, mida sa saad muuta',
+'userrights-unchangeable-col' => 'Rühmad, mida sa ei saa muuta',
# Groups
'group' => 'Rühm:',
@@ -1143,6 +1410,7 @@ kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korr
'right-bigdelete' => 'Pikkade ajalugudega lehekülgi kustutada',
'right-deleterevision' => 'Kustutada ja taastada lehekülgede teatud redaktsioone',
'right-deletedhistory' => 'Vaadata kustutatud ajalookirjeid ilma seotud tekstita',
+'right-deletedtext' => 'Vaadata kustutatud teksti ja võrrelda kustutatud redaktsioone',
'right-browsearchive' => 'Otsida kustutatud lehekülgi',
'right-undelete' => 'Taastada lehekülg',
'right-suppressrevision' => 'Üle vaadata ja taastada ülemate eest peidetud redaktsioone',
@@ -1156,6 +1424,8 @@ kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korr
'right-editprotected' => 'Muuta kaitstud lehekülgi, millel ei ole kaskaadkaitset',
'right-editinterface' => 'Muuta kasutajaliidest',
'right-editusercssjs' => 'Redigeerida teiste kasutajate CSS ja JS faile',
+'right-editusercss' => 'Redigeerida teiste kasutajate CSS faile',
+'right-edituserjs' => 'Redigeerida teiste kasutajate JS faile',
'right-rollback' => 'Tühistada otsekohe lehekülje viimase redigeerija muudatused',
'right-markbotedits' => 'Märkida muudatuse tühistamine robotimuudatusena',
'right-noratelimit' => 'Mööduda toimingumäära limiitidest',
@@ -1171,6 +1441,8 @@ kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korr
'right-userrights-interwiki' => 'Muuta teiste vikide kasutajate õigusi',
'right-siteadmin' => 'Panna lukku ja lukust lahti teha andmebaasi',
'right-reset-passwords' => 'Määrata teistele kasutajatele paroole',
+'right-versiondetail' => 'Näha tarkvaraversiooni laiendatud teavet',
+'right-sendemail' => 'Saata teistele kasutajatele e-kirju',
# User rights log
'rightslog' => 'Kasutaja õiguste logi',
@@ -1220,8 +1492,17 @@ kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korr
'recentchanges-legend' => 'Viimaste muudatuste seaded',
'recentchangestext' => 'Jälgi sellel leheküljel viimaseid muudatusi.',
'recentchanges-feed-description' => 'Jälgi vikisse tehtud viimaseid muudatusi.',
+'recentchanges-label-legend' => 'Märkide selgitused: $1.',
+'recentchanges-legend-newpage' => '$1 - uus lehekülg',
+'recentchanges-label-newpage' => 'See muudatus lõi uue lehekülje',
+'recentchanges-legend-minor' => '$1 – pisimuudatus',
+'recentchanges-label-minor' => 'See on pisiparandus',
+'recentchanges-legend-bot' => '$1 - roboti muudatus',
+'recentchanges-label-bot' => 'Selle muudatuse sooritas robot',
+'recentchanges-legend-unpatrolled' => '$1 – kontrollimata muudatus',
+'recentchanges-label-unpatrolled' => 'Seda muudatust ei ole veel kontrollitud',
'rcnote' => "Allpool on esitatud {{PLURAL:$1|'''1''' muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|päeva|'''$2''' päeva}} jooksul, seisuga $4, kell $5.",
-'rcnotefrom' => 'Allpool on esitatud muudatused alates <b>$2</b> (näidatakse kuni <b>$1</b> muudatust).',
+'rcnotefrom' => "Allpool on toodud muudatused alates: '''$2''' (näidatakse kuni '''$1''' muudatust)",
'rclistfrom' => 'Näita muudatusi alates: $1',
'rcshowhideminor' => '$1 pisiparandused',
'rcshowhidebots' => '$1 robotid',
@@ -1246,6 +1527,8 @@ kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korr
# Recent changes linked
'recentchangeslinked' => 'Seotud muudatused',
+'recentchangeslinked-feed' => 'Seotud muudatused',
+'recentchangeslinked-toolbox' => 'Seotud muudatused',
'recentchangeslinked-title' => 'Leheküljega "$1" seotud muudatused',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Antud ajavahemiku jooksul ei ole lingitud lehekülgedel muudatusi tehtud.',
@@ -1257,8 +1540,8 @@ Leheküljed, mis lähevad [[Special:Watchlist|Jälgimisloendi]] koosseisu, on es
# Upload
'upload' => 'Faili üleslaadimine',
'uploadbtn' => 'Laadi fail üles',
-'reupload' => 'Uuesti üleslaadimine',
'reuploaddesc' => 'Tagasi üleslaadimise vormi juurde.',
+'upload-tryagain' => 'Salvesta muudetud faili kirjeldus',
'uploadnologin' => 'Sisse logimata',
'uploadnologintext' => 'Kui Te soovite faile üles laadida, peate [[Special:UserLogin|sisse logima]].',
'upload_directory_missing' => 'Üleslaadimiskaust $1 puudub ja veebiserver ei saa seda luua.',
@@ -1291,6 +1574,7 @@ Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest:
'minlength1' => 'Faili nimes peab olema vähemalt üks kirjamärk.',
'illegalfilename' => 'Faili "$1" nimi sisaldab sümboleid, mis pole pealkirjades lubatud. Palun nimetage fail ümber ja proovige uuesti.',
'badfilename' => 'Pildi nimi on muudetud. Uus nimi on "$1".',
+'filetype-mime-mismatch' => 'Faililaiend ei vasta MIME tüübile.',
'filetype-badmime' => 'MIME tüübiga "$1" faile ei ole lubatud üles laadida.',
'filetype-bad-ie-mime' => 'Seda faili ei saa üles laadida, sest Internet Explorer avastaks, et selle MIME tüüp on "$1", mis on keelatud või võimalik ohtlik failitüüp.',
'filetype-unwanted-type' => "'''\".\$1\"''' on soovimatu failitüüp.
@@ -1313,7 +1597,6 @@ Sinu kokkuvõtte kuvamiseks tuleb kirjelduslehekülge eraldi redigeerida.
* Üleslaetava faili nimi: '''<tt>[[:$1]]</tt>'''
* Olemasoleva faili nimi: '''<tt>[[:$2]]</tt>'''
Palun vali teistsugune nimi.",
-'fileexists-thumb' => "<center>'''Fail on olemas'''</center>",
'fileexists-thumbnail-yes' => "See paistab olevat vähendatud suurusega pilt (''pisipilt''). [[$1|thumb]]
Palun vaata faili '''<tt>[[:$1]]</tt>'''.
Kui vaadatud fail on sama pilt algupärases suuruses, pole vaja täiendavat pisipilti üles laadida.",
@@ -1330,6 +1613,7 @@ Kui soovid siiski oma faili üles laadida, siis palun mine tagasi ja kasuta teis
Vaata selle faili kustutamise ajalugu enne jätkamist.',
'successfulupload' => 'Üleslaadimine õnnestus',
'uploadwarning' => 'Üleslaadimise hoiatus',
+'uploadwarning-text' => 'Muuda allpool olevat faili kirjeldust ning proovi uuesti.',
'savefile' => 'Salvesta fail',
'uploadedimage' => 'laadis üles faili "[[$1]]"',
'overwroteimage' => 'laadis üles faili "[[$1]]" uue versiooni',
@@ -1338,11 +1622,14 @@ Vaata selle faili kustutamise ajalugu enne jätkamist.',
'php-uploaddisabledtext' => 'Failide üleslaadmine on PHP seadetes keelatud.
Palun vaata <code>file_uploads</code> sätet.',
'uploadscripted' => 'See fail sisaldab HTML- või skriptikoodi, mida veebilehitseja võib valesti kuvada.',
-'uploadcorrupt' => 'Fail on vigane või vale laiendiga. Palun kontrolli faili ja proovi seda uuesti üles laadida.',
'uploadvirus' => 'Fail sisaldab viirust! Täpsemalt: $1',
+'upload-source' => 'Lähtefail',
'sourcefilename' => 'Lähtefail:',
+'sourceurl' => 'Allika URL:',
'destfilename' => 'Failinimi vikis:',
'upload-maxfilesize' => 'Maksimaalne failisuurus: $1',
+'upload-description' => 'Faili kirjeldus',
+'upload-options' => 'Üleslaadimise sätted',
'watchthisupload' => 'Jälgi seda lehekülge',
'filewasdeleted' => 'Selle nimega fail on lisatud ja kustutatud hiljuti.
Kontrolli $1 enne jätkamist.',
@@ -1353,15 +1640,45 @@ Selle faili kustutamislogi on toodud siinsamas:",
'filename-bad-prefix' => "Üleslaaditava faili nimi algab eesliitega '''\"\$1\"''', mis on omane digikaamera antud ebamäärastele nimedele.
Palun vali oma failile kirjeldavam nimi.",
-'upload-proto-error' => 'Vigane protokoll',
-'upload-proto-error-text' => 'Teiselt saidilt üleslaadimiseks peab URL algama <code>http://</code> või <code>ftp://</code>.',
-'upload-file-error' => 'Sisemine viga',
-'upload-file-error-text' => 'Sisemine viga ilmnes, kui üritati luua ajutist faili serveris.
+'upload-proto-error' => 'Vigane protokoll',
+'upload-proto-error-text' => 'Teiselt saidilt üleslaadimiseks peab URL algama <code>http://</code> või <code>ftp://</code>.',
+'upload-file-error' => 'Sisemine viga',
+'upload-file-error-text' => 'Sisemine viga ilmnes, kui üritati luua ajutist faili serveris.
Palun kontakteeru [[Special:ListUsers/sysop|administraatoriga]].',
-'upload-misc-error' => 'Tundmatu viga üleslaadimisel',
-'upload-misc-error-text' => 'Üleslaadimisel ilmnes tundmatu tõrge.
+'upload-misc-error' => 'Tundmatu viga üleslaadimisel',
+'upload-misc-error-text' => 'Üleslaadimisel ilmnes tundmatu tõrge.
Palun veendu, et internetiaadress on õige ja ligipääsetav ning proovi uuesti.
Kui probleem ei kao, võta ühendust [[Special:ListUsers/sysop|administraatoriga]].',
+'upload-too-many-redirects' => 'URL sisaldas liiga palju ümbersuunamisi',
+'upload-unknown-size' => 'Tundmatu suurus',
+'upload-http-error' => 'HTTP-viga: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Juurdepääs keelatud',
+'img-auth-nopathinfo' => "PATH_INFO puudub.
+Sinu veebiserver ei ole seadistatud seda teavet edastama.
+See võib olla CGI-põhine ning ei toeta img_auth'i.
+Vaata http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => 'Soovitud salvestuskoht pole üleslaadimiskataloogi all.',
+'img-auth-badtitle' => 'Väljendist "$1" ei saa sobivat pealkirja moodustada.',
+'img-auth-nologinnWL' => 'Sa pole sisselogitud ja "$1" pole valges nimekirjas.',
+'img-auth-nofile' => 'Faili "$1" pole.',
+'img-auth-isdir' => 'Sa üritad kausta "$1" juurde pääseda.
+Lubatud on ainult juurdepääs failidele.',
+'img-auth-streaming' => 'Faili "$1" voogedastus.',
+'img-auth-public' => 'img_auth.php on ette nähtud failide väljastamiseks privaatses vikis.
+See viki on seadistatud kui avalik viki.
+Turvakaalutlustel on img_auth.php kasutus keelatud.',
+'img-auth-noread' => 'Faili "$1" lugemiseks vajalik juurdepääs puudub.',
+
+# HTTP errors
+'http-invalid-url' => 'Vigane internetiaadress: $1',
+'http-invalid-scheme' => 'Aadressid, mis algavad eesliitega "$1", ei ole toetatud.',
+'http-request-error' => 'HTTP-päring nurjus tundmatu tõrke tõttu.',
+'http-read-error' => 'HTTP-lugemistõrge.',
+'http-timed-out' => 'HTTP-päring aegus.',
+'http-host-unreachable' => 'Internetiaadress pole kättesaadav.',
+'http-bad-status' => 'HTTP-päringu ajal ilmnes tõrge: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Internetiaadress pole kättesaadav',
@@ -1373,6 +1690,7 @@ Palun kontrolli kas võrgukoht on ikka üleval, oota natuke ja proovi uuesti.
Samuti võid proovida siis, kui võrgukoht on vähem hõivatud.',
'license' => 'Litsents:',
+'license-header' => 'Litsents',
'nolicense' => 'pole valitud',
'license-nopreview' => '(Eelvaade ei ole saadaval)',
'upload_source_url' => '(avalikult ligipääsetav URL)',
@@ -1393,6 +1711,7 @@ Tulba päisel klõpsamine muudab sortimist.',
'listfiles_count' => 'Versioonid',
# File description page
+'file-anchor-link' => 'Pilt',
'filehist' => 'Faili ajalugu',
'filehist-help' => 'Klõpsa kuupäeva ja kellaaega, et näha sel ajahetkel kasutusel olnud failiversiooni.',
'filehist-deleteall' => 'kustuta kõik',
@@ -1401,12 +1720,13 @@ Tulba päisel klõpsamine muudab sortimist.',
'filehist-current' => 'viimane',
'filehist-datetime' => 'Kuupäev/kellaaeg',
'filehist-thumb' => 'Pisipilt',
-'filehist-thumbtext' => 'Pöialpilt $1 versioonile',
+'filehist-thumbtext' => 'Pisipilt $1 versioonile',
'filehist-nothumb' => 'Pisipilti ei ole',
'filehist-user' => 'Kasutaja',
'filehist-dimensions' => 'Mõõtmed',
'filehist-filesize' => 'Faili suurus',
'filehist-comment' => 'Kommentaar',
+'filehist-missing' => 'Fail puudub',
'imagelinks' => 'Viited failile',
'linkstoimage' => 'Sellele pildile {{PLURAL:$1|viitab järgmine lehekülg|viitavad järgmised leheküljed}}:',
'linkstoimage-more' => 'Sellele failile viitab enam kui $1 {{PLURAL:$1|lehekülg|lehekülge}}.
@@ -1416,14 +1736,14 @@ Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esime
'morelinkstoimage' => 'Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.',
'redirectstofile' => 'Selle faili juurde {{PLURAL:$1|suunab järgnev fail|suunavad järgnevad $1 faili}}:',
'duplicatesoffile' => '{{PLURAL:$1|Järgnev fail|Järgnevad $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
-'sharedupload' => 'See fail pärineb allikast $1 ning võib olla kasutusel ka teistes projektides.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'Sealne $1 on toodud allpool.',
-'shareduploadwiki-linktext' => 'faili kirjelduse lehekülg',
-'noimage' => 'Sellise nimega faili pole, võite selle $1.',
-'noimage-linktext' => 'üles laadida',
+'sharedupload' => 'See fail pärineb allikast $1 ning võib olla kasutusel ka teistes projektides.',
+'sharedupload-desc-there' => 'See fail pärineb kesksest failivaramust $1. Palun vaata [$2 faili kirjelduse lehekülge], et saada rohkem teavet.',
+'sharedupload-desc-here' => 'See on jagatud fail allikast $1 ja seda saab kasutada ka teistes projektides. Faili sealne [$2 kirjeldus] on kuvatud allpool.',
+'filepage-nofile' => 'Sellenimelist faili ei ole.',
+'filepage-nofile-link' => 'Sellenimelist faili ei ole, kuid sa saad selle [$1 üles laadida].',
'uploadnewversion-linktext' => 'Laadi üles selle faili uus versioon',
-'shared-repo-from' => 'varamust $1', # $1 is the repository name
-'shared-repo' => 'jagatud varamu', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'varamust $1',
+'shared-repo' => 'jagatud varamu',
# File reversion
'filerevert' => 'Taasta $1',
@@ -1452,6 +1772,7 @@ Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esime
** Autoriõiguste rikkumine
** Duplikaat',
'filedelete-edit-reasonlist' => 'Redigeeri kustutamise põhjuseid',
+'filedelete-maintenance' => 'Failide kustutamine ja taastamine on hoolduse ajaks keelatud.',
# MIME search
'mimesearch' => 'MIME otsing',
@@ -1472,7 +1793,8 @@ Sisesta kujul tüüp/alamtüüp, näiteks <tt>image/jpeg</tt>.',
'unusedtemplateswlh' => 'teised lingid',
# Random page
-'randompage' => 'Juhuslik artikkel',
+'randompage' => 'Juhuslik artikkel',
+'randompage-nopages' => '{{PLURAL:$2|Järgmises nimeruumis|Järgmistes nimeruumides}} ei ole ühtegi lehekülge: $1.',
# Random redirect
'randomredirect' => 'Juhuslik ümbersuunamine',
@@ -1484,6 +1806,7 @@ Sisesta kujul tüüp/alamtüüp, näiteks <tt>image/jpeg</tt>.',
'statistics-header-edits' => 'Redigeerimise arvandmed',
'statistics-header-views' => 'Vaatamise statistika',
'statistics-header-users' => 'Kasutajate arvandmed',
+'statistics-header-hooks' => 'Muud arvandmed',
'statistics-articles' => 'Sisulehekülgi',
'statistics-pages' => 'Lehekülgi',
'statistics-pages-desc' => 'Kõik lehed vikis, kaasa arvatud arutelulehed, ümbersuunamised jne',
@@ -1513,8 +1836,8 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise
'brokenredirects' => 'Vigased ümbersuunamised',
'brokenredirectstext' => 'Järgmised leheküljed on ümber suunatud olematutele lehekülgedele:',
-'brokenredirects-edit' => '(redigeeri)',
-'brokenredirects-delete' => '(kustuta)',
+'brokenredirects-edit' => 'redigeeri',
+'brokenredirects-delete' => 'kustuta',
'withoutinterwiki' => 'Keelelinkideta leheküljed',
'withoutinterwiki-summary' => 'Loetletud leheküljed ei viita erikeelsetele versioonidele.',
@@ -1622,16 +1945,17 @@ See võib sisaldada üht või enamat märki, mida ei saa pealkirjades kasutada.'
# Special:Categories
'categories' => 'Kategooriad',
-'categoriespagetext' => 'Vikis on järgmised kategooriad.
-Siin ei näidata [[Special:UnusedCategories|Unused categories]].
-Vaata ka [[Special:WantedCategories|wanted categories]].',
+'categoriespagetext' => 'Vikis on {{PLURAL:$1|järgmine kategooria|järgmised kategooriad}}.
+Siin ei näidata [[Special:UnusedCategories|kasutamata kategooriaid]].
+Vaata ka [[Special:WantedCategories|puuduvaid kategooriaid]].',
'categoriesfrom' => 'Näita kategooriaid alates:',
'special-categories-sort-count' => 'järjesta hulga järgi',
'special-categories-sort-abc' => 'järjesta tähestikuliselt',
# Special:DeletedContributions
-'deletedcontributions' => 'Kustutatud kaastöö',
-'deletedcontributions-title' => 'Kustutatud muudatused',
+'deletedcontributions' => 'Kustutatud kaastöö',
+'deletedcontributions-title' => 'Kustutatud muudatused',
+'sp-deletedcontributions-contribs' => 'kaastöö',
# Special:LinkSearch
'linksearch' => 'Välislingid',
@@ -1648,6 +1972,16 @@ Toetatud protokollid: <tt>$1</tt>',
'listusersfrom' => 'Näita kasutajaid alustades:',
'listusers-submit' => 'Näita',
'listusers-noresult' => 'Kasutajat ei leitud.',
+'listusers-blocked' => '(blokeeritud)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktiivsete kasutajate nimekiri',
+'activeusers-intro' => 'See on loetelu kasutajatest, kes on viimase $1 {{PLURAL:$1|päev|päeva}} jooksul midagi teinud.',
+'activeusers-count' => '$1 {{PLURAL:$1|muudatus|muudatust}} viimase {{PLURAL:$3|päeva|$3 päeva}} jooksul',
+'activeusers-from' => 'Näita kasutajaid alates:',
+'activeusers-hidebots' => 'Peida robotid',
+'activeusers-hidesysops' => 'Peida administraatorid',
+'activeusers-noresult' => 'Kasutajaid ei leidunud.',
# Special:Log/newusers
'newuserlogpage' => 'Kasutaja loomise logi',
@@ -1658,18 +1992,23 @@ Toetatud protokollid: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Konto loodud automaatselt',
# Special:ListGroupRights
-'listgrouprights' => 'Kasutajarühma õigused',
-'listgrouprights-summary' => 'Siin on loetletud selle viki kasutajarühmad ja rühmaga seotud õigused.
+'listgrouprights' => 'Kasutajarühma õigused',
+'listgrouprights-summary' => 'Siin on loetletud selle viki kasutajarühmad ja rühmaga seotud õigused.
Üksikute õiguste kohta võib olla [[{{MediaWiki:Listgrouprights-helppage}}|täiendavat teavet]].',
-'listgrouprights-group' => 'Rühm',
-'listgrouprights-rights' => 'Õigused',
-'listgrouprights-helppage' => 'Help:Rühma õigused',
-'listgrouprights-members' => '(liikmete loend)',
-'listgrouprights-right-display' => '$1 ($2)',
-'listgrouprights-addgroup' => 'Lisada liikmeid {{PLURAL:$2|rühma|rühmadesse}}: $1',
-'listgrouprights-removegroup' => 'Eemaldada liikmeid {{PLURAL:$2|rühmast|rühmadest}}: $1',
-'listgrouprights-addgroup-all' => 'Kõigisse rühmadesse liikmeid lisada',
-'listgrouprights-removegroup-all' => 'Kõigist rühmadest liikmeid eemaldada',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Väljaantud õigus</span>
+* <span class="listgrouprights-revoked">Äravõetud õigus</span>',
+'listgrouprights-group' => 'Rühm',
+'listgrouprights-rights' => 'Õigused',
+'listgrouprights-helppage' => 'Help:Rühma õigused',
+'listgrouprights-members' => '(liikmete loend)',
+'listgrouprights-addgroup' => 'Lisada liikmeid {{PLURAL:$2|rühma|rühmadesse}}: $1',
+'listgrouprights-removegroup' => 'Eemaldada liikmeid {{PLURAL:$2|rühmast|rühmadest}}: $1',
+'listgrouprights-addgroup-all' => 'Kõigisse rühmadesse liikmeid lisada',
+'listgrouprights-removegroup-all' => 'Kõigist rühmadest liikmeid eemaldada',
+'listgrouprights-addgroup-self' => 'Lisada enda konto {{PLURAL:$2|rühma|rühmadesse}}: $1',
+'listgrouprights-removegroup-self' => 'Eemaldada enda konto {{PLURAL:$2|rühmast|rühmadest}}: $1',
+'listgrouprights-addgroup-self-all' => 'Oma konto kõigisse rühmadesse lisada',
+'listgrouprights-removegroup-self-all' => 'Eemaldada ennast kõigist rühmadest',
# E-mail user
'mailnologin' => 'Saatja aadress puudub',
@@ -1743,6 +2082,31 @@ Kui tahad seda lehte hiljem jälgimisloendist eemaldada, klõpsa päisenupule \"
'enotif_lastvisited' => 'Kõigi sinu viimase külastuse järel tehtud muudatuste nägemiseks vaata: $1.',
'enotif_lastdiff' => 'Muudatus on leheküljel $1.',
'enotif_anon_editor' => 'anonüümne kasutaja $1',
+'enotif_body' => 'Lugupeetud $WATCHINGUSERNAME
+
+{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja $PAGEEDITOR on kuupäeval $PAGEEDITDATE $CHANGEDORCREATED $PAGETITLE. Lehe praegune redaktsioon on asukohas $PAGETITLE_URL.
+
+$NEWPAGE
+
+Redigeerija resümee: $PAGESUMMARY $PAGEMINOREDIT
+
+Võta redigeerijaga ühendust:
+e-post: $PAGEEDITOR_EMAIL
+viki: $PAGEEDITOR_WIKI
+
+Seni kuni sa seda lehte ei külasta, selle lehe uute muudatuste kohta sulle uusi teavitus-e-kirju ei saadeta.
+
+Abivalmilt
+{{GRAMMAR:genitive|{{SITENAME}}}} teavitussüsteem
+
+--
+Oma jälgimisloendi sätete muutmiseks mine leheküljele
+{{fullurl:Special:Watchlist/edit}}.
+
+Lehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.
+
+Tagasiside ja abi:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Kustuta lehekülg',
@@ -1753,9 +2117,10 @@ Kui tahad seda lehte hiljem jälgimisloendist eemaldada, klõpsa päisenupule \"
'exblank' => 'lehekülg oli tühi',
'delete-confirm' => 'Lehekülje "$1" kustutamine',
'delete-legend' => 'Kustutamine',
-'historywarning' => 'Hoiatus: leheküljel, mida tahate kustutada, on ajalugu:&nbsp;',
+'historywarning' => "'''Hoiatus:''' Kustutataval leheküljel on ligikaudu {{PLURAL:$1|ühe redaktsiooniga|$1 redaktsiooniga}} ajalugu:",
'confirmdeletetext' => 'Sa oled andmebaasist jäädavalt kustutamas lehte või pilti koos kogu tema ajalooga. Palun kinnita, et sa tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et sinu tegevus on kooskõlas siinse [[{{MediaWiki:Policy-url}}|sisekorraga]].',
'actioncomplete' => 'Toiming sooritatud',
+'actionfailed' => 'Tegevus ebaõnnestus',
'deletedtext' => '"<nowiki>$1</nowiki>" on kustutatud. Kustutatud leheküljed on ära toodud eraldi loendis ($2).',
'deletedarticle' => 'kustutas lehekülje "[[$1]]"',
'suppressedarticle' => 'varjas lehekülje "[[$1]]"',
@@ -1778,19 +2143,20 @@ Selle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITEN
Ettevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.',
# Rollback
-'rollback' => 'Tühista muudatused',
-'rollback_short' => 'Tühista',
-'rollbacklink' => 'tühista',
-'rollbackfailed' => 'Muudatuste tühistamine ebaõnnestus',
-'cantrollback' => 'Ei saa muudatusi eemaldada, sest viimane kaastööline on artikli ainus autor.',
-'alreadyrolled' => 'Muudatust, mille tegi lehele [[:$1]] kasutaja [[User:$2|$2]] ([[User talk:$2|arutelu]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), ei saa tühistada, sest keegi teine on seda lehte vahepeal muutnud.
+'rollback' => 'Tühista muudatused',
+'rollback_short' => 'Tühista',
+'rollbacklink' => 'tühista',
+'rollbackfailed' => 'Muudatuste tühistamine ebaõnnestus',
+'cantrollback' => 'Ei saa muudatusi eemaldada, sest viimane kaastööline on artikli ainus autor.',
+'alreadyrolled' => 'Muudatust, mille tegi lehele [[:$1]] kasutaja [[User:$2|$2]] ([[User talk:$2|arutelu]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), ei saa tühistada, sest keegi teine on seda lehte vahepeal muutnud.
Lehte muutis viimasena [[User:$3|$3]] ([[User talk:$3|arutelu]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redaktsiooni resümee oli: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Tühistati kasutaja [[Special:Contributions/$2|$2]] ([[User talk:$2|arutelu]]) tehtud muudatused ning pöörduti tagasi viimasele muudatusele, mille tegi [[User:$1|$1]].', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Tühistati $1 muudatus;
+'editcomment' => "Redaktsiooni resümee oli: \"''\$1''\".",
+'revertpage' => 'Tühistati kasutaja [[Special:Contributions/$2|$2]] ([[User talk:$2|arutelu]]) tehtud muudatused ning pöörduti tagasi viimasele muudatusele, mille tegi [[User:$1|$1]].',
+'revertpage-nouser' => 'Tühistati eemaldatud nimega kasutaja tehtud muudatused ja pöörduti tagasi viimasele muudatusele, mille tegi [[User:$1|$1]].',
+'rollback-success' => 'Tühistati $1 muudatus;
pöörduti tagasi viimasele muudatusele, mille tegi $2.',
-'sessionfailure' => 'Sinu sisselogimisseansiga näib probleem olevat.
+'sessionfailure' => 'Sinu sisselogimisseansiga näib probleem olevat.
See toiming on seansiärandamise vastase ettevaatusabinõuna tühistatud.
Mine tagasi eelmisele leheküljele ja taaslaadi see, seejärel proovi uuesti.',
@@ -1808,7 +2174,7 @@ Mine tagasi eelmisele leheküljele ja taaslaadi see, seejärel proovi uuesti.',
'protectexpiry' => 'Aegub:',
'protect_expiry_invalid' => 'Sobimatu aegumise tähtaeg.',
'protect_expiry_old' => 'Aegumise tähtaeg on minevikus.',
-'protect-unchain' => 'Võimalda lehekülje teisaldamist.',
+'protect-unchain-permissions' => 'Ava edasised kaitsmissuvandid',
'protect-text' => "Siin võite vaadata ja muuta lehekülje '''<nowiki>$1</nowiki>''' kaitsesätteid.",
'protect-locked-blocked' => "Blokeerituna ei saa muuta kaitstuse taset.
Allpool on toodud lehekülje '''$1''' hetkel kehtivad seaded:",
@@ -1838,7 +2204,7 @@ Sa saad muuta selle lehekülje kaitse staatust, kuid see ei mõjuta kaskaadkaits
** Counter-productive edit warring
** Kõrge liiklusega lehekülg',
'protect-edit-reasonlist' => 'Muudatuste eest kaitsmise põhjused',
-'protect-expiry-options' => '1 tund:1 hour,1 päev:1 day,1 nädal:1 week,2 nädalat: 2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 tund:1 hour,1 päev:1 day,1 nädal:1 week,2 nädalat: 2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite',
'restriction-type' => 'Lubatud:',
'restriction-level' => 'Kaitsmise tase:',
'minimum-size' => 'Min suurus',
@@ -1880,6 +2246,7 @@ Link võib olla kõlbmatu või redaktsioon võib olla taastatud või arhiivist e
'undelete-nodiff' => 'Varasemat redaktsiooni ei leidunud.',
'undeletebtn' => 'Taasta',
'undeletelink' => 'vaata/taasta',
+'undeleteviewlink' => 'vaata',
'undeletereset' => 'Tühjenda',
'undeleteinvert' => 'Pööra valim teistpidi',
'undeletecomment' => 'Põhjus:',
@@ -1918,19 +2285,23 @@ $1',
'contributions-title' => 'Kasutaja $1 kaastöö',
'mycontris' => 'Kaastöö',
'contribsub2' => 'Kasutaja $1 ($2) jaoks',
-'nocontribs' => 'Antud kriteeriumitele vastavaid muudatusi ei leitud.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Antud kriteeriumitele vastavaid muudatusi ei leitud.',
'uctop' => ' (uusim)',
'month' => 'Alates kuust (ja varasemad):',
'year' => 'Alates aastast (ja varasemad):',
-'sp-contributions-newbies' => 'Näita ainult uute kasutajate kaastööd.',
-'sp-contributions-newbies-sub' => 'Uute kontode kaastöö',
-'sp-contributions-newbies-title' => 'Uute kasutajate kaastöö',
-'sp-contributions-blocklog' => 'blokeerimised',
-'sp-contributions-logs' => 'logid',
-'sp-contributions-search' => 'Kaastöö otsimine',
-'sp-contributions-username' => 'IP-aadress või kasutajanimi:',
-'sp-contributions-submit' => 'Otsi',
+'sp-contributions-newbies' => 'Näita ainult uute kasutajate kaastööd.',
+'sp-contributions-newbies-sub' => 'Uute kontode kaastöö',
+'sp-contributions-newbies-title' => 'Uute kasutajate kaastöö',
+'sp-contributions-blocklog' => 'blokeerimised',
+'sp-contributions-deleted' => 'kustutatud kaastöö',
+'sp-contributions-logs' => 'logid',
+'sp-contributions-talk' => 'arutelu',
+'sp-contributions-userrights' => 'kasutaja õiguste muutmine',
+'sp-contributions-blocked-notice' => 'See kasutaja on parajasti blokeeritud. Allpool on toodud kõige hilisem blokeerimislogi sissekanne:',
+'sp-contributions-search' => 'Kaastöö otsimine',
+'sp-contributions-username' => 'IP-aadress või kasutajanimi:',
+'sp-contributions-submit' => 'Otsi',
# What links here
'whatlinkshere' => 'Lingid siia',
@@ -1953,6 +2324,7 @@ $1',
# Block/unblock
'blockip' => 'Kasutaja blokeerimine',
+'blockip-title' => 'Kasutaja blokeerimine',
'blockip-legend' => 'Kasutaja blokeerimine',
'blockiptext' => 'See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.
Seda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].
@@ -1975,7 +2347,7 @@ Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
'ipbenableautoblock' => 'Blokeeri automaatselt viimane IP-aadress, mida see kasutaja kasutas, ja ka järgnevad, mille alt ta võib proovida kaastööd teha',
'ipbsubmit' => 'Blokeeri see aadress',
'ipbother' => 'Muu tähtaeg:',
-'ipboptions' => '2 tundi:2 hours,1 päev:1 day,3 päeva:3 days,1 nädal:1 week,2 nädalat:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 tundi:2 hours,1 päev:1 day,3 päeva:3 days,1 nädal:1 week,2 nädalat:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite',
'ipbotheroption' => 'muu tähtaeg',
'ipbotherreason' => 'Muu või täiendav põhjus:',
'ipbhidename' => 'Peida kasutajatunnus muudatustest ja loenditest',
@@ -2004,9 +2376,11 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'ipblocklist-sh-tempblocks' => '$1 ajutised blokeeringud',
'ipblocklist-sh-addressblocks' => '$1 IP-aadressid',
'ipblocklist-submit' => 'Otsi',
+'ipblocklist-localblock' => 'Kohalikud blokeeringud',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Muu blokeering|Muud blokeeringud}}',
'blocklistline' => '$1, $2 blokeeris kasutaja $3 ($4)',
'infiniteblock' => 'igavene',
-'expiringblock' => 'aegub $1',
+'expiringblock' => 'aegub $1 $2',
'anononlyblock' => 'ainult nimetuna',
'noautoblockblock' => 'IP-aadressi ei blokita automaatselt',
'createaccountblock' => 'kontode loomine keelatud',
@@ -2020,7 +2394,8 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'contribslink' => 'kaastöö',
'autoblocker' => 'Automaatselt blokeeritud, kuna [[User:$1|$1]] on hiljuti teie IP-aadressi kasutanud. Põhjus: $2',
'blocklogpage' => 'Blokeerimislogi',
-'blocklog-fulllog' => 'Täielik blokeerimislogi',
+'blocklog-showlog' => 'See kasutaja on varem blokeeritud. Allpool on toodud blokeerimislogi sissekanne:',
+'blocklog-showsuppresslog' => 'See kasutaja on varem blokeeritud ja peidetud. Allpool on toodud varjamislogi:',
'blocklogentry' => 'blokeeris kasutaja [[$1]]. Blokeeringu aegumistähtaeg on $2 $3',
'reblock-logentry' => 'muutis kasutaja või IP-aadressi [[$1]] blokeeringu sätteid. Blokeering aegumistähtaeg: $2. Põhjus: $3',
'blocklogtext' => 'See on kasutajate blokeerimiste ja blokeeringute eemaldamiste nimekiri. Automaatselt blokeeritud IP aadresse siin ei näidata. Hetkel aktiivsete blokeeringute ja redigeerimiskeeldude nimekirja vaata [[Special:IPBlockList|IP blokeeringute nimekirja]] leheküljelt.',
@@ -2039,6 +2414,7 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'ipb-needreblock' => '==Juba blokeeritud==
$1 on juba blokeeritud.
Kas soovid muuta blokeeringu sätteid?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Teine blokeering|Teised blokeeringud}}',
'ipb_cant_unblock' => 'Tõrge: Blokeerimis-ID $1 pole leitav.
Blokeering võib juba eemaldatud olla.',
'ipb_blocked_as_range' => 'Tõrge: IP-aadressi $1 pole eraldi blokeeritud ja blokeeringut ei saa eemaldada.
@@ -2053,6 +2429,7 @@ See kuulub aga blokeeritud IP-vahemikku $2, mille blokeeringut saab eemaldada.',
'sorbs_create_account_reason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.
Sa ei saa kasutajakontot luua.',
'cant-block-while-blocked' => 'Teisi kasutajaid ei saa blokeerida, kui oled ise blokeeritud.',
+'cant-see-hidden-user' => 'Kasutaja, keda blokeerida üritad, on juba blokeeritud ning peidetud. Kuna sul pole õigust blokeerida kasutajanimesid, peites need avalikkuse eest, ei saa sa selle kasutaja blokeeringut vaadata ega muuta.',
# Developer tools
'lockdb' => 'Lukusta andmebaas',
@@ -2095,6 +2472,7 @@ enne muudatuse tegemist mõelge palun järele, mis võib olla selle tagajärjeks
Neil juhtudel teisaldage arutelulehekülg soovi korral eraldi või ühendage ta omal käel uue aruteluleheküljega.",
'movearticle' => 'Teisalda lehekülg',
+'moveuserpage-warning' => "'''Hoiatus:''' Oled teisaldamas kasutajalehekülge. Pane tähele, et teisaldatakse ainult lehekülg ja kasutajat '''ei''' nimetata ümber.",
'movenologin' => 'Te ei ole sisse loginud',
'movenologintext' => 'Et lehekülge teisaldada, peate registreeruma
kasutajaks ja [[Special:UserLogin|sisse logima]]',
@@ -2106,7 +2484,7 @@ kasutajaks ja [[Special:UserLogin|sisse logima]]',
'move-watch' => 'Jälgi seda lehekülge',
'movepagebtn' => 'Teisalda lehekülg',
'pagemovedsub' => 'Lehekülg on teisaldatud',
-'movepage-moved' => '\'\'\'"$1" teisaldatud pealkirja "$2" alla\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" teisaldatud pealkirja "$2" alla\'\'\'',
'movepage-moved-redirect' => 'Ümbersuunamisleht loodud.',
'movepage-moved-noredirect' => 'Ümbersuunamist ei loodud.',
'articleexists' => 'Selle nimega artikkel on juba olemas või pole valitud nimi lubatav. Palun valige uus nimi.',
@@ -2147,6 +2525,14 @@ Kas kustutad selle, et luua võimalus teisaldamiseks?',
'imageinvalidfilename' => 'Sihtmärgi nimi on vigane',
'fix-double-redirects' => 'Värskenda kõik siia viitavad ümbersuunamislehed uuele pealkirjale',
'move-leave-redirect' => 'Jäta maha ümbersuunamisleht',
+'protectedpagemovewarning' => "'''Hoiatus:''' See lehekülg on nii lukustatud, et ainult administraatori õigustega kasutajad saavad seda teisaldada.
+Allpool on toodud uusim logisissekanne:",
+'semiprotectedpagemovewarning' => "'''Pane tähele:''' See lehekülg on lukustatud nii et ainult registreeritud kasutajad saavad seda teisaldada.
+Allpool on toodud uusim logisissekanne:",
+'move-over-sharedrepo' => '== Fail on olemas ==
+[[:$1]] on olemas jagatud failivaramus. Faili teisaldamisel selle nime alla varjatakse jagatud failivarmus olev samanimeline fail.',
+'file-exists-sharedrepo' => 'Valitud failinimi on juba kasutusel jagatud failivaramus.
+Palun kasuta mõnda teist nime.',
# Export
'export' => 'Lehekülgede eksport',
@@ -2167,15 +2553,21 @@ Viimasel juhul võid sa näiteks "[[{{MediaWiki:Mainpage}}]]" lehekülje, jaoks
'export-templates' => 'Kaasa mallid',
# Namespace 8 related
-'allmessages' => 'Kõik süsteemi sõnumid',
-'allmessagesname' => 'Nimi',
-'allmessagesdefault' => 'Vaikimisi tekst',
-'allmessagescurrent' => 'Praegune tekst',
-'allmessagestext' => 'See on loend kõikidest kättesaadavatest süsteemi sõnumitest MediaWiki: nimeruumis.
+'allmessages' => 'Kõik süsteemi sõnumid',
+'allmessagesname' => 'Nimi',
+'allmessagesdefault' => 'Vaikimisi tekst',
+'allmessagescurrent' => 'Praegune tekst',
+'allmessagestext' => 'See on loend kõikidest kättesaadavatest süsteemi sõnumitest MediaWiki: nimeruumis.
Kui soovid MediaWiki tarkvara tõlkimises osaleda siis vaata lehti [http://www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [http://translatewiki.net translatewiki.net].',
-'allmessagesnotsupportedDB' => "Seda lehekülge ei saa kasutada, sest '''\$wgUseDatabaseMessages''' ei tööta.",
-'allmessagesfilter' => 'Sõnuminimefilter:',
-'allmessagesmodified' => 'Näita ainult muudetuid',
+'allmessagesnotsupportedDB' => "Seda lehekülge ei saa kasutada, sest '''\$wgUseDatabaseMessages''' ei tööta.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Muutmisoleku filter:',
+'allmessages-filter-unmodified' => 'Muutmata',
+'allmessages-filter-all' => 'Kõik',
+'allmessages-filter-modified' => 'Muudetud',
+'allmessages-prefix' => 'Eesliitefilter:',
+'allmessages-language' => 'Keel:',
+'allmessages-filter-submit' => 'Mine',
# Thumbnails
'thumbnail-more' => 'Suurenda',
@@ -2185,6 +2577,8 @@ Kui soovid MediaWiki tarkvara tõlkimises osaleda siis vaata lehti [http://www.m
'djvu_no_xml' => 'DjVu failist XML-i lugemine ebaõnnestus.',
'thumbnail_invalid_params' => 'Vigased pisipildi parameetrid',
'thumbnail_dest_directory' => 'Sihtkataloogi loomine ebaõnnestus.',
+'thumbnail_image-type' => 'Selline pildi tüüp ei ole toetatav',
+'thumbnail_image-missing' => 'Fail näib puuduvat: $1',
# Special:Import
'import' => 'Lehekülgede import',
@@ -2252,6 +2646,7 @@ Palun ürita uuesti.',
'tooltip-ca-viewsource' => 'See lehekülg on kaitstud. Te võite kuvada selle koodi.',
'tooltip-ca-history' => 'Selle lehekülje varasemad versioonid.',
'tooltip-ca-protect' => 'Kaitse seda lehekülge',
+'tooltip-ca-unprotect' => 'Eemalda lehekülje kaitse',
'tooltip-ca-delete' => 'Kustuta see lehekülg',
'tooltip-ca-undelete' => 'Taasta enne lehekülje kustutamist tehtud muudatused',
'tooltip-ca-move' => 'Teisalda see lehekülg teise nime alla.',
@@ -2262,6 +2657,7 @@ Palun ürita uuesti.',
'tooltip-search-fulltext' => 'Otsitakse teksti sisaldavaid artikleid',
'tooltip-p-logo' => 'Esileht',
'tooltip-n-mainpage' => 'Mine esilehele',
+'tooltip-n-mainpage-description' => 'Mine esilehele',
'tooltip-n-portal' => 'Projekti kohta, mida te saate teha, kuidas leida informatsiooni jne',
'tooltip-n-currentevents' => 'Leia informatsiooni sündmuste kohta maailmas',
'tooltip-n-recentchanges' => 'Vikis tehtud viimaste muudatuste loend',
@@ -2313,10 +2709,12 @@ Samuti võimaldab see resümee reale põhjenduse lisamist.',
# Attribution
'anonymous' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonüümne kasutaja|anonüümsed kasutajad}}',
'siteuser' => 'viki kasutaja $1',
-'lastmodifiedatby' => 'Viimati muutis lehekülge $3 $2 kell $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{GRAMMAR:genitive|{{SITENAME}}}} anonüümne kasutaja $1',
+'lastmodifiedatby' => 'Viimati muutis lehekülge $3 $2 kell $1.',
'othercontribs' => 'Põhineb kasutajate $1 tööl.',
'others' => 'teiste',
'siteusers' => 'võrgukoha {{SITENAME}} {{PLURAL:$2|kasutaja|kasutajate}} $1',
+'anonusers' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|anonüümne kasutaja|anonüümsed kasutajad}} $1',
'creditspage' => 'Lehekülje toimetajate loend',
'nocredits' => 'Selle lehekülje toimetajate loend ei ole kättesaadav.',
@@ -2346,6 +2744,7 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
'skinname-chick' => 'Tibu',
'skinname-simple' => 'Lihtne',
'skinname-modern' => 'Uudne',
+'skinname-vector' => 'Vektor',
# Math options
'mw_math_png' => 'Alati PNG',
@@ -2355,11 +2754,20 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
'mw_math_modern' => 'Soovitatav moodsate brauserite puhul',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Arusaamatu süntaks',
+'math_unknown_error' => 'Tundmatu viga',
+'math_unknown_function' => 'Tundmatu funktsioon',
+'math_lexing_error' => 'Väljalugemisviga',
+'math_syntax_error' => 'Süntaksiviga',
+'math_image_error' => "PNG konverteerimine ebaõnnestus;
+kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korrektsust.",
+
# Patrolling
'markaspatrolleddiff' => 'Märgi kui kontrollitud',
'markaspatrolledtext' => 'Märgi see leht kontrollituks',
'markedaspatrolled' => 'Kontrollituks märgitud',
-'markedaspatrolledtext' => 'Valitud redaktsioon on märgitud kontrollituks.',
+'markedaspatrolledtext' => 'Valitud redaktsioon leheküljel [[:$1]] on kontrollituks märgitud.',
'rcpatroldisabled' => 'Viimaste muudatuste kontroll ei toimi',
'rcpatroldisabledtext' => 'Viimaste muudatuste kontrolli tunnus ei toimi hetkel.',
'markedaspatrollederror' => 'Ei saa kontrollituks märkida',
@@ -2389,13 +2797,10 @@ $1',
'previousdiff' => '← Eelmised erinevused',
'nextdiff' => 'Järgmised erinevused →',
-# Visual comparison
-'visual-comparison' => 'Vaateline võrdlus',
-
# Media information
'mediawarning' => "'''Hoiatus''': See failitüüp võib sisaldada pahatahtlikku koodi.
Selle avamine võib su arvutit kahjustada.",
-'imagemaxsize' => 'Maksimaalne faili suurus kirjelduslehekülgedel:',
+'imagemaxsize' => "Pildi suuruse ülemmäär:<br />''(faili kirjeldusleheküljel)''",
'thumbsize' => 'Pisipildi suurus:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|lehekülg|lehekülge}}',
'file-info' => '(faili suurus: $1, MIME tüüp: $2)',
@@ -2404,6 +2809,7 @@ Selle avamine võib su arvutit kahjustada.",
'svg-long-desc' => '(SVG fail, algsuurus $1 × $2 pikslit, faili suurus: $3)',
'show-big-image' => 'Originaalsuurus',
'show-big-image-thumb' => '<small>Selle eelvaate suurus on: $1 × $2 pikselit</small>',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kaader|kaadrit}}',
# Special:NewFiles
'newimages' => 'Uute meediafailide galerii',
@@ -2437,7 +2843,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Laius',
@@ -2534,14 +2940,14 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-unknowndate' => 'Kuupäev teadmata',
-'exif-orientation-1' => 'Normaalne', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Pööratud pikali', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Pööratud 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Pööratud püsti', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Pööratud 90° vastupäeva ja püstselt ümberpööratud', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Pööratud 90° päripäeva', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Pööratud 90° päripäeva ja püstselt ümberpööratud', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Pööratud 90° vastupäeva', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaalne',
+'exif-orientation-2' => 'Pööratud pikali',
+'exif-orientation-3' => 'Pööratud 180°',
+'exif-orientation-4' => 'Pööratud püsti',
+'exif-orientation-5' => 'Pööratud 90° vastupäeva ja püstselt ümberpööratud',
+'exif-orientation-6' => 'Pööratud 90° päripäeva',
+'exif-orientation-7' => 'Pööratud 90° päripäeva ja püstselt ümberpööratud',
+'exif-orientation-8' => 'Pööratud 90° vastupäeva',
'exif-componentsconfiguration-0' => 'ei ole',
@@ -2647,7 +3053,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-gpsmeasuremode-2' => '2-mõõtmeline ulatus',
'exif-gpsmeasuremode-3' => '3-mõõtmeline ulatus',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilomeetrit tunnis',
'exif-gpsspeed-m' => 'Miili tunnis',
'exif-gpsspeed-n' => 'Sõlme',
@@ -2666,6 +3072,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'watchlistall2' => 'Näita kõiki',
'namespacesall' => 'kõik',
'monthsall' => 'kõik',
+'limitall' => 'iga',
# E-mail address confirmation
'confirmemail' => 'Kinnita e-posti aadress',
@@ -2685,15 +3092,17 @@ Veateade e-kirja saatmisel: $1',
'confirmemail_loggedin' => 'Sinu e-posti aadress on nüüd kinnitatud.',
'confirmemail_error' => 'Viga kinnituskoodi salvestamisel.',
'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} e-posti aadressi kinnitamine',
-'confirmemail_body' => 'Keegi, ilmselt sa ise, registreeris IP aadressilt $1 saidil {{SITENAME}} kasutajakonto "$2".
+'confirmemail_body' => 'Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2".
-Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning aktiveerimaks e-posti teenuseid, ava oma brauseris järgnev link:
+Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgnev link:
$3
-Kui see *ei* ole sinu loodud konto, siis ava järgnev link $5 kinnituse tühistamiseks.
+Kui see *pole* sinu loodud konto, ava järgnev link kinnituse tühistamiseks:
-Kinnituskood aegub $4.',
+$5
+
+Kinnituskood aegub kuupäeval $4.',
'confirmemail_invalidated' => 'E-posti aadressi kinnitamine tühistati',
'invalidateemail' => 'E-posti aadressi kinnituse tühistamine',
@@ -2779,7 +3188,7 @@ Sa võid [[Special:Watchlist/edit|kasutada ka harilikku tekstiredaktorit]].',
'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Järjestamisvõti "$2" tühistab eespool oleva järjestamisvõtme "$1".',
# Special:Version
-'version' => 'Versioon', # Not used as normal message but as header for the special page itself
+'version' => 'Versioon',
'version-extensions' => 'Paigaldatud lisad',
'version-specialpages' => 'Erileheküljed',
'version-parserhooks' => 'Süntaksianalüsaatori lisad (Parser hooks)',
@@ -2793,7 +3202,7 @@ Sa võid [[Special:Watchlist/edit|kasutada ka harilikku tekstiredaktorit]].',
'version-skin-extension-functions' => 'Kujunduse lisa funktsioonid',
'version-hook-name' => 'Redaktsiooni nimi',
'version-hook-subscribedby' => 'Tellijad',
-'version-version' => 'Versioon',
+'version-version' => '(Versioon $1)',
'version-license' => 'Litsents',
'version-software' => 'Paigaldatud tarkvara',
'version-software-product' => 'Toode',
@@ -2874,4 +3283,15 @@ Sisesta faili nimi eesliiteta "{{ns:file}}:".',
'dberr-outofdate' => "Google'i indeksid võivad olla ajas maha jäänud.",
'dberr-cachederror' => 'See koopia taotletud leheküljest on vahemälus ja ei pruugi olla ajakohane.',
+# HTML forms
+'htmlform-invalid-input' => 'Osaga sinu sisestatust on probleeme',
+'htmlform-select-badoption' => 'Antud number ei ole kõlbulik.',
+'htmlform-int-invalid' => 'Antud väärtus ei ole täisarv.',
+'htmlform-float-invalid' => 'Määratud väärtus ei ole arvuline.',
+'htmlform-int-toolow' => 'Antud suurus on väiksem kui minimaalne $1',
+'htmlform-int-toohigh' => 'Antud suurus on suurem kui maksimaalne $1',
+'htmlform-submit' => 'Saada',
+'htmlform-reset' => 'Tühista muudatused',
+'htmlform-selectorother-other' => 'Muu',
+
);
diff --git a/languages/messages/MessagesEu.php b/languages/messages/MessagesEu.php
index 757a0f71..e60dbf80 100644
--- a/languages/messages/MessagesEu.php
+++ b/languages/messages/MessagesEu.php
@@ -102,7 +102,7 @@ $specialPageAliases = array(
$magicWords = array(
'redirect' => array( '0', '#BIRZUZENDU', '#REDIRECT' ),
- 'currentmonth' => array( '1', 'ORAINGOHILABETE', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ORAINGOHILABETE', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ORAINGOHILABETEIZEN', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'ORAINGOEGUN', 'CURRENTDAY' ),
'currentday2' => array( '1', 'ORAINGOEGUN2', 'CURRENTDAY2' ),
@@ -152,6 +152,7 @@ $messages = array(
'tog-enotifminoredits' => 'Aldaketa txikiak direnean ere e-posta jaso',
'tog-enotifrevealaddr' => 'Jakinarazpen mezuetan nire e-posta helbidea erakutsi',
'tog-shownumberswatching' => 'Jarraitzen duen erabiltzaile kopurua erakutsi',
+'tog-oldsig' => 'Dagoen sinaduraren aurreikuspena:',
'tog-fancysig' => 'Sinadura wikitestu gisa tratatu (lotura automatikorik gabe)',
'tog-externaleditor' => 'Lehenetsi bezala kanpoko editore bat erabili',
'tog-externaldiff' => 'Lehenetsi bezala kanpoko diff erreminta erabili (adituentzako bakarrik, zure ordenagailuak konfigurazio berezia izan behar du)',
@@ -174,6 +175,13 @@ $messages = array(
'underline-never' => 'Inoiz ez',
'underline-default' => 'Nabigatzailearen lehenetsitako balioa',
+# Font style option in Special:Preferences
+'editfont-style' => 'Aldatu eremuko letra tipoa:',
+'editfont-default' => 'Nabigatzaileak aurretik zehaztua',
+'editfont-monospace' => 'Monospace iturria',
+'editfont-sansserif' => 'Sans-serif iturria',
+'editfont-serif' => 'Serif iturria',
+
# Dates
'sunday' => 'Igandea',
'monday' => 'Astelehena',
@@ -233,7 +241,7 @@ $messages = array(
'category-media-header' => 'Media "$1" kategorian',
'category-empty' => "''Kategoria honek ez dauka artikulurik uneotan.''",
'hidden-categories' => '{{PLURAL:$1|Izkutuko kategoria|Izkutuko kategoriak}}',
-'hidden-category-category' => 'Kategoria ezkutuak', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategoria ezkutuak',
'category-subcat-count' => '{{PLURAL:$2|Kategoria honek beste honako azpikategoria baino ez du.|Kategoria honek honako {{PLURAL:$1|azpikategoria du|$1 azpikategoriak ditu}}, guztira dauden $2tik.}}',
'category-subcat-count-limited' => 'Kategoria honek {{PLURAL:$1|azpikategoria hau du|$1 azpikategoria hauek ditu}}.',
'category-article-count' => '{{PLURAL:$2|Kategoria honek honako orrialdea baino ez du.|Honako {{PLURAL:$1|orrialdea kategoria honetan dago|$1 orrialdeak kategoria hauetan daude}}, guztira dauden $2tik.}}',
@@ -241,6 +249,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kategoria honek fitxategi hau baino ez du.|Honako {{PLURAL:$1|fitxategia kategoria honetan dago|$1 fitxategiak kategoria honetan daude}} guztira dauden $2tik.}}',
'category-file-count-limited' => 'Ondorengo {{PLURAL:$1|artxiboa kategoria honetan dago.|$1 artxiboak kategoria honetan daude.}}',
'listingcontinuesabbrev' => 'jarr.',
+'index-category' => 'Indexatutako orrialdeak',
+'noindex-category' => 'Indexatugabeko orrialdeak',
'mainpagetext' => "'''MediaWiki arrakastaz instalatu da.'''",
'mainpagedocfooter' => 'Ikus [http://meta.wikimedia.org/wiki/Help:Contents Erabiltzaile Gida] wiki softwarea erabiltzen hasteko informazio gehiagorako.
@@ -251,10 +261,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (Maiz egindako galderak)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]',
-'about' => 'Honi Buruz',
-'article' => 'Artikulua',
-'newwindow' => '(leiho berrian irekitzen da)',
-'cancel' => 'Bertan behera utzi',
+'about' => 'Honi Buruz',
+'article' => 'Artikulua',
+'newwindow' => '(leiho berrian irekitzen da)',
+'cancel' => 'Bertan behera utzi',
+'moredotdotdot' => 'Gehiago...',
+'mypage' => 'Nire orrialdea',
+'mytalk' => 'Nire eztabaida',
+'anontalk' => 'IP honen eztabaida',
+'navigation' => 'Nabigazioa',
+'and' => '&#32;eta',
+
+# Cologne Blue skin
'qbfind' => 'Aurkitu',
'qbbrowse' => 'Arakatu',
'qbedit' => 'Aldatu',
@@ -262,15 +280,35 @@ $messages = array(
'qbpageinfo' => 'Testuingurua',
'qbmyoptions' => 'Nire orrialdeak',
'qbspecialpages' => 'Aparteko orrialdeak',
-'moredotdotdot' => 'Gehiago...',
-'mypage' => 'Nire orrialdea',
-'mytalk' => 'Nire eztabaida',
-'anontalk' => 'IP honen eztabaida',
-'navigation' => 'Nabigazioa',
-'and' => '&#32;eta',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatuak:',
+'faq' => 'Maiz egindako galderak',
+'faqpage' => 'Project:Maiz egindako galderak',
+
+# Vector skin
+'vector-action-addsection' => 'Mintzagaia gehitu',
+'vector-action-delete' => 'Ezabatu',
+'vector-action-move' => 'Mugitu',
+'vector-action-protect' => 'Babestu',
+'vector-action-undelete' => 'Berreskuratu',
+'vector-action-unprotect' => 'Babesgabetu',
+'vector-namespace-category' => 'Kategoria',
+'vector-namespace-help' => 'Laguntza-orria',
+'vector-namespace-image' => 'Fitxategi',
+'vector-namespace-main' => 'Orrialde',
+'vector-namespace-media' => 'Ikus-entzunezkoen orrialdea',
+'vector-namespace-mediawiki' => 'Mezua',
+'vector-namespace-project' => 'Proiektu-orrialde',
+'vector-namespace-special' => 'Orrialde berezia',
+'vector-namespace-talk' => 'Eztabaida',
+'vector-namespace-template' => 'Txantiloi',
+'vector-namespace-user' => 'Erabiltzaile-orria',
+'vector-view-create' => 'Sortu',
+'vector-view-edit' => 'Aldatu',
+'vector-view-history' => 'Historia ikusi',
+'vector-view-view' => 'Irakurri',
+'vector-view-viewsource' => 'Kodea ikusia',
+'actions' => 'Ekintzak',
+'namespaces' => 'Izen-tarteak',
+'variants' => 'Aldaerak',
'errorpagetitle' => 'Errorea',
'returnto' => '$1(e)ra itzuli.',
@@ -320,18 +358,22 @@ $messages = array(
'otherlanguages' => 'Beste hizkuntzetan',
'redirectedfrom' => '($1(e)tik birzuzenduta)',
'redirectpagesub' => 'Birzuzenketa orrialdea',
-'lastmodifiedat' => 'Orrialdearen azken aldaketa: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Orrialdearen azken aldaketa: $2, $1.',
'viewcount' => 'Orrialde hau {{PLURAL:$1|behin|$1 aldiz}} bisitatu da.',
'protectedpage' => 'Babestutako orrialdea',
'jumpto' => 'Hona jo:',
'jumptonavigation' => 'nabigazioa',
'jumptosearch' => 'bilatu',
+'view-pool-error' => 'Barkatu, zerbitzariak gainezka daude uneotan.
+Erabiltzaile gehiegi ari da orrialde hau ikusi nahiean.
+Mesedez itxaron ezazu unetxo bat orrialde honetara berriz sartzen saiatu baino lehen.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}(e)ri buruz',
'aboutpage' => 'Project:Honi_buruz',
'copyright' => 'Eduki guztia $1(r)en babespean dago.',
-'copyrightpagename' => '{{SITENAME}}ren egile eskubideak',
'copyrightpage' => '{{ns:project}}:Eskubideak',
'currentevents' => 'Albisteak',
'currentevents-url' => 'Project:Albisteak',
@@ -339,8 +381,6 @@ $messages = array(
'disclaimerpage' => 'Project:Erantzukizunen mugaketa orokorra',
'edithelp' => 'Aldaketak egiteko laguntza',
'edithelppage' => 'Help:Aldaketak egiteko laguntza',
-'faq' => 'Maiz egindako galderak',
-'faqpage' => 'Project:Maiz egindako galderak',
'helppage' => 'Help:Laguntza',
'mainpage' => 'Azala',
'mainpage-description' => 'Azala',
@@ -418,10 +458,6 @@ Datu-basean egindako azken kontsulta:
"$1"
funtzio honekin: "$2".
Datu-baseak emandako errore informazioa: "$3: $4"',
-'noconnect' => 'Sentitzen dugu! Wikian arazo teknikoak direla-eta, ezin izan da datu-basera konektatu.<br />
-$1',
-'nodb' => 'Ezin izan da $1 datu-basea hautatu',
-'cachederror' => 'Honako hau eskatutako orrialdearen katxeko kopia da, litekeena da eguneratuta ez azaltzea.',
'laggedslavemode' => 'Oharra: Baliteke orrialde honetan azken aldaketak ez erakustea.',
'readonly' => 'Datu-basea blokeatuta dago',
'enterlockreason' => 'Zehaztu blokeatzeko arrazoia, noiz kenduko den jakinaraziz',
@@ -439,6 +475,8 @@ Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
'readonly_lag' => 'Datu-basea automatikoki blokeatu da menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
'internalerror' => 'Barne errorea',
'internalerror_info' => 'Barne errorea: $1',
+'fileappenderrorread' => 'Ezin izan da "$1" irakurri, gehitzean.',
+'fileappenderror' => 'Ezin da gehitu "$1" "$2"(e)ra.',
'filecopyerror' => 'Ezin izan da "$1" fitxategia "$2"(e)ra kopiatu.',
'filerenameerror' => 'Ezin izan zaio "$1" fitxategiari "$2" izen berria eman.',
'filedeleteerror' => 'Ezin izan da "$1" fitxategia ezabatu.',
@@ -448,7 +486,8 @@ Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
'unexpected' => 'Espero ez zen balioa: "$1"="$2".',
'formerror' => 'Errorea: ezin izan da formularioa bidali',
'badarticleerror' => 'Ezin da ekintza hau orrialde honetan burutu.',
-'cannotdelete' => 'Ezin izan da zehaztutako orrialde edo fitxategia ezabatu. (Baliteke beste norbaitek ezabatu izana.)',
+'cannotdelete' => 'Ezin izan da "$1" orrialde edo fitxategia ezabatu.
+Baliteke beste norbaitek ezabatu izana.',
'badtitle' => 'Izenburu ezegokia',
'badtitletext' => 'Eskatutako orrialde izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat izatea.',
'perfcached' => 'Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea:',
@@ -483,7 +522,6 @@ Emandako arrazoia ''$2'' izan zen.",
'virus-unknownscanner' => 'antibirus ezezaguna:',
# Login and logout pages
-'logouttitle' => 'Saioa ixtea',
'logouttext' => "'''Saioa itxi egin duzu.'''
Erabiltzaile anonimo bezala jarrai dezakezu {{SITENAME}} erabiltzen, edo [[Special:UserLogin|saioa has dezakezu berriz]] erabiltzaile berdinarekin edo ezberdin batekin.
@@ -491,7 +529,6 @@ Kontuan izan orrialde batzuk saioa hasita bazenu bezala ikus ditzakezula nabigat
'welcomecreation' => '== Ongi etorri, $1! ==
Zure kontua sortu egin da. Ez ahaztu [[Special:Preferences|{{SITENAME}}(e)ko hobespenak]] aldatzea.',
-'loginpagetitle' => 'Saio hasiera',
'yourname' => 'Erabiltzaile izena',
'yourpassword' => 'Pasahitza',
'yourpasswordagain' => 'Pasahitza berriz',
@@ -502,6 +539,7 @@ Zure kontua sortu egin da. Ez ahaztu [[Special:Preferences|{{SITENAME}}(e)ko hob
'nav-login-createaccount' => 'Saioa hasi / kontua sortu',
'loginprompt' => 'Cookieak gaituta izatea beharrezkoa da {{SITENAME}}(e)n saioa hasteko.',
'userlogin' => 'Saioa hasi / kontua sortu',
+'userloginnocreate' => 'Saioa hasi',
'logout' => 'Saioa itxi',
'userlogout' => 'Saioa itxi',
'notloggedin' => 'Saioa hasi gabe',
@@ -514,28 +552,8 @@ Zure kontua sortu egin da. Ez ahaztu [[Special:Preferences|{{SITENAME}}(e)ko hob
'badretype' => 'Idatzitako pasahitzak ez dira berdinak.',
'userexists' => 'Aukeratutako erabiltzaile izena hartuta dago.
Mesedez, beste bat aukeratu.',
-'youremail' => 'E-posta:',
-'username' => 'Erabiltzaile izena:',
-'uid' => 'Erabiltzaile zenbakia:',
-'prefs-memberingroups' => '{{PLURAL:$1|Taldeko|taldeetako}} kidea:',
-'yourrealname' => 'Benetako izena:',
-'yourlanguage' => 'Hizkuntza:',
-'yourvariant' => 'Aldaera',
-'yournick' => 'Erabiltzaile izena:',
-'badsig' => 'Baliogabeko sinadura; egiaztatu HTML etiketak.',
-'badsiglength' => 'Zure sinadura luzeegia da.
-$1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
-'yourgender' => 'Generoa:',
-'gender-unknown' => 'Zehaztugabea',
-'gender-male' => 'Gizona',
-'gender-female' => 'Emakumea',
-'prefs-help-gender' => 'Hautazkoa: softwareak generoa zehazteko erabilia. Informazio hau publikoa da.',
-'email' => 'E-posta',
-'prefs-help-realname' => '* Benetako izena (aukerakoa): zehaztea erabakiz gero, zure lanarentzako atribuzio bezala balioko du.',
'loginerror' => 'Errorea saioa hastean',
-'prefs-help-email' => 'E-posta helbidea aukerakoa da, baina zure pasahitza ahaztekotan berriro zure e-postara bidaltzeko aukera ematen dizu.
-Gainera beste lankideek zurekin kontakta dezakete zure lankide edo lankide_eztabaid orrialdeak erabilita zure identitatea ezagutzera eman gabe.',
-'prefs-help-email-required' => 'E-mail helbidea derrigorrezkoa da.',
+'createaccounterror' => 'Ezin izan da kontua sortu: $1',
'nocookiesnew' => 'Erabiltzaile kontua sortu da, baina ez da saioa hasi. {{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta ondoren saiatu saioa hasten zure erabiltzaile izen eta pasahitz berriak erabiliz.',
'nocookieslogin' => '{{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta saiatu berriz.',
'noname' => 'Ez duzu baliozko erabiltzaile izen bat zehaztu.',
@@ -546,10 +564,11 @@ Lankide izenak zehatza izan behar du.
Egiaztatu ondo idatzi duzun, edo [[Special:UserLogin/signup|kontu berria sor ezazu]].',
'nosuchusershort' => 'Ez dago "<nowiki>$1</nowiki>" izena duen erabiltzailerik. Egiaztatu ongi idatzi duzula.',
'nouserspecified' => 'Erabiltzaile izena zehaztu beharra daukazu.',
+'login-userblocked' => 'Erabiltzailea blokeatua dago. Ezin du saioa hasi.',
'wrongpassword' => 'Pasahitza ez da zuzena. Saiatu berriz.',
'wrongpasswordempty' => 'Pasahitza hutsik dago. Saiatu berriz.',
-'passwordtooshort' => 'Zure pasahitza laburregia da.
-{{PLURAL:$1|karaktere 1|$1 karaktere}} izan behar ditu eta zure lankide izenetik ezberdina izan.',
+'passwordtooshort' => 'Pasahitzek {{PLURAL:$1|karaktere 1|$1 karaktere}} gutxienez eduki behar dituzte.',
+'password-name-match' => 'Zure pasahitza ezin da zure erabiltzaile-izen bera izan.',
'mailmypassword' => 'Pasahitza berria e-postaz bidali',
'passwordremindertitle' => 'Pasahitzaren gogorarazpena {{SITENAME}}(e)tik',
'passwordremindertext' => 'Norbaitek (ziurrenik zuk, $1 IP helbidetik) pasahitz berri bat
@@ -561,6 +580,7 @@ Beste norbaitek eskari hau egin bazuen, edo zure pasahitza gogoratu baduzu,
eta ez baduzu aldatu nahi, mezu honetan irakurritakoari jaramonik ez egin
eta aurretik zenuen pasahitza erabiltzen jarrai ezazu.',
'noemail' => 'Ez dago "$1" erabiltzailearen e-posta helbiderik gordeta.',
+'noemailcreate' => 'Balioduna den e-posta helbidea eman behar duzu',
'passwordsent' => 'Pasahitz berria bidali da "$1" erabiltzailearen e-posta helbidera.
Mesedez, saioa hasi jasotakoan.',
'blocked-mailpassword' => 'Zure IP helbidea aldaketak egiteko blokeatuta dago, eta beraz ezin da pasahitza berreskuratzeko aukera erabili.',
@@ -585,9 +605,11 @@ Mesedez, formatu egokia duen helbide bat zehaztu, edo hutsik utzi.',
Orain bertan sar zaitezke eta zure pasahitza aldatu.
Kontu honen sorrera akats bat dela uste baduzu mezu honi ez diozu zertan jaramonik egin.',
+'usernamehasherror' => 'Erabiltzaile-izenak ezin du kuxin-karaktererik eduki',
'login-throttled' => 'Saioa hasteko saiakera gehiegi egin berri dituzu.
Berriro saiatu aurretik itxaron ezazu, mesedez.',
'loginlanguagelabel' => 'Hizkuntza: $1',
+'suspicious-userlogout' => 'Saioa amaitzeko egin duzun eskaria ukatu da. Izan ere, ematen du eskari hori gaizki dabilen nabigatzaile edo cache proxy batek bidali duela.',
# Password reset dialog
'resetpass' => 'Pasahitza aldatu',
@@ -599,17 +621,13 @@ Berriro saiatu aurretik itxaron ezazu, mesedez.',
'retypenew' => 'Pasahitz berria berriz idatzi:',
'resetpass_submit' => 'Pasahitza definitu eta saioa hasi',
'resetpass_success' => 'Zure pasahitza aldatu egin da! Saioa hasten...',
-'resetpass_bad_temporary' => 'Baliogabeko pasahitz tenporala. Baliteke pasahitza jada aldatu edo pasahitz tenporal berri bat eskatu izana.',
'resetpass_forbidden' => 'Ezin dira pasahitzak aldatu',
'resetpass-no-info' => 'Orrialde honetara zuzenean sartzeko izena eman behar duzu.',
'resetpass-submit-loggedin' => 'Pasahitza aldatu',
+'resetpass-submit-cancel' => 'Bertan behera utzi',
'resetpass-wrong-oldpass' => 'Behin-behineko edo oraintxuko pasahitza ez da baliagarria.
Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat eskatu duzu.',
'resetpass-temp-password' => 'Behin-behineko pasahitza:',
-'resetpass-log' => 'Pasahitza berrezartze erregistroa',
-'resetpass-logtext' => 'Hemen azpian administratzaile batek pasahitza berrezarri dien erabiltzaileen zerrenda bat dago.',
-'resetpass-logentry' => '$1(e)n pasahitza aldatu da',
-'resetpass-comment' => 'Pasahitza berrezartzeko arrazoia:',
# Edit page toolbar
'bold_sample' => 'Testu beltza',
@@ -682,7 +700,6 @@ Mesedez, detaile hauek eman itzazu egin nahi duzun edozein kontsulta egiteko gar
'blockededitsource' => "Jarraian ikus daitezke '''$1'''(e)n egin dituzun aldaketak:",
'whitelistedittitle' => 'Saioa hastea beharrezkoa da aldaketak egiteko',
'whitelistedittext' => '$1 behar duzu orrialdeak aldatu ahal izateko..',
-'confirmedittitle' => 'E-posta egiaztatzea beharrezkoa da aldaketak egiteko',
'confirmedittext' => 'Orrialdeetan aldaketak egin aurretik zure e-posta helbidea egiaztatu beharra daukazu. Mesedez, zehaztu eta egiaztatu zure e-posta helbidea [[Special:Preferences|hobespenetan]].',
'nosuchsectiontitle' => 'Atala ez da aurkitu',
'nosuchsectiontext' => 'Existitzen ez den atala editatzen saiatu zara.
@@ -704,9 +721,16 @@ Erabiltzaile anonimoa bazara eta zurekin zerikusirik ez duten mezuak jasotzen ba
Beste orrialde batzuetan [[Special:Search/{{PAGENAME}}|bilatu dezakezu izenburu hau]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bilatu lotutako logak],
edo [{{fullurl:{{FULLPAGENAME}}|action=edit}} berau aldatu ere egin dezakezu]</span>.',
+'noarticletext-nopermission' => 'Une honetan ez dago texturik orri honetan.
+Beste orrietan [[Special:Search/{{PAGENAME}}|testua bilatu dezakezu]],
+edo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} erlazionatutako erregistroak ikusi]</span>.',
'userpage-userdoesnotexist' => '"$1" lankidea ez dago erregistatuta. Mesedez, konprobatu orri hau editatu/sortu nahi duzun.',
+'userpage-userdoesnotexist-view' => '"$1" erabiltzaile-kontua ez dago erregistraturik.',
+'blocked-notice-logextract' => 'Erabiltzaile hau blokeatuta dago une honetan.
+Azken blokeoaren erregistroa ageri da behean, erreferentzia gisa:',
'clearyourcache' => "'''Oharra - Gorde ondoren zure nabigatzailearen katxea ekidin beharko duzu aldaketak ikusteko.''' '''Mozilla / Firefox / Safari:''' ''Shift'' tekla sakatu birkargatzeko momentuan, edo ''Ctrl-Shift-R'' sakatu (''Cmd-Shift-R'' Apple Mac baten); '''Internet Explorer:''' ''Ctrl'' tekla sakatu birkargatzeko momentuan, edo ''Ctrl-F5'' sakatu; '''Konqueror:''': Birkargatzeko klik egin, edo F5 sakatu, besterik ez; '''Opera''' erabiltzaileek ''Tresnak-Hobespenak'' atalera jo eta katxea garbitzeko aukera hautatu.",
-'usercssjsyoucanpreview' => "'''Laguntza:''' Zure CSS/JS berria gorde aurretik probatzeko 'Aurrebista erakutsi' botoia erabili.",
+'usercssyoucanpreview' => "'''Laguntza:''' Zure CSS berria gorde aurretik probatzeko \"{{int:showpreview}}\" botoia erabili.",
+'userjsyoucanpreview' => "'''Laguntza:''' Zure JS berria gorde aurretik probatzeko \"{{int:showpreview}}\" botoia erabili.",
'usercsspreview' => "'''Ez ahaztu zure CSS kodea aurreikusten zabiltzala.'''
'''Oraindik gorde gabe dago!'''",
'userjspreview' => "'''Gogoratu zure JavaScript kodea probatu/aurreikusten zabiltzala, oraindik ez da gorde!'''",
@@ -745,13 +769,16 @@ Era berean, bidaltzen ari zaren edukia zuk zeuk idatzitakoa dela edo jabetza pub
'readonlywarning' => "'''OHARRA: Datu-basea blokeatu egin da mantenu lanak burutzeko, beraz ezingo dituzu orain zure aldaketak gorde. Testua fitxategi baten kopiatu dezakezu, eta beranduago erabiltzeko gorde.
Blokeatu zuen administratzaileak honako azalpena eman zuen: $1'''",
-'protectedpagewarning' => "'''OHARRA: Orri hau blokeaturik dago, administratzaileek soilik eraldatu dezakete.'''",
-'semiprotectedpagewarning' => '<big><strong>Oharra: Orrialde hau erregistratutako erabiltzaileek bakarrik aldatzeko babestuta dago.</strong></big>',
+'protectedpagewarning' => "'''Oharra: Orri hau blokeatua dago administratzaileek soilik eraldatu ahal dezaten.'''
+Azken erregistroa ondoren ikusgai dago erreferentzia gisa:",
+'semiprotectedpagewarning' => "'''Oharra''': Orrialde hau erregistratutako erabiltzaileek bakarrik aldatzeko babestuta dago.
+Erregistroko azken sarrera azpian jartzen da erreferentzia gisa:",
'cascadeprotectedwarning' => "'''Oharra:''' Orrialde hau blokeatua izan da eta administratzaileek baino ez dute berau aldatzeko ahalmena, honako {{PLURAL:$1|orrialdeko|orrialdeetako}} kaskada-babesean txertatuta dagoelako:",
-'titleprotectedwarning' => "'''OHARRA: Orrialde hau blokeatuta dago eta bakarrik [[Special:ListGroupRights|erabiltzaile batzuek]] sortu dezakete.'''",
-'templatesused' => 'Orrialde honetan erabiltzen diren txantiloiak:',
-'templatesusedpreview' => 'Aurreikuspen honetan erabiltzen diren txantiloiak:',
-'templatesusedsection' => 'Atal honetan erabiltzen diren txantiloiak:',
+'titleprotectedwarning' => "'''Oharra: Orrialde hau blokeatuta dago eta bakarrik [[Special:ListGroupRights|erabiltzaile batzuek]] sortu dezakete.'''
+Azken erregistroko sarrera ematen da azpian erreferentzia gisa:",
+'templatesused' => 'Orrialde honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
+'templatesusedpreview' => 'Aurreikuspen honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
+'templatesusedsection' => 'Atal honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
'template-protected' => '(babestua)',
'template-semiprotected' => '(erdi-babestua)',
'hiddencategories' => 'Orrialde hau {{PLURAL:$1|kategoria izkutu bateko|$1 kategoria izkutuko}} kide da:',
@@ -759,16 +786,18 @@ Blokeatu zuen administratzaileak honako azalpena eman zuen: $1'''",
'nocreatetitle' => 'Orrialdeak sortzea mugatuta',
'nocreatetext' => 'Gune honek orrialde berriak sortzeko gaitasuna mugatu du. Atzera egin dezakezu existitzen den orrialde bat aldatzeko, edo [[Special:UserLogin|saio hasi edo kontua sortu]].',
'nocreate-loggedin' => 'Ez daukazu orrialde berriak sortzeko baimenik.',
+'sectioneditnotsupported-title' => 'Ezin dira atalak aldatu',
+'sectioneditnotsupported-text' => 'Ezin dira atalak aldatu orrialde honetan.',
'permissionserrors' => 'Baimen erroreak',
'permissionserrorstext' => 'Ez duzu hori egiteko baimenik, hurrengo {{PLURAL:$1|arrazoia dela eta|arrazoiak direla eta}}:',
'permissionserrorstext-withaction' => 'Ez duzu $2 egiteko eskumenik, honako {{PLURAL:$1|arrazoia dela eta:|arrazoiak direla eta:}}',
-'recreate-deleted-warn' => "'''Oharra: Lehenago ezabatutako orrialdea birsortzen ari zara.'''
+'recreate-moveddeleted-warn' => "'''Oharra: Lehenago ezabatutako orrialdea birsortzen ari zara.'''
Pentsatu ea orrialde hau editatzen jarraitzeak zentzurik baduen.
Hemen duzu orrialde honen ezabaketa erregistroa badaezpada ere:",
-'deleted-notice' => 'Orrialde hau ezabatu da.
-Orrialdearen ezabatze loga behean agertzen da erreferentzia gisa.',
-'deletelog-fulllog' => 'Log osoa ikusi',
+'moveddeleted-notice' => 'Orrialde hau ezabatua izan da.
+Orrialdearen ezabatze erregistroa behean agertzen da erreferentzia gisa.',
+'log-fulllog' => 'Erregistro osoa ikusi',
'edit-hook-aborted' => 'Gehigarriak aldaketa ezeztatu du.
Ez du azalpenik eman.',
'edit-gone-missing' => 'Ezin da orria eguneratu. Ezabatu omen dute.',
@@ -790,6 +819,7 @@ Eztabaidak aipatu gabe utzi dira.',
'post-expand-template-argument-category' => 'Kontuan hartu ez diren txantiloiak dituzten orrialdeak',
'parser-template-loop-warning' => 'Txantiloiaren itzul-biraketa aurkitu da: [[$1]]',
'parser-template-recursion-depth-warning' => 'Txantiloaren rekurtsio sakoneraren muga gainditu da ($1)',
+'language-converter-depth-warning' => 'Hizkuntza-bihurgailuaren sakonerak ($1) muga gainditu du',
# "Undo" feature
'undo-success' => 'Aldaketa desegin daiteke.
@@ -808,9 +838,9 @@ $3(e)k emandako arrazoia: ''$2''",
'viewpagelogs' => 'Orrialde honen erregistroak ikusi',
'nohistory' => 'Orrialde honek ez dauka aldaketa historiarik.',
'currentrev' => 'Oraingo berrikuspena',
-'currentrev-asof' => '$1(e)an momentuko aldaketa',
+'currentrev-asof' => '$1 datarekin, hauxe da uneko bertsioa:',
'revisionasof' => '$1(e)ko berrikuspena',
-'revision-info' => '$2(r)en berrikusketa, ordua: $1', # Additionally available: $3: revision id
+'revision-info' => '$2(r)en berrikusketa, ordua: $1',
'previousrevision' => '←Berrikuspen zaharragoa',
'nextrevision' => 'Berrikuspen berriagoa→',
'currentrevisionlink' => 'Oraingo berrikuspena ikusi',
@@ -823,7 +853,7 @@ $3(e)k emandako arrazoia: ''$2''",
Legenda: (orain) = oraingo bertsioarekiko ezberdintasuna,
(azkena) = aurreko bertsioarekiko ezberdintasuna, t = aldaketa txikia.',
'history-fieldset-title' => 'Historia erakutsi',
-'deletedrev' => '[ezabatuta]',
+'history-show-deleted' => 'Ezabatuak soilik',
'histfirst' => 'Lehena',
'histlast' => 'Azkena',
'historysize' => '({{PLURAL:$1|byte 1|$1 byte}})',
@@ -832,68 +862,111 @@ Legenda: (orain) = oraingo bertsioarekiko ezberdintasuna,
# Revision feed
'history-feed-title' => 'Berrikuspenen historia',
'history-feed-description' => 'Wikiko orrialde honen berrikuspenen historia',
-'history-feed-item-nocomment' => 'nork: $1 noiz: $2', # user at time
+'history-feed-item-nocomment' => 'nork: $1 noiz: $2',
'history-feed-empty' => 'Eskatutako orrialdea ez da existitzen. Baliteke wikitik ezabatu edo izenez aldatu izana. Saiatu [[Special:Search|wikian zerikusia duten orrialdeak bilatzen]].',
# Revision deletion
-'rev-deleted-comment' => '(iruzkina ezabatu da)',
-'rev-deleted-user' => '(erabiltzailea ezabatu da)',
-'rev-deleted-event' => '(log ekintza ezabatu da)',
-'rev-deleted-text-permission' => "Orrialdearen berrikuspen hau '''ezabatu''' egin da.
-Xehetasunak [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} ezabaketa erregistroan] ikus daitezke.",
-'rev-deleted-text-view' => "Orrialdearen berrikuspen hau '''ezabatu''' egin da.
-Guneko administratzaile bezala ikusteko aukera daukazu ordea; xehetasunak [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} ezabaketa erregistroan] ikus ditzakezu.",
-'rev-deleted-no-diff' => "Ezin duzu ezberdintasun hau ikusi, berrikuspenetako bat '''ezabatua''' izan delako.
-Xehetasunak [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Ezabapen erregistroan] aurki ditzazkezu.",
-'rev-deleted-unhide-diff' => "diff honetako pausoetako bat '''ezabatua''' izan da.
-Baliteke argibide gehiago ematea [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} ezabaketa erregistroan].
-Administratzailea zaren heinean oraindik [$1 diff hau ikusi dezakezu] nahi izanez gero.",
-'rev-delundel' => 'erakutsi/ezkutatu',
-'revisiondelete' => 'Berrikuspenak ezabatu/leheneratu',
-'revdelete-nooldid-title' => 'Helburu berrikuspenik ez',
-'revdelete-nooldid-text' => 'Ez d(it)uzu eragiketa hau burutzeko helburu berrikuspena(k) zehaztu.',
-'revdelete-nologtype-title' => 'Log motarik ez da zehaztu',
-'revdelete-nologtype-text' => 'Ez duzu log motarik zehaztu ekintza hori burutzeko.',
-'revdelete-toomanytargets-title' => 'Helburu gehiegi',
-'revdelete-toomanytargets-text' => 'Ekintza burutzeko helburu gehiegi zehaztu dituzu.',
-'revdelete-nologid-title' => 'Log sarrera okerra',
-'revdelete-nologid-text' => 'Ez duzu log helburu ekintzarik zehaztu funtzioa betetzeko, edo zehaztutako sarrera ez da existitzen.',
-'revdelete-selected' => "'''{{PLURAL:$2|[[:$1]](r)en hautatutako berrikuspena:|[[:$1]](r)en hautatutako berrikuspenak}}'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Aukeratutako log gertakaria|Aukeratutako log gertakariak}}:'''",
-'revdelete-text' => "'''Ezabatutako berrikuspenek orrialdearen historian agertzen jarraituko dute, baina bere edukiak ez dira publikoki eskuratu ahal izango.'''
-
-{{SITENAME}}ko administratzaileek ezkutuko eduki hau ikusteko aukera izango dute, eta baita leheneratzeko ere, gunearen arduradunek beste mugapenen bat ezartzen ez badute behintzat.
-Mesedez berretsi ezazu hau egin nahi zenuela, ondorioak ulertzen dituzula eta [[{{MediaWiki:Policy-url}}|politiken arabera]] egiten ari zarela.",
-'revdelete-suppress-text' => "Ezabaketa '''bakarrik''' arrazoi hauek direla eta erabili beharko litzateke:
+'rev-deleted-comment' => '(iruzkina ezabatu da)',
+'rev-deleted-user' => '(erabiltzailea ezabatu da)',
+'rev-deleted-event' => '(log ekintza ezabatu da)',
+'rev-deleted-user-contribs' => '[lankide izena edo Ip helbidea ezabatua - aldatu ezkutapena ekarpenetatik]',
+'rev-deleted-text-permission' => "Orrialdearen berrikuspen hau '''ezabatua''' izan da.
+Xehetasunak [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabaketa erregistroan] ikus daitezke.",
+'rev-deleted-text-unhide' => "Orriaren bertsio hau '''ezabatu''' da.
+Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabatze erregistroan].
+Administratzailea zarenez, oraindik [$1 bertsio hau ikus dezakezu], nahi izanez gero.",
+'rev-suppressed-text-unhide' => "Orriaren bertsio hau '''ezeztatu''' da.
+Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ezeztatze erregistroan].
+Administratzailea zarenez, oraindik [$1 bertsio hau ikus dezakezu], nahi izanez gero.",
+'rev-deleted-text-view' => "Orrialdearen berrikuspen hau '''ezabatua''' izan da.
+Guneko administratzaile bezala ikusteko aukera daukazu ordea; xehetasunak [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabaketa erregistroan] ikus ditzakezu.",
+'rev-suppressed-text-view' => "Berrikuspen hau '''ezabatua''' izan da.
+Administratzaile bezala ikus dezakezu; xehetasun gehiagorako [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ezabapen erregistrora joan].",
+'rev-deleted-no-diff' => "Ezin duzu ezberdintasun hau ikusi, berrikuspenetako bat '''ezabatua''' izan delako.
+Xehetasunak [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabaketa erregistroan] aurki ditzakezu.",
+'rev-suppressed-no-diff' => "Ezin duzu ezberdintasunik ikusi berrikuspenen bat '''ezabatua''' izan delako.",
+'rev-deleted-unhide-diff' => "diff honen bertsioetako bat '''ezabatu''' da.
+Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabatze erregistroan].
+Administratzailea zarenez, oraindik [$1 diff hau ikus dezakezu], nahi izanez gero.",
+'rev-suppressed-unhide-diff' => "diff honen bertsioetako bat '''ezeztatu''' da.
+Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ezeztatze erregistroan].
+Administratzailea zarenez, oraindik [$1 diff hau ikus dezakezu], nahi izanez gero.",
+'rev-deleted-diff-view' => "diff honen bertsioetako bat '''ezabatu''' da.
+Administratzailea zarenez, diff hau ikus dezakezu. Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ezabatze erregistroan].",
+'rev-suppressed-diff-view' => "diff honen bertsioetako bat '''ezeztatu''' da.
+Administratzailea zarenez, diff hau ikus dezakezu. Xehetasunak ikusgai daude [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ezeztatze erregistroan].",
+'rev-delundel' => 'erakutsi/ezkutatu',
+'rev-showdeleted' => 'erakutsi',
+'revisiondelete' => 'Berrikuspenak ezabatu/leheneratu',
+'revdelete-nooldid-title' => 'Helburu berrikuspenik ez',
+'revdelete-nooldid-text' => 'Ez d(it)uzu eragiketa hau burutzeko helburu berrikuspena(k) zehaztu.',
+'revdelete-nologtype-title' => 'Log motarik ez da zehaztu',
+'revdelete-nologtype-text' => 'Ez duzu log motarik zehaztu ekintza hori burutzeko.',
+'revdelete-nologid-title' => 'Log sarrera okerra',
+'revdelete-nologid-text' => 'Ez duzu log helburu ekintzarik zehaztu funtzioa betetzeko, edo zehaztutako sarrera ez da existitzen.',
+'revdelete-no-file' => 'Zehazturiko fitxategia ez da existitzen.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" fitxategiaren bertsio ezabatua (eguna: $2; ordua: $3) ikusi nahi duzu?',
+'revdelete-show-file-submit' => 'Bai',
+'revdelete-selected' => "'''{{PLURAL:$2|[[:$1]](r)en hautatutako berrikuspena:|[[:$1]](r)en hautatutako berrikuspenak}}'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Aukeratutako log gertakaria|Aukeratutako log gertakariak}}:'''",
+'revdelete-text' => "'''Ezabatutako berrikuspenek orrialdearen historian agertzen jarraituko dute, baina bere edukiak ez dira publikoki eskuratu ahal izango.'''
+{{SITENAME}}ko administratzaileek ezkutuko eduki hau ikusteko aukera izango dute, eta baita leheneratzeko ere, gunearen arduradunek beste mugapenen bat ezartzen ez badute behintzat.",
+'revdelete-confirm' => 'Baiezta ezazu hori dela zure asmoa, ulertzen dituzula ondorioak, eta [[{{MediaWiki:Policy-url}}|irizpideak]] errespetatuz egiten ari zarela hau.',
+'revdelete-suppress-text' => "Ezabaketa '''bakarrik''' arrazoi hauek direla eta erabili beharko litzateke:
* Informazio pertsonal desegokia
*: ''etxeko helbideak eta telefono zenbakiak, segurtasun sozial zenbakiak, etab.''",
-'revdelete-legend' => 'Berrikuspen mugapenak ezarri:',
-'revdelete-hide-text' => 'Berrikuspenaren testua ezkutatu',
-'revdelete-hide-name' => 'Helburua eta ekintza izkutatu',
-'revdelete-hide-comment' => 'Aldaketaren iruzkina ezkutatu',
-'revdelete-hide-user' => 'Egilearen erabiltzaile izena/IPa ezkutatu',
-'revdelete-hide-restricted' => 'Mugapen hauek administratzaileei zein besteei aplikatu',
-'revdelete-suppress' => 'Administratzaileen eta bestelakoen datuak kendu',
-'revdelete-hide-image' => 'Fitxategiaren edukia ezkutatu',
-'revdelete-unsuppress' => 'Berrezarritako aldaketen mugak kendu',
-'revdelete-log' => 'Arrazoia:',
-'revdelete-submit' => 'Hautatutako berrikuspenari aplikatu',
-'revdelete-logentry' => '[[$1]](r)entzako berriskupen ikusgaitasuna aldatu da',
-'logdelete-logentry' => '[[$1]]en gertakarien ikusgarritasuna aldatu da',
-'revdelete-success' => "'''Berrikuspenen ikusgarritasuna eguneratu da.'''",
-'logdelete-success' => "'''Log ikusgarritasuna ondo ezarri da.'''",
-'revdel-restore' => 'Ikusgarritasuna aldatu',
-'pagehist' => 'Orriaren historia',
-'deletedhist' => 'Ezabatutako historia',
-'revdelete-content' => 'edukia',
-'revdelete-summary' => 'laburpena aldatu',
-'revdelete-uname' => 'Erabiltzaile izena',
-'revdelete-restricted' => 'administratzaileei ezarritako mugak',
-'revdelete-unrestricted' => 'Administratzaileentzako mugak kendu dira',
-'revdelete-hid' => '$1 aldatu',
-'revdelete-unhid' => '$1 azalarazi',
-'revdelete-log-message' => '$1 {{PLURAL:$2|berrikusketara 1erako|$2 berrikuspenerako}}',
-'logdelete-log-message' => '$1(e)tik {{PLURAL:$2|gertakari $2|$2 gertakari}}',
+'revdelete-legend' => 'Berrikuspen mugapenak ezarri:',
+'revdelete-hide-text' => 'Berrikuspenaren testua ezkutatu',
+'revdelete-hide-image' => 'Fitxategiaren edukia ezkutatu',
+'revdelete-hide-name' => 'Helburua eta ekintza izkutatu',
+'revdelete-hide-comment' => 'Aldaketaren iruzkina ezkutatu',
+'revdelete-hide-user' => 'Egilearen erabiltzaile izena/IPa ezkutatu',
+'revdelete-hide-restricted' => 'Mugapen hauek administratzaileei zein besteei aplikatu',
+'revdelete-radio-same' => '(ez aldatu)',
+'revdelete-radio-set' => 'Bai',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Administratzaileen eta bestelakoen datuak kendu',
+'revdelete-unsuppress' => 'Berrezarritako aldaketen mugak kendu',
+'revdelete-log' => 'Arrazoia:',
+'revdelete-submit' => 'Hautatutako {{PLURAL:$1|berrikuspenari|berrikuspenei}} aplikatu',
+'revdelete-logentry' => '[[$1]](r)entzako berriskupen ikusgaitasuna aldatu da',
+'logdelete-logentry' => '[[$1]]en gertakarien ikusgarritasuna aldatu da',
+'revdelete-success' => "'''Berrikuspenen ikusgarritasuna eguneratu da.'''",
+'revdelete-failure' => "'''Ezin da berrikuspenaren ikuspena eguneratu:'''
+$1",
+'logdelete-success' => "'''Log ikusgarritasuna ondo ezarri da.'''",
+'logdelete-failure' => "'''Erregistroaren ikusgaitasuna ezin da honela ezarri:'''
+$1",
+'revdel-restore' => 'Ikusgarritasuna aldatu',
+'pagehist' => 'Orriaren historia',
+'deletedhist' => 'Ezabatutako historia',
+'revdelete-content' => 'edukia',
+'revdelete-summary' => 'laburpena aldatu',
+'revdelete-uname' => 'Erabiltzaile izena',
+'revdelete-restricted' => 'administratzaileei ezarritako mugak',
+'revdelete-unrestricted' => 'Administratzaileentzako mugak kendu dira',
+'revdelete-hid' => '$1 aldatu',
+'revdelete-unhid' => '$1 azalarazi',
+'revdelete-log-message' => '$1 {{PLURAL:$2|berrikusketara 1erako|$2 berrikuspenerako}}',
+'logdelete-log-message' => '$1(e)tik {{PLURAL:$2|gertakari $2|$2 gertakari}}',
+'revdelete-hide-current' => 'Errorea, $1 $2 data duen elementua ezkutatzean: hau da oraingo bertsioa.
+Ezin da ezkutatu.',
+'revdelete-show-no-access' => 'Errorea, $1 $2 data duen elementua erakustean: elementu hau «mugatua» dela markatu da.
+Ezin duzu atzitu.',
+'revdelete-modify-no-access' => 'Errorea, $1 $2 data duen elementua aldatzean: elementu hau «mugatua» dela markatu da.
+Ezin duzu atzitu.',
+'revdelete-modify-missing' => 'Errorea, $1 identifikazioa duen elementua aldatzean: datu basean ez da ageri.',
+'revdelete-no-change' => "'''Abisua:''' $1 $2 data duen elementuak jadanik bazituen eskatutako ikusgaitasun ezarpenak.",
+'revdelete-concurrent-change' => 'Errorea, $1 $2 data duen elementua aldatzean: badirudi haren egoera aldatu duela nor edo nork, zu aldatzen saiatzen ari zinela.
+Begira itzazu erregistroak.',
+'revdelete-reason-dropdown' => '*Ezabatzeko ohiko arrazoiak
+**Copyright urraketa
+**Informazio pertsonal desegokia
+**Ahalezko informazio iraingarria',
+'revdelete-otherreason' => 'Bestelako arrazoia:',
+'revdelete-reasonotherlist' => 'Beste arrazoi bat',
+'revdelete-edit-reasonlist' => 'Ezabaketa arrazoiak aldatu',
+'revdelete-offender' => 'Bertsioaren egilea:',
# Suppression log
'suppressionlog' => 'Ezabatze loga',
@@ -932,68 +1005,13 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
# Diffs
-'history-title' => '"$1" orrialdearen historia laburpena',
-'difference' => '(Bertsioen arteko ezberdintasunak)',
-'lineno' => '$1. lerroa:',
-'compareselectedversions' => 'Hautatutako bertsioak alderatu',
-'visualcomparison' => 'Alderaketa bisuala',
-'wikicodecomparison' => 'Wikitext alderaketa',
-'editundo' => 'desegin',
-'diff-multi' => '({{PLURAL:$1|Ez da tarteko berrikuspen 1|Ez dira tarteko $1 berrikuspen}} erakusten.)',
-'diff-movedto' => '$1(e)ra mugituta',
-'diff-styleadded' => '$1 estiloa gehitu da',
-'diff-added' => '$1 gehitu da',
-'diff-changedto' => '$1(e)ra aldatuta',
-'diff-movedoutof' => '$1(e)tik mugituta',
-'diff-styleremoved' => '$1 estiloa ezabatuta',
-'diff-removed' => '$1 ezabatua',
-'diff-changedfrom' => '$1(e)tik aldatuta',
-'diff-src' => 'jatorria',
-'diff-withdestination' => '$1 helburuarekin',
-'diff-with' => '&#32; $1 $2(r)ekin',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;eta $1 $2',
-'diff-width' => 'zabalera',
-'diff-height' => 'garaiera',
-'diff-p' => "'''paragrafo''' bat",
-'diff-blockquote' => "'''esaera''' bat",
-'diff-h1' => "'''1. mailako izenburu''' bat",
-'diff-h2' => "'''2. mailako izenburu''' bat",
-'diff-h3' => "'''3. mailako izenburu''' bat",
-'diff-h4' => "'''4. mailako izenburu''' bat",
-'diff-h5' => "'''5. mailako izenburu''' bat",
-'diff-pre' => "'''aureformatudun bloke''' bat",
-'diff-div' => "'''zatiketa''' bat",
-'diff-ul' => "'''ordenarik gabeko zerrenda''' bat",
-'diff-ol' => "'''zerrenda ordenatu''' bat",
-'diff-li' => "'''zerrendako elementu''' bat",
-'diff-table' => "'''taula''' bat",
-'diff-tbody' => "'''taularen edukia'''",
-'diff-tr' => "'''zerrenda''' bat",
-'diff-td' => "'''zelda''' bat",
-'diff-th' => "'''izenburu''' bat",
-'diff-br' => "'''eten''' bat",
-'diff-hr' => "'''lerro horizontal''' bat",
-'diff-code' => "'''ordenagailu kode bloke''' bat",
-'diff-dl' => "'''definizio zerrenda''' bat",
-'diff-dt' => "'''definizio termino''' bat",
-'diff-dd' => "'''definizio''' bat",
-'diff-input' => "'''input''' bat",
-'diff-form' => "'''formulario''' bat",
-'diff-img' => "'''irudi''' bat",
-'diff-span' => "'''span''' bat",
-'diff-a' => "'''lotura''' bat",
-'diff-i' => "'''letra etzana'''",
-'diff-b' => "'''letra beltza'''",
-'diff-strong' => "'''indartsua'''",
-'diff-em' => "'''enfasia'''",
-'diff-font' => "'''letra-tipoa'''",
-'diff-big' => "'''handia'''",
-'diff-del' => "'''ezabatua'''",
-'diff-tt' => "'''zabalera mugatua'''",
-'diff-sub' => "'''azpimarratua'''",
-'diff-sup' => "'''goi-marratua'''",
-'diff-strike' => "'''tatxatua'''",
+'history-title' => '"$1" orrialdearen historia laburpena',
+'difference' => '(Bertsioen arteko ezberdintasunak)',
+'lineno' => '$1. lerroa:',
+'compareselectedversions' => 'Hautatutako bertsioak alderatu',
+'showhideselectedversions' => 'Erakutsi/izkutatu aukeratutako berrikuspenak',
+'editundo' => 'desegin',
+'diff-multi' => '({{PLURAL:$1|Ez da tarteko berrikuspen 1|Ez dira tarteko $1 berrikuspen}} erakusten.)',
# Search results
'searchresults' => 'Bilaketaren emaitzak',
@@ -1001,28 +1019,25 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
'searchresulttext' => '{{SITENAME}}(e)n bilaketak egiteko informazio gehiagorako, ikus [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' bilatu duzu ([[Special:Prefixindex/$1|hasten diren "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"-ra lotzen diren orriak]])',
'searchsubtitleinvalid' => "'''$1''' bilatu duzu",
-'noexactmatch' => "'''Ez dago \"\$1\" izenburua duen orrialderik.''' [[:\$1|Orrialde hau]] sortu dezakezu.",
-'noexactmatch-nocreate' => "'''Ez dago \"\$1\" izenburua duen orrialderik.'''",
'toomanymatches' => 'Aukera gehiegi aurkitu dira, saia zaitez beste eskaera ezberdin batekin',
'titlematches' => 'Emaitzak artikuluen izenburuetan',
'notitlematches' => 'Ez dago bat datorren orrialde izenbururik',
'textmatches' => 'Emaitza orrialde testuetan',
'notextmatches' => 'Ez dago bat datorren orrialde testurik',
-'prevn' => 'aurreko $1ak',
-'nextn' => 'hurrengo $1ak',
+'prevn' => 'aurreko {{PLURAL:$1|$1}}ak',
+'nextn' => 'hurrengo {{PLURAL:$1|$1}}ak',
'prevn-title' => 'Aurreko {{PLURAL:$1|emaitza|emaitzak}}',
'nextn-title' => 'Hurrengo $1 {{PLURAL:$1|emaitza|emaitzak}}',
'shown-title' => 'Erakutsi {{PLURAL:$1|emaitza $1|$1 emaitza}} orrialdeko',
-'viewprevnext' => 'Ikusi ($1) ($2) ($3).',
+'viewprevnext' => 'Ikusi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Bilaketa aukerak',
'searchmenu-exists' => "'''\"[[:\$1]]\" izena duen orrialde bat badago wiki honetan'''",
'searchmenu-new' => "'''\"[[:\$1]]\" orrialde sortu wiki honetan!'''",
'searchhelp-url' => 'Help:Laguntza',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Aurrizki hau duten orrialdeetatik nabigatu]]',
-'searchprofile-articles' => 'Eduki orrialdeak',
-'searchprofile-articles-and-proj' => 'Edukia eta proiektu orrialdeak',
-'searchprofile-project' => 'Proiektu orrialdeak',
-'searchprofile-images' => 'Fitxategiak',
+'searchprofile-articles' => 'Eduki-orriak',
+'searchprofile-project' => 'Laguntza eta Proiektu-orriak',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Guztia',
'searchprofile-advanced' => 'Aurreratua',
'searchprofile-articles-tooltip' => '$1(e)n bilatu',
@@ -1030,8 +1045,6 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
'searchprofile-images-tooltip' => 'Fitxategiak bilatu',
'searchprofile-everything-tooltip' => 'Bilatu eduki guztian (lankide orrialdeak barne)',
'searchprofile-advanced-tooltip' => 'Lankideen izen zehatzetan bilatu',
-'prefs-search-nsdefault' => 'Bilaketa berezko balioak erabiliz:',
-'prefs-search-nscustom' => 'Bilatu lankide izen zehatzetan:',
'search-result-size' => '$1 ({{PLURAL:$2|hitz bat|$2 hitz}})',
'search-result-score' => 'Garrantzia: %$1',
'search-redirect' => '($1 birzuzenketa)',
@@ -1044,11 +1057,12 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
'search-mwsuggest-disabled' => 'ez dago gomendiorik',
'search-relatedarticle' => 'Harremanetan',
'mwsuggest-disable' => 'AJAX gomendioak ezgaitu',
+'searcheverything-enable' => 'Bilatu izen-tarte guztietan',
'searchrelated' => 'harremana',
'searchall' => 'guztia',
'showingresults' => "Jarraian {{PLURAL:$1|emaitza '''1''' ikus daiteke|'''$1''' emaitza ikus daitezke}}, #'''$2'''.etik hasita.",
'showingresultsnum' => "Hasieran #'''$2''' duten {{PLURAL:$3|emaitza '''1'''|'''$3''' emaitza}} erakusten dira jarraian.",
-'showingresultstotal' => "{{PLURAL:$4|'''$1'''(e)tik '''$3''' emaitza|'''$1 - $2'''(e)tik '''$3''' emaitzak}} erakusten",
+'showingresultsheader' => "{{PLURAL:$5|'''$1'''(e)tik '''$3''' emaitza|'''$1 - $2'''(e)tik '''$3''' emaitza}} '''$4'''(r)entzat",
'nonefound' => "'''Oharra''': Bakarrik izen-tarte batzuetan egiten da berez bilaketa.
Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatzeko (eztabaida orrialdea, txantiloiak, etab. sartuz) edo bestela erabil ezazu nahi duzun izen-tartea aurrizki gisa.",
'search-nonefound' => 'Ez dago eskaerarekin bat egiten duten emaitzarik.',
@@ -1057,111 +1071,145 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'powersearch-ns' => 'Bilatu honako izen-tartetan:',
'powersearch-redir' => 'Birzuzenketen zerrenda',
'powersearch-field' => 'Bilatu',
+'powersearch-togglelabel' => 'Egiaztatu:',
+'powersearch-toggleall' => 'Guztiak',
+'powersearch-togglenone' => 'Bat ere',
'search-external' => 'Kanpo bilaketa',
'searchdisabled' => '{{SITENAME}}(e)n ezgaituta dago bilaketa. Dena dela, Google erabiliz ere egin dezakezu bilaketa. Kontuan izan bertan dituzten {{SITENAME}}(e)ko emaitzak zaharkituta egon daitezkeela.',
+# Quickbar
+'qbsettings' => 'Laster-barra',
+'qbsettings-none' => 'Ezein ere',
+'qbsettings-fixedleft' => 'Eskuinean',
+'qbsettings-fixedright' => 'Ezkerrean',
+'qbsettings-floatingleft' => 'Ezkerrean mugikor',
+'qbsettings-floatingright' => 'Eskubian flotatzen',
+
# Preferences page
-'preferences' => 'Hobespenak',
-'mypreferences' => 'Nire hobespenak',
-'prefs-edits' => 'Aldaketa kopurua:',
-'prefsnologin' => 'Saioa hasi gabe',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} Izena eman] behar duzu zure hobespenak ezartzeko.',
-'prefsreset' => 'Hobespenak hasieratu egin dira.',
-'qbsettings' => 'Laster-barra',
-'qbsettings-none' => 'Ezein ere',
-'qbsettings-fixedleft' => 'Eskuinean',
-'qbsettings-fixedright' => 'Ezkerrean',
-'qbsettings-floatingleft' => 'Ezkerrean mugikor',
-'qbsettings-floatingright' => 'Eskubian flotatzen',
-'changepassword' => 'Pasahitza aldatu',
-'skin' => 'Itxura',
-'skin-preview' => 'Aurrebista',
-'math' => 'Formulak',
-'dateformat' => 'Data formatua',
-'datedefault' => 'Hobespenik ez',
-'datetime' => 'Data eta ordua',
-'math_failure' => 'Interpretazio errorea',
-'math_unknown_error' => 'errore ezezaguna',
-'math_unknown_function' => 'funtzio ezezaguna',
-'math_lexing_error' => 'errore lexikoa',
-'math_syntax_error' => 'sintaxi errorea',
-'math_image_error' => 'PNG bilakatze errorea; egiaztatu latex, dvips, gs eta convert ongi instalatuta daudela',
-'math_bad_tmpdir' => 'Ezin da math direktorio tenporala sortu edo bertan idatzi',
-'math_bad_output' => 'Ezin da math direktorioa sortu edo bertan idatzi',
-'math_notexvc' => 'texvc exekutagarria falta da; mesedez, ikus math/README konfiguratzeko.',
-'prefs-personal' => 'Erabiltzaile profila',
-'prefs-rc' => 'Azken aldaketak',
-'prefs-watchlist' => 'Jarraipen zerrenda',
-'prefs-watchlist-days' => 'Jarraipen zerrendan erakutsi beharreko egun kopurua:',
-'prefs-watchlist-days-max' => '(gehienez 7 egun)',
-'prefs-watchlist-edits' => 'Jarraipen zerrendan erakutsi beharreko aldaketa kopurua:',
-'prefs-watchlist-edits-max' => '(Gehenezko zenbakia: 1000)',
-'prefs-misc' => 'Denetarik',
-'prefs-resetpass' => 'Pasahitza aldatu',
-'saveprefs' => 'Gorde',
-'resetprefs' => 'Hasieratu',
-'restoreprefs' => 'Konfigurazio lehenetsi guztiak berrezarri',
-'textboxsize' => 'Aldatzen',
-'prefs-edit-boxsize' => 'Edizio lehioaren tamaina.',
-'rows' => 'Lerroak:',
-'columns' => 'Zutabeak:',
-'searchresultshead' => 'Bilaketa',
-'resultsperpage' => 'Emaitza orrialdeko:',
-'contextlines' => 'Lerro emaitzako:',
-'contextchars' => 'Lerro bakoitzeko karaktere kopurua:',
-'stub-threshold' => '<a href="#" class="stub">stub link</a> formaturako atalasea (byteak):',
-'recentchangesdays' => 'Aldaketa berrietan erakutsi beharreko egun kopurua:',
-'recentchangesdays-max' => '(gehienez {{PLURAL:$1|egun $1|$1 egun}})',
-'recentchangescount' => 'Aldaketa berrietan, historian eta erregistroetan erakusteko aldaketa kopurua, lehenetsita:',
-'savedprefs' => 'Zure hobespenak gorde egin dira.',
-'timezonelegend' => 'Ordu-eremua:',
-'timezonetext' => 'Zure ordu lokala eta zerbitzariaren orduaren (UTC) arteko ezberdintasuna.',
-'localtime' => 'Ordu lokala:',
-'timezoneselect' => 'Ordutegi-eremua:',
-'timezoneuseserverdefault' => 'Erabiltzailearen zerbitzariaren berezkoa',
-'timezoneuseoffset' => 'Beste bat (diferentzia ezarri)',
-'timezoneoffset' => 'Ezberdintasuna¹:',
-'servertime' => 'Zerbitzariko ordua:',
-'guesstimezone' => 'Nabigatzailetik jaso',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Artikoa',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlantiar Ozeanoa',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiar Ozeanoa',
-'timezoneregion-pacific' => 'Ozeano Barea',
-'allowemail' => 'Beste erabiltzaileengandik e-posta mezuak jasotzea gaitu',
-'prefs-searchoptions' => 'Bilaketa aukerak',
-'prefs-namespaces' => 'Izen-tarteak',
-'defaultns' => 'Izen-tarte hauetan bilatu lehenetsitzat:',
-'default' => 'lehenetsia',
-'files' => 'Fitxategiak',
-'prefs-custom-css' => 'CSS pertsonalizatua',
-'prefs-custom-js' => 'JS pertsonalizatua',
+'preferences' => 'Hobespenak',
+'mypreferences' => 'Nire hobespenak',
+'prefs-edits' => 'Aldaketa kopurua:',
+'prefsnologin' => 'Saioa hasi gabe',
+'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Izena eman] behar duzu zure hobespenak ezartzeko.',
+'changepassword' => 'Pasahitza aldatu',
+'prefs-skin' => 'Itxura',
+'skin-preview' => 'Aurrebista',
+'prefs-math' => 'Formulak',
+'datedefault' => 'Hobespenik ez',
+'prefs-datetime' => 'Data eta ordua',
+'prefs-personal' => 'Erabiltzaile profila',
+'prefs-rc' => 'Azken aldaketak',
+'prefs-watchlist' => 'Jarraipen zerrenda',
+'prefs-watchlist-days' => 'Jarraipen zerrendan erakutsi beharreko egun kopurua:',
+'prefs-watchlist-days-max' => '(gehienez 7 egun)',
+'prefs-watchlist-edits' => 'Jarraipen zerrendan erakutsi beharreko aldaketa kopurua:',
+'prefs-watchlist-edits-max' => '(Gehenezko zenbakia: 1000)',
+'prefs-watchlist-token' => 'Jarraipen zerrendaren tokena:',
+'prefs-misc' => 'Denetarik',
+'prefs-resetpass' => 'Pasahitza aldatu',
+'prefs-email' => 'E-posta aukerak',
+'prefs-rendering' => 'Itxura',
+'saveprefs' => 'Gorde',
+'resetprefs' => 'Hasieratu',
+'restoreprefs' => 'Konfigurazio lehenetsi guztiak berrezarri',
+'prefs-editing' => 'Aldatzen',
+'prefs-edit-boxsize' => 'Edizio lehioaren tamaina.',
+'rows' => 'Lerroak:',
+'columns' => 'Zutabeak:',
+'searchresultshead' => 'Bilaketa',
+'resultsperpage' => 'Emaitza orrialdeko:',
+'contextlines' => 'Lerro emaitzako:',
+'contextchars' => 'Lerro bakoitzeko karaktere kopurua:',
+'stub-threshold' => '<a href="#" class="stub">stub link</a> formaturako atalasea (byteak):',
+'recentchangesdays' => 'Aldaketa berrietan erakutsi beharreko egun kopurua:',
+'recentchangesdays-max' => '(gehienez {{PLURAL:$1|egun $1|$1 egun}})',
+'recentchangescount' => 'Erakusteko aldaketa kopurua, lehenetsita:',
+'prefs-help-recentchangescount' => 'Honek azken aldaketak, orrialdeen historiak eta logak barne-biltzen ditu.',
+'savedprefs' => 'Zure hobespenak gorde egin dira.',
+'timezonelegend' => 'Ordu-eremua:',
+'localtime' => 'Ordu lokala:',
+'timezoneuseserverdefault' => 'Erabiltzailearen zerbitzariaren berezkoa',
+'timezoneuseoffset' => 'Beste bat (diferentzia ezarri)',
+'timezoneoffset' => 'Ezberdintasuna¹:',
+'servertime' => 'Zerbitzariko ordua:',
+'guesstimezone' => 'Nabigatzailetik jaso',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Artikoa',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlantiar Ozeanoa',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiar Ozeanoa',
+'timezoneregion-pacific' => 'Ozeano Barea',
+'allowemail' => 'Beste erabiltzaileengandik e-posta mezuak jasotzea gaitu',
+'prefs-searchoptions' => 'Bilaketa aukerak',
+'prefs-namespaces' => 'Izen-tarteak',
+'defaultns' => 'Bestela izen-tarte hauetan bilatu:',
+'default' => 'lehenetsia',
+'prefs-files' => 'Fitxategiak',
+'prefs-custom-css' => 'CSS pertsonalizatua',
+'prefs-custom-js' => 'JS pertsonalizatua',
+'prefs-emailconfirm-label' => 'E-posta baieztapena:',
+'prefs-textboxsize' => 'Editatze lehioaren tamaina',
+'youremail' => 'E-posta:',
+'username' => 'Erabiltzaile izena:',
+'uid' => 'Erabiltzaile zenbakia:',
+'prefs-memberingroups' => '{{PLURAL:$1|Taldeko|taldeetako}} kidea:',
+'prefs-registration' => 'Erregistratzeko unea:',
+'yourrealname' => 'Benetako izena:',
+'yourlanguage' => 'Hizkuntza:',
+'yourvariant' => 'Aldaera',
+'yournick' => 'Erabiltzaile izena:',
+'prefs-help-signature' => 'Eztabaida orrietako iruzkinak "<nowiki>~~~~</nowiki>" ikurrekin sinatu behar dira, honela zure sinadura eta sinatzeko-unea azalduko dira.',
+'badsig' => 'Baliogabeko sinadura; egiaztatu HTML etiketak.',
+'badsiglength' => 'Zure sinadura luzeegia da.
+$1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
+'yourgender' => 'Generoa:',
+'gender-unknown' => 'Zehaztugabea',
+'gender-male' => 'Gizona',
+'gender-female' => 'Emakumea',
+'prefs-help-gender' => 'Hautazkoa: softwareak generoa zehazteko erabilia. Informazio hau publikoa da.',
+'email' => 'E-posta',
+'prefs-help-realname' => '* Benetako izena (aukerakoa): zehaztea erabakiz gero, zure lanarentzako atribuzio bezala balioko du.',
+'prefs-help-email' => 'E-posta helbidea aukerakoa da, baina zure pasahitza ahaztekotan berriro zure e-postara bidaltzeko aukera ematen dizu.
+Gainera beste lankideek zurekin kontakta dezakete zure lankide edo lankide_eztabaid orrialdeak erabilita zure identitatea ezagutzera eman gabe.',
+'prefs-help-email-required' => 'E-mail helbidea derrigorrezkoa da.',
+'prefs-info' => 'Oinarrizko informazioa',
+'prefs-i18n' => 'Nazioartekotasuna',
+'prefs-signature' => 'Sinadura',
+'prefs-dateformat' => 'Data-formatua',
+'prefs-timeoffset' => 'Denbora ezberdintasuna',
+'prefs-advancedediting' => 'Aukera aurreratuak',
+'prefs-advancedrc' => 'Aukera aurreratuak',
+'prefs-advancedrendering' => 'Aukera aurreratuak',
+'prefs-advancedsearchoptions' => 'Aukera aurreratuak',
+'prefs-advancedwatchlist' => 'Aukera aurreratuak',
+'prefs-display' => 'Aukerak erakutsi',
+'prefs-diffs' => 'Ezberdintasunak',
# User rights
-'userrights' => 'Erabiltzaile baimenen kudeaketa', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Erabiltzaile taldeak kudeatu',
-'userrights-user-editname' => 'Erabiltzaile izena idatzi:',
-'editusergroup' => 'Erabiltzaile taldeak editatu',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) lankidearen erabiltzaile-eskubideak aldatzen",
-'userrights-editusergroup' => 'Erabiltzaile taldeak editatu',
-'saveusergroups' => 'Erabiltzaile taldeak gorde',
-'userrights-groupsmember' => 'Partaide da hemen:',
-'userrights-groups-help' => 'Lankide hau dagoen taldeak aldatu dituzu:
+'userrights' => 'Erabiltzaile baimenen kudeaketa',
+'userrights-lookup-user' => 'Erabiltzaile taldeak kudeatu',
+'userrights-user-editname' => 'Erabiltzaile izena idatzi:',
+'editusergroup' => 'Erabiltzaile taldeak editatu',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) lankidearen erabiltzaile-eskubideak aldatzen",
+'userrights-editusergroup' => 'Erabiltzaile taldeak editatu',
+'saveusergroups' => 'Erabiltzaile taldeak gorde',
+'userrights-groupsmember' => 'Partaide da hemen:',
+'userrights-groupsmember-auto' => 'Honen kide inplizitua:',
+'userrights-groups-help' => 'Lankide hau dagoen taldeak aldatu dituzu:
* Aukeratutako taulak esan nahi du lankidea talde horretan dagoela.
* Aukeratu gabeko taulak esan nahi du lankidea ez dagoela talde horretan.
* *-k erakusten du ezin duzula taldea ezabatu, behin gehitu ondoren, edo alderantziz.',
-'userrights-reason' => 'Arrazoia:',
-'userrights-no-interwiki' => 'Ez duzu beste wikietan erabiltzaile eskumenak aldatzeko baimenik.',
-'userrights-nodatabase' => '$1 datubasea ez da existitzen edo ez dago lokalki.',
-'userrights-nologin' => 'Administratzaile kontu batekin [[Special:UserLogin|hasi behar duzu saioa]] erabiltzaile eskubideak esleitzeko.',
-'userrights-notallowed' => 'Zure kontuak ez du baimenik erabiltzaile eskumenak emateko.',
-'userrights-changeable-col' => 'Alda ditzakezun taldeak',
-'userrights-unchangeable-col' => 'Aldatu ezin ditzakezun taldeak',
+'userrights-reason' => 'Arrazoia:',
+'userrights-no-interwiki' => 'Ez duzu beste wikietan erabiltzaile eskumenak aldatzeko baimenik.',
+'userrights-nodatabase' => '$1 datubasea ez da existitzen edo ez dago lokalki.',
+'userrights-nologin' => 'Administratzaile kontu batekin [[Special:UserLogin|hasi behar duzu saioa]] erabiltzaile eskubideak esleitzeko.',
+'userrights-notallowed' => 'Zure kontuak ez du baimenik erabiltzaile eskumenak emateko.',
+'userrights-changeable-col' => 'Alda ditzakezun taldeak',
+'userrights-unchangeable-col' => 'Aldatu ezin ditzakezun taldeak',
# Groups
'group' => 'Taldea:',
@@ -1214,6 +1262,7 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'right-bigdelete' => 'Historia luzea duten orrialdeak ezabatu',
'right-deleterevision' => 'Orrialdeen berrikuspen espezifikoak ezabatu eta leheneratu',
'right-deletedhistory' => 'Ezabatutako sarreren historia ikusi, euren atxikitutako testurik gabe',
+'right-deletedtext' => 'Ikusi ezabatutako testua eta ezabatutako berrikuspenen arteko aldaketak',
'right-browsearchive' => 'Ezabatutako orrialdeak bilatu',
'right-undelete' => 'Ezabatutako orrialde bat itzularazi',
'right-suppressrevision' => 'Administratzaileentzat izkutatutako berrikuspenak berrikusi edo berrezarri',
@@ -1227,6 +1276,8 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'right-editprotected' => 'Babestutako orrialdeak aldatu (babes jauzirik gabe)',
'right-editinterface' => 'Erabiltzailearen interfazea aldatu',
'right-editusercssjs' => 'Beste lankideen CSS eta JS fitxategiak aldatu',
+'right-editusercss' => 'Beste lankideen CSS fitxategiak aldatu',
+'right-edituserjs' => 'Beste lankideen JS fitxategiak aldatu',
'right-rollback' => 'Orrialde zehatz bat aldatu zuen azken lankidearen aldaketak modu azkar batean leheneratu',
'right-markbotedits' => 'Atzera bueltan eginiko aldaketak bot baten aldaketak balira markatu',
'right-noratelimit' => 'Ez dio eragiten erlazio mugak',
@@ -1243,6 +1294,8 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
'right-reset-passwords' => 'Bese erabiltzaile batzuen pasahitzak berritu',
'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
+'right-versiondetail' => 'Software bertsio zabalduaren informazioa erakutsi',
+'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
# User rights log
'rightslog' => 'Erabiltzaile eskubideen erregistroa',
@@ -1292,6 +1345,15 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'recentchanges-legend' => 'Azken aldaketen aukerak',
'recentchangestext' => 'Orrialde honetan wiki honetan egindako azken aldaketak erakusten dira.',
'recentchanges-feed-description' => 'Sindikazio honetan wikian eginiko azkeneko aldaketak jarrai daitezke.',
+'recentchanges-label-legend' => 'Legenda: $1',
+'recentchanges-legend-newpage' => '$1 - orrialde berria',
+'recentchanges-label-newpage' => 'Aldaketa honek orrialde berri bat sortu du',
+'recentchanges-legend-minor' => '$1 - aldaketa txikia',
+'recentchanges-label-minor' => 'Hau aldaketa txikia da',
+'recentchanges-legend-bot' => '$1 - bot aldaketa',
+'recentchanges-label-bot' => 'Aldaketa hau bot batek egin du',
+'recentchanges-legend-unpatrolled' => '$1 - patruilatu gabeko aldaketa',
+'recentchanges-label-unpatrolled' => 'Aldaketa hau ez da oraindik patruilatua izan',
'rcnote' => "Beheko azken {{PLURAL:$2|eguneko|'''$2''' egunetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}} hurrengo datan egin ziren: $5, $4.",
'rcnotefrom' => 'Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).',
'rclistfrom' => 'Erakutsi $1 ondorengo aldaketa berriak',
@@ -1318,6 +1380,8 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
# Recent changes linked
'recentchangeslinked' => 'Lotutako orrialdeen aldaketak',
+'recentchangeslinked-feed' => 'Lotutako orrialdeen aldaketak',
+'recentchangeslinked-toolbox' => 'Lotutako orrialdeen aldaketak',
'recentchangeslinked-title' => '"$1"(e)kin harremanetan dauden aldaketak',
'recentchangeslinked-noresult' => 'Emandako epean ez da egon aldaketarik loturiko orrialdetan.',
'recentchangeslinked-summary' => "Zerrenda honetan zehazturiko orrialde bati (edo kategoria berezi bateko azkeneko kideei) lotura duten orrietan eginiko azken aldaketak agertzen dira.
@@ -1328,8 +1392,8 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
# Upload
'upload' => 'Fitxategia igo',
'uploadbtn' => 'Fitxategia igo',
-'reupload' => 'Berriz igo',
'reuploaddesc' => 'Igotzeko formulariora itzuli.',
+'upload-tryagain' => 'Aldatutako fitxategiaren deskribapena bidali',
'uploadnologin' => 'Saioa hasi gabe',
'uploadnologintext' => 'Fitxategiak igotzeko [[Special:UserLogin|saioa hasi]] behar duzu.',
'upload_directory_missing' => 'Igoeren direktorioa ($1) ezin da aurkitu eta web zerbitzariak ezin du sortu.',
@@ -1378,7 +1442,6 @@ Zure laburpena agertzeko, eskuz aldatu beharko duzu.
* Igotako fitxategiaren izena: '''<tt>[[:$1]]</tt>'''
* Aurretik dagoen fitxategiaren izena: '''<tt>[[:$2]]</tt>'''
Hautatu beste izen bat.",
-'fileexists-thumb' => "<center>'''Irudia badago'''</center>",
'fileexists-thumbnail-yes' => "Badirudi neurri txikiko irudia dela ''(irudi txikia)''. [[$1|thumb]]
Egiaztatu '''<tt>[[:$1]]</tt>''' fitxategia.
Egiaztatutako fitxategia eta jatorrizkoa berdinak badira ez dago irudi txikia igo beharrik.",
@@ -1393,6 +1456,7 @@ Oraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili
'file-deleted-duplicate' => 'Fitxategi honen ([[$1]]) fitxategi berbera aldez aurretik ezabatua izan da. Fitxategi horren ezabaketa-erregistroa begiratu beharko zenuke berriz igo baino lehen.',
'successfulupload' => 'Igoera arrakastatsua',
'uploadwarning' => 'Igotzeko oharra',
+'uploadwarning-text' => 'Aldatu beheko fitxategiaren deskribapena, mesedez, eta saiatu berriz.',
'savefile' => 'Fitxategia gorde',
'uploadedimage' => '"[[$1]]" igo da',
'overwroteimage' => '"[[$1]]"ren bertsio berri bat igo',
@@ -1400,11 +1464,14 @@ Oraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili
'uploaddisabledtext' => 'Fitxategiak igotzea ezgaituta dago.',
'php-uploaddisabledtext' => 'Fitxategi igoerak PHP-n ezinduta daude. Ikusi fitxategi_igoerak mesedez.',
'uploadscripted' => 'Fitxategi honek web zerbitzariak modu ezegokian interpretatu lezakeen HTML edo script kodea dauka.',
-'uploadcorrupt' => 'Fitxategiak akatsak ditu edo luzapena ezegokia da. Mesedez, egiaztatu fitxategia ondo dagoela eta berriz igo.',
'uploadvirus' => 'Fitxategiak birusa dauka! Xehetasunak: $1',
+'upload-source' => 'Jatorrizko fitxategia',
'sourcefilename' => 'Iturri-fitxategiaren izena:',
+'sourceurl' => 'Jatorrizko URL-a:',
'destfilename' => 'Helburu fitxategi izena:',
'upload-maxfilesize' => 'Fitxategien gehienezko tamaina: $1',
+'upload-description' => 'Fitxategiaren deskribapena',
+'upload-options' => 'Igoera-aukerak',
'watchthisupload' => 'Fitxategi hau jarraitu',
'filewasdeleted' => 'Izen hau duen fitxategi bat igo eta ezabatu da jada. $1 aztertu beharko zenuke berriz igo aurretik.',
'upload-wasdeleted' => "'''Oharra: Lehenago ezabatutako fitxategia igotzen ari zara.'''
@@ -1414,12 +1481,38 @@ Fitxategi honen ezabaketa erregistroa jarraian ikus dezakezu:",
'filename-bad-prefix' => "Igotzen ari zaren fitxategiaren izena '''\"\$1\"'''ekin hasten da, normalki kamera digitalek automatikoki ezartzen duten izen ez deskriptibo bat.
Aukera ezazu, mesedez, fitxategi izen deskriptiboago bat.",
-'upload-proto-error' => 'Protokolo ezegokia',
-'upload-proto-error-text' => 'Kanpo igoerak <code>http://</code> edo <code>ftp://</code> hasiera duen URLa izan behar du.',
-'upload-file-error' => 'Barne errorea',
-'upload-file-error-text' => 'Barne errore bat gertatu da zerbitzarian fitxategi tenporal bat sortzen saiatzean. Mesedez, jar zaitez [[Special:ListUsers/sysop|administratzaile]] batekin harremanetan.',
-'upload-misc-error' => 'Errore ezezaguna igotzerakoan',
-'upload-misc-error-text' => 'Errore ezezagun bat gertatu da fitxategia igotzen ari zenean. Mesedez, egiaztatu URLa baliozkoa eta eskuragarria dela eta berriz saiatu. Arazoak jarraitzen badu, jar zaitez [[Special:ListUsers/sysop|administratzailearekin]] harremanetan.',
+'upload-proto-error' => 'Protokolo ezegokia',
+'upload-proto-error-text' => 'Kanpo igoerak <code>http://</code> edo <code>ftp://</code> hasiera duen URLa izan behar du.',
+'upload-file-error' => 'Barne errorea',
+'upload-file-error-text' => 'Barne errore bat gertatu da zerbitzarian fitxategi tenporal bat sortzen saiatzean. Mesedez, jar zaitez [[Special:ListUsers/sysop|administratzaile]] batekin harremanetan.',
+'upload-misc-error' => 'Errore ezezaguna igotzerakoan',
+'upload-misc-error-text' => 'Errore ezezagun bat gertatu da fitxategia igotzen ari zenean. Mesedez, egiaztatu URLa baliozkoa eta eskuragarria dela eta berriz saiatu. Arazoak jarraitzen badu, jar zaitez [[Special:ListUsers/sysop|administratzailearekin]] harremanetan.',
+'upload-too-many-redirects' => 'URLak birzuzenketa gehiegi zituen',
+'upload-unknown-size' => 'Tamaina ezezaguna',
+'upload-http-error' => 'HTTP errorea gertatu da: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Sarbide ukatua',
+'img-auth-nopathinfo' => 'PATH_INFO falta da.
+Zure zerbitzaria ez dago informazio hau pasatzeko konfiguratuta.
+CGI-oinarriduna izan daiteke, img_auth onartzen ez duena.
+Ikus http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Eskatutako bidea ez dago kofiguratutako igoera-direktorioan.',
+'img-auth-badtitle' => 'Ezin izan da baleko izenbururik eraiki "$1" izenetik abiatuta',
+'img-auth-nologinnWL' => 'Ez duzu saioa hasi eta "$1" ez dago zerrenda zurian.',
+'img-auth-nofile' => 'Ez dago "$1" fitxategirik.',
+'img-auth-isdir' => '"$1" direktorio batera iristen saiatzen ari zara.
+Fitxategien sarbidea baino ez da onartzen.',
+'img-auth-streaming' => '"$1" sekuentziatzen.',
+'img-auth-noread' => 'Erabiltzaileak ez du "$1" irakurtzeko sarbiderik.',
+
+# HTTP errors
+'http-invalid-url' => 'URL baliogabea: $1',
+'http-read-error' => 'HTTP irakurketa-akatsa.',
+'http-timed-out' => 'HTTP eskaera iraungi da.',
+'http-curl-error' => 'Errorea URLa bilatzerakoan: $1',
+'http-host-unreachable' => 'Ezin da URL-a atzeman.',
+'http-bad-status' => 'Arazo bat egon da HTTP eskaera bitartean: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Ezin izan da URLa eskuratu',
@@ -1428,6 +1521,7 @@ Aukera ezazu, mesedez, fitxategi izen deskriptiboago bat.",
'upload-curl-error28-text' => 'Guneak denbora gehiegi behar du erantzuteko. Egiaztatu gunea martxan dagoela, itxaron pixka bat eta saiatu berriz. Karga txikiagoa denean probatu zenezake.',
'license' => 'Lizentzia:',
+'license-header' => 'Lizentzia',
'nolicense' => 'Hautatu gabe',
'license-nopreview' => '(Aurreikuspenik ez)',
'upload_source_url' => ' (baliozko URL publikoa)',
@@ -1448,6 +1542,7 @@ Zutabe baten goi-buruaren egin klik sailkatzeko era aldatzeko.',
'listfiles_count' => 'Bertsioak',
# File description page
+'file-anchor-link' => 'Fitxategia',
'filehist' => 'Fitxategiaren historia',
'filehist-help' => 'Data/orduan klik egin fitxategiak orduan zuen itxura ikusteko.',
'filehist-deleteall' => 'guztiak ezabatu',
@@ -1462,6 +1557,7 @@ Zutabe baten goi-buruaren egin klik sailkatzeko era aldatzeko.',
'filehist-dimensions' => 'Neurriak',
'filehist-filesize' => 'Tamaina',
'filehist-comment' => 'Iruzkina',
+'filehist-missing' => 'Fitxategia falta da',
'imagelinks' => 'Fitxategi loturak',
'linkstoimage' => 'Hurrengo {{PLURAL:$1|orrialdeak du|$1 orrialdeek dute}} fitxategi honetarako lotura:',
'linkstoimage-more' => '$1 {{PLURAL:$1|orri lotura|orri lotura}} baino gehiago daude fitxategira.
@@ -1471,15 +1567,11 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
'morelinkstoimage' => 'Ikusi fitxategi honen [[Special:WhatLinksHere/$1|lotura gehiago]].',
'redirectstofile' => 'Honako {{PLURAL:$1|artxiboak fitxategi honetara birzuzentzen du:|$1 artxiboek fitxategi honetara birzuzentzen dute:}}',
'duplicatesoffile' => 'Ondorengo fitxategi {{PLURAL:$1|hau beste honen berdina da|$1 hauek beste honen berdinak dira}} ([[Special:FileDuplicateSearch/$2|zehaztasun gehiago]]):',
-'sharedupload' => 'Elkarbanatutako fitxategi hau $1-(e)ko igoera bat da eta beste proiektuek ere erabil dezakete.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Informazio gehiagorako $1 ikusi mesedez.',
-'shareduploadwiki-desc' => 'Deskribapena $1-(e)an erakusten da azpian.',
-'shareduploadwiki-linktext' => 'fitxategiaren deskribapen orrialdea',
-'noimage' => 'Ez dago fitxategirik izen honekin, $1 dezakezu.',
-'noimage-linktext' => 'bat igo',
+'sharedupload' => 'Elkarbanatutako fitxategi hau $1-(e)ko igoera bat da eta beste proiektuek ere erabil dezakete.',
+'filepage-nofile' => 'Izen horrekin ez dago fitxategirik.',
'uploadnewversion-linktext' => 'Fitxategi honen bertsio berri bat igo',
-'shared-repo-from' => '$1-tik', # $1 is the repository name
-'shared-repo' => 'elkarbanatutako biltegia', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1-tik',
+'shared-repo' => 'elkarbanatutako biltegia',
# File reversion
'filerevert' => '$1 leheneratu',
@@ -1528,7 +1620,7 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
# Random page
'randompage' => 'Ausazko orria',
-'randompage-nopages' => 'Ez dago orrialderik "$1" izen-tartean.',
+'randompage-nopages' => 'Ez dago orrialderik honako {{PLURAL:$2|kategorian|kategoriatan}}: $1',
# Random redirect
'randomredirect' => 'Ausazko birzuzenketa',
@@ -1540,6 +1632,7 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
'statistics-header-edits' => 'Aldaketen estatistikak',
'statistics-header-views' => 'Ikustaldien estatistikak',
'statistics-header-users' => 'Erabiltzaile estatistikak',
+'statistics-header-hooks' => 'Beste estatistikak',
'statistics-articles' => 'Edukiak dituzten orrialdeak',
'statistics-pages' => 'Orrialdeak',
'statistics-pages-desc' => 'Wikian dauden orrialde guztiak, eztabaida orrialdeak, birzuzenketa, etab. barne.',
@@ -1565,8 +1658,8 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
'brokenredirects' => 'Hautsitako birzuzenketak',
'brokenredirectstext' => 'Jarraian zerrendatutako birzuzenketa loturak existitzen ez diren orrietara zuzenduta daude:',
-'brokenredirects-edit' => '(aldatu)',
-'brokenredirects-delete' => '(ezabatu)',
+'brokenredirects-edit' => 'aldatu',
+'brokenredirects-delete' => 'ezabatu',
'withoutinterwiki' => 'Hizkuntza loturarik gabeko orrialdeak',
'withoutinterwiki-summary' => 'Orrialde hauek ez daukate beste hizkuntzetarako loturarik:',
@@ -1673,7 +1766,7 @@ Erregistro mota, erabiltzailearen izena edota orrialdearen izena iragaziz bistar
# Special:Categories
'categories' => 'Kategoriak',
-'categoriespagetext' => 'Hurrengo kategoriek orrialdeak edo fitxategiak dituzte.
+'categoriespagetext' => 'Hurrengo {{PLURAL:$1|kategoriak orrialdeak edo fitxategiak ditu|kategoriek orrialdeak edo fitxategiak dituzte}}.
[[Special:UnusedCategories|Erabili gabeko kategoriak]] ez dira hemen erakusten.
Ikus, gainera [[Special:WantedCategories|kategoriarik eskatuenak]].',
'categoriesfrom' => 'Honela hasten diren kategoriak erakutsi:',
@@ -1681,8 +1774,9 @@ Ikus, gainera [[Special:WantedCategories|kategoriarik eskatuenak]].',
'special-categories-sort-abc' => 'alfabetikoki aldatu',
# Special:DeletedContributions
-'deletedcontributions' => 'Ezabatutako ekarpenak',
-'deletedcontributions-title' => 'Ezabatutako ekarpenak',
+'deletedcontributions' => 'Ezabatutako ekarpenak',
+'deletedcontributions-title' => 'Ezabatutako ekarpenak',
+'sp-deletedcontributions-contribs' => 'ekarpenak',
# Special:LinkSearch
'linksearch' => 'Kanpo loturak',
@@ -1698,6 +1792,15 @@ Baimendutako protokoloak: <tt>$1</tt>',
'listusersfrom' => 'Hemendik aurrerako erabiltzaileak bistaratu:',
'listusers-submit' => 'Erakutsi',
'listusers-noresult' => 'Ez da erabiltzailerik aurkitu.',
+'listusers-blocked' => '(blokeatua)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lankide aktiboen zerrenda',
+'activeusers-count' => '{{PLURAL:$1|Aldaketa berri bat|$1 aldaketa berri}} azken {{PLURAL:$3|egunean|$3 egunetan}}',
+'activeusers-from' => 'Bilatu honela hasten diren lankideak:',
+'activeusers-hidebots' => 'Ezkutatu bot-ak',
+'activeusers-hidesysops' => 'Ezkutatu administratzaileak',
+'activeusers-noresult' => 'Ez da lankiderik aurkitu.',
# Special:Log/newusers
'newuserlogpage' => 'Erabiltzaile erregistroa',
@@ -1708,17 +1811,21 @@ Baimendutako protokoloak: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Automatikoki sorturiko kontua',
# Special:ListGroupRights
-'listgrouprights' => 'Erabiltzaile talde eskumenak',
-'listgrouprights-summary' => 'Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.
+'listgrouprights' => 'Erabiltzaile talde eskumenak',
+'listgrouprights-summary' => 'Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.
Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako eskubideei buruz.',
-'listgrouprights-group' => 'Taldea',
-'listgrouprights-rights' => 'Eskumenak',
-'listgrouprights-helppage' => 'Help:Talde eskumenak',
-'listgrouprights-members' => '(kideen zerrenda)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|Taldea gehitu ahal duzu|Taldeak gehitu ahal dituzu}}: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|Taldea kendu ahal duzu|Taldeak kendu ahal dituzu}}: $1',
-'listgrouprights-addgroup-all' => 'Talde guztiak gehitu daitezke',
-'listgrouprights-removegroup-all' => 'Talde guztiak kendu daitezke',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Eskubidea emanda</span>
+* <span class="listgrouprights-revoked">Eskubidea kenduta</span>',
+'listgrouprights-group' => 'Taldea',
+'listgrouprights-rights' => 'Eskumenak',
+'listgrouprights-helppage' => 'Help:Talde eskumenak',
+'listgrouprights-members' => '(kideen zerrenda)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|Taldea gehitu ahal duzu|Taldeak gehitu ahal dituzu}}: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|Taldea kendu ahal duzu|Taldeak kendu ahal dituzu}}: $1',
+'listgrouprights-addgroup-all' => 'Talde guztiak gehitu daitezke',
+'listgrouprights-removegroup-all' => 'Talde guztiak kendu daitezke',
+'listgrouprights-addgroup-self-all' => 'Talde guztiak norbere kontura gehitu',
+'listgrouprights-removegroup-self-all' => 'Talde guztiak norbere kontutik ezabatu',
# E-mail user
'mailnologin' => 'Bidalketa helbiderik ez',
@@ -1793,23 +1900,27 @@ Jarraipen zerrendatik artikulua kentzeko, artikuluan ''ez jarraitu''ri eman.",
'enotif_anon_editor' => '$1 erabiltzaile anonimoa',
'enotif_body' => 'Kaixo $WATCHINGUSERNAME,
-{{SITENAME}}(e)ko $PAGETITLE orrialdea $CHANGEDORCREATED egin du $PAGEEDITOR(e)k une honetan: $PAGEEDITDATE, ikus $PAGETITLE_URL azken bertsiorako.
+{{SITENAME}}-(e)ko $PAGETITLE orrialdea $CHANGEDORCREATED egin da $PAGEEDITOR-(e)k une honetan: $PAGEEDITDATE, ikus $PAGETITLE_URL azken bertsiorako.
$NEWPAGE
Egilearen laburpena: $PAGESUMMARY $PAGEMINOREDIT
Egilearekin harremanetan jarri:
-e-posta: $PAGEEDITOR_EMAIL
+posta: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Ez dira oharpen gehiago bidaliko orrialde hau berriz bisitatzen ez baduzu. Horrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerrendatik.
+Ez dira oharpen gehiago bidaliko orrialde hau berriz bisitatzen ez baduzu.
+Horrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerrendatik.
- {{SITENAME}}(e)ko oharpen sistema
+ Adeitasunez {{SITENAME}}(e)ko oharpen sistema
--
Zure jarraipen zerrendako konfigurazioa aldatzeko, ikus
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Orrialdea zure jarraipen zerrendatik ezabatzeko, ikus
+$UNWATCHURL
Laguntza:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1823,9 +1934,10 @@ Laguntza:
'exblank' => 'orrialdea hutsik zegoen',
'delete-confirm' => '"$1" ezabatu',
'delete-legend' => 'Ezabatu',
-'historywarning' => 'Kontuz! Ezabatuko duzun orrialdeak honako historia du:',
+'historywarning' => "'''Oharra:''' Ezabatzera zoazen orrialdeak $1 {{PLURAL:$1|berrikuspen du|berrikuspen ditu}} gutxi gorabehera:",
'confirmdeletetext' => 'Orrialde edo irudi bat eta beste historia guztia datu-basetik ezabatzear zaude. Mesedez, egiaztatu hori egin nahi duzula, ondorioak zeintzuk diren badakizula, eta [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz egingo duzula.',
'actioncomplete' => 'Ekintza burutu da',
+'actionfailed' => 'Ekintzak huts egin du',
'deletedtext' => '"<nowiki>$1</nowiki>" ezabatu egin da. Ikus $2 azken ezabaketen erregistroa ikusteko.',
'deletedarticle' => '"[[$1]]" ezabatu da',
'suppressedarticle' => '"[[$1]]" kendua',
@@ -1857,8 +1969,8 @@ kontu izan.',
beste norbaitek editatu du edo jada desegin du.
Azken aldaketa [[User:$3|$3]](e)k ([[User talk:$3|Eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) egin du.',
-'editcomment' => "Aldaketaren laburpena: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '$2ren aldaketak ezabatu dira, $1ren azken bertsiora itzuliz.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Aldaketaren laburpena: \"''\$1''\".",
+'revertpage' => '$2ren aldaketak ezabatu dira, $1ren azken bertsiora itzuliz.',
'rollback-success' => '$1(r)en aldaketak desegin dira, $2(r)en azken bertsiora itzuliz.',
'sessionfailure' => 'Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko "atzera" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.',
@@ -1876,7 +1988,7 @@ beste norbaitek editatu du edo jada desegin du.
'protectexpiry' => 'Iraungipena:',
'protect_expiry_invalid' => 'Baliogabeko iraungipen-data.',
'protect_expiry_old' => 'Iraungipen-data iragan da.',
-'protect-unchain' => 'Mugitzeko blokeoa kendu',
+'protect-unchain-permissions' => 'Babes aukerak desblokeatu',
'protect-text' => "'''<nowiki>$1</nowiki>''' orrialdearen babes maila ikusi eta aldatu egin beharko zenuke.",
'protect-locked-blocked' => "Babes-mailak ezin dira aldatu blokeatuta dagoen bitartean.
Hemen daude '''$1''' orrialdearen egungo ezarpenak:",
@@ -1906,7 +2018,7 @@ Orrialde honen babes maila alda dezakezu, baina ez du eraginik izango kaskada bi
** Produkzioaren aurkakoa den edizio gerra
** Trafiko handiko orrialdea',
'protect-edit-reasonlist' => 'Babesteko arrazoiak aldatu',
-'protect-expiry-options' => 'ordu 1:1 hour,egun 1:1 day,aste 1:1 week,2 aste:2 weeks,hilabete 1:1 month,3 hilabete:3 months,6 hilabete:6 months,urte 1:1 year,betirako:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'ordu 1:1 hour,egun 1:1 day,aste 1:1 week,2 aste:2 weeks,hilabete 1:1 month,3 hilabete:3 months,6 hilabete:6 months,urte 1:1 year,betirako:infinite',
'restriction-type' => 'Baimena:',
'restriction-level' => 'Murrizketa maila:',
'minimum-size' => 'Tamaina minimoa',
@@ -1949,6 +2061,7 @@ In such cases, you must uncheck or unhide the newest deleted revision.',
'undelete-nodiff' => 'Ez da aurkitu aurreko berrikuspenik.',
'undeletebtn' => 'Leheneratu',
'undeletelink' => 'ikusi/leheneratu',
+'undeleteviewlink' => 'ikusi',
'undeletereset' => 'Hasieratu',
'undeleteinvert' => 'Aukeraketa alderanztu',
'undeletecomment' => 'Arrazoia:',
@@ -1987,19 +2100,24 @@ $1',
'contributions-title' => '$1(r)entzat lankidearen ekarpenak',
'mycontris' => 'Nire ekarpenak',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Ez da ezaugarri horiekin bat datorren aldaketarik aurkitu.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ez da ezaugarri horiekin bat datorren aldaketarik aurkitu.',
'uctop' => ' (Azken aldaketa)',
'month' => 'Hilabetea (eta lehenagokoak):',
'year' => 'Urtea (eta lehenagokoak):',
-'sp-contributions-newbies' => 'Soilik kontu berrien ekarpenak erakutsi',
-'sp-contributions-newbies-sub' => 'Hasiberrientzako',
-'sp-contributions-newbies-title' => 'Lankideen ekarpenak lankide berrietn',
-'sp-contributions-blocklog' => 'Blokeaketa erregistroa',
-'sp-contributions-logs' => 'erregistroak',
-'sp-contributions-search' => 'Ekarpenentzako bilaketa',
-'sp-contributions-username' => 'IP helbidea edo erabiltzaile izena:',
-'sp-contributions-submit' => 'Bilatu',
+'sp-contributions-newbies' => 'Soilik kontu berrien ekarpenak erakutsi',
+'sp-contributions-newbies-sub' => 'Hasiberrientzako',
+'sp-contributions-newbies-title' => 'Lankideen ekarpenak lankide berrietn',
+'sp-contributions-blocklog' => 'Blokeaketa erregistroa',
+'sp-contributions-deleted' => 'lankide-ekarpen ezabatuak',
+'sp-contributions-logs' => 'erregistroak',
+'sp-contributions-talk' => 'eztabaida',
+'sp-contributions-userrights' => 'erabiltzaile-baimenen kudeaketa',
+'sp-contributions-blocked-notice' => 'Lankide hau une honetan blokeatuta dago.
+Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
+'sp-contributions-search' => 'Ekarpenentzako bilaketa',
+'sp-contributions-username' => 'IP helbidea edo erabiltzaile izena:',
+'sp-contributions-submit' => 'Bilatu',
# What links here
'whatlinkshere' => 'Orri honetaranzko lotura dutenak',
@@ -2022,6 +2140,7 @@ $1',
# Block/unblock
'blockip' => 'Erabiltzailea blokeatu',
+'blockip-title' => 'Lankidea blokeatu',
'blockip-legend' => 'Erabiltzailea blokeatu',
'blockiptext' => 'IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).',
'ipaddress' => 'IP Helbidea',
@@ -2043,7 +2162,7 @@ $1',
'ipbenableautoblock' => 'Erabiltzaile honek erabilitako azken IP helbidea automatikoki blokeatu, eta baita erabili dezakeen beste edozein IP ere',
'ipbsubmit' => 'Erabiltzaile hau blokeatu',
'ipbother' => 'Beste denbora-tarte bat',
-'ipboptions' => '2 ordu:2 hours,egun 1:1 day,3 egun:3 days,aste 1:1 week,2 aste:2 weeks,hilabete 1:1 month,3 hilabete:3 months,6 hilabete:6 months,urte 1:1 year,betirako:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ordu:2 hours,egun 1:1 day,3 egun:3 days,aste 1:1 week,2 aste:2 weeks,hilabete 1:1 month,3 hilabete:3 months,6 hilabete:6 months,urte 1:1 year,betirako:infinite',
'ipbotheroption' => 'beste bat',
'ipbotherreason' => 'Arrazoi gehigarria:',
'ipbhidename' => 'Lankide izena aldaketa eta zerrendetatik ezkutatu',
@@ -2072,9 +2191,11 @@ Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] blokeoak aztertzeko.',
'ipblocklist-sh-tempblocks' => 'Denbora baterako blokeoak $1',
'ipblocklist-sh-addressblocks' => 'IP bakarreko blokeoak $1',
'ipblocklist-submit' => 'Bilatu',
+'ipblocklist-localblock' => 'Tokiko blokeoa',
+'ipblocklist-otherblocks' => 'Bestelako {{PLURAL:$1|blokeoa|blokeoak}}',
'blocklistline' => '$1, $2(e)k $3 blokeatu du (iraungipena: $4)',
'infiniteblock' => 'infinitu',
-'expiringblock' => 'iraungipen data: $1',
+'expiringblock' => 'iraungipen data $1, $2',
'anononlyblock' => 'anon. soilik',
'noautoblockblock' => 'autoblokeoa ezgaituta',
'createaccountblock' => 'kontua sortzea blokeatuta',
@@ -2088,7 +2209,10 @@ Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] blokeoak aztertzeko.',
'contribslink' => 'ekarpenak',
'autoblocker' => '"[[User:$1|$1]]"(e)k berriki erabili duen IP helbidea duzulako autoblokeatu zaizu. $1(e)k emandako arrazoia zera da: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Blokeo erregistroa',
-'blocklog-fulllog' => 'Blokeoen log osoa',
+'blocklog-showlog' => 'Lankide hau aurretik blokeatua izan da.
+Blokeo erregistroa ematen da azpian erreferentziarako:',
+'blocklog-showsuppresslog' => 'Lankide hau aurretik blokeatua eta ezkutatua izan da.
+Erregistroa ematen da azpian erreferentziarako:',
'blocklogentry' => '"[[$1]]" $2(e)ko iraungipenarekin blokeatu da. $3',
'reblock-logentry' => '[[$1]]-entzako blokeo zehaztapenak aldatu dira $2 $3-ko iraungipenarekin',
'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. Ez dira automatikoki blokeatutako IP helbideak zerrendatzen. Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] aktibo dauden blokeoak aztertzeko.',
@@ -2107,6 +2231,7 @@ Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] blokeoak aztertzeko.',
'ipb_already_blocked' => '"$1" badago blokeatuta',
'ipb-needreblock' => '== Dagoeneko blokeaturik ==
$1 dagoeneko blokeaturik dago. Ezarpenak aldatu nahi al dituzu?',
+'ipb-otherblocks-header' => 'Bestelako {{PLURAL:$1|blokeoa|blokeoak}}',
'ipb_cant_unblock' => 'Errorea: Ez da $1 IDa duen blokeoa aurkitu. Baliteke blokeoa jada kenduta egotea.',
'ipb_blocked_as_range' => 'Akatsa: $1 IPa ez dago zuzenean blokeatuta eta ezin da blokeoa kendu.
Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
@@ -2158,6 +2283,7 @@ mesedez honen ondorioak ulertzen dituzula ziurta ezazu jarraitu baino lehen.",
Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
'movearticle' => 'Orrialdea mugitu',
+'moveuserpage-warning' => "'''Oharra:''' Lankide orrialde bat mugitzera zoaz. Kontutan izan orrialde bakarrik mugituko duzula eta '''ez''' duzula lankide izena aldatuko.",
'movenologin' => 'Saioa hasi gabe',
'movenologintext' => 'Orrialde bat mugitzeko erregistratutako lankidea izan behar duzu eta [[Special:UserLogin|saioa hasi]].',
'movenotallowed' => 'Ez daukazu orrialdeak mugitzeko baimenik.',
@@ -2168,7 +2294,7 @@ Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
'move-watch' => 'Orrialde hau jarraitu',
'movepagebtn' => 'Orrialde mugitu',
'pagemovedsub' => 'Mugimendua eginda',
-'movepage-moved' => '\'\'\'"$1" "$2"(e)ra mugitu da\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" "$2"(e)ra mugitu da\'\'\'',
'movepage-moved-redirect' => 'Birzuzenketa orrialde bat sortu da.',
'movepage-moved-noredirect' => 'Birzuzenketa baten sorrera kendu da.',
'articleexists' => 'Izen hori duen artikulu bat badago edo hautatutako izena ez da baliozkoa. Mesedez, beste izen bat aukeratu.',
@@ -2209,6 +2335,11 @@ Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
'imageinvalidfilename' => 'Xede-artxiboaren izenak ez du balio',
'fix-double-redirects' => 'Hasierako izenburura zuzentzen duten birzuzenketa guztiak aldatu',
'move-leave-redirect' => 'Atzean birzuzenketa bat utzi',
+'protectedpagemovewarning' => "'''Oharra:''' Orrialde hau babestua izan da, beraz administratzaile eskumenak dituztenek alda dezakete bakarrik.
+Azken erregistroko sarrera ematen da azpian erreferentzia gisa:",
+'semiprotectedpagemovewarning' => "'''Oharra:''' Orrialde hau blokeatu dute, izena emanda duten erabiltzaileek soilik mugitu ahal dezaten. Erregistroko azken sarrera erakusten da jarraian erreferentzia gisa:",
+'move-over-sharedrepo' => '== Fitxategia badago ==
+[[:$1]] badago datu-base partekatuan. Izenburu honetara fitxategi bat mugitzean partekatutako fitxategia gainezarriko du.',
# Export
'export' => 'Orrialdeak esportatu',
@@ -2230,15 +2361,21 @@ Horrez gain, lotura zuzena ere erabil dezakezu; adibidez, [[{{#Special:Export}}/
'export-pagelinks' => 'Sartu lotutako orriak honako sakoneran:',
# Namespace 8 related
-'allmessages' => 'Sistemako mezu guztiak',
-'allmessagesname' => 'Izena',
-'allmessagesdefault' => 'Testu lehenetsia',
-'allmessagescurrent' => 'Oraingo testua',
-'allmessagestext' => 'MediaWikin erabiltzen diren mezu guztien zerrenda.
+'allmessages' => 'Sistemako mezu guztiak',
+'allmessagesname' => 'Izena',
+'allmessagesdefault' => 'Testu lehenetsia',
+'allmessagescurrent' => 'Oraingo testua',
+'allmessagestext' => 'MediaWikin erabiltzen diren mezu guztien zerrenda.
Mesedez bisitatu [http://www.mediawiki.org/wiki/Localisation MediaWiki] eta [http://translatewiki.net translatewiki.net] orrialdeak MediaWikira ekarpenak egin badituzu.',
-'allmessagesnotsupportedDB' => "Ezin da '''{{ns:special}}:Allmessages''' erabili '''\$wgUseDatabaseMessages''' ezgaituta dagoelako.",
-'allmessagesfilter' => 'Mezu izenaren iragazkia:',
-'allmessagesmodified' => 'Aldatutakoak bakarrik erakutsi',
+'allmessagesnotsupportedDB' => "Ezin da '''{{ns:special}}:Allmessages''' erabili '''\$wgUseDatabaseMessages''' ezgaituta dagoelako.",
+'allmessages-filter-legend' => 'Iragazi',
+'allmessages-filter' => 'Aldaketa-egoeraren arabera iragazi:',
+'allmessages-filter-unmodified' => 'Aldatugabeak',
+'allmessages-filter-all' => 'Denak',
+'allmessages-filter-modified' => 'Aldatua',
+'allmessages-prefix' => 'Aurrizkiaren arabera iragazi:',
+'allmessages-language' => 'Hizkuntza:',
+'allmessages-filter-submit' => 'Joan',
# Thumbnails
'thumbnail-more' => 'Handitu',
@@ -2248,6 +2385,9 @@ Mesedez bisitatu [http://www.mediawiki.org/wiki/Localisation MediaWiki] eta [htt
'djvu_no_xml' => 'Ezinezkoa izan da DjVu fitxategiaren XML lortzea',
'thumbnail_invalid_params' => 'Irudi txikiaren ezarpenak ez dira baliagarriak',
'thumbnail_dest_directory' => 'Ezinezkoa izan da helburu direktorioa sortu',
+'thumbnail_image-type' => 'Irudi mota ez babestua',
+'thumbnail_gd-library' => 'GD liburutegiaren konfigurazio osagabea: $1 funtzioa falta da',
+'thumbnail_image-missing' => 'Fitxategirik ez dagoela dirudi: $1',
# Special:Import
'import' => 'Orrialdeak inportatu',
@@ -2311,6 +2451,7 @@ Fitxategiaren atal bat baino ez zen igo.',
'tooltip-ca-viewsource' => 'Artikulu hau babesturik dago. Bere kodea soilik ikus dezakezu.',
'tooltip-ca-history' => 'Artikulu honen aurreko bertsioak.',
'tooltip-ca-protect' => 'Artikulu hau babestu',
+'tooltip-ca-unprotect' => 'Orrialde hau babesgabetu',
'tooltip-ca-delete' => 'Artikulu hau ezabatu',
'tooltip-ca-undelete' => 'Ezabatu baino lehenago egindako aldaketak berrezarri.',
'tooltip-ca-move' => 'Orrialde hau mugitu',
@@ -2321,6 +2462,7 @@ Fitxategiaren atal bat baino ez zen igo.',
'tooltip-search-fulltext' => 'Textu honetarako orriak bilatu',
'tooltip-p-logo' => 'Azala',
'tooltip-n-mainpage' => 'Azala bisitatu',
+'tooltip-n-mainpage-description' => 'Azala bisitatu',
'tooltip-n-portal' => 'Proiektuaren inguruan, zer egin dezakezu, non aurkitu nahi duzuna',
'tooltip-n-currentevents' => 'Oraingo gertaeren inguruko informazio gehigarria',
'tooltip-n-recentchanges' => 'Wikiko azken aldaketen zerrenda.',
@@ -2373,10 +2515,12 @@ Laburpenean arrazoi bat gehitzea baimentzen du',
# Attribution
'anonymous' => '{{SITENAME}}(e)ko lankide {{PLURAL:$1|anonimoa|anonimoak}}',
'siteuser' => '{{SITENAME}}(e)ko $1 erabiltzailea',
-'lastmodifiedatby' => 'Orrialdearen azken aldaketa: $2, $1. Nork: $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}-(e)ko $1 erabiltzaile anonimoa',
+'lastmodifiedatby' => 'Orrialdearen azken aldaketa: $2, $1. Nork: $3.',
'othercontribs' => '$1(r)en lanean oinarrituta.',
'others' => 'besteak',
'siteusers' => '{{SITENAME}}(e)ko $1 {{PLURAL:$2|erabiltzailea|erabiltzaileak}}',
+'anonusers' => '{{SITENAME}}-(e)ko $1 {{PLURAL:$2|erabiltzaile}} anonimoak',
'creditspage' => 'Orrialdearen kredituak',
'nocredits' => 'Ez dago krediturik eskuragarri orrialde honentzako.',
@@ -2412,11 +2556,22 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
'mw_math_modern' => 'Nabigatzaile berrientzako gomendatuta',
'mw_math_mathml' => 'MathML posible bada (proba fasean)',
+# Math errors
+'math_failure' => 'Interpretazio errorea',
+'math_unknown_error' => 'errore ezezaguna',
+'math_unknown_function' => 'funtzio ezezaguna',
+'math_lexing_error' => 'errore lexikoa',
+'math_syntax_error' => 'sintaxi errorea',
+'math_image_error' => 'PNG bilakatze errorea; egiaztatu latex, dvips, gs eta convert ongi instalatuta daudela',
+'math_bad_tmpdir' => 'Ezin da math direktorio tenporala sortu edo bertan idatzi',
+'math_bad_output' => 'Ezin da math direktorioa sortu edo bertan idatzi',
+'math_notexvc' => 'texvc exekutagarria falta da; mesedez, ikus math/README konfiguratzeko.',
+
# Patrolling
'markaspatrolleddiff' => 'Patruilatu bezala markatu',
'markaspatrolledtext' => 'Artikulu hau patruilatu bezala markatu',
'markedaspatrolled' => 'Patruilatu bezala markatu da',
-'markedaspatrolledtext' => 'Hautatutako berrikuspena patruilatu bezala markatu da.',
+'markedaspatrolledtext' => '[[:$1]]-(e)n hautatutako berrikuspena patruilatu bezala markatu da.',
'rcpatroldisabled' => 'Aldaketa berrien patruilaketa ezgaituta dago',
'rcpatroldisabledtext' => 'Aldaketa berrien patruilaketa ezaugarria ezgaituta dago orain.',
'markedaspatrollederror' => 'Ezin da patruilatu bezala markatu',
@@ -2446,13 +2601,10 @@ $1',
'previousdiff' => '← Aldaketa zaharragoa',
'nextdiff' => 'Aldaketa berriagoa →',
-# Visual comparison
-'visual-comparison' => 'Alderaketa bisuala',
-
# Media information
'mediawarning' => "'''Oharra''': Fitxategi honek kode mingarria izan lezake.
Zure sisteman exekutatzea arriskutsua izan liteke.",
-'imagemaxsize' => 'Irudiak deskribapen-orrialdetan hurrengo tamainara txikitu:',
+'imagemaxsize' => "Irudiaren tamainaren muga:<br />''(fitxategi deskribapen-orrietarako)''",
'thumbsize' => 'Irudi txikiaren tamaina:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|orri|orri}}',
'file-info' => '(fitxategiaren tamaina: $1, MIME mota: $2)',
@@ -2461,6 +2613,8 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
'svg-long-desc' => '(SVG fitxategia, nominaldi $1 × $2 pixel, fitxategiaren tamaina: $3)',
'show-big-image' => 'Bereizmen handikoa',
'show-big-image-thumb' => '<small>Aurreikuspen honen neurria: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'kiribildua',
+'file-info-gif-frames' => '{{PLURAL:$1|Irudi $1|$1 irudi}}',
# Special:NewFiles
'newimages' => 'Fitxategi berrien galeria',
@@ -2497,7 +2651,7 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Zabalera',
@@ -2630,14 +2784,14 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-unknowndate' => 'Data ezezaguna',
-'exif-orientation-1' => 'Arrunta', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontalki buelta emana', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° biratuta', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Bertikalki buelta emana', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Erlojuaren aurka 90º biratuta eta bertikalki buelta emana', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Erlojuaren norantzan 90º biratua', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Erlojuaren norantzan 90º biratuta eta bertikalki buelta emana', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Erlojuaren aurka 90º biratua', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Arrunta',
+'exif-orientation-2' => 'Horizontalki buelta emana',
+'exif-orientation-3' => '180° biratuta',
+'exif-orientation-4' => 'Bertikalki buelta emana',
+'exif-orientation-5' => 'Erlojuaren aurka 90º biratuta eta bertikalki buelta emana',
+'exif-orientation-6' => 'Erlojuaren norantzan 90º biratua',
+'exif-orientation-7' => 'Erlojuaren norantzan 90º biratuta eta bertikalki buelta emana',
+'exif-orientation-8' => 'Erlojuaren aurka 90º biratua',
'exif-planarconfiguration-1' => 'formatu potoloa',
'exif-planarconfiguration-2' => 'formatu planarra',
@@ -2777,7 +2931,7 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-gpsmeasuremode-2' => '2 dimentsioko neurketa',
'exif-gpsmeasuremode-3' => '3 dimentsioko neurketa',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometro orduko',
'exif-gpsspeed-m' => 'Milia orduko',
'exif-gpsspeed-n' => 'Lotailuak',
@@ -2796,6 +2950,7 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'watchlistall2' => 'guztiak',
'namespacesall' => 'guztiak',
'monthsall' => 'guztiak',
+'limitall' => 'guztiak',
# E-mail address confirmation
'confirmemail' => 'E-posta helbidea egiaztatu',
@@ -2916,7 +3071,7 @@ Halaber [[Special:Watchlist/edit|aldatzaile estandarra]] erabil dezakezu.',
'duplicate-defaultsort' => 'Adi: Berezko "$2" antolatzeak aurreko berezko "$1" antolatzea gainditzen du.',
# Special:Version
-'version' => 'Bertsioa', # Not used as normal message but as header for the special page itself
+'version' => 'Bertsioa',
'version-extensions' => 'Instalatutako luzapenak',
'version-specialpages' => 'Aparteko orrialdeak',
'version-parserhooks' => 'Parser estentsioak',
@@ -2930,7 +3085,7 @@ Halaber [[Special:Watchlist/edit|aldatzaile estandarra]] erabil dezakezu.',
'version-skin-extension-functions' => 'Itxura luzapen funtzioak',
'version-hook-name' => 'Estentsioaren izena',
'version-hook-subscribedby' => 'Hauen harpidetzarekin',
-'version-version' => 'Bertsioa',
+'version-version' => '(Bertsioa $1)',
'version-license' => 'Lizentzia',
'version-software' => 'Instalatutako softwarea',
'version-software-product' => 'Produktua',
@@ -3011,4 +3166,15 @@ Fitxategiaren izena sartu "{{ns:file}}:" aurrizkia gabe.',
'dberr-outofdate' => 'Eduki hauek aurkibideak eguneratu gabe egon daitezke.',
'dberr-cachederror' => 'Ondorengoa eskatutako orriaren katxedun kopia da, eta eguneratu gabe egon daiteke.',
+# HTML forms
+'htmlform-invalid-input' => 'Zure sarrera batzuekin arazoak daude',
+'htmlform-select-badoption' => 'Zuk zehaztutako balioa ez da baliozko aukera.',
+'htmlform-int-invalid' => 'Zuk zehaztutako balioa ez da zenbaki osoa.',
+'htmlform-float-invalid' => 'Zuk zehaztutako balioa ez da zenbakia.',
+'htmlform-int-toolow' => 'Zuk zehaztutako balioa $1 minimoaren azpitik dago',
+'htmlform-int-toohigh' => 'Zuk zehaztutako balioa $1 maximoaren gainetik dago',
+'htmlform-submit' => 'Bidali',
+'htmlform-reset' => 'Aldaketak desegin',
+'htmlform-selectorother-other' => 'Beste bat',
+
);
diff --git a/languages/messages/MessagesExt.php b/languages/messages/MessagesExt.php
index 4b8234ba..86af6abb 100644
--- a/languages/messages/MessagesExt.php
+++ b/languages/messages/MessagesExt.php
@@ -42,6 +42,7 @@ $messages = array(
'tog-enotifminoredits' => 'Envialmi un correu cuandu se haga una eición chiquenina duna páhina',
'tog-enotifrevealaddr' => "Muestral la mi direción d'email enus correus",
'tog-shownumberswatching' => "Muestral el númeru d'usuárius que la vehilan",
+'tog-oldsig' => 'Firma dessistenti:',
'tog-fancysig' => 'Tratal la firma cumu testu wiki (sin atiju automáticu)',
'tog-externaleditor' => 'Gastal eitol esternu pol defeutu (solu pa sabihondus, es mestel una configuración especial nel ordinaol)',
'tog-externaldiff' => 'Gastal def esternu pol defeutu (solu pa sabihondus, es mestel una configuración especial nel ordinaol)',
@@ -123,7 +124,7 @@ $messages = array(
'category-media-header' => 'Meya ena categoria "$1"',
'category-empty' => "''Atualmenti nu desistin ni artículus ni archivus murtimeya nesta categoria.''",
'hidden-categories' => '{{PLURAL:$1|categoria açonchá|categorias açonchás}}',
-'hidden-category-category' => 'Categorias açonchás', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias açonchás',
'category-subcat-count' => '{{PLURAL:$2|Esta categoria solu tiini la siguienti sucategoria.|Esta categoria tiini {{PLURAL:$1|la siguienti sucategoria|las siguientis $1 sucategorias}}, dun total de $2.}}',
'category-subcat-count-limited' => 'Esta categoria tiini {{PLURAL:$1|la siguienti sucategoria|las siguientis $1 sucategorias}}.',
'category-article-count' => '{{PLURAL:$2|Esta categoria solu contiini la siguienti páhina.|{{PLURAL:$1|La siguienti páhina está|Las siguientis $1 páhinas están}} nesta categoria, dun total de $2.}}',
@@ -141,10 +142,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Al tentu',
-'article' => 'Artículu',
-'newwindow' => "(s'abrirá nuna nueva ventana)",
-'cancel' => 'Cancelal',
+'about' => 'Al tentu',
+'article' => 'Artículu',
+'newwindow' => "(s'abrirá nuna nueva ventana)",
+'cancel' => 'Cancelal',
+'moredotdotdot' => 'Mas...',
+'mypage' => 'La mi páhina',
+'mytalk' => 'La mi caraba',
+'anontalk' => 'Caraba pa esta IP',
+'navigation' => 'Güiquipeandu',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Alcuentral',
'qbbrowse' => 'Escrucal',
'qbedit' => 'Eital',
@@ -152,15 +161,35 @@ $messages = array(
'qbpageinfo' => 'Contestu',
'qbmyoptions' => 'Las mis páhinas',
'qbspecialpages' => 'Páhinas especialis',
-'moredotdotdot' => 'Mas...',
-'mypage' => 'La mi páhina',
-'mytalk' => 'La mi caraba',
-'anontalk' => 'Caraba pa esta IP',
-'navigation' => 'Güiquipeandu',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatus:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Añiil tema',
+'vector-action-delete' => 'Esborral',
+'vector-action-move' => 'Mual',
+'vector-action-protect' => 'Protegel',
+'vector-action-undelete' => 'Esborral',
+'vector-action-unprotect' => 'Esprotegel',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => "Página d'ayua",
+'vector-namespace-image' => 'Archivu',
+'vector-namespace-main' => 'Página',
+'vector-namespace-media' => 'Página Murtimeya',
+'vector-namespace-mediawiki' => 'Mensaji',
+'vector-namespace-project' => 'Página el proyeutu',
+'vector-namespace-special' => 'Página especial',
+'vector-namespace-talk' => 'Caraba',
+'vector-namespace-template' => 'Cuairu',
+'vector-namespace-user' => "Página d'usuáriu",
+'vector-view-create' => 'Crial',
+'vector-view-edit' => 'Eital',
+'vector-view-history' => 'Guipal estorial',
+'vector-view-view' => 'Leyel',
+'vector-view-viewsource' => 'Guipal cóigu',
+'actions' => 'Acionis',
+'namespaces' => 'Espáciu nombris',
+'variants' => 'Variantis',
'errorpagetitle' => 'Marru',
'returnto' => 'Gorvel a $1.',
@@ -210,7 +239,7 @@ $messages = array(
'otherlanguages' => 'En otras palras',
'redirectedfrom' => '(Rederihiu dendi $1)',
'redirectpagesub' => 'Rederihil páhina',
-'lastmodifiedat' => 'Los úrtimus chambus desta páhina huerun a las $2 el dia $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Los úrtimus chambus desta páhina huerun a las $2 el dia $1.',
'viewcount' => 'Esta páhina á siu visoreá {{PLURAL:$1|una vezi|$1 vezis}}.',
'protectedpage' => 'Página protegia',
'jumpto' => 'Sartal a:',
@@ -221,7 +250,6 @@ $messages = array(
'aboutsite' => 'Al tentu {{SITENAME}}',
'aboutpage' => 'Project:Enjolmación',
'copyright' => 'Continiu disponibri bahu $1.',
-'copyrightpagename' => 'Copyright de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'La trohi las notícias',
'currentevents-url' => 'Project:La trohi las notícias',
@@ -229,8 +257,6 @@ $messages = array(
'disclaimerpage' => 'Project:Arrayu heneral de responsabiliá',
'edithelp' => "Ayua d'eición",
'edithelppage' => 'Help:Eitandu',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Continius',
'mainpage' => 'Página prencipal',
'mainpage-description' => 'Páhina prencipal',
@@ -311,10 +337,6 @@ La úrtima consurta jue:
"$1"
endrentu la junción "$2".
La bassi de datus degorvió el marru "$3: $4"',
-'noconnect' => 'Estamus teniendu angunas deficultais ténicas, i nu es possibri contautal con la bassi de datus.<br />
-$1',
-'nodb' => 'Nu se puei selecional la basi e datus $1',
-'cachederror' => 'La siguienti páhina es una copia emburacá la páhina solicitá, asíque es posibri que nu esté atualizá.',
'laggedslavemode' => 'Avisu: Es posibri que la páhina nu esté atualizá.',
'readonly' => 'Basi e datus atarugá',
'enterlockreason' => 'Escrebi una razón pal tarugu, i cuandu esti
@@ -342,7 +364,7 @@ Pol favol, contauta con un [[Special:ListUsers/sysop|çajoril]], mentandu la URL
'unexpected' => 'Valol nu asperau: "$1"="$2".',
'formerror' => 'Marru: nu se puei envial el hormulariu',
'badarticleerror' => 'Nu se puei realizal esta ación nesta páhina.',
-'cannotdelete' => 'Nu se puei esborral esa páhina u archivu. (Puei que ya lo aiga esborrau otra presona.)',
+'cannotdelete' => 'Nu es possibri esborral "$1". Puei que ya lo aiga esborrau otra presona.',
'badtitle' => 'Mal entitulau',
'badtitletext' => 'El entítulu la páhina está vaciu, nu es váliu, u es un atihu entelluenga u entelgüiqui encorretu.',
'perfcached' => "Los siguientis datus s'alcuentran nel caché i es posibri que nu estén atualizaus.",
@@ -373,7 +395,6 @@ La razón es la siguienti: ''$2''.",
'virus-unknownscanner' => 'Antivirus andarriu:',
# Login and logout pages
-'logouttitle' => 'Salil',
'logouttext' => "'''Cuenta afechá corretamenti.'''<br />
Pueis acontinal gastandu {{SITENAME}} de holma anónima, u [[Special:UserLogin|entral ena tu cuenta]] con el mesmu ussuáriu, u con otru.
Dati cuenta que hata que nu esborris el caché del tu escrucaol pué paecel que la tu cuenta acontina abierta n'angunas páginas.",
@@ -381,7 +402,6 @@ Dati cuenta que hata que nu esborris el caché del tu escrucaol pué paecel que
La tu cuenta d'ussuáriu á siu criá.
Alcuerdati de chambal las tus [[Special:Preferences|preferéncias de {{SITENAME}}]].",
-'loginpagetitle' => 'Entrá',
'yourname' => "Nombri d'usuáriu:",
'yourpassword' => 'Consínia:',
'yourpasswordagain' => 'Escrebi e nuevu la consínia:',
@@ -392,6 +412,7 @@ Alcuerdati de chambal las tus [[Special:Preferences|preferéncias de {{SITENAME}
'nav-login-createaccount' => 'Entral/Crial cuenta',
'loginprompt' => 'Ebis atival las cookies pa entral en {{SITENAME}}.',
'userlogin' => 'Entral/Crial cuenta',
+'userloginnocreate' => 'Entral',
'logout' => 'Salil',
'userlogout' => 'Salil',
'notloggedin' => "Nu t'alcuentras rustriu",
@@ -403,27 +424,8 @@ Alcuerdati de chambal las tus [[Special:Preferences|preferéncias de {{SITENAME}
'createaccountmail' => 'pol e-mail',
'badretype' => 'Las consínias nu conciin.',
'userexists' => "El nombri d'usuáriu ya s'alcuentra rustriu, pol favol, escrebi otru nombri.",
-'youremail' => 'Email:',
-'username' => "Nombri d'usuáriu:",
-'uid' => "ID d'usuáriu:",
-'prefs-memberingroups' => 'Miembru de {{PLURAL:$1|grupu|groupus}}:',
-'yourrealname' => 'Nombri verdaeru:',
-'yourlanguage' => 'Palra:',
-'yourvariant' => 'Varianti:',
-'yournick' => 'Moti:',
-'badsig' => 'Nu se premiti esa firma; compreba las etiquetas HTML.',
-'badsiglength' => 'El tu moti es mu largu.
-Ebi tenel menus de $1 {{PLURAL:$1|caratel|carateris}}.',
-'yourgender' => 'Héneru:',
-'gender-unknown' => 'Nu especificau',
-'gender-male' => 'Ombri',
-'gender-female' => 'Mujel',
-'email' => 'Email',
-'prefs-help-realname' => "El nombri rial es ocional, peru nel chascu en que lo escribas, se gastará p'atribuilti el tu labutu.",
'loginerror' => "Marru d'ativación",
-'prefs-help-email' => "Es ocional escrebil el tu email, peru es mestel pa crial una nueva consínia si t'orvias de l'antigua.
-Amás premiti qu'otrus ussuárius contatin contigu pol mé la tu página d'ussuáriu u caraba, sin sel mestel muestral la tu entiá.",
-'prefs-help-email-required' => 'Es mestel la direción email.',
+'createaccounterror' => "Nu es possibri crial la cuenta d'usuáriu: $1",
'nocookiesnew' => "S'á criau la tu cuenta d'usuáriu, inque nu la tinis abierta. {{SITENAME}} gasta \"cookies\" pa premitil el acesu a los usuárius, i tú las tinis desativás. Pol favol, atívalas i entra ena tu cuenta con el tu nombri d'usuáriu i consínia.",
'nocookieslogin' => '{{SITENAME}} gasta cookies pa entifical a los usuárius, i tú las tiinis esativás. Pol favol, atívalas i preba otra vezi.',
'noname' => "Nu as escrebiu un nombri d'usuáriu corretu.",
@@ -435,7 +437,8 @@ Compreba que lo aigas escritu bien, u [[Special:UserLogin/signup|cria una cuenta
'nouserspecified' => "Ebis escribil un nombri d'usuáriu.",
'wrongpassword' => 'La consínia escrebia nu es correta. Pol favol, preba otra vezi.',
'wrongpasswordempty' => 'As ehau en brancu la consínia. Pol favol, preba otra vezi.',
-'passwordtooshort' => "La tu consínia nu es valia, u es mu chiquenina. Ebi tenel al menus $1 carateris i sel deferenti el tu nombri d'usuáriu.",
+'passwordtooshort' => 'Las consínias ebin tenel cumu ménimu {{PLURAL:$1|1 caratel|$1 carateris}}.',
+'password-name-match' => 'La consínia ebi sel deferenti del tu nombri dusuáriu.',
'mailmypassword' => 'Envialmi pol correu una nueva consínia',
'passwordremindertitle' => 'Alcuerda-consínias de {{SITENAME}}',
'passwordremindertext' => 'Alguien (siguramenti tú, dendi la direción IP $1)
@@ -480,11 +483,10 @@ Si s\'á criau la cuenta ebiu a angún marru, inora esti mensahi.',
'retypenew' => 'Güervi a escrebil la nueva consínia:',
'resetpass_submit' => 'Escrebi la consínia i entra',
'resetpass_success' => 'La tu consínia á siu chambá! Ya pueis entral otra vezi ena tu cuenta...',
-'resetpass_bad_temporary' => "Consínia temporal embilmá. Es posibri que ya aigas chambau la tu consínia u qu'aigas solicitau el enviu d'otra.",
'resetpass_forbidden' => 'Nu es possibri escambial las consínias',
'resetpass-submit-loggedin' => 'Escambial consínia',
+'resetpass-submit-cancel' => 'Cancelal',
'resetpass-temp-password' => 'Consínia temporal:',
-'resetpass-logentry' => 'escambiá la consínia a $1',
# Edit page toolbar
'bold_sample' => 'Testu en letra "Bold"',
@@ -552,7 +554,6 @@ $3 es la tu direción IP atual, i el ID del tarugu es #$5. Pol favol, escrebi da
'blockededitsource' => "Embahu se muestra el testu '''las tus eicionis''' en '''$1''':",
'whitelistedittitle' => 'Es mestel rustrilsi pa eital',
'whitelistedittext' => 'Tiinis que $1 pa eital páhinas.',
-'confirmedittitle' => 'Es mestel confirmal el tu email pa puel eital',
'confirmedittext' => 'Ebis confirmal la tu direción d´email enantis d´eital páhinas. Pol favol, escrebi i compreba el tu email pol meyu las tus [[Special:Preferences|preferéncias d´usuáriu]].',
'nosuchsectiontitle' => 'Nu es posibri alcuentral el apaltiju',
'nosuchsectiontext' => "Estás ententandu eital un apaltiju que nu desisti.
@@ -579,7 +580,8 @@ u [{{fullurl:{{FULLPAGENAME}}|action=edit}} eital ésta]</span>.',
'''Konqueror:''' Pursa ''F5'' u ''Recargal'';
'''Opera:''' Esborra el caché en ''Herramientas→Preferéncias''.
'''Internet Explorer:''' Mantén ''Ctrl'' mentris pursas ''Atualizal'', u pursa ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Consehu:''' Gasta el botón 'Previsoreal' pa prebal el tu nuevu CSS/JS enantis d´emburacal.",
+'usercssyoucanpreview' => "'''Consehu:''' Gasta el botón 'Previsoreal' pa prebal el tu nuevu CSS enantis d´emburacal.",
+'userjsyoucanpreview' => "'''Consehu:''' Gasta el botón 'Previsoreal' pa prebal el tu nuevu JS enantis d´emburacal.",
'usercsspreview' => "'''Alcuerdati que solu estás previsoreandu el tu CSS d'usuáriu.'''
'''Entovia nu está emburacau!'''",
'userjspreview' => "'''Recuerda que solu estás prebandu/previsoreandu el tu JavaScript d´usuáriu, entovia nu está emburacau!'''",
@@ -626,13 +628,15 @@ razón pola que nu pueis emburacal los tus chambus agora.'''
Pa nu perdel los chambus, pueis copialus i pegalus nel tu ordinaol, i nun ratinu, emburacalus ena wiki.
El alministraol que á cerrau la bassi datus á dau la siguienti razón: $1",
-'protectedpagewarning' => "'''Avisu: Esta páhina s'alcuentra atarugá, asínque sólu los çahorilis puein eitala.'''",
-'semiprotectedpagewarning' => "'''Nota:''' S'á atarugau esta páhina, asínque solu los usuárius rustrius puein eitala.",
+'protectedpagewarning' => "'''Alverténcia: Esta página s'alcuentra atarugá, asínque sólu los çahorilis puein eitala.'''
+Embaju se muestra el rustriju d'acessu cumu referéncia:",
+'semiprotectedpagewarning' => "'''Nota:''' S'á atarugau esta página, asínque solu los ussuárius rustrius puein eitala.
+Embaju se muestra el rustriju d'acessu cumu referéncia:",
'cascadeprotectedwarning' => "'''Avisu:''' Esta páhina está protehia, asínque solu los çahorilis puein eitala. La razón de qu'esté protehia es que s'alcuentra encluia {{PLURAL:$1|ena siguienti páhina|enas siguientis páhinas}} cola oción ''cascá'' ativá:",
-'titleprotectedwarning' => "'''Avisu: Esta páhina á siu atarugá, polo que solu angunus usuárius puein criala.'''",
-'templatesused' => 'Prantillas gastás nesta páhina:',
-'templatesusedpreview' => 'Prantillas gastás al previsoreal:',
-'templatesusedsection' => 'Prantillas gastás nesta parti:',
+'titleprotectedwarning' => "'''Alverténcia: Esta página á siu atarugá, razón pola que son mestel [[Special:ListGroupRights|ciertus derechus]] pa criala.'''",
+'templatesused' => '{{PLURAL:$1|Prantilla|Prantillas}} gastás nesta página:',
+'templatesusedpreview' => '{{PLURAL:$1|Prantilla|Prantillas}} gastás al previsoreal:',
+'templatesusedsection' => '{{PLURAL:$1|Prantilla gastá|Prantillas gastás}} en esti apaltiju:',
'template-protected' => '(protehiu)',
'template-semiprotected' => '(abati-protehiu)',
'hiddencategories' => 'Esta páhina preteneci a {{PLURAL:$1|1 categoria açonchá|$1 categorias açonchás}}:',
@@ -644,13 +648,11 @@ Pueis gorvel i eital anguna páhina ya desistenti, u [[Special:UserLogin|rustril
'permissionserrors' => 'Marrus colos premisus',
'permissionserrorstext' => 'Nu t´está premitiu hazel esu, {{PLURAL:$1|pola siguienti razón|polas siguientis razonis}}:',
'permissionserrorstext-withaction' => 'Nu tiinis premisu pa $2, {{PLURAL:$1|pola siguienti razón|polas siguientis razonis}}:',
-'recreate-deleted-warn' => "'''Avisu: Vas a gorvel a crial una páhina que ya hue esborrá.'''
+'recreate-moveddeleted-warn' => "'''Avissu: Vas a gorvel a crial una páhina que ya jue esborrá.'''
-Eberias consieral si es apropiau acontinal eitandu esta páhina.
-Velaquí el rustrihu d'esborrau:",
-'deleted-notice' => "Esta página á siu esborrá.
-A continuación se muestra el rustriju d'esborrau de la página.",
-'deletelog-fulllog' => 'Guipal rustriju compretu',
+Eberias consideral acontinal eitandu esta página.
+Embaju se muestra el rustriju d'esborrau:",
+'log-fulllog' => 'Visoreal el rustriju compretu',
'edit-gone-missing' => 'Nu es possibri atualizal la página.
Paci bel siu esborrá.',
'edit-conflict' => "Marru d'eición.",
@@ -674,9 +676,9 @@ La razón dá pol $3 es ''$2''",
'viewpagelogs' => 'Vel los rustrihus d´esta páhina',
'nohistory' => 'Nu ai dengún estorial d´eicionis pa esta páhina.',
'currentrev' => 'Revisión atual',
-'currentrev-asof' => 'Revissión atual de $1',
+'currentrev-asof' => 'Úrtima revisión: $1',
'revisionasof' => 'Revisión de $1',
-'revision-info' => 'Revisión de $1 hecha pol $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisión de $1 hecha pol $2',
'previousrevision' => '←Revisión mas antigua',
'nextrevision' => 'Revisión mas recienti→',
'currentrevisionlink' => 'Revisión atual',
@@ -687,7 +689,7 @@ La razón dá pol $3 es ''$2''",
'page_last' => 'úrtimu',
'histlegend' => 'Leyenda: (ati) = deferéncias cola velsión atual, (anter) = deferéncias cola velsión anteriol, C = eición chiquenina',
'history-fieldset-title' => 'Escrucal estorial',
-'deletedrev' => '[esborrau]',
+'history-show-deleted' => 'Solu esborraus',
'histfirst' => 'Mas recienti',
'histlast' => 'Mas antigu',
'historysize' => '({{PLURAL:$1|1 byte|$1 byts}})',
@@ -696,7 +698,7 @@ La razón dá pol $3 es ''$2''",
# Revision feed
'history-feed-title' => 'Estorial de revisionis',
'history-feed-description' => 'Estorial de revisionis pa esta páhina nel güiqui',
-'history-feed-item-nocomment' => '$1 en $2', # user at time
+'history-feed-item-nocomment' => '$1 en $2',
'history-feed-empty' => 'Esa páhina nu desisti.
Es posibri qu´aiga siu esborrá e la güiqui, u que s´aiga chambau el su nombri.
Preba [[Special:Search|landeandu]] entri las nuevas páhinas de la güiqui.',
@@ -705,15 +707,17 @@ Preba [[Special:Search|landeandu]] entri las nuevas páhinas de la güiqui.',
'rev-deleted-comment' => '(comentáriu esborrau)',
'rev-deleted-user' => '(nombri d´usuáriu esborrau)',
'rev-deleted-event' => '(entrá esborrá)',
-'rev-deleted-text-permission' => "La revisión desta páhina á siu esborrá.
-Es posibri qu'aiga detallis nel [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rustrihu d'esborrau].",
-'rev-deleted-text-view' => "Esta revisión de la páhina á siu esborrá enus archivus púbricus.
-Cumu alministraol d'esti güiqui, t'es posibri vela;
-puei bel detallis nel [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rustrihu d'esborrau].",
+'rev-deleted-text-permission' => "La revisión desta página á siu '''esborrá'''.
+Es possibri que aiga detallis nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rustriju d'esborrau].",
+'rev-deleted-text-view' => "Esta revisión de la páhina á siu '''esborrá'''.
+Cumu alministraol pueis echali una guipaina;
+puei bel detallis nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rustriju d'esborrau].",
'rev-delundel' => 'muestral/açonchal',
+'rev-showdeleted' => 'muestral',
'revisiondelete' => 'Esborral/arrecuperal revisionis',
'revdelete-nooldid-title' => 'Nu ai una revisión destinu',
'revdelete-nooldid-text' => 'Nu as prehisau denguna revisión destinu ondi realizal esta hunción.',
+'revdelete-show-file-submit' => 'Sí',
'revdelete-selected' => "'''{{PLURAL:$2|Revisión aseñalá e|Revisionis aseñalás de}} '''[[:$1]]''':'''",
'logdelete-selected' => "'''{{PLURAL:$1|Eventu el rustrihu aseñalau|Eventus del rustrihu aseñalaus}}:'''",
'revdelete-text' => "'''Las revisionis esborrás entovia apaicirán nel estorial la páhina, peru el su continiu nu sedrá acesibri pal púbricu.'''
@@ -721,15 +725,17 @@ puei bel detallis nel [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rus
El restu e çahorilis desti güiqui sí tendrán premisu pa visoreal el continiu açonchau, i revertil el esborrau si es mestel, a nu sel que los alministraoris del güiqui crein una restrición aicional.",
'revdelete-legend' => 'Establecel restricionis de visibiliá',
'revdelete-hide-text' => 'Açonchal el testu la revisión',
+'revdelete-hide-image' => 'Açonchal el continiu el archivu',
'revdelete-hide-name' => 'Açonchal ación i ohetivu',
'revdelete-hide-comment' => 'Açonchal síntesis la eición',
'revdelete-hide-user' => 'Açonchal nombri d´usuáriu/IP el eitol',
'revdelete-hide-restricted' => 'Tamién aprical estus tarugus a los çahorilis i atarugal esta entrihazi',
+'revdelete-radio-set' => 'Sí',
+'revdelete-radio-unset' => 'Nu',
'revdelete-suppress' => 'Esborral tamién los datus los çahorilis',
-'revdelete-hide-image' => 'Açonchal el continiu el archivu',
'revdelete-unsuppress' => 'Esborral restricionis enas revisionis arrecuperás',
'revdelete-log' => 'Razón:',
-'revdelete-submit' => 'Aprical a la revisión aseñalá',
+'revdelete-submit' => 'Aprical a {{PLURAL:$1|la revisión aseñalá|las revisionis aseñalás}}',
'revdelete-logentry' => 'chambá la visibiliá la revisión pa [[$1]]',
'logdelete-logentry' => "chambá la visibiliá d'eventus de [[$1]]",
'revdelete-success' => "'''Visibiliá revisionis chambá.'''",
@@ -746,6 +752,7 @@ El restu e çahorilis desti güiqui sí tendrán premisu pa visoreal el continiu
'revdelete-unhid' => 'esaçonchal $1',
'revdelete-log-message' => '$1 de $2 {{PLURAL:$2|revisión|revisionis}}',
'logdelete-log-message' => '$1 de $2 {{PLURAL:$2|eventu|eventus}}',
+'revdelete-edit-reasonlist' => 'Eital razonis del esborrau',
# Suppression log
'suppressionlogtext' => 'Embahu se muestra una lista colos esborraus i tarugus mas nuevus, encruyendu conteniu açonchau polos çahorilis. Guipai la [[Special:IPBlockList|lista e tarugus a IP]] pa visoreal una lista colos tarugus ativus atualmenti.',
@@ -783,21 +790,8 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'difference' => '(Deferéncias entri las revisionis)',
'lineno' => 'Línia $1:',
'compareselectedversions' => 'Comparal velsionis aseñalás',
-'visualcomparison' => 'Comparáncia visual',
'editundo' => 'esjazel',
'diff-multi' => '(Nu se {{PLURAL:$1|muestra una revisión entelmeya|muestran $1 revisionis entelmeyas}}.)',
-'diff-movedto' => 'muau a $1',
-'diff-added' => 'añiíu $1',
-'diff-changedto' => 'escambiau a $1',
-'diff-removed' => '$1 esborrau',
-'diff-changedfrom' => 'escambiau pol $1',
-'diff-src' => 'cóigu',
-'diff-width' => 'anchón',
-'diff-height' => 'artu',
-'diff-form' => "un '''holmuláriu'''",
-'diff-img' => "una '''imagin'''",
-'diff-font' => "'''huenti'''",
-'diff-big' => "'''grandi'''",
# Search results
'searchresults' => 'Landeal resurtaus',
@@ -805,30 +799,26 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'searchresulttext' => 'Pa mas enhormación al tentu landeal en {{SITENAME}}, vaiti a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'As landeau \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tolos artículus que prencipian pol "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tolos artículus que atihan a "$1"]])',
'searchsubtitleinvalid' => "Landeasti '''$1'''",
-'noexactmatch' => "'''Nu desisti denguna páhina e nombri \"\$1\".''' Pueis [[:\$1|criala tú]].",
-'noexactmatch-nocreate' => "'''Nu desisti denguna páhina con el nombri \"\$1\".'''",
'titlematches' => 'Conciéncias con el entítulu el artículu',
'notitlematches' => 'Nu ai artículus llamaus asina',
'textmatches' => 'Conciéncias con el testu el artículu',
'notextmatches' => 'Nu desistin conciéncias con el testu el artículu',
-'prevn' => '$1 anterioris',
-'nextn' => '$1 siguientis',
+'prevn' => '{{PLURAL:$1|$1 anterioris}}',
+'nextn' => '{{PLURAL:$1|$1 siguientis}}',
'prevn-title' => 'Anterioris $1 {{PLURAL:$1|resurtau|resurtaus}}',
'nextn-title' => 'Siguientis $1 {{PLURAL:$1|resurtau|resurtaus}}',
'shown-title' => 'Muestral $1 {{PLURAL:$1|resurtau|resurtaus}} pol página',
-'viewprevnext' => 'Vel ($1) ($2) ($3)',
+'viewprevnext' => 'Vel ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Ocionis de landeu',
'searchmenu-new' => "'''Crial el artículu \"[[:\$1]]\"'''",
'searchhelp-url' => 'Help:Continius',
-'searchprofile-project' => 'Páginas del proyeutu',
-'searchprofile-images' => 'Archivus',
+'searchprofile-images' => 'Murtimeya',
'searchprofile-everything' => 'Tó',
'searchprofile-advanced' => 'Avançau',
'searchprofile-articles-tooltip' => 'Landeal en $1',
'searchprofile-project-tooltip' => 'Landeal en $1',
'searchprofile-images-tooltip' => 'Landeal archivus',
'searchprofile-everything-tooltip' => 'Landeal tol conteniu (encruyendu carabas)',
-'prefs-search-nscustom' => 'Landeal espácius nombri pressonalizaus:',
'search-result-size' => '$1 ({{PLURAL:$2|1 letra|$2 letras}})',
'search-result-score' => 'Emportáncia: $1%',
'search-redirect' => '(rederihil $1)',
@@ -843,7 +833,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'searchall' => 'tó',
'showingresults' => "Embahu se {{PLURAL:$1|muestra '''1''' resurtau qu'esmiença|muestran hata '''$1''' resurtaus qu'esmiençan}} pol #'''$2'''.",
'showingresultsnum' => "Embahu se {{PLURAL:$3|muestra '''1''' resurtau qu'esmiença|muestran'''$3''' resurtaus qu'esmiençan}} pol #'''$2'''.",
-'showingresultstotal' => "Muestrandu embahu {{PLURAL:$4|resurtau '''$1''' de '''$3'''|resurtaus '''$1 - $2''' de '''$3'''}}",
'nonefound' => "'''Nota''': Solu se busca en angunus espacius de nombris pol defetu. Preba a escrebil el prefihu ''all:'' nel tu landeu pa landeal tol conteniu (encruyendu carabas, prantillas...), u gasta el espaciu de nombri deseau cumu prefihu.",
'powersearch' => 'Landeal',
'powersearch-legend' => 'Landeu avançau',
@@ -853,47 +842,37 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'search-external' => 'Landeu estelnu',
'searchdisabled' => 'Los landeus en {{SITENAME}} están temporalmenti desativaus. Mentris tantu, pueis landeal meyanti landerus esternus, inque ten en cuenta que los sus éndicis concernientis a {{SITENAME}} puein nu estal atualizaus.',
+# Quickbar
+'qbsettings' => 'Preferéncias la "Quickbar"',
+'qbsettings-none' => 'Dengunu',
+'qbsettings-fixedleft' => 'Asiahau a la gocha',
+'qbsettings-fixedright' => 'Asiahau a la derecha',
+'qbsettings-floatingleft' => 'Frotanti ena gocha',
+'qbsettings-floatingright' => 'Frotanti ena derecha',
+
# Preferences page
'preferences' => 'Preferéncias',
'mypreferences' => 'Las mis preferéncias',
'prefs-edits' => "Númiru d'eicionis:",
'prefsnologin' => "Nu t'alcuentras rustriu",
'prefsnologintext' => 'Ebis estal [[Special:UserLogin|rustriu]] pa chambal las tus preferéncias.',
-'prefsreset' => "S'an restaurau las preferéncias a los valoris pol defetu.",
-'qbsettings' => 'Preferéncias la "Quickbar"',
-'qbsettings-none' => 'Dengunu',
-'qbsettings-fixedleft' => 'Asiahau a la gocha',
-'qbsettings-fixedright' => 'Asiahau a la derecha',
-'qbsettings-floatingleft' => 'Frotanti ena gocha',
-'qbsettings-floatingright' => 'Frotanti ena derecha',
'changepassword' => 'Chambal consínia',
-'skin' => 'Aparéncia',
+'prefs-skin' => 'Aparéncia',
'skin-preview' => 'Previsoreal',
-'math' => 'Hórmulas',
-'dateformat' => 'Hormatu e fecha',
+'prefs-math' => 'Hórmulas',
'datedefault' => 'Sin preferéncias',
-'datetime' => 'Fecha i ora',
-'math_failure' => 'Nu es posibri entendel',
-'math_unknown_error' => 'marru andarriu',
-'math_unknown_function' => 'hunción andarria',
-'math_lexing_error' => 'marru lésicu',
-'math_syntax_error' => 'marru ena sintasis',
-'math_image_error' => 'Marru convirtiendu a PNG; compreba que latex, dvips, gs, i convert estén corretamenti istalaus',
-'math_bad_tmpdir' => 'Nu es posibri escribil u crial el diretoriu temporal de <em>math</em>',
-'math_bad_output' => 'Nu es posibri escribil u crial el diretoriu e salia e <em>math</em>',
-'math_notexvc' => 'Farta el ehecutabri e <strong>texvc</strong>; pol favol, lei <em>math/README</em> pa configuralu.',
+'prefs-datetime' => 'Fecha i ora',
'prefs-personal' => 'Datus el usuáriu',
'prefs-rc' => 'Úrtimus chambus',
'prefs-watchlist' => 'Lista e seguimientu',
'prefs-watchlist-days' => 'Máisimu númeru e dias a muestral ena lista e seguimientu:',
-'prefs-watchlist-days-max' => '(máissimu 7 dias)',
+'prefs-watchlist-days-max' => 'Máisimu 7 dias',
'prefs-watchlist-edits' => 'Númeru máisimu e chambus a muestral ena lista e seguimientu umentá:',
-'prefs-watchlist-edits-max' => '(númeru máissimu: 1000)',
'prefs-misc' => 'Bandallu (una mihina e tó)',
'prefs-resetpass' => 'Escambial consínia',
'saveprefs' => 'Emburacal',
'resetprefs' => 'Esborral los chambus nu emburacaus',
-'textboxsize' => 'Eitandu',
+'prefs-editing' => 'Eitandu',
'prefs-edit-boxsize' => "Grandol de la ventana d'eición.",
'rows' => 'Filas:',
'columns' => 'Colunas:',
@@ -903,13 +882,11 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'contextchars' => 'Carateris de testu pol línia:',
'stub-threshold' => 'Arrayu superiol pa consieral cumu <a href="#" class="stub">atihu a prencipiu</a> (bytes):',
'recentchangesdays' => 'Númeru e dias a muestral en "úrtimus chambus":',
-'recentchangesdays-max' => '(máissimu $1 {{PLURAL:$1|dia|dias}})',
+'recentchangesdays-max' => 'Máissimu $1 {{PLURAL:$1|dia|dias}}',
'recentchangescount' => 'Númeru d´eicionis a muestral en "úrtimus chambus":',
'savedprefs' => 'S´an emburacau las tus preferéncias.',
'timezonelegend' => 'Zona orária',
-'timezonetext' => '¹Númeru d´oras que ai entri la tu ora local i la ora el sirviol (UTC).',
'localtime' => 'Ora local',
-'timezoneselect' => 'Zona orária:',
'timezoneoffset' => 'Deferéncia oraria¹:',
'servertime' => 'Ora del sirviol:',
'guesstimezone' => 'Estrael la ora el escrucaol',
@@ -928,12 +905,32 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'prefs-namespaces' => 'Espáciu nombris',
'defaultns' => 'Landeal nestus "espacius de nombris" pol defeutu:',
'default' => 'defeutu',
-'files' => 'Archivus',
+'prefs-files' => 'Archivus',
'prefs-custom-css' => 'CSS pressonalizau',
'prefs-custom-js' => 'JS pressonalizau',
+'youremail' => 'Email:',
+'username' => "Nombri d'usuáriu:",
+'uid' => "ID d'usuáriu:",
+'prefs-memberingroups' => 'Miembru de {{PLURAL:$1|grupu|groupus}}:',
+'yourrealname' => 'Nombri verdaeru:',
+'yourlanguage' => 'Palra:',
+'yourvariant' => 'Varianti:',
+'yournick' => 'Moti:',
+'badsig' => 'Nu se premiti esa firma; compreba las etiquetas HTML.',
+'badsiglength' => 'El tu moti es mu largu.
+Ebi tenel menus de $1 {{PLURAL:$1|caratel|carateris}}.',
+'yourgender' => 'Héneru:',
+'gender-unknown' => 'Nu especificau',
+'gender-male' => 'Ombri',
+'gender-female' => 'Mujel',
+'email' => 'Email',
+'prefs-help-realname' => "El nombri rial es ocional, peru nel chascu en que lo escribas, se gastará p'atribuilti el tu labutu.",
+'prefs-help-email' => "Es ocional escrebil el tu email, peru es mestel pa crial una nueva consínia si t'orvias de l'antigua.
+Amás premiti qu'otrus ussuárius contatin contigu pol mé la tu página d'ussuáriu u caraba, sin sel mestel muestral la tu entiá.",
+'prefs-help-email-required' => 'Es mestel la direción email.',
# User rights
-'userrights' => "Alministral premisus d'usuárius", # Not used as normal message but as header for the special page itself
+'userrights' => "Alministral premisus d'usuárius",
'userrights-lookup-user' => "Alministral grupus d'usuárius",
'userrights-user-editname' => 'Escrebi un nombri d´usuáriu:',
'editusergroup' => "Eital grupus d'usuárius",
@@ -1054,6 +1051,8 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
# Recent changes linked
'recentchangeslinked' => 'Chambus relacionaus',
+'recentchangeslinked-feed' => 'Chambus relacionaus',
+'recentchangeslinked-toolbox' => 'Chambus relacionaus',
'recentchangeslinked-title' => 'Chambus relacionaus con "$1"',
'recentchangeslinked-noresult' => 'Nu ai chambus enas páhinas atihás nel períu lihiu.',
'recentchangeslinked-summary' => "Nesta páhina especial ai una lista colos úrtimus chambus en páhinas qu'están atihás dendi una páhina concreta (u en miembrus de una detelminá categoria).
@@ -1064,7 +1063,6 @@ Las páhinas de la tu [[Special:Watchlist|lista e seguimientu]] están en '''neg
# Upload
'upload' => 'Empuntal archivu',
'uploadbtn' => 'Empuntal archivu',
-'reupload' => 'Re-empuntal',
'reuploaddesc' => 'Cancelal el empuntu i gorvel al hormuláriu.',
'uploadnologin' => 'Nu estás rustriu',
'uploadnologintext' => 'Ebis estal [[Special:UserLogin|rustriu]]
@@ -1112,7 +1110,6 @@ Pol favol, compreba que realmenti quieis chambal el archivu '''<tt>[[:$1]]</tt>'
* Nombri el archivu empuntau: '''<tt>[[:$1]]</tt>'''
* Nombri el archivu ya desistenti: '''<tt>[[:$2]]</tt>'''
Pol favol, lihi un nombri deferenti.",
-'fileexists-thumb' => "<center>'''Esta imáhin ya desisti'''</center>",
'fileexists-thumbnail-yes' => "El archivu paci sel una imahin chiquenina ''(cuairu)''. [[$1|thumb]]
Pol favol, compreba qu'el archivu '''<tt>[[:$1]]</tt>''' nu es la mesma imahin.
Nel chascu en que huera la mesm imahin (inque seya en grandi) nu es mestel qu'empuntis el tu archivu.",
@@ -1132,7 +1129,6 @@ Si acontinas queriendu empuntal el archivu, vai alatrás i escambia el nombri el
'uploaddisabled' => 'Empuntus desativaus',
'uploaddisabledtext' => "El empuntu d'archivus está desativau.",
'uploadscripted' => 'Esti archivu contieni script u cóigu HTML que puei sel mal entelpretau pol un escrucaol.',
-'uploadcorrupt' => 'Marru cola estensión el archivu. Pol favol, compreba el archivu i empúntalu otra vezi.',
'uploadvirus' => 'El archivu tiini un virus! Detallis: $1',
'sourcefilename' => 'Nombri orihinal:',
'destfilename' => 'Nombri e destinu:',
@@ -1162,6 +1158,7 @@ Si el pobrema acontina, contauta con un [[Special:ListUsers/sysop|çahoril]].',
'upload-curl-error28-text' => "La páhina está tardandu abondu en contestal. Pol favol, compreba qu'el sirviol hunciona, aspera un pocu i güervi a ententalu. Quiciás prefieras ententalu n'otru momentu con menus carga.",
'license' => 'Licéncia:',
+'license-header' => 'Licéncia:',
'nolicense' => 'Dengunu selecionau',
'license-nopreview' => '(Nu se puei previsoreal)',
'upload_source_url' => ' (una URL vália i acesibri)',
@@ -1182,6 +1179,7 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
'listfiles_count' => 'Velsionis',
# File description page
+'file-anchor-link' => 'Archivu',
'filehist' => 'Estorial el archivu',
'filehist-help' => 'Pursa nuna fecha/ora pa vel cumu era el archivu nesi momentu.',
'filehist-deleteall' => 'esborral tós',
@@ -1200,14 +1198,10 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
'linkstoimage' => '{{PLURAL:$1|El siguienti artículu atiha|Los siguientis $1 artículus atihan}} a esti archivu:',
'nolinkstoimage' => 'Nu ai denguna páhina qu´atihi a esti archivu.',
'morelinkstoimage' => 'Guipal [[Special:WhatLinksHere/$1|mas atijus]] a esti archivu.',
-'sharedupload' => 'Esti archivu procei de $1 i puei gastalsi dendi otrus proyeutus.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Pa mas enhormación, puei consurtal $1.',
-'shareduploadwiki-linktext' => 'páhina e descrición el archivu',
-'noimage' => 'Nu dessisti dengún archivu anombrau assina, peru pueis $1.',
-'noimage-linktext' => 'empuntal unu',
+'sharedupload' => 'Esti archivu procei de $1 i puei gastalsi dendi otrus proyeutus.',
'uploadnewversion-linktext' => 'Empuntal una nueva velsión d´esti archivu',
-'shared-repo-from' => 'dendi $1', # $1 is the repository name
-'shared-repo' => 'un repossitóriu compartiu', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'dendi $1',
+'shared-repo' => 'un repossitóriu compartiu',
# File reversion
'filerevert' => 'Revertil $1',
@@ -1284,8 +1278,8 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
'brokenredirects' => 'Redirecionis eschangás',
'brokenredirectstext' => 'Las siguientis redirecionis atijan a páginas que nu dessistin:',
-'brokenredirects-edit' => '(eital)',
-'brokenredirects-delete' => '(esborral)',
+'brokenredirects-edit' => 'eital',
+'brokenredirects-delete' => 'esborral',
'withoutinterwiki' => 'Páhinas sin atihus "EntelGüiqui"',
'withoutinterwiki-summary' => 'Las siguientis páhinas nu atihan a velsionis en otras palras:',
@@ -1505,7 +1499,7 @@ Nel chascu en que nu vesitis el artículu, nu se te hazrán mas notificacionis.
--
Pa hazel chambus ena tu lista e seguimientu, vesita
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Ayua la Güiquipeya:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1550,8 +1544,8 @@ Consurta $2 pa vel los úrtimus esborraus.',
'alreadyrolled' => 'Nu es posibri revertil la úrtima eición de [[:$1]], hecha pol [[User:$2|$2]] ([[User talk:$2|Caraba]]); alguien ya á eitau u revertiu la páhina.
La úrtima eición á siu hecha pol [[User:$3|$3]] ([[User talk:$3|Caraba]]).',
-'editcomment' => "La síntesis la eición hue: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Án siu revertias las eicionis de [[Special:Contributions/$2|$2]] ([[User talk:$2|Caraba]]); chambau a la úrtima velsión de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "La síntesis la eición hue: \"''\$1''\".",
+'revertpage' => 'Án siu revertias las eicionis de [[Special:Contributions/$2|$2]] ([[User talk:$2|Caraba]]); chambau a la úrtima velsión de [[User:$1|$1]]',
'rollback-success' => 'Revertias las eicionis de $1; chambau a la úrtima velsión de $2.',
'sessionfailure' => "Paci qu'ai un pobrema cola tu sesión; pol precaución
s'á cancelau l'ación solicitá. Pursa nel botón \"Atrás\" del
@@ -1570,7 +1564,6 @@ tu escrucaol pa cargal otra vezi la páhina i güervi a ententalu.",
'protectexpiry' => 'Acabiha:',
'protect_expiry_invalid' => 'La fecha e cauciá nu es correta.',
'protect_expiry_old' => 'La fecha e cauciá está nel pasau.',
-'protect-unchain' => 'Desatarugal los premisus pa movel páhinas',
'protect-text' => "Aquí pueis vel i chambal el nivel de proteción la páhina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nu pueis chambal los nivelis de proteción mentris estés atarugau. Velaquí las ocionis atulais la páhina '''$1''':",
'protect-locked-dblock' => "Nu se puein chambal los nivelis de proteción ebiu a un tarugu ativu ena basi e datus.
@@ -1588,7 +1581,7 @@ Velaquí las ocionis atualis la páhina '''$1''':",
'protect-cascade' => 'Protehel las páhinas encluias nesta páhina (proteción en "cascá")',
'protect-cantedit' => "Nu t'es posibri chambal el nivel de proteción desta páhina ebiu a que nu tienis los premisus nesezárius pa eitala.",
'protect-edit-reasonlist' => 'Eital radonis de proteción',
-'protect-expiry-options' => '1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 mesis:3 months,6 mesis:6 months,1 añu:1 year,enfinitu:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 mesis:3 months,6 mesis:6 months,1 añu:1 year,enfinitu:infinite',
'restriction-type' => 'Premisus:',
'restriction-level' => 'Nivel de restrición:',
'minimum-size' => 'Grandol mén',
@@ -1656,7 +1649,7 @@ $1',
'contributions-title' => 'Contribucionis del usuáriu a $1',
'mycontris' => 'Los mis endirguis',
'contribsub2' => 'Pa $1 ($2)',
-'nocontribs' => "Nu s'alcuentrun chambus con esus criterius.", # Optional parameter: $1 is the user name
+'nocontribs' => "Nu s'alcuentrun chambus con esus criterius.",
'uctop' => '(úrtimu chambu)',
'month' => 'Mes:',
'year' => 'Añu:',
@@ -1664,7 +1657,9 @@ $1',
'sp-contributions-newbies' => 'Solu muestral los endirguis de cuentas nuevas',
'sp-contributions-newbies-sub' => 'Pa nuevas cuentas',
'sp-contributions-blocklog' => 'Rustrihu e tarugus',
+'sp-contributions-deleted' => 'Contribucionis el usuáriu esborrás',
'sp-contributions-logs' => 'rustrijus',
+'sp-contributions-talk' => 'Caraba',
'sp-contributions-search' => 'Landeal pol endirguis',
'sp-contributions-username' => 'IP u nombri d´usuáriu:',
'sp-contributions-submit' => 'Landeal',
@@ -1713,7 +1708,7 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
'ipbenableautoblock' => "Atarugal autumáticamenti la direción IP gastá pol esti usuáriu, i cualisquiel IP posteriol endi la cual trati d'eital",
'ipbsubmit' => 'Atarugal a esti usuáriu',
'ipbother' => 'Otra ora:',
-'ipboptions' => '2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 mesis:3 months,6 mesis:6 months,1 añu:1 year,enfinitu:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 mesis:3 months,6 mesis:6 months,1 añu:1 year,enfinitu:infinite',
'ipbotheroption' => 'otru',
'ipbotherreason' => 'Anguna otra razón?:',
'ipbhidename' => 'Açonchal nombri d\'usuáriu nel "rustrihu e tarugus", "lista e tarugus ativus" i "lista d\'usuárius"',
@@ -1741,7 +1736,7 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
'ipblocklist-submit' => 'Landeal',
'blocklistline' => '$1, $2 ataruga a $3 ($4)',
'infiniteblock' => 'enfinitu',
-'expiringblock' => 'acabiha $1',
+'expiringblock' => 'acabiha $1 $2',
'anononlyblock' => 'solu anón.',
'noautoblockblock' => 'autu-tarugu esativau',
'createaccountblock' => 'criaeru e páhinas atarugau',
@@ -1754,7 +1749,6 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
'contribslink' => 'endirguis',
'autoblocker' => 'Autu-atarugau ebiu a que la tu IP á siu gastá hazi pocu pol "[[User:$1|$1]]". La razón el tarugu de $1 es: "$2"',
'blocklogpage' => 'Rustrihu e tarugus',
-'blocklog-fulllog' => 'Rustriju de tarugus compretu',
'blocklogentry' => 'atarugó a "[[$1]]" $3 duranti un praçu e "$2"',
'unblocklogentry' => '$1 desatarugau',
'block-log-flags-anononly' => 'sólu usuárius anónimus',
@@ -1827,7 +1821,7 @@ En dambus los dos chascus, si lo deseas, tendrás que movel u mestural la páhin
'move-watch' => 'Vehilal esta páhina',
'movepagebtn' => 'Movel páhina',
'pagemovedsub' => 'S´á moviu la páhina',
-'movepage-moved' => "S'á muau '''\"\$1\" a \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "S'á muau '''\"\$1\" a \"\$2\"'''",
'movepage-moved-redirect' => 'Á siu criá una redireción.',
'articleexists' => 'Ya desisti una páhina con esi nombri u nu se premiti el nombri qu´as lihiu.
Pol favol, escrebi otru entítulu.',
@@ -1870,8 +1864,6 @@ Ya desisti la páhina "[[:$1]]". Te petaria esborrala pa premitil el treslau?',
'allmessagestext' => 'Esta es una lista e mensahis del sistema disponibris nel espaciu e nombris MediaWiki:
Pol favol, vesita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [http://translatewiki.net translatewiki.net] si quieis colabutal.',
'allmessagesnotsupportedDB' => "Nu se puei gastal esta páhina polque '''\$wgUseDatabaseMessages''' está desativau.",
-'allmessagesfilter' => 'Filtru e mensahis:',
-'allmessagesmodified' => 'Solu muestral chambaus',
# Thumbnails
'thumbnail-more' => 'Agrandal',
@@ -1945,6 +1937,7 @@ Pol favol, gasta el botón "previsoreal" enantis d\'emburacal.',
'tooltip-search-fulltext' => 'Landeal páginas con esti testu',
'tooltip-p-logo' => 'Páhina prencipal',
'tooltip-n-mainpage' => 'Vesital la Página Prencipal',
+'tooltip-n-mainpage-description' => 'Vessital la página prencipal',
'tooltip-n-portal' => 'Al tentu el proyeutu, lo que pueis hazel, ondi alcuentral cosas',
'tooltip-n-currentevents' => 'Enhormación de contestu al tentu acontecimientus atualis',
'tooltip-n-recentchanges' => 'La lista e los úrtimus chambus nesti güiqui.',
@@ -1993,7 +1986,7 @@ Pol favol, gasta el botón "previsoreal" enantis d\'emburacal.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ussuáriu anónimu|Ussuárius anónimus}} en {{SITENAME}}',
'siteuser' => '{{SITENAME}} usuáriu $1',
-'lastmodifiedatby' => 'Esta páhina se chambó pol úrtima vezi a las $2, el dia $1 pol $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Esta páhina se chambó pol úrtima vezi a las $2, el dia $1 pol $3.',
'othercontribs' => 'Basau nun labutu e $1.',
'others' => 'otrus',
'siteusers' => '{{SITENAME}} usuáriu/s $1',
@@ -2024,11 +2017,22 @@ Pol favol, gasta el botón "previsoreal" enantis d\'emburacal.',
'mw_math_modern' => 'Recomendau pa escrucaoris moernus',
'mw_math_mathml' => 'MathML si es posibri (esperimental)',
+# Math errors
+'math_failure' => 'Nu es posibri entendel',
+'math_unknown_error' => 'marru andarriu',
+'math_unknown_function' => 'hunción andarria',
+'math_lexing_error' => 'marru lésicu',
+'math_syntax_error' => 'marru ena sintasis',
+'math_image_error' => 'Marru convirtiendu a PNG; compreba que latex, dvips, gs, i convert estén corretamenti istalaus',
+'math_bad_tmpdir' => 'Nu es posibri escribil u crial el diretoriu temporal de <em>math</em>',
+'math_bad_output' => 'Nu es posibri escribil u crial el diretoriu e salia e <em>math</em>',
+'math_notexvc' => 'Farta el ehecutabri e <strong>texvc</strong>; pol favol, lei <em>math/README</em> pa configuralu.',
+
# Patrolling
'markaspatrolleddiff' => 'Aseñalal cumu patrullau',
'markaspatrolledtext' => 'Aseñalal esti artículu cumu patrullau',
'markedaspatrolled' => 'Aseñalal cumu patrullau',
-'markedaspatrolledtext' => 'La revisión selecioná á siu aseñalá cumu patrullá.',
+'markedaspatrolledtext' => 'La revisión asseñalá á siu marcá cumu patrullá.',
'rcpatroldisabled' => "Patrulla d'Úrtimus Chambus desativá",
'rcpatroldisabledtext' => "La capaciá pa patrullal los Úrtimus Chambus está desativá n'esti momentu.",
'markedaspatrollederror' => 'Nu se puei aseñalal cumu patrullá',
@@ -2057,9 +2061,6 @@ $1',
'previousdiff' => '← Def anteriol',
'nextdiff' => 'Siguienti def →',
-# Visual comparison
-'visual-comparison' => 'Comparáncia vissual',
-
# Media information
'thumbsize' => 'Grandol el cuairu:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
@@ -2102,7 +2103,7 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Anchón',
@@ -2196,13 +2197,13 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
'exif-unknowndate' => 'Fecha andarria',
-'exif-orientation-2' => 'Gorteau orizontalmenti', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Repiau 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Gorteau verticalmenti', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Repiau 90° CCW i gorteau verticalmenti', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Repiau 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Repiau 90° CW i gorteau verticalmenti', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Repiau 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-2' => 'Gorteau orizontalmenti',
+'exif-orientation-3' => 'Repiau 180°',
+'exif-orientation-4' => 'Gorteau verticalmenti',
+'exif-orientation-5' => 'Repiau 90° CCW i gorteau verticalmenti',
+'exif-orientation-6' => 'Repiau 90° CW',
+'exif-orientation-7' => 'Repiau 90° CW i gorteau verticalmenti',
+'exif-orientation-8' => 'Repiau 90° CCW',
'exif-planarconfiguration-1' => 'hormatu gruesu',
'exif-planarconfiguration-2' => 'hormatu pranu',
@@ -2302,7 +2303,7 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
'exif-gpsmeasuremode-2' => 'Miia bidimensional',
'exif-gpsmeasuremode-3' => 'Miia tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilómetrus pol ora',
'exif-gpsspeed-m' => 'Millas pol ora',
'exif-gpsspeed-n' => 'Ñus',
@@ -2456,7 +2457,7 @@ Pol favol, confirma si rialmenti quieis gorvel a crial la páhina.",
'unknown_extension_tag' => 'estensión andarria: "$1"',
# Special:Version
-'version' => 'Velsión', # Not used as normal message but as header for the special page itself
+'version' => 'Velsión',
'version-extensions' => 'Estensionis istalás',
'version-specialpages' => 'Páhinas especialis',
'version-variables' => 'Variabris',
@@ -2464,7 +2465,7 @@ Pol favol, confirma si rialmenti quieis gorvel a crial la páhina.",
'version-extension-functions' => "Huncionis d'estensionis",
'version-hook-name' => 'Nombri el Hook',
'version-hook-subscribedby' => 'Suscritu pol',
-'version-version' => 'Velsión',
+'version-version' => '(Velsión $1)',
'version-license' => 'Licéncia',
'version-software' => 'Software istalau',
'version-software-product' => 'Proutu',
diff --git a/languages/messages/MessagesFa.php b/languages/messages/MessagesFa.php
index 0f3fc458..a15dd1ed 100644
--- a/languages/messages/MessagesFa.php
+++ b/languages/messages/MessagesFa.php
@@ -7,10 +7,12 @@
* @ingroup Language
* @file
*
+ * @author Alnokta
* @author Asoxor
* @author Behdarvandyani
* @author Ebraminio
* @author Huji
+ * @author Ibrahim
* @author Ladsgroup
* @author Mardetanha
* @author Meisam
@@ -132,6 +134,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'جستجوی_پیوند' ),
'DeletedContributions' => array( 'مشارکت‌های_حذف_شده' ),
'Tags' => array( 'برچسب‌ها' ),
+ 'Activeusers' => array( 'کاربران_فعال' ),
);
@@ -245,7 +248,8 @@ $magicWords = array(
'toc' => array( '0', '__فهرست__', '__TOC__' ),
'noeditsection' => array( '0', '__بی‌بخش__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__بی‌عنوان__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'ماه', 'ماه‌کنونی', 'ماه_کنونی', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ماه', 'ماه‌کنونی', 'ماه_کنونی', 'ماه‌کنونی۲', 'ماه_کنونی۲', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ماه۱', 'ماه‌کنونی۱', 'ماه_کنونی۱', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'نام‌ماه', 'نام_ماه', 'نام‌ماه‌کنونی', 'نام_ماه_کنونی', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'نام‌ماه‌اضافه', 'نام_ماه_اضافه', 'نام‌ماه‌کنونی‌اضافه', 'نام_ماه_کنونی_اضافه', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'مخفف‌نام‌ماه', 'مخفف_نام_ماه', 'CURRENTMONTHABBREV' ),
@@ -255,7 +259,8 @@ $magicWords = array(
'currentyear' => array( '1', 'سال', 'سال‌کنونی', 'سال_کنونی', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'زمان', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ساعت', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'ماه‌محلی', 'ماه_محلی', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'ماه‌محلی', 'ماه_محلی', 'ماه‌محلی۲', 'ماه_محلی۲', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'ماه‌محلی۱', 'ماه_محلی۱', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'نام‌ماه‌محلی', 'نام_ماه_محلی', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'نام‌ماه‌محلی‌اضافه', 'نام_ماه_محلی_اضافه', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'مخفف‌ماه‌محلی', 'مخفف_ماه_محلی', 'LOCALMONTHABBREV' ),
@@ -318,11 +323,13 @@ $magicWords = array(
'int' => array( '0', 'محتوى:', 'INT:' ),
'sitename' => array( '1', 'نام‌وبگاه', 'نام_وبگاه', 'SITENAME' ),
'ns' => array( '0', 'فن:', 'NS:' ),
+ 'nse' => array( '0', 'فنم:', 'NSE:' ),
'localurl' => array( '0', 'نشانی:', 'LOCALURL:' ),
'localurle' => array( '0', 'نشانی‌نشانی:', 'LOCALURLE:' ),
'server' => array( '0', 'کارگذار', 'SERVER' ),
'servername' => array( '0', 'نام‌کارگذار', 'نام_کارگذار', 'SERVERNAME' ),
- 'scriptpath' => array( '0', 'مسیر', 'SCRIPTPATH' ),
+ 'scriptpath' => array( '0', 'مسیر', 'مسیر سند', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'مسیر سبک', 'STYLEPATH' ),
'grammar' => array( '0', 'دستورزبان:', 'GRAMMAR:' ),
'gender' => array( '0', 'جنسیت', 'GENDER:' ),
'notitleconvert' => array( '0', '__عنوان‌تبدیل‌نشده__', '__NOTITLECONVERT__', '__NOTC__' ),
@@ -337,7 +344,7 @@ $magicWords = array(
'revisionmonth' => array( '1', 'ماه‌نسخه', 'ماه_نسخه', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'سال‌نسخه', 'سال_نسخه', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'نشان‌زمان‌نسخه', 'نشان_زمان_نسخه', 'REVISIONTIMESTAMP' ),
- 'revisionuser' => array( 1, 'کاربرنسخه', 'REVISIONUSER'),
+ 'revisionuser' => array( '1', 'کاربرنسخه', 'REVISIONUSER' ),
'plural' => array( '0', 'جمع:', 'PLURAL:' ),
'fullurl' => array( '0', 'نشانی‌کامل:', 'FULLURL:' ),
'fullurle' => array( '0', 'نشانی‌نشانی‌کامل:', 'FULLURLE:' ),
@@ -349,7 +356,7 @@ $magicWords = array(
'displaytitle' => array( '1', 'عنوان‌ظاهری', 'عنوان_ظاهری', 'DISPLAYTITLE' ),
'rawsuffix' => array( '1', 'ع', 'R' ),
'newsectionlink' => array( '1', '__بخش‌جدید__', '__NEWSECTIONLINK__' ),
- 'nonewsectionlink' => array( 1, '__بی‌پیوندبخش__', '__NONEWSECTIONLINK__'),
+ 'nonewsectionlink' => array( '1', '__بی‌پیوندبخش__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'نسخه‌کنونی', 'نسخه_کنونی', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'کدنشانی:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'کدلنگر:', 'ANCHORENCODE' ),
@@ -375,7 +382,7 @@ $magicWords = array(
'numberingroup' => array( '1', 'تعداددرگروه', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__تغییرمسیرثابت__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'سطح‌حغاطت', 'سطح_حفاظت', 'PROTECTIONLEVEL' ),
- 'formatdate' => array( 0, 'آرایش‌تاریخ', 'آرایش_تاریخ', 'formatdate', 'dateformat'),
+ 'formatdate' => array( '0', 'آرایش‌تاریخ', 'آرایش_تاریخ', 'formatdate', 'dateformat' ),
);
# Harakat are intentionally not included in the linkTrail. Their addition should
@@ -421,6 +428,7 @@ $messages = array(
'tog-enotifminoredits' => 'برای تغییرات جزئی در صفحه‌ها هم به من ایمیل بزن.',
'tog-enotifrevealaddr' => 'نشانی پست الکترونیکی من در نامه‌های اطلاع‌رسانی قید شود',
'tog-shownumberswatching' => 'نشان‌دادن شمار کاربران پی‌گیری‌کننده',
+'tog-oldsig' => 'پیش‌نمایش امضای موجود:',
'tog-fancysig' => 'امضا را به صورت ویکی‌متن در نظر بگیر (بدون درج خودکار پیوند)',
'tog-externaleditor' => 'به‌طور پیش‌فرض از ویرایشگر خارجی استفاده شود',
'tog-externaldiff' => 'استفاده از تفاوت‌گیر (diff) خارجی به‌طور پیش‌فرض.',
@@ -443,6 +451,13 @@ $messages = array(
'underline-never' => 'هرگز',
'underline-default' => 'پیش‌فرض مرورگر',
+# Font style option in Special:Preferences
+'editfont-style' => 'سبک قلم جعبهٔ ویرایش:',
+'editfont-default' => 'پیش‌فرض مرورگر',
+'editfont-monospace' => 'قلم با فاصله ثابت',
+'editfont-sansserif' => 'قلم بدون گوشه',
+'editfont-serif' => 'قلم گوشه‌دار',
+
# Dates
'sunday' => 'یک‌شنبه',
'monday' => 'دوشنبه',
@@ -502,7 +517,7 @@ $messages = array(
'category-media-header' => 'پرونده‌های ردهٔ «$1»',
'category-empty' => 'این رده شامل هیچ صفحه یا پرونده‌ای نمی‌شود.',
'hidden-categories' => '{{PLURAL:$1|ردهٔ پنهان|رده‌های پنهان}}',
-'hidden-category-category' => 'رده‌های پنهان', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'رده‌های پنهان',
'category-subcat-count' => '{{PLURAL:$2|این رده تنها حاوی زیرردهٔ زیر است.|{{PLURAL:$1|این زیررده|این $1 زیررده}} در این رده قرار {{PLURAL:$1|دارد|دارند}}؛ این رده در کل حاوی $2 زیررده است.}}',
'category-subcat-count-limited' => 'این رده شامل {{PLURAL:$1|یک زیررده|$1 زیررده}} زیر می‌باشد.',
'category-article-count' => '{{PLURAL:$2|این رده تنها حاوی صفحهٔ زیر است.|{{PLURAL:$1|این صفحه|این $1 صفحه}} در این رده قرار {{PLURAL:$1|دارد|دارند}}؛ این رده در کل حاوی $2 صفحه است.}}',
@@ -510,6 +525,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|این رده تنها حاوی پروندهٔ زیر است.|{{PLURAL:$1|این پرونده|این $1 پرونده}} در این رده قرار {{PLURAL:$1|دارد|دارند}}؛ این رده در کل حاوی $2 پرونده است.}}',
'category-file-count-limited' => '{{PLURAL:$1|پروندهٔ|$1 پروندهٔ}} زیر در ردهٔ فعلی قرار دارند.',
'listingcontinuesabbrev' => '(ادامه)',
+'index-category' => 'صفحه‌های نمایه شده',
+'noindex-category' => 'صفحه‌های نمایه نشده',
'mainpagetext' => "'''نرم‌افزار ویکی با موفقیت نصب شد.'''",
'mainpagedocfooter' => 'از [http://meta.wikimedia.org/wiki/Help:Contents راهنمای کاربران]
@@ -521,10 +538,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki پرسش‌های متداول]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce فهرست رایانامه نسخه‌های مدیاویکی]',
-'about' => 'درباره',
-'article' => 'صفحهٔ محتوا',
-'newwindow' => '(در پنجرهٔ جدید باز می‌شود)',
-'cancel' => 'لغو',
+'about' => 'درباره',
+'article' => 'صفحهٔ محتوا',
+'newwindow' => '(در پنجرهٔ جدید باز می‌شود)',
+'cancel' => 'لغو',
+'moredotdotdot' => 'بیشتر...',
+'mypage' => 'صفحهٔ من',
+'mytalk' => 'بحث من',
+'anontalk' => 'بحث برای این آی‌پی',
+'navigation' => 'گشتن',
+'and' => '&#32;و',
+
+# Cologne Blue skin
'qbfind' => 'یافتن',
'qbbrowse' => 'مرور',
'qbedit' => 'ویرایش',
@@ -532,15 +557,35 @@ $messages = array(
'qbpageinfo' => 'بافت',
'qbmyoptions' => 'صفحه‌های من',
'qbspecialpages' => 'صفحه‌های ویژه',
-'moredotdotdot' => 'بیشتر...',
-'mypage' => 'صفحهٔ من',
-'mytalk' => 'بحث من',
-'anontalk' => 'بحث برای این آی‌پی',
-'navigation' => 'گشتن',
-'and' => '&#32;و',
-
-# Metadata in edit box
-'metadata_help' => 'متاداده:',
+'faq' => 'سوال‌های متداول',
+'faqpage' => 'Project:سوال‌های متداول',
+
+# Vector skin
+'vector-action-addsection' => 'افزودن عنوان',
+'vector-action-delete' => 'حذف',
+'vector-action-move' => 'انتقال',
+'vector-action-protect' => 'محافظت',
+'vector-action-undelete' => 'احیا',
+'vector-action-unprotect' => 'به در آوردن از محافظت',
+'vector-namespace-category' => 'رده',
+'vector-namespace-help' => 'صفحهٔ راهنما',
+'vector-namespace-image' => 'پرونده',
+'vector-namespace-main' => 'صفحه',
+'vector-namespace-media' => 'صفحهٔ رسانه',
+'vector-namespace-mediawiki' => 'پیغام',
+'vector-namespace-project' => 'صفحهٔ پروژه',
+'vector-namespace-special' => 'صفحهٔ ویژه',
+'vector-namespace-talk' => 'بحث',
+'vector-namespace-template' => 'الگو',
+'vector-namespace-user' => 'صفحهٔ کاربر',
+'vector-view-create' => 'ایجاد',
+'vector-view-edit' => 'ویرایش',
+'vector-view-history' => 'نمایش تاریخچه',
+'vector-view-view' => 'خواندن',
+'vector-view-viewsource' => 'نمایش مبدأ',
+'actions' => 'عملکردها',
+'namespaces' => 'فضاهای نام',
+'variants' => 'گویش‌ها',
'errorpagetitle' => 'خطا',
'returnto' => 'بازگشت به $1.',
@@ -590,18 +635,22 @@ $messages = array(
'otherlanguages' => 'زبان‌های دیگر',
'redirectedfrom' => '(تغییر مسیر از $1)',
'redirectpagesub' => 'صفحهٔ تغییر مسیر',
-'lastmodifiedat' => 'این صفحه آخرین بار در $2، $1 تغییر یافته‌است.', # $1 date, $2 time
+'lastmodifiedat' => 'این صفحه آخرین بار در $2، $1 تغییر یافته‌است.',
'viewcount' => 'این صفحه {{PLURAL:$1|یک|$1}} بار دیده شده است.',
'protectedpage' => 'صفحهٔ محافظت‌شده',
'jumpto' => 'پرش به:',
'jumptonavigation' => 'ناوبری',
'jumptosearch' => 'جستجو',
+'view-pool-error' => 'شوربختانه کارسازها در حال حاضر دچار بار اضافی هستند.
+تعداد زیادی از کاربران تلاش می‌کنند که این صفحه را ببینند.
+لطفاً قبل از تلاش دوباره برای دیدن این صفحه مدتی صبر کنید.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'دربارهٔ {{SITENAME}}',
'aboutpage' => 'Project:درباره',
'copyright' => 'محتوا تحت اجازه‌نامهٔ $1 در دسترس است.',
-'copyrightpagename' => 'حق تکثیر {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:حق تکثیر',
'currentevents' => 'رویدادهای کنونی',
'currentevents-url' => 'Project:رویدادهای کنونی',
@@ -609,8 +658,6 @@ $messages = array(
'disclaimerpage' => 'Project:تکذیب‌نامهٔ عمومی',
'edithelp' => 'راهنمای ویرایش کردن',
'edithelppage' => 'Help:چگونه صفحه‌ها را ویرایش کنیم',
-'faq' => 'سوال‌های متداول',
-'faqpage' => 'Project:سوال‌های متداول',
'helppage' => 'Help:راهنما',
'mainpage' => 'صفحهٔ اصلی',
'mainpage-description' => 'صفحهٔ اصلی',
@@ -694,10 +741,6 @@ $messages = array(
این دستور از درون عملگر <span dir="ltr">$2</span> فرستاده شد
پایگاه داده این خطا را باز گرداند:
<div dir="ltr">$3: $4</div>',
-'noconnect' => 'شرمنده! ویکی ایراد فنی دارد و نمی‌تواند با کارگزار پایگاه داده تماس بگیرد.<br />
-$1',
-'nodb' => 'نمی‌توان پایگاه دادهٔ $1 را انتخاب کرد',
-'cachederror' => 'در زیر یک نسخهٔ بایگانی‌شدهٔ صفحهٔ درخواستی می‌آید، و ممکن است به‌روز نباشد.',
'laggedslavemode' => 'هشدار: صفحه ممکن است به‌روزرسانی‌های اخیر را شامل نگردد.',
'readonly' => 'پایگاه داده قفل شد',
'enterlockreason' => 'دلیلی برای قفل کردن ذکر کنید، و تقریبی از زمانی که قفل برداشته خواهد شد در آن بیاورید',
@@ -714,6 +757,8 @@ $1',
'readonly_lag' => 'پایگاه داده به طور خودکار قفل شده‌است تا نسخه‌های پشتیبان با نسخهٔ اصلی هماهنگ شوند.',
'internalerror' => 'خطای داخلی',
'internalerror_info' => 'خطای داخلی: $1',
+'fileappenderrorread' => 'در طی الحاق امکان خواندن «$1» وجود نداشت.',
+'fileappenderror' => 'نمی‌توان «$1» را به «$2» الحاق کرد.',
'filecopyerror' => 'نتوانستم از پروندهٔ «$1» روی «$2» نسخه‌برداری کنم.',
'filerenameerror' => 'نتوانستم پروندهٔ «$1» را به «$2» تغییر نام دهم.',
'filedeleteerror' => 'نتوانستم پروندهٔ «$1» را حذف کنم',
@@ -723,7 +768,7 @@ $1',
'unexpected' => 'مقدار غیرمنتظره: «$1»=«$2».',
'formerror' => 'خطا: نمی‌توان فرم را فرستاد',
'badarticleerror' => 'نمی‌توان این عمل را بر این صفحه انجام داد.',
-'cannotdelete' => 'امکان حذف صفحه یا تصویر مشخص شده وجود ندارد.
+'cannotdelete' => 'امکان حذف صفحه یا تصویر «$1» وجود ندارد.
ممکن است قبلاً فرد دیگری آن را حذف کرده باشد.',
'badtitle' => 'عنوان بد',
'badtitletext' => 'عنوان درخواستی نامعتبر، خالی، یا عنوانی بین زبانی یا بین‌ویکی‌ای با پیوند نادرست بود.',
@@ -758,7 +803,6 @@ $2',
'virus-unknownscanner' => 'ضدویروس ناشناخته:',
# Login and logout pages
-'logouttitle' => 'خروج کاربر از سامانه',
'logouttext' => "'''اکنون از سامانه خارج شدید.'''
شما می‌توانید به استفادهٔ گمنام از {{SITENAME}} ادامه دهید، یا می‌توانید با همین کاربر یا کاربر دیگری [[Special:UserLogin|به سامانه وارد شوید]].
@@ -767,7 +811,6 @@ $2',
'welcomecreation' => '==$1، خوش آمدید!==
حساب شما ایجاد شد.
فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] خود را تنظیم کنید.',
-'loginpagetitle' => 'ورود به سامانه',
'yourname' => 'نام کاربری شما',
'yourpassword' => 'گذرواژهٔ شما',
'yourpasswordagain' => 'گذرواژه را دوباره وارد کنید',
@@ -778,6 +821,7 @@ $2',
'nav-login-createaccount' => 'ورود به سامانه / ایجاد حساب کاربری',
'loginprompt' => 'برای ورود به {{SITENAME}} باید کوکی‌ها را فعال کنید.',
'userlogin' => 'ورود به سامانه / ایجاد حساب کاربری',
+'userloginnocreate' => 'ورود به سامانه',
'logout' => 'خروج از سامانه',
'userlogout' => 'خروج از سامانه',
'notloggedin' => 'به سامانه وارد نشده‌اید',
@@ -790,28 +834,8 @@ $2',
'badretype' => 'گذرواژه‌هایی که وارد کرده‌اید یکسان نیستند.',
'userexists' => 'نام کاربری‌ای که وارد کردید قبلاً استفاده شده‌است.
لطفاً یک نام دیگر انتخاب کنید.',
-'youremail' => 'پست الکترونیکی شما*',
-'username' => 'نام کاربری:',
-'uid' => 'شمارهٔ کاربری:',
-'prefs-memberingroups' => 'عضویت در {{PLURAL:$1|گروه|گروه‌ها}}:',
-'yourrealname' => 'نام واقعی:',
-'yourlanguage' => 'زبان:',
-'yourvariant' => 'گویش:',
-'yournick' => 'امضا:',
-'badsig' => 'امضای خام غیرمجاز؛ لطفاً برچسب‌های HTML را بررسی کنید.',
-'badsiglength' => 'امضای شما بیش از اندازه طولانی است.
-امضا باید کمتر از $1 {{PLURAL:$1|نویسه|نویسه}} طول داشته باشد.',
-'yourgender' => 'جنسیت:',
-'gender-unknown' => 'مشخص نشده',
-'gender-male' => 'مذکر',
-'gender-female' => 'مونث',
-'prefs-help-gender' => 'اختیاری: به منظور خطاب گرفتن با جنسیت صحیح توسط نرم‌افزار به کار می‌رود. این اطلاعات عمومی خواهد بود.',
-'email' => 'پست الکترونیکی',
-'prefs-help-realname' => '*نام واقعی (اختیاری): اگر تصمیم به ذکر آن بگیرید هنگام ارجاع به آثارتان و انتساب آنها به شما از نام واقعی‌تان استفاده خواهد شد.',
'loginerror' => 'خطا در ورود به سامانه',
-'prefs-help-email' => '* نشانی پست الکترونیکی اختیاری است اما ارسال یک گذرواژه جدید در صورتی که گذرواژه خود را فراموش کردید ممکن می‌سازد.
-شما هم‌چنین می‌توانید انتخاب کنید که کاربران از طریق صفحهٔ کاربری یا صفحهٔ بحث کاربری، بدون فاش شدن هویت‌‌ و نشانی واقعی پست الکترونیک‌تان، با شما تماس بگیرند.',
-'prefs-help-email-required' => 'نشانی پست الکترونیکی الزامی است.',
+'createaccounterror' => 'امکان ساختن این حساب وجود ندارد: $1',
'nocookiesnew' => 'حساب کاربری ایجاد شد، اما شما وارد سامانه نشدید.
{{SITENAME}} برای ورود کاربران به سامانه از کوکی استفاده می‌کند.
شما کوکی‌ها را از کار انداخته‌اید.
@@ -827,10 +851,11 @@ $2',
املای نام را بررسی کنید، یا [[Special:UserLogin/signup|یک حساب کاربری جدید بسازید]].',
'nosuchusershort' => "هیچ کاربری با نام ''<nowiki>$1</nowiki>'' وجود ندارد. املایتان را وارسی کنید.",
'nouserspecified' => 'باید یک نام کاربری مشخص کنید.',
+'login-userblocked' => 'این کاربر بسته شده‌است. ورود به سامانه مجاز نیست.',
'wrongpassword' => 'گذرواژه‌ای که وارد کردید نادرست است. لطفاً دوباره تلاش کنید.',
'wrongpasswordempty' => 'گذرواژه‌ای که وارد کرده‌اید، خالی است. خواهشمندیم دوباره تلاش کنید.',
-'passwordtooshort' => 'گذرواژه‌ای که وارد کرده‌اید خیلی کوتاه است.
-گذرواژه باید دست‌کم {{PLURAL:$1|$1 حرف|$1 حرف}} داشته باشد.',
+'passwordtooshort' => 'گذرواژه باید دست کم {{PLURAL:$1|$1 حرف|$1 حرف}} داشته باشد.',
+'password-name-match' => 'گذرواژهٔ شما باید با نام کاربری شما تفاوت داشته باشد.',
'mailmypassword' => 'گذرواژهٔ جدید فرستاده شود',
'passwordremindertitle' => 'یادآور گذرواژهٔ {{SITENAME}}',
'passwordremindertext' => 'یک نفر (احتمالاً خود شما، با نشانی آی‌پی $1) گذرواژهٔ جدیدی برای حساب کاربری‌ شما در {{SITENAME}} درخواست کرده‌است ($4). یک گذرواژهٔ موقت برای کاربر «$2» ساخته شده و برابر با «$3» قرار داده شده‌است. اگر هدف شما همین بوده‌است، شما باید اکنون به سامانه وارد شوید و گذرواژهٔ جدیدی برگزینید.
@@ -838,6 +863,7 @@ $2',
اگر کس دیگری این درخواست را کرده‌است یا این که شما گذرواژهٔ پیشین خود را به یاد آورده‌اید و دیگر تمایل به تغییر آن ندارید، می‌توانید این پیغام را نادیده بگیرید و همان گذرواژهٔ پیشین را به کار برید.',
'noemail' => 'هیچ نشانی پست الکترونیکی‌ای برای کاربر «$1» ثبت نشده است.',
+'noemailcreate' => 'شما باید یک نشانی پست الکترونیک معتبر وارد کنید',
'passwordsent' => 'یک گذرواژهٔ جدید به نشانی الکترونیکی ثبت شده برای کاربر «$1» فرستاده شد.
لطفاً پس از دریافت آن دوباره به سامانه وارد شوید.',
'blocked-mailpassword' => 'نشانی آی‌پی شما از ویرایش بازداشته شده‌است و از این رو به منظور جلوگیری از سوءاستفاده اجازهٔ بهره‌گیری از قابلیت بازیافت گذرواژه را ندارد.',
@@ -862,9 +888,11 @@ $2',
شما باید به سامانه وارد شوید تا گذرواژهٔ خود را تغییر بدهید.
اگر این حساب اشتباهی ساخته شده است، این پیغام را نادیده بگیرید.',
+'usernamehasherror' => 'نام کاربری نمی‌تواند شامل نویسه‌های درهم باشد',
'login-throttled' => 'شما به تازگی چندین بار برای ورود به سامانه تلاش کرده‌اید.
لطفاً پیش از آن که دوباره تلاش کنید، صبر کنید.',
'loginlanguagelabel' => 'زبان: $1',
+'suspicious-userlogout' => 'درخواست شما برای خروج از سامانه رد شد زیرا به نظر می‌رسد که این درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر ارسال شده باشد.',
# Password reset dialog
'resetpass' => 'تغییر گذرواژه',
@@ -878,17 +906,13 @@ $2',
'resetpass_submit' => 'تنظیم گذرواژه و ورود به سامانه',
'resetpass_success' => 'گذرواژهٔ شما با موفقیت تغییر داده شد.
در حال وارد کردن شما به سامانه...',
-'resetpass_bad_temporary' => 'گذرواژهٔ موقت نامعتبر است. احتمالاً پیشتر گذرواژهٔ خود را با موفقیت تغییر داده‌اید یا گذرواژهٔ موقت جدیدی درخواسته‌اید.',
'resetpass_forbidden' => 'نمی‌توان گذرواژه‌ها را تغییر داد',
'resetpass-no-info' => 'برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.',
'resetpass-submit-loggedin' => 'تغییر گذرواژه',
+'resetpass-submit-cancel' => 'لغو',
'resetpass-wrong-oldpass' => 'گذرواژهٔ موقت یا اخیر نامعتبر.
ممکن است که شما همینک گذرواژه‌تان را با موفقیت تغییر داده باشید یا درخواست یک گذرواژهٔ موقت جدید کرده باشید.',
'resetpass-temp-password' => 'گذرواژهٔ موقت:',
-'resetpass-log' => 'سیاههٔ از نو تنظیم کردن گذرواژه',
-'resetpass-logtext' => 'در زیر سیاهه‌ای از کاربرانی که گذرواژه‌شان توسط مدیر از نو تنظیم شده‌است قرار دارد.',
-'resetpass-logentry' => 'گذرواژهٔ $1 را عوض کرد',
-'resetpass-comment' => 'دلیل تغییر گذرواژه:',
# Edit page toolbar
'bold_sample' => 'متن ضخیم',
@@ -969,7 +993,6 @@ $2',
'blockededitsource' => "متن '''ویرایش‌های شما''' در '''$1''' در زیر نشان داده شده‌است:",
'whitelistedittitle' => 'برای ویرایش باید به سامانه وارد شوید',
'whitelistedittext' => 'برای ویرایش مقاله‌ها باید $1.',
-'confirmedittitle' => 'تأیید نشانی پست الکترونیکی، برای ویرایش، لازم است.',
'confirmedittext' => 'شما باید، پیش از ویرایش صفحه‌ها، نشانی پست الکترونیکی خود را مشخص و تأیید کنید. لطفاً از طریق [[Special:Preferences|ترجیحات کاربر]] این کار را صورت دهید.',
'nosuchsectiontitle' => 'چنین بخشی پیدا نشد',
'nosuchsectiontext' => 'شما تلاش کرده‌اید یک بخش در صفحه را ویرایش کنید که وجود ندارد.
@@ -993,9 +1016,16 @@ $2',
شما می‌توانید [[Special:Search/{{PAGENAME}}|عنوان این صفحه را در صفحه‌های دیگر جستجو کنید]]،
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهه‌های مرتبط را جستجو کنید]،
یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} این صفحه را ویرایش کنید]</span>.',
+'noarticletext-nopermission' => 'در حال حاضر این صفحه متنی ندارد.
+شما می‌توانید در دیگر صفحه‌ها [[Special:Search/{{PAGENAME}}|دنبال عنوان این صفحه بگردید]]،
+یا <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهه‌های مرتبط را جستجو کنید]</span>.',
'userpage-userdoesnotexist' => 'حساب کاربر «$1» ثبت نشده است. اطمینان حاصلی کنید که می‌خواهید این صفحه را ایجاد یا ویرایش کنید.',
+'userpage-userdoesnotexist-view' => 'حساب کاربری «$1» ثبت نشده‌است.',
+'blocked-notice-logextract' => 'دسترسی این کاربر در حال حاضر بسته است.
+آخرین مورد سیاهه قطع دسترسی در زیر آمده‌است:',
'clearyourcache' => "'''نکته:''' پس از ذخیره‌سازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. '''موزیلا / فایرفاکس / Safari:''' کلید '''Shift''' را نگه‌دارید و روی دکمهٔ '''Reload''' کلیک کنید، یا کلید‌های '''Ctrl-Shift-R''' را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های '''Cmd-Shift-R''')؛ '''اینترنت اکسپلورر:''' کلید '''Ctrl''' نگه‌دارید و روی دکمهٔ '''Refresh''' کلیک‌ کنید، یا کلید‌های '''Ctrl-F5''' را با هم فشار دهید؛ '''Konqueror:''' روی دکمهٔ '''Reload''' کلیک کنید و یا کلید '''F5''' را فشار دهید؛ '''اُپرا:''' کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی ''Tools&rarr;Preferences'' خالی کنند.",
-'usercssjsyoucanpreview' => "'''نکته:''' قبل از این که فایل CSS یا JS خود را ذخیره کنید، با استفاده از دکمه '''پیش‌نمایش''' می‌توان آن را آزمایش کنید.",
+'usercssyoucanpreview' => "'''نکته:''' قبل از این که فایل CSS یا JS خود را ذخیره کنید، با استفاده از دکمه '''{{int:showpreview}}''' آن را آزمایش کنید.",
+'userjsyoucanpreview' => "'''نکته:''' قبل از این که فایل CSS یا JS خود را ذخیره کنید، با استفاده از دکمه '''{{int:showpreview}}''' آن را آزمایش کنید.",
'usercsspreview' => "'''فراموش نکنید که سی‌اس‌اس کاربریتان فقط پیش‌نمایش یافته‌است و هنوز ذخیره نشده‌است!'''",
'userjspreview' => "'''فراموش مکنید که شما فقط دارید جاوااسکریپت کاربریتان را امتحان می‌کنید/پیش‌نمایشش را می‌بینید. هنوز ذخیره نشده‌است!'''",
'userinvalidcssjstitle' => "'''هشدار:''' پوسته‌ای به نام «$1» وجود ندارد.
@@ -1044,13 +1074,16 @@ $2',
اگر می‌خواهید متن را در یک پروندهٔ متنی ببرید و بچسبانید و برای آینده ذخیره‌اش کنید.
مدیری که پایگاه داده را قفل کرد این توضیح را ارائه کرد: $1'''",
-'protectedpagewarning' => 'هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز مدیر (یا بالاتر) بتوانند ویرایشش کنند.',
-'semiprotectedpagewarning' => "'''توجه:''' این صفحه قفل شده‌است تا تنها کاربران ثبت‌نام‌کرده قادر به ویرایش آن‌ باشند.",
+'protectedpagewarning' => "'''هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز مدیر (یا بالاتر) بتوانند ویرایشش کنند.'''
+آخرین موارد سیاهه در زیر آمده است:",
+'semiprotectedpagewarning' => "'''توجه:''' این صفحه قفل شده‌است تا تنها کاربران ثبت‌نام‌کرده قادر به ویرایش آن‌ باشند.
+آخرین موارد سیاهه در زیر آمده‌است:",
'cascadeprotectedwarning' => "'''هشدار:''' این صفحه به علت قرارگرفتن در {{PLURAL:$1|صفحهٔ|صفحه‌های}} آبشاری-محافظت‌شدهٔ زیر قفل شده‌است تا فقط مدیران بتوانند ویرایشش کنند.",
-'titleprotectedwarning' => "هشدار: این صفحه قفل شده‌است به شکلی که برای ایجاد آن [[Special:ListGroupRights|اختیارات خاصی]] لازم است.'''",
-'templatesused' => 'الگوهای استفاده شده در این صفحه:',
-'templatesusedpreview' => 'الگوهای استفاده شده در این پیش‌نمایش:',
-'templatesusedsection' => 'الگوهای استفاده‌شده در این بخش:',
+'titleprotectedwarning' => "'''هشدار: این صفحه قفل شده‌است به شکلی که برای ایجاد آن [[Special:ListGroupRights|اختیارات خاصی]] لازم است.'''
+ٱحرین موارد سیاهه در زیر آمده است:",
+'templatesused' => '{{PLURAL:$1|الگوی|الگوهای}} استفاده شده در این صفحه:',
+'templatesusedpreview' => '{{PLURAL:$1|الگوی|الگوهای}} استفاده شده در این پیش‌نمایش:',
+'templatesusedsection' => '{{PLURAL:$1|الگوی|الگوهای}} استفاده‌شده در این بخش:',
'template-protected' => '(حفاظت‌شده)',
'template-semiprotected' => '(نیمه حفاظت‌شده)',
'hiddencategories' => 'این صفحه در {{PLURAL:$1|یک ردهٔ پنهان|$1 ردهٔ پنهان}} قرار دارد:',
@@ -1059,12 +1092,18 @@ $2',
'nocreatetext' => 'این وبگاه قابلیت ایجاد صفحه‌های جدید را محدود کرده‌است.
می‌توانید بازگردید و صفحه‌ای موجود را ویرایش کنید یا اینکه [[Special:UserLogin|به سامانه وارد شوید یا حساب کاربری ایجاد کنید]].',
'nocreate-loggedin' => 'شما اجازهٔ ایجاد صفحه‌های جدید ندارید.',
+'sectioneditnotsupported-title' => 'ویرایش بخش‌ها پشتیبانی نمی‌شود',
+'sectioneditnotsupported-text' => 'این صفحه از ویرایش بخش‌ها پشتیبانی نمی‌کند',
'permissionserrors' => 'خطای سطح دسترسی',
'permissionserrorstext' => 'شما اجازهٔ انجام این کار را به {{PLURAL:$1|دلیل|دلایل}} زیر ندارید:',
'permissionserrorstext-withaction' => 'شما اجازهٔ $2 را به {{PLURAL:$1|دلیل|دلایل}} رو به رو ندارید:',
-'recreate-deleted-warn' => "'''هشدار: شما در حال ایجاد کردن دوبارهٔ صفحه‌ای هستید که قبلاً حذف شده‌است.''' در نظر داشته باشید که آیا ادامهٔ ویرایش این صفحه کار مناسبی هست یا نه. سیاههٔ حذف مربوط به این صفحه برای راحتی در ادامه آمده‌است:",
-'deleted-notice' => 'این صفحه حذف شده‌است. سیاههٔ حذف این صفحه در زیر آمده‌است.',
-'deletelog-fulllog' => 'مشاهدهٔ سیاههٔ کامل',
+'recreate-moveddeleted-warn' => "'''هشدار: شما در حال ایجاد صفحه‌ای هستید که قبلاً حذف شده بود.'''
+
+در نظر داشته باشید که آیا ادامهٔ ویرایش این صفحه کار درستی است یا نه.
+در ادامه سیاههٔ حذف و انتقال این صفحه برای راحتی نمایش داده شده‌است:",
+'moveddeleted-notice' => 'این صفحه حذف شده‌است.
+در ادامه سیاههٔ حذف و انتقال این صفحه نمایش داده شده‌است.',
+'log-fulllog' => 'مشاهدهٔ سیاههٔ کامل',
'edit-hook-aborted' => 'ویرایش توسط قلاب لغو شد.
توضیحی در این مورد داده نشد.',
'edit-gone-missing' => 'امکان به روز کردن صفحه وجود ندارد.
@@ -1087,6 +1126,7 @@ $2',
'post-expand-template-argument-category' => 'صفحه‌های دارای الگوهایی با پارامترهای نادیده گرفته شده',
'parser-template-loop-warning' => 'حلقه در الگو پیدا شد: [[$1]]',
'parser-template-recursion-depth-warning' => 'محدودیت عمق بازگشت الگو رد شد ($1)',
+'language-converter-depth-warning' => 'تجاوز از محدودیت عمق مبدل زبانی ($1)',
# "Undo" feature
'undo-success' => 'این ویرایش را می‌توان خنثی کرد.
@@ -1107,7 +1147,7 @@ $2',
'currentrev' => 'نسخهٔ فعلی',
'currentrev-asof' => 'نسخهٔ کنونی تا $1',
'revisionasof' => 'نسخهٔ $1',
-'revision-info' => 'ُویرایش در تاریخ $1 توسط $2', # Additionally available: $3: revision id
+'revision-info' => 'ویرایش در تاریخ $1 توسط $2',
'previousrevision' => '→ نسخهٔ قدیمی‌تر',
'nextrevision' => 'نسخهٔ جدیدتر←',
'currentrevisionlink' => 'نمایش نسخهٔ فعلی',
@@ -1119,7 +1159,7 @@ $2',
'histlegend' => 'شرح: (فعلی) = تفاوت با نسخهٔ فعلی،
(قبلی) = تفاوت با نسخهٔ قبلی، جز = ویرایش جزئی',
'history-fieldset-title' => 'مرور تاریخچه',
-'deletedrev' => '[حذف‌شده]',
+'history-show-deleted' => 'فقط حذف شده',
'histfirst' => 'قدیمی‌ترین',
'histlast' => 'جدیدترین',
'historysize' => '({{PLURAL:$1|۱ بایت|$1 بایت}})',
@@ -1128,69 +1168,109 @@ $2',
# Revision feed
'history-feed-title' => 'تاریخچهٔ ویرایش‌ها',
'history-feed-description' => 'تاریخچهٔ ویرایشهای صفحه در ویکی',
-'history-feed-item-nocomment' => '$1 در $2', # user at time
+'history-feed-item-nocomment' => '$1 در $2',
'history-feed-empty' => 'صفحهٔ درخواسته وجود ندارد. ممکن است که از ویکی حذف یا اینکه نامش تغییر داده شده باشد.
[[Special:Search|جستجوی]] صفحه‌های جدید مرتبطِ موجود در این ویکی را هم بیازمایید. شاید افاقه کرد.',
# Revision deletion
-'rev-deleted-comment' => '(توضیحات پاک شد)',
-'rev-deleted-user' => '(نام کاربری حذف شده‌است)',
-'rev-deleted-event' => '(مورد پاک شد)',
-'rev-deleted-text-permission' => "این ویرایش از این صفحه '''حذف شده‌است'''.
-ممکن است اطلاعات مرتبط با آن در [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
-'rev-deleted-text-view' => "این ویرایش از این صفحه '''حذف شده‌است'''.
-شما به عنوان یک مدیر می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
-'rev-deleted-no-diff' => "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از دو نسخه '''حذف شده‌است'''.
-ممکن است اطلاعات مرتبط با آن در [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
-'rev-deleted-unhide-diff' => "یکی از دو نسخهٔ این تفاوت '''حذف شده‌است'''.
-ممکن است اطلاعات مرتبط با آن در [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.
+'rev-deleted-comment' => '(توضیحات پاک شد)',
+'rev-deleted-user' => '(نام کاربری حذف شده‌است)',
+'rev-deleted-event' => '(مورد پاک شد)',
+'rev-deleted-user-contribs' => '[نام کاربری یا نشانی آی‌پی حذف شده - ویرایش مخفی شده در مشارکت‌ها]',
+'rev-deleted-text-permission' => "این ویرایش از این صفحه '''حذف شده‌است'''.
+ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+'rev-deleted-text-unhide' => "این ویرایش از این صفحه '''حذف شده‌است'''.
+ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.
+شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
+'rev-suppressed-text-unhide' => "این ویرایش از این صفحه '''فرونشانی شده‌است'''.
+ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.
+شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این نسخه را ببینید].",
+'rev-deleted-text-view' => "این ویرایش از این صفحه '''حذف شده‌است'''.
+شما به عنوان یک مدیر می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+'rev-suppressed-text-view' => "این ویرایش از این صفحه '''فرونشانی شده‌است'''.
+شما به عنوان یک مدیر می‌توانید آن را ببینید؛ ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
+'rev-deleted-no-diff' => "شما نمی‌توانید این تفاوت را مشاهده کنید زیرا یکی از دو نسخه '''حذف شده‌است'''.
+ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+'rev-suppressed-no-diff' => "شما نمی‌توانید این تفاوت را مشاهده کنید چون یکی از نسخه‌ها '''حذف شده‌است'''.",
+'rev-deleted-unhide-diff' => "یکی از دو نسخهٔ این تفاوت '''حذف شده‌است'''.
+ممکن است اطلاعات مرتبط با آن در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.
+شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
+'rev-suppressed-unhide-diff' => "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.
+ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page=سیاههٔ فرونشانی{{FULLPAGENAMEE}}}}] موجود باشد.
شما به عنوان یک مدیر کماکان می‌توانید در صورت تمایل [$1 این تفاوت را ببینید].",
-'rev-delundel' => 'نمایش/نهفتن',
-'revisiondelete' => 'حذف/احیای نسخه‌ها',
-'revdelete-nooldid-title' => 'هیچ نسخه‌ای انتخاب نشده‌است',
-'revdelete-nooldid-text' => 'نسخه یا نسخه‌هایی از صفحهٔ مورد نظر را که می‌خواهید تحت تاثیر قرار بگیرند انتخاب نکرده‌اید.',
-'revdelete-nologtype-title' => 'نوع سیاهه مشخص نشده‌است',
-'revdelete-nologtype-text' => 'شما هیچ نوع سیاهه‌ای را برای این کار مشخص نکردید.',
-'revdelete-toomanytargets-title' => 'اهداف بیش از اندازه',
-'revdelete-toomanytargets-text' => 'انواع سیاهه‌هایی که برای این کار مشخص کردید بیش از اندازه است.',
-'revdelete-nologid-title' => 'مدخل غیر مجاز در سیاهه',
-'revdelete-nologid-text' => 'شما یا یک رخداد در سیاههٔ هدف مشخص نکردید یا موردی را مشخص کردید که وجود ندارد.',
-'revdelete-selected' => "'''{{PLURAL:$2|نسخهٔ|نسخه‌های}} انتخاب شده از '''$1:''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|مورد|موارد}} انتخاب شده از سیاهه:'''",
-'revdelete-text' => "'''نسخه‌ها و موارد حذف شده کماکان از طریق تاریخچهٔ صفحه و سیاهه‌ها قابل مشاهده هستند، اما بخش‌هایی از محتوای آن‌ها توسط عموم قابل مشاهده نخواهد بود.'''
-
-سایر مدیران {{SITENAME}} هنوز می‌توانند این محتوای پنهان را ببینند و از همین طریق موارد حذف شده را احیا کنند، مگر آن که محدودیت‌های دیگری اعمال گردد.
-لطفاً تایید کنید که می‌خواهید این عمل را انجام دهید، نتایج آن را درک می‌کنید و این کار را مطابق [[{{MediaWiki:Policy-url}}|سیاست]] انجام می‌دهید.",
-'revdelete-suppress-text' => "فرونشانی باید '''تنها''' برای موارد زیر استفاده شود:
+'rev-deleted-diff-view' => "یکی از نسخه‌های این تفاوت '''حذف شده‌است'''.
+شما به عنوان یک مدیر کماکان می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] موجود باشد.",
+'rev-suppressed-diff-view' => "یکی از نسخه‌های این تفاوت '''فرونشانی شده‌است'''.
+شما به عنوان یک مدیر کماکان می‌توانید این تفاوت را ببینید؛ ممکن است جزئیاتی در [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاههٔ فرونشانی] موجود باشد.",
+'rev-delundel' => 'نمایش/نهفتن',
+'rev-showdeleted' => 'نمایش',
+'revisiondelete' => 'حذف/احیای نسخه‌ها',
+'revdelete-nooldid-title' => 'هیچ نسخه‌ای انتخاب نشده‌است',
+'revdelete-nooldid-text' => 'نسخه یا نسخه‌هایی از صفحهٔ مورد نظر را که می‌خواهید تحت تاثیر قرار بگیرند انتخاب نکرده‌اید.',
+'revdelete-nologtype-title' => 'نوع سیاهه مشخص نشده‌است',
+'revdelete-nologtype-text' => 'شما هیچ نوع سیاهه‌ای را برای این کار مشخص نکردید.',
+'revdelete-nologid-title' => 'مدخل غیر مجاز در سیاهه',
+'revdelete-nologid-text' => 'شما یا یک رخداد در سیاههٔ هدف مشخص نکردید یا موردی را مشخص کردید که وجود ندارد.',
+'revdelete-no-file' => 'پروندهٔ مشخص شده وجود ندارد.',
+'revdelete-show-file-confirm' => 'آیا مطمئن هستید که می‌خواهید یک نسخهٔ حذف شده از پروندهٔ «<nowiki>$1</nowiki>» مورخ $2 ساعت $3 را ببینید؟',
+'revdelete-show-file-submit' => 'بلی',
+'revdelete-selected' => "'''{{PLURAL:$2|نسخهٔ|نسخه‌های}} انتخاب شده از '''$1:''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|مورد|موارد}} انتخاب شده از سیاهه:'''",
+'revdelete-text' => "'''نسخه‌ها و موارد حذف شده کماکان از طریق تاریخچهٔ صفحه و سیاهه‌ها قابل مشاهده هستند، اما بخش‌هایی از محتوای آن‌ها توسط عموم قابل مشاهده نخواهد بود.'''
+سایر مدیران {{SITENAME}} هنوز می‌توانند این محتوای پنهان را ببینند و از همین طریق موارد حذف شده را احیا کنند، مگر آن که محدودیت‌های دیگری اعمال گردد.",
+'revdelete-confirm' => 'لطفاً تایید کنید که می‌خواهید این کار را انجام دهید، عواقب آن را درک می‌کنید و این کار را طبق [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.',
+'revdelete-suppress-text' => "فرونشانی باید '''تنها''' برای موارد زیر استفاده شود:
* اطلاعات نامناسب شخصی
*: ''نشانی منزل، شماره تلفن، شماره تامین اجتماعی و غیره.''",
-'revdelete-legend' => 'تنظیم محدودیت‌های نسخه:',
-'revdelete-hide-text' => 'نهفتن متن نسخه',
-'revdelete-hide-name' => 'نهفتن عمل و هدف',
-'revdelete-hide-comment' => 'نهفتن توضیح ویرایش',
-'revdelete-hide-user' => 'نام کاربری/نشانی آی‌پی ویراستار پنهان شود',
-'revdelete-hide-restricted' => 'فرونشانی اطلاعات برای مدیران به همراه دیگران',
-'revdelete-suppress' => 'از دسترسی مدیران به داده نیز مانند سایر کاربران جلوگیری به عمل آید.',
-'revdelete-hide-image' => 'نهفتن محتویات پرونده',
-'revdelete-unsuppress' => 'خاتمهٔ محدودیت‌ها در مورد نسخه‌های انتخاب شده',
-'revdelete-log' => 'دلیل:',
-'revdelete-submit' => 'اِعمال بر نسخهٔ انتخاب‌شده',
-'revdelete-logentry' => 'تغییر پیدایی نسخه در [[$1]]',
-'logdelete-logentry' => 'تغییر پیدایی مورد در [[$1]]',
-'revdelete-success' => "'''پیدایی نسخه با موفقیت به روز شد.'''",
-'logdelete-success' => 'تغییر پیدایی مورد با موفقیت انجام شد.',
-'revdel-restore' => 'تغییر پیدایی',
-'pagehist' => 'تاریخچهٔ صفحه',
-'deletedhist' => 'تاریخچهٔ حذف شده',
-'revdelete-content' => 'محتوا',
-'revdelete-summary' => 'خلاصه ویرایش',
-'revdelete-uname' => 'نام کاربر',
-'revdelete-restricted' => 'مدیران را محدود کرد',
-'revdelete-unrestricted' => 'محدودیت مدیران را لغو کرد',
-'revdelete-hid' => '$1 را پنهان کرد',
-'revdelete-unhid' => '$1 را از حالت پنهان در آورد',
-'revdelete-log-message' => '$1 برای $2 {{PLURAL:$2|نسخه|نسخه}}',
-'logdelete-log-message' => '$1 برای $2 {{PLURAL:$2|رخداد|رخداد}}',
+'revdelete-legend' => 'تنظیم محدودیت‌های نسخه:',
+'revdelete-hide-text' => 'نهفتن متن نسخه',
+'revdelete-hide-image' => 'نهفتن محتویات پرونده',
+'revdelete-hide-name' => 'نهفتن عمل و هدف',
+'revdelete-hide-comment' => 'نهفتن توضیح ویرایش',
+'revdelete-hide-user' => 'نام کاربری/نشانی آی‌پی ویراستار پنهان شود',
+'revdelete-hide-restricted' => 'فرونشانی اطلاعات برای مدیران به همراه دیگران',
+'revdelete-radio-same' => '(بدون تغییر)',
+'revdelete-radio-set' => 'بله',
+'revdelete-radio-unset' => 'نه',
+'revdelete-suppress' => 'از دسترسی مدیران به داده نیز مانند سایر کاربران جلوگیری به عمل آید.',
+'revdelete-unsuppress' => 'خاتمهٔ محدودیت‌ها در مورد نسخه‌های انتخاب شده',
+'revdelete-log' => 'دلیل:',
+'revdelete-submit' => 'اِعمال بر {{PLURAL:$1|نسخهٔ|نسخه‌های}} انتخاب شده',
+'revdelete-logentry' => 'تغییر پیدایی نسخه در [[$1]]',
+'logdelete-logentry' => 'تغییر پیدایی مورد در [[$1]]',
+'revdelete-success' => "'''پیدایی نسخه با موفقیت به روز شد.'''",
+'revdelete-failure' => "'''پیدایی نسخه‌ها قابل به روز کردن نیست:'''
+$1",
+'logdelete-success' => 'تغییر پیدایی مورد با موفقیت انجام شد.',
+'logdelete-failure' => "'''پیدایی سیاهه‌ها قابل تنظیم نیست:'''
+$1",
+'revdel-restore' => 'تغییر پیدایی',
+'pagehist' => 'تاریخچهٔ صفحه',
+'deletedhist' => 'تاریخچهٔ حذف شده',
+'revdelete-content' => 'محتوا',
+'revdelete-summary' => 'خلاصه ویرایش',
+'revdelete-uname' => 'نام کاربر',
+'revdelete-restricted' => 'مدیران را محدود کرد',
+'revdelete-unrestricted' => 'محدودیت مدیران را لغو کرد',
+'revdelete-hid' => '$1 را پنهان کرد',
+'revdelete-unhid' => '$1 را از حالت پنهان در آورد',
+'revdelete-log-message' => '$1 برای $2 {{PLURAL:$2|نسخه|نسخه}}',
+'logdelete-log-message' => '$1 برای $2 {{PLURAL:$2|رخداد|رخداد}}',
+'revdelete-hide-current' => 'خطا در پنهان کردن مورد مورخ $2 ساعت $1: این نسخه، نسخهٔ اخیر می‌باشد و قابل پنهان کردن نیست.',
+'revdelete-show-no-access' => 'خطا در پنهان کردن مورد مورخ $2 ساعت $1: این نسخه علامت «محدودیت» دارد و شما به آن دسترسی ندارید.',
+'revdelete-modify-no-access' => 'خطا در پنهان کردن مورد مورخ $2 ساعت $1: این نسخه علامت «محدودیت» دارد و شما به آن دسترسی ندارید.',
+'revdelete-modify-missing' => 'خطا در پنهان کردن مورد شمارهٔ $1: این نسخه در پایگاه داده وجود ندارد!',
+'revdelete-no-change' => "'''هشدار:''' مورد مورخ $2 ساعت $1 از قبل تنظیمات پیدایی درخواست شده را دارا می‌باشد.",
+'revdelete-concurrent-change' => 'خطا در پنهان کردن مورد مورخ $2 ساعت $1: به نظر می‌رسد که در مدتی که شما برای تغییر وضعیت آن تلاش می‌کردید وضعیت آن توسط فرد دیگری تغییر یافته است.
+لطفاً سیاهه‌ها را بررسی کنید.',
+'revdelete-only-restricted' => 'خطا در پنهان کردن مورد مورخ $2 ساعت $1: شما نمی‌توانید موارد را از دید مدیران پنهان کنید مگر آن که یکی دیگر از گزینه‌های پنهان‌سازی را نیز انتخاب کنید.',
+'revdelete-reason-dropdown' => '*دلایل متداول حذف
+** نقض حق تکثیر
+** اطلاعات فردی نامناسب',
+'revdelete-otherreason' => 'دلایل دیگر/اضافی:',
+'revdelete-reasonotherlist' => 'دلیل دیگر',
+'revdelete-edit-reasonlist' => 'ویرایش فهرست دلایل',
+'revdelete-offender' => 'نویسنده نسخه:',
# Suppression log
'suppressionlog' => 'سیاههٔ فرونشانی',
@@ -1231,67 +1311,13 @@ $2',
'mergelogpagetext' => 'در زیر سیاهه آخرین موارد ادغام تاریخچه یک صفحه در صفحه‌ای دیگر را می‌بینید.',
# Diffs
-'history-title' => 'تاریخچه ویرایش‌های «$1»',
-'difference' => '(تفاوت بین نسخه‌ها)',
-'lineno' => 'سطر $1:',
-'compareselectedversions' => 'مقایسهٔ نسخه‌های انتخاب‌شده',
-'visualcomparison' => 'مقایسهٔ دیداری',
-'wikicodecomparison' => 'مقایسهٔ کد ویکی',
-'editundo' => 'خنثی‌سازی',
-'diff-multi' => '({{PLURAL:$1||$1&nbsp;}}ویرایش میانی نشان داده نشده‌است.)',
-'diff-movedto' => 'به $1 منتقل شد',
-'diff-styleadded' => 'سبک $1 افزوده شد',
-'diff-added' => '$1 افزوده شد',
-'diff-changedto' => 'به $1 تغییر یافت',
-'diff-movedoutof' => 'از $1 خارج شد',
-'diff-styleremoved' => 'سبک $1 برداشته شد',
-'diff-removed' => '$1 برداشته شد',
-'diff-changedfrom' => 'از $1 تغییر یافت',
-'diff-src' => 'منبع',
-'diff-withdestination' => 'با مقصد $1',
-'diff-with' => '&#32;با $1 $2',
-'diff-with-final' => '&#32;و $1 $2',
-'diff-width' => 'پهنا',
-'diff-height' => 'بلندی',
-'diff-p' => "یک '''بند'''",
-'diff-blockquote' => "یک '''نقل قول'''",
-'diff-h1' => "یک '''عنوان (سطح ۱)'''",
-'diff-h2' => "یک '''عنوان (سطح ۲)'''",
-'diff-h3' => "یک '''عنوان (سطح ۳)'''",
-'diff-h4' => "یک '''عنوان (سطح ۴)'''",
-'diff-h5' => "یک '''عنوان (سطح ۵)'''",
-'diff-pre' => "یک '''قطعهٔ از پیش قالب‌بندی شده",
-'diff-div' => "یک '''بخش'''",
-'diff-ul' => "یک '''فهرست غیر ترتیبی'''",
-'diff-ol' => "یک '''فهرست ترتیبی'''",
-'diff-li' => "یک '''مورد فهرست'''",
-'diff-table' => "یک '''جدول'''",
-'diff-tbody' => "یک '''محتوای جدول'''",
-'diff-tr' => "یک '''ردیف'''",
-'diff-td' => "یک '''خانه'''",
-'diff-th' => "یک '''عنوان'''",
-'diff-br' => "یک '''شکستگی'''",
-'diff-hr' => "یک '''خط افقی'''",
-'diff-code' => "یک '''قطعه کد رایانه'''",
-'diff-dl' => "یک '''فهرست تعاریف'''",
-'diff-dt' => "یک '''عبارت تعریف'''",
-'diff-dd' => "یک '''تعریف'''",
-'diff-input' => "یک '''ورودی'''",
-'diff-form' => "یک '''فرم'''",
-'diff-img' => "یک '''تصویر'''",
-'diff-span' => "یک '''گستره'''",
-'diff-a' => "یک '''پیوند'''",
-'diff-i' => "'''کج'''",
-'diff-b' => "'''پررنگ'''",
-'diff-strong' => "'''قوی'''",
-'diff-em' => "'''موکد'''",
-'diff-font' => "'''قلم'''",
-'diff-big' => "'''بزرگ'''",
-'diff-del' => "'''حذف شده'''",
-'diff-tt' => "'''با پهنای ثابت'''",
-'diff-sub' => "'''بالانویس'''",
-'diff-sup' => "'''پایین‌نویس'''",
-'diff-strike' => "'''خط‌خورده'''",
+'history-title' => 'تاریخچه ویرایش‌های «$1»',
+'difference' => '(تفاوت بین نسخه‌ها)',
+'lineno' => 'سطر $1:',
+'compareselectedversions' => 'مقایسهٔ نسخه‌های انتخاب‌شده',
+'showhideselectedversions' => 'نمایش/نهفتن نسخه‌های انتخاب شده',
+'editundo' => 'خنثی‌سازی',
+'diff-multi' => '({{PLURAL:$1||$1&nbsp;}}ویرایش میانی نشان داده نشده‌است.)',
# Search results
'searchresults' => 'نتایج جستجو',
@@ -1300,28 +1326,25 @@ $2',
'searchsubtitle' => "شما '''[[:$1]]''' را جستید ([[Special:Prefixindex/$1|صفحه‌هایی که با «$1» شروع می‌شوند]]{{int:pipe-separator}}
[[Special:WhatLinksHere/$1|صفحه‌هایی که به «$1» پیوند دارند]])",
'searchsubtitleinvalid' => 'برای پرس‌وجوی «$1»',
-'noexactmatch' => "'''صفحه‌ای با عنوان دقیق \"\$1\" وجود ندارد.''' شما می‌توانید این صفحه را [[:\$1|ایجاد کنید]].",
-'noexactmatch-nocreate' => "'''صفحه‌ای با عنوان «$1» وجود ندارد.'''",
'toomanymatches' => 'تعداد موارد مطابق خیلی زیاد بود، لطفاً درخواست دیگری را امتحان کنید',
'titlematches' => 'عنوان مقاله تطبیق می‌کند',
'notitlematches' => 'عنوان هیچ مقاله‌ای نمی‌خورد',
'textmatches' => 'متن مقاله تطبیق می‌کند',
'notextmatches' => 'متن هیچ مقاله‌ای نمی‌خورد',
-'prevn' => '$1تای قبلی',
-'nextn' => '$1تای بعدی',
+'prevn' => '{{PLURAL:$1|$1}}تای قبلی',
+'nextn' => '{{PLURAL:$1|$1}}تای بعدی',
'prevn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} قبلی',
'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} بعدی',
'shown-title' => 'نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه',
-'viewprevnext' => 'نمایش ($1) ($2) ($3).',
+'viewprevnext' => 'نمایش ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'گزینه‌های جستجو',
'searchmenu-exists' => "* صفحهٔ '''[[$1]]'''",
'searchmenu-new' => "'''صفحهٔ «[[:$1]]» را در این ویکی بسازید!'''",
'searchhelp-url' => 'Help:راهنما',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|مرور صفحه‌های با این پیشوند]]',
'searchprofile-articles' => 'صفحه‌های محتوایی',
-'searchprofile-articles-and-proj' => 'صفحه‌های محتوایی و پروژه',
-'searchprofile-project' => 'صفحه‌های پروژه',
-'searchprofile-images' => 'پرونده‌ها',
+'searchprofile-project' => 'صفحه‌های راهنما و پروژه',
+'searchprofile-images' => 'چند رسانه‌ای',
'searchprofile-everything' => 'همه‌چیز',
'searchprofile-advanced' => 'پیشرفته',
'searchprofile-articles-tooltip' => 'جستجو در $1',
@@ -1329,8 +1352,6 @@ $2',
'searchprofile-images-tooltip' => 'جستجو برای پرونده‌ها',
'searchprofile-everything-tooltip' => 'جستجوی تمام محتوا (شامل صفحه‌های بحث)',
'searchprofile-advanced-tooltip' => 'جستجو در فضاهای نام دلخواه',
-'prefs-search-nsdefault' => 'جستجو با استفاده از پیش‌فرض‌ها:',
-'prefs-search-nscustom' => 'جستجو در فضاهای نام دلخواه:',
'search-result-size' => '$1 ({{PLURAL:$2|یک کلمه|$2 کلمه}})',
'search-result-score' => 'ارتباط: $1%',
'search-redirect' => '(تغییر مسیر $1)',
@@ -1343,11 +1364,12 @@ $2',
'search-mwsuggest-disabled' => 'هیچ پیشنهادی نیست',
'search-relatedarticle' => 'مرتبط',
'mwsuggest-disable' => 'پیشنهادهای مبتنی بر AJAX را غیر فعال کن',
+'searcheverything-enable' => 'جستجو در تمام فضاهای نام',
'searchrelated' => 'مرتبط',
'searchall' => 'همه',
'showingresults' => "نمایش {{PLURAL:$1|'''1''' نتیجه|'''$1''' نتیجه}} در پایین، آغاز از #'''$2'''.",
'showingresultsnum' => "نمایش '''$3''' {{PLURAL:$3|نتیجه|نتیجه}} در پایین، آغاز از #'''$2'''.",
-'showingresultstotal' => "نمایش {{PLURAL:$4|نتیجهٔ '''$1''' از '''$3'''|نتیجه‌های '''$1 - $2''' از '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|نتیجهٔ '''$1''' از '''$3'''|نتایج '''$1 تا $2''' از '''$3'''}} برای '''$4'''",
'nonefound' => "'''نکته''': تنها بعضی از فضاهای نام به طور پیش‌فرض جستجو می‌شوند.
برای جستجوی تمام فضاهای نام (شامل صفحه‌های بحث، الگوها و غیره) به عبارت جستجوی خود پیشوند ''all:‎'' را بیفزایید، یا نام فضای نام دلخواه را به عنوان پیشوند استفاده کنید.",
'search-nonefound' => 'نتیجه‌ای منطبق با درخواست پیدا نشد.',
@@ -1356,110 +1378,148 @@ $2',
'powersearch-ns' => 'جستجو در فضاهای نام:',
'powersearch-redir' => 'تغییرمسیرها فهرست شوند',
'powersearch-field' => 'جستجو برای',
+'powersearch-togglelabel' => 'بررسی:',
+'powersearch-toggleall' => 'همه',
+'powersearch-togglenone' => 'هیچ کدام',
'search-external' => 'جستجوی خارجی',
'searchdisabled' => 'با عرض شرمندگی، جستجوی کل متن موقتاً از کار انداخته شده است. می‌توانید از جستجوی Google در پایین استفاده کنید. نتایج حاصل از جستجو با این روش ممکن است به‌روز نباشند.',
+# Quickbar
+'qbsettings' => 'تنظیمات نوار سریع',
+'qbsettings-none' => 'نباشد',
+'qbsettings-fixedleft' => 'ثابت چپ',
+'qbsettings-fixedright' => 'ثابت راست',
+'qbsettings-floatingleft' => 'شناور چپ',
+'qbsettings-floatingright' => 'شناور راست',
+
# Preferences page
-'preferences' => 'ترجیحات',
-'mypreferences' => 'ترجیحات من',
-'prefs-edits' => 'تعداد ویرایش‌ها',
-'prefsnologin' => 'به سامانه وارد نشده‌اید',
-'prefsnologintext' => 'برای تنظیم ترجیحات کاربر باید <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} به سیستم وارد شوید]</span>.',
-'prefsreset' => 'ترجیحات از حافظه میزان شد.',
-'qbsettings' => 'تنظیمات نوار سریع',
-'qbsettings-none' => 'نباشد',
-'qbsettings-fixedleft' => 'ثابت چپ',
-'qbsettings-fixedright' => 'ثابت راست',
-'qbsettings-floatingleft' => 'شناور چپ',
-'qbsettings-floatingright' => 'شناور راست',
-'changepassword' => 'تغییر گذرواژه',
-'skin' => 'پوسته',
-'skin-preview' => 'پیش‌نمایش',
-'math' => 'نمایش ریاضیات',
-'dateformat' => 'قالب تاریخ',
-'datedefault' => 'بدون ترجیح',
-'datetime' => 'تاریخ و زمان',
-'math_failure' => 'شکست در تجزیه',
-'math_unknown_error' => 'خطای ناشناخته',
-'math_unknown_function' => 'تابع ناشناختهٔ',
-'math_lexing_error' => 'خطای lexing',
-'math_syntax_error' => 'خطای نحوی',
-'math_image_error' => 'تبدیل به PNG شکست خورد',
-'math_bad_tmpdir' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه موقت (temp) ریاضی وجود ندارد.',
-'math_bad_output' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه خروجی (output) ریاضی وجود ندارد.',
-'math_notexvc' => 'برنامهٔ اجرایی texvc موجود نیست. برای اطلاعات بیشتر به <span dir=ltr>math/README</span> مراجعه کنید.',
-'prefs-personal' => 'داده‌های کاربر',
-'prefs-rc' => 'تغییرات اخیر',
-'prefs-watchlist' => 'فهرست پی‌گیری‌ها',
-'prefs-watchlist-days' => 'تعداد روزهایی که باید در فهرست پی‌گیری‌ها نمایش داده شود:',
-'prefs-watchlist-days-max' => '(حداکثر ۷ روز)',
-'prefs-watchlist-edits' => 'تعداد ویرایشهای نشان‌داده در فهرست پی‌گیری‌های گسترش‌یافته:',
-'prefs-watchlist-edits-max' => '(حداکثر تعداد: ۱۰۰۰)',
-'prefs-misc' => 'تنظیمات متفرقه',
-'prefs-resetpass' => 'تغییر گذرواژه',
-'saveprefs' => 'ذخیرهٔ ترجیحات',
-'resetprefs' => 'صفر کردن ترجیحات',
-'restoreprefs' => 'باز گرداندن تمام تنظیمات پیش‌فرض',
-'textboxsize' => 'ابعاد جعبهٔ متن',
-'prefs-edit-boxsize' => 'اندازهٔ پنجرهٔ ویرایش.',
-'rows' => 'تعداد سطرها',
-'columns' => 'تعداد ستون‌ها',
-'searchresultshead' => 'تنظیمات نتیجهٔ جستجو',
-'resultsperpage' => 'تعداد نتایج در هر صفحه',
-'contextlines' => 'تعداد سطرها در هر نتیجه',
-'contextchars' => 'تعداد نویسه‌های اطراف در سطر',
-'stub-threshold' => 'آستانهٔ ویرایش پیوندهای <a href="#" class="stub">ناقص</a>:',
-'recentchangesdays' => 'تعداد روزهای نمایش داده‌شده در تغییرات اخیر:',
-'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روز|روز}})',
-'recentchangescount' => 'تعداد عناوین در تغییرات اخیر، تاریخچهٔ صفحه‌ها، و سیاهه‌ها، به طور پیش‌فرض:',
-'savedprefs' => 'ترجیحات شما ذخیره شد.',
-'timezonelegend' => 'منطقهٔ زمانی:',
-'timezonetext' => 'تفاوت تعداد ساعت زمان محلی‌تان با زمان خادم (وقت گرینیچ) را وارد کنید.',
-'localtime' => 'زمان محلی:',
-'timezoneselect' => 'منطقه زمانی:',
-'timezoneuseserverdefault' => 'استفاده از پیش‌فرض کارگزار',
-'timezoneuseoffset' => 'دیگر (اختلاف را مشخص کنید)',
-'timezoneoffset' => 'اختلاف¹:',
-'servertime' => 'زمان کارگزار:',
-'guesstimezone' => 'از مرورگر گرفته شود',
-'timezoneregion-africa' => 'آفریقا',
-'timezoneregion-america' => 'آمریکا',
-'timezoneregion-antarctica' => 'قطب جنوبی',
-'timezoneregion-arctic' => 'قطب شمالی',
-'timezoneregion-asia' => 'آسیا',
-'timezoneregion-atlantic' => 'اقیانوس اطلس',
-'timezoneregion-australia' => 'استرالیا',
-'timezoneregion-europe' => 'اروپا',
-'timezoneregion-indian' => 'اقیانوس هند',
-'timezoneregion-pacific' => 'اقیانوس آرام',
-'allowemail' => 'امکان دریافت پست الکترونیکی از دیگر کاربران',
-'prefs-searchoptions' => 'گزینه‌های جستجو',
-'prefs-namespaces' => 'فضاهای نام',
-'defaultns' => 'به طور پیش‌فرض در این فضاهای نام جستجو شود:',
-'default' => 'پیش‌فرض',
-'files' => 'پرونده‌ها',
-'prefs-custom-css' => 'سی‌اس‌اس شخصی',
-'prefs-custom-js' => 'جاوااسکریپت شخصی',
+'preferences' => 'ترجیحات',
+'mypreferences' => 'ترجیحات من',
+'prefs-edits' => 'تعداد ویرایش‌ها',
+'prefsnologin' => 'به سامانه وارد نشده‌اید',
+'prefsnologintext' => 'برای تنظیم ترجیحات کاربر باید <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} به سامانه وارد شوید]</span>.',
+'changepassword' => 'تغییر گذرواژه',
+'prefs-skin' => 'پوسته',
+'skin-preview' => 'پیش‌نمایش',
+'prefs-math' => 'نمایش ریاضیات',
+'datedefault' => 'بدون ترجیح',
+'prefs-datetime' => 'تاریخ و زمان',
+'prefs-personal' => 'داده‌های کاربر',
+'prefs-rc' => 'تغییرات اخیر',
+'prefs-watchlist' => 'فهرست پی‌گیری‌ها',
+'prefs-watchlist-days' => 'تعداد روزهایی که باید در فهرست پی‌گیری‌ها نمایش داده شود:',
+'prefs-watchlist-days-max' => '(حداکثر ۷ روز)',
+'prefs-watchlist-edits' => 'تعداد ویرایشهای نشان‌داده در فهرست پی‌گیری‌های گسترش‌یافته:',
+'prefs-watchlist-edits-max' => '(حداکثر تعداد: ۱۰۰۰)',
+'prefs-watchlist-token' => 'نشانهٔ فهرست پی‌گیری:',
+'prefs-misc' => 'تنظیمات متفرقه',
+'prefs-resetpass' => 'تغییر گذرواژه',
+'prefs-email' => 'گزینه‌های پست الکترونیک',
+'prefs-rendering' => 'نمایش صفحه',
+'saveprefs' => 'ذخیرهٔ ترجیحات',
+'resetprefs' => 'صفر کردن ترجیحات',
+'restoreprefs' => 'باز گرداندن تمام تنظیمات پیش‌فرض',
+'prefs-editing' => 'در حال ویرایش',
+'prefs-edit-boxsize' => 'اندازهٔ پنجرهٔ ویرایش.',
+'rows' => 'تعداد سطرها',
+'columns' => 'تعداد ستون‌ها',
+'searchresultshead' => 'تنظیمات نتیجهٔ جستجو',
+'resultsperpage' => 'تعداد نتایج در هر صفحه',
+'contextlines' => 'تعداد سطرها در هر نتیجه',
+'contextchars' => 'تعداد نویسه‌های اطراف در سطر',
+'stub-threshold' => 'آستانهٔ ویرایش پیوندهای <a href="#" class="stub">ناقص</a>:',
+'recentchangesdays' => 'تعداد روزهای نمایش داده‌شده در تغییرات اخیر:',
+'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روز|روز}})',
+'recentchangescount' => 'تعداد پیش‌فرض ویرایش‌های نمایش یافته:',
+'prefs-help-recentchangescount' => 'این گزینه شامل تغییرات اخیر، تاریخچهٔ صفحه‌ها و سیاهه‌ها می‌شود.',
+'prefs-help-watchlist-token' => 'پر کردن این قسمت با یک کلید رمز باعث می‌شود که یک خوراک آراس‌اس برای فهرست پی‌گیری شما ایجاد شود.
+هر کس که این کلید را بداند می‌تواند فهرست پی‌گیری شما را بخواند، پس یک کلید ایمن انتخاب کنید.
+در این‌جا یک مقدار که به طور تصادفی ایجاد شده برای استفادهٔ شما ارائه می‌شود: $1',
+'savedprefs' => 'ترجیحات شما ذخیره شد.',
+'timezonelegend' => 'منطقهٔ زمانی:',
+'localtime' => 'زمان محلی:',
+'timezoneuseserverdefault' => 'استفاده از پیش‌فرض کارگزار',
+'timezoneuseoffset' => 'دیگر (اختلاف را مشخص کنید)',
+'timezoneoffset' => 'اختلاف¹:',
+'servertime' => 'زمان کارگزار:',
+'guesstimezone' => 'از مرورگر گرفته شود',
+'timezoneregion-africa' => 'آفریقا',
+'timezoneregion-america' => 'آمریکا',
+'timezoneregion-antarctica' => 'قطب جنوبی',
+'timezoneregion-arctic' => 'قطب شمالی',
+'timezoneregion-asia' => 'آسیا',
+'timezoneregion-atlantic' => 'اقیانوس اطلس',
+'timezoneregion-australia' => 'استرالیا',
+'timezoneregion-europe' => 'اروپا',
+'timezoneregion-indian' => 'اقیانوس هند',
+'timezoneregion-pacific' => 'اقیانوس آرام',
+'allowemail' => 'امکان دریافت پست الکترونیکی از دیگر کاربران',
+'prefs-searchoptions' => 'گزینه‌های جستجو',
+'prefs-namespaces' => 'فضاهای نام',
+'defaultns' => 'در غیر این صورت جستجو در این فضاهای نام:',
+'default' => 'پیش‌فرض',
+'prefs-files' => 'پرونده‌ها',
+'prefs-custom-css' => 'سی‌اس‌اس شخصی',
+'prefs-custom-js' => 'جاوااسکریپت شخصی',
+'prefs-reset-intro' => 'شما می‌توانید از این صفحه برای بازگرداندن تنظیمات خود به پیش‌فرض استفاده کنید. این کار بازگشت‌ناپذیر است.',
+'prefs-emailconfirm-label' => 'تایید پست الکترونیک:',
+'prefs-textboxsize' => 'اندازهٔ جعبهٔ ویرایش',
+'youremail' => 'پست الکترونیکی شما*',
+'username' => 'نام کاربری:',
+'uid' => 'شمارهٔ کاربری:',
+'prefs-memberingroups' => 'عضویت در {{PLURAL:$1|گروه|گروه‌ها}}:',
+'prefs-registration' => 'زمان ثبت‌نام:',
+'yourrealname' => 'نام واقعی:',
+'yourlanguage' => 'زبان:',
+'yourvariant' => 'گویش:',
+'yournick' => 'امضا:',
+'prefs-help-signature' => 'نظرهای نوشته شده در صفحهٔ بحث باید با «<nowiki>~~~~</nowiki>» امضا شوند؛ این علامت به طور خودکار به امضای شما و مهر تاریخ تبدیل خواهد شد.',
+'badsig' => 'امضای خام غیرمجاز؛ لطفاً برچسب‌های HTML را بررسی کنید.',
+'badsiglength' => 'امضای شما بیش از اندازه طولانی است.
+امضا باید کمتر از $1 {{PLURAL:$1|نویسه|نویسه}} طول داشته باشد.',
+'yourgender' => 'جنسیت:',
+'gender-unknown' => 'مشخص نشده',
+'gender-male' => 'مذکر',
+'gender-female' => 'مونث',
+'prefs-help-gender' => 'اختیاری: به منظور خطاب گرفتن با جنسیت صحیح توسط نرم‌افزار به کار می‌رود. این اطلاعات عمومی خواهد بود.',
+'email' => 'پست الکترونیکی',
+'prefs-help-realname' => '*نام واقعی (اختیاری): اگر تصمیم به ذکر آن بگیرید هنگام ارجاع به آثارتان و انتساب آنها به شما از نام واقعی‌تان استفاده خواهد شد.',
+'prefs-help-email' => '* نشانی پست الکترونیکی اختیاری است اما ارسال یک گذرواژه جدید در صورتی که گذرواژه خود را فراموش کردید ممکن می‌سازد.
+شما هم‌چنین می‌توانید انتخاب کنید که کاربران از طریق صفحهٔ کاربری یا صفحهٔ بحث کاربری، بدون فاش شدن هویت‌‌ و نشانی واقعی پست الکترونیک‌تان، با شما تماس بگیرند.',
+'prefs-help-email-required' => 'نشانی پست الکترونیکی الزامی است.',
+'prefs-info' => 'اطلاعات اولیه',
+'prefs-i18n' => 'بین‌المللی‌سازی',
+'prefs-signature' => 'امضا',
+'prefs-dateformat' => 'آرایش تاریخ',
+'prefs-timeoffset' => 'فاصلهٔ زمانی',
+'prefs-advancedediting' => 'گزینه‌های پیشرفته',
+'prefs-advancedrc' => 'گزینه‌های پیشرفته',
+'prefs-advancedrendering' => 'گزینه‌های پیشرفته',
+'prefs-advancedsearchoptions' => 'گزینه‌های پیشرفته',
+'prefs-advancedwatchlist' => 'گزینه‌های پیشرفته',
+'prefs-display' => 'گزینه‌های نمایش',
+'prefs-diffs' => 'تفاوت‌ها',
# User rights
-'userrights' => 'مدیریت اختیارات کاربر', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'مدیریت گروه‌های کاربری',
-'userrights-user-editname' => 'یک نام کاربری وارد کنید:',
-'editusergroup' => 'ویرایش گروه‌های کاربری',
-'editinguser' => "تغییر اختیارات کاربری برای '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'ویرایش گروه‌های کاربری',
-'saveusergroups' => 'ثبت گروه‌های کاربری',
-'userrights-groupsmember' => 'عضو:',
-'userrights-groups-help' => 'شما می‌توانید گروه‌هایی که کاربر در آن قرار دارد را تغییر دهید.
+'userrights' => 'مدیریت اختیارات کاربر',
+'userrights-lookup-user' => 'مدیریت گروه‌های کاربری',
+'userrights-user-editname' => 'یک نام کاربری وارد کنید:',
+'editusergroup' => 'ویرایش گروه‌های کاربری',
+'editinguser' => "تغییر اختیارات کاربری برای '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'ویرایش گروه‌های کاربری',
+'saveusergroups' => 'ثبت گروه‌های کاربری',
+'userrights-groupsmember' => 'عضو:',
+'userrights-groupsmember-auto' => 'عضو ضمنی:',
+'userrights-groups-help' => 'شما می‌توانید گروه‌هایی که کاربر در آن قرار دارد را تغییر دهید.
یک جعبه علامت خورده به این معنی است که کاربر در آن گروه قرار دارد.
یک جعبه خالی به این معنی است که کاربر در آن گروه قرار ندارد.',
-'userrights-reason' => 'دلیل:',
-'userrights-no-interwiki' => 'شما اجازه تغییر اختیارات کاربران دیگر ویکی‌ها را ندارید.',
-'userrights-nodatabase' => 'پایگاه داده $1 وجود ندارد یا محلی نیست.',
-'userrights-nologin' => 'شما باید با یک حساب کاربری دارای اختیار مدیریتی [[Special:UserLogin|به سامانه وارد شوید]] تا بتوانید اختیارات کاربران را تعیین کنید.',
-'userrights-notallowed' => 'حساب کاربری شما اجازه تغییر اختیارات کاربری را ندارد.',
-'userrights-changeable-col' => 'گروه‌هایی که می‌توانید تغییر دهید',
-'userrights-unchangeable-col' => 'گروه‌هایی که نمی‌توانید تغییر دهید',
+'userrights-reason' => 'دلیل:',
+'userrights-no-interwiki' => 'شما اجازه تغییر اختیارات کاربران دیگر ویکی‌ها را ندارید.',
+'userrights-nodatabase' => 'پایگاه داده $1 وجود ندارد یا محلی نیست.',
+'userrights-nologin' => 'شما باید با یک حساب کاربری دارای اختیار مدیریتی [[Special:UserLogin|به سامانه وارد شوید]] تا بتوانید اختیارات کاربران را تعیین کنید.',
+'userrights-notallowed' => 'حساب کاربری شما اجازه تغییر اختیارات کاربری را ندارد.',
+'userrights-changeable-col' => 'گروه‌هایی که می‌توانید تغییر دهید',
+'userrights-unchangeable-col' => 'گروه‌هایی که نمی‌توانید تغییر دهید',
# Groups
'group' => 'گروه:',
@@ -1512,6 +1572,7 @@ $2',
'right-bigdelete' => 'حذف صفحه‌هایی که تاریخچهٔ بزرگی دارند',
'right-deleterevision' => 'حذف و احیای نسخه‌های خاصی از صفحه',
'right-deletedhistory' => 'مشاهدهٔ موارد حذف شده از تاریخچه، بدون دیدن متن آن‌ها',
+'right-deletedtext' => 'مشاهدهٔ متن حذف شده و تغییرات بین نسخه‌های حذف شده',
'right-browsearchive' => 'جستجوی صفحه‌های حذف شده',
'right-undelete' => 'احیای صفحهٔ حذف شده',
'right-suppressrevision' => 'بازبینی و احیای ویرایش‌هایی که از مدیران پنهان شده‌اند',
@@ -1525,6 +1586,8 @@ $2',
'right-editprotected' => 'ویرایش صفحه‌های حفاظت شده (به شرط نبود حفاظت آبشاری)',
'right-editinterface' => 'ویرایش رابط کاربری',
'right-editusercssjs' => 'ویرایش صفحه‌های CSS و JS دیگر کاربرها',
+'right-editusercss' => 'ویرایش صفحه‌های CSS دیگر کاربرها',
+'right-edituserjs' => 'ویرایش صفحه‌های JS دیگر کاربرها',
'right-rollback' => 'واگردانی سریع ویرایش‌های آخرین کاربری که یک صفحه را ویرایش کرده‌است',
'right-markbotedits' => 'علامت زدن ویرایش‌های واگردانی شده به عنوان ویرایش ربات',
'right-noratelimit' => 'تاثیر ناپذیر از محدودیت سرعت',
@@ -1541,6 +1604,8 @@ $2',
'right-siteadmin' => 'قفل کردن و باز کردن پایگاه داده',
'right-reset-passwords' => 'از نو تنظیم کردن گذرواژهٔ دیگر کاربران',
'right-override-export-depth' => 'برون‌ریزی صفحه‌ها شامل صفحه‌های پیوند شده تا عمق ۵',
+'right-versiondetail' => 'نمایش اطلاعات مفصل نسخهٔ نرم‌افزار',
+'right-sendemail' => 'ارسال پست الکترونیک به دیگر کاربران',
# User rights log
'rightslog' => 'سیاههٔ اختیارات کاربر',
@@ -1590,6 +1655,15 @@ $2',
'recentchanges-legend' => 'گزینه‌های تغییرات اخیر',
'recentchangestext' => 'آخرین تغییرات ویکی را در این صفحه پی‌گیری کنید.',
'recentchanges-feed-description' => 'ردیابی آخرین تغییرات این ویکی در این خورد.',
+'recentchanges-label-legend' => 'شرح: $1.',
+'recentchanges-legend-newpage' => '$1 - صفحهٔ جدید',
+'recentchanges-label-newpage' => 'این ویرایش یک صفحهٔ جدید ایجاد کرده‌است',
+'recentchanges-legend-minor' => '$1 - ویرایش جزئی',
+'recentchanges-label-minor' => 'این ویرایش جزئی است',
+'recentchanges-legend-bot' => '$1 - ویرایش ربات',
+'recentchanges-label-bot' => 'این ویرایش توسط یک ربات انجام شده‌است',
+'recentchanges-legend-unpatrolled' => '$1 - ویرایش گشت‌زنی نشده',
+'recentchanges-label-unpatrolled' => 'این ویرایش هنوز گشت‌زنی نشده‌است',
'rcnote' => "در زیر {{PLURAL:$1|'''۱''' تغییر|آخرین '''$1''' تغییر}} در آخرین {{PLURAL:$2|روز|'''$2''' روز}} را، تا $5، $4 می‌بینید.",
'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
@@ -1617,6 +1691,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'تغییرات مرتبط',
+'recentchangeslinked-feed' => 'تغییرات مرتبط',
+'recentchangeslinked-toolbox' => 'تغییرات مرتبط',
'recentchangeslinked-title' => 'تغییرهای مرتبط با $1',
'recentchangeslinked-backlink' => '→ $1',
'recentchangeslinked-noresult' => 'در بازهٔ ‌زمانی داده‌شده تغییری در صفحه‌های پیوندداده رخ نداده‌است.',
@@ -1628,8 +1704,8 @@ $2',
# Upload
'upload' => 'بارگذاری پرونده',
'uploadbtn' => 'بارگذاری پرونده',
-'reupload' => 'بارگذاری دوباره',
'reuploaddesc' => 'بازگشت به فرم بارگذاری',
+'upload-tryagain' => 'ارسال توضیحات تغییر یافته پرونده',
'uploadnologin' => 'به سامانه وارد نشده‌اید',
'uploadnologintext' => 'برای بار کردن پرونده‌ها باید [[Special:UserLogin|به سامانه وارد شوید]].',
'upload_directory_missing' => 'شاخهٔ بارگذاری ($1) وجود ندارد و قابل ایجاد نیست.',
@@ -1663,6 +1739,7 @@ $2',
'illegalfilename' => 'نام پرونده «$1» نویسه‌هایی را شامل می‌شود که در نام صفحه‌ها مجاز نیستند.
لطفاً نام پرونده را تغییر دهید و آن را دوباره بارگذاری کنید.',
'badfilename' => 'نام پرونده به «$1» تغییر کرد.',
+'filetype-mime-mismatch' => 'پسوند پرونده با نوع MIME آن مطابقت ندارد.',
'filetype-badmime' => 'پرونده‌هایی که نوع MIME آن‌ها $1 باشد برای بارگزاری مجاز نیستند.',
'filetype-bad-ie-mime' => 'این پرونده را نمی‌توانید بارگذاری کنید زیرا اینترنت اکسپلورر آن را به عنوان «$1» تشخیص می‌دهد، که یک نوع پروندهٔ غیر مجاز و احتمالاً خطرناک است.',
'filetype-unwanted-type' => "&lrm;'''\".\$1\"''' یک نوع پرونده ناخواسته است.
@@ -1683,7 +1760,6 @@ $2',
* نام پرونده‌ای که بارگزاری کردید این بود:'''<tt>[[:$1]]</tt>'''
* نام پرونده‌ای که از قبل موجود است این است:'''<tt>[[:$2]]</tt>'''
لطفاً یک نام دیگر انتخاب کنید.",
-'fileexists-thumb' => "<center>'''تصویر از قبل موجود است'''</center>",
'fileexists-thumbnail-yes' => "به نظر می‌رسد که این پرونده، یک تصویر کوچک شده (بندانگشتی یا thumbnail) باشد. [[$1|انگشتی]]
لطفاً پروندهٔ '''<tt>[[:$1]]</tt>''' را بررسی کنید.
اگر پرونده‌ای که بررسی کردید، همین تصویر در اندازهٔ اصلی‌اش است، نیازی به بارگذاری یک نسخهٔ بندانگشتی اضافه نیست.",
@@ -1699,6 +1775,7 @@ $2',
'file-deleted-duplicate' => 'یک پرونده نظیر این پرونده ([[$1]]) قبلاً حذف شده‌است. شما باید تاریخچهٔ حذف آن پرونده را قبل از بارگذاری مجدد آن ببینید.',
'successfulupload' => 'بار کردن با موفقیت انجام شد',
'uploadwarning' => 'هشدار بار کردن',
+'uploadwarning-text' => 'لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.',
'savefile' => 'ذخیره‌ی پرونده',
'uploadedimage' => '«[[$1]]» بار شد',
'overwroteimage' => 'نسخه جدیدی از «[[$1]]» را بارگذاری کرد.',
@@ -1706,11 +1783,14 @@ $2',
'uploaddisabledtext' => 'امکان بارگذاری پرونده غیرفعال شده‌است.',
'php-uploaddisabledtext' => 'بارگذاری پرونده‌های پی‌اچ‌پی غیر فعال است. لطفاً تنظیمات file_uploads را بررسی کنید.',
'uploadscripted' => 'این صفحه حاوی اسکریپت یا کدی اچ‌تی‌ام‌ال است که ممکن است به‌نادرست توسط مرورگر وب تفسیر شود.',
-'uploadcorrupt' => 'این پرونده خراب است و یا پسوندی اشتباه دارد. لطفاً پرونده را بررسی نمایید و آن را دوباره بار کنید.',
'uploadvirus' => 'این پرونده ویروس دارد! جزئیات : $1',
+'upload-source' => 'پرونده منبع',
'sourcefilename' => 'نام پروندهٔ اصلی:',
+'sourceurl' => 'نشانی منبع:',
'destfilename' => 'نام پروندهٔ مقصد:',
'upload-maxfilesize' => 'حداکثر اندازهٔ پرونده: $1',
+'upload-description' => 'توضیحات پرونده',
+'upload-options' => 'گزینه‌های بارگذاری',
'watchthisupload' => 'پی‌گیری این پرونده',
'filewasdeleted' => 'پرونده‌ای با همین نام پیشتر بارگذاری و پس از آن پاک شده‌است. بهتر است پیش از بارگذاری مجدد نگاهی به $1 بیندازید.',
'upload-wasdeleted' => "'''هشدار: شما در حال بارگذاری پرونده‌ای هستید که پیش از این حذف شده است.'''
@@ -1720,15 +1800,46 @@ $2',
'filename-bad-prefix' => "نام پرونده‌ای که بارگذاری می‌کنید با '''$1''' آغاز می‌شود که یک پیشوند مخصوص تصاویر ثبت شده توسط دوربین‌های دیجیتال است.
لطفاً نامی بهتر برای پرونده برگزینید.",
-'upload-proto-error' => 'قرارداد نادرست',
-'upload-proto-error-text' => 'بارگذاری از دوردست به نشانی‌هایی که با <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code> آغاز شوند نیاز دارد.',
-'upload-file-error' => 'خطای داخلی',
-'upload-file-error-text' => 'هنگام تلاش برای ایجاد یک پروندهٔ موقت در کارگزار یک خطای داخلی رخ داد.
+'upload-proto-error' => 'قرارداد نادرست',
+'upload-proto-error-text' => 'بارگذاری از دوردست به نشانی‌هایی که با <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code> آغاز شوند نیاز دارد.',
+'upload-file-error' => 'خطای داخلی',
+'upload-file-error-text' => 'هنگام تلاش برای ایجاد یک پروندهٔ موقت در کارگزار یک خطای داخلی رخ داد.
لطفاً با یکی از [[Special:ListUsers/sysop|مدیران]] تماس بگیرید.',
-'upload-misc-error' => 'خطایی نامعلوم در بارگذاری',
-'upload-misc-error-text' => 'هنگام بارگذاری، خطایی نامعلوم رخ داد.
+'upload-misc-error' => 'خطایی نامعلوم در بارگذاری',
+'upload-misc-error-text' => 'هنگام بارگذاری، خطایی نامعلوم رخ داد.
لطفاً اطمینان حاصل کنید که نشانی اینترنتی معتبر و قابل دسترسی است و بعد دوباره تلاش کنید.
اگر مشکل همچنان برقرار بود با یکی از [[Special:ListUsers/sysop|مدیران]] تماس بگیرید.',
+'upload-too-many-redirects' => 'نشانی اینترتی حاوی تعداد بیش از اندازه‌ای تغییر مسیر است',
+'upload-unknown-size' => 'اندازهٔ نامشخص',
+'upload-http-error' => 'یک خطای اچ‌تی‌تی‌پی رخ داد: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'منع دسترسی',
+'img-auth-nopathinfo' => 'PATH_INFO موجود نیست.
+کارساز شما برای رد کردن این مقدار تنظیم نشده‌است.
+ممکن است کارساز مبتنی بر سی‌جی‌آی باشد و از img_auth پشتیبانی نکند.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
+'img-auth-notindir' => 'مسیر درخواست شده در شاخهٔ بارگذاری تنظیم نشده‌است.',
+'img-auth-badtitle' => 'امکان ایجاد یک عنوان مجاز از «$1» وجود ندارد.',
+'img-auth-nologinnWL' => 'شما به سامانه وارد نشده‌اید و «$1» در فهرست سفید قرار ندارد.',
+'img-auth-nofile' => 'پرونده «$1» وجود ندارد.',
+'img-auth-isdir' => 'شما می‌خواهید به شاخهٔ «$1» دسترسی پیدا کنید.
+تنها دسترسی به پرونده مجاز است.',
+'img-auth-streaming' => 'در حال جاری ساختن «$1».',
+'img-auth-public' => 'عملکرد img_auth.php برونداد پرونده‌ها از یک ویکی خصوصی است.
+این ویکی به عنوان یک ویکی عمومی تنظیم شده‌است.
+برای امنیت بهینه، img_auth.php غیر فعال است.',
+'img-auth-noread' => 'کاربر دسترسی خواندن «$1» را ندارد.',
+
+# HTTP errors
+'http-invalid-url' => 'نشانی نامعتبر: $1',
+'http-invalid-scheme' => 'نشانی‌های اینترنتی با طرح «$1» پشتیبانی نمی‌شوند',
+'http-request-error' => 'درخواست اچ‌تی‌تی‌پی ناموفق به علت خطای ناشناخته',
+'http-read-error' => 'خطای خواندن اچ‌تی‌تی‌پی.',
+'http-timed-out' => 'مهلت درخواست اچ‌تی‌تی‌پی به سر رسید.',
+'http-curl-error' => 'خطا در آوردن نشانی اینترنتی: $1',
+'http-host-unreachable' => 'دسترسی به نشانی اینترنتی ممکن نشد',
+'http-bad-status' => 'در حین درخواست اچ‌تی‌تی‌پی خطایی رخ داد: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'دسترسی به URL ممکن نشد.',
@@ -1737,6 +1848,7 @@ $2',
'upload-curl-error28-text' => 'این وب‌گاه بیش از اندازه در پاسخ تعلل کرد. لطفاً بررسی کنید که آیا وب‌گاه فعال و برخط است یا نه. سپس لختی درنگ کنید و دوباره تلاش نمایید. شاید بد نباشد که در زمان خلوت‌تری دوباره تلاش کنید.',
'license' => 'اجازه‌نامه:',
+'license-header' => 'اجازه‌نامه',
'nolicense' => 'هیچیک انتخاب نشده‌است.',
'license-nopreview' => '(پیش‌نمایش وجود ندارد)',
'upload_source_url' => '(یک نشانی اینترنتی معتبر و قابل دسترسی برای عموم)',
@@ -1757,6 +1869,7 @@ $2',
'listfiles_count' => 'نسخه‌ها',
# File description page
+'file-anchor-link' => 'پرونده',
'filehist' => 'تاریخچه پرونده',
'filehist-help' => 'روی تاریخ‌ها کلیک کنید تا نسخهٔ مربوط را ببینید.',
'filehist-deleteall' => 'حذف همه',
@@ -1771,6 +1884,7 @@ $2',
'filehist-dimensions' => 'ابعاد',
'filehist-filesize' => 'اندازه پرونده',
'filehist-comment' => 'توضیح',
+'filehist-missing' => 'پروندهٔ ناموجود',
'imagelinks' => 'پیوندهای پرونده',
'linkstoimage' => '{{PLURAL:$1|صفحهٔ|صفحه‌های}} زیر به این تصویر پیوند {{PLURAL:$1|دارد|دارند}}:',
'linkstoimage-more' => 'بیش از $1 صفحه به این پرونده پیوند {{PLURAL:$1|می‌دهد|می‌دهند}}.
@@ -1780,15 +1894,16 @@ $2',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|پیوندهای دیگر]] به این پرونده را ببینید.',
'redirectstofile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر به این صفحه تغییر مسیر {{PLURAL:$1|می‌دهد|می‌دهند}}:',
'duplicatesoffile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر نسخهٔ تکراری این پرونده {{PLURAL:$1|است|هستند}} ([[Special:FileDuplicateSearch/$2|اطلاعات بیشتر]]):',
-'sharedupload' => 'این پرونده در $1 قرار دارد و ممکن است در دیگر پروژه‌ها هم استفاده شود.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'لطفاً برای اطلاعات بیشتر $1 را ببینید.',
-'shareduploadwiki-desc' => 'توضیحات در مورد $1 آن در آن‌جا، در ادامه نشان داده شده‌است.',
-'shareduploadwiki-linktext' => 'صفحهٔ توصیف پرونده',
-'noimage' => 'هیچ پرونده‌ای با این نام موجود نیست، اما شما می‌توانید $1',
-'noimage-linktext' => 'آن را بار کنید',
+'sharedupload' => 'این پرونده در $1 قرار دارد و ممکن است در دیگر پروژه‌ها هم استفاده شود.',
+'sharedupload-desc-there' => 'این پرونده در $1 قرار دارد و ممکن است در دیگر پروژه‌ها هم استفاده شود.
+برای اطلاعات بیشتر لطفاً [$2 صفحهٔ توضیحات پرونده] را ببینید.',
+'sharedupload-desc-here' => 'این پرونده در $1 قرار دارد و ممکن است در دیگر پروژه‌ها هم استفاده شود.
+توضیحات موجود در [$2 صفحهٔ توضیحات پرونده] در آن‌جا، در زیر نشان داده شده‌است.',
+'filepage-nofile' => 'پرونده‌ای با این نام وجود ندارد.',
+'filepage-nofile-link' => 'پرونده‌ای با این نام وجود ندارد، اما شما می‌توانید آن را [$1 بارگذاری کنید].',
'uploadnewversion-linktext' => 'بارکردن نسخهٔ جدیدی از پرونده',
-'shared-repo-from' => 'از $1', # $1 is the repository name
-'shared-repo' => 'یک مخزن مشترک', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'از $1',
+'shared-repo' => 'یک مخزن مشترک',
# File reversion
'filerevert' => 'واگردانی $1',
@@ -1820,6 +1935,7 @@ $2',
** نقض حق تکثیر
** پرونده تکراری',
'filedelete-edit-reasonlist' => 'ویرایش فهرست دلایل',
+'filedelete-maintenance' => 'حذف و احیای پرونده‌ها در مدت نگهداری به طور موقت غیر فعال است.',
# MIME search
'mimesearch' => 'جستجوی بر اساس MIME',
@@ -1841,7 +1957,7 @@ $2',
# Random page
'randompage' => 'صفحهٔ تصادفی',
-'randompage-nopages' => 'هیچ صفحه‌ای در فضای نام «$1» موجود نیست.',
+'randompage-nopages' => 'هیچ صفحه‌ای در این {{PLURAL:$2|فضای نام|فضاهای نام}} موجود نیست: $1',
# Random redirect
'randomredirect' => 'تغییرمسیر تصادفی',
@@ -1853,6 +1969,7 @@ $2',
'statistics-header-edits' => 'آمار ویرایشات',
'statistics-header-views' => 'آمار بازدیدها',
'statistics-header-users' => 'آمار کاربران',
+'statistics-header-hooks' => 'آمارهای دیگر',
'statistics-articles' => 'صفحه محتویات',
'statistics-pages' => 'صفحه‌ها',
'statistics-pages-desc' => 'تمام صفحه‌های این ویکی، از جمله صفحه‌های بحث، تغییر مسیر و غیره',
@@ -1882,8 +1999,8 @@ $2',
'brokenredirects' => 'تغییرمسیرهای خراب',
'brokenredirectstext' => 'تغییرمسیرهای زیر به یک صفحهٔ ناموجود پیوند دارند:',
-'brokenredirects-edit' => '(ویرایش)',
-'brokenredirects-delete' => '(حذف)',
+'brokenredirects-edit' => 'ویرایش',
+'brokenredirects-delete' => 'حذف',
'withoutinterwiki' => 'صفحه‌های بدون پیوند میان‌ویکی',
'withoutinterwiki-summary' => 'این صفحه‌ها پیوندی به صفحه‌ای به زبان دیگر نمی‌دارند:',
@@ -1991,7 +2108,7 @@ $2',
# Special:Categories
'categories' => 'رده‌های صفحه',
-'categoriespagetext' => 'رده‌های زیر حاوی صفحه یا پرونده هستند.
+'categoriespagetext' => '{{PLURAL:$1|ردهٔ|رده‌های}} زیر حاوی صفحه یا پرونده {{PLURAL:$1|است|هستند}}.
[[Special:UnusedCategories|رده‌های استفاده نشده]] در این‌جا نمایش داده نشده‌اند.
هم‌چنین [[Special:WantedCategories|رده‌های مورد نیاز]] را ببینید.',
'categoriesfrom' => 'نمایش رده‌ها با شروع از:',
@@ -1999,8 +2116,9 @@ $2',
'special-categories-sort-abc' => 'مرتب کردن الفبایی',
# Special:DeletedContributions
-'deletedcontributions' => 'مشارکت‌های حذف شده',
-'deletedcontributions-title' => 'مشارکت‌های حذف شده',
+'deletedcontributions' => 'مشارکت‌های حذف شده',
+'deletedcontributions-title' => 'مشارکت‌های حذف شده',
+'sp-deletedcontributions-contribs' => 'مشارکت‌ها',
# Special:LinkSearch
'linksearch' => 'پیوندهای بیرونی',
@@ -2015,6 +2133,16 @@ $2',
'listusersfrom' => 'نمایش کاربران با شروع از:',
'listusers-submit' => 'نمایش',
'listusers-noresult' => 'هیچ کاربری یافت نشد.',
+'listusers-blocked' => '(بسته شده)',
+
+# Special:ActiveUsers
+'activeusers' => 'فهرست کاربران فعال',
+'activeusers-intro' => 'در زیر فهرستی از کاربرانی را می‌بینید که در $1 {{PLURAL:$1|روز|روز}} گذشته فعالیتی داشته‌اند.',
+'activeusers-count' => '$1 {{PLURAL:$1|ویرایش|ویرایش}} در {{PLURAL:$3|روز|$3 روز}} اخیر',
+'activeusers-from' => 'نمایش کاربران با آغاز از:',
+'activeusers-hidebots' => 'نهفتن ربات‌ها',
+'activeusers-hidesysops' => 'نهفتن مدیران',
+'activeusers-noresult' => 'کاربری پیدا نشد.',
# Special:Log/newusers
'newuserlogpage' => 'سیاههٔ ایجاد کاربر',
@@ -2025,17 +2153,23 @@ $2',
'newuserlog-autocreate-entry' => 'حساب به طور خودکار ساخته شد',
# Special:ListGroupRights
-'listgrouprights' => 'اختیارات گروه‌های کاربری',
-'listgrouprights-summary' => 'فهرست زیر شامل گروه‌های کاربری تعریف شده در این ویکی و اختیارات داده شده به آن‌ها است.
+'listgrouprights' => 'اختیارات گروه‌های کاربری',
+'listgrouprights-summary' => 'فهرست زیر شامل گروه‌های کاربری تعریف شده در این ویکی و اختیارات داده شده به آن‌ها است.
اطلاعات بیشتر در مورد هر یک از اختیارات را در [[{{MediaWiki:Listgrouprights-helppage}}]] بیابید.',
-'listgrouprights-group' => 'گروه',
-'listgrouprights-rights' => 'دسترسی‌ها',
-'listgrouprights-helppage' => 'Help:دسترسی‌های گروهی',
-'listgrouprights-members' => '(فهرست اعضا)',
-'listgrouprights-addgroup' => 'می‌تواند این {{PLURAL:$2|گروه|گروه‌ها}} را اضافه کند: $1',
-'listgrouprights-removegroup' => 'می‌تواند این {{PLURAL:$2|گروه|گروه‌ها}} را حذف کند: $1',
-'listgrouprights-addgroup-all' => 'می‌تواند تمام گروه‌ها را اضافه کند',
-'listgrouprights-removegroup-all' => 'می‌تواند تمام گروه‌ها را حذف کند',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">اختیارات داده شده</span>
+* <span class="listgrouprights-revoked">اختیارات گرفته شده</span>',
+'listgrouprights-group' => 'گروه',
+'listgrouprights-rights' => 'دسترسی‌ها',
+'listgrouprights-helppage' => 'Help:دسترسی‌های گروهی',
+'listgrouprights-members' => '(فهرست اعضا)',
+'listgrouprights-addgroup' => 'می‌تواند این {{PLURAL:$2|گروه|گروه‌ها}} را اضافه کند: $1',
+'listgrouprights-removegroup' => 'می‌تواند این {{PLURAL:$2|گروه|گروه‌ها}} را حذف کند: $1',
+'listgrouprights-addgroup-all' => 'می‌تواند تمام گروه‌ها را اضافه کند',
+'listgrouprights-removegroup-all' => 'می‌تواند تمام گروه‌ها را حذف کند',
+'listgrouprights-addgroup-self' => 'می‌تواند حساب خود را به این {{PLURAL:$2|گروه|گروه‌ها}} اضافه کند: $1',
+'listgrouprights-removegroup-self' => 'می‌تواند حساب خود را از این {{PLURAL:$2|گروه|گروه‌ها}} حذف کند: $1',
+'listgrouprights-addgroup-self-all' => 'می‌تواند به حساب خود را به تمام گروه‌ها اضافه کند',
+'listgrouprights-removegroup-self-all' => 'می‌تواند به حساب خود را از تمام گروه‌ها حذف کند',
# E-mail user
'mailnologin' => 'نشانی‌ای از فرستنده وجود ندارد.',
@@ -2130,7 +2264,9 @@ $NEWPAGE
سامانهٔ آگاهی‌رسانی {{SITENAME}}.
--
-برای تغییر تنظیمات فهرست پی‌گیری‌هایتان به {{fullurl:{{ns:special}}:Watchlist/edit}} بروید.
+برای تغییر تنظیمات فهرست پی‌گیری‌هایتان به {{fullurl:{{#special:Watchlist}}/edit}} بروید.
+
+برای حذف صفحه از فهرصت پی‌گیری‌هایتان به $UNWATCHURL بروید.
بازخورد و کمک بیشتر:
{{fullurl:{{ns:help}}:Contents}}',
@@ -2145,9 +2281,10 @@ $NEWPAGE
'delete-confirm' => 'حذف «$1»',
'delete-backlink' => '← $1',
'delete-legend' => 'حذف',
-'historywarning' => 'هشدار! صفحه‌ای که دارید حذف می‌کنید، تاریخچه‌ای دارد:',
+'historywarning' => "'''هشدار!''' صفحه‌ای که قصد دارید حذف کنید تاریخچه‌ای شامل حدود $1 {{PLURAL:$1|نسخه|نسخه}} دارد:",
'confirmdeletetext' => 'شما در حال حذف کردن یک صفحه یا تصویر از پایگاه‌ داده همراه با تمام تاریخچهٔ آن هستید. لطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.',
'actioncomplete' => 'عمل انجام شد.',
+'actionfailed' => 'عمل ناموفق',
'deletedtext' => '«<nowiki>$1</nowiki>» حذف شده است.
برای سابقهٔ حذف‌های اخیر به $2 مراجعه کنید.',
'deletedarticle' => '«$1» حذف شد',
@@ -2172,19 +2309,20 @@ $NEWPAGE
با احتیاط ادامه دهید.',
# Rollback
-'rollback' => 'واگردانی ویرایش‌ها',
-'rollback_short' => 'واگرد',
-'rollbacklink' => 'واگردانی',
-'rollbackfailed' => 'واگردانی نشد',
-'cantrollback' => 'نمی‌توان ویرایش را واگرداند. آخرین مشارکت‌کننده تنها مؤلف این مقاله است.',
-'alreadyrolled' => 'واگردانی آخرین ویرایش [[:$1]] به وسیلهٔ [[User:$2|$2]]{{int:pipe-separator}}([[User talk:$2|بحث]]) ممکن نیست؛
+'rollback' => 'واگردانی ویرایش‌ها',
+'rollback_short' => 'واگرد',
+'rollbacklink' => 'واگردانی',
+'rollbackfailed' => 'واگردانی نشد',
+'cantrollback' => 'نمی‌توان ویرایش را واگرداند. آخرین مشارکت‌کننده تنها مؤلف این مقاله است.',
+'alreadyrolled' => 'واگردانی آخرین ویرایش [[:$1]] به وسیلهٔ [[User:$2|$2]]{{int:pipe-separator}}([[User talk:$2|بحث]]) ممکن نیست؛
پیش از این شخص دیگری مقاله را ویرایش یا واگردانی کرده‌است.
آخرین ویرایش توسط [[User:$3|$3]] ([[User talk:$3|بحث]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) انجام شده‌است.',
-'editcomment' => "خلاصهٔ ویرایش این بود: «''$1''».", # only shown if there is an edit comment
-'revertpage' => 'ویرایش $2 واگردانده شد به آخرین تغییری که $1 انجام داده بود', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'ویرایش‌های $1 واگردانی شد؛ صفحه به ویرایش $2 برگردانده شد.',
-'sessionfailure' => 'بنظر می‌رسد مشکلی در مورد نشست کاربری شما وجود دارد؛ عمل درخواست شده بعنوان اقدام پیشگیرانه در برابر ربوده‌شدن اطلاعات نشست کاربری، لغو شد. لطفاً دکمهٔ «بازگشت» را در مرورگر خود بفشارید و صفحه‌ای که از آن به اینجا رسیده‌اید را مجدداً فراخوانی کنید، سپس مجدداً سعی کنید.',
+'editcomment' => "خلاصهٔ ویرایش این بود: «''$1''».",
+'revertpage' => 'ویرایش $2 واگردانده شد به آخرین تغییری که $1 انجام داده بود',
+'revertpage-nouser' => 'ویرایش‌های انجام شده توسط (نام کاربری حذف شده) به آخرین ویرایش توسط [[User:$1|$1]] واگردانی شد.',
+'rollback-success' => 'ویرایش‌های $1 واگردانی شد؛ صفحه به ویرایش $2 برگردانده شد.',
+'sessionfailure' => 'بنظر می‌رسد مشکلی در مورد نشست کاربری شما وجود دارد؛ عمل درخواست شده بعنوان اقدام پیشگیرانه در برابر ربوده‌شدن اطلاعات نشست کاربری، لغو شد. لطفاً دکمهٔ «بازگشت» را در مرورگر خود بفشارید و صفحه‌ای که از آن به اینجا رسیده‌اید را مجدداً فراخوانی کنید، سپس مجدداً سعی کنید.',
# Protect
'protectlogpage' => 'سیاههٔ_محافظت',
@@ -2201,7 +2339,7 @@ $NEWPAGE
'protectexpiry' => 'زمان سرآمدن:',
'protect_expiry_invalid' => 'زمان سرآمدن نامعتبر است.',
'protect_expiry_old' => 'زمان سرآمدن در گذشته‌است.',
-'protect-unchain' => 'بازکردن اجازهٔ انتقال',
+'protect-unchain-permissions' => 'باز کردن سایر گزینه‌های حفاظت',
'protect-text' => "شما می‌توانید سطح حفاظت صفحهٔ '''<nowiki>$1</nowiki>''' را ببینید و از این‌جا آن را تغییر دهید.",
'protect-locked-blocked' => 'شما در مدتی که دسترسی‌تان قطع است نمی‌توانید سطح حفاظت صفحه‌ها را تغییر دهید. تنظیمات فعلی صفحهٔ $1 به این قرار است:',
'protect-locked-dblock' => 'به دلیل قفل شدن پایگاه داده، امکان تغییر سطح حفاظت صفحه وجود ندارد. تنظیمات فعلی صفحهٔ $1 به این قرار است:',
@@ -2228,7 +2366,7 @@ $NEWPAGE
** جنگ ویرایشی غیر سازنده
** صفحهٔ پر بازدید',
'protect-edit-reasonlist' => 'ویرایش دلایل محافظت',
-'protect-expiry-options' => '۱ ساعت:1 hour,۱ روز:1 day,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '۱ ساعت:1 hour,۱ روز:1 day,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite',
'restriction-type' => 'دسترسی',
'restriction-level' => 'سطح محدودیت',
'minimum-size' => 'حداقل اندازه',
@@ -2269,6 +2407,7 @@ $NEWPAGE
'undelete-nodiff' => 'نسخهٔ قدیمی‌تری یافت نشد.',
'undeletebtn' => 'احیا شود!',
'undeletelink' => 'نمایش/احیا',
+'undeleteviewlink' => 'نمایش',
'undeletereset' => 'از نو',
'undeleteinvert' => 'وارونه کردن انتخاب',
'undeletecomment' => 'دلیل:',
@@ -2305,19 +2444,23 @@ $1',
'contributions-title' => 'مشارکت‌های کاربری $1',
'mycontris' => 'مشارکت‌های من',
'contribsub2' => 'برای $1 ($2)',
-'nocontribs' => 'هیچ تغییری با این مشخصات یافت نشد.', # Optional parameter: $1 is the user name
+'nocontribs' => 'هیچ تغییری با این مشخصات یافت نشد.',
'uctop' => ' (بالا)',
'month' => 'در این ماه (و قبل از آن)',
'year' => 'در این سال (و قبل از آن)',
-'sp-contributions-newbies' => 'فقط مشارکت‌های تازه‌واردان نمایش داده شود',
-'sp-contributions-newbies-sub' => 'برای تازه‌کاران',
-'sp-contributions-newbies-title' => 'مشارکت‌های کاربری برای حساب‌های تازه‌کار',
-'sp-contributions-blocklog' => 'سیاههٔ بسته‌شدن‌ها',
-'sp-contributions-logs' => 'سیاهه‌ها',
-'sp-contributions-search' => 'جستجوی مشارکت‌ها',
-'sp-contributions-username' => 'نشانی آی‌پی یا نام کاربری:',
-'sp-contributions-submit' => 'جستجو',
+'sp-contributions-newbies' => 'فقط مشارکت‌های تازه‌واردان نمایش داده شود',
+'sp-contributions-newbies-sub' => 'برای تازه‌کاران',
+'sp-contributions-newbies-title' => 'مشارکت‌های کاربری برای حساب‌های تازه‌کار',
+'sp-contributions-blocklog' => 'سیاههٔ بسته‌شدن‌ها',
+'sp-contributions-deleted' => 'مشارکت‌های حذف شدهٔ کاربر',
+'sp-contributions-logs' => 'سیاهه‌ها',
+'sp-contributions-talk' => 'بحث',
+'sp-contributions-userrights' => 'مدیریت اختیارات کاربر',
+'sp-contributions-blocked-notice' => 'این کاربر در حال حاضر بسته شده‌است. آخرین سیاههٔ بسته شدن در زیر آمده‌است:',
+'sp-contributions-search' => 'جستجوی مشارکت‌ها',
+'sp-contributions-username' => 'نشانی آی‌پی یا نام کاربری:',
+'sp-contributions-submit' => 'جستجو',
# What links here
'whatlinkshere' => 'پیوندها به این صفحه',
@@ -2340,6 +2483,7 @@ $1',
# Block/unblock
'blockip' => 'بستن کاربر',
+'blockip-title' => 'بستن کاربر',
'blockip-legend' => 'بستن کاربر',
'blockiptext' => 'از فرم زیر برای بستن دسترسی ویرایش یک نشانی آی‌پی یا نام کاربری مشخص استفاده کنید.
این کار فقط فقط باید برای جلوگیری از خرابکاری و بر اساس [[{{MediaWiki:Policy-url}}|سیاست قطع دسترسی]] انجام شود.
@@ -2363,7 +2507,7 @@ $1',
'ipbenableautoblock' => 'بستن خودکار آخرین نشانی آی‌پی استفاده شده توسط کاربر و نشانی‌های دیگری که از آن‌ها برای ویرایش تلاش می‌کند',
'ipbsubmit' => 'این کاربر بسته شود',
'ipbother' => 'زمانی دیگر',
-'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite',
'ipbotheroption' => 'دیگر',
'ipbotherreason' => 'دلیل دیگر/اضافی:',
'ipbhidename' => 'نهفتن نام کاربری از ویرایش‌ها و فهرست‌ها',
@@ -2393,9 +2537,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 قطع دسترسی موقت',
'ipblocklist-sh-addressblocks' => '$1 قطع دسترسی نشانی آی‌پی',
'ipblocklist-submit' => 'جستجو',
+'ipblocklist-localblock' => 'قطع دسترسی محلی',
+'ipblocklist-otherblocks' => 'سایر {{PLURAL:$1|بستن‌ها|بستن‌ها}}',
'blocklistline' => '$1، $2 $3 را بست ($4)',
'infiniteblock' => 'بی‌پایان',
-'expiringblock' => 'در $1 به پایان می‌رسد',
+'expiringblock' => 'در $1 ساعت $2 به پایان می‌رسد',
'anononlyblock' => 'فقط کاربران گمنام',
'noautoblockblock' => 'بستن خودکار غیرفعال است.',
'createaccountblock' => 'امکان ایجاد حساب مسدود است.',
@@ -2410,7 +2556,8 @@ $1',
'autoblocker' => 'به طور خودکار بسته شد چون آی‌پی شما به تازگی توسط کاربر «[[User:$1|$1]]» استفاده شده‌است.
دلیل قطع دسترسی $1 چنین است: «$2»',
'blocklogpage' => 'سیاههٔ_بسته‌شدن‌ها',
-'blocklog-fulllog' => 'سیاه بستن کامل',
+'blocklog-showlog' => 'دسترسی این کاربر قبلاً بسته شده‌است. سیاههٔ قطع دسترسی در زیر نمایش یافته است:',
+'blocklog-showsuppresslog' => 'دسترسی این کاربر قبلاً بسته شده و این کاربر پنهان شده‌است. سیاههٔ قطع دسترسی در زیر نمایش یافته است:',
'blocklogentry' => '«[[$1]]» را $2 بست $3',
'reblock-logentry' => 'تنظیم‌های قطع دسترسی [[$1]] را تغییر داد به پایان قطع دسترسی در $2 ساعت $3',
'blocklogtext' => 'این سیاهه‌ای از اعمال بستن و باز کردن کاربرها است.
@@ -2431,9 +2578,11 @@ $1',
'ipb_already_blocked' => '«$1» همین الان هم بسته‌است.',
'ipb-needreblock' => '== قطع دسترسی از قبل ==
دسترسی $1 از قبل بسته است. آیا می‌خواهید تنظیم‌های آن را تغییر دهید؟',
+'ipb-otherblocks-header' => '{{PLURAL:$1|قطع دسترسی|قطع دسترسی‌های}} دیگر',
'ipb_cant_unblock' => 'خطا: آی‌دی بسته‌شدن $1 یافت نشد. ممکن است پیشتر باز شده باشد.',
'ipb_blocked_as_range' => 'Error: نشانی آی‌پی $1 به شکل مستقیم بسته نشده‌است و نمی‌تواند باز شود. این نشانی به همراه بازه $2, بسته شده که قابل باز شدن است.',
'ip_range_invalid' => 'بازهٔ آی‌پی نامعتبر است.',
+'ip_range_toolarge' => 'بازه قطع دسترسی بزرگتر از /$1 مجاز نیست.',
'blockme' => 'دسترسی مرا قطع کن',
'proxyblocker' => 'پروکسی‌بَند',
'proxyblocker-disabled' => 'این عملکرد غیرفعال شده‌است.',
@@ -2442,6 +2591,7 @@ $1',
'sorbsreason' => 'نشانی اینترنتی (آی‌پی) شما توسط DNSBL به عنوان یک پروکسی باز گزارش شده‌است.',
'sorbs_create_account_reason' => 'نشانی اینترنتی (آی‌پی) شما توسط DNSBL به عنوان یک پروکسی باز گزارش شده‌است. شما اجازهٔ ساختن حساب کاربری ندارید.',
'cant-block-while-blocked' => 'در مدتی که دسترسی شما بسته است نمی‌توانید دسترسی کاربران دیگر را قطع کنید.',
+'cant-see-hidden-user' => 'کاربری که می‌خواهید ببندید قبلاً بسته شده و پنهان گردیده است. چون شما دسترسی پنهان کردن کاربران را ندارید، نمی‌توانید قطع دسترسی کاربر را ببینید یا ویرایش کنید.',
# Developer tools
'lockdb' => 'قفل کردن پایگاه داده',
@@ -2485,6 +2635,7 @@ $1',
در این حالات، باید صفحه را بطور دستی انتقال داده و یا محتویات دو صفحه را با ویرایش ادغام کنید.",
'movearticle' => 'انتقال صفحه',
+'moveuserpage-warning' => "'''هشدار:''' شما در حال انتقال دادن یک صفحهٔ کاربر هستید. توجه داشته باشید که تنها صفحه منتقل می‌شود و نام کاربر تغییر '''نمی‌یابد'''.",
'movenologin' => 'به سامانه وارد نشده‌اید',
'movenologintext' => 'برای انتقال صفحه‌ها باید کاربر ثبت‌شده بوده و
[[Special:UserLogin|به سامانه وارد شوید]].',
@@ -2496,7 +2647,7 @@ $1',
'move-watch' => 'پی‌گیری این صفحه',
'movepagebtn' => 'صفحه منتقل شود',
'pagemovedsub' => 'انتقال با موفقیت انجام شد',
-'movepage-moved' => "'''«$1» به «$2» منتقل شد'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» به «$2» منتقل شد'''",
'movepage-moved-redirect' => 'یک تغییر مسیر ایجاد شد.',
'movepage-moved-noredirect' => 'از ایجاد تغییر مسیر ممانعت شد.',
'articleexists' => 'صفحه‌ای با این نام از قبل وجود دارد، یا نامی که انتخاب کرده‌اید معتبر نیست.
@@ -2539,6 +2690,14 @@ $1',
'imageinvalidfilename' => 'نام پروندهٔ هدف غیر مجاز است',
'fix-double-redirects' => 'به روز کردن تمامی تغییر مسیرهایی که به مقالهٔ اصلی اشاره می‌کنند',
'move-leave-redirect' => 'بر جا گذاشتن یک تغییر مسیر',
+'protectedpagemovewarning' => "'''هشدار:''' این صفحه قفل شده‌است به طوری که تنها کاربران با دسترسی مدیریت می‌توانند آن را انتقال دهند.
+آخرین موارد سیاهه در زیر آمده است:",
+'semiprotectedpagemovewarning' => "'''تذکر:''' این صفحه قفل شده‌است به طوری که تنها کاربران ثبت نام کرده می‌توانند آن را انتقال دهند.
+آخرین موارد سیاهه در زیر آمده است:",
+'move-over-sharedrepo' => '== پرونده موجود است ==
+[[:$1]] در یک مخزن مشترک وجود دارد. انتقال یک پرونده به این نام باعث باطل شدن پرونده مشترک خواهد شد.',
+'file-exists-sharedrepo' => 'نام پرونده انتخاب شده از قبل در یک مخزن مشترک استفاده شده‌است.
+لطفاً یک نام دیگر برگزینید.',
# Export
'export' => 'برون‌بری صفحه‌ها',
@@ -2561,15 +2720,21 @@ $1',
'export-pagelinks' => 'صفحه‌های پیوند شده را تا این عمق شامل شود:',
# Namespace 8 related
-'allmessages' => 'همهٔ پیغام‌ها',
-'allmessagesname' => 'نام',
-'allmessagesdefault' => 'متن پیش‌فرض',
-'allmessagescurrent' => 'متن کنونی',
-'allmessagestext' => 'این فهرستی از پیغام‌های سامانه‌ای موجود در فضای نام مدیاویکی است.
+'allmessages' => 'همهٔ پیغام‌ها',
+'allmessagesname' => 'نام',
+'allmessagesdefault' => 'متن پیش‌فرض',
+'allmessagescurrent' => 'متن کنونی',
+'allmessagestext' => 'این فهرستی از پیغام‌های سامانه‌ای موجود در فضای نام مدیاویکی است.
چنان‌چه مایل به مشارکت در محلی‌سازی مدیاویکی هستید لطفاً [http://www.mediawiki.org/wiki/Localisation محلی‌سازی مدیاویکی] و [http://translatewiki.net translatewiki.net] را ببینید.',
-'allmessagesnotsupportedDB' => "نمی‌توان از '''{{ns:special}}:همهٔ پیغام‌ها''' استفاده کرد چود '''\$wgUseDatabaseMessages''' خاموش شده است.",
-'allmessagesfilter' => 'صافی نام پیغام:',
-'allmessagesmodified' => 'تنها نمایش تغییریافته‌ها',
+'allmessagesnotsupportedDB' => "نمی‌توان از '''{{ns:special}}:همهٔ پیغام‌ها''' استفاده کرد چود '''\$wgUseDatabaseMessages''' خاموش شده است.",
+'allmessages-filter-legend' => 'پالایه',
+'allmessages-filter' => 'پالودن بر اساس وضعیت شخصی‌سازی:',
+'allmessages-filter-unmodified' => 'تغییر نیافته',
+'allmessages-filter-all' => 'همه',
+'allmessages-filter-modified' => 'تغییر یافته',
+'allmessages-prefix' => 'پالودن بر اساس پسوند:',
+'allmessages-language' => 'زبان:',
+'allmessages-filter-submit' => 'برو',
# Thumbnails
'thumbnail-more' => 'بزرگ شود',
@@ -2579,6 +2744,9 @@ $1',
'djvu_no_xml' => 'امکان پیدا کردن پروندهٔ XML برای استفادهٔ DjVu وجود نداشت.',
'thumbnail_invalid_params' => 'پارامترهای غیر مجاز در تصویر انگشتدانه‌ای (thumbnail)',
'thumbnail_dest_directory' => 'اشکال در ایجاد پوشهٔ مقصد',
+'thumbnail_image-type' => 'تصویر از نوع پشتیبانی نشده',
+'thumbnail_gd-library' => 'تنظیمات ناقص کتابخانهٔ gd: عملکرد $1 وجود ندارد',
+'thumbnail_image-missing' => 'پرونده به نظر گم شده‌است: $1',
# Special:Import
'import' => 'درون‌ریزی صفحه‌ها',
@@ -2640,6 +2808,7 @@ $1',
'tooltip-ca-viewsource' => 'این صفحه محافظت‌شده است. می‌توانید متن مبدأ آن را مشاهده کنید.',
'tooltip-ca-history' => 'نسخه‌های پیشین این صفحه',
'tooltip-ca-protect' => 'محافظت از این صفحه',
+'tooltip-ca-unprotect' => 'به در آوردن این صفحه از محافظت',
'tooltip-ca-delete' => 'حذف این صفحه',
'tooltip-ca-undelete' => 'بازگرداندن نسخه‌های صفحهٔ حذف‌شده',
'tooltip-ca-move' => 'انتقال این صفحه',
@@ -2650,6 +2819,7 @@ $1',
'tooltip-search-fulltext' => 'این عبارت را در صفحه‌ها جستجو کن',
'tooltip-p-logo' => 'صفحهٔ اصلی',
'tooltip-n-mainpage' => 'بازدید از صفحهٔ اصلی',
+'tooltip-n-mainpage-description' => 'مشاهدهٔ صفحهٔ اصلی',
'tooltip-n-portal' => 'پیرامون پروژه، چه‌ها توانید کرد و کجا توانید یافت',
'tooltip-n-currentevents' => 'یافتن اطلاعات پیشزمینه پیرامون وقایع کنونی',
'tooltip-n-recentchanges' => 'فهرست تغییرات اخیر در ویکی.',
@@ -2698,10 +2868,12 @@ $1',
# Attribution
'anonymous' => '{{PLURAL:$1|کاربر|کاربران}} گمنام {{SITENAME}}',
'siteuser' => '$1، کاربر {{SITENAME}}',
-'lastmodifiedatby' => 'این صفحه آخرین بار در $2، $1 به دست $3 تغییر یافته‌است.', # $1 date, $2 time, $3 user
+'anonuser' => '$1 کاربر ناشناس {{SITENAME}}',
+'lastmodifiedatby' => 'این صفحه آخرین بار در $2، $1 به دست $3 تغییر یافته‌است.',
'othercontribs' => 'بر اساس اثری از $1',
'others' => 'دیگران',
'siteusers' => '$1، {{PLURAL:$2|کاربر|کاربران}} {{SITENAME}}',
+'anonusers' => '$1 {{PLURAL:$2|کاربر|کاربران}} ناشناس {{SITENAME}}',
'creditspage' => 'اعتبارات این صفحه',
'nocredits' => 'اطلاعات سازندگان این صفحه موجود نیست.',
@@ -2731,6 +2903,7 @@ $1',
'skinname-chick' => 'شیک',
'skinname-simple' => 'ساده',
'skinname-modern' => 'مدرن',
+'skinname-vector' => 'برداری',
# Math options
'mw_math_png' => 'همیشه PNG کشیده شود',
@@ -2740,11 +2913,22 @@ $1',
'mw_math_modern' => 'توصیه برای مرورگرهای امروزی',
'mw_math_mathml' => 'استفاده از MathML در صورت امکان (آزمایشی)',
+# Math errors
+'math_failure' => 'شکست در تجزیه',
+'math_unknown_error' => 'خطای ناشناخته',
+'math_unknown_function' => 'تابع ناشناختهٔ',
+'math_lexing_error' => 'خطای lexing',
+'math_syntax_error' => 'خطای نحوی',
+'math_image_error' => 'تبدیل به PNG شکست خورد',
+'math_bad_tmpdir' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه موقت (temp) ریاضی وجود ندارد.',
+'math_bad_output' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه خروجی (output) ریاضی وجود ندارد.',
+'math_notexvc' => 'برنامهٔ اجرایی texvc موجود نیست. برای اطلاعات بیشتر به <span dir=ltr>math/README</span> مراجعه کنید.',
+
# Patrolling
'markaspatrolleddiff' => 'برچسب گشت بزن',
'markaspatrolledtext' => 'به این صفحه برچسب گشت بزن',
'markedaspatrolled' => 'برچسب گشت زده شد',
-'markedaspatrolledtext' => 'به نسخهٔ مورد نظر برچسب گشت زده شد.',
+'markedaspatrolledtext' => 'به نسخهٔ انتخاب شده از [[:$1]] برچسب گشت زده شد.',
'rcpatroldisabled' => 'گشت تغییرات اخیر غیر فعال است',
'rcpatroldisabledtext' => 'امکان گشت تغییرات اخیر در حال حاضر غیر فعال است.',
'markedaspatrollederror' => 'برچسب گشت زده نشد',
@@ -2774,13 +2958,10 @@ $1',
'previousdiff' => '→ تفاوت قدیمی‌تر',
'nextdiff' => 'تفاوت جدیدتر ←',
-# Visual comparison
-'visual-comparison' => 'مقایسهٔ دیداری',
-
# Media information
'mediawarning' => "'''هشدار''': این پرونده ممکن است حاوی کدهای مخرب باشد.
با اجرای آن رایانهٔ شما ممکن است آسیب ببیند.",
-'imagemaxsize' => 'محدودکردن ابعاد تصویر نمایش‌داده‌شده در صفحهٔ توصیف تصویر، به ابعاد:',
+'imagemaxsize' => "محدودیت ابعاد تصویر:<br />''(برای صفحه‌های توصیف پرونده)''",
'thumbsize' => 'اندازهٔ Thumbnail:',
'widthheight' => '$1 در $2',
'widthheightpage' => '$1×$2، $3 {{PLURAL:$3|صفحه|صفحه}}',
@@ -2790,6 +2971,8 @@ $1',
'svg-long-desc' => '(پرونده SVG، با ابعاد $1 × $2 پیکسل، اندازه پرونده: $3)',
'show-big-image' => 'تصویر با تفکیک‌پذیری بالاتر',
'show-big-image-thumb' => '<small>اندازهٔ این پیش‌نمایش: &#8206;$1 × $2 پیکسل</small>',
+'file-info-gif-looped' => 'حلقه‌ای',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|قاب|قاب}}',
# Special:NewFiles
'newimages' => 'گالری پرونده‌های جدید',
@@ -2821,7 +3004,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'عرض',
@@ -2949,14 +3132,14 @@ $1',
'exif-unknowndate' => 'تاریخ نامعلوم',
-'exif-orientation-1' => 'عادی', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'افقی پشت و روشده', # 0th row: top; 0th column: right
-'exif-orientation-3' => '۱۸۰ درجه چرخیده', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'عمودی پشت و روشده', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '۹۰° پادساعتگرد چرخیده و عمودی پشت و رو شده', # 0th row: left; 0th column: top
-'exif-orientation-6' => '۹۰° ساعتگرد چرخیده', # 0th row: right; 0th column: top
-'exif-orientation-7' => '۹۰° ساعتگرد چرخیده و عمودی پشت و رو شده', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '۹۰° پادساعتگرد چرخیده', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'عادی',
+'exif-orientation-2' => 'افقی پشت و روشده',
+'exif-orientation-3' => '۱۸۰ درجه چرخیده',
+'exif-orientation-4' => 'عمودی پشت و روشده',
+'exif-orientation-5' => '۹۰° پادساعتگرد چرخیده و عمودی پشت و رو شده',
+'exif-orientation-6' => '۹۰° ساعتگرد چرخیده',
+'exif-orientation-7' => '۹۰° ساعتگرد چرخیده و عمودی پشت و رو شده',
+'exif-orientation-8' => '۹۰° پادساعتگرد چرخیده',
'exif-planarconfiguration-1' => 'قالب فربه',
'exif-planarconfiguration-2' => 'قالب دووجهی',
@@ -3081,7 +3264,7 @@ $1',
'exif-gpsmeasuremode-2' => 'اندازه‌گیری دوبعدی',
'exif-gpsmeasuremode-3' => 'اندازه‌گیری سه‌بعدی',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'کیلومتر بر ساعت',
'exif-gpsspeed-m' => 'مایل بر ساعت',
'exif-gpsspeed-n' => 'گره',
@@ -3100,6 +3283,7 @@ $1',
'watchlistall2' => 'همه',
'namespacesall' => 'همه',
'monthsall' => 'همهٔ ماه‌ها',
+'limitall' => 'همه',
# E-mail address confirmation
'confirmemail' => 'تأیید نشانی پست الکترونیکی',
@@ -3121,27 +3305,9 @@ $1',
'confirmemail_loggedin' => 'نشانی پست الکترونیکی شما تأیید شد.',
'confirmemail_error' => 'هنگام ذخیرهٔ تأیید شما به مشکلی برخورده شد.',
'confirmemail_subject' => 'تأیید نشانی پست الکترونیکی {{SITENAME}}',
-'confirmemail_body' => 'Someone, probably you from IP address $1, has registered an
-account "$2" with this e-mail address on {{SITENAME}}.
+'confirmemail_body' => 'یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1 حساب کاربری‌ای با نام «$2» و این نشانی پست‌الکترونیکی در {{SITENAME}} ایجاد کرده‌است.
-To confirm that this account really does belong to you and activate
-e-mail features on {{SITENAME}}, open this link in your browser:
-
-$3
-
-If you did *not* register the account, follow this link
-to cancel the e-mail address confirmation:
-
-$5
-
-If this is *not* you, don\'t follow the link. This confirmation code
-will expire at $4.
-
----------
-
-یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1 حساب کاربری‌ای با نام «$2» و این نشانی پست‌الکترونیکی در {{SITENAME}} ایجاد کرده‌است.
-
-برای تأیید اینکه این حساب واقعاً متعلق به شماست و نیز برای فعال‌سازی امکانات ایمیلیِ {{SITENAME}} پیوند را در مرورگر اینترنت خود باز کنید:
+برای تأیید این که این حساب واقعاً متعلق به شماست و نیز برای فعال‌سازی امکانات پست الکترونیک {{SITENAME}} پیوند زیر را در مرورگر اینترنت خود باز کنید:
$3
@@ -3150,7 +3316,7 @@ $3
$5
-اگر این شما *نیستید* لطفاً پیوند را دنبال مکنید. این کدِ تأیید در تاریخ $4 منقضی خواهد شد.
+این کدِ تأیید در تاریخ $4 منقضی خواهد شد.
</div>',
'confirmemail_invalidated' => 'تایید نشانی پست الکترونیکی لغو شد',
'invalidateemail' => 'لغو کردن تایید نشانی پست الکترونیکی',
@@ -3311,7 +3477,7 @@ $1',
'duplicate-defaultsort' => 'هشدار: ترتیب پیش فرض «$2» ترتیب پیش فرض قبلی «$1» را باطل می‌سازد.',
# Special:Version
-'version' => 'نسخه', # Not used as normal message but as header for the special page itself
+'version' => 'نسخه',
'version-extensions' => 'افزونه‌های نصب شده',
'version-specialpages' => 'صفحه‌های ویژه',
'version-parserhooks' => 'قلاب‌های تجزیه‌گر',
@@ -3325,7 +3491,8 @@ $1',
'version-skin-extension-functions' => 'عملگرهای افزونه‌های پوسته',
'version-hook-name' => 'نام قلاب',
'version-hook-subscribedby' => 'وارد شده توسط',
-'version-version' => 'نسخه',
+'version-version' => '(نسخه $1)',
+'version-svn-revision' => '(&رلم;r$2)',
'version-license' => 'اجازه‌نامه',
'version-software' => 'نسخهٔ نصب‌شده',
'version-software-product' => 'محصول',
@@ -3404,4 +3571,15 @@ $1',
'dberr-outofdate' => 'توجه کنید که نمایه‌های آن‌ها از محتوای ما ممکن است به روز نباشد.',
'dberr-cachederror' => 'آن‌چه در ادامه می‌آید یک کپی از صفحهٔ درخواست شده است که در کاشه قرار دارد، و ممکن است به روز نباشد.',
+# HTML forms
+'htmlform-invalid-input' => 'بخشی از ورودی شما مشکل دارد',
+'htmlform-select-badoption' => 'مقدار وارد شده یک گزینهٔ قابل قبول نیست.',
+'htmlform-int-invalid' => 'مقداری که وارد کردید یک عدد صحیح نیست.',
+'htmlform-float-invalid' => 'مقداری که وارد کردید یک عدد نیست.',
+'htmlform-int-toolow' => 'مقداری که وارد کردید کمتر از $1 است',
+'htmlform-int-toohigh' => 'مقداری که وارد کردید بیشتر از $1 است',
+'htmlform-submit' => 'ارسال',
+'htmlform-reset' => 'خنثی کردن تغییرات',
+'htmlform-selectorother-other' => 'دیگر',
+
);
diff --git a/languages/messages/MessagesFf.php b/languages/messages/MessagesFf.php
index b2cfe985..7ad0888d 100644
--- a/languages/messages/MessagesFf.php
+++ b/languages/messages/MessagesFf.php
@@ -55,6 +55,8 @@ $messages = array(
# Watchlist
'watch' => 'Rewindaande',
+'sp-contributions-talk' => 'Kaldigal',
+
# Special:NewFiles
'ilsubmit' => 'Yiilaade',
diff --git a/languages/messages/MessagesFi.php b/languages/messages/MessagesFi.php
index 787f7e34..c223deaf 100644
--- a/languages/messages/MessagesFi.php
+++ b/languages/messages/MessagesFi.php
@@ -8,15 +8,18 @@
* @file
*
* @author Agony
+ * @author Centerlink
* @author Cimon Avaro
* @author Crt
* @author Jaakonam
* @author Jack Phoenix
* @author Mobe
* @author Nike
+ * @author Olli
* @author Silvonen
* @author Str4nd
* @author Tarmo
+ * @author ZeiP
* @author לערי ריינהארט
*/
@@ -87,8 +90,12 @@ $bookstoreList = array(
$magicWords = array(
'redirect' => array( '0', '#OHJAUS', '#UUDELLEENOHJAUS', '#REDIRECT' ),
+ 'notoc' => array( '0', '__EISISLUETT__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__SISLUETTPAKOTUS__', '__FORCETOC__' ),
'toc' => array( '0', '__SISÄLLYSLUETTELO__', '__TOC__' ),
- 'currentmonth' => array( '1', 'KULUVAKUU', 'CURRENTMONTH' ),
+ 'noeditsection' => array( '0', '__EIOSIOMUOKKAUSTA__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__EIOTSIKKOA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'KULUVAKUU', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'KULUVAKUUNIMI', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'KULUVAKUUNIMIGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'KULUVAKUUNIMILYHYT', 'CURRENTMONTHABBREV' ),
@@ -98,7 +105,7 @@ $magicWords = array(
'currentyear' => array( '1', 'KULUVAVUOSI', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'KULUVAAIKA', 'CURRENTTIME' ),
'currenthour' => array( '1', 'KULUVATUNTI', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'PAIKALLINENKUU', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'PAIKALLINENKUU', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'PAIKALLINENKUUNIMI', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'PAIKALLINENKUUNIMIGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'PAIKALLINENKUUNIMILYHYT', 'LOCALMONTHABBREV' ),
@@ -113,6 +120,7 @@ $magicWords = array(
'numberoffiles' => array( '1', 'TIEDOSTOMÄÄRÄ', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'KÄYTTÄJÄMÄÄRÄ', 'NUMBEROFUSERS' ),
'numberofedits' => array( '1', 'MUOKKAUSMÄÄRÄ', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'SIVUHAKUMÄÄRÄ', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'SIVUNIMI', 'PAGENAME' ),
'pagenamee' => array( '1', 'SIVUNIMIE', 'PAGENAMEE' ),
'namespace' => array( '1', 'NIMIAVARUUS', 'NAMESPACE' ),
@@ -157,6 +165,7 @@ $magicWords = array(
'servername' => array( '0', 'PALVELINNIMI', 'SERVERNAME' ),
'scriptpath' => array( '0', 'SKRIPTIPOLKU', 'SCRIPTPATH' ),
'grammar' => array( '0', 'TAIVUTUS:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'SUKUPUOLI:', 'GENDER:' ),
'currentweek' => array( '1', 'KULUVAVIIKKO', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'KULUVAVIIKONPÄIVÄ', 'CURRENTDOW' ),
'localweek' => array( '1', 'PAIKALLINENVIIKKO', 'LOCALWEEK' ),
@@ -181,6 +190,8 @@ $magicWords = array(
'filepath' => array( '0', 'TIEDOSTOPOLKU:', 'FILEPATH:' ),
'hiddencat' => array( '1', '__PIILOLUOKKA__', '__HIDDENCAT__' ),
'pagesize' => array( '1', 'SIVUKOKO', 'PAGESIZE' ),
+ 'noindex' => array( '1', '__HAKUKONEKIELTO__', '__NOINDEX__' ),
+ 'protectionlevel' => array( '1', 'SUOJAUSTASO', 'PROTECTIONLEVEL' ),
);
$specialPageAliases = array(
@@ -270,6 +281,8 @@ $specialPageAliases = array(
'Blankpage' => array( 'Tyhjä_sivu' ),
'LinkSearch' => array( 'Linkkihaku' ),
'DeletedContributions' => array( 'Poistetut_muokkaukset' ),
+ 'Tags' => array( 'Merkinnät' ),
+ 'Activeusers' => array( 'Aktiiviset_käyttäjät' ),
);
$linkTrail = '/^([a-zäö]+)(.*)$/sDu';
@@ -305,6 +318,7 @@ $messages = array(
'tog-enotifminoredits' => 'Lähetä sähköpostiviesti myös pienistä muokkauksista',
'tog-enotifrevealaddr' => 'Näytä sähköpostiosoitteeni muille lähetetyissä ilmoituksissa',
'tog-shownumberswatching' => 'Näytä sivua tarkkailevien käyttäjien määrä',
+'tog-oldsig' => 'Nykyisen allekirjoituksen esikatselu',
'tog-fancysig' => 'Muotoilematon allekirjoitus ilman automaattista linkkiä',
'tog-externaleditor' => 'Käytä ulkoista tekstieditoria oletuksena',
'tog-externaldiff' => 'Käytä ulkoista diff-ohjelmaa oletuksena',
@@ -327,6 +341,13 @@ $messages = array(
'underline-never' => 'Ei koskaan',
'underline-default' => 'Selaimen oletustapa',
+# Font style option in Special:Preferences
+'editfont-style' => 'Muokkauskentän kirjasintyyppi',
+'editfont-default' => 'Selaimen oletus',
+'editfont-monospace' => 'Tasalevyinen kirjasin',
+'editfont-sansserif' => 'Sans-serif-kirjasin',
+'editfont-serif' => 'Serif-kirjasin',
+
# Dates
'sunday' => 'sunnuntai',
'monday' => 'maanantai',
@@ -386,7 +407,7 @@ $messages = array(
'category-media-header' => 'Luokan ”$1” sisältämät tiedostot',
'category-empty' => "''Tässä luokassa ei ole sivuja eikä tiedostoja.''",
'hidden-categories' => '{{PLURAL:$1|Piilotettu luokka|Piilotetut luokat}}',
-'hidden-category-category' => 'Piilotetut luokat', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Piilotetut luokat',
'category-subcat-count' => '{{PLURAL:$2|Tässä luokassa on vain seuraava alaluokka.|{{PLURAL:$1|Seuraava alaluokka kuuluu|Seuraavat $1 alaluokkaa kuuluvat}} tähän luokkaan. Alaluokkien kokonaismäärä luokassa on $2.}}',
'category-subcat-count-limited' => 'Tässä luokassa on {{PLURAL:$1|yksi alaluokka|$1 alaluokkaa}}.',
'category-article-count' => '{{PLURAL:$2|Tässä luokassa on vain seuraava sivu.|{{PLURAL:$1|Seuraava sivu kuuluu|Seuraavat $1 sivua kuuluvat}} tähän luokkaan. Sivujen kokonaismäärä luokassa on $2.}}',
@@ -394,6 +415,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Tässä luokassa on vain seuraava tiedosto.|{{PLURAL:$1|Seuraava tiedosto kuuluu|Seuraavat $1 tiedostoa kuuluvat}} tähän luokkaan. Tiedostoja luokassa on yhteensä $2.}}',
'category-file-count-limited' => 'Tässä luokassa on {{PLURAL:$1|yksi tiedosto|$1 tiedostoa}}.',
'listingcontinuesabbrev' => 'jatkuu',
+'index-category' => 'Indeksoidut sivut',
+'noindex-category' => 'Indeksointikiellolliset sivut',
'mainpagetext' => "'''MediaWiki on onnistuneesti asennettu.'''",
'mainpagedocfooter' => "Lisätietoja käytöstä on sivulla [http://meta.wikimedia.org/wiki/Help:Contents User's Guide].
@@ -414,10 +437,18 @@ Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvitta
\$wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';
Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) — {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) — {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) — {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).",
-'about' => 'Tietoja',
-'article' => 'Sivu',
-'newwindow' => '(avautuu uuteen ikkunaan)',
-'cancel' => 'Peruuta',
+'about' => 'Tietoja',
+'article' => 'Sivu',
+'newwindow' => '(avautuu uuteen ikkunaan)',
+'cancel' => 'Peruuta',
+'moredotdotdot' => 'Lisää...',
+'mypage' => 'Käyttäjäsivu',
+'mytalk' => 'Keskustelusivu',
+'anontalk' => 'Keskustele tämän IP:n kanssa',
+'navigation' => 'Valikko',
+'and' => '&#32;ja',
+
+# Cologne Blue skin
'qbfind' => 'Etsi',
'qbbrowse' => 'Selaa',
'qbedit' => 'Muokkaa',
@@ -425,15 +456,35 @@ Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive
'qbpageinfo' => 'Sivun tiedot',
'qbmyoptions' => 'Asetukset',
'qbspecialpages' => 'Toimintosivut',
-'moredotdotdot' => 'Lisää...',
-'mypage' => 'Käyttäjäsivu',
-'mytalk' => 'Keskustelusivu',
-'anontalk' => 'Keskustele tämän IP:n kanssa',
-'navigation' => 'Valikko',
-'and' => '&#32;ja',
-
-# Metadata in edit box
-'metadata_help' => 'Sisältökuvaukset:',
+'faq' => 'Usein kysytyt kysymykset',
+'faqpage' => 'Project:Usein kysytyt kysymykset',
+
+# Vector skin
+'vector-action-addsection' => 'Lisää aihe',
+'vector-action-delete' => 'Poista',
+'vector-action-move' => 'Siirrä',
+'vector-action-protect' => 'Suojaa',
+'vector-action-undelete' => 'Palauta',
+'vector-action-unprotect' => 'Muuta suojausta',
+'vector-namespace-category' => 'Luokka',
+'vector-namespace-help' => 'Ohjesivu',
+'vector-namespace-image' => 'Tiedosto',
+'vector-namespace-main' => 'Sivu',
+'vector-namespace-media' => 'Mediasivu',
+'vector-namespace-mediawiki' => 'Järjestelmäviesti',
+'vector-namespace-project' => 'Projektisivu',
+'vector-namespace-special' => 'Toimintosivu',
+'vector-namespace-talk' => 'Keskustelu',
+'vector-namespace-template' => 'Malline',
+'vector-namespace-user' => 'Käyttäjäsivu',
+'vector-view-create' => 'Luo',
+'vector-view-edit' => 'Muokkaa',
+'vector-view-history' => 'Näytä historia',
+'vector-view-view' => 'Lue',
+'vector-view-viewsource' => 'Näytä lähdekoodi',
+'actions' => 'Toiminnot',
+'namespaces' => 'Nimiavaruudet',
+'variants' => 'Muuttujat',
'errorpagetitle' => 'Virhe',
'returnto' => 'Palaa sivulle $1.',
@@ -483,18 +534,22 @@ Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive
'otherlanguages' => 'Muilla kielillä',
'redirectedfrom' => 'Ohjattu sivulta $1',
'redirectpagesub' => 'Ohjaussivu',
-'lastmodifiedat' => 'Sivua on viimeksi muutettu $1 kello $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Sivua on viimeksi muutettu $1 kello $2.',
'viewcount' => 'Tämä sivu on näytetty {{PLURAL:$1|yhden kerran|$1 kertaa}}.',
'protectedpage' => 'Suojattu sivu',
'jumpto' => 'Loikkaa:',
'jumptonavigation' => 'valikkoon',
'jumptosearch' => 'hakuun',
+'view-pool-error' => 'Valitettavasti palvelimet ovat ylikuormittuneet tällä hetkellä.
+Liian monta käyttäjää yrittää tarkastella tätä sivua.
+Odota hetki ennen kuin yrität uudelleen.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Tietoja {{GRAMMAR:elative|{{SITENAME}}}}',
'aboutpage' => 'Project:Tietoja',
'copyright' => 'Sisältö on käytettävissä lisenssillä $1.',
-'copyrightpagename' => '{{SITENAME}} ja tekijänoikeudet',
'copyrightpage' => '{{ns:project}}:Tekijänoikeudet',
'currentevents' => 'Ajankohtaista',
'currentevents-url' => 'Project:Ajankohtaista',
@@ -502,8 +557,6 @@ Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive
'disclaimerpage' => 'Project:Vastuuvapaus',
'edithelp' => 'Muokkausohjeet',
'edithelppage' => 'Help:Kuinka sivuja muokataan',
-'faq' => 'Usein kysytyt kysymykset',
-'faqpage' => 'Project:Usein kysytyt kysymykset',
'helppage' => 'Help:Sisällys',
'mainpage' => 'Etusivu',
'mainpage-description' => 'Etusivu',
@@ -575,10 +628,6 @@ Luettelo toimintosivuista löytyy sivulta [[Special:SpecialPages|{{int:specialpa
'databaseerror' => 'Tietokantavirhe',
'dberrortext' => 'Tietokantakyselyssä oli syntaksivirhe. Syynä saattaa olla virheellinen kysely, tai se saattaa johtua ohjelmointivirheestä. Viimeinen tietokantakysely, jota yritettiin, oli: <blockquote><tt>$1</tt></blockquote>. Se tehtiin funktiosta ”<tt>$2</tt>”. Tietokanta palautti virheen ”<tt>$3: $4</tt>”.',
'dberrortextcl' => 'Tietokantakyselyssä oli syntaksivirhe. Viimeinen tietokantakysely, jota yritettiin, oli: ”$1”. Se tehtiin funktiosta ”$2”. Tietokanta palautti virheen ”$3: $4”.',
-'noconnect' => 'Sivustolla on teknisiä ongelmia. Tietokantaan ei saada yhteyttä.<br />
-$1',
-'nodb' => 'Tietokantaa $1 ei voitu valita',
-'cachederror' => 'Pyydetystä sivusta näytettiin välimuistissa oleva kopio, ja se saattaa olla vanhentunut.',
'laggedslavemode' => 'Varoitus: Sivu ei välttämättä sisällä viimeisimpiä muutoksia.',
'readonly' => 'Tietokanta on lukittu',
'enterlockreason' => 'Anna lukituksen syy sekä sen arvioitu poistamisaika',
@@ -596,6 +645,8 @@ Ilmoita tämän sivun osoite wikin [[Special:ListUsers/sysop|ylläpitäjälle]].
'readonly_lag' => 'Tietokanta on automaattisesti lukittu, jotta kaikki tietokantapalvelimet saisivat kaikki tuoreet muutokset',
'internalerror' => 'Sisäinen virhe',
'internalerror_info' => 'Sisäinen virhe: $1',
+'fileappenderrorread' => 'Ei voitu lukea tiedostoa ”$1” liittämisen aikana.',
+'fileappenderror' => 'Tiedostoa ”$1” ei voitu lisätä tiedostoon ”$2”.',
'filecopyerror' => 'Tiedostoa <b>$1</b> ei voitu kopioida tiedostoksi <b>$2</b>.',
'filerenameerror' => 'Tiedostoa <b>$1</b> ei voitu nimetä uudelleen nimellä <b>$2</b>.',
'filedeleteerror' => 'Tiedostoa <b>$1</b> ei voitu poistaa.',
@@ -605,7 +656,8 @@ Ilmoita tämän sivun osoite wikin [[Special:ListUsers/sysop|ylläpitäjälle]].
'unexpected' => 'Odottamaton arvo: ”$1” on ”$2”.',
'formerror' => 'Lomakkeen tiedot eivät kelpaa',
'badarticleerror' => 'Toimintoa ei voi suorittaa tälle sivulle.',
-'cannotdelete' => 'Sivun tai tiedoston poisto epäonnistui. Joku muu on saattanut poistaa sen.',
+'cannotdelete' => 'Sivun tai tiedoston ”$1” poisto epäonnistui.
+Joku muu on saattanut poistaa sen.',
'badtitle' => 'Virheellinen otsikko',
'badtitletext' => 'Pyytämäsi sivuotsikko oli virheellinen, tyhjä tai väärin linkitetty kieltenvälinen tai wikienvälinen linkki.',
'perfcached' => 'Tiedot ovat välimuistista eivätkä välttämättä ole ajan tasalla.',
@@ -636,7 +688,6 @@ $2',
'virus-unknownscanner' => 'tuntematon virustutka:',
# Login and logout pages
-'logouttitle' => 'Uloskirjautuminen',
'logouttext' => "'''Olet nyt kirjautunut ulos.'''
Voit jatkaa {{GRAMMAR:genitive|{{SITENAME}}}} käyttöä nimettömänä, tai [[Special:UserLogin|kirjautua uudelleen sisään]].
@@ -644,7 +695,6 @@ Huomaa, että jotkut sivut saattavat näkyä edelleen kuin olisit kirjautunut si
'welcomecreation' => '== Tervetuloa $1! ==
Käyttäjätunnuksesi on luotu.
Älä unohda virittää {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|asetuksiasi]].',
-'loginpagetitle' => 'Sisäänkirjautuminen',
'yourname' => 'Käyttäjätunnus',
'yourpassword' => 'Salasana',
'yourpasswordagain' => 'Salasana uudelleen',
@@ -655,6 +705,7 @@ Käyttäjätunnuksesi on luotu.
'nav-login-createaccount' => 'Kirjaudu sisään tai luo tunnus',
'loginprompt' => 'Kirjautumiseen tarvitaan evästeitä.',
'userlogin' => 'Kirjaudu sisään tai luo tunnus',
+'userloginnocreate' => 'Kirjaudu sisään',
'logout' => 'Kirjaudu ulos',
'userlogout' => 'Kirjaudu ulos',
'notloggedin' => 'Et ole kirjautunut',
@@ -666,26 +717,8 @@ Käyttäjätunnuksesi on luotu.
'createaccountmail' => 'sähköpostitse',
'badretype' => 'Syöttämäsi salasanat ovat erilaiset.',
'userexists' => 'Pyytämäsi käyttäjänimi on jo käytössä. Valitse toinen käyttäjänimi.',
-'youremail' => 'Sähköpostiosoite',
-'username' => 'Käyttäjätunnus',
-'uid' => 'Numero',
-'prefs-memberingroups' => 'Jäsenenä {{PLURAL:$1|ryhmässä|ryhmissä}}',
-'yourrealname' => 'Oikea nimi',
-'yourlanguage' => 'Käyttöliittymän kieli',
-'yourvariant' => 'Kielivariantti',
-'yournick' => 'Allekirjoitus',
-'badsig' => 'Allekirjoitus ei kelpaa.',
-'badsiglength' => 'Allekirjoitus on liian pitkä – sen on oltava alle $1 {{PLURAL:$1|merkki|merkkiä}}.',
-'yourgender' => 'Sukupuoli',
-'gender-unknown' => 'Määrittelemätön',
-'gender-male' => 'Mies',
-'gender-female' => 'Nainen',
-'prefs-help-gender' => 'Vapaaehtoinen. Tietoa käytetään ohjelmistossa kielellisesti oikeaan ilmaisuun. Tämä tieto on julkinen.',
-'email' => 'Sähköpostitoiminnot',
-'prefs-help-realname' => 'Vapaaehtoinen. Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
'loginerror' => 'Sisäänkirjautumisvirhe',
-'prefs-help-email' => 'Vapaaehtoinen. Mahdollistaa uuden salasanan pyytämisen, jos unohdat salasanasi. Voit myös sallia muiden käyttäjien ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
-'prefs-help-email-required' => 'Sähköpostiosoite on pakollinen.',
+'createaccounterror' => 'Tunnuksen luonti ei onnistunut: $1',
'nocookiesnew' => 'Käyttäjä luotiin, mutta et ole kirjautunut sisään. {{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeistä. Kytke ne päälle, ja sitten kirjaudu sisään juuri luomallasi käyttäjänimellä ja salasanalla.',
'nocookieslogin' => '{{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeitä. Ota ne käyttöön, ja yritä uudelleen.',
'noname' => 'Et ole määritellyt kelvollista käyttäjänimeä.',
@@ -694,15 +727,18 @@ Käyttäjätunnuksesi on luotu.
'nosuchuser' => 'Käyttäjää ”$1” ei ole olemassa. Nimet ovat kirjainkoosta riippuvaisia. Tarkista kirjoititko nimen oikein, tai [[Special:UserLogin/signup|luo uusi käyttäjätunnus]].',
'nosuchusershort' => 'Käyttäjää nimeltä ”<nowiki>$1</nowiki>” ei ole. Kirjoititko nimen oikein?',
'nouserspecified' => 'Käyttäjätunnusta ei ole määritelty.',
+'login-userblocked' => 'Tämä käyttäjä on estetty. Kirjautuminen ei ole sallittua.',
'wrongpassword' => 'Syöttämäsi salasana ei ole oikein. Ole hyvä ja yritä uudelleen.',
'wrongpasswordempty' => 'Et voi antaa tyhjää salasanaa.',
-'passwordtooshort' => 'Salasanasi on ei kelpaa. Salasanan pitää olla vähintään {{PLURAL:$1|yhden merkin pituinen|$1 merkkiä pitkä}} ja eri kuin käyttäjätunnuksesi.',
+'passwordtooshort' => 'Salasanan täytyy olla vähintään {{PLURAL:$1|yhden merkin pituinen|$1 merkkiä pitkä}}.',
+'password-name-match' => 'Salasanasi täytyy olla eri kuin käyttäjätunnuksesi.',
'mailmypassword' => 'Lähetä uusi salasana sähköpostitse',
'passwordremindertitle' => 'Salasanamuistutus {{GRAMMAR:elative|{{SITENAME}}}}',
'passwordremindertext' => 'Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} ($4) lähettämään uuden salasanan. Väliaikainen salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana. Väliaikainen salasana vanhenee {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.
Jos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.',
'noemail' => "Käyttäjälle '''$1''' ei ole määritelty sähköpostiosoitetta.",
+'noemailcreate' => 'Sinun on annettava voimassa oleva sähköpostiosoite',
'passwordsent' => 'Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.',
'blocked-mailpassword' => 'Osoitteellesi on asetettu muokkausesto, joka estää käyttämästä salasanamuistutustoimintoa.',
'eauthentsent' => 'Varmennussähköposti on lähetetty annettuun sähköpostiosoitteeseen. Muita viestejä ei lähetetä, ennen kuin olet toiminut viestin ohjeiden mukaan ja varmistanut, että sähköpostiosoite kuuluu sinulle.',
@@ -722,9 +758,11 @@ Tästä johtuen tästä IP-osoitteesta ei voi tällä hetkellä luoda uusia tunn
Tunnuksen $2 salasana on $3. Kirjaudu sisään ja vaihda salasanasi.
Sinun ei tarvitse huomioida tätä viestiä, jos tunnus on luotu virheellisesti.',
+'usernamehasherror' => 'Käyttäjätunnus ei voi sisältää tiivistemerkkejä.',
'login-throttled' => 'Olet tehnyt liian monta kirjautumisyritystä.
Odota ennen kuin yrität uudelleen.',
'loginlanguagelabel' => 'Kieli: $1',
+'suspicious-userlogout' => 'Pyyntösi kirjautua ulos evättiin, koska se näytti rikkinäisen selaimen tai välimuistipalvelimen lähettämältä.',
# Password reset dialog
'resetpass' => 'Muuta salasana',
@@ -736,17 +774,13 @@ Odota ennen kuin yrität uudelleen.',
'retypenew' => 'Uusi salasana uudelleen',
'resetpass_submit' => 'Aseta salasana ja kirjaudu sisään',
'resetpass_success' => 'Salasanan vaihto onnistui.',
-'resetpass_bad_temporary' => 'Kelvoton väliaikaissalasana. Olet saattanut jo asettaa uuden salasanan tai pyytänyt uutta väliaikaissalasanaa.',
'resetpass_forbidden' => 'Salasanoja ei voi vaihtaa.',
'resetpass-no-info' => 'Et voi nähdä tätä sivua kirjautumatta sisään.',
'resetpass-submit-loggedin' => 'Muuta salasana',
+'resetpass-submit-cancel' => 'Peruuta',
'resetpass-wrong-oldpass' => 'Virheellinen väliaikainen tai nykyinen salasana.
Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.',
'resetpass-temp-password' => 'Väliaikainen salasana:',
-'resetpass-log' => 'Salasanojen alustusloki',
-'resetpass-logtext' => 'Alla on loki käyttäjistä, joiden salasanat on alustettu ylläpitäjän toimesta.',
-'resetpass-logentry' => 'vaihtoi salasanan käyttäjälle $1',
-'resetpass-comment' => 'Syy salasanan alustukseen',
# Edit page toolbar
'bold_sample' => 'Lihavoitu teksti',
@@ -821,7 +855,6 @@ Liitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.",
'blockededitsource' => 'Muokkauksesi sivuun ”$1”:',
'whitelistedittitle' => 'Sisäänkirjautuminen vaaditaan muokkaamiseen',
'whitelistedittext' => 'Sinun täytyy $1, jotta voisit muokata sivuja.',
-'confirmedittitle' => 'Sähköpostin varmennus',
'confirmedittext' => 'Et voi muokata sivuja, ennen kuin olet varmentanut sähköpostiosoitteesi. Voit tehdä varmennuksen [[Special:Preferences|asetussivulla]].',
'nosuchsectiontitle' => 'Pyydettyä osiota ei ole',
'nosuchsectiontext' => 'Yritit muokata osiota, jota ei ole olemassa.
@@ -842,13 +875,20 @@ Jos et halua luoda sivua, käytä selaimen paluutoimintoa.',
Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]
tai [{{fullurl:{{FULLPAGENAME}}|action=edit}} muokata tätä sivua]</span>.',
+'noarticletext-nopermission' => 'Tällä hetkellä tällä sivulla ei ole tekstiä.
+Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta
+tai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]</span>',
'userpage-userdoesnotexist' => 'Käyttäjätunnusta $1 ei ole rekisteröity. Varmista haluatko muokata tätä sivua.',
+'userpage-userdoesnotexist-view' => 'Käyttäjätunnusta ”$1” ei ole rekisteröity.',
+'blocked-notice-logextract' => 'Tämä käyttäjä on tällä hetkellä estetty.
+Alla on viimeisin estolokin tapahtuma:',
'clearyourcache' => "'''Huomautus:''' Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan:
*'''Mozilla, Konqueror ja Safari:''' napsauta ''Shift''-näppäin pohjassa päivitä tai paina ''Ctrl-Shift-R'' (''Cmd-Shift-R'' Applella)
*'''IE:''' napsauta ''Ctrl''-näppäin pohjassa päivitä tai paina ''Ctrl-F5''
*'''Konqueror''': napsauta päivitä tai paina ''F5''
*'''Opera:''' saatat joutua tyhjentämään välimuistin kokonaan (''Tools→Preferences'').",
-'usercssjsyoucanpreview' => 'Voit testata uutta CSS:ää tai JavaScriptiä ennen tallennusta esikatselulla.',
+'usercssyoucanpreview' => 'Voit testata uutta CSS:ää ennen tallennusta käyttämällä painiketta ”{{int:showpreview}}”.',
+'userjsyoucanpreview' => 'Voit testata uutta JavaScriptiä ennen tallennusta käyttämällä painiketta ”{{int:showpreview}}”.',
'usercsspreview' => "'''Tämä on CSS:n esikatselu. Muutoksia ei ole vielä tallennettu.'''",
'userjspreview' => "'''Tämä on JavaScriptin esikatselu.'''",
'userinvalidcssjstitle' => "'''Varoitus:''' Tyyliä nimeltä ”$1” ei ole olemassa. Muista, että käyttäjän määrittelemät .css- ja .js-sivut alkavat pienellä alkukirjaimella, esim. {{ns:user}}:Matti Meikäläinen/monobook.css eikä {{ns:user}}:Matti Meikäläinen/Monobook.css.",
@@ -880,13 +920,16 @@ Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ul
'readonlywarning' => "'''Varoitus: Tietokanta on lukittu huoltoa varten, joten voi olla ettet pysty tallentamaan muokkauksiasi juuri nyt.''' Saattaa olla paras leikata ja liimata tekstisi omaan tekstitiedostoosi ja tallentaa se tänne myöhemmin.
Lukitsemisen syy: $1",
-'protectedpagewarning' => "'''Tämä sivu on lukittu. Vain ylläpitäjät voivat muokata sitä.'''",
-'semiprotectedpagewarning' => 'Vain rekisteröityneet käyttäjät voivat muokata tätä sivua.',
+'protectedpagewarning' => "'''Varoitus: Tämä sivu on lukittu siten, että vain ylläpitäjät voivat muokata sitä.'''
+Alla on viimeisin lokitapahtuma:",
+'semiprotectedpagewarning' => 'Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat muokata sitä.
+Alla on viimeisin lokitapahtuma:',
'cascadeprotectedwarning' => '<strong>Vain ylläpitäjät voivat muokata tätä sivua, koska se on sisällytetty alla {{PLURAL:$1|olevaan laajennetusti suojattuun sivuun|oleviin laajennetusti suojattuihin sivuihin}}</strong>:',
-'titleprotectedwarning' => "'''Tämä sivun luominen on rajoitettu vain osalle käyttäjistä [[Special:ListGroupRights|tietyillä oikeuksilla]].'''",
-'templatesused' => 'Tällä sivulla käytetyt mallineet:',
-'templatesusedpreview' => 'Esikatselussa mukana olevat mallineet:',
-'templatesusedsection' => 'Tässä osiossa mukana olevat mallineet:',
+'titleprotectedwarning' => "'''Tämä sivun luominen on rajoitettu vain osalle käyttäjistä [[Special:ListGroupRights|tietyillä oikeuksilla]].'''
+Alla on viimeisin lokitapahtuma:",
+'templatesused' => 'Tällä sivulla {{PLURAL:$1|käytetty malline|käytetyt mallineet}}:',
+'templatesusedpreview' => 'Esikatselussa mukana {{PLURAL:$1|oleva malline|olevat mallineet}}:',
+'templatesusedsection' => 'Tässä osiossa mukana {{PLURAL:$1|oleva malline|olevat mallineet}}:',
'template-protected' => '(suojattu)',
'template-semiprotected' => '(suojattu anonyymeiltä ja uusilta käyttäjiltä)',
'hiddencategories' => 'Tämä sivu kuuluu {{PLURAL:$1|seuraavaan piilotettuun luokkaan|seuraaviin piilotettuihin luokkiin}}:',
@@ -894,14 +937,16 @@ Lukitsemisen syy: $1",
'nocreatetitle' => 'Sivujen luominen on rajoitettu',
'nocreatetext' => 'Et voi luoda uusia sivuja. Voit muokata olemassa olevia sivuja tai luoda [[Special:UserLogin|käyttäjätunnuksen]].',
'nocreate-loggedin' => 'Sinulla ei ole oikeuksia luoda uusia sivuja.',
+'sectioneditnotsupported-title' => 'Osiomuokkaaminen ei ole tuettu.',
+'sectioneditnotsupported-text' => 'Osiomuokkaaminen ei ole tuettu tällä sivulla.',
'permissionserrors' => 'Puutteelliset oikeudet',
'permissionserrorstext' => 'Sinulla ei ole oikeuksia suorittaa toimintoa {{PLURAL:$1|seuraavasta|seuraavista}} syistä johtuen:',
'permissionserrorstext-withaction' => 'Sinulla ei ole lupaa {{lcfirst:$2}} {{PLURAL:$1|seuraavasta syystä|seuraavista syistä}} johtuen:',
-'recreate-deleted-warn' => "'''Olet luomassa sivua, joka on aikaisemmin poistettu.'''
+'recreate-moveddeleted-warn' => "'''Olet luomassa sivua, joka on aikaisemmin poistettu.'''
-Harkitse, kannattaako sivua luoda uudelleen. Alla on tämän sivun poistohistoria:",
-'deleted-notice' => 'Tämä sivu on poistettu. Alla on tämän sivun poistohistoria.',
-'deletelog-fulllog' => 'Näytä loki kokonaan',
+Harkitse, kannattaako sivua luoda uudelleen. Alla on tämän sivun poisto- ja siirtohistoria:",
+'moveddeleted-notice' => 'Tämä sivu on poistettu. Alla on tämän sivun poisto- ja siirtohistoria.',
+'log-fulllog' => 'Näytä loki kokonaan',
'edit-hook-aborted' => 'Laajennuskoodi esti muokkauksen antamatta syytä.',
'edit-gone-missing' => 'Sivun päivitys ei onnistunut.
Se on ilmeisesti poistettu.',
@@ -922,6 +967,7 @@ Nämä muuttujat on jätetty käsittelemättä.',
'post-expand-template-argument-category' => 'Käsittelemättömiä mallinemuuttujia sisältävät sivut',
'parser-template-loop-warning' => 'Mallinesilmukka havaittu: [[$1]]',
'parser-template-recursion-depth-warning' => 'Mallineen rekursioraja ylittyi ($1)',
+'language-converter-depth-warning' => 'Kielimuuntimen syvyysraja ylittyi ($1)',
# "Undo" feature
'undo-success' => 'Kumoaminen onnistui. Valitse <em>tallenna</em> toteuttaaksesi muutokset.',
@@ -941,7 +987,7 @@ Käyttäjän $3 antama syy on ''$2''",
'currentrev' => 'Nykyinen versio',
'currentrev-asof' => 'Nykyinen versio $1',
'revisionasof' => 'Versio $1',
-'revision-info' => 'Versio hetkellä $1 – tehnyt $2', # Additionally available: $3: revision id
+'revision-info' => 'Versio hetkellä $1 – tehnyt $2',
'previousrevision' => '← Vanhempi versio',
'nextrevision' => 'Uudempi versio →',
'currentrevisionlink' => 'Nykyinen versio',
@@ -952,7 +998,7 @@ Käyttäjän $3 antama syy on ''$2''",
'page_last' => 'viimeinen sivu',
'histlegend' => 'Merkinnät: (nyk.) = eroavaisuudet nykyiseen versioon, (edell.) = eroavaisuudet edelliseen versioon, <span class="minor">p</span> = pieni muutos',
'history-fieldset-title' => 'Selaa muutoshistoriaa',
-'deletedrev' => '[poistettu]',
+'history-show-deleted' => 'Vain poistetut',
'histfirst' => 'Ensimmäiset',
'histlast' => 'Viimeisimmät',
'historysize' => '({{PLURAL:$1|1 tavu|$1 tavua}})',
@@ -961,70 +1007,110 @@ Käyttäjän $3 antama syy on ''$2''",
# Revision feed
'history-feed-title' => 'Muutoshistoria',
'history-feed-description' => 'Tämän sivun muutoshistoria',
-'history-feed-item-nocomment' => '$1 ($2)', # user at time
+'history-feed-item-nocomment' => '$1 ($2)',
'history-feed-empty' => 'Pyydettyä sivua ei ole olemassa.
Se on saatettu poistaa wikistä tai nimetä uudelleen.
Kokeile [[Special:Search|hakua]] löytääksesi asiaan liittyviä sivuja.',
# Revision deletion
-'rev-deleted-comment' => '(kommentti poistettu)',
-'rev-deleted-user' => '(käyttäjänimi poistettu)',
-'rev-deleted-event' => '(lokitapahtuma poistettu)',
-'rev-deleted-text-permission' => "Tämä versio on '''poistettu'''.
-[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} Poistolokissa] saattaa olla lisätietoja.",
-'rev-deleted-text-view' => "Tämä versio on '''poistettu'''.
-Ylläpitäjänä voit nähdä sen. Lisätietoja saattaa olla [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
-'rev-deleted-no-diff' => "Et voi katsoa tätä muokkausta, koska yksi versioista on '''poistettu'''.
-Lisätietoja saattaa olla [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
-'rev-deleted-unhide-diff' => "Yksi tämän muutoksen versioista on '''poistettu'''.
-Lisätietoja saattaa olla [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} poistolokissa].
-Ylläpitäjänä voit silti [$1 katsoa tämän muutoksen].",
-'rev-delundel' => 'näytä tai piilota',
-'revisiondelete' => 'Poista tai palauta versioita',
-'revdelete-nooldid-title' => 'Ei kohdeversiota',
-'revdelete-nooldid-text' => 'Et ole valinnut kohdeversiota tai -versioita.',
-'revdelete-nologtype-title' => 'Lokityyppiä ei annettu',
-'revdelete-nologtype-text' => 'Et ole määritellyt lokin tyyppiä tälle toiminnolle.',
-'revdelete-toomanytargets-title' => 'Liian monta kohdetta',
-'revdelete-toomanytargets-text' => 'Olet määrittänyt liian monta kohteen tyyppiä tämän toiminnon suorittamiseksi.',
-'revdelete-nologid-title' => 'Epäkelpo lokitapahtuma',
-'revdelete-nologid-text' => 'Joko et ole määritellyt kohdetta lokitapahtumalle tämän toiminnon suorittamiseksi tai määriteltyä tapahtumaa ei ole.',
-'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta '''$1:''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:'''",
-'revdelete-text' => "'''Poistetut versiot näkyvät sivun historiassa, mutta niiden sisältö ei ole julkisesti saatavilla.'''
-
-Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti lukea piilotetun sisällön ja he voivat palauttaa sen tämän käyttöliittymän kautta, ellei sitä ole rajoitettu.
-Varmista, että haluat tehdä tämän, ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.",
-'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
+'rev-deleted-comment' => '(kommentti poistettu)',
+'rev-deleted-user' => '(käyttäjänimi poistettu)',
+'rev-deleted-event' => '(lokitapahtuma poistettu)',
+'rev-deleted-user-contribs' => '[käyttäjänimi tai IP-osoite poistettu – muokkaus piilotettu muokkauksista]',
+'rev-deleted-text-permission' => "Tämä versio on '''poistettu'''.
+Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
+'rev-deleted-text-unhide' => "Tämä versio sivusta on '''poistettu'''.
+Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].
+Ylläpitäjänä voit silti [$1 katsoa tämän version].",
+'rev-suppressed-text-unhide' => "Tämä versio sivusta on '''häivytetty'''.
+Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokissa].
+Ylläpitäjänä voit silti [$1 katsoa tämän version].",
+'rev-deleted-text-view' => "Tämä versio on '''poistettu'''.
+Ylläpitäjänä voit nähdä sen. Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
+'rev-suppressed-text-view' => "Tämä sivun versio on '''häivytetty'''.
+Ylläpitäjänä voit nähdä sen. Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokissa].",
+'rev-deleted-no-diff' => "Et voi katsoa tätä muokkausta, koska yksi versioista on '''poistettu'''.
+Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
+'rev-suppressed-no-diff' => "Et voi katsoa tätä eroa koska yksi korjattu versio on '''poistettu'''.",
+'rev-deleted-unhide-diff' => "Yksi tämän muutoksen versioista on '''poistettu'''.
+Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].
+Ylläpitäjänä voit silti [$1 nähdä tämän muutoksen].",
+'rev-suppressed-unhide-diff' => "Yksi tämän muutosvertailun versioista on '''häivytetty'''.
+Yksityiskohtia saattaa olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokissa].
+Ylläpitäjänä voit silti [$1 nähdä tämän muutoksen], jos haluat jatkaa.",
+'rev-deleted-diff-view' => "Yksi tämän muutosvertailun versioista on '''poistettu'''.
+Ylläpitäjänä voit silti nähdä tämän muutoksen. Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
+'rev-suppressed-diff-view' => "Yksi tämän muutosvertailun versioista on '''häivytetty'''.
+Ylläpitäjänä voit silti nähdä tämän muutoksen. Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokissa].",
+'rev-delundel' => 'näytä tai piilota',
+'rev-showdeleted' => 'näytä',
+'revisiondelete' => 'Poista tai palauta versioita',
+'revdelete-nooldid-title' => 'Ei kohdeversiota',
+'revdelete-nooldid-text' => 'Et ole valinnut kohdeversiota tai -versioita.',
+'revdelete-nologtype-title' => 'Lokityyppiä ei annettu',
+'revdelete-nologtype-text' => 'Et ole määritellyt lokin tyyppiä tälle toiminnolle.',
+'revdelete-nologid-title' => 'Epäkelpo lokitapahtuma',
+'revdelete-nologid-text' => 'Joko et ole määritellyt kohdetta lokitapahtumalle tämän toiminnon suorittamiseksi tai määriteltyä tapahtumaa ei ole.',
+'revdelete-no-file' => 'Määritettyä tiedostoa ei ole olemassa.',
+'revdelete-show-file-confirm' => 'Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?',
+'revdelete-show-file-submit' => 'Kyllä',
+'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta '''$1:''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:'''",
+'revdelete-text' => "'''Poistetut versiot näkyvät sivun historiassa, mutta niiden sisältö ei ole julkisesti saatavilla.'''
+Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti lukea piilotetun sisällön ja he voivat palauttaa sen tämän käyttöliittymän kautta, ellei sitä ole rajoitettu.",
+'revdelete-confirm' => 'Varmista, että haluat tehdä tämän – ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
+'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
* Sopimattomat henkilötiedot
*: ''kotiosoitteet, puhelinnumerot, sosiaaliturvatunnukset ja muut.''",
-'revdelete-legend' => 'Version rajoitukset',
-'revdelete-hide-text' => 'Piilota version sisältö',
-'revdelete-hide-name' => 'Piilota toiminto ja kohde',
-'revdelete-hide-comment' => 'Piilota yhteenveto',
-'revdelete-hide-user' => 'Piilota tekijän tunnus tai IP-osoite',
-'revdelete-hide-restricted' => 'Piilota tiedot ylläpitäjiltä kuten muilta',
-'revdelete-suppress' => 'Piilota myös ylläpitäjiltä',
-'revdelete-hide-image' => 'Piilota tiedoston sisältö',
-'revdelete-unsuppress' => 'Poista rajoitukset palautetuilta versiolta',
-'revdelete-log' => 'Syy',
-'revdelete-submit' => 'Toteuta',
-'revdelete-logentry' => 'muutti sivun [[$1]] version näkyvyyttä',
-'logdelete-logentry' => 'muutti sivun [[$1]] näkyvyyttä',
-'revdelete-success' => "'''Version näkyvyys päivitetty.'''",
-'logdelete-success' => 'Tapahtuman näkyvyys asetettu.',
-'revdel-restore' => 'Muuta näkyvyyttä',
-'pagehist' => 'Sivun muutoshistoria',
-'deletedhist' => 'Poistettujen versioiden historia',
-'revdelete-content' => 'sisällön',
-'revdelete-summary' => 'yhteenvedon',
-'revdelete-uname' => 'käyttäjänimen',
-'revdelete-restricted' => 'asetti rajoitukset ylläpitäjille',
-'revdelete-unrestricted' => 'poisti rajoitukset ylläpitäjiltä',
-'revdelete-hid' => 'piilotti $1',
-'revdelete-unhid' => 'palautti näkyviin $1',
-'revdelete-log-message' => '$1 koskien $2 {{PLURAL:$2|versiota}}',
-'logdelete-log-message' => '$1 koskien $2 {{PLURAL:$2|tapahtumaa}}',
+'revdelete-legend' => 'Version rajoitukset',
+'revdelete-hide-text' => 'Piilota version sisältö',
+'revdelete-hide-image' => 'Piilota tiedoston sisältö',
+'revdelete-hide-name' => 'Piilota toiminto ja kohde',
+'revdelete-hide-comment' => 'Piilota yhteenveto',
+'revdelete-hide-user' => 'Piilota tekijän tunnus tai IP-osoite',
+'revdelete-hide-restricted' => 'Piilota tiedot ylläpitäjiltä kuten muilta',
+'revdelete-radio-same' => '(älä muuta)',
+'revdelete-radio-set' => 'Kyllä',
+'revdelete-radio-unset' => 'Ei',
+'revdelete-suppress' => 'Piilota myös ylläpitäjiltä',
+'revdelete-unsuppress' => 'Poista rajoitukset palautetuilta versiolta',
+'revdelete-log' => 'Syy',
+'revdelete-submit' => 'Toteuta {{PLURAL:$1|valittuun versioon|valittuihin versioihin}}',
+'revdelete-logentry' => 'muutti sivun [[$1]] version näkyvyyttä',
+'logdelete-logentry' => 'muutti sivun [[$1]] näkyvyyttä',
+'revdelete-success' => "'''Version näkyvyys päivitetty.'''",
+'revdelete-failure' => "'''Version näkyvyyttä ei voitu päivittää:'''
+$1",
+'logdelete-success' => 'Tapahtuman näkyvyys asetettu.',
+'logdelete-failure' => "'''Lokin näkyvyyttä ei voitu asettaa:'''
+$1",
+'revdel-restore' => 'Muuta näkyvyyttä',
+'pagehist' => 'Sivun muutoshistoria',
+'deletedhist' => 'Poistettujen versioiden historia',
+'revdelete-content' => 'sisällön',
+'revdelete-summary' => 'yhteenvedon',
+'revdelete-uname' => 'käyttäjänimen',
+'revdelete-restricted' => 'asetti rajoitukset ylläpitäjille',
+'revdelete-unrestricted' => 'poisti rajoitukset ylläpitäjiltä',
+'revdelete-hid' => 'piilotti $1',
+'revdelete-unhid' => 'palautti näkyviin $1',
+'revdelete-log-message' => '$1 koskien $2 {{PLURAL:$2|versiota}}',
+'logdelete-log-message' => '$1 koskien $2 {{PLURAL:$2|tapahtumaa}}',
+'revdelete-hide-current' => 'Virhe tapahtui $2, $1 päivätyn kohteen piilottamisessa: tämä on nykyinen versio. Sitä ei voi piilottaa.',
+'revdelete-show-no-access' => 'Virhe näyttäessä kohtaa $2 kello $1: kohta on merkitty ”rajoitetuksi”.
+Sinulla ei ole oikeutta siihen.',
+'revdelete-modify-no-access' => 'Virhe tapahtui $2, $1 kohteen muokkauksessa: tämä kohde on merkitty "rajoitetuksi". Sinulla ei ole oikeuksia sen muokkaukseen.',
+'revdelete-modify-missing' => 'Virhe muuttaessa kohdetta, jonka tunnus on $1: Se puuttuu tietokannasta.',
+'revdelete-no-change' => "'''Varoitus:''' kohdalle $2 kello $1 on asetettu valmiiksi näkyvyysasetuksia.",
+'revdelete-concurrent-change' => 'Virhe $2, $1 päivätyn kohteen muokkauksessa: sen tilan on näköjään muuttanut joku sillä aikaa kun yritit muokata sitä. Ole hyvä ja tarkista lokit.',
+'revdelete-only-restricted' => 'Virhe piilotettaessa $1 kello $2 päivättyä kohdetta: Et voi poistaa kohteita ylläpitäjien näkyviltä valitsematta myös jotain muuta näkyvyysasetusta.',
+'revdelete-reason-dropdown' => '*Yleiset poistosyyt
+** Tekijänoikeusrikkomus
+** Sopimattomat henkilötiedot',
+'revdelete-otherreason' => 'Muu syy tai tarkennus',
+'revdelete-reasonotherlist' => 'Muu syy',
+'revdelete-edit-reasonlist' => 'Muokkaa poistosyitä',
+'revdelete-offender' => 'Version tekijä',
# Suppression log
'suppressionlog' => 'Häivytysloki',
@@ -1061,67 +1147,13 @@ Uuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa men
'mergelogpagetext' => 'Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.',
# Diffs
-'history-title' => 'Sivun $1 muutoshistoria',
-'difference' => 'Versioiden väliset erot',
-'lineno' => 'Rivi $1:',
-'compareselectedversions' => 'Vertaile valittuja versioita',
-'visualcomparison' => 'Visuaalinen vertailu',
-'wikicodecomparison' => 'Wikitekstin vertailu',
-'editundo' => 'kumoa',
-'diff-multi' => '(Versioiden välissä {{PLURAL:$1|yksi muu muokkaus|$1 muuta muokkausta}}.)',
-'diff-movedto' => 'siirretty tänne: $1',
-'diff-styleadded' => 'tyyli $1 lisätty',
-'diff-added' => 'lisätty $1',
-'diff-changedto' => 'muutettu täksi: $1',
-'diff-movedoutof' => 'siirretty täältä: $1',
-'diff-styleremoved' => 'tyyli $1 poistettu',
-'diff-removed' => 'poistettu $1',
-'diff-changedfrom' => 'muutettu tästä: $1',
-'diff-src' => 'lähde',
-'diff-withdestination' => 'kohteena: $1',
-'diff-with' => '&#32;jossa $1 $2',
-'diff-with-final' => '&#32;ja $1 $2',
-'diff-width' => 'leveys',
-'diff-height' => 'korkeus',
-'diff-p' => "'''kappale'''",
-'diff-blockquote' => "'''sitaatti'''",
-'diff-h1' => "'''tason 1 otsikko'''",
-'diff-h2' => "'''tason 2 otsikko'''",
-'diff-h3' => "'''tason 3 otsikko'''",
-'diff-h4' => "'''tason 4 otsikko'''",
-'diff-h5' => "'''tason 5 otsikko'''",
-'diff-pre' => "'''esimuotoiltu kappale'''",
-'diff-div' => "'''jakoelementti'''",
-'diff-ul' => "'''järjestämätön luettelo'''",
-'diff-ol' => "'''järjestetty luettelo'''",
-'diff-li' => "'''listan kohta'''",
-'diff-table' => "'''taulukko'''",
-'diff-tbody' => "'''taulukon sisältö'''",
-'diff-tr' => "'''rivi'''",
-'diff-td' => "'''solu'''",
-'diff-th' => "'''otsikko'''",
-'diff-br' => "'''rivinvaihto'''",
-'diff-hr' => "'''vaakaviiva'''",
-'diff-code' => "'''lähdekoodikappale'''",
-'diff-dl' => "'''määrittelyluettelo'''",
-'diff-dt' => "'''määrittelytermi'''",
-'diff-dd' => "'''määritelmä'''",
-'diff-input' => "'''kenttä'''",
-'diff-form' => "'''lomake'''",
-'diff-img' => "'''kuva'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''linkki'''",
-'diff-i' => "'''kursivointi'''",
-'diff-b' => "'''lihavointi'''",
-'diff-strong' => "'''vahvennus'''",
-'diff-em' => "'''korostus'''",
-'diff-font' => "'''kirjasin'''",
-'diff-big' => "'''iso'''",
-'diff-del' => "'''poistettu'''",
-'diff-tt' => "'''kiinteä leveys'''",
-'diff-sub' => "'''alaindeksi'''",
-'diff-sup' => "'''yläindeksi'''",
-'diff-strike' => "'''yliviivaus'''",
+'history-title' => 'Sivun $1 muutoshistoria',
+'difference' => 'Versioiden väliset erot',
+'lineno' => 'Rivi $1:',
+'compareselectedversions' => 'Vertaile valittuja versioita',
+'showhideselectedversions' => 'Näytä tai piilota valitut versiot',
+'editundo' => 'kumoa',
+'diff-multi' => '(Versioiden välissä {{PLURAL:$1|yksi muu muokkaus|$1 muuta muokkausta}}.)',
# Search results
'searchresults' => 'Hakutulokset',
@@ -1129,31 +1161,27 @@ Uuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa men
'searchresulttext' => 'Lisätietoa {{GRAMMAR:genitive|{{SITENAME}}}} hakutoiminnoista on [[{{MediaWiki:Helppage}}|ohjesivulla]].',
'searchsubtitle' => "Etsit termillä '''[[:$1]]''' ([[Special:Prefixindex/$1|kaikki sivut alkaen termillä ”$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|viittaukset sivuun ”$1”]])",
'searchsubtitleinvalid' => 'Haku termeillä $1',
-'noexactmatch' => 'Sivua ”$1” ei ole olemassa.
-Voit [[:$1|luoda aiheesta uuden sivun]].',
-'noexactmatch-nocreate' => "'''Sivua nimeltä ”$1” ei ole.'''",
'toomanymatches' => 'Liian monta osumaa. Kokeile erilaista kyselyä.',
'titlematches' => 'Osumat sivujen otsikoissa',
'notitlematches' => 'Hakusanaa ei löytynyt minkään sivun otsikosta',
'textmatches' => 'Osumat sivujen teksteissä',
'notextmatches' => 'Hakusanaa ei löytynyt sivujen teksteistä',
-'prevn' => '← $1 edellistä',
-'nextn' => '$1 seuraavaa →',
+'prevn' => '← {{PLURAL:$1|edellinen|$1 edellistä}}',
+'nextn' => '{{PLURAL:$1|seuraava|$1 seuraavaa}} →',
'prevn-title' => '{{PLURAL:$1|Edellinen osuma|Edelliset $1 osumaa}}',
'nextn-title' => '{{PLURAL:$1|Seuraava osuma|Seuraavat $1 osumaa}}',
'shown-title' => 'Näytä $1 {{PLURAL:$1|osuma|osumaa}} sivulla',
'viewprevnext' => 'Näytä [$3] kerralla.
-$1 | $2',
+$1 {{int:pipe-separator}} $2',
'searchmenu-legend' => 'Hakuasetukset',
'searchmenu-exists' => "'''Sivu [[:$1]] löytyy tästä wikistä.'''",
'searchmenu-new' => "'''Luo sivu ''[[:$1]]'' tähän wikiin.'''",
'searchhelp-url' => 'Help:Sisällys',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Selaa sivuja tällä etuliitteellä]]',
'searchprofile-articles' => 'Sisältösivut',
-'searchprofile-articles-and-proj' => 'Sisältö- ja projektisivut',
-'searchprofile-project' => 'Projektisivut',
-'searchprofile-images' => 'Tiedostot',
+'searchprofile-project' => 'Ohje- ja projektisivut',
+'searchprofile-images' => 'Muut mediat',
'searchprofile-everything' => 'Kaikki',
'searchprofile-advanced' => 'Laajennettu',
'searchprofile-articles-tooltip' => 'Etsi seuraavia $1',
@@ -1161,8 +1189,6 @@ $1 | $2',
'searchprofile-images-tooltip' => 'Etsi tiedostoja',
'searchprofile-everything-tooltip' => 'Etsi kaikkialta (myös keskustelusivut)',
'searchprofile-advanced-tooltip' => 'Etsi määritellyistä nimiavaruuksista',
-'prefs-search-nsdefault' => 'Etsi käyttäen oletuksia:',
-'prefs-search-nscustom' => 'Etsi käyttäen määrittämiäsi nimiavaruuksia:',
'search-result-size' => '$1 ({{PLURAL:$2|1 sana|$2 sanaa}})',
'search-result-score' => 'Asiaankuuluvuus: $1%',
'search-redirect' => '(ohjaus $1)',
@@ -1175,11 +1201,12 @@ $1 | $2',
'search-mwsuggest-disabled' => 'ilman ehdotuksia',
'search-relatedarticle' => 'Hae samankaltaisia sivuja',
'mwsuggest-disable' => 'Älä näytä ehdotuksia AJAXilla',
+'searcheverything-enable' => 'Hae kaikista nimiavaruuksista',
'searchrelated' => 'samankaltainen',
'searchall' => 'kaikki',
'showingresults' => "{{PLURAL:$1|'''Yksi''' tulos|'''$1''' tulosta}} tuloksesta '''$2''' alkaen.",
'showingresultsnum' => "Alla on {{PLURAL:$3|'''Yksi''' hakutulos|'''$3''' hakutulosta}} alkaen '''$2.''' tuloksesta.",
-'showingresultstotal' => "Alla on {{PLURAL:$4|tulos '''$1'''|tulokset '''$1–$2'''}}; yhteensä '''$3'''.",
+'showingresultsheader' => "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosto}} haulle '''$4'''",
'nonefound' => "'''Huomautus''': Haku kohdistuu oletuksena vain tiettyihin nimiavaruuksiin.
Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön (mukaanlukien keskustelut, mallineet jne.) tai kohdista haku haluttuun nimiavaruuteen.",
'search-nonefound' => 'Hakusi ei tuottanut tulosta.',
@@ -1188,111 +1215,147 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'powersearch-ns' => 'Hae nimiavaruuksista:',
'powersearch-redir' => 'Luettele ohjaukset',
'powersearch-field' => 'Etsi',
+'powersearch-togglelabel' => 'Muuta valinta',
+'powersearch-toggleall' => 'Lisää kaikki',
+'powersearch-togglenone' => 'Poista kaikki',
'search-external' => 'Ulkoinen haku',
'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
+# Quickbar
+'qbsettings' => 'Pikavalikko',
+'qbsettings-none' => 'Ei mitään',
+'qbsettings-fixedleft' => 'Tekstin mukana, vasen',
+'qbsettings-fixedright' => 'Tekstin mukana, oikea',
+'qbsettings-floatingleft' => 'Pysyen vasemmalla',
+'qbsettings-floatingright' => 'Pysyen oikealla',
+
# Preferences page
-'preferences' => 'Asetukset',
-'mypreferences' => 'Asetukset',
-'prefs-edits' => 'Muokkauksia',
-'prefsnologin' => 'Et ole kirjautunut sisään.',
-'prefsnologintext' => 'Sinun täytyy <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} kirjautua sisään]</span>, jotta voisit muuttaa asetuksiasi.',
-'prefsreset' => 'Asetukset on palautettu tallennetuista asetuksistasi.',
-'qbsettings' => 'Pikavalikko',
-'qbsettings-none' => 'Ei mitään',
-'qbsettings-fixedleft' => 'Tekstin mukana, vasen',
-'qbsettings-fixedright' => 'Tekstin mukana, oikea',
-'qbsettings-floatingleft' => 'Pysyen vasemmalla',
-'qbsettings-floatingright' => 'Pysyen oikealla',
-'changepassword' => 'Salasanan vaihto',
-'skin' => 'Ulkonäkö',
-'skin-preview' => 'esikatselu',
-'math' => 'Matematiikka',
-'dateformat' => 'Päiväyksen muoto',
-'datedefault' => 'Ei valintaa',
-'datetime' => 'Aika ja päiväys',
-'math_failure' => 'Jäsentäminen epäonnistui',
-'math_unknown_error' => 'Tuntematon virhe',
-'math_unknown_function' => 'Tuntematon funktio',
-'math_lexing_error' => 'Tulkintavirhe',
-'math_syntax_error' => 'Jäsennysvirhe',
-'math_image_error' => 'PNG-muunnos epäonnistui; tarkista, että latex, dvips, gs ja convert on asennettu oikein.',
-'math_bad_tmpdir' => 'Matematiikan kirjoittaminen väliaikaishakemistoon tai tiedostonluonti ei onnistu',
-'math_bad_output' => 'Matematiikan tulostehakemistoon kirjoittaminen tai tiedostonluonti ei onnistu',
-'math_notexvc' => 'Texvc-sovellus puuttuu, lue math/READMEstä asennustietoja',
-'prefs-personal' => 'Käyttäjätiedot',
-'prefs-rc' => 'Tuoreet muutokset',
-'prefs-watchlist' => 'Tarkkailulista',
-'prefs-watchlist-days' => 'Tarkkailulistan ajanjakso',
-'prefs-watchlist-days-max' => '(enintään 7 päivää)',
-'prefs-watchlist-edits' => 'Tarkkailulistalla näytettävien muokkausten määrä',
-'prefs-watchlist-edits-max' => '(maksimilukumäärä: 1000)',
-'prefs-misc' => 'Muut',
-'prefs-resetpass' => 'Muuta salasana',
-'saveprefs' => 'Tallenna asetukset',
-'resetprefs' => 'Palauta tallennetut asetukset',
-'restoreprefs' => 'Palauta kaikki oletusasetuksiin',
-'textboxsize' => 'Muokkaus',
-'prefs-edit-boxsize' => 'Muokkauskentän koko.',
-'rows' => 'Rivejä',
-'columns' => 'Sarakkeita',
-'searchresultshead' => 'Haku',
-'resultsperpage' => 'Tuloksia sivua kohti',
-'contextlines' => 'Rivien määrä tulosta kohti',
-'contextchars' => 'Sisällön merkkien määrä riviä kohden',
-'stub-threshold' => '<a href="#" class="stub">Tynkäsivun</a> osoituskynnys',
-'recentchangesdays' => 'Näytettävien päivien määrä tuoreissa muutoksissa',
-'recentchangesdays-max' => '(enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'recentchangescount' => 'Muutoksien määrä tuoreissa muutoksissa, muutoshistorioissa ja lokeissa oletuksena',
-'savedprefs' => 'Asetuksesi tallennettiin onnistuneesti.',
-'timezonelegend' => 'Aikavyöhyke',
-'timezonetext' => 'Paikallisen ajan ja palvelimen ajan (UTC) välinen aikaero tunteina.',
-'localtime' => 'Paikallinen aika',
-'timezoneselect' => 'Aikavyöhyke',
-'timezoneuseserverdefault' => 'Käytä palvelimen oletusta',
-'timezoneuseoffset' => 'Muu (määritä aikaero)',
-'timezoneoffset' => 'Aikaero',
-'servertime' => 'Palvelimen aika',
-'guesstimezone' => 'Utele selaimelta',
-'timezoneregion-africa' => 'Afrikka',
-'timezoneregion-america' => 'Amerikka',
-'timezoneregion-antarctica' => 'Etelämanner',
-'timezoneregion-arctic' => 'Arktinen alue',
-'timezoneregion-asia' => 'Aasia',
-'timezoneregion-atlantic' => 'Atlantin valtameri',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Eurooppa',
-'timezoneregion-indian' => 'Intian valtameri',
-'timezoneregion-pacific' => 'Tyynimeri',
-'allowemail' => 'Salli sähköpostin lähetys osoitteeseen',
-'prefs-searchoptions' => 'Haku',
-'prefs-namespaces' => 'Nimiavaruudet',
-'defaultns' => 'Etsi oletusarvoisesti näistä nimiavaruuksista',
-'default' => 'oletus',
-'files' => 'Tiedostot',
-'prefs-custom-css' => 'Käyttäjäkohtainen CSS-tyylisivu',
-'prefs-custom-js' => 'Käyttäjäkohtainen JavaScript-sivu',
+'preferences' => 'Asetukset',
+'mypreferences' => 'Asetukset',
+'prefs-edits' => 'Muokkauksia',
+'prefsnologin' => 'Et ole kirjautunut sisään.',
+'prefsnologintext' => 'Sinun täytyy <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjautua sisään]</span>, jotta voisit muuttaa asetuksiasi.',
+'changepassword' => 'Salasanan vaihto',
+'prefs-skin' => 'Ulkoasu',
+'skin-preview' => 'esikatselu',
+'prefs-math' => 'Matematiikka',
+'datedefault' => 'Ei valintaa',
+'prefs-datetime' => 'Aika ja päiväys',
+'prefs-personal' => 'Käyttäjätiedot',
+'prefs-rc' => 'Tuoreet muutokset',
+'prefs-watchlist' => 'Tarkkailulista',
+'prefs-watchlist-days' => 'Tarkkailulistan ajanjakso',
+'prefs-watchlist-days-max' => '(enintään 7 päivää)',
+'prefs-watchlist-edits' => 'Tarkkailulistalla näytettävien muokkausten määrä',
+'prefs-watchlist-edits-max' => '(enintään 1000)',
+'prefs-watchlist-token' => 'Tarkkailulistan avain',
+'prefs-misc' => 'Muut',
+'prefs-resetpass' => 'Muuta salasana',
+'prefs-email' => 'Sähköpostiasetukset',
+'prefs-rendering' => 'Ulkoasu',
+'saveprefs' => 'Tallenna asetukset',
+'resetprefs' => 'Palauta tallennetut asetukset',
+'restoreprefs' => 'Palauta kaikki oletusasetuksiin',
+'prefs-editing' => 'Muokkaus',
+'prefs-edit-boxsize' => 'Muokkauskentän koko.',
+'rows' => 'Rivejä',
+'columns' => 'Sarakkeita',
+'searchresultshead' => 'Haku',
+'resultsperpage' => 'Tuloksia sivua kohti',
+'contextlines' => 'Rivien määrä tulosta kohti',
+'contextchars' => 'Sisällön merkkien määrä riviä kohden',
+'stub-threshold' => '<a href="#" class="stub">Tynkäsivun</a> osoituskynnys',
+'recentchangesdays' => 'Näytettävien päivien määrä tuoreissa muutoksissa',
+'recentchangesdays-max' => '(enintään $1 {{PLURAL:$1|päivä|päivää}})',
+'recentchangescount' => 'Näytettävien muutoksien määrä oletuksena',
+'prefs-help-recentchangescount' => 'Tämä sisältää tuoreet muutokset, muutoshistoriat ja lokit.',
+'prefs-help-watchlist-token' => 'Tämän kentän täyttäminen salaisella avaimella tuottaa RSS-syötteen tarkkailulistastasi.
+Kaikki, jotka tietävät tähän kenttään kirjoitetun avaimen pystyvät lukemaan tarkkailulistaa, joten valitse turvallinen arvo.
+Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
+'savedprefs' => 'Asetuksesi tallennettiin onnistuneesti.',
+'timezonelegend' => 'Aikavyöhyke',
+'localtime' => 'Paikallinen aika',
+'timezoneuseserverdefault' => 'Käytä palvelimen oletusta',
+'timezoneuseoffset' => 'Muu (määritä aikaero)',
+'timezoneoffset' => 'Aikaero',
+'servertime' => 'Palvelimen aika',
+'guesstimezone' => 'Utele selaimelta',
+'timezoneregion-africa' => 'Afrikka',
+'timezoneregion-america' => 'Amerikka',
+'timezoneregion-antarctica' => 'Etelämanner',
+'timezoneregion-arctic' => 'Arktinen alue',
+'timezoneregion-asia' => 'Aasia',
+'timezoneregion-atlantic' => 'Atlantin valtameri',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Eurooppa',
+'timezoneregion-indian' => 'Intian valtameri',
+'timezoneregion-pacific' => 'Tyynimeri',
+'allowemail' => 'Salli sähköpostin lähetys osoitteeseen',
+'prefs-searchoptions' => 'Haku',
+'prefs-namespaces' => 'Nimiavaruudet',
+'defaultns' => 'Muussa tapauksessa hae näistä nimiavaruuksista:',
+'default' => 'oletus',
+'prefs-files' => 'Tiedostot',
+'prefs-custom-css' => 'Käyttäjäkohtainen CSS-tyylisivu',
+'prefs-custom-js' => 'Käyttäjäkohtainen JavaScript-sivu',
+'prefs-reset-intro' => 'Voit käyttää tätä sivua palauttaaksesi kaikki asetuksesi sivuston oletusasetuksiin. Tätä ei voi kumota.',
+'prefs-emailconfirm-label' => 'Sähköpostin varmistus',
+'prefs-textboxsize' => 'Muokkauskentän koko',
+'youremail' => 'Sähköpostiosoite',
+'username' => 'Käyttäjätunnus',
+'uid' => 'Numero',
+'prefs-memberingroups' => 'Jäsenenä {{PLURAL:$1|ryhmässä|ryhmissä}}',
+'prefs-registration' => 'Rekisteröintiaika',
+'yourrealname' => 'Oikea nimi',
+'yourlanguage' => 'Käyttöliittymän kieli',
+'yourvariant' => 'Kielivariantti',
+'yournick' => 'Allekirjoitus',
+'prefs-help-signature' => 'Kommentit keskustelusivuilla pitäisi allekirjoittaa käyttäen merkintää <nowiki>~~~~</nowiki>, joka muuntuu allekirjoitukseksi ja aikaleimaksi.',
+'badsig' => 'Allekirjoitus ei kelpaa.',
+'badsiglength' => 'Allekirjoitus on liian pitkä – sen on oltava alle $1 {{PLURAL:$1|merkki|merkkiä}}.',
+'yourgender' => 'Sukupuoli',
+'gender-unknown' => 'Määrittelemätön',
+'gender-male' => 'Mies',
+'gender-female' => 'Nainen',
+'prefs-help-gender' => 'Vapaaehtoinen. Tietoa käytetään ohjelmistossa kielellisesti oikeaan ilmaisuun. Tämä tieto on julkinen.',
+'email' => 'Sähköpostitoiminnot',
+'prefs-help-realname' => 'Vapaaehtoinen. Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
+'prefs-help-email' => 'Vapaaehtoinen. Mahdollistaa uuden salasanan pyytämisen, jos unohdat salasanasi. Voit myös sallia muiden käyttäjien ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
+'prefs-help-email-required' => 'Sähköpostiosoite on pakollinen.',
+'prefs-info' => 'Perustiedot',
+'prefs-i18n' => 'Kieli',
+'prefs-signature' => 'Allekirjoitus',
+'prefs-dateformat' => 'Päiväyksen muoto',
+'prefs-timeoffset' => 'Aikavyöhyke',
+'prefs-advancedediting' => 'Lisäasetukset',
+'prefs-advancedrc' => 'Lisäasetukset',
+'prefs-advancedrendering' => 'Lisäasetukset',
+'prefs-advancedsearchoptions' => 'Lisäasetukset',
+'prefs-advancedwatchlist' => 'Lisäasetukset',
+'prefs-display' => 'Perusasetukset',
+'prefs-diffs' => 'Erot',
# User rights
-'userrights' => 'Käyttöoikeuksien hallinta', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Käyttöoikeuksien hallinta',
-'userrights-user-editname' => 'Käyttäjätunnus',
-'editusergroup' => 'Muokkaa käyttäjän ryhmiä',
-'editinguser' => "Käyttäjän '''[[User:$1|$1]]''' oikeudet ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Käyttäjän ryhmät',
-'saveusergroups' => 'Tallenna',
-'userrights-groupsmember' => 'Käyttäjä on jäsenenä ryhmissä',
-'userrights-groups-help' => 'Voit muuttaa ryhmiä, joissa tämä käyttäjä on.
+'userrights' => 'Käyttöoikeuksien hallinta',
+'userrights-lookup-user' => 'Käyttöoikeuksien hallinta',
+'userrights-user-editname' => 'Käyttäjätunnus',
+'editusergroup' => 'Muokkaa käyttäjän ryhmiä',
+'editinguser' => "Käyttäjän '''[[User:$1|$1]]''' oikeudet ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Käyttäjän ryhmät',
+'saveusergroups' => 'Tallenna',
+'userrights-groupsmember' => 'Käyttäjä on jäsenenä ryhmissä',
+'userrights-groupsmember-auto' => 'Implisiittinen jäsen:',
+'userrights-groups-help' => 'Voit muuttaa ryhmiä, joissa tämä käyttäjä on.
* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.
* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.
* <nowiki>*</nowiki> tarkoittaa, että et pysty kumoamaan kyseistä operaatiota.',
-'userrights-reason' => 'Syy',
-'userrights-no-interwiki' => 'Sinulla ei ole lupaa muokata käyttöoikeuksia muissa wikeissä.',
-'userrights-nodatabase' => 'Tietokantaa $1 ei ole tai se ei ole paikallinen.',
-'userrights-nologin' => 'Sinun täytyy [[Special:UserLogin|kirjautua sisään]] ylläpitäjätunnuksella, jotta voisit muuttaa käyttöoikeuksia.',
-'userrights-notallowed' => 'Tunnuksellasi ei ole lupaa muuttaa käyttöoikeuksia.',
-'userrights-changeable-col' => 'Ryhmät, joita voit muuttaa',
-'userrights-unchangeable-col' => 'Ryhmät, joita et voi muuttaa',
+'userrights-reason' => 'Syy',
+'userrights-no-interwiki' => 'Sinulla ei ole lupaa muokata käyttöoikeuksia muissa wikeissä.',
+'userrights-nodatabase' => 'Tietokantaa $1 ei ole tai se ei ole paikallinen.',
+'userrights-nologin' => 'Sinun täytyy [[Special:UserLogin|kirjautua sisään]] ylläpitäjätunnuksella, jotta voisit muuttaa käyttöoikeuksia.',
+'userrights-notallowed' => 'Tunnuksellasi ei ole lupaa muuttaa käyttöoikeuksia.',
+'userrights-changeable-col' => 'Ryhmät, joita voit muuttaa',
+'userrights-unchangeable-col' => 'Ryhmät, joita et voi muuttaa',
# Groups
'group' => 'Ryhmä',
@@ -1345,6 +1408,7 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'right-bigdelete' => 'Poistaa sivuja, joilla on pitkä historia',
'right-deleterevision' => 'Poistaa ja palauttaa sivujen versioita',
'right-deletedhistory' => 'Tarkastella poistettuja versiotietoja ilman niihin liittyvää sisältöä',
+'right-deletedtext' => 'Tarkastella poistettujen sivujen tekstiä ja muutoksia poistettujen versioiden välillä',
'right-browsearchive' => 'Tarkastella poistettuja sivuja',
'right-undelete' => 'Palauttaa sivuja',
'right-suppressrevision' => 'Tarkastella ja palauttaa ylläpitäjiltä piilotettuja versioita',
@@ -1358,6 +1422,8 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'right-editprotected' => 'Muokata suojattuja sivuja (pois lukien laajennettu sisällytyssuojaus)',
'right-editinterface' => 'Muokata käyttöliittymätekstejä',
'right-editusercssjs' => 'Muokata toisten käyttäjien CSS- ja JavaScript-tiedostoja',
+'right-editusercss' => 'Muokata toisten käyttäjien CSS-tiedostoja',
+'right-edituserjs' => 'Muokata toisten käyttäjien JavaScript-tiedostoja',
'right-rollback' => 'Palauttaa nopeasti käyttäjän viimeisimmät muokkaukset sivuun',
'right-markbotedits' => 'Kumota muokkauksia bottimerkinnällä',
'right-noratelimit' => 'Ohittaa nopeusrajoitukset',
@@ -1374,6 +1440,8 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'right-siteadmin' => 'Lukita tietokanta',
'right-reset-passwords' => 'Alustaa muiden käyttäjien salasanoja',
'right-override-export-depth' => 'Viedä sivuja sisältäen viitatut sivut viiden syvyydellä',
+'right-versiondetail' => 'Nähdä laajennetut tiedot ohjelmistoversiosta',
+'right-sendemail' => 'Lähettää sähköpostia muille käyttäjille',
# User rights log
'rightslog' => 'Käyttöoikeusloki',
@@ -1423,6 +1491,15 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'recentchanges-legend' => 'Tuoreiden muutosten asetukset',
'recentchangestext' => 'Tällä sivulla voi seurata tuoreita {{GRAMMAR:illative|{{SITENAME}}}} tehtyjä muutoksia.',
'recentchanges-feed-description' => 'Tällä sivulla voi seurata tuoreita {{GRAMMAR:illative|{{SITENAME}}}} tehtyjä muutoksia.',
+'recentchanges-label-legend' => 'Merkkien selitykset: $1',
+'recentchanges-legend-newpage' => '$1 – uusi sivu',
+'recentchanges-label-newpage' => 'Tämä muutos loi uuden sivun',
+'recentchanges-legend-minor' => '$1 – pieni muutos',
+'recentchanges-label-minor' => 'Tämä on pieni muutos',
+'recentchanges-legend-bot' => '$1 – botin muutos',
+'recentchanges-label-bot' => 'Tämän muutoksen suoritti botti',
+'recentchanges-legend-unpatrolled' => '$1 – tarkastamaton muutos',
+'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkastettu',
'rcnote' => 'Alla on {{PLURAL:$1|yksi muutos|$1 tuoreinta muutosta}} {{PLURAL:$2|yhden päivän|$2 viime päivän}} ajalta $4 kello $5 asti.',
'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
@@ -1449,6 +1526,8 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
# Recent changes linked
'recentchangeslinked' => 'Linkitettyjen sivujen muutokset',
+'recentchangeslinked-feed' => 'Linkitettyjen sivujen muutokset',
+'recentchangeslinked-toolbox' => 'Linkitettyjen sivujen muutokset',
'recentchangeslinked-title' => 'Sivulta $1 linkitettyjen sivujen muutokset',
'recentchangeslinked-noresult' => 'Ei muutoksia linkitettyihin sivuihin annetulla aikavälillä.',
'recentchangeslinked-summary' => "Tämä toimintosivu näyttää muutokset sivuihin, joihin on viitattu tältä sivulta. [[Special:Watchlist|Tarkkailulistallasi]] olevat sivut on '''lihavoitu'''.",
@@ -1458,8 +1537,8 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
# Upload
'upload' => 'Tallenna tiedosto',
'uploadbtn' => 'Tallenna tiedosto',
-'reupload' => 'Lähetä uudelleen',
'reuploaddesc' => 'Peruuta tallennus ja palaa tallennuslomakkeelle.',
+'upload-tryagain' => 'Lähetä muutettu tiedostokuvaus',
'uploadnologin' => 'Et ole kirjautunut sisään',
'uploadnologintext' => 'Sinun pitää olla [[Special:UserLogin|kirjautuneena sisään]], jotta voisit tallentaa tiedostoja.',
'upload_directory_missing' => 'Tallennushakemisto $1 puuttuu, eikä palvelin pysty luomaan sitä.',
@@ -1489,6 +1568,7 @@ Voit käyttää tiedostoja wikisivuilla seuraavilla tavoilla:
'minlength1' => 'Tiedoston nimessä pitää olla vähintään yksi merkki.',
'illegalfilename' => "Tiedoston nimessä '''$1''' on merkkejä, joita ei sallita sivujen nimissä. Vaihda tiedoston nimeä, ja yritä lähettämistä uudelleen.",
'badfilename' => 'Tiedoston nimi vaihdettiin: $1.',
+'filetype-mime-mismatch' => 'Tiedostopääte ei vastaa MIME-tyyppiä.',
'filetype-badmime' => 'Tiedostot, joiden MIME-tyyppi on <tt>$1</tt> ei voi lähettää.',
'filetype-bad-ie-mime' => 'Tiedostoa ei voi tallentaa, koska Internet Explorer tunnistaa sen kielletyksi tiedostomuodoksi $1, joka on mahdollisesti vaarallinen.',
'filetype-unwanted-type' => "'''.$1''' ei ole toivottu tiedostomuoto. {{PLURAL:$3|Suositeltu tiedostomuoto on|Suositeltuja tiedostomuotoja ovat}} $2.",
@@ -1508,7 +1588,6 @@ Muuttaaksesi uuden yhteenvedon kuvaussivulle, sinun täytyy manuaalisesti muokat
* Tallennetun tiedoston nimi: '''<tt>[[:$1]]</tt>'''
* Olemassa olevan tiedoston nimi: '''<tt>[[:$2]]</tt>'''
Valitse toinen tiedostonimi.",
-'fileexists-thumb' => "<center>'''Olemassa oleva tiedosto'''</center>",
'fileexists-thumbnail-yes' => "Tiedosto näyttäisi olevan pienennetty kuva ''(pienoiskuva)''. [[$1|thumb]]
Tarkista tiedosto '''<tt>[[:$1]]</tt>'''.
Jos yllä oleva tiedosto on alkuperäisversio samasta kuvasta, ei sille tarvitse tallentaa pienoiskuvaa.",
@@ -1520,6 +1599,7 @@ Jos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapaukses
'file-deleted-duplicate' => 'Tiedosto, joka on identtinen tämän tiedoston kanssa ([[$1]]) on aiemmin poistettu. Katso kyseisen tiedoston poistoloki ennen kuin jatkat uudelleentallentamista.',
'successfulupload' => 'Tallennus onnistui',
'uploadwarning' => 'Tallennusvaroitus',
+'uploadwarning-text' => 'Muuta alla olevaa tiedostokuvausta ja yritä uudelleen.',
'savefile' => 'Tallenna',
'uploadedimage' => 'tallensi tiedoston [[$1]]',
'overwroteimage' => 'tallensi uuden version [[$1]]',
@@ -1527,11 +1607,14 @@ Jos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapaukses
'uploaddisabledtext' => 'Tiedostojen tallennus on poistettu käytöstä.',
'php-uploaddisabledtext' => 'PHP:n tiedostojen lähetys ei ole käytössä. Tarkista asetukset kohdasta file_uploads.',
'uploadscripted' => 'Tämä tiedosto sisältää HTML-koodia tai skriptejä, jotka selain saattaa virheellisesti suorittaa.',
-'uploadcorrupt' => 'Tiedosto on vioittunut tai sillä on väärä tiedostopääte. Tarkista tiedosto ja lähetä se uudelleen.',
'uploadvirus' => 'Tiedosto sisältää viruksen. Tarkemmat tiedot: $1',
+'upload-source' => 'Lähdetiedosto',
'sourcefilename' => 'Lähdenimi',
+'sourceurl' => 'URL-lähde',
'destfilename' => 'Kohdenimi',
'upload-maxfilesize' => 'Suurin sallittu tiedostokoko: $1',
+'upload-description' => 'Tiedoston kuvaus',
+'upload-options' => 'Tallennusasetukset',
'watchthisupload' => 'Tarkkaile tätä tiedostoa',
'filewasdeleted' => 'Tämän niminen tiedosto on lisätty ja poistettu aikaisemmin. Tarkista $1 ennen jatkamista.',
'upload-wasdeleted' => "'''Varoitus: Olet tallentamassa tiedostoa, joka on jo aikaisemmin poistettu.'''
@@ -1539,12 +1622,43 @@ Jos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapaukses
Harkitse, haluatko jatkaa tämän tiedoston tallentamista. Tiedoston poistoloki näkyy tässä:",
'filename-bad-prefix' => "Tallentamasi tiedoston nimi alkaa merkkijonolla '''$1''', joka on yleensä digitaalikameroiden automaattisesti antama nimi, joka ei kuvaa tiedoston sisältöä. Anna tiedostolle kuvaavampi nimi.",
-'upload-proto-error' => 'Virheellinen protokolla',
-'upload-proto-error-text' => 'Etälähetys on mahdollista vain osoitteista, jotka alkavat merkkijonolla <code>http://</code> tai <code>ftp://</code>.',
-'upload-file-error' => 'Vakava virhe',
-'upload-file-error-text' => 'Väliaikaistiedoston luominen epäonnistui. Ota yhteyttä sivuston [[Special:ListUsers/sysop|ylläpitäjään]].',
-'upload-misc-error' => 'Virhe',
-'upload-misc-error-text' => 'Tiedoston etälähetys ei onnistunut. Varmista, että antamasi osoite on oikein ja toimiva. Jos virhe ei katoa, ota yhteyttä sivuston ylläpitäjään.',
+'upload-proto-error' => 'Virheellinen protokolla',
+'upload-proto-error-text' => 'Etälähetys on mahdollista vain osoitteista, jotka alkavat merkkijonolla <code>http://</code> tai <code>ftp://</code>.',
+'upload-file-error' => 'Vakava virhe',
+'upload-file-error-text' => 'Väliaikaistiedoston luominen epäonnistui. Ota yhteyttä sivuston [[Special:ListUsers/sysop|ylläpitäjään]].',
+'upload-misc-error' => 'Virhe',
+'upload-misc-error-text' => 'Tiedoston etälähetys ei onnistunut. Varmista, että antamasi osoite on oikein ja toimiva. Jos virhe ei katoa, ota yhteyttä sivuston ylläpitäjään.',
+'upload-too-many-redirects' => 'URL sisälsi liian monta ohjausta',
+'upload-unknown-size' => 'Tuntematon koko',
+'upload-http-error' => 'HTTP-virhe: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Pääsy estetty',
+'img-auth-nopathinfo' => 'PATH_INFO puuttuu.
+Palvelintasi ei ole asetettu välittämään tätä tietoa.
+Se saattaa olla CGI-pohjainen eikä voi tukea img_authia.
+Katso http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Pyydetty polku ei ole asetuksissa tiedostojen tallennushakemistona.',
+'img-auth-badtitle' => '”$1” ei kelpaa oikean otsikon muodostamiseen.',
+'img-auth-nologinnWL' => 'Et ole kirjautunut sisään ja tiedosto ”$1” ei ole sallittujen tiedostojen luettelossa.',
+'img-auth-nofile' => 'Tiedostoa ”$1” ei ole.',
+'img-auth-isdir' => 'Yrität päästä hakemistoon ”$1”.
+Vain tiedostoihin pääsy on sallittu.',
+'img-auth-streaming' => 'Toistetaan tiedostoa ”$1”.',
+'img-auth-public' => 'Img_auth.php:n tarkoitus on näyttää tiedostoja yksityisessä wikissä.
+Tämä wiki on asennettu julkiseksi wikiksi.
+Parhaan turvallisuuden vuoksi img_auth.php on poissa käytöstä.',
+'img-auth-noread' => 'Käyttäjillä ei ole oikeutta lukea tiedostoa ”$1”.',
+
+# HTTP errors
+'http-invalid-url' => 'Kelpaamaton URL: $1',
+'http-invalid-scheme' => 'Verkko-osoitteita kaavalla "$1" ei tueta',
+'http-request-error' => 'HTTP-pyyntö epäonnistui tuntemattoman virheen takia.',
+'http-read-error' => 'HTTP-lukuvirhe.',
+'http-timed-out' => 'HTTP-pyyntö aikakatkaistiin.',
+'http-curl-error' => 'Virhe noudettaessa verkko-osoitetta: $1',
+'http-host-unreachable' => 'Ei voitu tavoittaa verkko-osoitetta',
+'http-bad-status' => 'HTTP-pyynnön aikana oli ongelma: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Toimimaton osoite',
@@ -1553,6 +1667,7 @@ Harkitse, haluatko jatkaa tämän tiedoston tallentamista. Tiedoston poistoloki
'upload-curl-error28-text' => 'Antamastasi osoitteesta ei saatu vastausta määräajassa. Varmista, että sivusto on saavutettavissa ja yritä uudelleen.',
'license' => 'Lisenssi',
+'license-header' => 'Lisenssi',
'nolicense' => 'Ei lisenssiä',
'license-nopreview' => '(esikatselua ei saatavilla)',
'upload_source_url' => ' (julkinen verkko-osoite)',
@@ -1571,6 +1686,7 @@ Harkitse, haluatko jatkaa tämän tiedoston tallentamista. Tiedoston poistoloki
'listfiles_count' => 'Versioita',
# File description page
+'file-anchor-link' => 'Tiedosto',
'filehist' => 'Tiedoston historia',
'filehist-help' => 'Päiväystä napsauttamalla näet millainen tiedosto oli sillä ajan hetkellä.',
'filehist-deleteall' => 'poista kaikki',
@@ -1585,6 +1701,7 @@ Harkitse, haluatko jatkaa tämän tiedoston tallentamista. Tiedoston poistoloki
'filehist-dimensions' => 'Koko',
'filehist-filesize' => 'Tiedostokoko',
'filehist-comment' => 'Kommentti',
+'filehist-missing' => 'Tiedosto puuttuu',
'imagelinks' => 'Tiedostolinkit',
'linkstoimage' => '{{PLURAL:$1|Seuraavalta sivulta|$1 sivulla}} on linkki tähän tiedostoon:',
'linkstoimage-more' => 'Enemmän kuin $1 {{PLURAL:$1|sivu|sivua}} linkittää tähän tiedostoon.
@@ -1594,15 +1711,16 @@ Seuraava lista näyttää {{PLURAL:$1|ensimmäisen linkittävän sivun|$1 ensimm
'morelinkstoimage' => 'Näytä [[Special:WhatLinksHere/$1|lisää linkkejä]] tähän tiedostoon.',
'redirectstofile' => '{{PLURAL:$1|Seuraava tiedosto ohjaa|Seuraavat $1 tiedostoa ohjaavat}} tähän tiedostoon:',
'duplicatesoffile' => '{{PLURAL:$1|Seuraava tiedosto on tämän tiedoston kaksoiskappale|Seuraavat $1 tiedostoa ovat tämän tiedoston kaksoiskappaleita}} ([[Special:FileDuplicateSearch/$2|lisätietoja]]):',
-'sharedupload' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Katso $1 lisätietoja.',
-'shareduploadwiki-desc' => 'Tiedot tiedoston $1 näkyvät alla.',
-'shareduploadwiki-linktext' => 'kuvaussivulta',
-'noimage' => 'Tämän nimistä tiedostoa ei ole olemassa, mutta voit $1.',
-'noimage-linktext' => 'tallentaa sen',
+'sharedupload' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.',
+'sharedupload-desc-there' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.
+Katso [$2 tiedoston kuvaussivulta] lisätietoja.',
+'sharedupload-desc-here' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.
+Tiedot [$2 tiedoston kuvaussivulta] näkyvät alla.',
+'filepage-nofile' => 'Tämän nimistä tiedostoa ei ole olemassa.',
+'filepage-nofile-link' => 'Tämän nimistä tiedostoa ei ole olemassa, mutta voit [$1 tallentaa sen].',
'uploadnewversion-linktext' => 'Tallenna uusi versio tästä tiedostosta',
-'shared-repo-from' => 'kohteesta $1', # $1 is the repository name
-'shared-repo' => 'jaettu mediavarasto', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'kohteesta $1',
+'shared-repo' => 'jaettu mediavarasto',
# File reversion
'filerevert' => 'Tiedoston $1 palautus',
@@ -1631,6 +1749,7 @@ Seuraava lista näyttää {{PLURAL:$1|ensimmäisen linkittävän sivun|$1 ensimm
** Kaksoiskappale
** Tekijänoikeusrikkomus',
'filedelete-edit-reasonlist' => 'Muokkaa poistosyitä',
+'filedelete-maintenance' => 'Tiedostojen poisto ja palautus on väliaikaisesti poistettu käytöstä huoltotoimien vuoksi.',
# MIME search
'mimesearch' => 'MIME-haku',
@@ -1651,7 +1770,7 @@ Seuraava lista näyttää {{PLURAL:$1|ensimmäisen linkittävän sivun|$1 ensimm
# Random page
'randompage' => 'Satunnainen sivu',
-'randompage-nopages' => 'Nimiavaruudessa ”$1” ei ole sivuja.',
+'randompage-nopages' => '{{PLURAL:$2|Nimiavaruudessa|Nimiavaruuksissa}} $1 ei ole sivuja.',
# Random redirect
'randomredirect' => 'Satunnainen ohjaus',
@@ -1663,6 +1782,7 @@ Seuraava lista näyttää {{PLURAL:$1|ensimmäisen linkittävän sivun|$1 ensimm
'statistics-header-edits' => 'Muokkaustilastot',
'statistics-header-views' => 'Katselutilastot',
'statistics-header-users' => 'Käyttäjätilastot',
+'statistics-header-hooks' => 'Muut tilastot',
'statistics-articles' => 'Sisältösivuja',
'statistics-pages' => 'Sivuja',
'statistics-pages-desc' => 'Kaikki sivut, sisältäen keskustelusivut, ohjaukset ja muut.',
@@ -1690,8 +1810,8 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
'brokenredirects' => 'Virheelliset ohjaukset',
'brokenredirectstext' => 'Seuraavat ohjaukset osoittavat sivuihin, joita ei ole olemassa.',
-'brokenredirects-edit' => '(muokkaa)',
-'brokenredirects-delete' => '(poista)',
+'brokenredirects-edit' => 'muokkaa',
+'brokenredirects-delete' => 'poista',
'withoutinterwiki' => 'Sivut, joilla ei ole kielilinkkejä',
'withoutinterwiki-summary' => 'Seuraavat sivut eivät viittaa erikielisiin versioihin:',
@@ -1799,7 +1919,7 @@ Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muut
# Special:Categories
'categories' => 'Luokat',
-'categoriespagetext' => 'Seuraavat luokat sisältävät sivuja tai mediatiedostoja.
+'categoriespagetext' => '{{PLURAL:$1|Seuraava luokka sisältää|Seuraavat luokat sisältävät}} sivuja tai mediatiedostoja.
[[Special:UnusedCategories|Käyttämättömiä luokkia]] ei näytetä.
Katso myös [[Special:WantedCategories|halutut luokat]].',
'categoriesfrom' => 'Näytä alkaen luokasta',
@@ -1807,8 +1927,9 @@ Katso myös [[Special:WantedCategories|halutut luokat]].',
'special-categories-sort-abc' => 'järjestä nimen mukaan',
# Special:DeletedContributions
-'deletedcontributions' => 'Poistetut muokkaukset',
-'deletedcontributions-title' => 'Poistetut muokkaukset',
+'deletedcontributions' => 'Poistetut muokkaukset',
+'deletedcontributions-title' => 'Poistetut muokkaukset',
+'sp-deletedcontributions-contribs' => 'muokkaukset',
# Special:LinkSearch
'linksearch' => 'Ulkoiset linkit',
@@ -1825,6 +1946,16 @@ Tuetut protokollat: <tt>$1</tt>.',
'listusersfrom' => 'Katkaisuhaku',
'listusers-submit' => 'Hae',
'listusers-noresult' => 'Käyttäjiä ei löytynyt.',
+'listusers-blocked' => '(estetty)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktiivisten käyttäjien lista',
+'activeusers-intro' => 'Tämä on luettelo käyttäjistä, jotka ovat tehneet jotain viimeisen $1 {{PLURAL:$1|päivän}} sisällä.',
+'activeusers-count' => '$1 {{PLURAL:$1|muokkaus|muokkausta}} viimeisen {{PLURAL:$3|päivän|$3 päivän}} aikana',
+'activeusers-from' => 'Näytä käyttäjät alkaen',
+'activeusers-hidebots' => 'Piilota botit',
+'activeusers-hidesysops' => 'Piilota ylläpitäjät',
+'activeusers-noresult' => 'Käyttäjiä ei löytynyt.',
# Special:Log/newusers
'newuserlogpage' => 'Uudet käyttäjät',
@@ -1835,17 +1966,23 @@ Tuetut protokollat: <tt>$1</tt>.',
'newuserlog-autocreate-entry' => 'Automaattisesti luotu käyttäjätunnus',
# Special:ListGroupRights
-'listgrouprights' => 'Käyttäjäryhmien oikeudet',
-'listgrouprights-summary' => 'Tämä lista sisältää tämän wikin käyttäjäryhmät sekä ryhmiin liitetyt käyttöoikeudet.
+'listgrouprights' => 'Käyttäjäryhmien oikeudet',
+'listgrouprights-summary' => 'Tämä lista sisältää tämän wikin käyttäjäryhmät sekä ryhmiin liitetyt käyttöoikeudet.
Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWiki:Listgrouprights-helppage}}|erilliseltä ohjesivulta]].',
-'listgrouprights-group' => 'Ryhmä',
-'listgrouprights-rights' => 'Oikeudet',
-'listgrouprights-helppage' => 'Help:Käyttöoikeudet',
-'listgrouprights-members' => '(jäsenlista)',
-'listgrouprights-addgroup' => 'Voi lisätä jäseniä {{PLURAL:$2|ryhmään|ryhmiin}} $1',
-'listgrouprights-removegroup' => 'Voi poistaa jäseniä {{PLURAL:$2|ryhmästä|ryhmistä}} $1',
-'listgrouprights-addgroup-all' => 'Voi lisätä jäseniä kaikkiin ryhmiin',
-'listgrouprights-removegroup-all' => 'Voi poistaa jäseniä kaikista ryhmistä',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Myönnetyt oikeudet</span>
+* <span class="listgrouprights-revoked">Kumotut oikeudet</span>',
+'listgrouprights-group' => 'Ryhmä',
+'listgrouprights-rights' => 'Oikeudet',
+'listgrouprights-helppage' => 'Help:Käyttöoikeudet',
+'listgrouprights-members' => '(jäsenlista)',
+'listgrouprights-addgroup' => 'Voi lisätä jäseniä {{PLURAL:$2|ryhmään|ryhmiin}} $1',
+'listgrouprights-removegroup' => 'Voi poistaa jäseniä {{PLURAL:$2|ryhmästä|ryhmistä}} $1',
+'listgrouprights-addgroup-all' => 'Voi lisätä jäseniä kaikkiin ryhmiin',
+'listgrouprights-removegroup-all' => 'Voi poistaa jäseniä kaikista ryhmistä',
+'listgrouprights-addgroup-self' => 'Voi lisätä itsensä {{PLURAL:$2|ryhmään|ryhmiin}} $1',
+'listgrouprights-removegroup-self' => 'Voi poistaa itsensä {{PLURAL:$2|ryhmästä|ryhmistä}} $1',
+'listgrouprights-addgroup-self-all' => 'Voi lisätä itsensä kaikkiin ryhmiin',
+'listgrouprights-removegroup-self-all' => 'Voi poistaa itsensä kaikista ryhmistä',
# E-mail user
'mailnologin' => 'Lähettäjän osoite puuttuu',
@@ -1935,6 +2072,9 @@ Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös n
Tarkkailulistan asetuksia voit muuttaa osoitteessa:
{{fullurl:Special:Watchlist/edit}}
+Voit poistaa sivun tarkkailulistalta osoitteessa:
+$UNWATCHURL
+
Palaute ja lisäapu osoitteessa:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1947,9 +2087,10 @@ Palaute ja lisäapu osoitteessa:
'exblank' => 'oli tyhjä',
'delete-confirm' => 'Sivun ”$1” poistaminen',
'delete-legend' => 'Sivun poisto',
-'historywarning' => 'Sivua, jonka aiot poistaa on muokattu useammin kuin kerran:',
+'historywarning' => "'''Varoitus:''' Sivua, jota olet poistamassa on muokattu noin $1 {{PLURAL:$1|kerta|kertaa}}:",
'confirmdeletetext' => 'Olet poistamassa sivun tai tiedoston ja kaiken sen historian. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
'actioncomplete' => 'Toiminto suoritettu',
+'actionfailed' => 'Toiminto epäonnistui',
'deletedtext' => '”<nowiki>$1</nowiki>” on poistettu.
Sivulla $2 on lista viimeaikaisista poistoista.',
'deletedarticle' => 'poisti sivun $1',
@@ -1970,18 +2111,19 @@ Sivulla $2 on lista viimeaikaisista poistoista.',
'delete-warning-toobig' => 'Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.',
# Rollback
-'rollback' => 'palauta aiempaan versioon',
-'rollback_short' => 'Palautus',
-'rollbacklink' => 'palauta',
-'rollbackfailed' => 'Palautus epäonnistui',
-'cantrollback' => 'Aiempaan versioon ei voi palauttaa, koska viimeisin kirjoittaja on sivun ainoa tekijä.',
-'alreadyrolled' => 'Käyttäjän [[User:$2|$2]] ([[User talk:$2|keskustelu]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tekemiä muutoksia sivuun [[:$1]] ei voi kumota, koska joku muu on muuttanut sivua.
+'rollback' => 'palauta aiempaan versioon',
+'rollback_short' => 'Palautus',
+'rollbacklink' => 'palauta',
+'rollbackfailed' => 'Palautus epäonnistui',
+'cantrollback' => 'Aiempaan versioon ei voi palauttaa, koska viimeisin kirjoittaja on sivun ainoa tekijä.',
+'alreadyrolled' => 'Käyttäjän [[User:$2|$2]] ([[User talk:$2|keskustelu]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tekemiä muutoksia sivuun [[:$1]] ei voi kumota, koska joku muu on muuttanut sivua.
Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|keskustelu]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Muokkauksen yhteenveto oli: ''$1''.", # only shown if there is an edit comment
-'revertpage' => 'Käyttäjän [[Special:Contributions/$2|$2]] ([[User talk:$2|keskustelu]]) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Käyttäjän ”$1” tekemät muokkaukset kumottiin ja sivu palautettiin käyttäjän $2 versioon.',
-'sessionfailure' => 'Istuntosi kanssa on ongelma. Muutosta ei toteutettu varotoimena istuntokaappauksien takia. Käytä selaimen paluutoimintoa ja päivitä sivu, jolta tulit, ja yritä uudelleen.',
+'editcomment' => "Muokkauksen yhteenveto oli: ''$1''.",
+'revertpage' => 'Käyttäjän [[Special:Contributions/$2|$2]] ([[User talk:$2|keskustelu]]) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
+'revertpage-nouser' => 'Käyttäjän (käyttäjänimi poistettu) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
+'rollback-success' => 'Käyttäjän ”$1” tekemät muokkaukset kumottiin ja sivu palautettiin käyttäjän $2 versioon.',
+'sessionfailure' => 'Istuntosi kanssa on ongelma. Muutosta ei toteutettu varotoimena istuntokaappauksien takia. Käytä selaimen paluutoimintoa ja päivitä sivu, jolta tulit, ja yritä uudelleen.',
# Protect
'protectlogpage' => 'Suojausloki',
@@ -1997,7 +2139,7 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
'protectexpiry' => 'Vanhenee',
'protect_expiry_invalid' => 'Vanhenemisaika ei kelpaa.',
'protect_expiry_old' => 'Vanhenemisaika on menneisyydessä.',
-'protect-unchain' => 'Käytä siirtosuojausta',
+'protect-unchain-permissions' => 'Avaa myöhemmät suojausvalinnat',
'protect-text' => "Voit katsoa ja muuttaa sivun '''<nowiki>$1</nowiki>''' suojauksia.",
'protect-locked-blocked' => "Et voi muuttaa sivun suojauksia, koska sinut on estetty. Alla on sivun ”'''$1'''” nykyiset suojaukset:",
'protect-locked-dblock' => "Sivun suojauksia ei voi muuttaa, koska tietokanta on lukittu. Alla on sivun ”'''$1'''” nykyiset suojaukset:",
@@ -2023,7 +2165,7 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
** Muokkaussota
** Suuri näkyvyys',
'protect-edit-reasonlist' => 'Muokkaa suojaussyitä',
-'protect-expiry-options' => '1 tunti:1 hour,1 päivä:1 day,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuinen:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 tunti:1 hour,1 päivä:1 day,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuinen:infinite',
'restriction-type' => 'Rajoitus',
'restriction-level' => 'Suojaus',
'minimum-size' => 'Vähimmäiskoko',
@@ -2058,6 +2200,7 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
'undelete-nodiff' => 'Aikaisempaa versiota ei löytynyt.',
'undeletebtn' => 'Palauta',
'undeletelink' => 'näytä tai palauta',
+'undeleteviewlink' => 'näytä',
'undeletereset' => 'Tyhjennä',
'undeleteinvert' => 'Käänteinen valinta',
'undeletecomment' => 'Syy',
@@ -2095,19 +2238,23 @@ $1',
'contributions-title' => 'Käyttäjän $1 muokkaukset',
'mycontris' => 'Omat muokkaukset',
'contribsub2' => 'Käyttäjän $1 ($2) muokkaukset',
-'nocontribs' => 'Näihin ehtoihin sopivia muokkauksia ei löytynyt.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Näihin ehtoihin sopivia muokkauksia ei löytynyt.',
'uctop' => ' (uusin)',
'month' => 'Kuukausi',
'year' => 'Vuosi',
-'sp-contributions-newbies' => 'Näytä uusien tulokkaiden muutokset',
-'sp-contributions-newbies-sub' => 'Uusien tulokkaiden muokkaukset',
-'sp-contributions-newbies-title' => 'Uusien tulokkaiden muokkaukset',
-'sp-contributions-blocklog' => 'estot',
-'sp-contributions-logs' => 'lokit',
-'sp-contributions-search' => 'Etsi muokkauksia',
-'sp-contributions-username' => 'IP-osoite tai käyttäjätunnus',
-'sp-contributions-submit' => 'Hae',
+'sp-contributions-newbies' => 'Näytä uusien tulokkaiden muutokset',
+'sp-contributions-newbies-sub' => 'Uusien tulokkaiden muokkaukset',
+'sp-contributions-newbies-title' => 'Uusien tulokkaiden muokkaukset',
+'sp-contributions-blocklog' => 'estot',
+'sp-contributions-deleted' => 'poistetut muokkaukset',
+'sp-contributions-logs' => 'lokit',
+'sp-contributions-talk' => 'keskustelu',
+'sp-contributions-userrights' => 'käyttöoikeuksien hallinta',
+'sp-contributions-blocked-notice' => 'Tämä käyttäjä on tällä hetkellä estetty. Alla on viimeisin estolokin tapahtuma:',
+'sp-contributions-search' => 'Etsi muokkauksia',
+'sp-contributions-username' => 'IP-osoite tai käyttäjätunnus',
+'sp-contributions-submit' => 'Hae',
# What links here
'whatlinkshere' => 'Tänne viittaavat sivut',
@@ -2130,6 +2277,7 @@ $1',
# Block/unblock
'blockip' => 'Aseta muokkausesto',
+'blockip-title' => 'Estä käyttäjä',
'blockip-legend' => 'Estä käyttäjä',
'blockiptext' => 'Tällä lomakkeella voit estää käyttäjän tai IP-osoitteen muokkausoikeudet. Muokkausoikeuksien poistamiseen [[{{MediaWiki:Policy-url}}|pitää olla syy]], esimerkiksi sivujen vandalisointi. Kirjoita syy siihen varattuun kenttään.<br />Vapaamuotoisen vanhenemisajat noudattavat GNUn standardimuotoa, joka on kuvattu tar-manuaalissa ([http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html] [EN]), esimerkiksi ”1 hour”, ”2 days”, ”next Wednesday”, ”2014-08-29”.',
'ipaddress' => 'IP-osoite',
@@ -2151,7 +2299,7 @@ $1',
'ipbenableautoblock' => 'Estä viimeisin IP-osoite, josta käyttäjä on muokannut, sekä ne osoitteet, joista hän jatkossa yrittää muokata.',
'ipbsubmit' => 'Estä',
'ipbother' => 'Vapaamuotoinen kesto',
-'ipboptions' => '2 tuntia:2 hours,1 päivä:1 day,3 päivää:3 days,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuinen:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 tuntia:2 hours,1 päivä:1 day,3 päivää:3 days,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuinen:infinite',
'ipbotheroption' => 'Muu kesto',
'ipbotherreason' => 'Muu syy tai tarkennus',
'ipbhidename' => 'Piilota tunnus muokkauksista ja listauksista',
@@ -2180,9 +2328,11 @@ Nykyiset estot löytyvät [[Special:IPBlockList|estolistalta]].',
'ipblocklist-sh-tempblocks' => '$1 väliaikaiset estot',
'ipblocklist-sh-addressblocks' => '$1 yksittäiset IP-estot',
'ipblocklist-submit' => 'Hae',
+'ipblocklist-localblock' => 'Paikallinen esto',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Muu esto|Muut estot}}',
'blocklistline' => '$1 – $2 on estänyt käyttäjän $3 ($4)',
'infiniteblock' => 'ikuisesti',
-'expiringblock' => 'vanhenee $1',
+'expiringblock' => 'vanhenee $1 kello $2',
'anononlyblock' => 'vain kirjautumattomat',
'noautoblockblock' => 'ei automaattista IP-osoitteiden estoa',
'createaccountblock' => 'tunnusten luonti estetty',
@@ -2196,7 +2346,10 @@ Nykyiset estot löytyvät [[Special:IPBlockList|estolistalta]].',
'contribslink' => 'muokkaukset',
'autoblocker' => 'Olet automaattisesti estetty, koska jaat IP-osoitteen käyttäjän [[User:$1|$1]] kanssa. Eston syy: $2.',
'blocklogpage' => 'Estoloki',
-'blocklog-fulllog' => 'Koko estoloki',
+'blocklog-showlog' => 'Tämä käyttäjä on ollut estettynä.
+Alla on ote estolokista.',
+'blocklog-showsuppresslog' => 'Tämä käyttäjä on ollut estettynä ja häivytettynä.
+Alla on ote häivytyslokista.',
'blocklogentry' => 'esti käyttäjän tai IP-osoitteen [[$1]]. Eston kesto $2 $3',
'reblock-logentry' => 'muutti käyttäjän tai IP-osoitteen [[$1]] eston asetuksia. Eston kesto $2 $3',
'blocklogtext' => 'Tämä on loki muokkausestoista ja niiden purkamisista. Automaattisesti estettyjä IP-osoitteita ei kirjata. Tutustu [[Special:IPBlockList|estolistaan]] nähdäksesi listan tällä hetkellä voimassa olevista estoista.',
@@ -2215,9 +2368,11 @@ Nykyiset estot löytyvät [[Special:IPBlockList|estolistalta]].',
'ipb_already_blocked' => '”$1” on jo estetty.',
'ipb-needreblock' => '== Estetty jo ==
$1 on jo estetty. Haluatko muuttaa eston asetuksia?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Muu esto|Muut estot}}',
'ipb_cant_unblock' => 'Estoa ”$1” ei löytynyt. Se on saatettu poistaa.',
'ipb_blocked_as_range' => 'IP-osoite $1 on estetty välillisesti ja sen estoa ei voi poistaa. Se on estetty osana verkkoaluetta $2, jonka eston voi poistaa',
'ip_range_invalid' => 'Virheellinen IP-alue.',
+'ip_range_toolarge' => 'Suuremmat osoitealue-estot kuin /$1 eivät ole sallittuja.',
'blockme' => 'Estä minut',
'proxyblocker' => 'Välityspalvelinesto',
'proxyblocker-disabled' => 'Tämä toiminto ei ole käytössä.',
@@ -2226,6 +2381,7 @@ $1 on jo estetty. Haluatko muuttaa eston asetuksia?',
'sorbsreason' => 'IP-osoitteesi on listattu avoimena välityspalvelimena DNSBLin mustalla listalla.',
'sorbs_create_account_reason' => 'IP-osoitteesi on listattu avoimena välityspalvelimena DNSBLin mustalla listalla. Et voi luoda käyttäjätunnusta.',
'cant-block-while-blocked' => 'Et voi estää muita käyttäjiä ollessasi estetty.',
+'cant-see-hidden-user' => 'Käyttäjä, jota yrität estää on jo estetty ja piilotettu. Koska sinulla ei ole hideuser-oikeutta, et voi nähdä tai muokata käyttäjän estoa.',
# Developer tools
'lockdb' => 'Lukitse tietokanta',
@@ -2264,6 +2420,7 @@ Tämä saattaa olla suuri ja odottamaton muutos suositulle sivulle. Varmista, et
Näissä tapauksissa sivut täytyy siirtää tai yhdistää käsin.",
'movearticle' => 'Siirrä sivu',
+'moveuserpage-warning' => "'''Varoitus:''' Olet siirtämässä käyttäjäsivua. Huomaa, että vain sivu siirretään ja käyttäjää ''ei'' nimetä uudelleen.",
'movenologin' => 'Et ole kirjautunut sisään',
'movenologintext' => 'Sinun pitää olla rekisteröitynyt käyttäjä ja [[Special:UserLogin|kirjautua sisään]], jotta voisit siirtää sivun.',
'movenotallowed' => 'Sinulla ei ole oikeuksia siirtää sivuja.',
@@ -2274,7 +2431,7 @@ Näissä tapauksissa sivut täytyy siirtää tai yhdistää käsin.",
'move-watch' => 'Tarkkaile tätä sivua',
'movepagebtn' => 'Siirrä sivu',
'pagemovedsub' => 'Siirto onnistui',
-'movepage-moved' => "'''$1 on siirretty nimelle $2'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''$1 on siirretty nimelle $2'''",
'movepage-moved-redirect' => 'Ohjaus luotiin.',
'movepage-moved-noredirect' => 'Ohjausta ei luotu.',
'articleexists' => 'Kohdesivu on jo olemassa, tai valittu nimi ei ole sopiva. Ole hyvä ja valitse uusi nimi.',
@@ -2314,6 +2471,14 @@ $1 {{PLURAL:$1|sivu|sivua}} siirrettiin.',
'imageinvalidfilename' => 'Kohdenimi on virheellinen',
'fix-double-redirects' => 'Päivitä kaikki tänne viittaavat ohjaukset ohjaamaan uudelle nimelle',
'move-leave-redirect' => 'Jätä paikalle ohjaus',
+'protectedpagemovewarning' => "'''Varoitus:''' Tämä sivu on lukittu siten, että vain ylläpitäjät voivat siirtää sitä.
+Alla on viimeisin lokitapahtuma:",
+'semiprotectedpagemovewarning' => 'Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat siirtää sitä.
+Alla on viimeisin lokitapahtuma:',
+'move-over-sharedrepo' => '== Tiedosto on olemassa ==
+[[:$1]] on olemassa jaetussa tietovarastossa. Tiedoston siirtäminen tälle nimelle ohittaa jaetun tiedoston.',
+'file-exists-sharedrepo' => 'Valittu tiedostonimi on jo käytössä jaetussa varastossa.
+Valitse toinen nimi.',
# Export
'export' => 'Sivujen vienti',
@@ -2337,15 +2502,21 @@ Sivujen koko historian vienti on estetty suorituskykysyistä.',
'export-pagelinks' => 'Sisällytä linkkien kohteina olevat sivut syvyydelle',
# Namespace 8 related
-'allmessages' => 'Järjestelmäviestit',
-'allmessagesname' => 'Nimi',
-'allmessagesdefault' => 'Oletusarvo',
-'allmessagescurrent' => 'Nykyinen arvo',
-'allmessagestext' => 'Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.
+'allmessages' => 'Järjestelmäviestit',
+'allmessagesname' => 'Nimi',
+'allmessagesdefault' => 'Oletusarvo',
+'allmessagescurrent' => 'Nykyinen arvo',
+'allmessagestext' => 'Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.
Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.org/wiki/Localisation MediaWikin kotoistussivuilla] ja sivustolla [http://translatewiki.net translatewiki.net].',
-'allmessagesnotsupportedDB' => 'Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.',
-'allmessagesfilter' => 'Viestiavainsuodatin:',
-'allmessagesmodified' => 'Näytä vain muutetut',
+'allmessagesnotsupportedDB' => 'Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.',
+'allmessages-filter-legend' => 'Suodata',
+'allmessages-filter' => 'Suodata muutosten perusteella',
+'allmessages-filter-unmodified' => 'Muuttamaton',
+'allmessages-filter-all' => 'Kaikki',
+'allmessages-filter-modified' => 'Muutettu',
+'allmessages-prefix' => 'Suodata etuliitteellä',
+'allmessages-language' => 'Kieli:',
+'allmessages-filter-submit' => 'Siirry',
# Thumbnails
'thumbnail-more' => 'Suurenna',
@@ -2355,6 +2526,9 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.o
'djvu_no_xml' => 'DjVu-tiedoston XML-vienti epäonnistui',
'thumbnail_invalid_params' => 'Virheelliset parametrit pienoiskuvalle',
'thumbnail_dest_directory' => 'Kohdehakemiston luominen ei onnistunut',
+'thumbnail_image-type' => 'Kuvamuoto ei ole tuettu',
+'thumbnail_gd-library' => 'GD-kirjastoa ei ole asennettu oikein. Funktio $1 puuttuu.',
+'thumbnail_image-missing' => 'Tiedosto näyttää puuttuvan: $1',
# Special:Import
'import' => 'Tuo sivuja',
@@ -2416,6 +2590,7 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.o
'tooltip-ca-viewsource' => 'Näytä sivun lähdekoodi',
'tooltip-ca-history' => 'Sivun aikaisemmat versiot',
'tooltip-ca-protect' => 'Suojaa tämä sivu',
+'tooltip-ca-unprotect' => 'Poista suojaus tältä sivulta',
'tooltip-ca-delete' => 'Poista tämä sivu',
'tooltip-ca-undelete' => 'Palauta tämä sivu',
'tooltip-ca-move' => 'Siirrä tämä sivu',
@@ -2426,6 +2601,7 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.o
'tooltip-search-fulltext' => 'Etsi sivuilta tätä tekstiä',
'tooltip-p-logo' => 'Etusivu',
'tooltip-n-mainpage' => 'Mene etusivulle',
+'tooltip-n-mainpage-description' => 'Mene etusivulle',
'tooltip-n-portal' => 'Keskustelua projektista',
'tooltip-n-currentevents' => 'Taustatietoa tämänhetkisistä tapahtumista',
'tooltip-n-recentchanges' => 'Lista tuoreista muutoksista',
@@ -2482,10 +2658,12 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.o
# Attribution
'anonymous' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonyymi käyttäjä|anonyymit käyttäjät}}',
'siteuser' => '{{GRAMMAR:genitive|{{SITENAME}}}} käyttäjä $1',
-'lastmodifiedatby' => 'Tätä sivua muokkasi viimeksi $3 $1 kello $2.', # $1 date, $2 time, $3 user
+'anonuser' => '{{GRAMMAR:genitive|{{SITENAME}}}} anonyymi käyttäjä $1',
+'lastmodifiedatby' => 'Tätä sivua muokkasi viimeksi $3 $1 kello $2.',
'othercontribs' => 'Perustuu työlle, jonka teki $1.',
'others' => 'muut',
'siteusers' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|käyttäjä|käyttäjät}} $1',
+'anonusers' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|anonyymi käyttäjä|anonyymit käyttäjät}} $1',
'creditspage' => 'Sivun tekijäluettelo',
'nocredits' => 'Tämän sivun tekijäluettelotietoja ei löydy.',
@@ -2523,11 +2701,22 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.o
'mw_math_modern' => 'Suositus nykyselaimille',
'mw_math_mathml' => 'Näytä MathML:nä jos mahdollista (kokeellinen)',
+# Math errors
+'math_failure' => 'Jäsentäminen epäonnistui',
+'math_unknown_error' => 'Tuntematon virhe',
+'math_unknown_function' => 'Tuntematon funktio',
+'math_lexing_error' => 'Tulkintavirhe',
+'math_syntax_error' => 'Jäsennysvirhe',
+'math_image_error' => 'PNG-muunnos epäonnistui; tarkista, että latex, dvips, gs ja convert on asennettu oikein.',
+'math_bad_tmpdir' => 'Matematiikan kirjoittaminen väliaikaishakemistoon tai tiedostonluonti ei onnistu',
+'math_bad_output' => 'Matematiikan tulostehakemistoon kirjoittaminen tai tiedostonluonti ei onnistu',
+'math_notexvc' => 'Texvc-sovellus puuttuu, lue math/READMEstä asennustietoja',
+
# Patrolling
'markaspatrolleddiff' => 'Merkitse tarkastetuksi',
'markaspatrolledtext' => 'Merkitse muokkaus tarkastetuksi',
'markedaspatrolled' => 'Tarkastettu',
-'markedaspatrolledtext' => 'Valittu versio on tarkastettu.',
+'markedaspatrolledtext' => 'Valittu versio sivusta [[:$1]] on tarkastettu.',
'rcpatroldisabled' => 'Tuoreiden muutosten tarkastustoiminto ei ole käytössä',
'rcpatroldisabledtext' => 'Tuoreiden muutosten tarkastustoiminto ei ole käytössä.',
'markedaspatrollederror' => 'Muutoksen merkitseminen tarkastetuksi epäonnistui.',
@@ -2557,13 +2746,10 @@ $1',
'previousdiff' => '← Vanhempi muutos',
'nextdiff' => 'Uudempi muutos →',
-# Visual comparison
-'visual-comparison' => 'Visuaalinen vertailu',
-
# Media information
'mediawarning' => "'''Varoitus''': Tämä tiedostomuoto saattaa sisältää vahingollista koodia.
Suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.",
-'imagemaxsize' => 'Kuvien enimmäiskoko kuvaussivuilla:',
+'imagemaxsize' => 'Kuvien enimmäiskoko kuvaussivuilla',
'thumbsize' => 'Pikkukuvien koko',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sivu|sivua}}',
'file-info' => '$1, MIME-tyyppi: $2',
@@ -2572,6 +2758,8 @@ Suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.",
'svg-long-desc' => '(SVG-tiedosto; oletustarkkuus $1×$2 kuvapistettä; tiedostokoko $3)',
'show-big-image' => 'Korkeatarkkuuksinen versio',
'show-big-image-thumb' => '<small>Esikatselun koko: $1×$2 px</small>',
+'file-info-gif-looped' => 'toistuva',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kehys|kehystä}}',
# Special:NewFiles
'newimages' => 'Uudet tiedostot',
@@ -2602,7 +2790,7 @@ Vain *-merkillä alkavat rivit otetaan huomioon. Ensimmäisen linkin on osoitett
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Leveys',
@@ -2729,14 +2917,14 @@ Vain *-merkillä alkavat rivit otetaan huomioon. Ensimmäisen linkin on osoitett
'exif-unknowndate' => 'Tuntematon päiväys',
-'exif-orientation-1' => 'Normaali', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Käännetty vaakasuunnassa', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Käännetty 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Käännetty pystysuunnassa', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Käännetty 90° vastapäivään ja pystysuunnassa', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Käännetty 90° myötäpäivään', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Käännetty 90° myötäpäivään ja pystysuunnassa', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Käännetty 90° vastapäivään', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaali',
+'exif-orientation-2' => 'Käännetty vaakasuunnassa',
+'exif-orientation-3' => 'Käännetty 180°',
+'exif-orientation-4' => 'Käännetty pystysuunnassa',
+'exif-orientation-5' => 'Käännetty 90° vastapäivään ja pystysuunnassa',
+'exif-orientation-6' => 'Käännetty 90° myötäpäivään',
+'exif-orientation-7' => 'Käännetty 90° myötäpäivään ja pystysuunnassa',
+'exif-orientation-8' => 'Käännetty 90° vastapäivään',
'exif-planarconfiguration-1' => 'kokkaremuoto',
'exif-planarconfiguration-2' => 'litteämuoto',
@@ -2858,7 +3046,7 @@ Vain *-merkillä alkavat rivit otetaan huomioon. Ensimmäisen linkin on osoitett
'exif-gpsmeasuremode-2' => '2-ulotteinen mittaus',
'exif-gpsmeasuremode-3' => '3-ulotteinen mittaus',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mailia tunnissa',
'exif-gpsspeed-n' => 'solmua',
@@ -2877,6 +3065,7 @@ Vain *-merkillä alkavat rivit otetaan huomioon. Ensimmäisen linkin on osoitett
'watchlistall2' => ', koko historia',
'namespacesall' => 'kaikki',
'monthsall' => 'kaikki',
+'limitall' => 'kaikki',
# E-mail address confirmation
'confirmemail' => 'Varmenna sähköpostiosoite',
@@ -2901,7 +3090,7 @@ Varmenna, että tämä tunnus kuuluu sinulle avaamalla seuraava linkki selaimell
$3
-Jos et ole rekisteröinyt tätä tunnusta, peruuta sähköpostiosoitteen varmistus avaamalla seuraava linkki:
+Jos et ole rekisteröinyt tätä tunnusta, peruuta sähköpostiosoitteen varmennus avaamalla seuraava linkki:
$5
@@ -3007,7 +3196,7 @@ Voit myös muokata listaa [[Special:Watchlist/edit|tavalliseen tapaan]].',
'duplicate-defaultsort' => 'Varoitus: Oletuslajitteluavain ”$2” korvaa aiemman oletuslajitteluavaimen ”$1”.',
# Special:Version
-'version' => 'Versio', # Not used as normal message but as header for the special page itself
+'version' => 'Versio',
'version-extensions' => 'Asennetut laajennukset',
'version-specialpages' => 'Toimintosivut',
'version-parserhooks' => 'Jäsenninkytkökset',
@@ -3021,7 +3210,7 @@ Voit myös muokata listaa [[Special:Watchlist/edit|tavalliseen tapaan]].',
'version-skin-extension-functions' => 'Ulkoasun laajennusfunktiot',
'version-hook-name' => 'Kytköspisteen nimi',
'version-hook-subscribedby' => 'Kytkökset',
-'version-version' => 'Versio',
+'version-version' => '(Versio $1)',
'version-license' => 'Lisenssi',
'version-software' => 'Asennettu ohjelmisto',
'version-software-product' => 'Tuote',
@@ -3099,4 +3288,15 @@ Kirjoita tiedostonimi ilman ”{{ns:file}}:”-etuliitettä.',
'dberr-outofdate' => 'Googlen indeksi ei välttämättä ole ajan tasalla.',
'dberr-cachederror' => 'Alla on välimuistissa oleva sivun versio, joka ei välttämättä ole ajan tasalla.',
+# HTML forms
+'htmlform-invalid-input' => 'Antamassasi syötteessä on ongelmia',
+'htmlform-select-badoption' => 'Antamasi arvo ei ole kelvollinen.',
+'htmlform-int-invalid' => 'Antamasi arvo ei ole kokonaisluku.',
+'htmlform-float-invalid' => 'Antamasi arvo ei ole numero.',
+'htmlform-int-toolow' => 'Annettu arvo on pienempi kuin alaraja $1',
+'htmlform-int-toohigh' => 'Annettu arvo on suurempi kuin yläraja $1',
+'htmlform-submit' => 'Lähetä',
+'htmlform-reset' => 'Kumoa muutokset',
+'htmlform-selectorother-other' => 'Muu',
+
);
diff --git a/languages/messages/MessagesFiu_vro.php b/languages/messages/MessagesFiu_vro.php
index 6dbeb220..85c3fd7a 100644
--- a/languages/messages/MessagesFiu_vro.php
+++ b/languages/messages/MessagesFiu_vro.php
@@ -1,6 +1,9 @@
<?php
/** Võro
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment Deprecated language code. Falls back to 'vro'.
diff --git a/languages/messages/MessagesFj.php b/languages/messages/MessagesFj.php
index a9c7f0e3..09334406 100644
--- a/languages/messages/MessagesFj.php
+++ b/languages/messages/MessagesFj.php
@@ -60,10 +60,12 @@ $messages = array(
'dec' => 'Tiseba',
'cancel' => 'Sasamaki',
-'qbedit' => 'Veisautaki',
'mytalk' => 'Noqu vosa',
'navigation' => 'Vakatasosoko',
+# Cologne Blue skin
+'qbedit' => 'Veisautaki',
+
'help' => 'Veivuke',
'search' => 'Vaqaqara',
'searchbutton' => 'Vaqaqara',
@@ -108,9 +110,6 @@ $messages = array(
'nologinlink' => 'Dolava nomu Akaude',
'createaccount' => 'Dolava nomu Akaude',
'gotaccountlink' => 'Curu mai',
-'youremail' => 'I vola livaliva *:',
-'username' => 'Yaca vakayagataki:',
-'email' => 'I vola livaliva',
# Edit pages
'summary' => 'Kena i Soqoni:',
@@ -126,12 +125,17 @@ $messages = array(
# Preferences page
'mypreferences' => 'Ulutaga taleitaki',
'searchresultshead' => 'Vaqaqara',
+'youremail' => 'I vola livaliva *:',
+'username' => 'Yaca vakayagataki:',
+'email' => 'I vola livaliva',
# Recent changes
'recentchanges' => 'Veisau vovou',
# Recent changes linked
-'recentchangeslinked' => 'Veisau e veiwekani',
+'recentchangeslinked' => 'Veisau e veiwekani',
+'recentchangeslinked-feed' => 'Veisau e veiwekani',
+'recentchangeslinked-toolbox' => 'Veisau e veiwekani',
# Upload
'upload' => 'Vakasinaita',
@@ -143,8 +147,8 @@ $messages = array(
# Random page
'randompage' => 'Vakawasoma',
-'brokenredirects-edit' => '(Veisautaki)',
-'brokenredirects-delete' => '(Vakarusa)',
+'brokenredirects-edit' => 'Veisautaki',
+'brokenredirects-delete' => 'Vakarusa',
# Miscellaneous special pages
'newpages-username' => 'Yaca vakayagataki:',
diff --git a/languages/messages/MessagesFo.php b/languages/messages/MessagesFo.php
index f0d26f96..af8a9870 100644
--- a/languages/messages/MessagesFo.php
+++ b/languages/messages/MessagesFo.php
@@ -206,10 +206,18 @@ $messages = array(
'mainpagetext' => "'''Innlegging av Wiki-ritbúnaði væleydnað.'''",
-'about' => 'Um',
-'article' => 'Innihaldssíða',
-'newwindow' => '(kemur í nýggjan glugga)',
-'cancel' => 'Ógilda',
+'about' => 'Um',
+'article' => 'Innihaldssíða',
+'newwindow' => '(kemur í nýggjan glugga)',
+'cancel' => 'Ógilda',
+'moredotdotdot' => 'Meira...',
+'mypage' => 'Mín síða',
+'mytalk' => 'Mítt kjak',
+'anontalk' => 'Kjak til hesa ip-adressuna',
+'navigation' => 'Navigatión',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Finn',
'qbbrowse' => 'Kaga',
'qbedit' => 'Rætta',
@@ -217,12 +225,8 @@ $messages = array(
'qbpageinfo' => 'Samanhangur',
'qbmyoptions' => 'Mínar síður',
'qbspecialpages' => 'Serstakar síður',
-'moredotdotdot' => 'Meira...',
-'mypage' => 'Mín síða',
-'mytalk' => 'Mítt kjak',
-'anontalk' => 'Kjak til hesa ip-adressuna',
-'navigation' => 'Navigatión',
-'and' => '&#32;og',
+'faq' => 'OSS',
+'faqpage' => 'Project:OSS',
'errorpagetitle' => 'Villa',
'returnto' => 'Vend aftur til $1.',
@@ -269,7 +273,7 @@ $messages = array(
'otherlanguages' => 'Onnur mál',
'redirectedfrom' => '(Ávíst frá $1)',
'redirectpagesub' => 'Ávísingarsíða',
-'lastmodifiedat' => 'Hendan síðan var seinast broytt $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Hendan síðan var seinast broytt $2, $1.',
'protectedpage' => 'Friðað síða',
'jumpto' => 'Far til:',
'jumptonavigation' => 'navigatión',
@@ -279,7 +283,6 @@ $messages = array(
'aboutsite' => 'Um {{SITENAME}}',
'aboutpage' => 'Project:Um',
'copyright' => 'Innihald er tøkt undir $1.',
-'copyrightpagename' => '{{SITENAME}} útgávurættur',
'copyrightpage' => '{{ns:project}}:Útgávurættur',
'currentevents' => 'Núverandi hendingar',
'currentevents-url' => 'Project:Núverandi hendingar',
@@ -287,8 +290,6 @@ $messages = array(
'disclaimerpage' => 'Project:Fyrivarni',
'edithelp' => 'Rættihjálp',
'edithelppage' => 'Help:Rættihjálp',
-'faq' => 'OSS',
-'faqpage' => 'Project:OSS',
'helppage' => 'Help:Innihald',
'mainpage' => 'Forsíða',
'mainpage-description' => 'Forsíða',
@@ -361,7 +362,6 @@ afturkend av wiki',
'viewsourcetext' => 'Tú kanst síggja og avrita kelduna til hesa grein:',
# Login and logout pages
-'logouttitle' => 'Brúkaraútritan',
'logouttext' => "'''Tú hevur nú ritað út.'''
Tú kanst halda áfram at nýta {{SITENAME}} dulnevnt.
@@ -371,7 +371,6 @@ sum tú hevur ritað inn til goymslan í sneytara tínum er ruddað.",
'welcomecreation' => '== Vælkomin, $1! ==
Tín konto er nú stovnað. Gloym ikki at broyta tínar {{SITENAME}} innstillingar.',
-'loginpagetitle' => 'Brúkarainnritan',
'yourname' => 'Títt brúkaranavn:',
'yourpassword' => 'Títt loyniorð:',
'yourpasswordagain' => 'Skriva loyniorð umaftur:',
@@ -390,15 +389,7 @@ Tín konto er nú stovnað. Gloym ikki at broyta tínar {{SITENAME}} innstilling
'gotaccountlink' => 'Rita inn',
'createaccountmail' => 'eftur t-posti',
'badretype' => 'Loyniorðið tú hevur skriva er ikki rætt.',
-'youremail' => 'T-postur (sjálvboðið)*:',
-'username' => 'Brúkaranavn:',
-'uid' => 'Brúkara ID:',
-'yourrealname' => 'Títt navn*:',
-'yourlanguage' => 'Mál til brúkaraflatu:',
-'yournick' => 'Títt eyknevni (til undirskriftir):',
-'email' => 'T-post',
'loginerror' => 'Innritanarbrek',
-'prefs-help-email' => 'T-postur (valfríður): Loyvir øðrum at seta seg í samband við teg gjøgnum brúkara tín ella brúkarakjaksíðu uttan at avdúka samleika tín.',
'noname' => 'Tú hevur ikki skrivað eitt gyldugt brúkaranavn.',
'loginsuccesstitle' => 'Innritan væleydnað',
'loginsuccess' => "'''Tú hevur nú ritað inn í {{SITENAME}} sum \"\$1\".'''",
@@ -508,7 +499,6 @@ Vinarliga umhugsa at býta síðuna sundur í styttri pettir.'''",
'histlegend' => 'Frágreiðing:<br />
(nú) = munur til núverandi útgávu,
(síðst) = munur til síðsta útgávu, m = minni rættingar',
-'deletedrev' => '[strikað]',
'histfirst' => 'Elsta',
'histlast' => 'Nýggjasta',
'historysize' => '({{PLURAL:$1|1 být|$1 být}})',
@@ -531,59 +521,66 @@ Vinarliga umhugsa at býta síðuna sundur í styttri pettir.'''",
'searchresulttext' => 'Ynskir tú fleiri upplýsingar um leiting á {{SITENAME}}, kanst tú skoða [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Tú leitaði eftur '''[[:$1]]'''",
'searchsubtitleinvalid' => "Tú leitaði eftur '''$1'''",
-'noexactmatch' => "'''Eingin síða við heitinum \"\$1\" er til.''' Tú kanst [[:\$1|byrja at skriva eina grein við hesum heitinum]].",
'notitlematches' => 'Onki síðuheiti samsvarar',
'notextmatches' => 'Ongin síðutekstur samsvarar',
-'prevn' => 'undanfarnu $1',
-'nextn' => 'næstu $1',
-'viewprevnext' => 'Vís ($1) ($2) ($3).',
+'prevn' => 'undanfarnu {{PLURAL:$1|$1}}',
+'nextn' => 'næstu {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vís ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Innihald',
'search-result-size' => '$1 ({{PLURAL:$2|1 orð|$2 orð}})',
'showingresults' => "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
'showingresultsnum' => "Niðanfyri standa {{PLURAL:$3|'''1''' úrslit, sum byrjar|'''$3''' úrslit, sum byrja}} við #<b>$2</b>.",
'powersearch' => 'Leita',
-# Preferences page
-'preferences' => 'Innstillingar',
-'mypreferences' => 'Mínar innstillingar',
-'prefsnologin' => 'Tú hevur ikki ritað inn',
+# Quickbar
'qbsettings' => 'Skundfjøl innstillingar',
'qbsettings-none' => 'Eingin',
'qbsettings-fixedleft' => 'Fast vinstru',
'qbsettings-fixedright' => 'Fast høgru',
'qbsettings-floatingleft' => 'Flótandi vinstru',
-'changepassword' => 'Broyt loyniorð',
-'skin' => 'Hamur',
-'skin-preview' => 'Forskoðan',
-'math' => 'Støddfrøðiligir formlar',
-'dateformat' => 'Dato forsnið',
-'datetime' => 'Dato og tíð',
-'prefs-personal' => 'Brúkaradáta',
-'prefs-rc' => 'Nýkomnar broytingar og stubbaskoðan',
-'prefs-watchlist' => 'Eftirlit',
-'prefs-watchlist-days' => 'Tal av døgum, sum skula vísast í eftirliti:',
-'prefs-watchlist-edits' => 'Tal av rættingum, sum skula vísast í víðkaðum eftirliti:',
-'prefs-misc' => 'Ymiskar innstillingar',
-'saveprefs' => 'Goym innstillingar',
-'resetprefs' => 'Endurset innstillingar',
-'textboxsize' => 'Broyting av greinum',
-'rows' => 'Røð:',
-'columns' => 'Teigar:',
-'searchresultshead' => 'Leita',
-'resultsperpage' => 'Úrslit fyri hvørja síðu:',
-'contextlines' => 'Linjur fyri hvørt úrslit:',
-'contextchars' => 'Tekin fyri hvørja linju í úrslitinum:',
-'recentchangescount' => 'Heiti í seinastu broytingum:',
-'savedprefs' => 'Tínar innstillingar eru goymdar.',
-'timezonelegend' => 'Lokal tíð',
-'timezonetext' => '¹Talið av tímum, ið tín lokala tíð víkir frá ambætaratíð (UTC).',
-'localtime' => 'Lokal klokka',
-'timezoneoffset' => 'Frávik¹',
-'servertime' => 'Ambætaraklokkan er nú',
-'guesstimezone' => 'Fyll út við kagara',
-'allowemail' => 'Tilset t-post frá øðrum brúkarum',
-'defaultns' => 'Leita í hesum navnarúminum sum fyrisett mál:',
-'files' => 'Fílur',
+
+# Preferences page
+'preferences' => 'Innstillingar',
+'mypreferences' => 'Mínar innstillingar',
+'prefsnologin' => 'Tú hevur ikki ritað inn',
+'changepassword' => 'Broyt loyniorð',
+'prefs-skin' => 'Hamur',
+'skin-preview' => 'Forskoðan',
+'prefs-math' => 'Støddfrøðiligir formlar',
+'prefs-datetime' => 'Dato og tíð',
+'prefs-personal' => 'Brúkaradáta',
+'prefs-rc' => 'Nýkomnar broytingar og stubbaskoðan',
+'prefs-watchlist' => 'Eftirlit',
+'prefs-watchlist-days' => 'Tal av døgum, sum skula vísast í eftirliti:',
+'prefs-watchlist-edits' => 'Tal av rættingum, sum skula vísast í víðkaðum eftirliti:',
+'prefs-misc' => 'Ymiskar innstillingar',
+'saveprefs' => 'Goym innstillingar',
+'resetprefs' => 'Endurset innstillingar',
+'prefs-editing' => 'Broyting av greinum',
+'rows' => 'Røð:',
+'columns' => 'Teigar:',
+'searchresultshead' => 'Leita',
+'resultsperpage' => 'Úrslit fyri hvørja síðu:',
+'contextlines' => 'Linjur fyri hvørt úrslit:',
+'contextchars' => 'Tekin fyri hvørja linju í úrslitinum:',
+'recentchangescount' => 'Heiti í seinastu broytingum:',
+'savedprefs' => 'Tínar innstillingar eru goymdar.',
+'timezonelegend' => 'Lokal tíð',
+'localtime' => 'Lokal klokka',
+'timezoneoffset' => 'Frávik¹',
+'servertime' => 'Ambætaraklokkan er nú',
+'guesstimezone' => 'Fyll út við kagara',
+'allowemail' => 'Tilset t-post frá øðrum brúkarum',
+'defaultns' => 'Leita í hesum navnarúminum sum fyrisett mál:',
+'prefs-files' => 'Fílur',
+'youremail' => 'T-postur (sjálvboðið)*:',
+'username' => 'Brúkaranavn:',
+'uid' => 'Brúkara ID:',
+'yourrealname' => 'Títt navn*:',
+'yourlanguage' => 'Mál til brúkaraflatu:',
+'yournick' => 'Títt eyknevni (til undirskriftir):',
+'email' => 'T-post',
+'prefs-help-email' => 'T-postur (valfríður): Loyvir øðrum at seta seg í samband við teg gjøgnum brúkara tín ella brúkarakjaksíðu uttan at avdúka samleika tín.',
# User rights
'saveusergroups' => 'Goym brúkaraflokk',
@@ -625,7 +622,9 @@ Vinarliga umhugsa at býta síðuna sundur í styttri pettir.'''",
'rc_categories_any' => 'Nakar',
# Recent changes linked
-'recentchangeslinked' => 'Viðkomandi broytingar',
+'recentchangeslinked' => 'Viðkomandi broytingar',
+'recentchangeslinked-feed' => 'Viðkomandi broytingar',
+'recentchangeslinked-toolbox' => 'Viðkomandi broytingar',
# Upload
'upload' => 'Legg fílu upp',
@@ -652,8 +651,9 @@ fyri at leggja fílur upp.',
'upload-file-error' => 'Innvortis brek',
-'license' => 'Loyvi:',
-'nolicense' => 'Onki valt',
+'license' => 'Loyvi:',
+'license-header' => 'Loyvi:',
+'nolicense' => 'Onki valt',
# Special:ListFiles
'listfiles' => 'Myndalisti',
@@ -661,6 +661,7 @@ fyri at leggja fílur upp.',
'listfiles_user' => 'Brúkari',
# File description page
+'file-anchor-link' => 'Mynd',
'filehist' => 'Søga fílu',
'filehist-current' => 'streymur',
'filehist-datetime' => 'Dagur/Tíð',
@@ -670,7 +671,6 @@ fyri at leggja fílur upp.',
'imagelinks' => 'Slóðir',
'linkstoimage' => 'Hesar síður slóða til hesa mynd:',
'nolinkstoimage' => 'Ongar síður slóða til hesa myndina.',
-'sharedupload' => 'This file is a shared upload and may be used by other projects. $2', # $1 is the repo name, $2 is shareduploadwiki(-desc)
# File deletion
'filedelete' => 'Strika $1',
@@ -705,8 +705,8 @@ Hvørt rað inniheldur slóðir til fyrstu og aðru ávísing, umframt tekstin
'brokenredirects' => 'Brotnar ávísingar',
'brokenredirectstext' => 'Hesar ávísingarnar slóða til síður, ið ikki eru til.',
-'brokenredirects-edit' => '(rætta)',
-'brokenredirects-delete' => '(strika)',
+'brokenredirects-edit' => 'rætta',
+'brokenredirects-delete' => 'strika',
'withoutinterwiki' => 'Síður uttan málslóðir',
'withoutinterwiki-summary' => 'Fylgjandi síður slóða ikki til útgávur á øðrum málum:',
@@ -894,6 +894,7 @@ Sí $2 fyri fulla skráseting av strikingum.',
'sp-contributions-newbies' => 'Vís bert íkast frá nýggjum kontoum',
'sp-contributions-blocklog' => 'Bannagerðabók',
+'sp-contributions-talk' => 'Kjak',
'sp-contributions-search' => 'Leita eftir íkøstum',
'sp-contributions-username' => 'IP adressa ella brúkaranavn:',
'sp-contributions-submit' => 'Leita',
@@ -920,7 +921,7 @@ Sí $2 fyri fulla skráseting av strikingum.',
'ipblocklist' => 'Bannað brúkaranøvn og IP-adressur',
'ipblocklist-username' => 'Brúkaranavn ella IP-adressa:',
'ipblocklist-submit' => 'Leita',
-'expiringblock' => 'gongur út $1',
+'expiringblock' => 'gongur út $1 $2',
'blocklink' => 'banna',
'unblocklink' => 'óbanna',
'contribslink' => 'íkøst',
@@ -986,8 +987,6 @@ Grein við navninum "[[:$1]]" finst longu. Ynskir tú at strika hana til tess at
'allmessagestext' => 'Hetta er eitt yvirlit av tøkum kervisboðum í MediaWiki-navnarúmi.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' er ikki stuðlað orsakað av at '''\$wgUseDatabaseMessages''' er sløkt.",
-'allmessagesfilter' => 'Boð navn filtur:',
-'allmessagesmodified' => 'Vís bert broytt',
# Thumbnails
'thumbnail-more' => 'Víðka',
@@ -1147,10 +1146,10 @@ fer úr gildi tann $4.',
'watchlisttools-raw' => 'Rætta rátt eftirlit',
# Special:Version
-'version' => 'Útgáva', # Not used as normal message but as header for the special page itself
+'version' => 'Útgáva',
'version-hooks' => 'Krókur',
'version-hook-name' => 'Krókurnavn',
-'version-version' => 'Útgáva',
+'version-version' => '(Útgáva $1)',
'version-software-version' => 'Útgáva',
# Special:FilePath
diff --git a/languages/messages/MessagesFr.php b/languages/messages/MessagesFr.php
index 9b99469a..3479c1a7 100644
--- a/languages/messages/MessagesFr.php
+++ b/languages/messages/MessagesFr.php
@@ -18,6 +18,7 @@
* @author Diti
* @author Dodoïste
* @author Elfix
+ * @author Enzoreg
* @author Esbardu
* @author Fryed-peach
* @author Grondin
@@ -33,6 +34,7 @@
* @author Korg
* @author Korrigan
* @author Kropotkine 113
+ * @author Litlok
* @author Louperivois
* @author McDutchie
* @author Meithal
@@ -42,6 +44,7 @@
* @author PieRRoMaN
* @author Quentinv57
* @author Remember the dot
+ * @author Robby
* @author Seb35
* @author Sherbrooke
* @author Skalman
@@ -107,27 +110,30 @@ $dateFormats = array(
$magicWords = array(
'redirect' => array( '0', '#REDIRECTION', '#REDIRECT' ),
- 'notoc' => array( '0', '__AUCUNETABLE__', '__NOTOC__' ),
+ 'notoc' => array( '0', '__AUCUNSOMMAIRE__', '__AUCUNETDM__', '__NOTOC__' ),
'nogallery' => array( '0', '__AUCUNEGALERIE__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__FORCERTABLE__', '__FORCETOC__' ),
- 'toc' => array( '0', '__TABLE__', '__TOC__' ),
+ 'forcetoc' => array( '0', '__FORCERSOMMAIRE__', '__FORCERTDM__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__SOMMAIRE__', '__TDM__', '__TOC__' ),
'noeditsection' => array( '0', '__SECTIONNONEDITABLE__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'MOISCOURANT', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'NOMMOISCOURANT', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'NOMGENMOISCOURANT', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'ABREVMOISCOURANT', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'JOURCOURANT', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'JOURCOURANT2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'NOMJOURCOURANT', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'ANNEECOURANTE', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'DATECOURANTE', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'HEURECOURANTE', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MOISLOCAL', 'LOCALMONTH' ),
+ 'noheader' => array( '0', '__AUCUNENTETE__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MOISACTUEL', 'MOIS2ACTUEL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MOIS1ACTUEL', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NOMMOISACTUEL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NOMGENMOISACTUEL', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ABREVMOISACTUEL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'JOURACTUEL', 'JOUR1ACTUEL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'JOUR2ACTUEL', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOMJOURACTUEL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ANNEEACTUELLE', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'HORAIREACTUEL', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HEUREACTUELLE', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MOISLOCAL', 'MOIS2LOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MOIS1LOCAL', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'NOMMOISLOCAL', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'NOMGENMOISLOCAL', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'ABREVMOISLOCAL', 'LOCALMONTHABBREV' ),
- 'localday' => array( '1', 'JOURLOCAL', 'LOCALDAY' ),
- 'localday2' => array( '1', 'JOURLOCAL2', 'LOCALDAY2' ),
+ 'localday' => array( '1', 'JOURLOCAL', 'JOUR1LOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'JOUR2LOCAL', 'LOCALDAY2' ),
'localdayname' => array( '1', 'NOMJOURLOCAL', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'ANNEELOCALE', 'LOCALYEAR' ),
'localtime' => array( '1', 'HORAIRELOCAL', 'LOCALTIME' ),
@@ -136,7 +142,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'NOMBREARTICLES', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'NOMBREFICHIERS', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'NOMBREUTILISATEURS', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( '1', 'NOMBREEDITIONS', 'NUMBEROFEDITS' ),
+ 'numberofactiveusers' => array( '1', 'NOMBREUTILISATEURSACTIFS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NOMBREMODIFS', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NOMBREVUES', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'NOMPAGE', 'PAGENAME' ),
'pagenamee' => array( '1', 'NOMPAGEX', 'PAGENAMEE' ),
'namespace' => array( '1', 'ESPACENOMMAGE', 'NAMESPACE' ),
@@ -156,38 +164,48 @@ $magicWords = array(
'subjectpagename' => array( '1', 'NOMPAGESUJET', 'NOMPAGEARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subjectpagenamee' => array( '1', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'img_thumbnail' => array( '1', 'vignette', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'droite', 'right' ),
'img_left' => array( '1', 'gauche', 'left' ),
'img_none' => array( '1', 'néant', 'neant', 'none' ),
'img_center' => array( '1', 'centré', 'center', 'centre' ),
'img_framed' => array( '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'sans_cadre', 'sans cadre', 'non encadré', 'non encadre', 'frameless' ),
+ 'img_upright' => array( '1', 'redresse', 'redresse=$1', 'redresse $1', 'upright', 'upright=$1', 'upright $1' ),
'img_border' => array( '1', 'bordure', 'border' ),
- 'img_baseline' => array( '1', 'ligne de base', 'baseline' ),
+ 'img_baseline' => array( '1', 'ligne de base', 'base', 'baseline' ),
'img_sub' => array( '1', 'indice', 'ind', 'sub' ),
- 'img_super' => array( '1', 'exp', 'super', 'sup' ),
+ 'img_super' => array( '1', 'exposant', 'exp', 'super', 'sup' ),
'img_top' => array( '1', 'haut', 'top' ),
'img_text_top' => array( '1', 'haut-texte', 'haut-txt', 'text-top' ),
'img_middle' => array( '1', 'milieu', 'middle' ),
'img_bottom' => array( '1', 'bas', 'bottom' ),
'img_text_bottom' => array( '1', 'bas-texte', 'bas-txt', 'text-bottom' ),
+ 'img_link' => array( '1', 'lien=$1', 'link=$1' ),
'sitename' => array( '1', 'NOMSITE', 'SITENAME' ),
+ 'ns' => array( '0', 'ESPACEN:', 'NS:' ),
+ 'nse' => array( '0', 'ESPACENX:', 'NSE:' ),
'localurl' => array( '0', 'URLLOCALE:', 'LOCALURL:' ),
'localurle' => array( '0', 'URLLOCALEX:', 'LOCALURLE:' ),
'server' => array( '0', 'SERVEUR', 'SERVER' ),
'servername' => array( '0', 'NOMSERVEUR', 'SERVERNAME' ),
'scriptpath' => array( '0', 'CHEMINSCRIPT', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'CHEMINSTYLE', 'STYLEPATH' ),
'grammar' => array( '0', 'GRAMMAIRE:', 'GRAMMAR:' ),
- 'currentweek' => array( '1', 'SEMAINECOURANTE', 'CURRENTWEEK' ),
- 'currentdow' => array( '1', 'JDSCOURANT', 'CURRENTDOW' ),
+ 'gender' => array( '0', 'GENRE:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__SANSCONVERSIONTITRE__', '__SANSCT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__SANSCONVERSIONCONTENU__', '__SANSCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEMAINEACTUELLE', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'JDSACTUEL', 'CURRENTDOW' ),
'localweek' => array( '1', 'SEMAINELOCALE', 'LOCALWEEK' ),
'localdow' => array( '1', 'JDSLOCAL', 'LOCALDOW' ),
- 'revisionid' => array( '1', 'NUMEROVERSION', 'REVISIONID' ),
- 'revisionday' => array( '1', 'DATEVERSION', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'DATEVERSION2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( '1', 'MOISREVISION', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'ANNEEREVISION', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( '1', 'HEUREREVISION', 'REVISIONTIMESTAMP' ),
+ 'revisionid' => array( '1', 'IDVERSION', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'JOURVERSION', 'JOUR1VERSION', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'JOUR2VERSION', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MOISVERSION', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ANNEEVERSION', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'INSTANTVERSION', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'UTILISATEURVERSION', 'REVISIONUSER' ),
'plural' => array( '0', 'PLURIEL:', 'PLURAL:' ),
'fullurl' => array( '0', 'URLCOMPLETE:', 'FULLURL:' ),
'fullurle' => array( '0', 'URLCOMPLETEX:', 'FULLURLE:' ),
@@ -195,84 +213,88 @@ $magicWords = array(
'ucfirst' => array( '0', 'INITMAJUS:', 'INITCAPIT:', 'UCFIRST:' ),
'lc' => array( '0', 'MINUS:', 'LC:' ),
'uc' => array( '0', 'MAJUS:', 'CAPIT:', 'UC:' ),
- 'raw' => array( '0', 'LIGNE:', 'RAW:' ),
+ 'raw' => array( '0', 'BRUT:', 'RAW:' ),
'displaytitle' => array( '1', 'AFFICHERTITRE', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( '1', 'BRUT', 'R' ),
+ 'rawsuffix' => array( '1', 'BRUT', 'B', 'R' ),
'newsectionlink' => array( '1', '__LIENNOUVELLESECTION__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__AUCUNLIENNOUVELLESECTION__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'VERSIONACTUELLE', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'ENCODEURL:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'ENCODEANCRE', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( '1', 'HEUREACTUELLE', 'CURRENTTIMESTAMP' ),
+ 'currenttimestamp' => array( '1', 'INSTANTACTUEL', 'CURRENTTIMESTAMP' ),
'localtimestamp' => array( '1', 'INSTANTLOCAL', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( '1', 'MARQUEDIR', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'directionmark' => array( '1', 'MARQUEDIRECTION', 'MARQUEDIR', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#LANGUE:', '#LANGUAGE:' ),
- 'contentlanguage' => array( '1', 'LANGUECONTENU', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'contentlanguage' => array( '1', 'LANGUECONTENU', 'LANGCONTENU', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
'pagesinnamespace' => array( '1', 'PAGESDANSESPACE:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'NOMBREADMINS', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'FORMATNOMBRE', 'FORMATNUM' ),
- 'padleft' => array( '0', 'BOURRAGEGAUCHE', 'PADLEFT' ),
- 'padright' => array( '0', 'BOURRAGEDROITE', 'PADRIGHT' ),
+ 'padleft' => array( '0', 'BOURRAGEGAUCHE', 'BOURREGAUCHE', 'PADLEFT' ),
+ 'padright' => array( '0', 'BOURRAGEDROITE', 'BOURREDROITE', 'PADRIGHT' ),
'special' => array( '0', 'spécial', 'special' ),
'defaultsort' => array( '1', 'CLEFDETRI:', 'CLEDETRI:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'CHEMIN:', 'FILEPATH:' ),
'tag' => array( '0', 'balise', 'tag' ),
- 'hiddencat' => array( '1', '__CACHECAT__', '__HIDDENCAT__' ),
+ 'hiddencat' => array( '1', '__CATCACHEE__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'PAGESDANSCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'TAILLEPAGE', 'PAGESIZE' ),
'noindex' => array( '1', '__AUCUNINDEX__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NOMBREDANSGROUPE', 'NBDANSGROUPE', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRECTIONSTATIQUE__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVEAUDEPROTECTION', 'PROTECTIONLEVEL' ),
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doubles redirections', 'Doublesredirections', 'Doubles redirects', 'Doublesredirects', 'Redirections doubles', 'Redirectionsdoubles' ),
- 'BrokenRedirects' => array( 'Redirections cassées', 'Redirections cassees' ),
- 'Disambiguations' => array( 'Homonymie', 'Homonymies', 'Pages d\'homonymie' ),
- 'Userlogin' => array( 'Connexion', 'Identification', 'Login' ),
+ 'DoubleRedirects' => array( 'Doubles redirections', 'DoublesRedirections', 'Redirections doubles', 'RedirectionsDoubles' ),
+ 'BrokenRedirects' => array( 'Redirections cassées', 'RedirectionCassées', 'Redirections cassees', 'RedirectionsCassees' ),
+ 'Disambiguations' => array( 'Homonymies', 'Homonymie', 'Pages d\'homonymie' ),
+ 'Userlogin' => array( 'Connexion', 'Identification' ),
'Userlogout' => array( 'Déconnexion', 'Deconnexion' ),
'CreateAccount' => array( 'Créer un compte', 'CréerUnCompte', 'CréerCompte' ),
'Preferences' => array( 'Préférences' ),
- 'Watchlist' => array( 'Liste de suivi', 'Listedesuivi', 'Suivi' ),
- 'Recentchanges' => array( 'Modifications récentes', 'Modifications recentes' ),
- 'Upload' => array( 'Téléchargement', 'Telechargement' ),
- 'Listfiles' => array( 'Liste des images', 'Listedesimages', 'Liste images', 'Listeimages' ),
- 'Newimages' => array( 'Nouvelles images', 'Nouveaux fichiers' ),
- 'Listusers' => array( 'Liste des utilisateurs', 'Liste des participants', 'Utilisateurs', 'Participants' ),
- 'Listgrouprights' => array( 'Liste des groupes utilisateur', 'ListedesGroupesUtilisateur', 'ListeGroupesUtilisateur' ),
+ 'Watchlist' => array( 'Liste de suivi', 'ListeDeSuivi', 'Suivi' ),
+ 'Recentchanges' => array( 'Modifications récentes', 'Modifications recentes', 'ModificationsRécentes', 'ModificationsRecentes' ),
+ 'Upload' => array( 'Téléverser', 'Televerser', 'Téléversement', 'Televersement' ),
+ 'Listfiles' => array( 'Liste des fichiers', 'ListeDesFichiers', 'Liste des images', 'ListeDesImages' ),
+ 'Newimages' => array( 'Nouveaux fichiers', 'NouveauxFichiers', 'Nouvelles images', 'NouvellesImages' ),
+ 'Listusers' => array( 'Liste des utilisateurs', 'ListeDesUtilisateurs', 'Utilisateurs' ),
+ 'Listgrouprights' => array( 'Liste des droits de groupe', 'ListeDesDroitsDeGroupes' ),
'Statistics' => array( 'Statistiques', 'Stats' ),
- 'Randompage' => array( 'Page au hasard', 'Au hasard', 'Aléatoire', 'Aleatoire' ),
- 'Lonelypages' => array( 'Pages orphelines', 'Pagesorphelines' ),
- 'Uncategorizedpages' => array( 'Pages sans catégorie', 'Pages sans categorie' ),
- 'Uncategorizedcategories' => array( 'Catégories sans catégorie', 'Categories sans categorie' ),
- 'Uncategorizedimages' => array( 'Images sans catégorie', 'Images sans categorie' ),
- 'Uncategorizedtemplates' => array( 'Modèles sans catégorie', 'Modeles sans catégorie' ),
- 'Unusedcategories' => array( 'Catégories inutilisées', 'Categories inutilisees', 'Catégories non utilisées', 'Categories non utilisees' ),
- 'Unusedimages' => array( 'Images inutilisées', 'Images inutilisees', 'Images non utilisées', 'Images non utilisees', 'Images orphelines' ),
- 'Wantedpages' => array( 'Pages demandées', 'Pages demandees' ),
- 'Wantedcategories' => array( 'Catégories demandées', 'Categories demandees' ),
- 'Wantedfiles' => array( 'Fichiers demandés', 'Fichiers demandes' ),
- 'Wantedtemplates' => array( 'Modèles demandés', 'Modeles demandes' ),
- 'Mostlinked' => array( 'Pages les plus liées', 'Pages les plus liees', 'Pages plus liées', 'Pages plus liees', 'Plus liées', 'Plus liees' ),
- 'Mostlinkedcategories' => array( 'Catégories les plus utilisées', 'Categories les plus utilisees' ),
- 'Mostlinkedtemplates' => array( 'Modèles les plus utilisés', 'Modeles les plus utilises' ),
- 'Mostimages' => array( 'Images les plus utilisées', 'Images les plus utilisees' ),
- 'Mostcategories' => array( 'Plus categorisées', 'Plus categorisees' ),
- 'Mostrevisions' => array( 'Articles les plus modifiés', 'Articles les plus modifies', 'Plus modifiés', 'Plus modifies', 'Plus modifiées', 'Plus modifiees' ),
- 'Fewestrevisions' => array( 'Articles les moins modifiés', 'Articles les moins modifies', 'Moins modifiés', 'Moins modifies', 'Moins modifiées', 'Moins modifiees' ),
- 'Shortpages' => array( 'Pages courtes', 'Pagescourtes' ),
- 'Longpages' => array( 'Pages longues', 'Pageslongues' ),
- 'Newpages' => array( 'Nouvelles pages', 'Nouvellespages' ),
- 'Ancientpages' => array( 'Anciennes pages', 'Anciennespages' ),
- 'Deadendpages' => array( 'Pages en impasse', 'Pagesenimpasse' ),
- 'Protectedpages' => array( 'Pages protégées', 'Pages protegees', 'Pagesprotégées', 'Pagesprotegees' ),
- 'Protectedtitles' => array( 'Titres protégés', 'Titres proteges', 'Titresprotégés', 'Titresproteges' ),
- 'Allpages' => array( 'Toutes les pages', 'Touteslespages' ),
- 'Prefixindex' => array( 'Index' ),
- 'Ipblocklist' => array( 'Utilisateurs bloqués', 'Utilisateurs bloques', 'Utilisateursbloqués', 'Utilisateursbloques', 'IP bloquées', 'IP bloquees', 'IPbloquées', 'IPbloquees', 'Ip bloquées', 'Ip bloquees', 'Ipbloquées', 'Ipbloquees' ),
- 'Specialpages' => array( 'Pages spéciales', 'Pages speciales', 'Pagesspéciales', 'Pagesspeciales' ),
- 'Emailuser' => array( 'Courriel', 'Email', 'E-mail' ),
- 'Confirmemail' => array( 'Confirmer le courriel', 'Confirmerlecourriel', 'ConfirmerCourriel' ),
- 'Whatlinkshere' => array( 'Pages liées', 'Pages liees', 'Pagesliées', 'Pagesliees' ),
- 'Recentchangeslinked' => array( 'Suivi des liens', 'Suividesliens' ),
- 'Movepage' => array( 'Renommer', 'Renommage' ),
+ 'Randompage' => array( 'Page au hasard', 'PageAuHasard', 'Au hasard', 'AuHasard', 'Aléatoire', 'Aleatoire' ),
+ 'Lonelypages' => array( 'Pages orphelines', 'PagesOrphelines' ),
+ 'Uncategorizedpages' => array( 'Pages non catégorisées', 'PagesNonCatégorisées', 'Pages non categorisees', 'PagesNonCategorisees', 'Pages sans catégorie', 'PagesSansCatégorie', 'Pages sans categorie', 'PagesSansCategorie' ),
+ 'Uncategorizedcategories' => array( 'Catégories non catégorisées', 'CatégoriesNonCatégorisées', 'Categories non categorisees', 'CategoriesNonCategorisees', 'Catégories sans catégorie', 'CatégoriesSansCatégorie', 'Categories sans categorie', 'CategoriesSansCategorie' ),
+ 'Uncategorizedimages' => array( 'Fichiers non catégorisés', 'FichiersNonCatégorisés', 'Fichiers non categorises', 'FichiersNonCategorises', 'Fichiers sans catégorie', 'FichiersSansCatégorie', 'Fichiers sans categorie', 'FichiersSansCategorie', 'Images non catégorisées', 'ImagesNonCatégorisées', 'Images non categorisees', 'ImagesNonCategorisees', 'Images sans catégorie', 'ImagesSansCatégorie', 'Images sans categorie', 'ImagesSansCategorie' ),
+ 'Uncategorizedtemplates' => array( 'Modèles non catégorisés', 'ModèlesNonCatégorisés', 'Modeles non categorises', 'ModelesNonCategorises', 'Modèles sans catégorie', 'ModèlesSansCatégorie', 'Modeles sans catégorie', 'ModelesSansCatégorie' ),
+ 'Unusedcategories' => array( 'Catégories inutilisées', 'CatégoriesInutilisées', 'Categories inutilisees', 'CategoriesInutilisees', 'Catégories non utilisées', 'CatégoriesNonUtilisées', 'Categories non utilisees', 'CategoriesNonUtilisees' ),
+ 'Unusedimages' => array( 'Fichiers inutilisés', 'FichiersInutilisés', 'Fichiers inutilises', 'FichiersInutilises', 'Fichiers non utilisés', 'FichiersNon utilisés', 'Fichiers non utilises', 'FichiersNon utilises', 'Images inutilisées', 'ImagesInutilisées', 'Images inutilisees', 'ImagesInutilisees', 'Images non utilisées', 'ImagesNonUtilisées', 'Images non utilisees', 'ImagesNonUtilisees' ),
+ 'Wantedpages' => array( 'Pages demandées', 'PagesDemandées', 'Pages demandees', 'PagesDemandees', 'Liens brisés', 'LiensBrisés', 'Liens brises', 'LiensBrises' ),
+ 'Wantedcategories' => array( 'Catégories demandées', 'CatégoriesDemandées', 'Categories demandees', 'CategoriesDemandees' ),
+ 'Wantedfiles' => array( 'Fichiers demandés', 'FichiersDemandés', 'Fichiers demandes', 'FichiersDemandes' ),
+ 'Wantedtemplates' => array( 'Modèles demandés', 'ModèlesDemandés', 'Modeles demandes', 'ModelesDemandes' ),
+ 'Mostlinked' => array( 'Pages les plus liées', 'PagesLesPlusLiées', 'Pages les plus liees', 'PagesLesPlusLiees', 'Les plus liées', 'LesPlusLiées', 'Les plus liees', 'LesPlusLiees' ),
+ 'Mostlinkedcategories' => array( 'Catégories les plus liées', 'CatégoriesLesPlusLiées', 'Categories les plus liees', 'CategoriesLesPlusLiees', 'Catégories les plus utilisées', 'CatégoriesLesPlusUtilisées', 'Categories les plus utilisees', 'CategoriesLesPlusUtilisees' ),
+ 'Mostlinkedtemplates' => array( 'Modèles les plus liés', 'ModèlesLesPlusLiés', 'Modeles les plus lies', 'ModelesLesPlusLies', 'Modèles les plus utilisés', 'ModèlesLesPlusUtilisés', 'Modeles les plus utilises', 'ModelesLesPlusUtilises' ),
+ 'Mostimages' => array( 'Fichiers les plus liés', 'FichiersLesPlusLiés', 'Fichiers les plus lies', 'FichiersLesPlusLies', 'Fichiers les plus utilisés', 'FichiersLesPlusUtilisés', 'Fichiers les plus utilises', 'FichiersLesPlusUtilises', 'Images les plus liées', 'ImagesLesPlusLiées', 'Images les plus liees', 'ImagesLesPlusLiees', 'Images les plus utilisées', 'ImagesLesPlusUtilisées', 'Images les plus utilisees', 'ImagesLesPlusUtilisees' ),
+ 'Mostcategories' => array( 'Pages les plus catégorisées', 'PagesLesPlusCatégorisées', 'Pages les plus categorisees', 'PagesLesPlusCategorisees', 'Les plus catégorisés', 'LesPlusCatégorisés', 'Les plus categorises', 'LesPlusCategorises' ),
+ 'Mostrevisions' => array( 'Pages les plus modifiées', 'PagesLesPlusModifiées', 'Pages les plus modifiees', 'PagesLesPlusModifiees', 'Les plus modifiés', 'LesPlusModifiés', 'Les plus modifies', 'LesPlusModifies' ),
+ 'Fewestrevisions' => array( 'Pages les moins modifiées', 'PagesLesMoinsModifiées', 'Pages les moins modifiees', 'PagesLesMoinsModifiees', 'Les moins modifiés', 'LesMoinsModifiés', 'Les moins modifies', 'LesMoinsModifies' ),
+ 'Shortpages' => array( 'Pages courtes', 'PagesCourtes' ),
+ 'Longpages' => array( 'Pages longues', 'PagesLongues' ),
+ 'Newpages' => array( 'Nouvelles pages', 'NouvellesPages', 'Pages récentes', 'PagesRécentes', 'Pages recentes', 'PagesRecentes' ),
+ 'Ancientpages' => array( 'Pages anciennes', 'PagesAnciennes', 'Anciennes pages', 'AnciennesPages' ),
+ 'Deadendpages' => array( 'Pages en impasse', 'PagesEnImpasse' ),
+ 'Protectedpages' => array( 'Pages protégées', 'PagesProtégées', 'Pages protegees', 'PagesProtegees' ),
+ 'Protectedtitles' => array( 'Titres protégés', 'TitresProtégés', 'Titres proteges', 'TitresProteges' ),
+ 'Allpages' => array( 'Toutes les pages', 'ToutesLesPages' ),
+ 'Prefixindex' => array( 'Index', 'Préfixes', 'Prefixes' ),
+ 'Ipblocklist' => array( 'Liste des blocages', 'ListeDesBlocages', 'Blocages', 'Utilisateurs bloqués', 'UtilisateursBloqués', 'Utilisateurs bloques', 'UtilisateursBloques', 'IP bloquées', 'IPBloquees', 'IPBloquées' ),
+ 'Specialpages' => array( 'Pages spéciales', 'PagesSpéciales', 'Pages speciales', 'PagesSpeciales' ),
+ 'Emailuser' => array( 'Envoyer un courriel', 'EnvoyerUnCourriel', 'Courriel', 'Envoyer un e-mail', 'EnvoyerUnEMail', 'E-mail', 'EMail' ),
+ 'Confirmemail' => array( 'Confirmer le courriel', 'ConfirmerLeCourriel' ),
+ 'Whatlinkshere' => array( 'Pages liées', 'PagesLiées', 'Pages liees', 'PagesLiees' ),
+ 'Recentchangeslinked' => array( 'Suivi des liens', 'SuiviDesLiens' ),
+ 'Movepage' => array( 'Renommer une page', 'Renommer', 'Renommage' ),
'Blockme' => array( 'Bloquez-moi', 'Bloquezmoi' ),
'Booksources' => array( 'Ouvrages de référence', 'Ouvrages de reference', 'Ouvragesderéférence', 'Ouvragesdereference', 'Recherche ISBN', 'Recherche isbn', 'RechercheISBN', 'Rechercheisbn' ),
'Categories' => array( 'Catégories' ),
@@ -284,7 +306,7 @@ $specialPageAliases = array(
'Import' => array( 'Importer', 'Importation' ),
'Lockdb' => array( 'Verrouiller la base', 'Verrouillerlabase', 'Verrouiller base', 'Verrouillerbase', 'Verrouiller BD', 'VerrouillerBD', 'Verrouiller bd', 'Verrouillerbd' ),
'Unlockdb' => array( 'Déverrouiller la base', 'Déverrouillerlabase', 'Deverrouiller la base', 'Deverrouillerlabase', 'Déverrouiller base', 'Déverrouillerbase', 'Deverrouiller base', 'Deverrouillerbase', 'Déverrouiller BD', 'DéverrouillerBD', 'Deverrouiller BD', 'DeverrouillerBD', 'Déverrouiller bd', 'Déverrouillerbd', 'Deverrouiller bd', 'Deverrouillerbd' ),
- 'Userrights' => array( 'Permissions', 'Droits' ),
+ 'Userrights' => array( 'Permissions', 'Droits', 'Droits des utilisateurs' ),
'MIMEsearch' => array( 'Recherche MIME', 'RechercheMIME', 'Recherche mime', 'Recherchemime' ),
'FileDuplicateSearch' => array( 'Recherche fichier en double', 'RechercheFichierEnDouble' ),
'Unwatchedpages' => array( 'Pages non suivies', 'Pagesnonsuivies' ),
@@ -299,14 +321,16 @@ $specialPageAliases = array(
'Listbots' => array( 'Liste des bots', 'ListedesBots' ),
'Popularpages' => array( 'Pages les plus visitées', 'Pages les plus visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
'Search' => array( 'Recherche', 'Rechercher', 'Chercher' ),
- 'Resetpass' => array( 'Réinitialisation du mot de passe', 'Reinitialisation du mot de passe', 'Réinitialisationdumotdepasse', 'Reinitialisationdumotdepasse' ),
+ 'Resetpass' => array( 'Changement du mot de passe', 'ChangementDuMotDePasse' ),
'Withoutinterwiki' => array( 'Sans interwiki', 'Sansinterwiki', 'Sans interwikis', 'Sansinterwikis' ),
- 'MergeHistory' => array( 'Fusionner l\'historique', 'Fusionnerlhistorique' ),
- 'Filepath' => array( 'Chemin du fichier', 'CheminduFichier', 'CheminFichier' ),
- 'Invalidateemail' => array( 'Invalider courriel', 'InvaliderCourriel' ),
- 'Blankpage' => array( 'PageBlanche' ),
- 'LinkSearch' => array( 'Recherche de liens' ),
- 'DeletedContributions' => array( 'ContributionsSupprimées', 'ContributionSupprimees' ),
+ 'MergeHistory' => array( 'Fusionner les historiques', 'FusionnerHistoriques', 'Fusionner l\'historique', 'Fusionnerlhistorique' ),
+ 'Filepath' => array( 'Chemin du fichier', 'CheminDuFichier', 'CheminFichier' ),
+ 'Invalidateemail' => array( 'Invalider le courriel', 'Invalider courriel', 'InvaliderCourriel' ),
+ 'Blankpage' => array( 'Page blanche', 'PageBlanche' ),
+ 'LinkSearch' => array( 'Recherche de lien', 'Recherche de liens' ),
+ 'DeletedContributions' => array( 'Contributions supprimées', 'ContributionsSupprimées', 'ContributionSupprimees' ),
+ 'Tags' => array( 'Balises' ),
+ 'Activeusers' => array( 'Utilisateurs actifs', 'UtilisateursActifs' ),
);
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
@@ -342,6 +366,7 @@ $messages = array(
'tog-enotifminoredits' => 'M’avertir par courriel même en cas de modifications mineures des pages',
'tog-enotifrevealaddr' => 'Afficher mon adresse électronique dans les courriels d’avertissement',
'tog-shownumberswatching' => 'Afficher le nombre d’utilisateurs qui suivent cette page',
+'tog-oldsig' => 'Aperçu de la signature existante :',
'tog-fancysig' => 'Traiter la signature comme du wikitexte (sans lien automatique)',
'tog-externaleditor' => 'Utiliser par défaut un éditeur de texte externe (pour les utilisateurs avancés, nécessite des réglages spécifiques sur votre ordinateur)',
'tog-externaldiff' => 'Utiliser un comparateur externe par défaut (pour les utilisateurs avancés, nécessite des réglages sur votre ordinateur)',
@@ -365,6 +390,13 @@ $messages = array(
'underline-never' => 'Jamais',
'underline-default' => 'Selon le navigateur',
+# Font style option in Special:Preferences
+'editfont-style' => 'Style de police de la zone d’édition :',
+'editfont-default' => 'Celui par défaut du navigateur',
+'editfont-monospace' => 'Police de chasse fixe',
+'editfont-sansserif' => 'Police sans empattement',
+'editfont-serif' => 'Police avec empattements',
+
# Dates
'sunday' => 'dimanche',
'monday' => 'lundi',
@@ -424,7 +456,7 @@ $messages = array(
'category-media-header' => 'Fichiers multimédias dans la catégorie « $1 »',
'category-empty' => "''Cette catégorie ne contient aucune page, sous-catégorie ou fichier multimédia.''",
'hidden-categories' => '{{PLURAL:$1|Catégorie cachée|Catégories cachées}}',
-'hidden-category-category' => 'Catégories cachées', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Catégories cachées',
'category-subcat-count' => 'Cette catégorie comprend {{PLURAL:$2|la sous-catégorie|$2 sous-catégories, dont {{PLURAL:$1|celle|les $1}}}} ci-dessous.',
'category-subcat-count-limited' => 'Cette catégorie comprend {{PLURAL:$1|la sous-catégorie|les $1 sous-catégories}} ci-dessous.',
'category-article-count' => 'Cette catégorie contient {{PLURAL:$2|la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}.',
@@ -432,6 +464,8 @@ $messages = array(
'category-file-count' => 'Cette catégorie contient {{PLURAL:$2|le fichier suivant|$2 fichiers, dont {{PLURAL:$1|celui|les $1}} ci-dessous}}.',
'category-file-count-limited' => '{{PLURAL:$1|Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.',
'listingcontinuesabbrev' => '(suite)',
+'index-category' => 'Pages indexées',
+'noindex-category' => 'Pages non indexées',
'mainpagetext' => "'''MediaWiki a été installé avec succès.'''",
'mainpagedocfooter' => 'Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.
@@ -441,10 +475,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]',
-'about' => 'À propos',
-'article' => 'Page de contenu',
-'newwindow' => '(ouvre une nouvelle fenêtre)',
-'cancel' => 'Annuler',
+'about' => 'À propos',
+'article' => 'Page de contenu',
+'newwindow' => '(ouvre une nouvelle fenêtre)',
+'cancel' => 'Annuler',
+'moredotdotdot' => 'Et plus …',
+'mypage' => 'Ma page',
+'mytalk' => 'Page de discussion',
+'anontalk' => 'Discussion avec cette adresse IP',
+'navigation' => 'Navigation',
+'and' => '&#32;et',
+
+# Cologne Blue skin
'qbfind' => 'Rechercher',
'qbbrowse' => 'Parcourir',
'qbedit' => 'Modifier',
@@ -452,15 +494,35 @@ $messages = array(
'qbpageinfo' => 'Contexte',
'qbmyoptions' => 'Mes pages',
'qbspecialpages' => 'Pages spéciales',
-'moredotdotdot' => 'Et plus …',
-'mypage' => 'Ma page',
-'mytalk' => 'Page de discussion',
-'anontalk' => 'Discussion avec cette adresse IP',
-'navigation' => 'Navigation',
-'and' => '&#32;et',
-
-# Metadata in edit box
-'metadata_help' => 'Métadonnées :',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Ajouter un sujet',
+'vector-action-delete' => 'Supprimer',
+'vector-action-move' => 'Renommer',
+'vector-action-protect' => 'Protéger',
+'vector-action-undelete' => 'Rétablir',
+'vector-action-unprotect' => 'Déprotéger',
+'vector-namespace-category' => 'Catégorie',
+'vector-namespace-help' => 'Aide',
+'vector-namespace-image' => 'Fichier',
+'vector-namespace-main' => 'Page',
+'vector-namespace-media' => 'Page de média',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-project' => 'Page de projet',
+'vector-namespace-special' => 'Page spéciale',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Modèle',
+'vector-namespace-user' => 'Page utilisateur',
+'vector-view-create' => 'Créer',
+'vector-view-edit' => 'Modifier',
+'vector-view-history' => 'Afficher l’historique',
+'vector-view-view' => 'Lire',
+'vector-view-viewsource' => 'Voir la source',
+'actions' => 'Actions',
+'namespaces' => 'Espaces de noms',
+'variants' => 'Variantes',
'errorpagetitle' => 'Erreur',
'returnto' => 'Revenir à la page $1.',
@@ -510,18 +572,22 @@ $messages = array(
'otherlanguages' => 'Autres langues',
'redirectedfrom' => '(Redirigé depuis $1)',
'redirectpagesub' => 'Page de redirection',
-'lastmodifiedat' => 'Dernière modification de cette page le $1 à $2.<br />', # $1 date, $2 time
+'lastmodifiedat' => 'Dernière modification de cette page le $1 à $2.<br />',
'viewcount' => 'Cette page a été consultée $1 fois{{PLURAL:$1||}}.',
'protectedpage' => 'Page protégée',
'jumpto' => 'Aller à :',
'jumptonavigation' => 'Navigation',
'jumptosearch' => 'rechercher',
+'view-pool-error' => 'Désolé, les serveurs sont surchargés en ce moment.
+Trop d’utilisateurs cherchent à consulter cette page.
+Veuillez attendre un moment avant de retenter l’accès à cette page.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'À propos de {{SITENAME}}',
'aboutpage' => 'Project:À propos',
'copyright' => 'Contenu disponible sous $1.',
-'copyrightpagename' => 'licence {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Actualités',
'currentevents-url' => 'Project:Actualités',
@@ -529,8 +595,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avertissements généraux',
'edithelp' => 'Aide',
'edithelppage' => 'Help:Comment modifier une page',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Accueil',
'mainpage' => 'Accueil',
'mainpage-description' => 'Accueil',
@@ -610,10 +674,6 @@ La dernière requête émise était :
« $1 »
dans la fonction « $2 ».
La base de données a renvoyé l’erreur « $3 : $4 ».',
-'noconnect' => 'Le wiki rencontre actuellement quelques difficultés techniques, et ne peut se connecter au serveur de la base de données. <br />
-$1',
-'nodb' => 'Impossible de sélectionner la base de données $1',
-'cachederror' => 'Ceci est une version en cache de la page demandée, elle n’est pas forcément à jour.',
'laggedslavemode' => 'Attention, cette page peut ne pas contenir les toutes dernières modifications effectuées',
'readonly' => 'Base de données verrouillée',
'enterlockreason' => 'Indiquez la raison du verrouillage ainsi qu’une estimation de sa durée',
@@ -631,6 +691,8 @@ Veuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oubli
'readonly_lag' => 'La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal.',
'internalerror' => 'Erreur interne',
'internalerror_info' => 'Erreur interne : $1',
+'fileappenderrorread' => 'Impossible de lire « $1 » lors de l’insertion',
+'fileappenderror' => 'Impossible d’ajouter « $1 » à « $2 ».',
'filecopyerror' => 'Impossible de copier le fichier « $1 » vers « $2 ».',
'filerenameerror' => 'Impossible de renommer le fichier « $1 » en « $2 ».',
'filedeleteerror' => 'Impossible de supprimer le fichier « $1 ».',
@@ -640,7 +702,7 @@ Veuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oubli
'unexpected' => 'Valeur inattendue : « $1 » = « $2 ».',
'formerror' => 'Erreur : Impossible de soumettre le formulaire',
'badarticleerror' => 'Cette action ne peut pas être effectuée sur cette page.',
-'cannotdelete' => 'Impossible de supprimer la page ou le fichier indiqué.
+'cannotdelete' => 'Impossible de supprimer la page ou le fichier « $1 ».
La suppression a peut-être déjà été effectuée par quelqu’un d’autre.',
'badtitle' => 'Mauvais titre',
'badtitletext' => 'Le titre de la page demandée est invalide, vide, ou il s’agit d’un titre inter-langue ou inter-projet mal lié. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.',
@@ -674,7 +736,6 @@ Le motif avancé est « ''$2'' ».",
'virus-unknownscanner' => 'antivirus inconnu :',
# Login and logout pages
-'logouttitle' => 'Déconnexion',
'logouttext' => "'''Vous êtes à présent déconnecté(e).'''
Vous pouvez continuer à utiliser {{SITENAME}} de façon anonyme, [[Special:UserLogin|vous reconnecter]] sous le même nom ou un autre.
@@ -683,7 +744,6 @@ Notez que certaines pages peuvent être encore affichées comme si vous étiez t
Votre compte a été créé.
N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{SITENAME}}]].',
-'loginpagetitle' => 'Connexion',
'yourname' => 'Nom d’utilisateur :',
'yourpassword' => 'Mot de passe :',
'yourpasswordagain' => 'Confirmez le mot de passe :',
@@ -694,6 +754,7 @@ N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{S
'nav-login-createaccount' => 'Créer un compte ou se connecter',
'loginprompt' => "Vous devez activer les témoins (''cookies'') pour vous connecter à {{SITENAME}}.",
'userlogin' => 'Créer un compte ou se connecter',
+'userloginnocreate' => 'Connexion',
'logout' => 'Se déconnecter',
'userlogout' => 'Déconnexion',
'notloggedin' => 'Non connecté',
@@ -706,29 +767,8 @@ N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{S
'badretype' => 'Les mots de passe que vous avez saisis ne correspondent pas.',
'userexists' => 'Le nom d’utilisateur que vous avez saisi est déjà utilisé.
Veuillez en choisir un autre.',
-'youremail' => 'Adresse électronique :',
-'username' => 'Nom d’utilisateur :',
-'uid' => 'Numéro d’utilisateur :',
-'prefs-memberingroups' => 'Membre {{PLURAL:$1|du groupe|des groupes}} :',
-'yourrealname' => 'Nom réel :',
-'yourlanguage' => 'Langue de l’interface :',
-'yourvariant' => 'Variante :',
-'yournick' => 'Signature pour les discussions :',
-'badsig' => 'Signature brute incorrecte.
-Vérifiez vos balises HTML.',
-'badsiglength' => 'Votre signature est trop longue.
-Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
-'yourgender' => 'Sexe :',
-'gender-unknown' => 'Non renseigné',
-'gender-male' => 'Masculin',
-'gender-female' => 'Féminin',
-'prefs-help-gender' => 'Facultatif : utilisé pour accorder en genre les messages de l’interface. Cette information sera publique.',
-'email' => 'Courriel',
-'prefs-help-realname' => 'Facultatif : si vous le spécifiez, il sera utilisé pour vous attribuer vos contributions.',
'loginerror' => 'Erreur de connexion',
-'prefs-help-email' => 'Facultatif : indiquer votre adresse de courriel permet de vous envoyer un nouveau mot de passe si vous oubliez le vôtre.
-Vous pouvez également décider de laisser les autres vous contacter via votre page de discussion, sans avoir besoin de révéler votre identité.',
-'prefs-help-email-required' => 'Une adresse de courriel est requise.',
+'createaccounterror' => 'Impossible de créer le compte : $1',
'nocookiesnew' => "Le compte utilisateur a été créé, mais vous n’êtes pas connecté{{GENDER:||e|(e)}}. {{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
'nocookieslogin' => "{{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter.",
'noname' => 'Vous n’avez pas saisi un nom d’utilisateur valide.',
@@ -739,9 +779,11 @@ Les noms d’utilisateurs sont sensibles à la casse.
Vérifiez l’orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].',
'nosuchusershort' => 'Il n’y a pas de contributeur avec le nom « <nowiki>$1</nowiki> ». Veuillez vérifier l’orthographe.',
'nouserspecified' => 'Vous devez saisir un nom d’utilisateur.',
+'login-userblocked' => 'Cet utilisateur est bloqué. Connexion non autorisée.',
'wrongpassword' => 'Le mot de passe est incorrect. Veuillez essayer à nouveau.',
'wrongpasswordempty' => 'Vous n’avez pas entré de mot de passe. Veuillez essayer à nouveau.',
-'passwordtooshort' => 'Votre mot de passe est trop court. Il doit contenir au moins $1 caractère{{PLURAL:$1||s}} et être différent de votre nom d’utilisateur.',
+'passwordtooshort' => 'Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.',
+'password-name-match' => 'Votre mot de passe doit être différent de votre nom d’utilisateur.',
'mailmypassword' => 'Recevoir un nouveau mot de passe par courriel',
'passwordremindertitle' => 'Nouveau mot de passe temporaire pour {{SITENAME}}',
'passwordremindertext' => 'Quelqu’un (probablement vous, ayant l’adresse IP $1) a demandé un nouveau mot de
@@ -754,6 +796,7 @@ Si vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à p
de votre ancien mot de passe et que vous ne souhaitez plus en changer, vous
pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.',
'noemail' => 'Aucune adresse de courriel n’a été enregistrée pour l’utilisateur « $1 ».',
+'noemailcreate' => 'Vous devez fournir une adresse de courriel valide',
'passwordsent' => 'Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisateur « $1 ». Veuillez vous reconnecter après l’avoir reçu.',
'blocked-mailpassword' => 'Votre adresse IP est bloquée en écriture, la fonction de rappel du mot de passe est donc désactivée pour éviter les abus.',
'eauthentsent' => 'Un courriel de confirmation a été envoyé à l’adresse indiquée.
@@ -775,9 +818,11 @@ Entrez une adresse bien formatée ou laissez ce champ vide.',
Vous devriez ouvrir une session et modifier dès à présent votre mot de passe.
Ignorez ce message si ce compte a été créé par erreur.',
+'usernamehasherror' => 'Le nom d’utilisateur ne peut pas contenir des caractères de hachage',
'login-throttled' => 'Vous avez tenté un trop grand nombre de connexions dernièrement.
Veuillez attendre avant d’essayer à nouveau.',
'loginlanguagelabel' => 'Langue : $1',
+'suspicious-userlogout' => 'Votre demande de déconnexion a été refusée car il semble qu’elle a été envoyée par un navigateur cassé ou la mise en cache d’un proxy.',
# Password reset dialog
'resetpass' => 'Changer le mot de passe',
@@ -789,17 +834,13 @@ Veuillez attendre avant d’essayer à nouveau.',
'retypenew' => 'Confirmer le nouveau mot de passe :',
'resetpass_submit' => 'Changer le mot de passe et se connecter',
'resetpass_success' => 'Votre mot de passe a été changé avec succès ! Connexion en cours…',
-'resetpass_bad_temporary' => 'Mot de passe temporaire invalide. Vous avez peut-être déjà changé votre mot de passe, ou demandé un nouveau mot de passe temporaire.',
'resetpass_forbidden' => 'Les mots de passe ne peuvent pas être changés',
'resetpass-no-info' => 'Vous devez être connecté pour avoir accès à cette page.',
'resetpass-submit-loggedin' => 'Changer le mot de passe',
+'resetpass-submit-cancel' => 'Annuler',
'resetpass-wrong-oldpass' => 'Mot de passe actuel ou temporaire invalide.
Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.',
'resetpass-temp-password' => 'Mot de passe temporaire :',
-'resetpass-log' => 'Journal des réinitialisations de mot de passe',
-'resetpass-logtext' => 'Voici la liste des utilisateurs dont le mot de passe a été réinitialisé par un administrateur.',
-'resetpass-logentry' => 'a changé le mot de passe de $1',
-'resetpass-comment' => 'Raison pour la réinitialisation du mot de passe :',
# Edit page toolbar
'bold_sample' => 'Texte gras',
@@ -875,7 +916,6 @@ Veuillez préciser ces indications dans toutes les requêtes que vous ferez.",
'blockededitsource' => "Le contenu de '''vos modifications''' apportées à '''$1''' est indiqué ci-dessous :",
'whitelistedittitle' => 'Connexion nécessaire pour modifier le contenu',
'whitelistedittext' => 'Vous devez être $1 pour avoir la permission de modifier le contenu.',
-'confirmedittitle' => 'Validation de l’adresse de courriel nécessaire pour modifier le contenu',
'confirmedittext' => 'Vous devez confirmer votre adresse de courriel avant de modifier les pages.
Veuillez entrer et valider votre adresse de courriel dans vos [[Special:Preferences|préférences utilisateur]].',
'nosuchsectiontitle' => 'Impossible de trouver la section',
@@ -896,11 +936,18 @@ Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton ''
Vous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche sur ce titre]] dans les autres pages,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les opérations liées]
ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer cette page]</span>.',
+'noarticletext-nopermission' => 'Il n’y a pour l’instant aucun texte sur cette page.
+Vous pouvez [[Special:Search/{{PAGENAME}}|faire une recherche sur ce titre]] dans les autres pages,
+ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les journaux associés]</span>.',
'userpage-userdoesnotexist' => 'Le compte utilisateur « $1 » n’est pas enregistré. Veuillez vérifier que vous voulez créer cette page.',
+'userpage-userdoesnotexist-view' => 'Le compte utilisateur « $1 » n’est pas enregistré.',
+'blocked-notice-logextract' => 'Cet utilisateur est actuellement bloqué.
+La dernière entrée du registre des blocages est indiquée ci-dessous à titre d’information :',
'clearyourcache' => "'''Note :''' après avoir enregistré vos préférences, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
'''Mozilla / Firefox / Konqueror / Safari :''' maintenez la touche ''Majuscule'' (''Shift'') en cliquant sur le bouton ''Actualiser'' (''Reload'') ou pressez ''Maj-Ctrl-R'' (''Maj-Cmd-R'' sur Apple Mac) ;
'''Internet Explorer / Opera :''' maintenez la touche ''Ctrl'' en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Astuce :''' utilisez le bouton « Prévisualisation » pour tester votre nouvelle feuille CSS/JS avant de l’enregistrer.",
+'usercssyoucanpreview' => "'''Astuce :''' utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille CSS avant de l’enregistrer.",
+'userjsyoucanpreview' => "'''Astuce :''' utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille JavaScript avant de l’enregistrer.",
'usercsspreview' => "'''Rappelez-vous que vous n’êtes qu’en train de prévisualiser votre propre feuille CSS.'''
'''Elle n’a pas encore été enregistrée !'''",
'userjspreview' => "'''Rappelez-vous que vous êtes en train de visualiser ou de tester votre code JavaScript et qu’il n’a pas encore été enregistré !'''",
@@ -949,14 +996,13 @@ certains navigateurs Web gèrent mal la modification des pages approchant ou dé
L’administrateur ayant verrouillé la base de données a donné l’explication suivante :<br
/>$1",
-'protectedpagewarning' => "'''AVERTISSEMENT : cette page est protégée.
-Seuls les utilisateurs ayant le statut d’administrateur peuvent la modifier.'''",
-'semiprotectedpagewarning' => "'''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier.",
+'protectedpagewarning' => "'''AVERTISSEMENT : cette page est protégée. Seuls les utilisateurs ayant le statut d’administrateur peuvent la modifier.''' La dernière entrée du journal est affichée ci-dessous pour référence :",
+'semiprotectedpagewarning' => "'''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier. La dernière entrée du journal est affichée ci-dessous pour référence :",
'cascadeprotectedwarning' => "'''ATTENTION :''' Cette page a été protégée de manière à ce que seuls les administrateurs puissent l’éditer. Cette protection est héritée par son inclusion par {{PLURAL:$1|la page protégée suivante, qui a|les pages protégées suivantes, qui ont}} la « protection en cascade » activée :",
-'titleprotectedwarning' => "'''ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.'''",
-'templatesused' => 'Modèles utilisés sur cette page :',
-'templatesusedpreview' => 'Modèles utilisés dans cette prévisualisation :',
-'templatesusedsection' => 'Modèles utilisés dans cette section :',
+'titleprotectedwarning' => "'''ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.''' La dernière entrée du journal est affichée ci-dessous pour référence :",
+'templatesused' => '{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} par cette page :',
+'templatesusedpreview' => '{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} dans cette prévisualisation :',
+'templatesusedsection' => '{{PLURAL:$1|Modèle utilisé|Modèles utilisés}} dans cette section :',
'template-protected' => '(protégé)',
'template-semiprotected' => '(semi-protégé)',
'hiddencategories' => '{{PLURAL:$1|Catégorie cachée|Catégories cachées}} dont cette page fait partie :',
@@ -965,15 +1011,16 @@ Seuls les utilisateurs ayant le statut d’administrateur peuvent la modifier.''
'nocreatetext' => '{{SITENAME}} a restreint la possibilité de créer de nouvelles pages.
Vous pouvez revenir en arrière et modifier une page existante, ou bien [[Special:UserLogin|vous connecter ou créer un compte]].',
'nocreate-loggedin' => 'Vous n’avez pas la permission de créer de nouvelles pages.',
+'sectioneditnotsupported-title' => 'Modification de section non prise en charge',
+'sectioneditnotsupported-text' => 'La modification d’une section n’est pas supportée dans cette page de modification.',
'permissionserrors' => 'Erreur de permissions',
'permissionserrorstext' => 'Vous n’avez pas la permission d’effectuer l’opération demandée pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} :',
'permissionserrorstext-withaction' => 'Vous n’êtes pas autorisé{{GENDER:||e|(e)}} à $2, pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} :',
-'recreate-deleted-warn' => "'''Attention : vous êtes en train de recréer une page qui a été précédemment supprimée.'''
+'recreate-moveddeleted-warn' => "'''Attention : vous êtes en train de recréer une page qui a été précédemment supprimée.'''
-Demandez-vous s’il est réellement approprié de la recréer en vous référant à l’historique des suppressions affiché ci-dessous :",
-'deleted-notice' => 'Cette page a été supprimée.
-L’historique des suppressions est affiché ci-dessous pour référence.',
-'deletelog-fulllog' => 'Voir l’historique complet',
+Assurez-vous qu’il est pertinent de poursuivre les modifications sur cette page. Le journal des suppressions et des déplacements est affiché ci-dessous :",
+'moveddeleted-notice' => 'Cette page a été supprimée. Le journal des suppressions et des déplacements est affiché ci-dessous pour référence.',
+'log-fulllog' => 'Voir le journal complet',
'edit-hook-aborted' => 'Échec de la modification par une extension.
Cause inconnue',
'edit-gone-missing' => 'N’a pas pu mettre à jour la page.
@@ -994,6 +1041,7 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu’il y en a maint
'post-expand-template-argument-category' => 'Pages contenant des paramètres de modèle non évalués',
'parser-template-loop-warning' => 'Modèle en boucle détecté : [[$1]]',
'parser-template-recursion-depth-warning' => 'Limite de profondeur des appels de modèles dépassée ($1)',
+'language-converter-depth-warning' => 'Limite de profondeur du convertisseur de langue dépassée ($1)',
# "Undo" feature
'undo-success' => 'Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire.',
@@ -1013,7 +1061,7 @@ La raison donnée était ''$2''.",
'currentrev' => 'Version actuelle',
'currentrev-asof' => 'Version actuelle en date du $1',
'revisionasof' => 'Version du $1',
-'revision-info' => 'Version du $1 par $2', # Additionally available: $3: revision id
+'revision-info' => 'Version du $1 par $2',
'previousrevision' => '← Version précédente',
'nextrevision' => 'Version suivante →',
'currentrevisionlink' => 'Voir la version courante',
@@ -1024,7 +1072,7 @@ La raison donnée était ''$2''.",
'page_last' => 'dernière',
'histlegend' => 'Légende : ({{MediaWiki:Cur}}) = différence avec la version actuelle, ({{MediaWiki:Last}}) = différence avec la version précédente, <b>m</b> = modification mineure',
'history-fieldset-title' => 'Naviguer dans l’historique',
-'deletedrev' => '[supprimé]',
+'history-show-deleted' => 'Supprimés seulement',
'histfirst' => 'toute première',
'histlast' => 'toute dernière',
'historysize' => '($1 octet{{PLURAL:$1||s}})',
@@ -1033,70 +1081,113 @@ La raison donnée était ''$2''.",
# Revision feed
'history-feed-title' => 'Historique des versions',
'history-feed-description' => 'Historique pour cette page sur le wiki',
-'history-feed-item-nocomment' => '$1 le $2', # user at time
+'history-feed-item-nocomment' => '$1 le $2',
'history-feed-empty' => 'La page demandée n’existe pas.
Elle a peut-être été effacée ou renommée.
Essayez de [[Special:Search|rechercher sur le wiki]] pour trouver des pages en rapport.',
# Revision deletion
-'rev-deleted-comment' => '(commentaire supprimé)',
-'rev-deleted-user' => '(nom d’utilisateur supprimé)',
-'rev-deleted-event' => '(entrée supprimée)',
-'rev-deleted-text-permission' => "Cette version de la page a été '''supprimée'''.
-Il peut y avoir des détails dans l’[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} historique des suppressions].",
-'rev-deleted-text-view' => "Cette version de la page a été '''supprimée'''.
-En tant qu’administrateur, vous pouvez la visualiser ; il peut y avoir des détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
-'rev-deleted-no-diff' => "Vous ne pouvez par voir ce diff parce qu’une des versions a été '''supprimée'''.
-Il peut y avoir plus de détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jounral des suppressions].",
-'rev-deleted-unhide-diff' => "Une des révisions de cette différence a été '''supprimée'''.
-Il peut y avoir plus de détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].
+'rev-deleted-comment' => '(commentaire supprimé)',
+'rev-deleted-user' => '(nom d’utilisateur supprimé)',
+'rev-deleted-event' => '(entrée supprimée)',
+'rev-deleted-user-contribs' => '[nom d’utilisateur ou adresse IP supprimée - modification cachée sur les contributions]',
+'rev-deleted-text-permission' => "Cette version de la page a été '''effacée'''.
+Des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des effacements].",
+'rev-deleted-text-unhide' => "Cette version de la page a été '''effacée'''.
+Des détails sont disponibles dans [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} le journal des effacements].
+Comme administrateur, vous pouvez toujours [$1 voir cette version] si vous le voulez.",
+'rev-suppressed-text-unhide' => "Cette version de la page a été '''supprimée'''.
+Des détails sont disponibles dans [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} le journal des suppression].
+Comme administrateur, vous pouvez toujours [$1 voir cette version] si vous le voulez.",
+'rev-deleted-text-view' => "Cette version de la page a été '''effacée'''.
+En tant qu’administrateur, vous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des effacements].",
+'rev-suppressed-text-view' => "Cette version de la page a été '''supprimée'''.
+En tant qu’administrateur, vous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+'rev-deleted-no-diff' => "Vous ne pouvez pas voir ce diff parce qu’une des versions a été '''effacée'''.
+Des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des effacements].",
+'rev-suppressed-no-diff' => "Vous ne pouvez pas voir cette différence car une des révisions a été '''supprimée'''.",
+'rev-deleted-unhide-diff' => "Une des révisions de cette différence a été '''effacée'''.
+Des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des effacements].
En tant qu’administrateur vous pouvez toujours [$1 voir cette différence] si vous le voulez.",
-'rev-delundel' => 'afficher/masquer',
-'revisiondelete' => 'Supprimer ou restaurer des événements',
-'revdelete-nooldid-title' => 'Version cible non valide',
-'revdelete-nooldid-text' => 'Vous n’avez pas précisé la version cible de cette fonction, elle n’existe pas, ou il s’agit de la version actuelle.',
-'revdelete-nologtype-title' => 'Aucun type de journal spécifié',
-'revdelete-nologtype-text' => 'Vous n’avez pas spécifié un type de journal sur lequel cette action doit être réalisée.',
-'revdelete-toomanytargets-title' => 'Trop de cibles',
-'revdelete-toomanytargets-text' => 'Vous avez spécifié trop de types de cibles différentes sur lesquelles cette action doit être réalisée.',
-'revdelete-nologid-title' => 'Entrée du journal invalide',
-'revdelete-nologid-text' => 'Vous n’avez pas spécifié une entrée du journal sur laquelle cette action doit être effectuée, ou alors l’événement spécifié n’existe pas.',
-'revdelete-selected' => "'''{{PLURAL:$2|Version sélectionnée|Versions sélectionnées}} de '''[[:$1]]''' :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Événement d’historique sélectionné|Événements d’historique sélectionnés}} :'''",
-'revdelete-text' => "'''Les versions et événements supprimés seront encore présents dans l’historique de la page et dans les journaux, mais leur contenu textuel sera inaccessible au public.'''
-
-Les autres administrateurs de {{SITENAME}} pourront toujours accéder au contenu caché et le restaurer à travers cette même interface, à moins que des restrictions supplémentaires ne soit mises en place.
-Confirmez que ceci est bien ce que vous avez l’intention de faire, que vous en comprenez les conséquences, et que vous faîtes ceci en respect des [[{{MediaWiki:Policy-url}}|règles établies]].",
-'revdelete-suppress-text' => "La suppression ne doit être utilisée '''que''' dans les cas suivants :
+'rev-suppressed-unhide-diff' => "L’une des révisions de ce diff a été '''supprimée'''.
+Des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des suppressions].
+En tant qu’administrateur, vous pouvez toujours [$1 voir ce diff] si vous souhaitez poursuivre.",
+'rev-deleted-diff-view' => "Une des révisions de ce diff a été '''supprimée'''.
+En tant qu’administrateur, vous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+'rev-suppressed-diff-view' => "Une des révisions de ce diff a été '''effacée'''.
+En tant qu’administrateur, vous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des effacements].",
+'rev-delundel' => 'afficher/masquer',
+'rev-showdeleted' => 'afficher',
+'revisiondelete' => 'Supprimer ou restaurer des événements',
+'revdelete-nooldid-title' => 'Version cible non valide',
+'revdelete-nooldid-text' => 'Vous n’avez pas précisé la version cible de cette fonction, elle n’existe pas, ou il s’agit de la version actuelle.',
+'revdelete-nologtype-title' => 'Aucun type de journal spécifié',
+'revdelete-nologtype-text' => 'Vous n’avez pas spécifié un type de journal sur lequel cette action doit être réalisée.',
+'revdelete-nologid-title' => 'Entrée du journal invalide',
+'revdelete-nologid-text' => 'Vous n’avez pas spécifié une entrée du journal sur laquelle cette action doit être effectuée, ou alors l’événement spécifié n’existe pas.',
+'revdelete-no-file' => 'Le fichier spécifié n’existe pas.',
+'revdelete-show-file-confirm' => 'Êtes-vous sûr de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3?',
+'revdelete-show-file-submit' => 'Oui',
+'revdelete-selected' => "'''{{PLURAL:$2|Version sélectionnée|Versions sélectionnées}} de '''[[:$1]]''' :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Événement d’historique sélectionné|Événements d’historique sélectionnés}} :'''",
+'revdelete-text' => "'''Les versions et événements supprimés seront encore présents dans l’historique de la page et dans les journaux, mais leur contenu textuel sera inaccessible au public.'''
+Les autres administrateurs de {{SITENAME}} pourront toujours accéder au contenu caché et le restaurer à travers cette même interface, à moins que des restrictions supplémentaires ne soient mises en place.",
+'revdelete-confirm' => 'Confirmez que vous voulez effectuer cette action, que vous en comprenez les conséquences, et que vous le faites en accord avec [[{{MediaWiki:Policy-url}}|les règles]].',
+'revdelete-suppress-text' => "La suppression ne doit être utilisée '''que''' dans les cas suivants :
* Informations personnelles inappropriées
*: ''adresse, numéro de téléphone, numéro de sécurité sociale, …''",
-'revdelete-legend' => 'Mettre en place des restrictions de visibilité :',
-'revdelete-hide-text' => 'Masquer le texte de la version',
-'revdelete-hide-name' => 'Masquer l’action et la cible',
-'revdelete-hide-comment' => 'Masquer le commentaire de modification',
-'revdelete-hide-user' => 'Masquer le pseudo ou l’adresse IP du contributeur.',
-'revdelete-hide-restricted' => 'Supprimer ces données aux administrateurs ainsi qu’aux autres',
-'revdelete-suppress' => 'Cacher les données également pour les administrateurs',
-'revdelete-hide-image' => 'Masquer le contenu du fichier',
-'revdelete-unsuppress' => 'Enlever les restrictions sur les versions restaurées',
-'revdelete-log' => 'Motif :',
-'revdelete-submit' => 'Appliquer à la version sélectionnée',
-'revdelete-logentry' => 'a modifié la visibilité de la version de [[$1]]',
-'logdelete-logentry' => 'a modifié la visibilité de l’événement de [[$1]]',
-'revdelete-success' => "'''Visibilité des versions mise à jour avec succès.'''",
-'logdelete-success' => "'''Visibilité du journal paramétrée avec succès.'''",
-'revdel-restore' => 'modifier la visibilité',
-'pagehist' => 'Historique de la page',
-'deletedhist' => 'Historique supprimé',
-'revdelete-content' => 'contenu',
-'revdelete-summary' => 'résumé de modification',
-'revdelete-uname' => 'nom d’utilisateur',
-'revdelete-restricted' => 'a appliqué les restrictions aux administrateurs',
-'revdelete-unrestricted' => 'restrictions retirées pour les administrateurs',
-'revdelete-hid' => 'a caché $1',
-'revdelete-unhid' => 'a démasqué $1',
-'revdelete-log-message' => '$1 pour $2 version{{PLURAL:$2||s}}',
-'logdelete-log-message' => '$1 sur $2 évènement{{PLURAL:$2||s}}',
+'revdelete-legend' => 'Mettre en place des restrictions de visibilité :',
+'revdelete-hide-text' => 'Masquer le texte de la version',
+'revdelete-hide-image' => 'Masquer le contenu du fichier',
+'revdelete-hide-name' => 'Masquer l’action et la cible',
+'revdelete-hide-comment' => 'Masquer le commentaire de modification',
+'revdelete-hide-user' => 'Masquer le pseudo ou l’adresse IP du contributeur.',
+'revdelete-hide-restricted' => 'Supprimer ces données aux administrateurs ainsi qu’aux autres',
+'revdelete-radio-same' => '(ne pas changer)',
+'revdelete-radio-set' => 'Oui',
+'revdelete-radio-unset' => 'Non',
+'revdelete-suppress' => 'Cacher les données également pour les administrateurs',
+'revdelete-unsuppress' => 'Enlever les restrictions sur les versions restaurées',
+'revdelete-log' => 'Motif :',
+'revdelete-submit' => 'Appliquer {{PLURAL:$1|à la révision sélectionnée|aux révisions sélectionnées}}',
+'revdelete-logentry' => 'a modifié la visibilité de la version de [[$1]]',
+'logdelete-logentry' => 'a modifié la visibilité de l’événement de [[$1]]',
+'revdelete-success' => "'''Visibilité des versions mise à jour avec succès.'''",
+'revdelete-failure' => "'''La visibilité de la version n’a pas pu être mise à jour :'''
+$1",
+'logdelete-success' => "'''Visibilité du journal paramétrée avec succès.'''",
+'logdelete-failure' => "'''La visibilité du journal n’a pas pu être définie :'''
+$1",
+'revdel-restore' => 'modifier la visibilité',
+'pagehist' => 'Historique de la page',
+'deletedhist' => 'Historique supprimé',
+'revdelete-content' => 'contenu',
+'revdelete-summary' => 'résumé de modification',
+'revdelete-uname' => 'nom d’utilisateur',
+'revdelete-restricted' => 'a appliqué les restrictions aux administrateurs',
+'revdelete-unrestricted' => 'restrictions retirées pour les administrateurs',
+'revdelete-hid' => 'a caché $1',
+'revdelete-unhid' => 'a démasqué $1',
+'revdelete-log-message' => '$1 pour $2 version{{PLURAL:$2||s}}',
+'logdelete-log-message' => '$1 sur $2 évènement{{PLURAL:$2||s}}',
+'revdelete-hide-current' => 'Erreur lors de la suppression de l’élément daté du $1 à $2 : il est la révision courante.
+Il ne peut pas être supprimé.',
+'revdelete-show-no-access' => 'Erreur lors de l’affichage de l’élément daté du $1 à $2 : il est marqué comme « restreint ».
+Vous n’y avez pas accès.',
+'revdelete-modify-no-access' => 'Erreur lors de la modification de l’élément daté du $1 à $2 : il est marqué comme « restreint ».
+Vous n’y avez pas accès.',
+'revdelete-modify-missing' => 'Erreur lors de la modification de l’élément avec l’ID $1 : il est manquant dans la base de données !',
+'revdelete-no-change' => "'''Attention :''' L’élément daté du $1 à $2 a déjà les paramètres de visibilité demandés.",
+'revdelete-concurrent-change' => 'Erreur lors de la modification de l’élément daté du $1 à $2 : son statut a été changé par quelqu’un d’autre pendant que vous le modifiez.
+Vérifiez les journaux.',
+'revdelete-only-restricted' => 'Erreur lors de la suppression de l’entrée datée du $1 à $2 : vous ne pouvez pas supprimer ces éléments aux administrateurs sans également sélectionner des autres options de suppression.',
+'revdelete-reason-dropdown' => '* Raisons courantes de suppression
+** Violation des droits d’auteurs
+** Renseignements personnels inappropriés',
+'revdelete-otherreason' => 'Autre raison / raison supplémentaire :',
+'revdelete-reasonotherlist' => 'Autre raison',
+'revdelete-edit-reasonlist' => 'Modifier les motifs fréquents de suppression',
+'revdelete-offender' => 'Auteur de la révision :',
# Suppression log
'suppressionlog' => 'Journal des suppressions',
@@ -1133,67 +1224,13 @@ Assurez-vous que cette opération conservera la continuité de l’historique de
'mergelogpagetext' => 'Voici la liste des fusions de l’historique d’une page dans celui d’une autre les plus récentes.',
# Diffs
-'history-title' => 'Historique des versions de « $1 »',
-'difference' => '(Différences entre les versions)',
-'lineno' => 'Ligne $1 :',
-'compareselectedversions' => 'Comparer les versions sélectionnées',
-'visualcomparison' => 'Comparaison visuelle',
-'wikicodecomparison' => 'Comparaison du wikitexte',
-'editundo' => 'défaire',
-'diff-multi' => '({{PLURAL:$1|Une version intermédiaire masquée|$1 versions intermédiaires masquées}})',
-'diff-movedto' => 'déplacée vers $1',
-'diff-styleadded' => 'style $1 ajouté',
-'diff-added' => '$1 ajouté',
-'diff-changedto' => 'changé vers $1',
-'diff-movedoutof' => 'déplacé hors de $1',
-'diff-styleremoved' => 'style $1 retiré',
-'diff-removed' => '$1 retiré',
-'diff-changedfrom' => 'changé depuis $1',
-'diff-src' => 'source',
-'diff-withdestination' => 'avec la destination $1',
-'diff-with' => '&#32;avec $1 $2',
-'diff-with-final' => '&#32;et $1 $2',
-'diff-width' => 'largeur',
-'diff-height' => 'hauteur',
-'diff-p' => "un '''paragraphe'''",
-'diff-blockquote' => "une '''citation'''",
-'diff-h1' => "un '''en-tête (niveau 1)'''",
-'diff-h2' => "un '''en-tête (niveau 2)'''",
-'diff-h3' => "un '''en-tête (niveau 3)'''",
-'diff-h4' => "un '''en-tête (niveau 4)'''",
-'diff-h5' => "un '''en-tête (niveau 5)'''",
-'diff-pre' => "un '''bloc préformaté'''",
-'diff-div' => "une '''division'''",
-'diff-ul' => "une '''liste non ordonnée'''",
-'diff-ol' => "une '''liste ordonnée'''",
-'diff-li' => "un '''élément de liste'''",
-'diff-table' => "un '''tableau'''",
-'diff-tbody' => "le '''contenu d’un tableau'''",
-'diff-tr' => "une '''ligne'''",
-'diff-td' => "une '''cellule'''",
-'diff-th' => "un '''en-tête'''",
-'diff-br' => "une '''cassure'''",
-'diff-hr' => "une '''règle horizontale'''",
-'diff-code' => "un '''bloc de code d’ordinateur'''",
-'diff-dl' => "une '''liste de définition'''",
-'diff-dt' => "un '''terme de définition'''",
-'diff-dd' => "une '''définition'''",
-'diff-input' => "une '''entrée'''",
-'diff-form' => "un '''formulaire'''",
-'diff-img' => "une '''image'''",
-'diff-span' => "une '''portée'''",
-'diff-a' => "un '''lien'''",
-'diff-i' => "'''italique'''",
-'diff-b' => "'''gras'''",
-'diff-strong' => "'''fort'''",
-'diff-em' => "'''emphase'''",
-'diff-font' => "'''police'''",
-'diff-big' => "'''grand'''",
-'diff-del' => "'''supprimé'''",
-'diff-tt' => "'''espacement constant'''",
-'diff-sub' => "'''indice'''",
-'diff-sup' => "'''exposant'''",
-'diff-strike' => "'''barré'''",
+'history-title' => 'Historique des versions de « $1 »',
+'difference' => '(Différences entre les versions)',
+'lineno' => 'Ligne $1 :',
+'compareselectedversions' => 'Comparer les versions sélectionnées',
+'showhideselectedversions' => 'Afficher/masquer les versions sélectionnées',
+'editundo' => 'défaire',
+'diff-multi' => '({{PLURAL:$1|Une version intermédiaire masquée|$1 versions intermédiaires masquées}})',
# Search results
'searchresults' => 'Résultats de la recherche',
@@ -1201,28 +1238,25 @@ Assurez-vous que cette opération conservera la continuité de l’historique de
'searchresulttext' => 'Pour plus d’informations sur la recherche dans {{SITENAME}}, voir [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Vous avez recherché « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes les pages commençant par « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes les pages qui ont un lien vers « $1 »]])",
'searchsubtitleinvalid' => "Vous avez recherché « '''$1''' »",
-'noexactmatch' => "'''Aucune page intitulée « $1 » n’existe.''' Vous pouvez [[:$1|créer cette page]].",
-'noexactmatch-nocreate' => "'''Il n’existe aucune page intitulée « $1 ».'''",
'toomanymatches' => 'Un trop grand nombre d’occurrences a été renvoyé, veuillez soumettre une requête différente.',
'titlematches' => 'Correspondances dans les titres des pages',
'notitlematches' => 'Aucun titre de page ne correspond à la recherche.',
'textmatches' => 'Correspondances dans le texte des pages',
'notextmatches' => 'Aucun texte de page ne correspond à la recherche.',
-'prevn' => '$1 précédentes',
-'nextn' => '$1 suivantes',
+'prevn' => '{{PLURAL:$1|précédente|$1 précédentes}}',
+'nextn' => '{{PLURAL:$1|suivante|$1 suivantes}}',
'prevn-title' => '$1 {{PLURAL:$1|résultat précédent|résultats précédents}}',
'nextn-title' => '$1 {{PLURAL:$1|résultat suivant|résultats suivants}}',
'shown-title' => 'Afficher $1 résultat{{PLURAL:$1||s}} par page',
-'viewprevnext' => 'Voir ($1) ($2) ($3).',
+'viewprevnext' => 'Voir ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Options de recherche',
'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
'searchhelp-url' => 'Help:Accueil',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechercher les pages commençant par ce préfixe]]',
'searchprofile-articles' => 'Pages de contenu',
-'searchprofile-articles-and-proj' => 'Pages de contenu et projet',
-'searchprofile-project' => 'Pages du projet',
-'searchprofile-images' => 'Fichiers',
+'searchprofile-project' => 'Pages d’aide et du projet',
+'searchprofile-images' => 'Multimédia',
'searchprofile-everything' => 'Tout',
'searchprofile-advanced' => 'Recherche avancée',
'searchprofile-articles-tooltip' => 'Rechercher dans $1',
@@ -1230,8 +1264,6 @@ Assurez-vous que cette opération conservera la continuité de l’historique de
'searchprofile-images-tooltip' => 'Rechercher des fichiers multimédias',
'searchprofile-everything-tooltip' => 'Rechercher dans tout le site (y compris dans les pages de discussion)',
'searchprofile-advanced-tooltip' => 'Choisir les espaces de noms pour la recherche',
-'prefs-search-nsdefault' => 'Recherche en utilisant les espaces de noms par défaut :',
-'prefs-search-nscustom' => 'Rechercher en utilisant les espaces de noms personnalisés :',
'search-result-size' => '$1 ($2 mot{{PLURAL:$2||s}})',
'search-result-score' => 'Pertinence : $1%',
'search-redirect' => '(redirection depuis $1)',
@@ -1244,11 +1276,12 @@ Assurez-vous que cette opération conservera la continuité de l’historique de
'search-mwsuggest-disabled' => 'sans suggestions',
'search-relatedarticle' => 'Relaté',
'mwsuggest-disable' => 'Désactiver les suggestions AJAX',
+'searcheverything-enable' => 'Rechercher dans tous les espaces de noms',
'searchrelated' => 'relaté',
'searchall' => 'tout',
'showingresults' => 'Affichage de <b>$1</b> résultat{{PLURAL:$1||s}} à partir du #<b>$2</b>.',
'showingresultsnum' => 'Affichage de <b>$3</b> résultat{{PLURAL:$3||s}} à partir du #<b>$2</b>.',
-'showingresultstotal' => "Affichage {{PLURAL:$4|du résultat '''$1'''|des résultats '''$1 – $2'''}} sur '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} de '''$3''' pour '''$4'''",
'nonefound' => "'''Note''' : seuls certains espaces de noms sont fouillés par défaut.
Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (y compris les pages de discussion, les modèles, etc.) ou bien utilisez l’espace de noms souhaité comme préfixe.",
'search-nonefound' => 'Il n’y a aucun résultat correspondant à la requête.',
@@ -1257,111 +1290,150 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'powersearch-ns' => 'Rechercher dans les espaces de noms :',
'powersearch-redir' => 'Afficher les redirections',
'powersearch-field' => 'Rechercher',
+'powersearch-togglelabel' => 'Cocher :',
+'powersearch-toggleall' => 'Tout',
+'powersearch-togglenone' => 'Aucune',
'search-external' => 'Recherche externe',
'searchdisabled' => 'La recherche sur {{SITENAME}} est désactivée. En attendant la réactivation, vous pouvez effectuer une recherche via Google. Attention, leur indexation du contenu de {{SITENAME}} peut ne pas être à jour.',
+# Quickbar
+'qbsettings' => 'Barre d’outils',
+'qbsettings-none' => 'Aucune',
+'qbsettings-fixedleft' => 'Gauche',
+'qbsettings-fixedright' => 'Droite',
+'qbsettings-floatingleft' => 'Flottante à gauche',
+'qbsettings-floatingright' => 'Flottante à droite',
+
# Preferences page
-'preferences' => 'Préférences',
-'mypreferences' => 'Préférences',
-'prefs-edits' => 'Nombre de modifications :',
-'prefsnologin' => 'Non connecté',
-'prefsnologintext' => 'Vous devez être <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} connecté]</span> pour modifier vos préférences d’utilisateur.',
-'prefsreset' => 'Les préférences ont été rétablies à partir de la version enregistrée.',
-'qbsettings' => 'Barre d’outils',
-'qbsettings-none' => 'Aucune',
-'qbsettings-fixedleft' => 'Gauche',
-'qbsettings-fixedright' => 'Droite',
-'qbsettings-floatingleft' => 'Flottante à gauche',
-'qbsettings-floatingright' => 'Flottante à droite',
-'changepassword' => 'Modification du mot de passe',
-'skin' => 'Habillage',
-'skin-preview' => 'Prévisualiser',
-'math' => 'Rendu des maths',
-'dateformat' => 'Format de date',
-'datedefault' => 'Aucune préférence',
-'datetime' => 'Date et heure',
-'math_failure' => 'Erreur math',
-'math_unknown_error' => 'erreur indéterminée',
-'math_unknown_function' => 'fonction inconnue',
-'math_lexing_error' => 'erreur lexicale',
-'math_syntax_error' => 'erreur de syntaxe',
-'math_image_error' => 'La conversion en PNG a échoué ; vérifiez l’installation de LaTeX, dvips, gs et convert',
-'math_bad_tmpdir' => 'Impossible de créer ou d’écrire dans le répertoire math temporaire',
-'math_bad_output' => 'Impossible de créer ou d’écrire dans le répertoire math de sortie',
-'math_notexvc' => 'L’exécutable « texvc » est introuvable. Lisez math/README pour le configurer.',
-'prefs-personal' => 'Informations personnelles',
-'prefs-rc' => 'Modifications récentes',
-'prefs-watchlist' => 'Liste de suivi',
-'prefs-watchlist-days' => 'Nombre de jours à afficher dans la liste de suivi :',
-'prefs-watchlist-days-max' => '(maximum 7 jours)',
-'prefs-watchlist-edits' => 'Nombre de modifications à afficher dans la liste de suivi étendue :',
-'prefs-watchlist-edits-max' => '(nombre maximum : 1000)',
-'prefs-misc' => 'Préférences diverses',
-'prefs-resetpass' => 'Modifier le mot de passe',
-'saveprefs' => 'Enregistrer les préférences',
-'resetprefs' => 'Rétablir les préférences',
-'restoreprefs' => 'Restaurer toutes les valeurs par défaut',
-'textboxsize' => 'Fenêtre de modification',
-'prefs-edit-boxsize' => 'Taille de la fenêtre de modification.',
-'rows' => 'Rangées :',
-'columns' => 'Colonnes :',
-'searchresultshead' => 'Recherches',
-'resultsperpage' => 'Nombre de réponses par page :',
-'contextlines' => 'Nombre de lignes par réponse :',
-'contextchars' => 'Nombre de caractères de contexte par ligne :',
-'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
-'recentchangesdays' => 'Nombre de jours à afficher dans les modifications récentes :',
-'recentchangesdays-max' => '(maximum $1 jour{{PLURAL:$1||s}})',
-'recentchangescount' => 'Nombre de modifications à afficher dans les modifications récentes, pages d’historiques et d’opérations, par défaut :',
-'savedprefs' => 'Les préférences ont été sauvegardées.',
-'timezonelegend' => 'Fuseau horaire :',
-'timezonetext' => 'Nombre d’heures de décalage entre votre heure locale et l’heure du serveur (UTC).',
-'localtime' => 'Heure locale :',
-'timezoneselect' => 'Zone horaire',
-'timezoneuseserverdefault' => 'Utiliser la valeur du serveur',
-'timezoneuseoffset' => 'Autre (spécifier le décalage)',
-'timezoneoffset' => 'Décalage horaire¹ :',
-'servertime' => 'Heure du serveur :',
-'guesstimezone' => 'Utiliser la valeur du navigateur',
-'timezoneregion-africa' => 'Afrique',
-'timezoneregion-america' => 'Amérique',
-'timezoneregion-antarctica' => 'Antarctique',
-'timezoneregion-arctic' => 'Arctique',
-'timezoneregion-asia' => 'Asie',
-'timezoneregion-atlantic' => 'Océan atlantique',
-'timezoneregion-australia' => 'Australie',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Océan indien',
-'timezoneregion-pacific' => 'Océan pacifique',
-'allowemail' => 'Autoriser l’envoi de courriels venant d’autres utilisateurs',
-'prefs-searchoptions' => 'Options de recherche',
-'prefs-namespaces' => 'Espaces de noms',
-'defaultns' => 'Rechercher par défaut dans ces espaces de noms',
-'default' => 'défaut',
-'files' => 'Fichiers',
-'prefs-custom-css' => 'CSS personnalisé',
-'prefs-custom-js' => 'JavaScript personnalisé',
+'preferences' => 'Préférences',
+'mypreferences' => 'Préférences',
+'prefs-edits' => 'Nombre de modifications :',
+'prefsnologin' => 'Non connecté',
+'prefsnologintext' => 'Vous devez être <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connecté]</span> pour modifier vos préférences d’utilisateur.',
+'changepassword' => 'Modification du mot de passe',
+'prefs-skin' => 'Habillage',
+'skin-preview' => 'Prévisualiser',
+'prefs-math' => 'Rendu des maths',
+'datedefault' => 'Aucune préférence',
+'prefs-datetime' => 'Date et heure',
+'prefs-personal' => 'Informations personnelles',
+'prefs-rc' => 'Modifications récentes',
+'prefs-watchlist' => 'Liste de suivi',
+'prefs-watchlist-days' => 'Nombre de jours à afficher dans la liste de suivi :',
+'prefs-watchlist-days-max' => '(maximum 7 jours)',
+'prefs-watchlist-edits' => 'Nombre de modifications à afficher dans la liste de suivi étendue :',
+'prefs-watchlist-edits-max' => '(nombre maximum : 1000)',
+'prefs-watchlist-token' => 'Jeton pour la liste de suivi :',
+'prefs-misc' => 'Préférences diverses',
+'prefs-resetpass' => 'Modifier le mot de passe',
+'prefs-email' => 'Options des courriels',
+'prefs-rendering' => 'Apparence',
+'saveprefs' => 'Enregistrer les préférences',
+'resetprefs' => 'Rétablir les préférences',
+'restoreprefs' => 'Restaurer toutes les valeurs par défaut',
+'prefs-editing' => 'Fenêtre de modification',
+'prefs-edit-boxsize' => 'Taille de la fenêtre de modification.',
+'rows' => 'Rangées :',
+'columns' => 'Colonnes :',
+'searchresultshead' => 'Recherches',
+'resultsperpage' => 'Nombre de réponses par page :',
+'contextlines' => 'Nombre de lignes par réponse :',
+'contextchars' => 'Nombre de caractères de contexte par ligne :',
+'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
+'recentchangesdays' => 'Nombre de jours à afficher dans les modifications récentes :',
+'recentchangesdays-max' => '(maximum $1 jour{{PLURAL:$1||s}})',
+'recentchangescount' => 'Nombre de modifications à afficher par défaut :',
+'prefs-help-recentchangescount' => 'Ceci inclut les modifications récentes, les pages d’historiques et les journaux.',
+'prefs-help-watchlist-token' => 'En remplissant ceci avec une valeur secrète générera un flux RSS pour votre liste de suivi.
+Toute personne connaissant ce jeton pourra lire votre liste de suivi, choisissez donc une valeur sécurisée.
+Voici une valeur générée aléatoirement que vous pouvez utiliser : $1',
+'savedprefs' => 'Les préférences ont été sauvegardées.',
+'timezonelegend' => 'Fuseau horaire :',
+'localtime' => 'Heure locale :',
+'timezoneuseserverdefault' => 'Utiliser la valeur du serveur',
+'timezoneuseoffset' => 'Autre (spécifier le décalage)',
+'timezoneoffset' => 'Décalage horaire¹ :',
+'servertime' => 'Heure du serveur :',
+'guesstimezone' => 'Utiliser la valeur du navigateur',
+'timezoneregion-africa' => 'Afrique',
+'timezoneregion-america' => 'Amérique',
+'timezoneregion-antarctica' => 'Antarctique',
+'timezoneregion-arctic' => 'Arctique',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-atlantic' => 'Océan atlantique',
+'timezoneregion-australia' => 'Australie',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Océan indien',
+'timezoneregion-pacific' => 'Océan pacifique',
+'allowemail' => 'Autoriser l’envoi de courriels venant d’autres utilisateurs',
+'prefs-searchoptions' => 'Options de recherche',
+'prefs-namespaces' => 'Espaces de noms',
+'defaultns' => 'Rechercher par défaut dans ces espaces de noms :',
+'default' => 'défaut',
+'prefs-files' => 'Fichiers',
+'prefs-custom-css' => 'CSS personnalisé',
+'prefs-custom-js' => 'JavaScript personnalisé',
+'prefs-reset-intro' => 'Vous pouvez utiliser cette page pour restaurer vos préférences aux valeurs par défaut du site. Ceci ne peut pas être défait.',
+'prefs-emailconfirm-label' => 'Confirmation du courriel :',
+'prefs-textboxsize' => 'Taille de la fenêtre de modification',
+'youremail' => 'Adresse électronique :',
+'username' => 'Nom d’utilisateur :',
+'uid' => 'Numéro d’utilisateur :',
+'prefs-memberingroups' => 'Membre {{PLURAL:$1|du groupe|des groupes}} :',
+'prefs-registration' => 'Date d’inscription :',
+'yourrealname' => 'Nom réel :',
+'yourlanguage' => 'Langue de l’interface :',
+'yourvariant' => 'Variante :',
+'yournick' => 'Signature pour les discussions :',
+'prefs-help-signature' => 'Les commentaires sur les pages de discussion doivent être signés avec « <nowiki>~~~~</nowiki> », qui sera converti par votre signature et un horodatage.',
+'badsig' => 'Signature brute incorrecte.
+Vérifiez vos balises HTML.',
+'badsiglength' => 'Votre signature est trop longue.
+Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
+'yourgender' => 'Sexe :',
+'gender-unknown' => 'Non renseigné',
+'gender-male' => 'Masculin',
+'gender-female' => 'Féminin',
+'prefs-help-gender' => 'Facultatif : utilisé pour accorder en genre les messages de l’interface. Cette information sera publique.',
+'email' => 'Courriel',
+'prefs-help-realname' => 'Facultatif : si vous le spécifiez, il sera utilisé pour vous attribuer vos contributions.',
+'prefs-help-email' => 'Facultatif : indiquer votre adresse de courriel permet de vous envoyer un nouveau mot de passe si vous oubliez le vôtre.
+Vous pouvez également décider de laisser les autres vous contacter via votre page de discussion, sans avoir besoin de révéler votre identité.',
+'prefs-help-email-required' => 'Une adresse de courriel est requise.',
+'prefs-info' => 'Information de base',
+'prefs-i18n' => 'Internationalisation',
+'prefs-signature' => 'Signature',
+'prefs-dateformat' => 'Format des dates',
+'prefs-timeoffset' => 'Décalage horaire',
+'prefs-advancedediting' => 'Options avancées',
+'prefs-advancedrc' => 'Options avancées',
+'prefs-advancedrendering' => 'Options avancées',
+'prefs-advancedsearchoptions' => 'Options avancées',
+'prefs-advancedwatchlist' => 'Options avancées',
+'prefs-display' => 'Options d’affichage',
+'prefs-diffs' => 'Différences',
# User rights
-'userrights' => 'Gestion des droits des utilisateurs', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gestion des groupes d’utilisateurs',
-'userrights-user-editname' => 'Entrez un nom d’utilisateur :',
-'editusergroup' => 'Modification des groupes d’utilisateurs',
-'editinguser' => "Modification des droits de l’utilisateur '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modifier les groupes de l’utilisateur',
-'saveusergroups' => 'Sauvegarder les groupes d’utilisateurs',
-'userrights-groupsmember' => 'Membre de :',
-'userrights-groups-help' => 'Vous pouvez modifier les groupes auxquels appartient cet utilisateur.
+'userrights' => 'Gestion des droits des utilisateurs',
+'userrights-lookup-user' => 'Gestion des groupes d’utilisateurs',
+'userrights-user-editname' => 'Entrez un nom d’utilisateur :',
+'editusergroup' => 'Modification des groupes d’utilisateurs',
+'editinguser' => "Modification des droits de l’utilisateur '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modifier les groupes de l’utilisateur',
+'saveusergroups' => 'Sauvegarder les groupes d’utilisateurs',
+'userrights-groupsmember' => 'Membre de :',
+'userrights-groupsmember-auto' => 'Membre implicite de :',
+'userrights-groups-help' => 'Vous pouvez modifier les groupes auxquels appartient cet utilisateur.
* Une case cochée signifie que l’utilisateur se trouve dans ce groupe.
* Une case non cochée signifie qu’il ne s’y trouve pas.
* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté.',
-'userrights-reason' => 'Motif :',
-'userrights-no-interwiki' => 'Vous n’avez pas la permission de modifier des droits d’utilisateurs sur d’autres wikis.',
-'userrights-nodatabase' => 'La base de donnée « $1 » n’existe pas ou n’est pas locale.',
-'userrights-nologin' => 'Vous devez vous [[Special:UserLogin|connecter]] avec un compte d’administrateur pour modifier des droits d’utilisateur.',
-'userrights-notallowed' => 'Votre compte n’a pas la permission de modifier des droits d’utilisateur.',
-'userrights-changeable-col' => 'Les groupes que vous pouvez modifier',
-'userrights-unchangeable-col' => 'Les groupes que vous ne pouvez pas modifier',
+'userrights-reason' => 'Motif :',
+'userrights-no-interwiki' => 'Vous n’avez pas la permission de modifier des droits d’utilisateurs sur d’autres wikis.',
+'userrights-nodatabase' => 'La base de donnée « $1 » n’existe pas ou n’est pas locale.',
+'userrights-nologin' => 'Vous devez vous [[Special:UserLogin|connecter]] avec un compte d’administrateur pour modifier des droits d’utilisateur.',
+'userrights-notallowed' => 'Votre compte n’a pas la permission de modifier des droits d’utilisateur.',
+'userrights-changeable-col' => 'Les groupes que vous pouvez modifier',
+'userrights-unchangeable-col' => 'Les groupes que vous ne pouvez pas modifier',
# Groups
'group' => 'Groupe :',
@@ -1414,6 +1486,7 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'right-bigdelete' => 'Supprimer des pages ayant un gros historique',
'right-deleterevision' => 'Supprimer ou restaurer une version particulière d’une page',
'right-deletedhistory' => 'Voir les entrées des historiques supprimés mais sans leur texte',
+'right-deletedtext' => 'Voir le texte supprimé et les différences entre les versions supprimées',
'right-browsearchive' => 'Rechercher des pages supprimées',
'right-undelete' => 'Restaurer une page supprimée',
'right-suppressrevision' => 'Examiner et restaurer les versions masquées aux administrateurs',
@@ -1427,6 +1500,8 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'right-editprotected' => 'Modifier les pages protégées (sans protection en cascade)',
'right-editinterface' => 'Modifier l’interface utilisateur',
'right-editusercssjs' => 'Modifier les fichiers CSS et JavaScript d’autres utilisateurs',
+'right-editusercss' => 'Modifier les fichiers CSS d’autres utilisateurs',
+'right-edituserjs' => 'Modifier les fichiers JavaScript d’autres utilisateurs',
'right-rollback' => 'Révoquer rapidement les modifications du dernier contributeur d’une page particulière',
'right-markbotedits' => 'Marquer des modifications révoquées comme ayant été faites par un robot.',
'right-noratelimit' => 'Ne pas être affecté par les limites de taux',
@@ -1443,6 +1518,8 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'right-siteadmin' => 'Verrouiller ou déverrouiller la base de données',
'right-reset-passwords' => 'Changer le mot de passe d’autres utilisateurs',
'right-override-export-depth' => 'Exporter les pages en incluant les pages liées jusqu’à une profondeur de 5 niveaux',
+'right-versiondetail' => 'Voir les informations étendues sur les versions des logiciels',
+'right-sendemail' => 'Envoyer un courriel aux autres utilisateurs',
# User rights log
'rightslog' => 'Journal des modifications de droits d’utilisateurs',
@@ -1492,6 +1569,15 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'recentchanges-legend' => 'Options des modifications récentes',
'recentchangestext' => 'Piste les changements les plus récents du wiki sur cette page.',
'recentchanges-feed-description' => 'Suivre les dernières modifications de ce wiki dans un flux.',
+'recentchanges-label-legend' => 'Légende : $1.',
+'recentchanges-legend-newpage' => '$1 - nouvelle page',
+'recentchanges-label-newpage' => 'Cette modification a créé une nouvelle page',
+'recentchanges-legend-minor' => '$1 - modification mineure',
+'recentchanges-label-minor' => 'Cette modification est mineure',
+'recentchanges-legend-bot' => '$1 - modification faite par un robot',
+'recentchanges-label-bot' => 'Cette modification a été effectuée par un robot.',
+'recentchanges-legend-unpatrolled' => '$1 - modification non patrouillée',
+'recentchanges-label-unpatrolled' => 'Cette modification n’a pas encore été patrouillée.',
'rcnote' => 'Voici {{PLURAL:$1|la dernière modification effectuée|les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière journée|les <b>$2</b> derniers jours}} jusqu’à $5 le $4.',
'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
@@ -1518,6 +1604,8 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
# Recent changes linked
'recentchangeslinked' => 'Suivi des pages liées',
+'recentchangeslinked-feed' => 'Suivi des pages liées',
+'recentchangeslinked-toolbox' => 'Suivi des pages liées',
'recentchangeslinked-title' => 'Suivi des pages associées à « $1 »',
'recentchangeslinked-noresult' => 'Il n’y a pas de modification sur les pages liées pendant la période choisie.',
'recentchangeslinked-summary' => "Cette page spéciale montre les modifications récentes sur les pages qui sont liées. Les pages de votre liste de suivi sont '''en gras'''.",
@@ -1527,8 +1615,8 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
# Upload
'upload' => 'Téléverser un fichier',
'uploadbtn' => 'Téléverser le fichier',
-'reupload' => 'Téléverser à nouveau',
'reuploaddesc' => 'Annuler et retourner au formulaire de téléversement',
+'upload-tryagain' => 'Envoyer la description du fichier modifiée',
'uploadnologin' => 'Non connecté(e)',
'uploadnologintext' => 'Vous devez être [[Special:UserLogin|connecté(e)]] pour téléverser des fichiers sur le serveur.',
'upload_directory_missing' => 'Le répertoire de téléversement ($1) est introuvable et n’a pas pu être créé par le serveur web.',
@@ -1560,6 +1648,7 @@ Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentatio
'minlength1' => 'Le noms de fichiers doivent comprendre au moins une lettre.',
'illegalfilename' => 'Le nom de fichier « $1 » contient des caractères interdits dans les titres de pages. Merci de le renommer et de le téléverser à nouveau.',
'badfilename' => 'Le fichier a été renommé en « $1 ».',
+'filetype-mime-mismatch' => 'L’extension du fichier ne correspond pas au type MIME.',
'filetype-badmime' => 'Les fichiers du type MIME « $1 » ne peuvent pas être téléversés.',
'filetype-bad-ie-mime' => 'Le fichier ne peut pas être téléversé parce qu’il serait détecté comme « $1 » par Internet Explorer, ce qui correspond à un type de fichier interdit car potentiellement dangereux.',
'filetype-unwanted-type' => "'''« .$1 »''' est un format de fichier non désiré.
@@ -1582,7 +1671,6 @@ Pour que ce soit le cas, vous devrez modifier manuellement la page. [[$1|thumb]]
* Nom du fichier à téléverser : '''<tt>[[:$1]]</tt>'''
* Nom du fichier existant : '''<tt>[[:$2]]</tt>'''
Veuillez choisir un autre nom.",
-'fileexists-thumb' => "<center>'''Fichier existant'''</center>",
'fileexists-thumbnail-yes' => "Le fichier semble être une image en taille réduite ''(vignette)''. [[$1|thumb]]
Veuillez vérifier le fichier '''<tt>[[:$1]]</tt>'''.
Si le fichier vérifié est la même image avec la taille initiale, il n’y a pas besoin d’importer une version réduite.",
@@ -1597,6 +1685,7 @@ Si vous voulez toujours téléverser votre fichier, veuillez revenir en arrière
'file-deleted-duplicate' => 'Un fichier identique à celui-ci ([[$1]]) a déjà été supprimé. Vous devriez vérifier le journal des suppressions de ce fichier avant de le téléverser à nouveau.',
'successfulupload' => 'Téléversement effectué avec succès',
'uploadwarning' => 'Attention !',
+'uploadwarning-text' => 'Modifiez la description du fichier et essayez de nouveau.',
'savefile' => 'Sauvegarder le fichier',
'uploadedimage' => 'a téléversé « [[$1]] »',
'overwroteimage' => 'a téléversé une nouvelle version de « [[$1]] »',
@@ -1604,12 +1693,14 @@ Si vous voulez toujours téléverser votre fichier, veuillez revenir en arrière
'uploaddisabledtext' => 'Le téléversement de fichiers est désactivé sur ce wiki.',
'php-uploaddisabledtext' => 'Le téléversement de fichiers a été désactivé dans PHP. Vérifiez l’option de configuration file_uploads.',
'uploadscripted' => 'Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.',
-'uploadcorrupt' => 'Ce fichier est corrompu, a une taille nulle ou possède une extension invalide.
-Veuillez vérifier le fichier avant de le téléverser à nouveau.',
'uploadvirus' => 'Ce fichier contient un virus ! Pour plus de détails, consultez : $1',
+'upload-source' => 'Fichier source',
'sourcefilename' => 'Nom du fichier source :',
+'sourceurl' => 'URL source :',
'destfilename' => 'Nom sous lequel le fichier sera enregistré :',
'upload-maxfilesize' => 'Taille maximale du fichier : $1',
+'upload-description' => 'Description du fichier',
+'upload-options' => 'Options de téléversement',
'watchthisupload' => 'Suivre ce fichier',
'filewasdeleted' => 'Un fichier avec ce nom a déjà été téléversé, puis supprimé.
Vous devriez vérifier le $1 avant de procéder à un nouveau téléversement.',
@@ -1633,14 +1724,45 @@ MGP # Pentax
PICT # divers
#</pre><!-- laisser cette ligne telle quelle -->',
-'upload-proto-error' => 'Protocole incorrect',
-'upload-proto-error-text' => 'Le téléversement requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.',
-'upload-file-error' => 'Erreur interne',
-'upload-file-error-text' => 'Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].',
-'upload-misc-error' => 'Erreur de téléversement inconnue',
-'upload-misc-error-text' => 'Une erreur inconnue est survenue pendant le téléversement.
+'upload-proto-error' => 'Protocole incorrect',
+'upload-proto-error-text' => 'Le téléversement requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.',
+'upload-file-error' => 'Erreur interne',
+'upload-file-error-text' => 'Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].',
+'upload-misc-error' => 'Erreur de téléversement inconnue',
+'upload-misc-error-text' => 'Une erreur inconnue est survenue pendant le téléversement.
Veuillez vérifier que l’URL est valide et accessible, puis essayer à nouveau.
Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].',
+'upload-too-many-redirects' => 'L’URL contient trop de redirections.',
+'upload-unknown-size' => 'Taille inconnue',
+'upload-http-error' => 'Une erreur HTTP est intervenue : $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accès refusé',
+'img-auth-nopathinfo' => 'PATH_INFO manquant.
+Votre serveur n’est pas paramétré pour passer cette information.
+Il fonctionne peut-être en CGI et ne supporte pas img_atuh.
+Consultez http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Le chemin demandé n’est pas le répertoire de téléversement configuré.',
+'img-auth-badtitle' => 'Impossible de construire un titre valide à partir de « $1 ».',
+'img-auth-nologinnWL' => 'Vous n’êtes pas connecté et « $1 » n’est pas dans la liste blanche.',
+'img-auth-nofile' => 'Le fichier « $1 » n’existe pas.',
+'img-auth-isdir' => 'Vous essayez d’accéder au répertoire « $1 ».
+Seul l’accès aux fichiers est permis.',
+'img-auth-streaming' => 'Lecture en continu de « $1 ».',
+'img-auth-public' => 'La fonction de img_auth.php est d’afficher des fichiers d’un wiki privé.
+Ce wiki est configuré comme un wiki public.
+Pour une sécurité optimale, img_auth.php est désactivé.',
+'img-auth-noread' => 'L’utilisateur n’a pas le droit en lecture sur « $1 ».',
+
+# HTTP errors
+'http-invalid-url' => 'URL incorrecte : $1',
+'http-invalid-scheme' => 'Les URLs avec le schéma « $1 » ne sont pas supportées',
+'http-request-error' => 'Erreur inconnue lors de l’envoi de la requête.',
+'http-read-error' => 'Erreur de lecture HTTP.',
+'http-timed-out' => 'La requête HTTP a expiré.',
+'http-curl-error' => 'Erreur lors de la récupération de l’URL : $1',
+'http-host-unreachable' => 'Impossible d’atteindre l’URL.',
+'http-bad-status' => 'Il y a eu un problème lors de la requête HTTP : $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL injoignable',
@@ -1649,6 +1771,7 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
'upload-curl-error28-text' => 'Le site a mis trop longtemps à répondre. Vérifiez que le site est en ligne, attendez un peu et réessayez. Vous pouvez aussi réessayer à une heure de moindre affluence.',
'license' => 'Licence',
+'license-header' => 'Publié sous licence(s)',
'nolicense' => 'Aucune licence sélectionnée',
'license-nopreview' => '(Prévisualisation non disponible)',
'upload_source_url' => ' (une URL valide et accessible publiquement)',
@@ -1669,38 +1792,40 @@ Cliquer sur un en-tête de colonne permet de changer l’ordre d’affichage.',
'listfiles_count' => 'Versions',
# File description page
-'filehist' => 'Historique du fichier',
-'filehist-help' => 'Cliquer sur une date et heure pour voir le fichier tel qu’il était à ce moment-là.',
-'filehist-deleteall' => 'supprimer tout',
-'filehist-deleteone' => 'supprimer',
-'filehist-revert' => 'rétablir',
-'filehist-current' => 'actuel',
-'filehist-datetime' => 'Date et heure',
-'filehist-thumb' => 'Miniature',
-'filehist-thumbtext' => 'Vignette pour la version du $1',
-'filehist-nothumb' => 'Pas de miniature',
-'filehist-user' => 'Utilisateur',
-'filehist-dimensions' => 'Dimensions',
-'filehist-filesize' => 'Taille du fichier',
-'filehist-comment' => 'Commentaire',
-'imagelinks' => 'Utilisations du fichier',
-'linkstoimage' => '{{PLURAL:$1|La page suivante utilise|Les $1 pages suivantes utilisent}} ce fichier :',
-'linkstoimage-more' => 'Plus {{PLURAL:$1|d’une page utilise|de $1 pages utilisent}} ce fichier.
+'file-anchor-link' => 'Fichier',
+'filehist' => 'Historique du fichier',
+'filehist-help' => 'Cliquer sur une date et heure pour voir le fichier tel qu’il était à ce moment-là.',
+'filehist-deleteall' => 'supprimer tout',
+'filehist-deleteone' => 'supprimer',
+'filehist-revert' => 'rétablir',
+'filehist-current' => 'actuel',
+'filehist-datetime' => 'Date et heure',
+'filehist-thumb' => 'Miniature',
+'filehist-thumbtext' => 'Vignette pour la version du $1',
+'filehist-nothumb' => 'Pas de miniature',
+'filehist-user' => 'Utilisateur',
+'filehist-dimensions' => 'Dimensions',
+'filehist-filesize' => 'Taille du fichier',
+'filehist-comment' => 'Commentaire',
+'filehist-missing' => 'Fichier manquant',
+'imagelinks' => 'Utilisations du fichier',
+'linkstoimage' => '{{PLURAL:$1|La page suivante utilise|Les $1 pages suivantes utilisent}} ce fichier :',
+'linkstoimage-more' => 'Plus {{PLURAL:$1|d’une page utilise|de $1 pages utilisent}} ce fichier.
La liste suivante affiche seulement {{PLURAL:$1|la première page qui utilise|les $1 premières pages qui utilisent}} ce fichier.
Une [[Special:WhatLinksHere/$2|liste complète]] est disponible.',
-'nolinkstoimage' => 'Aucune page n’utilise ce fichier.',
-'morelinkstoimage' => 'Voir [[Special:WhatLinksHere/$1|plus de liens]] vers ce fichier.',
-'redirectstofile' => '{{PLURAL:$1|Le fichier suivant redirige|Les fichiers suivants redirigent}} vers celui-ci :',
-'duplicatesoffile' => '{{PLURAL:$1|Le fichier suivant est un duplicata|Les fichiers suivants sont des duplicatas}} de celui-ci ([[Special:FileDuplicateSearch/$2|plus de détails]]) :',
-'sharedupload' => 'Ce fichier provient de $1 et peut être utilisé par d’autres projets.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Reportez-vous à la $1 pour plus d’informations.',
-'shareduploadwiki-desc' => 'La description affichée ci-dessous est issue de sa $1 dans le dépôt partagé.',
-'shareduploadwiki-linktext' => 'page de description du fichier',
-'noimage' => 'Aucun fichier n’existe sous ce nom, mais vous pouvez $1.',
-'noimage-linktext' => 'en téléverser un',
-'uploadnewversion-linktext' => 'Téléverser une nouvelle version de ce fichier',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'un dépôt partagé', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Aucune page n’utilise ce fichier.',
+'morelinkstoimage' => 'Voir [[Special:WhatLinksHere/$1|plus de liens]] vers ce fichier.',
+'redirectstofile' => '{{PLURAL:$1|Le fichier suivant redirige|Les fichiers suivants redirigent}} vers celui-ci :',
+'duplicatesoffile' => '{{PLURAL:$1|Le fichier suivant est un duplicata|Les fichiers suivants sont des duplicatas}} de celui-ci ([[Special:FileDuplicateSearch/$2|plus de détails]]) :',
+'sharedupload' => 'Ce fichier provient de $1 et peut être utilisé par d’autres projets.',
+'sharedupload-desc-there' => 'Ce fichier provient de $1 et peut être utilisé par d’autres projets. Voyez [$2 sa page de description] pour plus d’informations.',
+'sharedupload-desc-here' => 'Ce fichier provient de $1 et peut être utilisé par d’autres projets. Sa [$2 page de description] est affichée ci-dessous.',
+'filepage-nofile' => 'Aucun fichier de ce nom existe.',
+'filepage-nofile-link' => 'Aucun fichier de ce nom n’existe, mais vous pouvez [$1 en téléverser un].',
+'uploadnewversion-linktext' => 'Téléverser une nouvelle version de ce fichier',
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'un dépôt partagé',
+'shared-repo-name-wikimediacommons' => 'Wikimédia Commons',
# File reversion
'filerevert' => 'Rétablir $1',
@@ -1729,6 +1854,7 @@ Une [[Special:WhatLinksHere/$2|liste complète]] est disponible.',
** Violation du droit d’auteur
** Fichier dupliqué',
'filedelete-edit-reasonlist' => 'Modifier les motifs fréquents de suppression',
+'filedelete-maintenance' => 'La suppression et restauration de fichiers est temporairement désactivée durant la maintenance.',
# MIME search
'mimesearch' => 'Recherche par type de contenu MIME',
@@ -1751,7 +1877,7 @@ N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèl
# Random page
'randompage' => 'Page au hasard',
-'randompage-nopages' => 'Il n’y a aucune page dans l’espace de noms « $1 ».',
+'randompage-nopages' => 'Il n’y a aucune page dans {{PLURAL:$2|l’espace de noms|les espaces de noms}} : $1.',
# Random redirect
'randomredirect' => 'Page de redirection au hasard',
@@ -1763,6 +1889,7 @@ N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèl
'statistics-header-edits' => 'Statistiques des modifications',
'statistics-header-views' => 'Statistiques des visites',
'statistics-header-users' => 'Statistiques des utilisateurs',
+'statistics-header-hooks' => 'Autres statistiques',
'statistics-articles' => 'Pages de contenu',
'statistics-pages' => 'Pages',
'statistics-pages-desc' => 'Toutes les pages du wiki, y compris les pages de discussion, les redirections, etc.',
@@ -1792,8 +1919,8 @@ Les entrées <s>barrées</s> ont été résolues.',
'brokenredirects' => 'Redirections cassées',
'brokenredirectstext' => 'Ces redirections mènent vers des pages inexistantes :',
-'brokenredirects-edit' => '(modifier)',
-'brokenredirects-delete' => '(supprimer)',
+'brokenredirects-edit' => 'modifier',
+'brokenredirects-delete' => 'supprimer',
'withoutinterwiki' => 'Pages sans liens inter-langues',
'withoutinterwiki-summary' => 'Les pages suivantes ne possèdent pas de liens vers d’autres langues :',
@@ -1901,7 +2028,7 @@ Vous pouvez restreindre la vue en sélectionnant un type de journal, un nom d’
# Special:Categories
'categories' => 'Catégories',
-'categoriespagetext' => 'Les catégories suivantes sont utilisées par des pages ou fichiers.
+'categoriespagetext' => '{{PLURAL:$1|La catégorie suivante est utilisée|Les catégories suivantes sont utilisées}} par des pages ou fichiers.
[[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici.
Voyez aussi [[Special:WantedCategories|les catégories demandées]].',
'categoriesfrom' => 'Afficher les catégories à partir de :',
@@ -1909,8 +2036,9 @@ Voyez aussi [[Special:WantedCategories|les catégories demandées]].',
'special-categories-sort-abc' => 'tri alphabétique',
# Special:DeletedContributions
-'deletedcontributions' => 'Contributions supprimées',
-'deletedcontributions-title' => 'Contributions supprimées',
+'deletedcontributions' => 'Contributions supprimées',
+'deletedcontributions-title' => 'Contributions supprimées',
+'sp-deletedcontributions-contribs' => 'contributions',
# Special:LinkSearch
'linksearch' => 'Liens externes',
@@ -1926,6 +2054,16 @@ Protocoles reconnus : <tt>$1</tt>.',
'listusersfrom' => 'Afficher les utilisateurs à partir de :',
'listusers-submit' => 'Lister',
'listusers-noresult' => 'Aucun utilisateur trouvé. Vérifiez aussi les variantes de casse.',
+'listusers-blocked' => '(bloqué{{GENDER:$1||e|(e)}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste des utilisateurs actifs',
+'activeusers-intro' => 'Ceci est une liste des utilisateurs qui ont exercé une quelconque activité au cours {{PLURAL:$1|de la dernière journée|des $1 derniers jours}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|modification récente|modifications récentes}} dans {{PLURAL:$3|le dernier jour|les $3 derniers jours}}',
+'activeusers-from' => 'Afficher les utilisateurs depuis :',
+'activeusers-hidebots' => 'Masquer les robots',
+'activeusers-hidesysops' => 'Masquer les administrateurs',
+'activeusers-noresult' => 'Aucun utilisateur trouvé.',
# Special:Log/newusers
'newuserlogpage' => 'Journal des créations de comptes utilisateur',
@@ -1936,17 +2074,23 @@ Protocoles reconnus : <tt>$1</tt>.',
'newuserlog-autocreate-entry' => 'Compte créé automatiquement',
# Special:ListGroupRights
-'listgrouprights' => 'Droits des groupes d’utilisateurs',
-'listgrouprights-summary' => 'Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d’accès qui leur sont associés.
+'listgrouprights' => 'Droits des groupes d’utilisateurs',
+'listgrouprights-summary' => 'Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d’accès qui leur sont associés.
Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuvent exister au sujet des droits individuels.',
-'listgrouprights-group' => 'Groupe',
-'listgrouprights-rights' => 'Droits associés',
-'listgrouprights-helppage' => 'Help:Droits des groupes',
-'listgrouprights-members' => '(liste des membres)',
-'listgrouprights-addgroup' => 'Ajouter des membres {{PLURAL:$2|au groupe|aux groupes}} : $1',
-'listgrouprights-removegroup' => 'Retirer des membres {{PLURAL:$2|du groupe|des groupes}} : $1',
-'listgrouprights-addgroup-all' => 'Ajouter des membres à tous les groupes',
-'listgrouprights-removegroup-all' => 'Retirer des membres de tous les groupes',
+'listgrouprights-key' => '*<span class="listgrouprights-granted">Droit octroyé</span>
+*<span class="listgrouprights-revoked">Droit révoqué</span>',
+'listgrouprights-group' => 'Groupe',
+'listgrouprights-rights' => 'Droits associés',
+'listgrouprights-helppage' => 'Help:Droits des groupes',
+'listgrouprights-members' => '(liste des membres)',
+'listgrouprights-addgroup' => 'Ajouter des membres {{PLURAL:$2|au groupe|aux groupes}} : $1',
+'listgrouprights-removegroup' => 'Retirer des membres {{PLURAL:$2|du groupe|des groupes}} : $1',
+'listgrouprights-addgroup-all' => 'Ajouter des membres à tous les groupes',
+'listgrouprights-removegroup-all' => 'Retirer des membres de tous les groupes',
+'listgrouprights-addgroup-self' => 'Peut s’ajouter {{PLURAL:$2|le groupe|les groupes}} à son propre compte : $1',
+'listgrouprights-removegroup-self' => 'Peut se retirer {{PLURAL:$2|le groupe|les groupes}} de son propre compte : $1',
+'listgrouprights-addgroup-self-all' => 'Peut s’ajouter tous les groupes à son propre compte',
+'listgrouprights-removegroup-self-all' => 'Peut se retirer tous les groupes de son propre compte',
# E-mail user
'mailnologin' => 'Pas d’adresse d’expéditeur',
@@ -2036,7 +2180,10 @@ Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pa
--
Pour modifier les paramètres de votre liste de suivi, visitez
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Pour supprimer la page de votre liste de suivi, visitez
+$UNWATCHURL
Retour et assistance :
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2050,9 +2197,10 @@ Retour et assistance :
'exblank' => 'la page était vide',
'delete-confirm' => 'Supprimer « $1 »',
'delete-legend' => 'Supprimer',
-'historywarning' => 'Attention, la page que vous êtes sur le point de supprimer a un historique :',
+'historywarning' => "'''Attention :''' la page que vous êtes sur le point de supprimer a un historique qui contient approximativement $1 {{PLURAL:$1|révision|révisions}} :",
'confirmdeletetext' => 'Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c’est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].',
'actioncomplete' => 'Action effectuée',
+'actionfailed' => 'L’action a échoué',
'deletedtext' => '« <nowiki>$1</nowiki> » a été supprimé.
Voir $2 pour une liste des suppressions récentes.',
'deletedarticle' => 'a supprimé « [[$1]] »',
@@ -2076,21 +2224,22 @@ La supprimer peut perturber le fonctionnement de la base de données de {{SITENA
veuiller ne procéder qu’avec prudence.',
# Rollback
-'rollback' => 'Révoquer les modifications',
-'rollback_short' => 'Révoquer',
-'rollbacklink' => 'révoquer',
-'rollbackfailed' => 'La révocation a échoué',
-'cantrollback' => 'Impossible de révoquer la modification ;
+'rollback' => 'Révoquer les modifications',
+'rollback_short' => 'Révoquer',
+'rollbacklink' => 'révoquer',
+'rollbackfailed' => 'La révocation a échoué',
+'cantrollback' => 'Impossible de révoquer la modification ;
le dernier contributeur est le seul auteur de cette page.',
-'alreadyrolled' => 'Impossible de révoquer la dernière modification de la page « [[:$1]] » effectuée par [[User:$2|$2]] ([[User talk:$2|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+'alreadyrolled' => 'Impossible de révoquer la dernière modification de la page « [[:$1]] » effectuée par [[User:$2|$2]] ([[User talk:$2|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
quelqu’un d’autre a déjà modifié ou révoqué la page.
La dernière modification de la page a été effectuée par [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Le résumé de la modification était : « ''$1'' ».", # only shown if there is an edit comment
-'revertpage' => 'Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Révocation des modifications effectuées par $1 ;
+'editcomment' => "Le résumé de la modification était : « ''$1'' ».",
+'revertpage' => 'Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]]',
+'revertpage-nouser' => 'Révocation des modifications par (nom d’utilisateur supprimé) à la dernière version par [[User:$1|$1]]',
+'rollback-success' => 'Révocation des modifications effectuées par $1 ;
rétablissement de la dernière version par $2.',
-'sessionfailure' => 'Votre session de connexion semble avoir des problèmes ;
+'sessionfailure' => 'Votre session de connexion semble avoir des problèmes ;
cette action a été annulée en prévention d’un piratage de session.
Veuillez cliquer sur « Précédent », rechargez la page d’où vous venez, puis réessayez.',
@@ -2109,7 +2258,7 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
'protectexpiry' => 'Date d’expiration :',
'protect_expiry_invalid' => 'La date d’expiration est invalide.',
'protect_expiry_old' => 'La date d’expiration est déjà passée.',
-'protect-unchain' => 'Débloquer les permissions de déplacement',
+'protect-unchain-permissions' => 'Déverrouiller davantage d’options de protection',
'protect-text' => "Vous pouvez consulter et modifier le niveau de protection de la page '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Vous ne pouvez pas modifier les niveaux de protection tant que vous êtes bloqué{{GENDER:||e|(e)}}.
Voici les réglages actuels de la page '''$1''' :",
@@ -2138,7 +2287,7 @@ Voici les réglages actuels de la page '''$1''' :",
** Conflits de modifications contre-productives
** Page à fort trafic',
'protect-edit-reasonlist' => 'Modifier les motifs de protection',
-'protect-expiry-options' => '1 heure:1 hour,1 jour:1 day,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 heure:1 hour,1 jour:1 day,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite',
'restriction-type' => 'Permission :',
'restriction-level' => 'Niveau de restriction :',
'minimum-size' => 'Taille minimum',
@@ -2181,6 +2330,7 @@ Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou sup
'undelete-nodiff' => 'Aucune version précédente trouvée.',
'undeletebtn' => 'Restaurer',
'undeletelink' => 'visualiser/rétablir',
+'undeleteviewlink' => 'voir',
'undeletereset' => 'Réinitialiser',
'undeleteinvert' => 'Inverser la sélection',
'undeletecomment' => 'Motif :',
@@ -2220,19 +2370,23 @@ $1',
'contributions-title' => 'Liste des contributions de l’utilisateur $1',
'mycontris' => 'Contributions',
'contribsub2' => 'Pour $1 ($2)',
-'nocontribs' => 'Aucune modification correspondant à ces critères n’a été trouvée.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Aucune modification correspondant à ces critères n’a été trouvée.',
'uctop' => '(dernière)',
'month' => 'À partir du mois (et précédents) :',
'year' => 'À partir de l’année (et précédentes) :',
-'sp-contributions-newbies' => 'Ne montrer que les contributions des nouveaux utilisateurs',
-'sp-contributions-newbies-sub' => 'Parmi les nouveaux comptes',
-'sp-contributions-newbies-title' => 'Contributions d’utilisateurs parmi les nouveaux comptes',
-'sp-contributions-blocklog' => 'journal des blocages',
-'sp-contributions-logs' => 'journaux',
-'sp-contributions-search' => 'Rechercher les contributions',
-'sp-contributions-username' => 'Adresse IP ou nom d’utilisateur :',
-'sp-contributions-submit' => 'Rechercher',
+'sp-contributions-newbies' => 'Ne montrer que les contributions des nouveaux utilisateurs',
+'sp-contributions-newbies-sub' => 'Parmi les nouveaux comptes',
+'sp-contributions-newbies-title' => 'Contributions d’utilisateurs parmi les nouveaux comptes',
+'sp-contributions-blocklog' => 'journal des blocages',
+'sp-contributions-deleted' => 'contributions supprimées',
+'sp-contributions-logs' => 'journaux',
+'sp-contributions-talk' => 'discuter',
+'sp-contributions-userrights' => 'gérer les droits',
+'sp-contributions-blocked-notice' => 'Cet utilisateur est actuellement bloqué. La dernière entrée du journal des blocages est indiquée ci-dessous à titre d’information :',
+'sp-contributions-search' => 'Rechercher les contributions',
+'sp-contributions-username' => 'Adresse IP ou nom d’utilisateur :',
+'sp-contributions-submit' => 'Rechercher',
# What links here
'whatlinkshere' => 'Pages liées',
@@ -2255,6 +2409,7 @@ $1',
# Block/unblock
'blockip' => 'Bloquer l’utilisateur',
+'blockip-title' => 'Bloquer l’utilisateur',
'blockip-legend' => 'Bloquer l’utilisateur',
'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer l’accès aux modifications faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
Une telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].
@@ -2278,7 +2433,7 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont ét
'ipbenableautoblock' => 'Bloquer automatiquement la dernière adresse IP utilisée par l’utilisateur et toutes ses IPs ultérieures qu’il pourrait essayer',
'ipbsubmit' => 'Bloquer cet utilisateur',
'ipbother' => 'Autre durée :',
-'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite',
'ipbotheroption' => 'autre',
'ipbotherreason' => 'Motif différent ou supplémentaire :',
'ipbhidename' => 'Masquer le nom d’utilisateur des modifications et des listes',
@@ -2307,9 +2462,11 @@ Consultez la [[Special:IPBlockList|liste des adresses IP et comptes bloqués]] p
'ipblocklist-sh-tempblocks' => '$1 les blocages temporaires',
'ipblocklist-sh-addressblocks' => '$1 les blocages d’adresses IP uniques',
'ipblocklist-submit' => 'Rechercher',
+'ipblocklist-localblock' => 'Blocage local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
'blocklistline' => '$1 : $2 a bloqué $3 ; $4',
'infiniteblock' => 'permanent',
-'expiringblock' => 'expire le $1',
+'expiringblock' => 'expire le $1 à $2',
'anononlyblock' => 'utilisateur non enregistré uniquement',
'noautoblockblock' => 'blocage automatique désactivé',
'createaccountblock' => 'création de compte bloquée',
@@ -2324,7 +2481,8 @@ Consultez la [[Special:IPBlockList|liste des adresses IP et comptes bloqués]] p
'autoblocker' => 'Vous avez été bloqué automatiquement parce que votre adresse IP a été récemment utilisée par « [[User:$1|$1]] ».
Le motif fourni pour le blocage de $1 est : « $2 ».',
'blocklogpage' => 'Journal des blocages',
-'blocklog-fulllog' => 'Journal complet des blocages',
+'blocklog-showlog' => 'Cet utilisateur a été bloqué précédemment. Le journal des blocages est disponible ci-dessous :',
+'blocklog-showsuppresslog' => 'Cet utilisateur a été bloqué et caché précédemment. Le journal des suppressions est disponible ci-dessous :',
'blocklogentry' => 'a bloqué [[$1]] ; expiration : $2 $3',
'reblock-logentry' => 'a modifié les paramètres du blocage de [[$1]] avec une expiration au $2 $3',
'blocklogtext' => 'Ceci est le journal des actions de blocages et déblocages d’utilisateurs.
@@ -2345,11 +2503,13 @@ Consultez la [[Special:IPBlockList|liste des IP bloquées]] pour voir les bannis
'ipb_already_blocked' => '« $1 » est déjà bloqué',
'ipb-needreblock' => '== Déjà bloqué ==
$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
'ipb_cant_unblock' => 'Erreur : identifiant de blocage $1 non trouvé.
Il est possible qu’un déblocage ait déjà été effectué.',
'ipb_blocked_as_range' => 'Erreur : l’adresse IP $1 n’est pas bloquée directement et ne peut donc pas être débloquée.
Elle fait cependant partie de la plage $2 qui, elle, peut être débloquée.',
'ip_range_invalid' => 'Plage IP incorrecte.',
+'ip_range_toolarge' => 'Les blocages de plages plus grandes que /$1 ne sont pas autorisées.',
'blockme' => 'Bloquez-moi',
'proxyblocker' => 'Bloqueur de mandataires',
'proxyblocker-disabled' => 'Cette fonction est désactivée.',
@@ -2360,6 +2520,7 @@ Veuillez contacter votre fournisseur d’accès Internet ou votre support techni
'sorbs_create_account_reason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.
Vous ne pouvez pas créer un compte.',
'cant-block-while-blocked' => 'Vous ne pouvez pas bloquer d’autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}.',
+'cant-see-hidden-user' => "L’utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. N’ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
# Developer tools
'lockdb' => 'Verrouiller la base de données',
@@ -2398,6 +2559,7 @@ Ceci peut provoquer un changement radical et imprévu pour une page souvent cons
Dans ces cas-là, vous devrez renommer ou fusionner cette page de discussion manuellement si vous le désirez.",
'movearticle' => 'Renommer la page :',
+'moveuserpage-warning' => "'''Attention :''' Vous êtes sur le point de renommer une page d’utilisateur. Veuillez noter que seul la page sera renommée et que l’utilisateur '''ne''' sera '''pas''' renommé.",
'movenologin' => 'Vous n’êtes pas identifié{{GENDER:||e|(e)}}.',
'movenologintext' => 'Pour pouvoir renommer une page, vous devez être [[Special:UserLogin|identifié{{GENDER:||e|(e)}}]] avec un compte utilisateur enregistré et d’ancienneté suffisante.',
'movenotallowed' => 'Vous n’avez pas la permission de renommer les pages.',
@@ -2408,7 +2570,7 @@ Dans ces cas-là, vous devrez renommer ou fusionner cette page de discussion man
'move-watch' => 'Suivre les pages originale et nouvelle',
'movepagebtn' => 'Renommer la page',
'pagemovedsub' => 'Déplacement réussi',
-'movepage-moved' => "'''« $1 »''' a été renommé '''« $2 »'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''« $1 »''' a été renommé '''« $2 »'''",
'movepage-moved-redirect' => 'Une redirection depuis l’ancien nom a été créée.',
'movepage-moved-noredirect' => 'La création d’une redirection depuis l’ancien nom a été annulée.',
'articleexists' => 'Il existe déjà une page portant ce titre, ou le titre que vous avez choisi n’est pas correct.
@@ -2451,6 +2613,12 @@ impossible de renommer une page sur elle-même.',
'imageinvalidfilename' => 'Le nom du fichier cible est incorrect',
'fix-double-redirects' => 'Mettre à jour les redirections pointant vers le titre original',
'move-leave-redirect' => 'Laisser une redirection vers le nouveau titre',
+'protectedpagemovewarning' => "'''Attention :''' Cette page a été protégée afin que seuls les utilisateurs possédant les droits d’administrateur puissent la renommer. La dernière entrée du journal est affichée ci-dessous pour référence :",
+'semiprotectedpagemovewarning' => "'''Note :''' Cette page a été protégée afin que seuls les utilisateurs enregistrés puissent la renommer. La dernière entrée du journal est affichée ci-dessous pour référence :",
+'move-over-sharedrepo' => '== Le fichier existe ==
+[[:$1]] existe déjà sur un dépôt partagé. Renommer ce fichier rendra le fichier sur le dépôt partage inaccessible.',
+'file-exists-sharedrepo' => 'Le nom choisi est déjà utilisé par un fichier sur un dépôt partagé.
+Choisissez un autre nom.',
# Export
'export' => 'Exporter des pages',
@@ -2473,15 +2641,21 @@ Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Exp
'export-pagelinks' => 'Inclure les pages liées à une profondeur de :',
# Namespace 8 related
-'allmessages' => 'Messages système',
-'allmessagesname' => 'Nom du message',
-'allmessagesdefault' => 'Message par défaut',
-'allmessagescurrent' => 'Message actuel',
-'allmessagestext' => 'Ceci est la liste des messages disponibles dans l’espace MediaWiki.
+'allmessages' => 'Messages système',
+'allmessagesname' => 'Nom du message',
+'allmessagesdefault' => 'Message par défaut',
+'allmessagescurrent' => 'Message actuel',
+'allmessagestext' => 'Ceci est la liste des messages disponibles dans l’espace MediaWiki.
Veuillez visiter la [http://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [http://translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.',
-'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n’est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
-'allmessagesfilter' => 'Filtre de noms de message (expression rationnelle) :',
-'allmessagesmodified' => 'N’afficher que les modifications',
+'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n’est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
+'allmessages-filter-legend' => 'Filtrer',
+'allmessages-filter' => 'Filtrer par état de modification :',
+'allmessages-filter-unmodified' => 'Non modifié',
+'allmessages-filter-all' => 'Tous',
+'allmessages-filter-modified' => 'Modifié',
+'allmessages-prefix' => 'Filtrer par préfixe :',
+'allmessages-language' => 'Langue :',
+'allmessages-filter-submit' => 'Appliquer',
# Thumbnails
'thumbnail-more' => 'Agrandir',
@@ -2491,6 +2665,9 @@ Veuillez visiter la [http://www.mediawiki.org/wiki/Localisation Localisation de
'djvu_no_xml' => 'Impossible de récupérer le XML pour le fichier DjVu',
'thumbnail_invalid_params' => 'Paramètres de la miniature incorrects',
'thumbnail_dest_directory' => 'Impossible de créer le répertoire de destination',
+'thumbnail_image-type' => 'Type d’image non supporté',
+'thumbnail_gd-library' => 'Configuration incomplète de la bibliothèque GD : fonction $1 introuvable',
+'thumbnail_image-missing' => 'Le fichier suivant est introuvable : $1',
# Special:Import
'import' => 'Importer des pages',
@@ -2560,6 +2737,7 @@ Veuillez utiliser le bouton de prévisualisation avant d’enregistrer.',
Vous pouvez toutefois en visualiser la source.',
'tooltip-ca-history' => 'Les versions passées de cette page (avec leurs contributeurs)',
'tooltip-ca-protect' => 'Protéger cette page',
+'tooltip-ca-unprotect' => 'Déprotéger cette page',
'tooltip-ca-delete' => 'Supprimer cette page',
'tooltip-ca-undelete' => 'Rétablir les modifications faites sur cette page avant sa suppression',
'tooltip-ca-move' => 'Renommer cette page',
@@ -2570,6 +2748,7 @@ Vous pouvez toutefois en visualiser la source.',
'tooltip-search-fulltext' => 'Rechercher les pages comportant ce texte.',
'tooltip-p-logo' => 'Page principale',
'tooltip-n-mainpage' => 'Visiter la page d’accueil du site',
+'tooltip-n-mainpage-description' => 'Aller à l’accueil',
'tooltip-n-portal' => 'À propos du projet',
'tooltip-n-currentevents' => 'Trouver les informations de fond sur l’actualité du moment',
'tooltip-n-recentchanges' => 'Liste des modifications récentes sur le wiki',
@@ -2639,10 +2818,12 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
# Attribution
'anonymous' => '{{PLURAL:$1|Utilisateur non enregistré|Utilisateurs non enregistrés}} sur {{SITENAME}}',
'siteuser' => '{{GENDER:$2|l’utilisateur|l’utilisatrice|l’utilisateur}} $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'l’utilisateur anonyme $1 de {{SITENAME}}',
+'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.',
'othercontribs' => 'Basé sur le travail de $1.',
'others' => 'autres',
'siteusers' => '{{PLURAL:$2|l’utilisateur|les utilisateurs}} $1 de {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|l’utilisateur anonyme|les utilisateurs anonymes}} $1 de {{SITENAME}}',
'creditspage' => 'Crédits de la page',
'nocredits' => 'Il n’y a pas d’informations d’attribution disponibles pour cette page.',
@@ -2671,6 +2852,7 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'skinname-chick' => 'Poussin',
'skinname-simple' => 'Simple',
'skinname-modern' => 'Moderne',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Toujours produire une image PNG',
@@ -2680,11 +2862,22 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'mw_math_modern' => 'Pour les navigateurs modernes',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Erreur math',
+'math_unknown_error' => 'erreur indéterminée',
+'math_unknown_function' => 'fonction inconnue',
+'math_lexing_error' => 'erreur lexicale',
+'math_syntax_error' => 'erreur de syntaxe',
+'math_image_error' => 'La conversion en PNG a échoué ; vérifiez l’installation de LaTeX, dvips, gs et convert',
+'math_bad_tmpdir' => 'Impossible de créer ou d’écrire dans le répertoire math temporaire',
+'math_bad_output' => 'Impossible de créer ou d’écrire dans le répertoire math de sortie',
+'math_notexvc' => 'L’exécutable « texvc » est introuvable. Lisez math/README pour le configurer.',
+
# Patrolling
'markaspatrolleddiff' => 'Marquer comme patrouillée',
'markaspatrolledtext' => 'Marquer cette page comme patrouillée',
'markedaspatrolled' => 'Marqué comme patrouillé',
-'markedaspatrolledtext' => 'La version sélectionnée a été marquée comme non vandalisée.',
+'markedaspatrolledtext' => 'La révision sélectionnée de [[:$1]] a été marquée comme patrouillée.',
'rcpatroldisabled' => 'La fonction de patrouille des modifications récentes n’est pas activée.',
'rcpatroldisabledtext' => 'La fonctionnalité de patrouille des modifications récentes est actuellement désactivée.',
'markedaspatrollederror' => 'Ne peut être marquée comme patrouillée',
@@ -2714,13 +2907,10 @@ $1',
'previousdiff' => '← Modification précédente',
'nextdiff' => 'Modification suivante →',
-# Visual comparison
-'visual-comparison' => 'Comparaison visuelle',
-
# Media information
'mediawarning' => "'''Attention :''' ce type de fichier peut contenir du code malveillant.
Si vous l’exécutez, votre système peut être compromis.",
-'imagemaxsize' => 'Format maximal pour les images dans les pages de description d’images :',
+'imagemaxsize' => "Format maximal des images :<br />''(pour les pages de description d’images)''",
'thumbsize' => 'Taille de la miniature :',
'widthheightpage' => '$1 × $2, $3 page{{PLURAL:$3||s}}',
'file-info' => 'Taille du fichier : $1, type MIME : $2',
@@ -2729,6 +2919,8 @@ Si vous l’exécutez, votre système peut être compromis.",
'svg-long-desc' => '(Fichier SVG, résolution de $1 × $2 pixels, taille : $3)',
'show-big-image' => 'Image en plus haute résolution',
'show-big-image-thumb' => '<small>Taille de cet aperçu : $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'en boucle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|image|images}}',
# Special:NewFiles
'newimages' => 'Galerie des nouveaux fichiers',
@@ -2760,7 +2952,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largeur',
@@ -2887,14 +3079,14 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-unknowndate' => 'Date inconnue',
-'exif-orientation-1' => 'Normale', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Inversée horizontalement', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Tournée de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Inversée verticalement', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Tournée de 90° dans le sens antihoraire et inversée verticalement', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Tournée de 90° dans le sens horaire', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Tournée de 90° dans le sens horaire et inversée verticalement', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Tournée de 90° dans le sens antihoraire', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normale',
+'exif-orientation-2' => 'Inversée horizontalement',
+'exif-orientation-3' => 'Tournée de 180°',
+'exif-orientation-4' => 'Inversée verticalement',
+'exif-orientation-5' => 'Tournée de 90° dans le sens antihoraire et inversée verticalement',
+'exif-orientation-6' => 'Tournée de 90° dans le sens horaire',
+'exif-orientation-7' => 'Tournée de 90° dans le sens horaire et inversée verticalement',
+'exif-orientation-8' => 'Tournée de 90° dans le sens antihoraire',
'exif-planarconfiguration-1' => 'Données contiguës',
'exif-planarconfiguration-2' => 'Données séparées',
@@ -3021,7 +3213,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-gpsmeasuremode-2' => 'Mesure à 2 dimensions',
'exif-gpsmeasuremode-3' => 'Mesure à 3 dimensions',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilomètres à l’heure',
'exif-gpsspeed-m' => 'Milles à l’heure',
'exif-gpsspeed-n' => 'Nœud',
@@ -3040,6 +3232,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'watchlistall2' => 'tout',
'namespacesall' => 'Tous',
'monthsall' => 'tous',
+'limitall' => 'tous',
# E-mail address confirmation
'confirmemail' => 'Confirmer l’adresse de courriel',
@@ -3194,7 +3387,7 @@ Vous pouvez aussi [[Special:Watchlist/edit|utiliser l’éditeur normal]].',
'duplicate-defaultsort' => 'Attention : la clé de tri par défaut « $2 » écrase la précédente « $1 ».',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Extensions installées',
'version-specialpages' => 'Pages spéciales',
'version-parserhooks' => 'Greffons du parseur',
@@ -3208,7 +3401,7 @@ Vous pouvez aussi [[Special:Watchlist/edit|utiliser l’éditeur normal]].',
'version-skin-extension-functions' => 'Fonctions d’extension de l’interface',
'version-hook-name' => 'Nom du greffon',
'version-hook-subscribedby' => 'Abonnés :',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licence',
'version-software' => 'Logiciels installés',
'version-software-product' => 'Produit',
@@ -3289,4 +3482,15 @@ Entrez le nom du fichier sans le préfixe « {{ns:file}}: ».',
'dberr-outofdate' => 'Notez que leurs index de notre contenu peuvent être dépassés.',
'dberr-cachederror' => 'Ceci est une copie cachée de la page demandée et peut être dépassée.',
+# HTML forms
+'htmlform-invalid-input' => 'Des problèmes sont survenus avec certaines valeurs',
+'htmlform-select-badoption' => 'La valeur que vous avez spécifiée n’est pas une option valide.',
+'htmlform-int-invalid' => 'La valeur que vous avec spécifiée n’est pas un entier.',
+'htmlform-float-invalid' => 'La valeur que vous avez spécifiée n’est pas un nombre.',
+'htmlform-int-toolow' => 'La valeur que vous avez spécifiée est plus petite que le minimum de $1',
+'htmlform-int-toohigh' => 'La valeur que vous avez spécifiée est plus grande que le maximum de $1',
+'htmlform-submit' => 'Soumettre',
+'htmlform-reset' => 'Défaire les modifications',
+'htmlform-selectorother-other' => 'Autre',
+
);
diff --git a/languages/messages/MessagesFrc.php b/languages/messages/MessagesFrc.php
index a840e881..ef8f8bcc 100644
--- a/languages/messages/MessagesFrc.php
+++ b/languages/messages/MessagesFrc.php
@@ -129,10 +129,16 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: Questions Souvent Posées]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Liste à Malle]',
-'about' => 'Info',
-'article' => 'Page des matières',
-'newwindow' => '(va ouverre une nouvelle fenêtre)',
-'cancel' => 'Arrêter',
+'about' => 'Info',
+'article' => 'Page des matières',
+'newwindow' => '(va ouverre une nouvelle fenêtre)',
+'cancel' => 'Arrêter',
+'moredotdotdot' => 'Plus...',
+'mypage' => 'Ma page',
+'mytalk' => 'Ma page de discussion',
+'anontalk' => 'Discussion avec cette adresse IP',
+
+# Cologne Blue skin
'qbfind' => 'Charcher',
'qbbrowse' => 'Regarder',
'qbedit' => 'Changer',
@@ -140,13 +146,8 @@ $messages = array(
'qbpageinfo' => "Page d'information",
'qbmyoptions' => 'Mes options',
'qbspecialpages' => 'Pages espéciales',
-'moredotdotdot' => 'Plus...',
-'mypage' => 'Ma page',
-'mytalk' => 'Ma page de discussion',
-'anontalk' => 'Discussion avec cette adresse IP',
-
-# Metadata in edit box
-'metadata_help' => 'Meta-information:',
+'faq' => 'Questions Communes',
+'faqpage' => 'Project:Questions Communes',
'errorpagetitle' => 'Erreur',
'returnto' => 'Retourner back à la page $1.',
@@ -192,7 +193,7 @@ $messages = array(
'otherlanguages' => 'Autres langues',
'redirectedfrom' => '(Envoyé ici de la page $1)',
'redirectpagesub' => 'Page de redirection',
-'lastmodifiedat' => 'Cette page a été changée le $1 à $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Cette page a été changée le $1 à $2.',
'viewcount' => 'Cette page a été visitée {{PLURAL:$1|$1 fois|$1 fois}}.',
'protectedpage' => 'Page protégée',
'jumpto' => 'Aller à:',
@@ -202,7 +203,6 @@ $messages = array(
'aboutsite' => "Qui c'est {{SITENAME}}?",
'aboutpage' => 'Project:Info',
'copyright' => 'Les matières sont avalable en accord avec $1',
-'copyrightpagename' => '{{SITENAME}} Protection de Droits',
'copyrightpage' => '{{ns:project}}:Protection de Droits',
'currentevents' => 'Événements',
'currentevents-url' => 'Project:Événements',
@@ -210,8 +210,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avertissements ordinaires',
'edithelp' => 'Aide',
'edithelppage' => 'Help:Comment changer une page',
-'faq' => 'Questions Communes',
-'faqpage' => 'Project:Questions Communes',
'helppage' => 'Help:Aide',
'mainpage' => 'Page Principale',
'mainpage-description' => 'Page Principale',
@@ -277,10 +275,6 @@ La dernière demande faite dans la base d\'information était:
"$1"
dedans la fonction "$2".
MySQL a retourné l\'erreur "$3: $4".',
-'noconnect' => "Ça nous fait de la peine! Le wiki est après avoir des problèmes et peut pas contacter la base d'information. <br />
-$1",
-'nodb' => "Impossible de choisir la base d'information $1",
-'cachederror' => "Ça ici, c'est une copie en cache de la page demandée qu'est peut-être pas courante.",
'laggedslavemode' => 'Avertissement: La page est peut-être pas renouvelée.',
'readonly' => "La base d'information est barrée.",
'enterlockreason' => "Écrire une raison pour le barrage avec un temps estimé
@@ -323,7 +317,6 @@ $2',
'ns-specialprotected' => "Vous pouvez pas changer les pages dans l'espace de noms {{ns:special}}.",
# Login and logout pages
-'logouttitle' => 'Déconnecter',
'logouttext' => "'''Vous êtes déconnecté asteur.'''
Vous pouvez continuer à user {{SITENAME}} sans nom ou vous pouvez connecter encore une fois avec le même nom ou un autre nom.
@@ -331,7 +324,6 @@ Notez: certaines pages pourriont être vues comme si vous êtes connecté, jusqu
'welcomecreation' => '== Bonjour, $1! ==
Votre compte a été créé. Oubliez pas de changer votre réglage sus {{SITENAME}}.',
-'loginpagetitle' => 'Connecter',
'yourname' => "Nom d'useur:",
'yourpassword' => 'Mot de passe:',
'yourpasswordagain' => 'Mot de passe encore:',
@@ -353,17 +345,7 @@ Votre compte a été créé. Oubliez pas de changer votre réglage sus {{SITENA
'createaccountmail' => 'par e-mail',
'badretype' => 'Les mots de passe que vous avez mis sont pas pareils.',
'userexists' => "Le nom d'useur choisi est déjà usé. Choissez donc un autre nom.",
-'username' => "Nom d'useur:",
-'uid' => "Numéro d'useur:",
-'yourrealname' => 'Vrai nom:',
-'yourlanguage' => 'Langue:',
-'yourvariant' => 'Différent:',
-'yournick' => "'Tit nom:",
-'badsig' => 'Votre signature brute est pas bonne. Regardez-voir les tags HTML.',
-'badsiglength' => "Votre 'tit nom est trop long. Il faut que ça soye moins que $1 caractères.",
-'prefs-help-realname' => 'Votre vrai nom est pas nécessaire. Si vous choisirait de le mettre, ça serait usé pour vous donner du crédit pour votre ouvrage.',
'loginerror' => "Erreur d'identification",
-'prefs-help-email' => "Votre adresse e-mail est pas nécessaire, mais ça quitte le monde vous contacter par votre page d'useur ou votre page de discussion sans montrer votre identité.",
'nocookiesnew' => "Votre compte a été créé, mais vous êtes pas connecté. {{SITENAME}} use les cookies pour connecter les useurs. Partez les cookies et connectez avec votre nouveau nom d'useur et votre mot de passe, s'il vous plaît.",
'nocookieslogin' => '{{SITENAME}} use les cookies pour connecter les useurs. Partez donc les cookies et assayez encore.',
'noname' => "Vous avez pas mis un bon nom d'useur.",
@@ -397,14 +379,13 @@ Si quèqu\'une d\'autre a demandé ce mot de passe ou si vous vous rappelez de v
'loginlanguagelabel' => 'Langue: $1',
# Password reset dialog
-'resetpass' => 'Rétablir le mot de passe du compte',
-'resetpass_announce' => "Pour le moment, vous êtes connecté avec un mot de passe qu'a été envoyé par e-mail. Pour finir de vous connecter, il faut créer un nouveau mot de passe ici:",
-'resetpass_text' => '<!-- Mettez du texte ici -->',
-'resetpass_header' => 'Rétablir le mot de passe',
-'resetpass_submit' => 'Créer le mot de passe et connecter',
-'resetpass_success' => 'Vous avez bien changé votre mot de passe! On est après vous connecter...',
-'resetpass_bad_temporary' => 'Mauvais mot de passe de peu de durée. Il est possible que vous avez déjà changé votre mot de passe ou demandé un nouveau mot de passe de peu de durée.',
-'resetpass_forbidden' => 'Vous pouvez pas changer votre mot de passe sus ce wiki ici.',
+'resetpass' => 'Rétablir le mot de passe du compte',
+'resetpass_announce' => "Pour le moment, vous êtes connecté avec un mot de passe qu'a été envoyé par e-mail. Pour finir de vous connecter, il faut créer un nouveau mot de passe ici:",
+'resetpass_text' => '<!-- Mettez du texte ici -->',
+'resetpass_header' => 'Rétablir le mot de passe',
+'resetpass_submit' => 'Créer le mot de passe et connecter',
+'resetpass_success' => 'Vous avez bien changé votre mot de passe! On est après vous connecter...',
+'resetpass_forbidden' => 'Vous pouvez pas changer votre mot de passe sus ce wiki ici.',
# Edit page toolbar
'bold_sample' => 'Gras',
@@ -429,23 +410,23 @@ Si quèqu\'une d\'autre a demandé ce mot de passe ou si vous vous rappelez de v
'hr_tip' => 'Ligne horizontale (Abusez-lé pas.)',
# Edit pages
-'summary' => 'Description:',
-'subject' => 'Sujet:',
-'minoredit' => "Ça ici, c'est un petit changement.",
-'watchthis' => 'Guetter cette page',
-'savearticle' => 'Sauver la page',
-'preview' => "Vue d'avance",
-'showpreview' => "Vue d'avance",
-'showlivepreview' => "Vue d'avance vite",
-'showdiff' => 'Montrer les changements',
-'anoneditwarning' => "'''Attention:''' Vous êtes pas connecté. Votre adresse IP vas être sauvée dans la liste des changements pour cette page.",
-'missingsummary' => "'''Attention:''' Vous avez pas mis de description. Si vous cliquez le bouton \"Sauver\" encore, votre changement va être sauvé sans description.",
-'missingcommenttext' => 'Mettez donc un commentaire en bas.',
-'missingcommentheader' => "'''Attention :''' Vous avez pas mis de sujet pour ce commentaire. Si vous cliquez le bouton \"Sauver\" encore, votre changement va être sauvé sans sujet.",
-'summary-preview' => "Vue d'avance de la description:",
-'subject-preview' => "Vue d'avance du sujet:",
-'blockedtitle' => "L'useur est bloqué",
-'blockedtext' => "'''Votre compte d'useur (ou votre adresse IP) est bloqué.'''
+'summary' => 'Description:',
+'subject' => 'Sujet:',
+'minoredit' => "Ça ici, c'est un petit changement.",
+'watchthis' => 'Guetter cette page',
+'savearticle' => 'Sauver la page',
+'preview' => "Vue d'avance",
+'showpreview' => "Vue d'avance",
+'showlivepreview' => "Vue d'avance vite",
+'showdiff' => 'Montrer les changements',
+'anoneditwarning' => "'''Attention:''' Vous êtes pas connecté. Votre adresse IP vas être sauvée dans la liste des changements pour cette page.",
+'missingsummary' => "'''Attention:''' Vous avez pas mis de description. Si vous cliquez le bouton \"Sauver\" encore, votre changement va être sauvé sans description.",
+'missingcommenttext' => 'Mettez donc un commentaire en bas.',
+'missingcommentheader' => "'''Attention :''' Vous avez pas mis de sujet pour ce commentaire. Si vous cliquez le bouton \"Sauver\" encore, votre changement va être sauvé sans sujet.",
+'summary-preview' => "Vue d'avance de la description:",
+'subject-preview' => "Vue d'avance du sujet:",
+'blockedtitle' => "L'useur est bloqué",
+'blockedtext' => "'''Votre compte d'useur (ou votre adresse IP) est bloqué.'''
Le blocage a été fait par $1. La raison donnée est ''$2''.
@@ -454,7 +435,7 @@ Le blocage a été fait par $1. La raison donnée est ''$2''.
* L'useur bloqué: $7
Vous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour discuter le blocage. Vous pouvez pas user la fonction 'envoyer un e-mail à cet useur' hormis que vous avez une adresse e-mail confirmée dans votre [[Special:Preferences|réglage de compte]] et vous avez la permission de l'user. Votre adresse IP est $3, et le numéro du blocage est #$5. Mettez donc cette information dans toutes vos demandes.",
-'autoblockedtext' => "Le système a bloqué votre adresse IP parce qu'alle a été usée par un autre useur qu'était bloqué par $1.
+'autoblockedtext' => "Le système a bloqué votre adresse IP parce qu'alle a été usée par un autre useur qu'était bloqué par $1.
La raison donnée est: ''$2''
@@ -466,77 +447,77 @@ Vous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrat
Notez donc que vous pouvez pas user la fonction 'envoyer un e-mail à cet useur' hormis que vous avez une adresse e-mail confirmée dans votre [[Special:Preferences|réglage de compte]] et vous avez la permission de l'user.
Votre numéro de blocage est #$5. Mettez donc cette information dans toutes vos demandes.",
-'blockedoriginalsource' => "La source de '''$1''' est montrée en bas.",
-'blockededitsource' => "Le texte de '''votres changements''' à '''$1''' est montré en bas.",
-'whitelistedittitle' => 'Il faut connecter pour faire des changements.',
-'whitelistedittext' => 'Il faut $1 pour faire des changements.',
-'confirmedittitle' => 'Il faut confirmer votre adresse e-mail pour faire des changements.',
-'confirmedittext' => "Il faut confirmer votre adresse e-mail pour faire des changements. Mettez et confirmez un adresse e-mail dans votre [[Special:Preferences|réglage de compte]], s'il vous plaît.",
-'nosuchsectiontitle' => 'Aucune section pareille',
-'nosuchsectiontext' => "Vous avez assayé de faire des changements dans une section qu'existe pas.",
-'loginreqtitle' => 'Il faut connecter.',
-'loginreqlink' => 'connecter',
-'loginreqpagetext' => 'Il faut $1 pour voir des autres pages.',
-'accmailtitle' => 'Mot de passe envoyé.',
-'accmailtext' => 'Le mot de passe pour "$1" a été envoyé à $2.',
-'newarticle' => '(Nouveau)',
-'newarticletext' => "Vous avez suit un lien à une page qu'existe pas encore.
+'blockedoriginalsource' => "La source de '''$1''' est montrée en bas.",
+'blockededitsource' => "Le texte de '''votres changements''' à '''$1''' est montré en bas.",
+'whitelistedittitle' => 'Il faut connecter pour faire des changements.',
+'whitelistedittext' => 'Il faut $1 pour faire des changements.',
+'confirmedittext' => "Il faut confirmer votre adresse e-mail pour faire des changements. Mettez et confirmez un adresse e-mail dans votre [[Special:Preferences|réglage de compte]], s'il vous plaît.",
+'nosuchsectiontitle' => 'Aucune section pareille',
+'nosuchsectiontext' => "Vous avez assayé de faire des changements dans une section qu'existe pas.",
+'loginreqtitle' => 'Il faut connecter.',
+'loginreqlink' => 'connecter',
+'loginreqpagetext' => 'Il faut $1 pour voir des autres pages.',
+'accmailtitle' => 'Mot de passe envoyé.',
+'accmailtext' => 'Le mot de passe pour "$1" a été envoyé à $2.',
+'newarticle' => '(Nouveau)',
+'newarticletext' => "Vous avez suit un lien à une page qu'existe pas encore.
Pour créer la page, mettez des mots dans la boëte en bas (voyez la [[{{MediaWiki:Helppage}}|page d'aide]] pour plus d'information).
Si vous êtes ici par erreur, cliquez le bouton \"back\" sus votre navigateur.",
-'anontalkpagetext' => "----''Ça ici, c'est la page de discussion pour un useur sans nom qu'a pas encore créé un compte ou qui l'use pas. Ça fait, il faut user l'adresse IP numérique pour l'identifier. Une adresse comme ça pourrait être usée par plusieurs useurs. Si vous êtes un useur sans nom et vous croyez que des messages sans rapport ont été envoyés à vous, [[Special:UserLogin|créer un compte ou connecter]] pour empêcher la confusion avec des autres useurs sans nom dans l'avenir.''",
-'noarticletext' => 'À présent, y a pas de texte sus cette page.
+'anontalkpagetext' => "----''Ça ici, c'est la page de discussion pour un useur sans nom qu'a pas encore créé un compte ou qui l'use pas. Ça fait, il faut user l'adresse IP numérique pour l'identifier. Une adresse comme ça pourrait être usée par plusieurs useurs. Si vous êtes un useur sans nom et vous croyez que des messages sans rapport ont été envoyés à vous, [[Special:UserLogin|créer un compte ou connecter]] pour empêcher la confusion avec des autres useurs sans nom dans l'avenir.''",
+'noarticletext' => 'À présent, y a pas de texte sus cette page.
Vous pouvez [[Special:Search/{{PAGENAME}}|charcher pour le titre de cette page]] dans des autres pages, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} charcher dans les notes parents], ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} changer cette page]</span>.',
-'clearyourcache' => "'''Notez:''' Après que vous avez sauvé votres changements, il foudra peut-être dépasser le cache de votre navigateur pour voir les changements. '''Mozilla / Firefox / Safari:''' Tenez le bouton ''Shift'' en pèsant ''Reload'', ou pèsez ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sus Apple Mac); '''IE:''' Tenez ''Ctrl'' en pèsant ''Refresh'', ou pèsez ''Ctrl-F5''; '''Konqueror:''' Simplement pèsez le bouton ''Reload'', ou pèsez ''F5''; Pour les useurs de '''Opera''', il foudra peut-être vider complètement le cache dans ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Conseil:''' Usez le bouton \"Vue d'avance\" pour tester votre nouvelle feuille CSS/JS avant de la sauver.",
-'usercsspreview' => "'''Rappelez-vous que vous êtes après regarder votre feuille CSS qu'a pas encore été sauvée!'''",
-'userjspreview' => "'''Rappelez-vous que vous êtes juste après regarder ou tester votre code JavaScript qu'a pas encore été sauvé!'''",
-'userinvalidcssjstitle' => "'''Attention:''' Y a pas de style \"\$1\". Rappelez-vous qu'il faut user les petites lettres dans le sujet des pages personnelles avec les extensions .css et .js.
+'clearyourcache' => "'''Notez:''' Après que vous avez sauvé votres changements, il foudra peut-être dépasser le cache de votre navigateur pour voir les changements. '''Mozilla / Firefox / Safari:''' Tenez le bouton ''Shift'' en pèsant ''Reload'', ou pèsez ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sus Apple Mac); '''IE:''' Tenez ''Ctrl'' en pèsant ''Refresh'', ou pèsez ''Ctrl-F5''; '''Konqueror:''' Simplement pèsez le bouton ''Reload'', ou pèsez ''F5''; Pour les useurs de '''Opera''', il foudra peut-être vider complètement le cache dans ''Tools→Preferences''.",
+'usercssyoucanpreview' => "'''Conseil:''' Usez le bouton \"Vue d'avance\" pour tester votre nouvelle feuille CSS avant de la sauver.",
+'userjsyoucanpreview' => "'''Conseil:''' Usez le bouton \"Vue d'avance\" pour tester votre nouvelle feuille JS avant de la sauver.",
+'usercsspreview' => "'''Rappelez-vous que vous êtes après regarder votre feuille CSS qu'a pas encore été sauvée!'''",
+'userjspreview' => "'''Rappelez-vous que vous êtes juste après regarder ou tester votre code JavaScript qu'a pas encore été sauvé!'''",
+'userinvalidcssjstitle' => "'''Attention:''' Y a pas de style \"\$1\". Rappelez-vous qu'il faut user les petites lettres dans le sujet des pages personnelles avec les extensions .css et .js.
Exemple: {{ns:user}}:Foo/monobook.css (bon) {{ns:user}}:Foo/Monobook.css (mauvais)",
-'updated' => '(Renouvelé)',
-'note' => "'''Notez:'''",
-'previewnote' => "'''Ça ici, c'est juste une vue d'avance; les changements ont pas encore été sauvés!'''",
-'previewconflict' => "Cette vue d'avance montre le texte qu'est dans la boëte de changements en haut comme ça serait si vous choisirait de le sauver.",
-'session_fail_preview' => "'''Ça fait de la peine! Votre changement pouvait pas être sauvé à cause d'une perte d'information de la session. Assayez donc encore. Si ça travaille pas toujours, assayez de déconnecter et reconnecter.'''",
-'session_fail_preview_html' => "'''Ça fait de la peine! Votre changement pouvait pas être sauvé à cause d'une perte d'information de votre session.'''
+'updated' => '(Renouvelé)',
+'note' => "'''Notez:'''",
+'previewnote' => "'''Ça ici, c'est juste une vue d'avance; les changements ont pas encore été sauvés!'''",
+'previewconflict' => "Cette vue d'avance montre le texte qu'est dans la boëte de changements en haut comme ça serait si vous choisirait de le sauver.",
+'session_fail_preview' => "'''Ça fait de la peine! Votre changement pouvait pas être sauvé à cause d'une perte d'information de la session. Assayez donc encore. Si ça travaille pas toujours, assayez de déconnecter et reconnecter.'''",
+'session_fail_preview_html' => "'''Ça fait de la peine! Votre changement pouvait pas être sauvé à cause d'une perte d'information de votre session.'''
''La vue d'avance est cachée pour empêcher les attaques JavaScript parce que ce wiki use le HTML brute.''
'''Si ça ici est un changement juste, assayez donc encore. Si ça travaille pas toujours, assayez de déconnecter et reconnecter.'''",
-'token_suffix_mismatch' => "'''Votre changement pouvait pas être accepté parce que votre navigateur a mélangé les caractères de ponctuation dans l'indication des changements. Le changement a été rejeté pour empêcher la corruption du texte de l'article. Ça arrive des fois quand vous êtes après user un proxy sans nom.'''",
-'editing' => 'Changement de $1',
-'editingsection' => 'Changement de $1 (section)',
-'editingcomment' => 'Changement de $1 (remarque)',
-'editconflict' => 'Dispute de changement: $1',
-'explainconflict' => "Quèqu'une d'autre a changé cette page depuis vous avez commencé à la changer.
+'token_suffix_mismatch' => "'''Votre changement pouvait pas être accepté parce que votre navigateur a mélangé les caractères de ponctuation dans l'indication des changements. Le changement a été rejeté pour empêcher la corruption du texte de l'article. Ça arrive des fois quand vous êtes après user un proxy sans nom.'''",
+'editing' => 'Changement de $1',
+'editingsection' => 'Changement de $1 (section)',
+'editingcomment' => 'Changement de $1 (remarque)',
+'editconflict' => 'Dispute de changement: $1',
+'explainconflict' => "Quèqu'une d'autre a changé cette page depuis vous avez commencé à la changer.
La boëtte de changements en haut contient le texte de la page comme c'est asteur.
Vos changements sont montrés dans la boëtte de changements en bas.
Il foudra que vous mettez vos changements dans le texte qu'est là asteur.
'''Juste''' le texte dans la boëtte de changements en haut va être sauvé quand vous pèsez \"Sauvez\".",
-'yourtext' => 'Votre texte',
-'storedversion' => 'Version sauvée',
-'nonunicodebrowser' => "'''ATTENTION: Votre navigateur supporte pas les caractères unicode. Une solution de peu de durée a été trouvée pour que vous peuvez changer des articles sans problèmes. Les caractères qui sont pas ASCII va apparaître dans la boëte de changements comme des codes hexadécimaux.'''",
-'editingold' => "'''ATTENTION: Vous êtes après changer une vieille version de cette page. Si vous le sauverait, vous perdrait n'importe quels changements faits depuis cette version.'''",
-'yourdiff' => 'Différences',
-'copyrightwarning' => "Notez donc que toutes les contributions à {{SITENAME}} sont considérées d'être libérées sous le $2 (voyez $1 pour les détails). Si vous voulez pas que votre écriture soye changée sans pitié et redistribuée à volonté, mettez donc pas votre écriture ici.<br /> Vous êtes après nous promettre aussi que vous l'avez écrit vous-même ou que vous l'avez copié du domain public ou un autre ressource libre. ''' METTEZ PAS DE L'OUVRAGE SOUS COPYRIGHT ICI SANS PERMISSION!'''",
-'copyrightwarning2' => "Notez donc que toutes les contributions à {{SITENAME}} pourriont être changées ou ôtées par des autres useurs. Si vous voulez pas que votre écriture soye changée sans pitié, mettez donc pas votre écriture ici.<br /> Vous êtes après nous promettre aussi que vous l'avez écrit vous-même ou que vous l'avez copié du domain public ou un autre ressource libre (voyez $1 pour les détails). ''' METTEZ PAS DE L'OUVRAGE SOUS COPYRIGHT ICI SANS PERMISSION!'''",
-'longpagewarning' => "'''ATTENTION: Cette page a une taille de $1 kilobytes; ça pourrait créer des problèmes quand un useur assaye de changer une page qu'a une taille qu'est plus grande que 32 kb. Considérez donc de couper la page en morceaux plus courts.'''",
-'longpageerror' => "'''ERREUR: Le texte que vous avec mis a une taille de $1 kilobytes qu'est plus grande que le maximum de $2 kilobytes. Ça peut pas être sauvé.'''",
-'readonlywarning' => "'''ATTENTION: La base d'information a été barrée, ça fait, vous serez pas capable de sauver votres changements asteur. Vous ferait mieux de copier et coller le texte dans un dossier texte et le sauver pour plus tard.'''",
-'protectedpagewarning' => "'''ATTENTION: Cette page a été barrée pour que ça peuve être changée juste par les administrateurs.'''",
-'semiprotectedpagewarning' => "'''Notez:''' Cette page a été barrée pour que ça peuve être changé juste par les useurs connectés.",
-'cascadeprotectedwarning' => "'''Attention :''' Cette page est protégée (ne peut être modifiée que par les administrateurs) parce qu’elle est incluse par {{PLURAL:$1|une page protégée|des pages protégées}} avec la protection en cascade activée :",
-'templatesused' => 'Patrons usés sus cette page:',
-'templatesusedpreview' => "Patrons usés dans cette vue d'avance:",
-'templatesusedsection' => 'Patrons usés dans cette section:',
-'template-protected' => '(protégé)',
-'template-semiprotected' => '(demi-protégé)',
-'edittools' => "<!-- Le texte que vous mettez ici va être montré sous les boëttes de changements ou d'import de dossier. -->",
-'nocreatetitle' => 'Création de page limitée',
-'nocreatetext' => "La création des pages est limitée. Vous pouvez changer une page qu'a été déjà créée ou [[Special:UserLogin|connecter ou créer un compte]].",
-'nocreate-loggedin' => 'Vous avez pas la permission de créer des nouvelles pages.',
-'permissionserrors' => 'Erreur de permissions',
-'permissionserrorstext' => 'Vous avez pas la permission de faire ça pour {{PLURAL:$1|cette raison|ces raisons}}:',
-'recreate-deleted-warn' => "'''Attention: Vous êtes après recréer une page qu'a déjà été ôtée.'''
+'yourtext' => 'Votre texte',
+'storedversion' => 'Version sauvée',
+'nonunicodebrowser' => "'''ATTENTION: Votre navigateur supporte pas les caractères unicode. Une solution de peu de durée a été trouvée pour que vous peuvez changer des articles sans problèmes. Les caractères qui sont pas ASCII va apparaître dans la boëte de changements comme des codes hexadécimaux.'''",
+'editingold' => "'''ATTENTION: Vous êtes après changer une vieille version de cette page. Si vous le sauverait, vous perdrait n'importe quels changements faits depuis cette version.'''",
+'yourdiff' => 'Différences',
+'copyrightwarning' => "Notez donc que toutes les contributions à {{SITENAME}} sont considérées d'être libérées sous le $2 (voyez $1 pour les détails). Si vous voulez pas que votre écriture soye changée sans pitié et redistribuée à volonté, mettez donc pas votre écriture ici.<br /> Vous êtes après nous promettre aussi que vous l'avez écrit vous-même ou que vous l'avez copié du domain public ou un autre ressource libre. ''' METTEZ PAS DE L'OUVRAGE SOUS COPYRIGHT ICI SANS PERMISSION!'''",
+'copyrightwarning2' => "Notez donc que toutes les contributions à {{SITENAME}} pourriont être changées ou ôtées par des autres useurs. Si vous voulez pas que votre écriture soye changée sans pitié, mettez donc pas votre écriture ici.<br /> Vous êtes après nous promettre aussi que vous l'avez écrit vous-même ou que vous l'avez copié du domain public ou un autre ressource libre (voyez $1 pour les détails). ''' METTEZ PAS DE L'OUVRAGE SOUS COPYRIGHT ICI SANS PERMISSION!'''",
+'longpagewarning' => "'''ATTENTION: Cette page a une taille de $1 kilobytes; ça pourrait créer des problèmes quand un useur assaye de changer une page qu'a une taille qu'est plus grande que 32 kb. Considérez donc de couper la page en morceaux plus courts.'''",
+'longpageerror' => "'''ERREUR: Le texte que vous avec mis a une taille de $1 kilobytes qu'est plus grande que le maximum de $2 kilobytes. Ça peut pas être sauvé.'''",
+'readonlywarning' => "'''ATTENTION: La base d'information a été barrée, ça fait, vous serez pas capable de sauver votres changements asteur. Vous ferait mieux de copier et coller le texte dans un dossier texte et le sauver pour plus tard.'''",
+'protectedpagewarning' => "'''ATTENTION: Cette page a été barrée pour que ça peuve être changée juste par les administrateurs.'''",
+'semiprotectedpagewarning' => "'''Notez:''' Cette page a été barrée pour que ça peuve être changé juste par les useurs connectés.",
+'cascadeprotectedwarning' => "'''Attention :''' Cette page est protégée (ne peut être modifiée que par les administrateurs) parce qu’elle est incluse par {{PLURAL:$1|une page protégée|des pages protégées}} avec la protection en cascade activée :",
+'templatesused' => 'Patrons usés sus cette page:',
+'templatesusedpreview' => "Patrons usés dans cette vue d'avance:",
+'templatesusedsection' => 'Patrons usés dans cette section:',
+'template-protected' => '(protégé)',
+'template-semiprotected' => '(demi-protégé)',
+'edittools' => "<!-- Le texte que vous mettez ici va être montré sous les boëttes de changements ou d'import de dossier. -->",
+'nocreatetitle' => 'Création de page limitée',
+'nocreatetext' => "La création des pages est limitée. Vous pouvez changer une page qu'a été déjà créée ou [[Special:UserLogin|connecter ou créer un compte]].",
+'nocreate-loggedin' => 'Vous avez pas la permission de créer des nouvelles pages.',
+'permissionserrors' => 'Erreur de permissions',
+'permissionserrorstext' => 'Vous avez pas la permission de faire ça pour {{PLURAL:$1|cette raison|ces raisons}}:',
+'recreate-moveddeleted-warn' => "'''Attention: Vous êtes après recréer une page qu'a déjà été ôtée.'''
Vous devrait considérer si c'est à propos de continuer à changer cette page.
Les notes d'ôtage pour cette page sont données ici pour vous aider:",
@@ -554,7 +535,7 @@ Les notes d'ôtage pour cette page sont données ici pour vous aider:",
'nohistory' => 'Y a pas de changements pour cette page.',
'currentrev' => 'Version courante',
'revisionasof' => 'Version depuis le $1',
-'revision-info' => 'Version depuis le $1 par $2', # Additionally available: $3: revision id
+'revision-info' => 'Version depuis le $1 par $2',
'previousrevision' => '←Version avant',
'nextrevision' => 'Version après→',
'currentrevisionlink' => 'Version courante',
@@ -565,7 +546,6 @@ Les notes d'ôtage pour cette page sont données ici pour vous aider:",
'page_last' => 'dernier',
'histlegend' => 'Choisir une version: Marquez les ronds pour les versions que vous voulez comparer et cliquez "enter" ou le bouton en bas.<br />
Clé: (cour.) = différence avec la version courante, (dernier) = différence avec la version avant, m = petit changement.',
-'deletedrev' => '[ôté]',
'histfirst' => 'Premiers changements',
'histlast' => 'Derniers changements',
'historyempty' => '(vide)',
@@ -573,7 +553,7 @@ Clé: (cour.) = différence avec la version courante, (dernier) = différence av
# Revision feed
'history-feed-title' => 'Détails des changements',
'history-feed-description' => 'Détails des changements pour cette page sus le wiki',
-'history-feed-item-nocomment' => '$1 le $2', # user at time
+'history-feed-item-nocomment' => '$1 le $2',
'history-feed-empty' => 'La page que vous avez demandé est pas là.
Ça a peut-être été ôté du wiki, ou renommé.
Assayez de [[Special:Search|charcher dans le wiki]] pour des nouvelles pages.',
@@ -582,8 +562,8 @@ Assayez de [[Special:Search|charcher dans le wiki]] pour des nouvelles pages.',
'rev-deleted-comment' => '(remarque ôtée)',
'rev-deleted-user' => "(nom d'useur ôté)",
'rev-deleted-event' => '(message ôté)',
-'rev-deleted-text-permission' => "Cette page a été ôtée de la liste des pages publiques. Il pourrait y avoir des détails dans les [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} notes d'ôtage].",
-'rev-deleted-text-view' => "Cette version de la page a été ôtée de la liste des pages publiques. Comme administrateur sus ce wiki vous pouvez le voir; il pourrait y avoir des détails dans les [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} notes d'ôtage].",
+'rev-deleted-text-permission' => "Cette page a été ôtée de la liste des pages publiques. Il pourrait y avoir des détails dans les [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} notes d'ôtage].",
+'rev-deleted-text-view' => "Cette version de la page a été ôtée de la liste des pages publiques. Comme administrateur sus ce wiki vous pouvez le voir; il pourrait y avoir des détails dans les [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} notes d'ôtage].",
'rev-delundel' => 'montrer/cacher',
'revisiondelete' => 'Ôter/rétablir les changements',
'revdelete-nooldid-title' => 'Aucun changement choisi',
@@ -595,12 +575,12 @@ Assayez de [[Special:Search|charcher dans le wiki]] pour des nouvelles pages.',
Des autres administrateurs sus ce wiki ont la permission de voir et de rétablir les morceaux cachés hormis qu'y aye des restrictions.",
'revdelete-legend' => 'Mettre des restrictions',
'revdelete-hide-text' => 'Cacher le texte de la version',
+'revdelete-hide-image' => "Cacher l'information du dossier",
'revdelete-hide-name' => "Cacher l'action et l'objet",
'revdelete-hide-comment' => 'Cacher la remarque du changement',
'revdelete-hide-user' => "Cacher le nom ou l'adresse IP de l'useur",
'revdelete-hide-restricted' => 'Appliquer ces restrictions aux administrateurs et les autres useurs',
'revdelete-suppress' => "Ôter de l'information des administrateurs et les autres useurs",
-'revdelete-hide-image' => "Cacher l'information du dossier",
'revdelete-unsuppress' => 'Ôter les restrictions des versions rétablies',
'revdelete-log' => 'Raison:',
'revdelete-submit' => 'Appliquer à la version choisie',
@@ -622,13 +602,26 @@ Des autres administrateurs sus ce wiki ont la permission de voir et de rétablir
'searchhelp-url' => 'Help:Aide',
# Preferences page
-'preferences' => 'Réglage',
-'mypreferences' => 'Mon réglage',
-'skin-preview' => "Vue d'avance",
+'preferences' => 'Réglage',
+'mypreferences' => 'Mon réglage',
+'skin-preview' => "Vue d'avance",
+'username' => "Nom d'useur:",
+'uid' => "Numéro d'useur:",
+'yourrealname' => 'Vrai nom:',
+'yourlanguage' => 'Langue:',
+'yourvariant' => 'Différent:',
+'yournick' => "'Tit nom:",
+'badsig' => 'Votre signature brute est pas bonne. Regardez-voir les tags HTML.',
+'badsiglength' => "Votre 'tit nom est trop long. Il faut que ça soye moins que $1 caractères.",
+'prefs-help-realname' => 'Votre vrai nom est pas nécessaire. Si vous choisirait de le mettre, ça serait usé pour vous donner du crédit pour votre ouvrage.',
+'prefs-help-email' => "Votre adresse e-mail est pas nécessaire, mais ça quitte le monde vous contacter par votre page d'useur ou votre page de discussion sans montrer votre identité.",
# User rights
'editinguser' => "Changement de '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
+# File description page
+'file-anchor-link' => 'Dossier',
+
# Miscellaneous special pages
'move' => 'Renommer',
'movethispage' => 'Renommer cette page',
@@ -646,4 +639,6 @@ Des autres administrateurs sus ce wiki ont la permission de voir et de rétablir
'contributions' => "Changements de l'useur",
'mycontris' => 'Mes changements',
+'sp-contributions-talk' => 'Discuter',
+
);
diff --git a/languages/messages/MessagesFrp.php b/languages/messages/MessagesFrp.php
index 70f5c7ed..25a4ed21 100644
--- a/languages/messages/MessagesFrp.php
+++ b/languages/messages/MessagesFrp.php
@@ -13,7 +13,6 @@
$fallback = 'fr';
-
$bookstoreList = array(
'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1',
'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&',
@@ -24,20 +23,262 @@ $bookstoreList = array(
$namespaceNames = array(
NS_MEDIA => 'Mèdia',
NS_SPECIAL => 'Spèciâl',
- NS_TALK => 'Discutar',
+ NS_TALK => 'Discussion',
NS_USER => 'Utilisator',
- NS_USER_TALK => 'Discussion_Utilisator',
+ NS_USER_TALK => 'Discussion_utilisator',
NS_PROJECT_TALK => 'Discussion_$1',
- NS_FILE => 'Émâge',
- NS_FILE_TALK => 'Discussion_Émâge',
+ NS_FILE => 'Fichiér',
+ NS_FILE_TALK => 'Discussion_fichiér',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
NS_TEMPLATE => 'Modèlo',
- NS_TEMPLATE_TALK => 'Discussion_Modèlo',
+ NS_TEMPLATE_TALK => 'Discussion_modèlo',
NS_HELP => 'Éde',
- NS_HELP_TALK => 'Discussion_Éde',
+ NS_HELP_TALK => 'Discussion_éde',
NS_CATEGORY => 'Catègorie',
- NS_CATEGORY_TALK => 'Discussion_Catègorie',
+ NS_CATEGORY_TALK => 'Discussion_catègorie',
+);
+
+$namespaceAliases = array(
+ 'Discutar' => NS_TALK,
+ 'Discussion_Utilisator' => NS_USER_TALK,
+ 'Émâge' => NS_FILE,
+ 'Discussion_Émâge' => NS_FILE_TALK,
+ 'Discussion_Modèlo' => NS_TEMPLATE_TALK,
+ 'Discussion_Éde' => NS_HELP_TALK,
+ 'Discussion_Catègorie' => NS_CATEGORY_TALK
+);
+
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'Redirèccions dobles', 'RedirèccionsDobles' ),
+ 'BrokenRedirects' => array( 'Redirèccions câsses', 'RedirèccionsCâsses' ),
+ 'Disambiguations' => array( 'Homonimia', 'Homonimies', 'Pâges d\'homonimia', 'PâgesDHomonimia' ),
+ 'Userlogin' => array( 'Branchiér', 'Branchement' ),
+ 'Userlogout' => array( 'Dèbranchiér', 'Dèbranchement' ),
+ 'CreateAccount' => array( 'Fâre un compto', 'FâreUnCompto' ),
+ 'Preferences' => array( 'Prèferences' ),
+ 'Watchlist' => array( 'Lista de survelyence', 'ListaDeSurvelyence', 'Survelyence' ),
+ 'Recentchanges' => array( 'Dèrriérs changements', 'DèrriérsChangements' ),
+ 'Upload' => array( 'Tèlèchargiér', 'Tèlèchargement' ),
+ 'Listfiles' => array( 'Lista des fichiérs', 'ListaDesFichiérs', 'Lista de les émâges', 'ListaDeLesÉmâges' ),
+ 'Newimages' => array( 'Novéls fichiérs', 'NovélsFichiérs', 'Émâges novèles', 'ÉmâgesNovèles' ),
+ 'Listusers' => array( 'Lista ux utilisators', 'ListaUxUtilisators', 'Utilisators' ),
+ 'Listgrouprights' => array( 'Lista des drêts a les tropes d\'utilisators', 'ListaDesDrêtsALesTropesDUtilisators' ),
+ 'Statistics' => array( 'Statistiques' ),
+ 'Randompage' => array( 'Pâge a l\'hasârd', 'PâgeALHasârd' ),
+ 'Lonelypages' => array( 'Pâges orfenes', 'PâgesOrfenes' ),
+ 'Uncategorizedpages' => array( 'Pâges sen catègorie', 'PâgesSenCatègorie' ),
+ 'Uncategorizedcategories' => array( 'Catègories sen catègorie', 'CatègoriesSenCatègorie' ),
+ 'Uncategorizedimages' => array( 'Fichiérs sen catègorie', 'FichiérsSenCatègorie', 'Émâges sen catègorie', 'ÉmâgesSenCatègorie' ),
+ 'Uncategorizedtemplates' => array( 'Modèlos sen catègorie', 'ModèlosSenCatègorie' ),
+ 'Unusedcategories' => array( 'Catègories inutilisâs', 'CatègoriesInutilisâs' ),
+ 'Unusedimages' => array( 'Fichiérs inutilisâs', 'FichiérsInutilisâs', 'Émâges inutilisâs', 'ÉmâgesInutilisâs' ),
+ 'Wantedpages' => array( 'Pâges les ples demandâs', 'PâgesLesPlesDemandâs', 'Lims câssos', 'LimsCâssos' ),
+ 'Wantedcategories' => array( 'Catègories les ples demandâs', 'CatègoriesLesPlesDemandâs' ),
+ 'Wantedfiles' => array( 'Fichiérs los ples demandâs', 'FichiérsLosPlesDemandâs' ),
+ 'Wantedtemplates' => array( 'Modèlos los ples demandâs', 'ModèlosLosPlesDemandâs' ),
+ 'Mostlinked' => array( 'Pâges les ples liyês', 'PâgesLesPlesLiyês' ),
+ 'Mostlinkedcategories' => array( 'Catègories les ples liyês', 'CatègoriesLesPlesLiyês', 'Catègories les ples utilisâs', 'CatègoriesLesPlesUtilisâs' ),
+ 'Mostlinkedtemplates' => array( 'Modèlos los ples liyês', 'ModèlosLosPlesLiyês', 'Modèlos los ples utilisâs', 'ModèlosLosPlesUtilisâs' ),
+ 'Mostimages' => array( 'Fichiérs los ples liyês', 'FichiérsLosPlesLiyês', 'Fichiérs los ples utilisâs', 'FichiérsLosPlesUtilisâs', 'Émâges les ples liyês', 'ÉmâgesLesPlesLiyês', 'Émâges les ples utilisâs', 'ÉmâgesLesPlesUtilisâs' ),
+ 'Mostcategories' => array( 'Pâges utilisent lo més de catègories', 'PâgesUtilisentLoMésDeCatègories' ),
+ 'Mostrevisions' => array( 'Pâges les ples changiês', 'PâgesLesPlesChangiês' ),
+ 'Fewestrevisions' => array( 'Pâges les muens changiês', 'PâgesLesMuensChangiês' ),
+ 'Shortpages' => array( 'Pâges côrtes', 'PâgesCôrtes' ),
+ 'Longpages' => array( 'Pâges longes', 'PâgesLonges' ),
+ 'Newpages' => array( 'Pâges novèles', 'PâgesNovèles' ),
+ 'Ancientpages' => array( 'Pâges les muens dèrriérement changiês', 'PâgesLesMuensDèrriérementChangiês' ),
+ 'Deadendpages' => array( 'Pâges en cul-de-sac', 'PâgesEnCulDeSac' ),
+ 'Protectedpages' => array( 'Pâges protègiês', 'PâgesProtègiês' ),
+ 'Protectedtitles' => array( 'Titros protègiês', 'TitrosProtègiês' ),
+ 'Allpages' => array( 'Totes les pâges', 'TotesLesPâges' ),
+ 'Prefixindex' => array( 'Endèxe des prèfixos', 'EndèxeDesPrèfixos' ),
+ 'Ipblocklist' => array( 'Lista des blocâjos', 'ListaDesBlocâjos', 'Blocâjos', 'Utilisators blocâs', 'UtilisatorsBlocâs', 'Adrèces IP blocâs', 'AdrècesIPBlocâs' ),
+ 'Specialpages' => array( 'Pâges spèciâles', 'PâgesSpèciâles' ),
+ 'Contributions' => array( 'Contribucions' ),
+ 'Emailuser' => array( 'Mandar un mèssâjo', 'MandarUnMèssâjo', 'Mèssâjo' ),
+ 'Confirmemail' => array( 'Confirmar l\'adrèce èlèctronica', 'ConfirmarLAdrèceÈlèctronica' ),
+ 'Whatlinkshere' => array( 'Pâges liyês', 'PâgesLiyês' ),
+ 'Recentchangeslinked' => array( 'Survelyence des lims', 'SurvelyenceDesLims' ),
+ 'Movepage' => array( 'Renomar una pâge', 'RenomarUnaPâge', 'Changement de nom', 'ChangementDeNom' ),
+ 'Blockme' => array( 'Blocâd-mè', 'BlocâdMè' ),
+ 'Booksources' => array( 'Ôvres de refèrence', 'ÔvresDeRefèrence' ),
+ 'Categories' => array( 'Catègories' ),
+ 'Export' => array( 'Èxportar', 'Èxportacion' ),
+ 'Version' => array( 'Vèrsion' ),
+ 'Allmessages' => array( 'Mèssâjos sistèmo', 'MèssâjosSistèmo' ),
+ 'Log' => array( 'Jornal', 'Jornals' ),
+ 'Blockip' => array( 'Blocar', 'Blocâjo' ),
+ 'Undelete' => array( 'Refâre', 'Rèstoracion' ),
+ 'Import' => array( 'Importar', 'Importacion' ),
+ 'Lockdb' => array( 'Vèrrolyér la bâsa de balyês', 'VèrrolyérLaBâsaDeBalyês' ),
+ 'Unlockdb' => array( 'Dèvèrrolyér la bâsa de balyês', 'DèvèrrolyérLaBâsaDeBalyês' ),
+ 'Userrights' => array( 'Drêts d\'utilisator', 'DrêtsDUtilisator' ),
+ 'MIMEsearch' => array( 'Rechèrche per tipo de contegnu MIME', 'RechèrchePerTipoDeContegnuMIME' ),
+ 'FileDuplicateSearch' => array( 'Rechèrche des fichiérs en doblo', 'RechèrcheDesFichiérsEnDoblo' ),
+ 'Unwatchedpages' => array( 'Pâges pas siuvues', 'PâgesPasSiuvues' ),
+ 'Listredirects' => array( 'Lista de les redirèccions', 'ListaDeLesRedirèccions' ),
+ 'Revisiondelete' => array( 'Vèrsions suprimâs', 'VèrsionsSuprimâs' ),
+ 'Unusedtemplates' => array( 'Modèlos inutilisâs', 'ModèlosInutilisâs' ),
+ 'Randomredirect' => array( 'Redirèccion a l\'hasârd', 'RedirèccionALHasârd' ),
+ 'Mypage' => array( 'Ma pâge', 'MaPâge' ),
+ 'Mytalk' => array( 'Mes discussions', 'MesDiscussions' ),
+ 'Mycontributions' => array( 'Mes contribucions', 'MesContribucions' ),
+ 'Listadmins' => array( 'Lista ux administrators', 'ListaUxAdministrators' ),
+ 'Listbots' => array( 'Lista ux bots', 'ListaUxBots' ),
+ 'Popularpages' => array( 'Pâges les ples consultâs', 'PâgesLesPlesConsultâs' ),
+ 'Search' => array( 'Rechèrchiér', 'Rechèrche' ),
+ 'Resetpass' => array( 'Changement de mot de pâssa', 'ChangementDeMotDePâssa' ),
+ 'Withoutinterwiki' => array( 'Pâges sen lims entèrlengoues', 'PâgesSenLimsEntèrlengoues', 'Pâges sen lims entèrvouiqui', 'PâgesSenLimsEntèrvouiqui' ),
+ 'MergeHistory' => array( 'Fusionar los historicos', 'FusionarLosHistoricos' ),
+ 'Filepath' => array( 'Chemin d\'accès du fichiér', 'CheminDAccèsDuFichiér' ),
+ 'Invalidateemail' => array( 'Envalidar l\'adrèce èlèctronica', 'EnvalidarLAdrèceÈlèctronica' ),
+ 'Blankpage' => array( 'Pâge voueda', 'PâgeVoueda' ),
+ 'LinkSearch' => array( 'Rechèrche de lims', 'RechèrcheDeLims' ),
+ 'DeletedContributions' => array( 'Contribucions suprimâs', 'ContribucionsSuprimâs' ),
+ 'Tags' => array( 'Balises' ),
+ 'Activeusers' => array( 'Utilisators actifs', 'UtilisatorsActifs' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#REDIRÈCCION', '#REDIRECTION', '#REDIRECT' ),
+ 'notoc' => array( '0', '__NION_SOMÈRO__', '__NIONA_TRÂBLA__', '__AUCUNSOMMAIRE__', '__AUCUNETDM__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__NIONA_GALERIE__', '__AUCUNEGALERIE__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORCIÉR_LO_SOMÈRO__', '__FORCIÉR_LA_TRÂBLA__', '__FORCERSOMMAIRE__', '__FORCERTDM__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__SOMÈRO__', '__TRÂBLA__', '__SOMMAIRE__', '__TDM__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__SÈCCION_QUE_PÔT_PAS_ÉTRE_CHANGIÊ__', '__SECTIONNONEDITABLE__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__NION_EN_TÉTA___', '__AUCUNENTETE__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MÊS_D_ORA', 'MÊS_D_ORA_2', 'MOISACTUEL', 'MOIS2ACTUEL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MÊS_D_ORA_1', 'MOIS1ACTUEL', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NOM_DU_MÊS_D_ORA', 'NOMMOISACTUEL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'GÈNITIF_DU_NOM_DU_MÊS_D_ORA', 'NOMGENMOISACTUEL', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ABRÈV_DU_MÊS_D_ORA', 'ABREVMOISACTUEL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'JORN_D_ORA', 'JOURACTUEL', 'JOUR1ACTUEL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'JORN_D_ORA_2', 'JOUR2ACTUEL', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOM_DU_JORN_D_ORA', 'NOMJOURACTUEL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'AN_D_ORA', 'ANNEEACTUELLE', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'HORÈRO_D_ORA', 'HORAIREACTUEL', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HORA_D_ORA', 'HEUREACTUELLE', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MÊS_LOCAL', 'MÊS_LOCAL_2', 'MOISLOCAL', 'MOIS2LOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MÊS_LOCAL_1', 'MOIS1LOCAL', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'NOM_DU_MÊS_LOCAL', 'NOMMOISLOCAL', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'GÈNITIF_DU_NOM_DU_MÊS_LOCAL', 'NOMGENMOISLOCAL', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ABRÈV_DU_MÊS_LOCAL', 'ABREVMOISLOCAL', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'JORN_LOCAL', 'JOURLOCAL', 'JOUR1LOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'JORN_LOCAL_2', 'JOUR2LOCAL', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NOM_DU_JORN_LOCAL', 'NOMJOURLOCAL', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'AN_LOCAL', 'ANNEELOCALE', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'HORÈRO_LOCAL', 'HORAIRELOCAL', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'HORA_LOCALA', 'HEURELOCALE', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'NOMBRO_DE_PÂGES', 'NOMBREPAGES', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NOMBRO_D_ARTICLLOS', 'NOMBREARTICLES', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NOMBRO_DE_FICHIÉRS', 'NOMBREFICHIERS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NOMBRO_D_UTILISATORS', 'NOMBREUTILISATEURS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NOMBRO_D_UTILISATORS_ACTIFS', 'NOMBREUTILISATEURSACTIFS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NOMBRO_DE_CHANGEMENTS', 'NOMBREMODIFS', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NOMBRO_DE_VUES', 'NOMBREVUES', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NOM_DE_LA_PÂGE', 'NOMPAGE', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NOM_DE_LA_PÂGE_URL', 'NOMPAGEX', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ÈSPÂÇO_DE_NOMS', 'ESPACENOMMAGE', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ÈSPÂÇO_DE_NOMS_URL', 'ESPACENOMMAGEX', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ÈSPÂÇO_DE_DISCUSSION', 'ESPACEDISCUSSION', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ÈSPÂÇO_DE_DISCUSSION_URL', 'ESPACEDISCUSSIONX', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ÈSPÂÇO_DU_SUJÈT', 'ÈSPÂÇO_DE_L_ARTICLLO', 'ESPACESUJET', 'ESPACEARTICLE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ÈSPÂÇO_DU_SUJÈT_URL', 'ÈSPÂÇO_DE_L_ARTICLLO_URL', 'ESPACESUJETX', 'ESPACEARTICLEX', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NOM_COMPLÈT_DE_LA_PÂGE', 'NOMPAGECOMPLET', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NOM_COMPLÈT_DE_LA_PÂGE_URL', 'NOMPAGECOMPLETX', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NOM_DE_LA_SOT_PÂGE', 'NOMSOUSPAGE', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NOM_DE_LA_SOT_PÂGE_URL', 'NOMSOUSPAGEX', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NOM_DE_LA_PÂGE_DE_BÂSA', 'NOMBASEDEPAGE', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NOM_DE_LA_PÂGE_DE_BÂSA_URL', 'NOMBASEDEPAGEX', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NOM_DE_LA_PÂGE_DE_DISCUSSION', 'NOMPAGEDISCUSSION', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NOM_DE_LA_PÂGE_DE_DISCUSSION_URL', 'NOMPAGEDISCUSSIONX', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NOM_DE_LA_PÂGE_DU_SUJÈT', 'NOM_DE_LA_PÂGE_DE_L_ARTICLLO', 'NOMPAGESUJET', 'NOMPAGEARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NOM_DE_LA_PÂGE_DU_SUJÈT_URL', 'NOM_DE_LA_PÂGE_DE_L_ARTICLLO_URL', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'MSJ:', 'MSG:' ),
+ 'msgnw' => array( '0', 'MSJNW:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'figura', 'vignette', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'figura=$1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'drêta', 'droite', 'right' ),
+ 'img_left' => array( '1', 'gôche', 'gauche', 'left' ),
+ 'img_none' => array( '1', 'vouedo', 'néant', 'neant', 'none' ),
+ 'img_center' => array( '1', 'centrâ', 'centré', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'sen câdro', 'sans_cadre', 'sans cadre', 'non encadré', 'non encadre', 'frameless' ),
+ 'img_page' => array( '1', 'pâge=$1', 'pâge $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'drêt', 'drêt=$1', 'drêt $1', 'redresse', 'redresse=$1', 'redresse $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'bordura', 'bordure', 'border' ),
+ 'img_baseline' => array( '1', 'legne de bâsa', 'ligne de base', 'base', 'baseline' ),
+ 'img_sub' => array( '1', 'segno', 'indice', 'ind', 'sub' ),
+ 'img_super' => array( '1', 'èxposent', 'èxp', 'exposant', 'exp', 'super', 'sup' ),
+ 'img_top' => array( '1', 'd\'amont', 'haut', 'top' ),
+ 'img_text_top' => array( '1', 'tèxto-d\'amont', 'haut-texte', 'haut-txt', 'text-top' ),
+ 'img_middle' => array( '1', 'entre-mié', 'milieu', 'middle' ),
+ 'img_bottom' => array( '1', 'd\'avâl', 'bas', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'tèxto-d\'avâl', 'bas-texte', 'bas-txt', 'text-bottom' ),
+ 'img_link' => array( '1', 'lim=$1', 'lien=$1', 'link=$1' ),
+ 'int' => array( '0', 'ENT:', 'INT:' ),
+ 'sitename' => array( '1', 'NOM_DU_SETO', 'NOMSITE', 'SITENAME' ),
+ 'ns' => array( '0', 'ÈDN:', 'ESPACEN:', 'NS:' ),
+ 'nse' => array( '0', 'ÈDN_URL:', 'ESPACENX:', 'NSE:' ),
+ 'localurl' => array( '0', 'URL_LOCALA:', 'URLLOCALE:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URL_LOCALA_URL:', 'URLLOCALEX:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'SÈRVOR', 'SERVEUR', 'SERVER' ),
+ 'servername' => array( '0', 'NOM_DU_SÈRVOR', 'NOMSERVEUR', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'CHEMIN_DE_SCRIPTE', 'CHEMINSCRIPT', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'GRAMÈRE:', 'GRAMMAIRE:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GENRO:', 'GENRE:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__SEN_CONVÈRSION_DE_TITRO__', '__SANSCONVERSIONTITRE__', '__SANSCT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__SEN_CONVÈRSION_DE_CONTEGNU__', '__SANSCONVERSIONCONTENU__', '__SANSCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEMANA_D_ORA', 'SEMAINEACTUELLE', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'JDS_D_ORA', 'JDSACTUEL', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'SEMANA_LOCALA', 'SEMAINELOCALE', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'JDS_LOCAL', 'JDSLOCAL', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'ID_DE_LA_VÈRSION', 'IDVERSION', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'JORN_DE_LA_VÈRSION', 'JOURVERSION', 'JOUR1VERSION', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'JORN_DE_LA_VÈRSION_2', 'JOUR2VERSION', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MÊS_DE_LA_VÈRSION', 'MOISVERSION', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'AN_DE_LA_VÈRSION', 'ANNEEVERSION', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'DÂTA_ET_HORA_DE_LA_VÈRSION', 'INSTANTVERSION', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'UTILISATOR_DE_LA_VÈRSION', 'UTILISATEURVERSION', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'PLURÂL:', 'PLURIEL:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'URL_COMPLÈTA:', 'URLCOMPLETE:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URL_COMPLÈTA_URL:', 'URLCOMPLETEX:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'PREMIÉRE_PETIÔTA_LÈTRA:', 'INITMINUS:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'PREMIÉRE_GRANTA_LÈTRA:', 'INITMAJUS:', 'INITCAPIT:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'PETIÔTA_LÈTRA:', 'MINUS:', 'LC:' ),
+ 'uc' => array( '0', 'GRANTA_LÈTRA:', 'MAJUS:', 'CAPIT:', 'UC:' ),
+ 'raw' => array( '0', 'BRUTO:', 'BRUT:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'FÂRE_VÊRE_LO_TITRO', 'AFFICHERTITRE', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'B', 'BRUT', 'R' ),
+ 'newsectionlink' => array( '1', '__LIM_DE_NOVÈLA_SÈCCION__', '__LIENNOUVELLESECTION__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__NION_LIM_DE_NOVÈLA_SÈCCION__', '__AUCUNLIENNOUVELLESECTION__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'VÈRSION_D_ORA', 'VERSIONACTUELLE', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'URL_ENCODÂ:', 'ENCODEURL:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'ANCRO_ENCODÂ', 'ENCODEANCRE', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'DÂTA_ET_HORA_D_ORA', 'INSTANTACTUEL', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'DÂTA_ET_HORA_LOCALA', 'INSTANTLOCAL', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'MÂRCA_DE_DIRÈCCION', 'MARQUEDIRECTION', 'MARQUEDIR', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#LENGOUA:', '#LANGUE:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'LENGOUA_DU_CONTEGNU', 'LANGUECONTENU', 'LANGCONTENU', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'PÂGES_DENS_L_ÈSPÂÇO_DE_NOMS:', 'PÂGES_DENS_L_ÈDN:', 'PAGESDANSESPACE:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'NOMBRO_D_ADMINS', 'NOMBREADMINS', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'FORMAT_NOMBRO', 'FORMATNOMBRE', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'BORRÂJO_A_GÔCHE', 'BOURRAGEGAUCHE', 'BOURREGAUCHE', 'PADLEFT' ),
+ 'padright' => array( '0', 'BORRÂJO_A_DRÊTA', 'BOURRAGEDROITE', 'BOURREDROITE', 'PADRIGHT' ),
+ 'special' => array( '0', 'spèciâl', 'spécial', 'special' ),
+ 'defaultsort' => array( '1', 'CLLÂF_DE_TRI:', 'CLEFDETRI:', 'CLEDETRI:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'CHEMIN_D_ACCÈS:', 'CHEMIN:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'balisa', 'balise', 'tag' ),
+ 'hiddencat' => array( '1', '__CATÈGORIE_CACHIÊ__', '__CATCACHEE__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'PÂGES_DENS_LA_CATÈGORIE', 'PAGESDANSCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'TALYE_DE_LA_PÂGE', 'TAILLEPAGE', 'PAGESIZE' ),
+ 'index' => array( '1', '__ENDÈXE__', '__INDEX__' ),
+ 'noindex' => array( '1', '__NION_ENDÈXE__', '__AUCUNINDEX__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NOMBRO_D_UTILISATORS_DENS_LA_TROPA', 'NOMBREDANSGROUPE', 'NBDANSGROUPE', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRÈCCION_IMOBILA__', '__REDIRECTIONSTATIQUE__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVÉL_DE_PROTÈCCION', 'NIVEAUDEPROTECTION', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'format de dâta', 'formatdate', 'dateformat' ),
);
$linkTrail = '/^([a-zàâçéèêîœôû·’æäåāăëēïīòöōùü‘]+)(.*)$/sDu';
@@ -89,6 +330,7 @@ $messages = array(
'tog-enotifminoredits' => 'M’avèrtir per mèssageria èlèctronica mémo en câs de petiôts changements',
'tog-enotifrevealaddr' => 'Fâre vêre mon adrèce èlèctronica dens los mèssâjos d’avèrtissement',
'tog-shownumberswatching' => 'Fâre vêre lo nombro d’utilisators que siuvont les pâges',
+'tog-oldsig' => 'Prèvisualisacion de la signatura ègzistenta :',
'tog-fancysig' => 'Trètar la signatura coment de vouiquitèxto (sen lim ôtomatico)',
'tog-externaleditor' => 'Utilisar per dèfôt un èditor de tèxto de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator)',
'tog-externaldiff' => 'Utilisar per dèfôt un comparator de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator)',
@@ -112,6 +354,13 @@ $messages = array(
'underline-never' => 'jamés',
'underline-default' => 'd’aprés lo navigator',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stilo de la police de la bouèta d’èdicion :',
+'editfont-default' => 'Celi per dèfôt du navigator',
+'editfont-monospace' => 'Police monoèspâciê',
+'editfont-sansserif' => 'Police sen empiotament',
+'editfont-serif' => 'Police avouéc empiotaments',
+
# Dates
'sunday' => 'demenge',
'monday' => 'delon',
@@ -171,7 +420,7 @@ $messages = array(
'category-media-header' => 'Fichiérs multimèdia dens la catègorie « $1 »',
'category-empty' => "''Ora, ceta catègorie contint gins de pâge, de sot-catègorie ou ben de fichiér multimèdia.''",
'hidden-categories' => '{{PLURAL:$1|Catègorie cachiê|Catègories cachiês}}',
-'hidden-category-category' => 'Catègories cachiês', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Catègories cachiês',
'category-subcat-count' => 'Ceta catègorie at {{PLURAL:$2|ren que la sot-catègorie|$2 sot-catègories, que {{PLURAL:$1|cela|les $1}}}} ce-desot.',
'category-subcat-count-limited' => 'Ceta catègorie at {{PLURAL:$1|la sot-catègorie|les $1 sot-catègories}} ce-desot.',
'category-article-count' => 'Ceta catègorie contint {{PLURAL:$2|ren que la pâge|$2 pâges, que {{PLURAL:$1|cela|les $1}}}} ce-desot.',
@@ -179,6 +428,8 @@ $messages = array(
'category-file-count' => 'Ceta catègorie contint {{PLURAL:$2|ren que lo fichiér|$2 fichiérs, que {{PLURAL:$1|celi|los $1}}}} ce-desot.',
'category-file-count-limited' => '{{PLURAL:$1|Ceti fichiér figure|Cetos $1 fichiérs figuront}} dens la presenta catègorie.',
'listingcontinuesabbrev' => '(suita)',
+'index-category' => 'Pâges endèxâs',
+'noindex-category' => 'Pâges pas endèxâs',
'mainpagetext' => "'''MediaWiki at étâ enstalâ avouéc reusséta.'''",
'mainpagedocfooter' => 'Vêde lo [http://meta.wikimedia.org/wiki/Aide:Contenu guido d’utilisator] por més d’enformacions sur l’usâjo de la programeria vouiqui.
@@ -188,10 +439,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FDQ sur MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussion sur les distribucions de MediaWiki]',
-'about' => 'A propôs',
-'article' => 'Pâge de contegnu',
-'newwindow' => '(ôvre una fenétra novèla)',
-'cancel' => 'Anular',
+'about' => 'A propôs',
+'article' => 'Pâge de contegnu',
+'newwindow' => '(ôvre una fenétra novèla)',
+'cancel' => 'Anular',
+'moredotdotdot' => 'Et ples...',
+'mypage' => 'Ma pâge',
+'mytalk' => 'Pâge de discussion',
+'anontalk' => 'Discussion avouéc ceta adrèce IP',
+'navigation' => 'Navigacion',
+'and' => '&#32;et',
+
+# Cologne Blue skin
'qbfind' => 'Rechèrchiér',
'qbbrowse' => 'Dèfelar',
'qbedit' => 'Changiér',
@@ -199,15 +458,35 @@ $messages = array(
'qbpageinfo' => 'Pâge d’enformacion',
'qbmyoptions' => 'Mos chouèx',
'qbspecialpages' => 'Pâges spèciâles',
-'moredotdotdot' => 'Et ples...',
-'mypage' => 'Ma pâge',
-'mytalk' => 'Pâge de discussion',
-'anontalk' => 'Discussion avouéc ceta adrèce IP',
-'navigation' => 'Navigacion',
-'and' => '&#32;et',
-
-# Metadata in edit box
-'metadata_help' => 'Mètabalyês :',
+'faq' => 'FDQ',
+'faqpage' => 'Project:FDQ',
+
+# Vector skin
+'vector-action-addsection' => 'Apondre un sujèt',
+'vector-action-delete' => 'Suprimar',
+'vector-action-move' => 'Renomar',
+'vector-action-protect' => 'Protègiér',
+'vector-action-undelete' => 'Refâre',
+'vector-action-unprotect' => 'Dèprotègiér',
+'vector-namespace-category' => 'Catègorie',
+'vector-namespace-help' => 'Éde',
+'vector-namespace-image' => 'Fichiér',
+'vector-namespace-main' => 'Pâge',
+'vector-namespace-media' => 'Mèdia',
+'vector-namespace-mediawiki' => 'Mèssâjo',
+'vector-namespace-project' => 'Pâge du projèt',
+'vector-namespace-special' => 'Pâge spèciâla',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Modèlo',
+'vector-namespace-user' => 'Pâge utilisator',
+'vector-view-create' => 'Fâre',
+'vector-view-edit' => 'Changiér',
+'vector-view-history' => 'Fâre vêre l’historico',
+'vector-view-view' => 'Liére',
+'vector-view-viewsource' => 'Vêre lo tèxto sôrsa',
+'actions' => 'Accions',
+'namespaces' => 'Èspâços de noms',
+'variants' => 'Variantes',
'errorpagetitle' => 'Èrror',
'returnto' => 'Tornar a la pâge $1.',
@@ -257,18 +536,22 @@ $messages = array(
'otherlanguages' => 'Ôtres lengoues',
'redirectedfrom' => '(Redirigiê dês $1)',
'redirectpagesub' => 'Pâge de redirèccion',
-'lastmodifiedat' => 'Dèrriér changement de ceta pâge lo $1 a $2.<br />', # $1 date, $2 time
+'lastmodifiedat' => 'Dèrriér changement de ceta pâge lo $1 a $2.<br />',
'viewcount' => 'Ceta pâge at étâ vua {{PLURAL:$1|yon côp|$1 côps}}.',
'protectedpage' => 'Pâge protègiê',
'jumpto' => 'Alar a :',
'jumptonavigation' => 'Navigacion',
'jumptosearch' => 'Rechèrche',
+'view-pool-error' => 'Dèsolâ, los sèrvors sont surchargiês por lo moment.
+Trop d’utilisators chèrchont a arrevar a ceta pâge.
+Volyéd atendre un moment devant que vos tâchiéd de tornar arrevar a ceta pâge.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A propôs de {{SITENAME}}',
'aboutpage' => 'Project:A propôs',
'copyright' => 'Lo contegnu est disponiblo desot $1.',
-'copyrightpagename' => 'Drêts d’ôtor de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Drêt d’ôtor',
'currentevents' => 'Novèles',
'currentevents-url' => 'Project:Novèles',
@@ -276,8 +559,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avèrtissements g·ènèrals',
'edithelp' => 'Éde',
'edithelppage' => 'Help:Coment changiér una pâge',
-'faq' => 'FDQ',
-'faqpage' => 'Project:FDQ',
'helppage' => 'Help:Somèro',
'mainpage' => 'Reçua',
'mainpage-description' => 'Reçua',
@@ -358,10 +639,6 @@ La dèrriére requéta trètâ per la bâsa de balyês ére :
« $1 »
dês la fonccion « $2 ».
La bâsa de balyês at retornâ l’èrror « $3 : $4 ».',
-'noconnect' => 'Dèsolâ ! Lo vouiqui rencontre ora quârques problèmos tècnicos, et sè pôt pas branchiér u sèrvior de la bâsa de balyês.<br />
-$1',
-'nodb' => 'Empossiblo de chouèsir la bâsa de balyês $1',
-'cachederror' => 'O est una vèrsion en cache de la pâge demandâ, el est pas forciêment a jorn.',
'laggedslavemode' => 'Atencion : cela pâge pôt pas contegnir tôs los dèrriérs changements fêts.',
'readonly' => 'Bâsa de balyês vèrrolyê',
'enterlockreason' => 'Balyéd la rêson du vèrrolyâjo et pués una èstimacion de son temps',
@@ -379,6 +656,8 @@ La volyéd signalar a un [[Special:ListUsers/sysop|administrator]] sen oubliar d
'readonly_lag' => 'La bâsa de balyês at étâ vèrrolyê ôtomaticament pendent que los sèrvors secondèros ratrapont lor retârd sur lo sèrvor principâl.',
'internalerror' => 'Èrror de dedens',
'internalerror_info' => 'Èrror de dedens : $1',
+'fileappenderrorread' => 'Empossiblo de liére « $1 » pendent l’aponsa.',
+'fileappenderror' => 'Empossiblo d’apondre « $1 » a « $2 ».',
'filecopyerror' => 'Empossiblo de copiyér lo fichiér « $1 » vers « $2 ».',
'filerenameerror' => 'Empossiblo de renomar lo fichiér « $1 » en « $2 ».',
'filedeleteerror' => 'Empossiblo de suprimar lo fichiér « $1 ».',
@@ -388,7 +667,7 @@ La volyéd signalar a un [[Special:ListUsers/sysop|administrator]] sen oubliar d
'unexpected' => 'Valor emprèvua : « $1 » = « $2 ».',
'formerror' => 'Èrror : empossiblo de sometre lo formulèro',
'badarticleerror' => 'Cela accion pôt pas étre fêta sur ceta pâge.',
-'cannotdelete' => 'Empossiblo de suprimar la pâge ou ben lo fichiér spècefiâ.
+'cannotdelete' => 'Empossiblo de suprimar la pâge ou ben lo fichiér « $1 ».
La suprèssion at pôt-étre ja étâ fêta per quârqu’un d’ôtro.',
'badtitle' => 'Crouyo titro',
'badtitletext' => 'Lo titro de la pâge demandâ est fôx, vouedo, ou ben o est un titro entèrlengoua ou entèrvouiqui mâl-liyê.
@@ -426,7 +705,6 @@ La rêson balyê est « ''$2'' ».",
'virus-unknownscanner' => 'antivirus encognu :',
# Login and logout pages
-'logouttitle' => 'Dèconèccion',
'logouttext' => "'''Ora, vos éte dèbranchiê.'''
Vos pouede continuar a utilisar {{SITENAME}} de façon anonima, ou ben [[Special:UserLogin|vos tornar branchiér]] desot lo mémo nom ou ben un ôtro.
@@ -434,7 +712,6 @@ Notâd que quârques pâges pôvont étre adés montrâs coment se vos érâd to
'welcomecreation' => '== Benvegnua, $1 ! ==
Voutron compto utilisator at étâ fêt.
Oubliâd pas de pèrsonalisar voutres [[Special:Preferences|prèferences dessus {{SITENAME}}]].',
-'loginpagetitle' => 'Branchement',
'yourname' => 'Voutron nom d’utilisator :',
'yourpassword' => 'Voutron mot de pâssa :',
'yourpasswordagain' => 'Tornâd buchiér voutron mot de pâssa :',
@@ -445,6 +722,7 @@ Oubliâd pas de pèrsonalisar voutres [[Special:Preferences|prèferences dessus
'nav-login-createaccount' => 'Fâre un compto ou sè branchiér',
'loginprompt' => "Vos dête activar los tèmouens (''cookies'') por vos branchiér a {{SITENAME}}.",
'userlogin' => 'Fâre un compto ou sè branchiér',
+'userloginnocreate' => 'Sè branchiér',
'logout' => 'Sè dèbranchiér',
'userlogout' => 'Dèbranchement',
'notloggedin' => 'Pas branchiê',
@@ -457,30 +735,8 @@ Oubliâd pas de pèrsonalisar voutres [[Special:Preferences|prèferences dessus
'badretype' => 'Los mots de pâssa que vos éd buchiês sont pas pariérs.',
'userexists' => 'Lo nom d’utilisator que vos éd buchiê est ja utilisâ.
Nen volyéd chouèsir un ôtro.',
-'youremail' => 'Adrèce èlèctronica :',
-'username' => 'Nom d’utilisator :',
-'uid' => 'Numerô d’utilisator :',
-'prefs-memberingroups' => 'Membro a {{PLURAL:$1|la tropa|les tropes}} :',
-'yourrealname' => 'Veré nom :',
-'yourlanguage' => 'Lengoua de l’entèrface :',
-'yourvariant' => 'Varianta de lengoua :',
-'yournick' => 'Signatura por les discussions :',
-'badsig' => 'Signatura bruta fôssa.
-Controlâd voutres balises HTML.',
-'badsiglength' => 'Voutra signatura est trop longe.
-Dêt pas dèpassar $1 caractèro{{PLURAL:$1||s}}.',
-'yourgender' => 'Sèxo :',
-'gender-unknown' => 'Pas rensègnê',
-'gender-male' => 'Masculin',
-'gender-female' => 'Femenin',
-'prefs-help-gender' => 'U chouèx : utilisâ por acordar en genro los mèssâjos de l’entèrface.
-Ceta enformacion serat publica.',
-'email' => 'Mèssageria èlèctronica',
-'prefs-help-realname' => 'U chouèx : se vos lo spècefiâd, serat utilisâ por vos atribuar voutres contribucions.',
'loginerror' => 'Èrror de branchement',
-'prefs-help-email' => 'U chouèx : endicar voutra adrèce èlèctronica pèrmèt de vos mandar un mot de pâssa novél se vos oubliâd lo voutro.
-Vos pouede asse-ben dècidar de lèssiér los ôtros sè veriér vers vos avouéc voutra pâge de discussion, sen avêr fôta de dèvouèlar voutra identitât.',
-'prefs-help-email-required' => 'Una adrèce èlèctronica est nècèssèra.',
+'createaccounterror' => 'Empossiblo de fâre lo compto : $1',
'nocookiesnew' => "Lo compto utilisator at étâ fêt, mas vos éte pas branchiê.
{{SITENAME}} utilise des tèmouens (''cookies'') por lo branchement mas vos los éd dèsactivâs.
Los volyéd activar et pués vos tornar branchiér avouéc lo mémo nom et lo mémo mot de pâssa.",
@@ -495,12 +751,13 @@ Controlâd l’ortografia, ou ben [[Special:UserLogin/signup|féte un compto nov
'nosuchusershort' => 'Y at gins de contributor avouéc lo nom « <nowiki>$1</nowiki> ».
Volyéd controlar l’ortografia.',
'nouserspecified' => 'Vos dête buchiér un nom d’utilisator.',
+'login-userblocked' => 'Ceti utilisator est blocâ. Branchement pas ôtorisâ.',
'wrongpassword' => 'Lo mot de pâssa est fôx.
Volyéd tornar èprovar.',
'wrongpasswordempty' => 'Vos éd pas buchiê de mot de pâssa.
Volyéd tornar èprovar.',
-'passwordtooshort' => 'Voutron mot de pâssa est trop côrt.
-Dêt contegnir u muens $1 caractèro{{PLURAL:$1||s}} et étre difèrent de voutron nom d’utilisator.',
+'passwordtooshort' => 'Voutron mot de pâssa dêt contegnir u muens $1 caractèro{{PLURAL:$1||s}}.',
+'password-name-match' => 'Voutron mot de pâssa dêt étre difèrent de voutron nom d’utilisator.',
'mailmypassword' => 'Recêvre un mot de pâssa novél per mèssageria èlèctronica',
'passwordremindertitle' => 'Mot de pâssa temporèro novél por {{SITENAME}}',
'passwordremindertext' => 'Quârqu’un (probâblament vos, avouéc l’adrèce IP $1) at demandâ un mot de pâssa
@@ -513,6 +770,7 @@ Se vos éte pas l’ôtor de cela demanda, ou ben se vos vos rapelâd ora
de voutron viely mot de pâssa et que vos souhètâd pas més nen changiér, vos
pouede ignorar ceti mèssâjo et continuar a utilisar voutron viely mot de pâssa.',
'noemail' => 'Niona adrèce èlèctronica at étâ encartâ por l’utilisator « $1 ».',
+'noemailcreate' => 'Vos dête balyér una adrèce èlèctronica valida',
'passwordsent' => 'Un mot de pâssa novél at étâ mandâ a l’adrèce èlèctronica a l’utilisator « $1 ».
Vos volyéd tornar branchiér aprés l’avêr reçu.',
'blocked-mailpassword' => 'Voutra adrèce IP est blocâ en ècritura, la fonccion de rapèl du mot de pâssa est vêr dèsactivâ por èvitar los abus.',
@@ -537,9 +795,11 @@ Volyéd buchiér una adrèce bien formatâ ou ben lèssiér cél champ vouedo.',
Vos vos devriâd branchiér et pués changiér dês ora voutron mot de pâssa.
Ignorâd ceti mèssâjo se cél compto at étâ fêt per èrror.',
+'usernamehasherror' => 'Lo nom d’utilisator pôt pas contegnir des caractèros de chaplâjo',
'login-throttled' => 'Vos éd tentâ dèrriérement un trop grant nombro de branchements.
Volyéd atendre devant que tornar èprovar.',
'loginlanguagelabel' => 'Lengoua : $1',
+'suspicious-userlogout' => "Voutra demanda de dèbranchement at étâ refusâ perce que semble qu’el at étâ mandâ per un navigator câsso ou ben la misa en cache d’un sèrvor mandatèro (''proxy'').",
# Password reset dialog
'resetpass' => 'Changiér lo mot de pâssa',
@@ -552,18 +812,13 @@ Por chavonar lo branchement, vos dête buchiér un mot de pâssa novél ique :',
'retypenew' => 'Confirmar lo mot de pâssa novél :',
'resetpass_submit' => 'Changiér lo mot de pâssa et sè branchiér',
'resetpass_success' => 'Voutron mot de pâssa at étâ changiê avouéc reusséta ! Branchement en cors...',
-'resetpass_bad_temporary' => 'Mot de pâssa temporèro envalido.
-Vos éd pôt-étre ja changiê voutron mot de pâssa avouéc reusséta ou ben demandâ un mot de pâssa temporèro novél.',
'resetpass_forbidden' => 'Los mots de pâssa pôvont pas étre changiês.',
'resetpass-no-info' => 'Vos dête étre branchiê por avêr accès a cela pâge.',
'resetpass-submit-loggedin' => 'Changiér lo mot de pâssa',
+'resetpass-submit-cancel' => 'Anular',
'resetpass-wrong-oldpass' => 'Mot de pâssa d’ora ou ben temporèro envalido.
Vos éd pôt-étre ja changiê voutron mot de pâssa avouéc reusséta ou ben demandâ un mot de pâssa temporèro novél.',
'resetpass-temp-password' => 'Mot de pâssa temporèro :',
-'resetpass-log' => 'Jornal de les rèinicialisacions de mot de pâssa',
-'resetpass-logtext' => 'Vê-que la lista des utilisators que lo mot de pâssa at étâ tornâ inicialisar per un administrator.',
-'resetpass-logentry' => 'at changiê lo mot de pâssa de $1',
-'resetpass-comment' => 'Rêson por la rèinicialisacion du mot de pâssa :',
# Edit page toolbar
'bold_sample' => 'Tèxto en grâs',
@@ -640,7 +895,6 @@ Volyéd spècefiar cetes endicacions dens totes les requétes que vos faréd.",
'blockededitsource' => "Lo contegnu de '''voutros changements''' aplicâs a '''$1''' est montrâ ce-desot :",
'whitelistedittitle' => 'Branchement nècèssèro por changiér lo contegnu',
'whitelistedittext' => 'Vos dête étre $1 por avêr la pèrmission de changiér lo contegnu.',
-'confirmedittitle' => 'Validacion de l’adrèce èlèctronica nècèssèra por changiér lo contegnu',
'confirmedittext' => 'Vos dête confirmar voutra adrèce èlèctronica devant que changiér les pâges.
Volyéd buchiér et pués validar voutra adrèce èlèctronica dens voutres [[Special:Preferences|prèferences]].',
'nosuchsectiontitle' => 'Empossiblo de trovar la sèccion',
@@ -665,12 +919,19 @@ Se vos éte un utilisator pas encartâ et pués se vos constatâd que des coment
Vos pouede [[Special:Search/{{PAGENAME}}|fâre una rechèrche sur lo titro de la pâge]] dens les ôtres pâges,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechèrchiér dens los jornals liyês]
ou ben [{{fullurl:{{FULLPAGENAME}}|action=edit}} fâre cela pâge]</span>.',
+'noarticletext-nopermission' => 'Ora, y at gins de tèxto dens ceta pâge.
+Vos pouede [[Special:Search/{{PAGENAME}}|fâre una rechèrche sur lo titro de la pâge]] dens les ôtres pâges,
+ou ben <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechèrchiér dens los jornals liyês]</span>.',
'userpage-userdoesnotexist' => 'Lo compto utilisator « $1 » est pas encartâ.
Volyéd controlar que vos voléd fâre ou ben changiér cela pâge.',
+'userpage-userdoesnotexist-view' => 'Lo compto utilisator « $1 » est pas encartâ.',
+'blocked-notice-logextract' => 'Ceti utilisator est ora blocâ.
+La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
'clearyourcache' => "'''Nota :''' aprés avêr encartâ voutres prèferences, vos devréd forciér lo rechargement complèt du cache de voutron navigator por vêre los changements.
'''Mozilla / Firefox / Konqueror / Safari :''' mantegnéd la toche ''Granta Lètra'' (''Shift'') en cliquent sur lo boton ''Actualisar'' (''Reload'') ou ben prèssâd ''Maj-Ctrl-R'' (''Maj-Cmd-R'' dessus Apple Mac) ;
'''Internet Explorer / Opera :''' mantegnéd la toche ''Ctrl'' en cliquent sur lo boton ''Actualisar'' ou ben prèssâd ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Combina :''' utilisâd lo boton « Prèvisualisacion » por èprovar voutra fôlye CSS / JS novèla devant que la sôvar.",
+'usercssyoucanpreview' => "'''Combina :''' utilisâd lo boton « {{int:showpreview}} » por èprovar voutra fôlye CSS novèla devant que la sôvar.",
+'userjsyoucanpreview' => "'''Combina :''' utilisâd lo boton « {{int:showpreview}} » por èprovar voutra fôlye JS novèla devant que la sôvar.",
'usercsspreview' => "'''Rapelâd-vos que vos éte aprés prèvisualisar voutra prôpra fôlye CSS.'''
'''El at p’oncor étâ sôvâ !'''",
'userjspreview' => "'''Rapelâd-vos que vos éte aprés èprovar ou ben prèvisualisar voutron code JavaScript.'''
@@ -728,14 +989,17 @@ Lo tèxto pôt pas étre sôvâ.",
Vos pouede copiyér lo tèxto dens un fichiér tèxto et pués lo sôvar por ples târd.
L’administrator qu’at vèrrolyê la bâsa de balyês at balyê ceta èxplicacion : $1",
-'protectedpagewarning' => "'''ATENCION : ceta pâge at étâ protègiê de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont changiér.'''",
-'semiprotectedpagewarning' => "'''Nota :''' ceta pâge at étâ protègiê de façon que solament los utilisators encartâs la pouessont changiér.",
+'protectedpagewarning' => "'''ATENCION : ceta pâge at étâ protègiê de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont changiér.'''
+La dèrriére entrâ du jornal est montrâ ce-desot coment refèrence :",
+'semiprotectedpagewarning' => "'''Nota :''' ceta pâge at étâ protègiê de façon que solament los utilisators encartâs la pouessont changiér.
+La dèrriére entrâ du jornal est montrâ ce-desot coment refèrence :",
'cascadeprotectedwarning' => "'''ATENCION :''' ceta pâge at étâ protègiê de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont changiér.
Cela protèccion at étâ fêta perce que ceta pâge est encllua dens {{PLURAL:$1|ceta pâge protègiê|cetes pâges protègiês}} avouéc la « protèccion en cascâda » activâ :",
-'titleprotectedwarning' => "'''ATENCION : ceta pâge at étâ protègiê de façon que des [[Special:ListGroupRights|drêts spèceficos]] sont nècèssèros por la povêr fâre.'''",
-'templatesused' => 'Modèlos utilisâs sur ceta pâge :',
-'templatesusedpreview' => 'Modèlos utilisâs dens ceta prèvisualisacion :',
-'templatesusedsection' => 'Modèlos utilisâs dens ceta sèccion :',
+'titleprotectedwarning' => "'''ATENCION : ceta pâge at étâ protègiê de façon que des [[Special:ListGroupRights|drêts spèceficos]] sont nècèssèros por la povêr fâre.'''
+La dèrriére entrâ du jornal est montrâ ce-desot coment refèrence :",
+'templatesused' => '{{PLURAL:$1|Modèlo utilisâ|Modèlos utilisâs}} per ceta pâge :',
+'templatesusedpreview' => '{{PLURAL:$1|Modèlo utilisâ|Modèlos utilisâs}} dens ceta prèvisualisacion :',
+'templatesusedsection' => '{{PLURAL:$1|Modèlo utilisâ|Modèlos utilisâs}} dens ceta sèccion :',
'template-protected' => '(protègiê)',
'template-semiprotected' => '(mié-protègiê)',
'hiddencategories' => '{{PLURAL:$1|Catègorie cachiê|Catègories cachiês}} que ceta pâge est avouéc :',
@@ -744,16 +1008,18 @@ Cela protèccion at étâ fêta perce que ceta pâge est encllua dens {{PLURAL:$
'nocreatetext' => '{{SITENAME}} at rètrent la possibilitât de fâre de pâges novèles.
Vos pouede tornar arriér et pués changiér una pâge ègzistenta, ou ben vos [[Special:UserLogin|branchiér ou fâre un compto]].',
'nocreate-loggedin' => 'Vos avéd pas la pèrmission de fâre de pâges novèles.',
+'sectioneditnotsupported-title' => 'Changement de sèccion pas recognu',
+'sectioneditnotsupported-text' => 'Lo changement d’una sèccion est pas recognu dens cela pâge.',
'permissionserrors' => 'Èrror de pèrmissions',
'permissionserrorstext' => 'Vos avéd pas la pèrmission de fâre l’opèracion demandâ por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
'permissionserrorstext-withaction' => 'Vos éte pas ôtorisâ a $2, por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
-'recreate-deleted-warn' => "'''Atencion : vos éte aprés refâre una pâge qu’at étâ suprimâ dês devant.'''
+'recreate-moveddeleted-warn' => "'''Atencion : vos éte aprés refâre una pâge qu’at étâ suprimâ dês devant.'''
Demandâd-vos se fôt franc continuar son changement.
-Lo jornal de les suprèssions de cela pâge est montrâ ce-desot :",
-'deleted-notice' => 'Ceta pâge at étâ suprimâ.
-Lo jornal de les suprèssions est montrâ ce-desot coment refèrence.',
-'deletelog-fulllog' => 'Vêre lo jornal complèt',
+Los jornals de les suprèssions et des changements de nom de cela pâge sont montrâs ce-desot :",
+'moveddeleted-notice' => 'Ceta pâge at étâ suprimâ.
+Los jornals de les suprèssions et des changements de nom sont montrâs ce-desot coment refèrence.',
+'log-fulllog' => 'Vêre lo jornal complèt',
'edit-hook-aborted' => 'Falyita du changement per una èxtension.
Gins de rêson balyê.',
'edit-gone-missing' => 'La pâge at pas possu étre betâ a jorn.
@@ -776,6 +1042,7 @@ Aprés èxtension, ceti arêt balyê un rèsultat trop long, il at vêr pas ét
'post-expand-template-argument-category' => 'Pâges que contegnont u muens yon paramètre de modèlo pas encllu',
'parser-template-loop-warning' => 'Modèlo en boclla dècelâ : [[$1]]',
'parser-template-recursion-depth-warning' => 'Limita de provondior des apèls de modèlos dèpassâ ($1)',
+'language-converter-depth-warning' => 'Limita de provondior du convèrtissor de lengoua dèpassâ ($1)',
# "Undo" feature
'undo-success' => 'Ceti changement vôt étre dèfêt.
@@ -796,7 +1063,7 @@ La rêson balyê per $3 ére ''$2''.",
'currentrev' => 'Vèrsion d’ora',
'currentrev-asof' => 'Vèrsion d’ora en dâta du $1',
'revisionasof' => 'Vèrsion du $1',
-'revision-info' => 'Vèrsion du $1 per $2', # Additionally available: $3: revision id
+'revision-info' => 'Vèrsion du $1 per $2',
'previousrevision' => '← Vèrsion devant',
'nextrevision' => 'Vèrsion aprés →',
'currentrevisionlink' => 'vêde la vèrsion d’ora',
@@ -808,7 +1075,7 @@ La rêson balyê per $3 ére ''$2''.",
'histlegend' => "Lègenda : '''({{int:cur}})''' = difèrence avouéc la vèrsion d’ora,
'''({{int:last}})''' = difèrence avouéc la vèrsion devant, '''{{int:minoreditletter}}''' = petiôt changement.",
'history-fieldset-title' => 'Navegar dens l’historico',
-'deletedrev' => '[suprimâ]',
+'history-show-deleted' => 'Ren que los suprimâs',
'histfirst' => 'Tota premiére',
'histlast' => 'Tota dèrriére',
'historysize' => '($1 octèt{{PLURAL:$1||s}})',
@@ -817,71 +1084,114 @@ La rêson balyê per $3 ére ''$2''.",
# Revision feed
'history-feed-title' => 'Historico de les vèrsions',
'history-feed-description' => 'Historico por ceta pâge sur lo vouiqui',
-'history-feed-item-nocomment' => '$1 lo $2', # user at time
+'history-feed-item-nocomment' => '$1 lo $2',
'history-feed-empty' => 'La pâge demandâ ègziste pas.
El at pôt-étre étâ suprimâ ou ben renomâ.
Tâchiéd de [[Special:Search|rechèrchiér sur lo vouiqui]] por trovar des pâges novèles que vont avouéc.',
# Revision deletion
-'rev-deleted-comment' => '(comentèro suprimâ)',
-'rev-deleted-user' => '(nom d’utilisator suprimâ)',
-'rev-deleted-event' => '(entrâ suprimâ)',
-'rev-deleted-text-permission' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-deleted-text-view' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
-Coment administrator, vos la pouede vêre ; y pôt avêr més de dètalys dens lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-deleted-no-diff' => "Vos pouede pas vêre ceti dif perce que yona de les vèrsions at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-deleted-unhide-diff' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+'rev-deleted-comment' => '(comentèro suprimâ)',
+'rev-deleted-user' => '(nom d’utilisator suprimâ)',
+'rev-deleted-event' => '(entrâ suprimâ)',
+'rev-deleted-user-contribs' => '[nom d’utilisator ou ben adrèce IP suprimâ - changement cachiê sur les contribucions]',
+'rev-deleted-text-permission' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-deleted-text-unhide' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Coment administrator, vos pouede adés [$1 vêre cela vèrsion] se vos lo voléd.",
+'rev-suppressed-text-unhide' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Coment administrator, vos pouede adés [$1 vêre cela vèrsion] se vos lo voléd.",
+'rev-deleted-text-view' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
+Coment administrator, vos la pouede vêre ; y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-suppressed-text-view' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
+Coment administrator, vos la pouede vêre ; y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-deleted-no-diff' => "Vos pouede pas vêre ceti dif perce que yona de les vèrsions at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-suppressed-no-diff' => "Vos pouede pas vêre ceta difèrence perce que yona de les vèrsions at étâ '''suprimâ'''.",
+'rev-deleted-unhide-diff' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
Coment administrator, vos pouede adés [$1 vêre cél dif] se vos lo voléd.",
-'rev-delundel' => 'fâre vêre / cachiér',
-'revisiondelete' => 'Suprimar / refâre des vèrsions',
-'revdelete-nooldid-title' => 'Vèrsion ciba envalida',
-'revdelete-nooldid-text' => 'Vos éd pas spècefiâ la vèrsion ciba ou ben les vèrsions cibes de cela fonccion,
+'rev-suppressed-unhide-diff' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
+Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Coment administrator, vos pouede adés [$1 vêre cél dif] se vos lo voléd.",
+'rev-deleted-diff-view' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
+Coment administrator, vos pouede vêre ceti dif ; y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-suppressed-diff-view' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
+Coment administrator, vos pouede vêre ceti dif ; y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-delundel' => 'fâre vêre / cachiér',
+'rev-showdeleted' => 'fâre vêre',
+'revisiondelete' => 'Suprimar / refâre des vèrsions',
+'revdelete-nooldid-title' => 'Vèrsion ciba envalida',
+'revdelete-nooldid-text' => 'Vos éd pas spècefiâ la vèrsion ciba ou ben les vèrsions cibes de cela fonccion,
la vèrsion ciba ègziste pas, ou ben o est la vèrsion d’ora.',
-'revdelete-nologtype-title' => 'Gins de tipo de jornal spècefiâ',
-'revdelete-nologtype-text' => 'Vos éd pas spècefiâ un tipo de jornal sur loquint cela accion dêt étre rèalisâ.',
-'revdelete-toomanytargets-title' => 'Trop de cibes',
-'revdelete-toomanytargets-text' => 'Vos éd spècefiâ trop de tipos de cibes difèrentes sur lesquintes cela accion dêt étre rèalisâ.',
-'revdelete-nologid-title' => 'Entrâ du jornal envalida',
-'revdelete-nologid-text' => 'Ou ben vos éd pas spècefiâ una entrâ du jornal sur laquinta cela accion dêt étre rèalisâ, ou ben l’entrâ ègziste pas.',
-'revdelete-selected' => "'''{{PLURAL:$2|Vèrsion chouèsia|Vèrsions chouèsies}} de [[:$1]] :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Entrâ du jornal chouèsia|Entrâs du jornal chouèsies}} :'''",
-'revdelete-text' => "'''Les vèrsions et les entrâs suprimâs aparètront adés dens l’historico de la pâge et dens los jornals, mas lor contegnu tèxtuèl serat pas accèssiblo u publico.'''
-Los ôtros administrators de {{SITENAME}} porront tojorn arrevar u contegnu cachiê et lo refâre per cela méma entèrface, a muens que des rèstriccions de ples seyont betâs en place.
-
-Volyéd confirmar qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos féte cen en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].",
-'revdelete-suppress-text' => "La suprèssion dêt étre utilisâ '''ren que''' dens cetos câs :
+'revdelete-nologtype-title' => 'Gins de tipo de jornal spècefiâ',
+'revdelete-nologtype-text' => 'Vos éd pas spècefiâ un tipo de jornal sur loquint cela accion dêt étre rèalisâ.',
+'revdelete-nologid-title' => 'Entrâ du jornal envalida',
+'revdelete-nologid-text' => 'Ou ben vos éd pas spècefiâ una entrâ du jornal sur laquinta cela accion dêt étre rèalisâ, ou ben l’entrâ ègziste pas.',
+'revdelete-no-file' => 'Lo fichiér spècefiâ ègziste pas.',
+'revdelete-show-file-confirm' => 'Éte-vos de sûr de volêr vêre una vèrsion suprimâ du fichiér « <nowiki>$1</nowiki> » que dâte du $2 a $3 ?',
+'revdelete-show-file-submit' => 'Ouè',
+'revdelete-selected' => "'''{{PLURAL:$2|Vèrsion chouèsia|Vèrsions chouèsies}} de [[:$1]] :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Entrâ du jornal chouèsia|Entrâs du jornal chouèsies}} :'''",
+'revdelete-text' => "'''Les vèrsions et les entrâs suprimâs aparètront adés dens l’historico de la pâge et dens los jornals, mas lor contegnu tèxtuèl serat pas accèssiblo u publico.'''
+Los ôtros administrators de {{SITENAME}} porront tojorn arrevar u contegnu cachiê et lo refâre per cela méma entèrface, a muens que des rèstriccions de ples seyont betâs en place.",
+'revdelete-confirm' => 'Volyéd confirmar qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos féte cen en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].',
+'revdelete-suppress-text' => "La suprèssion dêt étre utilisâ '''ren que''' dens cetos câs :
* Enformacions a sè que vont pas avouéc :
*: ''adrèce et numerô de tèlèfono, numerô de sècuritât sociâla, ...''",
-'revdelete-legend' => 'Betar en place des rèstriccions de visibilitât :',
-'revdelete-hide-text' => 'Cachiér lo tèxto de la vèrsion',
-'revdelete-hide-name' => 'Cachiér l’accion et la ciba',
-'revdelete-hide-comment' => 'Cachiér lo comentèro de changement',
-'revdelete-hide-user' => 'Cachiér lo nom ou l’adrèce IP u contributor.',
-'revdelete-hide-restricted' => 'Cachiér les balyês ux administrators et pués ux ôtros',
-'revdelete-suppress' => 'Suprimar les balyês ux administrators et pués ux ôtros',
-'revdelete-hide-image' => 'Cachiér lo contegnu du fichiér',
-'revdelete-unsuppress' => 'Enlevar les rèstriccions sur les vèrsions refêtes',
-'revdelete-log' => 'Rêson :',
-'revdelete-submit' => 'Aplicar a la vèrsion chouèsia',
-'revdelete-logentry' => 'at changiê la visibilitât de la vèrsion de [[$1]]',
-'logdelete-logentry' => 'at changiê la visibilitât de l’entrâ de [[$1]]',
-'revdelete-success' => "'''Visibilitât de la vèrsion betâ a jorn avouéc reusséta.'''",
-'logdelete-success' => "'''Visibilitât du jornal dèfenia avouéc reusséta.'''",
-'revdel-restore' => 'Changiér la visibilitât',
-'pagehist' => 'Historico de la pâge',
-'deletedhist' => 'Historico suprimâ',
-'revdelete-content' => 'contegnu',
-'revdelete-summary' => 'rèsumâ de changement',
-'revdelete-uname' => 'nom d’utilisator',
-'revdelete-restricted' => 'at aplicâ les rèstriccions ux administrators',
-'revdelete-unrestricted' => 'rèstriccions enlevâs por los administrators',
-'revdelete-hid' => 'at cachiê $1',
-'revdelete-unhid' => 'at montrâ $1',
-'revdelete-log-message' => '$1 por $2 vèrsion{{PLURAL:$2||s}}',
-'logdelete-log-message' => '$1 sur $2 entrâ{{PLURAL:$2||s}}',
+'revdelete-legend' => 'Betar en place des rèstriccions de visibilitât :',
+'revdelete-hide-text' => 'Cachiér lo tèxto de la vèrsion',
+'revdelete-hide-image' => 'Cachiér lo contegnu du fichiér',
+'revdelete-hide-name' => 'Cachiér l’accion et la ciba',
+'revdelete-hide-comment' => 'Cachiér lo comentèro de changement',
+'revdelete-hide-user' => 'Cachiér lo nom ou l’adrèce IP u contributor.',
+'revdelete-hide-restricted' => 'Cachiér les balyês ux administrators et pués ux ôtros',
+'revdelete-radio-same' => '(pas changiér)',
+'revdelete-radio-set' => 'Ouè',
+'revdelete-radio-unset' => 'Nan',
+'revdelete-suppress' => 'Suprimar les balyês ux administrators et pués ux ôtros',
+'revdelete-unsuppress' => 'Enlevar les rèstriccions sur les vèrsions refêtes',
+'revdelete-log' => 'Rêson :',
+'revdelete-submit' => 'Aplicar a {{PLURAL:$1|la vèrsion chouèsia|les vèrsions chouèsies}}',
+'revdelete-logentry' => 'at changiê la visibilitât de la vèrsion de [[$1]]',
+'logdelete-logentry' => 'at changiê la visibilitât de l’entrâ de [[$1]]',
+'revdelete-success' => "'''Visibilitât de la vèrsion betâ a jorn avouéc reusséta.'''",
+'revdelete-failure' => "'''La visibilitât de la vèrsion at pas possu étre betâ a jorn :'''
+$1",
+'logdelete-success' => "'''Visibilitât du jornal dèfenia avouéc reusséta.'''",
+'logdelete-failure' => "'''La visibilitât du jornal at pas possu étre dèfenia :'''
+$1",
+'revdel-restore' => 'Changiér la visibilitât',
+'pagehist' => 'Historico de la pâge',
+'deletedhist' => 'Historico suprimâ',
+'revdelete-content' => 'contegnu',
+'revdelete-summary' => 'rèsumâ de changement',
+'revdelete-uname' => 'nom d’utilisator',
+'revdelete-restricted' => 'at aplicâ les rèstriccions ux administrators',
+'revdelete-unrestricted' => 'rèstriccions enlevâs por los administrators',
+'revdelete-hid' => 'at cachiê $1',
+'revdelete-unhid' => 'at montrâ $1',
+'revdelete-log-message' => '$1 por $2 vèrsion{{PLURAL:$2||s}}',
+'logdelete-log-message' => '$1 sur $2 entrâ{{PLURAL:$2||s}}',
+'revdelete-hide-current' => 'Èrror pendent la suprèssion de l’èlèment datâ du $1 a $2 : o est la vèrsion d’ora.
+Pôt pas étre suprimâ.',
+'revdelete-show-no-access' => 'Èrror pendent la visualisacion de l’èlèment datâ du $1 a $2 : il est marcâ coment « rètrent ».
+Vos y avéd pas accès.',
+'revdelete-modify-no-access' => 'Èrror pendent lo changement de l’èlèment datâ du $1 a $2 : il est marcâ coment « rètrent ».
+Vos y avéd pas accès.',
+'revdelete-modify-missing' => 'Èrror pendent lo changement de l’èlèment avouéc l’identifiant $1 : il est manquent dens la bâsa de balyês !',
+'revdelete-no-change' => "'''Atencion :''' l’èlèment datâ du $1 a $2 at ja los paramètres de visibilitât demandâs.",
+'revdelete-concurrent-change' => 'Èrror pendent lo changement de l’èlèment datâ du $1 a $2 : son statut at étâ changiê per quârqu’un d’ôtro pendent que vos lo changiéd.
+Volyéd controlar los jornals.',
+'revdelete-only-restricted' => 'Èrror pendent la suprèssion de l’entrâ datâ du $1 a $2 : vos pouede pas suprimar celos èlèments ux administrators sen chouèsir avouéc des ôtros chouèx de suprèssion.',
+'revdelete-reason-dropdown' => '* Rêsons de suprèssion les ples corentes
+** Violacion du drêt d’ôtor
+** Enformacions a sè que vont pas avouéc',
+'revdelete-otherreason' => 'Ôtra rêson / rêson de ples :',
+'revdelete-reasonotherlist' => 'Ôtra rêson',
+'revdelete-edit-reasonlist' => 'Changiér les rêsons de suprèssion',
+'revdelete-offender' => 'Ôtor de la vèrsion :',
# Suppression log
'suppressionlog' => 'Jornal de les suprèssions',
@@ -920,67 +1230,13 @@ Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colo
'mergelogpagetext' => 'Vê-que la lista de les fusions les ples novèles de l’historico d’una pâge dedens celi d’una ôtra.',
# Diffs
-'history-title' => 'Historico de les vèrsions de « $1 »',
-'difference' => '(Difèrences entre les vèrsions)',
-'lineno' => 'Legne $1 :',
-'compareselectedversions' => 'Comparar les vèrsions chouèsies',
-'visualcomparison' => 'Comparèson visuâla',
-'wikicodecomparison' => 'Comparèson du vouiquitèxto',
-'editundo' => 'dèfâre',
-'diff-multi' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra cachiê|$1 vèrsions entèrmèdières cachiês}}.)',
-'diff-movedto' => 'dèplaciê vers $1',
-'diff-styleadded' => 'stilo $1 apondu',
-'diff-added' => '$1 apondu',
-'diff-changedto' => 'changiê vers $1',
-'diff-movedoutof' => 'dèplaciê en defôr de $1',
-'diff-styleremoved' => 'stilo $1 enlevâ',
-'diff-removed' => '$1 enlevâ',
-'diff-changedfrom' => 'changiê dês $1',
-'diff-src' => 'sôrsa',
-'diff-withdestination' => 'avouéc la dèstinacion $1',
-'diff-with' => '&#32;avouéc $1 $2',
-'diff-with-final' => '&#32;et $1 $2',
-'diff-width' => 'largior',
-'diff-height' => 'hôtior',
-'diff-p' => "un '''paragrafo'''",
-'diff-blockquote' => "una '''citacion'''",
-'diff-h1' => "un '''en-téta (nivél 1)'''",
-'diff-h2' => "un '''en-téta (nivél 2)'''",
-'diff-h3' => "un '''en-téta (nivél 3)'''",
-'diff-h4' => "un '''en-téta (nivél 4)'''",
-'diff-h5' => "un '''en-téta (nivél 5)'''",
-'diff-pre' => "un '''bloco prèformatâ'''",
-'diff-div' => "una '''division'''",
-'diff-ul' => "una '''lista pas ordonâ'''",
-'diff-ol' => "una '''lista ordonâ'''",
-'diff-li' => "un '''èlèment de lista'''",
-'diff-table' => "un '''tablô'''",
-'diff-tbody' => "lo '''contegnu d’un tablô'''",
-'diff-tr' => "una '''legne'''",
-'diff-td' => "una '''cèlula'''",
-'diff-th' => "un '''en-téta'''",
-'diff-br' => "una '''cassura'''",
-'diff-hr' => "una '''règlla plana'''",
-'diff-code' => "un '''bloco de code d’ordenator'''",
-'diff-dl' => "una '''lista de dèfinicion'''",
-'diff-dt' => "un '''tèrmo de dèfinicion'''",
-'diff-dd' => "una '''dèfinicion'''",
-'diff-input' => "una '''entrâ'''",
-'diff-form' => "un '''formulèro'''",
-'diff-img' => "una '''émâge'''",
-'diff-span' => "una '''portâ'''",
-'diff-a' => "un '''lim'''",
-'diff-i' => "'''étalico'''",
-'diff-b' => "'''grâs'''",
-'diff-strong' => "'''fôrt'''",
-'diff-em' => "'''emfâsa'''",
-'diff-font' => "'''police'''",
-'diff-big' => "'''grant'''",
-'diff-del' => "'''suprimâ'''",
-'diff-tt' => "'''largior fixa'''",
-'diff-sub' => "'''segno'''",
-'diff-sup' => "'''èxposent'''",
-'diff-strike' => "'''barrâ'''",
+'history-title' => 'Historico de les vèrsions de « $1 »',
+'difference' => '(Difèrences entre les vèrsions)',
+'lineno' => 'Legne $1 :',
+'compareselectedversions' => 'Comparar les vèrsions chouèsies',
+'showhideselectedversions' => 'Fâre vêre / cachiér les vèrsions chouèsies',
+'editundo' => 'dèfâre',
+'diff-multi' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra cachiê|$1 vèrsions entèrmèdières cachiês}}.)',
# Search results
'searchresults' => 'Rèsultats de la rechèrche',
@@ -988,29 +1244,25 @@ Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colo
'searchresulttext' => 'Por més d’enformacions sur la rechèrche dens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ont un lim de vers « $1 »]])",
'searchsubtitleinvalid' => "Vos éd rechèrchiê « '''$1''' »",
-'noexactmatch' => "'''Niona pâge avouéc lo titro « $1 » ègziste.'''
-Vos pouede [[:$1|fâre cela pâge]].",
-'noexactmatch-nocreate' => "'''Ègziste gins de pâge avouéc lo titro « $1 ».'''",
'toomanymatches' => 'Un trop grant nombro d’ocasions at étâ retornâ, volyéd sometre una requéta difèrenta.',
'titlematches' => 'Corrèspondances dens los titros de les pâges',
'notitlematches' => 'Nion titro de pâge corrèspond a la rechèrche.',
'textmatches' => 'Corrèspondances dens lo tèxto de les pâges',
'notextmatches' => 'Nion tèxto de pâge corrèspond a la rechèrche.',
-'prevn' => '$1 devant',
-'nextn' => '$1 aprés',
+'prevn' => '{{PLURAL:$1|$1}} devant',
+'nextn' => '{{PLURAL:$1|$1}} aprés',
'prevn-title' => '$1 rèsultat{{PLURAL:$1||s}} devant',
'nextn-title' => '$1 rèsultat{{PLURAL:$1||s}} aprés',
'shown-title' => 'Fâre vêre $1 rèsultat{{PLURAL:$1||s}} per pâge',
-'viewprevnext' => 'Vêre ($1) ($2) ($3).',
+'viewprevnext' => 'Vêre ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Chouèx de rechèrche',
'searchmenu-exists' => "'''Y at una pâge avouéc lo titro « [[:$1]] » sur ceti vouiqui.'''",
'searchmenu-new' => "'''Fâre la pâge « [[:$1|$1]] » sur ceti vouiqui !'''",
'searchhelp-url' => 'Help:Somèro',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechèrchiér les pâges que començont per ceti prèfixo]]',
'searchprofile-articles' => 'Pâges de contegnu',
-'searchprofile-articles-and-proj' => 'Pâges de contegnu et de projèt',
-'searchprofile-project' => 'Pâges du projèt',
-'searchprofile-images' => 'Fichiérs',
+'searchprofile-project' => 'Pâges d’éde et du projèt',
+'searchprofile-images' => 'Fichiérs multimèdia',
'searchprofile-everything' => 'Tot',
'searchprofile-advanced' => 'Rechèrche avanciê',
'searchprofile-articles-tooltip' => 'Rechèrchiér dens $1',
@@ -1018,8 +1270,6 @@ Vos pouede [[:$1|fâre cela pâge]].",
'searchprofile-images-tooltip' => 'Rechèrchiér des fichiérs multimèdia',
'searchprofile-everything-tooltip' => 'Rechèrchiér dens tot lo seto (les pâges de discussion avouéc)',
'searchprofile-advanced-tooltip' => 'Chouèsir los èspâços de noms por la rechèrche',
-'prefs-search-nsdefault' => 'Rechèrchiér en utilisent los èspâços de noms per dèfôt :',
-'prefs-search-nscustom' => 'Rechèrchiér en utilisent los èspâços de noms pèrsonalisâs :',
'search-result-size' => '$1 ($2 mot{{PLURAL:$2||s}})',
'search-result-score' => 'Rapôrt : $1%',
'search-redirect' => '(redirèccion dês $1)',
@@ -1032,11 +1282,12 @@ Vos pouede [[:$1|fâre cela pâge]].",
'search-mwsuggest-disabled' => 'sen consèlys',
'search-relatedarticle' => 'Raportâ',
'mwsuggest-disable' => 'Dèsactivar los consèlys AJAX',
+'searcheverything-enable' => 'Rechèrchiér dens tôs los èspâços de noms',
'searchrelated' => 'raportâ',
'searchall' => 'Tôs',
'showingresults' => "Visualisacion de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
'showingresultsnum' => "Visualisacion de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
-'showingresultstotal' => "Visualisacion {{PLURAL:$4|du rèsultat '''$1'''|des rèsultats '''$1 – $2'''}} sur '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Rèsultat '''$1'''|Rèsultats '''$1 - $2'''}} de '''$3''' por '''$4'''",
'nonefound' => "'''Nota :''' solament quârques èspâços de noms sont rechèrchiês per dèfôt.
Èprovâd en utilisent lo prèfixo ''all:'' por rechèrchiér dens tot lo contegnu (les pâges de discussion, los modèlos, ... avouéc) ou ben utilisâd l’èspâço de noms souhètâ coment prèfixo.",
'search-nonefound' => 'Y at gins de rèsultat que corrèspond a la requéta.',
@@ -1045,115 +1296,154 @@ Vos pouede [[:$1|fâre cela pâge]].",
'powersearch-ns' => 'Rechèrchiér dens los èspâços de noms :',
'powersearch-redir' => 'Fâre vêre les redirèccions',
'powersearch-field' => 'Rechèrchiér',
+'powersearch-togglelabel' => 'Pouentar :',
+'powersearch-toggleall' => 'Tot',
+'powersearch-togglenone' => 'Niona',
'search-external' => 'Rechèrche de defôr',
'searchdisabled' => 'La rechèrche dessus {{SITENAME}} est dèsactivâ.
En atendent la rèactivacion, vos pouede fâre una rechèrche per Google.
Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
+# Quickbar
+'qbsettings' => 'Bârra d’outils',
+'qbsettings-none' => 'Niona',
+'qbsettings-fixedleft' => 'Gôche',
+'qbsettings-fixedright' => 'Drêta',
+'qbsettings-floatingleft' => 'Fllotenta a gôche',
+'qbsettings-floatingright' => 'Fllotenta a drêta',
+
# Preferences page
-'preferences' => 'Prèferences',
-'mypreferences' => 'Prèferences',
-'prefs-edits' => 'Nombro de changements :',
-'prefsnologin' => 'Pas branchiê',
-'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} branchiê]</span> por changiér voutres prèferences d’utilisator.',
-'prefsreset' => 'Les prèferences ont étâ rètablies dês la vèrsion encartâ.',
-'qbsettings' => 'Bârra d’outils',
-'qbsettings-none' => 'Niona',
-'qbsettings-fixedleft' => 'Gôche',
-'qbsettings-fixedright' => 'Drêta',
-'qbsettings-floatingleft' => 'Fllotenta a gôche',
-'qbsettings-floatingright' => 'Fllotenta a drêta',
-'changepassword' => 'Changement du mot de pâssa',
-'skin' => 'Entèrface',
-'skin-preview' => 'Prèvisualisar',
-'math' => 'Rendu de les formules matèmatiques',
-'dateformat' => 'Format de dâta',
-'datedefault' => 'Gins de prèference',
-'datetime' => 'Dâta et hora',
-'math_failure' => 'Èrror d’analise sintaxica',
-'math_unknown_error' => 'èrror encognua',
-'math_unknown_function' => 'fonccion encognua',
-'math_lexing_error' => 'èrror lèxicâla',
-'math_syntax_error' => 'èrror de sintaxa',
-'math_image_error' => 'La convèrsion en PNG at pas reussia ;
-controlâd l’enstalacion de LaTeX, dvips, gs et convert',
-'math_bad_tmpdir' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math temporèro',
-'math_bad_output' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math de sortia',
-'math_notexvc' => 'L’ègzécutâblo « texvc » est entrovâblo.
-Volyéd liére « math/README » por lo configurar.',
-'prefs-personal' => 'Enformacions a sè',
-'prefs-rc' => 'Dèrriérs changements',
-'prefs-watchlist' => 'Lista de survelyence',
-'prefs-watchlist-days' => 'Nombro de jorns a fâre vêre dens la lista de survelyence :',
-'prefs-watchlist-days-max' => '(tot u ples 7 jorns)',
-'prefs-watchlist-edits' => 'Nombro de changements a fâre vêre dens la lista de survelyence ètendua :',
-'prefs-watchlist-edits-max' => '(nombro lo ples grant : 1000)',
-'prefs-misc' => 'Prèferences de totes sôrtes',
-'prefs-resetpass' => 'Changiér lo mot de pâssa',
-'saveprefs' => 'Encartar les prèferences',
-'resetprefs' => 'Rètablir les prèferences',
-'restoreprefs' => 'Rètablir totes les valors per dèfôt',
-'textboxsize' => 'Fenétra d’èdicion',
-'prefs-edit-boxsize' => 'Talye de la fenétra d’èdicion.',
-'rows' => 'Rengiês :',
-'columns' => 'Colones :',
-'searchresultshead' => 'Rechèrche',
-'resultsperpage' => 'Nombro de rèponses per pâge :',
-'contextlines' => 'Nombro de legnes per rèponsa :',
-'contextchars' => 'Nombro de caractèros de contèxto per legne :',
-'stub-threshold' => 'Limita d’amont por los <a href="#" class="stub">lims de vers los començons</a> (octèts) :',
-'recentchangesdays' => 'Nombro de jorns a fâre vêre dens los dèrriérs changements :',
-'recentchangesdays-max' => '(tot u ples $1 jorn{{PLURAL:$1||s}})',
-'recentchangescount' => 'Nombro de changements a fâre vêre dens los dèrriérs changements, los historicos de les pâges et los jornals, per dèfôt :',
-'savedprefs' => 'Les prèferences ont étâ encartâs.',
-'timezonelegend' => 'Fus horèro :',
-'timezonetext' => '¹Nombro d’hores de dècalâjo entre-mié voutra hora locala et l’hora du sèrvior (UTC).',
-'localtime' => 'Hora locala :',
-'timezoneselect' => 'Zona horèra :',
-'timezoneuseserverdefault' => 'Utilisar la valor du sèrvor',
-'timezoneuseoffset' => 'Ôtro (spècefiar lo dècalâjo)',
-'timezoneoffset' => 'Dècalâjo horèro¹ :',
-'servertime' => 'Hora du sèrvor :',
-'guesstimezone' => 'Utilisar la valor du navigator',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'Amèriques',
-'timezoneregion-antarctica' => 'Antartica',
-'timezoneregion-arctic' => 'Artico',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ocèan atlantico',
-'timezoneregion-australia' => 'Ôstralie',
-'timezoneregion-europe' => 'Eropa',
-'timezoneregion-indian' => 'Ocèan endien',
-'timezoneregion-pacific' => 'Ocèan pacefico',
-'allowemail' => 'Ôtorisar l’èxpèdicion de mèssâjos que vegnont d’ôtros utilisators',
-'prefs-searchoptions' => 'Chouèx de rechèrche',
-'prefs-namespaces' => 'Èspâços de noms',
-'defaultns' => 'Rechèrchiér per dèfôt dens cetos èspâços de noms :',
-'default' => 'dèfôt',
-'files' => 'Fichiérs',
-'prefs-custom-css' => 'CSS pèrsonalisâ',
-'prefs-custom-js' => 'JavaScript pèrsonalisâ',
+'preferences' => 'Prèferences',
+'mypreferences' => 'Prèferences',
+'prefs-edits' => 'Nombro de changements :',
+'prefsnologin' => 'Pas branchiê',
+'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} branchiê]</span> por changiér voutres prèferences d’utilisator.',
+'changepassword' => 'Changement du mot de pâssa',
+'prefs-skin' => 'Habelyâjo',
+'skin-preview' => 'Prèvisualisar',
+'prefs-math' => 'Rendu de les formules matèmatiques',
+'datedefault' => 'Gins de prèference',
+'prefs-datetime' => 'Dâta et hora',
+'prefs-personal' => 'Enformacions a sè',
+'prefs-rc' => 'Dèrriérs changements',
+'prefs-watchlist' => 'Lista de survelyence',
+'prefs-watchlist-days' => 'Nombro de jorns a fâre vêre dens la lista de survelyence :',
+'prefs-watchlist-days-max' => '(tot u ples 7 jorns)',
+'prefs-watchlist-edits' => 'Nombro de changements a fâre vêre dens la lista de survelyence ètendua :',
+'prefs-watchlist-edits-max' => '(nombro lo ples grant : 1000)',
+'prefs-watchlist-token' => 'Jeton por la lista de survelyence :',
+'prefs-misc' => 'Prèferences de totes sôrtes',
+'prefs-resetpass' => 'Changiér lo mot de pâssa',
+'prefs-email' => 'Chouèx de mèssageria èlèctronica',
+'prefs-rendering' => 'Aparence',
+'saveprefs' => 'Encartar les prèferences',
+'resetprefs' => 'Rètablir les prèferences',
+'restoreprefs' => 'Rètablir totes les valors per dèfôt',
+'prefs-editing' => 'Fenétra d’èdicion',
+'prefs-edit-boxsize' => 'Talye de la fenétra d’èdicion.',
+'rows' => 'Rengiês :',
+'columns' => 'Colones :',
+'searchresultshead' => 'Rechèrche',
+'resultsperpage' => 'Nombro de rèponses per pâge :',
+'contextlines' => 'Nombro de legnes per rèponsa :',
+'contextchars' => 'Nombro de caractèros de contèxto per legne :',
+'stub-threshold' => 'Limita d’amont por los <a href="#" class="stub">lims de vers los començons</a> (octèts) :',
+'recentchangesdays' => 'Nombro de jorns a fâre vêre dens los dèrriérs changements :',
+'recentchangesdays-max' => '(tot u ples $1 jorn{{PLURAL:$1||s}})',
+'recentchangescount' => 'Nombro de changements a fâre vêre per dèfôt :',
+'prefs-help-recentchangescount' => 'Cen encllut los dèrriérs changements, los historicos de les pâges et los jornals.',
+'prefs-help-watchlist-token' => 'En remplent cen avouéc una valor secrèta farat un flux RSS por voutra lista de survelyence.
+Tota pèrsona que cognêt cél jeton porrat liére voutra lista de survelyence, chouèsésséd vêr una valor sècurisâ.
+Vê-que una valor fêta per hasârd que vos pouede utilisar : $1',
+'savedprefs' => 'Les prèferences ont étâ encartâs.',
+'timezonelegend' => 'Fus horèro :',
+'localtime' => 'Hora locala :',
+'timezoneuseserverdefault' => 'Utilisar la valor du sèrvor',
+'timezoneuseoffset' => 'Ôtro (spècefiar lo dècalâjo)',
+'timezoneoffset' => 'Dècalâjo horèro¹ :',
+'servertime' => 'Hora du sèrvor :',
+'guesstimezone' => 'Utilisar la valor du navigator',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'Amèriques',
+'timezoneregion-antarctica' => 'Antartica',
+'timezoneregion-arctic' => 'Artico',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Ocèan atlantico',
+'timezoneregion-australia' => 'Ôstralie',
+'timezoneregion-europe' => 'Eropa',
+'timezoneregion-indian' => 'Ocèan endien',
+'timezoneregion-pacific' => 'Ocèan pacefico',
+'allowemail' => 'Ôtorisar l’èxpèdicion de mèssâjos que vegnont d’ôtros utilisators',
+'prefs-searchoptions' => 'Chouèx de rechèrche',
+'prefs-namespaces' => 'Èspâços de noms',
+'defaultns' => 'Ôtrament rechèrchiér dens cetos èspâços de noms :',
+'default' => 'dèfôt',
+'prefs-files' => 'Fichiérs',
+'prefs-custom-css' => 'CSS pèrsonalisâ',
+'prefs-custom-js' => 'JavaScript pèrsonalisâ',
+'prefs-reset-intro' => 'Vos pouede utilisar ceta pâge por rètablir voutres prèferences a les valors per dèfôt du seto.
+Cen pôt pas étre dèfêt.',
+'prefs-emailconfirm-label' => 'Confirmacion de la mèssageria èlèctronica :',
+'prefs-textboxsize' => 'Talye de la fenétra d’èdicion',
+'youremail' => 'Adrèce èlèctronica :',
+'username' => 'Nom d’utilisator :',
+'uid' => 'Numerô d’utilisator :',
+'prefs-memberingroups' => 'Membro a {{PLURAL:$1|la tropa|les tropes}} :',
+'prefs-registration' => 'Dâta d’enregistrament :',
+'yourrealname' => 'Veré nom :',
+'yourlanguage' => 'Lengoua de l’entèrface :',
+'yourvariant' => 'Varianta de lengoua :',
+'yournick' => 'Signatura por les discussions :',
+'prefs-help-signature' => 'Los comentèros sur les pâges de discussion dêvont étre signês avouéc « <nowiki>~~~~</nowiki> », que serat convèrti per voutra signatura avouéc la dâta.',
+'badsig' => 'Signatura bruta fôssa.
+Controlâd voutres balises HTML.',
+'badsiglength' => 'Voutra signatura est trop longe.
+Dêt pas dèpassar $1 caractèro{{PLURAL:$1||s}}.',
+'yourgender' => 'Sèxo :',
+'gender-unknown' => 'Pas rensègnê',
+'gender-male' => 'Masculin',
+'gender-female' => 'Femenin',
+'prefs-help-gender' => 'U chouèx : utilisâ por acordar en genro los mèssâjos de l’entèrface.
+Ceta enformacion serat publica.',
+'email' => 'Mèssageria èlèctronica',
+'prefs-help-realname' => 'U chouèx : se vos lo spècefiâd, serat utilisâ por vos atribuar voutres contribucions.',
+'prefs-help-email' => 'U chouèx : endicar voutra adrèce èlèctronica pèrmèt de vos mandar un mot de pâssa novél se vos oubliâd lo voutro.
+Vos pouede asse-ben dècidar de lèssiér los ôtros sè veriér vers vos avouéc voutra pâge de discussion, sen avêr fôta de dèvouèlar voutra identitât.',
+'prefs-help-email-required' => 'Una adrèce èlèctronica est nècèssèra.',
+'prefs-info' => 'Enformacion de bâsa',
+'prefs-i18n' => 'Entèrnacionalisacion',
+'prefs-signature' => 'Signatura',
+'prefs-dateformat' => 'Format de les dâtes',
+'prefs-timeoffset' => 'Dècalâjo horèro',
+'prefs-advancedediting' => 'Chouèx avanciês',
+'prefs-advancedrc' => 'Chouèx avanciês',
+'prefs-advancedrendering' => 'Chouèx avanciês',
+'prefs-advancedsearchoptions' => 'Chouèx avanciês',
+'prefs-advancedwatchlist' => 'Chouèx avanciês',
+'prefs-display' => 'Chouèx de visualisacion',
+'prefs-diffs' => 'Difèrences',
# User rights
-'userrights' => 'Administracion des drêts d’utilisator', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administracion a les tropes d’utilisators',
-'userrights-user-editname' => 'Buchiéd un nom d’utilisator :',
-'editusergroup' => 'Changiér les tropes a l’utilisator',
-'editinguser' => "Changement des drêts d’utilisator a '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Changement a les tropes a l’utilisator',
-'saveusergroups' => 'Sôvar les tropes a l’utilisator',
-'userrights-groupsmember' => 'Membro de :',
-'userrights-groups-help' => 'Vos pouede changiér les tropes a lesquintes est ceti utilisator.
+'userrights' => 'Administracion des drêts d’utilisator',
+'userrights-lookup-user' => 'Administracion a les tropes d’utilisators',
+'userrights-user-editname' => 'Buchiéd un nom d’utilisator :',
+'editusergroup' => 'Changiér les tropes a l’utilisator',
+'editinguser' => "Changement des drêts d’utilisator a '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Changement a les tropes a l’utilisator',
+'saveusergroups' => 'Sôvar les tropes a l’utilisator',
+'userrights-groupsmember' => 'Membro de :',
+'userrights-groupsmember-auto' => 'Membro emplicito de :',
+'userrights-groups-help' => 'Vos pouede changiér les tropes a lesquintes est ceti utilisator.
* Una câsa pouentâ vôt dére que l’utilisator sè trove dens cela tropa.
* Una câsa pas pouentâ vôt dére qu’y sè trove pas.
* Una petiôta ètêla (*) endique que vos porréd pas enlevar cela tropa setout que vos l’aréd apondua et l’un l’ôtro.',
-'userrights-reason' => 'Rêson :',
-'userrights-no-interwiki' => 'Vos avéd pas la pèrmission de changiér des drêts d’utilisator dessus d’ôtros vouiquis.',
-'userrights-nodatabase' => 'La bâsa de balyês « $1 » ègziste pas ou ben el est pas locala.',
-'userrights-nologin' => 'Vos vos dête [[Special:UserLogin|branchiér]] avouéc un compto d’administrator por balyér des drêts d’utilisator.',
-'userrights-notallowed' => 'Voutron compto at pas la pèrmission de balyér des drêts d’utilisator.',
-'userrights-changeable-col' => 'Les tropes que vos pouede changiér',
-'userrights-unchangeable-col' => 'Les tropes que vos pouede pas changiér',
+'userrights-reason' => 'Rêson :',
+'userrights-no-interwiki' => 'Vos avéd pas la pèrmission de changiér des drêts d’utilisator dessus d’ôtros vouiquis.',
+'userrights-nodatabase' => 'La bâsa de balyês « $1 » ègziste pas ou ben el est pas locala.',
+'userrights-nologin' => 'Vos vos dête [[Special:UserLogin|branchiér]] avouéc un compto d’administrator por balyér des drêts d’utilisator.',
+'userrights-notallowed' => 'Voutron compto at pas la pèrmission de balyér des drêts d’utilisator.',
+'userrights-changeable-col' => 'Les tropes que vos pouede changiér',
+'userrights-unchangeable-col' => 'Les tropes que vos pouede pas changiér',
# Groups
'group' => 'Tropa :',
@@ -1206,6 +1496,7 @@ Volyéd liére « math/README » por lo configurar.',
'right-bigdelete' => 'Suprimar des pâges qu’ont un grant historico',
'right-deleterevision' => 'Suprimar ou refâre una vèrsion spècefica d’una pâge',
'right-deletedhistory' => 'Vêre les entrâs des historicos suprimâs mas sen lor tèxto',
+'right-deletedtext' => 'Vêre lo tèxto suprimâ et les difèrences entre les vèrsions suprimâs',
'right-browsearchive' => 'Rechèrchiér des pâges suprimâs',
'right-undelete' => 'Refâre una pâge suprimâ',
'right-suppressrevision' => 'Revêre et refâre les vèrsions cachiês ux administrators',
@@ -1219,6 +1510,8 @@ Volyéd liére « math/README » por lo configurar.',
'right-editprotected' => 'Changiér les pâges protègiês (sen protèccion en cascâda)',
'right-editinterface' => 'Changiér l’entèrface de la programeria',
'right-editusercssjs' => 'Changiér los fichiérs CSS et JS d’ôtros utilisators',
+'right-editusercss' => 'Changiér los fichiérs CSS d’ôtros utilisators',
+'right-edituserjs' => 'Changiér los fichiérs JS d’ôtros utilisators',
'right-rollback' => 'Rèvocar rêdo los changements u dèrriér contributor d’una pâge spècefica',
'right-markbotedits' => 'Marcar des changements rèvocâs coment èyent étâ fêts per un bot',
'right-noratelimit' => 'Pas étre afèctâ per les limites de quota',
@@ -1235,6 +1528,8 @@ Volyéd liére « math/README » por lo configurar.',
'right-siteadmin' => 'Vèrrolyér ou dèvèrrolyér la bâsa de balyês',
'right-reset-passwords' => 'Changiér lo mot de pâssa d’ôtros utilisators',
'right-override-export-depth' => 'Èxportar les pâges en encllusent les pâges liyês tant qu’a una provondior de 5 nivéls',
+'right-versiondetail' => 'Vêre les enformacions ètendues sur les vèrsions de les programeries',
+'right-sendemail' => 'Mandar un mèssâjo ux ôtros utilisators',
# User rights log
'rightslog' => 'Jornal des changements de statut d’utilisator',
@@ -1284,8 +1579,17 @@ Volyéd liére « math/README » por lo configurar.',
'recentchanges-legend' => 'Chouèx des dèrriérs changements',
'recentchangestext' => 'Siude los dèrriérs changements du vouiqui sur ceta pâge.',
'recentchanges-feed-description' => 'Siude los dèrriérs changements du vouiqui dens ceti flux.',
+'recentchanges-label-legend' => 'Lègenda : $1.',
+'recentchanges-legend-newpage' => '$1 - pâge novèla',
+'recentchanges-label-newpage' => 'Ceti changement at fêt una pâge novèla.',
+'recentchanges-legend-minor' => '$1 - petiôt changement',
+'recentchanges-label-minor' => 'Ceti changement est petiôt.',
+'recentchanges-legend-bot' => '$1 - changement fêt per un bot',
+'recentchanges-label-bot' => 'Ceti changement at étâ fêt per un bot.',
+'recentchanges-legend-unpatrolled' => '$1 - changement pas survelyê',
+'recentchanges-label-unpatrolled' => 'Ceti changement at p’oncor étâ survelyê.',
'rcnote' => "Vê-que {{PLURAL:$1|lo dèrriér changement fêt|los '''$1''' dèrriérs changements fêts}} pendent {{PLURAL:$2|lo jorn passâ|los '''$2''' jorns passâs}} tant qu’a $5 lo $4.",
-'rcnotefrom' => "Vê-que los changements fêts dês lo '''$2''' ('''$1''' tot u ples).",
+'rcnotefrom' => "Vê-que los changements fêts dês lo '''$2''' ('''$1''' u més).",
'rclistfrom' => 'Fâre vêre los novéls changements dês lo $1.',
'rcshowhideminor' => '$1 los petiôts changements',
'rcshowhidebots' => '$1 los bots',
@@ -1310,6 +1614,8 @@ Volyéd liére « math/README » por lo configurar.',
# Recent changes linked
'recentchangeslinked' => 'Changements de les pâges liyês',
+'recentchangeslinked-feed' => 'Changements de les pâges liyês',
+'recentchangeslinked-toolbox' => 'Changements de les pâges liyês',
'recentchangeslinked-title' => 'Changements de les pâges liyês a « $1 »',
'recentchangeslinked-noresult' => 'Y at gins de changement sur les pâges liyês pendent lo temps chouèsi.',
'recentchangeslinked-summary' => "Ceta pâge spèciâla montre los dèrriérs changements sur les pâges que sont liyês.
@@ -1320,8 +1626,8 @@ Les pâges de voutra [[Special:Watchlist|lista de survelyence]] sont '''en grâs
# Upload
'upload' => 'Tèlèchargiér un fichiér',
'uploadbtn' => 'Tèlèchargiér lo fichiér',
-'reupload' => 'Tornar tèlèchargiér',
'reuploaddesc' => 'Anular lo tèlèchargement et tornar u formulèro de tèlèchargement.',
+'upload-tryagain' => 'Mandar la dèscripcion du fichiér changiê',
'uploadnologin' => 'Pas branchiê',
'uploadnologintext' => 'Vos dête étre [[Special:UserLogin|branchiê]] por tèlèchargiér des fichiérs sur lo sèrvor.',
'upload_directory_missing' => 'Lo rèpèrtouèro de tèlèchargement ($1) est entrovâblo et pués at pas possu étre fêt per lo sèrvor vouèbe.',
@@ -1355,6 +1661,7 @@ Vêde la [[Special:NewFiles|galerie des novéls fichiérs]] por una presentacion
'illegalfilename' => 'Lo nom de fichiér « $1 » contint des caractèros dèfendus dens los titros de pâges.
Lo volyéd renomar et pués lo tornar tèlèchargiér.',
'badfilename' => 'Lo fichiér at étâ renomâ en « $1 ».',
+'filetype-mime-mismatch' => 'L’èxtension du fichiér corrèspond pas u tipo MIME.',
'filetype-badmime' => 'Los fichiérs du tipo MIME « $1 » pôvont pas étre tèlèchargiês.',
'filetype-bad-ie-mime' => 'Lo fichiér pôt pas étre tèlèchargiê perce que serêt dècelâ coment « $1 » per Internet Explorer, cen que corrèspond a un tipo de fichiér dèfendu perce que pôt-étre dangerox.',
'filetype-unwanted-type' => "'''« .$1 »''' est un format de fichiér pas dèsirâ.
@@ -1379,7 +1686,6 @@ Por cen fâre vos devréd changiér la pâge a la man.
* Nom du fichiér a tèlèchargiér : '''<tt>[[:$1]]</tt>'''
* Nom du fichiér ègzistent : '''<tt>[[:$2]]</tt>'''
Volyéd chouèsir un ôtro nom.",
-'fileexists-thumb' => "<center>'''Fichiér ègzistent'''</center>",
'fileexists-thumbnail-yes' => "Lo fichiér semble étre una émâge en talye rèduita ''(figura)''.
[[$1|thumb]]
Volyéd controlar lo fichiér '''<tt>[[:$1]]</tt>'''.
@@ -1398,6 +1704,7 @@ Se vos voléd adés tèlèchargiér voutron fichiér, volyéd tornar arriér et
Vos devriâd controlar lo jornal de les suprèssions de cél fichiér devant que lo tornar tèlèchargiér.',
'successfulupload' => 'Tèlèchargement fêt avouéc reusséta',
'uploadwarning' => 'Atencion !',
+'uploadwarning-text' => 'Changiéd la dèscripcion du fichiér et pués tornâd èprovar.',
'savefile' => 'Sôvar lo fichiér',
'uploadedimage' => 'at tèlèchargiê « [[$1]] »',
'overwroteimage' => 'at tèlèchargiê una novèla vèrsion de « [[$1]] »',
@@ -1406,12 +1713,14 @@ Vos devriâd controlar lo jornal de les suprèssions de cél fichiér devant que
'php-uploaddisabledtext' => 'Lo tèlèchargement de fichiérs at étâ dèsactivâ dens PHP.
Volyéd controlar lo chouèx de configuracion « file_uploads ».',
'uploadscripted' => 'Cél fichiér contint de code HTML ou ben un scripte que porrêt étre entèrprètâ de façon fôssa per un navigator vouèbe.',
-'uploadcorrupt' => 'Cél fichiér est corrompu, il at una talye nula ou ben una èxtension envalida.
-Volyéd controlar lo fichiér devant que lo tornar tèlèchargiér.',
'uploadvirus' => 'Cél fichiér contint un virus ! Por més de dètalys, vêde : $1',
+'upload-source' => 'Fichiér sôrsa',
'sourcefilename' => 'Nom du fichiér sôrsa :',
+'sourceurl' => 'URL sôrsa :',
'destfilename' => 'Nom desot loquint lo fichiér serat encartâ :',
'upload-maxfilesize' => 'Talye la ples granta du fichiér : $1',
+'upload-description' => 'Dèscripcion du fichiér',
+'upload-options' => 'Chouèx de tèlèchargement',
'watchthisupload' => 'Siuvre ceti fichiér',
'filewasdeleted' => 'Un fichiér avouéc cél nom at ja étâ tèlèchargiê, et pués suprimâ.
Vos devriâd controlar lo $1 devant que lo tornar tèlèchargiér.',
@@ -1436,15 +1745,46 @@ MGP # Pentax
PICT # de totes sôrtes
#</pre> <!-- lèssiéd ceta legne justo d’ense -->',
-'upload-proto-error' => 'Protocolo fôx',
-'upload-proto-error-text' => 'Lo tèlèchargement a distance at fôta des URLs que començont per <code>http://</code> ou ben <code>ftp://</code>.',
-'upload-file-error' => 'Èrror de dedens',
-'upload-file-error-text' => 'Una èrror de dedens est arrevâ en volent fâre un fichiér temporèro sur lo sèrvor.
+'upload-proto-error' => 'Protocolo fôx',
+'upload-proto-error-text' => 'Lo tèlèchargement a distance at fôta des URLs que començont per <code>http://</code> ou ben <code>ftp://</code>.',
+'upload-file-error' => 'Èrror de dedens',
+'upload-file-error-text' => 'Una èrror de dedens est arrevâ en volent fâre un fichiér temporèro sur lo sèrvor.
Vos volyéd veriér vers un [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Èrror encognua pendent lo tèlèchargement',
-'upload-misc-error-text' => 'Una èrror encognua est arrevâ pendent lo tèlèchargement.
+'upload-misc-error' => 'Èrror encognua pendent lo tèlèchargement',
+'upload-misc-error-text' => 'Una èrror encognua est arrevâ pendent lo tèlèchargement.
Volyéd controlar que l’URL est valida et accèssibla, et pués tornâd èprovar.
Se lo problèmo continue, veriéd-vos vers un [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'L’URL contint trop de redirèccions',
+'upload-unknown-size' => 'Talye encognua',
+'upload-http-error' => 'Una èrror HTTP est arrevâ : $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accès refusâ',
+'img-auth-nopathinfo' => 'PATH_INFO manquent.
+Voutron sèrvor est pas dèfeni por passar ceta enformacion.
+Fonccione pôt-étre en CGI et pués recognêt pas img_auth.
+Vêde http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Lo chemin demandâ est pas lo rèpèrtouèro de tèlèchargement configurâ.',
+'img-auth-badtitle' => 'Empossiblo de construire un titro valido dês « $1 ».',
+'img-auth-nologinnWL' => 'Vos éte pas branchiê et pués « $1 » est pas dens la lista blanche.',
+'img-auth-nofile' => 'Lo fichiér « $1 » ègziste pas.',
+'img-auth-isdir' => 'Vos tâchiéd d’arrevar u rèpèrtouèro « $1 ».
+Solament l’accès ux fichiérs est pèrmês.',
+'img-auth-streaming' => 'Lèctura en continu de « $1 ».',
+'img-auth-public' => 'La fonccion de img_auth.php est de fâre vêre des fichiérs d’un vouiqui privâ.
+Ceti vouiqui est configurâ coment un vouiqui publico.
+Por una sècuritât parfèta, img_auth.php est dèsactivâ.',
+'img-auth-noread' => 'L’utilisator at pas lo drêt en lèctura dessus « $1 ».',
+
+# HTTP errors
+'http-invalid-url' => 'URL fôssa : $1',
+'http-invalid-scheme' => 'Les URLs avouéc lo plan « $1 » sont pas recognues.',
+'http-request-error' => 'Èrror encognua pendent l’èxpèdicion de la requéta.',
+'http-read-error' => 'Èrror de lèctura HTTP.',
+'http-timed-out' => 'La requéta HTTP at èxpirâ.',
+'http-curl-error' => 'Èrror pendent la rècupèracion de l’URL : $1',
+'http-host-unreachable' => 'URL pas juentâbla.',
+'http-bad-status' => 'Y at avu un problèmo pendent la requéta HTTP : $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL pas juentâbla',
@@ -1456,6 +1796,7 @@ Volyéd controlar que lo seto est en legne, atendre un pou et pués tornar èpro
Vos pouede asse-ben tornar èprovar a una hora de muendra afluence.',
'license' => 'Licence :',
+'license-header' => 'Licence',
'nolicense' => 'Gins de licence chouèsia',
'license-nopreview' => '(Prèvisualisacion pas disponibla)',
'upload_source_url' => ' (una URL valida et accèssibla publicament)',
@@ -1476,6 +1817,7 @@ Clicar sur un en-téta de colona pèrmèt de changiér l’ôrdre de visualisaci
'listfiles_count' => 'Vèrsions',
# File description page
+'file-anchor-link' => 'Fichiér',
'filehist' => 'Historico du fichiér',
'filehist-help' => 'Clicar sur una dâta et hora por vêre lo fichiér coment il ére a cél moment.',
'filehist-deleteall' => 'tot suprimar',
@@ -1490,6 +1832,7 @@ Clicar sur un en-téta de colona pèrmèt de changiér l’ôrdre de visualisaci
'filehist-dimensions' => 'Dimensions',
'filehist-filesize' => 'Talye du fichiér',
'filehist-comment' => 'Comentèro',
+'filehist-missing' => 'Fichiér manquent',
'imagelinks' => 'Usâjos du fichiér',
'linkstoimage' => '{{PLURAL:$1|Ceta pâge utilise|Cetes $1 pâges utilisont}} ceti fichiér :',
'linkstoimage-more' => 'Més de {{PLURAL:$1|yona pâge utilise|$1 pâges utilisont}} ceti fichiér.
@@ -1499,15 +1842,16 @@ Una [[Special:WhatLinksHere/$2|lista complèta]] est disponibla.',
'morelinkstoimage' => 'Vêde [[Special:WhatLinksHere/$1|més de lims]] de vers ceti fichiér.',
'redirectstofile' => '{{PLURAL:$1|Ceti fichiér redirige|Cetos fichiérs redirijont}} vers ceti :',
'duplicatesoffile' => '{{PLURAL:$1|Ceti fichiér est un doblo|Cetos fichiérs sont des doblos}} de ceti ([[Special:FileDuplicateSearch/$2|més de dètalys]]) :',
-'sharedupload' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Reportâd-vos a la [$1 pâge de dèscripcion] por més d’enformacions.',
-'shareduploadwiki-desc' => 'La dèscripcion montrâ ce-desot vint de sa $1 dens lo dèpôt de fichiérs partagiê.',
-'shareduploadwiki-linktext' => 'Pâge de dèscripcion du fichiér',
-'noimage' => 'Nion fichiér ègziste desot cél nom, mas vos pouede $1.',
-'noimage-linktext' => 'nen tèlèchargiér yon',
+'sharedupload' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.',
+'sharedupload-desc-there' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.
+Vêde sa [$2 pâge de dèscripcion] por més d’enformacions.',
+'sharedupload-desc-here' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.
+La dèscripcion de sa [$2 pâge de dèscripcion] est montrâ ce-desot.',
+'filepage-nofile' => 'Nion fichiér de cél nom ègziste.',
+'filepage-nofile-link' => 'Nion fichiér de cél nom ègziste, mas vos en pouede [$1 tèlèchargiér yon].',
'uploadnewversion-linktext' => 'Tèlèchargiér una novèla vèrsion de ceti fichiér',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'un dèpôt de fichiérs partagiê', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'un dèpôt de fichiérs partagiê',
# File reversion
'filerevert' => 'Rètablir $1',
@@ -1536,6 +1880,7 @@ Una [[Special:WhatLinksHere/$2|lista complèta]] est disponibla.',
** Violacion du drêt d’ôtor
** Fichiér en doblo',
'filedelete-edit-reasonlist' => 'Changiér les rêsons de suprèssion',
+'filedelete-maintenance' => 'La suprèssion et la rèstoracion de fichiérs est temporèrament dèsactivâ pendent la mantegnence.',
# MIME search
'mimesearch' => 'Rechèrche per tipo de contegnu MIME',
@@ -1558,7 +1903,7 @@ Oubliâd pas de controlar s’y at pas d’ôtros lims de vers los modèlos deva
# Random page
'randompage' => 'Pâge a l’hasârd',
-'randompage-nopages' => 'Y at gins de pâge dens l’èspâço de nom « $1 ».',
+'randompage-nopages' => 'Y at gins de pâge dens {{PLURAL:$2|ceti èspâço|cetos èspâços}} de noms : $1.',
# Random redirect
'randomredirect' => 'Pâge de redirèccion a l’hasârd',
@@ -1570,6 +1915,7 @@ Oubliâd pas de controlar s’y at pas d’ôtros lims de vers los modèlos deva
'statistics-header-edits' => 'Statistiques des changements',
'statistics-header-views' => 'Statistiques de les visualisacions',
'statistics-header-users' => 'Statistiques ux utilisators',
+'statistics-header-hooks' => 'Ôtres statistiques',
'statistics-articles' => 'Pâges de contegnu',
'statistics-pages' => 'Pâges',
'statistics-pages-desc' => 'Totes les pâges du vouiqui, les pâges de discussion, les redirèccions, ... avouéc',
@@ -1599,8 +1945,8 @@ Les entrâs <s>barrâs</s> ont étâ solucionâs.',
'brokenredirects' => 'Redirèccions câsses',
'brokenredirectstext' => 'Cetes redirèccions mènont vers des pâges pas ègzistentes :',
-'brokenredirects-edit' => '(changiér)',
-'brokenredirects-delete' => '(suprimar)',
+'brokenredirects-edit' => 'changiér',
+'brokenredirects-delete' => 'suprimar',
'withoutinterwiki' => 'Pâges sen lims entèrlengoues',
'withoutinterwiki-summary' => 'Cetes pâges ont gins de lim de vers d’ôtres lengoues :',
@@ -1709,7 +2055,7 @@ Contint sûrement yon ou ben un mouél de caractèros que pôvont pas étre util
# Special:Categories
'categories' => 'Catègories',
-'categoriespagetext' => 'Cetes catègories sont utilisâs per des pâges ou ben des fichiérs multimèdia.
+'categoriespagetext' => '{{PLURAL:$1|Ceta catègorie est utilisâ|Cetes catègories sont utilisâs}} per des pâges ou ben des fichiérs multimèdia.
Les [[Special:UnusedCategories|catègories inutilisâs]] sont pas montrâs ique.
Vêde asse-ben les [[Special:WantedCategories|catègories les ples demandâs]].',
'categoriesfrom' => 'Fâre vêre les catègories dês :',
@@ -1717,8 +2063,9 @@ Vêde asse-ben les [[Special:WantedCategories|catègories les ples demandâs]].'
'special-categories-sort-abc' => 'tri alfabètico',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribucions suprimâs',
-'deletedcontributions-title' => 'Contribucions suprimâs',
+'deletedcontributions' => 'Contribucions suprimâs',
+'deletedcontributions-title' => 'Contribucions suprimâs',
+'sp-deletedcontributions-contribs' => 'contribucions',
# Special:LinkSearch
'linksearch' => 'Lims de defôr',
@@ -1735,6 +2082,16 @@ Protocolos recognus : <tt>$1</tt>.',
'listusers-submit' => 'Listar',
'listusers-noresult' => 'Gins d’utilisator trovâ.
Controlâd asse-ben les variantes de câssa.',
+'listusers-blocked' => '(blocâ)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista des utilisators actifs',
+'activeusers-intro' => 'O est una lista ux utilisators qu’ont ègzèrciê una activitât quinta que seye pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|novél changement|novéls changements}} dens {{PLURAL:$3|lo jorn passâ|los $3 jorns passâs}}',
+'activeusers-from' => 'Fâre vêre los utilisators dês :',
+'activeusers-hidebots' => 'Cachiér los bots',
+'activeusers-hidesysops' => 'Cachiér los administrators',
+'activeusers-noresult' => 'Gins d’utilisator trovâ.',
# Special:Log/newusers
'newuserlogpage' => 'Jornal de les crèacions de comptos utilisator',
@@ -1745,17 +2102,23 @@ Controlâd asse-ben les variantes de câssa.',
'newuserlog-autocreate-entry' => 'Compto fêt ôtomaticament',
# Special:ListGroupRights
-'listgrouprights' => 'Drêts a les tropes d’utilisators',
-'listgrouprights-summary' => 'Ceta pâge contint una lista a les tropes dèfenies sur ceti vouiqui et pués los drêts d’accès que lor sont associyês.
+'listgrouprights' => 'Drêts a les tropes d’utilisators',
+'listgrouprights-summary' => 'Ceta pâge contint una lista a les tropes dèfenies sur ceti vouiqui et pués los drêts d’accès que lor sont associyês.
Y pôt avêr [[{{MediaWiki:Listgrouprights-helppage}}|més d’enformacions]] sur los drêts particuliérs.',
-'listgrouprights-group' => 'Tropa',
-'listgrouprights-rights' => 'Drêts associyês',
-'listgrouprights-helppage' => 'Help:Drêts a les tropes',
-'listgrouprights-members' => '(lista ux membros)',
-'listgrouprights-addgroup' => 'Apondre des membros a {{PLURAL:$2|la tropa|les tropes}} : $1',
-'listgrouprights-removegroup' => 'Enlevar des membros de {{PLURAL:$2|la tropa|les tropes}} : $1',
-'listgrouprights-addgroup-all' => 'Apondre des membros a totes les tropes',
-'listgrouprights-removegroup-all' => 'Enlevar des membros de totes les tropes',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Drêt balyê</span>
+* <span class="listgrouprights-revoked">Drêt rèvocâ</span>',
+'listgrouprights-group' => 'Tropa',
+'listgrouprights-rights' => 'Drêts associyês',
+'listgrouprights-helppage' => 'Help:Drêts a les tropes',
+'listgrouprights-members' => '(lista ux membros)',
+'listgrouprights-addgroup' => 'Apondre des membros a {{PLURAL:$2|la tropa|les tropes}} : $1',
+'listgrouprights-removegroup' => 'Enlevar des membros de {{PLURAL:$2|la tropa|les tropes}} : $1',
+'listgrouprights-addgroup-all' => 'Apondre des membros a totes les tropes',
+'listgrouprights-removegroup-all' => 'Enlevar des membros de totes les tropes',
+'listgrouprights-addgroup-self' => 'Sè pôt apondre {{PLURAL:$2|la tropa|les tropes}} a son prôpro compto : $1',
+'listgrouprights-removegroup-self' => 'Sè pôt enlevar {{PLURAL:$2|la tropa|les tropes}} de son prôpro compto : $1',
+'listgrouprights-addgroup-self-all' => 'Sè pôt apondre totes les tropes a son prôpro compto',
+'listgrouprights-removegroup-self-all' => 'Sè pôt enlevar totes les tropes de son prôpro compto',
# E-mail user
'mailnologin' => 'Gins d’adrèce d’èxpèdior',
@@ -1829,24 +2192,28 @@ Los changements a vegnir de ceta pâge et de sa pâge de discussion y seront lis
'enotif_anon_editor' => 'utilisator pas encartâ $1',
'enotif_body' => 'Chier(a) $WATCHINGUSERNAME,
-la pâge « $PAGETITLE » de {{SITENAME}} at étâ $CHANGEDORCREATED lo $PAGEEDITDATE per $PAGEEDITOR, vêde $PAGETITLE_URL por vêre la vèrsion d’ora.
+
+la pâge « $PAGETITLE » de {{SITENAME}} at étâ $CHANGEDORCREATED lo $PAGEEDITDATE per « $PAGEEDITOR », vêde $PAGETITLE_URL por vêre la vèrsion d’ora.
$NEWPAGE
Rèsumâ u contributor : $PAGESUMMARY $PAGEMINOREDIT
Veriéd-vos vers cél contributor :
-mèl : $PAGEEDITOR_EMAIL
+mèl. : $PAGEEDITOR_EMAIL
vouiqui : $PAGEEDITOR_WIKI
Y arat pas d’ôtres notificacions en câs de changements a vegnir, a muens que vos visitâd cela pâge.
-Vos pouede asse-ben tornar inicialisar lo notifior por totes les pâges de voutra lista de survelyence.
+Vos pouede asse-ben tornar inicialisar los drapéls de notificacion por totes les pâges de voutra lista de survelyence.
Voutron sistèmo de notificacion de {{SITENAME}}
--
Por changiér los paramètres de voutra lista de survelyence, visitâd
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Por suprimar la pâge de voutra lista de survelyence, visitâd
+$UNWATCHURL
Retôrn et assistance :
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1860,10 +2227,11 @@ Retôrn et assistance :
'exblank' => 'la pâge ére voueda',
'delete-confirm' => 'Suprimar « $1 »',
'delete-legend' => 'Suprimar',
-'historywarning' => 'Atencion : la pâge que vos éte prèst a suprimar at un historico :',
+'historywarning' => "'''Atencion :''' la pâge que vos éte prèst a suprimar at un historico que contint a pou prés $1 {{PLURAL:$1|vèrsion|vèrsions}} :",
'confirmdeletetext' => 'Vos éte prèst a suprimar una pâge ou ben un fichiér et pués tot son historico.
Volyéd confirmar qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos féte cen en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].',
'actioncomplete' => 'Accion fêta',
+'actionfailed' => 'L’accion at pas reussia',
'deletedtext' => '« <nowiki>$1</nowiki> » at étâ suprimâ.
Vêde lo $2 por una lista de les novèles suprèssions.',
'deletedarticle' => 'at suprimâ « [[$1]] »',
@@ -1887,21 +2255,22 @@ La suprimar pôt troblar lo fonccionement de la bâsa de balyês de {{SITENAME}}
a fâre avouéc prudence.',
# Rollback
-'rollback' => 'Rèvocar los changements',
-'rollback_short' => 'Rèvocar',
-'rollbacklink' => 'rèvocar',
-'rollbackfailed' => 'La rèvocacion at pas reussia',
-'cantrollback' => 'Empossiblo de rèvocar lo changement ;
+'rollback' => 'Rèvocar los changements',
+'rollback_short' => 'Rèvocar',
+'rollbacklink' => 'rèvocar',
+'rollbackfailed' => 'La rèvocacion at pas reussia',
+'cantrollback' => 'Empossiblo de rèvocar lo changement ;
lo dèrriér contributor est lo solèt ôtor de ceta pâge.',
-'alreadyrolled' => 'Empossiblo de rèvocar lo dèrriér changement de la pâge « [[:$1]] » fêt per [[User:$2|$2]] ([[User talk:$2|Discutar]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+'alreadyrolled' => 'Empossiblo de rèvocar lo dèrriér changement de la pâge « [[:$1]] » fêt per [[User:$2|$2]] ([[User talk:$2|Discutar]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
quârqu’un d’ôtro at ja changiê ou ben rèvocâ la pâge.
Lo dèrriér changement de la pâge at étâ fêt per [[User:$3|$3]] ([[User talk:$3|Discutar]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Lo rèsumâ du changement ére : « ''$1'' ».", # only shown if there is an edit comment
-'revertpage' => 'Rèvocacion des changements a [[Special:Contributions/$2|$2]] ([[User talk:$2|Discutar]]) de vers la dèrriére vèrsion a [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Rèvocacion des changements fêts per $1 ;
+'editcomment' => "Lo rèsumâ du changement ére : « ''$1'' ».",
+'revertpage' => 'Rèvocacion des changements a [[Special:Contributions/$2|$2]] ([[User talk:$2|Discutar]]) de vers la dèrriére vèrsion a [[User:$1|$1]]',
+'revertpage-nouser' => 'Rèvocacion des changements per (nom d’utilisator suprimâ) a la dèrriére vèrsion per [[User:$1|$1]]',
+'rollback-success' => 'Rèvocacion des changements fêts per $1 ;
rètablissement de la dèrriére vèrsion per $2.',
-'sessionfailure' => 'Voutra sèance de branchement semble avêr des problèmos ;
+'sessionfailure' => 'Voutra sèance de branchement semble avêr des problèmos ;
cela accion at étâ anulâ en prèvencion d’un piratâjo de sèance.
Volyéd clicar dessus « Devant », rechargiér la pâge de yô que vos vegnéd, et pués tornar èprovar.',
@@ -1920,7 +2289,7 @@ Vêde la [[Special:ProtectedPages|lista de les pâges protègiês]] por vêre le
'protectexpiry' => 'Dâta d’èxpiracion :',
'protect_expiry_invalid' => 'La dâta d’èxpiracion est envalida.',
'protect_expiry_old' => 'La dâta d’èxpiracion est ja passâ.',
-'protect-unchain' => 'Dèblocar les pèrmissions de changement de nom',
+'protect-unchain-permissions' => 'Dèvèrrolyér adés més de chouèx de protèccion',
'protect-text' => "Vos pouede vêre et changiér lo nivél de protèccion de la pâge '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Vos pouede pas changiér los nivéls de protèccion tant que vos éte blocâ.
Vê-que la configuracion d’ora de la pâge '''$1''' :",
@@ -1950,7 +2319,7 @@ Vos pouede changiér lo nivél de protèccion de ceta pâge sen que cen afècte
** Conflits de changements contre-productifs
** Pâge a trafic fôrt',
'protect-edit-reasonlist' => 'Changiér les rêsons de protèccion',
-'protect-expiry-options' => '1 hora:1 hour,1 jorn:1 day,1 semana:1 week,2 semanes:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,sen fin:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 jorn:1 day,1 semana:1 week,2 semanes:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,sen fin:infinite',
'restriction-type' => 'Pèrmission :',
'restriction-level' => 'Nivél de rèstriccion :',
'minimum-size' => 'Talye la ples petiôta',
@@ -1993,6 +2362,7 @@ Vos avéd pôt-étre un crouyo lim, ou ben la vèrsion at possu étre refêta ou
'undelete-nodiff' => 'Gins de vèrsion devant trovâ.',
'undeletebtn' => 'Refâre',
'undeletelink' => 'vêre / refâre',
+'undeleteviewlink' => 'vêre',
'undeletereset' => 'Tornar inicialisar',
'undeleteinvert' => 'Envèrsar lo chouèx',
'undeletecomment' => 'Rêson :',
@@ -2032,19 +2402,24 @@ $1',
'contributions-title' => 'Lista de les contribucions a l’utilisator $1',
'mycontris' => 'Contribucions',
'contribsub2' => 'Por $1 ($2)',
-'nocontribs' => 'Y at gins de changement que corrèspond a cetos critèros.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Y at gins de changement que corrèspond a cetos critèros.',
'uctop' => '(dèrriére)',
'month' => 'Dês lo mês (et devant) :',
'year' => 'Dês l’an (et devant) :',
-'sp-contributions-newbies' => 'Fâre vêre ren que les contribucions ux novéls utilisators',
-'sp-contributions-newbies-sub' => 'Permié los comptos novéls',
-'sp-contributions-newbies-title' => 'Contribucions d’utilisators permié los comptos novéls',
-'sp-contributions-blocklog' => 'jornal des blocâjos',
-'sp-contributions-logs' => 'jornals',
-'sp-contributions-search' => 'Rechèrchiér les contribucions',
-'sp-contributions-username' => 'Adrèce IP ou ben nom d’utilisator :',
-'sp-contributions-submit' => 'Rechèrchiér',
+'sp-contributions-newbies' => 'Fâre vêre ren que les contribucions ux novéls utilisators',
+'sp-contributions-newbies-sub' => 'Permié los comptos novéls',
+'sp-contributions-newbies-title' => 'Contribucions d’utilisators permié los comptos novéls',
+'sp-contributions-blocklog' => 'jornal des blocâjos',
+'sp-contributions-deleted' => 'contribucions suprimâs',
+'sp-contributions-logs' => 'jornals',
+'sp-contributions-talk' => 'discutar',
+'sp-contributions-userrights' => 'administrar los drêts d’utilisator',
+'sp-contributions-blocked-notice' => 'Ceti utilisator est ora blocâ.
+La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
+'sp-contributions-search' => 'Rechèrchiér les contribucions',
+'sp-contributions-username' => 'Adrèce IP ou ben nom d’utilisator :',
+'sp-contributions-submit' => 'Rechèrchiér',
# What links here
'whatlinkshere' => 'Pâges liyês',
@@ -2067,6 +2442,7 @@ $1',
# Block/unblock
'blockip' => 'Blocar l’utilisator',
+'blockip-title' => 'Blocar l’utilisator',
'blockip-legend' => 'Blocar l’utilisator',
'blockiptext' => 'Utilisâd lo formulèro ce-desot por blocar l’accès en ècritura dês una adrèce IP spècefica ou ben un nom d’utilisator.
Una tâla mesera devrêt étre prêsa ren que por empachiér lo vandalismo et en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].
@@ -2090,7 +2466,7 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont
'ipbenableautoblock' => 'Blocar ôtomaticament la dèrriére adrèce IP utilisâ per l’utilisator et pués totes ses adrèces IP a vegnir que porrêt èprovar',
'ipbsubmit' => 'Blocar ceti utilisator',
'ipbother' => 'Ôtro temps :',
-'ipboptions' => '2 hores:2 hours,1 jorn:1 day,3 jorns:3 days,1 semana:1 week,2 semanes:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,sen fin:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hores:2 hours,1 jorn:1 day,3 jorns:3 days,1 semana:1 week,2 semanes:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,sen fin:infinite',
'ipbotheroption' => 'ôtra',
'ipbotherreason' => 'Ôtra rêson / rêson de ples :',
'ipbhidename' => 'Cachiér lo nom d’utilisator des changements et de les listes',
@@ -2119,9 +2495,11 @@ Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs
'ipblocklist-sh-tempblocks' => '$1 los blocâjos temporèros',
'ipblocklist-sh-addressblocks' => '$1 los blocâjos d’adrèces IP solètes',
'ipblocklist-submit' => 'Rechèrchiér',
+'ipblocklist-localblock' => 'Blocâjo local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ôtro blocâjo|Ôtros blocâjos}}',
'blocklistline' => '$1 : $2 at blocâ $3 ; $4',
'infiniteblock' => 'sen fin',
-'expiringblock' => 'èxpire lo $1',
+'expiringblock' => 'èxpire lo $1 a $2',
'anononlyblock' => 'ren que los utilisators pas encartâs',
'noautoblockblock' => 'blocâjo ôtomatico dèsactivâ',
'createaccountblock' => 'crèacion de compto blocâ',
@@ -2136,7 +2514,10 @@ Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs
'autoblocker' => 'Vos avéd étâ blocâ ôtomaticament perce que voutra adrèce IP at étâ utilisâ dèrriérement per « [[User:$1|$1]] ».
La rêson balyê por lo blocâjo a $1 est : « $2 ».',
'blocklogpage' => 'Jornal des blocâjos',
-'blocklog-fulllog' => 'Jornal complèt des blocâjos',
+'blocklog-showlog' => 'Ceti utilisator at étâ blocâ dês devant.
+Lo jornal des blocâjos est disponiblo ce-desot :',
+'blocklog-showsuppresslog' => 'Ceti utilisator at étâ blocâ et pués cachiê dês devant.
+Lo jornal de les suprèssions est disponiblo ce-desot :',
'blocklogentry' => 'at blocâ [[$1]] ; èxpiracion : $2 $3',
'reblock-logentry' => 'at changiê los paramètres du blocâjo a [[$1]] avouéc una èxpiracion u $2 $3',
'blocklogtext' => 'O est lo jornal des blocâjos et des dèblocâjos ux utilisators.
@@ -2158,11 +2539,13 @@ Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs
'ipb-needreblock' => '== Ja blocâ ==
$1 est ja blocâ.
Voléd-vos changiér los paramètres ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Ôtro blocâjo|Ôtros blocâjos}}',
'ipb_cant_unblock' => 'Èrror : identifiant de blocâjo $1 pas trovâ.
O est possiblo qu’un dèblocâjo èye ja étâ fêt.',
'ipb_blocked_as_range' => 'Èrror : l’adrèce IP $1 est pas blocâ tot drêt et pôt vêr pas étre dèblocâ.
Portant, el est avouéc la plage $2 que pôt étre dèblocâ.',
'ip_range_invalid' => 'Plage d’adrèces IP fôssa.',
+'ip_range_toolarge' => 'Los blocâjos de plages d’adrèces IP ples grantes que /$1 sont pas ôtorisâs.',
'blockme' => 'Blocâd-mè',
'proxyblocker' => "Bloquior de sèrvors mandatèros (''proxies'')",
'proxyblocker-disabled' => 'Cela fonccion est dèsactivâ.',
@@ -2173,6 +2556,7 @@ Vos volyéd veriér vers voutron fornissor d’accès u Malyâjo ou ben voutra a
'sorbs_create_account_reason' => "Voutra adrèce IP est listâ coment sèrvor mandatèro (''proxy'') uvèrt dens lo DNSBL utilisâ per {{SITENAME}}.
Vos pouede pas fâre un compto.",
'cant-block-while-blocked' => 'Vos pouede pas blocar d’ôtros utilisators tant que vos éte blocâ.',
+'cant-see-hidden-user' => 'L’utilisator que vos tâchiéd de blocar at ja étâ blocâ et cachiê. Pas èyent lo drêt hideuser, vos pouede pas vêre ou ben changiér lo blocâjo a l’utilisator.',
# Developer tools
'lockdb' => 'Vèrrolyér la bâsa de balyês',
@@ -2216,6 +2600,7 @@ assurâd-vos de nen avêr comprês les consèquences devant que continuar.",
Dens celos câs, vos devréd renomar ou ben fusionar la pâge a la man se vos lo voléd.",
'movearticle' => 'Renomar la pâge :',
+'moveuserpage-warning' => "'''Atencion :''' vos éte prèst a renomar una pâge utilisator. Volyéd notar que solament la pâge serat renomâ et que l’utilisator serat '''pas''' renomâ.",
'movenologin' => 'Pas branchiê',
'movenologintext' => 'Por povêr renomar una pâge, vos dête étre [[Special:UserLogin|branchiê]] coment utilisator encartâ.',
'movenotallowed' => 'Vos avéd pas la pèrmission de renomar les pâges.',
@@ -2226,7 +2611,7 @@ Dens celos câs, vos devréd renomar ou ben fusionar la pâge a la man se vos lo
'move-watch' => 'Siuvre ceta pâge',
'movepagebtn' => 'Renomar la pâge',
'pagemovedsub' => 'Changement de nom reussi',
-'movepage-moved' => "'''« $1 » at étâ renomâ en « $2 »'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''« $1 » at étâ renomâ en « $2 »'''",
'movepage-moved-redirect' => 'Una redirèccion dês lo viely nom at étâ fêta.',
'movepage-moved-noredirect' => 'La crèacion d’una redirèccion dês lo viely nom at étâ anulâ.',
'articleexists' => 'Ègziste ja una pâge que pôrte cél titro, ou ben lo titro que vos éd chouèsi est fôx.
@@ -2270,6 +2655,14 @@ empossiblo de renomar una pâge sur lyé-méma.',
'imageinvalidfilename' => 'Lo nom du fichiér ciba est fôx',
'fix-double-redirects' => 'Betar a jorn les redirèccions que pouentont vers lo titro originâl',
'move-leave-redirect' => 'Lèssiér una redirèccion de vers lo titro novél',
+'protectedpagemovewarning' => "'''ATENCION :''' ceta pâge at étâ protègiê de façon que solament los utilisators qu’ont lo statut d’administrator la pouessont renomar.
+La dèrriére entrâ du jornal est montrâ ce-desot coment refèrence :",
+'semiprotectedpagemovewarning' => "'''Nota :''' ceta pâge at étâ protègiê de façon que solament los utilisators encartâs la pouessont renomar.
+La dèrriére entrâ du jornal est montrâ ce-desot coment refèrence :",
+'move-over-sharedrepo' => '== Lo fichiér ègziste ==
+[[:$1]] ègziste ja sur un dèpôt de fichiérs partagiê. Renomar cél fichiér rendrat lo fichiér sur lo dèpôt de fichiérs partagiê pas accèssiblo.',
+'file-exists-sharedrepo' => 'Lo nom chouèsi est ja utilisâ per un fichiér sur un dèpôt de fichiérs partagiê.
+Nen volyéd chouèsir un ôtro.',
# Export
'export' => 'Èxportar des pâges',
@@ -2292,15 +2685,21 @@ Dens cél dèrriér câs, vos pouede asse-ben utilisar un lim, coment [[{{#Speci
'export-pagelinks' => 'Encllure les pâges liyês a una provondior de :',
# Namespace 8 related
-'allmessages' => 'Mèssâjos sistèmo',
-'allmessagesname' => 'Nom du mèssâjo',
-'allmessagesdefault' => 'Tèxto per dèfôt',
-'allmessagescurrent' => 'Tèxto d’ora',
-'allmessagestext' => 'O est la lista des mèssâjos sistèmo disponiblos dens l’èspâço MediaWiki.
+'allmessages' => 'Mèssâjos sistèmo',
+'allmessagesname' => 'Nom du mèssâjo',
+'allmessagesdefault' => 'Tèxto per dèfôt',
+'allmessagescurrent' => 'Tèxto d’ora',
+'allmessagestext' => 'O est la lista des mèssâjos sistèmo disponiblos dens l’èspâço MediaWiki.
Volyéd visitar la [http://www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [http://translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
-'allmessagesnotsupportedDB' => "Ceta pâge '''{{ns:special}}:Allmessages''' est inutilisâbla perce que '''\$wgUseDatabaseMessages''' at étâ dèsactivâ.",
-'allmessagesfilter' => 'Filtro de noms de mèssâjo :',
-'allmessagesmodified' => 'Fâre vêre ren que los changements',
+'allmessagesnotsupportedDB' => "Ceta pâge '''{{ns:special}}:Allmessages''' est inutilisâbla perce que '''\$wgUseDatabaseMessages''' at étâ dèsactivâ.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar per ètat de changement :',
+'allmessages-filter-unmodified' => 'Pas changiê',
+'allmessages-filter-all' => 'Tôs',
+'allmessages-filter-modified' => 'Changiê',
+'allmessages-prefix' => 'Filtrar per prèfixo :',
+'allmessages-language' => 'Lengoua :',
+'allmessages-filter-submit' => 'Aplicar',
# Thumbnails
'thumbnail-more' => 'Agrantir',
@@ -2310,6 +2709,9 @@ Volyéd visitar la [http://www.mediawiki.org/wiki/Localisation localisacion de M
'djvu_no_xml' => 'Empossiblo de rècupèrar lo XML por lo fichiér DjVu',
'thumbnail_invalid_params' => 'Paramètres de la figura fôx',
'thumbnail_dest_directory' => 'Empossiblo de fâre lo rèpèrtouèro de dèstinacion',
+'thumbnail_image-type' => 'Tipo d’émâge pas recognu',
+'thumbnail_gd-library' => 'Configuracion encomplèta de la bibliotèca GD : fonccion $1 entrovâbla',
+'thumbnail_image-missing' => 'Ceti fichiér est entrovâblo : $1',
# Special:Import
'import' => 'Importar des pâges',
@@ -2380,6 +2782,7 @@ Volyéd utilisar lo boton de prèvisualisacion devant que sôvar.',
Portant, vos en pouede vêre lo tèxto sôrsa.',
'tooltip-ca-history' => 'Les vèrsions passâs de ceta pâge (avouéc lors contributors)',
'tooltip-ca-protect' => 'Protègiér ceta pâge',
+'tooltip-ca-unprotect' => 'Dèprotègiér ceta pâge',
'tooltip-ca-delete' => 'Suprimar ceta pâge',
'tooltip-ca-undelete' => 'Refâre los changements fêts sur ceta pâge devant sa suprèssion',
'tooltip-ca-move' => 'Renomar ceta pâge',
@@ -2390,6 +2793,7 @@ Portant, vos en pouede vêre lo tèxto sôrsa.',
'tooltip-search-fulltext' => 'Rechèrchiér les pâges que presentont ceti tèxto.',
'tooltip-p-logo' => 'Pâge principâla',
'tooltip-n-mainpage' => 'Visitar la pâge de reçua du seto',
+'tooltip-n-mainpage-description' => 'Alar a la reçua',
'tooltip-n-portal' => 'A propôs du projèt',
'tooltip-n-currentevents' => 'Trovar les enformacions de fond sur les dèrriéres novèles',
'tooltip-n-recentchanges' => 'Lista des dèrriérs changements sur lo vouiqui',
@@ -2437,6 +2841,7 @@ Pèrmèt de rètablir la vèrsion devant et pués d’apondre una rêson dens la
'chick.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Pugin ». */',
'simple.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Simplo ». */',
'modern.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Modèrno ». */',
+'vector.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Vèctor ». */',
'print.css' => '/* Lo code CSS betâ ique afècterat les emprèssions. */',
'handheld.css' => '/* Lo code CSS betâ ique afècterat los aparèlys mobilos d’aprés l’habelyâjo configurâ dedens « $wgHandheldStyle ». */',
@@ -2450,6 +2855,7 @@ Pèrmèt de rètablir la vèrsion devant et pués d’apondre una rêson dens la
'chick.js' => '/* Tot code JavaScript betâ ique serat chargiê avouéc les pâges accèdâs per ren que los utilisators de l’habelyâjo « Pugin ». */',
'simple.js' => '/* Tot code JavaScript betâ ique serat chargiê avouéc les pâges accèdâs per ren que los utilisators de l’habelyâjo « Simplo ». */',
'modern.js' => '/* Tot code JavaScript betâ ique serat chargiê avouéc les pâges accèdâs per ren que los utilisators de l’habelyâjo « Modèrno ». */',
+'vector.js' => '/* Tot code JavaScript betâ ique serat chargiê avouéc les pâges accèdâs per ren que los utilisators de l’habelyâjo « Vèctor ». */',
# Metadata
'nodublincore' => 'Les mètabalyês « Dublin Core RDF » sont dèsactivâs sur ceti sèrvor.',
@@ -2459,10 +2865,12 @@ Pèrmèt de rètablir la vèrsion devant et pués d’apondre una rêson dens la
# Attribution
'anonymous' => '{{PLURAL:$1|Utilisator pas encartâ|Utilisators pas encartâs}} dessus {{SITENAME}}',
'siteuser' => 'l’utilisator $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Ceta pâge at étâ changiê por lo dèrriér côp lo $1 a $2 per $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'l’utilisator pas encartâ $1 de {{SITENAME}}',
+'lastmodifiedatby' => 'Ceta pâge at étâ changiê por lo dèrriér côp lo $1 a $2 per $3.',
'othercontribs' => 'Basâ sur l’ôvra a $1.',
'others' => 'ôtros',
'siteusers' => '{{PLURAL:$2|l’utilisator|los utilisators}} $1 de {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|l’utilisator pas encartâ|los utilisators pas encartâs}} $1 de {{SITENAME}}',
'creditspage' => 'Crèdits de la pâge',
'nocredits' => 'Y at gins d’enformacion d’atribucion disponibla por ceta pâge.',
@@ -2492,6 +2900,7 @@ Cen est probâblament côsâ per un lim dessus lista nêre que pouente vers un s
'skinname-chick' => 'Pugin',
'skinname-simple' => 'Simplo',
'skinname-modern' => 'Modèrno',
+'skinname-vector' => 'Vèctor',
# Math options
'mw_math_png' => 'Tojorn fâre una émâge PNG',
@@ -2501,11 +2910,24 @@ Cen est probâblament côsâ per un lim dessus lista nêre que pouente vers un s
'mw_math_modern' => 'Por los navigators modèrnos',
'mw_math_mathml' => 'MathML se possiblo (èxpèrimentâl)',
+# Math errors
+'math_failure' => 'Èrror d’analise sintaxica',
+'math_unknown_error' => 'èrror encognua',
+'math_unknown_function' => 'fonccion encognua',
+'math_lexing_error' => 'èrror lèxicâla',
+'math_syntax_error' => 'èrror de sintaxa',
+'math_image_error' => 'La convèrsion en PNG at pas reussia ;
+controlâd l’enstalacion de LaTeX, dvips, gs et convert',
+'math_bad_tmpdir' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math temporèro',
+'math_bad_output' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math de sortia',
+'math_notexvc' => 'L’ègzécutâblo « texvc » est entrovâblo.
+Volyéd liére « math/README » por lo configurar.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar coment survelyê',
'markaspatrolledtext' => 'Marcar ceta pâge coment survelyê',
'markedaspatrolled' => 'Marcâ coment survelyê',
-'markedaspatrolledtext' => 'La vèrsion chouèsia at étâ marcâ coment survelyê.',
+'markedaspatrolledtext' => 'La vèrsion chouèsia de [[:$1]] at étâ marcâ coment survelyê.',
'rcpatroldisabled' => 'La fonccion de survelyence des dèrriérs changements est pas activâ.',
'rcpatroldisabledtext' => 'La fonccionalitât de survelyence des dèrriérs changements est pas activâ.',
'markedaspatrollederror' => 'Pôt pas étre marcâ coment survelyê.',
@@ -2535,13 +2957,10 @@ $1',
'previousdiff' => '← Changement devant',
'nextdiff' => 'Changement aprés →',
-# Visual comparison
-'visual-comparison' => 'Comparèson visuâla',
-
# Media information
'mediawarning' => "'''Atencion :''' ceti tipo de fichiér pôt contegnir de code mâlvelyent.
Se vos l’ègzécutâd, voutron sistèmo pôt étre compromês.",
-'imagemaxsize' => 'Format lo ples grant por les émâges dens les pâges de dèscripcion d’émâges :',
+'imagemaxsize' => "Format lo ples grant de les émâges :<br />''(por les pâges de dèscripcion d’émâges)''",
'thumbsize' => 'Talye de la figura :',
'widthheightpage' => '$1 × $2, $3 pâge{{PLURAL:$3||s}}',
'file-info' => '(Talye du fichiér : $1, tipo MIME : $2)',
@@ -2550,6 +2969,8 @@ Se vos l’ègzécutâd, voutron sistèmo pôt étre compromês.",
'svg-long-desc' => '(Fichiér SVG, rèsolucion de $1 × $2 pixèls, talye : $3)',
'show-big-image' => 'Émâge en rèsolucion ples hôta',
'show-big-image-thumb' => '<small>Talye de ceti apèrçu : $1 × $2 pixèls</small>',
+'file-info-gif-looped' => 'en boclla',
+'file-info-gif-frames' => '$1 émâge{{PLURAL:$1||s}}',
# Special:NewFiles
'newimages' => 'Galerie des novéls fichiérs',
@@ -2584,7 +3005,7 @@ Los ôtros champs seront cachiês per dèfôt.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largior',
@@ -2711,14 +3132,14 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-unknowndate' => 'Dâta encognua',
-'exif-orientation-1' => 'Normala', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Envèrsâ d’aplan', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Veriê de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Envèrsâ d’aplomb', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Veriê de 90° dens la dirèccion antihorèra et envèrsâ d’aplomb', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Veriê de 90° dens la dirèccion horèra', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Veriê de 90° dens la dirèccion horèra et envèrsâ d’aplomb', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Veriê de 90° dens la dirèccion antihorèra', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normala',
+'exif-orientation-2' => 'Envèrsâ d’aplan',
+'exif-orientation-3' => 'Veriê de 180°',
+'exif-orientation-4' => 'Envèrsâ d’aplomb',
+'exif-orientation-5' => 'Veriê de 90° dens la dirèccion antihorèra et envèrsâ d’aplomb',
+'exif-orientation-6' => 'Veriê de 90° dens la dirèccion horèra',
+'exif-orientation-7' => 'Veriê de 90° dens la dirèccion horèra et envèrsâ d’aplomb',
+'exif-orientation-8' => 'Veriê de 90° dens la dirèccion antihorèra',
'exif-planarconfiguration-1' => 'Balyês ategnentes',
'exif-planarconfiguration-2' => 'Balyês sèparâs',
@@ -2845,7 +3266,7 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-gpsmeasuremode-2' => 'Mesera a 2 dimensions',
'exif-gpsmeasuremode-3' => 'Mesera a 3 dimensions',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilomètres per hora',
'exif-gpsspeed-m' => 'Miles per hora',
'exif-gpsspeed-n' => 'Nuods',
@@ -2864,6 +3285,7 @@ Los ôtros champs seront cachiês per dèfôt.
'watchlistall2' => 'tot',
'namespacesall' => 'Tôs',
'monthsall' => 'tôs',
+'limitall' => 'tôs',
# E-mail address confirmation
'confirmemail' => 'Confirmar l’adrèce èlèctronica',
@@ -2891,8 +3313,7 @@ Ora, vos vos pouede [[Special:UserLogin|branchiér]] et profitar du vouiqui.',
'confirmemail_error' => 'Un problèmo est arrevâ pendent l’encartâjo de voutra confirmacion.',
'confirmemail_subject' => 'Confirmacion d’adrèce èlèctronica por {{SITENAME}}',
'confirmemail_body' => 'Quârqu’un, probâblament vos, avouéc l’adrèce IP $1,
-at enregistrâ un compto « $2 » avouéc ceta adrèce de mèl
-sur lo seto {{SITENAME}}.
+at encartâ un compto « $2 » avouéc ceta adrèce èlèctronica sur lo seto {{SITENAME}}.
Por confirmar que cél compto est franc a vos et por
activar les fonccions de mèssageria dessus {{SITENAME}},
@@ -2900,9 +3321,9 @@ volyéd siuvre ceti lim dens voutron navigator :
$3
-Se vos éd *pas* enregistrâ cél compto, uvréd pas ceti lim ;
+Se vos éd *pas* encartâ cél compto, uvréd pas ceti lim ;
vos pouede siuvre l’ôtro lim ce-desot por anular la
-confirmacion de voutra adrèce de mèl :
+confirmacion de voutra adrèce èlèctronica :
$5
@@ -3072,7 +3493,7 @@ Vos pouede asse-ben utilisar l’[[Special:Watchlist/edit|èditor normal]].',
'duplicate-defaultsort' => "'''Atencion :''' la cllâf de tri per dèfôt « $2 » ècllafe cela « $1 ».",
# Special:Version
-'version' => 'Vèrsion', # Not used as normal message but as header for the special page itself
+'version' => 'Vèrsion',
'version-extensions' => 'Èxtensions enstalâs',
'version-specialpages' => 'Pâges spèciâles',
'version-parserhooks' => 'Grèfons du parsor',
@@ -3086,7 +3507,8 @@ Vos pouede asse-ben utilisar l’[[Special:Watchlist/edit|èditor normal]].',
'version-skin-extension-functions' => 'Fonccions d’èxtension de l’habelyâjo',
'version-hook-name' => 'Nom du grèfon',
'version-hook-subscribedby' => 'Soscrit per',
-'version-version' => 'Vèrsion',
+'version-version' => '(Vèrsion $1)',
+'version-svn-revision' => '(v$2)',
'version-license' => 'Licence',
'version-software' => 'Programeries enstalâs',
'version-software-product' => 'Marchandie',
@@ -3167,4 +3589,15 @@ Buchiéd lo nom du fichiér sen lo prèfixo « {{ns:file}}: ».',
'dberr-outofdate' => 'Notâd que lors endèxes de noutron contegnu pôvont étre dèpassâs.',
'dberr-cachederror' => 'O est una copia cachiê de la pâge demandâ et pôt étre dèpassâ.',
+# HTML forms
+'htmlform-invalid-input' => 'Des problèmos sont arrevâs avouéc quârques valors',
+'htmlform-select-badoption' => 'La valor que vos éd spècefiâ est pas un chouèx valido.',
+'htmlform-int-invalid' => 'La valor que vos éd spècefiâ est pas un entiér.',
+'htmlform-float-invalid' => 'La valor que vos éd spècefiâ est pas un nombro.',
+'htmlform-int-toolow' => 'La valor que vos éd spècefiâ est en-desot du muens de $1',
+'htmlform-int-toohigh' => 'La valor que vos éd spècefiâ est en-dessus du més de $1',
+'htmlform-submit' => 'Sometre',
+'htmlform-reset' => 'Dèfâre los changements',
+'htmlform-selectorother-other' => 'Ôtro',
+
);
diff --git a/languages/messages/MessagesFrr.php b/languages/messages/MessagesFrr.php
new file mode 100644
index 00000000..2250ed09
--- /dev/null
+++ b/languages/messages/MessagesFrr.php
@@ -0,0 +1,1213 @@
+<?php
+/** Northern Frisian (Frasch)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Maartenvdbent
+ * @author Pyt
+ */
+
+$fallback = 'de';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Linke unerstrike:',
+'tog-highlightbroken' => 'Linke aw ai bestönjene side beklåme <a href="" class="new">biispel</a> (alternatiiwe: ås dideere<a href="" class="internal">?</a>)',
+'tog-justify' => 'Täkst ås blokseeting',
+'tog-hideminor' => 'Latje änringe fersteege',
+'tog-hidepatrolled' => 'Latje änringe fersteege',
+'tog-newpageshidepatrolled' => 'Kontroliirde side aw e list "Naie side" fersteege',
+'tog-extendwatchlist' => 'Ütwidede wåchelist tun wisen foon åle änringe',
+'tog-usenewrc' => 'Ütwidede deerstaling foon da "Leeste Änringe" (brükt JavaScript)',
+'tog-numberheadings' => 'Ouerschrafte automatisch numeriire',
+'tog-showtoolbar' => 'Beårbe-wärktjüch wise',
+'tog-editondblclick' => 'Side ma dööweltklik beårbe (brükt JavaScript)',
+'tog-editsection' => 'Ferbininge tun wisen foon änkelte oufsnaase',
+'tog-editsectiononrightclick' => 'Änkelte stöögne ma ruchts kliken beårbe (brükt JavaScript)',
+'tog-showtoc' => 'Wis en inhåltsferteeknis for side ma mäs ås trii ouerschrafte',
+'tog-rememberpassword' => 'aw diheere komputer foon duur önjmälde',
+'tog-editwidth' => 'Önjjeewefälj ütwide, am di hiilj bilschirm üttufeelen',
+'tog-watchcreations' => 'Seelew måågede side automatisch bekiike',
+'tog-watchdefault' => 'Seelew änrede side automaatisch bekiike',
+'tog-watchmoves' => 'Seelew ferschääwene side automaatisch bekiike',
+'tog-watchdeletion' => 'Seelew wächhåålde side automatisch bekiike',
+'tog-minordefault' => 'Äine änringe gewöönlik ås latj mårkiire',
+'tog-previewontop' => 'Forbekiiken boowen dåt beårbingswaning wise',
+'tog-previewonfirst' => 'Bai dåt jarst beårben åltens dåt forbekiiken wise',
+'tog-nocache' => 'Sidecache deaktiwiire',
+'tog-enotifwatchlistpages' => 'Bai änringe önj bekiikede side E-maile siinje',
+'tog-enotifusertalkpages' => 'Bai änringe tu min brüker-diskusjoonssid E-Maile siinje',
+'tog-enotifminoredits' => 'Uk bai latje änringe tu bekiikede side E-maile siinje',
+'tog-enotifrevealaddr' => 'Min E-mail-adräs önj tising-E-maile wise',
+'tog-shownumberswatching' => 'Wis di tål foon wåchende brükere',
+'tog-oldsig' => 'Forbekiik foon e aktuäle signatuur:',
+'tog-fancysig' => 'Signatuur behoonle ås wikitäkst',
+'tog-externaleditor' => 'Gewöönlik äksterne ediitor for färsjoonsunerschiise brüke (bloot for ekspärte, deer mönje spetsjäle önjstalinge aw di äine kompjuuter fornümen wårde)',
+'tog-externaldiff' => 'Gewöönlik äkstern program for färsjoonsunerschiise brüke (bloot for ekspärte, deer mönje spetsjäle önjstalinge aw di äine kompjuuter fornümen wårde)',
+'tog-showjumplinks' => '"Schafte tu"-ferbininge aktiwiire',
+'tog-uselivepreview' => 'Live-forbekiik ferwiinje (brükt JavaScript) (äksperimentäl)',
+'tog-forceeditsummary' => 'Woorschoue, wan bai dåt spiikern jü tuhuupefooting breecht',
+'tog-watchlisthideown' => ' Äine beårbinge önj e bekiiklist fersteege',
+'tog-watchlisthidebots' => 'Beårbinge döör bots önj e bekiiklist fersteege',
+'tog-watchlisthideminor' => 'Latje beårbinge önj e bekiiklist fersteege',
+'tog-watchlisthideliu' => 'Beårbinge foon önjmäldede brükere önj e bekiikliste fersteege',
+'tog-watchlisthideanons' => 'Beårbinge foon ai önjmäldede brükere önj e bekiikliste fersteege',
+'tog-watchlisthidepatrolled' => 'Eefterkiikede beårbinge önj e bekiiklist fersteege',
+'tog-ccmeonemails' => 'Siinje me kopiie foon e-maile, da ik tu oudere brükere siinje',
+'tog-diffonly' => 'Wis bai di fersjoonsferglik bloot da unerschiise, ai jü hiilj sid',
+'tog-showhiddencats' => 'Wis ferstäägene kategoriie',
+'tog-norollbackdiff' => 'Unerschiis eefter dåt tübäägseeten unerdrüke',
+
+'underline-always' => 'Åltens',
+'underline-never' => 'uler',
+'underline-default' => 'oufhingi foon browser-önjstaling',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Schraftfamiili for di takst onj dåt beårbingswaning:',
+'editfont-default' => 'oufhingi foon browser-önjstaling',
+'editfont-monospace' => 'Schraft ma fååst tiikenbrååtj',
+'editfont-sansserif' => 'Seriifen-lüüse grotäskschraft',
+'editfont-serif' => 'Schraft ma seriife',
+
+# Dates
+'sunday' => 'saandi',
+'monday' => 'moundi',
+'tuesday' => 'täisdi',
+'wednesday' => 'weensdi',
+'thursday' => 'törsdi',
+'friday' => 'fraidi',
+'saturday' => 'saneene',
+'sun' => 'sd',
+'mon' => 'mo',
+'tue' => 'tä',
+'wed' => 'we',
+'thu' => 'tö',
+'fri' => 'fr',
+'sat' => 'se',
+'january' => 'januar',
+'february' => 'februar',
+'march' => 'marts',
+'april' => 'april',
+'may_long' => 'moi',
+'june' => 'juni',
+'july' => 'juli',
+'august' => 'august',
+'september' => 'septämber',
+'october' => 'oktoober',
+'november' => 'nowämber',
+'december' => 'detsämber',
+'january-gen' => 'januar',
+'february-gen' => 'februar',
+'march-gen' => 'marts',
+'april-gen' => 'april',
+'may-gen' => 'moi',
+'june-gen' => 'juni',
+'july-gen' => 'juli',
+'august-gen' => 'august',
+'september-gen' => 'septämber',
+'october-gen' => 'oktoober',
+'november-gen' => 'nowämber',
+'december-gen' => 'detsämber',
+'jan' => 'jan.',
+'feb' => 'feb.',
+'mar' => 'mar.',
+'apr' => 'apr.',
+'may' => 'moi',
+'jun' => 'jun.',
+'jul' => 'jul.',
+'aug' => 'aug.',
+'sep' => 'sep.',
+'oct' => 'okt.',
+'nov' => 'nov.',
+'dec' => 'det.',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategorii|Kategoriie}}',
+'category_header' => 'Side önj e kategorii "$1"',
+'subcategories' => 'Unerkategoriie',
+'category-media-header' => 'Meedia önj e kategorii "$1"',
+'category-empty' => '"Jüdeer kategorii önjhüült nütutids niinj side unti meedie."',
+'hidden-categories' => '{{PLURAL:$1|Ferstäägen Kategorii|Ferstäägene Kategoriie}}',
+'hidden-category-category' => 'Ferstäägene kategoriie',
+'category-subcat-count' => '{{PLURAL:$2|Jüdeer kategorii önjthålt füliend unerkategorii:|{{PLURAL:$1|Füliend unerkategorii as iinj foon inåål $2 unerkategoriie önj jüdeer kategorii:|Deer wårde $1 foon inåål $2 unerkategoriie önj jüdeer kategorii wised:}}}}',
+'category-subcat-count-limited' => 'Jüdeer kategorii önjthålt füliende {{PLURAL:$1|unerkategorii|$1 unerkategoriie}}:',
+'category-article-count' => '{{PLURAL:$2|Jüdeer kategorii önjthålt füliende sid:|{{PLURAL:$1|Füliende sid as iinj foon inåål $2 side önj jüdeer kategorii:|Deer wårde $1 foon inåål $2 side önj jüdeer kategorii wised:}}}}',
+'category-article-count-limited' => 'Füliende {{PLURAL:$1|sid as|$1 side san}} önj jüheer kategorii önjthülen:',
+'category-file-count' => '↓ {{PLURAL:$2|Jüdeer kategorii önjthålt füliende dootäi:|{{PLURAL:$1|Füliende dootäi as iinj foon inåål $2 side önj jüdeer kategorii:|Deer wårde $1 foon inåål $2 dootäie önj jüdeer kategorii wised:}}}}',
+'category-file-count-limited' => 'Füliende {{PLURAL:$1|Dootäi as|$1 Dootäie san}} önj jüdeer kategorii önjthülen:',
+'listingcontinuesabbrev' => '(fortseeting)',
+'index-category' => 'Indisiirde side',
+'noindex-category' => 'Ai indisiirde side',
+
+'mainpagetext' => "'''MediaWiki wörd ma erfolch instaliird.'''",
+'mainpagedocfooter' => 'Heelp tu jü benjüting än konfigurasjoon foon e Wiki-software fanst dü önj dåt [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
+
+
+== Startheelpe ==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+
+'about' => 'Ouer',
+'article' => 'Sid',
+'newwindow' => '(wårt önj en nai waning änäämmååged)',
+'cancel' => 'Oufbreege',
+'moredotdotdot' => 'Mör ...',
+'mypage' => 'Äine sid',
+'mytalk' => 'Äine diskusjoon',
+'anontalk' => 'Diskusjoonssid foon jüdeer IP',
+'navigation' => 'Navigasjoon',
+'and' => '&#32;än',
+
+# Cologne Blue skin
+'qbfind' => 'Fine',
+'qbbrowse' => 'Bleese',
+'qbedit' => 'Änre',
+'qbpageoptions' => 'Jüdeer sid',
+'qbpageinfo' => 'Sidedoote',
+'qbmyoptions' => 'Min side',
+'qbspecialpages' => ' Spetsjåålside',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Stuk haanetufoue',
+'vector-action-delete' => 'Sleeke',
+'vector-action-move' => 'Ferschüwe',
+'vector-action-protect' => 'Önj ferbading hüülje',
+'vector-action-undelete' => 'Wi mååge',
+'vector-action-unprotect' => 'Frijeewe',
+'vector-namespace-category' => 'Kategorii',
+'vector-namespace-help' => 'Heelpsid',
+'vector-namespace-image' => 'Dootäi',
+'vector-namespace-main' => 'sid',
+'vector-namespace-media' => 'Meediesid',
+'vector-namespace-mediawiki' => 'Berucht',
+'vector-namespace-project' => 'Prujäktsid',
+'vector-namespace-special' => 'Spetsjåålsid',
+'vector-namespace-talk' => 'Diskusjoon',
+'vector-namespace-template' => 'Forlååge',
+'vector-namespace-user' => 'Brükersid',
+'vector-view-create' => 'Mååge',
+'vector-view-edit' => 'Beårbe',
+'vector-view-history' => 'Dootäifärsjoone',
+'vector-view-view' => 'Lees',
+'vector-view-viewsource' => 'Kwältäkst önjkiike',
+'actions' => 'Aksjoone',
+'namespaces' => 'Noomerüme:',
+'variants' => 'Fariante',
+
+'errorpagetitle' => 'Fäägel',
+'returnto' => 'Tubääg tu jü side $1.',
+'tagline' => 'Üt {{SITENAME}}',
+'help' => 'Heelp',
+'search' => 'Säk',
+'searchbutton' => 'Säke',
+'go' => 'Ütfääre',
+'searcharticle' => 'Sid',
+'history' => 'Färsjoone',
+'history_short' => 'Färsjoone/autoore',
+'updatedmarker' => 'änred sunt man leest besäk',
+'info_short' => 'Informasjoon',
+'printableversion' => 'Prantfärsjoon',
+'permalink' => 'Permanänten link',
+'print' => 'Prante',
+'edit' => 'Beårbe',
+'create' => 'Mååge',
+'editthispage' => 'Sid beårbe',
+'create-this-page' => 'Sid mååge',
+'delete' => 'Strike',
+'deletethispage' => 'Jüdeer sid strike',
+'undelete_short' => '{{PLURAL:$1|1 färsjoon|$1 färsjoone}} widermååge',
+'protect' => 'Önj ferbading hüülje',
+'protect_change' => 'änre',
+'protectthispage' => 'Sid önj ferbading hüülje',
+'unprotect' => 'Frijeewe',
+'unprotectthispage' => 'Ferbading aphääwe',
+'newpage' => 'Nai sid',
+'talkpage' => 'Jüdeer sid diskutiire',
+'talkpagelinktext' => 'diskusjoon',
+'specialpage' => 'Spetsjåålsid',
+'personaltools' => 'Persöönlike räischupe',
+'postcomment' => 'Nai oufsnaas',
+'articlepage' => 'Inhåltsid wise',
+'talk' => 'Diskusjoon',
+'views' => 'Önjsichte',
+'toolbox' => 'Räischape',
+'userpage' => 'Brükersid wise',
+'projectpage' => 'Brükersid wise',
+'imagepage' => 'Dååtäisid wise',
+'mediawikipage' => 'Mäldingssid wise',
+'templatepage' => 'Forlåågesid wise',
+'viewhelppage' => 'Heelpsid wise',
+'categorypage' => 'Kategoriisid wise',
+'viewtalkpage' => 'Diskusjoon',
+'otherlanguages' => 'Önj oudere spräke',
+'redirectedfrom' => '(Widerliidjet foon $1)',
+'redirectpagesub' => 'Widerliidjing',
+'lastmodifiedat' => 'Jüdeer sid wörd tuleest aw $1 am jü klook $2 änred.',
+'viewcount' => 'Aw jüdeer sid as {{PLURAL:$1|once|$1 times}} tugram.',
+'protectedpage' => 'Önj ferbading hülen sid',
+'jumpto' => 'Schaft tu:',
+'jumptonavigation' => 'Navigasjoon',
+'jumptosearch' => 'säk',
+'view-pool-error' => 'Önjschüliing, da särwere san nütutids ouerlååsted.
+Tufoole brükere fersäke, jüdeer sid tu besäken.
+Wees sü gödj än täiw hu minuute, iir dü dåt nuch iinjsen ferseechst.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Ouer {{SITENAME}}',
+'aboutpage' => 'Project:Ouer',
+'copyright' => 'Inhålt stoont tu rädj uner jü $1.',
+'copyrightpage' => '{{ns:project}}:Uurhiiwerruchte',
+'currentevents' => 'Aktuäle schaiinge',
+'currentevents-url' => 'Project:Aktuäle schaiinge',
+'disclaimers' => 'Impressum',
+'disclaimerpage' => 'Project:Impressum',
+'edithelp' => 'Beårbingsheelp',
+'edithelppage' => 'Help:beårbe',
+'helppage' => 'Help:Inhåltsfertiiknis',
+'mainpage' => 'Hoodsid',
+'mainpage-description' => 'Hoodsid',
+'policy-url' => 'Project:Ruchtliinje',
+'portal' => 'Gemiinschaps-portåål',
+'portal-url' => 'Project:Gemiinschaps-portåål',
+'privacy' => 'Dootenschuts',
+'privacypage' => 'Project:Dootenschuts',
+
+'badaccess' => 'Niinj tulingende ruchte',
+'badaccess-group0' => 'Dü hääst ai jü nüsie beruchtiging for jüdeer aksjoon',
+'badaccess-groups' => 'Jüdeer aksjoon as begränsed aw brükere, da tu {{PLURAL:$2|di grupe|åån foon da grupe}} „$1“ hiire.',
+
+'versionrequired' => 'Färsjoon $1 foon MediaWiki as nüsi.',
+'versionrequiredtext' => 'Färsjoon $1 foon MediaWiki as nüsi, am jüdeer sid tu brüken.
+Sii jü [[Special:Version|Färsjoonssid]]',
+
+'ok' => 'OK',
+'pagetitle' => '$1 – {{SITENAME}}',
+'pagetitle-view-mainpage' => '{{SITENAME}}',
+'retrievedfrom' => 'Foon „$1“',
+'youhavenewmessages' => 'Dü hääst $1 aw din diskusjoonssid ($2).',
+'newmessageslink' => 'naie tisinge',
+'newmessagesdifflink' => 'leest änring',
+'youhavenewmessagesmulti' => 'Dü hääst nai tisinge aw $1',
+'editsection' => 'beårbe',
+'editsection-brackets' => '[$1]',
+'editold' => 'beårbe',
+'viewsourceold' => 'kwältakst wise',
+'editlink' => 'beårbe',
+'viewsourcelink' => 'kwältakst wise',
+'editsectionhint' => 'säksjoon beårbe: $1',
+'toc' => 'inhåltsfertiiknis',
+'showtoc' => 'wise',
+'hidetoc' => 'ferbärje',
+'thisisdeleted' => '$1 önjkiike unti widermååge?',
+'viewdeleted' => '$1 wise?',
+'restorelink' => '$1 {{PLURAL:$1|sträägen Färsjoon|sträägene Färsjoone}}',
+'feedlinks' => 'Feed:',
+'feed-invalid' => 'Üngülti feed-abonemänt-typ.',
+'feed-unavailable' => 'Deer stönje niinj feeds tu rädj.',
+'site-rss-feed' => 'RSS-feed for $1',
+'site-atom-feed' => 'Atom-feed for $1',
+'page-rss-feed' => 'RSS-feed for „$1“',
+'page-atom-feed' => 'Atom-feed for „$1“',
+'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
+'red-link-title' => '$1 (sid ai deer)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'sid',
+'nstab-user' => 'Brükersid',
+'nstab-media' => 'Meediesid',
+'nstab-special' => 'Spetsjåålsid',
+'nstab-project' => 'Prujäktsid',
+'nstab-image' => 'Dååtäi',
+'nstab-mediawiki' => 'Berucht',
+'nstab-template' => 'Forlååge',
+'nstab-help' => 'Heelpsid',
+'nstab-category' => 'Kategorii',
+
+# Main script and global functions
+'nosuchaction' => "Ai sü'n aksjoon",
+'nosuchactiontext' => 'Jü aksjoon spesifisiird döör di URL jült ai.
+Dü koost di URL ferkiird tipt hääwe, unti dü hääst en ferkiirden link fülied.
+Dåt koon uk en fäägel önjjeewe önj e software, jü {{SITENAME}} brúkt.',
+'nosuchspecialpage' => "Ai sü'n spetsjäl sid",
+'nospecialpagetext' => '<strong>Jü önjfrååged spetsjåålsid as ai deer.</strong>
+
+Åle ferfäigboore spetsjåålside san önj e [[Special:SpecialPages|List foon da spetsjåålside]] tu finen.',
+
+# General errors
+'error' => 'Fäägel',
+'databaseerror' => 'Dootebånkfäägel',
+'dberrortext' => 'Deer as en dootebånk-fäägel aptrin.
+Di grün koon en programiirfäägel weese.
+Jü leest dootebånk ouffrååg wus:
+<blockquote><tt>$1</tt></blockquote>
+üt jü funksjoon „<tt>$2</tt>“.
+Jü dootebank mäldede di fäägel „<tt>$3: $4</tt>“.',
+'dberrortextcl' => 'Dåt jäif en süntaksfäägel önj e dootebånk-ouffrååch.
+Jü leest dootebånkouffrååch wus „$1“ üt e funksjoon „<tt>$2</tt>“.
+Jü dootebånk mälded jü fäägel: „<tt>$3: $4</tt>“.',
+'laggedslavemode' => "''''Woarschauing:''' Jü wised sid köö uner amstånde ai da leeste beåarbinge önjthüülje.",
+'readonly' => 'Dootebånk späred',
+'enterlockreason' => 'Wees swü gödj än jeew en grün önj, weeram jü dootebånk späred wårde schal än en schåting ouer e duur foon jü späre',
+'readonlytext' => 'Jü dootebånk as forluupi späred for naie önjdreege än änringe. Wees sü gödj än fersäk dåt lääser nuch iinjsen.
+
+Grün foon e späre: $1',
+'missing-article' => 'Di täkst for „$1“ $2 wörd ai önj e dååtenbånk fünen.
+
+Jü sid as möölikerwise tuninte mååged unti ferschääwen wörden.
+
+Wan dåt ai di fål as, hääst dü eewäntuäl en fäägel önj e software fünen. Mäld dåt hål en [[Special:ListUsers/sysop|administrator]] unner nååming foon jü URL.',
+'missingarticle-rev' => '(Färsjoonsnumer: $1)',
+'missingarticle-diff' => '(Ferschääl twasche färsjoone: $1, $2)',
+'readonly_lag' => 'Jü dootebånk wörd automaatisch for schriwtugraawe späred, deerma da ferdiiljde dootebånke (slaves) jam ma di hooddootebånksärwer (master) oufglike koone.',
+'internalerror' => 'Intärn fäägel',
+'internalerror_info' => 'Intärne fäägel: $1',
+'fileappenderrorread' => '"$1" köö wilert dåt baitufäigen ai leesen wårde.',
+'fileappenderror' => 'Köö ai "$1" tu "$2" önjhinge.',
+'filecopyerror' => 'Jü dootäi "$1" köö ai eefter "$2" kopiiird wårde.',
+'filerenameerror' => 'Jü dootäi "$1" köö ai eefter "$2" amnååmd wårde.',
+'filedeleteerror' => 'Jü dootái "$1" köö ai sleeked wårde.',
+'directorycreateerror' => 'Dåt fertiiknis "$1" köö ai mååged wårde.',
+'filenotfound' => 'Köö dootäi "$1" ai fine.',
+'fileexistserror' => 'Ai önjstånde eefter dootäi "$1" tu schriwen: dootäi bestoont ål',
+'unexpected' => 'Ünfermousene wjart: "$1"="$2".',
+'formerror' => 'Fäägel: köö jü form ai lääwere',
+'badarticleerror' => 'Jüdeer aksjoon koon ai aw jüdeer sid mååged wårde.',
+'cannotdelete' => 'Jü sid unti dootäi "$1" köö ai sleeked wårde.
+Dåt as flicht ål sleeked foon huum ouders.',
+'badtitle' => 'Ferkiirde tiitel',
+'badtitletext' => 'Di tiitel foon jü anfrååged sid as üngülti, lääsi unti n üngültigen spräklink foon en ouder wiki.',
+'perfcached' => 'Da füliende doote ståme üt di cache än san möölikerwise ai aktuäl.',
+'perfcachedts' => 'Daheere doote ståme üt di cache, leest aktualisiiring: $2, klook $3.',
+'querypage-no-updates' => "'''Jü aktualisiiringsfunksjoon for jüdeer sid as nütutids deaktiwiird. Da doote wårde tujarst ai fernaierd.'''",
+'wrong_wfQuery_params' => 'Ferkiirde parameetere for wfQuery()<br />
+Funksjoon: $1<br />
+Ouffrååch: $2',
+'viewsource' => 'Kwältäkst önjkiike',
+'viewsourcefor' => 'for $1',
+'actionthrottled' => 'Aksjoonstål limitiird',
+'actionthrottledtext' => 'Dü hääst jüdeer aksjoon tu oofding bane en kort tidrüm ütfjard. Wees sü gödj än täiw en påår minuute än fersäk dåt et dan foon naien.',
+'protectedpagetext' => 'Jüdeer sid as for dåt beårben späred.',
+'viewsourcetext' => 'Dü koost jü kwäle foon jüdeer sid bekiike än kopiire.',
+'protectedinterface' => 'Jüdeer sid önjthålt takst for ju brükerouerfläche foon e software än as späred, am masbrük tu ferhanern.',
+'editinginterface' => "'''Woorschauing:''' Jüdeer sid önjthålt foon jü MesiaWiki-software bënjüteden takst.
+Änringe wirke jam aw jü brükerouerfläche üt.
+For ouerseetinge tånk deeram, jü önj di [http://translatewiki.net/wiki/Main_Page?setlang=frr Translatewiki], dåt MediaWiki lokalisiiringsprojekt, döörtufäären.",
+'sqlhidden' => 'SCL-ouffrååg ferstäägen',
+'cascadeprotected' => 'Jüdeer sid as for beårbing spärd. Jü as önj {{PLURAL:$1|e füliende sid|da füliende side}}
+önjbünen, {{PLURAL:$1|jü|da}} madels e kaskaadespäropsjoon önj febading hüüljen {{PLURAL:$1|as|san}}:
+$2',
+'namespaceprotected' => "Dü hääst niinj beruchtiging, jü sid önj di '''$1'''-noomerüm tu beårben.",
+'customcssjsprotected' => 'Dü bast ai beruchtiged, jüdeer sid tu beårben, deer jü tu da persöönlike önjstalinge foon en ouderen brüker hiirt.',
+'ns-specialprotected' => 'Spetsjåålside koone ai beårbed wårde.',
+'titleprotected' => 'En sid ma dideer noome koon ai önjläid wårde.
+Jü späre wörd döör [[User:$1|$1]] ma grün "$2" önjruchted.',
+
+# Virus scanner
+'virus-badscanner' => "Hiinje konfigurasjoon: ünbekånde fiirusscanner: ''$1''",
+'virus-scanfailed' => 'scan fäägelsloin (code $1)',
+'virus-unknownscanner' => 'Ünbekånde fiirusscanner:',
+
+# Login and logout pages
+'logouttext' => "'''Dü bast nü oufmäded.'''
+
+Dü koost {{SITENAME}} nü anonüüm widerbrüke, unti de wider uner diseelew unti en oudern benjüternoome [[Special:UserLogin|önjmälde]].
+Påås aw, dåt hu side nuch wide koone, dåt dü önjmälded bast, sülung dü ai dan browsercache lääsimååged heest.",
+'welcomecreation' => '== Wäljkiimen, $1! ==
+
+Din brükerkonto wörd önjruchted.
+Ferjeet ai, din [[Special:Preferences|{{SITENAME}}-önjstalinge]] önjtupååsen.',
+'yourname' => 'Brükernoome:',
+'yourpassword' => 'Pååsuurd:',
+'yourpasswordagain' => 'Tip pååsuurd nuch iinjsen:',
+'remembermypassword' => 'aw diheere komputer foon duur önjmälde',
+'yourdomainname' => 'Din domain:',
+'externaldberror' => 'Önjtwider deer läit en fäägel bai jü äkstärn autentifisiiring for, unti dü möist din äkstärn brükerkonto äi aktualisiire.',
+'login' => 'Önjmälde',
+'nav-login-createaccount' => 'Önjmälde',
+'loginprompt' => 'For jü önjmälding monje cookies aktiwiird weese.',
+'userlogin' => 'Önjmälde / brükerkonte mååge',
+'userloginnocreate' => 'Önjmälde',
+'logout' => 'Oufmälde',
+'userlogout' => 'Oufmälde',
+'notloggedin' => 'Ai önjmälded',
+'nologin' => "Dü hääst ai en brükerkonto? '''$1'''.",
+'nologinlink' => 'Nai brükerkonto anleede',
+'createaccount' => 'Brükerkonto anleede',
+'gotaccount' => "Dú hääst ål en brükerkonto? '''$1'''.",
+'gotaccountlink' => 'Önjmälde',
+'createaccountmail' => 'ouer E-mail',
+'badretype' => 'Da biise pååsuurde stime ai oueriinj.',
+'userexists' => 'Dideer brükernoome as ål ferjääwen. Wees sü gödj en ouderen tu kiisen.',
+'loginerror' => 'Fäägel bai önjmälding',
+'createaccounterror' => 'Brükerkonto köö ai mååged wårde: $1',
+'nocookiesnew' => 'Di benjütertugung wörd mååged, ouers dü bast ai önjmälded. {{SITENAME}} brükt for jüdeer funksjoon cookies.
+Wees sü gödj än aktiwiir da än mäld de dan ma dan naien benjüternoome än dåt tuhiirend pååsuurd önj.',
+'nocookieslogin' => '{{SITENAME}} benjütet cookies tu e önjmälding foon da benjütere. Dü heest Cookis deaktiwiird.
+Wees sü gödj än aktiwiir da än fersäk dåt wider.',
+'noname' => 'Dü möist en gültigen brükernooem önjjeewe.',
+'loginsuccesstitle' => 'Önjmälding erfolchrik',
+'loginsuccess' => "'''Dü bast nü ås „$1“ bai {{SITENAME}} önjmälded.'''",
+'nosuchuser' => 'Di brükernoome „$1“ bestoont ai.
+Präiw jü schriwwise (grut-/latjschriwing beåchte) unti [[Special:UserLogin/signup|mäld de ås naie brüker önj]].',
+'nosuchusershort' => 'Deer as nåån brüker ma noome "<nowiki>$1</nowiki>".
+Präiw din ruchtschriwing.',
+'nouserspecified' => 'Dü schäät en brükernoome spesifisiire.',
+'login-userblocked' => 'Dideer brüker as spärd. Niinj ferloof tu önjmälding.',
+'wrongpassword' => 'Ferkiird pååsuurd önjjeewen.
+Wees sü gödje än fersäk dåt nuch iinjsen.',
+'wrongpasswordempty' => 'Deer wörd niinj pååsuurd önjjääwen. Fersäk dåt foon naien.',
+'passwordtooshort' => 'Pååsuurde mönje tu t manst {{PLURAL:$1|1 tiiken|$1 tiikne}} lung weese.',
+'password-name-match' => 'Din pååsuurd mätj ferschääle foon dan brükernoome.',
+'mailmypassword' => 'Nai pååsuurd tusiinje',
+'passwordremindertitle' => 'Nai tidwise pååsuurd for {{SITENAME}}',
+'noemail' => 'Deer as niinj e-mail-adräs bekånd for brüker "$1".',
+'noemailcreate' => 'Dü möist en gülti E-mail-adräs önjjeewe',
+'passwordsent' => 'En nai pååsuurd as sånd tu jü E-mail-adräs registriird for "$1".
+Mälde wi önj eefter dü jü füngen heest.',
+'blocked-mailpassword' => 'Jü foon de ferwånde IP-adräs as for dåt änren foon side späred. Am en masbrük tu ferhanern, wórd jü möölikhäid tu dåt önjfråågen foon en nai pååsuurd uk späred.',
+'eauthentsent' => 'En bestääsiings-E-mäil wörd önj jü önjjääwen adräs sånd.
+
+Iir en E-mail foon oudere brükere ouer jü E-mail-funksjoon emfångd wårde koon, mötj jü adräs än har wörklike tuhiirihäid tu dåtheer brükerkonto jarst bestääsied wårde. Wees sü gödj än befülie da haanewisinge önj di bestääsiings-E-mail.',
+'throttled-mailpassword' => 'Deer wörd önj da leeste {{PLURAL:$1|stün|$1 stüne}} ål en nai pååsuurd önjfrååged. Am en misbrük foon jüdeer funksjoon tu ferhanren, koon bloot {{PLURAL:$1|iinjsen pro stün|åle $1 stüne}} en nai pååsuurd önjfrååged wårde.',
+'mailerror' => 'Fäägel bai dåt siinjen foon e E-mail: $1',
+'emailauthenticated' => 'Din e-mail-adräs word di $2 am e klook $3 bestääsied.',
+'emailnotauthenticated' => 'Din E-mail-adräs as nuch ai bestääsied. Da füliende E-mail-funksjoone stönje jarst eefter erfolchrike bestääsiing tu ferfäiging.',
+'noemailprefs' => 'Jeew en E-mail-adräs önj da önjstalinge önj, deerma da füliende funksjoone tu ferfäiging stönje.',
+'emailconfirmlink' => 'E-mail-adräs bestääsie (autäntifisiire).',
+'invalidemailaddress' => 'Jü e-mail adräs wörd ai aksäptiird, ouerdåt jü en üngülti formoot (ewentuäl üngültie tiikne) tu heewen scheent.
+Wees sü gödj än jeef en koräkt adräs önj unti mäág dåt fäalj lääsi.',
+'accountcreated' => 'Benjüterkonto mååged',
+'accountcreatedtext' => 'Dåt benjüteraccount for $1 as mååged wörden.',
+'createaccount-title' => 'Måågen foon en benjüterkonto for {{SITENAME}}',
+'createaccount-text' => 'Deer wörd for de en benjüterkonto "$2" aw {{SITENAME}} ($4) mååged. Dåt automaatisch generiird pååsuurd for "$2" as "$3".
+Dü schöist de nü önjmälde än dåt pååsuurd änre.
+
+Fåls dåt benjüterkonto üt fersiinj önjläid wörd, koost dü jüdeer tising ignoriire.',
+'usernamehasherror' => 'Benjüternoome mötje niinj rütetiikne önjthüulje',
+'login-throttled' => 'Dü heest tu oofding fersoocht, di önjtumälden.
+Wees sü gödj än täif, bit dü wider ferseechst.',
+'loginlanguagelabel' => 'Spräke: $1',
+'suspicious-userlogout' => 'Dan Oufmäldönjfrååge wörd ferwaigred, deer ja fermouslik foon en defäkte browser unti en cache-proxy sånd wörd.',
+
+# Password reset dialog
+'resetpass' => 'Pååsuurd änre',
+'resetpass_announce' => 'Önjmälding ma di ouer E-mail tusånde kode. Am e önjmälding ouftusliten, möist dü en nai pååsuurd kiise.',
+'resetpass_header' => 'Account pååsuurd änre',
+'oldpassword' => 'Üülj pååsuurd:',
+'newpassword' => 'Nai pååsuurd:',
+'retypenew' => 'Tip nai pååsuurd nuch iinjsen:',
+'resetpass_submit' => 'Seet pååsuurd än mäld önj',
+'resetpass_success' => 'Din pååsuurd as ma resultoot änred!
+Nü wårst dü önjmälded...',
+'resetpass_forbidden' => 'Pååsuurde koone ai änred wårde',
+'resetpass-no-info' => 'Dü möist önjmälded weese am ju sid diräkt tu tu gripen.',
+'resetpass-submit-loggedin' => 'Pååsuurd änre',
+'resetpass-submit-cancel' => 'Oufbreege',
+'resetpass-wrong-oldpass' => 'Üngülti tämporäär unti antuäl pååsuurd.
+Möölikerwise heest dü din pååsuurd ål ma erfolch änred heest unti en nai tämporäär pååsuurd beönjdräägen.',
+'resetpass-temp-password' => 'Tidwise pååsuurd:',
+
+# Edit page toolbar
+'bold_sample' => 'Fåten täkst',
+'bold_tip' => 'Fåten täkst',
+'italic_sample' => 'Kursiiwen täkst',
+'italic_tip' => 'Kursiiwen täkst',
+'link_sample' => 'Link-täkst',
+'link_tip' => 'Intärnen link',
+'extlink_sample' => 'http://www.example.com link-täkst',
+'extlink_tip' => 'Äkstärnen link (http:// beåchte)',
+'headline_sample' => 'Schuchte 2 ouerschraft',
+'headline_tip' => 'Schuchte 2 ouerschraft',
+'math_sample' => 'Formel heer önjfäige',
+'math_tip' => 'Matemaatisch formel (LaTex)',
+'nowiki_sample' => 'Ünformatiirden täkst heer önjfäige',
+'nowiki_tip' => 'Ünformatiirden täkst',
+'image_tip' => 'Dååtäilink',
+'media_tip' => 'Meediendååtäi-link',
+'sig_tip' => 'Din signatuur ma tidståmp',
+'hr_tip' => 'Horizontool liinje (spårsoom ferwiinje)',
+
+# Edit pages
+'summary' => 'Tuhuupefooting:',
+'subject' => 'Bedrååwet:',
+'minoredit' => 'Bloot kleenihäide wörden feränred',
+'watchthis' => 'Kiike eefter jüdeer sid',
+'savearticle' => 'Sid spikre',
+'preview' => 'Forlök',
+'showpreview' => 'Forlök wise',
+'showlivepreview' => 'Live-forkiik',
+'showdiff' => 'Änringe wise',
+'anoneditwarning' => "Dü beårbest jüdeer sid ünönjmälded. Wan dü spikerst, wård din aktuäle IP-adräs önj e fesjoonshistoori aptiikned än as deerma for åltens '''ålgemiin''' sichtboor.",
+'missingsummary' => "'''Haanewising:\"' Dü heest niinj tuhuupefooting önjjääwen.
+Wan dü wider aw \"Sid spiikre\" klikst, wårt din änring suner tuhuupefooting ouernümen.",
+'missingcommenttext' => 'Jeew en tuhuupefooting önj.',
+'summary-preview' => 'Forlök foon jü tuhuupfootingssid:',
+'subject-preview' => 'Forkiik foon dåt subjäkt:',
+'blockedtitle' => 'Brüker as späred',
+'blockednoreason' => 'niinj grün önjjääwen',
+'blockedoriginalsource' => "Di kwältakst foon '''$1''' wårt heer wised:",
+'blockededitsource' => "Di takst foon '''din änringe''' bit '''$1'''wårt heer wised:",
+'whitelistedittitle' => 'Tu t beårben as dåt ferplächted, önjmälde tu weesen.',
+'whitelistedittext' => 'Dü möist de $1, am side beårbe tu koonen.',
+'confirmedittext' => 'Dü möist din E-mail-adräs jarst bestääsie, iir dü beårbinge döörfääre koost. Mååg din årbe radi än bestääsie din E-mail önj da [[Special:Preferences|önjstalinge]].',
+'nosuchsectiontitle' => 'Stuk ai fünen',
+'nosuchsectiontext' => 'Dü fersoochst en stuk tu änren, dåt dåt ai jeeft.
+Dåt koon ferschääwen unti wächhååld weese, wilt dü jü sid bekiikedest.',
+'loginreqtitle' => 'Önjmälden nüsi.',
+'loginreqlink' => 'Önjmälde',
+'loginreqpagetext' => 'Dü möist $1 am oudere side tu bekiiken.',
+'accmailtitle' => 'Pååsuurd sånd.',
+'accmailtext' => "En tufäli generiird pååsuurd for [[User talk:$1|$1]] wörd tu $2 fersånd.
+
+Dåt pååsuurd for jüdeer nai benjüterkonto koon aw e spetsjoolsid ''[[Special:ChangePassword|Pååsuurd änre]]'' änred wårde.",
+'newarticle' => '(Nai)',
+'newarticletext' => "Dü bast en link tu en sid fülied, jü nuch ai bestoont.
+Am jü sid tu måågen, dreeg dan täkst önj e unerstönjene box in (sii jü
+[[{{MediaWiki:Helppage}}|heelpsid]] for mör informasjoon).
+Bast üt fersiien heer, klik di '''tubääg'''-klänkfläche foon dan browser.",
+'noarticletext' => 'Jüdeer sid önjhålt uugenblaklik nuch nån täkst.
+Dü koost dideere tiitel aw da ouder side [[Special:Search/{{PAGENAME}}|säke]],
+<span class="plainlinks">önj da deertuhiirende [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logböke säke] unti jüdeer sid [{{fullurl:{{FULLPAGENAME}}|action=edit}} beårbe]</span>.',
+'noarticletext-nopermission' => 'Jüdeer sid önjhålt uugenblaklik nuch nån täkst.
+Dü koost dideere tiitel aw da oudre side [[Special:Search/{{PAGENAME}}|säke]],
+unti<span class="plainlinks">önj da deertuhiirende [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logböke säke] </span>.',
+'userpage-userdoesnotexist' => 'Dåt benjüterkonto "$1" as ai deer.
+Wees sü gödj än präif, weer dü jüdeer sid wörklik mååge/beårbe wååt.',
+'userpage-userdoesnotexist-view' => 'Benjüterkonto "$1" bestoont ai.',
+'blocked-notice-logextract' => 'Dideer benjüter as tutids spärd.
+For informasjoon füliet di leeste üttooch üt dåt benjüterspär-logbök:',
+'usercssyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nai CSS for dåt spiikern tu tästen.",
+'userjsyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nai JavaScript for dåt spiikern tu tästen.",
+'usercsspreview' => "'''Påås aw dåt dü bloot din brüker CSS forbekiikest.'''
+'''Dåt as nuch ai spiikerd!'''",
+'userjspreview' => "'''Påås aw dåt dü bloot din brüker JavaScript präiwest/forbekiikest.'''
+'''Dåt as nuch ai spiikerd!'''",
+'userinvalidcssjstitle' => "''Woorschauing:''' Skin \"\$1\"jeeft dåt ai. Betånk, dåt brükerspetsiifische .css- än .js-side ma en latj bökstääw önjfånge mönje, ålsü biispelswise ''{{ns:user}}:Münsterkjarl/monobook.css'' önj stää foon ''{{ns:user}}:Münsterkjarl/Monobook.css''.",
+'updated' => '(Änred)',
+'note' => "'''Påås aw:'''",
+'previewnote' => "'''Dåtheer as bloot en forlök, jü sid wörd nuch ai spikred!'''",
+'previewconflict' => 'Dideer forbekiik jeeft di inhålt foon dåt boowerst takstfälj wider. Sü wårt jü sid ütsiinj, wan dü nü spiikerst.',
+'editing' => 'Beårbe foon $1',
+'editingsection' => 'Beårben foon $1 (oufsnaas)',
+'editingcomment' => 'Beårben foon $1 (naien oufsnaas)',
+'editconflict' => 'Beårbingskonflikt: $1',
+'yourtext' => 'Din täkst',
+'storedversion' => 'Spiikerd färsjoon',
+'editingold' => "'''PÅÅS AW: Dü beårbest en üülj färsjoon foon jüdeer sid. \"
+Wan dü spiikerst, wårde åle naiere färsjoone ouerschraawen.",
+'yourdiff' => 'Ferschääle',
+'copyrightwarning' => "''' Hål <big>kopiir niinj webside</big>, da ai din äine san, brük <big>niinj uurhääwerruchtlik schütsede wärke</big> suner ferloof foon di uurhääwer!'''<br />
+Dü jeefst üs heerma dan tusååge, dåt dü di täkst '''seelew ferfooted''' hääst, dåt di täkst ålgemiingödj '''(public domain)''' as, unti dåt di '''uurhääwer''' sin '''tustiming''' jääwen heet. For di fål jüdeer täkst ål ouersweer ütdänj wörd, wis hål aw jü diskusjoonssid deeraw haane. <i>Beåcht hål, dåt åle {{SITENAME}}-tujeefte automaatisch uner jü „$2“ stönje (sii $1 for detaile). For di fål dü ai mååst, dåt diin årbe heer foon oudere feränred än språåt wårt, dan kröög ai aw „sid spikre“.</i>",
+'longpageerror' => "'''FÄÄGEL: Di täkst, di dü tu spiikren ferseechst, as $11 KB grut. Dåt as gruter ås dåt tuleet maksimum foon $2 KB - spiikren ai möölik.'''",
+'readonlywarning' => "'''PÅÅS AW: Jü dootenbånk wörd for unerhult spärd, sü dåt din änringe tutids ai spiikerd wårde koone.
+Wees sü gödj än sääkre di täkst lokool aw din kompjuuter än fersäk tu n lääsern tidpunkt, da änringe tu ouerdreegen.'''.
+
+Grün for jü späre: $1",
+'protectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
+For informasjoon füliet di aktuäle logbökönjdråch:",
+'semiprotectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
+For informasjoon füliet di aktuäle logbökönjdråch:",
+'titleprotectedwarning' => "'''PÅÅS AW: \"Dåt måågen foon side wörd spärd. Bloot benjütere ma [[Special:ListGroupRights|spetsjäle ruchte]] koone da side mååge.'''
+For informasjoon füliet jü leest logbök-önjdråch:",
+'templatesused' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon jüdeer sid ferwånd:',
+'templatesusedpreview' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon diheere sideforlök ferwånd:',
+'templatesusedsection' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon dideer oufsnaas ferwånd:',
+'template-protected' => '(önj ferbading hülen iinj schriwen)',
+'template-semiprotected' => '(schriwschütsed for ünönjmäldede än naie brükere)',
+'hiddencategories' => 'Jüdeer sid as lasmoot foon {{PLURAL:$1|1 ferstäägen kategorii|$1 ferstäägene kategoriie}}:',
+'nocreatetitle' => 'Dåt måågeb foon naie side as begränsed.',
+'nocreatetext' => 'Aw {{SITENAME}} wörd dåt måågen foon naie side begränsed.
+Dü koost bestönjene side änre unti de [[Special|:UserLogin|önjmälde unti mååg en account]].',
+'nocreate-loggedin' => 'Dü heest niinj beruchtiging, naie side tu måågen.',
+'sectioneditnotsupported-title' => 'Jü beårbing foon oufsnaase wårt ai unerstüted',
+'sectioneditnotsupported-text' => 'Jü beårbing foon oufsnaase wårt aw jüdeer beårbingssid ai stiped.',
+'permissionserrors' => 'Beruchtigingsfäägel',
+'permissionserrorstext' => 'Dü bast ai beruchted, jü aksjoon üttufäären. {{PLURAL:$1|grün|grüne}}:',
+'permissionserrorstext-withaction' => 'Dü bast ai beruchtit, $2.
+{{PLURAL:$1|grün|grüne}}:',
+'moveddeleted-notice' => 'Jüheer sid wörd sleeked. Deer füliet en üttooch üt dåt sleek- än ferschüwingslogbök for jüheer sid.',
+'log-fulllog' => 'Åle logbük-önjdrååge önjkiike',
+'edit-gone-missing' => 'Jü sid köö ai aktualisiird wårde.
+Jü wörd önjscheened sleeked.',
+'edit-conflict' => 'Beårbingskonflikt.',
+'edit-no-change' => 'Din beårbing wörd ignoriird, deer niinj änring an e täkst fornümen wörd.',
+'edit-already-exists' => 'Köö niinj nai sid mååge.
+Dåt bestöö ål.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => 'Woorschauing: Jüdeer sid önjthålt tu fool apteele foon widluftie parserfunksjoone.
+
+Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} weese.',
+'expensive-parserfunction-category' => 'Side, da widluftie parserfunksjoone tu oofding apteele',
+'post-expand-template-inclusion-category' => 'Side, önj da jü maksimoole grutelse foon önjbünene forlååge ouerschran as',
+'post-expand-template-argument-warning' => 'Påås aw: Jüdeer sid enthålt tumanst en argumänt önj en forlååge, dåt äkspandiird tu grut as. Dadeere argumänte wårde ignoriird.',
+'post-expand-template-argument-category' => 'Side, da ignoriirde forlååge-argumänte önjthüülje',
+'parser-template-loop-warning' => 'Forlåågesloif önjtdäkt: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Forloagerekursjoonsdiipgränse ouerschran ($1)',
+'language-converter-depth-warning' => 'Spräkekonwärsjoonsdiipdegränse ouerschren ($1)',
+
+# "Undo" feature
+'undo-failure' => 'Jü änring köö ai tunintemååged wårde, deer di bedrååwede oufsnaas intwasche feränred wörd.',
+'undo-norev' => 'Jü beårbing köö ai tunintemååged wårde, deer jü ai bestoont unti sleeked wörd.',
+'undo-summary' => 'Änring $1 foon [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusjoon]]) tunintemååged.',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Benjüterkonto köö ai mååged wårde',
+'cantcreateaccount-text' => "Dår måågen foon en brükerkonto foon jü IP-adräs '''($1)''' üt wörd döör [[User:$3|$3]] späred.
+
+Grün foon jü späre: ''$2''",
+
+# History pages
+'viewpagelogs' => 'Logböke for jüdeer sid wise',
+'nohistory' => 'Deer as niinj beårbingshistoori for jüdeer sid.',
+'currentrev' => 'Aktäle Färsjoon.',
+'currentrev-asof' => 'Aktuäl färsjoon foon $2 am e klook $3',
+'revisionasof' => 'Färsjoon foon e klook $2, $3',
+'revision-info' => 'Färsjoon foon di $4 am e klook $5 foon $2',
+'previousrevision' => '← Näistålere Färsjoon',
+'nextrevision' => 'Näistjunger färsjoon →',
+'currentrevisionlink' => 'Aktuäle färsjoon',
+'cur' => 'aktuäl',
+'next' => 'näist',
+'last' => 'leest',
+'page_first' => 'Began',
+'page_last' => 'Iinje',
+'histlegend' => 'Tu wising foon da änringe iinjfåch da tu ferglikene Färsjoone ütwääle än di klänkfläche „{{int:compareselectedversions}}“ klikke.<br />
+* (Aktuäl) = unerschiis tu e aktuäle färsjoon, (Leeste) = unerschiis tu e leeste färsjoon
+* Klook/dootem = färsjoon tu jüdeer tid, brükernoome/IP-adräs foon di beårber, L = latje änring.',
+'history-fieldset-title' => 'Säk önj e färsjoonshistoori',
+'history-show-deleted' => 'bloot sleekede färsjoone',
+'histfirst' => 'Ålste',
+'histlast' => 'Naiste',
+'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
+'historyempty' => '(lääsi)',
+
+# Revision feed
+'history-feed-title' => 'Färsjoonshistoori',
+'history-feed-description' => 'Färsjoonshistoori for jüdeer sid önj {{SITENAME}}',
+'history-feed-item-nocomment' => '$1 bit $2',
+
+# Revision deletion
+'rev-deleted-user' => '(Brükernoome wächhååld)',
+'rev-deleted-event' => '(Logbökaksjoon wächhååld)',
+'rev-deleted-user-contribs' => '[Benjüternoome unti IP-adräs wächhååld - beårbing üt baidråge ferstäägen]',
+'rev-deleted-text-permission' => "Judeer Färsjoon wörd '''sleeked'''.
+Näre önjgoowen tu di sleekforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].",
+'rev-deleted-text-unhide' => "Jüdeer färsjoon wörd '''sleeked'''.
+Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].
+Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-suppressed-text-unhide' => " Jüdeer färsjoon wörd '''unerdrükt'''.
+Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sleek-logbök].
+Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-deleted-text-view' => "Jüdeer Färsjoon wörd '''sleeked'''.
+Ås administraator koost dü da wider önjkiike.
+Näre önjgoowen tu di sleekforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].",
+'rev-suppressed-text-view' => "Jüdeer färsjoon wörd '''unerdruked'''.
+Administratoore koone da önjkiike; ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
+'rev-deleted-no-diff' => "Dü koost jüdeer ferschääl ai bekiike, dan iinj foon da änringe wörd '''sleeked'''. Näre önjgoowen tu di sleekforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].",
+'rev-suppressed-no-diff' => "Dü koost jüdeer ferschääl ai bekiike, dan iinj foon da änringe wörd '''sleeked'''.",
+'rev-deleted-unhide-diff' => "Iinj foon da änringe doon jüdeer ferschääl wörd '''sleeked'''.
+Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].
+Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-suppressed-unhide-diff' => "Iinj foon da färsjoone foon dåtdeer ferschääl wörd '''unerdruked'''.
+Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} unerdruk-logbök].
+Ås en administraator koost dü  nuch [$1 dåtdeer ferschääl bekiike], wan dü wider gunge mååst.",
+'rev-deleted-diff-view' => "En Färsjoon foon dåtdeer färsjoonsferschääl wörd '''sleeked'''.
+Ås administraator koost dü dåt färsjoonsferschääl siinj.
+Näre önjgoowen fant huum önj dåt [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sleek-logbök].",
+'rev-suppressed-diff-view' => "Iinj foon da färsjoone foon dåtdeer färsjoonsferschääl wörd '''unerdruked'''.
+Administratoore koone dåtheer färsjoonsferschääl siinj; ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
+'rev-delundel' => 'wis/fersteeg',
+'rev-showdeleted' => 'wise',
+'revisiondelete' => 'Färsjoone sleeke/widermååge',
+'revdelete-nologtype-title' => 'Niinj logtyp önjjääwen',
+'revdel-restore' => 'sichtboorhäid änre',
+'revdelete-otherreason' => 'Ouderen/tubaikaamenden grün:',
+'revdelete-reasonotherlist' => 'Ouderen grün',
+'revdelete-edit-reasonlist' => 'Sleekgrüne beårbe',
+
+# Suppression log
+'suppressionlog' => 'Oversight-logbök',
+
+# History merging
+'mergehistory' => 'Fersjoonshistoorie feriine',
+'mergehistory-header' => 'Ma jüdeer spetsjåålsid koost dü jü färsjoonshistoori foon en jurtkamstsid ma jü färsjoonshistoori foon en müüljsid feriine.
+Stal sääker, dåt jü färsjoonshistoori foon en sid histoorisch koräkt as.',
+'mergehistory-box' => 'Rewisjoone foon tou side feriine:',
+'mergehistory-from' => 'Jurtkamstsid:',
+'mergehistory-into' => 'Müüljsid:',
+'mergehistory-list' => 'Färsjoone, da feriind wårde koone',
+'mergehistory-go' => 'Wis färsjoone da feriind wårde koone',
+'mergehistory-submit' => 'Feriinde färsjoone',
+'mergehistory-empty' => 'Niinj färsjoone koone fereiind wårde.',
+'mergehistory-success' => '$3 {{PLURAL:$3|färsjoon|färsjoone}} foon [[:$1]] ma erfolch feriind tu [[:$2]].',
+'mergehistory-no-source' => 'Jurtkamstsid "$1" as ai deer.',
+'mergehistory-no-destination' => 'Müüljsid „$1“ bestoont ai.',
+'mergehistory-invalid-source' => 'Jurtkamstsid mötj en gültige sidnoome heewe.',
+'mergehistory-comment' => '„[[:$1]]“ feriind eefter „[[:$2]]“: $3',
+'mergehistory-same-destination' => 'Jurtkamst- än müüljsid mönje ai idäntisch weese',
+'mergehistory-reason' => 'Grün:',
+
+# Merge log
+'revertmerge' => 'Feriining tuninte mååge',
+'mergelogpagetext' => 'Dåtheer as dåt logbök foon da feriinde färsjoonshistoorie.',
+
+# Diffs
+'history-title' => 'Färsjoonshistoori foon "$1"',
+'difference' => '(Ferschääl twasche Färsjoone)',
+'lineno' => 'Ra $1:',
+'compareselectedversions' => 'Wäälde färsjoone ferglike',
+'showhideselectedversions' => 'Wäälde färsjoone wise/fersteege',
+'editundo' => 'tunintemååge',
+
+# Search results
+'searchresults' => 'Säkjresultoote',
+'searchresults-title' => 'Säkjresultoote for „$1“',
+'searchresulttext' => 'For mör informasjoon tu jü säkj sii jü [[{{MediaWiki:Helppage}}|heelpsid]].',
+'searchsubtitle' => 'Din säkönjfrååg: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|åle ma „$1“ beganende side]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|åle side, da eefter „$1“ ferlinke]])',
+'searchsubtitleinvalid' => 'Din säkönjfrååg: "$1".',
+'titlematches' => 'Oueriinjstiminge ma sidetiitle',
+'notitlematches' => 'Niinj oueriinjstiming ma sidetiitle',
+'textmatches' => 'Oueriinjstiminge ma inhålte',
+'notextmatches' => 'Niinj oueriinjstiming ma inhålte',
+'prevn' => '{{PLURAL:$1|leesten|leeste $1}}',
+'nextn' => '{{PLURAL:$1|näisten|näiste $1}}',
+'prevn-title' => 'Leeste $1 {{PLURAL:$1|resultoot|resultoote}}',
+'nextn-title' => 'Näiste $1 {{PLURAL:$1|resultoot|resultoote}}',
+'shown-title' => 'Wis $1 {{PLURAL:$1|resultoot|resultoote}} pro sid',
+'viewprevnext' => 'Wis ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Deer as en sid nååmd \"[[:\$1]]\" önj jüdeer wiki'''",
+'searchmenu-new' => "'''Mååg jü sid „[[:$1|$1]]“ önj dideer Wiki.'''",
+'search-result-size' => '$1 ({{PLURAL:$2|1 uurd|$2 uurde}})',
+'search-result-score' => 'Relevans: $1 %',
+'search-redirect' => '(widerliidjing foon „$1“)',
+'search-section' => '(oufsnaas $1)',
+'search-suggest' => 'Miinjdst dü „$1“?',
+'search-interwiki-caption' => 'Süsterprujäkte',
+'search-interwiki-default' => '$1 resultoote:',
+'search-interwiki-more' => '(widere)',
+'search-mwsuggest-enabled' => 'ma forsliike',
+'search-mwsuggest-disabled' => 'niinj forsliike',
+'search-relatedarticle' => 'früne',
+'mwsuggest-disable' => 'forsliike per Ajax deaktiviire',
+'searcheverything-enable' => 'Onj ål noomerüme säke',
+'searchrelated' => 'früne',
+'searchall' => 'åle',
+'showingresults' => "Heer {{PLURAL:$1|as '''1''' resultoot|san '''$1''' resultoote}}, beganend ma numer '''$2.'''",
+'showingresultsnum' => "Heer {{PLURAL:$3|as '''1''' resultoot|san '''$3''' resultoote}}, beganend ma numer '''$2.'''",
+'showingresultsheader' => "{{PLURAL:$5|resultoot '''$1''' foon '''$3'''|resultoote '''$1-$2''' foon '''$3'''}}, for '''$4.'''",
+'nonefound' => "'''Haanewising:''' Deer wårde ståndardmääsi man ainkelde noomerüme döörsoocht. Seet ''all:'' for din Säkbegrip, am åle side (inkl. diskusjoonside, forlååge, äsw.) tu döörsäken unti gesiilt di noome foon di tu döörsäkende noomerüm.",
+'search-nonefound' => 'For din säkanfrååg würden niinj resultoote fünen.',
+'powersearch' => 'ütwided säkj',
+'powersearch-legend' => 'ütwided säkj',
+'powersearch-ns' => 'Säkj önj noomerüme:',
+'powersearch-redir' => 'Widerliidjinge anwise',
+'powersearch-field' => 'Säk eefter:',
+'powersearch-togglelabel' => 'Wääl üt:',
+'powersearch-toggleall' => 'Åle',
+'powersearch-togglenone' => 'Niinj',
+'search-external' => 'Extern säkj',
+'searchdisabled' => 'Jü {{SITENAME}}-säkj as deaktiviird. Dü koost intwasche ma Google säke. Betånk, dåt di säkindäks for {{SITENAME}} ferüüljet weese koon.',
+
+# Preferences page
+'preferences' => 'Önjstalinge',
+'mypreferences' => 'Önjstalinge',
+
+# Groups
+'group-sysop' => 'Administratoore',
+
+'grouppage-sysop' => '{{ns:project}}:Administratoore',
+
+# User rights log
+'rightslog' => 'Ruchte-logbök',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'jüdeer sid beårbe',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|änring|änringe}}',
+'recentchanges' => 'Leeste änringe',
+'recentchanges-legend' => 'Wis-opsjoone',
+'recentchanges-feed-description' => 'Ferfülie ma dåtheer feed da leeste änringe önj {{SITENAME}}.',
+'rcnote' => "Wised {{PLURAL:$1|wård '''1''' änring|wårde da leeste '''$''' änringe}} {{PLURAL:$2|foon e leest däi|foon da leeste '''$2''' deege}}. Stånd: $4, am e klook $5.",
+'rclistfrom' => 'Bloot änringe sunt $1 wise.',
+'rcshowhideminor' => 'Latje änringe $1',
+'rcshowhidebots' => 'Bots $1',
+'rcshowhideliu' => 'Önjmäldede brükere $1',
+'rcshowhideanons' => 'Anonymen brüker $1',
+'rcshowhidemine' => 'Äine tujeefte $1',
+'rclinks' => 'Wis da leeste $1 änringe foon da leeste $2 deege.<br />$3',
+'diff' => 'ferschääl',
+'hist' => 'Färsjoone',
+'hide' => 'ütbläne',
+'show' => 'önjbläne',
+'minoreditletter' => 'L',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Detaile wise (JavaScript as nüsi)',
+'rc-enhanced-hide' => 'Detaile fersteege',
+
+# Recent changes linked
+'recentchangeslinked' => 'Änringe bai ferlinkte side',
+'recentchangeslinked-title' => 'Änringe bai side, da foon "$1" ferlinked san',
+'recentchangeslinked-summary' => "Jüdeer speetsjoolsid listet da leeste änringe bai da ferlinked side ap (btw. bai kategoriie tu da lasmoote foon jüdeer kategorii). Side aw din [[Special:Watchlist|eefterkiikliste]] san '''fåt''' deerstald.",
+'recentchangeslinked-page' => 'Sid:',
+'recentchangeslinked-to' => 'Wis änringe aw side, da heerjurt ferlinke',
+
+# Upload
+'upload' => 'Huuchsiinje',
+'uploadnologin' => 'Ai önjmälded',
+'uploadnologintext' => 'Dü möist [[Special:UserLogin|önjmälded weese]], am dootäie huuchleese tu koonen.',
+'upload_directory_missing' => 'Dåt aplees-fertiiknis ($1) breecht än köö ai foon di wäbsärwer mååged wårde.',
+'upload_directory_read_only' => 'Dåt aplees-fertiiknis ($1) koon ai foon e wäbsärver beschraawen wårde.',
+'uploaderror' => 'Aplees-fäägel',
+'uploadlogpage' => 'Dåtäi-logbök',
+'uploadedimage' => 'heet "[[$1]]" huuchsånd',
+
+# File description page
+'filehist' => 'Dååtäifärsjoone',
+'filehist-help' => 'Klik aw en tidpunkt, am jüdeer färsjoon önjiinjtunaamen.',
+'filehist-current' => 'aktuäl',
+'filehist-datetime' => 'Färsjoon foon e',
+'filehist-thumb' => 'Forlökbil',
+'filehist-thumbtext' => 'Forlökbil for Färsjoon foon $2, am e klook $3',
+'filehist-user' => 'brüker',
+'filehist-dimensions' => 'Mätje',
+'filehist-comment' => 'Komentoor',
+'imagelinks' => 'Dååtäiferwiinjinge',
+'linkstoimage' => '{{PLURAL:$1|Jü füliend sid ferwånt|Da füliende $1 side ferwiinje}} jüdeer dååtäi:',
+'sharedupload' => 'Jüdeer dååtäi ståmt üt $1 än mötj foon ouder prujäkte brükt wårde.',
+'uploadnewversion-linktext' => 'En nai färsjoon foon jüdeer dåtäi huuchsiinje',
+
+# Statistics
+'statistics' => 'Statistiik',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
+'nmembers' => '{{PLURAL:$1|1 önjdraag|$1 önjdraage}}',
+'prefixindex' => 'Åle side (ma prefiks)',
+'newpages' => 'Naie side',
+'move' => 'Ferschüwe',
+'movethispage' => 'Sid ferschüwe',
+'pager-newer-n' => '{{PLURAL:$1|näisten|näiste $1}}',
+'pager-older-n' => '{{PLURAL:$1|åleren|ålere $1}}',
+
+# Book sources
+'booksources' => 'ISBN-säkj',
+'booksources-search-legend' => 'Säk eefter betii-kwäle for böke',
+'booksources-go' => 'Säke',
+
+# Special:Log
+'log' => 'Logböke',
+
+# Special:AllPages
+'allpages' => 'Åle side',
+'alphaindexline' => '$1 bit $2',
+'prevpage' => 'Leest sid ($1)',
+'allpagesfrom' => 'Side wise sunt:',
+'allpagesto' => 'Side wise bit:',
+'allarticles' => 'Åle side',
+'allpagessubmit' => 'Önjwiinje',
+
+# Special:LinkSearch
+'linksearch' => 'Weblink-säkj',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Nai-önjmäldings-logbök',
+'newuserlog-create-entry' => 'Brüker wörd nai registriird',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(lasmoote-list)',
+
+# E-mail user
+'emailuser' => 'E-mail tu dideere brüker',
+
+# Watchlist
+'watchlist' => 'Eefterkiikliste',
+'mywatchlist' => 'Eefterkiikliste',
+'watchlistfor' => "(for '''$1''')",
+'addedwatch' => 'Tu eefterkiiksid tubaifäiged',
+'addedwatchtext' => 'Jü sid „[[:$1]]“ wörd tu din [[Special:Watchlist|eefterkiiklist]] tubaifäiged.
+
+Lääsere änringe bai jüdeer sid än jü deertuhiirende diskusjoonssid wårde deer listed än
+önj e ouersicht foon da [[Special:RecentChanges|leeste änringe]] önj fåtschraft deerstald.
+
+Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jüdeer sid aw „{{int:Unwatch}}“.',
+'removedwatch' => 'Foon jü eefterlöksid wächhååld',
+'removedwatchtext' => 'Jü sid „[[:$1]]“ wörd foon din [[Special:Watchlist|eefterkiiklist]] wächhååld.',
+'watch' => 'Kiike eefter',
+'watchthispage' => 'Side eefterkiike',
+'unwatch' => 'ai mör eefter kiike',
+'watchlist-details' => 'Dü kiikst eefter {{PLURAL:$1|1 sid|$1 side}}.',
+'wlshowlast' => 'Wis da änringe foon da leeste $1 stüne, $2 deege unti $3.',
+'watchlist-options' => 'Wis-opsjoone',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Eefter kiike...',
+'unwatching' => 'Ai eefter kiike...',
+
+# Delete
+'deletepage' => 'Sid tunintemååge',
+'confirmdeletetext' => 'Dü bast deerbai, en sid ma åle tuhiirende ålere färsjoone tuninte tu måågen. Bestääsie hål deertu, dåt dü de foon da konsekwänse bewust bast, än dåt dü önj oueriinjstiming ma da [[{{MediaWiki:Policy-url}}|ruchtliinjen]] hoonelst.',
+'actioncomplete' => 'Aksjoon beånd',
+'deletedtext' => '„<nowiki>$1</nowiki>“ wörd tunintemååged. In e $2 fanst dü en list foon da tuleest tunintemåågede side.',
+'deletedarticle' => 'heet "[[$1]]" tunintemååged',
+'dellogpage' => 'Tunintemååg-Logbök',
+'deletecomment' => 'Grün:',
+'deleteotherreason' => 'Ouderen/tubaikaamenden grün:',
+'deletereasonotherlist' => 'Ouderen grün',
+
+# Rollback
+'rollbacklink' => 'tubäägseete',
+
+# Protect
+'protectlogpage' => 'Sideschütse-logbök',
+'protectedarticle' => 'schütsed „[[$1]]“',
+'modifiedarticleprotection' => 'änred e schüts for "[[$1]]"',
+'protectcomment' => 'Grün:',
+'protectexpiry' => 'Spärduur:',
+'protect_expiry_invalid' => 'Jü önjjääwen duur as üngülti.',
+'protect_expiry_old' => 'Jü spärtid lait in jü jütid.',
+'protect-text' => 'Heer koost dü e schütsstatus for jü sid "$1" önjkiike än änre.',
+'protect-locked-access' => "Din brükerkonto ferfäiget ai ouer da nüsie ruchte tu jü änring foon e sideschüts. Heer san da aktuäle sideschütsönjstalinge fon jü sid '''„$1“:'''",
+'protect-cascadeon' => 'Jüdeer sid as nütutids diilj foon e kaskaadenspäre. Jü as önj {{PLURAL:$1|jü füliende sid|da füliende side}} önjbünen, huk döör jü kaskaadenspäropsjoon schütsed {{PLURAL:$1|as|san}}. Di sideschütsstatus koon for jüdeer sid änred wårde, dåtdeer heet ouers nån influs aw jü kaskaadenspäre:',
+'protect-default' => 'Åle brükere',
+'protect-fallback' => 'Jü "$1"-beruchtiging as nüsi.',
+'protect-level-autoconfirmed' => 'Späring for naie än ai registriirde brükere',
+'protect-level-sysop' => 'Bloot administratoore',
+'protect-summary-cascade' => 'kaskadiirend',
+'protect-expiring' => 'bit $2, am e klook $3 (UTC)',
+'protect-cascade' => 'Kaskadiirende späre - åle önj jüdeer sid önjbünene forlååge wårde uk spärd.',
+'protect-cantedit' => 'Dü koost jü späre foon jüheer sid ai änre, deer dü niinj beruchtiging tu beårben foon jü sid hääst.',
+'restriction-type' => 'Schütsstatus',
+'restriction-level' => 'Schütshöögde',
+
+# Undelete
+'undeletelink' => 'wise/widermååge',
+'undeletedarticle' => 'heet "[[$1]]" widermååged',
+
+# Namespace form on various pages
+'namespace' => 'Noomerüm:',
+'invert' => 'Ütwool amkiire',
+'blanknamespace' => '(Side)',
+
+# Contributions
+'contributions' => 'Brükertujeefte',
+'contributions-title' => 'Brükertujeefte foon "$1"',
+'mycontris' => 'Äine tujeefte',
+'contribsub2' => 'For $1 ($2)',
+'uctop' => '(aktuäl)',
+'month' => 'än moune:',
+'year' => 'bit iir:',
+
+'sp-contributions-newbies' => 'Wis bloot tujeefte foon naie brükere',
+'sp-contributions-blocklog' => 'Spär-logbök',
+'sp-contributions-search' => 'Säkj eefter brükertujeefte',
+'sp-contributions-username' => 'IP-adräs unti brükernoome',
+'sp-contributions-submit' => 'Säike',
+
+# What links here
+'whatlinkshere' => 'Links aw jüdeer sid',
+'whatlinkshere-title' => 'Side, da aw "$1" ferlinke',
+'whatlinkshere-page' => 'sid:',
+'linkshere' => "Da füliende side ferlinke aw '''„[[:$1]]“''':",
+'isredirect' => 'widerliidjingssid',
+'istemplate' => 'Forlåågeninbining',
+'isimage' => 'dåtäilink',
+'whatlinkshere-prev' => '{{PLURAL:$1|leesten|leeste $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|näisten|näiste $1}}',
+'whatlinkshere-links' => '← links',
+'whatlinkshere-hideredirs' => 'Widerliidjinge $1',
+'whatlinkshere-hidetrans' => 'Forlåågenönjbininge $1',
+'whatlinkshere-hidelinks' => 'Links $1',
+'whatlinkshere-filters' => 'Sääwe',
+
+# Block/unblock
+'blockip' => 'IP-adräs/brüker späre',
+'ipboptions' => '2 stüne:2 hours,1 däi:1 day,3 deege:3 days,1 wääg:1 week,2 wääge:2 weeks,1 moune:1 month,3 moune:3 months,6 moune:6 months,1 iir:1 year,suner iinje:infinite',
+'ipblocklist' => 'Spärd IP-adräse än brükernoome',
+'expiringblock' => 'iinjet aw e $1 am e klook $2',
+'blocklink' => 'späre',
+'unblocklink' => 'frijeewe',
+'change-blocklink' => 'Spär änre',
+'contribslink' => 'tujeefte',
+'autoblocker' => 'Automatische spär, deer dü en gemiinsoom IP-adräs ma [[User:$1|brüker:$1]] brükst. Grün foon brükerspär: „$2“.',
+'blocklogpage' => 'Brükerspär-logbök',
+'blocklogentry' => 'spärd „[[$1]]“ for di tidrüm: $2 $3',
+'reblock-logentry' => 'änerd jü spär for „[[$1]]“ for di tidrüm: $2 $3',
+'blocklogtext' => 'Dåtdeer as dåt logbök ouer späringe än önjtspäringe foon brükere än IP-adräse.
+Automatisch spärd IP-adräse wårde ai footed.
+Sii jü [[Special:IPBlockList|list foon da spärd IP-adräse än brükernoome]] for ål da aktive späre.',
+'unblocklogentry' => 'heet jü späre foon „$1“ aphääwd',
+'block-log-flags-anononly' => 'bloot anonyme',
+'block-log-flags-nocreate' => 'Måågen foon brükerkonte spärd',
+'block-log-flags-noautoblock' => 'autoblock deaktiviird',
+'block-log-flags-noemail' => 'e-mail-fersiinjing spärd',
+'block-log-flags-nousertalk' => 'mötj äine diskusjoonssid ai beårbe',
+'block-log-flags-angry-autoblock' => 'ütbrååt autoblock aktiviird',
+'block-log-flags-hiddenname' => 'brükernoome ferstäägen',
+'range_block_disabled' => 'Jü möölikhäid, hiilj adräsrüme tu spären, as ai aktiviird.',
+'ipb_expiry_invalid' => 'Jü önjjääwen duur as üngülti.',
+'ipb_expiry_temp' => 'Ferstäägen brükernoome-späre schan pärmanänt weese.',
+'ipb_hide_invalid' => 'Ditheer konto koon ai unerdrükd wårde, deer dåt tufoole beårbinge apwist.',
+
+# Move page
+'movepagetext' => "Ma dideere formulaar koost de en sid ambenååme (masamt åle färsjoone).
+Di üülje tiitel wårt tu di naie widerliidje.
+Dü koost widerliidjinge, da ap e originooltiitel ferlinke, automatisch korrigiire lätje.
+For di fål dåt dü dåt ai dääst, präiw aw [[Special:DoubleRedirects|dööwelte]] unti [[Special:BrokenRedirects|önjstööge widerliidjinge]].
+Dü bast deerfor feroontuurdlik, dåt links fortönj ap dåt koräkt muul wise.
+
+Jü sid wårt '''ai''' ferschääwen, wan dåt ål en sid ma di seelew noome jeeft,
+süwid jüdeer ai lääsi unti en widerliidjing suner färsjoonshistoori as. Dåtdeer bedjüset,
+dåt dü jü sid tubääg ferschüwe koost, wan dü en fäägel mååged heest. Dü koost
+deeriinj niinj sid ouerschriwe.
+
+'''Woorschouing!'''
+Jü ferschüwing koon widlingende än ünfermousene fülie for beliifte side heewe.
+Dü schöist deerfor da konsekwänse ferstönjen heewe, iir dü baiblafst.",
+'movepagetalktext' => "Jü deertu hiirende diskusjoonssid wård, süwid deer, maferschääwen, '''unti dåt moost weese:'''
+*Deer bestoont ål en diskusjoonssid ma dideere noome, unti
+*dü wäälst jü uner stönjene opsjoon ouf.
+
+Önj dadeere fåle möist dü, wan wansched, di önjhålt foon jü sid foon hönj ferschüwe unti tuhuupefääre.
+
+Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming hål '''begrüne.'''",
+'movearticle' => 'Sid ferschüwe:',
+'newtitle' => 'Muul:',
+'move-watch' => 'Lök eefter jüdeer sid',
+'movepagebtn' => 'Sid ferschüwe',
+'pagemovedsub' => 'Ferschüwing erfolchrik',
+'movepage-moved' => "'''Jü sid „$1“ wörd eefter „$2“ ferschääwen.'''",
+'articleexists' => 'Uner dideere noome bestoont ål en sid. Wääl hål en nai noome.',
+'talkexists' => 'Jü sid seelew wörd erfolchrik ferschääwen, ouers jü deertu hiirende diskusjoonssid ai, deer ål iinj ma di nai tiitel bestoont. Glik hål da önjhålte foon hönj ouf.',
+'movedto' => 'ferschääwen eefter',
+'movetalk' => 'Jü diskusjoonssid maferschüwe, wan möölik',
+'1movedto2' => 'heet „[[$1]]“ eefter „[[$2]]“ ferschääwen',
+'1movedto2_redir' => 'heet „[[$1]]“ eefter „[[$2]]“ ferschääwen än deerbai en widerliidjing ouerschraawen',
+'movelogpage' => 'Ferschüwingslogbök',
+'movereason' => 'Begrüning:',
+'revertmove' => 'tubääg ferschüwe',
+
+# Export
+'export' => 'Side äksportiire',
+
+# Thumbnails
+'thumbnail-more' => 'fergrutre',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Din brükersid',
+'tooltip-pt-mytalk' => 'Din diskusjoonssid',
+'tooltip-pt-preferences' => 'Äine önjstalinge',
+'tooltip-pt-watchlist' => 'List foon eefterkiikede side',
+'tooltip-pt-mycontris' => 'List foon din tujeefte',
+'tooltip-pt-login' => 'Ham önjmälde wårt wälj hål sänj, ouers as niinj plächt.',
+'tooltip-pt-anonlogin' => 'Ham önjmälde wårt wälj hål sänj, ouers as niinj plächt.',
+'tooltip-pt-logout' => 'Oufmälde',
+'tooltip-ca-talk' => 'Diskusjoon ouer jü sidinhålt',
+'tooltip-ca-edit' => 'Sid beårbe. Hål for dåt spikern jü forlökfunksjoon brüke.',
+'tooltip-ca-addsection' => 'Nai oufsnaas begane',
+'tooltip-ca-viewsource' => 'Jüdeer sid wårt uner ferbading hülen. Di kwältäkst koon önjkiiked wårde.',
+'tooltip-ca-history' => 'Iire färsjoone foon jüdeer sid',
+'tooltip-ca-protect' => 'Jüdeer sid schütse',
+'tooltip-ca-delete' => 'Jüdeer sid tunintemååge',
+'tooltip-ca-move' => 'Jüdeer sid ferschüwe',
+'tooltip-ca-watch' => 'Jüdeer sid tu jü persöönlike eefterkiiksid baitufäige',
+'tooltip-ca-unwatch' => 'Jüdeer sid foon jü persöönlike eefterkiikliste wächnaame',
+'tooltip-search' => '{{SITENAME}} döörsäke',
+'tooltip-search-go' => 'Gung matiinjs tu jü sid, jü äksakt di injääwen noome önjtspreecht.',
+'tooltip-search-fulltext' => 'Säk eefter side, da dideere täkst öjnthüülje',
+'tooltip-p-logo' => 'Besäk jü hoodsid',
+'tooltip-n-mainpage' => 'Hoodsid wise',
+'tooltip-n-mainpage-description' => 'Hoodsid besäke',
+'tooltip-n-portal' => 'Ouer dåt portåål, wat dü düünj koost, weer wat tu finen as',
+'tooltip-n-currentevents' => 'Äädergrüninformasjoone tu aktuäle schaiinge',
+'tooltip-n-recentchanges' => 'List foon da leeste änringe önj {{SITENAME}}',
+'tooltip-n-randompage' => 'Tufäli sid',
+'tooltip-n-help' => 'Heelpsid wise',
+'tooltip-t-whatlinkshere' => 'List foon ål da side, da heer jurt wise',
+'tooltip-t-recentchangeslinked' => 'Leest änringen bai side, da foon heer ferlinkd san',
+'tooltip-feed-rss' => 'RSS-feed for jüdeer sid',
+'tooltip-feed-atom' => 'Atom-feed for jüdeer sid',
+'tooltip-t-contributions' => 'List foon tujeefte foon dideere brüker önjkiike',
+'tooltip-t-emailuser' => 'En e-mail tu dideere brüker siinje',
+'tooltip-t-upload' => 'Dåtäie huuchsiinje',
+'tooltip-t-specialpages' => 'List foon ål da spesjåålside',
+'tooltip-t-print' => 'Prantönjsacht foon jüdeer sid',
+'tooltip-t-permalink' => 'Wååri link tu jüdeer sidfärsjoon',
+'tooltip-ca-nstab-main' => 'Sidinhålt wise',
+'tooltip-ca-nstab-user' => 'Brükersid wise',
+'tooltip-ca-nstab-special' => 'Jüdeer sid as en spetsjåålsid. Jü koon ai beåarbed wårde.',
+'tooltip-ca-nstab-project' => 'Portoolsid wise',
+'tooltip-ca-nstab-image' => 'Dååtäisid wise',
+'tooltip-ca-nstab-template' => 'Forlååge wise',
+'tooltip-ca-nstab-category' => 'Kategoriisid wise',
+'tooltip-minoredit' => 'Jüdeer änring as latj markiire.',
+'tooltip-save' => 'Änringe spikre',
+'tooltip-preview' => 'Forlök foon da änringe bai jüdeer sid. Hål for dåt spikern brüke!',
+'tooltip-diff' => 'Änringe bai di täkst wise',
+'tooltip-compareselectedversions' => 'Ferschääl twasche tou ütwäälde färsjoone foon jüdeer sid wise.',
+'tooltip-watch' => 'Fäig jüdeer sid foon din eefterkiikliste tubai',
+'tooltip-rollback' => 'Mååget åle leeste änringe foon jü sid, da foon di lik brüker fornümen wörden san, döör iinj klik tuninte.',
+'tooltip-undo' => 'Mååget bloot jüdeer iinje änring tuninte än wist dåt resultoot önj e forlöksid önj, deerma önj e tukuupefootingssid en begrüning önjjääwen wårde koon.',
+
+# Browsing diffs
+'previousdiff' => '← Tu di leest färsjoonsferschääl',
+'nextdiff' => 'Tu di näist färsjoons-unerschiis →',
+
+# Media information
+'file-info-size' => '($1 × $2 pixele, dååtäigrutelse: $3, MIME-typ: $4)',
+'file-nohires' => '<small>Niinj huuger apliising as deer.</small>',
+'svg-long-desc' => '(SVG-dåtäi, basisgrutelse: $1 × $2 pixel, dåtäigrutelse: $3)',
+'show-big-image' => 'Färsjon önj huuger apliising',
+'show-big-image-thumb' => '<small>Grutelse foon jü forlök: $1 × $2 pixele</small>',
+
+# Bad image list
+'bad_image_list' => 'Formååt:
+
+Bloot rae, da ma en * begane, wårde ütwjarted. As jarste eefter dåt * mötj en link aw en ai wansched dååtäi stönje.
+Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kontäkst weerfoon jü dååtäi duch tu schüns kaame mötj.',
+
+# Metadata
+'metadata' => 'Metadååte',
+'metadata-help' => 'Jüdeer dåtäi önjthålt widere informasjoon, jü önj e räigel foon jü digitoolamera unti di ferwånd scanner ståme. Döör eefterdräägen beårbing foon jü originooldåtäi koone hu detaile feränret wörden weese.',
+'metadata-expand' => 'Ütbriidede detaile wise',
+'metadata-collapse' => 'Ütbriidede detaile fersteege',
+'metadata-fields' => 'Da füliende fälje foon da EXIF-metadååte önju dideere MediaWiki-systeemtäkst wårde aw bilbeschriwingsside wist; widere standardmääsi „inklapede“ detaile koone wised wårde.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Jüdeer dåtäi ma en äkstärn prugram beårbe',
+'edit-externally-help' => '(Sii da [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] for widere Informasjoon)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'åle',
+'namespacesall' => 'åle',
+'monthsall' => 'åle',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Eefterkiiklist: änringe',
+'watchlisttools-edit' => 'normåål beårbe',
+'watchlisttools-raw' => 'Listeformoot beårbe (import/äksport)',
+
+# Special:SpecialPages
+'specialpages' => 'Spetsjåålside',
+
+);
diff --git a/languages/messages/MessagesFur.php b/languages/messages/MessagesFur.php
index 5cebd406..7a901697 100644
--- a/languages/messages/MessagesFur.php
+++ b/languages/messages/MessagesFur.php
@@ -18,24 +18,22 @@ $fallback = 'it';
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Speciâl',
- NS_MAIN => '',
- NS_TALK => 'Discussion',
- NS_USER => 'Utent',
- NS_USER_TALK => 'Discussion_utent',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'Discussion_$1',
- NS_FILE => 'Figure',
- NS_FILE_TALK => 'Discussion_figure',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
- NS_TEMPLATE => 'Model',
- NS_TEMPLATE_TALK => 'Discussion_model',
- NS_HELP => 'Jutori',
- NS_HELP_TALK => 'Discussion_jutori',
- NS_CATEGORY => 'Categorie',
- NS_CATEGORY_TALK => 'Discussion_categorie'
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciâl',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Utent',
+ NS_USER_TALK => 'Discussion_utent',
+ NS_PROJECT_TALK => 'Discussion_$1',
+ NS_FILE => 'Figure',
+ NS_FILE_TALK => 'Discussion_figure',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
+ NS_TEMPLATE => 'Model',
+ NS_TEMPLATE_TALK => 'Discussion_model',
+ NS_HELP => 'Jutori',
+ NS_HELP_TALK => 'Discussion_jutori',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Discussion_categorie',
);
$specialPageAliases = array(
@@ -153,6 +151,9 @@ $messages = array(
'underline-never' => 'Mai',
'underline-default' => 'Predeterminât dal sgarfadôr',
+# Font style option in Special:Preferences
+'editfont-default' => 'Predeterminât dal sgarfadôr',
+
# Dates
'sunday' => 'Domenie',
'monday' => 'Lunis',
@@ -212,7 +213,7 @@ $messages = array(
'category-media-header' => 'Files inte categorie "$1"',
'category-empty' => "''Par cumò la categorie no conten ni pagjinis ni files multimediâi.''",
'hidden-categories' => '{{PLURAL:$1|Categorie platade|Categoriis platadis}}',
-'hidden-category-category' => 'Categoriis platadis', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categoriis platadis',
'category-subcat-count' => '{{PLURAL:$2|Cheste categorie e conten une sot categorie, mostrade ca sot.|Cheste categorie e conten {{PLURAL:$1|la sot categorie|lis $1 sot categoriis}} ca sot suntun totâl di $2.}}',
'category-subcat-count-limited' => 'Cheste categorie e conten {{PLURAL:$1|une sot categorie, mostrade|$1 sot categoriis, mostradis}} sot.',
'category-article-count' => '{{PLURAL:$2|Cheste categorie e conten dome une pagjine mostrade ca sot.|Cheste categorie e conten {{PLURAL:$1|la pagjine indicade|lis $1 pagjinis indicadis}} di seguit, suntun totâl di $2.}}',
@@ -223,10 +224,18 @@ $messages = array(
'mainpagetext' => "'''MediaWiki e je stade instalade cun sucès.'''",
-'about' => 'Informazions',
-'article' => 'Vôs',
-'newwindow' => '(al vierç un gnûf barcon)',
-'cancel' => 'Scancele',
+'about' => 'Informazions',
+'article' => 'Vôs',
+'newwindow' => '(al vierç un gnûf barcon)',
+'cancel' => 'Scancele',
+'moredotdotdot' => 'Plui...',
+'mypage' => 'Mê pagjine',
+'mytalk' => 'Mês discussions',
+'anontalk' => 'Discussion par chest IP',
+'navigation' => 'somari',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Cjate',
'qbbrowse' => 'Sgarfe',
'qbedit' => 'Cambie',
@@ -234,12 +243,25 @@ $messages = array(
'qbpageinfo' => 'Contest',
'qbmyoptions' => 'Mês pagjinis',
'qbspecialpages' => 'Pagjinis speciâls',
-'moredotdotdot' => 'Plui...',
-'mypage' => 'Mê pagjine',
-'mytalk' => 'Mês discussions',
-'anontalk' => 'Discussion par chest IP',
-'navigation' => 'somari',
-'and' => '&#32;e',
+
+# Vector skin
+'vector-action-addsection' => 'Gnove sezion',
+'vector-action-delete' => 'Elimine',
+'vector-action-move' => 'Môf',
+'vector-action-protect' => 'Protêç',
+'vector-namespace-category' => 'Categorie',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pagjine',
+'vector-namespace-mediawiki' => 'Messaç',
+'vector-namespace-template' => 'Model',
+'vector-namespace-user' => 'Pagjine dal utent',
+'vector-view-create' => 'Cree',
+'vector-view-edit' => 'Cambie',
+'vector-view-history' => 'Cjale il storic',
+'vector-view-view' => 'Lei',
+'vector-view-viewsource' => 'Cjale risultive',
+'actions' => 'Azions',
+'variants' => 'Variants',
'errorpagetitle' => 'Erôr',
'returnto' => 'Torne a $1.',
@@ -289,7 +311,7 @@ $messages = array(
'otherlanguages' => 'Altris lenghis',
'redirectedfrom' => '(Inviât ca di $1)',
'redirectpagesub' => 'Pagjine di redirezion',
-'lastmodifiedat' => "Cambiât par l'ultime volte ai $2, $1", # $1 date, $2 time
+'lastmodifiedat' => "Cambiât par l'ultime volte ai $2, $1",
'viewcount' => 'Cheste pagjine e je stade lete {{PLURAL:$1|une volte|$1 voltis}}.',
'protectedpage' => 'Pagjine protezude',
'jumpto' => 'Va a:',
@@ -364,8 +386,6 @@ Une liste des pagjinis speciâls validis a si pues cjatâ su [[Special:SpecialPa
# General errors
'error' => 'Erôr',
'databaseerror' => 'Erôr de base di dâts',
-'noconnect' => 'Nus displâs, ma il sît al à al moment cualchi dificoltât tecniche e nol pues conetisi al servidôr de base di dâts. <br />$1',
-'nodb' => 'No si pues selezionâ la base di dâts $1',
'laggedslavemode' => 'Atenzion: La pagjine podarès no segnalâ inzornaments recents.',
'readonly' => 'Base di dâts blocade',
'readonlytext' => "La base di dâts pal moment e je blocade e no si puedin zontâ vôs e fâ modifichis, probabilmentri pe normâl manutenzion de base di dâts, daspò de cuâl dut al tornarà normâl.
@@ -387,93 +407,76 @@ Al podarès vê dentri caratars che no podin jessi doprâts tai titui.',
'viewsourcetext' => 'Tu puedis viodi e copiâ la risultive di cheste pagjine:',
# Login and logout pages
-'logouttitle' => 'Jessude dal utent',
-'logouttext' => "'''Tu sâs cumò lât fûr.'''
+'logouttext' => "'''Tu sâs cumò lât fûr.'''
Tu puedis continuâ a doprâ {{SITENAME}} come anonim, o tu puedis jentrâ cul stes o cuntun altri non utent.
Note che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la cache dal sgarfadôr.",
-'welcomecreation' => '== Mandi e benvignût $1! ==
+'welcomecreation' => '== Mandi e benvignût $1! ==
La tô identitât e je stade creade. No stâ dismenteâti di gambiâ lis preferencis di {{SITENAME}}.',
-'loginpagetitle' => 'Jentrade dal utent',
-'yourname' => 'Non utent',
-'yourpassword' => 'Peraule clâf',
-'yourpasswordagain' => 'Torne a scrivile',
-'remembermypassword' => 'Visiti di me',
-'yourdomainname' => 'Il to domini',
-'login' => 'Jentre',
-'nav-login-createaccount' => 'Regjistriti o jentre',
-'loginprompt' => 'Tu âs di vê abilitâts i cookies par jentrâ in {{SITENAME}}.',
-'userlogin' => 'Regjistriti o jentre',
-'logout' => 'Jes',
-'userlogout' => 'Jes',
-'notloggedin' => 'No tu sês jentrât',
-'nologin' => "No âstu ancjemò une identitât par jentrâ? '''$1'''.",
-'nologinlink' => 'Creile cumò',
-'createaccount' => 'Cree une gnove identitât',
-'gotaccount' => "Âstu za une identitât? '''$1'''.",
-'gotaccountlink' => 'Jentre',
-'createaccountmail' => 'par pueste eletroniche',
-'badretype' => 'Lis peraulis clâfs inseridis no son compagnis.',
-'userexists' => 'Il non utent inserît al è za doprât. Sielç par plasê un non diferent.',
-'youremail' => 'Email *',
-'username' => 'Non utent:',
-'uid' => 'ID utent:',
-'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
-'yourrealname' => 'Non vêr *',
-'yourlanguage' => 'Lenghe di mostrâ',
-'yourvariant' => 'Varietât',
-'yournick' => 'Stranon (nick):',
-'badsig' => 'Firme crude invalide; controle i tags HTML.',
-'yourgender' => 'Ses:',
-'gender-unknown' => 'No specificât',
-'gender-male' => 'Masculin',
-'gender-female' => 'Feminin',
-'prefs-help-gender' => 'Opzionâl: doprât intal software par indreçâsi ai utents cul gjenar just. Cheste informazion e sarà publiche.',
-'email' => 'Pueste eletroniche',
-'prefs-help-realname' => '* Non vêr (opzionâl): se tu sielzis di inserîlu al vignarà doprât par dâti un ricognossiment dal tô lavôr.',
-'loginerror' => 'Erôr te jentrade',
-'prefs-help-email' => 'La direzion di pueste eletroniche e je opzionâl, ma nus permet di mandâti une gnove peraule clâf se tu ti la sês dismenteade. Cun di plui, permet a chei altris di contatâti vie la tô pagjine utent o di discussion cence scugnî mostrâ a ducj la tô identitât.',
-'prefs-help-email-required' => 'E covente une direzion di pueste eletroniche.',
-'nocookiesnew' => "L'identitât utent e je stade creade, ma no tu sês jentrât. {{SITENAME}} al dopre i cookies par visâsi dai utents, e tu tu ju âs disabilitâts. Par plasê abilitiju, dopo jentre cul to gnûf non utent e password.",
-'nocookieslogin' => '{{SITENAME}} e dopre i cookies par visâsi dai utents, e tu tu ju âs disabilitâts. Par plasê abilitiju e torne a provâ.',
-'noname' => 'No tu âs inserît un non utent valit.',
-'loginsuccesstitle' => 'Jentrât cun sucès',
-'loginsuccess' => 'Cumò tu sês jentrât te {{SITENAME}} sicu "$1".',
-'nosuchuser' => 'Nissun utent regjistrât cul non "$1". Controle il non inserît o [[Special:UserLogin/signup|cree tu une gnove identitât]].',
-'nosuchusershort' => 'Nol esist nissun utent cul non "<nowiki>$1</nowiki>". Controle di no vê sbaliât di scrivi.',
-'nouserspecified' => 'Tu scugnis specificâ un non utent.',
-'wrongpassword' => 'La peraule clâf zontade no je juste. Torne par plasê a provâ.',
-'wrongpasswordempty' => 'La peraule clâf inseride e je vueide. Torne a provâ.',
-'passwordtooshort' => 'La tô peraule clâf no je valide o e je masse curte.
-E à di jessi di almancul {{PLURAL:$1|1 caratar|$1 caratars}} e jessi difarente dal to non utent.',
-'mailmypassword' => 'Mande une gnove peraule clâf ae me direzion di pueste eletroniche',
-'passwordremindertitle' => 'Gnove peraule clâf temporanie par {{SITENAME}}',
-'passwordremindertext' => 'Cualchidun (probabilmentri tu, de direzion IP $1) al à domandât une gnove peraule clâf par jentrâ in {{SITENAME}} ($4).
+'yourname' => 'Non utent',
+'yourpassword' => 'Peraule clâf',
+'yourpasswordagain' => 'Torne a scrivile',
+'remembermypassword' => 'Visiti di me',
+'yourdomainname' => 'Il to domini',
+'login' => 'Jentre',
+'nav-login-createaccount' => 'Regjistriti o jentre',
+'loginprompt' => 'Tu âs di vê abilitâts i cookies par jentrâ in {{SITENAME}}.',
+'userlogin' => 'Regjistriti o jentre',
+'userloginnocreate' => 'Jentre',
+'logout' => 'Jes',
+'userlogout' => 'Jes',
+'notloggedin' => 'No tu sês jentrât',
+'nologin' => "No âstu ancjemò une identitât par jentrâ? '''$1'''.",
+'nologinlink' => 'Creile cumò',
+'createaccount' => 'Cree une gnove identitât',
+'gotaccount' => "Âstu za une identitât? '''$1'''.",
+'gotaccountlink' => 'Jentre',
+'createaccountmail' => 'par pueste eletroniche',
+'badretype' => 'Lis peraulis clâfs inseridis no son compagnis.',
+'userexists' => 'Il non utent inserît al è za doprât. Sielç par plasê un non diferent.',
+'loginerror' => 'Erôr te jentrade',
+'createaccounterror' => "No si à podût creâ l'identitât: $1",
+'nocookiesnew' => "L'identitât utent e je stade creade, ma no tu sês jentrât. {{SITENAME}} al dopre i cookies par visâsi dai utents, e tu tu ju âs disabilitâts. Par plasê abilitiju, dopo jentre cul to gnûf non utent e password.",
+'nocookieslogin' => '{{SITENAME}} e dopre i cookies par visâsi dai utents, e tu tu ju âs disabilitâts. Par plasê abilitiju e torne a provâ.',
+'noname' => 'No tu âs inserît un non utent valit.',
+'loginsuccesstitle' => 'Jentrât cun sucès',
+'loginsuccess' => 'Cumò tu sês jentrât te {{SITENAME}} sicu "$1".',
+'nosuchuser' => 'Nissun utent regjistrât cul non "$1". Controle il non inserît o [[Special:UserLogin/signup|cree tu une gnove identitât]].',
+'nosuchusershort' => 'Nol esist nissun utent cul non "<nowiki>$1</nowiki>". Controle di no vê sbaliât di scrivi.',
+'nouserspecified' => 'Tu scugnis specificâ un non utent.',
+'wrongpassword' => 'La peraule clâf zontade no je juste. Torne par plasê a provâ.',
+'wrongpasswordempty' => 'La peraule clâf inseride e je vueide. Torne a provâ.',
+'passwordtooshort' => 'La peraule clâf e à di jessi di almancul {{PLURAL:$1|1 caratar|$1 caratars}}.',
+'password-name-match' => 'La peraule clâf e à di jessi divierse dal to non utent.',
+'mailmypassword' => 'Mande une gnove peraule clâf ae me direzion di pueste eletroniche',
+'passwordremindertitle' => 'Gnove peraule clâf temporanie par {{SITENAME}}',
+'passwordremindertext' => 'Cualchidun (probabilmentri tu, de direzion IP $1) al à domandât une gnove peraule clâf par jentrâ in {{SITENAME}} ($4).
Une peraule clâf temporanie par l\'utent "$2" e je stade creade e impuestade a "$3". Se cheste e jere la tô intenzion, tu varâs di jentrâ e sielzi une gnove peraule clâf cumò. La to peraule clâf temporanie e scjadarà daspò {{PLURAL:$5|une zornade|$5 zornadis}}.
Se no tu âs domandât tu chest o se tu âs cjatât la peraule clâf e no tu vuelis plui cambiâle, tu puedis ignorâ chest messaç e continuâ a doprâ la vecje peraule clâf.',
-'noemail' => 'Nissune direzion email regjistrade par l\'utent "$1".',
-'passwordsent' => 'Une gnove peraule clâf e je stade mandade ae direzion di pueste eletroniche regjistrade par l\'utent "$1".
+'noemail' => 'Nissune direzion email regjistrade par l\'utent "$1".',
+'passwordsent' => 'Une gnove peraule clâf e je stade mandade ae direzion di pueste eletroniche regjistrade par l\'utent "$1".
Par plasê torne a fâ la jentrade pene che tu la âs ricevude.',
-'eauthentsent' => 'Un messaç di pueste eletroniche di conferme al è stât mandât ae direzion specificade.
+'eauthentsent' => 'Un messaç di pueste eletroniche di conferme al è stât mandât ae direzion specificade.
Prime di ricevi cualsisei altri messaç di pueste, tu scugnis seguî lis istruzions scritis dal messaç, par confermâ che la identitât e je propi la tô.',
-'emailauthenticated' => 'La tô direzion email e je stade autenticade ai $2 aes $3.',
-'emailnotauthenticated' => 'La tô direzion email no je ancjemò autenticade. No vignaran mandâts messaçs pes funzions ca sot.',
-'noemailprefs' => 'Specifiche une direzion email par fâ lâ cheste funzion.',
-'emailconfirmlink' => 'Conferme la tô direzion email',
-'invalidemailaddress' => 'La direzion email no pues jessi acetade parcè che no samee intun formât valit. Inserìs par plasê une direzion ben formatade o disvuede chest cjamp.',
-'accountcreated' => 'Identitât creade',
-'accountcreatedtext' => 'La identitât utent par $1 e je stade creade.',
-'createaccount-title' => 'Creazion di une identitât par {{SITENAME}}',
-'loginlanguagelabel' => 'Lenghe: $1',
+'emailauthenticated' => 'La tô direzion email e je stade autenticade ai $2 aes $3.',
+'emailnotauthenticated' => 'La tô direzion email no je ancjemò autenticade. No vignaran mandâts messaçs pes funzions ca sot.',
+'noemailprefs' => 'Specifiche une direzion email par fâ lâ cheste funzion.',
+'emailconfirmlink' => 'Conferme la tô direzion email',
+'invalidemailaddress' => 'La direzion email no pues jessi acetade parcè che no samee intun formât valit. Inserìs par plasê une direzion ben formatade o disvuede chest cjamp.',
+'accountcreated' => 'Identitât creade',
+'accountcreatedtext' => 'La identitât utent par $1 e je stade creade.',
+'createaccount-title' => 'Creazion di une identitât par {{SITENAME}}',
+'loginlanguagelabel' => 'Lenghe: $1',
# Password reset dialog
-'resetpass' => 'Gambie peraule clâf',
-'resetpass_header' => 'Cambie peraule clâf de identitât',
-'oldpassword' => 'Vecje peraule clâf',
-'newpassword' => 'Gnove peraule clâf',
-'retypenew' => 'Torne a scrivi chê gnove',
+'resetpass' => 'Gambie peraule clâf',
+'resetpass_header' => 'Cambie peraule clâf de identitât',
+'oldpassword' => 'Vecje peraule clâf',
+'newpassword' => 'Gnove peraule clâf',
+'retypenew' => 'Torne a scrivi chê gnove',
+'resetpass-submit-cancel' => 'Scancele',
# Edit page toolbar
'bold_sample' => 'Test in gruessut',
@@ -529,7 +532,6 @@ Visiti che no tu puedis doprâ la funzion 'Messaç di pueste a chest utent' se n
Par plasê inclût la to direzion IP atuâl ($3) o il numar dal bloc (ID #$5) in ogni richieste di sclariments.",
'blockedoriginalsource' => "Ca sot tu puedis viodi la risultive de pagjine '''$1''':",
'whitelistedittext' => 'Tu scugnis $1 par cambiâ lis pagjinis.',
-'confirmedittitle' => 'E covente la conferme de direzion di pueste eletroniche pe modifiche de pagjine',
'confirmedittext' => 'Prime di cambiâ lis pagjinis tu scugnis confermâ la to direzion di pueste eletroniche. Par impuestâ e confermâ la direzion, dopre lis [[Special:Preferences|preferencis]].',
'loginreqtitle' => 'Si scugne jentrâ',
'loginreqlink' => 'jentrâ',
@@ -564,9 +566,9 @@ Cun di plui, inviant il test tu declaris che tu âs scrit tu chest o tu lu âs c
'readonlywarning' => "'''ATENZION: La base di dâts e je blocade par vie de manutenzion, par cui no si podin salvâ lis modifichis par cumò. Par no pierdilis, tu puedis copiâ e tacâ il test inserît fin cumò e salvâlu intun file di test.'''
L'aministradôr che al à blocât la base di dâts al à ufiert chest spiegazion: $1",
-'templatesused' => 'Modei doprâts par cheste pagjine:',
-'templatesusedpreview' => 'Modei doprâts in cheste anteprime:',
-'templatesusedsection' => 'Modei doprâts in cheste sezion:',
+'templatesused' => '{{PLURAL:$1|Model doprât|Modei doprâts}} par cheste pagjine:',
+'templatesusedpreview' => '{{PLURAL:$1|Model doprât|Modei doprâts}} in cheste anteprime:',
+'templatesusedsection' => '{{PLURAL:$1|Model doprât|Modei doprâts}} in cheste sezion:',
'template-protected' => '(protezût)',
'template-semiprotected' => '(semi-protezût)',
'hiddencategories' => 'Cheste pagjine e je {{PLURAL:$1|intune categorie platade|in $1 categoriis platadis}}:',
@@ -575,12 +577,13 @@ L'aministradôr che al à blocât la base di dâts al à ufiert chest spiegazion
'nocreate-loggedin' => 'No tu âs i permès che a coventin par creâ gnovis pagjinis.',
'permissionserrors' => 'Erôr tai permès',
'permissionserrorstext-withaction' => 'No tu âs i permès che a coventin par $2, {{PLURAL:$1|par il motîf|pai motîfs}} ca sot:',
-'recreate-deleted-warn' => "'''Atenzion: tu stâs par tornâ a creâ une pagjine che e je stade eliminade timp fa.'''
+'recreate-moveddeleted-warn' => "'''Atenzion: tu stâs par tornâ a creâ une pagjine che e je stade eliminade timp fa.'''
Siguriti che sedi pardabon oportun lâ indevant cun la modifiche di cheste pagjine.
Ve ca par comoditât l'elenc des eliminazions precedentis par cheste pagjine:",
-'deleted-notice' => 'Cheste pagjine e je stade eliminade.
-Il regjistri di eliminazion pe pagjine al ven mostrât ca sot par informazion.',
+'moveddeleted-notice' => 'Cheste pagjine e je stade eliminade.
+Il regjistri di eliminazion e di spostament pe pagjine a son mostrâts ca sot par informazion.',
+'log-fulllog' => 'Viôt dut il regjistri',
'edit-no-change' => 'Il cambiament al è stât ignorât parcè che no tu âs cambiât nuie tal test.',
# History pages
@@ -589,7 +592,7 @@ Il regjistri di eliminazion pe pagjine al ven mostrât ca sot par informazion.',
'currentrev' => 'Version atuâl',
'currentrev-asof' => 'Revision atuâl dai $1',
'revisionasof' => 'Version dai $1',
-'revision-info' => 'Version dal $1, autôr: $2', # Additionally available: $3: revision id
+'revision-info' => 'Version dal $1, autôr: $2',
'previousrevision' => '← Version plui vecje',
'nextrevision' => 'Version plui gnove →',
'currentrevisionlink' => 'Version atuâl',
@@ -602,7 +605,6 @@ Il regjistri di eliminazion pe pagjine al ven mostrât ca sot par informazion.',
Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la version precedente, '''p''' = piçul cambiament",
'history-fieldset-title' => 'Sgarfe tal storic',
-'deletedrev' => '[eliminade]',
'histfirst' => 'Prime',
'histlast' => 'Ultime',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -611,13 +613,19 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
# Revision feed
'history-feed-title' => 'Storic des revisions',
'history-feed-description' => 'Storic des revisions de pagjine su cheste wiki',
-'history-feed-item-nocomment' => '$1 ai $2', # user at time
+'history-feed-item-nocomment' => '$1 ai $2',
# Revision deletion
-'rev-delundel' => 'mostre/plate',
-'revdel-restore' => 'cambie visibilitât',
-'pagehist' => 'Storic de pagjine',
-'revdelete-uname' => 'non utent',
+'rev-delundel' => 'mostre/plate',
+'rev-showdeleted' => 'mostre',
+'revdelete-show-file-submit' => 'Sì',
+'revdelete-radio-same' => '(no stâ cambiâ)',
+'revdelete-radio-set' => 'Sì',
+'revdelete-radio-unset' => 'No',
+'revdel-restore' => 'cambie visibilitât',
+'pagehist' => 'Storic de pagjine',
+'revdelete-uname' => 'non utent',
+'revdelete-reasonotherlist' => 'Altri motîf',
# Merge log
'revertmerge' => 'Anule unions',
@@ -629,135 +637,157 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
'compareselectedversions' => 'Confronte versions selezionadis',
'editundo' => 'anule',
'diff-multi' => '({{PLURAL:$1|Une version intermedie no mostrade|$1 versions intermediis no mostradis}}.)',
-'diff-width' => 'largjece',
-'diff-height' => 'altece',
# Search results
-'searchresults' => 'Risultâts de ricercje',
-'searchresults-title' => 'Risultâts de ricercje di "$1"',
-'searchresulttext' => 'Par plui informazions su lis ricercjis in {{SITENAME}}, cjale [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ricercje di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dutis lis pagjinis che a scomencin par "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dutis lis pagjinis che a pontin a "$1"]])',
-'searchsubtitleinvalid' => 'Pal test "$1"',
-'noexactmatch' => "'''No esist une pagjine cul titul \"\$1\".''' Tu podaressis [[:\$1|creâle tu]].",
-'noexactmatch-nocreate' => "'''La pagjine cun titul \"\$1\" no esist.'''",
-'toomanymatches' => 'Masse risultâts, prove par plasê une ricercje divierse.',
-'titlematches' => 'Corispondencis tai titui des pagjinis',
-'notitlematches' => 'Nissune corispondence tai titui des pagjinis',
-'textmatches' => 'Corispondencis tal test des pagjinis',
-'notextmatches' => 'Nissune corispondence tal test des pagjinis',
-'prevn' => 'precedents $1',
-'nextn' => 'prossims $1',
-'prevn-title' => '$1 {{PLURAL:$1|risultât precedent|risultâts precedents}}',
-'nextn-title' => '$1 {{PLURAL:$1|risultât sucessîf|risultâts sucessîfs}}',
-'shown-title' => 'Mostre $1 {{PLURAL:$1|risultât|risultâts}} par pagjine',
-'viewprevnext' => 'Cjale ($1) ($2) ($3).',
-'searchmenu-legend' => 'Opzions de ricercje',
-'searchmenu-exists' => "'''E je une pagjine di non \"[[:\$1]]\" su cheste wiki'''",
-'searchmenu-new' => "'''Cree la pagjine \"[[:\$1]]\" su cheste wiki!'''",
-'searchhelp-url' => 'Help:Contignûts',
-'searchprofile-articles' => 'Pagjinis di contignûts',
-'searchprofile-articles-and-proj' => 'Contignûts & progjet',
-'searchprofile-project' => 'Pagjinis sul progjet',
-'searchprofile-images' => 'Files',
-'searchprofile-everything' => 'Dut',
-'searchprofile-advanced' => 'Avançade',
-'searchprofile-articles-tooltip' => 'Cîr in $1',
-'searchprofile-project-tooltip' => 'Cîr in $1',
-'searchprofile-images-tooltip' => 'Cîr files',
-'search-result-size' => '$1 ({{PLURAL:$2|une peraule|$2 peraulis}})',
-'search-result-score' => 'Rilevance: $1%',
-'search-redirect' => '(re-indreçament $1)',
-'search-section' => '(sezion $1)',
-'search-suggest' => 'Forsit tu cirivis: $1',
-'search-interwiki-caption' => 'Progjets fradis',
-'search-interwiki-default' => 'Risultâts di $1:',
-'search-interwiki-more' => '(altri)',
-'search-mwsuggest-enabled' => 'cui sugjeriments',
-'search-mwsuggest-disabled' => 'cence i sugjeriments',
-'mwsuggest-disable' => 'Disative i sugjeriments AJAX',
-'searchall' => 'ducj',
-'showingresults' => "Ca sot {{PLURAL:$1|al è fin a '''1''' risultât|a son fin a '''$1''' risultâts}} scomençant dal numar '''$2'''.",
-'showingresultsnum' => "Ca sot {{PLURAL:$3|al è '''1''' risultât|a son '''$3''' risultâts}} scomençant dal numar '''$2'''.",
-'showingresultstotal' => "Ca sot {{PLURAL:$4|al ven mostrât il risultât '''$1''' su '''$3'''|a vegnin mostrâts i risultâts '''$1 - $2''' su '''$3'''}}",
-'nonefound' => "'''Note''': la ricercje e ven fate normalmentri dome in cualchi spazi dai nons. Prove a scrivi ''all:'' prime dal test di cjatâ par cirî in ducj i nons dai spazis (includint lis pagjinis di discussion, i modei e v.i.) o se no dopre il non dal spazi desiderât come prefìs.",
-'search-nonefound' => 'Nissun risultât par cheste ricercje.',
-'powersearch' => 'Cîr',
-'powersearch-legend' => 'Ricercje avanzade',
-'powersearch-ns' => 'Cîr tai spazis dai nons:',
-'powersearch-redir' => 'Elenc re-indreçaments',
-'powersearch-field' => 'Cîr',
-'search-external' => 'Ricercje esterne',
-'searchdisabled' => 'La ricercje in {{SITENAME}} no je ative. Tu puedis doprâ Google intant. Sta atent che lis lôr tabelis sul contignût di {{SITENAME}} a puedin jessi pôc inzornadis.',
+'searchresults' => 'Risultâts de ricercje',
+'searchresults-title' => 'Risultâts de ricercje di "$1"',
+'searchresulttext' => 'Par plui informazions su lis ricercjis in {{SITENAME}}, cjale [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Ricercje di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dutis lis pagjinis che a scomencin par "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dutis lis pagjinis che a pontin a "$1"]])',
+'searchsubtitleinvalid' => 'Pal test "$1"',
+'toomanymatches' => 'Masse risultâts, prove par plasê une ricercje divierse.',
+'titlematches' => 'Corispondencis tai titui des pagjinis',
+'notitlematches' => 'Nissune corispondence tai titui des pagjinis',
+'textmatches' => 'Corispondencis tal test des pagjinis',
+'notextmatches' => 'Nissune corispondence tal test des pagjinis',
+'prevn' => 'precedents {{PLURAL:$1|$1}}',
+'nextn' => 'prossims {{PLURAL:$1|$1}}',
+'prevn-title' => '$1 {{PLURAL:$1|risultât precedent|risultâts precedents}}',
+'nextn-title' => '$1 {{PLURAL:$1|risultât sucessîf|risultâts sucessîfs}}',
+'shown-title' => 'Mostre $1 {{PLURAL:$1|risultât|risultâts}} par pagjine',
+'viewprevnext' => 'Cjale ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'Opzions de ricercje',
+'searchmenu-exists' => "'''E je une pagjine di non \"[[:\$1]]\" su cheste wiki'''",
+'searchmenu-new' => "'''Cree la pagjine \"[[:\$1]]\" su cheste wiki!'''",
+'searchhelp-url' => 'Help:Contignûts',
+'searchprofile-articles' => 'Pagjinis di contignûts',
+'searchprofile-project' => 'Pagjinis di jutori e sul progjet',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Dut',
+'searchprofile-advanced' => 'Avançade',
+'searchprofile-articles-tooltip' => 'Cîr in $1',
+'searchprofile-project-tooltip' => 'Cîr in $1',
+'searchprofile-images-tooltip' => 'Cîr files',
+'search-result-size' => '$1 ({{PLURAL:$2|une peraule|$2 peraulis}})',
+'search-result-score' => 'Rilevance: $1%',
+'search-redirect' => '(re-indreçament $1)',
+'search-section' => '(sezion $1)',
+'search-suggest' => 'Forsit tu cirivis: $1',
+'search-interwiki-caption' => 'Progjets fradis',
+'search-interwiki-default' => 'Risultâts di $1:',
+'search-interwiki-more' => '(altri)',
+'search-mwsuggest-enabled' => 'cui sugjeriments',
+'search-mwsuggest-disabled' => 'cence i sugjeriments',
+'mwsuggest-disable' => 'Disative i sugjeriments AJAX',
+'searchall' => 'ducj',
+'showingresults' => "Ca sot {{PLURAL:$1|al è fin a '''1''' risultât|a son fin a '''$1''' risultâts}} scomençant dal numar '''$2'''.",
+'showingresultsnum' => "Ca sot {{PLURAL:$3|al è '''1''' risultât|a son '''$3''' risultâts}} scomençant dal numar '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Risultât '''$1''' su '''$3'''|Risultâts '''$1 - $2''' su '''$3'''}} par '''$4'''",
+'nonefound' => "'''Note''': la ricercje e ven fate normalmentri dome in cualchi spazi dai nons. Prove a scrivi ''all:'' prime dal test di cjatâ par cirî in ducj i nons dai spazis (includint lis pagjinis di discussion, i modei e v.i.) o se no dopre il non dal spazi desiderât come prefìs.",
+'search-nonefound' => 'Nissun risultât par cheste ricercje.',
+'powersearch' => 'Cîr',
+'powersearch-legend' => 'Ricercje avanzade',
+'powersearch-ns' => 'Cîr tai spazis dai nons:',
+'powersearch-redir' => 'Elenc re-indreçaments',
+'powersearch-field' => 'Cîr',
+'search-external' => 'Ricercje esterne',
+'searchdisabled' => 'La ricercje in {{SITENAME}} no je ative. Tu puedis doprâ Google intant. Sta atent che lis lôr tabelis sul contignût di {{SITENAME}} a puedin jessi pôc inzornadis.',
+
+# Quickbar
+'qbsettings' => 'Sbare svelte',
+'qbsettings-none' => 'Nissune',
+'qbsettings-fixedleft' => 'Fis a Çampe',
+'qbsettings-fixedright' => 'Fis a Drete',
+'qbsettings-floatingleft' => 'Flutuant a çampe',
+'qbsettings-floatingright' => 'Flutuant a diestre',
# Preferences page
-'preferences' => 'Preferencis',
-'mypreferences' => 'mês preferencis',
-'prefs-edits' => 'Numar di cambiaments fats:',
-'prefsnologin' => 'No tu sês jentrât',
-'qbsettings' => 'Sbare svelte',
-'qbsettings-none' => 'Nissune',
-'qbsettings-fixedleft' => 'Fis a Çampe',
-'qbsettings-fixedright' => 'Fis a Drete',
-'qbsettings-floatingleft' => 'Flutuant a çampe',
-'qbsettings-floatingright' => 'Flutuant a diestre',
-'changepassword' => 'Gambie peraule clâf',
-'skin' => 'Mascare',
-'skin-preview' => 'Anteprime',
-'math' => 'Matematiche',
-'dateformat' => 'Formât de date',
-'datedefault' => 'Nissune preference',
-'datetime' => 'Date e ore',
-'prefs-personal' => 'Dâts utents',
-'prefs-rc' => 'Ultins cambiaments & stubs',
-'prefs-watchlist' => 'Tignudis di voli',
-'prefs-watchlist-days' => 'Numar di zornadis di mostrâ inte liste des pagjinis tignudis di voli:',
-'prefs-watchlist-days-max' => '(massim 7 zornadis)',
-'prefs-watchlist-edits' => 'Numar di modifichis di mostrâ inte liste slargjade:',
-'prefs-watchlist-edits-max' => '(numar massim: 1000)',
-'prefs-misc' => 'Variis',
-'prefs-resetpass' => 'Cambie la peraule clâf',
-'saveprefs' => 'Salve lis preferencis',
-'resetprefs' => 'Predeterminât',
-'restoreprefs' => 'Torne a lis impostazions predeterminadis',
-'textboxsize' => 'Cambiament',
-'prefs-edit-boxsize' => 'Dimensions dal barcon pai cambiaments.',
-'rows' => 'Riis',
-'columns' => 'Colonis:',
-'searchresultshead' => 'Ricercje',
-'resultsperpage' => 'Risultâts par pagjine',
-'contextlines' => 'Riis par risultât',
-'contextchars' => 'Numar di caratars par capî il contest:',
-'stub-threshold' => 'Valôr minim pe formatazion dai <a href="#" class="stub">leams aboç</a> (bytes):',
-'recentchangesdays' => 'Numar di zornadis di mostrâ tai ultins cambiaments:',
-'recentchangesdays-max' => '(massim $1 {{PLURAL:$1|zornade|zornadis}})',
-'recentchangescount' => 'Numar di titui tai ultins cambiaments',
-'savedprefs' => 'Lis preferencis a son stadis salvadis',
-'timezonelegend' => 'Fûs orari:',
-'timezonetext' => 'Il numar di oris di diference rispiet ae ore dal servidôr (UTC).',
-'localtime' => 'Ore locâl:',
-'timezoneselect' => 'Fûs orari:',
-'timezoneuseserverdefault' => 'Dopre la ore dal servidôr',
-'timezoneuseoffset' => 'Altri (inserìs la difarence)',
-'timezoneoffset' => 'Difarence¹:',
-'servertime' => 'Ore dal servidôr:',
-'guesstimezone' => 'Cjape impostazions dal sgarfadôr',
-'timezoneregion-africa' => 'Afriche',
-'timezoneregion-antarctica' => 'Antartic',
-'timezoneregion-arctic' => 'Artic',
-'timezoneregion-asia' => 'Asie',
-'timezoneregion-atlantic' => 'Ocean Atlantic',
-'timezoneregion-australia' => 'Australie',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Ocean Indian',
-'timezoneregion-pacific' => 'Ocean Pacific',
-'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
-'prefs-searchoptions' => 'Opzions de ricercje',
-'prefs-namespaces' => 'Spazis dai nons',
-'defaultns' => 'Cîr in chescj spazis dai nons se no specifichi nuialtri:',
-'default' => 'predeterminât',
-'files' => 'Files',
-'prefs-custom-css' => 'CSS personalizât',
-'prefs-custom-js' => 'JS personalizât',
+'preferences' => 'Preferencis',
+'mypreferences' => 'mês preferencis',
+'prefs-edits' => 'Numar di cambiaments fats:',
+'prefsnologin' => 'No tu sês jentrât',
+'changepassword' => 'Gambie peraule clâf',
+'prefs-skin' => 'Mascare',
+'skin-preview' => 'Anteprime',
+'prefs-math' => 'Matematiche',
+'datedefault' => 'Nissune preference',
+'prefs-datetime' => 'Date e ore',
+'prefs-personal' => 'Dâts utents',
+'prefs-rc' => 'Ultins cambiaments & stubs',
+'prefs-watchlist' => 'Tignudis di voli',
+'prefs-watchlist-days' => 'Numar di zornadis di mostrâ inte liste des pagjinis tignudis di voli:',
+'prefs-watchlist-days-max' => '(massim 7 zornadis)',
+'prefs-watchlist-edits' => 'Numar di modifichis di mostrâ inte liste slargjade:',
+'prefs-watchlist-edits-max' => '(numar massim: 1000)',
+'prefs-misc' => 'Variis',
+'prefs-resetpass' => 'Cambie la peraule clâf',
+'saveprefs' => 'Salve lis preferencis',
+'resetprefs' => 'Predeterminât',
+'restoreprefs' => 'Torne a lis impostazions predeterminadis',
+'prefs-editing' => 'Cambiament',
+'prefs-edit-boxsize' => 'Dimensions dal barcon pai cambiaments.',
+'rows' => 'Riis',
+'columns' => 'Colonis:',
+'searchresultshead' => 'Ricercje',
+'resultsperpage' => 'Risultâts par pagjine',
+'contextlines' => 'Riis par risultât',
+'contextchars' => 'Numar di caratars par capî il contest:',
+'stub-threshold' => 'Valôr minim pe formatazion dai <a href="#" class="stub">leams aboç</a> (bytes):',
+'recentchangesdays' => 'Numar di zornadis di mostrâ tai ultins cambiaments:',
+'recentchangesdays-max' => '(massim $1 {{PLURAL:$1|zornade|zornadis}})',
+'recentchangescount' => 'Numar di cambiaments di mostrâ normalmentri:',
+'savedprefs' => 'Lis preferencis a son stadis salvadis',
+'timezonelegend' => 'Fûs orari:',
+'localtime' => 'Ore locâl:',
+'timezoneuseserverdefault' => 'Dopre la ore dal servidôr',
+'timezoneuseoffset' => 'Altri (inserìs la difarence)',
+'timezoneoffset' => 'Difarence¹:',
+'servertime' => 'Ore dal servidôr:',
+'guesstimezone' => 'Cjape impostazions dal sgarfadôr',
+'timezoneregion-africa' => 'Afriche',
+'timezoneregion-antarctica' => 'Antartic',
+'timezoneregion-arctic' => 'Artic',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-atlantic' => 'Ocean Atlantic',
+'timezoneregion-australia' => 'Australie',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Ocean Indian',
+'timezoneregion-pacific' => 'Ocean Pacific',
+'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
+'prefs-searchoptions' => 'Opzions de ricercje',
+'prefs-namespaces' => 'Spazis dai nons',
+'defaultns' => 'Se no, cîr in chescj spazis dai nons:',
+'default' => 'predeterminât',
+'prefs-files' => 'Files',
+'prefs-custom-css' => 'CSS personalizât',
+'prefs-custom-js' => 'JS personalizât',
+'prefs-emailconfirm-label' => 'Conferme de pueste eletroniche:',
+'youremail' => 'Email *',
+'username' => 'Non utent:',
+'uid' => 'ID utent:',
+'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
+'prefs-registration' => 'Date di regjistrazion:',
+'yourrealname' => 'Non vêr *',
+'yourlanguage' => 'Lenghe di mostrâ',
+'yourvariant' => 'Varietât',
+'yournick' => 'Stranon (nick):',
+'badsig' => 'Firme crude invalide; controle i tags HTML.',
+'yourgender' => 'Ses:',
+'gender-unknown' => 'No specificât',
+'gender-male' => 'Masculin',
+'gender-female' => 'Feminin',
+'prefs-help-gender' => 'Opzionâl: doprât intal software par indreçâsi ai utents cul gjenar just. Cheste informazion e sarà publiche.',
+'email' => 'Pueste eletroniche',
+'prefs-help-realname' => '* Non vêr (opzionâl): se tu sielzis di inserîlu al vignarà doprât par dâti un ricognossiment dal tô lavôr.',
+'prefs-help-email' => 'La direzion di pueste eletroniche e je opzionâl, ma nus permet di mandâti une gnove peraule clâf se tu ti la sês dismenteade. Cun di plui, permet a chei altris di contatâti vie la tô pagjine utent o di discussion cence scugnî mostrâ a ducj la tô identitât.',
+'prefs-help-email-required' => 'E covente une direzion di pueste eletroniche.',
+'prefs-info' => 'Informazions di base',
+'prefs-signature' => 'Firme',
+'prefs-dateformat' => 'Formât de date',
+'prefs-advancedediting' => 'Opzions avanzadis',
+'prefs-advancedrc' => 'Opzions avanzadis',
+'prefs-advancedrendering' => 'Opzions avanzadis',
+'prefs-advancedsearchoptions' => 'Opzions avanzadis',
+'prefs-advancedwatchlist' => 'Opzions avanzadis',
# User rights
'editinguser' => "Cambiament dai dirits par l'utent '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -812,6 +842,8 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
# Recent changes linked
'recentchangeslinked' => 'Cambiaments leâts',
+'recentchangeslinked-feed' => 'Cambiaments leâts',
+'recentchangeslinked-toolbox' => 'Cambiaments leâts',
'recentchangeslinked-title' => 'Cambiaments leâts a "$1"',
'recentchangeslinked-noresult' => 'Nissun cambiament aes pagjinis leadis tal periodi specificât.',
'recentchangeslinked-summary' => "Cheste pagjine speciâl e mostre i cambiaments plui recents aes pagjinis leadis a chê specificade (o leadis ai elements intune categorie specificade). Lis [[Special:Watchlist|pagjinis tignudis di voli]] a son mostradis in '''gruessut'''.",
@@ -821,7 +853,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
# Upload
'upload' => 'Cjame sù un file',
'uploadbtn' => 'Cjame sù un file',
-'reupload' => 'Torne a cjamâ sù',
'uploadnologin' => 'No jentrât',
'uploadnologintext' => 'Tu scugnis [[Special:UserLogin|jentrâ]] cul to non utent par cjamâ sù files.',
'uploaderror' => 'Erôr cjamant sù',
@@ -856,7 +887,10 @@ Par includi une figure intune pagjine, dopre un leam inte form
'destfilename' => 'Non dal file di destinazion:',
'watchthisupload' => 'Ten di voli',
+'upload-unknown-size' => 'Dimension no cognossude',
+
'license' => 'Licence pal ûs:',
+'license-header' => 'Licence pal ûs',
'nolicense' => 'Nissune licence sielte',
'license-nopreview' => '(Anteprime no disponibil)',
@@ -871,6 +905,7 @@ Par includi une figure intune pagjine, dopre un leam inte form
'listfiles_count' => 'Versions',
# File description page
+'file-anchor-link' => 'Figure',
'filehist' => 'Storic dal file',
'filehist-help' => 'Frache suntune date/ore par viodi il file cemût che al jere in chel moment.',
'filehist-current' => 'corint',
@@ -884,14 +919,9 @@ Par includi une figure intune pagjine, dopre un leam inte form
'imagelinks' => 'Leams ae figure',
'linkstoimage' => '{{PLURAL:$1|La pagjine ca sot e je leade|Lis $1 pagjinis ca sot a son leadis}} a cheste figure:',
'nolinkstoimage' => 'No son pagjinis leadis a chest file.',
-'sharedupload' => 'Chest file al è ven di $1 e al pues jessi doprât di altris progjets.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Cjale par plasê la [pagjine di descrizion dal file $1] par altris informazions.',
-'shareduploadwiki-desc' => 'La descrizion su la $1 intal dipuesit condividût e ven mostrade ca sot.',
-'shareduploadwiki-linktext' => 'pagjine di descrizion dal file',
-'noimage' => 'Nol esist un file cun chest non, ma tu puedis $1 tu.',
-'noimage-linktext' => 'cjamâlu sù',
+'sharedupload' => 'Chest file al è ven di $1 e al pues jessi doprât di altris progjets.',
'uploadnewversion-linktext' => 'Cjame sù une gnove version di chest file',
-'shared-repo-from' => 'di $1', # $1 is the repository name
+'shared-repo-from' => 'di $1',
# File reversion
'filerevert-comment' => 'Coment:',
@@ -926,6 +956,7 @@ Par includi une figure intune pagjine, dopre un leam inte form
'statistics-header-edits' => 'Statistichis sui cambiaments',
'statistics-header-views' => 'Statistichis su lis viodudis',
'statistics-header-users' => 'Statistichis dai utents',
+'statistics-header-hooks' => 'Altris statistichis',
'statistics-articles' => 'Pagjinis di contignûts',
'statistics-pages' => 'Pagjinis',
'statistics-pages-desc' => 'Dutis lis pagjinis de wiki, includint lis pagjinis di discussion, i re-indreçaments e v.i.',
@@ -946,8 +977,8 @@ Par includi une figure intune pagjine, dopre un leam inte form
'brokenredirects' => 'Re-indreçaments che no funzionin',
'brokenredirectstext' => 'I re-indreçaments ca sot a mandin a pagjinis che no esistin:',
-'brokenredirects-edit' => '(cambie)',
-'brokenredirects-delete' => '(elimine)',
+'brokenredirects-edit' => 'cambie',
+'brokenredirects-delete' => 'elimine',
'withoutinterwiki' => 'Pagjinis cence leams interwiki',
'withoutinterwiki-legend' => 'Prefìs',
@@ -1037,8 +1068,9 @@ Cjale ancje lis [[Special:WantedCategories|categoriis desideradis]].',
'special-categories-sort-abc' => 'met in ordin alfabetichementri',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribûts dal utent eliminâts',
-'deletedcontributions-title' => 'Contribûts dal utent eliminâts',
+'deletedcontributions' => 'Contribûts dal utent eliminâts',
+'deletedcontributions-title' => 'Contribûts dal utent eliminâts',
+'sp-deletedcontributions-contribs' => 'contribûts',
# Special:LinkSearch
'linksearch' => 'Leams esternis',
@@ -1049,6 +1081,16 @@ Cjale ancje lis [[Special:WantedCategories|categoriis desideradis]].',
'listusersfrom' => 'Mostre i utents scomençant di:',
'listusers-submit' => 'Mostre',
'listusers-noresult' => 'Nissun utent cjatât.',
+'listusers-blocked' => '({{GENDER:$1|blocât|blocade}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste dai utents atîfs',
+'activeusers-intro' => 'Cheste e je une liste dai utents che a àn vût cualchi gjenar di ativitât {{PLURAL:$1|te ultime dì|tai ultins $1 diis}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|cambiament|cambiaments}} {{PLURAL:$3|te ultime dì|tai ultins $3 diis}}',
+'activeusers-from' => 'Mostre i utents scomençant di:',
+'activeusers-hidebots' => 'Plate i bots',
+'activeusers-hidesysops' => 'Plate i aministradôrs',
+'activeusers-noresult' => 'Nissun utent cjatât.',
# Special:Log/newusers
'newuserlogpage' => 'Regjistri dai gnûfs utents',
@@ -1129,7 +1171,7 @@ e la pagjine e sarà '''gruessute''' te [[Special:RecentChanges|liste dai ultins
'exblank' => 'pagjine vueide',
'delete-confirm' => 'Elimine "$1"',
'delete-legend' => 'Elimine',
-'historywarning' => 'Atenzion: la pagjine che tu stâs eliminant e à un storic.',
+'historywarning' => "'''Atenzion:''' La pagjine che tu stâs eliminant e à un storic cun plui o mancul $1 {{PLURAL:$1|revision|revisions}}:",
'confirmdeletetext' => 'Tu stâs par eliminâ par simpri une pagjine insieme cun dut il so storic.
Par plasê, da la conferme che tu vuelis fâlu, che tu capissis lis conseguencis e che tu lu stâs fasint tal rispiet de [[{{MediaWiki:Policy-url}}|politiche dal progjet]].',
'actioncomplete' => 'Azion completade',
@@ -1157,7 +1199,6 @@ Cjale $2 par une liste des ultimis eliminazions.',
'protectexpiry' => 'Scjadence:',
'protect_expiry_invalid' => 'Scjadence no valide.',
'protect_expiry_old' => 'La scjadence e je za passade.',
-'protect-unchain' => 'Sbloche i permès di spostament',
'protect-text' => "Ca tu puedis viodi e cambiâ il nivel di protezion pe pagjine '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "No tu âs i permès che a coventis par cambiâ i nivei di protezion de pagjine.
Lis impuestazions atuâls pe pagjine a son '''$1''':",
@@ -1172,7 +1213,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
'protect-expiry-indefinite' => 'indefinît',
'protect-cascade' => 'Protezion ricorsive (estendude a dutis lis pagjinis includudis in cheste).',
'protect-cantedit' => 'No tu puedis cambiâ i nivei di protezion par cheste pagjine, parcè che no tu âs i permès par modificâle.',
-'protect-expiry-options' => '1 ore:1 hour,1 zornade:1 day,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ore:1 hour,1 zornade:1 day,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite',
'restriction-type' => 'Permès:',
'restriction-level' => 'Nivel di restrizion:',
'pagesize' => '(bytes)',
@@ -1203,7 +1244,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
'contributions-title' => 'Contribûts di $1',
'mycontris' => 'Miei contribûts',
'contribsub2' => 'Par $1 ($2)',
-'nocontribs' => 'Nissun cambiament che al rispiete chescj criteris cjatât.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nissun cambiament che al rispiete chescj criteris cjatât.',
'uctop' => ' (su)',
'month' => 'Scomençant dal mês (e prime):',
'year' => 'Scomençant dal an (e prime):',
@@ -1211,7 +1252,9 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
'sp-contributions-newbies' => 'Mostre dome i contribûts dai gnûfs utents',
'sp-contributions-newbies-sub' => 'Pai gnûfs utents',
'sp-contributions-blocklog' => 'Regjistri dai blocs',
+'sp-contributions-deleted' => 'contribûts dal utent eliminâts',
'sp-contributions-logs' => 'regjistris',
+'sp-contributions-talk' => 'discussion',
'sp-contributions-search' => 'Cîr contribûts',
'sp-contributions-username' => 'Direzion IP o non utent:',
'sp-contributions-submit' => 'Cîr',
@@ -1237,6 +1280,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
# Block/unblock
'blockip' => 'Bloche utent',
+'blockip-title' => "Bloche l'utent",
'blockip-legend' => "Bloche l'utent",
'ipaddress' => 'Direzion IP:',
'ipadressorusername' => 'Direzion IP o non utent:',
@@ -1245,7 +1289,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
'ipbreasonotherlist' => 'Altri motîf',
'ipbanononly' => 'Bloche dome i utents anonims',
'ipbsubmit' => 'Bloche chest utent',
-'ipboptions' => '2 oris:2 hours,1 zornade:1 day,3 zornadis:3 days,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oris:2 hours,1 zornade:1 day,3 zornadis:3 days,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite',
'badipaddress' => 'La direzion IP no je valide',
'ipblocklist' => 'Utents e direzions IP blocadis',
'ipblocklist-submit' => 'Cîr',
@@ -1291,7 +1335,7 @@ In chescj câs, tu varâs di movi o unî a man lis informazions contignudis te p
'move-watch' => 'Ten di voli cheste pagjine',
'movepagebtn' => 'Môf pagjine',
'pagemovedsub' => 'Movude cun sucès',
-'movepage-moved' => '\'\'\'"$1" e je stade movude al titul "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" e je stade movude al titul "$2"\'\'\'',
'articleexists' => 'Une pagjine cun chest non e esist za, o il non sielt nol è valit.
Sielç par plasê un altri non.',
'talkexists' => "'''La pagjine e je stade movude cun sucès, ma no si à podût movi la pagjine di discussion parcè che e esist za tal gnûf titul. Trasferìs il contignût a man par plasê.'''",
@@ -1313,12 +1357,13 @@ Sielç par plasê un altri non.',
'export-addns' => 'Zonte',
# Namespace 8 related
-'allmessages' => 'Ducj i messaçs di sistem',
-'allmessagesname' => 'Non',
-'allmessagesdefault' => 'Test predeterminât',
-'allmessagescurrent' => 'Test curint',
-'allmessagestext' => 'Cheste e je une liste dai messaçs di sisteme disponibii tal non dal spazi MediaWiki:',
-'allmessagesmodified' => 'Mostre dome modificâts',
+'allmessages' => 'Ducj i messaçs di sistem',
+'allmessagesname' => 'Non',
+'allmessagesdefault' => 'Test predeterminât',
+'allmessagescurrent' => 'Test curint',
+'allmessagestext' => 'Cheste e je une liste dai messaçs di sisteme disponibii tal non dal spazi MediaWiki:',
+'allmessages-language' => 'Lenghe:',
+'allmessages-filter-submit' => 'Va',
# Thumbnails
'thumbnail-more' => 'Slargje',
@@ -1357,6 +1402,7 @@ Sielç par plasê un altri non.',
'tooltip-ca-viewsource' => 'Cheste pagjine e je protezude, ma tu puedis viodi la sô risultive.',
'tooltip-ca-history' => 'Versions precedentis di cheste pagjine.',
'tooltip-ca-protect' => 'Protêç cheste pagjine',
+'tooltip-ca-unprotect' => 'No stâ plui protezi cheste pagjine',
'tooltip-ca-delete' => 'Elimine cheste pagjine',
'tooltip-ca-undelete' => 'Ripristine i cambiaments fats a cheste pagjine prime che e fos eliminade',
'tooltip-ca-move' => 'Môf cheste pagjine (cambie il titul)',
@@ -1367,6 +1413,7 @@ Sielç par plasê un altri non.',
'tooltip-search-fulltext' => 'Cîr il test inserît intes pagjinis',
'tooltip-p-logo' => 'Pagjine principâl',
'tooltip-n-mainpage' => 'Visite la pagjine principâl',
+'tooltip-n-mainpage-description' => 'Visite la pagjine principâl',
'tooltip-n-portal' => 'Descrizion dal progjet, ce che tu puedis fâ e dulà che tu puedis cjatâ lis robis',
'tooltip-n-currentevents' => 'Informazions sui events di atualitât',
'tooltip-n-recentchanges' => 'Liste dai ultins cambiaments inte wiki.',
@@ -1409,10 +1456,12 @@ Sielç par plasê un altri non.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utent anonim|Utents anonims}} di {{SITENAME}}',
'siteuser' => 'Utent $1 di {{SITENAME}}',
-'lastmodifiedatby' => 'Cheste pagjine e je stade cambiade pe ultime volte a lis $2, $1 di $3.', # $1 date, $2 time, $3 user
+'anonuser' => '$1, utent anonim di {{SITENAME}}',
+'lastmodifiedatby' => 'Cheste pagjine e je stade cambiade pe ultime volte a lis $2, $1 di $3.',
'othercontribs' => 'Basât sul lavôr di $1.',
'others' => 'altris',
'siteusers' => '$1, {{PLURAL:$2|utent|utents}} di {{SITENAME}}',
+'anonusers' => '$1, {{PLURAL:$2|utent anonim|utents anonims}} di {{SITENAME}}',
'creditspage' => 'Pagjine dai ricognossiments',
'nocredits' => 'Nissune informazion sui ricognossiments disponibil par cheste pagjine.',
@@ -1482,7 +1531,7 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largjece',
@@ -1507,7 +1556,7 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
'exif-unknowndate' => 'Date no cognossude',
-'exif-orientation-1' => 'Normâl', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normâl',
# External editor support
'edit-externally' => 'Modifiche chest file cuntune aplicazion esterne',
@@ -1580,9 +1629,9 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
'watchlisttools-raw' => 'Modifiche la liste des pagjinis tignudis di voli in formât testuâl',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-variables' => 'Variabilis',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licence',
'version-software-version' => 'Version',
@@ -1625,4 +1674,8 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
'dberr-again' => 'Prove a spietâ uns minûts e po torne a cjamâ la pagjine.',
'dberr-info' => '(No si pues contatâ il servidor de base di dâts: $1)',
+# HTML forms
+'htmlform-submit' => 'Invie',
+'htmlform-selectorother-other' => 'Altris',
+
);
diff --git a/languages/messages/MessagesFy.php b/languages/messages/MessagesFy.php
index 242d85f0..1421786d 100644
--- a/languages/messages/MessagesFy.php
+++ b/languages/messages/MessagesFy.php
@@ -8,6 +8,7 @@
* @file
*
* @author Maartenvdbent
+ * @author Purodha
* @author Pyt
* @author SK-luuut
* @author Snakesteuben
@@ -37,22 +38,22 @@ $datePreferenceMigrationMap = array(
);
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Wiki',
- NS_TALK => 'Oerlis',
- NS_USER => 'Meidogger',
- NS_USER_TALK => 'Meidogger_oerlis',
- NS_PROJECT_TALK => '$1_oerlis',
- NS_FILE => 'Ofbyld',
- NS_FILE_TALK => 'Ofbyld_oerlis',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_oerlis',
- NS_TEMPLATE => 'Berjocht',
- NS_TEMPLATE_TALK => 'Berjocht_oerlis',
- NS_HELP => 'Hulp',
- NS_HELP_TALK => 'Hulp_oerlis',
- NS_CATEGORY => 'Kategory',
- NS_CATEGORY_TALK => 'Kategory_oerlis'
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Wiki',
+ NS_TALK => 'Oerlis',
+ NS_USER => 'Meidogger',
+ NS_USER_TALK => 'Meidogger_oerlis',
+ NS_PROJECT_TALK => '$1_oerlis',
+ NS_FILE => 'Ofbyld',
+ NS_FILE_TALK => 'Ofbyld_oerlis',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_oerlis',
+ NS_TEMPLATE => 'Berjocht',
+ NS_TEMPLATE_TALK => 'Berjocht_oerlis',
+ NS_HELP => 'Hulp',
+ NS_HELP_TALK => 'Hulp_oerlis',
+ NS_CATEGORY => 'Kategory',
+ NS_CATEGORY_TALK => 'Kategory_oerlis',
);
$namespaceAliases = array(
@@ -170,6 +171,7 @@ $messages = array(
'tog-enotifminoredits' => 'E-mail my ek by lytse feroarings fan siden op myn folchlist',
'tog-enotifrevealaddr' => 'Myn e-mailadres sjen litte yn e-mailberjochten',
'tog-shownumberswatching' => 'It tal brûkers sjen litte dat dizze side folget',
+'tog-oldsig' => 'Hûdige sinjatuerprintallyk:',
'tog-fancysig' => 'Sinjatuer as wikitekst behannelje (sûnder automatyske keppeling)',
'tog-externaleditor' => 'Standert in eksterne tekstbewurker brûke (allinne foar experts - foar dizze funksje binne spesjale ynstellings nedich)',
'tog-externaldiff' => 'Standert in ekstern ferlikingsprogramma brûke (allinne foar experts - foar dizze funksje binne spesjale ynstellings nedich)',
@@ -192,6 +194,12 @@ $messages = array(
'underline-never' => 'Nea',
'underline-default' => 'Webblêder-standert',
+# Font style option in Special:Preferences
+'editfont-style' => 'Lettertypestyl bewurkingsfinster',
+'editfont-default' => 'Blêdererstandert',
+'editfont-sansserif' => 'Skreefleas lettertype',
+'editfont-serif' => 'Lettertype mei skreven',
+
# Dates
'sunday' => 'snein',
'monday' => 'moandei',
@@ -251,7 +259,7 @@ $messages = array(
'category-media-header' => 'Media yn de kategory "$1"',
'category-empty' => "''Yn dizze kategory binne gjin siden of triemmen opnaam.''",
'hidden-categories' => 'Ferburgen {{PLURAL:$1|kategory|kategoryen}}',
-'hidden-category-category' => 'Ferburgen kategoryen', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ferburgen kategoryen',
'category-subcat-count' => '{{PLURAL:$2|Dizze kategory hat allinne de folgjende ûnderkategory.|Dizze kategory hat de folgjende {{PLURAL:$1|ûnderkategory|$1 ûnderkategoryen}}, fan in totaal fan $2.}}',
'category-subcat-count-limited' => 'Dizze kategory hat de folgjende {{PLURAL:$1|ûnderkategory|$1 ûnderkategoryen}}.',
'category-article-count' => '{{PLURAL:$2|Dizze kategory befettet allinne de folgjende side.|De folgjende {{PLURAL:$1|side is|$1 siden binne}} yn dizze kategory, fan yn totaal $2.}}',
@@ -269,10 +277,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Faak stelde fragen (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglist foar oankundigings fan nije ferzjes]",
-'about' => 'Ynfo',
-'article' => 'Ynhâld side',
-'newwindow' => '(nij finster)',
-'cancel' => 'Ofbrekke',
+'about' => 'Ynfo',
+'article' => 'Ynhâld side',
+'newwindow' => '(nij finster)',
+'cancel' => 'Ofbrekke',
+'moredotdotdot' => 'Mear...',
+'mypage' => 'Myn side',
+'mytalk' => 'Myn oerlis',
+'anontalk' => 'Oerlisside foar dit IP-adres',
+'navigation' => 'Navigaasje',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Sykje',
'qbbrowse' => 'Blêdzje',
'qbedit' => 'Bewurkje',
@@ -280,15 +296,33 @@ $messages = array(
'qbpageinfo' => 'Side-ynfo',
'qbmyoptions' => 'Myn Opsjes',
'qbspecialpages' => 'Bysûndere siden',
-'moredotdotdot' => 'Mear...',
-'mypage' => 'Myn side',
-'mytalk' => 'Myn oerlis',
-'anontalk' => 'Oerlisside foar dit IP-adres',
-'navigation' => 'Navigaasje',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (faak stelde fragen)',
+'faqpage' => 'Project:Faak stelde fragen',
+
+# Vector skin
+'vector-action-delete' => 'Fuortsmite',
+'vector-action-move' => 'Werneam',
+'vector-action-protect' => 'Beskermje',
+'vector-action-undelete' => 'Tebeksette',
+'vector-action-unprotect' => 'Beskerming fuorthelje',
+'vector-namespace-category' => 'Kategory',
+'vector-namespace-help' => 'Helpside',
+'vector-namespace-image' => 'Triem',
+'vector-namespace-main' => 'Side',
+'vector-namespace-media' => 'Mediaside',
+'vector-namespace-mediawiki' => 'Berjocht',
+'vector-namespace-project' => 'Projektside',
+'vector-namespace-special' => 'Bysûndere siden',
+'vector-namespace-talk' => 'Oerlis',
+'vector-namespace-template' => 'Berjocht',
+'vector-namespace-user' => 'Meidogger',
+'vector-view-create' => 'Oanmeitsje',
+'vector-view-edit' => 'Wizigje',
+'vector-view-history' => 'Skiednis sjen litte',
+'vector-view-view' => 'Lês',
+'vector-view-viewsource' => 'Besjoch de boarne',
+'namespaces' => 'Nammeromten',
+'variants' => 'Farianten',
'errorpagetitle' => 'Fout',
'returnto' => 'Werom nei "$1".',
@@ -338,18 +372,22 @@ $messages = array(
'otherlanguages' => 'Oare talen',
'redirectedfrom' => '(Trochwiisd fan "$1")',
'redirectpagesub' => 'Trochferwiis-side',
-'lastmodifiedat' => 'Lêste kear bewurke op $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Lêste kear bewurke op $2, $1.',
'viewcount' => 'Disse side is {{PLURAL:$1|ienris|$1 kear}} iepenslein.',
'protectedpage' => 'Skoattele side',
'jumpto' => 'Gean nei:',
'jumptonavigation' => 'navigaasje',
'jumptosearch' => 'sykje',
+'view-pool-error' => "Ekskuseare, de tsjinners hawwe it op it stuit te drok.
+Tefolle meidoggers probearje dizze side te besjen.
+Wachtsje efkes foardatsto op 'e nij tagong ta dizze side probearrest te krijen.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Oer de {{SITENAME}}',
'aboutpage' => 'Project:Ynfo',
'copyright' => 'Ynhâld is beskikber ûnder de $1.',
-'copyrightpagename' => '{{SITENAME}} auteursrjocht',
'copyrightpage' => '{{ns:project}}:Auteursrjocht',
'currentevents' => 'Hjoeddeis',
'currentevents-url' => 'Project:Rinnende saken',
@@ -357,8 +395,6 @@ $messages = array(
'disclaimerpage' => 'Project:Algemien foarbehâld',
'edithelp' => 'Bewurk-help',
'edithelppage' => 'Help:Bewurk-rie',
-'faq' => 'FAQ (faak stelde fragen)',
-'faqpage' => 'Project:Faak stelde fragen',
'helppage' => 'Help:Help',
'mainpage' => 'Haadside',
'mainpage-description' => 'Haadside',
@@ -433,10 +469,6 @@ De lêst besochte databankfraach wie:
"$1"
fanút funksje "$2" .
MySQL joech fout "$3: $4"',
-'noconnect' => 'Troch in fout yn de technyk, kin de Wiki gjin ferbining meitsje mei de databanktsjinner. <br />
-$1',
-'nodb' => 'Kin databank "$1" net berikke.',
-'cachederror' => "Dit is in bewarre ferzje dy't mooglik ferâldere is.",
'laggedslavemode' => 'Warskôging: Mûglik binne resinte bewurkings noch net trochfierd.',
'readonly' => "Databank is 'Net-skriuwe'.",
'enterlockreason' => "Skriuw wêrom de databank 'net-skriuwe' makke is, en hoenear't men wêr nei alle gedachten wer skriuwe kin.",
@@ -455,6 +487,7 @@ Meitsje dêr melding fan by in [[Special:ListUsers/sysop|systeembehearder]] fan
'readonly_lag' => 'De database is automatysk beskoattele wylst de ûndergeskikte databaseservers syngronisearje mei de haadserver.',
'internalerror' => 'Ynterne fout',
'internalerror_info' => 'Ynterne fout: $1',
+'fileappenderror' => 'It tafoegjen fan "$1" oan "$2" is mislearre.',
'filecopyerror' => 'Koe triem "$1" net kopiearje as "$2".',
'filerenameerror' => 'Koe triem "$1" net werneame as "$2".',
'filedeleteerror' => 'Koe triem "$1" net wiskje.',
@@ -495,14 +528,12 @@ De oanfierde reden is ''$2''.",
'virus-unknownscanner' => 'ûnbekend antivirus:',
# Login and logout pages
-'logouttitle' => 'Ofmelde',
'logouttext' => "'''Jo binne no ôfmeld.'''
Jo kinne de {{SITENAME}} fierders anonym brûke, of jo op 'e [[Special:UserLogin|nij oanmelde]] ûnder deselde of in oare namme.
Mûglik wurdt noch in tal siden werjûn as wiene Jo oanmeld, oant Jo de cache fan Jo browser leegje.",
'welcomecreation' => '<h2>Wolkom, $1!</h2><p>Jo ynstellings binne oanmakke.
Ferjit net se oan jo foarkar oan te passen.',
-'loginpagetitle' => 'Oanmelde',
'yourname' => 'Jo meidochnamme:',
'yourpassword' => 'Jo wachtwurd',
'yourpasswordagain' => 'Jo wachtwurd (nochris)',
@@ -524,27 +555,7 @@ Ferjit net se oan jo foarkar oan te passen.',
'createaccountmail' => 'troch e-mail',
'badretype' => 'De ynfierde wachtwurden binne net lyk.',
'userexists' => 'Dy meidochnamme wurdt al brûkt. Besykje in oarenien.',
-'youremail' => 'Jo netpostadres:',
-'username' => 'Meidochnamme:',
-'uid' => 'Wikinûmer:',
-'prefs-memberingroups' => 'Lid fan {{PLURAL:$1|groep|groepen}}:',
-'yourrealname' => 'Jo wiere namme:',
-'yourlanguage' => 'Taal:',
-'yournick' => 'Jo alias (foar sinjaturen)',
-'badsig' => 'Unjildige ûndertekening; kontrolearje de HTML-tags.',
-'badsiglength' => 'Bynamme is te lang; dy moat koarter as $1 {{PLURAL:$1|teken|tekens}} wêze.',
-'yourgender' => 'Geslacht:',
-'gender-unknown' => 'Net oanjûn',
-'gender-male' => 'Man',
-'gender-female' => 'Frou',
-'prefs-help-gender' => 'Kar: dit wurdt troch de programmatuer brûkt om de goeie oansprekfoarm te kiezen.
-Dizze ynformaasje is foar oare meidoggers te sjen.',
-'email' => 'E-post',
-'prefs-help-realname' => 'Echte namme is net ferplicht; as jo dy opjouwe kin dy namme brûkt wurde om jo erkenning te jaan foar jo wurk.',
'loginerror' => 'Oanmeldflater',
-'prefs-help-email' => 'E-post is opsjoneel, mar makket it mûglik jo wachtwurd te stjoeren as jo it fergetten hawwe.
-Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwizing op jo brûkers- en oerlisside, sûnder dat jo jo identiteit oer hoege te jaan.',
-'prefs-help-email-required' => 'Hjir is in e-mailadres foar nedich.',
'nocookiesnew' => 'De brûker is oanmakke mar net oanmeld. {{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Skeakelje dy yn en meld jo dan oan mei jo nije brûkersnamme en wachtwurd.',
'nocookieslogin' => '{{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Jo hawwe cookies útskeakele. Skeakelje dy opsje oan en besykje it nochris.',
'noname' => 'Jo moatte in meidognamme opjaan.',
@@ -556,7 +567,9 @@ Kontrolearje de stavering, of [[Special:UserLogin/signup|meitsje in nije meidogg
'nouserspecified' => 'Jo moatte in brûkersnamme opjaan.',
'wrongpassword' => "Meidochnamme en wachtwurd hearre net by elkoar. Besykje op 'e nij, of fier it wachtwurd twa kear yn en meitsje nije meidoggersynstellings.",
'wrongpasswordempty' => 'It opjûne wachtwurd wie leech. Besykje it nochris.',
-'passwordtooshort' => 'It wachtwurd is te koart. It moat op syn minst {{PLURAL:$1|1 teken|$1 tekens}} wêze.',
+'passwordtooshort' => 'Jo wachtwurd is te koart.
+It moat op syn minst {{PLURAL:$1|1 teken|$1 tekens}} lang wêze.',
+'password-name-match' => 'Dyn wachtwurd mei net itselde as dyn meidoggersnamme wêze.',
'mailmypassword' => 'Stjoer my in nij wachtwurd.',
'passwordremindertitle' => 'Nij wachtwurd foar de {{SITENAME}}',
'passwordremindertext' => 'Immen (nei alle gedachten jo, fan ynternetadres $1) had in nij wachtwurd
@@ -601,7 +614,6 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
'retypenew' => 'Nij wachtwurd (nochris)',
'resetpass_submit' => 'Wachtwurd ynstelle en oanmelde',
'resetpass_success' => 'Jo wachtwurd is feroare. Dwaande mei oanmelden ...',
-'resetpass_bad_temporary' => 'Unjildich tydlik wachtwurd. Jo hawwe jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
'resetpass_forbidden' => 'Wachtwurden kinne net feroare wurde',
'resetpass-no-info' => "Jo moatte oanmeld wêze foar't Jo dizze side brûke kinne.",
'resetpass-submit-loggedin' => 'Wachtwurd feroarje',
@@ -675,7 +687,6 @@ Jo tsjintwurdich e-postadres is $3 en it útsletnûmer is #$5. Neam beide gegeve
'blockededitsource' => "Hjir ûnder stiet de tekst fan '''jo bewurkings''' oan '''$1''':",
'whitelistedittitle' => 'Foar bewurkjen is oanmelden ferplichte',
'whitelistedittext' => 'Jo moatte $1 om siden te bewurkjen.',
-'confirmedittitle' => 'Netpostbefêstiging frege foar bewurkjen',
'confirmedittext' => "Jo moatte jo e-mailadres befêstichje foar't jo siden feroarje kinne. Fier in e-mailedres yn by jo [[Special:Preferences|ynstellings]] en befêstichje it.",
'nosuchsectiontitle' => 'Dizze subkop bestiet net',
'nosuchsectiontext' => "Jo besochten in subkop te bewurkjen dy't net bestiet.",
@@ -697,7 +708,8 @@ Kontrolearje oft jo dizze side wol oanmeitsje/bewurkje wolle.',
'clearyourcache' => "'''Opmerking:''' Nei it fêstlizzen kin it nedich wêze de oerslach fan dyn blêder te leegjen foardat de wizigings te sjen binne.
'''Mozilla / Firefox / Safari:''' hâld ''Shift'' yntreaun wylst jo op ''Dizze side fernije'' klikke, of typ ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' op in Macintosh); '''Konqueror: '''klik ''Reload'' of typ ''F5;'' '''Opera:''' leegje jo cache yn ''Extra → Voorkeuren;'' '''Internet Explorer:''' hâld ''Ctrl'' yntreaun wylst jo ''Vernieuwen'' klikke of typ ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tip:''' Brûk de knop 'Earst oerlêze' om jo nije CSS/JS te testen foar it fêstlizzen.",
+'usercssyoucanpreview' => "'''Tip:''' Brûk de knop 'Earst oerlêze' om jo nije CSS te testen foar it fêstlizzen.",
+'userjsyoucanpreview' => "'''Tip:''' Brûk de knop 'Earst oerlêze' om jo nije JS te testen foar it fêstlizzen.",
'usercsspreview' => "'''Dit is allinne mar it oerlêzen fan jo persoanlike CSS. Hy is noch net fêstlein!'''",
'userjspreview' => "'''Tink derom: jo besjogge no jo persoanlike JavaScript. De side is net fêstlein!'''",
'userinvalidcssjstitle' => "'''Warskôging:''' der is gjin skin \"\$1\". Tink derom: jo eigen .css- en .js-siden begjinne mei in lytse letter, bygelyks {{ns:user}}:Namme/monobook.css ynsté fan {{ns:user}}:Namme/Monobook.css.",
@@ -762,11 +774,11 @@ Jo kinne al besteande siden feroarje of jo kinne [[Special:UserLogin|jo oanmelde
'permissionserrors' => 'Flaters yn rjochten',
'permissionserrorstext' => 'Jo hawwe gjin rjochtem dit te dwaan om de folgjende {{PLURAL:$1|reden|redenen}}:',
'permissionserrorstext-withaction' => 'Jo hawwe gjin rjocht ta $2 om de folgjende {{PLURAL:$1|reden|redenen}}:',
-'recreate-deleted-warn' => "'''Warskôging: Jo binne dwaande in side oan te meitsjen dy't earder weidien is.'''
+'recreate-moveddeleted-warn' => "'''Warskôging: Jo binne dwaande in side oan te meitsjen dy't earder weidien is.'''
Betink oft it gaadlik is dat jo dizze side fierder bewurkje. Foar jo geriif stiet hjirûnder it lochboek oer it weidwaan fan dizze side:",
-'deleted-notice' => 'Dizze side is fuorthelle. It fuorthel-logboek fan dizze side wurdt hjirûnder werjûn foar jo ynformaasje.',
-'deletelog-fulllog' => 'Folslein logboek besjen',
+'moveddeleted-notice' => 'Dizze side is fuorthelle. It fuorthel-logboek fan dizze side wurdt hjirûnder werjûn foar jo ynformaasje.',
+'log-fulllog' => 'Besjoch it hiele lochboek',
'edit-hook-aborted' => 'De bewurking is ôfbrutsen troch in hook.
Der is gjin taljochting beskikber.',
'edit-gone-missing' => 'De side kin net bywurke wurde.
@@ -808,7 +820,7 @@ De fan $3 opjûne reden is ''$2''",
'currentrev' => 'Aktuele ferzje',
'currentrev-asof' => 'Hjoeddeiske ferzje sûnt $1',
'revisionasof' => 'Ferzje op $1',
-'revision-info' => 'Ferzje op $1 fan $2', # Additionally available: $3: revision id
+'revision-info' => 'Ferzje op $1 fan $2',
'previousrevision' => '←Eardere ferskillen',
'nextrevision' => 'Nijere ferzje→',
'currentrevisionlink' => 'Rinnende ferzje',
@@ -820,7 +832,6 @@ De fan $3 opjûne reden is ''$2''",
'histlegend' => "Utlis: (no) = ferskil mei de side sa't dy no is,
(doe) = ferskill mei de side sa't er doe wie, foar de feroaring, T = Tekstwiziging",
'history-fieldset-title' => 'Troch skiednis blêdzje',
-'deletedrev' => '[fuorthelle]',
'histfirst' => 'Ierst',
'histlast' => 'Lêst',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -829,61 +840,62 @@ De fan $3 opjûne reden is ''$2''",
# Revision feed
'history-feed-title' => 'Sideskiednis',
'history-feed-description' => 'Sideskiednis foar dizze side op de wiki',
-'history-feed-item-nocomment' => '$1 op $2', # user at time
+'history-feed-item-nocomment' => '$1 op $2',
'history-feed-empty' => 'De frege side bestiet net.
Faaks is dy fuorthelle of omneamd.
[[Special:Search|Sykje de wiki troch]] foar relevante nije siden.',
# Revision deletion
-'rev-deleted-comment' => '(opmerking wiske)',
-'rev-deleted-user' => '(meidoggernamme wiske)',
-'rev-deleted-event' => '(logboekrigel fuorthelle)',
-'rev-deleted-text-permission' => 'Dy bewurking fan de side is fuorthelle út de publike argiven.
-Der kinne details oanwêzich wêze yn it [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} fuorthel-logboek].',
-'rev-deleted-text-view' => 'Dizze bewurking fan de side is fuorthelle út de publike argiven.
+'rev-deleted-comment' => '(opmerking wiske)',
+'rev-deleted-user' => '(meidoggernamme wiske)',
+'rev-deleted-event' => '(logboekrigel fuorthelle)',
+'rev-deleted-text-permission' => 'Dy bewurking fan de side is fuorthelle út de publike argiven.
+Der kinne details oanwêzich wêze yn it [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} fuorthel-logboek].',
+'rev-deleted-text-view' => 'Dizze bewurking fan de side is fuorthelle út de publike argiven.
As behearder fan {{SITENAME}} kinne jo him besjen;
-der kinne details wêze yn it [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} fuorthel-logboek].',
-'rev-delundel' => 'sjen litte/ferbergje',
-'revisiondelete' => 'Wiskje/weromsette ferzjes',
-'revdelete-nooldid-title' => 'Gjin doelferzje',
-'revdelete-nooldid-text' => 'Jo hawwe gjin doelferzje(s) foar dizze hanneling opjûn, de oanjûne ferzje bestiet net, of jo besykje de lêste ferzje te ferskûljen.',
-'revdelete-nologtype-title' => 'Der is gjin logboektype opjûn',
-'revdelete-nologtype-text' => 'Jo hawwe gjin logboektype opjûn om dizze hanneling op út te fieren.',
-'revdelete-toomanytargets-title' => 'Tefolle doelen',
-'revdelete-toomanytargets-text' => 'Jo hawwe tefolle doelen opjûn om dizze hanneling op út te fieren.',
-'revdelete-nologid-title' => 'Unjildige logboekrigel',
-'revdelete-nologid-text' => 'Jo hawwe òf gjin doellogboekrigel opjûn of de oanjûne logboekrigel bestiet net.',
-'revdelete-selected' => "'''Spesifisearre {{PLURAL:$2|ferzje|ferzjes}} fan [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|keazen lochboekregel|keazen lochboekregels}}:'''",
-'revdelete-text' => "'''Fuorthelle bewurkings binne sichtber yn 'e skiednis, mar de ynhâld is net langer publyk tagonklik.'''
+der kinne details wêze yn it [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} fuorthel-logboek].',
+'rev-delundel' => 'sjen litte/ferbergje',
+'revisiondelete' => 'Wiskje/weromsette ferzjes',
+'revdelete-nooldid-title' => 'Gjin doelferzje',
+'revdelete-nooldid-text' => 'Jo hawwe gjin doelferzje(s) foar dizze hanneling opjûn, de oanjûne ferzje bestiet net, of jo besykje de lêste ferzje te ferskûljen.',
+'revdelete-nologtype-title' => 'Der is gjin logboektype opjûn',
+'revdelete-nologtype-text' => 'Jo hawwe gjin logboektype opjûn om dizze hanneling op út te fieren.',
+'revdelete-nologid-title' => 'Unjildige logboekrigel',
+'revdelete-nologid-text' => 'Jo hawwe òf gjin doellogboekrigel opjûn of de oanjûne logboekrigel bestiet net.',
+'revdelete-no-file' => 'De spesifisearre triem bestiet net.',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''Spesifisearre {{PLURAL:$2|ferzje|ferzjes}} fan [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|keazen lochboekregel|keazen lochboekregels}}:'''",
+'revdelete-text' => "'''Fuorthelle bewurkings binne sichtber yn 'e skiednis, mar de ynhâld is net langer publyk tagonklik.'''
Oare behearders fan {{SITENAME}} kinne de ferburgen ynhâld benaderje en it fuortheljen ûngedien meitsje mei help fan dit skerm, of der moatte oanfoljende beheinings jilde dy't ynsteld binne troch de systeembehearder.",
-'revdelete-legend' => 'Sichtberensbeheinings ynstelle.',
-'revdelete-hide-text' => 'De bewurke tekst ferskûlje',
-'revdelete-hide-name' => 'Aksje en doel ferskûlje',
-'revdelete-hide-comment' => 'De bewurkingsgearfetting ferskûlje',
-'revdelete-hide-user' => 'Meidoggernamme/IP fan de meidogger ferskûlje',
-'revdelete-hide-restricted' => 'Dizze beheinings tapasse op behearders en dizze ynterface ôfslute',
-'revdelete-suppress' => 'Gegevens foar behearders likegoed as oaren ûnderdrukke',
-'revdelete-hide-image' => 'Triem ynhâld ferskûlje',
-'revdelete-unsuppress' => 'Beheinings op tebeksette feroarings fuorthelje',
-'revdelete-log' => 'Reden:',
-'revdelete-submit' => 'Tapasse op selektearre bewurking',
-'revdelete-logentry' => 'sichtberens fan bewurkings is feroare foar [[$1]]',
-'logdelete-logentry' => 'feroare sichtberens fan barren [[$1]]',
-'revdelete-success' => "'''Sichtberens fan'e feroaring mei sukses ynsteld.'''",
-'logdelete-success' => "'''Sichtberens fan it barren mei sukses ynsteld.'''",
-'revdel-restore' => 'Sichtberens feroarje',
-'pagehist' => 'Sideskiednis',
-'deletedhist' => 'Wiske skiednis',
-'revdelete-content' => 'ynhâld',
-'revdelete-summary' => 'gearfetting bewurkje',
-'revdelete-uname' => 'meidoggernamme',
-'revdelete-restricted' => 'hat beheinings oplein oan behearders',
-'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
-'revdelete-hid' => 'hat $1 ferburgen',
-'revdelete-unhid' => '$1 net mear ferburgen',
-'revdelete-log-message' => '$1 foar $2 {{PLURAL:$2|ferzje|ferzjes}}',
-'logdelete-log-message' => '$1 foar $2 {{PLURAL:$2|lochboekregel|lochboekregels}}',
+'revdelete-legend' => 'Sichtberensbeheinings ynstelle.',
+'revdelete-hide-text' => 'De bewurke tekst ferskûlje',
+'revdelete-hide-image' => 'Triem ynhâld ferskûlje',
+'revdelete-hide-name' => 'Aksje en doel ferskûlje',
+'revdelete-hide-comment' => 'De bewurkingsgearfetting ferskûlje',
+'revdelete-hide-user' => 'Meidoggernamme/IP fan de meidogger ferskûlje',
+'revdelete-hide-restricted' => 'Dizze beheinings tapasse op behearders en dizze ynterface ôfslute',
+'revdelete-suppress' => 'Gegevens foar behearders likegoed as oaren ûnderdrukke',
+'revdelete-unsuppress' => 'Beheinings op tebeksette feroarings fuorthelje',
+'revdelete-log' => 'Reden:',
+'revdelete-submit' => 'Tapasse op selektearre bewurking',
+'revdelete-logentry' => 'sichtberens fan bewurkings is feroare foar [[$1]]',
+'logdelete-logentry' => 'feroare sichtberens fan barren [[$1]]',
+'revdelete-success' => "'''Sichtberens fan'e feroaring mei sukses ynsteld.'''",
+'logdelete-success' => "'''Sichtberens fan it barren mei sukses ynsteld.'''",
+'revdel-restore' => 'Sichtberens feroarje',
+'pagehist' => 'Sideskiednis',
+'deletedhist' => 'Wiske skiednis',
+'revdelete-content' => 'ynhâld',
+'revdelete-summary' => 'gearfetting bewurkje',
+'revdelete-uname' => 'meidoggernamme',
+'revdelete-restricted' => 'hat beheinings oplein oan behearders',
+'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
+'revdelete-hid' => 'hat $1 ferburgen',
+'revdelete-unhid' => '$1 net mear ferburgen',
+'revdelete-log-message' => '$1 foar $2 {{PLURAL:$2|ferzje|ferzjes}}',
+'logdelete-log-message' => '$1 foar $2 {{PLURAL:$2|lochboekregel|lochboekregels}}',
+'revdelete-edit-reasonlist' => 'Redenen foar fuortheljen bewurkje',
# Suppression log
'suppressionlog' => 'Ferskûl-logboek',
@@ -921,68 +933,13 @@ Tink derom it brûken fan de navigaasjeferwizings dy kolom op'e nij ynstelt.",
'mergelogpagetext' => 'Hjirûnder stiet in list fan resinte gearfoegings fan ien side-skiednis nei in oaren.',
# Diffs
-'history-title' => 'Sideskiednis fan "$1"',
-'difference' => '(Ferskil tusken ferzjes)',
-'lineno' => 'Rigel $1:',
-'compareselectedversions' => 'Ferlykje selektearre ferzjes',
-'visualcomparison' => 'Fisuele ferliking',
-'wikicodecomparison' => 'Wikitekstferliking',
-'editundo' => 'werom sette',
-'diff-multi' => '({{PLURAL:$1|Ien tuskenlizzende ferzje wurdt|$1 tuskenlizzende ferzjes wurde}} net sjen litten.)',
-'diff-movedto' => 'Oerbrocht nei $1',
-'diff-styleadded' => 'styl $1 tafoege',
-'diff-added' => '$1 tafoege',
-'diff-changedto' => 'feroare ta $1',
-'diff-movedoutof' => 'oerbrocht bûten $1',
-'diff-styleremoved' => 'styl $1 fuorthelle',
-'diff-removed' => '$1 fuorthelle',
-'diff-changedfrom' => 'feroare fan $1',
-'diff-src' => 'boarne',
-'diff-withdestination' => 'mei bestimming $1',
-'diff-with' => '&#32;mei $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;en $1 $2',
-'diff-width' => 'breedte',
-'diff-height' => 'hichte',
-'diff-p' => "in '''paragraaf'''",
-'diff-blockquote' => "in '''heakje'''",
-'diff-h1' => "in '''kopke (nivo 1)'''",
-'diff-h2' => "in '''kopke (nivo 2)'''",
-'diff-h3' => "in '''kopke (nivo 3)'''",
-'diff-h4' => "in '''kopke (nivo 4)'''",
-'diff-h5' => "in '''kopke (nivo 5)'''",
-'diff-pre' => "in '''foarformattearre tekstblok'''",
-'diff-div' => "in '''dieling'''",
-'diff-ul' => "in '''net nûmere list'''",
-'diff-ol' => "in '''nûmere list'''",
-'diff-li' => "in '''list-item'''",
-'diff-table' => "in '''tabel'''",
-'diff-tbody' => "in '''tabel-ynhâld'''",
-'diff-tr' => "in '''rij'''",
-'diff-td' => "in '''sel'''",
-'diff-th' => "in '''kolomkop'''",
-'diff-br' => "in '''nije rigel'''",
-'diff-hr' => "in '''horizontale line'''",
-'diff-code' => "in '''tekstblok mei programmakoade'''",
-'diff-dl' => "in '''list fan definysjes'''",
-'diff-dt' => "in '''te definiearjen term'''",
-'diff-dd' => "in '''definysje'''",
-'diff-input' => "in '''input'''",
-'diff-form' => "in '''formulier'''",
-'diff-img' => "in '''ôfbylding'''",
-'diff-span' => "in '''span'''",
-'diff-a' => "in '''keppeling'''",
-'diff-i' => "'''skeanprinte'''",
-'diff-b' => "'''fet'''",
-'diff-strong' => "'''tsjûk'''",
-'diff-em' => "'''klam'''",
-'diff-font' => "'''lettertype'''",
-'diff-big' => "'''grut'''",
-'diff-del' => "'''wiske'''",
-'diff-tt' => "'''fêste breedte'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''skrast'''",
+'history-title' => 'Sideskiednis fan "$1"',
+'difference' => '(Ferskil tusken ferzjes)',
+'lineno' => 'Rigel $1:',
+'compareselectedversions' => 'Ferlykje selektearre ferzjes',
+'showhideselectedversions' => 'Oantikke ferzjes wol/net sjen litte',
+'editundo' => 'werom sette',
+'diff-multi' => '({{PLURAL:$1|Ien tuskenlizzende ferzje wurdt|$1 tuskenlizzende ferzjes wurde}} net sjen litten.)',
# Search results
'searchresults' => 'Sykresultaat',
@@ -990,27 +947,23 @@ Tink derom it brûken fan de navigaasjeferwizings dy kolom op'e nij ynstelt.",
'searchresulttext' => 'Lês foar mear ynformaasje oer it sykjen yn de {{SITENAME}} de [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Foar fraach "[[:$1]]"',
'searchsubtitleinvalid' => 'Foar fraach "$1"',
-'noexactmatch' => "'''Der is gjin side mei krekt de titel \"\$1\".'''
-Jo kinne de [[:\$1|side oanmeitsje]].",
-'noexactmatch-nocreate' => "'''Der is gjin side mei krekt de titel \"\$1\".'''",
'toomanymatches' => 'Der wiene tefolle resultaten.
Prebearje in oare sykopdracht.',
'titlematches' => 'Titels',
'notitlematches' => 'Gjin titels',
'textmatches' => 'Siden',
'notextmatches' => 'Gjin siden',
-'prevn' => 'foarige $1',
-'nextn' => 'folgende $1',
+'prevn' => 'foarige {{PLURAL:$1|$1}}',
+'nextn' => 'folgende {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Foarich risseltaat|Foarige $1 risseltaten}}',
'nextn-title' => '{{PLURAL:$1|Folgjend risseltaat|Folgjende $1 risseltaat}}',
-'viewprevnext' => '($1) ($2) ($3) besjen.',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) besjen.',
'searchmenu-legend' => 'Sykopsjes',
'searchmenu-exists' => "'''Der is in side mei namme \"[[:\$1]]\" yn dizze wiki'''",
'searchmenu-new' => "'''Meitsje de side \"[[:\$1]]\" yn dizze wiki!'''",
'searchhelp-url' => 'Help:Help',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sidenammen mei dit foarheaksel werjaan]]',
'searchprofile-articles' => 'Ynhâldlike siden',
-'searchprofile-articles-and-proj' => 'Ynhâldlike en projektsiden',
'searchprofile-project' => 'Projektsiden',
'searchprofile-images' => 'Triemmen',
'searchprofile-everything' => 'Alles',
@@ -1020,8 +973,6 @@ Prebearje in oare sykopdracht.',
'searchprofile-images-tooltip' => 'Sykje om triemmen',
'searchprofile-everything-tooltip' => 'Alle ynhâld trochsykje (ynklusyf oerlissiden)',
'searchprofile-advanced-tooltip' => 'Sykje yn oanjûne nammerûmten',
-'prefs-search-nsdefault' => 'Sykje mei standertynstellings:',
-'prefs-search-nscustom' => 'Sykje yn oanjûne nammerûmten:',
'search-result-size' => '$1 ({{PLURAL:$2|1 wurd|$2 wurden}})',
'search-result-score' => 'Relevante: $1%',
'search-redirect' => '(trochferwizing $1)',
@@ -1034,11 +985,11 @@ Prebearje in oare sykopdracht.',
'search-mwsuggest-disabled' => 'gjin suggestjes',
'search-relatedarticle' => 'Besibbe',
'mwsuggest-disable' => 'Suggestjes fia AJAX útskeakelje',
+'searcheverything-enable' => 'Sykje op alle nammeromten',
'searchrelated' => 'besibbe',
'searchall' => 'alle',
'showingresults' => "{{PLURAL:$1|'''1''' resultaat|'''$1''' resultaten}} fan #'''$2''' ôf.",
'showingresultsnum' => "{{PLURAL:$3|'''1''' resultaat|'''$3''' resultaten}} fan #'''$2''' ôf.",
-'showingresultstotal' => "It binne hjirûnder {{PLURAL:$4|resultaat '''$1''' fan '''$3'''|resultaten '''$1 - $2''' fan '''$3'''}}",
'nonefound' => "'''Opmerking''': standert wurde net alle nammerûmten trochsocht.
As Jo yn Jo sykopdracht as foarheaksel \"''all:''\" brûke, wurde alle siden trochsocht (ynklusyf oerlissiden, sjabloanen ens.).
Jo kinne ek in nammerûmte as foarheaksel brûke.",
@@ -1048,39 +999,32 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
'powersearch-ns' => 'Sykje op nammeromten:',
'powersearch-redir' => 'Trochferwizings werjaan',
'powersearch-field' => 'Sykje op',
+'powersearch-togglelabel' => 'Oantikje:',
+'powersearch-toggleall' => 'Allegear',
+'powersearch-togglenone' => 'Gjin',
'search-external' => 'Utwindich sykje',
'searchdisabled' => '<p>Op it stuit stiet it trochsykjen fan tekst út omdat dizze funksje tefolle kompjûterkapasiteit ferget. As we nije apparatuer krije, en dy is ûnderweis, dan wurdt dizze funksje wer aktyf. Oant salang kinne jo sykje fia Google:</p>',
+# Quickbar
+'qbsettings' => 'Menu',
+'qbsettings-none' => 'Ut',
+'qbsettings-fixedleft' => 'Lofts fêst',
+'qbsettings-fixedright' => 'Rjochts fêst',
+'qbsettings-floatingleft' => 'Lofts sweevjend',
+'qbsettings-floatingright' => 'Rjochts sweevjend',
+
# Preferences page
'preferences' => 'Ynstellings',
'mypreferences' => 'Myn foarkarynstellings',
'prefs-edits' => 'Tal bewurkings:',
'prefsnologin' => 'Net oanmeld',
-'prefsnologintext' => 'Jo moatte <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} oanmeld]</span> wêze om jo foarkar-ynstellings te feroarje te kinnen.',
-'prefsreset' => "De ynstellings binne werom set sa't se fêstlein wienen.",
-'qbsettings' => 'Menu',
-'qbsettings-none' => 'Ut',
-'qbsettings-fixedleft' => 'Lofts fêst',
-'qbsettings-fixedright' => 'Rjochts fêst',
-'qbsettings-floatingleft' => 'Lofts sweevjend',
-'qbsettings-floatingright' => 'Rjochts sweevjend',
+'prefsnologintext' => 'Jo moatte <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} oanmeld]</span> wêze om jo foarkar-ynstellings te feroarje te kinnen.',
'changepassword' => 'Wachtwurd feroarje',
-'skin' => 'Side-oansjen',
+'prefs-skin' => 'Side-oansjen',
'skin-preview' => 'Proefbyld',
-'math' => 'Formules',
-'dateformat' => 'Datum',
+'prefs-math' => 'Formules',
'datedefault' => 'Gjin foarkar',
-'datetime' => 'Datum en tiid',
-'math_failure' => 'Untsjutbere formule',
-'math_unknown_error' => 'Unbekinde fout',
-'math_unknown_function' => 'Unbekinde funksje',
-'math_lexing_error' => 'Unbekind wurd',
-'math_syntax_error' => 'Sinboufout',
-'math_image_error' => 'PNG-omsetting is mislearre.
-Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
-'math_bad_tmpdir' => 'De tydlike formulepad kin net skreaun of makke wêze.',
-'math_bad_output' => 'De formulepad kin net skreaun of makke wêze.',
-'math_notexvc' => 'It programma texvc net fûn; sjoch math/README te ynstallearjen.',
+'prefs-datetime' => 'Datum en tiid',
'prefs-personal' => 'Persoanlike gegevens',
'prefs-rc' => 'Koartlyn feroare',
'prefs-watchlist' => 'Folchlist',
@@ -1093,7 +1037,7 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'saveprefs' => 'Ynstellings fêstlizze',
'resetprefs' => 'Ynstellings werom sette',
'restoreprefs' => 'Tebek nei de standertynstellings',
-'textboxsize' => 'Siden bewurkje',
+'prefs-editing' => 'Siden bewurkje',
'prefs-edit-boxsize' => 'Ofmjittings fan it bewurkingsfinster',
'rows' => 'Rigen',
'columns' => 'Kolommen',
@@ -1107,9 +1051,7 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'recentchangescount' => "Tal titels op 'Koartlyn feroare'",
'savedprefs' => 'Jo ynstellings binne fêstlein.',
'timezonelegend' => 'Tiidsône',
-'timezonetext' => 'Jou it tal oeren dat jo tiidsône ferskilt fan UTC (Greenwich).',
'localtime' => 'Pleatslike tiid:',
-'timezoneselect' => 'Tiidsône:',
'timezoneuseserverdefault' => 'Servertiid brûke',
'timezoneuseoffset' => 'Oars (tiidferskil oanjaan)',
'timezoneoffset' => 'Tiidsferskil¹:',
@@ -1130,11 +1072,36 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'prefs-namespaces' => 'Nammeromten',
'defaultns' => "Nammeromten dy't normaal trochsocht wurde:",
'default' => 'standert',
-'files' => 'Triemen',
+'prefs-files' => 'Triemen',
'prefs-custom-js' => 'Persoanlik JS',
+'prefs-emailconfirm-label' => 'Netpostbefêstiging:',
+'prefs-textboxsize' => 'Ofmjittings bewurkingsskerm',
+'youremail' => 'Jo netpostadres:',
+'username' => 'Meidochnamme:',
+'uid' => 'Wikinûmer:',
+'prefs-memberingroups' => 'Lid fan {{PLURAL:$1|groep|groepen}}:',
+'yourrealname' => 'Jo wiere namme:',
+'yourlanguage' => 'Taal:',
+'yournick' => 'Jo alias (foar sinjaturen)',
+'badsig' => 'Unjildige ûndertekening; kontrolearje de HTML-tags.',
+'badsiglength' => 'Bynamme is te lang; dy moat koarter as $1 {{PLURAL:$1|teken|tekens}} wêze.',
+'yourgender' => 'Geslacht:',
+'gender-unknown' => 'Net oanjûn',
+'gender-male' => 'Man',
+'gender-female' => 'Frou',
+'prefs-help-gender' => 'Kar: dit wurdt troch de programmatuer brûkt om de goeie oansprekfoarm te kiezen.
+Dizze ynformaasje is foar oare meidoggers te sjen.',
+'email' => 'E-post',
+'prefs-help-realname' => 'Echte namme is net ferplicht; as jo dy opjouwe kin dy namme brûkt wurde om jo erkenning te jaan foar jo wurk.',
+'prefs-help-email' => 'E-post is opsjoneel, mar makket it mûglik jo wachtwurd te stjoeren as jo it fergetten hawwe.
+Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwizing op jo brûkers- en oerlisside, sûnder dat jo jo identiteit oer hoege te jaan.',
+'prefs-help-email-required' => 'Hjir is in e-mailadres foar nedich.',
+'prefs-signature' => 'Sinjatuer',
+'prefs-dateformat' => 'Datumopmaak',
+'prefs-timeoffset' => 'Tiidsferskil',
# User rights
-'userrights' => 'Behear fan meidoggerrjochten', # Not used as normal message but as header for the special page itself
+'userrights' => 'Behear fan meidoggerrjochten',
'userrights-lookup-user' => 'Behear fan meidoggerrjochten',
'userrights-user-editname' => 'Meidoggernamme:',
'editusergroup' => 'Wizigje meidoggerrjochten',
@@ -1218,6 +1185,8 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'right-editprotected' => 'Befeilige siden bewurkje (sûnder cascading-befeiliging)',
'right-editinterface' => 'Brûkersinterface bewurkje',
'right-editusercssjs' => 'De CSS- en JS-triemmen fan oare brûkers bewurkje',
+'right-editusercss' => 'De CSS-JS-triemmen fan oare brûkers bewurkje',
+'right-edituserjs' => 'De JS-triemmen fan oare brûkers bewurkje',
'right-rollback' => 'Gau de lêste bewurking(s) fan in brûker fan in side tebekdraaie',
'right-markbotedits' => 'Tebekdraaide bewurkings markearje as botbewurkings',
'right-noratelimit' => 'Hat gjin tiidsôfhinklike beheinings',
@@ -1234,6 +1203,7 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'right-siteadmin' => 'De database blokkearje en wer frij jaan',
'right-reset-passwords' => "Wachtwurden fan oare meidoggers op 'e nij ynstelle",
'right-override-export-depth' => 'Alle siden oant en mei in keppelingsdjipte fan fiif fuortskriuwe',
+'right-versiondetail' => 'Utwreide ferzjeynformaasje sjenlitte',
# User rights log
'rightslog' => 'Rjochten-loch',
@@ -1283,6 +1253,14 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'recentchanges-legend' => 'Opsjes foar resinte feroarings',
'recentchangestext' => 'De lêste feroarings fan de {{SITENAME}}.',
'recentchanges-feed-description' => 'Mei dizze feed kinne jo de nijste feroarings yn dizze wiki besjen.',
+'recentchanges-legend-newpage' => '$1 - nije side',
+'recentchanges-label-newpage' => 'Mei dizze wiziging is in nije side makke',
+'recentchanges-legend-minor' => '$1 - tekstwiziging',
+'recentchanges-label-minor' => 'Dit is in tekstwiziging',
+'recentchanges-legend-bot' => '$1 - robotbewurking',
+'recentchanges-label-bot' => 'Dizze wiziging is troch in robot makke',
+'recentchanges-legend-unpatrolled' => '$1 - ûnkontrolearre wiziging',
+'recentchanges-label-unpatrolled' => 'Dizze wiziging is noch net neisjûn',
'rcnote' => "Dit {{PLURAL:$1|is de lêste feroaring|binne de lêste '''$1''' feroarings}} yn de lêste {{PLURAL:$2|dei|'''$2''' dagen}}, fan $4 $5.",
'rcnotefrom' => 'Dit binne de feroarings sûnt <b>$2</b> (maksimaal <b>$1</b>).',
'rclistfrom' => 'Jou nije feroarings, begjinnende mei $1',
@@ -1309,6 +1287,8 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
# Recent changes linked
'recentchangeslinked' => 'Folgje keppelings',
+'recentchangeslinked-feed' => 'Folgje keppelings',
+'recentchangeslinked-toolbox' => 'Folgje keppelings',
'recentchangeslinked-title' => 'Feroarings yn ferbân mei "$1"',
'recentchangeslinked-noresult' => "Der hawwe gjin bewurkings yn 'e bedoelde perioade west op'e siden dy't hjirwei linke wurde.",
'recentchangeslinked-summary' => "Dizze spesjale side lit de lêste bewurkings sjen op siden dy't keppele wurde fan in spesifisearre side ôf (of fan in spesifisearre Kategory ôf). Siden dy't op [[Special:Watchlist|jo folchlist]] steane, wurde '''tsjûk''' werjûn.",
@@ -1318,7 +1298,6 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
# Upload
'upload' => 'Bied triem oan',
'uploadbtn' => 'Bied triem oan',
-'reupload' => "Op 'e nij oanbiede",
'reuploaddesc' => 'Werom nei oanbied-side.',
'uploadnologin' => 'Net oanmelde',
'uploadnologintext' => 'Jo moatte [[Special:UserLogin|oanmeld]] wêze om in triem oanbiede te kinnen.',
@@ -1373,7 +1352,6 @@ Bewurkje de side mei de hân om de beskriuwing dêr wer te jaan.",
* Namme fan 'e heechladene triem: '''<tt>[[:$1]]</tt>'''
* Namme fan 'e besteande triem: '''<tt>[[:$2]]</tt>'''
Kies in oare namme.",
-'fileexists-thumb' => "<center>'''Besteande ôfbylding'''</center>",
'fileexists-thumbnail-yes' => "De triem liket in ferlytse ferzje te wêzen ''(miniatuerôfbylding)''. [[$1|thumb]]
Kontrolearje de triem '''<tt>[[:$1]]</tt>'''.
As de kontrolearre triem deselde ôfbylding fan deselde grutte is, dan hoecht net in ekstra miniatuerôfbylding oanbean te wurden.",
@@ -1399,8 +1377,6 @@ Rieplachtsje it fuorthel-logboek foar't jo fierder geane.",
'uploaddisabledtext' => 'It oanbieden fan triemmen is útskeakele.',
'php-uploaddisabledtext' => 'PHP-triemuploads binne útskeakele. Kontrolearje a.j.w. de triem_uploads-ynstelling.',
'uploadscripted' => "Dizze triem befettet HTML- of scriptkoade dy't ferkeard troch jo browser werjûn wurde kin.",
-'uploadcorrupt' => 'De triem is net ynoarder of hat de ferkearde útgong.
-Kontrolearje de triem en bied dy wer oan.',
'uploadvirus' => 'De triem befettet in firus! Details: $1',
'sourcefilename' => 'Triemnamme boarne:',
'destfilename' => 'Triemnamme om op te slaan:',
@@ -1438,6 +1414,7 @@ Nim kontakt op mei in [[Special:ListUsers/sysop|systeembehearder]].",
Kontrolearje of de URL krekt en beskikber is en besykje it nochris.
As it probleem oanhâldt, nim dan kontakt op mei in
[[Special:ListUsers/sysop|systeembehearder]].',
+'upload-unknown-size' => 'Unbekinde grutte',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Koe de URL net berikke',
@@ -1449,6 +1426,7 @@ Kontrolearje oft it webstee beskikber is, wachtsje efkes en besykje it dan wer.
Jo kinne it faaks besykje as it wat minder drok is.",
'license' => 'Lisinsje:',
+'license-header' => 'Lisinsje:',
'nolicense' => 'Neat keazen',
'license-nopreview' => '(Foarfertoaning net beskikber)',
'upload_source_url' => ' (in jildige, publyk tagonklike URL)',
@@ -1469,6 +1447,7 @@ Klikken op in kolomkop feroaret de sortearring.',
'listfiles_count' => 'Ferzjes',
# File description page
+'file-anchor-link' => 'Triem',
'filehist' => 'Triem skiednis',
'filehist-help' => 'Klik op in tiid om de ferzje fan de triem op dat stuit te sjen.',
'filehist-deleteall' => 'wiskje alles',
@@ -1483,6 +1462,7 @@ Klikken op in kolomkop feroaret de sortearring.',
'filehist-dimensions' => 'Ofmjittings',
'filehist-filesize' => 'Triem grutte',
'filehist-comment' => 'Opmerkings',
+'filehist-missing' => 'Triem net fûn',
'imagelinks' => 'Ofbyldkeppelings',
'linkstoimage' => 'Dizze {{PLURAL:$1|side is|$1 siden binne}} keppele oan it ôfbyld:',
'linkstoimage-more' => 'Der {{PLURAL:$2|is|binne}} mear as $1 {{PLURAL:$1|ferwizing|ferwizings}} nei dizze triem.
@@ -1492,14 +1472,11 @@ Der is ek in [[Special:WhatLinksHere/$2|folsleine list]].',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mear ferwizings]] nei dizze triem besjen.',
'redirectstofile' => '{{PLURAL:$1|De folgjende triem ferwiist|De folgjende $1 triemmen ferwize}} troch nei dizze triem:',
'duplicatesoffile' => '{{PLURAL:$1|De folgjende triem is|De folgjende $1 triemmen binne}} idintyk oan dizze triem:',
-'sharedupload' => 'Dizze triem is in dielde oanbieding en kin ek troch oare projekten brûkt wurde.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Sjoch de $1 foar fierdere ynformaasje.',
-'shareduploadwiki-desc' => "De $1 yn 'e dielde triemmebank wurdt hjirûnder werjûn.",
-'shareduploadwiki-linktext' => 'triembeskriuwing',
-'noimage' => 'Der bestiet gjin triem mei dizze namme. Jo kinne it $1.',
-'noimage-linktext' => 'bied triem oan',
+'sharedupload' => 'Dizze triem is in dielde oanbieding en kin ek troch oare projekten brûkt wurde.',
+'filepage-nofile' => "Der bestiet gjin triem mei sa'n namme.",
+'filepage-nofile-link' => "Der bestiet gjin triem mei sa'n namme [bied $1 oan].",
'uploadnewversion-linktext' => 'Bied in nije ferzje fan dizze triem oan',
-'shared-repo-from' => 'fan $1', # $1 is the repository name
+'shared-repo-from' => 'fan $1',
# File reversion
'filerevert' => '$1 weromsette',
@@ -1588,8 +1565,8 @@ Se soenen mei de side sels keppele wurde moatte.<br /> In side wurdt sjoen as be
'brokenredirects' => 'Misse synonimen',
'brokenredirectstext' => "De siden dêr't dizze titels synonym oan wêze moatte, bestean net.",
-'brokenredirects-edit' => '(bewurkje)',
-'brokenredirects-delete' => '(wiskje)',
+'brokenredirects-edit' => 'bewurkje',
+'brokenredirects-delete' => 'wiskje',
'withoutinterwiki' => 'Siden sûnder ferwizings nei oare talen',
'withoutinterwiki-summary' => 'De folgjende siden ferwize net nei ferzjes yn in oare taal.',
@@ -1704,8 +1681,9 @@ Sjuch ek [[Special:WantedCategories|net-besteande kategoryen mei ferwizings]].',
'special-categories-sort-abc' => 'alfabetysk sortearje',
# Special:DeletedContributions
-'deletedcontributions' => 'Wiske meidogger bydragen',
-'deletedcontributions-title' => 'Wiske meidogger bydragen',
+'deletedcontributions' => 'Wiske meidogger bydragen',
+'deletedcontributions-title' => 'Wiske meidogger bydragen',
+'sp-deletedcontributions-contribs' => 'bydragen',
# Special:LinkSearch
'linksearch' => 'Eksterne ferwizings sykje',
@@ -1721,6 +1699,11 @@ Stipe protokollen: <tt>$1</tt>',
'listusersfrom' => 'Lit meidoggers sjen fanôf:',
'listusers-submit' => 'Sjen litte',
'listusers-noresult' => 'Gjin brûker fûn.',
+'listusers-blocked' => '(blokkearre)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktive meidoggers',
+'activeusers-noresult' => 'Gjin meidoggers fûn.',
# Special:Log/newusers
'newuserlogpage' => 'Ynskriuwingsloch',
@@ -1738,7 +1721,6 @@ Der kin [[{{MediaWiki:Listgrouprights-helppage}}|ekstra ynformaasje]] oer yndivi
'listgrouprights-rights' => 'Rjochten',
'listgrouprights-helppage' => 'Help:Brûkersrjochten',
'listgrouprights-members' => '(ledelist)',
-'listgrouprights-right-display' => '$1 ($2)',
'listgrouprights-addgroup' => 'Kin brûkers oan dizze {{PLURAL:$2|groep|groepen}} tafoegje: $1',
'listgrouprights-removegroup' => 'Kin brûkers út dizze {{PLURAL:$2|groep|groepen}} fuorthelje: $1',
'listgrouprights-addgroup-all' => 'Kin brûkers oan alle groepen tafoegje',
@@ -1820,7 +1802,7 @@ Fierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo fo
Jo freonlike {{SITENAME}}-meldingssysteem.
--
-Gean nei {{fullurl:{{ns:special}}:Watchlist/edit}}
+Gean nei {{fullurl:{{#special:Watchlist}}/edit}}
om jo folchlistynstellings te feroarjen.
Reaksjes en fierdere help:
@@ -1868,8 +1850,8 @@ troch [[User:$2|$2]] ([[User talk:$2|Oerlis]]) net werom sette;
in oar hat de feroaring werom set, of oars wat oan de side feroare.
De lêste feroaring wie fan [[User:$3|$3]] ([[User talk:$3|Oerlis]]).',
-'editcomment' => "De gearfetting wie: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Bewurkings fan [[Special:Contributions/$2|$2]] ([[User talk:$2|Oerlis]]) werom set ta de ferzje fan [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "De gearfetting wie: \"''\$1''\".",
+'revertpage' => 'Bewurkings fan [[Special:Contributions/$2|$2]] ([[User talk:$2|Oerlis]]) werom set ta de ferzje fan [[User:$1|$1]]',
'rollback-success' => 'Feroarings werom set fan $1; werom set nei de lêste ferzje fan $2.',
# Protect
@@ -1885,7 +1867,6 @@ Sjoch [[Special:ProtectedPages|Skoattele side]] foar mear ynformaasje.',
'protectexpiry' => 'Ferrint nei',
'protect_expiry_invalid' => 'Tiid fan ferrinnen is net jildich.',
'protect_expiry_old' => 'Tiid fan ferrinnen leit yn it ferline.',
-'protect-unchain' => 'Keppeling foar werneamen frijjaan.',
'protect-text' => "Hjir kin jo it nivo fan skoatteljen sjen en oanpasse foar de side '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Jo kinne it befeiligingsnivo net feroarje wylst jo blokkearre binne.
Hjir binne de hjoeddeiske ynstellings foar de side '''$1''':",
@@ -1902,7 +1883,7 @@ Dit binne de rinnende ynstellings foar de side '''$1''':",
'protect-expiring' => 'ferrint $1 (UTC)',
'protect-cascade' => "Underlizzende siden - skoattelje ek alle siden dy't in ûnderdiel útmeitsje fan dizze side",
'protect-cantedit' => "Jo kinne it befeiligingsnivo fan dizze side net feroarje, om't jo gjin rjochten hawwe om it te bewurkjen.",
-'protect-expiry-options' => '1 oere:1 hour,1 dei:1 day,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 oere:1 hour,1 dei:1 day,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite',
'restriction-type' => 'Permisje:',
'restriction-level' => 'Skoattel nivo:',
'minimum-size' => 'Min. grutte',
@@ -1954,7 +1935,7 @@ Dit binne de rinnende ynstellings foar de side '''$1''':",
'contributions-title' => 'Bydragen fan $1',
'mycontris' => 'Myn bydragen',
'contribsub2' => 'Foar "$1 ($2)"',
-'nocontribs' => "Der binne gjin feroarings fûn dyt't hjirmei oerienkomme.", # Optional parameter: $1 is the user name
+'nocontribs' => "Der binne gjin feroarings fûn dyt't hjirmei oerienkomme.",
'uctop' => ' (boppen)',
'month' => 'Fan moanne (en earder):',
'year' => 'Fan jier (en earder):',
@@ -1963,6 +1944,9 @@ Dit binne de rinnende ynstellings foar de side '''$1''':",
'sp-contributions-newbies-sub' => 'Foar nijlingen',
'sp-contributions-newbies-title' => 'Bydragen fan nije meidoggers',
'sp-contributions-blocklog' => 'Blokkearlochboek',
+'sp-contributions-deleted' => 'Wiske meidogger bydragen',
+'sp-contributions-talk' => 'Oerlis',
+'sp-contributions-userrights' => 'Behear fan meidoggerrjochten',
'sp-contributions-search' => 'Sykje nei bydragen',
'sp-contributions-username' => 'IP Adres of meidoggernamme:',
'sp-contributions-submit' => 'Sykje',
@@ -2009,7 +1993,7 @@ Meld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
'ipbenableautoblock' => "Automatysk de lêste IP adressen útslute dy't troch dizze meidogger brûkt binne.",
'ipbsubmit' => 'Slút dizze meidogger út',
'ipbother' => 'In oare tiid:',
-'ipboptions' => '2 oeren:2 hours,1 dei:1 day,3 dagen:3 days,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oeren:2 hours,1 dei:1 day,3 dagen:3 days,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite',
'ipbotheroption' => 'oare tiid',
'ipbotherreason' => 'Oare/eventuele reden:',
'badipaddress' => 'Gjin jildige IP-adres',
@@ -2085,7 +2069,7 @@ In dizze gefallen is it oan jo hoe't jo de oerlisside werneame of ynfoegje wolle
'move-watch' => 'Folch dizze side',
'movepagebtn' => 'Werneam side',
'pagemovedsub' => 'Werneamen slagge',
-'movepage-moved' => '\'\'\'"$1" hjit no "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" hjit no "$2"\'\'\'',
'articleexists' => "Der is al in side mei dy namme, of oars is de namme dy't jo oanjûn hawwe net tastien. Besykje it op 'e nij.",
'talkexists' => "It werneamen fan de side is slagge, mar de eardere oerlisside is net mear keppele om't der foar de side mei de nije namme al in oerlisside wie. Kopiearje de oerlisside fan de 'âlde' side mei de nije.",
'movedto' => 'werneamd as',
@@ -2112,14 +2096,12 @@ De doelside "[[:$1]]" is der al. Moat dy wiske wurde om plak te meitsjen foar it
'export-templates' => 'Tafoegje berjochten',
# Namespace 8 related
-'allmessages' => 'Alle wikiberjochten',
-'allmessagesname' => 'Namme',
-'allmessagesdefault' => 'Standerttekst',
-'allmessagescurrent' => 'Tekst yn de nijste ferzje',
-'allmessagestext' => 'Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.
+'allmessages' => 'Alle wikiberjochten',
+'allmessagesname' => 'Namme',
+'allmessagesdefault' => 'Standerttekst',
+'allmessagescurrent' => 'Tekst yn de nijste ferzje',
+'allmessagestext' => 'Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.
Sjoch: [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [http://translatewiki.net translatewiki.net].',
-'allmessagesfilter' => 'Berjocht namme filter:',
-'allmessagesmodified' => 'Allinne wizige berjochten',
# Thumbnails
'thumbnail-more' => 'Fergrutsje',
@@ -2231,6 +2213,18 @@ Sjoch: [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [htt
'mw_math_modern' => 'Oanbefelle foar resinte blêders',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Untsjutbere formule',
+'math_unknown_error' => 'Unbekinde fout',
+'math_unknown_function' => 'Unbekinde funksje',
+'math_lexing_error' => 'Unbekind wurd',
+'math_syntax_error' => 'Sinboufout',
+'math_image_error' => 'PNG-omsetting is mislearre.
+Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
+'math_bad_tmpdir' => 'De tydlike formulepad kin net skreaun of makke wêze.',
+'math_bad_output' => 'De formulepad kin net skreaun of makke wêze.',
+'math_notexvc' => 'It programma texvc net fûn; sjoch math/README te ynstallearjen.',
+
# Patrolling
'markaspatrolleddiff' => 'Markearje as kontroleare',
'markaspatrolledtext' => 'Markearje dizze side as kontrolearre',
@@ -2281,7 +2275,7 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-samplesperpixel' => 'Oantal komponinten',
@@ -2302,7 +2296,7 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
'exif-unknowndate' => 'Datum ûnbekend',
-'exif-orientation-1' => 'Normaal', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normaal',
'exif-componentsconfiguration-0' => 'bestiet net',
@@ -2416,12 +2410,12 @@ Wolle jo de side wier op 'e nij skriuwe?",
'watchlisttools-raw' => 'Rûge folchlist bewurkje',
# Special:Version
-'version' => 'Ferzje', # Not used as normal message but as header for the special page itself
+'version' => 'Ferzje',
'version-extensions' => 'Ynstallearre útwreidings',
'version-specialpages' => 'Bysûndere siden',
'version-variables' => 'Fariabels',
'version-other' => 'Oare',
-'version-version' => 'Ferzje',
+'version-version' => '(Ferzje $1)',
'version-license' => 'Lisinsje',
'version-software' => 'Ynsteld software',
'version-software-product' => 'Produkt',
diff --git a/languages/messages/MessagesGa.php b/languages/messages/MessagesGa.php
index 95ba3b42..51f7fe04 100644
--- a/languages/messages/MessagesGa.php
+++ b/languages/messages/MessagesGa.php
@@ -20,58 +20,55 @@
*/
$magicWords = array(
- # ID CASE SYNONYMS
- 'redirect' => array( 0, '#redirect', '#athsheoladh' ),
- 'notoc' => array( 0, '__NOTOC__', '__GANCÁ__' ),
- 'forcetoc' => array( 0, '__FORCETOC__', '__CÁGACHUAIR__' ),
- 'toc' => array( 0, '__TOC__', '__CÁ__' ),
- 'noeditsection' => array( 0, '__NOEDITSECTION__', '__GANMHÍRATHRÚ__' ),
- 'currentmonth' => array( 1, 'CURRENTMONTH', 'MÍLÁITHREACH' ),
- 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', 'AINMNAMÍOSALÁITHREAÍ' ),
- 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', 'GINAINMNAMÍOSALÁITHREAÍ' ),
- 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV', 'GIORRÚNAMÍOSALÁITHREAÍ' ),
- 'currentday' => array( 1, 'CURRENTDAY', 'LÁLÁITHREACH' ),
- 'currentdayname' => array( 1, 'CURRENTDAYNAME', 'AINMANLAELÁITHRIGH' ),
- 'currentyear' => array( 1, 'CURRENTYEAR', 'BLIAINLÁITHREACH' ),
- 'currenttime' => array( 1, 'CURRENTTIME', 'AMLÁITHREACH' ),
- 'numberofarticles' => array( 1, 'NUMBEROFARTICLES', 'LÍONNANALT' ),
- 'numberoffiles' => array( 1, 'NUMBEROFFILES', 'LÍONNAGCOMHAD' ),
- 'pagename' => array( 1, 'PAGENAME', 'AINMANLGH' ),
- 'pagenamee' => array( 1, 'PAGENAMEE', 'AINMANLGHB' ),
- 'namespace' => array( 1, 'NAMESPACE', 'AINMSPÁS' ),
- 'msg' => array( 0, 'MSG:', 'TCHT:' ),
- 'subst' => array( 0, 'SUBST:', 'IONAD:' ),
- 'msgnw' => array( 0, 'MSGNW:', 'TCHTFS:' ),
- 'img_thumbnail' => array( 1, 'thumbnail', 'thumb', 'mionsamhail', 'mion' ),
- 'img_right' => array( 1, 'right', 'deas' ),
- 'img_left' => array( 1, 'left', 'clé' ),
- 'img_none' => array( 1, 'none', 'faic' ),
- 'img_center' => array( 1, 'center', 'centre', 'lár' ),
- 'img_framed' => array( 1, 'framed', 'enframed', 'frame', 'fráma', 'frámaithe' ),
- 'int' => array( 0, 'INT:', 'INMH:' ),
- 'sitename' => array( 1, 'SITENAME', 'AINMANTSUÍMH' ),
- 'ns' => array( 0, 'NS:', 'AS:' ),
- 'localurl' => array( 0, 'LOCALURL:', 'URLÁITIÚIL' ),
- 'localurle' => array( 0, 'LOCALURLE:', 'URLÁITIÚILB' ),
- 'server' => array( 0, 'SERVER', 'FREASTALAÍ' ),
- 'servername' => array( 0, 'SERVERNAME', 'AINMANFHREASTALAÍ' ),
- 'scriptpath' => array( 0, 'SCRIPTPATH', 'SCRIPTCHOSÁN' ),
- 'grammar' => array( 0, 'GRAMMAR:', 'GRAMADACH:' ),
- 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__GANTIONTÚNADTEIDEAL__', '__GANTT__'),
- 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__GANTIONTÚNANÁBHAIR__', '__GANTA__' ),
- 'currentweek' => array( 1, 'CURRENTWEEK', 'SEACHTAINLÁITHREACH' ),
- 'currentdow' => array( 1, 'CURRENTDOW', 'LÁLÁITHREACHNAS' ),
- 'revisionid' => array( 1, 'REVISIONID', 'IDANLEASAITHE' ),
+ 'redirect' => array( '0', '#athsheoladh', '#REDIRECT' ),
+ 'notoc' => array( '0', '__GANCÁ__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__CÁGACHUAIR__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__CÁ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__GANMHÍRATHRÚ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'MÍLÁITHREACH', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'AINMNAMÍOSALÁITHREAÍ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'GINAINMNAMÍOSALÁITHREAÍ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'GIORRÚNAMÍOSALÁITHREAÍ', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'LÁLÁITHREACH', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'AINMANLAELÁITHRIGH', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'BLIAINLÁITHREACH', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'AMLÁITHREACH', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'LÍONNANALT', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'LÍONNAGCOMHAD', 'NUMBEROFFILES' ),
+ 'pagename' => array( '1', 'AINMANLGH', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'AINMANLGHB', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'AINMSPÁS', 'NAMESPACE' ),
+ 'msg' => array( '0', 'TCHT:', 'MSG:' ),
+ 'subst' => array( '0', 'IONAD:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'TCHTFS:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'mionsamhail', 'mion', 'thumbnail', 'thumb' ),
+ 'img_right' => array( '1', 'deas', 'right' ),
+ 'img_left' => array( '1', 'clé', 'left' ),
+ 'img_none' => array( '1', 'faic', 'none' ),
+ 'img_center' => array( '1', 'lár', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'fráma', 'frámaithe', 'framed', 'enframed', 'frame' ),
+ 'int' => array( '0', 'INMH:', 'INT:' ),
+ 'sitename' => array( '1', 'AINMANTSUÍMH', 'SITENAME' ),
+ 'ns' => array( '0', 'AS:', 'NS:' ),
+ 'localurl' => array( '0', 'URLÁITIÚIL', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URLÁITIÚILB', 'LOCALURLE:' ),
+ 'server' => array( '0', 'FREASTALAÍ', 'SERVER' ),
+ 'servername' => array( '0', 'AINMANFHREASTALAÍ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'SCRIPTCHOSÁN', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'GRAMADACH:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__GANTIONTÚNADTEIDEAL__', '__GANTT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__GANTIONTÚNANÁBHAIR__', '__GANTA__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEACHTAINLÁITHREACH', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'LÁLÁITHREACHNAS', 'CURRENTDOW' ),
+ 'revisionid' => array( '1', 'IDANLEASAITHE', 'REVISIONID' ),
);
$namespaceNames = array(
- NS_MEDIA => 'Meán',
+ NS_MEDIA => 'Meán',
NS_SPECIAL => 'Speisialta',
- NS_MAIN => '',
NS_TALK => 'Plé',
NS_USER => 'Úsáideoir',
NS_USER_TALK => 'Plé_úsáideora',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Plé_{{grammar:genitive|$1}}',
NS_FILE => 'Íomhá',
NS_FILE_TALK => 'Plé_íomhá',
@@ -82,7 +79,7 @@ $namespaceNames = array(
NS_HELP => 'Cabhair',
NS_HELP_TALK => 'Plé_cabhrach',
NS_CATEGORY => 'Catagóir',
- NS_CATEGORY_TALK => 'Plé_catagóire'
+ NS_CATEGORY_TALK => 'Plé_catagóire',
);
$namespaceAliases = array(
@@ -145,6 +142,10 @@ $messages = array(
'underline-never' => 'Múchta',
'underline-default' => 'Mar atá réamhshocraithe sa bhrabhsálaí',
+# Font style option in Special:Preferences
+'editfont-sansserif' => 'Cló gan trasmhíreanna',
+'editfont-serif' => 'Cló le trasmhíreanna',
+
# Dates
'sunday' => 'an Domhnach',
'monday' => 'an Luan',
@@ -204,7 +205,7 @@ $messages = array(
'category-media-header' => 'Meáin sa chatagóir "$1"',
'category-empty' => "''Níl aon leathanaigh ná méid sa chatagóir ar an am seo.''",
'hidden-categories' => '{{PLURAL:$1|Catagóir folaithe|Catagóirí folaithe}}',
-'hidden-category-category' => 'Catagóirí folaithe', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Catagóirí folaithe',
'category-subcat-count' => '{{PLURAL:$2| Níl ach an fo-chatagóir seo a leanas ag an gcatagóir seo.|Tá {{PLURAL:$1|fo-chatagóir|fo-chatagóirí}} ag an gcatagóir seo, as $2 san iomlán.}}',
'category-subcat-count-limited' => 'Is {{PLURAL:$1|é an líon fochatagóir|$1 iad na líon fochatagóirí}} atá ag an gcatagóir seo ná: $1.',
'category-article-count' => '{{PLURAL:$2|Níl sa chatagóir seo ach an leathanach seo a leanas.|Tá {{PLURAL:$1|$1 leathanach|$1 leathanaigh}} sa chatagóir seo, as iomlán de $2.}}',
@@ -217,10 +218,18 @@ $messages = array(
'mainpagedocfooter' => 'Féach ar [http://meta.wikimedia.org/wiki/MediaWiki_localisation doiciméid um conas an chomhéadán a athrú]
agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar úsáideora] chun cabhair úsáide agus fíoraíochta a fháil.',
-'about' => 'Maidir leis',
-'article' => 'Leathanach ábhair',
-'newwindow' => '(a osclófar i bhfuinneog nua)',
-'cancel' => 'Cealaigh',
+'about' => 'Maidir leis',
+'article' => 'Leathanach ábhair',
+'newwindow' => '(a osclófar i bhfuinneog nua)',
+'cancel' => 'Cealaigh',
+'moredotdotdot' => 'Tuilleadh...',
+'mypage' => 'Mo leathanach',
+'mytalk' => 'Mo chuid phlé',
+'anontalk' => 'Plé don seoladh IP seo',
+'navigation' => 'Nascleanúint',
+'and' => '&#32;agus',
+
+# Cologne Blue skin
'qbfind' => 'Aimsigh',
'qbbrowse' => 'Brabhsáil',
'qbedit' => 'Cuir in eagar',
@@ -228,15 +237,21 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'qbpageinfo' => 'Comhthéacs',
'qbmyoptions' => 'Mo chuid leathanaigh',
'qbspecialpages' => 'Leathanaigh speisialta',
-'moredotdotdot' => 'Tuilleadh...',
-'mypage' => 'Mo leathanach',
-'mytalk' => 'Mo chuid phlé',
-'anontalk' => 'Plé don seoladh IP seo',
-'navigation' => 'Nascleanúint',
-'and' => '&#32;agus',
-
-# Metadata in edit box
-'metadata_help' => 'Meiteasonraí:',
+'faq' => 'Ceisteanna Coiteanta',
+'faqpage' => 'Project:Ceisteanna_Coiteanta',
+
+# Vector skin
+'vector-action-delete' => 'Scrios',
+'vector-action-move' => 'Athainmnigh',
+'vector-action-protect' => 'Glasáil',
+'vector-namespace-category' => 'Catagóir',
+'vector-namespace-image' => 'Comhad',
+'vector-namespace-main' => 'Leathanach',
+'vector-namespace-mediawiki' => 'Teachtaireacht',
+'vector-namespace-special' => 'Leathanach speisialta',
+'vector-view-create' => 'Cruthaigh',
+'vector-view-edit' => 'Athraigh an lch seo',
+'vector-view-view' => 'Léigh',
'errorpagetitle' => 'Earráid',
'returnto' => 'Fill ar ais go $1.',
@@ -286,7 +301,7 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'otherlanguages' => 'I dteangacha eile',
'redirectedfrom' => '(Athsheolta ó $1)',
'redirectpagesub' => 'Lch athdhírithe',
-'lastmodifiedat' => 'Athraíodh an leathanach seo ag $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Athraíodh an leathanach seo ag $2, $1.',
'viewcount' => 'Rochtainíodh an leathanach seo {{PLURAL:$1|uair amháin|$1 uaire}}.',
'protectedpage' => 'Leathanach glasáilte',
'jumpto' => 'Léim go:',
@@ -297,7 +312,6 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'aboutsite' => 'Maidir leis an {{SITENAME}}',
'aboutpage' => 'Project:Maidir leis',
'copyright' => 'Tá an t-ábhar le fáil faoin $1.',
-'copyrightpagename' => 'Cóipcheart {{GRAMMAR:genitive|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Cóipchearta',
'currentevents' => 'Cúrsaí reatha',
'currentevents-url' => 'Project:Cúrsaí reatha',
@@ -305,8 +319,6 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'disclaimerpage' => 'Project:Séanadh_ginearálta',
'edithelp' => 'Cabhair eagarthóireachta',
'edithelppage' => 'Help:Eagarthóireacht',
-'faq' => 'Ceisteanna Coiteanta',
-'faqpage' => 'Project:Ceisteanna_Coiteanta',
'helppage' => 'Help:Clár_ábhair',
'mainpage' => 'Príomhleathanach',
'mainpage-description' => 'Príomhleathanach',
@@ -386,10 +398,6 @@ Thug MySQL an earráid seo: "<tt>$3: $4</tt>".',
ón bhfeidhm "$2",
ab ea an t-iarratas deireanach chuig an mbunachar sonrai.
Thug MySQL an earráid seo: "$3: $4".',
-'noconnect' => 'Tá brón orainn! Tá roinnt deacrachtaí teicniúla ag an vicí faoi láthair, agus ní féidir leis teagmháil a dhéanamh leis an mbunachar sonraí. <br />
-$1',
-'nodb' => 'Theip rogha an bhunachair sonraí $1',
-'cachederror' => 'Seo í cóip athscríofa den leathanach a raibh tú ag lorg (is dócha nach bhfuil sí bord ar bhord leis an leagan reatha).',
'laggedslavemode' => "Rabhadh: B'fhéidir nach bhfuil na nuashonrúcháin is déanaí le feiceáil ar an leathanach seo.",
'readonly' => 'Bunachar sonraí faoi ghlas',
'enterlockreason' => 'Iontráil cúis don glasáil, agus meastachán
@@ -419,8 +427,8 @@ Ní-abálta scríobh chuif comhad "$1": is ann don chomhad',
'unexpected' => 'Luach gan súil leis: "$1"="$2".',
'formerror' => 'Earráid: ní féidir an foirm a tabhair isteach',
'badarticleerror' => 'Ní féidir an gníomh seo a dhéanamh ar an leathanach seo.',
-'cannotdelete' => "Ní féidir an leathanach nó comhad sonraithe a scriosaigh.
-B'fhéidir gur scrios duine eile é cheana féin.",
+'cannotdelete' => 'Ní féidir an leathanach nó comhad "$1" a scriosadh.
+B\'fhéidir gur scrios duine eile é cheana féin.',
'badtitle' => 'Teideal neamhbhailí',
'badtitletext' => "Bhí teideal an leathanaigh a d'iarr tú ar neamhbhailí, folamh, nó
teideal idirtheangach nó idirvicí nasctha go mícheart.",
@@ -449,7 +457,6 @@ An fáth ná ''$2''.",
'virus-unknownscanner' => 'frithvíreas anaithnid:',
# Login and logout pages
-'logouttitle' => 'Logáil amach',
'logouttext' => "'''Tá tú logáilte amach anois.'''
Is féidir leat an {{SITENAME}} a úsáid fós gan ainm, nó is féidir leat [[Special:UserLogin|logáil isteach arís]] mar an úsáideoir céanna, nó mar úsáideoir eile.
@@ -457,7 +464,6 @@ Tabhair faoi deara go taispeáinfear roinnt leathanaigh mar atá tú logáilte i
'welcomecreation' => '== Tá fáilte romhat, $1! ==
Cruthaíodh do chuntas. Ná déan dearmad athrú a dhéanamh ar do chuid [[Special:Preferences|sainroghanna {{GRAMMAR:genitive|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Logáil isteach',
'yourname' => "D'ainm úsáideora",
'yourpassword' => "D'fhocal faire",
'yourpasswordagain' => "Athiontráil d'fhocal faire",
@@ -468,6 +474,7 @@ Cruthaíodh do chuntas. Ná déan dearmad athrú a dhéanamh ar do chuid [[Speci
'nav-login-createaccount' => 'Logáil isteach',
'loginprompt' => 'Tá sé riachtanach fianáin a chur i ngníomh chun logáil isteach a dhéanamh ag {{SITENAME}}.',
'userlogin' => 'Logáil isteach / cruthaigh cuntas',
+'userloginnocreate' => 'Logáil isteach',
'logout' => 'Logáil amach',
'userlogout' => 'Logáil amach',
'notloggedin' => 'Níl tú logáilte isteach',
@@ -480,28 +487,7 @@ Cruthaíodh do chuntas. Ná déan dearmad athrú a dhéanamh ar do chuid [[Speci
'badretype' => "D'iontráil tú dhá fhocal faire difriúla.",
'userexists' => 'Tá an ainm úsáideora sin in úsáid cheana féin.<br />
Roghnaigh ainm eile agus bain triail eile as.',
-'youremail' => 'Do ríomhsheoladh:',
-'username' => "D'ainm úsáideora:",
-'uid' => 'D’uimhir úsáideora:',
-'prefs-memberingroups' => 'Comhalta {{PLURAL:$1|an ghrúpa|na ghrúpaí}}:',
-'yourrealname' => "D'fhíorainm **",
-'yourlanguage' => 'Teanga',
-'yourvariant' => 'Difríocht teanga:',
-'yournick' => 'Do leasainm (mar a bheidh i sínithe)',
-'badsig' => 'Amhsíniú neamhbhailí; scrúdaigh na clibeanna HTML.',
-'badsiglength' => 'Tá do shíniú ró-fhada.<br />
-Caithfidh sé bheith níos giorra ná {{PLURAL:$1|carachtar|carachtair}}.',
-'yourgender' => 'Inscne:',
-'gender-male' => 'Fireann',
-'gender-female' => 'Baineann',
-'prefs-help-gender' => 'Roghnach: úsáidtear an rogha seo chun an t-inscne cheart a úsáid agus na bogearraí ag tagairt don úsaideoir.
-Beidh an t-eolas seo poiblí.',
-'email' => 'Ríomhphost',
-'prefs-help-realname' => '* <strong>Fíorainm</strong> (roghnach): má toghaíonn tú é sin a chur ar fáil, úsáidfear é chun
-do chuid dreachtaí a chur i leith tusa.',
'loginerror' => 'Earráid leis an logáil isteach',
-'prefs-help-email' => '<strong>Ríomhphost</strong> (roghnach): Leis an tréith seo is féidir teagmháil a dhéanamh leat tríd do leathanach úsáideora nó leathanach phlé gan do sheoladh ríomhphost a thaispeáint.',
-'prefs-help-email-required' => 'Ní foláir seoladh ríomhpoist a thabhairt.',
'nocookiesnew' => "Cruthaíodh an cuntas úsáideora, ach níl tú logáilte isteach.
Úsáideann {{SITENAME}} fianáin chun úsáideoirí a logáil isteach.
@@ -521,8 +507,7 @@ Cinntigh do litriú, nó [[Special:UserLogin/signup|bain úsáid as an foirm th
'wrongpassword' => "D'iontráil tú focal faire mícheart.<br />
Bain triail eile as.",
'wrongpasswordempty' => 'Níor iontráil tú focal faire. Bain triail eile as.',
-'passwordtooshort' => "Tá d'fhocal faire ró-ghearr.
-Caithfidh go bhfuil {{PLURAL:$1|1 carachtar|$1 carachtair}} carachtar ann ar a laghad.",
+'passwordtooshort' => 'Is riachtanach go bhfuil {{PLURAL:$1|carachtar amháin|$1 carachtair}} ann ar a laghad i bhfocal faire.',
'mailmypassword' => "Seol m'fhocal faire chugam.",
'passwordremindertitle' => 'Cuimneachán an fhocail faire ó {{SITENAME}}',
'passwordremindertext' => 'D\'iarr duine éigin (tusa de réir cosúlachta, ón seoladh IP $1) go sheolfaimis focal faire {{GRAMMAR:genitive|{{SITENAME}}}} nua ($4).
@@ -562,8 +547,6 @@ Chun d'iarratas logáil isteach a chríochnú, caithfidh tú focal faire nua a r
'newpassword' => 'Focal faire nua:',
'retypenew' => 'Athiontráil an focal nua faire:',
'resetpass_submit' => 'Roghnaigh focal faire agus logáil isteach',
-'resetpass_bad_temporary' => "Níl an focal faire sealadach bailí.
-B'fhéidir gur athraigh tú d'fhocal faire roimhe seo, nó gur iarr tú ar ceann nua.",
'resetpass_forbidden' => 'Ní féidir focail faire a athrú',
'resetpass-no-info' => 'Caithfidh tú bheith logáilte istigh chun teacht ar an leathanach seo go díreach.',
'resetpass-submit-loggedin' => "Athraigh d'fhocal faire",
@@ -637,8 +620,10 @@ Má tháinig tú anseo as dearmad, brúigh an cnaipe '''ar ais''' ar do bhrabhs
Is féidir [[Special:Search/{{PAGENAME}}|cuardach a dhéanamh le haghaidh an teidil seo]] i leathanaigh eile, nó <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cuardach a dhéanamh sna logaí gaolmhara],
nó [{{fullurl:{{FULLPAGENAME}}|action=edit}} an leathanach seo a chur in eagar].</span>',
'clearyourcache' => "'''Tugtar faoi deara:''' Tar éis duit athruithe a shábháil, caithfear gabháil thar thaisce do bhrabhsálaí chun iad a fheiceáil. '''Internet Explorer:''' cliceáil ar an gcnaipe ''Athnuaigh'' nó ''Athlódáil'', agus an eochair ''Ctrl'' á bhrú agat. '''Firefox:''' cliceáil ar ''Athlódáil'', agus an eochair ''Iomlaoid'' á bhrú agat (nó brúigh ''Ctrl-Iomlaoid-R''). '''Opera:''' caithfear d'úsáideoirí a dtaiscí a ghlanadh trí ''Uirlisí→Sainroghanna''. Ní mór d'úsáideoirí '''Konqueror''' nó '''Safari''' ach cliceáil ar an gcnaipe ''Athlódáil''.",
-'usercssjsyoucanpreview' => "'''Leid:''' Sula sábhálaím tú, úsáid an cnaipe
-'Réamhamharc' chun do CSS/JS nua a tástáil.",
+'usercssyoucanpreview' => "'''Leid:''' Sula sábhálaím tú, úsáid an cnaipe
+'Réamhamharc' chun do CSS nua a tástáil.",
+'userjsyoucanpreview' => "'''Leid:''' Sula sábhálaím tú, úsáid an cnaipe
+'Réamhamharc' chun do JS nua a tástáil.",
'usercsspreview' => "'''Cuimhnigh nach bhfuil seo ach réamhamharc do CSS úsáideora -
níor sábháladh é go fóill!'''",
'userjspreview' => "'''Cuimhnigh nach bhfuil seo ach réamhamharc do JavaScript úsáideora
@@ -682,8 +667,8 @@ B'fhéidir gur mhaith leat an téacs a ghearradh is ghreamú isteach i gcomhad t
An fáth ar thug an riarthóir a ghlasáil é: $1",
'protectedpagewarning' => "'''Rabhadh: Glasáladh an leathanach seo. Is féidir le riarthóirí amháin é a athrú.'''",
-'templatesused' => 'Teimpléid atá á úsáid ar an lch seo:',
-'templatesusedpreview' => 'Teimpléid in úsáid sa réamhamharc alt seo:',
+'templatesused' => '{{PLURAL:$1|Teimpléad|Teimpléid}} a úsáidtear ar an leathanach seo:',
+'templatesusedpreview' => '{{PLURAL:$1|Teimpléad|Teimpléid}} a úsáidtear sa réamhamharc seo:',
'templatesusedsection' => 'Teimpléid in úsáid san alt seo:',
'template-protected' => '(ghlasáil)',
'template-semiprotected' => '(leath-ghlasáil)',
@@ -693,11 +678,10 @@ Is féidir leat dul ar ais chun leathanach láithreach a athrú, nó [[Special:U
'nocreate-loggedin' => 'Níl cead agat leathanaigh nua a chruthú.',
'permissionserrors' => 'Cead rochtana earráidí',
'permissionserrorstext-withaction' => 'Níl cead agat $2, mar gheall ar {{PLURAL:$1|an fáth|na fáthanna}} seo a leanas:',
-'recreate-deleted-warn' => "'''Rabhadh: Tá tú ag athchruthú leathanach ina bhfuil scriostha roimhe.'''
+'recreate-moveddeleted-warn' => "'''Rabhadh: Tá tú ag athchruthú leathanaigh a scriosadh cheana.'''
-Bhreithneoidh tú cibé go bhfuil sé oiriúnach chun lean an leathanach seo a cur in eagar.<br />
-Tá an log scriosta ar fáil anseo mar áis:",
-'deletelog-fulllog' => 'Feach ar log lán',
+An bhfuil tú cinnte go bhfuil sé oiriúnach an leathanach seo a cur in eagar?
+Cuirtear an loga scriosta ar fáil anseo mar áis:",
# "Undo" feature
'undo-summary' => 'Cealaíodh athrú $1 le [[Special:Contributions/$2|$2]] ([[User talk:$2|plé]])',
@@ -711,7 +695,7 @@ Tá an log scriosta ar fáil anseo mar áis:",
'currentrev' => 'Leagan reatha',
'currentrev-asof' => 'Leagan reatha ó $1',
'revisionasof' => 'Leagan ó $1',
-'revision-info' => 'Leagan ó $1 le $2', # Additionally available: $3: revision id
+'revision-info' => 'Leagan ó $1 le $2',
'previousrevision' => '← An leasú roimhe seo',
'nextrevision' => 'An chéad leasú eile →',
'currentrevisionlink' => 'Leagan reatha',
@@ -723,7 +707,6 @@ Tá an log scriosta ar fáil anseo mar áis:",
'histlegend' => 'Chun difríochtaí a roghnú, marcáil na cnaipíní de na heagráin atá tú ag iarraidh comparáid a dhéanamh astu, agus brúigh Iontráil nó an cnaipe ag bun an leathanaigh.<br />
Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roimhe, <b>m</b> = mionathrú.',
'history-fieldset-title' => 'Brabhsáil an stáir',
-'deletedrev' => '[scriosta]',
'histfirst' => 'An ceann is luaithe',
'histlast' => 'An ceann is déanaí',
'historysize' => '({{PLURAL:$1|Beart amháin|$1 bearta}})',
@@ -732,20 +715,22 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
# Revision feed
'history-feed-title' => 'Stáir leasú',
'history-feed-description' => 'Stair leasú an leathanach seo ar an vicí',
-'history-feed-item-nocomment' => '$1 ag $2', # user at time
+'history-feed-item-nocomment' => '$1 ag $2',
# Revision deletion
-'rev-deleted-user' => '(ainm úsáideora dealaithe)',
-'rev-delundel' => 'taispeáin/folaigh',
-'revisiondelete' => 'Scrios/díscrios leagain',
-'revdelete-selected' => "'''{{PLURAL:$2|Leagan roghnaithe|Leagain roghnaithe}} [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Teagmhas log roghnaithe|Teagmhais log roghnaithe}}:'''",
-'revdelete-hide-text' => 'Folaigh leagan téacs',
-'revdel-restore' => 'athraigh infheictheacht',
-'pagehist' => 'Stair leathanach',
-'deletedhist' => 'Stair scriosta',
-'revdelete-uname' => 'ainm úsáideora',
-'revdelete-log-message' => '$1 le $2 {{PLURAL:$2|leagan|leagain}}',
+'rev-deleted-user' => '(ainm úsáideora dealaithe)',
+'rev-delundel' => 'taispeáin/folaigh',
+'revisiondelete' => 'Scrios/díscrios leagain',
+'revdelete-show-file-confirm' => 'An bhfuil tú cinnte gur mhaith leat féach ar leasú scriosta don chomhad "<nowiki>$1</nowiki>" ó $2 ag $3?',
+'revdelete-show-file-submit' => 'Tá',
+'revdelete-selected' => "'''{{PLURAL:$2|Leagan roghnaithe|Leagain roghnaithe}} [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Teagmhas log roghnaithe|Teagmhais log roghnaithe}}:'''",
+'revdelete-hide-text' => 'Folaigh leagan téacs',
+'revdel-restore' => 'athraigh infheictheacht',
+'pagehist' => 'Stair leathanach',
+'deletedhist' => 'Stair scriosta',
+'revdelete-uname' => 'ainm úsáideora',
+'revdelete-log-message' => '$1 le $2 {{PLURAL:$2|leagan|leagain}}',
# History merging
'mergehistory-from' => 'Leathanach fhoinse:',
@@ -759,18 +744,8 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
'difference' => '(Difríochtaí idir leaganacha)',
'lineno' => 'Líne $1:',
'compareselectedversions' => 'Cuir na leagain roghnaithe i gcomparáid',
-'wikicodecomparison' => 'Comparáid Vicítéacs',
'editundo' => 'cealaigh',
'diff-multi' => '({{PLURAL:$1|Leasú idirmheánach amháin|$1 leasú idirmheánach}} nach thaispeántar.)',
-'diff-movedto' => 'a athrú go $1',
-'diff-changedfrom' => 'a athrú as $1',
-'diff-src' => 'foinse',
-'diff-width' => 'leithead',
-'diff-height' => 'airde',
-'diff-p' => "'''alt'''",
-'diff-a' => "'''nasc'''",
-'diff-big' => "'''mór'''",
-'diff-del' => "'''scriosta'''",
# Search results
'searchresults' => 'Torthaí an chuardaigh',
@@ -778,19 +753,18 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
'searchresulttext' => 'Féach ar [[{{MediaWiki:Helppage}}|{{int:help}}]] chun a thuilleadh eolais a fháil maidir le cuardaigh {{GRAMMAR:genitive|{{SITENAME}}}}.',
'searchsubtitle' => 'Cuardaigh le \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach leathanaigh ag tosú le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach leathanaigh naiscthe le "$1"]])',
'searchsubtitleinvalid' => 'Don iarratas "$1"',
-'noexactmatch' => "'''Níl aon leathanach ann leis an teideal \"\$1\".''' Is féidir leat é a [[:\$1|cruthú]].",
'titlematches' => 'Fuarthas leathanaigh faoin teideal seo',
'notitlematches' => 'Ní bhfuarthas leathanach faoin teideal seo',
'textmatches' => 'Fuarthas an téacs ar leathanaigh',
'notextmatches' => 'Ní bhfuarthas an téacs ar leathanach ar bith',
-'prevn' => 'na $1 cinn roimhe seo',
-'nextn' => 'an $1 i ndiadh',
-'viewprevnext' => 'Taispeáin ($1) ($2) ($3).',
+'prevn' => 'na {{PLURAL:$1|$1}} cinn roimhe seo',
+'nextn' => 'an {{PLURAL:$1|$1}} i ndiadh',
+'viewprevnext' => 'Taispeáin ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Sainroghanna cuardaithe',
'searchmenu-new' => "'''Cruthaigh an leathanach \"[[:\$1]]\" ar an vicí seo!'''",
'searchhelp-url' => 'Help:Clár_ábhair',
'searchprofile-project' => 'Leathanaigh thionscadail',
-'searchprofile-images' => 'Comhaid',
+'searchprofile-images' => 'Ilmheáin',
'searchprofile-everything' => 'Gach rud',
'searchprofile-articles-tooltip' => 'Cuardaigh i $1',
'searchprofile-project-tooltip' => 'Cuardaigh i $1',
@@ -818,34 +792,25 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
'powersearch-field' => 'Cuardaigh le',
'searchdisabled' => "Tá brón orainn! Mhíchumasaíodh an cuardach téacs iomlán go sealadach chun luas an tsuímh a chosaint. Idir an dá linn, is féidir leat an cuardach Google anseo thíos a úsáid - b'fhéidir go bhfuil sé as dáta.",
+# Quickbar
+'qbsettings' => 'Sainroghanna an bosca uirlisí',
+'qbsettings-none' => 'Faic',
+'qbsettings-fixedleft' => 'Greamaithe ar chlé',
+'qbsettings-fixedright' => 'Greamaithe ar dheis',
+'qbsettings-floatingleft' => 'Ag faoileáil ar chlé',
+'qbsettings-floatingright' => 'Ag faoileáil ar dheis',
+
# Preferences page
'preferences' => 'Sainroghanna',
'mypreferences' => 'Mo shainroghanna',
'prefsnologin' => 'Níl tú logáilte isteach',
-'prefsnologintext' => 'Ní mór duit <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logáil isteach]</span> chun do chuid sainroghanna phearsanta a shocrú.',
-'prefsreset' => "D'athraíodh do chuid sainroghanna ar ais chuig an leagan bunúsach ón stóras.",
-'qbsettings' => 'Sainroghanna an bosca uirlisí',
-'qbsettings-none' => 'Faic',
-'qbsettings-fixedleft' => 'Greamaithe ar chlé',
-'qbsettings-fixedright' => 'Greamaithe ar dheis',
-'qbsettings-floatingleft' => 'Ag faoileáil ar chlé',
-'qbsettings-floatingright' => 'Ag faoileáil ar dheis',
+'prefsnologintext' => 'Ní mór duit <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logáil isteach]</span> chun do chuid sainroghanna phearsanta a shocrú.',
'changepassword' => "Athraigh d'fhocal faire",
-'skin' => 'Craiceann',
+'prefs-skin' => 'Craiceann',
'skin-preview' => 'Réamhamharc',
-'math' => 'Matamaitice',
-'dateformat' => 'Formáid dáta',
+'prefs-math' => 'Matamaitice',
'datedefault' => 'Is cuma liom',
-'datetime' => 'Dáta agus am',
-'math_failure' => 'Theip ó anailís na foirmle',
-'math_unknown_error' => 'earráid anaithnid',
-'math_unknown_function' => 'foirmle anaithnid',
-'math_lexing_error' => 'Theip ó anailís an fhoclóra',
-'math_syntax_error' => 'earráid comhréire',
-'math_image_error' => 'Theip ó aistriú an PNG; tástáil má tá na ríomh-oidis latex, dvips, gs, agus convert i suite go maith.',
-'math_bad_tmpdir' => 'Ní féidir scríobh chuig an fillteán mata sealadach, nó é a chruthú',
-'math_bad_output' => 'Ní féidir scríobh chuig an fillteán mata aschomhaid, nó é a chruthú',
-'math_notexvc' => 'Níl an ríomhchlár texvc ann; féach ar mata/EOLAIS chun é a sainathrú.',
+'prefs-datetime' => 'Dáta agus am',
'prefs-personal' => 'Sonraí úsáideora',
'prefs-rc' => 'Athruithe is déanaí',
'prefs-watchlist' => 'Liosta faire',
@@ -858,7 +823,7 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
'saveprefs' => 'Sábháil',
'resetprefs' => 'Athshocraigh sainroghanna',
'restoreprefs' => 'Cuir ar ais gach sainrogha réamhshocraithe',
-'textboxsize' => 'Eagarthóireacht',
+'prefs-editing' => 'Eagarthóireacht',
'rows' => 'Sraitheanna',
'columns' => 'Colúin',
'searchresultshead' => 'Cuardaigh',
@@ -867,11 +832,9 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
'contextchars' => 'Litreacha chomhthéacs ar gach líne:',
'recentchangesdays' => 'Méid laethanta le taispeáint sna hathruithe is déanaí:',
'recentchangesdays-max' => '(uasmhéid $1 {{PLURAL:$1|lá|lá}})',
-'recentchangescount' => 'Méid teideal sna hathruithe is déanaí',
+'recentchangescount' => 'Méid athrú le taispeáint:',
'savedprefs' => 'Sábháladh do chuid sainroghanna.',
'timezonelegend' => 'Crios ama:',
-'timezonetext' => 'Iontráil an méid uaireanta a difríonn do am áitiúil
-den am an freastalaí (UTC).',
'localtime' => 'An t-am áitiúil:',
'timezoneuseserverdefault' => 'Úsáid am réamhshocraithe an fhreastalaí',
'timezoneuseoffset' => 'Eile (cuir isteach an difear)',
@@ -892,10 +855,33 @@ den am an freastalaí (UTC).',
'prefs-namespaces' => 'Ainmspáis',
'defaultns' => 'Cuardaigh sna ranna seo a los éagmaise:',
'default' => 'réamhshocrú',
-'files' => 'Comhaid',
+'prefs-files' => 'Comhaid',
+'youremail' => 'Do ríomhsheoladh:',
+'username' => "D'ainm úsáideora:",
+'uid' => 'D’uimhir úsáideora:',
+'prefs-memberingroups' => 'Comhalta {{PLURAL:$1|an ghrúpa|na ghrúpaí}}:',
+'yourrealname' => "D'fhíorainm **",
+'yourlanguage' => 'Teanga',
+'yourvariant' => 'Difríocht teanga:',
+'yournick' => 'Do leasainm (mar a bheidh i sínithe)',
+'badsig' => 'Amhsíniú neamhbhailí; scrúdaigh na clibeanna HTML.',
+'badsiglength' => 'Tá do shíniú ró-fhada.<br />
+Caithfidh sé bheith níos giorra ná {{PLURAL:$1|carachtar|carachtair}}.',
+'yourgender' => 'Inscne:',
+'gender-male' => 'Fireann',
+'gender-female' => 'Baineann',
+'prefs-help-gender' => 'Roghnach: úsáidtear an rogha seo chun an t-inscne cheart a úsáid agus na bogearraí ag tagairt don úsaideoir.
+Beidh an t-eolas seo poiblí.',
+'email' => 'Ríomhphost',
+'prefs-help-realname' => '* <strong>Fíorainm</strong> (roghnach): má toghaíonn tú é sin a chur ar fáil, úsáidfear é chun
+do chuid dreachtaí a chur i leith tusa.',
+'prefs-help-email' => '<strong>Ríomhphost</strong> (roghnach): Leis an tréith seo is féidir teagmháil a dhéanamh leat tríd do leathanach úsáideora nó leathanach phlé gan do sheoladh ríomhphost a thaispeáint.',
+'prefs-help-email-required' => 'Ní foláir seoladh ríomhpoist a thabhairt.',
+'prefs-dateformat' => 'Formáid dáta',
+'prefs-timeoffset' => 'Difear ama',
# User rights
-'userrights' => 'Bainistíocht cearta úsáideora', # Not used as normal message but as header for the special page itself
+'userrights' => 'Bainistíocht cearta úsáideora',
'userrights-user-editname' => 'Iontráil ainm úsáideora:',
'editusergroup' => 'Cuir Grúpái Úsáideoirí In Eagar',
'editinguser' => "Ag athrú ceart don úsáideoir '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -943,6 +929,12 @@ den am an freastalaí (UTC).',
'recentchanges-legend' => 'Roghanna do na hathruithe is déanaí',
'recentchangestext' => 'Déan faire ar na hathruithe is déanaí sa vicí ar an leathanach seo.',
'recentchanges-feed-description' => 'Rianaigh na n-athruite vicí is déanaí sa fotha seo.',
+'recentchanges-label-legend' => 'Eochair eolais: $1.',
+'recentchanges-legend-newpage' => '$1 - leathanach nua',
+'recentchanges-legend-minor' => '$1 - mionathrú',
+'recentchanges-legend-bot' => '$1 - athrú de chuid róbó',
+'recentchanges-label-bot' => 'Chomhlíon róbó an t-athrú seo',
+'recentchanges-legend-unpatrolled' => '$1 - athrú neamh-phatrólaithe',
'rcnote' => "Is {{PLURAL:$1|é seo a leanas <strong>an t-athrú amháin</strong>|iad seo a leanas na <strong>$1</strong> athruithe is déanaí}} {{PLURAL:$2|ar feadh an lae dheireanaigh|ar feadh na '''$2''' lá deireanacha}}, as $5, $4.",
'rcnotefrom' => 'Is iad seo a leanas na hathruithe ó <b>$2</b> (go dti <b>$1</b> taispeánaithe).',
'rclistfrom' => 'Taispeáin athruithe nua ó $1 anuas.',
@@ -966,6 +958,8 @@ den am an freastalaí (UTC).',
# Recent changes linked
'recentchangeslinked' => 'Athruithe gaolmhara',
+'recentchangeslinked-feed' => 'Athruithe gaolmhara',
+'recentchangeslinked-toolbox' => 'Athruithe gaolmhara',
'recentchangeslinked-title' => 'Athruithe gaolmhara le "$1"',
'recentchangeslinked-noresult' => 'Níl aon athraithe ar na leathanaigh naiscthe le linn an tréimhse tugtha.',
'recentchangeslinked-summary' => "Seo liosta na n-athruithe atá deanta is déanaí le leathanaigh atá naiscthe as leathanach sonraithe (nó baill an chatagóir sonraithe).
@@ -975,7 +969,6 @@ Tá na leathanaigh ar do [[Special:Watchlist|liosta faire]] i '''gcló trom'''."
# Upload
'upload' => 'Uaslódaigh comhad',
'uploadbtn' => 'Uaslódaigh comhad',
-'reupload' => 'Athuaslódáil',
'reuploaddesc' => 'Dul ar ais chuig an fhoirm uaslódála.',
'uploadnologin' => 'Nil tú logáilte isteach',
'uploadnologintext' => 'Ní mór duit [[Special:UserLogin|logáil isteach]] chun comhaid a huaslódáil.',
@@ -1014,8 +1007,6 @@ Má theastáilann uait do chomhad a uaslódáil fós, téigh ar ais agus úsáid
'uploadedimage' => 'uaslódáladh "[[$1]]"',
'uploaddisabled' => 'Tá brón orainn, ní féidir aon rud a uaslódáil faoi láthair.',
'uploaddisabledtext' => 'Tá cosc ar uaslódáil comhad.',
-'uploadcorrupt' => 'Tá an comhad truaillithe nó tá iarmhír comhadainm neamhbhailí aige. Scrúdaigh an comhad agus
-uaslódáil é arís, le do thoil.',
'uploadvirus' => 'Tá víreas ann sa comhad seo! Eolas: $1',
'sourcefilename' => 'Comhadainm foinse:',
'destfilename' => 'Comhadainm sprice:',
@@ -1026,6 +1017,7 @@ uaslódáil é arís, le do thoil.',
'upload-file-error' => 'Earráid inmheánach',
'license' => 'Ceadúnas:',
+'license-header' => 'Ceadúnú',
'nolicense' => 'Níl aon cheann roghnaithe',
'upload_source_url' => ' (URL bailí is féidir a rochtain go poiblí)',
'upload_source_file' => ' (comhad ar do riomhaire)',
@@ -1041,27 +1033,25 @@ uaslódáil é arís, le do thoil.',
'listfiles_description' => 'Tuairisc',
# File description page
-'filehist' => 'Stair comhad',
-'filehist-help' => 'Clic ar dáta/am chun an comhad a radharc mar a bhí sé ar an am.',
-'filehist-deleteone' => 'scrios',
-'filehist-current' => 'reatha',
-'filehist-datetime' => 'Dáta/Am',
-'filehist-thumb' => 'Mionsamhail',
-'filehist-thumbtext' => 'Mionsamhail do leagan ó $1',
-'filehist-user' => 'Úsáideoir',
-'filehist-dimensions' => 'Toisí',
-'filehist-filesize' => 'Méid an comhad',
-'filehist-comment' => 'Nóta tráchta',
-'imagelinks' => 'Naisc comhaid',
-'linkstoimage' => 'Tá nasc chuig an gcomhad seo ar {{PLURAL:$1|na leathanaigh|$1 an leathanach}} seo a leanas:',
-'nolinkstoimage' => 'Níl nasc ó aon leathanach eile don íomhá seo.',
-'sharedupload' => 'Is uaslodáil roinnte atá ann sa comhad seo, as $1, agus is féidir le tionscadail eile é a úsáid.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Féach ar an [leathanach cur síos don comhad $1] le tuilleadh eolais.',
-'shareduploadwiki-linktext' => 'leathanach tuairisc comhad',
-'noimage' => 'Níl aon chomhad ann leis an ainm seo, ba féidir leat $1',
-'noimage-linktext' => 'uaslódaigh ceann',
-'uploadnewversion-linktext' => 'Uaslódáil leagan nua den comhad seo',
-'shared-repo' => 'comhstóráil', # used when shared-repo-NAME does not exist
+'file-anchor-link' => 'Comhad',
+'filehist' => 'Stair comhad',
+'filehist-help' => 'Clic ar dáta/am chun an comhad a radharc mar a bhí sé ar an am.',
+'filehist-deleteone' => 'scrios',
+'filehist-current' => 'reatha',
+'filehist-datetime' => 'Dáta/Am',
+'filehist-thumb' => 'Mionsamhail',
+'filehist-thumbtext' => 'Mionsamhail do leagan ó $1',
+'filehist-user' => 'Úsáideoir',
+'filehist-dimensions' => 'Toisí',
+'filehist-filesize' => 'Méid an comhad',
+'filehist-comment' => 'Nóta tráchta',
+'imagelinks' => 'Naisc comhaid',
+'linkstoimage' => 'Tá nasc chuig an gcomhad seo ar {{PLURAL:$1|na leathanaigh|$1 an leathanach}} seo a leanas:',
+'nolinkstoimage' => 'Níl nasc ó aon leathanach eile don íomhá seo.',
+'sharedupload' => 'Is uaslodáil roinnte atá ann sa comhad seo, as $1, agus is féidir le tionscadail eile é a úsáid.',
+'uploadnewversion-linktext' => 'Uaslódáil leagan nua den comhad seo',
+'shared-repo' => 'comhstóráil',
+'shared-repo-name-wikimediacommons' => 'an Cómhaoin Vicíméid',
# File reversion
'filerevert' => 'Fill $1 ar ais',
@@ -1117,8 +1107,8 @@ ghnáth tugann sé sin an sprioc-alt "fíor".',
'brokenredirects' => 'Atreoruithe briste',
'brokenredirectstext' => 'Is iad na athsheolaidh seo a leanas a nascaíonn go ailt nach bhfuil ann fós:',
-'brokenredirects-edit' => '(athraigh)',
-'brokenredirects-delete' => '(scrios)',
+'brokenredirects-edit' => 'athraigh',
+'brokenredirects-delete' => 'scrios',
'withoutinterwiki' => 'Leathanaigh gan naisc idirvicí',
'withoutinterwiki-legend' => 'Réimír',
@@ -1201,9 +1191,9 @@ Is féidir leat an méid ar taispeáint a chúngú trí roghnú an saghas loga,
# Special:Categories
'categories' => 'Catagóirí',
-'categoriespagetext' => 'Tá na catagóiri seo a leanas ann sa vicí.
-Níl na [[Special:UnusedCategories|catagóiri gan úsáid]] ar fáil anseo.
-Féach freisin ar [[Special:WantedCategories|catagóirí agus iarraidh ag gabháil leis]].',
+'categoriespagetext' => 'Tá leathanaigh nó meáin {{PLURAL:$1|sa chatagóir|sna catagóirí}} seo a leanas.
+Ní thaispeántar [[Special:UnusedCategories|catagóiri neamhúsáidte]] anseo.
+Féach freisin ar [[Special:WantedCategories|catagóirí faoi iarraidh]].',
# Special:DeletedContributions
'deletedcontributions' => 'Dréachtaí úsáideora scriosta',
@@ -1306,7 +1296,8 @@ Sonraí teagmhála an úsáideora:
r-phost: $PAGEEDITOR_EMAIL
vicí: $PAGEEDITOR_WIKI
-I gcás athruithe eile, ní bheidh aon fhógra eile muna dtéann tú go dtí an leathanach seo. Is féidir freisin na bratacha fógartha a athrú do gach leathanach ar do liosta faire.
+I gcás athruithe eile, ní bheidh aon fhógra eile muna dtéann tú go dtí an leathanach seo.
+Is féidir freisin na bratacha fógartha a athrú do gach leathanach ar do liosta faire.
Is mise le meas,
Fógrachóras cairdiúil {{GRAMMAR:genitive|{{SITENAME}}}}
@@ -1315,6 +1306,9 @@ I gcás athruithe eile, ní bheidh aon fhógra eile muna dtéann tú go dtí an
Chun socruithe do liosta faire a athrú, tabhair cuairt ar
{{fullurl:Special:Watchlist/edit}}
+Chun an leathanach a bhaint de do liosta faire, tabhair cuairt ar
+$UNWATCHURL
+
Aiseolas agus a thuilleadh cabhrach:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1327,7 +1321,7 @@ Aiseolas agus a thuilleadh cabhrach:
'exblank' => 'bhí an leathanach folamh',
'delete-confirm' => 'Scrios "$1"',
'delete-legend' => 'Scrios',
-'historywarning' => 'Aire: Ta stair ag an leathanach a bhfuil tú ar tí é a scriosadh:',
+'historywarning' => "'''Rabhadh:''' Tá stair (tuairim is {{PLURAL:$1|leagan amháin|$1 leaganacha}}) ag an leathanach a bhfuil tú ar tí é a scriosadh:",
'confirmdeletetext' => 'Tá tú ar tí leathanach, agus a chuid staire, a scriosadh.
Deimhnigh, le do thoil, gur mhian leat é seo a dhéanamh, go dtuigeann tú torthaí an ghnímh seo agus go bhfuil tú dá dhéanamh de réir [[{{MediaWiki:Policy-url}}|an pholasaí]].',
'actioncomplete' => 'Gníomh críochnaithe',
@@ -1355,8 +1349,8 @@ Féach ar $2 chun cuntas na scriosiadh deireanacha a fháil.',
'alreadyrolled' => "Ní féidir eagrán níos luaí an leathanaigh [[:$1]] le [[User:$2|$2]] ([[User talk:$2|Plé]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) a athúsáid; d'athraigh duine eile é cheana fein, nó d'athúsáid duine eile eagrán níos luaí cheana féin.
[[User:$3|$3]] ([[User talk:$3|Plé]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) an té a rinne an athrú is déanaí.",
-'editcomment' => "Seo a raibh an achoimre eagarthóireacht: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Cealaíodh athruithe [[Special:Contributions/$2|$2]] ([[User talk:$2|Plé]]); ar ais chuig leagan le [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Seo a raibh an achoimre eagarthóireacht: \"''\$1''\".",
+'revertpage' => 'Cealaíodh athruithe [[Special:Contributions/$2|$2]] ([[User talk:$2|Plé]]); ar ais chuig leagan le [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Log cosanta',
@@ -1372,7 +1366,6 @@ Féach ar [[Special:ProtectedPages|Leathanach glasáilte]] chun a thuilleadh eol
'protectexpiry' => 'As feidhm:',
'protect_expiry_invalid' => 'Am éaga neamhbhailí.',
'protect_expiry_old' => 'Am éaga san am atá thart.',
-'protect-unchain' => 'Díghlasáil an cead athainmithe',
'protect-text' => "Is féidir leat an leibhéal glasála a athrú anseo don leathanach '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Ní chead ag do chuntas chun athraigh leibhéal cosaint an leathanach.
Seo iad na socruithe reatha faoin leathanach '''$1''':",
@@ -1389,7 +1382,7 @@ Is féidir an leibhéal glasála a athrú, ach ní féidir cur isteach ar an ghl
'protect-cantedit' => 'Ní féidir leat na leibhéil cosanta a athrú faoin leathanach seo, mar níl cead agat é a cur in eagar.',
'protect-othertime' => 'Am eile:',
'protect-othertime-op' => 'am eile',
-'protect-expiry-options' => 'uair amháin:1 hour,lá amháin:1 day,seachtain amháin:1 week,2 sheachtain:2 weeks,mí amháin:1 month,3 mhí:3 months,6 mhí:6 months,bliain amháin:1 year,gan teorainn:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'uair amháin:1 hour,lá amháin:1 day,seachtain amháin:1 week,2 sheachtain:2 weeks,mí amháin:1 month,3 mhí:3 months,6 mhí:6 months,bliain amháin:1 year,gan teorainn:infinite',
'restriction-type' => 'Ceadúnas:',
'restriction-level' => 'Leibhéal srianadh:',
'pagesize' => '(bearta)',
@@ -1437,7 +1430,7 @@ Is an téacs as na leagan scriosta seo ar fáil do riarthóirí amháin.',
'contributions-title' => 'Dréachtaí úsáideora do $1',
'mycontris' => 'Mo chuid dréachtaí',
'contribsub2' => 'Do $1 ($2)',
-'nocontribs' => 'Ní bhfuarthas aon athrú a bhí cosúil le na crítéir seo.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ní bhfuarthas aon athrú a bhí cosúil le na crítéir seo.',
'uctop' => ' (barr)',
'month' => 'Ón mhí seo (agus níos luaithe):',
'year' => 'Ón bhliain seo (agus níos luaithe):',
@@ -1446,6 +1439,9 @@ Is an téacs as na leagan scriosta seo ar fáil do riarthóirí amháin.',
'sp-contributions-newbies-sub' => 'Le cuntais nua',
'sp-contributions-newbies-title' => 'Dréachtaí úsáideora do chuntasaí nua',
'sp-contributions-blocklog' => 'Log coisc',
+'sp-contributions-deleted' => 'dréachtaí úsáideora scriosta',
+'sp-contributions-talk' => 'plé',
+'sp-contributions-userrights' => 'bainistíocht cearta úsáideora',
'sp-contributions-search' => 'Cuardaigh dréachtaí',
'sp-contributions-username' => 'Seoladh IP nó ainm úsáideora:',
'sp-contributions-submit' => 'Cuardaigh',
@@ -1492,7 +1488,7 @@ leathanaigh áirithe a rinne an duine damáiste ar).',
** Seachfhreastalaí Oscailte',
'ipbsubmit' => 'Coisc an úsáideoir seo',
'ipbother' => 'Méid eile ama',
-'ipboptions' => '2 uair:2 hours,1 lá amháin:1 day,3 lá:3 days,1 sheachtain amháin:1 week,2 sheachtain:2 weeks,1 mhí amháin:1 month,3 mhí:3 months,6 mhí:6 months,1 bhliain amháin:1 year,gan teorainn:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uair:2 hours,1 lá amháin:1 day,3 lá:3 days,1 sheachtain amháin:1 week,2 sheachtain:2 weeks,1 mhí amháin:1 month,3 mhí:3 months,6 mhí:6 months,1 bhliain amháin:1 year,gan teorainn:infinite',
'ipbotheroption' => 'eile',
'badipaddress' => 'Níl aon úsáideoir ann leis an ainm seo.',
'blockipsuccesssub' => "D'éirigh leis an cosc",
@@ -1590,7 +1586,7 @@ Sna cásanna sin, caithfidh tú an leathanach a aistrigh nó a chumasc tú féin
'move-watch' => 'Déan faire an leathanach seo',
'movepagebtn' => 'Athainmnigh an leathanach',
'pagemovedsub' => "D'éirigh leis an athainmniú",
-'movepage-moved' => '\'\'\'Athainmníodh "$1" mar "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Athainmníodh "$1" mar "$2"\'\'\'',
'articleexists' => 'Tá leathanach leis an teideal seo ann cheana féin, nó níl an teideal a roghnaigh tú ina theideal bailí. Roghnaigh teideal eile le do thoil.',
'talkexists' => "'''D’athainmníodh an leathanach é féin go rathúil, ach ní raibh sé ar a chumas an leathanach phlé a hathainmniú dá bharr go bhfuil ceann ann cheana féin ag an teideal nua.'''<br />
'''Báigh tusa féin iad.'''",
@@ -1630,7 +1626,6 @@ Sa dara cás, is féidir leat nasc a úsáid, mar shampla [[{{#Special:Export}}/
'allmessagestext' => 'Is liosta é seo de theachtaireachtaí córais atá le fáil san ainmspás MediaWiki.
Tabhair cuairt ar [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] agus [http://translatewiki.net translatewiki.net] le do thoil más mian leat cur leis an logánú ginearálta MediaWiki.',
'allmessagesnotsupportedDB' => "Ní féidir an leathanach seo a úsáid dá bharr gur díchumasaíodh '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => "Scagaire teachtaireacht d'ainm:",
# Thumbnails
'thumbnail-more' => 'Méadaigh',
@@ -1686,6 +1681,7 @@ ní féidir uaslódála staire díreacha a dhéanamh faoi láthair.",
'tooltip-search-fulltext' => 'Cuardaigh an téacs seo sna leathanaigh',
'tooltip-p-logo' => 'Príomhleathanach',
'tooltip-n-mainpage' => 'Tabhair cuairt ar an bPríomhleathanach',
+'tooltip-n-mainpage-description' => 'Tabhair cuairt ar an bpríomhleathanach',
'tooltip-n-portal' => 'Maidir leis an tionscadal, cad is féidir leat a dhéanamh, conas achmhainní a fháil',
'tooltip-n-currentevents' => 'Faigh eolas cúlrach maidir le chursaí reatha',
'tooltip-n-recentchanges' => 'Liosta de na hathruithe is déanaí sa vicí.',
@@ -1729,7 +1725,7 @@ ní féidir uaslódála staire díreacha a dhéanamh faoi láthair.",
# Attribution
'anonymous' => '{{PLURAL:$1|Úsáideoir|Úsáideoirí}} gan ainm ar {{SITENAME}}',
'siteuser' => 'Úsáideoir $1 ag {{SITENAME}}',
-'lastmodifiedatby' => 'Leasaigh $3 an leathanach seo go déanaí ag $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Leasaigh $3 an leathanach seo go déanaí ag $2, $1.',
'othercontribs' => 'Bunaithe ar saothair le $1.',
'others' => 'daoine eile',
'siteusers' => '{{PLURAL:$2|Úsáideoirí|Úsáideoir}} ag {{SITENAME}} $1',
@@ -1760,6 +1756,7 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
'skinname-chick' => 'Sicín',
'skinname-simple' => 'Simplí',
'skinname-modern' => 'Nua-aimseartha',
+'skinname-vector' => 'Veicteoir',
# Math options
'mw_math_png' => 'Déan PNG-íomhá gach uair',
@@ -1769,11 +1766,22 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
'mw_math_modern' => 'Inmholta do bhrabhsálaithe nua',
'mw_math_mathml' => 'MathML más féidir (turgnamhach)',
+# Math errors
+'math_failure' => 'Theip ó anailís na foirmle',
+'math_unknown_error' => 'earráid anaithnid',
+'math_unknown_function' => 'foirmle anaithnid',
+'math_lexing_error' => 'Theip ó anailís an fhoclóra',
+'math_syntax_error' => 'earráid comhréire',
+'math_image_error' => 'Theip ó aistriú an PNG; tástáil má tá na ríomh-oidis latex, dvips, gs, agus convert i suite go maith.',
+'math_bad_tmpdir' => 'Ní féidir scríobh chuig an fillteán mata sealadach, nó é a chruthú',
+'math_bad_output' => 'Ní féidir scríobh chuig an fillteán mata aschomhaid, nó é a chruthú',
+'math_notexvc' => 'Níl an ríomhchlár texvc ann; féach ar mata/EOLAIS chun é a sainathrú.',
+
# Patrolling
'markaspatrolleddiff' => 'Comharthaigh mar patrólta.',
'markaspatrolledtext' => 'Comharthaigh an t-alt seo mar patrólta',
'markedaspatrolled' => 'Comharthaithe mar patrólta',
-'markedaspatrolledtext' => 'Marcáladh an athrú áirithe seo bheith patrólaithe.',
+'markedaspatrolledtext' => 'Marcáladh an t-athrú roghnaithe de [[:$1]] "patrólaithe".',
'rcpatroldisabled' => 'Mhíchumasaíodh Patról na n-Athruithe is Déanaí',
'rcpatroldisabledtext' => 'Tá an tréith Patról na n-Athruithe is Déanaí míchumasaithe faoi láthair.',
@@ -1793,7 +1801,7 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
# Media information
'mediawarning' => "'''Rabhadh''': Tá seans ann go bhfuil cód mailíseach sa chineál comhaid seo.
B'fheidir go gcuirfear do chóras i gcontúirt dá rithfeá é.",
-'imagemaxsize' => 'Cuir an teorann seo ar na íomhánna atá le fáil ar leathanaigh cuir síos íomhánna:',
+'imagemaxsize' => "Teorainn mhéid íomhá:<br />''(leathanaigh thuarascáil chomhaid)''",
'thumbsize' => 'Méid mionsamhlacha:',
'file-info' => '(méid comhad : $1, saghas MIME: $2)',
'file-info-size' => '($1 × $2 picteilín, méid comhaid: $3, cineál MIME: $4)',
@@ -1833,7 +1841,7 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Leithead',
@@ -1960,14 +1968,14 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-unknowndate' => 'Dáta anaithnid',
-'exif-orientation-1' => 'Gnáth', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Iompaithe go cothrománach', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rothlaithe trí 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Iompaithe go hingearach', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rothlaithe trí 90° CCW agus iompaithe go hingearach', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rothlaithe trí 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rothlaithe trí 90° CW agus iompaithe go hingearach', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rothlaithe trí 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Gnáth',
+'exif-orientation-2' => 'Iompaithe go cothrománach',
+'exif-orientation-3' => 'Rothlaithe trí 180°',
+'exif-orientation-4' => 'Iompaithe go hingearach',
+'exif-orientation-5' => 'Rothlaithe trí 90° CCW agus iompaithe go hingearach',
+'exif-orientation-6' => 'Rothlaithe trí 90° CW',
+'exif-orientation-7' => 'Rothlaithe trí 90° CW agus iompaithe go hingearach',
+'exif-orientation-8' => 'Rothlaithe trí 90° CCW',
'exif-planarconfiguration-1' => 'Formáid shmutánach',
'exif-planarconfiguration-2' => 'Formáid phlánach',
@@ -2079,7 +2087,7 @@ cúlra i bhfócas)',
'exif-gpsmeasuremode-2' => 'Tomhas déthoiseach',
'exif-gpsmeasuremode-3' => 'Tomhas tríthoiseach',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Ciliméadair san uair',
'exif-gpsspeed-m' => 'Mílte san uair',
'exif-gpsspeed-n' => 'Muirmhílte',
@@ -2182,9 +2190,9 @@ Rachaidh an cód deimhnithe seo as feidhm ag $4.',
'watchlisttools-raw' => 'Cuir do amhliosta faire in eagar',
# Special:Version
-'version' => 'Leagan', # Not used as normal message but as header for the special page itself
+'version' => 'Leagan',
'version-other' => 'Eile',
-'version-version' => 'Leagan',
+'version-version' => '(Leagan $1)',
'version-license' => 'Ceadúnas',
'version-software' => 'Bogearraí suiteáilte',
'version-software-version' => 'Leagan',
diff --git a/languages/messages/MessagesGag.php b/languages/messages/MessagesGag.php
index 56f93895..f20e572e 100644
--- a/languages/messages/MessagesGag.php
+++ b/languages/messages/MessagesGag.php
@@ -126,10 +126,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Uurunda',
-'article' => 'Yazı',
-'newwindow' => '(eni bir pencerädä açılêr)',
-'cancel' => 'Ret',
+'about' => 'Uurunda',
+'article' => 'Yazı',
+'newwindow' => '(eni bir pencerädä açılêr)',
+'cancel' => 'Ret',
+'moredotdotdot' => 'Taa...',
+'mypage' => 'Benim sayfam',
+'mytalk' => 'Sözleşmäk sayfam',
+'anontalk' => 'Bu IP-nin konuşmaları',
+'navigation' => 'Saytda yol bulmaa',
+'and' => '&#32;hem',
+
+# Cologne Blue skin
'qbfind' => 'Bul',
'qbbrowse' => 'Taramaa',
'qbedit' => 'Diiştir',
@@ -137,15 +145,8 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Sayfalarım',
'qbspecialpages' => 'Maasus sayfalar',
-'moredotdotdot' => 'Taa...',
-'mypage' => 'Benim sayfam',
-'mytalk' => 'Sözleşmäk sayfam',
-'anontalk' => 'Bu IP-nin konuşmaları',
-'navigation' => 'Saytda yol bulmaa',
-'and' => '&#32;hem',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'SSS',
+'faqpage' => 'Project:SSS',
'errorpagetitle' => 'Yannış',
'returnto' => '$1 dön.',
@@ -193,7 +194,7 @@ $messages = array(
'otherlanguages' => 'Übür diller',
'redirectedfrom' => '($1 sayfasınnan yönnendirildi)',
'redirectpagesub' => 'Yönnendirme sayfası',
-'lastmodifiedat' => 'Bu sayfa bitki kerä $2, $1 datasında enilendi.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu sayfa bitki kerä $2, $1 datasında enilendi.',
'viewcount' => 'Bu sayfaya $1 kerä girildi.',
'protectedpage' => 'Korunmaklı sayfa',
'jumpto' => 'Git hem:',
@@ -204,7 +205,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} için',
'aboutpage' => 'Project:Uurunda',
'copyright' => 'İçersindeki $1 altında.',
-'copyrightpagename' => '{{SITENAME}} korunmak hakları',
'copyrightpage' => '{{ns:project}}:Avtorluk hakları',
'currentevents' => 'Hergünkü sluçaylar',
'currentevents-url' => 'Project:Hergünkü sluçaylar',
@@ -212,8 +212,6 @@ $messages = array(
'disclaimerpage' => 'Project:Genel cuvapçılık reti',
'edithelp' => 'Nesoy var nicä diiştirmää?',
'edithelppage' => 'Help:Nesoy var nicä sayfa diiştirmää',
-'faq' => 'SSS',
-'faqpage' => 'Project:SSS',
'helppage' => 'Help:İçindekilär',
'mainpage' => 'Baş yaprak',
'mainpage-description' => 'Baş yaprak',
@@ -272,7 +270,6 @@ $messages = array(
# General errors
'error' => 'Kusurluk',
'databaseerror' => 'Data bazası kusurluu',
-'nodb' => '$1 data bazasını yok nicä seçsin',
'readonly' => 'Data bazası kilitlendi',
'internalerror' => 'İç yannış',
'internalerror_info' => 'İç yannış: $1',
@@ -288,13 +285,11 @@ $messages = array(
'viewsourcetext' => 'Var nicä görmää hem kopiya etmää bu yapraa gelinirini:',
# Login and logout pages
-'logouttitle' => 'Sessiyanı kapat',
'logouttext' => 'Sessiyayı kapattınız.
Şindi var nicä devam etmää kullanmaa {{SITENAME}} saytını kimlik göstermedän yaki enidän sessiya açmaa (ister hep o kullanıcı adıylan, ister başka bir kullanıcı adıylan). O zamana kadar ani web brauzerinizin keşi temizlenecek bir takım sayfalar var nicä görünsün sansın sessiya hep açık.',
'welcomecreation' => '== Hoş geldiniz $1! ==
Esapınız açıldı. Unutmayın {{SITENAME}} seçimnerin diiştirmää.',
-'loginpagetitle' => 'Sessiya aç',
'yourname' => 'Kullanıcı adınız',
'yourpassword' => 'Parol',
'yourpasswordagain' => 'Parolu enidän yaz',
@@ -316,18 +311,7 @@ Kullanıcı adınız '''var nicä içersin'''gagauzça nışan, boşluk . Savaş
'createaccountmail' => 'e-maillan',
'badretype' => 'Parollar angılarını girdiniz uymêêr.',
'userexists' => 'Kullanıcı adı ani girdiniz kullanılêr. Yalvarêrız farklı bir kullanıcı adı seçin.',
-'youremail' => 'E-mail adresiniz*',
-'username' => 'Kullanıcı adı:',
-'uid' => 'Registrațiya nomeri:',
-'yourrealname' => 'Haliz adınız:',
-'yourlanguage' => 'Dil:',
-'yournick' => 'Nik',
-'badsig' => 'Geçersiz çii imza; HTML etiketlerini yoklayın.',
-'badsiglength' => 'Kullanıcı adı çok uzun; lääzım olsun $1 simvol altında.',
-'email' => 'E-mail',
-'prefs-help-realname' => '* Aslı ad (istemää baalı): herliim seçersäniz aslı adı vermää, işinize görä sizin için kullanılacêk.',
'loginerror' => 'Sessiya açmaa yannışı.',
-'prefs-help-email-required' => 'E-mail adres istenildi.',
'noname' => 'Geçerli bir kullanıcı adı girmediniz.',
'loginsuccesstitle' => 'Sessiya başarılan açıldı',
'loginsuccess' => '{{SITENAME}} saytında "$1" kullanıcı adılan sessiya açtınız.',
@@ -383,20 +367,20 @@ O zamana kadar ani e-maildaki instrukțiyalar yapılmaycêk hem doorulanmaycêk
'hr_tip' => 'Gorizontal liniya (çok sık kullanmayın)',
# Edit pages
-'summary' => 'Kısaca:',
-'subject' => 'Konu/başlık:',
-'minoredit' => 'Küçük diişilmäkler',
-'watchthis' => 'Bak bu sayfaa',
-'savearticle' => 'Sayfayı registrat et',
-'preview' => 'Ön siir',
-'showpreview' => 'Ön siiri göster',
-'showlivepreview' => 'Cannı ön siir',
-'showdiff' => 'Diişilmäkleri göster',
-'anoneditwarning' => 'Sessiya açmadınız deyni yazının diişmäk istoriyasına diil nik, IP adresiniz registrat olunacêk.',
-'summary-preview' => 'Ön siir özeti:',
-'subject-preview' => 'Konu/başlık ön siiri:',
-'blockedtitle' => 'Kullanıcı kösteklendi.',
-'blockedtext' => 'Kullanıcı adınız yaki parolunuz $1 tarafından kösteklendi.
+'summary' => 'Kısaca:',
+'subject' => 'Konu/başlık:',
+'minoredit' => 'Küçük diişilmäkler',
+'watchthis' => 'Bak bu sayfaa',
+'savearticle' => 'Sayfayı registrat et',
+'preview' => 'Ön siir',
+'showpreview' => 'Ön siiri göster',
+'showlivepreview' => 'Cannı ön siir',
+'showdiff' => 'Diişilmäkleri göster',
+'anoneditwarning' => 'Sessiya açmadınız deyni yazının diişmäk istoriyasına diil nik, IP adresiniz registrat olunacêk.',
+'summary-preview' => 'Ön siir özeti:',
+'subject-preview' => 'Konu/başlık ön siiri:',
+'blockedtitle' => 'Kullanıcı kösteklendi.',
+'blockedtext' => 'Kullanıcı adınız yaki parolunuz $1 tarafından kösteklendi.
Sizi köstek edän önderci: $1. Köstek sebebi: \'\'$2\'\'.
@@ -405,43 +389,43 @@ Eer düşünürsünüz ani köstek diil dooru o sebeptän angısı belirtildi, v
Herliim girmediniz [[Special:Preferences|seçimner]] bölümünde geçerli bir e-mail adresi, yok nicä kullanmaa "Kullanıcıya e-mail gönder" seçimini.
Şindi IP adresiniz $3. Yalvarêrêz bu adresi belirtmää her angı bir sorgu yapar kana.',
-'blockednoreason' => 'hiç bir sebep belirtilmedi',
-'blockedoriginalsource' => "'''$1''' sayfasın kaynak teksti aşaada:",
-'whitelistedittitle' => 'Lääzım açmaa sessiya diişmäk yapmaa deyni',
-'whitelistedittext' => 'Diişmäk yapmaa için $1.',
-'nosuchsectiontitle' => 'Bölä bölüm yok',
-'loginreqtitle' => 'Lääazım sessiya açmaa',
-'loginreqlink' => 'sessiya aç',
-'loginreqpagetext' => 'Lääzım $1 görmää übür sayfaları.',
-'accmailtitle' => 'Parol gönderildi.',
-'accmailtext' => "'$1' kullanıcısın parolu $2 adresine gönderildi.",
-'newarticle' => '(Eni)',
-'newarticletext' => "Henez var olmayan bir sayfaya konulmuş baalantıya tuşladınız. Bu sayfayı yaratmaa deyni aşaadaki tekst kutusunu kullanınız. Bilgi için [[{{MediaWiki:Helppage}}|yardım sayfasına]] bakınız. Herliim buraya yannış geldiniz, läazım tuşlamaa programınızın '''Geeri''' tuşuna.",
-'noarticletext' => 'Bu sayfa boş. Bu başlıı [[Special:Search/{{PAGENAME}}|var nicä aramaa]] übür sayfalarda yaki bu sayfayı siz [{{fullurl:{{FULLPAGENAME}}|action=edit}} var nicä yazmaa].',
-'updated' => '(Enilendi)',
-'previewnote' => "'''Bu saadä bir ön siir, hem diişmäkler henez korunmadı!'''",
-'editing' => '"$1" sayfasın diiştirersiniz',
-'editingsection' => '"$1" sayfasında bölüm diiştirersiniz',
-'editingcomment' => '$1 sayfasına yorum ekleersiniz.',
-'editconflict' => 'Diişmäk konflikti: $1',
-'yourtext' => 'Sizin tekstiniz',
-'storedversion' => 'Saklanmış tekst',
-'yourdiff' => 'Farklar',
-'copyrightwarning' => "'''Bakınız:''' {{SITENAME}} saytına yapılan hepsi eklemäkler hem diişmäkler läazım olsun <i>$2</i>
+'blockednoreason' => 'hiç bir sebep belirtilmedi',
+'blockedoriginalsource' => "'''$1''' sayfasın kaynak teksti aşaada:",
+'whitelistedittitle' => 'Lääzım açmaa sessiya diişmäk yapmaa deyni',
+'whitelistedittext' => 'Diişmäk yapmaa için $1.',
+'nosuchsectiontitle' => 'Bölä bölüm yok',
+'loginreqtitle' => 'Lääazım sessiya açmaa',
+'loginreqlink' => 'sessiya aç',
+'loginreqpagetext' => 'Lääzım $1 görmää übür sayfaları.',
+'accmailtitle' => 'Parol gönderildi.',
+'accmailtext' => "'$1' kullanıcısın parolu $2 adresine gönderildi.",
+'newarticle' => '(Eni)',
+'newarticletext' => "Henez var olmayan bir sayfaya konulmuş baalantıya tuşladınız. Bu sayfayı yaratmaa deyni aşaadaki tekst kutusunu kullanınız. Bilgi için [[{{MediaWiki:Helppage}}|yardım sayfasına]] bakınız. Herliim buraya yannış geldiniz, läazım tuşlamaa programınızın '''Geeri''' tuşuna.",
+'noarticletext' => 'Bu sayfa boş. Bu başlıı [[Special:Search/{{PAGENAME}}|var nicä aramaa]] übür sayfalarda yaki bu sayfayı siz [{{fullurl:{{FULLPAGENAME}}|action=edit}} var nicä yazmaa].',
+'updated' => '(Enilendi)',
+'previewnote' => "'''Bu saadä bir ön siir, hem diişmäkler henez korunmadı!'''",
+'editing' => '"$1" sayfasın diiştirersiniz',
+'editingsection' => '"$1" sayfasında bölüm diiştirersiniz',
+'editingcomment' => '$1 sayfasına yorum ekleersiniz.',
+'editconflict' => 'Diişmäk konflikti: $1',
+'yourtext' => 'Sizin tekstiniz',
+'storedversion' => 'Saklanmış tekst',
+'yourdiff' => 'Farklar',
+'copyrightwarning' => "'''Bakınız:''' {{SITENAME}} saytına yapılan hepsi eklemäkler hem diişmäkler läazım olsun <i>$2</i>
lițenziyası şartları içindä (detallar için $1'a bakınız).
Herliim istemeersiniz ani sizin tekstlär serbest yayılsın hem diiştirilsin übür kullanıcılar tarafınnan, onnarı erleştirmeyniz buraya.<br />
Hem siz garantiyada bulunêrsiniz ani eklemäklerin avtorusunuz, yaki onnarı kopiya ettiniz kaynaktan angısı izin verer teksti serbest yaymaa hem diiştirmää.<br />
'''<center>AVTORLUK KORUNMAK HAKKILAN KORUNMAYAN MATERİALLAR EKLEMEYNİZ!</center>'''",
-'longpagewarning' => "'''BAK: Bu sayfanın ölçüsü $1 kilobayt; ölçüsü 32 kb-a yakın yaki onnan çok sayfalar bir takım brauzerlärdä var nicä yannış görünsün. Savaşênız onu bölümnerä ayırmaa.'''",
-'templatesused' => 'Bu sayfada kullanılan şablonlar:',
-'templatesusedpreview' => 'Şablonnar ani bu ön siirdä kullanıldı:',
-'templatesusedsection' => 'Bu bölümde kullanılan şablonlar:',
-'template-protected' => '(korumaa)',
-'template-semiprotected' => '(yarı-korunmaa)',
-'nocreatetext' => '{{SITENAME}} eni yazılar yaratmaa yasaklandı.
+'longpagewarning' => "'''BAK: Bu sayfanın ölçüsü $1 kilobayt; ölçüsü 32 kb-a yakın yaki onnan çok sayfalar bir takım brauzerlärdä var nicä yannış görünsün. Savaşênız onu bölümnerä ayırmaa.'''",
+'templatesused' => 'Bu sayfada kullanılan şablonlar:',
+'templatesusedpreview' => 'Şablonnar ani bu ön siirdä kullanıldı:',
+'templatesusedsection' => 'Bu bölümde kullanılan şablonlar:',
+'template-protected' => '(korumaa)',
+'template-semiprotected' => '(yarı-korunmaa)',
+'nocreatetext' => '{{SITENAME}} eni yazılar yaratmaa yasaklandı.
Sizä yakışêr geeri dönmää hem düzmää var olan yapraa, yaki [[Special:UserLogin|sessiya açmaa yaki esap yaratmaa]].',
-'permissionserrors' => 'İzin yannışları',
-'recreate-deleted-warn' => "'''Bak: Siz yarattınız o sayfayı angısı ilerdän silindi.'''
+'permissionserrors' => 'İzin yannışları',
+'recreate-moveddeleted-warn' => "'''Bak: Siz yarattınız o sayfayı angısı ilerdän silindi.'''
Läazım düşünmää bu sayfayı redaktat etmää devam etmää deyni.
Sayfanın silmää jurnalı raatlık için yazılêr burada:",
@@ -453,7 +437,7 @@ Sayfanın silmää jurnalı raatlık için yazılêr burada:",
'viewpagelogs' => 'Bu yaprak için jurnalları göster',
'currentrev' => 'Şindiki versiya',
'revisionasof' => 'Sayfanın $1 datasındaki hali',
-'revision-info' => '$1; $2 datalı versiya', # Additionally available: $3: revision id
+'revision-info' => '$1; $2 datalı versiya',
'previousrevision' => '← İlerki hali',
'nextrevision' => 'Geerki hali →',
'currentrevisionlink' => 'en bitki halini göster',
@@ -465,7 +449,6 @@ Sayfanın silmää jurnalı raatlık için yazılêr burada:",
'histlegend' => "Fark seçimi: 2 versiyanın angısını isteersiniz karşılaştırmaa, önündeki kutucaa tuşlayıp, enter'a basın yaki tuşlayın butona angısı sayfanın en altında bulunêr.<br />
Nışannar: (bitki) = şindiki versiyalan aradaki fark,
(ilerki) = bir ilerki versiyalan aradaki fark, K = küçük diişmäk",
-'deletedrev' => '[silindi]',
'histfirst' => 'En eski',
'histlast' => 'En eni',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
@@ -473,7 +456,7 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
# Revision feed
'history-feed-title' => 'Diişmäk istoriyası',
-'history-feed-item-nocomment' => ' $2de $1', # user at time
+'history-feed-item-nocomment' => ' $2de $1',
# Revision deletion
'rev-deleted-comment' => '(yorum silindi)',
@@ -494,17 +477,27 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
'diff-multi' => '({{PLURAL:$1|Ara versiya|$1 ara versiyalar}} gösterilmedi.)',
# Search results
-'noexactmatch' => " Başlaa bu olan bir yazı bulunamadı. Bu yazını var nicä [[:$1|'''siz çeketmää''']].",
-'prevn' => 'ilerki $1',
-'nextn' => 'geeriki $1',
-'viewprevnext' => '($1) ($2) ($3).',
+'prevn' => 'ilerki {{PLURAL:$1|$1}}',
+'nextn' => 'geeriki {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:İçindekilär',
'powersearch' => 'Ara',
# Preferences page
-'preferences' => 'Seçimner',
-'mypreferences' => 'Seçimnerim',
-'skin-preview' => 'Ön siir',
+'preferences' => 'Seçimner',
+'mypreferences' => 'Seçimnerim',
+'skin-preview' => 'Ön siir',
+'youremail' => 'E-mail adresiniz*',
+'username' => 'Kullanıcı adı:',
+'uid' => 'Registrațiya nomeri:',
+'yourrealname' => 'Haliz adınız:',
+'yourlanguage' => 'Dil:',
+'yournick' => 'Nik',
+'badsig' => 'Geçersiz çii imza; HTML etiketlerini yoklayın.',
+'badsiglength' => 'Kullanıcı adı çok uzun; lääzım olsun $1 simvol altında.',
+'email' => 'E-mail',
+'prefs-help-realname' => '* Aslı ad (istemää baalı): herliim seçersäniz aslı adı vermää, işinize görä sizin için kullanılacêk.',
+'prefs-help-email-required' => 'E-mail adres istenildi.',
# User rights
'editinguser' => '"$1" sayfasını diiştirersiniz ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])',
@@ -538,6 +531,8 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
# Recent changes linked
'recentchangeslinked' => 'İlgili diişilmäklär',
+'recentchangeslinked-feed' => 'İlgili diişilmäklär',
+'recentchangeslinked-toolbox' => 'İlgili diişilmäklär',
'recentchangeslinked-title' => '"$1" ilgili diişmäklär',
'recentchangeslinked-noresult' => 'Baalantılı sayfalarda verilmiş devirde diişmäk olmadı.',
'recentchangeslinked-summary' => "Bu maasus sayfa baalantılı sayfalardaki diişmäkleri sayêr. Sizin bakmaa listasındaki sayfalar verildi '''kalın''' bukvalarnan.",
@@ -552,6 +547,7 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
'listfiles' => 'Pätret listası',
# File description page
+'file-anchor-link' => 'Fayl',
'filehist' => 'Fayl istoriyası',
'filehist-help' => 'Fayl istoriyasın görmää deyni Gün/Zaman bölümündeki dataları tıklayınız.',
'filehist-current' => 'Şindiki',
@@ -563,9 +559,7 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
'imagelinks' => 'Sayfalar angıları kullanıldı',
'linkstoimage' => 'Bu fayla baalantısı olan sayfalar:',
'nolinkstoimage' => 'Yok sayfalar ani bu fayla baalı.',
-'sharedupload' => 'Bu fayl üklendi ortak kullanmak erinä hem var nicä kullanılsın übür proektlärdä.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Bu adda fayl yok. Siz $1.',
-'noimage-linktext' => 'var nicä üklemää',
+'sharedupload' => 'Bu fayl üklendi ortak kullanmak erinä hem var nicä kullanılsın übür proektlärdä.',
'uploadnewversion-linktext' => 'Eni fayl ükle',
# MIME search
@@ -700,7 +694,6 @@ Yakın zamanda silinenleri görmää deyni: $2.',
'protectexpiry' => 'Bitmää datası:',
'protect_expiry_invalid' => 'Yannış bitmää datası.',
'protect_expiry_old' => 'Bitmää datası geçti.',
-'protect-unchain' => 'Taşıma kilidini kaldır',
'protect-text' => 'Var nicä görmää hem diiştirmää buradan [[$1]] sayfasın korunmaa düzeyini.',
'protect-locked-access' => "Sizin esapın yok izni yazının korunmak düzeyini diiştirmää.
Burada bitki seçimner '''$1''' yazı diiştirmää deyni:",
@@ -713,7 +706,7 @@ Burada bitki seçimner '''$1''' yazı diiştirmää deyni:",
'protect-expiring' => 'bitmää datası $1 (UTC)',
'protect-cascade' => 'Bu sayfaya girän sayfaları koru (kaskad korunmaa)',
'protect-cantedit' => 'Siz bu yazının korunmak düzeyin bilmärsiniz diiştirmää, neçin ki sizin onu düzmää izniniz yok.',
-'protect-expiry-options' => '1 saat:1 hour,1 day:1 day,1 afta:1 week,1 ay:1 month,3 months:3 months,6 months,6 months,zamansız:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 saat:1 hour,1 day:1 day,1 afta:1 week,1 ay:1 month,3 months:3 months,6 months,6 months,zamansız:infinite',
'restriction-type' => 'İzin:',
'restriction-level' => 'Yasaklama düzeyi:',
@@ -735,6 +728,7 @@ Burada bitki seçimner '''$1''' yazı diiştirmää deyni:",
'sp-contributions-newbies-sub' => 'Eni kullanıcılara deyni',
'sp-contributions-blocklog' => 'Köstek jurnalı',
+'sp-contributions-talk' => 'Konuşmaa',
# What links here
'whatlinkshere' => 'Baalantılar sayfaa',
@@ -749,7 +743,7 @@ Burada bitki seçimner '''$1''' yazı diiştirmää deyni:",
# Block/unblock
'blockip' => 'Bu kullanıcıya köstek ol',
-'ipboptions' => '15 minut:15 minutes,1 saat:1 hour,3 saat:3 hours,24 saat:24 hours,48 saat:48 hours,1 afta:1 week,1 ay:1 month,zamansız:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '15 minut:15 minutes,1 saat:1 hour,3 saat:3 hours,24 saat:24 hours,48 saat:48 hours,1 afta:1 week,1 ay:1 month,zamansız:infinite',
'ipblocklist' => 'Köstekli kullanıcılar hem IP adresleri listası',
'blocklink' => 'köstek ol',
'unblocklink' => 'köstek kaldır',
@@ -880,7 +874,7 @@ Sadä listadaki êlementlarä (* nışannan çekedän liniyalar) bakılacêk. Li
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Kompyuterinizdäki uygulamaklarlan faylı düz',
@@ -897,7 +891,7 @@ Sadä listadaki êlementlarä (* nışannan çekedän liniyalar) bakılacêk. Li
'watchlisttools-raw' => 'Ham siir listasını düz',
# Special:Version
-'version' => 'Versiya', # Not used as normal message but as header for the special page itself
+'version' => 'Versiya',
# Special:SpecialPages
'specialpages' => 'Maasus sayfalar',
diff --git a/languages/messages/MessagesGan.php b/languages/messages/MessagesGan.php
index 69872b00..41117356 100644
--- a/languages/messages/MessagesGan.php
+++ b/languages/messages/MessagesGan.php
@@ -17,11 +17,9 @@ $fallback = 'gan-hant';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_MAIN => '',
NS_TALK => 'Talk',
NS_USER => 'User',
NS_USER_TALK => 'User_talk',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_talk',
NS_FILE => 'File',
NS_FILE_TALK => 'File_talk',
@@ -32,2188 +30,13 @@ $namespaceNames = array(
NS_HELP => 'Help',
NS_HELP_TALK => 'Help_talk',
NS_CATEGORY => 'Category',
- NS_CATEGORY_TALK => 'Category_talk'
+ NS_CATEGORY_TALK => 'Category_talk',
);
$messages = array(
-# User preference toggles
-'tog-underline' => '下劃連結',
-'tog-highlightbroken' => '非法連結格式<a href="" class="new">像咁樣</a> (或者像咁樣<a href="" class="internal">?</a>).',
-'tog-justify' => '對到段落',
-'tog-hideminor' => '該朝子嗰改動弆到嗰細修改',
-'tog-extendwatchlist' => '增加監視清單來顯示全部用得正嗰改動,不光係最晏嗰改動',
-'tog-usenewrc' => '更高級嗰最晏嗰改動(JavaScript)',
-'tog-numberheadings' => '標題自動編號',
-'tog-showtoolbar' => '顯示編輯工具欄(JavaScript)',
-'tog-editondblclick' => '按兩下改吖(JavaScript)',
-'tog-editsection' => '可以用[編寫]連結來編寫個別段落',
-'tog-editsectiononrightclick' => '可以按右鍵來編寫隻把子段落(JavaScript)',
-'tog-showtoc' => '超過三隻標題就顯到目錄',
-'tog-rememberpassword' => '到箇隻電腦記到我嗰密碼',
-'tog-editwidth' => '加闊編輯框到適合整個屏幕',
-'tog-watchcreations' => '拿我開嗰頁面加到我嗰監視列表',
-'tog-watchdefault' => '拿我改嗰頁面加到我嗰監視列表',
-'tog-watchmoves' => '拿我動嗰頁面加到我嗰監視列表',
-'tog-watchdeletion' => '拿我刪吥嗰頁面加到我嗰監視列表',
-'tog-minordefault' => '全部嗰編輯設成細修改',
-'tog-previewontop' => '到編輯框嗰上首顯示預覽',
-'tog-previewonfirst' => '頭道修改時顯示預覽',
-'tog-nocache' => '停用頁面嗰緩存',
-'tog-enotifwatchlistpages' => '我監視框嗰頁面一有改動發電子郵件到我',
-'tog-enotifusertalkpages' => '我對話框嗰頁面一有改動發email到我',
-'tog-enotifminoredits' => '有細嗰改動都要發email到我',
-'tog-enotifrevealaddr' => '通知郵件可話到人聽我嗰email地址',
-'tog-shownumberswatching' => '顯示有幾多人監視',
-'tog-fancysig' => '原始簽名(冇自動連接)',
-'tog-externaleditor' => '默認用外部編輯器(專家用嗰功能,要到倷嗰電腦上頭特別嗰設置一下)',
-'tog-externaldiff' => '默認用外部差異比較器(專家用嗰功能,要到倷嗰電腦上頭特別嗰設置一下)',
-'tog-showjumplinks' => '啟用“跳到”訪問連結',
-'tog-uselivepreview' => '使用即時預覽(JavaScript)(實驗中)',
-'tog-forceeditsummary' => '冇改動注解時要同我話',
-'tog-watchlisthideown' => '監視列表弆到我嗰編輯',
-'tog-watchlisthidebots' => '監視列表弆到機器人嗰編輯',
-'tog-watchlisthideminor' => '監視列表弆到細修改',
-'tog-nolangconversion' => '嫑字轉換',
-'tog-ccmeonemails' => '我發email到人家時也發封副本到我',
-'tog-diffonly' => '比較兩隻版本差異嗰時間伓顯示文章嗰內容',
-'tog-showhiddencats' => '顯示弆到嗰分類',
-
-'underline-always' => '總歸要用',
-'underline-never' => '絕伓使用',
-'underline-default' => '瀏覽器預設',
-
-# Dates
-'sunday' => '禮拜天',
-'monday' => '禮拜一',
-'tuesday' => '禮拜二',
-'wednesday' => '禮拜三',
-'thursday' => '禮拜四',
-'friday' => '禮拜五',
-'saturday' => '禮拜六',
-'sun' => '禮拜天',
-'mon' => '禮拜一',
-'tue' => '禮拜二',
-'wed' => '禮拜三',
-'thu' => '禮拜四',
-'fri' => '禮拜五',
-'sat' => '禮拜六',
-'january' => '1月',
-'february' => '2月',
-'march' => '3月',
-'april' => '4月',
-'may_long' => '5月',
-'june' => '6月',
-'july' => '7月',
-'august' => '8月',
-'september' => '9月',
-'october' => '10月',
-'november' => '11月',
-'december' => '12月',
-'january-gen' => '一月',
-'february-gen' => '二月',
-'march-gen' => '三月',
-'april-gen' => '四月',
-'may-gen' => '五月',
-'june-gen' => '六月',
-'july-gen' => '七月',
-'august-gen' => '八月',
-'september-gen' => '九月',
-'october-gen' => '十月',
-'november-gen' => '十一月',
-'december-gen' => '十二月',
-'jan' => '1月',
-'feb' => '2月',
-'mar' => '3月',
-'apr' => '4月',
-'may' => '5月',
-'jun' => '6月',
-'jul' => '7月',
-'aug' => '8月',
-'sep' => '9月',
-'oct' => '10月',
-'nov' => '11月',
-'dec' => '12月',
-
-# Categories related messages
-'pagecategories' => '$1隻分類',
-'category_header' => '「$1」分類裡頭嗰文章',
-'subcategories' => '亞分類',
-'category-media-header' => '「$1」分類裡頭嗰媒體',
-'category-empty' => '「箇隻分類冇包到任何文章或媒體」',
-'hidden-categories' => '{{PLURAL:$1|隻隱藏分類|隻隱藏分類}}',
-'hidden-category-category' => '弆到嗰分類', # Name of the category where hidden categories will be listed
-'category-subcat-count' => '{{PLURAL:$2|箇隻分類淨係有下頭嗰細分類。|箇隻分類有下頭嗰$1隻細分類,攏共有$2類。}}',
-'category-article-count' => '{{PLURAL:$2|箇隻分類淨係有下頭嗰版本。|箇隻分類有下頭嗰$1版本,攏共有$2版。}}',
-'listingcontinuesabbrev' => '續',
-
-'mainpagetext' => "<big>'''安裝正MediaWiki嘍。'''</big>",
-'mainpagedocfooter' => '參看[http://meta.wikimedia.org/wiki/Help:Contents 用戶指南]裡頭會話到啷用wiki軟件
-
-== 開始使用 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki 配置設定列表]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常問題解答]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈email清單]',
-
-'about' => '關於',
-'article' => '文章',
-'newwindow' => '(開隻新窗口)',
-'cancel' => '取消',
-'qbfind' => '尋',
-'qbbrowse' => '查看',
-'qbedit' => '編寫',
-'qbpageoptions' => '箇頁',
-'qbpageinfo' => '箇頁信息',
-'qbmyoptions' => '我嗰選項',
-'qbspecialpages' => '特殊頁',
-'moredotdotdot' => '別嗰...',
-'mypage' => '我嗰頁面',
-'mytalk' => '我嗰對話框',
-'anontalk' => '箇隻IP嗰對話框',
-'navigation' => '導航',
-'and' => '&#32;同到',
-
-# Metadata in edit box
-'metadata_help' => '元數據:',
-
-'errorpagetitle' => '錯誤',
-'returnto' => '回到$1。',
-'tagline' => '出自{{SITENAME}}',
-'help' => '幫助',
-'search' => '尋',
-'searchbutton' => '尋',
-'go' => '去',
-'searcharticle' => '去',
-'history' => '文章歷史',
-'history_short' => '歷史',
-'updatedmarker' => '最末道瀏覽後嗰改動',
-'info_short' => '消息',
-'printableversion' => '可打印版本',
-'permalink' => '永久連結',
-'print' => '打印',
-'edit' => '編寫',
-'create' => '創建',
-'editthispage' => '編寫箇頁',
-'delete' => '刪吥去',
-'deletethispage' => '刪吥箇頁',
-'undelete_short' => '反刪吥$1嗰修改',
-'protect' => '保護',
-'protect_change' => '修改',
-'protectthispage' => '保護箇頁',
-'unprotect' => '解除保護',
-'unprotectthispage' => '解除保護箇頁',
-'newpage' => '新文章',
-'talkpage' => '談吖箇頁',
-'talkpagelinktext' => '談詑',
-'specialpage' => '特殊頁',
-'personaltools' => '個人工具',
-'postcomment' => '新節',
-'articlepage' => '看吖文章',
-'talk' => '談詑',
-'views' => '眵',
-'toolbox' => '工具盒',
-'userpage' => '眵吖用戶頁',
-'projectpage' => '眵吖計劃頁',
-'imagepage' => '眵吖文件頁',
-'mediawikipage' => '眵吖消息頁',
-'templatepage' => '眵吖模板頁',
-'viewhelppage' => '眵吖幫助頁',
-'categorypage' => '眵吖分類頁',
-'viewtalkpage' => '眵吖討論頁',
-'otherlanguages' => '別嗰話',
-'redirectedfrom' => '(從$1跳過來)',
-'redirectpagesub' => '跳轉頁',
-'lastmodifiedat' => '箇頁最晏嗰改動係:$1 $2。', # $1 date, $2 time
-'viewcount' => '箇頁拕人眵嘞$1回。',
-'protectedpage' => '拕保護頁',
-'jumpto' => '跳到:',
-'jumptonavigation' => '導航',
-'jumptosearch' => '尋',
-
-# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => '關於 {{SITENAME}}',
-'aboutpage' => 'Project:關於',
-'copyright' => '箇版嗰內容係根據$1嗰條款發佈。',
-'copyrightpagename' => '{{SITENAME}} 版權',
-'copyrightpage' => '{{ns:project}}:版權資訊',
-'currentevents' => '新出嗰事',
-'currentevents-url' => 'Project:新出嗰事',
-'disclaimers' => '免責聲明',
-'disclaimerpage' => 'Project:免責聲明',
-'edithelp' => '編寫幫助',
-'edithelppage' => 'Help:啷編寫文章',
-'faq' => 'FAQ',
-'faqpage' => 'Project:問得蠻多嗰問題',
-'helppage' => 'Help:説明',
-'mainpage' => '封面',
-'mainpage-description' => '封面',
-'policy-url' => 'Project:政策',
-'portal' => '社區',
-'portal-url' => 'Project:社區',
-'privacy' => '隱私政策',
-'privacypage' => 'Project:隱私政策',
-
-'badaccess' => '許可權錯誤',
-'badaccess-group0' => '倷嗰要求冇拕批准。',
-'badaccess-groups' => '倷嗰要求單$1嗰用戶才扤得正。',
-
-'versionrequired' => '需要$1版嗰mediawiki',
-'versionrequiredtext' => '$1版嗰mediawiki才用得正箇頁。參看[[Special:Version|版本頁]]。',
-
-'ok' => '做得',
-'retrievedfrom' => '版本頁 "$1"',
-'youhavenewmessages' => '倷有 $1 ($2).',
-'newmessageslink' => '新消息',
-'newmessagesdifflink' => '最晏嗰改動',
-'youhavenewmessagesmulti' => '$1 上有倷嗰新消息',
-'editsection' => '編寫',
-'editold' => '編寫',
-'viewsourceold' => '眵吖原始碼',
-'editlink' => '編輯',
-'viewsourcelink' => '望吖原碼',
-'editsectionhint' => '編寫段落: $1',
-'toc' => '目錄',
-'showtoc' => '敨開',
-'hidetoc' => '收到',
-'thisisdeleted' => '眵吖或還原$1?',
-'viewdeleted' => '眵吖$1?',
-'restorelink' => '$1隻拕刪吥嗰版本',
-'feedlinks' => '鎖定:',
-'feed-invalid' => '冇用嗰鎖定類型。',
-'feed-unavailable' => '同步訂閱源冇得用',
-'site-rss-feed' => '$1嗰RSS訊息',
-'site-atom-feed' => '$1嗰Atom訊息',
-'page-rss-feed' => '"$1"嗰RSS訊息',
-'page-atom-feed' => '"$1" Atom Feed',
-'red-link-title' => '$1 (哈冇開始寫)',
-
-# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => '文章',
-'nstab-user' => '用戶頁',
-'nstab-media' => '媒體頁',
-'nstab-special' => '特殊頁',
-'nstab-project' => '計劃頁',
-'nstab-image' => '檔案',
-'nstab-mediawiki' => '消息',
-'nstab-template' => '模版',
-'nstab-help' => '説明頁',
-'nstab-category' => '分類',
-
-# Main script and global functions
-'nosuchaction' => '冇有箇隻命令',
-'nosuchactiontext' => 'Wiki識別伓到箇隻URL命令',
-'nosuchspecialpage' => '冇有箇隻特殊頁',
-'nospecialpagetext' => "<big>'''倷要求嗰特殊頁冇有用。'''</big>
-
-[[Special:SpecialPages]]上尋得到用得上嗰特殊頁。",
-
-# General errors
-'error' => '錯誤',
-'databaseerror' => '資料庫錯誤',
-'dberrortext' => '資料庫查詢語法有錯。
-可能係軟件有錯。
-最晏嗰資料庫指令係:
-<blockquote><tt>$1</tt></blockquote>
-來自函數 "<tt>$2</tt>"。
-MySQL回到錯誤 "<tt>$3: $4</tt>"。',
-'dberrortextcl' => '資料庫查詢語法有錯。
-最晏嗰資料庫指令係:
-“$1”
-來自函數“$2”。
-MySQL回到錯誤“$3: $4”。',
-'noconnect' => '對伓住!wiki碰到嘞技術問題,連伓到資料庫服務器。<br />
-$1',
-'nodb' => '選伓正服務器 $1',
-'cachederror' => '底下係請求頁嗰緩存副本,可能伓係最新嗰。',
-'laggedslavemode' => '警告:頁面可能冇有新近內容。',
-'readonly' => '資料庫上正鎖囉',
-'enterlockreason' => '請輸入鎖到資料庫嗰理由,包括預計幾時間解鎖',
-'readonlytext' => '資料庫上嘞鎖改伓正,可能佢正維修中,搞正嘞仰上會還原。管理員嗰解釋: $1',
-'missing-article' => '資料庫冇尋到倷要嗰版面,「$1」 $2。
-
-通常箇係因為修訂歷史頁上頭,過時嗰連結連到刪吥嗰版面咁舞得嗰。
-
-如果不係咁,倷可能係尋到軟件裡頭嗰bug。
-請記得 URL 嗰地址,向[[Special:ListUsers/sysop|管理員]]報告。',
-'missingarticle-rev' => '(修訂#: $1)',
-'missingarticle-diff' => '(差異: $1, $2)',
-'readonly_lag' => '附屬資料庫服務器拿緩存更新到主服務器,資料庫自動鎖到嘞',
-'internalerror' => '內部錯誤',
-'internalerror_info' => '內部錯誤: $1',
-'filecopyerror' => '複製伓正檔案 "$1" 到 "$2"。',
-'filerenameerror' => '重命名伓正檔案 "$1" 到 "$2"。',
-'filedeleteerror' => '刪伓正檔案 "$1"。',
-'directorycreateerror' => '創建伓正目錄 "$1"。',
-'filenotfound' => '尋伓到檔案 "$1"。',
-'fileexistserror' => '文件 "$1" 寫伓正進去:佢已存在',
-'unexpected' => '伓正常值: "$1"="$2"。',
-'formerror' => '錯誤:交伓正表格',
-'badarticleerror' => '箇隻操作到箇頁用伓正。',
-'cannotdelete' => '揀正嗰頁面或圖像刪伓正。(佢可能拕人家刪吥嘞。)',
-'badtitle' => '錯誤嗰標題',
-'badtitletext' => '所要求嗰頁面標題伓正確,伓存在,跨語言或跨wiki連結。標題錯誤,佢可能有隻或好幾隻伓合嗰標題字符。',
-'perfcached' => '底下係緩存資料,可能伓係最新嗰。',
-'perfcachedts' => '底下係緩存資料,佢最晏更新嗰時間係 $1。',
-'querypage-no-updates' => '箇頁目前改伓正,佢嗰資料伓能仰上更新。',
-'wrong_wfQuery_params' => '參數錯誤斢到嘞 wfQuery()<br />
-函數: $1<br />
-查詢: $2',
-'viewsource' => '原始碼',
-'viewsourcefor' => '$1 嗰原始碼',
-'protectedpagetext' => '箇頁鎖到嘞,改伓正。',
-'viewsourcetext' => '倷可以眵吖或複製箇頁嗰原始碼:',
-'protectedinterface' => '箇頁給正嘞軟件嗰界面文本,佢拕鎖到怕人亂扤。',
-'editinginterface' => "!!糊糊涂涂!!'''警告''':倷編寫嗰頁面係用來提供軟件嗰界面文本,改動箇頁會礙到別嗰用戶嗰界面外觀。",
-'sqlhidden' => '(SQL 弆到嗰查詢)',
-'cascadeprotected' => '箇頁已拕保護,因為佢拕「聯鎖保護」嗰{{PLURAL:$1|一隻|幾隻}}拕保護頁包到:
-$2',
-'namespaceprotected' => "倷冇權編寫'''$1'''空間裡度嗰頁面。",
-'customcssjsprotected' => '倷冇權編寫箇頁,佢含到別嗰用戶嗰個人設定。',
-'ns-specialprotected' => '編寫伓正{{ns:special}}空間嗰頁面。',
-
-# Virus scanner
-'virus-unknownscanner' => '不曉得嗰防病毒:',
-
-# Login and logout pages
-'logouttitle' => '用戶退出',
-'logouttext' => "'''倷退出正嘞。'''
-
-倷可以接到匿名使用{{SITENAME}},或重登入過,隻把子頁面可能會接到話倷係登入狀態,除非係倷刪吥瀏覽器緩存。",
-'welcomecreation' => '== 歡迎, $1! ==
-
-建正嘞倷嗰帳戶,莫忘吥設置{{SITENAME}}嗰個人參數。',
-'loginpagetitle' => '用戶登入',
-'yourname' => '用戶名:',
-'yourpassword' => '密碼:',
-'yourpasswordagain' => '輸過道密碼:',
-'remembermypassword' => '讓電腦記到密碼',
-'yourdomainname' => '倷嗰域名:',
-'externaldberror' => '外部驗證資料庫出錯,或倷更新伓正倷嗰外部帳戶。',
-'login' => '登入',
-'nav-login-createaccount' => '登入/新開隻帳戶',
-'loginprompt' => '要開到cookies才登入得正{{SITENAME}}。',
-'userlogin' => '登入/新開隻帳戶',
-'logout' => '退出',
-'userlogout' => '退出',
-'notloggedin' => '冇登入',
-'nologin' => '倷冇得帳戶啊? $1。',
-'nologinlink' => '新開隻帳戶',
-'createaccount' => '新開隻帳戶',
-'gotaccount' => '有嘍帳戶? $1.',
-'gotaccountlink' => '登入',
-'createaccountmail' => '通過email',
-'badretype' => '倷輸嗰密碼伓合。',
-'userexists' => '倷輸嗰用戶名係人家嗰,選過隻嘍!',
-'youremail' => '電子郵件:',
-'username' => '用戶名:',
-'uid' => '用戶ID:',
-'yourrealname' => '真名:',
-'yourlanguage' => '語言:',
-'yourvariant' => '轉換字體',
-'yournick' => '簽名:',
-'badsig' => '原始簽名錯誤,請檢查HTML。',
-'badsiglength' => '花名咁長?佢嗰長度要少過$1隻字符。',
-'email' => '電子郵件',
-'prefs-help-realname' => '真名係選填嗰,要係倷填嘞,倷嗰作品就會標到倷嗰名字。',
-'loginerror' => '登入錯誤',
-'prefs-help-email' => 'email係選填嗰,佢可以讓伓認得倷嗰人通過email聯繫正倷。',
-'prefs-help-email-required' => '需要電子郵件地址。',
-'nocookiesnew' => '帳戶扤正嘞!測到倷關吥嘞Cookies,麻煩倷開到佢登入過。',
-'nocookieslogin' => '箇首要用 Cookies 登入,測到倷關吥嘞Cookies,麻煩倷開到佢登入過。',
-'noname' => '倷冇輸正有效嗰用戶名。',
-'loginsuccesstitle' => '登入正嘞',
-'loginsuccess' => '倷搦到"$1"嗰身份登到{{SITENAME}}。',
-'nosuchuser' => '箇首冇叫"$1"嗰用戶。望吖倷嗰拼寫,要伓建過隻新帳戶。',
-'nosuchusershort' => '箇首冇叫"<nowiki>$1</nowiki>"嗰用戶。請望吖倷嗰拼寫。',
-'nouserspecified' => '倷要指正一隻用戶名。',
-'wrongpassword' => '倷輸嗰密碼錯誤伓對,請試過吖囉。',
-'wrongpasswordempty' => '倷冇輸入密碼,請試過吖囉。',
-'passwordtooshort' => '倷嗰密碼伓對或太短嘞,佢最少要有$1隻字符,哈要同用戶名伓一樣。',
-'mailmypassword' => '寄隻新密碼',
-'passwordremindertitle' => '{{SITENAME}}嗰密碼提醒',
-'passwordremindertext' => '有人(可能係倷,IP位址$1)要我俚拿新嗰{{SITENAME}} ($4) 嗰登入密碼寄到倷。眼下用戶"$2"嗰密碼係"$3"。請仰上就登入同到換吥密碼。箇隻密碼回到{{PLURAL:$5|一日|$5日}}之後失效
-
-要係別嗰人發嗰請求,或者倷尋回嘞倷嗰密碼,伓想改佢,倷可以嫑搭箇隻消息,繼續用舊密碼。',
-'noemail' => '冇有用戶"$1"嗰email地址。',
-'passwordsent' => '新嗰密碼已經寄到用戶"$1"嗰email去嘍。收到後請再登入過。',
-'blocked-mailpassword' => '倷嗰IP地址拕封到嘞。用伓正密碼復原功能以防亂用。',
-'eauthentsent' => '確認email寄到話正嗰地址去嘍。別嗰email發到箇隻帳戶之前,倷起先要按箇封email話嗰佢係否倷嗰。',
-'throttled-mailpassword' => '$1嗰鐘頭前發出嘞密碼提醒。怕別嗰人亂扤,$1嗰鐘頭之內就只會發一隻密碼提醒。',
-'mailerror' => '發送email錯誤: $1',
-'acct_creation_throttle_hit' => '對伓住,倷建嘞$1隻帳號。倷再建伓正囉。',
-'emailauthenticated' => '倷嗰電子郵件地址到$2 $3拕確認為係有效嗰。',
-'emailnotauthenticated' => '倷嗰email<strong>哈冇拕認證</strong>。底下嗰功能都伓會發任何郵件。',
-'noemailprefs' => '話正隻email來用箇隻功能',
-'emailconfirmlink' => '確認倷嗰email',
-'invalidemailaddress' => '電子郵件地址嗰格式伓對,請輸隻對嗰電子郵件地址或者清吥箇隻輸入框。',
-'accountcreated' => '帳戶扤正嘍',
-'accountcreatedtext' => '扤正嘍$1嗰帳戶。',
-'createaccount-title' => '到{{SITENAME}}創建嗰帳戶',
-'createaccount-text' => '有人到{{SITENAME}}用倷嗰電子郵件地址開設嘍隻名字係 "$2" 嗰新帳戶($4),密碼係 "$3" 。請倷仰上登錄同到修改密碼。
-
-要係帳戶創建不對嗰話,倷就莫搭箇隻消息。',
-'loginlanguagelabel' => '語言: $1',
-
-# Password reset dialog
-'resetpass' => '設過密碼',
-'resetpass_announce' => '倷係用到臨時email嗰代碼登入嗰。要登正入,倷要到箇首設定隻新密碼:',
-'resetpass_header' => '設過帳戶密碼',
-'oldpassword' => '老密碼:',
-'newpassword' => '新密碼:',
-'retypenew' => '確認密碼:',
-'resetpass_submit' => '設定密碼同到登入',
-'resetpass_success' => '倷嗰密碼改正嘍!正幫倷登入...',
-'resetpass_bad_temporary' => '冇用嗰臨時密碼。可能倷改正嘞倷嗰密碼,或者重新要過隻新嗰臨時密碼。',
-'resetpass_forbidden' => '到{{SITENAME}}上改伓正密碼',
-
-# Edit page toolbar
-'bold_sample' => '粗體字',
-'bold_tip' => '粗體字',
-'italic_sample' => '斜體字',
-'italic_tip' => '斜體字',
-'link_sample' => '連結標題',
-'link_tip' => '內部連結',
-'extlink_sample' => 'http://www.example.com 連結標題',
-'extlink_tip' => '外部連結(頭上加 http://)',
-'headline_sample' => '標題文字',
-'headline_tip' => '二級標題',
-'math_sample' => '到箇首扻入數學公式',
-'math_tip' => '數學公式 (LaTeX)',
-'nowiki_sample' => '到箇首扻入非格式文本',
-'nowiki_tip' => '扻入非格式文本',
-'image_tip' => '扻進文件',
-'media_tip' => '檔案連結',
-'sig_tip' => '倷帶時間嗰簽名',
-'hr_tip' => '橫線 (好生使用)',
-
-# Edit pages
-'summary' => '摘要:',
-'subject' => '主題/頭條:',
-'minoredit' => '箇係隻細修改',
-'watchthis' => '眏到箇頁',
-'savearticle' => '存到著',
-'preview' => '預覽',
-'showpreview' => '望吖起',
-'showlivepreview' => '即時預覽',
-'showdiff' => '望吖差別',
-'anoneditwarning' => "'''警告:'''倷哈冇登入,箇頁嗰編寫歷史會記到倷嗰IP。",
-'missingsummary' => "'''提示:''' 倷冇提供編寫摘要。要係倷再按係保存嗰話,倷保存嗰編輯就會冇編輯摘要。",
-'missingcommenttext' => '請到底下評論。',
-'missingcommentheader' => "'''提示:''' 倷嗰評論冇提供標題。要係倷再按係保存嗰話,倷保存嗰編輯就會冇標題。",
-'summary-preview' => '摘要預覽:',
-'subject-preview' => '主題/頭條預覽:',
-'blockedtitle' => '用戶封到嘞',
-'blockedtext' => "<big>倷嗰用戶名或IP地址拕$1封到嘞。</big>
-
-箇道封鎖係$1封嗰。個中原因係''$2''。
-
-* 箇回封鎖嗰開始時間係:$8
-* 箇回封鎖嗰到期時間係:$6
-* 對於拕查封嗰人:$7
-
-倷聯繫得正$1或別嗰[[{{MediaWiki:Grouppage-sysop}}|管理員]],討論箇回封鎖。除非倷到倷嗰[[Special:Preferences|帳號參數設置]]裡度設正嘞有效嗰email,伓然嗰話倷係用伓正「email到箇隻用戶」嗰功能。設正嘞有效嗰email後,箇隻功能係伓會拕封到嗰。倷嗰IP地址係$3,許拕封到嗰ID係 #$5。請倷到全部嗰查詢裡度注明箇隻地址同/或查封ID。",
-'autoblockedtext' => '別嗰人用過倷嗰IP地址,故係佢拕自動鎖到嘞。封佢嗰人係$1.
-下首係封鎖嗰理由:
-
-:\'\'$2\'\'
-
-* 封鎖開始: $8
-* 封鎖過期: $6
-
-倷聯繫得正$1或別嗰[[{{MediaWiki:Grouppage-sysop}}|管理員]]去談下箇道封鎖。
-
-注意嗰係話伓定倷冇"e-mail箇隻用戶"嗰功能,除非倷到[[Special:Preferences|用戶設置]]有隻註冊email地址,再就係倷冇因為用佢拕封過。
-
-倷嗰封鎖ID係$5。請到查詢嗰時間都要緊標到佢。',
-'blockednoreason' => '冇話理由',
-'blockedoriginalsource' => "底下係'''$1'''嗰原始碼:",
-'blockededitsource' => "底下係倷對'''$1'''嗰'''編輯'''內容:",
-'whitelistedittitle' => '登入後才編得正',
-'whitelistedittext' => '起先倷要$1才編得正箇頁。',
-'confirmedittitle' => 'email確認後才編得正',
-'confirmedittext' => '確認嘞email才能編寫箇頁。麻煩用[[Special:Preferences|參數設置]]設置同確認倷嗰email。',
-'nosuchsectiontitle' => '冇箇隻段落',
-'nosuchsectiontext' => '倷嘗試編寫嗰段落伓存在。到箇首係冇第$1隻段落,所以係冇場窪去存到倷嗰編輯。',
-'loginreqtitle' => '需要登入',
-'loginreqlink' => '登入',
-'loginreqpagetext' => '倷要$1才眵得正別嗰頁面。',
-'accmailtitle' => '密碼寄出嘞',
-'accmailtext' => "'$1'嗰密碼發到$2嘞。",
-'newarticle' => '(新)',
-'newarticletext' => '倷連到嗰頁面伓存在。要新開箇隻頁面,倷能到下底嗰方框編寫內容(細節請望[[Help:説明|説明]])。要係倷伓係特試來到箇首,按吖瀏覽器嗰“返回”即可。',
-'anontalkpagetext' => "---- ''箇係匿名用戶嗰討論頁,話伓定佢哈冇開隻帳戶。別人單用得正IP地址同佢聯繫。箇隻IP地址可能有好幾隻用戶共用。如果倷係匿名用戶,覺得箇頁嗰內容同倷冇關,歡迎去[[Special:UserLogin|開隻新帳戶或登入]],省得同別嗰匿名用戶扤混來。''",
-'noarticletext' => '眼下箇頁哈冇內容,倷可以到別嗰頁面裡頭[[Special:Search/{{PAGENAME}}|尋吖箇頁嗰標題]],
-<span class="plainlinks">[{{fullurl:Special:Log|page={{urlencode:{{FULLPAGENAME}}}}}} 尋吖有關嗰日誌],
-或者[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編寫箇頁]</span>。',
-'clearyourcache' => "'''注意:''' 保存之後, 倷要清吥瀏覽器嗰緩存才眵得正改嗰內容。 '''Mozilla / Firefox / Safari:''' 按到 ''Shift'' 接到按''刷新''(或按吖''Ctrl-Shift-R'',到蘋果Mac上按''Cmd-Shift-R'');'''IE:''' 按到 ''Ctrl''接到按''刷新'',或按吖''Ctrl-F5'';'''Konqueror:''' 單只要按 ''刷新'';'''Opera:''' 用戶要到 ''工具-設置'' 完全嗰清除緩存。",
-'usercssjsyoucanpreview' => "'''提示:''' 存到前請用'望吖起'來測吖倷嗰新CSS/JS 。",
-'usercsspreview' => "'''注意倷單係到預覽倷個人嗰 CSS,內容哈冇保存!'''",
-'userjspreview' => "'''注意倷單係到測試/預覽倷個人嗰 JavaScript,內容哈冇保存!'''",
-'userinvalidcssjstitle' => "'''警告:''' 冇\"\$1\"嗰皮膚。請記到自定義嗰 .css 同 .js 頁要用小寫。就話,{{ns:user}}:Foo/monobook.css 伓等同 {{ns:user}}:Foo/Monobook.css。",
-'updated' => '(更新正嘍)',
-'note' => "'''注意:'''",
-'previewnote' => "'''請記到箇光係預覽,內容哈冇保存!'''",
-'previewconflict' => '箇隻預覽係上首文字編輯區嗰內容。倷選擇保存嗰話佢才會保存到。',
-'session_fail_preview' => "'''對伓住!箇隻段落嗰資料跌吥嘞,我個俚處理伓正倷嗰編輯。請試過吖。哈係扤伓正嗰話,試吖退出後登入過。'''",
-'session_fail_preview_html' => "'''對伓住!相關嗰程式資料跌吥嘞,我個俚處理伓正倷嗰編輯。'''
-
-''箇隻{{SITENAME}}開放正嘞原HTML碼,預覽弆到嘞以防止JavaScript嗰攻擊。''
-
-'''要係佢係合法編輯嗰,請試過吖。哈係扤伓正嗰話,試吖[[Special:UserLogout|退出]]後登入過。'''",
-'token_suffix_mismatch' => "'''倷嗰用戶端嗰編輯信毀吥嘞嚸標點符號字符,噉嗰話倷嗰編輯就拕拒絕嘞。
-箇種情況通常係含到好多臭蟲、以網絡為主嗰匿名代理服務扤得。'''",
-'editing' => '編輯嘚$1',
-'editingsection' => '編輯嘚$1 (段落)',
-'editingcomment' => '編輯嘚$1 (新段落)',
-'editconflict' => '編輯仗: $1',
-'explainconflict' => "倷起手編輯之後有人動過箇頁。
-上首嗰方框顯示嗰係眼下本頁嗰內容。
-倷嗰修改到下底嗰方框顯示。
-倷要拿倷嗰修改并到現存嗰內容。
-'''單只係'''上首方框嗰內容會等倷按\"存到著\"之後拕保存。",
-'yourtext' => '倷編嗰內容',
-'storedversion' => '存到嗰版本',
-'nonunicodebrowser' => "'''警告:倷嗰瀏覽器伓兼容Unicode。箇度有隻辦法方便倷安全嗰編寫得正文章:伓係ASCII嗰字符會到編輯框裡度用十六進位編碼顯到。'''",
-'editingold' => "'''警告:倷於今正編寫箇頁嗰舊版本。
-要係倷存到佢嗰話,箇隻版本嗰全部改動會都跌吥去。'''",
-'yourdiff' => '差異',
-'copyrightwarning' => "請記得到{{SITENAME}}嗰全部貢獻會拕認為係$2之下發出嗰(望吖$1有別嗰資料)。要係倷伓想自家嗰編輯好嚟嚟拕亂扤吥,唉就莫遞交。<br />
-倷都要話正倷嗰文字係倷自家寫嗰,或者係公有領域或別嗰自由資源複製到嗰。<br />
-'''冇任何許可嗰情況下請莫遞交有版權嗰作品!'''",
-'copyrightwarning2' => "請記得別嗰人編得正、改得正或者刪得正倷到{{SITENAME}}嗰全部貢獻。要係倷伓想自家嗰編輯好嚟嚟拕改吥,唉就莫遞交。<br />
-倷都要話正倷嗰文字係倷自家寫嗰,或者係公有領域或別嗰自由資源複製到嗰(望吖$1有別嗰資料)。
-'''冇任何許可嗰情況下請莫遞交有版權嗰作品!'''",
-'longpagewarning' => "'''警告:箇頁有$1 kilobytes咁長;有嗰瀏覽器會編伓正超吥32 kb嗰頁面。
-請考慮吖拿佢分到細嚸嗰小段落。'''",
-'longpageerror' => "'''錯誤:倷遞交嗰文字有$1 kilobytes咁長,佢長過最大嗰$2 kilobytes。存伓正倷遞交嗰文字。'''",
-'readonlywarning' => "'''警告: 資料庫鎖到嘞進行定期修護,眼下倷存伓正倷嗰改動。倷可以拿佢存到文檔再著。'''",
-'protectedpagewarning' => "'''警告: 箇頁已經受保護,單只管理員許可權嗰用戶才改得正。'''",
-'semiprotectedpagewarning' => "'''注意:'''箇頁拕鎖到嘞,單只註冊用戶編得正。",
-'cascadeprotectedwarning' => '警告: 箇頁已經受保護,單只管理員許可權嗰用戶才改得正,因為箇頁同底下嗰連鎖保護嗰{{PLURAL:$1|一隻|多隻}}頁面包到嘞:',
-'titleprotectedwarning' => "'''警告:箇隻頁鎖到嘍,只有一滴子人才建得正。'''",
-'templatesused' => '箇隻頁面使用嗰模板有:',
-'templatesusedpreview' => '箇隻預覽使用嗰模板有:',
-'templatesusedsection' => '箇隻段落使用嗰模板有:',
-'template-protected' => '(保護)',
-'template-semiprotected' => '(半保護)',
-'hiddencategories' => '箇隻版面係屬於$1隻隱藏類嗰成員:',
-'edittools' => '<!--箇首嗰文本會到下底嗰編輯同上傳列表裡坨顯示。 -->',
-'nocreatetitle' => '新建頁面拕限制',
-'nocreatetext' => '箇隻網站限制新建頁面嗰功能。倷可以回頭去編輯有嘞嗰頁面,或者[[Special:UserLogin|登入或新開帳戶]]。',
-'nocreate-loggedin' => '倷到 {{SITENAME}} 冇權新開頁面。',
-'permissionserrors' => '許可權錯誤',
-'permissionserrorstext' => '根據底下嗰{{PLURAL:$1|原因|原因}},倷冇許可權去扤:',
-'permissionserrorstext-withaction' => '根據下頭嗰{{PLURAL:$1|原因|原因}},你冇權力去舞$2:',
-'recreate-deleted-warn' => "'''警告: 倷正重建一隻之前拕刪吥嗰頁面。'''
-
-倷應該要考慮吖繼續編輯箇頁面係否有必要。
-為到方便,箇頁嗰刪除記錄已經到下底提供:",
-
-# "Undo" feature
-'undo-success' => '箇隻編輯可以拕取銷。請檢查吖以確定箇係倷想扤嗰,接到保存修改去完成撤銷編輯。',
-'undo-failure' => '半中嗰編輯有人挭仗,箇隻編輯伓可以拕取銷。',
-'undo-summary' => '取消由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])所修訂嗰 $1',
-
-# Account creation failure
-'cantcreateaccounttitle' => '新開伓正帳戶',
-'cantcreateaccount-text' => "IP 位址伓能 ('''$1''') 新開帳戶。箇可能係因為經常有來自倷嗰學堂或網絡供應商 (ISP)故意嗰破壞扤得。",
-
-# History pages
-'viewpagelogs' => '眵吖箇頁嗰日誌',
-'nohistory' => '箇頁冇修改歷史。',
-'currentrev' => '眼前嗰修改版本',
-'currentrev-asof' => '到 $1 嗰眼下改動',
-'revisionasof' => '$1嗰修改版本',
-'revision-info' => '$2到$1扤嗰修訂版本', # Additionally available: $3: revision id
-'previousrevision' => '←之前嗰修改',
-'nextrevision' => '接到嗰修改→',
-'currentrevisionlink' => '眼前嗰修改',
-'cur' => '眼前',
-'next' => '之後',
-'last' => '之前',
-'page_first' => '最早',
-'page_last' => '最晏',
-'histlegend' => '差異選擇: 標到伓同版本嗰單選鍵,接到按吖督上嗰鍵比較下。<br />
-說明: (眼下) 指同目前版本嗰比較,(之前) 指同之前修改版本嗰比較,細 = 細修改。',
-'history-fieldset-title' => '瀏覽歷史',
-'deletedrev' => '[拕刪除]',
-'histfirst' => '最早版本',
-'histlast' => '最晏版本',
-'historysize' => '({{PLURAL:$1|1 字節|$1 字節}})',
-'historyempty' => '(空)',
-
-# Revision feed
-'history-feed-title' => '修改歷史',
-'history-feed-description' => '本站箇頁嗰修改歷史',
-'history-feed-item-nocomment' => '$1到$2', # user at time
-'history-feed-empty' => '要求嗰頁面伓存在。佢可能拕刪吥嘞或改嘞名。試吖[[Special:Search|到本站尋]]有關嗰新頁面內容。',
-
-# Revision deletion
-'rev-deleted-comment' => '(注釋挪吥嘞)',
-'rev-deleted-user' => '(用戶名挪吥嘞)',
-'rev-deleted-event' => '(項目挪吥嘞)',
-'rev-deleted-text-permission' => '箇頁嗰改動從共用文檔挪吥嘞。到[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 刪除日誌] 裡度倷話伓定有詳細嗰資料。',
-'rev-deleted-text-view' => '箇頁嗰改動從共用文檔挪吥嘞。作為本站嗰管理員,倷查看得正;到[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 裡度有詳細嗰資料。',
-'rev-delundel' => '顯示/弆到',
-'revisiondelete' => '刪除/反刪除修改',
-'revdelete-nooldid-title' => '冇目標修訂',
-'revdelete-nooldid-text' => '倷冇话箇隻操作嗰目标修改。',
-'revdelete-selected' => "'''揀'''$1'''嗰$2回修訂:'''",
-'logdelete-selected' => "'''揀'''$1'''嗰$2隻日誌事件:'''",
-'revdelete-text' => "'''刪吥嗰改動哈會到頁面歷史裡頭顯示, 但公眾瀏覽伓正佢嗰內容。'''
-
-箇站別嗰管理員哈係能眵吖弆到嗰內容,同到通過同佢一樣嗰界面恢復刪除,除非設正嘞附加嗰限制。",
-'revdelete-legend' => '設置可見性嗰限制',
-'revdelete-hide-text' => '弆到修改內容',
-'revdelete-hide-name' => '弆到動作同目標',
-'revdelete-hide-comment' => '弆到編輯說明',
-'revdelete-hide-user' => '弆到編者嗰用戶名/IP',
-'revdelete-hide-restricted' => '同樣嗰限制應用到管理員,接到鎖定箇隻界面',
-'revdelete-suppress' => '同時壓到由操作員同別嗰用戶嗰資料',
-'revdelete-hide-image' => '弆到檔內容',
-'revdelete-unsuppress' => '移吥恢復正嗰改動嗰限制',
-'revdelete-log' => '日誌說明:',
-'revdelete-submit' => '應用到選正嗰修改',
-'revdelete-logentry' => '已更改[[$1]]嗰修改可見性',
-'logdelete-logentry' => '已更改[[$1]]嗰事件可見性',
-'revdelete-success' => "'''修訂嗰可見性設置正嘍。'''",
-'logdelete-success' => "'''事件嗰可見性設置正嘍。'''",
-'revdel-restore' => '改動可見性',
-'deletedhist' => '刪吥嗰歷史',
-'revdelete-hid' => '弆到 $1',
-
-# History merging
-'mergehistory' => '合併頁面嗰歷史',
-'mergehistory-box' => '合併兩隻頁面嗰版本:',
-'mergehistory-from' => '來嗰頁面:',
-'mergehistory-into' => '要去嗰頁面:',
-'mergehistory-list' => '合併得正嗰修改歷史',
-'mergehistory-go' => '顯示合併得正嗰修改',
-'mergehistory-submit' => '合併版本',
-'mergehistory-empty' => '冇版本合併得正.',
-'mergehistory-no-source' => '冇箇隻 $1 來嗰頁面。',
-'mergehistory-no-destination' => '冇箇隻 $1 要去嗰頁面。',
-'mergehistory-invalid-source' => '來嗰頁面題目要寫正。',
-'mergehistory-invalid-destination' => '要去嗰頁面題目要寫正。',
-
-# Merge log
-'mergelog' => '合併記錄',
-'revertmerge' => '伓合併',
-
-# Diffs
-'history-title' => '歷史版本嗰 "$1"',
-'difference' => '(修改之間差異)',
-'lineno' => '第$1行:',
-'compareselectedversions' => '比較揀正嗰版本',
-'editundo' => '還原',
-'diff-multi' => '($1回半中間嗰改動伓會顯示。)',
-
-# Search results
-'searchresults' => '尋到嗰結果',
-'searchresults-title' => '對"$1"尋到嗰結果',
-'searchresulttext' => '有關嗰{{SITENAME}}嗰更多資料,請參看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => '倷用\'\'\'[[:$1]]\'\'\'尋([[Special:Prefixindex/$1|全部由 "$1" 開始嗰頁面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|全部連到 "$1" 嗰頁面]])',
-'searchsubtitleinvalid' => "用'''$1'''尋",
-'noexactmatch' => "'''冇尋到標題係\"\$1\"嗰頁面。''' 倷可以[[:\$1|新開箇隻頁面]]。",
-'noexactmatch-nocreate' => "'''冇題目係 \"\$1\" 嗰頁面'''",
-'toomanymatches' => '返回多傷嘍嗰結果,請試吖用別嗰詞語尋過',
-'titlematches' => '文章標題符合',
-'notitlematches' => '冇頁面同文章標題符合',
-'textmatches' => '頁面內容符合',
-'notextmatches' => '冇頁面內容符合',
-'prevn' => '前$1隻',
-'nextn' => '後$1隻',
-'viewprevnext' => '眵吖($1) ($2) ($3)',
-'searchhelp-url' => 'Help:説明',
-'search-result-size' => '$1 ($2隻字)',
-'search-redirect' => '(重定向 $1)',
-'search-section' => '(小節 $1)',
-'search-suggest' => '倷係要尋:$1',
-'search-interwiki-caption' => '姊妹計劃',
-'search-interwiki-default' => '$1隻結果:',
-'search-interwiki-more' => '(更多)',
-'search-mwsuggest-enabled' => '有建議',
-'search-mwsuggest-disabled' => '冇建議',
-'showingresults' => '底下從第<b>$2</b>條顯示起先嗰<b>$1</b>條結果:',
-'showingresultsnum' => '底下從第<b>$2</b>條顯示起先嗰<b>$3</b>條結果:',
-'showingresultstotal' => "下頭顯示到由第'''$1{{PLURAL:$4|| - $2}}'''項,攏共'''$3'''項嗰結果",
-'nonefound' => "'''注意''': 只有滴把子空間名係會做為預設去尋。較下''all:''去尋全部嗰內容(包到討論版、模版等),或用需要嗰空間名做前綴。",
-'powersearch' => '高級尋',
-'powersearch-legend' => '高級搜尋',
-'powersearch-ns' => '到名子空間裡頭尋:',
-'powersearch-redir' => '重定向嗰表單',
-'powersearch-field' => '尋',
-'searchdisabled' => '{{SITENAME}}嗰搜索功能已經關閉。倷可以用Google尋吖。但係佢嗰索引可能係早先嗰。',
-
-# Preferences page
-'preferences' => '參數設置',
-'mypreferences' => '我嗰參數設置',
-'prefs-edits' => '編輯數:',
-'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '倷要[[Special:UserLogin|登入]]後才設得正個人參數。',
-'prefsreset' => '參數已經拕重新設過。',
-'qbsettings' => '快捷導航條',
-'qbsettings-none' => '冇',
-'qbsettings-fixedleft' => '左首固定',
-'qbsettings-fixedright' => '右首固定',
-'qbsettings-floatingleft' => '左首漂移',
-'qbsettings-floatingright' => '左首漂移',
-'changepassword' => '改過密碼',
-'skin' => '皮',
-'skin-preview' => '(預覽)',
-'math' => '數學公式',
-'dateformat' => '日期格式',
-'datedefault' => '默認項目',
-'datetime' => '日期同到時間',
-'math_failure' => '分析失敗',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => '句法錯誤',
-'math_syntax_error' => '文法錯誤',
-'math_image_error' => 'PNG轉換失敗;請檢查係否裝正嘞latex, dvips, gs同到convert',
-'math_bad_tmpdir' => '寫伓正或建伓正數學公式臨時目錄',
-'math_bad_output' => '寫伓正或建伓正數學公式輸出目錄',
-'math_notexvc' => '執行伓正"texvc";請參看 math/README 再配置過。',
-'prefs-personal' => '用戶介紹',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '監視列表',
-'prefs-watchlist-days' => '監視列表顯示最久嗰日數:',
-'prefs-watchlist-edits' => '加強版嗰監視列表顯示最多更改數目:',
-'prefs-misc' => '雜項',
-'saveprefs' => '存到參數',
-'resetprefs' => '清除冇保存嗰改動',
-'textboxsize' => '編寫',
-'rows' => '橫:',
-'columns' => '豎:',
-'searchresultshead' => '設置尋到嗰結果',
-'resultsperpage' => '設置尋到嗰連結數',
-'contextlines' => '設置尋到嗰行數:',
-'contextchars' => '設置尋到嗰字數:',
-'stub-threshold' => '<a href="#" class="stub">細文連結</a>格式門檻:',
-'recentchangesdays' => '最近更改中嗰顯示日數:',
-'recentchangescount' => '最近更改中嗰編輯數:',
-'savedprefs' => '倷嗰個人參數設置保存正嘞。',
-'timezonelegend' => '時區',
-'timezonetext' => '¹倷嗰當地時區同服務器時間(UTC)嗰時差。',
-'localtime' => '當地時區',
-'timezoneoffset' => '時差¹',
-'servertime' => '服務器時間',
-'guesstimezone' => '到瀏覽器上填',
-'allowemail' => '接受別嗰用戶嗰郵件',
-'defaultns' => '默認搜索嗰名字空間:',
-'default' => '默認',
-'files' => '檔案',
-
-# User rights
-'userrights' => '用戶許可權管理', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '管理用戶群',
-'userrights-user-editname' => '輸入用戶名:',
-'editusergroup' => '編輯用戶群',
-'editinguser' => "眼下編輯嘚用戶嗰權限 '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => '編輯用戶群',
-'saveusergroups' => '存儲用戶群',
-'userrights-groupsmember' => '歸到:',
-'userrights-reason' => '改嗰原因:',
-'userrights-no-interwiki' => '倷冇得權改吥別嗰wiki網站上箇隻用戶嗰權利。',
-'userrights-nodatabase' => '冇得箇隻數據庫 $1 或係冇在本地。',
-
-# Groups
-'group' => '群:',
-'group-autoconfirmed' => '自動確認用戶',
-'group-bot' => '機器人',
-'group-sysop' => '操作員',
-'group-bureaucrat' => '行政員',
-'group-all' => '(全部)',
-
-'group-autoconfirmed-member' => '自動確認用戶',
-'group-bot-member' => '機器人',
-'group-sysop-member' => '操作員',
-'group-bureaucrat-member' => '行政員',
-
-'grouppage-autoconfirmed' => '{{ns:project}}:自動確認用戶',
-'grouppage-bot' => '{{ns:project}}:機器人',
-'grouppage-sysop' => '{{ns:project}}:操作員',
-'grouppage-bureaucrat' => '{{ns:project}}:行政員',
-
-# User rights log
-'rightslog' => '用戶許可權日誌',
-'rightslogtext' => '底下記到用戶許可權嗰更改記錄。',
-'rightslogentry' => '拿 $1 嗰許可權從 $2 改到 $3',
-'rightsnone' => '(冇)',
-
-# Associated actions - in the sentence "You do not have permission to X"
-'action-edit' => '編輯箇頁',
-
-# Recent changes
-'nchanges' => '$1道改動',
-'recentchanges' => '最晏嗰改動',
-'recentchanges-legend' => '箇朝子嗰更改選項',
-'recentchangestext' => '跟到箇隻wiki上嗰最新改動。',
-'recentchanges-feed-description' => '跟到箇隻 wiki 上集合嗰最後改動。',
-'rcnote' => "下底係到$4 $5,箇'''$2'''日嗰'''$1'''回改動:",
-'rcnotefrom' => "底下係自'''$2'''嗰更改(頂多顯示'''$1'''):",
-'rclistfrom' => '顯示自$1後嗰新改動',
-'rcshowhideminor' => '$1細編輯',
-'rcshowhidebots' => '$1機器人嗰編輯',
-'rcshowhideliu' => '$1登入用戶嗰編輯',
-'rcshowhideanons' => '$1匿名用戶嗰編輯',
-'rcshowhidepatr' => '$1檢查過嗰編輯',
-'rcshowhidemine' => '$1我嗰編輯',
-'rclinks' => '顯示最晏$2日之內最新嗰$1回改動。<br />$3',
-'diff' => '差異',
-'hist' => '歷史',
-'hide' => '弆到',
-'show' => '顯示',
-'minoreditletter' => '細',
-'newpageletter' => '新',
-'boteditletter' => '機',
-'number_of_watching_users_pageview' => '[$1隻監視用戶]',
-'rc_categories' => '分類界定(用"|"隔開)',
-'rc_categories_any' => '任何',
-'newsectionsummary' => '/* $1 */ 新段落',
-'rc-enhanced-expand' => '顯到細節(需要 JavaScript)',
-'rc-enhanced-hide' => '弆到細節',
-
-# Recent changes linked
-'recentchangeslinked' => '連結頁嗰更改',
-'recentchangeslinked-title' => '連結頁嗰改動到 "$1"',
-'recentchangeslinked-noresult' => '箇段時間嗰連結頁冇更改。',
-'recentchangeslinked-summary' => "箇隻特殊頁列出箇頁連出去頁面嗰最晏改動(或係某隻分類嗰頁面)。
-[[Special:Watchlist|倷嗰監視列表]]頁面會用'''粗體'''顯到。",
-'recentchangeslinked-page' => '頁面名子:',
-'recentchangeslinked-to' => '顯示連到拿出來嗰頁面',
-
-# Upload
-'upload' => '上傳檔案',
-'uploadbtn' => '上傳檔案',
-'reupload' => '上傳過',
-'reuploaddesc' => '返回上傳列表。',
-'uploadnologin' => '冇登入',
-'uploadnologintext' => '倷要[[Special:UserLogin|登入]]再上傳得正檔案。',
-'upload_directory_read_only' => '上傳目錄($1)伓存在或冇寫入許可權。',
-'uploaderror' => '上傳出錯',
-'uploadtext' => "用下底嗰表格上傳檔案。
-要眵或要尋先前上傳嗰圖像請去[[Special:FileList|圖像列表]],上傳同刪除會記到[[Special:Log/upload|上傳日誌]]裡度。
-
-要係想扻文件到頁面,用得正下底嗰方式連結:
-'''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki>''',
-'''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|alt text]]</nowiki>''' 或
-'''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki>''' 直接連接到箇隻文件。",
-'upload-permitted' => '容許嗰文件類型:$1。',
-'upload-preferred' => '優先嗰文件類型:$1。',
-'upload-prohibited' => '禁止嗰文件類型:$1。',
-'uploadlog' => '上傳日誌',
-'uploadlogpage' => '上傳日誌',
-'uploadlogpagetext' => '底下係最近上傳檔嗰通覽表。',
-'filename' => '檔案名',
-'filedesc' => '摘要',
-'fileuploadsummary' => '摘要:',
-'filestatus' => '版權狀態:',
-'filesource' => '來源:',
-'uploadedfiles' => '上傳檔案中',
-'ignorewarning' => '伓搭警告同存到檔案',
-'ignorewarnings' => '伓搭所有警告',
-'minlength1' => '檔案名字至少要有一隻字。',
-'illegalfilename' => '檔案名"$1"有頁面標題伓容許嗰字元。請改吖名再上傳過。',
-'badfilename' => '檔案名已經拕改成"$1"。',
-'filetype-badmime' => 'MIME類別"$1"係伓容許嗰格式。',
-'filetype-missing' => '箇隻檔案名稱並冇副檔名 (就像 ".jpg")。',
-'large-file' => '建議檔案嗰大小伓要超吥$1;本檔案大小係$2。',
-'largefileserver' => '箇隻檔案要大過服務器配置容允嗰大小。',
-'emptyfile' => '倷上傳嗰檔案伓存在。箇可能係因為檔案名按錯嘞。請檢查倷係否真嗰要上傳箇隻檔案。',
-'fileexists' => "箇隻檔案名已存在。如果倷確定伓正倷係否要改佢,請檢查'''<tt>$1</tt>'''。",
-'fileexists-extension' => "有嘞隻飛像嗰檔名:<br /> 上載文檔嗰檔名: '''<tt>$1</tt>'''<br /> 目前檔嗰檔名: '''<tt>$2</tt>'''<br /> 請揀隻伓同嗰名字。",
-'fileexists-thumb' => "<center>'''早就有嘍嗰文件'''</center>",
-'fileexists-thumbnail-yes' => "箇隻檔案好像係一隻圖像嗰縮小版''(縮圖)''。請檢查清楚箇隻檔案'''<tt>$1</tt>'''。<br /> 如果檢查後嗰檔同原先圖像嗰大小係一樣嗰話,就嫑再上傳多一隻縮圖。",
-'file-thumbnail-no' => "箇隻檔案名係以'''<tt>$1</tt>'''開頭。佢好像一隻圖像嗰縮小版''(縮圖)''。如果倷有箇隻圖像嗰完整版,伓然請再改過隻檔名。",
-'fileexists-forbidden' => '箇隻檔案名已存在;請回頭並換過隻新嗰名稱來上傳箇隻檔案。[[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => '到共用檔案庫裡度有嘞同名嗰檔案;請回頭並換過隻新嗰名稱來上傳箇隻檔案。[[File:$1|thumb|center|$1]]',
-'successfulupload' => '上傳正嘞',
-'uploadwarning' => '上傳警告',
-'savefile' => '保存檔案',
-'uploadedimage' => '上傳正嘞"[[$1]]"',
-'overwroteimage' => '上傳正嘞"[[$1]]"嗰新版本',
-'uploaddisabled' => '上傳伓正',
-'uploaddisabledtext' => '上傳伓正文件到{{SITENAME}}。',
-'uploadscripted' => '箇隻檔案包到可能會誤導網絡瀏覽器錯誤解釋嗰 HTML 或腳本代碼。',
-'uploadcorrupt' => '箇隻檔案包含或者係一隻伓正確嗰副檔名。請檢查吖接到重新上傳。',
-'uploadvirus' => '箇隻檔案有病毒!詳情: $1',
-'sourcefilename' => '原始檔案名:',
-'destfilename' => '目標檔案名:',
-'watchthisupload' => '眏到箇頁',
-'filewasdeleted' => '先前有隻同名檔案上傳後又拕刪吥嘞。上傳箇隻檔案之前倷非要檢查$1。',
-'upload-wasdeleted' => "'''警告: 倷於今上傳嗰檔案係先前刪過嗰。'''
-
-倷要想正係真嗰上傳箇隻檔案。
-為到方便起見,箇隻檔案嗰刪除記錄到下底提供嘞:",
-'filename-bad-prefix' => "倷上傳嗰檔案名係以'''\"\$1\"'''做開頭嗰,通常箇種冇意義嗰名字係數碼相機度嗰自動編排。請到倷嗰檔案揀過隻更加有意義嗰名字。",
-
-'upload-proto-error' => '協定錯誤',
-'upload-proto-error-text' => '遠程上傳要求 URL 用 <code>http://</code> 或 <code>ftp://</code> 開頭。',
-'upload-file-error' => '內部錯誤',
-'upload-file-error-text' => '創建臨時檔案時服務器出現內部錯誤。請聯繫系統管理員。',
-'upload-misc-error' => '未知嗰上傳錯誤',
-'upload-misc-error-text' => '上傳嗰時間發生未知嗰錯誤。請確認輸嗰係正確同訪問得正嗰 URL,接到試過吖。要係哈有問題,請聯繫系統管理員。',
-
-# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => '訪問伓正 URL',
-'upload-curl-error6-text' => '訪問伓正輸入嗰 URL。請檢查過箇隻URL 係否正確,再就係網站嗰訪問係否正常。',
-'upload-curl-error28' => '上傳超時',
-'upload-curl-error28-text' => '站點回應時間過長。請檢查箇隻網站嗰訪問係否正常,過吖再試過。倷可能要等網絡伓咁卡嗰時間再試吖。',
-
-'license' => '授權:',
-'nolicense' => '冇選定',
-'license-nopreview' => '(冇預覽用得正)',
-'upload_source_url' => '(一隻有效嗰,公開嗰 URL)',
-'upload_source_file' => '(倷電腦嗰一隻檔案)',
-
-# Special:ListFiles
-'listfiles_search_for' => '按媒體名字尋:',
-'imgfile' => '檔案',
-'listfiles' => '檔案列表',
-'listfiles_date' => '日期',
-'listfiles_name' => '名稱',
-'listfiles_user' => '用戶',
-'listfiles_size' => '大細',
-'listfiles_description' => '簡話',
-
-# File description page
-'filehist' => '檔案歷史',
-'filehist-help' => '按到日期/時間去眵吖許時間有過嗰檔案。',
-'filehist-deleteall' => '全部刪掉',
-'filehist-deleteone' => '刪吥箇隻',
-'filehist-revert' => '恢復',
-'filehist-current' => '眼前',
-'filehist-datetime' => '日期/時間',
-'filehist-thumb' => '縮圖',
-'filehist-thumbtext' => '到$1嗰縮圖版本',
-'filehist-user' => '用戶',
-'filehist-dimensions' => '尺寸',
-'filehist-filesize' => '檔案大細',
-'filehist-comment' => '說明',
-'imagelinks' => '檔案連結',
-'linkstoimage' => '下頭嗰$1隻頁面連到箇隻檔案:',
-'nolinkstoimage' => '冇頁面連結到箇隻檔案。',
-'sharedupload' => '箇隻檔案係出自$1,佢可以應用到別嗰項目。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '更多信息請參看$1。',
-'shareduploadwiki-desc' => '下頭顯示佢到$1許首嗰描述。',
-'shareduploadwiki-linktext' => '檔案描述頁',
-'noimage' => '同名嗰檔案伓存在,倷可以$1。',
-'noimage-linktext' => '上傳佢',
-'uploadnewversion-linktext' => '上傳箇隻檔案嗰新版本',
-
-# File reversion
-'filerevert' => '恢復$1',
-'filerevert-legend' => '恢復檔案',
-'filerevert-intro' => "眼下倷恢復嘚'''[[Media:$1|$1]]'''到[$4 於$2 $3嗰版本]。",
-'filerevert-comment' => '說明:',
-'filerevert-defaultcomment' => '恢復到嘞$1, $2嗰版本',
-'filerevert-submit' => '恢復',
-'filerevert-success' => "'''[[Media:$1|$1]]'''恢復到嘞[$4 於$2 $3嗰版本]。",
-'filerevert-badversion' => '箇隻檔案所提供嗰時間標記並冇早先嗰本地版本。',
-
-# File deletion
-'filedelete' => '刪吥 $1',
-'filedelete-legend' => '刪吥檔案',
-'filedelete-intro' => "倷正刪吥'''[[Media:$1|$1]]'''。",
-'filedelete-intro-old' => "倷正刪吥'''[[Media:$1|$1]]'''到[$4 $2 $3]嗰版本。",
-'filedelete-comment' => '說明:',
-'filedelete-submit' => '刪吥',
-'filedelete-success' => "'''$1'''刪吥嘞。",
-'filedelete-success-old' => '<span class="plainlinks">\'\'\'[[Media:$1|$1]]\'\'\'於 $2 $3 嗰版本刪吥嘞。</span>',
-'filedelete-nofile' => "{{SITENAME}}箇隻網站伓存在'''$1'''。",
-'filedelete-nofile-old' => "按到指定屬性嗰情況,箇首冇'''$1'''到$2 $3嗰版本。",
-'filedelete-otherreason' => '別嗰/附加緣故:',
-'filedelete-reason-otherlist' => '別嗰緣故',
-'filedelete-reason-dropdown' => '*常用刪除理由
-** 侵犯版權
-** 檔案重複',
-
-# MIME search
-'mimesearch' => 'MIME 搜索',
-'mimesearch-summary' => '箇隻頁面啟用檔案MIME類型篩檢程式。輸入:內容類型/子類型,像 <tt>image/jpeg</tt>。',
-'mimetype' => 'MIME 類型:',
-'download' => '下載',
-
-# Unwatched pages
-'unwatchedpages' => '冇眏到嗰頁面',
-
-# List redirects
-'listredirects' => '重定向頁面列表',
-
-# Unused templates
-'unusedtemplates' => '冇使用嗰模板',
-'unusedtemplatestext' => '箇隻頁面列出模板空間名下底冇拕別嗰頁面使用嗰頁面。刪掉箇兮模板前請檢查別嗰連到箇隻模板嗰頁面。',
-'unusedtemplateswlh' => '別嗰連結',
-
-# Random page
-'randompage' => '隨機文章',
-'randompage-nopages' => '箇隻名字空間冇嗰頁面。',
-
-# Random redirect
-'randomredirect' => '隨機重定向頁面',
-'randomredirect-nopages' => '箇隻名字空間冇重定向頁面。',
-
-# Statistics
-'statistics' => '數據',
-'statistics-header-users' => '用戶數據',
-'statistics-mostpopular' => '眵嗰人最多嗰頁面',
-
-'disambiguations' => '扤清楚頁',
-'disambiguations-text' => "底下嗰頁面都有到'''扤清楚頁'''嗰連結, 但係佢俚應當係連到正當嗰標題。<br />
-如果一隻頁面係連結自[[MediaWiki:Disambiguationspage]],佢會拕當成扤清楚頁。",
-
-'doubleredirects' => '雙重重定向頁面',
-'doubleredirectstext' => '底下嗰重定向連結到別隻重定向頁面:',
-
-'brokenredirects' => '壞吥嗰重定向頁',
-'brokenredirectstext' => '底下嗰重定向頁面指到嗰係伓存在嗰頁面:',
-'brokenredirects-edit' => '(編寫)',
-'brokenredirects-delete' => '(刪吥)',
-
-'withoutinterwiki' => '冇語言連結嗰頁面',
-'withoutinterwiki-summary' => '底下嗰頁面係冇語言連結到別嗰語言版本:',
-'withoutinterwiki-submit' => '顯到',
-
-'fewestrevisions' => '改得最少嗰文章',
-
-# Miscellaneous special pages
-'nbytes' => '$1字節',
-'ncategories' => '$1隻分類',
-'nlinks' => '$1隻連結',
-'nmembers' => '$1隻成員',
-'nrevisions' => '$1隻改動',
-'nviews' => '$1回瀏覽',
-'specialpage-empty' => '箇隻報告嗰結果係空嗰。',
-'lonelypages' => '孤立嗰頁面',
-'lonelypagestext' => '底下頁面冇連結到{{SITENAME}}箇別嗰頁面。',
-'uncategorizedpages' => '冇歸類嗰頁面',
-'uncategorizedcategories' => '冇歸類嗰分類',
-'uncategorizedimages' => '冇歸類嗰文件',
-'uncategorizedtemplates' => '冇歸類嗰模版',
-'unusedcategories' => '冇使用嗰分類',
-'unusedimages' => '冇使用嗰圖像',
-'popularpages' => '熱門頁面',
-'wantedcategories' => '等撰嗰分類',
-'wantedpages' => '等撰嗰頁面',
-'mostlinked' => '最多連結嗰頁面',
-'mostlinkedcategories' => '最多連結嗰分類',
-'mostlinkedtemplates' => '最多連結嗰模版',
-'mostcategories' => '最多分類嗰文章',
-'mostimages' => '連結最多嗰圖像',
-'mostrevisions' => '最常改動嗰文章',
-'prefixindex' => '全部頁嗰前綴',
-'shortpages' => '短文章',
-'longpages' => '長文章',
-'deadendpages' => '脫接頁面',
-'deadendpagestext' => '下底箇頁面冇連到{{SITENAME}}嗰別隻頁面:',
-'protectedpages' => '受保護頁面',
-'protectedpagestext' => '底下頁面已經受保護以防止亂動',
-'protectedpagesempty' => '箇兮參數下冇頁面拕保護到。',
-'protectedtitles' => '保護題目',
-'listusers' => '用戶列表',
-'newpages' => '新頁面',
-'newpages-username' => '用戶名:',
-'ancientpages' => '老早嗰頁面',
-'move' => '移動',
-'movethispage' => '移動箇頁',
-'unusedimagestext' => '請注意別嗰網站直接用得正URL連結到箇隻圖像,故係箇首列到嗰圖像可能哈會拕使用。',
-'unusedcategoriestext' => '話係話冇拕別嗰文章或分類採用,但列表嗰分類頁哈係存在。',
-'notargettitle' => '冇目標',
-'notargettext' => '倷冇指正隻功能要用到嗰對象係頁面或用戶。',
-'pager-newer-n' => '{{PLURAL:$1|更新嗰 1|更新嗰 $1}}',
-'pager-older-n' => '{{PLURAL:$1|更舊嗰 1|更舊嗰 $1}}',
-
-# Book sources
-'booksources' => '書籍來源',
-'booksources-search-legend' => '尋吖書籍來源',
-'booksources-go' => '跳到',
-'booksources-text' => '底下係一部分網絡書店嗰連結列表,可以提供到倷要找嗰書籍嗰更多資料:',
-
-# Special:Log
-'specialloguserlabel' => '用戶:',
-'speciallogtitlelabel' => '標題:',
-'log' => '日誌',
-'all-logs-page' => '所有日誌',
-'alllogstext' => '攏共顯到全部嗰日誌。倷能選隻日誌類型、用戶名或關聯頁面縮小顯示嗰範圍。',
-'logempty' => '日誌裡頭冇符合嗰項目。',
-'log-title-wildcard' => '尋吖箇隻字開頭嗰標題',
-
-# Special:AllPages
-'allpages' => '所有嗰頁面',
-'alphaindexline' => '$1到$2',
-'nextpage' => '下頁($1)',
-'prevpage' => '上頁($1)',
-'allpagesfrom' => '顯示以箇底開始嗰頁面:',
-'allpagesto' => '顯到下頭位置結束嗰頁面:',
-'allarticles' => '全部文章',
-'allinnamespace' => '全部文章(歸$1空間名)',
-'allnotinnamespace' => '全部文章(伓歸$1空間名)',
-'allpagesprev' => '前',
-'allpagesnext' => '後',
-'allpagessubmit' => '交',
-'allpagesprefix' => '以箇隻開頭嗰頁面:',
-'allpagesbadtitle' => '提供嗰頁面標題冇用,或有隻跨語言或跨wiki嗰字頭。佢可能含到一隻或幾隻字伓合標題。',
-'allpages-bad-ns' => '{{SITENAME}}冇名字空間叫"$1"嗰。',
-
-# Special:Categories
-'categories' => '頁面分類',
-'categoriespagetext' => '下底嗰分類包到頁面或係媒體文件。',
-
-# Special:LinkSearch
-'linksearch' => '外部連結',
-
-# Special:ListUsers
-'listusersfrom' => '顯示噉樣用戶條件:',
-'listusers-submit' => '顯示',
-'listusers-noresult' => '尋伓到用戶。',
-
-# Special:Log/newusers
-'newuserlogpage' => '新開戶嗰人名單',
-'newuserlog-create-entry' => '新用戶嗰賬戶',
-
-# Special:ListGroupRights
-'listgrouprights-members' => '(成員名單)',
-
-# E-mail user
-'mailnologin' => '冇email地址',
-'mailnologintext' => '倷要[[Special:UserLogin|登入]] 起同到倷嗰[[Special:Preferences|參數設置]] 有隻有效嗰email才發得正email到別嗰用戶。',
-'emailuser' => '發email到箇隻用戶',
-'emailpage' => '發email到用戶',
-'emailpagetext' => '要係箇隻用戶到佢嗰參數設置頁填哩有效嗰email位置,下底嗰表格會寄隻信息到箇隻用戶。
-倷到倷參數設置填嗰email位置會顯到email嗰「發信人」箇欄,咁樣箇隻用戶就回得正倷囉。',
-'usermailererror' => 'Mail位置返回錯誤:',
-'defemailsubject' => '{{SITENAME}} 電子郵件',
-'noemailtitle' => '冇電子郵件地址',
-'noemailtext' => '箇隻用戶哈冇指定正一隻有效嗰email,或者佢伓願收別嗰用戶嗰電子郵件。',
-'emailfrom' => '發信人',
-'emailto' => '收信人',
-'emailsubject' => '主題',
-'emailmessage' => '消息',
-'emailsend' => '發出',
-'emailccme' => '拿我嗰消息嗰副本發到我嗰郵箱。',
-'emailccsubject' => '拿倷嗰消息複製到 $1: $2',
-'emailsent' => 'email發卟嘞',
-'emailsenttext' => '倷嗰email發卟嘞。',
-
-# Watchlist
-'watchlist' => '監視列表',
-'mywatchlist' => '我嗰監視列表',
-'watchlistfor' => "('''$1'''嗰監視列表')",
-'nowatchlist' => '倷嗰監視列表什哩都冇有。',
-'watchlistanontext' => '請$1眵吖或改吖倷嗰監視列表。',
-'watchnologin' => '冇登入',
-'watchnologintext' => '倷要[[Special:UserLogin|登入]]起才改得正倷嗰監視列表。',
-'addedwatch' => '加到嘞監視列表',
-'addedwatchtext' => "頁面\"[[:\$1]]\" 加到嘞倷嗰[[Special:Watchlist|監視列表]]。箇頁同佢嗰討論頁嗰全部改動以後都會列到許首,佢會用'''粗體''' 列到[[Special:RecentChanges|最近更改]]讓倷更加容易識別。 倷以後要係拿佢到監視列表刪卟佢嗰話,就到導航條點吖「莫眏到」。",
-'removedwatch' => '莫眏到',
-'removedwatchtext' => '頁面"<nowiki>$1</nowiki>"到倷嗰監視列表刪卟嘞。',
-'watch' => '眏到',
-'watchthispage' => '眏到箇頁',
-'unwatch' => '莫眏到',
-'unwatchthispage' => '莫眏到箇頁',
-'notanarticle' => '伓係文章',
-'watchnochange' => '一徑到顯示嗰時間之內,倷眏到嗰頁面冇改動。',
-'watchlist-details' => '冇算討論頁,倷嗰監視清單裡頭有 $1 隻版面。',
-'wlheader-enotif' => '* 啟動嘞email通知功能。',
-'wlheader-showupdated' => "* 上回倷眵嗰頁面改動嗰部分用'''粗體'''顯到",
-'watchmethod-recent' => '眵吖拕眏到嗰頁面嗰最近編輯',
-'watchmethod-list' => '望吖監視頁裡頭最晏嗰改動',
-'watchlistcontains' => '倷嗰監視列表包含$1隻頁面。',
-'iteminvalidname' => "頁面'$1'出錯,無效命名...",
-'wlnote' => "下底係最近'''$2'''鐘頭內嗰最晏'''$1'''道修改:",
-'wlshowlast' => '顯示近來$1鐘頭$2日$3嗰改動',
-'watchlist-options' => '監視清單選項',
-
-# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '眏到...',
-'unwatching' => '莫眏到...',
-
-'enotif_mailer' => '{{SITENAME}}郵件報告員',
-'enotif_reset' => '拿全部文章標成已讀',
-'enotif_newpagetext' => '箇係新開嗰頁面。',
-'enotif_impersonal_salutation' => '{{SITENAME}}用戶',
-'changed' => '改卟嘞',
-'created' => '建正嘞',
-'enotif_subject' => '{{SITENAME}}有頁面 $PAGETITLE拕$PAGEEDITOR $CHANGEDORCREATED',
-'enotif_lastvisited' => '眵倷上回訪問後嗰全部改動請去$1。',
-'enotif_lastdiff' => '想眵改動請去$1。',
-'enotif_anon_editor' => '匿名用戶$1',
-'enotif_body' => '$WATCHINGUSERNAME先生/小姐倷好,
-
-$CHANGEDORCREATED{{SITENAME}}嗰 $PAGETITLE 頁面已經由$PAGEEDITOR到 $PAGEEDITDATE,請到 $PAGETITLE_URL眵吖目前嗰版本。
-
-$NEWPAGE
-編輯摘要: $PAGESUMMARY $PAGEMINOREDIT
-聯絡箇隻編輯人: mail: $PAGEEDITOR_EMAIL
-
-本站: $PAGEEDITOR_WIKI 今後伓會通知倷將來嗰改動,除非接到來到箇頁。倷也能設過倷全部監視頁嗰通知標記。
-
-{{SITENAME}}通知系統 – 會改卟倷嗰監視列表設置,請去 {{fullurl:{{ns:special}}:Watchlist/edit}}
-
-回饋同到別嗰説明: {{fullurl:{{MediaWiki:Helppage}}}}',
-
-# Delete
-'deletepage' => '刪卟頁面',
-'confirm' => '確認',
-'excontent' => "內容係: '$1'",
-'excontentauthor' => '內容係: \'$1\' (唯一嗰貢獻者係"$2")',
-'exbeforeblank' => "拕清空之前嗰內容係: '$1'",
-'exblank' => '頁面冇內容',
-'delete-confirm' => '刪卟"$1"去',
-'delete-legend' => '刪卟去',
-'historywarning' => '警告: 倷要刪卟嗰頁面含到歷史版',
-'confirmdeletetext' => '仰上倷就要永久刪卟資料庫嗰一隻頁面或圖像同佢嗰歷史。請確定倷要噉做,哈要曉得佢嗰後果,更加伓能違反[[{{MediaWiki:Policy-url}}]]。',
-'actioncomplete' => '扤正嘞',
-'deletedtext' => '"<nowiki>$1</nowiki>"刪卟嘞。最晏嗰刪除記錄請望$2。',
-'deletedarticle' => '"[[$1]]"刪卟嘞',
-'dellogpage' => '刪除日誌',
-'dellogpagetext' => '下底係最晏刪除嗰記錄列表:',
-'deletionlog' => '刪除日誌',
-'reverted' => '恢復到早先嗰版本',
-'deletecomment' => '刪除嗰緣故:',
-'deleteotherreason' => '別嗰/附加理由:',
-'deletereasonotherlist' => '別嗰理由',
-'deletereason-dropdown' => '*常用刪除嗰理由
-** 寫嗰人自家嗰要求
-** 侵犯版權
-** 特試破壞',
-
-# Rollback
-'rollback' => '還原修改',
-'rollback_short' => '還原',
-'rollbacklink' => '還原',
-'rollbackfailed' => '還原失敗',
-'cantrollback' => '還原伓正;最末嗰貢獻人係文章嗰唯一作者。',
-'alreadyrolled' => '還原伓正由[[User:$2|$2]] ([[User talk:$2|討論]])做嗰[[$1]]嗰最晏編寫;
-別嗰人編輯過或係恢復嘞箇頁。
-
-最晏編輯人: [[User:$3|$3]] ([[User talk:$3|討論]])。',
-'editcomment' => "編輯介紹: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => '返回由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])嗰編輯;恢復到[[User:$1|$1]]嗰最末一隻版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '返回由$1嗰編輯;恢復到$2嗰最末一隻版本。',
-'sessionfailure' => '倷嗰登入好像有嚸問題,為到防範未然,箇隻動作拕取消嘞。
-
-請按吖“後退”再試過囉!',
-
-# Protect
-'protectlogpage' => '保護日誌',
-'protectlogtext' => '下底係頁面鎖定同到解除鎖定嗰列表。請望下[[Special:ProtectedPages|保護頁面列表]]來監察目前嗰頁面保護情況。',
-'protectedarticle' => '保護正嘞“[[$1]] ”',
-'modifiedarticleprotection' => '改變嘞“[[$1]] ” 嗰保護等級',
-'unprotectedarticle' => '撤銷保護“[[$1]] ”',
-'protect-title' => '保護“$1”中',
-'prot_1movedto2' => '[[$1]]移到[[$2]]',
-'protect-legend' => '確認保護',
-'protectcomment' => '注解:',
-'protectexpiry' => '期限:',
-'protect_expiry_invalid' => '到期時間無效。',
-'protect_expiry_old' => '到期時間已過。',
-'protect-unchain' => '莫鎖到移動許可權',
-'protect-text' => "倷到箇首能瀏覽或修改頁面'''<nowiki>$1</nowiki>'''嗰保護級別。",
-'protect-locked-blocked' => "倷改伓正拕封鎖時嗰保護級別。下底係'''$1'''現今嗰保護級別:",
-'protect-locked-dblock' => "資料庫鎖到嘞就改伓正保護級別。下底係'''$1'''現今嗰保護級別:",
-'protect-locked-access' => "倷嗰許可權改伓正保護級別。
-
-下底係'''$1'''現今嗰保護級別:",
-'protect-cascadeon' => '下底嗰{{PLURAL:$1|一隻|多隻}}頁面含到箇頁,佢哈啟動嘞連鎖保護,故係箇頁也就拕保護到嘞,編伓正。倷能設過箇頁嗰保護級別,但係箇伓會影響到連鎖保護。',
-'protect-default' => '容許全部用戶',
-'protect-fallback' => '非要“$1”嗰許可',
-'protect-level-autoconfirmed' => '限制新嗰同到冇註冊嗰用戶',
-'protect-level-sysop' => '只限操作員',
-'protect-summary-cascade' => '聯鎖',
-'protect-expiring' => '$1 (UTC)到期',
-'protect-cascade' => '保護箇頁含到嗰頁面 (連鎖保護)',
-'protect-cantedit' => '倷改伓正箇頁嗰保護程度,因為倷冇搦到編輯授權。',
-'protect-expiry-options' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
-'restriction-type' => '許可權:',
-'restriction-level' => '限制級別:',
-'minimum-size' => '最細碼子',
-'maximum-size' => '最大碼子:',
-'pagesize' => '(字節)',
-
-# Restrictions (nouns)
-'restriction-edit' => '編寫',
-'restriction-move' => '斢動',
-'restriction-create' => '建立',
-
-# Restriction levels
-'restriction-level-sysop' => '全保護',
-'restriction-level-autoconfirmed' => '半保護',
-'restriction-level-all' => '任何等級',
-
-# Undelete
-'undelete' => '望吖刪卟嗰頁面',
-'undeletepage' => '望吖同恢復刪卟嗰頁面',
-'viewdeletedpage' => '望吖刪卟嗰頁面',
-'undeletepagetext' => '下底嗰頁面拕刪卟嘞,但到檔案許首哈係恢復得正嗰。檔案庫會定時清理。',
-'undeleteextrahelp' => "要恢復艮隻頁面,請清除全部選擇方塊接到撳吖 '''''恢復'''''。要恢復選正嗰版本,就請揀到相應版本前嗰選擇方塊接到撳吖 '''''恢復'''''。撳 '''''重設''''' 就會清卟評論文字同到全部嗰選擇方塊。",
-'undeleterevisions' => '$1版本存正檔',
-'undeletehistory' => '如果倷要恢復箇頁,全部嗰版本都會跟到恢復到修改歷史去。如果箇頁刪卟後又有隻同名嗰新頁面,拕恢復嗰版本會係先前嗰歷史,而新頁面嗰如今修改伓會自動復原。',
-'undeleterevdel' => '如果最晏嗰修改拕刪卟,噉就扤得反刪除進行伓正。要係咁嗰話,倷就要反選到或反弆到最晏刪卟嗰修改。對於倷冇權限望嗰修改係恢復伓正嗰。',
-'undeletehistorynoadmin' => '箇篇文章刪卟嘞。下底嗰摘要會話原因,刪卟之前嗰全部編寫文本同到貢獻人嗰細節資料就管理員望得到。',
-'undelete-revision' => '刪卟$1由$3(到$2)編寫嗰修改版本:',
-'undeleterevision-missing' => '冇用或跌掉嗰修改版本。話伓定倷碰到隻錯誤嗰連結,要卟就係箇隻版本早從存檔恢復或換卟嘞。',
-'undelete-nodiff' => '冇尋到以前嗰版本。',
-'undeletebtn' => '恢復',
-'undeletelink' => '望下/恢復',
-'undeletereset' => '設過',
-'undeletecomment' => '評論:',
-'undeletedarticle' => '恢復正嗰"[[$1]]"',
-'undeletedrevisions' => '$1隻修改版本恢復正嘞',
-'undeletedrevisions-files' => '$1隻修改版本同$2隻檔案恢復正嘞',
-'undeletedfiles' => '$1隻檔案恢復正嘞',
-'cannotundelete' => '反刪除伓正;話伓定別嗰人先倷恢復嘞箇隻頁面。',
-'undeletedpage' => "<big>'''$1恢復正嘞'''</big>
-
-望吖[[Special:Log/delete|刪除日誌]]嗰刪除同恢復記錄。",
-'undelete-header' => '要查最晏嗰記錄嗰話請望[[Special:Log/delete|刪除日誌]]。',
-'undelete-search-box' => '尋吖刪卟嗰頁面',
-'undelete-search-prefix' => '顯示以下底開頭嗰頁面:',
-'undelete-search-submit' => '尋吖',
-'undelete-no-results' => '刪卟記錄冇合到嗰結果。',
-'undelete-filename-mismatch' => '刪伓正帶到時間標記嗰檔案修訂 $1: 檔案伓匹配',
-'undelete-bad-store-key' => '刪伓正帶到時間標記嗰檔案修訂 $1: 檔案刪卟之前就跌卟嘞。',
-'undelete-cleanup-error' => '刪卟冇用嗰存檔文件 "$1" 時出錯。',
-'undelete-missing-filearchive' => '資料庫冇檔案存檔 ID $1 ,故係佢也就到檔案存檔恢復伓正。佢話伓定早反刪除嘞。',
-'undelete-error-short' => '反刪除檔案嗰時間出錯: $1',
-'undelete-error-long' => '反刪除檔案當中出錯: $1',
-
-# Namespace form on various pages
-'namespace' => '空間名:',
-'invert' => '反選',
-'blanknamespace' => '(主要)',
-
-# Contributions
-'contributions' => '用戶貢獻',
-'contributions-title' => '$1嗰用戶貢獻',
-'mycontris' => '我嗰貢獻',
-'contribsub2' => '$1嗰貢獻 ($2)',
-'nocontribs' => '冇尋到合到條件嗰改動。', # Optional parameter: $1 is the user name
-'uctop' => '(頭上)',
-'month' => '從箇月 (或更早):',
-'year' => '從箇年 (或更早):',
-
-'sp-contributions-newbies' => '單顯到新用戶嗰貢獻',
-'sp-contributions-newbies-sub' => '新用戶嗰貢獻',
-'sp-contributions-blocklog' => '封鎖記錄',
-'sp-contributions-search' => '尋貢獻',
-'sp-contributions-username' => 'IP地址或用戶名:',
-'sp-contributions-submit' => '尋',
-
-# What links here
-'whatlinkshere' => '有什哩連到箇首',
-'whatlinkshere-title' => '連到「$1」嗰頁面',
-'whatlinkshere-page' => '頁面:',
-'linkshere' => '下底嗰頁面連結到[[:$1]]:',
-'nolinkshere' => '冇頁面連結到[[:$1]]。',
-'nolinkshere-ns' => '選正嗰空間名內冇頁面連結到[[:$1]]。',
-'isredirect' => '重定向頁',
-'istemplate' => '含到',
-'isimage' => '檔案連結',
-'whatlinkshere-prev' => '先$1隻',
-'whatlinkshere-next' => '末$1隻',
-'whatlinkshere-links' => '←連結',
-'whatlinkshere-hideredirs' => '$1重定向',
-'whatlinkshere-hidetrans' => '$1含到',
-'whatlinkshere-hidelinks' => '$1連結',
-'whatlinkshere-filters' => '篩濾器',
-
-# Block/unblock
-'blockip' => '封到IP地址',
-'blockiptext' => '用下底嗰表格去阻止某一IP嗰修改許可權。除非倷係為到怕佢亂扤,接到非要符合[[{{MediaWiki:Policy-url}}|守則]]嗰條件下才能噉做。請到下底話隻確切原因(比如引用一隻拕破壞嗰頁面)。',
-'ipaddress' => 'IP地址:',
-'ipadressorusername' => 'IP地址或用戶名:',
-'ipbexpiry' => '期限:',
-'ipbreason' => '原因:',
-'ipbreasonotherlist' => '別嗰原因',
-'ipbreason-dropdown' => '*一般嗰封鎖原因
-** 緊編寫假嗰內容
-** 刪卟文章內容
-** 亂加外部連結
-** 寫冇油鹽嗰話
-** 嚇人/騷擾別嗰
-** 濫用帳號
-** 亂起用戶名',
-'ipbanononly' => '光防到匿名用戶',
-'ipbcreateaccount' => '防止開新帳號',
-'ipbemailban' => '防止用戶發email',
-'ipbenableautoblock' => '自動封鎖箇隻用戶最晏嗰IP,同後來佢編寫用過嗰地址',
-'ipbsubmit' => '封鎖箇隻地址',
-'ipbother' => '別嗰時間:',
-'ipboptions' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
-'ipbotheroption' => '別嗰',
-'ipbotherreason' => '別嗰/附加原因:',
-'ipbhidename' => '封鎖日誌、活躍封鎖列表同用戶列表裡頭弆到用戶名',
-'badipaddress' => 'IP位置伓對。',
-'blockipsuccesssub' => '封鎖正嘞',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]封卟嘞。 <br />望吖[[Special:IPBlockList|拕封IP列表]]來審過封鎖。',
-'ipb-edit-dropdown' => '編寫封鎖原因',
-'ipb-unblock-addr' => '解封$1',
-'ipb-unblock' => '解封用戶名或IP地址',
-'ipb-blocklist-addr' => '望吖$1目前嗰封禁',
-'ipb-blocklist' => '望吖目前嗰封禁',
-'unblockip' => '解封IP地址',
-'unblockiptext' => '用下底嗰表格去恢復早先拕封嗰IP嗰編寫權。',
-'ipusubmit' => '解封箇隻地址',
-'unblocked' => '[[User:$1|$1]]解封嘞',
-'unblocked-id' => '封禁$1拕刪卟嘞',
-'ipblocklist' => '拕封IP跟用戶名嗰表單',
-'ipblocklist-legend' => '尋吖拕封鎖嗰用戶',
-'ipblocklist-username' => '用戶名或IP地址:',
-'ipblocklist-submit' => '尋',
-'blocklistline' => '$1,$2封到$3 ($4)',
-'infiniteblock' => '伓限期',
-'expiringblock' => '$1到期',
-'anononlyblock' => '單限制匿名用戶',
-'noautoblockblock' => '停用自動封鎖',
-'createaccountblock' => '禁止新開帳戶',
-'emailblock' => '禁止email',
-'ipblocklist-empty' => '封鎖列表係空嗰。',
-'ipblocklist-no-results' => '請求嗰IP地址/用戶名冇拕封到。',
-'blocklink' => '封到',
-'unblocklink' => '解封',
-'change-blocklink' => '改動封禁',
-'contribslink' => '貢獻',
-'autoblocker' => '倷同"[[$1]]"共用一隻IP,故係倷也拕自動鎖到嘞。$1封鎖嗰緣故係"$2"。',
-'blocklogpage' => '封鎖日誌',
-'blocklogentry' => '[[$1]]拕封到$3 ,結束時間到$2',
-'blocklogtext' => '箇係用戶封鎖同解封操作嗰日誌。拕自動封鎖嗰IP冇列出。請參看[[Special:IPBlockList|拕封IP地址列表]]。',
-'unblocklogentry' => '[[$1]] 拕解封嘞',
-'block-log-flags-anononly' => '單限制匿名用戶',
-'block-log-flags-nocreate' => '禁止箇隻IP/用戶新開帳戶',
-'block-log-flags-noautoblock' => '禁用自動封禁',
-'block-log-flags-noemail' => '禁止email',
-'range_block_disabled' => '就管理員建得正禁止封鎖嗰範圍。',
-'ipb_expiry_invalid' => '冇用嗰結束時間。',
-'ipb_already_blocked' => '鎖到嘞"$1"',
-'ipb_cant_unblock' => '錯誤: 冇發現Block ID $1。箇隻IP話伓定拕解封嘍。',
-'ip_range_invalid' => '冇用嗰IP範圍。',
-'blockme' => '封吥我去',
-'proxyblocker' => '代理封鎖器',
-'proxyblocker-disabled' => '箇隻功能用伓正嘍。',
-'proxyblockreason' => '倷嗰IP係一隻公開嗰代理,佢拕封到嘞。請聯絡倷嗰Internet服務提供商或技術幫助再告誦佢俚箇隻嚴重嗰安全問題。',
-'proxyblocksuccess' => '扤正囉。',
-'sorbsreason' => '{{SITENAME}}用嗰 DNSBL 查到倷嗰IP地址係隻公開代理服務器。',
-'sorbs_create_account_reason' => '{{SITENAME}}用嗰 DNSBL 檢查到倷嗰IP地址係隻公開代理服務器,倷也就新開伓正帳戶。',
-
-# Developer tools
-'lockdb' => '鎖到資料庫',
-'unlockdb' => '莫鎖到資料庫',
-'lockdbtext' => '鎖住資料庫將讓所有用戶編伓正頁面、更伓正參數、監視列表同到別嗰需要改動資料庫嗰操作。請確定倷要噉做,接到要話正等維護工作結束後倷會重新開到資料庫。',
-'unlockdbtext' => '開到資料庫將讓所有用戶重新編輯得正頁面、修改得正參數、編輯得正監視列表同到別嗰需要改動資料庫嗰操作。請確定倷要噉做。',
-'lockconfirm' => '係嗰,我係真嗰想鎖定資料庫。',
-'unlockconfirm' => '係嗰,我係真嗰想解鎖資料庫。',
-'lockbtn' => '鎖到資料庫',
-'unlockbtn' => '莫鎖到資料庫',
-'locknoconfirm' => '倷冇選正確認鍵。',
-'lockdbsuccesssub' => '資料庫鎖正嘞',
-'unlockdbsuccesssub' => '資料庫解鎖',
-'lockdbsuccesstext' => '{{SITENAME}}資料庫鎖正嘞。 <br />請記得維護正後重新開到資料庫。',
-'unlockdbsuccesstext' => '{{SITENAME}}資料庫重新開放。',
-'lockfilenotwritable' => '資料庫鎖定檔案寫伓正。要鎖定或解鎖資料庫,需要由網絡服務器寫進才行。',
-'databasenotlocked' => '資料庫冇鎖正。',
-
-# Move page
-'move-page-legend' => '換動頁面',
-'movepagetext' => "用下底嗰表格跟改吥一隻頁面嗰名,同到拿佢嗰歷史一齊搬到新頁面。
-舊標題會變成新標題嘅重定向頁。
-倷可以自動更新指到先頭標題嗰重定向。
-要係倷覺得冇必要舞嗰話,請務必要檢查下有冇有[[Special:DoubleRedirects|雙重跳轉]]或者[[Special:BrokenRedirects|壞重定向]](嗰情況發生)。
-倷有責任確保箇滴子連結接得會指到佢應該指到嗰地方。
-
-注意如果已經有隻同新名同名嗰頁面,咁各組織頁面係搬'''不到'''嗰,除吥箇隻同名嗰頁面係空嗰或者佢係一隻跳轉頁,哈要佢之前冇拕編輯過(冇編輯歷史)咁才做得。要係萬一倷舞錯嘍,倷可以拿箇隻頁面改回去佢改之前嗰樣式,你不可以覆蓋一隻現有嗰頁面。
-
-'''警告!'''
-咁對於一隻好多人用嗰頁面來話可能係一隻托大嗰改動;請倷到行動之前確認倷清楚咁舞嗰後果。",
-'movepagetalktext' => "相關嗰討論頁會自動同箇頁一齊搬走,'''除非''':
-*新頁面有嘞隻有內容嗰討論頁,或
-*倷伓選下底嗰選擇方塊。
-噉倷就非要手工移動或合併頁面。",
-'movearticle' => '換動頁面:',
-'movenologin' => '冇登入',
-'movenologintext' => '倷要係登記用戶接到[[Special:UserLogin|登入]]後才移動得正頁面。',
-'movenotallowed' => '倷到{{SITENAME}}冇權移動頁面。',
-'newtitle' => '新標題:',
-'move-watch' => '眏到箇頁',
-'movepagebtn' => '換卟箇頁',
-'pagemovedsub' => '移正嘞',
-'movepage-moved' => "<big>'''「$1」拕移到「$2」'''</big>", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'articleexists' => '已經有頁面叫箇隻名字,要伓倷揀嗰名字冇用。請揀過隻名字。',
-'cantmove-titleprotected' => '倷移伓正一隻頁面到箇隻位置,箇隻新題目已經拕保護起來嘞,新建伓正。',
-'talkexists' => '頁面本身移動正嘞,但係新標題下底有嘞對話頁,所以對話頁移伓正。請手工合併兩頁。',
-'movedto' => '移到',
-'movetalk' => '移動相關嗰討論頁',
-'1movedto2' => '[[$1]]移到[[$2]]',
-'1movedto2_redir' => '[[$1]]通過重定向移到[[$2]]',
-'movelogpage' => '移動日誌',
-'movelogpagetext' => '下底係移動嘞嗰頁面列表:',
-'movereason' => '原因',
-'revertmove' => '恢復',
-'delete_and_move' => '刪除跟到移動',
-'delete_and_move_text' => '==需要刪除==
-
-目標文章"[[:$1]]"存在嘞。為到移動佢,倷要刪卟舊頁面?',
-'delete_and_move_confirm' => '係嗰,刪卟箇頁',
-'delete_and_move_reason' => '為到移動刪卟佢',
-'selfmove' => '原始標題同目標標題一樣,一隻頁面移伓正到佢自家。',
-
-# Export
-'export' => '導出頁面',
-'exporttext' => '通過XML格式倷能搦特定嗰頁面或一組頁面嗰文本同到佢編輯嗰歷史一齊導出;噉通過"[[Special:Import|導入頁面]]"就導入得到別嗰MediaWiki網站。要導出頁面嗰話,請到下底嗰文字框寫正標題,一行一隻標題,再話正倷係否要導出含歷史嗰舊版本,或單就選導出最晏一回編輯嗰相關內容。
-
-再就係通過連結倷哈導出得正檔案,比如倷用得正[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]導出"[[{{MediaWiki:Mainpage}}]]"頁面',
-'exportcuronly' => '獨今吖嗰改動,伓係全部嗰歷史。',
-'exportnohistory' => "----
-'''注意:''' 由於性能嗰原因,箇隻表格導出嗰頁面嗰全部歷史都拕禁用。",
-'export-submit' => '導出',
-'export-addcattext' => '從分類裡頭加進頁面:',
-'export-addcat' => '加入',
-'export-download' => '提供一隻檔案去另存',
-'export-templates' => '包括模板',
-
-# Namespace 8 related
-'allmessages' => '系統消息',
-'allmessagesname' => '名字',
-'allmessagesdefault' => '默認文字',
-'allmessagescurrent' => '眼前嗰文字',
-'allmessagestext' => '箇首列到全部制定得正嗰系統界面。
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:系統界面功能'''關卟嘞('''\$wgUseDatabaseMessages''')。",
-'allmessagesfilter' => '按消息名篩:',
-'allmessagesmodified' => '單顯到改正嗰',
-
-# Thumbnails
-'thumbnail-more' => '放大',
-'filemissing' => '尋伓到檔案',
-'thumbnail_error' => '縮略圖冇扤正: $1',
-'djvu_page_error' => 'DjVu頁超出範圍',
-'djvu_no_xml' => 'DjVu檔案拿伓出XML',
-'thumbnail_invalid_params' => '縮略圖參數係錯嗰',
-'thumbnail_dest_directory' => '建伓正目標目錄',
-
-# Special:Import
-'import' => '導入頁面',
-'importinterwiki' => '跨wiki導入',
-'import-interwiki-text' => '揀正隻wiki同頁面標題去導入。修訂日期同編輯人會一齊存到。全部嗰跨 wiki 導入操作會到[[Special:Log/import|導入日誌]]記到。',
-'import-interwiki-history' => '複製箇頁嗰全部歷史',
-'import-interwiki-submit' => '導入',
-'import-interwiki-namespace' => '拿頁面移到空間名:',
-'import-comment' => '說明:',
-'importtext' => '請用 Special:Export 從源 wiki 導出檔案,再存到倷嗰磁盤然後上傳到箇首。',
-'importstart' => '導入頁面中...',
-'import-revision-count' => '$1隻修改',
-'importnopages' => '冇導入嗰頁面。',
-'importfailed' => '導入伓正: $1',
-'importunknownsource' => '不明嗰源導入類型',
-'importcantopen' => '開伓正導入檔案',
-'importbadinterwiki' => '扤壞嗰內部wiki連結',
-'importnotext' => '空白或冇字',
-'importsuccess' => '導進去嘍!',
-'importhistoryconflict' => '挭過仗嗰修改歷史(之前就話伓定導過箇隻頁面)',
-'importnosources' => '跨Wiki導入源冇定義,哈伓準直接嗰歷史上傳。',
-'importnofile' => '冇上傳導入檔案。',
-'importuploaderrorsize' => '導入文件上傳嗰時間冇扤正。箇隻文件大傷嘍,上傳伓正咁大嗰文件。',
-'importuploaderrorpartial' => '導入文件上傳嗰時間冇扤正。箇隻文件就傳嘍一滴子。',
-'importuploaderrortemp' => '導入文件上傳嗰時間冇扤正。冇尋到臨時文件夾。',
-'import-parse-failure' => 'XML 導進分析失敗',
-'import-noarticle' => '冇頁面導入!',
-'import-nonewrevisions' => '早先嗰改動全部扤進去嘍。',
-'xml-error-string' => '$1 位到 $2 行,$3 列 ($4字節):$5',
-
-# Import log
-'importlogpage' => '導入日誌',
-'importlogpagetext' => '管理員由別嗰 wiki 導入頁面同到佢俚嗰編輯歷史記錄。',
-'import-logentry-upload' => '通過檔案上傳導入嗰[[$1]]',
-'import-logentry-upload-detail' => '$1隻修改',
-'import-logentry-interwiki' => '跨wiki $1',
-'import-logentry-interwiki-detail' => '$2嗰$1隻修改',
-
-# Tooltip help for the actions
-'tooltip-pt-userpage' => '倷嗰用戶頁',
-'tooltip-pt-anonuserpage' => '倷編輯本站用嗰IP對應嗰用戶頁',
-'tooltip-pt-mytalk' => '倷嗰對話頁',
-'tooltip-pt-anontalk' => '對箇隻IP嗰編輯嗰話嗰事',
-'tooltip-pt-preferences' => '倷嗰參數設置',
-'tooltip-pt-watchlist' => '倷嗰監視列表',
-'tooltip-pt-mycontris' => '倷嗰貢獻列表',
-'tooltip-pt-login' => '登入係伓強制嗰,但佢會有蠻多好處',
-'tooltip-pt-anonlogin' => '登入係伓強制嗰,但佢會有蠻多好處',
-'tooltip-pt-logout' => '登出',
-'tooltip-ca-talk' => '內容頁嗰討論',
-'tooltip-ca-edit' => '倷編得正箇頁,但勞煩倷望佢一眼起再存到佢。',
-'tooltip-ca-addsection' => '開隻新嗰小節',
-'tooltip-ca-viewsource' => '箇頁已拕保護。但倷能望吖佢嗰原始碼。',
-'tooltip-ca-history' => '箇頁早先嗰版本',
-'tooltip-ca-protect' => '護到箇頁',
-'tooltip-ca-delete' => '刪卟箇頁',
-'tooltip-ca-undelete' => '拿箇頁還原到刪卟之前嗰樣子',
-'tooltip-ca-move' => '移動箇頁',
-'tooltip-ca-watch' => '拿箇頁加到監視列表',
-'tooltip-ca-unwatch' => '拿箇頁從監視列表移走',
-'tooltip-search' => '尋吖{{SITENAME}}',
-'tooltip-search-go' => '要係一樣嗰標題存在嗰話就直接去箇一版',
-'tooltip-search-fulltext' => '尋箇隻文字嗰頁面',
-'tooltip-p-logo' => '封面',
-'tooltip-n-mainpage' => '眵吖封面',
-'tooltip-n-portal' => '對於箇隻計劃,倷能做什哩,又啷做',
-'tooltip-n-currentevents' => '提供目前嗰事嗰背景',
-'tooltip-n-recentchanges' => '列出箇隻網站該朝子嗰改動',
-'tooltip-n-randompage' => '隨機載進一隻頁面',
-'tooltip-n-help' => '求人幫',
-'tooltip-t-whatlinkshere' => '列出全部同箇頁連到嗰頁面',
-'tooltip-t-recentchangeslinked' => '從箇頁連出嗰全部頁面嗰改動',
-'tooltip-feed-rss' => '箇頁嗰RSS訂閱',
-'tooltip-feed-atom' => '箇頁嗰Atom訂閱',
-'tooltip-t-contributions' => '望吖箇隻用戶嗰貢獻',
-'tooltip-t-emailuser' => '發封郵件到箇隻用戶',
-'tooltip-t-upload' => '上傳圖像或多媒體文件',
-'tooltip-t-specialpages' => '全部特殊頁列表',
-'tooltip-t-print' => '箇隻頁面嗰打印版',
-'tooltip-t-permalink' => '箇隻頁面嗰永久連結',
-'tooltip-ca-nstab-main' => '望吖內容頁',
-'tooltip-ca-nstab-user' => '望吖用戶頁',
-'tooltip-ca-nstab-media' => '望吖媒體頁',
-'tooltip-ca-nstab-special' => '箇係隻特殊頁,倷編佢伓正',
-'tooltip-ca-nstab-project' => '望吖計劃頁',
-'tooltip-ca-nstab-image' => '望吖圖像頁',
-'tooltip-ca-nstab-mediawiki' => '望吖系統消息',
-'tooltip-ca-nstab-template' => '望吖模板',
-'tooltip-ca-nstab-help' => '望吖幫助頁',
-'tooltip-ca-nstab-category' => '望吖分類頁',
-'tooltip-minoredit' => '拿佢設成細修改',
-'tooltip-save' => '存到倷嗰修改',
-'tooltip-preview' => '預覽倷嗰改動,存到佢之前勞煩噉扤吖!',
-'tooltip-diff' => '顯出倷對文章嗰改動。',
-'tooltip-compareselectedversions' => '望吖箇頁兩隻選定版本之間嗰伓同之處。',
-'tooltip-watch' => '拿箇頁加到倷嗰監視列表',
-'tooltip-recreate' => '管佢係否會拕刪卟都重新扤過箇頁。',
-'tooltip-upload' => '開始上傳',
-'tooltip-rollback' => '『反轉』可以一捺復原頭一位貢獻者對箇版嗰編輯',
-'tooltip-undo' => '『復原』可以到編輯模式裡頭開隻編輯表以便復原。佢容許到摘要裡頭加進原因。',
-
-# Stylesheets
-'common.css' => '/** 箇首嗰CSS會用到全部嗰皮膚 */',
-'monobook.css' => '/* 箇首嗰 CSS 會礙到正用Monobook皮膚嗰用戶 */',
-
-# Scripts
-'common.js' => '/* 箇首嗰JavaScript仰上載進到所有用戶全部頁面。 */',
-'monobook.js' => '/* 伓再使用;請用[[MediaWiki:common.js]] */',
-
-# Metadata
-'nodublincore' => 'Dublin Core RDF metadata到箇隻服務器用伓正。',
-'nocreativecommons' => 'Creative Commons RDF metadata到箇隻服務器用伓正。',
-'notacceptable' => '箇隻網站服務器提供伓正倷嗰用戶端認得嗰格式。',
-
-# Attribution
-'anonymous' => '{{SITENAME}}嗰匿名用戶',
-'siteuser' => '{{SITENAME}}用戶$1',
-'lastmodifiedatby' => '箇頁由$3對$1 $2最晏嗰改動。', # $1 date, $2 time, $3 user
-'othercontribs' => '以$1為基礎。',
-'others' => '別嗰',
-'siteusers' => '{{SITENAME}}用戶$1',
-'creditspage' => '頁面感謝',
-'nocredits' => '箇頁冇致謝名單。',
-
-# Spam protection
-'spamprotectiontitle' => '垃圾廣告隔離器',
-'spamprotectiontext' => '倷想存嗰頁面拕垃圾廣告隔離器測到。噉可能係外部連結扤得。',
-'spamprotectionmatch' => '下底係觸發垃圾廣告隔離器嗰內容: $1',
-'spambot_username' => 'MediaWiki 廣告清除',
-'spam_reverting' => '返回到伓包連到$1最晏嗰版本',
-'spam_blanking' => '全部包含連到$1嗰改動,留空',
-
-# Info page
-'infosubtitle' => '頁面嗰信息',
-'numedits' => '編輯數 (文章): $1',
-'numtalkedits' => '編輯數 (討論頁): $1',
-'numwatchers' => '監視人數: $1',
-'numauthors' => '作者人數 (文章): $1',
-'numtalkauthors' => '作者人數 (討論頁): $1',
-
-# Math options
-'mw_math_png' => '全部使用PNG圖像',
-'mw_math_simple' => '要係簡單嗰話都用HTML,不然就用PNG圖像',
-'mw_math_html' => '可以嗰話都用HTML,不然就用PNG圖像',
-'mw_math_source' => '顯示係TeX代碼 (文字瀏覽器用)',
-'mw_math_modern' => '新版瀏覽器嗰建議',
-'mw_math_mathml' => '儘可能用MathML (試驗中)',
-
-# Patrolling
-'markaspatrolleddiff' => '標到係檢查過嗰',
-'markaspatrolledtext' => '標到箇篇文章係檢查過嗰',
-'markedaspatrolled' => '標到係檢查過嗰',
-'markedaspatrolledtext' => '選正嗰版本標到係檢查過嗰。',
-'rcpatroldisabled' => '近來修改檢查拕關閉',
-'rcpatroldisabledtext' => '該朝子改動檢查嗰功能拕關閉嘞。',
-'markedaspatrollederror' => '標伓正佢係檢查過嗰',
-'markedaspatrollederrortext' => '倷要指正某隻版本才標得正佢係檢查過嗰。',
-'markedaspatrollederror-noautopatrol' => '倷標伓正倷自家嗰修改係檢查過嗰。',
-
-# Patrol log
-'patrol-log-page' => '巡查記錄',
-'patrol-log-line' => '標正嘞$1/$2版係檢查過嗰$3',
-'patrol-log-auto' => '(自動)',
-
-# Image deletion
-'deletedrevision' => '刪卟嘞舊版本$1。',
-'filedeleteerror-short' => '刪卟檔案出錯: $1',
-'filedeleteerror-long' => '刪卟檔案出嘞錯:
-
-$1',
-'filedelete-missing' => '檔案 "$1" 伓存在,所以刪佢伓正。',
-'filedelete-old-unregistered' => '指正嗰檔案修改 "$1" 資料庫裡伓存在。',
-'filedelete-current-unregistered' => '指正嗰檔案 "$1" 資料庫裡伓存在。',
-'filedelete-archive-read-only' => '存檔目錄 "$1" 服務器裡寫伓正。',
-
-# Browsing diffs
-'previousdiff' => '← 上一隻差異',
-'nextdiff' => '下一隻差異 →',
-
-# Media information
-'mediawarning' => "'''警告''': 話伓定箇隻檔案含到惡意代碼,執行佢話伓定會損壞倷嗰系統。<hr />",
-'imagemaxsize' => '檔案解釋頁嗰圖像大細限制到:',
-'thumbsize' => '縮略圖大細:',
-'widthheightpage' => '$1×$2,$3頁',
-'file-info' => '(檔案大細: $1, MIME 類型: $2)',
-'file-info-size' => '($1 × $2 像素,檔案大細:$3 ,MIME類型:$4)',
-'file-nohires' => '<small>冇更高解像度嗰圖像。</small>',
-'svg-long-desc' => '(SVG檔案,表面大細: $1 × $2 像素,檔案大細:$3)',
-'show-big-image' => '完整解析度',
-'show-big-image-thumb' => '<small>箇幅縮略圖嗰解析度: $1 × $2 像素</small>',
-
-# Special:NewFiles
-'newimages' => '新建圖像畫廊',
-'imagelisttext' => '底下係按$2排列嗰$1隻檔案列表。',
-'showhidebots' => '($1機器人)',
-'noimages' => '冇什哩可望。',
-'ilsubmit' => '尋',
-'bydate' => '按日子',
-'sp-newimages-showfrom' => '顯示從 $1 起嗰新文件',
-
-# Bad image list
-'bad_image_list' => '請根據下底嗰格式去寫:
-
-會考慮單列到嗰項目(以*開頭嗰項目)。
-頭隻連結非要連到隻壞圖。
-之後同一行嗰連結會考慮係特殊,也就係話係幅圖都能到哪篇文章同時顯示得正。',
-
# Variants for Gan language
'variantname-gan-hans' => '简体',
'variantname-gan-hant' => '繁體',
'variantname-gan' => '贛語原文',
-# Metadata
-'metadata' => '元數據',
-'metadata-help' => '箇隻檔案含到額外嗰信息。咁可能係數碼相機或掃描儀扤得。 要係改吥箇隻檔嗰源檔案,佢嗰資料伓見得會同改過後一樣。',
-'metadata-expand' => '顯到詳細資料',
-'metadata-collapse' => '弆到詳細資料',
-'metadata-fields' => '箇隻信息列到嗰 EXIF 元數據表會含到圖片顯示頁面裡頭, 要係元數據表扤壞嘞就只會顯下底嗰資料,別嗰元數據會自動弆到。
-* make
-* model
-* datetimeoriginal
-* exposuretime
-* fnumber
-* isospeedratings
-* focallength', # Do not translate list items
-
-# EXIF tags
-'exif-imagewidth' => '闊',
-'exif-imagelength' => '高',
-'exif-bitspersample' => '每像素byte數',
-'exif-compression' => '壓縮方法',
-'exif-photometricinterpretation' => '像素合成',
-'exif-orientation' => '擺放方向',
-'exif-samplesperpixel' => '像素數',
-'exif-planarconfiguration' => '數據排列',
-'exif-ycbcrsubsampling' => '黃色對洋紅二次抽樣比率',
-'exif-ycbcrpositioning' => '黃色同洋紅配置',
-'exif-xresolution' => '橫解析度',
-'exif-yresolution' => '直解析度',
-'exif-resolutionunit' => 'X軸同Y軸嗰解析度單位',
-'exif-stripoffsets' => '圖像資料位置',
-'exif-rowsperstrip' => '每帶行數',
-'exif-stripbytecounts' => '每壓縮帶byte數',
-'exif-jpeginterchangeformat' => 'JPEG SOI嗰偏移量',
-'exif-jpeginterchangeformatlength' => 'JPEG嗰byte數',
-'exif-transferfunction' => '轉移功能',
-'exif-whitepoint' => '白點色度',
-'exif-primarychromaticities' => '主要嗰色度',
-'exif-ycbcrcoefficients' => '顏色空間轉換矩陣系數',
-'exif-referenceblackwhite' => '黑白參照值',
-'exif-datetime' => '檔案改動日期同時間',
-'exif-imagedescription' => '圖像標題',
-'exif-make' => '相機廠商',
-'exif-model' => '相機型號',
-'exif-software' => '用嗰軟件',
-'exif-artist' => '作者',
-'exif-copyright' => '版權人',
-'exif-exifversion' => 'Exif版本',
-'exif-flashpixversion' => '支持嗰Flashpix版本',
-'exif-colorspace' => '顏色空間',
-'exif-componentsconfiguration' => '每部分嗰意思',
-'exif-compressedbitsperpixel' => '圖像壓縮模式',
-'exif-pixelydimension' => '有效圖像嗰闊',
-'exif-pixelxdimension' => '有效圖像嗰高',
-'exif-makernote' => '廠商摘要',
-'exif-usercomment' => '用戶摘要',
-'exif-relatedsoundfile' => '相關嗰聲氣資料',
-'exif-datetimeoriginal' => '資料創作時間',
-'exif-datetimedigitized' => '數碼化嗰時間',
-'exif-subsectime' => '日期時間秒',
-'exif-subsectimeoriginal' => '原始日期時間秒',
-'exif-subsectimedigitized' => '數碼化日期時間秒',
-'exif-exposuretime' => '曝光長度',
-'exif-exposuretime-format' => '$1 秒 ($2)',
-'exif-fnumber' => '光圈(F值)',
-'exif-exposureprogram' => '曝光模式',
-'exif-spectralsensitivity' => '感光度',
-'exif-isospeedratings' => 'ISO速率',
-'exif-oecf' => '光電轉換因數',
-'exif-shutterspeedvalue' => '快門速度',
-'exif-aperturevalue' => '光圈',
-'exif-brightnessvalue' => '亮度',
-'exif-exposurebiasvalue' => '曝光補償',
-'exif-maxaperturevalue' => '最大陸地光圈',
-'exif-subjectdistance' => '物距',
-'exif-meteringmode' => '測量模式',
-'exif-lightsource' => '光源',
-'exif-flash' => '閃光燈',
-'exif-focallength' => '焦距',
-'exif-subjectarea' => '主體區域',
-'exif-flashenergy' => '閃光燈強度',
-'exif-spatialfrequencyresponse' => '空間頻率反應',
-'exif-focalplanexresolution' => '焦平面X軸嗰解析度',
-'exif-focalplaneyresolution' => '焦平面Y軸嗰解析度',
-'exif-focalplaneresolutionunit' => '焦平面嗰解析度單位',
-'exif-subjectlocation' => '主體位置',
-'exif-exposureindex' => '曝光指數',
-'exif-sensingmethod' => '感光模式',
-'exif-filesource' => '檔案來源',
-'exif-scenetype' => '場景類型',
-'exif-cfapattern' => 'CFA模式',
-'exif-customrendered' => '自定義圖像處理',
-'exif-exposuremode' => '曝光模式',
-'exif-whitebalance' => '白平衡',
-'exif-digitalzoomratio' => '數碼放大比例',
-'exif-focallengthin35mmfilm' => '35毫米膠片焦距',
-'exif-scenecapturetype' => '場景拍攝類型',
-'exif-gaincontrol' => '場景控制',
-'exif-contrast' => '對比度',
-'exif-saturation' => '飽和度',
-'exif-sharpness' => '清晰度',
-'exif-devicesettingdescription' => '設備設定描述',
-'exif-subjectdistancerange' => '主體距離範圍',
-'exif-imageuniqueid' => '圖像獨有ID',
-'exif-gpsversionid' => 'GPS定位(tag)版本',
-'exif-gpslatituderef' => '南北緯',
-'exif-gpslatitude' => '緯度',
-'exif-gpslongituderef' => '東西經',
-'exif-gpslongitude' => '經度',
-'exif-gpsaltituderef' => '海拔參照值',
-'exif-gpsaltitude' => '海拔',
-'exif-gpstimestamp' => 'GPS時間(原子鐘)',
-'exif-gpssatellites' => '測量用嗰衛星',
-'exif-gpsstatus' => '接收器狀態',
-'exif-gpsmeasuremode' => '測量模式',
-'exif-gpsdop' => '測量精度',
-'exif-gpsspeedref' => '速度單位',
-'exif-gpsspeed' => 'GPS接收器速度',
-'exif-gpstrackref' => '移動方位參照',
-'exif-gpstrack' => '移動方位',
-'exif-gpsimgdirectionref' => '圖像方位參照',
-'exif-gpsimgdirection' => '圖像方位',
-'exif-gpsmapdatum' => '用嗰地理測量資料',
-'exif-gpsdestlatituderef' => '目標緯度參照',
-'exif-gpsdestlatitude' => '目標緯度',
-'exif-gpsdestlongituderef' => '目標經度嗰參照',
-'exif-gpsdestlongitude' => '目標經度',
-'exif-gpsdestbearingref' => '目標方位參照',
-'exif-gpsdestbearing' => '目標方位',
-'exif-gpsdestdistanceref' => '目標距離參照',
-'exif-gpsdestdistance' => '目標距離',
-'exif-gpsprocessingmethod' => 'GPS處理方法名',
-'exif-gpsareainformation' => 'GPS區功能變數名',
-'exif-gpsdatestamp' => 'GPS日期',
-'exif-gpsdifferential' => 'GPS差動修正',
-
-# EXIF attributes
-'exif-compression-1' => '冇壓縮',
-
-'exif-unknowndate' => '未知嗰日期',
-
-'exif-orientation-1' => '標準', # 0th row: top; 0th column: left
-'exif-orientation-2' => '左右斢轉', # 0th row: top; 0th column: right
-'exif-orientation-3' => '轉動180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '上下翻轉', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '逆時針轉90°接到上下翻轉', # 0th row: left; 0th column: top
-'exif-orientation-6' => '順時針轉90°', # 0th row: right; 0th column: top
-'exif-orientation-7' => '順時針轉90°接到上下翻轉', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '逆時針轉90°', # 0th row: left; 0th column: bottom
-
-'exif-planarconfiguration-1' => 'chunky格式',
-'exif-planarconfiguration-2' => 'planar格式',
-
-'exif-componentsconfiguration-0' => '伓存在',
-
-'exif-exposureprogram-0' => '冇定義',
-'exif-exposureprogram-1' => '手動',
-'exif-exposureprogram-2' => '標準程式',
-'exif-exposureprogram-3' => '光圈優先模式',
-'exif-exposureprogram-4' => '快門優先模式',
-'exif-exposureprogram-5' => '藝術程式(著重景深)',
-'exif-exposureprogram-6' => '運動程式(著重快門速度)',
-'exif-exposureprogram-7' => '人像模式(背景朦朧)',
-'exif-exposureprogram-8' => '風景模式(聚焦背景)',
-
-'exif-subjectdistance-value' => '$1米',
-
-'exif-meteringmode-0' => '未知',
-'exif-meteringmode-1' => '平均水準',
-'exif-meteringmode-2' => '中心加權平均測量',
-'exif-meteringmode-3' => '單點測',
-'exif-meteringmode-4' => '多點測',
-'exif-meteringmode-5' => '模式測量',
-'exif-meteringmode-6' => '局部測量',
-'exif-meteringmode-255' => '別嗰',
-
-'exif-lightsource-0' => '未知',
-'exif-lightsource-1' => '日光燈',
-'exif-lightsource-2' => '螢光燈',
-'exif-lightsource-3' => '白熾燈',
-'exif-lightsource-4' => '閃光燈',
-'exif-lightsource-9' => '天晴',
-'exif-lightsource-10' => '多雲',
-'exif-lightsource-11' => '深色調陰影',
-'exif-lightsource-12' => '日光螢光燈(色溫 D 5700 – 7100K)',
-'exif-lightsource-13' => '日溫白色螢光燈(N 4600 – 5400K)',
-'exif-lightsource-14' => '冷白色螢光燈(W 3900 – 4500K)',
-'exif-lightsource-15' => '白色螢光 (WW 3200 – 3700K)',
-'exif-lightsource-17' => '標準光A',
-'exif-lightsource-18' => '標準光B',
-'exif-lightsource-19' => '標準光C',
-'exif-lightsource-24' => 'ISO攝影棚鎢燈',
-'exif-lightsource-255' => '別嗰光源',
-
-'exif-focalplaneresolutionunit-2' => '英寸',
-
-'exif-sensingmethod-1' => '冇定義',
-'exif-sensingmethod-2' => '一隻彩色區域感應器',
-'exif-sensingmethod-3' => '兩隻彩色區域感應器',
-'exif-sensingmethod-4' => '三隻彩色區域感應器',
-'exif-sensingmethod-5' => '連續彩色區域感應器',
-'exif-sensingmethod-7' => '三線感應器',
-'exif-sensingmethod-8' => '連續彩色綫性感應器',
-
-'exif-scenetype-1' => '直接照像圖片',
-
-'exif-customrendered-0' => '標準程式',
-'exif-customrendered-1' => '自定義程式',
-
-'exif-exposuremode-0' => '自動曝光',
-'exif-exposuremode-1' => '手動曝光',
-'exif-exposuremode-2' => '自動曝光感知調節',
-
-'exif-whitebalance-0' => '自動白平衡',
-'exif-whitebalance-1' => '手動白平衡',
-
-'exif-scenecapturetype-0' => '標準',
-'exif-scenecapturetype-1' => '風景',
-'exif-scenecapturetype-2' => '人像',
-'exif-scenecapturetype-3' => '夜景',
-
-'exif-gaincontrol-0' => '冇',
-'exif-gaincontrol-1' => '低增益',
-'exif-gaincontrol-2' => '高增益',
-'exif-gaincontrol-3' => '低減益',
-'exif-gaincontrol-4' => '高減益',
-
-'exif-contrast-0' => '標準',
-'exif-contrast-1' => '低',
-'exif-contrast-2' => '高',
-
-'exif-saturation-0' => '標準',
-'exif-saturation-1' => '低飽和度',
-'exif-saturation-2' => '高飽和度',
-
-'exif-sharpness-0' => '標準',
-'exif-sharpness-1' => '低',
-'exif-sharpness-2' => '高',
-
-'exif-subjectdistancerange-0' => '未知',
-'exif-subjectdistancerange-1' => '宏觀',
-'exif-subjectdistancerange-2' => '近景',
-'exif-subjectdistancerange-3' => '遠景',
-
-# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
-'exif-gpslatitude-n' => '北緯',
-'exif-gpslatitude-s' => '南緯',
-
-# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
-'exif-gpslongitude-e' => '東經',
-'exif-gpslongitude-w' => '西經',
-
-'exif-gpsstatus-a' => '測量過程',
-'exif-gpsstatus-v' => '互動測量',
-
-'exif-gpsmeasuremode-2' => '二維測量',
-'exif-gpsmeasuremode-3' => '三維測量',
-
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
-'exif-gpsspeed-k' => '公里每小時',
-'exif-gpsspeed-m' => '英里每小時',
-'exif-gpsspeed-n' => '海浬每小時(節)',
-
-# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
-'exif-gpsdirection-t' => '真實方位',
-'exif-gpsdirection-m' => '地磁方位',
-
-# External editor support
-'edit-externally' => '用外部程式來編輯箇隻檔案',
-'edit-externally-help' => '(去[http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] 瞭解別嗰內容)',
-
-# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
-
-# E-mail address confirmation
-'confirmemail' => '確認email地址',
-'confirmemail_noemail' => '倷冇到倷嗰[[Special:Preferences|用戶設置]]設正一隻有效嗰電子郵件地址。',
-'confirmemail_text' => '箇隻網站要求倷用email功能之前確認下倷嗰email地址。按吖下底嗰鍵來發封確認郵件到倷嗰郵箱。佢會附帶一隻代碼連結;請到倷嗰瀏覽器打開箇隻連結來確認倷嗰email地址係有效嗰。',
-'confirmemail_pending' => '一隻確認代碼發到倷嗰郵箱,噉可能要等幾分鐘。
-要係冇收到,請申請過新嗰確認碼!',
-'confirmemail_send' => '寄出確認碼',
-'confirmemail_sent' => '確認郵件發出嘞。',
-'confirmemail_oncreate' => '一隻確認碼發到倷嗰郵箱。箇隻代碼伓係話倷要仰上登入,但要係倷想用 wiki 嗰任何email嗰相關功能,就非要先提交箇隻代碼。',
-'confirmemail_sendfailed' => '發送伓正確認郵件,請檢查email地址係否含到伓合字符。
-
-郵件發送人回應: $1',
-'confirmemail_invalid' => '無效嗰確認碼,箇隻代碼過嘞期。',
-'confirmemail_needlogin' => '倷要$1去確認倷嗰email地址。',
-'confirmemail_success' => '倷嗰郵箱已得到嘞確認。嘎倷能登得正入同到使用箇隻網站。',
-'confirmemail_loggedin' => '倷嗰email地址已得到確認。',
-'confirmemail_error' => '確認過程出錯。',
-'confirmemail_subject' => '{{SITENAME}}電子郵件地址確認',
-'confirmemail_body' => 'IP地址$1嗰用戶(可能係倷)到{{SITENAME}}註冊嘞帳戶"$2",並一同用嘞倷嗰email地址。
-
-請確認箇隻帳戶係歸倷嗰,接到啟動{{SITENAME}}裡頭嗰email功能。請到瀏覽器開到下底嗰連結:
-
-$3
-
-如果箇*伓係*倷,就冇必要打開箇隻連結。確認碼會到$4時間過期。',
-
-# Scary transclusion
-'scarytranscludedisabled' => '[跨網站嗰編碼轉換用伓正]',
-'scarytranscludefailed' => '[對伓住,提取$1失敗]',
-'scarytranscludetoolong' => '[對伓住,URL 太長]',
-
-# Trackbacks
-'trackbackbox' => '箇篇文章嗰引用:<br />
-$1',
-'trackbackremove' => '([$1刪除])',
-'trackbacklink' => '引用',
-'trackbackdeleteok' => '成功刪卟箇隻引用。',
-
-# Delete conflict
-'deletedwhileediting' => '警告: 倷編輯嗰時間有人刪卟嘞箇頁!',
-'confirmrecreate' => "倷編輯嗰時間,用戶[[User:$1|$1]]([[User talk:$1|對話]])因為下底原因刪卟嘞箇頁:
-: ''$2''
-請想正後再重建頁面。",
-'recreate' => '重建',
-
-# action=purge
-'confirm_purge_button' => '做得',
-'confirm-purge-top' => '想清卟箇頁嗰緩存?',
-
-# Multipage image navigation
-'imgmultipageprev' => '← 上頁',
-'imgmultipagenext' => '下頁 →',
-'imgmultigo' => '確定!',
-
-# Table pager
-'ascending_abbrev' => '增',
-'descending_abbrev' => '減',
-'table_pager_next' => '下頁',
-'table_pager_prev' => '上頁',
-'table_pager_first' => '首頁',
-'table_pager_last' => '末頁',
-'table_pager_limit' => '每頁顯到$1項',
-'table_pager_limit_submit' => '去',
-'table_pager_empty' => '冇結果',
-
-# Auto-summaries
-'autosumm-blank' => '移卟頁面嗰全部內容',
-'autosumm-replace' => "搦頁面換到 '$1'",
-'autoredircomment' => '重定向到[[$1]]',
-'autosumm-new' => '新頁: $1',
-
-# Live preview
-'livepreview-loading' => '載入中…',
-'livepreview-ready' => '載入中… 舞正哩!',
-'livepreview-failed' => '即時預覽失敗! 試吖標準預覽。',
-'livepreview-error' => '連接失敗: $1 "$2" 試吖標準預覽。',
-
-# Friendlier slave lag warnings
-'lag-warn-normal' => '將將嗰$1秒之內嗰改動話伓正伓會顯到列表裡頭。',
-'lag-warn-high' => '資料庫咁慢,將將嗰$1秒嗰改動話伓正伓會顯到列表裡頭。',
-
-# Watchlist editor
-'watchlistedit-numitems' => '倷嗰監視列表攏共有$1隻標題,佢伓包括對話頁。',
-'watchlistedit-noitems' => '倷嗰監視列表冇標題。',
-'watchlistedit-normal-title' => '編寫監視列表',
-'watchlistedit-normal-legend' => '到監視列表移卟標題',
-'watchlistedit-normal-explain' => '倷嗰監視列表嗰標題會到下底顯到。想移卟隻標題,到佢前頭勾吖,跟到按吖移除標題。倷也能[[Special:Watchlist/raw|編輯原始監視列表]]或[[Special:Watchlist/clear|移除所全部標題]]。',
-'watchlistedit-normal-submit' => '移除標題',
-'watchlistedit-normal-done' => '$1隻標題從倷嗰監視列表移卟嘞:',
-'watchlistedit-raw-title' => '編寫原始監視列表',
-'watchlistedit-raw-legend' => '編寫原始監視列表',
-'watchlistedit-raw-explain' => '倷嗰監視列表嗰標題會到下底顯到,哈能利用箇隻表去加進同到移除標題;一行一隻標題。扤完後,按更新監視列表。倷也能[[Special:Watchlist/edit|標準編輯器]]。',
-'watchlistedit-raw-titles' => '標題:',
-'watchlistedit-raw-submit' => '更新監視列表',
-'watchlistedit-raw-done' => '倷嗰監視列表更新正嘞。',
-'watchlistedit-raw-added' => '加嘞$1隻標題:',
-'watchlistedit-raw-removed' => '移嘞$1隻標題:',
-
-# Watchlist editing tools
-'watchlisttools-view' => '眵吖相關更改',
-'watchlisttools-edit' => '眵吖同到編寫監視列表',
-'watchlisttools-raw' => '編寫原始監視列表',
-
-# Core parser functions
-'unknown_extension_tag' => '伓認得嗰擴展標籤 "$1"',
-
-# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
-'version-extensions' => '裝正嗰插件',
-'version-specialpages' => '特別嗰頁面',
-'version-parserhooks' => '解析器鉤子',
-'version-variables' => '變量',
-'version-other' => '別嗰',
-'version-mediahandlers' => '媒體處理程序',
-'version-extension-functions' => '擴展功能',
-'version-parser-extensiontags' => '解析器擴展標籤',
-'version-skin-extension-functions' => '封皮插件功能',
-'version-hook-name' => '鉤子名',
-'version-hook-subscribedby' => '訂閱人',
-'version-version' => '版本',
-'version-license' => '許可證',
-'version-software' => '裝正嗰軟件',
-'version-software-version' => '版本',
-
-# Special:FilePath
-'filepath' => '文件路徑',
-'filepath-page' => '文件:',
-'filepath-submit' => '路徑',
-
-# Special:FileDuplicateSearch
-'fileduplicatesearch-filename' => '文件名:',
-'fileduplicatesearch-submit' => '尋',
-
-# Special:SpecialPages
-'specialpages' => '特殊頁',
-'specialpages-group-redirects' => '重定向特殊頁面',
-
);
diff --git a/languages/messages/MessagesGan_hans.php b/languages/messages/MessagesGan_hans.php
index cbf2713d..8a5d7980 100644
--- a/languages/messages/MessagesGan_hans.php
+++ b/languages/messages/MessagesGan_hans.php
@@ -24,7 +24,7 @@ $namespaceNames = array(
NS_MEDIAWIKI_TALK => 'MediaWiki谈詑',
NS_TEMPLATE_TALK => '模板谈詑',
NS_HELP_TALK => '帮助谈詑',
- NS_CATEGORY_TALK => '分类谈詑'
+ NS_CATEGORY_TALK => '分类谈詑',
);
$messages = array(
@@ -58,6 +58,7 @@ $messages = array(
'tog-enotifminoredits' => '有细𠮶改动都要发email到偶',
'tog-enotifrevealaddr' => '通知邮件可话到人听偶𠮶email地址',
'tog-shownumberswatching' => '显示有几多人监视',
+'tog-oldsig' => '原有签名𠮶预览:',
'tog-fancysig' => '搦签名以维基字对待(冇自动连结)',
'tog-externaleditor' => '默认用外部编辑器(专家用𠮶功能,要到倷𠮶电脑上头特别𠮶设置一下)',
'tog-externaldiff' => '默认用外部差异比较器(专家用𠮶功能,要到倷𠮶电脑上头特别𠮶设置一下)',
@@ -80,6 +81,13 @@ $messages = array(
'underline-never' => '绝伓使用',
'underline-default' => '浏览器默认',
+# Font style option in Special:Preferences
+'editfont-style' => '编辑区字型样式:',
+'editfont-default' => '浏览器预设',
+'editfont-monospace' => '固定间距字型',
+'editfont-sansserif' => '冇脚字型',
+'editfont-serif' => '有脚字型',
+
# Dates
'sunday' => '礼拜天',
'monday' => '礼拜一',
@@ -139,7 +147,7 @@ $messages = array(
'category-media-header' => '“$1”分类里头𠮶媒体',
'category-empty' => '“个只分类有包到任何文章或媒体”',
'hidden-categories' => '{{PLURAL:$1|只隐藏分类|只隐藏分类}}',
-'hidden-category-category' => '弆到𠮶分类', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '弆到𠮶分类',
'category-subcat-count' => '{{PLURAL:$2|个只分类净系有下头𠮶细分类。|个只分类有下头𠮶$1只细分类,拢共有$2类。}}',
'category-subcat-count-limited' => '个只类别里头有$1只细类别。',
'category-article-count' => '{{PLURAL:$2|个只分类净系有下头𠮶版本。|个只分类有下头𠮶$1版本,拢共有$2版。}}',
@@ -147,6 +155,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|个类净系有下头𠮶档案。|个类有下头𠮶$1只档案,拢共有$2只档案。}}',
'category-file-count-limited' => '个只类别里头有$1只档案。',
'listingcontinuesabbrev' => '续',
+'index-category' => '做正索引𠮶页面',
+'noindex-category' => '冇做索引𠮶页面',
'mainpagetext' => "'''安装正MediaWiki喽。'''",
'mainpagedocfooter' => '参看[http://meta.wikimedia.org/wiki/Help:Contents 用户指南]里头会话到啷用wiki软件
@@ -157,10 +167,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常问题解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布email清单]',
-'about' => '关于',
-'article' => '文章',
-'newwindow' => '(开只新窗口)',
-'cancel' => '取消',
+'about' => '关于',
+'article' => '文章',
+'newwindow' => '(开只新窗口)',
+'cancel' => '取消',
+'moredotdotdot' => '别𠮶...',
+'mypage' => '偶𠮶页面',
+'mytalk' => '偶𠮶对话框',
+'anontalk' => '个只IP𠮶对话框',
+'navigation' => '导航',
+'and' => ' 同到',
+
+# Cologne Blue skin
'qbfind' => '寻',
'qbbrowse' => '查看',
'qbedit' => '编写',
@@ -168,15 +186,35 @@ $messages = array(
'qbpageinfo' => '个页信息',
'qbmyoptions' => '偶𠮶选项',
'qbspecialpages' => '特殊页',
-'moredotdotdot' => '别𠮶...',
-'mypage' => '偶𠮶页面',
-'mytalk' => '偶𠮶对话框',
-'anontalk' => '个只IP𠮶对话框',
-'navigation' => '导航',
-'and' => ' 同到',
-
-# Metadata in edit box
-'metadata_help' => '元数据:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:问得蛮多𠮶问题',
+
+# Vector skin
+'vector-action-addsection' => '添主题',
+'vector-action-delete' => '删吥',
+'vector-action-move' => '移吥',
+'vector-action-protect' => '护到',
+'vector-action-undelete' => '望下删吥𠮶页面',
+'vector-action-unprotect' => '解除保护',
+'vector-namespace-category' => '分类',
+'vector-namespace-help' => '帮助页',
+'vector-namespace-image' => '档案',
+'vector-namespace-main' => '页面',
+'vector-namespace-media' => '媒体页',
+'vector-namespace-mediawiki' => '介面',
+'vector-namespace-project' => '计划页',
+'vector-namespace-special' => '特别页',
+'vector-namespace-talk' => '谈詑',
+'vector-namespace-template' => '模板',
+'vector-namespace-user' => '用户页',
+'vector-view-create' => '创建',
+'vector-view-edit' => '编辑',
+'vector-view-history' => '望下历史',
+'vector-view-view' => '读',
+'vector-view-viewsource' => '望下原始码',
+'actions' => '动作',
+'namespaces' => '空间名',
+'variants' => '变换',
'errorpagetitle' => '错误',
'returnto' => '回到$1。',
@@ -226,18 +264,22 @@ $messages = array(
'otherlanguages' => '别𠮶话',
'redirectedfrom' => '(从$1跳过来)',
'redirectpagesub' => '跳转页',
-'lastmodifiedat' => '个页最晏𠮶改动系:$1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '个页最晏𠮶改动系:$1 $2。',
'viewcount' => '个页拖人眵嘞$1回。',
'protectedpage' => '拖保护页',
'jumpto' => '跳到:',
'jumptonavigation' => '导航',
'jumptosearch' => '寻',
+'view-pool-error' => '不过意,个只伺服器到个时间超吥最大负荷。
+多伤哩𠮶用户较得去望个页。
+想望过个页𠮶话请等多一下。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '关于 {{SITENAME}}',
'aboutpage' => 'Project:关于',
'copyright' => '个版𠮶内容系根据$1𠮶条款发布。',
-'copyrightpagename' => '{{SITENAME}} 版权',
'copyrightpage' => '{{ns:project}}:版权资讯',
'currentevents' => '新出𠮶事',
'currentevents-url' => 'Project:新出𠮶事',
@@ -245,8 +287,6 @@ $messages = array(
'disclaimerpage' => 'Project:免责声明',
'edithelp' => '编写帮助',
'edithelppage' => 'Help:啷编写文章',
-'faq' => 'FAQ',
-'faqpage' => 'Project:问得蛮多𠮶问题',
'helppage' => 'Help:说明',
'mainpage' => '封面',
'mainpage-description' => '封面',
@@ -324,10 +364,6 @@ MySQL回到错误 "<tt>$3: $4</tt>"。',
“$1”
来自函数“$2”。
MySQL回到错误“$3: $4”。',
-'noconnect' => '对伓住!wiki碰到嘞技术问题,连伓到数据库服务器。<br />
-$1',
-'nodb' => '选伓正服务器 $1',
-'cachederror' => '底下系请求页𠮶缓存副本,可能伓系最新𠮶。',
'laggedslavemode' => '警告:页面可能冇有新近内容。',
'readonly' => '数据库上正锁啰',
'enterlockreason' => '请输入锁到数据库𠮶理由,包括预计几时间解锁',
@@ -378,14 +414,12 @@ $2',
'virus-unknownscanner' => '不晓得𠮶防病毒:',
# Login and logout pages
-'logouttitle' => '用户退出',
'logouttext' => "'''倷退出正嘞。'''
倷可以接到匿名使用{{SITENAME}},或重登入过,只把子页面可能会接到话倷系登入状态,除非系倷删吥浏览器缓存。",
'welcomecreation' => '== 欢迎, $1! ==
建正嘞倷𠮶帐户,莫忘吥设置{{SITENAME}}𠮶个人参数。',
-'loginpagetitle' => '用户登入',
'yourname' => '用户名:',
'yourpassword' => '密码:',
'yourpasswordagain' => '输过道密码:',
@@ -407,20 +441,7 @@ $2',
'createaccountmail' => '通过email',
'badretype' => '倷输𠮶密码伓合。',
'userexists' => '倷输𠮶用户名系人家𠮶,选过只喽!',
-'youremail' => '电子邮件:',
-'username' => '用户名:',
-'uid' => '用户ID:',
-'yourrealname' => '真名:',
-'yourlanguage' => '语言:',
-'yourvariant' => '转换字体',
-'yournick' => '签名:',
-'badsig' => '原始签名错误,请检查HTML。',
-'badsiglength' => '花名咁长?佢𠮶长度要少过$1只字符。',
-'email' => '电子邮件',
-'prefs-help-realname' => '真名系选填𠮶,要系倷填嘞,倷𠮶作品就会标到倷𠮶名字。',
'loginerror' => '登入错误',
-'prefs-help-email' => 'email系选填𠮶,佢可以让伓认得倷𠮶人通过email联系正倷。',
-'prefs-help-email-required' => '需要电子邮件地址。',
'nocookiesnew' => '帐户扤正嘞!测到倷关吥嘞Cookies,麻烦倷开到佢登入过。',
'nocookieslogin' => '个首要用 Cookies 登入,测到倷关吥嘞Cookies,麻烦倷开到佢登入过。',
'noname' => '倷冇输正有效𠮶用户名。',
@@ -456,16 +477,15 @@ $2',
'loginlanguagelabel' => '语言: $1',
# Password reset dialog
-'resetpass' => '设过帐户密码',
-'resetpass_announce' => '倷系用到临时email𠮶代码登入𠮶。要登正入,倷要到个首设定只新密码:',
-'resetpass_header' => '设过密码',
-'oldpassword' => '老密码:',
-'newpassword' => '新密码:',
-'retypenew' => '确认密码:',
-'resetpass_submit' => '设定密码同到登入',
-'resetpass_success' => '倷𠮶密码改正喽!正帮倷登入...',
-'resetpass_bad_temporary' => '冇用𠮶临时密码。可能倷改正嘞倷𠮶密码,或者重新要过只新𠮶临时密码。',
-'resetpass_forbidden' => '到{{SITENAME}}上改伓正密码',
+'resetpass' => '设过帐户密码',
+'resetpass_announce' => '倷系用到临时email𠮶代码登入𠮶。要登正入,倷要到个首设定只新密码:',
+'resetpass_header' => '设过密码',
+'oldpassword' => '老密码:',
+'newpassword' => '新密码:',
+'retypenew' => '确认密码:',
+'resetpass_submit' => '设定密码同到登入',
+'resetpass_success' => '倷𠮶密码改正喽!正帮倷登入...',
+'resetpass_forbidden' => '到{{SITENAME}}上改伓正密码',
# Edit page toolbar
'bold_sample' => '粗体字',
@@ -531,7 +551,6 @@ $2',
'blockededitsource' => "底下系倷对'''$1'''𠮶'''编辑'''内容:",
'whitelistedittitle' => '登入后才编得正',
'whitelistedittext' => '起先倷要$1才编得正个页。',
-'confirmedittitle' => 'email确认后才编得正',
'confirmedittext' => '确认嘞email才能编写个页。麻烦用[[Special:Preferences|参数设置]]设置同确认倷𠮶email。',
'nosuchsectiontitle' => '冇个只段落',
'nosuchsectiontext' => '倷尝试编写𠮶段落伓存在。',
@@ -546,7 +565,8 @@ $2',
'noarticletext' => '眼下个页哈冇内容,倷可以到别𠮶页面[[Special:Search/{{PAGENAME}}|寻吖个页𠮶标题]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 寻吖有关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编写个页]。',
'clearyourcache' => "'''注意:''' 保存之后, 倷要清吥浏览器𠮶缓存才眵得正改𠮶内容。 '''Mozilla / Firefox / Safari:''' 按到 ''Shift'' 接到按''刷新''(或按吖''Ctrl-Shift-R'',到苹果Mac上按''Cmd-Shift-R'');'''IE:''' 按到 ''Ctrl''接到按''刷新'',或按吖''Ctrl-F5'';'''Konqueror:''' 单只要按 ''刷新'';'''Opera:''' 用户要到 ''工具-设置'' 完全𠮶清除缓存。",
-'usercssjsyoucanpreview' => "'''提示:''' 存到前请用'望吖起'来测吖倷𠮶新CSS/JS 。",
+'usercssyoucanpreview' => "'''提示:''' 存到前请用'望吖起'来测吖倷𠮶新CSS 。",
+'userjsyoucanpreview' => "'''提示:''' 存到前请用'望吖起'来测吖倷𠮶新JS 。",
'usercsspreview' => "'''注意倷单系到预览倷个人𠮶 CSS,内容哈冇保存!'''",
'userjspreview' => "'''注意倷单系到测试/预览倷个人𠮶 JavaScript,内容哈冇保存!'''",
'userinvalidcssjstitle' => "'''警告:''' 冇\"\$1\"𠮶皮肤。请记到自定义𠮶 .css 同 .js 页要用小写。就话,{{ns:user}}:Foo/monobook.css 伓等同 {{ns:user}}:Foo/Monobook.css。",
@@ -591,8 +611,8 @@ $2',
'semiprotectedpagewarning' => "'''注意:'''个页拖锁到嘞,单只注册用户编得正。",
'cascadeprotectedwarning' => '警告: 个页已经受保护,单只管理员权限𠮶用户才改得正,因为个页同底下𠮶连锁保护𠮶{{PLURAL:$1|一只|多只}}页面包到嘞:',
'titleprotectedwarning' => "'''警告:个只页锁到喽,只有一滴子人才建得正。'''",
-'templatesused' => '个只页面使用𠮶模板有:',
-'templatesusedpreview' => '个只预览使用𠮶模板有:',
+'templatesused' => '个只页面使用𠮶有{{PLURAL:$1|模板|模板}}:',
+'templatesusedpreview' => '个只预览使用𠮶有{{PLURAL:$1|模板|模板}}',
'templatesusedsection' => '个只段落使用𠮶模板有:',
'template-protected' => '(保护)',
'template-semiprotected' => '(半保护)',
@@ -604,10 +624,12 @@ $2',
'permissionserrors' => '权限错误',
'permissionserrorstext' => '根据底下𠮶{{PLURAL:$1|原因|原因}},倷冇权限去扤:',
'permissionserrorstext-withaction' => '根据下头𠮶{{PLURAL:$1|原因|原因}},你冇权力去舞$2:',
-'recreate-deleted-warn' => "'''警告: 倷正重建一只之前拖删吥𠮶页面。'''
+'recreate-moveddeleted-warn' => "'''警告: 倷正重建一只之前拖删吥𠮶页面。'''
倷应该要考虑吖继续编辑个页面系否有必要。
为到方便,个页𠮶删除记录已经到下底提供:",
+'moveddeleted-notice' => '个只版面已经拕删吥喽。
+下头提供个只版面𠮶删除日志,以供参考。',
# "Undo" feature
'undo-success' => '个只编辑可以拖取销。请检查吖以确定个系倷想扤𠮶,接到保存修改去完成撤销编辑。',
@@ -622,8 +644,9 @@ $2',
'viewpagelogs' => '眵吖个页𠮶日志',
'nohistory' => '个页冇修改历史。',
'currentrev' => '眼前𠮶修改版本',
+'currentrev-asof' => '到 $1 𠮶眼下改动',
'revisionasof' => '$1𠮶修改版本',
-'revision-info' => '$2到$1扤𠮶修订版本', # Additionally available: $3: revision id
+'revision-info' => '$2到$1扤𠮶修订版本',
'previousrevision' => '←之前𠮶修改',
'nextrevision' => '接到𠮶修改→',
'currentrevisionlink' => '眼前𠮶修改',
@@ -635,7 +658,6 @@ $2',
'histlegend' => '差异选择: 标到伓同版本𠮶单选键,接到按吖督上𠮶键比较下。<br />
说明: (眼下) 指同目前版本𠮶比较,(之前) 指同之前修改版本𠮶比较,细 = 细修改。',
'history-fieldset-title' => '浏览历史',
-'deletedrev' => '[拖删除]',
'histfirst' => '最早版本',
'histlast' => '最晏版本',
'historysize' => '({{PLURAL:$1|1 字节|$1 字节}})',
@@ -644,15 +666,15 @@ $2',
# Revision feed
'history-feed-title' => '修改历史',
'history-feed-description' => '本站个页𠮶修改历史',
-'history-feed-item-nocomment' => '$1到$2', # user at time
+'history-feed-item-nocomment' => '$1到$2',
'history-feed-empty' => '要求𠮶页面伓存在。佢可能拖删吥嘞或改嘞名。试吖[[Special:Search|到本站寻]]有关𠮶新页面内容。',
# Revision deletion
'rev-deleted-comment' => '(注释挪吥嘞)',
'rev-deleted-user' => '(用户名挪吥嘞)',
'rev-deleted-event' => '(项目挪吥嘞)',
-'rev-deleted-text-permission' => '个页𠮶改动从共用文档挪吥嘞。到[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 删除日志] 里度倷话伓定有详细𠮶资料。',
-'rev-deleted-text-view' => '个页𠮶改动从共用文档挪吥嘞。作为本站𠮶管理员,倷查看得正;到[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 删除日志] 里度有详细𠮶资料。',
+'rev-deleted-text-permission' => '个页𠮶改动从共用文档挪吥嘞。到[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 删除日志] 里度倷话伓定有详细𠮶资料。',
+'rev-deleted-text-view' => '个页𠮶改动从共用文档挪吥嘞。作为本站𠮶管理员,倷查看得正;到[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 删除日志] 里度有详细𠮶资料。',
'rev-delundel' => '显示/弆到',
'revisiondelete' => '删除/反删除修改',
'revdelete-nooldid-title' => '冇目标修订',
@@ -664,12 +686,12 @@ $2',
个站别𠮶管理员哈系能眵吖弆到𠮶内容,同到通过同佢一样𠮶界面恢复删除,除非设正嘞附加𠮶限制。",
'revdelete-legend' => '设置可见性𠮶限制',
'revdelete-hide-text' => '弆到修改内容',
+'revdelete-hide-image' => '弆到档内容',
'revdelete-hide-name' => '弆到动作同目标',
'revdelete-hide-comment' => '弆到编辑说明',
'revdelete-hide-user' => '弆到编者𠮶用户名/IP',
'revdelete-hide-restricted' => '同样𠮶限制应用到管理员,接到锁定个只界面',
'revdelete-suppress' => '同时压到由操作员同别𠮶用户𠮶资料',
-'revdelete-hide-image' => '弆到档内容',
'revdelete-unsuppress' => '移吥恢复正𠮶改动𠮶限制',
'revdelete-log' => '原因:',
'revdelete-submit' => '应用到选正𠮶修改',
@@ -713,16 +735,14 @@ $2',
'searchresulttext' => '有关𠮶{{SITENAME}}𠮶更多资料,请参看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => "用'''[[:$1]]'''",
'searchsubtitleinvalid' => "用'''$1'''寻",
-'noexactmatch' => "'''冇寻到标题系\"\$1\"𠮶页面。''' 倷可以[[:\$1|新开个只页面]]。",
-'noexactmatch-nocreate' => "'''冇题目系 \"\$1\" 𠮶页面'''",
'toomanymatches' => '返回多伤喽𠮶结果,请试吖用别𠮶词语寻过',
'titlematches' => '文章标题符合',
'notitlematches' => '冇页面同文章标题符合',
'textmatches' => '页面内容符合',
'notextmatches' => '冇页面内容符合',
-'prevn' => '前$1只',
-'nextn' => '后$1只',
-'viewprevnext' => '眵吖($1) ($2) ($3)',
+'prevn' => '前{{PLURAL:$1|$1}}只',
+'nextn' => '后{{PLURAL:$1|$1}}只',
+'viewprevnext' => '眵吖($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:说明',
'search-result-size' => '$1 ($2只字)',
'search-redirect' => '(重定向 $1)',
@@ -744,67 +764,70 @@ $2',
'powersearch-field' => '寻',
'searchdisabled' => '{{SITENAME}}𠮶搜索功能已经关闭。倷可以用Google寻吖。但系佢𠮶索引可能系早先𠮶。',
-# Preferences page
-'preferences' => '参数设置',
-'mypreferences' => '偶𠮶参数设置',
-'prefs-edits' => '编辑数:',
-'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '倷要[[Special:UserLogin|登入]]后才设得正个人参数。',
-'prefsreset' => '参数已经拖重新设过。',
+# Quickbar
'qbsettings' => '快捷导航条',
'qbsettings-none' => '冇',
'qbsettings-fixedleft' => '左首固定',
'qbsettings-fixedright' => '右首固定',
'qbsettings-floatingleft' => '左首漂移',
'qbsettings-floatingright' => '左首漂移',
-'changepassword' => '改过密码',
-'skin' => '皮',
-'skin-preview' => '(预览)',
-'math' => '数学公式',
-'dateformat' => '日期格式',
-'datedefault' => '默认项目',
-'datetime' => '日期同到时间',
-'math_failure' => '分析失败',
-'math_unknown_error' => '未知错误',
-'math_unknown_function' => '未知函数',
-'math_lexing_error' => '句法错误',
-'math_syntax_error' => '文法错误',
-'math_image_error' => 'PNG转换失败;请检查系否装正嘞latex, dvips, gs同到convert',
-'math_bad_tmpdir' => '写伓正或建伓正数学公式临时目录',
-'math_bad_output' => '写伓正或建伓正数学公式输出目录',
-'math_notexvc' => '执行伓正"texvc";请参看 math/README 再配置过。',
-'prefs-personal' => '用户介绍',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '监视列表',
-'prefs-watchlist-days' => '监视列表显示最久𠮶日数:',
-'prefs-watchlist-edits' => '加强版𠮶监视列表显示最多更改数目:',
-'prefs-misc' => '杂项',
-'saveprefs' => '存到参数',
-'resetprefs' => '设过参数',
-'textboxsize' => '编写',
-'rows' => '横:',
-'columns' => '竖:',
-'searchresultshead' => '设置寻到𠮶结果',
-'resultsperpage' => '设置寻到𠮶链接数',
-'contextlines' => '设置寻到𠮶行数:',
-'contextchars' => '设置寻到𠮶字数:',
-'stub-threshold' => '<a href="#" class="stub">细文链接</a>格式门槛:',
-'recentchangesdays' => '最近更改中𠮶显示日数:',
-'recentchangescount' => '最近更改中𠮶编辑数:',
-'savedprefs' => '倷𠮶个人参数设置保存正嘞。',
-'timezonelegend' => '时区',
-'timezonetext' => '¹倷𠮶当地时区同服务器时间(UTC)𠮶时差。',
-'localtime' => '当地时区',
-'timezoneoffset' => '时差¹',
-'servertime' => '服务器时间',
-'guesstimezone' => '到浏览器上填',
-'allowemail' => '接受别𠮶用户𠮶邮件',
-'defaultns' => '默认搜索𠮶名字空间:',
-'default' => '默认',
-'files' => '档案',
+
+# Preferences page
+'preferences' => '参数设置',
+'mypreferences' => '偶𠮶参数设置',
+'prefs-edits' => '编辑数:',
+'prefsnologin' => '哈冇登入',
+'prefsnologintext' => '倷要[[Special:UserLogin|登入]]后才设得正个人参数。',
+'changepassword' => '改过密码',
+'prefs-skin' => '皮',
+'skin-preview' => '(预览)',
+'prefs-math' => '数学公式',
+'datedefault' => '默认项目',
+'prefs-datetime' => '日期同到时间',
+'prefs-personal' => '用户介绍',
+'prefs-rc' => '最近更改',
+'prefs-watchlist' => '监视列表',
+'prefs-watchlist-days' => '监视列表显示最久𠮶日数:',
+'prefs-watchlist-edits' => '加强版𠮶监视列表显示最多更改数目:',
+'prefs-misc' => '杂项',
+'saveprefs' => '存到参数',
+'resetprefs' => '设过参数',
+'prefs-editing' => '编写',
+'rows' => '横:',
+'columns' => '竖:',
+'searchresultshead' => '设置寻到𠮶结果',
+'resultsperpage' => '设置寻到𠮶链接数',
+'contextlines' => '设置寻到𠮶行数:',
+'contextchars' => '设置寻到𠮶字数:',
+'stub-threshold' => '<a href="#" class="stub">细文链接</a>格式门槛:',
+'recentchangesdays' => '最近更改中𠮶显示日数:',
+'recentchangescount' => '最近更改中𠮶编辑数:',
+'savedprefs' => '倷𠮶个人参数设置保存正嘞。',
+'timezonelegend' => '时区',
+'localtime' => '当地时区',
+'timezoneoffset' => '时差¹',
+'servertime' => '服务器时间',
+'guesstimezone' => '到浏览器上填',
+'allowemail' => '接受别𠮶用户𠮶邮件',
+'defaultns' => '默认搜索𠮶名字空间:',
+'default' => '默认',
+'prefs-files' => '档案',
+'youremail' => '电子邮件:',
+'username' => '用户名:',
+'uid' => '用户ID:',
+'yourrealname' => '真名:',
+'yourlanguage' => '语言:',
+'yourvariant' => '转换字体',
+'yournick' => '签名:',
+'badsig' => '原始签名错误,请检查HTML。',
+'badsiglength' => '花名咁长?佢𠮶长度要少过$1只字符。',
+'email' => '电子邮件',
+'prefs-help-realname' => '真名系选填𠮶,要系倷填嘞,倷𠮶作品就会标到倷𠮶名字。',
+'prefs-help-email' => 'email系选填𠮶,佢可以让伓认得倷𠮶人通过email联系正倷。',
+'prefs-help-email-required' => '需要电子邮件地址。',
# User rights
-'userrights' => '用户权限管理', # Not used as normal message but as header for the special page itself
+'userrights' => '用户权限管理',
'userrights-lookup-user' => '管理用户群',
'userrights-user-editname' => '输入用户名:',
'editusergroup' => '编辑用户群',
@@ -850,7 +873,7 @@ $2',
'recentchangestext' => '跟到个只wiki上𠮶最新改动。',
'recentchanges-feed-description' => '跟到个只 wiki 上集合𠮶最后改动。',
'rcnote' => "下底系到$4 $5,个'''$2'''日𠮶'''$1'''回改动:",
-'rcnotefrom' => "底下系自'''$2'''𠮶更改(顶多显示'''$1'''):",
+'rcnotefrom' => "底下系自'''$2'''𠮶更改(顶多显示'''$1'''):",
'rclistfrom' => '显示自$1后𠮶新改动',
'rcshowhideminor' => '$1细编辑',
'rcshowhidebots' => '$1机器人𠮶编辑',
@@ -875,6 +898,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => '链接页𠮶更改',
+'recentchangeslinked-feed' => '链接页𠮶更改',
+'recentchangeslinked-toolbox' => '链接页𠮶更改',
'recentchangeslinked-title' => '链接页𠮶改动到 "$1"',
'recentchangeslinked-noresult' => '个段时间𠮶链接页冇更改。',
'recentchangeslinked-summary' => "个只特殊页列出个页连出去页面𠮶最晏改动(或系某只分类𠮶页面)。
@@ -885,7 +910,6 @@ $2',
# Upload
'upload' => '上传档案',
'uploadbtn' => '上传档案',
-'reupload' => '上传过',
'reuploaddesc' => '返回上传列表。',
'uploadnologin' => '冇登入',
'uploadnologintext' => '倷要[[Special:UserLogin|登入]]再上传得正档案。',
@@ -925,7 +949,6 @@ $2',
* 上载文档𠮶档名: '''<tt>[[:$1]]</tt>'''
* 目前档𠮶档名: '''<tt>[[:$2]]</tt>'''
请拣只伓同𠮶名字。",
-'fileexists-thumb' => "<center>'''早就有喽𠮶文件'''</center>",
'fileexists-thumbnail-yes' => "个只档案好像系一只图像𠮶缩小版''(缩图)''。 [[$1|thumb]]
请检查清楚个只档案'''<tt>[[:$1]]</tt>'''。
如果检查后𠮶档同原先图像𠮶大小系一样𠮶话,就嫑再上传多一只缩图。",
@@ -940,7 +963,6 @@ $2',
'uploaddisabled' => '上传伓正',
'uploaddisabledtext' => '上传伓正文件到{{SITENAME}}。',
'uploadscripted' => '个只档案包到可能会误导网络浏览器错误解释𠮶 HTML 或脚本代码。',
-'uploadcorrupt' => '个只档案包含或者系一只伓正确𠮶副档名。请检查吖接到重新上传。',
'uploadvirus' => '个只档案有病毒!详情: $1',
'sourcefilename' => '原始档案名:',
'destfilename' => '目标档案名:',
@@ -966,6 +988,7 @@ $2',
'upload-curl-error28-text' => '站点回应时间过长。请检查个只网站𠮶访问系否正常,过吖再试过。倷可能要等网络伓咁卡𠮶时间再试吖。',
'license' => '授权:',
+'license-header' => '授权:',
'nolicense' => '冇选定',
'license-nopreview' => '(冇预览用得正)',
'upload_source_url' => '(一只有效𠮶,公开𠮶 URL)',
@@ -982,6 +1005,7 @@ $2',
'listfiles_description' => '简话',
# File description page
+'file-anchor-link' => '文件',
'filehist' => '档案历史',
'filehist-help' => '按到日期/时间去眵吖许时间有过𠮶档案。',
'filehist-deleteall' => '全部删掉',
@@ -990,6 +1014,7 @@ $2',
'filehist-current' => '眼前',
'filehist-datetime' => '日期/时间',
'filehist-thumb' => '缩图',
+'filehist-thumbtext' => '到$1𠮶缩图版本',
'filehist-user' => '用户',
'filehist-dimensions' => '尺寸',
'filehist-filesize' => '档案大细',
@@ -997,11 +1022,11 @@ $2',
'imagelinks' => '链接',
'linkstoimage' => '底下𠮶页面链接到个只档案:',
'nolinkstoimage' => '冇页面链接到个只档案。',
-'sharedupload' => '个只档案来自$1,佢可能到别𠮶项目拕应用。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '更多信息请参看$1。',
-'shareduploadwiki-linktext' => '档案描述页',
-'noimage' => '同名𠮶档案伓存在,倷可以$1。',
-'noimage-linktext' => '上传佢',
+'sharedupload' => '个只档案来自$1,佢可能到别𠮶项目拕应用。',
+'sharedupload-desc-there' => '个只档案来自$1,佢可能拕应用嘚别𠮶项目。
+请相吖[$2 档案描述页面]以了解佢𠮶相关资讯。',
+'sharedupload-desc-here' => '个只档案来自$1,佢可能拕应用嘚别𠮶项目。
+佢𠮶[$2 档案描述页面]显示嘚下头。',
'uploadnewversion-linktext' => '上传个只档案𠮶新版本',
# File reversion
@@ -1062,6 +1087,7 @@ $2',
'statistics-header-edits' => '编辑数据',
'statistics-header-views' => '查看数据',
'statistics-header-users' => '用户数据',
+'statistics-header-hooks' => '别𠮶数据',
'statistics-articles' => '内容页',
'statistics-pages' => '页面',
'statistics-pages-desc' => 'wiki上头所有页面,包到谈詑页、重定向等',
@@ -1086,8 +1112,8 @@ $2',
'brokenredirects' => '坏吥𠮶重定向页',
'brokenredirectstext' => '底下𠮶重定向页面指到𠮶系伓存在𠮶页面:',
-'brokenredirects-edit' => '(编写)',
-'brokenredirects-delete' => '(删吥)',
+'brokenredirects-edit' => '编写',
+'brokenredirects-delete' => '删吥',
'withoutinterwiki' => '冇语言链接𠮶页面',
'withoutinterwiki-summary' => '底下𠮶页面系冇语言链接到别𠮶语言版本:',
@@ -1268,7 +1294,7 @@ $NEWPAGE
本站: $PAGEEDITOR_WIKI 今后伓会通知倷将来𠮶改动,除非接到来到个页。倷也能设过倷全部监视页𠮶通知标记。
-{{SITENAME}}通知系统 – 会改卟倷𠮶监视列表设置,请去 {{fullurl:{{ns:special}}:Watchlist/edit}}
+{{SITENAME}}通知系统 – 会改卟倷𠮶监视列表设置,请去 {{fullurl:{{#special:Watchlist}}/edit}}
回馈同到别𠮶说明: {{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1308,8 +1334,8 @@ $NEWPAGE
别𠮶人编辑过或系恢复嘞个页。
最晏编辑人: [[User:$3|$3]] ([[User talk:$3|讨论]])。',
-'editcomment' => "编辑介绍: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => '返回由[[Special:Contributions/$2|$2]] ([[User talk:$2|对话]])𠮶编辑;恢复到[[User:$1|$1]]𠮶最末一只版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "编辑介绍: \"''\$1''\"。",
+'revertpage' => '返回由[[Special:Contributions/$2|$2]] ([[User talk:$2|对话]])𠮶编辑;恢复到[[User:$1|$1]]𠮶最末一只版本',
'rollback-success' => '返回由$1𠮶编辑;恢复到$2𠮶最末一只版本。',
'sessionfailure' => '倷𠮶登入好像有嚸问题,为到防范未然,个只动作拖取消嘞。
@@ -1328,7 +1354,6 @@ $NEWPAGE
'protectexpiry' => '期限:',
'protect_expiry_invalid' => '到期时间无效。',
'protect_expiry_old' => '到期时间已过。',
-'protect-unchain' => '莫锁到移动权限',
'protect-text' => "倷到个首能浏览或修改页面'''$1'''𠮶保护级别。",
'protect-locked-blocked' => "倷改伓正拖封锁时𠮶保护级别。下底系'''$1'''现今𠮶保护级别:",
'protect-locked-dblock' => "数据库锁到嘞就改伓正保护级别。下底系'''$1'''现今𠮶保护级别:",
@@ -1344,7 +1369,7 @@ $NEWPAGE
'protect-expiring' => '$1 (UTC)到期',
'protect-cascade' => '保护个页含到𠮶页面 (连锁保护)',
'protect-cantedit' => '倷改伓正个页𠮶保护程度,因为倷冇搦到编辑授权。',
-'protect-expiry-options' => '两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite',
'restriction-type' => '权限:',
'restriction-level' => '限制级别:',
'minimum-size' => '最细码子',
@@ -1410,7 +1435,7 @@ $1',
'contributions-title' => '$1𠮶用户贡献',
'mycontris' => '偶𠮶贡献',
'contribsub2' => '$1𠮶贡献 ($2)',
-'nocontribs' => '冇寻到合到条件𠮶改动。', # Optional parameter: $1 is the user name
+'nocontribs' => '冇寻到合到条件𠮶改动。',
'uctop' => '(头上)',
'month' => '从个月 (或更早):',
'year' => '从个年 (或更早):',
@@ -1418,6 +1443,8 @@ $1',
'sp-contributions-newbies' => '单显到新用户𠮶贡献',
'sp-contributions-newbies-sub' => '新用户𠮶贡献',
'sp-contributions-blocklog' => '封锁记录',
+'sp-contributions-talk' => '谈詑',
+'sp-contributions-userrights' => '用户权限管理',
'sp-contributions-search' => '寻贡献',
'sp-contributions-username' => 'IP地址或用户名:',
'sp-contributions-submit' => '寻',
@@ -1462,7 +1489,7 @@ $1',
'ipbenableautoblock' => '自动封锁个只用户最晏𠮶IP,同后来佢编写用过𠮶地址',
'ipbsubmit' => '封锁个只地址',
'ipbother' => '别𠮶时间:',
-'ipboptions' => '两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite',
'ipbotheroption' => '别𠮶',
'ipbotherreason' => '别𠮶/附加原因:',
'ipbhidename' => '封锁日志、活跃封锁列表同用户列表里头弆到用户名',
@@ -1485,7 +1512,7 @@ $1',
'ipblocklist-submit' => '寻',
'blocklistline' => '$1,$2封到$3 ($4)',
'infiniteblock' => '伓限期',
-'expiringblock' => '$1到期',
+'expiringblock' => '$1 $2到期',
'anononlyblock' => '单限制匿名用户',
'noautoblockblock' => '停用自动封锁',
'createaccountblock' => '禁止新开帐户',
@@ -1561,7 +1588,7 @@ $1',
'move-watch' => '眏到个页',
'movepagebtn' => '换卟个页',
'pagemovedsub' => '移正嘞',
-'movepage-moved' => "'''“$1”拖移到“$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''“$1”拖移到“$2”'''",
'articleexists' => '已经有页面叫个只名字,要伓倷拣𠮶名字冇用。请拣过只名字。',
'cantmove-titleprotected' => '倷移伓正一只页面到个只位置,个只新题目已经拖保护起来嘞,新建伓正。',
'talkexists' => '页面本身移动正嘞,但系新标题下底有嘞对话页,所以对话页移伓正。请手工合并两页。',
@@ -1603,8 +1630,6 @@ $1',
'allmessagestext' => '个首列到全部制定得正𠮶系统界面。
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系统界面功能'''关卟嘞('''\$wgUseDatabaseMessages''')。",
-'allmessagesfilter' => '按消息名筛:',
-'allmessagesmodified' => '单显到改正𠮶',
# Thumbnails
'thumbnail-more' => '放大',
@@ -1669,6 +1694,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-ca-viewsource' => '个页已拖保护。但倷能望吖佢𠮶源代码。',
'tooltip-ca-history' => '个页早先𠮶版本',
'tooltip-ca-protect' => '护到个页',
+'tooltip-ca-unprotect' => '护得个页',
'tooltip-ca-delete' => '删卟个页',
'tooltip-ca-undelete' => '拿个页还原到删卟之前𠮶样子',
'tooltip-ca-move' => '移动个页',
@@ -1679,6 +1705,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => '寻个只文字𠮶页面',
'tooltip-p-logo' => '封面',
'tooltip-n-mainpage' => '眵吖封面',
+'tooltip-n-mainpage-description' => '眵吖封面',
'tooltip-n-portal' => '对于个只计划,倷能做什哩,又啷做',
'tooltip-n-currentevents' => '提供目前𠮶事𠮶背景',
'tooltip-n-recentchanges' => '列出个只网站该朝子𠮶改动',
@@ -1731,10 +1758,12 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => '{{SITENAME}}𠮶匿名用户',
'siteuser' => '{{SITENAME}}用户$1',
-'lastmodifiedatby' => '个页由$3对$1 $2最晏𠮶改动。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}匿名用户$1',
+'lastmodifiedatby' => '个页由$3对$1 $2最晏𠮶改动。',
'othercontribs' => '以$1为基础。',
'others' => '别𠮶',
'siteusers' => '{{SITENAME}}用户$1',
+'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|用户|用户}}$1',
'creditspage' => '页面感谢',
'nocredits' => '个页冇致谢名单。',
@@ -1762,6 +1791,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => '新版浏览器𠮶建议',
'mw_math_mathml' => '尽可能用MathML (试验中)',
+# Math errors
+'math_failure' => '分析失败',
+'math_unknown_error' => '未知错误',
+'math_unknown_function' => '未知函数',
+'math_lexing_error' => '句法错误',
+'math_syntax_error' => '文法错误',
+'math_image_error' => 'PNG转换失败;请检查系否装正嘞latex, dvips, gs同到convert',
+'math_bad_tmpdir' => '写伓正或建伓正数学公式临时目录',
+'math_bad_output' => '写伓正或建伓正数学公式输出目录',
+'math_notexvc' => '执行伓正"texvc";请参看 math/README 再配置过。',
+
# Patrolling
'markaspatrolleddiff' => '标到系检查过𠮶',
'markaspatrolledtext' => '标到个篇文章系检查过𠮶',
@@ -1833,7 +1873,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '阔',
@@ -1960,14 +2000,14 @@ $1',
'exif-unknowndate' => '未知𠮶日期',
-'exif-orientation-1' => '标准', # 0th row: top; 0th column: left
-'exif-orientation-2' => '左右斢转', # 0th row: top; 0th column: right
-'exif-orientation-3' => '转动180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '上下翻转', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '逆时针转90°接到上下翻转', # 0th row: left; 0th column: top
-'exif-orientation-6' => '顺时针转90°', # 0th row: right; 0th column: top
-'exif-orientation-7' => '顺时针转90°接到上下翻转', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '逆时针转90°', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '标准',
+'exif-orientation-2' => '左右斢转',
+'exif-orientation-3' => '转动180°',
+'exif-orientation-4' => '上下翻转',
+'exif-orientation-5' => '逆时针转90°接到上下翻转',
+'exif-orientation-6' => '顺时针转90°',
+'exif-orientation-7' => '顺时针转90°接到上下翻转',
+'exif-orientation-8' => '逆时针转90°',
'exif-planarconfiguration-1' => 'chunky格式',
'exif-planarconfiguration-2' => 'planar格式',
@@ -2077,7 +2117,7 @@ $1',
'exif-gpsmeasuremode-2' => '二维测量',
'exif-gpsmeasuremode-3' => '三维测量',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '公里每小时',
'exif-gpsspeed-m' => '英里每小时',
'exif-gpsspeed-n' => '海浬每小时(节)',
@@ -2115,7 +2155,7 @@ $1',
'confirmemail_loggedin' => '倷𠮶email地址已得到确认。',
'confirmemail_error' => '确认过程出错。',
'confirmemail_subject' => '{{SITENAME}}电子邮件地址确认',
-'confirmemail_body' => 'IP地址$1𠮶用户(可能系倷)到{{SITENAME}}注册嘞帐户"$2",并一同用嘞倷𠮶email地址。
+'confirmemail_body' => 'IP地址$1𠮶用户(可能系倷)到{{SITENAME}}注册嘞帐户"$2",并一同用嘞倷𠮶email地址。
请确认个只帐户系归倷𠮶,接到启动{{SITENAME}}里头𠮶email功能。请到浏览器开到下底𠮶链接:
@@ -2148,6 +2188,7 @@ $1',
# Separators for various lists, etc.
'comma-separator' => '、',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上页',
@@ -2207,7 +2248,7 @@ $1',
'unknown_extension_tag' => '伓认得𠮶扩展标签 "$1"',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
'version-extensions' => '装正𠮶插件',
'version-specialpages' => '特别𠮶页面',
'version-parserhooks' => '解析器钩子',
@@ -2219,7 +2260,7 @@ $1',
'version-skin-extension-functions' => '封皮插件功能',
'version-hook-name' => '钩子名',
'version-hook-subscribedby' => '订阅人',
-'version-version' => '版本',
+'version-version' => '(版本 $1)',
'version-license' => '许可证',
'version-software' => '装正𠮶软件',
'version-software-version' => '版本',
diff --git a/languages/messages/MessagesGan_hant.php b/languages/messages/MessagesGan_hant.php
index c38eeb33..aea19d21 100644
--- a/languages/messages/MessagesGan_hant.php
+++ b/languages/messages/MessagesGan_hant.php
@@ -22,7 +22,33 @@ $namespaceNames = array(
NS_MEDIAWIKI_TALK => 'MediaWiki談詑',
NS_TEMPLATE_TALK => '模板談詑',
NS_HELP_TALK => '幫助談詑',
- NS_CATEGORY_TALK => '分類談詑'
+ NS_CATEGORY_TALK => '分類談詑',
+);
+
+$specialPageAliases = array(
+ 'BrokenRedirects' => array( '壞吥嗰重定向頁' ),
+ 'Disambiguations' => array( '多義項' ),
+ 'CreateAccount' => array( '新建隻帳戶' ),
+ 'Preferences' => array( '個人設定' ),
+ 'Watchlist' => array( '監視列表' ),
+ 'Recentchanges' => array( '最晏嗰改動' ),
+ 'Uncategorizedpages' => array( '冇歸類嗰頁面' ),
+ 'Uncategorizedcategories' => array( '冇歸類嗰分類' ),
+ 'Uncategorizedimages' => array( '冇歸類嗰檔案' ),
+ 'Uncategorizedtemplates' => array( '冇歸類嗰模板' ),
+ 'Unusedcategories' => array( '冇用嗰分類' ),
+ 'Unusedimages' => array( '冇用嗰檔案' ),
+ 'Mostlinked' => array( '拕連得最多嗰頁面' ),
+ 'Mostlinkedcategories' => array( '拕連得最多嗰分類' ),
+ 'Mostlinkedtemplates' => array( '拕連得最多嗰模板' ),
+ 'Mostimages' => array( '拕連得最多嗰檔案' ),
+ 'Mostcategories' => array( '最多分類嗰頁面' ),
+ 'Mostrevisions' => array( '最多改動嗰頁面' ),
+ 'Fewestrevisions' => array( '最少改動嗰頁面' ),
+ 'Shortpages' => array( '細文章' ),
+ 'Longpages' => array( '莽文章' ),
+ 'Newpages' => array( '全新嗰頁面' ),
+ 'Ancientpages' => array( '老早嗰頁面' ),
);
$messages = array(
@@ -56,6 +82,7 @@ $messages = array(
'tog-enotifminoredits' => '有細嗰改動都要發email到偶',
'tog-enotifrevealaddr' => '通知郵件可話到人聽偶嗰email地址',
'tog-shownumberswatching' => '顯示有幾多人監視',
+'tog-oldsig' => '原有簽名嗰預覽:',
'tog-fancysig' => '搦簽名以維基字對待(冇自動連結)',
'tog-externaleditor' => '默認用外部編輯器(專家用嗰功能,要到倷嗰電腦上頭特別嗰設置一下)',
'tog-externaldiff' => '默認用外部差異比較器(專家用嗰功能,要到倷嗰電腦上頭特別嗰設置一下)',
@@ -78,6 +105,13 @@ $messages = array(
'underline-never' => '絕伓使用',
'underline-default' => '瀏覽器預設',
+# Font style option in Special:Preferences
+'editfont-style' => '編輯區字型樣式:',
+'editfont-default' => '瀏覽器預設',
+'editfont-monospace' => '固定間距字型',
+'editfont-sansserif' => '冇腳字型',
+'editfont-serif' => '有腳字型',
+
# Dates
'sunday' => '禮拜天',
'monday' => '禮拜一',
@@ -137,7 +171,7 @@ $messages = array(
'category-media-header' => '“$1”分類裡頭嗰媒體',
'category-empty' => '“箇隻分類有包到任何文章或媒體”',
'hidden-categories' => '{{PLURAL:$1|隻隱藏分類|隻隱藏分類}}',
-'hidden-category-category' => '弆到嗰分類', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '弆到嗰分類',
'category-subcat-count' => '{{PLURAL:$2|箇隻分類淨係有下頭嗰細分類。|箇隻分類有下頭嗰$1隻細分類,攏共有$2類。}}',
'category-subcat-count-limited' => '箇隻類別裡頭有$1隻細類別。',
'category-article-count' => '{{PLURAL:$2|箇隻分類淨係有下頭嗰版本。|箇隻分類有下頭嗰$1版本,攏共有$2版。}}',
@@ -145,6 +179,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|箇類淨係有下頭嗰檔案。|箇類有下頭嗰$1隻檔案,攏共有$2隻檔案。}}',
'category-file-count-limited' => '箇隻類別裡頭有$1隻檔案。',
'listingcontinuesabbrev' => '續',
+'index-category' => '做正索引嗰頁面',
+'noindex-category' => '冇做索引嗰頁面',
'mainpagetext' => "'''安裝正MediaWiki嘍。'''",
'mainpagedocfooter' => '參看[http://meta.wikimedia.org/wiki/Help:Contents 用戶指南]裡頭會話到啷用wiki軟件
@@ -155,10 +191,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常問題解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈email清單]',
-'about' => '關於',
-'article' => '文章',
-'newwindow' => '(開隻新窗口)',
-'cancel' => '取消',
+'about' => '關於',
+'article' => '文章',
+'newwindow' => '(開隻新窗口)',
+'cancel' => '取消',
+'moredotdotdot' => '別嗰...',
+'mypage' => '偶嗰頁面',
+'mytalk' => '偶嗰對話框',
+'anontalk' => '箇隻IP嗰對話框',
+'navigation' => '導航',
+'and' => '&#32;同到',
+
+# Cologne Blue skin
'qbfind' => '尋',
'qbbrowse' => '查看',
'qbedit' => '編寫',
@@ -166,15 +210,35 @@ $messages = array(
'qbpageinfo' => '箇頁信息',
'qbmyoptions' => '偶嗰選項',
'qbspecialpages' => '特殊頁',
-'moredotdotdot' => '別嗰...',
-'mypage' => '偶嗰頁面',
-'mytalk' => '偶嗰對話框',
-'anontalk' => '箇隻IP嗰對話框',
-'navigation' => '導航',
-'and' => '&#32;同到',
-
-# Metadata in edit box
-'metadata_help' => '元數據:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:問得蠻多嗰問題',
+
+# Vector skin
+'vector-action-addsection' => '添主題',
+'vector-action-delete' => '刪吥',
+'vector-action-move' => '移吥',
+'vector-action-protect' => '護到',
+'vector-action-undelete' => '望下刪吥嗰頁面',
+'vector-action-unprotect' => '解除保護',
+'vector-namespace-category' => '分類',
+'vector-namespace-help' => '幫助頁',
+'vector-namespace-image' => '檔案',
+'vector-namespace-main' => '頁面',
+'vector-namespace-media' => '媒體頁',
+'vector-namespace-mediawiki' => '介面',
+'vector-namespace-project' => '計劃頁',
+'vector-namespace-special' => '特別頁',
+'vector-namespace-talk' => '談詑',
+'vector-namespace-template' => '模板',
+'vector-namespace-user' => '用戶頁',
+'vector-view-create' => '創建',
+'vector-view-edit' => '編輯',
+'vector-view-history' => '望下歷史',
+'vector-view-view' => '讀',
+'vector-view-viewsource' => '望下原始碼',
+'actions' => '動作',
+'namespaces' => '空間名',
+'variants' => '變換',
'errorpagetitle' => '錯誤',
'returnto' => '去歸$1。',
@@ -224,18 +288,22 @@ $messages = array(
'otherlanguages' => '別嗰話',
'redirectedfrom' => '(從$1跳過來)',
'redirectpagesub' => '跳轉頁',
-'lastmodifiedat' => '箇頁最晏嗰改動係:$1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '箇頁最晏嗰改動係:$1 $2。',
'viewcount' => '箇頁拕人眵嘞$1回。',
'protectedpage' => '拕保護頁',
'jumpto' => '跳到:',
'jumptonavigation' => '導航',
'jumptosearch' => '尋',
+'view-pool-error' => '不過意,箇隻伺服器到箇時間超吥最大負荷。
+多傷哩嗰用戶較得去望箇頁。
+想望過箇頁嗰話請等多一下。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '關於 {{SITENAME}}',
'aboutpage' => 'Project:關於',
'copyright' => '箇版嗰內容係根據$1嗰條款發佈。',
-'copyrightpagename' => '{{SITENAME}} 版權',
'copyrightpage' => '{{ns:project}}:版權資訊',
'currentevents' => '新出嗰事',
'currentevents-url' => 'Project:新出嗰事',
@@ -243,8 +311,6 @@ $messages = array(
'disclaimerpage' => 'Project:免責聲明',
'edithelp' => '編寫幫助',
'edithelppage' => 'Help:啷編寫文章',
-'faq' => 'FAQ',
-'faqpage' => 'Project:問得蠻多嗰問題',
'helppage' => 'Help:説明',
'mainpage' => '封面',
'mainpage-description' => '封面',
@@ -322,10 +388,6 @@ MySQL回到錯誤 "<tt>$3: $4</tt>"。',
“$1”
來自函數“$2”。
MySQL回到錯誤“$3: $4”。',
-'noconnect' => '對伓住!wiki碰到嘞技術問題,連伓到資料庫服務器。<br />
-$1',
-'nodb' => '選伓正服務器 $1',
-'cachederror' => '底下係請求頁嗰緩存副本,可能伓係最新嗰。',
'laggedslavemode' => '警告:頁面可能冇有新近內容。',
'readonly' => '資料庫上正鎖囉',
'enterlockreason' => '請輸入鎖到資料庫嗰理由,包括預計幾時間解鎖',
@@ -376,14 +438,12 @@ $2',
'virus-unknownscanner' => '不曉得嗰防病毒:',
# Login and logout pages
-'logouttitle' => '用戶退出',
'logouttext' => "'''倷退出正嘞。'''
倷可以接到匿名使用{{SITENAME}},或重登入過,隻把子頁面可能會接到話倷係登入狀態,除非係倷刪吥瀏覽器緩存。",
'welcomecreation' => '== 歡迎, $1! ==
建正嘞倷嗰帳戶,莫忘吥設置{{SITENAME}}嗰個人參數。',
-'loginpagetitle' => '用戶登入',
'yourname' => '用戶名:',
'yourpassword' => '密碼:',
'yourpasswordagain' => '輸過道密碼:',
@@ -405,20 +465,7 @@ $2',
'createaccountmail' => '通過email',
'badretype' => '倷輸嗰密碼伓合。',
'userexists' => '倷輸嗰用戶名係人家嗰,選過隻嘍!',
-'youremail' => '電子郵件:',
-'username' => '用戶名:',
-'uid' => '用戶ID:',
-'yourrealname' => '真名:',
-'yourlanguage' => '語言:',
-'yourvariant' => '轉換字體',
-'yournick' => '簽名:',
-'badsig' => '原始簽名錯誤,請檢查HTML。',
-'badsiglength' => '花名咁長?佢嗰長度要少過$1隻字符。',
-'email' => '電子郵件',
-'prefs-help-realname' => '真名係選填嗰,要係倷填嘞,倷嗰作品就會標到倷嗰名字。',
'loginerror' => '登入錯誤',
-'prefs-help-email' => 'email係選填嗰,佢可以讓伓認得倷嗰人通過email聯繫正倷。',
-'prefs-help-email-required' => '需要電子郵件地址。',
'nocookiesnew' => '帳戶扤正嘞!測到倷關吥嘞Cookies,麻煩倷開到佢登入過。',
'nocookieslogin' => '箇首要用 Cookies 登入,測到倷關吥嘞Cookies,麻煩倷開到佢登入過。',
'noname' => '倷冇輸正有效嗰用戶名。',
@@ -454,16 +501,15 @@ $2',
'loginlanguagelabel' => '語言: $1',
# Password reset dialog
-'resetpass' => '設過帳戶密碼',
-'resetpass_announce' => '倷係用到臨時email嗰代碼登入嗰。要登正入,倷要到箇首設定隻新密碼:',
-'resetpass_header' => '設過密碼',
-'oldpassword' => '老密碼:',
-'newpassword' => '新密碼:',
-'retypenew' => '確認密碼:',
-'resetpass_submit' => '設定密碼同到登入',
-'resetpass_success' => '倷嗰密碼改正嘍!正幫倷登入...',
-'resetpass_bad_temporary' => '冇用嗰臨時密碼。可能倷改正嘞倷嗰密碼,或者重新要過隻新嗰臨時密碼。',
-'resetpass_forbidden' => '到{{SITENAME}}上改伓正密碼',
+'resetpass' => '設過帳戶密碼',
+'resetpass_announce' => '倷係用到臨時email嗰代碼登入嗰。要登正入,倷要到箇首設定隻新密碼:',
+'resetpass_header' => '設過密碼',
+'oldpassword' => '老密碼:',
+'newpassword' => '新密碼:',
+'retypenew' => '確認密碼:',
+'resetpass_submit' => '設定密碼同到登入',
+'resetpass_success' => '倷嗰密碼改正嘍!正幫倷登入...',
+'resetpass_forbidden' => '到{{SITENAME}}上改伓正密碼',
# Edit page toolbar
'bold_sample' => '粗體字',
@@ -529,7 +575,6 @@ $2',
'blockededitsource' => "底下係倷對'''$1'''嗰'''編輯'''內容:",
'whitelistedittitle' => '登入後才編得正',
'whitelistedittext' => '起先倷要$1才編得正箇頁。',
-'confirmedittitle' => 'email確認後才編得正',
'confirmedittext' => '確認嘞email才能編寫箇頁。麻煩用[[Special:Preferences|參數設置]]設置同確認倷嗰email。',
'nosuchsectiontitle' => '冇箇隻段落',
'nosuchsectiontext' => '倷嘗試編寫嗰段落伓存在。',
@@ -546,7 +591,8 @@ $2',
'noarticletext' => '眼下箇頁哈冇內容,倷可以到別嗰頁面[[Special:Search/{{PAGENAME}}|尋吖箇頁嗰標題]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋吖有關日誌]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編寫箇頁]。',
'clearyourcache' => "'''注意:''' 保存之後, 倷要清吥瀏覽器嗰緩存才眵得正改嗰內容。 '''Mozilla / Firefox / Safari:''' 按到 ''Shift'' 接到按''刷新''(或按吖''Ctrl-Shift-R'',到蘋果Mac上按''Cmd-Shift-R'');'''IE:''' 按到 ''Ctrl''接到按''刷新'',或按吖''Ctrl-F5'';'''Konqueror:''' 單只要按 ''刷新'';'''Opera:''' 用戶要到 ''工具-設置'' 完全嗰清除緩存。",
-'usercssjsyoucanpreview' => "'''提示:''' 存到前請用'望吖起'來測吖倷嗰新CSS/JS 。",
+'usercssyoucanpreview' => "'''提示:''' 存到前請用'望吖起'來測吖倷嗰新CSS 。",
+'userjsyoucanpreview' => "'''提示:''' 存到前請用'望吖起'來測吖倷嗰新JS 。",
'usercsspreview' => "'''注意倷單係到預覽倷個人嗰 CSS,內容哈冇保存!'''",
'userjspreview' => "'''注意倷單係到測試/預覽倷個人嗰 JavaScript,內容哈冇保存!'''",
'userinvalidcssjstitle' => "'''警告:''' 冇\"\$1\"嗰皮膚。請記到自定義嗰 .css 同 .js 頁要用小寫。就話,{{ns:user}}:Foo/monobook.css 伓等同 {{ns:user}}:Foo/Monobook.css。",
@@ -591,8 +637,8 @@ $2',
'semiprotectedpagewarning' => "'''注意:'''箇頁拕鎖到嘞,單只註冊用戶編得正。",
'cascadeprotectedwarning' => '警告: 箇頁已經受保護,單只管理員許可權嗰用戶才改得正,因為箇頁同底下嗰連鎖保護嗰{{PLURAL:$1|一隻|多隻}}頁面包到嘞:',
'titleprotectedwarning' => "'''警告:箇隻頁鎖到嘍,只有一滴子人才建得正。'''",
-'templatesused' => '箇隻頁面使用嗰模板有:',
-'templatesusedpreview' => '箇隻預覽使用嗰模板有:',
+'templatesused' => '箇隻頁面使用嗰有{{PLURAL:$1|模板|模板}}:',
+'templatesusedpreview' => '箇隻預覽使用嗰有{{PLURAL:$1|模板|模板}}',
'templatesusedsection' => '箇隻段落使用嗰模板有:',
'template-protected' => '(保護)',
'template-semiprotected' => '(半保護)',
@@ -604,10 +650,12 @@ $2',
'permissionserrors' => '許可權錯誤',
'permissionserrorstext' => '根據底下嗰{{PLURAL:$1|原因|原因}},倷冇許可權去扤:',
'permissionserrorstext-withaction' => '根據下頭嗰{{PLURAL:$1|原因|原因}},你冇權力去舞$2:',
-'recreate-deleted-warn' => "'''警告: 倷正重建一隻之前拕刪吥嗰頁面。'''
+'recreate-moveddeleted-warn' => "'''警告: 倷正重建一隻之前拕刪吥嗰頁面。'''
倷應該要考慮吖繼續編輯箇頁面係否有必要。
為到方便,箇頁嗰刪除記錄已經到下底提供:",
+'moveddeleted-notice' => '箇隻版面已經拕刪吥嘍。
+下頭提供箇隻版面嗰刪除日誌,以供參考。',
# "Undo" feature
'undo-success' => '箇隻編輯可以拕取銷。請檢查吖以確定箇係倷想扤嗰,接到保存修改去完成撤銷編輯。',
@@ -624,7 +672,7 @@ $2',
'currentrev' => '眼前嗰修改版本',
'currentrev-asof' => '到 $1 嗰眼下改動',
'revisionasof' => '$1嗰修改版本',
-'revision-info' => '$2到$1扤嗰修訂版本', # Additionally available: $3: revision id
+'revision-info' => '$2到$1扤嗰修訂版本',
'previousrevision' => '←之前嗰修改',
'nextrevision' => '接到嗰修改→',
'currentrevisionlink' => '眼前嗰修改',
@@ -636,7 +684,6 @@ $2',
'histlegend' => '差異選擇: 標到伓同版本嗰單選鍵,接到按吖督上嗰鍵比較下。<br />
說明: (眼下) 指同目前版本嗰比較,(之前) 指同之前修改版本嗰比較,細 = 細修改。',
'history-fieldset-title' => '瀏覽歷史',
-'deletedrev' => '[拕刪除]',
'histfirst' => '最早版本',
'histlast' => '最晏版本',
'historysize' => '({{PLURAL:$1|1 字節|$1 字節}})',
@@ -645,15 +692,15 @@ $2',
# Revision feed
'history-feed-title' => '修改歷史',
'history-feed-description' => '本站箇頁嗰修改歷史',
-'history-feed-item-nocomment' => '$1到$2', # user at time
+'history-feed-item-nocomment' => '$1到$2',
'history-feed-empty' => '要求嗰頁面伓存在。佢可能拕刪吥嘞或改嘞名。試吖[[Special:Search|到本站尋]]有關嗰新頁面內容。',
# Revision deletion
'rev-deleted-comment' => '(注釋挪吥嘞)',
'rev-deleted-user' => '(用戶名挪吥嘞)',
'rev-deleted-event' => '(項目挪吥嘞)',
-'rev-deleted-text-permission' => '箇頁嗰改動從共用文檔挪吥嘞。到[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 刪除日誌] 裡度倷話伓定有詳細嗰資料。',
-'rev-deleted-text-view' => '箇頁嗰改動從共用文檔挪吥嘞。作為本站嗰管理員,倷查看得正;到[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 裡度有詳細嗰資料。',
+'rev-deleted-text-permission' => '箇頁嗰改動從共用文檔挪吥嘞。到[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 刪除日誌] 裡度倷話伓定有詳細嗰資料。',
+'rev-deleted-text-view' => '箇頁嗰改動從共用文檔挪吥嘞。作為本站嗰管理員,倷查看得正;到[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 刪除日誌] 裡度有詳細嗰資料。',
'rev-delundel' => '顯示/弆到',
'revisiondelete' => '刪除/反刪除修改',
'revdelete-nooldid-title' => '冇目標修訂',
@@ -665,12 +712,12 @@ $2',
箇站別嗰管理員哈係能眵吖弆到嗰內容,同到通過同佢一樣嗰界面恢復刪除,除非設正嘞附加嗰限制。",
'revdelete-legend' => '設置可見性嗰限制',
'revdelete-hide-text' => '弆到修改內容',
+'revdelete-hide-image' => '弆到檔內容',
'revdelete-hide-name' => '弆到動作同目標',
'revdelete-hide-comment' => '弆到編輯說明',
'revdelete-hide-user' => '弆到編者嗰用戶名/IP',
'revdelete-hide-restricted' => '同樣嗰限制應用到管理員,接到鎖定箇隻界面',
'revdelete-suppress' => '同時壓到由操作員同別嗰用戶嗰資料',
-'revdelete-hide-image' => '弆到檔內容',
'revdelete-unsuppress' => '移吥恢復正嗰改動嗰限制',
'revdelete-log' => '原因:',
'revdelete-submit' => '應用到選正嗰修改',
@@ -714,16 +761,14 @@ $2',
'searchresulttext' => '有關嗰{{SITENAME}}嗰更多資料,請參看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => "用'''[[:$1]]'''",
'searchsubtitleinvalid' => "用'''$1'''尋",
-'noexactmatch' => "'''冇尋到標題係\"\$1\"嗰頁面。''' 倷可以[[:\$1|新開箇隻頁面]]。",
-'noexactmatch-nocreate' => "'''冇題目係 \"\$1\" 嗰頁面'''",
'toomanymatches' => '返回多傷嘍嗰結果,請試吖用別嗰詞語尋過',
'titlematches' => '文章標題符合',
'notitlematches' => '冇頁面同文章標題符合',
'textmatches' => '頁面內容符合',
'notextmatches' => '冇頁面內容符合',
-'prevn' => '前$1隻',
-'nextn' => '後$1隻',
-'viewprevnext' => '眵吖($1) ($2) ($3)',
+'prevn' => '前{{PLURAL:$1|$1}}隻',
+'nextn' => '後{{PLURAL:$1|$1}}隻',
+'viewprevnext' => '眵吖($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:説明',
'search-result-size' => '$1 ($2隻字)',
'search-redirect' => '(重定向 $1)',
@@ -736,7 +781,6 @@ $2',
'search-mwsuggest-disabled' => '冇建議',
'showingresults' => '底下從第<b>$2</b>條顯示起先嗰<b>$1</b>條結果:',
'showingresultsnum' => '底下從第<b>$2</b>條顯示起先嗰<b>$3</b>條結果:',
-'showingresultstotal' => "下頭顯示到由第'''$1{{PLURAL:$4|| - $2}}'''項,攏共'''$3'''項嗰結果",
'nonefound' => '<strong>注意:</strong>尋伓到往往係因為搜索夾到像“嗰”或“同”之類嗰常用字扤得。',
'search-nonefound' => '冇合到嗰查詢結果。',
'powersearch' => '高級尋',
@@ -746,67 +790,70 @@ $2',
'powersearch-field' => '尋',
'searchdisabled' => '{{SITENAME}}嗰搜索功能已經關閉。倷可以用Google尋吖。但係佢嗰索引可能係早先嗰。',
-# Preferences page
-'preferences' => '參數設置',
-'mypreferences' => '偶嗰參數設置',
-'prefs-edits' => '編輯數:',
-'prefsnologin' => '哈冇登入',
-'prefsnologintext' => '倷要[[Special:UserLogin|登入]]後才設得正個人參數。',
-'prefsreset' => '參數已經拕重新設過。',
+# Quickbar
'qbsettings' => '快捷導航條',
'qbsettings-none' => '冇',
'qbsettings-fixedleft' => '左首固定',
'qbsettings-fixedright' => '右首固定',
'qbsettings-floatingleft' => '左首漂移',
'qbsettings-floatingright' => '左首漂移',
-'changepassword' => '改過密碼',
-'skin' => '皮',
-'skin-preview' => '(預覽)',
-'math' => '數學公式',
-'dateformat' => '日期格式',
-'datedefault' => '默認項目',
-'datetime' => '日期同到時間',
-'math_failure' => '分析失敗',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => '句法錯誤',
-'math_syntax_error' => '文法錯誤',
-'math_image_error' => 'PNG轉換失敗;請檢查係否裝正嘞latex, dvips, gs同到convert',
-'math_bad_tmpdir' => '寫伓正或建伓正數學公式臨時目錄',
-'math_bad_output' => '寫伓正或建伓正數學公式輸出目錄',
-'math_notexvc' => '執行伓正"texvc";請參看 math/README 再配置過。',
-'prefs-personal' => '用戶介紹',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '監視列表',
-'prefs-watchlist-days' => '監視列表顯示最久嗰日數:',
-'prefs-watchlist-edits' => '加強版嗰監視列表顯示最多更改數目:',
-'prefs-misc' => '雜項',
-'saveprefs' => '存到參數',
-'resetprefs' => '設過參數',
-'textboxsize' => '編寫',
-'rows' => '橫:',
-'columns' => '豎:',
-'searchresultshead' => '設置尋到嗰結果',
-'resultsperpage' => '設置尋到嗰連結數',
-'contextlines' => '設置尋到嗰行數:',
-'contextchars' => '設置尋到嗰字數:',
-'stub-threshold' => '<a href="#" class="stub">細文連結</a>格式門檻:',
-'recentchangesdays' => '最近更改中嗰顯示日數:',
-'recentchangescount' => '最近更改中嗰編輯數:',
-'savedprefs' => '倷嗰個人參數設置保存正嘞。',
-'timezonelegend' => '時區',
-'timezonetext' => '¹倷嗰當地時區同服務器時間(UTC)嗰時差。',
-'localtime' => '當地時區',
-'timezoneoffset' => '時差¹',
-'servertime' => '服務器時間',
-'guesstimezone' => '到瀏覽器上填',
-'allowemail' => '接受別嗰用戶嗰郵件',
-'defaultns' => '默認搜索嗰名字空間:',
-'default' => '默認',
-'files' => '檔案',
+
+# Preferences page
+'preferences' => '參數設置',
+'mypreferences' => '偶嗰參數設置',
+'prefs-edits' => '編輯數:',
+'prefsnologin' => '哈冇登入',
+'prefsnologintext' => '倷要[[Special:UserLogin|登入]]後才設得正個人參數。',
+'changepassword' => '改過密碼',
+'prefs-skin' => '皮',
+'skin-preview' => '(預覽)',
+'prefs-math' => '數學公式',
+'datedefault' => '默認項目',
+'prefs-datetime' => '日期同到時間',
+'prefs-personal' => '用戶介紹',
+'prefs-rc' => '最近更改',
+'prefs-watchlist' => '監視列表',
+'prefs-watchlist-days' => '監視列表顯示最久嗰日數:',
+'prefs-watchlist-edits' => '加強版嗰監視列表顯示最多更改數目:',
+'prefs-misc' => '雜項',
+'saveprefs' => '存到參數',
+'resetprefs' => '設過參數',
+'prefs-editing' => '編寫',
+'rows' => '橫:',
+'columns' => '豎:',
+'searchresultshead' => '設置尋到嗰結果',
+'resultsperpage' => '設置尋到嗰連結數',
+'contextlines' => '設置尋到嗰行數:',
+'contextchars' => '設置尋到嗰字數:',
+'stub-threshold' => '<a href="#" class="stub">細文連結</a>格式門檻:',
+'recentchangesdays' => '最近更改中嗰顯示日數:',
+'recentchangescount' => '最近更改中嗰編輯數:',
+'savedprefs' => '倷嗰個人參數設置保存正嘞。',
+'timezonelegend' => '時區',
+'localtime' => '當地時區',
+'timezoneoffset' => '時差¹',
+'servertime' => '服務器時間',
+'guesstimezone' => '到瀏覽器上填',
+'allowemail' => '接受別嗰用戶嗰郵件',
+'defaultns' => '默認搜索嗰名字空間:',
+'default' => '默認',
+'prefs-files' => '檔案',
+'youremail' => '電子郵件:',
+'username' => '用戶名:',
+'uid' => '用戶ID:',
+'yourrealname' => '真名:',
+'yourlanguage' => '語言:',
+'yourvariant' => '轉換字體',
+'yournick' => '簽名:',
+'badsig' => '原始簽名錯誤,請檢查HTML。',
+'badsiglength' => '花名咁長?佢嗰長度要少過$1隻字符。',
+'email' => '電子郵件',
+'prefs-help-realname' => '真名係選填嗰,要係倷填嘞,倷嗰作品就會標到倷嗰名字。',
+'prefs-help-email' => 'email係選填嗰,佢可以讓伓認得倷嗰人通過email聯繫正倷。',
+'prefs-help-email-required' => '需要電子郵件地址。',
# User rights
-'userrights' => '用戶許可權管理', # Not used as normal message but as header for the special page itself
+'userrights' => '用戶許可權管理',
'userrights-lookup-user' => '管理用戶群',
'userrights-user-editname' => '輸入用戶名:',
'editusergroup' => '編輯用戶群',
@@ -852,7 +899,7 @@ $2',
'recentchangestext' => '跟到箇隻wiki上嗰最新改動。',
'recentchanges-feed-description' => '跟到箇隻 wiki 上集合嗰最後改動。',
'rcnote' => "下底係到$4 $5,箇'''$2'''日嗰'''$1'''回改動:",
-'rcnotefrom' => "底下係自'''$2'''嗰更改(頂多顯示'''$1'''):",
+'rcnotefrom' => "底下係自'''$2'''嗰更改(頂多顯示'''$1'''):",
'rclistfrom' => '顯示自$1後嗰新改動',
'rcshowhideminor' => '$1細編輯',
'rcshowhidebots' => '$1機器人嗰編輯',
@@ -877,6 +924,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => '連結頁嗰更改',
+'recentchangeslinked-feed' => '連結頁嗰更改',
+'recentchangeslinked-toolbox' => '連結頁嗰更改',
'recentchangeslinked-title' => '連結頁嗰改動到 "$1"',
'recentchangeslinked-noresult' => '箇段時間嗰連結頁冇更改。',
'recentchangeslinked-summary' => "箇隻特殊頁列出箇頁連出去頁面嗰最晏改動(或係某隻分類嗰頁面)。
@@ -887,7 +936,6 @@ $2',
# Upload
'upload' => '上傳檔案',
'uploadbtn' => '上傳檔案',
-'reupload' => '上傳過',
'reuploaddesc' => '返回上傳列表。',
'uploadnologin' => '冇登入',
'uploadnologintext' => '倷要[[Special:UserLogin|登入]]再上傳得正檔案。',
@@ -927,7 +975,6 @@ $2',
* 上載文檔嗰檔名: '''<tt>[[:$1]]</tt>'''
* 目前檔嗰檔名: '''<tt>[[:$2]]</tt>'''
請揀隻伓同嗰名字。",
-'fileexists-thumb' => "<center>'''早就有嘍嗰文件'''</center>",
'fileexists-thumbnail-yes' => "箇隻檔案好像係一隻圖像嗰縮小版''(縮圖)''。 [[$1|thumb]]
請檢查清楚箇隻檔案'''<tt>[[:$1]]</tt>'''。
如果檢查後嗰檔同原先圖像嗰大小係一樣嗰話,就嫑再上傳多一隻縮圖。",
@@ -942,7 +989,6 @@ $2',
'uploaddisabled' => '上傳伓正',
'uploaddisabledtext' => '上傳伓正文件到{{SITENAME}}。',
'uploadscripted' => '箇隻檔案包到可能會誤導網絡瀏覽器錯誤解釋嗰 HTML 或腳本代碼。',
-'uploadcorrupt' => '箇隻檔案包含或者係一隻伓正確嗰副檔名。請檢查吖接到重新上傳。',
'uploadvirus' => '箇隻檔案有病毒!詳情: $1',
'sourcefilename' => '原始檔案名:',
'destfilename' => '目標檔案名:',
@@ -968,6 +1014,7 @@ $2',
'upload-curl-error28-text' => '站點回應時間過長。請檢查箇隻網站嗰訪問係否正常,過吖再試過。倷可能要等網絡伓咁卡嗰時間再試吖。',
'license' => '授權:',
+'license-header' => '授權:',
'nolicense' => '冇選定',
'license-nopreview' => '(冇預覽用得正)',
'upload_source_url' => '(一隻有效嗰,公開嗰 URL)',
@@ -984,6 +1031,7 @@ $2',
'listfiles_description' => '簡話',
# File description page
+'file-anchor-link' => '檔案',
'filehist' => '檔案歷史',
'filehist-help' => '按到日期/時間去眵吖許時間有過嗰檔案。',
'filehist-deleteall' => '全部刪掉',
@@ -1000,11 +1048,11 @@ $2',
'imagelinks' => '連結',
'linkstoimage' => '底下嗰$1隻頁面連結到箇隻檔案:',
'nolinkstoimage' => '冇頁面連結到箇隻檔案。',
-'sharedupload' => '箇隻檔案來自$1,佢可能拕應用嘚別嗰項目。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '更多信息請參看$1。',
-'shareduploadwiki-linktext' => '檔案描述頁',
-'noimage' => '同名嗰檔案伓存在,倷可以$1。',
-'noimage-linktext' => '上傳佢',
+'sharedupload' => '箇隻檔案來自$1,佢可能拕應用嘚別嗰項目。',
+'sharedupload-desc-there' => '箇隻檔案來自$1,佢可能拕應用嘚別嗰項目。
+請相吖[$2 檔案描述頁面]以了解佢嗰相關資訊。',
+'sharedupload-desc-here' => '箇隻檔案來自$1,佢可能拕應用嘚別嗰項目。
+佢嗰[$2 檔案描述頁面]顯示嘚下頭。',
'uploadnewversion-linktext' => '上傳箇隻檔案嗰新版本',
# File reversion
@@ -1065,6 +1113,7 @@ $2',
'statistics-header-edits' => '編輯數據',
'statistics-header-views' => '查看數據',
'statistics-header-users' => '用戶數據',
+'statistics-header-hooks' => '別嗰數據',
'statistics-articles' => '內容頁',
'statistics-pages' => '頁面',
'statistics-pages-desc' => 'wiki上頭所有頁面,包到談詑頁、重定向等',
@@ -1090,8 +1139,8 @@ $2',
'brokenredirects' => '壞吥嗰重定向頁',
'brokenredirectstext' => '底下嗰重定向頁面指到嗰係伓存在嗰頁面:',
-'brokenredirects-edit' => '(編寫)',
-'brokenredirects-delete' => '(刪吥)',
+'brokenredirects-edit' => '編寫',
+'brokenredirects-delete' => '刪吥',
'withoutinterwiki' => '冇語言連結嗰頁面',
'withoutinterwiki-summary' => '底下嗰頁面係冇語言連結到別嗰語言版本:',
@@ -1272,7 +1321,7 @@ $NEWPAGE
本站: $PAGEEDITOR_WIKI 今後伓會通知倷將來嗰改動,除非接到來到箇頁。倷也能設過倷全部監視頁嗰通知標記。
-{{SITENAME}}通知系統 – 會改卟倷嗰監視列表設置,請去 {{fullurl:{{ns:special}}:Watchlist/edit}}
+{{SITENAME}}通知系統 – 會改卟倷嗰監視列表設置,請去 {{fullurl:{{#special:Watchlist}}/edit}}
回饋同到別嗰説明: {{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1312,8 +1361,8 @@ $NEWPAGE
別嗰人編輯過或係恢復嘞箇頁。
最晏編輯人: [[User:$3|$3]] ([[User talk:$3|討論]])。',
-'editcomment' => "編輯介紹: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => '返回由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])嗰編輯;恢復到[[User:$1|$1]]嗰最末一隻版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "編輯介紹: \"''\$1''\"。",
+'revertpage' => '返回由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])嗰編輯;恢復到[[User:$1|$1]]嗰最末一隻版本',
'rollback-success' => '返回由$1嗰編輯;恢復到$2嗰最末一隻版本。',
'sessionfailure' => '倷嗰登入好像有嚸問題,為到防範未然,箇隻動作拕取消嘞。
@@ -1332,7 +1381,6 @@ $NEWPAGE
'protectexpiry' => '期限:',
'protect_expiry_invalid' => '到期時間無效。',
'protect_expiry_old' => '到期時間已過。',
-'protect-unchain' => '莫鎖到移動許可權',
'protect-text' => "倷到箇首能瀏覽或修改頁面'''<nowiki>$1</nowiki>'''嗰保護級別。",
'protect-locked-blocked' => "倷改伓正拕封鎖時嗰保護級別。下底係'''$1'''現今嗰保護級別:",
'protect-locked-dblock' => "資料庫鎖到嘞就改伓正保護級別。下底係'''$1'''現今嗰保護級別:",
@@ -1348,7 +1396,7 @@ $NEWPAGE
'protect-expiring' => '$1 (UTC)到期',
'protect-cascade' => '保護箇頁含到嗰頁面 (連鎖保護)',
'protect-cantedit' => '倷改伓正箇頁嗰保護程度,因為倷冇搦到編輯授權。',
-'protect-expiry-options' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite',
'restriction-type' => '許可權:',
'restriction-level' => '限制級別:',
'minimum-size' => '最細碼子',
@@ -1414,7 +1462,7 @@ $1',
'contributions-title' => '$1嗰用戶貢獻',
'mycontris' => '偶嗰貢獻',
'contribsub2' => '$1嗰貢獻 ($2)',
-'nocontribs' => '冇尋到合到條件嗰改動。', # Optional parameter: $1 is the user name
+'nocontribs' => '冇尋到合到條件嗰改動。',
'uctop' => '(頭上)',
'month' => '從箇月 (或更早):',
'year' => '從箇年 (或更早):',
@@ -1422,6 +1470,8 @@ $1',
'sp-contributions-newbies' => '單顯到新用戶嗰貢獻',
'sp-contributions-newbies-sub' => '新用戶嗰貢獻',
'sp-contributions-blocklog' => '封鎖記錄',
+'sp-contributions-talk' => '談詑',
+'sp-contributions-userrights' => '用戶許可權管理',
'sp-contributions-search' => '尋貢獻',
'sp-contributions-username' => 'IP地址或用戶名:',
'sp-contributions-submit' => '尋',
@@ -1466,7 +1516,7 @@ $1',
'ipbenableautoblock' => '自動封鎖箇隻用戶最晏嗰IP,同後來佢編寫用過嗰地址',
'ipbsubmit' => '封鎖箇隻地址',
'ipbother' => '別嗰時間:',
-'ipboptions' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite',
'ipbotheroption' => '別嗰',
'ipbotherreason' => '別嗰/附加原因:',
'ipbhidename' => '封鎖日誌、活躍封鎖列表同用戶列表裡頭弆到用戶名',
@@ -1489,7 +1539,7 @@ $1',
'ipblocklist-submit' => '尋',
'blocklistline' => '$1,$2封到$3 ($4)',
'infiniteblock' => '伓限期',
-'expiringblock' => '$1到期',
+'expiringblock' => '$1 $2到期',
'anononlyblock' => '單限制匿名用戶',
'noautoblockblock' => '停用自動封鎖',
'createaccountblock' => '禁止新開帳戶',
@@ -1565,7 +1615,7 @@ $1',
'move-watch' => '眏到箇頁',
'movepagebtn' => '換卟箇頁',
'pagemovedsub' => '移正嘞',
-'movepage-moved' => "'''「$1」拕移到「$2」'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''「$1」拕移到「$2」'''",
'articleexists' => '已經有頁面叫箇隻名字,要伓倷揀嗰名字冇用。請揀過隻名字。',
'cantmove-titleprotected' => '倷移伓正一隻頁面到箇隻位置,箇隻新題目已經拕保護起來嘞,新建伓正。',
'talkexists' => '頁面本身移動正嘞,但係新標題下底有嘞對話頁,所以對話頁移伓正。請手工合併兩頁。',
@@ -1607,8 +1657,6 @@ $1',
'allmessagestext' => '箇首列到全部制定得正嗰系統界面。
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系統界面功能'''關卟嘞('''\$wgUseDatabaseMessages''')。",
-'allmessagesfilter' => '按消息名篩:',
-'allmessagesmodified' => '單顯到改正嗰',
# Thumbnails
'thumbnail-more' => '放大',
@@ -1673,6 +1721,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-ca-viewsource' => '箇頁已拕保護。但倷能望吖佢嗰原始碼。',
'tooltip-ca-history' => '箇頁早先嗰版本',
'tooltip-ca-protect' => '護到箇頁',
+'tooltip-ca-unprotect' => '護得箇頁',
'tooltip-ca-delete' => '刪卟箇頁',
'tooltip-ca-undelete' => '拿箇頁還原到刪卟之前嗰樣子',
'tooltip-ca-move' => '移動箇頁',
@@ -1683,6 +1732,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => '尋箇隻文字嗰頁面',
'tooltip-p-logo' => '封面',
'tooltip-n-mainpage' => '眵吖封面',
+'tooltip-n-mainpage-description' => '眵吖封面',
'tooltip-n-portal' => '對於箇隻計劃,倷能做什哩,又啷做',
'tooltip-n-currentevents' => '提供目前嗰事嗰背景',
'tooltip-n-recentchanges' => '列出箇隻網站該朝子嗰改動',
@@ -1735,10 +1785,12 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => '{{SITENAME}}嗰匿名用戶',
'siteuser' => '{{SITENAME}}用戶$1',
-'lastmodifiedatby' => '箇頁由$3對$1 $2最晏嗰改動。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}匿名用戶$1',
+'lastmodifiedatby' => '箇頁由$3對$1 $2最晏嗰改動。',
'othercontribs' => '以$1為基礎。',
'others' => '別嗰',
'siteusers' => '{{SITENAME}}用戶$1',
+'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|用戶|用戶}}$1',
'creditspage' => '頁面感謝',
'nocredits' => '箇頁冇致謝名單。',
@@ -1766,6 +1818,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => '新版瀏覽器嗰建議',
'mw_math_mathml' => '儘可能用MathML (試驗中)',
+# Math errors
+'math_failure' => '分析失敗',
+'math_unknown_error' => '未知錯誤',
+'math_unknown_function' => '未知函數',
+'math_lexing_error' => '句法錯誤',
+'math_syntax_error' => '文法錯誤',
+'math_image_error' => 'PNG轉換失敗;請檢查係否裝正嘞latex, dvips, gs同到convert',
+'math_bad_tmpdir' => '寫伓正或建伓正數學公式臨時目錄',
+'math_bad_output' => '寫伓正或建伓正數學公式輸出目錄',
+'math_notexvc' => '執行伓正"texvc";請參看 math/README 再配置過。',
+
# Patrolling
'markaspatrolleddiff' => '標到係檢查過嗰',
'markaspatrolledtext' => '標到箇篇文章係檢查過嗰',
@@ -1837,7 +1900,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '闊',
@@ -1964,14 +2027,14 @@ $1',
'exif-unknowndate' => '未知嗰日期',
-'exif-orientation-1' => '標準', # 0th row: top; 0th column: left
-'exif-orientation-2' => '左右斢轉', # 0th row: top; 0th column: right
-'exif-orientation-3' => '轉動180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '上下翻轉', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '逆時針轉90°接到上下翻轉', # 0th row: left; 0th column: top
-'exif-orientation-6' => '順時針轉90°', # 0th row: right; 0th column: top
-'exif-orientation-7' => '順時針轉90°接到上下翻轉', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '逆時針轉90°', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '標準',
+'exif-orientation-2' => '左右斢轉',
+'exif-orientation-3' => '轉動180°',
+'exif-orientation-4' => '上下翻轉',
+'exif-orientation-5' => '逆時針轉90°接到上下翻轉',
+'exif-orientation-6' => '順時針轉90°',
+'exif-orientation-7' => '順時針轉90°接到上下翻轉',
+'exif-orientation-8' => '逆時針轉90°',
'exif-planarconfiguration-1' => 'chunky格式',
'exif-planarconfiguration-2' => 'planar格式',
@@ -2081,7 +2144,7 @@ $1',
'exif-gpsmeasuremode-2' => '二維測量',
'exif-gpsmeasuremode-3' => '三維測量',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '公里每小時',
'exif-gpsspeed-m' => '英里每小時',
'exif-gpsspeed-n' => '海浬每小時(節)',
@@ -2119,7 +2182,7 @@ $1',
'confirmemail_loggedin' => '倷嗰email地址已得到確認。',
'confirmemail_error' => '確認過程出錯。',
'confirmemail_subject' => '{{SITENAME}}電子郵件地址確認',
-'confirmemail_body' => 'IP地址$1嗰用戶(可能係倷)到{{SITENAME}}註冊嘞帳戶"$2",並一同用嘞倷嗰email地址。
+'confirmemail_body' => 'IP地址$1嗰用戶(可能係倷)到{{SITENAME}}註冊嘞帳戶"$2",並一同用嘞倷嗰email地址。
請確認箇隻帳戶係歸倷嗰,接到啟動{{SITENAME}}裡頭嗰email功能。請到瀏覽器開到下底嗰連結:
@@ -2152,6 +2215,7 @@ $1',
# Separators for various lists, etc.
'comma-separator' => '、',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上頁',
@@ -2211,7 +2275,7 @@ $1',
'unknown_extension_tag' => '伓認得嗰擴展標籤 "$1"',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
'version-extensions' => '裝正嗰插件',
'version-specialpages' => '特別嗰頁面',
'version-parserhooks' => '解析器鉤子',
@@ -2223,7 +2287,7 @@ $1',
'version-skin-extension-functions' => '封皮插件功能',
'version-hook-name' => '鉤子名',
'version-hook-subscribedby' => '訂閱人',
-'version-version' => '版本',
+'version-version' => '(版本 $1)',
'version-license' => '許可證',
'version-software' => '裝正嗰軟件',
'version-software-version' => '版本',
diff --git a/languages/messages/MessagesGd.php b/languages/messages/MessagesGd.php
index 4d42778a..9339431d 100644
--- a/languages/messages/MessagesGd.php
+++ b/languages/messages/MessagesGd.php
@@ -46,6 +46,7 @@ $messages = array(
'tog-enotifminoredits' => 'Cuir post-dealain thugam nuair a chuirear mùthadh beag air duilleagan cuideachd',
'tog-enotifrevealaddr' => 'Nochd an seòladh puist-dhealain agam ann am teachdaireachdan fiosrachaidh',
'tog-shownumberswatching' => "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air",
+'tog-oldsig' => 'Ro-shealladh an earr-sgrìobhaidh làithrich:',
'tog-fancysig' => 'Làimhsich an t-earr-sgrìobhadh mar wikitext (gun cheangal leis fhèin)',
'tog-externaleditor' => "Cleachd deasaichear on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad)",
'tog-externaldiff' => "Cleachd diff on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad)",
@@ -67,6 +68,13 @@ $messages = array(
'underline-never' => 'Na dèan seo idir',
'underline-default' => "Roghainn bhunaiteach a' bhrabhsair",
+# Font style option in Special:Preferences
+'editfont-style' => 'Stoidhle cruth-clò an raoin dheasachaidh:',
+'editfont-default' => "Roghainn bhunaiteach a' bhrabhsair",
+'editfont-monospace' => 'Cruth-clò aon-leud',
+'editfont-sansserif' => 'Cruth-clò gun serif',
+'editfont-serif' => 'Cruth-clò le serif',
+
# Dates
'sunday' => 'DiDòmhnaich',
'monday' => 'DiLuain',
@@ -124,8 +132,10 @@ $messages = array(
'subcategories' => 'Fo-roinnean',
'category-media-header' => 'Meadhanan sa roinn "$1"',
'category-empty' => "''Chan eil duilleagan no meadhanan san roinn seo an-dràsta.''",
-'hidden-category-category' => 'Roinnean falaichte', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Roinnean falaichte',
'listingcontinuesabbrev' => 'leant.',
+'index-category' => "Duilleagan air a' chlàr-innse",
+'noindex-category' => "Duilleagan nach eil air a' chlàr-innse",
'mainpagetext' => "'''Chaidh MediaWiki a stàladh gu soirbheachail.'''",
'mainpagedocfooter' => "Cuir sùil air [http://meta.wikimedia.org/wiki/Help:Contents treòir nan cleachdaichean] airson fiosrachadh mu chleachdadh a' bhathar-bhog wiki.
@@ -135,10 +145,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ CÀBHA MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]",
-'about' => 'Mu',
-'article' => 'Duilleag susbainte',
-'newwindow' => "(a' fosgladh ann an uinneag ùr)",
-'cancel' => 'Sguir dheth',
+'about' => 'Mu',
+'article' => 'Duilleag susbainte',
+'newwindow' => "(a' fosgladh ann an uinneag ùr)",
+'cancel' => 'Sguir dheth',
+'moredotdotdot' => 'Barrachd...',
+'mypage' => 'Mo dhuilleag',
+'mytalk' => 'Mo chonaltradh',
+'anontalk' => 'Conaltradh airson an IP seo',
+'navigation' => 'Seòladh',
+'and' => '&#32;agus',
+
+# Cologne Blue skin
'qbfind' => 'Lorg',
'qbbrowse' => 'Brabhsaich',
'qbedit' => 'Deasaich',
@@ -146,12 +164,35 @@ $messages = array(
'qbpageinfo' => 'Co-theacs',
'qbmyoptions' => 'Na duilleagan agam',
'qbspecialpages' => 'Duilleagan sònraichte',
-'moredotdotdot' => 'Barrachd...',
-'mypage' => 'Mo dhuilleag',
-'mytalk' => 'Mo chonaltradh',
-'anontalk' => 'Conaltradh airson an IP seo',
-'navigation' => 'Seòladh',
-'and' => '&#32;agus',
+'faq' => 'CÀBHA',
+'faqpage' => 'Project:CÀBHA',
+
+# Vector skin
+'vector-action-addsection' => 'Cuir ris cuspair',
+'vector-action-delete' => 'Sguab às',
+'vector-action-move' => 'Gluais',
+'vector-action-protect' => 'Dìon',
+'vector-action-undelete' => 'Neo-dhèan an sguabadh às',
+'vector-action-unprotect' => 'Neo-dhìon',
+'vector-namespace-category' => 'Roinn',
+'vector-namespace-help' => 'An duilleag cobharach',
+'vector-namespace-image' => 'Faidhle',
+'vector-namespace-main' => 'Duilleag',
+'vector-namespace-media' => 'Duilleag mheadhanan',
+'vector-namespace-mediawiki' => 'Teachdaireachd',
+'vector-namespace-project' => "Duilleag a' phròiseict",
+'vector-namespace-special' => 'Duilleag shònraichte',
+'vector-namespace-talk' => 'Deasbaireachd',
+'vector-namespace-template' => 'Teamplaid',
+'vector-namespace-user' => "Duilleag a' chleachdaiche",
+'vector-view-create' => 'Cruthaich',
+'vector-view-edit' => 'Deasaich',
+'vector-view-history' => 'Seall an eachdraidh',
+'vector-view-view' => 'Leugh',
+'vector-view-viewsource' => 'Seall an tùs',
+'actions' => 'Gnìomhan',
+'namespaces' => 'Namespaces',
+'variants' => 'Tionndaidhean',
'errorpagetitle' => 'Mearachd',
'returnto' => 'Till a $1.',
@@ -200,17 +241,21 @@ $messages = array(
'otherlanguages' => 'Ann an cànain eile',
'redirectedfrom' => '(Air ath-sheòladh o $1)',
'redirectpagesub' => 'Ath-sheòl an duilleag',
-'lastmodifiedat' => 'Chaidh an duilleag seo a mhùthadh $1, aig $2 turas mu dheireadh.', # $1 date, $2 time
+'lastmodifiedat' => 'Chaidh an duilleag seo a mhùthadh $1, aig $2 turas mu dheireadh.',
'protectedpage' => 'Duilleag fo dhìon',
'jumpto' => 'Gearr leum gu:',
'jumptonavigation' => 'seòladh',
'jumptosearch' => 'lorg',
+'view-pool-error' => "Duilich, tha na frithealaichean ro thrang an-dràsta.
+Tha cus chleachdaichean a' feuchainn ris an duilleag seo fhaicinn.
+Fuirich ort greis mus feuch thu ris an duilleag seo fhaicinn a-rithist.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Mu dhèidhinn {{SITENAME}}',
'aboutpage' => 'Project:Mu dhèidhinn',
'copyright' => 'Tha susbaint ri làimh fo $1.',
-'copyrightpagename' => '{{SITENAME}} dlighe-sgrìobhaidh',
'copyrightpage' => '{{ns:project}}:Còraichean lethbhric',
'currentevents' => 'Cùisean an latha',
'currentevents-url' => 'Project:Cùisean an latha',
@@ -218,8 +263,6 @@ $messages = array(
'disclaimerpage' => 'Project:Aithris-àichidh choitcheann',
'edithelp' => 'Cobhair deasachaidh',
'edithelppage' => 'Help:Deasachadh',
-'faq' => 'CÀBHA',
-'faqpage' => 'Project:CÀBHA',
'helppage' => 'Help:Susbaint',
'mainpage' => 'Prìomh dhuilleag',
'mainpage-description' => 'Prìomh dhuilleag',
@@ -298,10 +341,6 @@ Seo iarrtas an stòir-dhàta mu dheireadh a chaidh feuchainn ris:
"$1"
o bhroinn an fhoincsein "$2".
Thill an stòr-dàta a\' mhearachd "$3: $4"',
-'noconnect' => "Tha sinn duilich! Tha trioblaidean teicneòlais aig a' wiki an dràsda, is cha gabh fios a chur gu frithealaiche an stòr-dàta. <br />
-$1",
-'nodb' => 'Cha do thaghadh stòr-dàta $1',
-'cachederror' => "Tha na leanas 'na lethbhreac taisgte dhen duilleag a dh'iarr thu 's faodaidh nach e seo an tionndadh làithreach.",
'laggedslavemode' => "'''Rabhadh:''' Faodaidh nach eil ùrachaidhean a rinneadh o chionn ghoirid a' nochdadh san duilleag.",
'readonly' => 'Stòr-dàta glaiste',
'enterlockreason' => "Cuir a-steach adhbhar a' ghlais, a' gabhail a-steach tuairmeas air fuasgladh a' ghlais.",
@@ -319,6 +358,8 @@ An dèan thu aithris air seo do [[Special:ListUsers/sysop|rianadair]], ag innse
'readonly_lag' => "Chaidh an stòr-dàta a ghlasadh leis fhèin fhad 's a tha frithealaichean nan stòr-dàta tràilleach air dheireadh a' mhaighstir",
'internalerror' => 'Ion-mhearachd',
'internalerror_info' => 'Ion-mhearachd: $1',
+'fileappenderrorread' => 'Cha do ghabh "$1" a leughadh fhad \'s a bhathar \'ga chur ris.',
+'fileappenderror' => 'Cha do ghabh "$1" a chur ri "$2".',
'filecopyerror' => 'Cha do ghabh lethbhreac dhen fhaidhle "$1" gu "$2".',
'filerenameerror' => 'Cha do ghabh ainm an fhaidhle "$1" atharrachadh gu "$2".',
'filedeleteerror' => 'Cha do ghabh am faidhle "$1" a sguabadh às.',
@@ -328,6 +369,8 @@ An dèan thu aithris air seo do [[Special:ListUsers/sysop|rianadair]], ag innse
'unexpected' => 'Luach ris nach robh dùil: "$1"="$2".',
'formerror' => 'Mearachd: cha do ghabh am foirm a chur a-null',
'badarticleerror' => 'Cha ghabh an gnìomh seo a dhèanamh air an duilleag seo.',
+'cannotdelete' => 'Cha do ghabh an duilleag no am faidhle "$1" a sguabadh às.
+Faodaidh gun deach a sguabadh às le cuideigin eile mu thràth.',
'badtitle' => 'Droch thiotal',
'badtitletext' => "Bha an duilleag a dh'iarr thu mì-dhligheach, falamh no le tiotal eadar-chànanach no eadar-wiki air a dhroch cheangal.
Faodaidh gu bheil aon no barrachd charactairean ann nach urrainn dhut a chleachdadh ann an tiotalan.",
@@ -362,8 +405,6 @@ Seo am mìneachadh: "\'\'$2\'\'".',
'virus-unknownscanner' => 'sganair bhìorasan neo-aithnichte:',
# Login and logout pages
-'logouttitle' => 'Log a-mach an neach-cleachdaidh',
-'loginpagetitle' => 'Log a-steach an neach-cleachdaidh',
'yourname' => "D' ainm-cleachdaidh:",
'yourpassword' => 'Am facal-faire agad',
'yourpasswordagain' => 'Ath-sgrìobh facal-faire',
@@ -375,11 +416,6 @@ Seo am mìneachadh: "\'\'$2\'\'".',
'userlogout' => 'Log a-mach',
'nologinlink' => 'Cruthaich cunntas',
'createaccount' => 'Cruthaich cunntas ùr',
-'youremail' => 'Post dealain:',
-'username' => 'Ainm-cleachdaidh:',
-'yourrealname' => "An dearbh ainm a th' ort:",
-'yourlanguage' => 'Cànan:',
-'yournick' => 'An leth-ainm agad (a chuirear ri teachdaireachdan)',
'loginerror' => 'Mearachd log a-steach',
'noname' => 'Chan eil thu air ainm-cleachdair iomchaidh a chomharrachadh.',
'nosuchusershort' => 'Chan eil cleachdair leis an ainm "$1" ann; sgrùd an litreachadh agad no cleachd am billeag gu h-ìseal gus cùnntas ùr a chrùthachadh.',
@@ -472,6 +508,8 @@ Ma dh'fhoilleachas tu rudeigin an seo, bidh tu a' dearbhadh gun do sgrìobh thu
'viewpagelogs' => 'Seall logaichean na duilleige seo',
'nohistory' => 'Chan eil eachdraidh deasachaidh aig an duilleag seo.',
'currentrev' => 'Lethbhreac làithreach',
+'currentrev-asof' => 'Am mùthadh mu dheireadh on $1',
+'revisionasof' => 'Mùthadh on $1',
'previousrevision' => '← Mùthadh nas sine',
'nextrevision' => 'Mùthadh nas ùire →',
'currentrevisionlink' => 'Am mùthadh mu dheireadh',
@@ -504,12 +542,11 @@ Mìneachadh: '''({{int:cur}})''' = an diofar eadar e 's am mùthadh as ùire, ''
'searchresulttext' => 'Airson barrachd fiosrachaidh mu rannsachadh {{SITENAME}}, cuir sùil air [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Lorg thu \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach duilleag a tha a\' tòiseachadh le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach duilleag a tha a\' ceangal ri "$1"]])',
'searchsubtitleinvalid' => "Lorg thu airson '''$1'''",
-'noexactmatch-nocreate' => "'''Chan eil duilleag ann leis an ainm “$1”.'''",
'notitlematches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
'notextmatches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
-'prevn' => '$1 mu dheireadh',
-'nextn' => 'an ath $1',
-'viewprevnext' => 'Seall ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} mu dheireadh',
+'nextn' => 'an ath {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Seall ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Cuideachadh',
'search-redirect' => '(ag ath-sheòladh $1)',
'search-section' => '(earrann $1)',
@@ -530,20 +567,23 @@ Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèan
'powersearch-field' => 'Lorg',
# Preferences page
-'preferences' => 'Roghainnean',
-'mypreferences' => 'Mo roghainnean',
-'changepassword' => 'Atharraich facal-faire',
-'skin' => 'Bian',
-'skin-preview' => 'Ro-shealladh',
-'dateformat' => 'Cruth nan ceann-latha',
-'math_unknown_error' => 'mearachd neo-aithnichte',
-'prefs-personal' => "Dàta a' chleachdair",
-'saveprefs' => 'Sàbhail roghainnean',
-'resetprefs' => 'Ath-shuidhich taghaidhean',
-'rows' => 'Sreathan',
-'columns' => 'Colbhan',
-'savedprefs' => 'Tha na roghainnean agad air an sàbhaladh.',
-'default' => 'Gnàth',
+'preferences' => 'Roghainnean',
+'mypreferences' => 'Mo roghainnean',
+'changepassword' => 'Atharraich facal-faire',
+'prefs-skin' => 'Bian',
+'skin-preview' => 'Ro-shealladh',
+'prefs-personal' => "Dàta a' chleachdair",
+'saveprefs' => 'Sàbhail roghainnean',
+'resetprefs' => 'Ath-shuidhich taghaidhean',
+'rows' => 'Sreathan',
+'columns' => 'Colbhan',
+'savedprefs' => 'Tha na roghainnean agad air an sàbhaladh.',
+'default' => 'Gnàth',
+'youremail' => 'Post dealain:',
+'username' => 'Ainm-cleachdaidh:',
+'yourrealname' => "An dearbh ainm a th' ort:",
+'yourlanguage' => 'Cànan:',
+'yournick' => 'An leth-ainm agad (a chuirear ri teachdaireachdan)',
# User rights
'userrights-changeable-col' => "Buidhnean a dh' atharraicheas tu",
@@ -587,6 +627,8 @@ Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèan
# Recent changes linked
'recentchangeslinked' => 'Mùthaidhean co-cheangailte',
+'recentchangeslinked-feed' => 'Mùthaidhean buntainneach',
+'recentchangeslinked-toolbox' => 'Mùthaidhean buntainneach',
'recentchangeslinked-title' => 'Mùthaidhean co-cheangailte ri "$1"',
'recentchangeslinked-summary' => "Seo liosta nam mùthaidhean a chaidh a chur air duilleagan a tha a' ceangal o dhuilleag shònraichte (no ri buill de roinn shònraichte).
Tha duilleagan air [[Special:Watchlist|do chlàr-faire]] ann an litrichean '''troma'''.",
@@ -610,16 +652,18 @@ Tha duilleagan air [[Special:Watchlist|do chlàr-faire]] ann an litrichean '''tr
'listfiles' => 'Liosta nan ìomhaigh',
# File description page
+'file-anchor-link' => 'Ìomhaigh',
'filehist' => 'Eachdraidh an fhaidhle',
'filehist-help' => 'Briog air ceann-là/àm gus am faidhle fhaicinn mar a nochd e aig an àm sin.',
'filehist-current' => 'làithreach',
'filehist-datetime' => 'Ceann-là/Àm',
'filehist-thumb' => 'Meabh-dhealbh',
+'filehist-thumbtext' => 'Meanbh-dhealbh airson an tionndaidh on $1',
'filehist-user' => 'Neach-cleachdaidh',
'filehist-dimensions' => 'Meud',
'filehist-comment' => 'Beachd',
'imagelinks' => 'Ceanglaichean an fhaidhle',
-'sharedupload' => 'Tha am faidhle seo o $1 agus faodaidh pròiseactan eile a chleachdadh.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Tha am faidhle seo o $1 agus faodaidh pròiseactan eile a chleachdadh.',
'uploadnewversion-linktext' => 'Luchdaich suas tionndadh ùr dhen fhaidhle seo',
# Random page
@@ -734,8 +778,8 @@ Seall air $2 airson clàr de dhuilleagan a chaidh a sguabadh às o chionn ghoiri
# Rollback
'rollbacklink' => 'roilig air ais',
-'editcomment' => "Seo gearr-chunntas an deasachaidh: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Deasachaidhean a chaidh a thilleadh le [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) dhan mhùthadh mu dheireadh le [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Seo gearr-chunntas an deasachaidh: \"''\$1''\".",
+'revertpage' => 'Deasachaidhean a chaidh a thilleadh le [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) dhan mhùthadh mu dheireadh le [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Loga an dìon',
@@ -784,6 +828,7 @@ Seo roghainnean làithreach na duilleige '''$1''':",
'sp-contributions-newbies' => 'Seall mùthaidhean le cunntasan ùra a-mhàin',
'sp-contributions-blocklog' => 'an loga bacaidh',
+'sp-contributions-talk' => 'Deasbaireachd',
'sp-contributions-search' => 'Lorg mùthaidhean leis',
'sp-contributions-username' => 'Seòladh IP no ainm-cleachdaiche:',
'sp-contributions-submit' => 'Lorg',
@@ -807,7 +852,7 @@ Seo roghainnean làithreach na duilleige '''$1''':",
'ipaddress' => 'IP Seòladh/ainm-cleachdair',
'ipbreason' => 'Adhbhar:',
'ipbsubmit' => 'Bac an cleachdair seo',
-'ipboptions' => '2 uair a thìde:2 hours, 1 latha:1 day, 3 làithean:3 days, 1 seachdain:1 week, 2 sheachdain:2 weeks, 1 mhìos:1 month, 3 mìosan:3 months, 6 mìosan:6 months, 1 bhliadhna:1 year,neo-chrìochnach:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uair a thìde:2 hours, 1 latha:1 day, 3 làithean:3 days, 1 seachdain:1 week, 2 sheachdain:2 weeks, 1 mhìos:1 month, 3 mìosan:3 months, 6 mìosan:6 months, 1 bhliadhna:1 year,neo-chrìochnach:infinite',
'badipaddress' => "Chan eil an seòladh IP aig a' cleachdair seo iomchaidh",
'blockipsuccesssub' => 'Shoirbhich bacadh',
'blockipsuccesstext' => "Tha [[Special:Contributions/$1|$1]] air a bhacadh.
@@ -857,7 +902,7 @@ Ma thachras seo, feumaidh to an duilleag a ghluasad no cho-aontachadh a làimh,
'move-watch' => 'Cum sùil air an duilleag thùsail agus an duilleag thairgaideach',
'movepagebtn' => 'Gluais duilleag',
'pagemovedsub' => 'Gluasad soirbheachail',
-'movepage-moved' => '\'\'\'Chaidh "$1" a ghluasad a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Chaidh "$1" a ghluasad a "$2"\'\'\'',
'articleexists' => 'Tha duilleag ann mu thràth air a bheil an t-ainm seo no chan eil an t-ainm a thagh thu dligheachd.
Nach tagh thu ainm eile?',
'talkexists' => "'''Chaidh an duilleag fhèin a ghluasad gu soirbheachail ach cha do ghabh an duilleag deasbaireachd a ghluasad a chionn 's gu bheil tè ann aig an tiotal ùr mu thràth.
@@ -911,6 +956,7 @@ Tadhail air [http://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
'tooltip-search-go' => 'Rach gu duilleag air a bheil an dearbh ainm seo, ma tha tè ann',
'tooltip-search-fulltext' => 'Lorg an teacs seo sna duilleagan',
'tooltip-n-mainpage' => "Tadhail air a' phrìomh dhuilleag",
+'tooltip-n-mainpage-description' => 'Tadhail air an duilleag mhòr',
'tooltip-n-portal' => 'Mun phròiseact, nas urrainn dhut dèanamh is far an lorg thu nithean',
'tooltip-n-currentevents' => 'Lorg fiosrachadh a bharrachd mu thachartasan an latha',
'tooltip-n-recentchanges' => 'Liosta nam mùthaidhean ùra aig an wiki.',
@@ -950,6 +996,9 @@ Tadhail air [http://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
'infosubtitle' => 'Fiosrachadh mun duilleag',
'numwatchers' => 'Aireamh luchd-faire: $1',
+# Math errors
+'math_unknown_error' => 'mearachd neo-aithnichte',
+
# Browsing diffs
'previousdiff' => '← Mùthadh nas sine',
'nextdiff' => 'Deasachadh nas ùire →',
@@ -986,7 +1035,7 @@ Bidh an fheadhainn eile falaichte a ghnàth.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# External editor support
'edit-externally' => 'Deasaich am faidhle le prògram on taobh a-muigh',
@@ -1007,7 +1056,7 @@ Bidh an fheadhainn eile falaichte a ghnàth.
'watchlisttools-raw' => "Deasaich còd a' chlàir-fhaire",
# Special:Version
-'version' => 'Tionndadh', # Not used as normal message but as header for the special page itself
+'version' => 'Tionndadh',
# Special:SpecialPages
'specialpages' => 'Duilleagan sònraichte',
diff --git a/languages/messages/MessagesGl.php b/languages/messages/MessagesGl.php
index 46353b83..84c8ec84 100644
--- a/languages/messages/MessagesGl.php
+++ b/languages/messages/MessagesGl.php
@@ -16,6 +16,8 @@
* @author לערי ריינהארט
*/
+$fallback = 'pt';
+
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Especial',
@@ -44,6 +46,14 @@ $namespaceAliases = array(
'Conversa_Categoría' => NS_CATEGORY_TALK,
);
+$defaultDateFormat = 'dmy';
+
+$dateFormats = array(
+ 'dmy time' => 'H:i',
+ 'dmy date' => 'j \d\e F \d\e Y',
+ 'dmy both' => 'H:i\,\ j \d\e F \d\e Y',
+);
+
$specialPageAliases = array(
'DoubleRedirects' => array( 'Redireccións dobres' ),
'BrokenRedirects' => array( 'Redireccións rotas' ),
@@ -52,13 +62,13 @@ $specialPageAliases = array(
'Userlogout' => array( 'Saír ao anonimato' ),
'CreateAccount' => array( 'Crear unha conta' ),
'Preferences' => array( 'Preferencias' ),
- 'Watchlist' => array( 'Lista de vixilancia', 'Listaxe de vixilancia' ),
+ 'Watchlist' => array( 'Lista de vixilancia' ),
'Recentchanges' => array( 'Cambios recentes' ),
'Upload' => array( 'Cargar' ),
- 'Listfiles' => array( 'Listaxe de imaxes' ),
+ 'Listfiles' => array( 'Lista de imaxes' ),
'Newimages' => array( 'Imaxes novas' ),
- 'Listusers' => array( 'Lista de usuarios', 'Listaxe de usuarios' ),
- 'Listgrouprights' => array( 'Listaxe de dereitos segundo o grupo' ),
+ 'Listusers' => array( 'Lista de usuarios' ),
+ 'Listgrouprights' => array( 'Lista de dereitos segundo o grupo' ),
'Statistics' => array( 'Estatísticas' ),
'Randompage' => array( 'Ao chou', 'Páxina aleatoria' ),
'Lonelypages' => array( 'Páxinas orfas' ),
@@ -68,12 +78,12 @@ $specialPageAliases = array(
'Uncategorizedtemplates' => array( 'Modelos sen categoría' ),
'Unusedcategories' => array( 'Categorías sen uso' ),
'Unusedimages' => array( 'Imaxes sen uso' ),
- 'Wantedpages' => array( 'Páxinas máis buscadas', 'Ligazóns rotas' ),
- 'Wantedcategories' => array( 'Categorías máis usadas' ),
+ 'Wantedpages' => array( 'Páxinas requiridas', 'Ligazóns rotas' ),
+ 'Wantedcategories' => array( 'Categorías requiridas' ),
'Wantedfiles' => array( 'Ficheiros requiridos' ),
'Wantedtemplates' => array( 'Modelos requiridos' ),
- 'Mostlinked' => array( 'O máis enlazado' ),
- 'Mostlinkedcategories' => array( 'Categorías máis enlazadas' ),
+ 'Mostlinked' => array( 'Páxinas máis ligadas' ),
+ 'Mostlinkedcategories' => array( 'Categorías máis ligadas' ),
'Mostlinkedtemplates' => array( 'Modelos máis enlazados' ),
'Mostimages' => array( 'Máis imaxes' ),
'Mostcategories' => array( 'Máis categorías' ),
@@ -88,7 +98,7 @@ $specialPageAliases = array(
'Protectedtitles' => array( 'Títulos protexidos' ),
'Allpages' => array( 'Todas as páxinas' ),
'Prefixindex' => array( 'Índice de prefixos' ),
- 'Ipblocklist' => array( 'Lista dos bloqueos a enderezos IP', 'Listaxe dos bloqueos a enderezos IP' ),
+ 'Ipblocklist' => array( 'Lista dos bloqueos a enderezos IP' ),
'Specialpages' => array( 'Páxinas especiais' ),
'Contributions' => array( 'Contribucións' ),
'Emailuser' => array( 'Correo electrónico de usuario' ),
@@ -112,15 +122,15 @@ $specialPageAliases = array(
'MIMEsearch' => array( 'Procura MIME' ),
'FileDuplicateSearch' => array( 'Procura de ficheiros duplicados' ),
'Unwatchedpages' => array( 'Páxinas sen vixiar' ),
- 'Listredirects' => array( 'Lista de redireccións', 'Listaxe de redireccións' ),
+ 'Listredirects' => array( 'Lista de redireccións' ),
'Revisiondelete' => array( 'Revisións borradas' ),
'Unusedtemplates' => array( 'Modelos non usados' ),
'Randomredirect' => array( 'Redirección aleatoria' ),
'Mypage' => array( 'A miña páxina de usuario' ),
'Mytalk' => array( 'A miña conversa' ),
'Mycontributions' => array( 'As miñas contribucións' ),
- 'Listadmins' => array( 'Lista de administradores', 'Listaxe de administradores' ),
- 'Listbots' => array( 'Lista de bots', 'Listaxe de bots' ),
+ 'Listadmins' => array( 'Lista de administradores' ),
+ 'Listbots' => array( 'Lista de bots' ),
'Popularpages' => array( 'Páxinas populares' ),
'Search' => array( 'Procurar' ),
'Resetpass' => array( 'Cambiar contrasinal' ),
@@ -135,64 +145,56 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#REDIRECCIÓN', '#REDIRECT' ),
- 'notoc' => array( '0', '__SENÍNDICE__', '__NOTOC__' ),
- 'nogallery' => array( '0', '__SENGALERÍA__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__FORZAROÍNDICE__', '__FORCETOC__' ),
- 'toc' => array( '0', '__Índice__', '__TOC__' ),
- 'noeditsection' => array( '0', '__SECCIÓNSNONEDITABLES__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'MESACTUAL', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'NOMEDOMESACTUAL', 'CURRENTMONTHNAME' ),
- 'currentmonthabbrev' => array( '1', 'ABREVIATURADOMESACTUAL', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'DÍAACTUAL', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'DÍAACTUAL2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'NOMEDODÍAACTUAL', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'ANOACTUAL', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'HORAACTUAL', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'HORAACTUAL', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH' ),
+ 'redirect' => array( '0', '#REDIRECCIÓN', '#REDIRECIONAMENTO', '#REDIRECT' ),
+ 'notoc' => array( '0', '__SENÍNDICE__', '__SEMTDC__', '__SEMSUMÁRIO__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__SENGALERÍA__', '__SEMGALERIA__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORZAROÍNDICE__', '__FORCARTDC__', '__FORCARSUMARIO__', '__FORÇARTDC__', '__FORÇARSUMÁRIO__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__Índice__', '__TDC__', '__SUMÁRIO__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__SECCIÓNSNONEDITABLES__', '__NÃOEDITARSEÇÃO__', '__SEMEDITARSEÇÃO__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'MESACTUAL', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'NOMEDOMESACTUAL', 'NOMEDOMESATUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', 'ABREVIATURADOMESACTUAL', 'MESATUALABREV', 'MESATUALABREVIADO', 'ABREVIATURADOMESATUAL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'DÍAACTUAL', 'DIAATUAL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'DÍAACTUAL2', 'DIAATUAL2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOMEDODÍAACTUAL', 'NOMEDODIAATUAL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ANOACTUAL', 'ANOATUAL', 'CURRENTYEAR' ),
+ 'currenthour' => array( '1', 'HORAACTUAL', 'HORAATUAL', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'NOMEDOMESLOCAL', 'LOCALMONTHNAME' ),
- 'localmonthabbrev' => array( '1', 'ABREVIATURADOMESLOCAL', 'LOCALMONTHABBREV' ),
- 'localday' => array( '1', 'DÍALOCAL', 'LOCALDAY' ),
- 'localday2' => array( '1', 'DÍALOCAL2', 'LOCALDAY2' ),
- 'localdayname' => array( '1', 'NOMEDODÍALOCAL', 'LOCALDAYNAME' ),
+ 'localmonthabbrev' => array( '1', 'ABREVIATURADOMESLOCAL', 'MESLOCALABREV', 'MESLOCALABREVIADO', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'DÍALOCAL', 'DIALOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'DÍALOCAL2', 'DIALOCAL2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NOMEDODÍALOCAL', 'NOMEDODIALOCAL', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'ANOLOCAL', 'LOCALYEAR' ),
- 'localtime' => array( '1', 'HORALOCAL', 'LOCALTIME' ),
'localhour' => array( '1', 'HORALOCAL', 'LOCALHOUR' ),
- 'numberofpages' => array( '1', 'NÚMERODEPÁXINAS', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( '1', 'NÚMERODEARTIGOS', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'NÚMERODEFICHEIROS', 'NUMBEROFFILES' ),
- 'numberofusers' => array( '1', 'NÚMERODEUSUARIOS', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( '1', 'NÚMERODEEDICIÓNS', 'NUMBEROFEDITS' ),
- 'pagename' => array( '1', 'NOMEDAPÁXINA', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'NOMEDAPÁXINA', 'PAGENAMEE' ),
- 'namespace' => array( '1', 'ESPAZODENOMES', 'NAMESPACE' ),
- 'namespacee' => array( '1', 'ESPAZODENOMES', 'NAMESPACEE' ),
- 'fullpagename' => array( '1', 'NOMECOMPLETODAPÁXINA', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( '1', 'NOMECOMPLETODAPÁXINA', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'NOMEDASUBPÁXINA', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'NOMEDASUBPÁXINA', 'SUBPAGENAMEE' ),
- 'basepagename' => array( '1', 'NOMEDAPÁXINABASE', 'BASEPAGENAME' ),
- 'basepagenamee' => array( '1', 'NOMEDAPÁXINABASE', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'NOMEDAPÁXINADECONVERSA', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'NOMEDAPÁXINADECONVERSA', 'TALKPAGENAMEE' ),
+ 'numberofpages' => array( '1', 'NÚMERODEPÁXINAS', 'NUMERODEPAGINAS', 'NÚMERODEPÁGINAS', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NÚMERODEARTIGOS', 'NUMERODEARTIGOS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NÚMERODEFICHEIROS', 'NUMERODEARQUIVOS', 'NÚMERODEARQUIVOS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NÚMERODEUSUARIOS', 'NUMERODEUSUARIOS', 'NÚMERODEUSUÁRIOS', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'NÚMERODEEDICIÓNS', 'NUMERODEEDICOES', 'NÚMERODEEDIÇÕES', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'NOMEDAPÁXINA', 'NOMEDAPAGINA', 'NOMEDAPÁGINA', 'PAGENAME' ),
+ 'namespace' => array( '1', 'ESPAZODENOMES', 'DOMINIO', 'DOMÍNIO', 'ESPACONOMINAL', 'ESPAÇONOMINAL', 'NAMESPACE' ),
+ 'fullpagename' => array( '1', 'NOMECOMPLETODAPÁXINA', 'NOMECOMPLETODAPAGINA', 'NOMECOMPLETODAPÁGINA', 'FULLPAGENAME' ),
+ 'subpagename' => array( '1', 'NOMEDASUBPÁXINA', 'NOMEDASUBPAGINA', 'NOMEDASUBPÁGINA', 'SUBPAGENAME' ),
+ 'basepagename' => array( '1', 'NOMEDAPÁXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ),
+ 'talkpagename' => array( '1', 'NOMEDAPÁXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ),
'img_manualthumb' => array( '1', 'miniatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
- 'img_right' => array( '1', 'dereita', 'right' ),
+ 'img_right' => array( '1', 'dereita', 'direita', 'right' ),
'img_left' => array( '1', 'esquerda', 'left' ),
- 'img_none' => array( '1', 'ningún', 'none' ),
- 'img_center' => array( '1', 'centro', 'centro', 'center', 'centre' ),
- 'img_page' => array( '1', 'páxina=$1', 'páxina $1', 'page=$1', 'page $1' ),
- 'img_border' => array( '1', 'borde', 'border' ),
+ 'img_none' => array( '1', 'ningún', 'nenhum', 'none' ),
+ 'img_center' => array( '1', 'centro', 'center', 'centre' ),
+ 'img_page' => array( '1', 'páxina=$1', 'páxina $1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+ 'img_border' => array( '1', 'borde', 'borda', 'border' ),
'grammar' => array( '0', 'GRAMÁTICA:', 'GRAMMAR:' ),
- 'displaytitle' => array( '1', 'AMOSAROTÍTULO', 'DISPLAYTITLE' ),
- 'newsectionlink' => array( '1', '__LIGAZÓNDANOVASECCIÓN__', '__NEWSECTIONLINK__' ),
- 'language' => array( '0', '#LINGUA:', '#LANGUAGE:' ),
- 'numberofadmins' => array( '1', 'NÚMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
+ 'displaytitle' => array( '1', 'AMOSAROTÍTULO', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__LIGAZÓNDANOVASECCIÓN__', '__LINKDENOVASECAO__', '__LINKDENOVASEÇÃO__', '__LIGACAODENOVASECAO__', '__LIGAÇÃODENOVASEÇÃO__', '__NEWSECTIONLINK__' ),
+ 'language' => array( '0', '#LINGUA:', '#IDIOMA:', '#LANGUAGE:' ),
+ 'numberofadmins' => array( '1', 'NÚMERODEADMINISTRADORES', 'NUMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
'special' => array( '0', 'especial', 'special' ),
'tag' => array( '0', 'etiqueta', 'tag' ),
- 'hiddencat' => array( '1', '__CATEGORÍAOCULTA__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'PÁXINASNACATEGORÍA', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( '1', 'TAMAÑODAPÁXINA', 'PAGESIZE' ),
+ 'hiddencat' => array( '1', '__CATEGORÍAOCULTA__', '__CATEGORIAOCULTA__', '__CATOCULTA__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'PÁXINASNACATEGORÍA', 'PAGINASNACATEGORIA', 'PÁGINASNACATEGORIA', 'PAGINASNACAT', 'PÁGINASNACAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'TAMAÑODAPÁXINA', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
);
$separatorTransformTable = array(',' => '.', '.' => ',' );
@@ -228,6 +230,7 @@ $messages = array(
'tog-enotifminoredits' => 'Enviádeme tamén unha mensaxe de correo electrónico cando se produzan edicións pequenas nas páxinas',
'tog-enotifrevealaddr' => 'Revelar o meu enderezo de correo electrónico nos correos de notificación',
'tog-shownumberswatching' => 'Mostrar o número de usuarios que están a vixiar',
+'tog-oldsig' => 'Vista previa da sinatura actual:',
'tog-fancysig' => 'Tratar a sinatura como se fose texto wiki (sen ligazón automática)',
'tog-externaleditor' => 'Usar un editor externo por omisión (só para expertos, precisa duns parámetros especiais no seu computador)',
'tog-externaldiff' => 'Usar diferenzas externas (dif) por omisión (só para expertos, precisa duns parámetros especiais no seu computador)',
@@ -251,6 +254,13 @@ $messages = array(
'underline-never' => 'Nunca',
'underline-default' => 'Opción do propio navegador',
+# Font style option in Special:Preferences
+'editfont-style' => 'Tipo de letra da caixa de edición:',
+'editfont-default' => 'Tipo de letra por defecto do navegador',
+'editfont-monospace' => 'Tipo de letra monoespazada',
+'editfont-sansserif' => 'Tipo de letra sans-serif',
+'editfont-serif' => 'Tipo de letra serif',
+
# Dates
'sunday' => 'Domingo',
'monday' => 'Luns',
@@ -310,7 +320,7 @@ $messages = array(
'category-media-header' => 'Multimedia na categoría "$1"',
'category-empty' => "''Actualmente esta categoría non conta con ningunha páxina ou ficheiro multimedia.''",
'hidden-categories' => '{{PLURAL:$1|Categoría oculta|Categorías ocultas}}',
-'hidden-category-category' => 'Categorías ocultas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorías ocultas',
'category-subcat-count' => '{{PLURAL:$2|Esta categoría só ten a seguinte subcategoría.|Esta categoría ten {{PLURAL:$1|a seguinte subcategoría|as seguintes $1 subcategorías}}, dun total de $2.}}',
'category-subcat-count-limited' => 'Esta categoría ten {{PLURAL:$1|a seguinte subcategoría|as seguintes $1 subcategorías}}.',
'category-article-count' => '{{PLURAL:$2|Esta categoría só contén a seguinte páxina.|{{PLURAL:$1|A seguinte páxina está|As seguintes $1 páxinas están}} nesta categoría, dun total de $2.}}',
@@ -318,6 +328,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Esta categoría só contén o seguinte ficheiro.|{{PLURAL:$1|O seguinte ficheiro está|Os seguintes $1 ficheiros están}} nesta categoría, dun total de $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|O seguinte ficheiro está|Os seguintes $1 ficheiros están}} na categoría actual.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Páxinas indexadas',
+'noindex-category' => 'Páxinas non indexadas',
'mainpagetext' => "'''MediaWiki instalouse correctamente.'''",
'mainpagedocfooter' => 'Consulte a [http://meta.wikimedia.org/wiki/Help:Contents Guía do usuario] para máis información sobre como usar o software wiki.
@@ -327,10 +339,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes sobre MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo das edicións de MediaWiki]',
-'about' => 'Acerca de',
-'article' => 'Artigo',
-'newwindow' => '(abre unha ventá nova)',
-'cancel' => 'Cancelar',
+'about' => 'Acerca de',
+'article' => 'Artigo',
+'newwindow' => '(abre unha ventá nova)',
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Máis...',
+'mypage' => 'A miña páxina',
+'mytalk' => 'A miña conversa',
+'anontalk' => 'Conversa con este enderezo IP',
+'navigation' => 'Navegación',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Procurar',
'qbbrowse' => 'Navegar',
'qbedit' => 'Editar',
@@ -338,15 +358,35 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'As miñas páxinas',
'qbspecialpages' => 'Páxinas especiais',
-'moredotdotdot' => 'Máis...',
-'mypage' => 'A miña páxina',
-'mytalk' => 'A miña conversa',
-'anontalk' => 'Conversa con este enderezo IP',
-'navigation' => 'Navegación',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'PMF',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Engadir un comentario',
+'vector-action-delete' => 'Borrar',
+'vector-action-move' => 'Mover',
+'vector-action-protect' => 'Protexer',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Desprotexer',
+'vector-namespace-category' => 'Categoría',
+'vector-namespace-help' => 'Páxina de axuda',
+'vector-namespace-image' => 'Ficheiro',
+'vector-namespace-main' => 'Páxina',
+'vector-namespace-media' => 'Páxina de multimedia',
+'vector-namespace-mediawiki' => 'Mensaxe',
+'vector-namespace-project' => 'Páxina do proxecto',
+'vector-namespace-special' => 'Páxina especial',
+'vector-namespace-talk' => 'Conversa',
+'vector-namespace-template' => 'Modelo',
+'vector-namespace-user' => 'Páxina de usuario',
+'vector-view-create' => 'Crear',
+'vector-view-edit' => 'Editar',
+'vector-view-history' => 'Ver o historial',
+'vector-view-view' => 'Ler',
+'vector-view-viewsource' => 'Ver o código fonte',
+'actions' => 'Accións',
+'namespaces' => 'Espazos de nomes',
+'variants' => 'Variantes',
'errorpagetitle' => 'Erro',
'returnto' => 'Volver a "$1".',
@@ -396,18 +436,22 @@ $messages = array(
'otherlanguages' => 'Outras linguas',
'redirectedfrom' => '(Redirixido desde "$1")',
'redirectpagesub' => 'Páxina de redirección',
-'lastmodifiedat' => 'A última modificación desta páxina foi o $1 ás $2.', # $1 date, $2 time
+'lastmodifiedat' => 'A última modificación desta páxina foi o $1 ás $2.',
'viewcount' => 'Esta páxina foi visitada {{PLURAL:$1|unha vez|$1 veces}}.',
'protectedpage' => 'Páxina protexida',
'jumpto' => 'Ir a:',
'jumptonavigation' => 'navegación',
'jumptosearch' => 'procura',
+'view-pool-error' => 'Sentímolo, os servidores están sobrecargados nestes intres.
+Hai moitos usuarios intentando ver esta páxina.
+Por favor, agarde un anaco antes de intentar acceder á páxina de novo.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Acerca de {{SITENAME}}',
'aboutpage' => 'Project:Acerca de',
'copyright' => 'Todo o texto está dispoñíbel baixo $1.',
-'copyrightpagename' => 'Dereitos de autor de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Dereitos de autor',
'currentevents' => 'Actualidade',
'currentevents-url' => 'Project:Actualidade',
@@ -415,8 +459,6 @@ $messages = array(
'disclaimerpage' => 'Project:Advertencia xeral',
'edithelp' => 'Axuda de edición',
'edithelppage' => 'Help:Como editar unha páxina',
-'faq' => 'PMF',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Axuda',
'mainpage' => 'Portada',
'mainpage-description' => 'Portada',
@@ -496,10 +538,6 @@ A última consulta á base de datos foi:
"$1"
desde a función "$2".
A base de datos devolveu o erro "$3: $4"',
-'noconnect' => 'O wiki está experimentando algunhas dificultades técnicas e non se pode contactar co servidor da base de datos.<br />
-$1',
-'nodb' => 'Non se pode seleccionar a base de datos $1',
-'cachederror' => 'Esta é unha copia gardada da páxina solicitada, polo que pode non estar ao día.',
'laggedslavemode' => "'''Aviso:''' a páxina pode non conter as actualizacións recentes.",
'readonly' => 'Base de datos fechada',
'enterlockreason' => 'Dea unha razón para o fechamento, incluíndo unha estimación de até cando se manterá.',
@@ -517,6 +555,8 @@ Por favor, comuníquello a un [[Special:ListUsers/sysop|administrador]] tomando
'readonly_lag' => 'A base de datos bloqueouse automaticamente mentres os servidores escravos da base de datos se actualizan desde o máster',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
+'fileappenderrorread' => 'Non foi posible ler "$1" durante a inserción.',
+'fileappenderror' => 'Non se puido engadir "$1" a "$2".',
'filecopyerror' => 'Non se deu copiado o ficheiro "$1" a "$2".',
'filerenameerror' => 'Non se pode cambiar o nome do ficheiro "$1" a "$2".',
'filedeleteerror' => 'Non se deu borrado o ficheiro "$1".',
@@ -526,7 +566,7 @@ Por favor, comuníquello a un [[Special:ListUsers/sysop|administrador]] tomando
'unexpected' => 'Valor inesperado: "$1"="$2".',
'formerror' => 'Erro: non se pode enviar o formulario',
'badarticleerror' => 'Non pode efectuarse esta acción nesta páxina.',
-'cannotdelete' => 'Non se pode borrar a páxina ou imaxe especificada.
+'cannotdelete' => 'Non se puido borrar a páxina ou imaxe "$1".
Se cadra, xa foi borrada por alguén.',
'badtitle' => 'Título incorrecto',
'badtitletext' => 'O título da páxina pedida non era válido, estaba baleiro ou proviña dunha ligazón interlingua ou interwiki incorrecta.
@@ -563,7 +603,6 @@ A razón dada foi ''$2''.",
'virus-unknownscanner' => 'antivirus descoñecido:',
# Login and logout pages
-'logouttitle' => 'Saída de usuario ao anonimato',
'logouttext' => "'''Agora está fóra do sistema.'''
Pode continuar usando {{SITENAME}} de xeito anónimo, ou pode [[Special:UserLogin|acceder de novo]] co mesmo nome de usuario ou con outro.
@@ -571,7 +610,6 @@ Teña en conta que mentres non se limpa a memoria caché do seu navegador algunh
'welcomecreation' => '== Reciba a nosa benvida, $1! ==
A súa conta foi creada correctamente.
Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENAME}}]].',
-'loginpagetitle' => 'Acceso de usuario',
'yourname' => 'Nome de usuario:',
'yourpassword' => 'Contrasinal:',
'yourpasswordagain' => 'Insira o seu contrasinal outra vez:',
@@ -582,6 +620,7 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
'nav-login-createaccount' => 'Rexistro',
'loginprompt' => "Debe habilitar as ''cookies'' para acceder a {{SITENAME}}.",
'userlogin' => 'Rexistro',
+'userloginnocreate' => 'Rexistro',
'logout' => 'Saír ao anonimato',
'userlogout' => 'Saír ao anonimato',
'notloggedin' => 'Non accedeu ao sistema',
@@ -594,28 +633,8 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
'badretype' => 'Os contrasinais que inseriu non coinciden entre si.',
'userexists' => 'O nome de usuario que pretende usar xa está en uso.
Escolla un nome diferente.',
-'youremail' => 'Correo electrónico:',
-'username' => 'Nome de usuario:',
-'uid' => 'ID do usuario:',
-'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
-'yourrealname' => 'Nome real:',
-'yourlanguage' => 'Lingua da interface:',
-'yourvariant' => 'Variante de lingua:',
-'yournick' => 'Sinatura:',
-'badsig' => 'Sinatura non válida; comprobe o código HTML utilizado.',
-'badsiglength' => 'A súa sinatura é demasiado longa.
-Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'Non especificado',
-'gender-male' => 'Masculino',
-'gender-female' => 'Feminino',
-'prefs-help-gender' => 'Opcional: usado para xerar correctamente o sexo por parte do software. Esta información será pública.',
-'email' => 'Correo electrónico',
-'prefs-help-realname' => 'O seu nome real é opcional, pero se escolle dalo utilizarase para atribuírlle o seu traballo.',
'loginerror' => 'Erro ao acceder ao sistema',
-'prefs-help-email' => 'O enderezo de correo electrónico é opcional, pero permite que se lle envíe un contrasinal novo se se esquece del.
-Tamén pode deixar que outras persoas se poñan en contacto con vostede desde a súa páxina de usuario ou de conversa sen necesidade de revelar a súa identidade.',
-'prefs-help-email-required' => 'Requírese o enderezo de correo electrónico.',
+'createaccounterror' => 'Non se puido crear a conta: $1',
'nocookiesnew' => 'A conta de usuario foi creada, pero non accedeu ao sistema.
{{SITENAME}} para rexistrar os usuarios.
Vostede ten as cookies deshabilitadas.
@@ -632,12 +651,13 @@ Verifique o nome que inseriu ou [[Special:UserLogin/signup|cree unha nova conta]
'nosuchusershort' => 'Non existe ningún usuario chamado "<nowiki>$1</nowiki>".
Verifique o nome que inseriu.',
'nouserspecified' => 'Debe especificar un nome de usuario.',
+'login-userblocked' => 'Este usuario está bloqueado. Acceso non autorizado.',
'wrongpassword' => 'O contrasinal escrito é incorrecto.
Por favor, insira outro.',
'wrongpasswordempty' => 'O campo do contrasinal estaba en branco.
Por favor, inténteo de novo.',
-'passwordtooshort' => 'O seu contrasinal é inválido ou demasiado curto.
-Debe conter como mínimo {{PLURAL:$1|1 carácter|$1 caracteres}} e ten que ser diferente do seu nome de usuario.',
+'passwordtooshort' => 'Os contrasinais deben conter, como mínimo, {{PLURAL:$1|1 carácter|$1 caracteres}}.',
+'password-name-match' => 'O seu contrasinal debe ser diferente do seu nome de usuario.',
'mailmypassword' => 'Enviádeme un contrasinal novo por correo',
'passwordremindertitle' => 'Novo contrasinal temporal para {{SITENAME}}',
'passwordremindertext' => 'Alguén (probablemente vostede, desde o enderezo IP $1) solicitou un novo
@@ -650,6 +670,7 @@ Se foi alguén diferente o que fixo esta solicitude ou se xa se lembra do seu co
e non o quere modificar, pode ignorar esta mensaxe e
continuar a utilizar o seu contrasinal vello.',
'noemail' => 'O usuario "$1" non posúe ningún enderezo de correo electrónico rexistrado.',
+'noemailcreate' => 'Ten que proporcionar un enderezo de correo electrónico válido',
'passwordsent' => 'Envióuselle un contrasinal novo ao enderezo de correo electrónico rexistrado de "$1".
Por favor, acceda ao sistema de novo tras recibilo.',
'blocked-mailpassword' => 'O seu enderezo IP está bloqueado e ten restrinxida a edición de artigos. Tampouco se lle permite usar a función de recuperación do contrasinal para evitar abusos do sistema.',
@@ -673,9 +694,11 @@ Insira un enderezo cun formato válido ou baleire ese campo.',
Debe acceder ao sistema e mudar o contrasinal agora.
Pode facer caso omiso desta mensaxe se se creou esta conta por erro.',
+'usernamehasherror' => 'O nome de usuario non pode conter cancelos ("#")',
'login-throttled' => 'Fixo demasiados intentos de inserir o contrasinal.
Por favor, agarde antes de probar outra vez.',
'loginlanguagelabel' => 'Lingua: $1',
+'suspicious-userlogout' => 'Rexeitouse a súa petición de saír do sistema porque semella que a enviou un navegador roto ou a caché dun proxy.',
# Password reset dialog
'resetpass' => 'Cambiar o contrasinal',
@@ -687,17 +710,13 @@ Por favor, agarde antes de probar outra vez.',
'retypenew' => 'Insira outra vez o novo contrasinal:',
'resetpass_submit' => 'Poñer o contrasinal e entrar',
'resetpass_success' => 'O cambio do contrasinal realizouse con éxito! Agora pode entrar...',
-'resetpass_bad_temporary' => 'O contrasinal provisorio non é válido. Isto pode deberse a que xa mudou o contrasinal con éxito ou a que solicitou un novo contrasinal provisorio.',
'resetpass_forbidden' => 'Os contrasinais non poden ser mudados',
'resetpass-no-info' => 'Debe acceder ao sistema para acceder directamente a esta páxina.',
'resetpass-submit-loggedin' => 'Cambiar o contrasinal',
+'resetpass-submit-cancel' => 'Cancelar',
'resetpass-wrong-oldpass' => 'Contrasinal temporal ou actual inválido.
Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal temporal.',
'resetpass-temp-password' => 'Contrasinal temporal:',
-'resetpass-log' => 'Rexistro de restablecementos de contrasinais',
-'resetpass-logtext' => 'A continuación hai un rexistro cos usuarios aos que un administrador lles restableceu o seu contrasinal.',
-'resetpass-logentry' => 'cambiou o contrasinal de $1',
-'resetpass-comment' => 'Motivo para o restablecemento do contrasinal:',
# Edit page toolbar
'bold_sample' => 'Texto en negra',
@@ -774,7 +793,6 @@ Por favor, inclúa eses datos nas consultas que faga.',
'blockededitsource' => "O texto das '''súas edicións''' en '''$1''' móstrase a continuación:",
'whitelistedittitle' => 'Cómpre acceder ao sistema para poder editar',
'whitelistedittext' => 'Ten que $1 para poder editar páxinas.',
-'confirmedittitle' => 'Requírese confirmar o enderezo electrónico para editar',
'confirmedittext' => 'Debe confirmar o correo electrónico antes de comezar a editar. Por favor, configure e dea validez ao correo mediante as súas [[Special:Preferences|preferencias de usuario]].',
'nosuchsectiontitle' => 'Non se pode atopar a sección',
'nosuchsectiontext' => 'Intentou editar unha sección que non existe.
@@ -795,13 +813,20 @@ Se chegou aquí por erro, simplemente prema no botón '''atrás''' do seu navega
Pode [[Special:Search/{{PAGENAME}}|procurar polo título desta páxina]] noutras páxinas,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ollar os rexistros relacionados]
ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar a páxina]</span>.',
+'noarticletext-nopermission' => 'Actualmente non hai ningún texto nesta páxina.
+Pode [[Special:Search/{{PAGENAME}}|procurar polo título desta páxina]] noutras páxinas
+ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ollar os rexistros relacionados]</span>.',
'userpage-userdoesnotexist' => 'A conta do usuario "$1" non está rexistrada. Comprobe se desexa crear/editar esta páxina.',
+'userpage-userdoesnotexist-view' => 'A conta de usuario "$1" non está rexistrada.',
+'blocked-notice-logextract' => 'Este usuario está bloqueado.
+Velaquí está a última entrada do rexistro de bloqueos, por se quere consultala:',
'clearyourcache' => "'''Nota: despois de gravar cómpre limpar a memoria caché do seu navegador para ver os cambios.'''
'''Mozilla / Firefox / Safari:''' prema ''Maiúsculas'' á vez que en ''Recargar'', ou prema en ''Ctrl-F5'' ou ''Ctrl-R'' (''Command-R'' nos Macintosh);
'''Konqueror:''' faga clic en ''Recargar'' ou prema en ''F5'';
'''Opera:''' limpe a súa memoria caché en ''Ferramentas → Preferencias'';
'''Internet Explorer:''' prema ''Ctrl'' ao tempo que fai clic en ''Refrescar'', ou prema ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Nota:''' use o botón \"Mostrar a vista previa\" para verificar o novo CSS/JS antes de gardalo.",
+'usercssyoucanpreview' => "'''Nota:''' use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
+'userjsyoucanpreview' => "'''Nota:''' use o botón \"{{int:showpreview}}\" para verificar o novo JS antes de gardalo.",
'usercsspreview' => "'''Lembre que só está vendo a vista previa do seu CSS de usuario.'''
'''Este aínda non foi gardado!'''",
'userjspreview' => "'''Lembre que só está probando/previsualizando o seu JavaScript de usuario.'''
@@ -855,13 +880,16 @@ Polo tanto, non se pode gardar.",
Se cadra, pode cortar e pegar o texto nun ficheiro de texto e gardalo para despois.'''
O administrador que a fechou deu esta explicación: $1",
-'protectedpagewarning' => "'''ATENCIÓN: esta páxina foi fechada de xeito que só os usuarios con privilexios de administrador do sistema poden editala.'''",
-'semiprotectedpagewarning' => "'''Nota:''' esta páxina foi bloqueada e só os usuarios rexistrados poden editala.",
+'protectedpagewarning' => "'''Aviso: esta páxina foi protexida de xeito que só os usuarios con privilexios de administrador a poidan editar.'''
+Velaquí está a última entrada no rexistro, por se quere consultala:",
+'semiprotectedpagewarning' => "'''Nota:''' esta páxina foi protexida de xeito que só os usuarios rexistrados a poidan editar.
+Velaquí está a última entrada no rexistro, por se quere consultala:",
'cascadeprotectedwarning' => "'''Aviso:''' esta páxina foi protexida de xeito que só a poden editar os usuarios con privilexios de administrador debido a que está incluída {{PLURAL:\$1|na seguinte páxina protexida|nas seguintes páxinas protexidas}} coa opción \"protección en serie\" activada:",
-'titleprotectedwarning' => "'''AVISO: bloqueouse esta páxina para que [[Special:ListGroupRights|só algúns usuarios]] a poidan crear.'''",
-'templatesused' => 'Modelos usados nesta páxina:',
-'templatesusedpreview' => 'Modelos usados nesta vista previa:',
-'templatesusedsection' => 'Modelos usados nesta sección:',
+'titleprotectedwarning' => "'''Aviso: esta páxina foi protexida de xeito que [[Special:ListGroupRights|só algúns usuarios]] a poidan crear.'''
+Velaquí está a última entrada no rexistro, por se quere consultala:",
+'templatesused' => '{{PLURAL:$1|Modelo usado|Modelos usados}} nesta páxina:',
+'templatesusedpreview' => '{{PLURAL:$1|Modelo usado|Modelos usados}} nesta vista previa:',
+'templatesusedsection' => '{{PLURAL:$1|Modelo usado|Modelos usados}} nesta sección:',
'template-protected' => '(protexido)',
'template-semiprotected' => '(semiprotexido)',
'hiddencategories' => 'Esta páxina forma parte {{PLURAL:$1|dunha categoría oculta|de $1 categorías ocultas}}:',
@@ -870,15 +898,18 @@ O administrador que a fechou deu esta explicación: $1",
'nocreatetext' => '{{SITENAME}} ten restrinxida a posibilidade de crear páxinas novas.
Pode volver e editar unha páxina que xa existe ou, se non, [[Special:UserLogin|rexistrarse ou crear unha conta]].',
'nocreate-loggedin' => 'Non dispón dos permisos necesarios para crear páxinas novas.',
+'sectioneditnotsupported-title' => 'A edición de seccións non está soportada',
+'sectioneditnotsupported-text' => 'A edición de seccións non está soportada nesta páxina.',
'permissionserrors' => 'Erros de permisos',
'permissionserrorstext' => 'Non dispón de permiso para facelo por {{PLURAL:$1|esta razón|estas razóns}}:',
'permissionserrorstext-withaction' => 'Non ten os permisos necesarios para $2, {{PLURAL:$1|pola seguinte razón|polas seguintes razóns}}:',
-'recreate-deleted-warn' => "'''Atención: vai volver crear unha páxina que xa foi eliminada anteriormente.
+'recreate-moveddeleted-warn' => "'''Atención: vai volver crear unha páxina que xa foi eliminada anteriormente.'''
Debería considerar se é apropiado continuar a editar esta páxina.
-Velaquí está o rexistro de borrado desta páxina, por se quere consultalo:",
-'deleted-notice' => 'Esta páxina foi borrada. Embaixo pódese ver o rexistro de borrados desta páxina, por se o quere consultar.',
-'deletelog-fulllog' => 'Ver o rexistro completo',
+Velaquí están o rexistro de borrados e mais o de traslados desta páxina, por se quere consultalos:",
+'moveddeleted-notice' => 'Esta páxina foi borrada.
+A continuación pódese ver o rexistro de borrados e traslados desta páxina, por se quere consultalos.',
+'log-fulllog' => 'Ver o rexistro completo',
'edit-hook-aborted' => "A edición foi abortada polo ''hook''.
Este non deu ningunha explicación.",
'edit-gone-missing' => 'Non se pode actualizar a páxina.
@@ -901,6 +932,7 @@ Estes argumentos serán omitidos.',
'post-expand-template-argument-category' => 'Páxinas que conteñen argumentos de modelo omitidos',
'parser-template-loop-warning' => 'Detectouse un modelo en bucle: [[$1]]',
'parser-template-recursion-depth-warning' => 'Excedeuse o límite da profundidade do recurso do modelo ($1)',
+'language-converter-depth-warning' => 'Excedeuse o límite de profundidade do convertedor de lingua ($1)',
# "Undo" feature
'undo-success' => 'A edición pode ser desfeita.
@@ -919,9 +951,9 @@ A razón dada por $3 foi ''$2''",
'viewpagelogs' => 'Ver os rexistros desta páxina',
'nohistory' => 'Esta páxina non posúe ningún historial de edicións.',
'currentrev' => 'Revisión actual',
-'currentrev-asof' => 'Revisión actual ás $1',
-'revisionasof' => 'Revisión como estaba ás $1',
-'revision-info' => 'Revisión feita por $2 ás $1', # Additionally available: $3: revision id
+'currentrev-asof' => 'Revisión actual feita o $2 ás $3',
+'revisionasof' => 'Revisión como estaba o $2 ás $3',
+'revision-info' => 'Revisión feita o $4 ás $5 por $2',
'previousrevision' => '← Revisión máis antiga',
'nextrevision' => 'Revisión máis nova →',
'currentrevisionlink' => 'Revisión actual',
@@ -933,7 +965,7 @@ A razón dada por $3 foi ''$2''",
'histlegend' => "Selección de diferenzas: marque as versións que queira comparar e prema no botón ao final.<br />
Lenda: '''({{int:cur}})''' = diferenza coa versión actual, '''({{int:last}})''' = diferenza coa versión precedente, '''{{int:minoreditletter}}''' = edición pequena.",
'history-fieldset-title' => 'Navegar polo historial',
-'deletedrev' => '[borrado]',
+'history-show-deleted' => 'Borrados soamente',
'histfirst' => 'Primeiras',
'histlast' => 'Últimas',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -942,71 +974,114 @@ Lenda: '''({{int:cur}})''' = diferenza coa versión actual, '''({{int:last}})'''
# Revision feed
'history-feed-title' => 'Historial de revisións',
'history-feed-description' => 'Historial de revisións desta páxina no wiki',
-'history-feed-item-nocomment' => '$1 en $2', # user at time
+'history-feed-item-nocomment' => '$1 en $2',
'history-feed-empty' => 'A páxina solicitada non existe.
Puido borrarse ou moverse a outro nome.
Probe a [[Special:Search|buscar no wiki]] para atopar as páxinas relacionadas.',
# Revision deletion
-'rev-deleted-comment' => '(comentario eliminado)',
-'rev-deleted-user' => '(nome de usuario eliminado)',
-'rev-deleted-event' => '(rexistro de evento eliminado)',
-'rev-deleted-text-permission' => "Esta revisión da páxina foi '''eliminada'''.
-Pode ampliar os detalles no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
-'rev-deleted-text-view' => "Esta revisión da páxina foi '''eliminada'''.
-Como administrador pode vela; pode ampliar os detalles no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
-'rev-deleted-no-diff' => "Non pode ver esta diferenza porque unha das revisións foi '''eliminada'''.
-Pode ampliar os detalles no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
-'rev-deleted-unhide-diff' => "Unha das revisións desta diferenza foi '''eliminada'''.
-Pode ampliar os detalles no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].
+'rev-deleted-comment' => '(comentario eliminado)',
+'rev-deleted-user' => '(nome de usuario eliminado)',
+'rev-deleted-event' => '(rexistro de evento eliminado)',
+'rev-deleted-user-contribs' => '[nome de usuario ou enderezo IP eliminado; edición agochada das contribucións]',
+'rev-deleted-text-permission' => "Esta revisión da páxina foi '''borrada'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
+'rev-deleted-text-unhide' => "Esta revisión da páxina foi '''borrada'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].
+Como administrador aínda podería [$1 ver esta revisión] se quixese.",
+'rev-suppressed-text-unhide' => "Esta revisión da páxina foi '''suprimida'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistro de supresións].
+Como administrador aínda podería [$1 ver esta revisión] se quixese.",
+'rev-deleted-text-view' => "Esta revisión da páxina foi '''borrada'''.
+Como administrador pode vela; pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
+'rev-suppressed-text-view' => "Esta revisión da páxina foi '''suprimida'''.
+Como administrador pode vela; pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistro de supresións].",
+'rev-deleted-no-diff' => "Non pode ver esta diferenza porque unha das revisións foi '''borrada'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
+'rev-suppressed-no-diff' => "Non pode ver esta diferenza porque unha das revisións foi '''borrada'''.",
+'rev-deleted-unhide-diff' => "Unha das revisións desta diferenza foi '''borrada'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].
+Como administrador aínda podería [$1 ver esta diferenza] se quixese.",
+'rev-suppressed-unhide-diff' => "Unha das revisións desta diferenza foi '''suprimida'''.
+Pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistro de supresións].
Como administrador aínda podería [$1 ver esta diferenza] se quixese.",
-'rev-delundel' => 'mostrar/agochar',
-'revisiondelete' => 'Borrar/restaurar revisións',
-'revdelete-nooldid-title' => 'Revisión inválida',
-'revdelete-nooldid-text' => 'Non indicou a revisión ou revisións sobre as que realizar esta
+'rev-deleted-diff-view' => "Unha das revisións desta diferenza foi '''borrada'''.
+Como administrador pode vela; pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrados].",
+'rev-suppressed-diff-view' => "Unha das revisións desta diferenza foi '''suprimida'''.
+Como administrador pode vela; pode ampliar os detalles no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rexistro de supresións].",
+'rev-delundel' => 'mostrar/agochar',
+'rev-showdeleted' => 'mostrar',
+'revisiondelete' => 'Borrar/restaurar revisións',
+'revdelete-nooldid-title' => 'Revisión inválida',
+'revdelete-nooldid-text' => 'Non indicou a revisión ou revisións sobre as que realizar esta
función, a revisión especificada non existe ou está intentando agochar a revisión actual.',
-'revdelete-nologtype-title' => 'Non se especificou ningún tipo de rexistro',
-'revdelete-nologtype-text' => 'Non especificou un tipo de rexistro co que levar a cabo esta acción.',
-'revdelete-toomanytargets-title' => 'Demasiados obxectivos',
-'revdelete-toomanytargets-text' => 'Especificou demasiados tipos de obxectivos cos que levar a cabo esta acción.',
-'revdelete-nologid-title' => 'Entrada de rexistro inválida',
-'revdelete-nologid-text' => 'Ou non especificou o evento rexistrado no que levar a cabo esta función ou a entrada que deu non existe.',
-'revdelete-selected' => "'''{{PLURAL:\$2|Revisión seleccionada|Revisións seleccionadas}} de \"[[:\$1]]\":'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Rexistro de evento seleccionado|Rexistro de eventos seleccionados}}:'''",
-'revdelete-text' => "'''As revisións borradas seguirán aparecendo no historial da páxina e nos rexistros, pero partes do seu contido serán inaccesibles de cara ao público.'''
-
-Os demais administradores de {{SITENAME}} poderán acceder ao contido agochado e poderán restaurar a páxina de novo a través desta mesma interface, a non ser que sexa establecida unha restrición adicional.
-Por favor, confirme que esta é a súa intención, que comprende as consecuencias e que o fai de acordo [[{{MediaWiki:Policy-url}}|coas políticas]].",
-'revdelete-suppress-text' => "A eliminación '''só''' debería ser usada nos seguintes casos:
+'revdelete-nologtype-title' => 'Non se especificou ningún tipo de rexistro',
+'revdelete-nologtype-text' => 'Non especificou un tipo de rexistro co que levar a cabo esta acción.',
+'revdelete-nologid-title' => 'Entrada de rexistro inválida',
+'revdelete-nologid-text' => 'Ou non especificou o evento rexistrado no que levar a cabo esta función ou a entrada que deu non existe.',
+'revdelete-no-file' => 'O ficheiro especificado non existe.',
+'revdelete-show-file-confirm' => 'Está seguro de querer ver unha revisión borrada do ficheiro "<nowiki>$1</nowiki>" do día $2 ás $3?',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-selected' => "'''{{PLURAL:\$2|Revisión seleccionada|Revisións seleccionadas}} de \"[[:\$1]]\":'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Rexistro de evento seleccionado|Rexistro de eventos seleccionados}}:'''",
+'revdelete-text' => "'''As revisións borradas seguirán aparecendo no historial da páxina e nos rexistros, pero partes do seu contido serán inaccesibles de cara ao público.'''
+Os demais administradores de {{SITENAME}} poderán acceder ao contido agochado e poderán restaurar a páxina de novo a través desta mesma interface, a non ser que se estableza algunha restrición adicional.",
+'revdelete-confirm' => 'Por favor, confirme que quere levar a cabo esta acción, que comprende as consecuencias e que o fai de acordo [[{{MediaWiki:Policy-url}}|coas políticas]].',
+'revdelete-suppress-text' => "A eliminación '''só''' debería ser usada nos seguintes casos:
* Información persoal inapropiada
*: ''domicilios e números de teléfono, números da seguridade social, etc.''",
-'revdelete-legend' => 'Aplicar restricións de visibilidade',
-'revdelete-hide-text' => 'Agochar o texto da revisión',
-'revdelete-hide-name' => 'Agochar a acción e o destino',
-'revdelete-hide-comment' => 'Agochar o resumo de edición',
-'revdelete-hide-user' => 'Agochar o nome de usuario ou o enderezo IP do editor',
-'revdelete-hide-restricted' => 'Eliminar os datos da vista dos administradores así coma da doutros',
-'revdelete-suppress' => 'Eliminar os datos da vista dos administradores así coma da doutros',
-'revdelete-hide-image' => 'Agochar o contido do ficheiro',
-'revdelete-unsuppress' => 'Retirar as restricións sobre as revisións restauradas',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Aplicar á revisión seleccionada',
-'revdelete-logentry' => 'mudou a visibilidade dunha revisión de "[[$1]]"',
-'logdelete-logentry' => 'mudou a visibilidade do evento de [[$1]]',
-'revdelete-success' => "'''Actualizouse sen problemas a visibilidade da revisión.'''",
-'logdelete-success' => "'''Configurouse sen problemas a visibilidade do rexistro.'''",
-'revdel-restore' => 'cambiar a visibilidade',
-'pagehist' => 'Historial da páxina',
-'deletedhist' => 'Historial de borrado',
-'revdelete-content' => 'o contido',
-'revdelete-summary' => 'o resumo de edición',
-'revdelete-uname' => 'o nome de usuario',
-'revdelete-restricted' => 'aplicou as restricións aos administradores',
-'revdelete-unrestricted' => 'eliminou as restricións aos administradores',
-'revdelete-hid' => 'agochou $1',
-'revdelete-unhid' => 'descubriu $1',
-'revdelete-log-message' => '$1 {{PLURAL:$2|dunha revisión|de $2 revisións}}',
-'logdelete-log-message' => '$1 {{PLURAL:$2|dun evento|de $2 eventos}}',
+'revdelete-legend' => 'Aplicar restricións de visibilidade',
+'revdelete-hide-text' => 'Agochar o texto da revisión',
+'revdelete-hide-image' => 'Agochar o contido do ficheiro',
+'revdelete-hide-name' => 'Agochar a acción e o destino',
+'revdelete-hide-comment' => 'Agochar o resumo de edición',
+'revdelete-hide-user' => 'Agochar o nome de usuario ou o enderezo IP do editor',
+'revdelete-hide-restricted' => 'Eliminar os datos da vista dos administradores así coma da doutros',
+'revdelete-radio-same' => '(non cambiar)',
+'revdelete-radio-set' => 'Si',
+'revdelete-radio-unset' => 'Non',
+'revdelete-suppress' => 'Eliminar os datos da vista dos administradores así coma da doutros',
+'revdelete-unsuppress' => 'Retirar as restricións sobre as revisións restauradas',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Aplicar {{PLURAL:$1|á revisión seleccionada|ás revisións seleccionadas}}',
+'revdelete-logentry' => 'mudou a visibilidade dunha revisión de "[[$1]]"',
+'logdelete-logentry' => 'mudou a visibilidade do evento de [[$1]]',
+'revdelete-success' => "'''Actualizouse sen problemas a visibilidade da revisión.'''",
+'revdelete-failure' => "'''Non se puido actualizar a visibilidade da revisión:'''
+$1",
+'logdelete-success' => "'''Configurouse sen problemas a visibilidade do rexistro.'''",
+'logdelete-failure' => "'''A visibilidade do rexistro non pode ser fixada:'''
+$1",
+'revdel-restore' => 'cambiar a visibilidade',
+'pagehist' => 'Historial da páxina',
+'deletedhist' => 'Historial de borrado',
+'revdelete-content' => 'o contido',
+'revdelete-summary' => 'o resumo de edición',
+'revdelete-uname' => 'o nome de usuario',
+'revdelete-restricted' => 'aplicou as restricións aos administradores',
+'revdelete-unrestricted' => 'eliminou as restricións aos administradores',
+'revdelete-hid' => 'agochou $1',
+'revdelete-unhid' => 'descubriu $1',
+'revdelete-log-message' => '$1 {{PLURAL:$2|dunha revisión|de $2 revisións}}',
+'logdelete-log-message' => '$1 {{PLURAL:$2|dun evento|de $2 eventos}}',
+'revdelete-hide-current' => 'Produciuse un erro ao agochar o elemento con data de $1 ás $2: esta é a revisión actual.
+Non pode ser agochado.',
+'revdelete-show-no-access' => 'Produciuse un erro ao mostrar o elemento con data de $1 ás $2: este elemento marcouse como "restrinxido".
+Non ten acceso a el.',
+'revdelete-modify-no-access' => 'Produciuse un erro ao modificar o elemento con data de $1 ás $2: este elemento marcouse como "restrinxido".
+Non ten acceso a el.',
+'revdelete-modify-missing' => 'Produciuse un erro ao modificar o elemento con ID $1: falta na base de datos!',
+'revdelete-no-change' => "'''Aviso:''' o elemento con data de $1 ás $2 xa ten solicitado as configuracións de visibilidade.",
+'revdelete-concurrent-change' => 'Produciuse un erro ao modificar o elemento con data de $1 ás $2: o seu estado parece ter sido cambiado por alguén mentres intentaba modificalo.
+Por favor, comprobe o rexistros.',
+'revdelete-only-restricted' => 'Erro ao agochar o elemento con data de $1 ás $2: non pode eliminar elementos da vista dos administradores sen tamén seleccionar algunha das outras opcións de visibilidade.',
+'revdelete-reason-dropdown' => '* Motivos frecuentes para borrar
+** Violación dos dereitos de autor
+** Información persoal inapropiada',
+'revdelete-otherreason' => 'Outro motivo:',
+'revdelete-reasonotherlist' => 'Outro motivo',
+'revdelete-edit-reasonlist' => 'Editar os motivos de borrado',
+'revdelete-offender' => 'Autor da revisión:',
# Suppression log
'suppressionlog' => 'Rexistro de supresións',
@@ -1043,67 +1118,13 @@ Asegúrese de que esta modificación da páxina mantén a continuidade históric
'mergelogpagetext' => 'Embaixo hai unha lista coas fusións máis recentes do historial dunha páxina co doutra.',
# Diffs
-'history-title' => 'Historial de revisións de "$1"',
-'difference' => '(Diferenzas entre revisións)',
-'lineno' => 'Liña $1:',
-'compareselectedversions' => 'Comparar as versións seleccionadas',
-'visualcomparison' => 'Comparación visual',
-'wikicodecomparison' => 'Comparación do texto wiki',
-'editundo' => 'desfacer',
-'diff-multi' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial.)',
-'diff-movedto' => 'moveuse a "$1"',
-'diff-styleadded' => 'estilo $1 engadido',
-'diff-added' => 'engadiu $1',
-'diff-changedto' => 'cambiou a $1',
-'diff-movedoutof' => 'retirada de $1',
-'diff-styleremoved' => 'estilo $1 eliminado',
-'diff-removed' => 'eliminou $1',
-'diff-changedfrom' => 'cambiou de $1',
-'diff-src' => 'orixe',
-'diff-withdestination' => 'con destino a $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'ancho',
-'diff-height' => 'alto',
-'diff-p' => "un '''parágrafo'''",
-'diff-blockquote' => "unha '''cita'''",
-'diff-h1' => "unha '''cabeceira de nivel 1'''",
-'diff-h2' => "unha '''cabeceira de nivel 2'''",
-'diff-h3' => "unha '''cabeceira de nivel 3'''",
-'diff-h4' => "unha '''cabeceira de nivel 4'''",
-'diff-h5' => "unha '''cabeceira de nivel 5'''",
-'diff-pre' => "un '''bloque con formato previo'''",
-'diff-div' => "unha '''división'''",
-'diff-ul' => "unha '''lista sen orde'''",
-'diff-ol' => "unha '''lista ordenada'''",
-'diff-li' => "unha '''lista de elementos'''",
-'diff-table' => "unha '''táboa'''",
-'diff-tbody' => "unha '''táboa de contido'''",
-'diff-tr' => "unha '''liña'''",
-'diff-td' => "unha '''cela'''",
-'diff-th' => "unha '''cabeceira'''",
-'diff-br' => "un '''salto de liña'''",
-'diff-hr' => "unha '''liña horizontal'''",
-'diff-code' => "un '''bloque de código de ordenador'''",
-'diff-dl' => "unha '''lista de definicións'''",
-'diff-dt' => "un '''termo de definición'''",
-'diff-dd' => "unha '''definición'''",
-'diff-input' => "unha '''entrada'''",
-'diff-form' => "un '''formulario'''",
-'diff-img' => "unha '''imaxe'''",
-'diff-span' => "unha '''extensión'''",
-'diff-a' => "unha '''ligazón'''",
-'diff-i' => "'''cursiva'''",
-'diff-b' => "'''negra'''",
-'diff-strong' => "'''negra'''",
-'diff-em' => "'''énfase'''",
-'diff-font' => "'''fonte'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''eliminou'''",
-'diff-tt' => "'''arranxou o largo'''",
-'diff-sub' => "'''subíndice'''",
-'diff-sup' => "'''superíndice'''",
-'diff-strike' => "'''riscado'''",
+'history-title' => 'Historial de revisións de "$1"',
+'difference' => '(Diferenzas entre revisións)',
+'lineno' => 'Liña $1:',
+'compareselectedversions' => 'Comparar as versións seleccionadas',
+'showhideselectedversions' => 'Mostrar/Agochar as versións seleccionadas',
+'editundo' => 'desfacer',
+'diff-multi' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial.)',
# Search results
'searchresults' => 'Resultados da procura',
@@ -1111,29 +1132,25 @@ Asegúrese de que esta modificación da páxina mantén a continuidade históric
'searchresulttext' => 'Para máis información sobre como realizar procuras en {{SITENAME}}, vexa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'A súa busca de "\'\'\'[[:$1]]\'\'\'" ([[Special:Prefixindex/$1|todas as páxinas que comezan por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as páxinas que ligan con "$1"]])',
'searchsubtitleinvalid' => "A súa busca de \"'''\$1'''\"",
-'noexactmatch' => "'''Non hai ningunha páxina titulada \"\$1\".'''
-Se quere, pode [[:\$1|creala]].",
-'noexactmatch-nocreate' => "'''Non hai ningunha páxina titulada \"\$1\".'''",
'toomanymatches' => 'Demasiadas coincidencias foron devoltas, por favor tente unha consulta diferente',
'titlematches' => 'O título do artigo coincide',
'notitlematches' => 'Non coincide ningún título de páxina',
'textmatches' => 'O texto da páxina coincide',
'notextmatches' => 'Non se atopou o texto en ningunha páxina',
-'prevn' => '$1 anteriores',
-'nextn' => '$1 seguintes',
+'prevn' => '{{PLURAL:$1|$1}} previas',
+'nextn' => '{{PLURAL:$1|$1}} seguintes',
'prevn-title' => '$1 {{PLURAL:$1|resultado previo|resultados previos}}',
'nextn-title' => '$1 {{PLURAL:$1|resultado seguinte|resultados seguintes}}',
'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por páxina',
-'viewprevnext' => 'Ver as ($1) ($2) ($3)',
+'viewprevnext' => 'Ver as ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opcións de busca',
'searchmenu-exists' => "* Páxina \"'''[[\$1]]'''\"",
'searchmenu-new' => "'''Crear a páxina \"[[:\$1]]\" neste wiki!'''",
'searchhelp-url' => 'Help:Contidos',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue polas páxinas que comezan coas mesmas iniciais]]',
'searchprofile-articles' => 'Páxinas de contido',
-'searchprofile-articles-and-proj' => 'Páxinas de contido e do proxecto',
-'searchprofile-project' => 'Páxinas do proxecto',
-'searchprofile-images' => 'Ficheiros',
+'searchprofile-project' => 'Páxinas do proxecto e de axuda',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Avanzado',
'searchprofile-articles-tooltip' => 'Procurar en "$1"',
@@ -1141,8 +1158,6 @@ Se quere, pode [[:\$1|creala]].",
'searchprofile-images-tooltip' => 'Procurar ficheiros',
'searchprofile-everything-tooltip' => 'Procurar en todo o contido (incluíndo páxinas de conversa)',
'searchprofile-advanced-tooltip' => 'Procurar nos espazos de nomes elixidos',
-'prefs-search-nsdefault' => 'Procurar nos espazos de nomes por defecto:',
-'prefs-search-nscustom' => 'Procurar nos espazos de nomes elixidos:',
'search-result-size' => '$1 ({{PLURAL:$2|1 palabra|$2 palabras}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redirixido desde "$1")',
@@ -1155,11 +1170,12 @@ Se quere, pode [[:\$1|creala]].",
'search-mwsuggest-disabled' => 'sen suxestións',
'search-relatedarticle' => 'Relacionado',
'mwsuggest-disable' => 'Deshabilitar as suxestións AJAX',
+'searcheverything-enable' => 'Procurar en todos os espazos de nomes',
'searchrelated' => 'relacionado',
'searchall' => 'todo',
'showingresults' => "Amósanse {{PLURAL:$1|'''1''' resultado|'''$1''' resultados}} comezando polo número '''$2'''.",
'showingresultsnum' => "Embaixo {{PLURAL:$3|amósase '''1''' resultado|amósanse '''$3''' resultados}}, comezando polo número '''$2'''.",
-'showingresultstotal' => "A continuación {{PLURAL:$4|amósase o resultado '''$1''', dun total de '''$3'''|amósanse os resultados do '''$1''' ao '''$2''', dun total de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:\$5|Resultado '''\$1''' de '''\$3'''|Resultados do '''\$1''' ao '''\$2''', dun total de '''\$3'''}} para \"'''\$4'''\"",
'nonefound' => "'''Nota:''' só algúns espazos de nomes son procurados por omisión.
Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (incluíndo páxinas de conversa, modelos, etc.) ou use como prefixo o espazo de nomes desexado.",
'search-nonefound' => 'Non se atopou ningún resultado que coincidise coa procura.',
@@ -1168,113 +1184,152 @@ Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (inc
'powersearch-ns' => 'Procurar nos espazos de nomes:',
'powersearch-redir' => 'Listar as redireccións',
'powersearch-field' => 'Procurar por',
+'powersearch-togglelabel' => 'Seleccionar:',
+'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'Ningún',
'search-external' => 'Procura externa',
'searchdisabled' => 'As procuras en {{SITENAME}} están deshabilitadas por cuestións de rendemento.
Mentres tanto pode procurar usando o Google.
Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados.',
+# Quickbar
+'qbsettings' => 'Opcións da barra rápida',
+'qbsettings-none' => 'Ningunha',
+'qbsettings-fixedleft' => 'Fixa á esquerda',
+'qbsettings-fixedright' => 'Fixa á dereita',
+'qbsettings-floatingleft' => 'Flotante á esquerda',
+'qbsettings-floatingright' => 'Flotante á dereita',
+
# Preferences page
-'preferences' => 'Preferencias',
-'mypreferences' => 'As miñas preferencias',
-'prefs-edits' => 'Número de edicións:',
-'prefsnologin' => 'Non accedeu ao sistema',
-'prefsnologintext' => 'Debe <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} acceder ao sistema]</span> para modificar as preferencias de usuario.',
-'prefsreset' => 'As preferencias foron postas cos valores orixinais.',
-'qbsettings' => 'Opcións da barra rápida',
-'qbsettings-none' => 'Ningunha',
-'qbsettings-fixedleft' => 'Fixa á esquerda',
-'qbsettings-fixedright' => 'Fixa á dereita',
-'qbsettings-floatingleft' => 'Flotante á esquerda',
-'qbsettings-floatingright' => 'Flotante á dereita',
-'changepassword' => 'Cambiar o meu contrasinal',
-'skin' => 'Aparencia',
-'skin-preview' => 'Vista previa',
-'math' => 'Fórmulas matemáticas',
-'dateformat' => 'Formato da data',
-'datedefault' => 'Ningunha preferencia',
-'datetime' => 'Data e hora',
-'math_failure' => 'Fallou a conversión do código',
-'math_unknown_error' => 'erro descoñecido',
-'math_unknown_function' => 'función descoñecida',
-'math_lexing_error' => 'erro de léxico',
-'math_syntax_error' => 'erro de sintaxe',
-'math_image_error' => 'Fallou a conversión a PNG; comprobe que latex, dvips, gs e convert están ben instalados',
-'math_bad_tmpdir' => 'Non se puido crear ou escribir no directorio temporal de fórmulas',
-'math_bad_output' => 'Non se puido crear ou escribir no directorio de saída de fórmulas',
-'math_notexvc' => 'Falta o executable texvc. Por favor consulte math/README para configurar.',
-'prefs-personal' => 'Información do usuario',
-'prefs-rc' => 'Cambios recentes',
-'prefs-watchlist' => 'Lista de vixilancia',
-'prefs-watchlist-days' => 'Días para amosar na lista de vixilancia:',
-'prefs-watchlist-days-max' => '(máximo 7 días)',
-'prefs-watchlist-edits' => 'Número de edicións para mostrar na lista de vixilancia completa:',
-'prefs-watchlist-edits-max' => '(número máximo: 1000)',
-'prefs-misc' => 'Preferencias varias',
-'prefs-resetpass' => 'Cambiar o contrasinal',
-'saveprefs' => 'Gardar as preferencias',
-'resetprefs' => 'Eliminar os cambios non gardados',
-'restoreprefs' => 'Restaurar todas as preferencias por defecto',
-'textboxsize' => 'Edición',
-'prefs-edit-boxsize' => 'Tamaño da caixa de edición.',
-'rows' => 'Filas:',
-'columns' => 'Columnas:',
-'searchresultshead' => 'Procurar',
-'resultsperpage' => 'Número de resultados por páxina:',
-'contextlines' => 'Número de liñas por resultado:',
-'contextchars' => 'Número de caracteres de contexto por liña:',
-'stub-threshold' => 'Límite superior para o formato de <a href="#" class="stub">ligazóns de bosquexo</a> (bytes):',
-'recentchangesdays' => 'Número de días a mostrar nos cambios recentes:',
-'recentchangesdays-max' => '(máximo {{PLURAL:$1|un día|$1 días}})',
-'recentchangescount' => 'Número de edicións a mostrar, por defecto, nas páxinas dos cambios recentes, historiais e rexistros:',
-'savedprefs' => 'Gardáronse as súas preferencias.',
-'timezonelegend' => 'Zona horaria:',
-'timezonetext' => '¹Insira o número de horas de diferenza entre a súa hora local e a do servidor (UTC).',
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Zona horaria:',
-'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto',
-'timezoneuseoffset' => 'Outra (especifique o desprazamento)',
-'timezoneoffset' => 'Desprazamento¹:',
-'servertime' => 'Hora do servidor:',
-'guesstimezone' => 'Encher desde o navegador',
-'timezoneregion-africa' => 'África',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antártida',
-'timezoneregion-arctic' => 'Ártico',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Océano Atlántico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Océano Índico',
-'timezoneregion-pacific' => 'Océano Pacífico',
-'allowemail' => 'Admitir mensaxes de correo electrónico doutros usuarios',
-'prefs-searchoptions' => 'Opcións de procura',
-'prefs-namespaces' => 'Espazos de nomes',
-'defaultns' => 'Procurar por omisión nestes espazos de nomes:',
-'default' => 'predeterminado',
-'files' => 'Ficheiros',
-'prefs-custom-css' => 'CSS personalizado',
-'prefs-custom-js' => 'JS personalizado',
+'preferences' => 'Preferencias',
+'mypreferences' => 'As miñas preferencias',
+'prefs-edits' => 'Número de edicións:',
+'prefsnologin' => 'Non accedeu ao sistema',
+'prefsnologintext' => 'Debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} acceder ao sistema]</span> para modificar as preferencias de usuario.',
+'changepassword' => 'Cambiar o meu contrasinal',
+'prefs-skin' => 'Aparencia',
+'skin-preview' => 'Vista previa',
+'prefs-math' => 'Fórmulas matemáticas',
+'datedefault' => 'Ningunha preferencia',
+'prefs-datetime' => 'Data e hora',
+'prefs-personal' => 'Información do usuario',
+'prefs-rc' => 'Cambios recentes',
+'prefs-watchlist' => 'Lista de vixilancia',
+'prefs-watchlist-days' => 'Días para amosar na lista de vixilancia:',
+'prefs-watchlist-days-max' => '(máximo 7 días)',
+'prefs-watchlist-edits' => 'Número de edicións para mostrar na lista de vixilancia completa:',
+'prefs-watchlist-edits-max' => '(número máximo: 1000)',
+'prefs-watchlist-token' => 'Pase para a lista de vixilancia:',
+'prefs-misc' => 'Preferencias varias',
+'prefs-resetpass' => 'Cambiar o contrasinal',
+'prefs-email' => 'Opcións de correo electrónico',
+'prefs-rendering' => 'Aparencia',
+'saveprefs' => 'Gardar as preferencias',
+'resetprefs' => 'Eliminar os cambios non gardados',
+'restoreprefs' => 'Restaurar todas as preferencias por defecto',
+'prefs-editing' => 'Edición',
+'prefs-edit-boxsize' => 'Tamaño da caixa de edición.',
+'rows' => 'Filas:',
+'columns' => 'Columnas:',
+'searchresultshead' => 'Procurar',
+'resultsperpage' => 'Número de resultados por páxina:',
+'contextlines' => 'Número de liñas por resultado:',
+'contextchars' => 'Número de caracteres de contexto por liña:',
+'stub-threshold' => 'Límite superior para o formato de <a href="#" class="stub">ligazóns de bosquexo</a> (bytes):',
+'recentchangesdays' => 'Número de días a mostrar nos cambios recentes:',
+'recentchangesdays-max' => '(máximo {{PLURAL:$1|un día|$1 días}})',
+'recentchangescount' => 'Número de edicións a mostrar por defecto:',
+'prefs-help-recentchangescount' => 'Isto inclúe os cambios recentes, os historiais e mais os rexistros.',
+'prefs-help-watchlist-token' => 'Ao encher este campo cunha clave secreta xerarase unha fonte de novas RSS para a súa lista de vixilancia.
+Calquera que saiba esta clave poderá ler a súa lista de vixilancia, así que escolla un valor seguro.
+Velaquí un valor xerado ao chou que pode usar: $1',
+'savedprefs' => 'Gardáronse as súas preferencias.',
+'timezonelegend' => 'Zona horaria:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto',
+'timezoneuseoffset' => 'Outra (especifique o desprazamento)',
+'timezoneoffset' => 'Desprazamento¹:',
+'servertime' => 'Hora do servidor:',
+'guesstimezone' => 'Encher desde o navegador',
+'timezoneregion-africa' => 'África',
+'timezoneregion-america' => 'América',
+'timezoneregion-antarctica' => 'Antártida',
+'timezoneregion-arctic' => 'Ártico',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Océano Atlántico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Océano Índico',
+'timezoneregion-pacific' => 'Océano Pacífico',
+'allowemail' => 'Admitir mensaxes de correo electrónico doutros usuarios',
+'prefs-searchoptions' => 'Opcións de procura',
+'prefs-namespaces' => 'Espazos de nomes',
+'defaultns' => 'Se non, procurar nestes espazos de nomes:',
+'default' => 'predeterminado',
+'prefs-files' => 'Ficheiros',
+'prefs-custom-css' => 'CSS personalizado',
+'prefs-custom-js' => 'JS personalizado',
+'prefs-reset-intro' => 'Pode usar esta páxina para restablecer as súas preferencias ás que veñen dadas por defecto.
+Este cambio non se poderá desfacer.',
+'prefs-emailconfirm-label' => 'Confirmación do correo:',
+'prefs-textboxsize' => 'Tamaño da caixa de edición',
+'youremail' => 'Correo electrónico:',
+'username' => 'Nome de usuario:',
+'uid' => 'ID do usuario:',
+'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
+'prefs-registration' => 'Data e hora de rexistro:',
+'yourrealname' => 'Nome real:',
+'yourlanguage' => 'Lingua da interface:',
+'yourvariant' => 'Variante de lingua:',
+'yournick' => 'Sinatura:',
+'prefs-help-signature' => 'Os comentarios feitos nas páxinas de conversa deben asinarse con catro tiles ("<nowiki>~~~~</nowiki>"), que se converterán na súa sinatura con data e hora.',
+'badsig' => 'Sinatura non válida; comprobe o código HTML utilizado.',
+'badsiglength' => 'A súa sinatura é demasiado longa.
+Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Non especificado',
+'gender-male' => 'Masculino',
+'gender-female' => 'Feminino',
+'prefs-help-gender' => 'Opcional: usado para xerar correctamente o sexo por parte do software. Esta información será pública.',
+'email' => 'Correo electrónico',
+'prefs-help-realname' => 'O seu nome real é opcional, pero se escolle dalo utilizarase para atribuírlle o seu traballo.',
+'prefs-help-email' => 'O enderezo de correo electrónico é opcional, pero permite que se lle envíe un contrasinal novo se se esquece del.
+Tamén pode deixar que outras persoas se poñan en contacto con vostede desde a súa páxina de usuario ou de conversa sen necesidade de revelar a súa identidade.',
+'prefs-help-email-required' => 'Requírese o enderezo de correo electrónico.',
+'prefs-info' => 'Información básica',
+'prefs-i18n' => 'Internacionalización',
+'prefs-signature' => 'Sinatura',
+'prefs-dateformat' => 'Formato da data',
+'prefs-timeoffset' => 'Desprazamento horario',
+'prefs-advancedediting' => 'Opcións avanzadas',
+'prefs-advancedrc' => 'Opcións avanzadas',
+'prefs-advancedrendering' => 'Opcións avanzadas',
+'prefs-advancedsearchoptions' => 'Opcións avanzadas',
+'prefs-advancedwatchlist' => 'Opcións avanzadas',
+'prefs-display' => 'Opcións de visualización',
+'prefs-diffs' => 'Diferenzas',
# User rights
-'userrights' => 'Xestión dos dereitos de usuario', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administrar os grupos do usuario',
-'userrights-user-editname' => 'Escriba un nome de usuario:',
-'editusergroup' => 'Editar os grupos do usuario',
-'editinguser' => "Mudando os dereitos do usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Editar os grupos do usuario',
-'saveusergroups' => 'Gardar os grupos do usuario',
-'userrights-groupsmember' => 'Membro de:',
-'userrights-groups-help' => 'Pode cambiar os grupos aos que o usuario pertence:
+'userrights' => 'Xestión dos dereitos de usuario',
+'userrights-lookup-user' => 'Administrar os grupos do usuario',
+'userrights-user-editname' => 'Escriba un nome de usuario:',
+'editusergroup' => 'Editar os grupos do usuario',
+'editinguser' => "Mudando os dereitos do usuario '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Editar os grupos do usuario',
+'saveusergroups' => 'Gardar os grupos do usuario',
+'userrights-groupsmember' => 'Membro de:',
+'userrights-groupsmember-auto' => 'Membro implícito de:',
+'userrights-groups-help' => 'Pode cambiar os grupos aos que o usuario pertence:
* Se a caixa ten un sinal (✓) significa que o usuario pertence a ese grupo.
* Se, pola contra, non o ten, significa que non pertence.
* Un asterisco (*) indica que non pode eliminar o grupo unha vez que o engadiu, e viceversa.',
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'Non dispón de permiso para editar dereitos de usuarios noutros wikis.',
-'userrights-nodatabase' => 'A base de datos $1 non existe ou non é local.',
-'userrights-nologin' => 'Debe [[Special:UserLogin|acceder ao sistema]] cunta conta de administrador para asignar dereitos de usuario.',
-'userrights-notallowed' => 'A súa conta non dispón dos permisos necesarios para asignar dereitos de usuario.',
-'userrights-changeable-col' => 'Os grupos que pode cambiar',
-'userrights-unchangeable-col' => 'Os grupos que non pode cambiar',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'Non dispón de permiso para editar dereitos de usuarios noutros wikis.',
+'userrights-nodatabase' => 'A base de datos $1 non existe ou non é local.',
+'userrights-nologin' => 'Debe [[Special:UserLogin|acceder ao sistema]] cunta conta de administrador para asignar dereitos de usuario.',
+'userrights-notallowed' => 'A súa conta non dispón dos permisos necesarios para asignar dereitos de usuario.',
+'userrights-changeable-col' => 'Os grupos que pode cambiar',
+'userrights-unchangeable-col' => 'Os grupos que non pode cambiar',
# Groups
'group' => 'Grupo:',
@@ -1327,6 +1382,7 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'right-bigdelete' => 'Borrar páxinas con historiais grandes',
'right-deleterevision' => 'Borrar e restaurar versións específicas de páxinas',
'right-deletedhistory' => 'Ver as entradas borradas do historial, sen o seu texto asociado',
+'right-deletedtext' => 'Ver texto borrado e cambios entre revisións eliminadas',
'right-browsearchive' => 'Procurar páxinas borradas',
'right-undelete' => 'Restaurar unha páxina',
'right-suppressrevision' => 'Revisar e restaurar as revisións agochadas dos administradores',
@@ -1340,6 +1396,8 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'right-editprotected' => 'Editar páxinas protexidas (que non teñan protección en serie)',
'right-editinterface' => 'Editar a interface de usuario',
'right-editusercssjs' => 'Editar os ficheiros CSS e JS doutros usuarios',
+'right-editusercss' => 'Editar os ficheiros CSS doutros usuarios',
+'right-edituserjs' => 'Editar os ficheiros JS doutros usuarios',
'right-rollback' => 'Reversión rápida da edición dun usuario dunha páxina particular',
'right-markbotedits' => 'Marcar as edicións desfeitas como edicións dun bot',
'right-noratelimit' => 'Non lle afectan os límites de frecuencia',
@@ -1356,6 +1414,8 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'right-siteadmin' => 'Fechar e abrir a base de datos',
'right-reset-passwords' => 'Restablecer os contrasinais doutros usuarios',
'right-override-export-depth' => 'Exportar páxinas incluíndo as páxinas ligadas ata unha profundidade de 5',
+'right-versiondetail' => 'Mostrar a información ampliada da versión do software',
+'right-sendemail' => 'Enviar correos electrónicos a outros usuarios',
# User rights log
'rightslog' => 'Rexistro de dereitos de usuario',
@@ -1405,8 +1465,17 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'recentchanges-legend' => 'Opcións dos cambios',
'recentchangestext' => 'Sigue, nesta páxina, as modificacións máis recentes no wiki.',
'recentchanges-feed-description' => 'Siga os cambios máis recentes deste wiki nesta fonte de novas.',
+'recentchanges-label-legend' => 'Lenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova páxina',
+'recentchanges-label-newpage' => 'Esta edición creou unha nova páxina',
+'recentchanges-legend-minor' => '$1 - edición pequena',
+'recentchanges-label-minor' => 'Esta é unha edición pequena',
+'recentchanges-legend-bot' => '$1 - edición feita por un bot',
+'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
+'recentchanges-legend-unpatrolled' => '$1 - edición non patrullada',
+'recentchanges-label-unpatrolled' => 'Esta edición aínda non foi comprobada',
'rcnote' => "Embaixo {{PLURAL:$1|amósase '''1''' cambio|amósanse os últimos '''$1''' cambios}} {{PLURAL:$2|no último día|nos últimos '''$2''' días}} ata as $5 do $4.",
-'rcnotefrom' => "Abaixo amósanse os cambios desde '''$2''' (móstranse ata '''$1''').",
+'rcnotefrom' => "A continuación amósanse os cambios desde as '''$4''' do '''$3''' (móstranse ata '''$1''').",
'rclistfrom' => 'Mostrar os cambios novos desde as $1',
'rcshowhideminor' => '$1 as edicións pequenas',
'rcshowhidebots' => '$1 os bots',
@@ -1431,6 +1500,8 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
# Recent changes linked
'recentchangeslinked' => 'Cambios relacionados',
+'recentchangeslinked-feed' => 'Cambios relacionados',
+'recentchangeslinked-toolbox' => 'Cambios relacionados',
'recentchangeslinked-title' => 'Cambios relacionados con "$1"',
'recentchangeslinked-noresult' => 'Non se produciron cambios nas páxinas vinculadas a esta durante o período de tempo seleccionado.',
'recentchangeslinked-summary' => "Esta é unha lista dos cambios que se realizaron recentemente nas páxinas vinculadas a esta (ou dos membros da categoría especificada).
@@ -1441,8 +1512,8 @@ As páxinas da súa [[Special:Watchlist|lista de vixilancia]] aparecen en '''neg
# Upload
'upload' => 'Cargar un ficheiro',
'uploadbtn' => 'Cargar o ficheiro',
-'reupload' => 'Volver cargar',
'reuploaddesc' => 'Cancelar a carga e volver ao formulario de carga',
+'upload-tryagain' => 'Enviar a descrición do ficheiro modificada',
'uploadnologin' => 'Non accedeu ao sistema',
'uploadnologintext' => 'Debe [[Special:UserLogin|acceder ao sistema]] para poder cargar ficheiros.',
'upload_directory_missing' => 'Falta o directorio de carga ($1) e non pode ser creado polo servidor da páxina web.',
@@ -1475,6 +1546,7 @@ Vexa a [[Special:NewFiles|galería de imaxes novas]] para unha visión máis xer
'illegalfilename' => 'O nome de ficheiro "$1" contén caracteres que non están permitidos nos títulos das páxinas.
Por favor, cambie o nome do ficheiro e intente cargalo de novo.',
'badfilename' => 'O nome desta imaxe cambiouse a "$1".',
+'filetype-mime-mismatch' => 'A extensión do ficheiro non coincide co tipo MIME.',
'filetype-badmime' => 'Non se permite enviar ficheiros de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Non se pode cargar este ficheiro porque o Internet Explorer detectaríao como "$1", o cal é un tipo de ficheiro non permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' é un tipo de ficheiro non desexado.
@@ -1497,7 +1569,6 @@ Para facer que o resumo apareza alí, necesitará editar a páxina manualmente.
* Nome do ficheiro que intenta cargar: '''<tt>[[:$1]]</tt>'''
* Nome de ficheiro existente: '''<tt>[[:$2]]</tt>'''
Por favor, escolla un nome diferente.",
-'fileexists-thumb' => "<center>'''Imaxe existente'''</center>",
'fileexists-thumbnail-yes' => "Semella que o ficheiro é unha imaxe de tamaño reducido ''(miniatura)''.
[[$1|thumb]]
Por favor, comprobe o ficheiro '''<tt>[[:$1]]</tt>'''.
@@ -1514,6 +1585,7 @@ Se aínda quere cargar o seu ficheiro, volva atrás e use outro nome.
'file-deleted-duplicate' => 'Un ficheiro idéntico a este ("[[$1]]") foi borrado previamente. Debería comprobar o historial de borrados do ficheiro antes de proceder a cargalo de novo.',
'successfulupload' => 'A carga realizouse correctamente',
'uploadwarning' => 'Advertencia ao cargar o ficheiro',
+'uploadwarning-text' => 'Por favor, modifique a descrición do ficheiro e inténteo de novo.',
'savefile' => 'Gardar o ficheiro',
'uploadedimage' => 'cargou "[[$1]]"',
'overwroteimage' => 'enviou unha nova versión de "[[$1]]"',
@@ -1521,11 +1593,14 @@ Se aínda quere cargar o seu ficheiro, volva atrás e use outro nome.
'uploaddisabledtext' => 'A carga de ficheiros está desactivada.',
'php-uploaddisabledtext' => 'As cargas de ficheiros PHP están desactivadas. Por favor, comprobe a característica file_uploads.',
'uploadscripted' => 'Este ficheiro contén HTML ou código (script code) que pode producir erros ao ser interpretado polo navegador.',
-'uploadcorrupt' => 'O ficheiro está corrompido ou ten unha extensión incorrecta. Por favor verifique o ficheiro e súbao de novo.',
'uploadvirus' => 'O ficheiro contén un virus! Detalles: $1',
+'upload-source' => 'Ficheiro de orixe',
'sourcefilename' => 'Nome do ficheiro a cargar:',
+'sourceurl' => 'URL de orixe:',
'destfilename' => 'Nome do ficheiro de destino:',
'upload-maxfilesize' => 'Tamaño máximo para o ficheiro: $1',
+'upload-description' => 'Descrición do ficheiro',
+'upload-options' => 'Opcións de carga',
'watchthisupload' => 'Vixiar este ficheiro',
'filewasdeleted' => 'Un ficheiro con ese nome foi cargado con anterioridade e a continuación borrado.
Debe comprobar o $1 antes de proceder a cargalo outra vez.',
@@ -1550,15 +1625,46 @@ MGP # Pentax
PICT # varias
#</pre> <!-- deixe esta liña exactamente como está -->',
-'upload-proto-error' => 'Protocolo erróneo',
-'upload-proto-error-text' => 'A carga remota require URLs que comecen por <code>http://</code> ou <code>ftp://</code>.',
-'upload-file-error' => 'Erro interno',
-'upload-file-error-text' => 'Produciuse un erro interno ao intentar crear un ficheiro temporal no servidor.
+'upload-proto-error' => 'Protocolo erróneo',
+'upload-proto-error-text' => 'A carga remota require URLs que comecen por <code>http://</code> ou <code>ftp://</code>.',
+'upload-file-error' => 'Erro interno',
+'upload-file-error-text' => 'Produciuse un erro interno ao intentar crear un ficheiro temporal no servidor.
Por favor, contacte cun [[Special:ListUsers/sysop|administrador]] do sistema.',
-'upload-misc-error' => 'Erro de carga descoñecido',
-'upload-misc-error-text' => 'Ocorreu un erro descoñecido durante a carga.
+'upload-misc-error' => 'Erro de carga descoñecido',
+'upload-misc-error-text' => 'Ocorreu un erro descoñecido durante a carga.
Por favor, comprobe que o enderezo URL é válido e está dispoñíbel e, despois, inténteo de novo.
Se o problema persiste contacte cun [[Special:ListUsers/sysop|administrador]] do sistema.',
+'upload-too-many-redirects' => 'O enderezo URL contiña moitas redireccións',
+'upload-unknown-size' => 'Tamaño descoñecido',
+'upload-http-error' => 'Produciuse un erro HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acceso rexeitado',
+'img-auth-nopathinfo' => 'Falta a PATH_INFO.
+O seu servidor non está configurado para pasar esta información.
+Pode ser que estea baseado en CGI e non puidese soportar img_auth.
+Olle http://www.mediawiki.org/wiki/Manual:Image_Authorization para obter máis información.',
+'img-auth-notindir' => 'A ruta solicitada non está no directorio de carga configurado.',
+'img-auth-badtitle' => 'Non é posible construír un título válido a partir de "$1".',
+'img-auth-nologinnWL' => 'Non accedeu ao sistema e "$1" non está na lista de branca.',
+'img-auth-nofile' => 'O ficheiro "$1" non existe.',
+'img-auth-isdir' => 'Está intentando acceder ao directorio "$1".
+Só se permite o acceso ao ficheiro.',
+'img-auth-streaming' => 'Secuenciando "$1".',
+'img-auth-public' => 'A función de img_auth.php é para ficheiros de saída desde un wiki privado.
+Este wiki está configurado como público.
+Para unha seguridade óptima, img_auth.php está desactivado.',
+'img-auth-noread' => 'O usuario non ten acceso á lectura de "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL non válido: $1',
+'http-invalid-scheme' => 'Os enderezos URL co esquema "$1" non están soportados',
+'http-request-error' => 'Erro descoñecido ao enviar a solicitude.',
+'http-read-error' => 'Erro de lectura HTTP.',
+'http-timed-out' => 'O pedido HTTP expirou.',
+'http-curl-error' => 'Ocorreu un erro ao acceder ao URL: $1',
+'http-host-unreachable' => 'Non se puido acceder ao URL.',
+'http-bad-status' => 'Houbo un problema durante a solicitude HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Non se logrou acceder a ese URL',
@@ -1569,6 +1675,7 @@ Por favor, comprobe que está activo, agarde un anaco e inténteo de novo.
Tamén pode reintentalo cando haxa menos actividade.',
'license' => 'Licenza:',
+'license-header' => 'Licenza',
'nolicense' => 'Ningunha (os ficheiros sen licenza serán eliminados)',
'license-nopreview' => '(A vista previa non está dispoñíbel)',
'upload_source_url' => ' (un URL válido e accesible publicamente)',
@@ -1589,6 +1696,7 @@ Premendo nunha cabeceira da columna cambia a ordenación.',
'listfiles_count' => 'Versións',
# File description page
+'file-anchor-link' => 'Ficheiro',
'filehist' => 'Historial do ficheiro',
'filehist-help' => 'Faga clic nunha data/hora para ver o ficheiro tal e como estaba nese momento.',
'filehist-deleteall' => 'borrar todo',
@@ -1597,12 +1705,13 @@ Premendo nunha cabeceira da columna cambia a ordenación.',
'filehist-current' => 'actual',
'filehist-datetime' => 'Data/Hora',
'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => 'Miniatura da versión ás $1',
+'filehist-thumbtext' => 'Miniatura da versión ás $3 do $2',
'filehist-nothumb' => 'Sen miniatura',
'filehist-user' => 'Usuario',
'filehist-dimensions' => 'Dimensións',
'filehist-filesize' => 'Tamaño do ficheiro',
'filehist-comment' => 'Comentario',
+'filehist-missing' => 'Falta o ficheiro',
'imagelinks' => 'Ligazóns do ficheiro',
'linkstoimage' => '{{PLURAL:$1|A seguinte páxina liga|As seguintes $1 páxinas ligan}} con esta imaxe:',
'linkstoimage-more' => 'Máis {{PLURAL:$1|dunha páxina liga|de $1 páxinas ligan}} con este ficheiro.
@@ -1612,15 +1721,16 @@ Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|máis ligazóns]] cara a este ficheiro.',
'redirectstofile' => '{{PLURAL:$1|O seguinte ficheiro redirixe|Os seguintes $1 ficheiros redirixen}} cara a este:',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte ficheiro é un duplicado|Os seguintes $1 ficheiros son duplicados}} destoutro ([[Special:FileDuplicateSearch/$2|máis detalles]]):',
-'sharedupload' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Por favor, vexa a $1 para máis información.',
-'shareduploadwiki-desc' => 'A continuación móstrase a descrición que alí hai na $1.',
-'shareduploadwiki-linktext' => 'páxina de descrición do ficheiro',
-'noimage' => 'Non existe ningún ficheiro con ese nome, pero pode $1.',
-'noimage-linktext' => 'cargar un',
+'sharedupload' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.',
+'sharedupload-desc-there' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
+Por favor, vexa a [$2 páxina de descrición do ficheiro] para obter máis información.',
+'sharedupload-desc-here' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
+A descrición da [$2 páxina de descrición do ficheiro] móstrase a continuación.',
+'filepage-nofile' => 'Non existe ningún ficheiro con este nome.',
+'filepage-nofile-link' => 'Non existe ningún ficheiro con este nome, pero pode [$1 cargalo].',
'uploadnewversion-linktext' => 'Cargar unha nova versión deste ficheiro',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'repositorio compartido', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'repositorio compartido',
# File reversion
'filerevert' => 'Desfacer $1',
@@ -1649,6 +1759,7 @@ Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
** Violación dos dereitos de autor
** Ficheiro duplicado',
'filedelete-edit-reasonlist' => 'Editar os motivos de borrado',
+'filedelete-maintenance' => 'Os borrados e restauracións de ficheiros están desactivados temporalmente durante o mantemento.',
# MIME search
'mimesearch' => 'Busca MIME',
@@ -1671,7 +1782,7 @@ Lembre verificar outras ligazóns cara aos modelos antes de borralos.',
# Random page
'randompage' => 'Páxina aleatoria',
-'randompage-nopages' => 'Non hai páxinas no espazo de nomes "$1".',
+'randompage-nopages' => 'Non hai páxinas {{PLURAL:$2|no seguinte espazo de nomes|nos seguintes espazos de nomes}}: $1.',
# Random redirect
'randomredirect' => 'Redirección aleatoria',
@@ -1683,6 +1794,7 @@ Lembre verificar outras ligazóns cara aos modelos antes de borralos.',
'statistics-header-edits' => 'Estatísticas das edicións',
'statistics-header-views' => 'Estatísticas das vistas',
'statistics-header-users' => 'Estatísticas dos usuarios',
+'statistics-header-hooks' => 'Outras estatísticas',
'statistics-articles' => 'Páxinas de contido',
'statistics-pages' => 'Páxinas',
'statistics-pages-desc' => 'Todas as páxinas do wiki; isto inclúe as páxinas de conversa, redireccións, etc.',
@@ -1712,8 +1824,8 @@ As entradas <s>riscadas</s> xa foron resoltas.',
'brokenredirects' => 'Redireccións rotas',
'brokenredirectstext' => 'As seguintes redireccións ligan cara a páxinas que non existen:',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(borrar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'borrar',
'withoutinterwiki' => 'Páxinas sen ligazóns interwiki',
'withoutinterwiki-summary' => 'As seguintes páxinas non ligan con ningunha versión noutra lingua.',
@@ -1820,16 +1932,17 @@ Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario
# Special:Categories
'categories' => 'Categorías',
-'categoriespagetext' => 'As seguintes categorías conteñen páxinas ou contidos multimedia.
+'categoriespagetext' => '{{PLURAL:$1|A seguinte categoría contén|As seguintes categorías conteñen}} páxinas ou contidos multimedia.
Aquí non se amosan as [[Special:UnusedCategories|categorías sen uso]].
-Véxanse tamén as [[Special:WantedCategories|categorías requiridas]].',
+Olle tamén as [[Special:WantedCategories|categorías requiridas]].',
'categoriesfrom' => 'Mostrar as categorías que comecen por:',
'special-categories-sort-count' => 'ordenar por número',
'special-categories-sort-abc' => 'ordenar alfabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribucións borradas do usuario',
-'deletedcontributions-title' => 'Contribucións borradas do usuario',
+'deletedcontributions' => 'Contribucións borradas do usuario',
+'deletedcontributions-title' => 'Contribucións borradas do usuario',
+'sp-deletedcontributions-contribs' => 'contribucións',
# Special:LinkSearch
'linksearch' => 'Ligazóns externas',
@@ -1845,6 +1958,16 @@ Protocolos soportados: <tt>$1</tt>',
'listusersfrom' => 'Mostrar os usuarios que comecen por:',
'listusers-submit' => 'Mostrar',
'listusers-noresult' => 'Non se atopou ningún usuario.',
+'listusers-blocked' => '(bloqueado)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuarios activos',
+'activeusers-intro' => 'Esta é unha lista cos usuarios que tiveron algún tipo de actividade {{PLURAL:$1|no último día|nos últimos $1 días}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|edición|edicións}} {{PLURAL:$3|no último día|nos últimos $3 días}}',
+'activeusers-from' => 'Mostrar os usuarios que comecen por:',
+'activeusers-hidebots' => 'Agochar os bots',
+'activeusers-hidesysops' => 'Agochar os administradores',
+'activeusers-noresult' => 'Non se atopou ningún usuario.',
# Special:Log/newusers
'newuserlogpage' => 'Rexistro de creación de usuarios',
@@ -1855,17 +1978,23 @@ Protocolos soportados: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Conta de usuario creada automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Dereitos dun usuario segundo o seu grupo',
-'listgrouprights-summary' => 'A seguinte lista mostra os grupos de usuario definidos neste wiki, cos seus dereitos de acceso asociados.
+'listgrouprights' => 'Dereitos dun usuario segundo o seu grupo',
+'listgrouprights-summary' => 'A seguinte lista mostra os grupos de usuario definidos neste wiki, cos seus dereitos de acceso asociados.
Se quere máis información acerca dos dereitos individuais, pode atopala [[{{MediaWiki:Listgrouprights-helppage}}|aquí]].',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Dereitos',
-'listgrouprights-helppage' => 'Help:Dereitos do grupo',
-'listgrouprights-members' => '(lista de membros)',
-'listgrouprights-addgroup' => 'Pode engadir {{PLURAL:$2|o grupo|os grupos}}: $1',
-'listgrouprights-removegroup' => 'Pode eliminar {{PLURAL:$2|o grupo|os grupos}}: $1',
-'listgrouprights-addgroup-all' => 'Pode engadir todos os grupos',
-'listgrouprights-removegroup-all' => 'Pode eliminar todos os grupos',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dereito concedido</span>
+* <span class="listgrouprights-revoked">Dereito revogado</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Dereitos',
+'listgrouprights-helppage' => 'Help:Dereitos do grupo',
+'listgrouprights-members' => '(lista de membros)',
+'listgrouprights-addgroup' => 'Pode engadir {{PLURAL:$2|o grupo|os grupos}}: $1',
+'listgrouprights-removegroup' => 'Pode eliminar {{PLURAL:$2|o grupo|os grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Pode engadir todos os grupos',
+'listgrouprights-removegroup-all' => 'Pode eliminar todos os grupos',
+'listgrouprights-addgroup-self' => 'Pode engadir {{PLURAL:$2|un grupo|grupos}} pola súa propia conta: $1',
+'listgrouprights-removegroup-self' => 'Pode eliminar {{PLURAL:$2|un grupo|grupos}} pola súa propia conta: $1',
+'listgrouprights-addgroup-self-all' => 'Pode engadir todos os grupos pola súa propia conta',
+'listgrouprights-removegroup-self-all' => 'Pode eliminar todos os grupos pola súa propia conta',
# E-mail user
'mailnologin' => 'Non existe enderezo para o envío',
@@ -1937,9 +2066,10 @@ Os cambios futuros nesta páxina e na súa páxina de conversa asociada serán l
'enotif_lastvisited' => 'Vexa $1 para comprobar todos os cambios desde a súa última visita.',
'enotif_lastdiff' => 'Vexa $1 para visualizar esta modificación.',
'enotif_anon_editor' => 'usuario anónimo $1',
-'enotif_body' => 'Estimado $WATCHINGUSERNAME,
+'enotif_body' => 'Estimado $WATCHINGUSERNAME:
+
-a páxina de {{SITENAME}} "$PAGETITLE" foi $CHANGEDORCREATED o $PAGEEDITDATE por $PAGEEDITOR, vexa $PAGETITLE_URL para comprobar a versión actual.
+A páxina de {{SITENAME}} "$PAGETITLE" foi $CHANGEDORCREATED o $PAGEEDITDATE por $PAGEEDITOR, olle $PAGETITLE_URL para comprobar a versión actual.
$NEWPAGE
@@ -1949,13 +2079,17 @@ Pode contactar co editor:
por correo electrónico: $PAGEEDITOR_EMAIL
no wiki: $PAGEEDITOR_WIKI
-Non se producirán novas notificacións cando haxa novos cambios ata que vostede visite a páxina. Pode borrar os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
+Non se producirán novas notificacións cando haxa novos cambios ata que vostede visite a páxina.
+Pode borrar os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
O sistema de aviso de {{SITENAME}}
--
Para cambiar a súa lista de vixilancia, visite
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Para borrar a páxina da súa lista de vixilancia, visite
+$UNWATCHURL
Axuda:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1969,10 +2103,11 @@ Axuda:
'exblank' => 'a páxina estaba baleira',
'delete-confirm' => 'Borrar "$1"',
'delete-legend' => 'Borrar',
-'historywarning' => 'Atención: a páxina que vai borrar ten un historial:',
+'historywarning' => "'''Atención:''' a páxina que está a piques de borrar ten un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisións}}:",
'confirmdeletetext' => 'Está a piques de borrar de xeito permanente unha páxina ou imaxe con todo o seu historial na base de datos.
Por favor, confirme que é realmente a súa intención, que comprende as consecuencias e que está obrando de acordo coas regras [[{{MediaWiki:Policy-url}}|da política e normas]].',
'actioncomplete' => 'A acción foi completada',
+'actionfailed' => 'Fallou a acción',
'deletedtext' => 'Borrouse a páxina "<nowiki>$1</nowiki>".
No $2 pode ver unha lista cos borrados máis recentes.',
'deletedarticle' => 'borrou "[[$1]]"',
@@ -1996,19 +2131,20 @@ Ao eliminala pódense provocar problemas de funcionamento nas operacións da bas
proceda con coidado.',
# Rollback
-'rollback' => 'Reverter as edicións',
-'rollback_short' => 'Reverter',
-'rollbacklink' => 'reverter',
-'rollbackfailed' => 'Houbo un fallo ao reverter as edicións',
-'cantrollback' => 'Non se pode desfacer a edición; o último colaborador é o único autor desta páxina.',
-'alreadyrolled' => 'Non se pode desfacer a edición en "[[:$1]]" feita por [[User:$2|$2]] ([[User talk:$2|conversa]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); alguén máis editou ou desfixo os cambios desta páxina.
+'rollback' => 'Reverter as edicións',
+'rollback_short' => 'Reverter',
+'rollbacklink' => 'reverter',
+'rollbackfailed' => 'Houbo un fallo ao reverter as edicións',
+'cantrollback' => 'Non se pode desfacer a edición; o último colaborador é o único autor desta páxina.',
+'alreadyrolled' => 'Non se pode desfacer a edición en "[[:$1]]" feita por [[User:$2|$2]] ([[User talk:$2|conversa]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); alguén máis editou ou desfixo os cambios desta páxina.
A última edición fíxoa [[User:$3|$3]] ([[User talk:$3|conversa]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).',
-'editcomment' => "O resumo de edición era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Desfixéronse as edicións de [[Special:Contributions/$2|$2]] ([[User talk:$2|conversa]]); cambiado á última versión feita por [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Desfixéronse as edicións de $1;
+'editcomment' => "O resumo de edición era: \"''\$1''\".",
+'revertpage' => 'Desfixéronse as edicións de [[Special:Contributions/$2|$2]] ([[User talk:$2|conversa]]); cambiado á última versión feita por [[User:$1|$1]]',
+'revertpage-nouser' => 'Desfixéronse as edicións de (nome eliminado); cambiado á última versión feita por [[User:$1|$1]]',
+'rollback-success' => 'Desfixéronse as edicións de $1;
volveuse á última edición, feita por $2.',
-'sessionfailure' => 'Parece que hai un problema co rexistro da súa sesión;
+'sessionfailure' => 'Parece que hai un problema co rexistro da súa sesión;
esta acción cancelouse como precaución fronte ao secuestro de sesións.
Prema no botón "atrás", volva cargar a páxina da que proviña e inténteo de novo.',
@@ -2027,7 +2163,7 @@ Vexa a [[Special:ProtectedPages|lista de páxinas protexidas]] se quere obter a
'protectexpiry' => 'Caducidade:',
'protect_expiry_invalid' => 'O tempo de duración da protección non e válido.',
'protect_expiry_old' => 'O momento de remate da protección corresponde ao pasado.',
-'protect-unchain' => 'Desbloquear os permisos de traslado',
+'protect-unchain-permissions' => 'Desbloquear as opcións de protección adicionais',
'protect-text' => "Aquí é onde pode ver e cambiar os niveis de protección da páxina chamada \"'''<nowiki>\$1</nowiki>'''\".",
'protect-locked-blocked' => "Non pode modificar os niveis de protección mentres exista un bloqueo. Velaquí a configuración actual da páxina '''$1''':",
'protect-locked-dblock' => "Os niveis de protección non se poden modificar debido a un bloqueo da base de datos activa.
@@ -2056,7 +2192,7 @@ Pode mudar o nivel de protección da páxina pero iso non afectará á protecci
** Guerra de edicións
** Páxina moi visitada',
'protect-edit-reasonlist' => 'Editar os motivos de protección',
-'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite',
'restriction-type' => 'Permiso:',
'restriction-level' => 'Nivel de protección:',
'minimum-size' => 'Tamaño mínimo',
@@ -2098,6 +2234,7 @@ O texto destas revisións eliminadas só está á disposición dos administrador
'undelete-nodiff' => 'Non se atopou ningunha revisión anterior.',
'undeletebtn' => 'Restaurar',
'undeletelink' => 'ver/restaurar',
+'undeleteviewlink' => 'ver',
'undeletereset' => 'Limpar',
'undeleteinvert' => 'Inverter a selección',
'undeletecomment' => 'Motivo:',
@@ -2135,19 +2272,23 @@ $1',
'contributions-title' => 'Contribucións de $1',
'mycontris' => 'As miñas contribucións',
'contribsub2' => 'De $1 ($2)',
-'nocontribs' => 'Non se deron atopado cambios con eses criterios.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Non se deron atopado cambios con eses criterios.',
'uctop' => '(última revisión)',
'month' => 'Desde o mes de (e anteriores):',
'year' => 'Desde o ano (e anteriores):',
-'sp-contributions-newbies' => 'Mostrar só as contribucións das contas de usuario novas',
-'sp-contributions-newbies-sub' => 'Contribucións dos usuarios novos',
-'sp-contributions-newbies-title' => 'Contribucións dos usuarios novos',
-'sp-contributions-blocklog' => 'rexistro de bloqueos',
-'sp-contributions-logs' => 'rexistros',
-'sp-contributions-search' => 'Busca de contribucións',
-'sp-contributions-username' => 'Enderezo IP ou nome de usuario:',
-'sp-contributions-submit' => 'Procurar',
+'sp-contributions-newbies' => 'Mostrar só as contribucións das contas de usuario novas',
+'sp-contributions-newbies-sub' => 'Contribucións dos usuarios novos',
+'sp-contributions-newbies-title' => 'Contribucións dos usuarios novos',
+'sp-contributions-blocklog' => 'rexistro de bloqueos',
+'sp-contributions-deleted' => 'contribucións borradas do usuario',
+'sp-contributions-logs' => 'rexistros',
+'sp-contributions-talk' => 'conversa',
+'sp-contributions-userrights' => 'xestión dos dereitos de usuario',
+'sp-contributions-blocked-notice' => 'Este usuario está bloqueado. Velaquí está a última entrada do rexistro de bloqueos, por se quere consultala:',
+'sp-contributions-search' => 'Busca de contribucións',
+'sp-contributions-username' => 'Enderezo IP ou nome de usuario:',
+'sp-contributions-submit' => 'Procurar',
# What links here
'whatlinkshere' => 'Páxinas que ligan con esta',
@@ -2170,6 +2311,7 @@ $1',
# Block/unblock
'blockip' => 'Bloquear este usuario',
+'blockip-title' => 'Bloquear un usuario',
'blockip-legend' => 'Bloquear un usuario',
'blockiptext' => 'Use o seguinte formulario para bloquear o acceso de escritura desde un enderezo IP ou para bloquear un usuario específico.
Isto debería facerse só para previr vandalismo, e de acordo coa [[{{MediaWiki:Policy-url}}|política e normas]] vixentes.
@@ -2193,7 +2335,7 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
'ipbenableautoblock' => 'Bloquear automaticamente o último enderezo IP utilizado por este usuario, e calquera outro enderezo desde o que intente editar',
'ipbsubmit' => 'Bloquear este usuario',
'ipbother' => 'Outro período de tempo:',
-'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite',
'ipbotheroption' => 'outra',
'ipbotherreason' => 'Outro motivo:',
'ipbhidename' => 'Agochar o nome de usuario nas edicións e listas',
@@ -2222,9 +2364,11 @@ Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] para
'ipblocklist-sh-tempblocks' => '$1 os bloqueos temporais',
'ipblocklist-sh-addressblocks' => '$1 os bloqueos únicos a enderezos IP',
'ipblocklist-submit' => 'Procurar',
+'ipblocklist-localblock' => 'Bloqueo local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
'blocklistline' => '$1, $2 bloqueou a "$3" ($4)',
'infiniteblock' => 'para sempre',
-'expiringblock' => 'remata $1',
+'expiringblock' => 'remata o $1 ás $2',
'anononlyblock' => 'só anón.',
'noautoblockblock' => 'autobloqueo desactivado',
'createaccountblock' => 'bloqueada a creación de contas',
@@ -2239,7 +2383,8 @@ Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] para
'autoblocker' => 'Foi autobloqueado porque "[[User:$1|$1]]" usou recentemente o seu mesmo enderezo IP.
O motivo do bloqueo de $1 é: "$2"',
'blocklogpage' => 'Rexistro de bloqueos',
-'blocklog-fulllog' => 'Rexistro de bloqueos totais',
+'blocklog-showlog' => 'Este usuario xa foi bloqueado con anterioridade. Velaquí está o rexistro de bloqueos por se quere consultalo:',
+'blocklog-showsuppresslog' => 'Este usuario xa foi bloqueado e agochado con anterioridade. Velaquí está o rexistro de supresións por se quere consultalo:',
'blocklogentry' => 'bloqueou a "[[$1]]" cun tempo de duración de $2 $3',
'reblock-logentry' => 'cambiou as configuracións do bloqueo de "[[$1]]" cunha caducidade de $2 $3',
'blocklogtext' => 'Este é o rexistro das accións de bloqueo e desbloqueo de usuarios.
@@ -2260,9 +2405,11 @@ Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] se qu
'ipb_already_blocked' => '"$1" xa está bloqueado',
'ipb-needreblock' => '== Xa está bloqueado ==
"$1" xa está bloqueado. Quere cambiar as configuracións?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
'ipb_cant_unblock' => 'Erro: Non se atopa o Block ID $1. Posiblemente xa foi desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O enderezo IP $1 non está bloqueado directamente e non se pode desbloquear. Porén, está bloqueado por estar no rango $2, que si se pode desbloquear.',
'ip_range_invalid' => 'Rango IP non válido.',
+'ip_range_toolarge' => 'Non están permitidos os rangos de bloqueo maiores que /$1.',
'blockme' => 'Bloquearme',
'proxyblocker' => 'Bloqueador de proxy',
'proxyblocker-disabled' => 'Esta función está desactivada.',
@@ -2273,6 +2420,7 @@ Por favor, contacte co seu fornecedor de acceso á Internet ou co seu soporte t
'sorbs_create_account_reason' => "O seu enderezo IP está rexistrado como un ''proxy'' aberto na lista DNSBL usada por {{SITENAME}}.
Polo tanto, non pode crear unha conta",
'cant-block-while-blocked' => 'Non pode bloquear outros usuarios mentres vostede estea bloqueado.',
+'cant-see-hidden-user' => 'O usuario que intenta bloquear xa foi bloqueado e agochado. Dado que non ten o dereito necesario para agochar usuarios, non pode ver ou editar o bloqueo do usuario.',
# Developer tools
'lockdb' => 'Fechar base de datos',
@@ -2316,6 +2464,7 @@ por favor, asegúrese de que entende as consecuencias disto antes de proseguir."
Nestes casos, terá que mover ou mesturar a páxina manualmente se o desexa.",
'movearticle' => 'Mover esta páxina:',
+'moveuserpage-warning' => "'''Aviso:''' está a piques de mover unha páxina de usuario. Por favor, teña en conta que só se trasladará a páxina e que o usuario '''non''' será renomeado.",
'movenologin' => 'Non accedeu ao sistema',
'movenologintext' => 'Debe ser un usuario rexistrado e [[Special:UserLogin|acceder ao sistema]] para mover unha páxina.',
'movenotallowed' => 'Non ten os permisos necesarios para mover páxinas.',
@@ -2326,7 +2475,7 @@ Nestes casos, terá que mover ou mesturar a páxina manualmente se o desexa.",
'move-watch' => 'Vixiar esta páxina',
'movepagebtn' => 'Mover a páxina',
'pagemovedsub' => 'O movemento foi un éxito',
-'movepage-moved' => '\'\'\'A páxina "$1" foi movida a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'A páxina "$1" foi movida a "$2"\'\'\'',
'movepage-moved-redirect' => 'Creouse unha redirección da primeira cara á segunda.',
'movepage-moved-noredirect' => 'A creación da redirección da primeira cara á segunda foi cancelada.',
'articleexists' => 'Xa existe unha páxina con ese nome, ou o nome que escolleu non é válido.
@@ -2368,6 +2517,14 @@ Quérea eliminar para facer sitio para mover?',
'imageinvalidfilename' => 'O nome da imaxe é inválido',
'fix-double-redirects' => 'Actualizar calquera redirección que apunte cara ao título orixinal',
'move-leave-redirect' => 'Deixar unha redirección detrás',
+'protectedpagemovewarning' => "'''Aviso:''' esta páxina foi protexida de xeito que só os usuarios con privilexios de administrador a poidan mover.
+Velaquí está a última entrada no rexistro, por se quere consultala:",
+'semiprotectedpagemovewarning' => "'''Nota:''' esta páxina foi protexida de xeito que só os usuarios rexistrados a poidan mover.
+Velaquí está a última entrada no rexistro, por se quere consultala:",
+'move-over-sharedrepo' => '== O ficheiro xa existe ==
+"[[:$1]]" xa existe nun repositorio compartido. Ao mover un ficheiro a este título sobrescribirase o ficheiro compartido.',
+'file-exists-sharedrepo' => 'O nome que elixiu para o ficheiro xa está en uso nun repositorio compartido.
+Por favor, escolla outro nome.',
# Export
'export' => 'Exportar páxinas',
@@ -2389,15 +2546,21 @@ No último caso, pode usar tamén unha ligazón, por exemplo [[{{#Special:Export
'export-pagelinks' => 'Engadir as páxinas ligadas a unha profundidade de:',
# Namespace 8 related
-'allmessages' => 'Todas as mensaxes do sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Texto predeterminado',
-'allmessagescurrent' => 'Texto actual',
-'allmessagestext' => 'Esta é unha lista de todas as mensaxes dispoñibles no espazo de nomes MediaWiki.
+'allmessages' => 'Todas as mensaxes do sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Texto predeterminado',
+'allmessagescurrent' => 'Texto actual',
+'allmessagestext' => 'Esta é unha lista de todas as mensaxes dispoñibles no espazo de nomes MediaWiki.
Por favor, visite a [http://www.mediawiki.org/wiki/Localisation localización MediaWiki] e [http://translatewiki.net translatewiki.net] se quere contribuír á localización xenérica de MediaWiki.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' non está dispoñíbel porque '''\$wgUseDatabaseMessages''' está desactivado.",
-'allmessagesfilter' => 'Filtrar polo nome da mensaxe:',
-'allmessagesmodified' => 'Amosar só as modificadas',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' non está dispoñíbel porque '''\$wgUseDatabaseMessages''' está desactivado.",
+'allmessages-filter-legend' => 'Filtrar',
+'allmessages-filter' => 'Filtrar por estado de personalización:',
+'allmessages-filter-unmodified' => 'Inalteradas',
+'allmessages-filter-all' => 'Todas',
+'allmessages-filter-modified' => 'Modificadas',
+'allmessages-prefix' => 'Filtrar por prefixo:',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Mostrar',
# Thumbnails
'thumbnail-more' => 'Ampliar',
@@ -2407,6 +2570,9 @@ Por favor, visite a [http://www.mediawiki.org/wiki/Localisation localización Me
'djvu_no_xml' => 'Foi imposíbel obter o XML para o ficheiro DjVu',
'thumbnail_invalid_params' => 'Parámetros de miniatura non válidos',
'thumbnail_dest_directory' => 'Foi imposíbel crear un directorio de destino',
+'thumbnail_image-type' => 'Tipo de imaxe non soportado',
+'thumbnail_gd-library' => 'Configuración da libraría GD incompleta: falta a función $1',
+'thumbnail_image-missing' => 'Parece que falta o ficheiro: $1',
# Special:Import
'import' => 'Importar páxinas',
@@ -2471,6 +2637,7 @@ Gárdeo no seu disco duro e cárgueo aquí.',
'tooltip-ca-viewsource' => 'Esta páxina está protexida. Pode ver o código fonte.',
'tooltip-ca-history' => 'Versións anteriores desta páxina',
'tooltip-ca-protect' => 'Protexer esta páxina',
+'tooltip-ca-unprotect' => 'Desprotexer esta páxina',
'tooltip-ca-delete' => 'Eliminar esta páxina',
'tooltip-ca-undelete' => 'Restaurar as edicións feitas nesta páxina antes de que fose eliminada',
'tooltip-ca-move' => 'Mover esta páxina',
@@ -2481,6 +2648,7 @@ Gárdeo no seu disco duro e cárgueo aquí.',
'tooltip-search-fulltext' => 'Procurar este texto nas páxinas',
'tooltip-p-logo' => 'Portada',
'tooltip-n-mainpage' => 'Visitar a Portada',
+'tooltip-n-mainpage-description' => 'Visitar a Portada',
'tooltip-n-portal' => 'Acerca do proxecto, o que vostede pode facer, onde atopar cousas',
'tooltip-n-currentevents' => 'Atopar documentación acerca de acontecementos de actualidade',
'tooltip-n-recentchanges' => 'A lista de modificacións recentes no wiki.',
@@ -2533,10 +2701,12 @@ Gárdeo no seu disco duro e cárgueo aquí.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
'siteuser' => '$1 de {{SITENAME}}',
-'lastmodifiedatby' => 'A última modificación desta páxina foi o $1 ás $2 por $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'o usuario anónimo $1 de {{SITENAME}}',
+'lastmodifiedatby' => 'A última modificación desta páxina foi o $1 ás $2 por $3.',
'othercontribs' => 'Baseado no traballo feito por $1.',
'others' => 'outros',
'siteusers' => '{{PLURAL:$2|$1}} de {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|o usuario anónimo|os usuarios anónimos}} $1 de {{SITENAME}}',
'creditspage' => 'Páxina de créditos',
'nocredits' => 'Non hai información de créditos dispoñíbel para esta páxina.',
@@ -2575,11 +2745,22 @@ Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está n
'mw_math_modern' => 'Recomendado para as versións recentes dos navegadores',
'mw_math_mathml' => 'MathML se é posible (experimental)',
+# Math errors
+'math_failure' => 'Fallou a conversión do código',
+'math_unknown_error' => 'erro descoñecido',
+'math_unknown_function' => 'función descoñecida',
+'math_lexing_error' => 'erro de léxico',
+'math_syntax_error' => 'erro de sintaxe',
+'math_image_error' => 'Fallou a conversión a PNG; comprobe que latex, dvips, gs e convert están ben instalados',
+'math_bad_tmpdir' => 'Non se puido crear ou escribir no directorio temporal de fórmulas',
+'math_bad_output' => 'Non se puido crear ou escribir no directorio de saída de fórmulas',
+'math_notexvc' => 'Falta o executable texvc. Por favor consulte math/README para configurar.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como revisada',
'markaspatrolledtext' => 'Marcar esta páxina como revisada',
'markedaspatrolled' => 'Marcar coma revisado',
-'markedaspatrolledtext' => 'A revisión seleccionada foi marcada como revisada.',
+'markedaspatrolledtext' => 'A revisión seleccionada de "[[:$1]]" foi marcada como revisada.',
'rcpatroldisabled' => 'A patrulla dos cambios recentes está desactivada',
'rcpatroldisabledtext' => 'A funcionalidade da patrulla dos cambios recentes está actualmente desactivada.',
'markedaspatrollederror' => 'Non se pode marcar coma revisada',
@@ -2609,13 +2790,10 @@ $1',
'previousdiff' => '← Edición máis vella',
'nextdiff' => 'Edición máis nova →',
-# Visual comparison
-'visual-comparison' => 'Comparación visual',
-
# Media information
'mediawarning' => "'''Aviso:''' este tipo de ficheiro pode conter código malicioso.
O seu sistema pode quedar comprometido se o executa.",
-'imagemaxsize' => 'Limitar as imaxes nas páxinas de descrición de ficheiros a:',
+'imagemaxsize' => "Límite de tamaño das imaxes:<br />''(nas páxinas de descrición de ficheiros)''",
'thumbsize' => 'Tamaño da miniatura:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|páxina|páxinas}}',
'file-info' => 'Tamaño do ficheiro: $1, tipo MIME: $2',
@@ -2624,6 +2802,8 @@ O seu sistema pode quedar comprometido se o executa.",
'svg-long-desc' => '(ficheiro SVG, nominalmente $1 × $2 píxeles, tamaño do ficheiro: $3)',
'show-big-image' => 'Imaxe na máxima resolución',
'show-big-image-thumb' => '<small>Tamaño desta presentación da imaxe: $1 × $2 píxeles</small>',
+'file-info-gif-looped' => 'en bucle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
# Special:NewFiles
'newimages' => 'Galería de imaxes novas',
@@ -2660,7 +2840,7 @@ Os demais agocharanse por omisión.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ancho',
@@ -2787,14 +2967,14 @@ Os demais agocharanse por omisión.
'exif-unknowndate' => 'Data descoñecida',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Volteada horizontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotada 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Volteada verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotada 90° CCW e volteada verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotada 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotada 90° CW e volteada verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotada 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Volteada horizontalmente',
+'exif-orientation-3' => 'Rotada 180°',
+'exif-orientation-4' => 'Volteada verticalmente',
+'exif-orientation-5' => 'Rotada 90° CCW e volteada verticalmente',
+'exif-orientation-6' => 'Rotada 90° CW',
+'exif-orientation-7' => 'Rotada 90° CW e volteada verticalmente',
+'exif-orientation-8' => 'Rotada 90° CCW',
'exif-planarconfiguration-1' => 'Formato de paquete de píxeles',
'exif-planarconfiguration-2' => 'Formato de planos',
@@ -2916,7 +3096,7 @@ Os demais agocharanse por omisión.
'exif-gpsmeasuremode-2' => 'Medida bidimensional',
'exif-gpsmeasuremode-3' => 'Medida tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilómetros por hora',
'exif-gpsspeed-m' => 'Millas por hora',
'exif-gpsspeed-n' => 'Nós',
@@ -2935,6 +3115,7 @@ Os demais agocharanse por omisión.
'watchlistall2' => 'todo',
'namespacesall' => 'todos',
'monthsall' => 'todos',
+'limitall' => 'todas',
# E-mail address confirmation
'confirmemail' => 'Confirmar o enderezo de correo electrónico',
@@ -2972,7 +3153,7 @@ para cancelar a confirmación do enderezo de correo electrónico:
$5
-Este código de confirmación caducará ás $4.',
+Este código de confirmación caducará o $6 ás $7.',
'confirmemail_invalidated' => 'A confirmación do enderezo de correo electrónico foi cancelada',
'invalidateemail' => 'Cancelar a confirmación do correo electrónico',
@@ -3065,7 +3246,7 @@ Tamén pode [[Special:Watchlist/edit|empregar o editor normal]].',
'duplicate-defaultsort' => 'Aviso: a clave de ordenación por defecto "$2" anula a clave de ordenación anterior por defecto "$1".',
# Special:Version
-'version' => 'Versión', # Not used as normal message but as header for the special page itself
+'version' => 'Versión',
'version-extensions' => 'Extensións instaladas',
'version-specialpages' => 'Páxinas especiais',
'version-parserhooks' => 'Asociadores analíticos',
@@ -3079,7 +3260,7 @@ Tamén pode [[Special:Watchlist/edit|empregar o editor normal]].',
'version-skin-extension-functions' => 'Funcións da extensión da aparencia',
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => 'Versión',
+'version-version' => '(Versión $1)',
'version-license' => 'Licenza',
'version-software' => 'Software instalado',
'version-software-product' => 'Produto',
@@ -3160,4 +3341,15 @@ Introduza o nome do ficheiro sen o prefixo "{{ns:file}}:".',
'dberr-outofdate' => 'Teña en conta que os índices de Google do noso contido poden non estar actualizados.',
'dberr-cachederror' => 'O seguinte contido é unha copia da memoria caché da páxina solicitada, polo que pode non estar actualizada.',
+# HTML forms
+'htmlform-invalid-input' => 'Hai algún problema con partes do texto que inseriu',
+'htmlform-select-badoption' => 'O valor que especificou non é unha opción válida.',
+'htmlform-int-invalid' => 'O valor que especificou non é un número enteiro.',
+'htmlform-float-invalid' => 'O valor que especificou non é un número.',
+'htmlform-int-toolow' => 'O valor que especificou está por baixo do mínimo de $1',
+'htmlform-int-toohigh' => 'O valor que especificou está por riba do máximo de $1',
+'htmlform-submit' => 'Enviar',
+'htmlform-reset' => 'Desfacer os cambios',
+'htmlform-selectorother-other' => 'Outra',
+
);
diff --git a/languages/messages/MessagesGlk.php b/languages/messages/MessagesGlk.php
index d17de118..99435678 100644
--- a/languages/messages/MessagesGlk.php
+++ b/languages/messages/MessagesGlk.php
@@ -14,13 +14,15 @@
$fallback = 'fa';
$messages = array(
-'qbfind' => 'یاتن',
-'qbedit' => 'دچین واچین',
'moredotdotdot' => 'ویشتر...',
'mypage' => 'می هنه‌شر',
'mytalk' => 'می گب',
'anontalk' => 'اَ آی.پیˇ گب',
+# Cologne Blue skin
+'qbfind' => 'یاتن',
+'qbedit' => 'دچین واچین',
+
'returnto' => 'واگرد به $1.',
'search' => 'واموج',
'searchbutton' => 'واموج',
@@ -68,6 +70,8 @@ $messages = array(
# Special:Categories
'categories' => 'رجؤن',
+'sp-contributions-talk' => 'گب',
+
# Block/unblock
'blocklink' => 'دَوَسته ببه',
diff --git a/languages/messages/MessagesGn.php b/languages/messages/MessagesGn.php
index 9b9342a6..b9c23e5d 100644
--- a/languages/messages/MessagesGn.php
+++ b/languages/messages/MessagesGn.php
@@ -14,13 +14,10 @@
$fallback = 'es';
$namespaceNames = array(
- # NS_MEDIA => 'Media',
NS_SPECIAL => 'Mba\'echĩchĩ',
- NS_MAIN => '',
NS_TALK => 'Myangekõi',
NS_USER => 'Puruhára',
NS_USER_TALK => 'Puruhára_myangekõi',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_myangekõi',
NS_FILE => 'Ta\'ãnga',
NS_FILE_TALK => 'Ta\'ãnga_myangekõi',
@@ -31,7 +28,7 @@ $namespaceNames = array(
NS_HELP => 'Pytyvõ',
NS_HELP_TALK => 'Pytyvõ_myangekõi',
NS_CATEGORY => 'Ñemohenda',
- NS_CATEGORY_TALK => 'Ñemohenda_myangekõi'
+ NS_CATEGORY_TALK => 'Ñemohenda_myangekõi',
);
$messages = array(
@@ -101,16 +98,18 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Ñemohenda|Ñemohendakuéra}}',
-'about' => 'Rehegua',
-'article' => 'Kuatiahai',
-'newwindow' => "(Ojepe'a peteĩ ovetã pyahu)",
-'cancel' => 'Mbotove',
+'about' => 'Rehegua',
+'article' => 'Kuatiahai',
+'newwindow' => "(Ojepe'a peteĩ ovetã pyahu)",
+'cancel' => 'Mbotove',
+'mypage' => 'Che kuatiarogue',
+'mytalk' => 'Che myangekõi',
+'navigation' => 'Kundaharã',
+
+# Cologne Blue skin
'qbfind' => 'Heka',
'qbedit' => 'Jehaijey',
'qbspecialpages' => 'Kuatiarogue hekochĩchĩva',
-'mypage' => 'Che kuatiarogue',
-'mytalk' => 'Che myangekõi',
-'navigation' => 'Kundaharã',
'tagline' => '{{SITENAME}}megua',
'help' => 'Pytyvõhára',
@@ -136,7 +135,7 @@ $messages = array(
'viewtalkpage' => 'Hecha myangekõi',
'otherlanguages' => "Ambue ñe'ẽ",
'redirectedfrom' => '(Oñembohapejeýva $1)',
-'lastmodifiedat' => 'Ko kuatiarogue oñemoambuejeýkuri: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ko kuatiarogue oñemoambuejeýkuri: $2, $1.',
'viewcount' => 'Esta página ha sido visitada $1 veces.',
'jumpto' => 'Kundaharãme jeho',
'jumptonavigation' => 'kundaharã',
@@ -187,7 +186,6 @@ $messages = array(
'ns-specialprotected' => 'Las páginas en el espacio de nombres Especial no se pueden editar.',
# Login and logout pages
-'loginpagetitle' => 'Terañemboguapy/Ke',
'yourname' => 'Hero',
'yourpassword' => 'Ne remiñemi',
'yourpasswordagain' => 'Repita ne remiñemi',
@@ -199,9 +197,6 @@ $messages = array(
'userlogout' => 'Sẽ',
'nologin' => "¿Ne'ĩrãpa remohenda nde réra? '''$1'''.",
'nologinlink' => 'Téra ñemohenda',
-'youremail' => "Ñe'ẽveve",
-'yourlanguage' => "Ñe'ẽ:",
-'email' => 'Pareha eleytróniko',
'loginsuccesstitle' => 'Remoñepyrũ hekopete ne rembiapo',
'nosuchusershort' => 'No hay un usuario con el nombre "$1". Compruebe que lo ha escrito correctamente.',
'mailmypassword' => "Embou chéve ñe'ẽveve rupive peteĩ temiñemĩ pyahu",
@@ -246,7 +241,6 @@ Aipórõ, eñeha'ãna emboja'o ne rembiapo, vore michĩvévape.'''",
# History pages
'cur' => "ko'ag̃agua",
'last' => 'ipaha',
-'deletedrev' => '[oñembogue]',
'historysize' => '($1 bytes)',
# Revision deletion
@@ -262,9 +256,8 @@ Aipórõ, eñeha'ãna emboja'o ne rembiapo, vore michĩvévape.'''",
# Search results
'searchresults' => 'Ojejuhúva jeheka',
'searchsubtitle' => "Nde reporandúkuri: '''[[:$1]]-re'''",
-'noexactmatch' => "'''Ndaipóri kuatiarogue hérava: \"\$1\".''' Ikatu ndetevoi [[:\$1|rehai]].",
-'prevn' => '$1 mboyvegua',
-'viewprevnext' => 'Hecha ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} mboyvegua',
+'viewprevnext' => 'Hecha ($1 {{int:pipe-separator}} $2) ($3).',
'showingresults' => "Abajo se muestran hasta '''$1''' resultados empezando por el nº '''$2'''.",
'showingresultsnum' => "Abajo se muestran los '''$3''' resultados empezando por el nº '''$2'''.",
'powersearch' => 'Jeheka',
@@ -274,6 +267,9 @@ Aipórõ, eñeha'ãna emboja'o ne rembiapo, vore michĩvévape.'''",
'mypreferences' => 'Che mbohoryha',
'prefs-rc' => 'Oñemoambue pyahúva',
'searchresultshead' => 'Jeheka',
+'youremail' => "Ñe'ẽveve",
+'yourlanguage' => "Ñe'ẽ:",
+'email' => 'Pareha eleytróniko',
# User rights
'userrights-lookup-user' => 'Configurar grupos de usuarios',
@@ -319,6 +315,7 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
'listfiles_user' => 'Puruhára',
# File description page
+'file-anchor-link' => 'Ñongatupy',
'filehist-revert' => 'embojevy',
'filehist-current' => "ko'ag̃agua",
'filehist-datetime' => 'Ára/Aravo',
@@ -357,8 +354,8 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
'doubleredirects' => "Ñembohapejey jo'apyre",
'brokenredirects' => "Ñembohapejey hekopegua'ỹva",
-'brokenredirects-edit' => '(jehaijey)',
-'brokenredirects-delete' => "(mboje'o)",
+'brokenredirects-edit' => 'jehaijey',
+'brokenredirects-delete' => "mboje'o",
'withoutinterwiki' => 'Kuatiarogue ndorekóiva interwiki',
@@ -544,7 +541,7 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
'watchlistedit-raw-removed' => '$1 páginas han sido borradas:',
# Special:Version
-'version' => "Mba'ereko", # Not used as normal message but as header for the special page itself
+'version' => "Mba'ereko",
# Special:FilePath
'filepath' => 'Ruta de archivo',
diff --git a/languages/messages/MessagesGot.php b/languages/messages/MessagesGot.php
index 44fa3366..5e7b9db2 100644
--- a/languages/messages/MessagesGot.php
+++ b/languages/messages/MessagesGot.php
@@ -72,21 +72,20 @@ $messages = array(
'subcategories' => 'Dalaþkunjos',
'category-media-header' => 'Medja inn kunja "$1"',
-'about' => 'Iubair',
-'article' => 'saþssiedo',
-'newwindow' => '(andhuljiþ inn niuja áugadaúro)',
-'cancel' => 'Halts',
+'about' => 'Iubair',
+'article' => 'saþssiedo',
+'newwindow' => '(andhuljiþ inn niuja áugadaúro)',
+'cancel' => 'Halts',
+'moredotdotdot' => 'Máis...',
+'mypage' => '𐌼𐌴𐌹𐌽 𐍃𐌴𐌹𐌳𐍉',
+'mytalk' => '𐌼𐌴𐌹𐌽𐌰 𐌼𐌰𐌸𐌻𐌴𐌹',
+'and' => '&#32;jah',
+
+# Cologne Blue skin
'qbfind' => 'Sokeiþ',
'qbedit' => 'Máidjan',
'qbmyoptions' => 'Meina seidos',
'qbspecialpages' => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐍃',
-'moredotdotdot' => 'Máis...',
-'mypage' => '𐌼𐌴𐌹𐌽 𐍃𐌴𐌹𐌳𐍉',
-'mytalk' => '𐌼𐌴𐌹𐌽𐌰 𐌼𐌰𐌸𐌻𐌴𐌹',
-'and' => '&#32;jah',
-
-# Metadata in edit box
-'metadata_help' => 'Ufardata:',
'errorpagetitle' => 'Faírina dwalis',
'returnto' => 'Gawandjan at $1.',
@@ -220,7 +219,7 @@ $messages = array(
# History pages
'currentrev' => 'Nu máideins',
'revisionasof' => 'Gamelido us $1',
-'revision-info' => 'Máideins fram $1 bi $2', # Additionally available: $3: revision id
+'revision-info' => 'Máideins fram $1 bi $2',
'previousrevision' => '←Áiris Máideins',
'nextrevision' => 'Iftuma máideins→',
'currentrevisionlink' => 'Numáideins',
@@ -233,7 +232,7 @@ $messages = array(
'histlast' => 'Spedumists',
# Revision feed
-'history-feed-item-nocomment' => '$1 at $2', # user at time
+'history-feed-item-nocomment' => '$1 at $2',
# Diffs
'history-title' => 'Árismáideins af "$1"',
@@ -241,16 +240,16 @@ $messages = array(
'editundo' => 'niuskapjan',
# Search results
-'prevn' => 'aftuma $1',
-'nextn' => 'iftuma $1',
-'viewprevnext' => 'Siuneis ($1) ($2) ($3)',
+'prevn' => 'aftuma {{PLURAL:$1|$1}}',
+'nextn' => 'iftuma {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Siuneis ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Hilpa:Háubidaseido',
'powersearch' => 'Sokeiþ',
# Preferences page
'preferences' => 'Meinos brukjamaideineis',
'mypreferences' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰',
-'skin' => 'Seidofill',
+'prefs-skin' => 'Seidofill',
'skin-preview' => 'Faúrsaiƕa',
'saveprefs' => 'Melja',
'searchresultshead' => 'Sokeiþ',
@@ -278,7 +277,9 @@ $messages = array(
'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Máideinlieks',
+'recentchangeslinked' => 'Máideinlieks',
+'recentchangeslinked-feed' => 'Máideinlieks',
+'recentchangeslinked-toolbox' => 'Máideinlieks',
# Upload
'upload' => '𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌹𐌸 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
@@ -292,6 +293,7 @@ $messages = array(
'listfiles' => 'Feilans tala',
# File description page
+'file-anchor-link' => 'Feilans',
'filehist' => 'Feilans áiris',
'filehist-current' => 'nu',
'filehist-datetime' => 'Ƕeila',
@@ -316,8 +318,8 @@ $messages = array(
# Statistics
'statistics' => 'Seidostatistik',
-'brokenredirects-edit' => '(máidjan)',
-'brokenredirects-delete' => '(taíran)',
+'brokenredirects-edit' => 'máidjan',
+'brokenredirects-delete' => 'taíran',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|báit|báita}}',
@@ -385,7 +387,6 @@ $messages = array(
# Protect
'protectlogpage' => 'Log af Baírgjan',
'prot_1movedto2' => '[[$1]] skiubiþ du [[$2]]',
-'protect-unchain' => 'Ungalukan sa skiubanfreihals',
'protect-level-sysop' => 'Seidofaþs áinaha',
'protect-expiring' => 'bláuþiþ $1 (UTC)',
'restriction-type' => 'Freihals:',
@@ -413,6 +414,7 @@ $messages = array(
'sp-contributions-newbies-sub' => 'Faúr niujis niutandis',
'sp-contributions-blocklog' => 'Logboka af afdraúsjan',
+'sp-contributions-talk' => 'Maþleiseido',
# What links here
'whatlinkshere' => '𐍈𐌰𐍂𐌾𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐌰 𐌷𐌻𐌰𐌲𐌺𐌾𐌰𐌽𐌳 𐌷𐌹𐌳𐍂𐌴',
diff --git a/languages/messages/MessagesGrc.php b/languages/messages/MessagesGrc.php
index 8c8db7f8..6dc4abcb 100644
--- a/languages/messages/MessagesGrc.php
+++ b/languages/messages/MessagesGrc.php
@@ -64,6 +64,7 @@ $messages = array(
'tog-enotifminoredits' => 'Ἄγγειλόν μοι ἐπἴσης τὰς ἥττονας ἀλλαγὰς δέλτων',
'tog-enotifrevealaddr' => 'Ἀποκαλύπτειν τὴν ταχυδρομικὴν μου διεύθυνσιν ἐν τῇ εἰδοποιητηρίᾳ ἀλληλογραφίᾳ',
'tog-shownumberswatching' => 'Δεικνύναι τὸν ἀριθμὸν τῶν παρακολουθούντων χρωμένων',
+'tog-oldsig' => 'Προθεώρησις τῆς ὑπαρχούσης ὑπογραφῆς:',
'tog-fancysig' => 'Ἀκατέργασται ὑπογραφαί ἐν εἴδει βικι-κειμένου (ἄνευ αὐτομάτου συνδέσμου)',
'tog-externaleditor' => 'Χρῆσθαι ἐξωτέρῳ προγράμματι ἐπεξεργασίας κειμένων κατὰ προεπιλογήν (πρὸς εἰδικοὺς μόνον· ἀπαραίτητοι εἰσὶν εἰδικαὶ ῥυθμίσεις τινὲς ἐν τῇ σῇ ὑπολογιστικῇ μηχανῇ)',
'tog-externaldiff' => 'Χρῆσθαι ἐξωτέρῳ λογισμικῷ ἀντιπαραβολῆς κατὰ προεπιλογὴν (πρὸς εἰδικοὺς μόνον· ἀπαραίτητοι εἰσὶν εἰδικαὶ ῥυθμίσεις τινες ἐν τῇ σῇ ὑπολογιστικῇ μηχανῇ)',
@@ -85,6 +86,13 @@ $messages = array(
'underline-never' => 'Οὔποτε',
'underline-default' => 'Τοῦ πλοηγητηρίου τὸ προκαθωρισμένον',
+# Font style option in Special:Preferences
+'editfont-style' => 'Τύπος γραμματοσειρᾶς τῆς ζώνης μεταγραφῆς:',
+'editfont-default' => 'Τὸ προκαθωρισμένον ὑπὸ τοῦ πλοηγητηρίου',
+'editfont-monospace' => 'Γραμματοσειρὰ περιέχουσα χαρακτήρας σταθεροῦ πλάτους',
+'editfont-sansserif' => 'Γραμματοσειρὰ Γοτθικοῦ τύπου',
+'editfont-serif' => 'Γραμματοσειρὰ Ῥωμαϊκοῦ τύπου',
+
# Dates
'sunday' => 'Κυριακή',
'monday' => 'Δευτέρα',
@@ -144,7 +152,7 @@ $messages = array(
'category-media-header' => 'Μέσα ἐν κατηγορίᾳ "$1"',
'category-empty' => "''Αὕτη ἡ κατηγορία οὐ περιλαμβάνει δέλτους τινὰς τῷ παρόντι.''",
'hidden-categories' => '{{PLURAL:$1|Κεκρυμμένη Κατηγορία|Κεκρυμμέναι Κατηγορίαι}}',
-'hidden-category-category' => 'Κεκρυμμέναι κατηγορίαι', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Κεκρυμμέναι κατηγορίαι',
'category-subcat-count' => '{{PLURAL:$2|Ἥδε ἡ κατηγορία περιέχει μόνον τὴν ἑξῆς ὑποκατηγορίαν.|Ἥδε ἡ κατηγορία περιέχει {{PLURAL:$1|τὴν ἑξῆς|τὰς ἑξῆς}} {{PLURAL:$1|ὑποκατηγορίαν|$1 ὑποκατηγορίας}}, ἐκ συνόλου $2.}}',
'category-subcat-count-limited' => 'Ἥδε ἡ κατηγορία περιέχει {{PLURAL:$1|τὴν ἑξῆς|τὰς ἑξῆς}} {{PLURAL:$1|ὑποκατηγορίαν|$1 ὑποκατηγορίας}}.',
'category-article-count' => '{{PLURAL:$2|Ἥδε ἡ κατηγορία περιέχει μόνον τὴν ἑξῆς δέλτον.|Αἱ ἑξῆς {{PLURAL:$1|δέλτος ἐστὶν|$1 δέλτοι εἰσὶν}} ἐν τῇδε τῇ κατηγορίᾳ, ἐκ συνόλου $2.}}',
@@ -152,6 +160,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ἥδε ἡ κατηγορία περίεχει μόνον τὸ ἑξῆς ἀρχεῖον.|Τὸ/τὰ ἑξῆς {{PLURAL:$1|ἀρχεῖον ἐστὶν|$1 ἀρχεῖα εἰσὶν}} ἐν τῇδε τῇ κατηγορίᾳ, ἐκ συνόλου $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Τὸ|Τὰ}} ἑξῆς {{PLURAL:$1|ἀρχεῖον εἰσὶν|$1 ἀρχεῖα εἰσὶν}} ἐν τῇ τρεχούσῃ κατηγορίᾳ.',
'listingcontinuesabbrev' => 'συνεχίζεται',
+'index-category' => 'Δέλτοι μετὰ δεικτῶν',
+'noindex-category' => 'Δέλτοι ἄνευ δεικτῶν',
'mainpagetext' => "'''Ἡ ἐγκατάστασις τῆς MediaWiki ἦν ἐπιτυχής'''",
'mainpagedocfooter' => 'Βουλευθήσεσθε τὰς [http://meta.wikimedia.org/wiki/Help:Contents βουλὰς τοῖς Χρωμένοις] ἵνα πληροφορηθῇτε ἐπὶ τοῦ βίκι-λογισμικοῦ.
@@ -161,10 +171,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: τὰ πολλάκις αἰτηθέντα]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Διαλογή διαλέξεων ἐπὶ τῶν διανομῶν τῆς MediaWiki]',
-'about' => 'Περὶ',
-'article' => 'Ἡ ἐγγραφή',
-'newwindow' => '(ἀνοίξεται ἐν νέᾳ θυρίδι)',
-'cancel' => 'Ἀκυροῦν',
+'about' => 'Περὶ',
+'article' => 'Ἡ ἐγγραφή',
+'newwindow' => '(ἀνοίξεται ἐν νέᾳ θυρίδι)',
+'cancel' => 'Ἀκυροῦν',
+'moredotdotdot' => 'πλέον...',
+'mypage' => 'Δέλτος μου',
+'mytalk' => 'Ἡ διάλεξίς μου',
+'anontalk' => 'Διάλεξις περὶ τοῦδε τοῦ IP',
+'navigation' => 'Πλοήγησις',
+'and' => '&#32;καὶ',
+
+# Cologne Blue skin
'qbfind' => 'Εὑρίσκειν',
'qbbrowse' => 'Νέμου',
'qbedit' => 'Μεταγράφειν',
@@ -172,15 +190,35 @@ $messages = array(
'qbpageinfo' => 'Συγκείμενον',
'qbmyoptions' => 'Δέλτοι μου',
'qbspecialpages' => 'Εἰδικαὶ δέλτοι',
-'moredotdotdot' => 'πλέον...',
-'mypage' => 'Δέλτος μου',
-'mytalk' => 'Ἡ διάλεξίς μου',
-'anontalk' => 'Διάλεξις περὶ τοῦδε τοῦ IP',
-'navigation' => 'Πλοήγησις',
-'and' => '&#32;καὶ',
-
-# Metadata in edit box
-'metadata_help' => 'Μεταδεδομένα:',
+'faq' => 'Τὰ πολλάκις αἰτηθέντα',
+'faqpage' => 'Project:Πολλάκις αἰτηθέντα',
+
+# Vector skin
+'vector-action-addsection' => 'Θέμα προστιθέναι',
+'vector-action-delete' => 'Σβεννύναι',
+'vector-action-move' => 'Κινεῖν',
+'vector-action-protect' => 'Φυλάττειν',
+'vector-action-undelete' => 'Ἀποκαθιστάναι',
+'vector-action-unprotect' => 'Μὴ φυλάττειν',
+'vector-namespace-category' => 'Κατηγορία',
+'vector-namespace-help' => 'Δέλτος βοηθείας',
+'vector-namespace-image' => 'Ἀρχεῖον',
+'vector-namespace-main' => 'Δέλτος',
+'vector-namespace-media' => 'Δέλτος μέσων',
+'vector-namespace-mediawiki' => 'Ἀγγελία',
+'vector-namespace-project' => 'Δέλτος ἐγχειρήματος',
+'vector-namespace-special' => 'Εἰδικὴ δέλτος',
+'vector-namespace-talk' => 'Διάλεξις',
+'vector-namespace-template' => 'Πρότυπον',
+'vector-namespace-user' => 'Δέλτος χρωμένου',
+'vector-view-create' => 'Ποιεῖν',
+'vector-view-edit' => 'Μεταγράφειν',
+'vector-view-history' => 'Ἱστορίαν ὁρᾶν',
+'vector-view-view' => 'Ἀναγνῶναι',
+'vector-view-viewsource' => 'Ὁρᾶν τὴν πηγήν',
+'actions' => 'Δράσεις',
+'namespaces' => 'Ὀνοματεῖα',
+'variants' => 'Παραλλαγαί',
'errorpagetitle' => 'Σφάλμα',
'returnto' => 'Ἐπανιέναι εἰς $1.',
@@ -230,18 +268,22 @@ $messages = array(
'otherlanguages' => 'Ἀλλογλωσσιστί',
'redirectedfrom' => '(Ἀποσταλτὸν ἀπὸ $1)',
'redirectpagesub' => 'Ἐπανάγειν δέλτον',
-'lastmodifiedat' => 'Ἥδε ἡ δέλτος ὕστατον μετεβλήθη $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ἥδε ἡ δέλτος ὕστατον μετεβλήθη $2, $1.',
'viewcount' => 'Ἥδε ἡ δέλτος προσεπελάσθη {{PLURAL:$1|ἅπαξ|$1-(άκ)ις}}.',
'protectedpage' => 'Πεφυλαγμένη δέλτος',
'jumpto' => 'Ἅλμα πρὸς:',
'jumptonavigation' => 'περιήγησις',
'jumptosearch' => 'ἐρευνᾶν',
+'view-pool-error' => 'Αἱ ἐξυπηρετητικαὶ μηχαναὶ νῦν ὑπερπεφορτισμέναι εἰσίν.
+Πέρα τοῦ δέοντος πολλοὶ χρώμενοι πειρῶνται προσπελάσειν τῇδε δέλτῳ.
+Ἀνάμεινον πρὸ τοῦ πεπειρακέναι προσπελάσειν πάλιν τῇδε δέλτῳ.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Περὶ {{SITENAME}}',
'aboutpage' => 'Project:Περὶ',
'copyright' => 'Ἡ διάθεσις τοῦδε περιεχομένου ἐστιν ὑπὸ $1.',
-'copyrightpagename' => '{{SITENAME}} πνευματικὰ δικαιώματα',
'copyrightpage' => '{{ns:project}}:Πνευματικὰ Δικαιώματα',
'currentevents' => 'Τὰ γιγνόμενα',
'currentevents-url' => 'Project:Τὰ γιγνόμενα',
@@ -249,8 +291,6 @@ $messages = array(
'disclaimerpage' => 'Project:Γενικὴ ἀποποίησις',
'edithelp' => 'Βοήθεια περὶ τοῦ μεταγράφειν',
'edithelppage' => 'Help:Βοήθεια περὶ τοῦ μεταγράφειν',
-'faq' => 'Τὰ πολλάκις αἰτηθέντα',
-'faqpage' => 'Project:Πολλάκις αἰτηθέντα',
'helppage' => 'Help:Περιεχόμενα',
'mainpage' => 'Κυρία Δέλτος',
'mainpage-description' => 'Κυρία Δέλτος',
@@ -331,10 +371,6 @@ $messages = array(
"$1"
ὑπὸ τῆς συναρτήσεως "$2".
Ἡ βάσις δεδομένων ἐπέστρεψεν σφάλμα "$3: $4"',
-'noconnect' => 'Τὸ ϝίκι ἀντιμετωπεῖ τεχνικὰς δυσχερείας καὶ οὐ δύναται ἐπιμειγνύναι τῇ ἐξυπηρετικῇ μηχανῇ τῆς βάσεως δεδομένων.<br />
-$1',
-'nodb' => 'Ἀδύνατον τὸ ἐπιλέγειν βάσιν δεδομένων $1',
-'cachederror' => 'Τὸ ἀκόλουθον ἐστὶ λανθάνον ἀντίγραφόν τι τῆς ζητουμένης δέλτου καὶ ἐνδεχομένως οὐκ ἐστὶ ἐνήμερον.',
'laggedslavemode' => 'Προσοχή: Ἡ δέλτος ἐνδέχεται οὐ περιέχειν προσφάτους μεταβολάς.',
'readonly' => 'Βάσις δεδομένων ἀποκεκλεισμένη',
'enterlockreason' => 'Λέγε διὰ τὶ τὸ ἀποκλῄειν τε καὶ ὅτε τοῦτο ἀρθήσεται',
@@ -349,6 +385,7 @@ $1',
'readonly_lag' => 'Ἡ βάσις δεδομένων πέφρακται αὐτομάτως ἐνόσω αἱ ἐπὶ μέρους ἐξυπηρετητικαὶ μηχαναὶ τῶν ἀντιγράφων τῆς βάσεως δεδομένων καλύψωσιν τὴν διαφορὰν μεταξὺ σφῶν καὶ τῆς κεντρικῆς ἐξυπηρετητικῆς μηχανῆς τοῦ πρωτοτύπου τῆς βάσεως',
'internalerror' => 'Ἐσώτερον σφάλμα',
'internalerror_info' => 'Ἐσώτερον σφάλμα: $1',
+'fileappenderror' => 'Οὐκ ἦτο δυνατὴ ἡ προσάρτησις τοῦ "$1" εἰς τὸ "$2".',
'filecopyerror' => 'Οὐκ ἦν δυνατὴ ἡ ἀντιγραφὴ τοῦ ἀρχείου "$1" εἰς τὸ "$2".',
'filerenameerror' => 'Οὐκ ἦν δυνατὴ ἡ μετωνομασία τοῦ ἀρχείου "$1" ὡς "$2".',
'filedeleteerror' => 'Οὐκ ἦν δυνατὴ ἡ διαγραφὴ τοῦ ἀρχείου "$1".',
@@ -358,8 +395,8 @@ $1',
'unexpected' => 'Ἀπροσδόκητος τιμή: "$1"="$2".',
'formerror' => 'Σφάλμα: μὴ δυναμένη ἡ ὑποβολὴ τοῦ τύπου ἐστίν',
'badarticleerror' => 'Ἡ πρᾶξις μὴ ἐκτελέσιμος ἦν ἐν τῇδε δέλτῳ.',
-'cannotdelete' => "Οὐκ ἔξεστι σβεννύναι τήνδε τὴν δέλτον/τόδε τὸ ἀρχεῖον.
-Ἴσως τάχ'ἂν τόδε ἤδη διαγεγραμμένον εἴη.",
+'cannotdelete' => 'Οὐκ ἔξεστι σβεννύναι τήνδε τὴν δέλτον ἢ τόδε τὸ ἀρχεῖον "$1".
+Ἴσως τάχ\'ἂν τόδε ἤδη διαγεγραμμένον εἴη.',
'badtitle' => 'Κακὸν τὸ ἐπώνυμον',
'badtitletext' => 'Ἡ ἐπιγραφὴ τῆς ᾐτουμένης δέλτου ἐστὶν ἄκυρος, κενή, ἢ πρόκειται περὶ ἐσφαλμένως συνδεδεμένης ἐπιγραφῆς μεταξὺ διαφόρων βίκι· εἰκότως περιέχει χαρακτῆρας μὴ χρηστέους ἐν ἐπιγραφαῖς.',
'perfcached' => 'Τὸ ἀκόλουθα δεδομένα εἰσὶ λανθάνοντα καὶ ἐνδεχομένως οὐκ εἰσὶ ἐνήμερα.',
@@ -390,7 +427,6 @@ $2',
'virus-unknownscanner' => 'ἄγνωτος ἀντιιός:',
# Login and logout pages
-'logouttitle' => 'Ἀποσυνδεῖσθαι χρωμένου',
'logouttext' => "'''Νῦν γὰρ ἀποσυνδεδεμένος εἰ.'''
Ἔξεστί σοι χρῆσθαι τῷ {{SITENAME}} ἀνωνύμως, ἢ ἔξεστί σοι [[Special:UserLogin|συνδεῖσθαι πάλιν]] ὡς ὁ αὐτὸς ἢ ὡς ἄλλος χρώμενος.
@@ -398,7 +434,6 @@ $2',
'welcomecreation' => '== Ὡς εὖ παρέστης, $1! ==
Λογισμός σὸς πεποίηται. Ἔχε μνήμην μεταβάλλειν τὰς τοῦ [[Special:Preferences|{{SITENAME}} αἱρέσεις σου]].',
-'loginpagetitle' => 'Συνδεῖσθαι χρωμένου',
'yourname' => 'Ὄνομα χρωμένου:',
'yourpassword' => 'Σῆμα:',
'yourpasswordagain' => 'Ἀνατυπῶσαι σύνθημα:',
@@ -421,25 +456,8 @@ $2',
'badretype' => 'Τὰ εἰσηγμένα ὑπἐσοῦ συνθήματα οὐχ ἁρμόττουσιν.',
'userexists' => 'Τὸ εἰσηγμένον ὄνομα ἤδη κεχρησμένον ἐστίν.
Ἐπίλεξον ὄνομα διάφορόν τι.',
-'youremail' => 'Ἠλεκτρονικαὶ ἐπιστολαί:',
-'username' => 'Ὄνομα χρωμένου:',
-'uid' => 'Ταυτότης χρωμένου:',
-'prefs-memberingroups' => 'Μέλος {{PLURAL:$1|ομάδoς|ομάδων}}:',
-'yourrealname' => 'Τὸ ἀληθὲς ὄνομα:',
-'yourlanguage' => 'Γλῶττά σου:',
-'yournick' => 'Προσωνυμία:',
-'badsig' => 'Ἄκυρος πρωτογενὴς ὑπογραφή. Ἔλεγξον τὰ HTML-σήμαντρα.',
-'badsiglength' => 'Ἡ ὑπογραφή σου πέρα τοῦ δέοντος μεγάλη ἐστίν.
-Οὐκ ἔξεστί ταύτῃ πλέον τῶν $1 {{PLURAL:$1|χαρακτῆρος|χαρακτῆρας}} ἔχει.',
-'yourgender' => 'Φῦλον:',
-'gender-unknown' => 'Ἀπροσδιόριστον',
-'gender-male' => 'Ἄρρεν',
-'gender-female' => 'Θῆλυ',
-'email' => 'ἠλεκτρονική ἐπιστολή',
-'prefs-help-realname' => 'Ἀληθὲς ὄνομα προαιρετικὸν ἐστίν.
-Εἰ εἰσάγεις τὸ ὄνομά σου, ἀναγνωριστέον ἔσται τὸ ἔργον σου.',
'loginerror' => 'Ἡμάρτηκας περὶ τοῦ συνδεδεκαῖναι',
-'prefs-help-email-required' => 'Διεύθυνσις ἠλ-ταχυδρομείου προαπαιτεῖται.',
+'createaccounterror' => 'Ἀδύνατος ἡ ποίησις λογισμοῦ: $1',
'nocookieslogin' => 'Ὁ {{SITENAME}} χρῆται πύσματα ἐν τῇ συνδέσει τῶν χρωμένων.
Μὴ ἐνεργὰ τὰ πύσματα διέταξας.
Ἐνεργὰ ποιήσας αὐτὰ πείρασον πάλιν.',
@@ -455,8 +473,8 @@ $2',
'wrongpassword' => 'Εἰσηγμένον σύνθημα ἐσφαλμένον. Πείρασον πάλιν.',
'wrongpasswordempty' => 'Σύνθημα οὐκ ἔγραψας.
Αὖθις πείρασον.',
-'passwordtooshort' => 'Τὸ σύνθημά σου ἄκυρον ἢ λίαν βραχὺ ἐστίν.
-Δεῖ αὐτὸ ἔχειν τοὐλάχιστον {{PLURAL:$1|1 χαρακτὴρ|$1 χαρακτῆρες}} καὶ εἶναι διάφορον τοῦ ὀνόματος χρωμένου σου.',
+'passwordtooshort' => 'Δεῖ τὸ σύνθημά σου ἔχειν τοὐλάχιστον {{PLURAL:$1|1 χαρακτὴρ|$1 χαρακτῆρες}}.',
+'password-name-match' => 'Δεῖ σε ἐπιλέξειν σύνθημα δίαφορον τοῦ σοῦ ὀνόματος χρωμένου.',
'mailmypassword' => 'Τὸ νέον σύνθημα μέσῳ ἠλεκτρονικῆς ἐπιστολῆς πέμψειν',
'passwordremindertitle' => 'Νέον ἐφήμερον σύνθημα διὰ {{SITENAME}}',
'passwordremindertext' => "Τίς (πιθανῶς σύ, ἔχων τὴν IP-διευθύνσιν \$1) ἐζήτησεν τὴν πρὸς σέ ἀποστολὴν νέου συνθήματος διὰ τὸν ἱστότοπον {{SITENAME}} (\$4). Τὸ τρέχον σύνθημα διὰ τὸν χρώμενον \"\$2\" ἐν τῷ παρόντι ὡς \"\$3\" ἐτέθη. Εἰ ἥδε ἐστὶ πρόθεσίς σου, δεῖ σε ''νῦν'' συνδεῖσθαι τε καὶ ἀλλάττειν τὸ σύνθημά σου. Τὸ σύνθημά σου τὸ προσωρινὸν λεληγμένον ἔσεται μετὰ τῆς παρόδου {{PLURAL:\$5|μίας ἡμέρας|\$5 ἡμερῶν}}.
@@ -492,9 +510,6 @@ $2',
'resetpass-no-info' => 'Ἐὰν μὴ συνδέῃ οὐκ ἔξεστί σοι εὐθέως δεῦρο βαίνειν.',
'resetpass-submit-loggedin' => 'Ἀλλάττειν σύνθημα',
'resetpass-temp-password' => 'Προσωρινὸν σύνθημα:',
-'resetpass-log' => 'Τὸ σύνθημα ἀναρρυθμίζει τὸν κατάλογον',
-'resetpass-logentry' => 'συντετέλεσται ἀλλαγὴ συνθήματος τοῦ $1',
-'resetpass-comment' => 'Αἰτία μεταρρυθμίσεως συνθήματος:',
# Edit page toolbar
'bold_sample' => 'Γράμματα παχέα',
@@ -566,7 +581,6 @@ $2',
'blockededitsource' => "Τὸ κείμενον τῶν '''μεταγραφῶν ὑπ' ἐσοῦ''' τοῦ '''$1''' δείκνυται κάτωθι:",
'whitelistedittitle' => 'Ἀπαιτούμενον τὸ συνδεῖσθαι πρὸ τοῦ μεταγράψειν',
'whitelistedittext' => 'Ἀπαιτούμενον τὸ $1 πρὸ τοῦ μεταγράψειν δέλτους.',
-'confirmedittitle' => 'Ἐπιβεβαίωσις ἠλ-διευθύνσεως ἀπαραίτητος πρὸ τοῦ μεταγράψειν',
'confirmedittext' => 'Δεῖ σε ἐπιβεβαιώσειν τὴν διεύθυνσίν σου πρὸ τοῦ μεταγράψειν δέλτους. Θὲς καὶ ἐπικύρωσον τὴν διεύθυνσίν σου διὰ τῶν [[Special:Preferences|αἱρέσεων χρωμένου]] σου.',
'nosuchsectiontitle' => 'Οὐδὲν τοιοῦτον τμῆμα εὑρεθέν',
'nosuchsectiontext' => 'Ἐπείρασας μεταγράψειν τμῆμα ὅπερ οὐχ ὑπάρχει.',
@@ -588,7 +602,8 @@ $2',
'''Konqueror: '''θλίψον τὸ ''Reload'' ἢ πίεσον ''F5'';
'''Opera:''' καθαίρειν τὴν λανθάνουσαν μνήμην ἐν ''Tools → Preferences'';
'''Internet Explorer:''' ἐρητυειν τὸ ''Ctrl'' ἐνῷ θλίβεις τὸ ''Refresh,'' ἢ πίεσον ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Βουλή:''' Χρῆσον τὸ κομβίον 'Δεικνύναι προθεώρησιν' ἵνα δοκιμάσῃς τὴν νέαν σου CSS/JS πρό τοῦ καταγράφειν.",
+'usercssyoucanpreview' => "'''Βουλή:''' Χρῆσον τῷ κομβίῳ 'Δεικνύναι προθεώρησιν' ἵνα δοκιμάσῃς τὴν νέαν σου CSS πρὸ τοῦ καταγράφειν.",
+'userjsyoucanpreview' => "'''Βουλή:''' Χρῆσον τῷ κομβίῳ 'Δεικνύναι προθεώρησιν' ἵνα δοκιμάσῃς τὴν νέαν σου JS πρὸ τοῦ καταγράφειν.",
'userinvalidcssjstitle' => "'''Προσοχή:''' Οὐχ ὑφίσταται ''skin'' \"\$1\". Μέμνησο: αἱ προσηρμοσμέναι δέλτοι .css καὶ .js χρῶνται ἐπώνυμον τι ἔχον πεζὰ γράμματα, π.χ. {{ns:user}}:Foo/monobook.css ἐν ἀντίθεσει πρὸς τὸν {{ns:user}}:Foo/Monobook.css.",
'updated' => '(Ἐνημερωθέν)',
'note' => "'''Ἐπισήμανσις:'''",
@@ -615,9 +630,9 @@ $2',
Θεωρήσατε τὸ διασπάσειν τὴν δέλτον εἰς μικρώτερα τεμάχια.'''",
'protectedpagewarning' => "'''ΠΡΟΣΟΧΗ: Ἥδε ἡ δέλτος κεκλῃσμένη ἐστὶν οὕτως ὥστε μόνον χρώμενοι ἔχοντες προνόμια ἐπιτρόπων δύνωνται μεταγράψειν αὐτήν.'''",
'semiprotectedpagewarning' => "'''ΠΡΟΣΟΧΗ: Ἥδε ἡ δέλτος κεκλῃσμένη ἐστὶν οὕτως ὥστε μόνον χρώμενοι ἔχοντες προνόμια ἐπιτρόπων δύνωνται μεταγράψειν αὐτήν.'''",
-'templatesused' => 'Πρότυπα κεχρησμένα ἐν τοιαύτῃ δελτῳ:',
-'templatesusedpreview' => 'Πρότυπα κεχρησμένα ἐν ταύτῃ προθεωρήσει:',
-'templatesusedsection' => 'Πρότυπα χρηστὰ ἐν τῷδε τῷ τμήματι:',
+'templatesused' => '{{PLURAL:$1|Πρότυπον κεχρησμένον|Πρότυπα κεχρησμένα}} ἐν τοιαύτῃ δέλτῳ:',
+'templatesusedpreview' => '{{PLURAL:$1|Πρότυπον κεχρησμένον|Πρότυπα κεχρησμένα}} ἐν ταύτῃ προθεωρήσει:',
+'templatesusedsection' => '{{PLURAL:$1|Πρότυπον κεχρησμένον|Πρότυπα κεχρησμένα}} ἐν τῷδε τῷ τμήματι:',
'template-protected' => '(φυλλάττεται)',
'template-semiprotected' => '(ἡμιπεφυλαγμένη)',
'hiddencategories' => 'Ἥδε ἡ δέλτος μέλος ἐστὶ {{PLURAL:$1|1 τῆς κεκρυμμένης κατηγορίας|$1 τῶν κεκρυμμένων κατηγοριῶν}}:',
@@ -628,13 +643,13 @@ $2',
'permissionserrors' => 'Σφάλματα ἀδειῶν',
'permissionserrorstext' => 'Οὐκ ἔξεστί σοι ποιεῖν τοῦτο ἐξ αἰτίας {{PLURAL:$1|τοῦδε|τῶνδε}}:',
'permissionserrorstext-withaction' => 'Οὐκ ἔχεις τὴν ἄδειαν τοῦ $2, ἐκ {{PLURAL:$1|τῆς ἑξῆς αἰτίας|τῶν ἑξῆς αἰτιῶν}}:',
-'recreate-deleted-warn' => "'''Προσοχή: Ἀναποιεῖς δέλτον πάλαι ποτὲ διαγραφεῖσα.'''
+'recreate-moveddeleted-warn' => "'''Προσοχή: Ἀναποιεῖς δέλτον πάλαι ποτὲ διαγραφεῖσα.'''
-Δεῖ σοι θεωρήσειν εἰ ἁρμοστόν ἐστι τὸ συνεχίζειν μεταγράφειν τήνδε τὴν δέλτον.
-Ὁ κατάλογος διαγραφῆς τῆσδε τῆς δέλτου διατίθεται ἐνθάδε πρὸς ἐπικουρίαν σου:",
-'deleted-notice' => 'Ἥδε ἡ δέλτος διεγράφη.
-Ὁ κατάλογος διαγραφῶν διὰ τήνδε τὴν δέλτον παρέχεται κάτωθι ὡς ἀναφορά.',
-'deletelog-fulllog' => 'Ὁρᾶν τὸν πλήρην κατάλογον',
+Δεῖ σε θεωρήσειν εἰ ἁρμοστόν ἐστι τὸ συνεχίζειν μεταγράφειν τήνδε τὴν δέλτον.
+Ὁ κατάλογος διαγραφῶν καὶ μετακινήσεων τῆσδε τῆς δέλτου διατίθεται ἐνθάδε πρὸς ἐπικουρίαν σου:",
+'moveddeleted-notice' => 'Ἥδε ἡ δέλτος διεγράφη.
+Ὁ κατάλογος διαγραφῶν καὶ μετακινήσεων διὰ τήνδε τὴν δέλτον παρέχεται κάτωθι ὡς ἀναφορά.',
+'log-fulllog' => 'Ὁρᾶν τὸν πλήρη κατάλογον',
'edit-hook-aborted' => 'Ἡ μεταγραφὴ ἀνεστάλη ὑπὸ τοῦ ἀγγίστρου.
Οὐδεμία ἐξήγησις ἐδόθη.',
'edit-gone-missing' => 'Ἀδύνατος ἡ ἐνημέρωσις τῆς δέλτου.
@@ -664,7 +679,7 @@ $2',
'currentrev' => 'Τὸ νῦν',
'currentrev-asof' => 'Τρέχουσα ἀναθεώρησις μέχρι $1',
'revisionasof' => 'Τὰ ἐπὶ $1',
-'revision-info' => 'Τὸ ἐπὶ $1 ὑπὸ $2', # Additionally available: $3: revision id
+'revision-info' => 'Τὸ ἐπὶ $1 ὑπὸ $2',
'previousrevision' => '←Παλαιοτέρα ἀναθεώρησις',
'nextrevision' => 'Νεωτέρα ἀναθεώρησις→',
'currentrevisionlink' => 'Τὰ νῦν',
@@ -677,7 +692,7 @@ $2',
Ὑπόμνημα: (τρέχον) = διαφοραὶ ὡς πρὸς τὴν τρέχουσαν ἐκδοχήν,
(ὕστατον) = διαφοραὶ ὡς πρὸς τὴν προηγουμένην ἔκδοσιν, μ = ἀλλαγαὶ μικρῆς κλίμακος.',
'history-fieldset-title' => 'Ζήτησις ἐν ταῖς προτέραις',
-'deletedrev' => '[διεγράφη]',
+'history-show-deleted' => 'Διαγραφεῖσαι μόνον',
'histfirst' => 'πρώτη',
'histlast' => 'ἐσχάτη',
'historysize' => '({{PLURAL:$1|1 δυφίον|$1 δυφία}})',
@@ -686,49 +701,69 @@ $2',
# Revision feed
'history-feed-title' => 'Ἱστορία ἀναθεωρήσεων',
'history-feed-description' => 'Ἱστορία ἀναθεωρήσεων τῆσδε δέλτου ἐν τῷ βίκι',
-'history-feed-item-nocomment' => '$1 ἐπὶ $2', # user at time
+'history-feed-item-nocomment' => '$1 ἐπὶ $2',
# Revision deletion
-'rev-deleted-comment' => '(σχόλιον ἀφελόμενον)',
-'rev-deleted-user' => '(ὄνομα χρωμένου ἀφελόμενον)',
-'rev-deleted-event' => '(δρᾶσις καταλόγου ἀφελομένη)',
-'rev-delundel' => 'δεικνύναι/κρύπτειν',
-'revisiondelete' => 'Διαγράφειν/ἐκδιαγράφειν ἀναθεωρήσεις',
-'revdelete-nooldid-title' => 'Ἄκυρος ἀναθεώρησις-στόχος',
-'revdelete-nologtype-title' => 'Οὐδεὶς τύπος καταλόγου ἐδόθη',
-'revdelete-nologtype-text' => 'Οὐχ ὥρικας ἐπὶ ποίου τύπου καταλόγου δεῖ τήνδε δρᾶσιν ἐφαρμοσθῆναι.',
-'revdelete-toomanytargets-title' => 'Ὑπὲρ τὸ δέον πολλοὶ στόχοι',
-'revdelete-nologid-title' => 'Ἄκυρος καταχώρησις καταλόγου',
-'revdelete-nologid-text' => 'Εἴτε οὐχ ὤρικας συμβὰν-στόχον ἵνα ἐκτελέσῃς τήνδε λειτουργίαν, εἴτε ἡ καθωρισμένη καταχώρησις οὐκ ἔστιν.',
-'revdelete-selected' => "'''{{PLURAL:$2|Ἐπειλεγμένη ἀναθεώρησις|Ἐπειλεγμέναι ἀναθεωρήσεις}} τοῦ [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Ἐπειλεγμένον γεγονὸς καταλόγου|Ἐπειλεγμένα γεγονὀτα καταλόγου}}:'''",
-'revdelete-legend' => 'Θέτειν περιορισμοῦς ὁρατότητος',
-'revdelete-hide-text' => 'Κρύπτειν κείμενον ἀναθεωρήσεως',
-'revdelete-hide-name' => 'Κρύπτειν δρᾶσιν τε καὶ στόχον',
-'revdelete-hide-comment' => 'Κρύπτειν σχόλιον μεταγραφῆς',
-'revdelete-hide-user' => 'Κρύπτειν μεταγραφέως ὄνομα/IP-διεύθυνσιν',
-'revdelete-hide-restricted' => 'Ἀποκρύπτειν τὰ δεδομένα ἀπὸ τῶν ἐπιτρόπων καὶ ἄλλων',
-'revdelete-suppress' => 'Κρύπτειν τὴν ἐμφάνισιν δεδομένων παρὰ τοὺς Γέροντας ἐπἴσης',
-'revdelete-hide-image' => 'Κρύπτειν περιεχόμενον ἀρχείου',
-'revdelete-unsuppress' => 'Αἴρειν περιορίσεις ἐπὶ τῶν ἀποκατεστημένων ἐκδόσεων',
-'revdelete-log' => 'Αἰτία:',
-'revdelete-submit' => 'Ἐφαρμογὴ τῇ ἐπειλεγμένῇ ἀναθεωρήσει',
-'revdelete-logentry' => 'ἠλλαγμένη ἡ ὁρατότης τῆς ἀναθεωρήσεως τοῦ [[$1]]',
-'logdelete-logentry' => 'ἀλλάττειν τὴν ὁρατότητα τῶν γεγονότων διὰ τὸ [[$1]]',
-'revdelete-success' => "'''Ἀναθεωρήσεων ὁρατότης ἐπιτυχῶς ἐνημερωθεῖσα.'''",
-'logdelete-success' => "'''Καταλόγων ὁρατότης ἐπιτυχῶς τεθειμένη.'''",
-'revdel-restore' => 'Ἀλλάττειν ὁρατότητα',
-'pagehist' => 'Ἱστορία δέλτου',
-'deletedhist' => 'Ἱστορία διαγεγραμμένη',
-'revdelete-content' => 'περιεχόμενον',
-'revdelete-summary' => 'σύνοψις μεταγραφῶν',
-'revdelete-uname' => 'ὄνομα χρωμένου',
-'revdelete-restricted' => 'ἐφηρμοσμένοι περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
-'revdelete-unrestricted' => 'αἱρεθέντες περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
-'revdelete-hid' => 'κρύπ $1',
-'revdelete-unhid' => 'oὐ κρύπ $1',
-'revdelete-log-message' => '$1 διὰ $2 {{PLURAL:$2|ἀναθεώρησιν|ἀναθεωρήσεις}}',
-'logdelete-log-message' => '$1 διὰ $2 {{PLURAL:$2|γεγονός|γεγονότα}}',
+'rev-deleted-comment' => '(σχόλιον ἀφελόμενον)',
+'rev-deleted-user' => '(ὄνομα χρωμένου ἀφελόμενον)',
+'rev-deleted-event' => '(δρᾶσις καταλόγου ἀφελομένη)',
+'rev-deleted-no-diff' => "Οὐκ ἔξεστί σοι ὁρᾶν τήνδε τὴν διαφορὰν διότι μία ἐκ τῶν ἀναθεωρήσεων '''διαγέγραπται'''.
+Ἐνδεχομένως ὑπάρχουσιν αἱ σχετικαὶ λεπτομέρειαι ἐν τῷ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} καταλόγῳ διαγραφῶν].",
+'rev-delundel' => 'δεικνύναι/κρύπτειν',
+'rev-showdeleted' => 'δεικνύναι',
+'revisiondelete' => 'Διαγράφειν/ἐκδιαγράφειν ἀναθεωρήσεις',
+'revdelete-nooldid-title' => 'Ἄκυρος ἀναθεώρησις-στόχος',
+'revdelete-nologtype-title' => 'Οὐδεὶς τύπος καταλόγου ἐδόθη',
+'revdelete-nologtype-text' => 'Οὐχ ὥρικας ἐπὶ ποίου τύπου καταλόγου δεῖ τήνδε δρᾶσιν ἐφαρμοσθῆναι.',
+'revdelete-nologid-title' => 'Ἄκυρος καταχώρησις καταλόγου',
+'revdelete-nologid-text' => 'Εἴτε οὐχ ὤρικας συμβὰν-στόχον ἵνα ἐκτελέσῃς τήνδε λειτουργίαν, εἴτε ἡ καθωρισμένη καταχώρησις οὐκ ἔστιν.',
+'revdelete-no-file' => 'Τὸ καθωρισμένον ἀρχεῖον οὐχ ὑπάρχει.',
+'revdelete-show-file-confirm' => 'Βέβαιος εἶ περὶ τῆς προβολῆς διαγεγραμμένης ἀναθεωρήσεως τινὸς τοῦ ἀρχείου "<nowiki>$1</nowiki>" ἐκ τῆς $2 ἐν τῇ $3;',
+'revdelete-show-file-submit' => 'Ναί',
+'revdelete-selected' => "'''{{PLURAL:$2|Ἐπειλεγμένη ἀναθεώρησις|Ἐπειλεγμέναι ἀναθεωρήσεις}} τοῦ [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Ἐπειλεγμένον γεγονὸς καταλόγου|Ἐπειλεγμένα γεγονὀτα καταλόγου}}:'''",
+'revdelete-text' => "'''Αἱ διαγεγραμμέναι ἀναθεωρήσεις καὶ τὰ γεγονότα ἐμφανίσονται ἐν τῷ ἱστορικῷ τῆς δέλτου καὶ τοῖς καταλόγοις, ὰλλὰ μέρη τοῦ περιεχομένου σφῶν ἔσονται δημοσίως ἀπροσπέλαστα.'''
+Ἐξέσται δὲ ἑτέροις ἐπιτρόποις ἐν τῷ ἱστοτόπῳ {{SITENAME}} προσπελάζειν τῷ κρυμμένῳ περιεχομένῳ καὶ ἐπανιστάναι τόδε δία αὐτῆς τῆς διεπαφῆς ἐὰν μὴ θῶνται πρόσθετοι περιορισμοί τινές.",
+'revdelete-legend' => 'Θέτειν περιορισμοῦς ὁρατότητος',
+'revdelete-hide-text' => 'Κρύπτειν κείμενον ἀναθεωρήσεως',
+'revdelete-hide-image' => 'Κρύπτειν περιεχόμενον ἀρχείου',
+'revdelete-hide-name' => 'Κρύπτειν δρᾶσιν τε καὶ στόχον',
+'revdelete-hide-comment' => 'Κρύπτειν σχόλιον μεταγραφῆς',
+'revdelete-hide-user' => 'Κρύπτειν μεταγραφέως ὄνομα/IP-διεύθυνσιν',
+'revdelete-hide-restricted' => 'Ἀποκρύπτειν τὰ δεδομένα ἀπὸ τῶν ἐπιτρόπων καὶ ἄλλων',
+'revdelete-radio-set' => 'Ναί',
+'revdelete-radio-unset' => 'Οὐ',
+'revdelete-suppress' => 'Κρύπτειν τὴν ἐμφάνισιν δεδομένων παρὰ τοὺς Γέροντας ἐπἴσης',
+'revdelete-unsuppress' => 'Αἴρειν περιορίσεις ἐπὶ τῶν ἀποκατεστημένων ἐκδόσεων',
+'revdelete-log' => 'Αἰτία:',
+'revdelete-submit' => 'Ἐφαρμογὴ ἐπὶ {{PLURAL:$1|τῇ ἐπειλεγμένῇ ἀναθεωρήσει|ταῖς ἐπειλεγμέναις ἀναθεωρήσεσιν}}',
+'revdelete-logentry' => 'ἠλλαγμένη ἡ ὁρατότης τῆς ἀναθεωρήσεως τοῦ [[$1]]',
+'logdelete-logentry' => 'ἀλλάττειν τὴν ὁρατότητα τῶν γεγονότων διὰ τὸ [[$1]]',
+'revdelete-success' => "'''Ἀναθεωρήσεων ὁρατότης ἐπιτυχῶς ἐνημερωθεῖσα.'''",
+'revdelete-failure' => "'''Ἡ ὁρατότης τῆς ἀναθεωρήσεως οὐκ ἦ ἐνημερώσιμος:'''
+$1",
+'logdelete-success' => "'''Καταλόγων ὁρατότης ἐπιτυχῶς τεθειμένη.'''",
+'logdelete-failure' => "'''Ἡ ὁρατότης τοῦ καταλόγου μὴ ῥυθμίσιμος ἦν:'''
+$1",
+'revdel-restore' => 'Ἀλλάττειν ὁρατότητα',
+'pagehist' => 'Ἱστορία δέλτου',
+'deletedhist' => 'Ἱστορία διαγεγραμμένη',
+'revdelete-content' => 'περιεχόμενον',
+'revdelete-summary' => 'σύνοψις μεταγραφῶν',
+'revdelete-uname' => 'ὄνομα χρωμένου',
+'revdelete-restricted' => 'ἐφηρμοσμένοι περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
+'revdelete-unrestricted' => 'αἱρεθέντες περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
+'revdelete-hid' => 'κρύπ $1',
+'revdelete-unhid' => 'oὐ κρύπ $1',
+'revdelete-log-message' => '$1 διὰ $2 {{PLURAL:$2|ἀναθεώρησιν|ἀναθεωρήσεις}}',
+'logdelete-log-message' => '$1 διὰ $2 {{PLURAL:$2|γεγονός|γεγονότα}}',
+'revdelete-modify-missing' => 'Σφάλμα κατὰ τὸ μεταγράφειν τοῦ τεμαχίου τοῦ ἔχοντος ID $1: οὐχ ὐπάρχει ἐν τῇ βάσει δεδομένων!',
+'revdelete-no-change' => "'''Εἴδησις:''' τὸ τεμάχιον τὸ ἔχον ἡμερομηνίαν $2, $1 ἔχει ἤδη τὰς αἰτουμένας ῥυθμίσεις ὁρατότητος",
+'revdelete-only-restricted' => 'Οὐκ ἔξεστί σοι ἀποκρύπτειν τὴν προβολὴν τοῦ τεμαχίου τοῦ χρονολογηθέντος $2, $1: ὑπὸ τῶν ἐπιτρόπων ἄνευ τοῦ συνάμα ἐπιλέγειν μίαν ἐκ τῶν ἑτέρων ἐπιλογῶν καταστολῆς.',
+'revdelete-otherreason' => 'Ἑτέρα/πρὀσθετος αἰτια:',
+'revdelete-reasonotherlist' => 'Ἑτέρα αἰτία',
+'revdelete-edit-reasonlist' => 'Μεταγράφειν αἰτίας διαγραφῆς',
+'revdelete-offender' => 'Δημιουργὸς ἀναθεώρησεως:',
# Suppression log
'suppressionlog' => 'Κατάλογος διαγραφῶν',
@@ -760,67 +795,13 @@ $2',
'mergelogpagetext' => 'Κατωτέρω ἐστὶ διαλογή τις τῶν πλείω προσφάτων συγχωνεύσεων τοῦ ἱστορικοῦ δέλτου τινὸς μετὰ αὐτοῦ ἑτέρας τινός.',
# Diffs
-'history-title' => 'Αἱ πρότεραι ἐκδόσεις τῆς δέλτου "$1"',
-'difference' => '(Τὰ μεταβεβλημένα)',
-'lineno' => 'Γραμμή $1:',
-'compareselectedversions' => 'Συγκρίνειν τὰς ἐπειλεγμένας δέλτους',
-'visualcomparison' => 'Ὀπτικὴ σύγκρισις',
-'wikicodecomparison' => 'Βικι-κειμενικὴ σύγκρισις',
-'editundo' => 'ἀναίρεσις',
-'diff-multi' => '({{PLURAL:$1|Μία ἐνδιάμεσος ἀναθεώρησις|$1 ἐνδιάμεσοι ἀναθεωρήσεις}} οὐ φαίνονται.)',
-'diff-movedto' => 'μετακινηθεῖσα εἰς $1',
-'diff-styleadded' => '$1 ὑφὴ προστεθεῖσα',
-'diff-added' => '$1 προστεθεῖσα',
-'diff-changedto' => 'μεταβληθεῖσα εἰς $1',
-'diff-movedoutof' => 'κινηθεῖσα ἐκτὸς τοῦ $1',
-'diff-styleremoved' => '$1 ὑφὴ ἀφαιρεθεῖσα',
-'diff-removed' => '$1 ἀφαιρεθεῖσα',
-'diff-changedfrom' => 'μεταβληθεῖσα κατὰ $1',
-'diff-src' => 'πηγή',
-'diff-withdestination' => 'μετὰ τοῦ προορισμοῦ $1',
-'diff-with' => '&#32;μετὰ $1 $2',
-'diff-with-final' => '&#32;καὶ $1 $2',
-'diff-width' => 'πλάτος',
-'diff-height' => 'ὕψος',
-'diff-p' => "'''παράγραφός''' τις",
-'diff-blockquote' => "'''ἀπόφθεγμά''' τι",
-'diff-h1' => "'''ἐπικεφαλίς (κλίμακος 1)''' τις",
-'diff-h2' => "'''ἐπικεφαλίς (κλίμακος 2)''' τις",
-'diff-h3' => "'''ἐπικεφαλίς (κλίμακος 3)''' τις",
-'diff-h4' => "'''ἐπικεφαλίς (κλίμακος 4)''' τις",
-'diff-h5' => "'''ἐπικεφαλίς (κλίμακος 5)''' τις",
-'diff-pre' => "'''προδιαμεμορφωμένον στῖφος''' τι",
-'diff-div' => "'''ὑποδιαίρεσίς''' τις",
-'diff-ul' => "'''ἄτακτος διαλογή''' τις",
-'diff-ol' => "'''τεταγμένη διαλογή''' τις",
-'diff-li' => "'''διαλογῆς τεμάχιόν''' τι",
-'diff-table' => "'''πίναξ''' τις",
-'diff-tbody' => "'''πίνακος περιεχόμενά''' τινα",
-'diff-tr' => "'''σειρά''' τις",
-'diff-td' => "'''κύτος''' τι",
-'diff-th' => "'''ἐπικεφαλίς''' τις",
-'diff-br' => "'''διάκενόν''' τι",
-'diff-hr' => "'''ὁριζόντιος κανών''' τις",
-'diff-code' => "'''ὑπολογιστικοῦ κώδικος στῖφος''' τι",
-'diff-dl' => "'''ὁρισμοῦ διαλογή''' τις",
-'diff-dt' => "'''ὁρισμοῦ ὅρος''' τις",
-'diff-dd' => "'''ὁρισμός''' τις",
-'diff-input' => "'''εἰσαγόμενόν''' τι",
-'diff-form' => "'''μορφή''' τις",
-'diff-img' => "'''εἰκών''' τις",
-'diff-span' => "'''βεληνεκές''' τι",
-'diff-a' => "'''σύνδεσμός''' τις",
-'diff-i' => "'''πλάγιον'''",
-'diff-b' => "'''ἔντονον'''",
-'diff-strong' => "'''ἰσχυρόν'''",
-'diff-em' => "'''ἔμφασις'''",
-'diff-font' => "'''γραμματοδιαλογή'''",
-'diff-big' => "'''μέγα'''",
-'diff-del' => "'''διαγραφέν'''",
-'diff-tt' => "'''μετερρυθμισμένον πλάτος'''",
-'diff-sub' => "'''ὑπογεγραμμένον'''",
-'diff-sup' => "'''ὑπεργεγραμμένον'''",
-'diff-strike' => "'''διαγεγραμμένον ἐγκαρσίως'''",
+'history-title' => 'Αἱ πρότεραι ἐκδόσεις τῆς δέλτου "$1"',
+'difference' => '(Τὰ μεταβεβλημένα)',
+'lineno' => 'Γραμμή $1:',
+'compareselectedversions' => 'Συγκρίνειν τὰς ἐπειλεγμένας δέλτους',
+'showhideselectedversions' => 'Δεικνύειν/κρύπτειν τὰς ἐπειλεγμένας ἐκδόσεις',
+'editundo' => 'ἀναίρεσις',
+'diff-multi' => '({{PLURAL:$1|Μία ἐνδιάμεσος ἀναθεώρησις|$1 ἐνδιάμεσοι ἀναθεωρήσεις}} οὐ φαίνονται.)',
# Search results
'searchresults' => 'Ἀποτελέσματα ἀναζητήσεως',
@@ -828,29 +809,25 @@ $2',
'searchresulttext' => 'Διὰ πλείονας πύστεις ἐπὶ τοῦ ζητεῖν ἐν τῷ {{SITENAME}}, ἴδε [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ἐζήτησας \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ἁπάσας τὰς δέλτους τὰς ἀρχομένας ἐκ "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ἁπάσας τὰς δέλτους τὰς συζευγνύσας μετὰ τοῦ "$1"]])',
'searchsubtitleinvalid' => "Τὸ '''$1''' ἐζήτησας",
-'noexactmatch' => "'''Οὐκ ἐστὶ δέλτος ὀνόματι \"\$1\".'''
-Ἔξεστί σοι [[:\$1|ταύτην ποιεῖν]].",
-'noexactmatch-nocreate' => "'''Οὐδεμία δέλτος ὀνόματι \"\$1\".'''",
'toomanymatches' => 'Αἱ ἀπαντήσασαι ἀντιστοιχίαι εἰσὶν ὑπὲρ τὸ δέον πλείονες· πείρασον ἑτέραν πεῦσιν τινά',
'titlematches' => 'Ἡ ἐπιγραφὴ τῆς δέλτου ἀντιστοιχεῖ',
'notitlematches' => 'Οὐδεμία ἐπιγραφὴ τῆς δέλτου ἀντιστοιχεῖ',
'textmatches' => 'Τὸ κείμενον τῆς δέλτου ἀντιστοιχεῖ',
'notextmatches' => 'Οὐδὲν κείμενον τῆς δέλτου ἀντιστοιχεῖ',
-'prevn' => 'πρότεραι $1',
-'nextn' => 'ἑπόμεναι $1',
+'prevn' => 'πρότεραι {{PLURAL:$1|$1}}',
+'nextn' => 'ἑπόμεναι {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|προηγούμενον ἀποτέλεσμα|προηγούμενα ἀποτελέσματα}}',
'nextn-title' => '$1 {{PLURAL:$1|ἑπόμενον ἀποτέλεσμα|ἑπόμενα ἀποτελέσματα}}',
'shown-title' => 'Δεικνύναι $1 {{PLURAL:$1|ἀποτέλεσμα|ἀποτελέσματα}} ἀνὰ δέλτον',
-'viewprevnext' => 'Ἐπισκοπεῖν ($1) ($2) ($3)',
+'viewprevnext' => 'Ἐπισκοπεῖν ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Ἐπιλογαὶ ζητήσεως',
'searchmenu-exists' => "'''Ὑπάρχει δέλτος τις ὀνόματι \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
'searchmenu-new' => "'''Ποιεῖν τὴν δέλτον \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
'searchhelp-url' => 'Help:Περιεχόμενα',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ζήτησις δέλτων ἐχουσῶν τόδε τὸ πρόθεμα]]',
'searchprofile-articles' => 'Δέλτοι περιεχομένων',
-'searchprofile-articles-and-proj' => 'Δέλτοι ἐγχειρήματος & περιεχόμενα',
-'searchprofile-project' => 'Δέλτοι ἐγχειρήματος',
-'searchprofile-images' => 'Ἀρχεῖα',
+'searchprofile-project' => 'Βοήθεια καὶ δέλτοι ἐγχειρήματος',
+'searchprofile-images' => 'Πολυμέσα',
'searchprofile-everything' => 'Ἅπαντα',
'searchprofile-advanced' => 'Προεωσμένον',
'searchprofile-articles-tooltip' => 'Ζητεῖν ἐν $1',
@@ -858,8 +835,6 @@ $2',
'searchprofile-images-tooltip' => 'Ζητεῖν ἀρχεῖα',
'searchprofile-everything-tooltip' => 'Πανταχοῖ (καὶ τὰς δέλτους διαλέξεως) ζητεῖν.',
'searchprofile-advanced-tooltip' => 'Ζητεῖν εἰς συνήθη ὀνοματεῖα',
-'prefs-search-nsdefault' => 'Ζητεῖν χρώμεν-ος,-η προκαθωρισμένας παραμέτρους:',
-'prefs-search-nscustom' => 'Ζητεῖν συνήθη ὀνοματεῖα:',
'search-result-size' => '$1 ({{PLURAL:$2|1 λέξις|$2 λέξεις}})',
'search-result-score' => 'Σχετικότης: $1%',
'search-redirect' => '(ἀναδιευθύνειν $1)',
@@ -872,11 +847,12 @@ $2',
'search-mwsuggest-disabled' => 'οὐκ αἵτινες ὑποδείξεις',
'search-relatedarticle' => 'Σχετικά',
'mwsuggest-disable' => 'Μὴ ἐνεργαὶ αἱ ὑποδείξεις AJAX',
+'searcheverything-enable' => 'Ζήτησις ἐν πᾶσι τοῖς ὀνοματοχώροις',
'searchrelated' => 'σχετικά',
'searchall' => 'ἅπασαι',
'showingresults' => "Δεικνύναι κατωτέρω μέχρι {{PLURAL:$1|'''1''' ἀποτέλεσμα|'''$1''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
'showingresultsnum' => "Δεικνύναι {{PLURAL:$3|'''1''' ἀποτέλεσμα|'''$3''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
-'showingresultstotal' => "Δεικνύναι κατωτέρω {{PLURAL:$4|ἀποτἐλεσμα '''$1''' ἀπὸ '''$3'''|ἀποτελέσματα '''$1 - $2''' ἀπὸ '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Ἀποτέλεσμα'''$1''' ἀπὸ '''$3'''|Ἀποτελέσματα '''$1 - $2''' ἀπὸ '''$3'''}} περὶ '''$4'''",
'nonefound' => "'''Ἐπισημείωμα''': Μόνοι οἵτινες ὀνοματικοὶ χῶροι ἀναζητοῦνται κατὰ προεπιλογήν.
Πείρασον τὸ προθεματίσειν τὴν πεῦσιν σου μετὰ τοῦ ''all:'' - ''ἅπασαι:'' ἀναζητεῖν ἐν παντὶ τῷ περιεχομένῳ (δέλτων διαλόγου, προτύπων, κ.λ., περιλαμβανομένων), ἢ χρῆσον τῷ ἐπιθυμητῷ ὀνοματικῷ χώρῳ ὡς προθέματι.",
'search-nonefound' => 'Οὐδὲν ἀποτέλεσμα ἀντίστοιχον τῆς πεύσεως.',
@@ -885,93 +861,122 @@ $2',
'powersearch-ns' => 'Ζήτησις ἐν τοῖς ὀνοματείοις:',
'powersearch-redir' => 'Ἀναδιευθύνσεων καταλόγος',
'powersearch-field' => 'Ζήτησις περί',
+'powersearch-togglelabel' => 'Ἐλέγχειν:',
+'powersearch-toggleall' => 'Ἅπαντες',
+'powersearch-togglenone' => 'Οὐδέν',
'search-external' => 'Ἐξωτέρα ἀναζήτησις',
+# Quickbar
+'qbsettings' => 'Ταχεῖα πρόσβασις',
+'qbsettings-none' => 'Οὐδέν',
+'qbsettings-fixedleft' => 'Σταθερὰ ἀριστερώς',
+'qbsettings-fixedright' => 'Σταθερὰ δεξιώς',
+'qbsettings-floatingleft' => 'Πλανώμενα αριστερώς',
+'qbsettings-floatingright' => 'Πλανώμενα δεξιώς',
+
# Preferences page
-'preferences' => 'Αἱρέσεις',
-'mypreferences' => 'Αἱ αἱρέσεις μου',
-'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
-'prefsnologin' => 'Μὴ συνδεδεμένος',
-'prefsreset' => 'Αἱ αἱρέσεις σου ἀποκατέστηκαν κατὰ τὴν τεταμιευμένην ἔκδοσιν σφῶν.',
-'qbsettings' => 'Ταχεῖα πρόσβασις',
-'qbsettings-none' => 'Οὐδέν',
-'qbsettings-fixedleft' => 'Σταθερὰ ἀριστερώς',
-'qbsettings-fixedright' => 'Σταθερὰ δεξιώς',
-'qbsettings-floatingleft' => 'Πλανώμενα αριστερώς',
-'qbsettings-floatingright' => 'Πλανώμενα δεξιώς',
-'changepassword' => 'Ἀλλάττειν σύνθημα',
-'skin' => 'Ἐμφάνισις',
-'skin-preview' => 'Προεπισκοπεῖν',
-'math' => 'Τὰ μαθηματικά',
-'dateformat' => 'Μορφοποιία χρονολογίας',
-'datedefault' => 'Οὐδεμία προτίμησις',
-'datetime' => 'Χρονολογία καὶ ὥρα',
-'math_failure' => 'Λεξιανάλυσις ἀποτετυχηκυῖα',
-'math_unknown_error' => 'ἄγνωστον σφάλμα',
-'math_unknown_function' => 'ἄγνωστος ἐνέργεια',
-'math_lexing_error' => 'σφάλμα λεξικῆς ἀναλύσεως',
-'math_syntax_error' => 'σφάλμα συντάξεως',
-'math_image_error' => 'Ἡ PNG-μετατροπὴ ἀπετεύχθη·
-ἔλεγξον τὴν ὀρθὴν ἐγκατάστασιν τῶν latex, dvips, gs, καὶ μετάτρεψον',
-'math_bad_tmpdir' => 'Ἀδύνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων ἢ ἡ ἐγγραφὴ ἐν προσκαίρῳ ἀρχειοκαταλόγῳ',
-'math_bad_output' => 'Ἀδύνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων ἢ ἡ ἐγγραφὴ ἐν ἀρχειοκαταλόγῳ ἐξόδου',
-'math_notexvc' => 'Ἐλλεῖπον ἐκτελέσιμον texvc;
-ἴδε math/README διὰ τὸ διαμορφοῦν.',
-'prefs-personal' => 'Στοιχεῖα χρωμένου',
-'prefs-rc' => 'Αἱ νέαι μεταβολαί',
-'prefs-watchlist' => 'Τὰ ἐφορώμενα',
-'prefs-watchlist-days' => 'Ἡμέραι ἐμφανιστέαι ἐν τῇ ἐφοροδιαλογῇ:',
-'prefs-watchlist-days-max' => '(τὸ μέγιστον 7 ἡμέραι)',
-'prefs-watchlist-edits' => 'Μέγιστος ἀριθμὸς ἐμφανιστέων μεταβολῶν ἐν τῇ ἐπεκτεταμένῃ διαλογῇ:',
-'prefs-watchlist-edits-max' => '(μέγιστος ἀριθμός: 1000)',
-'prefs-misc' => 'Διάφορα',
-'prefs-resetpass' => 'Ἀλλάττειν σύνθημα',
-'saveprefs' => 'Γράφειν',
-'resetprefs' => 'Ἐκκαθαίρειν ἀσώτους ἀλλαγάς',
-'restoreprefs' => 'Ἐπανίσταναι ἁπάσας τὰς προκαθωρισμένας ῥυθμίσεις',
-'textboxsize' => 'Τὸ μεταγράφειν',
-'prefs-edit-boxsize' => 'Μέγεθος τῆς θυρίδος μεταγραφῆς.',
-'rows' => 'Σειραί:',
-'columns' => 'Στῆλαι:',
-'searchresultshead' => 'Ζητεῖν',
-'resultsperpage' => 'Ἀποτελέσματα ἀνά δέλτον:',
-'contextlines' => 'Σειραὶ ἀνά ἀποτέλεσμα:',
-'contextchars' => 'Συναφὲς κείμενον ἀνά σειράν:',
-'stub-threshold' => 'Ἄνω φράγμα διὰ τοῦς <a href="#" class="stub">συνδέσμους πρὸς λείμματα</a> (δυφία):',
-'recentchangesdays' => 'Αἱ ἡμέραι αἱ δεικτέαι ἐν ταῖς προσφάτοις ἀλλαγαῖς:',
-'recentchangesdays-max' => '(τὸ μέγιστον $1 {{PLURAL:$1|ἡμέρα|ἡμέραι}})',
-'recentchangescount' => 'Δεικτέος προκαθωρισμένως, ἐν ταῖς προσφάτοις ἀλλαγαῖς, τῷ ἱστορικῷ, καὶ ταῖς δέλτοις καταλόγου, ἀριθμὸς μεταγραφῶν:',
-'savedprefs' => 'Αἱ αἱρέσεις σου καταγεγραμμέναι εἰσίν.',
-'timezonelegend' => 'Χρονικὴ ζώνη:',
-'timezonetext' => '¹Ὁ ἀριθμὸς τῶν ὡρῶν, κατἀ τὰς ὁποῖας, ὁ τοπικός σου χρόνος διαφέρει ὑπὸ αὐτοῦ τῆς ἐξυπηρετητικῆς μηχανῆς (UTC).',
-'localtime' => 'Τοπικὴ ὥρα:',
-'timezoneselect' => 'Ζώνη ὥρας:',
-'timezoneuseserverdefault' => 'Χρῆσθαι τῆς ἐξυπηρετητικῆς μηχανῆς τῷ προκαθωρισμένῳ',
-'timezoneuseoffset' => 'Ἄλλον (καθορίζειν τὸ ἐκτόπισμα)',
-'timezoneoffset' => 'Ἐκτόπισμα¹:',
-'servertime' => 'Ὥρα ὑπολογιστικῆς ἐξυπηρετητικῆς μηχανῆς:',
-'guesstimezone' => 'Συμπλήρωσις μέσῳ τοῦ πλοηγητηρίου',
-'timezoneregion-africa' => 'Λιβύη',
-'timezoneregion-america' => 'Νεοικουμένη',
-'timezoneregion-antarctica' => 'Ἀνταρκτική',
-'timezoneregion-arctic' => 'Ἀρκτική',
-'timezoneregion-asia' => 'Ἀσία',
-'timezoneregion-atlantic' => 'Ἀτλαντικὸς Ὠκεανός',
-'timezoneregion-australia' => 'Νοτιονησία',
-'timezoneregion-europe' => 'Εὐρώπη',
-'timezoneregion-indian' => 'Ινδικόν Ωκεανός',
-'timezoneregion-pacific' => 'Εἰρηνικὸς Ὠκεανός',
-'allowemail' => "Ἐπιτρέπειν τὴν χρῆσιν ἠλ-ταχυδρομείου ὑφ'ἑτέρων χρωμένων",
-'prefs-searchoptions' => 'Ἐπιλογαὶ ζητήσεως',
-'prefs-namespaces' => 'Ὄνοματικὸς χῶρος',
-'defaultns' => 'Ἀναζήτησις ἐν τοῖσδε ὀνοματικοῖς χώροις κατὰ προεπιλογήν:',
-'default' => 'προκαθωρισμένον',
-'files' => 'Ἀρχεῖα',
-'prefs-custom-css' => 'CSS παραγγελτόν',
-'prefs-custom-js' => 'JS παραγγελτόν',
+'preferences' => 'Αἱρέσεις',
+'mypreferences' => 'Αἱ αἱρέσεις μου',
+'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
+'prefsnologin' => 'Μὴ συνδεδεμένος',
+'prefsnologintext' => 'Δεῖ σε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεδεμένος εἶναι]</span> πρὸ τοῦ καθορίσειν τὰς αἱρέσεις χρωμένου.',
+'changepassword' => 'Ἀλλάττειν σύνθημα',
+'prefs-skin' => 'Ἐμφάνισις',
+'skin-preview' => 'Προεπισκοπεῖν',
+'prefs-math' => 'Τὰ μαθηματικά',
+'datedefault' => 'Οὐδεμία προτίμησις',
+'prefs-datetime' => 'Χρονολογία καὶ ὥρα',
+'prefs-personal' => 'Στοιχεῖα χρωμένου',
+'prefs-rc' => 'Αἱ νέαι μεταβολαί',
+'prefs-watchlist' => 'Τὰ ἐφορώμενα',
+'prefs-watchlist-days' => 'Ἡμέραι ἐμφανιστέαι ἐν τῇ ἐφοροδιαλογῇ:',
+'prefs-watchlist-days-max' => '(τὸ μέγιστον 7 ἡμέραι)',
+'prefs-watchlist-edits' => 'Μέγιστος ἀριθμὸς ἐμφανιστέων μεταβολῶν ἐν τῇ ἐπεκτεταμένῃ διαλογῇ:',
+'prefs-watchlist-edits-max' => '(μέγιστος ἀριθμός: 1000)',
+'prefs-watchlist-token' => 'Δεῖγμα ἐφοροδιαλογῆς:',
+'prefs-misc' => 'Διάφορα',
+'prefs-resetpass' => 'Ἀλλάττειν σύνθημα',
+'prefs-email' => 'Ἐπιλογαὶ ἠλ-ταχυδρομείου',
+'prefs-rendering' => 'Ἐμφάνισις',
+'saveprefs' => 'Γράφειν',
+'resetprefs' => 'Ἐκκαθαίρειν ἀσώτους ἀλλαγάς',
+'restoreprefs' => 'Ἐπανίσταναι ἁπάσας τὰς προκαθωρισμένας ῥυθμίσεις',
+'prefs-editing' => 'Τὸ μεταγράφειν',
+'prefs-edit-boxsize' => 'Μέγεθος τῆς θυρίδος μεταγραφῆς.',
+'rows' => 'Σειραί:',
+'columns' => 'Στῆλαι:',
+'searchresultshead' => 'Ζητεῖν',
+'resultsperpage' => 'Ἀποτελέσματα ἀνά δέλτον:',
+'contextlines' => 'Σειραὶ ἀνά ἀποτέλεσμα:',
+'contextchars' => 'Συναφὲς κείμενον ἀνά σειράν:',
+'stub-threshold' => 'Ἄνω φράγμα διὰ τοῦς <a href="#" class="stub">συνδέσμους πρὸς λείμματα</a> (δυφία):',
+'recentchangesdays' => 'Αἱ ἡμέραι αἱ δεικτέαι ἐν ταῖς προσφάτοις ἀλλαγαῖς:',
+'recentchangesdays-max' => '(τὸ μέγιστον $1 {{PLURAL:$1|ἡμέρα|ἡμέραι}})',
+'recentchangescount' => 'Δεικτέος προκαθωρισμένως ἀριθμὸς μεταγραφῶν:',
+'prefs-help-recentchangescount' => 'Τόδε περιλαμβάνει τὰς προσφάτους ἀλλαγάς, τὸ ἱστορικόν, καὶ τὰς δέλτους καταλόγου.',
+'savedprefs' => 'Αἱ αἱρέσεις σου καταγεγραμμέναι εἰσίν.',
+'timezonelegend' => 'Χρονικὴ ζώνη:',
+'localtime' => 'Τοπικὴ ὥρα:',
+'timezoneuseserverdefault' => 'Χρῆσθαι τῆς ἐξυπηρετητικῆς μηχανῆς τῷ προκαθωρισμένῳ',
+'timezoneuseoffset' => 'Ἄλλον (καθορίζειν τὸ ἐκτόπισμα)',
+'timezoneoffset' => 'Ἐκτόπισμα¹:',
+'servertime' => 'Ὥρα ὑπολογιστικῆς ἐξυπηρετητικῆς μηχανῆς:',
+'guesstimezone' => 'Συμπλήρωσις μέσῳ τοῦ πλοηγητηρίου',
+'timezoneregion-africa' => 'Λιβύη',
+'timezoneregion-america' => 'Νεοικουμένη',
+'timezoneregion-antarctica' => 'Ἀνταρκτική',
+'timezoneregion-arctic' => 'Ἀρκτική',
+'timezoneregion-asia' => 'Ἀσία',
+'timezoneregion-atlantic' => 'Ἀτλαντικὸς Ὠκεανός',
+'timezoneregion-australia' => 'Νοτιονησία',
+'timezoneregion-europe' => 'Εὐρώπη',
+'timezoneregion-indian' => 'Ινδικόν Ωκεανός',
+'timezoneregion-pacific' => 'Εἰρηνικὸς Ὠκεανός',
+'allowemail' => "Ἐπιτρέπειν τὴν χρῆσιν ἠλ-ταχυδρομείου ὑφ'ἑτέρων χρωμένων",
+'prefs-searchoptions' => 'Ἐπιλογαὶ ζητήσεως',
+'prefs-namespaces' => 'Ὄνοματικὸς χῶρος',
+'defaultns' => 'Εἰ δὲ ἄλλως, ζήτησον ἐν τοῖσδε ὀνοματικοῖς χώροις:',
+'default' => 'προκαθωρισμένον',
+'prefs-files' => 'Ἀρχεῖα',
+'prefs-custom-css' => 'CSS παραγγελτόν',
+'prefs-custom-js' => 'JS παραγγελτόν',
+'prefs-emailconfirm-label' => 'Ἐπιβεβαίωσις ἠλ.-διευθύνσεως:',
+'prefs-textboxsize' => 'Μέγεθος τῆς θυρίδος μεταγραφῆς',
+'youremail' => 'Ἠλεκτρονικαὶ ἐπιστολαί:',
+'username' => 'Ὄνομα χρωμένου:',
+'uid' => 'Ταυτότης χρωμένου:',
+'prefs-memberingroups' => 'Μέλος {{PLURAL:$1|ομάδoς|ομάδων}}:',
+'prefs-registration' => 'Χρόνος ἐγγραφῆς:',
+'yourrealname' => 'Τὸ ἀληθὲς ὄνομα:',
+'yourlanguage' => 'Γλῶττά σου:',
+'yournick' => 'Προσωνυμία:',
+'prefs-help-signature' => 'Δεῖ τὰ σχόλια ἐπὶ τῶν δέλτων διαλέξεως ὑπογεγραμμένα εἶναι μετὰ τοῦ "<nowiki>~~~~</nowiki>" ὅπερ μετατραπήσεται εἰς τὴν ὑπογραφήν σου καὶ χρονοσφραφίδα τινά.',
+'badsig' => 'Ἄκυρος πρωτογενὴς ὑπογραφή. Ἔλεγξον τὰ HTML-σήμαντρα.',
+'badsiglength' => 'Ἡ ὑπογραφή σου πέρα τοῦ δέοντος μεγάλη ἐστίν.
+Οὐκ ἔξεστί ταύτῃ πλέον τῶν $1 {{PLURAL:$1|χαρακτῆρος|χαρακτῆρας}} ἔχει.',
+'yourgender' => 'Φῦλον:',
+'gender-unknown' => 'Ἀπροσδιόριστον',
+'gender-male' => 'Ἄρρεν',
+'gender-female' => 'Θῆλυ',
+'email' => 'ἠλεκτρονική ἐπιστολή',
+'prefs-help-realname' => 'Ἀληθὲς ὄνομα προαιρετικὸν ἐστίν.
+Εἰ εἰσάγεις τὸ ὄνομά σου, ἀναγνωριστέον ἔσται τὸ ἔργον σου.',
+'prefs-help-email-required' => 'Διεύθυνσις ἠλ-ταχυδρομείου προαπαιτεῖται.',
+'prefs-info' => 'Βασικὴ πύστις',
+'prefs-i18n' => 'Διεθνοποίησις',
+'prefs-signature' => 'Ὑπογραφή',
+'prefs-dateformat' => 'Μορφὴ ἡμερομηνίας',
+'prefs-timeoffset' => 'Διαφορὰ χρόνου',
+'prefs-advancedediting' => 'Προηγμέναι ἐπιλογαί',
+'prefs-advancedrc' => 'Προηγμέναι ἐπιλογαί',
+'prefs-advancedrendering' => 'Προηγμέναι ἐπιλογαί',
+'prefs-advancedsearchoptions' => 'Προηγμέναι ἐπιλογαί',
+'prefs-advancedwatchlist' => 'Προηγμέναι ἐπιλογαί',
+'prefs-display' => 'Ἐπίδειξις ἐπιλογῶν',
+'prefs-diffs' => 'Διαφοραί',
# User rights
-'userrights' => 'Διαχείρισις δικαιωμάτων χρωμένου', # Not used as normal message but as header for the special page itself
+'userrights' => 'Διαχείρισις δικαιωμάτων χρωμένου',
'userrights-lookup-user' => 'Χειρίζεσθαι ὁμάδας χρωμένου',
'userrights-user-editname' => 'Εἰσάγειν ὄνομἀ τι χρωμένου:',
'editusergroup' => 'Μεταγράφειν ὁμάδας χρωμένου',
@@ -1051,6 +1056,8 @@ $2',
'right-editprotected' => 'Μεταγράφειν φυλαττομένας δέλτους (ἄνευ διαδοχικῆς προστασίας)',
'right-editinterface' => 'Μεταγράφειν τὸ τοῦ χρωμένου περιβάλλον ἀλληλεπιδράσεως',
'right-editusercssjs' => 'Μεταγράφειν ἑτέρων χρωμένων CSS- καὶ JS-ἀρχεῖα',
+'right-editusercss' => 'Μεταγράφειν ἑτέρων χρωμένων CSS-ἀρχεῖα',
+'right-edituserjs' => 'Μεταγράφειν ἑτέρων χρωμένων JS-ἀρχεῖα',
'right-markbotedits' => "Σήμανσις μεταγραφῶν οἵπερ ἐπαναφέρθησαν ὡς μεταγραφῶν ὑπ' αὐτομάτων",
'right-noratelimit' => 'Μὴ ἐπηρεασμένη παρὰ ὁρίων ῥυθμοῦ',
'right-import' => 'Εἰσαγωγὴ δέλτων ἐξ ἑτέρων βίκι',
@@ -1066,6 +1073,7 @@ $2',
'right-siteadmin' => 'Φράττειν καὶ ἀποφράττειν τὴν βάσιν δεδομένων',
'right-reset-passwords' => 'Ἀναρρυθμίζειν συνθήματα ἄλλων χρωμένων',
'right-override-export-depth' => 'Ἐξάγειν δέλτους περιλαμβανομένων συνδεδεμένων δέλτων ἕως βάθος τι 5 ἐπιπέδων',
+'right-versiondetail' => 'Δεικνύναι τὰς ἐκτεταμένας πύστεις τῆς ἐκδόσεως λογισμικοῦ.',
# User rights log
'rightslog' => 'Κατάλογος δικαιωμάτων χρωμένων',
@@ -1115,6 +1123,15 @@ $2',
'recentchanges-legend' => 'Ἐπιλογαὶ προσφάτων μεταβολῶν',
'recentchangestext' => 'Ἀνιχνεύσειν τὰς πλείω πρόσφατους ἀλλαγὰς οῦ βίκι ἐν τῇδε τῇ δέλτῳ.',
'recentchanges-feed-description' => 'Παρακολουθεῖν τὰς πλείω προσφάτους ἀλλαγὰς τοῦ βίκι ἐν ταύτῃ περιλήψει.',
+'recentchanges-label-legend' => 'Ὑπόμνημα: $1.',
+'recentchanges-legend-newpage' => '$1 - νέα δέλτος',
+'recentchanges-label-newpage' => 'Ἥδε ἡ μεταγραφὴ ἐποίησεν νέαν δέλτον τινά',
+'recentchanges-legend-minor' => '$1 - μικρὰ μεταγραφή',
+'recentchanges-label-minor' => 'Ἥδε μικρὰ μεταγραφή ἐστιν',
+'recentchanges-legend-bot' => '$1 - μεταγραφὴ ὑπὸ αὐτομάτου τινός',
+'recentchanges-label-bot' => 'Ἥδε ἡ μεταγραφὴ ἐτελέσθη ὑπὸ αὐτομάτου τινός',
+'recentchanges-legend-unpatrolled' => '$1 - ἀφρούρητος μεταγραφή',
+'recentchanges-label-unpatrolled' => 'Ἥδε ἡ μεταγραφὴ μὴ ἐλεγμένη ἐστίν',
'rcnote' => "Κατωτέρω {{PLURAL:$1|ἐστὶ '''1''' ἀλλαγὴ|εἰσὶν αἱ τελευταῖαι '''$1''' ἀλλαγαὶ}} ἐν {{PLURAL:$2|τῇ τελευταίᾳ ἡμέρᾳ|ταῖς τελευταίαις '''$2''' ἡμέραις}}, ἕως καὶ $5, $4.",
'rcnotefrom' => "Ἰδοῦ αἱ ἀλλαγαὶ ἐκ τοῦ '''$2''' (ἕως τὸ '''$1''').",
'rclistfrom' => 'Δεικνύναι νέας ἀλλαγάς. Ἐκκίνησις ἐκ τοῦ $1',
@@ -1141,6 +1158,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Οἰκεῖαι μεταβολαί',
+'recentchangeslinked-feed' => 'Οἰκεῖαι μεταβολαί',
+'recentchangeslinked-toolbox' => 'Οἰκεῖαι μεταβολαί',
'recentchangeslinked-title' => 'Μεταβολαὶ οἰκεῖαι "$1"',
'recentchangeslinked-noresult' => 'Οὐδεμία ἀλλαγὴ τῶν συνδεδεμένων δέλτων ἐν τῇ δεδομένῃ χρονικῇ περιόδῳ.',
'recentchangeslinked-summary' => "Ὅδε ἐστὶ κατάλογος τῶν νέων μεταβόλων κατὰ δέλτους συνδεδεμένας σὺν δέλτῳ τινί (ἢ κατὰ μέλη κατηγορίας τινός).
@@ -1151,7 +1170,6 @@ $2',
# Upload
'upload' => 'Ἐπιφορτίζειν ἀρχεῖον',
'uploadbtn' => 'Φορτίον ἐντιθέναι',
-'reupload' => 'Ἀναεπιφορτίζειν',
'reuploaddesc' => 'Ἀκυροῦν τὴν ἐπιφόρτωσιν καὶ ἐπιστρέφειν εἰς τὸ πρότυπον ἐπιφορτώσεως',
'uploadnologin' => 'Μὴ συνδεδεμένος',
'uploadnologintext' => 'Δεῖ σε εἶναι [[Special:UserLogin|συνδεδεμένος]] πρὸ τοῦ ἐπιφορτίζειν ἀρχεῖα τινά.',
@@ -1193,7 +1211,6 @@ $2',
* Ὄνομα τοῦ πρὸς ἐπιφόρτισιν ἀρχείου: '''<tt>[[:$1]]</tt>'''
* Ὄνομα ὑπάρχοντος ἀρχείου: '''<tt>[[:$2]]</tt>'''
Ἐπίλεξον διάφορον ὄνομά τι.",
-'fileexists-thumb' => "<center>'''Ὑπάρχον ἀρχεῖον'''</center>",
'file-exists-duplicate' => 'Τὸ ἀρχεῖον ἐστὶ διπλότυπον τοῦ/τῶν ἑξῆς {{PLURAL:$1|ἀρχείου|ἀρχείων}}:',
'successfulupload' => 'Ἐπιφόρτισις ἐπιτυχής',
'uploadwarning' => 'Προμήνυσις ἐπιφορτίσεως',
@@ -1206,21 +1223,34 @@ $2',
Ἔλεγξον τὴν ῥύθμισιν file_uploads.',
'uploadscripted' => 'Τόδε τὸ ἀρχεῖον περιέχει κώδικα HTML ἢ κώδικα κειμένου οἵπερ ἐνδεχομένως λανθασμένως ἡρμηνευμένοι ὑπὸ τοῦ πλοηγητηρίου εἰσίν.',
'uploadvirus' => 'Τόδε τὸ ἀρχεῖον περιέχει ἰόν τινα! Ἀκρίβειαι: $1',
+'upload-source' => 'Ἀρχεῖον πηγή',
'sourcefilename' => 'Ὄνομα πηγαίου ἀρχείου:',
+'sourceurl' => 'URL πηγή:',
'destfilename' => 'Ὄνομα τελικοῦ ἀρχείου:',
'upload-maxfilesize' => 'Μέγιστον μέγεθος ἀρχείου: $1',
+'upload-description' => 'Περιγραφὴ ἀρχείου',
+'upload-options' => 'Ἐπιφόρτωσις ἐπιλογῶν',
'watchthisupload' => 'Ἐφορᾶν τόδε τὸ ἀρχεῖον',
-'upload-proto-error' => 'Ἐσφαλμένον πρωθυπόμνημα',
-'upload-proto-error-text' => 'Ἡ ἀπόμακρος ἐπιφόρτισις ἀπαιτεῖ URL ἔχον πρόθεμα <code>http://</code> ἢ <code>ftp://</code>.',
-'upload-file-error' => 'Ἐσώτερον σφάλμα',
-'upload-misc-error' => 'Ἄγνωτον σφάλμα ἐπιφορτίσεως',
+'upload-proto-error' => 'Ἐσφαλμένον πρωθυπόμνημα',
+'upload-proto-error-text' => 'Ἡ ἀπόμακρος ἐπιφόρτισις ἀπαιτεῖ URL ἔχον πρόθεμα <code>http://</code> ἢ <code>ftp://</code>.',
+'upload-file-error' => 'Ἐσώτερον σφάλμα',
+'upload-misc-error' => 'Ἄγνωτον σφάλμα ἐπιφορτίσεως',
+'upload-too-many-redirects' => 'Ὁ URL περιεῖχεν πέρα τοῦ δέοντος πολλὰς ἀνακατευθύνσεις',
+'upload-unknown-size' => 'Ἄγνωτον μέγεθος',
+'upload-http-error' => 'Συνέβη σφάλμα τι τῆς HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Οὐκ ἐπετράπη ἡ πρόσβασις',
+'img-auth-nofile' => 'Τὸ ἀρχεῖον "$1" οὐχ ὑπάρχει.',
+'img-auth-streaming' => 'Συνεχὴς ἀνάγνωσις "$1".',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL ἀπρόσβατος',
'upload-curl-error28' => 'Λῆξις χρόνου ἀναμονῆς τῆς ἐπιφορτίσεως',
'license' => 'Ἀδειοδότησις:',
+'license-header' => 'Ἀδειοδότησις',
'nolicense' => 'Οὐδὲν ἐπειλεγμένον',
'license-nopreview' => '(Προθεὠρησις μὴ διαθέσιμος)',
'upload_source_url' => ' (ἔγκυρος τίς, δημοσίως προσπελάσιμος URL)',
@@ -1241,6 +1271,7 @@ $2',
'listfiles_count' => 'Ἐκδόσεις',
# File description page
+'file-anchor-link' => 'Ἀρχεῖον',
'filehist' => 'Τοῦ ἀρχείου συγγραφή',
'filehist-help' => 'Πατήσατε ἐπὶ χρονολογίας/ὥρας τινὸς ἵνα ἴδητε τὸ ἀρχεῖον ὡς ἐμφανισθὲν ἐν ᾗπερ ὥρᾳ ᾗ.',
'filehist-deleteall' => 'διαγράφειν ἅπαντα',
@@ -1249,12 +1280,13 @@ $2',
'filehist-current' => 'Τρέχουσα',
'filehist-datetime' => 'Ἡμέρα/Ὥρα',
'filehist-thumb' => 'Εἰκόνιον',
-'filehist-thumbtext' => 'Εἰκόνιον διὰ τὴν ἔκδoσιν $1',
+'filehist-thumbtext' => 'Εἰκόνιον τῆς ἐκδόσεως ἐν $1',
'filehist-nothumb' => 'Οὐδὲν εἰκόνιον',
'filehist-user' => 'Χρώμενος',
'filehist-dimensions' => 'Διαστάσεις',
'filehist-filesize' => 'Μέγεθος ἀρχείου',
'filehist-comment' => 'Σχόλιον',
+'filehist-missing' => 'Ἀρχεῖον ἐκλιπόν',
'imagelinks' => 'Σύνδεσμοι ἀρχείων',
'linkstoimage' => '{{PLURAL:$1|Ἡ ἀκόλουθος|Αἱ ἀκόλουθοι $1}} {{PLURAL:$1|δέλτος σύνδεσμος|δέλτοι σύνδεσμοι $1}} πρὸς τήνδε τὴν εἰκόνα {{PLURAL:$1|ἐστίν|εἰσίν $1}}.',
'linkstoimage-more' => 'Πλείονες $1 {{PLURAL:$1|συνδέσμου|συνδέσμων}} συνδέονται μετὰ τοῦδε τοῦ ἀρχείου.
@@ -1264,15 +1296,12 @@ $2',
'morelinkstoimage' => 'Ὁρᾶν [[Special:WhatLinksHere/$1|πλείονας συνδέσμους]] πρὸς τήνδε τὴν δέλτον.',
'redirectstofile' => '{{PLURAL:$1|Τὸ ἀκόλουθον ἀρχεῖον ἀναδιευθύνεται|$1 Τὰ ἀκόλουθα ἀρχεῖα ἀναδιευθύνονται}} πρὸς τόδε τὸ ἀρχεῖον:',
'duplicatesoffile' => '{{PLURAL:$1|Τὸ ἀκόλουθον ἀρχεῖον διπλότυπον ἐστὶ|$1 Τὰ ἀκόλουθα ἀρχεῖα διπλότυπα εἰσὶ}} τοῦδε τοῦ ἀρχείου ([[Special:FileDuplicateSearch/$2|πλείω]]):',
-'sharedupload' => 'Τόδε τὸ ἀρχεῖον ἀπὸ τὴν $1 ἐστὶ καὶ δύνασαι χρῆσθαι τούτῳ εἰς ἕτερα σχέδια ἐξἴσου.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ἴδε τὴν δἐλτον $1 διὰ πλείονας πύστεις.',
-'shareduploadwiki-desc' => 'Ἡ περιγραφὴ τῆς ἑῆς $1 κάτωθι δείκνυται.',
-'shareduploadwiki-linktext' => 'δέλτου περιγραφῆς ἀρχείου',
-'noimage' => 'Οὐδέν ἐστι ἀρχεῖον οὕτως ὀνομαστόν, ἀλλὰ ἔξεστί σοι $1.',
-'noimage-linktext' => 'Ἐντιθέναι τι',
+'sharedupload' => 'Τόδε τὸ ἀρχεῖον ἀπὸ τὴν $1 ἐστὶ καὶ δύνασαι χρῆσθαι τούτῳ εἰς ἕτερα σχέδια ἐξἴσου.',
+'filepage-nofile' => 'Οὐδέν ἐστὶν ἀρχεῖον ἔχον τόδε τὸ ὄνομα.',
+'filepage-nofile-link' => 'Οὐχ ὑπάρχει ἀρχεῖον ὀνομασθὲν τοιούτως, ἀλλὰ ἔξεστί σοι [$1 ἐπιφορτίσειν τόδε] πιέσας ὧδε.',
'uploadnewversion-linktext' => 'Ἐπιφορτίζειν νέαν ἐκδοσίν τινα τοῦδε τοῦ ἀρχείου',
-'shared-repo-from' => 'ἀπὸ $1', # $1 is the repository name
-'shared-repo' => 'διαμεμοιρασμένον ἀποθηκευτήριόν τι', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'ἀπὸ $1',
+'shared-repo' => 'διαμεμοιρασμένον ἀποθηκευτήριόν τι',
# File reversion
'filerevert' => 'Ἐπαναφέρειν $1',
@@ -1319,7 +1348,7 @@ $2',
# Random page
'randompage' => 'Δέλτος τυχοῦσα',
-'randompage-nopages' => 'Οὐδεμία δέλτος ἐν τῷ ὀνοματείῳ "$1".',
+'randompage-nopages' => 'Οὐδεμία δέλτος ἐν {{PLURAL:$2|τῷ ὀνοματείῳ|τοῖς ὀνοματείοις}} "$1".',
# Random redirect
'randomredirect' => 'Τυχαία ἀναδιεύθυνσις',
@@ -1331,6 +1360,7 @@ $2',
'statistics-header-edits' => 'Μεταγράφειν τὰ στατιστικά',
'statistics-header-views' => 'Ὁρᾶν τὰ στατιστικά',
'statistics-header-users' => 'Χρωμένου στατιστικά',
+'statistics-header-hooks' => 'Ἀλλα στατιστικά',
'statistics-articles' => 'Δέλτοι περιεχομένων',
'statistics-pages' => 'Δέλτοι',
'statistics-pages-desc' => 'Ἅπασαι αἱ δέλτοι ἐν τῷ βίκι, περιλαμβανομένων τῶν δέλτων διαλέξεων, τῶν ἀναδιευθύνσεων, κτλ.',
@@ -1355,8 +1385,8 @@ $2',
'brokenredirects' => 'Ἀναδιευθύνσεις οὐκέτι προὔργου οὖσαι',
'brokenredirectstext' => 'Aἱ κάτωθι ἀνακατευθύνσεις ἄγουσι πρὸς μὴ ὑπαρκτοὺς δέλτους:',
-'brokenredirects-edit' => '(μεταγράφειν)',
-'brokenredirects-delete' => '(διαγράφειν)',
+'brokenredirects-edit' => 'μεταγράφειν',
+'brokenredirects-delete' => 'διαγράφειν',
'withoutinterwiki' => 'Δέλτοι ἄνευ γλωσσικῶν συνδέσμων',
'withoutinterwiki-summary' => 'Αἱ κάτωθι δέλτοι οὐ συνδέουσι πρὸς ἀλλογλώσσους ἐκδόσεις:',
@@ -1459,8 +1489,9 @@ $2',
'special-categories-sort-abc' => 'ἀλφαβητικὴ ταξινόμησις',
# Special:DeletedContributions
-'deletedcontributions' => 'Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου',
-'deletedcontributions-title' => 'Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου',
+'deletedcontributions' => 'Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου',
+'deletedcontributions-title' => 'Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου',
+'sp-deletedcontributions-contribs' => 'ἔρανoς',
# Special:LinkSearch
'linksearch' => 'Ἐξώτεροι ἱστοσύνδεσμοι',
@@ -1475,6 +1506,15 @@ $2',
'listusersfrom' => 'Δεικνύναι χρωμένους (γραμμαὶ ἐκκινουμέναι ἐκ/ἐξ):',
'listusers-submit' => 'Ἐμφανίζειν',
'listusers-noresult' => 'Οὐδεὶς χρώμενος εὑρεθείς.',
+'listusers-blocked' => '(πεφραγμένος)',
+
+# Special:ActiveUsers
+'activeusers' => 'Κατάλογος ἐνεργῶν χρωμένων',
+'activeusers-count' => '$1 {{PLURAL:$1|μεταγραφή|μεταγραφαὶ}} κατὰ {{PLURAL:$3|τὴν πρόσφατον ἡμέραν|τὰς προσφάτους $3 ἡμέρας}}',
+'activeusers-from' => 'Δεικνύειν χρωμένους ἐκκινήσει ἐκ:',
+'activeusers-hidebots' => 'Κρύπτειν αὐτόματα',
+'activeusers-hidesysops' => 'Κρύπτειν ἐπιτρόπους',
+'activeusers-noresult' => 'Οὐδεὶς χρώμενος εὑρέθη.',
# Special:Log/newusers
'newuserlogpage' => 'Κατάλογος ποιήσεων λογισμῶν.',
@@ -1485,15 +1525,19 @@ $2',
'newuserlog-autocreate-entry' => 'Λογισμὸς ποιηθεὶς αὐτομάτως',
# Special:ListGroupRights
-'listgrouprights' => 'Δικαιώματα ὁμάδος χρωμένου',
-'listgrouprights-group' => 'Ὁμάς',
-'listgrouprights-rights' => 'Δικαιώματα',
-'listgrouprights-helppage' => 'Help:Δικαιώματα ὁμάδων',
-'listgrouprights-members' => '(διαλογὴ μελῶν)',
-'listgrouprights-addgroup' => 'Δυναμένη ἡ πρόσθεσις {{PLURAL:$2|τῆς ὁμάδος|τῶν ὁμάδων}}: $1',
-'listgrouprights-removegroup' => 'Δυναμένη ἡ ἀφαίρεσις {{PLURAL:$2|τῆς ὁμάδος|τῶν ὁμάδων}}: $1',
-'listgrouprights-addgroup-all' => 'Δυναμένη ἡ πρόσθεσις ἁπασῶν τῶν ὁμάδων',
-'listgrouprights-removegroup-all' => 'Δυναμένη ἡ ἀφαίρεσις ἁπασῶν τῶν ὁμάδων',
+'listgrouprights' => 'Δικαιώματα ὁμάδος χρωμένου',
+'listgrouprights-group' => 'Ὁμάς',
+'listgrouprights-rights' => 'Δικαιώματα',
+'listgrouprights-helppage' => 'Help:Δικαιώματα ὁμάδων',
+'listgrouprights-members' => '(διαλογὴ μελῶν)',
+'listgrouprights-addgroup' => 'Δυναμένη ἡ πρόσθεσις {{PLURAL:$2|τῆς ὁμάδος|τῶν ὁμάδων}}: $1',
+'listgrouprights-removegroup' => 'Δυναμένη ἡ ἀφαίρεσις {{PLURAL:$2|τῆς ὁμάδος|τῶν ὁμάδων}}: $1',
+'listgrouprights-addgroup-all' => 'Δυναμένη ἡ πρόσθεσις ἁπασῶν τῶν ὁμάδων',
+'listgrouprights-removegroup-all' => 'Δυναμένη ἡ ἀφαίρεσις ἁπασῶν τῶν ὁμάδων',
+'listgrouprights-addgroup-self' => 'Προσθέτειν {{PLURAL:$2|ὁμάδα|ὁμάδας}} εἰς τὸν λογισμόν μου: $1',
+'listgrouprights-removegroup-self' => 'Ἀφαιρεῖν {{PLURAL:$2|ὁμάδα|ὁμάδας}} ἐκ τοῦ λογισμοῦ μου: $1',
+'listgrouprights-addgroup-self-all' => 'Προστιθέναι ἁπάσας τὰς ὁμάδας τῷ λογισμῷ ἐμοῦ τοῦ ἰδίου',
+'listgrouprights-removegroup-self-all' => 'Ἀφαιρεῖν ἁπάσας τὰς ὁμάδας ἀπὸ τὸν λογισμὸν ἐμοῦ τοῦ ἰδίου',
# E-mail user
'mailnologin' => 'Οὐδεμία διεύθυνσις παραλήπτου',
@@ -1565,23 +1609,23 @@ $2',
'enotif_body' => 'Φίλτατε $WATCHINGUSERNAME,
-Ἡ τοῦ {{SITENAME}} δέλτος $PAGETITLE $CHANGEDORCREATED ἐστὶ τῇ $PAGEEDITDATE ὑπὸ τοῦ $PAGEEDITOR, ἴδε $PAGETITLE_URL διὰ τὴν παροῦσαν ἔκδοσιν.
+Ἡ τοῦ {{SITENAME}} δέλτος $PAGETITLE $CHANGEDORCREATED ἐστὶ τῇ $PAGEEDITDATE ὑπὸ τοῦ $PAGEEDITOR, $PAGETITLE_URL.
$NEWPAGE
-Σύνοψις μεταγραφέως: $PAGESUMMARY $PAGEMINOREDIT
+Σύνοψις: $PAGESUMMARY $PAGEMINOREDIT
Κοινωνῆσαι τὸν μεταγραφέα:
-ἠ-ταχυδρομεῖον: $PAGEEDITOR_EMAIL
-ϝίκι: $PAGEEDITOR_WIKI
+ἠλ.-ταχυδρομεῖον: $PAGEEDITOR_EMAIL
+βίκι: $PAGEEDITOR_WIKI
Οὐχ ὑπάρξουσιν ἕτεραι εἰδήσεις ἐν περιπτώσει περαιτέρω ἀλλαγαὶ προκύψουσι εἰ μὴ σὺ ἐπισκεφθεὶς τὴν δέλτον ᾖς. Δύνασαι ἐπἴσης ἀναρρυθμίσειν τὰ σήματα εἰδήσεως διὰ ἅπασας τὰς ἐφορωμένας ὑπἐσοῦ δέλτους
Τοῦ φιλικοῦ σου {{SITENAME}} τὸ σύστημα εἰδήσεως
--
-Διὰ τὸ ἀλλάξειν τὰς ῥυθμίσεις τὴς ἐφοροδιαλογῆς σου, ἐπίσκεψον
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Διὰ τὸ ἀλλάξειν τὰς ῥυθμίσεις τὴς ἐφοροδιαλογῆς σου, ἐπίσκεψαι τὸ
+{{fullurl:{{#special:Watchlist}}/edit}}
Ἀνάδρασις καὶ περαιτέρω βοήθεια:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1595,9 +1639,10 @@ $NEWPAGE
'exblank' => 'δέλτος κενὴ ἦν',
'delete-confirm' => 'Διαγράφειν "$1"',
'delete-legend' => 'Διαγράφειν',
-'historywarning' => 'Προσοχή: Ἡ δέλτος ἥντινα βούλεσαι διαγράψειν ἔχει ἱστορίαν:',
+'historywarning' => "'''Προσοχή:''' Ἡ δέλτος ἥντινα βούλεσαι διαγράψειν ἔχει ἱστορικὸν μετὰ προσεγγιστικῶς $1 {{PLURAL:$1|ἐπιθεωρήσεως|ἐπιθεωρήσεων}}:",
'confirmdeletetext' => 'Βούλεσαι διαγράψειν ὁριστικῶς ἐκ τῆς βάσεως δεδομένων δέλτον τίνα (ἢ εἰκόνα τινα) μετὰ τῆς ἐῆς ἱστορίας. Παρακαλοῦμεν ὑμᾶς ἵνα ἐπιβεβαιώσητε τὴν θέλησιν ὑμῶν περὶ τοῦ αὐτὸ πράττειν καὶ περὶ τῆς ἀντιλήψεως τῶν συνεπειῶν, και περὶ τοῦ πράττειν ὑμῶν συμφώνως τῶν [[{{MediaWiki:Policy-url}}|κανόνων]].',
'actioncomplete' => 'Τέλειον τὸ ποιούμενον',
+'actionfailed' => 'Δράσις ἀνεπιτυχής',
'deletedtext' => 'Τὸ "<nowiki>$1</nowiki>" διεγράφη.
Ἴδε τὸ $2 διὰ μητρῷόν τι προσφάτων διαγραφῶν.',
'deletedarticle' => 'Ἐσβέσθη ἡ δέλτος "[[$1]]"',
@@ -1622,8 +1667,8 @@ $NEWPAGE
'rollbackfailed' => 'Ἀναστροφὴ μὴ ἐπιτυχής',
'cantrollback' => 'Μὴ δυνατὴ ἡ ἀναστροφὴ·
ὁ ὕστατος ἐρανιστὴς ἐστὶ μόνον δημιουργὸς τῆσδε τῆς δέλτου.',
-'editcomment' => "Ἡ σύνοψις τῆς μεταγραφῆς ἦν: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ἐπαναφέρειν μεταγραφὰς ὑπὸ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) εἰς τὴν ἐσχάτην ἔκδοσιν ὑπὸ [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Ἡ σύνοψις τῆς μεταγραφῆς ἦν: \"''\$1''\".",
+'revertpage' => 'Ἐπαναφέρειν μεταγραφὰς ὑπὸ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) εἰς τὴν ἐσχάτην ἔκδοσιν ὑπὸ [[User:$1|$1]]',
'rollback-success' => 'Ἀναστρέφειν μεταγραφὰς ὑπὸ $1;
ἐπαναφορὰ εἰς τὴν προτέραν ἔκδοσιν ὑπὸ $2.',
@@ -1640,7 +1685,7 @@ $NEWPAGE
'protectexpiry' => 'Λήγει:',
'protect_expiry_invalid' => 'Ἄκυρος χρόνος λήξεως.',
'protect_expiry_old' => 'Χρόνος λήξεως ἐν τῷ παρελθόντι ἐστίν.',
-'protect-unchain' => 'Δικαιώματα μετακινήσεως ἐκκλειδοῦν',
+'protect-unchain-permissions' => 'Ἀναίρεσις ἀποκλεισμοῦ περαιτέρω ἐπιλογῶν περιφρουρήσεως',
'protect-text' => "Ὁρᾶν τε καὶ ἀλλάττειν δύνασθε τὴν κλίμακα φυλάξεως ἐνθάδε διὰ τὴν δέλτον '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Ὁ λογισμός σου οὐκ ἔχει ἄδειαν ἀλλαγῆς τῆς κλίμακος φυλάξεως δέλτων.
Ἐνθάδε εἰσὶν αἱ τρέχουσαι ῥυθμίσεις διὰ τὴν δέλτον '''$1''':",
@@ -1665,7 +1710,7 @@ $NEWPAGE
** Ἀντιπαραγωγικοὶ πόλεμοι μεταγραφῶν
** Δἐλτος ὑψηλῆς κυκλοφορίας',
'protect-edit-reasonlist' => 'Μεταγράφειν τὰς αἰτίας προστασίας',
-'protect-expiry-options' => '1 ὥρα:1 hour,1 ἡμέρα:1 day,1 ἑβδομάς:1 week,2 ἑβδομάδες:2 weeks,1 μήν:1 month,3 μῆνες:3 months,6 μῆνες:6 months,1 ἔτος:1 year,ἐπἄπειρον:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ὥρα:1 hour,1 ἡμέρα:1 day,1 ἑβδομάς:1 week,2 ἑβδομάδες:2 weeks,1 μήν:1 month,3 μῆνες:3 months,6 μῆνες:6 months,1 ἔτος:1 year,ἐπἄπειρον:infinite',
'restriction-type' => 'Ἐξουσία:',
'restriction-level' => 'Κλῖμαξ περιορισμοῦ:',
'minimum-size' => 'Ἐλάχιστον μέγεθος',
@@ -1694,6 +1739,7 @@ $NEWPAGE
'undelete-nodiff' => 'Οὐδεμία προηγηθεῖσα ἀναθεώρησις εὑρέθη.',
'undeletebtn' => 'Ἀνορθοῦν',
'undeletelink' => 'ὁρᾶν/ἐπανίσταναι',
+'undeleteviewlink' => 'ὁρᾶν',
'undeletereset' => 'Ἐπαναθέτειν',
'undeleteinvert' => 'Ἀναστρέφειν τὴν ἐπιλογήν',
'undeletecomment' => 'Σχόλιον:',
@@ -1727,7 +1773,7 @@ $1',
'contributions-title' => 'Ἔρανοι χρωμένου διὰ τὸ $1',
'mycontris' => 'Ὁ ἔρανός μου',
'contribsub2' => 'Πρὸς $1 ($2)',
-'nocontribs' => 'Οὐδεμία ἀλλαγὴ ηὑρέθη προσήκουσα εἰς τάδε τὰ κριτήρια.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Οὐδεμία ἀλλαγὴ ηὑρέθη προσήκουσα εἰς τάδε τὰ κριτήρια.',
'uctop' => '(ἄκρον)',
'month' => 'Μήν:',
'year' => 'Ἔτος:',
@@ -1736,7 +1782,10 @@ $1',
'sp-contributions-newbies-sub' => 'Ἔρανοι νέων χρωμένων',
'sp-contributions-newbies-title' => 'Ἔρανοι χρωμένου διὰ νέους λογισμούς',
'sp-contributions-blocklog' => 'Τὰ ἀποκλῄειν',
+'sp-contributions-deleted' => 'Διαγράψαι τοὺς ἐράνους τοῦ χρωμένου',
'sp-contributions-logs' => 'ἱστορικά',
+'sp-contributions-talk' => 'Διαλέγεσθαι',
+'sp-contributions-userrights' => 'Διαχείρισις δικαιωμάτων χρωμένου',
'sp-contributions-search' => 'Ζητεῖν ἐράνους',
'sp-contributions-username' => 'IP-διεύθυνσις ἢ ὄνομα χρωμένου:',
'sp-contributions-submit' => 'Ζητεῖν',
@@ -1762,6 +1811,7 @@ $1',
# Block/unblock
'blockip' => 'Ἀποκλῄειν τόνδε τὸν χρώμενον',
+'blockip-title' => 'Φράττειν χρώμενον',
'blockip-legend' => 'Φράττειν χρώμενον',
'ipaddress' => 'Διεύθυνσις IP:',
'ipadressorusername' => 'Διεύθυνσις IP ἢ ὄνομα χρωμένου:',
@@ -1781,7 +1831,7 @@ $1',
'ipbemailban' => 'Ἀποτρέπειν τὴν ἀποστολὴν ἠλ-ἀγγελίας ὑπὸ τοῦ χρωμένου',
'ipbsubmit' => 'Φράττειν τόνδε τὸν χρώμενον',
'ipbother' => 'Ἄλλη ὥρα:',
-'ipboptions' => '2 ὥραι:2 hours,1 ἡμέρα:1 day,3 ἡμέραι:3 days,1 ἑβδομάς:1 week,2 ἑβδομάδες:2 weeks,1 μήν:1 month,3 μῆνες:3 months,6 μῆνες:6 months,1 ἔτος:1 year,ἐπἄπειρον:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ὥραι:2 hours,1 ἡμέρα:1 day,3 ἡμέραι:3 days,1 ἑβδομάς:1 week,2 ἑβδομάδες:2 weeks,1 μήν:1 month,3 μῆνες:3 months,6 μῆνες:6 months,1 ἔτος:1 year,ἐπἄπειρον:infinite',
'ipbotheroption' => 'ἄλλη',
'ipbotherreason' => 'Πρόσθετος/ἄλλη αἰτία:',
'ipbhidename' => 'Κρύπτειν τὸ ὄνομα χρωμένου ἐν μεταγραφαῖς καὶ διαλογαῖς',
@@ -1807,9 +1857,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 προσωριναὶ φραγαί',
'ipblocklist-sh-addressblocks' => '$1 μεμονωμέναι φραγαὶ IP',
'ipblocklist-submit' => 'Ζητεῖν',
+'ipblocklist-localblock' => 'Τοπικὴ φραγή',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ἑτέρα φραγή|Ἕτεραι φραγαί}}',
'blocklistline' => '$3 ἐφράχθη ὑπὸ $1, $2 ($4)',
'infiniteblock' => 'ἄπειρον',
-'expiringblock' => 'λῆξαν $1',
+'expiringblock' => 'λῆξαν ἔσεται ἐν $1 ἐν $2',
'anononlyblock' => 'ἀνωνύμους μόνον',
'noautoblockblock' => 'αὐτόματος φραγὴ κατεσταλμένη',
'createaccountblock' => 'ποίησις λογισμοῦ πεφραγμένη',
@@ -1822,7 +1874,6 @@ $1',
'change-blocklink' => 'ἀλλαγὴ φραγῆς',
'contribslink' => 'ἔρανοι',
'blocklogpage' => 'Αἱ ἀποκλῄσεις',
-'blocklog-fulllog' => 'Κατάλογος πλήρης τῶν φραγῶν',
'blocklogentry' => 'Κεκλῃμένος [[$1]] μέχρι οὗ $2 $3',
'reblock-logentry' => 'ἤλλαξεν τὰς ῥυθμίσεις φραγῆς διὰ τὸν/τὴν [[$1]] μετὰ χρόνου λήξεως $2 $3',
'unblocklogentry' => '$1 ἀποπεφραγμέν-ος/η',
@@ -1838,6 +1889,7 @@ $1',
'ipb_already_blocked' => '"$1" ἤδη πεφραγμέν-ος/-η ἐστίν',
'ipb-needreblock' => '== Ἤδη ἀποκεκλῃσμένος==
Ἤδη ἀποκεκλῃσμένος ὁ $1 ἐστίν. Βούλεσαι ἀλλάξειν τὰς ῥυθμίσεις;',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Ἑτέρα φραγή|Ἕτεραι φραγαί}}',
'ipb_cant_unblock' => 'Σφάλμα: Ἡ φραγὴ τῆς ID $1 οὐχ εὑρέθη.
Εἰκότως ἀποπεφραγμένη ἤδη ἐστίν.',
'ip_range_invalid' => 'Ἄκυρον IP-εὖρος.',
@@ -1889,7 +1941,7 @@ $1',
'move-watch' => 'Ἑφορᾶν τήνδε τὴν δέλτον',
'movepagebtn' => 'Κινεῖν τὴν δέλτον',
'pagemovedsub' => 'Κεκίνηται ἡ δέλτος',
-'movepage-moved' => '\'\'\'"$1" κεκίνηται πρὸς "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" κεκίνηται πρὸς "$2"\'\'\'',
'movepage-moved-redirect' => 'Ἁναδιεύθυνσίς τις ἐποιήθη.',
'movepage-moved-noredirect' => 'Ποίησις ἀνακατευθύνσεως τινὸς ἐκεκώλυτο.',
'articleexists' => 'Εἶτε ἢ ἐστὶ δέλτος τις οὕτως ὀνομαστὴ ἢ ἄκυρον ἐστι τὸ ἐπειλεγμένον ὄνομα.
@@ -1931,6 +1983,8 @@ $1',
'imageinvalidfilename' => 'Τὸ ὄνομα ἀρχείου - στόχος ἄκυρον ἐστίν',
'fix-double-redirects' => 'Ἐνημέρωσις πάσας ἀνακατευθύνσεως ἥπερ ὑποδεικνύει τὴν ἀρχικὴν ἐπιγραφήν',
'move-leave-redirect' => 'Παρέχειν ἐμπρόσθιον ἀναδιεύθυνσίν τινα',
+'protectedpagemovewarning' => "'''Εἴδησις:''' Ἥδε ἡ δέλτος πέφρακται οὕτως ὧστε ἔξεστι μόνον τοῖς χρωμένοις τοῖς ἔχουσι προνόμια ἐπιτρόπου ταύτην μετακινήσειν.",
+'semiprotectedpagemovewarning' => "'''Ἐπισημείωμα:''' Ἥδε ἡ δέλτος πέφρακται οὕτως ὧστε ἔξεστι μόνον τοῖς χρωμένοις τοῖς ἐγγεγραμμένοις ταύτην μετακινήσειν.",
# Export
'export' => 'Δέλτους ἐξάγειν',
@@ -1952,13 +2006,19 @@ $1',
'export-pagelinks' => 'Συμπερίληψις συνδεδεμένων δέλτων εἰς βάθος:',
# Namespace 8 related
-'allmessages' => 'Μυνήματα συστήματος',
-'allmessagesname' => 'Ὄνομα',
-'allmessagesdefault' => 'Προεπειλεγμένον κείμενον',
-'allmessagescurrent' => 'Τρέχον κείμενον',
-'allmessagesnotsupportedDB' => "Ἥδε ἡ δέλτος ἄχρηστός ἐστὶν ἐπεί τὸ '''wgUseDatabaseMessages''' ἀνενεργὸν κατέστη.",
-'allmessagesfilter' => 'Διηθητήριον ὀνόματος ἀγγελίας:',
-'allmessagesmodified' => 'Δεικνύναι μόνον τὰ μεταβεβλημένα',
+'allmessages' => 'Μυνήματα συστήματος',
+'allmessagesname' => 'Ὄνομα',
+'allmessagesdefault' => 'Προεπειλεγμένον κείμενον',
+'allmessagescurrent' => 'Τρέχον κείμενον',
+'allmessagesnotsupportedDB' => "Ἥδε ἡ δέλτος ἄχρηστός ἐστὶν ἐπεί τὸ '''wgUseDatabaseMessages''' ἀνενεργὸν κατέστη.",
+'allmessages-filter-legend' => 'Διηθητήριον',
+'allmessages-filter' => 'Ταξινόμησις κατὰ κατάστασιν προσαρμογῆς:',
+'allmessages-filter-unmodified' => 'Μὴ τροποποιηθέν',
+'allmessages-filter-all' => 'Ἅπαντα',
+'allmessages-filter-modified' => 'Τροποποιηθέν',
+'allmessages-prefix' => 'Ταξινόμησις κατά πρόθεμα:',
+'allmessages-language' => 'Γλῶττα:',
+'allmessages-filter-submit' => 'Ἰέναι',
# Thumbnails
'thumbnail-more' => 'Αὐξάνειν',
@@ -1968,6 +2028,9 @@ $1',
'djvu_no_xml' => 'Ἀδύνατον τὸ προσκομίζειν τὴν XML διὰ τὸ DjVu-ἀρχεῖον',
'thumbnail_invalid_params' => 'Ἄκυροι παράμετροι εἰκονίων',
'thumbnail_dest_directory' => 'Ἀδύνατος ἡ ποίησις ἀρχειοκαταλόγου προορισμοῦ',
+'thumbnail_image-type' => 'Τύπος εἰκόνος μὴ ὑποστηριζόμενος',
+'thumbnail_gd-library' => 'Μὴ πλήρης διαμόρφωσις βιβλιοθήκης GD: ὑπολείπουσα συνάρτησις $1',
+'thumbnail_image-missing' => 'Ἀρχεῖον καταφανῶς ἐκλιπόν: $1',
# Special:Import
'import' => 'Εἰσάγειν δέλτους',
@@ -2029,6 +2092,7 @@ $1',
Ἔξεστί σοι τὴν πηγήν ἐπισκοπεῖν.',
'tooltip-ca-history' => 'Προηγούμεναι ἐκδόσεις τῆσδε τῆς δέλτου',
'tooltip-ca-protect' => 'Ἀμύνειν τῇδε τῇ δέλτῳ',
+'tooltip-ca-unprotect' => 'Μὴ φυλάττειν τήνδε δέλτον',
'tooltip-ca-delete' => 'Διαγράφειν τήνδε τὴν δέλτον',
'tooltip-ca-undelete' => 'Ἀποκαθιστάναι τὰς ἀλλαγὰς τὰς τετελεσμένας ἐν τῇδε τῇ δέλτῷ πρὸ τῆς ἑὴς διαγρφῆς.',
'tooltip-ca-move' => 'Κινεῖν τήνδε τὴν δέλτον',
@@ -2039,6 +2103,7 @@ $1',
'tooltip-search-fulltext' => 'Ζητεῖν ἁπάσας τᾶς δέλτους τὰς περιέχουσας τόδε τὸ κείμενον',
'tooltip-p-logo' => 'Πορεύεσθαι πρὸς τὴν Κυρίαν Δέλτον',
'tooltip-n-mainpage' => 'Πορεύεσθαι πρὸς τὴν Κυρίαν Δέλτον',
+'tooltip-n-mainpage-description' => 'Ἐπίσκεψαι τὴν κυρίαν δέλτον',
'tooltip-n-portal' => 'Περὶ τούτου τοῦ ἐγχειρήματος καὶ τῶν οἵων ἔξεστί σoι πράττεις, πού πάρεστί τινα εἶναι',
'tooltip-n-currentevents' => 'Πληροφορίαι ἐπὶ ἐπικαίρων γεγονότων',
'tooltip-n-recentchanges' => 'Κατάλογος κατὰ πᾶσας τὰς νέας μεταβολάς.',
@@ -2084,10 +2149,12 @@ $1',
# Attribution
'anonymous' => '{{PLURAL:$1|Ἀνώνυμος χρώμενος|Ἀνώνυμοι χρώμενοι}} τῷ {{SITENAME}}',
'siteuser' => 'Χρώμενος τῷ {{SITENAME}} $1',
-'lastmodifiedatby' => 'Ἥδε ἡ δἐλτος ἠλλάχθη ὑστάτως $2, $1 ἐκ τοῦ $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'ἀνώνυμος χρώμενος $1 τοῦ {{SITENAME}}',
+'lastmodifiedatby' => 'Ἥδε ἡ δἐλτος ἠλλάχθη ὑστάτως $2, $1 ἐκ τοῦ $3.',
'othercontribs' => 'Βεβασισμένον τῷ ἔργῳ τοῦ/τῶν $1.',
'others' => 'ἄλλοι',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|χρωμένου|χρωμένων}} τῷ $1',
+'anonusers' => '{{PLURAL:$2|ἀνώνυμος χρώμενος|ἀνώνυμοι χρώμενοι}} $1 τοῦ {{SITENAME}}',
'creditspage' => 'Διαπιστεύσεις δέλτου',
'nocredits' => 'Οὐδεμία πύστις περὶ πιστώσεως ἐράνου ἐν τῇδε τῇ δέλτῳ ἐστίν.',
@@ -2111,11 +2178,24 @@ $1',
'mw_math_modern' => 'Προτεινομένη διὰ σύγχρονα πλοηγητήρια',
'mw_math_mathml' => 'MathML εἰ δυνατόν (πειραστικόν)',
+# Math errors
+'math_failure' => 'Λεξιανάλυσις ἀποτετυχηκυῖα',
+'math_unknown_error' => 'ἄγνωστον σφάλμα',
+'math_unknown_function' => 'ἄγνωστος ἐνέργεια',
+'math_lexing_error' => 'σφάλμα λεξικῆς ἀναλύσεως',
+'math_syntax_error' => 'σφάλμα συντάξεως',
+'math_image_error' => 'Ἡ PNG-μετατροπὴ ἀπετεύχθη·
+ἔλεγξον τὴν ὀρθὴν ἐγκατάστασιν τῶν latex, dvips, gs, καὶ μετάτρεψον',
+'math_bad_tmpdir' => 'Ἀδύνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων ἢ ἡ ἐγγραφὴ ἐν προσκαίρῳ ἀρχειοκαταλόγῳ',
+'math_bad_output' => 'Ἀδύνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων ἢ ἡ ἐγγραφὴ ἐν ἀρχειοκαταλόγῳ ἐξόδου',
+'math_notexvc' => 'Ἐλλεῖπον ἐκτελέσιμον texvc;
+ἴδε math/README διὰ τὸ διαμορφοῦν.',
+
# Patrolling
'markaspatrolleddiff' => 'Σεσημασμένη ὡς φρουρουμένη',
'markaspatrolledtext' => 'Σημαίνειν τήνδε τὴν δέλτον ὡς φρουρούμενη',
'markedaspatrolled' => 'Σεσημασμένη ὡς φρουρουμένη',
-'markedaspatrolledtext' => 'Ἡ ἐπειλεγμένη ἀναθεώρησις σεσήμασται ὡς περιπολουμένη.',
+'markedaspatrolledtext' => 'Ἡ ἐπειλεγμένη ἀναθεώρησις τῆς [[:$1]] σεσήμασται ὡς περιπολουμένη.',
'rcpatroldisabled' => 'Περίπολος Προσφάτων Μεταβολῶν ἀπενεργοποιηθεῖσα',
'rcpatroldisabledtext' => 'Τὸ χαρακτηριστικὸν Περιπολία Προσφάτων Μεταβολῶν νῦν ἐστι ἀπενεργοποιηθέν.',
'markedaspatrollederror' => 'Μὴ δυνατὴ ἡ σήμανσις περιπολήσεως',
@@ -2143,10 +2223,8 @@ $1',
'previousdiff' => '← Ἡ μεταβολὴ ἡ προτέρα',
'nextdiff' => 'Ἡ μεταβολὴ ἡ νεωτέρα →',
-# Visual comparison
-'visual-comparison' => 'Ὀπτικὴ σύγκρισις',
-
# Media information
+'imagemaxsize' => "Ὅριον μεγέθους εἰκόνος:<br />''(ἐν περιπτώσει δέλτων περιγραφῆς ἀρχείων)''",
'thumbsize' => 'Μέγεθος μικρογραφίας:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|δέλτος|δέλτοι}}',
'file-info' => '(μέγεθος ἀρχείου: $1, τὐπος MIME: $2)',
@@ -2155,6 +2233,8 @@ $1',
'svg-long-desc' => '(ἀρχεῖον SVG, ὀνομαστὶ $1 × $2 εἰκονοστοιχεῖα, μέγεθος ἀρχείου: $3)',
'show-big-image' => 'Πλήρης ἀνάλυσις',
'show-big-image-thumb' => '<small>Τῆσδε τῆς προθεωρήσεως μέγεθος: $1 × $2 εἰκονοστοιχεῖα</small>',
+'file-info-gif-looped' => 'ἄπειρος βρόγχος',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|πλαίσιον|πλαίσια}}',
# Special:NewFiles
'newimages' => 'Τὰ νέα φορτία δεῦρο ἀθροίζειν',
@@ -2187,7 +2267,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -2314,14 +2394,14 @@ $1',
'exif-unknowndate' => 'Ἄγνωτος χρονολογία',
-'exif-orientation-1' => 'Κανονικόν', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Ἀντεστραμμένη ὁριζοντίως', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Περιεστραμμένη κατὰ 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Ἀντεστραμμένη καθέτως', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Περιεστραμμένη 90° ἀνθωρολογιακῶς καὶ ἀντεστραμμένη καθέτως', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Περιεστραμμένη 90° ὡρολογιακώς', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Περιεστραμμένη 90° ὡρολογιακῶς καὶ ἀντεστραμμένη καθέτως', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Περιεστραμμένη 90° ἀνθωρολογιακώς', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Κανονικόν',
+'exif-orientation-2' => 'Ἀντεστραμμένη ὁριζοντίως',
+'exif-orientation-3' => 'Περιεστραμμένη κατὰ 180°',
+'exif-orientation-4' => 'Ἀντεστραμμένη καθέτως',
+'exif-orientation-5' => 'Περιεστραμμένη 90° ἀνθωρολογιακῶς καὶ ἀντεστραμμένη καθέτως',
+'exif-orientation-6' => 'Περιεστραμμένη 90° ὡρολογιακώς',
+'exif-orientation-7' => 'Περιεστραμμένη 90° ὡρολογιακῶς καὶ ἀντεστραμμένη καθέτως',
+'exif-orientation-8' => 'Περιεστραμμένη 90° ἀνθωρολογιακώς',
'exif-planarconfiguration-1' => 'πεπλατυσμένη μορφοποιία',
'exif-planarconfiguration-2' => 'ἐπίπεδος μορφοποιία',
@@ -2443,7 +2523,7 @@ $1',
'exif-gpsmeasuremode-2' => '2-διάστατος μέτρησις',
'exif-gpsmeasuremode-3' => '3-διάστατος μέτρησις',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Χιλιόμετρα ἀνὰ ὥρα',
'exif-gpsspeed-m' => 'Μίλια ἀνὰ ὥρα',
'exif-gpsspeed-n' => 'Κόμβοι',
@@ -2462,6 +2542,7 @@ $1',
'watchlistall2' => 'ἅπασαι',
'namespacesall' => 'ἅπασαι',
'monthsall' => 'ἅπαντες',
+'limitall' => 'ἅπασαι',
# E-mail address confirmation
'confirmemail' => 'Ἐπιβεβαίωσον διεύθυνσιν ἠλ-ταχυδρομείου',
@@ -2573,7 +2654,7 @@ $1',
'duplicate-defaultsort' => 'Eἴδησις: Ἡ προκαθωρισμένη κλεὶς ταξινομήσεως "$2" ὑπερκαλύπτει προηγουμένην προκαθωρισμένην κλεῖδα ταξινομήσεως "$1".',
# Special:Version
-'version' => 'Ἐπανόρθωμα', # Not used as normal message but as header for the special page itself
+'version' => 'Ἐπανόρθωμα',
'version-extensions' => 'Ἐγκατεστημέναι ἐπεκτάσεις',
'version-specialpages' => 'Εἰδικαὶ δέλτοι',
'version-parserhooks' => 'Ἀγγύλαι λεξιαναλυτικοῦ προγράμματος',
@@ -2587,7 +2668,7 @@ $1',
'version-skin-extension-functions' => 'Ἐνέργειαι ἐπεκτάσεων ἐπικαλύψεων',
'version-hook-name' => 'Ὄνομα ἀγκύλης',
'version-hook-subscribedby' => 'Ὑπογεγραφυῖα ὑπὸ',
-'version-version' => 'Ἔκδοσις',
+'version-version' => '(Ἔκδοσις $1)',
'version-license' => 'Ἄδεια',
'version-software' => 'Ἐγκατεστημένον λογισμικόν',
'version-software-product' => 'Προϊόν',
@@ -2664,4 +2745,15 @@ $1',
'dberr-outofdate' => 'Αἱ ἐνδείξεις σφῶν περὶ τοῦ περιεχομένου ἡμῶν πιθανῶς ούκ είσὶ ἐνήμεραι.',
'dberr-cachederror' => 'Τόδε λανθάνον ἀντίγραφόν τι τῆς ἐζητημένης δέλτου ἐστίν, πιθανῶς μὴ ἐνήμερον.',
+# HTML forms
+'htmlform-invalid-input' => 'Μέρος τῶν εἰσαγομένων δεδομένων σου προβληματικὸν ἐστίν',
+'htmlform-select-badoption' => 'Ἡ τιμὴ ἡ καθωρισμένη ὑπὸ ἐσοῦ οὐκ ἔστι ἔγκυρος ἐπιλογή.',
+'htmlform-int-invalid' => 'Ἡ τιμὴ ἡ καθωρισμένη ὑπὸ ἐσοῦ οὐκ ἔστι ἀκέραιος ἀριθμός.',
+'htmlform-float-invalid' => 'Ἡ τιμὴ ἥνπερ ὥρικας οὐκ ἔστιν ἀριθμός τις.',
+'htmlform-int-toolow' => 'Ἡ τιμὴ ἡ καθωρισμένη ὑπὸ ἐσοῦ ἐστὶ ὑπὸ τὸ ἐλάχιστον τοῦ $1',
+'htmlform-int-toohigh' => 'Ἡ τιμὴ ἡ καθωρισμένη ὑπὸ ἐσοῦ ἐστὶ ὑπεράνω τοῦ μεγίστου τοῦ $1',
+'htmlform-submit' => 'Ὑποβάλλειν',
+'htmlform-reset' => 'Ἀναστρέφειν μεταβολάς',
+'htmlform-selectorother-other' => 'Ἄλλον',
+
);
diff --git a/languages/messages/MessagesGsw.php b/languages/messages/MessagesGsw.php
index 968070b1..f45b1a0a 100644
--- a/languages/messages/MessagesGsw.php
+++ b/languages/messages/MessagesGsw.php
@@ -144,6 +144,7 @@ $messages = array(
'tog-enotifminoredits' => 'Benachrichtigungsmail ou bi chlyne Sytenänderige',
'tog-enotifrevealaddr' => 'Dyni E-Mail-Adrässe wird i Benachrichtigungsmails zeigt',
'tog-shownumberswatching' => 'Aazahl Benutzer aazeige, wo ne Syten am Aaluege sy (i den Artikelsyte, i de «letschten Änderigen» und i der Beobachtigslischte)',
+'tog-oldsig' => 'Vorschau vu dr aktuälle Unterschrift:',
'tog-fancysig' => 'Signatur as Wikitext behandle (ohni automatischi Vergleichig)',
'tog-externaleditor' => 'Externe Editor als Standard bruche (nume fir Experte, doderzue brucht s speziälli Yystellige uf em Computer)',
'tog-externaldiff' => 'Externi diff als default',
@@ -167,6 +168,13 @@ $messages = array(
'underline-never' => 'nie',
'underline-default' => 'Browser-Vorystellig',
+# Font style option in Special:Preferences
+'editfont-style' => 'Schriftfamilie fir dr Text im Bearbeitigsfänschter:',
+'editfont-default' => 'Browserstandard',
+'editfont-monospace' => 'Schrift mit ere feschte Zeichebreiti',
+'editfont-sansserif' => 'Serifelosi Groteskschrift',
+'editfont-serif' => 'Schrift mit Serife',
+
# Dates
'sunday' => 'Sunntig',
'monday' => 'Mäntig',
@@ -226,7 +234,7 @@ $messages = array(
'category-media-header' => 'Medie in dr Kategori „$1“',
'category-empty' => "''Die Kategori het im Momänt kaini Syte oder Medie.''",
'hidden-categories' => '{{PLURAL:$1|Versteckti Kategori|Versteckti Kategorie}}',
-'hidden-category-category' => 'Versteckti Kategorie', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Versteckti Kategorie',
'category-subcat-count' => '{{PLURAL:$2|Die Kategori het die Unterkategorie:|{{PLURAL:$1|Die Unterkategori isch eini vu insgsamt $2 Unterkategorie in däre Kategori:|S wäre $1 vu insgsamt $2 Unterkategorie in däre Kategori aazeigt:}}}}',
'category-subcat-count-limited' => 'Die Kategorie het die {{PLURAL:$1|Unterkategori|$1 Unterkategorie}}:',
'category-article-count' => '{{PLURAL:$2|In däre Kategorie het s die Syte:|{{PLURAL:$1|Die Syte isch eini vu insgsamt $2 Syte in däre Kategori:|S wäre $1 vu insgsamt $2 Syte in däre Kategori aazeigt:}}}}',
@@ -234,14 +242,24 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|In däre Kategori het s die Datei:|{{PLURAL:$1|Die Datei isch eini vu insgsamt $2 Dateie in däre Kategori:|S wäre $1 vu insgsamt $2 Dateie in däre Kategori aazeigt:}}}}',
'category-file-count-limited' => 'In däre Kategori het s die {{PLURAL:$1|Datei|$1 Dateie}}:',
'listingcontinuesabbrev' => '(Forts.)',
+'index-category' => 'Verzeichneti Syte',
+'noindex-category' => 'Syte wu nit verzeichnet sin',
'mainpagetext' => "'''MediaWiki isch erfolgrich inschtalliert worre.'''",
'mainpagedocfooter' => 'Lueg uf d [http://meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentation fir d Aapassig vu dr Benutzeroberflächi] un s [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuech] fir d Hilf iber d Benutzig un s Yystelle.',
-'about' => 'Über',
-'article' => 'Inhaltssyte',
-'newwindow' => '(imene nöie Fänschter)',
-'cancel' => 'Abbräche',
+'about' => 'Über',
+'article' => 'Inhaltssyte',
+'newwindow' => '(imene nöie Fänschter)',
+'cancel' => 'Abbräche',
+'moredotdotdot' => 'Meh …',
+'mypage' => 'Myyni Syte',
+'mytalk' => 'Myyni Diskussionsyte',
+'anontalk' => 'Diskussionssyste vo sellere IP',
+'navigation' => 'Navigation',
+'and' => '&#32;un',
+
+# Cologne Blue skin
'qbfind' => 'Finde',
'qbbrowse' => 'Blättre',
'qbedit' => 'Ändere',
@@ -249,15 +267,35 @@ $messages = array(
'qbpageinfo' => 'Sytedate',
'qbmyoptions' => 'Ystellige',
'qbspecialpages' => 'Spezialsytene',
-'moredotdotdot' => 'Meh …',
-'mypage' => 'Myyni Syte',
-'mytalk' => 'Myyni Diskussionsyte',
-'anontalk' => 'Diskussionssyste vo sellere IP',
-'navigation' => 'Navigation',
-'and' => '&#32;un',
-
-# Metadata in edit box
-'metadata_help' => 'Metadate:',
+'faq' => 'Froge, wo vilmol gstellt wäre',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Abschnitt zuefiege',
+'vector-action-delete' => 'Lesche',
+'vector-action-move' => 'Verschiebe',
+'vector-action-protect' => 'Schitze',
+'vector-action-undelete' => 'Widerhärstelle',
+'vector-action-unprotect' => 'Frej gee',
+'vector-namespace-category' => 'Kategorii',
+'vector-namespace-help' => 'Hilfssyte',
+'vector-namespace-image' => 'Datei',
+'vector-namespace-main' => 'Syte',
+'vector-namespace-media' => 'Mediesyte',
+'vector-namespace-mediawiki' => 'Syschtemnochricht',
+'vector-namespace-project' => 'Projäktsyte',
+'vector-namespace-special' => 'Spezialsyte',
+'vector-namespace-talk' => 'Diskussion',
+'vector-namespace-template' => 'Vorlag',
+'vector-namespace-user' => 'Benutzersyte',
+'vector-view-create' => 'Aalege',
+'vector-view-edit' => 'Bearbeite',
+'vector-view-history' => 'Versionsgschicht',
+'vector-view-view' => 'Läse',
+'vector-view-viewsource' => 'Quälltext aaluege',
+'actions' => 'Aktione',
+'namespaces' => 'Namensryym',
+'variants' => 'Variante',
'errorpagetitle' => 'Fähler',
'returnto' => 'Zruck zur Syte $1.',
@@ -307,18 +345,22 @@ $messages = array(
'otherlanguages' => 'Anderi Sproche',
'redirectedfrom' => '(Witergleitet vun $1)',
'redirectpagesub' => 'Umgleiteti Syte',
-'lastmodifiedat' => 'Letschti Änderig vo dere Syte: $2, $1<br />', # $1 date, $2 time
+'lastmodifiedat' => 'Letschti Änderig vo dere Syte: $2, $1<br />',
'viewcount' => 'Die Syte isch {{PLURAL:$1|eimol|$1 Mol}} bsuecht wore.',
'protectedpage' => 'Gschützti Syte',
'jumpto' => 'Gump zue:',
'jumptonavigation' => 'Navigation',
'jumptosearch' => 'Suech',
+'view-pool-error' => 'Excusez, d Server sin zur Zyt iberlaschtet.
+S versueche grad zvyl Benutzer die Syte aazluege.
+Bitte wart e paar Minute, voreb Du s nomol versuechsch.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Über {{GRAMMAR:akkusativ|{{SITENAME}}}}',
'aboutpage' => 'Project:Über {{UCFIRST:{{GRAMMAR:akkusativ|{{SITENAME}}}}}}',
'copyright' => 'Der Inhalt vo dere Syte stoht unter der $1.',
-'copyrightpagename' => '{{SITENAME}} Urheberrächt',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Aktuelli Mäldige',
'currentevents-url' => 'Project:Aktuelli Termin',
@@ -326,8 +368,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Rotschläg fir s Bearbeite',
'edithelppage' => 'Help:Ändere',
-'faq' => 'Froge, wo vilmol gstellt wäre',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Hilf',
'mainpage' => 'Houptsyte',
'mainpage-description' => 'Houptsyte',
@@ -407,10 +447,6 @@ Di letscht Datebankabfrog isch
„$1“
us dr Funktion „$2“ gsi.
D Datebank het dr Fähler „$3: $4“ gmäldet.',
-'noconnect' => 'Äxkisi! Im Wiki git s tächnischi Schwirigkeite, s git kei Verbindig zue dr Datebank.<br />
-$1',
-'nodb' => 'Ha d Datebank $1 nit chenne uswähle',
-'cachederror' => 'Des isch e Kopie us em Cache un megligerwys nit aktuäll.',
'laggedslavemode' => 'Warnig: di letschte Änderige wäre u. U. nonig aazeigt!',
'readonly' => 'Datebank isch gsperrt',
'enterlockreason' => 'Bitte gib e Grund y, worum d Datebank soll gsperrt wäre un e Yschätzig wie lang si soll gsperrt blybe',
@@ -427,6 +463,8 @@ Wänn s des nit isch, hesch villicht e Fähler in dr Software gfunde. Bitte mäl
'readonly_lag' => 'D Datebank isch automatisch gperrt wore, wil di verteilte Datebankserver (Sklave) mien mit em Hauptdatebankserver (Meischter) abgliche wäre.',
'internalerror' => 'Interner Fähler',
'internalerror_info' => 'Interne Fähler: $1',
+'fileappenderrorread' => '„$1“ het nit chenne gläse wäre bim Aahänke.',
+'fileappenderror' => 'Het „$1“ nit an „$2“ chenne anhänke.',
'filecopyerror' => 'Datei "$1" het nit noch "$2" kopiert werre kinne.',
'filerenameerror' => 'D Datei "$1" het nit in "$2" umgnennt werre kinne.',
'filedeleteerror' => 'Datei "$1" het nit glöscht werre kinne.',
@@ -436,7 +474,7 @@ Wänn s des nit isch, hesch villicht e Fähler in dr Software gfunde. Bitte mäl
'unexpected' => 'Wärt, wu nit erwartet woren isch: „$1“=„$2“.',
'formerror' => 'Fähler: Ds Formular het nid chönne verarbeitet wärde',
'badarticleerror' => 'D Aktion konn uf denne Artikel nit ongwendet werre.',
-'cannotdelete' => 'Konn d Syte oder dr Artikel nit lesche. (Isch meglicherwis schu vun eber ondrem glescht worre.)',
+'cannotdelete' => 'D Syte oder d Datei „$1“ cha nit glescht wäre. Si isch villicht scho vu eber anderem glescht wore.',
'badtitle' => 'Ugültiger Titel',
'badtitletext' => 'Dr Titel vu dr agforderte Syte isch nit giltig gsi, leer, oder e nit giltig Sprochgleich vun eme andre Wiki.',
'perfcached' => 'Die Informatione chömme us em Zwüschespeicher un sin derwiil villicht nid aktuell.
@@ -469,7 +507,6 @@ Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''
'virus-unknownscanner' => 'Virescanner, wu nid bekannt isch:',
# Login and logout pages
-'logouttitle' => 'Benutzer-Abmäldig',
'logouttext' => "'''Du bisch jetz abgmäldet.'''
Du chasch {{SITENAME}} wyter anonym bruche, oder Du chasch di [[Special:UserLogin|wider aamälde]] mit em glyche oder eme andere Benutzername.
@@ -478,7 +515,6 @@ Ochat: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagmä
'welcomecreation' => '==Willcho, $1!==
Dyy Benutzerkonto isch aaglait wore.
Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
-'loginpagetitle' => 'Benutzer-Aamelde',
'yourname' => 'Dyy Benutzername',
'yourpassword' => 'Passwort:',
'yourpasswordagain' => 'Passwort no mol yygee:',
@@ -489,6 +525,7 @@ Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
'nav-login-createaccount' => 'Aamälde / Konto aaleege',
'loginprompt' => '<small>Für di bir {{SITENAME}} aazmälde, muesch Cookies erloube!</small>',
'userlogin' => 'Aamälde/Konto aalege',
+'userloginnocreate' => 'Aamälde',
'logout' => 'Abmälde',
'userlogout' => 'Abmälde',
'notloggedin' => 'Nit aagmäldet',
@@ -501,27 +538,8 @@ Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
'badretype' => 'Di beidi Passwörter stimme nid zämme.',
'userexists' => 'Dä Benutzername git s scho.
Bitte nimm e andere.',
-'youremail' => 'E-Mail-Adräss:',
-'username' => 'Benutzername:',
-'uid' => 'Benutzer-ID:',
-'prefs-memberingroups' => 'Mitglid vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
-'yourrealname' => 'Echte Name:',
-'yourlanguage' => 'Sproch:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Unterschrift:',
-'badsig' => 'Dr Syntax vu dr Signatur isch nid giltig; bitte d HTML iberpriefe.',
-'badsiglength' => 'Dyyni Unterschrift isch z lang. Si derf hegschtens $1 {{PLURAL:$1|Zeiche|Zeiche}} lang syy.',
-'yourgender' => 'Gschlächt:',
-'gender-unknown' => 'Kei Aagab',
-'gender-male' => 'männlig',
-'gender-female' => 'wyyblig',
-'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
-'email' => 'E-Mail',
-'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
'loginerror' => 'Fähler bir Aamäldig',
-'prefs-help-email' => '* <strong>E-Mail-Adrässe</strong> (optional): We du en E-Mail-Adrässen aagisch, überchömen anderi Benutzer d Müglechkeit, di über dyni Benutzer- oder Benutzer_Diskussionsyte z kontaktiere. Im Fall das du mal ds Passwort sötsch vergässe ha, cha dir es nöis Zuefalls-Passwort gmailet wärde.<br />
-** <strong>Signatur</strong> (optional): D Signatur wird ygsetzt, we du e Diskussionsbytrag mit «<nowiki>~~~~</nowiki>» unterschrybsch; we du ke spezielli Signatur aagisch, de wird eifach di Benutzername mit emne Link uf dyni Benutzersyten ygfüegt.',
-'prefs-help-email-required' => 'S brucht e giltigi E-Mail-Adräss.',
+'createaccounterror' => 'Het s Benutzerkonto nit chenne aalege: $1',
'nocookiesnew' => 'Dr Benutzerzuegang isch aaglait wore, aber Du bisch nid yygloggt. {{SITENAME}} brucht fir die Funktion Cookies, bitte tue die aktiviere un logg Di derno mit Dyynem neje Benutzername un em Passwort, wu drzue ghert, yy.',
'nocookieslogin' => '{{SITENAME}} brucht Cookies fir e Aamäldig. Du hesch d Cookies deaktiviert. Aktivier si bitte un versuech s no mol.',
'noname' => 'Du muesch e Benutzername aagee.',
@@ -532,10 +550,11 @@ Bitte nimm e andere.',
Iberprief d Schrybwys, oder mäld Di as [[Special:UserLogin/signup|neje Benutzer aa]].',
'nosuchusershort' => 'S git kei Benutzername „<nowiki>$1</nowiki>“. Bitte iberprief d Schrybwys.',
'nouserspecified' => 'Bitte gib e Benutzername yy.',
+'login-userblocked' => 'Dää Benutzer isch gsperrt. Aamäldig nit erlaubt.',
'wrongpassword' => 'Des Passwort isch falsch (oder fählt). Bitte versuech s nomol.',
'wrongpasswordempty' => 'Du hesch vergässe dyy Passwort yyzgee. Bitte versuech s nomol.',
-'passwordtooshort' => 'Dys Passwort isch ungültig oder z churz.
-Es mues mindischtens {{PLURAL:$1|1 Zeiche|$1 Zeiche}} ha u sech vom Benutzernamen underscheide.',
+'passwordtooshort' => 'Passwerter mien zmindescht {{PLURAL:$1|1 Zeiche|$1 Zeiche}} haa.',
+'password-name-match' => 'Dyy Passwort muess sich vu Dyynem Benutzername unterscheide.',
'mailmypassword' => 'Es nöis Passwort schicke',
'passwordremindertitle' => 'Nei Passwort fir {{SITENAME}}',
'passwordremindertext' => 'Ebber mit dr IP-Adress $1 het e nej Passwort fir d Aamäldig bi {{SITENAME}} ($4) aagfordert, wahrschyyns Du sälber.
@@ -548,6 +567,7 @@ Des Passwort lauft ab in {{PLURAL:$5|eim Tag|$5 Täg}}.
Bitte ignorier die E-Mail, wänn Du s nid sälber aagforderet hesch. S alt Passwort blybt wyter giltig.',
'noemail' => 'Dr Benutzer "$1" het kei E-Mail-Adräss aagee.',
+'noemailcreate' => 'Du muesch e giltigi E-Mail-Adräss aagee',
'passwordsent' => 'E temporär Passwort isch an d E-Mail-Adräss vum Benutzer "$1" gschickt wore.
Bitte mäld Di dodemit aa, wänn s iberchu hesch.',
'blocked-mailpassword' => 'Die IP-Adräss, wu vu Dir verwändet wird, isch fir s Ändre vu Syte gsperrt
@@ -573,8 +593,10 @@ Bitte gib ä neiji Adress in nem gültige Format ii, odr tue s Feld leere.',
'createaccount-text' => 'Fir Dii isch e Benutzerkonto "$2" uf {{SITENAME}} ($4) aaglait wore. S Passwort fir "$2" , wu automatisch generiert woren isch, isch "$3". Du sottsch Di jetz aamälde un s Passwort ändere.
Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignoriere.',
+'usernamehasherror' => 'In Benutzernäme derf s kei Rautezeiche din haa',
'login-throttled' => 'Du hesch z vilmol vergebli versuecht, Di aazmälde. Bitte wart, voreb Du s non emol versuechsch.',
'loginlanguagelabel' => 'Sproch: $1',
+'suspicious-userlogout' => 'Dyy Versuech di abzmälde isch abbroche wore, wel s uusgsäh het, wie wänn s vun eme bschedigte Browser oder eme Cacheproxy uus gsändet woren isch.',
# Password reset dialog
'resetpass' => 'Passwort fir s Benutzerkonto ändere oder zrucksetze',
@@ -586,17 +608,13 @@ Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignori
'retypenew' => 'Nöis Passwort (es zwöits Mal)',
'resetpass_submit' => 'Passwort ibermittle un aamälde',
'resetpass_success' => 'Dyy Passwort isch erfolgryych gänderet wore. Jetz chunnt d Aamäldig …',
-'resetpass_bad_temporary' => 'Vorlaifig Passwort, wu nimi giltig isch. Du hesch Dyy Passwort scho gänderet oder e nej vorlaifig Passwort aagforderet.',
'resetpass_forbidden' => 'S Passwort cha nid gänderet wäre.',
'resetpass-no-info' => 'Du muesch Di aamälde zum uf die Syte diräkt zuegryfe z chenne.',
'resetpass-submit-loggedin' => 'Passwort ändere',
+'resetpass-submit-cancel' => 'Abbräche',
'resetpass-wrong-oldpass' => 'S temporär oder aktuäll Passwort isch nimi giltig.
Villicht hesch Dyy Passwort scho gänderet oder e nej temporär Passwort aagforderet.',
'resetpass-temp-password' => 'Temporär Passwort:',
-'resetpass-log' => 'Logbuech vu dr zruckgsetzte Passwerter',
-'resetpass-logtext' => 'Unte findsch e Logbuech vu dr Benutzer, wu s Passwort vun ene zruckgsetzt woren isch dur e Ammann.',
-'resetpass-logentry' => 'het s Passwort fir $1 gänderet',
-'resetpass-comment' => 'Grund fir s Zrucksetze vum Passwort:',
# Edit page toolbar
'bold_sample' => 'fetti Schrift',
@@ -676,7 +694,6 @@ Du chasch $1 oder ein vu dr andre [[{{MediaWiki:Grouppage-sysop}}|Ammanne]] kont
'blockededitsource' => "Dr Quälltäxt vu '''Dyyne Änderige''' an '''$1''':",
'whitelistedittitle' => 'Zum Bearbeite muess mer aagmäldet syy.',
'whitelistedittext' => 'Du muesch Di $1 zum Artikel bearbeite.',
-'confirmedittitle' => 'Zum Ändere isch e bstätigti E-Mail-Adräss notwändig.',
'confirmedittext' => 'Si mien Ihri E-Mail-Adräss zerscht bstätige, voreb Si Syte chenne ändere. Bitte setze Si in [[Special:Preferences|Ihre Iistellige]] Ihri E-Mail-Adräss yy un len Si si priefe.',
'nosuchsectiontitle' => 'Abschnitt nit gfunde',
'nosuchsectiontext' => 'Du hesch versuecht e Abschnitt z bearbeite, wu s nid git.
@@ -695,9 +712,16 @@ Wänn do nid hesch welle aane goh, no druck in Dyynem Browser uf '''Zruck'''.",
'anontalkpagetext' => "----''Des isch e Diskussionssyte vun eme anonyme Benutzer, wu kei Zuegang aagleit het oder wu ne nit bruucht. Sälleweg mien mir di numerisch IP-Adräss bruuche zum ihn oder si z identifiziere. So ne IP-Adräss cha au vu mehrere Benutzer teilt wäre. Wenn Du ne anonyme Benutzer bisch un s Gfiel hesch, ass do irrelevanti Kommentar an di grichtet wäre, derno [[Special:UserLogin/signup|leg e Konto aa]] oder [[Special:UserLogin|mäld di aa]] zum in Zuekumft Verwirrige mit andere anonyme Benutzer z vermyyde.''",
'noarticletext' => 'Uf däre Syte het s no kei Täxt. Du chasch uf andere Syte [[Special:Search/{{PAGENAME}}|dä Yytrag sueche]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} dr Logbuechyytrag sueche, wo dezue ghert],
oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} die Syte bearbeite]</span>.',
+'noarticletext-nopermission' => 'In däre Syte het s zur Zyt no kei Text.
+Du chasch dää Titel uf andre Syte [[Special:Search/{{PAGENAME}}|sueche]]
+oder <span class="plainlinks">in dr zuegherige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiecher sueche].</span>',
'userpage-userdoesnotexist' => 'S Benutzerkonto „$1“ git s nit. Bitte prief, eb Du die Syte wirkli wit aalege/bearbeite.',
+'userpage-userdoesnotexist-view' => 'S Benutzerkonto „$1“ isch nit registriert.',
+'blocked-notice-logextract' => 'Dää Benutzer isch zur Zyt gsperrt.
+As Information chunnt do ne aktuälle Uuszug us em Benutzersperr-Logbuech:',
'clearyourcache' => "'''Hywys:''' Noch dynere Änderig muess no der Browser-Cache gläärt wäre!<br />'''Mozilla/Safari/Konqueror:''' ''Strg-Umschalttaschte-R'' (oder ''Umschalttasche'' druckt halte und uf s ''Nei-Lade''-Symbol klicke), '''IE:''' ''Strg-F5'', '''Opera/Firefox:''' ''F5''",
-'usercssjsyoucanpreview' => "'''Tipp:''' Nimm dr Vorschau-Chnopf, zum Dyy nej CSS/JS vor em Spichere z teschte.",
+'usercssyoucanpreview' => "'''Tipp:''' Nimm dr „{{int:showpreview}}”-Chnopf, zum Dyy nej CSS vor em Spichere z teschte.",
+'userjsyoucanpreview' => "'''Tipp:''' „Nimm dr {{int:showpreview}}”-Chnopf, zum Dyy nej JS vor em Spichere z teschte.",
'usercsspreview' => "== Vorschau vu Dyynem Benutzer-CSS. ==
'''Wichtig:''' Noch em Spichere muesch Dyynem Browser sage, ass er die nej Version ladet:
@@ -748,13 +772,16 @@ Si verspräche uns usserdäm, dass Si des alles selber gschribe oder vo nere Qu
Sichere de Täxt bitte lokal uf Dyynem Computer un versuech speter nomol, d Änderige z ibertrage.'''
Grund fir d Sperri: $1",
-'protectedpagewarning' => "'''WARNIG: Die Syten isch gsperrt worde, so das se nume Benutzer mit Sysop-Rechten chöi verändere.'''",
-'semiprotectedpagewarning' => "'''''Halbsperrig''': Die Syte cha vu aagmäldete Benutzern bearbeitet wäre. Fir Benutzer, wu nid oder grad erscht aagmäldet sin, isch dr Schrybzuegang gsperrt.''",
+'protectedpagewarning' => "'''WARNIG: Die Syten isch gsperrt wore, ass si nume Benutzer mit Administrator-Rächt chenne verändere.'''
+As Referänz wird do dr letscht Logbuechyytrag aagee:",
+'semiprotectedpagewarning' => "'''Obacht''': Die Syte isch halb gsperrt, ass si nume vu aagmäldete Benutzer cha bearbeitet wäre.
+As Referänz wird do dr letscht Logbuechyytrag aagee:",
'cascadeprotectedwarning' => "'''ACHTIG: Die Syte isch gsperrt. Wäg däm cha si nume vu Benutzer mit Ammannerächt bearbeitet wäre. Si isch in die {{PLURAL:$1|Syte|Syte}} yybunde, wu mit ere Kaskadesperroption gschitzt {{PLURAL:$1|isch|sin}}:'''",
-'titleprotectedwarning' => "'''ACHTIG: S Aalege vu däre Syte isch gsperrt. Wäg däm bruucht mer [[Special:ListGroupRights|bstimmti Rächt]] go si aalege.'''",
-'templatesused' => 'Selli Vorlage wärde in sellem Artikel bruucht:',
-'templatesusedpreview' => 'Vorlage wo i dere Vorschou vorchöme:',
-'templatesusedsection' => 'Vorlage, wu in däm Abschnitt brucht wäre:',
+'titleprotectedwarning' => "'''Obacht: S Aalege vu däre Syte isch gsperrt. Wäg däm bruucht mer [[Special:ListGroupRights|bstimmti Rächt]] go si aalege.'''
+As Referänz wird do dr letscht Logbuechyytrag aagee:",
+'templatesused' => '{{PLURAL:$1|Vorlag, wu in däm Artikel brucht wird|Vorlage, wu in däm Artikel brucht wäre}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Vorlag, wu in däre Vorschau brucht wird|Vorlage, wu in däre Vorschau brucht wäre}}:',
+'templatesusedsection' => '{{PLURAL:$1|Vorlag, wu in däm Abschnitt brucht wird|Vorlage, wu in däm Abschnitt brucht wäre}}:',
'template-protected' => '(schrybgschützt)',
'template-semiprotected' => '(schrybgschitzt fir Benutzer, wo nit aagmäldet oder nei sin)',
'hiddencategories' => 'Die Syte ghert zue {{PLURAL:$1|einere versteckte Kategori|$1 versteckte Kategorie}}:',
@@ -763,16 +790,18 @@ Grund fir d Sperri: $1",
'nocreatetext' => "Uf {{SITENAME}} isch d Erstellig vo nöue Syten ygschränkt.
Du chasch nur Syten ändere, wo's scho git, oder muesch di [[Special:UserLogin|amälde]].",
'nocreate-loggedin' => 'Du bisch nid berächtigt, neji Syte aazlege.',
+'sectioneditnotsupported-title' => 'Abschnitt bearbeite wird nit unterstitzt',
+'sectioneditnotsupported-text' => 'Abschnitt bearbeite wird uf däre Syte nit unterstitzt.',
'permissionserrors' => 'Berächtigungsfähler',
'permissionserrorstext' => 'Du bisch nid berächtigt, die Aktion uszfiere. {{PLURAL:$1|Grund|Grind}}:',
'permissionserrorstext-withaction' => 'Du bisch nit berächtigt, $2.
{{PLURAL:$1|Grund|Grind}}:',
-'recreate-deleted-warn' => "'''Obacht: Du bisch e Syten am kreiere, wo scho einisch isch glösche worde.'''
+'recreate-moveddeleted-warn' => "'''Obacht: Du bisch e Syten am aalege, wo scho emol glescht woren isch.'''
-Bitte überprüeff, öb s sinnvoll isch, mit em Bearbeite wyter z mache.
-Hie gsehsch ds Lösch-Logbuech vo dere Syte:",
-'deleted-notice' => 'Die Syte isch glescht wore. Do chunnt e Uuszuug us em Lesch-Logbuech fir die Syte.',
-'deletelog-fulllog' => 'Vollständigs Lesch-Logbuech',
+Bitte iberprief, eb s sinnvoll isch, mit em Bearbeite wyter z mache.
+Zue Dyyre Information sihsch do s Lesch-Logbuech vo däre Syte:",
+'moveddeleted-notice' => 'Die Syte isch glescht wore. Do chunnt e Uuszuug us em Lesch-Logbuech fir die Syte.',
+'log-fulllog' => 'Voll Logbuech aaluege',
'edit-hook-aborted' => 'D Bearbeitig isch ohni Erchlärung dur e Schnittstell abbroche wore.',
'edit-gone-missing' => 'D Syte het nid chenne aktalisiert wäre.
Si isch schyns glescht wore.',
@@ -791,6 +820,7 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
'post-expand-template-argument-category' => 'Syte, wu s ignorierti Vorlageargumänt din het',
'parser-template-loop-warning' => 'Vorlagelätsch entdeckt: [[$1]]',
'parser-template-recursion-depth-warning' => 'Vorlagerekursionstiefegränz iberschritte ($1)',
+'language-converter-depth-warning' => 'Gränz vu dr Sprochkonvertertiefi iberschritte ($1)',
# "Undo" feature
'undo-success' => 'Zum die Änderig ruckgängig z mache, kontrollier bitte d Bearbeitig in dr Verglichsaasicht un druck derno uf „Syte spichere“.',
@@ -810,7 +840,7 @@ Grund vu dr Sperri: ''$2''",
'currentrev' => 'Itzigi Version',
'currentrev-asof' => 'Aktuälli Version vu $1',
'revisionasof' => 'Version vo $1',
-'revision-info' => 'Alti Bearbeitig vom $1 dür $2', # Additionally available: $3: revision id
+'revision-info' => 'Alti Bearbeitig vom $1 dür $2',
'previousrevision' => '← Vorderi Version',
'nextrevision' => 'Nächschti Version →',
'currentrevisionlink' => 'Itzigi Version',
@@ -823,7 +853,7 @@ Grund vu dr Sperri: ''$2''",
Erklärig: (aktuell) = Underschid zu jetz,
(vorane) = Underschid zur alte Version, <strong>K</strong> = chlyni Änderig',
'history-fieldset-title' => 'Suech in dr Versionsgschicht',
-'deletedrev' => '[glescht]',
+'history-show-deleted' => 'nume gleschti Versione',
'histfirst' => 'Eltischti',
'histlast' => 'Nöischti',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
@@ -832,72 +862,111 @@ Erklärig: (aktuell) = Underschid zu jetz,
# Revision feed
'history-feed-title' => 'Versionsgschicht',
'history-feed-description' => 'Versionsgschicht fir die Syte in {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 um $2', # user at time
+'history-feed-item-nocomment' => '$1 um $2',
'history-feed-empty' => 'Di aagforderet Syte git s nid. Villicht isch si glescht oder verschobe wore. [[Special:Search|Suech]] {{SITENAME}} fir neji Syte, wu passe.',
# Revision deletion
-'rev-deleted-comment' => '(Bearbeitigskommentar uusegnuh)',
-'rev-deleted-user' => '(Benutzername uusegnuh)',
-'rev-deleted-event' => '(Logbuechaktion uusegnuh)',
-'rev-deleted-text-permission' => "Die Version isch '''glescht''' wore.
-Information zue dr Leschig un e Begrindig het s im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
-'rev-deleted-text-view' => "Die Version isch '''glescht''' wore. As Amman chasch si aber alno aaluege.
-Informatione zue dr Leschig un e Begrindig het s im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
-'rev-deleted-no-diff' => "Du chasch die Änderig nit aaluege, wel eini vu dr Versione '''glescht''' woren isch.
-Villicht het s Detail im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
-'rev-deleted-unhide-diff' => "Eini vu dr Versione isch '''glescht''' wore.
-Villicht het s Detail im [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].
+'rev-deleted-comment' => '(Bearbeitigskommentar uusegnuh)',
+'rev-deleted-user' => '(Benutzername uusegnuh)',
+'rev-deleted-event' => '(Logbuechaktion uusegnuh)',
+'rev-deleted-user-contribs' => '[Benutzername oder IP-Adräss uusegnuu - Bearbeitig in dr Byytragslischt versteckt]',
+'rev-deleted-text-permission' => "Die Version isch '''glescht''' wore.
+Information zue dr Leschig un e Begrindig het s im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
+'rev-deleted-text-unhide' => "Die Version isch '''glescht''' wore.
+Detail stehn im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].
+As Ammann chasch Du [$1 des Gleich aaluege], wänn du witt wytermache.",
+'rev-suppressed-text-unhide' => "Die Version isch '''unterdruckt''' wore.
+Detail stehn im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdruckigs-Logbuech].
+As Ammann chasch [$1 die Version alno aaluege], wänn Du witt.",
+'rev-deleted-text-view' => "Die Version isch '''glescht''' wore. As Amman chasch si aber alno aaluege.
+Informatione zue dr Leschig un e Begrindig het s im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
+'rev-suppressed-text-view' => "Die Version isch '''unterdruckt''' wore.
+As Ammann chasch si aaluege; s cha syy, ass es Detail het im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdruckigs-Logbuech].",
+'rev-deleted-no-diff' => "Du chasch die Änderig nit aaluege, wel eini vu dr Versione '''glescht''' woren isch.
+Villicht het s Detail im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
+'rev-suppressed-no-diff' => "Du chasch dää Versionsunterschid nit bschaue, wel eini vu dr Versione '''glescht''' woren isch.",
+'rev-deleted-unhide-diff' => "Eini vu dr Versione isch '''glescht''' wore.
+Villicht het s Detail im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].
Wänn Du Ammann bisch, chasch [$1 dä Unterschid aaluege] wänn Du wytermache witt.",
-'rev-delundel' => 'zeig/versteck',
-'revisiondelete' => 'Versione lesche/widerherstelle',
-'revdelete-nooldid-title' => 'Kei Version aagee',
-'revdelete-nooldid-text' => 'Du hesch entwäder kei Version aagee, wu die Aktion soll usgfiert wäre, die usgwehlt Version git s nid oder Du versuechsch di aktuäll Version z verstecke.',
-'revdelete-nologtype-title' => 'Kei Logtyp aagee',
-'revdelete-nologtype-text' => 'S isch kei Logtyp fir die Aktion aagee wore.',
-'revdelete-toomanytargets-title' => 'Zvyyl Ziil',
-'revdelete-toomanytargets-text' => 'S sin zvyyl Logtype fir die Aktion aagee wore.',
-'revdelete-nologid-title' => 'Uugiltige Logyytrag',
-'revdelete-nologid-text' => 'S isch kei Logtyp usgwählt wore oder dr gwählt Logtyp git s nit.',
-'revdelete-selected' => "'''{{PLURAL:$2|Usgwehlti Version|Usgwehlti Versione}} vu [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Usgwehlte Logbuechyytrag|Usgwehlti Logbuechyytreg}}:'''",
-'revdelete-text' => "'''Dr Inhalt oder anderi Bstandteil vu gleschte Versione chenne nimi aagluegt wäre, si erschyyne aber alno as Yytreg in dr Versiongschicht.'''
-
-{{SITENAME}}-Ammanne chenne dr Inhalt, wu glescht isch, oder di andre gleschte Bstandteil alno aaluege un au widerherstelle, user s isch feschtgleit, ass d Zuegangsbschränkige au fir Ammanne gälte.
-
-'''Gleschti Versionen un Aktione blyben in dr Versionsgschicht un in dr Logbiecher. Teil dervu sin aber fir d Efffentligkeit nimmi zuegänglig.'''
-
-Anderi Ammanne uf {{SITENAME}} hän alno Zuegriff uf dr versteckt Inhalt un chenne ne mit dr glyche Syte widerhärstelle, wänn s keini zuesätzlige Yyschränkige git.
-Bitte bstätig, ass Du des witt mache, ass Du d Konsequänze verstohsch un ass des mit dr [[{{MediaWiki:Policy-url}}|Richtlinie]] ibereinstimmt.",
-'revdelete-suppress-text' => "Unterdruckige sotte '''nume''' in däne Fäll bruucht wäre:
+'rev-suppressed-unhide-diff' => "Eini vu dr Versione vu däne bode isch '''unterdruckt'''.
+Villicht het s Einzelheite derzue im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdruckigs-Logbuech].
+As Administrator chasch [$1 dr Unterschid allno aaluege] wänn du witt wytermache.",
+'rev-deleted-diff-view' => "Eine vu dr Versione vu däm Unterschid isch '''glescht''' wore.
+As Ammann (Administrator) chasch dää Unterschid bschaue; villicht het s Detail im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Leschlogbuech].",
+'rev-suppressed-diff-view' => "Eine vu dr Versione vu däm Unterschid isch '''uusbländet''' wore.
+As Ammann (Administrator) chasch dää Unterschid bschaue; villicht het s Detail im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Logbuech vu dr Uusbländige].",
+'rev-delundel' => 'zeig/versteck',
+'rev-showdeleted' => 'zeig',
+'revisiondelete' => 'Versione lesche/widerherstelle',
+'revdelete-nooldid-title' => 'Kei Version aagee',
+'revdelete-nooldid-text' => 'Du hesch entwäder kei Version aagee, wu die Aktion soll usgfiert wäre, die usgwehlt Version git s nid oder Du versuechsch di aktuäll Version z verstecke.',
+'revdelete-nologtype-title' => 'Kei Logtyp aagee',
+'revdelete-nologtype-text' => 'S isch kei Logtyp fir die Aktion aagee wore.',
+'revdelete-nologid-title' => 'Uugiltige Logyytrag',
+'revdelete-nologid-text' => 'S isch kei Logtyp usgwählt wore oder dr gwählt Logtyp git s nit.',
+'revdelete-no-file' => 'D Datei, wu Du aagee hesch, git s nit.',
+'revdelete-show-file-confirm' => 'Bisch sicher, ass Du di glescht Version vu dr Datei „<nowiki>$1</nowiki>“ vum $2 am $3 witt aaluege?',
+'revdelete-show-file-submit' => 'Jo',
+'revdelete-selected' => "'''{{PLURAL:$2|Usgwehlti Version|Usgwehlti Versione}} vu [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Usgwehlte Logbuechyytrag|Usgwehlti Logbuechyytreg}}:'''",
+'revdelete-text' => "'''Dr Inhalt oder anderi Bstandteil vu gleschte Versione chenne nimi aagluegt wäre, si erschyyne aber alno as Yytreg in dr Versiongschicht.'''
+{{SITENAME}}-Ammanne chenne dr Inhalt, wu glescht isch, oder di andre gleschte Bstandteil alno aaluege un au widerherstelle, user s isch feschtgleit, ass d Zuegangsbschränkige au fir Ammanne gälte.",
+'revdelete-confirm' => 'Bitte tue bstetige, ass Du vor hesch, des z mache, d Konsequänze drus verstohsch un s machsch in Inbereinstimmig mit dr [[{{MediaWiki:Policy-url}}|Richtlinie]].',
+'revdelete-suppress-text' => "Unterdruckige sotte '''nume''' in däne Fäll bruucht wäre:
* Nit aabrochti Informatione
*: ''Adrässe, Telifonnummere, Sozialversicherigsnummere usw.''",
-'revdelete-legend' => 'Setze vu dr Sichtbarkeits-Yyschränkige',
-'revdelete-hide-text' => 'Täxt vu dr Version versteckle',
-'revdelete-hide-name' => 'Logbuech-Aktion versteckle',
-'revdelete-hide-comment' => 'Bearbeitigskommentar versteckle',
-'revdelete-hide-user' => 'Benutzername/d IP vum Bearbeiter versteckle',
-'revdelete-hide-restricted' => 'Date vu Ammanne glyych unterdrucke wie vu andere',
-'revdelete-suppress' => 'Grund vu dr Leschig au vor dr Ammanne versteckle',
-'revdelete-hide-image' => 'Bildinhalt versteckle',
-'revdelete-unsuppress' => 'Yyschränkige fir di widerhergstellte Versione ufhebe',
-'revdelete-log' => 'Grund:',
-'revdelete-submit' => 'Uf usgwehlti Version aawände',
-'revdelete-logentry' => 'het d Versionsaasicht fir „[[$1]]“ gänderet',
-'logdelete-logentry' => 'het d Sichtbarkeit fir „[[$1]]“ gänderet',
-'revdelete-success' => "'''Versionsaasicht erfolgryych aktualisiert.'''",
-'logdelete-success' => "'''Logbuechaasicht erfolgryych gänderet.'''",
-'revdel-restore' => 'Sichtbarkeit ändere',
-'pagehist' => 'Versionsgeschicht',
-'deletedhist' => 'Gleschti Versione',
-'revdelete-content' => 'Syteinhalt',
-'revdelete-summary' => 'Zämmefassig',
-'revdelete-uname' => 'Benutzername',
-'revdelete-restricted' => 'Yyschränkige gälte au fir Ammanne',
-'revdelete-unrestricted' => 'Yyschränkige fir Ammanne ufghobe',
-'revdelete-hid' => 'versteckleti $1',
-'revdelete-unhid' => 'macht $1 wider effetlig',
-'revdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Version|Versione}}',
-'logdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Logbuechyytrag|Logbuechyytreg}}',
+'revdelete-legend' => 'Setze vu dr Sichtbarkeits-Yyschränkige',
+'revdelete-hide-text' => 'Täxt vu dr Version versteckle',
+'revdelete-hide-image' => 'Bildinhalt versteckle',
+'revdelete-hide-name' => 'Logbuech-Aktion versteckle',
+'revdelete-hide-comment' => 'Bearbeitigskommentar versteckle',
+'revdelete-hide-user' => 'Benutzername/d IP vum Bearbeiter versteckle',
+'revdelete-hide-restricted' => 'Date vu Ammanne glyych unterdrucke wie vu andere',
+'revdelete-radio-same' => '(nit ändere)',
+'revdelete-radio-set' => 'Jo',
+'revdelete-radio-unset' => 'Nei',
+'revdelete-suppress' => 'Grund vu dr Leschig au vor dr Ammanne versteckle',
+'revdelete-unsuppress' => 'Yyschränkige fir di widerhergstellte Versione ufhebe',
+'revdelete-log' => 'Grund:',
+'revdelete-submit' => 'Uf {{PLURAL:$1|di uusgwehlt Version|usgwehlti Versione}} aawände',
+'revdelete-logentry' => 'het d Versionsaasicht fir „[[$1]]“ gänderet',
+'logdelete-logentry' => 'het d Sichtbarkeit fir „[[$1]]“ gänderet',
+'revdelete-success' => "'''Versionsaasicht erfolgryych aktualisiert.'''",
+'revdelete-failure' => "'''Versionssichtbarkeit het nit chenne aktualisiert wäre.'''
+$1",
+'logdelete-success' => "'''Logbuechaasicht erfolgryych gänderet.'''",
+'logdelete-failure' => "'''Logbuchsichtbarkeit cha nit gänderet wäre:'''
+$1",
+'revdel-restore' => 'Sichtbarkeit ändere',
+'pagehist' => 'Versionsgeschicht',
+'deletedhist' => 'Gleschti Versione',
+'revdelete-content' => 'Syteinhalt',
+'revdelete-summary' => 'Zämmefassig',
+'revdelete-uname' => 'Benutzername',
+'revdelete-restricted' => 'Yyschränkige gälte au fir Ammanne',
+'revdelete-unrestricted' => 'Yyschränkige fir Ammanne ufghobe',
+'revdelete-hid' => 'versteckleti $1',
+'revdelete-unhid' => 'macht $1 wider effetlig',
+'revdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Version|Versione}}',
+'logdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Logbuechyytrag|Logbuechyytreg}}',
+'revdelete-hide-current' => 'Fähler bim Verstecke vum Yytrag mit em Datum $2, $1: des isch di aktuäll Version.
+Si cha nit versteckt wäre.',
+'revdelete-show-no-access' => 'Fähler bim Aazeige vum Yytrag mit em Datum $2, $1: dää Yytrag isch as „yygschränkt“ markiert wore.
+Du hesch kei Zuegriff druf.',
+'revdelete-modify-no-access' => 'Fähler bim Bearbeite vum Yytrag mit em Datum $2, $1: dää Yytrag isch as „yygschränkt“ markiert wore.
+Du hesch kei Zuegriff druf.',
+'revdelete-modify-missing' => 'Fähler bim Bearbeite vum Yytrag ID $1: Är fählt in dr Datebank!',
+'revdelete-no-change' => "'''Warnig:''' dr Yytrag mit em Datum $2, $1 het scho di gwinscht Sichtbarkeitsyystellige.",
+'revdelete-concurrent-change' => 'Fähler bim Bearbeite vum yytrag mit em Datum $2, $1: schyns isch dr Status vu eberem gänderet wore, voreb Du vorghaa hesch, e z bearbeite.
+Bitte prief d Logbiecher.',
+'revdelete-only-restricted' => 'Fähler bim Uusblände vum Byytrag vum $2, $1: Du chasch kei Yyträg vor Adminischtratore unterdrucke, ohni ass Du au eini vu dr andere Unterdruckigsoptione uusgwehlt hesch.',
+'revdelete-reason-dropdown' => '*Gängigi Leschgrind
+**Urheberrächtsverletzig
+**Falschi Information iber Persone',
+'revdelete-otherreason' => 'Andere/Zuesätzlige Grund:',
+'revdelete-reasonotherlist' => 'Andere Grund',
+'revdelete-edit-reasonlist' => 'Leschgrind bearbeite',
+'revdelete-offender' => 'Versionsautor:',
# Suppression log
'suppressionlog' => 'Oversight-Logbuech',
@@ -933,67 +1002,13 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
'mergelogpagetext' => 'Des isch e Lischt vu dr letschte Zämefierige vu Versionsgschichte.',
# Diffs
-'history-title' => 'Versionsgschicht vo „$1“',
-'difference' => '(Unterschide zwüsche Versione)',
-'lineno' => 'Zyle $1:',
-'compareselectedversions' => 'Usgwählti Versione verglyche',
-'visualcomparison' => 'Visuelle Verglych',
-'wikicodecomparison' => 'Wikitext-Verglych',
-'editundo' => 'rückgängig',
-'diff-multi' => '(Der Versioneverglych zeigt ou d Änderige vo {{PLURAL:$1|1 Version|$1 Versione}} derzwüsche.)',
-'diff-movedto' => 'verschobe no $1',
-'diff-styleadded' => '$1-Style zuegfiegt',
-'diff-added' => '$1 zuegfügt',
-'diff-changedto' => 'gänderet no $1',
-'diff-movedoutof' => 'verschobe us $1',
-'diff-styleremoved' => '$1-Style ewäg gmacht',
-'diff-removed' => '$1 ewäg gmacht',
-'diff-changedfrom' => 'veränderet vu $1',
-'diff-src' => 'Quälle',
-'diff-withdestination' => 'mit Ziil $1',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;un $1 $2',
-'diff-width' => 'Breiti',
-'diff-height' => 'Hechi',
-'diff-p' => "e '''Absatz'''",
-'diff-blockquote' => "e '''Block'''",
-'diff-h1' => "e '''Iberschrift (1. Ornig)'''",
-'diff-h2' => "e '''Iberschrift (2. Ornig)'''",
-'diff-h3' => "e '''Iberschrift (3. Ornig)'''",
-'diff-h4' => "e '''Iberschrift (4. Ornig)'''",
-'diff-h5' => "e '''Iberschrift (5. Ornig)'''",
-'diff-pre' => "e '''formatierte Block'''",
-'diff-div' => "e '''Blockelement'''",
-'diff-ul' => "e '''Lischt'''",
-'diff-ol' => "e '''numerierti Lischt'''",
-'diff-li' => "e '''Lischteyytrag'''",
-'diff-table' => "e '''Tabälle'''",
-'diff-tbody' => "e '''Tabälleinhalt'''",
-'diff-tr' => "e '''Zylete'''",
-'diff-td' => "e '''Zälle'''",
-'diff-th' => "e '''Spalteiberschrift'''",
-'diff-br' => "e '''Zyleteumbruch'''",
-'diff-hr' => "e '''horizontali Linie'''",
-'diff-code' => "e '''Computercode-Beryych'''",
-'diff-dl' => "e '''Definitionslischt'''",
-'diff-dt' => "e '''Definitionsterm'''",
-'diff-dd' => "e '''Definition'''",
-'diff-input' => "e '''Yygab'''",
-'diff-form' => "e '''Formular'''",
-'diff-img' => "e '''Bild'''",
-'diff-span' => "e '''Span'''",
-'diff-a' => "e '''Gleich'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''feist'''",
-'diff-strong' => "'''firighobe'''",
-'diff-em' => "'''betont'''",
-'diff-font' => "'''Schriftart'''",
-'diff-big' => "'''gross'''",
-'diff-del' => "'''glescht'''",
-'diff-tt' => "'''feschti Wyti'''",
-'diff-sub' => "'''tiefgstellt'''",
-'diff-sup' => "'''hochgstellt'''",
-'diff-strike' => "'''durgstriche'''",
+'history-title' => 'Versionsgschicht vo „$1“',
+'difference' => '(Unterschide zwüsche Versione)',
+'lineno' => 'Zyle $1:',
+'compareselectedversions' => 'Usgwählti Versione verglyche',
+'showhideselectedversions' => 'Uusgwehlti Versione zeige/verstecke',
+'editundo' => 'rückgängig',
+'diff-multi' => '(Der Versioneverglych zeigt ou d Änderige vo {{PLURAL:$1|1 Version|$1 Versione}} derzwüsche.)',
# Search results
'searchresults' => 'Suech-Ergäbnis',
@@ -1001,29 +1016,25 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
'searchresulttext' => 'Für wiiteri Informatione zuem Sueche uff {{SITENAME}} chönne Si mol uff [[{{MediaWiki:Helppage}}|{{int:help}}]] luege.',
'searchsubtitle' => 'Dyyni Suechaafrog: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|alli Syte, wu mit „$1“ aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alli Syte, wu uf „$1“ vergleiche]])',
'searchsubtitleinvalid' => 'Für d Suechaafrag «$1»',
-'noexactmatch' => "'''Es git kei Syte mit em Tiel „$1“.'''
-Du chasch die [[:$1|Syte nöu schrybe]].",
-'noexactmatch-nocreate' => "'''S git kei Syte mit em Titel „$1“.'''",
'toomanymatches' => 'D Aazahl vu dr Suechergebniss isch z gross, bitte versuech e anderi Abfrog.',
'titlematches' => 'Iberyystimmige mit Sytentitel',
'notitlematches' => 'Kei Iberyystimmige mit Sytetitel',
'textmatches' => 'Iberyystimmige mit Inhalte',
'notextmatches' => 'Kei Iberyystimmige mit Inhalte',
-'prevn' => 'vorderi $1',
-'nextn' => 'nächschti $1',
+'prevn' => '{{PLURAL:$1|vorige|vorigi $1}}',
+'nextn' => '{{PLURAL:$1|nächschte|nächschti $1}}',
'prevn-title' => '{{PLURAL:$1|Vorig Ergebnis|Vorigi $1 Ergebnis}}',
'nextn-title' => '{{PLURAL:$1|Negscht Ergebnis|Negschti $1 Ergebnis}}',
'shown-title' => 'Zeig $1 {{PLURAL:$1|Ergebnis|Ergebnis}} pro Syte',
-'viewprevnext' => '($1) ($2) aazeige; ($3) uf ds Mal',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) aazeige; ($3) uf ds Mal',
'searchmenu-legend' => 'Suechoptione',
'searchmenu-exists' => "* Syte '''[[$1]]'''",
'searchmenu-new' => "'''[[:$1|Leg d Syte ''$1'' in dem Wiki aa!]]'''",
'searchhelp-url' => 'Help:Hilf',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alli Syte, wu mit dem Suechbegriff aafange]]',
'searchprofile-articles' => 'Inhaltssyte',
-'searchprofile-articles-and-proj' => 'Inhaltssyte & Projäkt',
-'searchprofile-project' => 'Projäkt',
-'searchprofile-images' => 'Dateie',
+'searchprofile-project' => 'Hilf- un Projäktsyte',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Erwyteret',
'searchprofile-articles-tooltip' => 'Sueche in $1',
@@ -1031,8 +1042,6 @@ Du chasch die [[:$1|Syte nöu schrybe]].",
'searchprofile-images-tooltip' => 'Noch Bilder sueche',
'searchprofile-everything-tooltip' => 'Gsamte Inhalt dursueche (au d Diskussionssyte)',
'searchprofile-advanced-tooltip' => 'Suech in wytere Namensryym',
-'prefs-search-nsdefault' => 'Standard-Namensryym:',
-'prefs-search-nscustom' => 'Suech in wytere Namensryym:',
'search-result-size' => '$1 ({{PLURAL:$2|1 Wort|$2 Werter}})',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Wyterleitig $1)',
@@ -1045,11 +1054,12 @@ Du chasch die [[:$1|Syte nöu schrybe]].",
'search-mwsuggest-disabled' => 'kei Vorschleg',
'search-relatedarticle' => 'Verwandti',
'mwsuggest-disable' => 'Vorschleg per Ajax deaktiviere',
+'searcheverything-enable' => 'In alle Namensryym sueche',
'searchrelated' => 'verwandt',
'searchall' => 'alli',
'showingresults' => "Do {{PLURAL:$1|isch '''1''' Ergebnis|sin '''$1''' Ergebniss}}, s fangt aa mit dr Nummerer '''$2.'''",
'showingresultsnum' => "Do {{PLURAL:$3|isch '''1''' Ergebnis|sin '''$3''' Ergebniss}}, s fangt aa mit dr Nummere '''$2.'''",
-'showingresultstotal' => "S {{PLURAL:$4|folgt s Suechergebnis '''$1''' vu '''$3:'''|folge d Suechergebniss '''$1–$2''' vu '''$3:'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnis '''$1 - $2''' vu '''$3'''}} fir '''$4'''",
'nonefound' => "'''Hiiwyys:''' S wäre standardmässig nume e Teil Namensryym dursuecht. Setz ''all:'' vor Dyy Suechbegriff go alli Syte (mit Diskussionssyte, Vorlage usw.) dursueche oder diräkt dr Name vum Namensruum, wu sett dursuecht wäre.",
'search-nonefound' => 'Fir Dyyni Suechaafrog sin keini Ergebniss gfunde wore.',
'powersearch' => 'Erwytereti Suechi',
@@ -1057,111 +1067,148 @@ Du chasch die [[:$1|Syte nöu schrybe]].",
'powersearch-ns' => 'Suech in Namensryym:',
'powersearch-redir' => 'Wyterleitige aazeige',
'powersearch-field' => 'Suech no:',
+'powersearch-togglelabel' => 'Wehl uus:',
+'powersearch-toggleall' => 'Alli',
+'powersearch-togglenone' => 'Keini',
'search-external' => 'Externi Suech',
'searchdisabled' => 'D {{SITENAME}}-Suech isch deaktiviert. Du chasch mit Google sueche, s cha aber syy ass dr Suechindex vu Google fir {{SITENAME}} veraltet isch.',
+# Quickbar
+'qbsettings' => 'Syteleischte',
+'qbsettings-none' => 'Keini',
+'qbsettings-fixedleft' => 'Links, fescht',
+'qbsettings-fixedright' => 'Rächts, fescht',
+'qbsettings-floatingleft' => 'Links, in dr Schwebi',
+'qbsettings-floatingright' => 'Rächts, in dr Schwebi',
+
# Preferences page
-'preferences' => 'Yystellige',
-'mypreferences' => 'Ystellige',
-'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
-'prefsnologin' => 'Nid aagmäldet',
-'prefsnologintext' => 'Du muesch <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} aagmäldet]</span> sy, für Benutzerystellige chönne z ändere',
-'prefsreset' => 'Du hesch itz wider Standardystellige',
-'qbsettings' => 'Syteleischte',
-'qbsettings-none' => 'Keini',
-'qbsettings-fixedleft' => 'Links, fescht',
-'qbsettings-fixedright' => 'Rächts, fescht',
-'qbsettings-floatingleft' => 'Links, in dr Schwebi',
-'qbsettings-floatingright' => 'Rächts, in dr Schwebi',
-'changepassword' => 'Passwort ändere',
-'skin' => 'Skin',
-'skin-preview' => 'Vorschou',
-'math' => 'TeX',
-'dateformat' => 'Datumsformat',
-'datedefault' => 'kei Aagab',
-'datetime' => 'Datum un Zyt',
-'math_failure' => 'Parser-Fähler',
-'math_unknown_error' => 'Nit bekannte Fähler',
-'math_unknown_function' => 'Nit bekannti Funktion',
-'math_lexing_error' => "'Lexing'-Fähler",
-'math_syntax_error' => 'Syntaxfähler',
-'math_image_error' => 'd PNG-Konvertierig het nit funktioniert;
-prief di korrekt Installation vu latex, dvips, gs un convert',
-'math_bad_tmpdir' => 'S temporär Verzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
-'math_bad_output' => 'S Ziilverzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
-'math_notexvc' => 'S texvc-Programm isch nit gfunde wore. Bitte acht gee uf math/README.',
-'prefs-personal' => 'Benutzerdate',
-'prefs-rc' => 'Letschti Änderige',
-'prefs-watchlist' => 'Beobachtigslischte',
-'prefs-watchlist-days' => 'Aazahl vu dr Täg, wu d Beobchtigslischt standardmässig soll umfasse:',
-'prefs-watchlist-days-max' => '(Maximal 7 Täg)',
-'prefs-watchlist-edits' => 'Maximali Zahl vu dr Yyträg:',
-'prefs-watchlist-edits-max' => '(Maximali Aazahl: 1000)',
-'prefs-misc' => 'Verschidnigs',
-'prefs-resetpass' => 'Passwort ändere',
-'saveprefs' => 'Änderige spychere',
-'resetprefs' => 'Änderige doch nid spychere',
-'restoreprefs' => 'Alli Standardyystellige widerhärstelle',
-'textboxsize' => 'Tekscht-Ygab',
-'prefs-edit-boxsize' => 'Gressi vum Bearbeitigsfänschter.',
-'rows' => 'Zylene',
-'columns' => 'Spaltene',
-'searchresultshead' => 'Suech-Ergäbnis',
-'resultsperpage' => 'Träffer pro Syte',
-'contextlines' => 'Zyle pro Träffer',
-'contextchars' => 'Zeiche pro Zyle',
-'stub-threshold' => 'Gleichformatierig <a href="#" class="stub">vu chleine Syte</a> (in Byte):',
-'recentchangesdays' => 'Aazahl vu dr Täg, wu d Lischt vu dr „Letschte Änderige“ standardmässig soll umfasse:',
-'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Tag|Täg}})',
-'recentchangescount' => 'Aazahl vu dr Yyträg in dr «letschte Änderige», in dr Versionsgschicht un in dr Logbiecher:',
-'savedprefs' => 'Dyni Ystellige sy gspycheret worde.',
-'timezonelegend' => 'Zytzone:',
-'timezonetext' => 'Zytdifferänz i Stunden aagä zwüsche der Serverzyt u dyre Lokalzyt',
-'localtime' => 'Ortszyt:',
-'timezoneselect' => 'Zytzone:',
-'timezoneuseserverdefault' => 'Standardzyt vum Server',
-'timezoneuseoffset' => 'Anderi (Unterschiid aagee)',
-'timezoneoffset' => 'Unterschiid¹',
-'servertime' => 'Aktuälli Serverzyt:',
-'guesstimezone' => 'Vom Browser la ysetze',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asie',
-'timezoneregion-atlantic' => 'Atlantische Ozean',
-'timezoneregion-australia' => 'Auschtralie',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indische Ozean',
-'timezoneregion-pacific' => 'Pazifische Ozean',
-'allowemail' => 'andere Benutzer erlaube, dass si Ihne E-Mails chenne schicke',
-'prefs-searchoptions' => 'Suechoptione',
-'prefs-namespaces' => 'Namensryym',
-'defaultns' => 'Namensrüüm wo standardmäässig söll gsuecht wärde:',
-'default' => 'Voryystellig',
-'files' => 'Bilder',
-'prefs-custom-css' => 'Benutzerdefinierti CSS',
-'prefs-custom-js' => 'Benutzerdefiniert JS',
+'preferences' => 'Yystellige',
+'mypreferences' => 'Ystellige',
+'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
+'prefsnologin' => 'Nid aagmäldet',
+'prefsnologintext' => 'Du muesch <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagmäldet]</span> sy, für Benutzerystellige chönne z ändere',
+'changepassword' => 'Passwort ändere',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Vorschou',
+'prefs-math' => 'TeX',
+'datedefault' => 'kei Aagab',
+'prefs-datetime' => 'Datum un Zyt',
+'prefs-personal' => 'Benutzerdate',
+'prefs-rc' => 'Letschti Änderige',
+'prefs-watchlist' => 'Beobachtigslischte',
+'prefs-watchlist-days' => 'Aazahl vu dr Täg, wu d Beobchtigslischt standardmässig soll umfasse:',
+'prefs-watchlist-days-max' => '(Maximal 7 Täg)',
+'prefs-watchlist-edits' => 'Maximali Zahl vu dr Yyträg:',
+'prefs-watchlist-edits-max' => '(Maximali Aazahl: 1000)',
+'prefs-watchlist-token' => 'Beobachtigslischte-Chännzeiche:',
+'prefs-misc' => 'Verschidnigs',
+'prefs-resetpass' => 'Passwort ändere',
+'prefs-email' => 'E-Mail-Optione',
+'prefs-rendering' => 'Sytedarstellig',
+'saveprefs' => 'Änderige spychere',
+'resetprefs' => 'Änderige doch nid spychere',
+'restoreprefs' => 'Alli Standardyystellige widerhärstelle',
+'prefs-editing' => 'Tekscht-Ygab',
+'prefs-edit-boxsize' => 'Gressi vum Bearbeitigsfänschter.',
+'rows' => 'Zylene',
+'columns' => 'Spaltene',
+'searchresultshead' => 'Suech-Ergäbnis',
+'resultsperpage' => 'Träffer pro Syte',
+'contextlines' => 'Zyle pro Träffer',
+'contextchars' => 'Zeiche pro Zyle',
+'stub-threshold' => 'Gleichformatierig <a href="#" class="stub">vu chleine Syte</a> (in Byte):',
+'recentchangesdays' => 'Aazahl vu dr Täg, wu d Lischt vu dr „Letschte Änderige“ standardmässig soll umfasse:',
+'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Tag|Täg}})',
+'recentchangescount' => 'Aazahl vu Bearbeitige, wu standardmässig aazeigt wäre:',
+'prefs-help-recentchangescount' => 'Des umfasst d Lischt vu dr letschte Änderige, d Versionsgschicht un d Logbiecher.',
+'prefs-help-watchlist-token' => 'S Uusfille vu däm Fäld mit eme gheime Schlissel generiert e RSS-Feed fir Dyy Beobachtigslischt.
+E jede, wu dää Schlissel chännt, chaa Dyy Beobachtigslischt bschaue. Wehl wäge däm e sichere Wärt.
+Do het s e zuefellig generierte Wärt, wu du chasch bruche: $1',
+'savedprefs' => 'Dyni Ystellige sy gspycheret worde.',
+'timezonelegend' => 'Zytzone:',
+'localtime' => 'Ortszyt:',
+'timezoneuseserverdefault' => 'Standardzyt vum Server',
+'timezoneuseoffset' => 'Anderi (Unterschiid aagee)',
+'timezoneoffset' => 'Unterschiid¹',
+'servertime' => 'Aktuälli Serverzyt:',
+'guesstimezone' => 'Vom Browser la ysetze',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-atlantic' => 'Atlantische Ozean',
+'timezoneregion-australia' => 'Auschtralie',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indische Ozean',
+'timezoneregion-pacific' => 'Pazifische Ozean',
+'allowemail' => 'andere Benutzer erlaube, dass si Ihne E-Mails chenne schicke',
+'prefs-searchoptions' => 'Suechoptione',
+'prefs-namespaces' => 'Namensryym',
+'defaultns' => 'Sunscht in däne Namensryym sueche:',
+'default' => 'Voryystellig',
+'prefs-files' => 'Bilder',
+'prefs-custom-css' => 'Benutzerdefinierti CSS',
+'prefs-custom-js' => 'Benutzerdefiniert JS',
+'prefs-reset-intro' => 'Du chasch die Syte verwände go d Yystellige uf dr Standard zrucksetze.
+Des cha nimmi ruckgängig gmacht wäre.',
+'prefs-emailconfirm-label' => 'E-Mail-Bstätigung:',
+'prefs-textboxsize' => 'Greßi vum Bearbeitigsfänschter',
+'youremail' => 'E-Mail-Adräss:',
+'username' => 'Benutzername:',
+'uid' => 'Benutzer-ID:',
+'prefs-memberingroups' => 'Mitglid vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
+'prefs-registration' => 'Aamäldzyt:',
+'yourrealname' => 'Echte Name:',
+'yourlanguage' => 'Sproch:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Unterschrift:',
+'prefs-help-signature' => 'Byyträg uf Diskussionssyte sotte mit „<nowiki>~~~~</nowiki>“ unterschribe wäre, was derno in d Unterschrift mit eme Zytstämpfel umgwandlet wird.',
+'badsig' => 'Dr Syntax vu dr Signatur isch nid giltig; bitte d HTML iberpriefe.',
+'badsiglength' => 'Dyyni Unterschrift isch z lang. Si derf hegschtens $1 {{PLURAL:$1|Zeiche|Zeiche}} lang syy.',
+'yourgender' => 'Gschlächt:',
+'gender-unknown' => 'Kei Aagab',
+'gender-male' => 'männlig',
+'gender-female' => 'wyyblig',
+'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
+'email' => 'E-Mail',
+'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
+'prefs-help-email' => '* <strong>E-Mail-Adrässe</strong> (optional): We du en E-Mail-Adrässen aagisch, überchömen anderi Benutzer d Müglechkeit, di über dyni Benutzer- oder Benutzer_Diskussionsyte z kontaktiere. Im Fall das du mal ds Passwort sötsch vergässe ha, cha dir es nöis Zuefalls-Passwort gmailet wärde.<br />
+** <strong>Signatur</strong> (optional): D Signatur wird ygsetzt, we du e Diskussionsbytrag mit «<nowiki>~~~~</nowiki>» unterschrybsch; we du ke spezielli Signatur aagisch, de wird eifach di Benutzername mit emne Link uf dyni Benutzersyten ygfüegt.',
+'prefs-help-email-required' => 'S brucht e giltigi E-Mail-Adräss.',
+'prefs-info' => 'Basisinformatione',
+'prefs-i18n' => 'Internationalisierig',
+'prefs-signature' => 'Unterschrift',
+'prefs-dateformat' => 'Datumsformat',
+'prefs-timeoffset' => 'Zytunterschid',
+'prefs-advancedediting' => 'Erwytereti Optione',
+'prefs-advancedrc' => 'Erwytereti Optione',
+'prefs-advancedrendering' => 'Erwytereti Optione',
+'prefs-advancedsearchoptions' => 'Erwytereti Optione',
+'prefs-advancedwatchlist' => 'Erwytereti Optione',
+'prefs-display' => 'Aazeigoptione',
+'prefs-diffs' => 'Versionsverglych',
# User rights
-'userrights' => 'Benutzerrächtsverwaltig', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Verwalt d Gruppezuegherigkeit',
-'userrights-user-editname' => 'Benutzername:',
-'editusergroup' => 'Ändere vo Benutzerrächt',
-'editinguser' => "Benutzerrächt ändere vu '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Bearbeit d Gruppezuegherigkeit vum Benutzer',
-'saveusergroups' => 'Spychere d Gruppezuegherigkeit',
-'userrights-groupsmember' => 'Mitgliid vu:',
-'userrights-groups-help' => 'Du chasch d Gruppezuegherigkeit fir dää Benutzer ändere:
+'userrights' => 'Benutzerrächtsverwaltig',
+'userrights-lookup-user' => 'Verwalt d Gruppezuegherigkeit',
+'userrights-user-editname' => 'Benutzername:',
+'editusergroup' => 'Ändere vo Benutzerrächt',
+'editinguser' => "Benutzerrächt ändere vu '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Bearbeit d Gruppezuegherigkeit vum Benutzer',
+'saveusergroups' => 'Spychere d Gruppezuegherigkeit',
+'userrights-groupsmember' => 'Mitgliid vu:',
+'userrights-groupsmember-auto' => 'Yygschlosse Mitglid vu:',
+'userrights-groups-help' => 'Du chasch d Gruppezuegherigkeit fir dää Benutzer ändere:
* E markiert Chäschtli bedytet, ass dr Benutzer Mitgliid vu däre Gruppe isch
* E * bedytet, ass Du s Benutzerrächt nit wider chasch zruckneh, wänn s erteilt isch (oder umgchehrt).',
-'userrights-reason' => 'Grund:',
-'userrights-no-interwiki' => 'Du hesch nit d Berächtigung, Benutzerrächt in andere Wiki z ändere.',
-'userrights-nodatabase' => 'D Datebank $1 git s nit oder si isch nit lokal.',
-'userrights-nologin' => 'Du muesch Di mit eme Ammanne-Benutzerkonto [[Special:UserLogin|aamälde]], zum Benutzerrächt z ändere.',
-'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee.',
-'userrights-changeable-col' => 'Gruppezuegherigkeit, wu Du chasch ändere',
-'userrights-unchangeable-col' => 'Gruppezuegherigkeit, wu Du nit chasch ändere',
+'userrights-reason' => 'Grund:',
+'userrights-no-interwiki' => 'Du hesch nit d Berächtigung, Benutzerrächt in andere Wiki z ändere.',
+'userrights-nodatabase' => 'D Datebank $1 git s nit oder si isch nit lokal.',
+'userrights-nologin' => 'Du muesch Di mit eme Ammanne-Benutzerkonto [[Special:UserLogin|aamälde]], zum Benutzerrächt z ändere.',
+'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee.',
+'userrights-changeable-col' => 'Gruppezuegherigkeit, wu Du chasch ändere',
+'userrights-unchangeable-col' => 'Gruppezuegherigkeit, wu Du nit chasch ändere',
# Groups
'group' => 'Grupp:',
@@ -1214,6 +1261,7 @@ prief di korrekt Installation vu latex, dvips, gs un convert',
'right-bigdelete' => 'Syte lesche mit grosse Versionsgschichte',
'right-deleterevision' => 'Lesche un Widerherstelle vu einzelne Versione',
'right-deletedhistory' => 'Gleschti Versione in der Versionsgschicht aaluege, ohni dr zuegherig Text',
+'right-deletedtext' => 'Gleschti Text un Versionsunterschid zwische gleschte Versionen aaluege',
'right-browsearchive' => 'Gleschti Syte sueche',
'right-undelete' => 'Syte widerherstelle',
'right-suppressrevision' => 'Versione, wu au vor Ammanne verborge sin, aaluege un widerherstelle',
@@ -1227,6 +1275,8 @@ prief di korrekt Installation vu latex, dvips, gs un convert',
'right-editprotected' => 'Gschitzti Syte bearbeite (ohni Kaskadeschutz)',
'right-editinterface' => 'Benutzerinterface bearbeite',
'right-editusercssjs' => 'Bearbeite vu CSS- und JS-Dateie vu andere Benutzer',
+'right-editusercss' => 'Bearbeite vu CSS-Dateie vu andere Benutzer',
+'right-edituserjs' => 'Bearbeite vu JS-Dateie vu andere Benutzer',
'right-rollback' => 'D Bearbeitige vum letschte Benutzer, wu ne einzelni Syte bearbeitet het, schnell zrucksetze',
'right-markbotedits' => 'Schnell zruckgsetzti Bearbeitige as Bot-Bearbeitig markiere',
'right-noratelimit' => 'Kei Bschränkig dur Limit',
@@ -1243,6 +1293,8 @@ prief di korrekt Installation vu latex, dvips, gs un convert',
'right-siteadmin' => 'Datebank sperre un entsperre',
'right-reset-passwords' => 'S Passwort vun eme andere Benutzer zrucksetze',
'right-override-export-depth' => 'Exportier Syte mitsamt dr vergleichte Syte bis zuen ere Tiefi vu 5',
+'right-versiondetail' => 'Detailinformatione iber d Software un d Versione aazeige',
+'right-sendemail' => 'E-Mail an anderi Benutzer schicke',
# User rights log
'rightslog' => 'Benutzerrächt-Logbuech',
@@ -1292,6 +1344,15 @@ prief di korrekt Installation vu latex, dvips, gs un convert',
'recentchanges-legend' => 'Optione vu dr Aazeig',
'recentchangestext' => 'Uff däre Syte chönne Si die letschte Änderige in däm Wiki aaluege.',
'recentchanges-feed-description' => 'Di letschten Änderige vo {{SITENAME}} i däm Feed abonniere.',
+'recentchanges-label-legend' => 'Legänd: $1.',
+'recentchanges-legend-newpage' => '$1 - neji Syte',
+'recentchanges-label-newpage' => 'Die Bearbeitig het e neji Syte aagleit',
+'recentchanges-legend-minor' => '$1 - chleini Änderig',
+'recentchanges-label-minor' => 'Des isch e chleini Änderig',
+'recentchanges-legend-bot' => '$1 - Bott-Bearbeitig',
+'recentchanges-label-bot' => 'Die Bearbeitig isch dur e Bott uusgfiert wore',
+'recentchanges-legend-unpatrolled' => '$1 - nit-gsichteti Bearbeitig',
+'recentchanges-label-unpatrolled' => 'Die Bearbeitig isch nonig vun eme Fäldhieter aagluegt wore',
'rcnote' => "Azeigt {{PLURAL:$1|wird '''1''' Änderig|wärde di letschte '''$1''' Änderige}} {{PLURAL:$2|vom letschte Tag|i de letschte '''$2''' Täg}} (Stand: $4, $5)",
'rcnotefrom' => 'Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).',
'rclistfrom' => '<small>Nöji Änderige ab $1 aazeige (UTC)</small>',
@@ -1318,6 +1379,8 @@ prief di korrekt Installation vu latex, dvips, gs un convert',
# Recent changes linked
'recentchangeslinked' => 'Verlinktes prüefe',
+'recentchangeslinked-feed' => 'Verlinktes prüefe',
+'recentchangeslinked-toolbox' => 'Verlinktes prüefe',
'recentchangeslinked-title' => 'Änderigen a Sytene, wo „$1“ druf verlinkt',
'recentchangeslinked-noresult' => 'Kener Änderigen a verlinkte Sytenen im usgwählte Zytruum.',
'recentchangeslinked-summary' => "Die Spezialsyte zeigt d Änderige vo allne Syte, wo ei vo dir bestimmti Syte druf verlinkt, bzw. vo allne Syte, wo zu eire vo dir bestimmte Kategorie ghöre.
@@ -1328,8 +1391,8 @@ Sytene, wo zu dyre [[Special:Watchlist|Beobachtigslischte]] ghöre, erschyne '''
# Upload
'upload' => 'Datei uffelade',
'uploadbtn' => 'Bild lokal ufelade',
-'reupload' => 'Abbräche',
'reuploaddesc' => 'Abbrächen un zrugg zue dr Syte "Uffelade"',
+'upload-tryagain' => 'Gändereti Dateibschryybig abschicke',
'uploadnologin' => 'Nit aagmäldet',
'uploadnologintext' => 'Si mien [[Special:UserLogin|aagmäldet syy]], zum Dateie uffelade z chenne.',
'upload_directory_missing' => 'S Upload-Verzeichnis ($1) fählt un het au dur dr Netzserver nit chenne aagleit wäre.',
@@ -1362,6 +1425,7 @@ Lueg au d [[Special:NewFiles|Galerii vu neije Dateie]] fir e visuälle Iberblick
'minlength1' => 'Dateinäme mien zmindescht e Buechstab lang syy.',
'illegalfilename' => 'Im Dateiname „$1“ het s zmindescht ei Zeiche, wu nit erlaubt isch. Bitte gib dr Datei e andere Name un versuech nomol si uffezlade.',
'badfilename' => 'Dr Dateiname isch in „$1“ gänderet wore.',
+'filetype-mime-mismatch' => 'Dateierwyterig passt nit zum MIME-Typ.',
'filetype-badmime' => 'Dateie mit em MIME-Typ „$1“ derfe nit uffeglade wäre.',
'filetype-bad-ie-mime' => 'Die Datei cha nit uffeglade wäre, wel dr Internet Explorer si as „$1“ kennt, wu e nit erlaubte, villicht gferlige Dateityp isch.',
'filetype-unwanted-type' => "'''„.$1“''' isch e Dateiformat, wu nit gwinscht isch. Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}}: $2.",
@@ -1382,7 +1446,6 @@ Du muesch d Bschryybigssyte noch em Uffelade vu dr Datei no manuäll bearbeite.
* Name vu Datei, wu soll uffeglade were: '''<tt>[[:$1]]</tt>'''
* Name vu dr Datei, wu s scho git: '''<tt>[[:$2]]</tt>'''
Bitte wehl e andre Name.",
-'fileexists-thumb' => "<center>'''Vorhandeni Datei'''</center>",
'fileexists-thumbnail-yes' => "Die Datei isch schyyns e Bild mit ere verringerte Gressi ''(thumbnail)''. [[$1|thumb]]
Bitte prief d Datei '''<tt>[[:$1]]</tt>'''.
Wänn s Bild in dr Originalgressi isch, no isch s nit netig, ass e extra Vorschaubild uffeglade wird.",
@@ -1396,6 +1459,7 @@ Wänn Du die Datei einewäg wit uffelade, gang bitte zruck un ändere dr Name.
'file-deleted-duplicate' => 'E identischi Version vu däre Datei ([[$1]]) isch friejer scho mol glescht wore. Iberprief s Leschlogbuech, voreb Du si uffeladesch.',
'successfulupload' => 'Erfolgryych uffegelade',
'uploadwarning' => 'Warnig',
+'uploadwarning-text' => 'Bitte tue unte d Dateibsschryybig ändere un versuech s nomol.',
'savefile' => 'Datei spychere',
'uploadedimage' => 'het „[[$1]]“ ufeglade',
'overwroteimage' => 'het e neiji Version vu „[[$1]]“ uffeglade',
@@ -1403,11 +1467,14 @@ Wänn Du die Datei einewäg wit uffelade, gang bitte zruck un ändere dr Name.
'uploaddisabledtext' => 'S Uffelade vu Dateie isch deaktiviert.',
'php-uploaddisabledtext' => 'S Uffelade vu PHP-Dateie isch deaktiviert wore. Bitte iberprief d file_uploads-Yystellig.',
'uploadscripted' => 'In däre Datei git s HTML- oder Scriptcode, wu fälschligerwyys vun eme Webbrowser usgfiert chennt were.',
-'uploadcorrupt' => 'Die Datei isch bschädigt oder het e falschi Datei-Erwyterig. Bitte iberprief d Datei un lad si no mol uffe.',
'uploadvirus' => 'In däre Datei het s e Virus! Detail: $1',
+'upload-source' => 'Quälldatei',
'sourcefilename' => 'Quälldatei:',
+'sourceurl' => 'Quäll-URL:',
'destfilename' => 'Ziilname:',
'upload-maxfilesize' => 'Maximali Dateigressi: $1',
+'upload-description' => 'Dateibschryybig',
+'upload-options' => 'Optione fir s Uffelade',
'watchthisupload' => 'Die Syte beobachte',
'filewasdeleted' => 'E Datei mit däm Name isch scho mol uffeglade wore un isch in dr Zwischezyt wider glescht wore. Bitte prief zerscht dr Yytrag im $1, voreb Du die Datei wirkli spycheresch.',
'upload-wasdeleted' => "'''Obacht: Du ladsch e Datei uffe, wu scho mol glescht woren isch.'''
@@ -1417,15 +1484,46 @@ Zue Dyynere Information chunnt do s Lesch-Logbuech mit dr Begrindig fir di friej
'filename-bad-prefix' => "Dr Dateiname fangt mit '''„$1“''' aa. Des isch isch normalerwyys dr Dateiname, wu vun ere Digitalkamera vorgee wird un d Datei nit bschryybt.
Bitte gib dr Datei e Name, wu dr Inhalt besser bschryybt.",
-'upload-proto-error' => 'Falschs Protokoll',
-'upload-proto-error-text' => 'D URL muess mit <code>http://</code> oder <code>ftp://</code> aafange.',
-'upload-file-error' => 'Interne Fähler',
-'upload-file-error-text' => 'Bim Aalege vun ere temporäre Datei uf em Server isch e interne Fähler uftrette.
+'upload-proto-error' => 'Falschs Protokoll',
+'upload-proto-error-text' => 'D URL muess mit <code>http://</code> oder <code>ftp://</code> aafange.',
+'upload-file-error' => 'Interne Fähler',
+'upload-file-error-text' => 'Bim Aalege vun ere temporäre Datei uf em Server isch e interne Fähler uftrette.
Bitte informier e [[Special:ListUsers/sysop|Ammann]].',
-'upload-misc-error' => 'Nit bekannte Fähler bim Uffelade',
-'upload-misc-error-text' => 'Bim Uffelade isch e nit bekannte Fähler uftrette.
+'upload-misc-error' => 'Nit bekannte Fähler bim Uffelade',
+'upload-misc-error-text' => 'Bim Uffelade isch e nit bekannte Fähler uftrette.
Prief d URL uf Fähler un dr Online-Status vu dr Syte un versuech s no mol.
Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
+'upload-too-many-redirects' => 'In dr URL het s zvyl Wyterleitige',
+'upload-unknown-size' => 'Nit bekannti Greßi',
+'upload-http-error' => 'E HTTP-Fähler isch ufträtte: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zuegriff verweigeret',
+'img-auth-nopathinfo' => 'PATH_INFO fählt.
+Dyy Server isch nit derfir yygrichtet, die Information wyterzgee.
+S chennt CGI-basiert syy un unterstitzt img_auth nit.
+Lueg http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Dr gwinscht Pfad isch nit im konfigurierte Uploadverzeichnis.',
+'img-auth-badtitle' => 'Giltige Titel vu „$1“ cha nit aagleit wäre.',
+'img-auth-nologinnWL' => 'Du bisch nit aagmäldet un „$1“ isch nit in dr wyße Lischt.',
+'img-auth-nofile' => 'Datei „$1“ git s nit.',
+'img-auth-isdir' => 'Du versuechsch, uf e Verzeichnis „$1“ zuezgryfe.
+Nume Dateizuegriff isch erlaubt.',
+'img-auth-streaming' => 'Am Lade vu „$1“.',
+'img-auth-public' => 'img_auth.php git Dateie vun eme privaten Wiki uus.
+Des Wiki isch as effentlig Wiki konfiguriert.
+Us Sicherheitsgrinde isch img_auth.php deaktiviert.',
+'img-auth-noread' => 'Benutzer derf „$1“ nit läse.',
+
+# HTTP errors
+'http-invalid-url' => 'Nit giltigi URL: $1',
+'http-invalid-scheme' => 'URL mit em Schema „$1“ wäre nit unterstitzt',
+'http-request-error' => 'Fähler bim Verschicke vu dr Aafrog.',
+'http-read-error' => 'Fähler bim Läse vu HTTP.',
+'http-timed-out' => 'Uuszyt bim HTTP-Versuech.',
+'http-curl-error' => 'Fähler bim Ufsueche vu dr URL: $1',
+'http-host-unreachable' => 'URL isch nit z verwitsche',
+'http-bad-status' => 'Bi dr HTTP-Aafrog isch e Fähler ufdrätte: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL isch nit z verwitsche',
@@ -1434,6 +1532,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
'upload-curl-error28-text' => 'D Syte brucht z lang fir e Antwort. Prief, eb d Syte online isch, wart e Rung un versuech s derno nomol. S cha au sinnvoll syy, s speter nomol z versueche.',
'license' => 'Lizänz:',
+'license-header' => 'Lizänzierig',
'nolicense' => 'kei Voruswahl',
'license-nopreview' => '(s isch kei Vorschau verfiegbar)',
'upload_source_url' => ' (giltige, effentli zuegänglig URL)',
@@ -1452,6 +1551,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
'listfiles_count' => 'Versione',
# File description page
+'file-anchor-link' => 'Bildli',
'filehist' => 'Dateiversione',
'filehist-help' => 'Klick uf e Zytpunkt zu aazeige, wie s dert usgsäh het.',
'filehist-deleteall' => 'Alli Versione lesche',
@@ -1466,6 +1566,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
'filehist-dimensions' => 'Mäß',
'filehist-filesize' => 'Dateigrößi',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Datei fählt',
'imagelinks' => 'Dateigleicher',
'linkstoimage' => 'Di {{PLURAL:$1|Syte|$1 Sytene}} händ en Link zu dem Bild:',
'linkstoimage-more' => 'Meh as {{PLURAL:$1|ei Syte vergleicht|$1 Syte vergleiche}} uf die Datei.
@@ -1475,15 +1576,14 @@ E [[Special:WhatLinksHere/$2|vollständigi Lischt]] isch verfiegbar.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meh Gleicher]] fir die Datei.',
'redirectstofile' => 'Die {{PLURAL:$1|Datei leitet|$1 Dateie leite}} uf die Datei wyter:',
'duplicatesoffile' => 'Die {{PLURAL:$1|Datei isch e Duplikat|$1 Dateie sin Duplikat}} vu däre Datei ([[Special:FileDuplicateSearch/$2|meh Detail]]):',
-'sharedupload' => 'Die Datei isch vu $1. S cha syy, ass si vu andere Projekt brucht wird.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Fir wyteri Informatione lueg d $1.',
-'shareduploadwiki-desc' => 'Do chunnt dr Bschryybig vum $1.',
-'shareduploadwiki-linktext' => 'Datei-Bschryybigssyte',
-'noimage' => 'Es git kei Datei mit däm Name, aber du chasch se $1.',
-'noimage-linktext' => 'ufelade',
+'sharedupload' => 'Die Datei isch vu $1. S cha syy, ass si vu andere Projekt brucht wird.',
+'sharedupload-desc-there' => 'Die Datei isch vu $1 un derf vu andere Projäkt bruucht wäre. Lueg uf dr [$2 Dateibschryybigssyte] no wytere Informatione.',
+'sharedupload-desc-here' => 'Die Datei isch vu $1 un derf vu andere Projäkt bruucht wäre. D Bschryybig vu dr [$2 Dateibschryybigssyte] wird unten aazeigt.',
+'filepage-nofile' => 'S git kei Datei mit däm Name.',
+'filepage-nofile-link' => 'S git no kei Datei mit däm Name, aber Du chasch [$1 si ufelade].',
'uploadnewversion-linktext' => 'E nöui Version vo dere Datei ufelade',
-'shared-repo-from' => 'vu $1', # $1 is the repository name
-'shared-repo' => 'eme gmeinsame Repositorium', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'vu $1',
+'shared-repo' => 'eme gmeinsame Repositorium',
# File reversion
'filerevert' => 'Zrucksetze vu „$1“',
@@ -1512,6 +1612,7 @@ E [[Special:WhatLinksHere/$2|vollständigi Lischt]] isch verfiegbar.',
** Urheberrächtsverletzig
** Duplikat',
'filedelete-edit-reasonlist' => 'Leschgrind bearbeite',
+'filedelete-maintenance' => 'S Leschen un Widerhärstelle vu Dateie isch wäge Wartigsarbete e Zytlang deaktiviert.',
# MIME search
'mimesearch' => 'MIME-Suechi',
@@ -1533,7 +1634,7 @@ Iberprief anderi Gleicher zue dr Vorlage, voreb Du die leschesch.',
# Random page
'randompage' => 'Zuefalls-Artikel',
-'randompage-nopages' => 'Im Namensruum „$1“ sin kei Syte vorhande.',
+'randompage-nopages' => 'S het kei Syte in {{PLURAL:$2|däm Namensruum|däne Namensryym}}: $1.',
# Random redirect
'randomredirect' => 'Zuefälligi Wyterleitig',
@@ -1545,6 +1646,7 @@ Iberprief anderi Gleicher zue dr Vorlage, voreb Du die leschesch.',
'statistics-header-edits' => 'Bearbeitigsstatischtik',
'statistics-header-views' => 'Sytenufruefstatischtik',
'statistics-header-users' => 'Benutzer-Statischtik',
+'statistics-header-hooks' => 'Anderi Statischtike',
'statistics-articles' => 'Inhaltssyte',
'statistics-pages' => 'Syte',
'statistics-pages-desc' => 'Alli Syten in däm Wiki, mit Diskussionssyte, Wyterleitige usw.',
@@ -1572,8 +1674,8 @@ In jedere Zyylete het s Gleicher zue dr erschte un dr zwote Wyterleitig un s Zii
'brokenredirects' => 'Kaputti Wyterleitige',
'brokenredirectstext' => 'Die Spezialsyte lischtet Wyterleitige uf, wu zue Artikel fiere, wu s gar nid git:',
-'brokenredirects-edit' => '(bearbeite)',
-'brokenredirects-delete' => '(lesche)',
+'brokenredirects-edit' => 'bearbeite',
+'brokenredirects-delete' => 'lesche',
'withoutinterwiki' => 'Sytenen ohni Links zu andere Sprache',
'withoutinterwiki-summary' => 'Die Syte vergleiche nit uf anderi Sprochversione.',
@@ -1680,7 +1782,7 @@ D Aazeig cha dur d Uuswahl vun eme Protokoll, eme Benutzername oder eme Sytename
# Special:Categories
'categories' => 'Kategorie',
-'categoriespagetext' => 'In däne Kategorie het s Syte oder Dateie.
+'categoriespagetext' => 'In {{PLURAL:$1|däre Kategorii|däne Kategorie}} het s Syte oder Dateie.
[[Special:UnusedCategories|Nit benutzte Kategorie]] wäre do nit ufgfiert.
Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
'categoriesfrom' => 'Zeig Kategorie ab:',
@@ -1688,8 +1790,9 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
'special-categories-sort-abc' => 'Sortierig no Alfabet',
# Special:DeletedContributions
-'deletedcontributions' => 'Gleschti Bytreg',
-'deletedcontributions-title' => 'Gleschti Bytreg',
+'deletedcontributions' => 'Gleschti Bytreg',
+'deletedcontributions-title' => 'Gleschti Bytreg',
+'sp-deletedcontributions-contribs' => 'Byyträg',
# Special:LinkSearch
'linksearch' => 'Netzgleicher',
@@ -1704,6 +1807,16 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
'listusersfrom' => 'Zeig Benutzer ab:',
'listusers-submit' => 'Zeig',
'listusers-noresult' => 'Kei Benutzer gfunde.',
+'listusers-blocked' => '(gsperrt)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lischt vu dr aktive Benutzer',
+'activeusers-intro' => 'Des isch e Lischt vu Benutzer, wu irgedebis bearbeitet hän {{PLURAL:$1|am letschte Tag|in dr letschte $1 Täg}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|Bearbeitig|Bearbeitige}} {{PLURAL:$3|am letschte Tag|in dr letschte $3 Täg}}',
+'activeusers-from' => 'Zeig Benutzer ab:',
+'activeusers-hidebots' => 'Bötli uusblände',
+'activeusers-hidesysops' => 'Ammanne (Administratore) uusblände',
+'activeusers-noresult' => 'Kei Benutzer gfunde.',
# Special:Log/newusers
'newuserlogpage' => 'Nejaamäldigs-Logbuech',
@@ -1714,17 +1827,23 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
'newuserlog-autocreate-entry' => 'Benutzerkonto isch automatisch aagleit wore',
# Special:ListGroupRights
-'listgrouprights' => 'Benutzergruppe-Rächt',
-'listgrouprights-summary' => 'Des isch e Liste vu dr Benutzergruppe, wu in däm Wiki definiert sin, un dr Rächt, wu dermit verbunde sin.
+'listgrouprights' => 'Benutzergruppe-Rächt',
+'listgrouprights-summary' => 'Des isch e Liste vu dr Benutzergruppe, wu in däm Wiki definiert sin, un dr Rächt, wu dermit verbunde sin.
Zuesätzligi Informatione iber einzelni Rächt git s [[{{MediaWiki:Listgrouprights-helppage}}|doo]].',
-'listgrouprights-group' => 'Grupp',
-'listgrouprights-rights' => 'Rächt',
-'listgrouprights-helppage' => 'Help:Grupperächt',
-'listgrouprights-members' => '(Mitgliiderlischt)',
-'listgrouprights-addgroup' => 'Cha Benutzer zue {{PLURAL:$2|däre Grupp|däne Gruppe}} zuefiege: $1',
-'listgrouprights-removegroup' => 'Cha Benutzer us {{PLURAL:$2|däre Grupp|däne Gruppe}} useneh: $1',
-'listgrouprights-addgroup-all' => 'Cha Benutzer zue allene Gruppe zuefiege',
-'listgrouprights-removegroup-all' => 'Cha Benutzer us allene Gruppe useneh',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Bewilligt Rächt</span>
+* <span class="listgrouprights-revoked">Entzoge Rächt</span>',
+'listgrouprights-group' => 'Grupp',
+'listgrouprights-rights' => 'Rächt',
+'listgrouprights-helppage' => 'Help:Grupperächt',
+'listgrouprights-members' => '(Mitgliiderlischt)',
+'listgrouprights-addgroup' => 'Cha Benutzer zue {{PLURAL:$2|däre Grupp|däne Gruppe}} zuefiege: $1',
+'listgrouprights-removegroup' => 'Cha Benutzer us {{PLURAL:$2|däre Grupp|däne Gruppe}} useneh: $1',
+'listgrouprights-addgroup-all' => 'Cha Benutzer zue allene Gruppe zuefiege',
+'listgrouprights-removegroup-all' => 'Cha Benutzer us allene Gruppe useneh',
+'listgrouprights-addgroup-self' => 'Cha {{PLURAL:$2|e Gruppe|Gruppe}} zum eigene Benutzerkonto zuefiege: $1',
+'listgrouprights-removegroup-self' => 'Cha {{PLURAL:$2|e Gruppe|Gruppe}} us em eigene Benutzerkonto useneh: $1',
+'listgrouprights-addgroup-self-all' => 'Cha alli Gruppe zum eigene Benutzerkonto zuefiege',
+'listgrouprights-removegroup-self-all' => 'Cha alli Gruppe us em eigene Benutzerkonto useneh',
# E-mail user
'mailnologin' => 'Du bisch nid aagmäldet oder hesch keis Mail aaggä',
@@ -1798,25 +1917,31 @@ Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf
'enotif_lastvisited' => '$1 zeigt alli Änderige uf s Mol.',
'enotif_lastdiff' => 'Lueg $1 no däre Änderig.',
'enotif_anon_editor' => 'Anonyme Benutzer $1',
-'enotif_body' => 'Liebe/r $WATCHINGUSERNAME,
+'enotif_body' => 'Liebe/Liebi $WATCHINGUSERNAME,
+
+d {{SITENAME}}-Syte $PAGETITLE isch vum $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED wore, di aktuell Version isch: $PAGETITLE_URL
-d {{SITENAME}} Syte $PAGETITLE isch vom $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED,
-di aktuelli Version isch: $PAGETITLE_URL
$NEWPAGE
-Zämmenfassig vom Autor: $PAGESUMMARY $PAGEMINOREDIT
-Kontakt zuem Autor:
+Zämmenfassig vum Autor: $PAGESUMMARY $PAGEMINOREDIT
+Kontakt zum Autor:
Mail $PAGEEDITOR_EMAIL
Wiki $PAGEEDITOR_WIKI
-Es wird kei wiiteri Benochrichtigungsposcht gschickt bis Si selli Syte wider bsueche. Uf de Beobachtigssyte chönne Si d Beobachtigsmarker zrucksetze.
+Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch.
+Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
- Ihr fründlichs {{SITENAME}} Benochrichtigssyschtem
+ Dyy fryndli {{SITENAME}}-Nochrichtesyschtem
---
-Ihri Beobachtigslischte {{fullurl:Special:Watchlist/edit}}
-Hilf zue de Benutzig gits uff {{fullurl:{{MediaWiki:Helppage}}}}',
+Go d Yystellige vu Dyyre Beobachtigslischte ändere, gang uf {{fullurl:Special:Watchlist/edit}}
+
+Go d Syte us Dyyre Beobachtigslischte uuseneh, gang uf
+$UNWATCHURL
+
+Ruckmäldig un wyteri Hilf:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Syte lösche',
@@ -1827,10 +1952,11 @@ Hilf zue de Benutzig gits uff {{fullurl:{{MediaWiki:Helppage}}}}',
'exblank' => 'Syte isch läär gsi',
'delete-confirm' => '„$1“ lesche',
'delete-legend' => 'Lesche',
-'historywarning' => '<span style="color:#ff0000">OBACHT:</span> Die Syte, wu Du wit lesche, het e Versionsgschicht:',
+'historywarning' => "'''Warnig:''' Die Syte, wu Du wit lesche, het e Versionsgschicht mit schetzigswyys $1 {{PLURAL:$1|Version|Versione}}:",
'confirmdeletetext' => 'Du bisch dra, e Artikel oder e Bild mitsamt dr Versionsgschicht fir immer us der Datebank z lesche.
Bitte bi Dir iber d Konsequänze bewusst, un bi sicher, dass Du Di an unsri [[{{MediaWiki:Policy-url}}|Leitlinie]] haltsch.',
'actioncomplete' => 'Uftrag usgfiert.',
+'actionfailed' => 'Aktion fählgschlaa',
'deletedtext' => '«<nowiki>$1</nowiki>» isch glescht wore.
Im $2 het s e Lischt vu dr letschte Leschige.',
'deletedarticle' => 'het „[[$1]]“ glescht',
@@ -1851,18 +1977,19 @@ Im $2 het s e Lischt vu dr letschte Leschige.',
'delete-warning-toobig' => 'Die Syte het e arg langi Versionsgschicht mit meh as $1 {{PLURAL:$1|Version|Versione}}. S Lesche cha dr Datebankbetriib vu {{SITENAME}} stere.',
# Rollback
-'rollback' => 'Zrucksetze vu dr Änderige',
-'rollback_short' => 'Zrucksetze',
-'rollbacklink' => 'Zrüggsetze',
-'rollbackfailed' => 'S Zrucksetze het nit funktioniert',
-'cantrollback' => 'D Änderig cha nit zruckgsetzt wäre, wel s keini friejere Autore git.',
-'alreadyrolled' => 'Cha d Änderig uf [[:$1]] wu vu [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) gmacht wore sin, zruckneh, wel e andere Benutzer in dr Zwischenzyt s scho zruckgsetzt het oder suscht ebis an däre Syte gänderet het.
+'rollback' => 'Zrucksetze vu dr Änderige',
+'rollback_short' => 'Zrucksetze',
+'rollbacklink' => 'Zrüggsetze',
+'rollbackfailed' => 'S Zrucksetze het nit funktioniert',
+'cantrollback' => 'D Änderig cha nit zruckgsetzt wäre, wel s keini friejere Autore git.',
+'alreadyrolled' => 'Cha d Änderig uf [[:$1]] wu vu [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) gmacht wore sin, zruckneh, wel e andere Benutzer in dr Zwischenzyt s scho zruckgsetzt het oder suscht ebis an däre Syte gänderet het.
Di letscht Änderig het [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) gmacht.',
-'editcomment' => "D Änderigszämmefassig isch: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Ruckgängig gmacht zue dr letschte Änderig vo [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) mit de letzte Version vo [[User:$1|$1]] widerhergstellt', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'D Änderige vu $1 sin ruckgängig gmacht wore un di letscht Version vu $2 isch widerhärgstellt wore.',
-'sessionfailure' => 'S het e Probläm mit em Ibertrage vu Dyyne Benutzerdate gee.
+'editcomment' => "D Änderigszämmefassig isch: „''$1''“.",
+'revertpage' => 'Ruckgängig gmacht zue dr letschte Änderig vo [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) mit de letzte Version vo [[User:$1|$1]] widerhergstellt',
+'revertpage-nouser' => 'Bearbeitige ruckgängig gmacht vu (Benutzername uusegnuu), letschti Fassig vu [[User:$1|$1]] widerhärgstellt',
+'rollback-success' => 'D Änderige vu $1 sin ruckgängig gmacht wore un di letscht Version vu $2 isch widerhärgstellt wore.',
+'sessionfailure' => 'S het e Probläm mit em Ibertrage vu Dyyne Benutzerdate gee.
Die Aktion isch wäge däm us Sicherheitsgrind abbroche wore go ne falschi Zueornig vu Dyyne Änderige zuen eme andere Benutzer verhindere.
Bitte gang zruck, tue d Syte nej lade un versuech s nomol.',
@@ -1880,7 +2007,7 @@ Bitte gang zruck, tue d Syte nej lade un versuech s nomol.',
'protectexpiry' => 'Gsperrt bis:',
'protect_expiry_invalid' => 'Di gwählti Duur isch nid gültig.',
'protect_expiry_old' => 'Di gwählti Duur isch scho vergange.',
-'protect-unchain' => 'Verschiebschutz ändere',
+'protect-unchain-permissions' => 'Wyteri Schutzoptione frej schalte',
'protect-text' => "Hie chasch der Schutzstatus vor Syte '''<nowiki>$1</nowiki>''' azeigen und ändere.",
'protect-locked-blocked' => "Du chasch dr Syteschutz nit ändere, wel Dyy Benutzerkonto gsperrt isch. Do sin di aktuälle Syteschutz-Yystellige fir d Syte '''„$1“:'''",
'protect-locked-dblock' => "D Datebank isch gsperrt, dr Syteschutz cha wäge däm nit gänderet wäre. Doo sin di aktuälle Syteschutz-Yystellige fir d Syte '''„$1“:'''",
@@ -1908,7 +2035,7 @@ Der Schutzstatus vo dere Syte lat sech la ändere, aber das het kei Yfluss uf d
** Vylmol yybundeni Vorlag
** Syte mit ere hoche Bsuecherzahl',
'protect-edit-reasonlist' => 'Schutzgrind bearbeite',
-'protect-expiry-options' => '1 Stund:1 hour,1 Tag:1 day,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Stund:1 hour,1 Tag:1 day,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite',
'restriction-type' => 'Schutzstatus',
'restriction-level' => 'Schutzhöchi:',
'minimum-size' => 'Mindeschtgressi',
@@ -1947,6 +2074,7 @@ In däm Fall darf di neijscht Version nit markiert wäre oder ihre Status muess
'undelete-nodiff' => 'Kei vorigi Version vorhande.',
'undeletebtn' => 'Widerhärstelle',
'undeletelink' => 'aaluege/widerhärstelle',
+'undeleteviewlink' => 'aaluege',
'undeletereset' => 'Abbräche',
'undeleteinvert' => 'Uswahl umchehre',
'undeletecomment' => 'Grund:',
@@ -1984,19 +2112,23 @@ $1',
'contributions-title' => 'Benutzerbyytreg vu „$1“',
'mycontris' => 'Myyni Byyträg',
'contribsub2' => 'Für $1 ($2)',
-'nocontribs' => 'S sin keini Benutzerbyytreg mit däne Kriterie gfunde wore.', # Optional parameter: $1 is the user name
+'nocontribs' => 'S sin keini Benutzerbyytreg mit däne Kriterie gfunde wore.',
'uctop' => '(aktuell)',
'month' => 'u Monet:',
'year' => 'bis Jahr:',
-'sp-contributions-newbies' => 'Zeig nume Biträg vo neie Benutzer',
-'sp-contributions-newbies-sub' => 'vo nöji Benützer',
-'sp-contributions-newbies-title' => 'Benutzerbyytreg vu neije Benutzer',
-'sp-contributions-blocklog' => 'Sperrlogbuech',
-'sp-contributions-logs' => 'Logbiecher',
-'sp-contributions-search' => 'Suech no Benutzerbiträg',
-'sp-contributions-username' => 'IP-Adress oder Benutzername:',
-'sp-contributions-submit' => 'Sueche',
+'sp-contributions-newbies' => 'Zeig nume Biträg vo neie Benutzer',
+'sp-contributions-newbies-sub' => 'vo nöji Benützer',
+'sp-contributions-newbies-title' => 'Benutzerbyytreg vu neije Benutzer',
+'sp-contributions-blocklog' => 'Sperrlogbuech',
+'sp-contributions-deleted' => 'gleschti Bytreg',
+'sp-contributions-logs' => 'Logbiecher',
+'sp-contributions-talk' => 'Diskussion',
+'sp-contributions-userrights' => 'Benutzerrächtsverwaltig',
+'sp-contributions-blocked-notice' => 'Dää Benutzer isch zur Zyt gsperrt. Do chunnt dr aktuäll Yytrag us em Benutzersperr-Logbuech:',
+'sp-contributions-search' => 'Suech no Benutzerbiträg',
+'sp-contributions-username' => 'IP-Adress oder Benutzername:',
+'sp-contributions-submit' => 'Sueche',
# What links here
'whatlinkshere' => 'Was verwyst do druff?',
@@ -2019,6 +2151,7 @@ $1',
# Block/unblock
'blockip' => 'Benutzer bzw. IP blockyre',
+'blockip-title' => 'Benutzer sperre',
'blockip-legend' => 'IP-Adräss/Benutzer sperre',
'blockiptext' => 'Nimm des Formular go ne Benutzer oder e IP-Adräss sperre.
Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr [[{{MediaWiki:Policy-url}}|Leitlinie]]. Bitte gib au ne Grund fi d Sperri aa (z. B. indäm du einzel ni Syte zitiersch, wu vandaliert wore sin).',
@@ -2043,7 +2176,7 @@ Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr
'ipbenableautoblock' => 'Sperr di aktuäll vu däm Benutzer brucht IP-Adräss un automatisch alli wytere, wun er nimmt go Syte bearbeite oder Benutzerchonte aalege',
'ipbsubmit' => 'Adräss blockiere',
'ipbother' => 'Anderi Duur (englisch):',
-'ipboptions' => '2 Stunde:2 hours,1 Tag:1 day,3 Täg:3 days,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stunde:2 hours,1 Tag:1 day,3 Täg:3 days,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite',
'ipbotheroption' => 'Anderi Duur',
'ipbotherreason' => 'Anderi/zuesätzligi Begrindig:',
'ipbhidename' => 'Benutzername in dr Lischt vu aktive Sperrine un im Benutzerverzeichnis verstecke.',
@@ -2072,9 +2205,11 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'ipblocklist-sh-tempblocks' => 'Befrischteti Sperrine $1',
'ipblocklist-sh-addressblocks' => 'IP-Sperrine $1',
'ipblocklist-submit' => 'Sueche',
+'ipblocklist-localblock' => 'Lokali Sperri',
+'ipblocklist-otherblocks' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
'blocklistline' => '$1, $2 het $3 ($4) gsperrt',
'infiniteblock' => 'uubegränzt',
-'expiringblock' => '$1',
+'expiringblock' => 'hert uf am $1 am $2',
'anononlyblock' => 'nume Anonymi',
'noautoblockblock' => 'Autoblock deaktiviert',
'createaccountblock' => 'Aalege vu Benutzerchonte gsperrt',
@@ -2088,7 +2223,8 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'contribslink' => 'Byträg',
'autoblocker' => 'Automatischi Sperri, wel Du e gmeinsami IP-Adräss mit [[User:$1|Benutzer:$1]] bruchsch. Grund: „$2“.',
'blocklogpage' => 'Sperrigs-Protokoll',
-'blocklog-fulllog' => 'Vollständigs Benutzersperr-Logbuech',
+'blocklog-showlog' => 'Dää Benutzer isch schon emol gsperrt wore. S Sperrine-Logbuech git s do as Referänz:',
+'blocklog-showsuppresslog' => 'Dää Benutzer isch schon emol gsperrt wore un syyni Bearbeitige sin uusblädet wore. S Uusbländigs-Logbuech git s do as Referänz:',
'blocklogentry' => 'sperrt [[$1]] für d Ziit vo: $2 $3',
'reblock-logentry' => 'het d Sperri fir „[[$1]]“ gänderet fir dr Zytruum: $2 $3',
'blocklogtext' => 'Des isch s Logbuech iber Sperrige un Entsperrige vu Benutzer. Automatisch blockierti IP-Adrässe wäre nit erfasst. Lueg au [[Special:IPBlockList|IP-Block Lischt]] fir e Lischt vu gsperrte Benutzer.',
@@ -2107,9 +2243,11 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'ipb_already_blocked' => '„$1“ isch scho gsperrt wore.',
'ipb-needreblock' => '== Sperri vorhande ==
{{GENDER:|De|D|}} „$1“ isch scho gsperrt. Mechtsch d Sperrparameter ändere?',
+'ipb-otherblocks-header' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
'ipb_cant_unblock' => 'Fähler: Sperr-ID $1 nit gfunde. S cha syy, ass d Sperri scho ufghoben isch .',
'ipb_blocked_as_range' => 'Fähler: D IP-Adräss $1 isch as Teil vu dr Beryychssperri $2 indirekt gsperrt. S isch nit megli, nume $1 z entsperre.',
'ip_range_invalid' => 'Uugiltige IP-Adrässberyych.',
+'ip_range_toolarge' => 'Adrässberyych, wu greßer sin wie /$1, sin nit erlaubt.',
'blockme' => 'Sperr mi',
'proxyblocker' => 'Proxy blocker',
'proxyblocker-disabled' => 'Die Funktion isch deaktiviert.',
@@ -2118,6 +2256,7 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'sorbsreason' => 'D IP-Adräss isch in dr DNSBL vu {{SITENAME}} as uffige PROXY glischtet.',
'sorbs_create_account_reason' => 'D IP-Adräss isch in dr DNSBL vu {{SITENAME}} as uffige PROXY glischtet. S Aalege vu neije Benutzer isch nit megli.',
'cant-block-while-blocked' => 'Du derfsch kei anderi Benutzer sperre, derwylscht Du sälber gsperrt bisch.',
+'cant-see-hidden-user' => 'Dr Benutzer, wu Du versuechsch z sperre, isch scho gsperrt un versteckt wore. Du chasch d Sperri vu däm Benutzer nit säh oder bearbeite, wel du s „hideuser“-Rächt nit hesch.',
# Developer tools
'lockdb' => 'D Datebank sperre',
@@ -2147,6 +2286,7 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
I söttigne Fäll müessti d Diskussionssyten allefalls vo Hand kopiert wärde.",
'movearticle' => 'Artikel verschiebe',
+'moveuserpage-warning' => "'''Warnig:''' Du bis am Verschiebe vun ere Benutzersyte. Bitte gib Achtig, ass doderdur nume die Syte verschobe wird, aber dr Benutzer '''nit''' umgnännt wird.",
'movenologin' => 'Du bisch nid aagmäldet',
'movenologintext' => 'Du muesch e regischtrierte Benutzer syy un Di [[Special:UserLogin|aamälde]] go die Syte verschiebe.',
'movenotallowed' => 'Du derfsch kei Syte verschiebe.',
@@ -2157,7 +2297,7 @@ I söttigne Fäll müessti d Diskussionssyten allefalls vo Hand kopiert wärde."
'move-watch' => 'Die Syte beobachte',
'movepagebtn' => 'Artikel verschiebe',
'pagemovedsub' => 'Verschiebig erfolgrych',
-'movepage-moved' => '\'\'\'"$1" isch verschobe wore uf "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" isch verschobe wore uf "$2"\'\'\'',
'movepage-moved-redirect' => 'E Wyterleitig isch aagleit wore.',
'movepage-moved-noredirect' => 'D Erstellig vonere Wyterleitig isch unterdruggt worde.',
'articleexists' => 'E Syte mit däm Name git s scho oder de Name isch nid giltig. Bitte nimm en andere.',
@@ -2198,6 +2338,14 @@ D Syte „[[:$1]]“ gits scho. Wottsch du si lösche, zume Platz zum verschiebe
'imageinvalidfilename' => 'De Name vo dr Ziildatei isch ungültig',
'fix-double-redirects' => 'Alli Wyterleitige, wo uf de alte Titel zeige, aktualisiere',
'move-leave-redirect' => 'E Wyterleitig hinterloo',
+'protectedpagemovewarning' => "'''WARNIG:''' Die Syte isch gschitzt wore, ass si nume Benutzer mit Ammannerächt chenne verschiebe.
+As Referänz wird do dr letscht Logbuechyytrag aagee:",
+'semiprotectedpagemovewarning' => "'''OBACHT:''' Die Syte isch gschitzt wore, ass si nume aagmäldeti Benutzer chenne verschiebe.
+As Referänz wird do dr letscht Logbuechyytrag aagee:",
+'move-over-sharedrepo' => '==Datei git s==
+[[:$1]] git s in ere gmeinsam gnutzte Mediedatebank. S Verschiebe vun ere Datei uf dää Titel iberschrybt di gmeinsam gnutzt Datei.',
+'file-exists-sharedrepo' => 'Dr gwehlt Dateiname wird scho in ere gmeinsam gnutzte Mediedatebank brucht.
+Bitte wehl e andre Name.',
# Export
'export' => 'Sytenen exportiere',
@@ -2216,15 +2364,21 @@ Zum Exportiere trag dr Sytetitel in dr Täxtchaschte unter yy, ei Titel pro Zyyl
'export-pagelinks' => 'Vergleichti Syten automatisch mit exportiere bis zuen ere Rekursionstiefi vu:',
# Namespace 8 related
-'allmessages' => 'Systemnochrichte',
-'allmessagesname' => 'Name',
-'allmessagesdefault' => 'Standard-Tekscht',
-'allmessagescurrent' => 'jetzige Tekscht',
-'allmessagestext' => 'Des isch e Lischt vu allene meglige Syschtemnochrichte us em MediaWiki Namensruum.
+'allmessages' => 'Systemnochrichte',
+'allmessagesname' => 'Name',
+'allmessagesdefault' => 'Standard-Tekscht',
+'allmessagescurrent' => 'jetzige Tekscht',
+'allmessagestext' => 'Des isch e Lischt vu allene meglige Syschtemnochrichte us em MediaWiki Namensruum.
Lueg au uf [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] un [http://translatewiki.net translatewiki.net], wänn Du zue dr MediaWiki-Lokalisierig wit byytrage.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' cha nit bruucht wärde will '''\$wgUseDatabaseMessages''' abgschalte isch.",
-'allmessagesfilter' => 'Nochrichte nochem Name filtere:',
-'allmessagesmodified' => 'numme gänderti aazeige',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' cha nit bruucht wärde will '''\$wgUseDatabaseMessages''' abgschalte isch.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter fir dr aapasst Zuestand:',
+'allmessages-filter-unmodified' => 'Nit gänderet',
+'allmessages-filter-all' => 'Alli',
+'allmessages-filter-modified' => 'Gänderet',
+'allmessages-prefix' => 'Präfixfilter:',
+'allmessages-language' => 'Sproch:',
+'allmessages-filter-submit' => 'Gang',
# Thumbnails
'thumbnail-more' => 'vergrösere',
@@ -2234,6 +2388,9 @@ Lueg au uf [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] u
'djvu_no_xml' => 'XML-Date chönne für d DjVu-Datei nüt abgruefe werde',
'thumbnail_invalid_params' => 'Ungültigs Thumbnail-Parameter',
'thumbnail_dest_directory' => 'S Ziilverzeichnis cha nüt erstellt werde',
+'thumbnail_image-type' => 'Bildtyp wird nit unterstitzt',
+'thumbnail_gd-library' => 'Uuvollständigi GD-Library-Konfiguration: Funktion $1 fählt',
+'thumbnail_image-missing' => 'Datei fählt schyns: $1',
# Special:Import
'import' => 'Sytene importiere',
@@ -2297,6 +2454,7 @@ Alli Transwiki-Import-Aktione werde im [[Special:Log/import|Import-Logbuech]] pr
'tooltip-ca-viewsource' => 'Die Syte isch geschützt. Du chasch der Quelltext aaluege.',
'tooltip-ca-history' => 'Früecheri Versione vo dere Syte.',
'tooltip-ca-protect' => 'Seite beschütze',
+'tooltip-ca-unprotect' => 'Dr Schutz vu däre Syte ufhebe',
'tooltip-ca-delete' => 'Syten entsorge',
'tooltip-ca-undelete' => 'Sodeli, da isch es wider.',
'tooltip-ca-move' => 'Dür ds Verschiebe gits e nöie Name.',
@@ -2307,6 +2465,7 @@ Alli Transwiki-Import-Aktione werde im [[Special:Log/import|Import-Logbuech]] pr
'tooltip-search-fulltext' => 'Suech nooch Syte wo de Teggscht dinne hen',
'tooltip-p-logo' => 'Houptsyte',
'tooltip-n-mainpage' => 'Gang uf d Houptsyte',
+'tooltip-n-mainpage-description' => 'Uf Hauptsyte goh',
'tooltip-n-portal' => 'Über ds Projekt, was du chasch mache, wo du was findsch',
'tooltip-n-currentevents' => 'Hindergrundinformatione zu aktuellen Ereignis finde',
'tooltip-n-recentchanges' => 'Lischte vo de letschten Änderige i däm Wiki.',
@@ -2351,10 +2510,12 @@ Alli Transwiki-Import-Aktione werde im [[Special:Log/import|Import-Logbuech]] pr
# Attribution
'anonymous' => '{{PLURAL:$1|Anonyme Benutzer|Anonymi Benutzer}} uff {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Benutzer $1',
-'lastmodifiedatby' => 'Diese Seite wurde zuletzt geändert um $2, $1 von $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'anonyme {{SITENAME}}-Benutzer $1',
+'lastmodifiedatby' => 'Diese Seite wurde zuletzt geändert um $2, $1 von $3.',
'othercontribs' => 'Basiert auf der Arbeit von $1.',
'others' => 'anderi',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Benutzer|Benutzer}} $1',
+'anonusers' => '{{PLURAL:$2|Anonyme|Anonymi}} {{SITENAME}}-Benutzer $1',
'creditspage' => 'Syteinformatione',
'nocredits' => 'Fir die Syte sin kein Informatione vorhande.',
@@ -2382,11 +2543,23 @@ Alli Transwiki-Import-Aktione werde im [[Special:Log/import|Import-Logbuech]] pr
'mw_math_modern' => 'Empfolnigi Ystellig für modärni Browser',
'mw_math_mathml' => 'MathML (experimentäll)',
+# Math errors
+'math_failure' => 'Parser-Fähler',
+'math_unknown_error' => 'Nit bekannte Fähler',
+'math_unknown_function' => 'Nit bekannti Funktion',
+'math_lexing_error' => "'Lexing'-Fähler",
+'math_syntax_error' => 'Syntaxfähler',
+'math_image_error' => 'd PNG-Konvertierig het nit funktioniert;
+prief di korrekt Installation vu latex, dvips, gs un convert',
+'math_bad_tmpdir' => 'S temporär Verzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
+'math_bad_output' => 'S Ziilverzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
+'math_notexvc' => 'S texvc-Programm isch nit gfunde wore. Bitte acht gee uf math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Als patrulyrt markyre',
'markaspatrolledtext' => 'Erschtversion patrulyre',
'markedaspatrolled' => 'As kontrolliert markiert',
-'markedaspatrolledtext' => 'D’Änderig isch als patrulyrt markyrt.',
+'markedaspatrolledtext' => 'Di uusgwehlt Änderig [[:$1]] isch vum Fäldhieter aagluegt wore.',
'rcpatroldisabled' => 'Kontroll vu dr letschte Änderige gsperrt',
'rcpatroldisabledtext' => 'D Kontroll vu dr letschte Änderige isch im Momänt gsperrt.',
'markedaspatrollederror' => 'Markierig as „kontrolliert“ nit megli.',
@@ -2416,12 +2589,9 @@ $1',
'previousdiff' => '← Vorderi Änderig',
'nextdiff' => 'Nächschti Änderig →',
-# Visual comparison
-'visual-comparison' => 'Visuälle Verglyych',
-
# Media information
'mediawarning' => "'''Warnig:''' In däre Art Datei chennt s e beswillige Programmcode din ha. Wänn du die Datei uusfiersch, cha s syy, ass Dyy Syschtem bschädigt wird.",
-'imagemaxsize' => 'Maximali Gröössi vo de Bilder uf de Bildbeschrybigs-Sytene:',
+'imagemaxsize' => "Maximali Gressi vu Bilder :<br />'' (uf Bildbschrybigs-Syte)''",
'thumbsize' => 'Bildvorschou-Gröössi:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Syte|$3 Syte}}',
'file-info' => '(Dateigressi: $1, MIME-Typ: $2)',
@@ -2430,6 +2600,8 @@ $1',
'svg-long-desc' => '(SVG-Datei, Basisgrößi: $1 × $2 Pixel, Dateigrößi: $3)',
'show-big-image' => 'Originalgrößi',
'show-big-image-thumb' => '<small>Größi vo dere Vorschou: $1 × $2 Pixel</small>',
+'file-info-gif-looped' => 'Ändlosschlupf',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
# Special:NewFiles
'newimages' => 'Gallery vo noie Bilder',
@@ -2464,7 +2636,7 @@ Anderi Metadate sy standardmäßig versteckt.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breiti',
@@ -2591,14 +2763,14 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-unknowndate' => 'Nit bekannt Datum',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontal gspieglet', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Um 180° drillt', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikal gspieglet', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Gege dr Uhrzeigersinn um 90° drillt un derno vertikal gspieglet', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Um 90° im Uhrzeigersinn drillt', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Um 90° im Uhrzeigersinn drillt un derno vertikal gspieglet', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Um 90° gege dr Uhrzeigersinn drillt', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Horizontal gspieglet',
+'exif-orientation-3' => 'Um 180° drillt',
+'exif-orientation-4' => 'Vertikal gspieglet',
+'exif-orientation-5' => 'Gege dr Uhrzeigersinn um 90° drillt un derno vertikal gspieglet',
+'exif-orientation-6' => 'Um 90° im Uhrzeigersinn drillt',
+'exif-orientation-7' => 'Um 90° im Uhrzeigersinn drillt un derno vertikal gspieglet',
+'exif-orientation-8' => 'Um 90° gege dr Uhrzeigersinn drillt',
'exif-planarconfiguration-1' => 'Grobformat',
'exif-planarconfiguration-2' => 'Planarformat',
@@ -2720,7 +2892,7 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-gpsmeasuremode-2' => '2-dimensionali Mässig',
'exif-gpsmeasuremode-3' => '3-dimensionali Mässig',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Chnote',
@@ -2739,6 +2911,7 @@ Anderi Metadate sy standardmäßig versteckt.
'watchlistall2' => 'alli',
'namespacesall' => 'alli',
'monthsall' => 'alli',
+'limitall' => 'alli',
# E-mail address confirmation
'confirmemail' => 'Bstätigung vo Ihre E-Poscht-Adräss',
@@ -2863,7 +3036,7 @@ Du chasch au d [[Special:Watchlist/edit|Standard-Bearbeitigssyte]] bruuche.',
'duplicate-defaultsort' => 'Obacht: Dr Sortierigsschlüssel „$2“ iberschrybt dr vorig brucht Schlüssel „$1“.',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installierti Erwyterige',
'version-specialpages' => 'Spezialsyte',
'version-parserhooks' => 'Parser-Schnittstelle',
@@ -2877,7 +3050,7 @@ Du chasch au d [[Special:Watchlist/edit|Standard-Bearbeitigssyte]] bruuche.',
'version-skin-extension-functions' => 'Skin-Erwyterigs-Funktione',
'version-hook-name' => 'Schnittstellename',
'version-hook-subscribedby' => 'Ufruef vu',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lizänz',
'version-software' => 'Installierti Software',
'version-software-product' => 'Produkt',
@@ -2957,4 +3130,15 @@ D Yygab muess ohni dr Zuesatz „{{ns:file}}:“ erfolge.',
'dberr-outofdate' => 'Obacht: Dr Suechindex vu unsere Syte chennt veraltet syy.',
'dberr-cachederror' => 'Des isch e Kopii vum Cache vu dr Syte, wu Du aagforderet hesch, un chennt veraltet syy.',
+# HTML forms
+'htmlform-invalid-input' => 'Mit e Teil Yygabe git s Probläm',
+'htmlform-select-badoption' => 'Dr Wärt, wu aagee hesch, isch kei giltigi Option.',
+'htmlform-int-invalid' => 'Dr Wärt, wu aagee hesch, isch kei Ganzzahl.',
+'htmlform-float-invalid' => 'D Wärt, wu du aagee hesch, isch kei Zahl.',
+'htmlform-int-toolow' => 'Dr Wärt, wu aagee hesch, isch unter em Minimum vu $1',
+'htmlform-int-toohigh' => 'Dr Wärt, wu aagee hesch, isch iber em Maximum vu $1',
+'htmlform-submit' => 'Ibertrage',
+'htmlform-reset' => 'Änderige ruckgängig mache',
+'htmlform-selectorother-other' => 'Anderi',
+
);
diff --git a/languages/messages/MessagesGu.php b/languages/messages/MessagesGu.php
index 342bd822..43eeb89c 100644
--- a/languages/messages/MessagesGu.php
+++ b/languages/messages/MessagesGu.php
@@ -33,6 +33,91 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'શ્રેણીની_ચર્ચા',
);
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'દ્વિ પુનઃમાર્ગદર્શન' ),
+ 'BrokenRedirects' => array( 'ખંડિત પુનઃમાર્ગદર્શન' ),
+ 'Disambiguations' => array( 'અસંદિગ્ધતા' ),
+ 'Userlogin' => array( 'સભ્યપ્રવેશ' ),
+ 'Userlogout' => array( 'સભ્યનિવેશ' ),
+ 'CreateAccount' => array( 'ખાતું ખોલો' ),
+ 'Preferences' => array( 'પસંદ' ),
+ 'Watchlist' => array( 'ધ્યાનસૂચિ' ),
+ 'Recentchanges' => array( 'તાજાફેરફારો' ),
+ 'Upload' => array( 'ચડાવો' ),
+ 'Listfiles' => array( 'યાદીફાઇલ', 'ફાઇલયાદી', 'ચિત્રયાદી' ),
+ 'Newimages' => array( 'નવીફાઇલો', 'નવાંચિત્રો' ),
+ 'Listusers' => array( 'યાદીસભ્યો', 'સભ્યયાદી' ),
+ 'Listgrouprights' => array( 'યાદીસમુહઅધિકારો', 'સભ્યસમુહઅધિકારો' ),
+ 'Statistics' => array( 'આંકડાકીયમાહિતી' ),
+ 'Randompage' => array( 'યાદચ્છ', 'કોઈ પણ એક' ),
+ 'Lonelypages' => array( 'એકાકીપાનાં', 'અનાથપાનાં' ),
+ 'Uncategorizedpages' => array( 'અવર્ગિકૃત પાનાં' ),
+ 'Uncategorizedcategories' => array( 'અવર્ગિકૃત શ્રેણીઓ' ),
+ 'Uncategorizedimages' => array( 'અવર્ગિકૃત ફાઇલો', 'અવર્ગિકૃત ચિત્રો' ),
+ 'Uncategorizedtemplates' => array( 'અવર્ગિકૃત ઢાંચા' ),
+ 'Unusedcategories' => array( 'વણવપરાયેલી શ્રેણીઓ' ),
+ 'Unusedimages' => array( 'વણવપરાયેલ ફાઇલો', 'વણવપરાયેલ ચિત્રો' ),
+ 'Wantedpages' => array( 'જોઇતા પાનાં', 'ત્રુટક કડી' ),
+ 'Wantedcategories' => array( 'જોઇતી શ્રેણીઓ' ),
+ 'Wantedfiles' => array( 'જોઇતી ફાઇલો' ),
+ 'Wantedtemplates' => array( 'જોઇતા ઢાંચા' ),
+ 'Mostlinked' => array( 'સૌથીવધુ જોડાયેલાં પાનાં', 'સૌથીવધુ જોડાયેલ' ),
+ 'Mostlinkedcategories' => array( 'સૌથીવધુજોડાયેલી શ્રેણી', 'સૌથીવધુવપરાયેલી શ્રેણીઓ' ),
+ 'Mostlinkedtemplates' => array( 'સૌથીવધુ જોડાયેલાં ઢાંચા', 'સૌથી વધુવપરાયેલાં ઢાંચા' ),
+ 'Mostimages' => array( 'સૌથી વધુજોડાયેલી ફાઇલો', 'મહત્તમ ફાઇલો', 'મહત્તમ ચિત્રો' ),
+ 'Mostcategories' => array( 'મોટાભાગની શ્રેણીઓ' ),
+ 'Mostrevisions' => array( 'મહત્તમ પુનરાવર્તન' ),
+ 'Fewestrevisions' => array( 'લઘુત્તમ પુનરાવર્તન' ),
+ 'Shortpages' => array( 'ટુંકાપાનાં' ),
+ 'Longpages' => array( 'લાંબાપાના' ),
+ 'Newpages' => array( 'નવાપાનાં' ),
+ 'Ancientpages' => array( 'પ્રાચીનપાનાં' ),
+ 'Deadendpages' => array( 'મૃતાંતપાનાં' ),
+ 'Protectedpages' => array( 'સંરક્ષિતપાનાં' ),
+ 'Protectedtitles' => array( 'સંરક્ષિત શિર્ષકો' ),
+ 'Allpages' => array( 'બધાંપાનાં' ),
+ 'Prefixindex' => array( 'ઉપસર્ગ' ),
+ 'Specialpages' => array( 'ખાસપાનાં' ),
+ 'Contributions' => array( 'પ્રદાન' ),
+ 'Emailuser' => array( 'સભ્યનેઇમેલ' ),
+ 'Confirmemail' => array( 'ઇમેઇલખાતરીકરો' ),
+ 'Whatlinkshere' => array( 'અહિં શું જોડાય છે?' ),
+ 'Recentchangeslinked' => array( 'તાજેતરનાં ફેરફારો', 'સંલગ્ન ફેરફારો' ),
+ 'Movepage' => array( 'પાનુંખસેડો' ),
+ 'Booksources' => array( 'પુસ્તકસ્રોત' ),
+ 'Categories' => array( 'શ્રેણીઓ' ),
+ 'Export' => array( 'નિકાસ' ),
+ 'Version' => array( 'સંસ્કરણ' ),
+ 'Allmessages' => array( 'બધાંસંદેશા' ),
+ 'Log' => array( 'લૉગ', 'લૉગ્સ' ),
+ 'Blockip' => array( 'પ્રતિબંધ', 'IP પર પ્રતિબંધ', 'સભ્યપર પ્રતિબંધ' ),
+ 'Undelete' => array( 'પુનઃપ્રાપ્ત' ),
+ 'Import' => array( 'આયાત' ),
+ 'Userrights' => array( 'સભ્યાધિકાર' ),
+ 'FileDuplicateSearch' => array( 'ફાઇલપ્રતિકૃતિ શોધ' ),
+ 'Unwatchedpages' => array( 'વણજોયેલા પાનાં' ),
+ 'Listredirects' => array( 'પુનઃમાર્ગદર્શનયાદી' ),
+ 'Revisiondelete' => array( 'રદકરેલું સુધારો' ),
+ 'Unusedtemplates' => array( 'વણવપરાયેલાં ઢાંચા' ),
+ 'Randomredirect' => array( 'યાદચ્છ પુનઃમાર્ગદર્શન' ),
+ 'Mypage' => array( 'મારૂપાનું' ),
+ 'Mytalk' => array( 'મારીચર્ચા' ),
+ 'Mycontributions' => array( 'મારૂપ્રદાન' ),
+ 'Listadmins' => array( 'યાદીપ્રબંધક' ),
+ 'Listbots' => array( 'યાદીબૉટ' ),
+ 'Popularpages' => array( 'લોકપ્રિયપાનાં' ),
+ 'Search' => array( 'શોધ' ),
+ 'Resetpass' => array( 'ગુપ્તસંજ્ઞા બદલો', 'ગુપ્તસંજ્ઞા પુન: સ્થાપન' ),
+ 'Withoutinterwiki' => array( 'આંતરવિકિવિહીન' ),
+ 'MergeHistory' => array( 'વિલિનિકરણ ઈતિહાસ' ),
+ 'Filepath' => array( 'ફાઇલપથ' ),
+ 'Invalidateemail' => array( 'અમાન્ય ઇ-મેઇલ' ),
+ 'Blankpage' => array( 'કોરૂં પાનું' ),
+ 'LinkSearch' => array( 'કડી શોધ' ),
+ 'DeletedContributions' => array( 'હટાવેલાં યોગદાન' ),
+ 'Tags' => array( 'ટેગ' ),
+);
+
$digitTransformTable = array(
'0' => '૦', # &#x0ae6;
'1' => '૧', # &#x0ae7;
@@ -77,6 +162,7 @@ $messages = array(
'tog-enotifminoredits' => 'પાનામાં નાનાં ફેરફાર થાય ત્યારે પણ મને ઇ-મેલ મોકલો',
'tog-enotifrevealaddr' => 'નોટીફીકેશનના ઇમેલમાં મારૂ ઇમેલ એડ્રેસ બતાવો',
'tog-shownumberswatching' => 'ધ્યાનમાં રાખતા સભ્યોની સંખ્યા બતાવો',
+'tog-oldsig' => 'વિદ્યમાન હસ્તાક્ષરનું પૂર્વદર્શન:',
'tog-fancysig' => 'સ્વાચાલિત કડી વગરની (કાચી) સહી',
'tog-externaleditor' => 'બીજું એડીટર વાપરો. (ફક્ત એકસપર્ટ માટે, તમારા કમ્પ્યુટરમાં સેટીંગ્સ બદલવા પડશે)',
'tog-externaldiff' => 'ડીફોલ્ટ તરીકે એક્સટર્નલ ભેદ વાપરો (ફક્ત એક્ષપર્ટ માટે, તમારા કમ્પ્યુટરમાં સેટીંગ્સ બદલવા જરૂરી)',
@@ -99,6 +185,9 @@ $messages = array(
'underline-never' => 'કદી નહિ',
'underline-default' => 'બ્રાઉઝરના સેટીંગ્સ પ્રમાણે',
+# Font style option in Special:Preferences
+'editfont-style' => 'ક્ષેત્ર લિપિ શૈલીનું સંપાદન:',
+
# Dates
'sunday' => 'રવિવાર',
'monday' => 'સોમવાર',
@@ -158,7 +247,7 @@ $messages = array(
'category-media-header' => 'શ્રેણી "$1"માં દ્રશ્ય કે શ્રાવ્ય સભ્યો',
'category-empty' => "''આ શ્રેણીમાં હાલમાં કોઇ લેખ કે અન્ય સભ્ય નથી.''",
'hidden-categories' => '{{PLURAL:$1|છુપી શ્રેણી|છુપી શ્રેણીઓ}}',
-'hidden-category-category' => 'છુપી શ્રેણીઓ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'છુપી શ્રેણીઓ',
'category-subcat-count' => '{{PLURAL:$2|આ શ્રેણીમાં ફક્ત નીચેની ઉપશ્રેણી છે.|આ શ્રેણીમાં કુલ $2 પૈકીની નીચેની {{PLURAL:$1|ઉપશ્રેણી|$1 ઉપશ્રેણીઓ}} છે.}}',
'category-subcat-count-limited' => 'આ શ્રેણીમાં નીચે મુજબની {{PLURAL:$1|ઉપશ્રેણી|$1 ઉપશ્રેણીઓ}} છે.',
'category-article-count' => '{{PLURAL:$2|આ શ્રેણીમાં ફક્ત નીચેનું પાનું છે.|આ શ્રેણીમાં કુલ $2 પૈકીનાં નીચેનાં {{PLURAL:$1|પાનું|$1 પાનાં}} છે.}}',
@@ -176,10 +265,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ વારંવાર પુછાતા પ્રશ્નો]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce મિડીયાવિકિ રીલીઝ મેઇલીંગ લીસ્ટ]',
-'about' => 'વિષે',
-'article' => 'લેખનું પાનું',
-'newwindow' => '(નવા પાનામાં ખુલશે)',
-'cancel' => 'રદ કરો',
+'about' => 'વિષે',
+'article' => 'લેખનું પાનું',
+'newwindow' => '(નવા પાનામાં ખુલશે)',
+'cancel' => 'રદ કરો',
+'moredotdotdot' => 'વધારે...',
+'mypage' => 'મારું પાનું',
+'mytalk' => 'મારી ચર્ચા',
+'anontalk' => 'આ IP માટેનું ચર્ચા પાનું',
+'navigation' => 'ભ્રમણ',
+'and' => '&#32;અને',
+
+# Cologne Blue skin
'qbfind' => 'શોધો',
'qbbrowse' => 'બ્રાઉઝ',
'qbedit' => 'ફેરફાર કરો',
@@ -187,15 +284,36 @@ $messages = array(
'qbpageinfo' => 'પાનાંની જાણકારી',
'qbmyoptions' => 'મારાં પાનાં',
'qbspecialpages' => 'ખાસ પાનાં',
-'moredotdotdot' => 'વધારે...',
-'mypage' => 'મારું પાનું',
-'mytalk' => 'મારી ચર્ચા',
-'anontalk' => 'આ IP માટેનું ચર્ચા પાનું',
-'navigation' => 'ભ્રમણ',
-'and' => '&#32;અને',
-
-# Metadata in edit box
-'metadata_help' => 'મેટાડેટા:',
+'faq' => 'FAQ
+વારંવાર પુછાતા પ્રશ્નો',
+'faqpage' => 'Project:વારંવાર પુછાતા પ્રશ્નો',
+
+# Vector skin
+'vector-action-addsection' => 'વિષય ઉમેરો',
+'vector-action-delete' => 'રદ કરો',
+'vector-action-move' => 'ખસેડો',
+'vector-action-protect' => 'સુરક્ષિત કરો',
+'vector-action-undelete' => 'રદ કરેલું પાછું વાળો',
+'vector-action-unprotect' => 'અસુરક્ષિત',
+'vector-namespace-category' => 'શ્રેણી',
+'vector-namespace-help' => 'મદદ માટેનું પાનું',
+'vector-namespace-image' => 'ફાઇલ',
+'vector-namespace-main' => 'પાનું',
+'vector-namespace-media' => 'માધ્યમ પાનું',
+'vector-namespace-mediawiki' => 'સંદેશ',
+'vector-namespace-project' => 'યોજના પાનું',
+'vector-namespace-special' => 'ખાસ પાનું',
+'vector-namespace-talk' => 'ચર્ચા',
+'vector-namespace-template' => 'ઢાંચો',
+'vector-namespace-user' => 'સભ્યનું પાનું',
+'vector-view-create' => 'બનાવો',
+'vector-view-edit' => 'સંપાદન કરો',
+'vector-view-history' => 'ઈતિહાસ જુઓ',
+'vector-view-view' => 'વાંચો',
+'vector-view-viewsource' => 'સ્ત્રોત જુઓ',
+'actions' => 'ક્રિયાઓ',
+'namespaces' => 'નામાવકાશો',
+'variants' => 'ભિન્ન રૂપો',
'errorpagetitle' => 'ત્રુટિ',
'returnto' => '$1 પર પાછા જાઓ.',
@@ -246,18 +364,24 @@ $messages = array(
'otherlanguages' => 'બીજી ભાષાઓમાં',
'redirectedfrom' => '($1 થી અહીં વાળેલું)',
'redirectpagesub' => 'પાનું અન્યત્ર વાળો',
-'lastmodifiedat' => 'આ પાનાંમાં છેલ્લો ફેરફાર $1ના રોજ $2 વાગ્યે થયો.', # $1 date, $2 time
+'lastmodifiedat' => 'આ પાનાંમાં છેલ્લો ફેરફાર $1ના રોજ $2 વાગ્યે થયો.',
'viewcount' => 'આ પાનાંને {{PLURAL:$1|એક|$1}} વખત જોવામાં આવ્યું છે.',
'protectedpage' => 'સંરક્ષિત પાનું',
'jumpto' => 'સીધા આના પર જાઓ:',
'jumptonavigation' => 'ભ્રમણ',
'jumptosearch' => 'શોધો',
+'view-pool-error' => 'માફ કરશો, આ સમયે સર્વર અતિબોજા હેઠળ છે.
+
+ઘણા બધા વપરાશકર્તાઓ આ પાનું જોવાની કોશિશ કરી રહ્યા છે.
+
+આ પાનું ફરી જોતા પહેલાં કૃપયા થોડો સમય પ્રતિક્ષા કરો.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} વિષે',
'aboutpage' => 'Project:વિષે',
'copyright' => '$1 હેઠળ માહિતિ ઉપલબ્ધ છે.',
-'copyrightpagename' => '{{SITENAME}} પ્રકાશનાધિકાર',
'copyrightpage' => '{{ns:project}}:પ્રકાશનાધિકાર',
'currentevents' => 'વર્તમાન ઘટનાઓ',
'currentevents-url' => 'Project:વર્તમાન ઘટનાઓ',
@@ -265,9 +389,6 @@ $messages = array(
'disclaimerpage' => 'Project:સામાન્ય જાહેર ઇનકાર',
'edithelp' => 'ફેરફારો માટે મદદ',
'edithelppage' => 'Help:ફેરફાર',
-'faq' => 'FAQ
-વારંવાર પુછાતા પ્રશ્નો',
-'faqpage' => 'Project:વારંવાર પુછાતા પ્રશ્નો',
'helppage' => 'Help:સૂચિ',
'mainpage' => 'મુખપૃષ્ઠ',
'mainpage-description' => 'મુખપૃષ્ઠ',
@@ -338,8 +459,6 @@ $messages = array(
# General errors
'error' => 'ત્રુટિ',
'databaseerror' => 'ડેટાબેઝ ત્રુટિ',
-'nodb' => 'ડેટાબેઝ $1 પસંદ ન કરી શકાયો.',
-'cachederror' => 'નીચેનું પાનું તમે ખોલેલાં પાનાંની સંગ્રહિત નકલ છે અને કદાચ બધી માહિતી ન પણ ધરાવતું હોય.',
'laggedslavemode' => 'ચેતવણી: પાનું તાજેતરના ફેરફાર ધરાવતું નથી.',
'readonly' => 'ડેટાબેઝ સ્થગિત',
'enterlockreason' => 'સ્થગિતતા ક્યારે દુર કરાશે તેના અંદાજ શાથે,સ્થગિત કરવાનું કારણ આપો',
@@ -356,6 +475,7 @@ $messages = array(
'missingarticle-diff' => '(ભેદ: $1, $2)',
'internalerror' => 'આંતરિક ત્રુટિ',
'internalerror_info' => 'આંતરિક ત્રુટિ: $1',
+'fileappenderror' => '"$1" ને "$2" શાથે જોડી શકાશે નહીં.',
'filecopyerror' => '"$1" થી "$2"માં નકલ નાકામયાબ.',
'filerenameerror' => '"$1" નું નામ બદલીને "$2" કરવામાં નાકામયાબ.',
'filedeleteerror' => '"$1" ફાઇલ હટાવી ન શકાઇ.',
@@ -365,8 +485,8 @@ $messages = array(
'unexpected' => 'અણધારી કિંમત: "$1"="$2".',
'formerror' => 'ત્રુટિ: પત્રક રજૂ થયું નહીં',
'badarticleerror' => 'આ ક્રિયા આ પાનાં ઉપર કરવી શક્ય નથી.',
-'cannotdelete' => 'જે તે ફાઇલ કે પાનું હટાવી ન શકાયું.
-કદાચ તે આ પહેલાં જ હટાવેલ હોઇ શકે.',
+'cannotdelete' => 'ફાઇલ કે પાનું "$1" હટાવી શકાયું નથી.
+શક્ય છે કે અન્ય કોઈએ પહેલેથી હટાવી દીધું હોય.',
'badtitle' => 'ખરાબ નામ',
'badtitletext' => 'આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.
શક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.',
@@ -397,115 +517,95 @@ $messages = array(
'virus-unknownscanner' => 'અજાણ્યું એન્ટીવાઇરસ:',
# Login and logout pages
-'logouttitle' => 'સભ્ય નિવેશ',
-'logouttext' => "'''તમે (લોગ આઉટ કરીને) બહાર નિકળી ચુક્યા છો.'''
+'logouttext' => "'''તમે (લોગ આઉટ કરીને) બહાર નિકળી ચુક્યા છો.'''
તમે અનામી તરીકે {{SITENAME}} વાપરવાનું ચાલુ રાખી શકો છો, કે પછી તેના તેજ કે અલગ સભ્ય તરીકે [[Special:UserLogin|ફરી પ્રવેશ]] કરી શકો છો.
ધ્યાન રાખો કે જ્યાં સુધી તમે તમારા બ્રાઉઝરનો કૅશ સાફ નહીં કરો ત્યાં સુધી કેટલાક પાનાં તમે પ્રવેશી ચુક્યા છો તેમ બતાવશે.",
-'welcomecreation' => '== તમારૂં સ્વાગત છે $1! ==
+'welcomecreation' => '== તમારૂં સ્વાગત છે $1! ==
તમારૂં ખાતું બની ગયું છે.
તમારી [[Special:Preferences|{{SITENAME}} પસંદગી]] બદલવાનું ભૂલશો નહીં.',
-'loginpagetitle' => 'સભ્ય પ્રવેશ',
-'yourname' => 'સભ્ય નામ:',
-'yourpassword' => 'ગુપ્ત સંજ્ઞા:',
-'yourpasswordagain' => 'ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો',
-'remembermypassword' => 'આ કોમ્યૂટર પર મારી લૉગ ઇન વિગતો ધ્યાનમાં રાખો',
-'yourdomainname' => 'તમારૂં ડોમેઇન:',
-'externaldberror' => 'પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.',
-'login' => 'પ્રવેશ કરો (લૉગ ઇન કરીને)',
-'nav-login-createaccount' => 'પ્રવેશ કરો / નવું ખાતું ખોલો',
-'loginprompt' => '{{SITENAME}}માં પ્રવેશ કરવા માટે તમારા બ્રાઉઝરમાં કુકીઝ એનેબલ કરેલી હોવી જોઇશે.',
-'userlogin' => 'પ્રવેશ કરો / નવું ખાતું ખોલો',
-'logout' => 'બહાર નીકળો',
-'userlogout' => 'બહાર નીકળો/લૉગ આઉટ',
-'notloggedin' => 'પ્રવેશ કરેલ નથી',
-'nologin' => "શું તમારૂં ખાતું નથી? તો નવું '''$1'''.",
-'nologinlink' => 'ખાતું ખોલો',
-'createaccount' => 'નવું ખાતું ખોલો',
-'gotaccount' => "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
-'gotaccountlink' => 'પ્રવેશો (લૉગ ઇન કરો)',
-'createaccountmail' => 'ઇ-મેઇલ દ્વારા',
-'badretype' => 'તમે દાખલ કરેલ ગુપ્તસંજ્ઞા મળતી આવતી નથી.',
-'userexists' => 'દાખલ કરેલું સભ્ય નામ વપરાશમાં છે.</br>
+'yourname' => 'સભ્ય નામ:',
+'yourpassword' => 'ગુપ્ત સંજ્ઞા:',
+'yourpasswordagain' => 'ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો',
+'remembermypassword' => 'આ કોમ્યૂટર પર મારી લૉગ ઇન વિગતો ધ્યાનમાં રાખો',
+'yourdomainname' => 'તમારૂં ડોમેઇન:',
+'externaldberror' => 'પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.',
+'login' => 'પ્રવેશ કરો (લૉગ ઇન કરીને)',
+'nav-login-createaccount' => 'પ્રવેશ કરો / નવું ખાતું ખોલો',
+'loginprompt' => '{{SITENAME}}માં પ્રવેશ કરવા માટે તમારા બ્રાઉઝરમાં કુકીઝ એનેબલ કરેલી હોવી જોઇશે.',
+'userlogin' => 'પ્રવેશ કરો / નવું ખાતું ખોલો',
+'logout' => 'બહાર નીકળો',
+'userlogout' => 'બહાર નીકળો/લૉગ આઉટ',
+'notloggedin' => 'પ્રવેશ કરેલ નથી',
+'nologin' => "શું તમારૂં ખાતું નથી? તો નવું '''$1'''.",
+'nologinlink' => 'ખાતું ખોલો',
+'createaccount' => 'નવું ખાતું ખોલો',
+'gotaccount' => "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
+'gotaccountlink' => 'પ્રવેશો (લૉગ ઇન કરો)',
+'createaccountmail' => 'ઇ-મેઇલ દ્વારા',
+'badretype' => 'તમે દાખલ કરેલ ગુપ્તસંજ્ઞા મળતી આવતી નથી.',
+'userexists' => 'દાખલ કરેલું સભ્ય નામ વપરાશમાં છે.</br>
કૃપયા અન્ય નામ પસંદ કરો.',
-'youremail' => 'ઇ-મેઇલ:',
-'username' => 'સભ્ય નામ:',
-'prefs-memberingroups' => '{{PLURAL:$1|સમુહ|સમુહો}}ના સભ્ય:',
-'yourrealname' => 'સાચું નામ:',
-'yourlanguage' => 'ભાષા',
-'yournick' => 'સહી:',
-'badsiglength' => 'તમારી સહી વધુ લાંબી છે.
-તે $1 {{PLURAL:$1|અક્ષર|અક્ષરો}} કરતા વધુ લાંબી ન હોવી જોઇએ.',
-'yourgender' => 'જાતિ:',
-'gender-unknown' => 'અનિર્દિષ્ટ',
-'gender-male' => 'પુરુષ',
-'gender-female' => 'સ્ત્રી',
-'email' => 'ઇ-મેઇલ',
-'prefs-help-realname' => 'સાચું નામ મરજીયાત છે.
-જો આપ સાચું નામ આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમારા કરેલાં યોગદાનનું શ્રેય આપવા માટે થશે.',
-'loginerror' => 'પ્રવેશ ત્રુટિ',
-'prefs-help-email' => "ઇ-મેઇલ સરનામુ વૈકલ્પિક છે, પરંતુ જો તમે તમારી ગુપ્તસંજ્ઞા ભુલી ગયા હો તો એ દ્વારા તમને નવી ગુપ્તસંજ્ઞા ઇ-મેઇલ કરી શકાશે.
-તમે એ પણ પસંદ કરી શકો કે, તમારી ઓળખ જાહેર થયા વગર, અન્ય લોકો તમારા 'મારા વિષે' કે 'મારી ચર્ચા'ના પાના પરથી તમારો સંપર્ક કરી શકે.",
-'prefs-help-email-required' => 'ઇ-મેઇલ સરનામુ જરૂરી.',
-'nocookiesnew' => 'તમારુ સભ્ય ખાતું બની ગયું છે પણ તમે પ્રવેશ (લોગ ઇન) કર્યો નથી.
+'loginerror' => 'પ્રવેશ ત્રુટિ',
+'nocookiesnew' => 'તમારુ સભ્ય ખાતું બની ગયું છે પણ તમે પ્રવેશ (લોગ ઇન) કર્યો નથી.
{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.
કૃપા કરી કુકીઝ ચાલુ કરીને તમારા સભ્યનામ સાથે પ્રવેશ કરો.',
-'nocookieslogin' => '{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.
+'nocookieslogin' => '{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.
તમે કુકીઝ બંધ કરી છે.
કૃપા કરી કુકીઝ ચાલુ કરીને તમારા સભ્યનામ સાથે પ્રવેશ કરો.',
-'noname' => 'તમે પ્રમાણભૂત સભ્યનામ જણાવેલ નથી.',
-'loginsuccesstitle' => 'પ્રવેશ સફળ',
-'loginsuccess' => "'''તમે હવે {{SITENAME}}માં \"\$1\" તરીકે પ્રવેશી ચુક્યા છો.'''",
-'nosuchuser' => '"$1" નામ ધરાવતો કોઇ સભ્ય અસ્તિત્વમાં નથી.
+'noname' => 'તમે પ્રમાણભૂત સભ્યનામ જણાવેલ નથી.',
+'loginsuccesstitle' => 'પ્રવેશ સફળ',
+'loginsuccess' => "'''તમે હવે {{SITENAME}}માં \"\$1\" તરીકે પ્રવેશી ચુક્યા છો.'''",
+'nosuchuser' => '"$1" નામ ધરાવતો કોઇ સભ્ય અસ્તિત્વમાં નથી.
સભ્યનામો અક્ષરસંવેદી (કેસ સેન્સિટીવ) હોય છે.
કૃપા કરી સ્પેલીંગ/જોડણી ચકાસો અથવા [[Special:UserLogin/signup|નવું ખાતુ ખોલો]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" નામનો કોઇ સભ્ય નથી, તમારી જોડણી તપાસો.',
-'nouserspecified' => 'તમારે સભ્ય નામ દર્શાવવાની જરૂર છે.',
-'wrongpassword' => 'તમે લખેલી ગુપ્ત સંજ્ઞા ખોટી છે.
+'nosuchusershort' => '"<nowiki>$1</nowiki>" નામનો કોઇ સભ્ય નથી, તમારી જોડણી તપાસો.',
+'nouserspecified' => 'તમારે સભ્ય નામ દર્શાવવાની જરૂર છે.',
+'wrongpassword' => 'તમે લખેલી ગુપ્ત સંજ્ઞા ખોટી છે.
ફરીથી પ્રયત્ન કરો.',
-'wrongpasswordempty' => 'તમે ગુપ્ત સંજ્ઞા લખવાનું ભુલી ગયા લાગો છો.
+'wrongpasswordempty' => 'તમે ગુપ્ત સંજ્ઞા લખવાનું ભુલી ગયા લાગો છો.
ફરીથી પ્રયત્ન કરો.',
-'passwordtooshort' => 'તમે દાખલ કરેલી ગુપ્ત સંજ્ઞા ખુબજ ટુંકી છે અથવા અસ્વિકાર્ય છે.
-તેમાં ઓછામાં {{PLURAL:$1|ઓછો એક અક્ષર હોવો |ઓછા $1 અક્ષર હોવા}} જોઇએ અને તેમાં તમારા સભ્ય નામનો સમાવેશ ના થવો જોઇએ.',
-'mailmypassword' => 'પાસવર્ડ ઇ-મેલમાં મોકલો',
-'passwordremindertitle' => '{{SITENAME}} માટેની નવી કામચલાઉ ગુપ્ત સંજ્ઞા',
-'passwordremindertext' => 'કોઇકે (કદાચ તમે IP એડ્રેસ $1 પરથી) {{SITENAME}} ($4) માટે નવી ગુપ્ત સજ્ઞા (પાસવર્ડ) માટે વિનંતી કરેલ છે.
+'passwordtooshort' => 'ગુપ્ત સંજ્ઞામાં ઓછામાં {{PLURAL:$1|ઓછો એક અક્ષર હોવો |ઓછા $1 અક્ષર હોવા}} જોઇએ.',
+'password-name-match' => 'તમારી ગુપ્તસંજ્ઞા તમારા સભ્યનામ કરતાં અલગ જ હોવી જોઇએ.',
+'mailmypassword' => 'પાસવર્ડ ઇ-મેલમાં મોકલો',
+'passwordremindertitle' => '{{SITENAME}} માટેની નવી કામચલાઉ ગુપ્ત સંજ્ઞા',
+'passwordremindertext' => 'કોઇકે (કદાચ તમે IP એડ્રેસ $1 પરથી) {{SITENAME}} ($4) માટે નવી ગુપ્ત સજ્ઞા (પાસવર્ડ) માટે વિનંતી કરેલ છે.
હંગામી ધોરણે સભ્ય "$2" માટે ગુપ્ત સંજ્ઞા બની છે અને તે "$3". જો તમે જ આ વિનંતી કરી હોય અને તમે ગુપ્ત સંજ્ઞા બદલવા માંગતા હો તો તમારે પ્રવેશ કરવો પડશે અને નવી ગુપ્ત સંજ્ઞા પસંદ કરવી પડશે. હંગામી ગુપ્ત સંજ્ઞાની અવધિ {{PLURAL:$5|એક દિવસ|$5 દિવસો}} છે ત્યાર બાદ તે કામ નહીં કરે.
જો બીજા કોઇએ આ વિનંતી કરી હોય અથવા તમને તમારી જુની ગુપ્ત સંજ્ઞા યાદ આવી ગઇ હોય અને તમે તે બદલવા ન માંગતા હો તો આ સંદેશ અવગણીને તમારી જુની ગુપ્ત સંજ્ઞા વાપરવાનું ચાલુ રાખો.',
-'noemail' => 'સભ્ય "$1"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.',
-'passwordsent' => 'A new password has been sent to the e-mail address registered for "$1".
+'noemail' => 'સભ્ય "$1"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.',
+'passwordsent' => 'A new password has been sent to the e-mail address registered for "$1".
Please log in again after you receive it.
"$1" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.
કૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.',
-'blocked-mailpassword' => 'Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.
+'blocked-mailpassword' => 'Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.
ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા રીકવરી કરવાની છૂટ નથી.',
-'eauthentsent' => 'પુષ્ટિ કરવા માટે તમે આપેલા સરનામાં પર ઇમેઇલ મોકલવામાં આવ્યો છે.
+'eauthentsent' => 'પુષ્ટિ કરવા માટે તમે આપેલા સરનામાં પર ઇમેઇલ મોકલવામાં આવ્યો છે.
એ જ સરનામે બીજો ઇમેઇલ થતાં પહેલાં તમારે ઇમેઇલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.',
-'throttled-mailpassword' => 'ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાક|$1 કલાકમાં}} મોકલેલી છે.
+'throttled-mailpassword' => 'ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાક|$1 કલાકમાં}} મોકલેલી છે.
દૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાક|$1 કલાકમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.',
-'mailerror' => 'મેઇલ મોકલવામાં ત્રુટિ: $1',
-'emailauthenticated' => 'તમારૂં ઇ-મેઇલ સરનામું $2 ના $3 સમયે પ્રમાણિત કરેલું છે.',
-'emailnotauthenticated' => 'તમારૂં ઇ-મેઇલ સરનામું હજુ સુધી પ્રમાણિત થયેલું નથી.
+'mailerror' => 'મેઇલ મોકલવામાં ત્રુટિ: $1',
+'emailauthenticated' => 'તમારૂં ઇ-મેઇલ સરનામું $2 ના $3 સમયે પ્રમાણિત કરેલું છે.',
+'emailnotauthenticated' => 'તમારૂં ઇ-મેઇલ સરનામું હજુ સુધી પ્રમાણિત થયેલું નથી.
નિમ્નલિખિત વિશેષતાઓમાંથી કોઇ માટે ઇ-મેઇલ મોકલવામાં આવશે નહીં.',
-'noemailprefs' => "આ વિશેષતાઓ કાર્ય કરી શકે તે માટે 'તમારી પસંદ'માં ઇ-મેઇલ સરનામું દર્શાવો.",
-'emailconfirmlink' => 'તમારા ઇ-મેઇલ સરનામાની પુષ્ટિ કરો',
-'accountcreated' => 'ખાતું ખોલવામાં આવ્યું છે',
-'accountcreatedtext' => '$1 માટે સભ્ય ખાતુ બનાવ્યું.',
-'createaccount-title' => '{{SITENAME}} માટે ખાતુ બનાવ્યું',
-'createaccount-text' => 'કોઇકે {{SITENAME}} ($4) પર, નામ "$2", ગુપ્તસંજ્ઞા "$3", શાથે તમારા ઇ-મેઇલ એડ્રેસ માટે ખાતુ બનાવેલ છે.
+'noemailprefs' => "આ વિશેષતાઓ કાર્ય કરી શકે તે માટે 'તમારી પસંદ'માં ઇ-મેઇલ સરનામું દર્શાવો.",
+'emailconfirmlink' => 'તમારા ઇ-મેઇલ સરનામાની પુષ્ટિ કરો',
+'accountcreated' => 'ખાતું ખોલવામાં આવ્યું છે',
+'accountcreatedtext' => '$1 માટે સભ્ય ખાતુ બનાવ્યું.',
+'createaccount-title' => '{{SITENAME}} માટે ખાતુ બનાવ્યું',
+'createaccount-text' => 'કોઇકે {{SITENAME}} ($4) પર, નામ "$2", ગુપ્તસંજ્ઞા "$3", શાથે તમારા ઇ-મેઇલ એડ્રેસ માટે ખાતુ બનાવેલ છે.
તમે હવે પ્રવેશ કરી અને ગુપ્તસંજ્ઞા બદલી શકો છો.
જો આ ખાતુ ભુલથી બનેલું હોય તો,આ સંદેશને અવગણી શકો છો.',
-'login-throttled' => 'તમે હાલમાં જ ઘણા પ્રવેશ પ્રયત્નો કર્યા.
+'login-throttled' => 'તમે હાલમાં જ ઘણા પ્રવેશ પ્રયત્નો કર્યા.
કૃપા કરી ફરી પ્રયાસ પહેલાં થોડી રાહ જુઓ.',
-'loginlanguagelabel' => 'ભાષા: $1',
+'loginlanguagelabel' => 'ભાષા: $1',
# Password reset dialog
'resetpass' => 'ગુપ્તસંજ્ઞા બદલો',
@@ -521,8 +621,6 @@ Please log in again after you receive it.
'resetpass_forbidden' => 'ગુપ્તસંજ્ઞા બદલી શકાશે નહીં',
'resetpass-submit-loggedin' => 'ગુપ્તસંજ્ઞા બદલો',
'resetpass-temp-password' => 'કામચલાવ ગુપ્તસંજ્ઞા:',
-'resetpass-logentry' => '$1 માટે ગુપ્તસંજ્ઞા બદલી.',
-'resetpass-comment' => 'ગુપ્તસંજ્ઞા પુનઃસ્થાપિત કરવાનું કારણ:',
# Edit page toolbar
'bold_sample' => 'ઘાટા અક્ષર',
@@ -578,7 +676,6 @@ Please log in again after you receive it.
'blockededitsource' => "'''$1''' માટે '''તમારા ફેરફારો''' નીચે દેખાય છે:",
'whitelistedittitle' => 'ફેરફારો કરવા માટે લોગીન જરૂરી છે.',
'whitelistedittext' => 'ફેરફાર કરવા માટે તમારે $1 કરવાનું છે.',
-'confirmedittitle' => 'ફેરફાર કરવા માટે ઇ-મેઇલ પુષ્ટિકરણ જરૂરી',
'confirmedittext' => 'પાનાંમાં ફેરફાર કરવા માટે તમારે તમારા ઇમેલની પુષ્ટિ કરવી પડશે.
મહેરબાની કરી [[Special:Preferences|મારી પસંદ]]માં જઇને તમારું ઇમેલ આપવું પડશે અને પ્રમાણિત કરવું પડશે.',
'nosuchsectiontitle' => 'આવો કોઇ વિભાગ નથી',
@@ -612,18 +709,18 @@ Please log in again after you receive it.
'longpagewarning' => "'''ચેતવણી: આ પાનું $1 કિલોબાઇટ્સ લાંબુ છે;
કેટલાંક બ્રાઉઝરોમાં લગભગ ૩૨ કિલોબાઇટ્સ જેટલાં કે તેથી મોટાં પાનાઓમાં ફેરફાર કરવામાં મુશ્કેલી પડી શકે છે.
બને ત્યાં સુધી પાનાને નાનાં વિભાગોમાં વિભાજીત કરી નાંખો.'''",
-'templatesused' => 'આ પાનામાં વપરાયેલા ઢાંચાઓ:',
-'templatesusedpreview' => 'આ પૂર્વાવલોકનમાં વપરાયેલાં ઢાંચાઓ:',
+'templatesused' => 'આ પાનામાં વપરાયેલ {{PLURAL:$1|ઢાંચો|ઢાંચાઓ}}:',
+'templatesusedpreview' => 'આ પૂર્વાવલોકનમાં વપરાયેલ {{PLURAL:$1|ઢાંચો|ઢાંચાઓ}}:',
'template-protected' => '(સુરક્ષિત)',
'template-semiprotected' => '(અર્ધ સુરક્ષિત)',
'hiddencategories' => 'આ પાનું {{PLURAL:$1|૧ છુપી શ્રેણી|$1 છુપી શ્રેણીઓ}}નું સભ્ય છે:',
'nocreatetext' => '{{SITENAME}}માં નવું પાનુ બનાવવા ઉપર નિયંત્રણ આવી ગયું છે.
<br />આપ પાછા જઇને હયાત પાનામાં ફેરફાર કરી શકો છો, નહિતર [[Special:UserLogin|પ્રવેશ કરો કે નવું ખાતું ખોલો]].',
'permissionserrorstext-withaction' => '$2 પરવાનગી તમને નીચેનાં {{PLURAL:$1|કારણ|કારણો}} સર નથી:',
-'recreate-deleted-warn' => "'''ચેતવણી: તમે જે પાનું નવું બનાવવા જઇ રહ્યાં છો તે પહેલાં દૂર કરવામાં આવ્યું છે.'''
+'recreate-moveddeleted-warn' => "'''ચેતવણી: તમે જે પાનું નવું બનાવવા જઇ રહ્યાં છો તે પહેલાં દૂર કરવામાં આવ્યું છે.'''
-આગળ વધતાં બે વખત વિચારજો અને જો તમને લાગે કે આ પાનું ફરી વાર બનાવવું ઉચિત છે, તો જ અહીં ફેરફાર કરજો.
-પાનું હટવ્યાં પહેલાનાં બધા ફેરફારોની સૂચિ તમારી સહુલીયત માટે અહીં આપી છે:",
+આ પાનું સંપાદિત કરતા પહેલાં ગંભીરતાપૂર્વક વિચારજો અને જો તમને લાગે કે આ પાનું ફરી વાર બનાવવું ઉચિત છે, તો જ અહીં ફેરફાર કરજો.
+પાનું હટાવ્યાં પહેલાનાં બધા ફેરફારોની સૂચિ તમારી અનુકૂળતા માટે અહીં આપી છે:",
'edit-conflict' => 'સંપાદન સંઘર્ષ.',
# Account creation failure
@@ -635,7 +732,7 @@ Please log in again after you receive it.
'currentrev' => 'હાલની આવૃત્તિ',
'currentrev-asof' => '$1એ જોઈ શકાતી હાલની આવૃત્તિ',
'revisionasof' => '$1 સુધીનાં પુનરાવર્તન',
-'revision-info' => '$2 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો', # Additionally available: $3: revision id
+'revision-info' => '$2 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો',
'previousrevision' => '←જુના ફેરફારો',
'nextrevision' => 'આ પછીનું પુનરાવર્તન→',
'currentrevisionlink' => 'વર્તમાન આવૃત્તિ',
@@ -652,18 +749,21 @@ Please log in again after you receive it.
'historyempty' => '(ખાલી)',
# Revision feed
-'history-feed-item-nocomment' => '$1, $2 સમયે', # user at time
+'history-feed-item-nocomment' => '$1, $2 સમયે',
# Revision deletion
-'rev-delundel' => 'બતાવો/છુપાવો',
-'revdel-restore' => 'વિઝિબિલિટિ બદલો',
-'pagehist' => 'પાનાનો ઇતિહાસ',
-'deletedhist' => 'રદ કરેલનો ઇતિહાસ',
-'revdelete-content' => 'સામગ્રી',
-'revdelete-summary' => 'સંપાદનનો સંક્ષિપ્ત અહેવાલ',
-'revdelete-uname' => 'સભ્યનામ',
-'revdelete-hid' => 'છુપાવો $1',
-'revdelete-unhid' => 'દર્શાવો $1',
+'rev-delundel' => 'બતાવો/છુપાવો',
+'revdel-restore' => 'વિઝિબિલિટિ બદલો',
+'pagehist' => 'પાનાનો ઇતિહાસ',
+'deletedhist' => 'રદ કરેલનો ઇતિહાસ',
+'revdelete-content' => 'સામગ્રી',
+'revdelete-summary' => 'સંપાદનનો સંક્ષિપ્ત અહેવાલ',
+'revdelete-uname' => 'સભ્યનામ',
+'revdelete-hid' => 'છુપાવો $1',
+'revdelete-unhid' => 'દર્શાવો $1',
+'revdelete-otherreason' => 'અન્ય/વધારાનું કારણ:',
+'revdelete-reasonotherlist' => 'અન્ય કારણ',
+'revdelete-edit-reasonlist' => 'ભુંસવાનું કારણ બદલો.',
# Suppression log
'suppressionlog' => 'દાબ નોંધ',
@@ -682,20 +782,6 @@ Please log in again after you receive it.
'compareselectedversions' => 'પસંદ કરેલા સરખાવો',
'editundo' => 'રદ કરો',
'diff-multi' => '({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન|વચગાળાનાં $1 પુનરાવર્તનો}} દર્શાવેલ નથી.)',
-'diff-img' => "'''ચિત્ર'''",
-'diff-span' => "'''ગાળો'''",
-'diff-a' => "'''કડી'''",
-'diff-i' => "'''ત્રાંસા'''",
-'diff-b' => "'''ઘાટા'''",
-'diff-strong' => "'''સશકત'''",
-'diff-em' => "'''પ્રાધાન્ય'''",
-'diff-font' => "'''લિપિ'''",
-'diff-big' => "'''મોટા'''",
-'diff-del' => "'''રદ કરેલ'''",
-'diff-tt' => "'''નિયત પહોળાઇ'''",
-'diff-sub' => "'''ઉપલિપિ'''",
-'diff-sup' => "'''અતિલિપિ'''",
-'diff-strike' => "'''આરપારરેખાકૃત'''",
# Search results
'searchresults' => 'પરિણામોમાં શોધો',
@@ -703,14 +789,11 @@ Please log in again after you receive it.
'searchresulttext' => '{{SITENAME}}માં કેવી રીતે શોધવું તેની વધુ માહિતિ માટે જુઓ: [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'તમે \'\'\'[[:$1]]\'\'\' માટે શોધ્યુ ([[Special:Prefixindex/$1|"$1"થી શરૂ થતા બધા પાના]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"ની સાથે જોડાયેલા બધા પાના]])',
'searchsubtitleinvalid' => "તમે '''$1''' શોધ્યું",
-'noexactmatch' => "'''\"\$1\" શિર્ષક વાળું કોઇ પાનું નથી.'''
-<br />તમે [[:\$1|આ પાનું બનાવી શકો છો]].",
-'noexactmatch-nocreate' => "'''\"\$1\" શિર્ષક વાળું કોઈ પાનું નથી.'''",
'notitlematches' => 'આ શબ્દ સાથે કોઇ શિર્ષક મળતું આવતું નથી',
'notextmatches' => 'આ શબ્દ કોઈ પાનાંમાં મળ્યો નથી',
-'prevn' => 'પાછળનાં $1',
-'nextn' => 'આગળનાં $1',
-'viewprevnext' => 'જુઓ: ($1) ($2) ($3)',
+'prevn' => 'પહેલાનાં {{PLURAL:$1|$1}}',
+'nextn' => 'પછીનાં {{PLURAL:$1|$1}}',
+'viewprevnext' => 'જુઓ: ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:સૂચિ',
'search-result-size' => '$1 ({{PLURAL:$2|1 શબ્દ|$2 શબ્દો}})',
'search-result-score' => 'પ્રસ્તુતિ: $1%',
@@ -722,7 +805,6 @@ Please log in again after you receive it.
'search-interwiki-more' => '(વધુ)',
'search-mwsuggest-enabled' => 'સુઝાવ સહિત',
'search-mwsuggest-disabled' => 'સુઝાવ વિના',
-'showingresultstotal' => "{{PLURAL:$4|'''$3'''નું '''$1''' પરિણામ |'''$3'''નાં '''$1 - $2''' પરિણામો}} નીચે દર્શાવ્યાં છે",
'nonefound' => "'''નોંધ''':ફક્ત અમુકજ નામસ્થળોમાં આપોઆપ શોધાશે.
તમારા શબ્દને ''બધા:'' ઉમેરી શોધવાનો પ્રયત્ન કરો, જેથી બધી માહિતિમાં (જેમકે ચર્ચાના પાના, ઢાંચા, વિગેરે)માં શોધ થઈ શકે, અથવાતો ઇચ્છિત નામસ્થળ પસંદ કરી શોધો બટન દબાવો.",
'powersearch' => 'શોધો (વધુ પર્યાય સાથે)',
@@ -735,13 +817,15 @@ Please log in again after you receive it.
ત્યાં સુધી તમે ગુગલ દ્વારા શોધ કરી શકો.
'''નોંધઃ'''{{SITENAME}}નાં તેમના (ગુગલના) ઈન્ડેક્સ જુના હોઇ શકે.",
+# Quickbar
+'qbsettings' => 'શીઘ્રપટ્ટ',
+'qbsettings-none' => 'કોઇપણ નહીં',
+
# Preferences page
'preferences' => 'પસંદ',
'mypreferences' => 'મારી પસંદ',
-'qbsettings' => 'શીઘ્રપટ્ટ',
-'qbsettings-none' => 'કોઇપણ નહીં',
'skin-preview' => 'ફેરફાર બતાવો',
-'datetime' => 'તારીખ અને સમય',
+'prefs-datetime' => 'તારીખ અને સમય',
'prefs-watchlist' => 'ધ્યાનસૂચિ',
'searchresultshead' => 'શોધો',
'timezonelegend' => 'સમય ક્ષેત્ર:',
@@ -759,6 +843,25 @@ Please log in again after you receive it.
'timezoneregion-indian' => 'હિંદ મહાસાગર',
'timezoneregion-pacific' => 'પ્રશાંત મહાસાગર',
'prefs-searchoptions' => 'શોધ વિકલ્પો',
+'prefs-emailconfirm-label' => 'ઇ-મેલ પુષ્ટી',
+'youremail' => 'ઇ-મેઇલ:',
+'username' => 'સભ્ય નામ:',
+'prefs-memberingroups' => '{{PLURAL:$1|સમુહ|સમુહો}}ના સભ્ય:',
+'yourrealname' => 'સાચું નામ:',
+'yourlanguage' => 'ભાષા',
+'yournick' => 'સહી:',
+'badsiglength' => 'તમારી સહી વધુ લાંબી છે.
+તે $1 {{PLURAL:$1|અક્ષર|અક્ષરો}} કરતા વધુ લાંબી ન હોવી જોઇએ.',
+'yourgender' => 'જાતિ:',
+'gender-unknown' => 'અનિર્દિષ્ટ',
+'gender-male' => 'પુરુષ',
+'gender-female' => 'સ્ત્રી',
+'email' => 'ઇ-મેઇલ',
+'prefs-help-realname' => 'સાચું નામ મરજીયાત છે.
+જો આપ સાચું નામ આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમારા કરેલાં યોગદાનનું શ્રેય આપવા માટે થશે.',
+'prefs-help-email' => "ઇ-મેઇલ સરનામુ વૈકલ્પિક છે, પરંતુ જો તમે તમારી ગુપ્તસંજ્ઞા ભુલી ગયા હો તો એ દ્વારા તમને નવી ગુપ્તસંજ્ઞા ઇ-મેઇલ કરી શકાશે.
+તમે એ પણ પસંદ કરી શકો કે, તમારી ઓળખ જાહેર થયા વગર, અન્ય લોકો તમારા 'મારા વિષે' કે 'મારી ચર્ચા'ના પાના પરથી તમારો સંપર્ક કરી શકે.",
+'prefs-help-email-required' => 'ઇ-મેઇલ સરનામુ જરૂરી.',
# User rights
'userrights-user-editname' => 'સભ્યનામ દાખલ કરો:',
@@ -810,6 +913,8 @@ Please log in again after you receive it.
# Recent changes linked
'recentchangeslinked' => 'આની સાથે જોડાયેલા ફેરફાર',
+'recentchangeslinked-feed' => 'આની સાથે જોડાયેલા ફેરફાર',
+'recentchangeslinked-toolbox' => 'આની સાથે જોડાયેલા ફેરફાર',
'recentchangeslinked-title' => '"$1" ને લગતા ફેરફારો',
'recentchangeslinked-noresult' => 'સંકળાયેલાં પાનાંમાં સુચવેલા સમય દરમ્યાન કોઇ ફેરફાર થયાં નથી.',
'recentchangeslinked-summary' => "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.
@@ -820,7 +925,6 @@ Please log in again after you receive it.
# Upload
'upload' => 'ફાઇલ ચડાવો',
'uploadbtn' => 'ફાઇલ ચડાવો',
-'reupload' => 'ફરી ચડાવો',
'uploadlogpage' => 'ચઢાવેલી ફાઇલોનું માહિતિ પત્રક',
'filesource' => 'સ્ત્રોત:',
'uploadedimage' => '"[[$1]]" ચઢાવ્યું',
@@ -829,6 +933,7 @@ Please log in again after you receive it.
'listfiles' => 'ફાઇલોની યાદી',
# File description page
+'file-anchor-link' => 'ફાઇલ/દસ્તાવેજ',
'filehist' => 'ફાઇલનો ઇતિહાસ',
'filehist-help' => 'તારિખ/સમય ઉપર ક્લિક કરવાથી તે સમયે ફાઇલ કેવી હતી તે જોવા મળશે',
'filehist-current' => 'વર્તમાન',
@@ -849,12 +954,14 @@ Please log in again after you receive it.
'morelinkstoimage' => 'આ ફાઇલ સાથે જોડાયેલ [[Special:WhatLinksHere/$1|વધુ કડીઓ]] જુઓ.',
'redirectstofile' => 'નીચે જણાવેલ {{PLURAL:$1|ફાઇલ|$1 ફાઇલો}} આ ફાઇલ પર વાળેલી છે:',
'duplicatesoffile' => 'નીચે જણાવેલ {{PLURAL:$1|ફાઇલ|$1 ફાઇલો}} આ ફાઇલની નકલ છે. ([[Special:FileDuplicateSearch/$2|વધુ વિગતો]])',
-'sharedupload' => 'આ ફાઇલ $1માં આવેલી છે અને શક્ય છે કે તે અન્ય પરિયોજનાઓમાં પણ વપરાતી હોય.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'આ નામ વાળી કોઇ ફાઇલ અસ્તિત્વમાં નથી, તમે તેને $1 શકો છો.',
-'noimage-linktext' => 'ચઢાવી',
+'sharedupload' => 'આ ફાઇલ $1માં આવેલી છે અને શક્ય છે કે તે અન્ય પરિયોજનાઓમાં પણ વપરાતી હોય.',
+'sharedupload-desc-there' => 'આ ફાઇલ $1નો ભાગ છે અને શક્ય છે કે અન્ય પ્રકલ્પોમાં પણ વપરાઇ હોય.
+વધુ માહિતી માટે મહેરબાની કરીને [$2 ફાઇલનાં વર્ણનનુ પાનું] જુઓ.',
+'sharedupload-desc-here' => 'આ ફાઇલ $1નો ભાગ છે અને શક્ય છે કે અન્ય પ્રકલ્પોમાં પણ વપરાઇ હોય.
+ત્યાંનાં મૂળ [$2 ફાઇલનાં વર્ણનનાં પાનાં] પર આપેલું વર્ણન નીચે દર્શાવેલું છે.',
'uploadnewversion-linktext' => 'આ ફાઇલની નવી આવૃત્તિ ચઢાવો',
-'shared-repo-from' => '$1 થી', # $1 is the repository name
-'shared-repo' => 'સાંઝો ભંડાર', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 થી',
+'shared-repo' => 'સાંઝો ભંડાર',
# File reversion
'filerevert' => '$1 હતું તેવું કરો',
@@ -907,8 +1014,8 @@ Please log in again after you receive it.
# Statistics
'statistics' => 'આંકડાકિય માહિતિ',
-'brokenredirects-edit' => '(ફેરફાર કરો)',
-'brokenredirects-delete' => '(હટાવો)',
+'brokenredirects-edit' => 'ફેરફાર કરો',
+'brokenredirects-delete' => 'હટાવો',
'withoutinterwiki' => 'અન્ય ભાષાઓની કડીઓ વગરનાં પાનાં',
@@ -1047,7 +1154,6 @@ Please log in again after you receive it.
'protectexpiry' => 'સમાપ્તિ:',
'protect_expiry_invalid' => 'સમાપ્તિનો સમય માન્ય નથી.',
'protect_expiry_old' => 'સમાપ્તિનો સમય ભૂતકાળમાં છે.',
-'protect-unchain' => 'ખસેડવાની પરવાનગી આપો',
'protect-text' => "અહિં તમે પાનાં '''<nowiki>$1</nowiki>'''નું સુરક્ષા સ્તર જોઈ શકો છો અને તેમાં ફેરફાર પણ કરી શકશો.",
'protect-locked-access' => "તમને પાનાંની સુરક્ષાનાં સ્તરમાં ફેરફાર કરવાની પરવાનગી નથી.
પાનાં '''$1'''નું હાલનું સેટીંગ અહિં જોઈ શકો છો:",
@@ -1062,7 +1168,7 @@ Please log in again after you receive it.
'protect-expiring' => '$1 (UTC) એ સમાપ્ત થાય છે',
'protect-cascade' => 'આ પાનાંમાં સમાવિષ્ટ પેટા પાનાં પણ સુરક્ષિત કરો (કૅસ્કેડીંગ સુરક્ષા)',
'protect-cantedit' => 'આપ આ પાનાનાં સુરક્ષા સ્તરમાં ફેરફાર ના કરી શકો, કેમકે આપને અહિં ફેરફાર કરવાની પરવાનગી નથી.',
-'protect-expiry-options' => '૨ કલાક:2 hours,૧ દિવસ:1 day,૩ દિવસ:3 days,૧ સપ્તાહ:1 week,૨ સપ્તાહ:2 weeks,૧ માસ:1 month,૩ માસ:3 months,૬ માસ:6 months,૧ વર્ષ:1 year,અમર્યાદ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '૨ કલાક:2 hours,૧ દિવસ:1 day,૩ દિવસ:3 days,૧ સપ્તાહ:1 week,૨ સપ્તાહ:2 weeks,૧ માસ:1 month,૩ માસ:3 months,૬ માસ:6 months,૧ વર્ષ:1 year,અમર્યાદ:infinite',
'restriction-type' => 'પરવાનગી:',
'restriction-level' => 'નિયંત્રણ સ્તર:',
@@ -1092,6 +1198,7 @@ Please log in again after you receive it.
'sp-contributions-newbies' => 'માત્ર નવા ખુલેલાં ખાતાઓનું યોગદાન બતાવો',
'sp-contributions-newbies-sub' => 'નવા ખાતાઓ માટે',
'sp-contributions-blocklog' => 'પ્રતિબંધ સૂચિ',
+'sp-contributions-talk' => 'યોગદાનકર્તાની ચર્ચા',
'sp-contributions-search' => 'યોગદાન શોધો',
'sp-contributions-username' => 'IP સરનામું અથવા સભ્યનામ:',
'sp-contributions-submit' => 'શોધો',
@@ -1118,7 +1225,7 @@ Please log in again after you receive it.
'ipbreason' => 'કારણ:',
'ipbreasonotherlist' => 'બીજું કારણ',
'ipbother' => 'અન્ય સમય',
-'ipboptions' => '૨ કલાક:2 hours,૧ દિવસ:1 day,૩ દિવસ:3 days,૧ સપ્તાહ:1 week,૨ સપ્તાહ:2 weeks,૧ માસ:1 month,૩ માસ:3 months,૬ માસ:6 months,૧ વર્ષ:1 year,અમર્યાદ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '૨ કલાક:2 hours,૧ દિવસ:1 day,૩ દિવસ:3 days,૧ સપ્તાહ:1 week,૨ સપ્તાહ:2 weeks,૧ માસ:1 month,૩ માસ:3 months,૬ માસ:6 months,૧ વર્ષ:1 year,અમર્યાદ:infinite',
'ipbotheroption' => 'બીજું',
'ipblocklist' => 'પ્રતિબંધિત IP સરનામા અને સભ્યોની યાદી',
'ipblocklist-submit' => 'શોધો',
@@ -1155,7 +1262,7 @@ Please log in again after you receive it.
'move-watch' => 'આ પાનું ધ્યાનમાં રાખો',
'movepagebtn' => 'પાનું ખસેડો',
'pagemovedsub' => 'પાનું સફળતા પૂર્વક ખસેડવામાં આવ્યું છે',
-'movepage-moved' => '\'\'\'"$1" નું નામ બદલીને "$2" કરવામાં આવ્યું છે\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" નું નામ બદલીને "$2" કરવામાં આવ્યું છે\'\'\'',
'articleexists' => 'આ નામનું પાનું અસ્તિત્વમાં છે, અથવાતો તમે પસંદ કરેલું નામ અસ્વિકાર્ય છો.
કૃપા કરી અન્ય નામ પસંદ કરો.',
'talkexists' => "'''મુખ્ય પાનું સફળતાપૂર્વક ખસેડવામાં આવ્યું છે, પરંતુ તેનું ચર્ચાનું પાનું ખસેડી શકાયું નથી, કેમકે નવા શિર્ષક હેઠળ તે પાનું પહેલેથી અસ્તિત્વમાં છે.
@@ -1209,6 +1316,7 @@ Please log in again after you receive it.
'tooltip-search-fulltext' => 'આ લખાણ વાળા પાનાઓ શોધો',
'tooltip-p-logo' => 'મુખપૃષ્ઠ',
'tooltip-n-mainpage' => 'મુખપૃષ્ઠ પર જાઓ',
+'tooltip-n-mainpage-description' => 'મુખ્ય પાના પર જાઓ',
'tooltip-n-portal' => 'પરિયોજના વિષે, આપ શું કરી શકો અને વસ્તુઓ ક્યાં શોધશો',
'tooltip-n-currentevents' => 'પ્રસ્તુત ઘટનાની પૃષ્ઠભૂમિની માહિતિ શોધો',
'tooltip-n-recentchanges' => 'વિકિમાં હાલમા થયેલા ફેરફારોની સૂચિ.',
@@ -1285,7 +1393,7 @@ Please log in again after you receive it.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'પહોળાઈ',
@@ -1294,7 +1402,7 @@ Please log in again after you receive it.
'exif-unknowndate' => 'અજ્ઞાત તારીખ',
-'exif-orientation-1' => 'સામાન્ય', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'સામાન્ય',
'exif-componentsconfiguration-0' => 'નથી',
@@ -1346,7 +1454,7 @@ Please log in again after you receive it.
'watchlisttools-raw' => 'કાચી ધ્યાનસૂચિમાં ફેરફાર કરો',
# Special:Version
-'version' => 'આવૃત્તિ', # Not used as normal message but as header for the special page itself
+'version' => 'આવૃત્તિ',
# Special:SpecialPages
'specialpages' => 'ખાસ પાનાં',
diff --git a/languages/messages/MessagesGv.php b/languages/messages/MessagesGv.php
index ca7acd1a..000be470 100644
--- a/languages/messages/MessagesGv.php
+++ b/languages/messages/MessagesGv.php
@@ -50,6 +50,7 @@ $messages = array(
'tog-enotifusertalkpages' => 'Cur post-l dou my vees y duillag ymmydeyr aym caghlaa',
'tog-enotifminoredits' => 'Cur dou post-l er myn-arraghey duillagyn chammah',
'tog-shownumberswatching' => 'Taishbyney quoid dy ymmydeyryn ta freill arrey er',
+'tog-oldsig' => "Roie-haishbynys jeh'n screeuys t'ayn hannah:",
'tog-fancysig' => 'Gra dy vel y screeuys myr wikiteks (gyn kiangley seyr-obbragh)',
'tog-showhiddencats' => 'Taishbyney ronnaghyn follit',
@@ -57,6 +58,9 @@ $messages = array(
'underline-never' => 'Dy bragh',
'underline-default' => 'Rere roie-hoiaghey y yeeagheyder',
+# Font style option in Special:Preferences
+'editfont-default' => 'Rere roie-hoiaghey y yeeagheyder',
+
# Dates
'sunday' => 'Jedoonee',
'monday' => 'Jelune',
@@ -116,7 +120,7 @@ $messages = array(
'category-media-header' => 'Meanyn \'sy ronney "$1"',
'category-empty' => "''Cha nel duillagyn ny meanyn ayns y ronney shoh ec y traa t'ayn.''",
'hidden-categories' => '{{PLURAL:$1|Ronney follit|Ronnaghyn follit}}',
-'hidden-category-category' => 'Ronnaghyn follit', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ronnaghyn follit',
'category-subcat-count' => "{{PLURAL:$2|Ta{{PLURAL:$1|&nbsp;ny $1 fo-ronney|'n $1 'o-ronney|'n $1 'o-ronney|&nbsp;ny $1 fo-ronnaghyn}} shoh ec y ronney shoh, jeh'n lane-sym $2.}}",
'category-subcat-count-limited' => "{{PLURAL:$1|Ta{{PLURAL:$1|&nbsp;ny $1 fo-ronney|'n $1 'o-ronney|'n $1 'o-ronney|&nbsp;ny $1 fo-ronnaghyn}} shoh ec y ronney shoh.}}",
'category-article-count' => "Ta{{PLURAL:$1|'n $1 duillag|'n $1 duillag|'n $1 ghuillag| ny $1 duillagyn}} heese 'sy ronney shoh, jeh'n lame-sym $2.",
@@ -126,10 +130,18 @@ $messages = array(
'mainpagetext' => "'''Ta MediaWiki currit stiagh nish.'''",
-'about' => 'Mychione',
-'article' => 'Duillag chummal',
-'newwindow' => '(foshlit ayns uinnag elley eh)',
-'cancel' => 'Dolley magh',
+'about' => 'Mychione',
+'article' => 'Duillag chummal',
+'newwindow' => '(foshlit ayns uinnag elley eh)',
+'cancel' => 'Dolley magh',
+'moredotdotdot' => 'Tooilley...',
+'mypage' => 'My ghuillag',
+'mytalk' => 'My resoonaght',
+'anontalk' => "Cur loayrtys da'n IP shoh",
+'navigation' => 'Stiureydys',
+'and' => '&#32;as',
+
+# Cologne Blue skin
'qbfind' => 'Fow',
'qbbrowse' => 'Ronsaghey',
'qbedit' => 'Reaghey',
@@ -137,15 +149,31 @@ $messages = array(
'qbpageinfo' => 'Co-hecks',
'qbmyoptions' => 'My ghuillagyn',
'qbspecialpages' => 'Duillagyn er lheh',
-'moredotdotdot' => 'Tooilley...',
-'mypage' => 'My ghuillag',
-'mytalk' => 'My resoonaght',
-'anontalk' => "Cur loayrtys da'n IP shoh",
-'navigation' => 'Stiureydys',
-'and' => '&#32;as',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FC',
+'faqpage' => 'Project:FC',
+
+# Vector skin
+'vector-action-delete' => 'Scryss',
+'vector-action-move' => 'Scughey',
+'vector-action-protect' => 'Coadee',
+'vector-action-undelete' => 'Jee-scryss',
+'vector-action-unprotect' => 'Jee-choadee',
+'vector-namespace-category' => 'Ronney',
+'vector-namespace-help' => 'Duillag choonee',
+'vector-namespace-image' => 'Coadan',
+'vector-namespace-main' => 'Duillag',
+'vector-namespace-mediawiki' => 'Çhaghteraght',
+'vector-namespace-project' => 'Duillag shalee',
+'vector-namespace-special' => 'Duillag er lheh',
+'vector-namespace-talk' => 'Resoonaght',
+'vector-namespace-template' => 'Clowan',
+'vector-namespace-user' => 'Duillag ymmydeyr',
+'vector-view-create' => 'Croo',
+'vector-view-edit' => 'Reaghey',
+'vector-view-history' => 'Jeeagh er shennaghys',
+'vector-view-view' => 'Lhaih',
+'vector-view-viewsource' => 'Jeeagh er bun',
+'namespaces' => 'Reamyssyn',
'errorpagetitle' => 'Marranys',
'returnto' => 'Goll er ash gys $1.',
@@ -194,7 +222,7 @@ $messages = array(
'otherlanguages' => 'Ayns çhengaghyn elley',
'redirectedfrom' => '(Aa-enmyssit ass $1)',
'redirectpagesub' => 'Duillag aa-enmys',
-'lastmodifiedat' => "Va'n duillag shoh ceaghlit er $1, ec $2.", # $1 date, $2 time
+'lastmodifiedat' => "Va'n duillag shoh ceaghlit er $1, ec $2.",
'protectedpage' => 'Duillag choadit',
'jumpto' => 'Gow gys:',
'jumptonavigation' => 'stiureydys',
@@ -204,7 +232,6 @@ $messages = array(
'aboutsite' => 'Mychione {{SITENAME}}',
'aboutpage' => 'Project:Mychione',
'copyright' => 'Ta stoo ry-gheddyn rere $1.',
-'copyrightpagename' => 'Coip-chiart {{GRAMMAR:genitive|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Coip-chiartyn',
'currentevents' => 'Cooishyn y laa',
'currentevents-url' => 'Project:Cooishyn y laa',
@@ -212,8 +239,6 @@ $messages = array(
'disclaimerpage' => 'Project:Obbalys cadjin',
'edithelp' => 'Cooney y reaghey',
'edithelppage' => 'Help:Reaghey',
-'faq' => 'FC',
-'faqpage' => 'Project:FC',
'helppage' => 'Help:Cummal',
'mainpage' => 'Ard-ghuillag',
'mainpage-description' => 'Ard-ghuillag',
@@ -286,11 +311,9 @@ Cur coontey jeh da [[Special:ListUsers/sysop|reireyder]], as gow notey jeh\'n UR
'ns-specialprotected' => 'Cha nod oo reaghey duillagyn er lheh.',
# Login and logout pages
-'logouttitle' => 'Log magh yn ymmydeyr',
'welcomecreation' => '== Failt ort, $1! ==
Ta dty choontys chrooit nish.<br />
Ny jean jarrood dty [[Special:Preferences|{{SITENAME}} hosheeaghtyn]] y arraghey.',
-'loginpagetitle' => 'Log stiagh yn ymmydeyr',
'yourname' => "Dt'ennym ymmydeyr",
'yourpassword' => 'Fockle yn arrey:',
'yourpasswordagain' => "Aascreeu d'ockle arrey:",
@@ -308,20 +331,8 @@ Ny jean jarrood dty [[Special:Preferences|{{SITENAME}} hosheeaghtyn]] y arraghey
'gotaccount' => "Vel coontys ayd hannah? '''$1'''.",
'gotaccountlink' => 'Log stiagh',
'createaccountmail' => 'er post-L',
-'youremail' => 'Post-L:',
-'username' => "Dt'ennym ymmydeyr:",
-'uid' => 'Enney ymmydeyr:',
-'yourrealname' => 'Feer-ennym:',
-'yourlanguage' => 'Çhengey:',
-'yournick' => 'Far-ennym:',
-'yourgender' => 'Keintys:',
-'gender-unknown' => 'Neuhoilshit',
-'gender-male' => 'Firrinagh',
-'gender-female' => 'Bwoirrinagh',
-'email' => 'Post-L',
-'prefs-help-realname' => "Ta dt'eer ennym reihyssagh.<br />
-My bailliu eh y chiarail, bee eh ymmydit son cur gys lieh y chur dhyt er son yn obbyr ayd.",
'loginerror' => 'Marranys log stiagh',
+'createaccounterror' => 'Cha dod shin croo coontys: $1',
'loginsuccesstitle' => "T'ou loggalt stiagh",
'loginsuccess' => "'''T'ou loggit stiagh ayns {{SITENAME}} myr \"\$1\".'''",
'nosuchuser' => 'Cha nel ymmydeyr lesh yn ennym "$1".<br />
@@ -429,8 +440,8 @@ cha nel dty chaghlaaghyn sauailt foast!'''",
<br />
Chammah as shen, t’ou gialdyn dooin dy screeu oo hene eh, ny ren oo coip jeh ny ta fo çhiarnys y theay, ny ry-gheddyn dy seyr.
'''NY CHUR ROISH GYN KIED OBBYR TA FO COIP-CHIART! '''",
-'templatesused' => 'Clowanyn ymmydit er y duillag shoh:',
-'templatesusedpreview' => "Clowanyn ymmydit 'sy roie-haishbynys shoh:",
+'templatesused' => '{{PLURAL:$1|Clowan|Chlowan|Chlowan|Clowanyn}} ymmydit er y duillag shoh:',
+'templatesusedpreview' => "{{PLURAL:$1|Clowan|Chlowan|Chlowan|Clowanyn}} ymmydit 'sy roie-haishbynys shoh:",
'template-protected' => '(glast)',
'template-semiprotected' => '(lieh-ghlast)',
'hiddencategories' => "Ta'n duillag shoh ayns {{PLURAL:$1|ronney follit|ronney follit|ronney follit|ronnaghyn follit}}",
@@ -439,7 +450,7 @@ Chammah as shen, t’ou gialdyn dooin dy screeu oo hene eh, ny ren oo coip jeh n
Foddee shiu goll er ash as reaghey duillag t'ayn nish, ny [[Special:UserLogin|loggal stiagh ny croo coontys]].",
'nocreate-loggedin' => 'Cha nel kied ayd duillagyn noa y chroo er {{SITENAME}}.',
'permissionserrorstext-withaction' => 'Cha nel kiart ayd y $2, er {{PLURAL:$1|y fa|y fa}}:',
-'recreate-deleted-warn' => "'''Raaue: Ta shiu aachroo duillag as eh er ve scrysst roie.'''
+'recreate-moveddeleted-warn' => "'''Raaue: Ta shiu aachroo duillag as eh er ve scrysst roie.'''
By chair dhyt smooinagh vel eh kiart goll er oai lesh reaghey yn duillag shoh.<br />
Ta lioar ny scryssaghyn magh kiarit ayns shoh rere dty chaays hene:",
@@ -450,8 +461,9 @@ Ta lioar ny scryssaghyn magh kiarit ayns shoh rere dty chaays hene:",
# History pages
'viewpagelogs' => 'Jeeagh er lioaryn cooishyn ny duillag shoh',
'currentrev' => 'Aavriwnys roie',
+'currentrev-asof' => 'Aavriwnys roie er $1',
'revisionasof' => 'Aavriwnys veih $1',
-'revision-info' => 'Aavriwnys veih $1 ec $2', # Additionally available: $3: revision id
+'revision-info' => 'Aavriwnys veih $1 ec $2',
'previousrevision' => '←Aavriwnys ny shinney',
'nextrevision' => 'Aavriwnys ny saa→',
'currentrevisionlink' => 'Aavriwnys roie',
@@ -464,7 +476,6 @@ Ta lioar ny scryssaghyn magh kiarit ayns shoh rere dty chaays hene:",
Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
'''({{int:last}})''' = anchaslyssyn rish y lhieggan roish, '''{{int:minoreditletter}}''' = mynchaghlaa",
'history-fieldset-title' => 'Femblal shennaghys',
-'deletedrev' => '[scryssit]',
'histfirst' => 'By hoshee',
'histlast' => 'By yerree',
'historyempty' => '(follym)',
@@ -472,7 +483,7 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
# Revision feed
'history-feed-title' => 'Shennaghys yn aavriwnys',
'history-feed-description' => 'Shennaghys aavriwnys y duillag shoh er yn wiki',
-'history-feed-item-nocomment' => '$1 ec $2', # user at time
+'history-feed-item-nocomment' => '$1 ec $2',
# Revision deletion
'rev-deleted-comment' => '(cohaggloo scughit)',
@@ -510,15 +521,13 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
'searchresulttext' => 'Son ny smoo oayllys mychione ronsaghtyn er {{SITENAME}}, jeeagh er [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ren oo ronsaght er \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dagh duillag ta toshiaghey lesh "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dagh duillag ta kianglt lesh "$1"]])',
'searchsubtitleinvalid' => "Ren oo ronsaght er '''$1'''",
-'noexactmatch' => "'''Cha nel duillag lesh yn ennym \"\$1\".'''
-Foddee oo [[:\$1|croo yn duillag shoh]].",
-'noexactmatch-nocreate' => "'''Cha nel duillag ayn lesh yn enmys \"\$1\".'''",
'notitlematches' => 'Cha nel shen ennym ghuillag erbee',
'notextmatches' => 'Cha nel shen ry-lhaih er duillag erbee',
-'prevn' => '$1 roish shoh',
-'nextn' => 'nah $1',
-'viewprevnext' => 'Jeeagh er ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} roish shoh',
+'nextn' => 'nah {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Jeeagh er ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Cummal',
+'searchprofile-project' => 'Duillagyn Coonee as Shalee',
'search-result-size' => "$1 ({{PLURAL:$2|1 fockle|$2 'ockle|$2 'ockle|$2 focklyn}})",
'search-result-score' => 'Bentynys: $1%',
'search-redirect' => '(aa-enmyssit ass $1)',
@@ -533,7 +542,6 @@ Foddee oo [[:\$1|croo yn duillag shoh]].",
'mwsuggest-disable' => 'Lhiettal coyrle AJAX',
'searchrelated' => 'bentyn rish',
'searchall' => 'yn clane',
-'showingresultstotal' => "Ny ta heese, shen {{PLURAL:$4|eiyrtys '''$1''' jeh '''$3'''|eiyrtyssyn '''$1 - $2''' jeh '''$3'''}}",
'nonefound' => "'''Notey''':Cha nel eh ronsaghey dagh reamys gyn reih.
My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney, clowanyn, a.r.e.), cur ''all:'' ec y toshiaght, ny ennym y reamys reih ayd myr roie-ockle (m.s., ''Clowan:'').",
'powersearch' => 'Ard-ronsaghey',
@@ -543,23 +551,23 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
'powersearch-field' => 'Ronsaghey er son',
'search-external' => 'Ronsaghey mooie',
+# Quickbar
+'qbsettings-none' => 'Veg',
+
# Preferences page
'preferences' => 'Tosheeaghtyn',
'mypreferences' => 'My hosheeaghtyn',
'prefsnologin' => 'Cha nel oo loggit stiagh',
-'qbsettings-none' => 'Veg',
'changepassword' => 'Fockle yn arrey y cheaghley',
-'skin' => 'Crackan',
+'prefs-skin' => 'Crackan',
'skin-preview' => 'Roie-haishbynys',
-'dateformat' => 'Kiaddey yn date',
-'datetime' => 'Date as am',
-'math_syntax_error' => 'Co-ordrail marranagh',
+'prefs-datetime' => 'Date as am',
'prefs-personal' => 'Gruaie yn ymmydeyr',
'prefs-rc' => "Caghlaaghyn s'noa",
'prefs-watchlist' => 'Rolley arrey',
'prefs-watchlist-days' => 'Laaghyn y haishbyney ayns rolley arrey:',
'saveprefs' => 'Sauail',
-'textboxsize' => 'Reaghey',
+'prefs-editing' => 'Reaghey',
'columns' => 'Collooyn:',
'searchresultshead' => 'Ronsaghey',
'recentchangesdays' => "Laaghyn y haishbyney ayns caghlaaghyn s'noa:",
@@ -578,10 +586,23 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
'timezoneregion-indian' => 'Y Keayn Injinagh',
'timezoneregion-pacific' => 'Y Keayn Sheealtagh',
'default' => 'loght',
-'files' => 'Coadanyn',
+'prefs-files' => 'Coadanyn',
+'youremail' => 'Post-L:',
+'username' => "Dt'ennym ymmydeyr:",
+'uid' => 'Enney ymmydeyr:',
+'yourrealname' => 'Feer-ennym:',
+'yourlanguage' => 'Çhengey:',
+'yournick' => 'Far-ennym:',
+'yourgender' => 'Keintys:',
+'gender-unknown' => 'Neuhoilshit',
+'gender-male' => 'Firrinagh',
+'gender-female' => 'Bwoirrinagh',
+'email' => 'Post-L',
+'prefs-help-realname' => "Ta dt'eer ennym reihyssagh.<br />
+My bailliu eh y chiarail, bee eh ymmydit son cur gys lieh y chur dhyt er son yn obbyr ayd.",
# User rights
-'userrights' => 'Reireydys kiartyn ymmydeyr', # Not used as normal message but as header for the special page itself
+'userrights' => 'Reireydys kiartyn ymmydeyr',
'userrights-lookup-user' => 'Possanyn ymmydeyr y stiurey',
'userrights-user-editname' => 'Screeu stiagh ennym ymmydeyr:',
'editusergroup' => 'Possanyn ymmydeyr y reaghey',
@@ -644,6 +665,8 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
# Recent changes linked
'recentchangeslinked' => 'Caghlaaghyn-vooinjerys',
+'recentchangeslinked-feed' => 'Caghlaaghyn-vooinjerys',
+'recentchangeslinked-toolbox' => 'Caghlaaghyn-vooinjerys',
'recentchangeslinked-title' => 'Caghlaaghyn bentyn rish "$1"',
'recentchangeslinked-noresult' => 'Cha nel caghlaa erbee er duillagyn kianglt car y traa taishbynit.',
'recentchangeslinked-summary' => "Shoh rolley caghlaaghyn va jeant er duillagyn kianglt veih duillag sonrit (ny er olteynyn ronney sonrit).<br />
@@ -654,7 +677,6 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
# Upload
'upload' => 'Laadey neese coadan',
'uploadbtn' => 'Laadey neese coadan',
-'reupload' => 'Aalaadey neese',
'uploadnologin' => 'Cha nel oo loggit stiagh',
'uploadlogpage' => 'Lioar laadyn neese',
'filename' => 'Ennym y choadan',
@@ -664,7 +686,6 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'filesource' => 'Bun:',
'uploadedfiles' => 'Coadanyn ta laadit neese',
'badfilename' => 'T\'ennym y choadan aa-enmyssit myr "$1".',
-'fileexists-thumb' => "<center>'''Coadan roie'''</center>",
'savefile' => 'Sauail y coadan',
'uploadedimage' => '"[[$1]]" laadit neese',
'uploadvirus' => "Ta veerys 'sy choadan! Mynphoyntyn: $1",
@@ -673,6 +694,7 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'upload-file-error' => 'Marranys ynveanagh',
'license' => 'Kieddagh:',
+'license-header' => 'Kieddagh:',
'license-nopreview' => '(Cha nel roie-haishbynys ry-gheddyn)',
'upload_source_file' => ' (coadan er dty cho-earrooder)',
@@ -686,6 +708,7 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'listfiles_description' => 'Coontey',
# File description page
+'file-anchor-link' => 'Coadan',
'filehist' => 'Shennaghys y choadan',
'filehist-help' => 'Crig er date/traa ennagh son dy ‘akin y coadan myr v’eh ec y traa shen.',
'filehist-deleteall' => 'scryss ooilley',
@@ -694,6 +717,7 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'filehist-current' => 'bio',
'filehist-datetime' => 'Date/Am',
'filehist-thumb' => 'Ingin-ordaag',
+'filehist-thumbtext' => "Ingin-ordaag da'n lhieggan shoh ec $1",
'filehist-user' => 'Ymmydeyr',
'filehist-dimensions' => 'Mooadyssyn',
'filehist-filesize' => 'Mooadys y choadan',
@@ -701,10 +725,7 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'imagelinks' => 'Kianglaghyn y choadan',
'linkstoimage' => 'Ta {{PLURAL:$1|ny $1 duillag|yn $1 duillag|ny $1 ghuillag|ny $1 duillagyn}} eiyrtyssagh kianglt lesh y coadan shoh:',
'nolinkstoimage' => 'Cha nel duillag erbee kianglt lesh y coadan shoh.',
-'sharedupload' => "Ta'n coadan shoh çheet ass $1, as foddee dy beagh eh ymmydit ayns shaleeyn elley.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'duillag huarastyl y choadan',
-'noimage' => 'Cha nel coadan erbee ayn as yn ennym shoh er, agh foddee oo $1',
-'noimage-linktext' => 'laad neese eh',
+'sharedupload' => "Ta'n coadan shoh çheet ass $1, as foddee dy beagh eh ymmydit ayns shaleeyn elley.",
'uploadnewversion-linktext' => "Laad neese lhieggan noa jeh'n choadan shoh",
# File reversion
@@ -752,8 +773,8 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'doubleredirects' => 'Aa-enmyssyn dooblagh',
'brokenredirects' => 'Aa-enmyssyn brisht',
-'brokenredirects-edit' => '(reaghey)',
-'brokenredirects-delete' => '(scryss)',
+'brokenredirects-edit' => 'reaghey',
+'brokenredirects-delete' => 'scryss',
'withoutinterwiki' => 'Duillagyn gyn kianglaghyn eddyrwiki',
'withoutinterwiki-legend' => 'Roie-ockle',
@@ -888,10 +909,10 @@ Bee caghlaaghyn jeant er y duillag shoh as e ghuillag resoonaght ry-akin ayns y
'changed' => 'ceaghlit',
'created' => 'crooit',
'enotif_anon_editor' => 'ymmydeyr $1 neuenmyssit',
-'enotif_body' => 'Y charrey,
+'enotif_body' => '$WATCHINGUSERNAME veen,
-Va\'n duilag $PAGETITLE er {{SITENAME}} $CHANGEDORCREATED er $PAGEEDITDATE liorish $PAGEEDITOR, jeeagh er $PAGETITLE_URL dys y lhieggan roie dy akin.
+Va\'n duillag $PAGETITLE er {{SITENAME}} $CHANGEDORCREATED er $PAGEEDITDATE liorish $PAGEEDITOR, jeeagh er $PAGETITLE_URL son y lhieggan roie dy akin.
$NEWPAGE
@@ -901,14 +922,14 @@ Cur fys er y reagheyder:
post: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Cha bee fograghyn elley ayns cah caghlaaghyn elley agh ynrican my vel shiu er jeet dys y duillag shen.
+Cha bee fograghyn elley er caghlaaghyn elley agh my vel shiu er jeet dys y duillag shen ynrican.
Foddee shiu aajeshaghey bratteeyn ny fograghyn ry hoi dagh duillag er dty rolley arrey.
Dty chorys fograghyn caarjoil ec {{SITENAME}}
--
Dys kiartee dty rolley arrey y chaghlaa, cur keayrt er
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Aaveaghey as cooney s\'odjey:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -939,7 +960,7 @@ Jeeagh er $2 son recortys ny scryssaghyn magh jeianagh.',
# Rollback
'rollback_short' => 'Aahogherys',
'rollbacklink' => 'aahogherys',
-'editcomment' => "V'eh \"''\$1''\" giare-choontys y reaghey.", # only shown if there is an edit comment
+'editcomment' => "V'eh \"''\$1''\" giare-choontys y reaghey.",
# Protect
'protectlogpage' => 'Lioar choadee',
@@ -962,7 +983,7 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
'protect-expiring' => 'jerrey jeant ec $1 (UTC)',
'protect-cascade' => "Cur fo ghlass ny duillagyn t'ayns y duillag shoh (coadee spooytal)",
'protect-cantedit' => 'Cha nod oo caghlaa keim choadey ny duillag shoh. Cha nel kied ayd ee y reaghey.',
-'protect-expiry-options' => '1 oor:1 hour,1 laa:1 day,1 hiaghtin:1 week,2 hiaghtin:2 weeks,1 vee:1 month,3 meeghyn:3 months,6 meeghyn:6 months,1 vlein:1 year,neuyerrinagh:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 oor:1 hour,1 laa:1 day,1 hiaghtin:1 week,2 hiaghtin:2 weeks,1 vee:1 month,3 meeghyn:3 months,6 meeghyn:6 months,1 vlein:1 year,neuyerrinagh:infinite',
'restriction-type' => 'Kied:',
'restriction-level' => 'Rea teorey:',
@@ -1004,6 +1025,8 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
'sp-contributions-newbies' => 'Taishbyney cohortyssyn liorish coontyssyn noa ynrican',
'sp-contributions-newbies-sub' => 'Lesh coontyssyn noa',
'sp-contributions-blocklog' => 'Lioar chooishyn ghlassaghyn magh',
+'sp-contributions-talk' => 'resoonaght',
+'sp-contributions-userrights' => 'Reireydys kiartyn ymmydeyr',
'sp-contributions-search' => 'Ronsaghey cohortyssyn',
'sp-contributions-username' => 'Enmys IP ny ennym ymmydeyr:',
'sp-contributions-submit' => 'Ronsaghey',
@@ -1047,7 +1070,7 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
'ipbcreateaccount' => 'Crooaght coontys y chumrail',
'ipbsubmit' => 'Glass magh yn ymmydeyr shoh',
'ipbother' => 'Mooad elley am:',
-'ipboptions' => '2 oor:2 hours,1 laa:1 day,3 laaghyn:3 days,1 hiaghtin:1 week,2 hiaghtin:2 weeks,1 vee:1 month,3 meeghyn:3 months,6 meeghyn:6 months,1 vlein:1 year,neuyerrinagh:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oor:2 hours,1 laa:1 day,3 laaghyn:3 days,1 hiaghtin:1 week,2 hiaghtin:2 weeks,1 vee:1 month,3 meeghyn:3 months,6 meeghyn:6 months,1 vlein:1 year,neuyerrinagh:infinite',
'ipbotheroption' => 'elley',
'ipbotherreason' => 'Fa elley/tooilley:',
'badipaddress' => 'Enmys IP gyn vree',
@@ -1092,7 +1115,7 @@ Foddee oo y duillag resooney y scughey er lheh ny yei shen.",
'move-watch' => 'Freill arrey er y duillag shoh',
'movepagebtn' => 'Yn duillag y scughey',
'pagemovedsub' => "Va'n scughey rahoil",
-'movepage-moved' => 'Va \'\'\'"$1" aa-enmyssit myr "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Va \'\'\'"$1" aa-enmyssit myr "$2"\'\'\'',
'articleexists' => 'Ta duillag ayn lesh yn ennym shen, ny ta ennym mee-chiart reiht ayd.<br />
Reih ennym elley, my sailliu.',
'talkexists' => "'''Va'n duillag hene scughit, agh cha nod y duillag resoonaght y scughey er yn oyr dy row fer ec yn enmys shen hannah.<br />
@@ -1154,6 +1177,7 @@ Jean covestey eddyr oc er laueyn, my sailliu.'''",
'tooltip-search-fulltext' => 'Ronsaghey ny duillagyn er son y teks shoh',
'tooltip-p-logo' => 'Ard-ghuillag',
'tooltip-n-mainpage' => 'Cur keayrt er yn Ard-ghuillag',
+'tooltip-n-mainpage-description' => 'Cur keayrt er yn ard-ghuillag',
'tooltip-n-portal' => "Mychione y çhalee, jean dty chooid share, c'raad reddyn dy feddyn",
'tooltip-n-currentevents' => 'Fow oayllys shaghadys fo chooishyn yn laa',
'tooltip-n-recentchanges' => "Rolley caghlaaghyn s'noa ayns y wiki.",
@@ -1200,6 +1224,9 @@ T'eh lhiggey da oyr y chur 'sy ghiare-choontey.",
# Math options
'mw_math_png' => 'Jean PNG dagh ooilley hraa',
+# Math errors
+'math_syntax_error' => 'Co-ordrail marranagh',
+
# Patrol log
'patrol-log-auto' => '(seyr-obbragh)',
'patrol-log-diff' => 'caghlaa $1',
@@ -1243,7 +1270,7 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Lheead',
@@ -1291,7 +1318,7 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
'exif-sharpness-1' => 'Bog',
'exif-sharpness-2' => 'Creoi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => "Kilometeryn 'syn oor",
'exif-gpsspeed-m' => "Meeillaghyn 'syn oor",
@@ -1339,10 +1366,10 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
'watchlisttools-raw' => 'Reaghey aw-rolley arrey',
# Special:Version
-'version' => 'Lhieggan', # Not used as normal message but as header for the special page itself
+'version' => 'Lhieggan',
'version-specialpages' => 'Duillagyn er lheh',
'version-other' => 'Elley',
-'version-version' => 'Lhieggan',
+'version-version' => '(Lhieggan $1)',
'version-license' => 'Kiedoonys',
'version-software-version' => 'Lhieggan',
diff --git a/languages/messages/MessagesHa.php b/languages/messages/MessagesHa.php
new file mode 100644
index 00000000..b443d383
--- /dev/null
+++ b/languages/messages/MessagesHa.php
@@ -0,0 +1,721 @@
+<?php
+/** Hausa (هَوُسَ)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Mladanali
+ */
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'A shaya zaruruwa',
+'tog-highlightbroken' => 'A haskaka katsattsin zaruruwa <a href="" class="new">kamar haka</a> (koko: kamar haka<a href="" class="internal">?</a>)',
+'tog-justify' => 'A daidaita sakin layuka',
+'tog-hideminor' => 'A ɓoye ƙananan gyare-gyare na baya-bayan nan',
+'tog-hidepatrolled' => 'A ɓoye gyare-gyaren kan ido a cikin gyare-gyare bayan-bayan nan',
+'tog-newpageshidepatrolled' => 'A ɓoye shafuna kan ido a cikin sabbin shafuna',
+'tog-extendwatchlist' => 'A faɗaɗa jerin kan ido ya nuna duka gyare-gyare, ba na baya-bayan nan kawai ba',
+'tog-usenewrc' => 'A yi amfani da kyautattun gyare-gyare na baya-bayan nan (ana buƙatar Javascript)',
+'tog-numberheadings' => 'A lambace kanun matani kai tsaye',
+'tog-showtoolbar' => 'A nuna sandar kayan aiki ta gyarawa (ana buƙatar JavaScript)',
+'tog-editondblclick' => 'A gyara shafuna da dabar-kiliki (ana buƙatar JavaScript)',
+'tog-editsection' => 'A lamunta gyara sashe ta hanyar zaruruwan [gyarawa]',
+'tog-editsectiononrightclick' => 'A lamunta gyara shashe da kilikin dama a kan kanun shashe (ana buƙatar JavaScript)',
+'tog-showtoc' => 'A nuna jadawalin kanu (cikin shafuna masu fiye da kanu 3)',
+'tog-rememberpassword' => 'A adana bayanan loginkina a wannan kwamfyuta',
+'tog-editwidth' => 'A faɗaɗa sararin gyarawa ya cika duka bangon',
+'tog-watchcreations' => 'A daɗa shafunan da na ƙirƙira a cikin jerina na kan ido',
+'tog-watchdefault' => 'A daɗa shafunan da na gyara a cikin jerina na kan ido',
+'tog-watchmoves' => 'A daɗa shafunan da na gusar a cikin jerina na kan ido',
+'tog-watchdeletion' => 'A daɗa shafunan da na shafe a cikin jerina na kan ido',
+'tog-minordefault' => 'A alamta gyare-gyarena a matsayin ƙanana bisa manufa',
+'tog-previewontop' => 'A nuna filin rigya-gani sama ga filin gyare-gyare',
+'tog-previewonfirst' => 'A nuna rigya-gani tun gyaran farin',
+'tog-nocache' => 'A tsayar da kacin shafi',
+'tog-enotifwatchlistpages' => 'A shaida mani ta Imel idan wani shafin jeerina na bin-sau ya sauya',
+'tog-enotifusertalkpages' => 'A shaida mani ta Imel idan shafina na muhawara ya sauya',
+'tog-enotifminoredits' => 'A shaida mani ta Imel game da ko da ƙaramin gyara ne',
+'tog-enotifrevealaddr' => "A bayyana Imel kina a cikin sak'wanni na shaidarwa",
+'tog-shownumberswatching' => "A nuna adadin ma'aikata masu bin sawun wannan shafi",
+'tog-oldsig' => 'Rigya-ganin sa-hannu da ake da shi',
+'tog-fancysig' => 'A ɗauki matanin sa-hannu a matsayin matanin Wiki (ba tare da mahaɗin otomatik ba)',
+'tog-externaleditor' => 'Bisa manufa, a yi amfani da editan matani daban (zuwa ga ƙwararri: kuna buƙatar sauya saitin kwamfyutarku)',
+'tog-externaldiff' => 'Bisa manufa, a yi amfani da kwatantau daban (zuwa ga ƙwararri: kuna buƙatar sauya saitin kwamfyutarku)',
+'tog-showjumplinks' => 'A lamunta mahaɗan "a tsallaka zuwa"',
+'tog-uselivepreview' => 'A yi amfani da rigya-gani mai sauƙi (ana buƙatar JavaScript) (hajar gwaji)',
+'tog-forceeditsummary' => 'A gargaɗe ni idan na ajiye kangon fili na taƙaitawa',
+'tog-watchlisthideown' => 'A ɓoye sauye-sauyena daga jerin bin sawu',
+'tog-watchlisthidebots' => 'A ɓoye sauye-sauye da rabuwatoci suka daga jerin bin sawu',
+'tog-watchlisthideminor' => 'A ɓoye ƙananen sauye-sauye daga jerin bin sau',
+'tog-watchlisthideliu' => "A ɓoye sauye-sauyen da logaggin ma'aikata suka yi daga jerin bin sau",
+'tog-watchlisthideanons' => "A ɓoye sauye-sauyen da ma'aikata maras suna suka yi daga jerin bin sau",
+'tog-watchlisthidepatrolled' => 'A ɓoye sauye-sauye da ke kan lura daga jerin bin sau',
+'tog-ccmeonemails' => "A aika mini kwafi na duk imel da nike aikawa wasu ma'aikata",
+'tog-diffonly' => 'Kada a nuna tsarabar shafuna a ƙarƙashin sakamakon kwatance',
+'tog-showhiddencats' => 'A nuna rukunonin ɓoye',
+'tog-norollbackdiff' => 'Kada a nuna sauyi da aka yi idan aka banye shi',
+
+'underline-always' => 'Kullum',
+'underline-never' => 'Ko kaɗan',
+'underline-default' => 'Manufar buroza',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Salon fanti na filin gyara',
+'editfont-default' => 'Manufar buroza',
+'editfont-monospace' => 'Fanti mai tsayayyen faɗi',
+'editfont-sansserif' => 'Fanti maras sarif',
+'editfont-serif' => 'Fanti mai sarif',
+
+# Dates
+'sunday' => 'Lahadi',
+'monday' => 'Litinin',
+'tuesday' => 'Talata',
+'wednesday' => 'Laraba',
+'thursday' => 'Alhamis',
+'friday' => "Jumma'a",
+'saturday' => 'Asabar',
+'sun' => 'Lah',
+'mon' => 'Lit',
+'tue' => 'Tal',
+'wed' => 'Lar',
+'thu' => 'Alh',
+'fri' => 'Jum',
+'sat' => 'Asa',
+'january' => 'Janairu',
+'february' => 'Faburairu',
+'march' => 'Maris',
+'april' => 'Afirilu',
+'may_long' => 'Mayu',
+'june' => 'Yuni',
+'july' => 'Yuli',
+'august' => 'Agusta',
+'september' => 'Satumba',
+'october' => 'Oktoba',
+'november' => 'Nuwamba',
+'december' => 'Disamba',
+'january-gen' => 'Janairu',
+'february-gen' => 'Faburairu',
+'march-gen' => 'Maris',
+'april-gen' => 'Afirilu',
+'may-gen' => 'Mayu',
+'june-gen' => 'Yuni',
+'july-gen' => 'Yuli',
+'august-gen' => 'Agusta',
+'september-gen' => 'Satumba',
+'october-gen' => 'Oktoba',
+'november-gen' => 'Nuwamba',
+'december-gen' => 'Disamba',
+'jan' => 'Jan',
+'feb' => 'Fab',
+'mar' => 'Mar',
+'apr' => 'Afi',
+'may' => 'May',
+'jun' => 'Yun',
+'jul' => 'Yul',
+'aug' => 'Agu',
+'sep' => 'Sat',
+'oct' => 'Okt',
+'nov' => 'Nuw',
+'dec' => 'Dic',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Rukuni|Rukunoni}}',
+'category_header' => 'Shafuna na cikin rukunin "$1"',
+'subcategories' => 'Ƙananan rukunoni',
+'hidden-categories' => '{{PLURAL:$1|Ɓoyayyen rukuni|Ɓoyayyun rukunoni}}',
+'category-subcat-count' => '{{PLURAL:$2|Wannan rukuni ya ƙumshi wannan ƙaramin rukuni kawai.|Wannan rukuni ya ƙumshi {{PLURAL:$1|wannan ƙaramin rukuni|$1 wanɗannan ƙananan rukunoni}}, daga cikin jimlar $2.}}',
+'category-article-count' => '{{PLURAL:$2|Wannan rukuni ya ƙumshi wannan shafi kawai.|{{PLURAL:$1|shafi na gaba yana|$1 shafuna na gaba suna}} cikin wannan rukuni, daga cikin jimlar $2.}}',
+'listingcontinuesabbrev' => 'ci-gaba',
+
+'newwindow' => '(buɗa cikin sabuwar taga)',
+'cancel' => 'Soke',
+'mytalk' => 'Mahawarata',
+'navigation' => 'Shawagi',
+
+# Cologne Blue skin
+'qbfind' => 'Nemo',
+
+'errorpagetitle' => 'Tangarɗa',
+'returnto' => 'Koma $1',
+'tagline' => 'Daga {{SITENAME}}',
+'help' => 'Taimako',
+'search' => 'Nema',
+'searchbutton' => 'Binciko',
+'searcharticle' => 'Mu je',
+'history' => 'Tarihin shafi',
+'history_short' => 'Tarihi',
+'printableversion' => 'Sufar bugawa',
+'permalink' => 'Dawwamammen mahaɗi',
+'edit' => 'Gyarawa',
+'create' => 'Ƙirƙira',
+'editthispage' => 'Gyara wanna shafi',
+'delete' => 'Soke',
+'protect' => 'A kare',
+'protect_change' => 'sauyawa',
+'newpage' => 'Sabon shafi',
+'talkpage' => 'Muhawara kan wannan shafi',
+'talkpagelinktext' => 'Hira',
+'personaltools' => 'Zaɓaɓɓin kayan aiki',
+'talk' => 'Mahawara',
+'views' => 'Hange',
+'toolbox' => 'Akwatin kayan aiki',
+'otherlanguages' => 'A wasu harsuna',
+'redirectedfrom' => '(an turo daga $1)',
+'redirectpagesub' => 'Shafin turawa',
+'lastmodifiedat' => 'Gyaran baya na wannan shafi ran $1, a $2.',
+'jumpto' => 'A tsallaka zuwa:',
+'jumptonavigation' => 'Shawagi',
+'jumptosearch' => 'Nema',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Game da {{SITENAME}}',
+'aboutpage' => 'Project:Game da',
+'copyright' => 'Bayannai sun samu a ƙarƙashin $1.',
+'copyrightpage' => '{{ns:project}}:Hakkin Mallaka',
+'disclaimers' => 'Hattara',
+'disclaimerpage' => 'Project:Babban gargaɗi',
+'edithelp' => 'Taimako kan gyara',
+'edithelppage' => 'Help:Gyarawa',
+'helppage' => 'Help:Tsaraba',
+'mainpage' => 'Marhabin',
+'privacy' => 'Manufar kare sirri',
+'privacypage' => 'Project:Manufar kare sirri',
+
+'badaccess' => 'Tangarɗar lamuncewa',
+
+'retrievedfrom' => 'Daga "$1"',
+'youhavenewmessages' => 'Kuna da $1 ($2).',
+'newmessageslink' => 'sabbin saƙonni',
+'newmessagesdifflink' => 'sauyin ƙarshe',
+'editsection' => 'gyarawa',
+'editold' => 'gyarawa',
+'editlink' => 'gyarawa',
+'viewsourcelink' => 'duba tushe',
+'editsectionhint' => 'Gyara sashe: $1',
+'toc' => 'Kanun bayannai',
+'showtoc' => 'nuna',
+'hidetoc' => 'ɓoye',
+'site-rss-feed' => 'Kwararen RSS na $1',
+'site-atom-feed' => 'Kwararen Atom na $1',
+'page-rss-feed' => 'Kwararen RSS na "$1"',
+'page-atom-feed' => 'Kwararen Atom na "$1"',
+'red-link-title' => '$1 (babu wannan shafi)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Shafi',
+'nstab-user' => "Shafin ma'aikaci",
+'nstab-special' => 'Shafi na musamman',
+'nstab-project' => 'Shafin shiri',
+'nstab-image' => 'Fayil',
+'nstab-template' => 'Mulu',
+'nstab-category' => 'Rukuni',
+
+# General errors
+'missing-article' => 'Taskar bayannai ba ta samo matanin wani shafin da ya kamata ta samo ba, mai suna "$1" $2.
+
+Mafarin haka yawanci shi ne mahaɗi mai zuwa ga shafin da aka soke ko aka gusar.
+
+In ba haka ba ne, to kun takalo wata tangarɗa a safuwai kin.
+Don Allah a aika ruhoto zuwa ga [[Special:ListUsers/sysop|administrator]], tare da nuna URL kin.',
+'missingarticle-rev' => '(lambar zubi: $1)',
+'badtitletext' => "Kan shafin da aka nema bai da ma'ana, ko kango ne, ko kuma wani kai ne na tsakanin harsuna ko shire-shire da bai da mahaɗi mai kyau.
+Tana yiyuwa yana da harafi ko haruffa da ba su karɓuwa cikin kanu.",
+'viewsource' => 'Duba tushe',
+
+# Login and logout pages
+'yourname' => "Sunan ma'aikaci:",
+'yourpassword' => 'Kalmar sirri:',
+'remembermypassword' => 'Adana bayannan logina a wannan kwafyuta',
+'login' => 'Logi',
+'nav-login-createaccount' => 'logi / sabon akwanti',
+'userlogin' => 'Logi / sabon akwanti',
+'logout' => 'Ban kwana',
+'userlogout' => 'Ban kwana',
+'nologinlink' => 'Buɗa sabon akwanti',
+'mailmypassword' => 'Aiken kalmar sirri ta Imel',
+
+# Edit page toolbar
+'bold_sample' => 'Rubutu mai gwaɓi',
+'bold_tip' => 'Rubutu mai gwaɓi',
+'italic_sample' => 'Rubutun tsutsa',
+'italic_tip' => 'Rubutun tsutsa',
+'link_sample' => 'Sunan mahaɗi',
+'link_tip' => 'Mahaɗin ciki',
+'extlink_sample' => 'http://www.example.com sunan mahaɗi',
+'extlink_tip' => 'Mahaɗi mai zuwa waje (a tuna da zagin http://)',
+'headline_sample' => 'Sunan kai',
+'headline_tip' => 'Kan mataki na 2',
+'math_sample' => 'Shigar da haɗi a nan',
+'math_tip' => 'Haɗin lissafi (LaTeX)',
+'nowiki_sample' => 'shigar da ɗanyen rubutu a nan',
+'nowiki_tip' => 'Kawar da sufantawar Wiki',
+'image_tip' => 'Ƙumsashen fayil',
+'media_tip' => 'Mahaɗi zuwa fayil',
+'sig_tip' => 'Sa-hannunku da dagin rana',
+'hr_tip' => 'Layin kwance',
+
+# Edit pages
+'summary' => 'Taƙaici',
+'subject' => 'Jigo/Kai:',
+'minoredit' => 'Ƙaramin gyara',
+'watchthis' => 'Bi sawun wannan shafi',
+'savearticle' => 'Adana shafi',
+'preview' => 'Rigya-gani',
+'showpreview' => 'Sufar rigya-gani',
+'showdiff' => 'Nuna sauye-sauye',
+'anoneditwarning' => "'''Hattara:''' Ba ku yi logi ba.
+Za a rubuta adireshinku na IP a cikin tarihin sauye-sauyen wannan shafi.",
+'summary-preview' => 'Rigya-gani na taƙaici:',
+'newarticle' => '(Sabo)',
+'newarticletext' => "Kun latsa mahaɗi zuwa shafin da babu shi tukuna.
+Domin ƙirƙiro wannan shafin, ku fara rubutu a cikin fage na ƙasa (duba [[{{MediaWiki:Helppage}}|shafin taimako]] don ƙarin bayani).
+Idan kun ɓata ne cikin shawaginku, to ku latsa maɓallin '''baya''' na safuwayan shawaginku.",
+'noarticletext' => 'A halin yanzu babu matani a kan wannan shafi.
+Kuna iya [[Special:Search/{{PAGENAME}}|nemo kan wannan shafi]] cikin wasu shafuna,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bincika rajistan ayyukan],
+ko [{{fullurl:{{FULLPAGENAME}}|action=edit}} gyara wannan shafi]</span>.',
+'previewnote' => "'''Kada ku manta, wannan rigya-gani ne kawai.'''
+Ba a adana sauye-sauyenku ba tukuna!",
+'editing' => 'Gyaran $1',
+'editingsection' => 'Gyaran $1 (sashe)',
+'copyrightwarning' => "Lura cewa ana wallafa duk gudummuwa ga {{SITENAME}} a kan ƙa'idojin \$2 (duba \$1 don ƙarin bayani). Idan ba kwa son a sauya ko a rarraba ayyukanku yadda aka ga dama, to kada ku ajiye su a nan.<br />
+Kuma kuna mana alƙawarin cewa ku ne kuka rubuta aikin, ko kun juyo shi daga hajar kowa (wato \"public domain\"), ko kuma aikin hajar kyauta (wato \"free resource\") ne. '''Kada ku ajiye ayyuka masu hakkin mallaka ba tare da izini ba!'''",
+'templatesused' => '{{PLURAL:$1|Mulun da aka yi amfani da shi|Mulayen da aka yi amfani da su}} a wannan shafi:',
+'templatesusedpreview' => '{{PLURAL:$1|Mulun da aka yi amfani da shi|Mulayen da aka yi amfani da su}} cikin wannan rigya-gani:',
+'template-protected' => '(mai kariya)',
+'template-semiprotected' => '(da kariya gwalgwado)',
+'hiddencategories' => 'Wannan shafi yana cikin {{PLURAL:$1|ɓoyayyen rukuni 1|ɓoyayyun rukunoni $1}}:',
+'permissionserrorstext-withaction' => 'Ba kwa da izinin $2, don saboda {{PLURAL:$1|wannan dalili|waɗannan dalillai}}:',
+
+# History pages
+'viewpagelogs' => 'Duba rajistan ayyukan wannan shafi',
+'currentrev-asof' => 'Zubin ƙarshe ga $1',
+'revisionasof' => 'Zubi na $1',
+'previousrevision' => '← Tsohon zubi',
+'nextrevision' => 'Zubi na gaba →',
+'currentrevisionlink' => 'Zubi na yanzu',
+'cur' => 'na yanzu',
+'last' => 'baya',
+'histlegend' => "Don nuna bambanci: a shaida zube-zuben da ake so a kwatanta sannan a latsa maɓallin da ke ƙasa.<br />
+Fasali: '''({{int:cur}})''' = bambanci da zubi na yanzu, '''({{int:last}})''' = bambanci da zubi na baya, '''{{int:minoreditletter}}''' = ƙaramin gyara.",
+'history-fieldset-title' => 'Shawagi cikin tarihi',
+'histfirst' => 'Na gaba',
+'histlast' => 'Na baya',
+
+# Revision deletion
+'rev-delundel' => 'nuna/ɓoye',
+'revdel-restore' => 'sauya haske',
+
+# Merge log
+'revertmerge' => 'Ware',
+
+# Diffs
+'history-title' => 'Tarihin sauye-sauyen "$1"',
+'difference' => '(Bambanci tsakanin zubi da zubi)',
+'lineno' => 'Layi $1:',
+'compareselectedversions' => 'Kwatanta zaɓaɓɓun zubi',
+'editundo' => 'Janyewa',
+
+# Search results
+'searchresults' => 'Sakamakon bincike',
+'searchresults-title' => 'Sakamakon bincike na "$1"',
+'searchresulttext' => 'Don ƙarin bayani kan binciken {{SITENAME}}, duba [[{{MediaWiki:Helppage}}|{{int:help}}]]',
+'searchsubtitle' => 'Kun nemi \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|duka shafuna masu farawa da "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|duka shafuna masu mahaɗi zuwa "$1"]])',
+'searchsubtitleinvalid' => "Kun nemi '''$1'''",
+'notitlematches' => 'Babu kan shafin da ya dace',
+'notextmatches' => 'Babu wani matanin da ya dace',
+'prevn' => 'baya {{PLURAL:$1|$1}}',
+'nextn' => 'gaba {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Duba ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 kalma|$2 kalmomi}})',
+'search-redirect' => '(turawa daga $1)',
+'search-section' => '(sashe $1)',
+'search-suggest' => 'Kuna nufin: $1',
+'search-interwiki-caption' => 'Shire-shire masu dangantaka',
+'search-interwiki-default' => 'Sakamakon $1:',
+'search-interwiki-more' => '(ƙari)',
+'search-mwsuggest-enabled' => 'Tare da shawarwari',
+'search-mwsuggest-disabled' => 'Banda shawarwari',
+'nonefound' => "'''Hattara''': Galibi wasu sararen suna ƙalilan kawai ake nemowa.
+Ku gwada tare da amfani da \"all:\" don bincikar duka shafunan (har da shafunan muhawara, mulaye, d.s.), ko kuma ku yi amfani da sararin sunan da kuke so.",
+'powersearch' => 'Sahihin nema',
+'powersearch-legend' => 'Sahihin nema',
+'powersearch-ns' => 'Binciki sararen sunaye:',
+'powersearch-redir' => 'Nuna turawa gaba',
+'powersearch-field' => 'Neemo',
+
+# Preferences page
+'preferences' => 'Saituttuka',
+'mypreferences' => 'Saituttukana',
+
+# Groups
+'group-sysop' => 'Masu hukunci',
+
+'grouppage-sysop' => '{{ns:project}}:Masu hukunci',
+
+# User rights log
+'rightslog' => "Rajistan bayar da izini ga ma'aikata",
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'gyara wannan shafi',
+
+# Recent changes
+'nchanges' => '{{PLURAL:$1|sauyi|sauye-sauye}} $1',
+'recentchanges' => 'Sauye-sauyen baya-bayan nan',
+'recentchanges-legend' => 'Zaɓi na sauye-sauyen baya-bayan nan',
+'recentchanges-feed-description' => 'Bi sawun sauye-sauyen ƙarshe na wikin da ke cikin wannan kwarare',
+'rcnote' => "A nan ƙasa an nuna {{PLURAL:$1|sauyi '''1'''|sauye-sauyen ƙarshe '''$1'''}} a cikin {{PLURAL:$2|awowi 24 da suka shige|'''$2''' kwanaki}}, har zuwa $5, $4.",
+'rclistfrom' => 'Nuna sabbin sauye-sauye tun daga $1',
+'rcshowhideminor' => '$1 ƙananen sauye-sauye',
+'rcshowhidebots' => 'Rabuwat $1',
+'rcshowhideliu' => "$1 Ma'aikata logaggi",
+'rcshowhideanons' => "$1 ma'aikata masu ɓoyayye suna",
+'rcshowhidemine' => '$1 sauye-sauyena',
+'rclinks' => 'Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya<br />$3',
+'diff' => 'bamban',
+'hist' => 'Tarihi',
+'hide' => 'Ɓoye',
+'show' => 'Nuna',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Nuna ƙananan bayannai (ana buƙatar JavaScript)',
+'rc-enhanced-hide' => 'Ɓoye ƙananan bayannai',
+
+# Recent changes linked
+'recentchangeslinked' => 'Sauye-sauye masu dangantaka',
+'recentchangeslinked-title' => 'Bin sawun shafuna masu dangantaka da "$1"',
+'recentchangeslinked-summary' => "Wannan jerin sauye-sauye ne da aka yi kan shafuna masu mahaɗi. Shafunan da ke cikin [[Special:Watchlist|jerin kan idonku]] an haɓaka su da '''gwaɓi'''",
+'recentchangeslinked-page' => 'Sunan shafi:',
+'recentchangeslinked-to' => 'Nuna sauye-sauyen shafunan da ke da mahaɗi da wannan shafin',
+
+# Upload
+'upload' => 'Girke fayil',
+'uploadlogpage' => 'Rajistan girke fayiloli',
+'uploadedimage' => 'an girke "[[$1]]"',
+
+# File description page
+'filehist' => 'Tarihin fayil',
+'filehist-help' => 'ku Latsa rana/lokaci ku ga fayil yadda yake a wannan lokaci',
+'filehist-current' => 'na yanzu',
+'filehist-datetime' => 'Rana/Lokaci',
+'filehist-thumb' => 'Wadar sufa',
+'filehist-thumbtext' => 'Wadar sufa ta zubin $1',
+'filehist-user' => "Ma'aikaci",
+'filehist-dimensions' => 'Kusurwowi',
+'filehist-comment' => 'Bahasi',
+'imagelinks' => 'Amfani da fayil',
+'linkstoimage' => '{{PLURAL:$1|Wannan shafi yana|wanɗannan shafuna $1 suna}} amfani da wannan fayil:',
+'sharedupload' => 'Wannan fayil na da tushe daga $1 kuma wasu shire-shire suna iya amfani da shi.',
+'uploadnewversion-linktext' => 'Ɗauki sabon zubi na wannan fayil',
+
+# Statistics
+'statistics' => 'Alƙalumma',
+
+# Miscellaneous special pages
+'nbytes' => '{{PLURAL:$1|bayit|bayit}} $1',
+'nmembers' => '{{PLURAL:$1|mamba|mambobi}} $1',
+'prefixindex' => 'Duka shafuna masu ɗafa-goshi',
+'newpages' => 'Sabbin shafuna',
+'move' => 'Gusarwa',
+'movethispage' => 'Gusar da wannan shafi',
+'pager-newer-n' => '{{PLURAL:$1|sabo 1|sabbi $1}}',
+'pager-older-n' => '{{PLURAL:$1|tsoho 1|tsoffi $1}}',
+
+# Book sources
+'booksources' => 'Littattafai maƙiblata',
+'booksources-search-legend' => 'Nemo tushen littattafai',
+'booksources-go' => 'Mu je',
+
+# Special:Log
+'log' => 'Rajistoci ayyuka',
+
+# Special:AllPages
+'allpages' => 'Duka shafuna',
+'alphaindexline' => '$1 zuwa $2',
+'prevpage' => 'Shafi na baya ($1)',
+'allpagesfrom' => 'Nuna shafuna farawa daga:',
+'allpagesto' => 'Nuna shafuna har:',
+'allarticles' => 'Duka shafuna',
+'allpagessubmit' => 'Mu je',
+
+# Special:LinkSearch
+'linksearch' => 'Mahaɗan waje',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Rajistan sabbin akwantoci',
+'newuserlog-create-entry' => 'Sabon akwanti',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(jerin mambobi)',
+
+# E-mail user
+'emailuser' => "Aika wa wannan ma'aikaci imel",
+
+# Watchlist
+'watchlist' => 'Jerina na bin sawu',
+'mywatchlist' => 'Jerina na bin sawu',
+'watchlistfor' => "(na '''$1''')",
+'addedwatch' => 'An daɗa a cikin jerin bin sawu',
+'addedwatchtext' => "An daɗa shafin \"[[:\$1]]\" a cikin [[Special:Watchlist|jerinku na bin sawu]].
+A nan ne kuma za a yi rajistan dukkan sauye-sauye ga shafin ko shafinsa na muhawara, kuma sunan shafin zai kasance '''mai gwaɓi''' a cikin [[Special:RecentChanges|jerin sauye-sauyen baya-bayan nan]] don sauƙin gani.",
+'removedwatch' => 'An fitar daga cikin jerin bin sawu',
+'removedwatchtext' => 'An fitar da shafin "[[:$1]]" daga [[Special:Watchlist|jerinku na bin sawu]].',
+'watch' => 'Bin sawu',
+'watchthispage' => 'Bin sawun wannan shafi',
+'unwatch' => 'Daina bin sawu',
+'watchlist-details' => '{{PLURAL:$1|$1 shafi|$1 shafuna}} kan jerinku na bin sawu, banda shafunan mahawara.',
+'wlshowlast' => 'Nuna awowi $1 kwanaki $2 na ƙarshe $3',
+'watchlist-options' => 'Saituttukan jerin bin sawu',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Bin sawun...',
+'unwatching' => 'Daina bin sawu...',
+
+# Delete
+'deletepage' => 'Soke shafin',
+'confirmdeletetext' => "Kuna kan hanyar soke wani shafi tare da duk tarihinsa. Ku tabbatar lalle kuna son yin hakan, tare da cewa kun fahimci sakamakon yin haka, kuma kuna yi ne da la'akari da [[{{MediaWiki:Policy-url}}|manufofi]].",
+'actioncomplete' => 'Aiki cikakke',
+'deletedtext' => 'An soke "<nowiki>$1</nowiki>".
+Ku duba $2 ku ga rajistan soke-soke na baya-bayan nan.',
+'deletedarticle' => 'an soke "[[$1]]"',
+'dellogpage' => 'Rajistan sauye-sauye',
+'deletecomment' => 'Dalili:',
+'deleteotherreason' => 'Wani dalilin:',
+'deletereasonotherlist' => 'Wani dalili',
+
+# Rollback
+'rollbacklink' => 'banyewa',
+
+# Protect
+'protectlogpage' => 'Rajistan ayyukan kariya',
+'protectedarticle' => 'an kare "[[$1]]"',
+'modifiedarticleprotection' => 'an sauya matakin kariya na "[[$1]]"',
+'protectcomment' => 'Dalili:',
+'protectexpiry' => "Wa'adi:",
+'protect_expiry_invalid' => "Lokacin wa'adi bai da tasiri.",
+'protect_expiry_old' => "Lokacin wa'adi ya wuce.",
+'protect-text' => "Kuna iya duba tare da sauya matakin kariya na shafin '''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Akwantinku bai da izinin sauya matakan kariya na shafuna.
+Ga dai matakan kariya na yanzu na shafin '''$1''':",
+'protect-cascadeon' => 'A yanzu an kiyaye wannan shafi saboda yana cikin {{PLURAL:$1|wannan shafi mai|waɗannan shafuna masu}} kariya mai zuzzubowa.
+Kuna iya sake wa wannan shafi matakin kariya, amma hakan ba zai yi tasiri ga kariya mai zuzzubowa ba.',
+'protect-default' => "Lamunce wa duka ma'aikata",
+'protect-fallback' => 'Ana buƙatar izinin "$1"',
+'protect-level-autoconfirmed' => "Hana sabbin ma'aikata da ma'aikata maras akwanti",
+'protect-level-sysop' => 'Mahukunta kawai',
+'protect-summary-cascade' => 'zuzzubawa',
+'protect-expiring' => "Wa'adi ran $1 (UTC)",
+'protect-cascade' => 'A kiyaye shafunan da aka haɗa cikin wannan shafi (kariya mai zuzzubowa)',
+'protect-cantedit' => 'Ba ku iya sauya matakan kariya na wannan shafi, saboda ba ku da izinin yi masa gyara.',
+'restriction-type' => 'Izini:',
+'restriction-level' => 'Matakin kangewa:',
+
+# Undelete
+'undeletelink' => 'duba/maido da',
+'undeletedarticle' => 'an mayar da "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Sararin suna:',
+'invert' => 'Jirkita kamu',
+'blanknamespace' => '(Babba)',
+
+# Contributions
+'contributions' => "Gudummuwar ma'aikaci",
+'contributions-title' => "Jerin gudummuwar ma'aikaci $1",
+'mycontris' => 'Gudummawata',
+'contribsub2' => 'Na $1 ($2)',
+'uctop' => '(sama)',
+'month' => 'Tun daga wata (da gabansa):',
+'year' => 'Tun daga shekara (da gabanta):',
+
+'sp-contributions-newbies' => 'Nuna gudummuwar sabbin akwantoci kawai',
+'sp-contributions-blocklog' => 'rajistan hani',
+'sp-contributions-search' => 'Nemo gudummuwa',
+'sp-contributions-username' => "Adireshin IP ko sunan ma'aikaci:",
+'sp-contributions-submit' => 'Nemo',
+
+# What links here
+'whatlinkshere' => 'Mahaɗan wannan shafi',
+'whatlinkshere-title' => 'Shafuna masu mahaɗi da "$1"',
+'whatlinkshere-page' => 'Shafi:',
+'linkshere' => "Waɗannan shafuna sun haɗu da '''[[:$1]]''':",
+'isredirect' => 'shafin turawa',
+'istemplate' => 'gami',
+'isimage' => 'majigi shigagge',
+'whatlinkshere-prev' => '{{PLURAL:$1|na baya|na baya $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|na gaba|na gaba $1}}',
+'whatlinkshere-links' => '← mahaɗai',
+'whatlinkshere-hideredirs' => '$1 turawa',
+'whatlinkshere-hidetrans' => '$1 game-game',
+'whatlinkshere-hidelinks' => '$1 mahaɗai',
+'whatlinkshere-filters' => 'Matatai',
+
+# Block/unblock
+'blockip' => "Hana ma'aikaci",
+'ipboptions' => 'awa 2:2 hours,kwana 1:1 day,kwana 3:3 days,mako 1:1 week,mako 2:2 weeks,wata 1:1 month,wata 3:3 months,wata 6:6 months,shekara 1:1 year,illa masha allahu:infinite',
+'ipblocklist' => "Adireshin IP da ma'aikatan da aka hana",
+'blocklink' => 'Hanawa',
+'unblocklink' => 'karɓa',
+'change-blocklink' => 'Canza hanawa',
+'contribslink' => 'Gudummuwa',
+'blocklogpage' => 'Rajistan hani',
+'blocklogentry' => "an hana [[$1]] da wa'adin $2 $3",
+'unblocklogentry' => 'an lamunce wa $1',
+'block-log-flags-nocreate' => 'babu damar buɗa sabon akwanti',
+
+# Move page
+'movepagetext' => "Ku yi amfani da fom na ƙasa don sake sunan shafin, tare da mayar da duka tarihinsa ga sabon sunan.
+Tsohon sunan zai nuna sabon sunan.
+Kuna iya sabunta dukan mahaɗai da ke nuna tsohon sunan otomatikali.
+Idan ba ku yi haka ba, ku duba [[Special:DoubleRedirects|rikitattun mahaɗai]] ko [[Special:BrokenRedirects|katsattsun mahaɗai]].
+Ku ke da nauyin tabbatar dukan mahaɗai suna nuna inda ya kamata.
+
+Wannan shafi '''ba''' za a sake masa suna ba idan akwai wani shafi mai sabon sunan, sai fa idan shafin kwango ne ko yana da mahaɗi kuma bai da tarihin sauye-sauye.
+Haka yana nufin za ku iya mayar wa wani shafi tsohon sunansa idan kuka yi kwata, kuma ba za ku iya kwatse wani tsayayyan shafi ba.
+
+'''Hattara!'''
+Yin haka na iya zama wani gagarumin sauyi ga shafi mai farin jini;
+Don Allah ku tabbatar kun fahimci sakamakon yin hakan.",
+'movepagetalktext' => "Za a gusar da dangantaccen shafin muhawara otomatikali tare da '''sai fa idan''' kinta.
+*Akwai wani shafin muhawara wanda ba kango ba a ƙarƙashin sabon sunan, ko
+*Kun soke zaɓen ɗan ɗaki na ƙasa.
+
+A waɗannan halaye, dole ku gusar ko ku game shafin da hannu, idan kuna so.",
+'movearticle' => 'Gusar da shafin:',
+'newtitle' => 'Zuwa sabon kai:',
+'move-watch' => 'Bin sawun wannan shafi',
+'movepagebtn' => 'Gusar da shafin',
+'pagemovedsub' => 'Gusarwa ta cika',
+'movepage-moved' => '\'\'\'"$1" an gusar da shi zuwa "$2"\'\'\'',
+'articleexists' => 'Akwai wani shafi mai wannan suna, koko sunan da kuka zaɓa ba shi da tasiri.
+Don Allah ku zaɓi wani suna.',
+'talkexists' => "'''An gusar da shafin shi kansa, amma an kasa gusar da dangantaccen shafin muhawarar, don akwai wani sahfin mai amfani da sunansa.
+Don Allah ku game su da hannu.'''",
+'movedto' => 'an gusar zuwa',
+'movetalk' => 'Gusar da shafin mahawara mai alaƙa',
+'1movedto2' => 'an gusar da [[$1]] zuwa [[$2]]',
+'1movedto2_redir' => 'an gusar da [[$1]] zuwa [[$2]] ta hanyar soke turawa',
+'movelogpage' => 'Rajistan gushe-gushe',
+'movereason' => 'Dalili:',
+'revertmove' => 'koma',
+
+# Export
+'export' => 'Tsamo shafuna',
+
+# Thumbnails
+'thumbnail-more' => 'Faɗaɗa',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Shafinku na marhabin',
+'tooltip-pt-mytalk' => 'Shafinku na mahawara',
+'tooltip-pt-preferences' => 'Saituttukanku',
+'tooltip-pt-watchlist' => 'Jerin shafunan da kuke bin sawun sauye-sauyensu',
+'tooltip-pt-mycontris' => 'Jerin gudummuwarku',
+'tooltip-pt-login' => 'Ana shawarar ku shiga akwantinku, amma ba dole ba ne',
+'tooltip-pt-logout' => 'Ban kwana',
+'tooltip-ca-talk' => 'Mahawara kan shafin bayannai',
+'tooltip-ca-edit' => 'Ana iya gyara wannan shafi
+A yi amfani da maɓallin rigya-gani kafin a adina',
+'tooltip-ca-addsection' => 'Fara sabon sashe',
+'tooltip-ca-viewsource' => 'Wannan shafi yana da kariya.
+Kuna iya duba tushensa.',
+'tooltip-ca-history' => 'Tsoffin sufofin wannan shafi',
+'tooltip-ca-protect' => 'Kare wannan shafi',
+'tooltip-ca-delete' => 'Soke wannan shafi',
+'tooltip-ca-move' => 'Gusar da wannan shafi',
+'tooltip-ca-watch' => 'A daɗa wannan shafi cikin jerina na bin sawu',
+'tooltip-ca-unwatch' => 'Ku soke wannan shafi daga jerinku na bin sawu',
+'tooltip-search' => 'Binciko {{SITENAME}}',
+'tooltip-search-go' => 'A je ga shafi mai wannan suna idan akwai shi',
+'tooltip-search-fulltext' => 'Binciki shafuna masu wannan matani',
+'tooltip-n-mainpage' => 'Duba shafin Marhabin',
+'tooltip-n-mainpage-description' => 'Duba shafin marhabin',
+'tooltip-n-portal' => 'A game da wannan shiri, abinda za a iya yi, ina za a samu abubuwa',
+'tooltip-n-currentevents' => 'Nemo bayannai kan yanayin labarun yau',
+'tooltip-n-recentchanges' => 'Jerin sabin sauye-sauye a wannan Wiki',
+'tooltip-n-randompage' => 'Nuno wani shafi da ka',
+'tooltip-n-help' => 'Nuno taimako',
+'tooltip-t-whatlinkshere' => 'Jerin duk shafunan Wiki da ke da mahaɗi a nan',
+'tooltip-t-recentchangeslinked' => 'Sauye-sauyen baya-bayan nan a shafuna masu mahaɗi daga wannan shafi',
+'tooltip-feed-rss' => 'Kwararen RSS na wannan shafi',
+'tooltip-feed-atom' => 'Kwararen Atom na wannan shafi',
+'tooltip-t-contributions' => "Duba jerin gudummuwar wannan ma'aikaci",
+'tooltip-t-emailuser' => "Aika wa wannan ma'aikaci imel",
+'tooltip-t-upload' => 'Girke fayiloli',
+'tooltip-t-specialpages' => 'Jerin duk shafuna na musamman',
+'tooltip-t-print' => 'Wannan shafi a sufar bugawa',
+'tooltip-t-permalink' => 'Mahaɗin dindindin zuwa ga zubin baya na wannan shafi',
+'tooltip-ca-nstab-main' => 'Duba shafin bayannai',
+'tooltip-ca-nstab-user' => "Duba shafin ma'aikaci",
+'tooltip-ca-nstab-special' => 'Wannan shafi ne na musamman, ba za ku iya yi masa gyara ba',
+'tooltip-ca-nstab-project' => 'Duba shafin shirin',
+'tooltip-ca-nstab-image' => 'Duba shafin fayil',
+'tooltip-ca-nstab-template' => 'Duba mulun',
+'tooltip-ca-nstab-category' => 'Duba shafin rukuni',
+'tooltip-minoredit' => 'Alamta wannan a matsayin ƙaramin gyara',
+'tooltip-save' => 'Ku adana sauye-sauyenku',
+'tooltip-preview' => 'Ku tantance sauye-sauyenku, don Allah ku yi amfani da wannan kafin ku adana su:',
+'tooltip-diff' => 'Na nuna sauye-sauyen da kuka yi wa matanin',
+'tooltip-compareselectedversions' => 'Duba bambanci tsakanin zaɓaɓɓun zubi biyu na wannan shafi',
+'tooltip-watch' => 'Ku daɗa wannan shafi cikin jerinku na bin sawu',
+'tooltip-rollback' => '"Banyewa" tana soke sauye-sauyen da mutunen baya ya yi da kiliki guda',
+'tooltip-undo' => '"Janyewa" tana soke wannan gyaran ta kuma buɗa fom kin gyara mai rigya-gani.
+Tana ba da damar bayyana dalilin soke gyaran.',
+
+# Browsing diffs
+'previousdiff' => 'Sauyin baya',
+'nextdiff' => 'Gyaran gaba →',
+
+# Media information
+'file-info-size' => '(pikisal $1 × $2, girman fayil: $3, irin MIME: $4)',
+'file-nohires' => '<small>Babu wata babbar saƙa.</small>',
+'svg-long-desc' => '(Fayil kin SVG, saƙar fikisal $1 x $2, girman fayil: $3)',
+'show-big-image' => 'Cikakkar saƙa',
+'show-big-image-thumb' => '<small>Girman wanna rigya-gani: pikisal $1 × $2</small>',
+
+# Bad image list
+'bad_image_list' => 'Fasalin yana kamar haka:
+
+Za a lura da layukan jeri kawai (masu farawa da *).
+Zaren farko a kan layi ya kamata ya nuna fayil maras kyau.
+Sauran mahaɗai a kan layin keɓaɓɓu ne, wato zuwa ga shafuna inda fayil kin zai iya kasancewa.',
+
+# Metadata
+'metadata' => 'bayannan meta',
+'metadata-help' => 'Wannan fayil ya ƙumshi ƙarin bayani daga kyamarar dijita ko sikanan da aka yi amfani da su.
+Idan an sauya fayil kin, to wasu bayannan na ainahi ba za su fito ba sosai a cikin sabon fayil kin.',
+'metadata-expand' => 'Nuna ƙananan bayannai',
+'metadata-collapse' => 'Ɓoye ƙananan bayannai',
+'metadata-fields' => 'Gurabun bayannan meta na EXIF da ke jere cikin wannan saƙo, za a saka su ne cikin shafin zayyana majigin, idan aka taƙaita jadawalin bayannan metan.
+ Wasu gurabun za a ɓoye su bisa manufa.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Gyara wannan fayil da wani safuwai daban',
+'edit-externally-help' => '(Duba [http://www.mediawiki.org/wiki/Manual:External_editors bayannan shimfiɗawa] don ƙarin bayani)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'duka',
+'namespacesall' => 'duka',
+'monthsall' => 'duka',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Duba sauye-sauyen da suka dace',
+'watchlisttools-edit' => 'Duba kuma gyara jerin bin sawu',
+'watchlisttools-raw' => 'Gyara jerin bin sawu',
+
+# Special:SpecialPages
+'specialpages' => 'Shafuna na musamman',
+
+);
diff --git a/languages/messages/MessagesHak.php b/languages/messages/MessagesHak.php
index b90e8b67..99eee223 100644
--- a/languages/messages/MessagesHak.php
+++ b/languages/messages/MessagesHak.php
@@ -126,10 +126,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Phìn-sòng mun-thì kié-tap]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki fat-phu email chhîn-tân]',
-'about' => 'Kôan-yî',
-'article' => 'Vùn-chông',
-'newwindow' => '(chhai sîn sṳ-chhûng chûng tá-khôi)',
-'cancel' => 'Chhí-sêu',
+'about' => 'Kôan-yî',
+'article' => 'Vùn-chông',
+'newwindow' => '(chhai sîn sṳ-chhûng chûng tá-khôi)',
+'cancel' => 'Chhí-sêu',
+'moredotdotdot' => 'Kien-tô...',
+'mypage' => 'Ngô-ke hong-mien',
+'mytalk' => 'Ngài-ke tui-fa ya̍p',
+'anontalk' => 'Ke-IP ke tui-fa hong',
+'navigation' => 'Thô-hòng',
+'and' => '&#32;lâu',
+
+# Cologne Blue skin
'qbfind' => 'Chhìm-cháu',
'qbbrowse' => 'Chhà-khon',
'qbedit' => 'Phiên-siá',
@@ -137,15 +145,8 @@ $messages = array(
'qbpageinfo' => 'Vùn-chông chṳ̂-liau',
'qbmyoptions' => 'Ngô-ke sién-hong',
'qbspecialpages' => 'Thi̍t-sû hong-mien',
-'moredotdotdot' => 'Kien-tô...',
-'mypage' => 'Ngô-ke hong-mien',
-'mytalk' => 'Ngài-ke tui-fa ya̍p',
-'anontalk' => 'Ke-IP ke tui-fa hong',
-'navigation' => 'Thô-hòng',
-'and' => '&#32;lâu',
-
-# Metadata in edit box
-'metadata_help' => 'Ngièn sṳ-kí:',
+'faq' => 'Sòng-kien mun-thì kié-tap',
+'faqpage' => 'Project:Sòng-kien mun-thì kié-tap',
'errorpagetitle' => 'Chho-ngu',
'returnto' => 'Fán-fì to $1.',
@@ -195,7 +196,7 @@ $messages = array(
'otherlanguages' => 'Khì-thâ ngî-ngièn',
'redirectedfrom' => '(Chhùng-thin-hiong chhṳ $1)',
'redirectpagesub' => 'Chhùng-thin-hiong hong-mien',
-'lastmodifiedat' => 'Liá-chông ke chui-heu siû-thin chhai $1 $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Liá-chông ke chui-heu siû-thin chhai $1 $2.',
'viewcount' => 'Pún-chông yí-kîn pûn-ngìn khon-kien $1-chhṳ.',
'protectedpage' => 'Pûn pó-fu ke vùn-chông',
'jumpto' => 'Thiàu-chón to:',
@@ -206,7 +207,6 @@ $messages = array(
'aboutsite' => 'Yû-kôan {{SITENAME}}',
'aboutpage' => 'Project:Kôan-yî',
'copyright' => 'Pún-chham ke chhiòn-phu vùn-pún nui-yùng chhai $1 chṳ̂ thiàu-khóan hâ thì-kiûng.',
-'copyrightpagename' => '{{SITENAME}} pán-khièn',
'copyrightpage' => '{{ns:project}}:Pán-khièn sin-sit',
'currentevents' => 'Hien-sṳ̀ sṳ-khien',
'currentevents-url' => 'Project:Hien-sṳ̀ sṳ-khien',
@@ -214,8 +214,6 @@ $messages = array(
'disclaimerpage' => 'Project:Yit-pân ke miên-chit sâng-mìn',
'edithelp' => 'Phiên-siá pông-chhu',
'edithelppage' => 'Help:Phiên-cho hong-mien',
-'faq' => 'Sòng-kien mun-thì kié-tap',
-'faqpage' => 'Project:Sòng-kien mun-thì kié-tap',
'helppage' => 'Help:Pông-chhu',
'mainpage' => 'Thèu Ya̍p',
'mainpage-description' => 'Thèu-chông',
@@ -281,9 +279,6 @@ $messages = array(
'databaseerror' => 'Chṳ̂-liau-khu ke chho-ngu',
'dberrortext' => 'Fat-sên chṳ̂-liau-khu chhà-chhìm fa-ngî chho-ngu. Khó-nèn he ngiôn-thí chhṳ-sṳ̂n ke chho-ngu só yîn-hí. Chui-heu yit-chhṳ chṳ̂-liau-khu chhà-chhìm chṳ́-lin he: <blockquote><tt>$1</tt></blockquote> lòi-chhṳ "<tt>$2</tt>"。 MySQL fán-fì chho-ngu "<tt>$3: $4</tt>".',
'dberrortextcl' => 'Fat-sên liáu yit-ke chṳ̂-liau-khu thiàu-chhà fa-ngî chho-ngu. Chui-heu yit-chhṳ ke chṳ̂-liau-khu thiàu-chhà he: "$1" lòi-ngièn "$2". MySQL fì-chón chho-ngu "$3: $4".',
-'noconnect' => 'Mò-fap chhai $1 song lièn-chiap chṳ̂-liau-khu',
-'nodb' => 'Mò-fap sién-chet chṳ̂-liau-khu $1',
-'cachederror' => 'Ha-mien ke hong-mien he pûn chhiáng-khiù hong-mien chhai khoai-chhí ke yit-ke fu-pún, khó-nèn put-he chui-sîn ke pán-pún.',
'laggedslavemode' => 'Kín-ko: Vùn-chông khó-nèn put pâu-hàm chui-khiûn ke kiên-kói.',
'readonly' => 'Chṳ̂-liau-khu kim-chṳ́ fóng-mun',
'enterlockreason' => 'Chhiáng sû-ngi̍p kim-chṳ́ fóng-mun ke ngièn-yîn, pâu-hàm kû-kie chhùng-sîn khôi-fong ke sṳ̀-kiên',
@@ -307,7 +302,7 @@ Chhiáng ki-liu̍k hâ URL thi-chí, pin hiong [[Special:ListUsers/sysop|Kón-l
'unexpected' => 'Put-chṳn-sòng chhṳ̍t: "$1"="$2".',
'formerror' => 'Chho-ngu: mò-fap thì-kâu péu-tân',
'badarticleerror' => 'Vù-fap chhai pún-hong song chin-hàng chhṳ́-hong ke chhâu-chok.',
-'cannotdelete' => 'Mò-fap chhù-thet sién-thin ke vùn-chông fe̍t-he thù-chhiong (Kí khó-nèn yí-kîn pûn khì-thâ-ngìn chhù-hi liáu).',
+'cannotdelete' => 'Mò-fap chhù-thet sién-thin ke vùn-chông fe̍t-he thù-chhiong (Kí khó-nèn yí-kîn pûn khì-thâ-ngìn chhù-hi liáu).',
'badtitle' => 'Chho-ngu ke phêu-thì',
'badtitletext' => 'Só chhiáng-khiù hong-mien ke phêu-thì he mò-háu ke, mò-chhùn-chhai, khiam-ko ngî-ngièn fe̍t-chá khiam-ko wiki lièn-kiet ke phêu-thì chho-ngu.',
'perfcached' => 'Yî-ha chṳ̂-liau lòi-chhṳ khoai-chhí, khó-nèn yû chho-ngu.',
@@ -331,12 +326,10 @@ Chhà-khon: $2',
'virus-unknownscanner' => 'vù-tî ke fòng phiang-thu̍k:',
# Login and logout pages
-'logouttitle' => 'Yung-fu thui-chhut',
'logouttext' => "'''Ngì hien-chhai yí-kîn thui-chhut.'''
Ngì khó-yî ki-siu̍k yî ngia̍k-miàng fông-sṳt sṳ́-yung {{SITENAME}}, fe̍t-chá chai-chhṳ yî siông-thùng fe̍t-he mò-thùng yung-fu sṳ̂n-fun tên-ngi̍p.",
'welcomecreation' => '<h2>Fôn-ngiàng, $1!</h2><p>Ngì-ke chong-ho yí-kîn kien-li̍p, put-yeu mong-ki sat-chṳ {{SITENAME}} ke-ngìn chhâm-sṳ.</p>',
-'loginpagetitle' => 'Yung-fu tên-ngi̍p',
'yourname' => 'Yung-fu-miàng',
'yourpassword' => 'Me̍t-ma:',
'yourpasswordagain' => 'Chai-chhṳ sû-ngi̍p me̍t-ma:',
@@ -358,20 +351,7 @@ Ngì khó-yî ki-siu̍k yî ngia̍k-miàng fông-sṳt sṳ́-yung {{SITENAME}},
'createaccountmail' => 'thûng-ko e-mail',
'badretype' => 'Ngì só sû-ngi̍p ke pi-me̍t pin mò siông-thùng.',
'userexists' => 'Ngì sû-ngi̍p ke yung-fu miàng-chhṳ̂n yí-kîn chhùn-chhai, chhiáng nang-ngoi sién yit-ke.',
-'youremail' => 'Thien-chṳ́ yù-khien:',
-'username' => 'Yung-fu miàng-chhṳ̂n:',
-'uid' => 'Yung-fu ID:',
-'yourrealname' => 'Chṳ̂n-sṳ̍t siang-miàng *:',
-'yourlanguage' => 'Kie-mien ngî-ngièn:',
-'yourvariant' => 'Sṳ-thí pien-von:',
-'yournick' => 'Kién-chhṳ̂n:',
-'badsig' => 'Chho-ngu ke ngièn-sṳ́ chhiâm-miàng; chhiáng kiám-chhà HTML phêu-chhiâm.',
-'badsiglength' => 'Tshiâm-miàng ko-liong.
-Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
-'email' => 'Email',
-'prefs-help-realname' => '* Chṳ̂n-sṳ̍t siang-miàng (khó-sién): yung-lòi tui-cheu ngì-ke kung-hien miàng.',
'loginerror' => 'Tên-liu̍k chho-ngu',
-'prefs-help-email' => 'Hí-khó sién: ngiong phe̍t-ngìn thûng-ko mióng-chham chhai vù-tî ngì-ke email thi-tiám ke chhìn-khóng hâ thûng-ko email lâu ngì lièn-lo̍k, yî-khi̍p thûng-ko email chhái-chhí vì-mong ke me̍t-me̍t.',
'nocookiesnew' => 'Yí-kîn sṳ̀n-kûng chhóng-li̍p sîn yung-fu! chṳ̂n-chhet to ngì yí-kîn kôan-pit Cookies, chhiáng khôi-khí kí pin tên-ngi̍p.',
'nocookieslogin' => '{{SITENAME}} li-yung Cookies chin-hàng yung-fu tên-ngi̍p, chṳ̂n-chhet to ngì yí-kîn kôan-pit Cookies, chhiáng khôi-khí kí pin chhùng-sîn tên-ngi̍p.',
'noname' => 'Ngì hàn-mò sû-ngi̍p yit-ke yû-háu ke yung-fu miàng.',
@@ -404,17 +384,16 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
'loginlanguagelabel' => 'Ngî-ngièn: $1',
# Password reset dialog
-'resetpass' => 'Chhûng-sat chong-fu me̍t-me̍t',
-'resetpass_announce' => 'Ngì he theu-ko yit-ke lìm-sṳ̀ ke fat-sung to email chûng ke chhí-me̍t tên-ngi̍p ke. Yeu vàn-sṳ̀n tên-ngi̍p, ngì pit-sî chhai liá-piên sat-thin yit-ke sîn me̍t-me̍t:',
-'resetpass_text' => '<!-- Chhai chhṳ́-chhu kâ-ngi̍p vùn-sṳ -->',
-'resetpass_header' => 'Chhùng-sat me̍t-me̍t',
-'oldpassword' => 'Khiu pi-me̍t:',
-'newpassword' => 'Sîn pi-me̍t:',
-'retypenew' => 'Khok-ngin me̍t-me̍t:',
-'resetpass_submit' => 'Sat-thin me̍t-me̍t pin tên-ngi̍p',
-'resetpass_success' => 'Ngì-ke me̍t-me̍t yí-kîn pûn sṳ̀n-kûng kiên-kói! Hien-ha chang vi ngì tên-ngi̍p...',
-'resetpass_bad_temporary' => 'Mò-háu ke lìm-sṳ̀ me̍t-me̍t. Ngì khó-nèn yí-kîn sṳ̀n-kûng-thi kiên-kói liáu ngì-ke me̍t-me̍t, fe̍t-chá sî-yeu chhiáng-khiù yit-ke sîn-ke lìm-sṳ̀ me̍t-me̍t.',
-'resetpass_forbidden' => 'Mò-fap chhai chhṳ́ wiki sông kiên-kói me̍t-me̍',
+'resetpass' => 'Chhûng-sat chong-fu me̍t-me̍t',
+'resetpass_announce' => 'Ngì he theu-ko yit-ke lìm-sṳ̀ ke fat-sung to email chûng ke chhí-me̍t tên-ngi̍p ke. Yeu vàn-sṳ̀n tên-ngi̍p, ngì pit-sî chhai liá-piên sat-thin yit-ke sîn me̍t-me̍t:',
+'resetpass_text' => '<!-- Chhai chhṳ́-chhu kâ-ngi̍p vùn-sṳ -->',
+'resetpass_header' => 'Chhùng-sat me̍t-me̍t',
+'oldpassword' => 'Khiu pi-me̍t:',
+'newpassword' => 'Sîn pi-me̍t:',
+'retypenew' => 'Khok-ngin me̍t-me̍t:',
+'resetpass_submit' => 'Sat-thin me̍t-me̍t pin tên-ngi̍p',
+'resetpass_success' => 'Ngì-ke me̍t-me̍t yí-kîn pûn sṳ̀n-kûng kiên-kói! Hien-ha chang vi ngì tên-ngi̍p...',
+'resetpass_forbidden' => 'Mò-fap chhai chhṳ́ wiki sông kiên-kói me̍t-me̍',
# Edit page toolbar
'bold_sample' => 'Chhû-thí vùn-sṳ',
@@ -461,7 +440,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
'blockededitsource' => "Ngì tui '''$1''' chin-hàng '''phiên-siá''' ke vùn-sṳ yì-hâ:",
'whitelistedittitle' => 'Tên-ngi̍p heu chhòi hí-khó phiên-siá',
'whitelistedittext' => 'Ngì pit-sî siên $1 chhòi-nèn phiên-siá vùn-chông.',
-'confirmedittitle' => 'Email khok-ngin heu chhòi-nèn phiên-cho',
'confirmedittext' => 'Chhai phiên-cho chhṳ́-chông chṳ̂-chhièn pit-sî khok-ngin ngì-ke email thi-tiám. Chhiáng theu-ko [[Special:Preferences|chhâm-su sat-thin]] sat-thin pin ngiam-chṳn ngì-ke email thi-tiám.',
'nosuchsectiontitle' => 'Mò-yû liá-ke thon-lo̍k',
'nosuchsectiontext' => 'Ngì sòng-chhṳ phiên-cho ke thon-lo̍k pin-put chhùn-chhai.',
@@ -479,7 +457,8 @@ Kó-yèn ngì-he put-séu-sîm to chhṳ́ hong-mien, chhṳ̍t-chiap tiám-kit
'userpage-userdoesnotexist' => 'Sṳ́-yung-tsá tsong-ho "$1" hàn-mò kien-li̍p.
Tshiáng chhai kien-li̍p/piên-sip liá-ke vùn-tsông tshièn siên kiám-tshà yit-ha-é.',
'clearyourcache' => "'''Chu-yi:''' Chhai tú-chhùn yî-heu, ngì pit-sî khoai chhái-chhí chhîn-chhù hi-khí chhòi-nèn khon-tó chok-chhut ke kói-pien. '''Mozilla / Firefox / Safari:''' on-tén ''Shift'' chai tiám-kit '' Chhùng-sîn chṳ́n-lî ''(fe̍t-chá on-hâ ''Ctrl-Shift-R'', chhai Phìn-kó Mac song on-hâ ''Cmd-Shift-R''); '''IE:''' on-tén ''Ctrl'' chai tiám-kit ''Chhùng-sîn chṳ́n-lî'', fe̍t-he on-hâ ''Ctrl-F5'';'''Konqueror:''' chak sî-yeu tiám-kit ''Chhùng-sîn chṳ́n-lî''; '''Opera:''' yung-fu sî-yeu chhai ''kûng-khí-sat-thin'' chûng vàn-cháng-thi chhîn-chhù ke khoai-chhí.",
-'usercssjsyoucanpreview' => "'''Thì-sṳ:''' Chhai pó-chhùn chhièn chhiáng yung 'hién-sṳ yi-ko' on-néu lòi chhet-chhṳ ngì sîn-ke CSS/JS.",
+'usercssyoucanpreview' => "'''Thì-sṳ:''' Chhai pó-chhùn chhièn chhiáng yung 'hién-sṳ yi-ko' on-néu lòi chhet-chhṳ ngì sîn-ke CSS.",
+'userjsyoucanpreview' => "'''Thì-sṳ:''' Chhai pó-chhùn chhièn chhiáng yung 'hién-sṳ yi-ko' on-néu lòi chhet-chhṳ ngì sîn-ke JS.",
'usercsspreview' => "'''Chu-yi ngì chak-he chhai yi-liau ngì ke-ngìn CSS, hàn-mò tú-chhùn!'''",
'userjspreview' => "'''Chu-yi ngì chak-he chhai chhet-chhṳ / yi-liau ngì ke-ngìn JavaScript, hàn-mò tú-chhùn!'''",
'userinvalidcssjstitle' => "'''Kín-ko:''' Put chhùn-chhai mien-pán \"\$1\". chu-yi chhṳ-thin ke .css lâu .js hong yeu sṳ́-yung séu-siá phêu-thì, yì-yi, {{ns:user}}:Foo/monobook.css put-thùng yî {{ns:user}}:Foo/Monobook.css.",
@@ -552,7 +531,7 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'currentrev' => 'Tông-chhièn siû-thin pán-pún',
'currentrev-asof' => 'Chhai $1-ke tông-sṳ̀ siù-tsho pán-pún.',
'revisionasof' => 'Chhai $1 só-cho ke siû-thin pán-pún',
-'revision-info' => 'Chhai $1 yù $2 só-cho ke siû-thin pán-pún', # Additionally available: $3: revision id
+'revision-info' => 'Chhai $1 yù $2 só-cho ke siû-thin pán-pún',
'previousrevision' => '←Sông yit siû-thin',
'nextrevision' => 'Hâ-yit-ke siû-cháng →',
'currentrevisionlink' => 'Tông-chhièn siû-thin pán-pún',
@@ -563,7 +542,6 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'page_last' => 'Chui-heu',
'histlegend' => 'Chhâ-phe̍t sién-chet: phêu-ki yeu pí-káu pán-pún ke tân-sién on-néu pin tiám-kit tí-phu ke on-néu chin-hàng pí-káu.<br /> Sot-mìn: (Tông-chhièn) chṳ́-chit lâu tông-chhièn pán-pún pí-káu, (Siên-chhièn) chṳ́-chit lâu chhièn yit-ke siû-thin pán-pún pí-káu, séu = séu siû-kói.',
'history-fieldset-title' => 'Liù-lám li̍t-sṳ́',
-'deletedrev' => '[yí-kîn chhù-thet]',
'histfirst' => 'Chui-chó pán-pún',
'histlast' => 'Chui-sîn pán-pún',
'historysize' => '($1-vi kûng-chû)',
@@ -572,15 +550,15 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
# Revision feed
'history-feed-title' => 'Siû-thin li̍t-sṳ́',
'history-feed-description' => 'Pún-chham song chhṳ́-chông ke siû-thin li̍t-sṳ́',
-'history-feed-item-nocomment' => '$1 chhai-yî $2', # user at time
+'history-feed-item-nocomment' => '$1 chhai-yî $2',
'history-feed-empty' => 'Só chhiáng-khiù ke vùn-chông put-chhùn-chhai. Khó-nèn yí-kîn pûn-ngìn chhù-thet fe̍t-chá chhùng-sîn min-miàng. Sòng-chhṳ [[Special:Search|Sêu-chhà pún-chham]] siong-kôan ke sîn-kien vùn-chông.',
# Revision deletion
'rev-deleted-comment' => '(chu-sṳt yí-kîn yì-chhù)',
'rev-deleted-user' => '(Yung-fu-miàng yí-kîn yì-chhù)',
'rev-deleted-event' => '(hong-muk yí-kîn yì-chhù)',
-'rev-deleted-text-permission' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chhai [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
-'rev-deleted-text-view' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chok-vi mióng-chham ke kón-lî-yèn, khó-yî kiám-chhà; Chhai[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
+'rev-deleted-text-permission' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chhai [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
+'rev-deleted-text-view' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chok-vi mióng-chham ke kón-lî-yèn, khó-yî kiám-chhà; Chhai[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
'rev-delundel' => 'Hién-sṳ/yún-chhòng',
'revisiondelete' => 'Chhù-thet/fî-fu̍k chhù-hi ke siû-thin',
'revdelete-nooldid-title' => 'Mò-yû muk-phêu siû-thin',
@@ -590,12 +568,12 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'revdelete-text' => "'''Chhù-thet ke siû-thin yìn-yèn chiông-voi hién-sṳ chhai vùn-chông li̍t-sṳ́ chûng, than vùn-sṳ nui-yùng yí-kîn put-nèn pûn chung-ngìn fóng-mun.''' Chhai chhṳ́ miong-chham ke khì-thâ kón-lî-yèn chiông chhòi-nèn fóng-mun yún-chhòng ke nui-yùng pin theu-ko siông-thùng ke kie-mien fî-fu̍k chhù-hi, chhù-fî miong-chham kûng-chok-chá chin-hàng han-chṳ.",
'revdelete-legend' => 'Sat-thin siû-thin han-chṳ:',
'revdelete-hide-text' => 'Yún-chhòng siû-thin vùn-sṳ',
+'revdelete-hide-image' => 'Yún-chhòng tóng-on nui-yùng',
'revdelete-hide-name' => 'Yún-chhòng thung-chok khi̍p muk-phêu',
'revdelete-hide-comment' => 'Yún-chhòng phiên-chho sot-mìn',
'revdelete-hide-user' => 'Yún-chhòng phiên-siá-chá ke yung-fu-miàng/IP',
'revdelete-hide-restricted' => 'Chiông han-chṳ khiung-thùng yin-yung yî kón-lî-yèn',
'revdelete-suppress' => 'Thùng-sṳ̀ ap-chṳ chhâu-chok-yèn yî-khi̍p khì-thâ yung-fu ke chṳ̂-liau',
-'revdelete-hide-image' => 'Yún-chhòng tóng-on nui-yùng',
'revdelete-unsuppress' => 'Chhai yí-kîn fî-fu̍k ke siû-thin chûng yì-chhù han-chṳ',
'revdelete-log' => 'Ngièn-yîn:',
'revdelete-submit' => 'Yin-yung chhut-yì sién-chhí ke siû-thin',
@@ -635,14 +613,6 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'compareselectedversions' => 'Pí-káu sién-thin ke pán-pún',
'editundo' => 'Chhat-sêu',
'diff-multi' => '($1-ke chûng-thù ke siû-thin pán-pún mò-yû hién-sṳ.)',
-'diff-movedto' => 'yì-thung to $1',
-'diff-styleadded' => 'Yí-kîn kâ-ngi̍p $1 yong-sṳt-péu',
-'diff-added' => 'Yí-kîn kâ-ngi̍p $1',
-'diff-changedto' => 'kiên-kói to $1',
-'diff-movedoutof' => 'yì-tshù tshṳ $1',
-'diff-styleremoved' => 'Yí-kîn yì-tshù $1 yong-sṳt-péu',
-'diff-removed' => 'Yí-kîn yì-tshù $1',
-'diff-src' => 'lòi-ngièn',
# Search results
'searchresults' => 'Chhìm-cháu kiet-kó',
@@ -650,14 +620,13 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'searchresulttext' => 'Yû-kôan chhìm-cháu {{SITENAME}} ke kien-tô siòng-se chhìn-khóng, chhâm-kháu [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Chhà-sûn $1 (só-yû yî "$1" khôi-thèu ke ya̍p • só-yû lièn-chiap to "$1" ke ya̍p)',
'searchsubtitleinvalid' => 'Chhà-chhìm "$1"',
-'noexactmatch' => "'''Mò chhìm-cháu to phêu-thì vi \"\$1\" ke vùn-chông. ''' Ngì khó-yî [[:\$1|Chhóng-chho chhṳ́ vùn-chông]].",
'titlematches' => 'Vùn-chông thì-muk siông-fù',
'notitlematches' => 'Mò-yû chhìm-cháu to phit-phi vùn-chông thì-muk',
'textmatches' => 'Vùn-chông nui-yùng fù-ha̍p',
'notextmatches' => 'Mò-yû vùn-chông nui-yùng phit-phi',
-'prevn' => 'Chhièn $1-ke',
-'nextn' => 'hâ $1-ke',
-'viewprevnext' => 'Kiám-sṳ ($1) ($2) ($3).',
+'prevn' => 'Chhièn {{PLURAL:$1|$1}}-ke',
+'nextn' => 'hâ {{PLURAL:$1|$1}}-ke',
+'viewprevnext' => 'Kiám-sṳ ($1) ($2) ($3).',
'searchhelp-url' => 'Help:Pông-chhu',
'search-result-size' => '$1 ($2 ke sṳ)',
'search-redirect' => '(chhùng-thin-hiong $1)',
@@ -676,68 +645,72 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'powersearch-ns' => 'Chhai yî-ha ke miàng-sṳ khûng-kiên chûng sêu-chhà:',
'powersearch-redir' => 'Chhùng-sîn thin-hiong chhîn-tân',
'powersearch-field' => 'Sêu-chhà',
+'powersearch-togglelabel' => 'Kiám-chhà:',
'searchdisabled' => '{{SITENAME}} sin-nèn fông-mien ke ngièn-yîn, chhiòn-vùn chhìm-cháu yí-kîn pûn chhiam-sṳ̀ thìn-yung. Ngì khó-yî chhiam-sṳ̀ theu-ko Google chhà-chhìm. Chhiáng liù-yi sok-yîn khó-nèn voi ko-sṳ̀.',
-# Preferences page
-'preferences' => 'Chhâm-su sat-chṳ',
-'mypreferences' => 'Ngài-ke chhâm-su sat-chṳ',
-'prefsnologin' => 'Hàn-mò tên-ngi̍p',
-'prefsnologintext' => 'Ngì pit-sî chhai-siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn sat-chṳ ke-ngìn chhâm-su.',
-'prefsreset' => 'Chhâm-su yí-kîn chhùng-sîn sat-chṳ.',
+# Quickbar
'qbsettings' => 'Khoai-suk thô-hòng-thiàu',
'qbsettings-none' => 'Mò',
'qbsettings-fixedleft' => 'Hiong-chó ku-thin',
'qbsettings-fixedright' => 'Hiong-yu ku-thin',
'qbsettings-floatingleft' => 'Phêu-yì chhai chó',
'qbsettings-floatingright' => 'Phêu-yì chhai yu',
-'changepassword' => 'Kiên-kói me̍t-me̍t',
-'skin' => 'Mien-pán',
-'skin-preview' => 'Yi-ko',
-'math' => 'Sṳ-ho̍k kûng-sṳt',
-'dateformat' => 'Ngit-khì kak-sṳt',
-'datedefault' => 'Yi-sat-chhṳ̍t',
-'datetime' => 'Ngit-khì khi̍p sṳ̀-kiên',
-'math_failure' => 'Kié-sak sṳt-phai',
-'math_unknown_error' => 'Mò-tî chho-ngu',
-'math_unknown_function' => 'Mò-tî chhṳ-su',
-'math_lexing_error' => 'ki-fap chho-ngu',
-'math_syntax_error' => 'ngî-fap chho-ngu',
-'math_image_error' => 'PNG chón-von sṳt-phai; chhiáng kiám-chhà he-feu chṳn-khok ôn-chông latex, dvips, gs lâu convert',
-'math_bad_tmpdir' => 'Mò-fap siá-ngi̍p fe̍t-chá kien-li̍p su-ho̍k kûng-sṳt lìm-sṳ̀ muk-liu̍k',
-'math_bad_output' => 'Mò-fap siá-ngi̍p fe̍t-chá kien-li̍p su-ho̍k kûng-sṳt sû-chhut muk-liu̍k',
-'math_notexvc' => 'Mò-fap chṳp-hàng "texvc"; chhiáng chhâm-cheu math/README chin-hàng phi-chṳ.',
-'prefs-personal' => 'Yung-fu chṳ̂-liau',
-'prefs-rc' => 'Chui-khiûn kiên-kói',
-'prefs-watchlist' => 'Kam-sṳ lie̍t-péu',
-'prefs-watchlist-days' => 'Kam-sṳ lie̍t-péu chûng hién-sṳ ki-liu̍k ke thiên-su:',
-'prefs-watchlist-edits' => 'Chhai chen-khiòng ke Kam-sṳ lie̍t-péu chûng hién-sṳ ke phiên-chho chhṳ-su:',
-'prefs-misc' => 'Khì-thâ sat-chṳ',
-'saveprefs' => 'Pó-chhùn',
-'resetprefs' => 'Sat-thin',
-'textboxsize' => 'Phiên-cho',
-'rows' => 'Phài-lie̍t',
-'columns' => 'Lie̍t-su:',
-'searchresultshead' => 'Chhìm-cháu kiet-kó sat-thin',
-'resultsperpage' => 'Mî-chông hién-sṳ lièn-kiet su:',
-'contextlines' => 'Mî lièn-kiet hàng-su:',
-'contextchars' => 'Mî-hàng ke sṳ-su:',
-'stub-threshold' => 'Tón vùn-chông hién-sṳ kî-pún han-chṳ',
-'recentchangesdays' => 'Chui-khiûn kiên-kói chûng ke hién-sṳ ngit-su:',
-'recentchangescount' => 'Chui-khiûn kiên-kói chûng ke phiên-siá chúng-su:',
-'savedprefs' => 'Ngì-ke ke-ngìn chhâm-su sat-chṳ yí-kîn pó-chhùn.',
-'timezonelegend' => 'Sṳ̀-khî',
-'timezonetext' => '¹Sû-ngi̍p tông-thi sṳ̀-kiên lâu fu̍k-khí sṳ̀-kiên (UTC) ke sṳ̀-chhâ.',
-'localtime' => 'Tông-thi sṳ̀-kiên',
-'timezoneoffset' => 'Sṳ̀-chhâ¹',
-'servertime' => 'Fu̍k-vu hi-khí sṳ̀-kiên',
-'guesstimezone' => 'Chhiùng hi-khí thiàm-mân',
-'allowemail' => 'Chiap-su lòi-chhṳ̀ khì-thâ yung-fu ke email',
-'defaultns' => 'Yi-sat sêu-sok ke miàng-sṳ khûng-kiên:',
-'default' => 'Yi-sat',
-'files' => 'Tóng-on',
+
+# Preferences page
+'preferences' => 'Chhâm-su sat-chṳ',
+'mypreferences' => 'Ngài-ke chhâm-su sat-chṳ',
+'prefsnologin' => 'Hàn-mò tên-ngi̍p',
+'prefsnologintext' => 'Ngì pit-sî chhai-siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn sat-chṳ ke-ngìn chhâm-su.',
+'changepassword' => 'Kiên-kói me̍t-me̍t',
+'prefs-skin' => 'Mien-pán',
+'skin-preview' => 'Yi-ko',
+'prefs-math' => 'Sṳ-ho̍k kûng-sṳt',
+'datedefault' => 'Yi-sat-chhṳ̍t',
+'prefs-datetime' => 'Ngit-khì khi̍p sṳ̀-kiên',
+'prefs-personal' => 'Yung-fu chṳ̂-liau',
+'prefs-rc' => 'Chui-khiûn kiên-kói',
+'prefs-watchlist' => 'Kam-sṳ lie̍t-péu',
+'prefs-watchlist-days' => 'Kam-sṳ lie̍t-péu chûng hién-sṳ ki-liu̍k ke thiên-su:',
+'prefs-watchlist-edits' => 'Chhai chen-khiòng ke Kam-sṳ lie̍t-péu chûng hién-sṳ ke phiên-chho chhṳ-su:',
+'prefs-misc' => 'Khì-thâ sat-chṳ',
+'saveprefs' => 'Pó-chhùn',
+'resetprefs' => 'Sat-thin',
+'prefs-editing' => 'Phiên-cho',
+'rows' => 'Phài-lie̍t',
+'columns' => 'Lie̍t-su:',
+'searchresultshead' => 'Chhìm-cháu kiet-kó sat-thin',
+'resultsperpage' => 'Mî-chông hién-sṳ lièn-kiet su:',
+'contextlines' => 'Mî lièn-kiet hàng-su:',
+'contextchars' => 'Mî-hàng ke sṳ-su:',
+'stub-threshold' => 'Tón vùn-chông hién-sṳ kî-pún han-chṳ',
+'recentchangesdays' => 'Chui-khiûn kiên-kói chûng ke hién-sṳ ngit-su:',
+'recentchangescount' => 'Chui-khiûn kiên-kói chûng ke phiên-siá chúng-su:',
+'savedprefs' => 'Ngì-ke ke-ngìn chhâm-su sat-chṳ yí-kîn pó-chhùn.',
+'timezonelegend' => 'Sṳ̀-khî',
+'localtime' => 'Tông-thi sṳ̀-kiên',
+'timezoneoffset' => 'Sṳ̀-chhâ¹',
+'servertime' => 'Fu̍k-vu hi-khí sṳ̀-kiên',
+'guesstimezone' => 'Chhiùng hi-khí thiàm-mân',
+'allowemail' => 'Chiap-su lòi-chhṳ̀ khì-thâ yung-fu ke email',
+'defaultns' => 'Yi-sat sêu-sok ke miàng-sṳ khûng-kiên:',
+'default' => 'Yi-sat',
+'prefs-files' => 'Tóng-on',
+'youremail' => 'Thien-chṳ́ yù-khien:',
+'username' => 'Yung-fu miàng-chhṳ̂n:',
+'uid' => 'Yung-fu ID:',
+'yourrealname' => 'Chṳ̂n-sṳ̍t siang-miàng *:',
+'yourlanguage' => 'Kie-mien ngî-ngièn:',
+'yourvariant' => 'Sṳ-thí pien-von:',
+'yournick' => 'Kién-chhṳ̂n:',
+'badsig' => 'Chho-ngu ke ngièn-sṳ́ chhiâm-miàng; chhiáng kiám-chhà HTML phêu-chhiâm.',
+'badsiglength' => 'Tshiâm-miàng ko-liong.
+Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
+'email' => 'Email',
+'prefs-help-realname' => '* Chṳ̂n-sṳ̍t siang-miàng (khó-sién): yung-lòi tui-cheu ngì-ke kung-hien miàng.',
+'prefs-help-email' => 'Hí-khó sién: ngiong phe̍t-ngìn thûng-ko mióng-chham chhai vù-tî ngì-ke email thi-tiám ke chhìn-khóng hâ thûng-ko email lâu ngì lièn-lo̍k, yî-khi̍p thûng-ko email chhái-chhí vì-mong ke me̍t-me̍t.',
# User rights
-'userrights' => 'Yung-fu khièn-han kón-lî', # Not used as normal message but as header for the special page itself
+'userrights' => 'Yung-fu khièn-han kón-lî',
'userrights-lookup-user' => 'Kón-lî yung-fu khiùn-chung',
'userrights-user-editname' => 'Sû-ngi̍p yung-fu-miàng:',
'editusergroup' => 'Phiên-cho yung-fu khiùn-chû',
@@ -777,7 +750,7 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'recentchangestext' => 'Kiên-chiûng liá-ke wiki song ke chui-sîn kiên-kói.',
'recentchanges-feed-description' => 'Kiên-chiûng chhṳ-thin chhai wiki song chui-khiûn ke kiên-kói.',
'rcnote' => "Yî-ha he chhai $3, chui-khiûn '''$2''' thiên-nui ke '''$1'''-chhṳ chui-khiûn ke kiên-kói ki-liu̍k:",
-'rcnotefrom' => "Ha-mien he chhṳ '''$2''' (Chui-tô hién-sṳ '''$1'''):",
+'rcnotefrom' => "Ha-mien he chhṳ '''$2''' (Chui-tô hién-sṳ '''$1'''):",
'rclistfrom' => 'Hién-sṳ chhṳ $1 yî-lòi ke sîn kiên-kói',
'rcshowhideminor' => '$1 séu phiên-cho',
'rcshowhidebots' => '$1 kî-hi-ngìn ke phiên-cho',
@@ -801,6 +774,8 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Lièn-chhut kiên-kói',
+'recentchangeslinked-feed' => 'Lièn-chhut kiên-kói',
+'recentchangeslinked-toolbox' => 'Lièn-chhut kiên-kói',
'recentchangeslinked-title' => 'Tui-yî "$1" yû-kôan ke lièn-chhut kiên-kói',
'recentchangeslinked-noresult' => 'Chhai liá yit-thon sṳ̀-kiên chûng lièn-kiet ke hong-mien pin-mò kiên-kói.',
'recentchangeslinked-summary' => "Liá-ke thi̍t-sû-ya̍p lie̍t-sṳ ''yù'' só pûn-chhut ke yit-ke ya̍p chṳ̂ lièn-kiet to ya̍p ke chui-khiûn kiên-kói (fe̍t-chá he tui-yî chṳ́-thin fûn-lui ke sṳ̀n-yèn).
@@ -811,7 +786,6 @@ Chhai [[Special:Watchlist|ngì-ke kam-sṳ lie̍t-péu]] chûng ke ya̍p fi hié
# Upload
'upload' => 'Sông-chhòn tóng-on',
'uploadbtn' => 'Song-chhòn tóng-on',
-'reupload' => 'Chhùng-sîn song-chai',
'reuploaddesc' => 'Fán-fì song-chai péu-tân.',
'uploadnologin' => 'Hàn-mò tên-ngi̍p',
'uploadnologintext' => 'Ngì pit-sî chó-siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn sông-chai vùn-khien.',
@@ -842,7 +816,6 @@ Chhai [[Special:Watchlist|ngì-ke kam-sṳ lie̍t-péu]] chûng ke ya̍p fi hié
* Song-chhòn tóng-on ke tóng-miàng: '''<tt>[[:$1]]</tt>'''
* Hien-chhai yû tóng-on ke tóng-miàng: '''<tt>[[:$2]]</tt>'''
Chhiáng sién-chet yit-ke put-thùng ke miàng-sṳ.",
-'fileexists-thumb' => "<center>'''Yí-kîn chhùn-chhai ke thù-hìn'''</center>",
'fileexists-thumbnail-yes' => "Liá-ke tóng-on chhin-chhiong he yit-pu thù-hìn ke suk-thù pán-pún ''(suk-thù)''. [[$1|thumb]]
Chhiáng kiám-chhà chhîn-chhú ke tóng-on '''<tt>[[:$1]]</tt>'''.
Kó-yèn kiám-chhà heu ke tóng-on he khiung-thùng ngièn-pún thù-hiong ke thai-séu he yit-yong, chhiu put-yung song-chhòn tô yit-puk suk-thù.",
@@ -858,7 +831,6 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'uploaddisabled' => 'Mò-fap song-chhòn',
'uploaddisabledtext' => 'Tóng-on song-chhòn chhai chhṳ́ miong-chham put hí-khó yung.',
'uploadscripted' => 'Ke tóng-on pâu-hàm khó-nèn pûn mióng-lu-hi chho-ngu kié-sṳt ke HTML fe̍t-chá kiok-pún thoi-me̍t.',
-'uploadcorrupt' => 'Ke tóng-on pâu-hàm fe̍t-chá khí-yû yit-ke put chṳn-khok ke khóng-chán-miàng. Chhiáng kiám-chhà chhṳ́ tóng-on pin chhùng-sîn song-chhòn.',
'uploadvirus' => 'Ke-tóng-on yû pâu-hàm phiang-thu̍k! Siòng-se chhìn-khóng: $1',
'sourcefilename' => 'Kòi-ngièn ke tóng-on miàng',
'destfilename' => 'Muk-phêu tóng-on miàng',
@@ -879,6 +851,7 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'upload-curl-error28-text' => 'Mióng-chham fì-yin sṳ̀-kiên ko-chhòng. Chhiáng kiám-chhà chhṳ́ mióng-chham ke fóng-mun he-feu chṳn-sòng, chai chin-hàng sòng-chhṳ. Ngì khó-nèn sî-yeu chhai mióng-lu fóng-mun khûng-hàn sṳ̀-kiên chai-lòi chin-hàng sòng-chhṳ.',
'license' => 'Su-khièn',
+'license-header' => 'Su-khièn',
'nolicense' => 'Mò-yû sién-thin',
'upload_source_url' => '(Yit-ke yû-háu ke, hí-khó kûng-khôi fóng-mun ke URL)',
'upload_source_file' => '(ngì thien-nó chûng ke tóng-on)',
@@ -894,23 +867,21 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'listfiles_description' => 'Mèu-sut',
# File description page
+'file-anchor-link' => 'Tóng-on',
'filehist' => 'Tóng-on li̍t-sṳ́',
'filehist-help' => 'Tiám-kit ngit-khì/sṳ̀-kiên yî kiám-sṳ tông-sṳ̀ chhut-hien-ko ke ke tóng-on.',
'filehist-deleteone' => 'chhù-thet',
'filehist-current' => 'muk-chhièn',
'filehist-datetime' => 'Ngit-khì/Sṳ̀-kiên',
'filehist-thumb' => 'Sok-thù',
+'filehist-thumbtext' => 'Yî $1-ke suk-thù pán-pún',
'filehist-user' => 'Yung-fu',
'filehist-dimensions' => 'Vì-thu',
'filehist-comment' => 'Chu-kié',
'imagelinks' => 'Tóng-on lièn-kiet',
'linkstoimage' => 'Yî-ha vùn-chông lièn-chiap to pún tóng-on:',
'nolinkstoimage' => 'Mò-yû vùn-chông lièn-chiap to pún tóng-on.',
-'sharedupload' => 'Ke tóng-on he yit-ke khiung-hióng song-chhòn, khó-nèn chhai khì-thâ hong-muk chûng pûn-ngìn yin-yung.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Chhiáng chhâm-cheu $1 yî kié-khôi siong-kôan chṳ̂-liau.',
-'shareduploadwiki-linktext' => 'Tóng-on mèu-sut hong-mien',
-'noimage' => 'Put chhùn-chhai chhṳ́ miàng-chhṳ̂n ke tóng-on, ngì khó-yî $1.',
-'noimage-linktext' => 'song-chhòn kì',
+'sharedupload' => 'Ke tóng-on he yit-ke khiung-hióng song-chhòn, khó-nèn chhai khì-thâ hong-muk chûng pûn-ngìn yin-yung.',
'uploadnewversion-linktext' => 'Song-chhòn tóng-on ke sîn pán-pún',
# File deletion
@@ -954,8 +925,8 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'brokenredirects' => 'Sún-fái ke chhûng-thin hiong-hong',
'brokenredirectstext' => 'Yî-ha ke chhûng-thin hiong-hong chṳ́-hiong-ke he mò chhùn-chhai ke hong-mien:',
-'brokenredirects-edit' => '(phiên-chho)',
-'brokenredirects-delete' => '(Chhù-thet)',
+'brokenredirects-edit' => 'phiên-chho',
+'brokenredirects-delete' => 'Chhù-thet',
'withoutinterwiki' => 'Mò-yû ngî-ngièn lièn-chiap ke vùn-chông',
'withoutinterwiki-summary' => 'Yî-ha ke vùn-chông he hàn-mò ngî-ngièn lièn-chiap to khì-thâ ngî-ngièn pán-pún:',
@@ -1121,7 +1092,7 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'enotif_lastvisited' => 'Kiám-sṳ ngì song-chhṳ fóng-mun heu ke só-yû kiên-kói chhián chhâm-siòng $1.',
'enotif_lastdiff' => 'Kiám-chhà kiên-kói chhiáng chhâm-siòng $1.',
'enotif_anon_editor' => 'ngia̍k-miàng yung-fu $1',
-'enotif_body' => 'Chhîn-oi ke $WATCHINGUSERNAME, $PAGEEDITOR yí-kîn chhai $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}} ke $PAGETITLE vùn-chông, chhiáng-to $PAGETITLE_URL kiám-sṳ siên-chhièn pán-pún. $NEWPAGE phiên-si̍p chak-yeu: $PAGESUMMARY $PAGEMINOREDIT lièn-kiê chhṳ́ phiên-si̍p-chá: email: $PAGEEDITOR_EMAIL pún-chham: $PAGEEDITOR_WIKI chhai ngì fóng-mun chhṳ́-chông chṳ̂-chhièn, chiông-lòi ke kiên-kói vù-nèn hiong ngì thûng-tî. Ngì khó-yî chhûng-sat ngì só-yû kam-sṳ vùn-chông ke thûng-tî phêu-ki. {{SITENAME}} thûng-tî ne-thúng -- yeu kói-pien ngì-ke kam-sṳ lie̍t-péu sat-thin, chhiáng chhâm-siòng {{fullurl:{{ns:special}}:Watchlist/edit}} chin-yit-phu ke pông-chhu: {{fullurl:{{MediaWiki:Helppage}}}}',
+'enotif_body' => 'Chhîn-oi ke $WATCHINGUSERNAME, $PAGEEDITOR yí-kîn chhai $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}} ke $PAGETITLE vùn-chông, chhiáng-to $PAGETITLE_URL kiám-sṳ siên-chhièn pán-pún. $NEWPAGE phiên-si̍p chak-yeu: $PAGESUMMARY $PAGEMINOREDIT lièn-kiê chhṳ́ phiên-si̍p-chá: email: $PAGEEDITOR_EMAIL pún-chham: $PAGEEDITOR_WIKI chhai ngì fóng-mun chhṳ́-chông chṳ̂-chhièn, chiông-lòi ke kiên-kói vù-nèn hiong ngì thûng-tî. Ngì khó-yî chhûng-sat ngì só-yû kam-sṳ vùn-chông ke thûng-tî phêu-ki. {{SITENAME}} thûng-tî ne-thúng -- yeu kói-pien ngì-ke kam-sṳ lie̍t-péu sat-thin, chhiáng chhâm-siòng {{fullurl:{{#special:Watchlist}}/edit}} chin-yit-phu ke pông-chhu: {{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Chhù-thet hong-mien',
@@ -1151,8 +1122,8 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'rollbackfailed' => 'Mò-fap fî-fu̍k',
'cantrollback' => 'Vù-fap fî-fu̍k phiên-cho; chui-heu ke kung-hien-chá he pún vùn-chông ke vì-thu̍k chok-chá.',
'alreadyrolled' => 'Mò-fap fî-fu̍k yù [[User:$2|$2]] ([[User talk:$2|thó-lun]]) chin-hàng ke [[$1]] ke chui-heu phiên-si̍p; khì-thâ ngìn yí-kîn phiên-siá fe̍t-he fî-fu̍k liáu ke-hong. Chui-heu phiên-si̍p-chá: [[User:$3|$3]] ([[User talk:$3|Thó-lun]])。',
-'editcomment' => "Phiên-siá sot-mìn he: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => 'Fî-fu̍k yù [[Special:Contributions/$2|$2]] ([[User talk:$2|tui-fa]]) ke phiên-cho; kiên-kói fì-fu̍k [[User:$1|$1]] ke chui-heu yit-ke pán-pún', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Phiên-siá sot-mìn he: \"''\$1''\"。",
+'revertpage' => 'Fî-fu̍k yù [[Special:Contributions/$2|$2]] ([[User talk:$2|tui-fa]]) ke phiên-cho; kiên-kói fì-fu̍k [[User:$1|$1]] ke chui-heu yit-ke pán-pún',
'sessionfailure' => 'Ngì-ke tên-ngi̍p sṳ-fû yû mun-thì, vi-liáu fòng-chṳ́ sêu-sit pûn làn-chiet, pún-chhṳ chhâu-chok yí-kîn chhí-sêu, chhiáng-on "song-yit-chông" chhùng-sîn chai-ngi̍p.',
# Protect
@@ -1168,7 +1139,6 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
'protectexpiry' => 'Chûng-chṳ́ sṳ̀-kiên',
'protect_expiry_invalid' => 'Sû-ngi̍p ke chûng-chṳ́ sṳ̀-kiên mò-háu.',
'protect_expiry_old' => 'Chûng-chṳ́ sṳ̀-kiên yí-kîn ko-hi.',
-'protect-unchain' => 'Yì-thung khièn-han kié-só',
'protect-text' => "Ngì khó-yî chhai liá-piên chhùng-siû tui vùn-chông '''<nowiki>$1</nowiki>''' ke pó-fu kip-phe̍t.",
'protect-locked-blocked' => "Ngì put-nèn chhai pûn chhà-fûng sṳ̀ kiên-kói pó-fu khi̍p-phe̍t. Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khi̍p-phe̍t:",
'protect-locked-dblock' => "Chhai chṳ̂-liau-khu só-thin sṳ̀ mò-fap kiên-kói pó-fu khi̍p-phe̍t.
@@ -1183,7 +1153,7 @@ Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khi̍p-phe̍t:",
'protect-expiring' => 'Chûng-chṳ́ chhai-yî $1 (UTC)',
'protect-cascade' => 'Lièn-só pó-fu - pún-chông pâu-hàm ke só-yû hong-mien kiûn yit-phîn pó-fu.',
'protect-cantedit' => 'Ngì mò-fap kiên-kói liá-ya̍p ke pó-fu tén-kip, yîn-vi ngì mò khièn-han phiên-sip kì.',
-'protect-expiry-options' => '1 séu-sṳ̀:1 hour, 1 thiên:1 day,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1-ngièn:1 year, yún-kiú:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 séu-sṳ̀:1 hour, 1 thiên:1 day,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1-ngièn:1 year, yún-kiú:infinite',
'restriction-type' => 'Khièn-han:',
'restriction-level' => 'Han-chṳ khi̍p-phe̍t:',
'minimum-size' => 'Chui-séu thai-séu',
@@ -1241,7 +1211,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'contributions-title' => '$1-ke yung-fu kung-hien',
'mycontris' => 'Ngài-ke phiên-siû ki-liu̍k',
'contribsub2' => '$1 ($2) ke kung-hien',
-'nocontribs' => 'Mò-yû chhìm-cháu to fù-ha̍p thi̍t-chṳ̂n ke kiên-kói.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Mò-yû chhìm-cháu to fù-ha̍p thi̍t-chṳ̂n ke kiên-kói.',
'uctop' => '(Chui-sîn siû-thin)',
'month' => 'Chhiùng liá-ke ngie̍t-fun (fe̍t-he kien-chó):',
'year' => 'Chhiùng liá-ke ngièn-fun (fe̍t-he kien-chó):',
@@ -1249,6 +1219,8 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'sp-contributions-newbies' => 'Chak hién-sṳ sîn kien-li̍p chṳ̂ yung-fu ke kung-hien',
'sp-contributions-newbies-sub' => 'Sîn-sú',
'sp-contributions-blocklog' => 'Fûng-kim ki-liu̍k',
+'sp-contributions-talk' => 'Tui-fa',
+'sp-contributions-userrights' => 'Yung-fu khièn-han kón-lî',
'sp-contributions-search' => 'Chhìm-cháu kung-hien ki-liu̍k',
'sp-contributions-username' => 'IP chhô-vi fe̍t-chá yung-fu miàng-chhṳ̂n:',
'sp-contributions-submit' => 'Chhìm-cháu',
@@ -1292,7 +1264,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'ipbenableautoblock' => 'Chhṳ-thung chhà-fûng ke-yung-fu sṳ́-yung-ko ke IP thi-tiám',
'ipbsubmit' => 'Chhà-fûng ke-yung-fu',
'ipbother' => 'Khì-thâ sṳ̀-kiên:',
-'ipboptions' => '2 séu-sṳ̀:2 hours,1 thiên:1 day,3 thiên:3 days,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1 ngièn:1 year,yún-kiú:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 séu-sṳ̀:2 hours,1 thiên:1 day,3 thiên:3 days,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1 ngièn:1 year,yún-kiú:infinite',
'ipbotheroption' => 'khì-thâ',
'ipbotherreason' => 'Khì-thâ lî-yù:',
'ipbhidename' => 'Chhai chhà-fûng ngit-ki, fa̍t-chhiok chhà-fûng lie̍t-péu yî-khi̍p yung-fu lie̍t-péu chûng yún-chhòng yung-fu-miàng.',
@@ -1313,7 +1285,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'ipblocklist-submit' => 'Chhìm-cháu',
'blocklistline' => '$1,$2 kim-fûng $3 ($4)',
'infiniteblock' => 'yún-kiú',
-'expiringblock' => '$1 to-khì',
+'expiringblock' => '$1 $2 to-khì',
'anononlyblock' => 'Han-chṳ ngia̍k-miàng yung-fu.',
'noautoblockblock' => 'Kim-yung chhṳ-thung chhà-fûng',
'createaccountblock' => 'Kim-chṳ́ chhóng-kien chong-ho',
@@ -1385,7 +1357,7 @@ chhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn
'move-watch' => 'Kam-sṳ chhṳ́-chông',
'movepagebtn' => 'Yì-thung vùn-chông',
'pagemovedsub' => 'Yì-thung sṳ̀n-kûng',
-'movepage-moved' => '\'\'\'"$1" yí-kîn pûn yì-thung to "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" yí-kîn pûn yì-thung to "$2"\'\'\'',
'articleexists' => 'Ke miàng-sṳ ke hong-mien yí-kîn chhùn-chhai, fe̍t-chá ngì sién-chet ke miàng-sṳ mò-háu. Chhiáng chai-hi sién yit-ke miàng-sṳ.',
'talkexists' => "'''Hong-mien pún-sṳ̂n yì-thung sṳ̀n-kûng, than-he yù-yî sîn phêu-thì hâ yí-kîn yû tui-fa-hong chhùn-chhai, só-yî tui-fa-hong vù-fap yì-thung. Chhiáng sú-kûng ha̍p-phîn lióng-ke hong-mien'''.",
'movedto' => 'yì-thung to',
@@ -1428,8 +1400,6 @@ Nang-ngoi ngì hí-khó li-yung lièn-kiet thô-chhut tóng-on, yì-yi ngì hí-
'allmessagestext' => 'Liá-piên lie̍t-chhut só-yû hí-khó thin-chṳ ke ne-thúng kie-mien.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => 'Ne-thúng kie-mien kûng-yung chhu-yî kôan-pit chong-thai (wgUseDatabaseMessages)。',
-'allmessagesfilter' => 'Chang-chet péu-tha̍t sṳt ko-li thiàu-khien:',
-'allmessagesmodified' => 'Chṳ́ hién-sṳ kiên-kói ko ke.',
# Thumbnails
'thumbnail-more' => 'Fong-thai',
@@ -1496,6 +1466,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Sêu-chhà liá vùn-sṳ ke ya̍p',
'tooltip-p-logo' => 'Thèu-chông',
'tooltip-n-mainpage' => 'Fóng-mun Thèu Ya̍p',
+'tooltip-n-mainpage-description' => 'Fóng-mun Thèu Ya̍p',
'tooltip-n-portal' => 'Kôan-yî pún kie-va̍k, ngì khó-yî cho-mak-ke, yin-kôi hó-mò cho.',
'tooltip-n-currentevents' => 'Thì-kiûng tông-chhièn sîn-vùn sṳ-khien ke poi-kín chṳ̂-liau',
'tooltip-n-recentchanges' => 'Lie̍t-chhut ke-mióng-chham chûng ke chui-khiûn siû-kói',
@@ -1547,7 +1518,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => '{{SITENAME}} ke ngia̍k-miàng yung-fu',
'siteuser' => '{{SITENAME}} Yung-fu-chá $1',
-'lastmodifiedatby' => 'Chhṳ́-chông yù $3 yî $1 $2 ke chui-heu kiên-kói.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Chhṳ́-chông yù $3 yî $1 $2 ke chui-heu kiên-kói.',
'othercontribs' => 'Chhai $1-ke kûng-chok kî-chhú song.',
'others' => 'khì-thâ',
'siteusers' => '{{SITENAME}} Yung-fu-chá $1',
@@ -1578,6 +1549,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => 'Chhûi-chien sîn-pán hi-khí sṳ́-yung',
'mw_math_mathml' => 'Chhin khó-nèn sṳ́-yung MathML (sṳ-ngiam chûng)',
+# Math errors
+'math_failure' => 'Kié-sak sṳt-phai',
+'math_unknown_error' => 'Mò-tî chho-ngu',
+'math_unknown_function' => 'Mò-tî chhṳ-su',
+'math_lexing_error' => 'ki-fap chho-ngu',
+'math_syntax_error' => 'ngî-fap chho-ngu',
+'math_image_error' => 'PNG chón-von sṳt-phai; chhiáng kiám-chhà he-feu chṳn-khok ôn-chông latex, dvips, gs lâu convert',
+'math_bad_tmpdir' => 'Mò-fap siá-ngi̍p fe̍t-chá kien-li̍p su-ho̍k kûng-sṳt lìm-sṳ̀ muk-liu̍k',
+'math_bad_output' => 'Mò-fap siá-ngi̍p fe̍t-chá kien-li̍p su-ho̍k kûng-sṳt sû-chhut muk-liu̍k',
+'math_notexvc' => 'Mò-fap chṳp-hàng "texvc"; chhiáng chhâm-cheu math/README chin-hàng phi-chṳ.',
+
# Patrolling
'markaspatrolleddiff' => 'Phêu-ki sṳ̀n-vì yí-kîn kiám-chhà',
'markaspatrolledtext' => 'Phêu-ki chhṳ́ vùn-chông sṳ̀n-vì yí-kîn kiám-chhà',
@@ -1639,7 +1621,7 @@ yèn-heu thùng yit-hòng heu-fông ke lièn-chiap chiông-voi pûn sṳ-vì li-
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Yung ngoi-phu chhàng-sṳt phiên-siá chhṳ́ tóng-on',
@@ -1670,7 +1652,7 @@ Email chhòn-sung-yèn fì-yin: $1',
'confirmemail_loggedin' => 'Ngì-ke sin-siông thi-tiám hien-ha yí-kîn pûn khok-ngin.',
'confirmemail_error' => 'Ngì-ke khok-ngin ko-chhàng fat-sên chho-ngu.',
'confirmemail_subject' => '{{SITENAME}} sin-siông thi-tiám khok-ngin',
-'confirmemail_body' => 'Yúng-yû IP thi-tiám $1 ke yung-fu (khó-nèn he ngì) chhai {{SITENAME}} chhóng-chho liáu chong-fu "$2", pin thì-kâu liáu ngì-ke email sin-siông thi-tiám.
+'confirmemail_body' => 'Yúng-yû IP thi-tiám $1 ke yung-fu (khó-nèn he ngì) chhai {{SITENAME}} chhóng-chho liáu chong-fu "$2", pin thì-kâu liáu ngì-ke email sin-siông thi-tiám.
Chhiáng khok-ngin liá-ke chong-fu he su̍k-yî ngì-ke, pin thùng-sṳ̀ khí-yung chhai {{SITENAME}} sông ke email sin-siông kûng-nèn. Chhiáng chhai hi-khí chûng tá-khôi ha-mien ke lièn-kiet: $3
@@ -1742,7 +1724,7 @@ Sòn-chhṳ phêu-chún yi-liau.',
'watchlisttools-raw' => 'Phiên-sip ngièn-sṳ́ kam-sṳ lie̍t-péu',
# Special:Version
-'version' => 'Pán-pún', # Not used as normal message but as header for the special page itself
+'version' => 'Pán-pún',
# Special:FileDuplicateSearch
'fileduplicatesearch-submit' => 'Chhìm-cháu',
diff --git a/languages/messages/MessagesHaw.php b/languages/messages/MessagesHaw.php
index 1ab26252..98da0487 100644
--- a/languages/messages/MessagesHaw.php
+++ b/languages/messages/MessagesHaw.php
@@ -37,28 +37,50 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogout' => array( 'Haʻalele' ),
+ 'Userlogout' => array( 'Haʻalele', 'Haalele' ),
+ 'CreateAccount' => array( 'Kāinoa', 'Kainoa' ),
'Preferences' => array( 'Makemake' ),
- 'Watchlist' => array( 'PapaNānāPono' ),
- 'Recentchanges' => array( 'NāLoliHou' ),
- 'Upload' => array( 'Hoʻohui' ),
+ 'Watchlist' => array( 'PapaNānāPono', 'PapaNanaPono' ),
+ 'Recentchanges' => array( 'NāLoliHou', 'NaLoliHou' ),
+ 'Upload' => array( 'Hoʻouka', 'Hoouka' ),
'Randompage' => array( 'Kaulele' ),
+ 'Shortpages' => array( 'ʻAoʻaoPōkole', 'AoaoPokole' ),
+ 'Longpages' => array( 'ʻAoʻaoLoa', 'AoaoLoa' ),
+ 'Newpages' => array( 'ʻAoʻaoHou', 'AoaoHou' ),
+ 'Ancientpages' => array( 'ʻAoʻaoKahiko', 'AoaoKahiko' ),
+ 'Specialpages' => array( 'PapaNui' ),
+ 'Contributions' => array( 'Haʻawina', 'Haawina' ),
+ 'Emailuser' => array( 'LekaUila' ),
+ 'Movepage' => array( 'HoʻoneʻeʻAoʻao', 'HooneeAoao' ),
+ 'Categories' => array( 'Māhele', 'Mahele' ),
+ 'Mypage' => array( 'KaʻuʻAoʻao', 'KauAoao' ),
+ 'Mytalk' => array( 'KaʻuKūkākūkā', 'KauKukakuka' ),
+ 'Mycontributions' => array( 'KaʻuHaʻawina', 'KauHaawina' ),
+ 'Search' => array( 'Huli' ),
);
$magicWords = array(
- 'currentmonth' => array( '1', 'KĒIAMAHINA', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'KĒIAINOAMAHINA', 'CURRENTMONTHNAME' ),
- 'currentday' => array( '1', 'KĒIALĀ', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'KĒIALĀ2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'KĒIAINOALĀ', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'KĒIAMAKAHIKI', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'KĒIAMANAWA', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'KĒIAHOLA', 'CURRENTHOUR' ),
- 'img_right' => array( '1', 'ʻākau', 'right' ),
+ 'currentmonth' => array( '1', 'KĒIAMAHINA', 'KEIAMAHINA', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'KĒIAINOAMAHINA', 'KEIAINOAMAHINA', 'CURRENTMONTHNAME' ),
+ 'currentday' => array( '1', 'KĒIALĀ', 'KEIALA', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'KĒIALĀ2', 'KEIALA2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'KĒIAINOALĀ', 'KEIAINOALA', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'KĒIAMAKAHIKI', 'KEIAMAKAHIKI', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'KĒIAMANAWA', 'KEIAMANAWA', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'KĒIAHOLA', 'KEIAHOLA', 'CURRENTHOUR' ),
+ 'numberofpages' => array( '1', 'HELUʻAOʻAO', 'HELUAOAO', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'HELUMEA', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'HELUWAIHONA', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'HELUMEAHOʻOHANA', 'HELUMEAHOOHANA', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'HELULOLI', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'INOAʻAOʻAO', 'INOAAOAO', 'PAGENAME' ),
+ 'img_right' => array( '1', 'ʻākau', 'ākau', 'akau', 'right' ),
'img_left' => array( '1', 'hema', 'left' ),
- 'img_none' => array( '1', 'ʻaʻohe', 'none' ),
- 'currentweek' => array( '1', 'KĒIAPULE', 'CURRENTWEEK' ),
- 'language' => array( '0', '#ʻŌLELO', '#LANGUAGE:' ),
+ 'img_none' => array( '1', 'ʻaʻohe', 'aohe', 'none' ),
+ 'img_link' => array( '1', 'loulou=$1', 'link=$1' ),
+ 'currentweek' => array( '1', 'KĒIAPULE', 'KEIAPULE', 'CURRENTWEEK' ),
+ 'language' => array( '0', '#ʻŌLELO', '#ŌLELO', '#OLELO', '#LANGUAGE:' ),
+ 'numberofadmins' => array( '1', 'HELUKAHU', 'NUMBEROFADMINS' ),
);
$messages = array(
@@ -151,25 +173,30 @@ $messages = array(
'category-media-header' => 'Nā pāpaho i loko o ka mahele "$1"',
'category-empty' => "''‘A‘ohe mo‘olelo a me pāpaho o kēia mahele i kēia manawa.''",
'hidden-categories' => '{{PLURAL:$1|Mahele hūnā|Nā mahele hūnā}}',
-'hidden-category-category' => 'Nā mahele hūnā', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Nā mahele hūnā',
'listingcontinuesabbrev' => '(ho‘omau ‘ia)',
'mainpagetext' => "'''Ua pono ka ho‘ouka ‘ana o MediaWiki.'''",
-'about' => 'E pili ana',
-'cancel' => 'Ho‘ōki',
+'about' => 'E pili ana',
+'cancel' => 'Ho‘ōki',
+'moredotdotdot' => 'Hou...',
+'mypage' => 'Ko‘u ‘ao‘ao',
+'mytalk' => 'Ka‘u kūkākūkā',
+'anontalk' => 'Ke kūkākūkā no kēia IP',
+'navigation' => 'Ka hoʻokele ʻana',
+'and' => '&#32;a me',
+
+# Cologne Blue skin
'qbfind' => 'Loa‘a',
'qbedit' => 'E ho‘ololi',
'qbpageoptions' => 'Kēia ‘ao‘ao',
'qbpageinfo' => 'Pō‘aiapili',
'qbmyoptions' => 'Ka‘u mau ‘ao‘ao',
'qbspecialpages' => 'Nā ‘ao‘ao kūikawā',
-'moredotdotdot' => 'Hou...',
-'mypage' => 'Ko‘u ‘ao‘ao',
-'mytalk' => 'Ka‘u kūkākūkā',
-'anontalk' => 'Ke kūkākūkā no kēia IP',
-'navigation' => 'Ka hoʻokele ʻana',
-'and' => '&#32;a me',
+
+# Vector skin
+'vector-view-edit' => 'E hoʻololi',
'errorpagetitle' => 'Hewa',
'returnto' => 'Ho‘i iā $1.',
@@ -215,7 +242,7 @@ $messages = array(
'otherlanguages' => 'Ma nā leo ʻē aʻe',
'redirectedfrom' => '(Hoʻoili mai $1)',
'redirectpagesub' => '‘Ao‘ao e alaka‘i ai',
-'lastmodifiedat' => 'Ua hoʻololi ʻia kēia ʻaoʻao ma ka lā $1, i ka manawa $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ua hoʻololi ʻia kēia ʻaoʻao ma ka lā $1, i ka manawa $2.',
'protectedpage' => '‘Ao‘ao ho‘omalu',
'jumpto' => 'Lele i:',
'jumptonavigation' => 'ka ho‘okele ‘ana',
@@ -224,7 +251,6 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'No {{SITENAME}}',
'aboutpage' => 'Project:E pili ana',
-'copyrightpagename' => '{{SITENAME}} palapala ho‘okuleana',
'copyrightpage' => '{{ns:project}}:Palapala ho‘okuleana',
'currentevents' => 'Ka nū hou',
'currentevents-url' => 'Project:Ka nū hou',
@@ -293,54 +319,42 @@ $2',
'ns-specialprotected' => '‘A‘ole hiki ke ho‘opololei i nā ‘ao‘ao kūikawā',
# Login and logout pages
-'logouttitle' => 'E haʻalele ka mea hoʻohana',
-'welcomecreation' => '== E komo mai, $1! ==
+'welcomecreation' => '== E komo mai, $1! ==
Ua hoʻokumu ʻia kāu moʻokāki.
Mai poina e hoʻololi i [[Special:Preferences|kāu makemake ma {{SITENAME}}]].',
-'loginpagetitle' => 'ʻEʻe mea hoʻohana',
-'yourname' => "Inoa mea ho'ohana",
-'yourpassword' => 'ʻŌlelo hūnā:',
-'yourpasswordagain' => "Hua'ōlelo huna hou",
-'remembermypassword' => 'Hoʻomanaʻo iaʻu',
-'login' => 'ʻEʻe',
-'nav-login-createaccount' => 'ʻEʻe / E kāinoa',
-'loginprompt' => 'Pono ʻoe e hoʻā i nā makana (cookies) no ka ʻeʻe ʻana i {{SITENAME}}.',
-'userlogin' => 'ʻEʻe / E kāinoa',
-'logout' => 'E haʻalele',
-'userlogout' => 'E haʻalele',
-'notloggedin' => 'Mai ‘e‘e',
-'nologin' => "ʻAʻohe āu moʻokāki? '''$1'''.",
-'nologinlink' => 'E kāinoa',
-'createaccount' => 'E hana',
-'gotaccount' => "He moʻokāki kāu? '''$1'''.",
-'gotaccountlink' => 'ʻEʻe',
-'createaccountmail' => 'no ka leka uila',
-'userexists' => 'Lilo ka inoa mea ho‘ohana.
+'yourname' => "Inoa mea ho'ohana",
+'yourpassword' => 'ʻŌlelo hūnā:',
+'yourpasswordagain' => "Hua'ōlelo huna hou",
+'remembermypassword' => 'Hoʻomanaʻo iaʻu',
+'login' => 'ʻEʻe',
+'nav-login-createaccount' => 'ʻEʻe / E kāinoa',
+'loginprompt' => 'Pono ʻoe e hoʻā i nā makana (cookies) no ka ʻeʻe ʻana i {{SITENAME}}.',
+'userlogin' => 'ʻEʻe / E kāinoa',
+'logout' => 'E haʻalele',
+'userlogout' => 'E haʻalele',
+'notloggedin' => 'Mai ‘e‘e',
+'nologin' => "ʻAʻohe āu moʻokāki? '''$1'''.",
+'nologinlink' => 'E kāinoa',
+'createaccount' => 'E hana',
+'gotaccount' => "He moʻokāki kāu? '''$1'''.",
+'gotaccountlink' => 'ʻEʻe',
+'createaccountmail' => 'no ka leka uila',
+'userexists' => 'Lilo ka inoa mea ho‘ohana.
E koho i kekahi inoa, ke ‘olu‘olu.',
-'youremail' => 'Leka uila:',
-'username' => "Inoa mea ho'ohana:",
-'yourrealname' => 'Inoa maoli:',
-'yourlanguage' => 'Kou ʻōlelo:',
-'yournick' => 'Inoa kapakapa:',
-'yourgender' => 'Keka:',
-'gender-male' => 'Kāne',
-'gender-female' => 'Wahine',
-'email' => 'Leka uila',
-'prefs-help-email-required' => 'Koina ka leka uila.',
-'loginsuccesstitle' => 'ʻEʻe kūleʻa',
-'loginsuccess' => "'''ʻEʻe ʻia ʻoe, ʻo \"\$1\", iā {{SITENAME}}.'''",
-'nouserspecified' => 'Pono ʻoe e kāhuakomo i ka ʻōlelo ʻeʻe.',
-'wrongpassword' => 'Hewa ka ʻōlelo hūnā.
+'loginsuccesstitle' => 'ʻEʻe kūleʻa',
+'loginsuccess' => "'''ʻEʻe ʻia ʻoe, ʻo \"\$1\", iā {{SITENAME}}.'''",
+'nouserspecified' => 'Pono ʻoe e kāhuakomo i ka ʻōlelo ʻeʻe.',
+'wrongpassword' => 'Hewa ka ʻōlelo hūnā.
E ʻoluʻolu, e kūlia hou.',
-'wrongpasswordempty' => 'Hakahaka ka ʻōlelo hūnā.
+'wrongpasswordempty' => 'Hakahaka ka ʻōlelo hūnā.
E ʻoluʻolu, e kūlia hou.',
-'mailmypassword' => 'Leka uila i ka huaʻōlelo hūnā hou',
-'passwordremindertitle' => "He 'ōlelo hūnā kūikawā no {{SITENAME}}",
-'emailauthenticated' => 'Ua hō‘oia ‘ia kāu leka uila ma ka lā $2 i ka hola $3.',
-'emailconfirmlink' => 'E hō‘oia i kāu leka uila',
-'accountcreated' => 'Ua lilo ‘ia ka mea ho‘ohana',
-'accountcreatedtext' => 'Ua lilo ‘ia ka mea ho‘ohana no $1.',
-'loginlanguagelabel' => "Kou 'ōlelo: $1",
+'mailmypassword' => 'Leka uila i ka huaʻōlelo hūnā hou',
+'passwordremindertitle' => "He 'ōlelo hūnā kūikawā no {{SITENAME}}",
+'emailauthenticated' => 'Ua hō‘oia ‘ia kāu leka uila ma ka lā $2 i ka hola $3.',
+'emailconfirmlink' => 'E hō‘oia i kāu leka uila',
+'accountcreated' => 'Ua lilo ‘ia ka mea ho‘ohana',
+'accountcreatedtext' => 'Ua lilo ‘ia ka mea ho‘ohana no $1.',
+'loginlanguagelabel' => "Kou 'ōlelo: $1",
# Password reset dialog
'newpassword' => 'ʻŌlelo hūnā hou:',
@@ -414,14 +428,13 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
'last' => 'hope',
'page_first' => 'mua',
'page_last' => 'hope',
-'deletedrev' => '[ua kāpae ‘ia]',
'histfirst' => 'Kahiko loa',
'histlast' => 'Hou loa',
'historysize' => '({{PLURAL:$1|1 ‘ai|$1 ‘ai}})',
'historyempty' => '(‘ole)',
# Revision feed
-'history-feed-item-nocomment' => '$1 ma $2', # user at time
+'history-feed-item-nocomment' => '$1 ma $2',
# Revision deletion
'rev-delundel' => 'hō‘ike/hūnā',
@@ -436,12 +449,10 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
'searchresulttext' => 'No kekahi ʻike hou aku e pili ana i ka huli ʻana iā {{SITENAME}}, kele i [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ua huli ʻoe no \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|nā ʻaoʻao a pau i hoʻomaka me "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|nā ʻaoʻao a pau e loulou ai i "$1"]])',
'searchsubtitleinvalid' => "Ua huli ʻoe iā '''$1'''",
-'noexactmatch' => "'''‘A‘ohe ʻaoʻao me ka inoa \"\$1\".'''
-Hiki iā ‘oe ke [[:\$1|hoʻokumu i kēia ‘ao‘ao]].",
'notitlematches' => 'ʻAʻohe inoa ʻaoʻao e like me ka huli ʻana',
-'prevn' => '$1 ma mua',
-'nextn' => '$1 ma hope',
-'viewprevnext' => 'Nānā i nā ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} ma mua',
+'nextn' => '{{PLURAL:$1|$1}} ma hope',
+'viewprevnext' => 'Nānā i nā ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Papa kuhikuhi',
'search-result-size' => '$1 ({{PLURAL:$2|1 huaʻōlelo|$2 huaʻōlelo}})',
'search-section' => '(māhele $1)',
@@ -455,18 +466,27 @@ Hiki iā ‘oe ke [[:\$1|hoʻokumu i kēia ‘ao‘ao]].",
'powersearch-field' => 'Huli no',
# Preferences page
-'preferences' => 'Kaʻu makemake',
-'mypreferences' => 'Ka‘u makemake',
-'changepassword' => 'E loli i ka palapala hua‘ōlelo',
-'skin-preview' => 'Nāmua',
-'math' => 'Makemakika',
-'prefs-rc' => 'Nā loli hou',
-'searchresultshead' => 'Huli',
-'savedprefs' => 'Ua mālama ‘ia kāu makemake',
-'default' => 'paʻamau',
+'preferences' => 'Kaʻu makemake',
+'mypreferences' => 'Ka‘u makemake',
+'changepassword' => 'E loli i ka palapala hua‘ōlelo',
+'skin-preview' => 'Nāmua',
+'prefs-rc' => 'Nā loli hou',
+'searchresultshead' => 'Huli',
+'savedprefs' => 'Ua mālama ‘ia kāu makemake',
+'default' => 'paʻamau',
+'youremail' => 'Leka uila:',
+'username' => "Inoa mea ho'ohana:",
+'yourrealname' => 'Inoa maoli:',
+'yourlanguage' => 'Kou ʻōlelo:',
+'yournick' => 'Inoa kapakapa:',
+'yourgender' => 'Keka:',
+'gender-male' => 'Kāne',
+'gender-female' => 'Wahine',
+'email' => 'Leka uila',
+'prefs-help-email-required' => 'Koina ka leka uila.',
# User rights
-'userrights' => 'Ho‘oponopono ‘ana o nā kuleana', # Not used as normal message but as header for the special page itself
+'userrights' => 'Ho‘oponopono ‘ana o nā kuleana',
# Groups
'group-sysop' => 'Nā kahu',
@@ -515,6 +535,7 @@ Hiki iā ‘oe ke [[:\$1|hoʻokumu i kēia ‘ao‘ao]].",
'listfiles_name' => 'Inoa',
# File description page
+'file-anchor-link' => 'Waihona',
'filehist' => 'Mo‘olelo o ka waihona',
'filehist-current' => 'o kēia manawa',
'filehist-datetime' => 'Manawa',
@@ -534,8 +555,8 @@ Hiki iā ‘oe ke [[:\$1|hoʻokumu i kēia ‘ao‘ao]].",
# Statistics
'statistics' => 'Papa helu',
-'brokenredirects-edit' => '(e ho‘ololi)',
-'brokenredirects-delete' => '(e kāpae)',
+'brokenredirects-edit' => 'e ho‘ololi',
+'brokenredirects-delete' => 'e kāpae',
'withoutinterwiki-submit' => 'Hō‘ike',
@@ -629,7 +650,7 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
'protect-default' => 'ʻAe nā mea hoʻohana a pau',
'protect-level-sysop' => 'Nā kahu wale nō',
'protect-cantedit' => 'ʻAʻole hiki iā ʻoe ke hoʻololi i nā kūlana māmalu o kēia ʻaoʻao, no ka mea, ʻaʻohe āu ʻae no ka hoʻololi ʻana.',
-'protect-expiry-options' => '1 hola:1 hour,1 lā:1 day,1 pule:1 week,2 pule:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 makahiki:1 year,pau ʻole:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hola:1 hour,1 lā:1 day,1 pule:1 week,2 pule:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 makahiki:1 year,pau ʻole:infinite',
'restriction-type' => 'ʻAe ʻia:',
# Restrictions (nouns)
@@ -652,8 +673,11 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
'month' => 'Mai ka mahina (me mua):',
'year' => 'Mai ka makahiki (me mua):',
-'sp-contributions-search' => 'Huli no nā haʻawina',
-'sp-contributions-submit' => 'Huli',
+'sp-contributions-deleted' => 'Nā ha‘awina o ka inoa mea ho‘ohana i kāpae ‘ia ai',
+'sp-contributions-talk' => 'Kūkākūkā',
+'sp-contributions-userrights' => 'Ho‘oponopono ‘ana o nā kuleana',
+'sp-contributions-search' => 'Huli no nā haʻawina',
+'sp-contributions-submit' => 'Huli',
# What links here
'whatlinkshere' => 'Nā mea e loulou iho ai',
@@ -671,7 +695,7 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
'ipbreason' => 'Kumu:',
'ipbsubmit' => 'E ke‘a i kēia mea ho‘ohana',
'ipbother' => 'ʻĒ aʻe manawa:',
-'ipboptions' => '2 hola:2 hours,1 lā:1 day,3 lā:3 days,1 pule:1 week,2 pule:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 makahiki:1 year,pau ʻole:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hola:2 hours,1 lā:1 day,3 lā:3 days,1 pule:1 week,2 pule:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 makahiki:1 year,pau ʻole:infinite',
'badipaddress' => 'Mana ‘ole ka wahi noho IP',
'ipblocklist-submit' => 'Huli',
'infiniteblock' => 'pau ʻole',
@@ -687,7 +711,7 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
'move-watch' => 'E nānā pono i kēia mea',
'movepagebtn' => 'Hoʻoneʻe i ka ʻaoʻao',
'pagemovedsub' => 'Kūleʻa ka hoʻoneʻe ʻana',
-'movepage-moved' => '\'\'\'Ua hoʻoneʻe ʻia ʻo "$1" iā "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Ua hoʻoneʻe ʻia ʻo "$1" iā "$2"\'\'\'',
'1movedto2' => 'Ua hoʻoneʻe ʻo [[$1]] iā [[$2]]',
'movereason' => 'Kumu:',
'delete_and_move' => 'E kāpae a e ho‘ololi i ka inoa',
@@ -706,44 +730,45 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
'thumbnail-more' => 'ho‘onui',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Kāu inoa mea ho‘ohana',
-'tooltip-pt-mytalk' => 'Kāu ‘aoʻao ʻōlelo',
-'tooltip-pt-preferences' => 'ka‘u makemake',
-'tooltip-pt-watchlist' => 'Ka papa o nā ʻaoʻao o kou nānā ʻana no nā loli',
-'tooltip-pt-mycontris' => 'Kāu mau ha‘awina',
-'tooltip-pt-login' => 'Pai ‘ia ‘oe e ‘e‘e, akā, ‘a‘ole ia he koina',
-'tooltip-pt-logout' => 'E ha‘alele',
-'tooltip-ca-talk' => 'Kūkākūkā e pili ana i kēia ‘ao‘ao',
-'tooltip-ca-edit' => 'Hiki iā ‘oe ke ho‘ololi i kēia ‘ao‘ao. Ma mua o ka mālama ʻia ʻana, e ho‘ohana i ke pihi nāmua, ke ‘olu‘olu.',
-'tooltip-ca-viewsource' => 'Pale ʻia kēia ʻaoʻao.
+'tooltip-pt-userpage' => 'Kāu inoa mea ho‘ohana',
+'tooltip-pt-mytalk' => 'Kāu ‘aoʻao ʻōlelo',
+'tooltip-pt-preferences' => 'ka‘u makemake',
+'tooltip-pt-watchlist' => 'Ka papa o nā ʻaoʻao o kou nānā ʻana no nā loli',
+'tooltip-pt-mycontris' => 'Kāu mau ha‘awina',
+'tooltip-pt-login' => 'Pai ‘ia ‘oe e ‘e‘e, akā, ‘a‘ole ia he koina',
+'tooltip-pt-logout' => 'E ha‘alele',
+'tooltip-ca-talk' => 'Kūkākūkā e pili ana i kēia ‘ao‘ao',
+'tooltip-ca-edit' => 'Hiki iā ‘oe ke ho‘ololi i kēia ‘ao‘ao. Ma mua o ka mālama ʻia ʻana, e ho‘ohana i ke pihi nāmua, ke ‘olu‘olu.',
+'tooltip-ca-viewsource' => 'Pale ʻia kēia ʻaoʻao.
Hiki iā ʻoe ke ʻikena i kāna molekumu.',
-'tooltip-ca-history' => 'Ko kēia ʻaoʻao mau kāmua hope',
-'tooltip-ca-protect' => 'Ho‘omalu i keia ‘ao‘ao',
-'tooltip-ca-delete' => 'E kāpae i kēia mo‘olelo',
-'tooltip-ca-move' => 'E hoʻoneʻe i kēia ʻaoʻao',
-'tooltip-ca-watch' => 'E nānā pono i kēia mea',
-'tooltip-search' => 'Huli iā {{SITENAME}}',
-'tooltip-search-go' => 'Kele i kekahi ʻaoʻao me kēia inoa inā hiki ke loaʻa',
-'tooltip-search-fulltext' => 'Huli i nā ʻaoʻao no kēia kikokikona',
-'tooltip-p-logo' => 'Kele i ka papa kinohi',
-'tooltip-n-mainpage' => 'Kele i ka papa kinohi',
-'tooltip-n-portal' => 'E pili ana ka pāhana, nā hana hiki, nā wahi no ka loaʻa ʻana',
-'tooltip-n-currentevents' => 'ʻIke i nā nū hou',
-'tooltip-n-recentchanges' => 'Nā loli hou ma ka wiki',
-'tooltip-n-randompage' => 'Hōʻike kekahi ʻaoʻao kaulele',
-'tooltip-n-help' => 'Ka wahi e kōkua ai iā ‘oe',
-'tooltip-t-whatlinkshere' => 'Nā ‘ao‘ao a pau i loulou mai ai',
-'tooltip-t-emailuser' => 'Leka uila i kēia mea hoʻohana',
-'tooltip-t-upload' => 'Ho‘ouka i nā waihona',
-'tooltip-t-specialpages' => 'Papa inoa o nā ʻaoʻao nui apau',
-'tooltip-t-print' => 'Mana paʻi pono o kēia ʻaoʻao',
-'tooltip-t-permalink' => 'Loulou paʻa no kēia kāmua o ka ʻaoʻao',
-'tooltip-ca-nstab-special' => 'He papa nui kēia; ʻaʻole hiki iā ʻoe ke hoʻololi',
-'tooltip-ca-nstab-project' => 'Nānā i ka ‘ao‘ao papahana',
-'tooltip-ca-nstab-help' => 'Nānaina i ka ʻaoʻao kōkua',
-'tooltip-minoredit' => 'Wae i kēia hoʻopololei me he hoʻopololei iki',
-'tooltip-save' => 'Mālama i kāu ho‘opololei',
-'tooltip-watch' => 'E nānā pono i kēia mea',
+'tooltip-ca-history' => 'Ko kēia ʻaoʻao mau kāmua hope',
+'tooltip-ca-protect' => 'Ho‘omalu i keia ‘ao‘ao',
+'tooltip-ca-delete' => 'E kāpae i kēia mo‘olelo',
+'tooltip-ca-move' => 'E hoʻoneʻe i kēia ʻaoʻao',
+'tooltip-ca-watch' => 'E nānā pono i kēia mea',
+'tooltip-search' => 'Huli iā {{SITENAME}}',
+'tooltip-search-go' => 'Kele i kekahi ʻaoʻao me kēia inoa inā hiki ke loaʻa',
+'tooltip-search-fulltext' => 'Huli i nā ʻaoʻao no kēia kikokikona',
+'tooltip-p-logo' => 'Kele i ka papa kinohi',
+'tooltip-n-mainpage' => 'Kele i ka papa kinohi',
+'tooltip-n-mainpage-description' => 'Kele i ka papa kinohi',
+'tooltip-n-portal' => 'E pili ana ka pāhana, nā hana hiki, nā wahi no ka loaʻa ʻana',
+'tooltip-n-currentevents' => 'ʻIke i nā nū hou',
+'tooltip-n-recentchanges' => 'Nā loli hou ma ka wiki',
+'tooltip-n-randompage' => 'Hōʻike kekahi ʻaoʻao kaulele',
+'tooltip-n-help' => 'Ka wahi e kōkua ai iā ‘oe',
+'tooltip-t-whatlinkshere' => 'Nā ‘ao‘ao a pau i loulou mai ai',
+'tooltip-t-emailuser' => 'Leka uila i kēia mea hoʻohana',
+'tooltip-t-upload' => 'Ho‘ouka i nā waihona',
+'tooltip-t-specialpages' => 'Papa inoa o nā ʻaoʻao nui apau',
+'tooltip-t-print' => 'Mana paʻi pono o kēia ʻaoʻao',
+'tooltip-t-permalink' => 'Loulou paʻa no kēia kāmua o ka ʻaoʻao',
+'tooltip-ca-nstab-special' => 'He papa nui kēia; ʻaʻole hiki iā ʻoe ke hoʻololi',
+'tooltip-ca-nstab-project' => 'Nānā i ka ‘ao‘ao papahana',
+'tooltip-ca-nstab-help' => 'Nānaina i ka ʻaoʻao kōkua',
+'tooltip-minoredit' => 'Wae i kēia hoʻopololei me he hoʻopololei iki',
+'tooltip-save' => 'Mālama i kāu ho‘opololei',
+'tooltip-watch' => 'E nānā pono i kēia mea',
# Media information
'show-big-image' => 'Miomio piha',
diff --git a/languages/messages/MessagesHe.php b/languages/messages/MessagesHe.php
index d436843d..9b40efaa 100644
--- a/languages/messages/MessagesHe.php
+++ b/languages/messages/MessagesHe.php
@@ -8,6 +8,7 @@
* @file
*
* @author Agbad
+ * @author Ijon
* @author Rotem Dan (July 2003)
* @author Rotem Liss (March 2006 on)
* @author Rotemliss
@@ -63,144 +64,149 @@ $bookstoreList = array(
);
$magicWords = array(
- 'redirect' => array( 0, '#הפניה', '#REDIRECT' ),
- 'notoc' => array( 0, '__ללא_תוכן_עניינים__', '__ללא_תוכן__', '__NOTOC__' ),
- 'nogallery' => array( 0, '__ללא_גלריה__', '__NOGALLERY__' ),
- 'forcetoc' => array( 0, '__חייב_תוכן_עניינים__', '__חייב_תוכן__', '__FORCETOC__' ),
- 'toc' => array( 0, '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
- 'noeditsection' => array( 0, '__ללא_עריכה__', '__NOEDITSECTION__' ),
- 'noheader' => array( 0, '__ללא_כותרת__', '__NOHEADER__' ),
- 'currentmonth' => array( 1, 'חודש נוכחי', 'CURRENTMONTH' ),
- 'currentmonthname' => array( 1, 'שם חודש נוכחי', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( 1, 'שם חודש נוכחי קניין', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( 1, 'קיצור חודש נוכחי', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( 1, 'יום נוכחי', 'CURRENTDAY' ),
- 'currentday2' => array( 1, 'יום נוכחי 2', 'CURRENTDAY2' ),
- 'currentdayname' => array( 1, 'שם יום נוכחי', 'CURRENTDAYNAME' ),
- 'currentyear' => array( 1, 'שנה נוכחית', 'CURRENTYEAR' ),
- 'currenttime' => array( 1, 'שעה נוכחית', 'CURRENTTIME' ),
- 'currenthour' => array( 1, 'שעות נוכחיות', 'CURRENTHOUR' ),
- 'localmonth' => array( 1, 'חודש מקומי', 'LOCALMONTH' ),
- 'localmonthname' => array( 1, 'שם חודש מקומי', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( 1, 'שם חודש מקומי קניין', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( 1, 'קיצור חודש מקומי', 'LOCALMONTHABBREV' ),
- 'localday' => array( 1, 'יום מקומי', 'LOCALDAY' ),
- 'localday2' => array( 1, 'יום מקומי 2', 'LOCALDAY2' ),
- 'localdayname' => array( 1, 'שם יום מקומי', 'LOCALDAYNAME' ),
- 'localyear' => array( 1, 'שנה מקומית', 'LOCALYEAR' ),
- 'localtime' => array( 1, 'שעה מקומית', 'LOCALTIME' ),
- 'localhour' => array( 1, 'שעות מקומיות', 'LOCALHOUR' ),
- 'numberofpages' => array( 1, 'מספר דפים כולל', 'מספר דפים', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( 1, 'מספר ערכים', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( 1, 'מספר קבצים', 'NUMBEROFFILES' ),
- 'numberofusers' => array( 1, 'מספר משתמשים', 'NUMBEROFUSERS' ),
- 'numberofactiveusers' => array( 1, 'מספר משתמשים פעילים', 'NUMBEROFACTIVEUSERS' ),
- 'numberofedits' => array( 1, 'מספר עריכות', 'NUMBEROFEDITS' ),
- 'numberofviews' => array( 1, 'מספר צפיות', 'NUMBEROFVIEWS' ),
- 'pagename' => array( 1, 'שם הדף', 'PAGENAME' ),
- 'pagenamee' => array( 1, 'שם הדף מקודד', 'PAGENAMEE' ),
- 'namespace' => array( 1, 'מרחב השם', 'NAMESPACE' ),
- 'namespacee' => array( 1, 'מרחב השם מקודד', 'NAMESPACEE' ),
- 'talkspace' => array( 1, 'מרחב השיחה', 'TALKSPACE' ),
- 'talkspacee' => array( 1, 'מרחב השיחה מקודד', 'TALKSPACEE' ),
- 'subjectspace' => array( 1, 'מרחב הנושא', 'מרחב הערכים', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( 1, 'מרחב הנושא מקודד', 'מרחב הערכים מקודד', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( 1, 'שם הדף המלא', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( 1, 'שם הדף המלא מקודד', 'FULLPAGENAMEE' ),
- 'subpagename' => array( 1, 'שם דף המשנה', 'SUBPAGENAME' ),
- 'subpagenamee' => array( 1, 'שם דף המשנה מקודד', 'SUBPAGENAMEE' ),
- 'basepagename' => array( 1, 'שם דף הבסיס', 'BASEPAGENAME' ),
- 'basepagenamee' => array( 1, 'שם דף הבסיס מקודד', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( 1, 'שם דף השיחה', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( 1, 'שם דף השיחה מקודד', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( 1, 'שם דף הנושא', 'שם הערך', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( 1, 'שם דף הנושא מקודד', 'שם הערך מקודד', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( 0, 'הכללה:', 'MSG:' ),
- 'subst' => array( 0, 'ס:', 'SUBST:' ),
- 'msgnw' => array( 0, 'הכללת מקור', 'MSGNW:' ),
- 'img_thumbnail' => array( 1, 'ממוזער', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( 1, 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1'),
- 'img_right' => array( 1, 'ימין', 'right' ),
- 'img_left' => array( 1, 'שמאל', 'left' ),
- 'img_none' => array( 1, 'ללא', 'none' ),
- 'img_width' => array( 1, '$1px', '$1px' ),
- 'img_center' => array( 1, 'מרכז', 'center', 'centre' ),
- 'img_framed' => array( 1, 'ממוסגר', 'מסגרת', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( 1, 'לא ממוסגר', 'ללא מסגרת', 'frameless' ),
- 'img_page' => array( 1, 'דף=$1', 'דף $1', 'page=$1', 'page $1' ),
- 'img_upright' => array( 1, 'ימין למעלה', 'ימין למעלה=$1', 'ימין למעלה $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( 1, 'גבולות', 'גבול', 'border' ),
- 'img_baseline' => array( 1, 'שורת הבסיס', 'baseline' ),
- 'img_sub' => array( 1, 'תחתי', 'sub' ),
- 'img_super' => array( 1, 'עילי', 'super', 'sup' ),
- 'img_top' => array( 1, 'למעלה', 'top' ),
- 'img_text_top' => array( 1, 'בראש הטקסט', 'text-top' ),
- 'img_middle' => array( 1, 'באמצע', 'middle' ),
- 'img_bottom' => array( 1, 'למטה', 'bottom' ),
- 'img_text_bottom' => array( 1, 'בתחתית הטקסט', 'text-bottom' ),
- 'img_link' => array( 1, 'קישור=$1', 'link=$1' ),
- 'img_alt' => array( 1, 'טקסט=$1', 'alt=$1' ),
- 'int' => array( 0, 'הודעה:', 'INT:' ),
- 'sitename' => array( 1, 'שם האתר', 'SITENAME' ),
- 'ns' => array( 0, 'מרחב שם:', 'NS:' ),
- 'localurl' => array( 0, 'כתובת יחסית:', 'LOCALURL:' ),
- 'localurle' => array( 0, 'כתובת יחסית מקודד:', 'LOCALURLE:' ),
- 'server' => array( 0, 'כתובת השרת', 'שרת', 'SERVER' ),
- 'servername' => array( 0, 'שם השרת', 'SERVERNAME' ),
- 'scriptpath' => array( 0, 'נתיב הקבצים', 'SCRIPTPATH' ),
- 'grammar' => array( 0, 'דקדוק:', 'GRAMMAR:' ),
- 'gender' => array( 0, 'מגדר:', 'GENDER:' ),
- 'notitleconvert' => array( 0, '__ללא_המרת_כותרת__', '__NOTITLECONVERT__', '__NOTC__'),
- 'nocontentconvert' => array( 0, '__ללא_המרת_תוכן__', '__NOCONTENTCONVERT__', '__NOCC__'),
- 'currentweek' => array( 1, 'שבוע נוכחי', 'CURRENTWEEK' ),
- 'currentdow' => array( 1, 'מספר יום נוכחי', 'CURRENTDOW' ),
- 'localweek' => array( 1, 'שבוע מקומי', 'LOCALWEEK' ),
- 'localdow' => array( 1, 'מספר יום מקומי', 'LOCALDOW' ),
- 'revisionid' => array( 1, 'מזהה גרסה', 'REVISIONID' ),
- 'revisionday' => array( 1, 'יום גרסה', 'REVISIONDAY' ),
- 'revisionday2' => array( 1, 'יום גרסה 2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( 1, 'חודש גרסה', 'REVISIONMONTH' ),
- 'revisionyear' => array( 1, 'שנת גרסה', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( 1, 'זמן גרסה', 'REVISIONTIMESTAMP' ),
- 'revisionuser' => array( 1, 'כותב גרסה', 'REVISIONUSER' ),
- 'plural' => array( 0, 'רבים:', 'PLURAL:' ),
- 'fullurl' => array( 0, 'כתובת מלאה:', 'FULLURL:' ),
- 'fullurle' => array( 0, 'כתובת מלאה מקודד:', 'FULLURLE:' ),
- 'lcfirst' => array( 0, 'אות ראשונה קטנה:', 'LCFIRST:' ),
- 'ucfirst' => array( 0, 'אות ראשונה גדולה:', 'UCFIRST:' ),
- 'lc' => array( 0, 'אותיות קטנות:', 'LC:' ),
- 'uc' => array( 0, 'אותיות גדולות:', 'UC:' ),
- 'raw' => array( 0, 'ללא עיבוד:', 'RAW:' ),
- 'displaytitle' => array( 1, 'כותרת תצוגה', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( 1, 'ללא פסיק', 'R' ),
- 'newsectionlink' => array( 1, '__יצירת_הערה__', '__NEWSECTIONLINK__' ),
- 'nonewsectionlink' => array( 1, '__ללא_יצירת_הערה__', '__NONEWSECTIONLINK__' ),
- 'currentversion' => array( 1, 'גרסה נוכחית', 'CURRENTVERSION' ),
- 'urlencode' => array( 0, 'נתיב מקודד:', 'URLENCODE:' ),
- 'anchorencode' => array( 0, 'עוגן מקודד:', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( 1, 'זמן נוכחי', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( 1, 'זמן מקומי', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( 1, 'סימן כיווניות', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( 0, '#שפה:', '#LANGUAGE:' ),
- 'contentlanguage' => array( 1, 'שפת תוכן', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( 1, 'דפים במרחב השם:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( 1, 'מספר מפעילים', 'NUMBEROFADMINS' ),
- 'formatnum' => array( 0, 'עיצוב מספר', 'FORMATNUM' ),
- 'padleft' => array( 0, 'ריפוד משמאל', 'PADLEFT' ),
- 'padright' => array( 0, 'ריפוד מימין', 'PADRIGHT' ),
- 'special' => array( 0, 'מיוחד', 'special' ),
- 'defaultsort' => array( 1, 'מיון רגיל:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( 0, 'נתיב לקובץ:', 'FILEPATH:' ),
- 'tag' => array( 0, 'תגית', 'tag' ),
- 'hiddencat' => array( 1, '__קטגוריה_מוסתרת__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( 1, 'דפים בקטגוריה', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( 1, 'גודל דף', 'PAGESIZE' ),
- 'index' => array( 1, '__לחיפוש__', '__INDEX__' ),
- 'noindex' => array( 1, '__לא_לחיפוש__', '__NOINDEX__' ),
- 'numberingroup' => array( 1, 'מספר בקבוצה', 'NUMBERINGROUP', 'NUMINGROUP' ),
- 'staticredirect' => array( 1, '__הפניה_קבועה__', '__STATICREDIRECT__' ),
- 'protectionlevel' => array( 1, 'רמת הגנה', 'PROTECTIONLEVEL' ),
- 'formatdate' => array( 0, 'עיצוב תאריך', 'formatdate', 'dateformat' ),
+ 'redirect' => array( '0', '#הפניה', '#REDIRECT' ),
+ 'notoc' => array( '0', '__ללא_תוכן_עניינים__', '__ללא_תוכן__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__ללא_גלריה__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__חייב_תוכן_עניינים__', '__חייב_תוכן__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__ללא_עריכה__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__ללא_כותרת__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'חודש נוכחי', 'חודש נוכחי 2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'חודש נוכחי 1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'שם חודש נוכחי', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'שם חודש נוכחי קניין', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'קיצור חודש נוכחי', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'יום נוכחי', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'יום נוכחי 2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'שם יום נוכחי', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'שנה נוכחית', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'שעה נוכחית', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'שעות נוכחיות', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'חודש מקומי', 'חודש מקומי 2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'חודש מקומי 1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'שם חודש מקומי', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'שם חודש מקומי קניין', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'קיצור חודש מקומי', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'יום מקומי', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'יום מקומי 2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'שם יום מקומי', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'שנה מקומית', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'שעה מקומית', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'שעות מקומיות', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'מספר דפים כולל', 'מספר דפים', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'מספר ערכים', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'מספר קבצים', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'מספר משתמשים', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'מספר משתמשים פעילים', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'מספר עריכות', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'מספר צפיות', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'שם הדף', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'שם הדף מקודד', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'מרחב השם', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'מרחב השם מקודד', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'מרחב השיחה', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'מרחב השיחה מקודד', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'מרחב הנושא', 'מרחב הערכים', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'מרחב הנושא מקודד', 'מרחב הערכים מקודד', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'שם הדף המלא', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'שם הדף המלא מקודד', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'שם דף המשנה', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'שם דף המשנה מקודד', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'שם דף הבסיס', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'שם דף הבסיס מקודד', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'שם דף השיחה', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'שם דף השיחה מקודד', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'שם דף הנושא', 'שם הערך', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'שם דף הנושא מקודד', 'שם הערך מקודד', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'הכללה:', 'MSG:' ),
+ 'subst' => array( '0', 'ס:', 'SUBST:' ),
+ 'safesubst' => array( '0', 'ס בטוח:', 'SAFESUBST:' ),
+ 'msgnw' => array( '0', 'הכללת מקור', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'ממוזער', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'ימין', 'right' ),
+ 'img_left' => array( '1', 'שמאל', 'left' ),
+ 'img_none' => array( '1', 'ללא', 'none' ),
+ 'img_width' => array( '1', '$1 פיקסלים', '$1px' ),
+ 'img_center' => array( '1', 'מרכז', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'ממוסגר', 'מסגרת', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'לא ממוסגר', 'ללא מסגרת', 'frameless' ),
+ 'img_page' => array( '1', 'דף=$1', 'דף $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'ימין למעלה', 'ימין למעלה=$1', 'ימין למעלה $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'גבולות', 'גבול', 'border' ),
+ 'img_baseline' => array( '1', 'שורת הבסיס', 'baseline' ),
+ 'img_sub' => array( '1', 'תחתי', 'sub' ),
+ 'img_super' => array( '1', 'עילי', 'super', 'sup' ),
+ 'img_top' => array( '1', 'למעלה', 'top' ),
+ 'img_text_top' => array( '1', 'בראש הטקסט', 'text-top' ),
+ 'img_middle' => array( '1', 'באמצע', 'middle' ),
+ 'img_bottom' => array( '1', 'למטה', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'בתחתית הטקסט', 'text-bottom' ),
+ 'img_link' => array( '1', 'קישור=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'טקסט=$1', 'alt=$1' ),
+ 'int' => array( '0', 'הודעה:', 'INT:' ),
+ 'sitename' => array( '1', 'שם האתר', 'SITENAME' ),
+ 'ns' => array( '0', 'מרחב שם:', 'NS:' ),
+ 'nse' => array( '0', 'מרחב שם מקודד:', 'NSE:' ),
+ 'localurl' => array( '0', 'כתובת יחסית:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'כתובת יחסית מקודד:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'כתובת השרת', 'שרת', 'SERVER' ),
+ 'servername' => array( '0', 'שם השרת', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'נתיב הקבצים', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'נתיב הסגנון', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'דקדוק:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'מגדר:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__ללא_המרת_כותרת__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__ללא_המרת_תוכן__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'שבוע נוכחי', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'מספר יום נוכחי', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'שבוע מקומי', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'מספר יום מקומי', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'מזהה גרסה', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'יום גרסה', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'יום גרסה 2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'חודש גרסה', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'שנת גרסה', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'זמן גרסה', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'כותב גרסה', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'רבים:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'כתובת מלאה:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'כתובת מלאה מקודד:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'אות ראשונה קטנה:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'אות ראשונה גדולה:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'אותיות קטנות:', 'LC:' ),
+ 'uc' => array( '0', 'אותיות גדולות:', 'UC:' ),
+ 'raw' => array( '0', 'ללא עיבוד:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'כותרת תצוגה', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'ללא פסיק', 'R' ),
+ 'newsectionlink' => array( '1', '__יצירת_הערה__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__ללא_יצירת_הערה__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'גרסה נוכחית', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'נתיב מקודד:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'עוגן מקודד:', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'זמן נוכחי', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'זמן מקומי', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'סימן כיווניות', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#שפה:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'שפת תוכן', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'דפים במרחב השם:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'מספר מפעילים', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'עיצוב מספר', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'ריפוד משמאל', 'PADLEFT' ),
+ 'padright' => array( '0', 'ריפוד מימין', 'PADRIGHT' ),
+ 'special' => array( '0', 'מיוחד', 'special' ),
+ 'defaultsort' => array( '1', 'מיון רגיל:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'נתיב לקובץ:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'תגית', 'tag' ),
+ 'hiddencat' => array( '1', '__קטגוריה_מוסתרת__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'דפים בקטגוריה', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'גודל דף', 'PAGESIZE' ),
+ 'index' => array( '1', '__לחיפוש__', '__INDEX__' ),
+ 'noindex' => array( '1', '__לא_לחיפוש__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'מספר בקבוצה', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__הפניה_קבועה__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'רמת הגנה', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'עיצוב תאריך', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
@@ -267,7 +273,7 @@ $specialPageAliases = array(
'Import' => array( 'ייבוא', 'ייבוא_דפים' ),
'Lockdb' => array( 'נעילת_בסיס_הנתונים' ),
'Unlockdb' => array( 'שחרור_בסיס_הנתונים' ),
- 'Userrights' => array( 'ניהול_הרשאות_משתמש' ),
+ 'Userrights' => array( 'ניהול_הרשאות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_או_ביטול_הרשאת_בוט' ),
'MIMEsearch' => array( 'חיפוש_MIME' ),
'FileDuplicateSearch' => array( 'חיפוש_קבצים_כפולים' ),
'Unwatchedpages' => array( 'דפים_שאינם_במעקב' ),
@@ -291,27 +297,27 @@ $specialPageAliases = array(
'LinkSearch' => array( 'חיפוש_קישורים_חיצוניים' ),
'DeletedContributions' => array( 'תרומות_מחוקות' ),
'Tags' => array( 'תגיות' ),
+ 'Activeusers' => array( 'משתמשים_פעילים' ),
);
$namespaceNames = array(
- NS_MEDIA => 'מדיה',
- NS_SPECIAL => 'מיוחד',
- NS_MAIN => '',
- NS_TALK => 'שיחה',
- NS_USER => 'משתמש',
- NS_USER_TALK => 'שיחת_משתמש',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'שיחת_$1',
- NS_FILE => 'קובץ',
- NS_FILE_TALK => 'שיחת_קובץ',
- NS_MEDIAWIKI => 'מדיה_ויקי',
- NS_MEDIAWIKI_TALK => 'שיחת_מדיה_ויקי',
- NS_TEMPLATE => 'תבנית',
- NS_TEMPLATE_TALK => 'שיחת_תבנית',
- NS_HELP => 'עזרה',
- NS_HELP_TALK => 'שיחת_עזרה',
- NS_CATEGORY => 'קטגוריה',
- NS_CATEGORY_TALK => 'שיחת_קטגוריה',
+ NS_MEDIA => 'מדיה',
+ NS_SPECIAL => 'מיוחד',
+ NS_MAIN => '',
+ NS_TALK => 'שיחה',
+ NS_USER => 'משתמש',
+ NS_USER_TALK => 'שיחת_משתמש',
+ NS_PROJECT_TALK => 'שיחת_$1',
+ NS_FILE => 'קובץ',
+ NS_FILE_TALK => 'שיחת_קובץ',
+ NS_MEDIAWIKI => 'מדיה_ויקי',
+ NS_MEDIAWIKI_TALK => 'שיחת_מדיה_ויקי',
+ NS_TEMPLATE => 'תבנית',
+ NS_TEMPLATE_TALK => 'שיחת_תבנית',
+ NS_HELP => 'עזרה',
+ NS_HELP_TALK => 'שיחת_עזרה',
+ NS_CATEGORY => 'קטגוריה',
+ NS_CATEGORY_TALK => 'שיחת_קטגוריה',
);
$namespaceAliases = array(
'תמונה' => NS_FILE,
@@ -349,6 +355,7 @@ $messages = array(
'tog-enotifminoredits' => 'שליחת דוא"ל אליך גם על עריכות משניות של דפים',
'tog-enotifrevealaddr' => 'חשיפת כתובת הדוא"ל שלך בהודעות דואר',
'tog-shownumberswatching' => 'הצגת מספר המשתמשים העוקבים אחרי הדף',
+'tog-oldsig' => 'תצוגה מקדימה של החתימה הקיימת:',
'tog-fancysig' => 'טיפול בחתימה כקוד ויקי (ללא קישור אוטומטי)',
'tog-externaleditor' => 'שימוש בעורך חיצוני כברירת מחדל (למשתמשים מומחים בלבד, דורש הגדרות מיוחדות במחשב)',
'tog-externaldiff' => 'שימוש בתוכנת השוואת הגרסאות החיצונית כברירת מחדל (למשתמשים מומחים בלבד, דורש הגדרות מיוחדות במחשב)',
@@ -372,6 +379,13 @@ $messages = array(
'underline-never' => 'אף פעם',
'underline-default' => 'ברירת מחדל של הדפדפן',
+# Font style option in Special:Preferences
+'editfont-style' => 'הגופן בתיבת העריכה:',
+'editfont-default' => 'ברירת מחדל של הדפדפן',
+'editfont-monospace' => 'גופן ברוחב קבוע (monospace)',
+'editfont-sansserif' => 'גופן ללא תגים (sans-serif)',
+'editfont-serif' => 'גופן עם תגים (serif)',
+
# Dates
'sunday' => 'ראשון',
'monday' => 'שני',
@@ -431,7 +445,7 @@ $messages = array(
'category-media-header' => 'קובצי מדיה בקטגוריה "$1"',
'category-empty' => "'''קטגוריה זו אינה כוללת דפים או קובצי מדיה.'''",
'hidden-categories' => '{{PLURAL:$1|קטגוריה מוסתרת|קטגוריות מוסתרות}}',
-'hidden-category-category' => 'קטגוריות מוסתרות', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'קטגוריות מוסתרות',
'category-subcat-count' => '{{PLURAL:$2|קטגוריה זו כוללת את קטגוריית המשנה הבאה בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}, מתוך $2 בקטגוריה כולה}}.',
'category-subcat-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}.',
'category-article-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
@@ -439,6 +453,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הקובץ הבא בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
'category-file-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}.',
'listingcontinuesabbrev' => '(המשך)',
+'index-category' => 'דפים המופיעים במנועי חיפוש',
+'noindex-category' => 'דפים המוסתרים ממנועי חיפוש',
'mainpagetext' => "'''תוכנת מדיה־ויקי הותקנה בהצלחה.'''",
'mainpagedocfooter' => 'היעזרו ב[http://meta.wikimedia.org/wiki/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.
@@ -448,10 +464,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ שאלות נפוצות]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרסאות]',
-'about' => 'אודות',
-'article' => 'דף תוכן',
-'newwindow' => '(נפתח בחלון חדש)',
-'cancel' => 'ביטול / יציאה',
+'about' => 'אודות',
+'article' => 'דף תוכן',
+'newwindow' => '(נפתח בחלון חדש)',
+'cancel' => 'ביטול / יציאה',
+'moredotdotdot' => 'עוד…',
+'mypage' => 'הדף שלי',
+'mytalk' => 'דף השיחה שלי',
+'anontalk' => 'השיחה עבור IP זה',
+'navigation' => 'ניווט',
+'and' => '&#32;וגם',
+
+# Cologne Blue skin
'qbfind' => 'חיפוש',
'qbbrowse' => 'דפדוף',
'qbedit' => 'עריכה',
@@ -459,15 +483,35 @@ $messages = array(
'qbpageinfo' => 'מידע על הדף',
'qbmyoptions' => 'האפשרויות שלי',
'qbspecialpages' => 'דפים מיוחדים',
-'moredotdotdot' => 'עוד…',
-'mypage' => 'הדף שלי',
-'mytalk' => 'דף השיחה שלי',
-'anontalk' => 'השיחה עבור IP זה',
-'navigation' => 'ניווט',
-'and' => '&#32;וגם',
-
-# Metadata in edit box
-'metadata_help' => 'מטא־דטה:',
+'faq' => 'שאלות ותשובות',
+'faqpage' => 'Project:שאלות ותשובות',
+
+# Vector skin
+'vector-action-addsection' => 'הוספת נושא',
+'vector-action-delete' => 'מחיקה',
+'vector-action-move' => 'העברה',
+'vector-action-protect' => 'הגנה',
+'vector-action-undelete' => 'ביטול מחיקה',
+'vector-action-unprotect' => 'הסרת הגנה',
+'vector-namespace-category' => 'קטגוריה',
+'vector-namespace-help' => 'דף עזרה',
+'vector-namespace-image' => 'קובץ',
+'vector-namespace-main' => 'דף',
+'vector-namespace-media' => 'דף מדיה',
+'vector-namespace-mediawiki' => 'הודעה',
+'vector-namespace-project' => 'דף מיזם',
+'vector-namespace-special' => 'דף מיוחד',
+'vector-namespace-talk' => 'שיחה',
+'vector-namespace-template' => 'תבנית',
+'vector-namespace-user' => 'דף משתמש',
+'vector-view-create' => 'יצירה',
+'vector-view-edit' => 'עריכה',
+'vector-view-history' => 'הצגת היסטוריה',
+'vector-view-view' => 'קריאה',
+'vector-view-viewsource' => 'הצגת מקור',
+'actions' => 'פעולות',
+'namespaces' => 'מרחבי שם',
+'variants' => 'גרסאות שפה',
'errorpagetitle' => 'שגיאה',
'returnto' => 'חזרה לדף $1.',
@@ -517,18 +561,22 @@ $messages = array(
'otherlanguages' => 'דף זה בשפות אחרות',
'redirectedfrom' => '(הופנה מהדף $1)',
'redirectpagesub' => 'דף הפניה',
-'lastmodifiedat' => 'שונה לאחרונה ב־$2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'שונה לאחרונה ב־$2, $1.',
'viewcount' => 'דף זה נצפה {{PLURAL:$1|פעם אחת|$1 פעמים|פעמיים}}.',
'protectedpage' => 'דף מוגן',
'jumpto' => 'קפיצה אל:',
'jumptonavigation' => 'ניווט',
'jumptosearch' => 'חיפוש',
+'view-pool-error' => 'מצטערים, השרתים עמוסים כרגע.
+יותר מדי משתמשים מנסים לצפות בדף זה.
+אנא המתינו זמן מה לפני שתנסו שוב לצפות בדף.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'אודות {{SITENAME}}',
'aboutpage' => 'Project:אודות',
'copyright' => 'התוכן מוגש בכפוף ל־$1.<br /> בעלי זכויות היוצרים מפורטים בהיסטוריית השינויים של הדף.',
-'copyrightpagename' => 'זכויות היוצרים של {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:זכויות יוצרים',
'currentevents' => 'אקטואליה',
'currentevents-url' => 'Project:אקטואליה',
@@ -536,8 +584,6 @@ $messages = array(
'disclaimerpage' => 'Project:הבהרה משפטית',
'edithelp' => 'עזרה לעריכה',
'edithelppage' => 'Help:עריכת דף',
-'faq' => 'שאלות ותשובות',
-'faqpage' => 'Project:שאלות ותשובות',
'helppage' => 'Help:תפריט ראשי',
'mainpage' => 'עמוד ראשי',
'mainpage-description' => 'עמוד ראשי',
@@ -618,10 +664,6 @@ $messages = array(
"$1"
מתוך הפונקציה "$2".
בסיס הנתונים החזיר את השגיאה "$3: $4".',
-'noconnect' => 'עקב בעיות טכניות באתר, לא ניתן להתחבר לבסיס הנתונים.<br />
-$1',
-'nodb' => 'לא ניתן לבחור את בסיס הנתונים $1',
-'cachederror' => 'להלן מוצג עותק גיבוי (Cache), שכנראה איננו עדכני, של הדף המבוקש.',
'laggedslavemode' => "'''אזהרה:''' הדף עשוי שלא להכיל עדכונים אחרונים.",
'readonly' => 'בסיס הנתונים נעול',
'enterlockreason' => 'הזינו סיבה לנעילת בסיס הנתונים, כולל הערכה לגבי מועד שחרור הנעילה.',
@@ -639,6 +681,8 @@ $1',
'readonly_lag' => 'בסיס הנתונים ננעל אוטומטית כדי לאפשר לבסיסי הנתונים המשניים להתעדכן מהבסיס הראשי.',
'internalerror' => 'שגיאה פנימית',
'internalerror_info' => 'שגיאה פנימית: $1',
+'fileappenderrorread' => 'קריאת "$1" במהלך צירוף נכשלה.',
+'fileappenderror' => 'צירוף "$1" ל־"$2" נכשל.',
'filecopyerror' => 'העתקת "$1" ל־"$2" נכשלה.',
'filerenameerror' => 'שינוי השם של "$1" ל־"$2" נכשל.',
'filedeleteerror' => 'מחיקת "$1" נכשלה.',
@@ -648,7 +692,8 @@ $1',
'unexpected' => 'ערך לא צפוי: "$1"="$2"',
'formerror' => 'שגיאה: לא יכול לשלוח טופס.',
'badarticleerror' => 'לא ניתן לבצע פעולה זו בדף זה.',
-'cannotdelete' => 'מחיקת הדף או הקובץ לא הצליחה. ייתכן שהוא נמחק כבר על ידי מישהו אחר.',
+'cannotdelete' => 'לא ניתן היה למחוק את הדף או הקובץ "$1".
+ייתכן שהוא נמחק כבר על ידי מישהו אחר.',
'badtitle' => 'כותרת שגויה',
'badtitletext' => 'כותרת הדף המבוקש הייתה לא־חוקית, ריקה, קישור ויקי פנימי, או פנים שפה שגוי.',
'perfcached' => 'המידע הבא הוא עותק שמור של המידע, ועשוי שלא להיות מעודכן.',
@@ -680,11 +725,9 @@ $2',
'virus-unknownscanner' => 'אנטי־וירוס בלתי ידוע:',
# Login and logout pages
-'logouttitle' => 'יציאה מהחשבון',
'logouttext' => 'יצאתם זה עתה מהחשבון. באפשרותכם להמשיך ולעשות שימוש ב{{grammar:תחילית|{{SITENAME}}}} באופן אנונימי, או [[Special:UserLogin|לשוב ולהיכנס לאתר]] עם שם משתמש זהה או אחר.',
'welcomecreation' => '== ברוך הבא, $1! ==
חשבונך נפתח. אל תשכח להתאים את [[Special:Preferences|העדפות המשתמש]] שלך.',
-'loginpagetitle' => 'כניסת משתמש',
'yourname' => 'שם משתמש:',
'yourpassword' => 'סיסמה:',
'yourpasswordagain' => 'הקש סיסמה שנית:',
@@ -695,6 +738,7 @@ $2',
'nav-login-createaccount' => 'כניסה לחשבון / הרשמה',
'loginprompt' => 'לפני הכניסה לחשבון ב{{grammar:תחילית|{{SITENAME}}}}, עליכם לוודא כי ה"עוגיות" (Cookies) מופעלות.',
'userlogin' => 'כניסה לחשבון / הרשמה',
+'userloginnocreate' => 'כניסה לחשבון',
'logout' => 'יציאה מהחשבון',
'userlogout' => 'יציאה מהחשבון',
'notloggedin' => 'לא בחשבון',
@@ -707,30 +751,8 @@ $2',
'badretype' => 'הסיסמאות שהזנתם אינן מתאימות.',
'userexists' => 'שם המשתמש שבחרתם נמצא בשימוש.
אנא בחרו שם אחר.',
-'youremail' => 'דואר אלקטרוני:',
-'username' => 'שם משתמש:',
-'uid' => 'מספר סידורי:',
-'prefs-memberingroups' => 'חבר ב{{PLURAL:$1|קבוצה|קבוצות}}:',
-'yourrealname' => 'שם אמיתי:',
-'yourlanguage' => 'שפת הממשק:',
-'yourvariant' => 'גרסה:',
-'yournick' => 'חתימה:',
-'badsig' => 'חתימה מסוגננת שגויה.
-אנא בדקו את תגיות ה־HTML.',
-'badsiglength' => 'חתימתכם ארוכה מדי.
-היא חייבת לא להיות ארוכה מ{{PLURAL:$1|תו אחד|־$1 תווים}}.',
-'yourgender' => 'מין:',
-'gender-unknown' => 'לא צוין',
-'gender-male' => 'זכר',
-'gender-female' => 'נקבה',
-'prefs-help-gender' => 'אופציונאלי: ניתן לכתוב מידע זה כדי שהתוכנה תתייחס אליכם באופן נכון מבחינה מגדרית. מידע זה יהיה ציבורי.',
-'email' => 'דוא"ל',
-'prefs-help-realname' => 'השם האמיתי הוא אופציונאלי.
-אם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.',
'loginerror' => 'שגיאה בכניסה לאתר',
-'prefs-help-email' => 'כתובת דואר אלקטרוני היא אופציונאלית, אך היא דרושה לאיפוס הסיסמה במקרה שתשכחו את הסיסמה.
-תוכלו גם לבחור לאפשר לאחרים לשלוח לכם מסר דרך דף המשתמש או דף השיחה שלכם ללא צורך לחשוף את כתובתכם.',
-'prefs-help-email-required' => 'כתובת דואר אלקטרוני נדרשת לכתיבה באתר.',
+'createaccounterror' => 'לא ניתן היה ליצור את החשבון: $1',
'nocookiesnew' => 'נוצר חשבון המשתמש שלכם, אך לא נכנסתם כמשתמשים רשומים למערכת כיוון שניטרלתם את העוגיות, ש{{grammar:תחילית|{{SITENAME}}}} משתמש בהן לצורך כניסה למערכת. אנא הפעילו אותן מחדש, ולאחר מכן תוכלו להיכנס למערכת עם שם המשתמש והסיסמה החדשים שלכם.',
'nocookieslogin' => 'לא הצלחתם להיכנס למערכת כמשתמשים רשומים כיוון שניטרלתם את העוגיות, ש{{grammar:תחילית|{{SITENAME}}}} משתמש בהן לצורך כניסה למערכת. אנא הפעילו אותן מחדש, ולאחר מכן תוכלו להיכנס למערכת עם שם המשתמש והסיסמה שלכם.',
'noname' => 'לא הזנתם שם משתמש חוקי',
@@ -740,9 +762,11 @@ $2',
אנא ודאו שהאיות נכון (כולל אותיות רישיות וקטנות), או [[Special:UserLogin/signup|צרו חשבון חדש]].',
'nosuchusershort' => 'אין משתמש בשם "<nowiki>$1</nowiki>". אנא ודאו שהאיות נכון.',
'nouserspecified' => 'עליכם לציין שם משתמש.',
+'login-userblocked' => 'משתמש זה חסום. אינכם מורשים להיכנס לחשבון.',
'wrongpassword' => 'הסיסמה שהקלדתם שגויה, אנא נסו שוב.',
'wrongpasswordempty' => 'הסיסמה שהקלדתם ריקה. אנא נסו שוב.',
-'passwordtooshort' => 'סיסמתכם בלתי תקינה או קצרה מדי. עליה להיות מורכבת מ{{PLURAL:$1|תו אחד|־$1 תווים}} לפחות ושונה משם המשתמש.',
+'passwordtooshort' => 'סיסמאות חייבות להיות באורך {{PLURAL:$1|תו אחד|$1 תווים}} לפחות.',
+'password-name-match' => 'סיסמתכם חייבת להיות שונה משם המשתמש שלכם.',
'mailmypassword' => 'שלחו לי סיסמה חדשה',
'passwordremindertitle' => 'סיסמה זמנית חדשה מ{{grammar:תחילית|{{SITENAME}}}}',
'passwordremindertext' => 'מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש סיסמה
@@ -753,6 +777,7 @@ $2',
עליכם להיכנס לאתר ולשנות את סיסמתכם בהקדם האפשרי. אם מישהו אחר ביקש סיסמה חדשה זו או אם נזכרתם בסיסמתכם
ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמתכם הישנה.',
'noemail' => 'לא רשומה כתובת דואר אלקטרוני עבור משתמש "$1".',
+'noemailcreate' => 'עליכם לספק כתובת דואר אלקטרוני תקינה',
'passwordsent' => 'סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור "$1".
אנא היכנסו חזרה לאתר אחרי שתקבלו אותה.',
'blocked-mailpassword' => 'כתובת ה־IP שלכם חסומה מעריכה, ולפיכך אינכם מורשים להשתמש באפשרות שחזור הסיסמה כדי למנוע ניצול לרעה של התכונה.',
@@ -773,9 +798,11 @@ $2',
'createaccount-text' => 'מישהו יצר חשבון בשם $2 ב{{grammar:תחילית|{{SITENAME}}}} ($4), והסיסמה הזמנית של החשבון היא "$3". עליכם להיכנס ולשנות עכשיו את הסיסמה.
באפשרותכם להתעלם מהודעה זו, אם החשבון נוצר בטעות.',
+'usernamehasherror' => 'שם משתמש אינו יכול לכלול תווי סולמית',
'login-throttled' => 'ביצעתם לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.
אנא המתינו לפני שתנסו שוב.',
'loginlanguagelabel' => 'שפה: $1',
+'suspicious-userlogout' => 'בקשתכם לצאת מהחשבון נדחתה כיוון שנראה שהיא נשלחה על ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
# Password reset dialog
'resetpass' => 'שינוי סיסמה',
@@ -788,17 +815,13 @@ $2',
'retypenew' => 'חזרה על הסיסמה חדשה:',
'resetpass_submit' => 'הגדרת הסיסמה וכניסה לחשבון',
'resetpass_success' => 'סיסמתכם שונתה בהצלחה! מכניס אתכם למערכת…',
-'resetpass_bad_temporary' => 'סיסמה זמנית שגויה. ייתכן שכבר שיניתם בהצלחה את סיסמתכם; אם לא, אנא בקשו סיסמה זמנית חדשה.',
'resetpass_forbidden' => 'לא ניתן לשנות סיסמאות.',
'resetpass-no-info' => 'עליכם להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
'resetpass-submit-loggedin' => 'שינוי סיסמה',
+'resetpass-submit-cancel' => 'ביטול',
'resetpass-wrong-oldpass' => 'הסיסמה הזמנית או הנוכחית אינה תקינה.
ייתכן שכבר שיניתם את סיסמתכם או שכבר ביקשתם סיסמה זמנית חדשה.',
'resetpass-temp-password' => 'סיסמה זמנית:',
-'resetpass-log' => 'יומן איפוס סיסמאות',
-'resetpass-logtext' => 'זהו יומן של המשתמשים שסיסמתם אופסה על ידי מנהל האתר.',
-'resetpass-logentry' => 'שינה את הסיסמה עבור $1',
-'resetpass-comment' => 'סיבה לאיפוס הסיסמה:',
# Edit page toolbar
'bold_sample' => 'טקסט מודגש',
@@ -868,7 +891,6 @@ $2',
'blockededitsource' => "הטקסט של '''העריכות שלך''' לדף '''$1''' מוצג למטה:",
'whitelistedittitle' => 'כניסה לחשבון נדרשת לעריכה',
'whitelistedittext' => 'עליכם $1 כדי לערוך דפים.',
-'confirmedittitle' => 'הנכם חייבים לאמת את כתובת הדוא"ל שלכם כדי לערוך',
'confirmedittext' => 'עליכם לאמת את כתובת הדוא"ל שלכם לפני שתוכלו לערוך דפים. אנא הגדירו ואמתו את כתובת הדוא"ל שלכם באמצעות [[Special:Preferences|העדפות המשתמש]] שלכם.',
'nosuchsectiontitle' => 'הפסקה לא נמצאה',
'nosuchsectiontext' => 'ניסיתם לערוך פסקה שאינה קיימת. ייתכן שהיא הועברה או נמחקה בעת שצפיתם בדף.',
@@ -891,14 +913,21 @@ $2',
באפשרותכם [[Special:Search/{{PAGENAME}}|לחפש את כותרת הדף]] בדפים אחרים,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} לחפש ביומנים הרלוונטיים],
או [{{fullurl:{{FULLPAGENAME}}|action=edit}} לערוך דף זה]</span>.',
+'noarticletext-nopermission' => 'אין כרגע טקסט בדף זה.
+באפשרותכם [[Special:Search/{{PAGENAME}}|לחפש את כותרת הדף]] בדפים אחרים,
+או <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} לחפש ביומנים הרלוונטיים].</span>',
'userpage-userdoesnotexist' => 'חשבון המשתמש "$1" אינו רשום.
אנא בדקו אם ברצונכם ליצור/לערוך דף זה.',
+'userpage-userdoesnotexist-view' => 'חשבון המשתמש "$1" אינו רשום.',
+'blocked-notice-logextract' => 'משתמש זה חסום כרגע.
+פעולת יומן החסימות האחרונה מוצגת להלן:',
'clearyourcache' => "'''הערה:''' לאחר השמירה, עליכם לנקות את זיכרון המטמון (Cache) של הדפדפן כדי להבחין בשינויים.
* '''מוזילה / פיירפוקס / ספארי:''' לחצו על מקש ה־Shift בעת לחיצתכם על '''העלה מחדש''' (Reload), או הקישו על ''Ctrl+F5'' או על ''Ctrl+R'' (או על ''Command+R'' במקינטוש).
* '''Konqueror:''' לחצו על '''העלה מחדש''' (Reload), או הקישו על ''F5''.
* '''אופרה''': נקו את המטמון ב'''כלים''' (Tools) > '''העדפות''' (Preferences).
* '''אינטרנט אקספלורר:''' לחצו על מקש ה־Ctrl בעת לחיצתכם על '''רענן''' (Refresh), או הקישו על ''Ctrl+F5''.",
-'usercssjsyoucanpreview' => "'''עצה:''' השתמשו בלחצן \"תצוגה מקדימה\" כדי לבחון את גליון ה־CSS או את סקריפט ה־JavaScript החדש שלכם לפני השמירה.",
+'usercssyoucanpreview' => "'''עצה:''' השתמשו בלחצן \"{{int:showpreview}}\" כדי לבחון את גליון ה־CSS החדש שלכם לפני השמירה.",
+'userjsyoucanpreview' => "'''עצה:''' השתמשו בלחצן \"{{int:showpreview}}\" כדי לבחון את סקריפט ה־JavaScript החדש שלכם לפני השמירה.",
'usercsspreview' => "'''זכרו שזו רק תצוגה מקדימה של גליון ה־CSS שלכם.'''
'''הוא טרם נשמר!'''",
'userjspreview' => "'''זכרו שזו רק בדיקה/תצוגה מקדימה של סקריפט ה־JavaScript שלכם.'''
@@ -944,13 +973,13 @@ $2',
באפשרותכם להעתיק ולהדביק את הטקסט לתוך קובץ טקסט ולשמור אותו עד שתיגמר הנעילה.
מנהל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
-'protectedpagewarning' => "'''אזהרה: דף זה ננעל כך שרק מפעילי מערכת יכולים לערוך אותו.'''",
-'semiprotectedpagewarning' => "'''הערה:''' דף זה ננעל כך שרק משתמשים רשומים יכולים לערוך אותו.",
+'protectedpagewarning' => "'''אזהרה: דף זה ננעל כך שרק מפעילי מערכת יכולים לערוך אותו.''' פעולת היומן האחרונה מוצגת להלן:",
+'semiprotectedpagewarning' => "'''הערה:''' דף זה ננעל כך שרק משתמשים רשומים יכולים לערוך אותו. פעולת היומן האחרונה מוצגת להלן:",
'cascadeprotectedwarning' => "'''אזהרה:''' דף זה ננעל כך שרק מפעילי מערכת יכולים לערוך אותו, כיוון שהוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:",
-'titleprotectedwarning' => "'''אזהרה: דף זה ננעל כך שדרושות [[Special:ListGroupRights|הרשאות מסוימות]] כדי ליצור אותו.'''",
-'templatesused' => 'תבניות המופיעות בדף זה:',
-'templatesusedpreview' => 'תבניות המופיעות בתצוגה המקדימה הזו:',
-'templatesusedsection' => 'תבניות המופיעות בפסקה זו:',
+'titleprotectedwarning' => "'''אזהרה: דף זה ננעל כך שדרושות [[Special:ListGroupRights|הרשאות מסוימות]] כדי ליצור אותו.''' פעולת היומן האחרונה מוצגת להלן:",
+'templatesused' => '{{PLURAL:$1|תבנית המופיעה|תבניות המופיעות}} בדף זה:',
+'templatesusedpreview' => '{{PLURAL:$1|תבנית המופיעה|תבניות המופיעות}} בתצוגה המקדימה הזו:',
+'templatesusedsection' => '{{PLURAL:$1|תבנית המופיעה|תבניות המופיעות}} בפסקה זו:',
'template-protected' => '(מוגנת)',
'template-semiprotected' => '(מוגנת חלקית)',
'hiddencategories' => 'דף זה כלול ב{{PLURAL:$1|קטגוריה מוסתרת אחת|־$1 קטגוריות מוסתרות}}:',
@@ -958,16 +987,18 @@ $2',
'nocreatetitle' => 'יצירת הדפים הוגבלה',
'nocreatetext' => 'אתר זה מגביל את האפשרות ליצור דפים חדשים. באפשרותכם לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון]].',
'nocreate-loggedin' => 'אינכם מורשים ליצור דפים חדשים.',
+'sectioneditnotsupported-title' => 'עריכת פסקאות אינה נתמכת',
+'sectioneditnotsupported-text' => 'עריכת פסקאות אינה נתמכת בדף זה.',
'permissionserrors' => 'שגיאות הרשאה',
'permissionserrorstext' => 'אינכם מורשים לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
'permissionserrorstext-withaction' => 'אינכם מורשים $2, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
-'recreate-deleted-warn' => "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''
+'recreate-moveddeleted-warn' => "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''
אנא שיקלו אם יהיה זה נכון להמשיך לערוך את הדף.
-יומן המחיקות של הדף מוצג להלן:",
-'deleted-notice' => 'דף זה נמחק.
-יומן המחיקות של הדף מוצג להלן.',
-'deletelog-fulllog' => 'צפייה ביומן המלא',
+יומני המחיקות וההעברות של הדף מוצגים להלן:",
+'moveddeleted-notice' => 'דף זה נמחק.
+יומני המחיקות וההעברות של הדף מוצגים להלן.',
+'log-fulllog' => 'הצגת היומן המלא',
'edit-hook-aborted' => 'העריכה בוטלה על־ידי Hook.
לא ניתן הסבר לביטול.',
'edit-gone-missing' => 'לא ניתן לעדכן את הדף.
@@ -990,6 +1021,7 @@ $2',
'post-expand-template-argument-category' => 'דפים שבהם הושמטו פרמטרים של תבניות',
'parser-template-loop-warning' => 'נמצאה תבנית הקוראת לעצמה: [[$1]]',
'parser-template-recursion-depth-warning' => 'עומק התבניות המוכללות זו בזו עבר את המקסימום האפשרי ($1)',
+'language-converter-depth-warning' => 'עומק ממיר השפה עבר את המקסימום האפשרי ($1)',
# "Undo" feature
'undo-success' => 'ניתן לבטל את העריכה. אנא בידקו את השוואת הגרסאות למטה כדי לוודא שזה מה שאתם רוצים לעשות, ואז שמרו את השינויים למטה כדי לבצע את ביטול העריכה.',
@@ -1005,9 +1037,9 @@ $2',
'viewpagelogs' => 'הצגת יומנים עבור דף זה',
'nohistory' => 'אין היסטוריית שינויים עבור דף זה.',
'currentrev' => 'גרסה אחרונה',
-'currentrev-asof' => 'גרסה נוכחית מתאריך $1',
+'currentrev-asof' => 'גרסה אחרונה מתאריך $1',
'revisionasof' => 'גרסה מתאריך $1',
-'revision-info' => 'גרסה מתאריך $1 מאת $2', # Additionally available: $3: revision id
+'revision-info' => 'גרסה מתאריך $1 מאת $2',
'previousrevision' => '→ הגרסה הקודמת',
'nextrevision' => 'הגרסה הבאה ←',
'currentrevisionlink' => 'הגרסה האחרונה',
@@ -1019,7 +1051,7 @@ $2',
'histlegend' => "השוואת גרסאות: סמנו את תיבות האפשרויות של הגרסאות המיועדות להשוואה, והקישו על Enter או על הכפתור שלמעלה או למטה.<br />
מקרא: '''({{int:cur}})''' = הבדלים עם הגרסה האחרונה, '''({{int:last}})''' = הבדלים עם הגרסה הקודמת, '''{{int:minoreditletter}}''' = שינוי משני.",
'history-fieldset-title' => 'חיפוש בהיסטוריית הדף',
-'deletedrev' => '[נמחק]',
+'history-show-deleted' => 'רק מחוקות',
'histfirst' => 'ראשונות',
'histlast' => 'אחרונות',
'historysize' => '({{PLURAL:$1|בית אחד|$1 בתים}})',
@@ -1028,71 +1060,115 @@ $2',
# Revision feed
'history-feed-title' => 'היסטוריית גרסאות',
'history-feed-description' => 'היסטוריית הגרסאות של הדף הזה בוויקי',
-'history-feed-item-nocomment' => '$1 ב־$2', # user at time
+'history-feed-item-nocomment' => '$1 ב־$2',
'history-feed-empty' => 'הדף המבוקש לא נמצא.
ייתכן שהוא נמחק, או ששמו שונה.
נסו [[Special:Search|לחפש]] אחר דפים רלוונטיים חדשים.',
# Revision deletion
-'rev-deleted-comment' => '(תקציר העריכה הוסר)',
-'rev-deleted-user' => '(שם המשתמש הוסר)',
-'rev-deleted-event' => '(פעולת היומן הוסרה)',
-'rev-deleted-text-permission' => "גרסת הדף הזו '''נמחקה'''.
-ייתכן שישנם פרטים נוספים על כך ב[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
-'rev-deleted-text-view' => "גרסת הדף הזו '''נמחקה'''.
-כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם לצפות בגרסה; ייתכן שישנם פרטים נוספים על כך ב[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
-'rev-deleted-no-diff' => "אינכם יכולים לצפות בהבדלים בין הגרסאות שציינתם משום שאחת מהן '''נמחקה'''.
-ייתכן שישנם פרטים נוספים על כך ב[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
-'rev-deleted-unhide-diff' => "אחת מהגרסאות שציינתם '''נמחקה'''.
-ייתכן שישנם פרטים נוספים על כך ב[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].
+'rev-deleted-comment' => '(תקציר העריכה הוסר)',
+'rev-deleted-user' => '(שם המשתמש הוסר)',
+'rev-deleted-event' => '(פעולת היומן הוסרה)',
+'rev-deleted-user-contribs' => '[שם המשתמש או כתובת ה־IP הוסרו - העריכה הוסתרה מדף התרומות]',
+'rev-deleted-text-permission' => "גרסת הדף הזו '''נמחקה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+'rev-deleted-text-unhide' => "גרסת הדף הזו '''נמחקה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם [$1 לצפות בגרסה] אם ברצונכם להמשיך.",
+'rev-suppressed-text-unhide' => "גרסת הדף הזו '''הוסתרה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההסתרות].
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם [$1 לצפות בגרסה] אם ברצונכם להמשיך.",
+'rev-deleted-text-view' => "גרסת הדף הזו '''נמחקה'''.
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם לצפות בגרסה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+'rev-suppressed-text-view' => "גרסת הדף הזו '''הוסתרה'''.
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם לצפות בגרסה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההסתרות].",
+'rev-deleted-no-diff' => "אינכם יכולים לצפות בהבדלים בין הגרסאות שציינתם משום שאחת מהן '''נמחקה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+'rev-suppressed-no-diff' => "אינכם יכולים לצפות בהבדלים בין הגרסאות שציינתם משום שאחת מהן '''נמחקה'''.",
+'rev-deleted-unhide-diff' => "אחת מהגרסאות שציינתם '''נמחקה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם [$1 לצפות בהבדלים בין הגרסאות] אם ברצונכם להמשיך.",
+'rev-suppressed-unhide-diff' => "אחת מהגרסאות שציינתם '''הוסתרה'''.
+ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההסתרות].
כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם [$1 לצפות בהבדלים בין הגרסאות] אם ברצונכם להמשיך.",
-'rev-delundel' => 'הצגה/הסתרה',
-'revisiondelete' => 'מחיקת ושחזור גרסאות',
-'revdelete-nooldid-title' => 'גרסת מטרה בלתי תקינה',
-'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינתם אותן, ייתכן שהגרסה אינה קיימת, וייתכן שאתם מנסים להסתיר את הגרסה הנוכחית.',
-'revdelete-nologtype-title' => 'לא נבחר סוג יומן',
-'revdelete-nologtype-text' => 'לא ציינתם את סוג היומן שעליו תבוצע הפעולה.',
-'revdelete-toomanytargets-title' => 'מטרות רבות מדי',
-'revdelete-toomanytargets-text' => 'ציינתם יותר מדי סוגים של מטרות שעליהן תבוצע הפעולה.',
-'revdelete-nologid-title' => 'רישום יומן בלתי תקין',
-'revdelete-nologid-text' => 'או שלא ציינתם את האירוע או האירועים ביומן שעליהם תבוצע הפעולה, או שרישום היומן שציינתם אינו קיים.',
-'revdelete-selected' => "'''{{PLURAL:$2|הגרסה שנבחרה|הגרסאות שנבחרו}} של [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|פעולת היומנים שנבחרה|פעולות היומנים שנבחרו}}:'''",
-'revdelete-text' => "'''גרסאות ופעולות יומנים שנמחקו עדיין יופיעו בהיסטוריית הדף ובדפי היומנים, אך חלקים מתוכנם שלהם לא יהיה זמין לציבור.'''
-מפעילי מערכת אחרים באתר עדיין יוכלו לגשת לתוכן הנסתר ויוכלו לשחזר אותו שוב דרך הממשק הזה, אלא אם כן יוגדרו הגבלות נוספות.
-
-אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נהלי האתר]].",
-'revdelete-suppress-text' => "יש להשתמש בהסתרה מלאה '''אך ורק''' במקרים הבאים:
+'rev-deleted-diff-view' => "אחת מהגרסאות שציינתם '''נמחקה'''.
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם לצפות בהבדלים בין הגרסאות; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+'rev-suppressed-diff-view' => "אחת מהגרסאות שציינתם '''הוסתרה'''.
+כיוון שאתם בעלי הרשאות מפעיל מערכת, באפשרותכם לצפות בהבדלים בין הגרסאות; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההסתרות].",
+'rev-delundel' => 'הצגה/הסתרה',
+'rev-showdeleted' => 'הצגה',
+'revisiondelete' => 'מחיקת ושחזור גרסאות',
+'revdelete-nooldid-title' => 'גרסת מטרה בלתי תקינה',
+'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינתם אותן, ייתכן שהגרסה אינה קיימת, וייתכן שאתם מנסים להסתיר את הגרסה הנוכחית.',
+'revdelete-nologtype-title' => 'לא נבחר סוג יומן',
+'revdelete-nologtype-text' => 'לא ציינתם את סוג היומן שעליו תבוצע הפעולה.',
+'revdelete-nologid-title' => 'רישום יומן בלתי תקין',
+'revdelete-nologid-text' => 'או שלא ציינתם את האירוע או האירועים ביומן שעליהם תבוצע הפעולה, או שרישום היומן שציינתם אינו קיים.',
+'revdelete-no-file' => 'הקובץ שציינתם אינו קיים.',
+'revdelete-show-file-confirm' => 'האם אתם בטוחים שברצונכם לצפות בגרסה המחוקה של הקובץ "<nowiki>$1</nowiki>" מתאריך $3, $2?',
+'revdelete-show-file-submit' => 'כן',
+'revdelete-selected' => "'''{{PLURAL:$2|הגרסה שנבחרה|הגרסאות שנבחרו}} של [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|פעולת היומנים שנבחרה|פעולות היומנים שנבחרו}}:'''",
+'revdelete-text' => "'''גרסאות ופעולות יומנים שנמחקו עדיין תופענה בהיסטוריית הדף ובדפי היומנים, אך חלקים מהתוכן שלהן לא יהיה זמין לציבור.'''
+מפעילי מערכת אחרים באתר עדיין יוכלו לגשת לתוכן הנסתר ויוכלו לשחזר אותו שוב דרך הממשק הזה, אלא אם כן תוגדרנה הגבלות נוספות.",
+'revdelete-confirm' => 'אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נהלי האתר]].',
+'revdelete-suppress-text' => "יש להשתמש בהסתרה מלאה '''אך ורק''' במקרים הבאים:
* מידע שעלול להיות לשון הרע
* חשיפת מידע אישי
*: '''כתובות בתים ומספרי טלפון, מספרי ביטוח לאומי, וכדומה'''",
-'revdelete-legend' => 'הגדרת הגבלות התצוגה',
-'revdelete-hide-text' => 'הסתרת תוכן הגרסה',
-'revdelete-hide-name' => 'הסתרת הפעולה ודף היעד',
-'revdelete-hide-comment' => 'הסתרת תקציר העריכה',
-'revdelete-hide-user' => 'הסתרת שם המשתמש או כתובת ה־IP של העורך',
-'revdelete-hide-restricted' => 'הסתרת המידע גם ממפעילי המערכת',
-'revdelete-suppress' => 'הסתרת המידע גם ממפעילי המערכת',
-'revdelete-hide-image' => 'הסתרת תוכן הקובץ',
-'revdelete-unsuppress' => 'הסרת הגבלות בגרסאות המשוחזרות',
-'revdelete-log' => 'סיבה:',
-'revdelete-submit' => 'ביצוע על הגרסה שנבחרה',
-'revdelete-logentry' => 'שינה את הסתרת הגרסה של "[[$1]]"',
-'logdelete-logentry' => 'שינה את הסתרת פעולת היומן של "[[$1]]"',
-'revdelete-success' => "'''מצב הסתרת הגרסה עודכן בהצלחה.'''",
-'logdelete-success' => "'''הסתרת פעולת היומן הושלמה בהצלחה.'''",
-'revdel-restore' => 'שינוי ההצגה',
-'pagehist' => 'היסטוריית הדף',
-'deletedhist' => 'הגרסאות המחוקות',
-'revdelete-content' => 'התוכן',
-'revdelete-summary' => 'תקציר העריכה',
-'revdelete-uname' => 'שם המשתמש',
-'revdelete-restricted' => 'נוספו הגבלות למפעילי מערכת',
-'revdelete-unrestricted' => 'הוסרו הגבלות ממפעילי מערכת',
-'revdelete-hid' => 'הסתיר את $1',
-'revdelete-unhid' => 'ביטל את הסתרת $1',
-'revdelete-log-message' => '$1 עבור {{PLURAL:$2|גרסה אחת|$2 גרסאות}}',
-'logdelete-log-message' => '$1 עבור {{PLURAL:$2|אירוע אחד|$2 אירועים}}',
+'revdelete-legend' => 'הגדרת הגבלות התצוגה',
+'revdelete-hide-text' => 'הסתרת תוכן הגרסה',
+'revdelete-hide-image' => 'הסתרת תוכן הקובץ',
+'revdelete-hide-name' => 'הסתרת הפעולה ודף היעד',
+'revdelete-hide-comment' => 'הסתרת תקציר העריכה',
+'revdelete-hide-user' => 'הסתרת שם המשתמש או כתובת ה־IP של העורך',
+'revdelete-hide-restricted' => 'הסתרת המידע גם ממפעילי המערכת',
+'revdelete-radio-same' => '(ללא שינוי)',
+'revdelete-radio-set' => 'כן',
+'revdelete-radio-unset' => 'לא',
+'revdelete-suppress' => 'הסתרת המידע גם ממפעילי המערכת',
+'revdelete-unsuppress' => 'הסרת הגבלות בגרסאות המשוחזרות',
+'revdelete-log' => 'סיבה:',
+'revdelete-submit' => 'ביצוע על {{PLURAL:$1|הגרסה שנבחרה|הגרסאות שנבחרו}}',
+'revdelete-logentry' => 'שינה את הסתרת הגרסה של "[[$1]]"',
+'logdelete-logentry' => 'שינה את הסתרת פעולת היומן של "[[$1]]"',
+'revdelete-success' => "'''מצב הסתרת הגרסה עודכן בהצלחה.'''",
+'revdelete-failure' => "'''לא ניתן היה לעדכן את מצב הסתרת הגרסה:'''
+$1",
+'logdelete-success' => "'''הסתרת פעולת היומן הושלמה בהצלחה.'''",
+'logdelete-failure' => "'''לא ניתן היה לבצע את הסתרת פעולת היומן:'''
+$1",
+'revdel-restore' => 'שינוי ההצגה',
+'pagehist' => 'היסטוריית הדף',
+'deletedhist' => 'הגרסאות המחוקות',
+'revdelete-content' => 'התוכן',
+'revdelete-summary' => 'תקציר העריכה',
+'revdelete-uname' => 'שם המשתמש',
+'revdelete-restricted' => 'נוספו הגבלות למפעילי מערכת',
+'revdelete-unrestricted' => 'הוסרו הגבלות ממפעילי מערכת',
+'revdelete-hid' => 'הסתיר את $1',
+'revdelete-unhid' => 'ביטל את הסתרת $1',
+'revdelete-log-message' => '$1 עבור {{PLURAL:$2|גרסה אחת|$2 גרסאות}}',
+'logdelete-log-message' => '$1 עבור {{PLURAL:$2|אירוע אחד|$2 אירועים}}',
+'revdelete-hide-current' => 'שגיאה בהסתרת הפריט מתאריך $2, $1: זו הגרסה הנוכחית.
+לא ניתן להסתיר אותה.',
+'revdelete-show-no-access' => 'שגיאה בהצגת הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
+אין לכם גישה אליו.',
+'revdelete-modify-no-access' => 'שגיאה בשינוי הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
+אין לכם גישה אליו.',
+'revdelete-modify-missing' => 'שגיאה בשינוי פריט מספר $1: הוא אינו נמצא בבסיס הנתונים!',
+'revdelete-no-change' => "'''אזהרה:''' לפריט מתאריך $2, $1 כבר יש את הגדרות ההצגה הנדרשות.",
+'revdelete-concurrent-change' => 'שגיאה בשינוי הפריט מתאריך $2, $1: נראה שמצבו שונה על ידי מישהו אחר בזמן שאתם ניסיתם לשנות אותו.
+אנא בדקו ביומנים.',
+'revdelete-only-restricted' => 'שגיאה בהסתרת הפריט מתאריך $2, $1: אין באפשרותכם להסתיר פרטים מצפיית מפעילי מערכת בלי לבחור גם באחת מאפשרויות ההסתרה האחרות.',
+'revdelete-reason-dropdown' => '* סיבות מחיקה נפוצות
+** הפרת זכויות יוצרים
+** חשיפת מידע אישי
+** מידע שעלול להיות לשון הרע',
+'revdelete-otherreason' => 'סיבה אחרת/נוספת:',
+'revdelete-reasonotherlist' => 'סיבה אחרת',
+'revdelete-edit-reasonlist' => 'עריכת סיבות המחיקה',
+'revdelete-offender' => 'מחבר הגרסה:',
# Suppression log
'suppressionlog' => 'יומן הסתרות',
@@ -1130,67 +1206,13 @@ $2',
'mergelogpagetext' => 'זוהי רשימה של המיזוגים האחרונים של גרסאות מדף אחד לתוך דף שני.',
# Diffs
-'history-title' => 'היסטוריית הגרסאות של $1',
-'difference' => '(הבדלים בין גרסאות)',
-'lineno' => 'שורה $1:',
-'compareselectedversions' => 'השוואת הגרסאות שנבחרו',
-'visualcomparison' => 'השוואה חזותית',
-'wikicodecomparison' => 'השוואת קוד ויקי',
-'editundo' => 'ביטול',
-'diff-multi' => '({{PLURAL:$1|גרסת ביניים אחת אינה מוצגת|$1 גרסאות ביניים אינן מוצגות}})',
-'diff-movedto' => 'הועבר ל$1',
-'diff-styleadded' => 'נוסף סגנון $1',
-'diff-added' => 'נוסף $1',
-'diff-changedto' => 'שונה ל$1',
-'diff-movedoutof' => 'הועבר מ$1',
-'diff-styleremoved' => 'הוסר סגנון $1',
-'diff-removed' => 'הוסר $1',
-'diff-changedfrom' => 'שונה מ$1',
-'diff-src' => 'מקור',
-'diff-withdestination' => 'עם היעד $1',
-'diff-with' => '&#32;עם $1 $2',
-'diff-with-final' => '&#32;וגם $1 $2',
-'diff-width' => 'רוחב',
-'diff-height' => 'גובה',
-'diff-p' => 'פיסקה',
-'diff-blockquote' => 'ציטוט',
-'diff-h1' => "'''כותרת (רמה 1)'''",
-'diff-h2' => "'''כותרת (רמה 2)'''",
-'diff-h3' => "'''כותרת (רמה 3)'''",
-'diff-h4' => "'''כותרת (רמה 4)'''",
-'diff-h5' => "'''כותרת (רמה 5)'''",
-'diff-pre' => "'''חלק עם עיצוב קבוע'''",
-'diff-div' => "'''מקטע'''",
-'diff-ul' => "'''רשימה עם תבליטים'''",
-'diff-ol' => "'''רשומה ממוספרת'''",
-'diff-li' => "'''פריט רשימה'''",
-'diff-table' => "'''טבלה'''",
-'diff-tbody' => "'''תוכן טבלה'''",
-'diff-tr' => "'''שורה'''",
-'diff-td' => "'''תא'''",
-'diff-th' => "'''כותרת'''",
-'diff-br' => "'''מעבר שורה'''",
-'diff-hr' => "'''קו אופקי'''",
-'diff-code' => "'''קטע של קוד מחשב'''",
-'diff-dl' => "'''רשימת הגדרות'''",
-'diff-dt' => "'''מונח להגדרה'''",
-'diff-dd' => "'''הגדרה'''",
-'diff-input' => "'''פריט קלט'''",
-'diff-form' => "'''טופס'''",
-'diff-img' => "'''תמונה'''",
-'diff-span' => "'''קטע'''",
-'diff-a' => "'''קישור'''",
-'diff-i' => "'''הטיה'''",
-'diff-b' => "'''הדגשה'''",
-'diff-strong' => "'''טקסט מובלט מאוד'''",
-'diff-em' => "'''טקסט מובלט'''",
-'diff-font' => "'''גופן'''",
-'diff-big' => "'''גדול'''",
-'diff-del' => "'''נמחק'''",
-'diff-tt' => "'''רוחב קבוע'''",
-'diff-sub' => "'''כתב תחתי'''",
-'diff-sup' => "'''כתב עילי'''",
-'diff-strike' => "'''קו חוצה'''",
+'history-title' => 'היסטוריית הגרסאות של $1',
+'difference' => '(הבדלים בין גרסאות)',
+'lineno' => 'שורה $1:',
+'compareselectedversions' => 'השוואת הגרסאות שנבחרו',
+'showhideselectedversions' => 'הצגת/הסתרת הגרסאות שנבחרו',
+'editundo' => 'ביטול',
+'diff-multi' => '({{PLURAL:$1|גרסת ביניים אחת אינה מוצגת|$1 גרסאות ביניים אינן מוצגות}})',
# Search results
'searchresults' => 'תוצאות החיפוש',
@@ -1198,28 +1220,25 @@ $2',
'searchresulttext' => 'למידע נוסף על חיפוש ב{{grammar:תחילית|{{SITENAME}}}}, עיינו ב[[Project:עזרה|דפי העזרה]].',
'searchsubtitle' => 'לחיפוש המונח \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|לכל הדפים המתחילים ב"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|לכל הדפים המקשרים ל"$1"]])',
'searchsubtitleinvalid' => "לחיפוש המונח '''$1'''",
-'noexactmatch' => 'אין דף שכותרתו "$1". באפשרותכם [[:$1|ליצור את הדף]].',
-'noexactmatch-nocreate' => 'אין דף שכותרתו "$1".',
'toomanymatches' => 'יותר מדי תוצאות נמצאו, אנא נסו מילות חיפוש אחרות',
'titlematches' => 'כותרות דפים תואמות',
'notitlematches' => 'אין כותרות דפים תואמות',
'textmatches' => 'דפים עם תוכן תואם',
'notextmatches' => 'אין דפים עם תוכן תואם',
-'prevn' => '$1 הקודמים',
-'nextn' => '$1 הבאים',
+'prevn' => '{{PLURAL:$1|הקודם|$1 הקודמים}}',
+'nextn' => '{{PLURAL:$1|הבא|$1 הבאים}}',
'prevn-title' => '{{PLURAL:$1|התוצאה הקודמת|$1 התוצאות הקודמות}}',
'nextn-title' => '{{PLURAL:$1|התוצאה הבאה|$1 התוצאות הבאות}}',
'shown-title' => 'הצגת {{PLURAL:$1|תוצאה אחת|$1 תוצאות}} בדף',
-'viewprevnext' => 'צפייה ב - ($1) ($2) ($3)',
+'viewprevnext' => 'צפייה ב - ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'אפשרויות חיפוש',
'searchmenu-exists' => "'''קיים דף בשם \"[[:\$1]]\" באתר זה'''",
'searchmenu-new' => "'''יצירת הדף \"[[:\$1]]\" באתר זה'''",
'searchhelp-url' => 'Help:תפריט ראשי',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|מציאת דפים עם קידומת זו]]',
'searchprofile-articles' => 'דפי תוכן',
-'searchprofile-articles-and-proj' => 'דפי תוכן ודפי מיזם',
-'searchprofile-project' => 'דפי מיזם',
-'searchprofile-images' => 'קבצים',
+'searchprofile-project' => 'עזרה ודפי המיזם',
+'searchprofile-images' => 'מולטימדיה',
'searchprofile-everything' => 'הכול',
'searchprofile-advanced' => 'מתקדם',
'searchprofile-articles-tooltip' => 'חיפוש $1',
@@ -1227,8 +1246,6 @@ $2',
'searchprofile-images-tooltip' => 'חיפוש קבצים',
'searchprofile-everything-tooltip' => 'חיפוש בכל התוכן (למעט דפי השיחה)',
'searchprofile-advanced-tooltip' => 'חיפוש במרחבי שם מותאמים אישית',
-'prefs-search-nsdefault' => 'חיפוש עם הגדרות ברירת המחדל:',
-'prefs-search-nscustom' => 'חיפוש במרחבי שם מותאמים אישית:',
'search-result-size' => '$1 ({{PLURAL:$2|מילה אחת|$2 מילים}})',
'search-result-score' => 'רלוונטיות: $1%',
'search-redirect' => '(הפניה $1)',
@@ -1241,11 +1258,12 @@ $2',
'search-mwsuggest-disabled' => 'ללא הצעות',
'search-relatedarticle' => 'קשור',
'mwsuggest-disable' => 'ביטול הצעות AJAX',
+'searcheverything-enable' => 'חיפוש בכל מרחבי השם',
'searchrelated' => 'קשור',
'searchall' => 'הכול',
'showingresults' => "הצגת עד {{PLURAL:$1|תוצאה '''אחת'''|'''$1''' תוצאות}} החל ממספר #'''$2''':",
'showingresultsnum' => "הצגת {{PLURAL:$3|תוצאה '''אחת'''|'''$3''' תוצאות}} החל ממספר #'''$2''':",
-'showingresultstotal' => "הצגת {{PLURAL:$4|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
'nonefound' => "'''הערה''': כברירת מחדל, החיפוש מבוצע במספר מרחבי שם בלבד. באפשרותכם לכתוב '''all:''' לפני מונח החיפוש כדי לחפש בכל הדפים (כולל דפי שיחה, תבניות, ועוד), או לכתוב לפני מונח החיפוש את מרחב השם שאתם מעוניינים בו.",
'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
'powersearch' => 'חיפוש מתקדם',
@@ -1253,111 +1271,152 @@ $2',
'powersearch-ns' => 'חיפוש במרחבי השם:',
'powersearch-redir' => 'הצגת דפי הפניה',
'powersearch-field' => 'חיפוש',
+'powersearch-togglelabel' => 'בחירה:',
+'powersearch-toggleall' => 'הכול',
+'powersearch-togglenone' => 'אף אחד',
'search-external' => 'חיפוש חיצוני',
'searchdisabled' => 'לצערנו, עקב עומס על המערכת, לא ניתן לחפש כעת בטקסט המלא של הדפים. באפשרותכם להשתמש בינתיים בגוגל, אך שימו לב שייתכן שהוא אינו מעודכן.',
+# Quickbar
+'qbsettings' => 'הגדרות סרגל כלים',
+'qbsettings-none' => 'ללא',
+'qbsettings-fixedleft' => 'קבוע משמאל',
+'qbsettings-fixedright' => 'קבוע מימין',
+'qbsettings-floatingleft' => 'צף משמאל',
+'qbsettings-floatingright' => 'צף מימין',
+
# Preferences page
-'preferences' => 'העדפות',
-'mypreferences' => 'ההעדפות שלי',
-'prefs-edits' => 'מספר עריכות:',
-'prefsnologin' => 'לא נרשמת באתר',
-'prefsnologintext' => 'עליכם <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} להיכנס לחשבון]</span> כדי לשנות העדפות משתמש.',
-'prefsreset' => 'ההעדפות שוחזרו למצבן הקודם.',
-'qbsettings' => 'הגדרות סרגל כלים',
-'qbsettings-none' => 'ללא',
-'qbsettings-fixedleft' => 'קבוע משמאל',
-'qbsettings-fixedright' => 'קבוע מימין',
-'qbsettings-floatingleft' => 'צף משמאל',
-'qbsettings-floatingright' => 'צף מימין',
-'changepassword' => 'שינוי סיסמה',
-'skin' => 'עיצוב',
-'skin-preview' => 'תצוגה מקדימה',
-'math' => 'נוסחאות מתמטיות',
-'dateformat' => 'מבנה תאריך',
-'datedefault' => 'ברירת המחדל',
-'datetime' => 'תאריך ושעה',
-'math_failure' => 'עיבוד הנוסחה נכשל',
-'math_unknown_error' => 'שגיאה לא ידועה',
-'math_unknown_function' => 'פונקציה לא מוכרת',
-'math_lexing_error' => 'שגיאת לקסינג',
-'math_syntax_error' => 'שגיאת תחביר',
-'math_image_error' => 'ההמרה ל־PNG נכשלה; אנא בדקו אם התקנתם נכון את latex, את dvips, את gs ואת convert.',
-'math_bad_tmpdir' => 'התוכנה לא הצליחה לכתוב או ליצור את הספרייה הזמנית של המתמטיקה',
-'math_bad_output' => 'התוכנה לא הצליחה לכתוב או ליצור את ספריית הפלט של המתמטיקה',
-'math_notexvc' => 'קובץ בר־ביצוע של texvc אינו זמין; אנא צפו בקובץ math/README למידע על ההגדרות.',
-'prefs-personal' => 'פרטי המשתמש',
-'prefs-rc' => 'שינויים אחרונים',
-'prefs-watchlist' => 'רשימת המעקב',
-'prefs-watchlist-days' => 'מספר הימים המירבי שיוצגו ברשימת המעקב:',
-'prefs-watchlist-days-max' => '(לכל היותר 7 ימים)',
-'prefs-watchlist-edits' => 'מספר העריכות המירבי שיוצגו ברשימת המעקב המורחבת:',
-'prefs-watchlist-edits-max' => '(לכל היותר 1000)',
-'prefs-misc' => 'שונות',
-'prefs-resetpass' => 'שינוי סיסמה',
-'saveprefs' => 'שמירת העדפות',
-'resetprefs' => 'מחיקת שינויים שלא נשמרו',
-'restoreprefs' => 'חזרה להגדרות ברירת המחדל',
-'textboxsize' => 'עריכה',
-'prefs-edit-boxsize' => 'גודל חלון העריכה.',
-'rows' => 'שורות:',
-'columns' => 'עמודות:',
-'searchresultshead' => 'חיפוש',
-'resultsperpage' => 'מספר תוצאות בעמוד:',
-'contextlines' => 'שורות לכל תוצאה:',
-'contextchars' => 'מספר תווי קונטקסט בשורה:',
-'stub-threshold' => 'סף לעיצוב <a href="#" class="stub">קישורים</a> לקצרמרים (בתים):',
-'recentchangesdays' => 'מספר הימים שיוצגו בדף השינויים האחרונים:',
-'recentchangesdays-max' => '(לכל היותר {{PLURAL:$1|יום אחד|$1 ימים}})',
-'recentchangescount' => 'מספר העריכות שיוצגו כברירת מחדל בדפי השינויים האחרונים, היסטוריית הדף והיומנים:',
-'savedprefs' => 'העדפותיך נשמרו.',
-'timezonelegend' => 'אזור זמן:',
-'timezonetext' => '¹הפרש השעות בינך לבין השרת (UTC).',
-'localtime' => 'זמן מקומי:',
-'timezoneselect' => 'אזור זמן:',
-'timezoneuseserverdefault' => 'ברירת המחדל של השרת',
-'timezoneuseoffset' => 'אחר (נא ציינו את ההפרש)',
-'timezoneoffset' => 'הפרש¹:',
-'servertime' => 'השעה הנוכחית בשרת:',
-'guesstimezone' => 'קבלה מהדפדפן',
-'timezoneregion-africa' => 'אפריקה',
-'timezoneregion-america' => 'אמריקה',
-'timezoneregion-antarctica' => 'אנטארקטיקה',
-'timezoneregion-arctic' => 'האזור הארקטי',
-'timezoneregion-asia' => 'אסיה',
-'timezoneregion-atlantic' => 'האוקיינוס האטלנטי',
-'timezoneregion-australia' => 'אוסטרליה',
-'timezoneregion-europe' => 'אירופה',
-'timezoneregion-indian' => 'האוקיינוס ההודי',
-'timezoneregion-pacific' => 'האוקיינוס השקט',
-'allowemail' => 'קבלת דוא"ל ממשתמשים אחרים',
-'prefs-searchoptions' => 'אפשרויות חיפוש',
-'prefs-namespaces' => 'מרחבי שם',
-'defaultns' => 'מרחבי שם לחיפוש כברירת מחדל:',
-'default' => 'ברירת מחדל',
-'files' => 'קבצים',
-'prefs-custom-css' => 'קובץ CSS מותאם אישית',
-'prefs-custom-js' => 'קובץ JavaScript מותאם אישית',
+'preferences' => 'העדפות',
+'mypreferences' => 'ההעדפות שלי',
+'prefs-edits' => 'מספר עריכות:',
+'prefsnologin' => 'לא נרשמת באתר',
+'prefsnologintext' => 'עליכם <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} להיכנס לחשבון]</span> כדי לשנות העדפות משתמש.',
+'changepassword' => 'שינוי סיסמה',
+'prefs-skin' => 'עיצוב',
+'skin-preview' => 'תצוגה מקדימה',
+'prefs-math' => 'נוסחאות מתמטיות',
+'datedefault' => 'ברירת המחדל',
+'prefs-datetime' => 'תאריך ושעה',
+'prefs-personal' => 'פרטי המשתמש',
+'prefs-rc' => 'שינויים אחרונים',
+'prefs-watchlist' => 'רשימת המעקב',
+'prefs-watchlist-days' => 'מספר הימים המירבי שיוצגו ברשימת המעקב:',
+'prefs-watchlist-days-max' => 'לכל היותר 7 ימים',
+'prefs-watchlist-edits' => 'מספר העריכות המירבי שיוצגו ברשימת המעקב המורחבת:',
+'prefs-watchlist-edits-max' => 'לכל היותר 1000',
+'prefs-watchlist-token' => 'אסימון לרשימת המעקב:',
+'prefs-misc' => 'שונות',
+'prefs-resetpass' => 'שינוי סיסמה',
+'prefs-email' => 'אפשרויות דוא"ל',
+'prefs-rendering' => 'מראה',
+'saveprefs' => 'שמירת העדפות',
+'resetprefs' => 'מחיקת שינויים שלא נשמרו',
+'restoreprefs' => 'חזרה להגדרות ברירת המחדל',
+'prefs-editing' => 'עריכה',
+'prefs-edit-boxsize' => 'גודל חלון העריכה.',
+'rows' => 'שורות:',
+'columns' => 'עמודות:',
+'searchresultshead' => 'חיפוש',
+'resultsperpage' => 'מספר תוצאות בעמוד:',
+'contextlines' => 'שורות לכל תוצאה:',
+'contextchars' => 'מספר תווי קונטקסט בשורה:',
+'stub-threshold' => 'סף לעיצוב <a href="#" class="stub">קישורים</a> לקצרמרים (בתים):',
+'recentchangesdays' => 'מספר הימים שיוצגו בדף השינויים האחרונים:',
+'recentchangesdays-max' => 'לכל היותר {{PLURAL:$1|יום אחד|$1 ימים}}',
+'recentchangescount' => 'מספר העריכות שיוצגו כברירת מחדל:',
+'prefs-help-recentchangescount' => 'כולל שינויים אחרונים, היסטוריית הדף ויומנים.',
+'prefs-help-watchlist-token' => 'מילוי השדה הזה במפתח סודי ייצור הזנת RSS עבור רשימת המעקב שלכם.
+כל מי שיודע את המפתח שבשדה זה יוכל לקרוא את רשימת המעקב שלכם, לכן עליכם לבחור ערך בטוח.
+תוכלו להשתמש בערך הבא, שנוצר באופן אקראי: $1',
+'savedprefs' => 'העדפותיך נשמרו.',
+'timezonelegend' => 'אזור זמן:',
+'localtime' => 'זמן מקומי:',
+'timezoneuseserverdefault' => 'ברירת המחדל של השרת',
+'timezoneuseoffset' => 'אחר (נא ציינו את ההפרש)',
+'timezoneoffset' => 'הפרש¹:',
+'servertime' => 'השעה הנוכחית בשרת:',
+'guesstimezone' => 'קבלה מהדפדפן',
+'timezoneregion-africa' => 'אפריקה',
+'timezoneregion-america' => 'אמריקה',
+'timezoneregion-antarctica' => 'אנטארקטיקה',
+'timezoneregion-arctic' => 'האזור הארקטי',
+'timezoneregion-asia' => 'אסיה',
+'timezoneregion-atlantic' => 'האוקיינוס האטלנטי',
+'timezoneregion-australia' => 'אוסטרליה',
+'timezoneregion-europe' => 'אירופה',
+'timezoneregion-indian' => 'האוקיינוס ההודי',
+'timezoneregion-pacific' => 'האוקיינוס השקט',
+'allowemail' => 'קבלת דוא"ל ממשתמשים אחרים',
+'prefs-searchoptions' => 'אפשרויות חיפוש',
+'prefs-namespaces' => 'מרחבי שם',
+'defaultns' => 'אחרת, החיפוש יתבצע במרחבי השם הבאים:',
+'default' => 'ברירת מחדל',
+'prefs-files' => 'קבצים',
+'prefs-custom-css' => 'קובץ CSS מותאם אישית',
+'prefs-custom-js' => 'קובץ JavaScript מותאם אישית',
+'prefs-reset-intro' => 'באפשרותכם להשתמש בדף זה כדי להחזיר את ההעדפות שלכם להגדרות ברירת המחדל של האתר.
+לא ניתן לבטל פעולה זו.',
+'prefs-emailconfirm-label' => 'אימות כתובת דוא"ל:',
+'prefs-textboxsize' => 'גודל חלון העריכה',
+'youremail' => 'דואר אלקטרוני:',
+'username' => 'שם משתמש:',
+'uid' => 'מספר סידורי:',
+'prefs-memberingroups' => 'חבר ב{{PLURAL:$1|קבוצה|קבוצות}}:',
+'prefs-registration' => 'זמן ההרשמה:',
+'yourrealname' => 'שם אמיתי:',
+'yourlanguage' => 'שפת הממשק:',
+'yourvariant' => 'גרסה:',
+'yournick' => 'חתימה:',
+'prefs-help-signature' => 'על הודעות בדפי שיחה יש לחתום באמצעות הטקסט "<nowiki>~~~~</nowiki>", שיומר לחתימה שלכם ואחריה תאריך ושעה.',
+'badsig' => 'חתימה מסוגננת שגויה.
+אנא בדקו את תגיות ה־HTML.',
+'badsiglength' => 'חתימתכם ארוכה מדי.
+היא חייבת לא להיות ארוכה מ{{PLURAL:$1|תו אחד|־$1 תווים}}.',
+'yourgender' => 'מין:',
+'gender-unknown' => 'לא צוין',
+'gender-male' => 'זכר',
+'gender-female' => 'נקבה',
+'prefs-help-gender' => 'אופציונאלי: ניתן לכתוב מידע זה כדי שהתוכנה תתייחס אליכם באופן נכון מבחינה מגדרית. מידע זה יהיה ציבורי.',
+'email' => 'דוא"ל',
+'prefs-help-realname' => 'השם האמיתי הוא אופציונאלי.
+אם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.',
+'prefs-help-email' => 'כתובת דואר אלקטרוני היא אופציונאלית, אך היא דרושה לאיפוס הסיסמה במקרה שתשכחו את הסיסמה.
+תוכלו גם לבחור לאפשר לאחרים לשלוח לכם מסר דרך דף המשתמש או דף השיחה שלכם ללא צורך לחשוף את כתובתכם.',
+'prefs-help-email-required' => 'כתובת דואר אלקטרוני נדרשת לכתיבה באתר.',
+'prefs-info' => 'מידע בסיסי',
+'prefs-i18n' => 'בינאום',
+'prefs-signature' => 'חתימה',
+'prefs-dateformat' => 'מבנה תאריך',
+'prefs-timeoffset' => 'הפרש זמנים',
+'prefs-advancedediting' => 'אפשרויות מתקדמות',
+'prefs-advancedrc' => 'אפשרויות מתקדמות',
+'prefs-advancedrendering' => 'אפשרויות מתקדמות',
+'prefs-advancedsearchoptions' => 'אפשרויות מתקדמות',
+'prefs-advancedwatchlist' => 'אפשרויות מתקדמות',
+'prefs-display' => 'אפשרויות תצוגה',
+'prefs-diffs' => 'הבדלים בין גרסאות',
# User rights
-'userrights' => 'ניהול הרשאות משתמש', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'ניהול קבוצות משתמש',
-'userrights-user-editname' => 'שם משתמש:',
-'editusergroup' => 'עריכת קבוצות משתמשים',
-'editinguser' => "שינוי הרשאות המשתמש של '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'עריכת קבוצות משתמש',
-'saveusergroups' => 'שמירת קבוצות משתמש',
-'userrights-groupsmember' => 'חבר בקבוצות:',
-'userrights-groups-help' => 'באפשרותכם לשנות את הקבוצות שמשתמש זה חבר בהן:
+'userrights' => 'ניהול הרשאות משתמש',
+'userrights-lookup-user' => 'ניהול קבוצות משתמש',
+'userrights-user-editname' => 'שם משתמש:',
+'editusergroup' => 'עריכת קבוצות משתמשים',
+'editinguser' => "שינוי הרשאות המשתמש של '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'עריכת קבוצות משתמש',
+'saveusergroups' => 'שמירת קבוצות משתמש',
+'userrights-groupsmember' => 'חבר בקבוצות:',
+'userrights-groupsmember-auto' => 'חבר אוטומטית בקבוצות:',
+'userrights-groups-help' => 'באפשרותכם לשנות את הקבוצות שמשתמש זה חבר בהן:
* תיבה מסומנת פירושה שהמשתמש חבר בקבוצה.
* תיבה בלתי מסומנת פירושה שהמשתמש אינו חבר בקבוצה.
* סימון * פירושו שלא תוכלו להסיר משתמש מהקבוצה מרגע שהוספתם אותו אליה, או להפך.',
-'userrights-reason' => 'סיבה:',
-'userrights-no-interwiki' => 'אין לכם הרשאה לערוך הרשאות משתמש באתרים אחרים.',
-'userrights-nodatabase' => 'בסיס הנתונים $1 אינו קיים או אינו מקומי.',
-'userrights-nologin' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] עם הרשאות מתאימות כדי לשנות הרשאות של משתמשים.',
-'userrights-notallowed' => 'לחשבון המשתמש שלכם אין הרשאה לשנות הרשאות של משתמשים.',
-'userrights-changeable-col' => 'קבוצות שבאפשרותכם לשנות',
-'userrights-unchangeable-col' => 'קבוצות שאין באפשרותכם לשנות',
+'userrights-reason' => 'סיבה:',
+'userrights-no-interwiki' => 'אין לכם הרשאה לערוך הרשאות משתמש באתרים אחרים.',
+'userrights-nodatabase' => 'בסיס הנתונים $1 אינו קיים או אינו מקומי.',
+'userrights-nologin' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] עם הרשאות מתאימות כדי לשנות הרשאות של משתמשים.',
+'userrights-notallowed' => 'לחשבון המשתמש שלכם אין הרשאה לשנות הרשאות של משתמשים.',
+'userrights-changeable-col' => 'קבוצות שבאפשרותכם לשנות',
+'userrights-unchangeable-col' => 'קבוצות שאין באפשרותכם לשנות',
# Groups
'group' => 'קבוצה:',
@@ -1410,6 +1469,7 @@ $2',
'right-bigdelete' => 'מחיקת דפים עם היסטוריית דף ארוכה',
'right-deleterevision' => 'מחיקת גרסאות מסוימות של דפים',
'right-deletedhistory' => 'צפייה בגרסאות מחוקות ללא הטקסט השייך להן',
+'right-deletedtext' => 'צפייה בטקסט מחוק ובהבדלים בין גרסאות מחוקות',
'right-browsearchive' => 'חיפוש דפים מחוקים',
'right-undelete' => 'שחזור דף מחוק',
'right-suppressrevision' => 'בדיקה ושחזור של גרסאות המוסתרות ממפעילי המערכת',
@@ -1423,6 +1483,8 @@ $2',
'right-editprotected' => 'עריכת דפים מוגנים (ללא הגנה מדורגת)',
'right-editinterface' => 'עריכת ממשק המשתמש',
'right-editusercssjs' => 'עריכת דפי CSS ו־JavaScript של משתמשים אחרים',
+'right-editusercss' => 'עריכת דפי CSS של משתמשים אחרים',
+'right-edituserjs' => 'עריכת דפי JavaScript של משתמשים אחרים',
'right-rollback' => 'שחזור מהיר של עריכות המשתמש האחרון שערך דף מסוים',
'right-markbotedits' => 'סימון עריכות משוחזרות כעריכות של בוט',
'right-noratelimit' => 'עקיפת הגבלת קצב העריכות',
@@ -1439,6 +1501,8 @@ $2',
'right-siteadmin' => 'נעילת וביטול נעילת בסיס הנתונים',
'right-reset-passwords' => 'איפוס סיסמאות של משתמשים אחרים',
'right-override-export-depth' => 'ייצוא דפים כולל דפים מקושרים עד עומק של חמישה',
+'right-versiondetail' => 'צפייה במידע המורחב על גרסת התוכנה',
+'right-sendemail' => 'שליחת דואר אלקטרוני למשתמשים אחרים',
# User rights log
'rightslog' => 'יומן תפקידים',
@@ -1488,6 +1552,15 @@ $2',
'recentchanges-legend' => 'אפשרויות בשינויים האחרונים',
'recentchangestext' => 'ניתן לעקוב אחרי השינויים האחרונים באתר בדף זה.',
'recentchanges-feed-description' => 'ניתן לעקוב אחרי השינויים האחרונים באתר בדף זה.',
+'recentchanges-label-legend' => 'מקרא: $1',
+'recentchanges-legend-newpage' => '$1 - דף חדש',
+'recentchanges-label-newpage' => 'בעריכה זו נוצר דף חדש',
+'recentchanges-legend-minor' => '$1 - עריכה משנית',
+'recentchanges-label-minor' => 'זוהי עריכה משנית',
+'recentchanges-legend-bot' => '$1 - עריכה של בוט',
+'recentchanges-label-bot' => 'עריכה זו בוצעה על ידי בוט',
+'recentchanges-legend-unpatrolled' => '$1 - עריכה שלא נבדקה',
+'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
'rcnote' => "להלן {{PLURAL:$1|השינוי האחרון|'''$1''' השינויים האחרונים}} {{PLURAL:$2|ביום האחרון|ב־$2 הימים האחרונים}}, עד $5, $4:",
'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
'rclistfrom' => 'הצגת שינויים חדשים החל מ־$1',
@@ -1515,6 +1588,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'שינויים בדפים המקושרים',
+'recentchangeslinked-feed' => 'שינויים בדפים המקושרים',
+'recentchangeslinked-toolbox' => 'שינויים בדפים המקושרים',
'recentchangeslinked-title' => 'שינויים בדפים המקושרים לדף $1',
'recentchangeslinked-backlink' => '→ $1',
'recentchangeslinked-noresult' => 'לא היו שינויים בדפים המקושרים בתקופה זו.',
@@ -1526,8 +1601,8 @@ $2',
# Upload
'upload' => 'העלאת קובץ לשרת',
'uploadbtn' => 'העלאה',
-'reupload' => 'העלאה חוזרת',
'reuploaddesc' => 'ביטול ההעלאה וחזרה לטופס העלאת קבצים לשרת',
+'upload-tryagain' => 'שליחת התיאור החדש של הקובץ',
'uploadnologin' => 'לא נכנסתם לאתר',
'uploadnologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעלות קבצים.',
'upload_directory_missing' => 'שרת האינטרנט אינו יכול ליצור את תיקיית ההעלאות ($1) החסרה.',
@@ -1559,6 +1634,7 @@ $2',
'minlength1' => 'שמות קבצים צריכים להיות בני תו אחד לפחות.',
'illegalfilename' => 'הקובץ "$1" מכיל תווים בלתי חוקיים. אנא שנו את שמו ונסו להעלותו שנית.',
'badfilename' => 'שם הקובץ שונה ל־"$1".',
+'filetype-mime-mismatch' => 'סיומת הקובץ אינה מתאימה לסוג ה־MIME.',
'filetype-badmime' => 'לא ניתן להעלות קבצים עם סוג ה־MIME "$1".',
'filetype-bad-ie-mime' => 'לא ניתן להעלות קובץ זה, כיוון שאינטרנט אקספלורר יזהה אותו כקובץ מסוג "$1", שהוא סוג קובץ אסור שעלול להיות מסוכן.',
'filetype-unwanted-type' => "'''\".\$1\"''' הוא סוג קובץ בלתי מומלץ. {{PLURAL:\$3|סוג הקובץ המומלץ הוא|סוגי הקבצים המומלצים הם}} \$2.",
@@ -1576,7 +1652,6 @@ $2',
* שם הקובץ המועלה: '''<tt>[[:$1]]</tt>'''
* שם הקובץ הקיים: '''<tt>[[:$2]]</tt>'''
אנא בחרו שם אחר.",
-'fileexists-thumb' => "<center>'''קובץ קיים'''</center>",
'fileexists-thumbnail-yes' => "הקובץ הוא כנראה תמונה מוקטנת (ממוזערת). [[$1|thumb]]
אנא בדקו את הקובץ '''<tt>[[:$1]]</tt>'''.
אם הקובץ שבדקתם הוא אותה התמונה בגודל מקורי, אין זה הכרחי להעלות גם תמונה ממוזערת.",
@@ -1592,6 +1667,7 @@ $2',
'file-deleted-duplicate' => 'קובץ זהה לקובץ זה ([[$1]]) נמחק בעבר. אנא בדקו את היסטוריית המחיקה של הקובץ לפני שתעלו אותו מחדש.',
'successfulupload' => 'העלאת הקובץ הושלמה בהצלחה',
'uploadwarning' => 'אזהרת העלאת קבצים',
+'uploadwarning-text' => 'אנא שנו את תיאור הקובץ שלמטה ונסו שוב.',
'savefile' => 'שמירת קובץ',
'uploadedimage' => 'העלה את הקובץ [[$1]]',
'overwroteimage' => 'העלה גרסה חדשה של הקובץ [[$1]]',
@@ -1599,11 +1675,14 @@ $2',
'uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת.',
'php-uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת ברמת PHP. אנא בדקו את ההגדרה file_uploads.',
'uploadscripted' => 'הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על ידי הדפדפן.',
-'uploadcorrupt' => 'קובץ זה אינו תקין או שהסיומת שלו איננה מתאימה. אנא בדקו את הקובץ והעלו אותו שוב.',
'uploadvirus' => 'הקובץ מכיל וירוס! פרטים: <div style="direction: ltr;">$1</div>',
+'upload-source' => 'קובץ המקור',
'sourcefilename' => 'שם הקובץ:',
+'sourceurl' => 'כתובת URL של המקור:',
'destfilename' => 'שמור קובץ בשם:',
'upload-maxfilesize' => 'גודל הקובץ המקסימלי: $1',
+'upload-description' => 'תיאור הקובץ',
+'upload-options' => 'אפשרויות העלאה',
'watchthisupload' => 'מעקב אחרי קובץ זה',
'filewasdeleted' => 'קובץ בשם זה כבר הועלה בעבר, ולאחר מכן נמחק. אנא בדקו את הדף $1 לפני שתמשיכו להעלותו שנית.',
'upload-wasdeleted' => "'''אזהרה: הנכם מעלים קובץ שנמחק בעבר.'''
@@ -1626,15 +1705,46 @@ MGP # Pentax
PICT # שונות
#</pre> <!-- נא להשאיר שורה זו בדיוק כפי שהיא -->',
-'upload-proto-error' => 'פרוטוקול שגוי',
-'upload-proto-error-text' => 'בהעלאה מרוחקת, יש להשתמש בכתובות URL המתחילות עם <code>http://</code> או <code>ftp://</code>.',
-'upload-file-error' => 'שגיאה פנימית',
-'upload-file-error-text' => 'שגיאה פנימית התרחשה בעת הניסיון ליצור קובץ זמני על השרת.
+'upload-proto-error' => 'פרוטוקול שגוי',
+'upload-proto-error-text' => 'בהעלאה מרוחקת, יש להשתמש בכתובות URL המתחילות עם <code>http://</code> או <code>ftp://</code>.',
+'upload-file-error' => 'שגיאה פנימית',
+'upload-file-error-text' => 'שגיאה פנימית התרחשה בעת הניסיון ליצור קובץ זמני על השרת.
אנא צרו קשר עם [[Special:ListUsers/sysop|מפעיל מערכת]].',
-'upload-misc-error' => 'שגיאת העלאה בלתי ידועה',
-'upload-misc-error-text' => 'שגיאת העלאה בלתי ידועה התרחשה במהלך ההעלאה.
+'upload-misc-error' => 'שגיאת העלאה בלתי ידועה',
+'upload-misc-error-text' => 'שגיאת העלאה בלתי ידועה התרחשה במהלך ההעלאה.
אנא ודאו שכתובת ה־URL תקינה וזמינה ונסו שוב.
אם הבעיה חוזרת על עצמה, אנא צרו קשר עם [[Special:ListUsers/sysop|מפעיל מערכת]].',
+'upload-too-many-redirects' => 'ה־URL כוללת הפניות רבות מדי',
+'upload-unknown-size' => 'גודל בלתי ידוע',
+'upload-http-error' => 'התרחשה שגיאת HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'הגישה נדחתה',
+'img-auth-nopathinfo' => 'PATH_INFO חסר.
+השרת אינו מוגדר להעברת מידע זה.
+ייתכן שהוא מבוסס על CGI ולכן אינו יכול לתמוך ב־img_auth.
+ראו http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'הנתיב המבוקש אינו בתיקיית ההעלאות שהוגדרה.',
+'img-auth-badtitle' => 'לא ניתן ליצור כותרת תקינה מתוך "$1".',
+'img-auth-nologinnWL' => 'אינכם מחוברים לחשבון והדף "$1" אינו ברשימה המותרת.',
+'img-auth-nofile' => 'הקובץ "$1" אינו קיים.',
+'img-auth-isdir' => 'אתם מנסים לגשת לתיקייה "$1".
+רק גישה לקבצים מותרת.',
+'img-auth-streaming' => 'מבצע הזרמה של "$1".',
+'img-auth-public' => 'img_auth.php משמש להצגת קבצים מתוך אתר ויקי פרטי.
+אתר ויקי זה מוגדר כציבורי.
+כדי להשיג אבטחה מירבית, img_auth.php מבוטל.',
+'img-auth-noread' => 'למשתמש אין הרשאה לקרוא את "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'כתובת URL בלתי תקינה: $1',
+'http-invalid-scheme' => 'כתובות URL מהסוג "$1" אינן נתמכות.',
+'http-request-error' => 'בקשת ה־HTTP נכשלה עקב שגיאה בלתי ידועה.',
+'http-read-error' => 'שגיאת קריאה של HTTP.',
+'http-timed-out' => 'עבר זמן ההמתנה של בקשת ה־HTTP.',
+'http-curl-error' => 'שגיאה בקבלת כתובת ה־URL: $1',
+'http-host-unreachable' => 'לא ניתן להגיע לכתובת ה־URL.',
+'http-bad-status' => 'הייתה בעיה בשליחת בקשת ה־HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'לא ניתן להגיע ל־URL',
@@ -1643,6 +1753,7 @@ PICT # שונות
'upload-curl-error28-text' => 'לאתר לקח זמן רב מדי לענות. אנא בדקו שהאתר זמין, המתינו מעט ונסו שוב. ייתכן שתרצו לנסות בזמן פחות עמוס.',
'license' => 'רישיון:',
+'license-header' => 'רישיון',
'nolicense' => 'אין',
'license-nopreview' => '(תצוגה מקדימה לא זמינה)',
'upload_source_url' => ' (כתובת URL תקפה ונגישה)',
@@ -1661,38 +1772,42 @@ PICT # שונות
'listfiles_count' => 'גרסאות',
# File description page
-'filehist' => 'היסטוריית הקובץ',
-'filehist-help' => 'לחצו על תאריך/שעה כדי לראות את הקובץ כפי שנראה בעת זו.',
-'filehist-deleteall' => 'מחיקת כל הגרסאות',
-'filehist-deleteone' => 'מחיקה',
-'filehist-revert' => 'שחזור',
-'filehist-current' => 'נוכחית',
-'filehist-datetime' => 'תאריך/שעה',
-'filehist-thumb' => 'תמונה ממוזערת',
-'filehist-thumbtext' => 'תמונה ממוזערת לגרסה מתאריך $1',
-'filehist-nothumb' => 'אין תמונה ממוזערת',
-'filehist-user' => 'משתמש',
-'filehist-dimensions' => 'ממדים',
-'filehist-filesize' => 'גודל הקובץ',
-'filehist-comment' => 'הערה',
-'imagelinks' => 'קישורים לקובץ',
-'linkstoimage' => '{{PLURAL:$1|הדף הבא משתמש|הדפים הבאים משתמשים}} בקובץ זה:',
-'linkstoimage-more' => 'יותר מ{{PLURAL:$1|דף אחד מקשר|־$1 דפים מקשרים}} לקובץ זה.
+'file-anchor-link' => 'קובץ',
+'filehist' => 'היסטוריית הקובץ',
+'filehist-help' => 'לחצו על תאריך/שעה כדי לראות את הקובץ כפי שנראה בעת זו.',
+'filehist-deleteall' => 'מחיקת כל הגרסאות',
+'filehist-deleteone' => 'מחיקה',
+'filehist-revert' => 'שחזור',
+'filehist-current' => 'נוכחית',
+'filehist-datetime' => 'תאריך/שעה',
+'filehist-thumb' => 'תמונה ממוזערת',
+'filehist-thumbtext' => 'תמונה ממוזערת לגרסה מתאריך $1',
+'filehist-nothumb' => 'אין תמונה ממוזערת',
+'filehist-user' => 'משתמש',
+'filehist-dimensions' => 'ממדים',
+'filehist-filesize' => 'גודל הקובץ',
+'filehist-comment' => 'הערה',
+'filehist-missing' => 'הקובץ חסר',
+'imagelinks' => 'קישורים לקובץ',
+'linkstoimage' => '{{PLURAL:$1|הדף הבא משתמש|הדפים הבאים משתמשים}} בקובץ זה:',
+'linkstoimage-more' => 'יותר מ{{PLURAL:$1|דף אחד מקשר|־$1 דפים מקשרים}} לקובץ זה.
הרשימה הבאה מראה רק את {{PLURAL:$1|הדף הראשון שמקשר|$1 הדפים הראשונים שמקשרים}} לקובץ זה.
ניתן לצפות ב[[Special:WhatLinksHere/$2|רשימה המלאה]].',
-'nolinkstoimage' => 'אין דפים המשתמשים בקובץ זה.',
-'morelinkstoimage' => 'ראו [[Special:WhatLinksHere/$1|דפים נוספים]] המשתמשים בקובץ זה.',
-'redirectstofile' => '{{PLURAL:$1|הדף הבא הוא דף הפניה|הדפים הבאים הם דפי הפניה}} לקובץ זה:',
-'duplicatesoffile' => '{{PLURAL:$1|הקובץ הבא זהה|הקבצים הבאים זהים}} לקובץ זה ([[Special:FileDuplicateSearch/$2|לפרטים נוספים]]):',
-'sharedupload' => 'זהו קובץ מתוך $1 וניתן להשתמש בו גם במיזמים אחרים.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'למידע נוסף, ראו את $1.',
-'shareduploadwiki-desc' => 'תיאורו ב$1 המקורי מוצג למטה.',
-'shareduploadwiki-linktext' => 'דף תיאור הקובץ',
-'noimage' => 'לא נמצא קובץ בשם זה, אך יש באפשרותכם $1.',
-'noimage-linktext' => 'להעלות אחד',
-'uploadnewversion-linktext' => 'העלאת גרסה חדשה של קובץ זה',
-'shared-repo-from' => 'מתוך $1', # $1 is the repository name
-'shared-repo' => 'מקום איחסון משותף', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'אין דפים המשתמשים בקובץ זה.',
+'morelinkstoimage' => 'ראו [[Special:WhatLinksHere/$1|דפים נוספים]] המשתמשים בקובץ זה.',
+'redirectstofile' => '{{PLURAL:$1|הדף הבא הוא דף הפניה|הדפים הבאים הם דפי הפניה}} לקובץ זה:',
+'duplicatesoffile' => '{{PLURAL:$1|הקובץ הבא זהה|הקבצים הבאים זהים}} לקובץ זה ([[Special:FileDuplicateSearch/$2|לפרטים נוספים]]):',
+'sharedupload' => 'זהו קובץ מתוך $1 וניתן להשתמש בו גם במיזמים אחרים.',
+'sharedupload-desc-there' => 'זהו קובץ מתוך $1 וניתן להשתמש בו גם במיזמים אחרים.
+למידע נוסף, ראו את [$2 דף תיאור הקובץ].',
+'sharedupload-desc-here' => 'זהו קובץ מתוך $1 וניתן להשתמש בו גם במיזמים אחרים.
+תיאורו ב[$2 דף תיאור הקובץ] שלו מוצג למטה.',
+'filepage-nofile' => 'לא קיים קובץ בשם זה.',
+'filepage-nofile-link' => 'לא קיים קובץ בשם זה, אך באפשרותכם [$1 להעלות אחד].',
+'uploadnewversion-linktext' => 'העלאת גרסה חדשה של קובץ זה',
+'shared-repo-from' => 'מתוך $1',
+'shared-repo' => 'מקום איחסון משותף',
+'shared-repo-name-wikimediacommons' => 'ויקישיתוף',
# File reversion
'filerevert' => 'שחזור $1',
@@ -1724,6 +1839,7 @@ PICT # שונות
** הפרת זכויות יוצרים
** קובץ כפול',
'filedelete-edit-reasonlist' => 'עריכת סיבות המחיקה',
+'filedelete-maintenance' => 'אפשרות המחיקה והשחזור של קבצים מבוטלת זמנית עקב פעולת תחזוקה.',
# MIME search
'mimesearch' => 'חיפוש MIME',
@@ -1744,7 +1860,7 @@ PICT # שונות
# Random page
'randompage' => 'דף אקראי',
-'randompage-nopages' => 'אין דפים במרחב השם "$1".',
+'randompage-nopages' => 'אין דפים ב{{PLURAL:$2|מרחב השם הבא|מרחבי השם הבאים}}: $1.',
# Random redirect
'randomredirect' => 'הפניה אקראית',
@@ -1756,6 +1872,7 @@ PICT # שונות
'statistics-header-edits' => 'סטטיסטיקות עריכה',
'statistics-header-views' => 'סטטיסטיקות צפייה',
'statistics-header-users' => 'סטטיסטיקות משתמשים',
+'statistics-header-hooks' => 'סטטיסטיקות אחרות',
'statistics-articles' => 'דפי תוכן',
'statistics-pages' => 'דפים',
'statistics-pages-desc' => 'כל הדפים באתר הוויקי, כולל דפי שיחה, הפניות, וכדומה',
@@ -1785,8 +1902,8 @@ PICT # שונות
'brokenredirects' => 'הפניות לא תקינות',
'brokenredirectstext' => 'ההפניות שלהלן מפנות לדפים שאינם קיימים:',
-'brokenredirects-edit' => '(עריכה)',
-'brokenredirects-delete' => '(מחיקה)',
+'brokenredirects-edit' => 'עריכה',
+'brokenredirects-delete' => 'מחיקה',
'withoutinterwiki' => 'דפים ללא קישורי שפה',
'withoutinterwiki-summary' => 'הדפים הבאים אינם מקשרים לגרסאות שלהם בשפות אחרות:',
@@ -1894,7 +2011,7 @@ PICT # שונות
# Special:Categories
'categories' => 'קטגוריות',
-'categoriespagetext' => 'הקטגוריות הבאות כוללות דפים או קובצי מדיה.
+'categoriespagetext' => '{{PLURAL:$1|הקטגוריה הבאה כוללת|הקטגוריות הבאות כוללות}} דפים או קובצי מדיה.
[[Special:UnusedCategories|קטגוריות שאינן בשימוש]] אינן מוצגות כאן.
ראו גם את [[Special:WantedCategories|רשימת הקטגוריות המבוקשות]].',
'categoriesfrom' => 'הצגת קטגוריות החל מ:',
@@ -1902,8 +2019,9 @@ PICT # שונות
'special-categories-sort-abc' => 'סידור לפי סדר האלף בית',
# Special:DeletedContributions
-'deletedcontributions' => 'תרומות משתמש מחוקות',
-'deletedcontributions-title' => 'תרומות משתמש מחוקות',
+'deletedcontributions' => 'תרומות משתמש מחוקות',
+'deletedcontributions-title' => 'תרומות משתמש מחוקות',
+'sp-deletedcontributions-contribs' => 'תרומות',
# Special:LinkSearch
'linksearch' => 'קישורים חיצוניים',
@@ -1918,6 +2036,16 @@ PICT # שונות
'listusersfrom' => 'הצגת משתמשים החל מ:',
'listusers-submit' => 'הצגה',
'listusers-noresult' => 'לא נמצאו משתמשים.',
+'listusers-blocked' => '(חסום)',
+
+# Special:ActiveUsers
+'activeusers' => 'רשימת משתמשים פעילים',
+'activeusers-intro' => 'זוהי רשימת המשתמשים שביצעו פעולה כלשהי ב{{PLURAL:$1|יום האחרון|־$1 הימים האחרונים}}.',
+'activeusers-count' => '{{PLURAL:$1|עריכה אחת|$1 עריכות}} ב{{PLURAL:$3|יום האחרון|־$3 הימים האחרונים|יומיים האחרונים}}',
+'activeusers-from' => 'הצגת משתמשים החל מ:',
+'activeusers-hidebots' => 'הסתרת בוטים',
+'activeusers-hidesysops' => 'הסתרת מפעילי מערכת',
+'activeusers-noresult' => 'לא נמצאו משתמשים.',
# Special:Log/newusers
'newuserlogpage' => 'יומן רישום משתמשים',
@@ -1928,17 +2056,23 @@ PICT # שונות
'newuserlog-autocreate-entry' => 'חשבון שנוצר אוטומטית',
# Special:ListGroupRights
-'listgrouprights' => 'רשימת הרשאות לקבוצה',
-'listgrouprights-summary' => 'זוהי רשימה של קבוצות המשתמש המוגדרות באתר זה, עם ההרשאות של כל אחת.
+'listgrouprights' => 'רשימת הרשאות לקבוצה',
+'listgrouprights-summary' => 'זוהי רשימה של קבוצות המשתמש המוגדרות באתר זה, עם ההרשאות של כל אחת.
מידע נוסף על ההרשאות ניתן למצוא [[{{MediaWiki:Listgrouprights-helppage}}|כאן]].',
-'listgrouprights-group' => 'קבוצה',
-'listgrouprights-rights' => 'הרשאות',
-'listgrouprights-helppage' => 'Help:הרשאות',
-'listgrouprights-members' => '(רשימת חברים)',
-'listgrouprights-addgroup' => 'הוספת {{PLURAL:$2|הקבוצה|הקבוצות}}: $1',
-'listgrouprights-removegroup' => 'הסרת {{PLURAL:$2|הקבוצה|הקבוצות}}: $1',
-'listgrouprights-addgroup-all' => 'הוספת כל הקבוצות',
-'listgrouprights-removegroup-all' => 'הסרת כל הקבוצות',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">הרשאה שהוענקה</span>
+* <span class="listgrouprights-revoked">הרשאה שהוסרה</span>',
+'listgrouprights-group' => 'קבוצה',
+'listgrouprights-rights' => 'הרשאות',
+'listgrouprights-helppage' => 'Help:הרשאות',
+'listgrouprights-members' => '(רשימת חברים)',
+'listgrouprights-addgroup' => 'הוספת {{PLURAL:$2|הקבוצה|הקבוצות}}: $1',
+'listgrouprights-removegroup' => 'הסרת {{PLURAL:$2|הקבוצה|הקבוצות}}: $1',
+'listgrouprights-addgroup-all' => 'הוספת כל הקבוצות',
+'listgrouprights-removegroup-all' => 'הסרת כל הקבוצות',
+'listgrouprights-addgroup-self' => 'הוספת {{PLURAL:$2|הקבוצה|הקבוצות}} לחשבון האישי: $1',
+'listgrouprights-removegroup-self' => 'הסרת {{PLURAL:$2|הקבוצה|הקבוצות}} מהחשבון האישי: $1',
+'listgrouprights-addgroup-self-all' => 'הוספת כל הקבוצות לחשבון האישי',
+'listgrouprights-removegroup-self-all' => 'הסרת כל הקבוצות מהחשבון האישי',
# E-mail user
'mailnologin' => 'אין כתובת לשליחה',
@@ -2029,10 +2163,13 @@ $NEWPAGE
--
כדי לשנות את הגדרות רשימת המעקב, בקרו בדף
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+כדי למחוק את הדף מרשימת המעקב שלכם, בקרו בדף
+$UNWATCHURL
למשוב ולעזרה נוספת:
-{{fullurl:Project:עזרה}}',
+{{fullurl::{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'מחיקה',
@@ -2044,11 +2181,12 @@ $NEWPAGE
'delete-confirm' => 'מחיקת $1',
'delete-backlink' => '→ $1',
'delete-legend' => 'מחיקה',
-'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים:",
+'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של בערך {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
'confirmdeletetext' => 'אתם עומדים למחוק דף יחד עם כל ההיסטוריה שלו.
אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נהלי האתר]].',
'actioncomplete' => 'הפעולה בוצעה',
+'actionfailed' => 'הפעולה נכשלה',
'deletedtext' => '<strong><nowiki>$1</nowiki></strong> נמחק. ראו $2 לרשימת המחיקות האחרונות.',
'deletedarticle' => 'מחק את [[$1]]',
'suppressedarticle' => 'הסתיר את [[$1]]',
@@ -2068,18 +2206,19 @@ $NEWPAGE
'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שיקלו שנית את המחיקה.',
# Rollback
-'rollback' => 'שחזור עריכות',
-'rollback_short' => 'שחזור',
-'rollbacklink' => 'שחזור',
-'rollbackfailed' => 'השחזור נכשל',
-'cantrollback' => 'לא ניתן לשחזר את העריכה – התורם האחרון הוא היחיד שכתב דף זה; עם זאת, ניתן למחוק את הדף.',
-'alreadyrolled' => 'לא ניתן לשחזר את עריכת הדף [[:$1]] על ידי [[User:$2|$2]] ([[User talk:$2|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); מישהו אחר כבר ערך או שחזר דף זה.
+'rollback' => 'שחזור עריכות',
+'rollback_short' => 'שחזור',
+'rollbacklink' => 'שחזור',
+'rollbackfailed' => 'השחזור נכשל',
+'cantrollback' => 'לא ניתן לשחזר את העריכה – התורם האחרון הוא היחיד שכתב דף זה; עם זאת, ניתן למחוק את הדף.',
+'alreadyrolled' => 'לא ניתן לשחזר את עריכת הדף [[:$1]] על ידי [[User:$2|$2]] ([[User talk:$2|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); מישהו אחר כבר ערך או שחזר דף זה.
העריכה האחרונה הייתה של [[User:$3|$3]] ([[User talk:$3|שיחה]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "תקציר העריכה היה: \"'''\$1'''\".", # only shown if there is an edit comment
-'revertpage' => 'שוחזר מעריכות של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]]) לעריכה האחרונה של [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'שוחזר מעריכה של $1 לעריכה האחרונה של $2',
-'sessionfailure' => 'נראה שיש בעיה בחיבורכם לאתר;
+'editcomment' => "תקציר העריכה היה: \"'''\$1'''\".",
+'revertpage' => 'שוחזר מעריכות של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]]) לעריכה האחרונה של [[User:$1|$1]]',
+'revertpage-nouser' => 'שוחזר מעריכות של (שם המשתמש הוסר) לעריכה האחרונה של [[User:$1|$1]]',
+'rollback-success' => 'שוחזר מעריכה של $1 לעריכה האחרונה של $2',
+'sessionfailure' => 'נראה שיש בעיה בחיבורכם לאתר;
פעולתכם בוטלה כאמצעי זהירות נגד התחזות לתקשורת ממחשבכם.
אנא חזרו לדף הקודם, העלו אותו מחדש ונסו שוב.',
@@ -2098,7 +2237,7 @@ $NEWPAGE
'protectexpiry' => 'פקיעת ההגנה:',
'protect_expiry_invalid' => 'זמן פקיעת ההגנה בלתי חוקי.',
'protect_expiry_old' => 'זמן פקיעת ההגנה כבר עבר.',
-'protect-unchain' => 'שינוי הרשאות העברה',
+'protect-unchain-permissions' => 'שינוי אפשרויות הגנה נוספות',
'protect-text' => "בדף זה תוכלו לראות ולשנות את רמת ההגנה של הדף '''<nowiki>$1</nowiki>'''. אנא ודאו שאתם פועלים בהתאם בהתאם לנהלי האתר.",
'protect-locked-blocked' => "אינכם יכולים לשנות את רמת ההגנה של הדף בעודכם חסומים.
להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
@@ -2127,7 +2266,7 @@ $NEWPAGE
** מלחמת עריכה בלתי מועילה
** דף בשימוש רב',
'protect-edit-reasonlist' => 'עריכת סיבות ההגנה',
-'protect-expiry-options' => 'שעה:1 hour,יום:1 day,שבוע:1 week,שבועיים:2 weeks,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year,לצמיתות:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'שעה:1 hour,יום:1 day,שבוע:1 week,שבועיים:2 weeks,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year,לצמיתות:infinite',
'restriction-type' => 'הרשאה:',
'restriction-level' => 'רמת ההגבלה:',
'minimum-size' => 'גודל מינימלי',
@@ -2166,6 +2305,7 @@ $NEWPAGE
'undelete-nodiff' => 'לא נמצאה גרסה קודמת.',
'undeletebtn' => 'שחזור',
'undeletelink' => 'צפייה/שחזור',
+'undeleteviewlink' => 'צפייה',
'undeletereset' => 'איפוס',
'undeleteinvert' => 'הפיכת הבחירה',
'undeletecomment' => 'סיבה:',
@@ -2203,19 +2343,24 @@ $1',
'contributions-title' => 'תרומות של המשתמש $1',
'mycontris' => 'התרומות שלי',
'contribsub2' => 'עבור $1 ($2)',
-'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.', # Optional parameter: $1 is the user name
+'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.',
'uctop' => '(אחרון)',
'month' => 'עד החודש:',
'year' => 'עד השנה:',
-'sp-contributions-newbies' => 'הצגת תרומות של משתמשים חדשים בלבד',
-'sp-contributions-newbies-sub' => 'עבור משתמשים חדשים',
-'sp-contributions-newbies-title' => 'תרומות של משתמשים חדשים',
-'sp-contributions-blocklog' => 'יומן חסימות',
-'sp-contributions-logs' => 'יומנים',
-'sp-contributions-search' => 'חיפוש תרומות',
-'sp-contributions-username' => 'שם משתמש או כתובת IP:',
-'sp-contributions-submit' => 'חיפוש',
+'sp-contributions-newbies' => 'הצגת תרומות של משתמשים חדשים בלבד',
+'sp-contributions-newbies-sub' => 'עבור משתמשים חדשים',
+'sp-contributions-newbies-title' => 'תרומות של משתמשים חדשים',
+'sp-contributions-blocklog' => 'יומן חסימות',
+'sp-contributions-deleted' => 'תרומות משתמש מחוקות',
+'sp-contributions-logs' => 'יומנים',
+'sp-contributions-talk' => 'שיחה',
+'sp-contributions-userrights' => 'ניהול הרשאות משתמש',
+'sp-contributions-blocked-notice' => 'משתמש זה חסום כרגע.
+הפעולה האחרונה ביומן החסימות מוצגת להלן:',
+'sp-contributions-search' => 'חיפוש תרומות',
+'sp-contributions-username' => 'שם משתמש או כתובת IP:',
+'sp-contributions-submit' => 'חיפוש',
# What links here
'whatlinkshere' => 'דפים המקושרים לכאן',
@@ -2239,6 +2384,7 @@ $1',
# Block/unblock
'blockip' => 'חסימת משתמש',
+'blockip-title' => 'חסימת משתמש',
'blockip-legend' => 'חסימת משתמש',
'blockiptext' => 'השתמשו בטופס שלהלן כדי לחסום את הרשאות הכתיבה ממשתמש או כתובת IP ספציפיים.
@@ -2264,7 +2410,7 @@ $1',
'ipbenableautoblock' => 'חסימה גם של כתובת ה־IP שלו וכל כתובת IP אחרת שישתמש בה',
'ipbsubmit' => 'חסימה',
'ipbother' => 'זמן אחר:',
-'ipboptions' => 'שעתיים:2 hours,יום:1 day,שלושה ימים:3 days,שבוע:1 week,שבועיים:2 weeks,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year,לצמיתות:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'שעתיים:2 hours,יום:1 day,שלושה ימים:3 days,שבוע:1 week,שבועיים:2 weeks,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year,לצמיתות:infinite',
'ipbotheroption' => 'אחר',
'ipbotherreason' => 'סיבה אחרת/נוספת:',
'ipbhidename' => 'הסתרת שם המשתמש מהעריכות ומהרשימות',
@@ -2294,9 +2440,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 חסימות זמניות',
'ipblocklist-sh-addressblocks' => '$1 חסימות של כתובות IP יחידות',
'ipblocklist-submit' => 'חיפוש',
+'ipblocklist-localblock' => 'חסימה מקומית',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
'blocklistline' => '$1 $2 חסם את $3 ($4)',
'infiniteblock' => 'לצמיתות',
-'expiringblock' => 'פוקע $1',
+'expiringblock' => 'פוקע ב־$2, $1',
'anononlyblock' => 'משתמשים אנונימיים בלבד',
'noautoblockblock' => 'חסימה אוטומטית מבוטלת',
'createaccountblock' => 'יצירת חשבונות נחסמה',
@@ -2310,7 +2458,8 @@ $1',
'contribslink' => 'תרומות',
'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]]. הנימוק לחסימה: "$2".',
'blocklogpage' => 'יומן חסימות',
-'blocklog-fulllog' => 'יומן חסימות מלא',
+'blocklog-showlog' => 'משתמש זה נחסם בעבר. יומן החסימות מוצג למטה:',
+'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר. יומן ההסתרות מוצג למטה:',
'blocklogentry' => 'חסם את [[$1]] למשך $2 $3',
'reblock-logentry' => 'שינה את הגדרות החסימה של [[$1]] עם זמן פקיעה של $2 $3',
'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשים. כתובות IP הנחסמות באופן אוטומטי אינן מופיעות.
@@ -2331,9 +2480,11 @@ $1',
'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם',
'ipb-needreblock' => '== כבר נחסם ==
$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
'ipb_cant_unblock' => 'שגיאה: חסימה מספר $1 לא נמצאה. ייתכן שהיא כבר שוחררה.',
'ipb_blocked_as_range' => 'שגיאה: כתובת ה־IP $1 אינה חסומה ישירות ולכן לא ניתן לשחרר את חסימתה. עם זאת, היא חסומה כחלק מהטווח $2, שניתן לשחרר את חסימתו.',
'ip_range_invalid' => 'טווח IP שגוי.',
+'ip_range_toolarge' => 'לא ניתן לחסום טווחים גדולים מ־/$1.',
'blockme' => 'חסום אותי',
'proxyblocker' => 'חוסם פרוקסי',
'proxyblocker-disabled' => 'אפשרות זו מבוטלת.',
@@ -2342,6 +2493,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'sorbsreason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו.',
'sorbs_create_account_reason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו. אינכם יכולים ליצור חשבון.',
'cant-block-while-blocked' => 'אינכם יכולים לחסום משתמשים אחרים כשאתם חסומים.',
+'cant-see-hidden-user' => 'המשתמש שאתם מנסים לחסום כבר נחסם והוסתר. כיוון שאין לכם את ההרשאה לחסימת משתמש והסתרתו, אינכם רשאים לצפות בחסימת המשתמש או לערוך אותה.',
# Developer tools
'lockdb' => 'נעילת בסיס נתונים',
@@ -2387,6 +2539,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
במקרים אלו, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.',
'movearticle' => 'העברת דף:',
+'moveuserpage-warning' => "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
'movenologin' => 'לא נכנסתם לאתר',
'movenologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.',
'movenotallowed' => 'אינכם מורשים להעביר דפים.',
@@ -2397,7 +2550,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'move-watch' => 'מעקב אחרי דף המקור ואחרי דף היעד',
'movepagebtn' => 'העברה',
'pagemovedsub' => 'ההעברה הושלמה בהצלחה',
-'movepage-moved' => 'הדף "$1" הועבר לשם "$2".', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'הדף "$1" הועבר לשם "$2".',
'movepage-moved-redirect' => 'נוצרה הפניה.',
'movepage-moved-noredirect' => 'יצירת ההפניה בוטלה.',
'articleexists' => 'קיים כבר דף עם אותו שם, או שהשם שבחרתם אינו חוקי.
@@ -2438,6 +2591,12 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'imageinvalidfilename' => 'שם קובץ היעד אינו תקין',
'fix-double-redirects' => 'עדכון הפניות לכותרת הדף המקורית',
'move-leave-redirect' => 'השארת הפניה בדף המקורי',
+'protectedpagemovewarning' => "'''אזהרה:''' דף זה ננעל כך שרק מפעילי מערכת יכולים להעביר אותו. פעולת היומן האחרונה מוצגת להלן:",
+'semiprotectedpagemovewarning' => "'''הערה:''' דף זה ננעל כך שרק משתמשים רשומים יכולים להעביר אותו. פעולת היומן האחרונה מוצגת להלן:",
+'move-over-sharedrepo' => '== הקובץ קיים ==
+[[:$1]] כבר קיים כקובץ משותף. העברת הקובץ לכותרת זו תדרוס את הקובץ המשותף.',
+'file-exists-sharedrepo' => 'קובץ בשם שנבחר כבר קיים כקובץ משותף.
+אנא בחרו שם אחר.',
# Export
'export' => 'ייצוא דפים',
@@ -2460,16 +2619,22 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'export-pagelinks' => 'כלילת דפים מקושרים עד לעומק של:',
# Namespace 8 related
-'allmessages' => 'הודעות המערכת',
-'allmessagesname' => 'שם',
-'allmessagesdefault' => 'טקסט ברירת המחדל של ההודעה',
-'allmessagescurrent' => 'הטקסט הנוכחי של ההודעה',
-'allmessagestext' => 'זוהי רשימת כל הודעות המערכת שבמרחב השם {{ns:mediawiki}}, המשמשות את ממשק האתר.
+'allmessages' => 'הודעות המערכת',
+'allmessagesname' => 'שם',
+'allmessagesdefault' => 'טקסט ברירת המחדל של ההודעה',
+'allmessagescurrent' => 'הטקסט הנוכחי של ההודעה',
+'allmessagestext' => 'זוהי רשימת כל הודעות המערכת שבמרחב השם {{ns:mediawiki}}, המשמשות את ממשק האתר.
מפעילי המערכת יכולים לערוך את ההודעות בלחיצה על שם ההודעה.',
-'allmessagesnotsupportedDB' => 'לא ניתן להשתמש בדף זה כיוון ש־wgUseDatabseMessages מבוטל.',
-'allmessagesfilter' => 'מסנן שמות ההודעות:',
-'allmessagesmodified' => 'רק הודעות ששונו',
+'allmessagesnotsupportedDB' => 'לא ניתן להשתמש בדף זה כיוון ש־wgUseDatabseMessages מבוטל.',
+'allmessages-filter-legend' => 'מסנן',
+'allmessages-filter' => 'סינון לפי מצב ההודעה:',
+'allmessages-filter-unmodified' => 'הודעות שלא שונו',
+'allmessages-filter-all' => 'הכול',
+'allmessages-filter-modified' => 'הודעות ששונו',
+'allmessages-prefix' => 'סינון לפי קידומת:',
+'allmessages-language' => 'שפה:',
+'allmessages-filter-submit' => 'הצגה',
# Thumbnails
'thumbnail-more' => 'הגדל',
@@ -2479,6 +2644,9 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'djvu_no_xml' => 'לא ניתן היה לקבל את ה־XML עבור קובץ ה־DjVu',
'thumbnail_invalid_params' => 'פרמטרים שגויים לתמונה הממוזערת',
'thumbnail_dest_directory' => 'לא ניתן היה ליצור את תיקיית היעד',
+'thumbnail_image-type' => 'סוג התמונה אינו נתמך',
+'thumbnail_gd-library' => 'הגדרת הספריה GD אינה שלמה: חסרה הפונקציה $1',
+'thumbnail_image-missing' => 'נראה שהקובץ הבא חסר: $1',
# Special:Import
'import' => 'ייבוא דפים',
@@ -2542,6 +2710,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'tooltip-ca-viewsource' => 'זהו דף מוגן, אך באפשרותכם לצפות במקורו',
'tooltip-ca-history' => 'גרסאות קודמות של דף זה',
'tooltip-ca-protect' => 'הגנה על דף זה',
+'tooltip-ca-unprotect' => 'הסרת ההגנה על דף זה',
'tooltip-ca-delete' => 'מחיקת דף זה',
'tooltip-ca-undelete' => 'שחזור עריכות שנעשו בדף זה לפני שנמחק',
'tooltip-ca-move' => 'העברת דף זה',
@@ -2552,6 +2721,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'tooltip-search-fulltext' => 'חיפוש טקסט זה בדפים',
'tooltip-p-logo' => 'ביקור בעמוד הראשי',
'tooltip-n-mainpage' => 'ביקור בעמוד הראשי',
+'tooltip-n-mainpage-description' => 'ביקור בעמוד הראשי',
'tooltip-n-portal' => 'אודות המיזם, איך תוכלו לעזור, איפה למצוא דברים',
'tooltip-n-currentevents' => 'מציאת מידע רקע על האירועים האחרונים',
'tooltip-n-recentchanges' => 'רשימת השינויים האחרונים באתר',
@@ -2598,6 +2768,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'chick.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Chick בלבד */',
'simple.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Simple בלבד */',
'modern.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Modern בלבד */',
+'vector.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Vector בלבד */',
'print.css' => '/* הסגנונות הנכתבים כאן ישפיעו על הפלט בהדפסה בלבד */',
'handheld.css' => '/* הסגנונות הנכתבים כאן ישפיעו על מכשירים ניידים המבוססים על העיצוב שבהגדרה $wgHandheldStyle בלבד */',
@@ -2611,6 +2782,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'chick.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Chick */',
'simple.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Simple */',
'modern.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Modern */',
+'vector.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata מבוטל בשרת זה.',
@@ -2620,10 +2792,12 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
# Attribution
'anonymous' => '{{PLURAL:$1|משתמש אנונימי|משתמשים אנונימיים}} של {{SITENAME}}',
'siteuser' => 'משתמש {{SITENAME}} $1',
-'lastmodifiedatby' => 'דף זה שונה לאחרונה בתאריך $2, $1 על ידי $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'משתמש אנונימי של {{SITENAME}} $1',
+'lastmodifiedatby' => 'דף זה שונה לאחרונה בתאריך $2, $1 על ידי $3.',
'othercontribs' => 'מבוסס על העבודה של $1.',
'others' => 'אחרים',
'siteusers' => '{{PLURAL:$2|משתמש|משתמשי}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|משתמש אנונימי|משתמשים אנונימיים}} של {{SITENAME}} $1',
'creditspage' => 'קרדיטים בדף',
'nocredits' => 'אין קרדיטים זמינים בדף זה.',
@@ -2653,6 +2827,7 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'skinname-chick' => "צ'יק",
'skinname-simple' => 'פשוט',
'skinname-modern' => 'מודרני',
+'skinname-vector' => 'וקטור',
# Math options
'mw_math_png' => 'תמיד הצג כ־PNG',
@@ -2662,11 +2837,22 @@ $1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסי
'mw_math_modern' => 'מומלץ לדפדפנים עדכניים',
'mw_math_mathml' => 'MathML אם אפשר (ניסיוני)',
+# Math errors
+'math_failure' => 'עיבוד הנוסחה נכשל',
+'math_unknown_error' => 'שגיאה לא ידועה',
+'math_unknown_function' => 'פונקציה לא מוכרת',
+'math_lexing_error' => 'שגיאת לקסינג',
+'math_syntax_error' => 'שגיאת תחביר',
+'math_image_error' => 'ההמרה ל־PNG נכשלה; אנא בדקו אם התקנתם נכון את latex, את dvips, את gs ואת convert.',
+'math_bad_tmpdir' => 'התוכנה לא הצליחה לכתוב או ליצור את הספרייה הזמנית של המתמטיקה',
+'math_bad_output' => 'התוכנה לא הצליחה לכתוב או ליצור את ספריית הפלט של המתמטיקה',
+'math_notexvc' => 'קובץ בר־ביצוע של texvc אינו זמין; אנא צפו בקובץ math/README למידע על ההגדרות.',
+
# Patrolling
'markaspatrolleddiff' => 'סימון השינוי כבדוק',
'markaspatrolledtext' => 'סימון דף זה כבדוק',
'markedaspatrolled' => 'השינוי סומן כבדוק',
-'markedaspatrolledtext' => 'השינוי שבחרתם סומן כבדוק.',
+'markedaspatrolledtext' => 'השינוי שבחרתם בדף [[:$1]] סומן כבדוק.',
'rcpatroldisabled' => 'אפשרות סימון השינויים כבדוקים מבוטלת',
'rcpatroldisabledtext' => 'התכונה של סימון שינוי כבדוק בשינויים האחרונים מבוטלת.',
'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
@@ -2696,13 +2882,10 @@ $1',
'previousdiff' => '→ מעבר להשוואת הגרסאות הקודמת',
'nextdiff' => 'מעבר להשוואת הגרסאות הבאה ←',
-# Visual comparison
-'visual-comparison' => 'השוואה חזותית',
-
# Media information
'mediawarning' => "'''אזהרה:''' סוג קובץ זה עלול להכיל קוד זדוני.
הרצת הקוד עלולה לסכן את המערכת שלכם.",
-'imagemaxsize' => 'הגבלת תמונות בדפי תיאור הקובץ ל:',
+'imagemaxsize' => 'גודל תמונה מירבי:<br />(לדפי תיאור קובץ)',
'thumbsize' => 'הקטנה לגודל של:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|דף אחד|$3 דפים}}',
'file-info' => '(גודל הקובץ: $1, סוג MIME: $2)',
@@ -2711,6 +2894,8 @@ $1',
'svg-long-desc' => '(קובץ SVG, הגודל המקורי: $1 × $2 פיקסלים, גודל הקובץ: $3)',
'show-big-image' => 'תמונה ברזולוציה גבוהה יותר',
'show-big-image-thumb' => '<small>גודל התצוגה הזו: $1 × $2 פיקסלים</small>',
+'file-info-gif-looped' => 'בלולאה',
+'file-info-gif-frames' => '{{PLURAL:$1|תמונה אחת|$1 תמונות}}',
# Special:NewFiles
'newimages' => 'גלריית קבצים חדשים',
@@ -2743,7 +2928,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'רוחב',
@@ -2871,14 +3056,14 @@ $1',
'exif-unknowndate' => 'תאריך בלתי ידוע',
-'exif-orientation-1' => 'רגילה', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'הפוך אופקית', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'מסובב 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'הפוך אנכית', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'מסובב 90° נגד כיוון השעון והפוך אנכית', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'מסובב 90° עם כיוון השעון', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'מסובב 90° עם כיוון השעון והפוך אנכית', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'מסובב 90° נגד כיוון השעון', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'רגילה',
+'exif-orientation-2' => 'הפוך אופקית',
+'exif-orientation-3' => 'מסובב 180°',
+'exif-orientation-4' => 'הפוך אנכית',
+'exif-orientation-5' => 'מסובב 90° נגד כיוון השעון והפוך אנכית',
+'exif-orientation-6' => 'מסובב 90° עם כיוון השעון',
+'exif-orientation-7' => 'מסובב 90° עם כיוון השעון והפוך אנכית',
+'exif-orientation-8' => 'מסובב 90° נגד כיוון השעון',
'exif-planarconfiguration-1' => 'פורמט חסון',
'exif-planarconfiguration-2' => 'פורמט שטוח',
@@ -3000,7 +3185,7 @@ $1',
'exif-gpsmeasuremode-2' => 'מדידה בשני ממדים',
'exif-gpsmeasuremode-3' => 'מדידה בשלושה ממדים',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'קילומטרים בשעה',
'exif-gpsspeed-m' => 'מיילים בשעה',
'exif-gpsspeed-n' => 'מיילים ימיים בשעה',
@@ -3019,6 +3204,7 @@ $1',
'watchlistall2' => 'הכול',
'namespacesall' => 'הכול',
'monthsall' => 'הכול',
+'limitall' => 'הכול',
# E-mail address confirmation
'confirmemail' => 'אימות כתובת דוא"ל',
@@ -3041,11 +3227,11 @@ $1',
'confirmemail_subject' => 'קוד אישור דוא"ל מ{{grammar:תחילית|{{SITENAME}}}}',
'confirmemail_body' => 'מישהו, כנראה אתם (מכתובת ה־IP הזו: $1), רשם את החשבון "$2" עם כתובת הדוא"ל הזו ב{{grammar:תחילית|{{SITENAME}}}}.
-כדי לוודא שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:
+כדי לאשר שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:
$3
-אם *לא* אתם רשמתם את החשבון, השתמשו בקישור זה כדי לבטל את אימות כתובת הדוא"ל:
+אם *לא* אתם רשמתם את החשבון, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא"ל:
$5
@@ -3206,7 +3392,7 @@ $1',
'duplicate-defaultsort' => '\'\'\'אזהרה:\'\'\' המיון הרגיל "$2" דורס את המיון הרגיל המוקדם ממנו "$1".',
# Special:Version
-'version' => 'גרסת התוכנה', # Not used as normal message but as header for the special page itself
+'version' => 'גרסת התוכנה',
'version-extensions' => 'הרחבות מותקנות',
'version-specialpages' => 'דפים מיוחדים',
'version-parserhooks' => 'הרחבות מפענח',
@@ -3220,7 +3406,7 @@ $1',
'version-skin-extension-functions' => 'עיצובים',
'version-hook-name' => 'שם ה־Hook',
'version-hook-subscribedby' => 'הפונקציה הרושמת',
-'version-version' => 'גרסה',
+'version-version' => '(גרסה $1)',
'version-license' => 'רישיון',
'version-software' => 'תוכנות מותקנות',
'version-software-product' => 'תוכנה',
@@ -3301,4 +3487,15 @@ $1',
'dberr-outofdate' => 'שימו לב שהתוכן שלנו ששמר בזיכרון המטמון עשוי שלא להיות מעודכן.',
'dberr-cachederror' => 'זהו עותק שמור של המידע, והוא עשוי שלא להיות מעודכן.',
+# HTML forms
+'htmlform-invalid-input' => 'יש בעיות עם חלק מהקלט שהכנסתם',
+'htmlform-select-badoption' => 'הערך שציינתם אינו אפשרות תקינה.',
+'htmlform-int-invalid' => 'הערך שציינתם אינו מספר שלם.',
+'htmlform-float-invalid' => 'הערך שציינתם אינו מספר.',
+'htmlform-int-toolow' => 'הערך שציינתם הוא מתחת למינימום, $1',
+'htmlform-int-toohigh' => 'הערך שציינתם הוא מעל למקסימום, $1',
+'htmlform-submit' => 'שליחה',
+'htmlform-reset' => 'ביטול השינויים',
+'htmlform-selectorother-other' => 'אחר',
+
);
diff --git a/languages/messages/MessagesHi.php b/languages/messages/MessagesHi.php
index cbcc1901..427c129b 100644
--- a/languages/messages/MessagesHi.php
+++ b/languages/messages/MessagesHi.php
@@ -85,6 +85,7 @@ $messages = array(
'tog-enotifminoredits' => 'छोटे बदलावों के लिये भी मुझे इ-मेल भेजें',
'tog-enotifrevealaddr' => 'सूचना इ-मेल में मेरा इ-मेल पता दर्शायें',
'tog-shownumberswatching' => 'ध्यान रखें सदस्योंकी संख्या दर्शायें',
+'tog-oldsig' => 'मौजूदा दस्तखत की झलक:',
'tog-fancysig' => 'दस्तखत का विकिपाठ की तरह इस्तेमाल करें (बिना स्वचालित कड़ी के)',
'tog-externaleditor' => 'मूल रूप से बाह्य संपादन तंत्र का इस्तेमाल करें (केवल विशेषज्ञों के लिए, इसके लिए संगणक पर खास जमाव चाहिए होंगे)',
'tog-externaldiff' => 'मूल रूप से अंतर देखने के लिए बाहरी तंत्र का इस्तेमाल करें (केवल विशेषज्ञों के लिए, इसके लिए संगणक पर खास जमाव करने होंगे)',
@@ -107,6 +108,13 @@ $messages = array(
'underline-never' => 'कभीभी नहीं',
'underline-default' => 'ब्राउज़र डिफ़ॉल्ट',
+# Font style option in Special:Preferences
+'editfont-style' => 'संपादन क्षेत्र की मुद्रलिपि की शैली:',
+'editfont-default' => 'विचरक के आधार पर',
+'editfont-monospace' => 'एकल स्थल मुद्रलिपि',
+'editfont-sansserif' => 'बिना नोकों वाली मुद्रलिपि',
+'editfont-serif' => 'नोकों वाली मुद्रलिपि',
+
# Dates
'sunday' => 'रविवार',
'monday' => 'सोमवार',
@@ -166,7 +174,7 @@ $messages = array(
'category-media-header' => '"$1" श्रेणी में होनेवाली मीडिया',
'category-empty' => "''यह श्रेणी वर्तमान में कोई लेख या मीडिया(संचार-माध्यम) नही रखती''",
'hidden-categories' => '{{PLURAL:$1|छुपाई हुई श्रेणी|छुपाई हुई श्रेणियाँ}}',
-'hidden-category-category' => 'छुपाई हुई श्रेणियाँ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'छुपाई हुई श्रेणियाँ',
'category-subcat-count' => '{{PLURAL:$2|इस श्रेणी में सिर्फ निम्नलिखित उपश्रेणी हैं|इस श्रेणी में निम्नलिखित {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणियाँ}} हैं, कुल उपश्रेणियाँ $2 ।}}',
'category-subcat-count-limited' => 'इस श्रेणीमें निम्नलिखित {{PLURAL:$1|उपश्रेणी हैं|$1 उपश्रेणियाँ हैं}}.',
'category-article-count' => '{{PLURAL:$2|इस श्रेणी में सिर्फ निम्नलिखित लेख हैं ।|इस श्रेणीमें निम्नलिखित {{PLURAL:$1|लेख है|$1 लेख हैं}}, कुल लेख $2 ।}}',
@@ -174,6 +182,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|इस श्रेणी में सिर्फ निम्नलिखित फ़ाईल हैं ।|इस श्रेणीमें निम्नलिखित {{PLURAL:$1|फ़ाईल|$1 फ़ाईलें}} हैं, कुल फ़ाईलें $2 ।}}',
'category-file-count-limited' => 'इस श्रेणीमें निम्नलिखित {{PLURAL:$1|फ़ाईल है ।|फ़ाईलें हैं ।}}',
'listingcontinuesabbrev' => 'आगे.',
+'index-category' => 'सूचीबद्ध पन्ने',
+'noindex-category' => 'असूचीबद्ध पन्ने',
'mainpagetext' => "'''मीडियाविकिका इन्स्टॉलेशन पूरा हो गया हैं ।'''",
'mainpagedocfooter' => 'विकि सॉफ्टवेयरके इस्तेमाल के लिये [http://meta.wikimedia.org/wiki/Help:Contents उपयोगकर्ता गाईड] देखें ।
@@ -183,10 +193,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ मीडियाविकिके बारे में प्राय: पूछे जाने वाले सवाल]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिस्ट]',
-'about' => 'अबाउट',
-'article' => 'लेख',
-'newwindow' => '(नया विंडो में खुलता है)',
-'cancel' => 'रद्द करें',
+'about' => 'अबाउट',
+'article' => 'लेख',
+'newwindow' => '(नया विंडो में खुलता है)',
+'cancel' => 'रद्द करें',
+'moredotdotdot' => 'और...',
+'mypage' => 'मेरा पृष्ठ',
+'mytalk' => 'मेरी सदस्य वार्ता',
+'anontalk' => 'इस आई पी के लिये वार्ता',
+'navigation' => 'भ्रमण',
+'and' => '&#32;और',
+
+# Cologne Blue skin
'qbfind' => 'खोज',
'qbbrowse' => 'ब्राउज़',
'qbedit' => 'बदलें',
@@ -194,15 +212,35 @@ $messages = array(
'qbpageinfo' => 'पृष्ठ जानकारी',
'qbmyoptions' => 'मेरे पन्नें',
'qbspecialpages' => 'विशेष पन्नें',
-'moredotdotdot' => 'और...',
-'mypage' => 'मेरा पृष्ठ',
-'mytalk' => 'मेरी सदस्य वार्ता',
-'anontalk' => 'इस आई पी के लिये वार्ता',
-'navigation' => 'भ्रमण',
-'and' => '&#32;और',
-
-# Metadata in edit box
-'metadata_help' => 'मेटाडाटा:',
+'faq' => 'अक्सर पूछे जाने वाले सवाल',
+'faqpage' => 'Project:अक्सर पूछे जाने वाले सवाल',
+
+# Vector skin
+'vector-action-addsection' => 'विषय जोड़ें',
+'vector-action-delete' => 'मिटाएँ',
+'vector-action-move' => 'स्थानांतरण करें',
+'vector-action-protect' => 'सुरक्षित करें',
+'vector-action-undelete' => 'मिटाना वापस लें',
+'vector-action-unprotect' => 'सुरक्षा हटाएँ',
+'vector-namespace-category' => 'श्रेणी',
+'vector-namespace-help' => 'सहायता पन्ना',
+'vector-namespace-image' => 'संचका',
+'vector-namespace-main' => 'पन्ना',
+'vector-namespace-media' => 'माध्यम पन्ना',
+'vector-namespace-mediawiki' => 'संदेश',
+'vector-namespace-project' => 'परियोजना पन्ना',
+'vector-namespace-special' => 'खास पन्ना',
+'vector-namespace-talk' => 'वार्ता',
+'vector-namespace-template' => 'साँचा',
+'vector-namespace-user' => 'सदस्य पन्ना',
+'vector-view-create' => 'बनाएँ',
+'vector-view-edit' => 'संपादन',
+'vector-view-history' => 'इतिहास देखें',
+'vector-view-view' => 'पढ़ें',
+'vector-view-viewsource' => 'स्रोत देखें',
+'actions' => 'क्रियाएँ',
+'namespaces' => 'नामस्थान',
+'variants' => 'संस्करण',
'errorpagetitle' => 'त्रुटि',
'returnto' => 'लौटें $1.',
@@ -252,18 +290,22 @@ $messages = array(
'otherlanguages' => 'अन्य भाषाएँ',
'redirectedfrom' => '($1 से भेजा गया)',
'redirectpagesub' => 'पुनर्निर्देश पृष्ठ',
-'lastmodifiedat' => 'इस पन्ने का पिछला बदलाव $1 को $2 बजे हुआ था।', # $1 date, $2 time
+'lastmodifiedat' => 'इस पन्ने का पिछला बदलाव $1 को $2 बजे हुआ था।',
'viewcount' => 'यह पृष्ठ {{PLURAL:$1|एक|$1}} बार देखा गया है',
'protectedpage' => 'सुरक्षित पृष्ठ',
'jumpto' => 'यहाँ जाएँ:',
'jumptonavigation' => 'भ्रमण',
'jumptosearch' => 'खोज',
+'view-pool-error' => 'मुआफ़ करें, इस समय सेवकों पर बहुत भार चढ़ा हुआ है।
+बहुत सारे लोग इस पन्ने को देखने की कोशिश कर रहे हैं।
+कुछ समय इंतज़ार कर के फिर से इस पन्ने तक जाने की कोशिश करें।
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} के बारे में',
'aboutpage' => 'Project:परिचय',
'copyright' => 'उपलब्ध सामग्री $1 के अधीन है।',
-'copyrightpagename' => '{{SITENAME}} कॉपीराइट',
'copyrightpage' => '{{ns:project}}:सर्वाधिकार',
'currentevents' => 'हाल की घटनाएँ',
'currentevents-url' => 'Project:हाल की घटनाएँ',
@@ -271,8 +313,6 @@ $messages = array(
'disclaimerpage' => 'Project:साधारण अस्वीकरण',
'edithelp' => 'संपादन में सहायता',
'edithelppage' => 'Help:संपादन',
-'faq' => 'अक्सर पूछे जाने वाले सवाल',
-'faqpage' => 'Project:अक्सर पूछे जाने वाले सवाल',
'helppage' => 'Help:सहायता',
'mainpage' => 'मुख्य पृष्ठ',
'mainpage-description' => 'मुख्य पृष्ठ',
@@ -353,10 +393,6 @@ $messages = array(
"$1"
कार्यसमूह "$2" से।
आँकड़ाकोष से त्रुटि आई "$3: $4"',
-'noconnect' => 'माफ किजीये! यह विकि तकनीकी समस्याओं के कारण डाटाबेस सर्व्हर से संपर्क करने के लिये असमर्थ हैं ।<br />
-$1',
-'nodb' => 'डाटाबेस $1 का चयन नहीं कर सकें',
-'cachederror' => 'नीचे दिया हुवा अवतरण कैश मेमरी से लिया गया है, और यह अद्यतन जानकारीयुक्त ना होने की आशंका हैं ।',
'laggedslavemode' => 'सूचना: यह लेख अद्यतन जानकारीयुक्त ना होने की आशंका हैं ।',
'readonly' => 'डाटाबेस लॉक किया हुवा हैं',
'enterlockreason' => 'लॉक करने कारण दिजीये, साथ ही लॉक खुलने का लगभग आकलन दिजीयें ।',
@@ -374,6 +410,7 @@ $1',
'readonly_lag' => 'उपमुख्य डाटाबेस सर्व्हर्‌स मुख्य डाटाबेस सर्व्हर तक पहूंचने से पहले ही मुख्य डाटाबेस सर्व्हर लॉक हो गया है ।',
'internalerror' => 'आन्तरिक गलती',
'internalerror_info' => 'आन्तरिक गलती: $1',
+'fileappenderror' => '"$1" के आगे "$2" नहीं जुड़ पाया',
'filecopyerror' => '"$1" फ़ाईलकी "$2" यह कापी नहीं बना पायें ।',
'filerenameerror' => '"$1" फ़ाईल का नाम बदलकर "$2" नहीं कर पायें ।',
'filedeleteerror' => '"$1" फ़ाईलको हटा नहीं सकें ।',
@@ -383,7 +420,8 @@ $1',
'unexpected' => 'अनपेक्षित मूल्य: "$1"="$2".',
'formerror' => 'गलती: फॉर्म सबमीट नहीं कर पायें',
'badarticleerror' => 'इस पन्ने पर यह क्रिया नहीं कर सकतें ।',
-'cannotdelete' => 'इस पन्ने या चित्र को हटाया नहीं जा सका । (शायद इसे किसी और ने पहले ही हटा दिया हो )',
+'cannotdelete' => '"$1" पन्ने या फाइल को हटाया नहीं जा सकता.
+शायद किसी और ने इसे पहले ही हटा दिया हो.',
'badtitle' => 'खराब शीर्षक',
'badtitletext' => 'आपके द्वारा पूछा गया लेख का शीर्षक अयोग्य, ख़ाली या गलतीसे जुडा हुवा आंतर-भाषिय या आंतर-विकि शीर्षक हैं । इसमें एक या एकसे ज्यादा ऐसे कॅरेक्टर है जो शीर्षकमें इस्तेमाल नहीं किये जा सकते है ।',
'perfcached' => 'नीचे दिया हुवा पाठ्य कैश मेमरीसे लिया हुवा होने के कारण अद्यतन जानकारीयुक्त ना होने की संभावना है ।',
@@ -416,7 +454,6 @@ $2',
'virus-unknownscanner' => 'अज्ञात विषाणुनाशक:',
# Login and logout pages
-'logouttitle' => 'सदस्य लॉग आउट',
'logouttext' => "'''अब आपका सत्रांत हो चुका है।'''
आप बेनामी हो के {{SITENAME}} का इस्तेमाल जारी ऱक सकते हैं, या उसी यी किसी और सदस्य के तौर पर [[Special:UserLogin|फिर से सत्रारंभ]] कर सकते हैं।
@@ -424,7 +461,6 @@ $2',
'welcomecreation' => '== स्वागतम्‌, $1! ==
आपका खाता बना दिया गया है.
अपनी [[विशेष प्राथमिकताएं|{{SITENAME}} प्राथमिकताएं]] बदलना मत भूलिए.',
-'loginpagetitle' => 'सदस्य लॉग इन',
'yourname' => 'सदस्यनाम:',
'yourpassword' => 'कूटशब्द :',
'yourpasswordagain' => 'पासवर्ड दुबारा लिखें',
@@ -447,29 +483,8 @@ $2',
'badretype' => 'आपने जो पासवर्ड दिये हैं वे एक दूसरे से नहीं मिलते। फिर से लिखें।',
'userexists' => 'आपने दिया हुआ सदस्यनाम पहले से इस्तेमालमें हैं ।
कृपया अन्य सदस्यनाम चुनियें ।',
-'youremail' => 'आपका ई-मेल पता*',
-'username' => 'सदस्यनाम:',
-'uid' => 'सदस्य क्रमांक:',
-'prefs-memberingroups' => 'निम्नलिखित {{PLURAL:$1|ग्रुप का|ग्रुपों का}} सदस्य:',
-'yourrealname' => 'आपका असली नाम*',
-'yourlanguage' => 'भाषा:',
-'yourvariant' => 'वेरियंट:',
-'yournick' => 'आपका उपनाम (दस्तखत/सही के लिये)',
-'badsig' => 'गलत कच्चा दस्तखत, HTML टैग की जाँच करें ।',
-'badsiglength' => 'यह हस्ताक्षर बहुत बड़ा है।
-यह $1 {{PLURAL:$1|अक्षर|अक्षरों}} से अधिक का नहीं होना चाहिए।',
-'yourgender' => 'लिंग',
-'gender-unknown' => 'अनिर्दिष्ट',
-'gender-male' => 'पुरुष',
-'gender-female' => 'स्त्री',
-'prefs-help-gender' => 'वैकल्पिक:यह तंत्रांश में लिंग के आधार पर संबोधन के लिए प्रयुक्त होगा।
-यह जानकारी सार्वजनिक होगी।',
-'email' => 'इ-मेल',
-'prefs-help-realname' => 'आपका असली नाम देना जरूरी नहीं है पर अगर दिया तो आपके योगदानको आपसे आरोपण करने के लिये इस्तेमाल किया जायेगा ।',
'loginerror' => 'लॉग इन ग़लती',
-'prefs-help-email' => 'डाक पता वैकल्पिक है, पर यदि आप अपना कूटशब्द भूल जाएँ तो इसके जरिए नया कूटशब्द आपको भेजा जा सकता है।
-आप चाहें तो बिना अपना पता किसी को दिए, अपने सदस्य पन्ने या वार्ता पन्ने के जरिए भी लोगों से संपर्क में रह सकते हैं।',
-'prefs-help-email-required' => 'इ-मेल पता ज़रूरी हैं ।',
+'createaccounterror' => 'नहीं बना पाए $1 खाता',
'nocookiesnew' => 'आपका खाता खोल दिया हैं, पर आप लॉग इन नहीं हुए हैं ।
{{SITENAME}} पर लॉग इन करने के लिये कूकीस का प्रयोग होता हैं ।
आपने कूकीस इस्तेमाल करने की अनुमति नहीं दी हैं ।
@@ -488,8 +503,8 @@ $2',
'nouserspecified' => 'आपको सदस्यनाम देना जरूरी है ।',
'wrongpassword' => 'आपने जो कूटशब्द लिखा है वह गलत है। कृपया पुनः प्रयास करें।',
'wrongpasswordempty' => 'कूटशब्द खाली है; फिरसे यत्न किजीये ।',
-'passwordtooshort' => 'आपका कूटशब्द गलत या फिर ज्यादा छोटा है ।
-उसमें कम से कम $1 अक्षरे होने चाहिये और वह आपके सदस्यनामसे अलग होना चाहिये ।',
+'passwordtooshort' => 'आपका कूटशब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षरे}} होने चाहिये।',
+'password-name-match' => 'आपका कूटशब्द, आपके सदस्यनाम से भिन्न होना चाहिए।',
'mailmypassword' => 'डाक द्वारा नया कूटशब्द भेजें',
'passwordremindertitle' => '{{SITENAME}} के लिया नया अस्थायी कूटशब्द',
'passwordremindertext' => 'किसी ने (शायद आपने ही, $1 आईपी पते से) {{SITENAME}} ($4) पर इस्तेमाल के लिये नया कूटशब्द मंगाया है। प्रयोक्ता "$2" के लिए एक अस्थायी कूटशब्द बना दिया गया है, और यह अभी "$3" है। यदि आपकी यही मंशा थी, तो अब आपको सत्रारंभ करके एक नया कूटशब्द चुनना होगा।
@@ -497,6 +512,7 @@ $2',
यदि यह अनुरोध किसी और ने किया था, या आप अपना पुराना कूटशब्द अब नहीं बदलना चाहते क्योंकि आपको अपना पुराना कूटशब्द याद आ गया है, तो आप इस संदेश को नज़रंदाज़ कर सकते हैं, और अपने पुराने कूटशब्द का पहले की तरह इस्तेमाल करते रह सकते हैं।',
'noemail' => '"$1" सदस्य के लिये कोई भी इ-मेल पता दर्ज नहीं किया गया हैं ।',
+'noemailcreate' => 'आपको वैध ई-मेल खाता देने की जरूरत है.',
'passwordsent' => '"$1" का ई-मेल पता पर एक ई-मेल भेजा गया। ई-मेल पाने बाद में कृपया दुबारा लॉग इन करें।',
'blocked-mailpassword' => 'आपके IP एड्रेस को संपादन करने से प्रतिबंधित कर दिया गया हैं, ऐसे मौके पे गलत इस्तेमाल को रोकने के लिये कूटशब्द पुनः प्राप्ति की सुविधा बंद कर दी गईं हैं ।',
'eauthentsent' => 'दर्ज किये हुए इ-मेल पते पर एक सत्यापन इ-मेल भेजा गया है ।
@@ -519,6 +535,7 @@ $2',
'createaccount-text' => 'आपके इ-मेल एड्रेस के लिये {{SITENAME}} ($4) पर "$2" नामके किसीने, "$3" यह कूटशब्द देकर खाता खोला हैं । कृपया आप लॉग इन करके अपना कूटशब्द बदलें ।
अगर यह खाता गलती से खोला गया हैं, तो आप इस मेसेज को दुर्लक्षित कर सकतें हैं ।',
+'usernamehasherror' => 'उपयोगकर्ता के नाम में हेस वर्ण शामिल नहीं.',
'login-throttled' => 'आपने हाल ही में काफ़ी बार सत्रारंभ के प्रयास किए हैं।
पुनः प्रयास करने के पहले थोड़ी प्रतीक्षा करें।',
'loginlanguagelabel' => 'भाषा: $1',
@@ -534,8 +551,6 @@ $2',
'retypenew' => 'नया कूटशब्द पुन: लिखें',
'resetpass_submit' => 'कूटशब्द बनाईयें और लॉग इन करें',
'resetpass_success' => 'आपका कूटशब्द बदल दिया गया हैं! अभी आपको लॉग इन करवा रहें हैं...',
-'resetpass_bad_temporary' => 'अस्थायी कूटशब्द गलत हैं ।
-आपने ही पहले ही अपना कूटशब्द बदल दिया हो या फिर आपने नया अस्थायी कूटशब्द मंगाया होगा ।',
'resetpass_forbidden' => 'कूटशब्द बदले नहीं जा सकते।',
'resetpass-no-info' => 'इस पन्ने तक सीधे पहुँचने के लिए आपको सत्रारंभ करना होगा।',
'resetpass-submit-loggedin' => 'कूटशब्द बदलें',
@@ -617,7 +632,6 @@ $2',
'blockededitsource' => "'''$1''' को '''आपके बदलाव''' का पाठ्य नीचे दर्शाया गया हैं:",
'whitelistedittitle' => 'संपादन के लिए सत्रारंभ करना होगा',
'whitelistedittext' => 'लेख संपादित करने के लियें $1 करें ।',
-'confirmedittitle' => 'संपादित करने के लियें इ-मेल से पुष्टि करना आवश्यक हैं',
'confirmedittext' => 'संपादन करने से पहले आपने अपना इ-मेल पता प्रमाणित कराना आवश्यक हैं ।
कृपया अपनी [[Special:Preferences|सदस्य वरीयताएं]] में जाकर अपना इ-मेल पता दें और उसे प्रमाणित करें ।',
'nosuchsectiontitle' => 'ऐसा कोई विभाग नहीं हैं',
@@ -641,7 +655,11 @@ $2',
आप अन्यों पन्नों में [[Special:Search/{{PAGENAME}}|इस सामग्री की खोज]] कर सकते हैं,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित चिट्ठों में खोज कर सकते हैं],
या [{{fullurl:{{FULLPAGENAME}}|action=edit}} इस पन्ने को संपादित कर सकते हैं]</span>।',
+'noarticletext-nopermission' => 'फ़िलहाल इस पन्ने पर कोई सामग्री नहीं है।
+आप अन्य पन्नों में [[Special:Search/{{PAGENAME}}|इस पन्ना शीर्षक की खोज]] कर सकते हैं,
+या <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित चिट्ठों में खोज कर सकते हैं] </span>।',
'userpage-userdoesnotexist' => 'सदस्य खाता "$1" पंजिकृत नहीं हैं । कृपया यह लेख आप संपादित अथवा निर्मित करना चाहते हैं इसकी जाँच करें ।',
+'userpage-userdoesnotexist-view' => 'सदस्य "$1" पंजीकृत नहीं है',
'clearyourcache' => "'''ध्यान दें - सँजोने के बाद बदलाव देखने के लिए आपको अपने विचरक की संचिका खाली करने पड़ सकती है।'''
'''मोज़िला / फ़ायरफ़ॉक्स / सफ़ारी:''' \"वर्तमान पृष्ठ फिर लोड करें\" पर चटका लगाते समय \"शिफ़्ट\" कुंजी दबा के रखें या \"कंट्रोल-एफ़५\" या \"कंट्रोल-शिफ़्ट-R\" (मैकिंटॉश में \"कमांड-शिफ़्ट-R\") दबाएँ;
'''कांक्वरर:''' \"रिलोड\" पर चटका लगाएँ या \"एफ़५\" दबाएँ;
@@ -651,7 +669,8 @@ $2',
''Ctrl hold'' करें जब आप ''refresh'' क्लिक करते है, या ''Ctrl-F5'' क्लिक करते है;
'''कॉङ्करर:''' सिर्फ़ ''Reload'' बटन पर क्लिक करें, या ''F5'' दबाएँ;",
-'usercssjsyoucanpreview' => "'''टीप:'''आपका नया CSS/JS संजोने से पहले ’झलक’ देखें ।",
+'usercssyoucanpreview' => "'''टीप:'''आपका नया CSS संजोने से पहले ’झलक’ देखें ।",
+'userjsyoucanpreview' => "'''टीप:'''आपका नया JS संजोने से पहले ’झलक’ देखें ।",
'usercsspreview' => "'''ध्यान दें कि आप अपनी सीएसएस की झलक देख रहे हैं।'''
'''यह अभी तक संजोई नहीं गई है!'''",
'userjspreview' => "'''आप अपने जावास्क्रीप्टकी सिर्फ झलक देख रहें हैं, वह अभीतक संजोई नहीं हैं इसका खयाल रखें ।'''",
@@ -719,10 +738,13 @@ $2',
'permissionserrors' => 'अधिकारोंमें गलती',
'permissionserrorstext' => 'निम्नलिखित {{PLURAL:$1|कारण|कारणोंसे}} आपको ऐसा करने की अनुमति नहीं हैं:',
'permissionserrorstext-withaction' => 'आपको $2 की अनुमति नहीं हैं, निम्नलिखित {{PLURAL:$1|कारण के लिये|कारणोंके लिये}}:',
-'recreate-deleted-warn' => "'''चेतावनी: आप एक पहले से मिटाये गये पृष्ठ को पुनर्निर्मित कर रहे हैं।'''
+'recreate-moveddeleted-warn' => "'''चेतावनी: आप एक पहले से मिटाए गए पृष्ठ को पुनर्निर्मित कर रहे हैं।'''
आप को विचार करना चाहिये क्या इस पृष्ठ का संपादन चालू रखना उचित होगा।
-इस पृष्ट को मिटाने का अभिलेख/प्रचालेख सुविधा के लिये उपलब्ध कराया गया है:",
+इस पृष्ट के मिटाने व स्थानांतरण का चिट्ठा सदस्यों की सुविधा के लिये उपलब्ध कराया गया है:",
+'moveddeleted-notice' => 'यह पन्ना मिटाया जा चुका है।
+पन्ने के मिटाने और स्थानांतरण का चिट्ठा, संदर्भ के लिए नीचे दिया गया है।',
+'log-fulllog' => 'पूरा चिट्ठा देखें',
'edit-hook-aborted' => 'फंदे द्वारा संपादन बीच में ही छोड़ा गया।
उसने कोई कारण नहीं बताया।',
'edit-gone-missing' => 'पन्ना बदला न जा सका।
@@ -762,8 +784,9 @@ $2',
'viewpagelogs' => 'इस पन्नेका लॉग देखियें',
'nohistory' => 'इस पन्ने का कोई इतिहास नहीं',
'currentrev' => 'सद्य अवतरण',
-'revisionasof' => '$1 का आवर्तन',
-'revision-info' => '$2ने किया हुवा $1का अवतरण', # Additionally available: $3: revision id
+'currentrev-asof' => '$1 के समय का संस्करण',
+'revisionasof' => '$1 का संस्करण',
+'revision-info' => '$2ने किया हुवा $1का अवतरण',
'previousrevision' => '← पुराना संस्करण',
'nextrevision' => 'नया संशोधन →',
'currentrevisionlink' => 'वर्तमान संशोधन',
@@ -776,7 +799,6 @@ $2',
लिजेंड: (चालू) = सद्य अवतरणके बीचमें फर्क,
(आखिरी) = पिछले अवतरणके बीचमें फर्क, छो = छोटा बदलाव ।',
'history-fieldset-title' => 'इतिहास का विचरण करें',
-'deletedrev' => '[हटाया गया]',
'histfirst' => 'सबसे पुराना',
'histlast' => 'सबसे नया',
'historysize' => '({{PLURAL:$1|1 बाईट|$1 बाईट}})',
@@ -785,7 +807,7 @@ $2',
# Revision feed
'history-feed-title' => 'अवतरण इतिहास',
'history-feed-description' => 'विकिपर उपलब्ध इस पन्ने का अवतरण इतिहास',
-'history-feed-item-nocomment' => '$1 यहांके $2', # user at time
+'history-feed-item-nocomment' => '$1 यहांके $2',
'history-feed-empty' => 'पूछा गया लेख अस्तित्व में नहीं हैं।
यह लेख या तो हटाया गया हैं या फिर इसका नाम बदल दिया गया हैं।
[[Special:Search|विकिपर खोज]] का इस्तेमाल करें।',
@@ -795,10 +817,23 @@ $2',
'rev-deleted-user' => '(सदस्यनाम हटाया)',
'rev-deleted-event' => '(कार्यकी नोंद हटाई)',
'rev-deleted-text-permission' => 'इस लेख का अवतरण सामान्य डाटाबेससे हटाया गया हैं।
-इसकी अधिक जानकारी [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} हटाने की सूची] में पाईं जा सकती हैं।',
+इसकी अधिक जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाने की सूची] में पाईं जा सकती हैं।',
+'rev-deleted-text-unhide' => "पन्ने के इस संस्करण को '''मिटा दिया गया है'''।
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मिटाने के चिट्ठे] में कुछ अतिरिक्त जानकारी हो सकती है।
+प्रबंधक के तौर पर यदि आप चाहें तो फिर भी [$1 यह संस्करण देख सकते हैं]।",
+'rev-suppressed-text-unhide' => "पन्ने के इस संस्करण को '''छिपा दिया गया है'''।
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} छिपाने के चिट्ठे] में अतिरिक्त जानकारी मिल सकती है।
+बतौर प्रबंधक आप चाहें तो फिर भी [$1 इस संस्करण को देख सकते हैं]।",
'rev-deleted-text-view' => 'इस लेख का अवतरण सामान्य डाटाबेससे हटाया गया हैं।
-{{SITENAME}} पर प्रबंधक होनेके नाते आप इसे देख सकतें हैं।
-इसकी अधिक जानकारी [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} हटाने की सूची] में पाईं जा सकती हैं।',
+प्रबंधक होनेके नाते आप इसे देख सकतें हैं।
+इसकी अधिक जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाने की सूची] में पाईं जा सकती हैं।',
+'rev-suppressed-text-view' => "पन्ने के इस संस्करण को '''छिपा दिया गया है'''।
+बतौर प्रबंधक आप इसे देख सकते हैं; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} छिपाने के चिट्ठे] में और जानकारी हो सकती है।",
+'rev-deleted-no-diff' => "आप इस अंतर को नहीं देख सकते क्योंकि इनमें से एक संस्करण को '''मिटा दिया गया है'''।
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मिटाने के चिट्ठे] में और जानकारी हो सकती है।",
+'rev-deleted-unhide-diff' => "आप इस अंतर को नहीं देख सकते क्योंकि इनमें से एक संस्करण को '''मिटा दिया गया है'''।
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मिटाने के चिट्ठे] में और जानकारी हो सकती है।
+बतौर प्रबंधक यदि आप चाहें तो फिर भी [$1 इस अंतर को देख सकते हैं]।",
'rev-delundel' => 'दिखायें/छुपायें',
'revisiondelete' => 'अवतरण हटायें/पुनर्स्थापित करें',
'revdelete-nooldid-title' => 'लक्ष्य अवतरण गलत',
@@ -807,29 +842,35 @@ $2',
'revdelete-nologtype-text' => 'इस क्रिया के लिए चिट्ठे की किस्म आपने निर्दिष्ट नहीं की है।',
'revdelete-nologid-title' => 'अवैध चिट्ठा प्रविष्टि',
'revdelete-nologid-text' => 'आपने या तो इस कार्यकलाप को करने के लिए लक्ष्यित चिट्ठा प्रसंग नहीं दिया है या यह प्रविष्टि मौजूद नहीं है।',
+'revdelete-no-file' => 'निर्दिष्ट संचिका मौजूद नहीं है।',
+'revdelete-show-file-confirm' => 'क्या आप वाकई "<nowiki>$1</nowiki>" नामक संचिका का $2 के $3 बजे वाले मिटे हुए संस्करण को देखना चाहते हैं?',
+'revdelete-show-file-submit' => 'हाँ',
'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|का चुना हुआ अवतरण|के चुने हुए अवतरण}}:'''",
'logdelete-selected' => "'''{{PLURAL:$1|चुना हुआ लॉग इवेंट|चुने हुए लॉग इवेंट्स}}:'''",
-'revdelete-text' => "'''हटायें गयें अवतरण और घटनायें अभी भी पन्ने के इतिहास और लॉग सूचीमें नजर आयेंगे, पर इसके पाठ सामान्य सदस्य देख नहीं पायेंगे।'''
-
-{{SITENAME}} अन्य प्रबंधक अभी भी इसे देख सकते हैं और पुनर्स्थापित भी कर सकतें हैं, जब तक इससे ज्यादा प्रतिबंध ना लगायें जायें।",
+'revdelete-text' => "'''मिटे हुए संस्करण और प्रसंग, पन्ने के इतिहास और चिट्ठों में दिखेंगे, लेकिन उनकी कुछ सामग्री सार्वजनिक नहीं होगी।'''
+{{SITENAME}} के अन्य प्रबंधक छिपी हुई सामग्री को देख पाएँगे, और इसी अंतरापृष्ठ के जरिए वे इसकी पुनर्स्थापना भी कर सकते हैं, बशर्ते कि अतिरिक्त प्रतिबंध न लगाए गए हों।",
'revdelete-suppress-text' => "छिपाने का इस्तेमाल '''केवल''' इन परिस्थितियों में होना चाहिए:
* अनुपयुक्त निजी जानकारी
*: ''घर के पते व दूरभाष, सामाजिक सुरक्षा क्रमांक आदि''",
'revdelete-legend' => 'दृश्य प्रतिबंध निश्चित करें',
'revdelete-hide-text' => 'अवरतणका पाठ छुपायें',
+'revdelete-hide-image' => 'फ़ाईल का पाठ छुपायें',
'revdelete-hide-name' => 'क्रिया और लक्ष्य को छुपायें',
'revdelete-hide-comment' => 'संपादन टिप्पणी छुपायें',
'revdelete-hide-user' => 'संपादक का सदस्यनाम/आईपी छुपायें',
'revdelete-hide-restricted' => 'प्रबंधक सहित सभी सदस्योंसे डाटा छुपायें',
'revdelete-suppress' => 'प्रबंधक सहित सभी सदस्योंसे डाटा छुपायें',
-'revdelete-hide-image' => 'फ़ाईल का पाठ छुपायें',
'revdelete-unsuppress' => 'पुनर्स्थापित अवतरणोंपरसे प्रबंधन हटायें',
'revdelete-log' => 'कारण:',
'revdelete-submit' => 'चुने हुए अवतरणोंको लागू करें',
'revdelete-logentry' => '[[$1]] की अवतरण दृष्यता बदली गईं',
'logdelete-logentry' => '[[$1]] की घटना दृष्यता बदली गईं',
'revdelete-success' => "'''अवतरण दृष्यता सैट कर दी गईं हैं।'''",
+'revdelete-failure' => "'''संस्करण दर्शनीयता कि स्थिति स्थापित नहीं की जा सकी:'''
+$1",
'logdelete-success' => "'''सूची दृष्यता बदली गईं।'''",
+'logdelete-failure' => "'''चिट्ठे की दर्शनीयता का जमाव नहीं किया जा सका:'''
+$1",
'revdel-restore' => 'दृश्यता बदलें',
'pagehist' => 'पन्ने का इतिहास',
'deletedhist' => 'हटाया हुआ इतिहास',
@@ -842,6 +883,24 @@ $2',
'revdelete-unhid' => 'दर्शायें $1',
'revdelete-log-message' => '$2 {{PLURAL:$2|अवतरण|अवतरणों}}के लिये $1',
'logdelete-log-message' => '$2 {{PLURAL:$2|घटना|घटनाओं}}के लिये $1',
+'revdelete-hide-current' => '$2 को, $1 बजे वाला मद छिपाया नहीं जा सका: यह सबसे ताज़ा संस्करण है।
+यह छिपाया नहीं जा सकता है।',
+'revdelete-show-no-access' => '$1, $2 वाला मद दिखाते समय त्रुटि आई: इस मद को "प्रतिबंधित" चिह्नित किया गया है।
+आप इस तक नहीं पहुँच सकते हैं।',
+'revdelete-modify-no-access' => '$2, $1 वाले मद को बदलते समय त्रुटि आई: इस मद को "प्रतिबंधित" अंकित किया गया है।
+आप इस तक नहीं पहुँच सकते हैं।',
+'revdelete-modify-missing' => 'मद क्रमांक $1 को बदलते समय त्रुटि आई: यह आँकड़ाकोष में नहीं है!',
+'revdelete-no-change' => "'''चेतावनी:''' $2, $1 वाले मद में पहले से ही यही वांछित दर्शनीयता जमाव था।",
+'revdelete-concurrent-change' => '$2, $1 वाले मद को बदलते समय त्रुटि आई: प्रतीत होता है कि आपके द्वारा बदलने के दौरान किसी और ने इसमें बदलाव कर दिए हैं।
+कृपया चिट्ठे देख लें।',
+'revdelete-only-restricted' => 'छिपाने के एक और विकल्प को चुने बगैर आप प्रबंधकों से मदों को नहीं छिपा सकेंगे।',
+'revdelete-reason-dropdown' => '*मिटाने के आम कारण
+** सर्वाधिकार उल्लंघन
+** अनुपयुक्त निजी जानकारी',
+'revdelete-otherreason' => 'अन्य/अतिरिक्त कारण:',
+'revdelete-reasonotherlist' => 'अन्य कारण',
+'revdelete-edit-reasonlist' => 'हटाने के कारण बदलें',
+'revdelete-offender' => 'संस्करण संपादक:',
# Suppression log
'suppressionlog' => 'सप्रेशन सूची',
@@ -878,67 +937,13 @@ $2',
'mergelogpagetext' => 'नीचे उन पन्नोंकी सूची हैं जिनका इतिहास हाल में ही दुसरे पन्ने में मिलाया गया था।',
# Diffs
-'history-title' => '"$1" का अवतरण इतिहास',
-'difference' => '(संस्करणों में अंतर)',
-'lineno' => 'पंक्ति $1:',
-'compareselectedversions' => 'च़यन किये हुए अवतरणोंमें फर्क देखियें',
-'visualcomparison' => 'द्रैश्यिक तुलना',
-'wikicodecomparison' => 'विकिसामग्री की तुलना',
-'editundo' => 'पूर्ववत करें',
-'diff-multi' => '({{PLURAL:$1|बीच वाला एक अवतरण|बीचवाले $1 अवतरण}} दर्शाये नहीं हैं ।)',
-'diff-movedto' => '$1 को स्थानांतरित',
-'diff-styleadded' => '$1 शैली जोड़ी गई',
-'diff-added' => '$1 जोड़ा गया',
-'diff-changedto' => 'बदल के $1 किया गया',
-'diff-movedoutof' => '$1 से निकाला गया',
-'diff-styleremoved' => '$1 शैली निकाली गई',
-'diff-removed' => '$1 निकाला गया',
-'diff-changedfrom' => '$1 से बदला गया',
-'diff-src' => 'स्रोत',
-'diff-withdestination' => 'गंतव्य $1 है',
-'diff-with' => '&#32;$1 $2 के साथ',
-'diff-with-final' => '&#32;और $1 $2 के साथ',
-'diff-width' => 'चौड़ाई',
-'diff-height' => 'लंबाई',
-'diff-p' => "एक '''अनुच्छेद'''",
-'diff-blockquote' => "एक '''उद्धरण चिह्न'''",
-'diff-h1' => "एक '''शीर्षक (स्तर १)'''",
-'diff-h2' => "एक '''शीर्षक (स्तर २)'''",
-'diff-h3' => "एक '''शीर्षक (स्तर ३)'''",
-'diff-h4' => "एक '''शीर्षक (स्तर ४)'''",
-'diff-h5' => "एक '''शीर्षक (स्तर ५)'''",
-'diff-pre' => "एक '''पूर्वप्रारूपित वर्ग'''",
-'diff-div' => "एक '''विभाग'''",
-'diff-ul' => "एक '''अक्रमांकित सूची'''",
-'diff-ol' => "एक '''क्रमांकित सूची'''",
-'diff-li' => "एक '''सूची मद'''",
-'diff-table' => "एक '''तालिका'''",
-'diff-tbody' => "एक '''तालिका की सामग्री'''",
-'diff-tr' => "एक '''पंक्ति'''",
-'diff-td' => "एक '''कोष्ठक'''",
-'diff-th' => "एक '''शीर्षक'''",
-'diff-br' => "एक '''पंक्ति-तोड़क'''",
-'diff-hr' => "एक '''आड़ी लकीर'''",
-'diff-code' => "एक '''संगणक कूट वर्ग'''",
-'diff-dl' => "एक '''परिभाषा सूची'''",
-'diff-dt' => "एक '''परिभाषा मद'''",
-'diff-dd' => "एक '''परिभाषा'''",
-'diff-input' => "एक '''आदान'''",
-'diff-form' => "एक '''पर्चा'''",
-'diff-img' => "एक '''छवि'''",
-'diff-span' => "एक '''विस्तार'''",
-'diff-a' => "एक '''कड़ी'''",
-'diff-i' => "'''तिरछे अक्षर'''",
-'diff-b' => "'''मोटे अक्षर'''",
-'diff-strong' => "'''ज़ोरदार'''",
-'diff-em' => "'''तवज्जो'''",
-'diff-font' => "'''मुद्रलिपि'''",
-'diff-big' => "'''बड़ा'''",
-'diff-del' => "'''मिटाया गया'''",
-'diff-tt' => "'''पूर्वनिर्धारित चौड़ाई'''",
-'diff-sub' => "'''अक्षरों के नीचे'''",
-'diff-sup' => "'''अक्षरों के ऊपर'''",
-'diff-strike' => "'''कटे हुए'''",
+'history-title' => '"$1" का अवतरण इतिहास',
+'difference' => '(संस्करणों में अंतर)',
+'lineno' => 'पंक्ति $1:',
+'compareselectedversions' => 'च़यन किये हुए अवतरणोंमें फर्क देखियें',
+'showhideselectedversions' => 'चयनित संस्करण दिखाएँ/छिपाएँ',
+'editundo' => 'पूर्ववत करें',
+'diff-multi' => '({{PLURAL:$1|बीच वाला एक अवतरण|बीचवाले $1 अवतरण}} दर्शाये नहीं हैं ।)',
# Search results
'searchresults' => 'खोज परिणाम',
@@ -946,24 +951,25 @@ $2',
'searchresulttext' => '{{SITENAME}} में खोज में सहायता के लिए [[{{MediaWiki:Helppage}}|{{int:help}}]] देखें।',
'searchsubtitle' => 'आपने \'\'\'[[:$1]]\'\'\' की खोज की है ([[Special:Prefixindex/$1|"$1" से शुरू हेने वाले सभी पन्ने]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1| "$1" का हवाला देने वाले सभी पन्ने]])',
'searchsubtitleinvalid' => "आपकी खोज '''$1''' के परिणाम",
-'noexactmatch' => "'''\"\$1\" नामसे कोई भी लेख नहीं हैं।''' आप यह लेख [[:\$1|तैयार कर सकते हैं]]।",
-'noexactmatch-nocreate' => "'''\"\$1\" नामसे कोई भी लेख नहीं हैं।'''",
'toomanymatches' => 'बहुत ज्यादा जवाब मिलें हैं, कॄपया खोजशब्द बदलें',
'titlematches' => 'लेख का शीर्षक मिलता हैं',
'notitlematches' => 'किसी भी लेख का शीर्षक मेल नहीं खाता',
'textmatches' => 'लेख का पाठ मिलता हैं',
'notextmatches' => 'किसी भी पन्ने में यह सामग्री नहीं मिली',
-'prevn' => 'पिछले $1',
-'nextn' => 'अगले $1',
+'prevn' => 'पिछले {{PLURAL:$1|$1}}',
+'nextn' => 'अगले {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|पिछला १ परिणाम| पिछले $1 परिणाम}}',
'nextn-title' => '{{PLURAL:$1|अगला १ परिणाम| अगले $1 परिणाम}}',
'shown-title' => 'हर पन्ने पर {{PLURAL:$1|परिणाम|परिणाम}} दिखाएँ',
-'viewprevnext' => 'देख़ें ($1) ($2) ($3)',
+'viewprevnext' => 'देख़ें ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'खोज विकल्प',
'searchmenu-exists' => "'''इस विकि पर \"[[:\$1]]\" नाम से एक पन्ना है'''",
'searchmenu-new' => "'''इस विकि पर \"[[:\$1]]\" नाम से पन्ना बनाएँ!'''",
'searchhelp-url' => 'Help:सहायता',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|इस उपसर्ग वाले पन्ने देखें]]',
+'searchprofile-articles' => 'सामग्री वाले पन्ने',
+'searchprofile-project' => 'मदद व परियोजना वाले पन्ने',
+'searchprofile-images' => 'बहुमाध्यम',
'searchprofile-everything' => 'सब कुछ',
'searchprofile-advanced' => 'उन्नत',
'searchprofile-articles-tooltip' => '$1 में खोजें',
@@ -983,11 +989,12 @@ $2',
'search-mwsuggest-disabled' => 'सुझाव नहीं',
'search-relatedarticle' => 'रिलेटेड',
'mwsuggest-disable' => 'AJAX सजेशन्स बंद करें',
+'searcheverything-enable' => 'सभी नामस्थानों में खोजें',
'searchrelated' => 'रिलेटेड',
'searchall' => 'सभी',
'showingresults' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम {{PLURAL:$1|$1 परिणाम दिखाया गया है|$1 परिणाम दिखाए गए हैं}}।",
'showingresultsnum' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम {{PLURAL:$3|'''१''' परिणाम दिखाया गया है|'''$3''' परिणाम दिखाए गए हैं}}।",
-'showingresultstotal' => "नीचे '''$3''' में से {{PLURAL:$3|'''$1''' निकाल|'''$1 - $2''' निकाल}} दर्शायें गयें हैं",
+'showingresultsheader' => "'''$4''' की खोज {{PLURAL:$5|कुल '''$3''' के क्रं. '''$1'''|कुल '''$3''' के क्रं. '''$1 - $2'''}} for",
'nonefound' => "'''सूचना''': मूलतः कुछ ही नामस्थानों में खोजा जाता हैं। अगर आपको सभी नामस्थानों में खोजना हैं तो खोजशब्दोंके पहले ''all:'' लगाकर खोजने की कोशिश करें या फिर किसी नामस्थान का नाम लिखें।",
'search-nonefound' => 'आपकी खोज से मेल खाते कोई परिणाम नहीं मिले।',
'powersearch' => 'उन्नत खोज',
@@ -995,93 +1002,134 @@ $2',
'powersearch-ns' => 'नामस्थानोंमें खोजें:',
'powersearch-redir' => 'अनुप्रेषितोंकी सूची दर्शायें',
'powersearch-field' => 'के लिये खोजें',
+'powersearch-togglelabel' => 'चुनें:',
+'powersearch-toggleall' => 'सभी',
+'powersearch-togglenone' => 'कोई भी नहीं',
'search-external' => 'बाहरी खोज',
'searchdisabled' => '{{SITENAME}} पर खोज के लिये मनाई कर दी गईं हैं।
तब तक गूगलसे खोज करें।
{{SITENAME}} के उनके इंडेक्स पुराने हो सकतें हैं, इसका ध्यान रखें।',
+# Quickbar
+'qbsettings' => 'शीघ्रपट',
+'qbsettings-none' => 'बिल्कुल नहीं',
+'qbsettings-fixedleft' => 'स्थिर बाई तरफ़',
+'qbsettings-fixedright' => 'स्थिर दाहिनी तरफ़',
+'qbsettings-floatingleft' => 'अस्थिर बाईं तरफ़',
+'qbsettings-floatingright' => 'अस्थिर दाहिनी तरफ़',
+
# Preferences page
-'preferences' => 'मेरी पसंद',
-'mypreferences' => 'मेरी वरीयताएँ',
-'prefs-edits' => 'संपादनोंकी संख्या:',
-'prefsnologin' => 'लॉग इन नहीं किया हैं',
-'prefsnologintext' => 'सदस्य वरीयतायें बदलने के लियें आपने [[Special:UserLogin|लॉग इन]] किया होना जरूरी हैं।',
-'prefsreset' => 'पसंदे पूर्ववत कर दी गईं हैं।',
-'qbsettings' => 'शीघ्रपट',
-'qbsettings-none' => 'बिल्कुल नहीं',
-'qbsettings-fixedleft' => 'स्थिर बाई तरफ़',
-'qbsettings-fixedright' => 'स्थिर दाहिनी तरफ़',
-'qbsettings-floatingleft' => 'अस्थिर बाईं तरफ़',
-'qbsettings-floatingright' => 'अस्थिर दाहिनी तरफ़',
-'changepassword' => 'कूटशब्द बदलें',
-'skin' => 'त्वचा',
-'skin-preview' => 'झलक',
-'math' => 'गणित',
-'dateformat' => 'दिनांक प्रारूप',
-'datedefault' => 'खा़स पसंद नहीं',
-'datetime' => 'दिनांक तथा समय',
-'math_failure' => 'पार्स नहीं कर पायें',
-'math_unknown_error' => 'अपरिचीत समस्या',
-'math_unknown_function' => 'अज्ञात कार्य',
-'math_lexing_error' => 'लेक्सींग समस्या',
-'math_syntax_error' => 'सिन्टैक्स गलती',
-'math_image_error' => 'PNG में रुपांतरण अयशस्वी;
-latex, dvips, gs, और convert के इन्स्टॉलेशन की जाँच करें',
-'math_bad_tmpdir' => 'मैथ अस्थायी डाइरेक्टरी या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
-'math_bad_output' => 'मैथ आउटपुट डाइरेक्टरी या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
-'math_notexvc' => 'texvc एक्झीक्यूटेबल फ़ाईल मिल नहीं रहीं;
-समनुरूप बनाने के लियें math/README देखें।',
-'prefs-personal' => 'सदस्य व्यक्तिरेखा',
-'prefs-rc' => 'हाल में हुए बदलाव',
-'prefs-watchlist' => 'ध्यानसूची',
-'prefs-watchlist-days' => 'ध्यानसूचीमें दिखाने के दिन:',
-'prefs-watchlist-edits' => 'बढ़ाई हुई ध्यानसूची में दिखाने के ज्यादा से ज्यादा बदलाव:',
-'prefs-misc' => 'अन्य',
-'prefs-resetpass' => 'कूटशब्द बदलें',
-'saveprefs' => 'संजोयें',
-'resetprefs' => 'ना संजोये गये बदलाव रद्द करें',
-'restoreprefs' => 'वापस मूल जमावों पर आ जाएँ',
-'textboxsize' => 'संपादन',
-'prefs-edit-boxsize' => 'संपादन झरोखे का आकार।',
-'rows' => 'कतारें:',
-'columns' => 'कॉलम:',
-'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पन्ना हिट्स:',
-'contextlines' => 'प्रति हिट कतारें:',
-'contextchars' => 'प्रति कतार संदर्भ:',
-'stub-threshold' => '<a href="#" class="stub">आधार कड़ियों</a> का ज्यादासे ज्यादा आकार (बाईट्स):',
-'recentchangesdays' => 'हाल में हुए बदलावोंमें दर्शाने के दिन:',
-'recentchangescount' => 'हाल में हुए बदलावोंमें दिखाने के लिये बदलाव संख्या:',
-'savedprefs' => 'आपकी वरीयतायें संजोईं गईं हैं।',
-'timezonelegend' => 'समयमंडल:',
-'timezonetext' => '¹सर्वर समयसे (यूटीसी) आपके स्थानीय समय का अंतर (घंटोंमें)।',
-'localtime' => 'स्थानीय समय:',
-'timezoneuseserverdefault' => 'सेवक से ही लें',
-'timezoneuseoffset' => 'अन्य (समयांतर निर्दिष्ट करें)',
-'timezoneoffset' => 'समयांतर¹:',
-'servertime' => 'सेवक का समय:',
-'guesstimezone' => 'ब्राउज़रसे भरें',
-'timezoneregion-africa' => 'अफ़्रीका',
-'timezoneregion-america' => 'अमेरिका',
-'timezoneregion-antarctica' => 'अंटार्कटिका',
-'timezoneregion-arctic' => 'आर्कटिक',
-'timezoneregion-asia' => 'एशिया',
-'timezoneregion-atlantic' => 'एटलांटिक महासागर',
-'timezoneregion-australia' => 'ऑस्ट्रेलिया',
-'timezoneregion-europe' => 'यूरोप',
-'timezoneregion-indian' => 'हिंद महासागर',
-'timezoneregion-pacific' => 'प्रशांत महासागर',
-'allowemail' => 'अन्य उपयोगकर्ताओं से ई-मेल समर्थ करें',
-'prefs-searchoptions' => 'खोज ऑप्शन्स',
-'prefs-namespaces' => 'नामस्थान',
-'defaultns' => 'इन नामस्थानोंमें हमेशा खोजें:',
-'default' => 'अविचल',
-'files' => 'फ़ाईलें',
-'prefs-custom-css' => 'खासमखास सीएसएस',
-'prefs-custom-js' => 'खासमखास जेएस',
+'preferences' => 'मेरी पसंद',
+'mypreferences' => 'मेरी वरीयताएँ',
+'prefs-edits' => 'संपादनोंकी संख्या:',
+'prefsnologin' => 'लॉग इन नहीं किया हैं',
+'prefsnologintext' => 'वरीयताएँ बदलने के लिए आपको <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} सत्रारंभ] करना होगा।',
+'changepassword' => 'कूटशब्द बदलें',
+'prefs-skin' => 'त्वचा',
+'skin-preview' => 'झलक',
+'prefs-math' => 'गणित',
+'datedefault' => 'खा़स पसंद नहीं',
+'prefs-datetime' => 'दिनांक तथा समय',
+'prefs-personal' => 'सदस्य व्यक्तिरेखा',
+'prefs-rc' => 'हाल में हुए बदलाव',
+'prefs-watchlist' => 'ध्यानसूची',
+'prefs-watchlist-days' => 'ध्यानसूचीमें दिखाने के दिन:',
+'prefs-watchlist-days-max' => 'अधिकतम ७ दिन',
+'prefs-watchlist-edits' => 'बढ़ाई हुई ध्यानसूची में दिखाने के ज्यादा से ज्यादा बदलाव:',
+'prefs-watchlist-edits-max' => 'अधिकतम संख्या: १०००',
+'prefs-watchlist-token' => 'ध्यानसूची संकेत',
+'prefs-misc' => 'अन्य',
+'prefs-resetpass' => 'कूटशब्द बदलें',
+'prefs-email' => 'डाक वरीयताएँ',
+'prefs-rendering' => 'शक्लोसूरत',
+'saveprefs' => 'संजोयें',
+'resetprefs' => 'ना संजोये गये बदलाव रद्द करें',
+'restoreprefs' => 'वापस मूल जमावों पर आ जाएँ',
+'prefs-editing' => 'संपादन',
+'prefs-edit-boxsize' => 'संपादन झरोखे का आकार।',
+'rows' => 'कतारें:',
+'columns' => 'कॉलम:',
+'searchresultshead' => 'खोज',
+'resultsperpage' => 'प्रति पन्ना हिट्स:',
+'contextlines' => 'प्रति हिट कतारें:',
+'contextchars' => 'प्रति कतार संदर्भ:',
+'stub-threshold' => '<a href="#" class="stub">आधार कड़ियों</a> का ज्यादासे ज्यादा आकार (बाईट्स):',
+'recentchangesdays' => 'हाल में हुए बदलावोंमें दर्शाने के दिन:',
+'recentchangesdays-max' => 'अधिकतम $1 {{PLURAL:$1|दिन|दिन}}',
+'recentchangescount' => 'मूल रूप से कितने संपादन दिखाएँ:',
+'prefs-help-recentchangescount' => 'इसमें हाल के बदलाव, पन्नों के इतिहास व चिट्ठे शामिल हैं।',
+'prefs-help-watchlist-token' => 'इस कोष्ठक में गुप्त कुंजी प्रदान करने से आपकी ध्यानसूची के लिए एक आरएसएस फ़ीड बन जाएगी।
+जो भी इस कोष्टक में मौजूद कुंजी को जानता है वह आपकी ध्यानसूची को पढ़ सकेगा अतः कोई सुरक्षित कुंजी चुनें।
+यह है आपके लिए एक यंत्रजनित कुंजी जिसका आप चाहें तो इस्तेमाल कर सकते हैं: $1',
+'savedprefs' => 'आपकी वरीयतायें संजोईं गईं हैं।',
+'timezonelegend' => 'समयमंडल:',
+'localtime' => 'स्थानीय समय:',
+'timezoneuseserverdefault' => 'सेवक से ही लें',
+'timezoneuseoffset' => 'अन्य (समयांतर निर्दिष्ट करें)',
+'timezoneoffset' => 'समयांतर¹:',
+'servertime' => 'सेवक का समय:',
+'guesstimezone' => 'ब्राउज़रसे भरें',
+'timezoneregion-africa' => 'अफ़्रीका',
+'timezoneregion-america' => 'अमेरिका',
+'timezoneregion-antarctica' => 'अंटार्कटिका',
+'timezoneregion-arctic' => 'आर्कटिक',
+'timezoneregion-asia' => 'एशिया',
+'timezoneregion-atlantic' => 'एटलांटिक महासागर',
+'timezoneregion-australia' => 'ऑस्ट्रेलिया',
+'timezoneregion-europe' => 'यूरोप',
+'timezoneregion-indian' => 'हिंद महासागर',
+'timezoneregion-pacific' => 'प्रशांत महासागर',
+'allowemail' => 'अन्य उपयोगकर्ताओं से ई-मेल समर्थ करें',
+'prefs-searchoptions' => 'खोज ऑप्शन्स',
+'prefs-namespaces' => 'नामस्थान',
+'defaultns' => 'अन्यथा इन नामस्थानों में खोजें:',
+'default' => 'अविचल',
+'prefs-files' => 'फ़ाईलें',
+'prefs-custom-css' => 'खासमखास सीएसएस',
+'prefs-custom-js' => 'खासमखास जेएस',
+'prefs-reset-intro' => 'आप इस पन्ने के जरिए अपनी वरीयताओं को स्थल की मूल वरीयताओं के समान बना सकते हैं।
+इसके बाद आप वापस पुरानी स्थिति पर नहीं आ सकेंगे।',
+'prefs-emailconfirm-label' => 'डाक पुष्टि:',
+'prefs-textboxsize' => 'संपादन झरोखे का आकार:',
+'youremail' => 'आपका ई-मेल पता*',
+'username' => 'सदस्यनाम:',
+'uid' => 'सदस्य क्रमांक:',
+'prefs-memberingroups' => 'निम्नलिखित {{PLURAL:$1|ग्रुप का|ग्रुपों का}} सदस्य:',
+'prefs-registration' => 'पंजीकरण समय:',
+'yourrealname' => 'आपका असली नाम*',
+'yourlanguage' => 'भाषा:',
+'yourvariant' => 'वेरियंट:',
+'yournick' => 'आपका उपनाम (दस्तखत/सही के लिये)',
+'prefs-help-signature' => 'वार्ता पन्नों पर की गई टिप्पणियों पर "<nowiki>~~~~</nowiki>" के जरिए हस्ताक्षर किया जाना चाहिए, यह आपके हस्ताक्षर और समय में परिवर्तित हो जाएगा।',
+'badsig' => 'गलत कच्चा दस्तखत, HTML टैग की जाँच करें ।',
+'badsiglength' => 'यह हस्ताक्षर बहुत बड़ा है।
+यह $1 {{PLURAL:$1|अक्षर|अक्षरों}} से अधिक का नहीं होना चाहिए।',
+'yourgender' => 'लिंग',
+'gender-unknown' => 'अनिर्दिष्ट',
+'gender-male' => 'पुरुष',
+'gender-female' => 'स्त्री',
+'prefs-help-gender' => 'वैकल्पिक:यह तंत्रांश में लिंग के आधार पर संबोधन के लिए प्रयुक्त होगा।
+यह जानकारी सार्वजनिक होगी।',
+'email' => 'इ-मेल',
+'prefs-help-realname' => 'आपका असली नाम देना जरूरी नहीं है पर अगर दिया तो आपके योगदानको आपसे आरोपण करने के लिये इस्तेमाल किया जायेगा ।',
+'prefs-help-email' => 'डाक पता वैकल्पिक है, पर यदि आप अपना कूटशब्द भूल जाएँ तो इसके जरिए नया कूटशब्द आपको भेजा जा सकता है।
+आप चाहें तो बिना अपना पता किसी को दिए, अपने सदस्य पन्ने या वार्ता पन्ने के जरिए भी लोगों से संपर्क में रह सकते हैं।',
+'prefs-help-email-required' => 'इ-मेल पता ज़रूरी हैं ।',
+'prefs-info' => 'मूलभूत जानकारी',
+'prefs-i18n' => 'अंतर्राष्ट्रीयकरण',
+'prefs-signature' => 'हस्ताक्षर',
+'prefs-dateformat' => 'तिथि प्रारूप',
+'prefs-timeoffset' => 'समयांतर',
+'prefs-advancedediting' => 'उन्नत विकल्प',
+'prefs-advancedrc' => 'उन्नत विकल्प',
+'prefs-advancedrendering' => 'उन्नत विकल्प',
+'prefs-advancedsearchoptions' => 'उन्नत विकल्प',
+'prefs-advancedwatchlist' => 'उन्नत विकल्प',
+'prefs-display' => 'प्रदर्शन विकल्प',
+'prefs-diffs' => 'अंतर',
# User rights
-'userrights' => 'सदस्य अधिकार व्यवस्थापन', # Not used as normal message but as header for the special page itself
+'userrights' => 'सदस्य अधिकार व्यवस्थापन',
'userrights-lookup-user' => 'सदस्य ग्रुपोंका व्यवस्थापन करें',
'userrights-user-editname' => 'सदस्यनाम दें:',
'editusergroup' => 'सदस्य ग्रुपका संपादन करें',
@@ -1165,6 +1213,8 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
'right-editprotected' => 'सुरक्षित पन्ने बदलें',
'right-editinterface' => 'सदस्योंका इंटरफेस बदलें',
'right-editusercssjs' => 'अन्य सदस्योंके CSS और JS फ़ाईल्समें बदलाव करें',
+'right-editusercss' => 'अन्य सदस्योंके CSS फ़ाईल्समें बदलाव करें',
+'right-edituserjs' => 'अन्य सदस्योंके JS फ़ाईल्समें बदलाव करें',
'right-rollback' => 'विशिष्ट पन्ना जिसने बदला हो उसे जल्दी पूर्ववत करें',
'right-markbotedits' => 'चुने हुए संपादनोंपर बोट मार्क करें',
'right-noratelimit' => 'रेट लिमिट्सका असर नहीं होता',
@@ -1181,6 +1231,7 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
'right-siteadmin' => 'डाटाबेस को ताला लगायें या खोलें',
'right-reset-passwords' => 'अन्य सदस्यों के कूटशब्द बदलना',
'right-override-export-depth' => 'पन्नों का निर्यात, ५वीं गहराई तक के हवाले वाले पन्नों समेत',
+'right-versiondetail' => 'विस्तृत तंत्रांश संस्करण जानकारी देखना',
# User rights log
'rightslog' => 'सदस्य अधिकार सूची',
@@ -1230,6 +1281,15 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
'recentchanges-legend' => 'हाल के परिवर्तन संबंधी विकल्प',
'recentchangestext' => 'इस विकिपर हाल में हुए बदलाव इस पन्ने पर देखें जा सकतें हैं।',
'recentchanges-feed-description' => 'इस फ़ीडमें होनेवाले विकिपर हाल में हुए बदलाव देखियें ।',
+'recentchanges-label-legend' => 'आख्यान: $1।',
+'recentchanges-legend-newpage' => '$1 - नया पन्ना',
+'recentchanges-label-newpage' => 'इस संपादन से नया पन्ना बना',
+'recentchanges-legend-minor' => '$1 - छोटा संपादन',
+'recentchanges-label-minor' => 'यह एक छोटा संपादन है',
+'recentchanges-legend-bot' => '$1 - यांत्रिक संपादन',
+'recentchanges-label-bot' => 'यह एक यांत्रिक संपादन था',
+'recentchanges-legend-unpatrolled' => '$1 - बिना निगरानी का संपादन',
+'recentchanges-label-unpatrolled' => 'इस संपादन की अभी निगरानी नहीं हुई है',
'rcnote' => "$5, $4 के पहले के {{PLURAL:$2|'''१''' दिन|'''$2''' दिनों}} में {{PLURAL:$1|हुआ '''१''' बदलाव इस प्रकार है| हुए '''$1''' बदलाव इस प्रकार हैं}}।",
'rcnotefrom' => "नीचे '''$2''' से हुए ('''$1''' या कम) बदलाव दर्शाये गये है ।",
'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
@@ -1256,6 +1316,8 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
# Recent changes linked
'recentchangeslinked' => 'पन्ने से जुडे बदलाव',
+'recentchangeslinked-feed' => 'पन्ने से जुडे बदलाव',
+'recentchangeslinked-toolbox' => 'पन्ने से जुडे बदलाव',
'recentchangeslinked-title' => '"$1" में हुए बदलाव',
'recentchangeslinked-noresult' => 'जुडे हुए पन्नोंमें दिये हुए अवसरमें कोई भी बदलाव नहीं हुए हैं ।',
'recentchangeslinked-summary' => "किसी पन्ने के हवाले कई पन्नों में मौजूद हो सकते हैं, यह सूची उन पन्नों(या किसी श्रेणी के सदस्यों) में हुए हाल के बदलाव दिखाता है।
@@ -1266,7 +1328,6 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
# Upload
'upload' => 'संचिका चढ़ाएँ',
'uploadbtn' => 'फ़ाइल अपलोड करें',
-'reupload' => 'पुन: अपलोड करें',
'reuploaddesc' => 'अपलोड रद्द करें और पुन: अपलोड पन्ने पर जायें',
'uploadnologin' => 'आप लॉगड इन नहीं हैं ।',
'uploadnologintext' => 'फ़ाईलें अपलोड करने के लिये [[Special:UserLogin|लॉग इन]] किया होना ज़रूरी हैं।',
@@ -1319,7 +1380,6 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
* अपलोड हो रहे फ़ाईल का नाम: '''<tt>[[:$1]]</tt>'''
* अस्तित्वमें होने वालें फ़ाईल का नाम: '''<tt>[[:$2]]</tt>'''
कृपया अन्य नाम चुनें।",
-'fileexists-thumb' => "<center>'''उपलब्ध फ़ाईल'''</center>",
'fileexists-thumbnail-yes' => "यह फ़ाईल बडे चित्रका छोटा आकार ''(thumbnail)'' प्रतीत होता हैं। [[$1|thumb]]
'''<tt>[[:$1]]</tt>''' यह फ़ाईल देखें।
अगर जाँची गई फ़ाईल इसी आकारकी हैं तो नईं फ़ाईल अपलोड करना जरूरी नहीं हैं।",
@@ -1344,8 +1404,6 @@ latex, dvips, gs, और convert के इन्स्टॉलेशन की
'php-uploaddisabledtext' => 'पीएचपी में संचिका चढ़ाना बंद है।
कृपया file_uploads जमाव की जाँच करें।',
'uploadscripted' => 'इस फ़ाईलमें HTML या फिर स्क्रीप्ट कोड हैं, जो की एखाद वेब ब्राउज़र द्वारा गलती से पढ़ लिया जा सकता हैं।',
-'uploadcorrupt' => 'यह फ़ाईल खराब हैं या फिर इसका एक्स्टेंशन गलत हैं।
-कृपया फ़ाईल जाँच कर फिरसे अपलोड करें।',
'uploadvirus' => 'इस फ़ाईल में व्हाईरस हैं! अधिक ज़ानकारी: $1',
'sourcefilename' => 'स्रोत फ़ाईलका नाम:',
'destfilename' => 'लक्ष्य फ़ाईल नाम:',
@@ -1374,15 +1432,36 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'गलत प्रोटोकोल',
-'upload-proto-error-text' => 'रिमोट अपलोड के लिये URL का नाम <code>http://</code> या <code>ftp://</code> से शुरु होना आवश्यक हैं।',
-'upload-file-error' => 'आंतर्गत गलती',
-'upload-file-error-text' => 'सेवक पर अस्थायी संचिका बनाते समय आंतरिक त्रुटि आई।
+'upload-proto-error' => 'गलत प्रोटोकोल',
+'upload-proto-error-text' => 'रिमोट अपलोड के लिये URL का नाम <code>http://</code> या <code>ftp://</code> से शुरु होना आवश्यक हैं।',
+'upload-file-error' => 'आंतर्गत गलती',
+'upload-file-error-text' => 'सेवक पर अस्थायी संचिका बनाते समय आंतरिक त्रुटि आई।
कृपया किसी [[Special:ListUsers/sysop|प्रबंधक]] से संपर्क करें।',
-'upload-misc-error' => 'अज्ञात अपलोड समस्या',
-'upload-misc-error-text' => 'चढ़ाते समय अज्ञात त्रुटि आई है।
+'upload-misc-error' => 'अज्ञात अपलोड समस्या',
+'upload-misc-error-text' => 'चढ़ाते समय अज्ञात त्रुटि आई है।
कृपया यह पुष्टि कर लें कि यूआरएल वैध है और उस तक पहुँचा जा सकता है, उसके बाद फिर कोशिश करें।
फिर भी समस्या आती है तो किसी [[Special:ListUsers/sysop|प्रबंधक]] से संपर्क करें।',
+'upload-too-many-redirects' => 'इस यूआरएल में अत्यधिक पुनर्निर्देशन हैं',
+'upload-unknown-size' => 'अज्ञात आकार',
+'upload-http-error' => 'एक एचटीटीपी त्रुटि आई: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'अनुमति नहीं है',
+'img-auth-nopathinfo' => 'PATH_INFO मौजूद नहीं है।
+आपके सेवक में इस जानकारी को भेजने के लिए जमाव नहीं है।
+यह सीजीआई-आधारित हो सकता है और img_auth को समर्थित नहीं करता है।
+http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखें।',
+'img-auth-notindir' => 'अनुरोधित पथ जमाई हुई चढ़ाने की निर्देशिका में नहीं है।',
+'img-auth-badtitle' => '"$1" से एक वैध शीर्षक बनाने में असमर्थ।',
+'img-auth-nologinnWL' => 'आपने सत्रारंभ नहीं किया हुआ है और "$1" श्वेतसूची में नहीं है।',
+'img-auth-nofile' => 'संचिका "$1" मौजूद नहीं है।',
+'img-auth-isdir' => 'आप एक निर्देशिका "$1" तक पहुँचने की कोशिश कर रहे हैं।
+केवल संचिका तक पहुँचा जा सकता है।',
+'img-auth-streaming' => '"$1" को धारावाहित किया जा रहा है।',
+'img-auth-public' => 'img_auth.php निजी विकि से संचिकाएँ प्रदान करने का काम करता है।
+यह विकि सार्वजनिक विकि है।
+उचित सुरक्षा के लिए img_auth.php को निष्कृय किया हुआ है।',
+'img-auth-noread' => 'प्रयोक्ता को "$1" पढ़ने का अधिकार नहीं है।',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL तक पहूंच नहीं पायें',
@@ -1394,6 +1473,7 @@ PICT # misc.
आप शायद कम भीडवाले समयमें कोशीश करना चाहेंगे।',
'license' => 'लाइसेन्सिंग:',
+'license-header' => 'लाइसेन्सिंग',
'nolicense' => 'कुछ भी चुना नहीं',
'license-nopreview' => '(झलक उपलब्ध नहीं हैं)',
'upload_source_url' => ' (एक वैध, सभी जगहोंसे उपलब्ध URL)',
@@ -1414,6 +1494,7 @@ PICT # misc.
'listfiles_count' => 'संस्करण',
# File description page
+'file-anchor-link' => 'चित्र',
'filehist' => 'संचिका का इतिहास',
'filehist-help' => 'संचिका पुराने समय में कैसी दिखती थी यह जानने के लिए वांछित दिनांक/समय पर चटका लगाएँ।',
'filehist-deleteall' => 'सभी हटायें',
@@ -1422,11 +1503,13 @@ PICT # misc.
'filehist-current' => 'सद्य',
'filehist-datetime' => 'दिनांक/समय',
'filehist-thumb' => 'अँगूठाकार प्रारूप',
+'filehist-thumbtext' => '$1 के समय के संस्करण का अँगूठाकार प्रारूप।',
'filehist-nothumb' => 'कोई अँगूठाकार नहीं',
'filehist-user' => 'सदस्य',
'filehist-dimensions' => 'आकार',
'filehist-filesize' => 'फ़ाईलका आकार (बाईट्स)',
'filehist-comment' => 'टिप्पणी',
+'filehist-missing' => 'संचिका मौजूद नहीं है',
'imagelinks' => 'संचिका की कड़ियाँ',
'linkstoimage' => 'निम्नोक्त {{PLURAL:$1|पन्ने|$1 पन्नों}} में इस संचिका के हवाले हैं:',
'linkstoimage-more' => '$1 से अधिक पन्ने इस संचिका का हवाला {{PLURAL:$1|देता है|देते हैं}}
@@ -1436,15 +1519,16 @@ PICT # misc.
'morelinkstoimage' => 'इस फ़ाईलकी [[Special:WhatLinksHere/$1|और कडी़याँ]] देखें।',
'redirectstofile' => 'निम्नोक्त {{PLURAL:$1|एक संचिका इस संचिका की ओर पुनर्निर्देशित होती है|$1 संचिकाएँ इस संचिका की ओर पुनर्निर्देशित होती हैं}}:',
'duplicatesoffile' => 'निम्नोक्त {{PLURAL:$1|संचिका इस संचिका की प्रतिलिपि है|$1 संचिकाएँ इस संचिका की प्रतिलिपियाँ हैं}} ([[Special:FileDuplicateSearch/$2|और जानकारी]]):',
-'sharedupload' => 'यह संचिका $1 से है और संभवतः अन्य परियोजनाएँ भी इसका इस्तेमाल कर रही होंगी।', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'अधिक ज़ानकारी के लिये $1 देखें।',
-'shareduploadwiki-desc' => 'ज़ानकारी जो $1 पर शेअर्ड रिपोजिटरीमें हैं नीचे दी हुई हैं।',
-'shareduploadwiki-linktext' => 'फ़ाईल ज़ानकारी पन्ना',
-'noimage' => 'इस नामसे कोई भी फ़ाईल नहीं है, आप $1 कर सकते हैं ।',
-'noimage-linktext' => 'चढाईयें',
+'sharedupload' => 'यह संचिका $1 से है और संभवतः अन्य परियोजनाएँ भी इसका इस्तेमाल कर रही होंगी।',
+'sharedupload-desc-there' => 'यह संचिका $1 से है और अन्य परियोजनाओं द्वारा भी प्रयुक्त हो सकती है।
+और जानकारी के लिए कृपया [$2 संचिका विवरण पन्ना] देखें।',
+'sharedupload-desc-here' => 'यह संचिका $1 से है और अन्य परियोजनाओं द्वारा भी प्रयुक्त हो सकती है।
+इसके [$2 संचिका विवरण पन्ने] में मौजूद वर्णन निम्नोक्त है।',
+'filepage-nofile' => 'इस नाम की कोई संचिका मौजूद नहीं है',
+'filepage-nofile-link' => 'इस नाम की कोई संचिका मौजूद नहीं है, पर आप उसे [$1 चढ़ा सकते हैं]।',
'uploadnewversion-linktext' => 'इस फ़ाईलका नया अवतरण अपलोड करें',
-'shared-repo-from' => '$1 से', # $1 is the repository name
-'shared-repo' => 'एक साझा भंडार', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 से',
+'shared-repo' => 'एक साझा भंडार',
# File reversion
'filerevert' => '$1 पूर्ववत करें',
@@ -1474,6 +1558,7 @@ PICT # misc.
** कॉपीराईट
** डुप्लिकेट फ़ाईल',
'filedelete-edit-reasonlist' => 'हटाने के कारण बदलें',
+'filedelete-maintenance' => 'रखरखाव चल रहा है इसलिए कुछ समय के लिए संचिकाओं को मिटाना और वापस पुरान स्थिति पर लाना निष्क्रिय है।',
# MIME search
'mimesearch' => 'MIME खोज',
@@ -1496,7 +1581,7 @@ PICT # misc.
# Random page
'randompage' => 'किसी एक लेख पर जाएं',
-'randompage-nopages' => 'इस नामस्थान में पन्ने नहीं हैं।',
+'randompage-nopages' => 'कोई भी {{PLURAL:$2|पन्ना इस नामस्थान में नहीं है|पन्ने इन नामस्थानों में नहीं हैं}}: $1।',
# Random redirect
'randomredirect' => 'किसी एक पुनर्निर्देशन पर जायें',
@@ -1508,6 +1593,7 @@ PICT # misc.
'statistics-header-edits' => 'संपादन के आँकड़े',
'statistics-header-views' => 'आँकड़े देखें',
'statistics-header-users' => 'सदस्य आंकड़े',
+'statistics-header-hooks' => 'अन्य आँकड़े',
'statistics-articles' => 'सामग्री पन्ने',
'statistics-pages' => 'पन्ने',
'statistics-pages-desc' => 'वार्ता पन्ने, पुनर्निर्देशन आदि समेत विकि के सभी पन्ने।',
@@ -1538,8 +1624,8 @@ PICT # misc.
'brokenredirects' => 'टूटे हुए अनुप्रेष',
'brokenredirectstext' => 'निम्नोक्त पुनर्निर्देशन नामौजूद पन्नों की ओर ले जाते हैं:',
-'brokenredirects-edit' => '(संपादित करें)',
-'brokenredirects-delete' => '(हटायें)',
+'brokenredirects-edit' => 'संपादित करें',
+'brokenredirects-delete' => 'हटायें',
'withoutinterwiki' => 'आंतरविकि कड़ियाँ न होनेवाले लेख',
'withoutinterwiki-summary' => 'नीचे दिये गये पन्नोंमें अन्य भाषाओंके अवतरणोंसे जुडने वाली कड़ियाँ नहीं हैं:',
@@ -1646,14 +1732,17 @@ PICT # misc.
# Special:Categories
'categories' => 'श्रेणियाँ',
-'categoriespagetext' => 'निम्न श्रेणियाँ विकि मे अस्तित्वमान हैं।',
+'categoriespagetext' => 'निम्नोक्त {{PLURAL:$1|श्रेणी में पन्ने या माध्यम है।|श्रेणियों में पन्ने या माध्यम हैं।}}
+जिन श्रेणियों का [[Special:UnusedCategories|इस्तेमाल नहीं किया गया है]] वे यहाँ नहीं दिखाई गई हैं।
+[[Special:WantedCategories|वांछित श्रेणियाँ]] भी देखें।',
'categoriesfrom' => 'इस शब्दसे शुरू होनेवाली श्रेणीयाँ दर्शायें:',
'special-categories-sort-count' => 'संख्यानुसार वर्ग दर्शायें',
'special-categories-sort-abc' => 'वर्णानुक्रम के अनुसार दर्शायें',
# Special:DeletedContributions
-'deletedcontributions' => 'हटाये गये सदस्य योगदान',
-'deletedcontributions-title' => 'हटाये गये सदस्य योगदान',
+'deletedcontributions' => 'हटाये गये सदस्य योगदान',
+'deletedcontributions-title' => 'हटाये गये सदस्य योगदान',
+'sp-deletedcontributions-contribs' => 'योगदान',
# Special:LinkSearch
'linksearch' => 'बाहरी कड़ियाँ',
@@ -1668,6 +1757,13 @@ PICT # misc.
'listusersfrom' => 'इस शब्द से शुरु होनेवाले सदस्य दर्शायें:',
'listusers-submit' => 'दर्शायें',
'listusers-noresult' => 'सदस्य मिला नहीं।',
+'listusers-blocked' => '(अवरोधित)',
+
+# Special:ActiveUsers
+'activeusers' => 'सक्रिय सदस्यों की सूची',
+'activeusers-count' => '$1 हालिया {{PLURAL:$1|संपादन|संपादन}}',
+'activeusers-from' => 'इससे शुरू होने वाले सदस्य दिखाएँ:',
+'activeusers-noresult' => 'कोई सदस्य नहीं मिले।',
# Special:Log/newusers
'newuserlogpage' => 'नये सदस्योंकी सूची',
@@ -1678,17 +1774,23 @@ PICT # misc.
'newuserlog-autocreate-entry' => 'खाता अपनेआप खोल दिया हैं',
# Special:ListGroupRights
-'listgrouprights' => 'सदस्य ग्रुप अधिकार',
-'listgrouprights-summary' => 'नीचे इसे विकि के लिए परिभाषित सदस्य समूहों की सूची है, साथ में हर समूह से जुड़े अधिकार भी वर्णित हैं।
+'listgrouprights' => 'सदस्य ग्रुप अधिकार',
+'listgrouprights-summary' => 'नीचे इसे विकि के लिए परिभाषित सदस्य समूहों की सूची है, साथ में हर समूह से जुड़े अधिकार भी वर्णित हैं।
हर अधिकार के बारे में [[{{MediaWiki:Listgrouprights-helppage}}|अतिरिक्त जानकारी]] भी उपलब्ध है।',
-'listgrouprights-group' => 'ग्रुप',
-'listgrouprights-rights' => 'अधिकार',
-'listgrouprights-helppage' => 'Help:ग्रुप अधिकार',
-'listgrouprights-members' => '(सदस्य सूची)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|समूह|समूह}} जोड़ें: $1',
-'listgrouprights-removegroup' => 'समूह {{PLURAL:$2|हटाएँ|हटाएँ}}: $1',
-'listgrouprights-addgroup-all' => 'सभी समूह जोड़ें',
-'listgrouprights-removegroup-all' => 'सभी समूह हटाएँ',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">दिए गए अधिकार</span>
+* <span class="listgrouprights-revoked">हटाए गए अधिकार</span>',
+'listgrouprights-group' => 'ग्रुप',
+'listgrouprights-rights' => 'अधिकार',
+'listgrouprights-helppage' => 'Help:ग्रुप अधिकार',
+'listgrouprights-members' => '(सदस्य सूची)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|समूह|समूह}} जोड़ें: $1',
+'listgrouprights-removegroup' => 'समूह {{PLURAL:$2|हटाएँ|हटाएँ}}: $1',
+'listgrouprights-addgroup-all' => 'सभी समूह जोड़ें',
+'listgrouprights-removegroup-all' => 'सभी समूह हटाएँ',
+'listgrouprights-addgroup-self' => 'अपने खाते में {{PLURAL:$2|समूह|समूह}} जोड़ें: $1',
+'listgrouprights-removegroup-self' => ' अपने खाते से {{PLURAL:$2|समूह|समूह}} हटाएँ: $1',
+'listgrouprights-addgroup-self-all' => 'अपने खाते में सभी समूह शामिल करें',
+'listgrouprights-removegroup-self-all' => 'अपने खाते से सभी समूह हटाएँ',
# E-mail user
'mailnologin' => 'पानेवाले का एड्रेस दिया नहीं',
@@ -1762,29 +1864,30 @@ PICT # misc.
'enotif_lastvisited' => 'आपकी आखिरी भेंट के बाद हुए बदलाव देखनेकेलिये $1 देखें।',
'enotif_lastdiff' => 'इस बदलाव को देखने के लिये $1 देखें।',
'enotif_anon_editor' => 'अनामक सदस्य $1',
-'enotif_body' => 'प्रिय $WATCHINGUSERNAME,
+'enotif_body' => 'प्रिय $WATCHINGUSERNAME जी,
-{{SITENAME}} पृष्ठ $PAGETITLE $PAGEEDITOR द्वारा $PAGEEDITDATE को $CHANGEDORCREATED किया है, वर्त्तमान संस्करण के लिए $PAGETITLE_URL देखें।
+{{SITENAME}} का पन्ना, $PAGETITLE, $PAGEEDITDATE को $PAGEEDITOR द्वारा $CHANGEDORCREATED, कृपया ताज़े संस्करण के लिए $PAGETITLE_URL को देखें
$NEWPAGE
संपादक का सारांश: $PAGESUMMARY $PAGEMINOREDIT
-संपादक से सम्पर्क करें:
+संपादक से संपर्क करें:
डाक: $PAGEEDITOR_EMAIL
-विकी: $PAGEEDITOR_WIKI
+विकि: $PAGEEDITOR_WIKI
-आगे परिवर्तन की स्थिति में आपको अधिसूचित नहीं किया जायेगा, जब तक आप इस पृष्ठ को नहीं देखेंगे।
-आप अपनी ध्यानसूची में आपके द्वारा सभी देखे जाने वाले पृष्ठों के लिए अधिसूचना पताका को फिर से ठीक कर सकता है।
+जब तक आप इस पन्ने पर फिर से जाते नहीं, तब तक और बदलाव होने पर भी आपको फिर से सूचना नहीं भेजी जाएगी।
+आप चाहें तो अपनी ध्यानसूची में मौजूद सभी पन्नों के लिए सूचना चिह्न को भी बदल सकते हैं।
- आपका साथी {{SITENAME}} अधिसूचना तंत्र
+ आपकी सहायिका, {{SITENAME}} की सूचक प्रणाली
--
-अपनी ध्यानसूची में समायोजन में परिवर्तन के लिए, देखें
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+ध्यानसूची के जमाव को बदलने के लिए यहाँ जाएँ
-प्रतिपुष्टि एवं सहायता के लिए:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+राय देने या अधिक मदद पाने के लिए:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1800,6 +1903,7 @@ $NEWPAGE
'confirmdeletetext' => 'आप एक लेख उसके सभी अवतरणोंके साथ हटाना चाहते हैं ।
आपसे अनुरोध है कि आप जो कर रहे है वह मीडियाविकिके [[{{MediaWiki:Policy-url}}|नीतिनुसार]] है इस बात की पुष्टि किजीये । तथा क्रिया करने से पहले आपकी क्रिया के परिणाम जान लें ।',
'actioncomplete' => 'कार्य पूर्ण',
+'actionfailed' => 'क्रिया विफल',
'deletedtext' => '"<nowiki>$1</nowiki>" को हटाया गया है ।
हाल में हटाये गये लेखोंकी सूची के लिये $2 देखें ।',
'deletedarticle' => '"$1" को हटाया गया है।',
@@ -1823,21 +1927,22 @@ $NEWPAGE
कृपया सोच समझ कर आगे बढ़ें।',
# Rollback
-'rollback' => 'संपादन पीछे ले जायें',
-'rollback_short' => 'पूर्ववत करें',
-'rollbacklink' => 'वापस लें',
-'rollbackfailed' => 'पूर्ववत नहीं कर सकें',
-'cantrollback' => 'पुराने अवतरणको पूर्ववत नहीं कर सकते हैं;
+'rollback' => 'संपादन पीछे ले जायें',
+'rollback_short' => 'पूर्ववत करें',
+'rollbacklink' => 'वापस लें',
+'rollbackfailed' => 'पूर्ववत नहीं कर सकें',
+'cantrollback' => 'पुराने अवतरणको पूर्ववत नहीं कर सकते हैं;
इस पन्ने का आखिरी योगदानकर्ता इस लेख का एकमात्र लेखक हैं।',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|वार्ता]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) द्वारा किए गए [[:$1]] के पिछले संपादन को वापस पुरानी स्थिति पर नहीं लाया जा सकता है;
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|वार्ता]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) द्वारा किए गए [[:$1]] के पिछले संपादन को वापस पुरानी स्थिति पर नहीं लाया जा सकता है;
किसी और ने इस बीच या तो इस पन्ने को फिर से संपादित कर दिया है या पहले ही पन्ना पुरानी स्थिति पर लाया जा चुका है।
इस पन्ने का ताज़ातरीन संपादन [[User:$3|$3]] ([[User talk:$3|वार्ता]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ने किया है।',
-'editcomment' => "संपादन टिप्पणी थी: \"''\$1''\"।", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) के संपादनोंको हटाकर [[User:$1|$1]] के आखिरी अवतरण को पूर्ववत किया', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 के संपादन हटायें;
+'editcomment' => "संपादन टिप्पणी थी: \"''\$1''\"।",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) के संपादनोंको हटाकर [[User:$1|$1]] के आखिरी अवतरण को पूर्ववत किया',
+'revertpage-nouser' => '(प्रयोक्ता नाम हटाया गया है) द्वारा किए गए संपादन को वापस पुरानी स्थिति में ला कर इसके पहले के [[User:$1|$1]] द्वारा बने संस्करण को फिर से ताज़ा संस्करण बनाएँ।',
+'rollback-success' => '$1 के संपादन हटायें;
$2 द्वारा संपादित आखिरी अवतरण को पुनर्स्थापित किया।',
-'sessionfailure' => 'ऐसा प्रतीत होता है की आपके लोगिन सत्र के साथ कोई समस्या है।
+'sessionfailure' => 'ऐसा प्रतीत होता है की आपके लोगिन सत्र के साथ कोई समस्या है।
सत्र अपहरण से बचाने के लिए सावधानी के तौर पर आपका यह क्रियाकलाप रद्द कर दिया गया है।
कृपया "back" पर वार करें और पृष्ठ को दुबारा से लोड करें, तब दुबारा कोशिश करें।',
@@ -1856,7 +1961,6 @@ $2 द्वारा संपादित आखिरी अवतरण क
'protectexpiry' => 'समाप्ति:',
'protect_expiry_invalid' => 'समाप्ती समय गलत है ।',
'protect_expiry_old' => 'समाप्ती समय बीत चुका है ।',
-'protect-unchain' => 'नाम बदलने की अनुमति दिजीये',
'protect-text' => "'''<nowiki>$1</nowiki>''' पन्ने का सुरक्षा-स्तर आप यहां देख सकते है और उसे बदल भी सकते है ।",
'protect-locked-blocked' => "आप बाधित होने की स्थिति में सुरक्षा स्थर में परिवर्तन नहीं कर सकते।
पृष्ठ '''$1''' की वर्त्तमान स्तिथि यहाँ पर है:",
@@ -1885,7 +1989,7 @@ $2 द्वारा संपादित आखिरी अवतरण क
**अफलदायी संपादन युद्ध
**अधिक यातायात वाला पन्ना',
'protect-edit-reasonlist' => 'सुरक्षा के कारण बदलें',
-'protect-expiry-options' => '१ घंटा:1 hour,१ दिन:1 day,१ सप्ताह:1 week,२ सप्ताह:2 weeks,१ महीना:1 month,३ महीने:3 months,६ महीने:6 months,१ साल:1 year,हमेशा के लिए:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '१ घंटा:1 hour,१ दिन:1 day,१ सप्ताह:1 week,२ सप्ताह:2 weeks,१ महीना:1 month,३ महीने:3 months,६ महीने:6 months,१ साल:1 year,हमेशा के लिए:infinite',
'restriction-type' => 'इजाज़त:',
'restriction-level' => 'सुरक्षा-स्तर:',
'minimum-size' => 'कमसे कम आकार',
@@ -1928,6 +2032,7 @@ $2 द्वारा संपादित आखिरी अवतरण क
'undelete-nodiff' => 'पुरान अवतरण नहीं हैं।',
'undeletebtn' => 'वापस ले आयें',
'undeletelink' => 'देखें/पुरानी स्थिति पर लाएँ',
+'undeleteviewlink' => 'देखें',
'undeletereset' => 'पूर्ववत करें',
'undeleteinvert' => 'चुनाव उलटें',
'undeletecomment' => 'टिप्पणी:',
@@ -1967,19 +2072,23 @@ $1',
'contributions-title' => '$1 के लिए सदस्यों के योगदान',
'mycontris' => 'मेरा योगदान',
'contribsub2' => '$1 के लिये ($2)',
-'nocontribs' => 'इन कसौटियों से मिलनेवाले बदलाव मिले नहीं।', # Optional parameter: $1 is the user name
+'nocontribs' => 'इन कसौटियों से मिलनेवाले बदलाव मिले नहीं।',
'uctop' => '(उपर)',
'month' => 'इस महिनेसे (और पुरानें):',
'year' => 'इस सालसे (और पुराने):',
-'sp-contributions-newbies' => 'सिर्फ नये सदस्योंका योगदान दर्शायें',
-'sp-contributions-newbies-sub' => 'नये सदस्योंके लिये',
-'sp-contributions-newbies-title' => 'नए सदस्यों द्वारा योगदान',
-'sp-contributions-blocklog' => 'ब्लॉक सूची',
-'sp-contributions-logs' => 'चिट्ठे',
-'sp-contributions-search' => 'योगदान के लिये खोज',
-'sp-contributions-username' => 'आईपी एड्रेस या सदस्यनाम:',
-'sp-contributions-submit' => 'खोज',
+'sp-contributions-newbies' => 'सिर्फ नये सदस्योंका योगदान दर्शायें',
+'sp-contributions-newbies-sub' => 'नये सदस्योंके लिये',
+'sp-contributions-newbies-title' => 'नए सदस्यों द्वारा योगदान',
+'sp-contributions-blocklog' => 'ब्लॉक सूची',
+'sp-contributions-deleted' => 'सदस्यों को योगदान जो हटाए जा चुके हैं',
+'sp-contributions-logs' => 'चिट्ठे',
+'sp-contributions-talk' => 'वार्ता',
+'sp-contributions-userrights' => 'सदस्य अधिकार प्रबंधन',
+'sp-contributions-blocked-notice' => 'यह सदस्य फ़िलहाल अवरोधित हैं। सदंर्भ के लिए ताज़ातरीन अवरोध चिट्ठा प्रविष्टि नीचे है:',
+'sp-contributions-search' => 'योगदान के लिये खोज',
+'sp-contributions-username' => 'आईपी एड्रेस या सदस्यनाम:',
+'sp-contributions-submit' => 'खोज',
# What links here
'whatlinkshere' => 'यहाँ के हवाले कहाँ कहाँ हैं',
@@ -2025,7 +2134,7 @@ $1',
'ipbenableautoblock' => 'इस सदस्यद्वारा इस्तेमाल किया गया आखिरी आईपी एड्रेस और यहां से आगे इस सदस्य द्वारा इस्तेमालमें लाये जाने वाले सभी एड्रेस ब्लॉक करें।',
'ipbsubmit' => 'इस सदस्य को और बदलाव करने से रोकें',
'ipbother' => 'अन्य समय:',
-'ipboptions' => '२ घंटे:2 hours,१ दिन:1 day,३ दिन:3 days,१ हफ्ता:1 week,२ हफ्ते:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ साल:1 year,हमेशा के लिये:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '२ घंटे:2 hours,१ दिन:1 day,३ दिन:3 days,१ हफ्ता:1 week,२ हफ्ते:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ साल:1 year,हमेशा के लिये:infinite',
'ipbotheroption' => 'अन्य',
'ipbotherreason' => 'अन्य/दूसरा कारण:',
'ipbhidename' => 'संपादन व सूचियों से सदस्य नाम छिपाएँ',
@@ -2056,7 +2165,7 @@ $1',
'ipblocklist-submit' => 'खोज',
'blocklistline' => '$1, $2 ने $3 को बदलाव करने से रोक दिया है (यह रोक $4 तक मान्य है)',
'infiniteblock' => 'इनफाईनाईट',
-'expiringblock' => 'समाप्ति $1',
+'expiringblock' => '$1 को $2 बजे मियाद खत्म होती है',
'anononlyblock' => 'केवल अनाम सदस्य',
'noautoblockblock' => 'स्वयंचलित ब्लॉक रद्द किये हैं',
'createaccountblock' => 'खाते निर्माण को रोक दिया हैं',
@@ -2071,7 +2180,6 @@ $1',
'autoblocker' => 'आपका IP पता स्वत: बाध्य है, जो की हाल ही में "[[User:$1|$1]]" द्वारा प्रयोग किया गया है।
$1 को बाध्य करने का कारण है: "$2"',
'blocklogpage' => 'ब्लॉक सूची',
-'blocklog-fulllog' => 'समूचा अवरोध चिट्ठा',
'blocklogentry' => '"[[$1]]" को $2 $3 तक बदलाव करने से रोक दिया गया है।',
'reblock-logentry' => '[[$1]] का अवरोध जमाव बदला गया, मियाद अब $2 $3 पर खत्म होगी',
'blocklogtext' => 'यह सदस्यों को बाध्य एवं अबाध्य करने के क्रियाकलापों का अभिलेख है।
@@ -2164,7 +2272,7 @@ $1 पहले ही अवरोधित है।
'move-watch' => 'ध्यान रखें',
'movepagebtn' => 'नाम बदलें',
'pagemovedsub' => 'नाम बदल दिया गया है',
-'movepage-moved' => '\'\'\'"$1" को "$2" पर ले जाया गया है\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" को "$2" पर ले जाया गया है\'\'\'',
'movepage-moved-redirect' => 'एक पुनर्निर्देशन भी निर्मित किया गया है।',
'movepage-moved-noredirect' => 'पुनर्निर्देशन पन्ना नहीं बनाया गया है।',
'articleexists' => 'इस नाम का एक पृष्ठ पहले से ही उपस्थित है, अथवा आप ने अमान्य नाम चुना है। कृपया दूसरा नाम चुनें।',
@@ -2207,6 +2315,8 @@ $1 पहले ही अवरोधित है।
'imageinvalidfilename' => 'लक्ष्यित संचिका नाम अवैध है',
'fix-double-redirects' => 'मूल शीर्षक तक जाने वाले सभी पुनर्निर्देशनों को भी बदलें',
'move-leave-redirect' => 'एक पुनर्निर्देशन पीछे छोड़ते जाएँ',
+'protectedpagemovewarning' => "'''चेतावनी:''' यह पन्ना तालाबंद है अतः केवल वही सदस्य इनका स्थानांतरण कर सकते हैं जो प्रबंधक हों।",
+'semiprotectedpagemovewarning' => "'''ध्यान दें:''' इस पन्ने को सुरक्षित कर दिया गया है ताकि केवल पंजीकृत सदस्य ही इसे स्थानांतरित कर पाएँ।",
# Export
'export' => 'पन्नों का निर्यात करें',
@@ -2229,14 +2339,20 @@ $1 पहले ही अवरोधित है।
'export-pagelinks' => 'जिन पन्नों के हवाले यहाँ हैं, उन्हें भी इस गहराई तक शामिल करें:',
# Namespace 8 related
-'allmessages' => 'व्यवस्था संदेश',
-'allmessagesname' => 'नाम',
-'allmessagesdefault' => 'डिफॉल्ट पाठ',
-'allmessagescurrent' => 'वर्तमान पाठ',
-'allmessagestext' => 'ये मीडियाविकि नामस्थान में उपलब्ध प्रणाली संदेशों की एक सूची है। यदि आप सामान्य मीडियाविकि क्षेत्रीयकरण में योगदान देना चाहें तो कृपया [http://www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरण] व [http://translatewiki.net translatewiki.net] को देखें।',
-'allmessagesnotsupportedDB' => "इस पन्ने का इस्तेमाल नहीं कर सकते क्योंकी '''\$wgUseDatabaseMessages''' बंद हैं।",
-'allmessagesfilter' => 'संदेशनाम फिल्टर:',
-'allmessagesmodified' => 'केवल परिवर्तित दिखायें',
+'allmessages' => 'व्यवस्था संदेश',
+'allmessagesname' => 'नाम',
+'allmessagesdefault' => 'डिफॉल्ट पाठ',
+'allmessagescurrent' => 'वर्तमान पाठ',
+'allmessagestext' => 'ये मीडियाविकि नामस्थान में उपलब्ध प्रणाली संदेशों की एक सूची है। यदि आप सामान्य मीडियाविकि क्षेत्रीयकरण में योगदान देना चाहें तो कृपया [http://www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरण] व [http://translatewiki.net translatewiki.net] को देखें।',
+'allmessagesnotsupportedDB' => "इस पन्ने का इस्तेमाल नहीं कर सकते क्योंकी '''\$wgUseDatabaseMessages''' बंद हैं।",
+'allmessages-filter-legend' => 'छानें',
+'allmessages-filter' => 'अनुकूलन स्थिति के आधार पर छानें:',
+'allmessages-filter-unmodified' => 'अपरिवर्तित',
+'allmessages-filter-all' => 'सभी',
+'allmessages-filter-modified' => 'परिवर्तित',
+'allmessages-prefix' => 'उपसर्ग के आधार पर छानें:',
+'allmessages-language' => 'भाषा:',
+'allmessages-filter-submit' => 'जाएँ',
# Thumbnails
'thumbnail-more' => 'बड़ा करें',
@@ -2246,6 +2362,9 @@ $1 पहले ही अवरोधित है।
'djvu_no_xml' => 'DjVu फ़ाईलके लिये XML नहीं मिल पाया',
'thumbnail_invalid_params' => 'थंबनेलके लिये गलत पॅरॅमीटर',
'thumbnail_dest_directory' => 'लक्ष्य डाइरेक्टरी बना नहीं पा रहें हैं',
+'thumbnail_image-type' => 'इस प्रकार की छवि समर्थित नहीं है',
+'thumbnail_gd-library' => 'अवैध जीडी लाइब्रेरी जमाव: कार्यसमूह $1 मौजूद नहीं है',
+'thumbnail_image-missing' => 'लगता है संचिका नामौजूद है: $1',
# Special:Import
'import' => 'पन्ने इम्पोर्ट करें',
@@ -2312,6 +2431,7 @@ $1 पहले ही अवरोधित है।
'tooltip-ca-viewsource' => 'यह पन्ना सुरक्षित हैं। आप इसका स्रोत देख सकते हैं।',
'tooltip-ca-history' => 'इस पन्ने के पुराने अवतरण',
'tooltip-ca-protect' => 'इस पन्नेको सुरक्षित किजीयें',
+'tooltip-ca-unprotect' => 'इस पन्ने से सुरक्षा हटाएँ',
'tooltip-ca-delete' => 'इस पन्ने को हटाएं',
'tooltip-ca-undelete' => 'इस पन्नेको हटाने से पहले किये गये बदलाव पुनर्स्थापित करें',
'tooltip-ca-move' => 'यह पन्ना स्थानांतरित करें',
@@ -2322,6 +2442,7 @@ $1 पहले ही अवरोधित है।
'tooltip-search-fulltext' => 'इस वाक्यांश को पन्नों में खोजें',
'tooltip-p-logo' => 'मुख पृष्ठ',
'tooltip-n-mainpage' => 'मुखपृष्ठ पर जाएँ',
+'tooltip-n-mainpage-description' => 'मुखपृष्ठ पर जाएँ',
'tooltip-n-portal' => 'परियोजना के बारे में, आप क्या कर सकतें हैं, मदद कहाँ से लें',
'tooltip-n-currentevents' => 'हालकी घटनाओं की पृष्ठभूमि प्राप्त करें',
'tooltip-n-recentchanges' => 'विकि में हाल में हुए बदलावों की फ़ेरहिस्त',
@@ -2375,7 +2496,8 @@ $1 पहले ही अवरोधित है।
# Attribution
'anonymous' => '{{SITENAME}} के {{PLURAL:$1||}} बेनामी सदस्य',
'siteuser' => 'विकिपीडिया सदस्य $1',
-'lastmodifiedatby' => 'इस पन्ने का आखिरी बदलाव $3 ने $2, $1 पर किया।', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} अज्ञात उपयोगकर्ता $1',
+'lastmodifiedatby' => 'इस पन्ने का आखिरी बदलाव $3 ने $2, $1 पर किया।',
'othercontribs' => '$1 के कार्य के अनुसार।',
'others' => 'अन्य',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|सदस्य|सदस्य}} $1',
@@ -2407,6 +2529,19 @@ $1 पहले ही अवरोधित है।
'mw_math_modern' => 'आधुनिक ब्राउज़रके लिये उपयुक्त',
'mw_math_mathml' => 'MathML अगर हो सके तो (प्रायोगिक)',
+# Math errors
+'math_failure' => 'पार्स नहीं कर पायें',
+'math_unknown_error' => 'अपरिचीत समस्या',
+'math_unknown_function' => 'अज्ञात कार्य',
+'math_lexing_error' => 'लेक्सींग समस्या',
+'math_syntax_error' => 'सिन्टैक्स गलती',
+'math_image_error' => 'PNG में रुपांतरण अयशस्वी;
+latex, dvips, gs, और convert के इन्स्टॉलेशन की जाँच करें',
+'math_bad_tmpdir' => 'मैथ अस्थायी डाइरेक्टरी या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
+'math_bad_output' => 'मैथ आउटपुट डाइरेक्टरी या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
+'math_notexvc' => 'texvc एक्झीक्यूटेबल फ़ाईल मिल नहीं रहीं;
+समनुरूप बनाने के लियें math/README देखें।',
+
# Patrolling
'markaspatrolleddiff' => 'देख लिया ऐसा मार्क करें',
'markaspatrolledtext' => 'इस पन्ने को देख लिया ऐसा मार्क करें',
@@ -2441,12 +2576,9 @@ $1',
'previousdiff' => '← इससे पुराना बदलाव',
'nextdiff' => 'ताज़ा संपादन →',
-# Visual comparison
-'visual-comparison' => 'द्रैश्यिक तुलना',
-
# Media information
'mediawarning' => "'''सूचना''': इस फ़ाईलमें गलत कोड होने की आशंका हैं, इसे चलानेसे आपके सिस्टममें परेशानियां हो सकती हैं।",
-'imagemaxsize' => 'फ़ाईल ज़ानकारी पन्नेपर ज्यादा से ज्यादा दिखायें जाने वाले चित्र:',
+'imagemaxsize' => "छवि आकार सीमा:<br />''(संचिका वर्णन पन्नों के लिए)''",
'thumbsize' => 'थंबनेल का आकार:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पन्ना|पन्ने}}',
'file-info' => '(फ़ाईल का आकार: $1, MIME प्रकार: $2)',
@@ -2455,6 +2587,8 @@ $1',
'svg-long-desc' => '(SVG फ़ाईल, साधारणत: $1 × $2 पीक्सेल्स, फ़ाईलका आकार: $3)',
'show-big-image' => 'सम्पूर्ण रिज़ोल्यूशन',
'show-big-image-thumb' => '<small>इस झलक का आकार: $1 × $2 पीक्सेल्स</small>',
+'file-info-gif-looped' => 'चक्र में',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ढाँचा|ढाँचे}}',
# Special:NewFiles
'newimages' => 'नई फ़ाईल्सकी गैलरी',
@@ -2488,7 +2622,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'चौडाई',
@@ -2615,14 +2749,14 @@ $1',
'exif-unknowndate' => 'अज्ञात तारीख',
-'exif-orientation-1' => 'सामान्य', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'हॉरिज़ॉन्टली बदला', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° घूमाया', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'वर्टिकली बदला', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° CCW घूमाया और वर्टिकली बदला', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° CW घूमाया', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° CW घूमाया और वर्टिकली बदला', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° CCW घूमाया', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'सामान्य',
+'exif-orientation-2' => 'हॉरिज़ॉन्टली बदला',
+'exif-orientation-3' => '180° घूमाया',
+'exif-orientation-4' => 'वर्टिकली बदला',
+'exif-orientation-5' => '90° CCW घूमाया और वर्टिकली बदला',
+'exif-orientation-6' => '90° CW घूमाया',
+'exif-orientation-7' => '90° CW घूमाया और वर्टिकली बदला',
+'exif-orientation-8' => '90° CCW घूमाया',
'exif-planarconfiguration-1' => 'चंकी फ़रमैट',
'exif-planarconfiguration-2' => 'प्लेनर फ़रमैट',
@@ -2745,7 +2879,7 @@ $1',
'exif-gpsmeasuremode-2' => '२-बाजूओंवाली मेज़रमेंट',
'exif-gpsmeasuremode-3' => '३-बाजूओंवाली मेज़रमेंट',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'कि.मी. प्रति घंटा',
'exif-gpsspeed-m' => 'मील प्रति घंटा',
'exif-gpsspeed-n' => 'गांठ',
@@ -2764,6 +2898,7 @@ $1',
'watchlistall2' => 'सभी',
'namespacesall' => 'सभी',
'monthsall' => 'सभी',
+'limitall' => 'सभी',
# E-mail address confirmation
'confirmemail' => 'ई-मेल प्रमाणित करे',
@@ -2950,7 +3085,7 @@ $1',
'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' पुरानी मूल क्रमांकन कुंजी "$1" के बजाय अब मूल क्रमांकन कुंजी "$2" होगी।',
# Special:Version
-'version' => 'रूपान्तर', # Not used as normal message but as header for the special page itself
+'version' => 'रूपान्तर',
'version-extensions' => 'इन्स्टॉल की हुई एक्स्टेंशन',
'version-specialpages' => 'विशेष पन्ने',
'version-parserhooks' => 'पार्सर हूक',
@@ -2964,7 +3099,7 @@ $1',
'version-skin-extension-functions' => 'त्वचा एक्स्टेंशन क्रिया',
'version-hook-name' => 'हूक नाम',
'version-hook-subscribedby' => 'ने सदस्यत्व लिया',
-'version-version' => 'अवतरण',
+'version-version' => '(अवतरण $1)',
'version-license' => 'लाइसेन्स',
'version-software' => 'इन्स्टॉल की हुई प्रणाली',
'version-software-product' => 'प्रोडक्ट',
@@ -3045,4 +3180,15 @@ $1',
'dberr-outofdate' => 'ध्यान दे, हो सकता है कि हमारी सामग्री से संबंधित उनकी सूची बासी हो।',
'dberr-cachederror' => 'यह अनुरोधित पन्ने की संचित प्रति है, हो सकता है यह ताज़ी न हो।',
+# HTML forms
+'htmlform-invalid-input' => 'आपके द्वारा प्रदत्त कुछ सामग्री में समस्याएँ हैं',
+'htmlform-select-badoption' => 'आपके द्वारा निर्दिष्ट मान वैध विकल्प नहीं है।',
+'htmlform-int-invalid' => 'आपके द्वारा निर्दिष्ट मान पूर्णांक नहीं है।',
+'htmlform-float-invalid' => 'आपके द्वारा निर्दिष्ट मान संख्या नहीं है।',
+'htmlform-int-toolow' => 'आपके द्वारा निर्दिष्ट मान न्यूनतम $1 से कम है',
+'htmlform-int-toohigh' => 'आपके द्वारा निर्दिष्ट मान अधिकतम $1 से ज़्यादा है',
+'htmlform-submit' => 'जमा करें',
+'htmlform-reset' => 'बदलाव पुरानी स्थिति पर लाएँ',
+'htmlform-selectorother-other' => 'अन्य',
+
);
diff --git a/languages/messages/MessagesHif.php b/languages/messages/MessagesHif.php
index 80505ea5..3d572f23 100644
--- a/languages/messages/MessagesHif.php
+++ b/languages/messages/MessagesHif.php
@@ -1,6 +1,9 @@
<?php
/** Fiji Hindi (Fiji Hindi/फ़ीजी हिन्दी)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment falls back to Fiji Hindi (Latin)
diff --git a/languages/messages/MessagesHif_latn.php b/languages/messages/MessagesHif_latn.php
index def1df7a..414d1c7a 100644
--- a/languages/messages/MessagesHif_latn.php
+++ b/languages/messages/MessagesHif_latn.php
@@ -9,6 +9,7 @@
*
* @author Abdul Kadir
* @author Girmitya
+ * @author Malafaya
* @author Thakurji
*/
@@ -43,6 +44,7 @@ $messages = array(
'tog-enotifminoredits' => 'Panna me mamuli badlao khatir bhi hame E-mail karo',
'tog-enotifrevealaddr' => 'Notification E-mail me hamaar E-mail address ke dekhao.',
'tog-shownumberswatching' => 'Ketna sadasya dekhe hai ke number dekhao',
+'tog-oldsig' => 'Abhi ke signature ke preview:',
'tog-fancysig' => 'Signature ke wikitext ke rakam dekho (binaa automatic jorr se)',
'tog-externaleditor' => 'Apne se bahaari editor ke use karo (khali chalaak logan khatir, computer me special settings ke jaruri hai)',
'tog-externaldiff' => 'Apne se bahaari diff ke use karo (khali chalaak logan khatir, computer me special settings ke jaruri hai)',
@@ -65,6 +67,13 @@ $messages = array(
'underline-never' => 'Kabhi nai',
'underline-default' => 'Browser ke default',
+# Font style option in Special:Preferences
+'editfont-style' => 'Badlao waala jagah ke font:',
+'editfont-default' => 'Browser ke sadharan setting',
+'editfont-monospace' => 'Font jiske sab akcchar ke ekke chaurrai hae',
+'editfont-sansserif' => 'Sans-serif font',
+'editfont-serif' => 'Serif font',
+
# Dates
'sunday' => 'Etwaar',
'monday' => 'Sombaar',
@@ -124,7 +133,7 @@ $messages = array(
'category-media-header' => 'Vibhag "$1" me media',
'category-empty' => "''Ii vibhag me koi panna yah media nai hai.''",
'hidden-categories' => '{{PLURAL:$1|Lukawal vibhag|Lukawal vibhag}}',
-'hidden-category-category' => 'Lukawal vibhag', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Lukawal vibhag',
'category-subcat-count' => '{{PLURAL:$2|Ii vibhag me khali etna chhota vibhag hai.|Ii vibhag me etna {{PLURAL:$1|chhota vibhag|$1 chhota vibhag}}, kul jorr $2 me se.}}',
'category-subcat-count-limited' => 'Ii vibhag me etna {{PLURAL:$1|chhota vibhag|$1 chhota vibhag}} hai.',
'category-article-count' => '{{PLURAL:$2|Ii vibhag me khali etna panna hai.|Kul jorr $2 me se etna {{PLURAL:$1|panna|$1 panna}} ii vibhag me hai.}}',
@@ -132,6 +141,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ii vibhag me khali etna file hai.|Kul jorr $2 me se ii vibhag me etna {{PLURAL:$1|file hai|$1 files hai}}.}}',
'category-file-count-limited' => 'Ii vibhag me etna {{PLURAL:$1|file hai|$1 files hai}}.',
'listingcontinuesabbrev' => 'aur',
+'index-category' => 'Indexed panna',
+'noindex-category' => 'Bina index karaa gais panna',
'mainpagetext' => "'''MediaWiki ke safalta se install kar dewa gais hai.'''",
'mainpagedocfooter' => "Wiki software ke use kare ke aur jaankari ke khatir [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] ke dekho.
@@ -141,10 +152,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Baare me',
-'article' => 'Content waala panna',
-'newwindow' => '(Nawaa window me khule hai)',
-'cancel' => 'Nai karo',
+'about' => 'Baare me',
+'article' => 'Content waala panna',
+'newwindow' => '(Nawaa window me khule hai)',
+'cancel' => 'Nai karo',
+'moredotdotdot' => 'Aur...',
+'mypage' => 'Hamaar panna',
+'mytalk' => 'Hamaar bichar',
+'anontalk' => 'Ii IP khatir bichar',
+'navigation' => 'Navigation',
+'and' => '&#32;aur',
+
+# Cologne Blue skin
'qbfind' => 'Khojo',
'qbbrowse' => 'Browse karo',
'qbedit' => 'Badlo',
@@ -152,15 +171,35 @@ $messages = array(
'qbpageinfo' => 'Vishay',
'qbmyoptions' => 'Hamar panna',
'qbspecialpages' => 'Khaas panna',
-'moredotdotdot' => 'Aur...',
-'mypage' => 'Hamaar panna',
-'mytalk' => 'Hamaar bichar',
-'anontalk' => 'Ii IP khatir bichar',
-'navigation' => 'Navigation',
-'and' => '&#32;aur',
-
-# Metadata in edit box
-'metadata_help' => 'Jaankari ke baare me jaankaari:',
+'faq' => 'Sab time puchhe waala sawal',
+'faqpage' => 'Project:Sab time puchhe waala sawal',
+
+# Vector skin
+'vector-action-addsection' => 'Topic jorro',
+'vector-action-delete' => 'Mitao',
+'vector-action-move' => 'Naam badlo',
+'vector-action-protect' => 'Bachao',
+'vector-action-undelete' => 'Pahile jaise karo',
+'vector-action-unprotect' => 'Nai bachao',
+'vector-namespace-category' => 'Vibhag',
+'vector-namespace-help' => 'Madat waala panna',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Panna',
+'vector-namespace-media' => 'Chapa aur awaaj waala panna',
+'vector-namespace-mediawiki' => 'Sandes',
+'vector-namespace-project' => 'Project panna',
+'vector-namespace-special' => 'Khaas panna',
+'vector-namespace-talk' => 'Salah',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'Sadasya ke panna',
+'vector-view-create' => 'Banao',
+'vector-view-edit' => 'Badlo',
+'vector-view-history' => 'Itihaas dekho',
+'vector-view-view' => 'Parrho',
+'vector-view-viewsource' => 'Source dekho',
+'actions' => 'Karam',
+'namespaces' => 'Naam',
+'variants' => 'Antar',
'errorpagetitle' => 'Galti',
'returnto' => '$1 pe lauto.',
@@ -210,18 +249,22 @@ $messages = array(
'otherlanguages' => 'Duusra bhasa me',
'redirectedfrom' => '($1 se bheja gais)',
'redirectpagesub' => 'Panna ke redirect karo',
-'lastmodifiedat' => 'Ii panna ke $1, ke $2 pichhla time badla gais rahaa.', # $1 date, $2 time
+'lastmodifiedat' => 'Ii panna ke $1, ke $2 pichhla time badla gais rahaa.',
'viewcount' => 'Ii panna ke {{PLURAL:$1|ek dafe|$1 dafe}} dekha gais hai.',
'protectedpage' => 'Bachawal panna',
'jumpto' => 'Hian jaao:',
'jumptonavigation' => 'navigation',
'jumptosearch' => 'khojo',
+'view-pool-error' => 'Maaf karna, abhi sab server busy hae.
+Bahut dher sadasya ii panna ke dekhe maange hae.
+Meharbani kar ke, thora deri sabur kar ke ii panna ke fir se kholo.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} ke baare me',
'aboutpage' => 'Project:Ke baare me',
'copyright' => 'Ii panna me likha gae chij ke aap $1 ke niche kaam me lae sakta hai.',
-'copyrightpagename' => '{{SITENAME}} copyright',
'copyrightpage' => '{{ns:project}}:Chhaape ke adhikaar',
'currentevents' => 'Abhi ke ghatna',
'currentevents-url' => 'Project:Abhi ke ghatna',
@@ -229,8 +272,6 @@ $messages = array(
'disclaimerpage' => 'Project:Saadharan jimmewari nai lo',
'edithelp' => 'Badlao pe madat',
'edithelppage' => 'Help:Badle me',
-'faq' => 'Sab time puchhe waala sawal',
-'faqpage' => 'Project:Sab time puchhe waala sawal',
'helppage' => 'Help:Madat',
'mainpage' => 'Pahila Panna',
'mainpage-description' => 'Pahila Panna',
@@ -310,10 +351,6 @@ Pahile waala database ke khoj ke kosis rahaa:
"$1"
"$2" function ke bhitar se.
Database ke galti sandes rahaa "$3: $4"',
-'noconnect' => 'Maaf karna! Wiki me abhi technical samasya hai, aur abhi database server ke contact nai kare sake hai.<br />
-$1',
-'nodb' => 'Database $1 ke nai chhate saka hai',
-'cachederror' => 'Niche waala panna, maange waala panna ke cached nakal hai aur sait purana hoi.',
'laggedslavemode' => 'Chetawni: Panna me nawaa badlao sait nai hoi.',
'readonly' => 'Database band hai',
'enterlockreason' => 'Band kare ke kaaran likho, aur ii bhi likho ki kab khola jaai.',
@@ -331,6 +368,8 @@ Iske, URL ke likh ke, koi administrator ke report karo.',
'readonly_lag' => 'Database apne se band hoi gais hai jab tak ki duusra database, khaas database ke sanghe kaam nai kare lage.',
'internalerror' => 'Bhitri galti',
'internalerror_info' => 'Bhitri galti: $1',
+'fileappenderrorread' => 'Jorre ke time $1 ke nai parrhe sakaa hae.',
+'fileappenderror' => '"$1" ke "$2" se nai jorre sakaa hae.',
'filecopyerror' => 'File "$1" ke "$2" pe copy nai kare sakaa.',
'filerenameerror' => 'File "$1" ke naam badal ke "$2" nai kare sakaa.',
'filedeleteerror' => 'File "$1" ke nai mitae sakaa.',
@@ -340,9 +379,7 @@ Iske, URL ke likh ke, koi administrator ke report karo.',
'unexpected' => 'Aasa karaa gais jaankari nai hai: "$1"="$2".',
'formerror' => 'Galti: form ke submit nai kare sakaa',
'badarticleerror' => 'Ii chij ke ii panna me nai karaa jae sake hai.',
-'cannotdelete' => 'Jon panna nai to file ke aap mitae kare mangtaa rahaa uske nai mitae sakaa.
-
-Sait aur koi iske mitae de hoi.',
+'cannotdelete' => '{{PLURAL:$1|Template|Template}} ke ii jhalak me kaam me lawa gais hae:',
'badtitle' => 'Kharaab title',
'badtitletext' => 'Jon panna aap mangta hai uske page title invalid, galat, nai to an incorrectly linked inter-language or inter-wiki title. Isme sait ek yah jaada character hoi jon ki title me nai kaam me lawa jae sake hai.',
'perfcached' => 'Niche likha data ke cache karaa gais hai aur sait purana hoi.',
@@ -377,7 +414,6 @@ Iske kaaran hai ''$2''.",
'virus-unknownscanner' => 'jaana waala antivirus nai hai:',
# Login and logout pages
-'logouttitle' => 'Sadasya logout',
'logouttext' => "'''Aap abhi logged out hai.'''
Aap bina naam ke {{SITENAME}} ke kaam me lae sakta hai, nai to aap wahi sadasya ke naam se nai to duusra sadasya ke naam se [[Special:UserLogin|log in kare sakta hai]].
@@ -385,7 +421,6 @@ Yaad rakhna ki kuch panna wahi rakam se dekhai jaise ki aap log in bhaya hai, ja
'welcomecreation' => '== Swagat, $1! ==
Aap ke account banae dewa gais hai.
Aapan [[Special:Preferences|{{SITENAME}} pasand]] ke badle nai bhulna.',
-'loginpagetitle' => 'Sadasya login',
'yourname' => 'Username:',
'yourpassword' => 'Password:',
'yourpasswordagain' => 'Password fir se type karo:',
@@ -396,6 +431,7 @@ Aapan [[Special:Preferences|{{SITENAME}} pasand]] ke badle nai bhulna.',
'nav-login-createaccount' => 'Log in karo/ nawaa account banao',
'loginprompt' => 'Login kare ke khatir {{SITENAME}} cookies ke laabu kare ke chaahi.',
'userlogin' => 'Log in karo/ nawaa account banao',
+'userloginnocreate' => 'Log in karo',
'logout' => 'Log out',
'userlogout' => 'Sadasya logout',
'notloggedin' => 'Aap logged in nai hai',
@@ -408,28 +444,8 @@ Aapan [[Special:Preferences|{{SITENAME}} pasand]] ke badle nai bhulna.',
'badretype' => 'Jon duuno password aap likha hai uu ek rakam nai hai.',
'userexists' => 'Ii username aur koi ke hai.
Duusra username choose karo.',
-'youremail' => 'E-mail:',
-'username' => 'Sadasya ke naam:',
-'uid' => 'Sadasya ke pahchaan:',
-'prefs-memberingroups' => '{{PLURAL:$1|group|groups}} ke member:',
-'yourrealname' => 'Asli naam:',
-'yourlanguage' => 'Bhasa:',
-'yourvariant' => 'Variant:',
-'yournick' => 'Signature:',
-'badsig' => 'Invalid raw signature; HTML tags ke check karo.',
-'badsiglength' => 'Signature bahut lambaa hai.
-Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
-'yourgender' => 'Admi ki aurat:',
-'gender-unknown' => 'Khaas ruup nai dewa gais hae',
-'gender-male' => 'Admi',
-'gender-female' => 'Aurat',
-'prefs-help-gender' => 'Optional: used for gender-correct addressing by the software. This information will be public.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Asli naam ke jaruri nai hai lekin agar jo aap aapan naam diya hai to iske aap ke kaam ke pahachane khatir kaam me lawa jai.',
'loginerror' => 'Login me galti hai',
-'prefs-help-email' => 'E-mail address ke jaruri nai hai, lekin isse nawaa password aap ke lage bheja jaae skae hai agar aap aapan password bhul gaya tab.
-Aap duusra log ke aap se aapan user_talk panna se aap ke contact kar le de sakta hai agar aap aapan aslii naam nai batae mangtaa hai tab.',
-'prefs-help-email-required' => 'E-mail address ke jaruri hai.',
+'createaccounterror' => 'Account ke nai banae sakaa hae: $1',
'nocookiesnew' => 'Aap ke account banae dewa gais hai lekin aap loggen in nai hai.
{{SITENAME}} me sadasya ke login khatir cookies hai.
Aap cookies ke disabled karaa hai.
@@ -446,9 +462,11 @@ Aapan spelling check karo nai to [[Special:UserLogin/signup|nawaa account banao]
'nosuchusershort' => '"<nowiki>$1</nowiki>" naam ke koi sadasya nai hai.
Aapan spelling check karo.',
'nouserspecified' => 'Aap ke aapan username de ke parri.',
+'login-userblocked' => 'Ii sadasya ke rok dewa gais hae. Login kare ke ijajat nai hae.',
'wrongpassword' => 'Galat password likha gais hai. Fir se kosis karo.',
'wrongpasswordempty' => 'Koi password nai likha gais hai. Fir se kosis karo.',
-'passwordtooshort' => 'Aap ke password kharaab nai to bahut chhota hai. Password me kamti se kamti {{PLURAL:$1|1 character|$1 characters}} hoe ke chahi aur username se different rahe ke chahi.',
+'passwordtooshort' => 'Password me kamti se kamti {{PLURAL:$1|1 character|$1 characters}} hoe ke chahi.',
+'password-name-match' => 'Aap ke password ke aap ke username se different rahe ke chaahi.',
'mailmypassword' => 'Nawaa password ke E-mail karo',
'passwordremindertitle' => '{{SITENAME}} ke khatir nawaa temporary password',
'passwordremindertext' => 'Koi (hoe sake hai aap, IP address $1 se)
@@ -459,6 +477,7 @@ Aap ke temporary password {{PLURAL:$5|ek din|$5 din}} me expire hoi.
Agar jo aur koi ii request karis hai, nai to aap aapan password yaad kar liya hai aur nai badle mangta hai, tab ii sandes ke ignore kar do aur aapan purana password use karte raho.',
'noemail' => 'Sadasya "$1" ke koi e-mail address recorded nai hai.',
+'noemailcreate' => 'Aap ke thiik e-mail address de ke parrii',
'passwordsent' => 'Ek nawaa password ke "$1" ke registered e-mail pe bheja gais hai. Meharbaani kar ke aap password mile ke baad login karna.',
'blocked-mailpassword' => 'Aap ke IP address ke block kar dewa gais hai, aur iske kaaran aap ke password recovery function kaam me lae ke ijajat nai hai,',
'eauthentsent' => 'Ek confirmation e-mail aap ke dewa gae e-mail address be bhej dewa gais hai. Aur mail ii account pe bheje se pahile e-mail me likha instructions ke follow karo, ii confirm kare ke khatir ki account aap ke hai.',
@@ -480,9 +499,11 @@ Meharbaani kar ke achchha address ke enter karo nai to uu field ke khali kar do.
'createaccount-text' => 'Koi aap ke e-mail katir {{SITENAME}} ($4) named "$2" me account banais hai jiske password hai "$3".
Aap ke chaahi ki aap login kar ke password ke badal do.
Agar ii account galti se banaa hai tab ii sandes ke ignore kar do.',
+'usernamehasherror' => 'Sadasya ke naam me hash akchhar ke nai kaam me lawa jaae sake hae',
'login-throttled' => 'Aap bahut jaada dafe ii account ke password ke enter kare ke kosis karaa hai.
Thora deri baad fir se kosis karna.',
'loginlanguagelabel' => 'Bhasa: $1',
+'suspicious-userlogout' => 'Aap ke log out kare ke maang ke na kar dewa gais hae kaahe ki ii janaawe hae ki ii maang ke ek tuuta browser nai to caching proxy bhejis hae.',
# Password reset dialog
'resetpass' => 'Password ke badlo',
@@ -495,18 +516,13 @@ Login khatam kare khatir, aap ke nawaa password set kare ke parri hian:',
'retypenew' => 'Password fir se type karo:',
'resetpass_submit' => 'Password ke set kar ke login karo',
'resetpass_success' => 'Aap ke password ke safalta se badal dewa gais hai! Aap ke ab login karaa jaae hai...',
-'resetpass_bad_temporary' => 'Temporary password achchha nai hai.
-Aap sait pahile password ke badal diya hoi nai to nawaa temporary password ke maang karaa hoga.',
'resetpass_forbidden' => 'Password nai badlaa jaae sake hai',
'resetpass-no-info' => 'Ii panna ke sidha access kare ke khatir aap ke logged in rahe ke parri.',
'resetpass-submit-loggedin' => 'Password ke badlo',
+'resetpass-submit-cancel' => 'Nai karo',
'resetpass-wrong-oldpass' => 'Temporary nai to abhi ke password valid nai hai.
Sait aap password ke safalta se badal sia hoga nai to nawaa temporary password ke maang karaa hoga.',
'resetpass-temp-password' => 'Kachcha password:',
-'resetpass-log' => 'Password resets ke log',
-'resetpass-logtext' => 'Niche uu sadasya ke log hai jiske password ke koi administrator reset kar diis hai.',
-'resetpass-logentry' => '$1 ke password ke badal dia hai',
-'resetpass-comment' => 'Password ke badle ke kaaran:',
# Edit page toolbar
'bold_sample' => 'Motaa text',
@@ -581,7 +597,6 @@ Meharbani kar ke chahe ek nai to duno ke aapan sawaal me rakho.",
'blockededitsource' => "Aap ke '''$1 ke badlao''' ke akchhar niche likha hai:",
'whitelistedittitle' => 'Badle khatir login kare ke jaruri hai',
'whitelistedittext' => 'Aap ke panna badle khatir $1 kare ke parri.',
-'confirmedittitle' => 'Badle khatir E-mail confirmation ke jaruri hai',
'confirmedittext' => 'Panna ke badle se pahile aap ke aapan e-mail ke confirm kare ke parri.
Meharbani kar ke aap aapan e-mail ke aapan [[Special:Preferences|user preferences]] se validate karna.',
'nosuchsectiontitle' => 'Aisan koi bhaag nai hai',
@@ -607,10 +622,17 @@ Agar aap ek anonymous user hai aur ii sochta hai ki bekar baat aap ke baare me k
Aap saktaa hai [[Special:Search/{{PAGENAME}}|ii panna ke title khoje]] duusra panna me,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
nai to [{{fullurl:{{FULLPAGENAME}}|action=edit}} ii panna ke badlo]</span>.',
+'noarticletext-nopermission' => 'Abhi ii panna pe koi chij likha nai hae.
+Aap sakta hae [[Special:Search/{{PAGENAME}}|ii panna ke title ke khoje]] duusra panna me,
+nai to <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>.',
'userpage-userdoesnotexist' => 'User account "$1" abi registered nai hai.
Check karo ki Ii panna ke aap banae/badle mangta hai.',
+'userpage-userdoesnotexist-view' => 'User account "$1" abhi register nai karaa gais hae',
+'blocked-notice-logextract' => 'Ii sadasya ke abhi rok dewa gais hae.
+Sab se nawaa block log entry, aap ke reference ke khatir, niche dewa gais hae:',
'clearyourcache' => "'''Note - Save kare ke baad, aap ke sait browser ke cache ke bypass kare ke parri badlao ke dekhe khatir.''' '''Mozilla / Firefox / Safari:''' hold ''Shift'' while clicking ''Reload,'' or press either ''Ctrl-F5'' or ''Ctrl-R'' (''Command-R'' on a Macintosh); '''Konqueror: '''click ''Reload'' or press ''F5;'' '''Opera:''' clear the cache in ''Tools → Preferences;'' '''Internet Explorer:''' hold ''Ctrl'' while clicking ''Refresh,'' or press ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tip:''' Save kare se pahile 'Show preview' button ke use kar ke aapan nawaa CSS/JS ke test karo.",
+'usercssyoucanpreview' => "'''Salah:''' Bachae se pahile \"{{int:showpreview}}\" button ke kaam me laae ke aapan nawaa CSS ke test karo.",
+'userjsyoucanpreview' => "'''Salah:''' Bachae se pahile \"{{int:showpreview}}\" button ke kaam me laae ke aapan nawaa JavaScript ke test karo.",
'usercsspreview' => "'''Yaad rakhna ki aap khali aapan CSS ke jhalak dekhta hai.
Iske abhi save nai karaa gais hai!'''",
'userjspreview' => "'''Yaad rakhna ki aap khali aapan JavaScript ke testing/previewing karta hai, iske abhi save nai karaa gais hai!'''",
@@ -663,13 +685,16 @@ Iske save nai karaa jae sake hai.'''",
Aap sait aapan badlao ke ek text file me cut-n-paste kar ke baad me use kare khatir save kae le sakta hai.'''
Administrator jon ki iske lock karis hai ii kaaran diis hai: $1",
-'protectedpagewarning' => "'''WARNING: Ii panna ke band kar dewa gais hai jisse ke khali uu sadasya jiske sysop privileges hai iske badle sake hai.'''",
-'semiprotectedpagewarning' => "'''Suchna:''' Ii panna ke band kar dewa gais hai jisse ki khali registered sadasya iske badle sake hai.",
+'protectedpagewarning' => "'''CHETAUNI: Ii panna ke band kar dewa gais hai jisse ke khaali uu sadasya jiske sysop adhikaar hai iske badle sake hai.'''
+Niche sab se nawaa suchi aap ke dekhe ke khatir dewa gais hae:",
+'semiprotectedpagewarning' => "'''Suchna:''' Ii panna ke band kar dewa gais hai jisse ki khali registered sadasya iske badle sake hai.
+Niche sab se nawaa suchi ke aap ke dekhe ke khatir dewa gais hae:",
'cascadeprotectedwarning' => "'''Chetawani:''' Ii panna ke band kar dewa gais jiske kaaran khali uu sadasya jiske lage sysop privileges hai iske badle sake hai, kahe ki iske niche likha gais cascade-protected {{PLURAL:$1|panna|panna}} me rakkha gais hai:",
-'titleprotectedwarning' => "'''CHETAUNI: Ii panna ke lock kar dewa gais hai jisse ki [[Special:ListGroupRights|specific rights]] ke jarie iske badla jaae sake hai.'''",
-'templatesused' => 'Ii panna me kaam me lawa gae templates:',
-'templatesusedpreview' => 'Ii jhalak me jon template kaam me lawa gais hai',
-'templatesusedsection' => 'Ii section me kaam me lawa gais templates:',
+'titleprotectedwarning' => "'''CHETAUNI: Ii panna ke band dewa gais hai jisse ki [[Special:ListGroupRights|specific rights]] ke jarie iske badla jaae sake hai.'''
+Aap ke jaankari ke khatir sab se nawaa suchi niche dewa gais hae:",
+'templatesused' => '{{PLURAL:$1|Template|Templates}} ke ii panna me kaam me lawa gais hae:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Templates}} ii jhalak me kaam me lawa gais hae:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Templates}} ii hissa me kaam me lawa gais hae:',
'template-protected' => '(surakchhit)',
'template-semiprotected' => '(aadha-surakchhit)',
'hiddencategories' => 'Ii panna {{PLURAL:$1|1 hidden category|$1 hidden categories}} ke member hai:',
@@ -678,16 +703,18 @@ Administrator jon ki iske lock karis hai ii kaaran diis hai: $1",
'nocreatetext' => '{{SITENAME}} me nawaa panna banae ke rukawat hai.
Aap pichhe jaae ke, ek panna jon hai, ke sampadan kare sakta hai, nai to [[Special:UserLogin|log in or create an account]].',
'nocreate-loggedin' => 'Aap ke nawaa panna banaae ke ijaajat nai hai.',
+'sectioneditnotsupported-title' => 'Aap khaali vibhag ke badle nai sakta hae',
+'sectioneditnotsupported-text' => 'Ii panna pe aap khaali vibhag ke badle nai sakta hae',
'permissionserrors' => 'Permissions Errors',
'permissionserrorstext' => 'Aap ke uu chij kare ke ijajat nai hai, ii {{PLURAL:$1|kaaran|kaaran}} khatir:',
'permissionserrorstext-withaction' => 'Aap ke lage $2 kare khatir ijajat nai hai, ii {{PLURAL:$1|kaaran|kaaran}} se:',
-'recreate-deleted-warn' => "'''Chetawani: Jon panna ke pahile hatae dewa gae rahaa ke aap fir se banata hai.'''
+'recreate-moveddeleted-warn' => "'''Chetawani: Jon panna ke pahile hatae dewa gais rahaa ke aap fir se banata hai.'''
-Aap soco ki ii pann ake sampadan aap ke karte rahe ke chaahi ki nai.
-Aap ke aaram khatir hatae waala suchi hian pe dewa jae hai:",
-'deleted-notice' => 'Ii panna ke mitae dewa gais hai.
-Ii panna ke mitae waala log aap ke dekhe khatir niche dewa gais hai.',
-'deletelog-fulllog' => 'Puura log ke dekho.',
+Aap socho ki ii panna ke sampadan aap ke karte rahe ke chaahi ki nai.
+Aap ke aaram khatir hatae waala suchi hian pe dewa jaawe hai:",
+'moveddeleted-notice' => 'Ii panna ke mitae dewa gais hai.
+Ii panna ke mitae waala aur hatae waala log aap ke dekhe khatir niche dewa gais hai.',
+'log-fulllog' => 'Puura log dekho',
'edit-hook-aborted' => 'Badalo ke hook rok diis hai.
Ii koi kaaran nai diis hai.',
'edit-gone-missing' => 'Panna ke badle nai sakaa.
@@ -710,6 +737,7 @@ Ii sab arguments ke omit kar dewa gais hai.',
'post-expand-template-argument-category' => 'Panna jisme omitted template arguments hai',
'parser-template-loop-warning' => 'Template loop ke pawa gais hai: [[$1]]',
'parser-template-recursion-depth-warning' => 'Template recursion depth limit se jaada hoe gais hae ($1)',
+'language-converter-depth-warning' => 'Bhasa anuwaad ke gahiraai ijajat se jaada hoe gais hae ($1)',
# "Undo" feature
'undo-success' => 'Ii badlao ke pahile jaise karaa jaae sake hai.
@@ -730,7 +758,7 @@ Iske kaaran, jon ki $3 diis hai, ''$2'' hai",
'currentrev' => 'Abhi ke sansodhan',
'currentrev-asof' => 'Abhi ke badlao ii tarik tak $1',
'revisionasof' => '$1 ke badlao',
-'revision-info' => '$2 ke badlao $1 tak', # Additionally available: $3: revision id
+'revision-info' => '$2 ke badlao $1 tak',
'previousrevision' => '← Purana badlao',
'nextrevision' => 'Nawaa badlao→',
'currentrevisionlink' => 'Abhi ke badlao',
@@ -743,7 +771,7 @@ Iske kaaran, jon ki $3 diis hai, ''$2'' hai",
Legend: (abhi) = abhi ke version se farka,
(pahile waala) = pahile waala version se farka, M = chhota sampadan.',
'history-fieldset-title' => 'Itihaas me khojo',
-'deletedrev' => '[matae dewa gais hai]',
+'history-show-deleted' => 'Khaali mitawa gais',
'histfirst' => 'Sab se puraana',
'histlast' => 'Sab se nawaa',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -752,69 +780,112 @@ Legend: (abhi) = abhi ke version se farka,
# Revision feed
'history-feed-title' => 'Badlao ke itihass',
'history-feed-description' => 'Ii panaa ke wiki me badlao ke itihaas',
-'history-feed-item-nocomment' => '$1 pe $2', # user at time
+'history-feed-item-nocomment' => '$1 pe $2',
'history-feed-empty' => 'Aap jon panna mangta hai uu abhi tak banaa nai hai.
Saait iske wiki me se mitae dewa gae hoi, nai to iske naam badal dewa gae hoi.
Try karo [[Special:Search|wiki me khije ke]] aur nawaa panna ke.',
# Revision deletion
-'rev-deleted-comment' => '(comment ke hatae dewa gais hai)',
-'rev-deleted-user' => '(username ke hatae dewa gais hai)',
-'rev-deleted-event' => '(log action ke hatae dewa gais hai)',
-'rev-deleted-text-permission' => 'Panna ke ii badlao ke mitae dewa gais hai.
-Iske baare me aur jaankari [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log] me saait hoi.',
-'rev-deleted-text-view' => 'Panna ke ii badlao ke mitae dewa gais hai.
-Aap ek administrator hoe ke kaaran iske dekhe sakta hai; iske baare me aur jaankari [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log] me saait hoi.',
-'rev-deleted-no-diff' => 'Aap ii diff ke nai dekhe saktaa hai kahe ki ek badlao mitae dewa gais hai.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log] me sait kuch aur jaankari hoi.',
-'rev-deleted-unhide-diff' => "Ii diff me se ek badlao ke '''mitae''' dewa gais hai.
-Aur jaankari saait [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log] me hoi.
-Ek administrator hoe ke kaaran aap fir bhi [$1 view this diff] agar aap aage barrhe mangtaa hai tab.",
-'rev-delundel' => 'dekhao/lukao',
-'revisiondelete' => 'Badlao ke mitao/nai mitao',
-'revdelete-nooldid-title' => 'Target revision jon ki valid nai hai',
-'revdelete-nooldid-text' => 'Aap chaahe target revision(s) ke specify nai karaa hai, ii function ke perform kare ke khatir, specified revision haiye nai, nai to aap abhi ke badlao ke lukae ke kosis karta hai.',
-'revdelete-nologtype-title' => 'Koi log type ke nai dewa gais hai',
-'revdelete-nologtype-text' => 'Aap ii action ke kare khatir koi log type ke specify nai karaa hai.',
-'revdelete-toomanytargets-title' => 'Bahut jaada target hai',
-'revdelete-toomanytargets-text' => 'Aap bahut jaada target ke specify karaa hai ii chij kare ke khatir.',
-'revdelete-nologid-title' => 'Log entry valid nai hai',
-'revdelete-nologid-text' => 'Chaahe aap target log event ke specify nai karaa hai ii chij kare ke khatir nai to batawa gais entry nai hai.',
-'revdelete-selected' => "'''{{PLURAL:$2|Selected badlao|Selected badlao}} of [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Chuna gais log event|Chuna gais log events}}:'''",
-'revdelete-text' => "'''Mitawa gae badlao aur ghatna panna ke itihaas me dekhai, lekin content ke kuch part janta nai access kare saki.'''
-Duusra admins {{SITENAME}} me, lukawa gais content ke khole sake aur iske mitae bhi sake hai interface use kar ke, jab tak ki aur rukawat nai lagawa jaae.
-Meharbaani kar ke ii confirm karo ki aap ii chij kare mangta hai, aap iske natija samajhta hai, aur aap iske [[{{MediaWiki:Policy-url}}|the policy]] ke niche karta hai.",
-'revdelete-suppress-text' => "Suppression ke '''khaali''' ii chij ke khatir kaam me lawa jaae sake hai:
+'rev-deleted-comment' => '(comment ke hatae dewa gais hai)',
+'rev-deleted-user' => '(username ke hatae dewa gais hai)',
+'rev-deleted-event' => '(log action ke hatae dewa gais hai)',
+'rev-deleted-user-contribs' => '[Sadasya ke naam nai to IP address ke hatae dewa gais hae- yogdaan se badlao ke lukae dewa gais hae]',
+'rev-deleted-text-permission' => "Panna ke ii badlao ke '''mitae''' dewa gais hae.
+Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me saait hoi.",
+'rev-deleted-text-unhide' => "Ii panna ke badlao ke '''mitae''' dewa gais hai.
+Iske baare me aur jaankari saait [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me hoi.
+Ek administrator rahe se aap fir bhi [$1 ii badlao ke dekhe sakta hae] agar aap aage barrhe mangtaa hae tab.",
+'rev-suppressed-text-unhide' => "Ii panna ke badlao ke '''dabae''' dewa gais hai.
+Iske baare me aur jaankari saait [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] me hoi.
+Ek administrator rahe se aap fir bhi [$1 ii badlao ke dekhe sakta hae] agar aap aage barrhe mangtaa hae tab.",
+'rev-deleted-text-view' => "Panna ke ii badlao ke '''mitae''' dewa gais hae.
+Aap ek administrator hoe ke kaaran iske dekhe sakta hai; iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me saait hoi.",
+'rev-suppressed-text-view' => "Ii panna ke badlao ke '''dabae''' dewa gais hai.
+Ek administrator rahe ke kaaran aap iske dekhe saktaa hae; Iske baare me aur jaankari saait [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] me hoi.",
+'rev-deleted-no-diff' => "Aap ii diff ke nai dekhe saktaa hai kahe ki ek badlao '''mitae''' dewa gais hae.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me sait kuch aur jaankari hoi.",
+'rev-suppressed-no-diff' => "Aap ii antar ke nahi dekhe sakta hae, kahe ki ek badlao ke '''mitae''' dewa gais hae.",
+'rev-deleted-unhide-diff' => "Ii diff me se ek badlao ke '''mitae''' dewa gais hae.
+Aur jaankari saait [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me hoi.
+Ek administrator hoe ke kaaran aap fir bhi [$1 ii diff ke dekhe sakta hae] agar aap aage barrhe mangtaa hai tab.",
+'rev-suppressed-unhide-diff' => 'Ii antar me ke ek balao ke nai dekhawa jaae hae.
+Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] me milii.
+Ek administrator hoe ke kaaran aap [$1 view this diff] ke dekehe saktaa hae',
+'rev-deleted-diff-view' => "Ii antar ke ek badlao ke '''mitae''' dwa gais hae.
+Ek administrator hoe ke kaaran aap ii antar ke dekhe sakta hae; saait [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me saait aur jaankari hoe.",
+'rev-suppressed-diff-view' => "Ii antar ke ek badlao ke '''lukae''' dewa gais hae.",
+'rev-delundel' => 'dekhao/lukao',
+'rev-showdeleted' => 'dekhao',
+'revisiondelete' => 'Badlao ke mitao/nai mitao',
+'revdelete-nooldid-title' => 'Target revision jon ki valid nai hai',
+'revdelete-nooldid-text' => 'Aap chaahe target revision(s) ke specify nai karaa hai, ii function ke perform kare ke khatir, specified revision haiye nai, nai to aap abhi ke badlao ke lukae ke kosis karta hai.',
+'revdelete-nologtype-title' => 'Koi log type ke nai dewa gais hai',
+'revdelete-nologtype-text' => 'Aap ii action ke kare khatir koi log type ke specify nai karaa hai.',
+'revdelete-nologid-title' => 'Log entry valid nai hai',
+'revdelete-nologid-text' => 'Chaahe aap target log event ke specify nai karaa hai ii chij kare ke khatir nai to batawa gais entry nai hai.',
+'revdelete-no-file' => 'Chuna gais file abhi nai banawa gais hai.',
+'revdelete-show-file-confirm' => 'Ka aap sure hai ki aap file ke mitawa gais revision ke dekhe mangtaa hai "<nowiki>$1</nowiki>" $2 se $3 talak?',
+'revdelete-show-file-submit' => 'Haan',
+'revdelete-selected' => "'''{{PLURAL:$2|Selected badlao|Selected badlao}} of [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Chuna gais log event|Chuna gais log events}}:'''",
+'revdelete-text' => "'''Mitawa gae badlao aur ghatna panna ke itihaas me dekhai, lekin content ke kuch part janta nai access kare saki.'''
+Duusra admins {{SITENAME}} me, lukawa gais content ke khole sake aur iske mitae bhi sake hai interface use kar ke, jab tak ki aur rukawat nai lagawa jaae.",
+'revdelete-confirm' => 'Meharbani kar ke aap ii confirm karo ki aap ii kare mangta hae, aap iske asar ke samajhta hae, aur iske aap [[{{MediaWiki:Policy-url}}|the policy]] ke anusar karta hae.',
+'revdelete-suppress-text' => "Suppression ke '''khaali''' ii chij ke khatir kaam me lawa jaae sake hai:
* Aapan baare me jaankari thik nai hai
*: ''ghar ke address aur telephone number, social security number, etc.''",
-'revdelete-legend' => 'Dekhe waala rukawat set karo',
-'revdelete-hide-text' => 'Badlawa gais text ke lukao',
-'revdelete-hide-name' => 'Kaam aur manjil ke lukao',
-'revdelete-hide-comment' => 'Badlao ke baare me comment ke lukao',
-'revdelete-hide-user' => "Editor's username/IP ke lukao",
-'revdelete-hide-restricted' => 'Ii rukawat ke administrator aur duusra log se lukao.',
-'revdelete-suppress' => 'Sysops ke saathe saathe aur sab se data ke suppress karo',
-'revdelete-hide-image' => 'File content ke lukao',
-'revdelete-unsuppress' => 'Pahile jaise karaa gais badlao me se rukawat hatao',
-'revdelete-log' => 'Kaaran:',
-'revdelete-submit' => 'Chuna gae badlao ke apply karo',
-'revdelete-logentry' => '[[$1]] ke badlao ke visibility ke badal dewa gais hai',
-'logdelete-logentry' => '[[$1]] keevent visibility ke badal dewa gais hae',
-'revdelete-success' => "'''Badlao dekhe khatir taiyaar hai.'''",
-'logdelete-success' => "'''Log dekhe khatir taiyaar hai.'''",
-'revdel-restore' => 'Badlo ki ii dekhe me kaise lage hae',
-'pagehist' => 'Panna ke itihaas',
-'deletedhist' => 'Mitawa gae itihass',
-'revdelete-content' => 'suchi',
-'revdelete-summary' => 'summary ke badlo',
-'revdelete-uname' => 'Sadasya ke naam',
-'revdelete-restricted' => 'sysops pe llabu restrictions',
-'revdelete-unrestricted' => 'sysops se hatawa gae rukawat',
-'revdelete-hid' => '$1 lukaya',
-'revdelete-unhid' => '$1 ke fir se dekhaya',
-'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|badlao|badlao}}',
-'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|ghatna|ghatna}}',
+'revdelete-legend' => 'Dekhe waala rukawat set karo',
+'revdelete-hide-text' => 'Badlawa gais text ke lukao',
+'revdelete-hide-image' => 'File content ke lukao',
+'revdelete-hide-name' => 'Kaam aur manjil ke lukao',
+'revdelete-hide-comment' => 'Badlao ke baare me comment ke lukao',
+'revdelete-hide-user' => "Editor's username/IP ke lukao",
+'revdelete-hide-restricted' => 'Ii rukawat ke administrator aur duusra log se lukao.',
+'revdelete-radio-same' => '(badlo nai)',
+'revdelete-radio-set' => 'Haan',
+'revdelete-radio-unset' => 'Nai',
+'revdelete-suppress' => 'Sysops ke saathe saathe aur sab se data ke suppress karo',
+'revdelete-unsuppress' => 'Pahile jaise karaa gais badlao me se rukawat hatao',
+'revdelete-log' => 'Kaaran:',
+'revdelete-submit' => 'Chuna gae badlao ke apply karo {{PLURAL:$1|revision|revisions}}',
+'revdelete-logentry' => '[[$1]] ke badlao ke visibility ke badal dewa gais hai',
+'logdelete-logentry' => '[[$1]] keevent visibility ke badal dewa gais hae',
+'revdelete-success' => "'''Badlao dekhe khatir taiyaar hai.'''",
+'revdelete-failure' => "'''Badlao ke nai dekhawa jaae sake hae:'''
+$1",
+'logdelete-success' => "'''Log dekhe khatir taiyaar hai.'''",
+'logdelete-failure' => "'''Log ke nai dekhawa jaae sake hae:'''
+$1",
+'revdel-restore' => 'Badlo ki ii dekhe me kaise lage hae',
+'pagehist' => 'Panna ke itihaas',
+'deletedhist' => 'Mitawa gae itihass',
+'revdelete-content' => 'suchi',
+'revdelete-summary' => 'summary ke badlo',
+'revdelete-uname' => 'Sadasya ke naam',
+'revdelete-restricted' => 'sysops pe llabu restrictions',
+'revdelete-unrestricted' => 'sysops se hatawa gae rukawat',
+'revdelete-hid' => '$1 lukaya',
+'revdelete-unhid' => '$1 ke fir se dekhaya',
+'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|badlao|badlao}}',
+'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|ghatna|ghatna}}',
+'revdelete-hide-current' => 'Item dated $2, $1 ke lukae me garrbarr hoe gais hai: ii abhi ke version hai.
+Iske lukawa nai jaawe sake hai.',
+'revdelete-show-no-access' => '$2, $1 ke tarik ke item me error hai: ii item ke "restricted" mark karaa gais hai.
+Aap ke ispe adhikar nai hai.',
+'revdelete-modify-no-access' => '$2, $1 ke tarik ke item me error hai: ii item ke "restricted" mark karaa gais hai. Aap ke ispe adhikar nai hai.',
+'revdelete-modify-missing' => 'Item ID $1 ke badle me error hoe gais hai: ii database me nai hai!',
+'revdelete-no-change' => "'''Chetauni:''' $2, $1 ke tarik ke item ke pahile se visibility settings maanga gais rahaa.",
+'revdelete-concurrent-change' => 'Item jiske date $2, $1 hai ke badle me error hoe gais hai: iske status ke saait aur koi badal diis hia jab aap iske badel ke kosis karta rahaa.
+Meharbani ka ke logs ke check karo.',
+'revdelete-only-restricted' => 'Jon chij aap $2, $1 ke lukae mangta rahaa me galti hoe gais hae: aap administrator log se koi chij lukae nai saktaa hae bina duursa dekhe waala option ke chune.',
+'revdelete-reason-dropdown' => '*Mitae ke jaada kar ke kaaran
+** Bina chhape ke adikar se
+** Aapan baare me fajuul jankari
+** Ninda kare waala jankari',
+'revdelete-otherreason' => 'Duusra/aur kaaran:',
+'revdelete-reasonotherlist' => 'Duusra kaaran',
+'revdelete-edit-reasonlist' => 'Delete kare ke kaaran ke badlo',
+'revdelete-offender' => 'Badle waala sadasya:',
# Suppression log
'suppressionlog' => 'Dabae waala log',
@@ -853,68 +924,13 @@ Ii baat ke dhyan me rakhna ki navigation jorr ke kaam me laae se ii column reset
'mergelogpagetext' => 'Niche ke suchi me nawaa itihass ke jorr ke suchi hai',
# Diffs
-'history-title' => '"$1" ke sansodhan ke itihaas',
-'difference' => '(Badlao me farak)',
-'lineno' => 'Rekha $1:',
-'compareselectedversions' => 'Chuna gae version ke compare karo',
-'visualcomparison' => 'Aankhi se antar dekho',
-'wikicodecomparison' => 'Wikitext ke antar dekho',
-'editundo' => 'badlao ke pahile jaise kar do',
-'diff-multi' => '({{PLURAL:$1|Ek biich waala badlao|$1 biich waala badlao}} nai dekhawa jae hai.)',
-'diff-movedto' => 'badal ke $1 dewa gais hai',
-'diff-styleadded' => '$1 style ke jorr dewa gais hai',
-'diff-added' => '$1 jorr dewa gais hai',
-'diff-changedto' => 'Badal ke $1 kar dewa gais hai',
-'diff-movedoutof' => '$1 se nikal diya',
-'diff-styleremoved' => '$1 style ke hatae dewa gais hai',
-'diff-removed' => '$1 ke hatae dewa gais hai',
-'diff-changedfrom' => '$1 se badla gais hai',
-'diff-src' => 'suruu',
-'diff-withdestination' => '$1 manjil ke saathe',
-'diff-with' => '&#32;$1 $2 ke saathe',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;aur $1 $2',
-'diff-width' => 'chaurrai',
-'diff-height' => 'lambai',
-'diff-p' => "ek '''paragraph'''",
-'diff-blockquote' => "ek '''quote'''",
-'diff-h1' => "ek '''heading (level 1)'''",
-'diff-h2' => "ek '''heading (level 2)'''",
-'diff-h3' => "ek '''heading (level 3)'''",
-'diff-h4' => "ek '''heading (level 4)'''",
-'diff-h5' => "ek '''heading (level 5)'''",
-'diff-pre' => "ek '''preformatted block'''",
-'diff-div' => "ek '''division'''",
-'diff-ul' => "ek '''unordered list'''",
-'diff-ol' => "ek '''ordered list'''",
-'diff-li' => "ek '''list item'''",
-'diff-table' => "ek '''table'''",
-'diff-tbody' => "ek '''table ke content'''",
-'diff-tr' => "ek '''row'''",
-'diff-td' => "ek '''cell'''",
-'diff-th' => "ek '''header'''",
-'diff-br' => "ek '''break'''",
-'diff-hr' => "ek '''horizontal rule'''",
-'diff-code' => "ek '''computer code block'''",
-'diff-dl' => "ek '''definition list'''",
-'diff-dt' => "ek '''definition term'''",
-'diff-dd' => "ek '''definition'''",
-'diff-input' => "ek '''input'''",
-'diff-form' => "ek '''form'''",
-'diff-img' => "ek '''chapa'''",
-'diff-span' => "ek '''span'''",
-'diff-a' => "ek '''jorr'''",
-'diff-i' => "'''tirchha akchhar'''",
-'diff-b' => "'''mota akchhar'''",
-'diff-strong' => "'''smota akchhar'''",
-'diff-em' => "'''tirchha akchhar'''",
-'diff-font' => "'''akchhar ke naam'''",
-'diff-big' => "'''barra'''",
-'diff-del' => "'''mitae dewa gais hai'''",
-'diff-tt' => "'''Pakka chaurrai'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''strikethrough'''",
+'history-title' => '"$1" ke sansodhan ke itihaas',
+'difference' => '(Badlao me farak)',
+'lineno' => 'Rekha $1:',
+'compareselectedversions' => 'Chuna gae version ke compare karo',
+'showhideselectedversions' => 'Chuna gae versions ke dekhao/lukao',
+'editundo' => 'badlao ke pahile jaise kar do',
+'diff-multi' => '({{PLURAL:$1|Ek biich waala badlao|$1 biich waala badlao}} nai dekhawa jae hai.)',
# Search results
'searchresults' => 'Khoj ke natija',
@@ -922,28 +938,25 @@ Ii baat ke dhyan me rakhna ki navigation jorr ke kaam me laae se ii column reset
'searchresulttext' => '{{SITENAME}} me khoje khatir aur jaankari khatir, dekho [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Aap khoja rahaa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sab panna jon ki "$1" se suruu hoe hai]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sab panna jon ki "$1" se jurre hai]])',
'searchsubtitleinvalid' => "Aap '''$1''' ke khoja hai",
-'noexactmatch' => "'''\"\$1\" naam ke koi panna nai hai.''' Aap saktaa hai [[:\$1|ii panna ke banae]].",
-'noexactmatch-nocreate' => "'''\"\$1\" naam ke koi panna nai hai.'''",
'toomanymatches' => 'Bahut dher match mila, duusra query se kosis karo',
'titlematches' => 'Panna ke jon naam mile hai',
'notitlematches' => 'Koi bhi panna ke naam nai mile hae',
'textmatches' => 'Panna ke jon text mile hai',
'notextmatches' => 'Koi panna see text nai mile hae',
-'prevn' => 'pahile waala $1',
-'nextn' => 'aage waala $1',
+'prevn' => 'pahile waala {{PLURAL:$1|$1}}',
+'nextn' => 'aage waala {{PLURAL:$1|$1}}',
'prevn-title' => 'Pahile waala $1 {{PLURAL:$1|natija|natija}}',
'nextn-title' => 'Aage waala $1 {{PLURAL:$1|result|results}}',
'shown-title' => 'Ek panna me $1 {{PLURAL:$1|result|results}} dekhao',
-'viewprevnext' => 'Dekho ($1 ) ($2) ($3)',
+'viewprevnext' => 'Dekho ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Khoje ke option',
'searchmenu-exists' => "'''Ii wiki me \"[[\$1]]\" naam ke panna hai'''",
'searchmenu-new' => "'''Ii wiki me \"[[:\$1]]\" panna ke banao!'''",
'searchhelp-url' => 'Help:Madat',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ii prefix ke panna ke browse karo]]',
-'searchprofile-articles' => 'Vishay suchi ke panna',
-'searchprofile-articles-and-proj' => 'Vishay suchi aur project panna',
-'searchprofile-project' => 'Project panna',
-'searchprofile-images' => 'Files',
+'searchprofile-articles' => 'Content panna',
+'searchprofile-project' => 'Madat aur Project panna',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Sab chij',
'searchprofile-advanced' => 'Anbhawi',
'searchprofile-articles-tooltip' => '$1 me khojo',
@@ -951,8 +964,6 @@ Ii baat ke dhyan me rakhna ki navigation jorr ke kaam me laae se ii column reset
'searchprofile-images-tooltip' => 'File ke khojo',
'searchprofile-everything-tooltip' => 'Sab content me khojo (baat waala panna bhi)',
'searchprofile-advanced-tooltip' => 'Custom namespaces me khojo',
-'prefs-search-nsdefault' => 'Defaults use kar ke khojo:',
-'prefs-search-nscustom' => 'ustom namespaces me khojo:',
'search-result-size' => '$1 ({{PLURAL:$2|1 sabd|$2 sabd}})',
'search-result-score' => 'Len den: $1%',
'search-redirect' => '(redirect $1)',
@@ -965,11 +976,12 @@ Ii baat ke dhyan me rakhna ki navigation jorr ke kaam me laae se ii column reset
'search-mwsuggest-disabled' => 'koi bichar nai hai',
'search-relatedarticle' => 'sambandh rakkhe hai',
'mwsuggest-disable' => 'AJAX sughao ke beasar karo',
+'searcheverything-enable' => 'Sab namespaces me khojo',
'searchrelated' => 'sambhand rakkhe hai',
'searchall' => 'sab',
'showingresults' => "Niche dekhae hai {{PLURAL:$1|'''1''' result|'''$1''' results}} #'''$2''' se suruu hoe ke.",
'showingresultsnum' => "Niche dekhawa jae hai {{PLURAL:$3|'''1''' result|'''$3''' results}}, #'''$2''' se suruu hoe ke.",
-'showingresultstotal' => "Niche dekhawa jae hai {{PLURAL:$4|result '''$1''' of '''$3'''|results '''$1 - $2''' of '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Natija '''$1''' of '''$3'''|Natija '''$1 - $2''' of '''$3'''}} '''$4''' khatir",
'nonefound' => "'''Yaad rakhna''': apne se khaali thora namespaces me khoja jaae hai.
Aapan query ke ''all:'' se suruu kar ke visay suchi me khojo (including talk pages, templates, etc), nai to jon namespace aap mangtaa hai usse query suruu karo.",
'search-nonefound' => 'Ii sawaal ke koi jawab nai hae.',
@@ -978,115 +990,152 @@ Aapan query ke ''all:'' se suruu kar ke visay suchi me khojo (including talk pag
'powersearch-ns' => 'Namespaces me khojo:',
'powersearch-redir' => 'Redirects ke suchi do',
'powersearch-field' => 'Iske khojo',
+'powersearch-togglelabel' => 'Check karo:',
+'powersearch-toggleall' => 'Sab',
+'powersearch-togglenone' => 'Koi bhi nai',
'search-external' => 'Bahaari khoj',
'searchdisabled' => '{{SITENAME}} me abhi khoje ke anumati nai hai.
Aap tab tak Google se khoje sakta hai.
Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Koi nai',
+'qbsettings-fixedleft' => 'Left me fixed hai',
+'qbsettings-fixedright' => 'Right me fixed hai',
+'qbsettings-floatingleft' => 'Baaen or baho',
+'qbsettings-floatingright' => 'Daaen or baho',
+
# Preferences page
-'preferences' => 'Pasand',
-'mypreferences' => 'Hamaar pasand',
-'prefs-edits' => 'Badlao ke number:',
-'prefsnologin' => 'Aap abhi logged in nai hai',
-'prefsnologintext' => 'Aaap ke <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logged in]</span> chaahi rahe ke user preferences ke badle ke khatir.',
-'prefsreset' => 'Preferences ke godaam se reset kar dewa gais hai.',
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Koi nai',
-'qbsettings-fixedleft' => 'Left me fixed hai',
-'qbsettings-fixedright' => 'Right me fixed hai',
-'qbsettings-floatingleft' => 'Baaen or baho',
-'qbsettings-floatingright' => 'Daaen or baho',
-'changepassword' => 'Pasword ke badlo',
-'skin' => 'Skin',
-'skin-preview' => 'Jhalak',
-'math' => 'Math',
-'dateformat' => 'Date ke format',
-'datedefault' => 'Koi pasand nai',
-'datetime' => 'Tarik aur time',
-'math_failure' => 'Parse nai kare sakaa',
-'math_unknown_error' => 'galti ke nai samajhta',
-'math_unknown_function' => 'nai samajhta ki ii kon chij khatir hai',
-'math_lexing_error' => 'lexing me galti',
-'math_syntax_error' => 'syntax me galti',
-'math_image_error' => 'PNG conversion fail hoe gais;
-latex, dvips aur gs ke correct installation ke check kar ke convert convert karo',
-'math_bad_tmpdir' => 'Math temporary directory nai banae sakta hai',
-'math_bad_output' => 'Math output directory me likhe nai to banae nai sakta hai',
-'math_notexvc' => 'Texvc executable nai hai;
-Configure kare khatir meharbani kar ke math/README ke dekho.',
-'prefs-personal' => 'Sadasya ke profile',
-'prefs-rc' => 'Nawaa badlao',
-'prefs-watchlist' => 'Dhyan suchi',
-'prefs-watchlist-days' => 'Dhyan suchi me ketna roj dekhawa jaae:',
-'prefs-watchlist-days-max' => '(jaada se jaada 7 din)',
-'prefs-watchlist-edits' => 'Barraa dhyan suchi me jaada se jaada ketna badlao dekhawa jaae:',
-'prefs-watchlist-edits-max' => '(jaada se jaada: 1000)',
-'prefs-misc' => 'Futkar',
-'prefs-resetpass' => 'Password badlo',
-'saveprefs' => 'Save karo',
-'resetprefs' => 'Binaa bachawa gias badlao ke mitao',
-'restoreprefs' => 'Sab default settings ke pahile jaise karo',
-'textboxsize' => 'Badaltaa hai',
-'prefs-edit-boxsize' => 'Edit window ke size.',
-'rows' => 'Line:',
-'columns' => 'Column:',
-'searchresultshead' => 'Khojo',
-'resultsperpage' => 'Panna ke ketna dafe dekha gais hai:',
-'contextlines' => 'Ek hit me ketnaa line hae:',
-'contextchars' => 'Ek line me ketnaa context hae:',
-'stub-threshold' => 'Threshold ke khatir <a href="#" class="stub">stub link</a> formatting (bytes):',
-'recentchangesdays' => 'Nawaa badlao me ketna roj dekhawa jaae:',
-'recentchangesdays-max' => '(sab se jaada $1 {{PLURAL:$1|din|din}})',
-'recentchangescount' => 'Nawaa badlao me ketna badlao ke dekhae ke chaahi, panna ke itihaas, aur log me, default se:',
-'savedprefs' => 'Aap ke pasand ke save kar lewa gais hai.',
-'timezonelegend' => 'Time ke zone:',
-'timezonetext' => '¹ Aap ke local time aur server time (UTC) me ketna farka hai.',
-'localtime' => 'Sthaniye samay:',
-'timezoneselect' => 'Time ke zone:',
-'timezoneuseserverdefault' => 'Server default ke use karo',
-'timezoneuseoffset' => 'Aur koi (offset ke specify karo)',
-'timezoneoffset' => 'Offset¹:',
-'servertime' => 'Server ke time:',
-'guesstimezone' => 'Browser se bharo',
-'timezoneregion-africa' => 'CSS ke aapan khatir badlo',
-'timezoneregion-america' => 'JS ke aapan khatir badlo',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctic',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlantic Ocean',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Indian Ocean',
-'timezoneregion-pacific' => 'Pacific Ocean',
-'allowemail' => 'Aur sadasya se e-mail enable karo',
-'prefs-searchoptions' => 'Khoje ke option',
-'prefs-namespaces' => 'Naam:',
-'defaultns' => 'Default se ii namespacesme khojo:',
-'default' => 'baaki',
-'files' => 'Files',
-'prefs-custom-css' => 'CSS ke aapan khatir badlo',
-'prefs-custom-js' => 'Ruchi ke anusar JS',
+'preferences' => 'Pasand',
+'mypreferences' => 'Hamaar pasand',
+'prefs-edits' => 'Badlao ke number:',
+'prefsnologin' => 'Aap abhi logged in nai hai',
+'prefsnologintext' => 'Aaap ke <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logged in]</span> chaahi rahe ke user preferences ke badle ke khatir.',
+'changepassword' => 'Pasword ke badlo',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Jhalak',
+'prefs-math' => 'Math',
+'datedefault' => 'Koi pasand nai',
+'prefs-datetime' => 'Tarik aur time',
+'prefs-personal' => 'Sadasya ke profile',
+'prefs-rc' => 'Nawaa badlao',
+'prefs-watchlist' => 'Dhyan suchi',
+'prefs-watchlist-days' => 'Dhyan suchi me ketna roj dekhawa jaae:',
+'prefs-watchlist-days-max' => '(jaada se jaada 7 din)',
+'prefs-watchlist-edits' => 'Barraa dhyan suchi me jaada se jaada ketna badlao dekhawa jaae:',
+'prefs-watchlist-edits-max' => '(jaada se jaada: 1000)',
+'prefs-watchlist-token' => 'Dhyan suchi ke nisani:',
+'prefs-misc' => 'Futkar',
+'prefs-resetpass' => 'Password badlo',
+'prefs-email' => 'E-mail ke option',
+'prefs-rendering' => 'Dekhe me kaise lage hai',
+'saveprefs' => 'Save karo',
+'resetprefs' => 'Binaa bachawa gias badlao ke mitao',
+'restoreprefs' => 'Sab default settings ke pahile jaise karo',
+'prefs-editing' => 'Badaltaa hai',
+'prefs-edit-boxsize' => 'Edit window ke size.',
+'rows' => 'Line:',
+'columns' => 'Column:',
+'searchresultshead' => 'Khojo',
+'resultsperpage' => 'Panna ke ketna dafe dekha gais hai:',
+'contextlines' => 'Ek hit me ketnaa line hae:',
+'contextchars' => 'Ek line me ketnaa context hae:',
+'stub-threshold' => 'Threshold ke khatir <a href="#" class="stub">stub link</a> formatting (bytes):',
+'recentchangesdays' => 'Nawaa badlao me ketna roj dekhawa jaae:',
+'recentchangesdays-max' => '(sab se jaada $1 {{PLURAL:$1|din|din}})',
+'recentchangescount' => 'Default se ketnaa badlao ke dekhae ke chaahi:',
+'prefs-help-recentchangescount' => 'Isme hai haali ke badlao, panna ke itihaas aur loga.',
+'prefs-help-watchlist-token' => 'Ii jaankari me gupt sabd bhare se aap ke dhyan suchi ke khatir ek RSS feed ban jaai.
+Koi bhi jan, jon ki ii gupt sabd ke jaanat hoi, aap ke dhyan suchi ke parre saki, tab aap achchha se gupt sabd ke sochna.
+Hian pe ek, apne se banaa sabd hae, jiske aap kaam me laae saktaa hae: $1',
+'savedprefs' => 'Aap ke pasand ke save kar lewa gais hai.',
+'timezonelegend' => 'Time ke zone:',
+'localtime' => 'Sthaniye samay:',
+'timezoneuseserverdefault' => 'Server default ke use karo',
+'timezoneuseoffset' => 'Aur koi (offset ke specify karo)',
+'timezoneoffset' => 'Offset¹:',
+'servertime' => 'Server ke time:',
+'guesstimezone' => 'Browser se bharo',
+'timezoneregion-africa' => 'CSS ke aapan khatir badlo',
+'timezoneregion-america' => 'JS ke aapan khatir badlo',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctic',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlantic Ocean',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Indian Ocean',
+'timezoneregion-pacific' => 'Pacific Ocean',
+'allowemail' => 'Aur sadasya se e-mail enable karo',
+'prefs-searchoptions' => 'Khoje ke option',
+'prefs-namespaces' => 'Naam:',
+'defaultns' => 'Default se ii namespaces me khojo:',
+'default' => 'baaki',
+'prefs-files' => 'File ke naam',
+'prefs-custom-css' => 'CSS ke aapan khatir badlo',
+'prefs-custom-js' => 'Ruchi ke anusar JS',
+'prefs-reset-intro' => 'Aap ii panna ke kaam me laae ke site defaults ke aapan preferences ke reset kare sakta hai.
+Iske pahile jaise nai karaa jaawe sake hai.',
+'prefs-emailconfirm-label' => 'E-mail ke confirm karaa jaawe hai:',
+'prefs-textboxsize' => 'editing window ke size',
+'youremail' => 'E-mail:',
+'username' => 'Sadasya ke naam:',
+'uid' => 'Sadasya ke pahchaan:',
+'prefs-memberingroups' => '{{PLURAL:$1|group|groups}} ke member:',
+'prefs-registration' => 'Registration kare ke time:',
+'yourrealname' => 'Asli naam:',
+'yourlanguage' => 'Bhasa:',
+'yourvariant' => 'Variant:',
+'yournick' => 'Chinh:',
+'prefs-help-signature' => 'Baat waala panna me aap ke bichar ke "<nowiki>~~~~</nowiki>" se sign kare ke chaahi jiske signature aur timestamp me badal dewa jaai.',
+'badsig' => 'Invalid raw signature; HTML tags ke check karo.',
+'badsiglength' => 'Signature bahut lambaa hai.
+Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
+'yourgender' => 'Admi ki aurat:',
+'gender-unknown' => 'Khaas ruup nai dewa gais hae',
+'gender-male' => 'Admi',
+'gender-female' => 'Aurat',
+'prefs-help-gender' => 'Optional: used for gender-correct addressing by the software. This information will be public.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Asli naam ke jaruri nai hai lekin agar jo aap aapan naam diya hai to iske aap ke kaam ke pahachane khatir kaam me lawa jai.',
+'prefs-help-email' => 'E-mail address ke jaruri nai hai, lekin isse nawaa password aap ke lage bheja jaae skae hai agar aap aapan password bhul gaya tab.
+Aap duusra log ke aap se aapan user_talk panna se aap ke contact kar le de sakta hai agar aap aapan aslii naam nai batae mangtaa hai tab.',
+'prefs-help-email-required' => 'E-mail address ke jaruri hai.',
+'prefs-info' => 'Basic jaankari',
+'prefs-i18n' => 'Sab des ke khatir',
+'prefs-signature' => 'Chinh',
+'prefs-dateformat' => 'Tarik ke format',
+'prefs-timeoffset' => 'Time ke offset',
+'prefs-advancedediting' => 'Uchchaa pasand',
+'prefs-advancedrc' => 'Uchchaa pasand',
+'prefs-advancedrendering' => 'Uchchaa pasand',
+'prefs-advancedsearchoptions' => 'Uchchaa pasand',
+'prefs-advancedwatchlist' => 'Uchchaa pasand',
+'prefs-display' => 'Dekhae waala option',
+'prefs-diffs' => 'Farka',
# User rights
-'userrights' => 'Sadasya ke adhikaar ke chalao', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Sadasya ke group ke manage karo',
-'userrights-user-editname' => 'Ek Username ke enter karo:',
-'editusergroup' => 'User groups ke badlo',
-'editinguser' => "'''[[User:$1|$1]]''' ke user rights badaltaa hai ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'User groupske badlo',
-'saveusergroups' => 'User groups ke save karo',
-'userrights-groupsmember' => 'Iske member hai:',
-'userrights-groups-help' => 'Aap jon group me ii sadasya hai ke badle sakta hai:
+'userrights' => 'Sadasya ke adhikaar ke chalao',
+'userrights-lookup-user' => 'Sadasya ke group ke manage karo',
+'userrights-user-editname' => 'Ek Username ke enter karo:',
+'editusergroup' => 'User groups ke badlo',
+'editinguser' => "'''[[User:$1|$1]]''' ke user rights badaltaa hai ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'User groupske badlo',
+'saveusergroups' => 'User groups ke save karo',
+'userrights-groupsmember' => 'Iske member hai:',
+'userrights-groupsmember-auto' => 'Hian ke bhi member hae:',
+'userrights-groups-help' => 'Aap jon group me ii sadasya hai ke badle sakta hai:
* Ek checked box ke matlab hai ki sadasya ii group me hai.
* Ek unchecked box ke matlab hai ki sadasya ii group me nai hai.
* Ek * ke matlab hai ki aap group ke jorre ke baad hatae nai sakta hai, nai to hatae ke baad jorre nai sakta hai.',
-'userrights-reason' => 'Kaaran:',
-'userrights-no-interwiki' => 'Aap ke duusra wiki me user rights ke badle ke adhikaar nai hai.',
-'userrights-nodatabase' => 'Database $1 abhi hai nai, nai to local nai hai.',
-'userrights-nologin' => 'Sadasya ke user rights de ke khatir, ap ke chaahi ki aap [[Special:UserLogin|log in]] karo ek administrator ke account se.',
-'userrights-notallowed' => 'Aap ke account ke user rights de ke adhikar nai hai.',
-'userrights-changeable-col' => 'Groups jiske aap badle sakta hai',
-'userrights-unchangeable-col' => 'Groups jiske aap badle nai sakta hai',
+'userrights-reason' => 'Kaaran:',
+'userrights-no-interwiki' => 'Aap ke duusra wiki me user rights ke badle ke adhikaar nai hai.',
+'userrights-nodatabase' => 'Database $1 abhi hai nai, nai to local nai hai.',
+'userrights-nologin' => 'Sadasya ke user rights de ke khatir, ap ke chaahi ki aap [[Special:UserLogin|log in]] karo ek administrator ke account se.',
+'userrights-notallowed' => 'Aap ke account ke user rights de ke adhikar nai hai.',
+'userrights-changeable-col' => 'Groups jiske aap badle sakta hai',
+'userrights-unchangeable-col' => 'Groups jiske aap badle nai sakta hai',
# Groups
'group' => 'Jhund:',
@@ -1139,6 +1188,7 @@ Configure kare khatir meharbani kar ke math/README ke dekho.',
'right-bigdelete' => 'Barraa itihaas waala panna ke mitao',
'right-deleterevision' => 'Panna ke khaas badlao ke mitao nai to bachao',
'right-deletedhistory' => 'Mitawa gais itihass ke entry ke binaa saathe waala text ke dekho',
+'right-deletedtext' => 'Mitawa gais text aur mitawa gais badlao ke biich waala badlao ke dekho',
'right-browsearchive' => 'Mitawa gais panna ke khojo',
'right-undelete' => 'Ek panna ke undelete karo',
'right-suppressrevision' => 'Review and restore revisions hidden from Sysops',
@@ -1152,6 +1202,8 @@ Configure kare khatir meharbani kar ke math/README ke dekho.',
'right-editprotected' => 'Bachawa gais panna ke badlo (without cascading protection)',
'right-editinterface' => 'User interface ke badlo',
'right-editusercssjs' => 'Duusra sadsya ke CSS aur JS files ke badlo',
+'right-editusercss' => 'Duusra sadsya ke CSS files ke badlo',
+'right-edituserjs' => 'Duusra sadsya ke JS files ke badlo',
'right-rollback' => 'Jaldi se ek khaas panna ke pichhla sadasya ke badlao ke ulta kar do',
'right-markbotedits' => 'Rolled-back edits ke bot edits mark karo',
'right-noratelimit' => 'Rrate limits se koi asar nai hai',
@@ -1168,6 +1220,8 @@ Configure kare khatir meharbani kar ke math/README ke dekho.',
'right-siteadmin' => 'Database ke band karo aur kholo',
'right-reset-passwords' => 'Duusra sadasya ke password ke badlo',
'right-override-export-depth' => 'Panna aur jurra panna, 5 ke gahirrai talak, ke export karo',
+'right-versiondetail' => 'Program ke baare me aur jaankari dekhao',
+'right-sendemail' => 'Duusra sadasya ke lage e-mail bhejo',
# User rights log
'rightslog' => 'Sadasya adhikar suchi',
@@ -1217,6 +1271,15 @@ Configure kare khatir meharbani kar ke math/README ke dekho.',
'recentchanges-legend' => 'Nawaa badlao options',
'recentchangestext' => 'Wiki me ii panna ke nawaa badlao pe dhyan rakho.',
'recentchanges-feed-description' => 'Abhi haali me bhae ii wiki ke feed me ke track karo.',
+'recentchanges-label-legend' => 'Matlab: $1',
+'recentchanges-legend-newpage' => '$1 - nawaa panna',
+'recentchanges-label-newpage' => 'Ii badlao ek nawaa panna banais hae',
+'recentchanges-legend-minor' => '$1 - chhota badlao',
+'recentchanges-label-minor' => 'Ii ek chhota badlao hae',
+'recentchanges-legend-bot' => '$1 - bot se badlao',
+'recentchanges-label-bot' => 'Ii badlao ke ek bot karis hae',
+'recentchanges-legend-unpatrolled' => '$1 - bina pahraa dewa gais badlao',
+'recentchanges-label-unpatrolled' => 'Ii badlao pe abhi pahraa nai dewa gais hae.',
'rcnote' => "Niche {{PLURAL:$1|hai '''1''' badlao|aakhri hai '''$1''' badlao}} pahile {{PLURAL:$2|din|'''$2''' din}}, $5, $4 talak.",
'rcnotefrom' => "Niche '''$2''' se badlao hai ('''$1''' tak )",
'rclistfrom' => '$1 se suruu kar ke nawaa badlao dekhao',
@@ -1243,6 +1306,8 @@ Configure kare khatir meharbani kar ke math/README ke dekho.',
# Recent changes linked
'recentchangeslinked' => 'Panna ke jurraa badlao',
+'recentchangeslinked-feed' => 'Panna ke jurraa badlao',
+'recentchangeslinked-toolbox' => 'Panna ke jurraa badlao',
'recentchangeslinked-title' => '"$1" ke badlao',
'recentchangeslinked-noresult' => 'Linked pages me ii time ke bhitar koi changes nai bhae.',
'recentchangeslinked-summary' => "Ii panna pahile waala badlao jon panna hian par jurra hae ke such de hae (nai to visesh vibhag ke sadasya).
@@ -1253,8 +1318,8 @@ Panna jon [[Special:Watchlist|aap ke dhyan suchi]] me hae '''mota''' kara gais
# Upload
'upload' => 'File ke upload karo',
'uploadbtn' => 'File upload karo',
-'reupload' => 'Fir se upload karo',
'reuploaddesc' => 'Upload ke cancel kar ke upload form pe lauto',
+'upload-tryagain' => 'Badla gais file ke description bhejo',
'uploadnologin' => 'Aap abhi loged in nai hai',
'uploadnologintext' => 'Aap ke [[Special:UserLogin|logged in]] kare ke chaahi, file upload kare ke khatir.',
'upload_directory_missing' => 'Upload directory ($1) nai hai aur webserver iske nai banae sakis hai.',
@@ -1287,6 +1352,7 @@ Visual overview ke khatir [[Special:NewFiles|nawaa file ke gallery]] ke dekho.',
'illegalfilename' => 'Filename "$1" me uu akchhar hai jiske panna ke title me allowed nai hai.
Maharbaani kar ke file ke naam ke badal ke fir se upload kare ke kosis karo.',
'badfilename' => 'File ke naam badak ke "$1" kar dewa gais hai.',
+'filetype-mime-mismatch' => 'File ke extension, jon rakam ke MIME hae, se nai mile hae.',
'filetype-badmime' => 'MIME rakam "$1" ke upload kare ke ijajat nai hai.',
'filetype-bad-ie-mime' => 'Ii file ke upload nai kare sakta hai kahe ki Internet Explorer iske "$1" ke rakam dekhi, jon ki allowed nai hai aur khatarnaat rakam ke file jaana jaae hai.',
'filetype-unwanted-type' => "'''\".\$1\"''' rakam ke file ke hian nai maaga jaae hai.
@@ -1310,7 +1376,6 @@ Description ke dekhae ke khatir, aap ke iske manually badle ke parri.
* Uploading file ke naam: '''<tt>[[:$1]]</tt>'''
* Abhi ke file ke naam: '''<tt>[[:$2]]</tt>'''
Meharbani kar ke duusra naam chuno.",
-'fileexists-thumb' => "<center>'''Abhi ke file'''</center>",
'fileexists-thumbnail-yes' => "Ii janawe hai ki ii file ek chhota chapa hai ''(thumbnail)''. [[$1|thumb]]
Meharbani kar ke file ke check karo '''<tt>[[:$1]]</tt>'''.
Agar jo check karaa gais file wahi chhapa ke original size hai tab ek aur thumbnail ke upload kare ke jaruri nai hai.",
@@ -1325,6 +1390,7 @@ Agar jo aap fir bhi aapan file upload kare manta hai tab pichhe jaae ke nawaa na
'file-deleted-duplicate' => 'Yahii rakam ke ek aur file ([[$1]]) ke pahile delete karaa gais hai. Aap ke file ke deletion history ke check kare ke chaahi, upload kare se pahile.',
'successfulupload' => 'Upload safal bhais',
'uploadwarning' => 'Upload ke baare me chetauni',
+'uploadwarning-text' => 'Meharbani kar ke file ke baaare me aur jankari ke niche badal ke aur fir se kosis karo.',
'savefile' => 'File ke save karo',
'uploadedimage' => '"[[$1]]" ke upload kar dewa gae',
'overwroteimage' => '"[[$1]]" ke nawaa version ke upload karaa gais hai',
@@ -1332,12 +1398,14 @@ Agar jo aap fir bhi aapan file upload kare manta hai tab pichhe jaae ke nawaa na
'uploaddisabledtext' => 'File uploads ke disable kar dewa gais hai.',
'php-uploaddisabledtext' => 'File uploads ke PHP me disable kar dewa gais hai. Meharbani kar ke file_uploads setting ke check karo.',
'uploadscripted' => 'Ii file me HTML nai to script code hai jiske web browser erroneously interpret kare sake hai.',
-'uploadcorrupt' => 'Ii file chaahe ke corrupt hai nai to isme wrong extension hai.
-Meharbani kar ke file ke check kar ke fir se upload karo.',
'uploadvirus' => 'Ii file me virus hai! Details: $1',
+'upload-source' => 'Suruu waala file',
'sourcefilename' => 'Suruu waala file ke naam:',
+'sourceurl' => 'Suruu waala URL',
'destfilename' => 'Manjil waala file ke naam:',
'upload-maxfilesize' => 'jaada se jaada file size: $1',
+'upload-description' => 'File ke baare me jaankari',
+'upload-options' => 'Upload kare ke version',
'watchthisupload' => 'Ii panna pe dhyan rakhho',
'filewasdeleted' => 'Ii naam ke file ke pahile upload kar ke baad me delete karaa gais hai.
Aap ke chaahi ki aap $1 check kar lo fir se upload kare se pahile.',
@@ -1347,15 +1415,46 @@ Aap ke subidha khatir deletion log hian pe hai:",
'filename-bad-prefix' => "Jon file aap upload kartaa hai uske naam '''\"\$1\"''' se suruu hoe hai, jon ki non-descriptive naam hai jiske jaada kar ke digital camera automatically assign kare hai.
Meharbaani kar ke aur jaada descriptive filename chose karo.",
-'upload-proto-error' => 'Protocol right nai hai',
-'upload-proto-error-text' => 'Duur ke upload maange hai URLs jon ki suruu hoe hai <code>http://</code> nai to <code>ftp://</code>.',
-'upload-file-error' => 'Bhitri error',
-'upload-file-error-text' => 'Server pe temporary file banae ke time ek bhitri error hoe gais.
+'upload-proto-error' => 'Protocol right nai hai',
+'upload-proto-error-text' => 'Duur ke upload maange hai URLs jon ki suruu hoe hai <code>http://</code> nai to <code>ftp://</code>.',
+'upload-file-error' => 'Bhitri error',
+'upload-file-error-text' => 'Server pe temporary file banae ke time ek bhitri error hoe gais.
[[Special:ListUsers/sysop|administrator]] ke contact karo.',
-'upload-misc-error' => 'Upload kare ke time koi garrbarr hoe gais hae',
-'upload-misc-error-text' => 'Upload kare ke time ek unknown error hoe gais hai.
+'upload-misc-error' => 'Upload kare ke time koi garrbarr hoe gais hae',
+'upload-misc-error-text' => 'Upload kare ke time ek unknown error hoe gais hai.
Meharbani kar ke verify karo ki URL valid aur accessible hai aur fir se kosis karo.
Agar jo problem fir nai khatam hoe tab [[Special:ListUsers/sysop|administrator]] ke contact karo.',
+'upload-too-many-redirects' => 'Ii URL me bahut jaada redirects hae.',
+'upload-unknown-size' => 'Nai pataa ki ketnaa barraa hae',
+'upload-http-error' => 'Ek HTTP galti hoe gais hae: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'ijajat nai hae',
+'img-auth-nopathinfo' => 'PATH_INFO nai hae
+Aap ke server ke ii jankari de khatir set up nai karaa gais hae
+Saait ii CGI-based hoi aur img_auth ke nai support karat hoi.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization ke dekho.',
+'img-auth-notindir' => 'Maanga gais path configured upload directory me me nai hae.',
+'img-auth-badtitle' => '"$1" se kanuni title ke nai banae sakaa hae.',
+'img-auth-nologinnWL' => 'Aap logged in nai hae aur "$1" whitelist me nai hae.',
+'img-auth-nofile' => 'File "$1" nai hae.',
+'img-auth-isdir' => 'Aap directory "$1" me jaae mangtaa hae.
+Khaali file me jaawe ke ijajat hae',
+'img-auth-streaming' => '"$1" ke stream karaa jaawe hae.',
+'img-auth-public' => 'img_auth.php ke function private wiki se file nikale ke hae.
+Ii wiki ek public wiki hae.
+Puura surakchha ke khatir, img_auth.php ke band kar dewa gais hae.',
+'img-auth-noread' => 'Sadasya ke "$1" parrhe ke ijajat nai hae.',
+
+# HTTP errors
+'http-invalid-url' => 'URL kharaab hae: $1',
+'http-invalid-scheme' => 'URL, jisme "$1" scheme hae ke support nai karaa jaawe hae.',
+'http-request-error' => 'HTTP ke maang puura nai hoe sakaa, patanahi kon galti ke kaaran.',
+'http-read-error' => 'HTTP ke parrhe me galti hae',
+'http-timed-out' => 'HTTP ke khatir time nai hae.',
+'http-curl-error' => 'URL ke laawe me galti hoe gais hae: $1',
+'http-host-unreachable' => 'URL pahunche nai sakaa hae',
+'http-bad-status' => 'HTTP ke maange ke time kuch garrbarr hoe gais hae: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL pe pahunche nai paya hai',
@@ -1367,6 +1466,7 @@ Meharbani kar ke dekho ki ii site chale hai, thora deri tak wait kar ke fir se k
Saait aap ke kamti busy time kosis kare ke chaahi.',
'license' => 'Licence ke baare me:',
+'license-header' => 'Licence ke baare me',
'nolicense' => 'Koi bhi selct nai karaa gais hai',
'license-nopreview' => '(Preview abhi taiyaar nai hai)',
'upload_source_url' => ' (ek valid, publicly accessible URL)',
@@ -1387,6 +1487,7 @@ Column header me click kare se sorting badal jaai.',
'listfiles_count' => 'Ketna badlao rahaa',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'File ke itihaas',
'filehist-help' => 'File ke dekhe khatir, jaise uu time dekhe me lagat rahaa, date/time pe click karo.',
'filehist-deleteall' => 'sab ke mitao',
@@ -1401,6 +1502,7 @@ Column header me click kare se sorting badal jaai.',
'filehist-dimensions' => 'Lambai aur chaurai',
'filehist-filesize' => 'File ke size',
'filehist-comment' => 'Tiprrin',
+'filehist-missing' => 'File nai hai',
'imagelinks' => 'File ke jorr',
'linkstoimage' => 'Ii sab panna ii file {{PLURAL:$1|panna ke jorr|$1 panna ke jorr}} se link hoe hai:',
'linkstoimage-more' => '$1 se jaada {{PLURAL:$1|panna ke jorr|panna ke jorr}} ii file se hai.
@@ -1410,15 +1512,16 @@ Ek [[Special:WhatLinksHere/$2|Puura suchi]] available hai.',
'morelinkstoimage' => 'Dekho [[Special:WhatLinksHere/$1|more links]] ii file se.',
'redirectstofile' => 'Niche waala file ii file {{PLURAL:$1|file redirects|$1 files redirect}} se redirect hoe hai:',
'duplicatesoffile' => 'Niche ke suchi waala {{PLURAL:$1|file ke dui copy hai|$1 files ke dui copy hai}} ii file ke ([[Special:FileDuplicateSearch/$2|more details]]):',
-'sharedupload' => 'Ii file $1 se aais hai aur duusra project me bhi kaam lawa jaae sake hai.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Aur jaankari khatir $1 ke dekho.',
-'shareduploadwiki-desc' => 'Iske $1 pe description niche dekhawa gais hai.',
-'shareduploadwiki-linktext' => 'file description waala panna',
-'noimage' => 'Ii naam ke koi file nai hai, lekin aap sakta hai $1.',
-'noimage-linktext' => 'ek ke upload karo',
+'sharedupload' => 'Ii file $1 se aais hai aur duusra project me bhi kaam lawa jaae sake hai.',
+'sharedupload-desc-there' => 'Ii file $1 se aais hai aur duusra projects me bhi kaam me lawa jaae sake hai.
+Meharbaani kar ke aur jaankari kr khatir [$2 file description page] ke dekho.',
+'sharedupload-desc-here' => 'Ii file $1 se aais hai aur duusra projects me bhi kaam me lawa jaae sake hai.
+Iske baare me aur jaankari [$2 file description page] ke niche dekhawa jaae hai.',
+'filepage-nofile' => 'Ii naam ke koi file nai hai.',
+'filepage-nofile-link' => 'Ii naam ke koi file nai hai, lekin aap [$1 upload kare sakta hai].',
'uploadnewversion-linktext' => 'Ii file ke nawaa version ke upload karo',
-'shared-repo-from' => '$1 se', # $1 is the repository name
-'shared-repo' => 'ek shared repository', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 se',
+'shared-repo' => 'ek shared repository',
# File reversion
'filerevert' => '$1 ke pahile jaise karo',
@@ -1447,6 +1550,7 @@ Ek [[Special:WhatLinksHere/$2|Puura suchi]] available hai.',
** Copyright ke violation
** Dugnaa file',
'filedelete-edit-reasonlist' => 'Delete kare ke kaaran ke badlo',
+'filedelete-maintenance' => 'Files jiske ke thora din khatir, maintenance ke time, band kar dewa gais rahaa ke mitawa aur fir se pahile jaise karaa jaawe hae.',
# MIME search
'mimesearch' => 'MIME khojo',
@@ -1469,7 +1573,7 @@ Templates ke delete kare se pahile duusra links ke bhi check kare ke nai bhulna.
# Random page
'randompage' => 'Koi bhi panna',
-'randompage-nopages' => 'Namespace "$1" me koi panna nai hai.',
+'randompage-nopages' => 'Ii {{PLURAL:$2|namespace|namespaces}} me koi panna nai hae: $1',
# Random redirect
'randomredirect' => 'Koi bhi jagha redirect karo',
@@ -1481,6 +1585,7 @@ Templates ke delete kare se pahile duusra links ke bhi check kare ke nai bhulna.
'statistics-header-edits' => 'Statistics ke badlo',
'statistics-header-views' => 'Statistics ke dekho',
'statistics-header-users' => 'Sadasya ke statistics',
+'statistics-header-hooks' => 'Duusra statistics',
'statistics-articles' => 'Content panna',
'statistics-pages' => 'Panna',
'statistics-pages-desc' => 'Wiki me sab panna, including salah waala panna, redirects, etc.',
@@ -1510,8 +1615,8 @@ Sab row me pahila aur duusra redirect ke jorr hae, aur isme duusra redirect ke n
'brokenredirects' => 'Tuuta redirects',
'brokenredirectstext' => 'Niche ke suchi me uu redirects hai jon ki non-existent panna pe redirect kare hai:',
-'brokenredirects-edit' => '(badlo)',
-'brokenredirects-delete' => '(mitao)',
+'brokenredirects-edit' => 'badlo',
+'brokenredirects-delete' => 'mitao',
'withoutinterwiki' => 'Bina bhasa ke link waala panna',
'withoutinterwiki-summary' => 'Niche waala panna duusra bhasa ke versions se nai jurre hai.',
@@ -1620,16 +1725,17 @@ Is me ek nai to jaada akchhar hai jiske title me nai kaam me lawa jaae sake hai.
# Special:Categories
'categories' => 'Vibhag',
-'categoriespagetext' => 'Niche ke category me panna aur media hai.
-[[Special:UnusedCategories|Unused categories]] hian nai dekhawa jaae hai.
+'categoriespagetext' => 'Niche ke {{PLURAL:$1|vibhag me|vibhag me}} panna aur media hae.
+[[Special:UnusedCategories|Unused categories]] hian nai dekhawa jaawe hae.
[[Special:WantedCategories|wanted categories]] ke bhi dekho.',
'categoriesfrom' => 'Vibhag jon ki hian pe suruu hoe hai, ke dekhao:',
'special-categories-sort-count' => 'ginti se sort karo',
'special-categories-sort-abc' => 'alphabetically sort karo',
# Special:DeletedContributions
-'deletedcontributions' => 'Sadasya ke yogdaan ke mitae dia hai',
-'deletedcontributions-title' => 'Sadasya ke yogdaan ke mitae dia hai',
+'deletedcontributions' => 'Sadasya ke yogdaan ke mitae dia hai',
+'deletedcontributions-title' => 'Sadasya ke yogdaan ke mitae dia hai',
+'sp-deletedcontributions-contribs' => 'yogdaan',
# Special:LinkSearch
'linksearch' => 'Bahaari jorr',
@@ -1645,6 +1751,16 @@ Support karaa gais protocol: <tt>$1</tt>',
'listusersfrom' => 'Sadasya jon ki hian se suruu hoe hai ke dekhao:',
'listusers-submit' => 'Dekhao',
'listusers-noresult' => 'Koi sadasya ke nai pawa gais hai.',
+'listusers-blocked' => '(rok dewa gais hai)',
+
+# Special:ActiveUsers
+'activeusers' => 'Active sadasya ke list',
+'activeusers-intro' => 'Ii suchi uu sadasya ke hae jon ki pahile {{PLURAL:$1|din|din}} me kuchh karin hae.',
+'activeusers-count' => '$1 haali ke {{PLURAL:$1|badlao|badlao}} pichhle {{PLURAL:$3|din|$3 din}} me',
+'activeusers-from' => 'Sadasya jon ki hian se suruu hoe hai ke dekhao:',
+'activeusers-hidebots' => 'Bots ke lukao',
+'activeusers-hidesysops' => 'Administrator log ke lukao',
+'activeusers-noresult' => 'koi sadasya ke pawa nai gais hai.',
# Special:Log/newusers
'newuserlogpage' => 'Sadasya ke banae waala log',
@@ -1655,17 +1771,23 @@ Support karaa gais protocol: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Account ke automatically banawa gais hai',
# Special:ListGroupRights
-'listgrouprights' => 'Sadasya ke group adhikar',
-'listgrouprights-summary' => 'Niche likha hai ek suchi hai groups ke jon ki ii wiki me defined hai, aapan associated access rights ke saathe
+'listgrouprights' => 'Sadasya ke group adhikar',
+'listgrouprights-summary' => 'Niche likha hai ek suchi hai groups ke jon ki ii wiki me defined hai, aapan associated access rights ke saathe
[[{{MediaWiki:Listgrouprights-helppage}}|additional information]] individual rights ke baare me sait hoi.',
-'listgrouprights-group' => 'Jhund',
-'listgrouprights-rights' => 'Adhikar',
-'listgrouprights-helppage' => 'Help:Group waala adhikar',
-'listgrouprights-members' => '(sadasya ke suchi)',
-'listgrouprights-addgroup' => 'Sakta jorre {{PLURAL:$2|group|groups}}: $1',
-'listgrouprights-removegroup' => 'SAkta hatae {{PLURAL:$2|group|groups}}: $1',
-'listgrouprights-addgroup-all' => 'Sakta hai sab group jorre',
-'listgrouprights-removegroup-all' => 'Sab group ke hatae sakta hai',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dewa gais adhikar</span>
+* <span class="listgrouprights-revoked">Hatawa gais adhikar</span>',
+'listgrouprights-group' => 'Jhund',
+'listgrouprights-rights' => 'Adhikar',
+'listgrouprights-helppage' => 'Help:Group waala adhikar',
+'listgrouprights-members' => '(sadasya ke suchi)',
+'listgrouprights-addgroup' => 'Sakta jorre {{PLURAL:$2|group|groups}}: $1',
+'listgrouprights-removegroup' => 'SAkta hatae {{PLURAL:$2|group|groups}}: $1',
+'listgrouprights-addgroup-all' => 'Sakta hai sab group jorre',
+'listgrouprights-removegroup-all' => 'Sab group ke hatae sakta hai',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|group|groups}} ke aapan account me jorre saktaa hai: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|group|groups}} ke aapan account se hatae saktaa hai: $1',
+'listgrouprights-addgroup-self-all' => 'Sab group ke aapan account me jorre saktaa hai',
+'listgrouprights-removegroup-self-all' => 'Sab group ke aapan account se hatae saktaa hai',
# E-mail user
'mailnologin' => 'Koi bheje waala address nai hai',
@@ -1737,14 +1859,14 @@ Ii panna ke aage ke badlao aur usse jurra baat waala panna ki suchi hian pe hae,
'enotif_lastvisited' => 'Aap ke pichhla visit ke baad ke badlao ke khatir $1 ke dekho.',
'enotif_lastdiff' => 'Ii badlao ke dekhe ke khatir $1 ke dekho.',
'enotif_anon_editor' => 'bina naam ke sadasya $1',
-'enotif_body' => 'Dear $WATCHINGUSERNAME,
+'enotif_body' => 'Priye $WATCHINGUSERNAME,
-{{SITENAME}} panna $PAGETITLE ke $CHANGEDORCREATED kar dewa gais hai $PAGEEDITDATE ke din, $PAGEEDITOR ke dwara, current version ke khatir $PAGETITLE_URL ke dekho.
+{{SITENAME}} panna $PAGETITLE ke $CHANGEDORCREATED kar dewa gais hai $PAGEEDITDATE ke din, $PAGEEDITOR ke dwara, abhi ke version ke khatir $PAGETITLE_URL ke dekho.
$NEWPAGE
-Editor\'s summary: $PAGESUMMARY $PAGEMINOREDIT
+Sampadak ke summary: $PAGESUMMARY $PAGEMINOREDIT
Editor ke contact karo:
mail: $PAGEEDITOR_EMAIL
@@ -1752,13 +1874,17 @@ wiki: $PAGEEDITOR_WIKI
Aur koi notifications nai rahii, kahe ki koi aur badlao hoe sake hai, jab talak aap ii panna ke visit nai karta hai.
Aap aapan dhyan suchi me sab dhyan me rakha gais panna pe notification flags ke reset kare sakta hai.
- Aap ke friendly {{SITENAME}} notification system
+ Aap ke dayalu {{SITENAME}} notification system
--
-Aapan dhyan ke settings ke badle ke khatir, visit
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Aapan dhyan ke settings ke badle ke khatir, jaao
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Aapan dhyan suchi se panna ke mitae ke khatir, jaao
+$UNWATCHURL
+
-Feedback aur aage ke sahaeta:
+Aapan bichar de ke khatir aur aage ke sahaeta:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1770,10 +1896,11 @@ Feedback aur aage ke sahaeta:
'exblank' => 'panna khaali rahaa',
'delete-confirm' => '"$1" ke mitao',
'delete-legend' => 'Mitao',
-'historywarning' => 'Sawadhan: Jon page aap delete kare waala hai ke itihaas hai:',
+'historywarning' => 'Sawadhan: Jon panna ke aap mitae waala hai ke itihaas hai lagbhag $1 {{PLURAL:$1|badlao|badlao}}:',
'confirmdeletetext' => 'Aap ek panna ke uske itihaas ke saathe delete kare waala hai.
Meharbani kar ke iske confirm karo, ki aap iske consequences ke samajhta hai, aur aap iske [[{{MediaWiki:Policy-url}}|the policy]] ke policy ke niche delete karta hai.',
'actioncomplete' => 'Action puura hoe gais hai',
+'actionfailed' => 'Action fail hoe gais',
'deletedtext' => '"<nowiki>$1</nowiki>" ke delete kar dewa gais hai. Abhi jaldi ke deletions ke record dekhe khatir $2 ke dekho.',
'deletedarticle' => '"[[$1]]" ke mitae dewa gais hae',
'suppressedarticle' => 'suppressed "[[$1]]"',
@@ -1796,21 +1923,22 @@ Iske mitae se {{SITENAME}} me database operations me baadha parri;
sawadhani se aage barrho.',
# Rollback
-'rollback' => 'Pahile jaise kare waala badlao',
-'rollback_short' => 'Pahile jaise karo',
-'rollbacklink' => 'pahile jaise karo',
-'rollbackfailed' => 'Pahile jaise kare ke kosis safal nai bhais',
-'cantrollback' => 'Badlao ke pahile jaise nai kare sakta hai;
+'rollback' => 'Pahile jaise kare waala badlao',
+'rollback_short' => 'Pahile jaise karo',
+'rollbacklink' => 'pahile jaise karo',
+'rollbackfailed' => 'Pahile jaise kare ke kosis safal nai bhais',
+'cantrollback' => 'Badlao ke pahile jaise nai kare sakta hai;
isse pahile waala sadasya ii panna ke khaali yogdaan de waala hai.',
-'alreadyrolled' => '[[:$1]] by [[User:$2|$2]] ke pahile jaise nai kare sakta hai. ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => '[[:$1]] by [[User:$2|$2]] ke pahile jaise nai kare sakta hai. ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
aur koi ii panna ke badal nai to pahile jaise kar diis hai.
Ii panna ke pichla badla [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) se rahaa',
-'editcomment' => "Badlao ke summary rahaa: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ke badlao ke [[User:$1|$1]] ke aakhri badlao ke jaise kar dewa gais hai.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 ke badlao ke pahile jaise kar dewa gais hai;
+'editcomment' => "Badlao ke summary rahaa: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ke badlao ke [[User:$1|$1]] ke aakhri badlao ke jaise kar dewa gais hai.',
+'revertpage-nouser' => '(sadasya ke namm ke hatae dewa gais hae) se karaa gais badlao ke [[User:$1|$1]] ke badlao ke rakam kar dewa gais hae.',
+'rollback-success' => '$1 ke badlao ke pahile jaise kar dewa gais hai;
badal ke $2 ke aakhri version kar dewa gais hai.',
-'sessionfailure' => 'Aap ke login session me kuch karrbarr hai.
+'sessionfailure' => 'Aap ke login session me kuch karrbarr hai.
iske cancel kar dewa gais hai jisse ki koi iisession ke hijack nai kar.
Meharbani kar ke "back" ke press kar ke jon pana se aap aae rahaa ke fir se load karo, tab fir kosis karo.',
@@ -1829,7 +1957,7 @@ Abhi ke laabu panna protection ke dekho [[Special:ProtectedPages|protected pages
'protectexpiry' => 'Khalas hoe hai:',
'protect_expiry_invalid' => 'Khalas hoe waala time valid nai hai.',
'protect_expiry_old' => 'Khalas hoe waala time past me hai.',
-'protect-unchain' => 'Naam badle waala ijaajat kholo',
+'protect-unchain-permissions' => 'Aur jaada bachae waala option ke kholo',
'protect-text' => "Aap ii panna ke protection level ke dekhe aur badle sakta hai
'''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Aap blocked rahe pe protection level ke nai badle sakta hai.
@@ -1861,7 +1989,7 @@ Aap ii panna ke ijaajat level badle sakta hai, lekin ii cascading protection nai
** Counter-productive edit warring
** Jaada traffic waala panna',
'protect-edit-reasonlist' => 'Badlao se bachae ke kaaran',
-'protect-expiry-options' => '1 ghanta:1 hour,1 din:1 day, 1 hapta:1 week,2 hapta:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year,sab time ke khatir:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ghanta:1 hour,1 din:1 day, 1 hapta:1 week,2 hapta:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year,sab time ke khatir:infinite',
'restriction-type' => 'Ijaajat:',
'restriction-level' => 'Roke ke niyam:',
'minimum-size' => 'Kamti se kamti size',
@@ -1904,6 +2032,7 @@ Sait aap ke kharaab link hoi, nai to badlao ke sait pahile jaise kar dewa gais h
'undelete-nodiff' => 'Koi pahile ke badlao ke nai pawa gais hai.',
'undeletebtn' => 'Pahile jaise kar do',
'undeletelink' => 'dekho/pahile jaise karo',
+'undeleteviewlink' => 'dekho',
'undeletereset' => 'Pahile jaise karo',
'undeleteinvert' => 'Selection ke ulta karo',
'undeletecomment' => 'Kaaran::',
@@ -1943,19 +2072,24 @@ $1',
'contributions-title' => '$1 ke yogdaan',
'mycontris' => 'Hamaar yogdaan',
'contribsub2' => '$1 ($2) ke khatir',
-'nocontribs' => 'Ii critera ke rakam ke koi badlao nai pawa gais hai.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ii critera ke rakam ke koi badlao nai pawa gais hai.',
'uctop' => '(uppar)',
'month' => 'Mahina se (aur pahile):',
'year' => 'Saal se (aur pahile):',
-'sp-contributions-newbies' => 'Khaali nawaa account ke yogdaan dekhao',
-'sp-contributions-newbies-sub' => 'Nawaa account khatir',
-'sp-contributions-newbies-title' => 'Nawaa account ke sadasya ke yogdaan',
-'sp-contributions-blocklog' => 'Suchi roko',
-'sp-contributions-logs' => 'logs',
-'sp-contributions-search' => 'Yogdaan ke khojo',
-'sp-contributions-username' => 'IP Address nai to username:',
-'sp-contributions-submit' => 'Khojo',
+'sp-contributions-newbies' => 'Khaali nawaa account ke yogdaan dekhao',
+'sp-contributions-newbies-sub' => 'Nawaa account khatir',
+'sp-contributions-newbies-title' => 'Nawaa account ke sadasya ke yogdaan',
+'sp-contributions-blocklog' => 'Suchi roko',
+'sp-contributions-deleted' => 'Mitawa gais adasya ke yogdaan',
+'sp-contributions-logs' => 'logs',
+'sp-contributions-talk' => 'baat',
+'sp-contributions-userrights' => 'sadasya ke adhikaar ke manage karo',
+'sp-contributions-blocked-notice' => 'Ii sadasya ke hian pe ijajat nai hae.
+Pahile waala block log entry ke reference ke khatir niche dekhawa jaawe hae:',
+'sp-contributions-search' => 'Yogdaan ke khojo',
+'sp-contributions-username' => 'IP Address nai to username:',
+'sp-contributions-submit' => 'Khojo',
# What links here
'whatlinkshere' => 'Hian konchij jurre hae',
@@ -1978,6 +2112,7 @@ $1',
# Block/unblock
'blockip' => 'Sadasya ke roko',
+'blockip-title' => 'Sadasya ke roko',
'blockip-legend' => 'Sadasya ke roko',
'blockiptext' => 'Niche ke form ke use kar ke koi khaas IP address nai to username ke write access ke roko.
Iske khaali vandalism ke roke ke khatir use kare ke chaahi [[{{MediaWiki:Policy-url}}|policy]] ke niche.
@@ -2001,7 +2136,7 @@ Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandali
'ipbenableautoblock' => 'Apne se sadasya ke kaam me lawa gais last IP address ke roko, aur iske saathe aur koi IPs jisme se baad me badlao kare ke kosis karaa jaae ke bhi roko.',
'ipbsubmit' => 'Ii sadasya ke roko',
'ipbother' => 'Duusra time:',
-'ipboptions' => '2 ghanta:2 hours,1 din:1 day,3 daya:3 days,1 hapta:1 week,2 hapta:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year,pura:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ghanta:2 hours,1 din:1 day,3 daya:3 days,1 hapta:1 week,2 hapta:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year,pura:infinite',
'ipbotheroption' => 'duusra',
'ipbotherreason' => 'Duusra/aur kaaran:',
'ipbhidename' => 'Badlao aur suchi se username ke hatao',
@@ -2030,9 +2165,11 @@ Ii rukawat pe fir se bichar kare ke khatir [[Special:IPBlockList|IP block list]]
'ipblocklist-sh-tempblocks' => '$1 temporary rukawat',
'ipblocklist-sh-addressblocks' => '$1 ek IP rukawat',
'ipblocklist-submit' => 'Khojo',
+'ipblocklist-localblock' => 'Sthaniye rukawat',
+'ipblocklist-otherblocks' => 'Duusra {{PLURAL:$1|block|blocks}}',
'blocklistline' => '$1, $2 $3 ($4) ke rok diis hai',
'infiniteblock' => 'sab din ke khatir',
-'expiringblock' => 'khalaas hoe hai $1',
+'expiringblock' => 'khalaas hoe hai $1 at $2',
'anononlyblock' => 'khaali bina naam ke',
'noautoblockblock' => 'ab apne se rokaa nai jaawe sake hai',
'createaccountblock' => 'account banae ke adhikar ke rok dewa gais hai',
@@ -2047,7 +2184,10 @@ Ii rukawat pe fir se bichar kare ke khatir [[Special:IPBlockList|IP block list]]
'autoblocker' => 'Apne se rokaa gais hai kaahe ki aap ke IP address ke abhi haali "[[User:$1|$1]]" use karis hai.
$1 ke roke ke kaaran hai: "$2"',
'blocklogpage' => 'Suchi ke roko',
-'blocklog-fulllog' => 'Puura rukawat ke suchi',
+'blocklog-showlog' => 'Ii sadasya ke pahile rokaa gais hae.
+Roke waala suchi ke niche dekhawa jaawe hae aap ke jankari ke khatir:',
+'blocklog-showsuppresslog' => 'Ii sadasya ke pahile rokaa aur lukawa gais hae.
+Iske suchi ke niche dekhawa jaawe hae aap ke jankari ke khatir.',
'blocklogentry' => '[[$1]] ke roka jon ki $2 $3 khala hoi',
'reblock-logentry' => '[[$1]] ke block settings with an expiry time of $2 $3 ke badal dewa gais hai.',
'blocklogtext' => 'Ii suchi sadasya ke rukawat aur rukawat ke reverse kare ke baare me hai.
@@ -2069,11 +2209,13 @@ Abhi ke rukawat ke dekhe ke khatir meharbani kar ke [[Special:IPBlockList|IP blo
'ipb-needreblock' => '== Pahile se rok dewa gais hai ==
$1 ke rok dewa gais hai.
Ka aapp ii settings ke badle mangtaa hai?',
+'ipb-otherblocks-header' => 'Duusra {{PLURAL:$1|block|blocks}}',
'ipb_cant_unblock' => 'Error: Roke waala ID $1 nai milaa.
Saait iske pahile khol dewa gais hoi.',
'ipb_blocked_as_range' => 'Error: Ii IP $1 ke directly nai block karaa gais hai aur ii kaaran se iske unblock nai karaa jaawe sake hai.
Lekin iske, as part of the range $2, block karaa gais hai, jiske unblock karaa jaawe sake hai.',
'ip_range_invalid' => 'IP ke range me galti hai.',
+'ip_range_toolarge' => '/$1 se barraa range blocks ke ijajat nai hae.',
'blockme' => 'Ham ke roko',
'proxyblocker' => 'Proxy roke waala',
'proxyblocker-disabled' => 'Ii function pe rukawat hai.',
@@ -2084,6 +2226,8 @@ Meharbaani kar ke aap aapan Internet service provider, nai to tech support, ke c
'sorbs_create_account_reason' => 'DNSBL used by {{SITENAME}} me aap ke IP address ke as an open proxy list karaa gais hai.
Aap ke ek account banae ke ijajat nai hai',
'cant-block-while-blocked' => 'Aap, jab ki apne blocked hai, duusra sadasya ke block nai kare sakta hai.',
+'cant-see-hidden-user' => 'Jon sadasya ke aap roke mangtaa hae ke pahile rok ke lukae dewa gais hae.
+Jab ki aap ke lage hideuser adhikaar nai hae, tab aap ii sadasya ke rukawat ke nai dekhe aur badle saktaa hae.',
# Developer tools
'lockdb' => 'Database ke band karo',
@@ -2126,6 +2270,7 @@ meharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se
* Aap nivhe waala box ke uncheck karo
Ii prastithi me, aap ke manually move yah merge kare ke parri.",
'movearticle' => 'Panna ke naam badli karo:',
+'moveuserpage-warning' => " '''Chetauni:''' Aap ek sadasya ke panna ke naam badle waala hae. Ii yaad rakhna ki khaali panna ke naam badla jaai, sadasya ke naam ''nai'' badlaa jaai.",
'movenologin' => 'Logged in nai hai',
'movenologintext' => 'Panna ke naam badle ke khatir aap ke ek registered sadasya rahe ke parri aur [[Special:UserLogin|logged in]].',
'movenotallowed' => 'Aap ke panna ke naam badle ke ijajat nai hai.',
@@ -2136,7 +2281,7 @@ Ii prastithi me, aap ke manually move yah merge kare ke parri.",
'move-watch' => 'Ii panna pe dhyan rakho',
'movepagebtn' => 'Panna ke naam badlo',
'pagemovedsub' => 'Panna ke naam badle me safalta',
-'movepage-moved' => '\'\'\'"$1" ke naam badal ke "$2" kar dewa gais hai\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ke naam badal ke "$2" kar dewa gais hai\'\'\'',
'movepage-moved-redirect' => 'Ek redirect ke banae dewa gais hai.',
'movepage-moved-noredirect' => 'Ek redirect ke banae pe rukawat lagae dewa gais hai.',
'articleexists' => 'Uu naam ke panna abhi hai, nai to jon naam aap choose karaa hai valid nai hai.
@@ -2179,6 +2324,14 @@ panna ke wahi ke uppar nai save karaa jaae sake hai.',
'imageinvalidfilename' => 'Jon naam pe aap badle mangtaa hai valid nai hai',
'fix-double-redirects' => 'Update any redirects that point to the original title',
'move-leave-redirect' => 'Ek redirect ke pichhe chhorro',
+'protectedpagemovewarning' => 'Chetauni: Ii panna ke band kar dewa gais hai jisse ki khaali administrator logan iske naam badle sake hai.
+Aap ke jaankari ke khatir sab se nawaa suchi niche dewa gais hae:',
+'semiprotectedpagemovewarning' => 'Dhyan me rakhna: Ii panna ke band kar dewa gais hai jisse ki khaali registered sadasya iske naam badle sake hai.
+Aap ke jaankari ke khatir sab se nawaa suchi ke niche dewa gais hae:',
+'move-over-sharedrepo' => '==File hae==
+[[:$1]] shared repository me hae. Ek file ke naam badal ke ii naam kare se shared file mit jaai.',
+'file-exists-sharedrepo' => 'Jon file ke naam ke chuna gais hae, pahile se shared repository me hae.
+Meharbani kar ke duusra naam do.',
# Export
'export' => 'Panna niryat karo',
@@ -2201,15 +2354,21 @@ Duusra case me aap ek link ke bhi use kare saktaa hai, jaise ki [[{{#Special:Exp
'export-pagelinks' => 'Include linked pages to a depth of:',
# Namespace 8 related
-'allmessages' => 'System sandesh',
-'allmessagesname' => 'Naam',
-'allmessagesdefault' => 'Default text',
-'allmessagescurrent' => 'Abhi ke text',
-'allmessagestext' => 'Ii ek system sandes ke suchi hai jon ki MediaWiki namespace me pawa jaae sake hai.
+'allmessages' => 'System sandesh',
+'allmessagesname' => 'Naam',
+'allmessagesdefault' => 'Default text',
+'allmessagescurrent' => 'Abhi ke text',
+'allmessagestext' => 'Ii ek system sandes ke suchi hai jon ki MediaWiki namespace me pawa jaae sake hai.
Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani kar ke [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] aur [http://translatewiki.net translatewiki.net] pe jao.',
-'allmessagesnotsupportedDB' => "Ii panna ke kaam me nai lawa jaae sake hai kahe ki '''\$wgUseDatabaseMessages''' ke band kar dewa gais hai.",
-'allmessagesfilter' => 'Message naam ke filter:',
-'allmessagesmodified' => 'Khaali badlawa gae ke dekhao',
+'allmessagesnotsupportedDB' => "Ii panna ke kaam me nai lawa jaae sake hai kahe ki '''\$wgUseDatabaseMessages''' ke band kar dewa gais hai.",
+'allmessages-filter-legend' => 'Chaalo',
+'allmessages-filter' => 'Customisation state se chhaano',
+'allmessages-filter-unmodified' => 'Badlawa nai gais hae',
+'allmessages-filter-all' => 'Sab',
+'allmessages-filter-modified' => 'Badlawa gais hae',
+'allmessages-prefix' => 'Prefix se chhaano:',
+'allmessages-language' => 'Bhasa:',
+'allmessages-filter-submit' => 'Jaao',
# Thumbnails
'thumbnail-more' => 'Barraa karo',
@@ -2219,6 +2378,9 @@ Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani
'djvu_no_xml' => ' DjVu file ke XML ke nai paawe sakaa hae',
'thumbnail_invalid_params' => 'Thumbnail ke parameter valid nai hae',
'thumbnail_dest_directory' => 'Destination directory ke nai banaawe sakaa hae',
+'thumbnail_image-type' => 'Ii rakam ke chapa ke support nai karaa jaawe hai',
+'thumbnail_gd-library' => 'Incomplete GD library configuration: missing function $1',
+'thumbnail_image-missing' => 'Ii naam ke file nai hae: $1',
# Special:Import
'import' => 'Panna ke import karo',
@@ -2287,6 +2449,7 @@ Meharbani kar ke, fir se kosis karo.',
'tooltip-ca-viewsource' => 'Ii panna surakchhit hai. Aap iske sooti dekhe sakta hai.',
'tooltip-ca-history' => 'Ii panna ke pahile ke badlao',
'tooltip-ca-protect' => 'Ii panna ke bachao',
+'tooltip-ca-unprotect' => 'Ii panna ke nai bachao',
'tooltip-ca-delete' => 'Ii panna ke delete karo',
'tooltip-ca-undelete' => 'Ii panna ke mitae se pahile ke sab badlao ke pahile jaise karo',
'tooltip-ca-move' => 'Ii panna ke duusra jagah karo',
@@ -2297,6 +2460,7 @@ Meharbani kar ke, fir se kosis karo.',
'tooltip-search-fulltext' => 'Ii sabd ke sab panna me khojo',
'tooltip-p-logo' => 'Pahila panna pe jaao',
'tooltip-n-mainpage' => 'Pahila panna dekho',
+'tooltip-n-mainpage-description' => 'Pahila panna pe jaao',
'tooltip-n-portal' => 'Project ke baare me, app kaunchi kare sakta hae, kahaan pe chij milii',
'tooltip-n-currentevents' => 'Abhi ke samachar ke baare me aur jankari',
'tooltip-n-recentchanges' => 'Ii wiki me abhi haali ke badlaa waala suchi.',
@@ -2342,10 +2506,12 @@ Ii summary me ek kaaran jorre ke ijajat de hai.',
# Attribution
'anonymous' => 'Anonymous {{PLURAL:$1|sadasya|sadasya}} {{SITENAME}} ke',
'siteuser' => '{{SITENAME}} sadasya $1',
-'lastmodifiedatby' => 'Ii panna ke aakhri dafe $3 badlis rahaa $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} benaam sadasya $1',
+'lastmodifiedatby' => 'Ii panna ke aakhri dafe $3 badlis rahaa $2, $1.',
'othercontribs' => 'Ii $1 ke kaam pe based hae.',
'others' => 'duusra jane',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|sadasya|sadasya}} $1',
+'anonusers' => '{{SITENAME}} benaam {{PLURAL:$2|sadasya|sadasya}} $1',
'creditspage' => 'Panna ke credit',
'nocredits' => 'Ii panna ke khatir koi credit ke baare me jaankari nai hai.',
@@ -2374,11 +2540,24 @@ Ii saait ii kaaran se hoi ki panna ke ek jorr koi blacklisted external site se h
'mw_math_modern' => 'Modern browsers khatir thiik hai',
'mw_math_mathml' => 'MathML hoe sake tab (experimental)',
+# Math errors
+'math_failure' => 'Parse nai kare sakaa',
+'math_unknown_error' => 'galti ke nai samajhta',
+'math_unknown_function' => 'nai samajhta ki ii kon chij khatir hai',
+'math_lexing_error' => 'lexing me galti',
+'math_syntax_error' => 'syntax me galti',
+'math_image_error' => 'PNG conversion fail hoe gais;
+latex, dvips aur gs ke correct installation ke check kar ke convert convert karo',
+'math_bad_tmpdir' => 'Math temporary directory nai banae sakta hai',
+'math_bad_output' => 'Math output directory me likhe nai to banae nai sakta hai',
+'math_notexvc' => 'Texvc executable nai hai;
+Configure kare khatir meharbani kar ke math/README ke dekho.',
+
# Patrolling
'markaspatrolleddiff' => 'Mark karo ke pahraa dewa jaawe hai',
'markaspatrolledtext' => 'Mark karo ki panna pe pahraa dewa jaawe hai',
'markedaspatrolled' => 'Mark karo ke pahraa dewa jaawe hai',
-'markedaspatrolledtext' => 'Pasand karaa gais badlao pe pahraa dewa jaawe hai',
+'markedaspatrolledtext' => 'Pasand karaa gais [[:$1]] ke badlao pe pahraa dewa jaawe hai',
'rcpatroldisabled' => 'Nawaa badlao pe pahraa de ke ijajat nai hai',
'rcpatroldisabledtext' => 'Nawaa badla pe abhi pahraa nai dewa jaawe hai',
'markedaspatrollederror' => 'Ispe pahraa nai dewa jaawe sake hai',
@@ -2408,12 +2587,10 @@ $1',
'previousdiff' => '← Purana badlao',
'nextdiff' => 'Nawaa badlao →',
-# Visual comparison
-'visual-comparison' => 'Aankhi se antar dekho',
-
# Media information
'mediawarning' => "'''Chetauni''': Ii file me saait kharaab code hoi.
Iske execute kare se aap ke system me garrbarr hoe sake hae.",
+'imagemaxsize' => "Chapa jaada se jaada ketnaa barraahoe sake hai:<br />''(file ke baare me panna)''",
'thumbsize' => 'Anguutha ke nakkhuun etna barraa:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|panna|panna}}',
'file-info' => '(file etnaa barraa: $1, MIME rakam: $2)',
@@ -2422,6 +2599,8 @@ Iske execute kare se aap ke system me garrbarr hoe sake hae.",
'svg-long-desc' => '(SVG file, naam kare ke khatir $1 × $2 pixels, file size: $3)',
'show-big-image' => 'Puura resolution',
'show-big-image-thumb' => '<small>Ii preview ke size: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'Ghuum ghumae ke wahii jagha pe aawe hae',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Nawaa files ke gallery',
@@ -2453,7 +2632,7 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Chaurrai',
@@ -2531,7 +2710,7 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'exif-subjectdistancerange-2' => 'Najdik se dekho',
'exif-subjectdistancerange-3' => 'Duur se dekho',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => 'Knots',
# External editor support
@@ -2544,6 +2723,7 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'watchlistall2' => 'sab',
'namespacesall' => 'sab',
'monthsall' => 'sab',
+'limitall' => 'sab',
# E-mail address confirmation
'confirmemail' => 'E-mail address ke pakka karo',
@@ -2582,7 +2762,7 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'watchlisttools-raw' => 'Dhyan suchi ke apne sampadan karo',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-specialpages' => 'Khaas panna',
'version-other' => 'Duusra',
@@ -2608,4 +2788,7 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
# Database error messages
'dberr-header' => 'Ii wiki me kuchh garrbarr hae',
+# HTML forms
+'htmlform-selectorother-other' => 'Duusra',
+
);
diff --git a/languages/messages/MessagesHil.php b/languages/messages/MessagesHil.php
index 4ad97cea..0eca6120 100644
--- a/languages/messages/MessagesHil.php
+++ b/languages/messages/MessagesHil.php
@@ -91,16 +91,18 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Ini nga kategorya ay may sang amo lang ni nga unod sa mga nagasunod nga pahina.|Ang mga nagasunod {{PLURAL:$1|pahina ay|$1 mga pahina ay}} sa sini nga kategroya, sa $2 kabilugan.}}',
'listingcontinuesabbrev' => 'cont.',
-'about' => 'Nahanungod',
-'newwindow' => '(gabukas sa bag-o nga bintana)',
-'cancel' => 'Kanselahon',
+'about' => 'Nahanungod',
+'newwindow' => '(gabukas sa bag-o nga bintana)',
+'cancel' => 'Kanselahon',
+'mytalk' => 'Akon paghisayranay',
+'navigation' => 'Nabigayson',
+'and' => '&#32;kag',
+
+# Cologne Blue skin
'qbfind' => 'Pangita',
'qbedit' => 'Ilisan',
'qbpageoptions' => 'Ining panid',
'qbspecialpages' => 'Pinasahi nga mga panid',
-'mytalk' => 'Akon paghisayranay',
-'navigation' => 'Nabigayson',
-'and' => '&#32;kag',
'errorpagetitle' => 'Sala/Eror',
'returnto' => 'Balik sa $1.',
@@ -130,7 +132,7 @@ $messages = array(
'otherlanguages' => 'Sa iban nga lenguahe',
'redirectedfrom' => '(Gindirek liwat halin $1)',
'redirectpagesub' => 'I-direktahon ang pahina',
-'lastmodifiedat' => 'Ang ini nga pahina na-islan lang sang nagligad nga $1, sa $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ang ini nga pahina na-islan lang sang nagligad nga $1, sa $2.',
'jumpto' => 'Lumpat sa:',
'jumptonavigation' => 'nabigayson',
'jumptosearch' => 'Pangita-a',
@@ -213,9 +215,6 @@ Indi pagkalimti ang pag ilis sang imo mga pagpasulabi sa {{SITENAME}}.',
'nologinlink' => 'Maghimo account',
'createaccount' => 'Maghimo Account',
'gotaccountlink' => 'Mag sulod',
-'youremail' => 'E-mail:',
-'username' => 'Ngalan sang Manog-gamit:',
-'email' => 'E-mail',
'mailmypassword' => 'i-E-mail ang bag-o na pasword',
# Edit page toolbar
@@ -268,6 +267,8 @@ Wala pa nabutang ang imo nga ginbag-o!",
Kung indi mo naluyagan ang imo mga ginsulat nga islan kag palaptahon sang imo gid nga gusto, te indi mo pagpadala diri.<br />
Naga promisa ka man sa amon nga ikaw mismo ang nagsulat sina, o ginkopya mo ini sa publiko nga domain o kaparehas nga libre na ginkuhaan.
'''Indi ka maghatag sang na kapirayt nga na obra sing wala lisensiya!'''",
+'templatesused' => 'Mga Templeyts nga nagamit na sa sini nga pahina:',
+'templatesusedpreview' => 'Ang mga ginagamit na Templeyts sa sini na prebyu:',
'template-protected' => '(protektado)',
'template-semiprotected' => '(medyo-protektado)',
'hiddencategories' => 'Ini nga pahina ay membro sang {{PLURAL:$1|1 tago nga kategorya|$1 mga tago nga kategorya}}:',
@@ -276,6 +277,8 @@ Naga promisa ka man sa amon nga ikaw mismo ang nagsulat sina, o ginkopya mo ini
# History pages
'viewpagelogs' => 'Tan-awon ang mga log para sa sini nga pahina',
'currentrev' => 'Mga Inislan Subong',
+'currentrev-asof' => 'Bag-o nga rebisyon sang $1',
+'revisionasof' => 'Ang Pagliwat sang $1',
'previousrevision' => '← Daan nga rebisyon',
'nextrevision' => 'Mas bag-o nga rebisyon →',
'currentrevisionlink' => 'Mga Inislan Subong',
@@ -309,12 +312,11 @@ Legend: '''({{int:cur}})''' = ang ginalain niya sa bag-o nga na rebisyon,
'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
'searchsubtitleinvalid' => "Nangita ka para '''$1'''",
-'noexactmatch' => "'''Wala diri sang titulo nga pahina \"\$1\".'''
-Pwede ka [[:\$1|makahimo sini nga pahina]].",
-'noexactmatch-nocreate' => "'''Wala sang titulo na pahina \"\$1\".'''",
'notitlematches' => 'Wala sang parehas nga titulo ka pahina',
'notextmatches' => 'Wala sang pahina nga parehas teksto',
-'viewprevnext' => 'Tan-awon ($1) ($2) ($3)',
+'prevn' => 'antes {{PLURAL:$1|$1}}',
+'nextn' => 'dasun {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Tan-awon ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 pulong|$2 pulong}})',
'search-redirect' => '(gindirekta liwat $1)',
'search-section' => '(seksiyon $1)',
@@ -324,7 +326,6 @@ Pwede ka [[:\$1|makahimo sini nga pahina]].",
'search-interwiki-more' => '(damu)',
'search-mwsuggest-enabled' => 'may suhestiyon',
'search-mwsuggest-disabled' => 'wala suhestiyon',
-'showingresultstotal' => "Nagapakita sa dalum {{PLURAL:$4|resulta '''$1''' of '''$3'''|mga resulta '''$1 - $2''' sang '''$3'''}}",
'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ay ginapangita nga daan.
Testingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina paghisayranay, templeyts, etc), o gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
'powersearch' => 'Abanse nga pagpangita',
@@ -340,6 +341,9 @@ Testingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang
'skin-preview' => 'Ipakita subong',
'prefs-rc' => 'Mga Bag-o nga Inislan',
'searchresultshead' => 'Pangita-a',
+'youremail' => 'E-mail:',
+'username' => 'Ngalan sang Manog-gamit:',
+'email' => 'E-mail',
# Groups
'group-sysop' => 'Mga Administrador',
@@ -377,6 +381,8 @@ Testingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang
# Recent changes linked
'recentchangeslinked' => 'May labot nga pag-ilis',
+'recentchangeslinked-feed' => 'May labot nga pag-ilis',
+'recentchangeslinked-toolbox' => 'May labot nga pag-ilis',
'recentchangeslinked-title' => 'Mga ginlain nga kapareho kay "$1"',
'recentchangeslinked-summary' => "Ini ang mga lista sang mga bag-o lang gid nga nahimo nga mga pahina nga gintabid halin sa gin klaro nga pahina (o mga katapo sa mga kategorya nga gin klaro).
Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
@@ -399,12 +405,13 @@ Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
'filehist-current' => 'subong',
'filehist-datetime' => 'Petsa/Oras',
'filehist-thumb' => 'Thumbnail',
+'filehist-thumbtext' => 'Thumbnail para sa bersiyon sang $1',
'filehist-user' => 'Naga-usar',
'filehist-dimensions' => 'Mga Takus',
'filehist-comment' => 'Komentar',
'imagelinks' => 'File Tabid',
'linkstoimage' => 'Ang nagakasunod {{PLURAL:$1|pahina nga mga tabid|$1 mga pahina mga tabid}} sa sini nga file:',
-'sharedupload' => 'Ini nga file gikan sa $1 kag pwede ma usar sang iban nga mga proyekto.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Ini nga file gikan sa $1 kag pwede ma usar sang iban nga mga proyekto.',
'uploadnewversion-linktext' => 'Uplod sang bag-o nga bersiyon sang sini nga file',
# File deletion
@@ -416,8 +423,8 @@ Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
# Statistics
'statistics' => 'Mga Statistik',
-'brokenredirects-edit' => '(ilisan)',
-'brokenredirects-delete' => '(panason)',
+'brokenredirects-edit' => 'ilisan',
+'brokenredirects-delete' => 'panason',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
@@ -508,7 +515,6 @@ Lantawa $2 para sa mga lista sang mga bag-o lang ginkakas.',
'protectexpiry' => 'Ekspayr:',
'protect_expiry_invalid' => 'Ang Oras sang pag-ekspayr ay hindi tuod.',
'protect_expiry_old' => 'Ang Oras sang pag-ekspayr ay sang ligad pa.',
-'protect-unchain' => 'Di-paglock ang napasaylo nga mga permiso',
'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diri para sa pahina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Ang imo akawnt ay wala permiso para mabag-o ang pahina sa lebel sang proteksiyon.
Ari diri ang mga pinkabag-o nga mga seting para sa pahina '''$1''':",
@@ -550,6 +556,7 @@ Pwede mo mabag-o ang lebel sang proteksiyon sang pahina, pero indi ini ma apektu
'sp-contributions-newbies' => 'Ipakita ang mga kontribusyon sang mga bag-o nga akawnts lamang',
'sp-contributions-blocklog' => 'pugong log',
+'sp-contributions-talk' => 'Hisayranay',
'sp-contributions-search' => 'Mangita para sa mga knotribusyon',
'sp-contributions-username' => 'IP Adres ukon ngalan sang naga-user:',
'sp-contributions-submit' => 'Pangita-a',
@@ -573,7 +580,7 @@ Pwede mo mabag-o ang lebel sang proteksiyon sang pahina, pero indi ini ma apektu
# Block/unblock
'blockip' => 'i-Pugong ang naga-usar',
'ipbreason' => 'Rason:',
-'ipboptions' => '2 oras:2 hours,1 adlaw:1 day,3 adlaw:3 days,1 semana:1 week,2 semana:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tu-ig:1 year,wala katapusan:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 adlaw:1 day,3 adlaw:3 days,1 semana:1 week,2 semana:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tu-ig:1 year,wala katapusan:infinite',
'ipblocklist' => 'Napugong nga mga IP adres kag mga ngalan ka naga-usar',
'ipblocklist-submit' => 'Pangita-a',
'blocklink' => 'harang',
@@ -611,7 +618,7 @@ Sa sini nga mga kaso, kilanlan mo gid isaylo o isahon ang pahina sang pag-amat a
'move-watch' => 'Bantayan ining panid',
'movepagebtn' => 'Saylohon ining panid',
'pagemovedsub' => 'Giho nga nagdayon',
-'movepage-moved' => '\'\'\'"$1" nasaylo na didto sa "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" nasaylo na didto sa "$2"\'\'\'',
'articleexists' => 'May-ara na sang ngalan nga amu na, ukon ang ginpili mo na ngalan ay indi mabatunan.
Palihog lang pili sang lain nga ngalan. Salamat.',
'talkexists' => "'''Nasaylo na mismo ang ina nga pahina, pero ang hisayranay nga pahina indi masaylo kay man may ara na sang nakakuha sang bag-o nga titulo.
@@ -657,6 +664,7 @@ Pwede mo matan-aw ang iya ginhalinan',
'tooltip-search-fulltext' => 'Pangita-on ang mga pahina para sa sini nga teksto',
'tooltip-p-logo' => 'Mayor nga Panid',
'tooltip-n-mainpage' => 'Magdu-aw sa Mayor nga Panid',
+'tooltip-n-mainpage-description' => 'Bisitahon ang Mayor nga Panid',
'tooltip-n-portal' => 'Nahanungod sa poryekto, ano ang imo mahimo, di-in makatukib',
'tooltip-n-currentevents' => 'Pangita-on sa likod sang impormasyon sa bag-o lang nga nagkalatabo',
'tooltip-n-recentchanges' => 'Ang listahan sang mga bag-o inislan sa wiki.',
@@ -724,7 +732,7 @@ Ang iban ay pagataguon sang default.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
diff --git a/languages/messages/MessagesHr.php b/languages/messages/MessagesHr.php
index 33e9347f..59d895d0 100644
--- a/languages/messages/MessagesHr.php
+++ b/languages/messages/MessagesHr.php
@@ -143,7 +143,9 @@ $magicWords = array(
'forcetoc' => array( '0', '__UKLJUČISADRŽAJ__', '__FORCETOC__' ),
'toc' => array( '0', '__SADRŽAJ__', '__TOC__' ),
'noeditsection' => array( '0', '__BEZUREĐIVANJAODLOMAKA__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'TRENUTAČNIMJESEC', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__BEZZAGLAVLJA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'TRENUTAČNIMJESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'TRENUTAČNIMJESEC1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'TRENUTAČNIMJESECIME', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'TRENUTAČNIMJESECIMEGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'TRENUTAČNIMJESECKRAT', 'CURRENTMONTHABBREV' ),
@@ -153,7 +155,8 @@ $magicWords = array(
'currentyear' => array( '1', 'TRENUTAČNAGODINA', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'TRENUTAČNOVRIJEME', 'CURRENTTIME' ),
'currenthour' => array( '1', 'TRENUTAČNISAT', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MJESNIMJESEC', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'MJESNIMJESEC', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MJESNIMJESEC1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'MJESNIMJESECIME', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'MJESNIMJESECIMEGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'MJESNIMJESECKRAT', 'LOCALMONTHABBREV' ),
@@ -167,7 +170,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'BROJČLANAKA', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'BROJDATOTEKA', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'BROJSURADNIKA', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'BROJAKTIVNIHSURADNIKA', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'BROJUREĐIVANJA', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'BROJPREGLEDA', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'IMESTRANICE', 'PAGENAME' ),
'pagenamee' => array( '1', 'IMESTRANICEE', 'PAGENAMEE' ),
'namespace' => array( '1', 'IMENSKIPROSTOR', 'NAMESPACE' ),
@@ -325,6 +330,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pošalji mi e-mail i kod manjih izmjena',
'tog-enotifrevealaddr' => 'Prikaži moju e-mail adresu u obavijestima o izmjeni',
'tog-shownumberswatching' => 'Prikaži broj suradnika koji prate stranicu (u nedavnim izmjenama, popisu praćenja i samim člancima)',
+'tog-oldsig' => 'Pregled postojećeg potpisa:',
'tog-fancysig' => 'Običan potpis kao wikitekst (bez automatske poveznice)',
'tog-externaleditor' => 'Uvijek rabi vanjski program za uređivanje (samo za napredne, potrebne su posebne postavke na računalu)',
'tog-externaldiff' => 'Uvijek koristi vanjski program za usporedbu',
@@ -347,6 +353,13 @@ $messages = array(
'underline-never' => 'Nikad',
'underline-default' => 'Prema postavkama preglednika',
+# Font style option in Special:Preferences
+'editfont-style' => 'Uredi područje font stila:',
+'editfont-default' => 'Prema postavkama preglednika',
+'editfont-monospace' => 'Font s jednakim razmakom',
+'editfont-sansserif' => 'Font Sans-serif',
+'editfont-serif' => 'Font Serif',
+
# Dates
'sunday' => 'nedjelja',
'monday' => 'ponedjeljak',
@@ -406,7 +419,7 @@ $messages = array(
'category-media-header' => 'Mediji u kategoriji "$1":',
'category-empty' => "''U ovoj kategoriji trenutačno nema članaka ni medija.''",
'hidden-categories' => '{{PLURAL:$1|Skrivena kategorija|Skrivene kategorije|Skrivenih kategorija}}',
-'hidden-category-category' => 'Skrivene kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skrivene kategorije',
'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima samo sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|podkategoriju|$1 podkategorije|$1 podkategorija}}, od njih $2 ukupno.}}',
'category-subcat-count-limited' => 'Ova kategorija ima {{PLURAL:$1|podkategoriju|$1 podkategorije|$1 podkategorija}}.',
'category-article-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sljedeću stranicu.|{{PLURAL:$1|stranica je|$1 stranice su|$1 stranica je}} u ovoj kategoriji, od njih $2 ukupno.}}',
@@ -414,15 +427,25 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sljedeću datoteku.|{{PLURAL:$1|datoteka je|$1 datoteke su|$1 datoteka je}} u ovoj kategoriji, od njih $2 ukupno.}}',
'category-file-count-limited' => '{{PLURAL:$1|datoteka je|$1 datoteke su|$1 datoteka su}} u ovoj kategoriji.',
'listingcontinuesabbrev' => 'nast.',
+'index-category' => 'Indeksirane stranice',
+'noindex-category' => 'Neindeksirane stranice',
'mainpagetext' => "'''Softver MediaWiki je uspješno instaliran.'''",
'mainpagedocfooter' => 'Pogledajte [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi sučelja]
i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike] za pomoć pri uporabi i podešavanju.',
-'about' => 'O',
-'article' => 'Članak',
-'newwindow' => '(otvara se u novom prozoru)',
-'cancel' => 'Odustani',
+'about' => 'O',
+'article' => 'Članak',
+'newwindow' => '(otvara se u novom prozoru)',
+'cancel' => 'Odustani',
+'moredotdotdot' => 'Više...',
+'mypage' => 'Moja stranica',
+'mytalk' => 'Moj razgovor',
+'anontalk' => 'Razgovor za ovu IP adresu',
+'navigation' => 'Orijentacija',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Nađi',
'qbbrowse' => 'Pregledaj',
'qbedit' => 'Uredi',
@@ -430,15 +453,35 @@ i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike]
'qbpageinfo' => 'O stranici',
'qbmyoptions' => 'Moje stranice',
'qbspecialpages' => 'Posebne stranice',
-'moredotdotdot' => 'Više...',
-'mypage' => 'Moja stranica',
-'mytalk' => 'Moj razgovor',
-'anontalk' => 'Razgovor za ovu IP adresu',
-'navigation' => 'Orijentacija',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metapodaci:',
+'faq' => 'Najčešća pitanja',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Dodaj temu',
+'vector-action-delete' => 'Izbriši',
+'vector-action-move' => 'Premjesti',
+'vector-action-protect' => 'Zaštiti',
+'vector-action-undelete' => 'Vrati',
+'vector-action-unprotect' => 'Ukloni zaštitu',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Stranica pomoći',
+'vector-namespace-image' => 'Datoteka',
+'vector-namespace-main' => 'Stranica',
+'vector-namespace-media' => 'Mediji',
+'vector-namespace-mediawiki' => 'Poruka',
+'vector-namespace-project' => 'Stranica projekta',
+'vector-namespace-special' => 'Posebna stranica',
+'vector-namespace-talk' => 'Razgovor',
+'vector-namespace-template' => 'Predložak',
+'vector-namespace-user' => 'Suradnička stranica',
+'vector-view-create' => 'Započni',
+'vector-view-edit' => 'Uredi',
+'vector-view-history' => 'Vidi stare izmjene',
+'vector-view-view' => 'Čitaj',
+'vector-view-viewsource' => 'Vidi izvor',
+'actions' => 'Akcije',
+'namespaces' => 'Imenski prostori',
+'variants' => 'Inačice',
'errorpagetitle' => 'Pogreška',
'returnto' => 'Vrati se na $1.',
@@ -488,18 +531,22 @@ i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike]
'otherlanguages' => 'Drugi jezici',
'redirectedfrom' => '(Preusmjereno s $1)',
'redirectpagesub' => 'Preusmjeravanje',
-'lastmodifiedat' => 'Datum zadnje promjene na ovoj stranici: $2, $1', # $1 date, $2 time
+'lastmodifiedat' => 'Datum zadnje promjene na ovoj stranici: $2, $1',
'viewcount' => 'Ova stranica je pogledana {{PLURAL:$1|$1 put|$1 puta}}.',
'protectedpage' => 'Zaštićena stranica',
'jumpto' => 'Skoči na:',
'jumptonavigation' => 'orijentacija',
'jumptosearch' => 'traži',
+'view-pool-error' => 'Ispričavamo se, poslužitelji su trenutačno preopterećeni.
+Previše suradnika pokušava vidjeti ovu stranicu.
+Molimo malo pričekajte prije nego što opet pokušate pristupiti ovoj stranici.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O projektu {{SITENAME}}',
'aboutpage' => 'Project:O_projektu_{{SITENAME}}',
'copyright' => 'Sadržaji se koriste u skladu s $1.',
-'copyrightpagename' => 'Autorska prava na projektu {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Autorska prava',
'currentevents' => 'Aktualno',
'currentevents-url' => 'Project:Novosti',
@@ -507,8 +554,6 @@ i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike]
'disclaimerpage' => 'Project:General_disclaimer',
'edithelp' => 'Kako uređivati stranicu',
'edithelppage' => 'Help:Kako_uređivati_stranicu',
-'faq' => 'Najčešća pitanja',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Pomoć',
'mainpage' => 'Glavna stranica',
'mainpage-description' => 'Glavna stranica',
@@ -588,10 +633,6 @@ Posljednji pokušaj upita je glasio:
"$1"
iz funkcije "$2".
Baza je vratila pogrešku "$3: $4"',
-'noconnect' => 'Oprostite! Wiki trenutačno ima tehničkih problema i ne može se povezati s bazom podataka.<br />
-$1',
-'nodb' => 'Nije bilo moguće odabrati bazu podataka $1',
-'cachederror' => 'Ova je verzija stranice iz međuspremnika i možda ne sadrži sve promjene.',
'laggedslavemode' => 'Upozorenje: na stranici se možda ne nalaze najnovije promjene.',
'readonly' => 'Baza podataka je zaključana',
'enterlockreason' => 'Upiši razlog zaključavanja i procjenu vremena otključavanja',
@@ -608,6 +649,8 @@ Ako to nije slučaj, možda se radi o softverskoj grešci. Molimo da u tom sluč
'readonly_lag' => 'Baza podataka je automatski zaključana dok se sekundarni bazni poslužitelji ne usklade s glavnim',
'internalerror' => 'Pogreška sustava',
'internalerror_info' => 'Interna pogreška: $1',
+'fileappenderrorread' => 'Nije se moglo pročitati "$1" tijekom dodavanja.',
+'fileappenderror' => 'Nije bilo moguće dodati "$1" u "$2".',
'filecopyerror' => 'Ne mogu kopirati datoteku "$1" u "$2".',
'filerenameerror' => 'Ne mogu preimenovati datoteku "$1" u "$2".',
'filedeleteerror' => 'Ne mogu obrisati datoteku "$1".',
@@ -617,7 +660,8 @@ Ako to nije slučaj, možda se radi o softverskoj grešci. Molimo da u tom sluč
'unexpected' => 'Neočekivana vrijednost: "$1"="$2".',
'formerror' => 'Pogreška: Ne mogu poslati podatke',
'badarticleerror' => 'Ovu radnju nije moguće izvesti s tom stranicom.',
-'cannotdelete' => 'Ne mogu obrisati navedenu stranicu ili sliku. (Moguće da je već obrisana.)',
+'cannotdelete' => 'Ne može se obrisati stranica ili datoteka "$1".
+Moguće je da ju je netko drugi već obrisao.',
'badtitle' => 'Loš naslov',
'badtitletext' => 'Navedeni naslov stranice nepravilan ili loše formirana interwiki poveznica.',
'perfcached' => 'Sljedeći podaci su iz međuspremnika i možda nisu najsvježiji:',
@@ -648,7 +692,6 @@ $2',
'virus-unknownscanner' => 'nepoznati antivirus:',
# Login and logout pages
-'logouttitle' => 'Odjava suradnika',
'logouttext' => "'''Odjavili ste se.'''
Možete nastaviti s korištenjem {{SITENAME}} neprijavljeni, ili se možete ponovo [[Special:UserLogin|prijaviti]] pod istim ili drugim imenom.
@@ -657,7 +700,6 @@ Neke se stranice mogu prikazivati kao da ste još uvijek prijavljeni, sve dok ne
Vaš je suradnički račun otvoren.
Ne zaboravite prilagoditi [[Special:Preferences|{{SITENAME}} postavke]].',
-'loginpagetitle' => 'Prijava suradnika',
'yourname' => 'Suradničko ime',
'yourpassword' => 'Lozinka:',
'yourpasswordagain' => 'Ponovno upišite lozinku',
@@ -668,6 +710,7 @@ Ne zaboravite prilagoditi [[Special:Preferences|{{SITENAME}} postavke]].',
'nav-login-createaccount' => 'Prijavi se',
'loginprompt' => 'Za prijavu na sustav {{SITENAME}} morate u pregledniku uključiti kolačiće (cookies).',
'userlogin' => 'Prijavi se / stvori račun',
+'userloginnocreate' => 'Prijavi se',
'logout' => 'Odjavi se',
'userlogout' => 'Odjavi se',
'notloggedin' => 'Niste prijavljeni',
@@ -680,28 +723,8 @@ Ne zaboravite prilagoditi [[Special:Preferences|{{SITENAME}} postavke]].',
'badretype' => 'Unesene lozinke nisu istovjetne.',
'userexists' => 'Uneseno suradničko ime već je u upotrebi.
Unesite neko drugo ime.',
-'youremail' => 'Vaša elektronska pošta *',
-'username' => 'Suradničko ime:',
-'uid' => 'Suradnički ID-broj:',
-'prefs-memberingroups' => 'Član {{PLURAL:$1|skupine|skupina}}:',
-'yourrealname' => 'Pravo ime (nije obvezno)*',
-'yourlanguage' => 'Jezik:',
-'yourvariant' => 'Inačica:',
-'yournick' => 'Vaš nadimak (za potpisivanje)',
-'badsig' => 'Kôd vašeg potpisa nije valjan; provjerite HTML tagove.',
-'badsiglength' => 'Vaš potpis je predugačak.
-Mora imati manje od $1 {{PLURAL:$1|znaka|znakova}}.',
-'yourgender' => 'Spol:',
-'gender-unknown' => 'Neodređeno',
-'gender-male' => 'Muški',
-'gender-female' => 'Ženski',
-'prefs-help-gender' => 'Mogućnost: softver koristi za ispravno oslovljavanje razlikujući spol. Ovaj podatak bit će javan.',
-'email' => 'Adresa elektroničke pošte *',
-'prefs-help-realname' => '* Pravo ime (nije obvezno): za pravnu atribuciju vaših doprinosa.',
'loginerror' => 'Pogreška u prijavi',
-'prefs-help-email' => 'E-mail adresa nije obvezna: ali omogućuje slanje nove lozinke e-mailom u slučaju da zaboravite svoju.
-Možete omogućiti drugima da vas kontaktiraju na suradničkoj stranici ili stranici za razgovor bez javnog otkrivanja vaše e-mail adrese.',
-'prefs-help-email-required' => 'Potrebno je navesti adresu e-pošte (e-mail).',
+'createaccounterror' => 'Ne može se stvoriti račun: $1',
'nocookiesnew' => "Suradnički račun je otvoren, ali niste uspješno prijavljeni. Naime, {{SITENAME}} koristi kolačiće (''cookies'') u procesu prijave. Isključili ste kolačiće. Molim uključite ih i pokušajte ponovo s vašim novim imenom i lozinkom.",
'nocookieslogin' => "{{SITENAME}} koristi kolačiće (''cookies'') u procesu prijave. Isključili ste kolačiće. Molim uključite ih i pokušajte ponovo.",
'noname' => 'Niste unijeli valjano suradničko ime.',
@@ -712,9 +735,11 @@ Suradnička imena su osjetljiva na veličinu slova.
Provjerite jeste li točno upisali, ili [[Special:UserLogin/signup|otvorite novi suradnički račun]].',
'nosuchusershort' => 'Ne postoji suradnik s imenom "<nowiki>$1</nowiki>". Provjerite vaš unos.',
'nouserspecified' => 'Molimo navedite suradničko ime.',
+'login-userblocked' => 'Ovaj suradnik je blokiran. Prijava nije dozvoljena.',
'wrongpassword' => 'Lozinka koju ste unijeli nije ispravna. Pokušajte ponovno.',
'wrongpasswordempty' => 'Niste unijeli lozinku. Pokušajte ponovno.',
-'passwordtooshort' => 'Vaša je lozinka nevaljana ili prekratka. Lozinka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znakova}} i mora biti različita od imena.',
+'passwordtooshort' => 'Lozinka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
+'password-name-match' => 'Vaša lozinka mora biti različita od vašeg suradničkog imena.',
'mailmypassword' => 'Pošalji mi novu lozinku',
'passwordremindertitle' => '{{SITENAME}}: nova lozinka.',
'passwordremindertext' => 'Netko je (vjerojatno vi, s IP adrese $1) zatražio novu lozinku za projekt {{SITENAME}} ($4).
@@ -726,6 +751,7 @@ Ukoliko niste zatražili novu lozinku, ili ste se sjetili stare lozinke i
više ju ne želite promijeniti, slobodno zanemarite ovu poruku i nastavite
koristiti staru lozinku.',
'noemail' => 'Suradnik "$1" nema zapisanu e-mail adresu.',
+'noemailcreate' => 'Morate navesti važeću e-mail adresu',
'passwordsent' => 'Nova je lozinka poslana na e-mail adresu suradnika "$1"',
'blocked-mailpassword' => 'Vašoj IP adresi je blokirano uređivanje stranica, a da bi se spriječila nedopuštena akcija, mogućnost zahtijevanja nove lozinke je također onemogućena.',
'eauthentsent' => 'Na navedenu adresu poslan je e-mail s potvrdom. Prije nego što pošaljemo daljnje poruke,
@@ -748,9 +774,11 @@ Molim unesite ispravno oblikovanu adresu ili ostavite polje praznim.',
'createaccount-text' => 'Netko je stvorio suradnički račun s vašom adresom elektronske pošte na {{SITENAME}} ($4) nazvan "$2", s lozinkom "$3". Trebali biste se prijaviti i odmah promijeniti lozinku.
Možete zanemariti ovu poruku, ako je suradnički račun stvoren nenamjerno.',
+'usernamehasherror' => 'Suradničko ime ne može sadržavati znakove #',
'login-throttled' => 'Nedavno ste se previše puta pokušali prijaviti.
Molimo Vas da pričekate prije nego što pokušate ponovo.',
'loginlanguagelabel' => 'Jezik: $1',
+'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer to izgleda kao da je poslan preko pokvarenog preglednika ili keširanog proxyja.',
# Password reset dialog
'resetpass' => 'Promijeni lozinku',
@@ -761,17 +789,13 @@ Molimo Vas da pričekate prije nego što pokušate ponovo.',
'retypenew' => 'Ponovno unesite lozinku',
'resetpass_submit' => 'Postavite lozinku i prijavite se',
'resetpass_success' => 'Lozinka uspješno postavljena! Prijava u tijeku...',
-'resetpass_bad_temporary' => 'Nevažeća privremena lozinka. Možda ste već uspješno promijenili svoju lozinku ili ste zatražili novu privremenu lozinku.',
'resetpass_forbidden' => 'Lozinka ne može biti promijenjena',
'resetpass-no-info' => 'Morate biti prijavljeni da biste izravno pristupili ovoj stranici.',
'resetpass-submit-loggedin' => 'Promijeni lozinku',
+'resetpass-submit-cancel' => 'Odustani',
'resetpass-wrong-oldpass' => 'Pogrešna privremena ili trenutačna lozinka.
Možda ste već uspješno promijenili vašu lozinku ili ste zatražili novu privremenu lozinku.',
'resetpass-temp-password' => 'Privremena lozinka:',
-'resetpass-log' => 'Evidencija poništavanja lozinki',
-'resetpass-logtext' => 'Slijedi evidencija suradnika kojima su administratori poništili lozinke.',
-'resetpass-logentry' => 'promijenjena lozinka suradnika $1',
-'resetpass-comment' => 'Razlog za poništavanje lozinke:',
# Edit page toolbar
'bold_sample' => 'Podebljani tekst',
@@ -845,7 +869,6 @@ Vaša trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo navedite ovaj broj
'blockededitsource' => "Tekst '''vaše izmjene''' na članku '''$1''' prikazan je ispod:",
'whitelistedittitle' => 'Za uređivanje stranice morate se prijaviti',
'whitelistedittext' => 'Za uređivanje stranice morate se $1.',
-'confirmedittitle' => 'Ovjera e-mail adrese nužna za uređivanje',
'confirmedittext' => 'Morate ovjeriti vašu e-mail adresu prije nego što vam bude omogućeno uređivanje. Molim unesite i ovjerite vašu e-mail adresu u [[Special:Preferences|suradničkim postavkama]].',
'nosuchsectiontitle' => 'Ne mogu pronaći odlomak',
'nosuchsectiontext' => 'Pokušali ste uređivati odlomak koji ne postoji.
@@ -867,10 +890,15 @@ Nakon prijave, lozinka za ovaj novi račun može biti promijenjena na stranici '
Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]
ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
+'noarticletext-nopermission' => 'Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]</span>.',
'userpage-userdoesnotexist' => 'Suradničko ime "$1" nije prijavljeno. Jeste li sigurni da želite stvoriti/uređivati ovu stranicu?',
+'userpage-userdoesnotexist-view' => 'Suradnički račun "$1" nije registriran.',
+'blocked-notice-logextract' => 'Ovaj suradnik je trenutačno blokiran.
+Posljednja stavka evidencije blokiranja navedena je niže kao napomena:',
'clearyourcache' => "'''Napomena:''' Nakon snimanja trebate očistiti međuspremnik svog preglednika kako biste vidjeli promjene.
'''Mozilla / Firefox / Safari:''' držite ''Shift'' i pritisnite ''Reload'', ili pritisnite ''Ctrl-F5'' ili ''Ctrl-R'' (''Cmd-R'' na Apple Macu); '''Konqueror:''' samo pritisnite dugme ''Reload'' ili pritisnite ''F5''; '''Opera:''' očistiti cache u ''Tools → Preferences;'' '''Internet Explorer:''' držite ''Ctrl'' i pritisnite ''Refresh'', ili pritisnite ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Savjet:''' Koristite dugme 'Pokaži kako će izgledati' za testiranje svog CSS/JS prije snimanja.",
+'usercssyoucanpreview' => "'''Savjet:''' Rabite dugme \"{{int:showpreview}}\" za testiranje svog CSS prije snimanja.",
+'userjsyoucanpreview' => "'''Savjet:''' Rabite dugme \"{{int:showpreview}}\" za testiranje svog novog JavaScripta prije snimanja.",
'usercsspreview' => "'''Ne zaboravite: samo isprobavate/pregledavate svoj suradnički CSS. Još nije snimljen!'''",
'userjspreview' => "'''Ne zaboravite: samo isprobavate/pregledavate svoj suradnički JavaScript, i da još nije snimljen!'''",
'userinvalidcssjstitle' => "'''Upozorenje:''' Nema sučelja pod imenom \"\$1\". Ne zaboravite da imena stranica s .css and .js kodom počinju malim slovom, npr. {{ns:user}}:Mate/monobook.css, a ne {{ns:user}}:Mate/Monobook.css.",
@@ -913,13 +941,16 @@ Molimo razmislite o rastavljanju stranice na manje odjeljke.',
promjene. Najbolje je da kopirate i zaljepite tekst u tekstualnu datoteku te je snimite za kasnije.'''
Administrator je zaključao bazu iz razloga: $1",
-'protectedpagewarning' => "'''UPOZORENJE: ova stranica je zaključana i mogu je uređivati samo suradnici s administratorskim pravima.'''",
-'semiprotectedpagewarning' => "'''Napomena:''' Ovu stranicu mogu uređivati samo prijavljeni suradnici.",
+'protectedpagewarning' => "'''UPOZORENJE: Ova stranica je zaključana i mogu je uređivati samo suradnici s administratorskim pravima.'''
+Posljednja stavka u evidenciji navedena je niže kao napomena:",
+'semiprotectedpagewarning' => "'''Napomena:''' Ova stranica je zaključana tako da je mogu uređivati samo prijavljeni suradnici.
+Posljednja stavka u evidenciji navedena je niže kao napomena:",
'cascadeprotectedwarning' => "'''UPOZORENJE:''' Ova stranica je zaključana i mogu je uređivati samo suradnici s administratorskim pravima, jer je uključena u {{PLURAL:\$1|slijedeću stranicu|slijedeće stranice}} koje su zaštićene \"prenosivom\" zaštitom:",
-'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana i samo je suradnici sa [[Special:ListGroupRights|slijedećim pravima]] mogu stvoriti.'''",
-'templatesused' => 'Predlošci korišteni na ovoj stranici:',
-'templatesusedpreview' => 'Predlošci koji se koriste u ovom predpregledu:',
-'templatesusedsection' => 'Predlošci koji se koriste u odjeljku:',
+'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana i samo je suradnici s [[Special:ListGroupRights|dodatnim pravima]] mogu stvoriti.'''
+Posljednja stavka u evidenciji navedena je niže kao napomena:",
+'templatesused' => '{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} na ovoj stranici:',
+'templatesusedpreview' => '{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} u ovom predpregledu:',
+'templatesusedsection' => '{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} u ovom odjeljku:',
'template-protected' => '(zaštićen)',
'template-semiprotected' => '(djelomično zaštićen)',
'hiddencategories' => 'Ova stranica je član {{PLURAL:$1|1 skrivene kategorija|$1 skrivene kategorije|$1 skrivenih kategorija}}:',
@@ -927,16 +958,18 @@ Administrator je zaključao bazu iz razloga: $1",
'nocreatetext' => 'Na ovom je projektu ograničeno otvaranje novih stranica.
Možete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti suradnički račun]].',
'nocreate-loggedin' => 'Nemate ovlasti za stvaranje novih stranica.',
+'sectioneditnotsupported-title' => 'Uređivanje odjeljka nije podržano',
+'sectioneditnotsupported-text' => 'Uređivanje odjeljka nije podržano na ovoj stranici',
'permissionserrors' => 'Pogreška u pravima',
'permissionserrorstext' => 'Nemate ovlasti za tu radnju iz sljedećih {{PLURAL:$1|razlog|razloga}}:',
'permissionserrorstext-withaction' => 'Nemate dopuštenje za $2, iz {{PLURAL:$1|razloga|razloga}}:',
-'recreate-deleted-warn' => "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''
+'recreate-moveddeleted-warn' => "'''Upozorenje: Ponovno stvarate stranicu koja je prethodno bila izbrisana.'''
-Razmotrite je li nastavljanje uređivanja ove stranice u skladu s pravilima.
-Za vašu informaciju slijedi evidencija brisanja s obrazloženjem za prethodno brisanje:",
-'deleted-notice' => 'Ova stranica je bila izbrisana.
-Evidencija brisanja za ovu stranicu je pokazana niže.',
-'deletelog-fulllog' => 'Vidi potpunu evidenciju',
+Razmotrite je li prikladno nastaviti s uređivanje ove stranice.
+Za vašu informaciju slijedi evidencija brisanja i premještanja za ovu stranicu:",
+'moveddeleted-notice' => 'Ova stranica je bila izbrisana.
+Evidencija brisanja i evidencija premještanja za ovu stranicu je prikazana niže.',
+'log-fulllog' => 'Prikaži cijelu evidenciju',
'edit-hook-aborted' => 'Uređivanje prekinuto kukom.
Razlog nije ponuđen.',
'edit-gone-missing' => 'Stranica nije spremljena.
@@ -958,6 +991,7 @@ Neki predlošci neće biti uključeni.',
'post-expand-template-argument-category' => 'Stranice koje sadrže izostavljene argumente za predloške',
'parser-template-loop-warning' => 'Otkrivena petlja predloška: [[$1]]',
'parser-template-recursion-depth-warning' => 'Dubina rekurzije predloška je izvan granice ($1)',
+'language-converter-depth-warning' => 'Prekoračena granica dubine jezičnog pretvarača ($1)',
# "Undo" feature
'undo-success' => 'Izmjena je uklonjena (tekst u okviru ispod ne sadrži zadnju izmjenu). Molim sačuvajte stranicu (provjerite sažetak).',
@@ -977,7 +1011,7 @@ Razlog koji je dao/la $3 je ''$2''",
'currentrev' => 'Trenutačna inačica',
'currentrev-asof' => 'Trenutačna izmjena od $1',
'revisionasof' => 'Inačica od $1',
-'revision-info' => 'Inačica od $1 koju je unio/unijela $2', # Additionally available: $3: revision id
+'revision-info' => 'Inačica od $1 koju je unio/unijela $2',
'previousrevision' => '←Starija inačica',
'nextrevision' => 'Novija inačica→',
'currentrevisionlink' => 'vidi trenutačnu inačicu',
@@ -989,7 +1023,7 @@ Razlog koji je dao/la $3 je ''$2''",
'histlegend' => 'Uputa: (sad) = razlika od trenutačne inačice,
(pret) = razlika od prethodne inačice, m = manja promjena',
'history-fieldset-title' => 'Pretraži povijest',
-'deletedrev' => '[izbrisano]',
+'history-show-deleted' => 'Samo izbrisane',
'histfirst' => 'Najstarije',
'histlast' => 'Najnovije',
'historysize' => '({{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}})',
@@ -998,71 +1032,109 @@ Razlog koji je dao/la $3 je ''$2''",
# Revision feed
'history-feed-title' => 'Povijest promjena',
'history-feed-description' => 'Povijest promjena ove stranice na wikiju',
-'history-feed-item-nocomment' => '$1 u (test) $2', # user at time
+'history-feed-item-nocomment' => '$1 u (test) $2',
'history-feed-empty' => 'Tražena stranica ne postoji.
Stranica je vjerojatno prethodno izbrisana s wikija, ili preimenovana.
Pokušajte [[Special:Search|pretražiti]] važnije nove stranice na wikiju.',
# Revision deletion
-'rev-deleted-comment' => '(komentar uklonjen)',
-'rev-deleted-user' => '(suradničko ime uklonjeno)',
-'rev-deleted-event' => '(zapis uklonjen)',
-'rev-deleted-text-permission' => 'Ova je izmjena uklonjena iz javnoga arhiva.
-Detalji se vjerojatno nalaze u [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} evidenciji brisanja].',
-'rev-deleted-text-view' => 'Ova je izmjena uklonjena iz javnoga arhiva.
-Kao administrator na ovom projektu možete ju vidjeti;
-detalji se vjerojatno nalaze u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].',
-'rev-deleted-no-diff' => "Ne možete vidjeti ovu inačicu zbog toga što je jedna od izmjena '''izbrisana'''.
-Možda postoji više informacija u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
-'rev-deleted-unhide-diff' => "Jedna od inačica ove izmjene je '''izbrisana'''.
-Detalji se vjerojatno nalaze u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].
-Kao administrator možete i dalje [$1 pregledati ove izmjene] ukoliko želite nastaviti.",
-'rev-delundel' => 'pokaži/skrij',
-'revisiondelete' => 'Izbriši/vrati izmjene',
-'revdelete-nooldid-title' => 'Nema tražene izmjene',
-'revdelete-nooldid-text' => 'Niste naveli željenu izmjenu (izmjene), željena izmjena ne postoji, ili pokušavate sakriti trenutačnu izmjenu.',
-'revdelete-nologtype-title' => 'Nije zadana vrsta evidencije',
-'revdelete-nologtype-text' => 'Niste izabrali vrstu evidencije nad kojom se vrši ova akcija.',
-'revdelete-toomanytargets-title' => 'Previše izbora',
-'revdelete-toomanytargets-text' => 'Izabrali ste previše stavki za ovu akciju (smanjite njihov broj).',
-'revdelete-nologid-title' => 'Nevaljani zapis u evidenciji',
-'revdelete-nologid-text' => 'Niste naveli ciljnu evidenciju ili navedeni zapis ne postoji.',
-'revdelete-selected' => "'''{{PLURAL:$2|Odabrana izmjena|Odabrane izmjene|Odabrane izmjene}} stranice [[$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Odabrani zapis u evidenciji|Odabrani zapisi u evidenciji}}:'''",
-'revdelete-text' => "'''Obrisane će se izmjene i dalje nalaziti u javnom popisu izmjena, ali njihov sadržaj neće biti dostupan javnosti.'''
-Drugi administratori ovoga projekta ({{SITENAME}}) moći će i dalje pristupiti skrivenom sadržaju i vratiti ga u javni pristup putem ovog sučelja, osim ako operateri na projektu nisu postavili dodatna ograničenja.
-
-Molimo potvrdite da to želite, da razumijete posljedice, i da to radite u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama projekta]].",
-'revdelete-suppress-text' => "Sklanjanje uređivanja treba raditi '''iznimno''' u slijedećih par slučajeva:
+'rev-deleted-comment' => '(komentar uklonjen)',
+'rev-deleted-user' => '(suradničko ime uklonjeno)',
+'rev-deleted-event' => '(zapis uklonjen)',
+'rev-deleted-user-contribs' => '[suradničko ime ili IP adresa uklonjeni - izmjena skrivena u doprinosima]',
+'rev-deleted-text-permission' => "Ova izmjena je '''izbrisana'''.
+Detalji se vjerojatno nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
+'rev-deleted-text-unhide' => "Ova izmjena je '''izbrisana.'''
+Detalji se vjerojatno nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja]. Kao administrator, možete i dalje [$1 vidjeti ovu izmjenu] ukoliko želite nastaviti.",
+'rev-suppressed-text-unhide' => "Ova izmjena stranice je '''skrivena'''. Vjerojatno postoji više podataka u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} evidenciji skrivanja].
+Kao administrator možete [$1 vidjeti ovu izmjenu] ukoliko želite nastaviti.",
+'rev-deleted-text-view' => "Ova izmjena je '''izbrisana'''.
+Kao administrator na ovom projektu možete ju vidjeti; detalji se vjerojatno nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
+'rev-suppressed-text-view' => "Ova izmjena stranice je '''skrivena'''.
+Kao administrator možete ju pregledati; vjerojatno postoji više podataka u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} evidenciji skrivanja].",
+'rev-deleted-no-diff' => "Ne možete vidjeti ovu inačicu zbog toga što je jedna od izmjena '''izbrisana'''.
+Možda postoji više informacija u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
+'rev-suppressed-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.",
+'rev-deleted-unhide-diff' => "Jedna od inačica ove izmjene je '''izbrisana'''.
+Detalji se vjerojatno nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja]. Kao administrator, možete i dalje [$1 vidjeti ovu izmjenu] ukoliko želite nastaviti.",
+'rev-suppressed-unhide-diff' => "Jedna od revizija ove razlike je '''uklonjena'''.
+Postoji mnogo detalja u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku uklanjanja].
+Kao administrator i dalje možete [$1 vidjeti ove razlike] ako želite da nastavite.",
+'rev-deleted-diff-view' => "Jedna od izmjena je '''izbrisana'''.
+Kao administrator možete ju vidjeti; detalji se vjerojatno nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
+'rev-suppressed-diff-view' => "Jedna od izmjena stranice je '''skrivena'''.
+Kao administrator možete ju pregledati; vjerojatno postoji više podataka u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} evidenciji skrivanja].",
+'rev-delundel' => 'pokaži/skrij',
+'rev-showdeleted' => 'prikaži',
+'revisiondelete' => 'Izbriši/vrati izmjene',
+'revdelete-nooldid-title' => 'Nema tražene izmjene',
+'revdelete-nooldid-text' => 'Niste naveli željenu izmjenu (izmjene), željena izmjena ne postoji, ili pokušavate sakriti trenutačnu izmjenu.',
+'revdelete-nologtype-title' => 'Nije zadana vrsta evidencije',
+'revdelete-nologtype-text' => 'Niste izabrali vrstu evidencije nad kojom se vrši ova akcija.',
+'revdelete-nologid-title' => 'Nevaljani zapis u evidenciji',
+'revdelete-nologid-text' => 'Niste naveli ciljnu evidenciju ili navedeni zapis ne postoji.',
+'revdelete-no-file' => 'Navedena datoteka ne postoji.',
+'revdelete-show-file-confirm' => 'Jeste li sigurni da želite pregledati izbrisanu inačicu datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Odabrana izmjena|Odabrane izmjene|Odabrane izmjene}} stranice [[$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Odabrani zapis u evidenciji|Odabrani zapisi u evidenciji}}:'''",
+'revdelete-text' => "'''Obrisane će se izmjene i dalje nalaziti u javnom popisu izmjena, ali njihov sadržaj neće biti dostupan javnosti.'''
+Drugi administratori ovoga projekta ({{SITENAME}}) moći će i dalje pristupiti skrivenom sadržaju i vratiti ga u javni pristup putem ovog sučelja, osim ako operateri na projektu nisu postavili dodatna ograničenja.",
+'revdelete-confirm' => 'Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
+'revdelete-suppress-text' => "Sklanjanje uređivanja treba raditi '''iznimno''' u slijedećih par slučajeva:
* Privatne informacije neprilične javnom mediju tipa
*: ''kućna adresa i broj telefona, JMBG ili OIB, itd.''",
-'revdelete-legend' => 'Postavi ograničenja na izmjenu:',
-'revdelete-hide-text' => 'Sakrij tekst izmjene',
-'revdelete-hide-name' => 'Sakrij uređivanje i njegov predmet',
-'revdelete-hide-comment' => 'Sakrij komentar (sažetak)',
-'revdelete-hide-user' => 'Sakrij suradnikovo ime/IP adresu',
-'revdelete-hide-restricted' => 'Postavi ograničenja i za administratore kao i za ostale suradnike',
-'revdelete-suppress' => 'Sakrij podatke od administratora i ostalih suradnika',
-'revdelete-hide-image' => 'Sakrij sadržaj datoteke (sakrij sliku)',
-'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim izmjenama',
-'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Izvrši brisanje/sakrivanje',
-'revdelete-logentry' => 'promijenjena vidljivost izmjene za [[$1]]',
-'logdelete-logentry' => 'promijenjena vidljivost uređivanja [[$1]]',
-'revdelete-success' => "'''Vidljivost izmjene uspješno ažurirana.'''",
-'logdelete-success' => "'''Vidljivost uređivanja uspješno postavljena.'''",
-'revdel-restore' => 'Promijeni dostupnost',
-'pagehist' => 'Povijest stranice',
-'deletedhist' => 'Obrisana povijest',
-'revdelete-content' => 'sadržaj',
-'revdelete-summary' => 'sažetak',
-'revdelete-uname' => 'suradničko ime',
-'revdelete-restricted' => 'primijenjeno ograničenje za administratore',
-'revdelete-unrestricted' => 'uklonjeno ograničenje za administratore',
-'revdelete-hid' => 'sakrij $1',
-'revdelete-unhid' => 'otkrij $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|slučaj|slučaja}}',
+'revdelete-legend' => 'Postavi ograničenja na izmjenu:',
+'revdelete-hide-text' => 'Sakrij tekst izmjene',
+'revdelete-hide-image' => 'Sakrij sadržaj datoteke (sakrij sliku)',
+'revdelete-hide-name' => 'Sakrij uređivanje i njegov predmet',
+'revdelete-hide-comment' => 'Sakrij komentar (sažetak)',
+'revdelete-hide-user' => 'Sakrij suradnikovo ime/IP adresu',
+'revdelete-hide-restricted' => 'Postavi ograničenja i za administratore kao i za ostale suradnike',
+'revdelete-radio-same' => '(ne mijenjaj)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Sakrij podatke od administratora i ostalih suradnika',
+'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim izmjenama',
+'revdelete-log' => 'Razlog:',
+'revdelete-submit' => 'Primijeni na {{PLURAL:$1|odabranu inačicu|odabrane inačice}}',
+'revdelete-logentry' => 'promijenjena vidljivost izmjene za [[$1]]',
+'logdelete-logentry' => 'promijenjena vidljivost uređivanja [[$1]]',
+'revdelete-success' => "'''Vidljivost izmjene uspješno ažurirana.'''",
+'revdelete-failure' => "'''Vidljivost inačice nije mogla biti ažurirana:'''
+$1",
+'logdelete-success' => "'''Vidljivost uređivanja uspješno postavljena.'''",
+'logdelete-failure' => "'''Vidljivost evidencije ne može biti postavljena:'''
+$1",
+'revdel-restore' => 'Promijeni dostupnost',
+'pagehist' => 'Povijest stranice',
+'deletedhist' => 'Obrisana povijest',
+'revdelete-content' => 'sadržaj',
+'revdelete-summary' => 'sažetak',
+'revdelete-uname' => 'suradničko ime',
+'revdelete-restricted' => 'primijenjeno ograničenje za administratore',
+'revdelete-unrestricted' => 'uklonjeno ograničenje za administratore',
+'revdelete-hid' => 'sakrij $1',
+'revdelete-unhid' => 'otkrij $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|slučaj|slučaja}}',
+'revdelete-hide-current' => 'Greška u skrivanju stavke datirane $2, $1: ovo je trenutačna inačica. Ne može biti skrivena.',
+'revdelete-show-no-access' => 'Greška u prikazivanju stavke od $2, $1: ova stavka je označena kao "ograničeno".
+Nemate pristup do nje.',
+'revdelete-modify-no-access' => 'Greška pri izmjeni stavke od $2, $1: ova stavka je označena kao "ograničeno".
+Nemate pristup do nje.',
+'revdelete-modify-missing' => 'Greška pri izmjeni izmjene broj $1: nedostaje u bazi!',
+'revdelete-no-change' => "'''Upozorenje:''' stavka od $2, $1 već ima tražene postavke vidljivosti.",
+'revdelete-concurrent-change' => 'Greška pri izmjeni stavke od $2, $1: izgleda da je njen status promijenio netko drugi dok ste ju pokušavali mijenjati.
+Provjerite evidencije.',
+'revdelete-only-restricted' => 'Greška pri skrivanju stavke od dana $2, $1: ne možete ukloniti stavke od pregledavanja administratora bez da odaberete neku od drugih mogućnosti vidljivosti.',
+'revdelete-reason-dropdown' => '*Uobičajeni razlozi brisanja
+** Kršenje autorskih prava
+** Neprimjereni osobni podaci',
+'revdelete-otherreason' => 'Drugi/dodatni razlog:',
+'revdelete-reasonotherlist' => 'Drugi razlog',
+'revdelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'revdelete-offender' => 'Autor revizije:',
# Suppression log
'suppressionlog' => 'Evidencije sakrivanja',
@@ -1101,67 +1173,13 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'mergelogpagetext' => 'Slijedi popis posljednjih spajanja povijesti stranica.',
# Diffs
-'history-title' => 'Povijest izmjena stranice "$1"',
-'difference' => '(Usporedba među inačicama)',
-'lineno' => 'Redak $1:',
-'compareselectedversions' => 'Usporedi odabrane inačice',
-'visualcomparison' => 'Prikazivanje razlike',
-'wikicodecomparison' => 'Wikitekst usporedba',
-'editundo' => 'ukloni ovu izmjenu',
-'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međuinačica|Nisu prikazane $1 međuinačice|Nije prikazano $1 međuinačica}})',
-'diff-movedto' => 'dodano: $1',
-'diff-styleadded' => 'dodano oblikovanje $1',
-'diff-added' => 'dodano $1',
-'diff-changedto' => 'promijenjeno u: $1',
-'diff-movedoutof' => 'uklonjeno: $1',
-'diff-styleremoved' => 'uklonjeno oblikovanje $1',
-'diff-removed' => 'uklonjeno $1',
-'diff-changedfrom' => 'promijenjeno iz: $1',
-'diff-src' => 'izvor',
-'diff-withdestination' => 's ciljem $1',
-'diff-with' => '&#32;sa $1 $2',
-'diff-with-final' => '&#32;i $1 $2',
-'diff-width' => 'širina',
-'diff-height' => 'visina',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''quote'''",
-'diff-h1' => "'''naslov (razina 1)'''",
-'diff-h2' => "'''naslov (razina 2)'''",
-'diff-h3' => "'''naslov (razina 3)'''",
-'diff-h4' => "'''naslov (razina 4)'''",
-'diff-h5' => "'''naslov (razina 5)'''",
-'diff-pre' => "'''predformatirani blok'''",
-'diff-div' => "'''odjeljak'''",
-'diff-ul' => "'''neuređeni popis'''",
-'diff-ol' => "'''uređeni popis'''",
-'diff-li' => "'''popis'''",
-'diff-table' => "'''tablica'''",
-'diff-tbody' => "'''sadržaj tablice'''",
-'diff-tr' => "'''red'''",
-'diff-td' => "'''polje'''",
-'diff-th' => "'''naslov'''",
-'diff-br' => "'''prekid'''",
-'diff-hr' => "'''vodoravna crta'''",
-'diff-code' => "'''računalni kod'''",
-'diff-dl' => "'''popis definicija'''",
-'diff-dt' => "'''pojam definicije'''",
-'diff-dd' => "'''značenje'''",
-'diff-input' => "'''input'''",
-'diff-form' => "'''form'''",
-'diff-img' => "'''slika'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''poveznica'''",
-'diff-i' => "'''kosa slova'''",
-'diff-b' => "'''masna slova'''",
-'diff-strong' => "'''strong'''",
-'diff-em' => "'''isticanje'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''velika slova'''",
-'diff-del' => "'''obrisano'''",
-'diff-tt' => "'''jednaka širina'''",
-'diff-sub' => "'''potpis'''",
-'diff-sup' => "'''natpis'''",
-'diff-strike' => "'''precrtano'''",
+'history-title' => 'Povijest izmjena stranice "$1"',
+'difference' => '(Usporedba među inačicama)',
+'lineno' => 'Redak $1:',
+'compareselectedversions' => 'Usporedi odabrane inačice',
+'showhideselectedversions' => 'Otkrij/sakrij odabrane izmjene',
+'editundo' => 'ukloni ovu izmjenu',
+'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međuinačica|Nisu prikazane $1 međuinačice|Nije prikazano $1 međuinačica}})',
# Search results
'searchresults' => 'Rezultati pretrage',
@@ -1169,28 +1187,25 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'searchresulttext' => 'Za više obavijesti o pretraživanju projekta {{SITENAME}} vidi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje povezuju na "$1"]])',
'searchsubtitleinvalid' => 'Za upit "$1"',
-'noexactmatch' => "'''Ne postoji stranica naziva \"\$1\".''' Možete [[:\$1|kreirati tu stranicu]].",
-'noexactmatch-nocreate' => "'''Nema stranice s imenom: \"\$1\".'''",
'toomanymatches' => 'Preveliki broj rezultata, molimo probajte drukčiji upit',
'titlematches' => 'Pronađene stranice prema naslovu',
'notitlematches' => 'Nema pronađenih stranica prema naslovu',
'textmatches' => 'Pronađene stranice prema tekstu članka',
'notextmatches' => 'Nema pronađenih stranica prema tekstu članka',
-'prevn' => 'prethodnih $1',
-'nextn' => 'sljedećih $1',
+'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
+'nextn' => 'sljedećih {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|prethodni rezultat|prethodna rezultata|prethodnih rezultata}}',
'nextn-title' => '$1 {{PLURAL:$1|sljedeći rezultat|sljedeća rezultata|sljedećih rezultata}}',
'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici',
-'viewprevnext' => 'Vidi ($1) ($2) ($3).',
+'viewprevnext' => 'Vidi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Mogućnosti pretraživanja',
'searchmenu-exists' => "* Stranica '''[[$1]]'''",
'searchmenu-new' => "'''Stvori stranicu \"[[:\$1]]\" na ovoj wiki!'''",
'searchhelp-url' => 'Help:Pomoć',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pretraži stranice s ovim prefiksom]]',
'searchprofile-articles' => 'Stranice sa sadržajem',
-'searchprofile-articles-and-proj' => 'Stranice projekta i sa sadržajem',
-'searchprofile-project' => 'Stranice projekta',
-'searchprofile-images' => 'Datoteke',
+'searchprofile-project' => 'Pomoć i stranice projekta',
+'searchprofile-images' => 'Multimedija',
'searchprofile-everything' => 'Sve',
'searchprofile-advanced' => 'Napredno',
'searchprofile-articles-tooltip' => 'Traži u $1',
@@ -1198,8 +1213,6 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'searchprofile-images-tooltip' => 'Traži datoteke',
'searchprofile-everything-tooltip' => 'Pretraži sav sadržaj (uključujući i stranice za razgovor)',
'searchprofile-advanced-tooltip' => 'Traži u zadanom imenskom prostoru',
-'prefs-search-nsdefault' => 'Pretraži koristeći zadano:',
-'prefs-search-nscustom' => 'Pretraži korisničke imenske prostore:',
'search-result-size' => '$1 ({{PLURAL:$2|1 riječ|$2 riječi}})',
'search-result-score' => 'Povezanost: $1%',
'search-redirect' => '(preusmjeravanje $1)',
@@ -1212,11 +1225,12 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'search-mwsuggest-disabled' => 'nema prijedloga',
'search-relatedarticle' => 'Povezano',
'mwsuggest-disable' => 'Isključi AJAX prijedloge',
+'searcheverything-enable' => 'Traži u svim imenskim prostorima',
'searchrelated' => 'povezano',
'searchall' => 'sve',
'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''$3''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}}, počevši s brojem '''$2'''.",
-'showingresultstotal' => "Rezultati pretraživanja {{PLURAL:$4| '''$1''' od '''$3'''| '''$1 - $2''' od '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
'nonefound' => "'''Napomena''': Glavne postavke pretražuju samo određene imenske prostore. Ako želite pretraživati sve, dodajte prefiks '''all:''' ispred traženog sadržaja (ovo uključuje stranice za razgovor, predloške i sl.), ili koristite prefiks željenog imenskog prostora.",
'search-nonefound' => 'Ne postoje rezultati koji se podudaraju s upitom.',
'powersearch' => 'Traženje',
@@ -1224,111 +1238,147 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'powersearch-ns' => 'Traži u imenskom prostoru:',
'powersearch-redir' => 'Prikaži preusmjerenja',
'powersearch-field' => 'Traži za',
+'powersearch-togglelabel' => 'Uključi:',
+'powersearch-toggleall' => 'Sve',
+'powersearch-togglenone' => 'Ništa',
'search-external' => 'Vanjski pretraživač',
'searchdisabled' => '<p>Oprostite! Pretraga po cjelokupnoj bazi je zbog bržeg rada projekta {{SITENAME}} trenutačno onemogućena. Možete se poslužiti tražilicom Google.</p>',
+# Quickbar
+'qbsettings' => 'Traka',
+'qbsettings-none' => 'Bez',
+'qbsettings-fixedleft' => 'Lijevo nepomično',
+'qbsettings-fixedright' => 'Desno nepomično',
+'qbsettings-floatingleft' => 'Lijevo leteće',
+'qbsettings-floatingright' => 'Desno leteće',
+
# Preferences page
-'preferences' => 'Postavke',
-'mypreferences' => 'Moje postavke',
-'prefs-edits' => 'Broj vaših uređivanja:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} prijavljeni]</span> za podešavanje suradničkih postavki.',
-'prefsreset' => 'Postavke su vraćene na prvotne vrijednosti.',
-'qbsettings' => 'Traka',
-'qbsettings-none' => 'Bez',
-'qbsettings-fixedleft' => 'Lijevo nepomično',
-'qbsettings-fixedright' => 'Desno nepomično',
-'qbsettings-floatingleft' => 'Lijevo leteće',
-'qbsettings-floatingright' => 'Desno leteće',
-'changepassword' => 'Promjena lozinke',
-'skin' => 'Izgled',
-'skin-preview' => 'Pregled',
-'math' => 'Prikaz matematičkih formula',
-'dateformat' => 'Format datuma',
-'datedefault' => 'Nemoj postaviti',
-'datetime' => 'Datum i vrijeme',
-'math_failure' => 'Obrada nije uspjela.',
-'math_unknown_error' => 'nepoznata pogreška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'rječnička pogreška (lexing error)',
-'math_syntax_error' => 'sintaksna pogreška',
-'math_image_error' => 'Konverzija u PNG nije uspjela; provjerite jesu li dobro instalirani latex, dvips, gs, i convert',
-'math_bad_tmpdir' => 'Ne mogu otvoriti ili pisati u privremeni direktorij za matematiku',
-'math_bad_output' => 'Ne mogu otvoriti ili pisati u odredišni direktorij za matematiku',
-'math_notexvc' => 'Nedostaje izvršna datoteka texvc-a; pogledajte math/README za postavke.',
-'prefs-personal' => 'Podaci o suradniku',
-'prefs-rc' => 'Nedavne promjene i kratki članci',
-'prefs-watchlist' => 'Praćene stranice',
-'prefs-watchlist-days' => 'Broj dana koji će se prikazati na popisu praćenja:',
-'prefs-watchlist-days-max' => '(maksimalno 7 dana)',
-'prefs-watchlist-edits' => 'Broj uređivanja koji će se prikazati na proširenom popisu praćenja:',
-'prefs-watchlist-edits-max' => '(maksimalni broj: 1000)',
-'prefs-misc' => 'Razno',
-'prefs-resetpass' => 'Promijeni lozinku',
-'saveprefs' => 'Spremi',
-'resetprefs' => 'Vrati na prvotne postavke',
-'restoreprefs' => 'Vrati sve postavke na prvotno zadane',
-'textboxsize' => 'Širina okvira za uređivanje',
-'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
-'rows' => 'Redova',
-'columns' => 'Stupaca',
-'searchresultshead' => 'Prikaz rezultata pretrage',
-'resultsperpage' => 'Koliko pogodaka na jednoj stranici',
-'contextlines' => 'Koliko redova teksta po pogotku',
-'contextchars' => 'Koliko znakova po retku',
-'stub-threshold' => 'Prag za formatiranje poput <a href="#" class="stub">poveznice mrve</a>:',
-'recentchangesdays' => 'Broj dana prikazanih u nedavnim promjenama:',
-'recentchangesdays-max' => '(maksimalno $1 {{PLURAL:$1|dan|dana}})',
-'recentchangescount' => 'Broj izmjena za prikaz u nedavnim promjenama, povijesti stranice, i u evidencijama, po glavnom:',
-'savedprefs' => 'Vaše postavke su sačuvane.',
-'timezonelegend' => 'Vremenska zona:',
-'timezonetext' => 'Unesite razliku između vašeg lokalnog vremena i vremena na poslužitelju (UTC).',
-'localtime' => 'Lokalno vrijeme:',
-'timezoneselect' => 'Vremenska zona:',
-'timezoneuseserverdefault' => 'Koristi vrijeme na poslužitelji',
-'timezoneuseoffset' => 'Drugo (odredite razliku)',
-'timezoneoffset' => 'Razlika¹:',
-'servertime' => 'Vrijeme na poslužitelju:',
-'guesstimezone' => 'Vrijeme dobiveno od preglednika',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantski ocean',
-'timezoneregion-australia' => 'Australija',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indijski ocean',
-'timezoneregion-pacific' => 'Tihi ocean',
-'allowemail' => 'Omogući primanje e-maila od drugih suradnika',
-'prefs-searchoptions' => 'Način traženja',
-'prefs-namespaces' => 'Imenski prostori',
-'defaultns' => 'Ako ne navedem drugačije, traži u ovim prostorima:',
-'default' => 'prvotno',
-'files' => 'Datoteke',
-'prefs-custom-css' => 'Prilagođen CSS',
-'prefs-custom-js' => 'Prilagođen JS',
+'preferences' => 'Postavke',
+'mypreferences' => 'Moje postavke',
+'prefs-edits' => 'Broj vaših uređivanja:',
+'prefsnologin' => 'Niste prijavljeni',
+'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> za podešavanje suradničkih postavki.',
+'changepassword' => 'Promjena lozinke',
+'prefs-skin' => 'Izgled',
+'skin-preview' => 'Pregled',
+'prefs-math' => 'Prikaz matematičkih formula',
+'datedefault' => 'Nemoj postaviti',
+'prefs-datetime' => 'Datum i vrijeme',
+'prefs-personal' => 'Podaci o suradniku',
+'prefs-rc' => 'Nedavne promjene i kratki članci',
+'prefs-watchlist' => 'Praćene stranice',
+'prefs-watchlist-days' => 'Broj dana koji će se prikazati na popisu praćenja:',
+'prefs-watchlist-days-max' => '(maksimalno 7 dana)',
+'prefs-watchlist-edits' => 'Broj uređivanja koji će se prikazati na proširenom popisu praćenja:',
+'prefs-watchlist-edits-max' => '(maksimalni broj: 1000)',
+'prefs-watchlist-token' => 'Token popisa praćenja:',
+'prefs-misc' => 'Razno',
+'prefs-resetpass' => 'Promijeni lozinku',
+'prefs-email' => 'Mogućnosti e-maila',
+'prefs-rendering' => 'Izgled',
+'saveprefs' => 'Spremi',
+'resetprefs' => 'Vrati na prvotne postavke',
+'restoreprefs' => 'Vrati sve postavke na prvotno zadane',
+'prefs-editing' => 'Širina okvira za uređivanje',
+'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
+'rows' => 'Redova',
+'columns' => 'Stupaca',
+'searchresultshead' => 'Prikaz rezultata pretrage',
+'resultsperpage' => 'Koliko pogodaka na jednoj stranici',
+'contextlines' => 'Koliko redova teksta po pogotku',
+'contextchars' => 'Koliko znakova po retku',
+'stub-threshold' => 'Prag za formatiranje poput <a href="#" class="stub">poveznice mrve</a>:',
+'recentchangesdays' => 'Broj dana prikazanih u nedavnim promjenama:',
+'recentchangesdays-max' => '(maksimalno $1 {{PLURAL:$1|dan|dana}})',
+'recentchangescount' => 'Broj izmjena za prikaz kao zadano:',
+'prefs-help-recentchangescount' => 'Ovo uključuje nedavne promjene, stare izmjene, i evidencije.',
+'prefs-help-watchlist-token' => 'Popunjavanjem ovog polja tajnim ključem generirat će se RSS redak za Vaš popis praćenja. Svatko tko zna ključ moći će čitati Vaš popis praćenih stranica, slijedom toga odaberite sigurnu vrijednost. Ovdje su nasumično generirane vrijednosti koje možete rabiti: $1',
+'savedprefs' => 'Vaše postavke su sačuvane.',
+'timezonelegend' => 'Vremenska zona:',
+'localtime' => 'Lokalno vrijeme:',
+'timezoneuseserverdefault' => 'Koristi vrijeme na poslužitelji',
+'timezoneuseoffset' => 'Drugo (odredite razliku)',
+'timezoneoffset' => 'Razlika¹:',
+'servertime' => 'Vrijeme na poslužitelju:',
+'guesstimezone' => 'Vrijeme dobiveno od preglednika',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantski ocean',
+'timezoneregion-australia' => 'Australija',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indijski ocean',
+'timezoneregion-pacific' => 'Tihi ocean',
+'allowemail' => 'Omogući primanje e-maila od drugih suradnika',
+'prefs-searchoptions' => 'Način traženja',
+'prefs-namespaces' => 'Imenski prostori',
+'defaultns' => 'Ako nije navedeno drugačije, traži u ovim prostorima:',
+'default' => 'prvotno',
+'prefs-files' => 'Datoteke',
+'prefs-custom-css' => 'Prilagođen CSS',
+'prefs-custom-js' => 'Prilagođen JS',
+'prefs-reset-intro' => 'Možete koristiti ovu stranicu za povrat vaših postavki na zadane postavke stranice. Ovo se ne može poništiti.',
+'prefs-emailconfirm-label' => 'Potvrda e-mail adrese:',
+'prefs-textboxsize' => 'Veličina prozora za uređivanje',
+'youremail' => 'Vaša elektronska pošta *',
+'username' => 'Suradničko ime:',
+'uid' => 'Suradnički ID-broj:',
+'prefs-memberingroups' => 'Član {{PLURAL:$1|skupine|skupina}}:',
+'prefs-registration' => 'Vrijeme prijave:',
+'yourrealname' => 'Pravo ime (nije obvezno)*',
+'yourlanguage' => 'Jezik:',
+'yourvariant' => 'Inačica:',
+'yournick' => 'Vaš nadimak (za potpisivanje)',
+'prefs-help-signature' => 'Komentari na stranicama za razgovor trebali bi biti potpisani s "<nowiki>~~~~</nowiki>" što će biti pretvoreno u Vaš potpis i datum.',
+'badsig' => 'Kôd vašeg potpisa nije valjan; provjerite HTML tagove.',
+'badsiglength' => 'Vaš potpis je predugačak.
+Mora imati manje od $1 {{PLURAL:$1|znaka|znakova}}.',
+'yourgender' => 'Spol:',
+'gender-unknown' => 'Neodređeno',
+'gender-male' => 'Muški',
+'gender-female' => 'Ženski',
+'prefs-help-gender' => 'Mogućnost: softver koristi za ispravno oslovljavanje razlikujući spol. Ovaj podatak bit će javan.',
+'email' => 'Adresa elektroničke pošte *',
+'prefs-help-realname' => '* Pravo ime (nije obvezno): za pravnu atribuciju vaših doprinosa.',
+'prefs-help-email' => 'E-mail adresa nije obvezna: ali omogućuje slanje nove lozinke e-mailom u slučaju da zaboravite svoju.
+Možete omogućiti drugima da vas kontaktiraju na suradničkoj stranici ili stranici za razgovor bez javnog otkrivanja vaše e-mail adrese.',
+'prefs-help-email-required' => 'Potrebno je navesti adresu e-pošte (e-mail).',
+'prefs-info' => 'Osnovni podaci',
+'prefs-i18n' => 'Internacionalizacija',
+'prefs-signature' => 'Potpis',
+'prefs-dateformat' => 'Format datuma',
+'prefs-timeoffset' => 'Vremensko poravnavanje',
+'prefs-advancedediting' => 'Napredne opcije',
+'prefs-advancedrc' => 'Napredne opcije',
+'prefs-advancedrendering' => 'Napredne opcije',
+'prefs-advancedsearchoptions' => 'Napredne opcije',
+'prefs-advancedwatchlist' => 'Napredne opcije',
+'prefs-display' => 'Prikaži opcije',
+'prefs-diffs' => 'razl',
# User rights
-'userrights' => 'Upravljanje suradničkim pravima', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Upravljaj suradničkim skupinama',
-'userrights-user-editname' => 'Unesite suradničko ime:',
-'editusergroup' => 'Uredi suradničke skupine',
-'editinguser' => "Promjena suradničkih prava za suradnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Uredi suradničke skupine',
-'saveusergroups' => 'Snimi suradničke skupine',
-'userrights-groupsmember' => 'Član:',
-'userrights-groups-help' => 'Možete promijeniti skupine za ovog suradnika:
+'userrights' => 'Upravljanje suradničkim pravima',
+'userrights-lookup-user' => 'Upravljaj suradničkim skupinama',
+'userrights-user-editname' => 'Unesite suradničko ime:',
+'editusergroup' => 'Uredi suradničke skupine',
+'editinguser' => "Promjena suradničkih prava za suradnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Uredi suradničke skupine',
+'saveusergroups' => 'Snimi suradničke skupine',
+'userrights-groupsmember' => 'Član:',
+'userrights-groupsmember-auto' => 'Uključeni član:',
+'userrights-groups-help' => 'Možete promijeniti skupine za ovog suradnika:
* Označena kućica pokazuje skupinu kojoj suradnik pripada.
* Neoznačena kućica pokazuje skupinu kojoj suradnik ne pripada.
* Zvjezdica * označava skupinu koju ne možete ukloniti kad ju jednom dodate, ili obratno.',
-'userrights-reason' => 'Razlog:',
-'userrights-no-interwiki' => 'Nemate dopuštenje za uređivanje suradničkih prava na drugim wikijima.',
-'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalno dostupna.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim računom da bi mogli dodijeliti suradnička prava.',
-'userrights-notallowed' => 'Vaš trenutačni suradnički račun nema ovlasti mijenjanja suradničkih prava.',
-'userrights-changeable-col' => 'Skupine koje možete promijeniti',
-'userrights-unchangeable-col' => 'Skupine koje ne možete promijeniti',
+'userrights-reason' => 'Razlog:',
+'userrights-no-interwiki' => 'Nemate dopuštenje za uređivanje suradničkih prava na drugim wikijima.',
+'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalno dostupna.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim računom da bi mogli dodijeliti suradnička prava.',
+'userrights-notallowed' => 'Vaš trenutačni suradnički račun nema ovlasti mijenjanja suradničkih prava.',
+'userrights-changeable-col' => 'Skupine koje možete promijeniti',
+'userrights-unchangeable-col' => 'Skupine koje ne možete promijeniti',
# Groups
'group' => 'Skupina:',
@@ -1381,6 +1431,7 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'right-bigdelete' => 'Brisanje stranica koje imaju veliku povijest',
'right-deleterevision' => 'Brisanje i vraćanje određene izmjene na stranici',
'right-deletedhistory' => 'Gledanje povijesti izmjena izbrisane stranice',
+'right-deletedtext' => 'Pregled izbrisanog teksta i izmjena između izbrisanih izmjena',
'right-browsearchive' => 'Traženje obrisanih stranica',
'right-undelete' => 'Vraćanje stranica',
'right-suppressrevision' => 'Pregledavanje i vraćanje izmjena skrivenih od administratora',
@@ -1394,6 +1445,8 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'right-editprotected' => 'Uređivanje zaštićenih stranica (s prenosivom zaštitom)',
'right-editinterface' => 'Uređivanje suradničkog sučelja',
'right-editusercssjs' => 'Uređivanje CSS i JS stranica drugih suradnika',
+'right-editusercss' => 'Uređivanje CSS stranica drugih suradnika',
+'right-edituserjs' => 'Uređivanje JS stranica drugih suradnika',
'right-rollback' => 'Brzo uklanjanje izmjena zadnjeg suradnika na određenoj stranici',
'right-markbotedits' => 'Označavanje uklonjenih izmjena kao izmjenu bota',
'right-noratelimit' => 'Bez vremenskog ograničenja uređivanja',
@@ -1410,6 +1463,8 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
'right-reset-passwords' => "Poništi (''resetiraj'') lozinku drugog suradnika",
'right-override-export-depth' => 'Izvezi stranice uključujući i povezane stranice do dubine od 5',
+'right-versiondetail' => 'Prikaži informaciju o proširenoj inačici softvera',
+'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# User rights log
'rightslog' => 'Evidencija suradničkih prava',
@@ -1459,6 +1514,15 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
'recentchanges-legend' => 'Izbornik nedavnih promjena',
'recentchangestext' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
+'recentchanges-label-legend' => 'Kazalo: $1.',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
+'recentchanges-label-newpage' => 'Ova izmjena stvorila je novu stranicu',
+'recentchanges-legend-minor' => '$1 - manja izmjena',
+'recentchanges-label-minor' => 'Ovo je manja izmjena',
+'recentchanges-legend-bot' => '$1 - izmjena bota',
+'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
+'recentchanges-legend-unpatrolled' => '$1 - nepregledana izmjena',
+'recentchanges-label-unpatrolled' => 'Ova izmjena još nije pregledana',
'rcnote' => "{{PLURAL:$1|Slijedi zadnja '''$1''' promjena|Slijede zadnje '''$1''' promjene|Slijedi zadnjih '''$1''' promjena}} u {{PLURAL:$2|zadnjem '''$2''' danu|zadnja '''$2''' dana|zadnjih '''$2''' dana}}, od $5, $4.",
'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
'rclistfrom' => 'Prikaži nove promjene počevši od $1',
@@ -1485,6 +1549,8 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
# Recent changes linked
'recentchangeslinked' => 'Povezane stranice',
+'recentchangeslinked-feed' => 'Povezane stranice',
+'recentchangeslinked-toolbox' => 'Povezane stranice',
'recentchangeslinked-title' => 'Povezane promjene sa "$1"',
'recentchangeslinked-noresult' => 'Nema promjena na povezanim stranicama u zadanom periodu.',
'recentchangeslinked-summary' => "Ova posebna stranica pokazuje nedavne promjene na povezanim stranicama (ili stranicama određene kategorije). Stranice koje su na [[Special:Watchlist|vašem popisu praćenja]] su '''podebljane'''.",
@@ -1494,8 +1560,8 @@ Primijetite da uporaba navigacijskih poveznica resetira vaše izbore u koloni.',
# Upload
'upload' => 'Postavi datoteku',
'uploadbtn' => 'Postavi datoteku',
-'reupload' => 'Ponovno postavi',
'reuploaddesc' => 'Vratite se u obrazac za postavljanje.',
+'upload-tryagain' => 'Pošalji izmijenjeni opis datoteke',
'uploadnologin' => 'Niste prijavljeni',
'uploadnologintext' => 'Za postavljanje datoteka morate biti [[Special:UserLogin|prijavljeni]].',
'upload_directory_missing' => 'Mapa za datoteke ($1) nedostaje i webserver ju ne može napraviti.',
@@ -1526,6 +1592,7 @@ Da biste na stranicu stavili sliku, koristite poveznice tipa
'minlength1' => 'Ime datoteke mora imati barem jedno slovo.',
'illegalfilename' => 'Ime datoteke "$1" sadrži znakove koji nisu dopušteni u imenima stranica. Preimenujte datoteku i ponovno je postavite.',
'badfilename' => 'Ime slike automatski je promijenjeno u "$1".',
+'filetype-mime-mismatch' => 'Proširenje datoteke ne odgovara MIME tipu.',
'filetype-badmime' => 'Datoteke MIME tipa "$1" ne mogu se snimati.',
'filetype-bad-ie-mime' => 'Nemogu postaviti ovu datoteku zato što ju Internet Explorer prepoznaje kao "$1", koji nije dopušten i potencijalno je opasan tip datoteke.',
'filetype-unwanted-type' => "'''\".\$1\"''' je neželjena vrsta datoteke. {{PLURAL:\$3|Preporučena vrsta je|Preporučene vrste su}} \$2.",
@@ -1544,7 +1611,6 @@ Da bi se Vaš opis ovdje našao, potrebno je da ga ručno uredite.
* Ime datoteke koju postavljate: '''<tt>[[:$1]]</tt>'''
* Ime postojeće datoteke: '''<tt>[[:$2]]</tt>'''
Molimo da izaberete drugo ime.",
-'fileexists-thumb' => "<center>'''Postojeća slika'''</center>",
'fileexists-thumbnail-yes' => "Datoteka je najvjerojatnije slika u smanjenoj veličini ''(thumbnail)''. [[$1|thumb]]
Molimo provjerite datoteku '''<tt>[[:$1]]</tt>'''.
Ukoliko je ta datoteka ista kao i ova koju ste upravo pokušali snimiti, samo u višoj rezoluciji, nije nužno snimanje smanjenje slike ''(thumbnaila)'', prikazivanje smanjene slike iz izvornika radi se softverski.",
@@ -1559,6 +1625,7 @@ Ako još uvijek želite postaviti svoju datoteku, idite nazad i postavite ju pod
'file-deleted-duplicate' => 'Datoteka istovjetna ovoj datoteci ([[$1]]) prethodno je obrisana. Provjerite evidenciju brisanja za tu datoteke datoteku prije nego što nastavite s ponovnim postavljanjem.',
'successfulupload' => 'Postavljanje uspješno.',
'uploadwarning' => 'Upozorenje kod postavljanja',
+'uploadwarning-text' => 'Molimo izmijenite opis datoteke ispod i pokušajte kasnije.',
'savefile' => 'Sačuvaj datoteku',
'uploadedimage' => 'postavljeno "$1"',
'overwroteimage' => 'postavljena nova inačica od "[[$1]]"',
@@ -1566,11 +1633,14 @@ Ako još uvijek želite postaviti svoju datoteku, idite nazad i postavite ju pod
'uploaddisabledtext' => 'Postavljanje datoteka je onemogućeno.',
'php-uploaddisabledtext' => 'Postavljanja datoteka su onemogućena u PHP-u. Molimo provjerite postavke za postavljanje datoteka.',
'uploadscripted' => 'Ova datoteka sadrži HTML ili skriptu, što može dovesti do grešaka u web pregledniku.',
-'uploadcorrupt' => 'Ova je datoteka oštećena ili ima nepravilan nastavak. Provjerite i pokušajte ponovo.',
'uploadvirus' => 'Datoteka sadrži virus! Podrobnije: $1',
+'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime datoteke na vašem računalu:',
+'sourceurl' => 'URL izvora:',
'destfilename' => 'Ime datoteke na wikiju:',
'upload-maxfilesize' => 'Maksimalna veličina datoteke: $1',
+'upload-description' => 'Opis datoteke',
+'upload-options' => 'Mogućnosti postavljanja',
'watchthisupload' => 'Prati ovu datoteku',
'filewasdeleted' => 'Datoteka istog imena već je bila postavljena, a kasnije i obrisana. Trebali bi provjeriti $1 prije nego što ponovno postavite datoteku.',
'upload-wasdeleted' => "'''Upozorenje: Pokušavate postaviti datoteku koja je prethodno obrisana.'''
@@ -1579,14 +1649,45 @@ Razmislite je li prigodno nastaviti s postavljanjem ove datoteke.
Slijedi evidencija brisanja ove datoteke s obrazloženjem prethodnog brisanja:",
'filename-bad-prefix' => "Ime datoteke koju snimate počinje s '''\"\$1\"''', što je ime koje slikama tipično dodjeljuju digitalni fotoaparati. Molimo izaberite bolje ime (neko koje bolje opisuje sliku nego \$1).",
-'upload-proto-error' => 'Protokol nije valjan',
-'upload-proto-error-text' => 'Udaljeno snimanje zahtijeva URL-ove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
-'upload-file-error' => 'Interna pogreška',
-'upload-file-error-text' => 'Interna pogreška se dogodila pri pokušaju stvaranja privremene datoteke na poslužitelju. Molimo javite se [[Special:ListUsers/sysop|administratoru]].',
-'upload-misc-error' => 'Nepoznata pogreška pri snimanju',
-'upload-misc-error-text' => 'Dogodila se nepoznata pogreška pri snimanju.
+'upload-proto-error' => 'Protokol nije valjan',
+'upload-proto-error-text' => 'Udaljeno snimanje zahtijeva URL-ove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
+'upload-file-error' => 'Interna pogreška',
+'upload-file-error-text' => 'Interna pogreška se dogodila pri pokušaju stvaranja privremene datoteke na poslužitelju. Molimo javite se [[Special:ListUsers/sysop|administratoru]].',
+'upload-misc-error' => 'Nepoznata pogreška pri snimanju',
+'upload-misc-error-text' => 'Dogodila se nepoznata pogreška pri snimanju.
Provjerite valjanost i dostupnost URL-a i pokušajte opet.
Ukoliko se problem ponovi, javite to [[Special:ListUsers/sysop|administratoru]].',
+'upload-too-many-redirects' => 'URL je sadržavao previše preusmjeravanja',
+'upload-unknown-size' => 'Nepoznata veličina',
+'upload-http-error' => 'HTTP pogreška: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Pristup onemogućen',
+'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
+Vaš poslužitelj nije postavljen da prosljeđuje ovu informaciju.
+Možda se temelji na CGI i ne može podržavati img_auth.
+Pogledajte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Zahtjevana putanja nije u direktoriju podešenom za postavljanje.',
+'img-auth-badtitle' => 'Ne mogu stvoriti valjani naslov iz "$1".',
+'img-auth-nologinnWL' => 'Niste prijavljeni i "$1" nije na popisu dozvoljenih.',
+'img-auth-nofile' => 'Datoteka "$1" ne postoji.',
+'img-auth-isdir' => 'Pokušavate pristupiti direktoriju "$1".
+Dozvoljen je samo pristup datotekama.',
+'img-auth-streaming' => 'Tok "$1".',
+'img-auth-public' => 'Funkcija img_auth.php služi za izlaz datoteka s privatnih wikija.
+Ovaj wiki je postavljena kao javni wiki.
+Za optimalnu sigurnost, img_auth.php je onemogućena.',
+'img-auth-noread' => 'Suradnik nema pristup za čitanje "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Nevaljan URL: $1',
+'http-invalid-scheme' => 'URL-ovi s prefiksom "$1" nisu podržani.',
+'http-request-error' => 'HTTP zahtjev nije uspio zbog nepoznate pogreške.',
+'http-read-error' => 'Greška pri čitanju HTTP.',
+'http-timed-out' => 'HTTP zahtjev je istekao.',
+'http-curl-error' => 'Greška pri otvaranju URL-a: $1',
+'http-host-unreachable' => 'URL nije dostupan.',
+'http-bad-status' => 'Došlo je do problema tijekom HTTP zahtjeva: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL nije dostupan',
@@ -1595,6 +1696,7 @@ Ukoliko se problem ponovi, javite to [[Special:ListUsers/sysop|administratoru]].
'upload-curl-error28-text' => 'Poslužitelj ne odgovara na upit. Provjerite da li su web stranice dostupne, pričekajte i pokušajte ponovo. Možete pokušati kasnije, kad bude manja gužva.',
'license' => 'Licencija:',
+'license-header' => 'Licencija',
'nolicense' => 'Ništa nije odabrano',
'license-nopreview' => '(Prikaz nije moguć)',
'upload_source_url' => ' (valjani, javno dostupni URL)',
@@ -1615,6 +1717,7 @@ Poredak datoteka mijenja se pritiskom na naslov stupca.',
'listfiles_count' => 'Inačice',
# File description page
+'file-anchor-link' => 'Slika',
'filehist' => 'Povijest datoteke',
'filehist-help' => 'Kliknite na datum/vrijeme kako biste vidjeli datoteku kakva je tada bila.',
'filehist-deleteall' => 'izbriši sve',
@@ -1629,6 +1732,7 @@ Poredak datoteka mijenja se pritiskom na naslov stupca.',
'filehist-dimensions' => 'Dimenzije',
'filehist-filesize' => 'Veličina datoteke',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Nedostaje datoteka',
'imagelinks' => 'Poveznice datoteke',
'linkstoimage' => '{{PLURAL:$1|Sljedeća stranica povezuje|$1 sljedećih stranice povezuju}} na ovu datoteku:',
'linkstoimage-more' => 'Više od $1 {{PLURAL:$1|stranice povezuje|stranica povezuje}} na ovu datoteku.
@@ -1638,15 +1742,14 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
'morelinkstoimage' => 'Pogledaj [[Special:WhatLinksHere/$1|više poveznica]] za ovu datoteku.',
'redirectstofile' => '{{PLURAL:$1|Sljedeća datoteka preusmjerava|$1 Sljedeće datoteke preusmjeravaju}} na ovu datoteku:',
'duplicatesoffile' => '{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):',
-'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Za podrobnije informacije vidi $1.',
-'shareduploadwiki-desc' => 'Opis datoteke $1 na zajedničkom poslužitelju je prikazan ispod',
-'shareduploadwiki-linktext' => 'stranica s opisom datoteke',
-'noimage' => 'Ne postoji datoteka s ovim imenom. Možete ju $1.',
-'noimage-linktext' => 'postaviti',
+'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.',
+'sharedupload-desc-there' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
+'sharedupload-desc-here' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Opis s njezine [$2 stranice s opisom datoteke] prikazan je ispod.',
+'filepage-nofile' => 'Ne postoji datoteka s ovim imenom.',
+'filepage-nofile-link' => 'Ne postoji datoteka s ovim imenom, ali možete je [$1 postaviti].',
'uploadnewversion-linktext' => 'Postavi novu inačicu datoteke',
-'shared-repo-from' => 's projekta $1', # $1 is the repository name
-'shared-repo' => 'zajednički poslužitelj', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 's projekta $1',
+'shared-repo' => 'zajednički poslužitelj',
# File reversion
'filerevert' => 'Ukloni ← $1',
@@ -1676,6 +1779,7 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
** Dupla datoteka
** Nekorištena datoteka',
'filedelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'filedelete-maintenance' => 'Brisanje i vraćanje datoteka privremeno je onemogućeno zbog održavanja.',
# MIME search
'mimesearch' => 'MIME tražilica',
@@ -1696,7 +1800,7 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
# Random page
'randompage' => 'Slučajna stranica',
-'randompage-nopages' => 'Nema stranica u imenskom prostoru "$1".',
+'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|imenskom prostoru|imenskim prostorima}}: $1.',
# Random redirect
'randomredirect' => 'Slučajno preusmjeravanje',
@@ -1708,6 +1812,7 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
'statistics-header-edits' => 'Statistika uređivanja',
'statistics-header-views' => 'Statistika posjećivanja',
'statistics-header-users' => 'Statistika suradnika',
+'statistics-header-hooks' => 'Ostale statistike',
'statistics-articles' => 'Stranice sa sadržajem',
'statistics-pages' => 'Stranice',
'statistics-pages-desc' => 'Sve stranice na wikiju, uključujući stranice za razgovor, preusmjeravanja i dr.',
@@ -1738,8 +1843,8 @@ koja obično ukazuje na "pravu" odredišnu stranicu, na koju bi trebalo pokaziva
'brokenredirects' => 'Kriva preusmjeravanja',
'brokenredirectstext' => 'Sljedeća preusmjeravanja povezuju na nepostojeće stranice:',
-'brokenredirects-edit' => '(uredi)',
-'brokenredirects-delete' => '(izbriši)',
+'brokenredirects-edit' => 'uredi',
+'brokenredirects-delete' => 'izbriši',
'withoutinterwiki' => 'Stranice bez međuwiki poveznica',
'withoutinterwiki-summary' => 'Sljedeće stranice nemaju poveznice na projekte na drugim jezicima:',
@@ -1846,15 +1951,17 @@ Možete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u
# Special:Categories
'categories' => 'Kategorije',
-'categoriespagetext' => 'Sljedeće kategorije sadrže stranice ili datoteke.
-[[Special:UnusedCategories|Nekorištene kategorije]] i [[Special:WantedCategories|tražene kategorije]] ovdje nisu prikazane.',
+'categoriespagetext' => 'Sljedeće {{PLURAL:$1|kategorija sadrži|kategorije sadrže}} stranice ili datoteke.
+[[Special:UnusedCategories|Nekorištene kategorije]] ovdje nisu prikazane.
+Također pogledajte [[Special:WantedCategories|tražene kategorije]].',
'categoriesfrom' => 'Prikaži kategorije počevši od:',
'special-categories-sort-count' => 'razvrstavanje po broju',
'special-categories-sort-abc' => 'abecedno razvrstavanje',
# Special:DeletedContributions
-'deletedcontributions' => 'Obrisani suradnički doprinosi',
-'deletedcontributions-title' => 'Obrisani suradnički doprinosi',
+'deletedcontributions' => 'Obrisani suradnički doprinosi',
+'deletedcontributions-title' => 'Obrisani suradnički doprinosi',
+'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
'linksearch' => 'Vanjske poveznice',
@@ -1869,6 +1976,16 @@ Možete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u
'listusersfrom' => 'Prikaži suradnike počevši od:',
'listusers-submit' => 'Prikaži',
'listusers-noresult' => 'Nema takvih suradnika.',
+'listusers-blocked' => '(blokiran)',
+
+# Special:ActiveUsers
+'activeusers' => 'Popis aktivnih suradnika',
+'activeusers-intro' => 'Ovo je popis suradnika koji su napravili neku aktivnost u {{PLURAL:$1|zadnji $1 dan|zadnja $1 dana|zadnjih $1 dana}}.',
+'activeusers-count' => '{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
+'activeusers-from' => 'Prikaži suradnike počevši od:',
+'activeusers-hidebots' => 'Sakrij botove',
+'activeusers-hidesysops' => 'Sakrij administratore',
+'activeusers-noresult' => 'Niti jedan suradnik nije nađen.',
# Special:Log/newusers
'newuserlogpage' => 'Evidencija novih suradnika',
@@ -1879,17 +1996,23 @@ Možete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u
'newuserlog-autocreate-entry' => 'Automatski stvoren račun',
# Special:ListGroupRights
-'listgrouprights' => 'Prava suradničkih skupina',
-'listgrouprights-summary' => 'Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.
+'listgrouprights' => 'Prava suradničkih skupina',
+'listgrouprights-summary' => 'Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.
Dodatne informacije o pojedinim pravim se mogu pronaći [[{{MediaWiki:Listgrouprights-helppage}}|ovdje]].',
-'listgrouprights-group' => 'Skupina',
-'listgrouprights-rights' => 'Prava',
-'listgrouprights-helppage' => 'Help:Suradničke skupine',
-'listgrouprights-members' => '(popis članova)',
-'listgrouprights-addgroup' => 'Moguće dodati {{PLURAL:$2|skupinu|skupine}}: $1',
-'listgrouprights-removegroup' => 'Moguće ukloniti {{PLURAL:$2|skupinu|skupine}}: $1',
-'listgrouprights-addgroup-all' => 'Moguće dodati sve skupine',
-'listgrouprights-removegroup-all' => 'Moguće ukloniti sve skupine',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dodijeljeno pravo</span>
+* <span class="listgrouprights-revoked">Ukinuto pravo</span>',
+'listgrouprights-group' => 'Skupina',
+'listgrouprights-rights' => 'Prava',
+'listgrouprights-helppage' => 'Help:Suradničke skupine',
+'listgrouprights-members' => '(popis članova)',
+'listgrouprights-addgroup' => 'Moguće dodati {{PLURAL:$2|skupinu|skupine}}: $1',
+'listgrouprights-removegroup' => 'Moguće ukloniti {{PLURAL:$2|skupinu|skupine}}: $1',
+'listgrouprights-addgroup-all' => 'Moguće dodati sve skupine',
+'listgrouprights-removegroup-all' => 'Moguće ukloniti sve skupine',
+'listgrouprights-addgroup-self' => 'Dodaj {{PLURAL:$2|skupinu|skupine}} vlastitom računu: $1',
+'listgrouprights-removegroup-self' => 'Ukloni {{PLURAL:$2|skupinu|skupine}} iz vlastitog računa: $1',
+'listgrouprights-addgroup-self-all' => 'Dodaj sve skupine vlastitom računu',
+'listgrouprights-removegroup-self-all' => 'Uklonite sve skupine iz vlastitog računa',
# E-mail user
'mailnologin' => 'Nema adrese pošiljaoca',
@@ -1966,10 +2089,9 @@ Promjene na ovoj stranici i njenoj stranici za razgovor bit će tamo prikazani,
'enotif_lastvisited' => 'Pogledaj $1 za promjene od zadnjeg posjeta.',
'enotif_lastdiff' => 'Pogledajte $1 kako biste mogli vidjeti tu izmjenu.',
'enotif_anon_editor' => 'neprijavljeni suradnik $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Poštovani $WATCHINGUSERNAME,
-stranicu na projektu {{SITENAME}} s naslovom $PAGETITLE je dana $PAGEEDITDATE $CHANGEDORCREATED suradnik $PAGEEDITOR,
-pogledajte $PAGETITLE_URL za trenutačnu inačicu.
+stranicu na projektu {{SITENAME}} s naslovom $PAGETITLE je dana $PAGEEDITDATE $CHANGEDORCREATED suradnik $PAGEEDITOR, pogledajte $PAGETITLE_URL za trenutačnu inačicu.
$NEWPAGE
@@ -1979,16 +2101,19 @@ Možete se javiti uredniku:
mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Do vašeg ponovnog posjeta stranici nećete dobivati daljnja izviješća.
-Postavke za izvješćivanje možete resetirati na svom popisu praćenja.
+Do Vašeg ponovnog posjeta stranici nećete dobivati daljnje obavijesti.
+Postavke za izvješćivanje možete resetirati za sve praćene stranice svog popisa praćenja.
- Vaš sustav izvješćivanja - hrvatska {{SITENAME}}.
+ Vaš sustav izvješćivanja {{SITENAME}}.
--
-Za promjene svog popisa praćenja posjetite
-{{fullurl:Special:Watchlist|edit=yes}}
+Za promjene svog popisa praćenja, posjetite
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Za brisanje stranica iz svog popisa praćenja, posjetite
+$UNWATCHURL
-Za pomoć posjetite:
+Za povratne informacije i pomoć posjetite:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2000,10 +2125,11 @@ Za pomoć posjetite:
'exblank' => 'stranica je bila prazna',
'delete-confirm' => 'Obriši "$1"',
'delete-legend' => 'Izbriši',
-'historywarning' => 'UPOZORENJE: Stranica koju želite obrisati ima prijašnje inačice:',
+'historywarning' => "'''Upozorenje''': Stranica koju želite obrisati ima starije izmjene s približno $1 {{PLURAL:$1|inačicom|inačice|inačica}}:",
'confirmdeletetext' => 'Zauvijek ćete izbrisati stranicu ili sliku zajedno s prijašnjim inačicama.
Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
'actioncomplete' => 'Zahvat završen',
+'actionfailed' => 'Radnja nije uspjela',
'deletedtext' => '"<nowiki>$1</nowiki>" je izbrisana.
Vidi $2 za evidenciju nedavnih brisanja.',
'deletedarticle' => 'izbrisano "$1"',
@@ -2025,18 +2151,19 @@ Sva vremena su prema poslužiteljevom vremenu.',
'delete-warning-toobig' => 'Ova stranica ima veliku povijest uređivanja, preko $1 {{PLURAL:$1|promjene|promjena}}. Brisanje može poremetiti bazu podataka {{SITENAME}}; postupajte s oprezom.',
# Rollback
-'rollback' => 'Ukloni posljednju promjenu',
-'rollback_short' => 'Ukloni',
-'rollbacklink' => 'ukloni',
-'rollbackfailed' => 'Uklanjanje neuspješno',
-'cantrollback' => 'Ne mogu ukloniti posljednju promjenu, postoji samo jedna promjena.',
-'alreadyrolled' => 'Ne mogu ukloniti posljednju promjenu članka [[:$1]] koju je napravio [[User:$2|$2]] ([[User talk:$2|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); netko je već promijenio stranicu ili uklonio promjenu.
+'rollback' => 'Ukloni posljednju promjenu',
+'rollback_short' => 'Ukloni',
+'rollbacklink' => 'ukloni',
+'rollbackfailed' => 'Uklanjanje neuspješno',
+'cantrollback' => 'Ne mogu ukloniti posljednju promjenu, postoji samo jedna promjena.',
+'alreadyrolled' => 'Ne mogu ukloniti posljednju promjenu članka [[:$1]] koju je napravio [[User:$2|$2]] ([[User talk:$2|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); netko je već promijenio stranicu ili uklonio promjenu.
Posljednju promjenu napravio je [[User:$3|$3]] ([[User talk:$3|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Sažetak promjene je bio: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Uklonjena promjena suradnika $2, vraćeno na zadnju inačicu suradnika $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Uklonjeno uređivanje suradnika $1; vraćeno na zadnju inačicu suradnika $2.',
-'sessionfailure' => 'Uočili smo problem s vašom prijavom. Zadnja naredba nije izvršena
+'editcomment' => "Sažetak promjene je bio: \"''\$1''\".",
+'revertpage' => 'Uklonjena promjena suradnika $2, vraćeno na zadnju inačicu suradnika $1',
+'revertpage-nouser' => 'Vraćene izmjene suradnika (suradničko ime uklonjeno) na posljednju inačicu suradnika [[User:$1|$1]]',
+'rollback-success' => 'Uklonjeno uređivanje suradnika $1; vraćeno na zadnju inačicu suradnika $2.',
+'sessionfailure' => 'Uočili smo problem s vašom prijavom. Zadnja naredba nije izvršena
kako bi izbjegla zloupotreba. Molimo vas da u pregledniku pritisnete "Natrag" (Back) i ponovno učitate stranicu
s koje ste stigli.',
@@ -2055,7 +2182,7 @@ Pogledajte [[Special:ProtectedPages|zaštićene stranice]] za popis trenutačno
'protectexpiry' => 'Trajanje zaštite:',
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Vrijeme isteka je u prošlosti.',
-'protect-unchain' => 'Otključaj ovlaštenja za premještanje',
+'protect-unchain-permissions' => 'Otključaj daljnje mogućnosti zaštićivanja',
'protect-text' => "Ovdje možete pregledati i promijeniti razinu zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ne možete mijenjati nivo zaštite dok ste blokirani.
Slijede postavke stranice '''$1''':",
@@ -2084,7 +2211,7 @@ Slijede trenutačne postavke stranice '''$1''':",
** Neproduktivni uređivački rat
** Zatrpavanje nedavnih promjena',
'protect-edit-reasonlist' => 'Uredi razloge zaštićivanja',
-'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year,neograničeno:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year,neograničeno:infinite',
'restriction-type' => 'Dopuštenje:',
'restriction-level' => 'Stupanj ograničenja:',
'minimum-size' => 'Najmanja veličina',
@@ -2124,6 +2251,7 @@ ili je promjena vraćena ili uklonjena iz arhive.',
'undelete-nodiff' => 'Prethodne promjene nisu nađene.',
'undeletebtn' => 'Vrati!',
'undeletelink' => 'vidi/vrati',
+'undeleteviewlink' => 'pregled',
'undeletereset' => 'Očisti',
'undeleteinvert' => 'Obrni odabir',
'undeletecomment' => 'Razlog:',
@@ -2161,19 +2289,23 @@ $1',
'contributions-title' => 'Suradnički doprinosi za $1',
'mycontris' => 'Moji doprinosi',
'contribsub2' => 'Za $1 ($2)',
-'nocontribs' => 'Nema promjena koje udovoljavaju ovim kriterijima.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nema promjena koje udovoljavaju ovim kriterijima.',
'uctop' => ' (vrh)',
'month' => 'Od mjeseca (i ranije):',
'year' => 'Od godine (i ranije):',
-'sp-contributions-newbies' => 'Prikaži samo doprinose novih suradnika',
-'sp-contributions-newbies-sub' => 'Za nove suradnike',
-'sp-contributions-newbies-title' => 'Doprinosi novih suradnika',
-'sp-contributions-blocklog' => 'Evidencija blokiranja',
-'sp-contributions-logs' => 'evidencije',
-'sp-contributions-search' => 'Pretraži doprinose',
-'sp-contributions-username' => 'IP adresa ili suradnik:',
-'sp-contributions-submit' => 'Traži',
+'sp-contributions-newbies' => 'Prikaži samo doprinose novih suradnika',
+'sp-contributions-newbies-sub' => 'Za nove suradnike',
+'sp-contributions-newbies-title' => 'Doprinosi novih suradnika',
+'sp-contributions-blocklog' => 'Evidencija blokiranja',
+'sp-contributions-deleted' => 'obrisani suradnički doprinosi',
+'sp-contributions-logs' => 'evidencije',
+'sp-contributions-talk' => 'razgovor',
+'sp-contributions-userrights' => 'upravljanje suradničkim pravima',
+'sp-contributions-blocked-notice' => 'Ovaj suradnik je trenutačno blokiran. Posljednja stavka evidencije blokiranja navedena je niže kao napomena:',
+'sp-contributions-search' => 'Pretraži doprinose',
+'sp-contributions-username' => 'IP adresa ili suradnik:',
+'sp-contributions-submit' => 'Traži',
# What links here
'whatlinkshere' => 'Što vodi ovamo',
@@ -2196,6 +2328,7 @@ $1',
# Block/unblock
'blockip' => 'Blokiraj suradnika',
+'blockip-title' => 'Blokiraj suradnika',
'blockip-legend' => 'Blokiraj suradnika',
'blockiptext' => 'Koristite donji obrazac za blokiranje pisanja pojedinih suradnika ili IP adresa .
To biste trebali raditi samo zbog sprječavanja vandalizma i u skladu
@@ -2221,7 +2354,7 @@ vandalizirane).',
'ipbenableautoblock' => 'Automatski blokiraj IP adrese koje koristi ovaj suradnik',
'ipbsubmit' => 'Blokiraj ovog suradnika',
'ipbother' => 'Neki drugi rok (na engleskom, npr. 6 days):',
-'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,neograničeno:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,neograničeno:infinite',
'ipbotheroption' => 'drugo',
'ipbotherreason' => 'Drugi/dodatni razlog:',
'ipbhidename' => 'Sakrij suradničko ime iz uređivanja i popisa',
@@ -2250,9 +2383,11 @@ Pogledaj [[Special:IPBlockList|popis blokiranih IP adresa]] za pregled.',
'ipblocklist-sh-tempblocks' => '$1 privremena blokiranja',
'ipblocklist-sh-addressblocks' => '$1 blokirane IP-eve',
'ipblocklist-submit' => 'Traži',
+'ipblocklist-localblock' => 'Lokalno blokiranje',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ostalo blokiranje|Ostala blokiranja}}',
'blocklistline' => '$1, $2 je blokirao $3 ($4)',
'infiniteblock' => 'neograničeno',
-'expiringblock' => 'istječe $1',
+'expiringblock' => 'istječe $1 u $2',
'anononlyblock' => 'samo IP adrese',
'noautoblockblock' => 'blokiranje samoga sebe je onemogućeno',
'createaccountblock' => 'blokirano stvaranje suradničkog računa',
@@ -2266,7 +2401,10 @@ Pogledaj [[Special:IPBlockList|popis blokiranih IP adresa]] za pregled.',
'contribslink' => 'doprinosi',
'autoblocker' => 'Automatski ste blokirani jer je vašu IP adresu nedavno koristio "[[User:$1|$1]]" koji je blokiran zbog: "$2".',
'blocklogpage' => 'Evidencija blokiranja',
-'blocklog-fulllog' => 'Potpuna evidencija blokiranja',
+'blocklog-showlog' => 'Ovaj suradnik je ranije blokiran.
+Evidencija blokiranja je prikazan ispod kao napomena:',
+'blocklog-showsuppresslog' => 'Ovaj suradnik je ranije blokiran i skriven.
+Zapisnik skrivanja je prikazan ispod kao napomena:',
'blocklogentry' => 'Blokiran je "[[$1]]" na rok $2 $3',
'reblock-logentry' => 'promijenjene postavke blokiranja za [[$1]] na rok od $2 $3',
'blocklogtext' => 'Ovo je evidencija blokiranja i deblokiranja. Na popisu nema automatski blokiranih IP adresa. Za popis trenutačnih zabrana i blokiranja vidi [[Special:IPBlockList|popis IP blokiranja]].',
@@ -2285,9 +2423,11 @@ Pogledaj [[Special:IPBlockList|popis blokiranih IP adresa]] za pregled.',
'ipb_already_blocked' => '"$1" je već blokiran',
'ipb-needreblock' => '== Već blokiran ==
$1 je već blokiran. Želite promijeniti postavke blokiranja?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Ostalo blokiranje|Ostala blokiranja}}',
'ipb_cant_unblock' => 'Pogreška: blok ID $1 nije nađen. Moguće je da je suradnik već odblokiran.',
'ipb_blocked_as_range' => 'Pogreška: IP adresa $1 nije blokirana direktno te stoga ne može biti odblokirana. Blokirana je kao dio opsega $2, koji može biti odblokiran.',
'ip_range_invalid' => 'Raspon IP adresa nije valjan.',
+'ip_range_toolarge' => 'Opsezi blokiranja veći od /$1 nisu dozvoljeni.',
'blockme' => 'Blokiraj me',
'proxyblocker' => 'Zaštita od otvorenih posrednika (proxyja)',
'proxyblocker-disabled' => 'Ova funkcija je onemogućena.',
@@ -2296,6 +2436,7 @@ $1 je već blokiran. Želite promijeniti postavke blokiranja?',
'sorbsreason' => 'Vaša IP adresa je na popisu otvorenih posrednika na poslužitelju DNSBL.',
'sorbs_create_account_reason' => 'Vaša IP adresa je na popisu otvorenih posrednika na poslužitelju DNSBL. Ne možete otvoriti račun.',
'cant-block-while-blocked' => 'Ne možete blokirati druge suradnike dok ste vi blokirani.',
+'cant-see-hidden-user' => 'Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.',
# Developer tools
'lockdb' => 'Zaključaj bazu podataka',
@@ -2338,6 +2479,7 @@ Ovo može biti drastična i neočekivana promjena kad su u pitanju popularne str
U tim slučajevima ćete morati sami premjestiti ili iskopirati stranicu za razgovor,
ako to želite.",
'movearticle' => 'Premjesti stranicu',
+'moveuserpage-warning' => "'''Upozorenje:''' Premještate suradničku stranicu. Imajte na umu da će stranica biti premještena, ali suradnik ''neće'' biti preimenovan.",
'movenologin' => 'Niste prijavljeni',
'movenologintext' => 'Ako želite premjestiti stranicu morate biti [[Special:UserLogin|prijavljeni]].',
'movenotallowed' => 'Nemate pravo premještanja stranica.',
@@ -2348,7 +2490,7 @@ ako to želite.",
'move-watch' => 'Prati ovu stranicu',
'movepagebtn' => 'Premjesti stranicu',
'pagemovedsub' => 'Premještanje uspjelo',
-'movepage-moved' => '\'\'\'"$1" je premješteno na "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" je premješteno na "$2"\'\'\'',
'movepage-moved-redirect' => 'Napravljeno je preusmjeravanje.',
'movepage-moved-noredirect' => 'Stvaranje preusmjeravanja je izostavljeno.',
'articleexists' => 'Stranica pod tim imenom već postoji ili ime koje ste odabrali nije u skladu s pravilima.
@@ -2390,6 +2532,14 @@ Odredišni članak "[[:$1]]" već postoji. Želite li ga obrisati da biste napra
'imageinvalidfilename' => 'Ciljano ime datoteke je nevaljano',
'fix-double-redirects' => 'Ažuriraj sva preusmjeravanja koja vode na originalni naslov',
'move-leave-redirect' => 'Ostavi preusmjeravanje',
+'protectedpagemovewarning' => "'''Upozorenje:''' Ova je stranica zaključana tako da je mogu premjestiti samo suradnici s administratorskim pravima.
+Posljednja stavka u evidenciji navedena je niže kao napomena:",
+'semiprotectedpagemovewarning' => "'''Napomena:''' Ova je stranica zaključana tako da je samo prijavljeni suradnici mogu premjestiti.
+Posljednja stavka u evidenciji navedena je niže kao napomena:",
+'move-over-sharedrepo' => '== Datoteka postoji ==
+[[:$1]] postoji na zajednički korištenom repozitoriju. Premještanje datoteke na ovaj naslov će prepisati zajednički korištenu datoteku.',
+'file-exists-sharedrepo' => 'Naziv datoteke koje ste odabrali već se rabi na zajednički korištenom repozitoriju.
+Molimo odaberite drugo ime.',
# Export
'export' => 'Izvezi stranice',
@@ -2411,14 +2561,20 @@ U potonjem slučaju možete koristiti i poveznicu, npr. [[{{#Special:Export}}/{{
'export-pagelinks' => 'Uključi povezane stranice do dubine od:',
# Namespace 8 related
-'allmessages' => 'Sve sistemske poruke',
-'allmessagesname' => 'Ime',
-'allmessagesdefault' => 'Prvotni tekst',
-'allmessagescurrent' => 'Trenutačni tekst',
-'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [http://translatewiki.net translatewiki.net] ukoliko želite doprinjeti lokalizaciji MediaWiki softvera.',
-'allmessagesnotsupportedDB' => "Ova stranica ne može biti korištena jer je isključen parametar '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Filter imena poruka:',
-'allmessagesmodified' => 'Prikaži samo promijenjene',
+'allmessages' => 'Sve sistemske poruke',
+'allmessagesname' => 'Ime',
+'allmessagesdefault' => 'Prvotni tekst',
+'allmessagescurrent' => 'Trenutačni tekst',
+'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [http://translatewiki.net translatewiki.net] ukoliko želite doprinjeti lokalizaciji MediaWiki softvera.',
+'allmessagesnotsupportedDB' => "Ova stranica ne može biti korištena jer je isključen parametar '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Filtriraj',
+'allmessages-filter' => 'Filtriraj prema prilagođenom obliku:',
+'allmessages-filter-unmodified' => 'Nepreinačeno',
+'allmessages-filter-all' => 'Sve',
+'allmessages-filter-modified' => 'Preinačeno',
+'allmessages-prefix' => 'Filtriraj prema prefiksu:',
+'allmessages-language' => 'Jezik:',
+'allmessages-filter-submit' => 'Idi',
# Thumbnails
'thumbnail-more' => 'Povećaj',
@@ -2428,6 +2584,9 @@ U potonjem slučaju možete koristiti i poveznicu, npr. [[{{#Special:Export}}/{{
'djvu_no_xml' => 'Ne mogu dohvatiti XML za DjVu datoteku',
'thumbnail_invalid_params' => "Nevaljani parametri za smanjenu sliku (''thumbnail'')",
'thumbnail_dest_directory' => 'Ne mogu stvoriti ciljni direktorij',
+'thumbnail_image-type' => 'Tip slike nije podržan',
+'thumbnail_gd-library' => 'Nepotpune konfiguracija GD knjižnice: nedostaje funkcija $1',
+'thumbnail_image-missing' => 'Čini se da datoteka nedostaje: $1',
# Special:Import
'import' => 'Uvezi stranice',
@@ -2491,6 +2650,7 @@ Transwiki uvoz stranica je zabilježen u [[Special:Log/import|evidenciji uvoza s
'tooltip-ca-viewsource' => 'Ova stranica je zaštićena. Možete pogledati izvorni kod.',
'tooltip-ca-history' => 'Ranije izmjene na ovoj stranici.',
'tooltip-ca-protect' => 'Zaštiti ovu stranicu',
+'tooltip-ca-unprotect' => 'Ukloni zaštitu s ove stranice',
'tooltip-ca-delete' => 'Izbriši ovu stranicu',
'tooltip-ca-undelete' => 'Vrati uređivanja na ovoj stranici prije nego što je izbrisana',
'tooltip-ca-move' => 'Premjesti ovu stranicu',
@@ -2501,6 +2661,7 @@ Transwiki uvoz stranica je zabilježen u [[Special:Log/import|evidenciji uvoza s
'tooltip-search-fulltext' => 'Traži ovaj tekst na svim stranicama',
'tooltip-p-logo' => 'Glavna stranica',
'tooltip-n-mainpage' => 'Posjeti glavnu stranicu',
+'tooltip-n-mainpage-description' => 'Posjeti glavnu stranicu',
'tooltip-n-portal' => 'O projektu, što možete učiniti, gdje je što',
'tooltip-n-currentevents' => 'O trenutačnim događajima',
'tooltip-n-recentchanges' => 'Popis nedavnih promjena u wikiju.',
@@ -2553,10 +2714,12 @@ Transwiki uvoz stranica je zabilježen u [[Special:Log/import|evidenciji uvoza s
# Attribution
'anonymous' => 'Neprijavljeni {{PLURAL:$1|suradnik|suradnici}} projekta {{SITENAME}}',
'siteuser' => 'Suradnik $1 na projektu {{SITENAME}}',
-'lastmodifiedatby' => 'Ovu je stranicu zadnji put mijenjao dana $2, $1 suradnik $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonimni suradnik $1',
+'lastmodifiedatby' => 'Ovu je stranicu zadnji put mijenjao dana $2, $1 suradnik $3.',
'othercontribs' => 'Temelji se na doprinosu suradnika $1.',
'others' => 'drugih',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|suradnik|suradnici}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonimni suradnik|anonimni suradnici}} $1',
'creditspage' => 'Autori stranice',
'nocredits' => 'Za ovu stranicu nema podataka o autorima.',
@@ -2593,11 +2756,22 @@ Razlog je vjerojatno vanjska poveznica koja se nalazi na crnom popisu.',
'mw_math_modern' => 'Preporučeno za današnje preglednike',
'mw_math_mathml' => 'Ako je moguće MathML (u pokusnoj fazi)',
+# Math errors
+'math_failure' => 'Obrada nije uspjela.',
+'math_unknown_error' => 'nepoznata pogreška',
+'math_unknown_function' => 'nepoznata funkcija',
+'math_lexing_error' => 'rječnička pogreška (lexing error)',
+'math_syntax_error' => 'sintaksna pogreška',
+'math_image_error' => 'Konverzija u PNG nije uspjela; provjerite jesu li dobro instalirani latex, dvips, gs, i convert',
+'math_bad_tmpdir' => 'Ne mogu otvoriti ili pisati u privremeni direktorij za matematiku',
+'math_bad_output' => 'Ne mogu otvoriti ili pisati u odredišni direktorij za matematiku',
+'math_notexvc' => 'Nedostaje izvršna datoteka texvc-a; pogledajte math/README za postavke.',
+
# Patrolling
'markaspatrolleddiff' => 'Označi za pregledano',
'markaspatrolledtext' => 'Označi ovaj članak pregledanim',
'markedaspatrolled' => 'Pregledano',
-'markedaspatrolledtext' => 'Odabrana promjena već je pregledana.',
+'markedaspatrolledtext' => 'Odabrana promjena [[:$1]] označena je pregledanom.',
'rcpatroldisabled' => 'Nadzor nedavnih promjena isključen',
'rcpatroldisabledtext' => 'Naredba "Nadziri nedavne promjene" trenutačno je isključena.',
'markedaspatrollederror' => 'Ne mogu označiti za pregledano',
@@ -2627,13 +2801,10 @@ $1',
'previousdiff' => '← Starija izmjena',
'nextdiff' => 'Novija izmjena →',
-# Visual comparison
-'visual-comparison' => 'Prikazivanje razlike (usporedi)',
-
# Media information
'mediawarning' => "'''Upozorenje''': Ova datoteka možda sadrži štetan kod.
Njegovim izvršavanjem mogli biste oštetiti svoj sustav.",
-'imagemaxsize' => 'Ograniči veličinu slike na stranici s opisom:',
+'imagemaxsize' => "Ograniči veličinu slike:<br />''(za stranicu s opisom datoteke)''",
'thumbsize' => 'Veličina sličice (umanjene inačice slike):',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice}}',
'file-info' => '(veličina datoteke: $1, MIME tip: $2)',
@@ -2642,6 +2813,8 @@ Njegovim izvršavanjem mogli biste oštetiti svoj sustav.",
'svg-long-desc' => '(SVG datoteka, nominalno $1 × $2 piksela, veličina datoteke: $3)',
'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
'show-big-image-thumb' => '<small>Veličina pretpregleda: $1 × $2 piksela</small>',
+'file-info-gif-looped' => 'uokvireno',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|okvir|okvira}}',
# Special:NewFiles
'newimages' => 'Galerija novih datoteka',
@@ -2677,7 +2850,7 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Širina',
@@ -2804,14 +2977,14 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-unknowndate' => 'Datum nepoznat',
-'exif-orientation-1' => 'Normalno', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Zrcaljeno po horizontali', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Zaokrenuto 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Zrcaljeno po vertikali', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Zaokrenuto 90° suprotno od sata i zrcaljeno po vertikali', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Zaokrenuto 90° u smjeru sata', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Zaokrenuto 90° u smjeru sata i zrcaljeno po vertikali', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Zaokrenuto 90° suprotno od sata', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalno',
+'exif-orientation-2' => 'Zrcaljeno po horizontali',
+'exif-orientation-3' => 'Zaokrenuto 180°',
+'exif-orientation-4' => 'Zrcaljeno po vertikali',
+'exif-orientation-5' => 'Zaokrenuto 90° suprotno od sata i zrcaljeno po vertikali',
+'exif-orientation-6' => 'Zaokrenuto 90° u smjeru sata',
+'exif-orientation-7' => 'Zaokrenuto 90° u smjeru sata i zrcaljeno po vertikali',
+'exif-orientation-8' => 'Zaokrenuto 90° suprotno od sata',
'exif-planarconfiguration-1' => 'zrnasti format',
'exif-planarconfiguration-2' => 'planarni format',
@@ -2935,7 +3108,7 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-gpsmeasuremode-2' => 'Dvodimenzionalno mjerenje',
'exif-gpsmeasuremode-3' => 'Trodimenzionalno mjerenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'kmh',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'čv',
@@ -2954,6 +3127,7 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'watchlistall2' => 'sve',
'namespacesall' => 'sve',
'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrda e-mail adrese',
@@ -3080,7 +3254,7 @@ Također možete koristiti [[Special:Watchlist/edit|uređivanje popisa putem ''k
'duplicate-defaultsort' => 'Upozorenje: Glavni raspored "$2" poništava raniji glavni raspored "$1".',
# Special:Version
-'version' => 'Inačica softvera', # Not used as normal message but as header for the special page itself
+'version' => 'Inačica softvera',
'version-extensions' => 'Instalirana proširenja',
'version-specialpages' => 'Posebne stranice',
'version-parserhooks' => 'Kuke parsera',
@@ -3094,7 +3268,7 @@ Također možete koristiti [[Special:Watchlist/edit|uređivanje popisa putem ''k
'version-skin-extension-functions' => 'Funkcije proširenja izgleda',
'version-hook-name' => 'Ime kuke',
'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => 'Inačica',
+'version-version' => '(Inačica $1)',
'version-license' => 'Licencija',
'version-software' => 'Instalirani softver',
'version-software-product' => 'Proizvod',
@@ -3174,4 +3348,15 @@ Unesite ime datoteke bez prefiksa "{{ns:file}}:"',
'dberr-outofdate' => 'Imajte na umu da su njihova kazala našeg sadržaja možda zastarjela.',
'dberr-cachederror' => 'Sljedeće je dohvaćena kopija tražene stranice, te možda nije ažurirana.',
+# HTML forms
+'htmlform-invalid-input' => 'Postoje problemi s nekim od vaših unosa',
+'htmlform-select-badoption' => 'Vrijednost koju ste naveli nije ispravan izbor.',
+'htmlform-int-invalid' => 'Vrijednost koju ste naveli nije cijeli broj.',
+'htmlform-float-invalid' => 'Vrijednost koju ste naveli nije broj.',
+'htmlform-int-toolow' => 'Vrijednost koju ste naveli je ispod minimuma od $1',
+'htmlform-int-toohigh' => 'Vrijednost koju ste naveli je iznad maksimuma od $1',
+'htmlform-submit' => 'Pošalji',
+'htmlform-reset' => 'Poništi izmjene',
+'htmlform-selectorother-other' => 'Drugi',
+
);
diff --git a/languages/messages/MessagesHsb.php b/languages/messages/MessagesHsb.php
index bbda0289..9f16e4cb 100644
--- a/languages/messages/MessagesHsb.php
+++ b/languages/messages/MessagesHsb.php
@@ -162,6 +162,7 @@ $messages = array(
'tog-enotifminoredits' => 'Tež dla snadnych změnow mejlki pósłać',
'tog-enotifrevealaddr' => 'Moju e-mejlowu adresu w e-mejlowych zdźělenkach wotkryć',
'tog-shownumberswatching' => 'Ličbu wobkedźbowacych wužiwarjow pokazać',
+'tog-oldsig' => 'Přehlad eksistowaceje signatury:',
'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadźeć (bjez awtomatiskeho wotkaza)',
'tog-externaleditor' => 'Eksterny editor jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na wašim ličaku)',
'tog-externaldiff' => 'Eksterny diff-program jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na wašim ličaku)',
@@ -184,6 +185,13 @@ $messages = array(
'underline-never' => 'ženje',
'underline-default' => 'po standardźe wobhladowaka',
+# Font style option in Special:Preferences
+'editfont-style' => 'Pismowy stil wobdźěłowanskeho pola:',
+'editfont-default' => 'Standard wobhladowaka',
+'editfont-monospace' => 'Pismo z krutej šěrokosću',
+'editfont-sansserif' => 'Bjezserifowe pismo',
+'editfont-serif' => 'Serifowe pismo',
+
# Dates
'sunday' => 'Njedźela',
'monday' => 'Póndźela',
@@ -243,7 +251,7 @@ $messages = array(
'category-media-header' => 'Dataje w kategoriji „$1”',
'category-empty' => "''Tuta kategorija tuchwilu žane nastawki abo medije njewobsahuje.''",
'hidden-categories' => '{{PLURAL:$1|Schowana kategorija|Schowanej kategoriji|Schowane kategorije|Schowanych kategorijow}}',
-'hidden-category-category' => 'Schowane kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Schowane kategorije',
'category-subcat-count' => '{{PLURAL:$2|Tuta kategorija ma jenož slědowacu podkategoriju.|Tuta kategorija ma {{PLURAL:$1|slědowacu podkategoriju|$1 slědowacej podkategoriji|$1 slědowace podkategorije|$1 slědowacych podkategorijow}} z dohromady $2.}}',
'category-subcat-count-limited' => 'Tuta kategorija ma {{PLURAL:$1|slědowacu podkategoriju|slědowacej $1 podkategoriji|slědowace $1 podkategorije|slědowacych $1 podkategorijow}}:',
'category-article-count' => '{{PLURAL:$2|Tuta kategorija wobsahuje jenož slědowacu stronu.|{{PLURAL:$1|Slědowaca strona je|Slědowacej $1 stronje stej|Slědowace $1 strony su|Slědowacych $1 stronow je}} w tutej kategoriji z dohromady $2.}}',
@@ -251,6 +259,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Tuta kategorija wobsahuje jenož slědowacu stronu.|{{PLURAL:$1|Slědowaca dataja je|Slědowacej $1 dataji stej|Slědowace $1 dataje|Slědowacych $1 datajow je}} w tutej kategoriji z dohromady $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Slědowaca dataj je|Slědowacej $1 dataji stej|Slědowace $1 dataje su|Slědowacych $1 je}} w tutej kategoriji:',
'listingcontinuesabbrev' => ' (pokročowane)',
+'index-category' => 'Indicěrowane strony',
+'noindex-category' => 'Njeindicěrowane strony',
'mainpagetext' => "'''MediaWiki bu wuspěšnje instalowany.'''",
'mainpagedocfooter' => 'Prošu hlej [http://meta.wikimedia.org/wiki/Help:Contents dokumentaciju] za informacije wo wužiwanju softwary.
@@ -261,10 +271,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-'about' => 'Wo',
-'article' => 'Nastawk',
-'newwindow' => '(wočinja so w nowym woknje)',
-'cancel' => 'Přetorhnyć',
+'about' => 'Wo',
+'article' => 'Nastawk',
+'newwindow' => '(wočinja so w nowym woknje)',
+'cancel' => 'Přetorhnyć',
+'moredotdotdot' => 'Wjace…',
+'mypage' => 'Moja strona',
+'mytalk' => 'moja diskusija',
+'anontalk' => 'Z tutej IP diskutować',
+'navigation' => 'Nawigacija',
+'and' => '&#32;a',
+
+# Cologne Blue skin
'qbfind' => 'Namakać',
'qbbrowse' => 'Přepytować',
'qbedit' => 'wobdźěłać',
@@ -272,15 +290,35 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Moje strony',
'qbspecialpages' => 'Specialne strony',
-'moredotdotdot' => 'Wjace…',
-'mypage' => 'Moja strona',
-'mytalk' => 'moja diskusija',
-'anontalk' => 'Z tutej IP diskutować',
-'navigation' => 'Nawigacija',
-'and' => '&#32;a',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaty:',
+'faq' => 'Husto stajene prašenja (FAQ)',
+'faqpage' => 'Project:Husto stajene prašenja (FAQ)',
+
+# Vector skin
+'vector-action-addsection' => 'Temu přidać',
+'vector-action-delete' => 'wušmórnyć',
+'vector-action-move' => 'přesunyć',
+'vector-action-protect' => 'škitać',
+'vector-action-undelete' => 'Wobnowić',
+'vector-action-unprotect' => 'Škit wotstronić',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Strona pomocy',
+'vector-namespace-image' => 'Dataja',
+'vector-namespace-main' => 'Strona',
+'vector-namespace-media' => 'Medijowa strona',
+'vector-namespace-mediawiki' => 'Powěsć',
+'vector-namespace-project' => 'Projektowa strona',
+'vector-namespace-special' => 'Specialna strona',
+'vector-namespace-talk' => 'Diskusija',
+'vector-namespace-template' => 'Předłoha',
+'vector-namespace-user' => 'Wužiwarska strona',
+'vector-view-create' => 'Wutworić',
+'vector-view-edit' => 'Wobdźěłać',
+'vector-view-history' => 'Stawizny',
+'vector-view-view' => 'Čitać',
+'vector-view-viewsource' => 'Žórło sej wobhladać',
+'actions' => 'Akcije',
+'namespaces' => 'Mjenowe rumy',
+'variants' => 'Warianty',
'errorpagetitle' => 'Zmylk',
'returnto' => 'Wróćo k stronje $1.',
@@ -330,18 +368,22 @@ $messages = array(
'otherlanguages' => 'W druhich rěčach',
'redirectedfrom' => '(ze strony „$1” sposrědkowane)',
'redirectpagesub' => 'Daleposrědkowanje',
-'lastmodifiedat' => 'Strona bu posledni raz dnja $1 w $2 hodź. změnjena.', # $1 date, $2 time
+'lastmodifiedat' => 'Strona bu posledni raz dnja $1 w $2 hodź. změnjena.',
'viewcount' => 'Strona bu {{PLURAL:$1|jónu|dwójce|$1 razy|$1 razow}} wopytana.',
'protectedpage' => 'Škitana strona',
'jumpto' => 'Dźi do:',
'jumptonavigation' => 'Nawigacija',
'jumptosearch' => 'Pytać',
+'view-pool-error' => 'Wodaj, serwery su we wokomiku přećežene.
+Přewjele wužiwarjow pospytuje sej tutu stronu wobhladać.
+Prošu wočakń chwilku, prjedy hač pospytuješ sej tutu stronu hišće raz wobhladać.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Wo {{GRAMMAR:lokatiw|{{SITENAME}}}}',
'aboutpage' => 'Project:Wo',
'copyright' => 'Wobsah steji pod $1.',
-'copyrightpagename' => '{{SITENAME}} awtorske prawa',
'copyrightpage' => '{{ns:project}}:Awtorske prawa',
'currentevents' => 'Aktualne podawki',
'currentevents-url' => 'Project:Aktualne podawki',
@@ -349,8 +391,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impresum',
'edithelp' => 'Pomoc za wobdźěłowanje',
'edithelppage' => 'Help:Wobdźěłowanje',
-'faq' => 'Husto stajene prašenja (FAQ)',
-'faqpage' => 'Project:Husto stajene prašenja (FAQ)',
'helppage' => 'Help:Wobsah',
'mainpage' => 'Hłowna strona',
'mainpage-description' => 'Hłowna strona',
@@ -429,10 +469,6 @@ Poslednje wotprašenje w datowej bance běše:
"$1"
z funkcije "$2".
Datowa banka wróći zmylk "$3: $4"',
-'noconnect' => 'Wiki ma techniske problemy a njemóže ze serwerom datoweje banki zwjazać.<br />
-$1',
-'nodb' => 'Datowa banka $1 njeda so wubrać',
-'cachederror' => 'Naslědne je kopija z pufrowaka a njemóhło hižo aktualne być.',
'laggedslavemode' => 'Kedźbu: Je móžno, zo strona žane zaktualizowanja njewobsahuje.',
'readonly' => 'Datowa banka je zawrjena',
'enterlockreason' => 'Zapodaj přičinu za zawrjenje a přibližny čas, hdy budźe zawrjenje zběhnjene',
@@ -450,6 +486,8 @@ Zdźěl to prošu [[Special:ListUsers/sysop|admininistratorej]] podawajo wotpow
'readonly_lag' => 'Datowa banka bu awtomatisce zawrjena, mjeztym zo pospytuja wotwisne serwery datowych bankow hłowny serwer docpěć',
'internalerror' => 'Znutřkowny zmylk',
'internalerror_info' => 'Znutřkowny zmylk: $1',
+'fileappenderrorread' => '"$1" njeda so čitać při připowěšenju.',
+'fileappenderror' => 'Njeje móžno było "$1" k "$2" připowěsnyć.',
'filecopyerror' => 'Njebě móžno dataju „$1” k „$2” kopěrować.',
'filerenameerror' => 'Njebě móžno dataju „$1” na „$2” přemjenować.',
'filedeleteerror' => 'Njebě móžno dataju „$1” wušmórnyć.',
@@ -459,7 +497,8 @@ Zdźěl to prošu [[Special:ListUsers/sysop|admininistratorej]] podawajo wotpow
'unexpected' => 'Njewočakowana hódnota: "$1"="$2".',
'formerror' => 'Zmylk: njeje móžno formular wotesłać',
'badarticleerror' => 'Tuta akcija njeda so na tutej stronje wuwjesć.',
-'cannotdelete' => 'Njeje móžno podatu stronu abo dataju wušmórnyć. (Po zdaću je to hižo něchtó druhi činił.)',
+'cannotdelete' => 'Strona abo dataja "$1" njeje so dała wušmórnyć.
+Móže być, zo je hižo wot někoho druheho wušmórnjena.',
'badtitle' => 'Wopačny titul',
'badtitletext' => 'Požadane mjeno strony běše njepłaćiwy, prózdny abo njekorektny titul z mjezyrěcneho abo interwikijoweho wotkaza. Snano wobsahuje jedne znamješko abo wjacore znamješka, kotrež w titulach dowolene njejsu.',
'perfcached' => 'Sćěhowace daty z pufrowaka pochadźeja a snano cyle aktualne njejsu.',
@@ -493,7 +532,6 @@ Podata přičina je ''$2''.",
'virus-unknownscanner' => 'njeznaty antiwirus:',
# Login and logout pages
-'logouttitle' => 'Wotzjewjenje',
'logouttext' => "'''{{GENDER:|Sy|Sy}} nětko {{GENDER:|wotzjewjeny|wotzjewjena}}.'''
Móžeš {{GRAMMAR:akuzatiw|{{SITENAME}}}} nětko anonymnje dale wužiwać abo so ze samsnym abo druhim wužiwarskim mjenom [[Special:UserLogin|zaso přizjewić]].
@@ -501,7 +539,6 @@ Wobkedźbuj, zo so někotre strony dale jewja, kaž by hišće přizjewjeny był
'welcomecreation' => '== Witaj, $1! ==
Twoje konto bu wutworjene. Njezabudź swoje nastajenja za [[Special:Preferences|{{GRAMMAR:akuzatiw|{{SITENAME}}}}]] změnić.',
-'loginpagetitle' => 'Přizjewjenje',
'yourname' => 'Wužiwarske mjeno',
'yourpassword' => 'Hesło',
'yourpasswordagain' => 'Hesło znowa zapodać',
@@ -512,6 +549,7 @@ Twoje konto bu wutworjene. Njezabudź swoje nastajenja za [[Special:Preferences|
'nav-login-createaccount' => 'Konto wutworić abo so přizjewić',
'loginprompt' => 'Za přizjewjenje do {{GRAMMAR:genitiw|{{SITENAME}}}} dyrbja placki zmóžnjene być.',
'userlogin' => 'Załožće konto abo přizjewće so',
+'userloginnocreate' => 'Přizjewić',
'logout' => 'wotzjewić',
'userlogout' => 'wotzjewić',
'notloggedin' => 'Njepřizjewjeny',
@@ -523,27 +561,8 @@ Twoje konto bu wutworjene. Njezabudź swoje nastajenja za [[Special:Preferences|
'createaccountmail' => 'z mejlku',
'badretype' => 'Hesle, kotrejž sy zapodał, so njekryjetej.',
'userexists' => 'Wužiwarske mjeno, kotrež sy zapodał, so hižo wužiwa. Wubjer druhe mjeno.',
-'youremail' => 'E-mejl *:',
-'username' => 'Wužiwarske mjeno:',
-'uid' => 'ID wužiwarja:',
-'prefs-memberingroups' => 'Čłon {{PLURAL:$1|wužiwarskeje skupiny|wužiwarskeju skupinow|wužiwarskich skupinow|wužiwarskich skupinow}}:',
-'yourrealname' => 'Woprawdźite mjeno *',
-'yourlanguage' => 'Rěč:',
-'yourvariant' => 'Warianta:',
-'yournick' => 'Podpis:',
-'badsig' => 'Njepłaćiwa signatura, prošu HTML přepruwować.',
-'badsiglength' => 'Twoja signatura je předołha.
-Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} dołha być.',
-'yourgender' => 'Splah:',
-'gender-unknown' => 'Njepodaty',
-'gender-male' => 'Muski',
-'gender-female' => 'Žónski',
-'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narěčenje přez softwaru. Tuta informacija budźe zjawna.',
-'email' => 'E-mejl',
-'prefs-help-realname' => '* Woprawdźite mjeno (opcionalne): jeli so rozsudźiš to zapodać, budźe to so wužiwać, zo by tebi woprawnjenje za twoje dźěło dało.',
'loginerror' => 'Zmylk při přizjewjenju',
-'prefs-help-email' => 'E-mejlowa adresa je opcionalna, ale zmóžnja ći nowe hesło emejlować, jeli sy swoje hesło zabył. Móžeš tež druhim dowolić, će přez swoju wužiwarsku abo diskusijnu stronu skontaktować, bjeztoho zo by dyrbjał swoju identitu wotkrył.',
-'prefs-help-email-required' => 'Je płaćiwa emejlowa adresa trjeba.',
+'createaccounterror' => 'Wužiwarske konto njeda so załožić: $1',
'nocookiesnew' => 'Wužiwarske konto bu wutworjene, njejsy pak přizjewjeny. {{SITENAME}} wužiwa placki (cookies), zo bychu so wužiwarjo přizjewili. Sy placki znjemóžnił. Prošu zmóžń je a přizjew so potom ze swojim nowym wužiwarskim mjenom a hesłom.',
'nocookieslogin' => '{{SITENAME}} wužiwa placki (cookies) za přizjewjenje wužiwarjow wužiwa. Sy placki znjemóžnił. Prošu zmóžń je a spytaj hišće raz.',
'noname' => 'Njejsy płaćiwe wužiwarske mjeno podał.',
@@ -554,15 +573,18 @@ Wužiwarske mjena wobkedźbuja wulkopisanje.
Přepruwuj swój prawopis abo [[Special:UserLogin/signup|wutwor nowe konto]].',
'nosuchusershort' => 'Wužiwarske mjeno „<nowiki>$1</nowiki>” njeeksistuje. Prošu přepruwuj prawopis.',
'nouserspecified' => 'Dyrbiš wužiwarske mjeno podać',
+'login-userblocked' => 'Tutón wužiwar je zablokowany. Přizjewjenje njedowolene.',
'wrongpassword' => 'Hesło, kotrež sy zapodał, je wopačne. Prošu spytaj hišće raz.',
'wrongpasswordempty' => 'Hesło, kotrež sy zapodał, běše prózdne. Prošu spytaj hišće raz.',
-'passwordtooshort' => 'Hesło je překrótke. Dyrbi znajmjeńša $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} měć.',
+'passwordtooshort' => 'Hesła dyrbja znajmjeńša {{PLURAL:$1|1 znamješko|$1 znamješce|$1 znamješka|$1 znamješkow}} měć.',
+'password-name-match' => 'Twoje hesło dyrbi so wot twojeho wužiwarskeho mjena rozeznać.',
'mailmypassword' => 'Nowe hesło e-mejlować',
'passwordremindertitle' => 'Skedźbnjenje na hesło z {{GRAMMAR:genitiw|{{SITENAME}}}}',
'passwordremindertext' => 'Něchtó z IP-adresu $1 (najskerje ty) je wo nowe hesło za přizjewjenje za {{GRAMMAR:akuzatiw|{{SITENAME}}}} ($4) prosył. Nachwilne hesło za wužiwarja "$2" je so wutworiło a je nětko "$3". Jeli je to twój wotpohlad było dyrbiš so nětko přizjewić a nowe hesło wubrać. Twoje nachwilne hesło spadnje za {{PLURAL:$5|jeden dźeń|$5 dnjej|$5 dny|$5 dnjow}}.
Jeli něchtó druhi wo nowe hesło prosył abo ty sy so zaso na swoje hesło dopomnił a hižo nochceš je změnić, móžeš tutu powěsć ignorować a swoje stare hesło dale wužiwać.',
'noemail' => 'Za wužiwarja $1 žana e-mejlowa adresa podata njeje.',
+'noemailcreate' => 'Dyrbiš płaćiwu e-mejlowa adresu podać',
'passwordsent' => 'Nowe hesło bu na e-mejlowu adresu zregistrowanu za wužiwarja „$1” pósłane.
Prošu přizjew so znowa, po tym zo sy je přijał.',
'blocked-mailpassword' => 'Twoja IP-adresa bu blokowana; tohodla njeje dowolene, nowe hesło požadać, zo by so znjewužiwanju zadźěwało.',
@@ -582,8 +604,10 @@ Prjedy hač so druha mejlka ke kontu pósćele, dyrbiš so po instrukcijach w me
'createaccount-text' => 'Něchtó je wužiwarske konto za twoju e-mejlowu adresu na {{SITENAME}} ($4) z mjenom "$2" z hesłom "$3" wutworił. Ty měł so nětko přizjewić a swoje hesło změnić.
Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiło.',
+'usernamehasherror' => 'Wužiwarske mjeno njesmě hašowe znamješka wpbsahować',
'login-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu, prjedy hač znowa spytaš.',
'loginlanguagelabel' => 'Rěč: $1',
+'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
# Password reset dialog
'resetpass' => 'Hesło změnić',
@@ -595,17 +619,13 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
'retypenew' => 'Nowe hesło wospjetować:',
'resetpass_submit' => 'Hesło posrědkować a so přizjewić',
'resetpass_success' => 'Twoje hesło bu wuspěšnje změnjene! Nětko přizjewjenje běži...',
-'resetpass_bad_temporary' => 'Njepłaćiwe nachwilne hesło. Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.',
'resetpass_forbidden' => 'Hesła njedadźa so změnić.',
'resetpass-no-info' => 'Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.',
'resetpass-submit-loggedin' => 'Hesło změnić',
+'resetpass-submit-cancel' => 'Přetorhnyć',
'resetpass-wrong-oldpass' => 'Njepłaćiwe nachwilne abo aktualne hesło.
Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.',
'resetpass-temp-password' => 'Nachwilne hesło:',
-'resetpass-log' => 'Protokol wo změnjenju hesłow',
-'resetpass-logtext' => 'Deleka je protokol wužiwarjow, kotrychž hesło administrator je anulował.',
-'resetpass-logentry' => 'změni hesło za $1',
-'resetpass-comment' => 'Přičina za anulowanje hesła:',
# Edit page toolbar
'bold_sample' => 'Tučny tekst',
@@ -678,7 +698,6 @@ Prošu podaj wšě horjeka naspomnjene podrobnosće w naprašowanjach, kotrež
'blockededitsource' => 'Tekst <b>twojich změnow</b> strony <b>$1</b> so tu pokazuje:',
'whitelistedittitle' => 'Za wobdźěłowanje je přizjewjenje trěbne.',
'whitelistedittext' => 'Dyrbiš so $1, zo by strony wobdźěłować móhł.',
-'confirmedittitle' => 'Twoja e-mejlowa adresa dyrbi so wobkrućić, prjedy hač móžeš strony wobdźěłować.',
'confirmedittext' => 'Dyrbiš swoju e-mejlowu adresa wobkrućić, prjedy hač móžeš strony wobdźěłować. Prošu zapodaj a wobkruć swoju e-mejlowu adresu we [[Special:Preferences|wužiwarskich nastajenjach]].',
'nosuchsectiontitle' => 'Wotrězk njeda so namakać',
'nosuchsectiontext' => 'Sy spytał, wotrězk wobdźěłać, kotryž njeeksistuje.
@@ -694,9 +713,14 @@ Hesło za tute nowe konto da so na stronje ''[[Special:ChangePassword|hesło zm
'newarticletext' => 'Sy wotkaz k stronje slědował, kotraž hišće njeeksistuje. Zo by stronu wutworił, wupjelń slědowace tekstowe polo (hlej [[{{MediaWiki:Helppage}}|stronu pomocy]] za dalše informacije). Jeli sy zmylnje tu, klikń prosće na tłóčatko <b>Wróćo</b> we swojim wobhladowaku.',
'anontalkpagetext' => "---- ''To je diskusijna strona za anonymneho wužiwarja, kiž hišće konto wutworił njeje abo je njewužiwa. Dyrbimy tohodla numerisku IP-adresu wužiwać, zo bychmy jeho/ju identifikowali. Tajka IP-adresa hodźi so wot wjacorych wužiwarjow zhromadnje wužiwać. Jeli sy anonymny wužiwar a měniš, zo buchu irelewantne komentary k tebi pósłane, [[Special:UserLogin/signup|wutwor prošu konto]] abo [[Special:UserLogin|přizjew so]], zo by přichodnu šmjatańcu z anonymnymi wužiwarjemi wobešoł.''",
'noarticletext' => 'Tuchwilu tuta strona žadyn tekst njewobsahuje, móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony na druhich stronach pytać]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wotpowědne protokole pytać] abo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tutu stronu wobdźěłać]</span>.',
+'noarticletext-nopermission' => 'Tuchwilu žadyn tekst na tutej stronje njeje.
+Móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony]] na druhich stronach pytać abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pytaj wotpowědne protokole]</span>.',
'userpage-userdoesnotexist' => 'Wužiwarske konto „$1“ njeje zregistrowane. Prošu pruwuj, hač chceš tutu stronu woprawdźe wutworić/wobdźěłać.',
+'userpage-userdoesnotexist-view' => 'Wužiwarske konto "$1" njeje zregistrowane.',
+'blocked-notice-logextract' => 'Tutón wužiwar je tuchwilu zablokowany. Najnowši protokolowy zapisk so deleka jako referenca podawa:',
'clearyourcache' => '<b>Kedźbu:</b> Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, <b>Mozilla/Firefox/Safari:</b> tłóč na <i>Umsch</i> kliknjo na <i>Znowa</i> abo tłóč <i>Strg-Umsch-R</i> (<i>Cmd-Shift-R</i> na Apple Mac); <b>IE:</b> tłóč <i>Strg</i> kliknjo na symbol <i>Aktualisieren</i> abo tłóč <i>Strg-F5</i>; <b>Konqueror:</b>: Klikń jenož na tłóčatko <i>Erneut laden</i> abo tłoč <i>F5</i>; Wužiwarjo <b>Opery</b> móža swój pufrowak dospołnje w <i>Tools→Preferences</i> wuprózdnić.',
-'usercssjsyoucanpreview' => "'''Pokiw:''' Wužij tłóčku „Přehlad”, zo by swój nowy css/js do składowanja testował.",
+'usercssyoucanpreview' => "'''Pokiw:''' Wužij tłóčku '{{int:showpreview}}', zo by swój nowy css do składowanja testował.",
+'userjsyoucanpreview' => "'''Pokiw:''' Wužij tłóčatko \"{{int:showpreview}}\", zo by swój nowy JavaScript do składowanja testował.",
'usercsspreview' => "'''Wobkedźbujće, zo sej jenož přehlad swojeho wužiwarskeho CSS wobhladuješ. Hišće njeje składowany!'''",
'userjspreview' => "== Přehlad twojeho wosobinskeho JavaScript ==
@@ -738,13 +762,16 @@ Lubiš nam tež, zo sy jón sam napisał abo ze zjawneje domejny abo z podobneho
'readonlywarning' => "'''KEDŹBU: Datowa banka bu wothladanja dla zawrjena, tohodla njemóžeš swoje změny nětko składować. Móžeš tekst do tekstoweje dataje přesunyć a jón za pozdźišo składować.'''
Administrator, kiž je ju zawrjena, je tutu přičinu podał: $1",
-'protectedpagewarning' => "'''KEDŹBU: Strona bu škitana, tak zo jenož wužiwarjo z prawami administratora móža ju wobdźěłać.'''",
-'semiprotectedpagewarning' => '<b>Kedźbu:</b> Strona bu škitana, tak zo jenož přizjewjeni wužiwarjo móža ju wobdźěłać.',
+'protectedpagewarning' => "'''KEDŹBU: Tuta strona bu zawrjena, tak zo jenož wužiwarjo z prawami administratora móža ju wobdźěłać.'''
+Najnowši protokolowy zapisk je deleka jako referenca podaty:",
+'semiprotectedpagewarning' => "'''Kedźbu:''' Tuta strona bu zawrjena, tak zo jenož zregistrowani wužiwarjo móža ju wobdźěłać.
+Najnowši protokolowy zapisk je deleka jako referenca podaty:",
'cascadeprotectedwarning' => "'''KEDŹBU:''' Tuta strona je škitana, tak zo móža ju jenož wužiwarjo z prawami administratora wobdźělać, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitane}}:",
-'titleprotectedwarning' => "'''WARNOWANJE: Tuta strona bu zawrjena, tak zo [[Special:ListGroupRights|wosebite prawa]] su trěbne, zo by ju wutworił.'''",
-'templatesused' => 'Na tutej stronje wužiwane předłohi:',
-'templatesusedpreview' => 'W tutym přehledźe wužiwane předłohi:',
-'templatesusedsection' => 'W tutym wotrězku wužiwane předłohi:',
+'titleprotectedwarning' => "'''WARNOWANJE: Tuta strona bu zawrjena, tak zo [[Special:ListGroupRights|wosebite prawa]] su trěbne, zo by so wutworił.'''
+Najnowši protokolowy zapisk je deleka jako referenca podaty:",
+'templatesused' => 'Na tutej stronje {{PLURAL:$1|wužiwana předłoha|wužiwanej předłoze|wužiwane předłohi|wužiwane předłohi}}:',
+'templatesusedpreview' => 'W tutym přehledźe {{PLURAL:$1|wužiwana předłoha|wužiwanej předłoze|wužiwane předłohi|wužiwane předłohi}}:',
+'templatesusedsection' => 'W tutym wotrězku {{PLURAL:$1|wužiwana předłoha|wužiwanej předłoze|wužiwane předłohi|wužiwane předłohi}}:',
'template-protected' => '(škitana)',
'template-semiprotected' => '(škitana za njepřizjewjenych wužiwarjow a nowačkow)',
'hiddencategories' => 'Tuta strona je čłon w {{PLURAL:$1|1 schowanej kategoriji|$1 schowanymaj kategorijomaj|$1 schowanych kategorijach|$1 schowanych kategorijach}}:',
@@ -752,15 +779,17 @@ Administrator, kiž je ju zawrjena, je tutu přičinu podał: $1",
'nocreatetitle' => 'Wutworjenje stron je wobmjezowane.',
'nocreatetext' => 'Na {{GRAMMAR:lokatiw|{{SITENAME}}}} bu wutworjenje nowych stronow wobmjezowane. Móžeš wobstejace strony wobdźěłać abo [[Special:UserLogin|so přizjewić abo wužiwarske konto wutworić]].',
'nocreate-loggedin' => 'Nimaš prawo, zo by nowe strony wutworił.',
+'sectioneditnotsupported-title' => 'Wobdźěłowanje wotrězka so njepodpěruje',
+'sectioneditnotsupported-text' => 'Wobdźěłowanje wotrězka so na tutej wobdźěłowanskej stronje njepodpěruje.',
'permissionserrors' => 'Woprawnjenske zmylki',
'permissionserrorstext' => 'Nimaš prawo, zo by tutu akciju wuwjedł. {{PLURAL:$1|Přičina|Přičiny}}:',
'permissionserrorstext-withaction' => 'Nimaš dowolnosć za $2 ze {{PLURAL:$1|slědowaceje přičiny|slědowaceju přičinow|slědowacych přičinow|slědowacych přičinow}}:',
-'recreate-deleted-warn' => "'''Kedźbu: Wutworiš stronu, kiž bu prjedy wušmórnjena.'''
+'recreate-moveddeleted-warn' => "'''Kedźbu: Wutworiš stronu, kiž bu prjedy wušmórnjena.'''
-Prošu přepruwuj, hač je znowawutworjenje woprawnjena a wotpowěduje prawidłam projekta.
-Tu slěduje wujimk z protokola wušmórnjenjow z přičinu za předawše wušmórnjenje:",
-'deleted-notice' => 'Tuta strona bu wušmórnjena. Protokol wušmórnjenjow za tutu stronu so deleka jako referenca podawa.',
-'deletelog-fulllog' => 'Dospołny protokol wobhladać',
+Prošu přepruwuj, hač je přihódne z wobdźěłowanjom tuteje strony pokročować.
+Protokol wušmórnjenjow a přesunjenjow za tutu stronu su tu za informaciju:",
+'moveddeleted-notice' => 'Tuta strona bu wušmórnjena. Protokol wušmórnjenjow a přesunjenjow za stronu so deleka jako referenca podawa.',
+'log-fulllog' => 'Dospołny protokol sej wobhladać',
'edit-hook-aborted' => 'Wobdźěłanje přez hoku přetorhnjene.
Njeje žane wujasnjenje podała.',
'edit-gone-missing' => 'Strona njeje so aktualizować dała.
@@ -781,6 +810,7 @@ Dyrbjała mjenje hač $2 {{PLURAL:$2|wołanje|wołanjej|wołanja|wołanjow}} mě
'post-expand-template-argument-category' => 'Strony, kotrež wuwostajene předłohowe argumenty wobsahuja',
'parser-template-loop-warning' => 'Předłohowa sekla wotkryta: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limit za rekursijnu hłubokosć předłohi překročeny ($1)',
+'language-converter-depth-warning' => 'Limit hłubokosće rěčneho konwertera překročena ($1)',
# "Undo" feature
'undo-success' => 'Wersija je so wuspěšnje wotstroniła. Prošu přepruwuj deleka w přirunanskim napohledźe, hač twoja změna bu přewzata a klikń potom na „Składować”, zo by změnu składował.',
@@ -800,7 +830,7 @@ Přičina za blokowanje, podata wot $3, je: ''$2''",
'currentrev' => 'Aktualna wersija',
'currentrev-asof' => 'Aktualna wersija wot $1',
'revisionasof' => 'Wersija z $1',
-'revision-info' => 'Wersija z $1 wužiwarja $2', # Additionally available: $3: revision id
+'revision-info' => 'Wersija wot $1 wužiwarja $2',
'previousrevision' => '←starša wersija',
'nextrevision' => 'nowša wersija→',
'currentrevisionlink' => 'Aktualnu wersiju pokazać',
@@ -813,7 +843,7 @@ Přičina za blokowanje, podata wot $3, je: ''$2''",
Legenda: (akt) = rozdźěl k tuchwilnej wersiji, (posl) = rozdźěl k předchadnej wersiji, S = snadna změna.',
'history-fieldset-title' => 'Stawizny přepytać',
-'deletedrev' => '[wušmórnjena]',
+'history-show-deleted' => 'Jenož wušmórnjene',
'histfirst' => 'najstaršu',
'histlast' => 'tuchwilnu',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajtaj|$1 bajty|$1 bajtow}})',
@@ -822,69 +852,111 @@ Legenda: (akt) = rozdźěl k tuchwilnej wersiji, (posl) = rozdźěl k předchadn
# Revision feed
'history-feed-title' => 'Stawizny wersijow',
'history-feed-description' => 'Stawizny wersijow za tutu stronu w {{GRAMMAR:lokatiw|{{SITENAME}}}}',
-'history-feed-item-nocomment' => '$1 w $2 hodź.', # user at time
+'history-feed-item-nocomment' => '$1 w $2 hodź.',
'history-feed-empty' => 'Strona, kotruž sy požadał, njeeksistuje. Bu snano z wikija wotstronjena abo přesunjena. Móžeš tu [[Special:Search|w {{SITENAME}}]] za stronami z podobnym titulom pytać.',
# Revision deletion
-'rev-deleted-comment' => '(komentar wotstronjeny)',
-'rev-deleted-user' => '(wužiwarske mjeno wotstronjene)',
-'rev-deleted-event' => '(Protokolowa akcija bu wotstronjena)',
-'rev-deleted-text-permission' => "Tuta wersija strony bu '''wušmórnjena'''.
-Hlej podrobnosće w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
-'rev-deleted-text-view' => "Tuta wersija strony bu '''wušmórnjena'''.
-Jako administrator móžeš sej ju wobhladać; hlej podrobnosće w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
-'rev-deleted-no-diff' => "Njemóžeš sej tutón rozdźěl wobhladać, dokelž jedna z wersijow bu '''wušmórnjena'''.
-Hlej ewentuelne podrobnosće w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
-'rev-deleted-unhide-diff' => "Jedna z wersijow tutoho rozdźěla bu '''wušmórnjena'''.
-Podrobnosće hlej w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} protokol wušmórnjenjow].
+'rev-deleted-comment' => '(komentar wotstronjeny)',
+'rev-deleted-user' => '(wužiwarske mjeno wotstronjene)',
+'rev-deleted-event' => '(Protokolowa akcija bu wotstronjena)',
+'rev-deleted-user-contribs' => '[wužiwarske mjeno wotstronjene abo IP-adresa wotstronjena - změna mjez přinoškami schowana]',
+'rev-deleted-text-permission' => "Tuta wersija strony bu '''wušmórnjena'''.
+Hlej podrobnosće w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
+'rev-deleted-text-unhide' => "Tuta wersija strony bu '''wušmórnjena'''.
+Hlej podrobnosće w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].
+Jako administrator móžeš [$1 sej tutu wersiju wobhladać], jeli chceš pokročować.",
+'rev-suppressed-text-unhide' => "Tuta wersija strony bu '''potłóčena'''.
+Snano su podrobnosće w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu potłóčenjow].
+Jako administrator móžeš [$1 sej tutu wersiju wobhladać], jeli chceš pokročować.",
+'rev-deleted-text-view' => "Tuta wersija strony bu '''wušmórnjena'''.
+Jako administrator móžeš sej ju wobhladać; hlej podrobnosće w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
+'rev-suppressed-text-view' => "Tuta wersija strony bu '''potłóčena'''.
+Jako administrator móžeš sej ju wobhladać; snano su podrobnosće w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu potłóčenjow].",
+'rev-deleted-no-diff' => "Njemóžeš sej tutón rozdźěl wobhladać, dokelž jedna z wersijow bu '''wušmórnjena'''.
+Hlej podrobnosće w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
+'rev-suppressed-no-diff' => "Njemóžeš sej tutón rozdźěl wobhladać, dokelž jedna z wersijow bu '''zničena'''.",
+'rev-deleted-unhide-diff' => "Jedna z wersijow tutoho rozdźěla bu '''wušmórnjena'''.
+Podrobnosće hlej w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokol wušmórnjenjow].
Jako administrator móžeš hišće [$1 sej tutón rozdźěl wobhladać], jeli chceš pokročować.",
-'rev-delundel' => 'pokazać/schować',
-'revisiondelete' => 'Wersije wušmórnyć/wobnowić',
-'revdelete-nooldid-title' => 'Njepłaćiwa cilowa wersija',
-'revdelete-nooldid-text' => 'Pak njejsy cilowu wersiju podał, zo by tutu funkciju wuwjedł, podata wersija njeeksistuje pak pospytuješ aktualnu wersiju schować.',
-'revdelete-nologtype-title' => 'Žadyn protokolowy typ podaty',
-'revdelete-nologtype-text' => 'Njejsy protokolowy typ podał, zo by tutu akciju wuwjedł.',
-'revdelete-toomanytargets-title' => 'Přewjele cilow',
-'revdelete-toomanytargets-text' => 'Sy přewjele cilowych typow podał, zo by tutu akciju wuwjedł.',
-'revdelete-nologid-title' => 'Njepłaćiwy protokolowy zapisk',
-'revdelete-nologid-text' => 'Pak njejsy cilowy protokolowy podawk podał, zo by tutu funkciju wuwjedł pak podaty zapisk njeeksistuje.',
-'revdelete-selected' => "'''{{PLURAL:$2|Wubrana wersija|Wubranej wersiji|Wubrane wersije|Wubranych wersijow}} wot [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Wubrany zapisk z protokola|Wubranej zapiskaj z protokola|Wubrane zapiski z protokola|Wubrane zapiski z protokola}} za '''$1:''''''",
-'revdelete-text' => "'''Wušmórnjene wersije a podawki so w stawiznach a protokolach dale jewja, ale dźěle jich wobsaha budu njepřistupne za zjawnosć.'''
-
-Druzy administratorojo na {{GRAMMAR:lokatiw|{{SITENAME}}}} móža hišće na schowany tekst přistup měć a jón z pomocu samsneho interfejsa wobnowić, chibazo tež přidatne prawa su wobmjezowane.
-
-Prošu wobkruć, zo chceš to činić, zo rozumiš sćěhi a zo činiš to wotpowědujo [[{{MediaWiki:Policy-url}}|zasadam]].",
-'revdelete-suppress-text' => "Potłóčenje dyrbjało so '''jenož''' za slědowace pady wužiwać:
+'rev-suppressed-unhide-diff' => "Jedna z wersijow tutoho rozdźěla je so '''potłóčiła'''.
+Za podrobnosće hlej [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokol potłóčenjow].
+Jako administrator móžeš hišće [$1 sej tutón rozdźěl wobhladać], jeli chceš pokročować.",
+'rev-deleted-diff-view' => "Jedna z wersijiw tutoho rozdźěla je so '''wušmórnyła'''.
+Jako administrator móžeš sej tutón rozdźěl wobhladać; podrobnosće namakaš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wušmórnjenjow].",
+'rev-suppressed-diff-view' => "Jedna z wersijiw tutoho rozdźěla je so '''potłóčiła'''.
+Jako administrator móžeš sej tutón rozdźěl wobhladać; podrobnosće namakaš w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu potłóčenjow].",
+'rev-delundel' => 'pokazać/schować',
+'rev-showdeleted' => 'pokazać',
+'revisiondelete' => 'Wersije wušmórnyć/wobnowić',
+'revdelete-nooldid-title' => 'Njepłaćiwa cilowa wersija',
+'revdelete-nooldid-text' => 'Pak njejsy cilowu wersiju podał, zo by tutu funkciju wuwjedł, podata wersija njeeksistuje pak pospytuješ aktualnu wersiju schować.',
+'revdelete-nologtype-title' => 'Žadyn protokolowy typ podaty',
+'revdelete-nologtype-text' => 'Njejsy protokolowy typ podał, zo by tutu akciju wuwjedł.',
+'revdelete-nologid-title' => 'Njepłaćiwy protokolowy zapisk',
+'revdelete-nologid-text' => 'Pak njejsy cilowy protokolowy podawk podał, zo by tutu funkciju wuwjedł pak podaty zapisk njeeksistuje.',
+'revdelete-no-file' => 'Podata dataja njeeksistuje.',
+'revdelete-show-file-confirm' => 'Chceš sej woprawdźe wušmórnjenu wersiju dataje "<nowiki>$1</nowiki>" wot $2 $3 wobhladać?',
+'revdelete-show-file-submit' => 'Haj',
+'revdelete-selected' => "'''{{PLURAL:$2|Wubrana wersija|Wubranej wersiji|Wubrane wersije|Wubranych wersijow}} wot [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Wubrany zapisk z protokola|Wubranej zapiskaj z protokola|Wubrane zapiski z protokola|Wubrane zapiski z protokola}} za '''$1:''''''",
+'revdelete-text' => "'''Wušmórnjene wersije a podawki so w stawiznach a protokolach dale jewja, ale dźěle jich wobsaha budu njepřistupne za zjawnosć.'''
+Druzy administratorojo na {{GRAMMAR:lokatiw|{{SITENAME}}}} móža hišće na schowany tekst přistup měć a jón z pomocu samsneho interfejsa wobnowić, chibazo tež přidatne prawa su wobmjezowane.",
+'revdelete-confirm' => 'Prošu potwjerdź, zo chceš to činić, zo rozumiš konsekwency a zo činiš to po [[{{MediaWiki:Policy-url}}|prawidłach]].',
+'revdelete-suppress-text' => "Potłóčenje dyrbjało so '''jenož''' za slědowace pady wužiwać:
* Njepřihódne wosobinske informacije
*: ''bydlenske adresy a telefonowe čisła, čisła socialneho zawěsćenja atd.''",
-'revdelete-legend' => 'Wobmjezowanja za widźomnosć nastajić',
-'revdelete-hide-text' => 'Tekst tuteje wersije schować',
-'revdelete-hide-name' => 'Akciju w protokolach schować',
-'revdelete-hide-comment' => 'Zjeće schować',
-'revdelete-hide-user' => 'Wužiwarske mjeno/IP-adresu schować',
-'revdelete-hide-restricted' => 'Daty wot administratorow kaž tež te druhich wužiwarjow potłóčić',
-'revdelete-suppress' => 'Přičinu wušmórnjenja tež za administratorow schować',
-'revdelete-hide-image' => 'Wobsah wobraza schować',
-'revdelete-unsuppress' => 'Wobmjezowanja za wobnowjene wersije zběhnyć',
-'revdelete-log' => 'Přičina:',
-'revdelete-submit' => 'Na wubranu wersiju nałožować',
-'revdelete-logentry' => 'Widźomnosć wersije změnjena za [[$1]]',
-'logdelete-logentry' => 'je widźomnosć za [[$1]] změnił',
-'revdelete-success' => "'''Widźomnosć wersije bu wuspěšnje zaktualizowana.'''",
-'logdelete-success' => 'Widźomnosć zapiska bu wuspěšnje změnjena.',
-'revdel-restore' => 'Widźomnosć změnić',
-'pagehist' => 'Stawizny strony',
-'deletedhist' => 'Wušmórnjene stawizny',
-'revdelete-content' => 'wobsah',
-'revdelete-summary' => 'zjeće wobdźěłać',
-'revdelete-uname' => 'wužiwarske mjeno',
-'revdelete-restricted' => 'na administratorow nałožene wobmjezowanja',
-'revdelete-unrestricted' => 'Wobmjezowanja za administratorow wotstronjene',
-'revdelete-hid' => '$1 schowany',
-'revdelete-unhid' => '$1 pokazany',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|wersija|wersiji|wersije|wersijow}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|podawk|podawkaj|podawki|podawkow}}',
+'revdelete-legend' => 'Wobmjezowanja za widźomnosć nastajić',
+'revdelete-hide-text' => 'Tekst tuteje wersije schować',
+'revdelete-hide-image' => 'Wobsah wobraza schować',
+'revdelete-hide-name' => 'Akciju w protokolach schować',
+'revdelete-hide-comment' => 'Zjeće schować',
+'revdelete-hide-user' => 'Wužiwarske mjeno/IP-adresu schować',
+'revdelete-hide-restricted' => 'Daty wot administratorow kaž tež te druhich wužiwarjow potłóčić',
+'revdelete-radio-same' => '(njezměnić)',
+'revdelete-radio-set' => 'Haj',
+'revdelete-radio-unset' => 'Ně',
+'revdelete-suppress' => 'Přičinu wušmórnjenja tež za administratorow schować',
+'revdelete-unsuppress' => 'Wobmjezowanja za wobnowjene wersije zběhnyć',
+'revdelete-log' => 'Přičina:',
+'revdelete-submit' => 'Na {{PLURAL:$1|wubranu wersiju|wubranej wersiji|wubrane wersije|wubrane wersije}} nałožować',
+'revdelete-logentry' => 'Widźomnosć wersije změnjena za [[$1]]',
+'logdelete-logentry' => 'je widźomnosć za [[$1]] změnił',
+'revdelete-success' => "'''Widźomnosć wersije bu wuspěšnje zaktualizowana.'''",
+'revdelete-failure' => "'''Wersijowa widźomnosć njeda so aktualizować:'''
+$1",
+'logdelete-success' => 'Widźomnosć zapiska bu wuspěšnje změnjena.',
+'logdelete-failure' => "'''Protokolowa widźomnosć njeda so nastajić:'''
+$1",
+'revdel-restore' => 'Widźomnosć změnić',
+'pagehist' => 'Stawizny strony',
+'deletedhist' => 'Wušmórnjene stawizny',
+'revdelete-content' => 'wobsah',
+'revdelete-summary' => 'zjeće wobdźěłać',
+'revdelete-uname' => 'wužiwarske mjeno',
+'revdelete-restricted' => 'na administratorow nałožene wobmjezowanja',
+'revdelete-unrestricted' => 'Wobmjezowanja za administratorow wotstronjene',
+'revdelete-hid' => '$1 schowany',
+'revdelete-unhid' => '$1 pokazany',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|wersija|wersiji|wersije|wersijow}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|podawk|podawkaj|podawki|podawkow}}',
+'revdelete-hide-current' => 'Zmylk při chowanju zapiska wot $2, $1: to je aktualna wersija.
+Njeda so schować.',
+'revdelete-show-no-access' => 'Zmylk při pokazowanju zapiska wot $2, $1: tutón zapisk bu jako "wobmjezowany" markěrowany.
+Nimaš přistup na njón.',
+'revdelete-modify-no-access' => 'Zmylk při změnjenju zapiska wot $2, $1: tutón zapisk bu jako "wobmjezowany" markěrowany.
+Nimaš přistup na njón.',
+'revdelete-modify-missing' => 'Zmylk při změnjenju zapiska ID $1: pobrachuje w datowej bance!',
+'revdelete-no-change' => "'''Warnowanje:''' zapisk wot $2, $1 je hižo požadane nastajenja widźomnosće měł.",
+'revdelete-concurrent-change' => 'Zmylk při změnjenju zapiska wot $2, $1: zda so, zo jeho status je so wot někoho druheho změnił, mjeztym zo sy spytał jón změnić.
+Prošu přepruwuj protokole.',
+'revdelete-only-restricted' => 'Zmylk při chowanju zapiska wot $2, $1; njemóžeš zapiski před wočemi administratorow potłóčić, bjez toho zo wuběraš tež jednu z druhich widźomnosćowych opcijow.',
+'revdelete-reason-dropdown' => '*Zwučene přičiny za wušmórnjenje
+** Přeńdźenje awtorskeho prawa
+** Njepřihódne wosobinske informacije',
+'revdelete-otherreason' => 'Druha/přidatna přičina:',
+'revdelete-reasonotherlist' => 'Druha přičina',
+'revdelete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
+'revdelete-offender' => 'Awtor wersije:',
# Suppression log
'suppressionlog' => 'Protokol potłóčenjow',
@@ -920,67 +992,13 @@ Zawěsć, zo tuta změna stawiznisku kontinuitu strony wobchowuje.',
'mergelogpagetext' => 'Deleka je lisćina najaktualnišich zjednoćenjow stawiznow dweju stronow.',
# Diffs
-'history-title' => 'Stawizny wersijow strony „$1“',
-'difference' => '(rozdźěl mjez wersijomaj)',
-'lineno' => 'Rjadka $1:',
-'compareselectedversions' => 'Wubranej wersiji přirunać',
-'visualcomparison' => 'Wizuelne přirunanje',
-'wikicodecomparison' => 'Přirunanje wikiteksta',
-'editundo' => 'cofnyć',
-'diff-multi' => '<small>(Přirunanje wersijow zapřija {{PLURAL:$1|jednu mjez nimaj ležacu wersiju|dwě mjez nimaj ležacej wersiji|$1 mjez nimaj ležace wersije|$1 mjez nimaj ležacych wersijow}}.)</small>',
-'diff-movedto' => 'přesunjeny do $1',
-'diff-styleadded' => 'Stil $1 přidaty',
-'diff-added' => '$1 přidaty',
-'diff-changedto' => 'Do $1 změnjeny',
-'diff-movedoutof' => 'přesunjeny z $1',
-'diff-styleremoved' => 'Stil $1 wotstronjeny',
-'diff-removed' => '$1 wotstronjeny',
-'diff-changedfrom' => 'Z $1 změnjeny',
-'diff-src' => 'žórło',
-'diff-withdestination' => 'z cilom $1',
-'diff-with' => '&#32;z $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'šěrokosć',
-'diff-height' => 'wysokosć',
-'diff-p' => "'''wotstawk'''",
-'diff-blockquote' => "'''blokowy citat'''",
-'diff-h1' => "'''nadpis (1. runina)'''",
-'diff-h2' => "'''nadpis (2. runina)'''",
-'diff-h3' => "'''nadpis (3. runina)'''",
-'diff-h4' => "'''nadpis (4. runina)'''",
-'diff-h5' => "'''nadpis (5. runina)'''",
-'diff-pre' => "'''předformatowany blok'''",
-'diff-div' => "'''blokowy element'''",
-'diff-ul' => "'''nječisłowana lisćina'''",
-'diff-ol' => "'''čisłowana lisćina'''",
-'diff-li' => "'''lisćinowy zapisk'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''tabelowy wobsah'''",
-'diff-tr' => "'''rjadka'''",
-'diff-td' => "'''cela'''",
-'diff-th' => "'''nadpismo'''",
-'diff-br' => "'''linkowe łamanje'''",
-'diff-hr' => "'''horicontalna linija'''",
-'diff-code' => "'''blok kompjuteroweho koda'''",
-'diff-dl' => "'''definiciska lisćina'''",
-'diff-dt' => "'''definiciske zapřijeće'''",
-'diff-dd' => "'''definicija'''",
-'diff-input' => "'''zapodaće'''",
-'diff-form' => "'''formular'''",
-'diff-img' => "'''wobraz'''",
-'diff-span' => "'''linkowy element'''",
-'diff-a' => "'''wotkaz'''",
-'diff-i' => "'''kursiwny'''",
-'diff-b' => "'''tučny'''",
-'diff-strong' => "'''sylny'''",
-'diff-em' => "'''wuzběhnjenje'''",
-'diff-font' => "'''Pismo'''",
-'diff-big' => "'''wulki'''",
-'diff-del' => "'''wušmórnjeny'''",
-'diff-tt' => "'''kruta šěrokosć'''",
-'diff-sub' => "'''hłuboko stajeny'''",
-'diff-sup' => "'''horjeka stajeny'''",
-'diff-strike' => "'''přešmórnyć'''",
+'history-title' => 'Stawizny wersijow strony „$1“',
+'difference' => '(rozdźěl mjez wersijomaj)',
+'lineno' => 'Rjadka $1:',
+'compareselectedversions' => 'Wubranej wersiji přirunać',
+'showhideselectedversions' => 'Wubrane wersije pokazać/schować',
+'editundo' => 'cofnyć',
+'diff-multi' => '<small>(Přirunanje wersijow zapřija {{PLURAL:$1|jednu mjez nimaj ležacu wersiju|dwě mjez nimaj ležacej wersiji|$1 mjez nimaj ležace wersije|$1 mjez nimaj ležacych wersijow}}.)</small>',
# Search results
'searchresults' => 'Pytanske wuslědki',
@@ -988,29 +1006,25 @@ Zawěsć, zo tuta změna stawiznisku kontinuitu strony wobchowuje.',
'searchresulttext' => 'Za dalše informacije wo pytanju {{GRAMMAR:genitiw|{{SITENAME}}}}, hlej [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Sy za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wšěmi stronami, kotrež započinaja so z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wšěmi stronami, kotrež na "$1" wotkazuja]]) pytal.',
'searchsubtitleinvalid' => 'Sy naprašowanje za „$1“ stajił.',
-'noexactmatch' => "'''Strona z titulom \"\$1\" njeeksistuje.'''
-Móžeš [[:\$1|tutu stronu wutworić]].",
-'noexactmatch-nocreate' => "'''Njeje strona z titulom \"\$1\".'''",
'toomanymatches' => 'Přewjele pytanskich wuslědkow, prošu spytaj druhe wotprašenje.',
'titlematches' => 'Strony z wotpowědowacym titulom',
'notitlematches' => 'Žane strony z wotpowědowacym titulom',
'textmatches' => 'Strony z wotpowědowacym tekstom',
'notextmatches' => 'Žane strony z wotpowědowacym tekstom',
-'prevn' => 'předchadne $1',
-'nextn' => 'přichodne $1',
+'prevn' => '{{PLURAL:$1|předchadny $1|předchadnej $1|předchadne $1|předchadnych $1}}',
+'nextn' => '{{PLURAL:$1|přichodny $1|přichodnej $1|přichodne $1|přichodnych $1}}',
'prevn-title' => '{{PLURAL:$1|Předchadny wuslědk|Předchadnej $1 wuslědkaj|Předchadne $1 wuslědki|Předchadnych $1 wuslědkow}}',
'nextn-title' => '{{PLURAL:$1|Přichodny wuslědk|Přichodnej $1 wuslědkaj|Přichodne $1 wuslědki|Přichodnych $1 wuslědkow}}',
'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědkaj|wuslědki|wuslědkow}} na stronu pokazać',
-'viewprevnext' => '($1) ($2) ($3) pokazać',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazać',
'searchmenu-legend' => 'Pytanske opcije',
'searchmenu-exists' => "'''Je strona z mjenom \"[[\$1]]\" na tutym wikiju'''",
'searchmenu-new' => "'''Wutwor stronu \"[[:\$1|\$1]]\" na tutym wikiju!'''",
'searchhelp-url' => 'Help:Wobsah',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Strony z tutym prefiksom přepytać]]',
'searchprofile-articles' => 'Wobsahowe strony',
-'searchprofile-articles-and-proj' => 'Wobsahowe & projektowe strony',
-'searchprofile-project' => 'Projektowe strony',
-'searchprofile-images' => 'Dataje',
+'searchprofile-project' => 'Pomoc a projektowe strony',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Wšitko',
'searchprofile-advanced' => 'Rozšěrjeny',
'searchprofile-articles-tooltip' => 'W $1 pytać',
@@ -1018,8 +1032,6 @@ Móžeš [[:\$1|tutu stronu wutworić]].",
'searchprofile-images-tooltip' => 'Za datajemi pytać',
'searchprofile-everything-tooltip' => 'Cyły wobsah přepytać (inkluziwnje diskusijne strony)',
'searchprofile-advanced-tooltip' => 'W swójskich mjenowych rumach pytać',
-'prefs-search-nsdefault' => 'Ze standardnymi nastajenjemi pytać:',
-'prefs-search-nscustom' => 'Swójske mjenowe rumy přepytać:',
'search-result-size' => '$1 ({{PLURAL:$2|1 słowo|$2 słowje|$2 słowa|$2 słowow}})',
'search-result-score' => 'Relewanca: $1 %',
'search-redirect' => '(Daleposrědkowanje $1)',
@@ -1032,11 +1044,12 @@ Móžeš [[:\$1|tutu stronu wutworić]].",
'search-mwsuggest-disabled' => 'žane namjety',
'search-relatedarticle' => 'Přiwuzne',
'mwsuggest-disable' => 'Namjety AJAX znjemóžnić',
+'searcheverything-enable' => 'We wšěch mjenowych rumach pytać',
'searchrelated' => 'přiwuzny',
'searchall' => 'wšě',
'showingresults' => "Deleka so hač {{PLURAL:$1|'''1''' wuslědk pokazuje|'''$1''' wuslědkaj pokazujetej|'''$1''' wuslědki pokazuja|'''$1''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
'showingresultsnum' => "Deleka so {{PLURAL:$3|'''1''' wuslědk pokazuje|'''$3''' wuslědkaj pokazujetej|'''$3''' wuslědki pokazuja|'''$3''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Slěduje wuslědk '''$1''' z '''$3'''|Slědujetej wuslědkaj '''$1 - $2''' z '''$3'''|Slěduja wuslědki '''$1 - $2''' z '''$3'''|Slěduje wuslědkow '''$1 - $2''' z '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
'nonefound' => "'''Kedźbu''': Jenož někotre mjenowe rumy pytaja so po standardźe.
Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (inkluziwnje diskusijne strony, předłohi atd.) pytał abu wužij požadany mjenowy rum jako prefiks.",
'search-nonefound' => 'Njebuchu wuslědki namakane, kotrež naprašowanju wotpowěduja.',
@@ -1045,111 +1058,149 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'powersearch-ns' => 'W mjenowych rumach pytać:',
'powersearch-redir' => 'Daleposrědkowanja nalistować',
'powersearch-field' => 'Pytać za:',
+'powersearch-togglelabel' => 'Kontrolować:',
+'powersearch-toggleall' => 'Wšě',
+'powersearch-togglenone' => 'Žadyn',
'search-external' => 'Eksterne pytanje',
'searchdisabled' => 'Pytanje w {{GRAMMAR:lokatiw|{{SITENAME}}}} tuchwilu móžne njeje. Móžeš mjeztym z Google pytać. Wobkedźbuj, zo móža wuslědki z wobsaha {{GRAMMAR:genitiw|{{SITENAME}}}} zestarjene być.',
+# Quickbar
+'qbsettings' => 'Pobóčna lajsta',
+'qbsettings-none' => 'Žane',
+'qbsettings-fixedleft' => 'Leži nalěwo',
+'qbsettings-fixedright' => 'Leži naprawo',
+'qbsettings-floatingleft' => 'Wisa nalěwo',
+'qbsettings-floatingright' => 'Wisa naprawo',
+
# Preferences page
-'preferences' => 'Nastajenja',
-'mypreferences' => 'moje nastajenja',
-'prefs-edits' => 'Ličba změnow:',
-'prefsnologin' => 'Njepřizjewjeny',
-'prefsnologintext' => 'Dyrbiš <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} přizjewjeny]</span> być, zo by móhł nastajenja postajić.',
-'prefsreset' => 'Nastajenja su so ze składa wróćo stajili. Twoje změnjenja njejsu so składowali.',
-'qbsettings' => 'Pobóčna lajsta',
-'qbsettings-none' => 'Žane',
-'qbsettings-fixedleft' => 'Leži nalěwo',
-'qbsettings-fixedright' => 'Leži naprawo',
-'qbsettings-floatingleft' => 'Wisa nalěwo',
-'qbsettings-floatingright' => 'Wisa naprawo',
-'changepassword' => 'Hesło změnić',
-'skin' => 'Šat',
-'skin-preview' => 'Přehlad',
-'math' => 'Math',
-'dateformat' => 'Format datuma',
-'datedefault' => 'Žane nastajenje',
-'datetime' => 'Datum a čas',
-'math_failure' => 'Analyza njeje so poradźiła',
-'math_unknown_error' => 'njeznaty zmylk',
-'math_unknown_function' => 'njeznata funkcija',
-'math_lexing_error' => 'leksikalny zmylk',
-'math_syntax_error' => 'syntaktiski zmylk',
-'math_image_error' => 'Konwertowanje do PNG zwrěšćiło; kontroluj prawu instalaciju latex, dvips, gs a konwertuj',
-'math_bad_tmpdir' => 'Njemóžno do nachwilneho matematiskeho zapisa pisać abo jón wutworić',
-'math_bad_output' => 'Njemóžno do matematiskeho zapisa za wudaće pisać abo jón wutworić',
-'math_notexvc' => 'Wuwjedźomny texvc pobrachuje; prošu hlej math/README za konfiguraciju.',
-'prefs-personal' => 'Wužiwarske daty',
-'prefs-rc' => 'Aktualne změny',
-'prefs-watchlist' => 'Wobkedźbowanki',
-'prefs-watchlist-days' => 'Ličba dnjow, kotrež maja so we wobkedźbowankach pokazać:',
-'prefs-watchlist-days-max' => '(maksimalnje 7 dnjow)',
-'prefs-watchlist-edits' => 'Ličba změnow, kotrež maja so we wobkedźbowankach pokazać:',
-'prefs-watchlist-edits-max' => '(maksimalna ličba: 1000)',
-'prefs-misc' => 'Wšelake nastajenja',
-'prefs-resetpass' => 'Hesło změnić',
-'saveprefs' => 'Składować',
-'resetprefs' => 'Njeskładowane změny zaćisnyć',
-'restoreprefs' => 'Wšě standardne nastajenja wobnowić',
-'textboxsize' => 'Wobdźěłowanje',
-'prefs-edit-boxsize' => 'Wulkosć wobdźěłowanskeho wokna.',
-'rows' => 'Rjadki:',
-'columns' => 'Stołpiki:',
-'searchresultshead' => 'Pytać',
-'resultsperpage' => 'Wuslědki za stronu:',
-'contextlines' => 'Rjadki na wuslědk:',
-'contextchars' => 'Kontekst na rjadku:',
-'stub-threshold' => 'Wotkazowe formatowanje <a href="#" class="stub">małych stronow</a> (w bajtach):',
-'recentchangesdays' => 'Ličba dnjow w lisćinje aktualnych změnow:',
-'recentchangesdays-max' => '(Maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
-'recentchangescount' => 'Ličba stron w lisćinje aktualnych změnow, w stawiznach a w protokolach, po standardźe:',
-'savedprefs' => 'Nastajenja buchu składowane.',
-'timezonelegend' => 'Časowe pasmo:',
-'timezonetext' => '¹Zapisaj ličbu hodźin, wo kotrež so twój lokalny čas wot časa serwera (UTC) wotchila.',
-'localtime' => 'Lokalny čas:',
-'timezoneselect' => 'Časowe pasmo',
-'timezoneuseserverdefault' => 'Standard serwera wužiwać',
-'timezoneuseoffset' => 'Druhe (pódaj wotchilenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
-'servertime' => 'Čas serwera:',
-'guesstimezone' => 'Z wobhladowaka přewzać',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantiski ocean',
-'timezoneregion-australia' => 'Awstralija',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiski ocean',
-'timezoneregion-pacific' => 'Pacifiski ocean',
-'allowemail' => 'Mejlki wot druhich wužiwarjow přijimować',
-'prefs-searchoptions' => 'Pytanske opcije',
-'prefs-namespaces' => 'Mjenowe rumy',
-'defaultns' => 'W tutych mjenowych rumach awtomatisce pytać:',
-'default' => 'standard',
-'files' => 'Dataje',
-'prefs-custom-css' => 'Swójski CSS',
-'prefs-custom-js' => 'Swójski JS',
+'preferences' => 'Nastajenja',
+'mypreferences' => 'moje nastajenja',
+'prefs-edits' => 'Ličba změnow:',
+'prefsnologin' => 'Njepřizjewjeny',
+'prefsnologintext' => 'Dyrbiš <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} přizjewjeny]</span> być, zo by móhł nastajenja postajić.',
+'changepassword' => 'Hesło změnić',
+'prefs-skin' => 'Šat',
+'skin-preview' => 'Přehlad',
+'prefs-math' => 'Math',
+'datedefault' => 'Žane nastajenje',
+'prefs-datetime' => 'Datum a čas',
+'prefs-personal' => 'Wužiwarske daty',
+'prefs-rc' => 'Aktualne změny',
+'prefs-watchlist' => 'Wobkedźbowanki',
+'prefs-watchlist-days' => 'Ličba dnjow, kotrež maja so we wobkedźbowankach pokazać:',
+'prefs-watchlist-days-max' => '(maksimalnje 7 dnjow)',
+'prefs-watchlist-edits' => 'Ličba změnow, kotrež maja so we wobkedźbowankach pokazać:',
+'prefs-watchlist-edits-max' => '(maksimalna ličba: 1000)',
+'prefs-watchlist-token' => 'Marka wobkedźbowankow:',
+'prefs-misc' => 'Wšelake nastajenja',
+'prefs-resetpass' => 'Hesło změnić',
+'prefs-email' => 'E-mejlowe opcije',
+'prefs-rendering' => 'Napohlad',
+'saveprefs' => 'Składować',
+'resetprefs' => 'Njeskładowane změny zaćisnyć',
+'restoreprefs' => 'Wšě standardne nastajenja wobnowić',
+'prefs-editing' => 'Wobdźěłowanje',
+'prefs-edit-boxsize' => 'Wulkosć wobdźěłowanskeho wokna.',
+'rows' => 'Rjadki:',
+'columns' => 'Stołpiki:',
+'searchresultshead' => 'Pytać',
+'resultsperpage' => 'Wuslědki za stronu:',
+'contextlines' => 'Rjadki na wuslědk:',
+'contextchars' => 'Kontekst na rjadku:',
+'stub-threshold' => 'Wotkazowe formatowanje <a href="#" class="stub">małych stronow</a> (w bajtach):',
+'recentchangesdays' => 'Ličba dnjow w lisćinje aktualnych změnow:',
+'recentchangesdays-max' => '(Maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
+'recentchangescount' => 'Ličba stronow, kotraž ma so po standardźe pokazać:',
+'prefs-help-recentchangescount' => 'To zapřijima aktualne změny, stawizny stronow a protokole.',
+'prefs-help-watchlist-token' => 'Wupjelnjenje tutoho pola z tajnym klučom budźe RSS-kanal za twoje wobkedźbowanki wupłodźić.
+Něchtó, kiž kluč w tutym polu znaje, móže twoje wobkedźbowanki čitać, wubjer tohodla wěstu hódnotu.
+Tu je připadnje wupłodźena hódnota, kotruž móžeš wužiwać: $1',
+'savedprefs' => 'Nastajenja buchu składowane.',
+'timezonelegend' => 'Časowe pasmo:',
+'localtime' => 'Lokalny čas:',
+'timezoneuseserverdefault' => 'Standard serwera wužiwać',
+'timezoneuseoffset' => 'Druhe (pódaj wotchilenje)',
+'timezoneoffset' => 'Rozdźěl¹:',
+'servertime' => 'Čas serwera:',
+'guesstimezone' => 'Z wobhladowaka přewzać',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantiski ocean',
+'timezoneregion-australia' => 'Awstralija',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiski ocean',
+'timezoneregion-pacific' => 'Pacifiski ocean',
+'allowemail' => 'Mejlki wot druhich wužiwarjow přijimować',
+'prefs-searchoptions' => 'Pytanske opcije',
+'prefs-namespaces' => 'Mjenowe rumy',
+'defaultns' => 'Hewak w tutych mjenowych rumach pytać:',
+'default' => 'standard',
+'prefs-files' => 'Dataje',
+'prefs-custom-css' => 'Swójski CSS',
+'prefs-custom-js' => 'Swójski JS',
+'prefs-reset-intro' => 'You can use this page to reset your preferences to the site defaults. This cannot be undone.
+Móžeš tutu stronu wužiwać, zo by swoje nastajenja na standardne hódnoty sydła wróćo stajić. To njeda so anulować.',
+'prefs-emailconfirm-label' => 'E-mejlowe wobkrućenje:',
+'prefs-textboxsize' => 'Wulkosć wobdźěłowanskeho wokna',
+'youremail' => 'E-mejl *:',
+'username' => 'Wužiwarske mjeno:',
+'uid' => 'ID wužiwarja:',
+'prefs-memberingroups' => 'Čłon {{PLURAL:$1|wužiwarskeje skupiny|wužiwarskeju skupinow|wužiwarskich skupinow|wužiwarskich skupinow}}:',
+'prefs-registration' => 'Čas registracije:',
+'yourrealname' => 'Woprawdźite mjeno *',
+'yourlanguage' => 'Rěč:',
+'yourvariant' => 'Warianta:',
+'yournick' => 'Podpis:',
+'prefs-help-signature' => 'Komentary na diskusijnch stronach měli so přez "<nowiki>~~~~</nowiki>" podpisać, kotrež so do twojeje signatury a časoweho kołka konwertuje.',
+'badsig' => 'Njepłaćiwa signatura, prošu HTML přepruwować.',
+'badsiglength' => 'Twoja signatura je předołha.
+Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} dołha być.',
+'yourgender' => 'Splah:',
+'gender-unknown' => 'Njepodaty',
+'gender-male' => 'Muski',
+'gender-female' => 'Žónski',
+'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narěčenje přez softwaru. Tuta informacija budźe zjawna.',
+'email' => 'E-mejl',
+'prefs-help-realname' => '* Woprawdźite mjeno (opcionalne): jeli so rozsudźiš to zapodać, budźe to so wužiwać, zo by tebi woprawnjenje za twoje dźěło dało.',
+'prefs-help-email' => 'E-mejlowa adresa je opcionalna, ale zmóžnja ći nowe hesło emejlować, jeli sy swoje hesło zabył. Móžeš tež druhim dowolić, će přez swoju wužiwarsku abo diskusijnu stronu skontaktować, bjeztoho zo by dyrbjał swoju identitu wotkrył.',
+'prefs-help-email-required' => 'Je płaćiwa emejlowa adresa trjeba.',
+'prefs-info' => 'Zakładne informacije',
+'prefs-i18n' => 'Internacionalizacija',
+'prefs-signature' => 'Podpis',
+'prefs-dateformat' => 'Datumowy format',
+'prefs-timeoffset' => 'Časowe wotchilenje',
+'prefs-advancedediting' => 'Rozšěrjene opcije',
+'prefs-advancedrc' => 'Rozšěrjene opcije',
+'prefs-advancedrendering' => 'Rozšěrjene opcije',
+'prefs-advancedsearchoptions' => 'Rozšěrjene opcije',
+'prefs-advancedwatchlist' => 'Rozšěrjene opcije',
+'prefs-display' => 'Opcije sej wobhladać',
+'prefs-diffs' => 'Rozdźěle',
# User rights
-'userrights' => 'Zrjadowanje wužiwarskich prawow', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Wužiwarske skupiny zrjadować',
-'userrights-user-editname' => 'Wužiwarske mjeno:',
-'editusergroup' => 'Wužiwarske skupiny wobdźěłać',
-'editinguser' => "Měnja so wužiwarske prawa wot wužiwarja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Wužiwarske skupiny wobdźěłać',
-'saveusergroups' => 'Wužiwarske skupiny składować',
-'userrights-groupsmember' => 'Čłon skupiny:',
-'userrights-groups-help' => 'Móžeš skupiny změnić, w kotrychž wužiwar je.
+'userrights' => 'Zrjadowanje wužiwarskich prawow',
+'userrights-lookup-user' => 'Wužiwarske skupiny zrjadować',
+'userrights-user-editname' => 'Wužiwarske mjeno:',
+'editusergroup' => 'Wužiwarske skupiny wobdźěłać',
+'editinguser' => "Měnja so wužiwarske prawa wot wužiwarja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Wužiwarske skupiny wobdźěłać',
+'saveusergroups' => 'Wužiwarske skupiny składować',
+'userrights-groupsmember' => 'Čłon skupiny:',
+'userrights-groupsmember-auto' => 'Implicitny čłon wot:',
+'userrights-groups-help' => 'Móžeš skupiny změnić, w kotrychž wužiwar je.
* Markěrowany kašćik woznamjenja, zo wužiwar je w tej skupinje.
* Njemarkěrowany kašćik woznamjenja, zo wužiwar w tej skupinje njeje.
* "*" podawa, zo njemóžeš skupinu wotstronić, tak ruče kaž sy ju přidał abo nawopak.',
-'userrights-reason' => 'Přičina:',
-'userrights-no-interwiki' => 'Nimaš prawo wužiwarske prawa w druhich wikijach změnić.',
-'userrights-nodatabase' => 'Datowa banka $1 njeeksistuje abo lokalna njeje.',
-'userrights-nologin' => 'Dyrbiš so z admininstratorowym kontom [[Special:UserLogin|přizjewić]], zo by wužiwarske prawa změnił.',
-'userrights-notallowed' => 'Twoje konto nima trěbne prawa, zo by wužiwarske prawa přidźělił.',
-'userrights-changeable-col' => 'Skupiny, kotrež móžeš změnić',
-'userrights-unchangeable-col' => 'Skupiny, kotrež njemóžeš změnić',
+'userrights-reason' => 'Přičina:',
+'userrights-no-interwiki' => 'Nimaš prawo wužiwarske prawa w druhich wikijach změnić.',
+'userrights-nodatabase' => 'Datowa banka $1 njeeksistuje abo lokalna njeje.',
+'userrights-nologin' => 'Dyrbiš so z admininstratorowym kontom [[Special:UserLogin|přizjewić]], zo by wužiwarske prawa změnił.',
+'userrights-notallowed' => 'Twoje konto nima trěbne prawa, zo by wužiwarske prawa přidźělił.',
+'userrights-changeable-col' => 'Skupiny, kotrež móžeš změnić',
+'userrights-unchangeable-col' => 'Skupiny, kotrež njemóžeš změnić',
# Groups
'group' => 'Skupina:',
@@ -1202,6 +1253,7 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'right-bigdelete' => 'Strony z dołhimi stawiznami zničić',
'right-deleterevision' => 'Jednotliwe wersije wušmórnyć a wobnowić',
'right-deletedhistory' => 'Wušmórnjene zapiski stawiznow bjez přisłušneho teksta wobhladać',
+'right-deletedtext' => 'Wušmórnjeny tekst a změny mjez wušmórnjenymi wersijemi sej wobhladać',
'right-browsearchive' => 'Zničene strony pytać',
'right-undelete' => 'Strony wobnowić',
'right-suppressrevision' => 'Wersije, kotrež su před administratorami schowane, přepruwować a wobnowić',
@@ -1215,6 +1267,8 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'right-editprotected' => 'Škitane strony wobdźěłać (bjez kaskadoweho škita)',
'right-editinterface' => 'Wužiwarski powjerch wobdźěłać',
'right-editusercssjs' => 'Dataje CSS a JS druhich wužiwarjow wobdźěłać',
+'right-editusercss' => 'Dataje CSS druhich wužiwarjow wobdźěłać',
+'right-edituserjs' => 'Dataje JS druhich wužiwarjow wobdźěłać',
'right-rollback' => 'Poslednjeho wužiwarja, kotryž wěstu stronu wobdźěła, spěšnje rewertować',
'right-markbotedits' => 'Rewertowane změny jako botowe změny markěrować',
'right-noratelimit' => 'Přez žane limity wobmjezowane',
@@ -1231,6 +1285,8 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'right-siteadmin' => 'Datowu banku zawrěć a wotewrěć',
'right-reset-passwords' => 'Hesła druhich wužiwarjow wróćo stajić',
'right-override-export-depth' => 'Strony inkluziwnje wotkazanych stronow hač do hłubokosće 5 eksportować',
+'right-versiondetail' => 'Nadrobne informacije wo wersiji softwary pokazać',
+'right-sendemail' => 'Druhim wužiwarjam e-mejl pósłać',
# User rights log
'rightslog' => 'Protokol zrjadowanja wužiwarskich prawow',
@@ -1280,6 +1336,15 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'recentchanges-legend' => 'Opcije aktualnych změnow',
'recentchangestext' => 'Na tutej stronje móžeš najaktualniše změny w {{GRAMMAR:lokatiw|{{SITENAME}}}} wobkedźbować.',
'recentchanges-feed-description' => 'Slěduj najaktualniše změny {{GRAMMAR:genitiw|{{SITENAME}}}} w tutym kanalu.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nowa strona',
+'recentchanges-label-newpage' => 'Tuta změna je nowu stronu wutworiła',
+'recentchanges-legend-minor' => '$1 - snadna změna',
+'recentchanges-label-minor' => 'To je snadna změna',
+'recentchanges-legend-bot' => '$1 - změna boćika',
+'recentchanges-label-bot' => 'Tuta změna bu přez roboćik přewjedźena',
+'recentchanges-legend-unpatrolled' => '$1 - njepřepruwowana změna',
+'recentchanges-label-unpatrolled' => 'Tuta změnu hišće njebu přepruwowana',
'rcnote' => "Deleka {{PLURAL:\$1|je '''1''' změna|stej poslednjej '''\$1''' změnje|su poslednje '''\$1''' změny|je poslednich '''\$1''' změnow}} za {{PLURAL:\$2|posledny dźeń|poslednjej '''\$2''' dnjej|poslednje '''\$2''' dny|poslednich '''\$2''' dnjow}}, staw wot \$4, \$5.
<div id=\"rc-legend\" style=\"float:right;font-size:84%;margin-left:5px;\"> <b>Legenda</b><br />
<b><tt>N</tt></b>&nbsp;– Nowy přinošk<br /> <b><tt>S</tt></b>&nbsp;– Snadna změna<br /> <b><tt>B</tt></b>&nbsp;– Změny awtomatiskich programow (bot)<br /> ''(± ličba)''&nbsp;– Změna wulkosće w bajtach </div>",
@@ -1309,6 +1374,8 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
# Recent changes linked
'recentchangeslinked' => 'Změny zwjazanych stron',
+'recentchangeslinked-feed' => 'Změny zwjazanych stron',
+'recentchangeslinked-toolbox' => 'Změny zwjazanych stron',
'recentchangeslinked-title' => 'Změny na stronach, kotrež su z „$1“ wotkazane',
'recentchangeslinked-noresult' => 'Njejsu změny zwajzanych stron we wubranej dobje.',
'recentchangeslinked-summary' => "Tuta strona nalistuje poslednje změny na wotkazanych stronach (resp. pola kategorijow na čłonach kategorije).
@@ -1319,8 +1386,8 @@ Strony na [[Special:Watchlist|wobkedźbowankach]] su '''tučne'''.",
# Upload
'upload' => 'Dataju nahrać',
'uploadbtn' => 'Dataju nahrać',
-'reupload' => 'Znowa nahrać',
'reuploaddesc' => 'Nahraće přetorhnyć a so k nahrawanskemu formularej wróćić.',
+'upload-tryagain' => 'Změnjene datajowe wopisanje wotpósłać',
'uploadnologin' => 'Njepřizjewjeny',
'uploadnologintext' => 'Dyrbiš [[Special:UserLogin|přizjewjeny]] być, zo by dataje nahrawać móhł.',
'upload_directory_missing' => 'Zapis nahraćow ($1) faluje a njeda so přez webserwer wutworić.',
@@ -1352,6 +1419,7 @@ Hlej [[Special:NewFiles|galeriju nowych datajow]] za wizuelny přehlad.',
'minlength1' => 'Datajowe mjena dyrbja znajmjeńša jedyn pismik dołhe być.',
'illegalfilename' => 'Mjeno dataje „$1” wobsahuje znamješka, kotrež w titlach stronow dowolene njejsu. Prošu přemjenuj dataju a spytaj ju znowa nahrać.',
'badfilename' => 'Mjeno dataje bu do „$1” změnjene.',
+'filetype-mime-mismatch' => 'Datajowy sufiks njewotpowěduje MIME-typej.',
'filetype-badmime' => 'Dataje typa MIME „$1” njesmědźa so nahrać.',
'filetype-bad-ie-mime' => 'Tuta dataja njeda so nahrać, dokelž Internet Explorer by ju jako "$1" interpretował, kotryž je njedowoleny a potencielnje strašny datajowy typ.',
'filetype-unwanted-type' => "'''\".\$1\"''' je njepožadany datajowy typ.
@@ -1375,7 +1443,6 @@ Zo by so twoje zjeće tam jewiło, dyrbiš ju manuelnje wobdźěłać.
* Mjeno dataje, kotruž chceš nahrać: '''<tt>[[:$1]]</tt>'''
* Mjeno eksistowaceje dataje: '''<tt>[[:$2]]</tt>'''
Prošu wubjer druhe mjeno.",
-'fileexists-thumb' => "<center>'''Eksistowacy wobraz'''</center>",
'fileexists-thumbnail-yes' => "Dataja zda so minaturka ''(thumbnail)'' być. [[$1|thumb]]
Prošu přepruwuj dataju '''<tt>[[:$1]]</tt>'''.
Jeli je to wobraz w originalnej wulkosći, njetrjebaš minaturku nahrać.",
@@ -1387,6 +1454,7 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
'file-deleted-duplicate' => 'Dataja, kotraž je identiska z tutej dataju ([[$1]]), je so prjedy zničiła. Ty měł stawizny zničenja tuteje dataje přepruwować, prjedy pokročuješ z jeje zasonahrawanjom.',
'successfulupload' => 'Dataja bu wuspěšnje nahrata',
'uploadwarning' => 'Warnowanje',
+'uploadwarning-text' => 'Prošu změń slědowace datajowe wopisanje a spytaj hišće raz.',
'savefile' => 'Dataju składować',
'uploadedimage' => 'je dataju „[[$1]]” nahrał',
'overwroteimage' => 'je nowu wersiju dataje „[[$1]]“ nahrał',
@@ -1394,11 +1462,14 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
'uploaddisabledtext' => 'Nahraće datajow je znjemóžnjene.',
'php-uploaddisabledtext' => 'Nahraća PHP-datajow su znjemóžnjene. Prošu skontroluj nastajenje file_uploads.',
'uploadscripted' => 'Dataja wobsahuje HTML- abo skriptowy kod, kotryž móhł so mylnje přez wobhladowak wuwjesć.',
-'uploadcorrupt' => 'Dataja je wobškodźena abo ma wopačnu kóncowku. Prošu přepruwuj dataju a nahraj ju hišće raz.',
'uploadvirus' => 'Dataja wirus wobsahuje! Podrobnosće: $1',
+'upload-source' => 'Žórłowa dataja',
'sourcefilename' => 'Mjeno žórłoweje dataje:',
+'sourceurl' => 'URL žórła:',
'destfilename' => 'Mjeno ciloweje dataje:',
'upload-maxfilesize' => 'Maksimalna datajowa wulkosć: $1',
+'upload-description' => 'Datajowe wopisanje',
+'upload-options' => 'Nahrawanske opcije',
'watchthisupload' => 'Tutu dataju wobkedźbować',
'filewasdeleted' => 'Dataja z tutym mjenom bu prjedy nahrata a pozdźišo wušmórnjena. Prošu přepruwuj $1 prjedy hač ju znowa składuješ.',
'upload-wasdeleted' => "'''Kedźbu: Nahrawaš dataju, kotraž bu prjedy wušmórnjena.'''
@@ -1422,12 +1493,43 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- Njezměń tutu linku! -->',
-'upload-proto-error' => 'Wopačny protokol',
-'upload-proto-error-text' => 'URL dyrbi so z <code>http://</code> abo <code>ftp://</code> započeć.',
-'upload-file-error' => 'Nutřkowny zmylk',
-'upload-file-error-text' => 'Nutřkowny zmylk wustupi při pospytu, nachwilnu dataju na serwerje wutworić. Prošu skontaktuj [[Special:ListUsers/sysop|administratora]].',
-'upload-misc-error' => 'Njeznaty zmylk při nahraću',
-'upload-misc-error-text' => 'Njeznaty zmylk wustupi při nahrawanju. Prošu přepruwuj, hač URL je płaćiwy a přistupny a spytaj hišće raz. Jeli problem dale eksistuje, skontaktuj [[Special:ListUsers/sysop|administratora]].',
+'upload-proto-error' => 'Wopačny protokol',
+'upload-proto-error-text' => 'URL dyrbi so z <code>http://</code> abo <code>ftp://</code> započeć.',
+'upload-file-error' => 'Nutřkowny zmylk',
+'upload-file-error-text' => 'Nutřkowny zmylk wustupi při pospytu, nachwilnu dataju na serwerje wutworić. Prošu skontaktuj [[Special:ListUsers/sysop|administratora]].',
+'upload-misc-error' => 'Njeznaty zmylk při nahraću',
+'upload-misc-error-text' => 'Njeznaty zmylk wustupi při nahrawanju. Prošu přepruwuj, hač URL je płaćiwy a přistupny a spytaj hišće raz. Jeli problem dale eksistuje, skontaktuj [[Special:ListUsers/sysop|administratora]].',
+'upload-too-many-redirects' => 'URL wobsahowaše přewjele daleposrědkowanjow',
+'upload-unknown-size' => 'Njeznata wulkosć',
+'upload-http-error' => 'HTTP-zmylk je wustupił: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Přistup wotpokazany',
+'img-auth-nopathinfo' => 'PATH_INFO faluje.
+Twój serwer njeje za to konfigurował, zo by tute informacije dale posrědkował.
+By móhł na CGI bazować a ani njemóže img_auth podpěrać.
+Hlej http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Požadana šćežka w konfigurowanym nahraćowym zapisu njeje.',
+'img-auth-badtitle' => 'Njeje móžno z "$1" płaćiwy titul tworić.',
+'img-auth-nologinnWL' => 'Njejsy přizjewjeny a "$1" w běłej lisćinje njeje.',
+'img-auth-nofile' => 'Dataja "$1" njeeksistuje.',
+'img-auth-isdir' => 'Popsytuješ na zapis "$1" přistup měć.
+Jenož datajowy přistup je dowoleny.',
+'img-auth-streaming' => '"$1" so prudźi.',
+'img-auth-public' => 'Funkcija img_auth.php je za wudaće datjow z priwatneho wikija.
+Tutón wiki je jako zjawny wiki konfigurowany.
+Za optimalnu wěstotu je img_auth.php znjemóžnjeny.',
+'img-auth-noread' => 'Wužiwar nima přistup, zo by "$1" čitał.',
+
+# HTTP errors
+'http-invalid-url' => 'Njepłaćiwy URL: $1',
+'http-invalid-scheme' => 'URL ze šemu „$1“ so njepodpěruja.',
+'http-request-error' => 'Naprašowanje HTTP je so njeznateho zmylka dla njeporadźiło.',
+'http-read-error' => 'Čitanski zmylk HTTP.',
+'http-timed-out' => 'Naprašowanje HTTP je čas překročiło.',
+'http-curl-error' => 'Zmylk při wołanju URL: $1',
+'http-host-unreachable' => 'URL njeda so docpěć.',
+'http-bad-status' => 'Problem je za HTTP-naprašowanje wustupił: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL docpějomny njeje.',
@@ -1436,6 +1538,7 @@ PICT # misc.
'upload-curl-error28-text' => 'Sydło za wotmołwu předołho trjebaše. Prošu pruwuj, hač sydło je docpějomne, čakaj wokomik a spytaj hišće raz. Spytaj hewak w druhim času hišće raz.',
'license' => 'Licenca:',
+'license-header' => 'Licencowanje',
'nolicense' => 'žadyn wuběr',
'license-nopreview' => '(žadyn přehlad k dispoziciji)',
'upload_source_url' => ' (płaćiwy, zjawnje docpějomny URL)',
@@ -1454,6 +1557,7 @@ PICT # misc.
'listfiles_count' => 'Wersije',
# File description page
+'file-anchor-link' => 'Dataja',
'filehist' => 'Wersije dataje',
'filehist-help' => 'Klikń na wěsty čas, zo by wersiju dataje w tutym času zwobraznił.',
'filehist-deleteall' => 'wšě wersije wušmórnyć',
@@ -1468,6 +1572,7 @@ PICT # misc.
'filehist-dimensions' => 'Rozeznaće',
'filehist-filesize' => 'Wulkosć dataje',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Dataja pobrachuje',
'imagelinks' => 'Datajowe wotkazy',
'linkstoimage' => '{{PLURAL:$1|Slědowaca strona wotkazuje|Slědowacej $1 stronje wotkazujetej|Slědowace $1 strony wotkazuja|Slědowacych $1 stronow wotkazuje}} na tutu dataju:',
'linkstoimage-more' => 'Wjace hač $1 {{PLURAL:$1|strona wotkazuje|stronje wotkazujetej|strony wotkazuja|stronow wotkazuje}} na tutu dataju.
@@ -1477,15 +1582,14 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Dalše wotkazy]] k tutej dataji wobhladać.',
'redirectstofile' => '{{PLURAL:$1|Slědowaca dataja pósrednja|Slědowacej $1 pósrědnjatej|Slědowace $1 posrědnjaju|Slěddowacych $1 pósrědnja}} k toś tej dataji dalej:',
'duplicatesoffile' => '{{PLURAL:$1|Slědowaca dataja je duplikat|Slědowacej $1 dataji stej duplikata|Slědowace $1 dataje su duplikaty|Slědowacych $1 duplikatow je duplikaty}} tuteje dataje ([[Special:FileDuplicateSearch/$2|dalše podrobnosće]])::',
-'sharedupload' => 'Tuta dataja je z $1 a da so za druhe projekty wužiwać.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Za dalše informacije hlej $1.',
-'shareduploadwiki-desc' => 'Wopisanje na $1 so deleka pokazuje.',
-'shareduploadwiki-linktext' => 'stronu datajoweho wopisanja',
-'noimage' => 'Dataja z tutym mjenom njeeksistuje, ale móžeš $1.',
-'noimage-linktext' => 'nahrać',
+'sharedupload' => 'Tuta dataja je z $1 a da so za druhe projekty wužiwać.',
+'sharedupload-desc-there' => 'Tuta dataja je z $1 a da so přez druhe projekty wužiwać. Prošu hlej [$2 stronu datajoweho wopisanja] za dalše informacije.',
+'sharedupload-desc-here' => 'Tuta dataja je z $1 a da so přez druhe projekty wužiwać. Wopisanje na jeje [$2 stronje datajoweho wopisanja] so deleka pokazuje.',
+'filepage-nofile' => 'Dataja z tutym mjenom njeeksistuje.',
+'filepage-nofile-link' => 'Dataju z tutym mjenom njeeksistuje, ale móžeš [$1 ju nahrać].',
'uploadnewversion-linktext' => 'nowu wersiju tuteje dataje nahrać',
-'shared-repo-from' => 'z $1', # $1 is the repository name
-'shared-repo' => 'zhromadny repozitorij', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'z $1',
+'shared-repo' => 'zhromadny repozitorij',
# File reversion
'filerevert' => 'Wersiju $1 cofnyć',
@@ -1514,6 +1618,7 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
** Zranjenje awtorksich prawow
** Dwójna dataja',
'filedelete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
+'filedelete-maintenance' => 'Wušmórnjenje a wobnowjenje datajow stej wothladowanja dla nachilu znjemóžnjenej.',
# MIME search
'mimesearch' => 'Pytanje za typom MIME',
@@ -1534,7 +1639,7 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
# Random page
'randompage' => 'Připadny nastawk',
-'randompage-nopages' => 'W mjenowym rumje "$1" strony njejsu.',
+'randompage-nopages' => 'W {{PLURAL:$2|slědowacym mjenowym rumje|slědowacymaj mjenowymaj rumomaj|slědowacych mjenowych rumach|slědowacych mjenowych rumach}} žane strony njejsu: $1',
# Random redirect
'randomredirect' => 'Připadne daleposrědkowanje',
@@ -1546,6 +1651,7 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
'statistics-header-edits' => 'Wobdźěłanska statistika',
'statistics-header-views' => 'Statistiku wobhladać',
'statistics-header-users' => 'Statistika wužiwarjow',
+'statistics-header-hooks' => 'Druha statistika',
'statistics-articles' => 'Wobsahowe strony',
'statistics-pages' => 'Strony',
'statistics-pages-desc' => 'Wšě strony we wikiju, inkluziwnje diskusijnych stronow, daleposrědkowanja atd.',
@@ -1572,8 +1678,8 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
'brokenredirects' => 'Skóncowane daleposrědkowanja',
'brokenredirectstext' => 'Slědowace daleposrědkowanja wotkazuja na njeeksistowace strony:',
-'brokenredirects-edit' => '(wobdźěłać)',
-'brokenredirects-delete' => '(wušmórnyć)',
+'brokenredirects-edit' => 'wobdźěłać',
+'brokenredirects-delete' => 'wušmórnyć',
'withoutinterwiki' => 'Strony bjez mjezyrěčnych wotkazow',
'withoutinterwiki-summary' => 'Sćěhowace strony njewotkazuja na druhe rěčne wersije:',
@@ -1679,7 +1785,7 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
# Special:Categories
'categories' => 'Kategorije',
-'categoriespagetext' => 'Slědowace kategorije wobsahuja strony abo medije.
+'categoriespagetext' => '{{PLURAL:$1|Slědowaca kategorija wobsahuje|Slědowacej kategoriji wobsahujetej|Slědowace kategorije wobsahuja|Slědowace kategorije wobsahuja}} strony abo medije.
[[Special:UnusedCategories|Njewužiwane kategorije]] so tu njepokazuja.
Hlej tež [[Special:WantedCategories|požadane kategorije]].',
'categoriesfrom' => 'Kategorije pokazać, započinajo z:',
@@ -1687,8 +1793,9 @@ Hlej tež [[Special:WantedCategories|požadane kategorije]].',
'special-categories-sort-abc' => 'Alfabetisce sortěrować',
# Special:DeletedContributions
-'deletedcontributions' => 'wušmórnjene přinoški',
-'deletedcontributions-title' => 'wušmórnjene přinoški',
+'deletedcontributions' => 'wušmórnjene přinoški',
+'deletedcontributions-title' => 'wušmórnjene přinoški',
+'sp-deletedcontributions-contribs' => 'přinoški',
# Special:LinkSearch
'linksearch' => 'Eksterne wotkazy',
@@ -1703,6 +1810,16 @@ Hlej tež [[Special:WantedCategories|požadane kategorije]].',
'listusersfrom' => 'Započinajo z:',
'listusers-submit' => 'Pokazać',
'listusers-noresult' => 'Njemóžno wužiwarjow namakać. Prošu wobkedźbuj, zo so mało- abo wulkopisanje na wotprašowanje wuskutkuje.',
+'listusers-blocked' => '(blokowany)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lisćina aktiwnych wužiwarjow',
+'activeusers-intro' => 'To je lisćina wužiwarjow, kotřiž běchu aktiwni za {{PLURAL:$1|posledni dźeń|poslednjej $1 dnjej|poslednje $1 dny|poslednich $1 dnjow}}:',
+'activeusers-count' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}} w {{PLURAL:$3|zańdźenej dnju|zańdźenymaj $3 dnjomaj|zańdźenych $3 dnjach|zańdźenych $3 dnjach}}',
+'activeusers-from' => 'Wužiwarjow zwobraznić, započinajo z:',
+'activeusers-hidebots' => 'Boćiki schować',
+'activeusers-hidesysops' => 'Administratorow schować',
+'activeusers-noresult' => 'Žani wužiwarjo namakani.',
# Special:Log/newusers
'newuserlogpage' => 'Protokol nowych wužiwarjow',
@@ -1713,16 +1830,22 @@ Hlej tež [[Special:WantedCategories|požadane kategorije]].',
'newuserlog-autocreate-entry' => 'Wužiwarske konto bu awtomatisce wutworjene.',
# Special:ListGroupRights
-'listgrouprights' => 'Prawa wužiwarskeje skupiny',
-'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
-'listgrouprights-group' => 'Skupina',
-'listgrouprights-rights' => 'Prawa',
-'listgrouprights-helppage' => 'Help:Skupinske prawa',
-'listgrouprights-members' => '(lisćina čłonow)',
-'listgrouprights-addgroup' => 'Wužiwar hodźi so {{PLURAL:$2|tutej skupinje|tutymaj skupinomaj|tutym skupinam|tutym skupinam}} přidać: $1',
-'listgrouprights-removegroup' => 'Wužiwar hodźi so z {{PLURAL:$2|tuteje skupiny|tuteju skupinow|tutych skupinow|tutych skupinow}} wotstronić: $1',
-'listgrouprights-addgroup-all' => 'Hodźa so wšě skupiny přidać',
-'listgrouprights-removegroup-all' => 'Hodźa so wše skupiny wotstronić',
+'listgrouprights' => 'Prawa wužiwarskeje skupiny',
+'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Garantowane prawo</span>
+* <span class="listgrouprights-revoked">Wotwołane prawo</span>',
+'listgrouprights-group' => 'Skupina',
+'listgrouprights-rights' => 'Prawa',
+'listgrouprights-helppage' => 'Help:Skupinske prawa',
+'listgrouprights-members' => '(lisćina čłonow)',
+'listgrouprights-addgroup' => 'Wužiwar hodźi so {{PLURAL:$2|tutej skupinje|tutymaj skupinomaj|tutym skupinam|tutym skupinam}} přidać: $1',
+'listgrouprights-removegroup' => 'Wužiwar hodźi so z {{PLURAL:$2|tuteje skupiny|tuteju skupinow|tutych skupinow|tutych skupinow}} wotstronić: $1',
+'listgrouprights-addgroup-all' => 'Hodźa so wšě skupiny přidać',
+'listgrouprights-removegroup-all' => 'Hodźa so wše skupiny wotstronić',
+'listgrouprights-addgroup-self' => 'Móže {{PLURAL:$2|skupinu|skupinje|skupiny|skupinow}} swójskemu kontu přidać: $1',
+'listgrouprights-removegroup-self' => 'Móže {{PLURAL:$2|skupinu|skupinje|skupiny|skupinow}} ze swójskeho konta wotstronić: $1',
+'listgrouprights-addgroup-self-all' => 'Móže wšě skupiny swójskemu kontu přidać',
+'listgrouprights-removegroup-self-all' => 'Móže wšě skupiny ze swójskeho konta wotstronić',
# E-mail user
'mailnologin' => 'Njejsy přizjewjeny.',
@@ -1796,14 +1919,14 @@ Jeli chceš stronu pozdźišo ze swojich wobkedźbowankow wotstronić, klikń na
'enotif_lastvisited' => 'Hlej $1 za wšě změny po twojim poslednim wopyće.',
'enotif_lastdiff' => 'Hlej $1 za tutu změnu.',
'enotif_anon_editor' => 'anonymny wužiwar $1',
-'enotif_body' => 'Luby $WATCHINGUSERNAME,<br />
+'enotif_body' => 'Luby $WATCHINGUSERNAME,
-Strona we {{GRAMMAR:lokatiw|{{SITENAME}}}} z mjenom $PAGETITLE bu dnja $PAGEEDITDATE wot $PAGEEDITOR $CHANGEDORCREATED,
-hlej $PAGETITLE_URL za aktualnu wersiju.
+
+Strona we {{GRAMMAR:lokatiw|{{SITENAME}}}} z mjenom $PAGETITLE bu dnja $PAGEEDITDATE wot $PAGEEDITOR $CHANGEDORCREATED, hlej $PAGETITLE_URL za aktualnu wersiju.
$NEWPAGE
-Zjeće wobdźěłaćerja běše: $PAGESUMMARY $PAGEMINOREDIT
+Zjeće wobdźěłaćerja: $PAGESUMMARY $PAGEMINOREDIT
Skontaktuj wobdźěłarja:
e-mejl: $PAGEEDITOR_EMAIL
@@ -1816,9 +1939,13 @@ Móžeš tež zdźělenske marki za wšě swoje wobkedźbowane strony we swojich
--
Zo by nastajenja twojich wobkedźbowankow změnił, wopytaj
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Zo by stronu ze swojich wobkedźbowankow zhašał, wopytaj
+$UNWATCHURL
-Wospjetne prašenja a dalša pomoc:
+
+Wotmołwy a dalša pomoc:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1830,10 +1957,11 @@ Wospjetne prašenja a dalša pomoc:
'exblank' => 'strona běše prózdna',
'delete-confirm' => '„$1“ wušmórnyć',
'delete-legend' => 'Wušmórnyć',
-'historywarning' => 'KEDŹBU: Strona, kotruž chceš wušmórnyć, ma stawizny:',
+'historywarning' => "'''KEDŹBU:''' Strona, kotruž chceš wušmórnyć, ma stawizny z přibližnje $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}}:",
'confirmdeletetext' => 'Sy so rozsudźił stronu ze jeje stawiznami wušmórnić.
Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wotpowědujo [[{{MediaWiki:Policy-url}}|zasadam tutoho wikija]] činiš.',
'actioncomplete' => 'Dokónčene',
+'actionfailed' => 'Akcija je so njeporadźiła',
'deletedtext' => 'Strona „<nowiki>$1</nowiki>” bu wušmórnjena. Hlej $2 za lisćinu aktualnych wušmórnjenjow.',
'deletedarticle' => 'je stronu [[$1]] wušmórnył.',
'suppressedarticle' => '"[[$1]]" potłóčeny',
@@ -1853,18 +1981,19 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
# Rollback
-'rollback' => 'Změny cofnyć',
-'rollback_short' => 'Cofnyć',
-'rollbacklink' => 'Cofnyć',
-'rollbackfailed' => 'Cofnjenje njeporadźiło',
-'cantrollback' => 'Njemóžno změnu cofnyć; strona nima druhich awtorow.',
-'alreadyrolled' => 'Njemóžno poslednu změnu [[:$1]] přez wužiwarja [[User:$2|$2]] ([[User talk:$2|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) cofnyć; něchtó druhi je stronu wobdźěłał abo změnu hižo cofnył.
+'rollback' => 'Změny cofnyć',
+'rollback_short' => 'Cofnyć',
+'rollbacklink' => 'Cofnyć',
+'rollbackfailed' => 'Cofnjenje njeporadźiło',
+'cantrollback' => 'Njemóžno změnu cofnyć; strona nima druhich awtorow.',
+'alreadyrolled' => 'Njemóžno poslednu změnu [[:$1]] přez wužiwarja [[User:$2|$2]] ([[User talk:$2|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) cofnyć; něchtó druhi je stronu wobdźěłał abo změnu hižo cofnył.
Poslednja změna bě wot wužiwarja [[User:$3|$3]] ([[User talk:$3|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Zjeće wobdźěłanja bě: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Změny [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) cofnjene a nawróćene k poslednjej wersiji wužiwarja [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Změny wužiwarja $1 cofnjene; wróćo na wersiju wužiwarja $2.',
-'sessionfailure' => 'Zda so, zo je problem z twojim přizjewjenjom; tuta akcija bu wěstosće dla přećiwo zadobywanju do posedźenja znjemóžniła. Prošu klikń na "Wróćo" a začitaj stronu, z kotrejež přińdźeš, znowa; potom spytaj hišće raz.',
+'editcomment' => "Zjeće wobdźěłanja bě: \"''\$1''\".",
+'revertpage' => 'Změny [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) cofnjene a nawróćene k poslednjej wersiji wužiwarja [[User:$1|$1]]',
+'revertpage-nouser' => 'Staji změny wot (wužiwarske mjeno wotstronjene) na předchadnu wersiju wot [[User:$1|$1]] wróćo',
+'rollback-success' => 'Změny wužiwarja $1 cofnjene; wróćo na wersiju wužiwarja $2.',
+'sessionfailure' => 'Zda so, zo je problem z twojim přizjewjenjom; tuta akcija bu wěstosće dla přećiwo zadobywanju do posedźenja znjemóžniła. Prošu klikń na "Wróćo" a začitaj stronu, z kotrejež přińdźeš, znowa; potom spytaj hišće raz.',
# Protect
'protectlogpage' => 'Protokol škita',
@@ -1881,7 +2010,7 @@ Hlej [[Special:ProtectedPages|tutu specialnu stronu]] za lisćinu škitanych str
'protectexpiry' => 'Čas škita:',
'protect_expiry_invalid' => 'Njepłaćiwy čas spadnjenja.',
'protect_expiry_old' => 'Čas škita leži w zańdźenosći.',
-'protect-unchain' => 'Škit přećiwo přesunjenju změnić',
+'protect-unchain-permissions' => 'Dalše škitne opcije dopušćić',
'protect-text' => 'Tu móžeš status škita strony <b><nowiki>$1</nowiki></b> wobhladać a změnić.',
'protect-locked-blocked' => "Njemóžeš škit strony změnič, dokelž twoje konto je zablokowane. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
'protect-locked-dblock' => "Datowa banka je zawrjena, tohodla njemóžeš škit strony změnić. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
@@ -1907,7 +2036,7 @@ Hlej [[Special:ProtectedPages|tutu specialnu stronu]] za lisćinu škitanych str
** Wobdźěłanska wójna
** Strona z jara wjele změnami',
'protect-edit-reasonlist' => 'Škitowe přičiny wobdźěłać',
-'protect-expiry-options' => '1 hodźinu:1 hour,1 dźeń:1 day,1 tydźeń:1 week,2 njedźeli:2 weeks,1 měsać:1 month,3 měsacy:3 months,6 měsacow:6 months,1 lěto:1 year,na přeco:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hodźinu:1 hour,1 dźeń:1 day,1 tydźeń:1 week,2 njedźeli:2 weeks,1 měsać:1 month,3 měsacy:3 months,6 měsacow:6 months,1 lěto:1 year,na přeco:infinite',
'restriction-type' => 'Škitowy status',
'restriction-level' => 'Runina škita:',
'minimum-size' => 'Minimalna wulkosć:',
@@ -1945,6 +2074,7 @@ W tutym padźe dyrbiš najnowšu wušmórnjenu wersiju znjemóžnić abo pokaza
'undelete-nodiff' => 'Předchadna wersija njeeksistuje.',
'undeletebtn' => 'Wobnowić',
'undeletelink' => 'wobhladać sej/wobnowić',
+'undeleteviewlink' => 'wobhladać sej',
'undeletereset' => 'Cofnyć',
'undeleteinvert' => 'Wuběr wobroćić',
'undeletecomment' => 'Přičina:',
@@ -1982,19 +2112,23 @@ $1',
'contributions-title' => 'Wužiwarske přinoški wot „$1“',
'mycontris' => 'moje přinoški',
'contribsub2' => 'za wužiwarja $1 ($2)',
-'nocontribs' => 'Žane změny, kotrež podatym kriterijam wotpowěduja.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Žane změny, kotrež podatym kriterijam wotpowěduja.',
'uctop' => '(aktualnje)',
'month' => 'wot měsaca (a do toho):',
'year' => 'wot lěta (a do toho):',
-'sp-contributions-newbies' => 'jenož přinoški nowačkow pokazać',
-'sp-contributions-newbies-sub' => 'Za nowačkow',
-'sp-contributions-newbies-title' => 'Wužiwarske přinoški za nowe konta',
-'sp-contributions-blocklog' => 'protokol zablokowanjow',
-'sp-contributions-logs' => 'protokole',
-'sp-contributions-search' => 'Přinoški pytać',
-'sp-contributions-username' => 'IP-adresa abo wužiwarske mjeno:',
-'sp-contributions-submit' => 'OK',
+'sp-contributions-newbies' => 'jenož přinoški nowačkow pokazać',
+'sp-contributions-newbies-sub' => 'Za nowačkow',
+'sp-contributions-newbies-title' => 'Wužiwarske přinoški za nowe konta',
+'sp-contributions-blocklog' => 'protokol zablokowanjow',
+'sp-contributions-deleted' => 'wušmórnjene wužiwarske přinoški',
+'sp-contributions-logs' => 'protokole',
+'sp-contributions-talk' => 'diskusija',
+'sp-contributions-userrights' => 'Zrjadowanje wužiwarskich prawow',
+'sp-contributions-blocked-notice' => 'Tutón wužiwar je tuchwilu zablokowany. Najnowši protokolowy zapisk so deleka jako referenca podawa:',
+'sp-contributions-search' => 'Přinoški pytać',
+'sp-contributions-username' => 'IP-adresa abo wužiwarske mjeno:',
+'sp-contributions-submit' => 'OK',
# What links here
'whatlinkshere' => 'Što wotkazuje sem',
@@ -2017,6 +2151,7 @@ $1',
# Block/unblock
'blockip' => 'Wužiwarja zablokować',
+'blockip-title' => 'Wužiwarja blokować',
'blockip-legend' => 'Wužiwarja blokować',
'blockiptext' => 'Wužij slědowacy formular deleka, zo by pisanski přistup za podatu IP-adresu abo wužiwarske mjeno blokował. To měło so jenož stać, zo by wandalizmej zadźěwało a woptpowědujo [[{{MediaWiki:Policy-url}}|zasadam]]. Zapodaj deleka přičinu (na př. citujo wosebite strony, kotrež běchu z woporom wandalizma).',
'ipaddress' => 'IP-adresa',
@@ -2039,7 +2174,7 @@ $1',
'ipbenableautoblock' => 'IP-adresy blokować kiž buchu přez tutoho wužiwarja hižo wužiwane kaž tež naslědne adresy, z kotrychž so wobdźěłanje pospytuje',
'ipbsubmit' => 'Wužiwarja zablokować',
'ipbother' => 'Druha doba',
-'ipboptions' => '2 hodźinje:2 hours,1 dźeń:1 day,3 dny:3 days,1 tydźeń:1 week,2 njedźeli:2 weeks,1 měsać:1 month,3 měsacy:3 months,6 měsacow:6 months,1 lěto:1 year,na přeco:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hodźinje:2 hours,1 dźeń:1 day,3 dny:3 days,1 tydźeń:1 week,2 njedźeli:2 weeks,1 měsać:1 month,3 měsacy:3 months,6 měsacow:6 months,1 lěto:1 year,na přeco:infinite',
'ipbotheroption' => 'druha doba (jendźelsce)',
'ipbotherreason' => 'Druha/přidatna přičina:',
'ipbhidename' => 'Wužiwarske mjeno stawiznach a lisćinach schować',
@@ -2068,9 +2203,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 nachwilne zablokowanja',
'ipblocklist-sh-addressblocks' => '$1 IP-zablokowanja',
'ipblocklist-submit' => 'Pytać',
+'ipblocklist-localblock' => 'Lokalne blokowanje',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
'blocklistline' => '$1, $2 je wužiwarja $3 zablokował ($4)',
'infiniteblock' => 'na přeco',
-'expiringblock' => 'hač do $1',
+'expiringblock' => 'spadnje $1 $2',
'anononlyblock' => 'jenož anonymnych blokować',
'noautoblockblock' => 'awtoblokowanje znjemóžnjene',
'createaccountblock' => 'wutworjenje wužiwarskich kontow znjemóžnjene',
@@ -2084,7 +2221,8 @@ $1',
'contribslink' => 'přinoški',
'autoblocker' => 'Awtomatiske blokowanje, dokelž twoja IP-adresa bu njedawno wot wužiwarja „[[User:$1|$1]]” wužita. Přičina, podata za blokowanje $1, je: "$2"',
'blocklogpage' => 'Protokol zablokowanjow',
-'blocklog-fulllog' => 'Połny protokol blokěrowanjow',
+'blocklog-showlog' => 'Tutón wužiwar bu prjedy zablokowany. Protokol blokowanjow so deleka jako referenca podawa:',
+'blocklog-showsuppresslog' => 'Tutón wužiwar bu prjedy zablokowany a schowany. Protokol potłóčenjow so deleka jako referenca podawa:',
'blocklogentry' => 'je wužiwarja [[$1]] zablokował z časom spadnjenja $2 $3',
'reblock-logentry' => 'změni blokowanske nastajenja za [[$1]] z časom spadnjenja $2 $3',
'blocklogtext' => 'To je protokol blokowanja a wotblokowanja wužiwarjow. Awtomatisce blokowane IP-adresy so njenalistuja. Hlej [[Special:IPBlockList|lisćinu zablokowanych IP-adresow]] za lisćinu tuchwilnych wuhnaćow a zablokowanjow.',
@@ -2103,9 +2241,11 @@ $1',
'ipb_already_blocked' => 'Wužiwar „$1” je hižo zablokowany.',
'ipb-needreblock' => '== Hižo zablokowany ==
$1 je hižo zablokowany. Chceš nastajenja změnić?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
'ipb_cant_unblock' => 'Zmylk: Njemóžno ID zablokowanja $1 namakać. Zablokowanje je so najskerje mjeztym zběhnyło.',
'ipb_blocked_as_range' => 'Zmylk: IP $1 njeje direktnje zablokowana a njeda so wublokować. Blokuje so wšak jako dźěl wobwoda $2, kotryž da so wublokować.',
'ip_range_invalid' => 'Njepłaciwy wobłuk IP-adresow.',
+'ip_range_toolarge' => 'Wobłukowe bloki, kotrež su wjetše hač /$1, njejsu dowolene.',
'blockme' => 'Blokować',
'proxyblocker' => 'Awtomatiske blokowanje wotewrjenych proksy-serwerow',
'proxyblocker-disabled' => 'Tuta funkcija je deaktiwizowana.',
@@ -2115,6 +2255,7 @@ $1 je hižo zablokowany. Chceš nastajenja změnić?',
'sorbsreason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana.',
'sorbs_create_account_reason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana. Njemóžeš konto wutworić.',
'cant-block-while-blocked' => 'Njemóžeš druhich wužiwarjow blokować, mjeztym zo ty sy zablokowany.',
+'cant-see-hidden-user' => 'Wužiwar, kotrehož pospytuješ blokować, bu hižo zablokowany a schowany. Dokelž nimaš prawo wužiwarja schować, njemóžeš blokowanje wužiwarja widźeć abo wobdźěłać.',
# Developer tools
'lockdb' => 'Datowu banku zamknyć',
@@ -2148,6 +2289,7 @@ Wobkedźbuj, zo strona so <b>nje</b> přesunje, jeli strona z nowym titlom hizo
W tutych padach dyrbiš stronu manuelnje přesunyć abo zaměšeć, jeli sej to přeješ.',
'movearticle' => 'Stronu přesunyć',
+'moveuserpage-warning' => "'''Warnowanje:''' Sy při tym wužiwarsku stronu přesunyć. Prošu dźiwaj na to, zo so jenož strona posunje a wužiwar so ''nje''budźe přemjenować.",
'movenologin' => 'Njejsy přizjewjeny.',
'movenologintext' => 'Dyrbiš zregistrowany wužiwar a [[Special:UserLogin|přizjewjeny]] być, zo by stronu přesunył.',
'movenotallowed' => 'Nimaš prawo, zo by strony přesunył.',
@@ -2158,7 +2300,7 @@ W tutych padach dyrbiš stronu manuelnje přesunyć abo zaměšeć, jeli sej to
'move-watch' => 'Stronu wobkedźbować',
'movepagebtn' => 'Stronu přesunyć',
'pagemovedsub' => 'Přesunjenje wuspěšne',
-'movepage-moved' => '\'\'\'Strona "$1" bu do "$2" přesunjena.\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Strona "$1" bu do "$2" přesunjena.\'\'\'',
'movepage-moved-redirect' => 'Daleposrědkowanje je so wutworiło.',
'movepage-moved-noredirect' => 'Wutworjenje daleposrědkowanja bu potłóčene.',
'articleexists' => 'Strona z tutym mjenom hižo eksistuje abo mjeno, kotrež sy wuzwolił, płaćiwe njeje. Prošu wuzwol druhe mjeno.',
@@ -2199,6 +2341,14 @@ Cilowa strona „[[:$1]]” hižo eksistuje. Chceš ju wušmórnyć, zo by so p
'imageinvalidfilename' => 'Mjeno ciloweje dataje je njepłaćiwe',
'fix-double-redirects' => 'Daleposrědkowanja aktualizować, kotrež na prěnjotny titul pokazuja',
'move-leave-redirect' => 'Daleposrědkowanje zawostajić',
+'protectedpagemovewarning' => "'''WARNOWANJE:''' Tuta strona bu zawrjena, zo bychu jenož wužiwarjo z prawami administratora móhli ju přesunyć.
+Najnowši protokolowy zapisk je deleka jako referenca podaty:",
+'semiprotectedpagemovewarning' => "'''Kedźbu:''' Tuta strona bu zawrjena, zo bychu jenož zregistrowani wužiwarjo móhli ju přesunyć.
+Najnowši protokolowy zapisk je deleka jako referenca podaty:",
+'move-over-sharedrepo' => '== Dataja eksistuje ==
+[[:$1]] eksistuje w hromadźe wužiwanym repozitoriju. Přesunjenje dataje k tutomu titulej budźe hromadźe wužiwanu dataju přepisować.',
+'file-exists-sharedrepo' => 'Wubrane datajowe mjeno so hižo w hromadźe wužiwanym repozitoriju wužiwa.
+Prošu wubjer druhe mjeno.',
# Export
'export' => 'Strony eksportować',
@@ -2220,14 +2370,20 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'export-pagelinks' => 'Wotkazane strony zapřijeć, do hłubokosće wot:',
# Namespace 8 related
-'allmessages' => 'Systemowe zdźělenki',
-'allmessagesname' => 'Mjeno',
-'allmessagesdefault' => 'Standardny tekst',
-'allmessagescurrent' => 'Aktualny tekst',
-'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [http://translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
-'allmessagesnotsupportedDB' => "Tuta strona njeda so wužiwać, dokelž '''\$wgUseDatabaseMessages''' bu znjemóžnjeny.",
-'allmessagesfilter' => 'Filter za jednotliwe zdźělenki:',
-'allmessagesmodified' => 'Jenož změnjene pokazać',
+'allmessages' => 'Systemowe zdźělenki',
+'allmessagesname' => 'Mjeno',
+'allmessagesdefault' => 'Standardny tekst',
+'allmessagescurrent' => 'Aktualny tekst',
+'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [http://translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
+'allmessagesnotsupportedDB' => "Tuta strona njeda so wužiwać, dokelž '''\$wgUseDatabaseMessages''' bu znjemóžnjeny.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Po přiměrjenskim stawje filtrować:',
+'allmessages-filter-unmodified' => 'Njezměnjeny',
+'allmessages-filter-all' => 'Wšě',
+'allmessages-filter-modified' => 'Změnjeny',
+'allmessages-prefix' => 'Po prefiksu filtrować:',
+'allmessages-language' => 'Rěč:',
+'allmessages-filter-submit' => 'Wotesłać',
# Thumbnails
'thumbnail-more' => 'powjetšić',
@@ -2237,6 +2393,9 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'djvu_no_xml' => 'Daty XML njemóža so za dataju DjVU wotwołać',
'thumbnail_invalid_params' => 'Njepłaćiwe parametry miniaturki',
'thumbnail_dest_directory' => 'Njemóžno cilowy zapis wutworić.',
+'thumbnail_image-type' => 'Wobrazowy typ so njepodpěruje',
+'thumbnail_gd-library' => 'Njedospołna konfiguracija GD-biblioteki: falowaca funkcija $1',
+'thumbnail_image-missing' => 'Zda so, zo dataja faluje: $1',
# Special:Import
'import' => 'Strony importować',
@@ -2298,6 +2457,7 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'tooltip-ca-viewsource' => 'Strona je škitana. Móžeš pak jeje žórło wobhladać.',
'tooltip-ca-history' => 'stawizny tuteje strony',
'tooltip-ca-protect' => 'stronu škitać',
+'tooltip-ca-unprotect' => 'Tutu stronu hižo nješkitać',
'tooltip-ca-delete' => 'stronu wušmórnyć',
'tooltip-ca-undelete' => 'změny wobnowić, kotrež buchu do wušmórnjenja sčinjene',
'tooltip-ca-move' => 'stronu přesunyć',
@@ -2308,6 +2468,7 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'tooltip-search-fulltext' => 'Strony za tutym tekstom přepytać',
'tooltip-p-logo' => 'hłowna strona',
'tooltip-n-mainpage' => 'hłownu stronu pokazać',
+'tooltip-n-mainpage-description' => 'Hłownu stronu wopytać',
'tooltip-n-portal' => 'wo projekće, što móžeš činić, hdźe móžeš informacije namakać',
'tooltip-n-currentevents' => 'pozadkowe informacije wo aktualnych podawkach pytać',
'tooltip-n-recentchanges' => 'lisćina aktualnych změnow w tutym wikiju',
@@ -2360,10 +2521,12 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymny wužiwar|Anonymnaj wužiwarjej|Anonymni wužiwarjo|Anonymni wužiwarjo}} we {{GRAMMAR:lokatiw|{{SITENAME}}}}',
'siteuser' => 'wužiwarja $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
-'lastmodifiedatby' => 'Strona bu dnja $1 w $2 hodź. wot $3 změnjena.', # $1 date, $2 time, $3 user
+'anonuser' => 'anonymny wužiwar $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
+'lastmodifiedatby' => 'Strona bu dnja $1 w $2 hodź. wot $3 změnjena.',
'othercontribs' => 'Bazěruje na dźěle wužiwarja $1.',
'others' => 'druhich',
'siteusers' => ' {{PLURAL:$2|wužiwarja|wužiwarjeju|wužiwarjow|wužiwarjow}} $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
+'anonusers' => ' {{PLURAL:$2|anonymny wužiwar|anonymnaj wužiwarjej|anonymni wužiwarjo|anonymnych wužiwarjow}} $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
'creditspage' => 'Dźak awtoram',
'nocredits' => 'Za tutu stronu žane informacije wo zasłužbach njejsu.',
@@ -2401,11 +2564,22 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'mw_math_modern' => 'Za moderne wobhladowaki doporučene',
'mw_math_mathml' => 'MathML jeli móžno (eksperimentalnje)',
+# Math errors
+'math_failure' => 'Analyza njeje so poradźiła',
+'math_unknown_error' => 'njeznaty zmylk',
+'math_unknown_function' => 'njeznata funkcija',
+'math_lexing_error' => 'leksikalny zmylk',
+'math_syntax_error' => 'syntaktiski zmylk',
+'math_image_error' => 'Konwertowanje do PNG zwrěšćiło; kontroluj prawu instalaciju latex, dvips, gs a konwertuj',
+'math_bad_tmpdir' => 'Njemóžno do nachwilneho matematiskeho zapisa pisać abo jón wutworić',
+'math_bad_output' => 'Njemóžno do matematiskeho zapisa za wudaće pisać abo jón wutworić',
+'math_notexvc' => 'Wuwjedźomny texvc pobrachuje; prošu hlej math/README za konfiguraciju.',
+
# Patrolling
'markaspatrolleddiff' => 'Změnu jako přepruwowanu woznamjenić',
'markaspatrolledtext' => 'Tutu změnu nastawka jako přepruwowanu woznamjenić',
'markedaspatrolled' => 'Změna bu jako přepruwowana woznamjenjena.',
-'markedaspatrolledtext' => 'Wubrana wersija bu jako přepruwowana woznamjenjena.',
+'markedaspatrolledtext' => 'Wubrana wersija [[:$1]] bu jako dohladowana woznamjenjena.',
'rcpatroldisabled' => 'Přepruwowanje aktualnych změnow je znjemóžnjene.',
'rcpatroldisabledtext' => 'Funkcija přepruwowanja aktualnych změnow je tuchwilu znjemóžnjena.',
'markedaspatrollederror' => 'Njemóžno jako přepruwowanu woznamjenić.',
@@ -2435,12 +2609,9 @@ $1',
'previousdiff' => '← Předchadna změna',
'nextdiff' => 'Přichodna změna →',
-# Visual comparison
-'visual-comparison' => 'Wizuelne přirunanje',
-
# Media information
'mediawarning' => "'''Warnowanje''': Tutón datajowy typ móhł złowólny kod wobsahować. Hdyž so wuwjedźe, móhł so twój system wobškodźić.",
-'imagemaxsize' => 'Wobrazy na stronach wobrazoweho wopisanja wobmjezować na:',
+'imagemaxsize' => "Maksimalna wobrazowa wulkosć:<br />''(za strony datajoweho wopisanja)''",
'thumbsize' => 'Wulkosć miniaturkow (thumbnails):',
'widthheight' => '$1x$2',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|stronje|strony|stronow}}',
@@ -2450,6 +2621,8 @@ $1',
'svg-long-desc' => '(SVG-dataja, zakładna wulkosć: $1 × $2 pikselow, datajowa wulkosć: $3)',
'show-big-image' => 'Wersija z wyšim rozeznaćom',
'show-big-image-thumb' => '<small>Wulkosć miniaturki: $1 × $2 pikselow</small>',
+'file-info-gif-looped' => 'Bjezkónčna sekla',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłukaj|wobłuki|wobłukow}}',
# Special:NewFiles
'newimages' => 'Nowe dataje',
@@ -2481,7 +2654,7 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Šěrokosć',
@@ -2608,14 +2781,14 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-unknowndate' => 'Njeznaty datum',
-'exif-orientation-1' => 'Normalnje', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Wodorunje wobroćeny', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° zwjertnjeny', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Padorunje wobroćeny', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° přećiwo směrej časnika zwjertneny a padorunje wobroćeny', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° w směrje časnika zwjertnjeny', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° w směrje časnika zwjertnjeny a padorunje wobroćeny', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° přećiwo směrej časnika zwjertnjeny', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalnje',
+'exif-orientation-2' => 'Wodorunje wobroćeny',
+'exif-orientation-3' => '180° zwjertnjeny',
+'exif-orientation-4' => 'Padorunje wobroćeny',
+'exif-orientation-5' => '90° přećiwo směrej časnika zwjertneny a padorunje wobroćeny',
+'exif-orientation-6' => '90° w směrje časnika zwjertnjeny',
+'exif-orientation-7' => '90° w směrje časnika zwjertnjeny a padorunje wobroćeny',
+'exif-orientation-8' => '90° přećiwo směrej časnika zwjertnjeny',
'exif-planarconfiguration-1' => 'Škropawy format',
'exif-planarconfiguration-2' => 'Płony format',
@@ -2737,7 +2910,7 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-gpsmeasuremode-2' => 'dwudimensionalne měrjenje',
'exif-gpsmeasuremode-3' => 'třidimensionalne měrjenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mila/h',
'exif-gpsspeed-n' => 'Suki',
@@ -2756,6 +2929,7 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'watchlistall2' => 'wšě',
'namespacesall' => 'wšě',
'monthsall' => 'wšě',
+'limitall' => 'wšě',
# E-mail address confirmation
'confirmemail' => 'Emailowu adresu wobkrućić',
@@ -2883,7 +3057,7 @@ Móžeš tež [[Special:Watchlist/edit|standardnu wobdźěłowansku stronu]] wu
'duplicate-defaultsort' => 'Warnowanje: Standardny sortěrowonski kluč (DEFAULTSORTKEY) "$2" přepisa prjedawšu sortěrowanski kluč "$1".',
# Special:Version
-'version' => 'Wersija', # Not used as normal message but as header for the special page itself
+'version' => 'Wersija',
'version-extensions' => 'Instalowane rozšěrjenja',
'version-specialpages' => 'Specialne strony',
'version-parserhooks' => 'Parserowe hoki',
@@ -2897,7 +3071,7 @@ Móžeš tež [[Special:Watchlist/edit|standardnu wobdźěłowansku stronu]] wu
'version-skin-extension-functions' => 'Rozšěrjenske funkcije za šaty',
'version-hook-name' => 'Mjeno hoki',
'version-hook-subscribedby' => 'Abonowany wot',
-'version-version' => 'Wersija',
+'version-version' => '(Wersija $1)',
'version-license' => 'Licenca',
'version-software' => 'Instalowana software',
'version-software-product' => 'Produkt',
@@ -2977,4 +3151,15 @@ Zapodaj datajowe mjeno '''bjez''' prefiksa \"{{ns:file}}:\".",
'dberr-outofdate' => 'Wobkedźbuj, zo jich indeksy našeho wobsaha móhli zestarjene być.',
'dberr-cachederror' => 'Slědowaca je pufrowana kopija požadaneje strony a móhła zestarjena być.',
+# HTML forms
+'htmlform-invalid-input' => 'Su problemy z twojim zapodaćom',
+'htmlform-select-badoption' => 'Hódnota, kotruž sy zapodał, płaćiwa opcija njeje.',
+'htmlform-int-invalid' => 'Hódnota, kotruž sy zapodał, cyła ličba njeje.',
+'htmlform-float-invalid' => 'Hódnota, kotruž sy podał, ličba njeje.',
+'htmlform-int-toolow' => 'Hódnota, kotruž sy zapodał, je mjeńša hač minimum $1.',
+'htmlform-int-toohigh' => 'Hódnota, kotruž sy zapodał, je wjetša hač maksimum $1.',
+'htmlform-submit' => 'Wotpósłać',
+'htmlform-reset' => 'Změny cofnyć',
+'htmlform-selectorother-other' => 'Druhe',
+
);
diff --git a/languages/messages/MessagesHt.php b/languages/messages/MessagesHt.php
index 541c554b..88655388 100644
--- a/languages/messages/MessagesHt.php
+++ b/languages/messages/MessagesHt.php
@@ -15,24 +15,22 @@
$fallback = 'fr';
$namespaceNames = array(
- NS_MEDIA => 'Medya',
- NS_SPECIAL => 'Espesyal',
- NS_MAIN => '',
- NS_TALK => 'Diskite',
- NS_USER => 'Itilizatè',
- NS_USER_TALK => 'Diskisyon_Itilizatè',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'Diskisyon_$1',
- NS_FILE => 'Imaj',
- NS_FILE_TALK => 'Diskisyon_Imaj',
- NS_MEDIAWIKI => 'MedyaWiki',
- NS_MEDIAWIKI_TALK => 'Diskisyon_MedyaWiki',
- NS_TEMPLATE => 'Modèl',
- NS_TEMPLATE_TALK => 'Diskisyon_Modèl',
- NS_HELP => 'Èd',
- NS_HELP_TALK => 'Diskisyon_Èd',
- NS_CATEGORY => 'Kategori',
- NS_CATEGORY_TALK => 'Diskisyon_Kategori'
+ NS_MEDIA => 'Medya',
+ NS_SPECIAL => 'Espesyal',
+ NS_TALK => 'Diskite',
+ NS_USER => 'Itilizatè',
+ NS_USER_TALK => 'Diskisyon_Itilizatè',
+ NS_PROJECT_TALK => 'Diskisyon_$1',
+ NS_FILE => 'Imaj',
+ NS_FILE_TALK => 'Diskisyon_Imaj',
+ NS_MEDIAWIKI => 'MedyaWiki',
+ NS_MEDIAWIKI_TALK => 'Diskisyon_MedyaWiki',
+ NS_TEMPLATE => 'Modèl',
+ NS_TEMPLATE_TALK => 'Diskisyon_Modèl',
+ NS_HELP => 'Èd',
+ NS_HELP_TALK => 'Diskisyon_Èd',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Diskisyon_Kategori',
);
$specialPageAliases = array(
@@ -155,6 +153,7 @@ $messages = array(
'tog-enotifminoredits' => 'E-mèl mwen tou pou edit minè paj yo',
'tog-enotifrevealaddr' => 'Montre adrès e-mèl mwen nan kominikasyon notifikasyon yo',
'tog-shownumberswatching' => 'Montre kantite itlizatè k’ap swiv',
+'tog-oldsig' => 'Gade pou wè siyati ki egziste deja:',
'tog-fancysig' => 'Konsidere siyati sa tankou yon wikitèks (san lyen ki ta otomatik)',
'tog-externaleditor' => 'Itilize editè ki pa nan sistèm wikimedya pa defo',
'tog-externaldiff' => 'Itilize yon konparatè ki pa nan sitsèm wikimedya pa defo',
@@ -176,6 +175,13 @@ $messages = array(
'underline-never' => 'Jamè',
'underline-default' => 'Brozè defo',
+# Font style option in Special:Preferences
+'editfont-style' => 'Edite fòm tèks an:',
+'editfont-default' => 'si la ki pa defo nan navigatè a',
+'editfont-monospace' => 'Monospaced estil',
+'editfont-sansserif' => 'estil Sans-serif',
+'editfont-serif' => 'Fòm Serif',
+
# Dates
'sunday' => 'dimanch',
'monday' => 'lendi',
@@ -235,7 +241,7 @@ $messages = array(
'category-media-header' => 'Fichye miltimedya nan kategori « $1 »',
'category-empty' => "''Kategori sa a pa genyen atik andedan li, ni sou-kategori, ni menm yon fichye miltimedya.''",
'hidden-categories' => '{{PLURAL:$1|Kategori sere|Kategori sere yo}}',
-'hidden-category-category' => 'Kategori ki kache yo', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori ki kache yo',
'category-subcat-count' => '{{PLURAL:$2|Kategori sa gen sèlman subkategori swivan.|Kategori sa gen swivan {{PLURAL:$1|subkategori|$1 subkategori sa yo}}, sou $2 total.}}',
'category-subcat-count-limited' => 'Kategori sa gen swivan {{PLURAL:$1|subkategori|$1 subkategori sa yo}}.',
'category-article-count' => '{{PLURAL:$2|Kategori sa gen sèlman paj swivan.|Swivan {{PLURAL:$1|paj sa|$1 paj sa yo}} nan kategori sa, sou $2 total.}}',
@@ -253,10 +259,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manyèl:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis diskisyon pou chak ki parèt sou MediaWiki]',
-'about' => 'Apwopo',
-'article' => 'Atik',
-'newwindow' => '(Ouvè nan yon lòt fenèt)',
-'cancel' => 'Anile',
+'about' => 'Apwopo',
+'article' => 'Atik',
+'newwindow' => '(Ouvè nan yon lòt fenèt)',
+'cancel' => 'Anile',
+'moredotdotdot' => 'Pi plis …',
+'mypage' => 'Paj mwen',
+'mytalk' => 'Paj diskisyon mwen an',
+'anontalk' => 'Diskite avèk adrès IP sa',
+'navigation' => 'Navigasyon',
+'and' => '&#32;epi',
+
+# Cologne Blue skin
'qbfind' => 'Chache',
'qbbrowse' => 'Bouske',
'qbedit' => 'Modifye',
@@ -264,15 +278,18 @@ $messages = array(
'qbpageinfo' => 'Kontèks',
'qbmyoptions' => 'Paj mwen yo',
'qbspecialpages' => 'Paj espesyal',
-'moredotdotdot' => 'Pi plis …',
-'mypage' => 'Paj mwen',
-'mytalk' => 'Paj diskisyon mwen an',
-'anontalk' => 'Diskite avèk adrès IP sa',
-'navigation' => 'Navigasyon',
-'and' => '&#32;epi',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Ajoute yon sijè',
+'vector-action-delete' => 'Efase',
+'vector-action-move' => 'Chanje non',
+'vector-action-protect' => 'Pwoteje',
+'vector-action-undelete' => 'Retabli',
+'vector-action-unprotect' => 'Pa pwoteje',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Èd',
'errorpagetitle' => 'Erè',
'returnto' => 'Ritounen nan paj $1.',
@@ -322,7 +339,7 @@ $messages = array(
'otherlanguages' => 'Nan lòt langaj yo',
'redirectedfrom' => '(Redirije depi $1)',
'redirectpagesub' => 'Paj pou redireksyon',
-'lastmodifiedat' => 'Paj sa te modifye pou dènye fwa $1 à $2.<br />', # $1 date, $2 time
+'lastmodifiedat' => 'Paj sa te modifye pou dènye fwa $1 à $2.<br />',
'viewcount' => 'Paj sa te konsilte {{PLURAL:$1|yon fwa|$1 fwa}}.',
'protectedpage' => 'Paj pwoteje',
'jumpto' => 'Ale nan:',
@@ -333,7 +350,6 @@ $messages = array(
'aboutsite' => 'Apwopo {{SITENAME}}',
'aboutpage' => 'Project:Apwopo',
'copyright' => 'Konteni avalab anba $1.',
-'copyrightpagename' => '{{SITENAME}} dwa rezève',
'copyrightpage' => '{{ns:project}}:Dwa rezève',
'currentevents' => 'Aktyalite yo',
'currentevents-url' => 'Project:Aktyalite yo',
@@ -341,8 +357,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avètisman jeneral yo',
'edithelp' => 'Edite paj èd la',
'edithelppage' => 'Help:kòman ou ka modifye yon paj',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Èd',
'mainpage' => 'Paj prensipal',
'mainpage-description' => 'Paj prensipal',
@@ -418,10 +432,6 @@ depi fonksyon sa « <tt>$2</tt> ».
MySQL ritounen erè sa « <tt>$3 : $4</tt> ».',
'dberrortextcl' => 'Yon demann nan baz done a bay yon erè.
Dènye esè nan baz done a te: « $1 » fèt pa fonksyon sa « $2 ». MySQL ritounen mesaj sa « $3 : $4 ».',
-'noconnect' => 'Souple, eskize nou. Wiki a ap konnen kounye a yon erè, kèk pwoblèm teknik; li pa kapab jwenn sèvè a pou voye enfòmasyon ou mande a. <br />
-$1',
-'nodb' => 'Nou pa kapab seleksyone baz done $1',
-'cachederror' => 'Paj sa a se yon paj ki te anrejistre deja, li pa kapab mete l a jou.',
'laggedslavemode' => 'Pòte atansyon, paj sa a pa kapab anrejistre modifikasyon ki fèk fèt yo.',
'readonly' => 'Baz done a fème toutbon.',
'enterlockreason' => 'Bay yon rezon pou fème baz done a epitou yon estimasyon pou tan sa ap pran w pou l ouvri ankò',
@@ -481,14 +491,12 @@ Rezon li bay yo se « ''$2'' ».",
'virus-unknownscanner' => 'antiviris nou pa konnen :',
# Login and logout pages
-'logouttitle' => 'Dekoneksyon-Sòti',
'logouttext' => "'''Monchè oubyen machè, ou dekonekte kounye a.'''
Ou mèt kontinye itilize {{SITENAME}} san ou pa bezwen konekte w, oubyen si ou [[Special:UserLogin|rekonekte]] w ankò ak menm non an oubyen yon lòt.",
'welcomecreation' => '== Byenvini, $1 ! ==
Kont ou an kreye. Pa bliye pèsonalize l nan [[Special:Preferences|preferans ou an sou paj sa {{SITENAME}}]].',
-'loginpagetitle' => 'Koneksyon itilizatè',
'yourname' => 'Non itilizatè ou an :',
'yourpassword' => 'Mopas ou an :',
'yourpasswordagain' => 'Mete mopas ou an ankò :',
@@ -510,21 +518,7 @@ Kont ou an kreye. Pa bliye pèsonalize l nan [[Special:Preferences|preferans ou
'createaccountmail' => 'pa imèl',
'badretype' => 'Mopas ou bay yo pa parèy ditou.',
'userexists' => 'Non itilizatè ou bay an deja itilize pa yon lòt moun. Chwazi yon lòt souple.',
-'youremail' => 'Adrès imèl :',
-'username' => 'Non itilizatè a:',
-'uid' => 'Nimewo ID itilizatè a:',
-'prefs-memberingroups' => 'Manm {{PLURAL:$1|nan gwoup sa|nan gwoup sa yo }} :',
-'yourrealname' => 'Vre non ou:',
-'yourlanguage' => 'Langaj:',
-'yournick' => 'Siyati pou espas diskisyon :',
-'badsig' => 'Premye siyati ou an pa bon; tcheke l nan baliz HTML ou yo.',
-'badsiglength' => 'Siyati ou an two long monchè oubyen machè: pi gwo longè li kapab genyen se $1 karaktè{{PLURAL:$1||}}.',
-'gender-male' => 'Maskilen',
-'email' => 'Imèl',
-'prefs-help-realname' => '(pa enpòtan) : si ou mete li, li ke posib pou nou ba ou rekonpans pou kèk kontrisyon ou yo.',
'loginerror' => 'Erè nan idantifikasyon ou an',
-'prefs-help-email' => 'Adrès imèl pa nesesè, men li ap pèmèt lòt itilizatè yo kontakte w pa imèl (lyen an nan paj itilizatè ou yo); moun sa a pa kapab wè imèl ou an. Imèl sa sèvi tou pou voye mopas ou an lè li rive ou bliye l.',
-'prefs-help-email-required' => 'Nou bezwen ou bay yon adrès imèl. Souple, chache yonn.',
'nocookiesnew' => "Kont itilizatè a kreye, men ou pa konekte. {{SITENAME}} ap itilize koukiz (''cookies'') pou konekte l.Li sanble ou dezaktive fonksyon sa. Tanpri, aktive fonksyon sa epi rekonekte ou ak menm non epi mopas ou yo.",
'nocookieslogin' => "{{SITENAME}} ap itilize koukiz (''cookies'') pou li kapab konekte kò l. Men li sanble ou dezaktive l; tanpri, aktive fonksyon sa epi rekonekte w.",
'noname' => 'Ou pa bay sistèm an yon non itilizatè ki bon.',
@@ -574,7 +568,6 @@ Pa pòte atansyon pou mesaj sa si kont sa kreye pa erè.',
'retypenew' => 'Konfime nouvo mopas an :',
'resetpass_submit' => 'Chanje mopas epitou anrejistre',
'resetpass_success' => 'Nou chanje mopas ou an ak siksè ! Nap anrejistre ou kounye a...',
-'resetpass_bad_temporary' => 'Mopas tanporè sa pa bon ditou. Li sanble ou deja chanje mopas ou an oubyen ou mande yon lòt mopas tanporè.',
'resetpass_forbidden' => 'Nou pa kapab chanje mopas yo nan sistèm sa',
'resetpass-no-info' => 'Ou dwèt konekte pou ou kapab vini nan paj sa.',
'resetpass-submit-loggedin' => 'Modifye mopas sa',
@@ -652,7 +645,6 @@ Adrès IP ou an kounye a se $3. Idantifyan, non ou an nan kilès ou bloke a se $
'blockededitsource' => "Kontni '''modifikasyon ou yo''' nan '''$1''' ekri pli ba :",
'whitelistedittitle' => 'Ou dwèt konekte w pou ou kapab edite epi modifye tèks sa, kontni sa',
'whitelistedittext' => 'Ou dwèt gen fonksyon sa $1 pou ou kapab genyen dwa pou modifye kontni sa.',
-'confirmedittitle' => 'Adrès imèl ou an dwèt valide pou ou kapab modifye kontni sa',
'confirmedittext' => 'Ou dwèt konfime adrès imèl ou an anvan ou modifye paj {{SITENAME}} sa. Antre epi valide adrès elektwonik ou an ak èd ou kapab twouve nan paj sa [[Special:Preferences|preferans]].',
'nosuchsectiontitle' => 'Seksyon sa pa gen anyen sou li',
'nosuchsectiontext' => 'Ou eseye modifye yon seksyon ki pa egziste nan sitèm an.',
@@ -670,7 +662,8 @@ Si se paske ou komèt yon erè ke ou ap twouve ou nan paj sa a, klike anlè bout
'noarticletext' => 'Poko genyen tèks nan paj sa a, ou mèt [[Special:Search/{{PAGENAME}}|fè yon rechèch, fouye ak non paj sa a]] nan lòt paj yo, oubyen <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chache jounal modifikasyon yo ki an relasyon ak paj sa] oubyen tou [{{fullurl:{{FULLPAGENAME}}|action=edit}} modifye paj sa]</span>.',
'userpage-userdoesnotexist' => 'Kont itilizatè « $1 » sa pa anrejistre. Verifye toutbon ke ou vle kreye paj sa.',
'clearyourcache' => "'''Note bagay sa:''' depi ou pibliye paj sa, ou dwèt fòse chajman, rafrechi paj an; ou mèt bliye kontni kach sistèm bwozè (navigatè entènèt ou an) kounye a pou ou kapab wè chanjman yo : '''Mozilla / Firefox / Konqueror / Safari :''' mentni touch ''lèt kapital'' ak klike sou bouton ''Rafrechi/Aktyalize'' oubyen peze ''Maj-Ctrl-R'' (''Maj-Cmd-R'' sou sistèm Apple Mac) ; '''Internet Explorer / Opera :''' mentni touch ''Ctrl'' pandan ou ap prese bouton ''Rafrechi/Aktyalize'' oubyen peze ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Bagay ki ap sèvi w :''' Itilize bouton « Voye kout zye » pou teste nouvo fèy CSS/JS anvan ou anrejistre l.",
+'usercssyoucanpreview' => "'''Bagay ki ap sèvi w :''' Itilize bouton « Voye kout zye » pou teste nouvo fèy CSS anvan ou anrejistre l.",
+'userjsyoucanpreview' => "'''Bagay ki ap sèvi w :''' Itilize bouton « Voye kout zye » pou teste nouvo fèy JS anvan ou anrejistre l.",
'usercsspreview' => "'''Sonje ke ou ap voye yon kout zye sou sa w ekri nan fèy CSS sa.'''
''Li poko anrejistre !'''",
'userjspreview' => "'''Sonje ke ou ap voye kout zye sou fèy JavaScript ou ekri an, li poko anrejistre !'''",
@@ -701,8 +694,8 @@ Kèk bwozè (firefox,ie,opera,safari...) pa kapab afiche byen byen modifikasyon
'longpageerror' => "'''ERÈ : Tèks ou anrejistre a ap fè $1 Ko, tay sa a depase kapasite limit nou kapab aksepte kounye a: $2 Ko. Nou pa kapab anrejistre tèks sa. Eseye ritounen nan paj ou te ye anvan pou kopye modifikasyon ou yo.'''",
'protectedpagewarning' => "'''Pote atansyon : paj sa a pwoteje.
Sèl itilizatè yo ki genyen estati administratè kapab modifye l.'''",
-'templatesused' => 'Modèl ki itilize nan paj sa a :',
-'templatesusedpreview' => 'Modèl ki itilize nan kout zye sa a (previzyalizasyon):',
+'templatesused' => '{{PLURAL:$1|Modèl|Modèl yo}} ki itilize nan paj sa a :',
+'templatesusedpreview' => '{{PLURAL:$1|Modèl|Modèl yo}}ki itilize nan kout zye sa a (previzyalizasyon):',
'templatesusedsection' => 'Modèl yo ki itilize nan seksyon sa :',
'template-protected' => '(pwoteje)',
'template-semiprotected' => '(semi-pwoteje)',
@@ -713,10 +706,11 @@ Sèl itilizatè yo ki genyen estati administratè kapab modifye l.'''",
'permissionserrors' => 'Erè nan pèmisyon yo',
'permissionserrorstext' => 'Ou pa gen otorizasyon pou fè operasyon ke ou mande a pou {{PLURAL:$1|rezon sa|rezon sa yo}} :',
'permissionserrorstext-withaction' => 'Ou pa otorize pou $2, pou {{PLURAL:$1|rezon sa|rezon sa yo}} :',
-'recreate-deleted-warn' => "'''Atansyon : ou ap kreye yon pak ki te efase deja.'''
+'recreate-moveddeleted-warn' => "'''Atansyon : ou ap kreye yon pak ki te efase deja.'''
Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou konnene poukisa efasman yo te fèt anba) :s :",
-'deletelog-fulllog' => 'Wè istorik, jounal konplè pou paj sa',
+'moveddeleted-notice' => 'Paj sa efase.
+Sistèm an ap montre, anba paj sa, jounal tout vèsyon paj an ki efase pou sèvi tankou referans.',
# Parser/template warnings
'post-expand-template-inclusion-category' => 'Paj yo ki genyen twop modèl anndan yo',
@@ -730,7 +724,7 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
'currentrev' => 'Vèsyon kounye a',
'currentrev-asof' => 'Vèsyon kounye a ki date de $1',
'revisionasof' => 'Vèsyon jou $1',
-'revision-info' => 'Vèsyon pou $1 pa $2', # Additionally available: $3: revision id
+'revision-info' => 'Vèsyon pou $1 pa $2',
'previousrevision' => '← Vèsyon presedan',
'nextrevision' => 'Vèsyon swivan →',
'currentrevisionlink' => 'Vèsyon kounye a',
@@ -741,7 +735,6 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
'page_last' => 'dènye',
'histlegend' => 'Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}) = diferans ak vèsyon anvan, <b>m</b> = modifikasyon ki pa enpòtan',
'history-fieldset-title' => 'Navige nan istorik paj sa',
-'deletedrev' => '[efase]',
'histfirst' => 'Premye kontribisyon yo',
'histlast' => 'Dènye kontribisyon yo',
'historysize' => '({{PLURAL:$1|$1 okte|$1 okte yo}})',
@@ -750,7 +743,7 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
# Revision feed
'history-feed-title' => 'Istorik vèsyon yo',
'history-feed-description' => 'Istorik pou paj sa anlè wiki a',
-'history-feed-item-nocomment' => '$1, lè li te ye $2', # user at time
+'history-feed-item-nocomment' => '$1, lè li te ye $2',
# Revision deletion
'rev-deleted-comment' => '(komantè efase)',
@@ -762,12 +755,12 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
'revdelete-selected' => "'''{{PLURAL:$2|Vèsyon ou seleksyone|Vèsyon ou seleksyone yo}} de $1 :'''",
'revdelete-legend' => 'Mete restriksyon nan vizibilite yo :',
'revdelete-hide-text' => 'Kache tèks anba vèsyon sa',
+'revdelete-hide-image' => 'Kache kontni fichye a',
'revdelete-hide-name' => 'Kache aksyon an ak sib li',
'revdelete-hide-comment' => 'Kache komantè sou modifikasyon an',
'revdelete-hide-user' => 'Kache idantifyan, non itilizatè oubyen adrès IP kontribitè an.',
'revdelete-hide-restricted' => 'Aplike restriksyon sa yo pou administratè yo epi lòt itilizatè yo',
'revdelete-suppress' => 'Kache revizyon yo tou pou administratè yo',
-'revdelete-hide-image' => 'Kache kontni fichye a',
'revdelete-unsuppress' => 'Anlve restriksyon yo sou vèsyon yo ki restore',
'revdelete-log' => 'Poukisa:',
'revdelete-submit' => 'Aplike sou vèsyon ki seleksyone a',
@@ -799,13 +792,11 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
'searchresulttext' => 'Pou oukapab konenn plis sou rechèch nan {{SITENAME}}, gade [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Ou chache « '''[[:$1]]''' » ([[Special:Prefixindex/$1|tout paj yo ki komanse pa« $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tout paj yo ki genyen lyen vè « $1 »]])",
'searchsubtitleinvalid' => "Ou chache « '''$1''' »",
-'noexactmatch' => "'''Pa genyen pyès paj ki genyen non sa a « $1 ».''' Ou mèt [[:$1|kreye atik sa a]].",
-'noexactmatch-nocreate' => "'''Pa genyen pyès paj ki rele « $1 ».'''",
'notitlematches' => 'Pa gen paj nan sistèm ki genyen tit ou bay nan rechèch ou an.',
'notextmatches' => 'Pa genyen pyès tèks nan paj yo ki ap koresponn ak rechèch ou fè a',
-'prevn' => '$1 anvan yo',
-'nextn' => '$1 swivan yo',
-'viewprevnext' => 'Wè ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} anvan yo',
+'nextn' => '{{PLURAL:$1|$1}} swivan yo',
+'viewprevnext' => 'Wè ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Èd',
'search-result-size' => '$1 ({{PLURAL:$2| mo|$2 mo yo}})',
'search-redirect' => '(redireksyon depi $1)',
@@ -816,7 +807,6 @@ Mande ou byen si ou ap byen fè kreye li ankò toutbon (gade jounal paj sa a pou
'search-interwiki-more' => '(plis)',
'search-mwsuggest-enabled' => 'ak sigjesyon, kèk lide',
'search-mwsuggest-disabled' => 'san lide, san endikasyon',
-'showingresultstotal' => "Ap montre {{PLURAL:$4|rezilta '''$1'''|rezilta '''$1 – $2'''}} anlè '''$3'''",
'nonefound' => "'''Remak''' : sèl kèk espas non chache nan sityasyon nòmal.
Eseye pou wè si ak prefiks ''all:'' pou chache nan tout kontni a (anndann nou ap twouve paj diskisyon yo, modèl yo, etc.) oubyen itilize espas non ou ta renmen pou prefiks.",
'powersearch' => 'Fouye fon',
@@ -826,9 +816,23 @@ Eseye pou wè si ak prefiks ''all:'' pou chache nan tout kontni a (anndann nou a
'powersearch-field' => 'Chache',
# Preferences page
-'preferences' => 'Preferans yo',
-'mypreferences' => 'Preferans yo',
-'skin-preview' => 'Voye kout zye',
+'preferences' => 'Preferans yo',
+'mypreferences' => 'Preferans yo',
+'skin-preview' => 'Voye kout zye',
+'youremail' => 'Adrès imèl :',
+'username' => 'Non itilizatè a:',
+'uid' => 'Nimewo ID itilizatè a:',
+'prefs-memberingroups' => 'Manm {{PLURAL:$1|nan gwoup sa|nan gwoup sa yo }} :',
+'yourrealname' => 'Vre non ou:',
+'yourlanguage' => 'Langaj:',
+'yournick' => 'Siyati pou espas diskisyon :',
+'badsig' => 'Premye siyati ou an pa bon; tcheke l nan baliz HTML ou yo.',
+'badsiglength' => 'Siyati ou an two long monchè oubyen machè: pi gwo longè li kapab genyen se $1 karaktè{{PLURAL:$1||}}.',
+'gender-male' => 'Maskilen',
+'email' => 'Imèl',
+'prefs-help-realname' => '(pa enpòtan) : si ou mete li, li ke posib pou nou ba ou rekonpans pou kèk kontrisyon ou yo.',
+'prefs-help-email' => 'Adrès imèl pa nesesè, men li ap pèmèt lòt itilizatè yo kontakte w pa imèl (lyen an nan paj itilizatè ou yo); moun sa a pa kapab wè imèl ou an. Imèl sa sèvi tou pou voye mopas ou an lè li rive ou bliye l.',
+'prefs-help-email-required' => 'Nou bezwen ou bay yon adrès imèl. Souple, chache yonn.',
# Groups
'group-sysop' => 'Administratè yo',
@@ -868,6 +872,8 @@ Eseye pou wè si ak prefiks ''all:'' pou chache nan tout kontni a (anndann nou a
# Recent changes linked
'recentchangeslinked' => 'Swivi pou lyen yo',
+'recentchangeslinked-feed' => 'Swivi pou lyen yo',
+'recentchangeslinked-toolbox' => 'Swivi pou lyen yo',
'recentchangeslinked-title' => 'Chanjman ki an relasyon ak "$1"',
'recentchangeslinked-noresult' => 'Pa genyen pyès chanjman nan paj sa yo pou peryòd ou chwazi an.e.',
'recentchangeslinked-summary' => "Paj espesyal sa a ap montre dènye chanjman nan paj ki genyen lyen sou yo. Paj yo ki nan [[Special:Watchlist|lis swivi]] ou an ap ekri '''fonse'''",
@@ -884,6 +890,7 @@ Eseye pou wè si ak prefiks ''all:'' pou chache nan tout kontni a (anndann nou a
'listfiles' => 'Lis fichye yo',
# File description page
+'file-anchor-link' => 'Fichye',
'filehist' => 'Istorik fichye a',
'filehist-help' => 'Klike anlè yon dat epi yon lè pou fichye a jan li te ye nan moman sa a.',
'filehist-current' => 'Kounye a',
@@ -897,11 +904,7 @@ Eseye pou wè si ak prefiks ''all:'' pou chache nan tout kontni a (anndann nou a
'imagelinks' => 'Lyen nan paj an',
'linkstoimage' => '{{PLURAL:$1|Paj ki ap swiv an|Paj yo ki ap swiv}} genyen imaj sa a :',
'nolinkstoimage' => 'Pyès paj pa genyen imaj sa a.',
-'sharedupload' => 'Fichye sa a kapab pataje, li sòti depi $1 e li kapab itilize pa lòt pwojè yo.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'Nou ap montre ou deskripsyon ki nan $1 pa li.',
-'shareduploadwiki-linktext' => 'paj deskripsyon pou fichye a',
-'noimage' => 'Pa genyen pyès fichye ki genyen non sa a, men ou mèt $1.',
-'noimage-linktext' => 'chaje yonn',
+'sharedupload' => 'Fichye sa a kapab pataje, li sòti depi $1 e li kapab itilize pa lòt pwojè yo.',
'uploadnewversion-linktext' => 'Kopye yon nouvo vèsyon pou fichye sa a',
# MIME search
@@ -1055,7 +1058,6 @@ Gade $2 pou wè yon lis efasman resan.',
'protectexpiry' => 'Ekspirasyon(Paj an pe ke ekspire si ou pa mete anyen)',
'protect_expiry_invalid' => 'Dat ou mete a pou li ekspire pa bon',
'protect_expiry_old' => 'dat ekspirasyon an ja pase;',
-'protect-unchain' => 'Debloàke pèmisyon yo pou renonmen, deplase',
'protect-text' => "Ou mèt konsilte epi modifye nivo pwoteksyon paj sa a '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Ou pa genyen dwa ki ap pèmèt ou modifye pwoteksyon paj sa a.
Men reglaj pou paj '''$1''' an kounye a:",
@@ -1068,7 +1070,7 @@ Men reglaj pou paj '''$1''' an kounye a:",
'protect-expiring' => 'ap ekspire $1',
'protect-cascade' => 'Pwoteksyon enbrike - ap pwoteje tout paj ki andidan paj sa a.',
'protect-cantedit' => 'Ou pa kapab modifye nivo pwoteksyon paj sa a paske ou pa gen dwa pou edite li.',
-'protect-expiry-options' => '1 zè:1 hour,1 jou:1 day,1 semèn:1 week,2 semèn:2 weeks,1 mwa:1 month,3 mwa:3 months,6 mwa:6 months,1 lane:1 year,ki pap janm fini:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 zè:1 hour,1 jou:1 day,1 semèn:1 week,2 semèn:2 weeks,1 mwa:1 month,3 mwa:3 months,6 mwa:6 months,1 lane:1 year,ki pap janm fini:infinite',
'restriction-type' => 'Pèmisyon:',
'restriction-level' => 'Nivo kontrent, restriksyon:',
@@ -1094,6 +1096,7 @@ Men reglaj pou paj '''$1''' an kounye a:",
'sp-contributions-newbies' => 'Montre sèlman kontribisyon nouvo itilizatè yo',
'sp-contributions-newbies-sub' => 'Lis kontribisyon pou nouvo itilizatè yo. Paj ki efase pe ke ap montre.',
'sp-contributions-blocklog' => 'jounal blokaj yo',
+'sp-contributions-talk' => 'Diskite',
'sp-contributions-search' => 'Chache kontribisyon yo',
'sp-contributions-username' => 'Adrès IP oubyen non itilizatè:',
'sp-contributions-submit' => 'Chache',
@@ -1117,7 +1120,7 @@ Men reglaj pou paj '''$1''' an kounye a:",
# Block/unblock
'blockip' => 'Bloke yon adrès IP oubyen yon itilizatè',
-'ipboptions' => '2 zè:2 hours,1 jou:1 day,3 jou:3 days,1 semèn:1 week,2 semèn:2 weeks,1 mwa:1 month,3 mwa:3 months,6 mwa:6 months,1 lane:1 year,ki pap janm fini:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 zè:2 hours,1 jou:1 day,3 jou:3 days,1 semèn:1 week,2 semèn:2 weeks,1 mwa:1 month,3 mwa:3 months,6 mwa:6 months,1 lane:1 year,ki pap janm fini:infinite',
'ipblocklist' => 'Lis IP itilizatè yo ki bloke',
'blocklink' => 'Bloke',
'unblocklink' => 'Debloke',
@@ -1151,7 +1154,7 @@ Nan pozisyon sa a, ou ke dwèt renonmen oubyen fizyone ou menm menm paj an si ou
'move-watch' => 'Swiv paj sa a',
'movepagebtn' => 'Deplase paj an',
'pagemovedsub' => 'Deplasman an fèt',
-'movepage-moved' => '\'\'\'"$1" deplase nan "$2" alè kile\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" deplase nan "$2" alè kile\'\'\'',
'articleexists' => 'Nou ja genyen yon atik ak non sa a oubyen non ke ou chwazi an pa valab ankò. Chwazi yon lòt.',
'talkexists' => 'Paj an men byen deplase. Mè paj diskisyon an pa deplase paske li te ja egziste yonn anlè nouvo paj an. Souple, fizyone de diskisyon sa yo, mete yo ansanmm anlè nouvo paj an.',
'movedto' => 'deplase nan',
@@ -1197,6 +1200,7 @@ Nan pozisyon sa a, ou ke dwèt renonmen oubyen fizyone ou menm menm paj an si ou
'tooltip-search-go' => 'Ale sou yon paj ki pòte egzateman non sa si li egziste',
'tooltip-search-fulltext' => 'Chache paj yo ki genyen tèks sa.',
'tooltip-n-mainpage' => 'Vizite paj prensipal an',
+'tooltip-n-mainpage-description' => 'Vizite paj prensipal an',
'tooltip-n-portal' => 'Apwopo pwojè a, sa ou kapab fè, ki kote ou mèt twouve kèk bagay',
'tooltip-n-currentevents' => 'Twouve enfòmasyon yo anlè evènman ki ap fèt kounye a',
'tooltip-n-recentchanges' => 'Lis modifikasyon ki fèk fèt nan wiki a',
@@ -1262,7 +1266,7 @@ Nenpòt lòt lyen nan menm lign nan konsidere kòm yon eksèpsyon, i.e. paj kote
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Modifye fichye sa a epi yon aplikasyon pa ou (ki pa nan sistèm an, sou machin ou pa egzanp).',
@@ -1279,7 +1283,7 @@ Nenpòt lòt lyen nan menm lign nan konsidere kòm yon eksèpsyon, i.e. paj kote
'watchlisttools-raw' => 'Modifye lis swivi (mòd bazik)',
# Special:Version
-'version' => 'Vèsyon', # Not used as normal message but as header for the special page itself
+'version' => 'Vèsyon',
# Special:SpecialPages
'specialpages' => 'Paj espesyal yo',
diff --git a/languages/messages/MessagesHu.php b/languages/messages/MessagesHu.php
index d408f997..9be1f646 100644
--- a/languages/messages/MessagesHu.php
+++ b/languages/messages/MessagesHu.php
@@ -10,6 +10,7 @@
* @author Balasyum
* @author Bdamokos
* @author Bennó
+ * @author BáthoryPéter
* @author CERminator
* @author Cerasus
* @author Dani
@@ -69,7 +70,7 @@ $specialPageAliases = array(
'Watchlist' => array( 'Figyelőlistám' ),
'Recentchanges' => array( 'Friss változtatások' ),
'Upload' => array( 'Feltöltés' ),
- 'Listfiles' => array( 'Fájllista', 'Képlista' ),
+ 'Listfiles' => array( 'Fájlok listája', 'Képek listája', 'Fájllista', 'Képlista' ),
'Newimages' => array( 'Új fájlok', 'Új képek', 'Új képek galériája' ),
'Listusers' => array( 'Szerkesztők listája', 'Szerkesztők', 'Felhasználók' ),
'Listgrouprights' => array( 'Szerkesztői csoportok jogai' ),
@@ -101,7 +102,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'Védett lapok' ),
'Protectedtitles' => array( 'Védett címek' ),
'Allpages' => array( 'Az összes lap listája' ),
- 'Prefixindex' => array( 'Egy névtérbe tartozó lapok listája' ),
+ 'Prefixindex' => array( 'Keresés előtag szerint' ),
'Ipblocklist' => array( 'Blokkolt IP-címek listája' ),
'Specialpages' => array( 'Speciális lapok' ),
'Contributions' => array( 'Szerkesztő közreműködései' ),
@@ -138,7 +139,7 @@ $specialPageAliases = array(
'Popularpages' => array( 'Népszerű oldalak' ),
'Search' => array( 'Keresés' ),
'Resetpass' => array( 'Jelszócsere' ),
- 'Withoutinterwiki' => array( 'Wikiközi hivatkozás nélküli lapok', 'Interwikilinkek nélküli lapok' ),
+ 'Withoutinterwiki' => array( 'Nyelvközi hivatkozás nélküli lapok', 'Wikiközi hivatkozás nélküli lapok', 'Interwikilinkek nélküli lapok' ),
'MergeHistory' => array( 'Laptörténetek egyesítése', 'Laptörténet-egyesítés' ),
'Filepath' => array( 'Fájl elérési útja', 'Fájl elérési út' ),
'Invalidateemail' => array( 'E-mail cím érvénytelenítése' ),
@@ -172,16 +173,18 @@ $magicWords = array(
'forcetoc' => array( '0', '__LEGYENTARTALOMJEGYZÉK__', '__LEGYENTJ__', '__FORCETOC__' ),
'toc' => array( '0', '__TARTALOMJEGYZÉK__', '__TJ__', '__TOC__' ),
'noeditsection' => array( '0', '__NINCSSZERKESZTÉS__', '__NINCSSZERK__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'JELENLEGIHÓNAP', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'JELENLEGIHÓNAPNEVE', 'CURRENTMONTHNAME' ),
- 'currentmonthabbrev' => array( '1', 'JELENLEGIHÓNAPRÖVID', 'CURRENTMONTHABBREV' ),
+ 'currentmonth' => array( '1', 'HÓNAP', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'HÓNAP1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'HÓNAPNEVE', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', 'HÓNAPRÖVID', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'MAINAP', 'CURRENTDAY' ),
'currentday2' => array( '1', 'MAINAP2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'MAINAPNEVE', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'JELENLEGIÉV', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'JELENLEGIIDŐ', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'JELENLEGIÓRA', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'HELYIHÓNAP', 'LOCALMONTH' ),
+ 'currentyear' => array( '1', 'ÉV', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'IDŐ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ÓRA', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'HELYIHÓNAP', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'HELYIHÓNAP1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'HELYIHÓNAPNÉV', 'LOCALMONTHNAME' ),
'localmonthabbrev' => array( '1', 'HELYIHÓNAPRÖVIDÍTÉS', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'HELYINAP', 'LOCALDAY' ),
@@ -194,7 +197,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'SZÓCIKKEKSZÁMA', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'FÁJLOKSZÁMA', 'KÉPEKSZÁMA', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'SZERKESZTŐKSZÁMA', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'AKTÍVSZERKESZTŐKSZÁMA', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'SZERKESZTÉSEKSZÁMA', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'MEGTEKINTÉSEKSZÁMA', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'OLDALNEVE', 'PAGENAME' ),
'pagenamee' => array( '1', 'OLDALNEVEE', 'PAGENAMEE' ),
'namespace' => array( '1', 'NÉVTERE', 'NAMESPACE' ),
@@ -231,26 +236,27 @@ $magicWords = array(
'img_super' => array( '1', 'fi', 'felsőindex', 'super', 'sup' ),
'img_top' => array( '1', 'fenn', 'fent', 'top' ),
'img_text_top' => array( '1', 'szöveg-fenn', 'szöveg-fent', 'text-top' ),
- 'img_middle' => array( '1', 'középen', 'középre', 'middle' ),
+ 'img_middle' => array( '1', 'vközépen', 'vközépre', 'middle' ),
'img_bottom' => array( '1', 'lenn', 'lent', 'bottom' ),
'img_text_bottom' => array( '1', 'szöveg-lenn', 'szöveg-lent', 'text-bottom' ),
- 'sitename' => array( '1', 'OLDALNEVE', 'WIKINEVE', 'SITENAME' ),
+ 'sitename' => array( '1', 'WIKINEVE', 'SITENAME' ),
'ns' => array( '0', 'NÉVTÉR:', 'NS:' ),
'localurl' => array( '0', 'HELYIURL:', 'LOCALURL:' ),
'localurle' => array( '0', 'HELYIURLE:', 'LOCALURLE:' ),
'server' => array( '0', 'SZERVER', 'KISZOLGÁLÓ', 'SERVER' ),
'servername' => array( '0', 'SZERVERNEVE', 'KISZOLGÁLÓNEVE', 'SERVERNAME' ),
'grammar' => array( '0', 'NYELVTAN:', 'GRAMMAR:' ),
- 'currentweek' => array( '1', 'JELENLEGIHÉT', 'CURRENTWEEK' ),
- 'currentdow' => array( '1', 'JELENLEGIHÉTNAPJA', 'CURRENTDOW' ),
+ 'currentweek' => array( '1', 'HÉT', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'HÉTNAPJA', 'CURRENTDOW' ),
'localweek' => array( '1', 'HELYIHÉT', 'LOCALWEEK' ),
'localdow' => array( '1', 'HELYIHÉTNAPJA', 'LOCALDOW' ),
- 'revisionid' => array( '1', 'VÁLTOZATID', 'REVISIONID' ),
- 'revisionday' => array( '1', 'VÁLTOZATNAP', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'VÁLTOZATNAP2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( '1', 'VÁLTOZATHÓNAP', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'VÁLTOZATÉV', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( '1', 'VÁLTOZATIDŐBÉLYEG', 'VÁLTOZATIDŐ', 'REVISIONTIMESTAMP' ),
+ 'revisionid' => array( '1', 'VÁLTOZATAZON', 'VÁLTOZATAZONOSÍTÓ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'VÁLTOZATNAPJA', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'VÁLTOZATNAPJA2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'VÁLTOZATHÓNAPJA', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'VÁLTOZATÉVE', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'VÁLTOZATIDŐBÉLYEG', 'VÁLTOZATIDEJE', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'VÁLTOZATSZERKESZTŐJE', 'REVISIONUSER' ),
'plural' => array( '0', 'TÖBBESSZÁM:', 'PLURAL:' ),
'fullurl' => array( '0', 'TELJESURL:', 'FULLURL:' ),
'fullurle' => array( '0', 'TELJESURLE:', 'FULLURLE:' ),
@@ -259,11 +265,12 @@ $magicWords = array(
'lc' => array( '0', 'KISBETŰ:', 'KISBETŰK:', 'KB:', 'KISBETŰS:', 'LC:' ),
'uc' => array( '0', 'NAGYBETŰ:', 'NAGYBETŰK', 'NB:', 'NAGYBETŰS:', 'UC:' ),
'displaytitle' => array( '1', 'MEGJELENÍTENDŐCÍM', 'CÍM', 'DISPLAYTITLE' ),
- 'newsectionlink' => array( '1', '__ÚJSZAKASZLINK__', '__NEWSECTIONLINK__' ),
+ 'newsectionlink' => array( '1', '__ÚJSZAKASZHIV__', '__ÚJSZAKASZLINK__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__NINCSÚJSZAKASZHIV__', '__NINCSÚJSZAKASZLINK__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'JELENLEGIVÁLTOZAT', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'URLKÓDOLVA:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'HORGONYKÓDOLVA', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( '1', 'JELENLEGIIDŐBÉLYEG', 'CURRENTTIMESTAMP' ),
+ 'currenttimestamp' => array( '1', 'IDŐBÉLYEG', 'CURRENTTIMESTAMP' ),
'localtimestamp' => array( '1', 'HELYIIDŐBÉLYEG', 'LOCALTIMESTAMP' ),
'directionmark' => array( '1', 'IRÁNYJELZŐ', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#NYELV:', '#LANGUAGE:' ),
@@ -275,8 +282,13 @@ $magicWords = array(
'defaultsort' => array( '1', 'RENDEZÉS:', 'KULCS:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'ELÉRÉSIÚT:', 'FILEPATH:' ),
'hiddencat' => array( '1', '__REJTETTKAT__', '__REJTETTKATEGÓRIA__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'LAPOKAKATEGÓRIÁBAN', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'LAPMÉRET', 'PAGESIZE' ),
+ 'noindex' => array( '1', '__NINCSINDEX__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'CSOPORTTAGOK', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__ÁLLANDÓÁTIRÁNYÍTÁS__', '__STATIKUSÁTIRÁNYÍTÁS__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'VÉDELMISZINT', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'dátumformázás', 'formatdate', 'dateformat' ),
);
$linkTrail = '/^([a-záéíóúöüőűÁÉÍÓÚÖÜŐŰ]+)(.*)$/sDu';
@@ -312,6 +324,7 @@ $messages = array(
'tog-enotifminoredits' => 'Értesítés e-mailben a lapok apró változtatásairól',
'tog-enotifrevealaddr' => 'Jelenítse meg az e-mail címemet a figyelmeztető e-mailekben',
'tog-shownumberswatching' => 'Az oldalt figyelő szerkesztők számának mutatása',
+'tog-oldsig' => 'A jelenlegi aláírás előnézete:',
'tog-fancysig' => 'Az aláírás wikiszöveg (nem lesz automatikusan hivatkozásba rakva)',
'tog-externaleditor' => 'Külső szerkesztőprogram használata (csak haladók számára, speciális beállításokra van szükség a számítógépen)',
'tog-externaldiff' => 'Külső diff program használata (csak haladók számára, speciális beállításokra van szükség a számítógépen)',
@@ -334,6 +347,13 @@ $messages = array(
'underline-never' => 'Soha',
'underline-default' => 'A böngésző alapértelmezése szerint',
+# Font style option in Special:Preferences
+'editfont-style' => 'A szerkesztőterület betűtípusa:',
+'editfont-default' => 'a böngésző alapértelmezett betűtípusa',
+'editfont-monospace' => 'fix szélességű betűtípus',
+'editfont-sansserif' => 'talpatlan (sans-serif) betűtípus',
+'editfont-serif' => 'talpas (serif) betűtípus',
+
# Dates
'sunday' => 'vasárnap',
'monday' => 'hétfő',
@@ -393,7 +413,7 @@ $messages = array(
'category-media-header' => 'A(z) „$1” kategóriába tartozó médiafájlok',
'category-empty' => "''Ebben a kategóriában pillanatnyilag egyetlen lap, médiafájl vagy alkategória sem szerepel.''",
'hidden-categories' => '{{PLURAL:$1|Rejtett kategória|Rejtett kategóriák}}',
-'hidden-category-category' => 'Rejtett kategóriák', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Rejtett kategóriák',
'category-subcat-count' => "''{{PLURAL:$2|Ennek a kategóriának csak egyetlen alkategóriája van.|Ez a kategória az alábbi {{PLURAL:$1|alkategóriával|$1 alkategóriával}} rendelkezik (összesen $2 alkategóriája van).}}''",
'category-subcat-count-limited' => 'Ebben a kategóriában {{PLURAL:$1|egy|$1}} alkategória található.',
'category-article-count' => '{{PLURAL:$2|Csak a következő lap található ebben a kategóriában.|Az összesen $2 lapból a következő $1-t listázza ez a kategóriaoldal, a többi a további oldalakon található.}}',
@@ -401,6 +421,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Csak a következő fájl található ebben a kategóriában.|Az összesen $2 fájlból a következő $1-t listázza ez a kategórialap, a többi a további oldalakon található.}}',
'category-file-count-limited' => '{{PLURAL:$1|Egy|$1}} fájl található ebben a kategóriában.',
'listingcontinuesabbrev' => 'folyt.',
+'index-category' => 'Indexelt lapok',
+'noindex-category' => 'Nem indexelt lapok',
'mainpagetext' => "'''A MediaWiki telepítése sikeresen befejeződött.'''",
'mainpagedocfooter' => "Ha segítségre van szükséged a wikiszoftver használatához, akkor keresd fel a [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] oldalt.
@@ -410,10 +432,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki GyIK]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-kiadások levelezőlistája]",
-'about' => 'Névjegy',
-'article' => 'Szócikk',
-'newwindow' => '(új ablakban nyílik meg)',
-'cancel' => 'Mégse',
+'about' => 'Névjegy',
+'article' => 'Szócikk',
+'newwindow' => '(új ablakban nyílik meg)',
+'cancel' => 'Mégse',
+'moredotdotdot' => 'Tovább…',
+'mypage' => 'Lapom',
+'mytalk' => 'Vitalapom',
+'anontalk' => 'az IP-címhez tartozó vitalap',
+'navigation' => 'Navigáció',
+'and' => '&#32;és',
+
+# Cologne Blue skin
'qbfind' => 'Keresés',
'qbbrowse' => 'Böngészés',
'qbedit' => 'Szerkesztés',
@@ -421,15 +451,35 @@ $messages = array(
'qbpageinfo' => 'Lapinformáció',
'qbmyoptions' => 'Lapjaim',
'qbspecialpages' => 'Speciális lapok',
-'moredotdotdot' => 'Tovább…',
-'mypage' => 'Lapom',
-'mytalk' => 'Vitalapom',
-'anontalk' => 'az IP-címhez tartozó vitalap',
-'navigation' => 'Navigáció',
-'and' => '&#32;és',
-
-# Metadata in edit box
-'metadata_help' => 'Metaadatok:',
+'faq' => 'GyIK',
+'faqpage' => 'Project:GyIK',
+
+# Vector skin
+'vector-action-addsection' => 'Új szakasz nyitása',
+'vector-action-delete' => 'Törlés',
+'vector-action-move' => 'Átnevezés',
+'vector-action-protect' => 'Lapvédelem',
+'vector-action-undelete' => 'Visszaállítás',
+'vector-action-unprotect' => 'Védelem feloldása',
+'vector-namespace-category' => 'Kategória',
+'vector-namespace-help' => 'Segítséglap',
+'vector-namespace-image' => 'Fájl',
+'vector-namespace-main' => 'Szócikk',
+'vector-namespace-media' => 'Médialap',
+'vector-namespace-mediawiki' => 'Rendszerüzenet',
+'vector-namespace-project' => 'Projektlap',
+'vector-namespace-special' => 'Speciális lap',
+'vector-namespace-talk' => 'Megbeszélés',
+'vector-namespace-template' => 'Sablon',
+'vector-namespace-user' => 'Szerkesztői lap',
+'vector-view-create' => 'Létrehozás',
+'vector-view-edit' => 'Szerkesztés',
+'vector-view-history' => 'Laptörténet',
+'vector-view-view' => 'Olvasás',
+'vector-view-viewsource' => 'A lap forrása',
+'actions' => 'Műveletek',
+'namespaces' => 'Névterek',
+'variants' => 'Változók',
'errorpagetitle' => 'Hiba',
'returnto' => 'Vissza a(z) $1 laphoz.',
@@ -479,18 +529,22 @@ $messages = array(
'otherlanguages' => 'Más nyelveken',
'redirectedfrom' => '($1 szócikkből átirányítva)',
'redirectpagesub' => 'Átirányító lap',
-'lastmodifiedat' => 'A lap utolsó módosítása: $1, $2', # $1 date, $2 time
+'lastmodifiedat' => 'A lap utolsó módosítása: $1, $2',
'viewcount' => 'Ezt a lapot {{PLURAL:$1|egy|$1}} alkalommal keresték fel.',
'protectedpage' => 'Védett lap',
'jumpto' => 'Ugrás:',
'jumptonavigation' => 'navigáció',
'jumptosearch' => 'keresés',
+'view-pool-error' => 'Sajnáljuk, de a szerverek jelenleg túl vannak terhelve.
+Túl sok felhasználó próbálta megtekinteni ezt az oldalt.
+Kérlek, várj egy kicsit, mielőtt újrapróbálkoznál a lap megtekintésével.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A {{SITENAME}} wikiről',
'aboutpage' => 'Project:Rólunk',
'copyright' => 'A tartalom a(z) $1 feltételei szerint használható fel.',
-'copyrightpagename' => '{{SITENAME}} szerzői jogok',
'copyrightpage' => '{{ns:project}}:Szerzői jogok',
'currentevents' => 'Aktuális események',
'currentevents-url' => 'Project:Friss események',
@@ -498,8 +552,6 @@ $messages = array(
'disclaimerpage' => 'Project:Jogi nyilatkozat',
'edithelp' => 'Szerkesztési súgó',
'edithelppage' => 'Help:Szerkesztés',
-'faq' => 'GyIK',
-'faqpage' => 'Project:GyIK',
'helppage' => 'Help:Tartalom',
'mainpage' => 'Kezdőlap',
'mainpage-description' => 'Kezdőlap',
@@ -577,10 +629,6 @@ Az adatbázis ezzel a hibával tért vissza: „<tt>$3: $4</tt>”.',
Az utolsó adatbázis-lekérdezés a(z) „$2” függvényből történt, és a következő volt:
„$1”
Az adatbázis ezzel a hibával tért vissza: „$3: $4”.',
-'noconnect' => 'A wikin technikai problémák merültek fel, és nem sikerült csatlakozni az adatbázisszerverhez.<br />
-$1',
-'nodb' => 'Nem sikerült kiválasztani a(z) $1 adatbázist',
-'cachederror' => 'Ez a kért lap gyorsítótáras változata, ezért lehet, hogy nem tartalmazza a legújabb módosításokat.',
'laggedslavemode' => 'Figyelem: Ez a lap nem feltétlenül tartalmazza a legfrissebb változtatásokat!',
'readonly' => 'Az adatbázis le van zárva',
'enterlockreason' => 'Add meg a lezárás okát, valamint egy becslést, hogy mikor kerül a lezárás feloldásra',
@@ -598,6 +646,8 @@ Jelezd ezt egy [[Special:ListUsers/sysop|adminiszttrátornak]] az URL megadásá
'readonly_lag' => 'Az adatbázis automatikusan zárolásra került, amíg a mellékkiszolgálók utolérik a főkiszolgálót.',
'internalerror' => 'Belső hiba',
'internalerror_info' => 'Belső hiba: $1',
+'fileappenderrorread' => 'A(z) „$1” nem olvasható hozzáírás közben.',
+'fileappenderror' => 'Nem sikerült hozzáfűzni a(z) „$1” fájlt a(z) „$2” fájlhoz.',
'filecopyerror' => 'Nem tudtam átmásolni a(z) „$1” fájlt „$2” névre.',
'filerenameerror' => 'Nem tudtam átnevezni a(z) „$1” fájlt „$2” névre.',
'filedeleteerror' => 'Nem tudtam törölni a(z) „$1” fájlt.',
@@ -607,7 +657,8 @@ Jelezd ezt egy [[Special:ListUsers/sysop|adminiszttrátornak]] az URL megadásá
'unexpected' => 'Váratlan érték: „$1”=„$2”.',
'formerror' => 'Hiba: nem tudom elküldeni az űrlapot',
'badarticleerror' => 'Ez a tevékenység nem végezhető el ezen a lapon.',
-'cannotdelete' => 'A megadott lapot vagy fájlt nem lehet törölni. (Talán már valaki más törölte.)',
+'cannotdelete' => 'A(z) $1 lapot vagy fájlt nem lehet törölni.
+Talán már valaki más törölte.',
'badtitle' => 'Hibás cím',
'badtitletext' => 'A kért oldal címe érvénytelen, üres, vagy rosszul hivatkozott nyelvközi vagy wikiközi cím volt. Olyan karaktereket is tartalmazhatott, melyek a címekben nem használhatóak.',
'perfcached' => "Az alábbi adatok gyorsítótárból (''cache''-ből) származnak, és ezért lehetséges, hogy nem a legfrissebb változatot mutatják:",
@@ -639,7 +690,6 @@ A blokkolás oka: „''$2''”.",
'virus-unknownscanner' => 'ismeretlen antivírus:',
# Login and logout pages
-'logouttitle' => 'Kijelentkezés',
'logouttext' => "'''Sikeresen kijelentkeztél.'''
Folytathatod névtelenül a(z) {{SITENAME}} használatát, vagy [[Special:UserLogin|ismét bejelentkezhetsz]] ugyanezzel, vagy egy másik névvel.
@@ -647,7 +697,6 @@ Lehetséges, hogy néhány oldalon továbbra is azt látod, be vagy jelentkezve,
'welcomecreation' => '== Köszöntünk, $1! ==
A felhasználói fiókodat létrehoztuk.
Ne felejtsd el átnézni a [[Special:Preferences|személyes beállításaidat]].',
-'loginpagetitle' => 'Bejelentkezés',
'yourname' => 'Szerkesztőneved:',
'yourpassword' => 'Jelszavad:',
'yourpasswordagain' => 'Jelszavad ismét:',
@@ -658,6 +707,7 @@ Ne felejtsd el átnézni a [[Special:Preferences|személyes beállításaidat]].
'nav-login-createaccount' => 'Bejelentkezés / fiók létrehozása',
'loginprompt' => "Engedélyezned kell a sütiket (''cookie''), hogy bejelentkezhess a(z) {{SITENAME}} wikibe.",
'userlogin' => 'Bejelentkezés / fiók létrehozása',
+'userloginnocreate' => 'Bejelentkezés',
'logout' => 'Kijelentkezés',
'userlogout' => 'Kijelentkezés',
'notloggedin' => 'Nem vagy bejelentkezve',
@@ -670,28 +720,8 @@ Ne felejtsd el átnézni a [[Special:Preferences|személyes beállításaidat]].
'badretype' => 'Az általad megadott jelszavak nem egyeznek.',
'userexists' => 'A megadott szerkesztőnév már foglalt.
Kérlek, válassz másikat!',
-'youremail' => 'Az e-mail címed:',
-'username' => 'Szerkesztőnév:',
-'uid' => 'Azonosító:',
-'prefs-memberingroups' => '{{PLURAL:$1|Csoporttagság|Csoporttagságok}}:',
-'yourrealname' => 'Valódi neved:',
-'yourlanguage' => 'A felület nyelve:',
-'yourvariant' => 'Változó',
-'yournick' => 'Aláírás:',
-'badsig' => 'Érvénytelen aláírás; ellenőrizd a HTML-formázást.',
-'badsiglength' => 'Az aláírásod túl hosszú.
-{{PLURAL:$1|Egy|$1}} karakternél rövidebbnek kell lennie.',
-'yourgender' => 'Nem:',
-'gender-unknown' => 'Nincs megadva',
-'gender-male' => 'Férfi',
-'gender-female' => 'Nő',
-'prefs-help-gender' => 'Nem kötelező: a szoftver használja a nemalapú üzenetek megjelenítéséhez. Az információ mindenki számára látható.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
'loginerror' => 'Hiba történt a bejelentkezés során',
-'prefs-help-email' => 'Az e-mail cím megadása nem kötelező, de így kérhetsz új jelszót, ha elfelejtenéd a meglévőt.
-Ezen kívül más szerkesztők is kapcsolatba lépjenek veled a szerkesztői vagy vitalapodon keresztül, anélkül, hogy névtelenséged feladnád.',
-'prefs-help-email-required' => 'Meg kell adnod az e-mail címedet.',
+'createaccounterror' => 'Nem sikerült létrehozni a felhasználói fiókot: $1',
'nocookiesnew' => 'A felhasználói fiókod létrejött, de nem vagy bejelentkezve. A wiki sütiket („cookie”) használ a szerkesztők azonosítására. Nálad ezek le vannak tiltva. Kérlek, engedélyezd őket, majd lépj be az új azonosítóddal és jelszavaddal.',
'nocookieslogin' => 'A wiki sütiket („cookie”) használ a szerkesztők azonosításhoz.
Nálad ezek le vannak tiltva.
@@ -705,10 +735,11 @@ Ellenőrizd, hogy helyesen írtad-e be, vagy [[Special:UserLogin/signup|hozz lé
'nosuchusershort' => 'Nem létezik „<nowiki>$1</nowiki>” nevű szerkesztő.
Ellenőrizd, hogy helyesen írtad-e be.',
'nouserspecified' => 'Meg kell adnod a felhasználói nevet.',
+'login-userblocked' => 'Ez a szerkesztő blokkolva van, a bejelentkezés nem engedélyezett.',
'wrongpassword' => 'A megadott jelszó érvénytelen. Próbáld meg újra.',
'wrongpasswordempty' => 'Nem adtál meg jelszót. Próbáld meg újra.',
-'passwordtooshort' => 'Az általad megadott jelszó érvénytelen vagy túl rövid.
-Legalább {{PLURAL:$1|egy|$1}} karakterből kell állnia, és nem egyezhet meg a szerkesztőneveddel.',
+'passwordtooshort' => 'A jelszónak legalább {{PLURAL:$1|egy|$1}} karakterből kell állnia.',
+'password-name-match' => 'A jelszavadnak különböznie kell a szerkesztőnevedtől.',
'mailmypassword' => 'Új jelszó küldése e-mailben',
'passwordremindertitle' => 'Ideiglenes jelszó a(z) {{SITENAME}} wikire',
'passwordremindertext' => 'Valaki (vélhetően te, a(z) $1 IP-címről) új jelszót kért a(z)
@@ -721,6 +752,7 @@ Ha nem te küldted a kérést, vagy közben eszedbe jutott a régi,
és már nem akarod megváltoztatni, nyugodtan hagyd figyelmen kívül
ezt az üzenetet, és használd továbbra is a régi jelszavadat.',
'noemail' => '„$1” e-mail címe nincs megadva.',
+'noemailcreate' => 'Meg kell adnod egy valós e-mail címet',
'passwordsent' => 'Az új jelszót elküldtük „$1” e-mail címére.
Lépj be a levélben található adatokkal.',
'blocked-mailpassword' => 'Az IP-címedet blokkoltuk, azaz eltiltottuk a szerkesztéstől, ezért a visszaélések elkerülése érdekében a jelszóvisszaállítás funkciót nem használhatod.',
@@ -741,9 +773,11 @@ A visszaélések elkerülése végett {{PLURAL:$1|egy|$1}} óránként csak egy
A hozzátartozó jelszó "$3", melyet a bejelentkezés után minél előbb változtass meg.
Ha nem kértél új azonosítót, és tévedésből kaptad ezt a levelet, nyugodtan hagyd figyelmen kívül.',
+'usernamehasherror' => 'A felhasználónév nem tartalmazhat hash karaktereket',
'login-throttled' => 'Túl sok hibás bejelentkezés.
Várj egy kicsit, mielőtt újra próbálkozol.',
'loginlanguagelabel' => 'Nyelv: $1',
+'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
# Password reset dialog
'resetpass' => 'Jelszó módosítása',
@@ -755,17 +789,13 @@ Várj egy kicsit, mielőtt újra próbálkozol.',
'retypenew' => 'Új jelszó ismét:',
'resetpass_submit' => 'Add meg a jelszót és jelentkezz be',
'resetpass_success' => 'A jelszavad megváltoztatása sikeresen befejeződött! Bejelentkezés...',
-'resetpass_bad_temporary' => 'Az ideiglenes jelszó hibás. Lehet, hogy már sikeresen megváltoztattad a jelszavadat, vagy új ideiglenes jelszót kértél.',
'resetpass_forbidden' => 'A jelszavak nem változtathatóak meg',
'resetpass-no-info' => 'Be kell jelentkezned hogy közvetlenül elérd ezt a lapot.',
'resetpass-submit-loggedin' => 'Jelszó megváltoztatása',
+'resetpass-submit-cancel' => 'Mégse',
'resetpass-wrong-oldpass' => 'Nem megfelelő ideiglenes vagy jelenlegi jelszó.
Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben új ideiglenes jelszót kértél.',
'resetpass-temp-password' => 'Ideiglenes jelszó:',
-'resetpass-log' => 'Jelszóvisszaállítási napló',
-'resetpass-logtext' => 'Alább azon szerkesztők listája látható, akik új jelszót kaptak egy adminisztrátortól.',
-'resetpass-logentry' => 'megváltozatta $1 jelszavát',
-'resetpass-comment' => 'Új jelszó kérésének oka:',
# Edit page toolbar
'bold_sample' => 'Félkövér szöveg',
@@ -841,7 +871,6 @@ Kérjük, hogy érdeklődés esetén mindkettőt add meg.",
'blockededitsource' => "A(z) '''$1''' lapon '''végrehajtott szerkesztésed''' szövege:",
'whitelistedittitle' => 'A lap szerkesztéséhez be kell jelentkezned',
'whitelistedittext' => 'Lapok szerkesztéséhez $1.',
-'confirmedittitle' => 'Lapok szerkesztéséhez meg kell erősítened az e-mail címedet',
'confirmedittext' => 'Lapok szerkesztése előtt meg kell erősítened az e-mail címedet. Kérjük, hogy a [[Special:Preferences|szerkesztői beállításaidban]] add meg, majd erősítsd meg az e-mail címedet.',
'nosuchsectiontitle' => 'A szakasz nem található',
'nosuchsectiontext' => 'Egy olyan szakaszt próbáltál meg szerkeszteni, ami nem létezik.
@@ -865,10 +894,16 @@ Ha úgy látod, hogy az üzenetek, amiket ide kapsz, nem neked szólnak, [[Speci
[[Special:Search/{{PAGENAME}}|Rákereshetsz erre a címszóra]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} megtekintheted a kapcsolódó naplókat],
vagy [{{fullurl:{{FULLPAGENAME}}|action=edit}} szerkesztheted a lapot].</span>',
+'noarticletext-nopermission' => 'Ez a lap jelenleg nem tartalmaz szöveget.
+[[Special:Search/{{PAGENAME}}|Rákereshetsz a lap címére]] más lapok tartalmában, vagy <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} megtekintheted a kapcsolódó naplófájlokat]</span>.',
'userpage-userdoesnotexist' => 'Nincs „$1” nevű regisztrált felhasználónk.
Nézd meg, hogy valóban ezt a lapot szeretnéd-e létrehozni vagy szerkeszteni.',
+'userpage-userdoesnotexist-view' => 'Nincs regisztrálva „$1” szerkesztői azonosító.',
+'blocked-notice-logextract' => 'A felhasználó jelenleg blokkolva van.
+A blokkolási napló legutóbbi ide vonatkozó bejegyzése a következő:',
'clearyourcache' => "'''Megjegyzés: mentés után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.''' '''Mozilla''' / '''Firefox''' / '''Safari:''' tartsd lenyomva a Shift gombot és kattints a ''Reload'' / ''Frissítés'' gombra az eszköztáron, vagy használd a ''Ctrl–F5'' billentyűkombinációt (Apple Mac-en ''Cmd–Shift–R''); '''Konqueror:''' egyszerűen csak kattints a ''Reload'' / ''Frissítés'' gombra vagy nyomj ''F5''-öt; '''Opera:''' ürítsd ki a gyorsítótárat az ''Eszközök→Személyes adatok törlése'' / ''Tools→Preferences'' menüben; '''Internet Explorer:''' tartsd nyomva a ''Ctrl''-t, és kattints a ''Reload / Frissítés'' gombra, vagy nyomj ''Ctrl–F5''-öt.",
-'usercssjsyoucanpreview' => "'''Tipp:''' Használd az „Előnézet megtekintése” gombot az új CSS/JS teszteléséhez mentés előtt.",
+'usercssyoucanpreview' => "'''Tipp:''' mentés előtt használd az „{{int:showpreview}}” gombot az új CSS-ed teszteléséhez.",
+'userjsyoucanpreview' => "'''Tipp:''' mentés előtt használd az „{{int:showpreview}}” gombot az új JavaScipted teszteléséhez.",
'usercsspreview' => "'''Ne felejtsd el, hogy ez csak a felhasználói CSS-ed előnézete és még nincs elmentve!'''",
'userjspreview' => "'''Ne felejtsd el, hogy még csak teszteled a felhasználói JavaScriptedet, és még nincs elmentve!'''",
'userinvalidcssjstitle' => "'''Figyelem:''' Nincs „$1” nevű felület. A felületekhez tartozó .css/.js oldalak kisbetűvel kezdődnek, például ''{{ns:user}}:Gipsz Jakab/monobook.css'' és nem ''{{ns:user}}:Gipsz Jakab/Monobook.css''.",
@@ -918,13 +953,15 @@ A szerkesztést nem lehet elmenteni.'''",
A lap szöveget kimásolhatod egy szövegfájlba, amit elmenthetsz későbbre.'''
Az adatbázist lezáró adminisztrátor az alábbi magyarázatot adta: $1",
-'protectedpagewarning' => "'''FIGYELEM: Ez a lap védett, csak adminisztrátorok szerkeszthetik.'''",
-'semiprotectedpagewarning' => "'''Megjegyzés:''' ez a lap védett, nem vagy újonnan regisztrált szerkesztők nem módosíthatják.",
+'protectedpagewarning' => "'''Figyelem: Ez a lap le van védve, így csak adminisztrátori jogosultságokkal rendelkező szerkesztők módosíthatják.'''
+A legutolsó ide vonatkozó naplóbejegyzés alább látható:",
+'semiprotectedpagewarning' => "'''Megjegyzés:''' ez a lap védett, így regisztrálatlan, vagy újonnan regisztrált szerkesztők nem módosíthatják.",
'cascadeprotectedwarning' => "'''Figyelem:''' ez a lap le van zárva, csak adminisztrátorok szerkeszthetik, mert a következő kaszkádvédelemmel ellátott {{PLURAL:$1|lapon|lapokon}} szerepel beillesztve:",
-'titleprotectedwarning' => "'''FIGYELEM: Ez a lap le van védve, így csak a [[Special:ListGroupRights|megfelelő jogokkal]] rendelkező szerkesztők hozhatják létre.'''",
-'templatesused' => 'A lapon használt sablonok:',
-'templatesusedpreview' => 'Az előnézet megjelenítésekor használt sablonok:',
-'templatesusedsection' => 'Az ebben a szakaszban használt sablonok:',
+'titleprotectedwarning' => "'''Figyelem: Ez a lap le van védve, így csak a [[Special:ListGroupRights|megfelelő jogosultságokkal]] rendelkező szerkesztők hozhatják létre.'''
+A legutolsó ide vonatkozó naplóbejegyzés alább látható:",
+'templatesused' => 'A lapon használt {{PLURAL:$1|sablon|sablonok}}:',
+'templatesusedpreview' => 'Az előnézet megjelenítésekor használt {{PLURAL:$1|sablon|sablonok}}:',
+'templatesusedsection' => 'Az ebben a szakaszban használt {{PLURAL:$1|sablon|sablonok}}:',
'template-protected' => '(védett)',
'template-semiprotected' => '(félig védett)',
'hiddencategories' => 'Ez a lap {{PLURAL:$1|egy|$1}} rejtett kategóriába tartozik:',
@@ -933,16 +970,18 @@ Az adatbázist lezáró adminisztrátor az alábbi magyarázatot adta: $1",
'nocreatetext' => 'A(z) {{SITENAME}} wikin korlátozták az új oldalak létrehozásának lehetőségét.
Visszamehetsz és szerkeszthetsz egy létező lapot, valamint [[Special:UserLogin|bejelentkezhetsz vagy készíthetsz egy felhasználói fiókot]].',
'nocreate-loggedin' => 'Nincs jogosultságod új lapokat létrehozni.',
+'sectioneditnotsupported-title' => 'A szakaszszerkesztés nem támogatott',
+'sectioneditnotsupported-text' => 'Ezen a lapon nem támogatott a szakaszok szerkesztése',
'permissionserrors' => 'Engedélyezési hiba',
'permissionserrorstext' => 'A művelet elvégzése nem engedélyezett a számodra, a következő {{PLURAL:$1|ok|okok}} miatt:',
'permissionserrorstext-withaction' => 'Nincs jogosultságod a következő művelet elvégzéséhez: $2, a következő {{PLURAL:$1|ok|okok}} miatt:',
-'recreate-deleted-warn' => "'''Vigyázat: egy olyan lapot akarsz létrehozni, amit korábban már töröltek.'''
+'recreate-moveddeleted-warn' => "'''Vigyázat: egy olyan lapot akarsz létrehozni, amit korábban már töröltek.'''
Mielőtt létrehoznád, nézd meg, miért került törölték és ellenőrizd,
-hogy a törlés indoka nem érvényes-e még. A törlési naplóban a lapról az alábbi bejegyzések szerepelnek:",
-'deleted-notice' => 'Az oldal korábban törölve lett.
-A lap törlési naplója alább olvasható.',
-'deletelog-fulllog' => 'Teljes napló megtekintése',
+hogy a törlés indoka nem érvényes-e még. A törlési és átnevezési naplókban a lapról az alábbi bejegyzések szerepelnek:",
+'moveddeleted-notice' => 'Az oldal korábban törölve lett.
+A lap törlési és átnevezési naplója alább olvasható.',
+'log-fulllog' => 'Teljes napló megtekintése',
'edit-hook-aborted' => 'A szerkesztés meg lett szakítva egy hook által.
Nem lett magyarázat csatolva.',
'edit-gone-missing' => 'Nem lehet frissíteni a lapot.
@@ -964,6 +1003,7 @@ Néhány sablon nem fog megjelenni.',
'post-expand-template-argument-category' => 'Elhagyott sablonparaméterekkel rendelkező lapok',
'parser-template-loop-warning' => 'Végtelen ciklus a következő sablonban: [[$1]]',
'parser-template-recursion-depth-warning' => 'A sablon rekurzív beillesztésének mélysége átlépte a határérékét ($1)',
+'language-converter-depth-warning' => 'A nyelvátalakító rekurzióinak száma túllépve ($1)',
# "Undo" feature
'undo-success' => 'A szerkesztés visszavonható. Kérlek ellenőrizd alább a változásokat, hogy valóban ezt szeretnéd-e tenni, majd kattints a lap mentése gombra a visszavonás véglegesítéséhez.',
@@ -983,7 +1023,7 @@ Néhány sablon nem fog megjelenni.',
'currentrev' => 'Aktuális változat',
'currentrev-asof' => 'A lap jelenlegi, $1-kori változata',
'revisionasof' => 'A lap $1-kori változata',
-'revision-info' => 'A lap korábbi változatát látod, amilyen $2 $1-kor történt szerkesztése után volt.', # Additionally available: $3: revision id
+'revision-info' => 'A lap korábbi változatát látod, amilyen $2 $1-kor történt szerkesztése után volt.',
'previousrevision' => '←Régebbi változat',
'nextrevision' => 'Újabb változat→',
'currentrevisionlink' => 'Aktuális változat',
@@ -995,7 +1035,7 @@ Néhány sablon nem fog megjelenni.',
'histlegend' => 'Eltérések kijelölése: jelöld ki az összehasonlítandó változatokat, majd nyomd meg az Enter billentyűt, vagy az alul lévő gombot.<br />
Jelmagyarázat: (akt) = eltérés az aktuális változattól, (előző) = eltérés az előző változattól, a = apró szerkesztés',
'history-fieldset-title' => 'Keresés a laptörténetben',
-'deletedrev' => '[törölve]',
+'history-show-deleted' => 'Csak a törölt változatok',
'histfirst' => 'legelső',
'histlast' => 'legutolsó',
'historysize' => '({{PLURAL:$1|egy|$1}} bájt)',
@@ -1004,73 +1044,113 @@ Jelmagyarázat: (akt) = eltérés az aktuális változattól, (előző) = eltér
# Revision feed
'history-feed-title' => 'Laptörténet',
'history-feed-description' => 'Az oldal laptörténete a wikiben',
-'history-feed-item-nocomment' => '$1, $2-n', # user at time
+'history-feed-item-nocomment' => '$1, $2-n',
'history-feed-empty' => 'A kért oldal nem létezik.
Lehet, hogy törölték a wikiből, vagy átnevezték.
Próbálkozhatsz a témával kapcsolatos lapok [[Special:Search|keresésével]].',
# Revision deletion
-'rev-deleted-comment' => '(megjegyzés eltávolítva)',
-'rev-deleted-user' => '(szerkesztőnév eltávolítva)',
-'rev-deleted-event' => '(bejegyzés eltávolítva)',
-'rev-deleted-text-permission' => "Ez a változat '''törölték'''.
-További információkat a [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
-'rev-deleted-text-view' => "Ez a változat '''törölték'''.
-Mivel adminisztrátor vagy, te megtekintheted; további részleteket a [{{fullurl:Special:Napló/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
-'rev-deleted-no-diff' => "Nem nézheted meg a két változat közötti eltérést, mert a változatok egyikét '''törölték'''.
-További részleteket a [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
-'rev-deleted-unhide-diff' => "Az változatok közötti eltéréshez kiválasztott változatok egyike '''törölve''' lett.
-További részleteket a [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.
+'rev-deleted-comment' => '(megjegyzés eltávolítva)',
+'rev-deleted-user' => '(szerkesztőnév eltávolítva)',
+'rev-deleted-event' => '(bejegyzés eltávolítva)',
+'rev-deleted-user-contribs' => '[felhasználónév vagy IP-cím eltávolítva – szerkesztés elrejtve a közreműködések közül]',
+'rev-deleted-text-permission' => "A lap ezen változatát '''törölték'''.
+További információkat a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+'rev-deleted-text-unhide' => "A lap ezen változatát '''törölték'''.
+További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.
+Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a tartalmát], ha szeretnéd.",
+'rev-suppressed-text-unhide' => "A lap ezen változatát '''elrejtették'''.
+További részleteket az [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.
+Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a tartalmát], ha szeretnéd.",
+'rev-deleted-text-view' => "A lap ezen változatát '''törölték'''.
+Adminisztrátorként megnézheted; további részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+'rev-suppressed-text-view' => "A lap ezen változatát '''elrejtették'''.
+Mivel adminisztrátor vagy, még mindig megtekintheted.
+További részleteket az [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.",
+'rev-deleted-no-diff' => "Nem nézheted meg a két változat közötti eltérést, mert a változatok egyikét '''törölték'''.
+További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+'rev-suppressed-no-diff' => "Nem nézheted meg ezt a változtatást, mert az egyik változatot '''törölték'''.",
+'rev-deleted-unhide-diff' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''törölve''' lett.
+További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.
Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
-'rev-delundel' => 'megjelenítés/elrejtés',
-'revisiondelete' => 'Változatok törlése vagy helyreállítása',
-'revdelete-nooldid-title' => 'Érvénytelen célváltozat',
-'revdelete-nooldid-text' => 'Nem adtad meg a célváltozato(ka)t, a megadott változat nem létezik,
+'rev-suppressed-unhide-diff' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''el lett rejtve'''.
+Részleteket az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplójában találhatsz].
+Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
+'rev-deleted-diff-view' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''törölve''' lett.
+Mivel adminisztrátor vagy, még mindig megtekintheted a változatok közötti eltérést; további részleteket pedig a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+'rev-suppressed-diff-view' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''el lett rejtve'''.
+Mivel adminisztrátor vagy, még mindig megtekintheted a változatok közötti eltérést; további részleteket pedig az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplójában találhatsz].",
+'rev-delundel' => 'megjelenítés/elrejtés',
+'rev-showdeleted' => 'megjelenítés',
+'revisiondelete' => 'Változatok törlése vagy helyreállítása',
+'revdelete-nooldid-title' => 'Érvénytelen célváltozat',
+'revdelete-nooldid-text' => 'Nem adtad meg a célváltozato(ka)t, a megadott változat nem létezik,
vagy a legutolsó változatot próbáltad meg elrejteni.',
-'revdelete-nologtype-title' => 'Nem adtad meg a napló típusát',
-'revdelete-nologtype-text' => 'Nem adtad meg, hogy melyik naplón szeretnéd elvégezni a műveletet.',
-'revdelete-toomanytargets-title' => 'Túl sok célpont',
-'revdelete-toomanytargets-text' => 'Túl sok naplótípust adtál meg, amiken el szeretnéd végezni a műveletet.',
-'revdelete-nologid-title' => 'Érvénytelen naplóbejegyzés',
-'revdelete-nologid-text' => 'Nem adtad meg azt a naplóbejegyzést, amin el szeretnéd végezni a műveletet, vagy olyat adtál meg, ami nem létezik.',
-'revdelete-selected' => "'''A(z) [[:$1]] lap {{PLURAL:$2|kiválasztott változata|kiválasztott változatai}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Kiválasztott naplóesemény|Kiválasztott naplóesemények}}:'''",
-'revdelete-text' => "'''A törölt változatok és események továbbra is megjelennek a laptörténetben és a naplókban,
-azonban a tartalmuk egyes részei el lesznek rejtve a nyilvánosság elől.'''
-
-A(z) {{SITENAME}} wiki adminisztrátorai továbbra is meg tudják tekinteni az elrejtett tartalmat, és helyre tudják állítani ugyanezen a felületen keresztül, amennyiben nincs további korlátozás beállítva.
-
-Kérlek, erősítsd meg, hogy valóban ez a szándékod, tisztában vagy a következményekkel, és hogy az [[{{MediaWiki:Policy-url}}|irányelveknek]] megfelelően cselekszel.",
-'revdelete-suppress-text' => "Az elrejtés '''csak''' a következő esetekben használható:
+'revdelete-nologtype-title' => 'Nem adtad meg a napló típusát',
+'revdelete-nologtype-text' => 'Nem adtad meg, hogy melyik naplón szeretnéd elvégezni a műveletet.',
+'revdelete-nologid-title' => 'Érvénytelen naplóbejegyzés',
+'revdelete-nologid-text' => 'Nem adtad meg azt a naplóbejegyzést, amin el szeretnéd végezni a műveletet, vagy olyat adtál meg, ami nem létezik.',
+'revdelete-no-file' => 'A megadott fájl nem létezik.',
+'revdelete-show-file-confirm' => 'Biztosan meg szeretnéd nézni a(z) „<nowiki>$1</nowiki>” $2, $3-i törölt változatát?',
+'revdelete-show-file-submit' => 'Igen',
+'revdelete-selected' => "'''A(z) [[:$1]] lap {{PLURAL:$2|kiválasztott változata|kiválasztott változatai}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Kiválasztott naplóesemény|Kiválasztott naplóesemények}}:'''",
+'revdelete-text' => "'''A törölt változatok és események továbbra is megjelennek a laptörténetben és a naplókban,
+azonban a tartalmuk nem lesz mindenki számára hozzáférhető.'''
+A(z) {{SITENAME}} adminisztrátorai továbbra is meg tudják tekinteni az elrejtett tartalmat, és helyre tudják állítani ugyanezen a felületen keresztül, amennyiben nincs további korlátozás beállítva.",
+'revdelete-confirm' => 'Kérlek erősítsd meg, hogy valóban ezt szeretnéd tenni; megértetted a következményeket, és amit teszel, az összhangban van [[{{MediaWiki:Policy-url}}|az irányelvekkel]].',
+'revdelete-suppress-text' => "Az elrejtés '''csak''' a következő esetekben használható:
* Illetlen személyes információk
*: ''otthoni címek és telefonszámok, társadalombiztosítási számok stb.''",
-'revdelete-legend' => 'Korlátozások megadása:',
-'revdelete-hide-text' => 'Változat szövegének elrejtése',
-'revdelete-hide-name' => 'Művelet és cél elrejtése',
-'revdelete-hide-comment' => 'Összefoglaló elrejtése',
-'revdelete-hide-user' => 'A szerkesztő felhasználónevének/IP-címének elrejtése',
-'revdelete-hide-restricted' => 'Adatok elrejtése az adminisztrátorok és mindenki más elől',
-'revdelete-suppress' => 'Adatok elrejtése az adminisztrátorok és a többi felhasználó elől is',
-'revdelete-hide-image' => 'A fájl tartalomának elrejtése',
-'revdelete-unsuppress' => 'Korlátozások eltávolítása a visszaállított változatokról',
-'revdelete-log' => 'Ok:',
-'revdelete-submit' => 'Alkalmazás a kiválasztott változatra',
-'revdelete-logentry' => 'módosította a(z) [[$1]] lap egy vagy több változatának láthatóságát',
-'logdelete-logentry' => '[[$1]] eseményének láthatóságának módosítása',
-'revdelete-success' => "'''A változat láthatósága sikeresen frissítve.'''",
-'logdelete-success' => "'''Az esemény láthatóságának beállítása sikeresen elvégezve.'''",
-'revdel-restore' => 'Láthatóság megváltoztatása',
-'pagehist' => 'Laptörténet',
-'deletedhist' => 'Törölt változatok',
-'revdelete-content' => 'a tartalmát',
-'revdelete-summary' => 'a szerkesztési összefoglalóját',
-'revdelete-uname' => 'a szerkesztőjének nevét',
-'revdelete-restricted' => 'elrejtett az adminisztrátorok elől',
-'revdelete-unrestricted' => 'felfedett az adminisztrátoroknak',
-'revdelete-hid' => 'elrejtette $1',
-'revdelete-unhid' => 'felfedte $1',
-'revdelete-log-message' => '$1 {{PLURAL:$1|egy|$2}} változatnak',
-'logdelete-log-message' => '$1 {{PLURAL:$2|egy|$2}} eseményt',
+'revdelete-legend' => 'Korlátozások megadása:',
+'revdelete-hide-text' => 'Változat szövegének elrejtése',
+'revdelete-hide-image' => 'A fájl tartalomának elrejtése',
+'revdelete-hide-name' => 'Művelet és cél elrejtése',
+'revdelete-hide-comment' => 'Összefoglaló elrejtése',
+'revdelete-hide-user' => 'A szerkesztő felhasználónevének/IP-címének elrejtése',
+'revdelete-hide-restricted' => 'Adatok elrejtése az adminisztrátorok és mindenki más elől',
+'revdelete-radio-same' => '(nincs változtatás)',
+'revdelete-radio-set' => 'Igen',
+'revdelete-radio-unset' => 'Nem',
+'revdelete-suppress' => 'Adatok elrejtése az adminisztrátorok és a többi felhasználó elől is',
+'revdelete-unsuppress' => 'Korlátozások eltávolítása a visszaállított változatokról',
+'revdelete-log' => 'Ok:',
+'revdelete-submit' => 'Alkalmazás a kiválasztott {{PLURAL:$1|változatra|változatokra}}',
+'revdelete-logentry' => 'módosította a(z) [[$1]] lap egy vagy több változatának láthatóságát',
+'logdelete-logentry' => '[[$1]] eseményének láthatóságának módosítása',
+'revdelete-success' => "'''A változat láthatósága sikeresen frissítve.'''",
+'revdelete-failure' => "'''Nem sikerült frissíteni a változat láthatóságát:'''
+$1",
+'logdelete-success' => "'''Az esemény láthatóságának beállítása sikeresen elvégezve.'''",
+'logdelete-failure' => "'''Nem sikerült módosítani a naplóbejegyzés láthatóságát:'''
+$1",
+'revdel-restore' => 'Láthatóság megváltoztatása',
+'pagehist' => 'Laptörténet',
+'deletedhist' => 'Törölt változatok',
+'revdelete-content' => 'a tartalmát',
+'revdelete-summary' => 'a szerkesztési összefoglalóját',
+'revdelete-uname' => 'a szerkesztőjének nevét',
+'revdelete-restricted' => 'elrejtett az adminisztrátorok elől',
+'revdelete-unrestricted' => 'felfedett az adminisztrátoroknak',
+'revdelete-hid' => 'elrejtette $1',
+'revdelete-unhid' => 'felfedte $1',
+'revdelete-log-message' => '$1 {{PLURAL:$1|egy|$2}} változatnak',
+'logdelete-log-message' => '$1 {{PLURAL:$2|egy|$2}} eseményt',
+'revdelete-hide-current' => 'Nem sikerült elrejteni a $1 $2-kori elemet: ez a jelenlegi változat, amit nem lehet elrejteni.',
+'revdelete-show-no-access' => 'Nem lehet megjeleníteni a $2 $1-kori elemet, mert „korlátozottnak” van jelölve.',
+'revdelete-modify-no-access' => 'Nem lehet módosítani a $2 $1-kori elemet, mert „korlátozottnak” van jelölve.',
+'revdelete-modify-missing' => 'Nem sikerült módosítani a(z) $1 azonosítójú elemet, mert hiányzik az adatbázisból.',
+'revdelete-no-change' => "'''Figyelem:''' a(z) $1 $2-kori elem már rendelkezik a kért láthatósági beállításokkal.",
+'revdelete-concurrent-change' => 'Hiba történt a(z) $1 $2-kori elem módosítása közben: úgy tűnik, valaki megváltoztatta az állapotát, miközben módosítani próbáltad.
+Ellenőrizd a naplókat.',
+'revdelete-only-restricted' => 'Hiba a(z) $1 $2 időbélyegű elem elrejtésekor: nem rejthetsz el az adminisztrátorok elől elemeket anélkül, hogy ne választanál ki egy másik elrejtési beállítást.',
+'revdelete-reason-dropdown' => '*Általános törlési okok
+** Jogsértő tartalom
+** Kényes személyes információk',
+'revdelete-otherreason' => 'Más/további ok:',
+'revdelete-reasonotherlist' => 'Más ok',
+'revdelete-edit-reasonlist' => 'Törlési okok szerkesztése',
+'revdelete-offender' => 'Változat szerzője:',
# Suppression log
'suppressionlog' => 'Adatvédelmibiztos-napló',
@@ -1106,68 +1186,13 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'mergelogpagetext' => 'A lapok egyesítéséről szóló napló. Szűkítheted a listát a műveletet végző szerkesztő, vagy az érintett oldal megadásával.',
# Diffs
-'history-title' => 'A(z) „$1” laptörténete',
-'difference' => '(Változatok közti eltérés)',
-'lineno' => '$1. sor:',
-'compareselectedversions' => 'Kiválasztott változatok összehasonlítása',
-'visualcomparison' => 'Vizuális összehasonlítás',
-'wikicodecomparison' => 'Wikikód összehasonlítása',
-'editundo' => 'visszavonás',
-'diff-multi' => '({{PLURAL:$1|Egy közbeeső változat|$1 közbeeső változat}} nincs mutatva)',
-'diff-movedto' => 'Áthelyezve ide: $1',
-'diff-styleadded' => 'A(z) $1 stílus hozzáadva',
-'diff-added' => 'A(z) $1 hozzáadva',
-'diff-changedto' => 'Cserélve erre: $1',
-'diff-movedoutof' => 'Elrakva innen: $1',
-'diff-styleremoved' => 'A(z) $1 stílus eltávolítva',
-'diff-removed' => 'A(z) $1 eltávolítva',
-'diff-changedfrom' => 'Cserélve erről: $1',
-'diff-src' => 'forrás',
-'diff-withdestination' => 'céllal $1',
-'diff-with' => '&#32;$1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;és $1 $2',
-'diff-width' => 'szélesség',
-'diff-height' => 'magasság',
-'diff-p' => "egy '''bekezdés'''",
-'diff-blockquote' => "egy '''idézet'''",
-'diff-h1' => "egy '''első szintű fejezetcím'''",
-'diff-h2' => "egy '''kettes szintű fejezetcím'''",
-'diff-h3' => "egy '''hármas szintű fejezetcím'''",
-'diff-h4' => "egy '''négyes szintű fejezetcím'''",
-'diff-h5' => "egy '''ötös szintű fejezetcím'''",
-'diff-pre' => "egy '''formázatlan szöveget tartalmazó blokk'''",
-'diff-div' => "egy '''div'''",
-'diff-ul' => "egy '''rendezetlen lista'''",
-'diff-ol' => "egy '''számozott lista'''",
-'diff-li' => "egy '''listaelem'''",
-'diff-table' => "egy '''táblázat'''",
-'diff-tbody' => "egy '''táblázat tartalma'''",
-'diff-tr' => "egy '''sor'''",
-'diff-td' => "egy '''cella'''",
-'diff-th' => "egy '''fejléc'''",
-'diff-br' => "egy '''sortörés'''",
-'diff-hr' => "egy '''vízszintes vonal'''",
-'diff-code' => "egy '''programkód-blokk'''",
-'diff-dl' => "egy '''definíciós lista'''",
-'diff-dt' => "egy '''fogalom definíciója'''",
-'diff-dd' => "egy '''definíció'''",
-'diff-input' => "egy '''beviteli mező'''",
-'diff-form' => "egy '''űrlap'''",
-'diff-img' => "egy '''fájl'''",
-'diff-span' => "egy '''span'''",
-'diff-a' => "egy '''link'''",
-'diff-i' => "'''dőlt'''",
-'diff-b' => "'''félkövér'''",
-'diff-strong' => "'''vastagított'''",
-'diff-em' => "'''kiemelés'''",
-'diff-font' => "'''betűtípus'''",
-'diff-big' => "'''nagy'''",
-'diff-del' => "'''törölt'''",
-'diff-tt' => "'''fix szélességű szöveg'''",
-'diff-sub' => "'''alsó index'''",
-'diff-sup' => "'''felső index'''",
-'diff-strike' => "'''áthúzás'''",
+'history-title' => 'A(z) „$1” laptörténete',
+'difference' => '(Változatok közti eltérés)',
+'lineno' => '$1. sor:',
+'compareselectedversions' => 'Kiválasztott változatok összehasonlítása',
+'showhideselectedversions' => 'Kiválasztott változatok láthatóságának beállítása',
+'editundo' => 'visszavonás',
+'diff-multi' => '({{PLURAL:$1|Egy közbeeső változat|$1 közbeeső változat}} nincs mutatva)',
# Search results
'searchresults' => 'A keresés eredménye',
@@ -1175,28 +1200,25 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'searchresulttext' => 'A keresésről a [[{{MediaWiki:Helppage}}|{{int:help}}]] lapon találhatsz további információkat.',
'searchsubtitle' => 'A keresett kifejezés: „[[:$1]]” ([[Special:Prefixindex/$1|minden, „$1” előtaggal kezdődő lap]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|a(z) „$1” lapra hivatkozó lapok]])',
'searchsubtitleinvalid' => "A keresett kulcsszó: „'''$1'''”",
-'noexactmatch' => "Nincs '''$1''' nevű lap. Készíthetsz egy [[:$1|új oldalt]] ezen a néven.",
-'noexactmatch-nocreate' => "'''Nem található „$1” nevű lap.'''",
'toomanymatches' => 'Túl sok találat van, próbálkozz egy másik lekérdezéssel',
'titlematches' => 'Címbeli egyezések',
'notitlematches' => 'Nincs megegyező cím',
'textmatches' => 'Szövegbeli egyezések',
'notextmatches' => 'Nincsenek szövegbeli egyezések',
-'prevn' => 'előző $1',
-'nextn' => 'következő $1',
+'prevn' => 'előző {{PLURAL:$1|egy|$1}}',
+'nextn' => 'következő {{PLURAL:$1|egy|$1}}',
'prevn-title' => 'Előző {{PLURAL:$1|egy|$1}} találat',
'nextn-title' => 'Következő {{PLURAL:$1|egy|$1}} találat',
'shown-title' => '{{PLURAL:$1|Egy|$1}} találat laponként',
-'viewprevnext' => '($1) ($2) ($3)',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Keresési beállítások',
'searchmenu-exists' => "'''A wikin már van „[[:$1]]” nevű lap'''",
'searchmenu-new' => "'''Hozd létre a(z) „[[:$1]]” nevű lapot ezen a wikin!'''",
'searchhelp-url' => 'Help:Tartalom',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ilyen előtagú lapok listázása]]',
-'searchprofile-articles' => 'Fő tartalom',
-'searchprofile-articles-and-proj' => 'Fő tartalom és projektlapok',
-'searchprofile-project' => 'Projektlapok',
-'searchprofile-images' => 'Fájlok',
+'searchprofile-articles' => 'Tartalmi oldalak',
+'searchprofile-project' => 'Segítség- és projektlapok',
+'searchprofile-images' => 'Médiafájlok',
'searchprofile-everything' => 'Minden lap',
'searchprofile-advanced' => 'Részletes',
'searchprofile-articles-tooltip' => 'A következőkben keres: $1',
@@ -1204,8 +1226,6 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'searchprofile-images-tooltip' => 'Fájlok keresése',
'searchprofile-everything-tooltip' => 'Minden névtérben keres (a vitalapokat is beleértve)',
'searchprofile-advanced-tooltip' => 'Keresés adott névterekben',
-'prefs-search-nsdefault' => 'Keresés alapbeállítások használatával:',
-'prefs-search-nscustom' => 'Egyedi névterek keresése:',
'search-result-size' => '$1 ({{PLURAL:$2|egy|$2}} szó)',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(átirányítva innen: $1)',
@@ -1218,11 +1238,12 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'search-mwsuggest-disabled' => 'javaslatok nélkül',
'search-relatedarticle' => 'Kapcsolódó',
'mwsuggest-disable' => 'AJAX-alapú keresési javaslatok letiltása',
+'searcheverything-enable' => 'Keresés az összes névtérben',
'searchrelated' => 'kapcsolódó',
'searchall' => 'mind',
'showingresults' => "Lent '''{{PLURAL:$1|egy|$1}}''' találat látható, az eleje '''$2'''.",
'showingresultsnum' => "Lent '''{{PLURAL:$3|egy|$3}}''' találat látható, az eleje '''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Találat: '''$1''' (összesen '''$3''')|Találatok: '''$1 – $2''' (összesen '''$3''')}}",
+'showingresultsheader' => "{{PLURAL:$5|'''$1'''|'''$1 - $2'''}}. találat a(z) '''$4''' kifejezésre (összesen: '''$3''')",
'nonefound' => "'''Megjegyzés''': Alapértelmezésben a keresés nem terjed ki minden névtérre. Ha az összes névtérben keresni akarsz, írd az ''all:'' karaktersorozatot a keresett kifejezés elé.",
'search-nonefound' => 'Nincs egyezés a megadott szöveggel.',
'powersearch' => 'Részletes keresés',
@@ -1230,110 +1251,149 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'powersearch-ns' => 'Névterek:',
'powersearch-redir' => 'Átirányítások megjelenítése',
'powersearch-field' => 'Keresett szöveg:',
+'powersearch-togglelabel' => 'Megjelölés:',
+'powersearch-toggleall' => 'Mind',
+'powersearch-togglenone' => 'Egyik sem',
'search-external' => 'Külső kereső',
'searchdisabled' => 'Elnézésed kérjük, de a teljes szöveges keresés terhelési okok miatt átmenetileg nem használható. Ezidő alatt használhatod a lenti Google keresést, mely viszont lehetséges, hogy nem teljesen friss adatokkal dolgozik.',
+# Quickbar
+'qbsettings' => 'Gyorsmenü',
+'qbsettings-none' => 'Nincs',
+'qbsettings-fixedleft' => 'Fix baloldali',
+'qbsettings-fixedright' => 'Fix jobboldali',
+'qbsettings-floatingleft' => 'Lebegő baloldali',
+'qbsettings-floatingright' => 'Lebegő jobboldali',
+
# Preferences page
-'preferences' => 'Beállítások',
-'mypreferences' => 'Beállításaim',
-'prefs-edits' => 'Szerkesztéseid száma:',
-'prefsnologin' => 'Nem jelentkeztél be',
-'prefsnologintext' => 'Saját beállításaid elmentéséhez <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} be kell jelentkezned.] </span>',
-'prefsreset' => 'A beállítások visszaállításra kerültek a tárolóból.',
-'qbsettings' => 'Gyorsmenü',
-'qbsettings-none' => 'Nincs',
-'qbsettings-fixedleft' => 'Fix baloldali',
-'qbsettings-fixedright' => 'Fix jobboldali',
-'qbsettings-floatingleft' => 'Lebegő baloldali',
-'qbsettings-floatingright' => 'Lebegő jobboldali',
-'changepassword' => 'Jelszócsere',
-'skin' => 'Felület',
-'skin-preview' => 'előnézet',
-'math' => 'Képletek',
-'dateformat' => 'Dátum formátuma',
-'datedefault' => 'Nincs beállítás',
-'datetime' => 'Dátum és idő',
-'math_failure' => 'Értelmezés sikertelen',
-'math_unknown_error' => 'ismeretlen hiba',
-'math_unknown_function' => 'ismeretlen függvény',
-'math_lexing_error' => 'lexikai hiba',
-'math_syntax_error' => 'formai hiba',
-'math_image_error' => 'Sikertelen PNG-vé alakítás; ellenőrizd a latex, dvips, gs telepítését',
-'math_bad_tmpdir' => 'Nem írható vagy nem hozható létre a matematikai ideiglenes könyvtár',
-'math_bad_output' => 'Nem lehet létrehozni vagy írni a matematikai függvények kimeneti könyvtárába',
-'math_notexvc' => 'HIányzó texvc végrehajtható fájl; a beállítást lásd a math/README fájlban.',
-'prefs-personal' => 'Felhasználói adatok',
-'prefs-rc' => 'Friss változtatások',
-'prefs-watchlist' => 'Figyelőlista',
-'prefs-watchlist-days' => 'A figyelőlistában mutatott napok száma:',
-'prefs-watchlist-days-max' => '(legfeljebb 7 nap)',
-'prefs-watchlist-edits' => 'A kiterjesztett figyelőlistán mutatott szerkesztések száma:',
-'prefs-watchlist-edits-max' => '(legfeljebb 1000)',
-'prefs-misc' => 'Egyéb',
-'prefs-resetpass' => 'Jelszó megváltoztatása',
-'saveprefs' => 'Mentés',
-'resetprefs' => 'Alaphelyzet',
-'restoreprefs' => 'A beállítások alaphelyzetbe állítása',
-'textboxsize' => 'Szerkesztés',
-'prefs-edit-boxsize' => 'A szerkesztőablak mérete.',
-'rows' => 'Sor',
-'columns' => 'Oszlop',
-'searchresultshead' => 'Keresés',
-'resultsperpage' => 'Laponként mutatott találatok száma:',
-'contextlines' => 'Találatonként mutatott sorok száma:',
-'contextchars' => 'Soronkénti szövegkörnyezet (karakterszám):',
-'stub-threshold' => 'A hivatkozások <a href="#" class="stub">csonkként</a> történő formázásának határa (bájtban):',
-'recentchangesdays' => 'A friss változtatásokban mutatott napok száma:',
-'recentchangesdays-max' => '(maximum {{PLURAL:$1|egy|$1}} nap)',
-'recentchangescount' => 'A friss változtatásokban, a laptörténetekben és a naplókban mutatott szerkesztések száma:',
-'savedprefs' => 'Az új beállításaid érvénybe léptek.',
-'timezonelegend' => 'Időzóna:',
-'timezonetext' => '¹Ennyi óra az eltérés a helyi idő és a szerver ideje (UTC) között.',
-'localtime' => 'Helyi idő:',
-'timezoneselect' => 'Időzóna:',
-'timezoneuseserverdefault' => 'A kiszolgáló alapértelmezett értékének használata',
-'timezoneuseoffset' => 'Egyéb (eltérés megadása)',
-'timezoneoffset' => 'Eltérés¹:',
-'servertime' => 'A kiszolgáló ideje:',
-'guesstimezone' => 'Töltse ki a böngésző',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktisz',
-'timezoneregion-arctic' => 'Északi-sark',
-'timezoneregion-asia' => 'Ázsia',
-'timezoneregion-atlantic' => 'Atlanti-óceán',
-'timezoneregion-australia' => 'Ausztrália',
-'timezoneregion-europe' => 'Európa',
-'timezoneregion-indian' => 'Indiai-óceán',
-'timezoneregion-pacific' => 'Csendes-óceán',
-'allowemail' => 'E-mail engedélyezése más szerkesztőktől',
-'prefs-searchoptions' => 'A keresés beállításai',
-'prefs-namespaces' => 'Névterek',
-'defaultns' => 'Alapértelmezett keresés az alábbi névterekben:',
-'default' => 'alapértelmezés',
-'files' => 'Fájlok',
-'prefs-custom-css' => 'saját CSS',
-'prefs-custom-js' => 'saját JS',
+'preferences' => 'Beállítások',
+'mypreferences' => 'Beállításaim',
+'prefs-edits' => 'Szerkesztéseid száma:',
+'prefsnologin' => 'Nem jelentkeztél be',
+'prefsnologintext' => 'Saját beállításaid elmentéséhez <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} be kell jelentkezned.] </span>',
+'changepassword' => 'Jelszócsere',
+'prefs-skin' => 'Felület',
+'skin-preview' => 'előnézet',
+'prefs-math' => 'Képletek',
+'datedefault' => 'Nincs beállítás',
+'prefs-datetime' => 'Dátum és idő',
+'prefs-personal' => 'Felhasználói adatok',
+'prefs-rc' => 'Friss változtatások',
+'prefs-watchlist' => 'Figyelőlista',
+'prefs-watchlist-days' => 'A figyelőlistában mutatott napok száma:',
+'prefs-watchlist-days-max' => '(legfeljebb 7 nap)',
+'prefs-watchlist-edits' => 'A kiterjesztett figyelőlistán mutatott szerkesztések száma:',
+'prefs-watchlist-edits-max' => '(legfeljebb 1000)',
+'prefs-watchlist-token' => 'A figyelőlista kulcsa:',
+'prefs-misc' => 'Egyéb',
+'prefs-resetpass' => 'Jelszó megváltoztatása',
+'prefs-email' => 'Levelezés',
+'prefs-rendering' => 'Lapok megjelenítése',
+'saveprefs' => 'Mentés',
+'resetprefs' => 'Alaphelyzet',
+'restoreprefs' => 'A beállítások alaphelyzetbe állítása',
+'prefs-editing' => 'Szerkesztés',
+'prefs-edit-boxsize' => 'A szerkesztőablak mérete.',
+'rows' => 'Sor',
+'columns' => 'Oszlop',
+'searchresultshead' => 'Keresés',
+'resultsperpage' => 'Laponként mutatott találatok száma:',
+'contextlines' => 'Találatonként mutatott sorok száma:',
+'contextchars' => 'Soronkénti szövegkörnyezet (karakterszám):',
+'stub-threshold' => 'A hivatkozások <a href="#" class="stub">csonkként</a> történő formázásának határa (bájtban):',
+'recentchangesdays' => 'A friss változtatásokban mutatott napok száma:',
+'recentchangesdays-max' => '(maximum {{PLURAL:$1|egy|$1}} nap)',
+'recentchangescount' => 'Az alapértelmezettként mutatott szerkesztések száma:',
+'prefs-help-recentchangescount' => 'Ez vonatkozik a friss változtatásokra, laptörténetekre és naplókra is.',
+'prefs-help-watchlist-token' => 'Ha ebbe a mezőbe beírsz egy titkos kulcsot, RSS feed fog készülni a figyelőlistádról.
+Bárki, aki tudja a fenti mezőbe beírt kulcsot, látni fogja a figyelőlistádat, így válassz egy titkos értéket.
+Itt van egy véletlenszerűen generált érték, amit használhatsz: $1',
+'savedprefs' => 'Az új beállításaid érvénybe léptek.',
+'timezonelegend' => 'Időzóna:',
+'localtime' => 'Helyi idő:',
+'timezoneuseserverdefault' => 'A kiszolgáló alapértelmezett értékének használata',
+'timezoneuseoffset' => 'Egyéb (eltérés megadása)',
+'timezoneoffset' => 'Eltérés¹:',
+'servertime' => 'A kiszolgáló ideje:',
+'guesstimezone' => 'Töltse ki a böngésző',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktisz',
+'timezoneregion-arctic' => 'Északi-sark',
+'timezoneregion-asia' => 'Ázsia',
+'timezoneregion-atlantic' => 'Atlanti-óceán',
+'timezoneregion-australia' => 'Ausztrália',
+'timezoneregion-europe' => 'Európa',
+'timezoneregion-indian' => 'Indiai-óceán',
+'timezoneregion-pacific' => 'Csendes-óceán',
+'allowemail' => 'E-mail engedélyezése más szerkesztőktől',
+'prefs-searchoptions' => 'A keresés beállításai',
+'prefs-namespaces' => 'Névterek',
+'defaultns' => 'Egyébként a következő névterekben keressen:',
+'default' => 'alapértelmezés',
+'prefs-files' => 'Fájlok',
+'prefs-custom-css' => 'saját CSS',
+'prefs-custom-js' => 'saját JS',
+'prefs-reset-intro' => 'Ezen a lapon állíthatod vissza a beállításaidat az oldal alapértelmezett értékeire.
+A műveletet nem lehet visszavonni.',
+'prefs-emailconfirm-label' => 'E-mail cím megerősítése:',
+'prefs-textboxsize' => 'A szerkesztőablak mérete',
+'youremail' => 'Az e-mail címed:',
+'username' => 'Szerkesztőnév:',
+'uid' => 'Azonosító:',
+'prefs-memberingroups' => '{{PLURAL:$1|Csoporttagság|Csoporttagságok}}:',
+'prefs-registration' => 'Regisztráció ideje:',
+'yourrealname' => 'Valódi neved:',
+'yourlanguage' => 'A felület nyelve:',
+'yourvariant' => 'Változó',
+'yournick' => 'Aláírás:',
+'prefs-help-signature' => 'A vitalapra írt hozzászólásaidat négy hullámvonallal (<nowiki>~~~~</nowiki>) írd alá. A lap mentésekor ez lecserélődik az aláírásodra és egy időbélyegre.',
+'badsig' => 'Érvénytelen aláírás; ellenőrizd a HTML-formázást.',
+'badsiglength' => 'Az aláírásod túl hosszú.
+{{PLURAL:$1|Egy|$1}} karakternél rövidebbnek kell lennie.',
+'yourgender' => 'Nem:',
+'gender-unknown' => 'Nincs megadva',
+'gender-male' => 'Férfi',
+'gender-female' => 'Nő',
+'prefs-help-gender' => 'Nem kötelező: a szoftver használja a nemalapú üzenetek megjelenítéséhez. Az információ mindenki számára látható.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
+'prefs-help-email' => 'Az e-mail cím megadása nem kötelező, de így kérhetsz új jelszót, ha elfelejtenéd a meglévőt.
+Ezen kívül más szerkesztők is kapcsolatba lépjenek veled a szerkesztői vagy vitalapodon keresztül, anélkül, hogy névtelenséged feladnád.',
+'prefs-help-email-required' => 'Meg kell adnod az e-mail címedet.',
+'prefs-info' => 'Alapinformációk',
+'prefs-i18n' => 'Nyelvi beállítások',
+'prefs-signature' => 'Aláírás',
+'prefs-dateformat' => 'Dátumformátum',
+'prefs-timeoffset' => 'Időeltérés',
+'prefs-advancedediting' => 'Haladó beállítások',
+'prefs-advancedrc' => 'Haladó beállítások',
+'prefs-advancedrendering' => 'Haladó beállítások',
+'prefs-advancedsearchoptions' => 'Haladó beállítások',
+'prefs-advancedwatchlist' => 'Haladó beállítások',
+'prefs-display' => 'Megjelenítési beállítások',
+'prefs-diffs' => 'Eltérések (diffek)',
# User rights
-'userrights' => 'Szerkesztői jogok beállítása', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Szerkesztőcsoportok beállítása',
-'userrights-user-editname' => 'Add meg a szerkesztő nevét:',
-'editusergroup' => 'Szerkesztőcsoportok módosítása',
-'editinguser' => "'''[[User:$1|$1]]''' jogainak megváltoztatása ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Szerkesztőcsoportok módosítása',
-'saveusergroups' => 'Szerkesztőcsoportok mentése',
-'userrights-groupsmember' => 'Csoporttag:',
-'userrights-groups-help' => 'Beállíthatod, hogy a szerkesztő mely csoportokba tartozik.
+'userrights' => 'Szerkesztői jogok beállítása',
+'userrights-lookup-user' => 'Szerkesztőcsoportok beállítása',
+'userrights-user-editname' => 'Add meg a szerkesztő nevét:',
+'editusergroup' => 'Szerkesztőcsoportok módosítása',
+'editinguser' => "'''[[User:$1|$1]]''' jogainak megváltoztatása ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Szerkesztőcsoportok módosítása',
+'saveusergroups' => 'Szerkesztőcsoportok mentése',
+'userrights-groupsmember' => 'Csoporttag:',
+'userrights-groupsmember-auto' => 'Alapértelmezetten tagja:',
+'userrights-groups-help' => 'Beállíthatod, hogy a szerkesztő mely csoportokba tartozik.
* A bepipált doboz azt jelenti, hogy a szerkesztő benne van a csoportban, az üres azt, hogy nem.
* A * az olyan csoportokat jelöli, amelyeket ha egyszer hozzáadtál, nem távolíthatod el, vagy nem adhatod hozzá.',
-'userrights-reason' => 'Ok:',
-'userrights-no-interwiki' => 'Nincs jogod a szerkesztők jogainak módosításához más wikiken.',
-'userrights-nodatabase' => '$1 adatbázis nem létezik vagy nem helyi.',
-'userrights-nologin' => '[[Special:UserLogin|Be kell jelentkezned]] egy adminisztrátori fiókkal, hogy szerkesztői jogokat adhass.',
-'userrights-notallowed' => 'A fiókoddal nincs jogod felhasználói jogokat osztani.',
-'userrights-changeable-col' => 'Megváltoztatható csoportok',
-'userrights-unchangeable-col' => 'Nem megváltoztatható csoportok',
+'userrights-reason' => 'Ok:',
+'userrights-no-interwiki' => 'Nincs jogod a szerkesztők jogainak módosításához más wikiken.',
+'userrights-nodatabase' => '$1 adatbázis nem létezik vagy nem helyi.',
+'userrights-nologin' => '[[Special:UserLogin|Be kell jelentkezned]] egy adminisztrátori fiókkal, hogy szerkesztői jogokat adhass.',
+'userrights-notallowed' => 'A fiókoddal nincs jogod felhasználói jogokat osztani.',
+'userrights-changeable-col' => 'Megváltoztatható csoportok',
+'userrights-unchangeable-col' => 'Nem megváltoztatható csoportok',
# Groups
'group' => 'Csoport:',
@@ -1386,6 +1446,7 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'right-bigdelete' => 'nagy történettel rendelkező fájlok törlése',
'right-deleterevision' => 'lapok adott változatainak törlése és helyreállítása',
'right-deletedhistory' => 'törölt lapváltozatok megtekintése, a szövegük nélkül',
+'right-deletedtext' => 'törölt változatok szövegének és a változatok közötti eltérés megtekintése',
'right-browsearchive' => 'keresés a törölt lapok között',
'right-undelete' => 'lap helyreállítása',
'right-suppressrevision' => 'az adminisztrátorok elől elrejtett változatok megtekintése és helyreállítása',
@@ -1399,6 +1460,8 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'right-editprotected' => 'kaszkád védelem nélküli védett lapok szerkesztése',
'right-editinterface' => 'felhasználói felület szerkesztése',
'right-editusercssjs' => 'más felhasználók CSS és JS fájljainak szerkesztése',
+'right-editusercss' => 'más felhasználók CSS fájljainak szerkesztése',
+'right-edituserjs' => 'más felhasználók JS fájljainak szerkesztése',
'right-rollback' => 'a lap utolsó szerkesztésének gyors visszaállítása',
'right-markbotedits' => 'visszaállított szerkesztések botként való jelölése',
'right-noratelimit' => 'sebességkorlát figyelmen kívül hagyása',
@@ -1415,6 +1478,8 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'right-siteadmin' => 'adatbázis lezárása, felnyitása',
'right-reset-passwords' => 'Más felhasználók jelszavának visszaállítása',
'right-override-export-depth' => 'Lapok exportálása a hivatkozott lapokkal együtt, legfeljebb 5-ös mélységig',
+'right-versiondetail' => 'kibővített szoftververzió-információk tekintése',
+'right-sendemail' => 'e-mail küldése más felhasználóknak',
# User rights log
'rightslog' => 'Szerkesztői jogosultságok naplója',
@@ -1464,6 +1529,15 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'recentchanges-legend' => 'A friss változások beállításai',
'recentchangestext' => 'Ezen a lapon a wikiben történt legutóbbi változásokat lehet nyomonkövetni.',
'recentchanges-feed-description' => 'Kövesd a wiki friss változtatásait ezzel a hírcsatornával.',
+'recentchanges-label-legend' => 'Jelmagyarázat: $1.',
+'recentchanges-legend-newpage' => '$1 – új lap',
+'recentchanges-label-newpage' => 'Ezzel a szerkesztéssel egy új lap jött létre',
+'recentchanges-legend-minor' => '$1 – apró szerkesztés',
+'recentchanges-label-minor' => 'Ez egy apró szerkesztés',
+'recentchanges-legend-bot' => '$1 – botszerkesztés',
+'recentchanges-label-bot' => 'Ezt a szerkesztést egy bot hajtotta végre',
+'recentchanges-legend-unpatrolled' => '$1 – nem ellenőrzött szerkesztés',
+'recentchanges-label-unpatrolled' => 'Ezt a szerkesztést még nem ellenőrizték',
'rcnote' => "Alább az utolsó '''{{PLURAL:$2|egy|$2}}''' nap utolsó '''{{PLURAL:$1|egy|$1}}''' változtatása látható. A lap generálásának időpontja $4, $5.",
'rcnotefrom' => 'Alább a <b>$2</b> óta történt változások láthatóak (<b>$1</b> db).',
'rclistfrom' => '$1 után történt változások megtekintése',
@@ -1490,6 +1564,8 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
# Recent changes linked
'recentchangeslinked' => 'Kapcsolódó változtatások',
+'recentchangeslinked-feed' => 'Kapcsolódó változtatások',
+'recentchangeslinked-toolbox' => 'Kapcsolódó változtatások',
'recentchangeslinked-title' => 'A(z) $1 laphoz kapcsolódó változtatások',
'recentchangeslinked-noresult' => 'A megadott időtartam alatt nem történt változás a kapcsolódó lapokon.',
'recentchangeslinked-summary' => "Alább azon lapoknak a legutóbbi változtatásai láthatóak, amelyekre hivatkozik egy megadott lap (vagy tagjai a megadott kategóriának).
@@ -1500,8 +1576,8 @@ A [[Special:Watchlist|figyelőlistádon]] szereplő lapok '''félkövérrel''' v
# Upload
'upload' => 'Fájl feltöltése',
'uploadbtn' => 'Fájl feltöltése',
-'reupload' => 'Fájl feltöltése újra',
'reuploaddesc' => 'Visszatérés a feltöltési űrlaphoz.',
+'upload-tryagain' => 'Módosított fájl-leírás elküldése',
'uploadnologin' => 'Nem vagy bejelentkezve',
'uploadnologintext' => 'Csak regisztrált felhasználók tölthetnek fel fájlokat. [[Special:UserLogin|Jelentkezz be]] vagy regisztrálj!',
'upload_directory_missing' => 'A feltöltési könyvtár ($1) nem létezik vagy nem tudja létrehozni a kiszolgáló.',
@@ -1532,6 +1608,7 @@ Lásd még az [[Special:NewFiles|új fáljlok galériáját]]',
'minlength1' => 'A fájlnévnek legalább egy betűből kell állnia.',
'illegalfilename' => 'A „$1” lap neve olyan karaktereket tartalmaz, melyek nincsenek megengedve lapcímben. Kérlek, változtasd meg a nevet, és próbálkozz a mentéssel újra.',
'badfilename' => 'A fájl új neve „$1”.',
+'filetype-mime-mismatch' => 'A fájl kiterjesztése nem egyezik a MIME-típusával.',
'filetype-badmime' => '„$1” MIME-típusú fájlokat nem lehet feltölteni.',
'filetype-bad-ie-mime' => 'A fájlt nem lehet feltölteni, mert az Internet Explorer „$1” típusúnak tekintené, ami tiltott és potenciálisan veszélyes fájltípus.',
'filetype-unwanted-type' => "A(z) '''„.$1”''' nem javasolt fájltípus.
@@ -1555,7 +1632,6 @@ Ha meg szeretnéd változtatni a leírást, meg kell nyitnod szerkesztésre a la
* A feltöltendő fájl neve: '''<tt>[[:$1]]</tt>'''
* A már létező fájl neve: '''<tt>[[:$2]]</tt>'''
Kérjük, hogy válassz másik nevet.",
-'fileexists-thumb' => "<center>'''Ilyen nevű fájl már van'''</center>",
'fileexists-thumbnail-yes' => "A fájl egy kisméretű képnek ''(bélyegképnek)'' tűnik. [[$1|thumb]]
Kérjük, hogy ellenőrizd a(z) '''<tt>[[:$1]]</tt>''' fájlt.
Ha az ellenőrzött fájl ugyanakkora, mint az eredeti méretű kép, akkor nincs szükség bélyegkép feltöltésére.",
@@ -1569,6 +1645,7 @@ Ha még mindig fel szeretnéd tölteni a fájlt, menj vissza, és adj meg egy ú
'file-deleted-duplicate' => 'Egy ehhez hasonló fájlt ([[$1]]) korábban már töröltek. Ellenőrizd a fájl törlési naplóját, mielőtt újra feltöltenéd.',
'successfulupload' => 'A feltöltés sikerült',
'uploadwarning' => 'Feltöltési figyelmeztetés',
+'uploadwarning-text' => 'Kérlek módosítsd a fájl leírását alább, majd próbáld újra.',
'savefile' => 'Fájl mentése',
'uploadedimage' => '„[[$1]]” felküldve',
'overwroteimage' => 'feltöltötte a(z) „[[$1]]” fájl új változatát',
@@ -1576,11 +1653,14 @@ Ha még mindig fel szeretnéd tölteni a fájlt, menj vissza, és adj meg egy ú
'uploaddisabledtext' => 'A fájlfeltöltés nem engedélyezett.',
'php-uploaddisabledtext' => 'A PHP-s fájlfeltöltés le van tiltva. Ellenőrizd a file_uploads beállítást.',
'uploadscripted' => 'Ez a fájl olyan HTML- vagy parancsfájlkódot tartalmaz, melyet tévedésből egy webböngésző esetleg értelmezni próbálhatna.',
-'uploadcorrupt' => 'A fájl sérült vagy hibás a kiterjesztése. Légy szíves ellenőrizd a fájlt és próbálkozz újra!',
'uploadvirus' => 'Ez a fájl vírust tartalmaz! A részletek: $1',
+'upload-source' => 'Forrásfájl',
'sourcefilename' => 'Forrásfájl neve:',
+'sourceurl' => 'A forrás URL-címe:',
'destfilename' => 'Célfájlnév:',
'upload-maxfilesize' => 'Maximális fájlméret: $1',
+'upload-description' => 'A fájl leírása',
+'upload-options' => 'Feltöltési beállítások',
'watchthisupload' => 'Fájl figyelése',
'filewasdeleted' => 'Korábban valaki már feltöltött ilyen néven egy fájlt, amelyet később töröltünk. Ellenőrizd a $1 bejegyzését, nehogy újra feltöltsd ugyanezt a fájlt.',
'upload-wasdeleted' => "'''Vigyázat: egy olyan fájlt akarsz feltölteni, ami korábban már törölve lett.'''
@@ -1602,13 +1682,42 @@ MGP # Pentax
PICT # ált.
#</pre> <!-- ezt a sort hagyd így -->',
-'upload-proto-error' => 'Hibás protokoll',
-'upload-proto-error-text' => 'A távoli feltöltéshez <code>http://</code> vagy <code>ftp://</code> kezdetű URL-ekre van szükség.',
-'upload-file-error' => 'Belső hiba',
-'upload-file-error-text' => 'Belső hiba történt egy ideiglenes fájl szerveren történő létrehozásakor.
+'upload-proto-error' => 'Hibás protokoll',
+'upload-proto-error-text' => 'A távoli feltöltéshez <code>http://</code> vagy <code>ftp://</code> kezdetű URL-ekre van szükség.',
+'upload-file-error' => 'Belső hiba',
+'upload-file-error-text' => 'Belső hiba történt egy ideiglenes fájl szerveren történő létrehozásakor.
Kérjük, hogy lépj kapcsolatba egy [[Special:ListUsers/sysop|adminisztrátorral]].',
-'upload-misc-error' => 'Ismeretlen feltöltési hiba',
-'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt. Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra. Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a rendszergazdával.',
+'upload-misc-error' => 'Ismeretlen feltöltési hiba',
+'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt. Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra. Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a rendszergazdával.',
+'upload-too-many-redirects' => 'Az URL túl sokszor volt átirányítva',
+'upload-unknown-size' => 'Ismeretlen méretű',
+'upload-http-error' => 'HTTP-hiba történt: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Hozzáférés megtagadva',
+'img-auth-nopathinfo' => 'Hiányzó PATH_INFO.
+A szerver nincs beállítva, hogy továbbítsa ezt az információt.
+Lehet, hogy CGI-alapú, és nem támogatja az img_auth-ot.
+Lásd a http://www.mediawiki.org/wiki/Manual:Image_Authorization lapot.',
+'img-auth-notindir' => 'A kért elérési út nincs a beállított feltöltési könyvtárban.',
+'img-auth-badtitle' => 'Nem sikerült érvényes címet készíteni a(z) „$1” szövegből.',
+'img-auth-nologinnWL' => 'Nem vagy bejelentkezve, és a(z) „$1” nincs az engedélyezési listán.',
+'img-auth-nofile' => 'A fájl („$1”) nem létezik.',
+'img-auth-isdir' => 'Megpróbáltál hozzáférni a(z) „$1” könyvtárhoz, azonban csak a fájlokhoz lehet.',
+'img-auth-streaming' => '„$1” továbbítása.',
+'img-auth-public' => 'Az img_auth.php funkciója az, hogy fájlokat közvetítsen egy privát wikiből.
+Ez a wiki publikus, így a biztonság miatt az img_auth.php ki van kapcsolva.',
+'img-auth-noread' => 'A szerkesztő nem jogosult a(z) „$1” olvasására.',
+
+# HTTP errors
+'http-invalid-url' => 'Érvénytelen URL-cím: $1',
+'http-invalid-scheme' => 'A(z) „$1” sémájú URL-ek nem támogatottak.',
+'http-request-error' => 'A HTTP-kérés nem sikerült egy ismeretlen hiba miatt.',
+'http-read-error' => 'HTTP-olvasási hiba.',
+'http-timed-out' => 'A HTTP-kérés túllépte a határidőt.',
+'http-curl-error' => 'Hiba történt az URL lekérésekor: $1',
+'http-host-unreachable' => 'Nem sikerült elérni az URL-t.',
+'http-bad-status' => 'Probléma történt a HTTP-kérés közben: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Nem érhető el az URL',
@@ -1617,6 +1726,7 @@ Kérjük, hogy lépj kapcsolatba egy [[Special:ListUsers/sysop|adminisztrátorr
'upload-curl-error28-text' => 'A webhely túl sokára válaszolt. Kérjük, ellenőrizd, hogy a webhely elérhető-e, várj egy kicsit, aztán próbáld újra. Kevésbé forgalmas időben is megpróbálhatod.',
'license' => 'Licenc:',
+'license-header' => 'Licenc',
'nolicense' => 'Válassz licencet!',
'license-nopreview' => '(Előnézet nem elérhető)',
'upload_source_url' => ' (egy érvényes, nyilvánosan elérhető URL)',
@@ -1637,6 +1747,7 @@ Az oszlopok címeire kattintva változtathatod meg a rendezést.',
'listfiles_count' => 'Változatok',
# File description page
+'file-anchor-link' => 'Fájl',
'filehist' => 'Fájltörténet',
'filehist-help' => 'Kattints egy időpontra, hogy a fájl akkori állapotát láthasd.',
'filehist-deleteall' => 'összes törlése',
@@ -1651,6 +1762,7 @@ Az oszlopok címeire kattintva változtathatod meg a rendezést.',
'filehist-dimensions' => 'Felbontás',
'filehist-filesize' => 'Fájlméret',
'filehist-comment' => 'Megjegyzés',
+'filehist-missing' => 'A fájl hiányzik',
'imagelinks' => 'Fájlhivatkozások',
'linkstoimage' => 'Az alábbi {{PLURAL:$1|lap hivatkozik|lapok hivatkoznak}} erre a fájlra:',
'linkstoimage-more' => 'Több, mint {{PLURAL:$1|egy|$1}} oldal hivatkozik erre a fájlra.
@@ -1660,15 +1772,16 @@ A teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|További hivatkozások]] megtekintése',
'redirectstofile' => 'A következő {{PLURAL:$1|fájl|$1 fájl}} van átirányítva erre a névre:',
'duplicatesoffile' => 'A következő {{PLURAL:$1|fájl|$1 fájl}} ennek a fájlnak a duplikátuma ([[Special:FileDuplicateSearch/$2|további részletek]]):',
-'sharedupload' => 'Ez a fájl a(z) $1 megosztott tárhelyről származik, és más projektek is használhatják.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Lásd a [$1 fájl leírólapját] a további információkért.',
-'shareduploadwiki-desc' => 'A $1 található leírás alább látható.',
-'shareduploadwiki-linktext' => 'fájl leírólapján',
-'noimage' => 'Nem létezik ilyen nevű fájl, de $1 egyet.',
-'noimage-linktext' => 'feltölthetsz',
+'sharedupload' => 'Ez a fájl a(z) $1 megosztott tárhelyről származik, és más projektek is használhatják.',
+'sharedupload-desc-there' => 'Ez a fájl a $1 megosztott tárhelyről származik, és más projektek is használhatják.
+Az [$2 ottani leírólapján] további információkat találhatsz róla.',
+'sharedupload-desc-here' => 'Ez a fájl a $1 megosztott tárhelyről származik, és más projektek is használhatják.
+A [$2 fájl ottani leírólapjának] másolata alább látható.',
+'filepage-nofile' => 'Nem létezik ilyen nevű fájl.',
+'filepage-nofile-link' => 'Nem létezik ilyen nevű fájl. [$1 Ide kattintva] feltölthetsz egyet.',
'uploadnewversion-linktext' => 'Új változat feltöltése',
-'shared-repo-from' => 'a(z) $1 megosztott tárhelyről', # $1 is the repository name
-'shared-repo' => 'megosztott tárhely', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'a(z) $1 megosztott tárhelyről',
+'shared-repo' => 'megosztott tárhely',
# File reversion
'filerevert' => '$1 visszaállítása',
@@ -1697,6 +1810,7 @@ A teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.',
** Szerzői jog megsértése
** Duplikátum',
'filedelete-edit-reasonlist' => 'Törlési okok szerkesztése',
+'filedelete-maintenance' => 'A fájlok törlése és helyreállítása ideiglenesen le van tiltva karbantartás miatt.',
# MIME search
'mimesearch' => 'Keresés MIME-típus alapján',
@@ -1718,7 +1832,7 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
# Random page
'randompage' => 'Lap találomra',
-'randompage-nopages' => 'A(z) „$1” névtérben nincsenek lapok.',
+'randompage-nopages' => 'A következő {{PLURAL:$2|névtérben|névterekben}} nincsenek lapok: $1.',
# Random redirect
'randomredirect' => 'Átirányítás találomra',
@@ -1730,6 +1844,7 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
'statistics-header-edits' => 'Szerkesztési statisztika',
'statistics-header-views' => 'Látogatási statisztika',
'statistics-header-users' => 'Szerkesztői statisztika',
+'statistics-header-hooks' => 'További statisztikák',
'statistics-articles' => 'Tartalommal rendelkező lapok',
'statistics-pages' => 'Lapok száma',
'statistics-pages-desc' => 'A wikiben található összes lap, beleértve a vitalapokat és az átirányításokat is',
@@ -1759,8 +1874,8 @@ Az <s>áthúzott</s> sorok a lista elkészülése óta javítva lettek.',
'brokenredirects' => 'Nem létező lapra mutató átirányítások',
'brokenredirectstext' => 'A következő átirányítások nem létező lapokra hivatkoznak:',
-'brokenredirects-edit' => '(szerkesztés)',
-'brokenredirects-delete' => '(törlés)',
+'brokenredirects-edit' => 'szerkesztés',
+'brokenredirects-delete' => 'törlés',
'withoutinterwiki' => 'Nyelvközi hivatkozás nélküli lapok',
'withoutinterwiki-summary' => 'A következő lapok nem hivatkoznak más nyelvű változatokra:',
@@ -1868,7 +1983,7 @@ A napló típusának, a szerkesztő nevének (kis- és nagybetűérzékeny), vag
# Special:Categories
'categories' => 'Kategóriák',
-'categoriespagetext' => 'A következő kategóriák tartalmaznak lapokat vagy fájlokat.
+'categoriespagetext' => 'A következő {{PLURAL:$1|kategória tartalmaz|kategóriák tartalmaznak}} lapokat vagy fájlokat.
A [[Special:UnusedCategories|nem használt kategóriák]] nem jelennek meg.
Lásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.',
'categoriesfrom' => 'Kategóriák listázása a következő névtől kezdve:',
@@ -1876,8 +1991,9 @@ Lásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.',
'special-categories-sort-abc' => 'rendezés ABC szerint',
# Special:DeletedContributions
-'deletedcontributions' => 'Törölt szerkesztések',
-'deletedcontributions-title' => 'Törölt szerkesztések',
+'deletedcontributions' => 'Törölt szerkesztések',
+'deletedcontributions-title' => 'Törölt szerkesztések',
+'sp-deletedcontributions-contribs' => 'közreműködései',
# Special:LinkSearch
'linksearch' => 'Külső hivatkozások',
@@ -1893,6 +2009,16 @@ Támogatott protokollok: <tt>$1</tt>',
'listusersfrom' => 'Szerkesztők listázása a következő névtől kezdve:',
'listusers-submit' => 'Megjelenítés',
'listusers-noresult' => 'Nem található szerkesztő.',
+'listusers-blocked' => '(blokkolva)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktív szerkesztők listája',
+'activeusers-intro' => 'Ez a lap azon felhasználók listáját tartalmazza, akik csináltak valamilyen tevékenységet az elmúlt {{PLURAL:$1|egy|$1}} napban.',
+'activeusers-count' => '{{PLURAL:$1|egy|$1}} szerkesztés az utolsó {{PLURAL:$3|egy|$3}} napban',
+'activeusers-from' => 'Szerkesztők listázása a következő névtől kezdve:',
+'activeusers-hidebots' => 'Botok elrejtése',
+'activeusers-hidesysops' => 'Adminisztrátorok elrejtése',
+'activeusers-noresult' => 'Nem található ilyen szerkesztő.',
# Special:Log/newusers
'newuserlogpage' => 'Új szerkesztők naplója',
@@ -1903,17 +2029,23 @@ Támogatott protokollok: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Felhasználói fiók automatikusan létrehozva',
# Special:ListGroupRights
-'listgrouprights' => 'Szerkesztői csoportok jogai',
-'listgrouprights-summary' => 'Lenn láthatóak a wikiben létező szerkesztői csoportok, valamint az azokhoz tartozó jogok.
+'listgrouprights' => 'Szerkesztői csoportok jogai',
+'listgrouprights-summary' => 'Lenn láthatóak a wikiben létező szerkesztői csoportok, valamint az azokhoz tartozó jogok.
Az egyes csoportokról további információt [[{{MediaWiki:Listgrouprights-helppage}}|itt]] találhatsz.',
-'listgrouprights-group' => 'Csoport',
-'listgrouprights-rights' => 'Jogok',
-'listgrouprights-helppage' => 'Help:Szerkesztői csoportok jogai',
-'listgrouprights-members' => '(tagok listája)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|ehhez a csoporthoz|ezekhez a csoportokhoz}} adhat szerkesztőket: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|ebből a csoportból|ezekből a csoportokból}} távolíthat el szerkesztőket: $1',
-'listgrouprights-addgroup-all' => 'bármelyik csoporthoz adhat szerkesztőket',
-'listgrouprights-removegroup-all' => 'bármelyik csoportból távolíthat el szerkesztőket',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Kapott jog</span>
+* <span class="listgrouprights-revoked">Elvett jog</span>',
+'listgrouprights-group' => 'Csoport',
+'listgrouprights-rights' => 'Jogok',
+'listgrouprights-helppage' => 'Help:Szerkesztői csoportok jogai',
+'listgrouprights-members' => '(tagok listája)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|ehhez a csoporthoz|ezekhez a csoportokhoz}} adhat szerkesztőket: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|ebből a csoportból|ezekből a csoportokból}} távolíthat el szerkesztőket: $1',
+'listgrouprights-addgroup-all' => 'bármelyik csoporthoz adhat szerkesztőket',
+'listgrouprights-removegroup-all' => 'bármelyik csoportból távolíthat el szerkesztőket',
+'listgrouprights-addgroup-self' => 'hozzáadhatja a következő {{PLURAL:$2|csoporthoz|csoportokhoz}} a saját fiókját: $1',
+'listgrouprights-removegroup-self' => 'eltávolíthatja a következő {{PLURAL:$2|csoportból|csoportokból}} a saját fiókját: $1',
+'listgrouprights-addgroup-self-all' => 'az összes csoportot hozzáadhatja a saját fiókjához',
+'listgrouprights-removegroup-self-all' => 'az összes csoporból eltávolíthatja a saját fiókját',
# E-mail user
'mailnologin' => 'Nincs feladó',
@@ -1988,23 +2120,26 @@ Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz
'enotif_body' => 'Kedves $WATCHINGUSERNAME!
-$PAGEEDITDATE-n $PAGEEDITOR $CHANGEDORCREATED a(z) {{SITENAME}} $PAGETITLE című oldalát; a jelenlegi verziót a $PAGETITLE_URL webcímen találod.
+$PAGEEDITOR $PAGEEDITDATE-kor $CHANGEDORCREATED a(z) $PAGETITLE című lapot a(z) {{SITENAME}} wikin; a jelenlegi verziót a $PAGETITLE_URL webcímen találod.
$NEWPAGE
-A szerkesztő összegzése: $PAGESUMMARY $PAGEMINOREDIT
+A szerkesztési összefoglaló a következő volt: $PAGESUMMARY $PAGEMINOREDIT
A szerkesztő elérhetősége:
-levél: $PAGEEDITOR_EMAIL
+e-mail küldése: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Amíg nem keresed fel az oldalt, vagy nem állítod alaphelyzetbe a figyelőlistádnál, nem kapsz értesítést a további változtatásokról.
+Amíg nem keresed fel az oldalt, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.
- Baráti üdvözlettel: {{SITENAME}} értesítő rendszere
+ Baráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere
--
A figyelőlistád módosításához keresd fel a
-{{fullurl:{{ns:special}}:Watchlist/edit}} címet
+{{fullurl:{{#special:Watchlist}}/edit}} címet
+
+A lap figyelőlistádról való törléséhez keresd fel a
+$UNWATCHURL címet
Visszajelzés és további segítség:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2018,10 +2153,11 @@ Visszajelzés és további segítség:
'exblank' => 'a lap üres volt',
'delete-confirm' => '$1 törlése',
'delete-legend' => 'Törlés',
-'historywarning' => 'Figyelem: a lapnak, amit törölni készülsz, több változata van:',
+'historywarning' => "'''Figyelem:''' a lapnak, amit törölni készülsz, körülbelül $1 változattal rendelkező laptörténete van:",
'confirmdeletetext' => 'Egy lapot vagy fájlt készülsz törölni a teljes laptörténetével együtt.
Kérjük, erősítsd meg, hogy valóban ezt szeretnéd tenni, átlátod a következményeit, és hogy a műveletet a [[{{MediaWiki:Policy-url}}|törlési irányelvekkel]] összhangban végzed.',
'actioncomplete' => 'Művelet végrehajtva',
+'actionfailed' => 'A művelet nem sikerült',
'deletedtext' => 'A(z) „<nowiki>$1</nowiki>” lapot törölted.
A legutóbbi törlések listájához lásd a $2 lapot.',
'deletedarticle' => '„$1” törölve',
@@ -2042,19 +2178,20 @@ A legutóbbi törlések listájához lásd a $2 lapot.',
'delete-warning-toobig' => 'Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. Törlése fennakadásokat okozhat a wiki adatbázis-műveleteiben; óvatosan járj el.',
# Rollback
-'rollback' => 'Szerkesztések visszaállítása',
-'rollback_short' => 'Visszaállítás',
-'rollbacklink' => 'visszaállítás',
-'rollbackfailed' => 'A visszaállítás nem sikerült',
-'cantrollback' => 'Nem lehet visszaállítani: az utolsó szerkesztést végző felhasználó az egyetlen, aki a lapot szerkesztette.',
-'alreadyrolled' => '[[:$1]] utolsó, [[User:$2|$2]] ([[User talk:$2|vita]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) általi szerkesztését nem lehet visszavonni:
+'rollback' => 'Szerkesztések visszaállítása',
+'rollback_short' => 'Visszaállítás',
+'rollbacklink' => 'visszaállítás',
+'rollbackfailed' => 'A visszaállítás nem sikerült',
+'cantrollback' => 'Nem lehet visszaállítani: az utolsó szerkesztést végző felhasználó az egyetlen, aki a lapot szerkesztette.',
+'alreadyrolled' => '[[:$1]] utolsó, [[User:$2|$2]] ([[User talk:$2|vita]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) általi szerkesztését nem lehet visszavonni:
időközben valaki már visszavonta, vagy szerkesztette a lapot.
Az utolsó szerkesztést [[User:$3|$3]] ([[User talk:$3|vita]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) végezte.',
-'editcomment' => "A szerkesztési összefoglaló „''$1''” volt.", # only shown if there is an edit comment
-'revertpage' => 'Visszaállítottam a lap korábbi változatát: [[Special:Contributions/$2|$2]] ([[User talk:$2|vita]]) szerkesztéséről [[User:$1|$1]] szerkesztésére', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 szerkesztéseit visszaállítottam $2 utolsó változatára.',
-'sessionfailure' => 'Úgy látszik, hogy probléma van a bejelentkezési munkameneteddel;
+'editcomment' => "A szerkesztési összefoglaló „''$1''” volt.",
+'revertpage' => 'Visszaállítottam a lap korábbi változatát: [[Special:Contributions/$2|$2]] ([[User talk:$2|vita]]) szerkesztéséről [[User:$1|$1]] szerkesztésére',
+'revertpage-nouser' => 'Visszaállítottam a lap korábbi változatát (szerkesztőnév eltávolítva) szerkesztéséről [[User:$1|$1]] szerkesztésére',
+'rollback-success' => '$1 szerkesztéseit visszaállítottam $2 utolsó változatára.',
+'sessionfailure' => 'Úgy látszik, hogy probléma van a bejelentkezési munkameneteddel;
ez a művelet a munkamenet eltérítése miatti óvatosságból megszakadt.
Kérjük, hogy nyomd meg a "vissza" gombot, és töltsd le újra az oldalt, ahonnan jöttél, majd próbáld újra.',
@@ -2072,7 +2209,7 @@ Kérjük, hogy nyomd meg a "vissza" gombot, és töltsd le újra az oldalt, ahon
'protectexpiry' => 'Időtartam',
'protect_expiry_invalid' => 'A lejárati idő érvénytelen.',
'protect_expiry_old' => 'A lejárati idő a múltban van.',
-'protect-unchain' => 'Átnevezési jogok állítása külön',
+'protect-unchain-permissions' => 'További védelmi lehetőségek feloldása',
'protect-text' => "Itt megtekintheted és módosíthatod a(z) '''<nowiki>$1</nowiki>''' lap védelmi szintjét.",
'protect-locked-blocked' => "Nem változtathatod meg a védelmi szinteket, amíg blokkolnak. Itt vannak a(z)
'''$1''' lap jelenlegi beállításai:",
@@ -2102,7 +2239,7 @@ Megváltoztathatod ezen lap védelmi szintjét, de az nem lesz hatással a kaszk
** Gyakori spamelés
** Nagyforgalmú lap',
'protect-edit-reasonlist' => 'Lapvédelem oka',
-'protect-expiry-options' => '1 óra:1 hour,1 nap:1 day,1 hét:1 week,2 hét:2 weeks,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year,végtelen:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 óra:1 hour,1 nap:1 day,1 hét:1 week,2 hét:2 weeks,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year,végtelen:infinite',
'restriction-type' => 'Engedély:',
'restriction-level' => 'Korlátozási szint:',
'minimum-size' => 'Legkisebb méret',
@@ -2147,6 +2284,7 @@ változatot visszaállították vagy eltávolították az archívumból.',
'undelete-nodiff' => 'Nem található korábbi változat.',
'undeletebtn' => 'Helyreállítás',
'undeletelink' => 'megtekintés/helyreállítás',
+'undeleteviewlink' => 'megtekintés',
'undeletereset' => 'Vissza',
'undeleteinvert' => 'Kijelölés megfordítása',
'undeletecomment' => 'Ok:',
@@ -2184,19 +2322,23 @@ $1',
'contributions-title' => '$1 közreműködései',
'mycontris' => 'Közreműködéseim',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Nem található a feltételeknek megfelelő változtatás.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nem található a feltételeknek megfelelő változtatás.',
'uctop' => ' (utolsó)',
'month' => 'E hónap végéig:',
'year' => 'Eddig az évig:',
-'sp-contributions-newbies' => 'Csak a nemrég regisztrált szerkesztők közreműködéseinek mutatása',
-'sp-contributions-newbies-sub' => 'Új szerkesztők lapjai',
-'sp-contributions-newbies-title' => 'Új szerkesztők közreműködései',
-'sp-contributions-blocklog' => 'Blokkolási napló',
-'sp-contributions-logs' => 'naplók',
-'sp-contributions-search' => 'Közreműködések szűrése',
-'sp-contributions-username' => 'IP-cím vagy felhasználónév:',
-'sp-contributions-submit' => 'Keresés',
+'sp-contributions-newbies' => 'Csak a nemrég regisztrált szerkesztők közreműködéseinek mutatása',
+'sp-contributions-newbies-sub' => 'Új szerkesztők lapjai',
+'sp-contributions-newbies-title' => 'Új szerkesztők közreműködései',
+'sp-contributions-blocklog' => 'Blokkolási napló',
+'sp-contributions-deleted' => 'törölt szerkesztések',
+'sp-contributions-logs' => 'naplók',
+'sp-contributions-talk' => 'vitalap',
+'sp-contributions-userrights' => 'szerkesztői jogok beállítása',
+'sp-contributions-blocked-notice' => 'Ez a szerkesztő blokkolva van. A blokknapló legutóbbi ide vonatkozó bejegyzése a következő:',
+'sp-contributions-search' => 'Közreműködések szűrése',
+'sp-contributions-username' => 'IP-cím vagy felhasználónév:',
+'sp-contributions-submit' => 'Keresés',
# What links here
'whatlinkshere' => 'Mi hivatkozik erre',
@@ -2219,6 +2361,7 @@ $1',
# Block/unblock
'blockip' => 'Blokkolás',
+'blockip-title' => 'Felhasználó blokkolása',
'blockip-legend' => 'Felhasználó blokkolása',
'blockiptext' => 'Az alábbi űrlap segítségével megvonhatod egy szerkesztő vagy IP-cím szerkesztési jogait.
Ügyelj rá, hogy az intézkedésed mindig legyen tekintettel a vonatkozó [[{{MediaWiki:Policy-url}}|irányelvekre]].
@@ -2242,7 +2385,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'ipbenableautoblock' => 'A szerkesztő által használt IP-címek automatikus blokkolása',
'ipbsubmit' => 'Blokkolás',
'ipbother' => 'Más időtartam:',
-'ipboptions' => '2 óra:2 hours,1 nap:1 day,3 nap:3 days,1 hét:1 week,2 hét:2 weeks,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year,végtelen:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 óra:2 hours,1 nap:1 day,3 nap:3 days,1 hét:1 week,2 hét:2 weeks,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year,végtelen:infinite',
'ipbotheroption' => 'Más időtartam',
'ipbotherreason' => 'Más/további ok:',
'ipbhidename' => 'A felhasználónév ne jelenjen meg a szerkesztéseknél és a listákban',
@@ -2271,9 +2414,11 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'ipblocklist-sh-tempblocks' => 'ideiglenes blokkok $1',
'ipblocklist-sh-addressblocks' => 'egy IP-címre vonatkozó blokkok $1',
'ipblocklist-submit' => 'Keresés',
+'ipblocklist-localblock' => 'Helyi blokk',
+'ipblocklist-otherblocks' => 'További {{PLURAL:$1|blokk|blokkok}}',
'blocklistline' => '$1, $2 blokkolta $3 felhasználót ($4)',
'infiniteblock' => 'végtelen',
-'expiringblock' => 'lejárat: $1',
+'expiringblock' => 'lejárat: $1 $2',
'anononlyblock' => 'csak anon.',
'noautoblockblock' => 'az automatikus blokkolás letiltott',
'createaccountblock' => 'új felhasználó létrehozása blokkolva',
@@ -2287,7 +2432,8 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'contribslink' => 'szerkesztései',
'autoblocker' => "Az általad használt IP-cím autoblokkolva van, mivel korábban a kitiltott „[[User:$1|$1]]” használta. ($1 blokkolásának indoklása: „'''$2'''”) Ha nem te vagy $1, lépj kapcsolatba valamelyik adminisztrátorral, és kérd az autoblokk feloldását. Ne felejtsd el megírni neki, hogy kinek szóló blokkba ütköztél bele!",
'blocklogpage' => 'Blokkolási napló',
-'blocklog-fulllog' => 'Teljes blokkolási napló',
+'blocklog-showlog' => 'Ez a felhasználó már blokkolva volt korábban. A blokkolási napló ide vonatkozó része alább látható:',
+'blocklog-showsuppresslog' => 'Ez a felhasználó korábban blokkot kapott, és a naplóbejegyzés el lett rejtve. Az elrejtési napló alább látható tájékoztatásként:',
'blocklogentry' => '„[[$1]]” blokkolva $2 $3 időtartamra',
'reblock-logentry' => 'megváltoztatta [[$1]] blokkjának beállításait, a blokk lejárta: $2 $3',
'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az IP-autoblokkok nem szerepelnek a listában. Lásd még [[Special:IPBlockList|a jelenleg életben lévő blokkok listáját]].',
@@ -2306,9 +2452,11 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'ipb_already_blocked' => '"$1" már blokkolva',
'ipb-needreblock' => '== Már blokkolva ==
$1 már blokkolva van. Meg szeretnéd változtatni a beállításokat?',
+'ipb-otherblocks-header' => 'További {{PLURAL:$1|blokk|blokkok}}',
'ipb_cant_unblock' => 'Hiba: A(z) $1 blokkolási azonosító nem található. Lehet, hogy már feloldották a blokkolását.',
'ipb_blocked_as_range' => 'Hiba: a(z) $1 IP-cím nem blokkolható közvetlenül, és nem lehet feloldani. A(z) $2 tartomány részeként van blokkolva, amely feloldható.',
'ip_range_invalid' => 'Érvénytelen IP-tartomány.',
+'ip_range_toolarge' => 'Nem engedélyezettek azok a tartományblokkok, melyek nagyobbak mint /$1.',
'blockme' => 'Saját magam blokkolása',
'proxyblocker' => 'Proxyblokkoló',
'proxyblocker-disabled' => 'Ez a funkció le van tiltva.',
@@ -2317,6 +2465,7 @@ $1 már blokkolva van. Meg szeretnéd változtatni a beállításokat?',
'sorbsreason' => 'Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán.',
'sorbs_create_account_reason' => 'Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán. Nem hozhatsz létre fiókot.',
'cant-block-while-blocked' => 'Nem blokkolhatsz más szerkesztőket, miközben te magad blokkolva vagy.',
+'cant-see-hidden-user' => 'A felhasználó, akit blokkolni próbáltál már blokkolva és rejtve van. Mivel nincs felhasználó elrejtése jogosultságod, nem láthatod és nem szerkesztheted a felhasználó blokkját.',
# Developer tools
'lockdb' => 'Adatbázis zárolása',
@@ -2364,6 +2513,7 @@ győződj meg a folytatás előtt arról, hogy tisztában vagy-e a következmén
Ezen esetekben a vitalapot külön, kézzel kell átnevezned a kívánságaid szerint.",
'movearticle' => 'Lap átnevezése',
+'moveuserpage-warning' => "'''Figyelem:''' Egy felhasználólapot készülsz átmozgatni. Csak a lap lesz átmozgatva, a szerkesztő ''nem'' lesz átnevezve.",
'movenologin' => 'Nem jelentkeztél be',
'movenologintext' => 'Ahhoz, hogy átnevezhess egy lapot, [[Special:UserLogin|be kell lépned]].',
'movenotallowed' => 'Nincs jogod a lapok átnevezéséhez.',
@@ -2374,7 +2524,7 @@ Ezen esetekben a vitalapot külön, kézzel kell átnevezned a kívánságaid sz
'move-watch' => 'Figyeld a lapot',
'movepagebtn' => 'Lap átnevezése',
'pagemovedsub' => 'Átnevezés sikeres',
-'movepage-moved' => "'''„$1” átnevezve „$2” névre'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''„$1” átnevezve „$2” névre'''",
'movepage-moved-redirect' => 'Átirányítás létrehozva.',
'movepage-moved-noredirect' => 'A régi címről nem sikerült átirányítást készíteni.',
'articleexists' => 'Ilyen névvel már létezik lap, vagy az általad választott név érvénytelen.
@@ -2416,6 +2566,15 @@ Az átnevezés céljaként megadott „[[:$1]]” szócikk már létezik. Ha az
'imageinvalidfilename' => 'A célnév érvénytelen',
'fix-double-redirects' => 'Az eredeti címre mutató hivatkozások frissítése',
'move-leave-redirect' => 'Átirányítás készítése a régi címről az új címre',
+'protectedpagemovewarning' => "'''Figyelem:''' Ez a lap le van védve, így csak adminisztrátori jogosultságokkal rendelkező szerkesztők nevezhetik át.
+A legutolsó ide vonatkozó naplóbejegyzés alább látható:",
+'semiprotectedpagemovewarning' => "'''Figyelem:''' Ez a lap le van védve, így csak regisztrált felhasználók nevezhetik át.
+A legutolsó ide vonatkozó naplóbejegyzés alább látható:",
+'move-over-sharedrepo' => '== Létező fájlnév ==
+
+A(z) [[:$1]] néven már létezik fájl egy megosztott tárhelyen. Ha ilyen néven töltöd fel, el fogja takarni a közös tárhelyen levőt.',
+'file-exists-sharedrepo' => 'A választott fájlnév már használatban van egy közös tárhelyen.
+Kérlek válassz másik nevet.',
# Export
'export' => 'Lapok exportálása',
@@ -2441,15 +2600,21 @@ Az utóbbi esetben közvetlen hivatkozást is használhatsz, például a [[{{#Sp
'export-pagelinks' => 'Hivatkozott lapok hozzáadása, eddig a szintig:',
# Namespace 8 related
-'allmessages' => 'Rendszerüzenetek',
-'allmessagesname' => 'Név',
-'allmessagesdefault' => 'Alapértelmezett szöveg',
-'allmessagescurrent' => 'Jelenlegi szöveg',
-'allmessagestext' => 'Ezen a lapon a MediaWiki-névtérben elérhető rendszerüzenetek listája látható.
+'allmessages' => 'Rendszerüzenetek',
+'allmessagesname' => 'Név',
+'allmessagesdefault' => 'Alapértelmezett szöveg',
+'allmessagescurrent' => 'Jelenlegi szöveg',
+'allmessagestext' => 'Ezen a lapon a MediaWiki-névtérben elérhető rendszerüzenetek listája látható.
Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], valamint a [http://translatewiki.net translatewiki.net] oldalra.',
-'allmessagesnotsupportedDB' => "A '''''{{ns:special}}:Allmessages''''' lap nem használható, mert a '''\$wgUseDatabaseMessages''' ki van kapcsolva.",
-'allmessagesfilter' => 'Üzenetnevek szűrése:',
-'allmessagesmodified' => 'Csak a módosítottak mutatása',
+'allmessagesnotsupportedDB' => "A '''''{{ns:special}}:Allmessages''''' lap nem használható, mert a '''\$wgUseDatabaseMessages''' ki van kapcsolva.",
+'allmessages-filter-legend' => 'Elemek szűrése',
+'allmessages-filter' => 'Módosítás állapota:',
+'allmessages-filter-unmodified' => 'nem módosított',
+'allmessages-filter-all' => 'összes',
+'allmessages-filter-modified' => 'módosított',
+'allmessages-prefix' => 'Előtag szerint:',
+'allmessages-language' => 'Nyelv:',
+'allmessages-filter-submit' => 'Szűrés',
# Thumbnails
'thumbnail-more' => 'A kép nagyítása',
@@ -2459,6 +2624,9 @@ Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [http://w
'djvu_no_xml' => 'Nem olvasható ki a DjVu fájl XML-je',
'thumbnail_invalid_params' => 'Érvénytelen bélyegkép paraméterek',
'thumbnail_dest_directory' => 'Nem hozható létre a célkönyvtár',
+'thumbnail_image-type' => 'A képformátum nem támogatott',
+'thumbnail_gd-library' => 'A GD-könyvtár nincs megfelelően beállítva: a(z) $1 függvény hiányzik',
+'thumbnail_image-missing' => 'Úgy tűnik, hogy a fájl hiányzik: $1',
# Special:Import
'import' => 'Lapok importálása',
@@ -2522,6 +2690,7 @@ Valamennyi transwiki importálási művelet az [[Special:Log/import|importálás
'tooltip-ca-viewsource' => 'Ez egy védett lap. Ide kattintva megnézheted a forrását.',
'tooltip-ca-history' => 'A lap korábbi változatai',
'tooltip-ca-protect' => 'A lap levédése',
+'tooltip-ca-unprotect' => 'Lapvédelem feloldása',
'tooltip-ca-delete' => 'A lap törlése',
'tooltip-ca-undelete' => 'A törölt lapváltozatok visszaállítása',
'tooltip-ca-move' => 'A lap áthelyezése',
@@ -2532,6 +2701,7 @@ Valamennyi transwiki importálási művelet az [[Special:Log/import|importálás
'tooltip-search-fulltext' => 'Oldalak keresése a megadott szöveg alapján',
'tooltip-p-logo' => 'Kezdőlap',
'tooltip-n-mainpage' => 'A kezdőlap felkeresése',
+'tooltip-n-mainpage-description' => 'A kezdőlap megtekintése',
'tooltip-n-portal' => 'A közösségről, miben segíthetsz, mit hol találsz meg',
'tooltip-n-currentevents' => 'Háttérinformáció az aktuális eseményekről',
'tooltip-n-recentchanges' => 'A wikiben történt legutóbbi változtatások listája',
@@ -2571,10 +2741,18 @@ Valamennyi transwiki importálási művelet az [[Special:Log/import|importálás
# Stylesheets
'common.css' => '/* Közös CSS az összes felszínnek */',
'monobook.css' => '/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */',
+'vector.css' => '/******************************************************************************************\\
+* Ezek a stílusok csak a Vector felületre vonatkoznak *
+* A nem kifejezetten Vector-specifikus stílusokat a [[MediaWiki:Common.css]]-be írd! *
+\\******************************************************************************************/',
# Scripts
'common.js' => '/* Az ide elhelyezett JavaScript kód minden felhasználó számára lefut az oldalak betöltésekor. */',
'monobook.js' => '/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'vector.js' => '/******************************************************************************************\\
+* Ezek a szkriptek csak a Vector skin alatt futnak le. *
+* A nem kifejezetten Vector-specifikus szkripteket a [[MediaWiki:Common.js]]-be írd! *
+\\******************************************************************************************/',
# Metadata
'nodublincore' => 'Ezen a kiszolgálón a Dublin Core RDF metaadatok használata letiltott.',
@@ -2584,10 +2762,12 @@ Valamennyi transwiki importálási művelet az [[Special:Log/import|importálás
# Attribution
'anonymous' => 'Névtelen {{SITENAME}}-{{PLURAL:$1|szerkesztő|szerkesztők}}',
'siteuser' => '$1 {{SITENAME}}-felhasználó',
-'lastmodifiedatby' => 'Ezt a lapot utoljára $3 módosította $2, $1 időpontban.', # $1 date, $2 time, $3 user
+'anonuser' => '$1 névtelen {{SITENAME}}-felhasználó',
+'lastmodifiedatby' => 'Ezt a lapot utoljára $3 módosította $2, $1 időpontban.',
'othercontribs' => '$1 munkája alapján.',
'others' => 'mások',
'siteusers' => '$1 {{SITENAME}}-{{PLURAL:$2|szerkesztő|szerkesztők}}',
+'anonusers' => '$1 névtelen {{PLURAL:$2|felhasználó|felhasználók}}',
'creditspage' => 'A lap közreműködői',
'nocredits' => 'Ennek a lapnak nincs közreműködői információja.',
@@ -2626,11 +2806,22 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
'mw_math_modern' => 'Modern böngészőknek ajánlott beállítás',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Értelmezés sikertelen',
+'math_unknown_error' => 'ismeretlen hiba',
+'math_unknown_function' => 'ismeretlen függvény',
+'math_lexing_error' => 'lexikai hiba',
+'math_syntax_error' => 'formai hiba',
+'math_image_error' => 'Sikertelen PNG-vé alakítás; ellenőrizd a latex, dvips, gs telepítését',
+'math_bad_tmpdir' => 'Nem írható vagy nem hozható létre a matematikai ideiglenes könyvtár',
+'math_bad_output' => 'Nem lehet létrehozni vagy írni a matematikai függvények kimeneti könyvtárába',
+'math_notexvc' => 'HIányzó texvc végrehajtható fájl; a beállítást lásd a math/README fájlban.',
+
# Patrolling
'markaspatrolleddiff' => 'Ellenőrzöttnek jelölöd',
'markaspatrolledtext' => 'Ellenőriztem',
'markedaspatrolled' => 'Ellenőrzöttnek jelölve',
-'markedaspatrolledtext' => 'A kiválasztott változatot ellenőrzöttnek jelölted.',
+'markedaspatrolledtext' => 'A(z) [[:$1]] lap kiválasztott változatát ellenőrzöttnek jelölted.',
'rcpatroldisabled' => 'A friss változtatások járőrözése kikapcsolva',
'rcpatroldisabledtext' => 'A friss változtatások ellenőrzése jelenleg nincs engedélyezve.',
'markedaspatrollederror' => 'Nem lehet ellenőrzöttnek jelölni',
@@ -2660,13 +2851,10 @@ $1',
'previousdiff' => '← Régebbi szerkesztés',
'nextdiff' => 'Újabb szerkesztés →',
-# Visual comparison
-'visual-comparison' => 'Vizuális összehasonlítás',
-
# Media information
'mediawarning' => "'''Figyelmeztetés''': Ez a fájltípus kártékony kódot tartalmazhat.
A futtatása során kárt tehet a számítógépedben.",
-'imagemaxsize' => 'A kép leírólapján mutatott legnagyobb képméret:',
+'imagemaxsize' => "A képek mérete, legfeljebb:<br />''(a leírólapokon)''",
'thumbsize' => 'Bélyegkép mérete:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|egy|$3}} oldal',
'file-info' => '(fájlméret: $1, MIME-típus: $2)',
@@ -2675,6 +2863,8 @@ A futtatása során kárt tehet a számítógépedben.",
'svg-long-desc' => '(SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3)',
'show-big-image' => 'A kép nagyfelbontású változata',
'show-big-image-thumb' => '<small>Az előnézet mérete: $1 × $2 képpont</small>',
+'file-info-gif-looped' => 'ismétlődik',
+'file-info-gif-frames' => '{{PLURAL:$1|egy|$1}} képkocka',
# Special:NewFiles
'newimages' => 'Új fájlok galériája',
@@ -2708,7 +2898,7 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Szélesség',
@@ -2835,14 +3025,14 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-unknowndate' => 'Ismeretlen dátum',
-'exif-orientation-1' => 'Normál', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Vízszintesen tükrözött', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Elforgatott 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Függőlegesen tükrözött', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Elforgatott 90° ÓE és függőlegesen tükrözött', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Elforgatott 90° ÓSZ', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Elforgatott 90° ÓSZ és függőlegesen tükrözött', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Elforgatott 90° ÓE', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normál',
+'exif-orientation-2' => 'Vízszintesen tükrözött',
+'exif-orientation-3' => 'Elforgatott 180°',
+'exif-orientation-4' => 'Függőlegesen tükrözött',
+'exif-orientation-5' => 'Elforgatott 90° ÓE és függőlegesen tükrözött',
+'exif-orientation-6' => 'Elforgatott 90° ÓSZ',
+'exif-orientation-7' => 'Elforgatott 90° ÓSZ és függőlegesen tükrözött',
+'exif-orientation-8' => 'Elforgatott 90° ÓE',
'exif-planarconfiguration-1' => 'Egyben',
'exif-planarconfiguration-2' => 'sík formátum',
@@ -2964,7 +3154,7 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-gpsmeasuremode-2' => '2-dimenziós méret',
'exif-gpsmeasuremode-3' => '3-dimenziós méret',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilométer óránként',
'exif-gpsspeed-m' => 'Márföld óránként',
'exif-gpsspeed-n' => 'Csomó',
@@ -2983,6 +3173,7 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'watchlistall2' => 'bármikor',
'namespacesall' => 'Összes',
'monthsall' => 'mind',
+'limitall' => 'mind',
# E-mail address confirmation
'confirmemail' => 'E-mail cím megerősítése',
@@ -3005,7 +3196,7 @@ A levelező üzenete: $1',
'confirmemail_error' => 'Hiba az e-mail címed megerősítése során.',
'confirmemail_subject' => '{{SITENAME}} e-mail cím megerősítés',
'confirmemail_body' => 'Valaki, valószínűleg te, ezzel az e-mail címmel regisztrált
-"$2" néven a {{SITENAME}} wikibe, a(z) $1 IP-címről.
+"$2" néven a(z) {{SITENAME}} wikin, a(z) $1 IP-címről.
Annak érdekében, hogy megerősítsd, ez az azonosító valóban hozzád tartozik,
és hogy aktiváld az e-mail címedet, nyisd meg az alábbi linket a böngésződben:
@@ -3112,7 +3303,7 @@ minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt ta
'duplicate-defaultsort' => 'Figyelem: a(z) „$2” rendezőkulcs felülírja a korábbit („$1”).',
# Special:Version
-'version' => 'Névjegy', # Not used as normal message but as header for the special page itself
+'version' => 'Névjegy',
'version-extensions' => 'Telepített kiterjesztések',
'version-specialpages' => 'Speciális lapok',
'version-parserhooks' => 'Értelmező hookok',
@@ -3126,7 +3317,7 @@ minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt ta
'version-skin-extension-functions' => 'Felület kiterjeszések függvényei',
'version-hook-name' => 'Hook neve',
'version-hook-subscribedby' => 'Használja',
-'version-version' => 'verzió:',
+'version-version' => '(verzió: $1)',
'version-license' => 'Licenc',
'version-software' => 'Telepített szoftverek',
'version-software-product' => 'Termék',
@@ -3206,4 +3397,15 @@ Add meg a fájl nevét „{{ns:file}}:” előtag nélkül.',
'dberr-outofdate' => 'Fontos tudnivaló, hogy az oldal tartalmáról készített indexeik elavultak lehetnek.',
'dberr-cachederror' => 'Lenn a kért oldal gyorsítótárazott változata látható, és lehet, hogy nem teljesen friss.',
+# HTML forms
+'htmlform-invalid-input' => 'Probléma van az általad megadott értékkel',
+'htmlform-select-badoption' => 'A megadott érték nem érvényes.',
+'htmlform-int-invalid' => 'A megadott érték nem szám.',
+'htmlform-float-invalid' => 'A megadott érték nem szám.',
+'htmlform-int-toolow' => 'A megadott érték a minimum, $1 alatt van',
+'htmlform-int-toohigh' => 'A megadott érték a maximum, $1 felett van',
+'htmlform-submit' => 'Elküldés',
+'htmlform-reset' => 'Változtatások visszavonása',
+'htmlform-selectorother-other' => 'egyéb',
+
);
diff --git a/languages/messages/MessagesHy.php b/languages/messages/MessagesHy.php
index fef41538..6f72b2ae 100644
--- a/languages/messages/MessagesHy.php
+++ b/languages/messages/MessagesHy.php
@@ -26,22 +26,22 @@ $fallback8bitEncoding = 'UTF-8';
$linkPrefixExtension = true;
$namespaceNames = array(
- NS_MEDIA => 'Մեդիա',
- NS_SPECIAL => 'Սպասարկող',
- NS_TALK => 'Քննարկում',
- NS_USER => 'Մասնակից',
- NS_USER_TALK => 'Մասնակցի_քննարկում',
- NS_PROJECT_TALK => '{{GRAMMAR:genitive|$1}}_քննարկում',
- NS_FILE => 'Պատկեր',
- NS_FILE_TALK => 'Պատկերի_քննարկում',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_քննարկում',
- NS_TEMPLATE => 'Կաղապար',
- NS_TEMPLATE_TALK => 'Կաղապարի_քննարկում',
- NS_HELP => 'Օգնություն',
- NS_HELP_TALK => 'Օգնության_քննարկում',
- NS_CATEGORY => 'Կատեգորիա',
- NS_CATEGORY_TALK => 'Կատեգորիայի_քննարկում',
+ NS_MEDIA => 'Մեդիա',
+ NS_SPECIAL => 'Սպասարկող',
+ NS_TALK => 'Քննարկում',
+ NS_USER => 'Մասնակից',
+ NS_USER_TALK => 'Մասնակցի_քննարկում',
+ NS_PROJECT_TALK => '{{GRAMMAR:genitive|$1}}_քննարկում',
+ NS_FILE => 'Պատկեր',
+ NS_FILE_TALK => 'Պատկերի_քննարկում',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_քննարկում',
+ NS_TEMPLATE => 'Կաղապար',
+ NS_TEMPLATE_TALK => 'Կաղապարի_քննարկում',
+ NS_HELP => 'Օգնություն',
+ NS_HELP_TALK => 'Օգնության_քննարկում',
+ NS_CATEGORY => 'Կատեգորիա',
+ NS_CATEGORY_TALK => 'Կատեգորիայի_քննարկում',
);
$namespaceAliases = array(
@@ -89,110 +89,109 @@ $bookstoreList = array(
);
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#REDIRECT', '#ՎԵՐԱՀՂՈՒՄ' ),
- 'notoc' => array( 0, '__NOTOC__', '__ԱՌԱՆՑ_ԲՈՎ__' ),
- 'nogallery' => array( 0, '__NOGALLERY__', '__ԱՌԱՆՑ_ՍՐԱՀԻ__' ),
- 'forcetoc' => array( 0, '__FORCETOC__', '__ՍՏԻՊԵԼ_ԲՈՎ__'),
- 'toc' => array( 0, '__TOC__' , '__ԲՈՎ__' ),
- 'noeditsection' => array( 0, '__NOEDITSECTION__', '__ԱՌԱՆՑ_ԲԱԺՆԻ_ԽՄԲԱԳՐՄԱՆ__' ),
- 'currentmonth' => array( 1, 'CURRENTMONTH', 'ԸՆԹԱՑԻՔ_ԱՄԻՍԸ' ),
- 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՈՒՆԸ' ),
- 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՈՒՆԸ_ՍԵՌ' ),
- 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՎԱՆ_ՀԱՊԱՎՈՒՄԸ' ),
- 'currentday' => array( 1, 'CURRENTDAY', 'ԸՆԹԱՑԻՔ_ՕՐԸ' ),
- 'currentday2' => array( 1, 'CURRENTDAY2', 'ԸՆԹԱՑԻՔ_ՕՐԸ_2' ),
- 'currentdayname' => array( 1, 'CURRENTDAYNAME', 'ԸՆԹԱՑԻՔ_ՕՐՎԱ_ԱՆՈՒՆԸ' ),
- 'currentyear' => array( 1, 'CURRENTYEAR', 'ԸՆԹԱՑԻՔ_ՏԱՐԻՆ' ),
- 'currenttime' => array( 1, 'CURRENTTIME', 'ԸՆԹԱՑԻՔ_ԺԱՄԱՆԱԿԸ' ),
- 'currenthour' => array( 1, 'CURRENTHOUR', 'ԸՆԹԱՑԻՔ_ԺԱՄԸ' ),
- 'localmonth' => array( 1, 'LOCALMONTH', 'ՏԵՂԱԿԱՆ_ԱՄԻՍԸ' ),
- 'localmonthname' => array( 1, 'LOCALMONTHNAME', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՈՒՆԸ' ),
- 'localmonthnamegen' => array( 1, 'LOCALMONTHNAMEGEN', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՈՒՆԸ_ՍԵՌ' ),
- 'localmonthabbrev' => array( 1, 'LOCALMONTHABBREV', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՎԱՆ_ՀԱՊԱՎՈՒՄԸ' ),
- 'localday' => array( 1, 'LOCALDAY', 'ՏԵՂԱԿԱՆ_ՕՐԸ' ),
- 'localday2' => array( 1, 'LOCALDAY2', 'ՏԵՂԱԿԱՆ_ՕՐԸ_2' ),
- 'localdayname' => array( 1, 'LOCALDAYNAME', 'ՏԵՂԱԿԱՆ_ՕՐՎԱ_ԱՆՈՒՆԸ' ),
- 'localyear' => array( 1, 'LOCALYEAR', 'ՏԵՂԱԿԱՆ_ՏԱՐԻՆ' ),
- 'localtime' => array( 1, 'LOCALTIME','ՏԵՂԱԿԱՆ_ԺԱՄԱՆԱԿԸ' ),
- 'localhour' => array( 1, 'LOCALHOUR','ՏԵՂԱԿԱՆ_ԺԱՄԸ' ),
- 'numberofpages' => array( 1, 'NUMBEROFPAGES','ԷՋԵՐԻ_ՔԱՆԱԿԸ' ),
- 'numberofarticles' => array( 1, 'NUMBEROFARTICLES','ՀՈԴՎԱԾՆԵՐԻ_ՔԱՆԱԿԸ' ),
- 'numberoffiles' => array( 1, 'NUMBEROFFILES','ՖԱՅԼԵՐԻ_ՔԱՆԱԿԸ' ),
- 'numberofusers' => array( 1, 'NUMBEROFUSERS','ՄԱՍՆԱԿԻՑՆԵՐԻ_ՔԱՆԱԿԸ' ),
- 'pagename' => array( 1, 'PAGENAME','ԷՋԻ_ԱՆՈՒՆԸ' ),
- 'pagenamee' => array( 1, 'PAGENAMEE','ԷՋԻ_ԱՆՈՒՆԸ_2' ),
- 'namespace' => array( 1, 'NAMESPACE','ԱՆՎԱՆԱՏԱՐԱԾՔ' ),
- 'namespacee' => array( 1, 'NAMESPACEE','ԱՆՎԱՆԱՏԱՐԱԾՔ_2' ),
- 'talkspace' => array( 1, 'TALKSPACE','ՔՆՆԱՐԿՄԱՆ_ՏԱՐԱԾՔԸ' ),
- 'talkspacee' => array( 1, 'TALKSPACEE','ՔՆՆԱՐԿՄԱՆ_ՏԱՐԱԾՔԸ_2' ),
- 'subjectspace' => array( 1, 'SUBJECTSPACE', 'ARTICLESPACE', 'ՀՈԴՎԱԾՆԵՐԻ_ՏԱՐԱԾՔԸ' ),
- 'subjectspacee' => array( 1, 'SUBJECTSPACEE', 'ARTICLESPACEE', 'ՀՈԴՎԱԾՆԵՐԻ_ՏԱՐԱԾՔԸ_2' ),
- 'fullpagename' => array( 1, 'FULLPAGENAME', 'ARTICLESPACE', 'ԷՋԻ_ԼՐԻՎ_ԱՆՎԱՆՈՒՄԸ' ),
- 'fullpagenamee' => array( 1, 'FULLPAGENAMEE', 'ԷՋԻ_ԼՐԻՎ_ԱՆՎԱՆՈՒՄԸ_2' ),
- 'subpagename' => array( 1, 'SUBPAGENAME', 'ԵՆԹԱԷՋԻ_ԱՆՎԱՆՈՒՄԸ' ),
- 'subpagenamee' => array( 1, 'SUBPAGENAMEE', 'ԵՆԹԱԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2' ),
- 'basepagename' => array( 1, 'BASEPAGENAME', 'ՀԻՄՆԱԿԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ' ),
- 'basepagenamee' => array( 1, 'BASEPAGENAMEE', 'ՀԻՄՆԱԿԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2' ),
- 'talkpagename' => array( 1, 'TALKPAGENAME', 'ՔՆՆԱՐԿՄԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ' ),
- 'talkpagenamee' => array( 1, 'TALKPAGENAMEE', 'ՔՆՆԱՐԿՄԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2' ),
- 'subjectpagename' => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ' ),
- 'subjectpagenamee' => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2' ),
- 'msg' => array( 0, 'MSG:', 'ՀՈՂՈՐԴ՝' ),
- 'msgnw' => array( 0, 'MSGNW:', 'ՀՈՂՈՐԴ_ԱՌԱՆՑ_ՎԻՔԻԻ՝' ),
- 'img_thumbnail' => array( 1, 'thumbnail', 'thumb', 'մինի' ),
- 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1', 'մինի=$1'),
- 'img_right' => array( 1, 'right', 'աջից' ),
- 'img_left' => array( 1, 'left', 'ձախից' ),
- 'img_none' => array( 1, 'none', 'առանց' ),
- 'img_width' => array( 1, '$1px', '$1փքս' ),
- 'img_center' => array( 1, 'center', 'centre', 'կենտրոն' ),
- 'img_framed' => array( 1, 'framed', 'enframed', 'frame', 'շրջափակել' ),
- 'img_page' => array( 1, 'page=$1', 'page $1', 'էջը=$1', 'էջ $1' ),
- 'int' => array( 0, 'INT:' , 'ՆԵՐՔ՝' ),
- 'sitename' => array( 1, 'SITENAME', 'ԿԱՅՔԻ_ԱՆՈՒՆԸ' ),
- 'ns' => array( 0, 'NS:', 'ԱՏ՝' ),
- 'localurl' => array( 0, 'LOCALURL:', 'ՏԵՂԱԿԱՆ_ՀԱՍՑԵՆ՝' ),
- 'localurle' => array( 0, 'LOCALURLE:', 'ՏԵՂԱԿԱՆ_ՀԱՍՑԵՆ_2՝' ),
- 'server' => array( 0, 'SERVER', 'ՍԵՐՎԵՐԸ' ),
- 'servername' => array( 0, 'SERVERNAME', 'ՍԵՐՎԵՐԻ_ԱՆՈՒՆԸ' ),
- 'scriptpath' => array( 0, 'SCRIPTPATH', 'ՍՔՐԻՊՏԻ_ՃԱՆԱՊԱՐՀԸ' ),
- 'grammar' => array( 0, 'GRAMMAR:' , 'ՀՈԼՈՎ՛' ),
- 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__ԱՌԱՆՑ_ՎԵՐՆԱԳՐԻ_ՓՈՓՈԽՄԱՆ__' ),
- 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__ԱՌԱՆՑ_ՊԱՐՈՒՆԱԿՈՒԹՅԱՆ_ՓՈՓՈԽՄԱՆ__' ),
- 'currentweek' => array( 1, 'CURRENTWEEK', 'ԸՆԹԱՑԻՔ_ՇԱԲԱԹԸ' ),
- 'currentdow' => array( 1, 'CURRENTDOW', 'ԸՆԹԱՑԻՔ_ՇԱԲԱԹՎԱ_ՕՐԸ' ),
- 'localweek' => array( 1, 'LOCALWEEK', 'ՏԵՂԱԿԱՆ_ՇԱԲԱԹՎԸ' ),
- 'localdow' => array( 1, 'LOCALDOW', 'ՏԵՂԱԿԱՆ_ՇԱԲԱԹՎԱ_ՕՐԸ' ),
- 'revisionid' => array( 1, 'REVISIONID', 'ՏԱՐԲԵՐԱԿԻ_ՀԱՄԱՐԸ' ),
- 'revisionday' => array( 1, 'REVISIONDAY', 'ՏԱՐԲԵՐԱԿԻ_ՕՐԸ' ),
- 'revisionday2' => array( 1, 'REVISIONDAY2', 'ՏԱՐԲԵՐԱԿԻ_ՕՐԸ_2' ),
- 'revisionmonth' => array( 1, 'REVISIONMONTH', 'ՏԱՐԲԵՐԱԿԻ_ԱՄԻՍԸ' ),
- 'revisionyear' => array( 1, 'REVISIONYEAR', 'ՏԱՐԲԵՐԱԿԻ_ՏԱՐԻՆ' ),
- 'plural' => array( 0, 'PLURAL:', 'ՀՈԳՆԱԿԻ՝' ),
- 'fullurl' => array( 0, 'FULLURL:', 'ԼՐԻՎ_ՀԱՍՑԵՆ՝' ),
- 'fullurle' => array( 0, 'FULLURLE:', 'ԼՐԻՎ_ՀԱՍՑԵՆ_2՝' ),
- 'lcfirst' => array( 0, 'LCFIRST:', 'ՓՈՔՐԱՏԱՌ_ՍԿԶԲՆԱՏԱՌ՝' ),
- 'ucfirst' => array( 0, 'UCFIRST:', 'ՄԵԾԱՏԱՌ_ՍԿԶԲՆԱՏԱՌ՝' ),
- 'lc' => array( 0, 'LC:', 'ՓՈՔՐԱՏԱՌ՝' ),
- 'uc' => array( 0, 'UC:', 'ՄԵԾԱՏԱՌ՝' ),
- 'displaytitle' => array( 1, 'DISPLAYTITLE', 'ՑՈՒՅՑ_ՏԱԼ_ՎԵՐՆԱԳԻՐԸ' ),
- 'rawsuffix' => array( 1, 'R', 'Չ' ),
- 'newsectionlink' => array( 1, '__NEWSECTIONLINK__', '__ՀՂՈՒՄ_ՆՈՐ_ԲԱԺՆԻ_ՎՐԱ__' ),
- 'currentversion' => array( 1, 'CURRENTVERSION', 'ԸՆԹԱՑԻՔ_ՏԱՐԲԵՐԱԿԸ' ),
- 'urlencode' => array( 0, 'URLENCODE:', 'ՄՇԱԿՎԱԾ_ՀԱՍՑԵ՛' ),
- 'currenttimestamp' => array( 1, 'CURRENTTIMESTAMP', 'ԸՆԹԱՑԻՔ_ԺԱՄԱՆԱԿԻ_ԴՐՈՇՄ' ),
- 'localtimestamp' => array( 1, 'LOCALTIMESTAMP', 'ՏԵՂԱԿԱՆ_ԺԱՄԱՆԱԿԻ_ԴՐՈՇՄ' ),
- 'directionmark' => array( 1, 'DIRECTIONMARK', 'DIRMARK', 'ՆԱՄԱԿԻ_ՈՒՂՂՈՒԹՅՈՒՆԸ' ),
- 'language' => array( 0, '#LANGUAGE:', '#ԼԵԶՈՒ՝' ),
- 'contentlanguage' => array( 1, 'CONTENTLANGUAGE', 'CONTENTLANG', 'ՊԱՐՈՒՆԱԿՈՒԹՅԱՆ_ԼԵԶՈՒՆ' ),
- 'pagesinnamespace' => array( 1, 'PAGESINNAMESPACE:', 'PAGESINNS:', 'ԷՋԵՐ_ԱՆՎԱՆԱՏԱՐԱԾՔՈՒՄ՝' ),
- 'numberofadmins' => array( 1, 'NUMBEROFADMINS', 'ԱԴՄԻՆՆԵՐԻ_ՔԱՆԱԿԸ' ),
- 'formatnum' => array( 0, 'FORMATNUM', 'ՁԵՎԵԼ_ԹԻՎԸ' ),
- 'padleft' => array( 0, 'PADLEFT', 'ԼՐԱՑՆԵԼ_ՁԱԽԻՑ' ),
- 'padright' => array( 0, 'PADRIGHT', 'ԼՐԱՑՆԵԼ_ԱՋԻՑ' ),
- 'special' => array( 0, 'special', 'սպասարկող' ),
- 'defaultsort' => array( 1, 'DEFAULTSORT:', 'ԼՌՈՒԹՅԱՄԲ_ԴԱՍԱՎՈՐՈՒՄ՝' ),
+ 'redirect' => array( '0', '#ՎԵՐԱՀՂՈՒՄ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__ԱՌԱՆՑ_ԲՈՎ__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__ԱՌԱՆՑ_ՍՐԱՀԻ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__ՍՏԻՊԵԼ_ԲՈՎ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ԲՈՎ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__ԱՌԱՆՑ_ԲԱԺՆԻ_ԽՄԲԱԳՐՄԱՆ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'ԸՆԹԱՑԻՔ_ԱՄԻՍԸ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՈՒՆԸ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՈՒՆԸ_ՍԵՌ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ԸՆԹԱՑԻՔ_ԱՄՍՎԱ_ԱՆՎԱՆ_ՀԱՊԱՎՈՒՄԸ', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'ԸՆԹԱՑԻՔ_ՕՐԸ', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'ԸՆԹԱՑԻՔ_ՕՐԸ_2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'ԸՆԹԱՑԻՔ_ՕՐՎԱ_ԱՆՈՒՆԸ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ԸՆԹԱՑԻՔ_ՏԱՐԻՆ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ԸՆԹԱՑԻՔ_ԺԱՄԱՆԱԿԸ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ԸՆԹԱՑԻՔ_ԺԱՄԸ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'ՏԵՂԱԿԱՆ_ԱՄԻՍԸ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՈՒՆԸ', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՈՒՆԸ_ՍԵՌ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ՏԵՂԱԿԱՆ_ԱՄՍՎԱ_ԱՆՎԱՆ_ՀԱՊԱՎՈՒՄԸ', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'ՏԵՂԱԿԱՆ_ՕՐԸ', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ՏԵՂԱԿԱՆ_ՕՐԸ_2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'ՏԵՂԱԿԱՆ_ՕՐՎԱ_ԱՆՈՒՆԸ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ՏԵՂԱԿԱՆ_ՏԱՐԻՆ', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'ՏԵՂԱԿԱՆ_ԺԱՄԱՆԱԿԸ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ՏԵՂԱԿԱՆ_ԺԱՄԸ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'ԷՋԵՐԻ_ՔԱՆԱԿԸ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ՀՈԴՎԱԾՆԵՐԻ_ՔԱՆԱԿԸ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ՖԱՅԼԵՐԻ_ՔԱՆԱԿԸ', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ՄԱՍՆԱԿԻՑՆԵՐԻ_ՔԱՆԱԿԸ', 'NUMBEROFUSERS' ),
+ 'pagename' => array( '1', 'ԷՋԻ_ԱՆՈՒՆԸ', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'ԷՋԻ_ԱՆՈՒՆԸ_2', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ԱՆՎԱՆԱՏԱՐԱԾՔ', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ԱՆՎԱՆԱՏԱՐԱԾՔ_2', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ՔՆՆԱՐԿՄԱՆ_ՏԱՐԱԾՔԸ', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ՔՆՆԱՐԿՄԱՆ_ՏԱՐԱԾՔԸ_2', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ՀՈԴՎԱԾՆԵՐԻ_ՏԱՐԱԾՔԸ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ՀՈԴՎԱԾՆԵՐԻ_ՏԱՐԱԾՔԸ_2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'ARTICLESPACE', 'ԷՋԻ_ԼՐԻՎ_ԱՆՎԱՆՈՒՄԸ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'ԷՋԻ_ԼՐԻՎ_ԱՆՎԱՆՈՒՄԸ_2', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'ԵՆԹԱԷՋԻ_ԱՆՎԱՆՈՒՄԸ', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'ԵՆԹԱԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'ՀԻՄՆԱԿԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'ՀԻՄՆԱԿԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'ՔՆՆԱՐԿՄԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'ՔՆՆԱՐԿՄԱՆ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'ՀՈՂՈՐԴ՝', 'MSG:' ),
+ 'msgnw' => array( '0', 'ՀՈՂՈՐԴ_ԱՌԱՆՑ_ՎԻՔԻԻ՝', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'մինի', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'մինի=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'աջից', 'right' ),
+ 'img_left' => array( '1', 'ձախից', 'left' ),
+ 'img_none' => array( '1', 'առանց', 'none' ),
+ 'img_width' => array( '1', '$1փքս', '$1px' ),
+ 'img_center' => array( '1', 'կենտրոն', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'շրջափակել', 'framed', 'enframed', 'frame' ),
+ 'img_page' => array( '1', 'էջը=$1', 'էջ $1', 'page=$1', 'page $1' ),
+ 'int' => array( '0', 'ՆԵՐՔ՝', 'INT:' ),
+ 'sitename' => array( '1', 'ԿԱՅՔԻ_ԱՆՈՒՆԸ', 'SITENAME' ),
+ 'ns' => array( '0', 'ԱՏ՝', 'NS:' ),
+ 'localurl' => array( '0', 'ՏԵՂԱԿԱՆ_ՀԱՍՑԵՆ՝', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ՏԵՂԱԿԱՆ_ՀԱՍՑԵՆ_2՝', 'LOCALURLE:' ),
+ 'server' => array( '0', 'ՍԵՐՎԵՐԸ', 'SERVER' ),
+ 'servername' => array( '0', 'ՍԵՐՎԵՐԻ_ԱՆՈՒՆԸ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'ՍՔՐԻՊՏԻ_ՃԱՆԱՊԱՐՀԸ', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'ՀՈԼՈՎ՛', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__ԱՌԱՆՑ_ՎԵՐՆԱԳՐԻ_ՓՈՓՈԽՄԱՆ__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__ԱՌԱՆՑ_ՊԱՐՈՒՆԱԿՈՒԹՅԱՆ_ՓՈՓՈԽՄԱՆ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'ԸՆԹԱՑԻՔ_ՇԱԲԱԹԸ', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'ԸՆԹԱՑԻՔ_ՇԱԲԱԹՎԱ_ՕՐԸ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'ՏԵՂԱԿԱՆ_ՇԱԲԱԹՎԸ', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'ՏԵՂԱԿԱՆ_ՇԱԲԱԹՎԱ_ՕՐԸ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'ՏԱՐԲԵՐԱԿԻ_ՀԱՄԱՐԸ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'ՏԱՐԲԵՐԱԿԻ_ՕՐԸ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'ՏԱՐԲԵՐԱԿԻ_ՕՐԸ_2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'ՏԱՐԲԵՐԱԿԻ_ԱՄԻՍԸ', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ՏԱՐԲԵՐԱԿԻ_ՏԱՐԻՆ', 'REVISIONYEAR' ),
+ 'plural' => array( '0', 'ՀՈԳՆԱԿԻ՝', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'ԼՐԻՎ_ՀԱՍՑԵՆ՝', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'ԼՐԻՎ_ՀԱՍՑԵՆ_2՝', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'ՓՈՔՐԱՏԱՌ_ՍԿԶԲՆԱՏԱՌ՝', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'ՄԵԾԱՏԱՌ_ՍԿԶԲՆԱՏԱՌ՝', 'UCFIRST:' ),
+ 'lc' => array( '0', 'ՓՈՔՐԱՏԱՌ՝', 'LC:' ),
+ 'uc' => array( '0', 'ՄԵԾԱՏԱՌ՝', 'UC:' ),
+ 'displaytitle' => array( '1', 'ՑՈՒՅՑ_ՏԱԼ_ՎԵՐՆԱԳԻՐԸ', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'Չ', 'R' ),
+ 'newsectionlink' => array( '1', '__ՀՂՈՒՄ_ՆՈՐ_ԲԱԺՆԻ_ՎՐԱ__', '__NEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'ԸՆԹԱՑԻՔ_ՏԱՐԲԵՐԱԿԸ', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'ՄՇԱԿՎԱԾ_ՀԱՍՑԵ՛', 'URLENCODE:' ),
+ 'currenttimestamp' => array( '1', 'ԸՆԹԱՑԻՔ_ԺԱՄԱՆԱԿԻ_ԴՐՈՇՄ', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'ՏԵՂԱԿԱՆ_ԺԱՄԱՆԱԿԻ_ԴՐՈՇՄ', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'ՆԱՄԱԿԻ_ՈՒՂՂՈՒԹՅՈՒՆԸ', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#ԼԵԶՈՒ՝', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'ՊԱՐՈՒՆԱԿՈՒԹՅԱՆ_ԼԵԶՈՒՆ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'ԷՋԵՐ_ԱՆՎԱՆԱՏԱՐԱԾՔՈՒՄ՝', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'ԱԴՄԻՆՆԵՐԻ_ՔԱՆԱԿԸ', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'ՁԵՎԵԼ_ԹԻՎԸ', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'ԼՐԱՑՆԵԼ_ՁԱԽԻՑ', 'PADLEFT' ),
+ 'padright' => array( '0', 'ԼՐԱՑՆԵԼ_ԱՋԻՑ', 'PADRIGHT' ),
+ 'special' => array( '0', 'սպասարկող', 'special' ),
+ 'defaultsort' => array( '1', 'ԼՌՈՒԹՅԱՄԲ_ԴԱՍԱՎՈՐՈՒՄ՝', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
);
$specialPageAliases = array(
@@ -214,14 +213,15 @@ $specialPageAliases = array(
'Uncategorizedpages' => array( 'Չդասակարգվածէջերը' ),
'Uncategorizedcategories' => array( 'Չդասակարգվածկատեգորիաները' ),
'Uncategorizedimages' => array( 'Չդասակարգվածպատկերները' ),
+ 'Uncategorizedtemplates' => array( 'Չդասակարգվածկաղապարները' ),
'Unusedcategories' => array( 'Չօգտագործվածկատեգորիաները' ),
'Unusedimages' => array( 'Չօգտագործվածպատկերները' ),
'Wantedpages' => array( 'Անհրաժեշտէջերը' ),
'Wantedcategories' => array( 'Անհրաժեշտկատեգորիաները' ),
'Mostlinked' => array( 'Ամենաշատհղումներով' ),
'Mostlinkedcategories' => array( 'Շատհղվողկատեգորիաները' ),
- 'Mostcategories' => array( 'Ամենաշատկատեգորիաներով' ),
'Mostimages' => array( 'Ամենաշատօգտագործվողնկարները' ),
+ 'Mostcategories' => array( 'Ամենաշատկատեգորիաներով' ),
'Mostrevisions' => array( 'Ամենաշատփոփոխվող' ),
'Shortpages' => array( 'Կարճէջերը' ),
'Longpages' => array( 'Երկարէջերը' ),
@@ -229,7 +229,7 @@ $specialPageAliases = array(
'Ancientpages' => array( 'Ամենահինէջերը' ),
'Deadendpages' => array( 'Հղումչպարունակողէջերը' ),
'Allpages' => array( 'Բոլորէջերը' ),
- 'Prefixindex' => array( 'Որոնումնախածանցով' ) ,
+ 'Prefixindex' => array( 'Որոնումնախածանցով' ),
'Ipblocklist' => array( 'ԱրգելափակվածIPները' ),
'Specialpages' => array( 'Սպասարկողէջերը' ),
'Contributions' => array( 'Ներդրումները' ),
@@ -251,9 +251,9 @@ $specialPageAliases = array(
'Unlockdb' => array( 'Բացանելտհ' ),
'Userrights' => array( 'Մասնակցիիրավունքները' ),
'MIMEsearch' => array( 'MIMEՈրոնում' ),
+ 'FileDuplicateSearch' => array( 'Կրկնօրինակֆայլերիորոնում' ),
'Unwatchedpages' => array( 'Չհսկվողէջերը' ),
'Listredirects' => array( 'Ցույցտալվերահղումները' ),
- 'Listinterwikis' => array( 'Ցույցտալինտերվիքիները' ),
'Revisiondelete' => array( 'Տարբերակիհեռացում' ),
'Unusedtemplates' => array( 'Չօգտագործվողկաղապարները' ),
'Randomredirect' => array( 'Պատահականվերահղում' ),
@@ -299,6 +299,7 @@ $messages = array(
'tog-enotifminoredits' => 'էլ-փոստով տեղեկացնել էջերի նաև չնչին խմբագրումների մասին',
'tog-enotifrevealaddr' => 'Ցույց տալ իմ էլ-փոստի հասցեն ծանուցման նամակներում',
'tog-shownumberswatching' => 'Ցույց տալ էջ հսկող մասնակիցների թիվը',
+'tog-oldsig' => 'Առկա ստորագրության նախադիտում.',
'tog-fancysig' => 'Ստորագրությունը վիքիտեքստի տեսքով (առանց ավտոմատ հղման)',
'tog-externaleditor' => 'Օգտագործել արտաքին խմբագրիչ ըստ լռության (պահանջում է հատուկ նախընտրություններ ձեր համակարգչում)',
'tog-externaldiff' => 'Օգտագործել տարբերակների համեմատման արտաքին ծրագիր ըստ լռության (պահանջում է հատուկ նախընտրություններ ձեր համակարգչում)',
@@ -321,6 +322,13 @@ $messages = array(
'underline-never' => 'Երբեք',
'underline-default' => 'Օգտագործել բրաուզերի նախընտրությունները',
+# Font style option in Special:Preferences
+'editfont-style' => 'Խմբագրման շրջանի տառատեսակի ձևը.',
+'editfont-default' => 'Բրաուզերի լռելայն տառատեսակը',
+'editfont-monospace' => 'Միալայն տառատեսակ',
+'editfont-sansserif' => 'Սանս-սերիֆ տառատեսակ',
+'editfont-serif' => 'Սերիֆ տառատեսակ',
+
# Dates
'sunday' => 'Կիրակի',
'monday' => 'Երկուշաբթի',
@@ -380,7 +388,7 @@ $messages = array(
'category-media-header' => '«$1» կատեգորիայի մեդիան',
'category-empty' => "''Այս կատեգորիան ներկայումս դատարկ է։''",
'hidden-categories' => '{{PLURAL:$1|Թաքցված կատեգորիա|Թաքցված կատեգորիաներ}}',
-'hidden-category-category' => 'Թաքցված կատեգորիաներ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Թաքցված կատեգորիաներ',
'category-subcat-count' => '{{PLURAL:$2|Այս կատեգորիան ունի միայն հետևյալ ենթակատեգորիան։|Ստորև {{PLURAL:$1|բերված է այս կատեգորիայի $1 ենթակատեգորիան|բերված է այս կատեգորիայի $1 ենթակատեգորիա}}՝ $2-ից։}}',
'category-subcat-count-limited' => 'Այս կատեգորիան ունի հետևյալ {{PLURAL:$1|ենթակատեգորիան|$1 ենթակատեգորիաները}}։',
'category-article-count' => '{{PLURAL:$2|Այս կատեգորիան ունի միայն հետևյալ էջը։|Ստորև բերված է այս կատեգորիայի {{PLURAL:$1|էջ|$1 էջ}}՝ $2-ից։}}',
@@ -388,6 +396,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Այս կատեգորիան պարունակում է միայն հետևյալ ֆայլը։|Ստորև {{PLURAL:$1|բերված է այս կատեգորիայի $1 ֆայլը|բերված է այս կատեգորիայի $1 ֆայլ}}՝ $2-ից։}}',
'category-file-count-limited' => 'Այս կատեգորիան պարունակում է հետևյալ {{PLURAL:$1|ֆայլը|$1 ֆայլերը}}։',
'listingcontinuesabbrev' => 'շարունակ.',
+'index-category' => 'Ինդեքսավորված էջեր',
+'noindex-category' => 'Ինդեքսավորված էջեր չկան',
'mainpagetext' => "'''«MediaWiki» ծրագիրը հաջողությամբ տեղադրվեց։'''",
'mainpagedocfooter' => "Այցելեք [http://meta.wikimedia.org/wiki/Help:Contents User's Guide]՝ վիքի ծրագրային ապահովման օգտագործման մասին տեղեկությունների համար։
@@ -398,10 +408,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Էությունը',
-'article' => 'Հոդված',
-'newwindow' => '(բացվելու է նոր պատուհանի մեջ)',
-'cancel' => 'Բեկանել',
+'about' => 'Էությունը',
+'article' => 'Հոդված',
+'newwindow' => '(բացվելու է նոր պատուհանի մեջ)',
+'cancel' => 'Բեկանել',
+'moredotdotdot' => 'Ավելին...',
+'mypage' => 'Իմ էջը',
+'mytalk' => 'Իմ քննարկումները',
+'anontalk' => 'Քննարկում այս IP-հասցեի համար',
+'navigation' => 'Շրջել կայքում',
+'and' => '&#32;և',
+
+# Cologne Blue skin
'qbfind' => 'Գտնել',
'qbbrowse' => 'Թերթել',
'qbedit' => 'Խմբագրել',
@@ -409,15 +427,35 @@ $messages = array(
'qbpageinfo' => 'Հոդվածի մասին',
'qbmyoptions' => 'Իմ էջերը',
'qbspecialpages' => 'Սպասարկող էջեր',
-'moredotdotdot' => 'Ավելին...',
-'mypage' => 'Իմ էջը',
-'mytalk' => 'Իմ քննարկումները',
-'anontalk' => 'Քննարկում այս IP-հասցեի համար',
-'navigation' => 'Շրջել կայքում',
-'and' => '&#32;և',
-
-# Metadata in edit box
-'metadata_help' => 'Մետատվյալներ․',
+'faq' => 'ՀՏՀ',
+'faqpage' => 'Project:ՀՏՀ',
+
+# Vector skin
+'vector-action-addsection' => 'Ավելացնել քննարկում',
+'vector-action-delete' => 'Ջնջել',
+'vector-action-move' => 'Տեղափոխել',
+'vector-action-protect' => 'Պաշտպանել',
+'vector-action-undelete' => 'Վերականգնել',
+'vector-action-unprotect' => 'Հանել պաշտպանումից',
+'vector-namespace-category' => 'Կատեգորիա',
+'vector-namespace-help' => 'Օգնության էջ',
+'vector-namespace-image' => 'Ֆայլ',
+'vector-namespace-main' => 'Էջ',
+'vector-namespace-media' => 'Մեդիաայի էջ',
+'vector-namespace-mediawiki' => 'Ուղերձ',
+'vector-namespace-project' => 'Նախագծի էջ',
+'vector-namespace-special' => 'Սպասարկող էջ',
+'vector-namespace-talk' => 'Քննարկում',
+'vector-namespace-template' => 'Կաղապար',
+'vector-namespace-user' => 'Մասնակցի էջ',
+'vector-view-create' => 'Ստեղծել',
+'vector-view-edit' => 'Խմբագրել',
+'vector-view-history' => 'Դիտել պատմությունը',
+'vector-view-view' => 'Կարդալ',
+'vector-view-viewsource' => 'Դիտել ելատեքստը',
+'actions' => 'Գործողություններ',
+'namespaces' => 'Անվանատարածքներ',
+'variants' => 'Տարբերակներ',
'errorpagetitle' => 'Սխալ',
'returnto' => 'Վերադառնալ $1։',
@@ -467,18 +505,22 @@ $messages = array(
'otherlanguages' => 'Այլ լեզուներով',
'redirectedfrom' => '(Վերահղված է $1-ից)',
'redirectpagesub' => 'Վերահղման էջ',
-'lastmodifiedat' => 'Այս էջը վերջին անգամ փոփոխվել է $2, $1։', # $1 date, $2 time
+'lastmodifiedat' => 'Այս էջը վերջին անգամ փոփոխվել է $2, $1։',
'viewcount' => 'Այս էջին դիմել են {{PLURAL:$1|մեկ անգամ|$1 անգամ}}։',
'protectedpage' => 'Պաշտպանված էջ',
'jumpto' => 'Անցնել՝',
'jumptonavigation' => 'նավարկություն',
'jumptosearch' => 'որոնում',
+'view-pool-error' => 'Ներեցեք՝ սերվերները գերբեռնված են այս պահին։
+Չափից շատ օգտվողներ փորձում են դիտել այս էջը։
+Խնդրում ենք սպասել որոշ ժամանակ էջը դիտելու կրկին հայցում անելուց առաջ։
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} մասին',
'aboutpage' => 'Project:Էությունը',
'copyright' => 'Կայքի բովանդակությունը գտնվում է «$1» լիցենզիայի տակ։',
-'copyrightpagename' => '{{SITENAME}} հեղինակային իրավունքները',
'copyrightpage' => '{{ns:project}}:Հեղինակային իրավունքներ',
'currentevents' => 'Ընթացիկ իրադարձություններ',
'currentevents-url' => 'Project:Ընթացիկ իրադարձություններ',
@@ -486,8 +528,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ազատում պատասխանատվությունից',
'edithelp' => 'Խմբագրման ուղեցույց',
'edithelppage' => 'Help:Խմբագրում',
-'faq' => 'ՀՏՀ',
-'faqpage' => 'Project:ՀՏՀ',
'helppage' => 'Help:Գլխացանկ',
'mainpage' => 'Գլխավոր Էջ',
'mainpage-description' => 'Գլխավոր Էջ',
@@ -568,10 +608,6 @@ $messages = array(
«$1»
հետևյալ ֆունկցիայի մարմնից <tt>«$2»</tt>։
Տվյալների բազայի վերադարձրած սխալն է. <tt>«$3: $4»</tt>։',
-'noconnect' => 'Ներեցե՜ք։ Այս վիքիի տեխնիկական դժվարությունների պատճառով անհնար է կապվել տվյալների բազայի սերվերի հետ։<br />
-$1',
-'nodb' => 'Չհաջողվեց ընտրել $1 տվյալների բազան',
-'cachederror' => 'Ստորև բերված է հարցված էջի պահեստավորված պատճեն, որը կարող է հնացած լինել։',
'laggedslavemode' => 'Զգուշացում. էջը կարող է չպարունակել վերջին փոփոխությունները։',
'readonly' => 'Տվյալների բազան կողպված է',
'enterlockreason' => 'Նշեք կողպման պատճառը և մոտավոր ժամկետը',
@@ -590,6 +626,7 @@ $1',
'readonly_lag' => 'Տվյալների բազան ավտոմատիկ կողպվել է ժամանակավորապես՝ մինչև ՏԲ-ի երկրորդական սերվերը չհամաժամանակեցվի առաջնայինի հետ։',
'internalerror' => 'Ներքին սխալ',
'internalerror_info' => 'Ներքին սխալ. $1',
+'fileappenderror' => 'Չհաջողվեց ավելացնել «$1» «$2»-ին։',
'filecopyerror' => 'Չհաջողվեց պատճենել «$1» ֆայլը «$2» ֆայլի մեջ։',
'filerenameerror' => 'Չհաջողվեց «$1» ֆայլը վերանվանել «$2»։',
'filedeleteerror' => 'Չհաջողվեց ջնջել «$1» ֆայլը։',
@@ -599,7 +636,8 @@ $1',
'unexpected' => 'Անսպասելի արժեք. «$1»=«$2»։',
'formerror' => 'Սխալ. չհաջողվեց փոխանցել տվյալները',
'badarticleerror' => 'Տվյալ գործողությունը չի կարող կատարվել այս էջում։',
-'cannotdelete' => 'Չհաջողվեց ջնջել նշված էջը կամ ֆայլը։ (Հնարավոր է այն արդեն ջնջված է այլ մասնակցի կողմից։)',
+'cannotdelete' => 'Չհաջողվեց ջնջել «$1» էջը կամ ֆայլը։
+Հավանաբար այն արդեն ջնջվել է մեկ այլ մասնակցի կողմից։',
'badtitle' => 'Անընդունելի անվանում',
'badtitletext' => 'Հարցված էջի անվանումը անընդունելի է, դատարկ է կամ սխալ միջ-լեզվական կամ ինտերվիքի անվանում է։ Հնարավոր է, որ այն պարունակում է անթույլատրելի սիմվոլներ։',
'perfcached' => 'Հետևյալ տվյալները վերցված են քեշից և հնարավոր է չարտացոլեն վերջին փոփոխությունները։',
@@ -632,14 +670,12 @@ $2',
'virus-unknownscanner' => 'անծանոթ հակավիրուս.',
# Login and logout pages
-'logouttitle' => 'Մասնակցի ելք',
'logouttext' => "'''Դուք դուրս եկաք համակարգից։'''
Դուք կարող եք շարունակել օգտագործել {{SITENAME}} կայքը անանուն, կամ [[Special:UserLogin|կրկին մուտք գործել համակարգ]] նույն կամ մեկ այլ մասնակցի անվամբ։ Ի նկատի ունեցեք, որ որոշ էջեր կարող են ցուցադրվել այնպես՝ ինչպես եթե դեռ համակարգում լինեիք մինչև որ չջնջեք ձեր բրաուզերի քէշը։",
'welcomecreation' => '== Բարի՛ գալուստ, $1 ==
Ձեր հաշիվը ստեղծված է։
Չմոռանաք անձնավորել ձեր [[Special:Preferences|նախընտրությունները]]։',
-'loginpagetitle' => 'Մասնակցի գրանցում',
'yourname' => 'Մասնակցի անուն.',
'yourpassword' => 'Գաղտնաբառ.',
'yourpasswordagain' => 'Կրկնեք գաղտնաբառը.',
@@ -650,6 +686,7 @@ $2',
'nav-login-createaccount' => 'Մտնել / Գրանցվել',
'loginprompt' => '{{SITENAME}} մուտք գործելու համար հարկավոր է քուքիները թույլատրել։',
'userlogin' => 'Մտնել / Գրանցվել',
+'userloginnocreate' => 'Մտնել',
'logout' => 'Ելնել',
'userlogout' => 'Ելնել',
'notloggedin' => 'Դուք չեք մտել համակարգ',
@@ -661,28 +698,8 @@ $2',
'createaccountmail' => 'էլ-փոստով',
'badretype' => 'Ձեր մուտքագրած գաղտնաբառերը չեն համընկնում։',
'userexists' => 'Այս մասնակցի անունը արդեն զբաղված է։ Խնդրում ենք ընտրել մեկ այլ անուն։',
-'youremail' => 'Էլեկտրոնային փոստ.',
-'username' => 'Մասնակցի անուն.',
-'uid' => 'Մասնակցի իդենտիֆիկատոր.',
-'prefs-memberingroups' => 'Անդամակցության {{PLURAL:$1|խումբ|խմբեր}}.',
-'yourrealname' => 'Ձեր իրական անունը.',
-'yourlanguage' => 'Ինտերֆեյսի լեզուն.',
-'yourvariant' => 'Լեզվական տարբերակ',
-'yournick' => 'Ստորագրություն.',
-'badsig' => 'Սխալ ստորագրություն. ստուգեք HTML-թեգերը։',
-'badsiglength' => 'Ստորագրությունը շատ երկար է։
-Այն պետք է լինի {{PLURAL:$1|սիմվոլից|սիմվոլից}} ոչ ավել։',
-'yourgender' => 'Սեռ․',
-'gender-unknown' => 'Չնշված',
-'gender-male' => 'Արական',
-'gender-female' => 'Իգական',
-'prefs-help-gender' => 'Ոչ պարտադիր դաշտ․ ծրագիրը օգտագործում է այս տվյալը մասնակցին ճիշտ դիմելու համար։
-Այս տեղեկությունը բոլորին տեսանլի է լինելու։',
-'email' => 'Էլ-փոստ',
-'prefs-help-realname' => 'Իրական անունը պարտադիր չէ, սակայն եթե դուք նշեք դա, ապա այն կօգտագործվի ձեր փոփոխությունների իրական անվանը վերագրման համար։',
'loginerror' => 'Մասնակցի մուտքի սխալ',
-'prefs-help-email' => 'Էլեկտրոնային փոստի մուտքագրումը պարտադիր չէ, սակայն սա թույլ կտա մյուս մասնակիցներին կապնվել ձեզ հետ ձեր մասնակցի կամ մասնակցի քննարկման էջի միջոցով՝ առանց ձեր անձի կամ ձեր էլեկտրոնային հասցեի բացահայտման։',
-'prefs-help-email-required' => 'Էլ-փոստի հասցեն նշելը պարտադիր է։',
+'createaccounterror' => 'Չհաջողվեց ստեղծել մասնակցային հաշիվ. $1',
'nocookiesnew' => 'Մասնակցային հաշիվը ստեղծված է, սակայն մուտքը համակարգ չհաջողվեց։ {{SITENAME}} կայքը օգտագործում է «քուքիներ» մասնակիցների վավերացման համար։ Ձեր մոտ «քուքիները» արգելված են։ Խնդրում ենք թույլատրել սրանք, ապա մտնել համակարգ ձեր նոր մասնակցի անունով և գաղտնաբառով։',
'nocookieslogin' => '{{SITENAME}} կայքը օգտագործում է «քուքիներ» մասնակիցների վավերացման համար։ Ձեր մոտ «քուքիները» արգելված են։ Խնդրում ենք թույլատրել սրանք և փորձել կրկին։',
'noname' => 'Դուք չեք նշել թույլատրելի մասնակցային անուն։',
@@ -693,15 +710,18 @@ $2',
Ստուգեք ձեր ուղղագրությունը կամ [[Special:UserLogin/signup|ստեղծեք նոր մասնակցի հաշիվ]]։',
'nosuchusershort' => '<nowiki>$1</nowiki> անունով մասնակից գոյություն չունի։ Ստուգեք ձեր ուղղագրությունը։',
'nouserspecified' => 'Հարկավոր է նշել մասնակցային անուն։',
+'login-userblocked' => 'Այս մասնակիցը արգելափակված է: Մուտքը արգելված է:',
'wrongpassword' => 'Մուտքագրված գաղտնաբառը սխալ էր։ Խնդրում ենք կրկին փորձել։',
'wrongpasswordempty' => 'Մուտքագրված գաղտնաբառը դատարկ էր։ Խնդրում ենք կրկին փորձել։',
-'passwordtooshort' => 'Մուտքագրված գաղտնաբառը անթույլատրելի է կամ շատ կարճ։ Այն պետք է պարունակի առնվազն $1 սիմվոլ և տարբերվի մասնակցի անունից։',
+'passwordtooshort' => 'Գաղտնաբառը պետք է պարունակի առնվազն {{PLURAL:$1|1 սիմվոլ|$1 սիմվոլ}}։',
+'password-name-match' => 'Գաղտնաբառը պետք է տարբեր լինել ձեր մասնակցի անունից։',
'mailmypassword' => 'Ուղարկել նոր գաղտնաբառ էլ–փոստով',
'passwordremindertitle' => 'Նոր ժամանակավոր գաղտնաբառ {{grammar:genitive|{{SITENAME}}}} համար',
'passwordremindertext' => 'Ինչ-որ մեկը (հավանաբար դուք՝ $1 IP-հասցեից) խնդրել է նոր գաղտնաբառ {{grammar:genitive|{{SITENAME}}}} ($4)։ «$2» մասնակցի ժամանակավոր գաղտնաբառն է՝ <code>$3</code>։ Եթե սա իսկապես ձեր մտադրություններ, ապա ձեզ հարկավոր է մտնել համակարգ և փոխել գաղտնաբառը։ Ձեր ժամանակավոր գաղտնաբառը գործելու է {{PLURAL:$5|օր|$5 օր}}։
Եթե դուք չեք արել այսպիսի հայցում կամ արդեն հիշել եք ձեր գաղտնաբառը և մտադրություն չունեք այն փոխել, ապա կարող եք անտեսել այս ուղերձը և շարունակել օգտվել ձեր հին գաղտնաբառից։',
'noemail' => '«$1» մասնակցի համար էլ-փոստի հասցե չի նշվել։',
+'noemailcreate' => 'Պահանջվում է տրամադրել գործող էլ-հասցե',
'passwordsent' => 'Նոր գաղտնաբառ է ուղարկվել $1 մասնակցի համար նշված էլ-փոստի հասցեին։
Խնդրում ենք կրկին ներկայանալ համակարգին այն ստանալուց հետո։',
@@ -723,6 +743,7 @@ $2',
'createaccount-text' => 'Ինչ-որ մեկը ստեղծել է «$2» անվանմամբ մասնակցային հաշիվ «$3» գաղտնաբառով {{SITENAME}} ($4) նախագծում՝ նշելով ձեր էլ-հասցեն։ Ձեզ անհրաժեշտ է մտնել համակարգ և փոխել գաղտնաբառը։
Կարող եք անտեսել այս հաղորդագրությունը, եթե հաշիվը ստեղծվել է սխալմամբ։',
+'usernamehasherror' => 'Մասնակցի անունը չի կարող պարունակել «#» նիշը։',
'login-throttled' => 'Դուք կատարել եք չափից շատ մուտքի փորձ։
Խնդրում ենք սպասել որոշ ժամանակ կրկին փորձելուց առաջ։',
'loginlanguagelabel' => 'Լեզու. $1',
@@ -737,7 +758,6 @@ $2',
'retypenew' => 'Հաստատեք նոր գաղտնաբառը.',
'resetpass_submit' => 'Հաստատել գաղտնաբառը և մտնել համակարգ',
'resetpass_success' => 'Ձեր գաղտնաբառը փոխված է։ Մուտք համակարգ…',
-'resetpass_bad_temporary' => 'Ժամանակավոր գաղտնաբառը սխալ է։ Հնարավոր է դուք արդեն փոխել եք գաղտնաբառը կամ նորն եք հայցել։',
'resetpass_forbidden' => 'Գաղտնաբառը չի կարող փոխվել',
'resetpass-no-info' => 'Այս էջին ուղիղ դիմելու համար անհրաժեշտ է մտնել համակարգ։',
'resetpass-submit-loggedin' => 'Փոխել գաղտնաբառը',
@@ -816,7 +836,6 @@ $2',
'blockededitsource' => "«'''$1'''» էջի '''ձեր խմբագրումները''' հետևյալն են.",
'whitelistedittitle' => 'Խմբագրման համար հարկավոր է մտնել համակարգ',
'whitelistedittext' => 'Անհրաժեշտ է $1 էջերը խմբագրելու համար։',
-'confirmedittitle' => 'Խբագրելու համար անհրաժեշտ է էլ-հասցեի վավերացում',
'confirmedittext' => 'Էջերի խմբագրումից առաջ անհրաժեշտ է վավերացնել էլ-հասցեն։
Խնդրում ենք նշել և վավերացնել ձեր էլ-փոստի հասցեն ձեր [[Special:Preferences|նախընտրությունների]] մեջ։',
'nosuchsectiontitle' => 'Այսպիսի բաժին գոյություն չունի',
@@ -836,14 +855,18 @@ $2',
Եթե դուք անանուն մասնակից եք, բայց կարծում եք, որ ուրիշներին վերաբերող դիտողությունները արվում են ձեր հասցեով, ապա խնդրում ենք պարզապես [[Special:UserLogin/signup|գրանցվել]] կամ [[Special:UserLogin|մտնել համակարգ]], որպեսզի հետագայում ձեզ չշփոթեն այլ անանուն մասնակիցների հետ։''",
'noarticletext' => 'Ներկայումս այս էջում որևէ տեքստ չկա։
Դուք կարող եք [[Special:Search/{{PAGENAME}}|որոնել այս անվանումը]] այլ էջերում, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} որոնել համապատասխան տեղեկամատյանները] կամ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ստեղծել նոր էջ այս անվանմամբ]։',
+'noarticletext-nopermission' => 'Ներկայումս այս էջում որևէ տեքստ չկա։
+Դուք կարող եք [[Special:Search/{{PAGENAME}}|որոնել այս անվանունը]] այլ էջերում կամ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} որոնել այն տեղեկամատյաններում]</span>.',
'userpage-userdoesnotexist' => '«$1» անվանմամբ մասնակից գոյություն չունի։
Խնդրում ենք հավաստիանալ նրանում, թե արդյոք ուզում եք ստեղծել/խմբագրել այս էջը։',
+'userpage-userdoesnotexist-view' => '«$1» անվանմամբ գրանցված մասնակից չկա։',
'clearyourcache' => "'''Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր բրաուզերի քեշը. '''
'''Mozilla / Firefox / Safari'''՝ ''Ctrl+Shift+R'' (''Cmd+Shift+R'' Mac OS X-ում)
'''Konqueror'''՝ ''F5''
'''Opera'''՝ ''Tools→Preferences'' ընտրացանկից։
'''Internet Explorer'''՝ ''Ctrl+F5''",
-'usercssjsyoucanpreview' => "'''Հուշում.''' Էջը հիշելուց առաջ օգտվեք նախադիտման կոճակից՝ ձեր նոր CSS/JS-ֆայլը ստուգելու համար։",
+'usercssyoucanpreview' => "'''Հուշում.''' Էջը հիշելուց առաջ օգտվեք նախադիտման կոճակից՝ ձեր նոր CSS-ֆայլը ստուգելու համար։",
+'userjsyoucanpreview' => "'''Հուշում.''' Էջը հիշելուց առաջ օգտվեք նախադիտման կոճակից՝ ձեր նոր JS-ֆայլը ստուգելու համար։",
'usercsspreview' => "'''Նկատի ունեցեք, որ դուք միայն նախադիտում եք ձեր մասնակցի CSS-ֆայլը. այն դեռ հիշված չէ՛։'''",
'userjspreview' => "'''Նկատի ունեցեք, որ դուք միայն նախադիտում եք ձեր մասնակցի JavaScript-ֆայլը. այն դեռ հիշված չէ՛։'''",
'userinvalidcssjstitle' => "'''Զգուշացում.''' «$1» տեսք չի գտնվել։ Ի նկատի ունեցեք, որ մասնակցային .css և .js էջերը ունեն փոքրատառ անվանումներ, օր.՝ «{{ns:user}}:Ոմն/monobook.css», և ոչ թե «{{ns:user}}:Ոմն/Monobook.css»։",
@@ -888,9 +911,9 @@ $2',
'semiprotectedpagewarning' => "'''Ծանուցում.''' Այս էջը պաշտպանված է. այն կարող են խմբագրել միայն գրանցված մասնակիցները։",
'cascadeprotectedwarning' => "'''Զգուշացում.''' Այս էջը պաշտպանված է և կարող է խմբագրվել միայն ադմինիստրատորների կողմից, քանի որ այն ընդգրկված է հետևյալ կասկադային-պաշտպանմամբ {{PLURAL:$1|էջում|էջերում}}.",
'titleprotectedwarning' => "'''Զգուշացում. Այս էջը պաշտպանված է. այն կարող են խմբագրել միայն [[Special:ListGroupRights|համապատասխան իրավունքներով]] մասնակիցները։'''",
-'templatesused' => 'Այս էջում օգտագործված կաղապարները.',
-'templatesusedpreview' => 'Այս նախադիտման մեջ օգտագործված կաղապարները.',
-'templatesusedsection' => 'Այս բաժնում օգտագործված կաղապարները.',
+'templatesused' => 'Այս էջում օգտագործված {{PLURAL:$1|կաղապարը|կաղապարները}}.',
+'templatesusedpreview' => 'Այս նախադիտման մեջ օգտագործված {{PLURAL:$1|կաղապարը|կաղապարները}}.',
+'templatesusedsection' => 'Այս բաժնում օգտագործված {{PLURAL:$1|կաղապարը|կաղապարները}}.',
'template-protected' => '(պաշտպանված)',
'template-semiprotected' => '(կիսապաշտպանված)',
'hiddencategories' => 'Այս էջը պատկանում է հետևյալ {{PLURAL:$1|1 թաքնված կատեգորիային|$1 թաքնված կատեգորիաներին}}.',
@@ -902,11 +925,11 @@ $2',
'permissionserrors' => 'Թույլատրության Սխալներ',
'permissionserrorstext' => 'Ձեզ չի թույլատրվում դա անել հետևյալ {{PLURAL:$1|պատճառով|պատճառներով}}.',
'permissionserrorstext-withaction' => 'Ձեզ չի թույլատրվում $2 հետևյալ {{PLURAL:$1|պատճառով|պատճառներով}}.',
-'recreate-deleted-warn' => "'''Զգուշացում. դուք փորձում եք վերստեղծել մի էջ, որը ջնջվել է նախկինում։'''
+'recreate-moveddeleted-warn' => "'''Զգուշացում. դուք փորձում եք վերստեղծել մի էջ, որը ջնջվել է նախկինում։'''
-Խնդրում ենք վերանայել ձեր խմբագրման նպատակահարմարությունը։ Հարմարության համար ստորև բերված է այս էջի ջնջման տեղեկամատյանը։",
-'deleted-notice' => 'Այս էջը հեռացված է։
-Էջի ջնջման մասին գրառումը ջնջման տեղեկամատյանից բերված է ստորև տեղեկության համար։',
+Խնդրում ենք վերանայել ձեր խմբագրման նպատակահարմարությունը։ Հարմարության համար ստորև բերված են այս էջի ջնջման և տեղափոխման տեղեկամատյանները։",
+'moveddeleted-notice' => 'Այս էջը հեռացված է։
+Էջի մասին գրառումները տեղափոխման և ջնջման տեղեկամատյանից բերված են ստորև տեղեկության համար։',
'edit-conflict' => 'Խմբագրման ընհարում։',
'edit-no-change' => 'Ձեր խմբագրումը անտեսվել է, քանի որ ոչ մի փոփոխություն չի կատարվել տեքստի մեջ։',
@@ -927,7 +950,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'currentrev' => 'Ընթացիկ տարբերակ',
'currentrev-asof' => 'Ընթացիկ տարբերակը $1-ի դրությամբ',
'revisionasof' => '$1-ի տարբերակ',
-'revision-info' => '$1 տարբերակ, $2', # Additionally available: $3: revision id
+'revision-info' => '$1 տարբերակ, $2',
'previousrevision' => '←Նախորդ տարբերակ',
'nextrevision' => 'Հաջորդ տարբերակ→',
'currentrevisionlink' => 'Ընթացիկ տարբերակ',
@@ -940,7 +963,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
Պարզաբանում. (ընթ) = համեմատել ընթացիկ տարբերակի հետ,
(նախ) = համեմատել նախորդ տարբերակի հետ,<br />'''չ''' = չնչին խմբագրում",
'history-fieldset-title' => 'Դիտել պատմությունը',
-'deletedrev' => '[ջնջված]',
+'history-show-deleted' => 'Միայն ջնջված',
'histfirst' => 'Առաջին',
'histlast' => 'Վերջին',
'historysize' => '({{PLURAL:$1|1 բայթ|$1 բայթ}})',
@@ -949,7 +972,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
# Revision feed
'history-feed-title' => 'Փոփոխությունների պատմություն',
'history-feed-description' => 'Վիքիի այս էջի փոփոխումների պատմություն',
-'history-feed-item-nocomment' => '$1՝ $2', # user at time
+'history-feed-item-nocomment' => '$1՝ $2',
'history-feed-empty' => 'Հայցված էջը գոյություն չունի։
Հնարավոր է այն ջնջվել է վիքիից կամ վերանվանվել։
Փորձեք [[Special:Search|որոնել վիքիում]] նոր համանման էջեր։',
@@ -958,11 +981,11 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'rev-deleted-comment' => '(մեկնաբանությունը հեռացված է)',
'rev-deleted-user' => '(մասնակցի անունը ջնջված է)',
'rev-deleted-event' => '(գրությունը հեռացված է)',
-'rev-deleted-text-permission' => 'Էջի այս տարբերակը հեռացվել է հասարակական արխիվից։
+'rev-deleted-text-permission' => 'Էջի այս տարբերակը հեռացված է։
Հնարավոր է մանրամասնություններ լինեն [{{fullurl:{{ns:special}}:Log/delete|page={{PAGENAMEE}}}} ջնջման տեղեկամատյանում]։',
-'rev-deleted-text-view' => 'Էջի այս տարբերակը հեռացվել է հասարակական արխիվից։
-Որպես այս կայքի ադմինիստրատոր դուք կարող եք դիտել այն։
-Հնարավոր է մանրամասնություններ լինեն [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} ջնջման տեղեկամատյանում]։',
+'rev-deleted-text-view' => "Էջի այս տարբերակը '''ջնջված''' է։
+Որպես ադմինիստրատոր դուք կարող եք դիտել այն։
+Հնարավոր է ջնջման մանրամասնություններ լինեն [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} ջնջման տեղեկամատյանում]։",
'rev-delundel' => 'ցույց տալ/թաքցնել',
'revisiondelete' => 'Ջնջել/վերականգնել տարբերակները',
'revdelete-nooldid-title' => 'Անվավեր նպատակային տարբերակ',
@@ -974,12 +997,14 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
Ադմինիստրատորները հնարավորություն կունենան դիտել թաքցված պարունակությունը, ինչպես նաև վերականգնել այն այս նույն ինտերֆեյսի միջոցով, բացառությամբ ավելորդ սահմանափակումների դեպքում։",
'revdelete-legend' => 'Սահմանել տեսանելիության սահմանափակումներ',
'revdelete-hide-text' => 'Թաքցնել տարբերակի տեքստը',
+'revdelete-hide-image' => 'Թաքցնել ֆայլի պարունակությունը',
'revdelete-hide-name' => 'Թաքցնել գործողությունը և առարկան',
'revdelete-hide-comment' => 'Թաքցնել մեկնաբանությունը',
'revdelete-hide-user' => 'Թաքցնել հեղինակի մասնակցի անունը/IP',
'revdelete-hide-restricted' => 'Թաքցնել տվյալները և՛ ադմինիստրատորներից, և՛ այլ մասնակիցներից',
+'revdelete-radio-set' => 'Այո',
+'revdelete-radio-unset' => 'Ոչ',
'revdelete-suppress' => 'Թաքցնել տվյալները ադմինիստրատորներից և մյուսներից նոյնպես',
-'revdelete-hide-image' => 'Թաքցնել ֆայլի պարունակությունը',
'revdelete-unsuppress' => 'Հանել սահմանափակումները վերականգնված տարբերակներից',
'revdelete-log' => 'Պատճառ.',
'revdelete-submit' => 'Կիրառել ընտրված տարբերակի վրա',
@@ -990,6 +1015,10 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'revdel-restore' => 'Փոխել տեսանելիությունը',
'pagehist' => 'Էջի պատմություն',
'deletedhist' => 'Ջնջումների պատմություն',
+'revdelete-otherreason' => 'Ուրիշ/հավելյալ պատճառ՝',
+'revdelete-reasonotherlist' => 'Ուրիշ պատճառ',
+'revdelete-edit-reasonlist' => 'Խմբագրել ջնջման պատճառների ցանկը',
+'revdelete-offender' => 'Էջի տարբերակի հեղինակ՝',
# Merge log
'revertmerge' => 'Անջատել',
@@ -1008,23 +1037,21 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'searchresulttext' => '{{SITENAME}} կայքում որոնման մասին տեղեկությունների համար այցելեք [[{{MediaWiki:Helppage}}|{{int:help}}]] էջը։',
'searchsubtitle' => "Դուք որոնել եք «'''[[:$1]]'''» ([[Special:Prefixindex/$1|այս անվանմամբ սկսվող էջերը]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|այս անվանվանը հղվող էջերը]])",
'searchsubtitleinvalid' => 'Դուք որոնել եք «$1»',
-'noexactmatch' => '«$1» անվանմամբ էջ գոյություն չունի։
-
-<span style="display: block; margin: 1.5em 2em">
-Դուք կարող եք <strong>[[:$1|ստեղծել այն]]</strong>։</span>',
-'noexactmatch-nocreate' => "'''«$1» անվանմամբ էջ գոյություն չունի։'''",
'titlematches' => 'Համընկած հոդվածների անվանումներ',
'notitlematches' => 'Չկան համընկած հոդվածների անվանումներ',
'textmatches' => 'Համընկած տեքստերով էջեր',
'notextmatches' => 'Չկան համընկած տեքստերով էջեր',
-'prevn' => 'նախորդ $1',
-'nextn' => 'հաջորդ $1',
-'viewprevnext' => 'Դիտել ($1) ($2) ($3)',
+'prevn' => 'նախորդ {{PLURAL:$1|$1}}',
+'nextn' => 'հաջորդ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Դիտել ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Որոնման ընտրանքներ',
'searchmenu-exists' => "'''Այս վիքիում, գոյություն ունի \"[[:\$1]]\" անվանումով էջը։'''",
'searchmenu-new' => "'''Ստեղծե՛լ \"[[:\$1]]\" էջը այս վիքիում'''",
'searchhelp-url' => 'Help:Գլխացանկ',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ցուցադրել այս նախածանցով սկսվող էջերը]]',
+'searchprofile-articles' => 'Հիմնական էջեր',
+'searchprofile-project' => 'Օգնության և նախագծերի էջեր',
+'searchprofile-images' => 'Մուլտիմեդիա',
'searchprofile-everything' => 'Ամենուրեք',
'searchprofile-advanced' => 'Ընդլայնված',
'searchprofile-articles-tooltip' => 'Որոնել $1ում',
@@ -1043,11 +1070,12 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'search-mwsuggest-disabled' => 'առանց առաջարկների',
'search-relatedarticle' => 'Հարակից',
'mwsuggest-disable' => 'Անջատել AJAX հուշումներ',
+'searcheverything-enable' => 'Որոնել բոլոր անվանատարածքներում',
'searchrelated' => 'հարակից',
'searchall' => 'բոլոր',
'showingresults' => "Ստորև բերված է մինչև {{PLURAL:$1|'''1''' արդյունք|'''$1''' արդյունք}}՝ սկսած №&nbsp;<strong>$2</strong>-ից։",
'showingresultsnum' => "Ստորև բերված է {{PLURAL:$3|'''1''' արդյունք|'''$3''' արդյունք}}` սկսած №&nbsp;<strong>$2</strong>-ից։",
-'showingresultstotal' => "Ստորև բերված {{PLURAL:$4|է '''$1'''-րդ արդյունքը՝ '''$3'''-ից|են '''$1 - $2''' արդյունքները՝ '''$3'''-ից}}",
+'showingresultsheader' => "{{PLURAL:$5|'''$1''' արդյունք '''$3'''-ից|'''$1 - $2''' արդյունքներ '''$3'''-ից}} '''$4'''-ի համար",
'nonefound' => "'''Ծանուցում'''։ Լռությամբ որոնումը կատարվում է ոչ բոլոր անվանատարածքներում։ Բոլոր անվանատարածքներում որոնելու համար (ներառյալ քննարկման էջերը, կաղապարները և այլն) օգտագործեք ''all:'' նախածանցը կամ նշեք ցանկացած անվանատարածքի անվանումը որպես նախածանց։",
'search-nonefound' => 'Որոնմանը համապատասխանող արդյունքներ չեն գտնվել։',
'powersearch' => 'Ընդլայնված որոնում',
@@ -1055,90 +1083,131 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'powersearch-ns' => 'Որոնել անվանատարածքում.',
'powersearch-redir' => 'Ցույց տալ վերահղումները',
'powersearch-field' => 'Որոնել',
+'powersearch-togglelabel' => 'Նշել․',
+'powersearch-toggleall' => 'Բոլորը',
+'powersearch-togglenone' => 'Ոչ մեկը',
'search-external' => 'Արտաքին որոնում',
'searchdisabled' => '{{SITENAME}} կայքի ներքին որոնումը անջատված է։ Դուք կարող եք որոնել կայքի պարունակությունը արտաքին որոնման շարժիչներով (Google, Yahoo...), սակայն, ի նկատի ունեցեք, որ կայքի իրենց ինդեքսները կարող են հնացած լինել։',
+# Quickbar
+'qbsettings' => 'Արագ անցման վահանակ',
+'qbsettings-none' => 'Չցուցադրել',
+'qbsettings-fixedleft' => 'Ձախից անշարժ',
+'qbsettings-fixedright' => 'Աջից անշարժ',
+'qbsettings-floatingleft' => 'Ձախից լողացող',
+'qbsettings-floatingright' => 'Աջից լողացող',
+
# Preferences page
-'preferences' => 'Նախընտրություններ',
-'mypreferences' => 'Իմ նախընտրությունները',
-'prefs-edits' => 'Խմբագրումների քանակը.',
-'prefsnologin' => 'Դուք չեք մտել համակարգ',
-'prefsnologintext' => 'Մասնակցային նախընտրությունները փոփոխելու համար անհրաժեշտ է [[Special:UserLogin|մտնել համակարգ]]։',
-'prefsreset' => 'Լռությամբ նախընտրությունները վերականգնված են։',
-'qbsettings' => 'Արագ անցման վահանակ',
-'qbsettings-none' => 'Չցուցադրել',
-'qbsettings-fixedleft' => 'Ձախից անշարժ',
-'qbsettings-fixedright' => 'Աջից անշարժ',
-'qbsettings-floatingleft' => 'Ձախից լողացող',
-'qbsettings-floatingright' => 'Աջից լողացող',
-'changepassword' => 'Փոխել գաղտնաբառը',
-'skin' => 'Տեսք',
-'skin-preview' => 'նախադիտել',
-'math' => 'Մաթ',
-'dateformat' => 'Օր ու ժամվա ձևը',
-'datedefault' => 'Առանց նախընտրության',
-'datetime' => 'Օր ու ժամ',
-'math_failure' => 'Չհաջողվեց վերլուծել',
-'math_unknown_error' => 'անհայտ սխալ',
-'math_unknown_function' => 'անհայտ ֆունկցիա',
-'math_lexing_error' => 'բառական սխալ',
-'math_syntax_error' => 'շարահյուսության սխալ',
-'math_image_error' => 'PNG վերածումը ձախողվեց. ստուգեք latex, dvips, gs և convert ծրագրերի տեղադրման ճշտությունը։',
-'math_bad_tmpdir' => 'Չի հաջողվում ստեղծել կամ գրել մաթեմատիկայի ժամանակավոր թղթապանակին։',
-'math_bad_output' => 'Չի հաջողվում ստեղծել կամ գրել մաթեմատիկայի արտածման թղթապանակին',
-'math_notexvc' => 'Կատարման texvc ֆայլը չի գտնվել։ Տեսեք math/README՝ կարգավորման համար։',
-'prefs-personal' => 'Անձնական',
-'prefs-rc' => 'Վերջին փոփոխություններ',
-'prefs-watchlist' => 'Հսկացանկ',
-'prefs-watchlist-days' => 'Հսկացանկում ցուցադրվող օրերի թիվը՝',
-'prefs-watchlist-edits' => 'Ընդարձակված հսկացանկում ցուցադրվող օրերի թիվը՝',
-'prefs-misc' => 'Այլ',
-'prefs-resetpass' => 'Փոխել գաղտնաբառը',
-'saveprefs' => 'Հիշել',
-'resetprefs' => 'Անտեսել փոփոխությունները',
-'restoreprefs' => 'Զրոյացնել, բերելով իլռելայն նախընտրանքներին',
-'textboxsize' => 'Խմբագրում',
-'prefs-edit-boxsize' => 'Խմբագրման պատուհանի չափը։',
-'rows' => 'Տողեր`',
-'columns' => 'Սյունակներ',
-'searchresultshead' => 'Որոնում',
-'resultsperpage' => 'Արդյունքների քանակը մեկ էջում.',
-'contextlines' => 'Տողերի քանակը յուրաքանչյուր արդյունքում.',
-'contextchars' => 'Սիմվոլների քանակը յուրաքանչյուր տողում.',
-'stub-threshold' => '<a href="#" class="stub">Պատառ հոդվածների հղումների</a> ձևավորման որոշման սահմանը.',
-'recentchangesdays' => 'Վերջին փոփոխություններում ցուցադրվող օրերի թիվը՝',
-'recentchangescount' => 'Վերջին փոփոխություններում ցուցադրվող խմբագրումների թիվը՝',
-'savedprefs' => 'Ձեր նախընտրությունները հիշված են։',
-'timezonelegend' => 'Ժամային գոտի.',
-'timezonetext' => '¹Ձեր տեղական ժամանակի և սերվերի ժամանակի (UTC) միջև ժամերի տարբերությունը։',
-'localtime' => 'Տեղական ժամանակ.',
-'timezoneselect' => 'Ժամային գոտի․',
-'timezoneuseserverdefault' => 'Օգտագործել սերվերի ժամանակը',
-'timezoneuseoffset' => 'Այլ (նշեք տարբերությունը)',
-'timezoneoffset' => 'Տարբերություն¹.',
-'servertime' => 'Սերվերի ժամանակ.',
-'guesstimezone' => 'Լրացնել բրաուզերից',
-'timezoneregion-africa' => 'Աֆրիկա',
-'timezoneregion-america' => 'Ամերիկա',
-'timezoneregion-antarctica' => 'Անտարկտիկա',
-'timezoneregion-arctic' => 'Արկտիկա',
-'timezoneregion-asia' => 'Ասիա',
-'timezoneregion-atlantic' => 'Ատլանտյան օվկիանոս',
-'timezoneregion-australia' => 'Ավստրալիա',
-'timezoneregion-europe' => 'Եվրոպա',
-'timezoneregion-indian' => 'Հնդկական Օվկիանոս',
-'timezoneregion-pacific' => 'Խաղաղ օվկիանոս',
-'allowemail' => 'Թույլատրել էլ-նամակներ մյուս մասնակիցներից',
-'prefs-searchoptions' => 'Որոնման ընտրանքներ',
-'prefs-namespaces' => 'Անվանատարածք',
-'defaultns' => 'Լռությամբ որոնել հետևյալ անվանատարծքներում.',
-'default' => 'լռությամբ',
-'files' => 'Ֆայլեր',
-'prefs-custom-css' => 'Անհատական CSS',
-'prefs-custom-js' => 'Անհատական JS',
+'preferences' => 'Նախընտրություններ',
+'mypreferences' => 'Իմ նախընտրությունները',
+'prefs-edits' => 'Խմբագրումների քանակը.',
+'prefsnologin' => 'Դուք չեք մտել համակարգ',
+'prefsnologintext' => 'Մասնակցային նախընտրությունները փոփոխելու համար անհրաժեշտ է <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} մտնել համակարգ]</span>։',
+'changepassword' => 'Փոխել գաղտնաբառը',
+'prefs-skin' => 'Տեսք',
+'skin-preview' => 'նախադիտել',
+'prefs-math' => 'Մաթեմատիկական բանաձևեր',
+'datedefault' => 'Առանց նախընտրության',
+'prefs-datetime' => 'Օր ու ժամ',
+'prefs-personal' => 'Անձնական',
+'prefs-rc' => 'Վերջին փոփոխություններ',
+'prefs-watchlist' => 'Հսկացանկ',
+'prefs-watchlist-days' => 'Հսկացանկում ցուցադրվող օրերի թիվը՝',
+'prefs-watchlist-days-max' => '(7 օրից ոչ ավել)',
+'prefs-watchlist-edits' => 'Ընդարձակված հսկացանկում ցուցադրվող օրերի թիվը՝',
+'prefs-watchlist-edits-max' => '(1000-ից ոչ ավել)',
+'prefs-watchlist-token' => 'Հսկացանկի կտրոն.',
+'prefs-misc' => 'Այլ',
+'prefs-resetpass' => 'Փոխել գաղտնաբառը',
+'prefs-email' => 'Էլ-հասցեի ընտրանքներ',
+'prefs-rendering' => 'Արտաքին տեսք',
+'saveprefs' => 'Հիշել',
+'resetprefs' => 'Անտեսել փոփոխությունները',
+'restoreprefs' => 'Զրոյացնել, բերելով իլռելայն նախընտրանքներին',
+'prefs-editing' => 'Խմբագրում',
+'prefs-edit-boxsize' => 'Խմբագրման պատուհանի չափը։',
+'rows' => 'Տողեր`',
+'columns' => 'Սյունակներ',
+'searchresultshead' => 'Որոնում',
+'resultsperpage' => 'Արդյունքների քանակը մեկ էջում.',
+'contextlines' => 'Տողերի քանակը յուրաքանչյուր արդյունքում.',
+'contextchars' => 'Սիմվոլների քանակը յուրաքանչյուր տողում.',
+'stub-threshold' => '<a href="#" class="stub">Պատառ հոդվածների հղումների</a> ձևավորման որոշման սահմանը.',
+'recentchangesdays' => 'Վերջին փոփոխություններում ցուցադրվող օրերի թիվը՝',
+'recentchangesdays-max' => '($1 {{PLURAL:$1|օրից|օրից}} ոչ ավել)',
+'recentchangescount' => 'Խմբագրումների թիվը ըստ լռության.',
+'prefs-help-recentchangescount' => 'Ներառում է վերջին փոփոխությունները, էջերի պատմությունը և տեղեկամատյանները։',
+'prefs-help-watchlist-token' => 'Այս դաշտը գաղտնի բանալիով լռացնելը կբերի ձեր հսկողության ցանկի RSS ժապավենի ստեղծմանը։
+Ցանկացած մեկը, ով գիտի այս բանալին, կարող է կարդալ ձեր հսկողության ցանկը, այդ պատճառով ընտրեք գաղտնի արժեք։
+Դուք կարող եք օգտագործել այս պատահականորեն գեներացված բանալին՝ $1',
+'savedprefs' => 'Ձեր նախընտրությունները հիշված են։',
+'timezonelegend' => 'Ժամային գոտի.',
+'localtime' => 'Տեղական ժամանակ.',
+'timezoneuseserverdefault' => 'Օգտագործել սերվերի ժամանակը',
+'timezoneuseoffset' => 'Այլ (նշեք տարբերությունը)',
+'timezoneoffset' => 'Տարբերություն¹.',
+'servertime' => 'Սերվերի ժամանակ.',
+'guesstimezone' => 'Լրացնել բրաուզերից',
+'timezoneregion-africa' => 'Աֆրիկա',
+'timezoneregion-america' => 'Ամերիկա',
+'timezoneregion-antarctica' => 'Անտարկտիկա',
+'timezoneregion-arctic' => 'Արկտիկա',
+'timezoneregion-asia' => 'Ասիա',
+'timezoneregion-atlantic' => 'Ատլանտյան օվկիանոս',
+'timezoneregion-australia' => 'Ավստրալիա',
+'timezoneregion-europe' => 'Եվրոպա',
+'timezoneregion-indian' => 'Հնդկական Օվկիանոս',
+'timezoneregion-pacific' => 'Խաղաղ օվկիանոս',
+'allowemail' => 'Թույլատրել էլ-նամակներ մյուս մասնակիցներից',
+'prefs-searchoptions' => 'Որոնման ընտրանքներ',
+'prefs-namespaces' => 'Անվանատարածք',
+'defaultns' => 'Հակառակ դեպքում, որոնել այս անվանատարծքներում․',
+'default' => 'լռությամբ',
+'prefs-files' => 'Ֆայլեր',
+'prefs-custom-css' => 'Անհատական CSS',
+'prefs-custom-js' => 'Անհատական JS',
+'prefs-reset-intro' => 'Այս էջում հնաարավոր է զրոյացնել ձեր բոլոր նախընրանքները, փոխելով դրանք իլռելայն նախընտրանքների։
+Գործողությունը հաստատելուց հետո, նածընտրանքները հնաարվոր չի լինելու հետ բերել։',
+'prefs-emailconfirm-label' => 'Էլ-փոստի վավերացում․',
+'prefs-textboxsize' => 'Խմբագրման պատուհանի չափը',
+'youremail' => 'Էլեկտրոնային փոստ.',
+'username' => 'Մասնակցի անուն.',
+'uid' => 'Մասնակցի իդենտիֆիկատոր.',
+'prefs-memberingroups' => 'Անդամակցության {{PLURAL:$1|խումբ|խմբեր}}.',
+'prefs-registration' => 'Գրանցման ամսաթիվը․',
+'yourrealname' => 'Ձեր իրական անունը.',
+'yourlanguage' => 'Ինտերֆեյսի լեզուն.',
+'yourvariant' => 'Լեզվական տարբերակ',
+'yournick' => 'Ստորագրություն.',
+'prefs-help-signature' => 'Քննարկման էջերում մեկնաբանությունները անհրաժեշտ է ստորագրել "<nowiki>~~~~</nowiki>" նշանագրով, որը կվերածվի ձեր ստորագրությանը և ամսաթվին։',
+'badsig' => 'Սխալ ստորագրություն. ստուգեք HTML-թեգերը։',
+'badsiglength' => 'Ստորագրությունը շատ երկար է։
+Այն պետք է լինի {{PLURAL:$1|սիմվոլից|սիմվոլից}} ոչ ավել։',
+'yourgender' => 'Սեռ․',
+'gender-unknown' => 'Չնշված',
+'gender-male' => 'Արական',
+'gender-female' => 'Իգական',
+'prefs-help-gender' => 'Ոչ պարտադիր դաշտ․ ծրագիրը օգտագործում է այս տվյալը մասնակցին ճիշտ դիմելու համար։
+Այս տեղեկությունը բոլորին տեսանլի է լինելու։',
+'email' => 'Էլ-փոստ',
+'prefs-help-realname' => 'Իրական անունը պարտադիր չէ, սակայն եթե դուք նշեք դա, ապա այն կօգտագործվի ձեր փոփոխությունների իրական անվանը վերագրման համար։',
+'prefs-help-email' => 'Էլեկտրոնային փոստի մուտքագրումը պարտադիր չէ, սակայն սա թույլ կտա մյուս մասնակիցներին կապնվել ձեզ հետ ձեր մասնակցի կամ մասնակցի քննարկման էջի միջոցով՝ առանց ձեր անձի կամ ձեր էլեկտրոնային հասցեի բացահայտման։',
+'prefs-help-email-required' => 'Էլ-փոստի հասցեն նշելը պարտադիր է։',
+'prefs-info' => 'Հիմնական տեղեկություններ',
+'prefs-i18n' => 'Միջազգայնացում',
+'prefs-signature' => 'Ստորագրություն',
+'prefs-dateformat' => 'Ամսաթվի ձևաչափ',
+'prefs-timeoffset' => 'Ժամային տարբերություն',
+'prefs-advancedediting' => 'Ընդլայնված ընրանքներ',
+'prefs-advancedrc' => 'Ընդլայնված ընրանքներ',
+'prefs-advancedrendering' => 'Ընդլայնված ընրանքներ',
+'prefs-advancedsearchoptions' => 'Ընդլայնված ընրանքներ',
+'prefs-advancedwatchlist' => 'Ընդլայնված ընրանքներ',
+'prefs-display' => 'Ցուցադրման ընտրանքներ',
+'prefs-diffs' => 'Տարբերություններ',
# User rights
-'userrights' => 'Մասնակիցների իրավունքների կառավարում', # Not used as normal message but as header for the special page itself
+'userrights' => 'Մասնակիցների իրավունքների կառավարում',
'userrights-lookup-user' => 'Մասնակիցների խմբերի կառավարում',
'userrights-user-editname' => 'Մուտքագրեք մասնակցի անուն.',
'editusergroup' => 'Խմբագրել մասնակիցների խմբերը',
@@ -1193,6 +1262,15 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'recentchanges-legend' => 'Վերջին փոփոխությունների նախընտրություններ',
'recentchangestext' => 'Հետևեք վիքիում կատարված վերջին փոփոխություններին այս էջում։',
'recentchanges-feed-description' => 'Հետևեք վիքիում կատարված վերջին փոփոխություններին այս սնուցման մեջ։',
+'recentchanges-label-legend' => 'Լեգենդ. $1',
+'recentchanges-legend-newpage' => '$1 - նոր էջ',
+'recentchanges-label-newpage' => 'Այս խմբագրմամբ ստեղծվել է նոր էջ',
+'recentchanges-legend-minor' => '$1 - չնչին խմբագրում',
+'recentchanges-label-minor' => 'Սա չնչին խմբագրում է',
+'recentchanges-legend-bot' => '$1 - բոտի խմբագրում',
+'recentchanges-label-bot' => 'Այս խմբագրումը կատարվել է բոտի կողմից',
+'recentchanges-legend-unpatrolled' => '$1 - չպարեկված խմբագրում',
+'recentchanges-label-unpatrolled' => 'Այս խմբագրումը դեռ չի պարեկվել',
'rcnote' => 'Ստորև բերված են վերջին <strong>$1</strong> փոփոխությունները վերջին <strong>$2</strong> {{PLURAL:$2|օրվա|օրվա}} ընթացքում՝ $5, $4-ի դրությամբ։',
'rcnotefrom' => "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։",
'rclistfrom' => 'Ցույց տալ նոր փոփոխությունները սկսած $1',
@@ -1219,6 +1297,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Կապված փոփոխություններ',
+'recentchangeslinked-feed' => 'Կապված փոփոխություններ',
+'recentchangeslinked-toolbox' => 'Կապված փոփոխություններ',
'recentchangeslinked-title' => '«$1» էջին կապված փոփոխությունները',
'recentchangeslinked-noresult' => 'Կապակցված էջերում նշված ժամանակաընթացքում փոփոխություններ չեն եղել։',
'recentchangeslinked-summary' => "Այս սպասարկող էջում բերված են հղվող էջերում կատարված վերջին փոփոխությունները։ Ձեր հսկացանկի էջերը ներկայացված են '''թավատառ'''։",
@@ -1228,7 +1308,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
# Upload
'upload' => 'Բեռնել ֆայլ',
'uploadbtn' => 'Բեռնել ֆայլ',
-'reupload' => 'Վերբեռնել',
'reuploaddesc' => 'Վերադառնալ բեռնման ձևին։',
'uploadnologin' => 'Դուք չեք մտել համակարգ',
'uploadnologintext' => 'Ֆայլեր բեռնելու համար անհրաժեշտ է [[Special:UserLogin|մտնել համակարգ]]։',
@@ -1267,7 +1346,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
* Բեռնված ֆայլի անվանում. '''<tt>[[:$1]]</tt>'''
* Գոյություն ունեցող ֆայլի անվանում. '''<tt>[[:$2]]</tt>'''
Խնդրում ենք ընտրել մեկ այլ անվանում։",
-'fileexists-thumb' => "<center>'''Գոյություն ունեցող պատկեր'''</center>",
'fileexists-thumbnail-yes' => "Ֆայլը ըստ երևույթին փոքրացված պատճեն է ''(պատկերիկ)''։ [[$1|thumb]]
Խնդրում ենք ստուգել '''<tt>[[:$1]]</tt>''' ֆայլը։
Եթե նշված ֆայլը նույն պատկերն է բնօրինակ չափով, ապա հարկովոր չէ բեռնել նրա փոքրացված պատճենը։",
@@ -1282,7 +1360,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'uploaddisabled' => 'Բեռնումները արգելված են',
'uploaddisabledtext' => 'Ֆայլերի բեռնումը արգելափակված է։',
'uploadscripted' => 'Այս ֆայլը պարունակում է HTML-կոդ կամ սկրիպտ, որը կարող է սխալ մեկնաբանվել բրաուզերի կողմից։',
-'uploadcorrupt' => 'Ֆայլը կա՛մ խաթարված, կա՛մ ունի սխալ ընդլայնում։ Խնդրում ենք ստուգել ֆայլը և բեռնել կրկին։',
'uploadvirus' => 'Ֆայլը պարունակում է վիրո՜ւս։ Տես $1',
'sourcefilename' => 'Ելման ֆայլ՝:',
'destfilename' => 'Ֆայլի նոր անվանում.',
@@ -1308,6 +1385,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'upload-curl-error28-text' => 'Կայքի պատասխանը ձգձգվում է։ Խնդրում ենք ստուգել կայքի գործունությունը, սպասել մի որոշ ժամանակ և փորձել կրկին։ Արժե գործողությունը փորձել կայքի քիչ բեռնվածության ժամանակ։',
'license' => 'Արտոնագրում․',
+'license-header' => 'Արտոնագրում',
'nolicense' => 'Ընտրված չէ',
'license-nopreview' => '(Նախադիտումը մատչելի չէ)',
'upload_source_url' => ' (գործուն, հանրամատչելի URL-հասցե)',
@@ -1325,6 +1403,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'listfiles_count' => 'Տարբերակ',
# File description page
+'file-anchor-link' => 'Ֆայլ',
'filehist' => 'Ֆայլի պատմություն',
'filehist-help' => 'Մատնահարեք օրվան/ժամին՝ ֆայլի այդ պահին տեսքը դիտելու համար։',
'filehist-deleteall' => 'ջնջել բոլորը',
@@ -1342,12 +1421,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'imagelinks' => 'Ֆայլի հղումներ',
'linkstoimage' => 'Հետևյալ {{PLURAL:$1|էջը հղվում է|$1 էջերը հղվում են}} այս ֆայլին՝',
'nolinkstoimage' => 'Այս ֆայլին հղվող էջեր չկան։',
-'sharedupload' => 'Այս ֆայլը $1 զետեղարանից է և կարող է օգտագործվել այլ նախագծերում։', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Հավելյալ տեղեկությունների համար տես $1։',
-'shareduploadwiki-desc' => 'Նրա $1 էջի պարունակությունը բերված է ստորև։',
-'shareduploadwiki-linktext' => 'ֆայլի նկարագրության էջը',
-'noimage' => 'Այսպիսի անվանմամբ ֆայլ գոյություն չունի, դուք կարող եք $1։',
-'noimage-linktext' => 'բեռնել այն',
+'sharedupload' => 'Այս ֆայլը $1 զետեղարանից է և կարող է օգտագործվել այլ նախագծերում։',
'uploadnewversion-linktext' => 'Բեռնել այս ֆայլի նոր տարբերակ',
# File reversion
@@ -1406,6 +1480,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'statistics-header-edits' => 'Խմբագրումների վիճակագրություն',
'statistics-header-views' => 'Դիտումների վիճակագրություն',
'statistics-header-users' => 'Մասնակիցների վիճակագրություն',
+'statistics-header-hooks' => 'Այլ վիճակագրություն',
'statistics-articles' => 'Հոդվածներ',
'statistics-pages' => 'Էջեր',
'statistics-pages-desc' => 'Վիքիի բոլոր էջերը՝ ներառյալ քննարկման էջերը, վերահղումները և այլն',
@@ -1433,8 +1508,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'brokenredirects' => 'Կոտրված վերահղումներ',
'brokenredirectstext' => 'Հետևյալ վերահղումները տանում են գոյություն չունեցող էջերի.',
-'brokenredirects-edit' => '(խմբագրել)',
-'brokenredirects-delete' => '(ջնջել)',
+'brokenredirects-edit' => 'խմբագրել',
+'brokenredirects-delete' => 'ջնջել',
'withoutinterwiki' => 'Լեզվային հղումներ չպարունակող էջեր',
'withoutinterwiki-summary' => 'Հետևյալ էջերը չունեն լեզվական հղումներ.',
@@ -1531,8 +1606,9 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'categoriespagetext' => 'Հետևյալ կատեգորիաները պարունակում են էջեր կամ մեդիա։',
# Special:DeletedContributions
-'deletedcontributions' => 'Մասնակցի ջնջված ներդրում',
-'deletedcontributions-title' => 'Մասնակցի ջնջված ներդրում',
+'deletedcontributions' => 'Մասնակցի ջնջված ներդրում',
+'deletedcontributions-title' => 'Մասնակցի ջնջված ներդրում',
+'sp-deletedcontributions-contribs' => 'ներդրում',
# Special:LinkSearch
'linksearch' => 'Արտաքին հղումներ',
@@ -1542,6 +1618,10 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'listusersfrom' => 'Ցուցադրել մասնակիցներին՝ սկսած.',
'listusers-submit' => 'Ցուցադրել',
'listusers-noresult' => 'Այդպիսի մասնակիցներ չգտնվեցին։',
+'listusers-blocked' => '(արգելափակված)',
+
+# Special:ActiveUsers
+'activeusers' => 'Ակտիվ մասնակիցների ցանկ',
# Special:Log/newusers
'newuserlogpage' => 'Մասնակիցների գրանցման տեղեկամատյան',
@@ -1621,7 +1701,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
'enotif_anon_editor' => 'անանուն մասնակից $1',
'enotif_body' => 'Հարգելի $WATCHINGUSERNAME,
-$PAGEEDITDATE {{grammar:genitive|{{SITENAME}}}} «$PAGETITLE» էջը $CHANGEDORCREATED $PAGEEDITOR մասնակցի կողմից, տես $PAGETITLE_URL՝ ընթացիկ տարբերակի համար։
+$PAGEEDITDATE {{grammar:genitive|{{SITENAME}}}} «$PAGETITLE» էջը $CHANGEDORCREATED $PAGEEDITOR մասնակցի կողմից, տես $PAGETITLE_URL ՝ ընթացիկ տարբերակի համար։
$NEWPAGE
@@ -1637,7 +1717,7 @@ $NEWPAGE
--
Ձեր հսկացանկի նախընտրությունները փոխելու համար այցելեք՝
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Հետադարձ կապ և օգնություն՝
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1674,8 +1754,8 @@ $NEWPAGE
'alreadyrolled' => 'Չհաջողվեց հետ գլորել [[:$1]] էջի վերջին խմբագրումները՝ կատարված [[User:$2|$2]] ([[User talk:$2|Քննարկում]]) մասնակցի կողմից։ Մեկ ուրիշը արդեն խմբագրել է կամ հետ է գլորել էջը։
Վերջին խմբագրումը կատարվել է [[User:$3|$3]] ([[User talk:$3|Քննարկում]]) մասնակցի կողմից։',
-'editcomment' => "Խմբագրման մեկնաբանումն էր. «''$1''»։", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|քննարկում]]) մասնակցի խմբագրումները հետ են շրջվել [[User:$1|$1]] մասնակցի վերջին տարբերակին։', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Խմբագրման մեկնաբանումն էր. «''$1''»։",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|քննարկում]]) մասնակցի խմբագրումները հետ են շրջվել [[User:$1|$1]] մասնակցի վերջին տարբերակին։',
'rollback-success' => 'Հետ են շրջվել $1 մասնակցի խմբագրումները. վերադարձվել է $2 մասնակցի վերջին տարբերակին։',
'sessionfailure' => 'Կարծես խնդիր է առաջացել կապված ձեր ընթացիկ աշխատանքային սեսիայի հետ.
այս գործողությունը բեկանվել է սեսիայի հափշտակման կանխման նպատակով։
@@ -1694,7 +1774,6 @@ $NEWPAGE
'protectexpiry' => 'Մարում.',
'protect_expiry_invalid' => 'Անթույլատրելի մարման ժամկետ։',
'protect_expiry_old' => 'Մարման ժամկետը անցյալում է։',
-'protect-unchain' => 'Անարգելել էջի տեղափոխումը',
'protect-text' => "Այստեղ դուք կարող եք դիտել և փոխել '''<nowiki>$1</nowiki>''' էջի պաշտպանման մակարդակը։",
'protect-locked-blocked' => "Դուք չեք կարող փոխել էջի պաշտպանման մակարդակը քանի դեռ արգելափակված եք։ Էջի ընթացիկ կարգավորումն է՝ '''$1'''.",
'protect-locked-dblock' => "Պաշտպանման մակարդակը չի կարող փոխվել տվյալների բազայի կողպման պատճառով։ Էջի ընթացիկ կարգավորումն է՝ '''$1'''.",
@@ -1710,7 +1789,7 @@ $NEWPAGE
'protect-cascade' => 'Պաշտպանել այս էջում ընդգրկված էջերը (կասկադային պաշտպանում)',
'protect-cantedit' => 'Դուք չեք կարող փոխել այս էջի պաշտպանության մակարդակը, քանի որ ձեզ չի թույլատրվում խմբագրել այն։',
'protect-edit-reasonlist' => 'Խմբագրել պաշտպանման պատճառների ցանկը',
-'protect-expiry-options' => '2 ժամ:2 hours,1 օր:1 day,3 օր:3 days,1 շաբաթ:1 week,2 շաբաթ:2 weeks,1 ամիս:1 month,3 ամիս:3 months,6 ամիս:6 months,1 տարի:1 year,առհավետ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ժամ:2 hours,1 օր:1 day,3 օր:3 days,1 շաբաթ:1 week,2 շաբաթ:2 weeks,1 ամիս:1 month,3 ամիս:3 months,6 ամիս:6 months,1 տարի:1 year,առհավետ:infinite',
'restriction-type' => 'Իրավունքներ.',
'restriction-level' => 'Սահմանափակման մակարդակ.',
'minimum-size' => 'Նվազագույն չափ',
@@ -1778,7 +1857,7 @@ $1',
'contributions-title' => '$1 մասնակցի ներդրումը',
'mycontris' => 'Իմ ներդրումը',
'contribsub2' => '$1-ի ներդրումները ($2)',
-'nocontribs' => 'Այս չափանիշներին համապատասխանող փոփոխություններ չեն գտնվել։', # Optional parameter: $1 is the user name
+'nocontribs' => 'Այս չափանիշներին համապատասխանող փոփոխություններ չեն գտնվել։',
'uctop' => ' (վերջինը)',
'month' => 'Սկսած ամսից (և վաղ)՝',
'year' => 'Սկսած տարեթվից (և վաղ)՝',
@@ -1786,7 +1865,10 @@ $1',
'sp-contributions-newbies' => 'Ցույց տալ միայն նորաստեղծ հաշիվներից կատարված ներդրումները',
'sp-contributions-newbies-sub' => 'Նոր մասնակցային հաշիվներից',
'sp-contributions-blocklog' => 'Արգելափակման տեղեկամատյան',
+'sp-contributions-deleted' => 'Մասնակցի ջնջված ներդրում',
'sp-contributions-logs' => 'տեղեկամատյաններ',
+'sp-contributions-talk' => 'Քննարկում',
+'sp-contributions-userrights' => 'Մասնակիցների իրավունքների կառավարում',
'sp-contributions-search' => 'Որոնել ներդրումները',
'sp-contributions-username' => 'IP-հասե կամ մասնակցի անուն.',
'sp-contributions-submit' => 'Որոնել',
@@ -1834,7 +1916,7 @@ $1',
'ipbenableautoblock' => 'Ավտոմատիկ արգելափակել այս մասնակցի վերջին IP-հասցեն և բոլոր հետագա IP-հասցեները, որոնցից նա կփորձի խբագրումներ կատարել',
'ipbsubmit' => 'Արգելափակել այս մասնակցին',
'ipbother' => 'Այլ ժամկետ.',
-'ipboptions' => '2 ժամ:2 hours,1 օր:1 day,3 օր:3 days,1 շաբաթ:1 week,2 շաբաթ:2 weeks,1 ամիս:1 month,3 ամիս:3 months,6 ամիս:6 months,1 տարի:1 year,առհավետ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ժամ:2 hours,1 օր:1 day,3 օր:3 days,1 շաբաթ:1 week,2 շաբաթ:2 weeks,1 ամիս:1 month,3 ամիս:3 months,6 ամիս:6 months,1 տարի:1 year,առհավետ:infinite',
'ipbotheroption' => 'այլ',
'ipbotherreason' => 'Այլ/հավելյալ պատճառներ.',
'ipbhidename' => 'Թաքցնել մասնակցի անունը արգելափակման տեղեկամատյանից, գործող արգելափակումների ցանկից և մասնակիցների ցանկից։',
@@ -1859,7 +1941,7 @@ $1',
'ipblocklist-submit' => 'Որոնել',
'blocklistline' => '$1, $2 արգելափակել է $3 ($4)',
'infiniteblock' => 'ընդմիշտ',
-'expiringblock' => 'կմարվի $1',
+'expiringblock' => 'կմարվի $1 $2',
'anononlyblock' => 'միայն անանուն',
'noautoblockblock' => 'ավտոմատ արգելափակումը անջատված է',
'createaccountblock' => 'մասնակցային հաշվի ստեղծումը արգելափակված է',
@@ -1939,7 +2021,7 @@ $1',
'move-watch' => 'Հսկել էջը',
'movepagebtn' => 'Տեղափոխել էջը',
'pagemovedsub' => 'Էջը տեղափոխվեց',
-'movepage-moved' => "'''«$1» էջը վերանվանվել է «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» էջը վերանվանվել է «$2»'''",
'movepage-moved-redirect' => 'Ստեղծվել է վերահղում։',
'articleexists' => 'Այդ անվանմամբ էջ արդեն գոյություն ունի կամ ձեր ընտրած անվանումը անթույլատրելի է։
Խնդրում ենք ընտրել այլ անվանում։',
@@ -1984,8 +2066,6 @@ $1',
'allmessagestext' => 'Ստորև բերված է «MediaWiki» անվանատարածքի բոլոր համակարգային ուղերձների ցանկը։
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Այս էջը չի գործում, քանի որ '''\$wgUseDatabaseMessages''' հատկանիշը անջատված է։",
-'allmessagesfilter' => 'Ուղղերձների անվան ֆիլտր.',
-'allmessagesmodified' => 'Ցույց տալ միայն փոփոխվածները',
# Thumbnails
'thumbnail-more' => 'Ընդարձակել',
@@ -2055,6 +2135,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Գտնել այս տեքստով էջերը',
'tooltip-p-logo' => 'Գլխավոր Էջ',
'tooltip-n-mainpage' => 'Այցելեք Գլխավոր Էջը',
+'tooltip-n-mainpage-description' => 'Անցնել գլխավոր էջ',
'tooltip-n-portal' => 'Նախագծի մասին, որտեղ գտնել ինչը, ինչով կարող եք օգնել',
'tooltip-n-currentevents' => 'Տեղեկություններ ընթացիկ իրադարձությունների մասին',
'tooltip-n-recentchanges' => 'Վիքիում կատարված վերջին փոփոխությունների ցանկը',
@@ -2108,7 +2189,7 @@ The wiki server can't provide data in a format your client can read.",
# Attribution
'anonymous' => '{{grammar:genitive|{{SITENAME}}}} անանուն մասնակիցները',
'siteuser' => '{{grammar:genitive|{{SITENAME}}}} մասնակից $1',
-'lastmodifiedatby' => 'Այս էջը վերջին անգամ փոփոխվել է $2, $1 $3 մասնակցի կողմից։', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Այս էջը վերջին անգամ փոփոխվել է $2, $1 $3 մասնակցի կողմից։',
'othercontribs' => 'Հիմնված է {{grammar:genitive|$1}} գործի վրա։',
'others' => 'այլոք',
'siteusers' => '{{grammar:genitive|{{SITENAME}}}} մասնակից(ներ) $1',
@@ -2148,6 +2229,17 @@ The wiki server can't provide data in a format your client can read.",
'mw_math_modern' => 'Խորհուրդ է տրվում ժամանակակից բրաուզերների համար',
'mw_math_mathml' => 'MathML, եթե հնարավոր է (փորձնական)',
+# Math errors
+'math_failure' => 'Չհաջողվեց վերլուծել',
+'math_unknown_error' => 'անհայտ սխալ',
+'math_unknown_function' => 'անհայտ ֆունկցիա',
+'math_lexing_error' => 'բառական սխալ',
+'math_syntax_error' => 'շարահյուսության սխալ',
+'math_image_error' => 'PNG վերածումը ձախողվեց. ստուգեք latex, dvips, gs և convert ծրագրերի տեղադրման ճշտությունը։',
+'math_bad_tmpdir' => 'Չի հաջողվում ստեղծել կամ գրել մաթեմատիկայի ժամանակավոր թղթապանակին։',
+'math_bad_output' => 'Չի հաջողվում ստեղծել կամ գրել մաթեմատիկայի արտածման թղթապանակին',
+'math_notexvc' => 'Կատարման texvc ֆայլը չի գտնվել։ Տեսեք math/README՝ կարգավորման համար։',
+
# Patrolling
'markaspatrolleddiff' => 'Նշել որպես ստուգված',
'markaspatrolledtext' => 'Նշել այս էջը որպես ստուգված',
@@ -2226,7 +2318,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Լայնք',
@@ -2245,6 +2337,7 @@ $1',
'watchlistall2' => 'բոլոր',
'namespacesall' => 'բոլոր',
'monthsall' => 'բոլոր',
+'limitall' => 'բոլոր',
# E-mail address confirmation
'confirmemail' => 'Էլ-հասցեի վավերացում',
@@ -2360,7 +2453,7 @@ $1',
'watchlisttools-raw' => 'Խմբագրել հում հսկացանկը',
# Special:Version
-'version' => 'MediaWiki տարբերակը', # Not used as normal message but as header for the special page itself
+'version' => 'MediaWiki տարբերակը',
# Special:FileDuplicateSearch
'fileduplicatesearch-submit' => 'Որոնել',
diff --git a/languages/messages/MessagesIa.php b/languages/messages/MessagesIa.php
index 843bf54b..8e88dd30 100644
--- a/languages/messages/MessagesIa.php
+++ b/languages/messages/MessagesIa.php
@@ -15,9 +15,8 @@
$separatorTransformTable = array(',' => "\xc2\xa0", '.' => ',' );
-
$namespaceNames = array(
- NS_MEDIA => 'Media',
+ NS_MEDIA => 'Multimedia',
NS_SPECIAL => 'Special',
NS_TALK => 'Discussion',
NS_USER => 'Usator',
@@ -50,7 +49,7 @@ $specialPageAliases = array(
'Preferences' => array( 'Preferentias' ),
'Watchlist' => array( 'Observatorio' ),
'Recentchanges' => array( 'Modificationes recente' ),
- 'Upload' => array( 'Cargar' ),
+ 'Upload' => array( 'Incargar', 'Cargar' ),
'Listfiles' => array( 'Lista de files', 'Lista de imagines' ),
'Newimages' => array( 'Nove files', 'Nove imagines' ),
'Listusers' => array( 'Lista de usatores' ),
@@ -62,7 +61,7 @@ $specialPageAliases = array(
'Uncategorizedcategories' => array( 'Categorias non categorisate' ),
'Uncategorizedimages' => array( 'Files non categorisate', 'Imagines non categorisate' ),
'Uncategorizedtemplates' => array( 'Patronos non categorisate' ),
- 'Unusedcategories' => array( 'Cateogiras non usate' ),
+ 'Unusedcategories' => array( 'Categorias non usate' ),
'Unusedimages' => array( 'Files non usate', 'Imagines non usate' ),
'Wantedpages' => array( 'Paginas desirate', 'Ligamines rupte' ),
'Wantedcategories' => array( 'Categorias desirate' ),
@@ -118,7 +117,7 @@ $specialPageAliases = array(
'Listbots' => array( 'Lista de robots' ),
'Popularpages' => array( 'Paginas popular' ),
'Search' => array( 'Recerca' ),
- 'Resetpass' => array( 'Cambiar contrasigno', 'Redefinir contrasigno' ),
+ 'Resetpass' => array( 'Cambiar contrasigno' ),
'Withoutinterwiki' => array( 'Sin interwiki' ),
'MergeHistory' => array( 'Fusionar historia' ),
'Filepath' => array( 'Cammino al file' ),
@@ -127,6 +126,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'Recerca de ligamines' ),
'DeletedContributions' => array( 'Contributiones delite' ),
'Tags' => array( 'Etiquettas' ),
+ 'Activeusers' => array( 'Usatores active' ),
);
$messages = array(
@@ -160,6 +160,7 @@ $messages = array(
'tog-enotifminoredits' => 'Notificar me etiam de modificationes minor de paginas',
'tog-enotifrevealaddr' => 'Revelar mi adresse de e-mail in messages de notification',
'tog-shownumberswatching' => 'Monstrar le numero de usatores que observa le pagina',
+'tog-oldsig' => 'Previsualisation del signatura existente:',
'tog-fancysig' => 'Tractar signatura como wikitexto (sin ligamine automatic)',
'tog-externaleditor' => 'Usar editor externe qua standard (pro expertos solmente, necessita configuration special in tu computator)',
'tog-externaldiff' => "Usar un programma ''diff'' externe qua standard (pro expertos solmente, necessita configuration special in tu computator)",
@@ -183,6 +184,13 @@ $messages = array(
'underline-never' => 'Nunquam',
'underline-default' => 'Secundo le configuration del navigator',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stilo de litteras del area de modification:',
+'editfont-default' => 'Predefinite del navigator',
+'editfont-monospace' => 'Typo de litteras monospatial',
+'editfont-sansserif' => 'Typo de litteras sans-serif',
+'editfont-serif' => 'Typo de litteras serif',
+
# Dates
'sunday' => 'dominica',
'monday' => 'lunedi',
@@ -242,7 +250,7 @@ $messages = array(
'category-media-header' => 'Multimedia in categoria "$1"',
'category-empty' => "''Iste categoria non contine alcun pagina o file multimedia al momento.''",
'hidden-categories' => '{{PLURAL:$1|Categoria celate|Categorias celate}}',
-'hidden-category-category' => 'Categorias celate', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias celate',
'category-subcat-count' => '{{PLURAL:$2|Iste categoria ha solmente le sequente subcategoria.|Iste categoria ha le sequente {{PLURAL:$1|subcategoria|$1 subcategorias}}, ex $2 in total.}}',
'category-subcat-count-limited' => 'Iste categoria ha le sequente {{PLURAL:$1|subcategoria|$1 subcategorias}}.',
'category-article-count' => '{{PLURAL:$2|Iste categoria contine solmente le sequente pagina.|Le sequente {{PLURAL:$1|pagina es|$1 paginas es}} in iste categoria, ex $2 in total.}}',
@@ -250,6 +258,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Iste categoria contine solmente le sequente file.|Le sequente {{PLURAL:$1|file es|$1 files es}} in iste categoria, ex $2 in total.}}',
'category-file-count-limited' => 'Le sequente {{PLURAL:$1|file es|$1 files es}} in le categoria actual.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Paginas indexate',
+'noindex-category' => 'Paginas non indexate',
'mainpagetext' => "'''MediaWiki ha essite installate con successo.'''",
'mainpagedocfooter' => 'Consulta le [http://meta.wikimedia.org/wiki/Help:Contents Guida del usator] pro informationes super le uso del software wiki.
@@ -259,10 +269,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ a proposito de MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de diffusion pro annuncios de nove versiones de MediaWiki]',
-'about' => 'A proposito',
-'article' => 'Pagina de contento',
-'newwindow' => '(se aperi in un nove fenestra)',
-'cancel' => 'Cancellar',
+'about' => 'A proposito',
+'article' => 'Pagina de contento',
+'newwindow' => '(se aperi in un nove fenestra)',
+'cancel' => 'Cancellar',
+'moredotdotdot' => 'Plus...',
+'mypage' => 'Mi pagina',
+'mytalk' => 'Mi discussion',
+'anontalk' => 'Discussion pro iste adresse IP',
+'navigation' => 'Navigation',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Cercar',
'qbbrowse' => 'Foliar',
'qbedit' => 'Modificar',
@@ -270,15 +288,35 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'Mi paginas',
'qbspecialpages' => 'Paginas special',
-'moredotdotdot' => 'Plus...',
-'mypage' => 'Mi pagina',
-'mytalk' => 'Mi discussion',
-'anontalk' => 'Discussion pro iste adresse IP',
-'navigation' => 'Navigation',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Adder topico',
+'vector-action-delete' => 'Deler',
+'vector-action-move' => 'Renominar',
+'vector-action-protect' => 'Proteger',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Disproteger',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Pagina de adjuta',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'Pagina de multimedia',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-project' => 'Pagina de projecto',
+'vector-namespace-special' => 'Pagina special',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Patrono',
+'vector-namespace-user' => 'Pagina de usator',
+'vector-view-create' => 'Crear',
+'vector-view-edit' => 'Modificar',
+'vector-view-history' => 'Vider historia',
+'vector-view-view' => 'Leger',
+'vector-view-viewsource' => 'Vider texto fonte',
+'actions' => 'Actiones',
+'namespaces' => 'Spatios de nomines',
+'variants' => 'Variantes',
'errorpagetitle' => 'Error',
'returnto' => 'Retornar a $1.',
@@ -328,18 +366,22 @@ $messages = array(
'otherlanguages' => 'In altere linguas',
'redirectedfrom' => '(Redirigite ab $1)',
'redirectpagesub' => 'Pagina de redirection',
-'lastmodifiedat' => 'Ultime modification de iste pagina: le $1 a $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultime modification de iste pagina: le $1 a $2.',
'viewcount' => 'Iste pagina ha essite visitate {{PLURAL:$1|un vice|$1 vices}}.',
'protectedpage' => 'Pagina protegite',
'jumpto' => 'Saltar a:',
'jumptonavigation' => 'navigation',
'jumptosearch' => 'cercar',
+'view-pool-error' => 'Pardono, le servitores es supercargate in iste momento.
+Troppo de usatores tenta vider iste pagina.
+Per favor attende un momento ante que tu essaya acceder novemente a iste pagina.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A proposito de {{SITENAME}}',
'aboutpage' => 'Project:A proposito',
'copyright' => 'Le contento es disponibile sub $1.',
-'copyrightpagename' => 'Copyright de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Actualitates',
'currentevents-url' => 'Project:Actualitates',
@@ -347,8 +389,6 @@ $messages = array(
'disclaimerpage' => 'Project:Declaration general de non-responsabilitate',
'edithelp' => 'Adjuta de modification',
'edithelppage' => 'Help:Modification',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Contento',
'mainpage' => 'Pagina principal',
'mainpage-description' => 'Pagina principal',
@@ -428,10 +468,6 @@ Le ultime consulta que esseva tentate es:
"$1"
effectuate per le function "$2".
Le base de datos retornava le error "$3: $4"',
-'noconnect' => 'Le wiki ha difficultates technic al momento, e non pote contactar le servitor del base de datos.<br />
-$1',
-'nodb' => 'Non poteva seliger le base de datos $1',
-'cachederror' => 'Le sequente copia del pagina se recuperava del cache, e possibilemente non es actual.',
'laggedslavemode' => 'Attention: Es possibile que le pagina non contine actualisationes recente.',
'readonly' => 'Base de datos blocate',
'enterlockreason' => 'Describe le motivo del blocada, includente un estimation
@@ -450,6 +486,8 @@ Per favor reporta isto a un [[Special:ListUsers/sysop|administrator]], faciente
'readonly_lag' => 'Le base de datos ha essite automaticamente blocate durante que le servitores de base de datos secundari se synchronisa con le servitor principal.',
'internalerror' => 'Error interne',
'internalerror_info' => 'Error interne: $1',
+'fileappenderrorread' => 'Non poteva leger "$1" durante le adjunction.',
+'fileappenderror' => 'Non poteva adjunger "$1" a "$2".',
'filecopyerror' => 'Impossibile copiar file "$1" a "$2".',
'filerenameerror' => 'Impossibile renominar file "$1" a "$2".',
'filedeleteerror' => 'Impossibile deler file "$1".',
@@ -459,8 +497,8 @@ Per favor reporta isto a un [[Special:ListUsers/sysop|administrator]], faciente
'unexpected' => 'Valor impreviste: "$1"="$2".',
'formerror' => 'Error: impossibile submitter formulario',
'badarticleerror' => 'Iste action non pote esser effectuate super iste pagina.',
-'cannotdelete' => 'Impossibile deler le pagina o file specificate.
-Es possibile que un altere persona ha ja delite lo.',
+'cannotdelete' => 'Le pagina o file "$1" non poteva esser delite.
+Es possibile que un altere persona lo ha ja delite.',
'badtitle' => 'Titulo invalide',
'badtitletext' => 'Le titulo de pagina requestate esseva invalide, vacue, o un titulo interlingual o interwiki incorrectemente ligate.
Es possibile que illo contine un o plure characteres que non pote esser usate in titulos.',
@@ -496,7 +534,6 @@ Le motivo specificate es ''$2''.",
'virus-unknownscanner' => 'antivirus non cognoscite:',
# Login and logout pages
-'logouttitle' => 'Session claudite',
'logouttext' => "'''Tu ha claudite le session.'''
Tu pote continuar a usar {{SITENAME}} anonymemente, o tu pote [[Special:UserLogin|aperir un nove session]] con le mesme nomine de usator o con un altere.
@@ -504,7 +541,6 @@ Nota que alcun paginas pote continuar a apparer como si tu esserea ancora authen
'welcomecreation' => '== Benvenite, $1! ==
Tu conto ha essite create.
Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].',
-'loginpagetitle' => 'Aperir session',
'yourname' => 'Nomine de usator:',
'yourpassword' => 'Contrasigno:',
'yourpasswordagain' => 'Repete contrasigno:',
@@ -515,6 +551,7 @@ Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].
'nav-login-createaccount' => 'Aperir session / crear conto',
'loginprompt' => 'Tu debe haber activate le cookies pro poter aperir un session in {{SITENAME}}.',
'userlogin' => 'Aperir session / crear conto',
+'userloginnocreate' => 'Aperir session',
'logout' => 'Clauder session',
'userlogout' => 'Clauder session',
'notloggedin' => 'Tu non ha aperite un session',
@@ -527,28 +564,8 @@ Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].
'badretype' => 'Le duo contrasignos que tu scribeva non es identic.',
'userexists' => 'Le nomine de usator que tu entrava es ja in uso.
Selige un altere nomine.',
-'youremail' => 'E-mail:',
-'username' => 'Nomine de usator:',
-'uid' => 'ID del usator:',
-'prefs-memberingroups' => 'Membro de {{PLURAL:$1|gruppo|gruppos}}:',
-'yourrealname' => 'Nomine real:',
-'yourlanguage' => 'Lingua:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Signatura:',
-'badsig' => 'Signatura crude invalide; verificar le etiquettas HTML.',
-'badsiglength' => 'Tu signatura es troppo longe.
-Illo debe haber minus de $1 {{PLURAL:$1|character|characteres}}.',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'Non specificate',
-'gender-male' => 'Masculin',
-'gender-female' => 'Feminin',
-'prefs-help-gender' => 'Optional: usate pro facer le software adressar te correctemente secundo tu sexo. Iste information es public.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Le nomine real es optional.
-Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contributiones.',
'loginerror' => 'Error in le apertura del session',
-'prefs-help-email' => 'Le adresse de e-mail es optional, ma es necessari pro le reinitialisation de tu contrasigno, in caso que tu lo oblida. Tu pote etiam optar pro permitter que altere personas te contacta via tu pagina de usator o de discussion, sin necessitate de revelar tu identitate.',
-'prefs-help-email-required' => 'Le adresse de e-mail es requirite.',
+'createaccounterror' => 'Non poteva crear le conto: $1',
'nocookiesnew' => "Le conto de usator ha essite create, sed tu non ha aperite un session.
{{SITENAME}} usa ''cookies'' pro mantener le sessiones del usatores.
Tu ha disactivate le functionalitate del ''cookies''.
@@ -565,10 +582,11 @@ Verifica le orthographia, o [[Special:UserLogin/signup|crea un nove conto]].',
'nosuchusershort' => 'Non existe un usator con le nomine "<nowiki>$1</nowiki>".
Verifica le orthographia.',
'nouserspecified' => 'Tu debe specificar un nomine de usator.',
+'login-userblocked' => 'Iste usator es blocate. Apertura de session non permittite.',
'wrongpassword' => 'Le contrasigno que tu entrava es incorrecte. Per favor reprova.',
'wrongpasswordempty' => 'Tu non entrava un contrasigno. Per favor reprova.',
-'passwordtooshort' => 'Tu contrasigno es invalide o troppo curte.
-Illo debe haber al minus {{PLURAL:$1|1 character|$1 characteres}} e debe differer de tu nomine de usator.',
+'passwordtooshort' => 'Le contrasignos debe continer al minus {{PLURAL:$1|1 character|$1 characteres}}.',
+'password-name-match' => 'Tu contrasigno debe esser differente de tu nomine de usator.',
'mailmypassword' => 'Inviar un nove contrasigno in e-mail',
'passwordremindertitle' => 'Nove contrasigno temporari pro {{SITENAME}}',
'passwordremindertext' => 'Alcuno (probabilemente tu, ab le adresse IP $1) requestava un nove
@@ -581,6 +599,7 @@ Si un altere persona ha facite iste requesta, o si tu te ha rememorate tu contra
e tu non vole plus cambiar lo, tu pote ignorar iste message e
continuar a usar tu contrasigno original.',
'noemail' => 'Il non ha un adresse de e-mail registrate pro le usator "$1".',
+'noemailcreate' => 'Es necessari fornir un adresse de e-mail valide',
'passwordsent' => 'Un nove contrasigno esseva inviate al adresse de e-mail
registrate pro "$1".
Per favor initia un session post reciper lo.',
@@ -606,9 +625,11 @@ Entra un adresse ben formatate, o vacua ille campo.',
Tu deberea aperir un session e cambiar tu contrasigno ora.
Tu pote ignorar iste message si iste conto ha essite create in error.',
+'usernamehasherror' => 'Le nomine de usator non pote continer grillias/cardinales/signos de numero ("#")',
'login-throttled' => 'Tu ha facite troppo de tentativas de identification.
Per favor attende ante de probar lo novemente.',
'loginlanguagelabel' => 'Lingua: $1',
+'suspicious-userlogout' => 'Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.',
# Password reset dialog
'resetpass' => 'Cambiar contrasigno',
@@ -621,18 +642,13 @@ Pro completar le accesso, tu debe definir un nove contrasigno hic:',
'retypenew' => 'Repete le nove contrasigno:',
'resetpass_submit' => 'Definir contrasigno e aperir un session',
'resetpass_success' => 'Tu contrasigno ha essite cambiate! Ora se aperi tu session...',
-'resetpass_bad_temporary' => 'Contrasigno temporari invalide.
-Es possibile que tu ha ja cambiate tu contrasigno o ha requestate un nove contrasigno temporari.',
'resetpass_forbidden' => 'Le contrasignos non pote esser cambiate',
'resetpass-no-info' => 'Tu debe aperir un session pro poter acceder directemente a iste pagina.',
'resetpass-submit-loggedin' => 'Cambiar contrasigno',
+'resetpass-submit-cancel' => 'Cancellar',
'resetpass-wrong-oldpass' => 'Le contrasigno temporari o actual es invalide.
Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasigno temporari.',
'resetpass-temp-password' => 'Contrasigno temporari:',
-'resetpass-log' => 'Registro de redefinitiones de contrasigno',
-'resetpass-logtext' => 'Infra es un registro de usatores cuje contrasigno ha essite redefinite per un administrator.',
-'resetpass-logentry' => 'cambiava le contrasigno de $1',
-'resetpass-comment' => 'Motivo pro le redefinition del contrasigno:',
# Edit page toolbar
'bold_sample' => 'Texto grasse',
@@ -710,7 +726,6 @@ Per favor include tote le detalios supra specificate in omne correspondentia.',
'blockededitsource' => "Le texto de '''tu modificationes''' in '''$1''' se monstra infra:",
'whitelistedittitle' => 'Identification requirite pro modificar',
'whitelistedittext' => 'Tu debe $1 pro poter modificar paginas.',
-'confirmedittitle' => 'Confirmation del adresse de e-mail es requirite pro poter modificar',
'confirmedittext' => 'Tu debe confirmar tu adresse de e-mail pro poter modificar paginas.
Per favor entra e valida tu adresse de e-mail per medio de tu [[Special:Preferences|preferentias de usator]].',
'nosuchsectiontitle' => 'Section non trovate',
@@ -734,9 +749,16 @@ Si tu es un usator anonyme e pensa que commentos irrelevante ha essite dirigite
Tu pote [[Special:Search/{{PAGENAME}}|cercar le titulo de iste pagina]] in altere paginas,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar in le registros pertinente],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificar iste pagina].',
+'noarticletext-nopermission' => 'Al momento il non ha texto in iste pagina.
+Tu pote [[Special:Search/{{PAGENAME}}|cercar le titulo de iste pagina]] in altere paginas,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar in le registros pertinente].</span>',
'userpage-userdoesnotexist' => 'Le conto de usator "$1" non es registrate. Per favor verifica que tu vole crear/modificar iste pagina.',
+'userpage-userdoesnotexist-view' => 'Le conto de usator "$1" non es registrate.',
+'blocked-notice-logextract' => 'Iste usator es actualmente blocate.
+Le ultime entrata del registro de blocadas es reproducite ci infra pro information:',
'clearyourcache' => "'''Nota - Post confirmar, il pote esser necessari refrescar le ''cache'' de tu navigator pro vider le cambiamentos.''' '''Mozilla / Firefox / Safari:''' tenente ''Shift'' clicca ''Reload,'' o preme ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' in un Macintosh); '''Konqueror: '''clicca ''Reload'' o preme ''F5;'' '''Opera:''' vacua le ''cache'' in ''Tools → Preferences;'' '''Internet Explorer:''' tenente ''Ctrl'' clicca ''Refresh,'' o preme ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Consilio:''' Usa le button 'Monstrar previsualisation' pro testar tu nove CSS/JS ante de publicar lo.",
+'usercssyoucanpreview' => "'''Consilio:''' Usa le button \"{{int:showpreview}}\" pro testar tu nove CSS ante de salveguardar lo.",
+'userjsyoucanpreview' => "'''Consilio:''' Usa le button \"{{int:showpreview}}\" pro testar tu nove JavaScript ante de salveguardar lo.",
'usercsspreview' => "'''Non oblida que isto es solmente un previsualisation de tu CSS personalisate.'''
'''Le modificationes non ha ancora essite salveguardate!'''",
'userjspreview' => "'''Non oblida que isto es solmente un test/previsualisation de tu JavaScript personalisate.'''
@@ -796,13 +818,13 @@ Illo non pote esser salveguardate.",
Nos recommenda copiar-e-collar le texto in un file de texto e salveguardar lo pro plus tarde.
Le administrator qui lo blocava dava iste explication: $1",
-'protectedpagewarning' => "'''ATTENTION: Iste pagina ha essite protegite. Solmente administratores pote modificar lo.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Iste pagina ha essite protegite de maniera que solmente usatores registrate pote modificar lo.",
+'protectedpagewarning' => "'''Attention: Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote modificar lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
+'semiprotectedpagewarning' => "'''Nota:''' Iste pagina ha essite protegite de maniera que solmente usatores registrate pote modificar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
'cascadeprotectedwarning' => "'''Attention:''' Iste pagina ha essite protegite de maniera que solmente administratores pote modificar lo, proque illo es includite in le protection in cascada del sequente {{PLURAL:$1|pagina|paginas}}:",
-'titleprotectedwarning' => "'''ATTENTION: Iste pagina ha essite protegite de maniera que [[Special:ListGroupRights|permissiones specific]] es requirite pro crear lo.'''",
-'templatesused' => 'Patronos usate in iste pagina:',
-'templatesusedpreview' => 'Patronos usate in iste previsualisation:',
-'templatesusedsection' => 'Patronos usate in iste section:',
+'titleprotectedwarning' => "'''Attention: Iste pagina ha essite protegite de maniera que [[Special:ListGroupRights|permissiones specific]] es requirite pro crear lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
+'templatesused' => '{{PLURAL:$1|Patrono|Patronos}} usate in iste pagina:',
+'templatesusedpreview' => '{{PLURAL:$1|Patrono|Patronos}} usate in iste previsualisation:',
+'templatesusedsection' => '{{PLURAL:$1|Patrono|Patronos}} usate in iste section:',
'template-protected' => '(protegite)',
'template-semiprotected' => '(semi-protegite)',
'hiddencategories' => 'Iste pagina es membro de {{PLURAL:$1|1 categoria|$1 categorias}} celate:',
@@ -811,16 +833,18 @@ Le administrator qui lo blocava dava iste explication: $1",
'nocreatetext' => '{{SITENAME}} ha restringite le possibilitate de crear nove paginas.
Tu pote retornar e modificar un pagina existente, o [[Special:UserLogin|aperir un session, o crear un conto]].',
'nocreate-loggedin' => 'Tu non ha le permission de crear nove paginas.',
+'sectioneditnotsupported-title' => 'Modification de sectiones non supportate',
+'sectioneditnotsupported-text' => 'Non es possibile modificar sectiones individual in iste pagina de modification.',
'permissionserrors' => 'Errores de permissiones',
'permissionserrorstext' => 'Tu non ha le permission de facer isto, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
'permissionserrorstext-withaction' => 'Tu non ha le permission de $2, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
-'recreate-deleted-warn' => "'''Attention: Tu va recrear un pagina que esseva anteriormente delite.'''
+'recreate-moveddeleted-warn' => "'''Attention: Tu es super le puncto de recrear un pagina que esseva anteriormente delite.'''
-Tu deberea considerar si il es appropriate crear iste pagina de novo.
-Le registro de deletiones pro iste pagina se trova infra pro major commoditate:",
-'deleted-notice' => 'Iste pagina ha essite delite.
-In basso se revela le registro de deletiones del pagina pro ulterior informationes.',
-'deletelog-fulllog' => 'Vider registro complete',
+Tu deberea considerar si il es appropriate continuar a modificar iste pagina.
+Le registro de deletiones e de renominationes pro iste pagina se trova infra pro major commoditate:",
+'moveddeleted-notice' => 'Iste pagina ha essite delite.
+In basso se revela le registro de deletiones e de modificationes del pagina pro ulterior informationes.',
+'log-fulllog' => 'Vider le registro complete',
'edit-hook-aborted' => 'Modification abortate per un extension.
Nulle explication disponibile.',
'edit-gone-missing' => 'Impossibile actualisar le pagina.
@@ -843,6 +867,7 @@ Iste parametros ha essite omittite.",
'post-expand-template-argument-category' => 'Paginas que omitte alcun parametros de patrono',
'parser-template-loop-warning' => 'Recursion infinite detegite in patrono: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limite de recursion del patrono excedite ($1)',
+'language-converter-depth-warning' => 'Limite de profunditate del conversor de lingua excedite ($1)',
# "Undo" feature
'undo-success' => 'Le modification pote esser disfacite.
@@ -863,7 +888,7 @@ Le motivo que $3 dava es ''$2''",
'currentrev' => 'Version actual',
'currentrev-asof' => 'Version actual del $1',
'revisionasof' => 'Version del $1',
-'revision-info' => 'Version del $1 per $2', # Additionally available: $3: revision id
+'revision-info' => 'Version del $1 per $2',
'previousrevision' => '← Version precedente',
'nextrevision' => 'Version sequente →',
'currentrevisionlink' => 'Version actual',
@@ -876,7 +901,7 @@ Le motivo que $3 dava es ''$2''",
Legenda: '''({{int:cur}})''' = comparar con le version actual,
'''({{int:last}})''' = comparar con le version precedente, '''{{int:minoreditletter}}''' = modification minor.",
'history-fieldset-title' => 'Examinar historia',
-'deletedrev' => '[delite]',
+'history-show-deleted' => 'Delite solmente',
'histfirst' => 'Prime',
'histlast' => 'Ultime',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -885,72 +910,115 @@ Legenda: '''({{int:cur}})''' = comparar con le version actual,
# Revision feed
'history-feed-title' => 'Historia de versiones',
'history-feed-description' => 'Historia del versiones de iste pagina in le wiki',
-'history-feed-item-nocomment' => '$1 a $2', # user at time
+'history-feed-item-nocomment' => '$1 a $2',
'history-feed-empty' => 'Le pagina que tu requestava non existe.
Es possibile que illo esseva delite del wiki, o renominate.
Prova [[Special:Search|cercar nove paginas relevante]] in le wiki.',
# Revision deletion
-'rev-deleted-comment' => '(commento eliminate)',
-'rev-deleted-user' => '(nomine de usator eliminate)',
-'rev-deleted-event' => '(entrata eliminate)',
-'rev-deleted-text-permission' => "Iste version del pagina ha essite '''delite'''.
-Es possibile que se trova detalios in le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
-'rev-deleted-text-view' => "Iste version del pagina ha essite '''delite'''.
+'rev-deleted-comment' => '(commento eliminate)',
+'rev-deleted-user' => '(nomine de usator eliminate)',
+'rev-deleted-event' => '(entrata eliminate)',
+'rev-deleted-user-contribs' => '[nomine de usator o adresse IP removite - modification celate ab contributiones]',
+'rev-deleted-text-permission' => "Iste version del pagina ha essite '''delite'''.
+Es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
+'rev-deleted-text-unhide' => "Iste version del pagina ha essite '''delite'''.
+Es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].
+Tu, qua administrator, pote totevia [$1 vider iste version] si tu vole proceder.",
+'rev-suppressed-text-unhide' => "Iste version del pagina ha essite '''supprimite'''.
+Es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de suppressiones].
+Tu, qua administrator, pote totevia [$1 vider iste version] si tu vole proceder.",
+'rev-deleted-text-view' => "Iste version del pagina ha essite '''delite'''.
Tu, qua administrator, pote vider lo;
-es possibile que se trova detalios in le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
-'rev-deleted-no-diff' => "Tu non pote vider iste diff proque un del versiones ha essite '''delite'''.
-Es possibile que se trova detalios in le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
-'rev-deleted-unhide-diff' => "Un del versiones de iste diff ha essite '''delite'''.
-Es possibile que se trova detalios in le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].
+es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
+'rev-suppressed-text-view' => "Iste version del pagina ha essite '''supprimite'''.
+Tu, qua administrator, pote vider lo; es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de suppressiones].",
+'rev-deleted-no-diff' => "Tu non pote vider iste diff proque un del versiones ha essite '''delite'''.
+Es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
+'rev-suppressed-no-diff' => "Tu non pote vider iste diff proque un del versiones ha essite '''delite'''.",
+'rev-deleted-unhide-diff' => "Un del versiones de iste diff ha essite '''delite'''.
+Es possibile que se trova detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].
Tu, qua administrator, pote ancora [$1 vider iste diff] si tu vole proceder.",
-'rev-delundel' => 'revelar/celar',
-'revisiondelete' => 'Deler/restaurar versiones',
-'revdelete-nooldid-title' => 'Le version de destination es invalide',
-'revdelete-nooldid-text' => 'O tu non ha specificate alcun version(es) de destination pro executar iste
+'rev-suppressed-unhide-diff' => "Un del versiones de iste diff ha essite '''supprimite'''.
+Il pote haber detalios in le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de suppresiones].
+Tu, qua administrator, pote totevia [$1 vider iste diff] si tu vole proceder.",
+'rev-deleted-diff-view' => "Un del versiones de iste diff ha essite '''delite'''.
+Como administrator tu pote vider iste diff; il pote haber detalios in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de deletiones].",
+'rev-suppressed-diff-view' => "Un del versiones de iste diff ha essite '''supprimite'''.
+Como administrator tu pote vider iste diff; il pote haber detalios in le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de suppressiones].",
+'rev-delundel' => 'revelar/celar',
+'rev-showdeleted' => 'monstrar',
+'revisiondelete' => 'Deler/restaurar versiones',
+'revdelete-nooldid-title' => 'Le version de destination es invalide',
+'revdelete-nooldid-text' => 'O tu non ha specificate alcun version(es) de destination pro executar iste
function, o le version specificate non existe, o tu essaya celar le version actual.',
-'revdelete-nologtype-title' => 'Typo de registro non specificate',
-'revdelete-nologtype-text' => 'Tu non ha specificate un typo de registro super le qual iste action debe esser executate.',
-'revdelete-toomanytargets-title' => 'Troppo de destinationes',
-'revdelete-toomanytargets-text' => 'Tu ha specificate troppo de typos de destinationes super le quales iste action debe esser executate.',
-'revdelete-nologid-title' => 'Entrata de registro invalide',
-'revdelete-nologid-text' => 'O tu non ha specificate un evento de registro de destination super le qual iste action debe esser executate, o le entrata specificate non existe.',
-'revdelete-selected' => "'''{{PLURAL:$2|Version seligite|Versiones seligite}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Evento|Eventos}} de registro seligite:'''",
-'revdelete-text' => "'''Le versiones e eventos delite continuara a apparer in le historia e registro del pagina, sed partes de lor contento essera inaccessibile al publico.'''
-
-Altere administratores in {{SITENAME}} continuara a poter acceder al contento celate e pote restaurar lo per medio de iste mesme interfacie, si non se ha definite restrictiones additional.
-Per favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in conformitate con [[{{MediaWiki:Policy-url}}|le politica]].",
-'revdelete-suppress-text' => "Le suppression debe '''solmente''' esser usate pro le sequente casos:
+'revdelete-nologtype-title' => 'Typo de registro non specificate',
+'revdelete-nologtype-text' => 'Tu non ha specificate un typo de registro super le qual iste action debe esser executate.',
+'revdelete-nologid-title' => 'Entrata de registro invalide',
+'revdelete-nologid-text' => 'O tu non ha specificate un evento de registro de destination super le qual iste action debe esser executate, o le entrata specificate non existe.',
+'revdelete-no-file' => 'Le file specificate non existe.',
+'revdelete-show-file-confirm' => 'Es tu secur de voler vider un version delite del file "<nowiki>$1</nowiki>" del $2 a $3?',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-selected' => "'''{{PLURAL:$2|Version seligite|Versiones seligite}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evento|Eventos}} de registro seligite:'''",
+'revdelete-text' => "'''Le versiones e eventos delite continuara a apparer in le historia e registro del pagina, sed partes de lor contento essera inaccessibile al publico.'''
+Altere administratores in {{SITENAME}} continuara a poter acceder al contento celate e pote restaurar lo per medio de iste mesme interfacie, si non se ha definite restrictiones additional.",
+'revdelete-confirm' => 'Per favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in accordo con [[{{MediaWiki:Policy-url}}|le politica]].',
+'revdelete-suppress-text' => "Le suppression debe '''solmente''' esser usate pro le sequente casos:
* Informationes personal inappropriate
*: ''adresses de domicilio e numeros de telephono, numeros de securitate social, etc.''",
-'revdelete-legend' => 'Definir restrictiones de visibilitate',
-'revdelete-hide-text' => 'Celar le texto del version',
-'revdelete-hide-name' => 'Celar action e objectivo',
-'revdelete-hide-comment' => 'Celar le summario del modification',
-'revdelete-hide-user' => 'Celar le nomine de usator o adresse IP del modificator',
-'revdelete-hide-restricted' => 'Supprimer le datos a administratores assi como a alteres',
-'revdelete-suppress' => 'Supprimer le datos a administratores assi como a alteres',
-'revdelete-hide-image' => 'Celar le contento del file',
-'revdelete-unsuppress' => 'Eliminar restrictiones super versiones restaurate',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Applicar al version seligite',
-'revdelete-logentry' => 'cambiava le visibilitate de versiones pro [[$1]]',
-'logdelete-logentry' => 'cambiava le visibilitate de eventos pro [[$1]]',
-'revdelete-success' => "'''Le visibilitate del version ha essite actualisate con successo.'''",
-'logdelete-success' => "'''Le visibilitate del registro ha essite definite con successo.'''",
-'revdel-restore' => 'Cambiar visibilitate',
-'pagehist' => 'Historia del pagina',
-'deletedhist' => 'Historia delite',
-'revdelete-content' => 'contento',
-'revdelete-summary' => 'summario del modification',
-'revdelete-uname' => 'nomine de usator',
-'revdelete-restricted' => 'restrictiones applicate al administratores',
-'revdelete-unrestricted' => 'restrictiones eliminate pro administratores',
-'revdelete-hid' => 'celava $1',
-'revdelete-unhid' => 'revelava $1',
-'revdelete-log-message' => '$1 pro $2 {{PLURAL:$2|version|versiones}}',
-'logdelete-log-message' => '$1 pro $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-legend' => 'Definir restrictiones de visibilitate',
+'revdelete-hide-text' => 'Celar le texto del version',
+'revdelete-hide-image' => 'Celar le contento del file',
+'revdelete-hide-name' => 'Celar action e objectivo',
+'revdelete-hide-comment' => 'Celar le summario del modification',
+'revdelete-hide-user' => 'Celar le nomine de usator o adresse IP del modificator',
+'revdelete-hide-restricted' => 'Supprimer le datos a administratores assi como a alteres',
+'revdelete-radio-same' => '(non cambiar)',
+'revdelete-radio-set' => 'Si',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Supprimer le datos a administratores assi como a alteres',
+'revdelete-unsuppress' => 'Eliminar restrictiones super versiones restaurate',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Applicar al {{PLURAL:$1|version|versiones}} seligite',
+'revdelete-logentry' => 'cambiava le visibilitate de versiones pro [[$1]]',
+'logdelete-logentry' => 'cambiava le visibilitate de eventos pro [[$1]]',
+'revdelete-success' => "'''Le visibilitate del version ha essite actualisate con successo.'''",
+'revdelete-failure' => "'''Le visibilitate del version non poteva esser actualisate:'''
+$1",
+'logdelete-success' => "'''Le visibilitate del registro ha essite definite con successo.'''",
+'logdelete-failure' => "'''Le visibilitate del registro non poteva esser cambiate:'''
+$1",
+'revdel-restore' => 'Cambiar visibilitate',
+'pagehist' => 'Historia del pagina',
+'deletedhist' => 'Historia delite',
+'revdelete-content' => 'contento',
+'revdelete-summary' => 'summario del modification',
+'revdelete-uname' => 'nomine de usator',
+'revdelete-restricted' => 'restrictiones applicate al administratores',
+'revdelete-unrestricted' => 'restrictiones eliminate pro administratores',
+'revdelete-hid' => 'celava $1',
+'revdelete-unhid' => 'revelava $1',
+'revdelete-log-message' => '$1 pro $2 {{PLURAL:$2|version|versiones}}',
+'logdelete-log-message' => '$1 pro $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-hide-current' => 'Error de celar le entrata del $2 a $1: iste es le version actual.
+Illo non pote esser celate.',
+'revdelete-show-no-access' => 'Error de revelar le entrata del $2 a $1: iste entrata ha essite marcate como "restringite".
+Tu non ha accesso a illo.',
+'revdelete-modify-no-access' => 'Error de modificar le entrata del $2 a $1: iste entrata ha essite marcate como "restringite".
+Tu non ha accesso a illo.',
+'revdelete-modify-missing' => 'Error de modificar le entrata con ID $1: illo manca in le base de datos!',
+'revdelete-no-change' => "'''Attention:''' le entrata del $2, $1 jam habeva le configuration requestate de visibilitate.",
+'revdelete-concurrent-change' => 'Error de modificar le entrata del $2, $1: il pare que alcuno altere ha cambiate su stato durante que tu tentava modificar lo.
+Per favor verifica le registros.',
+'revdelete-only-restricted' => 'Error de celar le entrata del $1 a $2: tu non pote render entratas invisibile a administratores sin seliger tamben un del altere optiones de visibilitate.',
+'revdelete-reason-dropdown' => '*Motivos commun pro deletion
+** Violation de copyright
+** Information personal inappropriate',
+'revdelete-otherreason' => 'Altere/additional motivo:',
+'revdelete-reasonotherlist' => 'Altere motivo',
+'revdelete-edit-reasonlist' => 'Modificar motivos pro deletion',
+'revdelete-offender' => 'Autor del version:',
# Suppression log
'suppressionlog' => 'Registro de suppressiones',
@@ -989,67 +1057,13 @@ Nota que le uso del ligamines de navigation causara le perdita de tote cambios i
'mergelogpagetext' => 'Infra es un lista del fusiones le plus recente de un historia de pagina in un altere.',
# Diffs
-'history-title' => 'Historia de versiones de "$1"',
-'difference' => '(Differentia inter versiones)',
-'lineno' => 'Linea $1:',
-'compareselectedversions' => 'Comparar versiones seligite',
-'visualcomparison' => 'Comparation visual',
-'wikicodecomparison' => 'Comparation del wikitexto',
-'editundo' => 'disfacer',
-'diff-multi' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} non es monstrate)',
-'diff-movedto' => 'displaciate verso $1',
-'diff-styleadded' => '$1 stilo addite',
-'diff-added' => '$1 addite',
-'diff-changedto' => 'cambiate a $1',
-'diff-movedoutof' => 'displaciate ex $1',
-'diff-styleremoved' => '$1 stilo eliminate',
-'diff-removed' => '$1 removite',
-'diff-changedfrom' => 'cambiate ab $1',
-'diff-src' => 'origine',
-'diff-withdestination' => 'con destination $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'latitude',
-'diff-height' => 'altitude',
-'diff-p' => "un '''paragrapho'''",
-'diff-blockquote' => "un '''citation'''",
-'diff-h1' => "un '''titulo (nivello 1)'''",
-'diff-h2' => "un '''titulo (nivello 2)'''",
-'diff-h3' => "un '''titulo (nivello 3)'''",
-'diff-h4' => "un '''titulo (nivello 4)'''",
-'diff-h5' => "un '''titulo (nivello 5)'''",
-'diff-pre' => "un '''bloco preformatate'''",
-'diff-div' => "un '''division'''",
-'diff-ul' => "un '''lista non ordinate'''",
-'diff-ol' => "un '''lista ordinate'''",
-'diff-li' => "un '''entrata de lista'''",
-'diff-table' => "un '''tabella'''",
-'diff-tbody' => "le '''contento de un tabella'''",
-'diff-tr' => "un '''linea'''",
-'diff-td' => "un '''cellula'''",
-'diff-th' => "un '''titulo'''",
-'diff-br' => "un '''interruption de linea'''",
-'diff-hr' => "un '''linea horizontal'''",
-'diff-code' => "un '''bloco de codice de computator'''",
-'diff-dl' => "un '''lista de definitiones'''",
-'diff-dt' => "un '''termino a definir'''",
-'diff-dd' => "un '''definition'''",
-'diff-input' => "un '''entrata'''",
-'diff-form' => "un '''formulario'''",
-'diff-img' => "un '''imagine'''",
-'diff-span' => "un '''portata'''",
-'diff-a' => "un '''ligamine'''",
-'diff-i' => "'''cursive'''",
-'diff-b' => "'''grasse'''",
-'diff-strong' => "'''forte'''",
-'diff-em' => "'''emphase'''",
-'diff-font' => "'''typo de litteras'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''delite'''",
-'diff-tt' => "'''latitude fixe'''",
-'diff-sub' => "'''subscripto'''",
-'diff-sup' => "'''superscripto'''",
-'diff-strike' => "'''linea de cancellation'''",
+'history-title' => 'Historia de versiones de "$1"',
+'difference' => '(Differentia inter versiones)',
+'lineno' => 'Linea $1:',
+'compareselectedversions' => 'Comparar versiones seligite',
+'showhideselectedversions' => 'Revelar/celar le versiones seligite',
+'editundo' => 'disfacer',
+'diff-multi' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} non es monstrate)',
# Search results
'searchresults' => 'Resultatos del recerca',
@@ -1057,9 +1071,6 @@ Nota que le uso del ligamines de navigation causara le perdita de tote cambios i
'searchresulttext' => 'Pro plus informationes super le recerca in {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tu cercava \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tote le paginas que comencia con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tote le paginas con ligamines a "$1"]])',
'searchsubtitleinvalid' => "Tu cercava '''$1'''",
-'noexactmatch' => "'''Non existe un pagina con le titulo \"\$1\".'''
-Tu pote [[:\$1|crear iste pagina]].",
-'noexactmatch-nocreate' => "'''Non existe un pagina con titulo \"\$1\".'''",
'toomanymatches' => 'Se retornava troppo de resultatos. Per favor prova un altere consulta.',
'titlematches' => 'Correspondentias in le titulos de paginas',
'notitlematches' => 'Nulle correspondentias in le titulos de paginas',
@@ -1070,16 +1081,15 @@ Tu pote [[:\$1|crear iste pagina]].",
'prevn-title' => '$1 {{PLURAL:$1|resultato|resultatos}} precedente',
'nextn-title' => '$1 {{PLURAL:$1|resultato|resultatos}} sequente',
'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultato|resultatos}} per pagina',
-'viewprevnext' => 'Vider ($1) ($2) ($3).',
+'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Optiones de recerca',
'searchmenu-exists' => "'''Existe un pagina nominate \"[[\$1]]\" in iste wiki'''",
'searchmenu-new' => "'''Crea le pagina \"[[:\$1]]\" in iste wiki!'''",
'searchhelp-url' => 'Help:Contento',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navigar per le paginas con iste prefixo]]',
'searchprofile-articles' => 'Paginas de contento',
-'searchprofile-articles-and-proj' => 'Paginas de contento e de projecto',
-'searchprofile-project' => 'Paginas de projecto',
-'searchprofile-images' => 'Files',
+'searchprofile-project' => 'Paginas de adjuta e del projecto',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Toto',
'searchprofile-advanced' => 'Avantiate',
'searchprofile-articles-tooltip' => 'Cercar in $1',
@@ -1087,8 +1097,6 @@ Tu pote [[:\$1|crear iste pagina]].",
'searchprofile-images-tooltip' => 'Cercar files',
'searchprofile-everything-tooltip' => 'Cercar in tote le contento (includente le paginas de discussion)',
'searchprofile-advanced-tooltip' => 'Cercar in spatios de nomines personalisate',
-'prefs-search-nsdefault' => 'Cercar usante valores predefinite:',
-'prefs-search-nscustom' => 'Cercar in le spatios de nomines personalisate:',
'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 parolas}})',
'search-result-score' => 'Relevantia: $1%',
'search-redirect' => '(redirection ab $1)',
@@ -1101,11 +1109,12 @@ Tu pote [[:\$1|crear iste pagina]].",
'search-mwsuggest-disabled' => 'sin suggestiones',
'search-relatedarticle' => 'Connexe',
'mwsuggest-disable' => 'Disactivar suggestiones via AJAX',
+'searcheverything-enable' => 'Cercar in tote le spatios de nomines',
'searchrelated' => 'connexe',
'searchall' => 'totes',
'showingresults' => "Infra se monstra non plus de {{PLURAL:$1|'''1''' resultato|'''$1''' resultatos}} a partir del numero '''$2'''.",
'showingresultsnum' => "Infra se monstra {{PLURAL:$3|'''1''' resultato|'''$3''' resultatos}} a partir del numero '''$2'''.",
-'showingresultstotal' => "Infra se monstra le {{PLURAL:$4|resultato '''$1''' de '''$3'''|resultatos '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultato '''$1'''|Resultatos '''$1 - $2'''}} de '''$3''' pro '''$4'''",
'nonefound' => "'''Nota:''' Normalmente, es cercate solmente in alcun spatios de nomines.
Tenta prefixar tu consulta con ''all:'' pro cercar in tote le contento (includente paginas de discussion, patronos, etc.), o usa le spatio de nomines desirate como prefixo.",
'search-nonefound' => 'Le recerca non ha producite resultatos.',
@@ -1114,115 +1123,152 @@ Tenta prefixar tu consulta con ''all:'' pro cercar in tote le contento (includen
'powersearch-ns' => 'Cercar in spatios de nomines:',
'powersearch-redir' => 'Listar redirectiones',
'powersearch-field' => 'Cercar',
+'powersearch-togglelabel' => 'Seliger:',
+'powersearch-toggleall' => 'Toto',
+'powersearch-togglenone' => 'Nihil',
'search-external' => 'Recerca externe',
'searchdisabled' => 'Le recerca in {{SITENAME}} es disactivate.
Tu pote cercar via Google in le interim.
Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
+# Quickbar
+'qbsettings' => 'Barra rapide',
+'qbsettings-none' => 'Necun',
+'qbsettings-fixedleft' => 'Fixe a sinistra',
+'qbsettings-fixedright' => 'Fixe a dextra',
+'qbsettings-floatingleft' => 'Flottante a sinistra',
+'qbsettings-floatingright' => 'Flottante a dextra',
+
# Preferences page
-'preferences' => 'Preferentias',
-'mypreferences' => 'Mi preferentias',
-'prefs-edits' => 'Numero de modificationes:',
-'prefsnologin' => 'Tu non ha aperite un session',
-'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} aperir un session] pro poter configurar tu preferentias.',
-'prefsreset' => 'Tu preferentias anterior ha essite restaurate.',
-'qbsettings' => 'Barra rapide',
-'qbsettings-none' => 'Necun',
-'qbsettings-fixedleft' => 'Fixe a sinistra',
-'qbsettings-fixedright' => 'Fixe a dextra',
-'qbsettings-floatingleft' => 'Flottante a sinistra',
-'qbsettings-floatingright' => 'Flottante a dextra',
-'changepassword' => 'Cambiar contrasigno',
-'skin' => 'Stilo',
-'skin-preview' => 'Previsualisation',
-'math' => 'Mathematica',
-'dateformat' => 'Formato de datas',
-'datedefault' => 'Nulle preferentia',
-'datetime' => 'Data e hora',
-'math_failure' => 'Error durante le analyse del syntaxe',
-'math_unknown_error' => 'error incognite',
-'math_unknown_function' => 'function incognite',
-'math_lexing_error' => 'error lexic',
-'math_syntax_error' => 'error de syntaxe',
-'math_image_error' => "Le conversion in PNG ha fallite;
-verifica que le installation sia correcte del programmas ''latex, dvips, gs,'' e ''convert''.",
-'math_bad_tmpdir' => 'Non pote scriber in o crear le directorio temporari "math".',
-'math_bad_output' => 'Non pote scriber in o crear le directorio de output "math".',
-'math_notexvc' => "Le executabile ''texvc'' manca;
-per favor vide math/README pro configurar lo.",
-'prefs-personal' => 'Profilo del usator',
-'prefs-rc' => 'Modificationes recente',
-'prefs-watchlist' => 'Observatorio',
-'prefs-watchlist-days' => 'Numero de dies a monstrar in le observatorio:',
-'prefs-watchlist-days-max' => '(non plus de 7 dies)',
-'prefs-watchlist-edits' => 'Numero maxime de modificationes a monstrar in le observatorio expandite:',
-'prefs-watchlist-edits-max' => '(numero maxime: 1000)',
-'prefs-misc' => 'Misc',
-'prefs-resetpass' => 'Cambiar contrasigno',
-'saveprefs' => 'Confirmar',
-'resetprefs' => 'Reverter cambios',
-'restoreprefs' => 'Restaurar tote le configurationes predefinite',
-'textboxsize' => 'Modification',
-'prefs-edit-boxsize' => 'Dimensiones del fenestra de modification.',
-'rows' => 'Lineas:',
-'columns' => 'Columnas:',
-'searchresultshead' => 'Recerca',
-'resultsperpage' => 'Resultatos per pagina:',
-'contextlines' => 'Lineas per resultato:',
-'contextchars' => 'Characteres de contexto per linea:',
-'stub-threshold' => 'Limite pro formatar le ligamines in <a href="#" class="stub">stilo de peciettas</a> (bytes):',
-'recentchangesdays' => 'Numero de dies a monstrar in modificationes recente:',
-'recentchangesdays-max' => '(non plus de $1 {{PLURAL:$1|die|dies}})',
-'recentchangescount' => 'Numero de modificationes a monstrar in le modificationes recente, in historias de paginas e in registros, per predefinition:',
-'savedprefs' => 'Tu preferentias ha essite confirmate.',
-'timezonelegend' => 'Fuso horari:',
-'timezonetext' => '¹Le numero de horas inter tu hora local e le hora del servitor (UTC).',
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Fuso horari:',
-'timezoneuseserverdefault' => 'Usar le hora del servitor',
-'timezoneuseoffset' => 'Altere (specifica le differentia)',
-'timezoneoffset' => 'Differentia¹:',
-'servertime' => 'Hora del servitor:',
-'guesstimezone' => 'Obtener del navigator',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctico',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceano Atlantic',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceano Indian',
-'timezoneregion-pacific' => 'Oceano Pacific',
-'allowemail' => 'Activar reception de e-mail de altere usatores',
-'prefs-searchoptions' => 'Optiones de recerca',
-'prefs-namespaces' => 'Spatios de nomines',
-'defaultns' => 'Cercar initialmente in iste spatios de nomines:',
-'default' => 'predefinite',
-'files' => 'Files',
-'prefs-custom-css' => 'CSS personalisate',
-'prefs-custom-js' => 'JS personalisate',
+'preferences' => 'Preferentias',
+'mypreferences' => 'Mi preferentias',
+'prefs-edits' => 'Numero de modificationes:',
+'prefsnologin' => 'Tu non ha aperite un session',
+'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aperir un session] pro poter configurar tu preferentias.',
+'changepassword' => 'Cambiar contrasigno',
+'prefs-skin' => 'Stilo',
+'skin-preview' => 'Previsualisation',
+'prefs-math' => 'Mathematica',
+'datedefault' => 'Nulle preferentia',
+'prefs-datetime' => 'Data e hora',
+'prefs-personal' => 'Profilo del usator',
+'prefs-rc' => 'Modificationes recente',
+'prefs-watchlist' => 'Observatorio',
+'prefs-watchlist-days' => 'Numero de dies a monstrar in le observatorio:',
+'prefs-watchlist-days-max' => '(non plus de 7 dies)',
+'prefs-watchlist-edits' => 'Numero maxime de modificationes a monstrar in le observatorio expandite:',
+'prefs-watchlist-edits-max' => '(numero maxime: 1000)',
+'prefs-watchlist-token' => 'Indicio pro le observatorio:',
+'prefs-misc' => 'Misc',
+'prefs-resetpass' => 'Cambiar contrasigno',
+'prefs-email' => 'Optiones de e-mail',
+'prefs-rendering' => 'Apparentia',
+'saveprefs' => 'Confirmar',
+'resetprefs' => 'Reverter cambios',
+'restoreprefs' => 'Restaurar tote le configurationes predefinite',
+'prefs-editing' => 'Modification',
+'prefs-edit-boxsize' => 'Dimensiones del fenestra de modification.',
+'rows' => 'Lineas:',
+'columns' => 'Columnas:',
+'searchresultshead' => 'Recerca',
+'resultsperpage' => 'Resultatos per pagina:',
+'contextlines' => 'Lineas per resultato:',
+'contextchars' => 'Characteres de contexto per linea:',
+'stub-threshold' => 'Limite pro formatar le ligamines in <a href="#" class="stub">stilo de peciettas</a> (bytes):',
+'recentchangesdays' => 'Numero de dies a monstrar in modificationes recente:',
+'recentchangesdays-max' => '(non plus de $1 {{PLURAL:$1|die|dies}})',
+'recentchangescount' => 'Numero de modificationes a monstrar per predefinition:',
+'prefs-help-recentchangescount' => 'Isto include modificationes recente, historias de paginas, e registros.',
+'prefs-help-watchlist-token' => 'Le insertion de un clave secrete in iste campo generara un syndication RSS de tu observatorio.
+Omnes persona cognoscente le clave in iste campo potera leger tu observatorio. Selige ergo un valor secur!
+Ecce un valor aleatorimente generate que tu pote usar: $1',
+'savedprefs' => 'Tu preferentias ha essite confirmate.',
+'timezonelegend' => 'Fuso horari:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => 'Usar le hora del servitor',
+'timezoneuseoffset' => 'Altere (specifica le differentia)',
+'timezoneoffset' => 'Differentia¹:',
+'servertime' => 'Hora del servitor:',
+'guesstimezone' => 'Obtener del navigator',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctico',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceano Atlantic',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceano Indian',
+'timezoneregion-pacific' => 'Oceano Pacific',
+'allowemail' => 'Activar reception de e-mail de altere usatores',
+'prefs-searchoptions' => 'Optiones de recerca',
+'prefs-namespaces' => 'Spatios de nomines',
+'defaultns' => 'Alteremente cercar in iste spatios de nomines:',
+'default' => 'predefinite',
+'prefs-files' => 'Files',
+'prefs-custom-css' => 'CSS personalisate',
+'prefs-custom-js' => 'JS personalisate',
+'prefs-reset-intro' => 'Iste pagina es pro reinitialisar tu preferentias al valores predefinite del sito.
+Le operation non pote esser disfacite.',
+'prefs-emailconfirm-label' => 'Confirmation del e-mail:',
+'prefs-textboxsize' => 'Dimension del fenestra de modification',
+'youremail' => 'E-mail:',
+'username' => 'Nomine de usator:',
+'uid' => 'ID del usator:',
+'prefs-memberingroups' => 'Membro de {{PLURAL:$1|gruppo|gruppos}}:',
+'prefs-registration' => 'Data de registration:',
+'yourrealname' => 'Nomine real:',
+'yourlanguage' => 'Lingua:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Signatura:',
+'prefs-help-signature' => 'Commentos in paginas de discussion debe esser signate con "<nowiki>~~~~</nowiki>" que essera convertite in tu signatura e un indication del data e hora.',
+'badsig' => 'Signatura crude invalide; verificar le etiquettas HTML.',
+'badsiglength' => 'Tu signatura es troppo longe.
+Illo debe haber minus de $1 {{PLURAL:$1|character|characteres}}.',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Non specificate',
+'gender-male' => 'Masculin',
+'gender-female' => 'Feminin',
+'prefs-help-gender' => 'Optional: usate pro facer le software adressar te correctemente secundo tu sexo. Iste information es public.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Le nomine real es optional.
+Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contributiones.',
+'prefs-help-email' => 'Le adresse de e-mail es optional, ma es necessari pro le reinitialisation de tu contrasigno, in caso que tu lo oblida. Tu pote etiam optar pro permitter que altere personas te contacta via tu pagina de usator o de discussion, sin necessitate de revelar tu identitate.',
+'prefs-help-email-required' => 'Le adresse de e-mail es requirite.',
+'prefs-info' => 'Informationes de base',
+'prefs-i18n' => 'Internationalisation',
+'prefs-signature' => 'Signatura',
+'prefs-dateformat' => 'Formato de data',
+'prefs-timeoffset' => 'Differentia de tempore',
+'prefs-advancedediting' => 'Optiones avantiate',
+'prefs-advancedrc' => 'Optiones avantiate',
+'prefs-advancedrendering' => 'Optiones avantiate',
+'prefs-advancedsearchoptions' => 'Optiones avantiate',
+'prefs-advancedwatchlist' => 'Optiones avantiate',
+'prefs-display' => 'Optiones de visualisation',
+'prefs-diffs' => 'Differentias',
# User rights
-'userrights' => 'Gestion de derectos de usator', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gerer gruppos de usatores',
-'userrights-user-editname' => 'Entra un nomine de usator:',
-'editusergroup' => 'Modificar gruppos de usatores',
-'editinguser' => "Cambiamento del derectos del usator '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modificar gruppos de usatores',
-'saveusergroups' => 'Salveguardar gruppos de usatores',
-'userrights-groupsmember' => 'Membro de:',
-'userrights-groups-help' => 'Tu pote alterar le gruppos del quales iste usator es membro:
+'userrights' => 'Gestion de derectos de usator',
+'userrights-lookup-user' => 'Gerer gruppos de usatores',
+'userrights-user-editname' => 'Entra un nomine de usator:',
+'editusergroup' => 'Modificar gruppos de usatores',
+'editinguser' => "Cambiamento del derectos del usator '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modificar gruppos de usatores',
+'saveusergroups' => 'Salveguardar gruppos de usatores',
+'userrights-groupsmember' => 'Membro de:',
+'userrights-groupsmember-auto' => 'Membro implicite de:',
+'userrights-groups-help' => 'Tu pote alterar le gruppos del quales iste usator es membro:
* Un quadrato marcate significa que le usator es membro del gruppo in question.
* Un non marcate significa que ille non es membro de illo.
* Un * indica que tu non potera eliminar le gruppo quando tu lo ha addite, o vice versa.',
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'Tu non ha le permission de modificar le derectos de usatores in altere wikis.',
-'userrights-nodatabase' => 'Le base de datos $1 non existe o non es local.',
-'userrights-nologin' => 'Tu debe [[Special:UserLogin|aperir un session]] con un conto de administrator pro poter assignar derectos de usator.',
-'userrights-notallowed' => 'Tu conto non ha le permission de assignar derectos de usator.',
-'userrights-changeable-col' => 'Gruppos que tu pote modificar',
-'userrights-unchangeable-col' => 'Gruppos que tu non pote modificar',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'Tu non ha le permission de modificar le derectos de usatores in altere wikis.',
+'userrights-nodatabase' => 'Le base de datos $1 non existe o non es local.',
+'userrights-nologin' => 'Tu debe [[Special:UserLogin|aperir un session]] con un conto de administrator pro poter assignar derectos de usator.',
+'userrights-notallowed' => 'Tu conto non ha le permission de assignar derectos de usator.',
+'userrights-changeable-col' => 'Gruppos que tu pote modificar',
+'userrights-unchangeable-col' => 'Gruppos que tu non pote modificar',
# Groups
'group' => 'Gruppo:',
@@ -1275,6 +1321,7 @@ per favor vide math/README pro configurar lo.",
'right-bigdelete' => 'Deler paginas con historias longe',
'right-deleterevision' => 'Deler e restaurar versiones specific de paginas',
'right-deletedhistory' => 'Vider entratas de historia delite, sin lor texto associate',
+'right-deletedtext' => 'Vider texto delite e differentias inter versiones delite',
'right-browsearchive' => 'Cercar in paginas delite',
'right-undelete' => 'Restaurar un pagina',
'right-suppressrevision' => 'Revider e restaurar versiones celate ab administratores',
@@ -1288,6 +1335,8 @@ per favor vide math/README pro configurar lo.",
'right-editprotected' => 'Modificar paginas protegite (sin cascada)',
'right-editinterface' => 'Modificar le interfacie de usator',
'right-editusercssjs' => 'Modificar le files CSS e JS de altere usatores',
+'right-editusercss' => 'Modificar le files CSS de altere usatores',
+'right-edituserjs' => 'Modificar le files JS de altere usatores',
'right-rollback' => 'Rapidemente revocar le modificationes del ultime usator que modificava un pagina particular',
'right-markbotedits' => 'Marcar modificationes de reversion como facite per un bot',
'right-noratelimit' => 'Non esser subjecte al limites de frequentia de actiones',
@@ -1304,6 +1353,8 @@ per favor vide math/README pro configurar lo.",
'right-siteadmin' => 'Blocar e disblocar le base de datos',
'right-reset-passwords' => 'Redefinir le contrasigno de altere usatores',
'right-override-export-depth' => 'Exportar paginas includente paginas ligate usque a un profunditate de 5',
+'right-versiondetail' => 'Monstrar le informationes complete super le versiones del software',
+'right-sendemail' => 'Inviar e-mail a altere usatores',
# User rights log
'rightslog' => 'Registro de derectos de usator',
@@ -1353,6 +1404,15 @@ per favor vide math/README pro configurar lo.",
'recentchanges-legend' => 'Optiones del modificationes recente',
'recentchangestext' => 'Seque le plus recente modificationes a {{SITENAME}} in iste pagina.',
'recentchanges-feed-description' => 'Seque le modificationes le plus recente al wiki in iste syndication.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nove pagina',
+'recentchanges-label-newpage' => 'Iste modification creava un nove pagina',
+'recentchanges-legend-minor' => '$1 - modification minor',
+'recentchanges-label-minor' => 'Iste es un modification minor',
+'recentchanges-legend-bot' => '$1 - modification robot',
+'recentchanges-label-bot' => 'Iste modification ha essite effectuate per un robot',
+'recentchanges-legend-unpatrolled' => '$1 - modification non patruliate',
+'recentchanges-label-unpatrolled' => 'Iste modification non ha ancora essite patruliate',
'rcnote' => "Infra es {{PLURAL:$1|'''1''' modification|le ultime '''$1''' modificationes}} in le ultime {{PLURAL:$2|die|'''$2''' dies}}, actualisate le $4 a $5.",
'rcnotefrom' => 'infra es le modificationes a partir de <b>$2</b> (usque a <b>$1</b>).',
'rclistfrom' => 'Monstrar nove modificationes a partir de $1',
@@ -1379,6 +1439,8 @@ per favor vide math/README pro configurar lo.",
# Recent changes linked
'recentchangeslinked' => 'Modificationes ligate',
+'recentchangeslinked-feed' => 'Modificationes ligate',
+'recentchangeslinked-toolbox' => 'Modificationes ligate',
'recentchangeslinked-title' => 'Modificationes associate a "$1"',
'recentchangeslinked-noresult' => 'Nulle modificationes in paginas ligate durante iste periodo.',
'recentchangeslinked-summary' => "Isto es un lista de modificationes facite recentemente in paginas ligate ab un pagina specific (o in membros de un categoria specific).
@@ -1389,8 +1451,8 @@ Le paginas presente in [[Special:Watchlist|tu observatorio]] appare in litteras
# Upload
'upload' => 'Incargar file',
'uploadbtn' => 'Incargar file',
-'reupload' => 'Recargar',
'reuploaddesc' => 'Cancellar e retornar al formulario de incargamento',
+'upload-tryagain' => 'Submitter description modificate del file',
'uploadnologin' => 'Tu non ha aperite un session',
'uploadnologintext' => 'Tu debe [[Special:UserLogin|aperir un session]] pro poter incargar files.',
'upload_directory_missing' => 'Le directorio de incargamento ($1) manca, e le servitor de web non poteva crear lo.',
@@ -1423,6 +1485,7 @@ Vide le [[Special:NewFiles|galeria de nove files]] pro un presentation plus visu
'illegalfilename' => 'Le nomine de file "$1" contine characteres que non es permittite in le titulos de paginas.
Per favor renomina le file e tenta re-incargar lo.',
'badfilename' => 'Le nomine del imagine esseva cambiate a "$1".',
+'filetype-mime-mismatch' => 'Le extension del nomine del file non corresponde al typo MIME.',
'filetype-badmime' => 'Non es permittite incargar files del typo MIME "$1".',
'filetype-bad-ie-mime' => 'Non pote incargar iste file proque Internet Explorer lo detegerea como "$1", le qual es un typo de file prohibite e potentialmente periculose.',
'filetype-unwanted-type' => "'''\".\$1\"''' es un typo de file non desirate.
@@ -1447,7 +1510,6 @@ Si tu vole que illo appare, tu debe inserer lo manualmente.
* Nomine del file a incargar: '''<tt>[[:$1]]</tt>'''
* Nomine del file existente: '''<tt>[[:$2]]</tt>'''
Per favor selige un altere nomine.",
-'fileexists-thumb' => "<center>'''File existente'''</center>",
'fileexists-thumbnail-yes' => "Iste file pare esser un imagine a grandor reducite ''(miniatura)''. [[$1|thumb]]
Per favor verifica le file '''<tt>[[:$1]]</tt>'''.
Si le file verificate es le mesme imagine a grandor original, non es necessari incargar un miniatura additional.",
@@ -1462,6 +1524,7 @@ Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [
'file-deleted-duplicate' => 'Un file identic a iste file ([[$1]]) esseva ja delite anteriormente. Tu deberea verificar le registro de deletiones concernente iste file ante de re-incargar lo.',
'successfulupload' => 'Incargamento succedite',
'uploadwarning' => 'Advertimento de incargamento',
+'uploadwarning-text' => 'Per favor modifica le description del file ci infra e reproba.',
'savefile' => 'Salveguardar file',
'uploadedimage' => 'incargava "[[$1]]"',
'overwroteimage' => 'incargava un nove version de "[[$1]]"',
@@ -1469,12 +1532,14 @@ Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [
'uploaddisabledtext' => 'Le incargamento de files es disactivate.',
'php-uploaddisabledtext' => 'Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.',
'uploadscripted' => 'Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.',
-'uploadcorrupt' => 'Le file es corrupte o su nomine ha un extension incorrecte.
-Per favor verifica le file e re-incarga lo.',
'uploadvirus' => 'Le file contine un virus! Detalios: $1',
+'upload-source' => 'File de origine',
'sourcefilename' => 'Nomine del file de origine:',
+'sourceurl' => 'URL de origine:',
'destfilename' => 'Nomine del file de destination:',
'upload-maxfilesize' => 'Grandor maximal del files: $1',
+'upload-description' => 'Description del file',
+'upload-options' => 'Optiones de incargamento',
'watchthisupload' => 'Observar iste file',
'filewasdeleted' => 'Un file con iste nomine ha anteriormente essite incargate e postea delite.
Tu debe verificar le $1 ante de re-incargar lo de novo.',
@@ -1499,15 +1564,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- non modificar de alcun modo iste linea -->',
-'upload-proto-error' => 'Protocollo incorrecte',
-'upload-proto-error-text' => 'Le incargamento remote require que le adresses URL comencia con <code>http://</code> o <code>ftp://</code>.',
-'upload-file-error' => 'Error interne',
-'upload-file-error-text' => 'Un error interne occurreva quando se tentava crear un file temporari in le servitor.
+'upload-proto-error' => 'Protocollo incorrecte',
+'upload-proto-error-text' => 'Le incargamento remote require que le adresses URL comencia con <code>http://</code> o <code>ftp://</code>.',
+'upload-file-error' => 'Error interne',
+'upload-file-error-text' => 'Un error interne occurreva quando se tentava crear un file temporari in le servitor.
Per favor contacta un [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Error incognite de incargamento',
-'upload-misc-error-text' => 'Un error non cognoscite occurreva durante le incargamento.
+'upload-misc-error' => 'Error incognite de incargamento',
+'upload-misc-error-text' => 'Un error non cognoscite occurreva durante le incargamento.
Per favor verifica que le adresse URL sia valide e accessibile, e reproba.
Si le problema persiste, contacta un [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'Le URL contineva troppo de redirectiones',
+'upload-unknown-size' => 'Dimension incognite',
+'upload-http-error' => 'Un error HTTP occurreva: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accesso refusate',
+'img-auth-nopathinfo' => 'PATH_INFO mancante.
+Le servitor non ha essite configurate pro passar iste information.
+Illo pote esser basate super CGI e non pote supportar img_auth.
+Vide http://www.mediawiki.org/wiki/Manual:Image_Authorization .',
+'img-auth-notindir' => 'Le cammino requestate non es in le directorio de incargamentos configurate.',
+'img-auth-badtitle' => 'Impossibile construer un titulo valide ex "$1".',
+'img-auth-nologinnWL' => 'Tu non ha aperite un session e "$1" non es in le lista blanc.',
+'img-auth-nofile' => 'File "$1" non existe.',
+'img-auth-isdir' => 'Tu tenta acceder a un directorio "$1".
+Solmente le accesso a files es permittite.',
+'img-auth-streaming' => 'Fluxo de "$1" comenciate.',
+'img-auth-public' => 'Le function de img_auth.php es de reproducer files ex un wiki private.
+Iste wiki es configurate como un wiki public.
+Pro securitate optimal, img_auth.php es disactivate.',
+'img-auth-noread' => 'Le usator non ha accesso pro leger "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL invalide: $1',
+'http-invalid-scheme' => 'URLs con le schema "$1" non es supportate',
+'http-request-error' => 'Error incognite durante le invio del requesta.',
+'http-read-error' => 'Error de lectura HTTP.',
+'http-timed-out' => 'Le requesta HTTP ha expirate.',
+'http-curl-error' => 'Error al obtener datos del URL: $1',
+'http-host-unreachable' => 'Non poteva acceder al URL',
+'http-bad-status' => 'Un problema occurreva durante le requesta HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Non poteva acceder al URL',
@@ -1519,6 +1615,7 @@ Per favor controla que le sito sia in operation, attende un poco e reprova.
Pote esser preferite reprovar quando le sito es minus occupate.',
'license' => 'Licentia:',
+'license-header' => 'Licentia',
'nolicense' => 'Necun licentia seligite',
'license-nopreview' => '(Previsualisation non disponibile)',
'upload_source_url' => ' (un adresse URL valide e publicamente accessibile)',
@@ -1539,6 +1636,7 @@ Tu pote reordinar le lista con un clic super le titulo de un columna.',
'listfiles_count' => 'Versiones',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Historia del file',
'filehist-help' => 'Clicca super un data/hora pro vider le file como appareva a ille tempore.',
'filehist-deleteall' => 'deler totes',
@@ -1553,6 +1651,7 @@ Tu pote reordinar le lista con un clic super le titulo de un columna.',
'filehist-dimensions' => 'Dimensiones',
'filehist-filesize' => 'Grandor del file',
'filehist-comment' => 'Commento',
+'filehist-missing' => 'File mancante',
'imagelinks' => 'Ligamines verso iste file',
'linkstoimage' => 'Le sequente {{PLURAL:$1|pagina ha un ligamine|$1 paginas ha ligamines}} verso iste file:',
'linkstoimage-more' => 'Plus de $1 {{PLURAL:$1|pagina ha un ligamine|paginas ha ligamines}} verso iste file.
@@ -1562,15 +1661,16 @@ Un [[Special:WhatLinksHere/$2|lista complete]] es disponibile.',
'morelinkstoimage' => 'Vider [[Special:WhatLinksHere/$1|plus ligamines]] a iste file.',
'redirectstofile' => 'Le sequente {{PLURAL:$1|file|$1 files}} se redirige a iste file:',
'duplicatesoffile' => 'Le sequente {{PLURAL:$1|file es un duplicato|$1 files es duplicatos}} de iste file ([[Special:FileDuplicateSearch/$2|plus detalios]]):',
-'sharedupload' => 'Iste file proveni de $1 e pote esser usate per altere projectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Per favor vide le $1 pro ulterior informationes.',
-'shareduploadwiki-desc' => 'Le description, prendite del $1 a iste sito, es monstrate infra.',
-'shareduploadwiki-linktext' => 'pagina de description del file',
-'noimage' => 'Non existe un file con iste nomine, sed tu pote $1.',
-'noimage-linktext' => 'cargar un',
+'sharedupload' => 'Iste file proveni de $1 e pote esser usate per altere projectos.',
+'sharedupload-desc-there' => 'Iste file proveni de $1 e pote esser usate per altere projectos.
+Vide le [$2 pagina de description del file] pro ulterior informationes.',
+'sharedupload-desc-here' => 'Iste file proveni de $1 e pote esser usate per altere projectos.
+Le description de su [$2 pagina de description] ibi es monstrate in basso.',
+'filepage-nofile' => 'Nulle file con iste nomine existe.',
+'filepage-nofile-link' => 'Nulle file con iste nomine existe, ma tu pote [$1 incargar lo].',
'uploadnewversion-linktext' => 'Incargar un nove version de iste file',
-'shared-repo-from' => 'ab $1', # $1 is the repository name
-'shared-repo' => 'un deposito pro uso in commun', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'ab $1',
+'shared-repo' => 'un deposito pro uso in commun',
# File reversion
'filerevert' => 'Reverter $1',
@@ -1599,6 +1699,7 @@ Un [[Special:WhatLinksHere/$2|lista complete]] es disponibile.',
** Violation de copyright
** File duplicate',
'filedelete-edit-reasonlist' => 'Modificar motivos pro deletion',
+'filedelete-maintenance' => 'Deletion e restauration de files temporarimente disactivate durante mantenentia.',
# MIME search
'mimesearch' => 'Recerca de typo MIME',
@@ -1621,7 +1722,7 @@ Memora verificar que non existe altere ligamines al patronos ante que tu los del
# Random page
'randompage' => 'Pagina aleatori',
-'randompage-nopages' => 'Il non ha paginas in le spatio de nomines "$1".',
+'randompage-nopages' => 'Il non ha paginas in le sequente {{PLURAL:$2|spatio|spatios}} de nomines: $1.',
# Random redirect
'randomredirect' => 'Redirection aleatori',
@@ -1633,6 +1734,7 @@ Memora verificar que non existe altere ligamines al patronos ante que tu los del
'statistics-header-edits' => 'Statisticas de modificationes',
'statistics-header-views' => 'Statisticas de visitas',
'statistics-header-users' => 'Statisticas de usatores',
+'statistics-header-hooks' => 'Altere statisticas',
'statistics-articles' => 'Paginas de contento',
'statistics-pages' => 'Paginas',
'statistics-pages-desc' => 'Tote le paginas del wiki, includente paginas de discussion, redirectiones, etc.',
@@ -1662,8 +1764,8 @@ Le entratas <s>cancellate</s> ha essite resolvite.',
'brokenredirects' => 'Redirectiones rupte',
'brokenredirectstext' => 'Le sequente redirectiones mena a paginas non existente:',
-'brokenredirects-edit' => '(modificar)',
-'brokenredirects-delete' => '(deler)',
+'brokenredirects-edit' => 'modificar',
+'brokenredirects-delete' => 'deler',
'withoutinterwiki' => 'Paginas sin ligamines de linguas',
'withoutinterwiki-summary' => 'Le sequente paginas non ha ligamines a versiones in altere linguas:',
@@ -1772,7 +1874,7 @@ Es possibile que illo contine un o plus characteres que non pote esser usate in
# Special:Categories
'categories' => 'Categorias',
-'categoriespagetext' => 'Le sequente categorias contine paginas o media.
+'categoriespagetext' => 'Le sequente {{PLURAL:$1|categoria|categorias}} contine paginas o multimedia.
Le [[Special:UnusedCategories|categorias non usate]] non se monstra hic.
Vide etiam le [[Special:WantedCategories|categorias desirate]].',
'categoriesfrom' => 'Monstrar categorias a partir de:',
@@ -1780,8 +1882,9 @@ Vide etiam le [[Special:WantedCategories|categorias desirate]].',
'special-categories-sort-abc' => 'ordinar alphabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contributiones delite de usatores',
-'deletedcontributions-title' => 'Contributiones delite de usatores',
+'deletedcontributions' => 'Contributiones delite de usatores',
+'deletedcontributions-title' => 'Contributiones delite de usatores',
+'sp-deletedcontributions-contribs' => 'contributiones',
# Special:LinkSearch
'linksearch' => 'Ligamines externe',
@@ -1797,6 +1900,16 @@ Protocollos supportate: <tt>$1</tt>',
'listusersfrom' => 'Monstrar usatores a partir de:',
'listusers-submit' => 'Revelar',
'listusers-noresult' => 'Nulle usator trovate.',
+'listusers-blocked' => '(blocate)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista de usatores active',
+'activeusers-intro' => 'Isto es un lista de usatores que habeva alcun typo de activitate intra le ultime $1 {{PLURAL:$1|die|dies}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|modification|modificationes}} in le ultime {{PLURAL:$3|die|$3 dies}}',
+'activeusers-from' => 'Presentar usatores a partir de:',
+'activeusers-hidebots' => 'Celar bots',
+'activeusers-hidesysops' => 'Celar administratores',
+'activeusers-noresult' => 'Nulle usator trovate.',
# Special:Log/newusers
'newuserlogpage' => 'Registro de creation de usatores',
@@ -1807,17 +1920,23 @@ Protocollos supportate: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Conto create automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Derectos del gruppos de usatores',
-'listgrouprights-summary' => 'Lo sequente es un lista de gruppos de usatores definite in iste wiki, con lor derectos de accesso associate.
+'listgrouprights' => 'Derectos del gruppos de usatores',
+'listgrouprights-summary' => 'Lo sequente es un lista de gruppos de usatores definite in iste wiki, con lor derectos de accesso associate.
Il pote haber [[{{MediaWiki:Listgrouprights-helppage}}|informationes additional]] super derectos individual.',
-'listgrouprights-group' => 'Gruppo',
-'listgrouprights-rights' => 'Derectos',
-'listgrouprights-helppage' => 'Help:Derectos de gruppos',
-'listgrouprights-members' => '(lista de membros)',
-'listgrouprights-addgroup' => 'Pote adder {{PLURAL:$2|gruppo|gruppos}}: $1',
-'listgrouprights-removegroup' => 'Pote remover {{PLURAL:$2|gruppo|gruppos}}: $1',
-'listgrouprights-addgroup-all' => 'Pote adder tote le gruppos',
-'listgrouprights-removegroup-all' => 'Pote eliminar tote le gruppos',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Derecto concedite</span>
+* <span class="listgrouprights-revoked">Derecto revocate</span>',
+'listgrouprights-group' => 'Gruppo',
+'listgrouprights-rights' => 'Derectos',
+'listgrouprights-helppage' => 'Help:Derectos de gruppos',
+'listgrouprights-members' => '(lista de membros)',
+'listgrouprights-addgroup' => 'Pote adder {{PLURAL:$2|gruppo|gruppos}}: $1',
+'listgrouprights-removegroup' => 'Pote remover {{PLURAL:$2|gruppo|gruppos}}: $1',
+'listgrouprights-addgroup-all' => 'Pote adder tote le gruppos',
+'listgrouprights-removegroup-all' => 'Pote eliminar tote le gruppos',
+'listgrouprights-addgroup-self' => 'Pote adder {{PLURAL:$2|gruppo|gruppos}} al proprie conto: $1',
+'listgrouprights-removegroup-self' => 'Pote remover {{PLURAL:$2|gruppo|gruppos}} del proprie conto: $1',
+'listgrouprights-addgroup-self-all' => 'Pote adder tote le gruppos al proprie conto',
+'listgrouprights-removegroup-self-all' => 'Pote remover tote le gruppos del proprie conto',
# E-mail user
'mailnologin' => 'Necun adresse de invio',
@@ -1914,9 +2033,12 @@ Como alternativa tu pote reinitialisar le optiones de notification pro tote le p
--
Pro cambiar le configuration de tu observatorio, visita
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Pro retirar le pagina de tu observatorio, visita
+$UNWATCHURL
-Reactiones e ulterior assistentia:
+Feedback e ulterior assistentia:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1928,10 +2050,11 @@ Reactiones e ulterior assistentia:
'exblank' => 'pagina esseva vacue',
'delete-confirm' => 'Deler "$1"',
'delete-legend' => 'Deler',
-'historywarning' => 'Attention: Le pagina que tu va deler ha un historia:',
+'historywarning' => "'''Attention:''' Le pagina que tu vole deler ha un historia de circa $1 {{PLURAL:$1|version|versiones}}:",
'confirmdeletetext' => 'Tu va deler un pagina con tote su historia.
Per favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in accordo con [[{{MediaWiki:Policy-url}}|le politicas]].',
'actioncomplete' => 'Action complete',
+'actionfailed' => 'Action fallite',
'deletedtext' => '"<nowiki>$1</nowiki>" ha essite delite.
Vide $2 pro un registro de deletiones recente.',
'deletedarticle' => 'deleva "[[$1]]"',
@@ -1956,21 +2079,22 @@ Le deletion de illo pote disrumper le operationes del base de datos de {{SITENAM
procede con caution.',
# Rollback
-'rollback' => 'Revocar modificationes',
-'rollback_short' => 'Revocar',
-'rollbacklink' => 'revocar',
-'rollbackfailed' => 'Revocation fallite',
-'cantrollback' => 'Impossibile revocar le modification;
+'rollback' => 'Revocar modificationes',
+'rollback_short' => 'Revocar',
+'rollbacklink' => 'revocar',
+'rollbackfailed' => 'Revocation fallite',
+'cantrollback' => 'Impossibile revocar le modification;
le ultime contributor es le sol autor de iste pagina.',
-'alreadyrolled' => 'Non pote revocar le ultime modification de [[:$1]] per [[User:$2|$2]] ([[User talk:$2|discussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => 'Non pote revocar le ultime modification de [[:$1]] per [[User:$2|$2]] ([[User talk:$2|discussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
un altere persona ha ja modificate o revocate le pagina.
Le ultime modification esseva facite per [[User:$3|$3]] ([[User talk:$3|discussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Le summario del modification esseva: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Reverteva modificationes per [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) al ultime version per [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Revocava modificationes per $1;
+'editcomment' => "Le summario del modification esseva: \"''\$1''\".",
+'revertpage' => 'Reverteva modificationes per [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) al ultime version per [[User:$1|$1]]',
+'revertpage-nouser' => 'Reverteva modificationes per (nomine de usator removite) al ultime version per [[User:$1|$1]]',
+'rollback-success' => 'Revocava modificationes per $1;
retornava al version per $2.',
-'sessionfailure' => 'Il pare haber un problema con tu session de conto;
+'sessionfailure' => 'Il pare haber un problema con tu session de conto;
iste action ha essite cancellate como precaution contra le sequestramento de sessiones.
Per favor preme "retro" e recarga le pagina de ubi tu ha venite, postea reprova.',
@@ -1989,7 +2113,7 @@ Vide le [[Special:ProtectedPages|lista de paginas protegite]] pro le lista de pr
'protectexpiry' => 'Expiration:',
'protect_expiry_invalid' => 'Le tempore de expiration es invalide.',
'protect_expiry_old' => 'Le tempore de expiration es in le passato.',
-'protect-unchain' => 'Disserrar permissiones de renomination',
+'protect-unchain-permissions' => 'Disblocar ulterior optiones de protection',
'protect-text' => "In basso tu pote vider e modificar le nivello de protection del pagina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Tu non pote cambiar le nivellos de protection durante que tu es blocate.
Ecce le configurationes actual del pagina '''$1''':",
@@ -2019,7 +2143,7 @@ Tu pote cambiar le nivello de protection de iste pagina, ma isto non cambiara le
** Guerra de modificationes contraproductive
** Pagina frequentemente visitate',
'protect-edit-reasonlist' => 'Modificar le motivos pro protection',
-'protect-expiry-options' => '1 hora:1 hour,1 die:1 day,1 septimana:1 week,2 septimanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 die:1 day,1 septimana:1 week,2 septimanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year,infinite:infinite',
'restriction-type' => 'Permission:',
'restriction-level' => 'Nivello de restriction:',
'minimum-size' => 'Grandor minime',
@@ -2063,6 +2187,7 @@ Es possibile que le adresse URL es invalide, o que le version ha essite restaura
'undelete-nodiff' => 'Nulle version precedente trovate.',
'undeletebtn' => 'Restaurar',
'undeletelink' => 'vider/restaurar',
+'undeleteviewlink' => 'vider',
'undeletereset' => 'Reinitialisar',
'undeleteinvert' => 'Inverter selection',
'undeletecomment' => 'Motivo:',
@@ -2102,19 +2227,23 @@ $1',
'contributions-title' => 'Contributiones del usator $1',
'mycontris' => 'Mi contributiones',
'contribsub2' => 'Pro $1 ($2)',
-'nocontribs' => 'Necun modification ha essite trovate secundo iste criterios.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Necun modification ha essite trovate secundo iste criterios.',
'uctop' => '(ultime)',
'month' => 'A partir del mense (e anterior):',
'year' => 'A partir del anno (e anterior):',
-'sp-contributions-newbies' => 'Monstrar contributiones de nove contos solmente',
-'sp-contributions-newbies-sub' => 'Pro nove contos',
-'sp-contributions-newbies-title' => 'Contributiones de nove contos de usator',
-'sp-contributions-blocklog' => 'Registro de blocadas',
-'sp-contributions-logs' => 'registros',
-'sp-contributions-search' => 'Cercar contributiones',
-'sp-contributions-username' => 'Adresse IP o nomine de usator:',
-'sp-contributions-submit' => 'Cercar',
+'sp-contributions-newbies' => 'Monstrar contributiones de nove contos solmente',
+'sp-contributions-newbies-sub' => 'Pro nove contos',
+'sp-contributions-newbies-title' => 'Contributiones de nove contos de usator',
+'sp-contributions-blocklog' => 'Registro de blocadas',
+'sp-contributions-deleted' => 'contributiones delite de usatores',
+'sp-contributions-logs' => 'registros',
+'sp-contributions-talk' => 'discussion',
+'sp-contributions-userrights' => 'gestion de derectos de usator',
+'sp-contributions-blocked-notice' => 'Iste usator es actualmente blocate. Le ultime entrata del registro de blocadas es reproducite ci infra pro information:',
+'sp-contributions-search' => 'Cercar contributiones',
+'sp-contributions-username' => 'Adresse IP o nomine de usator:',
+'sp-contributions-submit' => 'Cercar',
# What links here
'whatlinkshere' => 'Referentias a iste pagina',
@@ -2137,6 +2266,7 @@ $1',
# Block/unblock
'blockip' => 'Blocar usator',
+'blockip-title' => 'Blocar usator',
'blockip-legend' => 'Blocar usator',
'blockiptext' => 'Usa le formulario infra pro blocar le accesso de scriptura
a partir de un adresse IP specific.
@@ -2163,7 +2293,7 @@ specific que ha essite vandalisate).',
'ipbenableautoblock' => 'Blocar automaticamente le adresse IP usate le plus recentemente per iste usator, e omne IPs successive desde le quales ille/-a tenta facer modificationes',
'ipbsubmit' => 'Blocar iste adresse',
'ipbother' => 'Altere durata:',
-'ipboptions' => '2 horas:2 hours,1 die:1 day,3 dies:3 days,1 septimana:1 week,2 septimanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 die:1 day,3 dies:3 days,1 septimana:1 week,2 septimanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year,infinite:infinite',
'ipbotheroption' => 'altere',
'ipbotherreason' => 'Motivo altere/additional:',
'ipbhidename' => 'Celar le nomine del usator del modificationes e del listas',
@@ -2193,9 +2323,11 @@ a un adresse IP blocate previemente.',
'ipblocklist-sh-tempblocks' => '$1 blocadas temporari',
'ipblocklist-sh-addressblocks' => '$1 blocadas de singule adresses IP',
'ipblocklist-submit' => 'Cercar',
+'ipblocklist-localblock' => 'Blocada local',
+'ipblocklist-otherblocks' => 'Altere {{PLURAL:$1|blocada|blocadas}}',
'blocklistline' => '$1, $2 blocava $3 ($4)',
'infiniteblock' => 'infinite',
-'expiringblock' => 'expira le $1',
+'expiringblock' => 'expira le $1 a $2',
'anononlyblock' => 'anon. solmente',
'noautoblockblock' => 'autoblocadas disactivate',
'createaccountblock' => 'creation de contos blocate',
@@ -2210,7 +2342,8 @@ a un adresse IP blocate previemente.',
'autoblocker' => 'Automaticamente blocate proque tu adresse IP ha recentemente essite usate per "[[User:$1|$1]]".
Le motivo specificate pro le blocada de $1 es: "$2"',
'blocklogpage' => 'Registro de blocadas',
-'blocklog-fulllog' => 'Registro complete de blocadas',
+'blocklog-showlog' => 'Iste usator ha essite blocate previemente. Le registro de blocadas es providite ci infra pro referentia:',
+'blocklog-showsuppresslog' => 'Iste usator ha essite blocate e celate previemente. Le registro de suppressiones es providite ci infra pro referentia:',
'blocklogentry' => 'blocava [[$1]] con un tempore de expiration de $2 $3',
'reblock-logentry' => 'cambiava configurationes de blocada pro [[$1]] con un tempore de expiration de $2 $3',
'blocklogtext' => 'Isto es un registro de blocadas e disblocadas de usatores.
@@ -2231,10 +2364,12 @@ Vide le [[Special:IPBlockList|lista de blocadas IP]] pro le lista de bannimentos
'ipb_already_blocked' => '"$1" es ja blocate',
'ipb-needreblock' => '== Ja blocate ==
$1 es ja blocate. Esque tu vole cambiar le configurationes?',
+'ipb-otherblocks-header' => 'Altere {{PLURAL:$1|blocada|blocadas}}',
'ipb_cant_unblock' => 'Error: ID de blocada $1 non trovate. Es possibile que illo ha ja essite disblocate.',
'ipb_blocked_as_range' => 'Error: Le IP $1 non es blocate directemente e non pote esser disblocate.
Illo es, nonobstante, blocate como parte del intervallo $2, le qual pote esser disblocate.',
'ip_range_invalid' => 'Intervallo de adresses IP invalide.',
+'ip_range_toolarge' => 'Non es permittite blocar un gamma de adresses IP plus grande que /$1.',
'blockme' => 'Blocar me',
'proxyblocker' => 'Blocator de proxy',
'proxyblocker-disabled' => 'Iste function is disactivate.',
@@ -2245,6 +2380,7 @@ Per favor contacta tu providitor de servicio internet o supporto technic e infor
'sorbs_create_account_reason' => 'Tu adresse IP es listate como proxy aperte in le DNSBL usate per {{SITENAME}}.
Tu non pote crear un conto',
'cant-block-while-blocked' => 'Tu non pote blocar altere usatores durante que tu mesme es blocate.',
+'cant-see-hidden-user' => 'Le usator que tu tenta blocar ha ja essite blocate e celate. Post que tu non ha le derecto hideuser, tu non pote vider o modificar le blocada del usator.',
# Developer tools
'lockdb' => 'Blocar base de datos',
@@ -2293,6 +2429,7 @@ per favor assecura te de haber comprendite le consequentias de isto ante de cont
Il tal casos, tu debera renominar o fusionar le pagina manualmente si desirate.",
'movearticle' => 'Renominar pagina:',
+'moveuserpage-warning' => "'''Attention:''' Tu es super le puncto de renominar un pagina de usator. Nota ben que solmente le pagina, e ''non'' le usator, essera renominate.",
'movenologin' => 'Tu non ha aperite un session',
'movenologintext' => 'Tu debe esser un usator registrate e [[Special:UserLogin|aperir un session]] pro poter renominar un pagina.',
'movenotallowed' => 'Tu non ha le permission de renominar paginas.',
@@ -2303,7 +2440,7 @@ Il tal casos, tu debera renominar o fusionar le pagina manualmente si desirate."
'move-watch' => 'Observar le paginas de origine e de destination',
'movepagebtn' => 'Renominar pagina',
'pagemovedsub' => 'Renomination succedite',
-'movepage-moved' => '\'\'\'"$1" ha essite renominate a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ha essite renominate a "$2"\'\'\'',
'movepage-moved-redirect' => 'Un redirection ha essite create.',
'movepage-moved-noredirect' => 'Le creation de un redirection ha essite supprimite.',
'articleexists' => 'Un pagina con iste nomine ja existe, o le nomine seligite non es valide.
@@ -2347,6 +2484,12 @@ non pote renominar un pagina al mesme titulo.',
'imageinvalidfilename' => 'Le nomine del file de destination es invalide',
'fix-double-redirects' => 'Actualisar tote le redirectiones que puncta verso le titulo original',
'move-leave-redirect' => 'Lassar un redirection',
+'protectedpagemovewarning' => "'''Attention:''' Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Iste pagina ha essite protegite de sorta que solmente usatores registrate pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
+'move-over-sharedrepo' => '== File existe ==
+[[:$1]] existe ja in un deposito usate in commun. Si tu renomina le file a iste titulo, illo supplantara le file del deposito.',
+'file-exists-sharedrepo' => 'Le nomine de file seligite es ja in uso in un deposito usate in commun.
+Per favor selige un altere nomine.',
# Export
'export' => 'Exportar paginas',
@@ -2369,15 +2512,21 @@ In le secunde caso tu pote etiam usar un ligamine, p.ex. [[{{#Special:Export}}/{
'export-pagelinks' => 'Includer paginas ligate a un profunditate de:',
# Namespace 8 related
-'allmessages' => 'Messages del systema',
-'allmessagesname' => 'Nomine',
-'allmessagesdefault' => 'Texto predefinite',
-'allmessagescurrent' => 'Texto actual',
-'allmessagestext' => 'Isto es un lista de messages de systema disponibile in le spatio de nomines MediaWiki.
+'allmessages' => 'Messages del systema',
+'allmessagesname' => 'Nomine',
+'allmessagesdefault' => 'Texto predefinite',
+'allmessagescurrent' => 'Texto actual',
+'allmessagestext' => 'Isto es un lista de messages de systema disponibile in le spatio de nomines MediaWiki.
Per favor visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] si tu desira contribuer al localisation general de MediaWiki.',
-'allmessagesnotsupportedDB' => "Iste pagina non pote esser usate proque '''\$wgUseDatabaseMessages''' ha essite disactivate.",
-'allmessagesfilter' => 'Filtro de nomine de message:',
-'allmessagesmodified' => 'Monstrar solmente messages modificate',
+'allmessagesnotsupportedDB' => "Iste pagina non pote esser usate proque '''\$wgUseDatabaseMessages''' ha essite disactivate.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar per stato de personalisation:',
+'allmessages-filter-unmodified' => 'Non modificate',
+'allmessages-filter-all' => 'Totes',
+'allmessages-filter-modified' => 'Modificate',
+'allmessages-prefix' => 'Filtrar per prefixo:',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Ir',
# Thumbnails
'thumbnail-more' => 'Aggrandir',
@@ -2387,6 +2536,9 @@ Per favor visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisat
'djvu_no_xml' => 'Impossibile obtener XML pro file DjVu',
'thumbnail_invalid_params' => 'Parametros de miniatura invalide',
'thumbnail_dest_directory' => 'Impossibile crear directorio de destination',
+'thumbnail_image-type' => 'typo de imagine non supportate',
+'thumbnail_gd-library' => 'le configuration del bibliotheca GD es incomplete: manca le function $1',
+'thumbnail_image-missing' => 'le file pare mancar: $1',
# Special:Import
'import' => 'Importar paginas',
@@ -2453,6 +2605,7 @@ Per favor usa le previsualisation ante de publicar.',
Tu pote vider su codice-fonte.',
'tooltip-ca-history' => 'Versiones anterior de iste pagina',
'tooltip-ca-protect' => 'Proteger iste pagina',
+'tooltip-ca-unprotect' => 'Disproteger iste pagina',
'tooltip-ca-delete' => 'Deler iste pagina',
'tooltip-ca-undelete' => 'Restaurar le modificationes facite a iste pagina ante que illo esseva delite',
'tooltip-ca-move' => 'Renominar iste pagina',
@@ -2463,6 +2616,7 @@ Tu pote vider su codice-fonte.',
'tooltip-search-fulltext' => 'Cercar iste texto in le paginas',
'tooltip-p-logo' => 'Pagina principal',
'tooltip-n-mainpage' => 'Visitar le pagina principal',
+'tooltip-n-mainpage-description' => 'Visitar le pagina principal',
'tooltip-n-portal' => 'A proposito del projecto, que tu pote facer, ubi trovar cosas',
'tooltip-n-currentevents' => 'Informationes de fundo a proposito de eventos actual',
'tooltip-n-recentchanges' => 'Le lista de modificationes recente in le wiki.',
@@ -2510,6 +2664,7 @@ Es possibile adder un motivo in le summario.',
'chick.css' => '/* Le CSS placiate hic afficera le usatores del apparentia Chique */',
'simple.css' => '/* Le CSS placiate hic afficera le usatores del apparentia Simple */',
'modern.css' => '/* Le CSS placiate hic afficera le usatores del apparentia Moderne */',
+'vector.css' => '/* Le CSS placiate hic afficera le usatores del apparentia Vector */',
'print.css' => '/* Le CSS placiate hic influentiara le apparentia del paginas imprimite */',
'handheld.css' => '/* Le CSS placiate hic afficera le apparatos mobile basate super le apparentia configurate in $wgHandheldStyle */',
@@ -2523,6 +2678,7 @@ Es possibile adder un motivo in le summario.',
'chick.js' => '/* Omne JavaScript hic se executara pro le usatores del apparentia Chique */',
'simple.js' => '/* Omne JavaScript hic se executara pro le usatores del apparentia Simple */',
'modern.js' => '/* Omne JavaScript hic se executara pro le usatores del apparentia Moderne */',
+'vector.js' => '/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */',
# Metadata
'nodublincore' => 'Le metadatos Dublin Core RDF ha essite disactivate in iste servitor.',
@@ -2532,10 +2688,12 @@ Es possibile adder un motivo in le summario.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usator|Usatores}} anonyme de {{SITENAME}}',
'siteuser' => 'Usator $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Le modification le plus recente de iste pagina esseva facite le $1 a $2 per $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'le usator anonyme $1 de {{SITENAME}}',
+'lastmodifiedatby' => 'Le modification le plus recente de iste pagina esseva facite le $1 a $2 per $3.',
'othercontribs' => 'A base de contributiones per $1.',
'others' => 'alteres',
'siteusers' => 'le {{PLURAL:$2|usator|usatores}} $1 de {{SITENAME}}',
+'anonusers' => 'le {{PLURAL:$2|usator|usatores}} anonyme $1 de {{SITENAME}}',
'creditspage' => 'Autores del pagina',
'nocredits' => 'Nulle information es disponibile super le autores de iste pagina.',
@@ -2574,11 +2732,24 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
'mw_math_modern' => 'Recommendate pro navigatores moderne',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Error durante le analyse del syntaxe',
+'math_unknown_error' => 'error incognite',
+'math_unknown_function' => 'function incognite',
+'math_lexing_error' => 'error lexic',
+'math_syntax_error' => 'error de syntaxe',
+'math_image_error' => "Le conversion in PNG ha fallite;
+verifica que le installation sia correcte del programmas ''latex, dvips, gs,'' e ''convert''.",
+'math_bad_tmpdir' => 'Non pote scriber in o crear le directorio temporari "math".',
+'math_bad_output' => 'Non pote scriber in o crear le directorio de output "math".',
+'math_notexvc' => "Le executabile ''texvc'' manca;
+per favor vide math/README pro configurar lo.",
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como patruliate',
'markaspatrolledtext' => 'Marcar iste pagina como patruliate',
'markedaspatrolled' => 'Marcate como patruliate',
-'markedaspatrolledtext' => 'Le version seligite ha essite marcate como patruliate.',
+'markedaspatrolledtext' => 'Le version seligite de [[:$1]] ha essite marcate como patruliate.',
'rcpatroldisabled' => 'Patrulia de modificationes recente disactivate',
'rcpatroldisabledtext' => 'Le functionalitate de patrulia de modificationes recente es disactivate al momento.',
'markedaspatrollederror' => 'Impossibile marcar como patruliate',
@@ -2608,13 +2779,10 @@ $1',
'previousdiff' => '← Version plus ancian',
'nextdiff' => 'Version plus nove →',
-# Visual comparison
-'visual-comparison' => 'Comparation visual',
-
# Media information
'mediawarning' => "'''Attention''': Iste typo de file pote continer codice maligne.
Le execution de illo pote compromitter le securitate de tu systema.",
-'imagemaxsize' => 'Limitar le imagines in paginas de description de files a:',
+'imagemaxsize' => "Dimension maxime de imagines:<br />''(pro paginas de description de files)''",
'thumbsize' => 'Grandor del miniaturas:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginas}}',
'file-info' => '(grandor del file: $1, typo MIME: $2)',
@@ -2623,6 +2791,8 @@ Le execution de illo pote compromitter le securitate de tu systema.",
'svg-long-desc' => '(File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3)',
'show-big-image' => 'Plen resolution',
'show-big-image-thumb' => '<small>Dimensiones de iste previsualisation: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'repetente',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|photogramma|photogrammas}}',
# Special:NewFiles
'newimages' => 'Galeria de nove files',
@@ -2657,7 +2827,7 @@ Le alteres essera initialmente celate.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Latitude',
@@ -2784,14 +2954,14 @@ Le alteres essera initialmente celate.
'exif-unknowndate' => 'Data incognite',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Invertite horizontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotate 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Invertite verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotate 90° in senso antihorologic e invertite verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotate 90° in senso horologic', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotate 90° in senso horologic e invertite verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotate 90° in senso antihorologic', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Invertite horizontalmente',
+'exif-orientation-3' => 'Rotate 180°',
+'exif-orientation-4' => 'Invertite verticalmente',
+'exif-orientation-5' => 'Rotate 90° in senso antihorologic e invertite verticalmente',
+'exif-orientation-6' => 'Rotate 90° in senso horologic',
+'exif-orientation-7' => 'Rotate 90° in senso horologic e invertite verticalmente',
+'exif-orientation-8' => 'Rotate 90° in senso antihorologic',
'exif-planarconfiguration-1' => 'formato a blocos (chunky)',
'exif-planarconfiguration-2' => 'formato planar',
@@ -2913,7 +3083,7 @@ Le alteres essera initialmente celate.
'exif-gpsmeasuremode-2' => 'Mesura bidimensional',
'exif-gpsmeasuremode-3' => 'Mesura tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometros per hora',
'exif-gpsspeed-m' => 'Millias per hora',
'exif-gpsspeed-n' => 'Nodos',
@@ -2932,6 +3102,7 @@ Le alteres essera initialmente celate.
'watchlistall2' => 'totes',
'namespacesall' => 'totes',
'monthsall' => 'totes',
+'limitall' => 'totes',
# E-mail address confirmation
'confirmemail' => 'Confirmar adresse de e-mail',
@@ -3064,7 +3235,7 @@ Tu pote etiam [[Special:Watchlist/edit|usar le editor standard]].',
'duplicate-defaultsort' => 'Attention: Le clave de ordination predefinite "$2" supplanta le anterior clave de ordination predefinite "$1".',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Extensiones installate',
'version-specialpages' => 'Paginas special',
'version-parserhooks' => 'Uncinos del analysator syntactic',
@@ -3078,7 +3249,7 @@ Tu pote etiam [[Special:Watchlist/edit|usar le editor standard]].',
'version-skin-extension-functions' => 'Functiones de extension de stilos',
'version-hook-name' => 'Nomine del uncino',
'version-hook-subscribedby' => 'Subscribite per',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licentia',
'version-software' => 'Software installate',
'version-software-product' => 'Producto',
@@ -3159,4 +3330,15 @@ Entra le nomine del file sin le prefixo \"{{ns:file}}:\".",
'dberr-outofdate' => 'Nota que lor indices de nostre contento pote esser obsolete.',
'dberr-cachederror' => 'Lo sequente es un copia del cache del pagina requestate, e pote esser obsolete.',
+# HTML forms
+'htmlform-invalid-input' => 'Il ha problemas con alique que tu entrava',
+'htmlform-select-badoption' => 'Le valor que tu specificava non es un option valide.',
+'htmlform-int-invalid' => 'Le valor que tu specificava non es un numero integre.',
+'htmlform-float-invalid' => 'Le valor que tu specificava non es un numero.',
+'htmlform-int-toolow' => 'Le valor que tu specificava es sub le minimo de $1',
+'htmlform-int-toohigh' => 'Le valor que tu specificava es super le maximo de $1',
+'htmlform-submit' => 'Submitter',
+'htmlform-reset' => 'Disfacer modificationes',
+'htmlform-selectorother-other' => 'Altere',
+
);
diff --git a/languages/messages/MessagesId.php b/languages/messages/MessagesId.php
index ff56dcc5..c66c596d 100644
--- a/languages/messages/MessagesId.php
+++ b/languages/messages/MessagesId.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author -iNu-
* @author Bennylin
* @author Borgx
* @author Farras
@@ -14,6 +15,7 @@
* @author IvanLanin
* @author Iwan Novirion
* @author Kenrick95
+ * @author McDutchie
* @author Meursault2004
* @author Remember the dot
* @author Rex
@@ -21,9 +23,6 @@
* @author לערי ריינהארט
*/
-/**
- * Transform table for decimal point '.' and thousands separator ','
- */
$separatorTransformTable = array(',' => '.', '.' => ',' );
$namespaceNames = array(
@@ -68,203 +67,233 @@ $bookstoreList = array(
$magicWords = array(
'redirect' => array( '0', '#ALIH', '#REDIRECT' ),
- 'notoc' => array( '0', '__TANPADAFTARISI__', '__NOTOC__' ),
- 'nogallery' => array( '0', '__TANPAGALERI__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__PAKSADAFTARISI__', '__FORCETOC__' ),
- 'toc' => array( '0', '__DAFTARISI__', '__TOC__' ),
- 'noeditsection' => array( '0', '__TANPASUNTINGANBAGIAN__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'BULANKINI', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'NAMABULANKINI', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'NAMASINGKATBULANKINI', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'BULANINISINGKAT', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'HARIKINI', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'HARIKINI2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'NAMAHARIKINI', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'TAHUNKINI', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'WAKTUKINI', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'JAMKINI', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'BULANLOKAL', 'LOCALMONTH' ),
- 'localmonthname' => array( '1', 'NAMABULANLOKAL', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( '1', 'NAMAJENDERBULANLOKAL', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( '1', 'NAMASINGKATBULANLOKAL', 'LOCALMONTHABBREV' ),
- 'localday' => array( '1', 'HARILOKAL', 'LOCALDAY' ),
- 'localday2' => array( '1', 'HARILOKAL2', 'LOCALDAY2' ),
- 'localdayname' => array( '1', 'HARILOKAL', 'LOCALDAYNAME' ),
- 'localyear' => array( '1', 'TAHUNLOKAL', 'LOCALYEAR' ),
- 'localtime' => array( '1', 'WAKTULOKAL', 'LOCALTIME' ),
- 'localhour' => array( '1', 'JAMLOKAL', 'LOCALHOUR' ),
- 'numberofpages' => array( '1', 'JUMLAHHALAMAN', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( '1', 'JUMLAHARTIKEL', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'JUMLAHBERKAS', 'NUMBEROFFILES' ),
- 'numberofusers' => array( '1', 'JUMLAHPENGGUNA', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( '1', 'JUMLAHSUNTINGAN', 'NUMBEROFEDITS' ),
- 'pagename' => array( '1', 'NAMAHALAMAN', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'NAMAHALAMANE', 'PAGENAMEE' ),
- 'namespace' => array( '1', 'RUANGNAMA', 'NAMESPACE' ),
- 'namespacee' => array( '1', 'RUANGNAMAE', 'NAMESPACEE' ),
- 'talkspace' => array( '1', 'RUANGBICARA', 'TALKSPACE' ),
- 'talkspacee' => array( '1', 'RUANGBICARAE', 'TALKSPACEE' ),
- 'subjectspace' => array( '1', 'RUANGUTAMA', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( '1', 'RUANGUTAMAE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( '1', 'NAMALENGKAPHALAMAN', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( '1', 'NAMALENGKAPHALAMANE', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'NAMASUBHALAMAN', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'NAMASUBHALAMANE', 'SUBPAGENAMEE' ),
- 'basepagename' => array( '1', 'NAMADASARHALAMAN', 'BASEPAGENAME' ),
- 'basepagenamee' => array( '1', 'NAMADASARHALAMANE', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'NAMAHALAMANBICARA', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'NAMAHALAMANBICARAE', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( '1', 'NAMAHALAMANARTIKEL', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( '1', 'NAMAHALAMANARTIKELE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( '0', 'PESAN:', 'MSG:' ),
- 'subst' => array( '0', 'GANTI:', 'SUBST:' ),
- 'img_thumbnail' => array( '1', 'miniatur', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ),
- 'img_right' => array( '1', 'kanan', 'right' ),
- 'img_left' => array( '1', 'kiri', 'left' ),
- 'img_none' => array( '1', 'tanpa', 'none' ),
- 'img_center' => array( '1', 'tengah', 'center', 'centre' ),
- 'img_framed' => array( '1', 'bingkai', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( '1', 'tanpabingkai', 'frameless' ),
- 'img_page' => array( '1', 'halaman=$1', 'page=$1', 'page $1' ),
- 'img_upright' => array( '1', 'tegak', 'tegak=$1', 'tegak $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( '1', 'batas', 'border' ),
+ 'notoc' => array( '0', '__TANPADAFTARISI__', '__NIRDASI__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__TANPAGALERI__', '__NIRGAL__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__PAKSADAFTARISI__', '__PAKSADASI__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__DAFTARISI__', '__DASI__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__TANPASUNTINGANBAGIAN__', '__NIRSUBA__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__TANPAKEPALA__', '__NIRLA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'BULANKINI', 'BULANKINI2', 'BUKIN', 'BUKIN2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'BULANKINI1', 'BUKIN1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NAMABULANKINI', 'NAMBUKIN', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NAMAJENDERBULANKINI', 'NAMJENBUKIN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'NAMASINGKATBULANKINI', 'BULANINISINGKAT', 'NAMSINGBUKIN', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'HARIKINI', 'HARKIN', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'HARIKINI2', 'HARKIN2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NAMAHARIKINI', 'NAMHARKIN', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'TAHUNKINI', 'TAKIN', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'WAKTUKINI', 'WAKIN', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'JAMKINI', 'JAKIN', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'BULANLOKAL', 'BULANLOKAL2', 'BULOK', 'BULOK2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'BULANLOKAL1', 'BULOK1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'NAMABULANLOKAL', 'NAMBULOK', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'NAMAJENDERBULANLOKAL', 'NAMJENBULOK', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'NAMASINGKATBULANLOKAL', 'NAMSINGBULOK', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'HARILOKAL', 'HALOK', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'HARILOKAL2', 'HALOK2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NAMAHARILOKAL', 'NAMHALOK', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'TAHUNLOKAL', 'TALOK', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'WAKTULOKAL', 'WALOK', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'JAMLOKAL', 'JALOK', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'JUMLAHHALAMAN', 'JUMMAN', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'JUMLAHARTIKEL', 'JUMKEL', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'JUMLAHBERKAS', 'JUMKAS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'JUMLAHPENGGUNA', 'JUMPENG', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'JUMLAHPENGGUNAAKTIF', 'JUMPENGTIF', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'JUMLAHSUNTINGAN', 'JUMTING', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'JUMLAHTAMPILAN', 'JUMTAM', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NAMAHALAMAN', 'NAMMAN', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NAMAHALAMANE', 'NAMMANE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'RUANGNAMA', 'RUNAM', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'RUANGNAMAE', 'RUNAME', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'RUANGBICARA', 'RUBIR', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'RUANGBICARAE', 'RUBIRE', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'RUANGUTAMA', 'RUANGARTIKEL', 'RUTAMA', 'RUTIKEL', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'RUANGUTAMAE', 'RUANGARTIKELE', 'RUTAMAE', 'RUKELE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NAMAHALAMANLENGKAP', 'NAMALENGKAPHALAMAN', 'NAMMANKAP', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'AMAHALAMANLENGKAPE', 'NAMALENGKAPHALAMANE', 'NAMMANKAPE', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NAMASUBHALAMAN', 'NAMAUPAHALAMAN', 'NAMUMAN', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NAMASUBHALAMANE', 'NAMAUPAHALAMANE', 'NAMUMANE', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NAMAHALAMANDASAR', 'NAMADASARHALAMAN', 'NAMMANSAR', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NAMAHALAMANDASARE', 'NAMADASARHALAMANE', 'NAMMANSARE', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NAMAHALAMANBICARA', 'NAMMANBIR', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NAMAHALAMANBICARAE', 'NAMMANBIRE', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NAMAHALAMANUTAMA', 'NAMAHALAMANARTIKEL', 'NAMMANTAMA', 'NAMMANTIKEL', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NAMAHALAMANUTAMAE', 'NAMAHALAMANARTIKELE', 'NAMMANTAMAE', 'NAMMANTIKELE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'PSN:', 'PESAN:', 'MSG:' ),
+ 'subst' => array( '0', 'GNT:', 'GANTI:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'TPL:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'ka', 'kanan', 'right' ),
+ 'img_left' => array( '1', 'ki', 'kiri', 'left' ),
+ 'img_none' => array( '1', 'nir', 'tanpa', 'none' ),
+ 'img_center' => array( '1', 'pus', 'pusat', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'nirbing', 'tanpabingkai', 'frameless' ),
+ 'img_page' => array( '1', 'hal=$1', 'halaman=$1', 'hal $1', 'halaman $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'lurus', 'lurus=$1', 'lurus $1', 'tegak', 'tegak=$1', 'tegak $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'tepi', 'batas', 'border' ),
+ 'img_baseline' => array( '1', 'gada', 'garis dasar', 'baseline' ),
+ 'img_sub' => array( '1', 'upa', 'sub' ),
'img_top' => array( '1', 'atas', 'top' ),
- 'img_text_top' => array( '1', 'atas-teks', 'text-top' ),
+ 'img_text_top' => array( '1', 'atek', 'atas-teks', 'text-top' ),
'img_middle' => array( '1', 'tengah', 'middle' ),
'img_bottom' => array( '1', 'bawah', 'bottom' ),
- 'img_text_bottom' => array( '1', 'bawah-teks', 'text-bottom' ),
- 'sitename' => array( '1', 'NAMASITUS', 'SITENAME' ),
- 'ns' => array( '0', 'RN:', 'NS:' ),
+ 'img_text_bottom' => array( '1', 'batek', 'bawah-teks', 'text-bottom' ),
+ 'img_link' => array( '1', 'pra=$1', 'pranala=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'al=$1', 'alternatif=$1', 'alt=$1' ),
+ 'sitename' => array( '1', 'NAMASITUS', 'NAMSIT', 'SITENAME' ),
+ 'ns' => array( '0', 'RN:', 'RUNAM:', 'NS:' ),
'localurl' => array( '0', 'URLLOKAL', 'LOCALURL:' ),
'localurle' => array( '0', 'URLLOKALE', 'LOCALURLE:' ),
- 'servername' => array( '0', 'NAMASERVER', 'SERVERNAME' ),
+ 'server' => array( '0', 'PELADEN', 'SERVER' ),
+ 'servername' => array( '0', 'NAMAPELADEN', 'NAMASERVER', 'NAMPEL', 'SERVERNAME' ),
'scriptpath' => array( '0', 'LOKASISKRIP', 'SCRIPTPATH' ),
- 'grammar' => array( '0', 'TATABAHASA', 'GRAMMAR:' ),
- 'notitleconvert' => array( '0', '__TANPAKONVERSIJUDUL__', '__NOTITLECONVERT__', '__NOTC__' ),
- 'nocontentconvert' => array( '0', '__TANPAKONVERSIISI__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( '1', 'MINGGUKINI', 'CURRENTWEEK' ),
- 'currentdow' => array( '1', 'HARIDALAMMINGGU', 'CURRENTDOW' ),
- 'localweek' => array( '1', 'MINGGULOKAL', 'LOCALWEEK' ),
- 'localdow' => array( '1', 'HARIDALAMMINGGULOKAL', 'LOCALDOW' ),
- 'revisionid' => array( '1', 'IDREVISI', 'REVISIONID' ),
- 'revisionday' => array( '1', 'HARIREVISI', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'HARIREVISI2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( '1', 'BULANREVISI', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'TAHUNREVISI', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( '1', 'REKAMWAKTUREVISI', 'REVISIONTIMESTAMP' ),
+ 'grammar' => array( '0', 'TATABAHASA', 'TASA', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'JANTINA', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__TANPAKONVERSIJUDUL__', '__NIRKODUL__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__TANPAKONVERSIISI__', '__NIRKOSI__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'MINGGUKINI', 'MIKIN', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'HARIDALAMMINGGU', 'HADAMI', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'MINGGULOKAL', 'MIKAL', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'HARIDALAMMINGGULOKAL', 'HADAMIKAL', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'IDREVISI', 'IREV', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'HARIREVISI', 'HAREV', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'HARIREVISI2', 'HAREV2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'BULANREVISI', 'BUREV', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'TAHUNREVISI', 'TAREV', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'STEMPELWAKTUREVISI', 'REKAMWAKTUREVISI', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'PENGGUNAREVISI', 'REVISIONUSER' ),
'plural' => array( '0', 'JAMAK:', 'PLURAL:' ),
'fullurl' => array( '0', 'URLLENGKAP:', 'FULLURL:' ),
'fullurle' => array( '0', 'URLLENGKAPE', 'FULLURLE:' ),
- 'lcfirst' => array( '0', 'AWALKECIL:', 'LCFIRST:' ),
- 'ucfirst' => array( '0', 'AWALBESAR:', 'UCFIRST:' ),
- 'lc' => array( '0', 'KECIL:', 'LC:' ),
- 'uc' => array( '0', 'BESAR:', 'UC:' ),
+ 'lcfirst' => array( '0', 'AKC:', 'AWALKECIL:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'ABS:', 'AWALBESAR:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'KC:', 'KECIL:', 'HURUFKECIL:', 'LC:' ),
+ 'uc' => array( '0', 'BS:', 'BESAR:', 'HURUFBESAR:', 'UC:' ),
'raw' => array( '0', 'MENTAH:', 'RAW:' ),
- 'displaytitle' => array( '1', 'JUDULTAMPILAN', 'DISPLAYTITLE' ),
+ 'displaytitle' => array( '1', 'JUDULTAMPILAN', 'JUTAM', 'DISPLAYTITLE' ),
'rawsuffix' => array( '1', 'M', 'R' ),
- 'newsectionlink' => array( '1', '__PRANALABAGIANBARU__', '__NEWSECTIONLINK__' ),
- 'currentversion' => array( '1', 'VERSIKINI', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'KODEURL:', 'URLENCODE:' ),
- 'anchorencode' => array( '0', 'KODEJANGKAR', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( '1', 'STEMPELWAKTUKINI', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( '1', 'STEMPELWAKTULOKAL', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( '1', 'MARKAARAH', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( '0', '#BAHASA:', '#LANGUAGE:' ),
- 'contentlanguage' => array( '1', 'BAHASAISI', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( '1', 'HALAMANDIRUANGNAMA:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( '1', 'JUMLAHPENGURUS', 'NUMBEROFADMINS' ),
- 'formatnum' => array( '0', 'FORMATANGKA', 'FORMATNUM' ),
- 'padleft' => array( '0', 'ISIKIRI', 'PADLEFT' ),
- 'padright' => array( '0', 'ISIKANAN', 'PADRIGHT' ),
- 'special' => array( '0', 'istimewa', 'special' ),
- 'defaultsort' => array( '1', 'URUTANBAKU:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'newsectionlink' => array( '1', '__PRANALABAGIANBARU__', '__PRABABA__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '_TANPAPRANALABAGIANBARU__', '__NIRPRABABA__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'VERSIKINI', 'VERKIN', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'KODEURL:', 'KODU:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'KODEJANGKAR', 'KOJANG', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'STEMPELWAKTUKINI', 'STEMWAKIN', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'STEMPELWAKTULOKAL', 'STEMWAKAL', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'MARKAARAH', 'MARRAH', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#BAHASA:', '#BHS:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'BAHASAISI', 'BHSISI', 'BASI', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'HALAMANDIRUANGNAMA:', 'HALDIRN', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'JUMLAHADMIN', 'JUMLAHPENGURUS', 'JUMAD', 'JURUS', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'FORMATANGKA', 'FORANG', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'ISIKIRI', 'IKI', 'PADLEFT' ),
+ 'padright' => array( '0', 'ISIKANAN', 'IKA', 'PADRIGHT' ),
+ 'special' => array( '0', 'istimewa', 'spesial', 'special' ),
+ 'defaultsort' => array( '1', 'URUTANBAKU:', 'UBUR:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'LOKASIBERKAS:', 'LOBER:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'kata kunci', 'takun', 'tag' ),
+ 'hiddencat' => array( '1', '__KATEGORITERSEMBUNYI__', '__KATSEM__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'HALAMANDIKATEGORI', 'HALDIKAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'BESARHALAMAN', 'BESMAN', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEKS__', '__INDEX__' ),
+ 'noindex' => array( '1', '__TANPAINDEKS__', '__NIRDEKS__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'JUMLAHDIKELOMPOK', 'JULDIPOK', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__PENGALIHANSTATIK__', '__PENGALIHANSTATIS__', '__PETIK__', '__PETIS__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'TINGKATPERLINDUNGAN', 'TIPER', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formattanggal', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Pengalihan ganda', 'Pengalihanganda' ),
- 'BrokenRedirects' => array( 'Pengalihan rusak', 'Pengalihanrusak' ),
+ 'DoubleRedirects' => array( 'Pengalihan ganda', 'PengalihanGanda' ),
+ 'BrokenRedirects' => array( 'Pengalihan rusak', 'PengalihanRusak' ),
'Disambiguations' => array( 'Disambiguasi' ),
- 'Userlogin' => array( 'Masuk log', 'Masuklog' ),
- 'Userlogout' => array( 'Keluar log', 'Keluarlog' ),
- 'CreateAccount' => array( 'BuatAkun', 'Buatakun', 'Buat akun' ),
+ 'Userlogin' => array( 'Masuk log', 'MasukLog' ),
+ 'Userlogout' => array( 'Keluar log', 'KeluarLog' ),
+ 'CreateAccount' => array( 'Buat akun', 'BuatAkun' ),
'Preferences' => array( 'Preferensi' ),
- 'Watchlist' => array( 'Daftar pantauan', 'Daftarpantauan' ),
- 'Recentchanges' => array( 'Perubahan terbaru', 'Perubahanterbaru' ),
- 'Upload' => array( 'Pemuatan' ),
- 'Listfiles' => array( 'Daftar berkas', 'Daftarberkas' ),
- 'Newimages' => array( 'Berkas baru', 'Berkasbaru' ),
- 'Listusers' => array( 'Daftar pengguna', 'Daftarpengguna' ),
- 'Listgrouprights' => array( 'Daftar hak kelompok' ),
+ 'Watchlist' => array( 'Daftar pantauan', 'DaftarPantauan' ),
+ 'Recentchanges' => array( 'Perubahan terbaru', 'PerubahanTerbaru' ),
+ 'Upload' => array( 'Pengunggahan', 'Pemuatan', 'Unggah' ),
+ 'Listfiles' => array( 'Daftar berkas', 'DaftarBerkas' ),
+ 'Newimages' => array( 'Berkas baru', 'BerkasBaru' ),
+ 'Listusers' => array( 'Daftar pengguna', 'DaftarPengguna' ),
+ 'Listgrouprights' => array( 'Daftar hak kelompok', 'DaftarHakKelompok', 'DaftarHak' ),
'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Halaman sembarang', 'Halamansembarang' ),
- 'Lonelypages' => array( 'Halaman tak bertuan', 'Halamantakbertuan' ),
- 'Uncategorizedpages' => array( 'Halamantakterkategori' ),
- 'Uncategorizedcategories' => array( 'Kategoritakterkategori' ),
- 'Uncategorizedimages' => array( 'Berkastakterkategori' ),
- 'Uncategorizedtemplates' => array( 'Templattakterkategori' ),
- 'Unusedcategories' => array( 'Kategoritakdigunakan' ),
- 'Unusedimages' => array( 'Berkastakdigunakan' ),
- 'Wantedpages' => array( 'Halamandiinginkan' ),
- 'Wantedcategories' => array( 'Kategoridiinginkan' ),
- 'Mostlinked' => array( 'Palingdituju' ),
- 'Mostlinkedcategories' => array( 'Kategoripalingdigunakan' ),
- 'Mostlinkedtemplates' => array( 'Templatpalingdigunakan' ),
- 'Mostimages' => array( 'Berkastersering' ),
- 'Mostcategories' => array( 'Kategoriterbanyak' ),
- 'Mostrevisions' => array( 'Perubahanterbanyak' ),
- 'Fewestrevisions' => array( 'Perubahantersedikit' ),
- 'Shortpages' => array( 'Halaman pendek', 'Halamanpendek' ),
- 'Longpages' => array( 'Halaman panjang', 'Halamanpanjang' ),
- 'Newpages' => array( 'Halaman baru', 'Halamanbaru' ),
- 'Ancientpages' => array( 'Artikel lama', 'Artikeltertua' ),
- 'Deadendpages' => array( 'Halaman buntu', 'Halamanbuntu' ),
- 'Protectedpages' => array( 'Halamandilindungi' ),
- 'Protectedtitles' => array( 'Judulyangdilindungi' ),
- 'Allpages' => array( 'Daftar halaman', 'Daftarhalaman' ),
- 'Prefixindex' => array( 'Indeks awalan', 'Indeksawalan' ),
- 'Ipblocklist' => array( 'Daftar pemblokiran', 'Daftarblokirip' ),
- 'Specialpages' => array( 'Halaman istimewa', 'Halamanistimewa' ),
- 'Contributions' => array( 'Kontribusi pengguna', 'Kontribusi' ),
- 'Emailuser' => array( 'Suratepengguna' ),
- 'Confirmemail' => array( 'Konfirmasi surat e', 'Konfirmasisurate' ),
- 'Whatlinkshere' => array( 'Pranala balik', 'Pranalabalik' ),
- 'Recentchangeslinked' => array( 'Perubahan terkait', 'Perubahanterkait' ),
- 'Movepage' => array( 'Pindahkan halaman', 'Pindahkanhalaman' ),
- 'Blockme' => array( 'Blokirsaya' ),
- 'Booksources' => array( 'Sumber buku', 'Sumberbuku' ),
- 'Categories' => array( 'Daftar kategori', 'Kategori' ),
+ 'Randompage' => array( 'Halaman sembarang', 'HalamanSembarang' ),
+ 'Lonelypages' => array( 'Halaman yatim', 'Halaman tak bertuan', 'HalamanYatim', 'HalamanTakBertuan' ),
+ 'Uncategorizedpages' => array( 'Halaman tak terkategori', 'HalamanTakTerkategori' ),
+ 'Uncategorizedcategories' => array( 'Kategori tak terkategori', 'KategoriTakTerkategori' ),
+ 'Uncategorizedimages' => array( 'Berkas tak terkategori', 'BerkasTakTerkategori' ),
+ 'Uncategorizedtemplates' => array( 'Templat tak terkategori', 'TemplatTakTerkategori' ),
+ 'Unusedcategories' => array( 'Kategori kosong', 'KategoriKosong', 'Kategori tak terpakai', 'KategoriTakTerpakai' ),
+ 'Unusedimages' => array( 'Berkas tak terpakai', 'BerkasTakTerpakai', 'Berkas tak digunakan', 'BerkasTakDigunakan' ),
+ 'Wantedpages' => array( 'Halaman yang diinginkan', 'HalamanDiinginkan' ),
+ 'Wantedcategories' => array( 'Kategori yang diinginkan', 'KategoriDiinginkan' ),
+ 'Wantedfiles' => array( 'Berkas yang diinginkan', 'BerkasDiinginkan' ),
+ 'Wantedtemplates' => array( 'Templat yang diinginkan', 'TemplatDiinginkan' ),
+ 'Mostlinked' => array( 'Halaman paling digunakan', 'HalamanPalingDigunakan' ),
+ 'Mostlinkedcategories' => array( 'Kategori paling digunakan', 'KategoriPalingDigunakan' ),
+ 'Mostlinkedtemplates' => array( 'Templat paling digunakan', 'TemplatPalingDigunakan' ),
+ 'Mostimages' => array( 'Berkas paling digunakan', 'BerkasPalingDigunakan' ),
+ 'Mostcategories' => array( 'Kategori terbanyak', 'KategoriTerbanyak' ),
+ 'Mostrevisions' => array( 'Perubahan terbanyak', 'PerubahanTerbanyak' ),
+ 'Fewestrevisions' => array( 'Perubahan tersedikit', 'PerubahanTersedikit' ),
+ 'Shortpages' => array( 'Halaman pendek', 'HalamanPendek' ),
+ 'Longpages' => array( 'Halaman panjang', 'HalamanPanjang' ),
+ 'Newpages' => array( 'Halaman baru', 'HalamanBaru' ),
+ 'Ancientpages' => array( 'Artikel lama', 'ArtikelLama' ),
+ 'Deadendpages' => array( 'Halaman buntu', 'HalamanBuntu' ),
+ 'Protectedpages' => array( 'Halaman yang dilindungi', 'HalamanDilindungi' ),
+ 'Protectedtitles' => array( 'Judul yang dilindungi', 'JudulDilindungi' ),
+ 'Allpages' => array( 'Daftar halaman', 'DaftarHalaman' ),
+ 'Prefixindex' => array( 'Indeks awalan', 'IndeksAwalan' ),
+ 'Ipblocklist' => array( 'Daftar pemblokiran', 'DaftarPemblokiran' ),
+ 'Specialpages' => array( 'Halaman istimewa', 'HalamanIstimewa' ),
+ 'Contributions' => array( 'Kontribusi pengguna', 'KontribusiPengguna', 'Kontribusi' ),
+ 'Emailuser' => array( 'Surel pengguna', 'SurelPengguna' ),
+ 'Confirmemail' => array( 'Konfirmasi surel', 'KonfirmasiSurel' ),
+ 'Whatlinkshere' => array( 'Pranala balik', 'PranalaBalik' ),
+ 'Recentchangeslinked' => array( 'Perubahan terkait', 'PerubahanTerkait' ),
+ 'Movepage' => array( 'Pindahkan halaman', 'PindahkanHalaman' ),
+ 'Blockme' => array( 'Blokir saya', 'BlokirSaya' ),
+ 'Booksources' => array( 'Sumber buku', 'SumberBuku' ),
+ 'Categories' => array( 'Daftar kategori', 'DaftarKategori', 'Kategori' ),
'Export' => array( 'Ekspor' ),
'Version' => array( 'Versi' ),
- 'Allmessages' => array( 'Pesan sistem', 'Pesansistem' ),
- 'Blockip' => array( 'Blokir pengguna', 'Blokirip' ),
- 'Undelete' => array( 'Pembatalan penghapusan', 'Batalhapus' ),
+ 'Allmessages' => array( 'Pesan sistem', 'PesanSistem' ),
+ 'Log' => array( 'Catatan' ),
+ 'Blockip' => array( 'Blokir pengguna', 'BlokirPengguna' ),
+ 'Undelete' => array( 'Pembatalan penghapusan', 'PembatalanPenghapusan' ),
'Import' => array( 'Impor' ),
- 'Lockdb' => array( 'Kuncidb' ),
- 'Unlockdb' => array( 'Bukakuncidb' ),
- 'Userrights' => array( 'Hak pengguna', 'Hakpengguna' ),
- 'MIMEsearch' => array( 'Pencarian MIME', 'CariMIME' ),
- 'FileDuplicateSearch' => array( 'Pencarianberkasduplikat' ),
- 'Unwatchedpages' => array( 'Halamantakdipantau' ),
- 'Listredirects' => array( 'Daftar pengalihan', 'Daftarpengalihan' ),
- 'Revisiondelete' => array( 'Hapusrevisi' ),
- 'Unusedtemplates' => array( 'Templattakdigunakan' ),
- 'Randomredirect' => array( 'Pengalihan sembarang', 'Pengalihansembarang' ),
- 'Mypage' => array( 'Halaman saya', 'Halamansaya' ),
- 'Mytalk' => array( 'Pembicaraan saya', 'Pembicaraansaya' ),
- 'Mycontributions' => array( 'Kontribusi saya', 'Kontribusisaya' ),
- 'Listadmins' => array( 'Daftar pengurus', 'Daftarpengurus' ),
- 'Listbots' => array( 'Daftar bot', 'Daftarbot' ),
- 'Popularpages' => array( 'Halaman populer', 'Halamanpopuler' ),
+ 'Lockdb' => array( 'Kunci basis data', 'KunciBasisData' ),
+ 'Unlockdb' => array( 'Buka kunci basis data', 'BukaKunciBasisData' ),
+ 'Userrights' => array( 'Hak pengguna', 'HakPengguna' ),
+ 'MIMEsearch' => array( 'Pencarian MIME', 'PencarianMIME' ),
+ 'FileDuplicateSearch' => array( 'Pencarian berkas duplikat', 'PencarianBerkasDuplikat' ),
+ 'Unwatchedpages' => array( 'Halaman tak terpantau', 'HalamanTakTerpantau' ),
+ 'Listredirects' => array( 'Daftar pengalihan', 'DaftarPengalihan' ),
+ 'Revisiondelete' => array( 'Hapus revisi', 'HapusRevisi' ),
+ 'Unusedtemplates' => array( 'Templat tak terpakai', 'TemplatTakTerpakai' ),
+ 'Randomredirect' => array( 'Pengalihan sembarang', 'PengalihanSembarang' ),
+ 'Mypage' => array( 'Halaman saya', 'HalamanSaya' ),
+ 'Mytalk' => array( 'Pembicaraan saya', 'PembicaraanSaya' ),
+ 'Mycontributions' => array( 'Kontribusi saya', 'KontribusiSaya' ),
+ 'Listadmins' => array( 'Daftar pengurus', 'DaftarPengurus' ),
+ 'Listbots' => array( 'Daftar bot', 'DaftarBot' ),
+ 'Popularpages' => array( 'Halaman populer', 'HalamanPopuler' ),
'Search' => array( 'Pencarian', 'Cari' ),
- 'Resetpass' => array( 'Resetpass', 'Resetsandi' ),
- 'Withoutinterwiki' => array( 'Tanpa interwiki', 'Tanpainterwiki' ),
- 'MergeHistory' => array( 'Sejarah penggabungan', 'Sejarahpenggabungan' ),
- 'Filepath' => array( 'Lokasi arsip', 'Lokasiarsip' ),
- 'Invalidateemail' => array( 'Batalkan validasi surel', 'Batalkanvalidasiemail' ),
- 'Blankpage' => array( 'Halaman kosong' ),
- 'LinkSearch' => array( 'Pencarian pranala' ),
- 'DeletedContributions' => array( 'Kontribusi yang dihapus' ),
+ 'Resetpass' => array( 'Ganti sandi', 'GantiSandi' ),
+ 'Withoutinterwiki' => array( 'Tanpa interwiki', 'TanpaInterwiki' ),
+ 'MergeHistory' => array( 'Riwayat penggabungan', 'RiwayatPenggabungan' ),
+ 'Filepath' => array( 'Lokasi arsip', 'LokasiArsip' ),
+ 'Invalidateemail' => array( 'Batalkan validasi surel', 'BatalkanValidasiSurel' ),
+ 'Blankpage' => array( 'Halaman kosong', 'HalamanKosong' ),
+ 'LinkSearch' => array( 'Pencarian pranala', 'PencarianPranala' ),
+ 'DeletedContributions' => array( 'Kontribusi yang dihapus', 'KontribusiDihapus' ),
+ 'Tags' => array( 'Tag' ),
+ 'Activeusers' => array( 'Pengguna aktif', 'PenggunaAktif' ),
);
$messages = array(
@@ -298,6 +327,7 @@ $messages = array(
'tog-enotifminoredits' => 'Kirimkan saya surel juga pada perubahan kecil',
'tog-enotifrevealaddr' => 'Tampilkan alamat surel saya pada surel notifikasi',
'tog-shownumberswatching' => 'Tunjukkan jumlah pemantau',
+'tog-oldsig' => 'Pratayang tandatangan:',
'tog-fancysig' => 'Perlakukan tanda tangan sebagai teks wiki (tanpa suatu pranala otomatis)',
'tog-externaleditor' => 'Gunakan perangkat lunak pengolah kata luar',
'tog-externaldiff' => 'Gunakan perangkat lunak luar untuk melihat perbedaan suntingan',
@@ -320,6 +350,13 @@ $messages = array(
'underline-never' => 'Tidak pernah',
'underline-default' => 'Bawaan penjelajah web',
+# Font style option in Special:Preferences
+'editfont-style' => 'Gaya tulisan komputer pada kotak penyuntingan:',
+'editfont-default' => 'Bawaan penjelajah web',
+'editfont-monospace' => 'Tulisan Monospace',
+'editfont-sansserif' => 'Tulisan Sans-serif',
+'editfont-serif' => 'Tulisan Serif',
+
# Dates
'sunday' => 'Minggu',
'monday' => 'Senin',
@@ -379,7 +416,7 @@ $messages = array(
'category-media-header' => 'Media dalam kategori "$1"',
'category-empty' => "''Tidak terdapat artikel maupun media dalam kategori ini.''",
'hidden-categories' => '{{PLURAL:$1|Kategori tersembunyi|Kategori tersembunyi}}',
-'hidden-category-category' => 'Kategori tersembunyi', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori tersembunyi',
'category-subcat-count' => '{{PLURAL:$2|Kategori ini hanya memiliki satu subkategori berikut.|Kategori ini memiliki {{PLURAL:$1|subkategori|$1 subkategori}} berikut, dari total $2.}}',
'category-subcat-count-limited' => 'Kategori ini memiliki {{PLURAL:$1|subkategori|$1 subkategori}} berikut.',
'category-article-count' => '{{PLURAL:$2|Kategori ini hanya memiliki satu halaman berikut.|Kategori ini memiliki {{PLURAL:$1|halaman|$1 halaman}}, dari total $2.}}',
@@ -387,6 +424,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kategori ini hanya memiliki satu berkas berikut.|Kategori ini memiliki {{PLURAL:$1|berkas|$1 berkas}} berikut, dari total $2.}}',
'category-file-count-limited' => 'Kategori ini memiliki {{PLURAL:$1|berkas|$1 berkas}} berikut.',
'listingcontinuesabbrev' => 'samb.',
+'index-category' => 'Halaman yang diindeks',
+'noindex-category' => 'Halaman yang tidak diindeks',
'mainpagetext' => "'''MediaWiki telah terpasang dengan sukses'''.",
'mainpagedocfooter' => 'Silakan baca [http://meta.wikimedia.org/wiki/Help:Contents Panduan Pengguna] untuk informasi penggunaan perangkat lunak wiki ini.
@@ -396,10 +435,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Daftar pertanyaan yang sering diajukan mengenai MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
-'about' => 'Tentang',
-'article' => 'Artikel',
-'newwindow' => '(buka di jendela baru)',
-'cancel' => 'Batalkan',
+'about' => 'Tentang',
+'article' => 'Artikel',
+'newwindow' => '(buka di jendela baru)',
+'cancel' => 'Batalkan',
+'moredotdotdot' => 'Lainnya...',
+'mypage' => 'Halaman saya',
+'mytalk' => 'Pembicaraan saya',
+'anontalk' => 'Pembicaraan IP ini',
+'navigation' => 'Navigasi',
+'and' => '&#32;dan',
+
+# Cologne Blue skin
'qbfind' => 'Pencarian',
'qbbrowse' => 'Navigasi',
'qbedit' => 'Sunting',
@@ -407,15 +454,35 @@ $messages = array(
'qbpageinfo' => 'Konteks halaman',
'qbmyoptions' => 'Halaman saya',
'qbspecialpages' => 'Halaman istimewa',
-'moredotdotdot' => 'Lainnya...',
-'mypage' => 'Halaman saya',
-'mytalk' => 'Pembicaraan saya',
-'anontalk' => 'Pembicaraan IP ini',
-'navigation' => 'Navigasi',
-'and' => '&#32;dan',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Bagian baru',
+'vector-action-delete' => 'Hapus',
+'vector-action-move' => 'Pindahkan',
+'vector-action-protect' => 'Lindungi',
+'vector-action-undelete' => 'Pembatalan penghapusan',
+'vector-action-unprotect' => 'Perlindungan',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Bantuan',
+'vector-namespace-image' => 'Berkas',
+'vector-namespace-main' => 'Artikel',
+'vector-namespace-media' => 'Media',
+'vector-namespace-mediawiki' => 'Pesan',
+'vector-namespace-project' => 'Proyek',
+'vector-namespace-special' => 'Istimewa',
+'vector-namespace-talk' => 'Diskusi',
+'vector-namespace-template' => 'Templat',
+'vector-namespace-user' => 'Pengguna',
+'vector-view-create' => 'Buat',
+'vector-view-edit' => 'Sunting',
+'vector-view-history' => 'Versi terdahulu',
+'vector-view-view' => 'Baca',
+'vector-view-viewsource' => 'Lihat sumber',
+'actions' => 'Tindakan',
+'namespaces' => 'Ruang nama',
+'variants' => 'Varian',
'errorpagetitle' => 'Kesalahan',
'returnto' => 'Kembali ke $1.',
@@ -465,18 +532,22 @@ $messages = array(
'otherlanguages' => 'Bahasa lain',
'redirectedfrom' => '(Dialihkan dari $1)',
'redirectpagesub' => 'Halaman pengalihan',
-'lastmodifiedat' => 'Halaman ini terakhir diubah pada $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Halaman ini terakhir diubah pada $2, $1.',
'viewcount' => 'Halaman ini telah diakses sebanyak {{PLURAL:$1|satu kali|$1 kali}}.<br />',
'protectedpage' => 'Halaman yang dilindungi',
'jumpto' => 'Langsung ke:',
'jumptonavigation' => 'navigasi',
'jumptosearch' => 'cari',
+'view-pool-error' => 'Maaf, peladen sedang sibuk pada saat ini.
+Terlalu banyak pengguna berusaha melihat halaman ini.
+Tunggu sebentar sebelum Anda mencoba lagi mengakses halaman ini.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Tentang {{SITENAME}}',
'aboutpage' => 'Project:Perihal',
'copyright' => 'Seluruh teks tersedia sesuai dengan $1.',
-'copyrightpagename' => 'Hak cipta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hak cipta',
'currentevents' => 'Peristiwa terkini',
'currentevents-url' => 'Project:Peristiwa terkini',
@@ -484,8 +555,6 @@ $messages = array(
'disclaimerpage' => 'Project:Penyangkalan umum',
'edithelp' => 'Bantuan penyuntingan',
'edithelppage' => 'Help:Penyuntingan',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Isi',
'mainpage' => 'Halaman Utama',
'mainpage-description' => 'Halaman Utama',
@@ -563,10 +632,6 @@ Permintaan basis data yang terakhir adalah:
"$1"
dari dalam fungsi "$2".
Basis data menghasilkan kesalahan "$3: $4".',
-'noconnect' => 'Wiki ini sedang mengalami masalah teknis dan tidak dapat menghubungi server basis data.<br />
-$1',
-'nodb' => 'Tidak dapat memilih basis data $1',
-'cachederror' => 'Berikut ini adalah salinan <em>cache</em> dari halaman yang diminta, yang mungkin tidak up-to-date.',
'laggedslavemode' => 'Peringatan: Halaman mungkin tidak berisi perubahan terbaru.',
'readonly' => 'Basis data dikunci',
'enterlockreason' => 'Masukkan alasan penguncian, termasuk perkiraan kapan kunci akan dibuka',
@@ -582,6 +647,8 @@ Silakan laporkan hal ini kepada salah seorang [[Special:ListUsers/sysop|Pengurus
'readonly_lag' => 'Basis data telah dikunci otomatis selagi basis data sekunder melakukan sinkronisasi dengan basis data utama',
'internalerror' => 'Kesalahan internal',
'internalerror_info' => 'Kesalahan internal: $1',
+'fileappenderrorread' => 'Tidak dapat membaca "$1" saat penambahan.',
+'fileappenderror' => 'Tidak dapat memasukkan "$1" ke "$2".',
'filecopyerror' => 'Tidak dapat menyalin berkas "$1" ke "$2".',
'filerenameerror' => 'Tidak dapat mengubah nama berkas "$1" menjadi "$2".',
'filedeleteerror' => 'Tidak dapat menghapus berkas "$1".',
@@ -591,7 +658,8 @@ Silakan laporkan hal ini kepada salah seorang [[Special:ListUsers/sysop|Pengurus
'unexpected' => 'Nilai di luar jangkauan: "$1"="$2".',
'formerror' => 'Kesalahan: Tidak dapat mengirimkan formulir',
'badarticleerror' => 'Tindakan ini tidak dapat dilaksanakan di halaman ini.',
-'cannotdelete' => 'Tidak dapat menghapus halaman atau berkas yang diminta.',
+'cannotdelete' => 'Halaman atau berkas "$1" tidak dapat dihapus.
+Mungkin telah dihapus oleh orang lain.',
'badtitle' => 'Judul tidak sah',
'badtitletext' => 'Judul halaman yang diminta tidak sah, kosong, atau judul antarbahasa atau antarwiki yang salah sambung.',
'perfcached' => 'Data berikut ini diambil dari <em>cache</em> dan mungkin bukan data mutakhir:',
@@ -622,7 +690,6 @@ Alasan yang diberikan adalah ''$2''.",
'virus-unknownscanner' => 'Antivirus tidak dikenal:',
# Login and logout pages
-'logouttitle' => 'Keluar log pengguna',
'logouttext' => "'''Anda telah keluar log dari sistem.'''
Anda dapat terus menggunakan {{SITENAME}} secara anonim, atau Anda dapat [[Special:UserLogin|masuk log lagi]] sebagai pengguna yang sama atau pengguna yang lain.
@@ -630,7 +697,6 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
'welcomecreation' => '== Selamat datang, $1! ==
Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] Anda.',
-'loginpagetitle' => 'Masuk log pengguna',
'yourname' => 'Nama pengguna:',
'yourpassword' => 'Kata sandi:',
'yourpasswordagain' => 'Ulangi kata sandi:',
@@ -641,6 +707,7 @@ Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|p
'nav-login-createaccount' => 'Masuk log / buat akun',
'loginprompt' => "Anda harus mengaktifkan ''cookies'' untuk dapat masuk log ke {{SITENAME}}.",
'userlogin' => 'Masuk log / buat akun',
+'userloginnocreate' => 'Masuk log',
'logout' => 'Keluar log',
'userlogout' => 'Keluar log',
'notloggedin' => 'Belum masuk log',
@@ -653,29 +720,8 @@ Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|p
'badretype' => 'Kata sandi yang Anda masukkan salah.',
'userexists' => 'Nama pengguna yang Anda masukkan sudah dipakai.
Silakan pilih nama yang lain.',
-'youremail' => 'Surel:',
-'username' => 'Nama pengguna:',
-'uid' => 'ID pengguna:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|kelompok|kelompok}}:',
-'yourrealname' => 'Nama asli:',
-'yourlanguage' => 'Bahasa:',
-'yourvariant' => 'Varian bahasa',
-'yournick' => 'Nama samaran:',
-'badsig' => 'Tanda tangan mentah tak sah; periksa tag HTML.',
-'badsiglength' => 'Tanda tangan Anda terlalu panjang.
-Jangan lebih dari $1 {{PLURAL:$1|karakter|karakter}}.',
-'yourgender' => 'Jenis kelamin:',
-'gender-unknown' => 'Tak dinyatakan',
-'gender-male' => 'Laki-laki',
-'gender-female' => 'Perempuan',
-'prefs-help-gender' => 'Opsional: digunakan untuk perbaikan penyebutan gender oleh perangkat lunak. Informasi ini akan terbuka untuk umum.',
-'email' => 'Surel',
-'prefs-help-realname' => 'Nama asli bersifat opsional.
-Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan atas hasil kerja Anda.',
'loginerror' => 'Kesalahan masuk log',
-'prefs-help-email' => 'Alamat surel bersifat opsional, namun bila sewaktu-waktu Anda lupa akan kata sandi Anda, kami dapat mengirimkannya melalui surel tersebut.
-Anda juga dapat memilih untuk memungkinkan orang lain menghubungi Anda melalui halaman pengguna atau halaman pembicaraan pengguna Anda tanpa perlu membuka identitas Anda.',
-'prefs-help-email-required' => 'Alamat surel dibutuhkan.',
+'createaccounterror' => 'Tidak dapat membuat akun: $1',
'nocookiesnew' => "Akun pengguna telah dibuat, tetapi Anda belum masuk log. {{SITENAME}} menggunakan ''cookies'' untuk log pengguna. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan masuk log kembali dengan nama pengguna dan kata sandi Anda.",
'nocookieslogin' => "{{SITENAME}} menggunakan ''cookies'' untuk log penggunanya. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan coba lagi.",
'noname' => 'Nama pengguna yang Anda masukkan tidak sah.',
@@ -687,16 +733,18 @@ Periksa kembali ejaan Anda, atau [[Special:UserLogin/signup|buat akun baru]].',
'nosuchusershort' => 'Tidak ada pengguna dengan nama "<nowiki>$1</nowiki>".
Silakan periksa kembali ejaan Anda.',
'nouserspecified' => 'Anda harus memasukkan nama pengguna.',
+'login-userblocked' => 'Pengguna ini diblokir. Tidak diizinkan/diperbolehkan untuk masuk log.',
'wrongpassword' => 'Kata sandi yang Anda masukkan salah. Silakan coba lagi.',
'wrongpasswordempty' => 'Anda tidak memasukkan kata sandi. Silakan coba lagi.',
-'passwordtooshort' => 'Kata sandi Anda tidak sah atau terlalu pendek.
-Kata sandi paling tidak harus terdiri dari {{PLURAL:$1|1 karakter|$1 karakter}} dan harus berbeda dengan nama pengguna Anda.',
+'passwordtooshort' => 'Kata sandi paling tidak harus terdiri dari {{PLURAL:$1|1 karakter|$1 karakter}}.',
+'password-name-match' => 'Kata sandi Anda harus berbeda dari nama pengguna Anda.',
'mailmypassword' => 'Kirim kata sandi baru',
'passwordremindertitle' => 'Peringatan kata sandi dari {{SITENAME}}',
'passwordremindertext' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta kata sandi baru untuk {{SITENAME}} ($4). Kata sandi sementara untuk pengguna "$2" telah dibuatkan dan diset menjadi "$3". Jika memang Anda yang mengajukan permintaan ini, Anda perlu masuk log dan memilih kata sandi baru sekarang. Kata sandi sementara Anda akan kedaluwarsa dalam waktu {{PLURAL:$5|satu hari|$5 hari}}.
Jika orang lain yang melakukan permintaan ini, atau jika Anda telah mengingat kata sandi Anda dan akan tetap menggunakan kata sandi tersebut, silakan abaikan pesan ini dan tetap gunakan kata sandi lama Anda.',
'noemail' => 'Tidak ada alamat surel yang tercatat untuk pengguna "$1".',
+'noemailcreate' => 'Anda perlu menyediakan alamat surel yang sah',
'passwordsent' => 'Kata sandi baru telah dikirimkan ke alamat surel yang didaftarkan untuk "$1".
Silakan masuk log kembali setelah menerima surel tersebut.',
'blocked-mailpassword' => 'Alamat IP Anda diblokir dari penyuntingan dan karenanya tidak diizinkan menggunakan fungsi pengingat kata sandi untuk mencegah penyalahgunaan.',
@@ -719,9 +767,11 @@ Harap masukkan alamat surel dalam format yang benar atau kosongkan isian tersebu
'createaccount-text' => 'Seseorang telah membuat sebuah akun untuk alamat surel Anda di {{SITENAME}} ($4) dengan nama "$2" dan kata sandi "$3". Anda dianjurkan untuk masuk log dan mengganti kata sandi Anda sekarang.
Anda dapat mengabaikan pesan ini jika akun ini dibuat karena suatu kesalahan.',
+'usernamehasherror' => 'Nama pengguna tidak bisa mengandung tanda pagar',
'login-throttled' => 'Anda telah berkali-kali mencoba masuk log.
Silakan menunggu sebelum mencoba lagi.',
'loginlanguagelabel' => 'Bahasa: $1',
+'suspicious-userlogout' => 'Permintaan Anda untuk keluar log ditolak karena tampaknya dikirim oleh penjelajah yang rusak atau proksi penyinggah.',
# Password reset dialog
'resetpass' => 'Ganti kata sandi',
@@ -733,17 +783,13 @@ Silakan menunggu sebelum mencoba lagi.',
'retypenew' => 'Ketik ulang kata sandi baru:',
'resetpass_submit' => 'Atur kata sandi dan masuk log',
'resetpass_success' => 'Kata sandi Anda telah berhasil diubah! Sekarang memproses masuk log Anda...',
-'resetpass_bad_temporary' => 'Kata sandi sementara salah. Anda mungkin pernah berhasil mengganti kata sandi Anda atau telah meminta kata sandi baru.',
'resetpass_forbidden' => 'Kata sandi tidak dapat diubah',
'resetpass-no-info' => 'Anda harus masuk log untuk mengakses halaman ini secara langsung.',
'resetpass-submit-loggedin' => 'Ganti kata sandi',
+'resetpass-submit-cancel' => 'Batalkan',
'resetpass-wrong-oldpass' => 'Kata sandi tidak sah.
Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sandi sementara yang baru.',
'resetpass-temp-password' => 'Kata sandi sementara:',
-'resetpass-log' => 'Log reset kata sandi',
-'resetpass-logtext' => 'Berikut adalah log pengguna yang telah direset kata sandinya oleh seorang pengurus.',
-'resetpass-logentry' => 'mengganti kata sandi untuk $1',
-'resetpass-comment' => 'Alasan mereset kata sandi:',
# Edit page toolbar
'bold_sample' => 'Teks ini akan dicetak tebal',
@@ -818,7 +864,6 @@ Tolong sertakan informasi-informasi ini dalam setiap pertanyaan Anda.',
'blockededitsource' => "Teks '''suntingan Anda''' terhadap '''$1''' ditunjukkan berikut ini:",
'whitelistedittitle' => 'Perlu masuk log untuk menyunting',
'whitelistedittext' => 'Anda harus $1 untuk dapat menyunting artikel.',
-'confirmedittitle' => 'Konfirmasi surel diperlukan untuk melakukan penyuntingan',
'confirmedittext' => 'Anda harus mengkonfirmasikan dulu alamat surel Anda sebelum menyunting halaman.
Harap masukkan dan validasikan alamat surel Anda melalui [[Special:Preferences|halaman preferensi pengguna]] Anda.',
'nosuchsectiontitle' => 'Bagian tidak ditemukan',
@@ -839,9 +884,17 @@ Alamat IP seperti ini mungkin dipakai bersama oleh beberapa pengguna yang berbed
Jika Anda adalah seorang pengguna anonim dan merasa mendapatkan komentar-komentar yang tidak relevan yang ditujukan langsung kepada Anda, silakan [[Special:UserLogin/signup|membuat akun]] atau [[Special:UserLogin|masuk log]] untuk menghindari kerancuan dengan pengguna anonim lainnya di lain waktu.''",
'noarticletext' => 'Saat ini tidak ada teks dalam halaman ini.
Anda dapat [[Special:Search/{{PAGENAME}}|melakukan pencarian untuk judul halaman ini]] di halaman-halaman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log terkait], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} menyunting halaman ini]</span>.',
+'noarticletext-nopermission' => 'Saat ini tidak ada teks di halaman ini.
+Anda dapat [[Special:Search/{{PAGENAME}}|melakukan pencarian untuk judul ini]] di halaman lain atau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log terkait].</span>
+
+Hanya pengguna terdaftar yang telah masuk log yang dapat membuat artikel. Jika Anda ingin membuat artikel dan belum mempunyai akun, silakan <span class="plainlinks">[{{fullurl:{{#Special:Userlogin}}|type=signup}} membuat akun baru] sekarang.</span>',
'userpage-userdoesnotexist' => 'Akun pengguna "$1" tidak terdaftar.',
+'userpage-userdoesnotexist-view' => 'Pengguna "$1" tidak terdaftar.',
+'blocked-notice-logextract' => 'Pengguna ini sedang diblokir.
+Entri log pemblokiran terakhir tersedia di bawah ini sebagai rujukan.',
'clearyourcache' => "'''Catatan:''' Setelah menyimpan preferensi, Anda perlu membersihkan <em>cache</em> penjelajah web Anda untuk melihat perubahan. '''Mozilla / Firefox / Safari:''' tekan ''Ctrl-Shift-R'' (''Cmd-Shift-R'' pada Apple Mac); '''IE:''' tekan ''Ctrl-F5''; '''Konqueror:''': tekan ''F5''; '''Opera''' bersihkan <em>cache</em> melalui menu ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Tips:''' Gunakan tombol 'Lihat pratayang' untuk menguji CSS/JS baru Anda sebelum menyimpannya.",
+'usercssyoucanpreview' => "'''Tips:''' Gunakan tombol \"{{int:showpreview}}\" untuk menguji CSS baru Anda sebelum menyimpannya.",
+'userjsyoucanpreview' => "'''Tips:''' Gunakan tombol \"{{int:showpreview}}\" untuk menguji JS baru Anda sebelum menyimpannya.",
'usercsspreview' => "'''Ingatlah bahwa Anda sedang menampilkan pratayang dari CSS Anda.
Pratayang ini belum disimpan!'''",
'userjspreview' => "'''Ingatlah bahwa yang Anda lihat hanyalah pratayang JavaScript Anda, dan bahwa pratayang tersebut belum disimpan!'''",
@@ -882,13 +935,16 @@ Harap pertimbangkan untuk memecah halaman menjadi beberapa bagian yang lebih kec
Anda mungkin perlu menyalin teks suntingan Anda ini dan menyimpannya ke sebuah berkas teks dan memuatkannya lagi setelah pemeliharaan selesai.'''
Pengurus yang mengunci basis data memberikan penjelasan berikut: $1",
-'protectedpagewarning' => "'''PERINGATAN: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya.'''",
-'semiprotectedpagewarning' => "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.",
+'protectedpagewarning' => "'''Peringatan: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus yang dapat menyuntingnya.'''
+Entri catatan terakhir disediakan di bawah untuk referensi:",
+'semiprotectedpagewarning' => "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.
+Entri catatan terakhir disediakan di bawah untuk referensi:",
'cascadeprotectedwarning' => "'''PERINGATAN:''' Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'perlindungan runtun':",
-'titleprotectedwarning' => "'''PERINGATAN: Halaman ini telah dikunci hingga diperlukan [[Special:ListGroupRights|hak khusus]] untuk membuatnya.'''",
-'templatesused' => 'Templat yang digunakan di halaman ini:',
-'templatesusedpreview' => 'Templat yang digunakan di pratayang ini:',
-'templatesusedsection' => 'Templat yang digunakan di bagian ini:',
+'titleprotectedwarning' => "'''Peringatan: Halaman ini telah dilindungi sehingga diperlukan [[Special:ListGroupRights|hak khusus]] untuk membuatnya.'''
+Entri catatan terakhir disediakan di bawah untuk referensi:",
+'templatesused' => '{{PLURAL:$1|Templat|Templat}} yang digunakan di halaman ini:',
+'templatesusedpreview' => '{{PLURAL:$1|Templat|Templat}} yang digunakan di pratayang ini:',
+'templatesusedsection' => '{{PLURAL:$1|Templat|Templat}} yang digunakan di bagian ini:',
'template-protected' => '(dilindungi)',
'template-semiprotected' => '(semi-perlindungan)',
'hiddencategories' => 'Halaman ini adalah anggota dari {{PLURAL:$1|1 kategori tersembunyi|$1 kategori tersembunyi}}:',
@@ -897,15 +953,18 @@ Pengurus yang mengunci basis data memberikan penjelasan berikut: $1",
'nocreatetext' => '{{SITENAME}} telah membatasi pembuatan halaman-halaman baru.
Anda dapat kembali dan menyunting halaman yang telah ada, atau silakan [[Special:UserLogin|masuk log atau membuat akun]].',
'nocreate-loggedin' => 'Anda tak memiliki hak akses untuk membuat halaman baru.',
+'sectioneditnotsupported-title' => 'Penyuntingan bagian tidak didukung',
+'sectioneditnotsupported-text' => 'Penyuntingan bagian tidak didukung di halaman sunting ini.',
'permissionserrors' => 'Kesalahan Hak Akses',
'permissionserrorstext' => 'Anda tak memiliki hak untuk melakukan hal itu karena {{PLURAL:$1|alasan|alasan-alasan}} berikut:',
'permissionserrorstext-withaction' => 'Anda tidak memiliki hak akses untuk $2, karena {{PLURAL:$1|alasan|alasan}} berikut:',
-'recreate-deleted-warn' => "'''Peringatan: Anda membuat ulang suatu halaman yang sudah pernah dihapus.'''
+'recreate-moveddeleted-warn' => "'''Peringatan: Anda membuat ulang suatu halaman yang sudah pernah dihapus.'''
Harap pertimbangkan apakah layak untuk melanjutkan suntingan Anda.
-Berikut adalah log penghapusan dari halaman ini:",
-'deleted-notice' => 'Halaman ini telah dihapus. Sebagai referensi, berikut adalah log penghapusan halaman ini.',
-'deletelog-fulllog' => 'Menampilkan seluruh log',
+Berikut adalah log penghapusan dan pemindahan dari halaman ini:",
+'moveddeleted-notice' => 'Halaman ini telah dihapus.
+Sebagai referensi, berikut adalah log penghapusan dan pemindahan halaman ini.',
+'log-fulllog' => 'Lihat seluruh log',
'edit-hook-aborted' => 'Suntingan dibatalkan oleh kait parser
tanpa ada keterangan.',
'edit-gone-missing' => 'Tidak dapat memperbaharui halaman.
@@ -927,6 +986,7 @@ Beberapa templat akan diabaikan.',
'post-expand-template-argument-category' => 'Halaman dengan argumen templat yang diabaikan',
'parser-template-loop-warning' => 'Hubungan berulang templat terdeteksi: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limit kedalaman hubungan berulang templat terlampaui ($1)',
+'language-converter-depth-warning' => 'Batas kedalaman pengonversi bahasa terlampaui ($1)',
# "Undo" feature
'undo-success' => 'Suntingan ini dapat dibatalkan. Tolong cek perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembatalan suntingan.',
@@ -946,7 +1006,7 @@ Alasan yang diberikan oleh $3 adalah ''$2''",
'currentrev' => 'Revisi terkini',
'currentrev-asof' => 'Revisi terkini pada $1',
'revisionasof' => 'Revisi per $1',
-'revision-info' => 'Revisi per $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisi per $1; $2',
'previousrevision' => '←Revisi sebelumnya',
'nextrevision' => 'Revisi selanjutnya→',
'currentrevisionlink' => 'Revisi terkini',
@@ -957,7 +1017,7 @@ Alasan yang diberikan oleh $3 adalah ''$2''",
'page_last' => 'terakhir',
'histlegend' => "Pilih dua tombol radio lalu tekan tombol ''bandingkan'' untuk membandingkan versi. Klik suatu tanggal untuk melihat versi halaman pada tanggal tersebut.<br />(skr) = perbedaan dengan versi sekarang, (akhir) = perbedaan dengan versi sebelumnya, '''k''' = suntingan kecil, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkasan otomatis",
'history-fieldset-title' => 'Menjelajah versi terdahulu',
-'deletedrev' => '[dihapus]',
+'history-show-deleted' => 'Hanya yang dihapus',
'histfirst' => 'Terlama',
'histlast' => 'Terbaru',
'historysize' => '($1 {{PLURAL:$1|bita|bita}})',
@@ -966,70 +1026,113 @@ Alasan yang diberikan oleh $3 adalah ''$2''",
# Revision feed
'history-feed-title' => 'Riwayat revisi',
'history-feed-description' => 'Riwayat revisi halaman ini di wiki',
-'history-feed-item-nocomment' => '$1 pada $2', # user at time
+'history-feed-item-nocomment' => '$1 pada $2',
'history-feed-empty' => 'Halaman yang diminta tak ditemukan.
Kemungkinan telah dihapus dari wiki, atau diberi nama baru.
Coba [[Special:Search|lakukan pencarian di wiki]] untuk halaman baru yang relevan.',
# Revision deletion
-'rev-deleted-comment' => '(komentar dihapus)',
-'rev-deleted-user' => '(nama pengguna dihapus)',
-'rev-deleted-event' => '(isi dihapus)',
-'rev-deleted-text-permission' => "Riwayat revisi halaman ini telah '''dihapus'''.
-Detil mungkin tersedia di [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-text-view' => "Riwayat revisi halaman ini telah '''dihapus'''.
-Sebagai seorang pengurus, Anda dapat melihatnya; detil mungkin tersedia di [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-no-diff' => "Anda tak dapat melihat perbedaan ini karena salah satu dari revisi tersebut telah '''dihapus'''.
-Detil mungkin tersedia di [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-unhide-diff' => "Satu atau lebih revisi dari perbedaan ini telah '''dihapus'''.
-Detil mungkin tersedia di [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
+'rev-deleted-comment' => '(komentar dihapus)',
+'rev-deleted-user' => '(nama pengguna dihapus)',
+'rev-deleted-event' => '(isi dihapus)',
+'rev-deleted-user-contribs' => '[nama pengguna atau alamat IP dihapus - suntingan disembunyikan pada daftar kontribusi]',
+'rev-deleted-text-permission' => "Revisi halaman ini telah '''dihapus'''.
+Rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan]",
+'rev-deleted-text-unhide' => "Revisi ini telah '''dihapus'''.
+Rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
+Sebagai seorang pengurus Anda masih dapat [$1 melihat revisi ini] jika Anda mau.",
+'rev-suppressed-text-unhide' => "Revisi halaman ini telah '''disupresi'''.
+Rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log supresi].
+Sebagai seorang pengurus, Anda masih dapat [$1 melihat revisi ini] jika Anda mau.",
+'rev-deleted-text-view' => "Revisi ini telah '''dihapus'''.
+Sebagai seorang pengurus, Anda dapat melihatnya; rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-text-view' => "Revisi halaman ini telah '''disupresi'''.
+Sebagai seorang pengurus, Anda masih dapat melihatnya; rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log supresi].",
+'rev-deleted-no-diff' => "Anda tidak dapat melihat perbedaan ini karena salah satu dari revisinya telah '''dihapus'''.
+Rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-no-diff' => "Anda tidak dapat melihat perubahan ini karena salah satu dari revisi telah '''dihapus'''.",
+'rev-deleted-unhide-diff' => "Salah satu revisi pada tampilan perbedaan ini telah '''dihapus'''.
+Rinciannya mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
Sebagai seorang pengurus, Anda masih dapat [$1 melihat perbedaan ini] jika Anda ingin.",
-'rev-delundel' => 'tampilkan/sembunyikan',
-'revisiondelete' => 'Hapus/batal hapus revisi',
-'revdelete-nooldid-title' => 'Target revisi tak ditemukan',
-'revdelete-nooldid-text' => 'Anda belum memberikan target revisi untuk menjalankan fungsi ini.',
-'revdelete-nologtype-title' => 'Tipe log tak diberikan',
-'revdelete-nologtype-text' => 'Anda tidak memberikan suatu tipe log untuk menerapkan tindakan ini.',
-'revdelete-toomanytargets-title' => 'Target terlalu banyak',
-'revdelete-toomanytargets-text' => 'Anda memberikan terlalu banyak tipe target untuk melakukan tindakan ini.',
-'revdelete-nologid-title' => 'Entri log tak valid',
-'revdelete-nologid-text' => 'Anda mungkin tidak menyebutkan suatu log peristiwa target untuk menjalankan fungsi ini atau entri yang dimaksud tak ditemukan.',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisi|Revisi-revisi}} pilihan dari '''$1''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Log|Log-log}} pilihan untuk:'''",
-'revdelete-text' => "'''Revisi-revisi dan tindakan-tindakan yang telah dihapus akan tetap muncul di halaman versi terdahulu dan halaman log, tapi teks isi tidak bisa diakses publik.'''
-
-Pengurus {{SITENAME}} lainnya akan tetap dapat mengakses isi yang tersembunyi ini dan dapat membatalkan penghapusannya menggunakan antarmuka yang sama, kecuali ada pembatasan lain yang dibuat oleh operator situs.
-Harap konfirmasikan bahwa Anda memang ingin melakukan tindakan ini, bahwa Anda mengerti akibat-akibatnya, dan bahwa tindakan ini telah sesuai dengan [[{{MediaWiki:Policy-url}}|kebijakan]].",
-'revdelete-suppress-text' => "Penyembunyian revisi '''hanya''' boleh digunakan untuk kasus-kasus berikut:
+'rev-suppressed-unhide-diff' => "Salah satu perbedaan revisi telah di '''tekan'''.
+Penjelasan mungkin terdapat di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penekanan].
+Sebagai pengurus anda masih dapat [$1 melihat perbedaan ini] jika anda ingin melanjutkan.",
+'rev-deleted-diff-view' => "Salah satu revisi perbedaan ini telah '''dihapus'''.
+Sebagai seorang pengurus, Anda dapat melihat perbedaan ini; detail mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-diff-view' => "Salah satu revisi perbedaan ini telah '''disembunyikan'''.
+Sebagai seorang pengurus, Anda dapat melihat perbedaan ini; detail mungkin tersedia di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penyembunyian].",
+'rev-delundel' => 'tampilkan/sembunyikan',
+'rev-showdeleted' => 'tampilkan',
+'revisiondelete' => 'Hapus/batal hapus revisi',
+'revdelete-nooldid-title' => 'Target revisi tak ditemukan',
+'revdelete-nooldid-text' => 'Anda belum memberikan target revisi untuk menjalankan fungsi ini.',
+'revdelete-nologtype-title' => 'Tipe log tak diberikan',
+'revdelete-nologtype-text' => 'Anda tidak memberikan suatu tipe log untuk menerapkan tindakan ini.',
+'revdelete-nologid-title' => 'Entri log tak valid',
+'revdelete-nologid-text' => 'Anda mungkin tidak menyebutkan suatu log peristiwa target untuk menjalankan fungsi ini atau entri yang dimaksud tak ditemukan.',
+'revdelete-no-file' => 'Berkas yang dituju tidak ditemukan.',
+'revdelete-show-file-confirm' => 'Apakah Anda yakin ingin melihat revisi yang telah dihapus dari berkas "<nowiki>$1</nowiki>" per $3, $2?',
+'revdelete-show-file-submit' => 'Ya',
+'revdelete-selected' => "'''{{PLURAL:$2|Revisi|Revisi-revisi}} pilihan dari '''$1''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Log|Log-log}} pilihan untuk:'''",
+'revdelete-text' => "'''Revisi dan tindakan yang telah dihapus akan tetap muncul di versi terdahulu dan log halaman, tapi bagian dari isinya tidak bisa diakses publik.'''
+Pengurus {{SITENAME}} lain akan tetap dapat mengakses isi yang tersembunyi ini dan dapat membatalkan penghapusannya menggunakan antarmuka yang sama, kecuali ada pembatasan lain yang dibuat oleh operator situs.",
+'revdelete-confirm' => 'Tolong konfirmasi bahwa Anda memang bermaksud melakukan ini, memahami konsekuensinya, dan bahwa Anda melakukannya sesuai dengan [[{{MediaWiki:Policy-url}}|kebijakan]].',
+'revdelete-suppress-text' => "Penyembunyian revisi '''hanya''' boleh digunakan untuk kasus-kasus berikut:
* Informasi pribadi yang tak sepantasnya
*: ''alamat rumah dan nomor telepon, nomor kartu identitas, dan lain-lain.''",
-'revdelete-legend' => 'Atur batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks revisi',
-'revdelete-hide-name' => 'Sembunyikan tindakan dan target',
-'revdelete-hide-comment' => 'Tampilkan/sembunyikan ringkasan suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
-'revdelete-hide-restricted' => 'Sembunyikan data dari opsis juga',
-'revdelete-suppress' => 'Sembunyikan juga dari pengurus',
-'revdelete-hide-image' => 'Sembunyikan isi berkas',
-'revdelete-unsuppress' => 'Hapus batasan pada revisi yang dikembalikan',
-'revdelete-log' => 'Alasan:',
-'revdelete-submit' => 'Terapkan pada revisi terpilih',
-'revdelete-logentry' => 'ubah tampilan revisi untuk [[$1]]',
-'logdelete-logentry' => 'mengubah aturan penyembunyian dari [[$1]]',
-'revdelete-success' => "'''Keterlihatan revisi berhasil diperbarui.'''",
-'logdelete-success' => 'Aturan penyembunyian tindakan berhasil diterapkan.',
-'revdel-restore' => 'Ubah tampilan',
-'pagehist' => 'Sejarah halaman',
-'deletedhist' => 'Sejarah yang dihapus',
-'revdelete-content' => 'konten',
-'revdelete-summary' => 'ringkasan',
-'revdelete-uname' => 'nama pengguna',
-'revdelete-restricted' => 'akses telah dibatasi untuk opsis',
-'revdelete-unrestricted' => 'pembatasan akses opsis dihapuskan',
-'revdelete-hid' => 'sembunyikan $1',
-'revdelete-unhid' => 'tampilkan $1',
-'revdelete-log-message' => '$1 untuk $2 {{PLURAL:$2|revisi|revisi}}',
-'logdelete-log-message' => '$1 untuk $2 {{PLURAL:$2|peristiwa|peristiwa}}',
+'revdelete-legend' => 'Atur batasan:',
+'revdelete-hide-text' => 'Sembunyikan teks revisi',
+'revdelete-hide-image' => 'Sembunyikan isi berkas',
+'revdelete-hide-name' => 'Sembunyikan tindakan dan target',
+'revdelete-hide-comment' => 'Tampilkan/sembunyikan ringkasan suntingan',
+'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-restricted' => 'Sembunyikan data dari opsis juga',
+'revdelete-radio-same' => '(jangan diubah)',
+'revdelete-radio-set' => 'Ya',
+'revdelete-radio-unset' => 'Tidak',
+'revdelete-suppress' => 'Sembunyikan juga dari pengurus',
+'revdelete-unsuppress' => 'Hapus batasan pada revisi yang dikembalikan',
+'revdelete-log' => 'Alasan:',
+'revdelete-submit' => 'Terapkan pada {{PLURAL:$1|revisi|revisi}} terpilih',
+'revdelete-logentry' => 'ubah tampilan revisi untuk [[$1]]',
+'logdelete-logentry' => 'mengubah aturan penyembunyian dari [[$1]]',
+'revdelete-success' => "'''Keterlihatan revisi berhasil diperbarui.'''",
+'revdelete-failure' => "'''Keterlihatan revisi tak dapat diperbarui:'''
+$1",
+'logdelete-success' => 'Aturan penyembunyian tindakan berhasil diterapkan.',
+'logdelete-failure' => "'''Aturan penyembunyian tidak dapat diterapkan:'''
+$1",
+'revdel-restore' => 'Ubah tampilan',
+'pagehist' => 'Sejarah halaman',
+'deletedhist' => 'Sejarah yang dihapus',
+'revdelete-content' => 'konten',
+'revdelete-summary' => 'ringkasan',
+'revdelete-uname' => 'nama pengguna',
+'revdelete-restricted' => 'akses telah dibatasi untuk opsis',
+'revdelete-unrestricted' => 'pembatasan akses opsis dihapuskan',
+'revdelete-hid' => 'sembunyikan $1',
+'revdelete-unhid' => 'tampilkan $1',
+'revdelete-log-message' => '$1 untuk $2 {{PLURAL:$2|revisi|revisi}}',
+'logdelete-log-message' => '$1 untuk $2 {{PLURAL:$2|peristiwa|peristiwa}}',
+'revdelete-hide-current' => 'Gagal menyembunyikan revisi tertanggal $2, $1: ini adalah revisi terkini.
+Revisi ini tidak dapat disembunyikan.',
+'revdelete-show-no-access' => 'Gagal menampilkan revisi tertanggal $2, $1: revisi ini telah ditandai "terbatas".
+Anda tidak memiliki akses ke revisi ini.',
+'revdelete-modify-no-access' => 'Gagal mengubah revisi tertanggal $2, $1: revisi ini telah ditandai "terbatas".
+Anda tidak memiliki akses ke revisi ini.',
+'revdelete-modify-missing' => 'Gagal mengubah revisi ID $1: revisi ini tidak ditemukan di basis data!',
+'revdelete-no-change' => "'''Peringatan:''' revisi per $2, $1 telah memiliki aturan penyembunyian tersebut.",
+'revdelete-concurrent-change' => 'Gagal mengubah revisi per $2, $1: statusnya kemungkinan telah diubah oleh pengguna lain bersamaan dengan Anda.
+Silakan periksa catatan log.',
+'revdelete-only-restricted' => 'Kesalahan sewaktu menyembunyikan butir bertanggal $2, $1: Anda tidak dapat menyembunyikan butir dari pengurus tanpa memilih juga salah satu opsi penyembunyian lainnya.',
+'revdelete-reason-dropdown' => '*Alasan penghapusan
+** Pelanggaran hakcipta
+** Informasi pribadi tidak pantas',
+'revdelete-otherreason' => 'Alasan lain/tambahan:',
+'revdelete-reasonotherlist' => 'Alasan lain',
+'revdelete-edit-reasonlist' => 'Alasan penghapusan suntingan',
+'revdelete-offender' => 'Revisi penulis:',
# Suppression log
'suppressionlog' => 'Log penyembunyian',
@@ -1066,67 +1169,13 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
'mergelogpagetext' => 'Di bawah ini adalah daftar penggabungan sejarah halaman ke halaman yang lain.',
# Diffs
-'history-title' => 'Riwayat revisi dari "$1"',
-'difference' => '(Perbedaan antarrevisi)',
-'lineno' => 'Baris $1:',
-'compareselectedversions' => 'Bandingkan versi terpilih',
-'visualcomparison' => 'Perbandingan visual',
-'wikicodecomparison' => 'Perbandingan teks wiki',
-'editundo' => 'batalkan',
-'diff-multi' => '({{PLURAL:$1|Satu|$1}} revisi antara tak ditampilkan.)',
-'diff-movedto' => 'dipindahkan ke $1',
-'diff-styleadded' => '$1 gaya ditambahkan',
-'diff-added' => '$1 ditambahkan',
-'diff-changedto' => 'diubah ke $1',
-'diff-movedoutof' => 'dipindahkan dari $1',
-'diff-styleremoved' => '$1 gaya dihapuskan',
-'diff-removed' => '$1 dihapuskan',
-'diff-changedfrom' => 'diubah dari $1',
-'diff-src' => 'sumber',
-'diff-withdestination' => 'dengan tujuan $1',
-'diff-with' => '&#32;dengan $1 $2',
-'diff-with-final' => '&#32;dan $1 $2',
-'diff-width' => 'lebar',
-'diff-height' => 'tinggi',
-'diff-p' => "sebuah '''paragraf'''",
-'diff-blockquote' => "sebuah '''kutipan'''",
-'diff-h1' => "sebuah '''judul bagian (aras 1)'''",
-'diff-h2' => "sebuah '''judul bagian (aras 2)'''",
-'diff-h3' => "sebuah '''judul bagian (aras 3)'''",
-'diff-h4' => "sebuah '''judul bagian (aras 4)'''",
-'diff-h5' => "sebuah '''baris judul (aras 5)'''",
-'diff-pre' => "sebuah '''blok dengan praformat'''",
-'diff-div' => "sebuah '''bagian'''",
-'diff-ul' => "sebuah '''daftar takterurut'''",
-'diff-ol' => "sebuah '''daftar terurut'''",
-'diff-li' => "sebuah '''daftar butir'''",
-'diff-table' => "sebuah '''tabel'''",
-'diff-tbody' => "sebuah '''isi tabel'''",
-'diff-tr' => "sebuah '''baris'''",
-'diff-td' => "sebuah '''sel'''",
-'diff-th' => "sebuah '''tajuk'''",
-'diff-br' => "sebuah '''putus'''",
-'diff-hr' => "sebuah '''mistar horizontal'''",
-'diff-code' => "sebuah '''blok kode komputer'''",
-'diff-dl' => "sebuah '''daftar definisi'''",
-'diff-dt' => "sebuah '''definisi istilah'''",
-'diff-dd' => "sebuah '''definisi'''",
-'diff-input' => "sebuah '''masukan'''",
-'diff-form' => "sebuah '''formulir'''",
-'diff-img' => "sebuah '''gambar'''",
-'diff-span' => "sebuah '''rentang'''",
-'diff-a' => "sebuah '''pranala'''",
-'diff-i' => "'''cetak miring'''",
-'diff-b' => "'''tebal'''",
-'diff-strong' => "'''keras'''",
-'diff-em' => "'''penekanan'''",
-'diff-font' => "'''huruf'''",
-'diff-big' => "'''besar'''",
-'diff-del' => "'''dihapuskan'''",
-'diff-tt' => "'''lebar tetap'''",
-'diff-sub' => "'''tika bawah'''",
-'diff-sup' => "'''tika atas'''",
-'diff-strike' => "'''coret'''",
+'history-title' => 'Riwayat revisi dari "$1"',
+'difference' => '(Perbedaan antarrevisi)',
+'lineno' => 'Baris $1:',
+'compareselectedversions' => 'Bandingkan versi terpilih',
+'showhideselectedversions' => 'Tampilkan/sembunyikan versi terpilih',
+'editundo' => 'batalkan',
+'diff-multi' => '({{PLURAL:$1|Satu|$1}} revisi antara tak ditampilkan.)',
# Search results
'searchresults' => 'Hasil pencarian',
@@ -1134,28 +1183,25 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
'searchresulttext' => 'Untuk informasi lebih lanjut tentang pencarian di {{SITENAME}}, lihat [[{{MediaWiki:Helppage}}|halaman bantuan]].',
'searchsubtitle' => 'Anda mencari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|semua halaman yang dimulai dengan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua halaman yang terpaut ke "$1"]])',
'searchsubtitleinvalid' => "Anda mencari '''$1'''",
-'noexactmatch' => "'''Tidak ada halaman yang berjudul \"\$1\".''' Anda dapat [[:\$1|membuat halaman ini]].",
-'noexactmatch-nocreate' => "'''Tidak ada halaman berjudul \"\$1\".'''",
'toomanymatches' => 'Pencarian menghasilkan terlalu banyak hasil, silakan masukkan kueri lain',
'titlematches' => 'Judul artikel yang sama',
'notitlematches' => 'Tidak ada judul halaman yang cocok',
'textmatches' => 'Teks artikel yang cocok',
'notextmatches' => 'Tidak ada teks halaman yang cocok',
-'prevn' => '$1 sebelumnya',
-'nextn' => '$1 berikutnya',
+'prevn' => '{{PLURAL:$1|$1}} sebelumnya',
+'nextn' => '{{PLURAL:$1|$1}} selanjutnya',
'prevn-title' => '$1 {{PLURAL:$1|hasil|hasil}} sebelumnya',
'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} selanjutnya',
'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil|hasil}} per halaman',
-'viewprevnext' => 'Lihat ($1) ($2) ($3)',
+'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opsi pencarian',
'searchmenu-exists' => "* Halaman '''[[$1]]'''",
'searchmenu-new' => "'''Buat halaman \"[[:\$1]]\" di wiki ini!'''",
'searchhelp-url' => 'Help:Isi',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Lihat daftar halaman dengan awalan ini]]',
-'searchprofile-articles' => 'Halaman isi',
-'searchprofile-articles-and-proj' => 'Halaman isi dan proyek',
-'searchprofile-project' => 'Halaman proyek',
-'searchprofile-images' => 'Berkas',
+'searchprofile-articles' => 'Artikel',
+'searchprofile-project' => 'Halaman Bantuan dan Proyek',
+'searchprofile-images' => 'Berkas Multimedia',
'searchprofile-everything' => 'Semua',
'searchprofile-advanced' => 'Lanjutan',
'searchprofile-articles-tooltip' => 'Pencarian di $1',
@@ -1163,8 +1209,6 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
'searchprofile-images-tooltip' => 'Pencarian berkas',
'searchprofile-everything-tooltip' => 'Pencarian di seluruh situs (termasuk halaman pembicaraan)',
'searchprofile-advanced-tooltip' => 'Pencarian di ruang nama tertentu',
-'prefs-search-nsdefault' => 'Cari menggunakan standar baku:',
-'prefs-search-nscustom' => 'Cari di ruang nama buatan:',
'search-result-size' => '$1 ({{PLURAL:$2|1 kata|$2 kata}})',
'search-result-score' => 'Relevansi: $1%',
'search-redirect' => '(pengalihan $1)',
@@ -1177,11 +1221,12 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
'search-mwsuggest-disabled' => 'tidak ada saran',
'search-relatedarticle' => 'Berkaitan',
'mwsuggest-disable' => 'Non-aktifkan saran AJAX',
+'searcheverything-enable' => 'Cari di semua ruang nama',
'searchrelated' => 'berkaitan',
'searchall' => 'semua',
'showingresults' => "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.",
'showingresultsnum' => "Di bawah ini ditampilkan {{PLURAL:$3|'''1'''|'''$3'''}} hasil, dimulai dari #'''$2'''.",
-'showingresultstotal' => "Hasil pencarian {{PLURAL:$4|'''$1'''|'''$1 - $2'''}} dari '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuk '''$4'''",
'nonefound' => "'''Catatan''': Hanya beberapa ruang nama yang secara baku dimasukkan dalam pencarian. Coba awali permintaan Anda dengan ''all:'' untuk mencari semua isi (termasuk halaman pembicaraan, templat, dll), atau gunakan ruang nama yang diinginkan sebagai awalan.",
'search-nonefound' => 'Tidak ada hasil yang sesuai dengan kriteria.',
'powersearch' => 'Pencarian lanjut',
@@ -1189,113 +1234,152 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
'powersearch-ns' => 'Mencari di ruang nama:',
'powersearch-redir' => 'Daftar pengalihan',
'powersearch-field' => 'Mencari',
+'powersearch-togglelabel' => 'Pilih:',
+'powersearch-toggleall' => 'Semua',
+'powersearch-togglenone' => 'Tidak ada',
'search-external' => 'Pencarian eksternal',
'searchdisabled' => 'Pencarian {{SITENAME}} sementara dimatikan.
Anda dapat mencari melalui Google untuk sementara waktu.
Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencakup perubahan-perubahan terakhir.',
+# Quickbar
+'qbsettings' => 'Pengaturan bar pintas',
+'qbsettings-none' => 'Tidak ada',
+'qbsettings-fixedleft' => 'Tetap sebelah kiri',
+'qbsettings-fixedright' => 'Tetap sebelah kanan',
+'qbsettings-floatingleft' => 'Mengambang sebelah kiri',
+'qbsettings-floatingright' => 'Mengambang sebelah kanan',
+
# Preferences page
-'preferences' => 'Preferensi',
-'mypreferences' => 'Preferensi saya',
-'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum masuk log',
-'prefsnologintext' => 'Anda harus <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} masuk log]</span> untuk mengeset preferensi Anda.',
-'prefsreset' => 'Preferensi telah dikembalikan ke konfigurasi baku.',
-'qbsettings' => 'Pengaturan bar pintas',
-'qbsettings-none' => 'Tidak ada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Mengambang sebelah kiri',
-'qbsettings-floatingright' => 'Mengambang sebelah kanan',
-'changepassword' => 'Ganti kata sandi',
-'skin' => 'Kulit',
-'skin-preview' => 'Pratayang',
-'math' => 'Matematika',
-'dateformat' => 'Format tanggal',
-'datedefault' => 'Tak ada preferensi',
-'datetime' => 'Tanggal dan waktu',
-'math_failure' => 'Gagal memparse',
-'math_unknown_error' => 'Kesalahan yang tidak diketahui',
-'math_unknown_function' => 'fungsi yang tidak diketahui',
-'math_lexing_error' => 'kesalahan lexing',
-'math_syntax_error' => 'kesalahan sintaks',
-'math_image_error' => 'Konversi PNG gagal; periksa apakah latex, dvips, gs, dan convert terinstal dengan benar',
-'math_bad_tmpdir' => 'Tidak dapat menulisi atau membuat direktori sementara math',
-'math_bad_output' => 'Tidak dapat menulisi atau membuat direktori keluaran math',
-'math_notexvc' => 'Executable texvc hilang; silakan lihat math/README untuk cara konfigurasi.',
-'prefs-personal' => 'Profil',
-'prefs-rc' => 'Perubahan terbaru',
-'prefs-watchlist' => 'Pemantauan',
-'prefs-watchlist-days' => 'Jumlah hari maksimum yang ditampilkan di daftar pantauan:',
-'prefs-watchlist-days-max' => '(maksimum 7 hari)',
-'prefs-watchlist-edits' => 'Jumlah suntingan maksimum yang ditampilkan di daftar pantauan yang lebih lengkap:',
-'prefs-watchlist-edits-max' => '(nilai maksimum: 1000)',
-'prefs-misc' => 'Lain-lain',
-'prefs-resetpass' => 'Ganti kata sandi',
-'saveprefs' => 'Simpan',
-'resetprefs' => 'Batalkan perubahan',
-'restoreprefs' => 'Kembalikan semua setelan bawaan',
-'textboxsize' => 'Penyuntingan',
-'prefs-edit-boxsize' => 'Ukuran kotak penyuntingan.',
-'rows' => 'Baris:',
-'columns' => 'Kolom:',
-'searchresultshead' => 'Cari',
-'resultsperpage' => 'Hasil per halaman:',
-'contextlines' => 'Baris ditampilkan per hasil:',
-'contextchars' => 'Karakter untuk konteks per baris:',
-'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
-'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|hari|hari}})',
-'recentchangescount' => 'Jumlah baku suntingan yang ditampilkan di perubahan terbaru, riwayat halaman, dan log:',
-'savedprefs' => 'Preferensi Anda telah disimpan',
-'timezonelegend' => 'Zona waktu:',
-'timezonetext' => 'Masukkan perbedaan waktu (dalam jam) antara waktu setempat dengan waktu server (UTC).',
-'localtime' => 'Waktu setempat:',
-'timezoneselect' => 'Zona waktu:',
-'timezoneuseserverdefault' => 'Gunakan standar server',
-'timezoneuseoffset' => 'Lainnya (tentukan perbedaannya)',
-'timezoneoffset' => 'Perbedaan¹:',
-'servertime' => 'Waktu server:',
-'guesstimezone' => 'Isikan dari penjelajah web',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Samudera Atlantik',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Eropa',
-'timezoneregion-indian' => 'Samudera Hindia',
-'timezoneregion-pacific' => 'Samudera Pasifik',
-'allowemail' => 'Izinkan pengguna lain mengirim surel',
-'prefs-searchoptions' => 'Pencarian',
-'prefs-namespaces' => 'Ruang nama',
-'defaultns' => 'Cari dalam ruang nama berikut ini secara baku:',
-'default' => 'baku',
-'files' => 'Berkas',
-'prefs-custom-css' => 'CSS pribadi',
-'prefs-custom-js' => 'JS pribadi',
+'preferences' => 'Preferensi',
+'mypreferences' => 'Preferensi saya',
+'prefs-edits' => 'Jumlah suntingan:',
+'prefsnologin' => 'Belum masuk log',
+'prefsnologintext' => 'Anda harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuk log]</span> untuk mengeset preferensi Anda.',
+'changepassword' => 'Ganti kata sandi',
+'prefs-skin' => 'Kulit',
+'skin-preview' => 'Pratayang',
+'prefs-math' => 'Matematika',
+'datedefault' => 'Tak ada preferensi',
+'prefs-datetime' => 'Tanggal dan waktu',
+'prefs-personal' => 'Profil',
+'prefs-rc' => 'Perubahan terbaru',
+'prefs-watchlist' => 'Pemantauan',
+'prefs-watchlist-days' => 'Jumlah hari maksimum yang ditampilkan di daftar pantauan:',
+'prefs-watchlist-days-max' => '(maksimum 7 hari)',
+'prefs-watchlist-edits' => 'Jumlah suntingan maksimum yang ditampilkan di daftar pantauan yang lebih lengkap:',
+'prefs-watchlist-edits-max' => '(nilai maksimum: 1000)',
+'prefs-watchlist-token' => 'Token pantauan:',
+'prefs-misc' => 'Lain-lain',
+'prefs-resetpass' => 'Ganti kata sandi',
+'prefs-email' => 'Opsi surel',
+'prefs-rendering' => 'Tampilan',
+'saveprefs' => 'Simpan',
+'resetprefs' => 'Batalkan perubahan',
+'restoreprefs' => 'Kembalikan semua setelan bawaan',
+'prefs-editing' => 'Penyuntingan',
+'prefs-edit-boxsize' => 'Ukuran kotak penyuntingan.',
+'rows' => 'Baris:',
+'columns' => 'Kolom:',
+'searchresultshead' => 'Cari',
+'resultsperpage' => 'Hasil per halaman:',
+'contextlines' => 'Baris ditampilkan per hasil:',
+'contextchars' => 'Karakter untuk konteks per baris:',
+'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
+'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|hari|hari}})',
+'recentchangescount' => 'Standar jumlah suntingan yang ditampilkan:',
+'prefs-help-recentchangescount' => 'Opsi ini berlaku untuk perubahan terbaru, versi terdahulu halaman, dan log.',
+'prefs-help-watchlist-token' => 'Mengisi kotak ini dengan kunci rahasia (PIN) akan menghasilkan sindikasi RSS untuk daftar pantauan Anda. Siapa pun yang mengetahui kunci ini dapat membaca daftar pantauan Anda, jadi pilihlah nilainya dengan hati-hati
+Berikut ini adalah nilai acak yang dapat Anda gunakan: $1',
+'savedprefs' => 'Preferensi Anda telah disimpan',
+'timezonelegend' => 'Zona waktu:',
+'localtime' => 'Waktu setempat:',
+'timezoneuseserverdefault' => 'Gunakan standar server',
+'timezoneuseoffset' => 'Lainnya (tentukan perbedaannya)',
+'timezoneoffset' => 'Perbedaan¹:',
+'servertime' => 'Waktu server:',
+'guesstimezone' => 'Isikan dari penjelajah web',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Samudera Atlantik',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Eropa',
+'timezoneregion-indian' => 'Samudera Hindia',
+'timezoneregion-pacific' => 'Samudera Pasifik',
+'allowemail' => 'Izinkan pengguna lain mengirim surel',
+'prefs-searchoptions' => 'Pencarian',
+'prefs-namespaces' => 'Ruang nama',
+'defaultns' => 'Atau cari dalam ruang-ruang nama berikut:',
+'default' => 'baku',
+'prefs-files' => 'Berkas',
+'prefs-custom-css' => 'CSS pribadi',
+'prefs-custom-js' => 'JS pribadi',
+'prefs-reset-intro' => 'Anda dapat menggunakan halaman ini untuk mengembalikan preferensi Anda ke setelan baku situs.
+Pengembalian preferensi tidak dapat dibatalkan.',
+'prefs-emailconfirm-label' => 'Konfirmasi surel:',
+'prefs-textboxsize' => 'Ukuran kotak suntingan',
+'youremail' => 'Surel:',
+'username' => 'Nama pengguna:',
+'uid' => 'ID pengguna:',
+'prefs-memberingroups' => 'Anggota {{PLURAL:$1|kelompok|kelompok}}:',
+'prefs-registration' => 'Waktu pendaftaran:',
+'yourrealname' => 'Nama asli:',
+'yourlanguage' => 'Bahasa:',
+'yourvariant' => 'Varian bahasa',
+'yournick' => 'Tanda tangan:',
+'prefs-help-signature' => 'Komentar pada halaman pembicaraan perlu ditandatangani dengan "<nowiki>~~~~</nowiki>" yang akan diubah menjadi tandatangan Anda dan waktu saat ini.',
+'badsig' => 'Tanda tangan mentah tak sah; periksa tag HTML.',
+'badsiglength' => 'Tanda tangan Anda terlalu panjang.
+Jangan lebih dari $1 {{PLURAL:$1|karakter|karakter}}.',
+'yourgender' => 'Jenis kelamin:',
+'gender-unknown' => 'Tak dinyatakan',
+'gender-male' => 'Laki-laki',
+'gender-female' => 'Perempuan',
+'prefs-help-gender' => 'Opsional: digunakan untuk perbaikan penyebutan gender oleh perangkat lunak. Informasi ini akan terbuka untuk umum.',
+'email' => 'Surel',
+'prefs-help-realname' => 'Nama asli bersifat opsional.
+Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan atas hasil kerja Anda.',
+'prefs-help-email' => 'Alamat surel bersifat opsional, namun bila sewaktu-waktu Anda lupa akan kata sandi Anda, kami dapat mengirimkannya melalui surel tersebut.
+Anda juga dapat memilih untuk memungkinkan orang lain menghubungi Anda melalui halaman pengguna atau halaman pembicaraan pengguna Anda tanpa perlu membuka identitas Anda.',
+'prefs-help-email-required' => 'Alamat surel dibutuhkan.',
+'prefs-info' => 'Informasi dasar',
+'prefs-i18n' => 'Internasionalisasi',
+'prefs-signature' => 'Tanda tangan',
+'prefs-dateformat' => 'Format tanggal',
+'prefs-timeoffset' => 'Format waktu',
+'prefs-advancedediting' => 'Opsi lanjutan',
+'prefs-advancedrc' => 'Opsi lanjutan',
+'prefs-advancedrendering' => 'Opsi lanjutan',
+'prefs-advancedsearchoptions' => 'Opsi lanjutan',
+'prefs-advancedwatchlist' => 'Opsi lanjutan',
+'prefs-display' => 'Pilihan tampilan',
+'prefs-diffs' => 'Beda',
# User rights
-'userrights' => 'Manajemen hak pengguna', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Mengatur kelompok pengguna',
-'userrights-user-editname' => 'Masukkan nama pengguna:',
-'editusergroup' => 'Sunting kelompok pengguna',
-'editinguser' => "Mengganti hak akses pengguna '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Sunting kelompok pengguna',
-'saveusergroups' => 'Simpan kelompok pengguna',
-'userrights-groupsmember' => 'Anggota dari:',
-'userrights-groups-help' => 'Anda dapat mengubah kelompok pengguna ini:
+'userrights' => 'Manajemen hak pengguna',
+'userrights-lookup-user' => 'Mengatur kelompok pengguna',
+'userrights-user-editname' => 'Masukkan nama pengguna:',
+'editusergroup' => 'Sunting kelompok pengguna',
+'editinguser' => "Mengganti hak akses pengguna '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Sunting kelompok pengguna',
+'saveusergroups' => 'Simpan kelompok pengguna',
+'userrights-groupsmember' => 'Anggota dari:',
+'userrights-groupsmember-auto' => 'Anggota implisit dari:',
+'userrights-groups-help' => 'Anda dapat mengubah kelompok pengguna ini:
* Kotak dengan tanda cek merupakan kelompok pengguna yang bersangkutan
* Kotak tanpa tanda cek berarti pengguna ini bukan anggota kelompok tersebut
* Tanda * menandai bahwa Anda tidak dapat membatalkan kelompok tersebut bila Anda telah menambahkannya, atau sebaliknya.',
-'userrights-reason' => 'Alasan:',
-'userrights-no-interwiki' => 'Anda tidak memiliki hak untuk mengubah hak pengguna di wiki yang lain.',
-'userrights-nodatabase' => 'Basis data $1 tidak ada atau bukan lokal.',
-'userrights-nologin' => 'Anda harus [[Special:UserLogin|masuk log]] dengan menggunakan akun pengurus untuk dapat mengubah hak pengguna.',
-'userrights-notallowed' => 'Anda tidak berhak untuk mengubah hak pengguna',
-'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
-'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
+'userrights-reason' => 'Alasan:',
+'userrights-no-interwiki' => 'Anda tidak memiliki hak untuk mengubah hak pengguna di wiki yang lain.',
+'userrights-nodatabase' => 'Basis data $1 tidak ada atau bukan lokal.',
+'userrights-nologin' => 'Anda harus [[Special:UserLogin|masuk log]] dengan menggunakan akun pengurus untuk dapat mengubah hak pengguna.',
+'userrights-notallowed' => 'Anda tidak berhak untuk mengubah hak pengguna',
+'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
+'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
# Groups
'group' => 'Kelompok:',
@@ -1348,6 +1432,7 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'right-bigdelete' => 'Menghapus halaman dengan banyak versi terdahulu',
'right-deleterevision' => 'Menghapus dan membatalkan penghapusan revisi tertentu suatu halaman',
'right-deletedhistory' => 'Melihat entri-entri revisi yang dihapus, tanpa teks yang berhubungan',
+'right-deletedtext' => 'Melihat teks yang dihapus dan perubahan antara revisi yang dihapus',
'right-browsearchive' => 'Mencari halaman yang telah dihapus',
'right-undelete' => 'Mengembalikan halaman yang telah dihapus',
'right-suppressrevision' => 'Memeriksa dan mengembalikan revisi-revisi yang disembunyikan dari Opsis',
@@ -1361,6 +1446,8 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'right-editprotected' => 'Menyunting halaman yang dilindungi (tanpa perlindungan runtun)',
'right-editinterface' => 'Menyunting antarmuka pengguna',
'right-editusercssjs' => 'Menyunting arsip CSS dan JS pengguna lain',
+'right-editusercss' => 'Menyunting berkas CSS pengguna lain',
+'right-edituserjs' => 'Menyunting berkas JS pengguna lain',
'right-rollback' => 'Mengembalikan dengan cepat suntingan-suntingan pengguna terakhir yang menyunting halaman tertentu',
'right-markbotedits' => 'Menandai pengembalian revisi sebagai suntingan bot',
'right-noratelimit' => 'Tidak dipengaruhi oleh pembatasan jumlah suntingan',
@@ -1377,6 +1464,8 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'right-siteadmin' => 'Mengunci dan membuka kunci basis data',
'right-reset-passwords' => 'Mereset kata sandi pengguna lain',
'right-override-export-depth' => 'Ekspor halaman termasuk halaman-halaman terkait hingga kedalaman 5',
+'right-versiondetail' => 'Melihat informasi versi piranti lunak yang lebih lengkap',
+'right-sendemail' => 'Mengirim surel ke pengguna lain',
# User rights log
'rightslog' => 'Log perubahan hak akses',
@@ -1427,6 +1516,15 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'recentchangestext' => "Temukan perubahan terbaru dalam wiki di halaman ini. Keterangan: (beda) = perubahan, (versi) = sejarah revisi, '''B''' = halaman baru, '''k''' = suntingan kecil, '''b''' = suntingan bot, (± ''bita'') = jumlah penambahan/pengurangan isi, → = suntingan bagian, ← = ringkasan otomatis.
----",
'recentchanges-feed-description' => 'Temukan perubahan terbaru dalam wiki di umpan ini.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - halaman baru',
+'recentchanges-label-newpage' => 'Suntingan ini membuat halaman baru',
+'recentchanges-legend-minor' => '$1 - suntingan kecil',
+'recentchanges-label-minor' => 'Ini adalah suntingan kecil',
+'recentchanges-legend-bot' => '$1 - suntingan bot',
+'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
+'recentchanges-legend-unpatrolled' => '$1 - suntingan belum terpatroli',
+'recentchanges-label-unpatrolled' => 'Suntingan ini belum terpatroli',
'rcnote' => "Berikut adalah {{PLURAL:$1|'''1'''|'''$1'''}} perubahan terbaru dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} terakhir, sampai $4 pukul $5.",
'rcnotefrom' => 'Di bawah ini adalah perubahan sejak <strong>$2</strong> (ditampilkan sampai <strong>$1</strong> perubahan).',
'rclistfrom' => 'Perlihatkan perubahan terbaru sejak $1',
@@ -1453,6 +1551,8 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
# Recent changes linked
'recentchangeslinked' => 'Perubahan terkait',
+'recentchangeslinked-feed' => 'Perubahan terkait',
+'recentchangeslinked-toolbox' => 'Perubahan terkait',
'recentchangeslinked-title' => 'Perubahan yang terkait dengan "$1"',
'recentchangeslinked-noresult' => 'Tidak terjadi perubahan pada halaman-halaman terkait selama periode yang telah ditentukan.',
'recentchangeslinked-summary' => "Halaman istimewa ini memberikan daftar perubahan terakhir pada halaman-halaman terkait. Halaman yang Anda pantau ditandai dengan '''cetak tebal'''.",
@@ -1462,8 +1562,8 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
# Upload
'upload' => 'Unggah berkas',
'uploadbtn' => 'Muatkan berkas',
-'reupload' => 'Muat ulang',
'reuploaddesc' => 'Kembali ke formulir pemuatan',
+'upload-tryagain' => 'Kirim perubahan keterangan berkas',
'uploadnologin' => 'Belum masuk log',
'uploadnologintext' => 'Anda harus [[Special:UserLogin|masuk log]] untuk dapat memuatkan berkas.',
'upload_directory_missing' => 'Direktori pemuatan ($1) tidak ditemukan dan tidak dapat dibuat oleh server web.',
@@ -1494,6 +1594,7 @@ Untuk menampilkan atau menyertakan berkas/gambar pada suatu halaman, gunakan pra
'minlength1' => 'Nama berkas paling tidak harus terdiri dari satu huruf.',
'illegalfilename' => 'Nama berkas "$1" mengandung aksara yang tidak diperbolehkan ada dalam judul halaman. Silakan ubah nama berkas tersebut dan cobalah memuatkannya kembali.',
'badfilename' => 'Nama berkas telah diubah menjadi "$1".',
+'filetype-mime-mismatch' => 'Ekstensi berkas tidak cocok dengan tipe MIME.',
'filetype-badmime' => 'Berkas dengan tipe MIME "$1" tidak diperkenankan untuk dimuat.',
'filetype-bad-ie-mime' => 'Tidak dapat memuat berkas ini karena Internet Explorer mendeteksinya sebagai "$1", yang tak diizinkan dan merupakan tipe berkas yang memiliki potensi bahaya.',
'filetype-unwanted-type' => "'''\".\$1\"''' termasuk jenis berkas yang tidak diijinkan.
@@ -1512,7 +1613,6 @@ Untuk menampilkan atau menyertakan berkas/gambar pada suatu halaman, gunakan pra
* Nama berkas yang akan dimuat: '''<tt>[[:$1]]</tt>'''
* Nama berkas yang telah ada: '''<tt>[[:$2]]</tt>'''
Mohon gunakan nama yang berbeda.",
-'fileexists-thumb' => "<center>'''Berkas yang tersedia'''</center>",
'fileexists-thumbnail-yes' => "Berkas ini tampaknya merupakan gambar yang ukurannya diperkecil ''(miniatur)''. [[$1|thumb]]
Harap periksa berkas '''<tt>[[:$1]]</tt>''' tersebut.
Jika berkas tersebut memang merupakan gambar dalam ukuran aslinya, Anda tidak perlu untuk memuat kembali miniatur lainnya.",
@@ -1527,6 +1627,7 @@ Jika Anda tetap ingin memuatkan berkas Anda, harap kembali dan gunakan nama lain
'file-deleted-duplicate' => 'Sebuah berkas yang identik dengan berkas ini ([[$1]]) sudah pernah dihapuskan sebelumnya. Anda harus memeriksa sejarah penghapusan berkas tersebut sebelum melanjutkan memuat ulang berkas ini.',
'successfulupload' => 'Berhasil dimuat',
'uploadwarning' => 'Peringatan pemuatan',
+'uploadwarning-text' => 'Mohon perbaiki keterangan berkas di bawah dan coba lagi.',
'savefile' => 'Simpan berkas',
'uploadedimage' => 'memuat "[[$1]]"',
'overwroteimage' => 'memuat versi baru dari "[[$1]]"',
@@ -1534,11 +1635,14 @@ Jika Anda tetap ingin memuatkan berkas Anda, harap kembali dan gunakan nama lain
'uploaddisabledtext' => 'Pemuatan berkas tidak diizinkan.',
'php-uploaddisabledtext' => 'Pemuatan berkas dimatikan di PHP. Silakan cek pengaturan file_uploads.',
'uploadscripted' => 'Berkas ini mengandung HTML atau kode yang dapat diinterpretasikan dengan keliru oleh penjelajah web.',
-'uploadcorrupt' => 'Berkas tersebut rusak atau ekstensinya salah. Silakan periksa berkas tersebut dan muatkan kembali.',
'uploadvirus' => 'Berkas tersebut mengandung virus! Rincian: $1',
+'upload-source' => 'Berkas sumber',
'sourcefilename' => 'Nama berkas sumber:',
+'sourceurl' => 'URL sumber:',
'destfilename' => 'Nama berkas tujuan:',
'upload-maxfilesize' => 'Ukuran berkas maksimum: $1',
+'upload-description' => 'Keterangan berkas',
+'upload-options' => 'Opsi pengunduhan',
'watchthisupload' => 'Pantau berkas ini',
'filewasdeleted' => 'Suatu berkas dengan nama ini pernah dimuat dan selanjutnya dihapus. Harap cek $1 sebelum memuat lagi berkas tersebut.',
'upload-wasdeleted' => "'''Peringatan: Anda memuat suatu berkas yang telah pernah dihapus.'''
@@ -1547,13 +1651,44 @@ Anda harus mempertimbangkan apakah perlu untuk melanjutkan pemuatan berkas ini.
Log penghapusan berkas adalah sebagai berikut:",
'filename-bad-prefix' => "Nama berkas yang Anda muat diawali dengan '''\"\$1\"''', yang merupakan nama non-deskriptif yang biasanya diberikan secara otomatis oleh kamera digital. Harap pilih nama lain yang lebih deskriptif untuk berkas Anda.",
-'upload-proto-error' => 'Protokol tak tepat',
-'upload-proto-error-text' => 'Pemuatan jarak jauh membutuhkan URL yang diawali dengan <code>http://</code> atau <code>ftp://</code>.',
-'upload-file-error' => 'Kesalahan internal',
-'upload-file-error-text' => 'Suatu kesalahan internal terjadi sewaktu mencoba membuat berkas sementara di peladen.
+'upload-proto-error' => 'Protokol tak tepat',
+'upload-proto-error-text' => 'Pemuatan jarak jauh membutuhkan URL yang diawali dengan <code>http://</code> atau <code>ftp://</code>.',
+'upload-file-error' => 'Kesalahan internal',
+'upload-file-error-text' => 'Suatu kesalahan internal terjadi sewaktu mencoba membuat berkas sementara di peladen.
Silakan hubungi salah seorang [[Special:ListUsers/sysop|pengurus]].',
-'upload-misc-error' => 'Kesalahan pemuatan yang tak dikenal',
-'upload-misc-error-text' => 'Suatu kesalahan yang tak dikenal terjadi sewaktu pemuatan. Harap pastikan bahwa URL tersebut valid dan dapat diakses dan silakan coba lagi. Jika masalah ini tetap terjadi, kontak administrator sistem.',
+'upload-misc-error' => 'Kesalahan pemuatan yang tak dikenal',
+'upload-misc-error-text' => 'Suatu kesalahan yang tak dikenal terjadi sewaktu pemuatan. Harap pastikan bahwa URL tersebut valid dan dapat diakses dan silakan coba lagi. Jika masalah ini tetap terjadi, kontak administrator sistem.',
+'upload-too-many-redirects' => 'URL mengandung terlalu banyak pengalihan',
+'upload-unknown-size' => 'Ukuran tidak diketahui',
+'upload-http-error' => 'Kesalahan HTTP terjadi: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Akses ditolak',
+'img-auth-nopathinfo' => 'PATH_INFO hilang.
+Peladen anda tidak diatur untuk melewatkan informasi ini.
+Ini mungkin CGI-based dan tidak ditunjang img_auth.
+Lihat http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Alur yang diminta tidak diatur dalam direktori ungahan.',
+'img-auth-badtitle' => 'Tidak dapat membangun judul yang sah dari "$1".',
+'img-auth-nologinnWL' => 'Anda tidak masuk log dan "$1" tidak dalam daftar putih.',
+'img-auth-nofile' => 'Berkas "$1" tidak ada.',
+'img-auth-isdir' => 'Anda mencoba mengakses direktori "$1".
+Hanya akses berkas di bolehkan.',
+'img-auth-streaming' => 'Streaming "$1".',
+'img-auth-public' => 'Fungsi dari img_auth.php adalah mengeluarkan berkas dari wiki pribadi.
+Wiki ini di atur sebagai wiki umum.
+Untuk pilihan keamanan, img_auth.php dinonaktifkan.',
+'img-auth-noread' => 'Pengguna tidak memiliki akses untuk membaca "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL tidak sah: $1',
+'http-invalid-scheme' => 'URL dengan skema "$1" tidak didukung.',
+'http-request-error' => 'Permintaan HTTP gagal karena kesalahan yang tidak diketahui.',
+'http-read-error' => 'Kesalahan pembacaan HTTP',
+'http-timed-out' => 'Permintaan HTTP lewat tenggat.',
+'http-curl-error' => 'Kesalahan saat mengambil URL: $1',
+'http-host-unreachable' => 'Tidak dapat mencapai URL.',
+'http-bad-status' => 'Ada masalah saat permintaan halaman HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL tidak dapat dihubungi',
@@ -1562,6 +1697,7 @@ Silakan hubungi salah seorang [[Special:ListUsers/sysop|pengurus]].',
'upload-curl-error28-text' => 'Situs yang dituju terlalu lambat merespon. Tolong cek apakah situs tersebut aktif, tunggu sebentar, dan coba lagi. Mungkin Anda perlu mencobanya di saat yang lebih longgar.',
'license' => 'Jenis lisensi:',
+'license-header' => 'Jenis lisensi',
'nolicense' => 'Tidak ada yang dipilih',
'license-nopreview' => '(Pratayang tak tersedia)',
'upload_source_url' => ' (suatu URL valid yang dapat diakses publik)',
@@ -1582,6 +1718,7 @@ Klik pada kepala kolom untuk mengubah urutan.',
'listfiles_count' => 'Versi',
# File description page
+'file-anchor-link' => 'Berkas',
'filehist' => 'Riwayat berkas',
'filehist-help' => 'Klik pada tanggal/waktu untuk melihat berkas ini pada saat tersebut.',
'filehist-deleteall' => 'hapus semua',
@@ -1596,6 +1733,7 @@ Klik pada kepala kolom untuk mengubah urutan.',
'filehist-dimensions' => 'Dimensi',
'filehist-filesize' => 'Besar berkas',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Berkas tidak ditemukan',
'imagelinks' => 'Pranala berkas',
'linkstoimage' => '{{PLURAL:$1||}}$1 halaman berikut memiliki pranala ke berkas ini:',
'linkstoimage-more' => 'Lebih dari $1 {{PLURAL:$1|halaman|halaman}} memiliki pranala ke berkas ini.
@@ -1605,15 +1743,16 @@ Juga tersedia [[Special:WhatLinksHere/$2|daftar selengkapnya]].',
'morelinkstoimage' => 'Lihat [[Special:WhatLinksHere/$1|pranala lainnya]] ke berkas ini.',
'redirectstofile' => 'Berkas berikut {{PLURAL:$1|dialihkan|$1 dialihkan}} ke berkas ini:',
'duplicatesoffile' => '{{PLURAL:$1|Ada satu berkas yang|Sebanyak $1 berkas berikut}} merupakan duplikat dari berkas ini ([[Special:FileDuplicateSearch/$2|rincian lebih lanjut]]):',
-'sharedupload' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Lihat $1 untuk informasi lebih lanjut.',
-'shareduploadwiki-desc' => 'Deskripsi pada $1 ditampilkan di bawah ini.',
-'shareduploadwiki-linktext' => 'halaman deskripsi berkas',
-'noimage' => 'Tidak ada berkas dengan nama tersebut, tetapi Anda dapat $1.',
-'noimage-linktext' => 'memuat berkas',
+'sharedupload' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.',
+'sharedupload-desc-there' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.
+Silakan lihat [$2 halaman deskripsi berkas] untuk informasi lebih lanjut.',
+'sharedupload-desc-here' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.
+Deskripsi dari [$2 halaman deskripsinya] ditunjukkan di bawah ini.',
+'filepage-nofile' => 'Tidak ada berkas dengan nama ini.',
+'filepage-nofile-link' => 'Tidak ada berkas dengan nama ini, tetapi Anda dapat [$1 mengunggahnya].',
'uploadnewversion-linktext' => 'Muatkan versi yang lebih baru dari berkas ini',
-'shared-repo-from' => 'dari $1', # $1 is the repository name
-'shared-repo' => 'suatu repositori bersama', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'dari $1',
+'shared-repo' => 'suatu repositori bersama',
# File reversion
'filerevert' => 'Kembalikan $1',
@@ -1642,6 +1781,7 @@ Juga tersedia [[Special:WhatLinksHere/$2|daftar selengkapnya]].',
** Pelanggaran hak cipta
** Berkas duplikat',
'filedelete-edit-reasonlist' => 'Alasan penghapusan suntingan',
+'filedelete-maintenance' => 'Penghapusan dan pengembalian berkas sementara dinonaktifkan selama perawatan.',
# MIME search
'mimesearch' => 'Pencarian MIME',
@@ -1663,7 +1803,7 @@ Cek dahulu pranala lain ke templat tersebut sebelum menghapusnya.',
# Random page
'randompage' => 'Halaman sembarang',
-'randompage-nopages' => 'Tak terdapat halaman pada ruang nama "$1".',
+'randompage-nopages' => 'Tidak ada halaman pada {{PLURAL:$2||}}ruang nama berikut: $1.',
# Random redirect
'randomredirect' => 'Pengalihan sembarang',
@@ -1675,6 +1815,7 @@ Cek dahulu pranala lain ke templat tersebut sebelum menghapusnya.',
'statistics-header-edits' => 'Statistik penyuntingan',
'statistics-header-views' => 'Statistik penampilan',
'statistics-header-users' => 'Statistik pengguna',
+'statistics-header-hooks' => 'Statistik lainnya',
'statistics-articles' => 'Halaman konten',
'statistics-pages' => 'Jumlah halaman',
'statistics-pages-desc' => 'Semua halaman di wiki ini, termasuk halaman pembicaraan, pengalihan, dan lain-lain.',
@@ -1704,8 +1845,8 @@ Nama yang telah <s>dicoret</s> berarti telah dibetulkan.',
'brokenredirects' => 'Pengalihan rusak',
'brokenredirectstext' => 'Pengalihan-pengalihan berikut merujuk pada halaman yang tidak ada:',
-'brokenredirects-edit' => '(sunting)',
-'brokenredirects-delete' => '(hapus)',
+'brokenredirects-edit' => 'sunting',
+'brokenredirects-delete' => 'hapus',
'withoutinterwiki' => 'Halaman tanpa interwiki',
'withoutinterwiki-summary' => 'Halaman-halaman berikut tidak memiliki pranala ke versi dalam bahasa lain:',
@@ -1812,16 +1953,17 @@ Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna
# Special:Categories
'categories' => 'Kategori',
-'categoriespagetext' => 'Terdapat halaman-halaman atau media dalam kategori-kategori berikut.
-[[Special:UnusedCategories|Kategori-kategori tanpa isi]] tidak ditampilkan di sini.
-Lihat pula [[Special:WantedCategories|daftar kategori yang dibutuhkan]].',
+'categoriespagetext' => '{{PLURAL:$1|Kategori berikut|Kategori-kategori berikut}} memiliki isi halaman atau media.
+[[Special:UnusedCategories|Kategori yang tak digunakan]] tidak ditampilkan di sini.
+Lihat pula [[Special:WantedCategories|kategori yang diinginkan]].',
'categoriesfrom' => 'Tampilkan kategori-kategori dimulai dengan:',
'special-categories-sort-count' => 'urutkan menurut jumlah',
'special-categories-sort-abc' => 'urutkan menurut abjad',
# Special:DeletedContributions
-'deletedcontributions' => 'Kontribusi yang dihapus',
-'deletedcontributions-title' => 'Kontribusi yang dihapus',
+'deletedcontributions' => 'Kontribusi yang dihapus',
+'deletedcontributions-title' => 'Kontribusi yang dihapus',
+'sp-deletedcontributions-contribs' => 'kontribusi',
# Special:LinkSearch
'linksearch' => 'Pranala luar',
@@ -1836,6 +1978,16 @@ Lihat pula [[Special:WantedCategories|daftar kategori yang dibutuhkan]].',
'listusersfrom' => 'Tampilkan pengguna mulai dari:',
'listusers-submit' => 'Tampilkan',
'listusers-noresult' => 'Pengguna tidak ditemukan.',
+'listusers-blocked' => '(diblokir)',
+
+# Special:ActiveUsers
+'activeusers' => 'Daftar pengguna aktif',
+'activeusers-intro' => 'Berikut adalah daftar pengguna yang memiliki suatu bentuk aktivitas selama paling tidak $1 {{PLURAL:$1|hari|hari}} terakhir.',
+'activeusers-count' => '$1 {{PLURAL:$1||}}suntingan selama {{PLURAL:$3||}}$3 hari terakhir',
+'activeusers-from' => 'Tampilkan pengguna mulai dari:',
+'activeusers-hidebots' => 'Sembunyikan bot',
+'activeusers-hidesysops' => 'Sembunyikan pengurus',
+'activeusers-noresult' => 'Pengguna tidak ditemukan.',
# Special:Log/newusers
'newuserlogpage' => 'Log pengguna baru',
@@ -1846,16 +1998,22 @@ Lihat pula [[Special:WantedCategories|daftar kategori yang dibutuhkan]].',
'newuserlog-autocreate-entry' => 'akun pengguna dibuat secara otomatis',
# Special:ListGroupRights
-'listgrouprights' => 'Hak kelompok pengguna',
-'listgrouprights-summary' => 'Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].',
-'listgrouprights-group' => 'Kelompok',
-'listgrouprights-rights' => 'Hak',
-'listgrouprights-helppage' => 'Help:Hak akses',
-'listgrouprights-members' => '(daftar anggota)',
-'listgrouprights-addgroup' => 'Menambahkan {{PLURAL:$2|kelompok|kelompok}}: $1',
-'listgrouprights-removegroup' => 'Menghapus {{PLURAL:$2|kelompok|kelompok}}: $1',
-'listgrouprights-addgroup-all' => 'Menambahkan semua kelompok',
-'listgrouprights-removegroup-all' => 'Menghapus semua kelompok',
+'listgrouprights' => 'Hak kelompok pengguna',
+'listgrouprights-summary' => 'Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Hak yang berlaku</span>
+* <span class="listgrouprights-revoked">Hak yang dicabut</span>',
+'listgrouprights-group' => 'Kelompok',
+'listgrouprights-rights' => 'Hak',
+'listgrouprights-helppage' => 'Help:Hak akses',
+'listgrouprights-members' => '(daftar anggota)',
+'listgrouprights-addgroup' => 'Menambahkan {{PLURAL:$2|kelompok|kelompok}}: $1',
+'listgrouprights-removegroup' => 'Menghapus {{PLURAL:$2|kelompok|kelompok}}: $1',
+'listgrouprights-addgroup-all' => 'Menambahkan semua kelompok',
+'listgrouprights-removegroup-all' => 'Menghapus semua kelompok',
+'listgrouprights-addgroup-self' => 'Dapat menambahkan {{PLURAL:$2|grup| grup}} ke akun sendiri: $1',
+'listgrouprights-removegroup-self' => 'Menghapus {{PLURAL:$2|kelompok|kelompok}} dari akun sendiri: $1',
+'listgrouprights-addgroup-self-all' => 'Dapat menambahkan semua grup ke akun sendiri',
+'listgrouprights-removegroup-self-all' => 'Menghapus semua kelompok dari akun sendiri',
# E-mail user
'mailnologin' => 'Tidak ada alamat surel',
@@ -1927,27 +2085,32 @@ Perubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan ter
'enotif_lastvisited' => 'Lihat $1 untuk semua perubahan sejak kunjungan terakhir Anda.',
'enotif_lastdiff' => 'Kunjungi $1 untuk melihat perubahan ini.',
'enotif_anon_editor' => 'pengguna anonim $1',
-'enotif_body' => 'Dear $WATCHINGUSERNAME,
+'enotif_body' => 'Halo $WATCHINGUSERNAME,
+
-Halaman $PAGETITLE di {{SITENAME}} telah $CHANGEDORCREATED pada $PAGEEDITDATE oleh $PAGEEDITOR, lihat $PAGETITLE_URL untuk versi terakhir.
+Halaman $PAGETITLE di {{SITENAME}} telah $CHANGEDORCREATED pada $PAGEEDITDATE oleh $PAGEEDITOR, lihat $PAGETITLE_URL untuk revisi terakhir.
$NEWPAGE
-Riwayat suntingan: $PAGESUMMARY $PAGEMINOREDIT
+Ringkasan suntingan: $PAGESUMMARY $PAGEMINOREDIT
Hubungi penyunting:
-mail: $PAGEEDITOR_EMAIL
+surel: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Kami tidak akan mengirimkan pemberitahuan lain jika terjadi perubahan lagi, kecuali Anda jika Anda telah mengunjungi halaman tersebut. Anda juga dapat menghapus tanda notifikasi untuk semua halaman pantauan Anda pada daftar pantauan Anda.
+Tidak akan ada pemberitahuan lainnya dalam rangka perubahan lebih lanjut kecuali anda mengunjungi halaman ini.
+Anda juga dapat menset ulang tanda pemberitahuan untuk semua halaman pantauan anda pada daftar pantauan anda.
- Sistem notifikasi {{SITENAME}}
+ Sistem pemberitahuan anda di {{SITENAME}}
--
-Untuk mengubah preferensi daftar pantauan Anda, kunjungi
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Untuk mengubah preferensi daftar pantauan anda, kunjungi
+{{fullurl:{{#special:Watchlist}}/edit}}
-Umpan balik dan bantuan lanjutan:
+Untuk menghapus halaman dari daftar pantauan anda, kunjungi
+$UNWATCHURL
+
+Umpan balik dan bantuan lebih lanjut:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1959,9 +2122,10 @@ Umpan balik dan bantuan lanjutan:
'exblank' => 'halaman kosong',
'delete-confirm' => 'Hapus "$1"',
'delete-legend' => 'Hapus',
-'historywarning' => 'Peringatan: Halaman yang ingin Anda hapus mempunyai sejarah:',
+'historywarning' => "'''Peringatan:''' Halaman yang akan Anda hapus mempunyai sejarah dengan $1 {{PLURAL:$1|revisi|revisi}}:",
'confirmdeletetext' => 'Anda akan menghapus halaman atau berkas ini secara permanen berikut semua sejarahnya dari basis data. Pastikan bahwa Anda memang ingin melakukannya, mengetahui segala akibatnya, dan apa yang Anda lakukan ini adalah sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan {{SITENAME}}]].',
'actioncomplete' => 'Proses selesai',
+'actionfailed' => 'Eksekusi gagal',
'deletedtext' => '"<nowiki>$1</nowiki>" telah dihapus. Lihat $2 untuk log terkini halaman yang telah dihapus.',
'deletedarticle' => 'menghapus "[[$1]]"',
'suppressedarticle' => '"[[$1]]" disembunyikan',
@@ -1983,19 +2147,20 @@ Penghapusan halaman dengan sejarah penyuntingan yang panjang tidak diperbolehkan
Menghapus halaman ini dapat menyebabkan masalah dalam operasional basis data {{SITENAME}}.',
# Rollback
-'rollback' => 'Kembalikan suntingan',
-'rollback_short' => 'Kembalikan',
-'rollbacklink' => 'kembalikan',
-'rollbackfailed' => 'Pengembalian gagal dilakukan',
-'cantrollback' => 'Tidak dapat mengembalikan suntingan; pengguna terakhir adalah satu-satunya penulis artikel ini.',
-'alreadyrolled' => 'Tidak dapat melakukan pengembalian ke revisi terakhir [[:$1]] oleh [[User:$2|$2]] ([[User talk:$2|bicara]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Kembalikan suntingan',
+'rollback_short' => 'Kembalikan',
+'rollbacklink' => 'kembalikan',
+'rollbackfailed' => 'Pengembalian gagal dilakukan',
+'cantrollback' => 'Tidak dapat mengembalikan suntingan; pengguna terakhir adalah satu-satunya penulis artikel ini.',
+'alreadyrolled' => 'Tidak dapat melakukan pengembalian ke revisi terakhir [[:$1]] oleh [[User:$2|$2]] ([[User talk:$2|bicara]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
pengguna lain telah menyunting atau melakukan pengembalian terhadap halaman ini.
Suntingan terakhir dilakukan oleh [[User:$3|$3]] ([[User talk:$3|bicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Komentar penyuntingan adalah: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '←Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]]) dikembalikan ke versi terakhir oleh [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Pengembalian suntingan oleh $1; dikembalikan ke versi terakhir oleh $2.',
-'sessionfailure' => 'Sepertinya ada masalah dengan sesi log Anda; log Anda telah dibatalkan untuk mencegah pembajakan. Silakan tekan tombol "kembali" dan muat kembali halaman sebelum Anda masuk, lalu coba lagi.',
+'editcomment' => "Komentar penyuntingan adalah: \"''\$1''\".",
+'revertpage' => '←Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]]) dikembalikan ke versi terakhir oleh [[User:$1|$1]]',
+'revertpage-nouser' => 'Pengembalian suntingan oleh (pengguna dihapus) ke suntingan terakhir oleh [[User:$1|$1]]',
+'rollback-success' => 'Pengembalian suntingan oleh $1; dikembalikan ke versi terakhir oleh $2.',
+'sessionfailure' => 'Sepertinya ada masalah dengan sesi log Anda; log Anda telah dibatalkan untuk mencegah pembajakan. Silakan tekan tombol "kembali" dan muat kembali halaman sebelum Anda masuk, lalu coba lagi.',
# Protect
'protectlogpage' => 'Log perlindungan',
@@ -2012,7 +2177,7 @@ Lihat [[Special:ProtectedPages|daftar halaman yang dilindungi]] untuk daftar ter
'protectexpiry' => 'Kadaluwarsa:',
'protect_expiry_invalid' => 'Waktu kadaluwarsa tidak sah.',
'protect_expiry_old' => 'Waktu kadaluwarsa adalah pada masa lampau.',
-'protect-unchain' => 'Buka perlindungan pemindahan',
+'protect-unchain-permissions' => 'Aktifkan opsi perlindungan lanjutan',
'protect-text' => "Anda dapat melihat atau mengganti tingkatan perlindungan untuk halaman '''<nowiki>$1</nowiki>''' di sini.",
'protect-locked-blocked' => "Anda tak dapat mengganti tingkat perlindungan selagi diblokir. Berikut adalah konfigurasi saat ini untuk halaman '''$1''':",
'protect-locked-dblock' => "Tingkat perlindungan tak dapat diganti karena aktifnya penguncian basis data. Berikut adalah konfigurasi saat ini untuk halaman '''$1''':",
@@ -2038,7 +2203,7 @@ Lihat [[Special:ProtectedPages|daftar halaman yang dilindungi]] untuk daftar ter
** Perang suntingan
** Halaman dengan lalu-lintas tinggi',
'protect-edit-reasonlist' => 'Sunting alasan perlindungan',
-'protect-expiry-options' => '1 jam:1 hour,1 hari:1 day,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selamanya:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 jam:1 hour,1 hari:1 day,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selamanya:infinite',
'restriction-type' => 'Perlindungan:',
'restriction-level' => 'Tingkatan:',
'minimum-size' => 'Ukuran minimum',
@@ -2076,6 +2241,7 @@ Jika sebuah halaman baru dengan nama yang sama telah dibuat sejak penghapusan, r
'undelete-nodiff' => 'Tidak ada revisi yang lebih lama.',
'undeletebtn' => 'Kembalikan',
'undeletelink' => 'lihat/kembalikan',
+'undeleteviewlink' => 'lihat',
'undeletereset' => 'Reset',
'undeleteinvert' => 'Balikkan pilihan',
'undeletecomment' => 'Alasan:',
@@ -2113,19 +2279,23 @@ $1',
'contributions-title' => 'Kontribusi pengguna untuk $1',
'mycontris' => 'Kontribusi saya',
'contribsub2' => 'Untuk $1 ($2)',
-'nocontribs' => 'Tidak ada perubahan yang sesuai dengan kriteria tersebut.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Tidak ada perubahan yang sesuai dengan kriteria tersebut.',
'uctop' => ' (atas)',
'month' => 'Sejak bulan (dan sebelumnya):',
'year' => 'Sejak tahun (dan sebelumnya):',
-'sp-contributions-newbies' => 'Hanya pengguna-pengguna baru',
-'sp-contributions-newbies-sub' => 'Untuk pengguna baru',
-'sp-contributions-newbies-title' => 'Kontribusi pengguna baru',
-'sp-contributions-blocklog' => 'Log pemblokiran',
-'sp-contributions-logs' => 'log',
-'sp-contributions-search' => 'Cari kontribusi',
-'sp-contributions-username' => 'Alamat IP atau nama pengguna:',
-'sp-contributions-submit' => 'Cari',
+'sp-contributions-newbies' => 'Hanya pengguna-pengguna baru',
+'sp-contributions-newbies-sub' => 'Untuk pengguna baru',
+'sp-contributions-newbies-title' => 'Kontribusi pengguna baru',
+'sp-contributions-blocklog' => 'Log pemblokiran',
+'sp-contributions-deleted' => 'kontribusi pengguna yang dihapus',
+'sp-contributions-logs' => 'log',
+'sp-contributions-talk' => 'bicara',
+'sp-contributions-userrights' => 'pengelolaan hak pengguna',
+'sp-contributions-blocked-notice' => 'Pengguna ini sedang di blok. log pemblokiran terakhir ditampilkan berikut untuk referensi:',
+'sp-contributions-search' => 'Cari kontribusi',
+'sp-contributions-username' => 'Alamat IP atau nama pengguna:',
+'sp-contributions-submit' => 'Cari',
# What links here
'whatlinkshere' => 'Pranala balik',
@@ -2148,6 +2318,7 @@ $1',
# Block/unblock
'blockip' => 'Blokir pengguna',
+'blockip-title' => 'Blokir pengguna',
'blockip-legend' => 'Blokir pengguna',
'blockiptext' => 'Gunakan formulir di bawah untuk memblokir akses penulisan dari sebuah alamat IP atau pengguna tertentu.
Ini hanya boleh dilakukan untuk mencegah vandalisme, dan sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan]].
@@ -2172,7 +2343,7 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
'ipbenableautoblock' => 'Blokir alamat IP terakhir yang digunakan pengguna ini secara otomatis, dan semua alamat berikutnya yang mereka coba gunakan untuk menyunting.',
'ipbsubmit' => 'Blokir pengguna ini',
'ipbother' => 'Waktu lain:',
-'ipboptions' => '2 jam:2 hours,1 hari:1 day,3 hari:3 days,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selamanya:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 jam:2 hours,1 hari:1 day,3 hari:3 days,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selamanya:infinite',
'ipbotheroption' => 'lainnya',
'ipbotherreason' => 'Alasan lain/tambahan:',
'ipbhidename' => 'Sembunyikan nama pengguna dari suntingan dan daftar',
@@ -2201,9 +2372,11 @@ Lihat [[Special:IPBlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
'ipblocklist-sh-tempblocks' => '$1 pemblokiran sementara',
'ipblocklist-sh-addressblocks' => '$1 pemblokiran IP tunggal',
'ipblocklist-submit' => 'Cari',
+'ipblocklist-localblock' => 'Blok lokal',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|pemblokiran|pemblokiran}} lain',
'blocklistline' => '$1, $2 memblokir $3 ($4)',
'infiniteblock' => 'tak terbatas',
-'expiringblock' => 'kadaluwarsa $1',
+'expiringblock' => 'kadaluwarsa pada $2, $1',
'anononlyblock' => 'hanya pengguna anonim',
'noautoblockblock' => 'pemblokiran otomatis dimatikan',
'createaccountblock' => 'pembuatan akun diblokir',
@@ -2218,7 +2391,8 @@ Lihat [[Special:IPBlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
'autoblocker' => 'Diblokir secara otomatis karena alamat IP Anda digunakan oleh "[[User:$1|$1]]".
Alasan yang diberikan untuk pemblokiran $1 adalah: "$2"',
'blocklogpage' => 'Log pemblokiran',
-'blocklog-fulllog' => 'Log pemblokiran penuh',
+'blocklog-showlog' => 'Pengguna ini telah diblokir sebelumnya. Log pemblokiran di sediakan dibawah untuk referensi:',
+'blocklog-showsuppresslog' => 'Pengguna ini telah diblokir dan disembunyikan sebelumnya. Log penekanan disediakan dibawah untuk referensi:',
'blocklogentry' => 'memblokir [[$1]] dengan waktu kadaluwarsa $2 $3',
'reblock-logentry' => 'mengubah pemblokiran [[$1]] dengan waktu kadaluwarsa $2 $3',
'blocklogtext' => 'Di bawah ini adalah log pemblokiran dan pembukaan blokir terhadap pengguna.
@@ -2239,9 +2413,11 @@ Lihat [[Special:IPBlockList|daftar alamat IP yang diblokir]] untuk daftar pemblo
'ipb_already_blocked' => '"$1" telah diblokir',
'ipb-needreblock' => '== Sudah diblokir ==
$1 sudah diblokir. Apakah Anda ingin mengubah set pemblokiran yang bersangkutan?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Blok|Blok}} lain',
'ipb_cant_unblock' => 'Kesalahan: Blokir dengan ID $1 tidak ditemukan. Blokir tersebut kemungkinan telah dibuka.',
'ipb_blocked_as_range' => 'Kesalahan: IP $1 tidak diblok secara langsung dan tidak dapat dilepaskan. IP $1 diblok sebagai bagian dari pemblokiran kelompok IP $2, yang dapat dilepaskan.',
'ip_range_invalid' => 'Blok IP tidak sah.',
+'ip_range_toolarge' => 'Rentang blok lebih besar dari /$1 tidak diperbolehkan.',
'blockme' => 'Blokir saya',
'proxyblocker' => 'Pemblokir proxy',
'proxyblocker-disabled' => 'Fitur ini sedang tidak diakfifkan.',
@@ -2250,6 +2426,7 @@ $1 sudah diblokir. Apakah Anda ingin mengubah set pemblokiran yang bersangkutan?
'sorbsreason' => 'Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL.',
'sorbs_create_account_reason' => 'Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL. Anda tidak dapat membuat akun.',
'cant-block-while-blocked' => 'Anda tidak dapat memblokir pengguna lain ketika Anda sendiri sedang diblokir.',
+'cant-see-hidden-user' => 'Pengguna yang anda coba blokir telah di blokir dan di sembunyikan. Selama anda tidak memiliki hak sembunyikan pengguna, anda tidak dapat melihat atau menyunting pemblokiran pengguna ini.',
# Developer tools
'lockdb' => 'Kunci basis data',
@@ -2284,6 +2461,7 @@ Perhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman yan
Dalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabungkan halaman secara manual.",
'movearticle' => 'Pindahkan halaman:',
+'moveuserpage-warning' => "'''Peringatan:''' Anda tengah memindahkan halaman pengguna. Perlu diketahui bahwa hanya halaman yang akan dipindahkan namun pengguna ''tidak akan'' berganti nama.",
'movenologin' => 'Belum masuk log',
'movenologintext' => 'Anda harus menjadi pengguna terdaftar dan telah [[Special:UserLogin|masuk log]] untuk dapat memindahkan suatu halaman.',
'movenotallowed' => 'Anda tak memiliki hak akses untuk memindahkan halaman.',
@@ -2294,7 +2472,7 @@ Dalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabung
'move-watch' => 'Pantau halaman ini',
'movepagebtn' => 'Pindahkan halaman',
'pagemovedsub' => 'Pemindahan berhasil',
-'movepage-moved' => '\'\'\'"$1" telah dipindahkan ke "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" telah dipindahkan ke "$2"\'\'\'',
'movepage-moved-redirect' => 'Halaman pengalihan telah dibuat.',
'movepage-moved-noredirect' => 'Pengalihan tidak dibuat.',
'articleexists' => 'Halaman dengan nama tersebut telah ada atau nama yang dipilih tidak sah. Silakan pilih nama lain.',
@@ -2335,6 +2513,15 @@ Artikel yang dituju, "[[:$1]]", telah mempunyai isi. Apakah Anda hendak menghapu
'imageinvalidfilename' => 'Nama berkas tujuan tidak sah',
'fix-double-redirects' => 'Perbaiki semua pengalihan ganda yang mungkin terjadi',
'move-leave-redirect' => 'Buat pengalihan ke judul baru',
+'protectedpagemovewarning' => "'''Peringatan''': Halaman ini telah dikunci sehingga hanya pengguna dengan hak akses pengurus yang bisa memindahkannya.
+Entri catatan terakhir disediakan dibawah untuk referensi:",
+'semiprotectedpagemovewarning' => "'''Catatan:''' Halaman ini telah dikunci sehingga hanya pengguna terdaftar yang dapat memindahkannya.
+Entri catatan terakhir disediakan dibawah untuk referensi:",
+'move-over-sharedrepo' => '== Berkas sudah ada ==
+
+[[:$1]] sudah ada pada penyimpanan bersama. Memindahkan berkas ke judul ini akan menimpa berkas bersama.',
+'file-exists-sharedrepo' => 'Nama berkas yang dipilih sudah digunakan pada suatu penyimpanan bersama.
+Silakan pilih nama lain.',
# Export
'export' => 'Ekspor halaman',
@@ -2357,15 +2544,21 @@ Jika Anda hanya ingin mengimpor versi terbaru, Anda melakukannya lebih cepat den
'export-pagelinks' => 'Sertakan halaman terkait hingga kedalaman:',
# Namespace 8 related
-'allmessages' => 'Pesan sistem',
-'allmessagesname' => 'Nama',
-'allmessagesdefault' => 'Teks baku',
-'allmessagescurrent' => 'Teks sekarang',
-'allmessagestext' => 'Ini adalah daftar semua pesan sistem yang tersedia dalam ruang nama MediaWiki.
+'allmessages' => 'Pesan sistem',
+'allmessagesname' => 'Nama',
+'allmessagesdefault' => 'Teks baku',
+'allmessagescurrent' => 'Teks sekarang',
+'allmessagestext' => 'Ini adalah daftar semua pesan sistem yang tersedia dalam ruang nama MediaWiki.
Silakan kunjungi [http://www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan [http://translatewiki.net translatewiki.net] jika Anda ingin berkontribusi untuk pelokalan generik MediaWiki.',
-'allmessagesnotsupportedDB' => "Halaman ini tidak dapat digunakan karena '''\$wgUseDatabaseMessages''' telah dimatikan.",
-'allmessagesfilter' => 'Filter nama pesan:',
-'allmessagesmodified' => 'Hanya tampilkan yang diubah',
+'allmessagesnotsupportedDB' => "Halaman ini tidak dapat digunakan karena '''\$wgUseDatabaseMessages''' telah dimatikan.",
+'allmessages-filter-legend' => 'Penyaring',
+'allmessages-filter' => 'Saring dengan keadaan kustomisasi:',
+'allmessages-filter-unmodified' => 'Tidak diubah',
+'allmessages-filter-all' => 'Semua',
+'allmessages-filter-modified' => 'Diubah',
+'allmessages-prefix' => 'Saring dengan awalan:',
+'allmessages-language' => 'Bahasa:',
+'allmessages-filter-submit' => 'Tuju ke',
# Thumbnails
'thumbnail-more' => 'Perbesar',
@@ -2375,6 +2568,9 @@ Silakan kunjungi [http://www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki
'djvu_no_xml' => 'XML untuk berkas DjVu tak dapat diperoleh',
'thumbnail_invalid_params' => 'Kesalahan parameter miniatur',
'thumbnail_dest_directory' => 'Direktori tujuan tak dapat dibuat',
+'thumbnail_image-type' => 'Tipe gambar tidak didukung',
+'thumbnail_gd-library' => 'Konfigurasi pustaka GD tak lengkap: tak ada fungsi $1',
+'thumbnail_image-missing' => 'Berkas yang tampaknya hilang: $1',
# Special:Import
'import' => 'Impor halaman',
@@ -2439,6 +2635,7 @@ Simpan ke komputer Anda lalu muatkan di sini.',
'tooltip-ca-viewsource' => 'Halaman ini dilindungi. Anda hanya dapat melihat sumbernya.',
'tooltip-ca-history' => 'Versi-versi sebelumnya dari halaman ini.',
'tooltip-ca-protect' => 'Lindungi halaman ini',
+'tooltip-ca-unprotect' => 'Buka perlindungan halaman ini',
'tooltip-ca-delete' => 'Hapus halaman ini',
'tooltip-ca-undelete' => 'Kembalikan suntingan ke halaman ini sebelum halaman ini dihapus',
'tooltip-ca-move' => 'Pindahkan halaman ini',
@@ -2449,6 +2646,7 @@ Simpan ke komputer Anda lalu muatkan di sini.',
'tooltip-search-fulltext' => 'Cari halaman yang memiliki teks seperti ini',
'tooltip-p-logo' => 'Kunjungi Halaman Utama',
'tooltip-n-mainpage' => 'Kunjungi Halaman Utama',
+'tooltip-n-mainpage-description' => 'Kunjungi Halaman Utama',
'tooltip-n-portal' => 'Tentang proyek, apa yang dapat anda lakukan, di mana mencari sesuatu',
'tooltip-n-currentevents' => 'Temukan informasi tentang peristiwa terkini',
'tooltip-n-recentchanges' => 'Daftar perubahan terbaru dalam wiki.',
@@ -2495,6 +2693,7 @@ Simpan ke komputer Anda lalu muatkan di sini.',
'chick.css' => '/* CSS yang ada di sini akan diterapkan untuk kulit Chick. */',
'simple.css' => '/* CSS yang ada di sini akan diterapkan untuk kulit Simple. */',
'modern.css' => '/* CSS yang ada di sini akan diterapkan untuk kulit Modern. */',
+'vector.css' => '/* CSS yang ada di sini akan diterapkan untuk kulit Vector. */',
'print.css' => '/* CSS yang ada di sini akan diterapkan untuk tampilan cetak. */',
'handheld.css' => '/* CSS yang ada di sini akan diterapkan untuk tampilan piranti genggam yang dikonfigurasi di $wgHandheldStyle. */',
@@ -2508,6 +2707,7 @@ Simpan ke komputer Anda lalu muatkan di sini.',
'chick.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Chick */',
'simple.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Simple */',
'modern.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Modern */',
+'vector.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */',
# Metadata
'nodublincore' => 'Metadata Dublin Core RDF dimatikan di server ini.',
@@ -2517,10 +2717,12 @@ Simpan ke komputer Anda lalu muatkan di sini.',
# Attribution
'anonymous' => '{{PLURAL:$1|Pengguna|Pengguna-pengguna}} anonim di {{SITENAME}}',
'siteuser' => 'Pengguna {{SITENAME}} $1',
-'lastmodifiedatby' => 'Halaman ini terakhir kali diubah $2, $1 oleh $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Pengguna anonim {{SITENAME}} $1',
+'lastmodifiedatby' => 'Halaman ini terakhir kali diubah $2, $1 oleh $3.',
'othercontribs' => 'Didasarkan pada karya $1.',
'others' => 'lainnya',
'siteusers' => '{{PLURAL:$2|Pengguna|Pengguna-pengguna}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2||}}Pengguna anonim {{SITENAME}} $1',
'creditspage' => 'Penghargaan halaman',
'nocredits' => 'Tidak ada informasi penghargaan yang tersedia untuk halaman ini.',
@@ -2553,11 +2755,22 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
'mw_math_modern' => 'Disarankan untuk penjelajah web modern',
'mw_math_mathml' => 'MathML jika mungkin (percobaan)',
+# Math errors
+'math_failure' => 'Gagal memparse',
+'math_unknown_error' => 'Kesalahan yang tidak diketahui',
+'math_unknown_function' => 'fungsi yang tidak diketahui',
+'math_lexing_error' => 'kesalahan lexing',
+'math_syntax_error' => 'kesalahan sintaks',
+'math_image_error' => 'Konversi PNG gagal; periksa apakah latex, dvips, gs, dan convert terinstal dengan benar',
+'math_bad_tmpdir' => 'Tidak dapat menulisi atau membuat direktori sementara math',
+'math_bad_output' => 'Tidak dapat menulisi atau membuat direktori keluaran math',
+'math_notexvc' => 'Executable texvc hilang; silakan lihat math/README untuk cara konfigurasi.',
+
# Patrolling
'markaspatrolleddiff' => 'Tandai telah dipatroli',
'markaspatrolledtext' => 'Tandai artikel ini telah dipatroli',
'markedaspatrolled' => 'Ditandai telah dipatroli',
-'markedaspatrolledtext' => 'Revisi yang dipilih telah ditandai terpatroli',
+'markedaspatrolledtext' => 'Revisi yang terpilih dari [[:$1]] telah ditandai sebagai terpatroli.',
'rcpatroldisabled' => 'Patroli perubahan terbaru dimatikan',
'rcpatroldisabledtext' => 'Fitur patroli perubahan terbaru sedang dimatikan.',
'markedaspatrollederror' => 'Tidak dapat menandai telah dipatroli',
@@ -2587,13 +2800,10 @@ $1',
'previousdiff' => '← Revisi sebelumnya',
'nextdiff' => 'Revisi selanjutnya →',
-# Visual comparison
-'visual-comparison' => 'Perbandingan visual',
-
# Media information
'mediawarning' => "'''Peringatan''': Berkas ini mungkin mengandung kode berbahaya.
Jika dijalankan, sistem Anda akan berisiko terserang.",
-'imagemaxsize' => 'Batasi ukuran gambar dalam halaman deskripsi berkas sampai:',
+'imagemaxsize' => "Batas ukuran gambar:<br />''(untuk halaman deskripsi berkas)''",
'thumbsize' => 'Ukuran miniatur:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|halaman|halaman}}',
'file-info' => '(ukuran berkas: $1, tipe MIME: $2)',
@@ -2602,6 +2812,8 @@ Jika dijalankan, sistem Anda akan berisiko terserang.",
'svg-long-desc' => '(Berkas SVG, nominal $1 × $2 piksel, besar berkas: $3)',
'show-big-image' => 'Resolusi penuh',
'show-big-image-thumb' => '<small>Ukuran pratayang ini: $1 × $2 piksel</small>',
+'file-info-gif-looped' => 'melingkar',
+'file-info-gif-frames' => '$1 {{PLURAL:$1||}}frame',
# Special:NewFiles
'newimages' => 'Berkas baru',
@@ -2638,7 +2850,7 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lebar',
@@ -2765,14 +2977,14 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-unknowndate' => 'Tanggal tak diketahui',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Dibalik horisontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Diputar 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Dibalik vertikal', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Diputar 90° CCW dan dibalik vertikal', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Diputar 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Diputar 90° CW dan dibalik vertikal', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Diputar 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Dibalik horisontal',
+'exif-orientation-3' => 'Diputar 180°',
+'exif-orientation-4' => 'Dibalik vertikal',
+'exif-orientation-5' => 'Diputar 90° CCW dan dibalik vertikal',
+'exif-orientation-6' => 'Diputar 90° CW',
+'exif-orientation-7' => 'Diputar 90° CW dan dibalik vertikal',
+'exif-orientation-8' => 'Diputar 90° CCW',
'exif-planarconfiguration-1' => 'format chunky',
'exif-planarconfiguration-2' => 'format planar',
@@ -2894,7 +3106,7 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-gpsmeasuremode-2' => 'Pengukuran 2-dimensi',
'exif-gpsmeasuremode-3' => 'Pengukuran 3-dimensi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer per jam',
'exif-gpsspeed-m' => 'Mil per jam',
'exif-gpsspeed-n' => 'Knot',
@@ -2913,6 +3125,7 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'watchlistall2' => 'semua',
'namespacesall' => 'semua',
'monthsall' => 'semua',
+'limitall' => 'semua',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat surel',
@@ -2935,14 +3148,14 @@ Sekarang Anda dapat [[Special:UserLogin|masuk log]] dan mulai menggunakan wiki.'
'confirmemail_loggedin' => 'Alamat surel Anda telah dikonfirmasi.',
'confirmemail_error' => 'Terjadi kesalahan sewaktu menyimpan konfirmasi Anda.',
'confirmemail_subject' => 'Konfirmasi alamat surel {{SITENAME}}',
-'confirmemail_body' => 'Seseorang, mungkin Anda, dari alamat IP $1, telah mendaftarkan akun "$2" dengan alamat surat-e ini di {{SITENAME}}.
+'confirmemail_body' => 'Seseorang, mungkin Anda, dari alamat IP $1, telah mendaftarkan akun "$2" dengan alamat surel ini di {{SITENAME}}.
-Untuk mengkonfirmasikan bahwa akun ini benar dimiliki oleh Anda sekaligus mengaktifkan fitur surat-e di {{SITENAME}}, ikuti pranala berikut pada penjelajah web Anda:
+Untuk mengkonfirmasikan bahwa akun ini benar dimiliki oleh Anda sekaligus mengaktifkan fitur surel di {{SITENAME}}, ikuti pranala berikut pada penjelajah web Anda:
$3
Jika Anda merasa *tidak pernah* mendaftar, jangan ikuti pranala di atas.
-Klik pada pranala ini untuk membatalkan konfirmasi alamat surat-e:
+Klik pada pranala ini untuk membatalkan konfirmasi alamat surel:
$5
@@ -3081,7 +3294,7 @@ Anda juga dapat [[Special:Watchlist/edit|menggunakan penyunting standar Anda]].'
'duplicate-defaultsort' => 'Peringatan: Kunci pengurutan baku "$2" mengabaikan kunci pengurutan baku "$1" sebelumnya.',
# Special:Version
-'version' => 'Versi', # Not used as normal message but as header for the special page itself
+'version' => 'Versi',
'version-extensions' => 'Ekstensi terinstal',
'version-specialpages' => 'Halaman istimewa',
'version-parserhooks' => 'Kait parser',
@@ -3095,7 +3308,7 @@ Anda juga dapat [[Special:Watchlist/edit|menggunakan penyunting standar Anda]].'
'version-skin-extension-functions' => 'Fungsi ekstensi kulit',
'version-hook-name' => 'Nama kait',
'version-hook-subscribedby' => 'Dilanggani oleh',
-'version-version' => 'Versi',
+'version-version' => '(Versi $1)',
'version-license' => 'Lisensi',
'version-software' => 'Perangkat lunak terinstal',
'version-software-product' => 'Produk',
@@ -3176,4 +3389,15 @@ Keterangan tampilan:
'dberr-outofdate' => 'Harap diperhatikan bahwa indeks mereka terhadap isi kami mungkin sudah kadaluwarsa.',
'dberr-cachederror' => 'Berikut adalah salinan tersimpan halaman yang diminta, dan mungkin bukan yang terbaru.',
+# HTML forms
+'htmlform-invalid-input' => 'Ada kesalahan dalam beberapa input Anda',
+'htmlform-select-badoption' => 'Nilai yang Anda masukkan tidak sah',
+'htmlform-int-invalid' => 'Nilai yang Anda masukkan bukan integer.',
+'htmlform-float-invalid' => 'Yang Anda masukkan bukan merupakan angka.',
+'htmlform-int-toolow' => 'Nilai yang Anda masukkan terlalu rendah di bawah nilai minimum $1',
+'htmlform-int-toohigh' => 'Nilai yang Anda masukkan melebihi nilai maksimum $1',
+'htmlform-submit' => 'Kirim',
+'htmlform-reset' => 'Batalkan perubahan',
+'htmlform-selectorother-other' => 'Lain-lain',
+
);
diff --git a/languages/messages/MessagesIe.php b/languages/messages/MessagesIe.php
index c2a802fc..7e623036 100644
--- a/languages/messages/MessagesIe.php
+++ b/languages/messages/MessagesIe.php
@@ -77,19 +77,21 @@ $messages = array(
'mainpagetext' => "'''Software del wiki installat con successe.'''",
-'about' => 'Apropó',
-'article' => 'Articul',
-'newwindow' => '(aperte un nov fenestre)',
-'cancel' => 'Anullar',
+'about' => 'Apropó',
+'article' => 'Articul',
+'newwindow' => '(aperte un nov fenestre)',
+'cancel' => 'Anullar',
+'moredotdotdot' => 'Plu mult...',
+'mytalk' => 'Mi discussion',
+'anontalk' => 'Discussion por ti ci IP',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Serchar',
'qbedit' => 'Modificar',
'qbpageoptions' => 'Págine de optiones',
'qbpageinfo' => 'Págine de information',
'qbspecialpages' => 'Special págines',
-'moredotdotdot' => 'Plu mult...',
-'mytalk' => 'Mi discussion',
-'anontalk' => 'Discussion por ti ci IP',
-'and' => '&#32;e',
'errorpagetitle' => 'Errore',
'returnto' => 'Retornar a $1.',
@@ -163,11 +165,9 @@ $messages = array(
'viewsource' => 'Vider fonte',
# Login and logout pages
-'logouttitle' => 'Fine de session',
'logouttext' => "'''Vu ha terminat vor session.'''
Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session denov quam li sam usator o quam un diferent usator.",
-'loginpagetitle' => 'Registrar se/Intrar',
'yourname' => 'Vor nómine usatori:',
'yourpassword' => 'Vor passa-parol:',
'yourpasswordagain' => 'Tippa denov vor passa-parol',
@@ -182,7 +182,6 @@ Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session d
'createaccount' => 'Crear un nov conto',
'gotaccountlink' => 'Intrar',
'badretype' => 'Li passa-paroles queles vu tippat ne es identic.',
-'youremail' => 'Vor ret-adresse:',
'loginerror' => 'Erra in initiation del session',
'nocookieslogin' => '{{SITENAME}} utilisa cookies por far intrar usatores. Vu nu ne permisse cookies. Ples permisser les e provar denov.',
'loginsuccesstitle' => 'Apertion de session successosi',
@@ -217,16 +216,19 @@ Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session d
'lineno' => 'Linea $1:',
# Search results
-'viewprevnext' => 'Vider ($1) ($2) ($3)',
+'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Auxilie',
+# Quickbar
+'qbsettings' => 'Personalisation del barre de utensiles',
+
# Preferences page
'preferences' => 'Preferenties',
'mypreferences' => 'Mi preferenties',
'prefsnologin' => 'Vu ne ha intrat',
-'qbsettings' => 'Personalisation del barre de utensiles',
'changepassword' => 'Modificar passa-parol',
'saveprefs' => 'Conservar preferenties',
+'youremail' => 'Vor ret-adresse:',
# Groups
'group-user' => 'Usatores',
@@ -253,7 +255,9 @@ Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session d
'newpageletter' => 'N',
# Recent changes linked
-'recentchangeslinked' => 'Relatet modificationes',
+'recentchangeslinked' => 'Relatet modificationes',
+'recentchangeslinked-feed' => 'Relatet modificationes',
+'recentchangeslinked-toolbox' => 'Relatet modificationes',
# Upload
'upload' => 'Cargar file',
@@ -330,6 +334,8 @@ Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session d
# Contributions
'mycontris' => 'Mi contributiones',
+'sp-contributions-talk' => 'Discussion',
+
# What links here
'whatlinkshere' => 'Ligat págines',
'whatlinkshere-page' => 'Págine:',
@@ -369,7 +375,7 @@ Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse aperter un session d
'monthsall' => 'omni',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
# Special:SpecialPages
'specialpages' => 'Special págines',
diff --git a/languages/messages/MessagesIg.php b/languages/messages/MessagesIg.php
index 68dea5d0..32da7dcc 100644
--- a/languages/messages/MessagesIg.php
+++ b/languages/messages/MessagesIg.php
@@ -41,6 +41,7 @@ $messages = array(
'tog-enotifminoredits' => 'Türüm e-mail maka orü ntakịrị ihüá',
'tog-enotifrevealaddr' => 'Zifór ahaebeibị e-mail m na e-mail okwuókà',
'tog-shownumberswatching' => 'Zi onuogụgụ ndi na banife nke ne lé',
+'tog-oldsig' => 'Létu ntakiri ndẹlu ejị a ma gí:',
'tog-showjumplinks' => 'Kwé ka njikodo "mani énū" I mé',
'tog-watchlisthideown' => 'Zonari orüm fwuör ndetu ihem ne lé',
'tog-watchlisthidebots' => 'Zonari orü bot fwuör ndetu ihem ne lé',
@@ -54,6 +55,13 @@ $messages = array(
'underline-never' => 'Anáobulạ',
'underline-default' => 'Ndatụ ihü njikota',
+# Font style option in Special:Preferences
+'editfont-style' => 'Rüwa ámá éfi mkpúrù èdè:',
+'editfont-default' => 'Ndatụ ihü njikota',
+'editfont-monospace' => 'Otụ ihe ná kechí mkpúrù èdè',
+'editfont-sansserif' => 'Mkpúrù èdè sans-serif',
+'editfont-serif' => 'Mkpúrù èdè Serif',
+
# Dates
'sunday' => 'Sondè',
'monday' => 'Mondè',
@@ -112,16 +120,26 @@ $messages = array(
'subcategories' => 'Ébéonọr ime ime',
'category-media-header' => 'Nka nọr ime ébéonọr "$1"',
'hidden-categories' => '{{PLURAL:$1|Ébéonọr zonari|Ébéonọr zonari}}',
-'hidden-category-category' => 'Ébéanọr zonari a zonari', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ébéanọr zonari a zonari',
'category-subcat-count' => '{{PLURAL:$2|Ébéanọr nka nwerechạ ébéanọr-ime nkeá.|Ébéanọr nka nwere {{PLURAL:$1|ébéanọr-ime|$1 ébéanọr-ime}}, guru nke $2 total.}}',
'listingcontinuesabbrev' => 'mewá.',
+'index-category' => 'Ẹdẹle Ihü',
+'noindex-category' => 'Ihü ẹdẹlebu',
'mainpagetext' => "'''MediaWiki a banyélé nke oma.'''",
-'about' => 'Abwátà',
-'article' => 'Ihü iheníle',
-'newwindow' => '(o na mepo na onyonyo ohúrù)',
-'cancel' => 'Emekwàlà',
+'about' => 'Abwátà',
+'article' => 'Ihü iheníle',
+'newwindow' => '(o na mepo na onyonyo ohúrù)',
+'cancel' => 'Emekwàlà',
+'moredotdotdot' => 'Ozókwá...',
+'mypage' => 'Ihüm',
+'mytalk' => 'Okwum',
+'anontalk' => 'Owu màkà IP nká',
+'navigation' => 'Otú Uzọr',
+'and' => '&#32;ná',
+
+# Cologne Blue skin
'qbfind' => 'Tüo',
'qbbrowse' => 'Garia',
'qbedit' => 'Rüwa',
@@ -129,15 +147,35 @@ $messages = array(
'qbpageinfo' => 'Abwátà nka',
'qbmyoptions' => 'Ihüm',
'qbspecialpages' => 'Ihü mkpà',
-'moredotdotdot' => 'Ozókwá...',
-'mypage' => 'Ihüm',
-'mytalk' => 'Okwum',
-'anontalk' => 'Owu màkà IP nká',
-'navigation' => 'Otú Uzọr',
-'and' => '&#32;ná',
-
-# Metadata in edit box
-'metadata_help' => 'Ómárí nso:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Tinyé Okwu',
+'vector-action-delete' => 'Gbakashia',
+'vector-action-move' => 'Puzié',
+'vector-action-protect' => 'Cẹdolu',
+'vector-action-undelete' => 'A bakashikwala',
+'vector-action-unprotect' => 'É cẹdolu',
+'vector-namespace-category' => 'Ébéonọr',
+'vector-namespace-help' => 'Ihü I nye áká',
+'vector-namespace-image' => 'Njikota èdè',
+'vector-namespace-main' => 'Ihü',
+'vector-namespace-media' => 'Ihü nkà',
+'vector-namespace-mediawiki' => 'Ozi',
+'vector-namespace-project' => 'Ihü orü',
+'vector-namespace-special' => 'Ihü mkpà',
+'vector-namespace-talk' => 'Akíkó',
+'vector-namespace-template' => 'Àtụ',
+'vector-namespace-user' => 'Ihü ndi na banife',
+'vector-view-create' => 'Ké',
+'vector-view-edit' => 'Rüwa',
+'vector-view-history' => 'Le akíkó mbu',
+'vector-view-view' => 'Guwá',
+'vector-view-viewsource' => 'Zi mkpurụ',
+'actions' => 'Mmèmé',
+'namespaces' => 'Ámááhà',
+'variants' => 'Nke ichè ichè',
'errorpagetitle' => 'Nsogbú',
'returnto' => 'Ganata na $1.',
@@ -186,12 +224,17 @@ $messages = array(
'otherlanguages' => 'Na asụsụ ndị ozó',
'redirectedfrom' => '(Kufùrù shi $1)',
'redirectpagesub' => 'Kufù ebe ihü nka na ga',
-'lastmodifiedat' => 'Há rüchàrà na ihü nka na $1, mgbe $2', # $1 date, $2 time
+'lastmodifiedat' => 'Há rüchàrà na ihü nka na $1, mgbe $2',
'viewcount' => 'Ha banyere ihü nka na {{PLURAL:$1|otu|$1 mgbe ole}}.',
'protectedpage' => 'Ihü a cẹdolu a cẹdo',
'jumpto' => 'Wuá ébé:',
'jumptonavigation' => 'otú uzọr',
'jumptosearch' => 'chöwá',
+'view-pool-error' => 'Ndó, ihe na enye juchàrà ejucha oge nka.
+Madu kachạrạ ndi choro ihu ihü nka.
+Biko chetukwa oge kà oruo mgbe I choro I banyé ihü nka ozor.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Maka {{SITENAME}}',
@@ -204,14 +247,12 @@ $messages = array(
'disclaimerpage' => 'Project:Ihe I kweshiri ma',
'edithelp' => 'Inyetuáká I rüwa',
'edithelppage' => 'Help: I rüwa',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help: Ihe di ime',
'mainpage' => 'Ihü Mbu',
'mainpage-description' => 'Ihü Mbu',
'policy-url' => 'Project:Iwu',
'portal' => 'Ogbako ọtú',
-'portal-url' => 'Project:Lounge',
+'portal-url' => 'Project:Ogbako Ọtú',
'privacy' => 'Iwu maka ndi ichi ichie',
'privacypage' => 'Project:Iwu maka ndi ichi ichie',
@@ -311,6 +352,7 @@ E chefụkwạlạ I gbanwere [[Special:Preferences|{{SITENAME}} iheichọrọ]]
'nav-login-createaccount' => 'Banyé / ké buwa',
'loginprompt' => 'Í gi nwé cookies Í chórí bátá {{SITENAME}}.',
'userlogin' => 'Banyé / ké buwa',
+'userloginnocreate' => 'Banyé',
'logout' => 'Fwuör',
'userlogout' => 'Fwuör',
'notloggedin' => 'I bata bè',
@@ -321,18 +363,13 @@ E chefụkwạlạ I gbanwere [[Special:Preferences|{{SITENAME}} iheichọrọ]]
'gotaccountlink' => 'Banyé',
'createaccountmail' => 'na e-mail',
'badretype' => 'Mkpurụ okwu ejị a gafẹ é jëghị.',
-'username' => 'Áhà ejị a rüorü:',
-'uid' => 'ID onye né ké:',
-'prefs-memberingroups' => 'Onyé otu nke {{PLURAL:$1|ọtú|ọtú}}:',
-'yourlanguage' => 'Asụsụ:',
-'yourgender' => 'Nwayi/okpoho ma o nwoke:',
-'gender-male' => 'Nwoke',
-'gender-female' => 'Nwanyi/Okpoho',
'loginerror' => 'Nsogbu ngbe I choro I bata',
+'createaccounterror' => 'O nweriki ké buwa: $1',
'noname' => 'I nyétubọ áhạ buwa di mkpà.',
'loginsuccesstitle' => 'I batala nke oma',
'loginsuccess' => "'''Í bátálá nke ọma na ime {{SITENAME}} na áhà \"\$1\".'''",
'nouserspecified' => 'I kweshiri nyetu áhà gi iji a rüoru.',
+'login-userblocked' => 'Ha gbachịrị onye á ezi. Anaá kweté kör banyé.',
'wrongpassword' => 'Mkpurụ okwu ejị a gafẹ á dighi nke ómá.
Biko meríáríá ya.',
'wrongpasswordempty' => 'Mkpurụ okwu ejị a gafẹ á dighi.
@@ -350,6 +387,7 @@ Biko meríáríá ya.',
'retypenew' => 'Dechákwari mkpurụ okwu ejị a gafẹ nke ohúrù:',
'resetpass_success' => 'Mkpurụ okwu ejị a gafẹ a gbanwere nke oma!
I na á banye...',
+'resetpass-submit-cancel' => 'Emekwàlà',
'resetpass-temp-password' => 'mkpurụ okwu ejị a gafẹ I gi kushi ngwa ngwa:',
# Edit page toolbar
@@ -397,14 +435,19 @@ I na á banye...',
'yourtext' => 'Mkpurụ edemede gi',
'storedversion' => 'Ihe gbanwere nke dosèrè a dose',
'yourdiff' => 'Ihedichiè',
+'semiprotectedpagewarning' => "'''Lè kwá:''' Ha gbachịrị Ihü nke ka nání ndi íshí bu ndi nwéríkí rü na élú ya.
+Ndetu banyéré nkè ogẹ nso di na okpúrụ màkà ádịamámá:",
+'templatesused' => '{{PLURAL:$1|Àtụ|Àtụ}} hé jịrị rü ihüá:',
'template-protected' => '(cẹdoluecẹdo)',
'template-semiprotected' => '(cẹdolu-ntakiri)',
'nocreate-loggedin' => 'Í nwéghi ọdà Í ké ihü ohụrụ.',
'permissionserrorstext-withaction' => 'Í nwéghi ọdà Í $2, {{PLURAL:$1|màkà|màkà}} ihe ha detùrù na àlà nga:',
+'log-fulllog' => 'Zichara ndetù',
'edit-conflict' => 'Orü ná lüogù.',
# History pages
'currentrev' => 'Kuwaria nke ubüwạ',
+'currentrev-asof' => 'Kuwaria shi mgbe $1',
'previousrevision' => '← Kuwaria di kwa ichie',
'nextrevision' => 'Kuwaria di kwa ohúrù →',
'currentrevisionlink' => 'Nkuwaria nke ubwa',
@@ -414,26 +457,34 @@ I na á banye...',
'page_first' => 'nke buzọr',
'page_last' => 'nke lara azu',
'history-fieldset-title' => 'Akíkó mbu maka a garacha I garachara',
+'history-show-deleted' => 'Nani nke gbakashiala',
'histfirst' => 'Nke buzọr',
'histlast' => 'Nke ohúrù',
'historyempty' => '(kwapụrụ)',
# Revision feed
-'history-feed-title' => 'Akíkó mbu maka elélé orü',
+'history-feed-title' => 'Akíkó mbu maka elélé orü',
+'history-feed-item-nocomment' => '$1 ngbe $2',
# Revision deletion
-'rev-deleted-comment' => '(okwu e wefụolé)',
-'rev-deleted-user' => '(áhá onye na ké a wefụolé)',
-'rev-delundel' => 'zi/zonari',
-'revdelete-hide-name' => 'Zonari mmèmé na ntido',
-'revdelete-hide-image' => 'Zonari ihe no ime njikota èdè',
-'pagehist' => 'Ákíkó mbu maka ihüá',
-'deletedhist' => 'Ákíkó mbu bakashịrị',
-'revdelete-content' => 'iheníle',
-'revdelete-summary' => 'mmẹkotá orü',
-'revdelete-uname' => 'áhà onye ne ké',
-'revdelete-hid' => 'zonariri $1',
-'revdelete-unhid' => 'a zonariri $1',
+'rev-deleted-comment' => '(okwu e wefụolé)',
+'rev-deleted-user' => '(áhá onye na ké a wefụolé)',
+'rev-delundel' => 'zi/zonari',
+'rev-showdeleted' => 'zi',
+'revdelete-show-file-submit' => 'Eeh',
+'revdelete-hide-image' => 'Zonari ihe no ime njikota èdè',
+'revdelete-hide-name' => 'Zonari mmèmé na ntido',
+'revdelete-radio-same' => '(e mesukwàlà)',
+'revdelete-radio-set' => 'Eeh',
+'revdelete-radio-unset' => 'Mbà',
+'pagehist' => 'Ákíkó mbu maka ihüá',
+'deletedhist' => 'Ákíkó mbu bakashịrị',
+'revdelete-content' => 'iheníle',
+'revdelete-summary' => 'mmẹkotá orü',
+'revdelete-uname' => 'áhà onye ne ké',
+'revdelete-hid' => 'zonariri $1',
+'revdelete-unhid' => 'a zonariri $1',
+'revdelete-reasonotherlist' => 'Mgbaghaputa ozor',
# History merging
'mergehistory-reason' => 'Mgbaghaputa:',
@@ -449,7 +500,9 @@ I na á banye...',
'searchresults' => 'Ihe futárá nchowá',
'searchresults-title' => "Ihe futárá nchowá màkà ''$1''",
'searchsubtitle' => 'Í tụrụ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ihü nílé bidóró "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|ihü nílé na gá "$1"]])',
+'viewprevnext' => 'Lé ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Ihe di ime',
+'searchprofile-images' => 'Nkaníle',
'searchprofile-everything' => 'Iheníle',
'searchprofile-advanced' => 'Nke kárí',
'searchprofile-articles-tooltip' => 'Chöwá na $1',
@@ -469,12 +522,18 @@ I na á banye...',
'searchrelated' => 'nke kọlu',
'searchall' => 'nke níle',
'powersearch-field' => 'Chöwá nke:',
+'powersearch-togglelabel' => 'Lechányá:',
+'powersearch-toggleall' => 'Haníle',
+'powersearch-togglenone' => 'O digị',
# Preferences page
'preferences' => 'Otu ha dosẹrẹ ihe',
'mypreferences' => 'Otú m shị na dose ihem',
+'prefs-skin' => 'Mmanyeanya',
+'prefs-datetime' => 'Ubochi na ogẹ',
'prefs-misc' => 'Mcheta-ma-mchetaghim',
'saveprefs' => 'Donyéré',
+'prefs-editing' => 'Orürü',
'searchresultshead' => 'Chöwá',
'timezonelegend' => 'Nkeji ogẹ:',
'localtime' => 'Ogẹ ebeanọr:',
@@ -486,6 +545,15 @@ I na á banye...',
'timezoneregion-atlantic' => 'Abwädi Ukwu',
'timezoneregion-europe' => 'Alá Bèke',
'timezoneregion-indian' => 'Abwädi Ukwu India',
+'username' => 'Áhà ejị a rüorü:',
+'uid' => 'ID onye né ké:',
+'prefs-memberingroups' => 'Onyé otu nke {{PLURAL:$1|ọtú|ọtú}}:',
+'yourlanguage' => 'Asụsụ:',
+'yourgender' => 'Nwayi/okpoho ma o nwoke:',
+'gender-male' => 'Nwoke',
+'gender-female' => 'Nwanyi/Okpoho',
+'prefs-signature' => 'Edemede e ji a ma gi',
+'prefs-diffs' => 'Íchè',
# User rights
'userrights-groupsmember' => 'Onye ọtú nke:',
@@ -506,27 +574,29 @@ I na á banye...',
'action-reupload' => 'tinyé ihe ozor élu njikota èdèa',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|gbanwere|gbanwere}}',
-'recentchanges' => 'Gbanwere mere ogẹ di nso',
-'rcshowhideminor' => 'orü ntákírí $1',
-'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => 'Ndi né ké dị $1 di íme',
-'rcshowhidepatr' => '$1 orü hä lèrè',
-'rcshowhidemine' => '$1 ihe m rürü',
-'diff' => 'Íchè',
-'hist' => 'akíkómbu',
-'hide' => 'Zonari',
-'show' => 'Zi',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'b',
-'newsectionsummary' => '/* $1 */ nkeji ohúrù',
-'rc-enhanced-expand' => 'Zi ihe di ime (Í gí nwere JavaScript)',
-'rc-enhanced-hide' => 'Zonari ihe di ime',
+'nchanges' => '$1 {{PLURAL:$1|gbanwere|gbanwere}}',
+'recentchanges' => 'Gbanwere mere ogẹ di nso',
+'recentchanges-label-legend' => 'Edemede ndetu: $1',
+'rcshowhideminor' => 'orü ntákírí $1',
+'rcshowhidebots' => '$1 bot',
+'rcshowhideliu' => 'Ndi né ké dị $1 di íme',
+'rcshowhidepatr' => '$1 orü hä lèrè',
+'rcshowhidemine' => '$1 ihe m rürü',
+'diff' => 'Íchè',
+'hist' => 'akíkómbu',
+'hide' => 'Zonari',
+'show' => 'Zi',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'newsectionsummary' => '/* $1 */ nkeji ohúrù',
+'rc-enhanced-expand' => 'Zi ihe di ime (Í gí nwere JavaScript)',
+'rc-enhanced-hide' => 'Zonari ihe di ime',
# Recent changes linked
-'recentchangeslinked' => 'Ihe gbanwere bu nwanne',
-'recentchangeslinked-page' => 'Áhà ihü:',
+'recentchangeslinked' => 'Ihe gbanwere bu nwanne',
+'recentchangeslinked-toolbox' => 'Gbanwèrè gbásírí ya',
+'recentchangeslinked-page' => 'Áhà ihü:',
# Upload
'upload' => 'Tịnyé ihe na orunotu',
@@ -559,6 +629,9 @@ I na á banye...',
'double-redirect-fixed-move' => '[[$1]] a puziele.
Ubwa, o na ga [[$2]].',
+'brokenredirects-edit' => 'rüwá',
+'brokenredirects-delete' => 'bakashia',
+
'withoutinterwiki' => 'Ihü nke enweghi jikodo rúrú asụsụ',
'withoutinterwiki-submit' => 'Zi',
@@ -596,6 +669,9 @@ Ubwa, o na ga [[$2]].',
# Special:Categories
'categories' => 'Ébéanọr',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'ihe rürü di mkpa',
+
# Special:LinkSearch
'linksearch' => 'Jikodo di ezí',
'linksearch-ns' => 'Ámááhạ:',
@@ -639,6 +715,7 @@ Ubwa, o na ga [[$2]].',
# Undelete
'undeletelink' => 'lé/dosimá',
+'undeleteviewlink' => 'lé',
'undeletereset' => 'Hafù ya otụ o di',
'undeletedarticle' => "dọsèwàrị ''[[$1]]''",
'undelete-search-submit' => 'Chöwá',
@@ -697,7 +774,9 @@ I chorí gbakashia ya ka uzor mepo maka mpuzie ne me?',
'export-addns' => 'Tinyé',
# Namespace 8 related
-'allmessagesname' => 'Áhà',
+'allmessagesname' => 'Áhà',
+'allmessages-language' => 'Asụsụ:',
+'allmessages-filter-submit' => 'Gá',
# Thumbnails
'thumbnail-more' => 'Me ko bu ibù',
@@ -711,40 +790,42 @@ Biko meríáríá ozor.',
'importlogpage' => 'Hubàtà ndetu',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Ọbí gi',
-'tooltip-pt-mytalk' => 'Ihü akíkó gi',
-'tooltip-pt-login' => 'Anyi si ka Í gbanyé; chetákwá na nsogbu adighi I gbanye ma Í chógị gbànyé',
-'tooltip-pt-logout' => 'Fwuör',
-'tooltip-ca-talk' => 'Akíkó maka ihe di na ihü nka',
-'tooltip-ca-edit' => 'Í nwẹríkí rü na ihü nka. Biko jí mkpátá nlélé mgbe Í na donyéré ihüá',
-'tooltip-ca-addsection' => 'Binyíte nkeji ohúrù',
-'tooltip-ca-history' => 'Orü ichié na ihüá',
-'tooltip-ca-protect' => 'Cẹdolu ihüá',
-'tooltip-ca-delete' => 'Bakashia ihüá',
-'tooltip-ca-move' => 'Puzie ihüá',
-'tooltip-search' => 'Chöwá {{SITENAME}}',
-'tooltip-search-go' => 'Gá na ihü nwere kwa áhà nke ma o di',
-'tooltip-search-fulltext' => 'Chöwá na ihü maka mpkurụ okwu á',
-'tooltip-p-logo' => 'Ga na ihü mbu',
-'tooltip-n-mainpage' => 'Ga na ihü mbu',
-'tooltip-n-portal' => 'Maka orürü, gi ka Í nweríkí mé, ébé ha na tú ihe',
-'tooltip-n-recentchanges' => 'Ndetu ihe gbanwere na oge nsó na wiki',
-'tooltip-n-randompage' => 'Banyé ihü otu enweghi ishi',
-'tooltip-n-help' => 'Ébé e shị amárá',
-'tooltip-t-whatlinkshere' => 'Détụ ihü wiki nílé na ga ngà',
-'tooltip-feed-rss' => 'Ntá RSS maka ihüá',
-'tooltip-feed-atom' => 'Nta Atom maka ihüá',
-'tooltip-t-upload' => 'Tịnyé ihe na orunotu',
-'tooltip-t-specialpages' => 'Ndetu ihü mkpà níle',
-'tooltip-t-print' => 'Ihü nka nke Í nweríkí dótù',
-'tooltip-t-permalink' => 'Jikodo nke dìrì e dí nke na gá ngbàzì ihü nka',
-'tooltip-ca-nstab-main' => 'Zi ihe nor na ihüá',
-'tooltip-ca-nstab-user' => 'Zi ihü onyé né ké',
-'tooltip-ca-nstab-special' => 'Ihü mkpà, a nweriki ru na ya onwe ya',
-'tooltip-ca-nstab-project' => 'Lé ihü hé chèdòlù',
-'tooltip-ca-nstab-image' => 'Zi ihü akwukwu orúnotu',
-'tooltip-ca-nstab-template' => 'Zi mkpurụ ihü',
-'tooltip-diff' => 'Zi ihe Í gbanwere na édémédé',
+'tooltip-pt-userpage' => 'Ọbí gi',
+'tooltip-pt-mytalk' => 'Ihü akíkó gi',
+'tooltip-pt-login' => 'Anyi si ka Í gbanyé; chetákwá na nsogbu adighi I gbanye ma Í chógị gbànyé',
+'tooltip-pt-logout' => 'Fwuör',
+'tooltip-ca-talk' => 'Akíkó maka ihe di na ihü nka',
+'tooltip-ca-edit' => 'Í nwẹríkí rü na ihü nka. Biko jí mkpátá nlélé mgbe Í na donyéré ihüá',
+'tooltip-ca-addsection' => 'Binyíte nkeji ohúrù',
+'tooltip-ca-history' => 'Orü ichié na ihüá',
+'tooltip-ca-protect' => 'Cẹdolu ihüá',
+'tooltip-ca-unprotect' => 'Acẹdolu ihüá',
+'tooltip-ca-delete' => 'Bakashia ihüá',
+'tooltip-ca-move' => 'Puzie ihüá',
+'tooltip-search' => 'Chöwá {{SITENAME}}',
+'tooltip-search-go' => 'Gá na ihü nwere kwa áhà nke ma o di',
+'tooltip-search-fulltext' => 'Chöwá na ihü maka mpkurụ okwu á',
+'tooltip-p-logo' => 'Ga na ihü mbu',
+'tooltip-n-mainpage' => 'Ga na ihü mbu',
+'tooltip-n-mainpage-description' => 'Ga na ihü mbu',
+'tooltip-n-portal' => 'Maka orürü, gi ka Í nweríkí mé, ébé ha na tú ihe',
+'tooltip-n-recentchanges' => 'Ndetu ihe gbanwere na oge nsó na wiki',
+'tooltip-n-randompage' => 'Banyé ihü otu enweghi ishi',
+'tooltip-n-help' => 'Ébé e shị amárá',
+'tooltip-t-whatlinkshere' => 'Détụ ihü wiki nílé na ga ngà',
+'tooltip-feed-rss' => 'Ntá RSS maka ihüá',
+'tooltip-feed-atom' => 'Nta Atom maka ihüá',
+'tooltip-t-upload' => 'Tịnyé ihe na orunotu',
+'tooltip-t-specialpages' => 'Ndetu ihü mkpà níle',
+'tooltip-t-print' => 'Ihü nka nke Í nweríkí dótù',
+'tooltip-t-permalink' => 'Jikodo nke dìrì e dí nke na gá ngbàzì ihü nka',
+'tooltip-ca-nstab-main' => 'Zi ihe nor na ihüá',
+'tooltip-ca-nstab-user' => 'Zi ihü onyé né ké',
+'tooltip-ca-nstab-special' => 'Ihü mkpà, a nweriki ru na ya onwe ya',
+'tooltip-ca-nstab-project' => 'Lé ihü hé chèdòlù',
+'tooltip-ca-nstab-image' => 'Zi ihü akwukwu orúnotu',
+'tooltip-ca-nstab-template' => 'Zi mkpurụ ihü',
+'tooltip-diff' => 'Zi ihe Í gbanwere na édémédé',
# Spam protection
'spamprotectiontitle' => 'Ihe na zata maka cẹdolu ụrú',
@@ -784,6 +865,7 @@ Biko meríáríá ozor.',
'watchlistall2' => 'nke níle',
'namespacesall' => 'nke níle',
'monthsall' => 'nke níle',
+'limitall' => 'nke níle',
# Trackbacks
'trackbackremove' => '([$1 Gbakashia])',
@@ -820,11 +902,12 @@ Biko meríáríá ozor.',
'watchlistedit-raw-submit' => 'Kuwaria ndetu ihem ne lé',
# Special:Version
-'version' => 'Nke', # Not used as normal message but as header for the special page itself
+'version' => 'Nke',
'version-specialpages' => 'Ihü mkpà',
'version-other' => 'Nke ozor',
'version-hooks' => 'Nyazo',
'version-hook-name' => 'Áhà nyazo',
+'version-version' => '(Nke $1)',
'version-software-product' => 'Ngwa',
'version-software-version' => 'Nke',
@@ -861,4 +944,9 @@ Biko meríáríá ozor.',
'dberr-problems' => 'Ndó!
Ámá nka nwere nsogbu ime ime.',
+# HTML forms
+'htmlform-submit' => 'Nye fwuör',
+'htmlform-reset' => 'Emekwàlà gbanwere',
+'htmlform-selectorother-other' => 'Nke ozor',
+
);
diff --git a/languages/messages/MessagesIke_cans.php b/languages/messages/MessagesIke_cans.php
index bdfd622b..53887726 100644
--- a/languages/messages/MessagesIke_cans.php
+++ b/languages/messages/MessagesIke_cans.php
@@ -62,17 +62,19 @@ $messages = array(
'nov' => 'ᓄᕕ',
'dec' => 'ᑎᓯᒻ',
-'about' => 'ᒥᒃᓵᓂ',
-'article' => 'ᐃᓗᓕᒃ ᒪᑉᐱᑕᖅ',
-'newwindow' => '(ᐅᐃᑦᑐᖅ ᖃᕋᓴᐅᔭᖅ ᐃᑭᐊᖅ ᐱᒋᕗᖅ ᐃᒐᓛᖅ)',
-'cancel' => 'ᐃᓂᖅᑎᐹ',
+'about' => 'ᒥᒃᓵᓂ',
+'article' => 'ᐃᓗᓕᒃ ᒪᑉᐱᑕᖅ',
+'newwindow' => '(ᐅᐃᑦᑐᖅ ᖃᕋᓴᐅᔭᖅ ᐃᑭᐊᖅ ᐱᒋᕗᖅ ᐃᒐᓛᖅ)',
+'cancel' => 'ᐃᓂᖅᑎᐹ',
+'moredotdotdot' => 'ᐱᓪᓗᐊᕆᕚ...',
+'mypage' => 'ᐊᒥ ᒪᑉᐱᑕᖅ',
+'mytalk' => 'ᐊᓪᓚᖁᑎᒃᑲ',
+'navigation' => 'ᒥᐊᓂᕆᕚ',
+'and' => '&#32;ᐊᒻᒪ',
+
+# Cologne Blue skin
'qbedit' => 'ᓱᖁᓯᖅᐹ',
'qbspecialpages' => 'ᐱᔨ ᒪᑉᐱᑕᖅ',
-'moredotdotdot' => 'ᐱᓪᓗᐊᕆᕚ...',
-'mypage' => 'ᐊᒥ ᒪᑉᐱᑕᖅ',
-'mytalk' => 'ᐊᓪᓚᖁᑎᒃᑲ',
-'navigation' => 'ᒥᐊᓂᕆᕚ',
-'and' => '&#32;ᐊᒻᒪ',
'errorpagetitle' => 'ᑕᒻᒪᓇᖅᑐᖅ',
'help' => 'ᖃᔭᓕᑉᐹ',
@@ -155,11 +157,6 @@ $messages = array(
'nologin' => "ᐊᔪᐃᓐᓈᖅ ᐃᓄᖁᑎ? '''$1'''.",
'nologinlink' => 'ᐱᕐᖄᐹ ᑮᓇᐅᔭᒃᑯᕕᖕᒥ ᑐᖅᑯᖅᓯᕕᒃ',
'gotaccountlink' => 'ᐊᑯᓐᓇᐳᖅ',
-'youremail' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ:',
-'username' => 'ᐅᐃᑭᐱᑎᐊ ᐊᑎᖅ:',
-'yourrealname' => 'ᐃᓄᓪᓚᕆᒃ ᐊᑎᖅ:',
-'email' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ',
-'prefs-help-email' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ (ᐱᒃᑲᓪᓚᕗᖅ) — ᖃᑯᒍ ᓇᓗᓇᙱᓚᖅ ᐃᓕᔅᓯ ᐱᔪᖕᓇᖅᑐᖅ ᐱᒋᕚ ᑲᙳᓇᖅᑐᖅ ᐋᔩᖃᑎᒋᖏᖅ',
'mailmypassword' => 'ᕿᓪᓗᑐᖅ ᐅᐃᑭᐱᑎᐊ ᐸᓚᙵᓴᐅᑎ ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ',
# Edit page toolbar
@@ -203,15 +200,18 @@ $messages = array(
'diff-multi' => '({{PLURAL:$1|ᐊᑕᐅᓯᖅ ᑭᒻᒥᐅᕗᖅ ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ|$1 ᑭᒻᒥᐅᕗᖅ ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ}} ᐊᔪᖅᑐᖅ ᐅᕝᕙ.)',
# Search results
-'nextn' => 'ᑕᒡᒐ $1',
+'nextn' => 'ᑕᒡᒐ {{PLURAL:$1|$1}}',
'powersearch' => 'ᕿᓐᓇᕆᒃᓴᕐᓂᖅ',
# Preferences page
-'mypreferences' => 'ᐊᒥ ᐱᒃᑯᒪᓂᖅᐹᖅ',
-'math_unknown_error' => 'ᑐᓴᐅᒪᔭᐅᙱᑐᖅ ᑕᒻᒪᓇᖅᑐᖅ',
-'math_unknown_function' => 'ᑐᓴᐅᒪᔭᐅᙱᑐᖅ ᐃᓕᐅᕐᓂᖅ',
-'prefs-rc' => 'ᐱᒋᕗᖅ ᐊᓯᐊᙳᑐᖅ',
-'searchresultshead' => 'ᐃᕚᖅᐳᖅ',
+'mypreferences' => 'ᐊᒥ ᐱᒃᑯᒪᓂᖅᐹᖅ',
+'prefs-rc' => 'ᐱᒋᕗᖅ ᐊᓯᐊᙳᑐᖅ',
+'searchresultshead' => 'ᐃᕚᖅᐳᖅ',
+'youremail' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ:',
+'username' => 'ᐅᐃᑭᐱᑎᐊ ᐊᑎᖅ:',
+'yourrealname' => 'ᐃᓄᓪᓚᕆᒃ ᐊᑎᖅ:',
+'email' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ',
+'prefs-help-email' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ (ᐱᒃᑲᓪᓚᕗᖅ) — ᖃᑯᒍ ᓇᓗᓇᙱᓚᖅ ᐃᓕᔅᓯ ᐱᔪᖕᓇᖅᑐᖅ ᐱᒋᕚ ᑲᙳᓇᖅᑐᖅ ᐋᔩᖃᑎᒋᖏᖅ',
# User rights
'editinguser' => "ᓱᖁᓯᖅᐹ ᖃᑕᙳᑎ '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -226,6 +226,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
+'recentchangeslinked-feed' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
+'recentchangeslinked-toolbox' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
'recentchangeslinked-noresult' => '0 ᐊᓯᐊᙳᑐᖅ ᐃᑦᓯᕕᒻᒥᐅᓯᖅᐹ ᒪᑉᐱᑕᖅ ᑕᑯᕙᓪᓚᑐᖅ ᓱᓪᓗᒃ ᑕᒪᑐᒪᓂ ᑐᒥᑯ',
# Upload
@@ -235,6 +237,9 @@ $messages = array(
'fileuploadsummary' => 'ᓱᕕᑦ:',
'watchthisupload' => 'ᐅᕝᕙ',
+# File description page
+'file-anchor-link' => 'ᐊᒋᐅᑦ',
+
# List redirects
'listredirects' => 'ᓂᐱ ᖃᓂᖓᓂ ᑲᒪᒋᔭᖅ ᐋᓯᑦ ᓇᑭᑦ',
@@ -251,8 +256,8 @@ $messages = array(
'doubleredirects' => 'ᑕᐱᕐᖃᓕᒃ ᖃᓂᖓᓂ ᑲᒪᒋᔭᖅ ᐋᓯᑦ ᓇᑭᑦ',
'brokenredirects' => 'ᓇᐱᕚ ᖃᓂᖓᓂ ᑲᒪᒋᔭᖅ ᐋᓯᑦ ᓇᑭᑦ',
-'brokenredirects-edit' => '(ᓱᖁᓯᖅᐹ)',
-'brokenredirects-delete' => '(ᓂᐸᖅᑎᐹ)',
+'brokenredirects-edit' => 'ᓱᖁᓯᖅᐹ',
+'brokenredirects-delete' => 'ᓂᐸᖅᑎᐹ',
# Miscellaneous special pages
'listusers' => 'ᖃᑕᙳᑎ ᓂᐱ',
@@ -310,6 +315,7 @@ $messages = array(
# Contributions
'mycontris' => 'ᑕᓕᐊᖅ',
+'sp-contributions-talk' => 'ᐅᖃᓕᒪᔪᖅ',
'sp-contributions-submit' => 'ᐃᕚᖅᐳᖅ',
# What links here
@@ -340,8 +346,7 @@ $messages = array(
'delete_and_move' => 'ᓂᐸᖅᑎᐹ ᐊᒻᒪ ᐅᐊᔪᖅ',
# Namespace 8 related
-'allmessagesname' => 'ᐊᑎᖅ',
-'allmessagesmodified' => 'ᐊᓚᒃᑲᑎᖅᐹ ᓯᕐᓚᒃ ᑐᑭᓕᑕᖅᑖᐹ',
+'allmessagesname' => 'ᐊᑎᖅ',
# Import log
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ|ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ}}',
@@ -360,6 +365,10 @@ $messages = array(
# Attribution
'anonymous' => 'ᐃᓕᓴᕐᓇᙱᑎᑦᑐᖅ ᖃᑕᙳᑎ ᓇᑭᑦ {{SITENAME}}',
+# Math errors
+'math_unknown_error' => 'ᑐᓴᐅᒪᔭᐅᙱᑐᖅ ᑕᒻᒪᓇᖅᑐᖅ',
+'math_unknown_function' => 'ᑐᓴᐅᒪᔭᐅᙱᑐᖅ ᐃᓕᐅᕐᓂᖅ',
+
# Image deletion
'deletedrevision' => 'ᓂᐸᖅ ᐅᑐᖃᖅ ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ $1',
diff --git a/languages/messages/MessagesIke_latn.php b/languages/messages/MessagesIke_latn.php
index 2fc7846b..23c9d567 100644
--- a/languages/messages/MessagesIke_latn.php
+++ b/languages/messages/MessagesIke_latn.php
@@ -48,16 +48,18 @@ $messages = array(
'aug' => 'augu',
'nov' => 'nuvi',
-'about' => 'miksaani',
-'article' => 'ilulik mappitaq',
-'newwindow' => '(uittuq qarasaujaq ikiaq pigivuq igalaaq)',
-'cancel' => 'iniqtipaa',
+'about' => 'miksaani',
+'article' => 'ilulik mappitaq',
+'newwindow' => '(uittuq qarasaujaq ikiaq pigivuq igalaaq)',
+'cancel' => 'iniqtipaa',
+'moredotdotdot' => 'pilluarivaa...',
+'mypage' => 'ami mappitaq',
+'mytalk' => 'atlarqutikka',
+'navigation' => 'mianirivaa',
+'and' => '&#32;amma',
+
+# Cologne Blue skin
'qbspecialpages' => 'piji mappitaq',
-'moredotdotdot' => 'pilluarivaa...',
-'mypage' => 'ami mappitaq',
-'mytalk' => 'atlarqutikka',
-'navigation' => 'mianirivaa',
-'and' => '&#32;amma',
'help' => 'qajalippaa',
'search' => 'ivaaqpuq',
@@ -134,11 +136,6 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
'userlogout' => 'anivvik',
'nologin' => "ajuinnaaq inuquti? '''$1'''.",
'nologinlink' => 'pirqaapaa kiinaujakkuvingmi tuqkuqsivik',
-'youremail' => 'kigutiup sitiniqpaanga:',
-'username' => 'uikipitia atiq:',
-'yourrealname' => 'inullarik atiq:',
-'email' => 'kigutiup sitiniqpaanga',
-'prefs-help-email' => 'kigutiup sitiniqpaanga (pikkallavuq) — qakugu nalunanngilaq ilissi pijungnaqtuq pigivaa kanngunaqtuq aajiiqatiginggiq',
'mailmypassword' => 'qillutuq uikipitia palanngasauti kigutiup sitiniqpaanga',
# Edit page toolbar
@@ -180,15 +177,18 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
'diff-multi' => '({{PLURAL:$1|atausiq kimmiuvuq titiraqtaugiarngarut|$1 kimmiuvuq titiraqtaugiarngarut}} ajuqtuq uvva.)',
# Search results
-'nextn' => 'tagga $1',
+'nextn' => 'tagga {{PLURAL:$1|$1}}',
'powersearch' => 'ivaaqpuq',
# Preferences page
-'mypreferences' => 'mi pikkumaniqpaaq',
-'math_unknown_error' => 'tusaumajaunngituq tammanaqtuq',
-'math_unknown_function' => 'tusaumajaunngituq iliurniq',
-'prefs-rc' => 'pigivuq asianngutuq',
-'searchresultshead' => 'ivaaqpuq',
+'mypreferences' => 'mi pikkumaniqpaaq',
+'prefs-rc' => 'pigivuq asianngutuq',
+'searchresultshead' => 'ivaaqpuq',
+'youremail' => 'kigutiup sitiniqpaanga:',
+'username' => 'uikipitia atiq:',
+'yourrealname' => 'inullarik atiq:',
+'email' => 'kigutiup sitiniqpaanga',
+'prefs-help-email' => 'kigutiup sitiniqpaanga (pikkallavuq) — qakugu nalunanngilaq ilissi pijungnaqtuq pigivaa kanngunaqtuq aajiiqatiginggiq',
# User rights
'editinguser' => "suqusiqpaa qatannguti '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -198,6 +198,8 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
# Recent changes linked
'recentchangeslinked' => 'asiaNngutuq mitsaasijuq',
+'recentchangeslinked-feed' => 'asiaNngutuq mitsaasijuq',
+'recentchangeslinked-toolbox' => 'asiaNngutuq mitsaasijuq',
'recentchangeslinked-noresult' => '0 asiaNngutuq itsivimmiusiqpaa mappitaq takuvallatuq sulluk tamatumani tumiku',
# Upload
@@ -223,8 +225,8 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
'doubleredirects' => 'tapirqilik qaningani kamagijaq aasit nakit',
'brokenredirects' => 'napivaa qaningani kamagijaq aasit nakit',
-'brokenredirects-edit' => '(suqusiqpaa)',
-'brokenredirects-delete' => '(nipaqtipaa)',
+'brokenredirects-edit' => 'suqusiqpaa',
+'brokenredirects-delete' => 'nipaqtipaa',
# Miscellaneous special pages
'listusers' => 'qatannguti nipi',
@@ -310,8 +312,7 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
'delete_and_move' => 'nipaqtipaa amma uajuq',
# Namespace 8 related
-'allmessagesname' => 'atiq',
-'allmessagesmodified' => 'alakkatiqpaa sirlak tukilitaqtaapaa',
+'allmessagesname' => 'atiq',
# Import log
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|titiraqtaugiarngarut|titiraqtaugiarngarut}}',
@@ -327,6 +328,10 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
# Attribution
'anonymous' => 'ilisarnanngitittuq qatannguti nakit {{SITENAME}}',
+# Math errors
+'math_unknown_error' => 'tusaumajaunngituq tammanaqtuq',
+'math_unknown_function' => 'tusaumajaunngituq iliurniq',
+
# Image deletion
'deletedrevision' => 'nipaq utuqaq titiraqtaugiarngarut $1',
diff --git a/languages/messages/MessagesIlo.php b/languages/messages/MessagesIlo.php
index 138e660d..64a6eb68 100644
--- a/languages/messages/MessagesIlo.php
+++ b/languages/messages/MessagesIlo.php
@@ -118,7 +118,7 @@ $messages = array(
'category-media-header' => 'Media iti categoria "$1"',
'category-empty' => "''Daytoy a categoria ket awanan pampanid wenno media iti agdama.''",
'hidden-categories' => '{{PLURAL:$1|Nakalemmeng a categoria|Nakalemmeng a categorias}}',
-'hidden-category-category' => 'Nailemmeng a categorias', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Nailemmeng a categorias',
'category-subcat-count' => '{{PLURAL:$2|Daytoy a categoria ket addaan laeng iti sumaganad a subcategoria.|Daytoy a categoria ket addaan iti sumaganad a {{PLURAL:$1|subcategoria|$1 subcategorias}}, manipud iti dagup a $2.}}',
'category-subcat-count-limited' => 'Daytoy a categoria ket addaan kadagiti sumaganad a {{PLURAL:$1|subcategoria|$1 subcategorias}}.',
'category-article-count' => '{{PLURAL:$2|Daytoy a categoria ket addaan laeng iti sumaganad a panid.|Ti sumaganad a {{PLURAL:$1|panid|$1 pampanid}} iti daytoy a categoria, manipud iti total a $2.}}',
@@ -129,10 +129,18 @@ $messages = array(
'mainpagetext' => "'''Sibaballigi a nainstolar ti MediaWiki.'''",
-'about' => 'Maipapan iti',
-'article' => 'Panid ti linaon',
-'newwindow' => '(aglukat iti sabali a tawa)',
-'cancel' => 'Ibabawi',
+'about' => 'Maipapan iti',
+'article' => 'Panid ti linaon',
+'newwindow' => '(aglukat iti sabali a tawa)',
+'cancel' => 'Ibabawi',
+'moredotdotdot' => 'Adu pay...',
+'mypage' => 'Panidko',
+'mytalk' => 'pakitungtongak',
+'anontalk' => 'Tungtongan iti daytoy nga IP',
+'navigation' => 'Pagdaliasatan',
+'and' => '&#32;ken',
+
+# Cologne Blue skin
'qbfind' => 'Biroken',
'qbbrowse' => 'I-browse',
'qbedit' => 'Editen',
@@ -140,15 +148,14 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'Pampanidko',
'qbspecialpages' => 'Espesial a pampanid',
-'moredotdotdot' => 'Adu pay...',
-'mypage' => 'Panidko',
-'mytalk' => 'pakitungtongak',
-'anontalk' => 'Tungtongan iti daytoy nga IP',
-'navigation' => 'Pagdaliasatan',
-'and' => '&#32;ken',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+# Vector skin
+'vector-action-delete' => 'Ikkaten',
+'vector-action-move' => 'Iyakar',
+'vector-action-protect' => 'Saluadan',
+'vector-view-create' => 'Parnuayen',
'errorpagetitle' => 'Biddut',
'returnto' => 'Agsubli iti $1.',
@@ -198,7 +205,7 @@ $messages = array(
'otherlanguages' => 'iti sabali a pagsasao',
'redirectedfrom' => '(Naibaw-ing manipud iti $1)',
'redirectpagesub' => 'Ibaw-ing ti panid',
-'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $2, $1', # $1 date, $2 time
+'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $2, $1',
'viewcount' => 'Naaksesen daytoy a panid iti {{PLURAL:$1|naminsan|$1 a daras}}.',
'protectedpage' => 'Nasaluadan a panid',
'jumpto' => 'Mapan iti:',
@@ -209,7 +216,6 @@ $messages = array(
'aboutsite' => 'Maipapan iti {{SITENAME}}',
'aboutpage' => 'Project:Maipapan',
'copyright' => 'Dagiti linaon ket maidaya babaen ti $1.',
-'copyrightpagename' => '{{SITENAME}} karbengan-pablaak',
'copyrightpage' => '{{ns:project}}:Dagiti Karbengan-Panagipablaak',
'currentevents' => 'Paspasamak',
'currentevents-url' => 'Project:Agdama a paspasamak',
@@ -217,8 +223,6 @@ $messages = array(
'disclaimerpage' => 'Project:Sapasap a disclaimer',
'edithelp' => 'Tulong iti panagedit',
'edithelppage' => 'Help:Panagedit',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Dagiti Linaon',
'mainpage' => 'Umuna a Panid',
'mainpage-description' => 'Umuna a Panid',
@@ -284,10 +288,6 @@ Masarakan ti listaan dagiti mabalin a a naiduma a pampanid iti [[Special:Special
# General errors
'error' => 'Biddut',
'databaseerror' => 'Biddut iti database',
-'noconnect' => 'Pasensiakan! Adda sumagmamano a teknikal a pakarikutan ti wiki ita, ket saan a makontak ti server ti database.<br />
-$1',
-'nodb' => 'Di mapili ti database a $1',
-'cachederror' => 'Ti sumaganad ket nakalebben a kopia ti nakiddaw a panid, ket mabalin a saan a napabaro daytoy.',
'laggedslavemode' => 'Ballaag: Mabalin a ti panid ket awanan laon a naudi a panagpabaro.',
'readonly' => 'Nakakandado ti database',
'enterlockreason' => 'Mangipan iti rason no apay nga ibalunet, agraman no kaano a maluktan ti pannakabalunet',
@@ -335,7 +335,6 @@ Ti naited a rason ket ''$2''.",
'virus-unknownscanner' => 'di am-ammo a pagpaksiat iti virus:',
# Login and logout pages
-'logouttitle' => 'Rummuar ti agar-aramat',
'logouttext' => "'''Nakaruarkan.'''
Mabalinmo nga ituloy ti agaramat iti {{SITENAME}} a kas di am-ammo, wenno makastrek manen a kas iti sigud wenno kas sabali nga agar-aramat.
@@ -343,7 +342,6 @@ Laglagipem a sumagmamano a pampanid ti mabalin a nakaparang latta a kasla nakalo
'welcomecreation' => '== Dumanonka, $1! ==
Naparnuayen ti accountmo.
Dimo liplipatan a sukatan dagiti preferenciam iti [[Special:Preferences|{{SITENAME}} preferences]].',
-'loginpagetitle' => 'Pagserkan ti agar-aramat',
'yourname' => 'Nagan:',
'yourpassword' => 'Pasesbalikas:',
'yourpasswordagain' => 'Uliten ti pasesbalikas',
@@ -365,21 +363,7 @@ Dimo liplipatan a sukatan dagiti preferenciam iti [[Special:Preferences|{{SITENA
'badretype' => 'Saan nga agparis dagiti impanmo a pasesbalikas.',
'userexists' => 'Maus-usaren ti nagan nga impanmo.
Pangngaasim ta mangpilika sabali a nagan.',
-'youremail' => 'Email:',
-'username' => 'Nagan ti agar-aramat:',
-'uid' => 'ID ti agar-aramat:',
-'prefs-memberingroups' => 'Kameng ti {{PLURAL:$1|bunggoy|bungbunggoy}}:',
-'yourrealname' => 'Pudno a nagan:',
-'yourlanguage' => 'Pagsasao:',
-'yournick' => 'Birngas:',
-'badsig' => 'Saan a valido a raw signature; itsekmo ti HTML tags.',
-'badsiglength' => 'Atiddog unay ti palayawmo.
-Nasken a nababbaba ngem $1 a {{PLURAL:$1|character|characters}}.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
-Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti obram.',
'loginerror' => 'Biddut ti login',
-'prefs-help-email-required' => 'Masapul ti email address.',
'nocookieslogin' => 'Agus-usar ti {{SITENAME}} iti cookies tapno makastrek dagiti agar-aramat.
Saan a mabalin dagiti cookiesmo.
Pangngaasim ta pagbalinem ida ket padasem manen ti sumrek.',
@@ -483,7 +467,6 @@ Ti agdama nga IP addressmo ket $3, ket ti block ID ket #$5. Pangngaasim ta irama
'blockededitsource' => "Makita iti baba '''dagiti panangbalbaliwmo''' iti '''$1''':",
'whitelistedittitle' => 'Masapul a nakastrekka tapno makaeditka',
'whitelistedittext' => 'Nasken a $1 ka tapno makaeditka iti pampanid.',
-'confirmedittitle' => 'Masapul ti pammasingked ti email tapno makaedit',
'nosuchsectiontitle' => 'Awan ti kasta a benneg',
'nosuchsectiontext' => 'Pinadasmo nga editen ti maysa a benneg nga awan pay.',
'loginreqtitle' => 'Masapul ti panag-login',
@@ -532,7 +515,7 @@ Mabalinmo ti agsubli ken agedit iti adda a panid, wenno [[Special:UserLogin|sumr
'permissionserrors' => 'Bidbiddut iti Pammalubos',
'permissionserrorstext' => 'Awananka iti pammalubos a mangaramid iti dayta, gapu iti sumaganad a {{PLURAL:$1|rason|rasrason}}:',
'permissionserrorstext-withaction' => 'Awananka iti pammalubos nga $2, gapu iti sumaganad a {{PLURAL:$1|rason|rasrason}}:',
-'recreate-deleted-warn' => "'''Ballaag: Mangar-aramidka iti panid a naikkaten iti kallabes.'''
+'recreate-moveddeleted-warn' => "'''Ballaag: Mangar-aramidka iti panid a naikkaten iti kallabes.'''
Nasken a siguraduem no maikanatad nga ituloymo a parnuayen manen wenno editen daytoy a panid.
Adda ti log ti pannakaikkat daytoy a panid ditoy kas pangkitaan:",
@@ -557,7 +540,7 @@ Ti inted a rason ni $3 ket ''$2''",
'nohistory' => 'Awan ti pakasaritaan ti panangbaliw iti daytoy a panid.',
'currentrev' => 'Agdama a revision',
'revisionasof' => 'Panangbalbaliw sipud $1',
-'revision-info' => 'Panangbaliw ni $2 sipud idi $1', # Additionally available: $3: revision id
+'revision-info' => 'Panangbaliw ni $2 sipud idi $1',
'previousrevision' => '←Nadadaan a panangbalbaliw',
'nextrevision' => 'Nabarbaro a panangbalbaliw→',
'currentrevisionlink' => 'kitaen ti agdama a revision',
@@ -570,7 +553,6 @@ Ti inted a rason ni $3 ket ''$2''",
Legend: (agdama) = paggidiatan iti agdama a version,
(naudi) = naggidiatan iti sarsarunuen a version, M = minor nga edit.',
'history-fieldset-title' => 'Palabsan ti pakasaritaan',
-'deletedrev' => '[naikkaten]',
'histfirst' => 'Kaunaan',
'histlast' => 'Kaudian',
'historysize' => '({{PLURAL:$1|1 a byte|$1 a bytes}})',
@@ -578,7 +560,7 @@ Legend: (agdama) = paggidiatan iti agdama a version,
# Revision feed
'history-feed-title' => 'Pakasaritaan ti panamalbaliw',
-'history-feed-item-nocomment' => '$1 iti $2', # user at time
+'history-feed-item-nocomment' => '$1 iti $2',
# Revision deletion
'rev-deleted-comment' => '(naikkat ti komento)',
@@ -589,10 +571,10 @@ Legend: (agdama) = paggidiatan iti agdama a version,
'revdelete-selected' => "'''{{PLURAL:$2|Napili a revision|Napili a revisions}} ti [[:$1]]:'''",
'revdelete-legend' => 'Iplastar ti visibility restrictions',
'revdelete-hide-text' => 'Ilemmeng ti texto ti revision',
+'revdelete-hide-image' => 'Ilemmeng ti linaon ti file',
'revdelete-hide-name' => 'Ilemmeng ti action ken target',
'revdelete-hide-comment' => 'Ilemmeng ti komento ti edit',
'revdelete-hide-user' => 'Ilemmeng ti nagan-agaramat/IP ti editor',
-'revdelete-hide-image' => 'Ilemmeng ti linaon ti file',
'revdelete-unsuppress' => 'Ikkaten dagiti pannakaiparit kadagiti naisubli a revisions',
'revdelete-log' => 'Rason:',
'revdelete-submit' => 'Ipakat iti napili a panamalbaliw',
@@ -645,13 +627,10 @@ Legend: (agdama) = paggidiatan iti agdama a version,
'searchresults' => 'Dagiti resulta ti panagbirok',
'searchsubtitle' => "Sinapul mo ti '''[[:$1]]'''",
'searchsubtitleinvalid' => "Sinapulmo ti '''$1'''",
-'noexactmatch' => "'''Awan ti panid nga addaan titulo a \"\$1\".'''
-Mabalinmo a [[:\$1|partuaten daytoy a panid]].",
-'noexactmatch-nocreate' => "'''Awan panid nga addaan titulo a \"\$1\".'''",
'notextmatches' => 'Awan ti page text matches',
-'prevn' => 'napalabas $1',
-'nextn' => 'sumaruno $1',
-'viewprevnext' => 'Kitaen ($1 ) ($2) ($3)',
+'prevn' => 'napalabas {{PLURAL:$1|$1}}',
+'nextn' => 'sumaruno {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Kitaen ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Dagiti Linaon',
'search-result-size' => '$1 ({{PLURAL:$2|1 a balikas|$2 a balbalikas}})',
'search-result-score' => 'Relevance: $1%',
@@ -669,56 +648,63 @@ Mabalinmo a [[:\$1|partuaten daytoy a panid]].",
'searchall' => 'amin',
'showingresults' => "Maiparang iti baba ti agingga iti {{PLURAL:$1|'''1''' a resulta|'''$1''' a resresulta}} a mangrugi iti #'''$2'''.",
'showingresultsnum' => "Makita iti baba ti {{PLURAL:$3|'''1''' a resulta|'''$3''' a resresulta}} a mangrugi iti #'''$2'''.",
-'showingresultstotal' => "Maiparang iti baba {{PLURAL:$3|ti resulta '''$1''' ti '''$3'''|dagiti resulta '''$1 - $2''' ti '''$3'''}}",
'powersearch' => 'agbirok',
'powersearch-legend' => 'Advanced a panagsapul',
'powersearch-redir' => 'Ilista dagiti panagibaw-ing',
'powersearch-field' => 'Agsapul iti',
'search-external' => 'Akinruar a pagsapul',
-# Preferences page
-'preferences' => 'preferencias',
-'mypreferences' => 'Dagiti preferenciak',
-'prefs-edits' => 'Bilang dagiti binalbaliwan:',
-'prefsnologin' => 'Saan a naka-log in',
+# Quickbar
'qbsettings' => 'Quickbar',
'qbsettings-none' => 'Awan',
'qbsettings-fixedleft' => 'Fixed left',
'qbsettings-fixedright' => 'Nai-fixed right',
'qbsettings-floatingleft' => 'Floating left',
'qbsettings-floatingright' => 'Floating right',
-'changepassword' => 'Baliwan ti password',
-'skin' => 'Kudil',
-'skin-preview' => 'I-preview',
-'math' => 'Math',
-'dateformat' => 'Format ti petsa',
-'datedefault' => 'Awanan preferencia',
-'datetime' => 'Petsa ken oras',
-'math_failure' => 'Napaay nga ag-parse',
-'math_unknown_error' => 'di ammo a biddut',
-'math_unknown_function' => 'di ammo a function',
-'math_lexing_error' => 'lexing error',
-'math_syntax_error' => 'biddut iti syntax',
-'math_image_error' => 'Napaay ti PNG conversion;
-itsek ti husto a panangikapet iti latex, dvips, gs, samo i-convert',
-'prefs-personal' => 'Profile ti agar-aramat',
-'prefs-rc' => 'Kaudian a balbaliw',
-'prefs-watchlist' => 'Listaan ti bambantayan',
-'prefs-watchlist-days' => 'Bilang ti aldaw nga agparang iti listaan ti bambantayan:',
-'prefs-misc' => 'Misc',
-'saveprefs' => 'I-save',
-'resetprefs' => 'Dalusan dagiti saan a naidulin a panamalbaliw',
-'searchresultshead' => 'Sapulen',
-'resultsperpage' => 'Hits ti kada panid:',
-'contextlines' => 'Hit kada linia:',
-'contextchars' => 'Contexto ti kada linia:',
-'recentchangescount' => 'Bilang ti edits a maiparang iti kaudian a panamalbaliw:',
-'timezonelegend' => 'Zona ti oras',
-'localtime' => 'Local nga oras',
-'timezoneoffset' => 'Offset¹',
-'servertime' => 'Oras ti server',
-'default' => 'naisigud',
-'files' => 'Dagiti files',
+
+# Preferences page
+'preferences' => 'preferencias',
+'mypreferences' => 'Dagiti preferenciak',
+'prefs-edits' => 'Bilang dagiti binalbaliwan:',
+'prefsnologin' => 'Saan a naka-log in',
+'changepassword' => 'Baliwan ti password',
+'prefs-skin' => 'Kudil',
+'skin-preview' => 'I-preview',
+'prefs-math' => 'Math',
+'datedefault' => 'Awanan preferencia',
+'prefs-datetime' => 'Petsa ken oras',
+'prefs-personal' => 'Profile ti agar-aramat',
+'prefs-rc' => 'Kaudian a balbaliw',
+'prefs-watchlist' => 'Listaan ti bambantayan',
+'prefs-watchlist-days' => 'Bilang ti aldaw nga agparang iti listaan ti bambantayan:',
+'prefs-misc' => 'Misc',
+'saveprefs' => 'I-save',
+'resetprefs' => 'Dalusan dagiti saan a naidulin a panamalbaliw',
+'searchresultshead' => 'Sapulen',
+'resultsperpage' => 'Hits ti kada panid:',
+'contextlines' => 'Hit kada linia:',
+'contextchars' => 'Contexto ti kada linia:',
+'recentchangescount' => 'Bilang ti edits a maiparang iti kaudian a panamalbaliw:',
+'timezonelegend' => 'Zona ti oras',
+'localtime' => 'Local nga oras',
+'timezoneoffset' => 'Offset¹',
+'servertime' => 'Oras ti server',
+'default' => 'naisigud',
+'prefs-files' => 'Dagiti files',
+'youremail' => 'Email:',
+'username' => 'Nagan ti agar-aramat:',
+'uid' => 'ID ti agar-aramat:',
+'prefs-memberingroups' => 'Kameng ti {{PLURAL:$1|bunggoy|bungbunggoy}}:',
+'yourrealname' => 'Pudno a nagan:',
+'yourlanguage' => 'Pagsasao:',
+'yournick' => 'Birngas:',
+'badsig' => 'Saan a valido a raw signature; itsekmo ti HTML tags.',
+'badsiglength' => 'Atiddog unay ti palayawmo.
+Nasken a nababbaba ngem $1 a {{PLURAL:$1|character|characters}}.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
+Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti obram.',
+'prefs-help-email-required' => 'Masapul ti email address.',
# User rights
'userrights-user-editname' => 'Mangiserrek iti nagan-agar-aramat:',
@@ -806,6 +792,8 @@ itsek ti husto a panangikapet iti latex, dvips, gs, samo i-convert',
# Recent changes linked
'recentchangeslinked' => 'Mainaig a balbaliw',
+'recentchangeslinked-feed' => 'Mainaig a balbaliw',
+'recentchangeslinked-toolbox' => 'Mainaig a balbaliw',
'recentchangeslinked-title' => 'Panangbalbaliw a mainaig iti "$1"',
'recentchangeslinked-noresult' => 'Awan panamalbaliw kadagiti naisilpo a pampanid kabayatan ti naited a panawen.',
'recentchangeslinked-summary' => "Listaan daytoy dagiti kaudian a naaramid a panangbalbaliw kadagiti pampanid a nakasilpo manipud iti maysa a napili a panid (wenno kadagiti kameng ti maysa a napili a categoria).
@@ -815,7 +803,6 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
# Upload
'upload' => 'Mangipan iti file',
'uploadbtn' => 'Ipan ti file',
-'reupload' => 'I-upload manen',
'uploadnologin' => 'Saan a nakastrek',
'uploadnologintext' => 'Nasken a [[Special:UserLogin|nakaserrekka]] tapno makaipanka iti files.',
'uploaderror' => 'Kammali iti panangipan',
@@ -838,7 +825,6 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
'filetype-badmime' => 'Dagiti files a kas MIME type "$1" ket saan a mapalubosan a maipan.',
'filetype-unwanted-type' => "Ti '''\".\$1\"''' ket di mabalin a file type. Dagiti mayat a file types ket \$2.",
'filetype-banned-type' => "Ti '''\".\$1\"''' ket saan a mapalubosan a file type. Dagiti mabalin a file types ket \$2.",
-'fileexists-thumb' => "<center>'''Addan a file'''</center>",
'successfulupload' => 'Balligi ti panag-upload',
'uploadwarning' => 'Ballaag iti panagipan',
'savefile' => 'Idulin ti file',
@@ -862,6 +848,7 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
'upload-curl-error28' => 'Timeout ti upload',
'license' => 'Lisensia:',
+'license-header' => 'Lisensia:',
'nolicense' => 'Awan ti napili',
'license-nopreview' => '(Saan a mabalin ti preview)',
'upload_source_url' => ' (maysa a valido, ken maakses ti publico nga URL)',
@@ -878,6 +865,7 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
'listfiles_description' => 'Deskripsion',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Pakasaritaan ti file',
'filehist-help' => 'Mangiklikka iti maysa a petsa/oras tapno makitam ti file iti kasisigudna a langa iti dayta nga oras.',
'filehist-deleteall' => 'ikkaten amin',
@@ -895,11 +883,7 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
'morelinkstoimage' => 'Kitaen ti [[Special:WhatLinksHere/$1|ad-adu pay a panilpo]] kadaytoy a file.',
'redirectstofile' => 'Dagiti sumaganad a files ket ag-redirect iti daytoy a file:',
'duplicatesoffile' => 'Dagiti sumaganad a files ket duplikado daytoy a file:',
-'sharedupload' => 'Daytoy a file ket pagraranudan nga upload ket mabalin nga aramaten ti sabsabali pay a projectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Pangngaasim ta kitaem ti $1 para iti ad-adu pay nga informasion.',
-'shareduploadwiki-linktext' => 'panid ti file description',
-'noimage' => 'Awan ti file iti kasta a nagan, mabalinmo ti $1.',
-'noimage-linktext' => 'ipanen',
+'sharedupload' => 'Daytoy a file ket pagraranudan nga upload ket mabalin nga aramaten ti sabsabali pay a projectos.',
'uploadnewversion-linktext' => 'Mangipan iti kabarbaro a version daytoy a file',
# File reversion
@@ -957,8 +941,8 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''naipuskol''
'doubleredirects' => 'Dagiti doble a panangbaw-ing',
'brokenredirects' => 'Dagiti naputed a panangbaw-ing',
-'brokenredirects-edit' => '(baliwan)',
-'brokenredirects-delete' => '(ikkaten)',
+'brokenredirects-edit' => 'baliwan',
+'brokenredirects-delete' => 'ikkaten',
'withoutinterwiki' => 'Dagiti panid nga awanan panilpo a pagsasao',
'withoutinterwiki-legend' => 'Prefix',
@@ -1143,8 +1127,8 @@ Kitaen ti $2 para iti record dagiti naudi a naikkat.',
'rollback_short' => 'Isubli',
'rollbacklink' => 'isubli',
'rollbackfailed' => 'Napaay ti panangisubli',
-'editcomment' => "Ti komento ti panangedit ket: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Naikkat ti panangbaliw ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Pagtutungtongan]]), naisubli iti kaudian a version ni [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Ti komento ti panangedit ket: \"''\$1''\".",
+'revertpage' => 'Naikkat ti panangbaliw ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Pagtutungtongan]]), naisubli iti kaudian a version ni [[User:$1|$1]]',
'rollback-success' => 'Naibabawi dagiti panagedit ni $1;
naisubli manen iti naudi a version ni $2.',
@@ -1160,7 +1144,6 @@ naisubli manen iti naudi a version ni $2.',
'protectexpiry' => 'Agpaso inton:',
'protect_expiry_invalid' => 'Saan a mabalin ti oras a panagpaso.',
'protect_expiry_old' => 'Adda iti napalabas ti oras ti panagpaso.',
-'protect-unchain' => 'Luktan dagiti pammalubos iti panagiyakar',
'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti saluad ditoy ti panid a '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Awanan pammalubos ti accountmo a mangbaliw kadagiti level ti saluad ti panid.
Dagitoy dagiti agdama a settings ti panid a '''$1''':",
@@ -1174,7 +1157,7 @@ Mabalinmo a sukatan ti level ti saluad daytoy a panid, ngem saanna nga apektaran
'protect-expiring' => 'agpaso inton $1 (UTC)',
'protect-cascade' => 'Saluadan dagiti pampanid a nairaman iti daytoy a panid (babaen ti cascading a saluad)',
'protect-cantedit' => 'Saanmo a masuktan ti level ti saluad daytoy a panid, ta awananka iti pammalubos a mangbalbaliw..',
-'protect-expiry-options' => '1 nga oras:1 hour,1 nga aldaw:1 day,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 nga oras:1 hour,1 nga aldaw:1 day,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite',
'restriction-type' => 'Pammalubos:',
'restriction-level' => 'Level ti pannakaiparit:',
'minimum-size' => 'Min a size',
@@ -1231,6 +1214,7 @@ Binsiren ti [[Special:Log/delete|log ti naik-ikkat]] para iti rekord dagiti naud
'sp-contributions-newbies' => 'Iparang dagiti contributions dagiti kabarbaro nga accounts laeng',
'sp-contributions-newbies-sub' => 'Para kadagiti kabarbaro nga account',
'sp-contributions-blocklog' => 'Serraan ti log',
+'sp-contributions-talk' => 'Makipatang',
'sp-contributions-search' => 'Agsapul kadagiti contributions',
'sp-contributions-username' => 'IP Address wenno nagan-agar-aramat:',
'sp-contributions-submit' => 'Agsapul',
@@ -1266,7 +1250,7 @@ Binsiren ti [[Special:Log/delete|log ti naik-ikkat]] para iti rekord dagiti naud
'ipbemailban' => 'Lappedan ti agar-aramar nga agipatulod iti email',
'ipbsubmit' => 'Serraan daytoy nga agar-aramat',
'ipbother' => 'Sabali nga oras:',
-'ipboptions' => '2 nga oras:2 hours,1 nga aldaw:1 day,3 nga aldaw:3 days,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 nga oras:2 hours,1 nga aldaw:1 day,3 nga aldaw:3 days,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite',
'ipbotheroption' => 'sabali',
'ipbotherreason' => 'Sabali/nayon a rason:',
'ipbwatchuser' => 'Bantayan ti panid-agar-ramat ken panid-tungtongan daytoy nga agar-aramat',
@@ -1284,7 +1268,7 @@ Binsiren ti [[Special:Log/delete|log ti naik-ikkat]] para iti rekord dagiti naud
'ipblocklist-submit' => 'Agbirok',
'blocklistline' => 'Ni $1, $2 sinerraanna ni $3 ($4)',
'infiniteblock' => "inggana't inggana",
-'expiringblock' => 'agpaso into no $1',
+'expiringblock' => 'agpaso into no $1 $2',
'anononlyblock' => 'anon. laeng',
'createaccountblock' => 'napengdan ti pannakapartuat ti account',
'emailblock' => 'naserraan ti email',
@@ -1347,7 +1331,7 @@ Kadagitoy a kaso, masapul nga iyakar wenno itiponmo a manual ti panid no kayatmo
'move-watch' => 'Bantayan daytoy a panid',
'movepagebtn' => 'Iyakar ti panid',
'pagemovedsub' => 'Balligi ti panangiyakar',
-'movepage-moved' => 'Naiyakar ti \'\'\'"$1" iti "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Naiyakar ti \'\'\'"$1" iti "$2"\'\'\'',
'articleexists' => 'Addan panid nga addaan iti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
Pangngaasim ta mangpilika iti sabali a nagan.',
'talkexists' => "'''Sibaballigi a naiyakar ti panid, nupay kasta saan a maiyakar ti panid ti tungtongan gapu ta addan panid-tungtongan iti baro a titulo.
@@ -1462,7 +1446,7 @@ Pangngaasim ta i-manualmo lattan a pagtiponem ida.'''",
# Attribution
'anonymous' => 'Di am-ammo nga agar-aramat iti {{SITENAME}}',
'siteuser' => '{{SITENAME}} nga agar-aramat $1',
-'lastmodifiedatby' => 'Daytoy a panid ket naudi a binalbaliwan idi $2, $1 ni $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Daytoy a panid ket naudi a binalbaliwan idi $2, $1 ni $3.',
'othercontribs' => 'Naibasar iti obra ni $1.',
'others' => 'dadduma pay',
'siteusers' => '{{SITENAME}} nga agar-aramat $1',
@@ -1481,6 +1465,15 @@ Pangngaasim ta i-manualmo lattan a pagtiponem ida.'''",
'mw_math_png' => 'Kanayon a pagbalinen a PNG',
'mw_math_source' => 'Ibati lattan a kas TeX (para kadagiti text browsers)',
+# Math errors
+'math_failure' => 'Napaay nga ag-parse',
+'math_unknown_error' => 'di ammo a biddut',
+'math_unknown_function' => 'di ammo a function',
+'math_lexing_error' => 'lexing error',
+'math_syntax_error' => 'biddut iti syntax',
+'math_image_error' => 'Napaay ti PNG conversion;
+itsek ti husto a panangikapet iti latex, dvips, gs, samo i-convert',
+
# Patrolling
'markaspatrolleddiff' => 'Markaan a kas napatruliaan',
'markaspatrolledtext' => 'Markaan daytoy a panid a kas napatruliaan',
@@ -1536,7 +1529,7 @@ ODagiti dadduma ket sigud a nakalemmeng.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Kaakaba',
@@ -1649,14 +1642,14 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-unknowndate' => 'Di ammo a petsa',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Flipped horizontally', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotated 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Flipped vertically', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotated 90° CCW ken flipped vertically', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotated 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotated 90° CW ken flipped vertically', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotated 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Flipped horizontally',
+'exif-orientation-3' => 'Rotated 180°',
+'exif-orientation-4' => 'Flipped vertically',
+'exif-orientation-5' => 'Rotated 90° CCW ken flipped vertically',
+'exif-orientation-6' => 'Rotated 90° CW',
+'exif-orientation-7' => 'Rotated 90° CW ken flipped vertically',
+'exif-orientation-8' => 'Rotated 90° CCW',
'exif-planarconfiguration-1' => 'chunky format',
'exif-planarconfiguration-2' => 'planar format',
@@ -1762,7 +1755,7 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-gpsmeasuremode-2' => '2-dimensional a measurement',
'exif-gpsmeasuremode-3' => '3-dimensional a measurement',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometros kada oras',
'exif-gpsspeed-m' => 'Milia kada oras',
'exif-gpsspeed-n' => 'Knots',
@@ -1871,7 +1864,7 @@ $1',
'unknown_extension_tag' => 'Di ammo nga extension tag "$1"',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Naikapet nga extensions',
'version-specialpages' => 'Naiduma a pampanid',
'version-parserhooks' => 'Parser hooks',
@@ -1885,7 +1878,7 @@ $1',
'version-skin-extension-functions' => 'Extension functions ti kudil',
'version-hook-name' => 'Hook name',
'version-hook-subscribedby' => 'Sinubskriber ni',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lisensia',
'version-software' => 'Naikapet a software',
'version-software-product' => 'Produkto',
diff --git a/languages/messages/MessagesInh.php b/languages/messages/MessagesInh.php
index 7395c552..f727e5e7 100644
--- a/languages/messages/MessagesInh.php
+++ b/languages/messages/MessagesInh.php
@@ -116,10 +116,17 @@ $messages = array(
'category-media-header' => '"$1" категори медиа',
'category-empty' => "''Укх категори хьанзарчоа цхьаккха е оагIонаш, е медиа яц.''",
-'about' => 'Описани',
-'article' => 'ОагIув',
-'newwindow' => '(кердача курогIa хьаделла)',
-'cancel' => 'Юхавал',
+'about' => 'Описани',
+'article' => 'ОагIув',
+'newwindow' => '(кердача курогIa хьаделла)',
+'cancel' => 'Юхавал',
+'moredotdotdot' => 'ДукхагIа ха...',
+'mypage' => 'Са оагIув',
+'mytalk' => 'Са къамаьл',
+'anontalk' => 'Цу IP ца къамаьл де',
+'navigation' => 'Навигаци',
+
+# Cologne Blue skin
'qbfind' => 'Хьакораде',
'qbbrowse' => 'Хьокха',
'qbedit' => 'Хувца',
@@ -127,11 +134,8 @@ $messages = array(
'qbpageinfo' => 'Укхо чу фу да',
'qbmyoptions' => 'Са оагIонаш',
'qbspecialpages' => 'ЛаьрххIа оагIувнаш',
-'moredotdotdot' => 'ДукхагIа ха...',
-'mypage' => 'Са оагIув',
-'mytalk' => 'Са къамаьл',
-'anontalk' => 'Цу IP ца къамаьл де',
-'navigation' => 'Навигаци',
+'faq' => 'КХХ (Каста Хоатташ доа Хамаж)',
+'faqpage' => 'Project:КХХ (Каста Хоатташ доа Хамаж)',
'errorpagetitle' => 'ГIалат',
'returnto' => '$1 оагIувте юхавал',
@@ -179,7 +183,7 @@ $messages = array(
'otherlanguages' => 'Вокхо меттала',
'redirectedfrom' => '($1 тIера хьайахьийта)',
'redirectpagesub' => 'Йука меттиге йахьийта оагIув',
-'lastmodifiedat' => 'Тiехьара хувцам у оагIувна: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Тiехьара хувцам у оагIувна: $2, $1.',
'viewcount' => 'Ер оагIув $1 хьо йай.',
'protectedpage' => 'Лораеж йоа оагIув',
'jumpto' => 'Уккуз дехьадала:',
@@ -193,8 +197,6 @@ $messages = array(
'currentevents-url' => 'Project:Хьанзар доалара хама',
'edithelp' => 'Хувцамаш йие гIо',
'edithelppage' => 'Help:Хувцамаш йие гIо',
-'faq' => 'КХХ (Каста Хоатташ доа Хамаж)',
-'faqpage' => 'Project:КХХ (Каста Хоатташ доа Хамаж)',
'helppage' => 'Help:Хьехар',
'mainpage' => 'Кертера оагIув',
'mainpage-description' => 'Кертера оагIув',
@@ -222,4 +224,6 @@ $messages = array(
# Special:Categories
'categories' => 'Категореш',
+'sp-contributions-talk' => 'Къамьал',
+
);
diff --git a/languages/messages/MessagesIo.php b/languages/messages/MessagesIo.php
index 6d33aebd..4b5676ce 100644
--- a/languages/messages/MessagesIo.php
+++ b/languages/messages/MessagesIo.php
@@ -17,27 +17,92 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Specala',
- NS_TALK => 'Debato',
- NS_USER => 'Uzanto',
- NS_USER_TALK => 'Uzanto_Debato',
- NS_PROJECT_TALK => '$1_Debato',
- NS_FILE => 'Imajo',
- NS_FILE_TALK => 'Imajo_Debato',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_Debato',
- NS_TEMPLATE => 'Modelo',
- NS_TEMPLATE_TALK => 'Modelo_Debato',
- NS_HELP => 'Helpo',
- NS_HELP_TALK => 'Helpo_Debato',
- NS_CATEGORY => 'Kategorio',
- NS_CATEGORY_TALK => 'Kategorio_Debato',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Specala',
+ NS_TALK => 'Debato',
+ NS_USER => 'Uzanto',
+ NS_USER_TALK => 'Uzanto_Debato',
+ NS_PROJECT_TALK => '$1_Debato',
+ NS_FILE => 'Arkivo',
+ NS_FILE_TALK => 'Arkivo_Debato',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Debato',
+ NS_TEMPLATE => 'Shablono',
+ NS_TEMPLATE_TALK => 'Shablono_Debato',
+ NS_HELP => 'Helpo',
+ NS_HELP_TALK => 'Helpo_Debato',
+ NS_CATEGORY => 'Kategorio',
+ NS_CATEGORY_TALK => 'Kategorio_Debato',
);
$namespaceAliases = array(
- 'Shablono' => NS_TEMPLATE,
- 'Shablono_Debato' => NS_TEMPLATE_TALK,
+ 'Imajo' => NS_FILE,
+ 'Imajo_Debato' => NS_FILE_TALK,
+ 'Modelo' => NS_TEMPLATE,
+ 'Modelo_Debato' => NS_TEMPLATE_TALK,
+);
+
+$specialPageAliases = array(
+ 'Userlogin' => array( 'Enirar' ),
+ 'Userlogout' => array( 'Ekirar' ),
+ 'CreateAccount' => array( 'KrearKonto' ),
+ 'Preferences' => array( 'Preferaji' ),
+ 'Watchlist' => array( 'Surveyaji' ),
+ 'Recentchanges' => array( 'RecentaChanji' ),
+ 'Upload' => array( 'AdkargarArkivo' ),
+ 'Listfiles' => array( 'ArkivoListo' ),
+ 'Newimages' => array( 'NovaArkivi' ),
+ 'Listusers' => array( 'UzantoListo' ),
+ 'Listgrouprights' => array( 'GrupoYuroListo' ),
+ 'Statistics' => array( 'Statistiko' ),
+ 'Randompage' => array( 'HazardaPagino' ),
+ 'Uncategorizedpages' => array( 'NekategoriizitaPagini' ),
+ 'Uncategorizedcategories' => array( 'NekategoriizitaKategorii' ),
+ 'Uncategorizedimages' => array( 'NekategoriizitaArkivi' ),
+ 'Uncategorizedtemplates' => array( 'NekategoriizitaShabloni' ),
+ 'Unusedcategories' => array( 'NeuzataKategorii' ),
+ 'Unusedimages' => array( 'NeuzataArkivi' ),
+ 'Wantedpages' => array( 'BezonataPagini' ),
+ 'Wantedcategories' => array( 'BezonataKategorii' ),
+ 'Wantedfiles' => array( 'BezonataArkivi' ),
+ 'Wantedtemplates' => array( 'BezonataShabloni' ),
+ 'Shortpages' => array( 'KurtaPagini' ),
+ 'Longpages' => array( 'LongaPagini' ),
+ 'Newpages' => array( 'NovaPagini' ),
+ 'Ancientpages' => array( 'AncienaPagini' ),
+ 'Protectedpages' => array( 'ProtektitaPagini' ),
+ 'Protectedtitles' => array( 'ProtektitaTituli' ),
+ 'Allpages' => array( 'OmnaPagini' ),
+ 'Prefixindex' => array( 'PrefixoIndexo' ),
+ 'Ipblocklist' => array( 'BlokusoListo' ),
+ 'Specialpages' => array( 'SpecalaPagini' ),
+ 'Contributions' => array( 'Kontributaji' ),
+ 'Emailuser' => array( 'EpostarUzanto' ),
+ 'Confirmemail' => array( 'KontrolarEposto' ),
+ 'Whatlinkshere' => array( 'QuoLigasHike' ),
+ 'Recentchangeslinked' => array( 'RelatantaChanji', 'RecentaChanjiLigata' ),
+ 'Movepage' => array( 'MovarPagino' ),
+ 'Booksources' => array( 'LibroFonti' ),
+ 'Categories' => array( 'Kategorii' ),
+ 'Export' => array( 'Ekportar' ),
+ 'Version' => array( 'Versiono' ),
+ 'Allmessages' => array( 'OmnaMesaji' ),
+ 'Log' => array( 'Registrari', 'Registraro' ),
+ 'Blockip' => array( 'Blokusar', 'BlokusarIP', 'BlokusarUzanto' ),
+ 'Unwatchedpages' => array( 'NesurveyataPagini' ),
+ 'Listredirects' => array( 'RidirektiloListo' ),
+ 'Revisiondelete' => array( 'VersionoEfacar', 'EfacarVersiono' ),
+ 'Unusedtemplates' => array( 'NeuzataShabloni' ),
+ 'Randomredirect' => array( 'HazardaRidirektilo' ),
+ 'Mypage' => array( 'MeaPagino' ),
+ 'Mytalk' => array( 'MeaDiskuti' ),
+ 'Mycontributions' => array( 'MeaKontributaji' ),
+ 'Listadmins' => array( 'AdministrantiListo' ),
+ 'Listbots' => array( 'RobotoListo' ),
+ 'Search' => array( 'Serchar' ),
+ 'Resetpass' => array( 'ChanjarPasovorto', 'Ripasvortizar' ),
+ 'Blankpage' => array( 'BlankaPagini' ),
+ 'DeletedContributions' => array( 'EfacitaKontributaji' ),
);
$messages = array(
@@ -144,7 +209,7 @@ $messages = array(
'subcategories' => 'Subkategorii',
'category-empty' => "''Nuntempe existas nula pagini en ita kategorio.''",
'hidden-categories' => '{{PLURAL:$1|Celita kategorio|Celita kategorii}}',
-'hidden-category-category' => 'Celita kategorii', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Celita kategorii',
'category-subcat-count' => 'Ica kategorio havas {{PLURAL:$2|nur la sequanta subkategorio.|la sequanta {{PLURAL:$1|subkategorio|$1 subkategorii}}, ek $2.}}',
'category-subcat-count-limited' => 'Ica kategorio havas la sequanta {{PLURAL:$1|subkategorio|$1 subkategorii}}.',
'category-article-count' => '{{PLURAL:$2|Ica kategorio havas nur la sequanta pagino.|La sequanta {{PLURAL:$1|pagino|$1 pagini}} es en ica kategorio, ek $2.}}',
@@ -161,25 +226,47 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki OQQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
-'about' => 'Pri',
-'article' => 'artiklo',
-'newwindow' => '(aparos en nova panelo)',
-'cancel' => 'Anular',
+'about' => 'Pri',
+'article' => 'artiklo',
+'newwindow' => '(aparos en nova panelo)',
+'cancel' => 'Anular',
+'moredotdotdot' => 'Plus...',
+'mypage' => 'Mea pagino',
+'mytalk' => 'Mea diskuti',
+'anontalk' => 'Diskuto relatant ad ica IP',
+'navigation' => 'Navigado',
+'and' => '&#32;ed',
+
+# Cologne Blue skin
'qbfind' => 'Trovez',
'qbedit' => 'Redaktar',
'qbpageoptions' => 'Ica pagino',
'qbpageinfo' => 'Kuntexto',
'qbmyoptions' => 'Mea pagini',
'qbspecialpages' => 'Specala pagini',
-'moredotdotdot' => 'Plus...',
-'mypage' => 'Mea pagino',
-'mytalk' => 'Mea diskuti',
-'anontalk' => 'Diskuto relatant ad ica IP',
-'navigation' => 'Navigado',
-'and' => '&#32;ed',
-# Metadata in edit box
-'metadata_help' => 'Metadonaji:',
+# Vector skin
+'vector-action-addsection' => 'Adjuntar topiko',
+'vector-action-delete' => 'Efacar',
+'vector-action-move' => 'Movar',
+'vector-action-protect' => 'Protektar',
+'vector-action-undelete' => 'Rekuperar',
+'vector-action-unprotect' => 'Desprotektar',
+'vector-namespace-category' => 'Kategorio',
+'vector-namespace-help' => 'Helpo-pagino',
+'vector-namespace-image' => 'Failo',
+'vector-namespace-main' => 'Pagino',
+'vector-namespace-mediawiki' => 'Mesajo',
+'vector-namespace-special' => 'Specala pagino',
+'vector-namespace-talk' => 'Diskuto',
+'vector-namespace-template' => 'Shablono',
+'vector-namespace-user' => 'Uzanto-pagino',
+'vector-view-create' => 'Krear',
+'vector-view-edit' => 'Redaktar',
+'vector-view-history' => 'Vidar versionaro',
+'vector-view-view' => 'Lektar',
+'vector-view-viewsource' => 'Vidar fonto',
+'namespaces' => 'Nomari',
'errorpagetitle' => 'Eroro',
'returnto' => 'Retrovenar a $1.',
@@ -229,7 +316,7 @@ $messages = array(
'otherlanguages' => 'En altra lingui',
'redirectedfrom' => '(Ridirektita de $1)',
'redirectpagesub' => 'Ridirektanta pagino',
-'lastmodifiedat' => 'Ica pagino modifikesis ye $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ica pagino modifikesis ye $2, $1.',
'viewcount' => 'Ica pagino acesesis {{PLURAL:$1|1 foyo|$1 foyi}}.',
'protectedpage' => 'Protektita pagino',
'jumpto' => 'Irez ad:',
@@ -240,7 +327,6 @@ $messages = array(
'aboutsite' => 'Pri {{SITENAME}}',
'aboutpage' => 'Project:Pri {{SITENAME}}',
'copyright' => 'La kontenajo esas disponebla sub $1.',
-'copyrightpagename' => '{{SITENAME}} kopiyuro',
'copyrightpage' => '{{ns:project}}:Autor-yuri',
'currentevents' => 'Aktualaji',
'currentevents-url' => 'Project:Aktualaji',
@@ -310,10 +396,6 @@ On povas trovar listo di valida specala pagini en [[Special:SpecialPages|{{int:s
# General errors
'error' => 'Eroro',
'databaseerror' => 'Datumarala eroro',
-'noconnect' => 'Pardonez! La wiki havas ula teknikala desfacilaji ed ne povas konektar kun la datumaro.<br />
-$1',
-'nodb' => 'Onu ne povas selektar datumaro $1',
-'cachederror' => "Co esas kopiuro registragita ye la ''cache'' di la solicitita pagino, ed ol povus ne esar aktuala.",
'readonly' => 'Datumaro esas blokusita',
'enterlockreason' => 'Explikez la motivo por la blokuso, inkluzante
evaluo pri kande eventos la desblokuso',
@@ -328,7 +410,8 @@ evaluo pri kande eventos la desblokuso',
'unexpected' => 'Nevartita valoro: "$1"="$2".',
'formerror' => 'Eroro: Onu ne povis sendar la kontenajo di la formularo',
'badarticleerror' => 'Ica ago ne povas facesar en ca pagino.',
-'cannotdelete' => 'Ne es posibla efacar la pagino od arkivo. (Forsan, ulu ja efacis ol.)',
+'cannotdelete' => 'Ne es posibla efacar la pagino od arkivo "$1".
+Forsan, ulu ja efacis ol.',
'badtitle' => 'Nekorekta titulo',
'badtitletext' => 'La solicitita pagino esas nevalida, vakua od esas
nekorekta interlinguale od interwikale ligilo.',
@@ -340,7 +423,6 @@ nekorekta interlinguale od interwikale ligilo.',
'ns-specialprotected' => 'On ne povas redaktar speciala pagini.',
# Login and logout pages
-'logouttitle' => 'Ekiro',
'logouttext' => "'''Vu nun esas nun ek {{SITENAME}}.'''
Vu povas durar uzante {{SITENAME}} anonimale, o vu povas [[Special:UserLogin|enirar itere]] kom la sama o diferenta uzanto.
@@ -348,7 +430,6 @@ Atencez ke kelka pagini posible duras montresar semblante ke vu ne ekirus, til v
'welcomecreation' => '== Bonveno, $1! ==
Vua konto kreesis.
Voluntez, ne obliviez chanjor vua [[Special:Preferences|preferaji en {{SITENAME}}]].',
-'loginpagetitle' => 'Registragar / Enirar',
'yourname' => 'Vua uzantonomo:',
'yourpassword' => 'Pasovorto:',
'yourpasswordagain' => 'Riskribez la pasovorto:',
@@ -358,6 +439,7 @@ Voluntez, ne obliviez chanjor vua [[Special:Preferences|preferaji en {{SITENAME}
'nav-login-createaccount' => 'Enirar',
'loginprompt' => "Vu mustas permisar ''cookies'' por enirar a {{SITENAME}}.",
'userlogin' => 'Enirar / krear konto',
+'userloginnocreate' => 'Enirar',
'logout' => 'Ekirar',
'userlogout' => 'Ekirar',
'notloggedin' => 'Sesiono ne esas iniciata',
@@ -370,22 +452,7 @@ Voluntez, ne obliviez chanjor vua [[Special:Preferences|preferaji en {{SITENAME}
'badretype' => 'La pasovorti vu donis ne esas sama.',
'userexists' => 'La uzantonomo, quan vu skribis, ja selektesis antee.
Voluntez, elektez ula diferanta uzantonomo.',
-'youremail' => 'Vua e-adreso:',
-'username' => 'Uzantonomo:',
-'uid' => 'ID dil uzanto:',
-'prefs-memberingroups' => 'Membro di la {{PLURAL:$1|grupo|grupi}}:',
-'yourrealname' => 'Reala nomo:',
-'yourlanguage' => 'Linguo:',
-'yournick' => 'Signaturo:',
-'badsiglength' => 'Vua signaturo es tro longa.
-Ol mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.',
-'yourgender' => 'Genro:',
-'gender-unknown' => 'Nespecigita',
-'gender-male' => 'Maskula',
-'gender-female' => 'Femina',
-'email' => 'Elek-posto',
'loginerror' => 'Eroro enirante',
-'prefs-help-email-required' => 'E-postala adreso es bezonata.',
'nocookieslogin' => "{{SITENAME}} uzas ''cookies'' por la registrago dil uzanti. Vu havas la ''cookies'' desaktivigita. Voluntez aktivigar oli e probez altrafoye.",
'noname' => 'Vu ne donis valida uzantonomo.',
'loginsuccesstitle' => 'Eniro sucesoza',
@@ -398,8 +465,7 @@ Kontrolez la espelado.',
'nouserspecified' => 'Vu mustas specigar uzantonomo.',
'wrongpassword' => 'La skribita pasovorto esis nekorekta. Voluntez probar itere.',
'wrongpasswordempty' => 'Vu ne skribis pasovorto. Probez nove.',
-'passwordtooshort' => 'Vua pasovorto es ne-valida o tro kurta.
-Ol mustas kontenar adminime {{PLURAL:$1|1 signo|$1 signi}} ed mustas esar diferanta kam vua uzantonomo.',
+'passwordtooshort' => 'Pasovorti mustas kontenar adminime {{PLURAL:$1|1 signo|$1 signi}}.',
'mailmypassword' => 'Sendez nova pasovorto per e-posto',
'passwordremindertitle' => 'Nova provizora pasovorto por {{SITENAME}}',
'noemail' => 'Ne esas e-adreso konservita por la uzanto "$1".',
@@ -424,7 +490,6 @@ Voluntez enirar altrafoye pos recevar ol.',
'resetpass_success' => 'Vua chanjo di pasovorto sucesis! Nun, vu eniras...',
'resetpass-submit-loggedin' => 'Chanjar pasovorto',
'resetpass-temp-password' => 'Provizora pasovorto:',
-'resetpass-logentry' => 'chanjis la pasovorto di $1',
# Edit page toolbar
'bold_sample' => 'Dika literi',
@@ -467,7 +532,6 @@ Vua IP-adreso registragesos en la versionaro di ca pagino.",
'blockededitsource' => "La texto di '''vua redaktaji''' di '''$1''' es montrata infre:",
'whitelistedittitle' => 'On mustas enskribar por redaktar',
'whitelistedittext' => 'Vu mustas $1 por redaktar pagini.',
-'confirmedittitle' => 'Konfirmado de vua e-posto es bezonata por redaktar',
'nosuchsectiontitle' => 'On ne povis trovar la seciono',
'loginreqtitle' => 'Eniro esas postulata',
'loginreqlink' => 'enirar',
@@ -519,14 +583,16 @@ Publikigante vua skribajo hike, vu asertas ke olu skribesis da vu ipsa o kopiesi
Ula navigili posible havas problemi redaktante pagini proximeskanta o plu longa kam 32kb.
Voluntez konsideras separar la pagino aden plu mikra secioni.",
'protectedpagewarning' => "'''AVERTO: Ica pagino esas blokusita, do nur ''sysop''-i povas redaktar olu.'''",
-'templatesused' => 'Shabloni uzata en ica pagino:',
-'templatesusedpreview' => 'Shabloni uzata en ica prevido:',
-'templatesusedsection' => 'Shabloni uzata en ica seciono:',
+'templatesused' => '{{PLURAL:$1|Shablono|Shabloni}} uzata en ica pagino:',
+'templatesusedpreview' => '{{PLURAL:$1|Shablono|Shabloni}} uzata en ica prevido:',
+'templatesusedsection' => '{{PLURAL:$1|Shablono|Shabloni}} uzata en ica seciono:',
'template-protected' => '(protektita)',
'template-semiprotected' => '(mi-protektita)',
'hiddencategories' => 'Ca pagino esas membro di {{PLURAL:$1|1 celita kategorio|$1 celita kategorii}}:',
'nocreatetitle' => 'Kreado di pagini limitita',
'permissionserrorstext-withaction' => 'Vu ne darfas $2, pro la {{PLURAL:$1|kauzo|kauzi}} sequanta:',
+'moveddeleted-notice' => 'Ca pagino efacesabas.
+La efaco-registraro e movo-registraro dil pagino provizesar sequante por refero.',
'edit-conflict' => 'Konflikto di editi.',
# History pages
@@ -535,7 +601,7 @@ Voluntez konsideras separar la pagino aden plu mikra secioni.",
'currentrev' => 'Aktuala versiono',
'currentrev-asof' => 'Aktuala versiono ye $1',
'revisionasof' => 'Versiono ye $1',
-'revision-info' => 'Versiono en $1 per $2', # Additionally available: $3: revision id
+'revision-info' => 'Versiono en $1 per $2',
'previousrevision' => '←Plu anciena versiono',
'nextrevision' => 'Plu recenta versiono→',
'currentrevisionlink' => 'Aktuala versiono',
@@ -548,31 +614,36 @@ Voluntez konsideras separar la pagino aden plu mikra secioni.",
Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
'''({{int:last}})''' = diferi kun l'antea versiono,
'''{{int:minoreditletter}}''' = mikra redakto.",
-'deletedrev' => '[efacita]',
'histfirst' => 'Maxim anciena',
'histlast' => 'Maxim nova',
'historysize' => '({{PLURAL:$1|1 bicoko|$1 bicoki}})',
'historyempty' => '(vakua)',
# Revision feed
-'history-feed-item-nocomment' => '$1 ye $2', # user at time
+'history-feed-item-nocomment' => '$1 ye $2',
# Revision deletion
-'rev-deleted-comment' => '(komento forigita)',
-'rev-deleted-user' => '(uzantonomo forigita)',
-'rev-delundel' => 'montrar/celar',
-'revdelete-hide-comment' => 'Celar komento pri redakto',
-'revdelete-hide-user' => 'Celar uzantonomo od IP di redaktanto',
-'revdelete-hide-image' => 'Celar kontenajo dil arkivo',
-'revdel-restore' => 'chanjar videbleso',
-'pagehist' => 'Pagino-versionaro',
-'deletedhist' => 'Efacita versionaro',
-'revdelete-content' => 'kontenajo',
-'revdelete-summary' => 'redakto-rezumo',
-'revdelete-uname' => 'uzantonomo',
-'revdelete-hid' => 'celis $1',
-'revdelete-unhid' => 'revelis $1',
-'logdelete-log-message' => '$1 por $2 {{PLURAL:$2|evento|eventi}}',
+'rev-deleted-comment' => '(komento forigita)',
+'rev-deleted-user' => '(uzantonomo forigita)',
+'rev-delundel' => 'montrar/celar',
+'rev-showdeleted' => 'montrar',
+'revdelete-show-file-submit' => 'Yes',
+'revdelete-hide-image' => 'Celar kontenajo dil arkivo',
+'revdelete-hide-comment' => 'Celar komento pri redakto',
+'revdelete-hide-user' => 'Celar uzantonomo od IP di redaktanto',
+'revdelete-radio-set' => 'Yes',
+'revdelete-radio-unset' => 'No',
+'revdel-restore' => 'chanjar videbleso',
+'pagehist' => 'Pagino-versionaro',
+'deletedhist' => 'Efacita versionaro',
+'revdelete-content' => 'kontenajo',
+'revdelete-summary' => 'redakto-rezumo',
+'revdelete-uname' => 'uzantonomo',
+'revdelete-hid' => 'celis $1',
+'revdelete-unhid' => 'revelis $1',
+'logdelete-log-message' => '$1 por $2 {{PLURAL:$2|evento|eventi}}',
+'revdelete-otherreason' => 'Altra/suplementala motivo:',
+'revdelete-reasonotherlist' => 'Altra motivo',
# History merging
'mergehistory-reason' => 'Motivo:',
@@ -585,11 +656,7 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
'difference' => '(Diferi inter versioni)',
'lineno' => 'Lineo $1:',
'compareselectedversions' => 'Komparar selektita versioni',
-'visualcomparison' => 'Vidala komparado',
-'wikicodecomparison' => 'Wikitextala komparado',
'editundo' => 'des-facez',
-'diff-src' => 'fonto',
-'diff-with-final' => '&#32;e $1 $2',
# Search results
'searchresults' => 'Rezultaji dil sercho',
@@ -597,18 +664,18 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
'searchresulttext' => 'Por plusa informo pri quale serchar en {{SITENAME}}, videz [[{{MediaWiki:Helppage}}|help]].',
'searchsubtitle' => 'Vu serchis \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omna pagini komencanta kun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omna pagini liganta ad "$1"]])',
'searchsubtitleinvalid' => "Vu serchis '''$1'''",
-'noexactmatch' => "'''Es nula pagino titulizita \"\$1\".''' Vu darfas [[:\$1|krear ica pagino]].",
-'noexactmatch-nocreate' => "'''Es nula pagino havanta la titulo \"\$1\".'''",
'titlematches' => 'Koincidi de titulo di artiklo',
'notitlematches' => 'No esas koincidi en la tituli dil artikli',
'textmatches' => 'Koincidi de texto di artiklo',
'notextmatches' => 'Nula paginala texto fitas',
-'prevn' => 'antea $1',
-'nextn' => 'sequanta $1',
-'viewprevnext' => 'Vidar ($1) ($2) ($3).',
+'prevn' => 'antea {{PLURAL:$1|$1}}',
+'nextn' => 'sequanta {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vidar ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-new' => "'''Kreez la pagino \"[[:\$1]]\" in ca wiki!'''",
'searchhelp-url' => 'Help:Helpo',
-'searchprofile-images' => 'Arkivi',
+'searchprofile-articles' => 'Artikli',
+'searchprofile-project' => 'Helpo',
+'searchprofile-images' => "''Media''",
'searchprofile-everything' => 'Omno',
'search-result-size' => '$1 ({{PLURAL:$2|1 vorto|$2 vorti}})',
'search-result-score' => 'Importo: $1%',
@@ -623,7 +690,6 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
'searchall' => 'omna',
'showingresults' => "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.",
'showingresultsnum' => "Montrante infre {{PLURAL:$3|'''1''' rezulto|'''$3''' rezulti}}, qui komencas kun numero #'''$2'''.",
-'showingresultstotal' => "Yen {{PLURAL:$4|rezultajo '''$1''' di '''$3'''|rezultaji '''$1 - $2''' of '''$3'''}}",
'nonefound' => "'''Atencez''': Nespecigite, nur ula nomari esas serchata.
Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzanta debato-pagini, shabloni, edc.), od uzar la dezirata nomaro kom prefixo.",
'powersearch' => 'Avancita sercho',
@@ -631,68 +697,86 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
'powersearch-ns' => 'Serchez en nomari:',
'powersearch-redir' => 'Listar ridirekti',
'powersearch-field' => 'Serchar',
+'powersearch-toggleall' => 'Omna',
+'powersearch-togglenone' => 'Nula',
'search-external' => 'Extera sercho',
'searchdisabled' => 'La sercho en la kompleta texto desaktivigesis temporale pro superkargo dil servanto. Ni esperas riaktivigar ol pos facar ula proxima aktualigi. Dum ica tempo, vu povas serchar per Google.',
+# Quickbar
+'qbsettings' => 'Preferaji pri "Quickbar"',
+'qbsettings-none' => 'Nula',
+
# Preferences page
-'preferences' => 'Preferaji',
-'mypreferences' => 'Mea preferaji',
-'prefs-edits' => 'Nombro di redaktaji:',
-'prefsnologin' => 'Vu ne eniris',
-'prefsnologintext' => 'Vu mustas <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} enirir] por establisar la preferaji.',
-'prefsreset' => 'La preferaji riestablisesis da la depozeyo.',
-'qbsettings' => 'Preferaji pri "Quickbar"',
-'qbsettings-none' => 'Nula',
-'changepassword' => 'Chanjar pasovorto',
-'skin' => 'Pelo',
-'skin-preview' => 'Pre-videz',
-'math' => 'Quale montrar la formuli',
-'dateformat' => 'Formo di dato',
-'datedefault' => 'Sen prefero',
-'datetime' => 'Dato e tempo',
-'math_unknown_error' => 'nekonocata eroro',
-'math_bad_tmpdir' => 'Onu ne povas skribar o krear la tempala matematikala arkivaro',
-'math_bad_output' => 'Onu ne povas skribar o krear la arkivaro por la matematiko',
-'prefs-personal' => 'Personala informo',
-'prefs-rc' => 'Recenta chanji',
-'prefs-watchlist' => 'Surveyo-listo',
-'prefs-watchlist-days' => 'Dii montrata en surveyaji:',
-'prefs-watchlist-days-max' => '(maximo 7 dii)',
-'prefs-watchlist-edits-max' => '(maxima nombro: 1000)',
-'prefs-misc' => 'Mixaji',
-'prefs-resetpass' => 'Chanjar pasovorto',
-'saveprefs' => 'Registragar',
-'resetprefs' => 'Riestablisar preferaji',
-'textboxsize' => 'Grandeso dil areo por texto',
-'rows' => 'Linei:',
-'columns' => 'Kolumni:',
-'searchresultshead' => 'Preferaji di la rezultaji dil sercho',
-'resultsperpage' => 'Trovaji po pagino:',
-'contextlines' => 'Linei por montrar singlarezulte:',
-'contextchars' => 'Tipi di kuntexto ye singla lineo:',
-'recentchangesdays' => 'Dii montrota en la recenta chanji:',
-'recentchangescount' => 'Quanto de redakti montrota kustume en la recenta chanji, pagino-versionari e registri:',
-'savedprefs' => 'Vua preferaji registragesis.',
-'timezonelegend' => 'Tempala zono:',
-'timezonetext' => 'Vua lokala tempo diferas de tempo dil servanto (UTC).',
-'localtime' => 'Lokala tempo:',
-'timezoneselect' => 'Tempala zono:',
-'timezoneoffset' => 'Difero¹:',
-'servertime' => 'Kloko en la servanto:',
-'guesstimezone' => 'Obtenar la kloko dil "browser"',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-asia' => 'Azia',
-'timezoneregion-atlantic' => 'Atlantiko',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiana Oceano',
-'timezoneregion-pacific' => 'Pacifico',
-'allowemail' => 'Permisez e-posti de altra uzanti',
-'prefs-namespaces' => 'Nomari',
-'defaultns' => 'Serchar en la spaco-nomi omise:',
-'files' => 'Arkivi',
+'preferences' => 'Preferaji',
+'mypreferences' => 'Mea preferaji',
+'prefs-edits' => 'Nombro di redaktaji:',
+'prefsnologin' => 'Vu ne eniris',
+'prefsnologintext' => 'Vu mustas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} enirir] por establisar la preferaji.',
+'changepassword' => 'Chanjar pasovorto',
+'prefs-skin' => 'Pelo',
+'skin-preview' => 'Pre-videz',
+'prefs-math' => 'Quale montrar la formuli',
+'datedefault' => 'Sen prefero',
+'prefs-datetime' => 'Dato e tempo',
+'prefs-personal' => 'Personala informo',
+'prefs-rc' => 'Recenta chanji',
+'prefs-watchlist' => 'Surveyo-listo',
+'prefs-watchlist-days' => 'Dii montrata en surveyaji:',
+'prefs-watchlist-days-max' => '(maximo 7 dii)',
+'prefs-watchlist-edits-max' => '(maxima nombro: 1000)',
+'prefs-misc' => 'Mixaji',
+'prefs-resetpass' => 'Chanjar pasovorto',
+'prefs-rendering' => 'Aspekto',
+'saveprefs' => 'Registragar',
+'resetprefs' => 'Riestablisar preferaji',
+'prefs-editing' => 'Grandeso dil areo por texto',
+'rows' => 'Linei:',
+'columns' => 'Kolumni:',
+'searchresultshead' => 'Preferaji di la rezultaji dil sercho',
+'resultsperpage' => 'Trovaji po pagino:',
+'contextlines' => 'Linei por montrar singlarezulte:',
+'contextchars' => 'Tipi di kuntexto ye singla lineo:',
+'recentchangesdays' => 'Dii montrota en la recenta chanji:',
+'recentchangesdays-max' => 'Maximo $1 {{PLURAL:$1|dio|dii}}',
+'recentchangescount' => 'Quanto de redakti montrota kustume:',
+'prefs-help-recentchangescount' => 'Ico inkluzas recenta chanji, versionari e registri.',
+'savedprefs' => 'Vua preferaji registragesis.',
+'timezonelegend' => 'Tempala zono:',
+'localtime' => 'Lokala tempo:',
+'timezoneoffset' => 'Difero¹:',
+'servertime' => 'Kloko en la servanto:',
+'guesstimezone' => 'Obtenar la kloko dil "browser"',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-asia' => 'Azia',
+'timezoneregion-atlantic' => 'Atlantiko',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiana Oceano',
+'timezoneregion-pacific' => 'Pacifico',
+'allowemail' => 'Permisez e-posti de altra uzanti',
+'prefs-namespaces' => 'Nomari',
+'defaultns' => 'Altre serchar en ca nomari:',
+'prefs-files' => 'Arkivi',
+'youremail' => 'Vua e-adreso:',
+'username' => 'Uzantonomo:',
+'uid' => 'ID dil uzanto:',
+'prefs-memberingroups' => 'Membro di la {{PLURAL:$1|grupo|grupi}}:',
+'yourrealname' => 'Reala nomo:',
+'yourlanguage' => 'Linguo:',
+'yournick' => 'Signaturo:',
+'badsiglength' => 'Vua signaturo es tro longa.
+Ol mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.',
+'yourgender' => 'Genro:',
+'gender-unknown' => 'Nespecigita',
+'gender-male' => 'Maskula',
+'gender-female' => 'Femina',
+'email' => 'Elek-posto',
+'prefs-help-email-required' => 'E-postala adreso es bezonata.',
+'prefs-info' => 'Bazala informeso',
+'prefs-signature' => 'Signaturo',
+'prefs-diffs' => 'Diferi',
# User rights
'userrights-user-editname' => 'Skribez uzantonomo:',
@@ -740,33 +824,40 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
'action-browsearchive' => 'serchar pagini efacita',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|chanjo|chanji}}',
-'recentchanges' => 'Recenta chanji',
-'recentchanges-legend' => 'Recenta chanji preferaji',
-'recentchangestext' => 'Regardez la maxim recenta chanji en Wiki per ica pagino.',
-'rcnote' => "Infre esas la lasta {{PLURAL:$1|'''1''' chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|dio|'''$2''' dii}} ye $5, $4.",
-'rcnotefrom' => "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').",
-'rclistfrom' => 'Montrar nova chanji startante de $1',
-'rcshowhideminor' => '$1 mikra redakti',
-'rcshowhidebots' => '$1 roboti',
-'rcshowhideliu' => '$1 enirinta uzanti',
-'rcshowhideanons' => '$1 anonima uzanti',
-'rcshowhidemine' => '$1 mea redakti',
-'rclinks' => 'Montrar la lasta $1 chanji dum la lasta $2 dii<br />$3',
-'diff' => 'dif',
-'hist' => 'vers',
-'hide' => 'Celar',
-'show' => 'Montrar',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'r',
-'rc_categories_any' => 'Ula',
-'newsectionsummary' => '/* $1 */ nova seciono',
-'rc-enhanced-expand' => 'Montrar detali (JavaScript bezonesas)',
-'rc-enhanced-hide' => 'Celar detali',
+'nchanges' => '$1 {{PLURAL:$1|chanjo|chanji}}',
+'recentchanges' => 'Recenta chanji',
+'recentchanges-legend' => 'Recenta chanji preferaji',
+'recentchangestext' => 'Regardez la maxim recenta chanji en Wiki per ica pagino.',
+'recentchanges-legend-newpage' => '$1 - nova pagino',
+'recentchanges-label-newpage' => 'Ca redaktajo kreis nova pagino',
+'recentchanges-legend-minor' => '$1 - mikra redaktajo',
+'recentchanges-label-minor' => 'Ica es mikra redaktajo',
+'recentchanges-legend-bot' => '$1 - redakto da roboto',
+'rcnote' => "Infre esas la lasta {{PLURAL:$1|'''1''' chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|dio|'''$2''' dii}} ye $5, $4.",
+'rcnotefrom' => "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').",
+'rclistfrom' => 'Montrar nova chanji startante de $1',
+'rcshowhideminor' => '$1 mikra redakti',
+'rcshowhidebots' => '$1 roboti',
+'rcshowhideliu' => '$1 enirinta uzanti',
+'rcshowhideanons' => '$1 anonima uzanti',
+'rcshowhidemine' => '$1 mea redakti',
+'rclinks' => 'Montrar la lasta $1 chanji dum la lasta $2 dii<br />$3',
+'diff' => 'dif',
+'hist' => 'vers',
+'hide' => 'Celar',
+'show' => 'Montrar',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'r',
+'rc_categories_any' => 'Ula',
+'newsectionsummary' => '/* $1 */ nova seciono',
+'rc-enhanced-expand' => 'Montrar detali (JavaScript bezonesas)',
+'rc-enhanced-hide' => 'Celar detali',
# Recent changes linked
'recentchangeslinked' => 'Relatanta chanji',
+'recentchangeslinked-feed' => 'Relatanta chanji',
+'recentchangeslinked-toolbox' => 'Relatanta chanji',
'recentchangeslinked-title' => 'Chanji pri "$1"',
'recentchangeslinked-summary' => "Co esas listo di recenta chanji ad pagini ligita da specigita pagino, od pagini en specigita kategorio.
Pagini en [[Special:Watchlist|vua surveryo-listo]] esas '''dika'''.",
@@ -776,7 +867,6 @@ Pagini en [[Special:Watchlist|vua surveryo-listo]] esas '''dika'''.",
# Upload
'upload' => 'Adkargar arkivo',
'uploadbtn' => 'Adkargar arkivo',
-'reupload' => 'Ri-adkargar',
'reuploaddesc' => 'Retrovenar al adkargo-formularo.',
'uploadnologin' => 'Vu ne eniris',
'uploadnologintext' => 'Vu mustas [[Special:UserLogin|enirir]] por adkargar arkivi.',
@@ -812,6 +902,7 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'listfiles_count' => 'Versioni',
# File description page
+'file-anchor-link' => 'Failo',
'filehist' => 'Historio dil arkivo',
'filehist-help' => 'Kliktez sur la dato/horo por vidar arkivo quale ol aparis ye ta tempo.',
'filehist-deleteall' => 'efacar omno',
@@ -819,6 +910,7 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'filehist-current' => 'aktuala',
'filehist-datetime' => 'Dato/Horo',
'filehist-thumb' => 'Imajeto',
+'filehist-thumbtext' => 'Imajeto di versiono ye $1',
'filehist-user' => 'Uzanto',
'filehist-dimensions' => 'Dimensioni',
'filehist-filesize' => 'Grandeso dil arkivo',
@@ -826,9 +918,9 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'imagelinks' => 'Ligili al arkivo',
'linkstoimage' => 'La {{PLURAL:$1|pagino|$1 pagini}} infre ligas a ca arkivo:',
'nolinkstoimage' => 'Nula pagino ligas a ca pagino.',
-'sharedupload' => 'Ca arkivo esas de $1 e posible esas uzata da altra projekti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Ca arkivo esas de $1 e posible esas uzata da altra projekti.',
'uploadnewversion-linktext' => 'Adkargez nova versiono dil arkivo',
-'shared-repo-from' => 'ek $1', # $1 is the repository name
+'shared-repo-from' => 'ek $1',
# File reversion
'filerevert-comment' => 'Motivo:',
@@ -861,6 +953,7 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
# Statistics
'statistics' => 'Statistiko',
'statistics-header-users' => 'Statistiki di uzanto',
+'statistics-header-hooks' => 'Altra statistiki',
'statistics-pages' => 'Pagini',
'statistics-mostpopular' => 'Maxim ofte vizitita pagini',
@@ -870,8 +963,8 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'brokenredirects' => 'Ridirektili nekorekta',
'brokenredirectstext' => 'La sequanta ridirektili ligas a ne-existanta pagini:',
-'brokenredirects-edit' => '(redaktar)',
-'brokenredirects-delete' => '(efacar)',
+'brokenredirects-edit' => 'redaktar',
+'brokenredirects-delete' => 'efacar',
'withoutinterwiki' => 'Pagini sen linguo-ligili',
'withoutinterwiki-legend' => 'Prefixo',
@@ -956,6 +1049,9 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
# Special:ListUsers
'listusers-submit' => 'Montrez',
+# Special:ActiveUsers
+'activeusers-noresult' => 'Nula uzanto trovesis.',
+
# Special:Log/newusers
'newuserlogpage' => 'Uzanto-kreo-registro',
'newuserlog-create-entry' => 'Nova uzanto',
@@ -1049,8 +1145,8 @@ Videz $2 por obtenar registro di recenta efaci.',
ulu pluse ja redaktis o retrorulis ica pagino.
La lasta chanjo a la pagino esis da [[User:$3|$3]] ([[User talk:$3|Diskutez]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "La rezumo di la redakto esis: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Desfacita redakti da [[Special:Contributions/$2|$2]] ([[User talk:$2|Debato]]) e rekuperita la lasta redakto da [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "La rezumo di la redakto esis: \"''\$1''\".",
+'revertpage' => 'Desfacita redakti da [[Special:Contributions/$2|$2]] ([[User talk:$2|Debato]]) e rekuperita la lasta redakto da [[User:$1|$1]]',
'rollback-success' => 'Desfacis redakti da $1;
restauris ad lasta versiono da $2.',
@@ -1075,7 +1171,7 @@ restauris ad lasta versiono da $2.',
'protect-othertime-op' => 'altra tempo',
'protect-otherreason' => 'Altra/suplementala motivo:',
'protect-otherreason-op' => 'Altra motivo',
-'protect-expiry-options' => '1 horo:1 hour,1 dio:1 day,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 horo:1 hour,1 dio:1 day,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite',
'restriction-type' => 'Permiso:',
'pagesize' => '(bicoki)',
@@ -1108,7 +1204,7 @@ restauris ad lasta versiono da $2.',
'contributions-title' => 'Uzanto-kontributadi di $1',
'mycontris' => 'Mea kontributadi',
'contribsub2' => 'Pro $1 ($2)',
-'nocontribs' => 'Ne trovesis chanji qui fitez ita kriterii.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ne trovesis chanji qui fitez ita kriterii.',
'uctop' => ' (lasta modifiko)',
'month' => 'De monato (e plu frue):',
'year' => 'De yaro (e plu frue):',
@@ -1116,6 +1212,8 @@ restauris ad lasta versiono da $2.',
'sp-contributions-newbies' => 'Montrez nur kontributadi di nova konti',
'sp-contributions-newbies-sub' => 'Di nova konti',
'sp-contributions-blocklog' => 'blokusar-registraro',
+'sp-contributions-deleted' => 'efacita uzanto-kontributadi',
+'sp-contributions-talk' => 'diskutez',
'sp-contributions-search' => 'Serchar kontributadi',
'sp-contributions-username' => 'IP-adreso od uzantonomo:',
'sp-contributions-submit' => 'Serchez',
@@ -1157,7 +1255,7 @@ restauris ad lasta versiono da $2.',
'ipbcreateaccount' => 'Preventez kreo di konti',
'ipbsubmit' => 'Blokusar ica uzanto',
'ipbother' => 'Altra tempo:',
-'ipboptions' => '2 horo:2 hours,1 dio:1 day,3 dii:3 days,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horo:2 hours,1 dio:1 day,3 dii:3 days,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite',
'ipbotheroption' => 'altra',
'ipbotherreason' => 'Altra/suplementala motivo:',
'badipaddress' => 'IP-adreso ne esas valida',
@@ -1219,7 +1317,7 @@ voluntez certigar ke vu komprenas la konsequi qui eventos ante durar adavane.",
'move-watch' => 'Surveyar ca pagino',
'movepagebtn' => 'Movar pagino',
'pagemovedsub' => 'Rinomizita sucese',
-'movepage-moved' => '\'\'\'"$1" esas movata ad "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" esas movata ad "$2"\'\'\'',
'articleexists' => 'Pagino kun sama nomo ja existas od la nomo
qua vu selektis ne esas valida.
Voluntez selektar altra nomo.',
@@ -1240,10 +1338,11 @@ Voluntez selektar altra nomo.',
'export-addcat' => 'Adjuntar',
# Namespace 8 related
-'allmessages' => 'Omna sistemo-mesaji',
-'allmessagesname' => 'Nomo',
-'allmessagestext' => 'Ico esas listo di omna sistemo-mesaji disponebla en la MediaWiki nomaro.
+'allmessages' => 'Omna sistemo-mesaji',
+'allmessagesname' => 'Nomo',
+'allmessagestext' => 'Ico esas listo di omna sistemo-mesaji disponebla en la MediaWiki nomaro.
Voluntez vizitar [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokizado] e [http://translatewiki.net translatewiki.net] se vu volus kontributar ad generala MediaWiki lokizado.',
+'allmessages-language' => 'Linguo:',
# Thumbnails
'thumbnail-more' => 'Grandigar',
@@ -1281,6 +1380,7 @@ Voluntez vizitar [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokizado]
'tooltip-search-fulltext' => 'Serchez ca texto en la pagini',
'tooltip-p-logo' => 'Frontispico',
'tooltip-n-mainpage' => 'Vizitez la Frontispico',
+'tooltip-n-mainpage-description' => 'Vizitez la frontispico',
'tooltip-n-portal' => 'Pri la projeto, quon vu facus, ube trovus utilaji',
'tooltip-n-currentevents' => 'Trovez informeco pri aktuala eventi',
'tooltip-n-recentchanges' => 'Listo di recenta chanji en la wiki.',
@@ -1322,7 +1422,7 @@ Vu darfos adjuntar kauso en la rezumo.',
# Attribution
'anonymous' => 'Anonima {{PLURAL:$1|uzanto|uzanti}} di {{SITENAME}}',
'siteuser' => 'Uzanto che {{SITENAME}} $1',
-'lastmodifiedatby' => 'Ica pagino modifikesis ye $2, $1 da $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ica pagino modifikesis ye $2, $1 da $3.',
'othercontribs' => 'Bazizita en la laboro da $1.',
'others' => 'altra',
'siteusers' => '{{PLURAL:$2|Uzanto|Uzanti}} che {{SITENAME}} $1',
@@ -1335,6 +1435,11 @@ Vu darfos adjuntar kauso en la rezumo.',
'numwatchers' => 'Quanto di vizitanti: $1',
'numauthors' => 'Quanto di aparta autori (pagino): $1',
+# Math errors
+'math_unknown_error' => 'nekonocata eroro',
+'math_bad_tmpdir' => 'Onu ne povas skribar o krear la tempala matematikala arkivaro',
+'math_bad_output' => 'Onu ne povas skribar o krear la arkivaro por la matematiko',
+
# Patrol log
'patrol-log-auto' => '(automata)',
@@ -1342,9 +1447,6 @@ Vu darfos adjuntar kauso en la rezumo.',
'previousdiff' => '← Plu anciena versiono',
'nextdiff' => 'Plu recenta versiono →',
-# Visual comparison
-'visual-comparison' => 'Vidala komparado',
-
# Media information
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagino|pagini}}',
'file-nohires' => '<small>Ne existas grandeso plu granda.</small>',
@@ -1373,7 +1475,7 @@ Vu darfos adjuntar kauso en la rezumo.',
'exif-unknowndate' => 'Nesavata dato',
-'exif-orientation-1' => 'Normala', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normala',
'exif-exposureprogram-1' => 'Manuala',
@@ -1393,7 +1495,7 @@ Vu darfos adjuntar kauso en la rezumo.',
'exif-sharpness-0' => 'Normala',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometri per horo',
'exif-gpsspeed-m' => 'Milii per horo',
@@ -1454,10 +1556,10 @@ Vu darfos adjuntar kauso en la rezumo.',
'watchlisttools-raw' => 'Redaktar texto di surveyo-listo',
# Special:Version
-'version' => 'Versiono', # Not used as normal message but as header for the special page itself
+'version' => 'Versiono',
'version-specialpages' => 'Specala pagini',
'version-other' => 'Altra',
-'version-version' => 'Versiono',
+'version-version' => '(Versiono $1)',
'version-license' => 'Licenco',
'version-software-product' => 'Produkturo',
'version-software-version' => 'Versiono',
@@ -1489,4 +1591,8 @@ Vu darfos adjuntar kauso en la rezumo.',
# Database error messages
'dberr-header' => 'Ta wiki havas problemo',
+# HTML forms
+'htmlform-reset' => 'Desfacar chanji',
+'htmlform-selectorother-other' => 'Altra',
+
);
diff --git a/languages/messages/MessagesIs.php b/languages/messages/MessagesIs.php
index 75bdcd33..5d0681d3 100644
--- a/languages/messages/MessagesIs.php
+++ b/languages/messages/MessagesIs.php
@@ -77,55 +77,54 @@ $dateFormats = array(
);
$magicWords = array(
- 'redirect' => array( 0, "#tilvísun", "#TILVÍSUN", "#REDIRECT" ),
- 'nogallery' => array( 0, "__EMSAFN__", "__NOGALLERY__" ),
- 'currentday' => array( 1, "NÚDAGUR", "CURRENTDAY" ),
- 'currentday2' => array( 1, "NÚDAGUR2", "CURRENTDAY2" ),
- 'currentdayname' => array( 1, "NÚDAGNAFN", "CURRENTDAYNAME" ),
- 'currentyear' => array( 1, "NÚÁR", "CURRENTYEAR" ),
- 'currenttime' => array( 1, "NÚTÍMI", "CURRENTTIME" ),
- 'currenthour' => array( 1, "NÚKTÍMI", "CURRENTHOUR" ),
- 'localmonth' => array( 1, "STMÁN", "LOCALMONTH" ),
- 'localmonthname' => array( 1, "STMÁNNAFN", "LOCALMONTHNAME" ),
- 'localmonthabbrev' => array( 1, "STMÁNST", "LOCALMONTHABBREV" ),
- 'localday' => array( 1, "STDAGUR", "LOCALDAY" ),
- 'localday2' => array( 1, "STDAGUR2", "LOCALDAY2" ),
- 'localdayname' => array( 1, "STDAGNAFN", "LOCALDAYNAME" ),
- 'localyear' => array( 1, "STÁR", "LOCALYEAR" ),
- 'localtime' => array( 1, "STTÍMI", "LOCALTIME" ),
- 'localhour' => array( 1, "STKTÍMI", "LOCALHOUR" ),
- 'numberofpages' => array( 1, "FJLSÍÐA", "NUMBEROFPAGES" ),
- 'numberofarticles' => array( 1, "FJLGREINA", "NUMBEROFARTICLES" ),
- 'numberoffiles' => array( 1, "FJLSKJALA", "NUMBEROFFILES" ),
- 'numberofusers' => array( 1, "FJLNOT", "NUMBEROFUSERS" ),
- 'numberofedits' => array( 1, "FJLBREYT", "NUMBEROFEDITS" ),
- 'pagename' => array( 1, "SÍÐUNAFN", "PAGENAME" ),
- 'namespace' => array( 1, "NAFNSVÆÐI", "NAMESPACE" ),
- 'talkspace' => array( 1, "SPJALLSVÆÐI", "TALKSPACE" ),
- 'fullpagename' => array( 1, "FULLTSÍÐUNF", "FULLPAGENAME" ),
- 'img_manualthumb' => array( 1, "þumall", "thumbnail=$1", "thumb=$1" ),
- 'img_right' => array( 1, "hægri", "right" ),
- 'img_left' => array( 1, "vinstri", "left" ),
- 'img_none' => array( 1, "engin", "none" ),
- 'img_width' => array( 1, "$1dp", "$1px" ),
- 'img_center' => array( 1, "miðja", "center", "centre" ),
- 'img_sub' => array( 1, "undir", "sub" ),
- 'img_super' => array( 1, "yfir", "super", "sup" ),
- 'img_top' => array( 1, "efst", "top" ),
- 'img_middle' => array( 1, "miðja", "middle" ),
- 'img_bottom' => array( 1, "neðst", "bottom" ),
- 'img_text_bottom' => array( 1, "texti-neðst", "text-bottom" ),
- 'ns' => array( 0, "NR:", "NS:" ),
- 'server' => array( 0, "VEFÞJ", "SERVER" ),
- 'servername' => array( 0, "VEFÞJNF", "SERVERNAME" ),
- 'grammar' => array( 0, "MÁLFRÆÐI:", "GRAMMAR:" ),
- 'currentweek' => array( 1, "NÚVIKA", "CURRENTWEEK" ),
- 'localweek' => array( 1, "STVIKA", "LOCALWEEK" ),
- 'plural' => array( 0, "FLTALA:", "PLURAL:" ),
- 'raw' => array( 0, "HRÁ:", "RAW:" ),
- 'displaytitle' => array( 1, "SÝNATITIL", "DISPLAYTITLE" ),
- 'language' => array( 0, "#TUNGUMÁL", "#LANGUAGE:" ),
- 'special' => array( 0, "kerfissíða", "special" ),
+ 'redirect' => array( '0', '#tilvísun', '#TILVÍSUN', '#REDIRECT' ),
+ 'nogallery' => array( '0', '__EMSAFN__', '__NOGALLERY__' ),
+ 'currentday' => array( '1', 'NÚDAGUR', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'NÚDAGUR2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NÚDAGNAFN', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'NÚÁR', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'NÚTÍMI', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'NÚKTÍMI', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'STMÁN', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'STMÁNNAFN', 'LOCALMONTHNAME' ),
+ 'localmonthabbrev' => array( '1', 'STMÁNST', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'STDAGUR', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'STDAGUR2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'STDAGNAFN', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'STÁR', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'STTÍMI', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'STKTÍMI', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'FJLSÍÐA', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'FJLGREINA', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'FJLSKJALA', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'FJLNOT', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'FJLBREYT', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'SÍÐUNAFN', 'PAGENAME' ),
+ 'namespace' => array( '1', 'NAFNSVÆÐI', 'NAMESPACE' ),
+ 'talkspace' => array( '1', 'SPJALLSVÆÐI', 'TALKSPACE' ),
+ 'fullpagename' => array( '1', 'FULLTSÍÐUNF', 'FULLPAGENAME' ),
+ 'img_manualthumb' => array( '1', 'þumall', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'hægri', 'right' ),
+ 'img_left' => array( '1', 'vinstri', 'left' ),
+ 'img_none' => array( '1', 'engin', 'none' ),
+ 'img_width' => array( '1', '$1dp', '$1px' ),
+ 'img_center' => array( '1', 'miðja', 'center', 'centre' ),
+ 'img_sub' => array( '1', 'undir', 'sub' ),
+ 'img_super' => array( '1', 'yfir', 'super', 'sup' ),
+ 'img_top' => array( '1', 'efst', 'top' ),
+ 'img_bottom' => array( '1', 'neðst', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'texti-neðst', 'text-bottom' ),
+ 'ns' => array( '0', 'NR:', 'NS:' ),
+ 'server' => array( '0', 'VEFÞJ', 'SERVER' ),
+ 'servername' => array( '0', 'VEFÞJNF', 'SERVERNAME' ),
+ 'grammar' => array( '0', 'MÁLFRÆÐI:', 'GRAMMAR:' ),
+ 'currentweek' => array( '1', 'NÚVIKA', 'CURRENTWEEK' ),
+ 'localweek' => array( '1', 'STVIKA', 'LOCALWEEK' ),
+ 'plural' => array( '0', 'FLTALA:', 'PLURAL:' ),
+ 'raw' => array( '0', 'HRÁ:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'SÝNATITIL', 'DISPLAYTITLE' ),
+ 'language' => array( '0', '#TUNGUMÁL', '#LANGUAGE:' ),
+ 'special' => array( '0', 'kerfissíða', 'special' ),
);
$specialPageAliases = array(
@@ -247,6 +246,7 @@ $messages = array(
'tog-enotifminoredits' => 'Senda mér einnig tölvupóst vegna minniháttar breytinga á síðum',
'tog-enotifrevealaddr' => 'Gefa upp netfang mitt í tilkynningarpóstum',
'tog-shownumberswatching' => 'Sýna fjölda vaktandi notenda',
+'tog-oldsig' => 'Undirskrift þín eins og hún er núna:',
'tog-fancysig' => 'Taka undirskrift sem wikitexti (án sjálfkrafa tengils)',
'tog-externaleditor' => 'Nota utanaðkomandi ritil sjálfgefið (eingöngu fyrir reynda, þarfnast sérstakra stillinga á tölvunni þinni)',
'tog-externaldiff' => 'Nota utanaðkomandi mismun sjálfgefið (eingöngu fyrir reynda, þarfnast sérstakra stillinga á tölvunni þinni)',
@@ -326,7 +326,7 @@ $messages = array(
'category-media-header' => 'Margmiðlunarefni í flokknum „$1“',
'category-empty' => "''Þessi flokkur inniheldur engar síður eða margmiðlunarefni.''",
'hidden-categories' => '{{PLURAL:$1|Falinn flokkur|Faldir flokkar}}',
-'hidden-category-category' => 'Faldir flokkar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Faldir flokkar',
'category-subcat-count' => '{{PLURAL:$2|Þessi flokkur hefur einungis eftirfarandi undirflokk.|Þessi flokkur hefur eftirfarandi {{PLURAL:$1|undirflokk|$1 undirflokka}}, af alls $2.}}',
'category-subcat-count-limited' => 'Þessi flokkur hefur eftirfarandi {{PLURAL:$1|undirflokk|$1 undirflokka}}.',
'category-article-count' => '{{PLURAL:$2|Þessi flokkur inniheldur aðeins eftirfarandi síðu.|Eftirfarandi {{PLURAL:$1|síða er|síður eru}} í þessum flokki, af alls $1.}}',
@@ -345,10 +345,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Algengar spurningar MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Póstlisti MediaWiki-útgáfa]',
-'about' => 'Um',
-'article' => 'Efnissíða',
-'newwindow' => '(opnast í nýjum glugga)',
-'cancel' => 'Hætta við',
+'about' => 'Um',
+'article' => 'Efnissíða',
+'newwindow' => '(opnast í nýjum glugga)',
+'cancel' => 'Hætta við',
+'moredotdotdot' => 'Meira...',
+'mypage' => 'Mín síða',
+'mytalk' => 'Spjall',
+'anontalk' => 'Spjallsíða þessa vistfangs.',
+'navigation' => 'Flakk',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Finna',
'qbbrowse' => 'Flakka',
'qbedit' => 'Breyta',
@@ -356,15 +364,31 @@ $messages = array(
'qbpageinfo' => 'Samhengi',
'qbmyoptions' => 'Mínar síður',
'qbspecialpages' => 'Kerfissíður',
-'moredotdotdot' => 'Meira...',
-'mypage' => 'Mín síða',
-'mytalk' => 'Spjall',
-'anontalk' => 'Spjallsíða þessa vistfangs.',
-'navigation' => 'Flakk',
-'and' => '&#32;og',
-
-# Metadata in edit box
-'metadata_help' => 'Lýsigögn:',
+'faq' => 'Algengar spurningar',
+'faqpage' => 'Project:Algengar spurningar',
+
+# Vector skin
+'vector-action-addsection' => 'Bæta við umræðu',
+'vector-action-delete' => 'Eyða',
+'vector-action-move' => 'Færa',
+'vector-action-protect' => 'Vernda',
+'vector-action-unprotect' => 'Afvernda',
+'vector-namespace-category' => 'Flokkur',
+'vector-namespace-help' => 'Hjálparsíða',
+'vector-namespace-image' => 'Skrá',
+'vector-namespace-main' => 'Síða',
+'vector-namespace-mediawiki' => 'Melding',
+'vector-namespace-project' => 'Verkefnissíða',
+'vector-namespace-special' => 'Kerfissíða',
+'vector-namespace-talk' => 'Umræða',
+'vector-namespace-template' => 'Snið',
+'vector-namespace-user' => 'Notandasíða',
+'vector-view-create' => 'Skapa',
+'vector-view-edit' => 'Breyta',
+'vector-view-history' => 'Breytingaskrá',
+'vector-view-view' => 'Lesa',
+'vector-view-viewsource' => 'Sýna frumkóða',
+'namespaces' => 'Nafnrými',
'errorpagetitle' => 'Villa',
'returnto' => 'Aftur á: $1.',
@@ -414,7 +438,7 @@ $messages = array(
'otherlanguages' => 'Á öðrum tungumálum',
'redirectedfrom' => '(Tilvísað frá $1)',
'redirectpagesub' => 'Tilvísunarsíða',
-'lastmodifiedat' => 'Þessari síðu var síðast breytt $1 klukkan $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Þessari síðu var síðast breytt $1 klukkan $2.',
'viewcount' => 'Þessi síða hefur verið skoðuð {{PLURAL:$1|einu sinni|$1 sinnum}}.',
'protectedpage' => 'Vernduð síða',
'jumpto' => 'Stökkva á:',
@@ -425,7 +449,6 @@ $messages = array(
'aboutsite' => 'Um {{SITENAME}}',
'aboutpage' => 'Project:Um',
'copyright' => 'Efni má nota samkvæmt $1.',
-'copyrightpagename' => 'Höfundarréttarreglum {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Höfundarréttur',
'currentevents' => 'Potturinn',
'currentevents-url' => 'Project:Potturinn',
@@ -433,8 +456,6 @@ $messages = array(
'disclaimerpage' => 'Project:Almennur fyrirvari',
'edithelp' => 'Breytingarhjálp',
'edithelppage' => 'Help:Breyta',
-'faq' => 'Algengar spurningar',
-'faqpage' => 'Project:Algengar spurningar',
'helppage' => 'Help:Efnisyfirlit',
'mainpage' => 'Forsíða',
'mainpage-description' => 'Forsíða',
@@ -511,10 +532,6 @@ Síðasta gagnagrunnsfyrirspurnin var:
„$1“
úr aðgerðinni: „$2“.
MySQL skilar villuboðanum „$3: $4“',
-'noconnect' => 'Því miður! Þessi wiki á við tæknilega örðugleika að stríða, og nær ekki sambandi við gagnagrunnsvefþjóninn. <br />
-$1',
-'nodb' => 'Gat ekki valið gagnagrunn $1',
-'cachederror' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar:',
'laggedslavemode' => 'Viðvörun: Síðan inniheldur ekki nýjustu uppfærslur.',
'readonly' => 'Gagnagrunnur læstur',
'enterlockreason' => 'Gefðu fram ástæðu fyrir læsingunni, og einnig áætlun
@@ -533,6 +550,7 @@ Gjörðu svo vel og tilkynntu atvikið til [[Special:ListUsers/sysop|stjórnanda
'readonly_lag' => 'Gagnagrunninum hefur verið læst sjálfkrafa á meðan undirvefþjónarnir reyna að hafa í við aðalvefþjóninn',
'internalerror' => 'Kerfisvilla',
'internalerror_info' => 'Innri villa: $1',
+'fileappenderror' => 'Gat ekki bætt „$1“ við „$2“.',
'filecopyerror' => 'Gat ekki afritað skjal "$1" á "$2".',
'filerenameerror' => 'Gat ekki endurnefnt skrána „$1“ í „$2“.',
'filedeleteerror' => 'Gat ekki eytt skránni „$1“.',
@@ -576,7 +594,6 @@ $2',
'virus-unknownscanner' => 'óþekkt mótveira:',
# Login and logout pages
-'logouttitle' => 'Útskráning notanda',
'logouttext' => "'''Þú hefur verið skráð(ur) út.'''
Þú getur haldið áfram að nota {{SITENAME}} óþekkt(ur), eða þú getur [[Special:UserLogin|skráð þig inn aftur]] sem sami eða annar notandi.
@@ -584,7 +601,6 @@ Athugaðu að sumar síður kunna að birtast líkt og þú sért ennþá skrá
'welcomecreation' => '== Velkomin(n), $1! ==
Aðgangurinn þinn hefur verið búinn til.
Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum.',
-'loginpagetitle' => 'Innskráning notanda',
'yourname' => 'Notandanafn:',
'yourpassword' => 'Lykilorð:',
'yourpasswordagain' => 'Endurrita lykilorð:',
@@ -594,6 +610,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
'nav-login-createaccount' => 'Innskrá / Búa til aðgang',
'loginprompt' => 'Þú verður að leyfa vefkökur til þess að geta skráð þig inn á {{SITENAME}}.',
'userlogin' => 'Innskrá / Búa til aðgang',
+'userloginnocreate' => 'Innskrá',
'logout' => 'Útskráning',
'userlogout' => 'Útskrá',
'notloggedin' => 'Ekki innskráð(ur)',
@@ -605,29 +622,8 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
'createaccountmail' => 'með tölvupósti',
'badretype' => 'Lykilorðin sem þú skrifaðir eru ekki eins.',
'userexists' => 'Þetta notandanafn er þegar í notkun. Vinsamlegast veldu þér annað.',
-'youremail' => 'Netfang:',
-'username' => 'Notandanafn:',
-'uid' => 'Raðnúmer:',
-'prefs-memberingroups' => 'Meðlimur {{PLURAL:$1|hóps|hópa}}:',
-'yourrealname' => 'Fullt nafn:',
-'yourlanguage' => 'Viðmótstungumál:',
-'yourvariant' => 'Útgáfa:',
-'yournick' => 'Undirskrift:',
-'badsig' => 'Ógild hrá undirskrift. Athugaðu HTML-kóða.',
-'badsiglength' => 'Undirskriftin er of löng.
-Hún þarf að vera færri en $1 {{PLURAL:$1|rittákn|rittákn}}.',
-'yourgender' => 'Kyn:',
-'gender-unknown' => 'Óskilgreint',
-'gender-male' => 'Karl',
-'gender-female' => 'Kona',
-'prefs-help-gender' => 'Valfrjálst: notað til að aðgreina kynin í meldingum hugbúnaðarins. Þessar upplýsingar verða aðgengilegar öllum.',
-'email' => 'Tölvupóstur',
-'prefs-help-realname' => 'Alvöru nafn er valfrjálst.
-Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.',
'loginerror' => 'Innskráningarvilla',
-'prefs-help-email' => 'Tölvupóstfang er valfrjálst, en gerir það kleift að fá nýtt lykilorð sent ef þú gleymir lykilorðinu þínu.
-Þú getur einnig leyft öðrum að hafa samband við þig á notanda- eða spjallsíðunni þinni án þess að opinbera þig.',
-'prefs-help-email-required' => 'Þörf er á netfangi.',
+'createaccounterror' => 'Gat ekki búið til notanda: $1',
'nocookiesnew' => 'Innskráningin var búin til, en þú ert ekki skráð(ur) inn.
{{SITENAME}} notar vefkökur til að skrá inn notendur.
Þú hefur lokað fyrir vefkökur.
@@ -644,6 +640,7 @@ Athugaðu stafsetning, eða [[Special:UserLogin/signup|búðu til aðgang]].',
'wrongpasswordempty' => 'Lykilorðsreiturinn var auður. Vinsamlegast reyndu aftur.',
'passwordtooshort' => 'Lykilorðið þitt er ógilt eða of stutt.
Það verður að hafa að minnsta kosti {{PLURAL:$1|1 rittákn|$1 rittákn}} og einnig frábrugðið notandanafninu þínu.',
+'password-name-match' => 'Þarf að lykilorð þitt sé öðruvísi notandanafni þínu',
'mailmypassword' => 'Senda nýtt lykilorð með tölvupósti',
'passwordremindertitle' => 'Nýtt tímabundið aðgangsorð fyrir {{SITENAME}}',
'passwordremindertext' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um að fá nýtt
@@ -655,6 +652,7 @@ Ef einhver annar fór fram á þessa beiðni, eða ef þú mannst lykilorðið
og vilt ekki lengur breyta því, skaltu hunsa þetta skilaboð og
halda áfram að nota gamla lykilorðið.',
'noemail' => 'Það er ekkert netfang skráð fyrir notandan "$1".',
+'noemailcreate' => 'Þú verður að skrá gilt netfang',
'passwordsent' => 'Nýtt lykilorð var sent á netfangið sem er skráð á „$1“.
Vinsamlegast skráðu þig inn á ný þegar þú hefur móttekið það.',
'blocked-mailpassword' => 'Þér er ekki heimilt að gera breytingar frá þessu netfangi og því getur þú ekki fengið nýtt lykilorð í pósti. Þetta er gert til þess að koma í veg fyrir skemmdarverk.',
@@ -692,8 +690,6 @@ Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hé
'retypenew' => 'Endurtaktu nýja lykilorðið:',
'resetpass_submit' => 'Skrifaðu aðgangsorðið og skráðu þig inn',
'resetpass_success' => 'Aðgangsorðinu þínu hefur verið breytt! Skráir þig inn...',
-'resetpass_bad_temporary' => 'Ógilt tímabundið lykilorð.
-Það kann að vera að þér hafi nú þegar tekist að breyta lykilorðinu þínu eða fengið nýtt tímabundið lykilorð.',
'resetpass_forbidden' => 'Ekki er hægt að breyta lykilorðum',
'resetpass-submit-loggedin' => 'Breyta lykilorði',
'resetpass-temp-password' => 'Tímabundið lykilorð:',
@@ -772,7 +768,6 @@ Vinsamlegast tilgreindu allt að ofanverðu í fyrirspurnum þínum.",
'blockededitsource' => "Texti '''þinna breytinga''' á '''$1''' eru sýndar að neðan:",
'whitelistedittitle' => 'Innskráningar er þörf til að breyta',
'whitelistedittext' => 'Þú þarft að $1 til að breyta síðum.',
-'confirmedittitle' => 'Netfang þarf að staðfesta til að breyta',
'confirmedittext' => 'Þú verður að staðfesta netfangið þitt áður en þú getur breytt síðum. Vinsamlegast stilltu og staðfestu netfangið þitt í gegnum [[Special:Preferences|stillingarnar]].',
'nosuchsectiontitle' => 'Hluti ekki til',
'nosuchsectiontext' => 'Það hefur komið upp villa.',
@@ -800,7 +795,8 @@ Gjörðu svo vel og athugaðu hvort að þú viljir skapa/breyta þessari síðu
'''Konqueror: '''smelltu á ''Reload'' eða ýttu á ''F5'';
'''Opera:''' hreinsaðu skyndiminnið í ''Tools → Prefernces'';
'''Internet Explorer:''' haltu ''Ctrl'' og smelltu á ''Refresh'', eða ýttu á ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Ath:''' Hægt er að nota „Forskoða“ hnappinn til að prófa CSS og JavaScript-kóða áður en hann er vistaður.",
+'usercssyoucanpreview' => "'''Ath:''' Hægt er að nota „Forskoða“ hnappinn til að prófa CSS og JavaScript-kóða áður en hann er vistaður.",
+'userjsyoucanpreview' => "'''Ath:''' Hægt er að nota „Forskoða“ hnappinn til að prófa CSS og JavaScript-kóða áður en hann er vistaður.",
'usercsspreview' => "'''Mundu að þú ert aðeins að forskoða CSS-kóðann þinn.'''
'''Hann hefur ekki enn verið vistaður!'''",
'userjspreview' => "'''Mundu að þú ert aðeins að prófa/forskoða JavaScript-kóðann þinn.'''
@@ -837,8 +833,8 @@ Stjórnandinn sem læsti honum gaf þessa skýringu: $1",
'protectedpagewarning' => "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''",
'semiprotectedpagewarning' => "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.",
'titleprotectedwarning' => "'''VIÐVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''",
-'templatesused' => 'Snið notuð á þessari síðu:',
-'templatesusedpreview' => 'Snið notuð í forskoðuninni:',
+'templatesused' => 'Snið {{PLURAL:$1|notað|notuð}} á þessari síðu:',
+'templatesusedpreview' => 'Snið {{PLURAL:$1|notað|notuð}} í forskoðuninni:',
'templatesusedsection' => 'Snið notuð á hlutanum:',
'template-protected' => '(vernduð)',
'template-semiprotected' => '(hálfvernduð)',
@@ -850,13 +846,12 @@ Stjórnandinn sem læsti honum gaf þessa skýringu: $1",
'permissionserrors' => 'Leyfisvillur',
'permissionserrorstext' => 'Þú hefur ekki leyfi til að gera þetta, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:',
'permissionserrorstext-withaction' => 'Þú hefur ekki réttindi til að $2, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:',
-'recreate-deleted-warn' => "'''Viðvörun: Þú ert að endurskapa síðu sem áður hefur verið eytt.'''
+'recreate-moveddeleted-warn' => "'''Viðvörun: Þú ert að endurskapa síðu sem áður hefur verið eytt.'''
Athuga skal hvort viðeigandi sé að gera þessa síðu.
-Eyðingarskrá fyrir þessa síðu er útveguð hér til þæginda:",
-'deleted-notice' => 'Þessari síðu hefur verið eytt.
-Eyðingaskrá síðunnar er gefin fyrir neðan til tilvísunar.',
-'deletelog-fulllog' => 'Skoða alla atburðaskrá',
+Eyðingarskrá og flutningaskrá fyrir þessa síðu eru útvegaðar hér til þæginda:",
+'moveddeleted-notice' => 'Þessari síðu hefur verið eytt.
+Eyðingaskrá og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.',
'edit-gone-missing' => 'Gat ekki uppfært síðu.
Svo virðist sem henni hafi verið eytt.',
'edit-conflict' => 'Breytingaárekstur.',
@@ -885,7 +880,7 @@ Hún er nú þegar til.',
'currentrev' => 'Núverandi útgáfa',
'currentrev-asof' => 'Núverandi breyting frá og með $1',
'revisionasof' => 'Útgáfa síðunnar $1',
-'revision-info' => 'Útgáfa frá $1 eftir $2', # Additionally available: $3: revision id
+'revision-info' => 'Útgáfa frá $1 eftir $2',
'previousrevision' => '←Fyrri útgáfa',
'nextrevision' => 'Næsta útgáfa→',
'currentrevisionlink' => 'Núverandi útgáfa',
@@ -898,7 +893,6 @@ Hún er nú þegar til.',
Skýringartexti: (nú) = skoðanamunur á núverandi útgáfu,
(síðast) = skoðanamunur á undanfarandi útgáfu, M = minniháttar breyting.',
'history-fieldset-title' => 'Skoða breytingaskrá',
-'deletedrev' => '[eytt]',
'histfirst' => 'elstu',
'histlast' => 'yngstu',
'historysize' => '({{PLURAL:$1|1 bæti|$1 bæti}})',
@@ -907,39 +901,45 @@ Skýringartexti: (nú) = skoðanamunur á núverandi útgáfu,
# Revision feed
'history-feed-title' => 'Breytingaskrá',
'history-feed-description' => 'Breytingaskrá fyrir þessa síðu á wiki-síðunni',
-'history-feed-item-nocomment' => '$1 á $2', # user at time
+'history-feed-item-nocomment' => '$1 á $2',
'history-feed-empty' => 'Síðan sem þú leitaðir að er ekki til.
Möglegt er að henni hafi verið eytt út af þessari wiki síðu, eða endurnefnd.
Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum síðum.',
# Revision deletion
-'rev-deleted-comment' => '(athugasemd fjarlægð)',
-'rev-deleted-user' => '(notandanafn fjarlægt)',
-'rev-deleted-event' => '(skráarbreyting fjarlægð)',
-'rev-delundel' => 'sýna/fela',
-'revisiondelete' => 'Eyða/endurvekja breytingar',
-'revdelete-nooldid-title' => 'Ógild markbreyting',
-'revdelete-selected' => "'''{{PLURAL:$2|Valin breyting|Valdar breytingar}} fyrir [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valin aðgerð|Valdar aðgerðir}}:'''",
-'revdelete-legend' => 'Setja sjáanlegar hamlanir',
-'revdelete-hide-text' => 'Fela breytingatexta',
-'revdelete-hide-name' => 'Fela aðgerð og mark',
-'revdelete-hide-comment' => 'Fela breytingaathugasemdir',
-'revdelete-hide-user' => 'Fela notandanafn/vistfang',
-'revdelete-hide-restricted' => 'Setja þessar hömlur á fyrir stjórnendur og læsa viðmótinu',
-'revdelete-suppress' => 'Dylja gögn frá stjórnendum og öðrum',
-'revdelete-hide-image' => 'Fela efni skráar',
-'revdelete-log' => 'Ástæða:',
-'revdelete-submit' => 'Setja á valda breytingu',
-'revdel-restore' => 'Breyta sýn',
-'pagehist' => 'Breytingaskrá',
-'deletedhist' => 'Eyðingaskrá',
-'revdelete-content' => 'efni',
-'revdelete-summary' => 'breytingarágrip',
-'revdelete-uname' => 'notandanafn',
-'revdelete-restricted' => 'hömlur settar á stjórnendur',
-'revdelete-unrestricted' => 'fjarlægja hömlur á stjórnendur',
-'revdelete-log-message' => '$1 fyrir $2 {{PLURAL:$2|breytingu|breytingar}}',
+'rev-deleted-comment' => '(athugasemd fjarlægð)',
+'rev-deleted-user' => '(notandanafn fjarlægt)',
+'rev-deleted-event' => '(skráarbreyting fjarlægð)',
+'rev-delundel' => 'sýna/fela',
+'rev-showdeleted' => 'sýna',
+'revisiondelete' => 'Eyða/endurvekja breytingar',
+'revdelete-nooldid-title' => 'Ógild markbreyting',
+'revdelete-show-file-submit' => 'Já',
+'revdelete-selected' => "'''{{PLURAL:$2|Valin breyting|Valdar breytingar}} fyrir [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Valin aðgerð|Valdar aðgerðir}}:'''",
+'revdelete-legend' => 'Setja sjáanlegar hamlanir',
+'revdelete-hide-text' => 'Fela breytingatexta',
+'revdelete-hide-image' => 'Fela efni skráar',
+'revdelete-hide-name' => 'Fela aðgerð og mark',
+'revdelete-hide-comment' => 'Fela breytingaathugasemdir',
+'revdelete-hide-user' => 'Fela notandanafn/vistfang',
+'revdelete-hide-restricted' => 'Setja þessar hömlur á fyrir stjórnendur og læsa viðmótinu',
+'revdelete-radio-same' => '(ekki breyta)',
+'revdelete-radio-set' => 'Já',
+'revdelete-radio-unset' => 'Nei',
+'revdelete-suppress' => 'Dylja gögn frá stjórnendum og öðrum',
+'revdelete-log' => 'Ástæða:',
+'revdelete-submit' => 'Setja á valda breytingu',
+'revdel-restore' => 'Breyta sýn',
+'pagehist' => 'Breytingaskrá',
+'deletedhist' => 'Eyðingaskrá',
+'revdelete-content' => 'efni',
+'revdelete-summary' => 'breytingarágrip',
+'revdelete-uname' => 'notandanafn',
+'revdelete-restricted' => 'hömlur settar á stjórnendur',
+'revdelete-unrestricted' => 'fjarlægja hömlur á stjórnendur',
+'revdelete-log-message' => '$1 fyrir $2 {{PLURAL:$2|breytingu|breytingar}}',
+'revdelete-edit-reasonlist' => 'Eyðingarástæður',
# History merging
'mergehistory' => 'Sameina breytingaskrár',
@@ -951,54 +951,13 @@ Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum sí
'revertmerge' => 'Taka aftur sameiningu',
# Diffs
-'history-title' => 'Breytingaskrá fyrir "$1"',
-'difference' => '(Munur milli útgáfa)',
-'lineno' => 'Lína $1:',
-'compareselectedversions' => 'Bera saman valdar útgáfur',
-'visualcomparison' => 'Sjónrænn samanburður',
-'wikicodecomparison' => 'Wiki-texta samanburður',
-'editundo' => 'Taka aftur þessa breytingu',
-'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}}.)',
-'diff-width' => 'breidd',
-'diff-height' => 'hæð',
-'diff-p' => "'''klausa'''",
-'diff-blockquote' => "'''tilvitnun'''",
-'diff-h1' => "'''fyrirsögn (stig 1)'''",
-'diff-h2' => "'''fyrirsögn (stig 2)'''",
-'diff-h3' => "'''fyrirsögn (stig 3)'''",
-'diff-h4' => "'''fyrirsögn (stig 4)'''",
-'diff-h5' => "'''fyrirsögn (stig 5)'''",
-'diff-div' => "'''skipting'''",
-'diff-ul' => "'''óraðaður listi'''",
-'diff-ol' => "'''raðaður listi'''",
-'diff-li' => "'''listaatriði'''",
-'diff-table' => "'''tafla'''",
-'diff-tbody' => "'''innihald töflu'''",
-'diff-tr' => "'''röð'''",
-'diff-td' => "'''dálkur'''",
-'diff-th' => "'''haus'''",
-'diff-br' => "'''línubil'''",
-'diff-hr' => "'''lárétt strik'''",
-'diff-code' => "'''tölvukóðabálkur'''",
-'diff-dl' => "'''skilgreiningarlisti'''",
-'diff-dt' => "'''skilgreiningarhugtak'''",
-'diff-dd' => "'''skilgreining'''",
-'diff-input' => "'''inntak'''",
-'diff-form' => "'''eyðublað'''",
-'diff-img' => "'''mynd'''",
-'diff-span' => "'''spönn'''",
-'diff-a' => "'''tengill'''",
-'diff-i' => "'''skáletur'''",
-'diff-b' => "'''feitletur'''",
-'diff-strong' => "'''feitletur'''",
-'diff-em' => "'''skáletur'''",
-'diff-font' => "'''leturgerð'''",
-'diff-big' => "'''stór'''",
-'diff-del' => "'''gegnumstrikað'''",
-'diff-tt' => "'''föst breidd'''",
-'diff-sub' => "'''undirskrift'''",
-'diff-sup' => "'''uppskrift'''",
-'diff-strike' => "'''gegnumstrikað'''",
+'history-title' => 'Breytingaskrá fyrir "$1"',
+'difference' => '(Munur milli útgáfa)',
+'lineno' => 'Lína $1:',
+'compareselectedversions' => 'Bera saman valdar útgáfur',
+'showhideselectedversions' => 'Sýna/fela valdar breytingar',
+'editundo' => 'Taka aftur þessa breytingu',
+'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}}.)',
# Search results
'searchresults' => 'Leitarniðurstöður',
@@ -1006,25 +965,22 @@ Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum sí
'searchresulttext' => 'Fyrir frekari upplýsingar um leit á {{SITENAME}} farið á [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Þú leitaðir að '''[[:$1]]''' ([[Special:Prefixindex/$1|öllum síðum sem hefjast á „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|öllum síðum sem tengja í „$1“]])",
'searchsubtitleinvalid' => "Þú leitaðir að '''$1'''",
-'noexactmatch' => "'''Engin síða ber nafnið „$1“.''' Þú getur [[:$1|búið hana til]].",
-'noexactmatch-nocreate' => "'''Það er engin síða sem ber nafnið „$1“.'''",
'toomanymatches' => 'Of mörgum niðurstöðum var skilað, gjörðu svo vel og reyndu aðra fyrirspurn',
'titlematches' => 'Titlar greina sem pössuðu við fyrirspurnina',
'notitlematches' => 'Engir greinartitlar pössuðu við fyrirspurnina',
'textmatches' => 'Leitarorð fannst/fundust í innihaldi eftirfarandi greina',
'notextmatches' => 'Engar samsvaranir á texta í síðum',
-'prevn' => 'síðustu $1',
-'nextn' => 'næstu $1',
-'viewprevnext' => 'Skoða ($1) ($2) ($3).',
+'prevn' => 'síðustu {{PLURAL:$1|$1}}',
+'nextn' => 'næstu {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Skoða ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Leitarvalmöguleikar',
'searchmenu-exists' => "'''Það er síða að nafni „[[$1]]“ á þessum wiki'''",
'searchmenu-new' => "'''Skapaðu síðuna \"[[:\$1]]\" á þessum wiki!'''",
'searchhelp-url' => 'Help:Efnisyfirlit',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita að síðum með þessu forskeyti]]',
'searchprofile-articles' => 'Efnissíður',
-'searchprofile-articles-and-proj' => 'Efnis- og verkefnasíður',
-'searchprofile-project' => 'Verkefnasíður',
-'searchprofile-images' => 'Skrár',
+'searchprofile-project' => 'Hjálpar- og verkefnasíður',
+'searchprofile-images' => 'Margmiðlanir',
'searchprofile-everything' => 'Allt',
'searchprofile-advanced' => 'Nánar',
'searchprofile-articles-tooltip' => 'Leita í $1',
@@ -1043,11 +999,11 @@ Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum sí
'search-mwsuggest-disabled' => 'engar uppástungur',
'search-relatedarticle' => 'Tengt',
'mwsuggest-disable' => 'Gera AJAX-uppástungur óvirkar',
+'searcheverything-enable' => 'Leita í öllum nafnrýmum',
'searchrelated' => 'tengt',
'searchall' => 'öllum',
'showingresults' => "Sýni {{PLURAL:$1|'''1''' niðurstöðu|'''$1''' niðurstöður}} frá og með #'''$2'''.",
'showingresultsnum' => "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
-'showingresultstotal' => "Sýni að neðan {{PLURAL:$4|útkomu '''$1''' af '''$3'''|útkomur '''$1 - $2''' af '''$3'''}}",
'nonefound' => "'''Athugaðu''': Það er aðeins leitað í sumum nafnrýmum sjálfkrafa. Prófaðu að setja forskeytið ''all:'' í fyrirspurnina til að leita í öllu efni (þar á meðal notandaspjallsíðum, sniðum, o.s.frv.), eða notaðu tileigandi nafnrými sem forskeyti.",
'search-nonefound' => 'Engar niðurstöður pössuðu við fyrirspurnina.',
'powersearch' => 'Ítarleg leit',
@@ -1055,36 +1011,33 @@ Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum sí
'powersearch-ns' => 'Leita í nafnrýmum:',
'powersearch-redir' => 'Lista tilvísanir',
'powersearch-field' => 'Leita að',
+'powersearch-toggleall' => 'Allt',
+'powersearch-togglenone' => 'Ekkert',
'search-external' => 'Ytri leit',
'searchdisabled' => '{{SITENAME}}-leit er óvirk.
Þú getur leitað í genum Google á meðan.
Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
+# Quickbar
+'qbsettings' => 'Valblað',
+'qbsettings-none' => 'Sleppa',
+'qbsettings-fixedleft' => 'Fast vinstra megin',
+'qbsettings-fixedright' => 'Fast hægra megin',
+'qbsettings-floatingleft' => 'Fljótandi til vinstri',
+'qbsettings-floatingright' => 'Fljótandi til hægri',
+
# Preferences page
'preferences' => 'Stillingar',
'mypreferences' => 'Stillingar',
'prefs-edits' => 'Fjöldi breytinga:',
'prefsnologin' => 'Ekki innskráður',
-'prefsnologintext' => 'Þú verður að vera <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} skráð(ur) inn]</span> til að breyta notandastillingum.',
-'prefsreset' => 'Stillingum hefur verið breytt yfir í þær stillingar sem eru í minni.',
-'qbsettings' => 'Valblað',
-'qbsettings-none' => 'Sleppa',
-'qbsettings-fixedleft' => 'Fast vinstra megin',
-'qbsettings-fixedright' => 'Fast hægra megin',
-'qbsettings-floatingleft' => 'Fljótandi til vinstri',
-'qbsettings-floatingright' => 'Fljótandi til hægri',
+'prefsnologintext' => 'Þú verður að vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} skráð(ur) inn]</span> til að breyta notandastillingum.',
'changepassword' => 'Breyta lykilorði',
-'skin' => 'Þema',
+'prefs-skin' => 'Þema',
'skin-preview' => 'Forskoða',
-'math' => 'Stærðfræðiformúlur',
-'dateformat' => 'Tímasnið',
+'prefs-math' => 'Stærðfræðiformúlur',
'datedefault' => 'Sjálfgefið',
-'datetime' => 'Tímasnið og tímabelti',
-'math_failure' => 'Þáttun mistókst',
-'math_unknown_error' => 'óþekkt villa',
-'math_unknown_function' => 'óþekkt virkni',
-'math_lexing_error' => 'lestrarvilla',
-'math_syntax_error' => 'málfræðivilla',
+'prefs-datetime' => 'Tímasnið og tímabelti',
'prefs-personal' => 'Notandaupplýsingar',
'prefs-rc' => 'Nýlegar breytingar',
'prefs-watchlist' => 'Vaktlistinn',
@@ -1094,10 +1047,12 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'prefs-watchlist-edits-max' => '(hámarkstala: 1000)',
'prefs-misc' => 'Aðrar stillingar',
'prefs-resetpass' => 'Breyta lykilorði',
+'prefs-email' => 'Tölvupóststillingar',
+'prefs-rendering' => 'Útlit',
'saveprefs' => 'Vista',
'resetprefs' => 'Endurstilla valmöguleika',
'restoreprefs' => 'Endurheimta allar stillingar',
-'textboxsize' => 'Breytingarflipinn',
+'prefs-editing' => 'Breytingarflipinn',
'prefs-edit-boxsize' => 'Stærð breytingagluggans.',
'rows' => 'Raðir',
'columns' => 'Dálkar',
@@ -1111,7 +1066,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'recentchangescount' => 'Fjöldi síðna á „nýlegum breytingum“',
'savedprefs' => 'Stillingarnar þínar hafa verið vistaðar.',
'timezonelegend' => 'Tímabelti:',
-'timezonetext' => 'Hliðrun staðartíma frá UTC+0.',
'localtime' => 'Staðartími:',
'timezoneoffset' => 'Hliðrun¹:',
'servertime' => 'Tími netþjóns:',
@@ -1131,10 +1085,36 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'prefs-namespaces' => 'Nafnrými',
'defaultns' => 'Leita í þessum nafnrýmum sjálfgefið:',
'default' => 'sjálfgefið',
-'files' => 'Skrár',
+'prefs-files' => 'Skrár',
+'prefs-emailconfirm-label' => 'Staðfesting netfangs:',
+'youremail' => 'Netfang:',
+'username' => 'Notandanafn:',
+'uid' => 'Raðnúmer:',
+'prefs-memberingroups' => 'Meðlimur {{PLURAL:$1|hóps|hópa}}:',
+'prefs-registration' => 'Nýskráningartími:',
+'yourrealname' => 'Fullt nafn:',
+'yourlanguage' => 'Viðmótstungumál:',
+'yourvariant' => 'Útgáfa:',
+'yournick' => 'Undirskrift:',
+'badsig' => 'Ógild hrá undirskrift. Athugaðu HTML-kóða.',
+'badsiglength' => 'Undirskriftin er of löng.
+Hún þarf að vera færri en $1 {{PLURAL:$1|rittákn|rittákn}}.',
+'yourgender' => 'Kyn:',
+'gender-unknown' => 'Óskilgreint',
+'gender-male' => 'Karl',
+'gender-female' => 'Kona',
+'prefs-help-gender' => 'Valfrjálst: notað til að aðgreina kynin í meldingum hugbúnaðarins. Þessar upplýsingar verða aðgengilegar öllum.',
+'email' => 'Tölvupóstur',
+'prefs-help-realname' => 'Alvöru nafn er valfrjálst.
+Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.',
+'prefs-help-email' => 'Tölvupóstfang er valfrjálst, en gerir það kleift að fá nýtt lykilorð sent ef þú gleymir lykilorðinu þínu.
+Þú getur einnig leyft öðrum að hafa samband við þig á notanda- eða spjallsíðunni þinni án þess að opinbera þig.',
+'prefs-help-email-required' => 'Þörf er á netfangi.',
+'prefs-info' => 'Undirstöðuupplýsingar',
+'prefs-signature' => 'Undirskrift',
# User rights
-'userrights' => 'Breyta notandaréttindum', # Not used as normal message but as header for the special page itself
+'userrights' => 'Breyta notandaréttindum',
'userrights-lookup-user' => 'Yfirlit notandahópa',
'userrights-user-editname' => 'Skráðu notandanafn:',
'editusergroup' => 'Breyta notandahópum',
@@ -1208,6 +1188,8 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'right-editprotected' => 'Breyta verndaðar síður (án keðjuverndunar)',
'right-editinterface' => 'Breyta notandaviðmótinu',
'right-editusercssjs' => 'Breyta CSS- og JS-skrám annarra',
+'right-editusercss' => 'Breyta CSS-skrám annarra',
+'right-edituserjs' => 'Breyta JS-skrám annarra',
'right-unwatchedpages' => 'Skoða lista yfir óvaktaðar síður',
'right-userrights' => 'Breyta öllum notandaréttindum',
'right-userrights-interwiki' => 'Breyta notandaréttindum annarra notenda á öðrum wiki-verkefnum',
@@ -1246,6 +1228,15 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'recentchanges-legend' => 'Stillingar nýlegra breytinga',
'recentchangestext' => 'Hér geturðu fylgst með nýjustu breytingunum.',
'recentchanges-feed-description' => 'Hér er hægt að fylgjast með nýlegum breytingum á {{SITENAME}}.',
+'recentchanges-label-legend' => 'Skýring: $1.',
+'recentchanges-legend-newpage' => '$1 - ný síða',
+'recentchanges-label-newpage' => 'Þessi breyting skapaði nýja síðu',
+'recentchanges-legend-minor' => '$1 - smá breyting',
+'recentchanges-label-minor' => 'Þetta er minniháttar breyting',
+'recentchanges-legend-bot' => '$1 - breyting vélmennis',
+'recentchanges-label-bot' => 'Þessi breytingar var gerð af vélmenni',
+'recentchanges-legend-unpatrolled' => '$1 - breyting án eftirlits',
+'recentchanges-label-unpatrolled' => 'Þessi breyting hefur ekki verið yfirfarin',
'rcnote' => "Að neðan {{PLURAL:$1|er '''1''' breyting|eru síðustu '''$1''' breytingar}} síðast {{PLURAL:$2|liðinn dag|liðna '''$2''' daga}}, frá $5, $4.",
'rcnotefrom' => "Að neðan eru breytingar síðan '''$2''' (allt að '''$1''' sýndar).",
'rclistfrom' => 'Sýna breytingar frá og með $1',
@@ -1272,6 +1263,8 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
# Recent changes linked
'recentchangeslinked' => 'Skyldar breytingar',
+'recentchangeslinked-feed' => 'Skyldar breytingar',
+'recentchangeslinked-toolbox' => 'Skyldar breytingar',
'recentchangeslinked-title' => 'Breytingar tengdar "$1"',
'recentchangeslinked-noresult' => 'Engar breytingar á tengdum síðum á þessu tímabili.',
'recentchangeslinked-summary' => "Þetta er listi yfir nýlega gerðar breytingar á síðum sem tengt er í frá tilgreindri síðu (eða á meðlimum úr tilgreindum flokki).
@@ -1282,7 +1275,6 @@ Síður á [[Special:Watchlist|vaktlistanum þínum]] eru '''feitletraðar'''.",
# Upload
'upload' => 'Hlaða inn skrá',
'uploadbtn' => 'Hlaða inn skrá',
-'reupload' => 'Hlaða aftur inn',
'reuploaddesc' => 'Aftur á innhlaðningarformið.',
'uploadnologin' => 'Óinnskráð(ur)',
'uploadnologintext' => 'Þú verður að vera [[Special:UserLogin|skráð(ur) inn]]
@@ -1323,14 +1315,12 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'large-file' => 'Það er mælt með að skrár séu ekki stærri en $1; þessi skrá er $2.',
'fileexists' => "Skrá með þessu nafni er þegar til, skoðaðu '''<tt>[[:$1]]</tt>''' ef þú ert óviss um hvort þú viljir breyta henni, ekki verður skrifað yfir gömlu skránna hlaðiru inn nýrri með sama nafni heldur verður núverandi útgáfa geymd í útgáfusögu.
[[$1|thumb]]",
-'fileexists-thumb' => "<center>'''Núverandi mynd'''</center>",
'successfulupload' => 'Innhlaðning tókst',
'uploadwarning' => 'Aðvörun',
'savefile' => 'Vista',
'uploadedimage' => 'hlóð inn „[[$1]]“',
'overwroteimage' => 'hlóð inn nýrri útgáfu af "[[$1]]"',
'uploadscripted' => 'Þetta skjal inniheldur (X)HTML eða forskriftu sem gæti valdið villum í vöfrum.',
-'uploadcorrupt' => 'Skráin er skemmd eða hefur ranga skráarendingu. Vinsamlegast athugaðu skrána og reyndu svo aftur.',
'uploadvirus' => 'Skráin inniheldur veiru! Nánari upplýsingar: $1',
'sourcefilename' => 'Upprunalegt skráarnafn:',
'destfilename' => 'Móttökuskráarnafn:',
@@ -1338,15 +1328,17 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'watchthisupload' => 'Vakta þessa skrá',
'filewasdeleted' => 'Skrá af sama nafni hefur áður verið hlaðið inn og síðan eytt. Þú ættir að athuga $1 áður en þú hleður skránni inn.',
-'upload-proto-error' => 'Vitlaus samskiptaregla',
-'upload-file-error' => 'Innri villa',
-'upload-misc-error' => 'Óþekkt innhleðsluvilla',
+'upload-proto-error' => 'Vitlaus samskiptaregla',
+'upload-file-error' => 'Innri villa',
+'upload-misc-error' => 'Óþekkt innhleðsluvilla',
+'upload-unknown-size' => 'Óþekkt stærð',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Gat ekki náð í slóðina',
'upload-curl-error28' => 'Innhleðslutími útrunninn',
'license' => 'Leyfisupplýsingar:',
+'license-header' => 'Leyfisupplýsingar:',
'nolicense' => 'Ekkert valið',
'license-nopreview' => '(Forskoðun ekki fáanleg)',
'upload_source_file' => '(skrá á tölvunni þinni)',
@@ -1363,6 +1355,7 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'listfiles_count' => 'Útgáfur',
# File description page
+'file-anchor-link' => 'Skrá',
'filehist' => 'Breytingaskrá skjals',
'filehist-help' => 'Smelltu á dagsetningu eða tímasetningu til að sjá hvernig hún leit þá út.',
'filehist-deleteall' => 'eyða öllu',
@@ -1371,6 +1364,7 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'filehist-current' => 'núverandi',
'filehist-datetime' => 'Dagsetning/Tími',
'filehist-thumb' => 'Smámynd',
+'filehist-thumbtext' => 'Smámynd útgáfunnar frá $2, kl. $3',
'filehist-nothumb' => 'Engin smámynd',
'filehist-user' => 'Notandi',
'filehist-dimensions' => 'Víddir',
@@ -1379,10 +1373,11 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'imagelinks' => 'Skráatenglar',
'linkstoimage' => 'Eftirfarandi {{PLURAL:$1|síða tengist|$1 síður tengjast}} í þessa skrá:',
'nolinkstoimage' => 'Engar síður tengja í þessa skrá.',
-'sharedupload' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'skráarlýsingarsíða',
-'noimage' => 'Engin skrá með þessu nafni er til, en þú getur $1.',
-'noimage-linktext' => 'hlaða einni inn',
+'sharedupload' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.',
+'sharedupload-desc-there' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.
+Gjörðu svo vel og sjáðu [$2 skráarsíðuna þar] fyrir fleiri upplýsingar.',
+'sharedupload-desc-here' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.
+Hér fyrir neðan er afrit af [$2 skráarsíðunni þar].',
'uploadnewversion-linktext' => 'Hlaða inn nýrri útgáfu af þessari skrá',
# File reversion
@@ -1424,7 +1419,7 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
# Random page
'randompage' => 'Handahófsvalin grein',
-'randompage-nopages' => 'Það eru engar síður í nafnrýminu „$1“.',
+'randompage-nopages' => 'Það eru engar síður í {{PLURAL:$2|nafnrýminu|nafnrýmunum}}: $1.',
# Random redirect
'randomredirect' => 'Handahófsvalin tilvísun',
@@ -1436,6 +1431,7 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'statistics-header-edits' => 'Breytingatölfræði',
'statistics-header-views' => 'Uppflettitölfræði',
'statistics-header-users' => 'Notandatölfræði',
+'statistics-header-hooks' => 'Önnur tölfræði',
'statistics-articles' => 'Greinar alls',
'statistics-pages' => 'Síður',
'statistics-pages-desc' => 'Allar síður wiki-verkefnisins, þar á meðal spjallsíður, tilvísanir o.fl.',
@@ -1460,8 +1456,8 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
'brokenredirects' => 'Brotnar tilvísanir',
'brokenredirectstext' => 'Eftirfarandi tilvísanir vísa á síður sem ekki eru til:',
-'brokenredirects-edit' => '(breyta)',
-'brokenredirects-delete' => '(eyða)',
+'brokenredirects-edit' => 'breyta',
+'brokenredirects-delete' => 'eyða',
'withoutinterwiki' => 'Síður án tungumálatengla',
'withoutinterwiki-summary' => 'Eftirfarandi síður tengja ekki í önnur tungumál:',
@@ -1576,6 +1572,10 @@ Sjá einnig [[Special:WantedCategories|eftirsótta flokka]].',
'listusers-submit' => 'Sýna',
'listusers-noresult' => 'Enginn notandi fannst.',
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Fela vélmenni',
+'activeusers-hidesysops' => 'Fela möppudýr',
+
# Special:Log/newusers
'newuserlogpage' => 'Skrá yfir nýja notendur',
'newuserlogpagetext' => 'Þetta er skrá yfir nýskráða notendur.',
@@ -1666,6 +1666,7 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
'confirmdeletetext' => 'Þú ert um það bil að eyða síðu ásamt breytingaskrá hennar.
Vinsamlegast staðfestu það að þú ætlir að gera svo, það að þú skiljir afleiðingarnar, og að þú sért að gera þetta í samræmi við [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Aðgerð lokið',
+'actionfailed' => 'Aðgerð mistókst',
'deletedtext' => '„<nowiki>$1</nowiki>“ hefur verið eytt.
Sjá lista yfir nýlegar eyðingar í $2.',
'deletedarticle' => 'eyddi „[[$1]]“',
@@ -1692,8 +1693,8 @@ Sjá lista yfir nýlegar eyðingar í $2.',
eitthver annar hefur breytt síðunni eða nú þegar tekið breytinguna til baka.
Síðasta breyting er frá [[User:$3|$3]] ([[User talk:$3|Spjall]]).',
-'editcomment' => "Beytingarágripið var: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Beytingarágripið var: \"''\$1''\".",
+'revertpage' => 'Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]',
'rollback-success' => 'Tók til baka breytingar eftir $1; núverandi $2.',
# Protect
@@ -1711,7 +1712,6 @@ Sjáðu [[Special:ProtectedPages|listann yfir verndaðar síður]] fyrir núvera
'protectexpiry' => 'Rennur út:',
'protect_expiry_invalid' => 'Ógildur tími.',
'protect_expiry_old' => 'Tíminn er þegar runninn út.',
-'protect-unchain' => 'Opna fyrir færslur',
'protect-text' => "Hér getur þú skoðað og breytt verndunarstigi síðunnar '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Þú hefur ekki heimild til þess að vernda eða afvernda síður.
Núverandi staða síðunnar er '''$1''':",
@@ -1728,7 +1728,7 @@ Núverandi staða síðunnar er '''$1''':",
'protect-cantedit' => 'Þú getur ekki breytt verndunarstigi þessarar síðu, vegna þess að þú hefur ekki réttindin til að breyta því.',
'protect-othertime' => 'Annar tími:',
'protect-othertime-op' => 'annar tími',
-'protect-expiry-options' => '1 tím:1 hour,1 dag:1 day,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 tím:1 hour,1 dag:1 day,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
'restriction-type' => 'Réttindi:',
'restriction-level' => 'Takmarkaði við:',
'minimum-size' => 'Lágmarksstærð',
@@ -1758,6 +1758,7 @@ Gagnagrunnurinn kann að vera tæmdur reglulega.',
Innihald greinarinnar er einungis aðgengilegt möppudýrum.',
'undeletebtn' => 'Endurvekja',
'undeletelink' => 'skoða/endurvekja',
+'undeleteviewlink' => 'skoða',
'undeletereset' => 'Endurstilla',
'undeleteinvert' => 'Snúa vali við',
'undeletecomment' => 'Athugasemd:',
@@ -1786,7 +1787,7 @@ Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og end
'contributions-title' => 'Framlög notanda $1',
'mycontris' => 'Framlög',
'contribsub2' => 'Eftir $1 ($2)',
-'nocontribs' => 'Engar breytingar fundnar sem passa við þessa viðmiðun.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Engar breytingar fundnar sem passa við þessa viðmiðun.',
'uctop' => '(nýjast)',
'month' => 'Frá mánuðinum (og fyrr):',
'year' => 'Frá árinu (og fyrr):',
@@ -1794,6 +1795,9 @@ Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og end
'sp-contributions-newbies' => 'Sýna aðeins breytingar frá nýjum notendum',
'sp-contributions-newbies-sub' => 'Fyrir nýliða',
'sp-contributions-blocklog' => 'Fyrri bönn',
+'sp-contributions-deleted' => 'Eyddar breytingar notanda',
+'sp-contributions-talk' => 'spjall',
+'sp-contributions-userrights' => 'Breyta notandaréttindum',
'sp-contributions-search' => 'Leita að framlögum',
'sp-contributions-username' => 'Vistfang eða notandanafn:',
'sp-contributions-submit' => 'Leita að breytingum',
@@ -1819,6 +1823,7 @@ Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og end
# Block/unblock
'blockip' => 'Banna notanda',
+'blockip-title' => 'Banna notanda',
'blockip-legend' => 'Banna notanda',
'blockiptext' => 'Notaðu eyðublaðið hér að neðan til þess að banna ákveðið vistfang eða notandanafn.
Þetta ætti einungis að gera til þess að koma í veg fyrir skemmdarverk, og í samræmi við [[{{MediaWiki:Policy-url}}|samþykktir]].
@@ -1842,7 +1847,7 @@ Gefðu nákvæma skýringu að neðan (til dæmis, með því að vísa í þær
'ipbenableautoblock' => 'Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum',
'ipbsubmit' => 'Banna notanda',
'ipbother' => 'Annar tími:',
-'ipboptions' => '2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
'ipbotheroption' => 'annar',
'ipbotherreason' => 'Önnur/auka ástæða:',
'ipbhidename' => 'Fela notandanafn/vistfang úr bannskrá og notandaskrá',
@@ -1870,7 +1875,7 @@ Sjá [[Special:IPBlockList|bannaðar notendur og vistföng]] fyrir yfirlit yfir
'ipblocklist-submit' => 'Leita',
'blocklistline' => '$1, $2 bannaði $3 (rennur út $4)',
'infiniteblock' => 'aldrei',
-'expiringblock' => 'rennur út $1',
+'expiringblock' => 'rennur út $1 $2',
'anononlyblock' => 'bara ónafngreindir',
'noautoblockblock' => 'sjálfbönnun óvirk',
'createaccountblock' => 'bann við stofnun nýrra aðganga',
@@ -1945,7 +1950,7 @@ Athugaðu að þessi aðgerð getur kallað fram viðbrögð annarra notenda og
'move-watch' => 'Vakta þessa síðu',
'movepagebtn' => 'Færa síðu',
'pagemovedsub' => 'Færsla tókst',
-'movepage-moved' => "'''„$1“ hefur verið færð á „$2“'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''„$1“ hefur verið færð á „$2“'''",
'movepage-moved-redirect' => 'Tilvísun hefur verið búin til.',
'movepage-moved-noredirect' => 'Tilvísun var ekki búin til.',
'articleexists' => 'Annaðhvort er þegar til síða undir þessum titli, eða sá titill sem þú hefur valið er ekki gildur.
@@ -2004,7 +2009,8 @@ Síðan „[[:$1]]“ er þegar til. Viltu eyða henni til þess að rýma til f
'allmessagestext' => 'Þetta er listi yfir kerfismeldingar í Melding-nafnrýminu.
Gjörðu svo vel og heimsæktu [http://www.mediawiki.org/wiki/Localisation MediaWiki-staðfæringuna] og [http://translatewiki.net translatewiki.net] ef þú vilt taka þátt í almennri MediaWiki-staðfæringu.',
'allmessagesnotsupportedDB' => "Það er ekki hægt að nota '''{{ns:special}}:Allmessages''' því '''\$wgUseDatabaseMessages''' hefur verið gerð óvirk.",
-'allmessagesmodified' => 'Sýna aðeins breyttar',
+'allmessages-language' => 'Tungumál:',
+'allmessages-filter-submit' => 'Áfram',
# Thumbnails
'thumbnail-more' => 'Stækka',
@@ -2057,6 +2063,7 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'tooltip-ca-viewsource' => 'Síða þessi er vernduð. Þú getur þó skoðað frumkóða hennar.',
'tooltip-ca-history' => 'Eldri útgáfur af síðunni.',
'tooltip-ca-protect' => 'Vernda þessa síðu',
+'tooltip-ca-unprotect' => 'Afvernda þessa síðu',
'tooltip-ca-delete' => 'Eyða þessari síðu',
'tooltip-ca-undelete' => 'Endurvekja breytingar á þessari síðu áður en að henni var eytt',
'tooltip-ca-move' => 'Færa þessa síðu',
@@ -2067,6 +2074,7 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'tooltip-search-fulltext' => 'Leita á síðunum eftir þessum texta',
'tooltip-p-logo' => 'Forsíða',
'tooltip-n-mainpage' => 'Forsíða {{SITENAME}}',
+'tooltip-n-mainpage-description' => 'Heimsækja forsíðuna',
'tooltip-n-portal' => 'Um verkefnið, hvernig er hægt að hjálpa og hvar á að byrja',
'tooltip-n-currentevents' => 'Finna upplýsingar um líðandi stund',
'tooltip-n-recentchanges' => 'Listi yfir nýlegar breytingar.',
@@ -2111,7 +2119,7 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
# Attribution
'anonymous' => '{{PLURAL:$1|Óþekktur notandi|Óþekktir notendur}} á {{SITENAME}}',
'siteuser' => '{{SITENAME}} notandi $1',
-'lastmodifiedatby' => 'Þessari síðu var síðast breytt $1 klukkan $2 af $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Þessari síðu var síðast breytt $1 klukkan $2 af $3.',
'othercontribs' => 'Byggt á verkum $1.',
'others' => 'aðrir',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|notandi|notendur}} $1',
@@ -2142,6 +2150,13 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'mw_math_modern' => 'Mælt með fyrir nýja vafra',
'mw_math_mathml' => 'MathML ef mögulegt (tilraun)',
+# Math errors
+'math_failure' => 'Þáttun mistókst',
+'math_unknown_error' => 'óþekkt villa',
+'math_unknown_function' => 'óþekkt virkni',
+'math_lexing_error' => 'lestrarvilla',
+'math_syntax_error' => 'málfræðivilla',
+
# Patrolling
'markaspatrolleddiff' => 'Merkja sem yfirfarið',
'markaspatrolledtext' => 'Merkja þessa síðu sem yfirfarna',
@@ -2170,9 +2185,6 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'previousdiff' => '← Eldri breyting',
'nextdiff' => 'Nýrri breyting →',
-# Visual comparison
-'visual-comparison' => 'Sjónrænn samanburður',
-
# Media information
'mediawarning' => "'''AÐVÖRUN''': Þessi skrá kann að hafa meinfýsinn kóða, ef keyrður kann hann að stofna kerfinu þínu í hættu.",
'imagemaxsize' => 'Takmarka myndir á skráarlýsingasíðum við:',
@@ -2218,7 +2230,7 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breidd',
@@ -2261,7 +2273,7 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
'exif-scenecapturetype-2' => 'Skammsnið',
'exif-scenecapturetype-3' => 'Næturvettvangur',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kílómetrar á klukkustund',
'exif-gpsspeed-m' => 'Mílur á klukkustund',
'exif-gpsspeed-n' => 'Hnútar',
@@ -2276,6 +2288,7 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
'watchlistall2' => 'allt',
'namespacesall' => 'öll',
'monthsall' => 'allir',
+'limitall' => 'alla',
# E-mail address confirmation
'confirmemail' => 'Staðfesta netfang',
@@ -2389,12 +2402,12 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.",
'watchlisttools-raw' => 'Breyta opnum vaktlistanum',
# Special:Version
-'version' => 'Útgáfa', # Not used as normal message but as header for the special page itself
+'version' => 'Útgáfa',
'version-extensions' => 'Uppsettar viðbætur',
'version-specialpages' => 'Kerfissíður',
'version-variables' => 'Breytur',
'version-other' => 'Aðrar',
-'version-version' => 'Útgáfa',
+'version-version' => '(Útgáfa $1)',
'version-license' => 'Leyfi',
'version-software' => 'Uppsettur hugbúnaður',
'version-software-product' => 'Vara',
diff --git a/languages/messages/MessagesIt.php b/languages/messages/MessagesIt.php
index 71b180d7..96d373e0 100644
--- a/languages/messages/MessagesIt.php
+++ b/languages/messages/MessagesIt.php
@@ -19,6 +19,7 @@
* @author Cryptex
* @author Dakrismeno
* @author Darth Kule
+ * @author F. Cosoleto
* @author Felis
* @author FollowTheMedia
* @author Gianfranco
@@ -37,6 +38,7 @@
* @author Remember the dot
* @author S.Örvarr.S
* @author SabineCretella
+ * @author Stefano-c
* @author Tonyfroio
* @author Trixt
* @author Una giornata uggiosa '94
@@ -95,7 +97,7 @@ $specialPageAliases = array(
'Watchlist' => array( 'OsservatiSpeciali' ),
'Recentchanges' => array( 'UltimeModifiche' ),
'Upload' => array( 'Carica' ),
- 'Listfiles' => array( 'Immagini' ),
+ 'Listfiles' => array( 'File', 'Immagini' ),
'Newimages' => array( 'ImmaginiRecenti' ),
'Listusers' => array( 'Utenti', 'ElencoUtenti' ),
'Listgrouprights' => array( 'ElencoPermessiGruppi' ),
@@ -111,6 +113,7 @@ $specialPageAliases = array(
'Wantedpages' => array( 'PagineRichieste' ),
'Wantedcategories' => array( 'CategorieRichieste' ),
'Wantedfiles' => array( 'FileRichiesti' ),
+ 'Wantedtemplates' => array( 'TemplateRichiesti' ),
'Mostlinked' => array( 'PaginePiùRichiamate' ),
'Mostlinkedcategories' => array( 'CategoriePiùRichiamate' ),
'Mostlinkedtemplates' => array( 'TemplatePiùRichiamati' ),
@@ -127,7 +130,7 @@ $specialPageAliases = array(
'Protectedtitles' => array( 'TitoliProtetti' ),
'Allpages' => array( 'TutteLePagine' ),
'Prefixindex' => array( 'Prefissi' ),
- 'Ipblocklist' => array( 'IPBloccati' ),
+ 'Ipblocklist' => array( 'IPBloccati', 'ElencoBlocchi' ),
'Specialpages' => array( 'PagineSpeciali' ),
'Contributions' => array( 'Contributi', 'ContributiUtente' ),
'Emailuser' => array( 'InviaEMail' ),
@@ -151,25 +154,80 @@ $specialPageAliases = array(
'MIMEsearch' => array( 'RicercaMIME' ),
'FileDuplicateSearch' => array( 'CercaFileDuplicati' ),
'Unwatchedpages' => array( 'PagineNonOsservate' ),
- 'Listredirects' => array( 'Redirect' ),
+ 'Listredirects' => array( 'Redirect', 'ElencoRedirect' ),
'Revisiondelete' => array( 'CancellaRevisione' ),
'Unusedtemplates' => array( 'TemplateNonUsati' ),
'Randomredirect' => array( 'RedirectCasuale' ),
'Mypage' => array( 'MiaPaginaUtente' ),
'Mytalk' => array( 'MieDiscussioni' ),
'Mycontributions' => array( 'MieiContributi' ),
- 'Listadmins' => array( 'Amministratori' ),
- 'Listbots' => array( 'Bot' ),
+ 'Listadmins' => array( 'Amministratori', 'ElencoAmministratori' ),
+ 'Listbots' => array( 'Bot', 'ElencoBot' ),
'Popularpages' => array( 'PaginePiùVisitate' ),
'Search' => array( 'Ricerca', 'Cerca' ),
- 'Resetpass' => array( 'ReimpostaPassword' ),
+ 'Resetpass' => array( 'CambiaPassword' ),
'Withoutinterwiki' => array( 'PagineSenzaInterwiki' ),
- 'MergeHistory' => array( 'UnificaCronologia' ),
+ 'MergeHistory' => array( 'FondiCronologia', 'UnificaCronologia' ),
'Filepath' => array( 'Percorso' ),
'Invalidateemail' => array( 'InvalidaEMail' ),
'Blankpage' => array( 'PaginaVuota' ),
'LinkSearch' => array( 'CercaCollegamenti' ),
'DeletedContributions' => array( 'ContributiCancellati' ),
+ 'Tags' => array( 'Etichette' ),
+ 'Activeusers' => array( 'UtentiAttivi' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#RINVIA', '#RINVIO', '#RIMANDO', '#REDIRECT' ),
+ 'currentmonth' => array( '1', 'MESECORRENTE', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'NOMEMESECORRENTE', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NOMEMESECORRENTEGEN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'MESECORRENTEABBREV', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'GIORNOCORRENTE', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'GIORNOCORRENTE2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOMEGIORNOCORRENTE', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ANNOCORRENTE', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ORARIOATTUALE', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ORACORRENTE', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MESELOCALE', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'NOMEMESELOCALE', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'NOMEMESELOCALEGEN', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'MESELOCALEABBREV', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'GIORNOLOCALE', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'GIORNOLOCALE2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NOMEGIORNOLOCALE', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ANNOLOCALE', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'ORARIOLOCALE', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ORALOCALE', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'NUMEROPAGINE', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NUMEROARTICOLI', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NUMEROFILE', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NUMEROUTENTI', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NUMEROUTENTIATTIVI', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NUMEROEDIT', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NUMEROVISITE', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'TITOLOPAGINA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'TITOLOPAGINAE', 'PAGENAMEE' ),
+ 'subpagename' => array( '1', 'NOMESOTTOPAGINA', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NOMESOTTOPAGINAE', 'SUBPAGENAMEE' ),
+ 'subst' => array( '0', 'SOST:', 'SUBST:' ),
+ 'img_right' => array( '1', 'destra', 'right' ),
+ 'img_left' => array( '1', 'sinistra', 'left' ),
+ 'img_none' => array( '1', 'nessuno', 'none' ),
+ 'img_center' => array( '1', 'centro', 'center', 'centre' ),
+ 'img_page' => array( '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
+ 'img_border' => array( '1', 'bordo', 'border' ),
+ 'sitename' => array( '1', 'NOMESITO', 'SITENAME' ),
+ 'servername' => array( '0', 'NOMESERVER', 'SERVERNAME' ),
+ 'gender' => array( '0', 'GENERE:', 'GENDER:' ),
+ 'currentweek' => array( '1', 'SETTIMANACORRENTE', 'CURRENTWEEK' ),
+ 'localweek' => array( '1', 'SETTIMANALOCALE', 'LOCALWEEK' ),
+ 'plural' => array( '0', 'PLURALE:', 'PLURAL:' ),
+ 'language' => array( '0', '#LINGUA', '#LANGUAGE:' ),
+ 'numberofadmins' => array( '1', 'NUMEROADMIN', 'NUMBEROFADMINS' ),
+ 'special' => array( '0', 'speciale', 'special' ),
+ 'pagesize' => array( '1', 'DIMENSIONEPAGINA', 'PESOPAGINA', 'PAGESIZE' ),
+ 'protectionlevel' => array( '1', 'LIVELLOPROTEZIONE', 'PROTECTIONLEVEL' ),
);
$linkTrail = '/^([a-zàéèíîìóòúù]+)(.*)$/sDu';
@@ -205,6 +263,7 @@ $messages = array(
'tog-enotifminoredits' => 'Segnalami via e-mail anche le modifiche minori',
'tog-enotifrevealaddr' => 'Rivela il mio indirizzo e-mail nei messaggi di avviso',
'tog-shownumberswatching' => 'Mostra il numero di utenti che hanno la pagina in osservazione',
+'tog-oldsig' => 'Anteprima della firma attuale:',
'tog-fancysig' => 'Interpreta i comandi wiki nella firma (senza collegamento automatico)',
'tog-externaleditor' => "Usa per default un editor di testi esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer)",
'tog-externaldiff' => "Usa per default un programma di diff esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer)",
@@ -228,6 +287,13 @@ $messages = array(
'underline-never' => 'Mai',
'underline-default' => 'Mantieni le impostazioni del browser',
+# Font style option in Special:Preferences
+'editfont-style' => "Stile font dell'area di modifica:",
+'editfont-default' => 'Predefinito del browser',
+'editfont-monospace' => 'Font monospazio',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'domenica',
'monday' => 'lunedì',
@@ -287,7 +353,7 @@ $messages = array(
'category-media-header' => 'File nella categoria "$1"',
'category-empty' => "''Al momento la categoria non contiene alcuna pagina né file multimediale.''",
'hidden-categories' => '{{PLURAL:$1|Categoria nascosta|Categorie nascoste}}',
-'hidden-category-category' => 'Categorie nascoste', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorie nascoste',
'category-subcat-count' => "{{PLURAL:$2|Questa categoria contiene un'unica sottocategoria, indicata di seguito.|Questa categoria contiene {{PLURAL:$1|la sottocategoria indicata|le $1 sottocategorie indicate}} di seguito, su un totale di $2.}}",
'category-subcat-count-limited' => 'Questa categoria contiene {{PLURAL:$1|una sottocategoria, indicata|$1 sottocategorie, indicate}} di seguito.',
'category-article-count' => "{{PLURAL:$2|Questa categoria contiene un'unica pagina, indicata di seguito.|Questa categoria contiene {{PLURAL:$1|la pagina indicata|le $1 pagine indicate}} di seguito, su un totale di $2.}}",
@@ -295,6 +361,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Questa categoria contiene un solo file, indicato di seguito.|Questa categoria contiene {{PLURAL:$1|un file, indicato|$1 file, indicati}} di seguito, su un totale di $2.}}',
'category-file-count-limited' => 'Questa categoria contiene {{PLURAL:$1|il file indicato|i $1 file indicati}} di seguito.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pagine indicizzate',
+'noindex-category' => 'Pagine non indicizzate',
'mainpagetext' => "'''Installazione di MediaWiki completata correttamente.'''",
'mainpagedocfooter' => "Consultare la [http://meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] per maggiori informazioni sull'uso di questo software wiki.
@@ -306,10 +374,18 @@ I seguenti collegamenti sono in lingua inglese:
* [http://www.mediawiki.org/wiki/Manual:FAQ Domande frequenti su MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]",
-'about' => 'Informazioni',
-'article' => 'Voce',
-'newwindow' => '(si apre in una nuova finestra)',
-'cancel' => 'Annulla',
+'about' => 'Informazioni',
+'article' => 'Voce',
+'newwindow' => '(si apre in una nuova finestra)',
+'cancel' => 'Annulla',
+'moredotdotdot' => 'Altro...',
+'mypage' => 'La mia pagina',
+'mytalk' => 'mie discussioni',
+'anontalk' => 'Discussioni per questo IP',
+'navigation' => 'Navigazione',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Trova',
'qbbrowse' => 'Sfoglia',
'qbedit' => 'Modifica',
@@ -317,15 +393,35 @@ I seguenti collegamenti sono in lingua inglese:
'qbpageinfo' => 'Informazioni sulla pagina',
'qbmyoptions' => 'Le mie pagine',
'qbspecialpages' => 'Pagine speciali',
-'moredotdotdot' => 'Altro...',
-'mypage' => 'La mia pagina',
-'mytalk' => 'mie discussioni',
-'anontalk' => 'Discussioni per questo IP',
-'navigation' => 'Navigazione',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadati:',
+'faq' => 'Domande frequenti',
+'faqpage' => 'Project:Domande frequenti',
+
+# Vector skin
+'vector-action-addsection' => 'Aggiungi discussione',
+'vector-action-delete' => 'Cancella',
+'vector-action-move' => 'Sposta',
+'vector-action-protect' => 'Proteggi',
+'vector-action-undelete' => 'Recupera',
+'vector-action-unprotect' => 'Sblocca',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Aiuto',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'File multimediale',
+'vector-namespace-mediawiki' => 'Messaggio',
+'vector-namespace-project' => 'Pagina di servizio',
+'vector-namespace-special' => 'Pagina speciale',
+'vector-namespace-talk' => 'Discussione',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'Utente',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Modifica',
+'vector-view-history' => 'Visualizza cronologia',
+'vector-view-view' => 'Leggi',
+'vector-view-viewsource' => 'Visualizza sorgente',
+'actions' => 'Azioni',
+'namespaces' => 'Namespace',
+'variants' => 'Varianti',
'errorpagetitle' => 'Errore',
'returnto' => 'Torna a $1.',
@@ -375,18 +471,22 @@ I seguenti collegamenti sono in lingua inglese:
'otherlanguages' => 'Altre lingue',
'redirectedfrom' => '(Reindirizzamento da <b>$1</b>)',
'redirectpagesub' => 'Pagina di reindirizzamento',
-'lastmodifiedat' => 'Ultima modifica per la pagina: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultima modifica per la pagina: $2, $1.',
'viewcount' => 'Questa pagina è stata letta {{PLURAL:$1|una volta|$1 volte}}.',
'protectedpage' => 'Pagina bloccata',
'jumpto' => 'Vai a:',
'jumptonavigation' => 'navigazione',
'jumptosearch' => 'ricerca',
+'view-pool-error' => 'In questo momento i server sono sovraccarichi.
+Troppi utenti stanno tentando di visualizzare questa pagina.
+Attendere qualche minuto prima di riprovare a caricare la pagina.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Informazioni su {{SITENAME}}',
'aboutpage' => 'Project:Informazioni',
'copyright' => "Contenuti soggetti a licenza d'uso $1.",
-'copyrightpagename' => 'Il copyright su {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Attualità',
'currentevents-url' => 'Project:Attualità',
@@ -394,8 +494,6 @@ I seguenti collegamenti sono in lingua inglese:
'disclaimerpage' => 'Project:Avvertenze generali',
'edithelp' => 'Guida',
'edithelppage' => 'Help:Modifica',
-'faq' => 'Domande frequenti',
-'faqpage' => 'Project:Domande frequenti',
'helppage' => 'Help:Indice',
'mainpage' => 'Pagina principale',
'mainpage-description' => 'Pagina principale',
@@ -475,9 +573,6 @@ L\'ultima query inviata al database è stata:
"$1"
richiamata dalla funzione "$2".
Il database ha restituito il seguente errore "$3: $4".',
-'noconnect' => 'Connessione al database non riuscita a causa di un problema tecnico del sito.<br />$1',
-'nodb' => 'Selezione del database $1 non riuscita',
-'cachederror' => "Quella presentata di seguito è una copia ''cache'' della pagina richiesta; potrebbe quindi non essere aggiornata.",
'laggedslavemode' => "'''Attenzione:''' la pagina potrebbe non riportare gli aggiornamenti più recenti.",
'readonly' => 'Database bloccato',
'enterlockreason' => 'Indicare il motivo del blocco, specificando il momento in cui è presumibile che venga rimosso',
@@ -495,6 +590,8 @@ Si prega di segnalare l\'accaduto a un [[Special:ListUsers/sysop|amministratore]
'readonly_lag' => 'Il database è stato bloccato automaticamente per consentire ai server con i database slave di sincronizzarsi con il master',
'internalerror' => 'Errore interno',
'internalerror_info' => 'Errore interno: $1',
+'fileappenderrorread' => 'Non è stato possibile leggere "$1" durante l\'aggiunta.',
+'fileappenderror' => 'Impossibile aggiungere "$1" a "$2".',
'filecopyerror' => 'Impossibile copiare il file "$1" in "$2".',
'filerenameerror' => 'Impossibile rinominare il file "$1" in "$2".',
'filedeleteerror' => 'Impossibile cancellare il file "$1".',
@@ -504,7 +601,8 @@ Si prega di segnalare l\'accaduto a un [[Special:ListUsers/sysop|amministratore]
'unexpected' => 'Valore imprevisto: "$1"="$2".',
'formerror' => 'Errore: impossibile inviare il modulo',
'badarticleerror' => 'Operazione non consentita per questa pagina.',
-'cannotdelete' => 'Impossibile cancellare la pagina o il file richiesto (potrebbe essere stato già cancellato).',
+'cannotdelete' => 'Non è stato possibile cancellare il file "$1".
+Potrebbe essere stato già cancellato da qualcun altro.',
'badtitle' => 'Titolo non corretto',
'badtitletext' => 'Il titolo della pagina richiesta è vuoto, errato o con caratteri non ammessi oppure deriva da un errore nei collegamenti tra siti wiki diversi o versioni in lingue diverse dello stesso sito.',
'perfcached' => "I dati che seguono sono estratti da una copia ''cache'' del database, non aggiornati in tempo reale.",
@@ -537,7 +635,6 @@ La motivazione è la seguente: ''$2''.",
'virus-unknownscanner' => 'antivirus sconosciuto:',
# Login and logout pages
-'logouttitle' => 'Logout utente',
'logouttext' => "'''Logout effettuato.'''
Si può continuare ad usare {{SITENAME}} come utente anonimo oppure [[Special:UserLogin|eseguire un nuovo accesso]], con lo stesso nome utente o un nome diverso.
@@ -545,7 +642,6 @@ Nota che alcune pagine potrebbero continuare ad apparire come se il logout non f
'welcomecreation' => "== Benvenuto, $1! ==
L'account è stato creato correttamente. Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITENAME}}]].",
-'loginpagetitle' => 'Login utente',
'yourname' => 'Nome utente:',
'yourpassword' => 'Password:',
'yourpasswordagain' => 'Ripeti la password:',
@@ -556,6 +652,7 @@ L'account è stato creato correttamente. Non dimenticare di personalizzare le [[
'nav-login-createaccount' => 'Entra / Registrati',
'loginprompt' => 'Per accedere a {{SITENAME}} è necessario abilitare i cookie.',
'userlogin' => 'Entra / Registrati',
+'userloginnocreate' => 'Entra',
'logout' => 'Esci',
'userlogout' => 'esci',
'notloggedin' => 'Accesso non effettuato',
@@ -568,26 +665,8 @@ L'account è stato creato correttamente. Non dimenticare di personalizzare le [[
'badretype' => 'Le password inserite non coincidono tra loro.',
'userexists' => 'Il nome utente inserito è già utilizzato.
Scegliere un nome utente diverso.',
-'youremail' => 'Indirizzo e-mail:',
-'username' => 'Nome utente:',
-'uid' => 'ID utente:',
-'prefs-memberingroups' => 'Membro {{PLURAL:$1|del gruppo|dei gruppi}}:',
-'yourrealname' => 'Nome vero:',
-'yourlanguage' => "Lingua dell'interfaccia:",
-'yourvariant' => 'Variante:',
-'yournick' => 'Soprannome (nickname):',
-'badsig' => 'Errore nella firma non standard, verificare i tag HTML.',
-'badsiglength' => 'La firma scelta è troppo lunga, non deve superare $1 {{PLURAL:$1|carattere|caratteri}}.',
-'yourgender' => 'Genere:',
-'gender-unknown' => 'Non specificato',
-'gender-male' => 'Maschile',
-'gender-female' => 'Femminile',
-'prefs-help-gender' => "Opzionale: consente di adattare i messaggi del software in funzione del genere dell'utente. Questa informazione sarà pubblica.",
-'email' => 'Indirizzo e-mail',
-'prefs-help-realname' => "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
'loginerror' => "Errore nell'accesso",
-'prefs-help-email' => "L'inserimento del proprio indirizzo e-mail è opzionale ma permette di ricevere la propria password via e-mail qualora venisse dimenticata. È inoltre possibile permettere di essere contattati dagli altri utenti attraverso un link nella propria pagina utente o nella relativa pagina di discussione, senza dover rivelare la propria identità.",
-'prefs-help-email-required' => 'Indirizzo e-mail necessario.',
+'createaccounterror' => "Impossìbile creare s'account: $1",
'nocookiesnew' => "La registrazione è stata completata, ma non è stato possibile accedere a {{SITENAME}} perché i cookie sono disattivati. Riprovare l'accesso con il nome utente e la password appena creati dopo aver attivato i cookie nel proprio browser.",
'nocookieslogin' => "L'accesso a {{SITENAME}} richiede l'uso dei cookie, che risultano disattivati. Riprovare l'accesso dopo aver attivato i cookie nel proprio browser.",
'noname' => 'Il nome utente indicato non è valido.',
@@ -596,10 +675,11 @@ Scegliere un nome utente diverso.',
'nosuchuser' => 'Non è registrato alcun utente di nome "$1". I nomi utente sono sensibili alle maiuscole. Verificare il nome inserito o [[Special:UserLogin/signup|creare un nuovo accesso]].',
'nosuchusershort' => 'Non è registrato alcun utente di nome "<nowiki>$1</nowiki>". Verificare il nome inserito.',
'nouserspecified' => 'È necessario specificare un nome utente.',
+'login-userblocked' => 'Questa utenza è bloccata. Non è possibile effettuare il login.',
'wrongpassword' => 'La password inserita non è corretta. Riprovare.',
'wrongpasswordempty' => 'Non è stata inserita alcuna password. Riprovare.',
-'passwordtooshort' => 'La password inserita non è valida o è troppo breve.
-Deve contenere almeno {{PLURAL:$1|1 carattere|$1 caratteri}} ed essere diversa dal nome utente.',
+'passwordtooshort' => 'Le password devono contenere almeno {{PLURAL:$1|1 carattere|$1 caratteri}}.',
+'password-name-match' => 'La password deve essere diversa dal nome utente.',
'mailmypassword' => 'Invia una nuova password al mio indirizzo e-mail',
'passwordremindertitle' => 'Servizio Password Reminder di {{SITENAME}}',
'passwordremindertext' => 'Qualcuno (probabilmente tu, con indirizzo IP $1) ha richiesto l\'invio di una nuova password di accesso a {{SITENAME}} ($4).
@@ -608,6 +688,7 @@ Una password temporanea per l\'utente "$2" è stata impostata a "$3".
Se non sei stato tu a fare la richiesta, oppure hai ritrovato la password e non desideri più cambiarla, puoi ignorare questo messaggio e continuare a usare la vecchia password.',
'noemail' => 'Nessun indirizzo e-mail registrato per l\'utente "$1".',
+'noemailcreate' => 'È necessario fornire un indirizzo e-mail valido',
'passwordsent' => 'Una nuova password è stata inviata all\'indirizzo e-mail registrato per l\'utente "$1".
Per favore, effettua un accesso non appena la ricevi.',
'blocked-mailpassword' => 'Per prevenire abusi, non è consentito usare la funzione "Invia nuova password" da un indirizzo IP bloccato.',
@@ -630,9 +711,11 @@ Perciò, gli utenti che usano questo indirizzo IP non possono creare altri accou
È opportuno eseguire un accesso quanto prima e cambiare la password immediatamente.
Se l\'accesso è stato creato per errore, si può ignorare questo messaggio.',
+'usernamehasherror' => 'Il nome utente non può contenere caratteri hash',
'login-throttled' => 'Sono stati effettuati troppi tentativi di accesso in breve tempo.
Riprovare più tardi.',
'loginlanguagelabel' => 'Lingua: $1',
+'suspicious-userlogout' => 'La tua richiesta di disconnessione è stata negata perché sembra inviata da un browser non funzionante o un proxy di caching.',
# Password reset dialog
'resetpass' => 'Cambia la password',
@@ -644,17 +727,13 @@ Riprovare più tardi.',
'retypenew' => 'Riscrivi la nuova password:',
'resetpass_submit' => 'Imposta la password e accedi al sito',
'resetpass_success' => 'La password è stata modificata. Accesso in corso...',
-'resetpass_bad_temporary' => 'Password temporanea non valida. La password potrebbe essere stata già cambiata, oppure potrebbe essere stata richiesta una nuova password temporanea.',
'resetpass_forbidden' => 'Non è possibile modificare le password',
'resetpass-no-info' => "Devi aver effettuato l'accesso per accedere a questa pagina direttamente.",
'resetpass-submit-loggedin' => 'Cambia password',
+'resetpass-submit-cancel' => 'Annulla',
'resetpass-wrong-oldpass' => 'Password temporanea o corrente non valida.
La password potrebbe essere stata già cambiata, oppure potrebbe essere stata richiesta una nuova password temporanea.',
'resetpass-temp-password' => 'Password temporanea:',
-'resetpass-log' => 'Reimpostazione password',
-'resetpass-logtext' => 'Di seguito sono elencati gli utenti la cui password è stata reimpostata da un amministratore.',
-'resetpass-logentry' => 'ha modificato la password di $1',
-'resetpass-comment' => 'Motivo della reimpostazione:',
# Edit page toolbar
'bold_sample' => 'Grassetto',
@@ -729,7 +808,6 @@ Si prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi ric
'blockededitsource' => "Di seguito vengono mostrate le '''modifiche apportate''' alla pagina '''$1''':",
'whitelistedittitle' => 'Accesso necessario per la modifica delle pagine',
'whitelistedittext' => 'Per modificare le pagine è necessario $1.',
-'confirmedittitle' => 'Conferma della e-mail necessaria per la modifica delle pagine',
'confirmedittext' => "Per essere abilitati alla modifica delle pagine è necessario confermare il proprio indirizzo e-mail. Per impostare e confermare l'indirizzo servirsi delle [[Special:Preferences|preferenze]].",
'nosuchsectiontitle' => 'Impossibile trovare la sezione',
'nosuchsectiontext' => 'Si è tentato di modificare una sezione inesistente.
@@ -748,9 +826,14 @@ Se si desidera creare la pagina ora, basta cominciare a scrivere il testo nella
Se il collegamento è stato seguito per errore, è sufficiente fare clic sul pulsante '''Indietro''' del proprio browser.",
'anontalkpagetext' => "----''Questa è la pagina di discussione di un utente anonimo, che non ha ancora creato un accesso o comunque non lo usa. Per identificarlo è quindi necessario usare il numero del suo indirizzo IP. Gli indirizzi IP possono però essere condivisi da più utenti. Se sei un utente anonimo e ritieni che i commenti presenti in questa pagina non si riferiscano a te, [[Special:UserLogin/signup|crea un nuovo accesso]] o [[Special:UserLogin|entra con quello che già hai]] per evitare di essere confuso con altri utenti anonimi in futuro.''",
'noarticletext' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati] oppure [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificare la pagina ora]</span>.',
+'noarticletext-nopermission' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati]</span>.',
'userpage-userdoesnotexist' => 'L\'account "$1" non corrisponde a un utente registrato. Verificare che si intenda davvero creare o modificare questa pagina.',
+'userpage-userdoesnotexist-view' => 'L\'account utente "$1" non è registrato.',
+'blocked-notice-logextract' => "Questo utente è attualmente bloccato.
+L'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
'clearyourcache' => "'''Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti.''' Per '''Mozilla / Firefox / Safari''': fare clic su ''Ricarica'' tenendo premuto il tasto delle maiuscole, oppure premere ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' su Mac); per '''Konqueror''': premere il pulsante ''Ricarica'' o il tasto ''F5''; per '''Opera''' può essere necessario svuotare completamente la cache dal menu ''Strumenti → Preferenze''; per '''Internet Explorer:''' mantenere premuto il tasto ''Ctrl'' mentre si preme il pulsante ''Aggiorna'' o premere ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Suggerimento:''' si consiglia di usare il pulsante 'Visualizza anteprima' per provare i nuovi CSS o JavaScript prima di salvarli.",
+'usercssyoucanpreview' => "'''Suggerimento:''' usa il pulsante 'Visualizza anteprima' per provare il tuo nuovo CSS prima di salvarlo.",
+'userjsyoucanpreview' => "'''Suggerimento:''' usa il pulsante 'Visualizza anteprima' per provare il tuo nuovo JavaScript prima di salvarlo.",
'usercsspreview' => "'''Questa è solo un'anteprima del proprio CSS personale. Le modifiche non sono ancora state salvate!'''",
'userjspreview' => "'''Questa è solo un'anteprima per provare il proprio JavaScript personale; le modifiche non sono ancora state salvate!'''",
'userinvalidcssjstitle' => "'''Attenzione:''' Non esiste alcuna skin con nome \"\$1\". Si noti che le pagine per i .css e .js personalizzati hanno l'iniziale del titolo minuscola, ad esempio {{ns:user}}:Esempio/monobook.css e non {{ns:user}}:Esempio/Monobook.css.",
@@ -791,13 +874,16 @@ Con l'invio del testo dichiari inoltre, sotto la tua responsabilità, che il tes
'readonlywarning' => "'''ATTENZIONE: Il database è stato bloccato per manutenzione, è quindi impossibile salvare le modifiche in questo momento. Per non perderle, è possibile copiare quanto inserito finora nella casella di modifica, incollarlo in un programma di elaborazione testi e salvarlo in attesa dello sblocco del database.'''
L'amministratore che ha bloccato il database ha fornito questa spiegazione: $1",
-'protectedpagewarning' => "'''ATTENZIONE: Questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano modificarla.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Questa pagina è stata bloccata in modo che solo gli utenti registrati possano modificarla.",
+'protectedpagewarning' => "'''ATTENZIONE: Questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano modificarla.'''
+L'ultimo elemento del registro è riportato di seguito per informazione:",
+'semiprotectedpagewarning' => "'''Nota:''' Questa pagina è stata bloccata in modo che solo gli utenti registrati possano modificarla.
+L'ultimo elemento del registro è riportato di seguito per informazione:",
'cascadeprotectedwarning' => "'''Attenzione:''' Questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano modificarla. Ciò avviene perché la pagina è inclusa {{PLURAL:\$1|nella pagina indicata di seguito, che è stata protetta|nelle pagine indicate di seguito, che sono state protette}} selezionando la protezione \"ricorsiva\":",
-'titleprotectedwarning' => "'''ATTENZIONE: Questa pagina è stata bloccata in modo che siano necessari [[Special:ListGroupRights|diritti specifici]] per crearla.'''",
-'templatesused' => 'Template utilizzati in questa pagina:',
-'templatesusedpreview' => 'Template utilizzati in questa anteprima:',
-'templatesusedsection' => 'Template utilizzati in questa sezione:',
+'titleprotectedwarning' => "'''ATTENZIONE: Questa pagina è stata bloccata in modo che siano necessari [[Special:ListGroupRights|diritti specifici]] per crearla.'''
+L'ultimo elemento del registro è riportato di seguito per informazione:",
+'templatesused' => '{{PLURAL:$1|Template utilizzato|Template utilizzati}} in questa pagina:',
+'templatesusedpreview' => '{{PLURAL:$1|Template utilizzato|Template utilizzati}} in questa anteprima:',
+'templatesusedsection' => '{{PLURAL:$1|Template utilizzato|Template utilizzati}} in questa sezione:',
'template-protected' => '(protetto)',
'template-semiprotected' => '(semiprotetto)',
'hiddencategories' => 'Questa pagina appartiene a {{PLURAL:$1|una categoria nascosta|$1 categorie nascoste}}:',
@@ -805,15 +891,17 @@ L'amministratore che ha bloccato il database ha fornito questa spiegazione: $1",
'nocreatetitle' => 'Creazione delle pagine limitata',
'nocreatetext' => 'La possibilità di creare nuove pagine su {{SITENAME}} è stata limitata ai soli utenti registrati. È possibile tornare indietro e modificare una pagina esistente, oppure [[Special:UserLogin|entrare o registrarsi]].',
'nocreate-loggedin' => 'Non si dispone dei permessi necessari a creare nuove pagine.',
+'sectioneditnotsupported-title' => 'Modifica delle sezioni non supportata',
+'sectioneditnotsupported-text' => 'La modifica delle sezioni non è supportata in questa pagina.',
'permissionserrors' => 'Errore nei permessi',
'permissionserrorstext' => "Non si dispone dei permessi necessari ad eseguire l'azione richiesta, per {{PLURAL:$1|il seguente motivo|i seguenti motivi}}:",
'permissionserrorstext-withaction' => 'Non si dispone dei permessi necessari per $2, per {{PLURAL:$1|il seguente motivo|i seguenti motivi}}:',
-'recreate-deleted-warn' => "'''Attenzione: si sta per ricreare una pagina già cancellata in passato.'''
+'recreate-moveddeleted-warn' => "'''Attenzione: si sta per ricreare una pagina già cancellata in passato.'''
Accertarsi che sia davvero opportuno continuare a modificare questa pagina.
-L'elenco delle relative cancellazioni viene riportato di seguito per comodità:",
-'deleted-notice' => "Questa pagina è stata cancellata. L'elenco delle relative cancellazioni viene riportato di seguito per informazione.",
-'deletelog-fulllog' => 'Visualizza registro completo',
+L'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per comodità:",
+'moveddeleted-notice' => "Questa pagina è stata cancellata. L'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per informazione.",
+'log-fulllog' => 'Visualizza log completo',
'edit-hook-aborted' => "La modifica è stata annullata dall'hook.
Non è stata restituita alcuna spiegazione.",
'edit-gone-missing' => 'Impossibile aggiornare la pagina.
@@ -835,6 +923,7 @@ Alcuni template non verranno inclusi.",
'post-expand-template-argument-category' => 'Pagine contenenti template con argomenti mancanti',
'parser-template-loop-warning' => 'Rilevato loop del template: [[$1]]',
'parser-template-recursion-depth-warning' => 'È stato raggiunto il limite di ricorsione nel template ($1)',
+'language-converter-depth-warning' => 'Limite di profondità del convertitore di lingua superato ($1)',
# "Undo" feature
'undo-success' => 'Questa modifica può essere annullata. Verificare il confronto presentato di seguito per accertarsi che il contenuto corrisponda a quanto desiderato e quindi salvare le modifiche per completare la procedura di annullamento.',
@@ -852,9 +941,9 @@ La motivazione del blocco fornita da $3 è la seguente: ''$2''",
'viewpagelogs' => 'Visualizza i log relativi a questa pagina.',
'nohistory' => 'Cronologia delle versioni di questa pagina non reperibile.',
'currentrev' => 'Versione attuale',
-'currentrev-asof' => 'Versione corrente delle $1',
+'currentrev-asof' => 'Versione attuale delle $1',
'revisionasof' => 'Versione delle $1',
-'revision-info' => 'Versione delle $1, autore: $2', # Additionally available: $3: revision id
+'revision-info' => 'Versione delle $1, autore: $2',
'previousrevision' => '← Versione meno recente',
'nextrevision' => 'Versione più recente →',
'currentrevisionlink' => 'Versione attuale',
@@ -867,7 +956,7 @@ La motivazione del blocco fornita da $3 è la seguente: ''$2''",
Legenda: '''({{int:cur}})''' = differenze con la versione attuale, '''({{int:last}})''' = differenze con la versione precedente, '''{{int:minoreditletter}}''' = modifica minore",
'history-fieldset-title' => 'Scorri nella cronologia',
-'deletedrev' => '[cancellata]',
+'history-show-deleted' => 'Solo quelli cancellati',
'histfirst' => 'Prima',
'histlast' => 'Ultima',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -876,68 +965,107 @@ Legenda: '''({{int:cur}})''' = differenze con la versione attuale, '''({{int:las
# Revision feed
'history-feed-title' => 'Cronologia',
'history-feed-description' => 'Cronologia della pagina su questo sito',
-'history-feed-item-nocomment' => '$1 il $2', # user at time
+'history-feed-item-nocomment' => '$1 il $2',
'history-feed-empty' => 'La pagina richiesta non esiste; potrebbe essere stata cancellata dal sito o rinominata. Verificare con la [[Special:Search|pagina di ricerca]] se vi sono nuove pagine.',
# Revision deletion
-'rev-deleted-comment' => '(commento rimosso)',
-'rev-deleted-user' => '(nome utente rimosso)',
-'rev-deleted-event' => '(azione del log rimossa)',
-'rev-deleted-text-permission' => "Questa versione della pagina è stata '''cancellata'''.
-Consultare il [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} log di cancellazione] per ulteriori dettagli.",
-'rev-deleted-text-view' => "Questa versione della pagina è stata '''cancellata'''.
-Gli amministratori possono ancora visualizzarla; consultare il [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log di cancellazione] per ulteriori dettagli.",
-'rev-deleted-no-diff' => "Non è possibile visualizzare questo confronto tra versioni perché una delle revisioni è stata '''cancellata'''.
-Consultare il [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log di cancellazione] per ulteriori dettagli.",
-'rev-deleted-unhide-diff' => "Una delle revisioni di questo confronto tra versioni è stata '''cancellata'''.
-Consultare il [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} log di cancellazione] per ulteriori dettagli.
+'rev-deleted-comment' => '(commento rimosso)',
+'rev-deleted-user' => '(nome utente rimosso)',
+'rev-deleted-event' => '(azione del log rimossa)',
+'rev-deleted-user-contribs' => '[nome utente o indirizzo IP rimosso - edit nascosto dalla cronologia]',
+'rev-deleted-text-permission' => "Questa versione della pagina è stata '''cancellata'''.
+Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.",
+'rev-deleted-text-unhide' => "Questa versione della pagina è stata '''cancellata'''.
+Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.
+Agli amministratori è ancora consentito [$1 visualizzare questa versione] se necessario.",
+'rev-suppressed-text-unhide' => "Questa versione della pagina è stata '''rimossa'''.
+Consultare il [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} log di rimozione] per ulteriori dettagli.
+Agli amministratori è ancora consentito [$1 visualizzare questa versione] se necessario.",
+'rev-deleted-text-view' => "Questa versione della pagina è stata '''cancellata'''.
+Gli amministratori possono ancora visualizzarla; consultare il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.",
+'rev-suppressed-text-view' => "Questa versione della pagina è stata '''rimossa'''.
+Gli amministratori possono ancora visualizzarla; consultare il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log di rimozione] per ulteriori dettagli.",
+'rev-deleted-no-diff' => "Non è possibile visualizzare questo confronto tra versioni perché una delle revisioni è stata '''cancellata'''.
+Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.",
+'rev-suppressed-no-diff' => "Non è possibile visualizzare questo confronto tra versioni perché una delle revisioni è stata '''cancellata'''.",
+'rev-deleted-unhide-diff' => "Una delle revisioni di questo confronto tra versioni è stata '''cancellata'''.
+Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.
Agli amministratori è ancora consentito [$1 visualizzare il confronto] se necessario.",
-'rev-delundel' => 'mostra/nascondi',
-'revisiondelete' => 'Cancella o ripristina versioni',
-'revdelete-nooldid-title' => 'Versione non specificata',
-'revdelete-nooldid-text' => 'Non è stata specificata alcuna versione della pagina su cui eseguire questa funzione, la versione specificata non esiste oppure si sta tentando di nascondere la versione attuale.',
-'revdelete-nologtype-title' => 'Nessun tipo di registro specificato',
-'revdelete-nologtype-text' => "Non è stato specificato alcun tipo di registro su cui eseguire l'azione.",
-'revdelete-toomanytargets-title' => 'Troppi target',
-'revdelete-toomanytargets-text' => "Sono stati specificati troppi tipi di target per eseguire l'azione.",
-'revdelete-nologid-title' => 'Errore di indicazione del log',
-'revdelete-nologid-text' => 'Non è stato specificato un evento del registro su cui eseguire questa funzione oppure il log non esiste.',
-'revdelete-selected' => "'''{{PLURAL:$2|Versione selezionata|Versioni selezionate}} di [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Evento del registro selezionato|Eventi del registro selezionati}}:'''",
-'revdelete-text' => "'''Le versioni cancellate restano visibili nella cronologia della pagina, mentre il testo contenuto non è accessibile al pubblico.'''
-
-Gli altri amministratori di {{SITENAME}} potranno accedere comunque ai contenuti nascosti e ripristinarli attraverso questa stessa interfaccia, se non sono state impostate altre limitazioni in fase di installazione del sito.
-Conferma che è tua intenzione procedere a tale cancellazione, che hai piena consapevolezza delle conseguenze della tua azione e che essa è conforme alle linee guida stabilite in [[{{MediaWiki:Policy-url}}]].",
-'revdelete-suppress-text' => "La rimozione deve essere utilizzata '''unicamente''' nei seguenti casi:
+'rev-suppressed-unhide-diff' => "Una delle revisioni di questo confronto di versioni è stata '''rimossa'''.
+Potrebbero esserci dettagli nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log delle rimozioni].
+In quanto amministratore puoi ancora [$1 visualizzare questo confronto di versioni], se vuoi procedere.",
+'rev-deleted-diff-view' => "Una delle revisioni di questo confronto di versioni è stata '''cancellata'''.
+In quanto amministratore, puoi visualizzare questo confronto di versioni; potrebbero esserci dettagli nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log delle cancellazioni].",
+'rev-suppressed-diff-view' => "Una delle revisioni di questo confronto di versioni è stata '''rimossa'''.
+In quanto amministratore puoi visualizzare questo confronto di versioni; potrebbero esserci dettagli nel [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log delle rimozioni].",
+'rev-delundel' => 'mostra/nascondi',
+'rev-showdeleted' => 'mostra',
+'revisiondelete' => 'Cancella o ripristina versioni',
+'revdelete-nooldid-title' => 'Versione non specificata',
+'revdelete-nooldid-text' => 'Non è stata specificata alcuna versione della pagina su cui eseguire questa funzione, la versione specificata non esiste oppure si sta tentando di nascondere la versione attuale.',
+'revdelete-nologtype-title' => 'Nessun tipo di registro specificato',
+'revdelete-nologtype-text' => "Non è stato specificato alcun tipo di registro su cui eseguire l'azione.",
+'revdelete-nologid-title' => 'Errore di indicazione del log',
+'revdelete-nologid-text' => 'Non è stato specificato un evento del registro su cui eseguire questa funzione oppure il log non esiste.',
+'revdelete-no-file' => 'Il file specificato non esiste.',
+'revdelete-show-file-confirm' => 'Si desidera visualizzare la versione cancellata del file "<nowiki>$1</nowiki>" del $2 alle $3?',
+'revdelete-show-file-submit' => 'Sì',
+'revdelete-selected' => "'''{{PLURAL:$2|Versione selezionata|Versioni selezionate}} di [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evento del registro selezionato|Eventi del registro selezionati}}:'''",
+'revdelete-text' => "'''Le versioni cancellate restano visibili nella cronologia della pagina, mentre il testo contenuto non è accessibile al pubblico.'''
+Gli altri amministratori di {{SITENAME}} potranno accedere comunque ai contenuti nascosti e ripristinarli attraverso questa stessa interfaccia, se non sono state impostate altre limitazioni in fase di installazione del sito.",
+'revdelete-confirm' => 'Per favore conferma che questo è quanto intendi fare, che sei consapevole delle conseguenze, e che stai facendo questo nel rispetto delle [[{{MediaWiki:Policy-url}}|linee guida]].',
+'revdelete-suppress-text' => "La rimozione deve essere utilizzata '''unicamente''' nei seguenti casi:
* Dati personali inopportuni
*: ''indirizzi, numeri di telefono, codici fiscali, ecc.''",
-'revdelete-legend' => 'Imposta le seguenti limitazioni sulle versioni cancellate:',
-'revdelete-hide-text' => 'Nascondi il testo della versione',
-'revdelete-hide-name' => 'Nascondi azione e oggetto della stessa',
-'revdelete-hide-comment' => "Nascondi l'oggetto della modifica",
-'revdelete-hide-user' => "Nascondi il nome o l'indirizzo IP dell'autore",
-'revdelete-hide-restricted' => 'Nascondi le informazioni indicate anche agli amministratori',
-'revdelete-suppress' => 'Nascondi le informazioni anche agli amministratori',
-'revdelete-hide-image' => 'Nascondi i contenuti del file',
-'revdelete-unsuppress' => 'Elimina le limitazioni sulle revisioni ripristinate',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Applica alla revisione selezionata',
-'revdelete-logentry' => 'ha modificato la visibilità per le revisioni di [[$1]]',
-'logdelete-logentry' => "ha modificato la visibilità dell'evento [[$1]]",
-'revdelete-success' => "'''Visibilità della revisione aggiornata correttamente.'''",
-'logdelete-success' => "'''Visibilità dell'evento impostata correttamente.'''",
-'revdel-restore' => 'cambia la visibilità',
-'pagehist' => 'Cronologia della pagina',
-'deletedhist' => 'Cronologia cancellata',
-'revdelete-content' => 'contenuto',
-'revdelete-summary' => 'oggetto della modifica',
-'revdelete-uname' => 'nome utente',
-'revdelete-restricted' => 'limitazioni ai soli amministratori attivate',
-'revdelete-unrestricted' => 'limitazioni ai soli amministratori rimosse',
-'revdelete-hid' => 'nascosto $1',
-'revdelete-unhid' => 'rendi visibile $1',
-'revdelete-log-message' => '$1 per $2 {{PLURAL:$2|revisione|revisioni}}',
-'logdelete-log-message' => '$1 per $2 {{PLURAL:$2|evento|eventi}}',
+'revdelete-legend' => 'Imposta le seguenti limitazioni sulle versioni cancellate:',
+'revdelete-hide-text' => 'Nascondi il testo della versione',
+'revdelete-hide-image' => 'Nascondi i contenuti del file',
+'revdelete-hide-name' => 'Nascondi azione e oggetto della stessa',
+'revdelete-hide-comment' => "Nascondi l'oggetto della modifica",
+'revdelete-hide-user' => "Nascondi il nome o l'indirizzo IP dell'autore",
+'revdelete-hide-restricted' => 'Nascondi le informazioni indicate anche agli amministratori',
+'revdelete-radio-same' => '(non cambiare)',
+'revdelete-radio-set' => 'Sì',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Nascondi le informazioni anche agli amministratori',
+'revdelete-unsuppress' => 'Elimina le limitazioni sulle revisioni ripristinate',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Applica {{PLURAL:$1|alla revisione selezionata|alle revisioni selezionate}}',
+'revdelete-logentry' => 'ha modificato la visibilità per le revisioni di [[$1]]',
+'logdelete-logentry' => "ha modificato la visibilità dell'evento [[$1]]",
+'revdelete-success' => "'''Visibilità della revisione aggiornata correttamente.'''",
+'revdelete-failure' => "'''La visibilità della versione non può essere aggiornata:'''
+$1",
+'logdelete-success' => "'''Visibilità dell'evento impostata correttamente.'''",
+'logdelete-failure' => "'''La visibilità dell'evento non può essere impostata:'''
+$1",
+'revdel-restore' => 'cambia la visibilità',
+'pagehist' => 'Cronologia della pagina',
+'deletedhist' => 'Cronologia cancellata',
+'revdelete-content' => 'contenuto',
+'revdelete-summary' => 'oggetto della modifica',
+'revdelete-uname' => 'nome utente',
+'revdelete-restricted' => 'limitazioni ai soli amministratori attivate',
+'revdelete-unrestricted' => 'limitazioni ai soli amministratori rimosse',
+'revdelete-hid' => 'nascosto $1',
+'revdelete-unhid' => 'rendi visibile $1',
+'revdelete-log-message' => '$1 per $2 {{PLURAL:$2|revisione|revisioni}}',
+'logdelete-log-message' => '$1 per $2 {{PLURAL:$2|evento|eventi}}',
+'revdelete-hide-current' => "Impossibile nascondere l'oggetto con data $1 $2 in quanto è la revisione corrente.",
+'revdelete-show-no-access' => 'Impossibile mostrare l\'oggetto con data $1 $2 in quanto è stato identificato come "riservato" e non si dispone del relativo accesso.',
+'revdelete-modify-no-access' => 'Impossibile modificare l\'oggetto con data $1 $2 in quanto è stato identificato come "riservato" e non si dispone del relativo accesso.',
+'revdelete-modify-missing' => "Impossibile modificare l'oggetto con ID $1 in quanto non è presente nel database.",
+'revdelete-no-change' => "'''Attenzione:''' l'oggetto con data $1 $2 aveva già le impostazioni di visibilità richieste.",
+'revdelete-concurrent-change' => "Impossibile modificare l'oggetto con data $1 $2 in quanto il suo stato è stato modificato da un altro utente mentre se ne tentava la modifica.",
+'revdelete-only-restricted' => "Errore nel nascondere l'oggetto datato $1, $2: non è possibile nascondere gli oggetti alla vista degli amministratori senza selezionare almeno un'altra delle opzioni di rimozione.",
+'revdelete-reason-dropdown' => '*Motivazioni più comuni per la cancellazione
+** Violazione di copyright
+** Informazioni personali inappropriate',
+'revdelete-otherreason' => 'Altra motivazione o motivazione aggiuntiva:',
+'revdelete-reasonotherlist' => 'Altra motivazione',
+'revdelete-edit-reasonlist' => 'Modifica le motivazioni per la cancellazione',
+'revdelete-offender' => 'Autore della versione:',
# Suppression log
'suppressionlog' => 'Log delle soppressioni',
@@ -973,67 +1101,13 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'mergelogpagetext' => 'Di seguito sono elencate le ultime operazioni di unione della cronologia di due pagine.',
# Diffs
-'history-title' => 'Cronologia delle modifiche di "$1"',
-'difference' => '(Differenze fra le revisioni)',
-'lineno' => 'Riga $1:',
-'compareselectedversions' => 'Confronta le versioni selezionate',
-'visualcomparison' => 'Confronto visuale',
-'wikicodecomparison' => 'Confronto tra comandi wiki',
-'editundo' => 'annulla',
-'diff-multi' => '({{PLURAL:$1|Una revisione intermedia non mostrata|$1 revisioni intermedie non mostrate}}.)',
-'diff-movedto' => 'spostato a $1',
-'diff-styleadded' => 'stile $1 aggiunto',
-'diff-added' => '$1 aggiunto',
-'diff-changedto' => 'cambiato in $1',
-'diff-movedoutof' => 'spostato fuori da $1',
-'diff-styleremoved' => 'stile $1 rimosso',
-'diff-removed' => '$1 rimosso',
-'diff-changedfrom' => 'cambiato da $1',
-'diff-src' => 'origine',
-'diff-withdestination' => 'con destinazione $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'larghezza',
-'diff-height' => 'altezza',
-'diff-p' => "un '''paragrafo'''",
-'diff-blockquote' => "una '''citazione'''",
-'diff-h1' => "un''''intestazione (livello 1)'''",
-'diff-h2' => "un''''intestazione (livello 2)'''",
-'diff-h3' => "un''''intestazione (livello 3)'''",
-'diff-h4' => "un''''intestazione (livello 4)'''",
-'diff-h5' => "un''''intestazione (livello 5)'''",
-'diff-pre' => "un '''blocco preformattato'''",
-'diff-div' => "una '''divisione'''",
-'diff-ul' => "un '''elenco puntato'''",
-'diff-ol' => "un '''elenco numerato'''",
-'diff-li' => "un '''elemento di lista'''",
-'diff-table' => "una '''tabella'''",
-'diff-tbody' => "un '''contenuto di tabella'''",
-'diff-tr' => "una '''riga'''",
-'diff-td' => "una '''cella'''",
-'diff-th' => "un''''intestazione'''",
-'diff-br' => "un '''a capo'''",
-'diff-hr' => "una '''linea orizzontale'''",
-'diff-code' => "un '''blocco di codice per computer'''",
-'diff-dl' => "una '''lista di definizioni'''",
-'diff-dt' => "un '''termine di definizione'''",
-'diff-dd' => "una '''definizione'''",
-'diff-input' => "un '''input'''",
-'diff-form' => "un '''modulo'''",
-'diff-img' => "un''''immagine'''",
-'diff-span' => "uno '''span'''",
-'diff-a' => "un '''link'''",
-'diff-i' => "'''corsivo'''",
-'diff-b' => "'''grassetto'''",
-'diff-strong' => "'''grassetto'''",
-'diff-em' => "'''enfasi'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''cancellato'''",
-'diff-tt' => "'''spaziatura fissa'''",
-'diff-sub' => "'''pedice'''",
-'diff-sup' => "'''apice'''",
-'diff-strike' => "'''barrato'''",
+'history-title' => 'Cronologia delle modifiche di "$1"',
+'difference' => '(Differenze fra le revisioni)',
+'lineno' => 'Riga $1:',
+'compareselectedversions' => 'Confronta le versioni selezionate',
+'showhideselectedversions' => 'Mostra/nascondi versioni selezionate',
+'editundo' => 'annulla',
+'diff-multi' => '({{PLURAL:$1|Una revisione intermedia non mostrata|$1 revisioni intermedie non mostrate}}.)',
# Search results
'searchresults' => 'Risultati della ricerca',
@@ -1041,28 +1115,25 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'searchresulttext' => 'Per maggiori informazioni sulla ricerca interna di {{SITENAME}}, vedi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ricerca di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pagine che iniziano per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutte le pagine che puntano a "$1"]])',
'searchsubtitleinvalid' => "Ricerca di '''$1'''",
-'noexactmatch' => "'''La pagina \"\$1\" non esiste.''' È possibile [[:\$1|crearla ora]].",
-'noexactmatch-nocreate' => "'''La pagina con titolo \"\$1\" non esiste.'''",
'toomanymatches' => 'Troppe corrispondenze. Modificare la richiesta.',
'titlematches' => 'Corrispondenze nel titolo delle pagine',
'notitlematches' => 'Nessuna corrispondenza nei titoli delle pagine',
'textmatches' => 'Corrispondenze nel testo delle pagine',
'notextmatches' => 'Nessuna corrispondenza nel testo delle pagine',
-'prevn' => 'precedenti $1',
-'nextn' => 'successivi $1',
+'prevn' => '{{PLURAL:$1|precedente|precedenti $1}}',
+'nextn' => '{{PLURAL:$1|successivo|successivi $1}}',
'prevn-title' => '{{PLURAL:$1|Risultato precedente|$1 risultati precedenti}}',
'nextn-title' => '{{PLURAL:$1|Risultato successivo|$1 risultati successivi}}',
'shown-title' => 'Mostra {{PLURAL:$1|un risultato|$1 risultati}} per pagina',
-'viewprevnext' => 'Vedi ($1) ($2) ($3).',
+'viewprevnext' => 'Vedi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opzioni di ricerca',
'searchmenu-exists' => "'''Sul sito esiste una pagina il cui nome è \"[[:\$1]]\"'''",
'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
'searchhelp-url' => 'Help:Indice',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza le pagine con questo prefisso]]',
'searchprofile-articles' => 'Pagine di contenuti',
-'searchprofile-articles-and-proj' => 'Contenuti e pagine relative al progetto',
-'searchprofile-project' => 'Pagine relative al progetto',
-'searchprofile-images' => 'File',
+'searchprofile-project' => 'Pagine di aiuto e relative al progetto',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tutto',
'searchprofile-advanced' => 'Avanzata',
'searchprofile-articles-tooltip' => 'Cerca in $1',
@@ -1070,8 +1141,6 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'searchprofile-images-tooltip' => 'Cerca file',
'searchprofile-everything-tooltip' => 'Cerca ovunque (incluse le pagine di discussione)',
'searchprofile-advanced-tooltip' => 'Cerca nei namespace personalizzati',
-'prefs-search-nsdefault' => 'Ricerca utilizzando i valori predefiniti:',
-'prefs-search-nscustom' => 'Ricerca nei namespace personalizzati:',
'search-result-size' => '$1 ({{PLURAL:$2|una parola|$2 parole}})',
'search-result-score' => 'Rilevanza: $1%',
'search-redirect' => '(redirect $1)',
@@ -1084,11 +1153,12 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'search-mwsuggest-disabled' => 'senza suggerimenti',
'search-relatedarticle' => 'Risultati correlati',
'mwsuggest-disable' => 'Disattiva suggerimenti AJAX',
+'searcheverything-enable' => 'Cerca in tutti i namespace',
'searchrelated' => 'correlati',
'searchall' => 'tutti',
'showingresults' => "Di seguito {{PLURAL:$1|viene presentato al massimo '''1''' risultato|vengono presentati al massimo '''$1''' risultati}} a partire dal numero '''$2'''.",
'showingresultsnum' => "Di seguito {{PLURAL:$3|viene presentato '''1''' risultato|vengono presentati '''$3''' risultati}} a partire dal numero '''$2'''.",
-'showingresultstotal' => "Di seguito {{PLURAL:$4|viene mostrato il risultato '''$1''' di '''$3'''|vengono mostrati i risultati '''$1 - $2''' di '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
'nonefound' => "'''Nota''': la ricerca è effettuata per default solo in alcuni namespace. Prova a premettere ''all:'' al testo della ricerca per cercare in tutti i namespace (compresi pagine di discussione, template, ecc) oppure usa il namespace desiderato come prefisso.",
'search-nonefound' => 'La ricerca non ha prodotto risultati.',
'powersearch' => 'Ricerca',
@@ -1096,111 +1166,146 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'powersearch-ns' => 'Cerca nei namespace:',
'powersearch-redir' => 'Elenca redirect',
'powersearch-field' => 'Cerca',
+'powersearch-togglelabel' => 'Seleziona:',
+'powersearch-toggleall' => 'Tutti',
+'powersearch-togglenone' => 'Nessuno',
'search-external' => 'Ricerca esterna',
'searchdisabled' => 'La ricerca interna di {{SITENAME}} non è attiva; nel frattempo si può provare ad usare un motore di ricerca esterno come Google. (Si noti però che i contenuti di {{SITENAME}} presenti in tali motori potrebbero non essere aggiornati.)',
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Nessuno',
+'qbsettings-fixedleft' => 'Fisso a sinistra',
+'qbsettings-fixedright' => 'Fisso a destra',
+'qbsettings-floatingleft' => 'Fluttuante a sinistra',
+'qbsettings-floatingright' => 'Fluttuante a destra',
+
# Preferences page
-'preferences' => 'Preferenze',
-'mypreferences' => 'preferenze',
-'prefs-edits' => 'Modifiche effettuate:',
-'prefsnologin' => 'Accesso non effettuato',
-'prefsnologintext' => 'Per poter personalizzare le preferenze è necessario effettuare l\'<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} accesso]</span>.',
-'prefsreset' => 'Le preferenze sono state ripristinate ai valori predefiniti.',
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Nessuno',
-'qbsettings-fixedleft' => 'Fisso a sinistra',
-'qbsettings-fixedright' => 'Fisso a destra',
-'qbsettings-floatingleft' => 'Fluttuante a sinistra',
-'qbsettings-floatingright' => 'Fluttuante a destra',
-'changepassword' => 'Cambia password',
-'skin' => 'Aspetto grafico (skin)',
-'skin-preview' => 'Anteprima',
-'math' => 'Formule matematiche',
-'dateformat' => 'Formato della data',
-'datedefault' => 'Nessuna preferenza',
-'datetime' => 'Data e ora',
-'math_failure' => 'Errore del parser',
-'math_unknown_error' => 'errore sconosciuto',
-'math_unknown_function' => 'funzione sconosciuta',
-'math_lexing_error' => 'errore lessicale',
-'math_syntax_error' => 'errore di sintassi',
-'math_image_error' => 'Conversione in PNG non riuscita; verificare che siano correttamente installati i seguenti programmi: latex, dvips, gs e convert.',
-'math_bad_tmpdir' => 'Impossibile scrivere o creare la directory temporanea per math',
-'math_bad_output' => 'Impossibile scrivere o creare la directory di output per math',
-'math_notexvc' => 'Eseguibile texvc mancante; per favore consultare math/README per la configurazione.',
-'prefs-personal' => 'Profilo utente',
-'prefs-rc' => 'Ultime modifiche',
-'prefs-watchlist' => 'Osservati speciali',
-'prefs-watchlist-days' => 'Numero di giorni da mostrare negli osservati speciali:',
-'prefs-watchlist-days-max' => '(massimo 7 giorni)',
-'prefs-watchlist-edits' => 'Numero di modifiche da mostrare con le funzioni avanzate:',
-'prefs-watchlist-edits-max' => '(numero massimo: 1000)',
-'prefs-misc' => 'Varie',
-'prefs-resetpass' => 'Cambia password',
-'saveprefs' => 'Salva le preferenze',
-'resetprefs' => 'Reimposta le preferenze',
-'restoreprefs' => 'Ripristina le impostazioni di default',
-'textboxsize' => 'Casella di modifica',
-'prefs-edit-boxsize' => 'Dimensioni della finestra di modifica.',
-'rows' => 'Righe:',
-'columns' => 'Colonne:',
-'searchresultshead' => 'Ricerca',
-'resultsperpage' => 'Numero di risultati per pagina:',
-'contextlines' => 'Righe di testo per ciascun risultato:',
-'contextchars' => 'Numero di caratteri di contesto:',
-'stub-threshold' => 'Valore minimo per i <a href="#" class="stub">collegamenti agli stub</a>, in byte:',
-'recentchangesdays' => 'Numero di giorni da mostrare nelle ultime modifiche:',
-'recentchangesdays-max' => '(massimo $1 {{PLURAL:$1|giorno|giorni}})',
-'recentchangescount' => 'Numero di righe nelle ultime modifiche, cronologie e registri (valore predefinito):',
-'savedprefs' => 'Le preferenze sono state salvate.',
-'timezonelegend' => 'Fuso orario:',
-'timezonetext' => "¹Numero di ore di differenza fra l'ora locale e l'ora del server (UTC).",
-'localtime' => 'Ora locale:',
-'timezoneselect' => 'Fuso orario:',
-'timezoneuseserverdefault' => 'Usa ora del server',
-'timezoneuseoffset' => 'Altro (specificare differenza)',
-'timezoneoffset' => 'Differenza¹:',
-'servertime' => 'Ora del server:',
-'guesstimezone' => "Usa l'ora del browser",
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceano Atlantico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceano Indiano',
-'timezoneregion-pacific' => 'Oceano Pacifico',
-'allowemail' => 'Abilita la ricezione di messaggi e-mail da altri utenti',
-'prefs-searchoptions' => 'Opzioni di ricerca',
-'prefs-namespaces' => 'Namespace',
-'defaultns' => 'Cerca in questi namespace se non diversamente specificato:',
-'default' => 'predefinito',
-'files' => 'File',
-'prefs-custom-css' => 'CSS personalizzato',
-'prefs-custom-js' => 'JS personalizzato',
+'preferences' => 'Preferenze',
+'mypreferences' => 'preferenze',
+'prefs-edits' => 'Modifiche effettuate:',
+'prefsnologin' => 'Accesso non effettuato',
+'prefsnologintext' => 'Per poter personalizzare le preferenze è necessario effettuare l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accesso]</span>.',
+'changepassword' => 'Cambia password',
+'prefs-skin' => 'Aspetto grafico (skin)',
+'skin-preview' => 'Anteprima',
+'prefs-math' => 'Formule matematiche',
+'datedefault' => 'Nessuna preferenza',
+'prefs-datetime' => 'Data e ora',
+'prefs-personal' => 'Profilo utente',
+'prefs-rc' => 'Ultime modifiche',
+'prefs-watchlist' => 'Osservati speciali',
+'prefs-watchlist-days' => 'Numero di giorni da mostrare negli osservati speciali:',
+'prefs-watchlist-days-max' => '(massimo 7 giorni)',
+'prefs-watchlist-edits' => 'Numero di modifiche da mostrare con le funzioni avanzate:',
+'prefs-watchlist-edits-max' => '(numero massimo: 1000)',
+'prefs-watchlist-token' => 'Token Osservati speciali:',
+'prefs-misc' => 'Varie',
+'prefs-resetpass' => 'Cambia password',
+'prefs-email' => 'Opzioni email',
+'prefs-rendering' => 'Aspetto',
+'saveprefs' => 'Salva le preferenze',
+'resetprefs' => 'Reimposta le preferenze',
+'restoreprefs' => 'Ripristina le impostazioni di default',
+'prefs-editing' => 'Casella di modifica',
+'prefs-edit-boxsize' => 'Dimensioni della finestra di modifica.',
+'rows' => 'Righe:',
+'columns' => 'Colonne:',
+'searchresultshead' => 'Ricerca',
+'resultsperpage' => 'Numero di risultati per pagina:',
+'contextlines' => 'Righe di testo per ciascun risultato:',
+'contextchars' => 'Numero di caratteri di contesto:',
+'stub-threshold' => 'Valore minimo per i <a href="#" class="stub">collegamenti agli stub</a>, in byte:',
+'recentchangesdays' => 'Numero di giorni da mostrare nelle ultime modifiche:',
+'recentchangesdays-max' => '(massimo $1 {{PLURAL:$1|giorno|giorni}})',
+'recentchangescount' => 'Numero di modifiche da mostrare per default:',
+'prefs-help-recentchangescount' => 'Comprende ultime modifiche, cronologie e registri.',
+'prefs-help-watchlist-token' => "Compilando questo campo con una chiave segreta verrà generato un feed RSS per i propri osservati speciali. Chiunque conosca la chiave in questo campo potrà leggere gli osservati speciali, quindi assicurasi di inserire un valore sicuro. Qui c'è un valore generato casualmente che si può usare: $1",
+'savedprefs' => 'Le preferenze sono state salvate.',
+'timezonelegend' => 'Fuso orario:',
+'localtime' => 'Ora locale:',
+'timezoneuseserverdefault' => 'Usa ora del server',
+'timezoneuseoffset' => 'Altro (specificare differenza)',
+'timezoneoffset' => 'Differenza¹:',
+'servertime' => 'Ora del server:',
+'guesstimezone' => "Usa l'ora del browser",
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antartide',
+'timezoneregion-arctic' => 'Artide',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceano Atlantico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceano Indiano',
+'timezoneregion-pacific' => 'Oceano Pacifico',
+'allowemail' => 'Abilita la ricezione di messaggi e-mail da altri utenti',
+'prefs-searchoptions' => 'Opzioni di ricerca',
+'prefs-namespaces' => 'Namespace',
+'defaultns' => 'In caso contrario, cerca in questi namespace:',
+'default' => 'predefinito',
+'prefs-files' => 'File',
+'prefs-custom-css' => 'CSS personalizzato',
+'prefs-custom-js' => 'JS personalizzato',
+'prefs-reset-intro' => "È possibile usare questa pagina per reimpostare le proprie preferenze a quelle predefinite del sito.
+L'operazione non può essere annullata.",
+'prefs-emailconfirm-label' => "Conferma dell'e-mail:",
+'prefs-textboxsize' => 'Dimensione della finestra di modifica',
+'youremail' => 'Indirizzo e-mail:',
+'username' => 'Nome utente:',
+'uid' => 'ID utente:',
+'prefs-memberingroups' => 'Membro {{PLURAL:$1|del gruppo|dei gruppi}}:',
+'prefs-registration' => 'Data di registrazione:',
+'yourrealname' => 'Nome vero:',
+'yourlanguage' => "Lingua dell'interfaccia:",
+'yourvariant' => 'Variante:',
+'yournick' => 'Soprannome (nickname):',
+'prefs-help-signature' => 'I commenti nelle pagine di discussione devono essere firmati con "<nowiki>~~~~</nowiki>" che verrà convertito nella propria firma seguita dalla data.',
+'badsig' => 'Errore nella firma non standard, verificare i tag HTML.',
+'badsiglength' => 'La firma scelta è troppo lunga, non deve superare $1 {{PLURAL:$1|carattere|caratteri}}.',
+'yourgender' => 'Genere:',
+'gender-unknown' => 'Non specificato',
+'gender-male' => 'Maschile',
+'gender-female' => 'Femminile',
+'prefs-help-gender' => "Opzionale: consente di adattare i messaggi del software in funzione del genere dell'utente. Questa informazione sarà pubblica.",
+'email' => 'Indirizzo e-mail',
+'prefs-help-realname' => "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
+'prefs-help-email' => "L'inserimento del proprio indirizzo e-mail è opzionale ma permette di ricevere la propria password via e-mail qualora venisse dimenticata. È inoltre possibile permettere di essere contattati dagli altri utenti attraverso un link nella propria pagina utente o nella relativa pagina di discussione, senza dover rivelare la propria identità.",
+'prefs-help-email-required' => 'Indirizzo e-mail necessario.',
+'prefs-info' => 'Informazioni di base',
+'prefs-i18n' => 'Internazionalizzazione',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Formato data',
+'prefs-timeoffset' => 'Ore di differenza',
+'prefs-advancedediting' => 'Opzioni avanzate',
+'prefs-advancedrc' => 'Opzioni avanzate',
+'prefs-advancedrendering' => 'Opzioni avanzate',
+'prefs-advancedsearchoptions' => 'Opzioni avanzate',
+'prefs-advancedwatchlist' => 'Opzioni avanzate',
+'prefs-display' => 'Opzioni di visualizzazione',
+'prefs-diffs' => 'Differenze',
# User rights
-'userrights' => 'Gestione dei permessi relativi agli utenti', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gestione dei gruppi utente',
-'userrights-user-editname' => 'Inserire il nome utente:',
-'editusergroup' => 'Modifica gruppi utente',
-'editinguser' => "Modifica dei diritti assegnati all'utente '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modifica gruppi utente',
-'saveusergroups' => 'Salva gruppi utente',
-'userrights-groupsmember' => 'Appartiene ai gruppi:',
-'userrights-groups-help' => "È possibile modificare i gruppi cui è assegnato l'utente.
+'userrights' => 'Gestione dei permessi relativi agli utenti',
+'userrights-lookup-user' => 'Gestione dei gruppi utente',
+'userrights-user-editname' => 'Inserire il nome utente:',
+'editusergroup' => 'Modifica gruppi utente',
+'editinguser' => "Modifica dei diritti assegnati all'utente '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modifica gruppi utente',
+'saveusergroups' => 'Salva gruppi utente',
+'userrights-groupsmember' => 'Appartiene ai gruppi:',
+'userrights-groupsmember-auto' => 'Membro implicito di:',
+'userrights-groups-help' => "È possibile modificare i gruppi cui è assegnato l'utente.
* Una casella di spunta selezionata indica l'appartenenza dell'utente al gruppo
* Una casella di spunta deselezionata indica la sua mancata appartenenza al gruppo.
* Il simbolo * indica che non è possibile eliminare l'appartenenza al gruppo dopo averla aggiunta (o vice versa).",
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'Non si dispone dei permessi necessari per modificare i diritti degli utenti su altri siti.',
-'userrights-nodatabase' => 'Il database $1 non esiste o non è un database locale.',
-'userrights-nologin' => "Per assegnare diritti agli utenti è necessario [[Special:UserLogin|effettuare l'accesso]] come amministratore.",
-'userrights-notallowed' => "L'utente non dispone dei permessi necessari per assegnare diritti agli utenti.",
-'userrights-changeable-col' => 'Gruppi modificabili',
-'userrights-unchangeable-col' => 'Gruppi non modificabili',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'Non si dispone dei permessi necessari per modificare i diritti degli utenti su altri siti.',
+'userrights-nodatabase' => 'Il database $1 non esiste o non è un database locale.',
+'userrights-nologin' => "Per assegnare diritti agli utenti è necessario [[Special:UserLogin|effettuare l'accesso]] come amministratore.",
+'userrights-notallowed' => "L'utente non dispone dei permessi necessari per assegnare diritti agli utenti.",
+'userrights-changeable-col' => 'Gruppi modificabili',
+'userrights-unchangeable-col' => 'Gruppi non modificabili',
# Groups
'group' => 'Gruppo:',
@@ -1253,6 +1358,7 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'right-bigdelete' => 'Cancella pagine con cronologie lunghe',
'right-deleterevision' => 'Nasconde revisioni specifiche delle pagine',
'right-deletedhistory' => 'Visualizza le revisioni della cronologia cancellate senza il testo associato',
+'right-deletedtext' => 'Visualizza testo cancellato e modifiche fra revisioni cancellate',
'right-browsearchive' => 'Visualizza pagine cancellate',
'right-undelete' => 'Recupera una pagina',
'right-suppressrevision' => 'Rivede e recupera revisioni nascoste agli amministratori',
@@ -1266,6 +1372,8 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'right-editprotected' => 'Modifica pagine protette',
'right-editinterface' => "Modifica l'interfaccia utente",
'right-editusercssjs' => 'Modifica i file CSS e JS di altri utenti',
+'right-editusercss' => 'Modifica i file CSS di altri utenti',
+'right-edituserjs' => 'Modifica i file JS di altri utenti',
'right-rollback' => "Rollback rapido delle modifiche dell'ultimo utente che ha modificato una particolare pagina",
'right-markbotedits' => 'Segna le modifiche soggette a rollback come effettuate da bot',
'right-noratelimit' => 'Non soggetto al limite di azioni',
@@ -1282,6 +1390,8 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'right-siteadmin' => 'Blocca e sblocca il database',
'right-reset-passwords' => 'Reimposta le password di altri utenti',
'right-override-export-depth' => 'Esporta le pagine includendo le pagine collegate fino ad una profondità di 5',
+'right-versiondetail' => 'Mostra le informazioni complete del software',
+'right-sendemail' => 'Invia e-mail ad altri utenti',
# User rights log
'rightslog' => 'Diritti degli utenti',
@@ -1331,6 +1441,15 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
'recentchanges-legend' => 'Opzioni ultime modifiche',
'recentchangestext' => 'Questa pagina presenta le modifiche più recenti ai contenuti del sito.',
'recentchanges-feed-description' => 'Questo feed riporta le modifiche più recenti ai contenuti del sito.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nuova pagina',
+'recentchanges-label-newpage' => 'Questa modifica ha creato una nuova pagina',
+'recentchanges-legend-minor' => '$1 - modifica minore',
+'recentchanges-label-minor' => 'Questa è una modifica minore',
+'recentchanges-legend-bot' => '$1 - modifica bot',
+'recentchanges-label-bot' => 'Questa modifica è stata effettuata da un bot',
+'recentchanges-legend-unpatrolled' => '$1 - modifica non verificata',
+'recentchanges-label-unpatrolled' => 'Questa modifica non è stata ancora verificata',
'rcnote' => "Di seguito {{PLURAL:$1|è elencata la modifica più recente apportata|sono elencate le '''$1''' modifiche più recenti apportate}} al sito {{PLURAL:$2|nelle ultime 24 ore|negli scorsi '''$2''' giorni}}; i dati sono aggiornati alle $5 del $4.",
'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
'rclistfrom' => 'Mostra le modifiche apportate a partire da $1',
@@ -1357,6 +1476,8 @@ Conferma che è tua intenzione procedere a tale cancellazione, che hai piena con
# Recent changes linked
'recentchangeslinked' => 'Modifiche correlate',
+'recentchangeslinked-feed' => 'Modifiche correlate',
+'recentchangeslinked-toolbox' => 'Modifiche correlate',
'recentchangeslinked-title' => 'Modifiche correlate a "$1"',
'recentchangeslinked-noresult' => 'Nessuna modifica alle pagine collegate nel periodo specificato.',
'recentchangeslinked-summary' => "Questa pagina speciale mostra le modifiche più recenti alle pagine collegate da quella specificata (o contenute nella categoria specificata).
@@ -1367,8 +1488,8 @@ Le pagine contenute nella propria lista degli [[Special:Watchlist|Osservati spec
# Upload
'upload' => 'Carica un file',
'uploadbtn' => 'Carica',
-'reupload' => 'Carica di nuovo',
'reuploaddesc' => 'Torna al modulo per il caricamento.',
+'upload-tryagain' => 'Invia la descrizione del file modificato',
'uploadnologin' => 'Accesso non effettuato',
'uploadnologintext' => "Il caricamento dei file è consentito solo agli utenti registrati che hanno eseguito [[Special:UserLogin|l'accesso]] al sito.",
'upload_directory_missing' => 'La directory di upload ($1) non esiste e non può essere creata dal server web.',
@@ -1399,6 +1520,7 @@ Consultare la [[Special:NewFiles|galleria dei nuovi file]] per una visione d'ins
'minlength1' => "Il nome del file dev'essere composto da almeno un carattere.",
'illegalfilename' => 'Il nome "$1" contiene dei caratteri non ammessi nei titoli delle pagine. Dare al file un nome diverso e provare a caricarlo di nuovo.',
'badfilename' => 'Il nome del file è stato convertito in "$1".',
+'filetype-mime-mismatch' => "L'estensione del file non corrisponde con il tipo MIME.",
'filetype-badmime' => 'Non è consentito caricare file di tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Impossibile caricare il file perché Internet Explorer lo rileverebbe come "$1", che è un tipo di file non consentito e potenzialmente pericoloso.',
'filetype-unwanted-type' => "Caricare file di tipo '''\".\$1\"''' è sconsigliato. {{PLURAL:\$3|Il tipo di file consigliato è|I tipi di file consigliati sono}} \$2.",
@@ -1416,7 +1538,6 @@ Verificare prima '''<tt>[[:$1]]</tt>''' se non si è sicuri di volerlo sovrascri
* Nome del file caricato: '''<tt>[[:$1]]</tt>'''
* Nome del file esistente: '''<tt>[[:$2]]</tt>'''
Scegliere un nome diverso.",
-'fileexists-thumb' => "<center>'''File preesistente'''</center>",
'fileexists-thumbnail-yes' => "Il file caricato sembra essere una miniatura ''(thumbnail)''. [[$1|thumb]]
Verificare, per confronto, il file '''<tt>[[:$1]]</tt>'''.
Se si tratta della stessa immagine, nelle dimensioni originali, non è necessario caricarne altre miniature.",
@@ -1428,6 +1549,7 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
'file-deleted-duplicate' => 'Un file identico a questo ([[$1]]) è stato cancellato in passato. Verificare la cronologia delle cancellazioni prima di caricarlo di nuovo.',
'successfulupload' => 'Caricamento completato',
'uploadwarning' => 'Avviso di caricamento',
+'uploadwarning-text' => 'Per favore modifica qui sotto la descrizione del file e prova di nuovo.',
'savefile' => 'Salva file',
'uploadedimage' => 'ha caricato "[[$1]]"',
'overwroteimage' => 'ha caricato una nuova versione di "[[$1]]"',
@@ -1435,11 +1557,14 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
'uploaddisabledtext' => 'Il caricamento dei file non è attivo.',
'php-uploaddisabledtext' => 'Il caricamento di file tramite PHP è disabilitato. Controlla la configurazione di file_uploads.',
'uploadscripted' => 'Questo file contiene codice HTML o di script, che potrebbe essere interpretato erroneamente da un browser web.',
-'uploadcorrupt' => "Il file è corrotto o ha un'estensione non corretta. Controllare il file e provare di nuovo il caricamento.",
'uploadvirus' => 'Questo file contiene un virus! Dettagli: $1',
+'upload-source' => 'File di origine',
'sourcefilename' => 'Nome del file di origine:',
+'sourceurl' => 'URL di origine:',
'destfilename' => 'Nome del file di destinazione:',
'upload-maxfilesize' => 'Dimensione massima del file: $1',
+'upload-description' => 'Descrizione del file',
+'upload-options' => 'Opzioni di caricamento',
'watchthisupload' => 'Aggiungi agli osservati speciali',
'filewasdeleted' => 'Un file con questo nome è stato già caricato e cancellato in passato. Verificare il log delle $1 prima di caricarlo di nuovo.',
'upload-wasdeleted' => "'''Attenzione: si sta per caricare un file già cancellato in passato.'''
@@ -1462,12 +1587,43 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- lascia questa riga esattamente com\'è -->',
-'upload-proto-error' => 'Protocollo errato',
-'upload-proto-error-text' => "Per l'upload remoto è necessario specificare URL che iniziano con <code>http://</code> oppure <code>ftp://</code>.",
-'upload-file-error' => 'Errore interno',
-'upload-file-error-text' => 'Si è verificato un errore interno durante la creazione di un file temporaneo sul server. Contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
-'upload-misc-error' => "Errore non identificato per l'upload",
-'upload-misc-error-text' => 'Si è verificato un errore non identificato durante il caricamento del file. Verificare che la URL sia corretta e accessibile e provare di nuovo. Se il problema persiste, contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
+'upload-proto-error' => 'Protocollo errato',
+'upload-proto-error-text' => "Per l'upload remoto è necessario specificare URL che iniziano con <code>http://</code> oppure <code>ftp://</code>.",
+'upload-file-error' => 'Errore interno',
+'upload-file-error-text' => 'Si è verificato un errore interno durante la creazione di un file temporaneo sul server. Contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
+'upload-misc-error' => "Errore non identificato per l'upload",
+'upload-misc-error-text' => 'Si è verificato un errore non identificato durante il caricamento del file. Verificare che la URL sia corretta e accessibile e provare di nuovo. Se il problema persiste, contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
+'upload-too-many-redirects' => "L'URL conteneva troppi redirect",
+'upload-unknown-size' => 'Dimensione sconosciuta',
+'upload-http-error' => 'Si è verificato un errore HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accesso negato',
+'img-auth-nopathinfo' => 'PATH_INFO mancante.
+Il server non è impostato per passare questa informazione.
+Potrebbe essere basato su CGI e non può supportare img_auth.
+Consultare http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Il percorso richiesto non si trova nella directory di upload configurata.',
+'img-auth-badtitle' => 'Impossibile costruire un titolo valido da "$1".',
+'img-auth-nologinnWL' => 'Non si è effettuato l\'accesso e "$1" non è nella whitelist.',
+'img-auth-nofile' => 'File "$1" non esiste.',
+'img-auth-isdir' => 'Si sta tentando di accedere a una directory "$1".
+Solo l\'accesso ai file è consentito.',
+'img-auth-streaming' => '"$1" in streaming.',
+'img-auth-public' => 'La funzione di img_auth.php è di dare in output file da un sito wiki privato.
+Questo sito è configurato come un wiki pubblico.
+Per una sicurezza ottimale, img_auth.php è disattivato.',
+'img-auth-noread' => 'L\'utente non ha accesso alla lettura di "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL non valido: $1',
+'http-invalid-scheme' => 'URL con il prefisso "$1" non sono supportati.',
+'http-request-error' => 'Richiesta HTTP fallita a causa di un errore sconosciuto.',
+'http-read-error' => 'Errore di lettura HTTP.',
+'http-timed-out' => 'Richiesta HTTP scaduta.',
+'http-curl-error' => "Errore durante il recupero dell'URL: $1",
+'http-host-unreachable' => 'URL non raggiungibile.',
+'http-bad-status' => "C'è stato un problema durante la richiesta HTTP: $1 $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL non raggiungibile',
@@ -1476,6 +1632,7 @@ PICT # misc.
'upload-curl-error28-text' => 'Il sito remoto ha impiegato troppo tempo a rispondere. Verificare che il sito sia attivo, attendere qualche minuto e provare di nuovo, eventualmente in un momento di minore traffico.',
'license' => 'Licenza:',
+'license-header' => 'Licenza',
'nolicense' => 'Nessuna licenza indicata',
'license-nopreview' => '(Anteprima non disponibile)',
'upload_source_url' => ' (una URL corretta e accessibile)',
@@ -1496,6 +1653,7 @@ Per modificare l'ordinamento, fare clic sull'intestazione della colonna prescelt
'listfiles_count' => 'Versioni',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Cronologia del file',
'filehist-help' => 'Fare clic su un gruppo data/ora per vedere il file come si presentava nel momento indicato.',
'filehist-deleteall' => 'cancella tutto',
@@ -1510,6 +1668,7 @@ Per modificare l'ordinamento, fare clic sull'intestazione della colonna prescelt
'filehist-dimensions' => 'Dimensioni',
'filehist-filesize' => 'Dimensione del file',
'filehist-comment' => 'Oggetto',
+'filehist-missing' => 'File mancante',
'imagelinks' => 'Collegamenti al file',
'linkstoimage' => '{{PLURAL:$1|La seguente pagina contiene|Le seguenti $1 pagine contengono}} collegamenti al file:',
'linkstoimage-more' => 'Più di $1 {{PLURAL:$1|pagina punta|pagine puntano}} a questo file.
@@ -1519,15 +1678,16 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
'morelinkstoimage' => 'Visualizza [[Special:WhatLinksHere/$1|altri link]] a questo file.',
'redirectstofile' => '{{PLURAL:$1|Il seguente|I seguenti $1}} file {{PLURAL:$1|è|sono}} un redirect a questo file:',
'duplicatesoffile' => '{{PLURAL:$1|Il seguente file è un duplicato|I seguenti $1 file sono duplicati}} di questo file ([[Special:FileDuplicateSearch/$2|ulteriori dettagli]]):',
-'sharedupload' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Si veda $1 per ulteriori informazioni.',
-'shareduploadwiki-desc' => 'La descrizione che appare sulla relativa $1 viene mostrata di seguito.',
-'shareduploadwiki-linktext' => 'pagina di descrizione del file',
-'noimage' => 'Un file con questo nome non esiste ma è possibile $1.',
-'noimage-linktext' => 'caricarlo ora',
+'sharedupload' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.',
+'sharedupload-desc-there' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
+Consultare la [$2 pagina di descrizione del file] per ulteriori informazioni.',
+'sharedupload-desc-here' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
+Di seguito viene mostrata la descrizione presente nella [$2 pagina di descrizione del file].',
+'filepage-nofile' => 'Non esiste un file con questo nome.',
+'filepage-nofile-link' => 'Non esiste un file con questo nome, ma è possibile [$1 caricarlo].',
'uploadnewversion-linktext' => 'Carica una nuova versione di questo file',
-'shared-repo-from' => 'da $1', # $1 is the repository name
-'shared-repo' => 'un archivio condiviso', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'da $1',
+'shared-repo' => 'un archivio condiviso',
# File reversion
'filerevert' => 'Ripristina $1',
@@ -1556,6 +1716,7 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
** Violazione di copyright
** File duplicato',
'filedelete-edit-reasonlist' => 'Modifica le motivazioni per la cancellazione',
+'filedelete-maintenance' => 'Cancellazione e recupero di file temporaneamente disattivati durante la manutenzione.',
# MIME search
'mimesearch' => 'Ricerca in base al tipo MIME',
@@ -1576,7 +1737,7 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
# Random page
'randompage' => 'Una pagina a caso',
-'randompage-nopages' => 'Non ci sono pagine nel namespace "$1".',
+'randompage-nopages' => 'Non ci sono pagine {{PLURAL:$2|nel seguente namespace|nei seguenti namespace}}: $1.',
# Random redirect
'randomredirect' => 'Un redirect a caso',
@@ -1588,6 +1749,7 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
'statistics-header-edits' => 'Statistiche relative alle modifiche',
'statistics-header-views' => 'Statistiche relative alle visualizzazioni',
'statistics-header-users' => 'Statistiche relative agli utenti',
+'statistics-header-hooks' => 'Altre statistiche',
'statistics-articles' => 'Pagine di contenuti',
'statistics-pages' => 'Pagine',
'statistics-pages-desc' => 'Tutte le pagine del sito, comprese le pagine di discussione, i redirect, ecc.',
@@ -1615,8 +1777,8 @@ I redirect <s>cancellati</s> sono stati corretti.',
'brokenredirects' => 'Redirect errati',
'brokenredirectstext' => 'I seguenti redirect puntano a pagine inesistenti:',
-'brokenredirects-edit' => '(modifica)',
-'brokenredirects-delete' => '(cancella)',
+'brokenredirects-edit' => 'modifica',
+'brokenredirects-delete' => 'cancella',
'withoutinterwiki' => 'Pagine prive di interwiki',
'withoutinterwiki-summary' => 'Le pagine indicate di seguito sono prive di collegamenti alle versioni in altre lingue:',
@@ -1724,7 +1886,7 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
# Special:Categories
'categories' => 'Categorie',
-'categoriespagetext' => 'Le categorie indicate di seguito contengono pagine o file multimediali.
+'categoriespagetext' => '{{PLURAL:$1|La categoria indicata di seguito contiene|Le categorie indicate di seguito contengono}} pagine o file multimediali.
Le [[Special:UnusedCategories|categorie vuote]] non sono mostrate qui.
Vedi anche le [[Special:WantedCategories|categorie richieste]].',
'categoriesfrom' => 'Mostra le categorie a partire da:',
@@ -1732,8 +1894,9 @@ Vedi anche le [[Special:WantedCategories|categorie richieste]].',
'special-categories-sort-abc' => 'ordina alfabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contributi utente cancellati',
-'deletedcontributions-title' => 'Contributi utente cancellati',
+'deletedcontributions' => 'Contributi utente cancellati',
+'deletedcontributions-title' => 'Contributi utente cancellati',
+'sp-deletedcontributions-contribs' => 'contributi',
# Special:LinkSearch
'linksearch' => 'Collegamenti esterni',
@@ -1749,6 +1912,16 @@ Protocolli supportati: <tt>$1</tt>',
'listusersfrom' => 'Mostra gli utenti a partire da:',
'listusers-submit' => 'Mostra',
'listusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
+'listusers-blocked' => '(bloccato)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista degli utenti attivi',
+'activeusers-intro' => 'Questo è un elenco di utenti che hanno avuto qualche tipo di attività da $1 {{PLURAL:$1|giorno|giorni}} a questa parte.',
+'activeusers-count' => "$1 {{PLURAL:$1|modifica|modifiche}} {{PLURAL:$3|nell'ultimo giorno|negli ultimi $3 giorni}}",
+'activeusers-from' => 'Mostra gli utenti a partire da:',
+'activeusers-hidebots' => 'Nascondi i bot',
+'activeusers-hidesysops' => 'Nascondi gli amministratori',
+'activeusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
# Special:Log/newusers
'newuserlogpage' => 'Nuovi utenti',
@@ -1759,17 +1932,23 @@ Protocolli supportati: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'account creato automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Diritti del gruppo utente',
-'listgrouprights-summary' => "Di seguito sono elencati i gruppi utente definiti per questo sito, con i diritti d'accesso loro associati.
+'listgrouprights' => 'Diritti del gruppo utente',
+'listgrouprights-summary' => "Di seguito sono elencati i gruppi utente definiti per questo sito, con i diritti d'accesso loro associati.
Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazioni]] sui diritti individuali.",
-'listgrouprights-group' => 'Gruppo',
-'listgrouprights-rights' => 'Diritti',
-'listgrouprights-helppage' => 'Help:Diritti del gruppo',
-'listgrouprights-members' => '(Elenco dei membri)',
-'listgrouprights-addgroup' => 'Può aggiungere {{PLURAL:$2|il gruppo|i gruppi}}: $1',
-'listgrouprights-removegroup' => 'Può rimuovere {{PLURAL:$2|il gruppo|i gruppi}}: $1',
-'listgrouprights-addgroup-all' => 'Può aggiungere a tutti i gruppi',
-'listgrouprights-removegroup-all' => 'Può rimuovere tutti i gruppi',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Diritto assegnato</span>
+* <span class="listgrouprights-revoked">Diritto revocato</span>',
+'listgrouprights-group' => 'Gruppo',
+'listgrouprights-rights' => 'Diritti',
+'listgrouprights-helppage' => 'Help:Diritti del gruppo',
+'listgrouprights-members' => '(Elenco dei membri)',
+'listgrouprights-addgroup' => 'Può aggiungere {{PLURAL:$2|il gruppo|i gruppi}}: $1',
+'listgrouprights-removegroup' => 'Può rimuovere {{PLURAL:$2|il gruppo|i gruppi}}: $1',
+'listgrouprights-addgroup-all' => 'Può aggiungere a tutti i gruppi',
+'listgrouprights-removegroup-all' => 'Può rimuovere tutti i gruppi',
+'listgrouprights-addgroup-self' => 'Può aggiungere {{PLURAL:$2|un gruppo|gruppi}} al proprio account: $1',
+'listgrouprights-removegroup-self' => 'Può rimuovere {{PLURAL:$2|un gruppo|gruppi}} dal proprio account: $1',
+'listgrouprights-addgroup-self-all' => 'Può aggiungere tutti i gruppi al proprio account',
+'listgrouprights-removegroup-self-all' => 'Può rimuovere tutti i gruppi dal proprio account',
# E-mail user
'mailnologin' => 'Nessun indirizzo cui inviare il messaggio',
@@ -1847,7 +2026,7 @@ la pagina $PAGETITLE di {{SITENAME}} è stata $CHANGEDORCREATED in data $PAGEEDI
$NEWPAGE
-Riassunto della modifica, inserito dall\'autore: $PAGESUMMARY $PAGEMINOREDIT
+Oggetto della modifica, inserito dall\'autore: $PAGESUMMARY $PAGEMINOREDIT
Contatta l\'autore della modifica:
via e-mail: $PAGEEDITOR_EMAIL
@@ -1861,6 +2040,9 @@ Non verranno inviate altre notifiche in caso di ulteriori cambiamenti, a meno ch
Per modificare le impostazioni della lista degli osservati speciali, visita
{{fullurl:Special:Watchlist/edit}}
+Per cancellare la pagina della lista degli osservati speciali, visita
+$UNWATCHURL
+
Per dare il tuo feedback e ricevere ulteriore assistenza:
{{fullurl:Help:Aiuto}}',
@@ -1873,9 +2055,10 @@ Per dare il tuo feedback e ricevere ulteriore assistenza:
'exblank' => 'la pagina era vuota',
'delete-confirm' => 'Cancella "$1"',
'delete-legend' => 'Cancella',
-'historywarning' => 'Attenzione! La pagina che si sta per cancellare ha una cronologia:',
+'historywarning' => "'''Attenzione:''' La pagina che stai per cancellare ha una cronologia con approssimativamente $1 {{PLURAL:$1|revisione|revisioni}}:",
'confirmdeletetext' => 'Stai per cancellare una pagina con tutta la sua cronologia. Per cortesia, conferma che è tua intenzione procedere a tale cancellazione, che hai piena consapevolezza delle conseguenze della tua azione e che essa è conforme alle linee guida stabilite in [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Azione completata',
+'actionfailed' => 'Azione fallita',
'deletedtext' => 'La pagina "<nowiki>$1</nowiki>" è stata cancellata.
Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
'deletedarticle' => 'ha cancellato "[[$1]]"',
@@ -1896,18 +2079,19 @@ Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
# Rollback
-'rollback' => 'Annulla le modifiche',
-'rollback_short' => 'Rollback',
-'rollbacklink' => 'rollback',
-'rollbackfailed' => 'Rollback fallito',
-'cantrollback' => "Impossibile annullare le modifiche; l'utente che le ha effettuate è l'unico ad aver contribuito alla pagina.",
-'alreadyrolled' => 'Non è possibile annullare le modifiche apportate alla pagina [[:$1]] da parte di [[User:$2|$2]] ([[User talk:$2|discussione]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); un altro utente ha già modificato la pagina oppure ha effettuato il rollback.
+'rollback' => 'Annulla le modifiche',
+'rollback_short' => 'Rollback',
+'rollbacklink' => 'rollback',
+'rollbackfailed' => 'Rollback fallito',
+'cantrollback' => "Impossibile annullare le modifiche; l'utente che le ha effettuate è l'unico ad aver contribuito alla pagina.",
+'alreadyrolled' => 'Non è possibile annullare le modifiche apportate alla pagina [[:$1]] da parte di [[User:$2|$2]] ([[User talk:$2|discussione]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); un altro utente ha già modificato la pagina oppure ha effettuato il rollback.
La modifica più recente alla pagina è stata apportata da [[User:$3|$3]] ([[User talk:$3|discussione]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "L'oggetto della modifica era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Annullate le modifiche di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), riportata alla versione precedente di [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Annullate le modifiche di $1; pagina riportata all'ultima versione di $2.",
-'sessionfailure' => "Si è verificato un problema nella sessione che identifica l'accesso; il sistema non ha eseguito il comando impartito per precauzione. Tornare alla pagina precedente con il tasto 'Indietro' del proprio browser, ricaricare la pagina e riprovare.",
+'editcomment' => "L'oggetto della modifica era: \"''\$1''\".",
+'revertpage' => 'Annullate le modifiche di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), riportata alla versione precedente di [[User:$1|$1]]',
+'revertpage-nouser' => 'Annullate le modifiche di (nome utente rimosso), riportata alla versione precedente di [[User:$1|$1]]',
+'rollback-success' => "Annullate le modifiche di $1; pagina riportata all'ultima versione di $2.",
+'sessionfailure' => "Si è verificato un problema nella sessione che identifica l'accesso; il sistema non ha eseguito il comando impartito per precauzione. Tornare alla pagina precedente con il tasto 'Indietro' del proprio browser, ricaricare la pagina e riprovare.",
# Protect
'protectlogpage' => 'Protezioni',
@@ -1924,7 +2108,7 @@ Consultare la [[Special:ProtectedPages|lista delle pagine protette]] per l'elenc
'protectexpiry' => 'Scadenza:',
'protect_expiry_invalid' => 'Scadenza non valida.',
'protect_expiry_old' => 'Scadenza già trascorsa.',
-'protect-unchain' => 'Sblocca lo spostamento',
+'protect-unchain-permissions' => 'Sblocca ulteriori opzioni di protezione',
'protect-text' => "Questo modulo consente di vedere e modificare il livello di protezione per la pagina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Non è possibile modificare i livelli di protezione quando è attivo un blocco. Le impostazioni correnti per la pagina sono '''$1''':",
'protect-locked-dblock' => "Impossibile modificare i livelli di protezione durante un blocco del database.
@@ -1952,7 +2136,7 @@ Le impostazioni correnti per la pagina sono '''$1''':",
** Edit war
** Pagina molto usata',
'protect-edit-reasonlist' => 'Modifica i motivi per la protezione',
-'protect-expiry-options' => '1 ora:1 hour,1 giorno:1 day,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 giorno:1 day,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite',
'restriction-type' => 'Permesso',
'restriction-level' => 'Livello di restrizione',
'minimum-size' => 'Dimensione minima',
@@ -1989,6 +2173,7 @@ Il testo contenuto nelle revisioni cancellate è disponibile solo agli amministr
'undelete-nodiff' => 'Non è stata trovata nessuna revisione precedente.',
'undeletebtn' => 'Ripristina',
'undeletelink' => 'visualizza/ripristina',
+'undeleteviewlink' => 'visualizza',
'undeletereset' => 'Reimposta',
'undeleteinvert' => 'Inverti selezione',
'undeletecomment' => 'Motivo:',
@@ -2026,19 +2211,23 @@ $1',
'contributions-title' => 'Contributi di $1',
'mycontris' => 'miei contributi',
'contribsub2' => 'Per $1 ($2)',
-'nocontribs' => 'Non sono state trovate modifiche che soddisfino i criteri di ricerca.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Non sono state trovate modifiche che soddisfino i criteri di ricerca.',
'uctop' => '(ultima per la pagina)',
'month' => 'Dal mese (e precedenti):',
'year' => "Dall'anno (e precedenti):",
-'sp-contributions-newbies' => 'Mostra solo i contributi dei nuovi utenti',
-'sp-contributions-newbies-sub' => 'Per i nuovi utenti',
-'sp-contributions-newbies-title' => 'Contributi dei nuovi utenti',
-'sp-contributions-blocklog' => 'blocchi',
-'sp-contributions-logs' => 'registri',
-'sp-contributions-search' => 'Ricerca contributi',
-'sp-contributions-username' => 'Indirizzo IP o nome utente:',
-'sp-contributions-submit' => 'Ricerca',
+'sp-contributions-newbies' => 'Mostra solo i contributi dei nuovi utenti',
+'sp-contributions-newbies-sub' => 'Per i nuovi utenti',
+'sp-contributions-newbies-title' => 'Contributi dei nuovi utenti',
+'sp-contributions-blocklog' => 'blocchi',
+'sp-contributions-deleted' => 'contributi utente cancellati',
+'sp-contributions-logs' => 'registri',
+'sp-contributions-talk' => 'discussione',
+'sp-contributions-userrights' => 'gestione dei permessi',
+'sp-contributions-blocked-notice' => "Questo utente è attualmente bloccato. L'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
+'sp-contributions-search' => 'Ricerca contributi',
+'sp-contributions-username' => 'Indirizzo IP o nome utente:',
+'sp-contributions-submit' => 'Ricerca',
# What links here
'whatlinkshere' => 'Puntano qui',
@@ -2061,6 +2250,7 @@ $1',
# Block/unblock
'blockip' => 'Blocco utente',
+'blockip-title' => 'Blocca utente',
'blockip-legend' => "Blocca l'utente",
'blockiptext' => "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o un utente registrato.
Il blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]].
@@ -2084,7 +2274,7 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
'ipbenableautoblock' => "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche",
'ipbsubmit' => "Blocca l'utente",
'ipbother' => 'Durata non in elenco:',
-'ipboptions' => '2 ore:2 hours,1 giorno:1 day,3 giorni:3 days,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ore:2 hours,1 giorno:1 day,3 giorni:3 days,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite',
'ipbotheroption' => 'altro',
'ipbotherreason' => 'Altri motivi/dettagli:',
'ipbhidename' => 'Nascondi il nome utente dalle modifiche e dagli elenchi.',
@@ -2113,9 +2303,11 @@ Consultare la [[Special:IPBlockList|lista degli IP bloccati]] per vedere i blocc
'ipblocklist-sh-tempblocks' => '$1 i blocchi temporanei',
'ipblocklist-sh-addressblocks' => '$1 i blocchi dei singoli IP',
'ipblocklist-submit' => 'Ricerca',
+'ipblocklist-localblock' => 'Blocchi locali',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
'blocklistline' => '$1, $2 ha bloccato $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'scadenza: $1',
+'expiringblock' => 'scade il $1 alle $2',
'anononlyblock' => 'solo anonimi',
'noautoblockblock' => 'blocco automatico disabilitato',
'createaccountblock' => 'creazione account bloccata',
@@ -2130,7 +2322,8 @@ Consultare la [[Special:IPBlockList|lista degli IP bloccati]] per vedere i blocc
'autoblocker' => 'Bloccato automaticamente perché l\'indirizzo IP è condiviso con l\'utente "[[User:$1|$1]]".
Il blocco dell\'utente $1 è stato imposto per il seguente motivo: "$2".',
'blocklogpage' => 'Blocchi',
-'blocklog-fulllog' => 'Registro completo dei blocchi',
+'blocklog-showlog' => 'Questo utente è stato bloccato in precedenza. Il registro dei blocchi è riportato di seguito per informazione:',
+'blocklog-showsuppresslog' => 'Questo utente è stato bloccato e nascosto in precedenza. Il registro delle rimozioni è riportato di seguito per informazione:',
'blocklogentry' => 'ha bloccato [[$1]] per un periodo di $2 $3',
'reblock-logentry' => 'ha cambiato le impostazioni del blocco per [[$1]] con una scadenza di $2 $3',
'blocklogtext' => "Di seguito sono elencate le azioni di blocco e sblocco utenti. Gli indirizzi IP bloccati automaticamente non sono elencati. Consultare l'[[Special:IPBlockList|elenco IP bloccati]] per l'elenco degli indirizzi e nomi utente il cui blocco è operativo.",
@@ -2149,9 +2342,11 @@ Il blocco dell\'utente $1 è stato imposto per il seguente motivo: "$2".',
'ipb_already_blocked' => 'L\'utente "$1" è già bloccato',
'ipb-needreblock' => "== Già bloccato ==
L'utente $1 è già bloccato. Modificare le impostazioni?",
+'ipb-otherblocks-header' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
'ipb_cant_unblock' => 'Errore: Impossibile trovare il blocco con ID $1. Il blocco potrebbe essere già stato rimosso.',
'ipb_blocked_as_range' => "Errore: L'indirizzo IP $1 non è soggetto a blocco individuale e non può essere sbloccato. Il blocco è invece attivo a livello dell'intervallo $2, che può essere sbloccato.",
'ip_range_invalid' => 'Intervallo di indirizzi IP non valido.',
+'ip_range_toolarge' => 'Non è possibile bloccare range superiori al /$1',
'blockme' => 'Bloccami',
'proxyblocker' => 'Blocco dei proxy aperti',
'proxyblocker-disabled' => 'Questa funzione non è attiva.',
@@ -2160,6 +2355,7 @@ L'utente $1 è già bloccato. Modificare le impostazioni?",
'sorbsreason' => 'Questo indirizzo IP è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
'sorbs_create_account_reason' => 'Non è possibile creare nuovi accessi da questo indirizzo IP perché è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
'cant-block-while-blocked' => 'Non è possibile bloccare altri utenti mentre si è bloccati.',
+'cant-see-hidden-user' => 'L\'utente che si sta tentando di bloccare è stato già bloccato e nascosto. Poiché non hai il permesso "hideuser", non è possibile visualizzare o modificare il blocco dell\'utente.',
# Developer tools
'lockdb' => 'Blocca il database',
@@ -2195,6 +2391,7 @@ Un cambiamento così drastico può creare contrattempi e problemi, soprattutto p
In questi casi, se lo si ritiene opportuno, occorre spostare o aggiungere manualmente le informazioni contenute nella pagina di discussione.",
'movearticle' => 'Sposta la pagina:',
+'moveuserpage-warning' => "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
'movenologin' => 'Accesso non effettuato',
'movenologintext' => "Lo spostamento delle pagine è consentito solo agli utenti registrati che hanno eseguito l'[[Special:UserLogin|accesso]] al sito.",
'movenotallowed' => 'Non si dispone dei permessi necessari per spostare le pagine.',
@@ -2205,7 +2402,7 @@ In questi casi, se lo si ritiene opportuno, occorre spostare o aggiungere manual
'move-watch' => 'Aggiungi la pagina agli osservati speciali',
'movepagebtn' => 'Sposta la pagina',
'pagemovedsub' => 'Spostamento effettuato con successo',
-'movepage-moved' => '\'\'\'"$1" è stata spostata a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" è stata spostata a "$2"\'\'\'',
'movepage-moved-redirect' => 'È stato creato un redirect.',
'movepage-moved-noredirect' => 'La creazione di un redirect è stata soppressa.',
'articleexists' => 'Una pagina con questo nome esiste già oppure il nome scelto non è valido.
@@ -2247,6 +2444,14 @@ La pagina specificata come destinazione "[[:$1]]" esiste già. Vuoi cancellarla
'imageinvalidfilename' => "Il nome dell'immagine non è valido",
'fix-double-redirects' => 'Aggiorna tutti i redirect che puntano al titolo originale',
'move-leave-redirect' => 'Crea un redirect con lo spostamento',
+'protectedpagemovewarning' => "'''Attenzione: Questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano spostarla.'''
+L'ultimo elemento del registro è riportato di seguito per informazione:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Questa pagina è stata bloccata in modo che solo gli utenti registrati possano spostarla.
+L'ultimo elemento del registro è riportato di seguito per informazione:",
+'move-over-sharedrepo' => '== File già esistente ==
+[[:$1]] è già presente in una struttura condivisa. Spostare un file a questo titolo comporterà la sovrascrittura del file condiviso.',
+'file-exists-sharedrepo' => 'Il nome che hai scelto per il file è già utilizzato.
+Per favore, scegli un nome diverso.',
# Export
'export' => 'Esporta pagine',
@@ -2268,15 +2473,21 @@ In quest'ultimo caso si può anche utilizzare un collegamento, ad esempio [[{{#S
'export-pagelinks' => 'Includi pagine correlate ad una profondità di:',
# Namespace 8 related
-'allmessages' => 'Messaggi di sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Testo predefinito',
-'allmessagescurrent' => 'Testo attuale',
-'allmessagestext' => 'Questa è la lista di tutti i messaggi di sistema disponibili nel namespace MediaWiki.
+'allmessages' => 'Messaggi di sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Testo predefinito',
+'allmessagescurrent' => 'Testo attuale',
+'allmessagestext' => 'Questa è la lista di tutti i messaggi di sistema disponibili nel namespace MediaWiki.
Visitare [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se si desidera contribuire alla localizzazione generica di MediaWiki.',
-'allmessagesnotsupportedDB' => "Non è possibile utilizzare questa pagina perché il flag '''\$wgUseDatabaseMessages''' non è attivo.",
-'allmessagesfilter' => 'Filtro sui messaggi:',
-'allmessagesmodified' => 'Mostra solo quelli modificati',
+'allmessagesnotsupportedDB' => "Non è possibile utilizzare questa pagina perché il flag '''\$wgUseDatabaseMessages''' non è attivo.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtra per stato di modifica:',
+'allmessages-filter-unmodified' => 'Non modificati',
+'allmessages-filter-all' => 'Tutti',
+'allmessages-filter-modified' => 'Modificati',
+'allmessages-prefix' => 'Filtra per prefisso:',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Vai',
# Thumbnails
'thumbnail-more' => 'Ingrandisci',
@@ -2286,6 +2497,9 @@ Visitare [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [
'djvu_no_xml' => "Impossibile ottenere l'XML per il file DjVu",
'thumbnail_invalid_params' => 'Parametri miniatura non corretti',
'thumbnail_dest_directory' => 'Impossibile creare la directory di destinazione',
+'thumbnail_image-type' => 'Tipo di immagine non supportato',
+'thumbnail_gd-library' => 'Configurazione incompleta della libreria GD: funzione $1 mancante',
+'thumbnail_image-missing' => 'Sembra essere mancante il file: $1',
# Special:Import
'import' => 'Importa pagine',
@@ -2349,6 +2563,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'tooltip-ca-viewsource' => 'Questa pagina è protetta, ma puoi vedere il suo codice sorgente',
'tooltip-ca-history' => 'Versioni precedenti di questa pagina',
'tooltip-ca-protect' => 'Proteggi questa pagina',
+'tooltip-ca-unprotect' => 'Togli la protezione a questa pagina',
'tooltip-ca-delete' => 'Cancella questa pagina',
'tooltip-ca-undelete' => "Ripristina la pagina com'era prima della cancellazione",
'tooltip-ca-move' => 'Sposta questa pagina (cambia titolo)',
@@ -2359,6 +2574,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'tooltip-search-fulltext' => 'Cerca il testo indicato nelle pagine',
'tooltip-p-logo' => 'Visita la pagina principale',
'tooltip-n-mainpage' => 'Visita la pagina principale',
+'tooltip-n-mainpage-description' => 'Visita la pagina principale',
'tooltip-n-portal' => 'Descrizione del progetto, cosa puoi fare, dove trovare le cose',
'tooltip-n-currentevents' => 'Informazioni sugli eventi di attualità',
'tooltip-n-recentchanges' => 'Elenco delle ultime modifiche del sito',
@@ -2405,6 +2621,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'chick.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Chick */',
'simple.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Simple */',
'modern.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Modern */',
+'vector.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */',
'print.css' => "/* Gli stili CSS inseriti qui si applicano all'output in stampa */",
'handheld.css' => '/* Gli stili CSS inseriti qui si applicano ai dispositivi portatili basati sulla skin configurata in $wgHandheldStyle */',
@@ -2418,6 +2635,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'chick.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Chick */',
'simple.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Simple */',
'modern.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Modern */',
+'vector.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */',
# Metadata
'nodublincore' => 'Metadati Dublin Core RDF non attivi su questo server.',
@@ -2427,10 +2645,12 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
# Attribution
'anonymous' => '{{PLURAL:$1|Utente anonimo|Utenti anonimi}} di {{SITENAME}}',
'siteuser' => '$1, utente di {{SITENAME}}',
-'lastmodifiedatby' => "Questa pagina è stata modificata per l'ultima volta il $2, $1 da $3.", # $1 date, $2 time, $3 user
+'anonuser' => '$1, utente anonimo di {{SITENAME}}',
+'lastmodifiedatby' => "Questa pagina è stata modificata per l'ultima volta il $2, $1 da $3.",
'othercontribs' => 'Il testo attuale è basato su contributi di $1.',
'others' => 'altri',
'siteusers' => '$1, {{PLURAL:$2|utente|utenti}} di {{SITENAME}}',
+'anonusers' => '$1, {{PLURAL:$2|utente anonimo|utenti anonimi}} di {{SITENAME}}',
'creditspage' => 'Autori della pagina',
'nocredits' => 'Nessuna informazione sugli autori disponibile per questa pagina.',
@@ -2458,11 +2678,22 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'mw_math_modern' => 'Formato consigliato per i browser moderni',
'mw_math_mathml' => 'Usa MathML se possibile (sperimentale)',
+# Math errors
+'math_failure' => 'Errore del parser',
+'math_unknown_error' => 'errore sconosciuto',
+'math_unknown_function' => 'funzione sconosciuta',
+'math_lexing_error' => 'errore lessicale',
+'math_syntax_error' => 'errore di sintassi',
+'math_image_error' => 'Conversione in PNG non riuscita; verificare che siano correttamente installati i seguenti programmi: latex, dvips, gs e convert.',
+'math_bad_tmpdir' => 'Impossibile scrivere o creare la directory temporanea per math',
+'math_bad_output' => 'Impossibile scrivere o creare la directory di output per math',
+'math_notexvc' => 'Eseguibile texvc mancante; per favore consultare math/README per la configurazione.',
+
# Patrolling
'markaspatrolleddiff' => 'Segna la modifica come verificata',
'markaspatrolledtext' => 'Segna questa pagina come verificata',
'markedaspatrolled' => 'Modifica verificata',
-'markedaspatrolledtext' => 'La modifica selezionata è stata segnata come verificata.',
+'markedaspatrolledtext' => 'La modifica di [[:$1]] selezionata è stata segnata come verificata.',
'rcpatroldisabled' => 'La verifica delle ultime modifiche è disattivata',
'rcpatroldisabledtext' => 'La funzione di verifica delle ultime modifiche al momento non è attiva.',
'markedaspatrollederror' => 'Impossibile contrassegnare la voce come verificata',
@@ -2492,12 +2723,9 @@ $1',
'previousdiff' => '← Differenza precedente',
'nextdiff' => 'Differenza successiva →',
-# Visual comparison
-'visual-comparison' => 'Confronto visuale',
-
# Media information
'mediawarning' => "'''Attenzione''': Questo file potrebbe contenere codice maligno. La sua esecuzione potrebbe danneggiare il tuo sistema.",
-'imagemaxsize' => 'Dimensione massima delle immagini sulle relative pagine di discussione:',
+'imagemaxsize' => "Dimensione massima delle immagini:<br />''(per le pagine di descrizione del file)''",
'thumbsize' => 'Grandezza delle miniature:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|pagine}}',
'file-info' => '(dimensione del file: $1, tipo MIME: $2)',
@@ -2506,6 +2734,8 @@ $1',
'svg-long-desc' => '(file in formato SVG, dimensioni nominali $1 × $2 pixel, dimensione del file: $3)',
'show-big-image' => 'Versione ad alta risoluzione',
'show-big-image-thumb' => '<small>Dimensioni di questa anteprima: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'ciclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Galleria dei nuovi file',
@@ -2537,7 +2767,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Larghezza',
@@ -2664,14 +2894,14 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-unknowndate' => 'Data sconosciuta',
-'exif-orientation-1' => 'Normale', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Capovolto orizzontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Ruotato di 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Capovolto verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Ruotato 90° in senso antiorario e capovolto verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Ruotato 90° in senso orario', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Ruotato 90° in senso orario e capovolto verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Ruotato 90° in senso antiorario', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normale',
+'exif-orientation-2' => 'Capovolto orizzontalmente',
+'exif-orientation-3' => 'Ruotato di 180°',
+'exif-orientation-4' => 'Capovolto verticalmente',
+'exif-orientation-5' => 'Ruotato 90° in senso antiorario e capovolto verticalmente',
+'exif-orientation-6' => 'Ruotato 90° in senso orario',
+'exif-orientation-7' => 'Ruotato 90° in senso orario e capovolto verticalmente',
+'exif-orientation-8' => 'Ruotato 90° in senso antiorario',
'exif-planarconfiguration-1' => 'a blocchi (chunky)',
'exif-planarconfiguration-2' => 'lineare (planar)',
@@ -2802,7 +3032,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-gpsmeasuremode-2' => 'Misurazione bidimensionale',
'exif-gpsmeasuremode-3' => 'Misurazione tridimensionale',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Chilometri orari',
'exif-gpsspeed-m' => 'Miglia orarie',
'exif-gpsspeed-n' => 'Nodi',
@@ -2821,6 +3051,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'watchlistall2' => 'tutte',
'namespacesall' => 'Tutti',
'monthsall' => 'tutti',
+'limitall' => 'tutti',
# E-mail address confirmation
'confirmemail' => 'Conferma indirizzo e-mail',
@@ -2954,7 +3185,7 @@ Si noti che è anche possibile [[Special:Watchlist/edit|modificare la lista con
'duplicate-defaultsort' => 'Attenzione: la chiave di ordinamento predefinita "$2" sostituisce la precedente "$1".',
# Special:Version
-'version' => 'Versione', # Not used as normal message but as header for the special page itself
+'version' => 'Versione',
'version-extensions' => 'Estensioni installate',
'version-specialpages' => 'Pagine speciali',
'version-parserhooks' => 'Hook del parser',
@@ -2968,7 +3199,7 @@ Si noti che è anche possibile [[Special:Watchlist/edit|modificare la lista con
'version-skin-extension-functions' => "Funzioni legate all'aspetto grafico (skin) introdotte da estensioni",
'version-hook-name' => "Nome dell'hook",
'version-hook-subscribedby' => 'Sottoscrizioni',
-'version-version' => 'Versione',
+'version-version' => '(Versione $1)',
'version-license' => 'Licenza',
'version-software' => 'Software installato',
'version-software-product' => 'Prodotto',
@@ -3048,4 +3279,15 @@ Inserire il nome del file senza il prefisso \"{{ns:file}}:\"",
'dberr-outofdate' => 'Nota che la loro indicizzazione dei nostri contenuti potrebbe non essere aggiornata.',
'dberr-cachederror' => 'Quella che segue è una copia cache della pagina richiesta, e potrebbe non essere aggiornata.',
+# HTML forms
+'htmlform-invalid-input' => "Ci sono problemi con l'input inserito",
+'htmlform-select-badoption' => "Il valore specificato non è un'opzione valida.",
+'htmlform-int-invalid' => 'Il valore specificato non è un intero.',
+'htmlform-float-invalid' => 'Il valore specificato non è un numero.',
+'htmlform-int-toolow' => 'Il valore specificato è inferiore al minimo di $1',
+'htmlform-int-toohigh' => 'Il valore specificato è superiore al massimo di $1',
+'htmlform-submit' => 'Invia',
+'htmlform-reset' => 'Annulla modifiche',
+'htmlform-selectorother-other' => 'Altro',
+
);
diff --git a/languages/messages/MessagesIu.php b/languages/messages/MessagesIu.php
index c00beb99..43914e35 100644
--- a/languages/messages/MessagesIu.php
+++ b/languages/messages/MessagesIu.php
@@ -1,6 +1,9 @@
<?php
/** Inuktitut (ᐃᓄᒃᑎᑐᑦ/inuktitut)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment Macro language; kept for backward compatibility
diff --git a/languages/messages/MessagesJa.php b/languages/messages/MessagesJa.php
index 7b824bab..0c67bfb3 100644
--- a/languages/messages/MessagesJa.php
+++ b/languages/messages/MessagesJa.php
@@ -15,6 +15,7 @@
* @author Fievarsty
* @author Fryed-peach
* @author Hatukanezumi
+ * @author Hijiri
* @author Hisagi
* @author Hosiryuhosi
* @author Iwai.masaharu
@@ -37,15 +38,20 @@
$datePreferences = array(
'default',
+ 'nengo',
'ISO 8601',
);
$defaultDateFormat = 'ja';
$dateFormats = array(
- 'ja time' => 'H:i',
- 'ja date' => 'Y年n月j日 (D)',
- 'ja both' => 'Y年n月j日 (D) H:i',
+ 'ja time' => 'H:i',
+ 'ja date' => 'Y年n月j日 (D)',
+ 'ja both' => 'Y年n月j日 (D) H:i',
+
+ 'nengo time' => 'H:i',
+ 'nengo date' => 'xtY年n月j日 (D)',
+ 'nengo both' => 'xtY年n月j日 (D) H:i',
);
$namespaceNames = array(
@@ -78,15 +84,15 @@ $specialPageAliases = array(
'Disambiguations' => array( '曖昧さ回避のページ', '曖昧さ回避' ),
'Userlogin' => array( 'ログイン' ),
'Userlogout' => array( 'ログアウト' ),
- 'CreateAccount' => array( 'アカウント作成' ),
+ 'CreateAccount' => array( 'アカウント作成', 'アカウントの作成' ),
'Preferences' => array( '個人設定', 'オプション' ),
'Watchlist' => array( 'ウォッチリスト' ),
- 'Recentchanges' => array( '最近更新したページ' ),
+ 'Recentchanges' => array( '最近の更新', '最近更新したページ' ),
'Upload' => array( 'アップロード' ),
- 'Listfiles' => array( 'ファイルリスト', 'ファイル一覧' ),
+ 'Listfiles' => array( 'ファイル一覧', 'ファイルリスト' ),
'Newimages' => array( '新着ファイル', '新しいファイルの一覧', '新着画像展示室' ),
- 'Listusers' => array( '登録利用者の一覧' ),
- 'Listgrouprights' => array( '利用者グループの権限一覧' ),
+ 'Listusers' => array( '登録利用者一覧', '登録利用者の一覧' ),
+ 'Listgrouprights' => array( '利用者グループ権限', '利用者グループの権限一覧', '利用者権限一覧' ),
'Statistics' => array( '統計' ),
'Randompage' => array( 'おまかせ表示' ),
'Lonelypages' => array( '孤立しているページ' ),
@@ -102,7 +108,7 @@ $specialPageAliases = array(
'Wantedtemplates' => array( '存在しないテンプレートへのリンク', '赤リンクテンプレート' ),
'Mostlinked' => array( '被リンクの多いページ' ),
'Mostlinkedcategories' => array( '被リンクの多いカテゴリ' ),
- 'Mostlinkedtemplates' => array( '被リンクの多いテンプレート', '使用箇所の多いテンプレート' ),
+ 'Mostlinkedtemplates' => array( '使用箇所の多いテンプレート', '被リンクの多いテンプレート' ),
'Mostimages' => array( '被リンクの多いファイル', '使用箇所の多いファイル' ),
'Mostcategories' => array( 'カテゴリの多いページ', 'カテゴリの多い項目' ),
'Mostrevisions' => array( '編集履歴の多いページ', '版の多い項目', '版の多いページ' ),
@@ -119,7 +125,7 @@ $specialPageAliases = array(
'Ipblocklist' => array( 'ブロック一覧', 'ブロックの一覧' ),
'Specialpages' => array( '特別ページ一覧' ),
'Contributions' => array( '投稿記録' ),
- 'Emailuser' => array( 'ウィキメール' ),
+ 'Emailuser' => array( 'メール送信', 'ウィキメール' ),
'Confirmemail' => array( 'メールアドレスの確認' ),
'Whatlinkshere' => array( 'リンク元' ),
'Recentchangeslinked' => array( '関連ページの更新状況', 'リンク先の更新状況' ),
@@ -127,20 +133,20 @@ $specialPageAliases = array(
'Blockme' => array( '自己ブロック' ),
'Booksources' => array( '文献資料' ),
'Categories' => array( 'カテゴリ', 'カテゴリ一覧' ),
- 'Export' => array( 'データ書き出し' ),
- 'Version' => array( 'バージョン情報' ),
+ 'Export' => array( 'データ書き出し', 'データー書き出し', 'エクスポート' ),
+ 'Version' => array( 'バージョン情報', 'バージョン' ),
'Allmessages' => array( 'メッセージ一覧', 'システムメッセージの一覧', '表示メッセージの一覧' ),
'Log' => array( 'ログ', '記録' ),
- 'Blockip' => array( '投稿ブロック' ),
+ 'Blockip' => array( '投稿ブロック', 'ブロック' ),
'Undelete' => array( '復帰' ),
- 'Import' => array( 'インポート' ),
+ 'Import' => array( 'データ取り込み', 'データー取り込み', 'インポート' ),
'Lockdb' => array( 'データベースロック' ),
'Unlockdb' => array( 'データベースロック解除', 'データベース解除' ),
- 'Userrights' => array( '利用者権限' ),
+ 'Userrights' => array( '利用者権限', '利用者権限の変更' ),
'MIMEsearch' => array( 'MIME検索', 'MIMEタイプ検索' ),
'FileDuplicateSearch' => array( '重複ファイル検索' ),
'Unwatchedpages' => array( 'ウォッチされていないページ' ),
- 'Listredirects' => array( 'リダイレクトの一覧' ),
+ 'Listredirects' => array( 'リダイレクト一覧', 'リダイレクトの一覧', 'リダイレクトリスト' ),
'Revisiondelete' => array( '特定版削除' ),
'Unusedtemplates' => array( '使われていないテンプレート', '未使用テンプレート' ),
'Randomredirect' => array( 'おまかせリダイレクト' ),
@@ -155,11 +161,12 @@ $specialPageAliases = array(
'Withoutinterwiki' => array( '言語間リンクを持たないページ', '言語間リンクのないページ' ),
'MergeHistory' => array( '履歴統合' ),
'Filepath' => array( 'パスの取得' ),
- 'Invalidateemail' => array( 'ウィキメール無効' ),
+ 'Invalidateemail' => array( 'メール無効化', 'メール無効' ),
'Blankpage' => array( '白紙ページ' ),
'LinkSearch' => array( '外部リンク検索' ),
'DeletedContributions' => array( '削除された投稿記録', '削除された投稿履歴', '削除歴' ),
'Tags' => array( 'タグ一覧' ),
+ 'Activeusers' => array( '活動中の利用者', '活動中の利用者一覧' ),
);
$magicWords = array(
@@ -170,7 +177,8 @@ $magicWords = array(
'toc' => array( '0', '__目次__', '__目次__', '__TOC__' ),
'noeditsection' => array( '0', '__セクション編集非表示__', '__セクション編集非表示__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__見出し非表示__', '__見出し非表示__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', '協定月', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', '協定月', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', '協定月1', '協定月1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', '協定月名', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', '省略協定月', '協定月省略', '協定月省略形', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', '協定日', 'CURRENTDAY' ),
@@ -179,7 +187,8 @@ $magicWords = array(
'currentyear' => array( '1', '協定年', 'CURRENTYEAR' ),
'currenttime' => array( '1', '協定時間', '協定時刻', 'CURRENTTIME' ),
'currenthour' => array( '1', '協定時', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', '現地月', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', '現地月', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', '現地月1', '現地月1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', '現地月名', 'LOCALMONTHNAME' ),
'localmonthabbrev' => array( '1', '省略現地月', 'LOCALMONTHABBREV' ),
'localday' => array( '1', '現地日', 'ローカルデイ', 'LOCALDAY' ),
@@ -192,32 +201,33 @@ $magicWords = array(
'numberofarticles' => array( '1', '記事数', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'ファイル数', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', '利用者数', 'NUMBEROFUSERS' ),
- 'numberofactiveusers' => array( '1', '有効な利用者', '有効な利用者数', '有効利用者数', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofactiveusers' => array( '1', '活動利用者数', '有効な利用者数', '有効利用者数', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', '編集回数', 'NUMBEROFEDITS' ),
'numberofviews' => array( '1', '閲覧回数', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'ページ名', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'ページ名E', 'ページ名エンコード', 'PAGENAMEE' ),
+ 'pagenamee' => array( '1', 'ページ名E', 'ページ名E', 'PAGENAMEE' ),
'namespace' => array( '1', '名前空間', 'NAMESPACE' ),
- 'namespacee' => array( '1', '名前空間E', '名前空間エンコード', 'NAMESPACEE' ),
- 'talkspace' => array( '1', '会話空間', 'トークスペース', 'TALKSPACE' ),
- 'talkspacee' => array( '1', '会話空間E', 'トークスペースE', 'TALKSPACEE' ),
- 'subjectspace' => array( '1', '標準空間', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( '1', '標準空間E', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( '1', 'フルページ名', '完全なページ名', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( '1', 'フルページ名E', '完全なページ名E', '完全なページ名エンコード', 'FULLPAGENAMEE' ),
+ 'namespacee' => array( '1', '名前空間E', '名前空間E', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ノート空間', '会話空間', 'トークスペース', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ノート空間E', '会話空間E', 'ノート空間E', '会話空間E', 'トークスペースE', 'トークスペースE', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', '標準空間', '記事空間', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', '標準空間E', '標準空間E', '記事空間E', '記事空間E', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'フルページ名', '完全なページ名', '完全な記事名', '完全ページ名', '完全記事名', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'フルページ名E', '完全なページ名E', 'フルページ名E', '完全なページ名E', 'FULLPAGENAMEE' ),
'subpagename' => array( '1', 'サブページ名', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'サブページ名E', 'サブページ名エンコード', 'SUBPAGENAMEE' ),
+ 'subpagenamee' => array( '1', 'サブページ名E', 'サブページ名E', 'SUBPAGENAMEE' ),
'basepagename' => array( '1', '親ページ名', 'BASEPAGENAME' ),
- 'basepagenamee' => array( '1', '親ページ名E', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'トークページ名', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'トークページ名E', 'トークページ名エンコード', 'TALKPAGENAMEE' ),
+ 'basepagenamee' => array( '1', '親ページ名E', '親ページ名E', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', '会話ページ名', 'トークページ名', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', '会話ページ名E', 'トークページ名E', '会話ページ名E', 'トークページ名E', 'TALKPAGENAMEE' ),
'subjectpagename' => array( '1', '主ページ名', '記事ページ名', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( '1', '主ページ名E', '記事ページ名E', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'subjectpagenamee' => array( '1', '主ページ名E', '記事ページ名E', '主ページ名E', '記事ページ名E', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'subst' => array( '0', '展開:', '展開:', 'SUBST:' ),
'img_thumbnail' => array( '1', 'サムネイル', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'サムネイル=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_manualthumb' => array( '1', '代替画像=$1', 'サムネイル=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', '右', 'right' ),
'img_left' => array( '1', '左', 'left' ),
- 'img_none' => array( '1', 'なし', 'none' ),
+ 'img_none' => array( '1', 'なし', '無し', 'none' ),
'img_width' => array( '1', '$1ピクセル', '$1px' ),
'img_center' => array( '1', '中央', 'center', 'centre' ),
'img_framed' => array( '1', 'フレーム', 'framed', 'enframed', 'frame' ),
@@ -229,40 +239,43 @@ $magicWords = array(
'img_super' => array( '1', '上付き', 'super', 'sup' ),
'img_link' => array( '1', 'リンク=$1', 'link=$1' ),
'img_alt' => array( '1', '代替文=$1', 'alt=$1' ),
- 'int' => array( '0', 'インターフェース:', 'インタ:', 'INT:' ),
+ 'int' => array( '0', 'インターフェース:', 'インタ:', 'インターフェース:', 'インタ:', 'INT:' ),
'sitename' => array( '1', 'サイト名', 'サイトネーム', 'SITENAME' ),
- 'ns' => array( '0', '名前空間:', '名空:', 'NS:' ),
- 'localurl' => array( '0', 'ローカルURL:', 'LOCALURL:' ),
- 'localurle' => array( '0', 'ローカルURLE:', 'ローカルURLエンコード:', 'LOCALURLE:' ),
+ 'ns' => array( '0', '名前空間:', '名前空間:', '名空:', '名空:', 'NS:' ),
+ 'localurl' => array( '0', 'ローカルURL:', 'ローカルURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ローカルURLE:', 'ローカルURLE:', 'LOCALURLE:' ),
'server' => array( '0', 'サーバー', 'サーバ', 'SERVER' ),
'servername' => array( '0', 'サーバー名', 'サーバーネーム', 'サーバ名', 'サーバネーム', 'SERVERNAME' ),
'scriptpath' => array( '0', 'スクリプトパス', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'スタイルパス', 'STYLEPATH' ),
'gender' => array( '0', '性別:', '性別:', 'GENDER:' ),
'notitleconvert' => array( '0', '__タイトルコンバート拒否__', '__タイトルコンバート拒否__', '__タイトル非表示__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__内容変換抑制__', '__内容変換抑制__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', '協定週', 'CURRENTWEEK' ),
'localweek' => array( '1', '現地週', 'ローカルウィーク', 'LOCALWEEK' ),
- 'revisionid' => array( '1', 'リビジョンID', '差分ID', 'REVISIONID' ),
+ 'revisionid' => array( '1', 'リビジョンID', '差分ID', 'リビジョンID', '差分ID', 'REVISIONID' ),
'revisionday' => array( '1', 'リビジョン日', '差分日', 'REVISIONDAY' ),
- 'revisionday2' => array( '1', 'リビジョン日2', '差分日2', 'REVISIONDAY2' ),
+ 'revisionday2' => array( '1', 'リビジョン日2', '差分日2', 'リビジョン日2', '差分日2', 'REVISIONDAY2' ),
'revisionmonth' => array( '1', 'リビジョン月', '差分月', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'リビジョン年', '差分年', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'リビジョンタイムスタンプ', 'REVISIONTIMESTAMP' ),
- 'plural' => array( '0', '複数:', 'PLURAL:' ),
- 'fullurl' => array( '0', '完全なURL:', 'フルURL:', 'FULLURL:' ),
- 'fullurle' => array( '0', '完全なURLE:', 'フルURLE:', 'FULLURLE:' ),
- 'newsectionlink' => array( '1', '__新しいセクションリンク__', '__新セクションリンク__', '__NEWSECTIONLINK__' ),
+ 'revisionuser' => array( '1', 'リビジョンユーザー', 'リビジョンユーザ', 'リビジョン利用者', '差分利用者', 'REVISIONUSER' ),
+ 'plural' => array( '0', '複数:', '複数:', 'PLURAL:' ),
+ 'fullurl' => array( '0', '完全なURL:', 'フルURL:', '完全なURL:', 'フルURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', '完全なURLE:', 'フルURLE:', '完全なURLE:', 'フルURLE:', 'FULLURLE:' ),
+ 'newsectionlink' => array( '1', '__新しいセクションリンク__', '__新セクションリンク__', '__新しいセクションリンク__', '__新セクションリンク__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__新しいセクションリンク非表示__', '__新しいセクションリンク非表示__', '__新セクションリンク非表示__', '__新セクションリンク非表示__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'ウィキバージョン', 'MediaWikiバージョン', 'メディアウィキバージョン', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'URLエンコード:', 'URLENCODE:' ),
+ 'urlencode' => array( '0', 'URLエンコード:', 'URLエンコード:', 'URLENCODE:' ),
'currenttimestamp' => array( '1', '協定タイムスタンプ', 'CURRENTTIMESTAMP' ),
'localtimestamp' => array( '1', '現地タイムスタンプ', 'ローカルタイムスタンプ', 'LOCALTIMESTAMP' ),
- 'language' => array( '0', '#言語:', '#LANGUAGE:' ),
+ 'language' => array( '0', '#言語:', '#言語:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', '内容言語', '記事言語', 'プロジェクト言語', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
'pagesinnamespace' => array( '1', '名前空間内ページ数', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', '管理者数', 'NUMBEROFADMINS' ),
'special' => array( '0', '特別', 'special' ),
- 'defaultsort' => array( '1', 'デフォルトソート:', 'デフォルトソートキー:', 'デフォルトカテゴリソート:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( '0', 'ファイルパス:', 'FILEPATH:' ),
+ 'defaultsort' => array( '1', 'デフォルトソート:', 'デフォルトソート:', 'デフォルトソートキー:', 'デフォルトカテゴリソート:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'ファイルパス:', 'ファイルパス:', 'FILEPATH:' ),
'tag' => array( '0', 'タグ', 'tag' ),
'hiddencat' => array( '1', '__カテゴリ非表示__', '__カテ非表示__', '__非表示カテ__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'カテゴリ内ページ数', 'PAGESINCATEGORY', 'PAGESINCAT' ),
@@ -272,6 +285,7 @@ $magicWords = array(
'numberingroup' => array( '1', 'グループ人数', 'グループ所属人数', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__二重転送解消無効__', '__二重転送解消無効__', '__二重転送修正無効__', '__二重転送修正無効__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', '保護レベル', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', '日付整形', 'formatdate', 'dateformat' ),
);
$messages = array(
@@ -305,6 +319,7 @@ $messages = array(
'tog-enotifminoredits' => '細部の編集でもメールを受け取る',
'tog-enotifrevealaddr' => '通知メールに自分のメールアドレスを記載する',
'tog-shownumberswatching' => 'ページをウォッチしている利用者数を表示する',
+'tog-oldsig' => '現在の署名のプレビュー:',
'tog-fancysig' => '署名をウィキテキストとして扱う (自動でリンクしない)',
'tog-externaleditor' => '編集に外部アプリケーションを使う (上級者向け・コンピュータに特殊な設定が必要)',
'tog-externaldiff' => '差分表示に外部アプリケーションを使う (上級者向け・コンピュータに特殊な設定が必要)',
@@ -328,6 +343,13 @@ $messages = array(
'underline-never' => '常に付けない',
'underline-default' => 'ブラウザの設定を使用',
+# Font style option in Special:Preferences
+'editfont-style' => '編集エリアのフォントスタイル:',
+'editfont-default' => 'ブラウザに任せる',
+'editfont-monospace' => '等幅フォント',
+'editfont-sansserif' => 'サンセリフフォント',
+'editfont-serif' => 'セリフフォント',
+
# Dates
'sunday' => '日曜日',
'monday' => '月曜日',
@@ -387,7 +409,7 @@ $messages = array(
'category-media-header' => 'カテゴリ「$1」にあるメディア',
'category-empty' => "''このカテゴリにはページまたはメディアがひとつもありません。''",
'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
-'hidden-category-category' => '隠しカテゴリ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隠しカテゴリ',
'category-subcat-count' => '{{PLURAL:$2|このカテゴリへは次の1サブカテゴリしか属していません。|以下にこのカテゴリへ属しているサブカテゴリ $2 個中 $1 個を表示しています。}}',
'category-subcat-count-limited' => 'このカテゴリへは以下の{{PLURAL:$1|サブカテゴリ $1 個}}が属しています。',
'category-article-count' => '{{PLURAL:$2|このカテゴリへは次の1ページしか属していません。|以下にこのカテゴリへ属しているページ $2 件中 $1 件を表示しています。}}',
@@ -395,6 +417,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|このカテゴリへは次の1ファイルしか属していません。|以下にこのカテゴリへ属しているファイル $2 個中 $1 個を表示しています。}}',
'category-file-count-limited' => 'このカテゴリへは以下の{{PLURAL:$1|ファイル $1 個}}が属しています。',
'listingcontinuesabbrev' => 'の続き',
+'index-category' => '検索エンジンにインデックス化されるページ',
+'noindex-category' => '検索エンジンにインデックス化されないページ',
'mainpagetext' => "'''MediaWikiが正常にインストールされました。'''",
'mainpagedocfooter' => '使い方・設定に関しては[http://meta.wikimedia.org/wiki/%E3%83%98%E3%83%AB%E3%83%97:%E7%9B%AE%E6%AC%A1 ユーザーズガイド]を参照してください。
@@ -405,10 +429,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/ja MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]',
-'about' => '解説',
-'article' => '本文',
-'newwindow' => '(新しいウィンドウが開きます)',
-'cancel' => '中止',
+'about' => '解説',
+'article' => '本文',
+'newwindow' => '(新しいウィンドウが開きます)',
+'cancel' => '中止',
+'moredotdotdot' => '続き…',
+'mypage' => '自分のページ',
+'mytalk' => '自分のトーク',
+'anontalk' => 'この匿名利用者のトーク',
+'navigation' => '案内',
+'and' => 'および',
+
+# Cologne Blue skin
'qbfind' => '検索',
'qbbrowse' => '閲覧',
'qbedit' => '編集',
@@ -416,15 +448,35 @@ $messages = array(
'qbpageinfo' => '関連情報',
'qbmyoptions' => '利用者用ページ',
'qbspecialpages' => '特別ページ',
-'moredotdotdot' => '続き…',
-'mypage' => '自分のページ',
-'mytalk' => '自分のトーク',
-'anontalk' => 'この匿名利用者のトーク',
-'navigation' => '案内',
-'and' => 'および',
-
-# Metadata in edit box
-'metadata_help' => 'メタデータ:',
+'faq' => 'よくある質問と回答',
+'faqpage' => 'Project:よくある質問と回答',
+
+# Vector skin
+'vector-action-addsection' => '話題追加',
+'vector-action-delete' => '削除',
+'vector-action-move' => '移動',
+'vector-action-protect' => '保護',
+'vector-action-undelete' => '復帰',
+'vector-action-unprotect' => '保護解除',
+'vector-namespace-category' => 'カテゴリ',
+'vector-namespace-help' => 'ヘルプページ',
+'vector-namespace-image' => 'ファイル',
+'vector-namespace-main' => 'ページ',
+'vector-namespace-media' => 'メディアページ',
+'vector-namespace-mediawiki' => 'メッセージ',
+'vector-namespace-project' => 'プロジェクトページ',
+'vector-namespace-special' => '特別ページ',
+'vector-namespace-talk' => 'トーク',
+'vector-namespace-template' => 'テンプレート',
+'vector-namespace-user' => '利用者ページ',
+'vector-view-create' => '作成',
+'vector-view-edit' => '編集',
+'vector-view-history' => '履歴表示',
+'vector-view-view' => '閲覧',
+'vector-view-viewsource' => 'ソース表示',
+'actions' => '操作',
+'namespaces' => '名前空間',
+'variants' => '変種',
'errorpagetitle' => 'エラー',
'returnto' => '$1 に戻る。',
@@ -474,18 +526,20 @@ $messages = array(
'otherlanguages' => '他の言語',
'redirectedfrom' => '($1 から転送)',
'redirectpagesub' => 'リダイレクトページ',
-'lastmodifiedat' => 'このページの最終更新は $1 $2 に行われました。', # $1 date, $2 time
+'lastmodifiedat' => 'このページの最終更新は $1 $2 に行われました。',
'viewcount' => 'このページは{{PLURAL:$1|$1 回}}アクセスされました。',
'protectedpage' => '保護されたページ',
'jumpto' => '移動:',
'jumptonavigation' => 'ナビゲーション',
'jumptosearch' => '検索',
+'view-pool-error' => '申し訳ありません。ただいま、サーバーに過大な負荷がかかっています。このページを閲覧しようとする利用者が多すぎます。しばらく時間を置いてから、もう一度このページにアクセスしてみてください。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}について',
'aboutpage' => 'Project:{{SITENAME}}について',
'copyright' => 'コンテンツは$1のライセンスで利用することができます。',
-'copyrightpagename' => '{{SITENAME}}の著作権',
'copyrightpage' => '{{ns:project}}:著作権',
'currentevents' => '最近の出来事',
'currentevents-url' => 'Project:最近の出来事',
@@ -493,8 +547,6 @@ $messages = array(
'disclaimerpage' => 'Project:免責事項',
'edithelp' => '編集の仕方',
'edithelppage' => 'Help:編集',
-'faq' => 'よくある質問と回答',
-'faqpage' => 'Project:よくある質問と回答',
'helppage' => 'Help:目次',
'mainpage' => 'メインページ',
'mainpage-description' => 'メインページ',
@@ -572,9 +624,6 @@ $messages = array(
関数 "$2" 内
"$1"
データベースの返したエラー "$3: $4"',
-'noconnect' => '申し訳ありません。技術的な問題が発生しており、データベースサーバーに接続できません。<br />$1',
-'nodb' => 'データベース $1 を選択できませんでした',
-'cachederror' => '以下は要求したページのキャッシュです。最新の更新を反映していない可能性があります。',
'laggedslavemode' => "'''警告:''' ページに最新の編集が反映されていない可能性があります。",
'readonly' => 'データベースがロックされています',
'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
@@ -591,6 +640,8 @@ $messages = array(
'readonly_lag' => 'データベースはスレーブ・サーバーがマスター・サーバーに同期するまで自動的にロックされています',
'internalerror' => '内部処理エラー',
'internalerror_info' => '内部処理エラー: $1',
+'fileappenderrorread' => '追加中に、「$1」を読み取れませんでした。',
+'fileappenderror' => '「$1」を「$2」に追加できませんでした。',
'filecopyerror' => 'ファイル "$1" を "$2" へコピーできませんでした。',
'filerenameerror' => 'ファイル名を "$1" から "$2" へ変更できませんでした。',
'filedeleteerror' => 'ファイル "$1" を削除できませんでした。',
@@ -600,7 +651,7 @@ $messages = array(
'unexpected' => '値が異常です: "$1"="$2"',
'formerror' => 'エラー: フォームを送信できませんでした',
'badarticleerror' => 'このページでは要求された操作を行えません。',
-'cannotdelete' => '指定されたページまたはファイルを削除できませんでした。すでに他の利用者によって削除された可能性があります。',
+'cannotdelete' => '指定されたページあるいはファイル「$1」を削除できませんでした。すでに他の利用者によって削除された可能性があります。',
'badtitle' => '不正なページ名',
'badtitletext' => 'ページ名が未入力、無効、または正しくない言語間リンク・ウィキ間リンクです。ページ名に利用できない文字が含まれている可能性があります。',
'perfcached' => '以下のデータはキャッシュであり、最新の更新を反映していない可能性があります。',
@@ -631,7 +682,6 @@ $2',
'virus-unknownscanner' => '不明なウイルス駆除プログラム:',
# Login and logout pages
-'logouttitle' => 'ログアウト',
'logouttext' => "'''ログアウトしました。'''
このまま匿名で{{SITENAME}}を使い続けることができます。もう一度元の、あるいは別の利用者として[[Special:UserLogin|ログイン]]することもできます。
@@ -639,7 +689,6 @@ $2',
'welcomecreation' => '== $1 さん、ようこそ! ==
あなたのアカウントができました。
お好みに合わせて{{SITENAME}}内での[[Special:Preferences|個人設定]]を変更することができます。',
-'loginpagetitle' => 'ログイン',
'yourname' => '利用者名:',
'yourpassword' => 'パスワード:',
'yourpasswordagain' => 'パスワード再入力:',
@@ -650,6 +699,7 @@ $2',
'nav-login-createaccount' => 'ログインまたはアカウント作成',
'loginprompt' => '{{SITENAME}}にログインするにはクッキーを有効にする必要があります。',
'userlogin' => 'ログインまたはアカウント作成',
+'userloginnocreate' => 'ログイン',
'logout' => 'ログアウト',
'userlogout' => 'ログアウト',
'notloggedin' => 'ログインしていません',
@@ -661,27 +711,8 @@ $2',
'createaccountmail' => 'メールで送信',
'badretype' => '両方のパスワードが一致しません。',
'userexists' => '入力された利用者名はすでに使われています。ほかの名前をお選びください。',
-'youremail' => 'メールアドレス:',
-'username' => '利用者名:',
-'uid' => '利用者ID:',
-'prefs-memberingroups' => '所属する{{PLURAL:$1|グループ}}:',
-'yourrealname' => '本名:',
-'yourlanguage' => '使用言語:',
-'yourvariant' => '言語変種:',
-'yournick' => '署名:',
-'badsig' => '署名用のソースが正しくありません。HTMLタグを見直してください。',
-'badsiglength' => '署名が長すぎます。$1{{PLURAL:$1|文字}}以下でなければなりません。',
-'yourgender' => '性別:',
-'gender-unknown' => '未指定',
-'gender-male' => '男',
-'gender-female' => '女',
-'prefs-help-gender' => '省略可能: 対象の文法的性によって表現が変わる言語での使用を念頭に、文法的性を考慮したユーザインタフェースを実現するために使われます。この情報は公開されます。',
-'email' => 'メールアドレス',
-'prefs-help-realname' => '本名登録は任意です。本名を登録した場合、あなたの著作物の帰属表示に用いられます。',
'loginerror' => 'ログイン失敗',
-'prefs-help-email' => 'メールアドレスの設定は任意ですが、設定しておけばパスワードを忘れた際に新しいパスワードを電子メールで受け取ることができます。
-また、他の利用者からのウィキメールを受け取ることができるようになります。この時点ではあなたのメールアドレスはその利用者に知られることはありません。ただし、あなたから送信すれば、あなたのメールアドレスは先方に通知されます。',
-'prefs-help-email-required' => 'メールアドレスが必要です。',
+'createaccounterror' => 'アカウントを作成できませんでした: $1',
'nocookiesnew' => '利用者アカウントが作成されましたが、ログインしていません。{{SITENAME}}ではログインにクッキーを使います。あなたはクッキーを無効な設定にしているようです。クッキーを有効にしてから新しい利用者名とパスワードでログインしてください。',
'nocookieslogin' => '{{SITENAME}}ではログインにクッキーを使います。あなたはクッキーを無効にしているようです。クッキーを有効にして、もう一度試してください。',
'noname' => '利用者名を正しく指定していません。',
@@ -690,15 +721,18 @@ $2',
'nosuchuser' => '「$1」という名前の利用者は見当たりません。利用者名では大文字と小文字を区別します。綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成してください]]。',
'nosuchusershort' => '「<nowiki>$1</nowiki>」という利用者は見当たりません。綴りが正しいことを再度確認してください。',
'nouserspecified' => '利用者名を指定してください。',
+'login-userblocked' => 'この利用者はブロックされています。ログインは拒否されます。',
'wrongpassword' => 'パスワードが間違っています。再度入力してください。',
'wrongpasswordempty' => 'パスワードを空にすることはできません。再度入力してください。',
-'passwordtooshort' => 'パスワードが無効、または短すぎます。パスワードは$1文字以上の文字列でなければなりません。また利用者名と同じものは使えません。',
+'passwordtooshort' => 'パスワードは{{PLURAL:$1|$1文字}}以上でなければなりません。',
+'password-name-match' => '利用者名と同じパスワードは使えません。',
'mailmypassword' => '新しいパスワードをメールで送る',
'passwordremindertitle' => '{{SITENAME}} 仮パスワード通知',
'passwordremindertext' => 'どなたか ($1 のIPアドレスの使用者) が {{SITENAME}} ($4) のログイン用パスワードの再発行を申請しました。利用者「$2」の仮パスワードは "$3" です。もしあなたがパスワードの発行を依頼したのであれば、ログインして別のパスワードに変更してください。この仮パスワードは{{PLURAL:$5|1日|$5日間}}で有効期限が切れます。
パスワード再発行の申請に覚えがない、またはログイン用パスワードを思い出されパスワード変更の必要がないならば、このメッセージは無視してください。引き続き以前のパスワードを使用し続けることができます。',
'noemail' => '利用者「$1」のメールアドレスは登録されていません。',
+'noemailcreate' => '有効な電子メールアドレスを入力する必要があります。',
'passwordsent' => '新しいパスワードを$1さんの登録済みメールアドレスに送信しました。メールを受け取ったら、再度ログインしてください。',
'blocked-mailpassword' => 'あなたの使用しているIPアドレスからの編集はブロックされています。悪用防止のため、パスワードの再発行は無効化されています。',
'eauthentsent' => '指定されたメールアドレスにアドレス確認のためのメールを送信しました。このアカウントが本当にあなたのものであるか確認するため、あなたがメールの内容に従わない限り、その他のメールはこのアカウント宛には送信されません。',
@@ -716,8 +750,10 @@ $2',
'createaccount-text' => 'この電子メールアドレスを連絡先として、{{SITENAME}} ($4) に「$2」という名前のアカウントが作成されました。パスワードは「$3」です。今すぐログインし、パスワードを変更してください。
何かの手違いでアカウントが作成されたと思う場合、このメッセージは無視してください。',
+'usernamehasherror' => '利用者名には番号記号を含むことができません',
'login-throttled' => 'ログインの失敗が制限回数を超えました。しばらく時間をおいてから再度お試しください。',
'loginlanguagelabel' => '言語: $1',
+'suspicious-userlogout' => 'あなたのログアウトは拒否されました。送信されたリクエストが、壊れたブラウザもしくはキャッシュ・プロキシによって送信された可能性があるからです。',
# Password reset dialog
'resetpass' => 'パスワードの変更',
@@ -729,17 +765,13 @@ $2',
'retypenew' => '新しいパスワードを再入力:',
'resetpass_submit' => '再設定してログイン',
'resetpass_success' => 'パスワードを変更しました!ログインしています...',
-'resetpass_bad_temporary' => '無効な仮パスワードです。すでにパスワード変更を行っているか、新しい仮パスワードの発行を依頼していませんか。',
'resetpass_forbidden' => 'パスワードの変更は許可されていません',
'resetpass-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
'resetpass-submit-loggedin' => 'パスワードを変更',
+'resetpass-submit-cancel' => '中止',
'resetpass-wrong-oldpass' => '仮パスワードまたは現在のパスワードが無効です。
すでにパスワード変更を行っているか、新しい仮パスワードの発行を依頼していませんか。',
'resetpass-temp-password' => '仮パスワード:',
-'resetpass-log' => 'パスワード再設定記録',
-'resetpass-logtext' => '以下は管理者が利用者のパスワードを再設定した記録です。',
-'resetpass-logentry' => '$1のパスワードを変更しました',
-'resetpass-comment' => 'パスワードを再設定する理由:',
# Edit page toolbar
'bold_sample' => '太字',
@@ -809,7 +841,6 @@ $1 または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
'blockededitsource' => "'''$1''' への '''あなたの編集''' を以下に示します:",
'whitelistedittitle' => '編集にはログインが必要',
'whitelistedittext' => 'このページを編集するには $1 する必要があります。',
-'confirmedittitle' => '編集にはメールアドレスの確認が必要',
'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。[[Special:Preferences|個人設定]]でメールアドレスを設定し、確認を行ってください。',
'nosuchsectiontitle' => 'セクションが存在しません',
'nosuchsectiontext' => 'あなたは存在しないセクションを編集しようとしました。ページを閲覧している間に移動あるいは削除された可能性があります。',
@@ -824,13 +855,18 @@ $1 または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
'newarticletext' => 'あなたがクリックしたリンク先のページはまだ存在していません。このページを新規に作成するには、下のボックスに内容を書き込んでください (詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。ページを作成するつもりがない場合には、ブラウザの「戻る」ボタンを使って前のページに戻ってください。',
'anontalkpagetext' => "----''このページはアカウントをまだ作成していないか、あるいは使っていない匿名利用者のための議論用ページです。匿名利用者を識別する際には、利用者名のかわりにIPアドレスを用いる必要があります。IPアドレスは複数の利用者の間で共有されていることがあります。もしあなたが匿名利用者であり、自分に関係のないコメントが寄せられているとお考えの場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてくださるようお願いします。''",
'noarticletext' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索する]か、[{{fullurl:{{FULLPAGENAME}}|action=edit}} このページを作成]</span>することができます。',
+'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索する]</span>ことができます。',
'userpage-userdoesnotexist' => '「$1」という名前のアカウントは登録されていません。このページを編集することが適切かどうか確認してください。',
+'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
+'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
+参考のために最新のブロック記録を以下に表示します。',
'clearyourcache' => "'''注意:''' 保存した後、ブラウザのキャッシュをクリアする必要があります。
* '''Mozilla / Firefox / Safari:''' [Shift] を押しながら [再読み込み] をクリック、または [Ctrl]-[F5] か [Ctrl]-[R] (Macintoshでは [Cmd]-[Shift]-[R])
* '''IE:''' [Ctrl] を押しながら [更新] をクリック、または [Ctrl]-[F5]
* '''Konqueror:''' [再読み込み] をクリック、または [F5]
* '''Opera:''' 「ツール」→「設定」からキャッシュをクリア。",
-'usercssjsyoucanpreview' => "'''ヒント:''' 「{{int:showpreview}}」ボタンを使うと保存前に新しいスタイルシートやスクリプトをテストできます。",
+'usercssyoucanpreview' => "''ヒント:''' 「{{int:showpreview}}」ボタンを使うと保存前に新しいスタイルシートをテストできます。",
+'userjsyoucanpreview' => "'''ヒント:''' 「{{int:showpreview}}」ボタンを使うと保存前に新しいスクリプトをテストできます。",
'usercsspreview' => "'''カスタムCSSをプレビューしています。まだ保存されていないので注意してください。'''",
'userjspreview' => "'''カスタム JavaScript を試験・プレビューしています。まだ保存されていないので注意してください。'''",
'userinvalidcssjstitle' => "'''警告:''' 「$1」というスキンはありません。.css と .js ページを編集する際にはサブページ名を小文字にすることを忘れないでください。例えば {{ns:user}}:Hoge/Monobook.css ではなく {{ns:user}}:Hoge/monobook.css となります。",
@@ -864,13 +900,16 @@ $1 または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
'readonlywarning' => "'''警告: データベースがメンテナンスのためにロックされているため、現在は編集を保存できません。'''必要であれば文章をカットアンドペーストしてローカルファイルとして保存し、後ほど保存をやり直してください。
データベースをロックした管理者による説明は以下の通りです: $1",
-'protectedpagewarning' => "'''警告:このページは保護されています。{{int:group-sysop}}しか編集できません。'''",
-'semiprotectedpagewarning' => "'''お知らせ:''' このページは登録利用者のみが編集できるよう保護されています。",
+'protectedpagewarning' => "'''警告:このページは保護されています。{{int:group-sysop}}しか編集できません。'''
+参考として以下に一番最後のログを表示します:",
+'semiprotectedpagewarning' => "'''お知らせ:''' このページは登録利用者のみが編集できるよう保護されています。
+参考として以下に一番最後のログを表示します:",
'cascadeprotectedwarning' => "'''警告:''' このページはカスケード保護されている以下の{{PLURAL:$1|ページ}}から呼び出されているため、{{int:group-sysop}}しか編集できません。",
-'titleprotectedwarning' => "'''警告: このページは保護されているため、作成には[[Special:ListGroupRights|一定の権限]]が必要です。'''",
-'templatesused' => 'このページで使われているテンプレート:',
-'templatesusedpreview' => 'このプレビューで使われているテンプレート:',
-'templatesusedsection' => 'このセクションで使われているテンプレート:',
+'titleprotectedwarning' => "'''警告: このページは保護されているため、作成には[[Special:ListGroupRights|一定の権限]]が必要です。'''
+参考として以下に一番最後のログを表示します:",
+'templatesused' => 'このページで使われている{{PLURAL:$1|テンプレート}}:',
+'templatesusedpreview' => 'このプレビューで使われている{{PLURAL:$1|テンプレート}}:',
+'templatesusedsection' => 'このセクションで使われている{{PLURAL:$1|テンプレート}}:',
'template-protected' => '(保護)',
'template-semiprotected' => '(半保護)',
'hiddencategories' => 'このページは{{PLURAL:$1|$1個}}の隠しカテゴリに属しています:',
@@ -878,15 +917,17 @@ $1 または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
'nocreatetitle' => 'ページの作成が制限されています',
'nocreatetext' => '{{SITENAME}} ではページの新規作成を制限しています。元のページに戻って既存のページを編集するか、[[Special:UserLogin|ログインまたはアカウントの作成]]をしてください。',
'nocreate-loggedin' => 'あなたには新しいページを作成する権限がありません。',
+'sectioneditnotsupported-title' => 'セクション単位編集はサポートされていません',
+'sectioneditnotsupported-text' => 'このページではセクション単位編集はサポートされません。',
'permissionserrors' => '認証エラー',
'permissionserrorstext' => 'あなたにはこのページの編集権限がありません。{{PLURAL:$1|理由}}は以下の通りです:',
'permissionserrorstext-withaction' => '以下に示された{{PLURAL:$1|理由}}により、$2を行うことができません:',
-'recreate-deleted-warn' => "'''警告: あなたは以前に削除されたページを再作成しようとしています。'''
+'recreate-moveddeleted-warn' => "'''警告: 以前に削除されたページを再作成しようとしています。'''
-このページを編集し続けることが適切であるかどうか確認してください。参考として以下にこのページの削除記録を表示しています:",
-'deleted-notice' => 'このページは削除されています。
-参考のため、このページの削除ログが以下に表示されています。',
-'deletelog-fulllog' => '完全なログを表示',
+このページを編集し続けることが適切であるかどうか確認してください。参考として以下にこのページの削除と移動の記録を表示します:",
+'moveddeleted-notice' => 'このページは削除されています。
+参考のため、このページの削除と移動の記録を以下に表示します。',
+'log-fulllog' => '完全なログを見る',
'edit-hook-aborted' => 'フックによって編集が破棄されました。理由は不明です。',
'edit-gone-missing' => 'ページをアップデートできませんでした。既に削除されているようです。',
'edit-conflict' => '編集競合。',
@@ -905,6 +946,7 @@ $1 または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
'post-expand-template-argument-category' => '無視されたテンプレート引数を含むページ',
'parser-template-loop-warning' => 'テンプレートのループが検出されました: [[$1]]',
'parser-template-recursion-depth-warning' => 'テンプレートの再帰回数が上限値を超えました ($1)',
+'language-converter-depth-warning' => '言語変換器の深度制限を超えました ($1)',
# "Undo" feature
'undo-success' => '編集の取り消しが可能です。これがあなたの意図した編集であるか、下に表示されている差分を確認してください。保存ボタンを押すと取り消しが確定されます。',
@@ -924,7 +966,7 @@ $3による理由は以下の通りです: ''$2''",
'currentrev' => '最新版',
'currentrev-asof' => '$1 時点における最新版',
'revisionasof' => '$1時点における版',
-'revision-info' => '$1時点における $2 による版', # Additionally available: $3: revision id
+'revision-info' => '$1時点における $2 による版',
'previousrevision' => '←前の版',
'nextrevision' => '次の版→',
'currentrevisionlink' => '最新版',
@@ -936,7 +978,7 @@ $3による理由は以下の通りです: ''$2''",
'histlegend' => "差分を表示するには比較したい版のラジオボタンを選択し、エンターキーを押すか、下部のボタンを押します。<br />
凡例: '''({{int:cur}})''' = 最新版との比較、'''({{int:last}})''' = 直前の版との比較、'''{{int:minoreditletter}}''' = 細部の編集",
'history-fieldset-title' => '履歴の検索',
-'deletedrev' => '[削除済み]',
+'history-show-deleted' => '削除済みのみ',
'histfirst' => '最古',
'histlast' => '最新',
'historysize' => '({{PLURAL:$1|$1バイト}})',
@@ -945,62 +987,93 @@ $3による理由は以下の通りです: ''$2''",
# Revision feed
'history-feed-title' => '変更履歴',
'history-feed-description' => 'このウィキのこのページに関する変更履歴',
-'history-feed-item-nocomment' => '$2 における $1 による編集', # user at time
+'history-feed-item-nocomment' => '$2 における $1 による編集',
'history-feed-empty' => '要求したページは存在しません。既に削除されたか移動された可能性があります。 [[Special:Search|このウィキの検索]]で関連する新しいページを探してみてください。',
# Revision deletion
-'rev-deleted-comment' => '(要約は削除されています)',
-'rev-deleted-user' => '(投稿者名は削除されています)',
-'rev-deleted-event' => '(ログは削除されています)',
-'rev-deleted-text-permission' => "この版は'''削除されています'''。削除の詳細は[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 削除記録]を参照してください。",
-'rev-deleted-text-view' => "この版は'''削除されています'''。あなたは{{int:group-sysop}}であるため内容を見ることができます。削除の詳細は[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 削除記録]を参照してください。",
-'rev-deleted-no-diff' => "表示させようとした差分のいずれかの版が'''削除されているため'''、差分表示できません。削除の詳細は[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 削除記録]を参照してください。",
-'rev-deleted-unhide-diff' => "この差分のいずれかの版が'''削除されています'''。削除の詳細は[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 削除記録]を参照してください。あなたは{{int:group-sysop}}であるため、このまま[$1 この差分を見る]ことができます。",
-'rev-delundel' => '表示/秘匿',
-'revisiondelete' => '版の削除と復帰',
-'revdelete-nooldid-title' => '対象版がありません',
-'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を秘匿しようとしています。',
-'revdelete-nologtype-title' => 'ログの種類が指定されていません',
-'revdelete-nologtype-text' => 'この操作を実行するログ種類を指定していません。',
-'revdelete-toomanytargets-title' => '対象が多すぎます',
-'revdelete-toomanytargets-text' => 'この操作の実行に指定した対象の種類が多すぎます。',
-'revdelete-nologid-title' => 'ログ項目が無効',
-'revdelete-nologid-text' => 'この操作の対象となるログの項目を指定していないか、あるいは指定した項目が存在しません。',
-'revdelete-selected' => "'''[[:$1]]の{{PLURAL:$2|特定版}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|選択されたログの項目}}:'''",
-'revdelete-text' => "'''削除された版や記録はページの履歴やログに表示され続けますが、一般の利用者はその内容にアクセスできなくなります。'''
-
-追加の制限がかけられない限り、{{SITENAME}} の他の{{int:group-sysop}}もこれと同じインターフェースを使って隠された内容にアクセスしたり、復元したりできます。あなたが何をしようとしているのか、それによってどんな影響がうまれるか、および、[[{{MediaWiki:Policy-url}}|方針]]に従っているかどうか、確認をしてください。",
-'revdelete-suppress-text' => "隠蔽は、'''以下の場合に限って'''使用すべきです:
+'rev-deleted-comment' => '(要約は削除されています)',
+'rev-deleted-user' => '(投稿者名は削除されています)',
+'rev-deleted-event' => '(ログは削除されています)',
+'rev-deleted-user-contribs' => '[利用者名またはIPアドレスを除去しました - 投稿は投稿記録から秘匿されています]',
+'rev-deleted-text-permission' => "この版は'''削除されています'''。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+'rev-deleted-text-unhide' => "この版は'''削除されています'''。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。あなたは管理者であるため、このまま[$1 この版を見る]ことができます。",
+'rev-suppressed-text-unhide' => "この版は'''秘匿されています'''。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。あなたは管理者であるため、このまま[$1 この版を見る]ことができます。",
+'rev-deleted-text-view' => "この版は'''削除されています'''。あなたは管理者であるため内容を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+'rev-suppressed-text-view' => "この版は'''秘匿されています'''。あなたは管理者であるため内容を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+'rev-deleted-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+'rev-suppressed-no-diff' => "指定された差分は'''削除された'''版を含んでいるため表示出来ません。",
+'rev-deleted-unhide-diff' => "この差分の一方の版は'''削除されています'''。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。あなたは管理者であるため、このまま[$1 この差分を見る]ことができます。",
+'rev-suppressed-unhide-diff' => "この差分の一方の版は'''秘匿されています'''。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。あなたは管理者であるため、このまま[$1 この差分を見る]ことができます。",
+'rev-deleted-diff-view' => "この差分の一方の版は'''削除されています'''。あなたは管理者であるため、この差分を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+'rev-suppressed-diff-view' => "この差分の一方の版は'''秘匿されています'''。あなたは管理者であるため、この差分を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+'rev-delundel' => '表示/秘匿',
+'rev-showdeleted' => '表示',
+'revisiondelete' => '版の削除と復帰',
+'revdelete-nooldid-title' => '対象版がありません',
+'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を秘匿しようとしています。',
+'revdelete-nologtype-title' => 'ログの種類が指定されていません',
+'revdelete-nologtype-text' => 'この操作を実行するログ種類を指定していません。',
+'revdelete-nologid-title' => 'ログ項目が無効',
+'revdelete-nologid-text' => 'この操作の対象となるログの項目を指定していないか、あるいは指定した項目が存在しません。',
+'revdelete-no-file' => '指定されたファイルは存在しません。',
+'revdelete-show-file-confirm' => '本当にファイル「<nowiki>$1</nowiki>」の削除された $2 $3 の版を閲覧しますか?',
+'revdelete-show-file-submit' => 'はい',
+'revdelete-selected' => "'''[[:$1]]の{{PLURAL:$2|特定版}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|選択されたログの項目}}:'''",
+'revdelete-text' => "'''削除された版や記録はページの履歴やログに表示され続けますが、一般の利用者はその内容にアクセスできなくなります。'''
+追加の制限がかけられない限り、{{SITENAME}} の他の{{int:group-sysop}}もこれと同じインターフェースを使って隠された内容にアクセスしたり、復元したりできます。",
+'revdelete-confirm' => 'この操作を意図して行っていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に沿って行っていることを確認してください。',
+'revdelete-suppress-text' => "隠蔽は、'''以下の場合に限って'''使用すべきです:
* 不適切な個人情報
*: ''個人の住所や電話番号、社会保障番号、その他''",
-'revdelete-legend' => '閲覧制限を設定',
-'revdelete-hide-text' => '版のテキストを隠す',
-'revdelete-hide-name' => '操作および対象を隠す',
-'revdelete-hide-comment' => '編集の要約を隠す',
-'revdelete-hide-user' => '投稿者の利用者名またはIPを隠す',
-'revdelete-hide-restricted' => '他の利用者と同様に管理者からもデータを隠す',
-'revdelete-suppress' => '他の利用者と同様に管理者からもデータを隠す',
-'revdelete-hide-image' => 'ファイル内容を隠す',
-'revdelete-unsuppress' => '復帰版に対する制限を外す',
-'revdelete-log' => '理由:',
-'revdelete-submit' => '選択した版に適用',
-'revdelete-logentry' => '[[$1]]の版の閲覧レベルを変更しました',
-'logdelete-logentry' => '[[$1]]の操作の閲覧レベルを変更しました',
-'revdelete-success' => "'''版の閲覧レベルを更新しました。'''",
-'logdelete-success' => "'''ログの閲覧レベルを変更しました。'''",
-'revdel-restore' => '閲覧レベルを変更',
-'pagehist' => 'ページの履歴',
-'deletedhist' => '削除された履歴',
-'revdelete-content' => '本文',
-'revdelete-summary' => '編集内容の要約',
-'revdelete-uname' => '利用者名',
-'revdelete-restricted' => '管理者に対する制限を適用しました',
-'revdelete-unrestricted' => '管理者に対する制限を解除しました',
-'revdelete-hid' => '$1を秘匿しました',
-'revdelete-unhid' => '$1の秘匿を解除しました',
-'revdelete-log-message' => '$2{{PLURAL:$2|版}}に対して$1',
-'logdelete-log-message' => '$2の{{PLURAL:$2|操作}}に対して$1',
+'revdelete-legend' => '閲覧制限を設定',
+'revdelete-hide-text' => '版のテキストを隠す',
+'revdelete-hide-image' => 'ファイル内容を隠す',
+'revdelete-hide-name' => '操作および対象を隠す',
+'revdelete-hide-comment' => '編集の要約を隠す',
+'revdelete-hide-user' => '投稿者の利用者名またはIPを隠す',
+'revdelete-hide-restricted' => '他の利用者と同様に管理者からもデータを隠す',
+'revdelete-radio-same' => '(そのまま)',
+'revdelete-radio-set' => 'はい',
+'revdelete-radio-unset' => 'いいえ',
+'revdelete-suppress' => '他の利用者と同様に管理者からもデータを隠す',
+'revdelete-unsuppress' => '復帰版に対する制限を外す',
+'revdelete-log' => '理由:',
+'revdelete-submit' => '選択した{{PLURAL:$1|版}}に適用',
+'revdelete-logentry' => '[[$1]]の版の閲覧レベルを変更しました',
+'logdelete-logentry' => '[[$1]]の操作の閲覧レベルを変更しました',
+'revdelete-success' => "'''版の閲覧レベルを更新しました。'''",
+'revdelete-failure' => "'''版の閲覧レベルを更新できませんでした。'''
+$1",
+'logdelete-success' => "'''ログの閲覧レベルを変更しました。'''",
+'logdelete-failure' => "'''ログの閲覧レベルを設定できませんでした。'''
+$1",
+'revdel-restore' => '閲覧レベルを変更',
+'pagehist' => 'ページの履歴',
+'deletedhist' => '削除された履歴',
+'revdelete-content' => '本文',
+'revdelete-summary' => '編集内容の要約',
+'revdelete-uname' => '利用者名',
+'revdelete-restricted' => '管理者に対する制限を適用しました',
+'revdelete-unrestricted' => '管理者に対する制限を解除しました',
+'revdelete-hid' => '$1を秘匿しました',
+'revdelete-unhid' => '$1の秘匿を解除しました',
+'revdelete-log-message' => '$2{{PLURAL:$2|版}}に対して$1',
+'logdelete-log-message' => '$2の{{PLURAL:$2|操作}}に対して$1',
+'revdelete-hide-current' => '$2 $1 の項目の秘匿に失敗しました: これは最新版であるため、秘匿できません。',
+'revdelete-show-no-access' => '$2 $1 の項目の表示に失敗しました: この項目は「制限付き」に設定されているため、あなたにはアクセスすることができません。',
+'revdelete-modify-no-access' => '$2 $1 の項目の変更に失敗しました: この項目は「制限付き」に設定されているため、あなたにはアクセスすることができません。',
+'revdelete-modify-missing' => 'ID $1 の項目の変更に失敗しました: データベースに見当たりません!',
+'revdelete-no-change' => "'''警告:''' $1$2の項目には既に要求された閲覧レベルが設定されています。",
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました: あなたが変更を加えている間に他の利用者によって設定が変更されたようです。ログを確認してください。',
+'revdelete-only-restricted' => '日付 $1 $2 の項目の秘匿に失敗: 管理者から項目を秘匿するには、他の可視性設定のうちどれかをさらに選択しなければなりません。',
+'revdelete-reason-dropdown' => '*よくある削除理由
+** 著作権侵害
+** 不適切な個人情報',
+'revdelete-otherreason' => '他の、または追加の理由:',
+'revdelete-reasonotherlist' => '他の理由',
+'revdelete-edit-reasonlist' => '削除理由を編集',
+'revdelete-offender' => '特定版投稿者:',
# Suppression log
'suppressionlog' => '秘匿記録',
@@ -1036,68 +1109,13 @@ $3による理由は以下の通りです: ''$2''",
'mergelogpagetext' => '以下に履歴統合の記録を示しています。',
# Diffs
-'history-title' => '「$1」の変更履歴',
-'difference' => '(版間での差分)',
-'lineno' => '$1 行:',
-'compareselectedversions' => '選択した版同士を比較',
-'visualcomparison' => '表示結果の比較',
-'wikicodecomparison' => 'ウィキテキストの比較',
-'editundo' => '取り消し',
-'diff-multi' => '({{PLURAL:$1|間の$1版}}分が非表示)',
-'diff-movedto' => '$1へ移動',
-'diff-styleadded' => '$1 のスタイル追加',
-'diff-added' => '$1の追加',
-'diff-changedto' => '$1に変更',
-'diff-movedoutof' => '$1から移動',
-'diff-styleremoved' => '$1のスタイル除去',
-'diff-removed' => '$1の除去',
-'diff-changedfrom' => '$1から変更',
-'diff-src' => '出典',
-'diff-withdestination' => '変更先に$1',
-'diff-with' => '$1 $2 に&#32;',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32; および $1 $2',
-'diff-width' => '幅',
-'diff-height' => '高さ',
-'diff-p' => "'''パラグラフ'''",
-'diff-blockquote' => "'''引用'''",
-'diff-h1' => "'''見出し (レベル1)'''",
-'diff-h2' => "'''見出し (レベル2)'''",
-'diff-h3' => "'''見出し (レベル3)'''",
-'diff-h4' => "'''見出し (レベル4)'''",
-'diff-h5' => "'''見出し (レベル5)'''",
-'diff-pre' => "'''未整形の文章群'''",
-'diff-div' => "'''ブロック'''",
-'diff-ul' => "'''番号なし箇条書き'''",
-'diff-ol' => "'''番号付き箇条書き'''",
-'diff-li' => "'''箇条書きの項目'''",
-'diff-table' => "'''表'''",
-'diff-tbody' => "'''表の中身'''",
-'diff-tr' => "'''列'''",
-'diff-td' => "'''セル'''",
-'diff-th' => "'''ヘッダ'''",
-'diff-br' => "'''改行'''",
-'diff-hr' => "'''水平線'''",
-'diff-code' => "'''プログラムコード'''",
-'diff-dl' => "'''定義の箇条書き'''",
-'diff-dt' => "'''定義語'''",
-'diff-dd' => "'''定義'''",
-'diff-input' => "'''入力'''",
-'diff-form' => "'''フォーム'''",
-'diff-img' => "'''画像'''",
-'diff-span' => "'''スパン'''",
-'diff-a' => "'''リンク'''",
-'diff-i' => "'''斜体'''",
-'diff-b' => "'''太字'''",
-'diff-strong' => "'''強い強調'''",
-'diff-em' => "'''弱い強調'''",
-'diff-font' => "'''フォント'''",
-'diff-big' => "'''大きく'''",
-'diff-del' => "'''取り消し線'''",
-'diff-tt' => "'''固定幅'''",
-'diff-sub' => "'''下付き'''",
-'diff-sup' => "'''上付き'''",
-'diff-strike' => "'''取り消し線'''",
+'history-title' => '「$1」の変更履歴',
+'difference' => '(版間での差分)',
+'lineno' => '$1 行:',
+'compareselectedversions' => '選択した版同士を比較',
+'showhideselectedversions' => '選択した版を表示もしくは非表示',
+'editundo' => '取り消し',
+'diff-multi' => '({{PLURAL:$1|間の$1版}}分が非表示)',
# Search results
'searchresults' => '検索結果',
@@ -1105,28 +1123,25 @@ $3による理由は以下の通りです: ''$2''",
'searchresulttext' => '{{SITENAME}}の検索に関する詳しい情報は、[[{{MediaWiki:Helppage}}|{{int:help}}]]をご覧ください。',
'searchsubtitle' => "検索語: '''[[:$1]]''' ([[Special:Prefixindex/$1|「$1」から始まるページ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|「$1」へリンクしている全ページ]])",
'searchsubtitleinvalid' => "検索語: '''$1'''",
-'noexactmatch' => "'''「$1」という名前のページは存在しません。'''[[:$1|新規作成する]]ことができます。",
-'noexactmatch-nocreate' => "'''「$1」という名前のページは存在しません。'''",
'toomanymatches' => '一致したページが多すぎます。他の検索語を指定してください。',
'titlematches' => 'ページ名と一致',
'notitlematches' => 'ページ名とは一致しませんでした',
'textmatches' => 'ページ内本文と一致',
'notextmatches' => 'ページ内本文とは一致しませんでした',
-'prevn' => '前の$1件',
-'nextn' => '次の$1件',
+'prevn' => '前{{PLURAL:$1|の$1件}}',
+'nextn' => '次{{PLURAL:$1|の$1件}}',
'prevn-title' => '前の$1{{PLURAL:$1|件}}',
'nextn-title' => '次の$1{{PLURAL:$1|件}}',
'shown-title' => 'ページあたり$1{{PLURAL:$1|件}}の結果を表示',
-'viewprevnext' => '($1) ($2) ($3) を表示',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) を表示',
'searchmenu-legend' => '検索オプション',
'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
'searchmenu-new' => "'''このウィキでページ「[[:$1|$1]]」を新規作成する'''",
'searchhelp-url' => 'Help:目次',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
'searchprofile-articles' => '記事',
-'searchprofile-articles-and-proj' => '記事とプロジェクト文書',
-'searchprofile-project' => 'プロジェクトページ',
-'searchprofile-images' => 'ファイル',
+'searchprofile-project' => 'ヘルプとプロジェクトページ',
+'searchprofile-images' => 'マルチメディア',
'searchprofile-everything' => 'すべて',
'searchprofile-advanced' => '詳細',
'searchprofile-articles-tooltip' => '$1 名前空間を検索',
@@ -1134,8 +1149,6 @@ $3による理由は以下の通りです: ''$2''",
'searchprofile-images-tooltip' => 'ファイルを検索',
'searchprofile-everything-tooltip' => '全ページ (トークページ含む) を検索',
'searchprofile-advanced-tooltip' => '名前空間を指定して検索',
-'prefs-search-nsdefault' => '標準の設定で検索:',
-'prefs-search-nscustom' => '指定した名前空間を検索:',
'search-result-size' => '$1 ({{PLURAL:$2|$2語}})',
'search-result-score' => '関連度: $1%',
'search-redirect' => '($1 のリダイレクト)',
@@ -1148,11 +1161,12 @@ $3による理由は以下の通りです: ''$2''",
'search-mwsuggest-disabled' => '検索候補を表示しない',
'search-relatedarticle' => '関連',
'mwsuggest-disable' => 'AJAXによる検索候補の提示を無効にする',
+'searcheverything-enable' => '全名前空間を検索する',
'searchrelated' => '関連',
'searchall' => 'すべて',
'showingresults' => "'''$2'''件目から{{PLURAL:$1|'''$1'''件}}を表示しています。",
'showingresultsnum' => "'''$2'''件目から{{PLURAL:$3|'''$3'''件}}を表示しています。",
-'showingresultstotal' => "'''$3''' 件中 {{PLURAL:$4|'''$1'''|'''$1 - $2'''}}件目の検索結果を表示しています",
+'showingresultsheader' => "「'''$4'''」に対する結果{{PLURAL:$5|'''$3'''件中'''$1'''件|'''$3'''件中'''$1 - $2'''件}}",
'nonefound' => "'''注意''': 通常の設定では一部の名前空間しか検索されません。全ページを検索するためには、''all:'' を冒頭につけて検索するか、検索を行いたい名前空間を指定してください。",
'search-nonefound' => '問い合わせに合致する結果はありませんでした。',
'powersearch' => '高度な検索',
@@ -1160,111 +1174,146 @@ $3による理由は以下の通りです: ''$2''",
'powersearch-ns' => '名前空間を指定して検索:',
'powersearch-redir' => 'リダイレクトを表示',
'powersearch-field' => '検索キーワード:',
+'powersearch-togglelabel' => 'チェックする:',
+'powersearch-toggleall' => 'すべて',
+'powersearch-togglenone' => 'すべて外す',
'search-external' => '外部検索',
'searchdisabled' => '{{SITENAME}} の検索機能は停止しています。代わりに Google などの検索が利用できます。ただし外部の検索エンジンに蓄積されている {{SITENAME}} の情報は古い場合があります。',
+# Quickbar
+'qbsettings' => 'クイックバー',
+'qbsettings-none' => 'なし',
+'qbsettings-fixedleft' => '左端',
+'qbsettings-fixedright' => '右端',
+'qbsettings-floatingleft' => 'ウィンドウの左上に固定',
+'qbsettings-floatingright' => 'ウィンドウの右上に固定',
+
# Preferences page
-'preferences' => '個人設定',
-'mypreferences' => '個人設定',
-'prefs-edits' => '編集回数:',
-'prefsnologin' => 'ログインしていません',
-'prefsnologintext' => '個人設定を変更するためには<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ログイン]</span>する必要があります。',
-'prefsreset' => '個人設定を保存されている状態に復帰しました。',
-'qbsettings' => 'クイックバー',
-'qbsettings-none' => 'なし',
-'qbsettings-fixedleft' => '左端',
-'qbsettings-fixedright' => '右端',
-'qbsettings-floatingleft' => 'ウィンドウの左上に固定',
-'qbsettings-floatingright' => 'ウィンドウの右上に固定',
-'changepassword' => 'パスワードの変更',
-'skin' => '外装',
-'skin-preview' => 'プレビュー',
-'math' => '数式',
-'dateformat' => '日付の書式',
-'datedefault' => '選択なし',
-'datetime' => '日付と時刻',
-'math_failure' => '構文解析失敗',
-'math_unknown_error' => '不明なエラー',
-'math_unknown_function' => '不明な関数',
-'math_lexing_error' => '字句解析エラー',
-'math_syntax_error' => '構文エラー',
-'math_image_error' => 'PNGへの変換に失敗しました。latex, dvips, gs, convertが正しくインストールされているか確認してください。',
-'math_bad_tmpdir' => 'TeX一時ディレクトリを作成または書き込みできません',
-'math_bad_output' => 'TeX出力用ディレクトリを作成または書き込みできません',
-'math_notexvc' => 'texvcプログラムが見つかりません。math/READMEを読んで正しく設定してください。',
-'prefs-personal' => '利用者情報',
-'prefs-rc' => '最近の更新',
-'prefs-watchlist' => 'ウォッチリスト',
-'prefs-watchlist-days' => 'ウォッチリストに表示する日数:',
-'prefs-watchlist-days-max' => '(最大7日間)',
-'prefs-watchlist-edits' => '拡張したウォッチリストに表示する件数:',
-'prefs-watchlist-edits-max' => '(最大数: 1000)',
-'prefs-misc' => 'その他',
-'prefs-resetpass' => 'パスワードの変更',
-'saveprefs' => '設定を保存',
-'resetprefs' => '保存していない変更を破棄',
-'restoreprefs' => '初期設定に戻す',
-'textboxsize' => '編集画面',
-'prefs-edit-boxsize' => '編集ウィンドウのサイズ。',
-'rows' => '縦:',
-'columns' => '横:',
-'searchresultshead' => '検索',
-'resultsperpage' => '1ページあたりの表示件数:',
-'contextlines' => '1件あたりの行数:',
-'contextchars' => '1行あたりの文字数:',
-'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値:',
-'recentchangesdays' => '最近の更新に表示する日数:',
-'recentchangesdays-max' => '(最大$1 {{PLURAL:$1|日|日間}})',
-'recentchangescount' => '{{int:Recentchanges}}、ページ履歴、およびログで表示する既定の件数:',
-'savedprefs' => '個人設定を保存しました。',
-'timezonelegend' => 'タイムゾーン:',
-'timezonetext' => '¹サーバーの時刻 (UTC) とあなたの地域の標準時との時差。',
-'localtime' => 'ローカル・タイム:',
-'timezoneselect' => 'タイムゾーン:',
-'timezoneuseserverdefault' => 'サーバーの既定を使用',
-'timezoneuseoffset' => 'その他 (時差を指定)',
-'timezoneoffset' => '時差¹:',
-'servertime' => 'サーバーの時刻:',
-'guesstimezone' => 'ブラウザの設定を適用',
-'timezoneregion-africa' => 'アフリカ',
-'timezoneregion-america' => 'アメリカ',
-'timezoneregion-antarctica' => '南極',
-'timezoneregion-arctic' => '北極',
-'timezoneregion-asia' => 'アジア',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => 'オーストラリア',
-'timezoneregion-europe' => 'ヨーロッパ',
-'timezoneregion-indian' => 'インド洋',
-'timezoneregion-pacific' => '太平洋',
-'allowemail' => '他の利用者からのメールの受け取りを許可する',
-'prefs-searchoptions' => '検索',
-'prefs-namespaces' => '名前空間',
-'defaultns' => '標準で検索する名前空間:',
-'default' => 'デフォルト',
-'files' => 'ファイル',
-'prefs-custom-css' => 'カスタムCSS',
-'prefs-custom-js' => 'カスタムJS',
+'preferences' => '個人設定',
+'mypreferences' => '個人設定',
+'prefs-edits' => '編集回数:',
+'prefsnologin' => 'ログインしていません',
+'prefsnologintext' => '個人設定を変更するためには<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ログイン]</span>する必要があります。',
+'changepassword' => 'パスワードの変更',
+'prefs-skin' => '外装',
+'skin-preview' => 'プレビュー',
+'prefs-math' => '数式',
+'datedefault' => '選択なし',
+'prefs-datetime' => '日付と時刻',
+'prefs-personal' => '利用者情報',
+'prefs-rc' => '最近の更新',
+'prefs-watchlist' => 'ウォッチリスト',
+'prefs-watchlist-days' => 'ウォッチリストに表示する日数:',
+'prefs-watchlist-days-max' => '(最大7日間)',
+'prefs-watchlist-edits' => '拡張したウォッチリストに表示する件数:',
+'prefs-watchlist-edits-max' => '(最大数: 1000)',
+'prefs-watchlist-token' => 'ウォッチリスト・トークン:',
+'prefs-misc' => 'その他',
+'prefs-resetpass' => 'パスワードの変更',
+'prefs-email' => 'メールの設定',
+'prefs-rendering' => '表示',
+'saveprefs' => '設定を保存',
+'resetprefs' => '保存していない変更を破棄',
+'restoreprefs' => '初期設定に戻す',
+'prefs-editing' => '編集',
+'prefs-edit-boxsize' => '編集ウィンドウのサイズ。',
+'rows' => '縦:',
+'columns' => '横:',
+'searchresultshead' => '検索',
+'resultsperpage' => '1ページあたりの表示件数:',
+'contextlines' => '1件あたりの行数:',
+'contextchars' => '1行あたりの文字数:',
+'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値:',
+'recentchangesdays' => '最近の更新に表示する日数:',
+'recentchangesdays-max' => '(最大$1 {{PLURAL:$1|日|日間}})',
+'recentchangescount' => '既定で表示する件数:',
+'prefs-help-recentchangescount' => 'この設定は{{int:recentchanges}}、ページ履歴、およびログに適用されます。',
+'prefs-help-watchlist-token' => 'この欄に秘密鍵を入力すると、あなたのウォッチリストの RSS フィードが生成されます。この欄に入力されている鍵を知っている人は誰でもあなたのウォッチリストを閲覧できるようになります。よって、他人に分からない値を選んでください。無作為に生成された次の値を使うこともできます: $1',
+'savedprefs' => '個人設定を保存しました。',
+'timezonelegend' => 'タイムゾーン:',
+'localtime' => 'ローカル・タイム:',
+'timezoneuseserverdefault' => 'サーバーの既定を使用',
+'timezoneuseoffset' => 'その他 (時差を指定)',
+'timezoneoffset' => '時差¹:',
+'servertime' => 'サーバーの時刻:',
+'guesstimezone' => 'ブラウザの設定を適用',
+'timezoneregion-africa' => 'アフリカ',
+'timezoneregion-america' => 'アメリカ',
+'timezoneregion-antarctica' => '南極',
+'timezoneregion-arctic' => '北極',
+'timezoneregion-asia' => 'アジア',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => 'オーストラリア',
+'timezoneregion-europe' => 'ヨーロッパ',
+'timezoneregion-indian' => 'インド洋',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => '他の利用者からのメールの受け取りを許可する',
+'prefs-searchoptions' => '検索',
+'prefs-namespaces' => '名前空間',
+'defaultns' => 'その他の場合、次の名前空間でのみ検索する:',
+'default' => 'デフォルト',
+'prefs-files' => 'ファイル',
+'prefs-custom-css' => 'カスタムCSS',
+'prefs-custom-js' => 'カスタムJS',
+'prefs-reset-intro' => 'このページを使うと、あなたの個人設定をこのサイトの既定のものに再設定することができます。この操作は取り消しができません。',
+'prefs-emailconfirm-label' => 'メール確認:',
+'prefs-textboxsize' => '編集画面の大きさ',
+'youremail' => 'メールアドレス:',
+'username' => '利用者名:',
+'uid' => '利用者ID:',
+'prefs-memberingroups' => '所属する{{PLURAL:$1|グループ}}:',
+'prefs-registration' => '登録日時:',
+'yourrealname' => '本名:',
+'yourlanguage' => '使用言語:',
+'yourvariant' => '言語変種:',
+'yournick' => '署名:',
+'prefs-help-signature' => 'トークページ上での発言には「<nowiki>~~~~</nowiki>」と付けて署名するべきです。これはあなたの署名に時刻を付加したものに変換されます。',
+'badsig' => '署名用のソースが正しくありません。HTMLタグを見直してください。',
+'badsiglength' => '署名が長すぎます。$1{{PLURAL:$1|文字}}以下でなければなりません。',
+'yourgender' => '性別:',
+'gender-unknown' => '未指定',
+'gender-male' => '男',
+'gender-female' => '女',
+'prefs-help-gender' => '省略可能: 対象の文法的性によって表現が変わる言語での使用を念頭に、文法的性を考慮したユーザインタフェースを実現するために使われます。この情報は公開されます。',
+'email' => 'メールアドレス',
+'prefs-help-realname' => '本名登録は任意です。本名を登録した場合、あなたの著作物の帰属表示に用いられます。',
+'prefs-help-email' => 'メールアドレスの設定は任意ですが、設定しておけばパスワードを忘れた際に新しいパスワードを電子メールで受け取ることができます。
+また、他の利用者からのウィキメールを受け取ることができるようになります。この時点ではあなたのメールアドレスはその利用者に知られることはありません。ただし、あなたから送信すれば、あなたのメールアドレスは先方に通知されます。',
+'prefs-help-email-required' => 'メールアドレスが必要です。',
+'prefs-info' => '基本情報',
+'prefs-i18n' => '国際化',
+'prefs-signature' => '署名',
+'prefs-dateformat' => '日付の形式',
+'prefs-timeoffset' => 'タイムオフセット',
+'prefs-advancedediting' => '詳細設定',
+'prefs-advancedrc' => '詳細設定',
+'prefs-advancedrendering' => '詳細設定',
+'prefs-advancedsearchoptions' => '詳細設定',
+'prefs-advancedwatchlist' => '詳細設定',
+'prefs-display' => '表示の設定',
+'prefs-diffs' => '差分',
# User rights
-'userrights' => '利用者権限の管理', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '利用者グループを管理',
-'userrights-user-editname' => '利用者名を入力:',
-'editusergroup' => '利用者グループを編集',
-'editinguser' => "利用者 '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) の権限を変更中",
-'userrights-editusergroup' => '利用者グループを編集',
-'saveusergroups' => '利用者グループを保存',
-'userrights-groupsmember' => '所属グループ:',
-'userrights-groups-help' => 'この利用者が属するグループを変更することができます。
+'userrights' => '利用者権限の管理',
+'userrights-lookup-user' => '利用者グループを管理',
+'userrights-user-editname' => '利用者名を入力:',
+'editusergroup' => '利用者グループを編集',
+'editinguser' => "利用者 '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) の権限を変更中",
+'userrights-editusergroup' => '利用者グループを編集',
+'saveusergroups' => '利用者グループを保存',
+'userrights-groupsmember' => '所属グループ:',
+'userrights-groupsmember-auto' => '暗黙で追加されるメンバー:',
+'userrights-groups-help' => 'この利用者が属するグループを変更することができます。
* ボックスのチェックはこの利用者がそのグループに属していることを意味します。
* チェックが入っていないボックスはこの利用者がそのグループに属していないことを意味します。
* * は一旦グループへ登録または登録解除した場合、その決定を変更できないことを意味します。',
-'userrights-reason' => '理由:',
-'userrights-no-interwiki' => '他ウィキ上における利用者権限の編集権限はありません。',
-'userrights-nodatabase' => 'データベース $1は存在しないか、ローカル上にありません。',
-'userrights-nologin' => '利用者権限を変更するには管理者権限を持つアカウントに[[Special:UserLogin|ログイン]]する必要があります。',
-'userrights-notallowed' => '利用者権限を変更する権限がありません。',
-'userrights-changeable-col' => '変更可能なグループ',
-'userrights-unchangeable-col' => '変更できないグループ',
+'userrights-reason' => '理由:',
+'userrights-no-interwiki' => '他ウィキ上における利用者権限の編集権限はありません。',
+'userrights-nodatabase' => 'データベース $1は存在しないか、ローカル上にありません。',
+'userrights-nologin' => '利用者権限を変更するには管理者権限を持つアカウントに[[Special:UserLogin|ログイン]]する必要があります。',
+'userrights-notallowed' => '利用者権限を変更する権限がありません。',
+'userrights-changeable-col' => '変更可能なグループ',
+'userrights-unchangeable-col' => '変更できないグループ',
# Groups
'group' => 'グループ:',
@@ -1317,6 +1366,7 @@ $3による理由は以下の通りです: ''$2''",
'right-bigdelete' => '履歴の大きなページの削除',
'right-deleterevision' => 'ページの特定版の削除・復帰',
'right-deletedhistory' => '削除された版の、本文を除く、履歴の閲覧',
+'right-deletedtext' => '削除された文章と削除された版同士の差分の閲覧',
'right-browsearchive' => '削除されたページの検索',
'right-undelete' => 'ページの復帰',
'right-suppressrevision' => '管理者から秘匿された版の閲覧・復帰',
@@ -1330,6 +1380,8 @@ $3による理由は以下の通りです: ''$2''",
'right-editprotected' => '保護ページの編集 (カスケード保護を除く)',
'right-editinterface' => 'ユーザーインターフェースの編集',
'right-editusercssjs' => '他利用者のCSS・JSファイルの編集',
+'right-editusercss' => '他利用者のCSSファイルの編集',
+'right-edituserjs' => '他利用者のJSファイルの編集',
'right-rollback' => '特定ページを最後に編集した利用者の編集の即時ロールバック',
'right-markbotedits' => 'ロールバックをボットの編集として印づけ',
'right-noratelimit' => '速度制限を受けない',
@@ -1346,6 +1398,8 @@ $3による理由は以下の通りです: ''$2''",
'right-siteadmin' => 'データベースのロックおよびロック解除',
'right-reset-passwords' => '他の利用者のパスワードを再設定する',
'right-override-export-depth' => 'リンク先ページを5階層まで含めて書き出す',
+'right-versiondetail' => 'ソフトウェアの詳細なバージョン情報を表示する',
+'right-sendemail' => '他の利用者へ電子メールを送る',
# User rights log
'rightslog' => '利用者権限変更記録',
@@ -1395,6 +1449,15 @@ $3による理由は以下の通りです: ''$2''",
'recentchanges-legend' => '最近の更新のオプション',
'recentchangestext' => '最近の更新はこのページから確認できます。',
'recentchanges-feed-description' => '最近の更新はこのフィードで確認できます。',
+'recentchanges-label-legend' => '凡例: $1',
+'recentchanges-legend-newpage' => '$1 - 新しいページ',
+'recentchanges-label-newpage' => 'この編集によって新しいページが作成されました',
+'recentchanges-legend-minor' => '$1 - 細部の編集',
+'recentchanges-label-minor' => 'これは細部の編集です',
+'recentchanges-legend-bot' => '$1 - ボットによる編集',
+'recentchanges-label-bot' => 'この編集はボットによって行われました',
+'recentchanges-legend-unpatrolled' => '$1 - パトロールされていない編集',
+'recentchanges-label-unpatrolled' => 'この編集はまだパトロールされていません',
'rcnote' => "以下は $4 $5 までの{{PLURAL:$2|1日|'''$2'''日間}}になされた'''$1'''件の変更です。",
'rcnotefrom' => "以下は '''$2''' 以降になされた変更です (最大 '''$1'''件)。",
'rclistfrom' => '$1からの更新を表示する',
@@ -1412,6 +1475,7 @@ $3による理由は以下の通りです: ''$2''",
'minoreditletter' => '細',
'newpageletter' => '新',
'boteditletter' => 'ボ',
+'unpatrolledletter' => '未',
'number_of_watching_users_pageview' => '[$1{{PLURAL:$1|人}}がウォッチしています]',
'rc_categories' => 'カテゴリを制限 ("|" で区切る)',
'rc_categories_any' => 'すべて',
@@ -1421,6 +1485,8 @@ $3による理由は以下の通りです: ''$2''",
# Recent changes linked
'recentchangeslinked' => '関連ページの更新状況',
+'recentchangeslinked-feed' => '関連ページの更新状況',
+'recentchangeslinked-toolbox' => '関連ページの更新状況',
'recentchangeslinked-title' => '「$1」と関連するページの更新状況',
'recentchangeslinked-noresult' => '指定期間中に指定ページのリンク先に更新はありませんでした。',
'recentchangeslinked-summary' => "以下は指定されたページからリンクしているページ (もしくは指定されたカテゴリに含まれているページ) に最近加えられた変更の一覧です。[[Special:Watchlist|あなたのウォッチリスト]]にあるページは'''太字'''で表示されています。",
@@ -1430,8 +1496,8 @@ $3による理由は以下の通りです: ''$2''",
# Upload
'upload' => 'アップロード',
'uploadbtn' => 'アップロード',
-'reupload' => '再アップロード',
'reuploaddesc' => 'アップロードを中止してアップロード・フォームへ戻る',
+'upload-tryagain' => '修正したファイル解説を投稿',
'uploadnologin' => 'ログインしていません',
'uploadnologintext' => 'ファイルをアップロードするには[[Special:UserLogin|ログイン]]する必要があります。',
'upload_directory_missing' => 'アップロードディレクトリ ($1) が見つからずウェブサーバーによっても作成できませんでした。',
@@ -1461,6 +1527,7 @@ $3による理由は以下の通りです: ''$2''",
'minlength1' => 'ファイル名は1文字以上である必要があります。',
'illegalfilename' => 'ファイル名 "$1" にページ名として使えない文字が含まれています。ファイル名を変更してからもう一度アップロードしてください。',
'badfilename' => 'ファイル名は "$1" へ変更されました。',
+'filetype-mime-mismatch' => 'ファイルの拡張子がMIMEタイプと一致しません。',
'filetype-badmime' => 'MIME タイプ "$1" のファイルのアップロードは許可されていません。',
'filetype-bad-ie-mime' => 'このファイルは、禁止されている潜在的に危険なファイル形式 "$1" であるとInternet Explorer が認識してしまうためアップロードできません。',
'filetype-unwanted-type' => "'''\".\$1\"''' は好ましくないファイル形式です。次の{{PLURAL:\$3|ファイル形式}}を推奨します: \$2",
@@ -1477,7 +1544,6 @@ $3による理由は以下の通りです: ''$2''",
* アップロード中のファイルの名前: '''<tt>[[:$1]]</tt>'''
* 既存ファイルの名前: '''<tt>[[:$2]]</tt>'''
違う名前を選択してください。",
-'fileexists-thumb' => "<center>'''既存のファイル'''</center>",
'fileexists-thumbnail-yes' => "このファイルは元の画像から縮小されたもの (サムネイル) のようです。[[$1|thumb]]
ファイル '''<tt>[[:$1]]</tt>''' を確認してください。
確認したファイルが同じ画像のもとのサイズの版である場合、サムネイルを個別にアップロードする必要はありません。",
@@ -1488,6 +1554,7 @@ $3による理由は以下の通りです: ''$2''",
'file-deleted-duplicate' => 'このファイル ([[$1]]) と同一のファイルが以前に削除されています。再度アップロードをする前に、以前削除されたファイルの削除記録を確認してください。',
'successfulupload' => 'アップロード成功',
'uploadwarning' => 'アップロード警告',
+'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
'savefile' => 'ファイルを保存',
'uploadedimage' => '「[[$1]]」をアップロードしました。',
'overwroteimage' => '「[[$1]]」の新しい版をアップロードしました',
@@ -1495,11 +1562,14 @@ $3による理由は以下の通りです: ''$2''",
'uploaddisabledtext' => 'ファイルのアップロードは停止しています。',
'php-uploaddisabledtext' => 'ファイルアップロードがPHPで有効になっていません。file_uploads の設定を確認してください。',
'uploadscripted' => 'このファイルはウェブブラウザが誤って解釈してしまうおそれのあるHTMLまたはスクリプトコードを含んでいます。',
-'uploadcorrupt' => '指定したファイルは壊れているか拡張子が正しくありません。ファイルを確認の上再度アップロードをしてください。',
'uploadvirus' => 'このファイルにはウイルスが含まれています!詳細: $1',
+'upload-source' => '元ファイル',
'sourcefilename' => 'ファイル名:',
+'sourceurl' => 'アップロード元 URL:',
'destfilename' => '掲載するファイル名:',
'upload-maxfilesize' => '最大ファイルサイズ: $1',
+'upload-description' => 'ファイル説明',
+'upload-options' => 'アップロード・オプション',
'watchthisupload' => 'このファイルをウォッチ',
'filewasdeleted' => 'この名前のファイルは一度アップロードされその後削除されています。再度アップロードする前に$1を確認してください。',
'upload-wasdeleted' => "'''警告: 過去に削除されたファイルをアップロードしようとしています。'''
@@ -1521,12 +1591,37 @@ MGP # ペンタックス
PICT # その他
#</pre> <!-- この行はそのままにしておいてください -->',
-'upload-proto-error' => '不正なプロトコル',
-'upload-proto-error-text' => 'アップロード元のURLは <code>http://</code> か <code>ftp://</code> で始まっている必要があります。',
-'upload-file-error' => '内部エラー',
-'upload-file-error-text' => '内部エラーのため、サーバー上の一時ファイル作成に失敗しました。[[Special:ListUsers/sysop|管理者]]に連絡してください。',
-'upload-misc-error' => '不明なアップロード・エラー',
-'upload-misc-error-text' => 'アップロード時に不明なエラーが発生しました。指定したURLがアクセス可能で有効なものであるかを再度確認してください。それでもこのエラーが発生する場合は、[[Special:ListUsers/sysop|管理者]]に連絡してください。',
+'upload-proto-error' => '不正なプロトコル',
+'upload-proto-error-text' => 'アップロード元のURLは <code>http://</code> か <code>ftp://</code> で始まっている必要があります。',
+'upload-file-error' => '内部エラー',
+'upload-file-error-text' => '内部エラーのため、サーバー上の一時ファイル作成に失敗しました。[[Special:ListUsers/sysop|管理者]]に連絡してください。',
+'upload-misc-error' => '不明なアップロード・エラー',
+'upload-misc-error-text' => 'アップロード時に不明なエラーが発生しました。指定したURLがアクセス可能で有効なものであるかを再度確認してください。それでもこのエラーが発生する場合は、[[Special:ListUsers/sysop|管理者]]に連絡してください。',
+'upload-too-many-redirects' => 'その URL に含まれるリダイレクトが多すぎます',
+'upload-unknown-size' => 'サイズ不明',
+'upload-http-error' => 'HTTP エラー発生: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'アクセス拒否',
+'img-auth-nopathinfo' => 'PATH_INFO が見つかりません。あなたのサーバーはこの情報を渡すように構成されていません。CGI ベースであるために img_auth に対応できない可能性もあります。http://www.mediawiki.org/wiki/Manual:Image_Authorization を参照ください。',
+'img-auth-notindir' => '要求されたパスは設定済みのアップロード用ディレクトリーの中にありません。',
+'img-auth-badtitle' => '「$1」からは有効なページ名を構築できません。',
+'img-auth-nologinnWL' => 'あなたはログインしておらず、さらに「$1」はホワイトリストに入っていません。',
+'img-auth-nofile' => 'ファイル「$1」は存在しません。',
+'img-auth-isdir' => 'あなたはディレクトリー「$1」にアクセスしようとしています。ファイルへのアクセスのみが許可されています。',
+'img-auth-streaming' => '「$1」を転送中',
+'img-auth-public' => 'img_auth.php の機能は非公開ウィキからファイルを出力することです。このウィキは公開ウィキとして構成されています。最適なセキュリティーのため、img_auth.php は無効化されています。',
+'img-auth-noread' => '利用者は「$1」を読む権限を持っていません。',
+
+# HTTP errors
+'http-invalid-url' => '無効なURL: $1',
+'http-invalid-scheme' => '"$1"のスキームを含むURLはサポートされていません',
+'http-request-error' => '不明なエラーによりHTTPリクエストに失敗しました。',
+'http-read-error' => 'HTTP読み込みエラー。',
+'http-timed-out' => 'HTTPリクエストにタイムアウトしました。',
+'http-curl-error' => 'フェッチに失敗したURL: $1',
+'http-host-unreachable' => 'URLに到達できません',
+'http-bad-status' => 'HTTPリクエスト時に問題が発生しました: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URLに到達できませんでした',
@@ -1535,6 +1630,7 @@ PICT # その他
'upload-curl-error28-text' => '相手サイトからの応答がありませんでした。指定したサイトが現在使用可能かを確認した上で、しばらく待ってもう一度お試しください。また、インターネットが混雑していない時間帯に実行することを推奨します。',
'license' => 'ライセンス:',
+'license-header' => 'ライセンス',
'nolicense' => '選択なし',
'license-nopreview' => '(プレビューはありません)',
'upload_source_url' => '(有効かつ一般に公開されているURL)',
@@ -1553,36 +1649,38 @@ PICT # その他
'listfiles_count' => '版数',
# File description page
-'filehist' => 'ファイルの履歴',
-'filehist-help' => '過去の版のファイルを表示するには、表示したい版の日付/時刻をクリックしてください。',
-'filehist-deleteall' => 'すべて削除',
-'filehist-deleteone' => '削除',
-'filehist-revert' => '差し戻す',
-'filehist-current' => '現在の版',
-'filehist-datetime' => '日付/時刻',
-'filehist-thumb' => 'サムネイル',
-'filehist-thumbtext' => '$1時点における版のサムネイル',
-'filehist-nothumb' => 'サムネイルなし',
-'filehist-user' => '利用者',
-'filehist-dimensions' => '解像度',
-'filehist-filesize' => 'ファイルサイズ',
-'filehist-comment' => 'コメント',
-'imagelinks' => 'ファイルリンク',
-'linkstoimage' => 'このファイルは以下の{{PLURAL:$1|ページ|$1ページ}}で使用されています:',
-'linkstoimage-more' => '$1 以上の{{PLURAL:$1|ページ}}がこのファイルにリンクしています。以下の一覧はこのファイルにリンクしている最初の$1{{PLURAL:$1|ページ}}のみを表示しています。[[Special:WhatLinksHere/$2|完全な一覧]]も参照してください。',
-'nolinkstoimage' => 'このファイルを使用しているページはありません。',
-'morelinkstoimage' => 'このファイルの[[Special:WhatLinksHere/$1|リンク元]]を表示する。',
-'redirectstofile' => 'このファイルは以下の{{PLURAL:$1|ファイル|$1ファイル}}からリダイレクトされています:',
-'duplicatesoffile' => '以下の$1{{PLURAL:$1|件}}のファイルは、このファイルと内容が同一です ([[Special:FileDuplicateSearch/$2|詳細]]):',
-'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '詳しい情報は$1を参照してください。',
-'shareduploadwiki-desc' => 'この$1にある、ファイルの説明は以下の通りです。',
-'shareduploadwiki-linktext' => 'ファイルの詳細ページ',
-'noimage' => '同名のファイルは存在しません。「$1」リンクをクリックしてください。',
-'noimage-linktext' => 'このファイル名でアップロードする',
-'uploadnewversion-linktext' => 'このファイルの新しいバージョンをアップロードする',
-'shared-repo-from' => '$1より', # $1 is the repository name
-'shared-repo' => '共有リポジトリ', # used when shared-repo-NAME does not exist
+'file-anchor-link' => 'ファイル',
+'filehist' => 'ファイルの履歴',
+'filehist-help' => '過去の版のファイルを表示するには、表示したい版の日付/時刻をクリックしてください。',
+'filehist-deleteall' => 'すべて削除',
+'filehist-deleteone' => '削除',
+'filehist-revert' => '差し戻す',
+'filehist-current' => '現在の版',
+'filehist-datetime' => '日付/時刻',
+'filehist-thumb' => 'サムネイル',
+'filehist-thumbtext' => '$1時点における版のサムネイル',
+'filehist-nothumb' => 'サムネイルなし',
+'filehist-user' => '利用者',
+'filehist-dimensions' => '解像度',
+'filehist-filesize' => 'ファイルサイズ',
+'filehist-comment' => 'コメント',
+'filehist-missing' => 'ファイルがみつかりません',
+'imagelinks' => 'ファイルリンク',
+'linkstoimage' => 'このファイルは以下の{{PLURAL:$1|ページ|$1ページ}}で使用されています:',
+'linkstoimage-more' => '$1 以上の{{PLURAL:$1|ページ}}がこのファイルにリンクしています。以下の一覧はこのファイルにリンクしている最初の$1{{PLURAL:$1|ページ}}のみを表示しています。[[Special:WhatLinksHere/$2|完全な一覧]]も参照してください。',
+'nolinkstoimage' => 'このファイルを使用しているページはありません。',
+'morelinkstoimage' => 'このファイルの[[Special:WhatLinksHere/$1|リンク元]]を表示する。',
+'redirectstofile' => 'このファイルは以下の{{PLURAL:$1|ファイル|$1ファイル}}からリダイレクトされています:',
+'duplicatesoffile' => '以下の$1{{PLURAL:$1|件}}のファイルは、このファイルと内容が同一です ([[Special:FileDuplicateSearch/$2|詳細]]):',
+'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。',
+'sharedupload-desc-there' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。詳細は[$2 ファイル解説ページ]を参照してください。',
+'sharedupload-desc-here' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。その[$2 ファイル解説ページ]にある説明を以下に表示しています。',
+'filepage-nofile' => 'この名前のファイルは存在しません。',
+'filepage-nofile-link' => 'この名前のファイルは存在しませんが、[$1 アップロード]することができます。',
+'uploadnewversion-linktext' => 'このファイルの新しいバージョンをアップロードする',
+'shared-repo-from' => '$1より',
+'shared-repo' => '共有リポジトリ',
+'shared-repo-name-wikimediacommons' => 'ウィキメディア・コモンズ',
# File reversion
'filerevert' => '$1 を差し戻す',
@@ -1611,6 +1709,7 @@ PICT # その他
** 著作権侵害
** ファイルの重複',
'filedelete-edit-reasonlist' => '削除理由を編集する',
+'filedelete-maintenance' => 'メンテナンス中のため、ファイルの削除と復帰は一時的に無効化されています。',
# MIME search
'mimesearch' => 'MIMEタイプ検索',
@@ -1632,7 +1731,7 @@ PICT # その他
# Random page
'randompage' => 'おまかせ表示',
-'randompage-nopages' => '「$1」名前空間には、ページがありません。',
+'randompage-nopages' => '以下の{{PLURAL:$2|名前空間}}には、ページがありません: $1。',
# Random redirect
'randomredirect' => 'おまかせリダイレクト',
@@ -1644,6 +1743,7 @@ PICT # その他
'statistics-header-edits' => '編集に関する統計',
'statistics-header-views' => '閲覧に関する統計',
'statistics-header-users' => '登録利用者に関する統計',
+'statistics-header-hooks' => 'その他の統計',
'statistics-articles' => '記事数',
'statistics-pages' => '総ページ数',
'statistics-pages-desc' => 'トークページやリダイレクトなどを含んだこのウィキ内のすべてのページです。',
@@ -1670,8 +1770,8 @@ PICT # その他
'brokenredirects' => '迷子のリダイレクト',
'brokenredirectstext' => '以下は存在しないページにリンクしているリダイレクトです。',
-'brokenredirects-edit' => '(編集)',
-'brokenredirects-delete' => '(削除)',
+'brokenredirects-edit' => '編集',
+'brokenredirects-delete' => '削除',
'withoutinterwiki' => '言語間リンクを持たないページ',
'withoutinterwiki-summary' => '以下のページには他の言語版へのリンクがありません。',
@@ -1776,14 +1876,15 @@ PICT # その他
# Special:Categories
'categories' => 'カテゴリ',
-'categoriespagetext' => '以下のカテゴリにはページまたはメディアが存在します。[[Special:UnusedCategories|未使用のカテゴリ]]はここには表示されていません。[[Special:WantedCategories|カテゴリページが存在しないカテゴリ]]も参照してください。',
+'categoriespagetext' => '以下の{{PLURAL:$1|カテゴリ}}にはページまたはメディアが存在します。[[Special:UnusedCategories|未使用のカテゴリ]]はここには表示されていません。[[Special:WantedCategories|カテゴリページが存在しないカテゴリ]]も参照してください。',
'categoriesfrom' => '最初に表示するカテゴリ:',
'special-categories-sort-count' => '項目数順',
'special-categories-sort-abc' => 'アルファベット順',
# Special:DeletedContributions
-'deletedcontributions' => '削除された投稿履歴',
-'deletedcontributions-title' => '利用者の削除された投稿履歴',
+'deletedcontributions' => '削除された投稿履歴',
+'deletedcontributions-title' => '利用者の削除された投稿履歴',
+'sp-deletedcontributions-contribs' => '投稿履歴',
# Special:LinkSearch
'linksearch' => '外部リンク',
@@ -1798,6 +1899,16 @@ PICT # その他
'listusersfrom' => '最初に表示する利用者:',
'listusers-submit' => '表示',
'listusers-noresult' => '利用者が見つかりませんでした。',
+'listusers-blocked' => '(ブロック中)',
+
+# Special:ActiveUsers
+'activeusers' => '活動中の利用者一覧',
+'activeusers-intro' => 'これは過去$1{{PLURAL:$1|日|日間}}になんらかの活動をした利用者の一覧です。',
+'activeusers-count' => '過去{{PLURAL:$3|$3日}}に$1件の{{PLURAL:$1|編集}}',
+'activeusers-from' => '最初に表示する利用者:',
+'activeusers-hidebots' => 'ボットを隠す',
+'activeusers-hidesysops' => '管理者を隠す',
+'activeusers-noresult' => '利用者が見つかりませんでした。',
# Special:Log/newusers
'newuserlogpage' => 'アカウント作成記録',
@@ -1808,16 +1919,22 @@ PICT # その他
'newuserlog-autocreate-entry' => 'アカウントが自動的に作成されました',
# Special:ListGroupRights
-'listgrouprights' => '利用者グループの権限',
-'listgrouprights-summary' => '以下はこのウィキに登録されている利用者グループとそれぞれに割り当てられている権限の一覧です。個々の権限に関する更なる情報は[[{{MediaWiki:Listgrouprights-helppage}}]]を見てください。',
-'listgrouprights-group' => 'グループ',
-'listgrouprights-rights' => '権限',
-'listgrouprights-helppage' => 'Help:グループ権限',
-'listgrouprights-members' => '(該当者一覧)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|グループ}}を追加: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|グループ}}を除去: $1',
-'listgrouprights-addgroup-all' => '全グループ追加可能',
-'listgrouprights-removegroup-all' => '全グループ削除可能',
+'listgrouprights' => '利用者グループの権限',
+'listgrouprights-summary' => '以下はこのウィキに登録されている利用者グループとそれぞれに割り当てられている権限の一覧です。個々の権限に関する更なる情報は[[{{MediaWiki:Listgrouprights-helppage}}]]を見てください。',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">与えられた権限</span>
+* <span class="listgrouprights-revoked">取り消された権限</span>',
+'listgrouprights-group' => 'グループ',
+'listgrouprights-rights' => '権限',
+'listgrouprights-helppage' => 'Help:グループ権限',
+'listgrouprights-members' => '(該当者一覧)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|グループ}}を追加: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|グループ}}を除去: $1',
+'listgrouprights-addgroup-all' => '全グループ追加可能',
+'listgrouprights-removegroup-all' => '全グループ削除可能',
+'listgrouprights-addgroup-self' => '自身のアカウントに{{PLURAL:$2|グループ}}を追加: $1',
+'listgrouprights-removegroup-self' => '自身のアカウントから{{PLURAL:$2|グループ}}を除去: $1',
+'listgrouprights-addgroup-self-all' => '自身のアカウントにすべてのグループを追加可能',
+'listgrouprights-removegroup-self-all' => '自身のアカウントからすべてのグループを除去可能',
# E-mail user
'mailnologin' => '差出人アドレスがありません',
@@ -1887,31 +2004,33 @@ PICT # その他
'enotif_lastvisited' => 'あなたが最後に閲覧してからなされたすべての変更を $1 で確認できます。',
'enotif_lastdiff' => 'この変更内容を表示するには $1 を見てください。',
'enotif_anon_editor' => '匿名利用者 $1',
-'enotif_body' => '$WATCHINGUSERNAMEさん、
+'enotif_body' => '$WATCHINGUSERNAME さん
+
+{{SITENAME}}のページ「$PAGETITLE」が $PAGEEDITDATE に
+$PAGEEDITOR によって$CHANGEDORCREATEDされました。現在の版を見るには次のURLにアクセスしてください: $PAGETITLE_URL
-{{SITENAME}}のページ $PAGETITLE が $PAGEEDITDATE に
-$PAGEEDITOR によって$CHANGEDORCREATEDされました。
-現在の版を見るには次のURLにアクセスしてください:
-$PAGETITLE_URL
$NEWPAGE
編集内容の要約: $PAGESUMMARY ($PAGEMINOREDIT)
-投稿者:
+投稿者に連絡する:
メール: $PAGEEDITOR_EMAIL
ウィキ: $PAGEEDITOR_WIKI
-あなたがこのページを訪れない限り、これ以上の通知は送信されません。
-ウォッチリストからすべての通知フラグをリセットすることもできます。
+あなたがこのページを訪れない限り、これ以上の変更に対する通知は送信されません。
+ウォッチリストからすべての通知フラグを再設定することもできます。
{{SITENAME}} 通知システム
--
ウォッチリストの設定を変更する:
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+あなたのウォッチリストからこのページを除去する:
+$UNWATCHURL
-助けが必要ですか:
-{{fullurl:Help:Contents}}',
+ご意見・お問い合わせ:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ページを削除',
@@ -1922,9 +2041,10 @@ $NEWPAGE
'exblank' => '白紙ページ',
'delete-confirm' => '「$1」の削除',
'delete-legend' => '削除',
-'historywarning' => '警告: 削除しようとしているページには履歴があります:',
+'historywarning' => "'''警告:''' 削除しようとしているページには約$1{{PLURAL:$1|版}}の履歴があります:",
'confirmdeletetext' => 'ページをすべての履歴とともに削除しようとしています。本当にこの操作を行いたいか、操作の結果を理解しているか、およびこの操作が[[{{MediaWiki:Policy-url}}|方針]]に従っているかどうか、確認をしてください。',
'actioncomplete' => '完了しました',
+'actionfailed' => '操作失敗',
'deletedtext' => '「<nowiki>$1</nowiki>」は削除されました。最近の削除に関しては、$2を参照してください。',
'deletedarticle' => '「$1」を削除しました',
'suppressedarticle' => '「[[$1]]」を秘匿しました',
@@ -1944,18 +2064,19 @@ $NEWPAGE
'delete-warning-toobig' => 'このページには、 $1{{PLURAL:$1|版}}を超える多くの編集履歴があります。削除の際、{{SITENAME}}のデータベース処理に大きな負荷がかかりますので、十分に注意してください。',
# Rollback
-'rollback' => '編集をロールバック',
-'rollback_short' => 'ロールバック',
-'rollbacklink' => 'ロールバック',
-'rollbackfailed' => 'ロールバックに失敗しました',
-'cantrollback' => '投稿者がただ一人であるため、編集を差し戻せません。',
-'alreadyrolled' => 'ページ [[:$1]] の [[User:$2|$2]] ([[User talk:$2|トーク]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) による編集のロールバックに失敗しました。他の利用者がすでに編集を行ったかロールバックしたためです。
+'rollback' => '編集をロールバック',
+'rollback_short' => 'ロールバック',
+'rollbacklink' => 'ロールバック',
+'rollbackfailed' => 'ロールバックに失敗しました',
+'cantrollback' => '投稿者がただ一人であるため、編集を差し戻せません。',
+'alreadyrolled' => 'ページ [[:$1]] の [[User:$2|$2]] ([[User talk:$2|トーク]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) による編集のロールバックに失敗しました。他の利用者がすでに編集を行ったかロールバックしたためです。
このページの最後の編集は [[User:$3|$3]] ([[User talk:$3|トーク]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) によるものです。',
-'editcomment' => "編集内容の要約: 「''$1''」", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|トーク]]) による編集を [[User:$1|$1]] による直前の版へ差し戻し', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 による編集を取り消して $2 による最後の版へ差し戻しました。',
-'sessionfailure' => 'ログイン・セッションに問題が発生しました。セッションハイジャックを防ぐために操作は取り消されました。ブラウザの「戻る」を押して直前のページを再度読み込んだ後に、もう一度操作を行ってください。',
+'editcomment' => "編集内容の要約: 「''$1''」",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|トーク]]) による編集を [[User:$1|$1]] による直前の版へ差し戻し',
+'revertpage-nouser' => '(利用者名削除) による編集を [[User:$1|$1]] による版へ差し戻し',
+'rollback-success' => '$1 による編集を取り消して $2 による最後の版へ差し戻しました。',
+'sessionfailure' => 'ログイン・セッションに問題が発生しました。セッションハイジャックを防ぐために操作は取り消されました。ブラウザの「戻る」を押して直前のページを再度読み込んだ後に、もう一度操作を行ってください。',
# Protect
'protectlogpage' => '保護記録',
@@ -1971,7 +2092,7 @@ $NEWPAGE
'protectexpiry' => '期限:',
'protect_expiry_invalid' => '期間の指定が無効です。',
'protect_expiry_old' => '保護期限が過去の時刻です。',
-'protect-unchain' => '移動権限を操作',
+'protect-unchain-permissions' => '追加保護オプションをロック解除',
'protect-text' => "ページ「'''<nowiki>$1</nowiki>'''」の保護レベルを表示・操作できます。",
'protect-locked-blocked' => "ブロックされているため、保護レベルを変更できません。ページ '''$1''' の現在の状態は以下の通りです:",
'protect-locked-dblock' => "現在データベースがロックされているため、保護レベルを変更できません。ページ '''$1''' の現在の状態は以下の通りです:",
@@ -1997,7 +2118,7 @@ $NEWPAGE
** 編集合戦
** 高負荷ページ',
'protect-edit-reasonlist' => '保護理由を編集する',
-'protect-expiry-options' => '1時間:1 hour,1日:1 day,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1時間:1 hour,1日:1 day,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite',
'restriction-type' => '制限:',
'restriction-level' => '保護レベル:',
'minimum-size' => '最小サイズ',
@@ -2032,6 +2153,7 @@ $NEWPAGE
'undelete-nodiff' => 'これより前の版はありません。',
'undeletebtn' => '復帰',
'undeletelink' => '閲覧・復帰',
+'undeleteviewlink' => '閲覧',
'undeletereset' => 'リセット',
'undeleteinvert' => '選択を逆転する',
'undeletecomment' => '理由:',
@@ -2069,19 +2191,23 @@ $1',
'contributions-title' => '「$1」の投稿記録',
'mycontris' => '自分の投稿記録',
'contribsub2' => '利用者: $1 ($2)',
-'nocontribs' => '利用者の投稿記録は見つかりませんでした。', # Optional parameter: $1 is the user name
+'nocontribs' => '利用者の投稿記録は見つかりませんでした。',
'uctop' => '(最新)',
'month' => '月:',
'year' => '年:',
-'sp-contributions-newbies' => '新規利用者の投稿のみ表示',
-'sp-contributions-newbies-sub' => '新規利用者',
-'sp-contributions-newbies-title' => '新規利用者の投稿記録',
-'sp-contributions-blocklog' => '投稿ブロック記録',
-'sp-contributions-logs' => '各種ログ',
-'sp-contributions-search' => '投稿履歴の検索',
-'sp-contributions-username' => 'IPアドレスまたは利用者名:',
-'sp-contributions-submit' => '検索',
+'sp-contributions-newbies' => '新規利用者の投稿のみ表示',
+'sp-contributions-newbies-sub' => '新規利用者',
+'sp-contributions-newbies-title' => '新規利用者の投稿記録',
+'sp-contributions-blocklog' => '投稿ブロック記録',
+'sp-contributions-deleted' => '削除された投稿履歴',
+'sp-contributions-logs' => '各種ログ',
+'sp-contributions-talk' => 'トーク',
+'sp-contributions-userrights' => '利用者権限の管理',
+'sp-contributions-blocked-notice' => 'この利用者は現在ブロックされています。参考のために最新のブロック記録を以下に表示します。',
+'sp-contributions-search' => '投稿履歴の検索',
+'sp-contributions-username' => 'IPアドレスまたは利用者名:',
+'sp-contributions-submit' => '検索',
# What links here
'whatlinkshere' => 'リンク元',
@@ -2104,6 +2230,7 @@ $1',
# Block/unblock
'blockip' => '利用者をブロック',
+'blockip-title' => '利用者のブロック',
'blockip-legend' => '利用者をブロック',
'blockiptext' => '以下のフォームを使用して指定した利用者やIPアドレスからの投稿をブロックすることができます。このような措置は荒らしからの防御のためにのみ行われるべきであり、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。以下にブロックの理由を具体的に書いてください (荒らされたページへの言及など)。',
'ipaddress' => 'IPアドレス:',
@@ -2125,7 +2252,7 @@ $1',
'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスおよびブロック後に使用するIPアドレスを自動的にブロック',
'ipbsubmit' => 'この利用者をブロック',
'ipbother' => 'その他の期間:',
-'ipboptions' => '2時間:2 hours,1日:1 day,3日:3 days,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2時間:2 hours,1日:1 day,3日:3 days,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite',
'ipbotheroption' => 'その他',
'ipbotherreason' => 'その他の理由・追加の理由:',
'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
@@ -2154,9 +2281,11 @@ $1',
'ipblocklist-sh-tempblocks' => '期限付きブロックを$1',
'ipblocklist-sh-addressblocks' => 'シングルIPブロックを$1',
'ipblocklist-submit' => '検索',
+'ipblocklist-localblock' => 'ローカルブロック',
+'ipblocklist-otherblocks' => 'その他の{{PLURAL:$1|ブロック}}',
'blocklistline' => '$1、$2 が $3 をブロック ($4)',
'infiniteblock' => '無期限',
-'expiringblock' => '$1 に解除',
+'expiringblock' => '$1 $2 に解除',
'anononlyblock' => '匿名のみ',
'noautoblockblock' => '自動ブロックなし',
'createaccountblock' => 'アカウント作成のブロック',
@@ -2170,7 +2299,8 @@ $1',
'contribslink' => '投稿記録',
'autoblocker' => '投稿ブロックされている利用者「[[User:$1|$1]]」と同じIPアドレスのため、自動的にブロックされています。$1のブロックの理由は「$2」です。',
'blocklogpage' => '投稿ブロック記録',
-'blocklog-fulllog' => '投稿ブロック記録すべてを見る',
+'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。参考のため、ブロックの記録を以下に示します:',
+'blocklog-showsuppresslog' => 'この利用者は以前にブロックされ隠蔽されたことがあります。参考のため、秘匿記録を以下に示します:',
'blocklogentry' => '[[$1]] を$2ブロックしました $3',
'reblock-logentry' => '[[$1]] のブロックの期限を $2 に設定変更しました $3',
'blocklogtext' => 'このページは投稿ブロックと解除の操作記録です。自動的に投稿ブロックされたIPアドレスは記録されていません。現時点で有効な投稿ブロックは[[Special:IPBlockList|ブロック中の利用者一覧]]をご覧ください。',
@@ -2189,9 +2319,11 @@ $1',
'ipb_already_blocked' => '「$1」は既にブロックされています',
'ipb-needreblock' => '== すでにブロックされています ==
$1 は、すでにブロックされています。設定を変更しますか?',
+'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
'ipb_cant_unblock' => 'エラー: ブロックされた ID $1 が見つかりません。おそらく既にブロック解除されています。',
'ipb_blocked_as_range' => 'エラー: IPアドレス $1 は直接的なブロック対象となっていませんが、ブロックを解除できませんでした。これは恐らく、ブロック解除できないIPアドレス空間 $2 の範囲に含まれているためです。',
'ip_range_invalid' => '不正なIPアドレス範囲です。',
+'ip_range_toolarge' => '/$1よりサイズの大きい広域ブロックは許可されていません。',
'blockme' => 'ブロックする',
'proxyblocker' => 'プロキシブロッカー',
'proxyblocker-disabled' => 'この機能は無効になっています。',
@@ -2200,6 +2332,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'sorbsreason' => 'あなたのIPアドレスは{{SITENAME}}の使用しているDNSブラックリストに公開プロキシとして登録されています。',
'sorbs_create_account_reason' => 'あなたのIPアドレスは、{{SITENAME}}の使用しているDNSブラックリストに公開プロキシとして登録されています。アカウントは作成できません。',
'cant-block-while-blocked' => 'ブロックされているため、他の利用者をブロックできません。',
+'cant-see-hidden-user' => '投稿ブロックしようとした利用者は、既にブロックされ秘匿されています。秘匿者権限を持っていないため、この利用者の投稿ブロックを変更出来ません。',
# Developer tools
'lockdb' => 'データベースのロック',
@@ -2240,6 +2373,7 @@ $1 は、すでにブロックされています。設定を変更しますか
これらの場合、トークページを移動する場合には、別に作業する必要があります。',
'movearticle' => '移動するページ',
+'moveuserpage-warning' => "'''警告:''' あなたは利用者ページを移動させようとしています。移動を行った場合、ページだけが移動され、利用者名は''変更されない''点に注意してください。",
'movenologin' => 'ログインしていません',
'movenologintext' => 'ページを移動するためには、アカウント作成の上、[[Special:UserLogin|ログイン]]している必要があります。',
'movenotallowed' => 'あなたにはページを移動する権限がありません。',
@@ -2250,7 +2384,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'move-watch' => '移動するページをウォッチ',
'movepagebtn' => 'ページを移動',
'pagemovedsub' => '移動しました',
-'movepage-moved' => "'''「$1」は「$2」へ移動されました'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''「$1」は「$2」へ移動されました'''",
'movepage-moved-redirect' => 'リダイレクトが作成されました。',
'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。',
@@ -2290,6 +2424,13 @@ $1 は、すでにブロックされています。設定を変更しますか
'imageinvalidfilename' => '指定したファイル名が無効です',
'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正する',
'move-leave-redirect' => '移動元にリダイレクトを作成する',
+'protectedpagemovewarning' => "'''警告:''' このページは管理者権限をもつ利用者のみが移動できるように保護されています。
+参考として以下に一番最後のログを表示します:",
+'semiprotectedpagemovewarning' => "'''注意:''' このページは登録利用者のみが移動できるように保護されています。
+参考として以下に一番最後のログを表示します:",
+'move-over-sharedrepo' => '== ファイルが存在します ==
+[[:$1]] は共有リポジトリー上に存在します。ファイルをこの名前に移動すると共有ファイルを無効にします。',
+'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリー上で使われています。別の名前を選んでください。',
# Export
'export' => 'ページデータの書き出し',
@@ -2311,14 +2452,20 @@ $1 は、すでにブロックされています。設定を変更しますか
'export-pagelinks' => '以下の階層までのリンク先ページを含める:',
# Namespace 8 related
-'allmessages' => 'システムメッセージの一覧',
-'allmessagesname' => 'メッセージ名',
-'allmessagesdefault' => '既定の文章',
-'allmessagescurrent' => '現在の文章',
-'allmessagestext' => 'これは MediaWiki 名前空間で利用可能なシステムメッセージの一覧です。MediaWiki の一般的なローカリゼーションに貢献したい場合は、[http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] や [http://translatewiki.net?setlang=ja translatewiki.net] を訪れてみてください。',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' が無効なので、このページを使うことはできません。",
-'allmessagesfilter' => 'メッセージ名で絞り込み:',
-'allmessagesmodified' => '変更されたもののみを表示',
+'allmessages' => 'システムメッセージの一覧',
+'allmessagesname' => 'メッセージ名',
+'allmessagesdefault' => '既定の文章',
+'allmessagescurrent' => '現在の文章',
+'allmessagestext' => 'これは MediaWiki 名前空間で利用可能なシステムメッセージの一覧です。MediaWiki の一般的なローカリゼーションに貢献したい場合は、[http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] や [http://translatewiki.net?setlang=ja translatewiki.net] を訪れてみてください。',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' が無効なので、このページを使うことはできません。",
+'allmessages-filter-legend' => '絞り込み',
+'allmessages-filter' => 'カスタマイズ状態により絞り込む:',
+'allmessages-filter-unmodified' => '変更なし',
+'allmessages-filter-all' => 'すべて',
+'allmessages-filter-modified' => '変更あり',
+'allmessages-prefix' => '名前の先頭部分で絞り込む:',
+'allmessages-language' => '言語:',
+'allmessages-filter-submit' => '表示',
# Thumbnails
'thumbnail-more' => '拡大',
@@ -2328,6 +2475,9 @@ $1 は、すでにブロックされています。設定を変更しますか
'djvu_no_xml' => 'DjVuファイルのXMLデータを取得できません',
'thumbnail_invalid_params' => 'サムネイルの指定パラメータが無効です',
'thumbnail_dest_directory' => '出力ディレクトリを作成できません',
+'thumbnail_image-type' => '対応していない画像形式です',
+'thumbnail_gd-library' => 'GDライブラリの構成が不完全です: 関数 $1 が不足',
+'thumbnail_image-missing' => 'ファイルが見つかりません: $1',
# Special:Import
'import' => 'ページデータの取り込み',
@@ -2389,6 +2539,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'tooltip-ca-viewsource' => 'このページは保護されています。ページのソースを閲覧できます。',
'tooltip-ca-history' => 'このページの過去の版',
'tooltip-ca-protect' => 'このページを保護',
+'tooltip-ca-unprotect' => 'このページを保護解除する',
'tooltip-ca-delete' => 'このページを削除',
'tooltip-ca-undelete' => '削除されたページを復帰する',
'tooltip-ca-move' => 'このページを移動する',
@@ -2399,6 +2550,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'tooltip-search-fulltext' => '入力された文字列が含まれるページを検索します',
'tooltip-p-logo' => 'メインページに移動',
'tooltip-n-mainpage' => 'メインページに移動',
+'tooltip-n-mainpage-description' => 'メインページに移動する',
'tooltip-n-portal' => 'このプロジェクトについて・あなたのできること・情報を入手する場所',
'tooltip-n-currentevents' => '最近の出来事',
'tooltip-n-recentchanges' => 'このウィキにおける最近の更新の一覧',
@@ -2445,6 +2597,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'chick.css' => '/* ここに記述したCSSはチック・スキンの利用者に影響します */',
'simple.css' => '/* ここに記述したCSSはシンプル・スキンの利用者に影響します */',
'modern.css' => '/* ここに記述したCSSはモダン・スキンの利用者に影響します */',
+'vector.css' => '/* ここに記述したCSSはベクター・スキンの利用者に影響します */',
'print.css' => '/* ここに記述したCSSは印刷出力に影響します */',
'handheld.css' => '/* ここに記述したCSSは $wgHandheldStyle で設定されたスキンに基づく携帯機器に影響します */',
@@ -2458,6 +2611,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'chick.js' => '/* ここに記述したJavaScriptはチック・スキンの利用者に影響します */',
'simple.js' => '/* ここに記述したJavaScriptはシンプル・スキンの利用者に影響します */',
'modern.js' => '/* ここに記述したJavaScriptはモダン・スキンの利用者に影響します */',
+'vector.js' => '/* ここに記述したJavaScriptはベクター・スキンの利用者に影響します */',
# Metadata
'nodublincore' => 'このサーバーでは Dublin Core RDF メタデータが許可されていません。',
@@ -2467,10 +2621,12 @@ $1 は、すでにブロックされています。設定を変更しますか
# Attribution
'anonymous' => '{{SITENAME}} の匿名{{PLURAL:$1|利用者}}',
'siteuser' => '{{SITENAME}} の利用者 $1',
-'lastmodifiedatby' => 'このページの最終更新は $1 $2 に $3 によって行われました。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} の匿名利用者 $1',
+'lastmodifiedatby' => 'このページの最終更新は $1 $2 に $3 によって行われました。',
'othercontribs' => 'また、最終更新以前に $1 が編集しました。',
'others' => 'その他の利用者',
'siteusers' => '{{SITENAME}} の{{PLURAL:$2|利用者}}$1',
+'anonusers' => '{{SITENAME}} の匿名{{PLURAL:$2|利用者}} $1',
'creditspage' => 'ページの著作者',
'nocredits' => 'このページには有効なクレジット情報がありません。',
@@ -2499,6 +2655,7 @@ $1 は、すでにブロックされています。設定を変更しますか
'skinname-chick' => 'チック',
'skinname-simple' => 'シンプル',
'skinname-modern' => 'モダン',
+'skinname-vector' => 'ベクター',
# Math options
'mw_math_png' => '常にPNG',
@@ -2508,11 +2665,22 @@ $1 は、すでにブロックされています。設定を変更しますか
'mw_math_modern' => '最近のブラウザで推奨',
'mw_math_mathml' => '可能ならばMathMLを使う (試験中の機能)',
+# Math errors
+'math_failure' => '構文解析失敗',
+'math_unknown_error' => '不明なエラー',
+'math_unknown_function' => '不明な関数',
+'math_lexing_error' => '字句解析エラー',
+'math_syntax_error' => '構文エラー',
+'math_image_error' => 'PNGへの変換に失敗しました。latex, dvips, gs, convertが正しくインストールされているか確認してください。',
+'math_bad_tmpdir' => 'TeX一時ディレクトリを作成または書き込みできません',
+'math_bad_output' => 'TeX出力用ディレクトリを作成または書き込みできません',
+'math_notexvc' => 'texvcプログラムが見つかりません。math/READMEを読んで正しく設定してください。',
+
# Patrolling
'markaspatrolleddiff' => 'パトロール済みにする',
'markaspatrolledtext' => 'このページをパトロール済みにする',
'markedaspatrolled' => 'パトロール済みにしました。',
-'markedaspatrolledtext' => '選択された編集をパトロール済みにしました。',
+'markedaspatrolledtext' => '選択された [[:$1|$1]] の特定版をパトロール済みにマークしました。',
'rcpatroldisabled' => '最近の更新のパトロールは無効',
'rcpatroldisabledtext' => '最近の更新のパトロール機能は現在無効になっています。',
'markedaspatrollederror' => 'パトロール済みにできません。',
@@ -2540,13 +2708,10 @@ $1 は、すでにブロックされています。設定を変更しますか
'previousdiff' => '←前の差分',
'nextdiff' => '次の差分→',
-# Visual comparison
-'visual-comparison' => '表示結果の比較',
-
# Media information
'mediawarning' => "'''警告:''' このファイルは悪意のあるコードを含んでいる可能性があります。
実行するとコンピューターが危害を被る場合があります。",
-'imagemaxsize' => 'ファイルページで表示する画像の最大サイズ:',
+'imagemaxsize' => "画像の最大サイズ:<br />''(ファイルページに適用)''",
'thumbsize' => 'サムネイルの大きさ:',
'widthheightpage' => '$1×$2, $3{{PLURAL:$3|ページ}}',
'file-info' => '(ファイルサイズ: $1, MIMEタイプ: $2)',
@@ -2555,6 +2720,8 @@ $1 は、すでにブロックされています。設定を変更しますか
'svg-long-desc' => '(SVGファイル, $1 × $2 ピクセル, ファイルサイズ: $3)',
'show-big-image' => '高解像度での画像',
'show-big-image-thumb' => '<small>このプレビューのサイズ: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'ループします',
+'file-info-gif-frames' => '$1フレーム',
# Special:NewFiles
'newimages' => '新規ファイルギャラリー',
@@ -2599,7 +2766,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '画像の幅',
@@ -2727,14 +2894,14 @@ Variants for Chinese language
'exif-unknowndate' => '不明な日付',
-'exif-orientation-1' => '通常', # 0th row: top; 0th column: left
-'exif-orientation-2' => '左右反転', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180°回転', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '上下反転', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '反時計回りに90°回転 上下反転', # 0th row: left; 0th column: top
-'exif-orientation-6' => '時計回りに90°回転', # 0th row: right; 0th column: top
-'exif-orientation-7' => '時計回りに90°回転 上下反転', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '反時計回りに90°回転', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '通常',
+'exif-orientation-2' => '左右反転',
+'exif-orientation-3' => '180°回転',
+'exif-orientation-4' => '上下反転',
+'exif-orientation-5' => '反時計回りに90°回転 上下反転',
+'exif-orientation-6' => '時計回りに90°回転',
+'exif-orientation-7' => '時計回りに90°回転 上下反転',
+'exif-orientation-8' => '反時計回りに90°回転',
'exif-planarconfiguration-1' => '点順次フォーマット',
'exif-planarconfiguration-2' => '面順次フォーマット',
@@ -2860,7 +3027,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => '2次元測位',
'exif-gpsmeasuremode-3' => '3次元測位',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'キロメートル毎時',
'exif-gpsspeed-m' => 'マイル毎時',
'exif-gpsspeed-n' => 'ノット',
@@ -2879,6 +3046,7 @@ Variants for Chinese language
'watchlistall2' => 'すべて',
'namespacesall' => 'すべて',
'monthsall' => 'すべて',
+'limitall' => 'すべて',
# E-mail address confirmation
'confirmemail' => 'メールアドレスの確認',
@@ -2897,8 +3065,8 @@ Variants for Chinese language
'confirmemail_loggedin' => 'あなたのメールアドレスは確認されました。',
'confirmemail_error' => 'あなたの確認を保存する際に内部エラーが発生しました。',
'confirmemail_subject' => '{{SITENAME}} メールアドレスの確認',
-'confirmemail_body' => 'どなたか(IPアドレス $1 の使用者)がこのメールアドレスを
-{{SITENAME}} のアカウント "$2" に登録しました。
+'confirmemail_body' => 'どなたか (IPアドレス $1 の使用者) がこのメールアドレスで
+{{SITENAME}} のアカウント「$2」を登録しました。
このアカウントがあなたのものであるか確認してください。
あなたの登録したアカウントであるならば、{{SITENAME}}
@@ -2906,15 +3074,12 @@ Variants for Chinese language
$3
-もし {{SITENAME}} について身に覚えがない場合は、リンクを開かず
-次のURLにアクセスしてメール登録を解除ください:
+もしアカウントの登録をした覚えがない場合は、
+次のURLにアクセスしてメール登録を解除してください:
$5
-確認用コードは $4 に期限切れになります。
---
-{{SITENAME}}
-{{SERVER}}/',
+この確認用コードは $4 に期限切れになります。',
'confirmemail_invalidated' => 'メールアドレスの確認が中止されました',
'invalidateemail' => 'メールアドレスの認証中止',
@@ -3072,7 +3237,7 @@ $1',
'duplicate-defaultsort' => "'''警告:''' デフォルトソートキー「$2」がその前に書かれているデフォルトソートキー「$1」を無効にしています。",
# Special:Version
-'version' => 'バージョン情報', # Not used as normal message but as header for the special page itself
+'version' => 'バージョン情報',
'version-extensions' => 'インストール済み拡張機能',
'version-specialpages' => '特別ページ',
'version-parserhooks' => 'パーサーフック',
@@ -3086,7 +3251,7 @@ $1',
'version-skin-extension-functions' => 'スキン拡張機能関数',
'version-hook-name' => 'フック名',
'version-hook-subscribedby' => '使用個所',
-'version-version' => 'バージョン',
+'version-version' => '(バージョン $1)',
'version-license' => 'ライセンス',
'version-software' => 'インストール済みソフトウェア',
'version-software-product' => 'ソフトウェア名',
@@ -3166,4 +3331,15 @@ $1',
'dberr-outofdate' => 'このサイトに関する外部のインデックスは最新ではない場合があることに注意してください。',
'dberr-cachederror' => '次は要求されたページをキャッシュした複製であり、最新の内容ではないかもしれません。',
+# HTML forms
+'htmlform-invalid-input' => '入力になんらかの問題があります',
+'htmlform-select-badoption' => '指定された値が有効なものではありません。',
+'htmlform-int-invalid' => '指定された値が整数ではありません。',
+'htmlform-float-invalid' => '指定された値は数値ではありません。',
+'htmlform-int-toolow' => '指定された値が$1の最小値未満です',
+'htmlform-int-toohigh' => '指定された値が$1の最大値を超えています',
+'htmlform-submit' => '送信',
+'htmlform-reset' => '変更を取り消す',
+'htmlform-selectorother-other' => 'その他',
+
);
diff --git a/languages/messages/MessagesJbo.php b/languages/messages/MessagesJbo.php
index 5c51a360..a29f2db8 100644
--- a/languages/messages/MessagesJbo.php
+++ b/languages/messages/MessagesJbo.php
@@ -70,10 +70,14 @@ $messages = array(
'category-subcat-count' => "$2 klesi cu vipsi le vi klesi .i $1 vipkle cu ni'a se jarco",
'category-article-count' => "$2 kibypapri cu cmima le vi klesi .i $1 kibypapri cu ni'a se jarco",
+'mytalk' => 'casnu mi',
+'navigation' => 'ckupau',
+
+# Cologne Blue skin
'qbedit' => 'stika',
'qbpageoptions' => 'ti ckupau',
-'mytalk' => 'casnu mi',
-'navigation' => 'ckupau',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'fliba',
'tagline' => "ra'i {{SITENAME}}",
@@ -96,7 +100,7 @@ $messages = array(
'views' => 'Catlu',
'toolbox' => 'tutci',
'otherlanguages' => 'drata bangu',
-'lastmodifiedat' => "le vi ckupau rore'u se galfi de'i li $2 $1", # $1 date, $2 time
+'lastmodifiedat' => "le vi ckupau rore'u se galfi de'i li $2 $1",
'jumpto' => 'plipe tyobu:',
'jumptonavigation' => 'ckupau',
'jumptosearch' => 'sisku',
@@ -105,7 +109,6 @@ $messages = array(
'aboutsite' => 'About {{SITENAME}}',
'aboutpage' => "Project:sera'a",
'copyright' => "lo selvau cu gubni ja'i la'o gy. $1 .gy.",
-'copyrightpagename' => "{{SITENAME}} fukyzifpo'e",
'copyrightpage' => "{{ns:project}}:fukyzifpo'e",
'currentevents' => "caca'a fasnu",
'currentevents-url' => "Project:caca'a fasnu",
@@ -113,8 +116,6 @@ $messages = array(
'disclaimerpage' => "Project:kampu nunxusra be lo za'i na fuzme",
'edithelp' => 'stika nunsidju',
'edithelppage' => 'Help:Editing',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'mainpage' => 'Ralju Ckupau',
'mainpage-description' => 'ralju ckupau',
'portal' => 'bende ckupau',
@@ -178,10 +179,11 @@ $messages = array(
'editingcomment' => 'ca galfi le selcmene be zoi $1 (comment)',
# History pages
-'cur' => 'cab',
-'last' => "prula'i",
-'page_first' => 'pamoi',
-'page_last' => 'fanmo',
+'revisionasof' => "velfarvi de'i",
+'cur' => 'cab',
+'last' => "prula'i",
+'page_first' => 'pamoi',
+'page_last' => 'fanmo',
# Revision deletion
'rev-delundel' => 'jarco/mipri',
@@ -201,7 +203,7 @@ $messages = array(
# Preferences page
'preferences' => 'zmaselnei',
'mypreferences' => 'zmaselnei liste',
-'textboxsize' => 'ca galfi',
+'prefs-editing' => 'ca galfi',
'searchresultshead' => "tu'a le se sisku",
'savedprefs' => 'le do zmaselnei pu vreji',
@@ -270,6 +272,7 @@ $messages = array(
'contributions' => 'selstika le pilno',
'mycontris' => 'pu selstika mi',
+'sp-contributions-talk' => 'casnu',
'sp-contributions-submit' => 'sisku',
# What links here
diff --git a/languages/messages/MessagesJut.php b/languages/messages/MessagesJut.php
index 70c05fb5..7a26a809 100644
--- a/languages/messages/MessagesJut.php
+++ b/languages/messages/MessagesJut.php
@@ -119,16 +119,24 @@ $messages = array(
'category-media-header' => "Medier i'n klynge „$1“",
'category-empty' => "''Denne klynge endeholter før øjeblikket æ verke sider æller medie-gøret.''",
'hidden-categories' => '{{PLURAL:$1|Skjult klynge|Skjulte klynger}}',
-'hidden-category-category' => 'Skjulte klynger', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skjulte klynger',
'listingcontinuesabbrev' => 'førtgøte',
'mainpagetext' => "'''MediaWiki er nu installeret.'''",
'mainpagedocfooter' => "Se vores engelskspråĝede [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentåsje tilpasnenge'm åf æ brugergrænseflade] og [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide æ brugervejlednenge] før åplysnenger åpsætnenge'm og anvendelse.",
-'about' => 'Åm',
-'article' => 'Ertikel',
-'newwindow' => '(åbner i et nyt vendue)',
-'cancel' => 'Åfbryd',
+'about' => 'Åm',
+'article' => 'Ertikel',
+'newwindow' => '(åbner i et nyt vendue)',
+'cancel' => 'Åfbryd',
+'moredotdotdot' => 'Mære...',
+'mypage' => 'Miin side',
+'mytalk' => 'Min diskusje',
+'anontalk' => 'Diskusjeside før denne IP-adresse',
+'navigation' => 'Navigasje',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Søĝ',
'qbbrowse' => 'Gennemse',
'qbedit' => 'Redigær',
@@ -136,15 +144,8 @@ $messages = array(
'qbpageinfo' => "Informåsje side'm",
'qbmyoptions' => 'Miine endstellenger',
'qbspecialpages' => 'Sonst sider',
-'moredotdotdot' => 'Mære...',
-'mypage' => 'Miin side',
-'mytalk' => 'Min diskusje',
-'anontalk' => 'Diskusjeside før denne IP-adresse',
-'navigation' => 'Navigasje',
-'and' => '&#32;og',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'VSF',
+'faqpage' => 'Project:Vøl stellen fråĝer (VSF)',
'errorpagetitle' => 'Fejl',
'returnto' => 'Tilbage til $1.',
@@ -194,7 +195,7 @@ $messages = array(
'otherlanguages' => 'Andre språĝ',
'redirectedfrom' => '(Åmstyret frå $1)',
'redirectpagesub' => 'Åmstyrenge',
-'lastmodifiedat' => 'Denne side blev senest ændret den $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Denne side blev senest ændret den $2, $1.',
'viewcount' => 'Æ side er vest i alt $1 {{PLURAL:$1|geng|genger}}.',
'protectedpage' => 'Beskyttet side',
'jumpto' => 'Skeft til:',
@@ -205,7 +206,6 @@ $messages = array(
'aboutsite' => "{{SITENAME}}'m",
'aboutpage' => 'Project:Åm',
'copyright' => 'Endholtet er udgævet under $1.',
-'copyrightpagename' => '{{SITENAME}} åphavsret',
'copyrightpage' => '{{ns:project}}:Åphavsret',
'currentevents' => 'Nænte begevenheder',
'currentevents-url' => 'Project:Nænte begevenheder',
@@ -213,8 +213,6 @@ $messages = array(
'disclaimerpage' => 'Project:Huses førbeholt',
'edithelp' => 'Hjælp til redigærenge',
'edithelppage' => "Help:Vordan redigærer a'n side",
-'faq' => 'VSF',
-'faqpage' => 'Project:Vøl stellen fråĝer (VSF)',
'helppage' => 'Help:Hjælpførside',
'mainpage' => 'Førsit',
'mainpage-description' => 'Førsit',
@@ -287,9 +285,6 @@ MySQL æ returnerede fejl "<tt>$3: $4</tt>".',
'dberrortextcl' => 'Der er åpstået en syntaksfejl i en databaseførespørgsel.
Den seneste førsøĝte databaseførespørgsel var: "$1" frå\'n funksje "$2".
MySQL æ returnerede fejl "$3: $4".',
-'noconnect' => "Der er pråblæmer ve {{SITENAME}} han database, vi kan desværre ekke kåm i kontakt ve den før øjeblikket. Prøv ig'n senere. <br />$1",
-'nodb' => "Kan ekke vælge'n database $1",
-'cachederror' => 'Det følgende er en gemt kopi åf den ønskede side, og er måske ekke helt åpdateret.',
'laggedslavemode' => 'Bemærk: Den veste side endholter mulegves ekke de nyeste ændrenger.',
'readonly' => 'Æ database er skrevebeskyttet',
'enterlockreason' => "Skrev en begrundelse før æ skrevebeskyttelse, ve samt en vurderenge åf, hvornår æ skrevebeskyttelse åphæves ig'n",
@@ -331,9 +326,6 @@ Førespørgsel: $2',
'createaccount' => 'Åpret en ny konto',
'gotaccount' => "Du har ålerede en brugerkonto? '''$1'''.",
'gotaccountlink' => 'Loĝ på',
-'youremail' => 'E-mail:',
-'yourrealname' => 'Dit rigtege navn*',
-'prefs-help-realname' => '* <strong>Dit rigtege navn</strong> (valgfrit): Hves du vælger at åplyse dit navn hvil dette bleve brugt til at tilskreve dig dit arbejde.',
'loginsuccesstitle' => 'Du er nu loĝget på',
'loginsuccess' => 'Du er nu loĝget på {{SITENAME}} søm "$1".',
'nosuchuser' => 'Der er ig\'n bruger ve navnet "$1". Kontrollér æ stavemåde ig\'n, æller brug æ formulår herunder til at åprette en ny brugerkonto.',
@@ -383,17 +375,17 @@ Før en e-mail ken modtages åf andre brugere åf æ {{SITENAME}}-mailfunksje, s
'hr_tip' => 'Plat lenje (brug den sparsåmt)',
# Edit pages
-'summary' => 'Beskrevelse:',
-'subject' => 'Emne/åverskreft:',
-'minoredit' => "Dette'r en mendre æller lile ændrenge.",
-'watchthis' => 'Åvervåg denne ertikel',
-'savearticle' => 'Gem side',
-'preview' => 'Førhåndsvesnenge',
-'showpreview' => 'Førhåndsvesnenge',
-'showdiff' => 'Ves ændrenger',
-'anoneditwarning' => "Du arbejder uden at være loĝget på. Estedet før brugernav veses så'n IP-adresse i'n hersenengerskigt.",
-'summary-preview' => 'Førhåndsvesnenge åf beskrevelselejne:',
-'blockedtext' => "'''Dit brugernav æller din IP-adresse er blevet blokeret.'''
+'summary' => 'Beskrevelse:',
+'subject' => 'Emne/åverskreft:',
+'minoredit' => "Dette'r en mendre æller lile ændrenge.",
+'watchthis' => 'Åvervåg denne ertikel',
+'savearticle' => 'Gem side',
+'preview' => 'Førhåndsvesnenge',
+'showpreview' => 'Førhåndsvesnenge',
+'showdiff' => 'Ves ændrenger',
+'anoneditwarning' => "Du arbejder uden at være loĝget på. Estedet før brugernav veses så'n IP-adresse i'n hersenengerskigt.",
+'summary-preview' => 'Førhåndsvesnenge åf beskrevelselejne:',
+'blockedtext' => "'''Dit brugernav æller din IP-adresse er blevet blokeret.'''
Æ blokerenge er lavet åf $1. Æ begrundelse er ''$2''.
@@ -404,27 +396,27 @@ Før en e-mail ken modtages åf andre brugere åf æ {{SITENAME}}-mailfunksje, s
Du ken kåle $1 æller en åf de andre [[{{MediaWiki:Grouppage-sysop}}|administratårer]] før at diskutere æ blokerenge.
Du ken ekke bruge æ funksje 'e-mail til denne bruger' vemendre der er ångevet en gyldig email-addresse i dine
[[Special:Preferences|kontoendstellenger]]. Din nuværende IP-addresse er $3, og blokerengs-ID er #$5. Ångev venlegst en æller begge i åle henvendelser.",
-'newarticle' => '(Ny)',
-'newarticletext' => "'''{{SITENAME}} har endnu ekke nogen {{NAMESPACE}}-side ve nav {{PAGENAME}}.'''<br /> Du ken begynde en side ve at skreve i'n boks herunder. (se'n [[{{MediaWiki:Helppage}}|hjælp]] før yderligere åplysnenger).<br /> Æller du ken [[Special:Search/{{PAGENAME}}|søĝe æfter {{PAGENAME}} i {{SITENAME}}]].<br /> Ves det ekke var din meneng, så tryk på æ '''Tilbage'''- æller æ '''Back'''-knåp.",
-'noarticletext' => "'''{{SITENAME}} har ekke nogen side ve prånt dette nav.'''
+'newarticle' => '(Ny)',
+'newarticletext' => "'''{{SITENAME}} har endnu ekke nogen {{NAMESPACE}}-side ve nav {{PAGENAME}}.'''<br /> Du ken begynde en side ve at skreve i'n boks herunder. (se'n [[{{MediaWiki:Helppage}}|hjælp]] før yderligere åplysnenger).<br /> Æller du ken [[Special:Search/{{PAGENAME}}|søĝe æfter {{PAGENAME}} i {{SITENAME}}]].<br /> Ves det ekke var din meneng, så tryk på æ '''Tilbage'''- æller æ '''Back'''-knåp.",
+'noarticletext' => "'''{{SITENAME}} har ekke nogen side ve prånt dette nav.'''
* Du ken '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} starte æ side {{PAGENAME}}]'''
* Æller [[Special:Search/{{PAGENAME}}|søĝe æfter {{PAGENAME}}]] i andre ertikler
----
* Ves du har åprettet denne ertikel endenfør de sedste få minutter, så ken de skyldes at der er ledt førsenkelse i'n åpdaterenge åf {{SITENAME}}s cache. Vent venligst og tjek igen senere'n ertikel'm dukker åp, enden du førsøĝer at åprette'n ertikel igen.",
-'previewnote' => "'''Husk at dette er kun en førhåndsvesnenge, æ side er ekke gemt endnu!'''",
-'editing' => 'Redigærer $1',
-'editingsection' => 'Redigærer $1 (åfsnet)',
-'copyrightwarning' => "'''Husk: åpskrev engen websider, søm ekke tilhører dig selv, brug engen åphavsretsligt beskyttede værker uden tilladelse frå'n ejer!'''<br />
+'previewnote' => "'''Husk at dette er kun en førhåndsvesnenge, æ side er ekke gemt endnu!'''",
+'editing' => 'Redigærer $1',
+'editingsection' => 'Redigærer $1 (åfsnet)',
+'copyrightwarning' => "'''Husk: åpskrev engen websider, søm ekke tilhører dig selv, brug engen åphavsretsligt beskyttede værker uden tilladelse frå'n ejer!'''<br />
Du lover os hermed, at du selv '''har skrevet skrevselenger''', at skrevselenger tilhører ålmenheden, er ('''åpværer hus'''), æller at æ '''åphavsrets-endehaver''' har gevet sen '''tilladelse'''. Ves denne skrevselenger ålerede er åfentliggkort andre steder, skrev det venligst på æ diskusjesside.
<i>Bemærk venligst, at ål {{SITENAME}}-ertikler åtomatisk står under „$2“ (se $1 før lileskrevselenger). Ves du ekke vel, at dit arbejde her ændres og udbredes åf andre, så tryk ekke på „Gem“.</i>",
-'longpagewarning' => "'''ADVARSEL: Denne side er $1 kilobyte stor; nogle browsere ken have pårblæmer ve at redigære sider der nærmer sig æller er større end 32 kb.
+'longpagewarning' => "'''ADVARSEL: Denne side er $1 kilobyte stor; nogle browsere ken have pårblæmer ve at redigære sider der nærmer sig æller er større end 32 kb.
Åvervej æ side'm ken åpdeles i mendre dæle.'''",
-'templatesused' => 'Skablåner der er brugt på denne side:',
-'templatesusedpreview' => 'Følgende skablåner bruges åf denne ertikelførhåndsvesnenge:',
-'template-protected' => '(skrevebeskyttet)',
-'template-semiprotected' => '(skrevebeskyttet før ekke ånmeldte og nye brugere)',
-'nocreatetext' => "Æ'n åpdiin har begrænset åprettelse åf nye sider. Bestående sider ken ændres æller [[Special:UserLogin|loĝge på]].",
-'recreate-deleted-warn' => "'''Advarsel: Du er ve at genskabe en tidligere slettet side.'''
+'templatesused' => 'Skablåner der er brugt på denne side:',
+'templatesusedpreview' => 'Følgende skablåner bruges åf denne ertikelførhåndsvesnenge:',
+'template-protected' => '(skrevebeskyttet)',
+'template-semiprotected' => '(skrevebeskyttet før ekke ånmeldte og nye brugere)',
+'nocreatetext' => "Æ'n åpdiin har begrænset åprettelse åf nye sider. Bestående sider ken ændres æller [[Special:UserLogin|loĝge på]].",
+'recreate-moveddeleted-warn' => "'''Advarsel: Du er ve at genskabe en tidligere slettet side.'''
Åvervej det'm er passende at genåprette'n side. De slettede hersenenger før
denne side er vest nedenfør:",
@@ -433,7 +425,7 @@ denne side er vest nedenfør:",
'viewpagelogs' => 'Ves loglister før denne side',
'currentrev' => 'Nuværende hersenenge',
'revisionasof' => 'Hersenenger frå $1',
-'revision-info' => 'Hersenenge frå $1 til $2', # Additionally available: $3: revision id
+'revision-info' => 'Hersenenge frå $1 til $2',
'previousrevision' => '←Ældre hersenenge',
'nextrevision' => 'Nyere hersenenge→',
'currentrevisionlink' => 'se nuværende hersenenge',
@@ -447,7 +439,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'histlast' => 'Nyeste',
# Revision feed
-'history-feed-item-nocomment' => '$1 ve $2', # user at time
+'history-feed-item-nocomment' => '$1 ve $2',
# Diffs
'history-title' => 'Hersengsskigte før "$1"',
@@ -458,18 +450,20 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'diff-multi' => '(Æ hersenengssammenlegnenge vetåger {{PLURAL:$1|en mellemleggende hersenenge|$1 mellemleggende hersenenger}}.)',
# Search results
-'noexactmatch' => "'''{{SITENAME}} har engen ertikel ve dette nav.''' Du ken [[:$1|åprette en ertikel ve dette nav]].",
-'prevn' => 'førge $1',
-'nextn' => 'nægste $1',
-'viewprevnext' => 'Ves ($1) ($2) ($3)',
+'prevn' => 'førge {{PLURAL:$1|$1}}',
+'nextn' => 'nægste {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ves ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Hjælpførside',
'searchall' => 'ål',
'powersearch' => 'Søĝ',
# Preferences page
-'preferences' => 'Endstellenger',
-'mypreferences' => 'Endstellenger',
-'skin-preview' => 'Førhåndsvesnenge',
+'preferences' => 'Endstellenger',
+'mypreferences' => 'Endstellenger',
+'skin-preview' => 'Førhåndsvesnenge',
+'youremail' => 'E-mail:',
+'yourrealname' => 'Dit rigtege navn*',
+'prefs-help-realname' => '* <strong>Dit rigtege navn</strong> (valgfrit): Hves du vælger at åplyse dit navn hvil dette bleve brugt til at tilskreve dig dit arbejde.',
'grouppage-sysop' => '{{ns:project}}:Administråtorer',
@@ -500,6 +494,8 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
# Recent changes linked
'recentchangeslinked' => 'Relaterede ændrenger',
+'recentchangeslinked-feed' => 'Relaterede ændrenger',
+'recentchangeslinked-toolbox' => 'Relaterede ændrenger',
'recentchangeslinked-title' => 'Ændrenger der vegånde til "$1"',
'recentchangeslinked-noresult' => 'I det udvalgte tidsrum blev der ekke føretaget ændrenger på siderne der henveses til.',
'recentchangeslinked-summary' => "Denne sonstside beser de seneste ændrenger på de sider der henveses til. Sider på din åvervågnengsliste er vest ve '''fed''' skreft.",
@@ -514,6 +510,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'listfiles' => 'Billetliste',
# File description page
+'file-anchor-link' => 'Billet',
'filehist' => 'Billetskigt',
'filehist-help' => "Klik på'n dato/tid før at se den hersenenge åf gøret.",
'filehist-current' => 'nuværende',
@@ -525,9 +522,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'imagelinks' => 'Billethenvesnenger',
'linkstoimage' => 'De følgende sider henveser til dette billet:',
'nolinkstoimage' => 'Der er engen sider der henveser til dette billet.',
-'sharedupload' => 'Denne gøret er en fælles læĝenge og ken bruges åf andre projekter.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Der er engen gøret ve dette nav, du ken $1',
-'noimage-linktext' => 'læĝge den åp',
+'sharedupload' => 'Denne gøret er en fælles læĝenge og ken bruges åf andre projekter.',
'uploadnewversion-linktext' => 'Læĝ en ny hersenenge åf denne gøret åp',
# MIME search
@@ -675,7 +670,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'protectexpiry' => 'Udløb:',
'protect_expiry_invalid' => 'Æ udløbstiid er ugyldeg.',
'protect_expiry_old' => "Æ udløbstiid legger i'n førtiid.",
-'protect-unchain' => 'Ændre flytnengsbeskyttelse',
'protect-text' => "Her ken beskyttelsesståt før æ side '''<nowiki>$1</nowiki>''' ses og ændres.",
'protect-locked-access' => "Den brugerkonto har ekke de nødvendege rettegheder til at æ ændre sidebeskyttelse. Her er de aktuelle beskyttelsesendstellenger før æ side '''„$1“:'''",
'protect-cascadeon' => 'Denne side er del åf en nedarvet skrevebeskyttelse. Wen er endeholt i nedenstående {{PLURAL:$1|side|sider}}, søm er skrevebeskyttet ve tilvalg åf "nedarvende sidebeskyttelse" Æ sidebeskyttelse ken ændres før denne side, det påverker dog ekke\'n kaskadespærrenge:',
@@ -687,7 +681,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'protect-expiring' => 'til $1 (UTC)',
'protect-cascade' => 'Nedarvende spærrenge – ål skabelåner, søm er endbundet i denne side spærres også.',
'protect-cantedit' => 'Du kenst ekke ændre beskyttelsesnivå før denne side, da du ekke kenst redigære føden.',
-'protect-expiry-options' => '1 tême:1 hour,1 dåĝ:1 day,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:indefinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 tême:1 hour,1 dåĝ:1 day,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:indefinite',
'restriction-type' => 'Beskyttelsesståt',
'restriction-level' => 'Beskyttelseshøjde',
@@ -709,6 +703,8 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
'sp-contributions-newbies-sub' => 'Før nybegyndere',
'sp-contributions-blocklog' => 'Blokerengslog',
+'sp-contributions-deleted' => 'Slettede brugerbidråg',
+'sp-contributions-talk' => 'diskusje',
# What links here
'whatlinkshere' => 'Vat henveser hertil',
@@ -723,7 +719,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre
# Block/unblock
'blockip' => 'Bloker bruger',
-'ipboptions' => '1 tême:1 hour,2 têmer:2 hours,6 têmer:6 hours,1 dåĝ:1 day,3 dåĝ:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,1 år:1 year,ubegrænset:indefinite', # display1:time1,display2:time2,...
+'ipboptions' => '1 tême:1 hour,2 têmer:2 hours,6 têmer:6 hours,1 dåĝ:1 day,3 dåĝ:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,1 år:1 year,ubegrænset:indefinite',
'ipblocklist' => 'Blokerede IP-adresser og brugernave',
'blocklink' => 'blåker',
'unblocklink' => 'åphæv blokerenge',
@@ -754,7 +750,7 @@ I disse tilfælde er du nødt til at flytte æller sammenflette'n side manuelt."
'move-watch' => 'Denne side åvervåges',
'movepagebtn' => 'Flyt side',
'pagemovedsub' => 'Flytnenge gennemført',
-'movepage-moved' => 'Æ side \'\'\'"$1" er flyttet til "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Æ side \'\'\'"$1" er flyttet til "$2"\'\'\'',
'articleexists' => 'En side ve det navn eksisterer ålrede, æller det
navn du harst valgt er ekke gyldegt. Vælg et andet navn.',
'talkexists' => 'Æ side blev flyttet korrekt, men den tilhørende diskusjeside ken ekke flyttes, førdi der ålrede eksisterer en ve den nye titel. Du erst nødt til at flette dem sammen manuelt.',
@@ -851,7 +847,7 @@ Kun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første hen
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => "Redigær denne gøret ve'n utsende redigærstøme",
@@ -868,7 +864,7 @@ Kun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første hen
'watchlisttools-raw' => 'Redigær rå åvervågnengsliste',
# Special:Version
-'version' => "Informasje MediaWiki'm", # Not used as normal message but as header for the special page itself
+'version' => "Informasje MediaWiki'm",
# Special:SpecialPages
'specialpages' => 'Sonst sider',
diff --git a/languages/messages/MessagesJv.php b/languages/messages/MessagesJv.php
index a41f6fc9..78f386db 100644
--- a/languages/messages/MessagesJv.php
+++ b/languages/messages/MessagesJv.php
@@ -20,11 +20,9 @@ $fallback = 'id';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Astamiwa',
- NS_MAIN => '',
NS_TALK => 'Dhiskusi',
NS_USER => 'Panganggo',
NS_USER_TALK => 'Dhiskusi_Panganggo',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Dhiskusi_$1',
NS_FILE => 'Gambar',
NS_FILE_TALK => 'Dhiskusi_Gambar',
@@ -35,7 +33,7 @@ $namespaceNames = array(
NS_HELP => 'Pitulung',
NS_HELP_TALK => 'Dhiskusi_Pitulung',
NS_CATEGORY => 'Kategori',
- NS_CATEGORY_TALK => 'Dhiskusi_Kategori'
+ NS_CATEGORY_TALK => 'Dhiskusi_Kategori',
);
$namespaceAliases = array(
@@ -77,6 +75,7 @@ $messages = array(
'tog-enotifminoredits' => 'Kirimana aku layang e-mail uga yèn ana pangowahan cilik',
'tog-enotifrevealaddr' => 'Kirimana aku layang e-mail ing layang notifikasi',
'tog-shownumberswatching' => 'Tuduhna cacahé pangawas',
+'tog-oldsig' => 'Pratayang tapak asta sing ana:',
'tog-fancysig' => 'Anggepen tapak asta minangka teks wiki (tanpa pranala otomatis)',
'tog-externaleditor' => 'Nganggoa program pangolah tembung jaba (external wordprocessor)',
'tog-externaldiff' => 'Nganggoa program njaba kanggo mirsani prabédan suntingan',
@@ -99,6 +98,13 @@ $messages = array(
'underline-never' => 'Ora',
'underline-default' => 'Miturut konfigurasi panjlajah wèb',
+# Font style option in Special:Preferences
+'editfont-style' => 'Modhèl aksara (font) ing kotak suntingan:',
+'editfont-default' => 'Standar panjelajah wèb',
+'editfont-monospace' => 'Aksara (font) Monospace',
+'editfont-sansserif' => 'Aksara (font) Sans-serif',
+'editfont-serif' => 'Aksara (font) Serif',
+
# Dates
'sunday' => 'Minggu',
'monday' => 'Senèn',
@@ -158,7 +164,7 @@ $messages = array(
'category-media-header' => 'Média ing kategori "$1"',
'category-empty' => "''Kategori iki saiki ora ngandhut artikel utawa média.''",
'hidden-categories' => '{{PLURAL:$1|Kategori sing didelikaké|Kategori sing didelikaké}}',
-'hidden-category-category' => 'Kategori sing didelikaké', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori sing didelikaké',
'category-subcat-count' => '{{PLURAL:$2|Kategori iki namung nduwé subkategori ing ngisor ikit.|Dituduhaké {{PLURAL:$1|subkategori|$1 subkategori}} sing kalebu ing kategori iki saka total $2.}}',
'category-subcat-count-limited' => "Kategori iki ora duwé {{PLURAL:$1|subkategori|$1 subkategori}} ''berikut''.",
'category-article-count' => '{{PLURAL:$2|Kategori iki namung ndarbèni kaca iki.|Dituduhaké {{PLURAL:$1|kaca|$1 kaca-kaca}} sing kalebu ing kategori iki saka gunggungé $2.}}',
@@ -166,6 +172,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kategori iki namung nduwé berkas iki.|Dituduhaké {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kalebu ing kategori iki saka gunggungé $2.}}',
'category-file-count-limited' => 'Kategori iki ndarbèni {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kapacak ing ngisor iki.',
'listingcontinuesabbrev' => 'samb.',
+'index-category' => 'Kaca sing diindhèks',
+'noindex-category' => 'Kaca sing ora diindhèks',
'mainpagetext' => "'''Prangkat empuk wiki wis suksès dipasang.'''",
'mainpagedocfooter' => "Mangga maca [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] kanggo katrangan luwih langkung prakara panggunan prangkat empuk wiki
@@ -174,10 +182,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]",
-'about' => 'Prakara',
-'article' => 'Artikel',
-'newwindow' => '(buka ing jendhéla anyar)',
-'cancel' => 'Batalna',
+'about' => 'Prakara',
+'article' => 'Artikel',
+'newwindow' => '(buka ing jendhéla anyar)',
+'cancel' => 'Batalna',
+'moredotdotdot' => 'Liyané...',
+'mypage' => 'Kacaku',
+'mytalk' => 'Gunemanku',
+'anontalk' => 'Dhiskusi IP puniki',
+'navigation' => 'Pandhu Arah',
+'and' => '&#32;Lan',
+
+# Cologne Blue skin
'qbfind' => 'Golèk',
'qbbrowse' => 'Navigasi',
'qbedit' => 'Sunting',
@@ -185,15 +201,35 @@ $messages = array(
'qbpageinfo' => 'Kontèks kaca',
'qbmyoptions' => 'Opsiku',
'qbspecialpages' => 'Kaca-kaca astaméwa',
-'moredotdotdot' => 'Liyané...',
-'mypage' => 'Kacaku',
-'mytalk' => 'Gunemanku',
-'anontalk' => 'Dhiskusi IP puniki',
-'navigation' => 'Pandhu Arah',
-'and' => '&#32;Lan',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (Pitakonan sing kerep diajokaké)',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Tambah topik',
+'vector-action-delete' => 'Busak',
+'vector-action-move' => 'Pindhahna',
+'vector-action-protect' => 'Reksa',
+'vector-action-undelete' => 'Batalna pambusakan',
+'vector-action-unprotect' => 'Batalna pangreksan',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Pitulung',
+'vector-namespace-image' => 'Berkas',
+'vector-namespace-main' => 'Kaca',
+'vector-namespace-media' => 'Kaca media',
+'vector-namespace-mediawiki' => 'Pesen',
+'vector-namespace-project' => 'Kaca proyèk',
+'vector-namespace-special' => 'Kaca istiméwa',
+'vector-namespace-talk' => 'Dhiskusi',
+'vector-namespace-template' => 'Cithakan',
+'vector-namespace-user' => 'Kaca panganggo',
+'vector-view-create' => 'Gawé',
+'vector-view-edit' => 'Sunting',
+'vector-view-history' => 'Sajarah kaca',
+'vector-view-view' => 'Waca',
+'vector-view-viewsource' => 'Pirsani sumber',
+'actions' => 'Tindakan',
+'namespaces' => 'Ruang jeneng',
+'variants' => 'Varian',
'errorpagetitle' => 'Kasalahan',
'returnto' => 'Bali menyang $1.',
@@ -243,18 +279,22 @@ $messages = array(
'otherlanguages' => 'Basa liya',
'redirectedfrom' => '(Dialihkan dari $1)',
'redirectpagesub' => 'Kaca pangalihan',
-'lastmodifiedat' => 'Kaca iki diowahi pungkasané nalika $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Kaca iki diowahi pungkasané nalika $2, $1.',
'viewcount' => 'Kaca iki wis tau diaksès cacahé ping {{PLURAL:$1|siji|$1}}.',
'protectedpage' => 'Kaca sing direksa',
'jumpto' => 'Langsung menyang:',
'jumptonavigation' => 'navigasi',
'jumptosearch' => 'golèk',
+'view-pool-error' => 'Nyuwun ngapuro, peladèn lagi sibuk wektu iki.
+Kakèhan panganggo sing nyoba mbukak kaca iki.
+Entèni sedhéla sadurungé nyoba ngaksès kaca iki manèh .
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Prakara {{SITENAME}}',
'aboutpage' => 'Project:Prakara',
'copyright' => 'Kabèh tèks kasedyakaké miturut $1.',
-'copyrightpagename' => 'Hak cipta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hak cipta',
'currentevents' => 'Prastawa saiki',
'currentevents-url' => 'Project:Prastawa saiki',
@@ -262,8 +302,6 @@ $messages = array(
'disclaimerpage' => 'Project:Panyangkalan umum',
'edithelp' => 'Pitulung panyuntingan',
'edithelppage' => 'Help:panyuntingan',
-'faq' => 'FAQ (Pitakonan sing kerep diajokaké)',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Isi',
'mainpage' => 'Kaca Utama',
'mainpage-description' => 'Kaca Utama',
@@ -340,10 +378,6 @@ Panyuwunan basis data sing pungkasan iku:
"$1"
saka jroning fungsi "$2".
Basis data ngasilaké kasalahan "$3: $4".',
-'noconnect' => 'Nuwun séwu! Wiki ngalami masalah tèknis lan ora bisa ngubungi database.<br />
-$1',
-'nodb' => 'Ora bisa milih database $1',
-'cachederror' => 'Ing ngisor iki tuladan <em>cache</em> saka kaca sing disuwun, dadi mbokmenawa ora up-to-date.',
'laggedslavemode' => 'Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.',
'readonly' => 'Database dikunci',
'enterlockreason' => 'Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka',
@@ -356,6 +390,8 @@ Yèn dudu iki panyebabé, panjenengan manawa bisa nemokaké kasalahan (''bug'')
'readonly_lag' => 'Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama',
'internalerror' => 'Kasalahan internal',
'internalerror_info' => 'Kaluputan internal: $1',
+'fileappenderrorread' => 'Ora bisa maca "$1" nalika nambahi',
+'fileappenderror' => 'Ora bisa nglebokaké "$1" menyang "$2".',
'filecopyerror' => 'Ora bisa nulad berkas "$1" menyang "$2".',
'filerenameerror' => 'Ora bisa ngowahi saka "$1" dadi "$2".',
'filedeleteerror' => 'Ora bisa mbusak berkas "$1".',
@@ -365,7 +401,8 @@ Yèn dudu iki panyebabé, panjenengan manawa bisa nemokaké kasalahan (''bug'')
'unexpected' => 'Biji (\'\'nilai\'\') ing njabaning jangkauan: "$1"="$2".',
'formerror' => 'Kasalahan: Ora bisa ngirimaké formulir',
'badarticleerror' => 'Pratingkah iku ora bisa katindhakaké ing kaca iki.',
-'cannotdelete' => 'Ora bisa mbusak kaca, gambar utawa berkas sing disuwun.',
+'cannotdelete' => 'Kaca utawa berkas "$1" ora bisa dibusak.
+Manawa wis dibusak déning wong liya.',
'badtitle' => 'Judhulé ora sah',
'badtitletext' => 'Judhul kaca sing panjenengan ora bisa dituduhaké, kosong, utawa dadi judhul antar-basa utawa judhul antar-wiki. Iku bisa uga ana sawijining utawa luwih aksara sing ora bisa didadèkaké judhul.',
'perfcached' => 'Data iki dijupuk saka <em>cache</em> lan mbokmenawa dudu data pungkasan:',
@@ -398,7 +435,6 @@ Alesané yaiku ''$2''.",
'virus-unknownscanner' => 'Antivirus ora ditepungi:',
# Login and logout pages
-'logouttitle' => 'Metu log panganggo',
'logouttext' => "'''Panjenengan wis metu (oncat) saka cathetan sistem.'''
Panjenengan bisa migunakaké {{SITENAME}} kanthi anonim, utawa panjenengan bisa mlebu manèh .
@@ -406,7 +442,6 @@ Supaya dimangertèni bilih ana kaca sing isih nganggo panjenengan kacathet ing s
'welcomecreation' => '== Sugeng rawuh, $1! ==
Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.',
-'loginpagetitle' => 'Mlebu log panganggo',
'yourname' => 'Asma pangangeman',
'yourpassword' => 'tembung sandhi',
'yourpasswordagain' => 'Balènana tembung sandhi',
@@ -417,6 +452,7 @@ Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|pr
'nav-login-createaccount' => 'Log mlebu / nggawé rékening (akun)',
'loginprompt' => "Panjenengan kudu ngaktifaké ''cookies'' supaya bisa mlebu (log in) ing {{SITENAME}}.",
'userlogin' => 'Mlebu log / gawé rékening (akun)',
+'userloginnocreate' => 'Mlebu log',
'logout' => 'Oncat',
'userlogout' => 'Metu log',
'notloggedin' => 'Durung mlebu log',
@@ -429,29 +465,8 @@ Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|pr
'badretype' => 'Sandhi panjenengan ora gathuk',
'userexists' => 'Asma panganggo sing panjenengan pilih wis kanggo.
Mangga pilih asma liyané.',
-'youremail' => 'Layang élèktronik (E-mail):',
-'username' => 'Asma panganggo:',
-'uid' => 'ID panganggo:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|klompok|klompok-klompok}}:',
-'yourrealname' => 'Asma sajatiné :',
-'yourlanguage' => 'Basa sing dianggo:',
-'yourvariant' => 'Varian basa',
-'yournick' => 'Asma sesinglon/samaran (kagem tapak asta):',
-'badsig' => 'Tapak astanipun klèntu; cèk rambu HTML.',
-'badsiglength' => 'Tapak asta panjenengan kedawan.
-Aja luwih saka {{PLURAL:$1|karakter|karakter}}.',
-'yourgender' => 'Jinis kelamin:',
-'gender-unknown' => 'Ora dinyatakaké',
-'gender-male' => 'Lanang',
-'gender-female' => 'Wadon',
-'prefs-help-gender' => 'Opsional: dipigunakaké kanggo panyebutan jinis kelamin sing bener déning piranti alus.
-Informasi iki bakal kabuka kanggo publik.',
-'email' => 'Layang élèktronik (E-mail)',
-'prefs-help-realname' => '* <strong>Asma asli</strong> (ora wajib): menawa panjenengan maringi, asma asli panjenengan bakal digunakaké kanggo mènèhi akrédhitasi kanggo kasil karya tulis panjenengan.',
'loginerror' => 'Kasalahan mlebu log',
-'prefs-help-email' => 'Layang-e (ora wajib), nanging sawanci-wanci panjenengan lali tembung sandi, bisa dikirimi liwat layang-e kasebut.
-Panjenengan uga bisa milih supaya wong liya ngubungi panjenengan liwat jeneng panganggo utawa kaca wicara panjenengan tanpa perlu nuduhaké idhèntitas panjenengan.',
-'prefs-help-email-required' => 'Alamat layang-e dibutuhaké.',
+'createaccounterror' => 'Ora bisa nyipta akun: $1',
'nocookiesnew' => "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
'nocookieslogin' => "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
'noname' => 'Asma panganggo sing panjenengan pilih ora sah.',
@@ -462,15 +477,18 @@ Jeneng panganggo iku mbédakaké kapitalisasi.
Coba dipriksa manèh pasang aksarané, utawa [[Special:UserLogin/signup|gawé akun anyar]].',
'nosuchusershort' => 'Ora ana panganggo mawa asma "$1". Coba dipriksa manèh pasang aksarané (éjaané).',
'nouserspecified' => 'Panjenengan kudu milih asma panganggo.',
+'login-userblocked' => 'Panganggé punika dipunblok. Login boten dipunidinaken',
'wrongpassword' => 'Tembung sandhi sing dipilih salah. Mangga coba manèh.',
'wrongpasswordempty' => 'Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.',
-'passwordtooshort' => 'Tembung sandi panjenengan ora absah utawa kecendhaken. Tembung sandi kudu katulis saka paling ora $1 aksara lan kudu béda saka jeneng panganggo panjenengan.',
+'passwordtooshort' => 'Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.',
+'password-name-match' => 'Tembung sandi panjenengan kudu béda karo jeneng panganggo panjenengan.',
'mailmypassword' => 'Kirim tembung sandhi anyar',
'passwordremindertitle' => 'Pèngetan tembung sandhi saka {{SITENAME}}',
'passwordremindertext' => 'Ana wong (mbokmanawa panjenengan dhéwé, saka alamat IP $1) nyuwun supaya dikirimi tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandi sawetara kanggo panganggo "$2" wis digawé lan saiki "$3". Yèn panjenengan pancèn nggayuh iki, mangga énggal mlebu log lan ngganti tembung sandi saiki.
Tembung sandi sawetara mau bakal kadaluwarsa ing {{PLURAL:$5|sadina|$5 dina}}.
Yèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sandi panjenengan, lan ora kepéngin ngowahi, panjenengan ora usah nggubris pesen iki lan bisa tetep nganggo tembung sandi lawas.',
'noemail' => 'Ora ana alamat layang e-mail sing kacathet kanggo panganggo "$1".',
+'noemailcreate' => 'Panjenengan kudu maringi alamat e-mail sing absah',
'passwordsent' => 'Tembung sandhi anyar wis dikirim menyang alamat layang e-mail panjenengan sing wis didaftar kanggo "$1". Mangga mlebu log manèh sawisé nampa e-mail iku.',
'blocked-mailpassword' => "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
'eauthentsent' => 'Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik panjenengan. Panjenengan kudu nuruti instruksi sajroning layang iku kanggo ndhedhes yèn alamat iku bener kagungané panjenengan. {{SITENAME}} ora bakal ngaktifaké fitur layang élèktronik yèn langkah iki durung dilakoni.',
@@ -490,9 +508,11 @@ Amarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo s
'createaccount-text' => 'Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng "$2" lan tembung sandi "$3". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.
Panjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.',
+'usernamehasherror' => 'Jeneng panganggo ora bisa ngandhut tandha pager',
'login-throttled' => 'Panjenengan wis kakèhan njajal mlebu log.
Tulung nunggu dhisik sadurungé njajal manèh.',
'loginlanguagelabel' => 'Basa: $1',
+'suspicious-userlogout' => 'Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.',
# Password reset dialog
'resetpass' => 'Ganti tembung sandi',
@@ -504,10 +524,10 @@ Tulung nunggu dhisik sadurungé njajal manèh.',
'retypenew' => 'Ketik ulang tembung sandi anyar:',
'resetpass_submit' => 'Nata tembung sandhi lan mlebu log',
'resetpass_success' => 'Tembung sandhi panjenengan wis suksès diowahi! Saiki mrosès mlebu log panjenengan...',
-'resetpass_bad_temporary' => 'Tembung sandhi sementara salah. Panjenengan mbokmenawa tau ngganti tembung sandhi panjenengan utawa tau nyuwun tembung sandhi anyar.',
'resetpass_forbidden' => 'Tembung sandhi ora bisa diganti',
'resetpass-no-info' => 'Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.',
'resetpass-submit-loggedin' => 'Ganti tembung sandi',
+'resetpass-submit-cancel' => 'Batal',
'resetpass-wrong-oldpass' => 'Tembung sandi ora sah.
Panjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi sauntara sing anyar.',
'resetpass-temp-password' => 'Tembung sandi sauntara:',
@@ -584,7 +604,6 @@ ID pamblokiran panjenengan iku #$5 lan alamat IP panjenengan iku $3. Tulung sert
'blockededitsource' => "Tèks '''suntingan panjenengan''' tumrap ing '''$1''' dituduhaké ing ngisor iki:",
'whitelistedittitle' => 'Prelu log mlebu kanggo nyunting',
'whitelistedittext' => 'Panjenengan kudu $1 supaya bisa nyunting artikel.',
-'confirmedittitle' => 'Konfirmasi layang e-mail diprelokaké supaya panjenengan pareng nglakoni panyuntingan',
'confirmedittext' => 'Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]',
'nosuchsectiontitle' => 'Bagéan ora ditemokaké',
'nosuchsectiontext' => 'Panjenengan nyoba nyunting sawijining bagéan sing ora ana.
@@ -604,8 +623,10 @@ Yèn ora sengaja tekan kéné, bisa ngeklik pencètan '''back''' waé ing panjla
'noarticletext' => 'Saiki ora ana tèks ing kaca iki. Panjenengan bisa [[Special:Search/{{PAGENAME}}|nglakoni panggolèkan kanggo judhul iki kaca iki]] ing kaca-kaca liyané, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log kagandhèng],
utawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyunting kaca iki]</span>.',
'userpage-userdoesnotexist' => 'Akun utawa rékening panganggo "$1" ora kadaftar.',
+'userpage-userdoesnotexist-view' => 'Panganggo "$1" ora kadhaptar.',
'clearyourcache' => "'''Cathetan:''' Sawisé nyimpen préférènsi, panjenengan prelu ngresiki <em>cache</em> panjlajah wèb panjenengan kanggo mirsani pangowahan. '''Mozilla / Firefox / Safari:''' pencèt ''Ctrl-Shift-R'' (''Cmd-Shift-R'' pada Apple Mac); '''IE:''' tekan ''Ctrl-F5''; '''Konqueror:''': pencèt ''F5''; '''Opera''' resikana <em>cache</em> miturut menu ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Tips:''' Gunakna tombol 'Deleng pratilik' kanggo ngetès CSS/JS anyar panjenengan sadurungé disimpen.",
+'usercssyoucanpreview' => "'''Tips:''' Gunakna tombol 'Deleng pratilik' kanggo ngetès CSS anyar panjenengan sadurungé disimpen.",
+'userjsyoucanpreview' => "'''Tips:''' Gunakna tombol 'Deleng pratilik' kanggo ngetès JS anyar panjenengan sadurungé disimpen.",
'usercsspreview' => "'''Pèngeten yèn panjenengan namung mirsani pratilik CSS panjenengan.''''
'''Pratilik iku durung kasimpen!'''",
'userjspreview' => "'''Pèngeten yèn sing panjenengan pirsani namung pratilik JavaScript panjenengan, lan menawa pratilik iku dèrèng kasimpen!'''",
@@ -643,13 +664,16 @@ Panjenengan uga janji menawa apa-apa sing katulis ing kéné, iku karyané panje
'readonlywarning' => "'''PÈNGET: Basis data lagi dikunci amerga ana pangopènan, dadi saiki panjenengan ora bisa nyimpen kasil panyuntingan panjenengan. Panjenengan mbokmenawa prelu mindhahaké kasil panyuntingan panjenengan iki menyang panggonan liya kanggo disimpen bésuk.'''
Pangurus sing ngunci basis data mènèhi katrangan kaya mengkéné: $1",
-'protectedpagewarning' => "'''PÈNGET: Kaca iki wis dikunci dadi namung panganggo sing nduwé hak aksès pangurus baé sing bisa nyunting.'''",
-'semiprotectedpagewarning' => "'''Cathetan:''' Kaca iki lagi direksa, dadi namung panganggo kadaftar sing bisa nyunting.",
+'protectedpagewarning' => "'''PÈNGET: Kaca iki wis dikunci dadi namung panganggo sing nduwé hak aksès pangurus baé sing bisa nyunting.'''
+Entri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+'semiprotectedpagewarning' => "'''Cathetan:''' Kaca iki lagi pinuju direksa, dadi namung panganggo kadaftar sing bisa nyunting.
+Entri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
'cascadeprotectedwarning' => "'''PÈNGET:''' Kaca iki wis dikunci dadi namung panganggo mawa hak aksès pangurus waé sing bisa nyunting, amerga kalebu {{PLURAL:$1|kaca|kaca-kaca}} ing ngisor iki sing wis direksa mawa opsi 'pangreksan runtun' diaktifaké:",
-'titleprotectedwarning' => "'''Pènget: Kaca iki wis dikunci saéngga [[Special:ListGroupRights|hak mligi]] dibutuhaké kanggo gawéné.'''",
-'templatesused' => 'Cithakan kang digunakaké ing kaca iki:',
-'templatesusedpreview' => 'Cithakan kang digunakaké ing pratilik iki:',
-'templatesusedsection' => 'Cithakan kang digunakaké ing bagian iki:',
+'titleprotectedwarning' => "'''Pènget: Kaca iki wis dikunci saéngga perlu [[Special:ListGroupRights|hak mligi]] kanggo gawéné.'''
+Entri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+'templatesused' => '{{PLURAL:$1|Cithakan|Cithakan}} sing dienggo ing kaca iki:',
+'templatesusedpreview' => '{{PLURAL:$1|Cithakan|Cithakan-cithakan}} sing dienggo ing pratilik iki:',
+'templatesusedsection' => '{{PLURAL:$1|Cithakan}} sing dienggo ding bagian iki:',
'template-protected' => '(direksa)',
'template-semiprotected' => '(semi-pangreksan)',
'hiddencategories' => 'Kaca iki sawijining anggota saka {{PLURAL:$1|1 kategori ndelik|$1 kategori-kategori ndelik}}:',
@@ -657,15 +681,17 @@ Pangurus sing ngunci basis data mènèhi katrangan kaya mengkéné: $1",
'nocreatetitle' => 'Panggawéan kaca anyar diwatesi',
'nocreatetext' => 'Situs iki ngwatesi kemampuan kanggo nggawé kaca anyar. Panjenengan bisa bali lan nyunting kaca sing wis ana, utawa mangga [[Special:UserLogin|mlebua log utawa ndaftar]]',
'nocreate-loggedin' => 'Panjenengan ora kagungan idin kanggo nggawé kaca anyar.',
+'sectioneditnotsupported-text' => 'Panyuntingan sapérangan ora disengkuyung ing kaca suntingan iki.',
'permissionserrors' => 'Kaluputan Idin Aksès',
'permissionserrorstext' => 'Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:',
'permissionserrorstext-withaction' => 'Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:',
-'recreate-deleted-warn' => "'''Pènget: Panjenengan nggawé manèh sawijining kaca sing wis tau dibusak.''',
+'recreate-moveddeleted-warn' => "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''
-Mangga digagas manèh apa suntingan panjenengan iki layak ora.
-Ing ngisor iki kapacak log pambusakan saka kaca iki:",
-'deleted-notice' => 'Kaca iki wis dibusak. Minangka réferènsi, mangga iki log pambusakan kaca iki.',
-'deletelog-fulllog' => 'Tudhuhna kabèh log',
+Mangga digagas manèh apa pantes nerusaké nyunting kaca iki.
+Ing ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
+'moveddeleted-notice' => 'Kaca iki wis dibusak.
+Log pambusakan lan pamindhahan kaca iki disadiyakaké ing ngisor iki minangka réferènsi.',
+'log-fulllog' => 'Pirsani kabèh log',
'edit-hook-aborted' => 'Suntingan dibatalaké déning kait parser
Tanpa ana katrangan.',
'edit-gone-missing' => 'Ora bisa nganyari kaca.
@@ -706,7 +732,7 @@ Alesané miturut $3 yaiku ''$2''",
'currentrev' => 'Revisi saiki',
'currentrev-asof' => 'Révisi anyar dhéwé ing tanggal $1',
'revisionasof' => 'Revisi per $1',
-'revision-info' => 'Revisi per $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisi per $1; $2',
'previousrevision' => '←Revisi sadurungé',
'nextrevision' => 'Revisi sabanjuré→',
'currentrevisionlink' => 'Revisi saiki',
@@ -717,7 +743,6 @@ Alesané miturut $3 yaiku ''$2''",
'page_last' => 'pungkasan',
'histlegend' => "Pilihen rong tombol radhio banjur pencèten tombol ''bandhingna'' kanggo mbandhingaké versi. Klik sawijining tanggal kanggo ndeleng versi kaca ing tanggal iku.<br />(skr) = prabédan karo vèrsi saiki, (akir) = prabédan karo vèrsi sadurungé, '''s''' = suntingan sithik, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkesan otomatis",
'history-fieldset-title' => 'Njlajah sajarah vèrsi sadhurungé',
-'deletedrev' => '[dibusak]',
'histfirst' => 'Suwé dhéwé',
'histlast' => 'Anyar dhéwé',
'historysize' => '($1 {{PLURAL:$1|bita|bita}})',
@@ -726,18 +751,32 @@ Alesané miturut $3 yaiku ''$2''",
# Revision feed
'history-feed-title' => 'Riwayat revisi',
'history-feed-description' => 'Riwayat revisi kaca iki ing wiki',
-'history-feed-item-nocomment' => '$1 ing $2', # user at time
+'history-feed-item-nocomment' => '$1 ing $2',
'history-feed-empty' => 'Kaca sing disuwun ora ditemokaké. Mbokmenawa wis dibusak saka wiki, utawa diwènèhi jeneng anyar. Coba [[Special:Search|golèka ing wiki]] kanggo kaca anyar sing rélevan.',
# Revision deletion
'rev-deleted-comment' => '(komentar dibusak)',
'rev-deleted-user' => '(jeneng panganggo dibusak)',
'rev-deleted-event' => '(isi dibusak)',
-'rev-deleted-text-permission' => 'Riwayat revisi kaca iki wis dibusak saka arsip umum.
-Detil mbokmenawa kasedyakaké ing [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log pambusakan].',
-'rev-deleted-text-view' => 'Riwayat revisi kaca iki wis dibusak saka arsip umum.
-Minangka sawijning pangurus situs, panjenengan bisa mirsani; detil mbokmenawa kasedyakaké ing [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log pambusakan].',
+'rev-deleted-text-permission' => "Révisi kaca iki wis '''dibusak'''.
+Princèné mbokmanawa kasedyakaké ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
+'rev-deleted-text-unhide' => "Révisi kaca iki wis '''dibusak''',
+Princèné mbokmanawa ana ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].
+Minangka pangurus panjenengan isih bisa [$1 mirsani révisi iki] yèn panjenengan arep nerusaké.",
+'rev-suppressed-text-unhide' => 'Révisi kaca iki wis "dipenet".
+Princèné mbokmanawa ana ing [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penetan].
+Minangka pangurus, panjenengan isih bisa [$1 mirsani révisi iki] yèn kersa.',
+'rev-deleted-text-view' => "Révisi kaca iki wis '''dibusak'''.
+Minangka sawijning pangurus, panjenengan bisa mirsani; princèné mbokmanawa kasedyakaké ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
+'rev-suppressed-text-view' => 'Révisi kaca iki wis "dipenet".
+Minangka pangurus, panjenengan isih bisa mirsani; princèné mbokmanawa isih ana ing [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penetan].',
+'rev-deleted-no-diff' => "Panjenengan ora bisa mirsani prabédan amarga siji saka révisiné wis '''dibusak'''.
+Pricèné mbokmanawa isih ana ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
+'rev-deleted-unhide-diff' => "Salah siji révisi ing tampilan prabédan iki wis '''dibusak'''.
+Princèné mbokmanawa ana ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].
+Minangka pangurus, panjenengan isih bisa [$1 mirsani prabédan iki] yèn panjenengan kersa.",
'rev-delundel' => 'tuduhna/delikna',
+'rev-showdeleted' => 'tuduhna',
'revisiondelete' => 'Busak/batal busak revisi',
'revdelete-nooldid-title' => 'Target revisi ora ditemokaké',
'revdelete-nooldid-text' => 'Panjenengan durung mènèhi target revisi kanggo nglakoni fungsi iki.',
@@ -745,29 +784,38 @@ Minangka sawijning pangurus situs, panjenengan bisa mirsani; detil mbokmenawa ka
'revdelete-nologtype-text' => 'Panjenengan ora mènèhi tipe log kanggo netepaké tindakan iki.',
'revdelete-nologid-title' => 'Èntri log ora absah.',
'revdelete-nologid-text' => 'Panjenengan manawa ora nyebutaké sawijining log prastawa targèt kanggo nglakokaké fungsi iki utawa èntri sing dimaksud ora ana.',
+'revdelete-no-file' => 'Berkas sing dituju ora ana.',
+'revdelete-show-file-confirm' => 'Apa panjenengan yakin arep mirsani révisi sing wis kabusak saka berkas "<nowiki>$1</nowiki>" ing $2, jam $3?',
+'revdelete-show-file-submit' => 'Ya',
'revdelete-selected' => "'''{{PLURAL:$2|Revisi kapilih|Revisi kapilih}} dari '''$1''''''",
'logdelete-selected' => "'''{{PLURAL:$1|Log kapilih|Log kapilih}} kanggo:'''",
-'revdelete-text' => "'''Revisi lan tindhakan sing wis kabusak bakal tetep muncul ing kaca versi sadurungé, nanging tèks iki ora bisa diaksès minangka umum.'''
-
-Pengurus liyané bakal tetep bisa ngaksès isi sing kadhelikaké iku lan bisa mbatalaké pambusakan ngliwati antarmuka sing padha, kejaba yèn ana pawatesan liyané sing digawé déning operator situs",
+'revdelete-text' => "'''Revisi lan tindhakan sing wis kabusak bakal tetep muncul ing kaca versi sadurungé lan log, nanging bagéyan isiné ora bisa diaksès déning publik.'''
+Pangurus {{SITENAME}} liyané bakal tetep bisa ngaksès isi sing kadhelikaké iku lan bisa mbatalaké pambusakan ngliwati antarmuka sing padha, kajaba ana pawatesan liya saka operator situs.",
'revdelete-suppress-text' => "Pandhelikan révisi '''mung''' bisa dipigunakaké kanggo kasus ing ngisor:
* Informasi pribadi sing kurang pantes
*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lan sapanunggalané.''",
'revdelete-legend' => 'Atur watesan:',
'revdelete-hide-text' => 'Dhelikna tèks revisi',
+'revdelete-hide-image' => 'Dhelikna isi berkas',
'revdelete-hide-name' => 'Dhelikna tindhakan lan targèt',
'revdelete-hide-comment' => 'Tudhuhna/dhelikan ringkesan suntingan',
'revdelete-hide-user' => 'Dhelikan jeneng panganggo/IP penyunting',
'revdelete-hide-restricted' => 'Uga dhelikna data saka pangurus lan panganggo liyané',
+'revdelete-radio-same' => '(Aja diowahi)',
+'revdelete-radio-set' => 'Ya',
+'revdelete-radio-unset' => 'Ora',
'revdelete-suppress' => 'Uga dhelikan saka pangurus',
-'revdelete-hide-image' => 'Dhelikna isi berkas',
'revdelete-unsuppress' => 'Busak watesan ing revisi sing dibalèkaké',
'revdelete-log' => 'Alesan:',
-'revdelete-submit' => 'Trapna ing revisi kapilih',
+'revdelete-submit' => 'Trapna ing {{PLURAL:$1|révisi|révisi}} kapilih',
'revdelete-logentry' => 'owahna tampilan revisi kanggo [[$1]]',
'logdelete-logentry' => 'owahna aturan pandhelikan saka [[$1]]',
'revdelete-success' => 'Aturan pandhelikan revisi bisa kasil ditrapaké.',
+'revdelete-failure' => "'''Mode tampilan révisi ora bisa disèt:'''
+$1",
'logdelete-success' => 'Aturan pandhelikan tindhakan bisa kasil ditrapaké.',
+'logdelete-failure' => "'''Aturan pandhelikan ora bisa disèt:'''
+$1",
'revdel-restore' => 'Ngowahi visiblitas (pangatonan)',
'pagehist' => 'Sajarah kaca',
'deletedhist' => 'Sajarah sing dibusak',
@@ -780,6 +828,20 @@ Pengurus liyané bakal tetep bisa ngaksès isi sing kadhelikaké iku lan bisa mb
'revdelete-unhid' => 'buka pandelikan $1',
'revdelete-log-message' => '$1 kanggo $2 {{PLURAL:$2|révisi|révisi}}',
'logdelete-log-message' => '$1 kanggo $2 {{PLURAL:$2|prastawa|prastawa}}',
+'revdelete-hide-current' => 'Gagal ndhelikaké révisi tanggal $2, $1: iki arupa révisi paling anyar.
+Révisi iki ora bisa didhelikaké.',
+'revdelete-show-no-access' => 'Gagal nampilaké révisi tanggal $1, jam $2: révisi iki wis ditandhani "kawates".
+Panjenengan ora nduwèni aksès menyang révisi iki.',
+'revdelete-modify-no-access' => 'Gagal ngowahi révisi tanggal $1, jam $2: révisi iki wis ditandhani "kawates".
+Panjenengan ora nduwèni aksès menyang révisi iki.',
+'revdelete-modify-missing' => 'Gagal ngowahi révisi ID $1: révisi iki ilang saka basis data!',
+'revdelete-no-change' => "'''Pènget:''' révisi tanggal $1, jam $2 wis nduwèni aturan pandhelikan kasebut.",
+'revdelete-concurrent-change' => 'Gagal ngowahi révisi tanggal $1, jam $2: statusé mbokmanawa wis diowahi déning panganggo liya bebarengan karo panjenengan.
+Mangga priksa cathetan log.',
+'revdelete-only-restricted' => 'Panjenengan ora bisa ndhelikaké révisi-révisi iki saka pangurus tanpa milih uga salah siji opsi pandhelikan liyané.',
+'revdelete-otherreason' => 'Alesan liya/tambahan:',
+'revdelete-reasonotherlist' => 'Alesan liya',
+'revdelete-edit-reasonlist' => 'Sunting alesan pambusakan',
# Suppression log
'suppressionlog' => "Log barang-barang sing didelikaké (''oversight'')",
@@ -816,68 +878,13 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'mergelogpagetext' => 'Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.',
# Diffs
-'history-title' => 'Sajarah revisi saka "$1"',
-'difference' => '(Prabédan antarrevisi)',
-'lineno' => 'Larikan $1:',
-'compareselectedversions' => 'Bandhingna vèrsi kapilih',
-'visualcomparison' => 'Prabandhingan visual',
-'wikicodecomparison' => 'Prabandhingan tèks wiki',
-'editundo' => 'batalna',
-'diff-multi' => '({{PLURAL:$1|Sawiji|$1}} revisi antara sing ora dituduhaké.)',
-'diff-movedto' => 'dialihaké menyang $1',
-'diff-styleadded' => '$1 gaya ditambahaké',
-'diff-added' => '$1 ditambahaké',
-'diff-changedto' => 'diowahi dadi $1',
-'diff-movedoutof' => 'dipindahaké saka $1',
-'diff-styleremoved' => '$1 gaya dibusak',
-'diff-removed' => '$1 dibusak',
-'diff-changedfrom' => 'diowahi saka $1',
-'diff-src' => 'sumber',
-'diff-withdestination' => 'kanthi tujuan $1',
-'diff-with' => '&#32;karo $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;lan $1 $2',
-'diff-width' => 'amba',
-'diff-height' => 'dhuwur',
-'diff-p' => "sawijining '''paragraf'''",
-'diff-blockquote' => "sawijining '''sitat'''",
-'diff-h1' => "sawijining '''judhul bagéyan (tataran 1)'''",
-'diff-h2' => "sawijining '''judhul bagéyan (tataran 2)'''",
-'diff-h3' => "sawijining '''judhul bagéyan (tataran 3)'''",
-'diff-h4' => "sawijining '''judhul bagéyan (tataran 4)'''",
-'diff-h5' => "sawijining '''judhul bagéyan (tataran 5)'''",
-'diff-pre' => "sawijining '''blok kanthi praformat'''",
-'diff-div' => "sawijining '''bagéyan'''",
-'diff-ul' => "sawijining '''dhaftar ora kaurut'''",
-'diff-ol' => "sawijining '''dhaftar kaurut'''",
-'diff-li' => "sawijining '''dhaftar butir'''",
-'diff-table' => "sawijining '''tabel'''",
-'diff-tbody' => "sawijining '''isi tabel'''",
-'diff-tr' => "sawijining '''larikan'''",
-'diff-td' => "sawijining '''sèl'''",
-'diff-th' => "sawijining '''tajuk'''",
-'diff-br' => "sawijining '''jeda'''",
-'diff-hr' => "sawijining '''mistar dhatar'''",
-'diff-code' => "sawijining '''blok kodhe komputer'''",
-'diff-dl' => "sawijining '''dhaftar dhéfinisi'''",
-'diff-dt' => "sawijining '''dhéfinisi istilah'''",
-'diff-dd' => "sawijining '''dhéfinisi'''",
-'diff-input' => "sawijining '''lebonan'''",
-'diff-form' => "sawijining '''formulir'''",
-'diff-img' => "sawijining '''gambar'''",
-'diff-span' => "sawijining '''rentang'''",
-'diff-a' => "sawijining '''pranala'''",
-'diff-i' => "'''italik'''",
-'diff-b' => "'''kandel'''",
-'diff-strong' => "'''kuwat'''",
-'diff-em' => "'''panekanan'''",
-'diff-font' => "'''aksara'''",
-'diff-big' => "'''gedhé'''",
-'diff-del' => "'''dibusak'''",
-'diff-tt' => "'''amba maton'''",
-'diff-sub' => "'''tik ngisor'''",
-'diff-sup' => "'''tik ndhuwur'''",
-'diff-strike' => "'''corèk'''",
+'history-title' => 'Sajarah revisi saka "$1"',
+'difference' => '(Prabédan antarrevisi)',
+'lineno' => 'Larikan $1:',
+'compareselectedversions' => 'Bandhingna vèrsi kapilih',
+'showhideselectedversions' => 'Tampilaké/dhelikaké révisi kapilih',
+'editundo' => 'batalna',
+'diff-multi' => '({{PLURAL:$1|Sawiji|$1}} revisi antara sing ora dituduhaké.)',
# Search results
'searchresults' => 'Kasil panggolèkan',
@@ -885,28 +892,25 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'searchresulttext' => 'Kanggo informasi sabanjuré ngenani panggolèkan ing {{SITENAME}}, mangga mirsani [[{{MediaWiki:Helppage}}|kaca pitulung]].',
'searchsubtitle' => 'Panjenengan nggolèki \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kabèh kaca sing diwiwiti kanthi "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kabèh kaca sing kagandhèng karo/menyang "$1"]])',
'searchsubtitleinvalid' => "Panjenengan nggolèki '''$1'''",
-'noexactmatch' => "'''Ora ana kaca mawa irah-irahan utawa judhul \"\$1\".''' Panjenengan bisa [[:\$1|nggawé kaca iki]].",
-'noexactmatch-nocreate' => "'''Ora ana kaca mawa irah-irahan utawa judhul \"\$1\".'''",
'toomanymatches' => "Olèhé panjenengan golèk ngasilaké kakèhan pituwas, mangga nglebokaké ''query'' liyané",
'titlematches' => 'Irah-irahan artikel sing cocog',
'notitlematches' => 'Ora ana irah-irahan artikel sing cocog',
'textmatches' => 'Tèks artikel sing cocog',
'notextmatches' => 'Ora ana tèks kaca sing cocog',
-'prevn' => '$1 sadurungé',
-'nextn' => '$1 sabanjuré',
+'prevn' => '{{PLURAL:$1|$1}} sadurungé',
+'nextn' => '{{PLURAL:$1|$1}} sabanjuré',
'prevn-title' => '$1 {{PLURAL:$1|asil|asil}} sadurungé',
'nextn-title' => '$1 {{PLURAL:$1|asil|asil}} sabanjuré',
'shown-title' => 'Tampilaké $1 {{PLURAL:$1|asil|asil}} saben kaca',
-'viewprevnext' => 'Deleng ($1) ($2) ($3)',
+'viewprevnext' => 'Deleng ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Pilihan panggolèkan',
'searchmenu-exists' => "'''Ana kaca kanthi jeneng \"[[\$1]]\" ing wiki iki'''",
'searchmenu-new' => "'''Gawé kaca \"[[:\$1]]\" ing wiki iki!'''",
'searchhelp-url' => 'Help:Isi',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tlusuri kaca-kaca kanthi tembung-wiwitan iki]]',
-'searchprofile-articles' => 'Kaca-kaca isi',
-'searchprofile-articles-and-proj' => 'Kaca isi & kaca proyèk',
-'searchprofile-project' => 'Kaca proyèk',
-'searchprofile-images' => 'Berkas',
+'searchprofile-articles' => 'Kaca isi',
+'searchprofile-project' => 'Kaca pitulung lan proyèk',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Kabèh',
'searchprofile-advanced' => 'Tataran luwih dhuwur/maju',
'searchprofile-articles-tooltip' => 'Panggolèkan ing $1',
@@ -914,8 +918,6 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'searchprofile-images-tooltip' => 'Panggolèkan berkas',
'searchprofile-everything-tooltip' => 'Panggolèkan kabèh isi (klebu kaca-kaca wicara)',
'searchprofile-advanced-tooltip' => "Panggolèkan ing bilik jeneng biasa (''custom'')",
-'prefs-search-nsdefault' => "Panggolèkan migunakaké standar asli (''default''):",
-'prefs-search-nscustom' => "Panggolèkan bilikjeneng biasa (''custom''):",
'search-result-size' => '$1 ({{PLURAL:$2|1 tembung|$2 tembung}})',
'search-result-score' => 'Relevansi: $1%',
'search-redirect' => '(pangalihan $1)',
@@ -928,11 +930,12 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'search-mwsuggest-disabled' => 'ora ana sugèsti',
'search-relatedarticle' => 'Kagandhèng',
'mwsuggest-disable' => 'Patènana sugèsti AJAX',
+'searcheverything-enable' => 'Golèki ing kabèh bilik-jeneng',
'searchrelated' => 'kagandhèng',
'searchall' => 'kabèh',
'showingresults' => "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #<strong>$2</strong>.",
'showingresultsnum' => "Ing ngisor iki dituduhaké {{PLURAL:$3|'''1''' kasil|'''$3''' kasil}}, wiwitané saka #<strong>$2</strong>.",
-'showingresultstotal' => "Ing ngisor iki kapacak pituwas {{PLURAL:$4|'''$1'''|'''$1 - $2'''}} saka '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Asil '''$1''' saka '''$3'''|Asil '''$1 - $2''' saka '''$3'''}} kanggo '''$4'''",
'nonefound' => "'''Cathetan''': Namung sawetara bilik nama sing digolèki sacara baku. Coba seselana mawa awalan ''all:'' kanggo golèk kabèh isi (kalebu kaca dhiskusi, cithakan lsp.), utawa nganggo bilik nama sing dipèngèni minangka préfiks.",
'search-nonefound' => "Ora ana kasil sing cocog karo pitakonan (''query'').",
'powersearch' => 'Golèk (ing tataran sing luwih dhuwur/maju)',
@@ -940,94 +943,132 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'powersearch-ns' => 'Panggolèkan ing ruang jeneng:',
'powersearch-redir' => 'Pratélan pangalihan',
'powersearch-field' => 'Nggolèki',
+'powersearch-togglelabel' => 'Pilih:',
+'powersearch-toggleall' => 'Kabèh',
+'powersearch-togglenone' => 'Ora ana',
'search-external' => 'Panggolèkan èkstèrnal',
'searchdisabled' => 'Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.',
+# Quickbar
+'qbsettings' => 'Pengaturan bar sidhatan',
+'qbsettings-none' => 'Ora ana',
+'qbsettings-fixedleft' => 'Tetep sisih kiwa',
+'qbsettings-fixedright' => 'Tetep sisih tengen',
+'qbsettings-floatingleft' => 'Ngambang sisih kiwa',
+'qbsettings-floatingright' => 'Ngambang sisih tengen',
+
# Preferences page
-'preferences' => 'Preferensi (pilihan)',
-'mypreferences' => 'Préferènsiku',
-'prefs-edits' => 'Gunggungé suntingan:',
-'prefsnologin' => 'Durung mlebu log',
-'prefsnologintext' => 'Panjenengan kudu <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}}| mlebu log]</span> kanggo ngowahin préferènsi njenengan.',
-'prefsreset' => 'Préferènsi wis dibalèkaké menyang konfigurasi baku.',
-'qbsettings' => 'Pengaturan bar sidhatan',
-'qbsettings-none' => 'Ora ana',
-'qbsettings-fixedleft' => 'Tetep sisih kiwa',
-'qbsettings-fixedright' => 'Tetep sisih tengen',
-'qbsettings-floatingleft' => 'Ngambang sisih kiwa',
-'qbsettings-floatingright' => 'Ngambang sisih tengen',
-'changepassword' => 'Ganti tembung sandi',
-'skin' => 'Kulit',
-'skin-preview' => 'Pratilik',
-'math' => 'Matématika',
-'dateformat' => 'Format tanggal',
-'datedefault' => 'Ora ana préferènsi',
-'datetime' => 'Tanggal lan wektu',
-'math_failure' => 'Gagal nglakoni parse',
-'math_unknown_error' => 'Kaluputan sing ora dimangertèni',
-'math_unknown_function' => 'fungsi sing ora dimangertèni',
-'math_lexing_error' => "kaluputan ''lexing''",
-'math_syntax_error' => "''syntax error'' (kaluputan sintaksis)",
-'math_image_error' => 'Konversi PNG gagal; priksa apa latex, dvips, gs, lan convert wis diinstalasi sing bener',
-'math_bad_tmpdir' => 'Ora bisa nulis utawa nggawé dirèktori sauntara math',
-'math_bad_output' => 'Ora bisa nulis utawa nggawé dirèktori paweton math',
-'math_notexvc' => 'Executable texvc ilang;
-mangga delengen math/README kanggo cara konfigurasi.',
-'prefs-personal' => 'Profil panganggo',
-'prefs-rc' => 'Owah-owahan pungkasan',
-'prefs-watchlist' => 'Dhaftar pangawasan',
-'prefs-watchlist-days' => 'Cacahé dina sing dituduhaké ing dhaftar pangawasan:',
-'prefs-watchlist-days-max' => '(maksimum 7 dina)',
-'prefs-watchlist-edits' => 'Cacahé suntingan maksimum sing dituduhaké ing dhaftar pangawasan sing luwih jangkep:',
-'prefs-watchlist-edits-max' => '(gunggung maksimum: 1000)',
-'prefs-misc' => 'Liya-liya',
-'prefs-resetpass' => 'Ganti tembung sandi',
-'saveprefs' => 'Simpen',
-'resetprefs' => 'Resikana owah-owahan sing ora disimpen',
-'restoreprefs' => 'Balèkna kabèh setèlan baku',
-'textboxsize' => 'Panyuntingan',
-'prefs-edit-boxsize' => 'Ukuran kothak panyuntingan.',
-'rows' => 'Larikan:',
-'columns' => 'Kolom:',
-'searchresultshead' => 'Panggolèkan',
-'resultsperpage' => 'Cacahing klik saben kaca:',
-'contextlines' => 'Baris dituduhaké per pituwas (kasil):',
-'contextchars' => 'Karakter kanggo kontèks per baris:',
-'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a>:',
-'recentchangesdays' => 'Cacahé dina sing dituduhaké ing owah-owahan pungkasan:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dina|dina}})',
-'recentchangescount' => 'Cacahé suntingan sing dituduhaké ing kaca owah-owahan pungkasan:',
-'savedprefs' => 'Préferènsi Panjenengan wis disimpen',
-'timezonelegend' => 'Zona wektu:',
-'timezonetext' => '¹Lebokna prabédan wektu (ing jam) antara wektu saenggon karo wektu server (UTC).',
-'localtime' => 'Wektu saenggon:',
-'timezoneselect' => 'Zona wektu:',
-'timezoneuseserverdefault' => 'Gunakna standar server',
-'timezoneuseoffset' => 'Liya (jelasna prabédan)',
-'timezoneoffset' => 'Prabédan¹:',
-'servertime' => 'Wektu server:',
-'guesstimezone' => 'Isinen saka panjlajah wèb',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amérika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Samodra Atlantika',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Eropah',
-'timezoneregion-indian' => 'Samodra Hindhia',
-'timezoneregion-pacific' => 'Samodra Pasifik',
-'allowemail' => 'Marengaké panganggo liyané ngirim layang èlèktronik (email).',
-'prefs-searchoptions' => 'Opsi-opsi panggolèkan',
-'prefs-namespaces' => 'Ruang jeneng / Bilik jeneng',
-'defaultns' => "Golèk ing bilik jeneng (''namespace'') iki mawa baku:",
-'default' => 'baku',
-'files' => 'Berkas',
-'prefs-custom-css' => 'CSS pribadi',
-'prefs-custom-js' => 'JS pribadi',
+'preferences' => 'Preferensi (pilihan)',
+'mypreferences' => 'Préferènsiku',
+'prefs-edits' => 'Gunggungé suntingan:',
+'prefsnologin' => 'Durung mlebu log',
+'prefsnologintext' => 'Panjenengan kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log]</span> kanggo ngowahin préferènsi njenengan.',
+'changepassword' => 'Ganti tembung sandi',
+'prefs-skin' => 'Kulit',
+'skin-preview' => 'Pratilik',
+'prefs-math' => 'Matématika',
+'datedefault' => 'Ora ana préferènsi',
+'prefs-datetime' => 'Tanggal lan wektu',
+'prefs-personal' => 'Profil panganggo',
+'prefs-rc' => 'Owah-owahan pungkasan',
+'prefs-watchlist' => 'Dhaftar pangawasan',
+'prefs-watchlist-days' => 'Cacahé dina sing dituduhaké ing dhaftar pangawasan:',
+'prefs-watchlist-days-max' => '(maksimum 7 dina)',
+'prefs-watchlist-edits' => 'Cacahé suntingan maksimum sing dituduhaké ing dhaftar pangawasan sing luwih jangkep:',
+'prefs-watchlist-edits-max' => '(gunggung maksimum: 1000)',
+'prefs-watchlist-token' => 'Token pantauan:',
+'prefs-misc' => 'Liya-liya',
+'prefs-resetpass' => 'Ganti tembung sandi',
+'prefs-email' => 'Opsi layang-e',
+'prefs-rendering' => 'Tampilan',
+'saveprefs' => 'Simpen',
+'resetprefs' => 'Resikana owah-owahan sing ora disimpen',
+'restoreprefs' => 'Balèkna kabèh setèlan baku',
+'prefs-editing' => 'Panyuntingan',
+'prefs-edit-boxsize' => 'Ukuran kothak panyuntingan.',
+'rows' => 'Larikan:',
+'columns' => 'Kolom:',
+'searchresultshead' => 'Panggolèkan',
+'resultsperpage' => 'Cacahing klik saben kaca:',
+'contextlines' => 'Baris dituduhaké per pituwas (kasil):',
+'contextchars' => 'Karakter kanggo kontèks per baris:',
+'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a>:',
+'recentchangesdays' => 'Cacahé dina sing dituduhaké ing owah-owahan pungkasan:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dina|dina}})',
+'recentchangescount' => 'Cacahé suntingan sing ditampilaké:',
+'prefs-help-recentchangescount' => 'Iki klebu owah-owahan pungkasan, kaca sajarah, lan log.',
+'prefs-help-watchlist-token' => 'Ngisi kothak iki nganggo kunci wadi (PIN) bakal ngasilaké sindikasi RSS kanggo daftar pantauan panjenengan.
+Sapa waé sing meruhi kunci iki bisa maca daftar pantauan panjenengan, mula pilihen isi sing aman.
+Iki aji acak sing bisa panjenengan gunakaké: $1',
+'savedprefs' => 'Préferènsi Panjenengan wis disimpen',
+'timezonelegend' => 'Zona wektu:',
+'localtime' => 'Wektu saenggon:',
+'timezoneuseserverdefault' => 'Gunakna standar server',
+'timezoneuseoffset' => 'Liya (jelasna prabédan)',
+'timezoneoffset' => 'Prabédan¹:',
+'servertime' => 'Wektu server:',
+'guesstimezone' => 'Isinen saka panjlajah wèb',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amérika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Samodra Atlantika',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Eropah',
+'timezoneregion-indian' => 'Samodra Hindhia',
+'timezoneregion-pacific' => 'Samodra Pasifik',
+'allowemail' => 'Marengaké panganggo liyané ngirim layang èlèktronik (email).',
+'prefs-searchoptions' => 'Opsi-opsi panggolèkan',
+'prefs-namespaces' => 'Ruang jeneng / Bilik jeneng',
+'defaultns' => 'Utawa golèki ing bilik jeneng iki:',
+'default' => 'baku',
+'prefs-files' => 'Berkas',
+'prefs-custom-css' => 'CSS pribadi',
+'prefs-custom-js' => 'JS pribadi',
+'prefs-reset-intro' => 'Panjenengan bisa migunakaké kaca iki kanggo mbalèkaké préferensi panjenengan marang setèlan baku situs.
+Pembalikan ora bisa dibatalaké.',
+'prefs-emailconfirm-label' => 'Konfirmasi layang-e:',
+'prefs-textboxsize' => 'Ukuran kothak suntingan',
+'youremail' => 'Layang élèktronik (E-mail):',
+'username' => 'Asma panganggo:',
+'uid' => 'ID panganggo:',
+'prefs-memberingroups' => 'Anggota {{PLURAL:$1|klompok|klompok-klompok}}:',
+'prefs-registration' => 'Wektu régistrasi:',
+'yourrealname' => 'Asma sajatiné :',
+'yourlanguage' => 'Basa sing dianggo:',
+'yourvariant' => 'Varian basa',
+'yournick' => 'Asma sesinglon/samaran (kagem tapak asta):',
+'prefs-help-signature' => 'Komentar ing kaca wicara kudu ditapak astani nganggo "<nowiki>~~~~</nowiki>" sing bakal dikonvèrsi dadi tapak asta panjenengan lan tanggal wektu.',
+'badsig' => 'Tapak astanipun klèntu; cèk rambu HTML.',
+'badsiglength' => 'Tapak asta panjenengan kedawan.
+Aja luwih saka {{PLURAL:$1|karakter|karakter}}.',
+'yourgender' => 'Jinis kelamin:',
+'gender-unknown' => 'Ora dinyatakaké',
+'gender-male' => 'Lanang',
+'gender-female' => 'Wadon',
+'prefs-help-gender' => 'Opsional: dipigunakaké kanggo panyebutan jinis kelamin sing bener déning piranti alus.
+Informasi iki bakal kabuka kanggo publik.',
+'email' => 'Layang élèktronik (E-mail)',
+'prefs-help-realname' => '* <strong>Asma asli</strong> (ora wajib): menawa panjenengan maringi, asma asli panjenengan bakal digunakaké kanggo mènèhi akrédhitasi kanggo kasil karya tulis panjenengan.',
+'prefs-help-email' => 'Layang-e (ora wajib), nanging sawanci-wanci panjenengan lali tembung sandi, bisa dikirimi liwat layang-e kasebut.
+Panjenengan uga bisa milih supaya wong liya ngubungi panjenengan liwat jeneng panganggo utawa kaca wicara panjenengan tanpa perlu nuduhaké idhèntitas panjenengan.',
+'prefs-help-email-required' => 'Alamat layang-e dibutuhaké.',
+'prefs-info' => 'Informasi dhasar',
+'prefs-i18n' => 'Internasionalisasi',
+'prefs-signature' => 'Tapak asma',
+'prefs-dateformat' => 'Format tanggal',
+'prefs-timeoffset' => 'Format wektu',
+'prefs-advancedediting' => 'Opsi lanjutan',
+'prefs-advancedrc' => 'Opsi lanjutan',
+'prefs-advancedrendering' => 'Opsi lanjutan',
+'prefs-advancedsearchoptions' => 'Opsi lanjutan',
+'prefs-advancedwatchlist' => 'Opsi lanjutan',
+'prefs-display' => 'Opsi tampilan',
+'prefs-diffs' => 'Prabédan',
# User rights
-'userrights' => 'Manajemen hak panganggo', # Not used as normal message but as header for the special page itself
+'userrights' => 'Manajemen hak panganggo',
'userrights-lookup-user' => 'Ngatur kelompok panganggo',
'userrights-user-editname' => 'Lebokna jeneng panganggo:',
'editusergroup' => 'Sunting kelompok panganggo',
@@ -1111,6 +1152,8 @@ mangga delengen math/README kanggo cara konfigurasi.',
'right-editprotected' => 'Sunting kaca-kaca sing direksa (tanpa pangreksan runtun)',
'right-editinterface' => 'Sunting interface (antarmuka) panganggo',
'right-editusercssjs' => 'Sunting berkas-berkas CSS lan JS panganggo liya',
+'right-editusercss' => 'Sunting berkas-berkas CSS panganggo liya',
+'right-edituserjs' => 'Sunting berkas-berkas JS panganggo liya',
'right-rollback' => 'Sacara gelis mbalèkaké panganggo pungkasan sing nyunting kaca tartamtu',
'right-markbotedits' => 'Tandhanana suntingan pambalèkan minangka suntingan bot',
'right-noratelimit' => 'Ora dipengaruhi déning wates cacahing suntingan.',
@@ -1127,6 +1170,7 @@ mangga delengen math/README kanggo cara konfigurasi.',
'right-siteadmin' => 'Kunci lan buka kunci basis data',
'right-reset-passwords' => 'Setèl ulang tembung sandi panganggo liya',
'right-override-export-depth' => "Èkspor kaca klebu kaca kagandhèng nganti tataran/''depth'' 5",
+'right-versiondetail' => 'Tuduhaké informasi vèrsi piranti alus sing luwih pepak',
# User rights log
'rightslog' => 'Log pangowahan hak aksès',
@@ -1176,6 +1220,15 @@ mangga delengen math/README kanggo cara konfigurasi.',
'recentchanges-legend' => 'Pilihan owah-owahan pungkasan',
'recentchangestext' => 'Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.',
'recentchanges-feed-description' => "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.",
+'recentchanges-label-legend' => 'Katrangan: $1.',
+'recentchanges-legend-newpage' => '$1 - kaca anyar',
+'recentchanges-label-newpage' => 'Suntingan iki gawé kaca anyar',
+'recentchanges-legend-minor' => '$1 - suntingan sithik',
+'recentchanges-label-minor' => 'Iki suntingan sithik',
+'recentchanges-legend-bot' => '$1 - suntingan bot',
+'recentchanges-label-bot' => 'Suntingan iki diayahi déning bot',
+'recentchanges-legend-unpatrolled' => '$1 - suntingan ora kapatroli',
+'recentchanges-label-unpatrolled' => 'Suntingan iki durung dipatroli',
'rcnote' => 'Ing ngisor iki kapacak {{PLURAL:$1|pangowahan|owah-owahan}} pungkasan ing <strong>$2</strong> dina pungkasan ing $5, $4.',
'rcnotefrom' => 'Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).',
'rclistfrom' => 'Saiki nuduhaké owah-owahan wiwit tanggal $1',
@@ -1202,6 +1255,8 @@ mangga delengen math/README kanggo cara konfigurasi.',
# Recent changes linked
'recentchangeslinked' => 'Pranala Pilihan',
+'recentchangeslinked-feed' => 'Pranala Pilihan',
+'recentchangeslinked-toolbox' => 'Pranala Pilihan',
'recentchangeslinked-title' => 'Owah-owahan sing ana gandhèngané karo "$1"',
'recentchangeslinked-noresult' => 'Ora ana owah-owahan ing kaca-kaca kagandhèng iki salawasé periode sing wis ditemtokaké.',
'recentchangeslinked-summary' => "Kaca astaméwa (kaca kusus) iki mènèhi daftar owah-owahan pungkasan ing kaca-kaca sing kagandhèng (utawa anggota sawijining kateogri). Kaca sing [[Special:Watchlist|panjenengan awasi]] ditandhani '''kandel'''.",
@@ -1211,7 +1266,6 @@ mangga delengen math/README kanggo cara konfigurasi.',
# Upload
'upload' => 'Unggah',
'uploadbtn' => 'Unggahna berkas',
-'reupload' => 'Unggah ulang',
'reuploaddesc' => 'Bali ing formulir pamotan',
'uploadnologin' => 'Durung mlebu log',
'uploadnologintext' => 'Panjenengan kudu [[Special:UserLogin|mlebu log]] supaya olèh ngunggahaké gambar utawa berkas liyané.',
@@ -1261,7 +1315,6 @@ Luwih becik {{PLURAL:\$3|jinis berkas|Jinis-jinis berkas}} \$2.",
* Jeneng berkas sing bakal diunggahaké: '''<tt>[[:$1]]</tt>'''
* Jeneng berkas sing wis ana: '''<tt>[[:$2]]</tt>'''
Mangga milih jeneng liya.",
-'fileexists-thumb' => "<center>'''Berkas sing wis ana'''</center>",
'fileexists-thumbnail-yes' => "Berkas iki katoné gambar mawa ukuran sing luwih cilik ''(thumbnail)''. [[$1|thumb]]
Tulung dipriksa berkas '''<tt>[[:$1]]</tt>'''.
Yèn berkas sing wis dipriksa iku padha, ora perlu panjenengan ngunggahaké vèrsi cilik liyané manèh.",
@@ -1285,11 +1338,14 @@ Yèn isih ngersakaké ngunggahaké, mangga berkas diunggahaké manèh mawa jenen
'php-uploaddisabledtext' => 'Pangunggahan berkas dipatèni ing PHP.
Mangga priksa panyetèlan pangunggahan berkas.',
'uploadscripted' => 'Berkas iki ngandhut HTML utawa kode sing bisa diinterpretasi salah déning panjlajah wèb.',
-'uploadcorrupt' => 'Berkasé rusak utawa èkstènsiné salah. Mangga dipriksa dhisik berkas iki lan diunggahaké manèh.',
'uploadvirus' => 'Berkas iki ngamot virus! Détil: $1',
+'upload-source' => 'Berkas sumber',
'sourcefilename' => 'Jeneng berkas sumber',
+'sourceurl' => 'URL sumber:',
'destfilename' => 'Jeneng berkas sing dituju',
'upload-maxfilesize' => 'Ukuran maksimal berkas: $1',
+'upload-description' => 'Katrangan berkas',
+'upload-options' => 'Opsi pangundhuhan',
'watchthisupload' => 'Awasana berkas iki',
'filewasdeleted' => 'Sawijining berkas mawa jeneng iki wis tau diunggahaké lan sawisé dibusak.
Mangga priksanen $1 sadurungé ngunggahaké berkas iku manèh.',
@@ -1299,13 +1355,19 @@ Panjenengan kudu nggalih perlu utawa ora mbanjuraké pangunggahan berkas ini.
Log pambusakan berkas iki kaya mangkéné:",
'filename-bad-prefix' => "Jeneng berkas sing panjenengan unggahaké, diawali mawa '''\"\$1\"''', sing sawijining jeneng non-dèskriptif sing biasané diwènèhaké sacara otomatis déning kamera digital. Mangga milih jeneng liyané sing luwih dèskriptif kanggo berkas panjenengan.",
-'upload-proto-error' => 'Protokol ora bener',
-'upload-proto-error-text' => 'Pangunggahan jarah adoh mbutuhaké URL sing diawali karo <code>http://</code> utawa <code>ftp://</code>.',
-'upload-file-error' => 'Kaluputan internal',
-'upload-file-error-text' => 'Ana kaluputan internal nalika nyoba ngunggahaké berkas sauntara ing server.
+'upload-proto-error' => 'Protokol ora bener',
+'upload-proto-error-text' => 'Pangunggahan jarah adoh mbutuhaké URL sing diawali karo <code>http://</code> utawa <code>ftp://</code>.',
+'upload-file-error' => 'Kaluputan internal',
+'upload-file-error-text' => 'Ana kaluputan internal nalika nyoba ngunggahaké berkas sauntara ing server.
Mangga kontak [[Special:ListUsers/sysop|pangurus]].',
-'upload-misc-error' => 'Kaluputan pamunggahan sing ora dimangertèni',
-'upload-misc-error-text' => 'Ana kaluputan sing ora diweruhi kadadéyan nalika pangunggahan. Mangga dipasthèkaké yèn URL kasebut iku absah lan bisa diaksès lan sawisé iku cobanen manèh. Yèn masalah iki isih ana, mangga kontak [[Special:ListUsers/sysop|pangurus sistem]].',
+'upload-misc-error' => 'Kaluputan pamunggahan sing ora dimangertèni',
+'upload-misc-error-text' => 'Ana kaluputan sing ora diweruhi kadadéyan nalika pangunggahan. Mangga dipasthèkaké yèn URL kasebut iku absah lan bisa diaksès lan sawisé iku cobanen manèh. Yèn masalah iki isih ana, mangga kontak [[Special:ListUsers/sysop|pangurus sistem]].',
+'upload-too-many-redirects' => 'URL ngandhut kakèhan pengalihan',
+'upload-unknown-size' => 'Ukuran ora diweruhi',
+'upload-http-error' => 'Ana kasalahan HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Aksès ditulak',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-é ora bisa dihubungi',
@@ -1317,6 +1379,7 @@ Mangga dipriksa menawa situsé aktif, nunggu sedélok lan coba manèh.
Mbok-menawa panjenengan bisa nyoba manèh ing wektu sing luwih longgar.',
'license' => 'Jenis lisènsi:',
+'license-header' => 'Jinis lisènsi',
'nolicense' => 'Durung ana sing dipilih',
'license-nopreview' => '(Pratayang ora sumedya)',
'upload_source_url' => ' (sawijining URL absah sing bisa diaksès publik)',
@@ -1337,6 +1400,7 @@ Klik sirahé kolom kanggo ngowahi urutan.',
'listfiles_count' => 'Vèrsi',
# File description page
+'file-anchor-link' => 'Gambar',
'filehist' => 'Sajarah berkas',
'filehist-help' => 'Klik ing tanggal/wektu kanggo deleng berkas iki ing wektu iku.',
'filehist-deleteall' => 'busaken kabèh',
@@ -1351,6 +1415,7 @@ Klik sirahé kolom kanggo ngowahi urutan.',
'filehist-dimensions' => 'Ukuran',
'filehist-filesize' => 'Gedhené berkas',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Berkas ilang',
'imagelinks' => 'Pranala gambar',
'linkstoimage' => 'Kaca-kaca sing kapacak iki duwé {{PLURAL:$1|pranala|$1 pranala}} menyang berkas iki:',
'linkstoimage-more' => 'Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.
@@ -1360,15 +1425,16 @@ Dhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1
'morelinkstoimage' => 'Ndeleng [[Special:WhatLinksHere/$1|luwih akèh pranala]] menyang berkas iki.',
'redirectstofile' => '{{PLURAL:$1|berkas kaalihaké|$1 berkas-berkas kaalihaké}} menyang berkas iki:',
'duplicatesoffile' => '{{PLURAL:$1|berkas ing ngisor arupa duplikat|$1 berkas ing ngisor arupa duplikat}} saka berkas iki ([[Special:FileDuplicateSearch/$2|luwih rinci]]):',
-'sharedupload' => 'Berkas iki saka $1 lan bisa digunakaké déning proyèk liya.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Mangga mirsani $1 kanggo informasi sabanjuré.',
-'shareduploadwiki-desc' => 'Dhèskripsi ing $1 ditampilaké ing ngisor.',
-'shareduploadwiki-linktext' => 'kaca dèskripsi berkas',
-'noimage' => 'Ora ana berkas mawa jeneng iku, nanging panjenengan bisa $1.',
-'noimage-linktext' => 'ngunggahaké sawiji',
+'sharedupload' => 'Berkas iki saka $1 lan bisa digunakaké déning proyèk liya.',
+'sharedupload-desc-there' => 'Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.
+Mangga pirsani [$2 kaca dhèskripsi berkas] kanggo informasi sabanjuré.',
+'sharedupload-desc-here' => 'Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.
+Dhèskripsi saka [$2 kaca dhèskripsiné] kapacak ing ngisor iki.',
+'filepage-nofile' => 'Ora ana berkas nganggo jeneng iki.',
+'filepage-nofile-link' => 'Ora ana berkas nganggo jeneng iki, nanging panjenengan bisa [$1 ngunggahaké].',
'uploadnewversion-linktext' => 'Unggahna vèrsi sing luwih anyar tinimbang gambar iki',
-'shared-repo-from' => 'saka $1', # $1 is the repository name
-'shared-repo' => 'sawijining panyimpenan kanggo bebarengan', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'saka $1',
+'shared-repo' => 'sawijining panyimpenan kanggo bebarengan',
# File reversion
'filerevert' => 'Balèkna $1',
@@ -1418,7 +1484,7 @@ Priksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.',
# Random page
'randompage' => 'Sembarang kaca',
-'randompage-nopages' => 'Ora ana kaca ing bilik jeneng "$1".',
+'randompage-nopages' => 'Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.',
# Random redirect
'randomredirect' => 'Pangalihan sembarang',
@@ -1430,6 +1496,7 @@ Priksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.',
'statistics-header-edits' => 'Statistik panyuntingan',
'statistics-header-views' => 'Statistik penampilan',
'statistics-header-users' => 'Statistik panganggo',
+'statistics-header-hooks' => 'Statistik liya',
'statistics-articles' => 'Kaca-kaca isi',
'statistics-pages' => 'Gunggung kaca',
'statistics-pages-desc' => 'Kabèh kaca ing wiki iki, klebu kaca wicara, pangalihan, lan liya-liyané.',
@@ -1459,8 +1526,8 @@ Jeneng sing wis <s>dicorèk</s> tegesé wis rampung didandani.',
'brokenredirects' => 'Pangalihan rusak',
'brokenredirectstext' => 'Pengalihan ing ngisor iki tumuju menyang kaca sing ora ana:',
-'brokenredirects-edit' => '(sunting)',
-'brokenredirects-delete' => '(busak)',
+'brokenredirects-edit' => 'sunting',
+'brokenredirects-delete' => 'busak',
'withoutinterwiki' => 'Kaca tanpa pranala antarbasa',
'withoutinterwiki-summary' => 'Kaca-kaca iki ora nduwé pranala menyang vèrsi ing basa liyané:',
@@ -1566,16 +1633,17 @@ Panjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sèn
# Special:Categories
'categories' => 'Daftar kategori',
-'categoriespagetext' => 'Kategori-kategori ing ngisor iki mduwèni kaca utawa media.
-[[Special:UnusedCategories|Kategori-kategori sing ora dianggo]] ora katon ing kéné.
-Deleng uga [[Special:WantedCategories|kategori-kategori sing diperlokaké]].',
+'categoriespagetext' => '{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.
+[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.
+Deleng uga [[Special:WantedCategories|kategori sing diperlokaké]].',
'categoriesfrom' => 'Tampilaké kategori-kategori diwiwiti saka:',
'special-categories-sort-count' => 'urutna miturut angka',
'special-categories-sort-abc' => 'urutna miturut abjad',
# Special:DeletedContributions
-'deletedcontributions' => 'Kontribusi panganggo sing dibusak',
-'deletedcontributions-title' => 'Kontribusi panganggo sing dibusak',
+'deletedcontributions' => 'Kontribusi panganggo sing dibusak',
+'deletedcontributions-title' => 'Kontribusi panganggo sing dibusak',
+'sp-deletedcontributions-contribs' => 'kontribusi',
# Special:LinkSearch
'linksearch' => 'Pranala jaba',
@@ -1590,6 +1658,13 @@ Deleng uga [[Special:WantedCategories|kategori-kategori sing diperlokaké]].',
'listusersfrom' => 'Tuduhna panganggo sing diawali karo:',
'listusers-submit' => 'Tuduhna',
'listusers-noresult' => 'Panganggo ora ditemokaké.',
+'listusers-blocked' => '(diblokir)',
+
+# Special:ActiveUsers
+'activeusers' => 'Dhaptar panganggo aktif',
+'activeusers-count' => '$1 {{PLURAL:$1|suntingan|suntingan}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan',
+'activeusers-from' => 'Tampilna panganggo wiwit saka:',
+'activeusers-noresult' => 'Panganggo ora ditemokaké.',
# Special:Log/newusers
'newuserlogpage' => 'Log panganggo anyar',
@@ -1600,17 +1675,23 @@ Deleng uga [[Special:WantedCategories|kategori-kategori sing diperlokaké]].',
'newuserlog-autocreate-entry' => 'akun panganggo digawé otomatis',
# Special:ListGroupRights
-'listgrouprights' => 'Hak-hak grup panganggo',
-'listgrouprights-summary' => 'Ing ngisor iki kapacak dhaftar grup panganggo sing didéfinisi ing wiki iki, kanthi hak-hak aksès gandhèngané.
+'listgrouprights' => 'Hak-hak grup panganggo',
+'listgrouprights-summary' => 'Ing ngisor iki kapacak dhaftar grup panganggo sing didéfinisi ing wiki iki, kanthi hak-hak aksès gandhèngané.
Informasi tambahan perkara hak-hak individual bisa ditemokaké ing [[{{MediaWiki:Listgrouprights-helppage}}|kéné]].',
-'listgrouprights-group' => 'Grup',
-'listgrouprights-rights' => 'Hak-hak',
-'listgrouprights-helppage' => 'Help:Hak-hak grup',
-'listgrouprights-members' => '(daftar anggota)',
-'listgrouprights-addgroup' => 'Bisa nambahaké {{PLURAL:$2|klompok|klompok}}: $1',
-'listgrouprights-removegroup' => 'Bisa mbusak {{PLURAL:$2|klompok|klompok}}: $1',
-'listgrouprights-addgroup-all' => 'Bisa nambahaké kabèh klompok',
-'listgrouprights-removegroup-all' => 'Bisa mbusak kabèh klompok',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Hak sing diidinaké</span>
+* <span class="listgrouprights-revoked">Hak sing dijabel</span>',
+'listgrouprights-group' => 'Grup',
+'listgrouprights-rights' => 'Hak-hak',
+'listgrouprights-helppage' => 'Help:Hak-hak grup',
+'listgrouprights-members' => '(daftar anggota)',
+'listgrouprights-addgroup' => 'Bisa nambahaké {{PLURAL:$2|klompok|klompok}}: $1',
+'listgrouprights-removegroup' => 'Bisa mbusak {{PLURAL:$2|klompok|klompok}}: $1',
+'listgrouprights-addgroup-all' => 'Bisa nambahaké kabèh klompok',
+'listgrouprights-removegroup-all' => 'Bisa mbusak kabèh klompok',
+'listgrouprights-addgroup-self' => 'Nambahaké {{PLURAL:$2|klompok|klompok}} menyang akuné dhéwé: $1',
+'listgrouprights-removegroup-self' => 'Mbusak {{PLURAL:$2|klompok|klompok}} saka akuné dhéwé: $1',
+'listgrouprights-addgroup-self-all' => 'Nambahaké kabèh grup menyang akuné dhéwé',
+'listgrouprights-removegroup-self-all' => 'Mbusak kabèh klompok saka akuné dhéwé',
# E-mail user
'mailnologin' => 'Ora ana alamat layang e-mail',
@@ -1700,7 +1781,7 @@ Kita ora bakal ngandhani manèh yèn diowahi manèh, kejaba panjenengan wis mirs
--
Kanggo ngowahi préferènsi ing daftar pangawasan panjenengan, mangga mirsani
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Umpan balik lan pitulung sabanjuré:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1714,9 +1795,10 @@ Umpan balik lan pitulung sabanjuré:
'exblank' => 'kaca kosong',
'delete-confirm' => 'Busak "$1"',
'delete-legend' => 'Busak',
-'historywarning' => 'Pènget: Kaca sing bakal panjenengan busak ana sajarahé:',
+'historywarning' => "'''Pènget''': Kaca sing bakal panjenengan busak ana sajarahé kanthi $1 {{PLURAL:$1|révisi|révisi}}:",
'confirmdeletetext' => 'Panjenengan bakal mbusak kaca utawa berkas iki minangka permanèn karo kabèh sajarahé saka basis data. Pastèkna dhisik menawa panjenengan pancèn nggayuh iki, ngerti kabèh akibat lan konsekwènsiné, lan apa sing bakal panjenengan tumindak iku cocog karo [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].',
'actioncomplete' => 'Proses tuntas',
+'actionfailed' => 'Tindakan gagal',
'deletedtext' => '"<nowiki>$1</nowiki>" sampun kabusak. Coba pirsani $2 kanggé log paling énggal kaca ingkang kabusak.',
'deletedarticle' => 'mbusak "[[$1]]"',
'suppressedarticle' => 'ndelikaké "[[$1]]"',
@@ -1747,8 +1829,8 @@ kudu ngati-ati.',
'alreadyrolled' => 'Ora bisa mbalèkaké suntingan pungkasan [[:$1]] déning [[User:$2|$2]] ([[User talk:$2|Wicara]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); wong liya wis nyunting utawa mbalèkaké kaca artikel iku.
Suntingan pungkasan dilakoni déning [[User:$3|$3]] ([[User talk:$3|Wicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ringkesan suntingan yaiku: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|dhiskusi]]) dipunwangsulaken dhateng ing vèrsi pungkasan déning [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Ringkesan suntingan yaiku: \"''\$1''\".",
+'revertpage' => 'Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|dhiskusi]]) dipunwangsulaken dhateng ing vèrsi pungkasan déning [[User:$1|$1]]',
'rollback-success' => 'Suntingan dibalèkaké déning $1;
diowahi bali menyang vèrsi pungkasan déning $2.',
'sessionfailure' => 'Katoné ana masalah karo sèsi log panjenengan; log panjenengan wis dibatalaké kanggo nyegah pambajakan. Mangga mencèt tombol "back" lan unggahaké manèh kaca sadurungé mlebu log, lan coba manèh.',
@@ -1768,7 +1850,6 @@ Mangga mirsani [[Special:ProtectedPages|daftar kaca sing direksa]] kanggo daftar
'protectexpiry' => 'Kadaluwarsa:',
'protect_expiry_invalid' => 'Wektu kadaluwarsané ora sah.',
'protect_expiry_old' => 'Wektu kadaluwarsané kuwi ana ing jaman biyèn.',
-'protect-unchain' => 'Bukak pangreksan pamindhahan',
'protect-text' => "Panjenengan bisa mirsani utawa ngganti tingkatan pangreksan kanggo kaca '''<nowiki>$1</nowiki>''' ing kéné.",
'protect-locked-blocked' => "Panjenengan ora bisa ngganti tingkat pangreksan yèn lagi diblokir.
Ing ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
@@ -1796,7 +1877,7 @@ Ing ngisor iki kapacak konfigurasi kanggo kaca '''$1''':",
** Perang suntingan
** Kaca kerep disunting',
'protect-edit-reasonlist' => 'Nyunting alesan reksan',
-'protect-expiry-options' => '1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite',
'restriction-type' => 'Pangreksan:',
'restriction-level' => 'Tingkatan pambatesan:',
'minimum-size' => 'Ukuran minimum',
@@ -1839,6 +1920,7 @@ Panjenengan mbokmenawa ngetutaké pranala sing salah, utawa revisi iku wis dipul
'undelete-nodiff' => 'Ora ditemokaké révisi sing luwih lawas.',
'undeletebtn' => 'Balèkna!',
'undeletelink' => 'pirsani/balèkna',
+'undeleteviewlink' => 'pirsani',
'undeletereset' => "''Reset''",
'undeleteinvert' => 'Walik pilihan',
'undeletecomment' => 'Alesan:',
@@ -1878,7 +1960,7 @@ $1',
'contributions-title' => 'Kontribusi panganggo kanggo $1',
'mycontris' => 'Kontribusiku',
'contribsub2' => 'Kanggo $1 ($2)',
-'nocontribs' => 'Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.',
'uctop' => ' (dhuwur)',
'month' => 'Wiwit sasi (lan sadurungé):',
'year' => 'Wiwit taun (lan sadurungé):',
@@ -1887,7 +1969,10 @@ $1',
'sp-contributions-newbies-sub' => 'Kanggo panganggo anyar',
'sp-contributions-newbies-title' => 'Kontribusi panganggo anyar',
'sp-contributions-blocklog' => 'Log pemblokiran',
+'sp-contributions-deleted' => 'kontribusi panganggo sing dibusak',
'sp-contributions-logs' => 'log',
+'sp-contributions-talk' => 'wicara',
+'sp-contributions-userrights' => 'pengaturan hak panganggo',
'sp-contributions-search' => 'Golèk kontribusi',
'sp-contributions-username' => 'Alamat IP utawa jeneng panganggo:',
'sp-contributions-submit' => 'Golèk',
@@ -1913,6 +1998,7 @@ $1',
# Block/unblock
'blockip' => 'Blokir panganggo',
+'blockip-title' => 'Blokir panganggo',
'blockip-legend' => 'Blokir panganggo',
'blockiptext' => 'Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.
Prekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].
@@ -1936,7 +2022,7 @@ Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis t
'ipbenableautoblock' => 'Blokir alamat IP pungkasan sing dienggo déning pengguna iki sacara otomatis, lan kabèh alamat sabanjuré sing dicoba arep dienggo nyunting.',
'ipbsubmit' => 'Kirimna',
'ipbother' => 'Wektu liya',
-'ipboptions' => '2 jam:2 hours,1 dina:1 day,3 dina:3 days,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 jam:2 hours,1 dina:1 day,3 dina:3 days,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite',
'ipbotheroption' => 'liyané',
'ipbotherreason' => 'Alesan liya/tambahan',
'ipbhidename' => 'Delikna jeneng panganggo saka suntingan lan pratélan',
@@ -1965,9 +2051,10 @@ Pirsani [[Special:IPBlockList|Daftar blokir IP]] kanggo ninjo ulang pamblokiran.
'ipblocklist-sh-tempblocks' => '$1 pamblokiran sauntara wektu',
'ipblocklist-sh-addressblocks' => '$1 pamblokiran IP tunggal',
'ipblocklist-submit' => 'Golèk',
+'ipblocklist-localblock' => 'Blokade lokal',
'blocklistline' => '$1, $2 mblokir $3 ($4)',
'infiniteblock' => 'salawasé',
-'expiringblock' => 'kadaluwarsa $1',
+'expiringblock' => 'kadaluwarsa ing $1, $2',
'anononlyblock' => 'namung anon',
'noautoblockblock' => 'pamblokiran otomatis dipatèni',
'createaccountblock' => 'ndamelipun akun dipunblokir',
@@ -1981,7 +2068,6 @@ Pirsani [[Special:IPBlockList|Daftar blokir IP]] kanggo ninjo ulang pamblokiran.
'contribslink' => 'sumbangan',
'autoblocker' => 'Panjenengan otomatis dipun-blok amargi nganggé alamat protokol internet (IP) ingkang sami kaliyan "[[User:$1|$1]]". Alesanipun $1 dipun blok inggih punika "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Log pamblokiran',
-'blocklog-fulllog' => 'Log pamblokiran total',
'blocklogentry' => 'mblokir "[[$1]]" dipun watesi wedalipun $2 $3',
'reblock-logentry' => 'Ngowahi sèting pamblokiran [[$1]] kanthi wektu daluwarsa $2 $3',
'blocklogtext' => 'Ing ngisor iki kapacak log pamblokiran lan panjabelan blokir panganggo.
@@ -2061,7 +2147,7 @@ Ing kasus-kasus iku, yèn panjenengan gayuh, panjenengan bisa mindhahaké utawa
'move-watch' => 'Awasna kaca iki',
'movepagebtn' => 'Pindhahna kaca',
'pagemovedsub' => 'Bisa kasil dipindhahaké',
-'movepage-moved' => '\'\'\'"$1" dipindhahaké menyang "$2".\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" dipindhahaké menyang "$2".\'\'\'',
'movepage-moved-redirect' => 'Kaca pengalihan wis kacipta.',
'movepage-moved-noredirect' => 'Kanggo gawé pengalihan wis ditahan.',
'articleexists' => 'Satunggalipun kaca kanthi asma punika sampun wonten, utawi asma ingkang panjenengan pendhet mboten leres. Sumangga nyobi asma sanèsipun.',
@@ -2103,6 +2189,10 @@ Apa panjenengan kersa mbusak iku supaya kacané bisa dialihaké?',
'imageinvalidfilename' => 'Jeneng berkas tujuan ora sah',
'fix-double-redirects' => 'Dandani kabèh pangalihan gandha sing tumuju marang irah-irahan asli',
'move-leave-redirect' => 'Gawé pangalihan menyang irah-irahan anyar',
+'protectedpagemovewarning' => "'''Pènget:''' Kaca iki wis dikunci dadi mung panganggo sing nduwé hak aksès pangurus baé sing bisa mindhahaké.
+Cathetan entri pungkasan disadiakaké ing ngisor kanggo referensi:",
+'semiprotectedpagemovewarning' => "'''Cathetan:''' Kaca iki wis direksa saéngga mung panganggo kadhaptar sing bisa mindhahaké.
+Entri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
# Export
'export' => 'Ekspor kaca',
@@ -2124,15 +2214,21 @@ Yèn panjenengan namun péngin ngimpor vèrsi pungkasan, panjenengan uga bisa ng
'export-pagelinks' => 'Katutna kaca kagandhèng nganti jeroné:',
# Namespace 8 related
-'allmessages' => 'Kabèh laporan sistém',
-'allmessagesname' => 'Asma (jeneng)',
-'allmessagesdefault' => 'Tèks baku',
-'allmessagescurrent' => 'Tèks saiki',
-'allmessagestext' => 'Iki dhaptar kabèh pesen saka sistem sing ana ing bilik jeneng MediaWiki.
+'allmessages' => 'Kabèh laporan sistém',
+'allmessagesname' => 'Asma (jeneng)',
+'allmessagesdefault' => 'Tèks baku',
+'allmessagescurrent' => 'Tèks saiki',
+'allmessagestext' => 'Iki dhaptar kabèh pesen saka sistem sing ana ing bilik jeneng MediaWiki.
Mangga pirsani [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] lan [http://translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.',
-'allmessagesnotsupportedDB' => "Kaca iki ora bisa dienggo amerga '''\$wgUseDatabaseMessages''' dipatèni.",
-'allmessagesfilter' => 'Saringan jeneng pesen:',
-'allmessagesmodified' => 'Namung tampilanipun ingkang owah',
+'allmessagesnotsupportedDB' => "Kaca iki ora bisa dienggo amerga '''\$wgUseDatabaseMessages''' dipatèni.",
+'allmessages-filter-legend' => 'Penyaring',
+'allmessages-filter' => 'Saring nganggo kahanan kustomisasi:',
+'allmessages-filter-unmodified' => 'Ora diowahi',
+'allmessages-filter-all' => 'Kabèh',
+'allmessages-filter-modified' => 'Diowahi',
+'allmessages-prefix' => 'Saring nganggo ater-ater:',
+'allmessages-language' => 'Basa:',
+'allmessages-filter-submit' => 'Tumuju menyang',
# Thumbnails
'thumbnail-more' => 'Gedhèkna',
@@ -2142,6 +2238,9 @@ Mangga pirsani [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisatio
'djvu_no_xml' => 'Ora bisa njupuk XML kanggo berkas DjVu',
'thumbnail_invalid_params' => "Paramèter gambar cilik (''thumbnail'') ora absah",
'thumbnail_dest_directory' => 'Ora bisa nggawé dirèktori tujuan',
+'thumbnail_image-type' => 'Tipe gambar ora didhukung',
+'thumbnail_gd-library' => 'Konfigurasi pustaka GD ora pepak: fungsi $1 ilang',
+'thumbnail_image-missing' => 'Berkas katonané ilang: $1',
# Special:Import
'import' => 'Impor kaca',
@@ -2216,6 +2315,7 @@ Simpenen ing cakram padhet (''harddisk'') panjenengan lan unggahna ing kéné.",
'tooltip-search-fulltext' => 'Golèk kaca sing duwé tèks kaya mangkéné',
'tooltip-p-logo' => 'Kaca Utama',
'tooltip-n-mainpage' => 'Nuwèni Kaca Utama',
+'tooltip-n-mainpage-description' => 'Pirsani Kaca Utama',
'tooltip-n-portal' => 'Perkara proyèk, apa sing bisa panjenengan gayuh, lan ing ngendi golèk apa-apa',
'tooltip-n-currentevents' => 'Temokna informasi perkara prastawa anyar',
'tooltip-n-recentchanges' => 'Daftar owah-owahan anyar ing wiki.',
@@ -2260,7 +2360,7 @@ Simpenen ing cakram padhet (''harddisk'') panjenengan lan unggahna ing kéné.",
# Attribution
'anonymous' => '{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.',
'siteuser' => 'Panganggo {{SITENAME}} $1',
-'lastmodifiedatby' => 'Kaca iki pungkasan diowahi $2, $1 déning $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Kaca iki pungkasan diowahi $2, $1 déning $3.',
'othercontribs' => 'Adhedhasar karyané $1.',
'others' => 'liya-liyané',
'siteusers' => '{{PLURAL:$2|Panganggo|Panganggo-panganggo}} {{SITENAME}} $1',
@@ -2292,11 +2392,23 @@ Mbokmanawa iki disebabaké anané pranala jaba sing klebu daftar ireng.',
'mw_math_modern' => 'Disaranaké kanggo panjlajah wèb modèrn',
'mw_math_mathml' => 'MathML yèn bisa (pracoban)',
+# Math errors
+'math_failure' => 'Gagal nglakoni parse',
+'math_unknown_error' => 'Kaluputan sing ora dimangertèni',
+'math_unknown_function' => 'fungsi sing ora dimangertèni',
+'math_lexing_error' => "kaluputan ''lexing''",
+'math_syntax_error' => "''syntax error'' (kaluputan sintaksis)",
+'math_image_error' => 'Konversi PNG gagal; priksa apa latex, dvips, gs, lan convert wis diinstalasi sing bener',
+'math_bad_tmpdir' => 'Ora bisa nulis utawa nggawé dirèktori sauntara math',
+'math_bad_output' => 'Ora bisa nulis utawa nggawé dirèktori paweton math',
+'math_notexvc' => 'Executable texvc ilang;
+mangga delengen math/README kanggo cara konfigurasi.',
+
# Patrolling
'markaspatrolleddiff' => 'Tandhanana wis dipatroli',
'markaspatrolledtext' => 'Tandhanana artikel iki wis dipatroli',
'markedaspatrolled' => 'Ditandhani wis dipatroli',
-'markedaspatrolledtext' => 'Révisi sing dipilih wis ditandhani minangka dipatroli.',
+'markedaspatrolledtext' => 'Révisi sing dipilih ngenani [:$1]] wis ditandhani minangka dipatroli.',
'rcpatroldisabled' => 'Patroli owah-owahan pungkasan dipatèni',
'rcpatroldisabledtext' => 'Fitur patroli owah-owahan pungkasan lagi dipatèni.',
'markedaspatrollederror' => 'Ora bisa awèh tandha wis dipatroli',
@@ -2326,12 +2438,9 @@ $1',
'previousdiff' => '← Panyuntingan sadurungé',
'nextdiff' => 'Panyuntingan sing luwih anyar →',
-# Visual comparison
-'visual-comparison' => 'Prabédan kanthi visual',
-
# Media information
'mediawarning' => "'''Pènget:''' Berkas iki mbokmenawa ngandhut kode sing bebayani, yèn dilakokaké sistém panjenengan bisa kena pangaruh ala.",
-'imagemaxsize' => 'Watesana ukuran gambar ing kaca dèskripsi berkas dadi:',
+'imagemaxsize' => "Wates ukuran gambar:<br />''(kanggo kaca dhèskripsi berkas)''",
'thumbsize' => 'Ukuran gambar cilik (thumbnail):',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|kaca|kaca}}',
'file-info' => '(ukuran berkas: $1, tipe MIME: $2)',
@@ -2340,6 +2449,8 @@ $1',
'svg-long-desc' => '(Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3)',
'show-big-image' => 'Résolusi kebak',
'show-big-image-thumb' => '<small>Ukuran pratayang iki: $1 × $2 piksel</small>',
+'file-info-gif-looped' => 'mubeng',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|rangka|rangka}}',
# Special:NewFiles
'newimages' => 'Galeri berkas anyar',
@@ -2370,7 +2481,7 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
* datetimeoriginal
* exposuretime
* fnumber
-* isospeedratings', # Do not translate list items
+* isospeedratings',
# EXIF tags
'exif-imagewidth' => 'Jembar',
@@ -2497,14 +2608,14 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-unknowndate' => 'Tanggal ora dingertèni',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Baliken sacara horisontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Diputer 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Baliken sacara vèrtikal', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Diputer 90° nglawan arah dom jam dan dibalik sacara vèrtikal', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Diputer 90° miturut arah dom jam', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Diputer 90° miturut arah dom jam lan diwalik sacara vèrtikal', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Diputer 90° miturut lawan arah dom jam', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Baliken sacara horisontal',
+'exif-orientation-3' => 'Diputer 180°',
+'exif-orientation-4' => 'Baliken sacara vèrtikal',
+'exif-orientation-5' => 'Diputer 90° nglawan arah dom jam dan dibalik sacara vèrtikal',
+'exif-orientation-6' => 'Diputer 90° miturut arah dom jam',
+'exif-orientation-7' => 'Diputer 90° miturut arah dom jam lan diwalik sacara vèrtikal',
+'exif-orientation-8' => 'Diputer 90° miturut lawan arah dom jam',
'exif-planarconfiguration-1' => "format ''chunky'' (kumothak)",
'exif-planarconfiguration-2' => 'format planar',
@@ -2626,7 +2737,7 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-gpsmeasuremode-2' => 'Pangukuran 2-dimènsi',
'exif-gpsmeasuremode-3' => 'Pangukuran 3-dimènsi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilométer per jam',
'exif-gpsspeed-m' => 'Mil per jam',
'exif-gpsspeed-n' => 'Knot',
@@ -2645,6 +2756,7 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'watchlistall2' => 'kabèh',
'namespacesall' => 'kabèh',
'monthsall' => 'kabèh',
+'limitall' => 'kabèh',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat e-mail',
@@ -2770,7 +2882,7 @@ Panjenengan uga bisa [[Special:Watchlist/edit|nganggo éditor standar panjenenga
'duplicate-defaultsort' => 'Pènget: Kunci pilih asal (\'\'Default sort key\'\') "$2" nggantèkaké kunci pilih asal sadurungé "$1".',
# Special:Version
-'version' => 'Versi', # Not used as normal message but as header for the special page itself
+'version' => 'Versi',
'version-extensions' => 'Èkstènsi sing wis diinstalasi',
'version-specialpages' => 'Kaca astaméwa (kaca kusus)',
'version-parserhooks' => 'Canthèlan parser',
@@ -2784,7 +2896,7 @@ Panjenengan uga bisa [[Special:Watchlist/edit|nganggo éditor standar panjenenga
'version-skin-extension-functions' => 'Fungsi èkstènsi kulit',
'version-hook-name' => 'Jeneng canthèlan',
'version-hook-subscribedby' => 'Dilanggani déning',
-'version-version' => 'Vèrsi',
+'version-version' => '(Vèrsi $1)',
'version-license' => 'Lisènsi',
'version-software' => "''Software'' wis diinstalasi",
'version-software-product' => 'Prodhuk',
@@ -2865,4 +2977,15 @@ Katrangan tampilan:
'dberr-outofdate' => 'Perlu diweruhi yèn indhèks isi kita manawa wis kadaluwarsa.',
'dberr-cachederror' => 'Iki sawijining salinan kasimpen kaca sing dijaluk, lan manawa dudu sing paling anyar.',
+# HTML forms
+'htmlform-invalid-input' => 'Ana masalah jroning sawetara input panjenengan',
+'htmlform-select-badoption' => 'Aji sing panjenengan lebokaké ora absah',
+'htmlform-int-invalid' => 'Aji sing panjenengan lebokaké dudu angka wutuh (integer).',
+'htmlform-float-invalid' => 'Sing panjenengan lebokaké dudu angka.',
+'htmlform-int-toolow' => 'Aji sing panjenengan lebokaké keciliken ing sangisoré aji minimum $1',
+'htmlform-int-toohigh' => 'Aji sing panjenengan lebokaké kegedhèn ngluwihi aji maksimum $1',
+'htmlform-submit' => 'Kirim',
+'htmlform-reset' => 'Batalna pangowahan',
+'htmlform-selectorother-other' => 'Liya',
+
);
diff --git a/languages/messages/MessagesKa.php b/languages/messages/MessagesKa.php
index 54f94f44..97f4db2a 100644
--- a/languages/messages/MessagesKa.php
+++ b/languages/messages/MessagesKa.php
@@ -98,7 +98,13 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'redirect' => array( 0 , '#REDIRECT', '#გადამისამართება' ),
+ 'redirect' => array( '0', '#გადამისამართება', '#REDIRECT' ),
+ 'nogallery' => array( '0', '__უგალერეო__', '__NOGALLERY__' ),
+ 'subst' => array( '0', 'მიდგმ:', 'SUBST:' ),
+ 'img_thumbnail' => array( '1', 'მინიატიურა', 'მინი', 'thumbnail', 'thumb' ),
+ 'img_right' => array( '1', 'მარჯვნივ', 'right' ),
+ 'img_left' => array( '1', 'მარცხნივ', 'left' ),
+ 'img_center' => array( '1', 'ცენტრი', 'center', 'centre' ),
);
$linkPrefixExtension = true;
@@ -135,6 +141,7 @@ $messages = array(
'tog-enotifminoredits' => 'მომწერე ასევე გვერდების მცირე რედაქტირებისას',
'tog-enotifrevealaddr' => 'აჩვენე ჩემი ელ-ფოსტის მისამართი შეტყობინების წერილებში',
'tog-shownumberswatching' => 'მაკონტროლებელ მომხმარებელთა რიცხვის ჩვენება',
+'tog-oldsig' => 'არსებული ხელმოწერის წინასწარ ხილვა',
'tog-fancysig' => 'საკუთარი ვიკიფორმატიანი ხელმოწერა (ავტომატური ბმულის გარეშე)',
'tog-externaleditor' => 'გამოიყენეთ გარე რედაქტორი სტანდარტული ფორმით (მხოლოდ ექსპერტებისთვის, მოითხოვს სპეციალურ კონფიგურაციას თქვენს კომპიუტერში)',
'tog-externaldiff' => 'გამოიყენეთ გარე განსხვავება ავტომატურად (მხოლოდ ექსპერტთათვის, ესაჭიროება სპეციალური კონფიგურაცია თქვენს კომპიუტერზე)',
@@ -156,6 +163,13 @@ $messages = array(
'underline-never' => 'არასდროს',
'underline-default' => 'ბრაუზერის უპირობო არჩევანი',
+# Font style option in Special:Preferences
+'editfont-style' => 'რედაქტირების არის შრიფტის ტიპი:',
+'editfont-default' => 'ბრაუზერის უპირობო არჩევანი',
+'editfont-monospace' => 'მონოშირული შრიფტი',
+'editfont-sansserif' => 'შრიფტი სანს-სერიფი',
+'editfont-serif' => 'შრიფტი სერიფი',
+
# Dates
'sunday' => 'კვირა',
'monday' => 'ორშაბათი',
@@ -215,7 +229,7 @@ $messages = array(
'category-media-header' => 'მედია კატეგორიაში "$1"',
'category-empty' => "''ეს კატეგორია ამჟამად გვერდებს ან მედიას არ შეიცავს.''",
'hidden-categories' => 'დამალული {{PLURAL:$1|კატეგორია|კატეგორიები}}',
-'hidden-category-category' => 'დამალული კატეგორიები', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'დამალული კატეგორიები',
'category-subcat-count' => '{{PLURAL:$2|ეს კატეგორია შეიცავს მხოლოდ შემდეგ ქვეკატეგორიას.|ამ კატეგორიაში მოცემულია $1 ქვეკატეგორია $2-დან.}}',
'category-subcat-count-limited' => 'ეს კატეგორია მოიცავს შემდეგ $1 ქვეკატეგორიას.',
'category-article-count' => '{{PLURAL:$2|ეს კატეგორია შეიცავს მხოლოდ ამ გვერდს.|ამ კატეგორიაში არის შემდეგი $1 გვერდი , საერთო $2-დან.}}',
@@ -223,6 +237,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|ეს კატეგორია შეიცავს მხოლოს შემდეგ ფაილს.|შემდეგი {{PLURAL:$1|ფაილი არის|$1 ფაილები არიან}} ამ კატეგორიაში, $2-დან.}}',
'category-file-count-limited' => 'შემდეგი {{PLURAL:$1|ფაილი|$1 ფაილები}} ამ კატეგორიაშია.',
'listingcontinuesabbrev' => 'გაგრძ.',
+'index-category' => 'გვერდების ინდექსაცია',
+'noindex-category' => 'არ არსებობს ინდექსირებული გვერდები',
'linkprefix' => '/^(.*?)(„|«)$/sD',
'mainpagetext' => "'''მედიავიკი წარმატებით ჩაიტვირთა.'''",
@@ -234,10 +250,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce მედიავიკის გამოცემის დაგზავნის სია]',
-'about' => 'შესახებ',
-'article' => 'სტატია',
-'newwindow' => '(ახალ ფანჯარაში)',
-'cancel' => 'გაუქმება',
+'about' => 'შესახებ',
+'article' => 'სტატია',
+'newwindow' => '(ახალ ფანჯარაში)',
+'cancel' => 'გაუქმება',
+'moredotdotdot' => 'ვრცლად...',
+'mypage' => 'ჩემი გვერდი',
+'mytalk' => 'ჩემი განხილვა',
+'anontalk' => 'ამ IP-ს განხილვა',
+'navigation' => 'ნავიგაცია',
+'and' => '&#32;და',
+
+# Cologne Blue skin
'qbfind' => 'მოძებნე',
'qbbrowse' => 'გადახედე',
'qbedit' => 'რედაქტირება',
@@ -245,15 +269,35 @@ $messages = array(
'qbpageinfo' => 'კონტექსტი',
'qbmyoptions' => 'ჩემი გვერდები',
'qbspecialpages' => 'სპეციალური გვერდები',
-'moredotdotdot' => 'ვრცლად...',
-'mypage' => 'ჩემი გვერდი',
-'mytalk' => 'ჩემი განხილვა',
-'anontalk' => 'ამ IP-ს განხილვა',
-'navigation' => 'ნავიგაცია',
-'and' => '&#32;და',
-
-# Metadata in edit box
-'metadata_help' => 'მეტამონაცემები:',
+'faq' => 'ხშირი შეკითხვები',
+'faqpage' => 'Project:ხშირი შეკითხვები',
+
+# Vector skin
+'vector-action-addsection' => 'თემის ჩამატება',
+'vector-action-delete' => 'წაშლა',
+'vector-action-move' => 'გადატანა',
+'vector-action-protect' => 'დაცვა',
+'vector-action-undelete' => 'აღდგენა',
+'vector-action-unprotect' => 'დაცვის მოხსნა',
+'vector-namespace-category' => 'კატეგორია',
+'vector-namespace-help' => 'დახმარების გვერდი',
+'vector-namespace-image' => 'ფაილი',
+'vector-namespace-main' => 'გვერდი',
+'vector-namespace-media' => 'მედია გვერდი',
+'vector-namespace-mediawiki' => 'შეტყობინება',
+'vector-namespace-project' => 'პროექტის გვერდი',
+'vector-namespace-special' => 'სპეციალური გვერდი',
+'vector-namespace-talk' => 'განხილვა',
+'vector-namespace-template' => 'თარგი',
+'vector-namespace-user' => 'მომხმარებლის გვერდი',
+'vector-view-create' => 'შექმნა',
+'vector-view-edit' => 'რედაქტირება',
+'vector-view-history' => 'ისტორია',
+'vector-view-view' => 'კითხვა',
+'vector-view-viewsource' => 'წყაროს ხილვა',
+'actions' => 'მოქმედებები',
+'namespaces' => 'სახელთა სივრცე',
+'variants' => 'ვარიანტები',
'errorpagetitle' => 'შეცდომა',
'returnto' => 'დაბრუნდი $1-ზე.',
@@ -303,18 +347,22 @@ $messages = array(
'otherlanguages' => 'სხვა ენებზე',
'redirectedfrom' => '(გადმომისამართდა $1-დან)',
'redirectpagesub' => 'გადამისამართება გვერდზე',
-'lastmodifiedat' => 'ეს გვერდი ბოლოს განახლდა $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'ეს გვერდი ბოლოს განახლდა $2, $1.',
'viewcount' => 'ეს გვერდი შემოწმდა {{PLURAL:$1|ერთხელ|$1-ჯერ}}.',
'protectedpage' => 'დაბლოკილი გვერდი',
'jumpto' => 'გადასვლა:',
'jumptonavigation' => 'ნავიგაცია',
'jumptosearch' => 'ძიება',
+'view-pool-error' => 'უკაცრავად, მაგრამ სერვერები გადატვირთულია.
+შემოსულია ამ გვერდის სანახავად ძალიან ბევრი მოთხოვნა.
+გთხოვთ დაელოდოთ და გაიმეროთ მოთხოვნა ცოტა მოგვიანებით გაიმეორეთ.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}-ის შესახებ',
'aboutpage' => 'Project:შესახებ',
'copyright' => 'შინაარსი წარმოდგენილია $1 პირობებით.',
-'copyrightpagename' => 'ვიკიპედია საავტორო უფლებები',
'copyrightpage' => '{{ns:project}}:საავტორო უფლებები',
'currentevents' => 'მიმდინარე მოვლენები',
'currentevents-url' => 'Project:მიმდინარე მოვლენები',
@@ -322,8 +370,6 @@ $messages = array(
'disclaimerpage' => 'Project:პასუხისმგებლობის უარყოფა',
'edithelp' => 'დახმარება',
'edithelppage' => 'Help:ტექსტის რედაქტირება (მარტივი)',
-'faq' => 'ხშირი შეკითხვები',
-'faqpage' => 'Project:ხშირი შეკითხვები',
'helppage' => 'Help:დახმარება',
'mainpage' => 'მთავარი გვერდი',
'mainpage-description' => 'მთავარი გვერდი',
@@ -403,10 +449,6 @@ $messages = array(
«$1»
მოხდენილ იქნა ფუნქციიდან «$2».
მონაცემთა ბაზამ დააბრუნა შეცდომა «$3: $4».',
-'noconnect' => 'უკაცრავად! ვიკი გარკვეულ ტექნიკურ სიძნელეებს განიცდის და ვერ უკავშირდება მონაცემთა ბაზის სერვერს. <br />
-$1',
-'nodb' => 'მონაცემათა ბაზის $1 არჩევა ვერ ხერხდება',
-'cachederror' => 'ქვემოთ მოთხოვნილი გვერდის შენახული ვერსიაა და ის შესაძლოა არ იყოს განახლებული.',
'laggedslavemode' => 'ყურადღება: გვერდი შესაძლოა არ შეიცავდეს ბოლო ცვლილებებს.',
'readonly' => 'მონაცემთა ბაზა დახურულია',
'enterlockreason' => 'დაწერეთ ბლოკირების საბაბი, ასევე სავარაუდო ბლოკის მოხსნის თარიღი',
@@ -424,6 +466,8 @@ $1',
'readonly_lag' => 'მონაცემთა ბაზა ავტომატურად დაიხურა, სანამ შვილობილი ბაზის სერვერები მთავარ ბაზასთან სინქრონიზაციას ახდენს',
'internalerror' => 'შიდა შეცდომა',
'internalerror_info' => 'შიდა შეცდომა: $1',
+'fileappenderrorread' => 'შეუძლებელია "$1-ის" წაკითხვა დამატებისას.',
+'fileappenderror' => 'ვერ მოხერხდა "$1" შეერთება "$2"-თან',
'filecopyerror' => '"$1" ფაილის "$2"-ზე კოპირება ვერ მოხერხდა.',
'filerenameerror' => 'ფაილის სახელის შეცვლა "$1"-დან "$2"-ზე ვერ მოხერხდა.',
'filedeleteerror' => 'ფაილის "$1" წაშლა ვერ მოხერხდა.',
@@ -433,7 +477,8 @@ $1',
'unexpected' => 'გაუთვალისწინებელი სიდიდე: "$1"="$2".',
'formerror' => 'შეცდომა: ფორმის გაგზავნა ვერ მოხერხდა.',
'badarticleerror' => 'ეს მოქმედება ვერ შესრულდება ამ გვერდზე.',
-'cannotdelete' => 'აღნიშნული გვერდის ან ფაილის წაშლა შეუძლებელია (შესაძლოა, იგი უკვე წაშალა სხვა ადმინისტრატორმა).',
+'cannotdelete' => 'გვერდის ან ფაილის "$1" წაშლა შეუძლებელია.
+შესაძლოა, იგი უკვე წაშალა სხვა მომხმარებელმა.',
'badtitle' => 'არასწორი სათაური',
'badtitletext' => 'მოთხოვნილი გვერდის სათაური იყო არასწორი, ცარიელი, ან წარმოადგენდა შეცდომით გაკეთებულ ბმულს ენათაშორისი ან ინტერ-ვიკი სათაურიდან.',
'perfcached' => 'შემდეგი მონაცემები აღებულია ქეშიდან და შესაძლოა არ მოიცავს ბოლო ცვლილებებს',
@@ -466,7 +511,6 @@ $2',
'virus-unknownscanner' => 'უცნობი ანტივირუსი:',
# Login and logout pages
-'logouttitle' => 'მომხმარებლის სისტემიდან გასვლა',
'logouttext' => "'''თქვენ ამჟამად სისტემიდან გასული ხართ.'''
შეგიძლიათ გამოიყენოთ {{SITENAME}} ანონიმურად, ან შეგიძლიათ
@@ -475,7 +519,6 @@ $2',
'welcomecreation' => '== მოგესალმებით, $1! ==
თქვენი ანგარიში შექმნილია.
არ დაგავიწყდეთ თქვენი [[Special:Preferences|{{SITENAME}}-ის კონფიგურაციის]] შეცვლა.',
-'loginpagetitle' => 'მომხმარებლის რეგისტრაცია',
'yourname' => 'მომხმარებელი:',
'yourpassword' => 'პაროლი:',
'yourpasswordagain' => 'ხელმეორედ შეიყვანეთ პაროლი',
@@ -486,6 +529,7 @@ $2',
'nav-login-createaccount' => 'შესვლა',
'loginprompt' => '{{SITENAME}}-ში შესასვლელად საჭიროა კუკის (cookies) გააქტიურება.',
'userlogin' => 'შესვლა/ანგარიშის შექმნა',
+'userloginnocreate' => 'შესვლა',
'logout' => 'გასვლა',
'userlogout' => 'გასვლა',
'notloggedin' => 'შესული არ ხართ',
@@ -497,29 +541,8 @@ $2',
'createaccountmail' => 'ელ-ფოსტით',
'badretype' => 'თქვენს მიერ შეყვანილი პაროლები ერთმანეთს არ ემთხვევა.',
'userexists' => 'შეყვანილი სახელი უკვე გამოყენებულია. გთხოვთ აირჩიოთ სხვა სახელი.',
-'youremail' => 'ელექტრონული ფოსტა:',
-'username' => 'მომხმარებლის სახელი:',
-'uid' => 'მომხმარებლის იდენტიფიკაცია:',
-'prefs-memberingroups' => '{{PLURAL:$1|ჯგუფის|ჯგუფების}} წევრი:',
-'yourrealname' => 'ნამდვილი სახელი:',
-'yourlanguage' => 'ენა:',
-'yourvariant' => 'ვარიანტი',
-'yournick' => 'მეტსახელი:',
-'badsig' => 'არასწორი ნედლი ხელმოწერა; შეამოწმეთ HTML ჭდეები.',
-'badsiglength' => 'ხელმოწერა ძალიან გრძელია.
-უნდა შედგებოდეს მაქსიმუმ $1 ნიშნისაგან.',
-'yourgender' => 'სქესი:',
-'gender-unknown' => 'არ არის მითითებული',
-'gender-male' => 'მამრობითი',
-'gender-female' => 'მდედრობითი',
-'prefs-help-gender' => 'არასავალდებულო ველი: გამოიყენება პროგრამული უზრუნველყოფის იმ შეტყობინებებისთვის, რომლებიც ადამიანის სქესზეა დამოკიდებული.
-ეს ინფორმაცია საზოგადოებრივი იქნება.',
-'email' => 'ელ. ფოსტა',
-'prefs-help-realname' => 'ნამდვილი სახელის მითითება აუცილებელი არ არის, მაგრამ თუ მიუთითებთ ის გამოყენებული იქნება თქვენი ნამუშევრის აღსანიშნავად.',
'loginerror' => 'შეცდომა შესვლაში',
-'prefs-help-email' => 'ელ. ფოსტის მისამართი არასავალდებულოა, მაგრამ იძლევა ახალი პაროლის გამოგზავნის საშუალებას თქვენი პაროლის დავიწყების შემთხვევაში.
-ასევე შეგიძლიათ საშუალება მისცეთ სხვა მომხმარებლებს დაგიკავშირდნენ თქვენი მომხმარებლის გვერდის ან განხილვის გვერდის მეშვეობით თქვენი ვინაობის ჩვენების საჭიროების გარეშე.',
-'prefs-help-email-required' => 'თქვენი ელ-ფოსტის მისამართი აუცილებელია.',
+'createaccounterror' => '$1 ანგარიშის შექმნა ვერ მოხერხდა.',
'nocookiesnew' => 'მომხმარებლის ჩანაწერი შექმნილია, მაგრამ თქვენ არ გაგივლიათ რეგისტრაცია. {{SITENAME}} იყენებს cookies, რომლებიც თქვენს ბრაუზერში გათიშულია. გთხოვთ, აამოქმედოთ ისინი და შემდგომ ხელახლა გაიარეთ რეგისტრაცია.',
'nocookieslogin' => '{{SITENAME}} მომხმარებლების შესვლისთვის იყენებს "ქუქის ჩანაწერს". თქვენ იგი გათიშეთ. გთხოვთ, ჩართოთ ისინი და ხელმეორედ მოსინჯოთ.',
'noname' => 'თქვენს მიერ მითითებული მომხმარებლის სახელი ქმედითი არ არის.',
@@ -530,10 +553,12 @@ $2',
შეამოწმეთ სახელის დაწერა ან[[Special:UserLogin/signup|შექმენით ახალი ანგარიში]].',
'nosuchusershort' => 'მომხმარებელი სახელით "<nowiki>$1</nowiki>" არ არსებობს. შეამოწმეთ მართლწერა.',
'nouserspecified' => 'საჭიროა მომხმარებლის სახელის მითითება.',
+'login-userblocked' => 'ეს მომხმარებელი დაბლოკილია. სისტემაში შესვლა არაა ნებადართული.',
'wrongpassword' => 'პაროლი არასწორად არის შეყვანილი. სცადეთ განმეორებით.',
'wrongpasswordempty' => 'პაროლი არ არის შეყვანილი. სცადეთ განმეორებით.',
-'passwordtooshort' => 'პაროლი არასწორადაა შერჩეული ან ძალიან მოკლეა.
-იგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს და უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.',
+'passwordtooshort' => 'შეტანილი პაროლი ძალიან მოკლეა.
+იგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს.',
+'password-name-match' => 'შეტანილი პაროლი უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.',
'mailmypassword' => 'ახალი პაროლის გამოგზავნა',
'passwordremindertitle' => 'ახალი დროებითი პაროლი {{SITENAME}}-თვის',
'passwordremindertext' => "ვიღაცამ (შესაძლოა თქვენ, IP მისამართით $1) მოითხოვა
@@ -546,6 +571,7 @@ $2',
აღარ გსურთ მისი შეცვლა, შეგიძლიათ ყურად არ იღოთ ეს შეტყობინება
და გააგრძელოთ ძველი პაროლის გამოყენება.",
'noemail' => 'აქ "$1" მომხმარებლის ელ. ფოსტის მისამართი მითითებული არ არის.',
+'noemailcreate' => 'თქვენ უნდა მიუთითოთ ელ-ფოსტის კორექტული მისამართი.',
'passwordsent' => 'ახალი პაროლი გაიგზავნა ელ-ფოსტით მომხმარებელს "$1".
გთხოვთ შეხვიდეთ სისტემაში მისი მიღების შემდეგ.',
'blocked-mailpassword' => 'თქვენი IP მისამართი რედაქტირებისთვის დაბლოკილია, ამიტომ არ შეგიძლიათ პაროლის აღდგენის გამოყენება კონფლიქტის გამო.',
@@ -570,9 +596,11 @@ $1 საათში.',
'createaccount-text' => 'ვიღაცამ შექმნა ანგარიში სახელით "$2" და პაროლით "$3" თქვენი ელექტრონული ფოსტისთვის {{SITENAME}}-ში ($4). გთხოვთ დარეგისტრირდეთ და შეცვალოთ პაროლი.
შეგიძლიათ ყურადღება არ მიაქციოთ ამ შეტყობინებას, თუ ანგარიში შეცდომით შეიქმნა.',
+'usernamehasherror' => 'მომხმარებლის სახელი არ უნდა შეიცავდეს დიეზის სიმბოლოს.',
'login-throttled' => 'თქვენ განახორციელეთ ძალიან ბევრი პაროლის შეყვანა ამ ანგარიშისთვის.
გამორებით შეყვანამდე გთხოვთ დაელოდოთ.',
'loginlanguagelabel' => 'ენა: $1',
+'suspicious-userlogout' => 'თქვენი მოთხოვნა გასვლის შესახებ გაუქმებულია, რადგანაც იგი გავს ქეშირებადი პროქსის ან არაკორექტული ბრაუზერის მოთხოვნას.',
# Password reset dialog
'resetpass' => 'შეცვალეთ პაროლი',
@@ -587,11 +615,10 @@ $1 საათში.',
'resetpass_forbidden' => 'პაროლის შეცვლა შეუძლებელია',
'resetpass-no-info' => 'კონკრეტულად ამ გვერდთან სამუშაოდ თქვენ უნდა წარადგინოთ თავი სისტემისადმი.',
'resetpass-submit-loggedin' => 'პაროლის შეცვლა',
+'resetpass-submit-cancel' => 'გაუქმება',
'resetpass-wrong-oldpass' => 'არასწორი დროებითი ან მოქმედი პაროლი.
შესაძლოა თქვენ წარმატებით შეცვალეთ პაროლი ან მოითხოვეთ ახალი.',
'resetpass-temp-password' => 'დროებითი პაროლი:',
-'resetpass-logentry' => 'შეცვლილია პაროლი $1-სთვის',
-'resetpass-comment' => 'პაროლის შეცვლის მიზეზი:',
# Edit page toolbar
'bold_sample' => 'მუქი ტექსტი',
@@ -666,7 +693,6 @@ $1 საათში.',
'blockededitsource' => "ქვემოთ მოყვანილია '''$1'''-ში თქვენი რედაქტირების ტექსტი:",
'whitelistedittitle' => 'რედაქტირება საჭიროებს სისტემაში შესვლას',
'whitelistedittext' => 'გვერდების რედაქტირებისათვის თქვენ გესაჭიროებათ $1.',
-'confirmedittitle' => 'რედაქტირებისთვის საჭიროა ელფოსტის დამოწმება',
'confirmedittext' => 'გვერდების დარედაქტირებამდე უნდა დაადასტუროთ თქვენი ელფოსტის მისამართი. გთხოვთ [[Special:Preferences|მომხმარებლის პარამეტრებში]] მიუთითოთ და დაამოწმოთ ელფოსტის მისამართი.',
'nosuchsectiontitle' => 'სექცია არ არსებობს',
'nosuchsectiontext' => 'თქვენ სცადეთ არარსებული სექციის რედაქტირება.
@@ -693,9 +719,16 @@ $1 საათში.',
თქვენ შეგიძლიათ [[Special:Search/{{PAGENAME}}|მოძებნოთ ამ გვერდის სათაური]] სხვა გვერდებზე,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} მოძებნოთ შესაბამისი ჟურნალები],
ან [{{fullurl:{{FULLPAGENAME}}|action=edit}} დაიწყოთ ამ გვერდის რედაქტირება]</span>.',
+'noarticletext-nopermission' => 'ამ დროისთვის ეს გვერდი ცარიელია.
+ქვენ შეგიძლიათ [[Special:Search/{{PAGENAME}}|მოძებნოთ ეს სიტყვა]] სხვა გვერდებზე,
+ან <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} შესაბამის ჟურნალებში]</span>',
'userpage-userdoesnotexist' => 'ანგარიში «$1» არ არსებობს. დარწმუნდით, რომ მართლაც გსურთ ამ ანგარიშის შექმნა ან შესწორება.Убедитесь, что вы действительно желаете создать или изменить эту страницу.',
+'userpage-userdoesnotexist-view' => 'მომხმარებელი "$1" არ არის დარეგისტრირებული.',
+'blocked-notice-logextract' => 'ეს მომხმარებელი უკვე დაიბლოკა.
+დაბლოკვის მიზეზი შემდეგშია:',
'clearyourcache' => "'''შენიშვნა:''' შენახვის შემდეგ შესაძლოა დაგჭირდეთ ბრაუზერის ქეშის გაწმენდა ცვლილებების სანახავად. '''Mozilla / Firefox / Safari:''' დააჭირეთ ''Shift'' ''Reload''-ზე დაწკაპებისას, ან დააჭირეთ ''Ctrl-Shift-R'' (''Cmd-Shift-R'' Apple Mac-ზე); '''IE:''' დააჭირეთ ''Ctrl'' ''Refresh''-ზე დაწკაპებისას, ან დააჭირეთ ''Ctrl-F5''; '''Konqueror:''': მხოლოდ დააწკაპეთ ''Reload'' ღილაკს, ან დააჭირეთ ''F5''; '''Opera''' შესაძლოა საჭირო გახდეს ქეშის სრულიად გაწმენდა ''Tools→Preferences''-დან.",
-'usercssjsyoucanpreview' => "'''რჩევა:''' შენახვამდე გამოიყენეთ 'წინასწარი გადახედვის' ღილაკი თქვენი ახალი CSS/JS ტესტირებისთვის.",
+'usercssyoucanpreview' => "'''რჩევა:''' შენახვამდე გამოიყენეთ 'წინასწარი გადახედვის' ღილაკი თქვენი ახალი CSS ტესტირებისთვის.",
+'userjsyoucanpreview' => "'''რჩევა:''' შენახვამდე გამოიყენეთ 'წინასწარი გადახედვის' ღილაკი თქვენი ახალი JS ტესტირებისთვის.",
'usercsspreview' => "'''გახსოვდეთ, რომ თქვენ მხოლოდ წინასწარ გადახედვას უყურებთ თქვენს მომხმარებლის CSS-ს, ის ჯერ შენახული არ არის!'''",
'userjspreview' => "'''გახსოვდეთ, რომ თქვენ მხოლოდ ტესტირებას უკეთებთ ან აკვირდებით წინასწარ ხედს თქვენი მომხმარებლის ჯავასკრიპტს - ის ჯერ არ არის დამახსოვრებული!'''",
'userinvalidcssjstitle' => "'''ყურადღება:''' გაფორმების თემა «$1» არ არის ნაპოვნი. გახსოვდეთ, რომ .css და .js გვერდებს უნდა ჰქონდეს მხოლოდ ზეხაზური სათაური, მაგ. «{{ns:user}}:ვიღაცა/monobook.css», და არა «{{ns:user}}:ვიღაცა/Monobook.css».",
@@ -735,27 +768,34 @@ $1 საათში.',
სასურველია ტექსტის ასლი შეინახოთ ტექსტურ რედაქტორში და მოგვიანებით შემოიტანოთ.
მონაცემთა ბაზიზ დამბლოკველმა ადმინისტრატორმა შემდეგი მიზეზი დატოვა: $1",
-'protectedpagewarning' => "'''გაფრთხილება: ეს გვერდი დაბლოკილია და მისი რედაქტირება შეუძლიათ მხოლოდ მომხმარებლებს sysop პრივილეგიებით.'''",
-'semiprotectedpagewarning' => "'''შენიშვნა:''' ეს გვერდი დაბლოკილია და მისი რედაქტირება მხოლოდ რეგისტრირებულ მომხმარებლებს შეუძლიათ.",
+'protectedpagewarning' => "'''ყურადღება: ეს გვერდი დაბლოკილია და მისი რედაქტირება შეუძლიათ მხოლოდ მომხმარებლებს ადმინისტრატორის უფლებებით'''
+იხილეთ დაცვის ჟურნალის ჩანაწერი",
+'semiprotectedpagewarning' => "'''ყურადღება:''' ეს გვერდი დაბლოკილია და მისი რედაქტირება მხოლოდ რეგისტრირებულ მომხმარებლებს შეუძლიათ.
+იხილეთ ჟურნალი დამატებითი ინფორმაციისთვის:",
'cascadeprotectedwarning' => "'''გაფრთხილება:''' ეს გვერდი ჩაკეტილია ისე რომ მისი რედაქტირება მხოლოდ ადმინისტრატორებს შეუძლია, რადგან იგი ეკუთვნის შემდეგ კასკადურად დაცვის {{PLURAL:$1|გვერდს|გვერდებს}}:",
-'titleprotectedwarning' => "'''გაფრთხილება. გვერდი ამ სათაურით იყო დაცული, მისი რედაქტირება შეუძლიათ მხოლოდ მომხმარებლებს [[Special:ListGroupRights|სპეციალური უფლებებით]].'''",
-'templatesused' => 'ამ გვერდზე გამოყენებული თარგები:',
-'templatesusedpreview' => 'თარგები, რომლებიც წინასწარ გადახედვის გვერდზეა გამოყენებული:',
-'templatesusedsection' => 'ამ სექციაში გამოყენებული თარგები:',
+'titleprotectedwarning' => "'''ყურადღება. გვერდი ამ სათაურით იყო დაცული, მისი რედაქტირება შეუძლიათ მხოლოდ მომხმარებლებს [[Special:ListGroupRights|სპეციალური უფლებებით]].'''
+იხილეთ ჟურნალი დამატებითი ინფორმაციისთვის:",
+'templatesused' => 'ამ გვერდზე გამოყენებული {{PLURAL:$1|თარგი|თარგები}}:',
+'templatesusedpreview' => '{{PLURAL:$1|თარგი, რომელიც|თარგები, რომლებიც}} წინასწარ გადახედვის გვერდზეა გამოყენებული:',
+'templatesusedsection' => 'ამ სექციაში გამოყენებული {{PLURAL:$1|თარგი|თარგები}}:',
'template-protected' => '(დაცული)',
'template-semiprotected' => '(ნახევრად დაცული)',
'hiddencategories' => 'ეს გვერდი გაერთიანებულია $1 დამალულ კატეგორიაში.',
'nocreatetitle' => 'გვერდის შექმნა ლიმიტირებულია',
'nocreatetext' => 'ამ გვერდზე შეუძლებელია ახალი გვერდის შექმნა არსებული აკრძალვის გამო. თქვენ შეგიძლიათ უკან დაბრუნება და არსებული გვერდის რედაქტირება ან [[სპეციალური:Userlogin|შესვლა და ანგარიშის შექმნა]]',
'nocreate-loggedin' => 'თქვენ არ გაქვთ ახალი გვერდების შექმნის უფლება.',
+'sectioneditnotsupported-title' => 'სექციის რედაქტირება ვერ ხერხდება',
+'sectioneditnotsupported-text' => 'სექციის რედაქტირება გათიშულია ამ გვერდისთვის',
'permissionserrors' => 'ნებართვის შეცდომა',
'permissionserrorstext' => 'თქვენ არ გაქვთ ამის გაკეთების უფლება, შემდეგი {{PLURAL:$1|მიზეზის|მიზეზების}} გამო:',
'permissionserrorstext-withaction' => 'თქვენ არ გაქვთ ამ მოქმედების - $2 განხორციელების ნებართვა შემდეგი $1 მიზეზის გამო:',
-'recreate-deleted-warn' => "'''გაფრთხილება: თქვენ ხელახლა ქმნით გვერდს, რომელიც ადრე წაშლილ იქნა.'''
+'recreate-moveddeleted-warn' => "'''გაფრთხილება: თქვენ ხელახლა ქმნით გვერდს, რომელიც ადრე წაშლილ იქნა.'''
გთხოვთ დაფიქრდეთ, მისაღები არის თუ არა ამ გვერდის რედაქტირების გაგრძელება.
ინფორმაციისთვის ქვემოთ მოყვანილია ამ გვერდის წაშლის ისტორია:",
-'deletelog-fulllog' => 'სრული ჟურნალის ნახვა',
+'moveddeleted-notice' => 'ეს გვერდი წაიშალა
+ინფორმაციის მისაღებად ქვემოთ წარმდგენილია შესაბამისი ჩანაწერები წაშლისა და გადაქრმევის ჟურნალებიდან.',
+'log-fulllog' => 'ყველა ჟურნალის ხილვა',
'edit-hook-aborted' => 'შესწორება გაუქმებულია გადამჭერით.
დამატებითი ახსნა არ ჩაწერილა.',
'edit-gone-missing' => 'გვერდის განახლეა შეუძლებელია.
@@ -777,6 +817,7 @@ $1 საათში.',
'post-expand-template-argument-category' => 'გვერდები, რომლებიც შეიცავენ თარგების გამოტოვებულ მნიშვნელობებს',
'parser-template-loop-warning' => 'აღმოჩენილია ლუპი თარგ: [[$1]]-ში',
'parser-template-recursion-depth-warning' => 'თარგის რეკურსიის სიღრმე აემატება დაშვებულს ($1)',
+'language-converter-depth-warning' => 'ენათა გადამუშავების კონვერციის ლიმიტი ამოწურულია ($1)',
# "Undo" feature
'undo-success' => 'რედაქტირების გაუქმება შესაძლებელია. გთხოვთ შეამოწმოთ განსხვავება ქვევით, რათა დარწმუნდეთ, რომ ეს ის არის რაც თქვენ გსურთ, შემდეგ კი შეინახეთ ცვლილებები რათა დაასრულოთ რედაქტირების გაუქმება.',
@@ -796,7 +837,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'currentrev' => 'მიმდინარე შესწორება',
'currentrev-asof' => 'მიმდინარე ცვლილება $1 მდგომარეობით',
'revisionasof' => '$1-ის ვერსია',
-'revision-info' => '$1-ის ვერსია, შეტანილი $2-ის მიერ', # Additionally available: $3: revision id
+'revision-info' => '$1-ის ვერსია, შეტანილი $2-ის მიერ',
'previousrevision' => '←წინა ვერსია',
'nextrevision' => 'შემდეგი ვერსია→',
'currentrevisionlink' => 'მიმდინარე ვერსია',
@@ -809,7 +850,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
*ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.
*შემოკლებები: (მიმდ.) = სხვაობა მიმდინარე ვერსიასთან, (ბოლო) = სხვაობა წინა ვერსიასთან, მ = მცირე შესწორება.',
'history-fieldset-title' => 'დათვალიერების ისტორია',
-'deletedrev' => '[წაშლილია]',
+'history-show-deleted' => 'მხოლოდ წაშლილი',
'histfirst' => 'პირველი',
'histlast' => 'უკანასკნელი',
'historysize' => '($1 ბაიტი)',
@@ -818,57 +859,116 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
# Revision feed
'history-feed-title' => 'რედაქტირების ისტორია',
'history-feed-description' => 'ამ გვერდის შესწორებათა ისტორია ვიკიში',
-'history-feed-item-nocomment' => '$1 $2-ზე', # user at time
+'history-feed-item-nocomment' => '$1 $2-ზე',
'history-feed-empty' => 'თქვენს მიერ მოძიებული გვერდი არ არსებობს.
შესაძლოა იგი წაშლილ იქნა ვიკიდან, ან მისი სათაური შეიცვალა.
სცადეთ [[Special:Search|searching on the wiki]] მსგავსი გვერდების სანახავად.',
# Revision deletion
-'rev-deleted-comment' => '(კომენტარი წაიშალა)',
-'rev-deleted-user' => '(მომხმარებლის სახელი წაიშალა)',
-'rev-deleted-event' => '(ჟურნალის ჩანაწერი წაშლილია)',
-'rev-delundel' => 'ჩვენება/დამალვა',
-'revisiondelete' => 'ცვლილებების წაშლა/დაბრუნება',
-'revdelete-nooldid-title' => 'სამიზნო ვერსია არ არის მითითებული',
-'revdelete-nooldid-text' => 'თქვენ არ დაგინიშნიათ სამიზნო ვერსია (ვერსიები) ამ ფუნქციის გასახორციებლად.',
-'revdelete-nologtype-title' => 'არ არის მითითებული ჟურნალის ტიპი.',
-'revdelete-nologtype-text' => 'თქვენ არ მოგინიშნავთ ჟურნალის ტიპი, რომელშიც უნდა განახორციელოთ მოქმედება.',
-'revdelete-toomanytargets-title' => 'ძალიან ბევრი მიზანია',
-'revdelete-nologid-title' => 'ჟურნალის არასწორი ჩანაწერი',
-'revdelete-nologid-text' => 'თქვენ არ მიგითითებიათ სამიზნო ჩანაწერი ჟურნალში მოქმედების განსახორციებლად ამ მოთხოვნილი ჩანაწერი არ არსებობს.',
-'revdelete-selected' => "'''[[:$1]]-ის {{PLURAL:$2|მონიშნული ცვლილება|მონიშნული ცვლილებები}}:'''",
-'logdelete-selected' => "'''ჟურნალის {{PLURAL:$1|არჩეული ჩანაწერი|არჩეული ჩანაწერები}}:'''",
-'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს მხოლოდ ამ შემთხვევებში:
+'rev-deleted-comment' => '(კომენტარი წაიშალა)',
+'rev-deleted-user' => '(მომხმარებლის სახელი წაიშალა)',
+'rev-deleted-event' => '(ჟურნალის ჩანაწერი წაშლილია)',
+'rev-deleted-user-contribs' => '[მომხმარებლის სახელი ან IP დამალულია. რეაქტირება ასევე დამალულია]',
+'rev-deleted-text-permission' => "გვერდის ეს ჩასწორება '''წაიშალა'''.
+განმარტება შესაძლოა მოცემული იყოს [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} წაშლათა ჟურნალში].",
+'rev-deleted-text-unhide' => "გვერდის მოცემული ჩასწორება '''წაშლილია'''.
+განმარტება შესაძლოა მოცემული იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლის ჟურნალში].
+როგორც ადმინისტრატორს, სურვილისამებრ, თქვენ მაინც შეგიძლიათ [$1 იხილოთ ეს ჩასწორება].",
+'rev-suppressed-text-unhide' => "გვერდის ეს ნაწილი '''დაიმალა'''.
+შესაძლოა, რომ ახსნა მოცემულია [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} დამალვათა ჟურნალში].
+თქვენ შეგიძლიათ ამ [$1 გვერდის ნახვა], რადგანაც ადმინისტრატორი ბრძანდებით.",
+'rev-deleted-text-view' => "გვერდის ეს ვერსია '''წაიშალა'''.
+როგორც ადმინისტრატორს, თქვენ შეგიძლიათ მისი ნახვა; შესაძლოა დეტალები მითითებული იყო [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლათა ჟურნალში].",
+'rev-suppressed-text-view' => "გვერდის ეს ვერსია '''დამალულ იქნა'''.
+როგორც ადმინისტრატორი, თქვენ შეგიძლიათ მისი ხილვა.
+შესაძლოა დამატებითი ინფორმაცია მოცემულია [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} დამალვათა ჟურნალში].",
+'rev-deleted-no-diff' => "არ შეგიძლიათ ამ განსხვავების ნახვა, ვინაიდან ერთ-ერთი ცვლილება '''წაიშალა'''.
+დეტალები შესაძლოა მოცემული იყოს [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} წაშლათა ჟურნალში].",
+'rev-suppressed-no-diff' => "თქვენ არ შეგიძლიათ ამ განსხვავების ნახვა, რადგან ერთ-ერთი ცვლილება '''წაშლილია'''.",
+'rev-deleted-unhide-diff' => "გვერდის ერთ-ერთი ვერსია '''წაიშალა'''.
+შესაძლოა თქვენ იპოვით დამატებით ინფორმაციას[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} წაშლათა ჟურნალში].
+თქვენ შეგიძლიათ [$1 მოცემული ვერსიის ხილვა ], რადგანაც ადმინისტრატორი ბრძანდებით.",
+'rev-suppressed-unhide-diff' => "გვერდის ერთ-ერთი ვერსია '''წაიშალა'''.
+შესაძლოა თქვენ იპოვით დამატებით ინფორმაციას[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} დამალვათა ჟურნალში].
+თქვენ შეგიძლიათ [$1 მოცემული ვერსიის ხილვა ], რადგანაც ადმინისტრატორი ბრძანდებით.",
+'rev-deleted-diff-view' => "გვერდის ერთ-ერთი ვერსია '''წაიშალა'''.
+როგორც ადმინისტრატორს, თქვენ შეგიძლიათ მისი ნახვა; შესაძლოა დეტალები მითითებული იყო [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლათა ჟურნალში].",
+'rev-suppressed-diff-view' => "გვერდის ეს ვერსია '''დამალულ იქნა'''.
+როგორც ადმინისტრატორი, თქვენ შეგიძლიათ მისი ხილვა.
+შესაძლოა დამატებითი ინფორმაცია მოცემულია [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} დამალვათა ჟურნალში].",
+'rev-delundel' => 'ჩვენება/დამალვა',
+'rev-showdeleted' => 'ჩვენება',
+'revisiondelete' => 'ცვლილებების წაშლა/დაბრუნება',
+'revdelete-nooldid-title' => 'სამიზნო ვერსია არ არის მითითებული',
+'revdelete-nooldid-text' => 'თქვენ არ დაგინიშნიათ სამიზნო ვერსია (ვერსიები) ამ ფუნქციის გასახორციებლად.',
+'revdelete-nologtype-title' => 'არ არის მითითებული ჟურნალის ტიპი.',
+'revdelete-nologtype-text' => 'თქვენ არ მოგინიშნავთ ჟურნალის ტიპი, რომელშიც უნდა განახორციელოთ მოქმედება.',
+'revdelete-nologid-title' => 'ჟურნალის არასწორი ჩანაწერი',
+'revdelete-nologid-text' => 'თქვენ არ მიგითითებიათ სამიზნო ჩანაწერი ჟურნალში მოქმედების განსახორციებლად ამ მოთხოვნილი ჩანაწერი არ არსებობს.',
+'revdelete-no-file' => 'მოთხოვნილი ფაილი არ არსებობს.',
+'revdelete-show-file-confirm' => 'დარწმუნებული ხართ, რომ გსურთ ამ ფაილის წაშლილი ვერსიის ნახვა,«<nowiki>$1</nowiki>» $2, $3-დან ?',
+'revdelete-show-file-submit' => 'ჰო',
+'revdelete-selected' => "'''[[:$1]]-ის {{PLURAL:$2|მონიშნული ცვლილება|მონიშნული ცვლილებები}}:'''",
+'logdelete-selected' => "'''ჟურნალის {{PLURAL:$1|არჩეული ჩანაწერი|არჩეული ჩანაწერები}}:'''",
+'revdelete-text' => "'''გვერდებისა და მოქმედებების წაშლილი ნაწილები დარჩება ისტორიაში და ჟურნალებში, მაგრამ მათ ნაწილს ვერ ნახავენ ჩვეულებრივი მომხმარებლები.'''
+პროექტის ადმინისტრატორებს ექნებათ შესაძლებლობა {{SITENAME}}ში დაინახონ ღია და არწაშლილი ნაწილი, და შეძლებენ აღადგინონ იგივე ინტერფეისის მეშვეობით, გარდა იმ შემთხვევებისა, როდესაც დამატებითი შეზღუდვა მოქმედებს.",
+'revdelete-confirm' => 'გთხოვთ დაადასტუროთ, რომ გსურთ ქმედების განხორციელება. ასევე ვიმედოვნებთ, რომ ყველაფერს აკეთებთ [[{{MediaWiki:Policy-url}}|წესებთან შესაბამისობაში]].',
+'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს მხოლოდ ამ შემთხვევებში:
* მიუსადეგი პირადი ინფორმაცია
*: ''სახლის მისამართი, ტელეფონისა და პასპორტის ნომერი და მისთ. ''",
-'revdelete-legend' => 'შეზღუდვის დაყენება',
-'revdelete-hide-text' => 'შეცვლილი ტექსტის დამალვა',
-'revdelete-hide-name' => 'დამალეთ მოქმედება და მისი ობიექტი',
-'revdelete-hide-comment' => 'რედაქტირების კომენტარის დამალვა',
-'revdelete-hide-user' => 'რედაქტორის მომხ. სახელის/IP-ს დამალვა',
-'revdelete-hide-restricted' => 'დამალეთ მონაცემები ადმინთაგანაც',
-'revdelete-suppress' => 'დამალეთ მონაცემები ადმინთაგანაც',
-'revdelete-hide-image' => 'ფაილის შინაარსის დამალვა',
-'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
-'revdelete-log' => 'მიზეზი:',
-'revdelete-logentry' => 'გვერდის ვერსიის ხილვადობის შეცვლა [[$1]]',
-'logdelete-logentry' => 'შეცვლილია მოვლენის ხილვადობა [[$1]]-თვის',
-'revdelete-success' => "'''ვერსიის ხილვადობა შეიცვალა.'''",
-'logdelete-success' => 'მოვლენის ხილვადობა წარმატებით შეიცვალა.',
-'revdel-restore' => 'ხილვადობის შეცვლა',
-'pagehist' => 'გვერდის ისტორია',
-'deletedhist' => 'წაშლილი ისტორია',
-'revdelete-content' => 'შინაარსი',
-'revdelete-summary' => 'ცვლილებების აღწერა',
-'revdelete-uname' => 'მომხმარებლის სახელი',
-'revdelete-restricted' => 'შეზღუდვა ადმინისტრატორთადმი',
-'revdelete-unrestricted' => 'შეზღუდვები მოხსნილია ადმინისტრატორთადმი',
-'revdelete-hid' => 'დამალა $1',
-'revdelete-unhid' => 'აღდგა $1',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|ვერსია|ვერსიები|ვერსიებისთვის}}',
-'logdelete-log-message' => '$1 $2 {{PLURAL:$2|მოვლენისათვის|მოვლენისათვის}}',
+'revdelete-legend' => 'შეზღუდვის დაყენება',
+'revdelete-hide-text' => 'შეცვლილი ტექსტის დამალვა',
+'revdelete-hide-image' => 'ფაილის შინაარსის დამალვა',
+'revdelete-hide-name' => 'დამალეთ მოქმედება და მისი ობიექტი',
+'revdelete-hide-comment' => 'რედაქტირების კომენტარის დამალვა',
+'revdelete-hide-user' => 'რედაქტორის მომხ. სახელის/IP-ს დამალვა',
+'revdelete-hide-restricted' => 'დამალეთ მონაცემები ადმინთაგანაც',
+'revdelete-radio-same' => '(არ შეცვალოთ)',
+'revdelete-radio-set' => 'დიახ',
+'revdelete-radio-unset' => 'არა',
+'revdelete-suppress' => 'დამალეთ მონაცემები ადმინთაგანაც',
+'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
+'revdelete-log' => 'მიზეზი:',
+'revdelete-submit' => '{{PLURAL:$1|არჩეული ვერსიის|არჩეული ვერსიების}} განხორციელება',
+'revdelete-logentry' => 'გვერდის ვერსიის ხილვადობის შეცვლა [[$1]]',
+'logdelete-logentry' => 'შეცვლილია მოვლენის ხილვადობა [[$1]]-თვის',
+'revdelete-success' => "'''ვერსიის ხილვადობა შეიცვალა.'''",
+'revdelete-failure' => "'''ვერსიის ხილვადობა არ შეიძლება დაყენებული იქნას:'''
+$1",
+'logdelete-success' => 'მოვლენის ხილვადობა წარმატებით შეიცვალა.',
+'logdelete-failure' => "'''ჟურნალის ხილვადობა არ არის დაყენებული:'''
+$1",
+'revdel-restore' => 'ხილვადობის შეცვლა',
+'pagehist' => 'გვერდის ისტორია',
+'deletedhist' => 'წაშლილი ისტორია',
+'revdelete-content' => 'შინაარსი',
+'revdelete-summary' => 'ცვლილებების აღწერა',
+'revdelete-uname' => 'მომხმარებლის სახელი',
+'revdelete-restricted' => 'შეზღუდვა ადმინისტრატორთადმი',
+'revdelete-unrestricted' => 'შეზღუდვები მოხსნილია ადმინისტრატორთადმი',
+'revdelete-hid' => 'დამალა $1',
+'revdelete-unhid' => 'აღდგა $1',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|ვერსია|ვერსიები|ვერსიებისთვის}}',
+'logdelete-log-message' => '$1 $2 {{PLURAL:$2|მოვლენისათვის|მოვლენისათვის}}',
+'revdelete-hide-current' => 'ჩანაწერის დამალვის შეცდიმა $2, $1: ეს არის მოქმედი ვერსია:
+იგი არ შეიძლება დამალული იქნას.',
+'revdelete-show-no-access' => 'ჩანაწერის გახსნის შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
+'revdelete-modify-no-access' => 'ჩანაწერის გასწორების შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
+'revdelete-modify-missing' => 'შეცდომა ID $1 ნაწეის რედაქტირებისას, იგი არ იმყოფება მონაცემთა ბაზაში!',
+'revdelete-no-change' => "'''ყურადღება:''' ჩანაწერს $2, $1 უკვე ავს მოთხოვნილი ხილვადობის კონფიგურაცია.",
+'revdelete-concurrent-change' => 'შეცდომა ჩანაწერის შესწორებისას $2-დან, $1: მისი სტატუსი უკვე შეცვლილია სხვა ვინმეს მიერ თქვენი რედაქირეის სესიის დროს.
+თხოვთ შეამოწმოთ ყველა ჟღნალი',
+'revdelete-only-restricted' => 'თქვენ ვერ დამალავთ ჩანაწერს ($2 $1) ადმინისტრატორისგან მანამ, სანამ არ აირჩევთ დამალვის სხვა პარამეტრებს.',
+'revdelete-reason-dropdown' => '*წაშლის გავრცელებული მიზეზები
+** საავტორო უფლებების დარღვევა
+** მიუღებელი პირადი ინფორმაცია
+** პოტენციურად ღირსების შემლახველი ინფორმაცია',
+'revdelete-otherreason' => 'სხვა/დამატებითი მიზეზი:',
+'revdelete-reasonotherlist' => 'სხვა მიზეზი',
+'revdelete-edit-reasonlist' => 'წაშლის მიზეზების რედაქტირება',
+'revdelete-offender' => 'ავტორის რედაქცია:',
# Suppression log
'suppressionlog' => 'დამალვათა ჟურნალი',
@@ -903,67 +1003,13 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'mergelogpagetext' => 'ქვემოთ წარმოდგენილია ამ გვერდის ბოლო გაერთიანებათა სია',
# Diffs
-'history-title' => '"$1" ცვლილებათა ისტორია',
-'difference' => '(სხვაობა ვერსიებს შორის)',
-'lineno' => 'ხაზი $1:',
-'compareselectedversions' => 'არჩეული ვერსიების შედარება',
-'visualcomparison' => 'ვიზუალური შედარება',
-'wikicodecomparison' => 'ვიკი ტექსტის შედარება',
-'editundo' => 'გაუქმება',
-'diff-multi' => '({{PLURAL:$1|ერთი|$1}} შუა ვერსია არ არის ნაჩვენები.)',
-'diff-movedto' => 'გადატანილი იქნა $1-ზე',
-'diff-styleadded' => '$1 სტილი დაემატა',
-'diff-added' => '$1 დაამაატა.',
-'diff-changedto' => 'შეიცვალა $1-ით',
-'diff-movedoutof' => 'გადმოტანილი იქნა $1-ზე',
-'diff-styleremoved' => 'სტილი $1 მოშორებულია',
-'diff-removed' => '$1-მა წაშალა.',
-'diff-changedfrom' => 'შეიცვალა $1-დან',
-'diff-src' => 'წყარო',
-'diff-withdestination' => 'მისამართით $1',
-'diff-with' => '&#32; $1 $2-თან',
-'diff-with-final' => '&#32;და $1 $2',
-'diff-width' => 'სიგანე',
-'diff-height' => 'სიმაღლე',
-'diff-p' => "'''აბზაცი'''",
-'diff-blockquote' => "'''ციტატა'''",
-'diff-h1' => "'''თავი (დონე 1)'''",
-'diff-h2' => "'''თავი (დონე 2)'''",
-'diff-h3' => "'''თავი (დონე 3)'''",
-'diff-h4' => "'''თავი (დონე 4)'''",
-'diff-h5' => "'''თავი (დონე 5)'''",
-'diff-pre' => "'''მოცემული ფორმატის ბლოკი'''",
-'diff-div' => "'''დაყოფა'''",
-'diff-ul' => "'''დაულაგებელი სია'''",
-'diff-ol' => "'''დალაგებული სია'''",
-'diff-li' => "'''სიის ელემენტი'''",
-'diff-table' => "'''ტაბულა'''",
-'diff-tbody' => "'''ტაბულის შინაარსი'''",
-'diff-tr' => "'''ხაზი'''",
-'diff-td' => "'''უჯრედი'''",
-'diff-th' => "'''სათაური'''",
-'diff-br' => "'''გარღვევა'''",
-'diff-hr' => "'''ჰორიზონტალური ხაზი'''",
-'diff-code' => "'''კომპიუტერული კოდის ბლოკი'''",
-'diff-dl' => "'''მინიშნებათა სია'''",
-'diff-dt' => "'''მარტივი ტერმინი'''",
-'diff-dd' => "'''ახსნა'''",
-'diff-input' => "'''შეყვანა'''",
-'diff-form' => "'''ფორმა'''",
-'diff-img' => "'''გამოსახულება'''",
-'diff-span' => "'''გარღვევა'''",
-'diff-a' => "'''ბმული'''",
-'diff-i' => "'''კურსივი'''",
-'diff-b' => "'''მსუქნი'''",
-'diff-strong' => "'''გამოყოფა «strong»'''",
-'diff-em' => "'''გამოყოფა «em»'''",
-'diff-font' => "'''შრიფტი'''",
-'diff-big' => "'''დიდი'''",
-'diff-del' => "'''წაშლილია'''",
-'diff-tt' => "'''მონოშირული შრიფტი'''",
-'diff-sub' => "'''ქვეხაზური'''",
-'diff-sup' => "'''ზეხაზური'''",
-'diff-strike' => "'''გადახაზული'''",
+'history-title' => '"$1" ცვლილებათა ისტორია',
+'difference' => '(სხვაობა ვერსიებს შორის)',
+'lineno' => 'ხაზი $1:',
+'compareselectedversions' => 'არჩეული ვერსიების შედარება',
+'showhideselectedversions' => 'ჩვენება/დამალვა არჩეული ვერსიებისა',
+'editundo' => 'გაუქმება',
+'diff-multi' => '({{PLURAL:$1|ერთი|$1}} შუა ვერსია არ არის ნაჩვენები.)',
# Search results
'searchresults' => 'ძიების შედეგები',
@@ -971,26 +1017,25 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'searchresulttext' => 'მეტი ინფორმაციისათვის {{SITENAME}}-ის საძიებლის შესახებ გთხოვთ ნახოთ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'თქვენ მოიძიეთ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ყველა გვერდი დაწყებული "$1"-ით]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ყველა გვერდი ბმულით "$1"-ზე]])',
'searchsubtitleinvalid' => "თქვენ მოიძიეთ '''$1'''",
-'noexactmatch' => "'''გვერდი ამ სათაურით \"\$1\" არ არსებობს.''' თქვენ შეგიძლიათ [[:\$1|შექმნათ ეს გვერდი]].",
-'noexactmatch-nocreate' => "'''გვერდი ამ სათაურით \"\$1\" არ არსებობს.'''",
'toomanymatches' => 'ნაპოვნია ძალიან ბევრი შესაბამისობა, ეცადეთ სხვა მოთხოვნა',
'titlematches' => 'სტატიის სათაური შეესაბამება',
'notitlematches' => 'არ შეესაბამება არცერთი გვერდის სათაური',
'textmatches' => 'გვერდის ტექსტი შესაბამისია',
'notextmatches' => 'არ შეესაბამება არცერთი გვერდის ტექსტი',
-'prevn' => 'წინა $1',
-'nextn' => 'შემდეგი $1',
+'prevn' => 'წინა {{PLURAL:$1|$1}}',
+'nextn' => 'შემდეგი {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|წინა $1 ჩანაწერი|წინა $1 ჩანაწერები|წინა $1 ჩანაწერების}}',
'nextn-title' => 'შემდეგი $1 {{PLURAL:$1|რეზულტატი|რეზულტატები}}',
'shown-title' => 'აჩვენეთ $1 {{PLURAL:$1|რეზულტატი|რეზულტატი}} გვერდზე',
-'viewprevnext' => 'იხილე ($1) ($2) ($3).',
+'viewprevnext' => 'იხილე ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'ძიების დაწყობა:',
'searchmenu-exists' => "'''ამ ვიკიპროექტში არის გვერდი «[[:$1]]»'''",
'searchmenu-new' => "'''შექმენით გვერდი «[[:$1]]» ამ ვიკიში!'''",
'searchhelp-url' => 'Help:დახმარება',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|აჩვენეთ გვერდები ამ პრეფიქსით]]',
-'searchprofile-project' => 'პროექტის გვერდები',
-'searchprofile-images' => 'ფაილები',
+'searchprofile-articles' => 'ძირითადი გვერდები',
+'searchprofile-project' => 'დახმარების და პროექტის გვერდები',
+'searchprofile-images' => 'მულტიმედია',
'searchprofile-everything' => 'ყველაფერი',
'searchprofile-advanced' => 'გაფართოებული',
'searchprofile-articles-tooltip' => 'ძიება $1ში',
@@ -998,7 +1043,6 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'searchprofile-images-tooltip' => 'ფაილების ძიება',
'searchprofile-everything-tooltip' => 'ყველა გვერდზე ძიება (მათ შორის განხილვის გვერდები)',
'searchprofile-advanced-tooltip' => 'ძიება სახელთა მოცემულ სივრცეში',
-'prefs-search-nscustom' => 'ძიება მითითებულ სახელების სივრცეში:',
'search-result-size' => '$1 ($2 სიტყვა)',
'search-result-score' => 'რელევანტურობა $1 %',
'search-redirect' => '(გადამისამართება $1)',
@@ -1011,11 +1055,12 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'search-mwsuggest-disabled' => 'რჩევების გარეშე',
'search-relatedarticle' => 'დაკავშირებული',
'mwsuggest-disable' => 'გათიშეთ AJAX დახმარებები',
+'searcheverything-enable' => 'ძიება სახელთა ყველა სივრცეებში',
'searchrelated' => 'მიბმული',
'searchall' => 'ყველა',
'showingresults' => 'ქვემოთ იხილეთ <b>$1</b>-მდე შედეგი დაწყებული #<b>$2</b>-იდან.',
'showingresultsnum' => 'ქვემოთ იხილეთ <b>$3</b> შედეგი დაწყებული #<b>$2</b>-იდან.',
-'showingresultstotal' => "ქვემოთ წარმოდგენილია{{PLURAL:$4|რეზულტატი '''$1'''-დან '''$3'''|რეზულტატები '''$1 - $2'''-დან '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|რეზულტატი '''$1''' '''$3'''-დან|რეზულტატები '''$1 — $2''' -დან '''$3'''}} '''$4'''-თვის",
'nonefound' => "'''შენიშვნა''': სტანდარტული ძიება ყველა სახელთა სივრცეში არ ხორციელდება.
მოსაძიებელ სიტყვას ან სიტყვათა ჯგუფს წინ წაუმძღვარეთ ''all:'' იმისათვის, რათა ძიება ყველგან განხორციელდეს (განხილვის გვერდების, თარგების და ა.შ. ჩათვლით) ან მიუთითეთ თქვენთვის სასურველი სახელთა სივრცე.",
'search-nonefound' => 'მოთხოვნის შესაბამისობა არ არის ნაპოვნი.',
@@ -1024,111 +1069,150 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'powersearch-ns' => 'ძიება სახელთა სივრცეებში:',
'powersearch-redir' => 'გადამისამართებების სიის ჩვენება',
'powersearch-field' => 'მოძებნე',
+'powersearch-togglelabel' => 'მონიშვნა:',
+'powersearch-toggleall' => 'ყველა',
+'powersearch-togglenone' => 'არაფერი',
'search-external' => 'გარე ძიება',
'searchdisabled' => '{{SITENAME}}ში ძებნა გაუქმებულია. თქვენ შეგიძლიათ დროის შუალედით Google-ით ძებნა. მიაქციეთ ყურადღება, რომ {{SITENAME}}ში შესაძლებელია მათი ინდექსები აქტუალური არ არის.',
+# Quickbar
+'qbsettings' => 'სწრაფი ზოლი',
+'qbsettings-none' => 'არაფერი',
+'qbsettings-fixedleft' => 'ფიქსირებული მარცხნივ',
+'qbsettings-fixedright' => 'ფიქსირებული მარჯვნივ',
+'qbsettings-floatingleft' => 'მარცხნივ მცურავი',
+'qbsettings-floatingright' => 'მარჯვნივ მცურავი',
+
# Preferences page
-'preferences' => 'კონფიგურაცია',
-'mypreferences' => 'ჩემი კონფიგურაცია',
-'prefs-edits' => 'რედაქციების რაოდენობა:',
-'prefsnologin' => 'შესული არ ხართ',
-'prefsnologintext' => 'თქვენ <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} რეგისტრირებული უნდა იყოთ]</span> მომხმარებლის კონფიგურაციის შესაცვლელად.',
-'prefsreset' => 'აღდგენილია საწყისი კონფიგურაცია.',
-'qbsettings' => 'სწრაფი ზოლი',
-'qbsettings-none' => 'არაფერი',
-'qbsettings-fixedleft' => 'ფიქსირებული მარცხნივ',
-'qbsettings-fixedright' => 'ფიქსირებული მარჯვნივ',
-'qbsettings-floatingleft' => 'მარცხნივ მცურავი',
-'qbsettings-floatingright' => 'მარჯვნივ მცურავი',
-'changepassword' => 'პაროლის შეცვლა',
-'skin' => 'გარეკანი',
-'skin-preview' => 'წინასწარი გადახედვა',
-'math' => 'მათემატიკა',
-'dateformat' => 'თარიღის ფორმატი',
-'datedefault' => 'წყარო მითითებული არაა',
-'datetime' => 'თარიღი და დრო',
-'math_failure' => 'შეუძლებელია გამონათქვამის გარჩევაშ',
-'math_unknown_error' => 'უცნობი შეცდომა',
-'math_unknown_function' => 'უცნობი ფუნქცია',
-'math_lexing_error' => 'ლექსიკური შეცდომა',
-'math_syntax_error' => 'სინტაქსი არასწორია',
-'math_image_error' => 'გარდაქმნისას PNG-ში წარმოიშვა შეცდომა; შეამოწმეთ latex, dvips, gs და convert-ის სისწორე',
-'math_bad_tmpdir' => 'შეუძლებელია ჩანაწერის შექმნა მათემატიკურ დროებით კატალოგში',
-'math_bad_output' => 'შეუძლებელია შექმნა ან ჩაწერა მათემატიკურ გამსვლელ კატალოგში',
-'math_notexvc' => 'შემსრულებელი ფაილი texvc არ არის ნაპოვნი; იხ.math/README ინფორმაციისთვის.',
-'prefs-personal' => 'მომხმარებლის მონაცემები',
-'prefs-rc' => 'ბოლო ცვლილებები',
-'prefs-watchlist' => 'კონტროლის სია',
-'prefs-watchlist-days' => 'კონტროლის სიაში საჩვენებელი დღეები:',
-'prefs-watchlist-days-max' => '(მაქსიმუმ 7 დღე)',
-'prefs-watchlist-edits' => 'ცვლილებების მაქსიმალური რაოდენობის ჩვენება ვრცელ კონტროლის სიაში:',
-'prefs-watchlist-edits-max' => '(მაქსიმალური ციფრი: 1000)',
-'prefs-misc' => 'სხვადასხვა',
-'prefs-resetpass' => 'შეცვალეთ პაროლი',
-'saveprefs' => 'შენახვა',
-'resetprefs' => 'გადატვირთვა',
-'restoreprefs' => 'კონფიგურაციის საწყისზე დაბრუნება',
-'textboxsize' => 'რედაქტირება',
-'prefs-edit-boxsize' => 'რედაქტირების ფანჯრის ზომა.',
-'rows' => 'რიგები:',
-'columns' => 'სვეტები',
-'searchresultshead' => 'ძიება',
-'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
-'contextlines' => 'სტრიქონები შედეგის მიხედვით',
-'contextchars' => 'კონტექსტი სტრიქონების მიხედვით',
-'stub-threshold' => 'გაფორმების გასაუმჯობესებლად<a href="#" class="stub">მოცემულია ესკიზების ბმულებია</a> (ბაიტებში):',
-'recentchangesdays' => 'დღეების ჩვენება ბოლო ცვლილებებში:',
-'recentchangesdays-max' => '(მაქსიმუმ $1 {{PLURAL:$1|დღე|დღე}})',
-'recentchangescount' => 'რედაქციების რაოდენობა ბოლო ცვლილებებში, ისტორიაში და ჟურნალებში საჩვენებლად:',
-'savedprefs' => 'თქვენს მიერ შერჩეული პარამეტრები დამახსოვრებულია.',
-'timezonelegend' => 'სასაათო სარტყელი:',
-'timezonetext' => '¹საათების რაოდენობა, რომლითაც თქვენი ადგილობრივი დრო განსხვავდება სერვერის დროისაგან (UTC).',
-'localtime' => 'ადგილობრივი დრო:',
-'timezoneselect' => 'სასაათო სარტყელი:',
-'timezoneuseserverdefault' => 'სერვერის თავდაპირველი პარამეტრები',
-'timezoneuseoffset' => 'სხვა (მისათითებელი)',
-'timezoneoffset' => 'განსხვავება¹:',
-'servertime' => 'სერვერის დრო:',
-'guesstimezone' => 'ბრაუზერიდან შევსება',
-'timezoneregion-africa' => 'აფრიკა',
-'timezoneregion-america' => 'ამერიკა',
-'timezoneregion-antarctica' => 'ანტარქტიდა',
-'timezoneregion-arctic' => 'არქტიკა',
-'timezoneregion-asia' => 'აზია',
-'timezoneregion-atlantic' => 'ატლანტის ოკეანე',
-'timezoneregion-australia' => 'ავსტრალია',
-'timezoneregion-europe' => 'ევროპა',
-'timezoneregion-indian' => 'ინდოეთის ოკეანე',
-'timezoneregion-pacific' => 'წყნარი ოკეანე',
-'allowemail' => 'სხვა მომხმარებლებისგან ელ. ფოსტის მიღების ნებართვა',
-'prefs-searchoptions' => 'ძიების პარამეტრები',
-'prefs-namespaces' => 'სახელთა სივრცეები',
-'defaultns' => 'სტანდარტული ძიება ამ სახელთა სივრცეებში:',
-'default' => 'სტანდარტული',
-'files' => 'ფაილები',
-'prefs-custom-css' => 'მომხმარებლის CSS',
-'prefs-custom-js' => 'მომხმარებლის JS',
+'preferences' => 'კონფიგურაცია',
+'mypreferences' => 'ჩემი კონფიგურაცია',
+'prefs-edits' => 'რედაქციების რაოდენობა:',
+'prefsnologin' => 'შესული არ ხართ',
+'prefsnologintext' => 'თქვენ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} რეგისტრირებული უნდა იყოთ]</span> მომხმარებლის კონფიგურაციის შესაცვლელად.',
+'changepassword' => 'პაროლის შეცვლა',
+'prefs-skin' => 'გარეკანი',
+'skin-preview' => 'წინასწარი გადახედვა',
+'prefs-math' => 'მათემატიკა',
+'datedefault' => 'წყარო მითითებული არაა',
+'prefs-datetime' => 'თარიღი და დრო',
+'prefs-personal' => 'მომხმარებლის მონაცემები',
+'prefs-rc' => 'ბოლო ცვლილებები',
+'prefs-watchlist' => 'კონტროლის სია',
+'prefs-watchlist-days' => 'კონტროლის სიაში საჩვენებელი დღეები:',
+'prefs-watchlist-days-max' => '(მაქსიმუმ 7 დღე)',
+'prefs-watchlist-edits' => 'ცვლილებების მაქსიმალური რაოდენობის ჩვენება ვრცელ კონტროლის სიაში:',
+'prefs-watchlist-edits-max' => '(1000-ზე მეტი)',
+'prefs-watchlist-token' => 'კონტროლის სიის ტოკენი:',
+'prefs-misc' => 'სხვადასხვა',
+'prefs-resetpass' => 'შეცვალეთ პაროლი',
+'prefs-email' => 'ელ-ფოსტის პარამეტრები',
+'prefs-rendering' => 'იერსახე',
+'saveprefs' => 'შენახვა',
+'resetprefs' => 'გადატვირთვა',
+'restoreprefs' => 'კონფიგურაციის საწყისზე დაბრუნება',
+'prefs-editing' => 'რედაქტირება',
+'prefs-edit-boxsize' => 'რედაქტირების ფანჯრის ზომა.',
+'rows' => 'რიგები:',
+'columns' => 'სვეტები',
+'searchresultshead' => 'ძიება',
+'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
+'contextlines' => 'სტრიქონები შედეგის მიხედვით',
+'contextchars' => 'კონტექსტი სტრიქონების მიხედვით',
+'stub-threshold' => 'გაფორმების გასაუმჯობესებლად<a href="#" class="stub">მოცემულია ესკიზების ბმულებია</a> (ბაიტებში):',
+'recentchangesdays' => 'დღეების ჩვენება ბოლო ცვლილებებში:',
+'recentchangesdays-max' => 'მაქსიმუმ $1 {{PLURAL:$1|დღე}}',
+'recentchangescount' => 'რედაქციების რაოდენობა საჩვენებლად:',
+'prefs-help-recentchangescount' => 'შეიცავს ახალ შესწორებებს, გვერდების ისტორიებს, ჟურნალებს.',
+'prefs-help-watchlist-token' => 'ამ ველის შევსება საიდუმლო გასაღებით შექმნის RSS ტრანსლაციას თქვენი კონტროლის სიისთვის.
+ყველა, ვინც იცის გასაღები, შესძლებს იხილოს თქვენი კონტროლის სია. ფრთხილად იყავით საიდუმლო მნიშვნელობის არჩევისას.
+თქვენ შეგიძლიათ გამოიყენოთ ასევე შემთვევითი მნიშვნელობა: $1',
+'savedprefs' => 'თქვენს მიერ შერჩეული პარამეტრები დამახსოვრებულია.',
+'timezonelegend' => 'სასაათო სარტყელი:',
+'localtime' => 'ადგილობრივი დრო:',
+'timezoneuseserverdefault' => 'სერვერის თავდაპირველი პარამეტრები',
+'timezoneuseoffset' => 'სხვა (მისათითებელი)',
+'timezoneoffset' => 'განსხვავება¹:',
+'servertime' => 'სერვერის დრო:',
+'guesstimezone' => 'ბრაუზერიდან შევსება',
+'timezoneregion-africa' => 'აფრიკა',
+'timezoneregion-america' => 'ამერიკა',
+'timezoneregion-antarctica' => 'ანტარქტიდა',
+'timezoneregion-arctic' => 'არქტიკა',
+'timezoneregion-asia' => 'აზია',
+'timezoneregion-atlantic' => 'ატლანტის ოკეანე',
+'timezoneregion-australia' => 'ავსტრალია',
+'timezoneregion-europe' => 'ევროპა',
+'timezoneregion-indian' => 'ინდოეთის ოკეანე',
+'timezoneregion-pacific' => 'წყნარი ოკეანე',
+'allowemail' => 'სხვა მომხმარებლებისგან ელ. ფოსტის მიღების ნებართვა',
+'prefs-searchoptions' => 'ძიების პარამეტრები',
+'prefs-namespaces' => 'სახელთა სივრცეები',
+'defaultns' => 'სხვა შემთხვევაში ძიება შემდეგ სახელთა სივრცეებში:',
+'default' => 'სტანდარტული',
+'prefs-files' => 'ფაილები',
+'prefs-custom-css' => 'მომხმარებლის CSS',
+'prefs-custom-js' => 'მომხმარებლის JS',
+'prefs-reset-intro' => 'ეს გვერდი შეიძლება გამოყენებული იქნეს თქვენი კონფიგურაციის შესაცვლელად საწყის კონფიგურაციაზე. ამ მოქმედების დადასტურების შემთხვევაში, თქვენ ვეღარ შეძლებთ მის გაუქმებას.',
+'prefs-emailconfirm-label' => 'ელ–ფოსტის დადასტურება:',
+'prefs-textboxsize' => 'რედაქტირების ფანჯრის ზომა',
+'youremail' => 'ელექტრონული ფოსტა:',
+'username' => 'მომხმარებლის სახელი:',
+'uid' => 'მომხმარებლის იდენტიფიკაცია:',
+'prefs-memberingroups' => '{{PLURAL:$1|ჯგუფის|ჯგუფების}} წევრი:',
+'prefs-registration' => 'რეგისტრაციის თარიღი',
+'yourrealname' => 'ნამდვილი სახელი:',
+'yourlanguage' => 'ენა:',
+'yourvariant' => 'ვარიანტი',
+'yournick' => 'მეტსახელი:',
+'prefs-help-signature' => 'კომენტარები განხილვის გვერდებზე უნდა იყვნენ ხელმოწერილნი «<nowiki>~~~~</nowiki>» სიმბოლოების მეშვეობით, რომლებიც გადაკეთდება თქვენ ხელმოწერად და ხელმოწერის დროთი.',
+'badsig' => 'არასწორი ნედლი ხელმოწერა; შეამოწმეთ HTML ჭდეები.',
+'badsiglength' => 'ხელმოწერა ძალიან გრძელია.
+უნდა შედგებოდეს მაქსიმუმ $1 ნიშნისაგან.',
+'yourgender' => 'სქესი:',
+'gender-unknown' => 'არ არის მითითებული',
+'gender-male' => 'მამრობითი',
+'gender-female' => 'მდედრობითი',
+'prefs-help-gender' => 'არასავალდებულო ველი: გამოიყენება პროგრამული უზრუნველყოფის იმ შეტყობინებებისთვის, რომლებიც ადამიანის სქესზეა დამოკიდებული.
+ეს ინფორმაცია საზოგადოებრივი იქნება.',
+'email' => 'ელ. ფოსტა',
+'prefs-help-realname' => 'ნამდვილი სახელის მითითება აუცილებელი არ არის, მაგრამ თუ მიუთითებთ ის გამოყენებული იქნება თქვენი ნამუშევრის აღსანიშნავად.',
+'prefs-help-email' => 'ელ. ფოსტის მისამართი არასავალდებულოა, მაგრამ იძლევა ახალი პაროლის გამოგზავნის საშუალებას თქვენი პაროლის დავიწყების შემთხვევაში.
+ასევე შეგიძლიათ საშუალება მისცეთ სხვა მომხმარებლებს დაგიკავშირდნენ თქვენი მომხმარებლის გვერდის ან განხილვის გვერდის მეშვეობით თქვენი ვინაობის ჩვენების საჭიროების გარეშე.',
+'prefs-help-email-required' => 'თქვენი ელ-ფოსტის მისამართი აუცილებელია.',
+'prefs-info' => 'საბაზისო ინფორმაცია',
+'prefs-i18n' => 'ინტერნაციონალიზაცია',
+'prefs-signature' => 'ხელმოწერა',
+'prefs-dateformat' => 'თარიღის ფორმატი',
+'prefs-timeoffset' => 'დროის გარდაადგილება',
+'prefs-advancedediting' => 'გაფართოებული პარამეტრები',
+'prefs-advancedrc' => 'გაფართოებული პარამეტრები',
+'prefs-advancedrendering' => 'გაფართოებული პარამეტრები',
+'prefs-advancedsearchoptions' => 'გაფართოებული პარამეტრები',
+'prefs-advancedwatchlist' => 'გაფართოებული კონფიგურაციები',
+'prefs-display' => 'გამოსახვის კონფიგურაციები',
+'prefs-diffs' => 'სხვაობა ვერსიებს შორის',
# User rights
-'userrights' => 'მომხმარებელთა უფლებების მართვა', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'მომხმარებელთა ჯგუფების მართვა',
-'userrights-user-editname' => 'მომხმარებლის სახელის შეტანა:',
-'editusergroup' => 'მომხმარებელთა ჯგუფების რედაქტირება',
-'editinguser' => "მომხმარებლის '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) უფლებების შეცვლა",
-'userrights-editusergroup' => 'რედაქტირება გაუკეთეთ მომხმარებელთა ჯგუფებს',
-'saveusergroups' => 'მომხმარებელთა ჯგუფების შენახვა',
-'userrights-groupsmember' => 'ჯგუფის წევრი:',
-'userrights-groups-help' => 'თქვენ შეგიძლიათ შეცვალოთ ჯგუფები, რომელშიც შედის ეს მომხმარებელი.
+'userrights' => 'მომხმარებელთა უფლებების მართვა',
+'userrights-lookup-user' => 'მომხმარებელთა ჯგუფების მართვა',
+'userrights-user-editname' => 'მომხმარებლის სახელის შეტანა:',
+'editusergroup' => 'მომხმარებელთა ჯგუფების რედაქტირება',
+'editinguser' => "მომხმარებლის '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) უფლებების შეცვლა",
+'userrights-editusergroup' => 'რედაქტირება გაუკეთეთ მომხმარებელთა ჯგუფებს',
+'saveusergroups' => 'მომხმარებელთა ჯგუფების შენახვა',
+'userrights-groupsmember' => 'ჯგუფის წევრი:',
+'userrights-groupsmember-auto' => 'გაუგებარი მონაწილე:',
+'userrights-groups-help' => 'თქვენ შეგიძლიათ შეცვალოთ ჯგუფები, რომელშიც შედის ეს მომხმარებელი.
* თუ ჯგუფის სახელწოდებასთან გაკეთებულია ნიშნული, ე.ი მომხმარებელი შედის ამ ჯგუფში.
* თუ ნიშნული არ არის – მომხმარებელი არ განეკუთვნება არსებულ ჯგუფს.
* ნიშანი * ნიშნავს, რომ თქვენ არ შეგიძლიათ მომხმარებლის ჯგუფიდან წაშლა, თუ დაამატებთ მას იქ ან პირიქით.',
-'userrights-reason' => 'მიზეზი:',
-'userrights-no-interwiki' => 'თქვენ არ გაქვთ მომხმარებლის უფლებების რედაქტირების უფლება სხვა ვიკი-ებში.',
-'userrights-nodatabase' => 'მონაცემთა ბაზა $1 არ არსებობს, ან არ არის ლოკალური.',
-'userrights-nologin' => 'თქვენ უნდა [[Special:UserLogin|წარადგინოთ თავი სისტემისადმი]] ადმინისისტრატორის ანგარიშით იმისთვის, რომ გასცეთ მომხმარებელთა უფლებები.',
-'userrights-notallowed' => 'თქვენ ვერ დანიშნავთ მომხმარებელთა უფლებებს.',
-'userrights-changeable-col' => 'ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ',
-'userrights-unchangeable-col' => 'ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ',
+'userrights-reason' => 'მიზეზი:',
+'userrights-no-interwiki' => 'თქვენ არ გაქვთ მომხმარებლის უფლებების რედაქტირების უფლება სხვა ვიკი-ებში.',
+'userrights-nodatabase' => 'მონაცემთა ბაზა $1 არ არსებობს, ან არ არის ლოკალური.',
+'userrights-nologin' => 'თქვენ უნდა [[Special:UserLogin|წარადგინოთ თავი სისტემისადმი]] ადმინისისტრატორის ანგარიშით იმისთვის, რომ გასცეთ მომხმარებელთა უფლებები.',
+'userrights-notallowed' => 'თქვენ ვერ დანიშნავთ მომხმარებელთა უფლებებს.',
+'userrights-changeable-col' => 'ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ',
+'userrights-unchangeable-col' => 'ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ',
# Groups
'group' => 'ჯგუფი:',
@@ -1181,6 +1265,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'right-bigdelete' => 'გრძელი ისტორიის გვერდების წაშლა',
'right-deleterevision' => 'გვერდის კონკრეტული ვერსიების წაშლა და აღდგენა',
'right-deletedhistory' => 'წაშლილი გვერდების ხილავა წაშლილ ტექსთან ურთიერთობის გარეშე',
+'right-deletedtext' => 'წაშლილი ტექსტის და განსხვავებების ხილვა.',
'right-browsearchive' => 'წაშლილი გვერდების ძიება',
'right-undelete' => 'გვერდის აღდგენა',
'right-suppressrevision' => 'ადმინთაგან დამალული გვერდების ხილვა და აღდგენა',
@@ -1194,6 +1279,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'right-editprotected' => 'დაცული გვერდების რედაქტირება (იერარქიული დაცვის გარეშე)',
'right-editinterface' => 'მომხმარებლის ინტერფეისის შეცვლა',
'right-editusercssjs' => 'სხვა მომხმარებლების CSS- и JS- ფაილების შესწორება',
+'right-editusercss' => 'სხვა მომხმარებლების CSS- ფაილების შესწორება',
+'right-edituserjs' => 'სხვა მომხმარებლების JS- ფაილების შესწორება',
'right-rollback' => 'გარკვეულ გვერდზე ბოლო მომხმარებლის რედაქტირების სწრაფი გაუქმება',
'right-markbotedits' => 'გაუქმებული შესწორებების მონიშვნა როგორც ბოტის',
'right-noratelimit' => 'სიჩქარის შეზღუდვის არ არსებობა',
@@ -1210,6 +1297,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'right-siteadmin' => 'მონაცემთა ბაზის დაბლოკვა და განბლოკვა',
'right-reset-passwords' => 'სხვა მომხმარებლების პაროლების ჩაშვება',
'right-override-export-depth' => 'გვერდების ექსპორტირება, დაკავშირებული გვერდების ჩათვლით 5-მდე სიიღრმით',
+'right-versiondetail' => 'დამატებითი ინფორმაციის ხილვა პროგრამული უზრუნველყოფაზე',
+'right-sendemail' => 'გაგუგზავნე ელექტრონული ფოსტა სხვა მომხმარებლებს',
# User rights log
'rightslog' => 'მომხმარებლის უფლებების ჟურნალი',
@@ -1259,6 +1348,15 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'recentchanges-legend' => 'ბოლო ცვლილებების პარამეტრები',
'recentchangestext' => 'უთვალთვალეთ ვიკიში ბოლო ცვლილებებს ამ გვერდზე.',
'recentchanges-feed-description' => 'ვიკის უახლესი ცვლილებების მეთვალყურეობა ამ არხში.',
+'recentchanges-label-legend' => 'ლეგენდა: $1.',
+'recentchanges-legend-newpage' => '$1 - ახალი გვერდი',
+'recentchanges-label-newpage' => 'ამ რედაქტირებით შეიქმნა ახალი გვერდი',
+'recentchanges-legend-minor' => '$1 - მცირე რედაქტირება',
+'recentchanges-label-minor' => 'ეს არის მცირე შესწორება',
+'recentchanges-legend-bot' => '$1 — ბოტის რედაქტირება',
+'recentchanges-label-bot' => 'ეს არის ბოტის რედაქტირება',
+'recentchanges-legend-unpatrolled' => '$1 - გადაუმოწმებელი შესწორება',
+'recentchanges-label-unpatrolled' => 'ეს რედაქტირება გადაუმოწმებელია',
'rcnote' => "ქვემოთ იხილეთ ბოლო '''$1''' ცვლილება უკანასკნელი '''$2''' დღის მანძილზე, $5, $4 მდგომარეობით.",
'rcnotefrom' => "ქვემოთ მოყვანილია ცვლილებები '''$2'''-დან (ნაჩვენებია '''$1''').",
'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
@@ -1285,6 +1383,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
# Recent changes linked
'recentchangeslinked' => 'დაკავშირებული ცვლილებები',
+'recentchangeslinked-feed' => 'დაკავშირებული ცვლილებები',
+'recentchangeslinked-toolbox' => 'დაკავშირებული ცვლილებები',
'recentchangeslinked-title' => '"$1"-თან დაკავშირებული ცვლილებები',
'recentchangeslinked-noresult' => 'მითითებულ პერიოდში ცვლილებები დაკავშირებულ გვერდებზე არ მომხდარა.',
'recentchangeslinked-summary' => "ეს არის მითითებულ გვერდთან (ან მითითებული კატეგორიის წევრებთან) დაკავშირებულ გვერდებში ბოლო დროს განხორციელებული ცვლილებების სია.
@@ -1295,8 +1395,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
# Upload
'upload' => 'ფაილის დამატება',
'uploadbtn' => 'ფაილის დამატება',
-'reupload' => 'ხელმეორედ ატვირთვა',
'reuploaddesc' => 'გააუქმეთ ატვირთვა და დაუბრუნდით ატვირთვის ფორმას.',
+'upload-tryagain' => 'შეინახეთ ფაილის შეცვლილი აღწერა',
'uploadnologin' => 'რეგისტრაცია არ გაქვთ გავლილი',
'uploadnologintext' => 'ფაილის ატვირთვისთვის თქვენ უნდა [[Special:UserLogin|შეხვიდეთ]].',
'upload_directory_missing' => 'შესანახი დირექტორია ($1) არ არსებობს და მისი აღდგენა ვებ-სერვერის მიერ შეუძლებელია.',
@@ -1328,6 +1428,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'minlength1' => 'ფაილის სახელი უნდა იყოს არანაკლებ ერთი ასო.',
'illegalfilename' => 'ფაილის სახელი "$1" შეიცავს სიმბოლოებს, რომელთა გამოყენებაც არ არის ნებადართული სათაურებში. გთხოვთ, შეცვალოთ ფაილის სახელი და სცადოთ მისი ხელმეორედ ჩატვირთვა.',
'badfilename' => 'ფაილის დასახელება შეცვლილია "$1"-ით.',
+'filetype-mime-mismatch' => 'ფაილის ფორმატი არ ემთხვევა MIME ტიპს.',
'filetype-badmime' => '"$1" MIME ტიპის ფაილების ატვირთვა დაშვებული არ არის.',
'filetype-bad-ie-mime' => 'შეუძლებელია ფაილის ატვირთვა, რადგანა Internet Explorer-ი აღიქვამს მას როგორც "$1", რაც აკრძალულია და პოტენციურად სახიფათო ფაილია.',
'filetype-unwanted-type' => "'''\".\$1\"''' — ფაილის არასასურველი ტიპია.
@@ -1348,7 +1449,6 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
* ასატვირთი ფაილის სახელი: '''<tt>[[:$1]]</tt>'''
* არსებული ფაილის სახელი: '''<tt>[[:$2]]</tt>'''
გთხოვთ განსხვავებული სახელი აირჩიოთ.",
-'fileexists-thumb' => "'''<center>არსებული სურათი</center>'''",
'fileexists-thumbnail-yes' => "სავარაუდოდ ფაილი არის შემცირებული კოპია (მინიატურა). [[$1|thumb]]
გთხოვთ შეამოწმოთ ფაილი '''<tt>[[:$1]]</tt>'''.
თუ მოცემული ფაილები ერთი და იგივე გამოსახულებას წარმოადგენენ, შემცირებული ვერსიის ატვირთვა არ ღირს.",
@@ -1362,6 +1462,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'file-deleted-duplicate' => 'მსგავსი ფაილი ([[$1]]) უკვე წაშლილა. გთხოვთ, გაეცანით ფაილის წაშლის ისტორიას, მანამდე ვიდრე მას ხელმეორედ ატვირტავთ.',
'successfulupload' => 'წარმატებული გადატვირთვა',
'uploadwarning' => 'გადატვირთვის შეხსენება',
+'uploadwarning-text' => 'გთხოვთ ჩაასწოროთ ფაილის აღწერა ქვევით და ხელმეორედ სცადოთ.',
'savefile' => 'ფაილის შენახვა',
'uploadedimage' => 'დამატება "[[$1]]"',
'overwroteimage' => 'ატვირთულია "[[$1]]"-ის ახალი ვერსია',
@@ -1369,11 +1470,15 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'uploaddisabledtext' => 'ფაილების ატვირთვა შეუძლებელია.',
'php-uploaddisabledtext' => 'ფაილების ატვირთვა შეჩერებულია PHP-ით. გთხოვთ შეამოწმოთ file_uploads-ის მნიშვნელობა.',
'uploadscripted' => 'ფაილი შეიცავს HTML-კოდს, ან სკრიპტს, რომელიც ბროუზერმა შეიძლება არასწორედ გაანალიზოს.',
-'uploadcorrupt' => 'ფაილი დაზიანებულია ან არასწორი გაფართოვება აქვს. გთხოვთ შეამოწმოთ ფაილი და განმეორებით ატვირთეთ.',
'uploadvirus' => 'ფაილი ვირუსს შეიცავს! დეტალები: $1',
+'upload-source' => 'ფაილის წყარო',
'sourcefilename' => 'წყარო:',
+'sourceurl' => 'Source URL:
+წყაროს URL:',
'destfilename' => 'საბოლოო სახელი:',
'upload-maxfilesize' => 'ფაილის მაქსიმალური ზომაა $1',
+'upload-description' => 'ფაილის აღწერა',
+'upload-options' => 'ატვირთვის პარამეტრები',
'watchthisupload' => 'უთვალთვალე ამ ფაილს',
'filewasdeleted' => 'ამ სახელწოდების ფაილი უკვე არსებობდა, მაგრამ წაშლილ იქნა. ხელმეორედ ჩატვირთვამდე იხილეთ $1.',
'upload-wasdeleted' => "'''გაფრთხილეა: თქვენ ტვირთავთ ფაილს, რომელიც წინათ წაიშალა.'''
@@ -1382,14 +1487,45 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
ინფორმაციისთვის ქვემოთ ამ ფაილის წაშლის ისტორია:",
'filename-bad-prefix' => "ასატვირთვი ფაილი იწყება '''«$1»''', რაც არის ფოტოკამერის მიერ სურათებისთვის მიცემული სტანდარტული სახელი. გთხოვთ აირჩიოთ ფაილის აღმწერი უკეთესი სახელი.",
-'upload-proto-error' => 'არასწორი პროტოკოლი',
-'upload-proto-error-text' => 'ატვირთვის წასაშლელად საჭიროა მისამართი, რომელიც იწყება <code>http://</code> or <code>ftp://</code>-ით.',
-'upload-file-error' => 'შიდა შეცდომა',
-'upload-file-error-text' => 'შიდა შეცდომა სერვერზე დროებითი ფაილის შექმნისას. გთხოვთ მიმართოთ [[Special:ListUsers/sysop|სისტემურ ადმინისტრატორს]].',
-'upload-misc-error' => 'უცნობია ატვირთვის შეცდომა',
-'upload-misc-error-text' => 'ატვირთვისას უცნობი სახის შეცდომა გაიპარა.
+'upload-proto-error' => 'არასწორი პროტოკოლი',
+'upload-proto-error-text' => 'ატვირთვის წასაშლელად საჭიროა მისამართი, რომელიც იწყება <code>http://</code> or <code>ftp://</code>-ით.',
+'upload-file-error' => 'შიდა შეცდომა',
+'upload-file-error-text' => 'შიდა შეცდომა სერვერზე დროებითი ფაილის შექმნისას. გთხოვთ მიმართოთ [[Special:ListUsers/sysop|სისტემურ ადმინისტრატორს]].',
+'upload-misc-error' => 'უცნობია ატვირთვის შეცდომა',
+'upload-misc-error-text' => 'ატვირთვისას უცნობი სახის შეცდომა გაიპარა.
გთხოვთ შეამოწმოთ თუ URL სწორია და ხელმისაწვდომია და ისევ სცადოთ.
თუ პრობლემა ვერ გადაიჭრა, მიმართეთ [[Special:ListUsers/sysop|ადმინისტრატორს]].',
+'upload-too-many-redirects' => 'URL შეიცავს ძალიან ბევრ გადამისამართებებს',
+'upload-unknown-size' => 'უცნობი ზომა',
+'upload-http-error' => 'მოხდა HTTP შეცდომა: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'მოქმედება აკრძალულია',
+'img-auth-nopathinfo' => 'არ არის PATH_INFO.
+თქვენი სერვერი არ არის ამ ინფორმაციის გადაცემისთვის გამართული.
+შესაძლოა მას იგი მუშაობს CGI-ს ბაზაზე და არ აქვს img_auth-ის მხარდაჭერა.
+იხ. http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'მოთხოვნილი გზა არ შეესაბამება ატვირთვის ფოლდერს.',
+'img-auth-badtitle' => 'შეუძლებელია სწორი სათაურის შექმნა "$1"-დან.',
+'img-auth-nologinnWL' => 'თქვენ არ შესულხართ სისტემაში, ხოლო «$1» არ არის თეთრ სიაში.',
+'img-auth-nofile' => 'ფაილი "$1" არ არსებობს.',
+'img-auth-isdir' => 'თქვენ ცდილობთ «$1» კატალოგთან მისავლის მიგნებას.
+ნებადართულია მხოლოდ ფაილებთან კავშირი.',
+'img-auth-streaming' => 'ნაკადური გადაცემა «$1».',
+'img-auth-public' => 'img_auth.php-ის დანიშვნა გამოიწვევს ფაილების დახურული ვიკიდან გაოტანას.
+ეს ვიკი გამართულია როგორც საზოგადი.
+უსაფრთხოების ოპტიმიზააციისთვის img_auth.php გათიშულია.',
+'img-auth-noread' => 'მომხმარებელს არა აქვს ნებართვა "$1"-ის წასაკითხად.',
+
+# HTTP errors
+'http-invalid-url' => 'არასწორი ბმული: $1',
+'http-invalid-scheme' => '«$1» სქემის მქონე მისამართები მხარდაჭერილები არ არიან.',
+'http-request-error' => 'HTTP მოთხოვნის შეცდომა უცნობი მიზეზის გამო.',
+'http-read-error' => 'HTTP წაკითხვის შეცდომა.',
+'http-timed-out' => 'HTTP მოთხოვნის დრო გავიდა.',
+'http-curl-error' => 'შეცდომა URL: $1-ის მოთხოვნისას',
+'http-host-unreachable' => 'URL მიუწვდომელია',
+'http-bad-status' => 'HTTP მოთხოვნისას აღმოჩენილია შეცდომა - $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL მიუწვდომელია',
@@ -1401,6 +1537,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
ალბათ სასურველია ოპერაცია ნაკლებად გადატვირთულ დროს სცადოთ.',
'license' => 'ლიცენზია:',
+'license-header' => 'ლიცენზია',
'nolicense' => 'არაფერი არის მონიშნული',
'license-nopreview' => '(წინასწარ გადახედვა არ არის ხელმისაწვდომი)',
'upload_source_url' => ' (სწორი, საზოგადოდ ხელმისაწვდომი URL)',
@@ -1421,6 +1558,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'listfiles_count' => 'ვერსიები',
# File description page
+'file-anchor-link' => 'ფაილი',
'filehist' => 'ფაილის ისტორია',
'filehist-help' => 'დააწკაპუნეთ თარიღზე/დროზე, რათა იხილოთ ფაილი, როგორც ის მაშინ გამოიყურებოდა.',
'filehist-deleteall' => 'წაშალე ყველა',
@@ -1429,11 +1567,13 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'filehist-current' => 'მიმდინარე',
'filehist-datetime' => 'თარიღი/დრო',
'filehist-thumb' => 'მინიატურა',
+'filehist-thumbtext' => 'მინიატურა $1 ვერსიისთვის',
'filehist-nothumb' => 'არ არის მინიატურა',
'filehist-user' => 'მომხმარებელი',
'filehist-dimensions' => 'განზომილებები',
'filehist-filesize' => 'ფაილის ზომა',
'filehist-comment' => 'კომენტარი',
+'filehist-missing' => 'ფაილი ვერ მოიძებნა',
'imagelinks' => 'ფაილების ბმულები',
'linkstoimage' => 'მომდევნო {{PLURAL:$1|გვერდი|გვერდები}} ებმის ამ ფაილს:',
'linkstoimage-more' => '$1-ზე მეტი {{PLURAL:$1|გვერდები|ფვერდების|გვერდები}} რომლებსაც აქვთ ბმულები ამ ფაილზე.
@@ -1443,14 +1583,16 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'morelinkstoimage' => 'იხილეთ [[Special:WhatLinksHere/$1|სხვა ბმულები]] ამ ფაილზე.',
'redirectstofile' => 'შემდეგი {{PLURAL:$1|ფაილი გადამისამართებულია|$1 ფაილები გადამისამართებულია}} ამ ფაილზე:',
'duplicatesoffile' => '{{PLURAL:$1|შემდეგი $1 ფაილი არის დუბლიკატი|შემდეგი $1 ფაილები არიან დუბლიკატები|შემდეგი $1 ფაილები არიან დუბლიკატები}} ამ ფაილისა ([[Special:FileDuplicateSearch/$2|დამატებითი ინფორმაცია]]):',
-'sharedupload' => 'ეს ფაილი $1-დანაა და შეიძლება სხვა პროექტებიც იყენებდეს.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'გთხოვთ, იხილოთ $1 შემდგომი ინფორმაციის მისაღებად.',
-'shareduploadwiki-linktext' => 'ფაილის აღწერის გვერდი',
-'noimage' => 'ამ სახელის მქონე ფაილი არ არსებობს, თქვენ შეგიძლიათ $1.',
-'noimage-linktext' => 'ფაილის ატვირთვა',
+'sharedupload' => 'ეს ფაილი $1-დანაა და შეიძლება სხვა პროექტებიც იყენებდეს.',
+'sharedupload-desc-there' => 'ეს ფაილი $1-დან შეიძლება გამოყენებული იქნას სხვა პროექტებშიც.
+დამატებითი ინფორმაციის მოპოვება შეიძლება [$2 ფაილის აღწერის გვერდზე].',
+'sharedupload-desc-here' => 'ეს ფაილი $1-დან შეიძლება გამოყენებული იქნას სხვა პროექტებშიც.
+მისი [$2 აღწერის გვერდიდან] ინფორმაცია წარმოდგენილია ქვევით.',
+'filepage-nofile' => 'ამ სახელით ფაილი არ არსებობს.',
+'filepage-nofile-link' => 'ამ სახელით ფაილი არ არსებობს, [$1 თუმცა თქვენ მისი ატვირთვა შეგიძლიათ].',
'uploadnewversion-linktext' => 'ატვირთეთ ამ ფაილის ახალი ვერსია',
-'shared-repo-from' => ' $1-დან', # $1 is the repository name
-'shared-repo' => 'საერთო საცავიდან', # used when shared-repo-NAME does not exist
+'shared-repo-from' => ' $1-დან',
+'shared-repo' => 'საერთო საცავიდან',
# File reversion
'filerevert' => 'დააბრუნე $1',
@@ -1479,6 +1621,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
** საავტორო უფლებების დარღვევა
** ფაილი-დუბლიკატი',
'filedelete-edit-reasonlist' => 'წაშლის მიზეზების რედაქტირება',
+'filedelete-maintenance' => 'ფაილების წაშლა და აღდგენა დროებით გათიშულია ტექნიკური სამუშაობის განმავლობაში.',
# MIME search
'mimesearch' => 'MIME ძიება',
@@ -1500,7 +1643,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
# Random page
'randompage' => 'ნებისმიერი გვერდი',
-'randompage-nopages' => 'სახელთა სივრცეში "$1" არ არის გვერდები.',
+'randompage-nopages' => '{{PLURAL:$2|სახელთა შემდეგი სივრცე|სახელთა შემდეგ სივრცეში}} "$1" არ არის გვერდები.',
# Random redirect
'randomredirect' => 'ნებისმიერი გადამისამართება',
@@ -1512,6 +1655,7 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'statistics-header-edits' => 'რედაქციების სტატისტიკა',
'statistics-header-views' => 'გვერდის მონახულების სტატისტიკა',
'statistics-header-users' => 'მომხმარებლის სტატისტიკა',
+'statistics-header-hooks' => 'სხვა სტატისტიკა',
'statistics-articles' => 'სტატიების',
'statistics-pages' => 'გვერდები',
'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
@@ -1542,8 +1686,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'brokenredirects' => 'გაწყვეტილი გადამისამართება',
'brokenredirectstext' => 'შემდეგი გადამისამართებები გაკეთებულია არარსებულ გვერდებზე:',
-'brokenredirects-edit' => '(რედაქტირება)',
-'brokenredirects-delete' => '(წაშლა)',
+'brokenredirects-edit' => 'რედაქტირება',
+'brokenredirects-delete' => 'წაშლა',
'withoutinterwiki' => 'გვერდები ენის ბმულების გარეშე',
'withoutinterwiki-summary' => 'შემდეგ გვერდებს სხვა ენების ვერსიებზე არ აქვთ ბმულები:',
@@ -1651,14 +1795,17 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
# Special:Categories
'categories' => 'კატეგორიები',
-'categoriespagetext' => 'ვიკიპედიაში შემდეგი კატეგორიებია.',
+'categoriespagetext' => 'შემდეგი {{PLURAL:$1|კატეგორია შეიცავს|კატეგორია შეიცავს}} გვერდს ან მედიას.
+[[Special:UnusedCategories|გამოუყენებელი კატეგორიები]] აქ ნაჩვენები არ არის.
+იხ. ასევე [[Special:WantedCategories|მოთხოვნილი კატეგორიები]].',
'categoriesfrom' => 'აჩვენეთ კატეგორიები, რომლებიც იწყება:',
'special-categories-sort-count' => 'დაალაგეთ რაოდენობის მიხედვით',
'special-categories-sort-abc' => 'ანბანზე დალაგება',
# Special:DeletedContributions
-'deletedcontributions' => 'მომხმარებლის წაშლილი წვლილი',
-'deletedcontributions-title' => 'წაშლილი წვლილი',
+'deletedcontributions' => 'მომხმარებლის წაშლილი წვლილი',
+'deletedcontributions-title' => 'წაშლილი წვლილი',
+'sp-deletedcontributions-contribs' => 'წვლილი',
# Special:LinkSearch
'linksearch' => 'გარე ბმულები',
@@ -1674,6 +1821,16 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'listusersfrom' => 'აჩვენეთ მომხმარებლები, რომლებიც იწყებიან:',
'listusers-submit' => 'ჩვენება',
'listusers-noresult' => 'მომხმარებელი ვერ ვიპოვეთ.',
+'listusers-blocked' => '(დაბლოკილია)',
+
+# Special:ActiveUsers
+'activeusers' => 'აქტიურ მომხმარებელთა სია',
+'activeusers-intro' => 'ეს არის მომხმარებელთა სია, რომელთაც აქვს წვლილი უკანასკნელი $1 {{PLURAL:$1|დღის|დღის}} განმავლობაში.',
+'activeusers-count' => '$1 {{PLURAL:$1|ცვილება|ცვლილებები|ცვლილებების}} {{PLURAL:$2|$3 დღე|$3 დღეები|$3 დღეების}} განმავლობაში.',
+'activeusers-from' => 'მომხმარებელთა ჩვენება, დაწყებული:',
+'activeusers-hidebots' => 'რობოტების დამალვა',
+'activeusers-hidesysops' => 'ადმინისტრატორების დამალვა',
+'activeusers-noresult' => 'მომხმარებლები არ არიან ნაპოვნი.',
# Special:Log/newusers
'newuserlogpage' => 'მომხმარებლის რეგისტრაციის ჟურნალი',
@@ -1684,17 +1841,23 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'newuserlog-autocreate-entry' => 'ავტომატურად შექმნილი ანგარიში',
# Special:ListGroupRights
-'listgrouprights' => 'მომხმარებელთა ჯგუფების უფლებები',
-'listgrouprights-summary' => 'ქვემოთ წარმოდგენილია ამ ვიკიში გარკვეულ ჯგუფთა სია და მათი უფლებები
+'listgrouprights' => 'მომხმარებელთა ჯგუფების უფლებები',
+'listgrouprights-summary' => 'ქვემოთ წარმოდგენილია ამ ვიკიში გარკვეულ ჯგუფთა სია და მათი უფლებები
შესაძლოა არსებობს[[{{MediaWiki:Listgrouprights-helppage}}|დამატებითი ინფორმაცია]] ინდივიდუალურ უფლებებთან დაკავშირებით.',
-'listgrouprights-group' => 'ჯგუფი',
-'listgrouprights-rights' => 'უფლებები',
-'listgrouprights-helppage' => 'Help:ჯგუფების უფლებები',
-'listgrouprights-members' => '(წევრების სია)',
-'listgrouprights-addgroup' => 'დაამატეთ {{PLURAL:$2|ჯგუფი|ჯგუფები}}: $1-ში',
-'listgrouprights-removegroup' => 'ამოიღე {{PLURAL:$2|ჯგუფი|ჯგუფები}}: $1-დან',
-'listgrouprights-addgroup-all' => 'ჩაამატეთ ყველა ჯგუფი',
-'listgrouprights-removegroup-all' => 'ყველა ჯგუფის წაშლა',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">წარმოდგენილი უფლებები</span>
+* <span class="listgrouprights-revoked">გაუქმებული უფლებები</span>',
+'listgrouprights-group' => 'ჯგუფი',
+'listgrouprights-rights' => 'უფლებები',
+'listgrouprights-helppage' => 'Help:ჯგუფების უფლებები',
+'listgrouprights-members' => '(წევრების სია)',
+'listgrouprights-addgroup' => 'დაამატეთ {{PLURAL:$2|ჯგუფი|ჯგუფები}}: $1-ში',
+'listgrouprights-removegroup' => 'ამოიღე {{PLURAL:$2|ჯგუფი|ჯგუფები}}: $1-დან',
+'listgrouprights-addgroup-all' => 'ჩაამატეთ ყველა ჯგუფი',
+'listgrouprights-removegroup-all' => 'ყველა ჯგუფის წაშლა',
+'listgrouprights-addgroup-self' => 'შეუძლია ჩაუმატოს {{PLURAL:$2|ჯგუფი|ჯგუფები}} თავის ანგარიშს: $1',
+'listgrouprights-removegroup-self' => 'შეუძლია წაშალოს {{PLURAL:$2|ჯგყფუ|ჯგუფები}} თავისი ანგარიშიდან: $1',
+'listgrouprights-addgroup-self-all' => 'შეუძლია ყელა ჯგუფია ჩამატება ანგარიშს.',
+'listgrouprights-removegroup-self-all' => 'შეუძლია თავისი ანგარიშის ყველა ჯგუფის წაშლა.',
# E-mail user
'mailnologin' => 'გამგზავნი მისამართი არ არის მითითებული.',
@@ -1768,26 +1931,31 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
'enotif_anon_editor' => 'ანონიმური მომხმარებელი $1',
'enotif_body' => 'პატივცემულო $WATCHINGUSERNAME,
-პროექტის "{{SITENAME}}" გვერდი $PAGETITLE $CHANGEDORCREATED იქნა მომხმარებლის $PAGEEDITOR მიერ შემდეგი თარიღით: $PAGEEDITDATE. ამჟამინდელი ვერსია იხილეთ აქ: $PAGETITLE_URL.
+
+პროექტ "{{SITENAME}}"-ის გვერდო $PAGETITLE შეიცვალა $CHANGEDORCREATED $PAGEEDITDATE $PAGEEDITOR-ის მიერ. იხილეთ $PAGETITLE_URL მოქმედი ვერსიისთვის.
$NEWPAGE
-რედაქციის მოკლე შინაარსი: $PAGESUMMARY $PAGEMINOREDIT
+რედაქტორის სიტყვა: $PAGESUMMARY $PAGEMINOREDIT
დაუკავშირდით რედაქტორს:
-ელ. ფოსტა: $PAGEEDITOR_EMAIL
+ფოსტა: $PAGEEDITOR_EMAIL
ვიკი: $PAGEEDITOR_WIKI
-შემდგომი ცვლილებების შესახებ შეტყობინებების მისაღებად ამ გვერდს კვლავ უნდა ესტუმროთ. აგრეთვე შეგიძლიათ აღადგინოთ შეტყობინებათა პარამეტრები თქვენს კონტროლის სიაში შეტანილი ყველა საკონტროლო გვერდისათვის.
+შემდგომი ცვლილებების შესახებ შეტყობინებების მისაღებად ამ გვერდს კვლავ უნდა ესტუმროთ.
+აგრეთვე შეგიძლიათ აღადგინოთ შეტყობინებათა პარამეტრები თქვენს კონტროლის სიაში შეტანილი ყველა საკონტროლო გვერდისათვის.
- შეტყობინებათა სისტემა, {{SITENAME}}
+ ღრმა პატივისცემით, {{SITENAME}} შეტყობინებათა სისტემა
--
-თქვენი კონტროლის სიის პარამეტრების შესაცვლელად მიმართეთ:
-{{SERVER}}{{localurl:Special:Watchlist/edit}}
+თქვენი კონტროლის სიის შესასწორებლად იხილეთ
+{{fullurl:{{#special:Watchlist}}/edit}}
-შემდგომი დახმარება:
-{{SERVER}}{{localurl:Help:Contents}}',
+თქვენი კონტროლის სიიდან გვერდის ამოშლა
+$UNWATCHURL
+
+დამატებითი ინფორმაცია
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'გვერდის წაშლა',
@@ -1798,11 +1966,12 @@ $NEWPAGE
'exblank' => 'გვერდი ცარიელი იყო',
'delete-confirm' => '"$1"-ის წაშლა',
'delete-legend' => 'წაშლა',
-'historywarning' => 'ყურადღება: გვერდს, რომლის წაშლასაც აპირებთ, აქვს ისტორია:',
+'historywarning' => "'''ყურადღება:''' ვერდს, რომლის წაშლასაც აპირებთ, აქვს დიდი ისტორია: ($1)",
'confirmdeletetext' => 'თქვენ მოითხოვეთ გვერდისა (ან ფაილისა) და მონაცემთა ბაზიდან მისი ისტორიის წაშლა.
გთხოვთ დაადასტუროთ, რომ მართლაც აპირებთ ამის გაკეთებას და გესმით თქვენი ქმედებების ფასი.
ასევე გადაამოწმეთ, თუ ასრულებთ ამას [[{{MediaWiki:Policy-url}}|წესებიდან გამომდინარე]].',
'actioncomplete' => 'მოქმედება შესრულებულია',
+'actionfailed' => 'მოქმედება ვერ განხორციელდა',
'deletedtext' => '"<nowiki>$1</nowiki>" წაშლილია. ბოლო წაშლილი გვერდების სია იხილეთ $2-ში.',
'deletedarticle' => 'წაშლილია "[[$1]]"',
'suppressedarticle' => 'დამალა «[[$1]]»-მა',
@@ -1824,19 +1993,20 @@ $NEWPAGE
იმოქმედეთ სიფრთხილით.',
# Rollback
-'rollback' => 'რედაქტირების გაუქმება',
-'rollback_short' => 'გაუქმება',
-'rollbacklink' => 'გაუქმება',
-'rollbackfailed' => 'შეცდომა გაუქმებისას',
-'cantrollback' => 'შეუძლებელია უწინდელი რედაქციის აღდგენა; ის, ვინც უკანასკნელი ცვლილებები შეიტანა, ამ სტატიის ერთადერთი ავტორია.',
-'alreadyrolled' => 'შეუძლებელია ბოლო ცვლილების გაუქმება [[:$1]], გაკეებული [[User:$2|$2]] ([[User talk:$2|განხილვა]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'რედაქტირების გაუქმება',
+'rollback_short' => 'გაუქმება',
+'rollbacklink' => 'გაუქმება',
+'rollbackfailed' => 'შეცდომა გაუქმებისას',
+'cantrollback' => 'შეუძლებელია უწინდელი რედაქციის აღდგენა; ის, ვინც უკანასკნელი ცვლილებები შეიტანა, ამ სტატიის ერთადერთი ავტორია.',
+'alreadyrolled' => 'შეუძლებელია ბოლო ცვლილების გაუქმება [[:$1]], გაკეებული [[User:$2|$2]] ([[User talk:$2|განხილვა]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
ვიღაცა სხვამ უკვე შეასწორა ან გაააუქმა ეს გვერდი.
ბოლო ცვლილებები შეიტანა [[User:$3|$3]] ([[User talk:$3|განხილვა]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "რედაქტირება განმარტებული იყო როგორც: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]]-ის რედაქტირება გაუქმდა; აღდგა ბოლოს [[User:$1|$1]]-ის მიერ რედაქტირებული ვერსია', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'გაუქმდა შესწორება $1; დაბრუნება ვერსიაზე $2.',
-'sessionfailure' => 'ჩანს, რომ პრობლემაა თქვენი რეგისტრაციის სესიისათვის;
+'editcomment' => "რედაქტირება განმარტებული იყო როგორც: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]]-ის რედაქტირება გაუქმდა; აღდგა ბოლოს [[User:$1|$1]]-ის მიერ რედაქტირებული ვერსია',
+'revertpage-nouser' => 'გაუქმდა (მომხმარებლის სახელი წაიშალა) მომხმარებელ [[User:$1|$1]] ბოლო რედაქტირეაზე.',
+'rollback-success' => 'გაუქმდა შესწორება $1; დაბრუნება ვერსიაზე $2.',
+'sessionfailure' => 'ჩანს, რომ პრობლემაა თქვენი რეგისტრაციის სესიისათვის;
ეს მოქმედება შეჩერდა თქვენი სესიაში შემოჭრის თავიდან ასაცილებლად.
გთხოვთ, დააწკაპუნოთ ღილაკს "უკან" და თავიდან ჩართოთ გვერდი, რომლიდანაც შემოხვედით და სცადოთ განმეორებით.',
@@ -1854,7 +2024,7 @@ $NEWPAGE
'protectexpiry' => 'ვადა',
'protect_expiry_invalid' => 'ვადის გასვლის დრო არასწორია.',
'protect_expiry_old' => 'ვადის გასვლის დრო წარსულშია.',
-'protect-unchain' => 'გადატანის ნებართვებზე ბლოკის მოხსნა',
+'protect-unchain-permissions' => 'მოხსენით ბლოკი დაცვის პარამეტრებს',
'protect-text' => "თქვენ შეგიძლიათ აქ იხილოთ და შეცვალოთ დაცვის დონე გვერდისთვის '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "თქვენ ვერ შეცვლით დაცვლის დონეს, რადგანაც თავად ხართ დაბლოკილი.
მოქმედი დაცვის მონაცემები გვერდისთვის '''$1''':",
@@ -1883,7 +2053,7 @@ $NEWPAGE
** რედაქტირებათა ომი
** პოპულარული გვერდი',
'protect-edit-reasonlist' => 'დაცვის მიზეზთა რედაქტირება',
-'protect-expiry-options' => '1 საათი:1 hour,1 დღე:1 day,1 კვირა:1 week,2 კვირა:2 weeks,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year,განუსაზღვრელი ვადით:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 საათი:1 hour,1 დღე:1 day,1 კვირა:1 week,2 კვირა:2 weeks,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year,განუსაზღვრელი ვადით:infinite',
'restriction-type' => 'უფლება',
'restriction-level' => 'შეზღუდვის დონე:',
'minimum-size' => 'მინ ზომა',
@@ -1921,6 +2091,7 @@ $NEWPAGE
'undelete-nodiff' => 'წინა ცვლილება ვერ ვიპოვეთ.',
'undeletebtn' => 'აღდგენა',
'undeletelink' => 'ნახვა/აღდგენა',
+'undeleteviewlink' => 'იხილე',
'undeletereset' => 'გადატვირთეთ',
'undeleteinvert' => 'გააუქმეთ გამოყოფა',
'undeletecomment' => 'მიზეზი:',
@@ -1958,19 +2129,23 @@ $1',
'contributions-title' => 'მომხმარებლის წვლილი $1',
'mycontris' => 'ჩემი წვლილი',
'contribsub2' => '$1 ($2) თვის',
-'nocontribs' => 'ძებნისას მითითებული პარამეტრების შესაბამისი არც ერთი ცვლილება ნაპოვნი არ არის', # Optional parameter: $1 is the user name
+'nocontribs' => 'ძებნისას მითითებული პარამეტრების შესაბამისი არც ერთი ცვლილება ნაპოვნი არ არის',
'uctop' => '(თავი)',
'month' => 'თვე:',
'year' => 'წელი:',
-'sp-contributions-newbies' => 'მხოლოდ ახალი მომხმარებლების წვლილის ჩვენება',
-'sp-contributions-newbies-sub' => 'ახალბედებისთვის',
-'sp-contributions-newbies-title' => 'ბოლოს დარეგისტრირებულ მომხმარებელთა წვლილი',
-'sp-contributions-blocklog' => 'ბლოკირების ისტორია',
-'sp-contributions-logs' => 'ჟურნალები',
-'sp-contributions-search' => 'წვლილის ძიება',
-'sp-contributions-username' => 'IP მისამართი ან მომხმარებლის სახელი:',
-'sp-contributions-submit' => 'ძიება',
+'sp-contributions-newbies' => 'მხოლოდ ახალი მომხმარებლების წვლილის ჩვენება',
+'sp-contributions-newbies-sub' => 'ახალბედებისთვის',
+'sp-contributions-newbies-title' => 'ბოლოს დარეგისტრირებულ მომხმარებელთა წვლილი',
+'sp-contributions-blocklog' => 'ბლოკირების ისტორია',
+'sp-contributions-deleted' => 'მომხმარებლის წაშლილი შესწოებები',
+'sp-contributions-logs' => 'ჟურნალები',
+'sp-contributions-talk' => 'განხილვა',
+'sp-contributions-userrights' => 'ომხმარებელთა უფლებების მართვა',
+'sp-contributions-blocked-notice' => 'ეს მომხმარებელი ამჟამად დაბლოკილია. ქვემოთ მოყვანილია ამონაწერი წაშლათა ჟურნალიდან:',
+'sp-contributions-search' => 'წვლილის ძიება',
+'sp-contributions-username' => 'IP მისამართი ან მომხმარებლის სახელი:',
+'sp-contributions-submit' => 'ძიება',
# What links here
'whatlinkshere' => 'ბმული გვერდზე',
@@ -1993,6 +2168,7 @@ $1',
# Block/unblock
'blockip' => 'მომხმარებლის ან IP მისამართის ბლოკირება',
+'blockip-title' => 'მომხმარებლის დაბლოკვა',
'blockip-legend' => 'მომხმარებლის დაბლოკვა',
'blockiptext' => 'გამოიყენეთ ქვემოთ მოყვანილი ფორმა სპეციფიური IP მისამართის
ან მომხმარებლისთვის რედაქტირების ბლოკირებისთვის.
@@ -2019,7 +2195,7 @@ $1',
'ipbenableautoblock' => 'აბომატურად დაბლოკეთ მომხმარებლის მიერ გამოყენებული IP მისამართები.',
'ipbsubmit' => 'მომხმარებლის დაბლოკვა',
'ipbother' => 'სხვა დრო',
-'ipboptions' => '2 საათი:2 hours,1 დღე:1 day,3 დღე:3 days,1 კვირა:1 week,2 კვირა:2 weeks,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year,განუსაზღვრელი ვადით:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 საათი:2 hours,1 დღე:1 day,3 დღე:3 days,1 კვირა:1 week,2 კვირა:2 weeks,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year,განუსაზღვრელი ვადით:infinite',
'ipbotheroption' => 'სხვა',
'ipbotherreason' => 'სხვა/დამატებითი მიზეზი:',
'ipbhidename' => 'მომხმარებლის სახელის დამალვა შესწორებებსა და სიებში.შ',
@@ -2048,9 +2224,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 დროებითი ბლოკირებები',
'ipblocklist-sh-addressblocks' => 'გარკვეული IP-ს $1 ბლოკირებები',
'ipblocklist-submit' => 'ძიება',
+'ipblocklist-localblock' => 'ლოკალური ბლოკირება',
+'ipblocklist-otherblocks' => 'სხვა {{PLURAL:$1|დაბლოკვა|დაბლოკვები}}',
'blocklistline' => '$1, $2 დაბლოკა $3 ($4)',
'infiniteblock' => 'უსასრულო',
-'expiringblock' => 'ვადის გასვლის დრო $1',
+'expiringblock' => 'ვადის გასვლის დრო $1 $2',
'anononlyblock' => 'მხოლოდ ანონ.',
'noautoblockblock' => 'ავტობლოკირება გათიშულია',
'createaccountblock' => 'ანგარიშის გახსნა ბლოკირებულია',
@@ -2064,7 +2242,10 @@ $1',
'contribslink' => 'წვლილი',
'autoblocker' => 'თქვენ ავტომატურად ბლოკირებული ხართ, ვინაიდან თქვენი IP მისამართი ახლახან იქნა გამოყენებული "[[User:$1|$1]]"–ის მიერ. $1-ის ბლოკირების მიზეზი: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'დაბლოკილთა აღრიცხვა',
-'blocklog-fulllog' => 'ბლოკირებათა სრული ჟურნალი',
+'blocklog-showlog' => 'ეს მომხმარებელი ამჟამად დაბლოკილია.
+ქვემოთ მოყვანილია ამონაწერი ბოლირებათა ჟურნალი:',
+'blocklog-showsuppresslog' => 'ეს მომხმარებლი უკვე დამალულია და დაბლოკილია.
+დაბლოკვათა ჟურნალი ქვემოთ მოყვანილია:',
'blocklogentry' => '"[[$1]]" ბლოკირების ვადის გასვლის თარიღი $2 $3.',
'reblock-logentry' => 'შეასწორა ბლოკირების კონფიგურაცია [[$1]]-სთვის, ვადა გადისშ $2 $3',
'blocklogtext' => 'ეს არის მომხმარებლების დაბლოკვის და განბლოკვის ჟურნალი. ავტომატურად დაბლოკილი IP მისამართები არაა ჩამოთვლილი. იხილეთ [[Special:IPBlockList|IP ბლოკირების სია]] მიმდინარე დაბლოკვებისთვის.',
@@ -2083,9 +2264,11 @@ $1',
'ipb_already_blocked' => '"$1" უკვე ბლოკირებულია',
'ipb-needreblock' => '== უკვე დაბლოკილია==
მომხმარებელი $1 უკვე დაიბლოკა. გსურთ დაბლოკვის პარამეტრების შესწორება?',
+'ipb-otherblocks-header' => 'სხვა {{PLURAL:$1|დაბლოკვა|დაბლოკვები}}',
'ipb_cant_unblock' => 'შეცდომა. ბლოკირება $1 ID-ით არ არის ნაპოვნი. შესაძლოა იგი უკვე მოხსნილია',
'ipb_blocked_as_range' => 'შეცდომა: IP-მისამართი $1 არ იყო პირდაპირ დაბლოკილი, შესაბამისად ვერ მოხდება მისი განბლოკვა.თუმცა იგი ეკუთვნის დიაპაზონს $2, რომლის განბლოკვა შესაძლებელია.',
'ip_range_invalid' => 'არასწორი IP მისამართი',
+'ip_range_toolarge' => 'დაბლოკვა /$1 დიაპაზონზე ზემოთ აკრძალულია.',
'blockme' => 'დამბლოკე',
'proxyblocker' => 'პროქსის ბლოკირება',
'proxyblocker-disabled' => 'ეს ფუნქცია გაუქმებულია.',
@@ -2094,6 +2277,7 @@ $1',
'sorbsreason' => 'თქვენი IP-მისამართი მიჩნევა ღია პროქსიდ DNSBL-ის თანახმად.',
'sorbs_create_account_reason' => 'თქვენი IP-მისამართი ითვლება ღია პროქსიდ DNSBL-ის ანახმად. თქვენ ვერ შექმნით ანგარიშს.',
'cant-block-while-blocked' => 'თქვენ ვერ დაბლოკავთ სხვა მომხმარებლებს, რადგანაც თავად ხართ დაბლოკილი.',
+'cant-see-hidden-user' => 'მომხმარებელი, რომლის დაბლოკვასაც ცდილოთ, უკვე დაბლოკილია და დამალულია. რადგანაც თქვენ არ გაქვთ დამალულ მომხმარებლებთან მუშაობის ნებართვა, თქვენ ვერ შეცვლით ამ ბლოკს.',
# Developer tools
'lockdb' => 'ჩაკეტე მონაცემთა ბაზა',
@@ -2127,6 +2311,7 @@ $1',
ამ შემთხვევებში, თქვენ თავად მოგიწევთ ამ გვერდის გადატანა, სურვილისამებრ.",
'movearticle' => 'გვერდის გადატანა',
+'moveuserpage-warning' => "'''გაფრთხილება:''' თქვენ გადაგაქვთ მომხმარებლის გვერდი. გთხოვთ გაითვალისწინეთ, რომ გადატანა შესრულდება, მომხმარებლის სახელის გადარქმევა კი ''არა''.",
'movenologin' => 'რეგისტრაცია ვერ გაიარა',
'movenologintext' => 'თქვენ უნდა [[Special:UserLogin|წარუდგინოთ თავი]],
სისტემას რათა გადაიტანოთ გვერდები.',
@@ -2138,7 +2323,7 @@ $1',
'move-watch' => 'ამ გვერდის კონტროლი',
'movepagebtn' => 'გვერდის გადატანა',
'pagemovedsub' => 'გადატანა შესრულებულია',
-'movepage-moved' => '\'\'\'"$1" გადატანილ იქნა "$2"-ზე\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" გადატანილ იქნა "$2"-ზე\'\'\'',
'movepage-moved-redirect' => 'შეიქმნა გადამისამართება.',
'movepage-moved-noredirect' => 'გადამისამართება გაუქმდა.',
'articleexists' => 'ამ დასახელების გვერდი უკვე არსებობს, ან თქვენს მიერ მითითებული დასახელება არასწორია. თუ შეიძლება, მიუთითეთ სხვა სახელი.',
@@ -2179,6 +2364,14 @@ $1',
'imageinvalidfilename' => 'ფაილის საბოლოო სახელი შეცდომას შეიცავს',
'fix-double-redirects' => 'ძველ სათაურზე მიმთითებელი გადამისამართების ავტომატურად გასწორება',
'move-leave-redirect' => 'გადამისამართების დატოვება',
+'protectedpagemovewarning' => "'''ყურადღება.''' ეს არის დაცული გვერდი. მისი გადატანა მხოლოდ ადმინისტრატორებს შეუძლია.
+იხილეთ დაცვის ჟურნალის ჩანაწერი ინფორმაციისთვის:",
+'semiprotectedpagemovewarning' => "'''ყურადღება.''' ეს გვერდი დაცულია, მისი გადატანა მხოლოდ დარეგისტრირებულ მომხმარებლებს შეუძლიათ.
+იხილეთ დაცვის ჟურნალის ჩანაწერი ინფორმაციისთვის:",
+'move-over-sharedrepo' => '==ფაილი არსებობს==
+[[:$1]] არსებობს საზიარო საცავში. ფაილის ამ სათაურზე გადმოტანა საზიარო ფაილს გადაფარავს.',
+'file-exists-sharedrepo' => 'არჩეული ფაილის სახელი უკვე გამოყენებულია საზიარო საცავში.
+გთხოვთ სხვა სახელი აირჩიოთ.',
# Export
'export' => 'გვერდების ექსპორტი',
@@ -2200,15 +2393,21 @@ $1',
'export-pagelinks' => 'ჩართეთ დაკავშირებული გვერდები სიღრმით:',
# Namespace 8 related
-'allmessages' => 'ყველა სისტემური შეტყობინება',
-'allmessagesname' => 'დასახელება',
-'allmessagesdefault' => 'სტანდარტული ტექსტი',
-'allmessagescurrent' => 'მიმდინარე ტექსტი',
-'allmessagestext' => 'ეს არის სისემურ შეტყობინებათა სია «MediaWiki» სახელთა სივრცეში.
+'allmessages' => 'ყველა სისტემური შეტყობინება',
+'allmessagesname' => 'დასახელება',
+'allmessagesdefault' => 'სტანდარტული ტექსტი',
+'allmessagescurrent' => 'მიმდინარე ტექსტი',
+'allmessagestext' => 'ეს არის სისემურ შეტყობინებათა სია «MediaWiki» სახელთა სივრცეში.
გთხოვთ ეწვიოთ [http://www.mediawiki.org/wiki/Localisation ლოკალიზაციის აღმწერ] გვერდს [http://translatewiki.net translatewiki.net] პროექტს, თუ გსურთ MediaWiki ლოკალიზაციაში წვლილის შეტანა.',
-'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages-ის უზრუნველყოფა არ ხდება, ვინაიდან wgUseDatabaseMessages გამორთულია.',
-'allmessagesfilter' => 'შეტყობინების სახელის გაფილტვრა:',
-'allmessagesmodified' => 'აჩვენე მხოლოდ შეცვლილი',
+'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages-ის უზრუნველყოფა არ ხდება, ვინაიდან wgUseDatabaseMessages გამორთულია.',
+'allmessages-filter-legend' => 'ფილტრი',
+'allmessages-filter' => 'ფილტრი ცვლილებების სტატუსით:',
+'allmessages-filter-unmodified' => 'უცვლადე',
+'allmessages-filter-all' => 'ყველა',
+'allmessages-filter-modified' => 'ცვლადი',
+'allmessages-prefix' => 'წინსართის ფილტრი:',
+'allmessages-language' => 'ენა:',
+'allmessages-filter-submit' => 'გადასვლა',
# Thumbnails
'thumbnail-more' => 'გაზარდე',
@@ -2218,6 +2417,9 @@ $1',
'djvu_no_xml' => 'შეუძლებელია XML-ის მიღება DjVu-სთვის',
'thumbnail_invalid_params' => 'მინიატურის არასწორი პარამეტრი',
'thumbnail_dest_directory' => 'შეუძლებელია სამიზნე დირექტორიის შექმნა',
+'thumbnail_image-type' => 'გამოსახულების მოცემული ტიპი არ არის მხარდაჭერილი',
+'thumbnail_gd-library' => 'ბიბლიოთეკა GD-ს არასწორი კონფიგურაცია: $1 ფუნქცია არ არის აღმოჩენილი',
+'thumbnail_image-missing' => 'სავარაუდოდ $1 ფაილი არ არსებობს',
# Special:Import
'import' => 'გვერდების იმპორტი',
@@ -2282,6 +2484,7 @@ $1',
'tooltip-ca-viewsource' => 'გვერდი დაცულია. შეგიძლიათ იხილოთ მისი წყარო.',
'tooltip-ca-history' => 'ამ გვერდის ბოლო ვერსიები.',
'tooltip-ca-protect' => 'გვერდის დაცვა',
+'tooltip-ca-unprotect' => 'ამ გვერდის დაცვის მოხსნა',
'tooltip-ca-delete' => 'ამ გვერდის წაშლა',
'tooltip-ca-undelete' => 'აღადგინეთ გვერდის ცვლილებები მის წაშლამდე.',
'tooltip-ca-move' => 'ამ გვერდის გადატანა',
@@ -2292,6 +2495,7 @@ $1',
'tooltip-search-fulltext' => 'მოძებნე გვერდები, რომლებიც ამ ტექსტს შეიცავენ',
'tooltip-p-logo' => 'მთავარი გვერდი',
'tooltip-n-mainpage' => 'იხილეთ მთავარი გვერდი',
+'tooltip-n-mainpage-description' => 'იხილეთ მთავარი გვერდი',
'tooltip-n-portal' => 'პროექტის შესახებ, რა შეგიძლიათ გააკეთოთ, სად იპოვოთ',
'tooltip-n-currentevents' => 'გაიგეთ ვრცელი ინფორმაცია მიმდინარე მოვლენებზე',
'tooltip-n-recentchanges' => 'ვიკიში ბოლო ცვლილებების სია.',
@@ -2343,10 +2547,12 @@ $1',
# Attribution
'anonymous' => '{{SITENAME}}-ის ანონიმური {{PLURAL:$1|მომხმარებელი|მომხმარებლები}}',
'siteuser' => '{{SITENAME}} მომხმარებელი $1',
-'lastmodifiedatby' => 'ეს გვერდი ბოლოს შეიცვალა $2, $1 $3-ით.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} ანონიმური მომხმარებელი $1',
+'lastmodifiedatby' => 'ეს გვერდი ბოლოს შეიცვალა $2, $1 $3-ით.',
'othercontribs' => '$1-ს ნამუშევრის მიხედვით.',
'others' => 'სხვები',
'siteusers' => '{{SITENAME}}-ის {{PLURAL:$2|მომხმარებელი|მომხმარებლები|}} $1',
+'anonusers' => '{{SITENAME}} ანონიმური {{PLURAL:$2|მომხმარებელი|მომხმარებლები}} $1',
'creditspage' => 'წვლილი',
'nocredits' => 'აქ ამ გვერდისთვის ხელმისაწვდომი ინფორმაცია არ არსებობს.',
@@ -2375,11 +2581,22 @@ $1',
'mw_math_modern' => 'მიზანშეწონილია უფრო თანამედროვე ბრაუზერებისთვის',
'mw_math_mathml' => 'MathML თუ შესაძლებელია (ექსპერიმენტული)',
+# Math errors
+'math_failure' => 'შეუძლებელია გამონათქვამის გარჩევაშ',
+'math_unknown_error' => 'უცნობი შეცდომა',
+'math_unknown_function' => 'უცნობი ფუნქცია',
+'math_lexing_error' => 'ლექსიკური შეცდომა',
+'math_syntax_error' => 'სინტაქსი არასწორია',
+'math_image_error' => 'გარდაქმნისას PNG-ში წარმოიშვა შეცდომა; შეამოწმეთ latex, dvips, gs და convert-ის სისწორე',
+'math_bad_tmpdir' => 'შეუძლებელია ჩანაწერის შექმნა მათემატიკურ დროებით კატალოგში',
+'math_bad_output' => 'შეუძლებელია შექმნა ან ჩაწერა მათემატიკურ გამსვლელ კატალოგში',
+'math_notexvc' => 'შემსრულებელი ფაილი texvc არ არის ნაპოვნი; იხ.math/README ინფორმაციისთვის.',
+
# Patrolling
'markaspatrolleddiff' => 'მონიშნე როგორც პატროლირებული',
'markaspatrolledtext' => 'მონიშნე ეს სტატია როგორც პატროლირებული',
'markedaspatrolled' => 'მონიშნულია როგორც პატროლირებული',
-'markedaspatrolledtext' => 'არჩეული ვერსია მონიშნულია როგორც პატრულირებული',
+'markedaspatrolledtext' => 'არჩეული ვერსია მონიშნულია [[:$1]] როგორც შემოწმებული',
'rcpatroldisabled' => 'ბოლო ცვლილებების პატრულირება აკრძალულია',
'rcpatroldisabledtext' => 'ბოლო ცვლილებების პატრულირების შესაძლებლობა ამ მომენტისთვის გათიშულია',
'markedaspatrollederror' => 'შეუძლებელია ამ სტატიის მოhttp://translatewiki.net/w/i.php?title=MediaWiki:Markedaspatrollederror/ka&action=edit&loadgroup=core&loadtask=untranslatedნიშნვნა პატრულირებულად.',
@@ -2409,13 +2626,10 @@ $1',
'previousdiff' => '← წინა ცვლილება',
'nextdiff' => 'შემდეგი ცვლილება →',
-# Visual comparison
-'visual-comparison' => 'ვიზუალური შედარება',
-
# Media information
'mediawarning' => "'''ყურადღება''': ეს ფაილი შესაძლოა შეიცავდეს მავნე კოდს.
მისმა ჩატვირთვამ შესაძლოა თქვენი სისტემა დააზიანოს.",
-'imagemaxsize' => 'სურათის მაქსიმალური ზომა აღწერილობის გვერდზე:',
+'imagemaxsize' => "სურათის მაქსიმალური ზომა <br />''აღწერილობის გვერდზე:''",
'thumbsize' => 'შემცირებული ზომა:',
'widthheightpage' => '$1×$2, $3 გვერდი',
'file-info' => '(ფაილის ზომა: $1, MIME ტიპი: $2)',
@@ -2424,6 +2638,8 @@ $1',
'svg-long-desc' => '(ფაილი SVG, ნომინალურად $1 × $2 პიქსელი, ფაილის ზომა: $3)',
'show-big-image' => 'სრული გარჩევადობა',
'show-big-image-thumb' => '<small>ზომა წინასწარი გადახედვისას: $1 × $2 პიქსელი</small>',
+'file-info-gif-looped' => 'დარგოლილი',
+'file-info-gif-frames' => '$1 კადრი',
# Special:NewFiles
'newimages' => 'ახალი სურათები',
@@ -2457,7 +2673,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'სიგანე',
@@ -2585,14 +2801,14 @@ $1',
'exif-unknowndate' => 'უცნობი თარიღი',
-'exif-orientation-1' => 'ნორმალური', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'ჰორიზონტალით აირეკლა', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180°-ით შებრუნდა', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'აირეკლა ვერტიკალურად', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'შეტრიალებული 90°-ით CCW და ვერტიკალურად აირეკლა', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'შეტრიალებულია 90°-ით CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'შეტრიალებულია 90°-ით CW და ვერტიკალურად აირეკლა', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'შებრუნება 90°-ით CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'ნორმალური',
+'exif-orientation-2' => 'ჰორიზონტალით აირეკლა',
+'exif-orientation-3' => '180°-ით შებრუნდა',
+'exif-orientation-4' => 'აირეკლა ვერტიკალურად',
+'exif-orientation-5' => 'შეტრიალებული 90°-ით CCW და ვერტიკალურად აირეკლა',
+'exif-orientation-6' => 'შეტრიალებულია 90°-ით CW',
+'exif-orientation-7' => 'შეტრიალებულია 90°-ით CW და ვერტიკალურად აირეკლა',
+'exif-orientation-8' => 'შებრუნება 90°-ით CCW',
'exif-planarconfiguration-1' => 'ფორმატი «chunky»',
'exif-planarconfiguration-2' => 'ფორმატი «planar»',
@@ -2715,7 +2931,7 @@ $1',
'exif-gpsmeasuremode-2' => '2 კოორდინატის ცვლილება',
'exif-gpsmeasuremode-3' => '3-განზომილებიანი გაზომვა',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'კილომეტრი საათში',
'exif-gpsspeed-m' => 'მილი საათში',
'exif-gpsspeed-n' => 'კვანძები',
@@ -2734,6 +2950,7 @@ $1',
'watchlistall2' => 'ყველა',
'namespacesall' => 'ყველა',
'monthsall' => 'ყველა',
+'limitall' => 'ყველა',
# E-mail address confirmation
'confirmemail' => 'ელ. ფოსტის მისამართის დადასტურება',
@@ -2870,7 +3087,7 @@ $1',
'duplicate-defaultsort' => "'''ყურადღება.'''სორტირების გასაღებს «$2»-ს გააჭრის წინა გასაღებს «$1»-ს.",
# Special:Version
-'version' => 'ვერსია', # Not used as normal message but as header for the special page itself
+'version' => 'ვერსია',
'version-extensions' => 'დაყენებული გაფართოებები',
'version-specialpages' => 'სპეციალური გვერდები',
'version-parserhooks' => 'სინტაქსური ანალიზატორის ჰუკები',
@@ -2884,7 +3101,7 @@ $1',
'version-skin-extension-functions' => 'გაფართოებათა თემების ფუნქციები',
'version-hook-name' => 'ჰუკის სახელი',
'version-hook-subscribedby' => 'ჩაწერილია',
-'version-version' => 'ვერსია',
+'version-version' => '(ვერსია $1)',
'version-license' => 'ლიცენზია',
'version-software' => 'დაინსტალირებული პროგრამული უზრუნველყოფა',
'version-software-product' => 'პროდუქტი',
@@ -2962,4 +3179,15 @@ $1',
'dberr-outofdate' => 'გაითვალისწინეთ, რომ თქვენი კონტენტის ინდექსები შეიძლება შეუსაბამო იყოს',
'dberr-cachederror' => 'ეს არის მოთხოვნილი გვერდის კეშირებული ვერსია, და შესაძლება მოძველდა.',
+# HTML forms
+'htmlform-invalid-input' => 'თქვენს მიერ შეყვანილი ინფორმაციის ნაწილმა გამოიწვია პრობლემები',
+'htmlform-select-badoption' => 'თქვენს მიერ მითითებული მნიშვნელობა მიუღებელია.',
+'htmlform-int-invalid' => 'თქვენს მიერ მითითებული მნიშვნელობა არ არის მთელი რიცხვი.',
+'htmlform-float-invalid' => 'თქვენს მიერ მითითებული მნიშვნელობა არ არის რიცხვი.',
+'htmlform-int-toolow' => 'თქვენს მიერ მითითებული მნიშვნელობა მინიმუმზე დაბალია — $1',
+'htmlform-int-toohigh' => 'თქვენს მიერ მითითებული მნიშვნელობა მაქსიმალურს აღემატება — $1',
+'htmlform-submit' => 'შენახვა',
+'htmlform-reset' => 'ცვლილებების გაუქმება',
+'htmlform-selectorother-other' => 'სხვა',
+
);
diff --git a/languages/messages/MessagesKaa.php b/languages/messages/MessagesKaa.php
index ea4715ce..b22158a5 100644
--- a/languages/messages/MessagesKaa.php
+++ b/languages/messages/MessagesKaa.php
@@ -257,7 +257,7 @@ $messages = array(
'category-media-header' => '"$1" kategoriyasindag\'ı media',
'category-empty' => "''Bul kategoriyada ha'zir hesh bet yamasa media joq''",
'hidden-categories' => '{{PLURAL:$1|Jasırın kategoriya|Jasırın kategoriyalar}}',
-'hidden-category-category' => 'Jasırın kategoriyalar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Jasırın kategoriyalar',
'category-subcat-count' => "{{PLURAL:$2|Bul kategoriyada tek to'mendegi podkategoriya bar.|Bul kategoriyada $1 podkategoriya bar (barlıg'ı $2).}}",
'category-subcat-count-limited' => "Bul kategoriyada to'mendegi {{PLURAL:$1|podkategoriya|$1 podkategoriyalar}} bar.",
'category-article-count' => "{{PLURAL:$2|Bul kategoriyada tek to'mendegi bet bar.|Bul kategoriyada to'mendegi $1 bet bar (barlıg'ı $2).}}",
@@ -275,10 +275,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWikidin' Ko'p Soralatug'ın Sorawları]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki haqqında xat tarqatıw dizimi]",
-'about' => 'Proyekt haqqında',
-'article' => "Mag'lıwmat beti",
-'newwindow' => "(jan'a aynada)",
-'cancel' => 'Biykar etiw',
+'about' => 'Proyekt haqqında',
+'article' => "Mag'lıwmat beti",
+'newwindow' => "(jan'a aynada)",
+'cancel' => 'Biykar etiw',
+'moredotdotdot' => "Ja'ne...",
+'mypage' => "Menin' betim",
+'mytalk' => "Menin' sa'wbetim",
+'anontalk' => "Usı IP sa'wbeti",
+'navigation' => 'Navigatsiya',
+'and' => "&#32;ha'm",
+
+# Cologne Blue skin
'qbfind' => 'Tabıw',
'qbbrowse' => "Ko'riw",
'qbedit' => "O'zgertiw",
@@ -286,15 +294,8 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => "Menin' betlerim",
'qbspecialpages' => 'Arnawlı betler',
-'moredotdotdot' => "Ja'ne...",
-'mypage' => "Menin' betim",
-'mytalk' => "Menin' sa'wbetim",
-'anontalk' => "Usı IP sa'wbeti",
-'navigation' => 'Navigatsiya',
-'and' => "&#32;ha'm",
-
-# Metadata in edit box
-'metadata_help' => "Metamag'lıwmat:",
+'faq' => 'KBS',
+'faqpage' => 'Project:KBS',
'errorpagetitle' => 'Qatelik',
'returnto' => '$1 betine qaytıw.',
@@ -344,7 +345,7 @@ $messages = array(
'otherlanguages' => 'Basqa tillerde',
'redirectedfrom' => "($1 degennen burılg'an)",
'redirectpagesub' => 'Burıwshı bet',
-'lastmodifiedat' => "Bul bettin' aqırg'ı ma'rte o'zgertilgen waqtı: $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Bul bettin' aqırg'ı ma'rte o'zgertilgen waqtı: $2, $1.",
'viewcount' => "Bul bet {{PLURAL:$1|bir ma'rte|$1 ma'rte}} ko'rip shıg'ılg'an.",
'protectedpage' => "Qorg'alg'an bet",
'jumpto' => "Bug'an o'tiw:",
@@ -355,7 +356,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} haqqında',
'aboutpage' => 'Project:Proyekt haqqında',
'copyright' => "Mag'lıwmat $1 boyınsha alıng'an.",
-'copyrightpagename' => "{{SITENAME}} proyektinin' avtorlıq huquqları",
'copyrightpage' => '{{ns:project}}:Avtorlıq huquqları',
'currentevents' => "Ha'zirgi ha'diyseler",
'currentevents-url' => "Project:Ha'zirgi ha'diyseler",
@@ -363,8 +363,6 @@ $messages = array(
'disclaimerpage' => 'Project:Juwapkershilikten bas tartıw',
'edithelp' => "O'zgertiw anıqlaması",
'edithelppage' => "Help:O'zgertiw",
-'faq' => 'KBS',
-'faqpage' => 'Project:KBS',
'helppage' => 'Help:Mazmunı',
'mainpage' => 'Bas bet',
'mainpage-description' => 'Bas bet',
@@ -444,10 +442,6 @@ Aqırg\'ı soralg\'an mag\'lıwmatlar bazası sorawı:
"$1"
funktsiya: "$2".
MySQL qaytarg\'an qa\'tesi "$3: $4".',
-'noconnect' => "Keshirersiz! Wikide texnikalıq qıyınshılıqlar sa'dir bolg'anlıg'ı sebebli mag'ıwmatlar bazası serverine baylanısıw mu'mkinshiligi joq.<br />
-$1",
-'nodb' => "$1 mag'lıwmatlar bazası tabılmadı",
-'cachederror' => "To'mende soralg'an bettin' kesh nusqası ko'rsetilgen, ha'm jan'alanbag'an bolıwı mu'mkin.",
'laggedslavemode' => "Esletpe: Bette aqırg'ı jan'alanıwlar bolmawı mu'mkin.",
'readonly' => "Mag'lıwmatlar bazası qulplang'an",
'enterlockreason' => "Qulıplawdın' sebebin ha'mde qansha waqıtqa esaplang'anlıg'ın ko'rsetin'",
@@ -504,7 +498,6 @@ Keltirilgen sebep: ''$2''.",
'virus-unknownscanner' => 'belgisiz antivirus:',
# Login and logout pages
-'logouttitle' => "Shıg'ıw",
'logouttext' => "'''Siz endi sayttan shıqtın'ız.'''
Siz {{SITENAME}} saytınan anonim halda paydalanıwın'ız mu'mkin.
@@ -514,7 +507,6 @@ Sonı este saqlan', ayrım betler sizin' brauzerin'izdin' keshi tazalanbag'anlı
Akkauntın'ız jaratıldı.
[[Special:Preferences|{{SITENAME}} sazlawların'ızdı]] o'zgertiwdi umıtpan'.",
-'loginpagetitle' => 'Kiriw',
'yourname' => 'Paydalanıwshı atı:',
'yourpassword' => 'Parol:',
'yourpasswordagain' => "Paroldi qayta kiritin':",
@@ -535,23 +527,7 @@ Akkauntın'ız jaratıldı.
'createaccountmail' => 'e-mail arqalı',
'badretype' => 'Siz kiritken parol tuwra kelmedi.',
'userexists' => "Kiritken paydalanıwshı atı ba'nt. Basqa at kiritin'.",
-'youremail' => 'E-mail:',
-'username' => 'Paydalanıwshı atı:',
-'uid' => 'Paydalanıwshı IDsı:',
-'prefs-memberingroups' => "Kirgen {{PLURAL:$1|toparın'ız|toparların'ız}}:",
-'yourrealname' => "Haqıyqıy isimin'iz:",
-'yourlanguage' => 'Til:',
-'yourvariant' => "Tu'ri",
-'yournick' => "Laqabın'ız:",
-'badsig' => "Shala imzalar nadurıs; HTML teglerin tekserip ko'rin'.",
-'badsiglength' => "İmzan'ız dım uzın.
-{{PLURAL:$1|simvoldan|simvoldan}} aspawı kerek.",
-'email' => 'E-mail',
-'prefs-help-realname' => "Haqıyqıy atın'ız (ma'jbu'riy emes): eger onı ko'rsetsen'iz, bet kim ta'repinen o'zgertilgenin ko'rsetiwde qollanıladı.",
'loginerror' => 'Kiriwde qatelik',
-'prefs-help-email' => "E-mail adresin'izdi ko'rsetiw ma'jbu'riy emes, biraq bul eger siz parolin'izdi esten shig'arsan'iz usı e-mailge taza paroldi jiberiw mu'mkinshiligin jaratadı.
-Siz ja'ne de basqa paydalanıwshılarg'a siz benen (adresin'izdi bilmegen halda) paydalanıwshı yamasa paydalanıwshı_sa'wbeti betleri arqalı baylanısıw imkaniyatın jaratadı.",
-'prefs-help-email-required' => 'E-mail adresi kerek.',
'nocookiesnew' => "Paydalanıwshı akkauntı jaratıldı, biraq ele kirmegensiz.
Paydalanıwshılar kiriwi ushın {{SITENAME}} kukilerden paydalanadı.
Sizde kukiler o'shirilgen.
@@ -619,8 +595,6 @@ Kiriw protsessin juwmaqlaw ushın jan'a parolin'izdi usı jerge kiritin':",
'retypenew' => "Taza paroldi qayta kiritin':",
'resetpass_submit' => "Paroldi kirgizin'",
'resetpass_success' => "Parolin'iz sa'tli o'zgertildi! Endi kirin'...",
-'resetpass_bad_temporary' => "Waqtinshalıq parol nadurıs.
-Ba'lkim a'lle qashan parolin'izdi o'zgertken shıg'arsız yamasa jan'a waqtınshalıq parol sorag'an bolıwın'ız mu'mkin.",
'resetpass_forbidden' => "Paroller o'zgertile almaydi",
'resetpass-submit-loggedin' => "Paroldi o'zgertiw",
'resetpass-temp-password' => 'Waqtınshalıq parol:',
@@ -683,7 +657,6 @@ to'mende ko'rsetilgen:",
'blockededitsource' => "'''$1''' degennin' '''siz ozgertken''' teksti to'mende ko'rsetilgen:",
'whitelistedittitle' => "O'zgertiw ushın sistemag'a kiriwin'iz kerek",
'whitelistedittext' => "Betterdi o'zgertiw ushın $1 sha'rt.",
-'confirmedittitle' => "O'zgertiw ushın e-mail tastıyıqlaması kerek",
'confirmedittext' => "Betlerge o'zgeris kiritiwin'iz ushın aldın E-pochta adresin'izdi tastıyıqlawın'ız kerek.
E-pochta adresin'izdi [[Special:Preferences|paydalanıwshı sazlawları bo'limi]] arqalı ko'rsetin' ha'm jaramlılıg'ın tekserin'.",
'nosuchsectiontitle' => "Bunday bo'lim joq",
@@ -720,8 +693,8 @@ Qosqan u'lesin'iz o'zin'izdin' jazg'anın'ız yamasa ashıq tu'rdegi derekten al
'copyrightwarning2' => "Este tutın', {{SITENAME}} proyektindegi barlıq u'lesler basqa paydalanıwshılar arqalı o'zgertiliwi yamasa o'shiriliwi mu'mkin. Eger siz tekstin'izdin' erkin tarqatılıwın ha'mde qa'legen paydalanıwshı o'zgertiwin qa'lemesen'iz, bul jerge jaylastırmag'anın'ız maqul.<br /> Qosqan u'lesin'iz o'zin'izdin' jazg'anın'ız yamasa ashıq tu'rdegi derekten alıng'anlig'ına wa'de berin' (qosımsha mag'lıwmat ushın $1 hu'jjetin qaran'). '''AVTORLIQ HUQUQI MENEN QORG'ALG'AN MAG'LIWMATLARDI RUXSATSIZ JAYLASTIRMAN'!'''",
'longpagewarning' => "'''ESLETPE: Bul bettin' ha'jmi $1 kilobayt, geybir brauzerler 32 kBqa jaqın yamasa onnan u'lken bolg'an betlerdi o'zgertiwde qıyınshılıqlarg'a tuwra keliwi mu'mkin. Betti kishi bo'leklerge bo'liw haqqında oylap ko'rin'.'''",
'semiprotectedpagewarning' => "'''Eskertiw:''' Bet qulplang'an, tek registratsiyadan o'tken paydalanıwshılar g'ana o'zgerte aladı.",
-'templatesused' => "Bul bette qollanılg'an shablonlar:",
-'templatesusedpreview' => "Bul aldınnan ko'riw betinde qollanılg'an shablonlar:",
+'templatesused' => "Bul bette qollanılg'an {{PLURAL:$1|shablon|shablonlar}}:",
+'templatesusedpreview' => "Bul aldınnan ko'riw betinde qollanılg'an {{PLURAL:$1|shablon|shablonlar}}:",
'templatesusedsection' => "Bul bo'limde qollanılg'an shablonlar:",
'template-protected' => "(qorg'alg'an)",
'template-semiprotected' => "(yarım-qorg'alg'an)",
@@ -732,13 +705,12 @@ Arqag'a qaytıp bar betti o'zgertiwin'izge yamasa [[Special:UserLogin|kiriwin'iz
'nocreate-loggedin' => "Taza betler jaratıwın'ızg'a ruxsatın'ız joq.",
'permissionserrors' => 'Ruxsatnamalar Qatelikleri',
'permissionserrorstext-withaction' => "$2 ha'reketine ruxsatın'ız joq, to'mendegi {{PLURAL:$1|sebep|sebepler}} boyınsha:",
-'recreate-deleted-warn' => "'''Esletpe: Aldın o'shirilgen betti qayta jaratajaqsız.'''
+'recreate-moveddeleted-warn' => "'''Esletpe: Aldın o'shirilgen betti qayta jaratajaqsız.'''
Usi betti qaytadan jaratıw tuwrılıg'ın oylap ko'rin'.
Qolaylıq ushın to'mende o'shiriw jurnalı keltirilgen:",
-'deleted-notice' => "Bul bet o'shirilgen.
+'moveddeleted-notice' => "Bul bet o'shirilgen.
To'mende mag'lıwmat ushın bettin' o'shiriw jurnalı ko'rsetilgen.",
-'deletelog-fulllog' => 'Tolıq jurnaldı qaraw',
'edit-conflict' => "O'zgerislerdegi konflikt.",
# Parser/template warnings
@@ -756,7 +728,7 @@ $3 keltirilgen sebebi: ''$2''",
'currentrev' => "Ha'zirgi nusqa",
'currentrev-asof' => "Bul nusqanın' waqtı: $1",
'revisionasof' => '$1 waqtındagı nusqası',
-'revision-info' => "$1 waqtındag'ı $2 istegen nusqası", # Additionally available: $3: revision id
+'revision-info' => "$1 waqtındag'ı $2 istegen nusqası",
'previousrevision' => '←Eskilew nusqası',
'nextrevision' => "Jan'alaw nusqası→",
'currentrevisionlink' => "Ha'zirgi nusqa",
@@ -769,7 +741,6 @@ $3 keltirilgen sebebi: ''$2''",
Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
(aqır.) = aldıng'ı nusqasi menen parqı, k = kishi o'zgeris",
'history-fieldset-title' => 'Tariyxınan izlew',
-'deletedrev' => "[o'shirilgen]",
'histfirst' => "En' aldıng'ısı",
'histlast' => "En' aqırg'ısı",
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
@@ -778,7 +749,7 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
# Revision feed
'history-feed-title' => 'Nusqa tariyxı',
'history-feed-description' => "Usı bettin' wikidegi nusqa tariyxı",
-'history-feed-item-nocomment' => "$2 waqtındag'ı $1", # user at time
+'history-feed-item-nocomment' => "$2 waqtındag'ı $1",
# Revision deletion
'rev-deleted-comment' => "(kommentariy o'shirildi)",
@@ -788,12 +759,12 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|saylang'an nusqası|saylang'an nusqaları}}:'''",
'revdelete-legend' => "Ko'rinis sheklewlerin belgilew",
'revdelete-hide-text' => 'Nusqa tekstin jasır',
+'revdelete-hide-image' => "Fayl mag'lıwmatın jasır",
'revdelete-hide-name' => "Ha'reket ha'm onın' obyektin jasır",
'revdelete-hide-comment' => "O'zgertiw kommentariyin jasır",
'revdelete-hide-user' => "O'zgeriwshi atın/IP jasır",
'revdelete-hide-restricted' => "Usı sheklewlerdi administratorlarg'a qollaw ha'mde bul interfeysti qulıplaw",
'revdelete-suppress' => "Mag'lıwmatlardı administratorlar menen basqalardan da jasırıw",
-'revdelete-hide-image' => "Fayl mag'lıwmatın jasır",
'revdelete-unsuppress' => 'Qayta tiklengen nusqalardan sheklewlerdi alıp taslaw',
'revdelete-log' => 'Sebep:',
'revdelete-submit' => "Saylang'an nusqag'a qollanıw",
@@ -847,62 +818,8 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
'difference' => "(Nusqalar arasındag'ı ayırmashılıq)",
'lineno' => 'Qatar No $1:',
'compareselectedversions' => "Saylang'an nusqalardı salıstırıw",
-'visualcomparison' => "Ko'risli salıstırması",
-'wikicodecomparison' => 'Wikitekst salıstırıwı',
'editundo' => 'qaytar',
'diff-multi' => "(Aradag'ı {{PLURAL:$1|bir nusqa|$1 nusqa}} ko'rsetilmeydi.)",
-'diff-movedto' => "$1 degenge ko'shirildi",
-'diff-styleadded' => '$1 stili qosıldı',
-'diff-added' => '$1 qosıldı',
-'diff-changedto' => "$1 degenge o'zgertildi",
-'diff-movedoutof' => "$1 ko'shirildi",
-'diff-styleremoved' => "$1 stili o'shirildi",
-'diff-removed' => "$1 o'shirildi",
-'diff-changedfrom' => "$1 keyingi o'zgerisler",
-'diff-src' => 'derek',
-'diff-with' => '&#32;$1 $2 birgelikte',
-'diff-with-final' => "&#32;ha'm $1 $2",
-'diff-width' => 'en',
-'diff-height' => 'uzunlıq',
-'diff-p' => "'''jan'a qatar'''",
-'diff-blockquote' => "'''sitata'''",
-'diff-h1' => "'''1shi da'rejeli atama'''",
-'diff-h2' => "'''2shi da'rejeli atama'''",
-'diff-h3' => "'''3shi da'rejeli atama'''",
-'diff-h4' => "'''4shi da'rejeli atama'''",
-'diff-h5' => "'''5shi da'rejeli atama'''",
-'diff-pre' => "'''berilgen formattag'ı blok'''",
-'diff-div' => "'''bo'lim'''",
-'diff-ul' => "'''ta'rtipke keltirilmegen dizim'''",
-'diff-ol' => "'''ta'rtipke keltirilgen dizim'''",
-'diff-li' => "'''dizim elementi'''",
-'diff-table' => "'''keste'''",
-'diff-tbody' => "'''keste mazmunı'''",
-'diff-tr' => "'''qatar'''",
-'diff-td' => "'''kletka'''",
-'diff-th' => "'''atama'''",
-'diff-br' => "'''u'zilis'''",
-'diff-hr' => "'''gorizontal sızıqsha'''",
-'diff-code' => "'''kompyuter kodı blogı'''",
-'diff-dl' => "'''anıqlama dizimi'''",
-'diff-dt' => "'''anıqlama termini'''",
-'diff-dd' => "'''anıqlama'''",
-'diff-input' => "'''kiriw'''",
-'diff-form' => "'''forma'''",
-'diff-img' => "'''su'wret'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''siltew'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''qalın''''",
-'diff-strong' => "'''strong'''",
-'diff-em' => "'''saylandı'''",
-'diff-font' => "'''shrift'''",
-'diff-big' => "'''u'lken'''",
-'diff-del' => "'''o'shirilgen'''",
-'diff-tt' => "'''belgilengen enli'''",
-'diff-sub' => "'''qatar astı'''",
-'diff-sup' => "'''qatar u'stı'''",
-'diff-strike' => "'''u'sti sızılg'an'''",
# Search results
'searchresults' => "İzlew na'tiyjeleri",
@@ -910,23 +827,20 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{MediaWiki:Helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
'searchsubtitle' => 'İzlegenin\'iz: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" baslanıwshı barlıq betler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" siltewshi barlıq betler]])',
'searchsubtitleinvalid' => "'''$1''' ushın izlegenin'iz",
-'noexactmatch' => "'''\"\$1\" atamalı bet joq.''' Bul betti [[:\$1|jaratıwın'ız]] mu'mkin.",
-'noexactmatch-nocreate' => "'''\"\$1\" atamalı bet joq.'''",
'toomanymatches' => "Dım ko'p sa'ykeslikler qaytarıldı, basqa sorawdı isletip ko'rin'",
'titlematches' => "Bet ataması sa'ykes keledi",
'notitlematches' => 'Hesh qanday bet ataması tuwra kelmedi',
'textmatches' => "Bet tekstinin' tuwra kelgenleri",
'notextmatches' => 'Hesh qanday bet teksti tuwra kelmedi',
-'prevn' => "aldıng'ı $1",
-'nextn' => 'keyingi $1',
-'viewprevnext' => "Ko'riw: ($1) ($2) ($3)",
+'prevn' => "aldıng'ı {{PLURAL:$1|$1}}",
+'nextn' => 'keyingi {{PLURAL:$1|$1}}',
+'viewprevnext' => "Ko'riw: ($1 {{int:pipe-separator}} $2) ($3)",
'searchmenu-legend' => 'İzlew sazlawları',
'searchmenu-exists' => "'''Bul wikide \"[[:\$1]]\" atamalı bet bar'''",
'searchmenu-new' => "'''Bul wikide \"[[:\$1]]\" betin jaratıw!'''",
'searchhelp-url' => 'Help:Mazmunı',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Usı prefiks penen baslanıwshı betlerdi ko'rset]]",
'searchprofile-articles' => "Mag'lıwmat betleri",
-'searchprofile-articles-and-proj' => "Mag'lıwmat & proekt betleri",
'searchprofile-project' => 'Proekt betleri',
'searchprofile-images' => 'Fayllar',
'searchprofile-everything' => 'Barlıq jerde',
@@ -936,8 +850,6 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
'searchprofile-images-tooltip' => 'Fayllardı izlew',
'searchprofile-everything-tooltip' => "Barlıq betlerde izlew (sa'wbet betlerin qosıp)",
'searchprofile-advanced-tooltip' => "Berilgen isimler ko'pliginde izlew",
-'prefs-search-nsdefault' => "Baslang'ısh parametrler boyınsha izlew:",
-'prefs-search-nscustom' => "Berilgen isimler ko'pligin izlew:",
'search-result-size' => "$1 ({{PLURAL:$2|1 so'z|$2 so'z}})",
'search-result-score' => "Qatnasıqlıg'ı: $1%",
'search-redirect' => "(qayta bag'ıtlandırıw $1)",
@@ -954,7 +866,6 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
'searchall' => 'barlıq',
'showingresults' => "To'mende '''$2''' ornınan baslap {{PLURAL:$1|'''1''' na'tiyje|'''$1''' shekemgi na'tiyjeler}} ko'rsetilgen.",
'showingresultsnum' => "To'mende '''$2''' ornınan baslap {{PLURAL:$3|'''1''' na'tiyje|'''$3''' na'tiyje}} ko'rsetilgen.",
-'showingresultstotal' => "To'mende {{PLURAL:$4|'''$3''' arasınan '''$1''' na'tiyje ko'rsetiledi|'''$3''' arasınan '''$1 — $2''' na'tiyjeler ko'rsetiledi}}",
'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi.
Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''all:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
'search-nonefound' => "Sorawg'a sa'ykes na'tiyje tabılmadı.",
@@ -965,30 +876,26 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'powersearch-field' => "İzlenetug'ın so'z (yamasa so'z dizbegi):",
'search-external' => 'Sırtqı izlewshi',
+# Quickbar
+'qbsettings' => 'Navigatsiya paneli',
+'qbsettings-none' => 'Hesh qanday',
+'qbsettings-fixedleft' => 'Shepke bekitilgen',
+'qbsettings-fixedright' => "On'g'a bekitilgen",
+'qbsettings-floatingleft' => 'Shepte jıljıwshı',
+'qbsettings-floatingright' => "On'da jıljıwshı",
+
# Preferences page
'preferences' => 'Sazlawlar',
'mypreferences' => "Menin' sazlawlarım",
'prefs-edits' => "O'zgertiwler sanı:",
'prefsnologin' => 'Kirilmegen',
-'prefsnologintext' => 'Sazlawların\'ızdı ornatıw ushın <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} kiriwin\'iz]</span> sha\'rt.',
-'prefsreset' => "Sazlawlar baslang'ısh qa'lpine keltirildi.",
-'qbsettings' => 'Navigatsiya paneli',
-'qbsettings-none' => 'Hesh qanday',
-'qbsettings-fixedleft' => 'Shepke bekitilgen',
-'qbsettings-fixedright' => "On'g'a bekitilgen",
-'qbsettings-floatingleft' => 'Shepte jıljıwshı',
-'qbsettings-floatingright' => "On'da jıljıwshı",
+'prefsnologintext' => 'Sazlawların\'ızdı ornatıw ushın <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kiriwin\'iz]</span> sha\'rt.',
'changepassword' => "Paroldi o'zgertiw",
-'skin' => "Sırtqı ko'rinis",
+'prefs-skin' => "Sırtqı ko'rinis",
'skin-preview' => 'Korip al',
-'math' => 'Formulalar',
-'dateformat' => "Sa'ne formatı",
+'prefs-math' => 'Formulalar',
'datedefault' => 'Hesh sazlawlarsız',
-'datetime' => "Sa'ne ha'm waqıt",
-'math_unknown_error' => "belgisiz qa'telik",
-'math_unknown_function' => 'belgisiz funktsiya',
-'math_lexing_error' => "leksikalıq qa'telik",
-'math_syntax_error' => "sintaksikalıq qa'telik",
+'prefs-datetime' => "Sa'ne ha'm waqıt",
'prefs-personal' => 'Paydalanıwshı profaylı',
'prefs-rc' => "Aqırg'ı o'zgerisler",
'prefs-watchlist' => 'Baqlaw dizimi',
@@ -1000,7 +907,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'prefs-resetpass' => "Paroldi o'zgertiw",
'saveprefs' => 'Saqla',
'resetprefs' => "Saqlanbag'an o'zgerislerdi o'shir",
-'textboxsize' => "O'zgertiw",
+'prefs-editing' => "O'zgertiw",
'prefs-edit-boxsize' => "O'zgertiw aynasının' o'lshemi.",
'rows' => 'Qatarlar:',
'columns' => "Bag'analar:",
@@ -1010,9 +917,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'recentchangescount' => "Aqırg'ı o'zgerisler, tariyx ha'm jurnal betlerinde ko'rsetiletug'ın o'zgerisler sanı:",
'savedprefs' => "Sizin' sazlawların'ız saqlandı.",
'timezonelegend' => 'Waqıt zonası',
-'timezonetext' => "¹Jergilikli waqıtın'ız benen server waqıtının' (UTC) arasındag'ı ayırmashılıq saat sanı.",
'localtime' => 'Jergilikli waqıt:',
-'timezoneselect' => 'Waqıt zonası:',
'timezoneuseserverdefault' => "Serverdin' baslang'ısh sazlawların qollanıw",
'timezoneuseoffset' => "Basqa (o'zgeristi ko'rsetin')",
'timezoneoffset' => "Saat o'zgerisi¹:",
@@ -1023,10 +928,26 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'prefs-namespaces' => "İsimler ko'plikleri",
'defaultns' => "Usı isimler ko'pliklerinen defolt boyınsha izdew:",
'default' => 'defolt',
-'files' => 'Fayllar',
+'prefs-files' => 'Fayllar',
+'youremail' => 'E-mail:',
+'username' => 'Paydalanıwshı atı:',
+'uid' => 'Paydalanıwshı IDsı:',
+'prefs-memberingroups' => "Kirgen {{PLURAL:$1|toparın'ız|toparların'ız}}:",
+'yourrealname' => "Haqıyqıy isimin'iz:",
+'yourlanguage' => 'Til:',
+'yourvariant' => "Tu'ri",
+'yournick' => "Laqabın'ız:",
+'badsig' => "Shala imzalar nadurıs; HTML teglerin tekserip ko'rin'.",
+'badsiglength' => "İmzan'ız dım uzın.
+{{PLURAL:$1|simvoldan|simvoldan}} aspawı kerek.",
+'email' => 'E-mail',
+'prefs-help-realname' => "Haqıyqıy atın'ız (ma'jbu'riy emes): eger onı ko'rsetsen'iz, bet kim ta'repinen o'zgertilgenin ko'rsetiwde qollanıladı.",
+'prefs-help-email' => "E-mail adresin'izdi ko'rsetiw ma'jbu'riy emes, biraq bul eger siz parolin'izdi esten shig'arsan'iz usı e-mailge taza paroldi jiberiw mu'mkinshiligin jaratadı.
+Siz ja'ne de basqa paydalanıwshılarg'a siz benen (adresin'izdi bilmegen halda) paydalanıwshı yamasa paydalanıwshı_sa'wbeti betleri arqalı baylanısıw imkaniyatın jaratadı.",
+'prefs-help-email-required' => 'E-mail adresi kerek.',
# User rights
-'userrights' => 'Paydalanıwshı huqıqların basqarıw', # Not used as normal message but as header for the special page itself
+'userrights' => 'Paydalanıwshı huqıqların basqarıw',
'userrights-lookup-user' => 'Paydalanıwshı toparların basqarıw',
'userrights-user-editname' => "Paydalanıwshı atın kiritin':",
'editusergroup' => "Paydalanıwshı Toparların O'zgertiw",
@@ -1097,6 +1018,8 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'right-editprotected' => "Qorg'alg'an betlerdi o'zgertiw (kaskadlı qorg'awsız)",
'right-editinterface' => "Paydalanıwshı interfeysin o'zgertiw",
'right-editusercssjs' => "Basqa paydalanıwshılardın' CSS ha'm JS faylların o'zgertiw",
+'right-editusercss' => "Basqa paydalanıwshılardın' CSS faylların o'zgertiw",
+'right-edituserjs' => "Basqa paydalanıwshılardın' JS faylların o'zgertiw",
'right-markbotedits' => "Qaytarılg'an o'zgerislerdi botlardiki dep belgilew",
'right-import' => 'Basqa wikilerden betlerdi import qılıw',
'right-importupload' => 'Fayldi aploud qılıw arqalı betlerdi import qılıw',
@@ -1187,7 +1110,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
# Upload
'upload' => 'Fayldı aploud qılıw',
'uploadbtn' => 'Aploud!',
-'reupload' => 'Qayta aploud qılıw',
'reuploaddesc' => "Aploudtı biykar etiw ha'm aploud formasına qaytıw",
'uploadnologin' => 'Kirilmegen',
'uploadnologintext' => "Fayllardı aploud qılıw ushın [[Special:UserLogin|kiriwin'iz]] kerek.",
@@ -1210,7 +1132,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'filetype-badmime' => '"$1" MIME tu\'rli fayllardı aploud qılıw ruxsat etilmeydi.',
'filetype-missing' => 'Bul faildın ken\'eytpesi (mısalı ".jpg") joq.',
'largefileserver' => "Bul faildın mo'lsheri serverdin' ruxsatınan u'lken.",
-'fileexists-thumb' => "<center>'''Mına fayl bar'''</center>",
'successfulupload' => 'Tabıslı aploud',
'uploadwarning' => 'Aploud eskertiwi',
'savefile' => 'Fayldı saqla',
@@ -1233,6 +1154,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'upload-curl-error28' => 'Aploudqa berilgen waqıt pitti',
'license' => 'Litsenziyalandırıwı:',
+'license-header' => 'Litsenziyalandırıwı:',
'nolicense' => "Hesh na'rse saylanbag'an",
'license-nopreview' => "(Aldınnan ko'riw imkaniyatı joq)",
'upload_source_url' => " (jaramlı, ha'mmege ashıq URL)",
@@ -1249,6 +1171,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'listfiles_description' => 'Kommentariy',
# File description page
+'file-anchor-link' => 'Fayl beti',
'filehist' => 'Fayl tariyxı',
'filehist-help' => "Aldın usı fayl qanday ko'riniste bolg'anın ko'riw ushin ku'n-ay/waqıt degendi basın'.",
'filehist-deleteall' => "ha'mmesin o'shir",
@@ -1266,10 +1189,7 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'imagelinks' => 'Fayl siltewleri',
'linkstoimage' => "To'mendegi {{PLURAL:$1|bet|$1 bet}} bul faylg'a siltelgen:",
'nolinkstoimage' => "Bul faylg'a hesh bir bet siltelmegen.",
-'sharedupload' => '$1 ortalıq faylı basqa proektlerde paydalanılsa boladı.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => "fayl juwmag'ının' beti",
-'noimage' => "Bunday atlı fayl joq, biraq sizde $1 mu'mkinshiligi bar.",
-'noimage-linktext' => 'usını aploud qılıw',
+'sharedupload' => '$1 ortalıq faylı basqa proektlerde paydalanılsa boladı.',
'uploadnewversion-linktext' => "Bul fayldın' jan'a nusqasın aploud qılıw",
# File reversion
@@ -1342,8 +1262,8 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'brokenredirects' => "Hesh betke bag'ıtlamaytug'ın burıwshılar",
'brokenredirectstext' => "To'mendegi qayta bag'ıtlawshı betler ele jaratılmag'an betlerge silteydi:",
-'brokenredirects-edit' => "(o'zgertiw)",
-'brokenredirects-delete' => "(o'shiriw)",
+'brokenredirects-edit' => "o'zgertiw",
+'brokenredirects-delete' => "o'shiriw",
'withoutinterwiki' => "Hesh tilge siltemeytug'ın betler",
'withoutinterwiki-summary' => "To'mendegi betler basqa tillerdegi nusqalarına siltemeydi.",
@@ -1560,7 +1480,7 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'rollback_short' => 'Biykar etiw',
'rollbacklink' => 'qaytarıw',
'rollbackfailed' => "Biykar etiw sa'tsiz tamamlandı",
-'editcomment' => "O'zgertiwdin' bolg'an kommentariyi: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "O'zgertiwdin' bolg'an kommentariyi: \"''\$1''\".",
# Protect
'protectlogpage' => "Qorg'aw jurnalı",
@@ -1572,7 +1492,6 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'protectexpiry' => "Ku'shin joytıw waqtı:",
'protect_expiry_invalid' => "Nadurıs ku'shin joytıw waqtı.",
'protect_expiry_old' => "Kushin joytıw waqtı o'tip ketken.",
-'protect-unchain' => "Ko'shiriw ruxsatın beriw",
'protect-text' => "'''<nowiki>$1</nowiki>''' betinin' qorg'aw da'rejesin ko're yamasa o'zgerte alasız.",
'protect-locked-access' => "Akkauntın'ızdın' bettın' qorg'aw da'rejesin o'zgertiwge ruxsatı joq.
'''$1''' betinin' ha'zirgi sazlawları:",
@@ -1591,7 +1510,7 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'protect-otherreason' => 'Basqa/qosımsha sebep:',
'protect-otherreason-op' => 'basqa/qosımsha sebep',
'protect-edit-reasonlist' => "Qorg'aw sebeplerin o'zgertiw",
-'protect-expiry-options' => "1 saat:1 hour,1 ku'n:1 day,1 ha'pte:1 week,2 ha'pte:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 jıl:1 year,ma'ngi:infinite", # display1:time1,display2:time2,...
+'protect-expiry-options' => "1 saat:1 hour,1 ku'n:1 day,1 ha'pte:1 week,2 ha'pte:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 jıl:1 year,ma'ngi:infinite",
'restriction-type' => 'Ruxsatnama:',
'restriction-level' => "Sheklew da'rejesi:",
'minimum-size' => "En' az o'lshemi",
@@ -1644,6 +1563,7 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'sp-contributions-newbies' => "Tek taza akkauntlar u'leslerin ko'rset",
'sp-contributions-newbies-sub' => 'Taza akkauntlar ushın',
'sp-contributions-blocklog' => 'Bloklaw jurnalı',
+'sp-contributions-userrights' => 'Paydalanıwshı huqıqların basqarıw',
'sp-contributions-search' => "U'lesi boyınsha izlew",
'sp-contributions-username' => 'IP Adres yamasa paydalanıwshı atı:',
'sp-contributions-submit' => 'İzle',
@@ -1679,7 +1599,7 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'ipbemailban' => "Paydalanıwshını e-mail jiberiwden qadag'alaw",
'ipbsubmit' => 'Bul paydalanıwshını bloklaw',
'ipbother' => 'Basqa waqıt:',
-'ipboptions' => "2 saat:2 hours,1 ku'n:1 day,3 ku'n:3 days,1 ha'pte:1 week,2 h'apte:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 jil:1 year,sheksiz:infinite", # display1:time1,display2:time2,...
+'ipboptions' => "2 saat:2 hours,1 ku'n:1 day,3 ku'n:3 days,1 ha'pte:1 week,2 h'apte:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 jil:1 year,sheksiz:infinite",
'ipbotheroption' => 'basqa',
'ipbotherreason' => 'Basqa/qosımsha sebep:',
'badipaddress' => 'Jaramsız IP adres',
@@ -1698,7 +1618,7 @@ Basqa bloklawlar ushın [[Special:IPBlockList|IP bloklaw dizimin]] ko'rip shıg'
'ipblocklist-submit' => 'İzle',
'blocklistline' => '$1, $2 waqıtında $3 blokladı ($4)',
'infiniteblock' => 'sheksiz',
-'expiringblock' => "Ku'shin joytıw waqtı: $1",
+'expiringblock' => "Ku'shin joytıw waqtı: $1 $2",
'anononlyblock' => 'tek anon.',
'noautoblockblock' => "avtoqulplaw o'shirilgen",
'createaccountblock' => "Akkaunt jaratıw qadag'alang'an",
@@ -1758,7 +1678,7 @@ Bul jag'daylarda eger qa'lesen'iz betti qoldan ko'shiriwin'iz yamasa qosıwın'i
'move-watch' => 'Bul betti baqlaw',
'movepagebtn' => "Betti ko'shir",
'pagemovedsub' => "Tabıslı ko'shirildi",
-'movepage-moved' => "'''\"\$1\" beti \"\$2\" betine ko'shirildi'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" beti \"\$2\" betine ko'shirildi'''",
'articleexists' => "Bunday atamalı bet bar yamasa natuwrı atama sayladın'ız.
Basqa atama saylan'",
'talkexists' => "'''Bettin' o'zi a'wmetli ko'shirildi, biraq sa'wbet beti ko'shirilmedi sebebi jan'a atamanın' sa'wbet beti bar eken. Olardı o'zin'iz qoldan qosın'.'''",
@@ -1781,14 +1701,12 @@ Basqa atama saylan'",
'export-addcat' => 'Qos',
# Namespace 8 related
-'allmessages' => 'Sistema xabarları',
-'allmessagesname' => 'Atama',
-'allmessagesdefault' => 'Defolt tekst',
-'allmessagescurrent' => "Ha'zirgi tekst",
-'allmessagestext' => "Bul {{ns:mediawiki}} isimler ko'pligindegi bar bolg'an sistema xabarları dizimi.
+'allmessages' => 'Sistema xabarları',
+'allmessagesname' => 'Atama',
+'allmessagesdefault' => 'Defolt tekst',
+'allmessagescurrent' => "Ha'zirgi tekst",
+'allmessagestext' => "Bul {{ns:mediawiki}} isimler ko'pligindegi bar bolg'an sistema xabarları dizimi.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.",
-'allmessagesfilter' => 'Xabar atamasın filtrlew:',
-'allmessagesmodified' => "Tek o'zgertilgenlerdi ko'rset",
# Thumbnails
'thumbnail-more' => "U'lkeytiw",
@@ -1838,6 +1756,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Usı tekst ushın betlerdi izlew',
'tooltip-p-logo' => 'Bas bet',
'tooltip-n-mainpage' => "Bas betke o'tiw",
+'tooltip-n-mainpage-description' => "Bas betke o'tiw",
'tooltip-n-portal' => "Proyekt haqqında, nelerdi islewin'izge boladi, qayaqtan tabıwın'ızg'a boladi",
'tooltip-n-currentevents' => "Ha'zirgi ha'diyseler haqqında mag'lıwmat tabıw",
'tooltip-n-recentchanges' => "Wikidegi aqırg'ı o'zgerislerdin' dizimi.",
@@ -1876,7 +1795,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => "{{SITENAME}} saytının' anonim {{PLURAL:$1|paydalanıwshısı|paydalanıwshıları}}",
'siteuser' => '{{SITENAME}} paydalanıwshısı $1',
-'lastmodifiedatby' => "Bul bettin' aqırg'ı ma'rte $3 o'zgertken waqtı: $2, $1.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Bul bettin' aqırg'ı ma'rte $3 o'zgertken waqtı: $2, $1.",
'others' => 'basqalar',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|paydalanıwshı|paydalanıwshıları}} $1',
'creditspage' => 'Bet avtorları',
@@ -1887,6 +1806,12 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'numtalkedits' => "O'zgerisler sanı (diskussiya beti): $1",
'numwatchers' => 'Baqlawshılar sanı: $1',
+# Math errors
+'math_unknown_error' => "belgisiz qa'telik",
+'math_unknown_function' => 'belgisiz funktsiya',
+'math_lexing_error' => "leksikalıq qa'telik",
+'math_syntax_error' => "sintaksikalıq qa'telik",
+
# Patrol log
'patrol-log-auto' => '(avtomatlasqan)',
@@ -1898,9 +1823,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'previousdiff' => "← Aldıng'ı parq",
'nextdiff' => 'Keyingi parq →',
-# Visual comparison
-'visual-comparison' => "Ko'risli salıstırması",
-
# Media information
'thumbsize' => "Miniatyuranın' ha'jmi:",
'widthheight' => '$1 × $2',
@@ -1944,7 +1866,7 @@ Eger fayl jaratılg'anınan keyin o'zgertilgen bolsa, geybir parametrleri o'zger
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Yeni:',
@@ -2051,7 +1973,7 @@ Bul tastıyıqlaw kodının' pitetug'ın waqtı: $4.",
'watchlisttools-raw' => '"Shiyki" baqlaw dizimin o\'zgertiw',
# Special:Version
-'version' => "MediaWikidin' nusqası", # Not used as normal message but as header for the special page itself
+'version' => "MediaWikidin' nusqası",
# Special:FilePath
'filepath' => 'Fayl jolı',
diff --git a/languages/messages/MessagesKab.php b/languages/messages/MessagesKab.php
index bae9398a..ed2bc4ba 100644
--- a/languages/messages/MessagesKab.php
+++ b/languages/messages/MessagesKab.php
@@ -17,11 +17,9 @@
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Uslig',
- NS_MAIN => '',
NS_TALK => 'Mmeslay',
NS_USER => 'Amseqdac',
NS_USER_TALK => 'Amyannan_umsqedac',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Amyannan_n_$1',
NS_FILE => 'Tugna',
NS_FILE_TALK => 'Amyannan_n_tugna',
@@ -32,7 +30,7 @@ $namespaceNames = array(
NS_HELP => 'Tallat',
NS_HELP_TALK => 'Amyannan_n_tallat',
NS_CATEGORY => 'Taggayt',
- NS_CATEGORY_TALK => 'Amyannan_n_taggayt'
+ NS_CATEGORY_TALK => 'Amyannan_n_taggayt',
);
$namespaceAliases = array(
@@ -145,10 +143,18 @@ $messages = array(
'category-media-header' => 'Media deg taggayt "$1"',
'category-empty' => "''Taggayt-agi d tilemt.''",
-'about' => 'Awal ɣef...',
-'article' => 'Ayen yella deg usebter',
-'newwindow' => '(teldi deg ttaq amaynut)',
-'cancel' => 'Eǧǧ-it am yella',
+'about' => 'Awal ɣef...',
+'article' => 'Ayen yella deg usebter',
+'newwindow' => '(teldi deg ttaq amaynut)',
+'cancel' => 'Eǧǧ-it am yella',
+'moredotdotdot' => 'Ugar...',
+'mypage' => 'Asebter inu',
+'mytalk' => 'Amyannan inu',
+'anontalk' => 'Amyannan n IP-yagi',
+'navigation' => 'Ẓer isebtar',
+'and' => '&#32;u',
+
+# Cologne Blue skin
'qbfind' => 'Af',
'qbbrowse' => 'Ẓer isebtar',
'qbedit' => 'Beddel',
@@ -156,12 +162,8 @@ $messages = array(
'qbpageinfo' => 'Asatal',
'qbmyoptions' => 'isebtar inu',
'qbspecialpages' => 'isebtar usligen',
-'moredotdotdot' => 'Ugar...',
-'mypage' => 'Asebter inu',
-'mytalk' => 'Amyannan inu',
-'anontalk' => 'Amyannan n IP-yagi',
-'navigation' => 'Ẓer isebtar',
-'and' => '&#32;u',
+'faq' => 'Isteqsiyen',
+'faqpage' => 'Project:Isteqsiyen',
'errorpagetitle' => 'Agul',
'returnto' => 'Uɣal ar $1.',
@@ -209,7 +211,7 @@ $messages = array(
'otherlanguages' => 'S tutlayin tiyaḍ',
'redirectedfrom' => '(Yettusmimeḍ seg $1)',
'redirectpagesub' => 'Asebter usemmimeḍ',
-'lastmodifiedat' => 'Tikkelt taneggarut i yettubeddel asebter-agi $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Tikkelt taneggarut i yettubeddel asebter-agi $2, $1.',
'viewcount' => 'Asebter-agi yettwakcem {{PLURAL:$1|yiwet tikelt|$1 tikwal}}.',
'protectedpage' => 'Asebter yettwaḥerzen',
'jumpto' => 'Neggez ar:',
@@ -220,15 +222,12 @@ $messages = array(
'aboutsite' => 'Awal ɣef {{SITENAME}}',
'aboutpage' => 'Project:Awal ɣef...',
'copyright' => 'Tzemreḍ ad twaliḍ ayen yella deg $1.',
-'copyrightpagename' => 'Copyright n {{SITENAME}}',
'currentevents' => 'Isallen',
'currentevents-url' => 'Project:Isallen',
'disclaimers' => 'Iɣtalen',
'disclaimerpage' => 'Project:Iɣtalen',
'edithelp' => 'Tallat deg ubeddel',
'edithelppage' => 'Help:Abeddel',
-'faq' => 'Isteqsiyen',
-'faqpage' => 'Project:Isteqsiyen',
'helppage' => 'Help:Agbur',
'mainpage' => 'Asebter amenzawi',
'mainpage-description' => 'Asebter amenzawi',
@@ -293,10 +292,6 @@ Query n database taneggarut hatt:
"$1"
seg tawuri "$2".
MySQL yerra-d agul "$3: $4"',
-'noconnect' => 'Suref-aɣ! Wiki-yagi tesɛa igna, ur tezmir ara ad tmeslay akk d database. <br />
-$1',
-'nodb' => 'Ur yezmir ara ad yextar database $1',
-'cachederror' => 'Wagi d alsaru n lkac n usebter, waqila ur yesɛi ara akk ibeddlen imaynuten.',
'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
'readonly' => 'Database d tamsekkert',
'enterlockreason' => 'Ini ayɣer tsekkreḍ database, ini daɣen melmi ara ad ifukk asekker',
@@ -331,7 +326,6 @@ Query: $2',
'cascadeprotected' => 'Asebter-agi yettwaḥrez seg ubeddil, axaṭer yettusekcem deg isebtar i ttwaḥerzen ula d nutni (acercur), ahaten:',
# Login and logout pages
-'logouttitle' => 'Tuffɣa',
'logouttext' => "'''Tura teffɣeḍ.'''
Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, neɣ tzemreḍ ad tkecmeḍ daɣen s yisem n wemseqdac inek (neɣ nniḍen).
@@ -339,7 +333,6 @@ Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi tem
'welcomecreation' => '== Anṣuf yis-k, $1! ==
Isem n wemseqdac inek yettwaxleq. Ur tettuḍ ara ad tbeddleḍ Isemyifiyen n {{SITENAME}} inek.',
-'loginpagetitle' => 'Takcemt',
'yourname' => 'Isem n wemseqdac',
'yourpassword' => 'Awal n tbaḍnit',
'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
@@ -361,17 +354,7 @@ Isem n wemseqdac inek yettwaxleq. Ur tettuḍ ara ad tbeddleḍ Isemyifiyen n {{
'createaccountmail' => 's e-mail',
'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
-'youremail' => 'E-mail *:',
-'username' => 'Isem n wemseqdac:',
-'uid' => 'Amseqdac ID:',
-'yourrealname' => 'Isem n ṣṣeḥ *:',
-'yourlanguage' => 'Tutlayt:',
-'yourvariant' => 'Ameskil:',
-'yournick' => 'Isem wis sin (mačči d amenṣib):',
-'badsig' => 'Azmul mačči d ṣaḥiḥ; Ssenqed tags n HTML.',
-'prefs-help-realname' => '* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.',
'loginerror' => 'Agul n ukcam',
-'prefs-help-email' => '* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.',
'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
'noname' => 'Ur tefkiḍ ara isem n wemseqdac ṣaḥiḥ.',
@@ -412,17 +395,16 @@ iwakken ad tbeyyneḍ belli tansa n email inek.',
'loginlanguagelabel' => 'Tutlayt: $1',
# Password reset dialog
-'resetpass' => 'Iɛawed 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_text' => '<!-- Rnu aḍris dagi -->',
-'resetpass_header' => 'Ɛiwed awal n tbaḍnit',
-'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',
-'resetpass_success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
-'resetpass_bad_temporary' => 'Ungal mačči d ṣaḥiḥ. Ahat tbeddleḍ awal n tbaḍnit inek neɣ tetseqsiḍ ɣef wawal n tbaḍnit amaynut.',
-'resetpass_forbidden' => 'Ur tezmireḍ ara ad tbeddleḍ awal n tbaḍnit deg wiki-yagi',
+'resetpass' => 'Iɛawed 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_text' => '<!-- Rnu aḍris dagi -->',
+'resetpass_header' => 'Ɛiwed awal n tbaḍnit',
+'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',
+'resetpass_success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
+'resetpass_forbidden' => 'Ur tezmireḍ ara ad tbeddleḍ awal n tbaḍnit deg wiki-yagi',
# Edit page toolbar
'bold_sample' => 'Aḍris aberbuz',
@@ -473,7 +455,6 @@ Lukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wems
'blockededitsource' => "Aḍris n '''ubeddel inek''' i '''$1''' hat deg ukessar:",
'whitelistedittitle' => 'Yessefk ad tkecmeḍ iwakken ad tbeddleḍ',
'whitelistedittext' => 'Yessefk ad $1 iwakken ad tbeddleḍ isebtar.',
-'confirmedittitle' => 'Yessef ad tsentmeḍ e-mail inek iwakken ad tbeddleḍ',
'confirmedittext' => 'Yessefk ad tsentmeḍ tansa e-mail inek uqbel abeddel. Xtar tansa e-mail di [[Special:Preferences|isemyifiyen n wemseqdac]].',
'nosuchsectiontitle' => 'Amur ulac-it',
'nosuchsectiontext' => 'Tɛerḍeḍ ad tbeddleḍ amur ulac-it.',
@@ -490,7 +471,8 @@ Ma tɣelṭeḍ, wekki kan ɣef tqeffalt "Back/Précédent" n browser/explorateu
'anontalkpagetext' => "----''Wagi d asebter n umyennan n wemseqdac adrig. Ihi, yessef ad as nefk ID, nesseqdac tansa IP ines akken a t-neɛqel. Tansa IP nni ahat tettuseqdac sɣur aṭṭas n yimdanen. Lukan ula d kečč aqla-k amseqdac adrig u ur tebɣiḍ ara ad tettwabcreḍ izen am wigini, ihi [[Special:UserLogin|xleq isem n wemseqdac neɣ kcem]].''",
'noarticletext' => 'Ulac aḍris deg usebter-agi, tzemreḍ ad [[Special:Search/{{PAGENAME}}|tnadiḍ ɣef wezwel n usebter-agi]] deg isebtar wiyaḍ neɣ [{{fullurl:{{FULLPAGENAME}}|action=edit}} tettbeddileḍ asebter-agi].',
'clearyourcache' => "'''Tamawt:''' Beɛd asmekti, ahat yessefk ad temḥuḍ lkac n browser/explorateur inek akken teẓriḍ ibeddlen. '''Mozilla / Firefox / Safari:''' qqim twekkiḍ ''Shift'' u wekki ɣef ''Reload/Recharger'', neɣ wekki ɣef ''Ctrl-Shift-R'' (''Cmd-Shift-R'' deg Apple Mac); '''IE:''' qqim twekkiḍ ɣef ''Ctrl'' u wekki ɣef ''Refresh/Actualiser'', neɣ wekki ɣef ''Ctrl-F5''; '''Konqueror:''': wekki kan ɣef taqeffalt ''Reload'', neɣ wekki ɣef ''F5''; '''Opera''' yessefk ad tesseqdceḍ ''Tools→Preferences/Outils→Préférences'' akken ad temḥud akk lkac.",
-'usercssjsyoucanpreview' => "'''Tixidest:''' Sseqdec taqeffalt 'Ssken pre-timeẓriwt' iwakken ad tɛerḍeḍ CSS/JS amynut inek uqbel ad tesmektiḍ.",
+'usercssyoucanpreview' => "'''Tixidest:''' Sseqdec taqeffalt 'Ssken pre-timeẓriwt' iwakken ad tɛerḍeḍ CSS amynut inek uqbel ad tesmektiḍ.",
+'userjsyoucanpreview' => "'''Tixidest:''' Sseqdec taqeffalt 'Ssken pre-timeẓriwt' iwakken ad tɛerḍeḍ JS amynut inek uqbel ad tesmektiḍ.",
'usercsspreview' => "'''Smekti belli aql-ak twaliḍ CSS inek kan, mazal ur yettusmekti ara!'''",
'userjspreview' => "'''Smekti belli aql-ak tɛerḍeḍ JavaScript inek kan, mazal ur yettusmekti ara!'''",
'userinvalidcssjstitle' => '\'\'\'Aɣtal:\'\'\' Aglim "$1" ulac-it. Ur tettuḍ ara belli isebtar ".css" d ".js" i txedmeḍ sseqdacen azwel i yesɛan isekkilen imecṭuḥen, s umedya: {{ns:user}}:Foo/monobook.css akk d {{ns:user}}:Foo/Monobook.css.',
@@ -558,7 +540,7 @@ Tzemreḍ a d-uɣaleḍ u tbeddleḍ asebter i yellan, neɣ ad [[Special:UserLog
'nohistory' => 'Ulac amezruy n yibeddlen i usebter-agi.',
'currentrev' => 'Tasiwelt n tura',
'revisionasof' => 'Tasiwelt n wass $1',
-'revision-info' => 'Tasiwelt n wass $1 sɣur $2', # Additionally available: $3: revision id
+'revision-info' => 'Tasiwelt n wass $1 sɣur $2',
'previousrevision' => '←Tasiwelt taqdimt',
'nextrevision' => 'Tasiwelt tamaynut→',
'currentrevisionlink' => 'Tasiwelt n tura',
@@ -570,7 +552,6 @@ Tzemreḍ a d-uɣaleḍ u tbeddleḍ asebter i yellan, neɣ ad [[Special:UserLog
'histlegend' => 'Axtiri n umgerrad: rcem tankulin akken ad teẓreḍ imgerraden ger tisiwal u wekki ɣef enter/entrée neɣ ɣef taqeffalt deg ukessar.<br />
Tabadut: (tura) = amgirred akk d tasiwelt n tura,
(amgirred) = amgirred akk d tasiwelt ssabeq, M = abeddel afessas.',
-'deletedrev' => '[yettumḥa]',
'histfirst' => 'Tikkin timezwura',
'histlast' => 'Tikkin tineggura',
'historysize' => '($1 bytes/octets)',
@@ -579,7 +560,7 @@ Tabadut: (tura) = amgirred akk d tasiwelt n tura,
# Revision feed
'history-feed-title' => 'Amezruy n tsiwelt',
'history-feed-description' => 'Amezruy n tsiwelt n usebter-agi deg wiki',
-'history-feed-item-nocomment' => '$1 deg $2', # user at time
+'history-feed-item-nocomment' => '$1 deg $2',
'history-feed-empty' => 'Asebter i tebɣiḍ ulac-it.
Ahat yettumḥa neɣ yettbeddel isem-is.
Ɛreḍ [[Special:Search|ad tnadiḍ deg wiki]] ɣef isebtar imaynuten.',
@@ -589,10 +570,10 @@ Ahat yettumḥa neɣ yettbeddel isem-is.
'rev-deleted-user' => '(isem n wemseqdac yettwakes)',
'rev-deleted-event' => '(asekcem yettwakkes)',
'rev-deleted-text-permission' => 'Tasiwelt-agi n tettwakkes seg weɣbar azayez.
-Waqila yella kter n talɣut deg [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
+Waqila yella kter n talɣut deg [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
'rev-deleted-text-view' => 'Tasiwelt-agi n tettwakkes seg weɣbar azayez.
Kečč d anedbal, tzemreḍ a t-twaliḍ
-Waqila yella kter n talɣut [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
+Waqila yella kter n talɣut [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} aɣmis n umḥay].',
'rev-delundel' => 'ssken/ffer',
'revisiondelete' => 'Mḥu/kkes amḥay tisiwal',
'revdelete-nooldid-title' => 'Ulac nnican i tasiwelt',
@@ -605,12 +586,12 @@ meɛna imuren seg-sen zemren imdanen a ten-ẓren.'''
Inedbalen wiyaḍ deg wiki-yagi zemren ad ẓren imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.",
'revdelete-legend' => 'Eg icekkilen',
'revdelete-hide-text' => 'Ffer aḍris n tsiwelt',
+'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
'revdelete-hide-name' => 'Ffer tigawt d nnican',
'revdelete-hide-comment' => 'Ffer abeddel n uwennit',
'revdelete-hide-user' => 'Ffer Isem n wemseqdac/IP n umeskar',
'revdelete-hide-restricted' => 'Eg icekkilen i inedbalen d yimdanen wiyaḍ',
'revdelete-suppress' => 'Kkes talɣut seg inedbalen d yimdanen wiyaḍ',
-'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
'revdelete-unsuppress' => 'Kkes icekkilen ɣef tisiwal i yuɣalen-d',
'revdelete-log' => 'Ayɣer',
'revdelete-submit' => 'Eg-it i tasiwelt tettwafren',
@@ -631,14 +612,13 @@ Inedbalen wiyaḍ deg wiki-yagi zemren ad ẓren imuren i yettwafren u zemren a
'searchresulttext' => 'Akken ad tessneḍ amek ara tnadiḍ deg {{SITENAME}}, ẓer [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Tnadiḍ ɣef '''[[:$1]]'''",
'searchsubtitleinvalid' => "Tnadiḍ ɣef '''$1'''",
-'noexactmatch' => "'''Asebter s yisem \"\$1\" ulac-it.''' Tzemreḍ ad [[:\$1|txelqeḍ asebter-agi]].",
'titlematches' => 'Ayen yecban azwel n umegrad',
'notitlematches' => 'Ulac ayen yecban azwel n umegrad',
'textmatches' => 'Ayen yecban azwel n usebter',
'notextmatches' => 'ulac ayen yecban azwel n usebter',
-'prevn' => '$1 ssabeq',
-'nextn' => '$1 ameḍfir',
-'viewprevnext' => 'Ẓer ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} ssabeq',
+'nextn' => '{{PLURAL:$1|$1}} ameḍfir',
+'viewprevnext' => 'Ẓer ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Agbur',
'showingresults' => "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg #'''$2'''.",
'showingresultsnum' => "Tamuli n {{PLURAL:$3|'''Yiwen''' wegmud|'''$3''' n yigmad}} seg #'''$2'''.",
@@ -649,64 +629,64 @@ i yesɛan akk awalen i banen-d).",
'powersearch' => 'Nadi',
'searchdisabled' => 'Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.',
-# Preferences page
-'preferences' => 'Isemyifiyen',
-'mypreferences' => 'Isemyifiyen inu',
-'prefsnologin' => 'Ur tekcimeḍ ara',
-'prefsnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeḍ]] iwakken textareḍ isemyifiyen inek.',
-'prefsreset' => 'Iɛawed ad yexdem isemyifiyen inek.',
+# Quickbar
'qbsettings' => 'Tanuga taǧiḥbuṭ',
'qbsettings-none' => 'Ulaḥedd',
'qbsettings-fixedleft' => 'Aẓelmaḍ',
'qbsettings-fixedright' => 'Ayeffus',
'qbsettings-floatingleft' => 'Tufeg aẓelmaḍ',
'qbsettings-floatingright' => 'Tufeg ayeffus',
-'changepassword' => 'Beddel awal n tbaḍnit',
-'skin' => 'Aglim',
-'skin-preview' => 'Pre-timeẓriwt',
-'math' => 'Tusnakt',
-'dateformat' => 'talɣa n uzemz',
-'datedefault' => 'Ur sɛiɣ ara asemyifi',
-'datetime' => 'Azemz d ukud',
-'math_failure' => 'Agul n tusnakt',
-'math_unknown_error' => 'Agul mačči d aḍahri',
-'math_unknown_function' => 'Tawuri mačči d taḍahrit',
-'math_lexing_error' => 'Agul n tmawalt',
-'math_syntax_error' => 'Agul n tseddast',
-'math_image_error' => 'Abeddil ɣer PNG yexser; ssenqed installation n latex, dvips, gs, umbeɛd eg abeddel',
-'math_bad_tmpdir' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n temp directory/dossier',
-'math_bad_output' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n tuffɣa directory/dossier',
-'math_notexvc' => "''texvc executable'' / ''executable texvc'' ulac-it; ẓer math/README akken a textareḍ isemyifiyen.",
-'prefs-personal' => 'Profile n wemseqdac',
-'prefs-rc' => 'Ibeddlen imaynuten',
-'prefs-watchlist' => 'Umuɣ n uɛessi',
-'prefs-watchlist-days' => 'Geddac n wussan yessefk ad banen deg wumuɣ n uɛessi:',
-'prefs-watchlist-edits' => 'Geddac n yibeddlen yessefk ad banen deg wumuɣ n uɛessi ameqqran:',
-'prefs-misc' => 'Isemyifiyen wiyaḍ',
-'saveprefs' => 'Smekti',
-'resetprefs' => 'Reset/réinitialiser isemyifiyen',
-'textboxsize' => 'Abedddil',
-'rows' => 'Ijerriḍen:',
-'columns' => 'Tigejda:',
-'searchresultshead' => 'Anadi',
-'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
-'contextlines' => 'Geddac n ijerriḍen i mkul tiririt:',
-'contextchars' => 'Geddac n isekkilen n usatal i mkul ajjeriḍ:',
-'recentchangescount' => 'Geddac n izwal deg ibeddilen imaynuten:',
-'savedprefs' => 'Isemyifiyen inek yettusmektan.',
-'timezonelegend' => 'Iẓḍi n ukud',
-'timezonetext' => '¹Amgirred ger akud inek d akud n server (UTC) [s swayeɛ].',
-'localtime' => 'Akud inek',
-'timezoneoffset' => 'Amgirred n ukud',
-'servertime' => 'Akud n server',
-'guesstimezone' => 'Sseqdec azal n browser/explorateur',
-'allowemail' => 'Eǧǧ imseqdacen wiyaḍ a k-aznen email',
-'defaultns' => 'Nadi deg yismawen n taɣult s umeslugen:',
-'default' => 'ameslugen',
-'files' => 'Ifayluwen',
+
+# Preferences page
+'preferences' => 'Isemyifiyen',
+'mypreferences' => 'Isemyifiyen inu',
+'prefsnologin' => 'Ur tekcimeḍ ara',
+'prefsnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeḍ]] iwakken textareḍ isemyifiyen inek.',
+'changepassword' => 'Beddel awal n tbaḍnit',
+'prefs-skin' => 'Aglim',
+'skin-preview' => 'Pre-timeẓriwt',
+'prefs-math' => 'Tusnakt',
+'datedefault' => 'Ur sɛiɣ ara asemyifi',
+'prefs-datetime' => 'Azemz d ukud',
+'prefs-personal' => 'Profile n wemseqdac',
+'prefs-rc' => 'Ibeddlen imaynuten',
+'prefs-watchlist' => 'Umuɣ n uɛessi',
+'prefs-watchlist-days' => 'Geddac n wussan yessefk ad banen deg wumuɣ n uɛessi:',
+'prefs-watchlist-edits' => 'Geddac n yibeddlen yessefk ad banen deg wumuɣ n uɛessi ameqqran:',
+'prefs-misc' => 'Isemyifiyen wiyaḍ',
+'saveprefs' => 'Smekti',
+'resetprefs' => 'Reset/réinitialiser isemyifiyen',
+'prefs-editing' => 'Abedddil',
+'rows' => 'Ijerriḍen:',
+'columns' => 'Tigejda:',
+'searchresultshead' => 'Anadi',
+'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
+'contextlines' => 'Geddac n ijerriḍen i mkul tiririt:',
+'contextchars' => 'Geddac n isekkilen n usatal i mkul ajjeriḍ:',
+'recentchangescount' => 'Geddac n izwal deg ibeddilen imaynuten:',
+'savedprefs' => 'Isemyifiyen inek yettusmektan.',
+'timezonelegend' => 'Iẓḍi n ukud',
+'localtime' => 'Akud inek',
+'timezoneoffset' => 'Amgirred n ukud',
+'servertime' => 'Akud n server',
+'guesstimezone' => 'Sseqdec azal n browser/explorateur',
+'allowemail' => 'Eǧǧ imseqdacen wiyaḍ a k-aznen email',
+'defaultns' => 'Nadi deg yismawen n taɣult s umeslugen:',
+'default' => 'ameslugen',
+'prefs-files' => 'Ifayluwen',
+'youremail' => 'E-mail *:',
+'username' => 'Isem n wemseqdac:',
+'uid' => 'Amseqdac ID:',
+'yourrealname' => 'Isem n ṣṣeḥ *:',
+'yourlanguage' => 'Tutlayt:',
+'yourvariant' => 'Ameskil:',
+'yournick' => 'Isem wis sin (mačči d amenṣib):',
+'badsig' => 'Azmul mačči d ṣaḥiḥ; Ssenqed tags n HTML.',
+'prefs-help-realname' => '* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.',
+'prefs-help-email' => '* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.',
# User rights
-'userrights' => 'Laɛej iserfan n wemseqdac', # Not used as normal message but as header for the special page itself
+'userrights' => 'Laɛej iserfan n wemseqdac',
'userrights-lookup-user' => 'Laɛej iderman n yimseqdacen',
'userrights-user-editname' => 'Ssekcem isem n wemseqdac:',
'editusergroup' => 'Beddel iderman n yimseqdacen',
@@ -755,12 +735,13 @@ i yesɛan akk awalen i banen-d).",
# Recent changes linked
'recentchangeslinked' => 'Ibeddlen imaynuten n isebtar myezdin',
+'recentchangeslinked-feed' => 'Ibeddlen imaynuten n isebtar myezdin',
+'recentchangeslinked-toolbox' => 'Ibeddlen imaynuten n isebtar myezdin',
'recentchangeslinked-noresult' => 'Ulac abeddel deg isebtar myezdin deg tawala i textareḍ.',
# Upload
'upload' => 'Azen afaylu',
'uploadbtn' => 'Azen afaylu',
-'reupload' => 'Ɛiwed azen',
'reuploaddesc' => 'Uɣal-d ar talɣa n tuznin.',
'uploadnologin' => 'Ur tekcimeḍ ara',
'uploadnologintext' => 'Yessefk [[Special:UserLogin|ad tkecmeḍ]]
@@ -797,7 +778,6 @@ Akken ad tessekcmeḍ tugna deg usebter, seqdec azay am wagi
* Isem n ufaylu i tazneḍ: '''<tt>[[:\$1]]</tt>'''
* Isem n ufaylu i yewǧed: '''<tt>[[:\$2]]</tt>'''
Amgirred i yella kan deg isekkilen imecṭuḥen/imeqqranen deg taseggiwit (am \".jpg\"/\".jPg\"). G leɛnayek ssenqed-it.",
-'fileexists-thumb' => "<center>'''Tugna i tewǧed'''</center>",
'fileexists-thumbnail-yes' => "Iban-d belli tugna-nni d tugna tamecṭuht n tugna nniḍen ''(thumbnail)''. [[$1|thumb]]
G leɛnayek ssenqed tugna-agi '''<tt>[[:$1]]</tt>'''.
Ma llant kif-kif ur tt-taznepd ara.",
@@ -812,7 +792,6 @@ Ma tesɛiḍ tugna-nni s resolution tameqqrant, azen-it, ma ulac beddel isem-is.
'uploaddisabled' => 'Suref-aɣ, azen n ufayluwen yettwakkes',
'uploaddisabledtext' => 'Azen n ufayluwen yettwakkes deg wiki-yagi',
'uploadscripted' => 'Afaylu-yagi yesɛa angal n HTML/script i yexdem agula deg browser/explorateur.',
-'uploadcorrupt' => 'Afaylu-yagi yexser neɣ yesɛa taseggiwit (am ".jpg") mačči ṣaḥiḥ. G leɛnayek ssenqed-it.',
'uploadvirus' => 'Afaylu-nni yesɛa anfafad asenselkim (virus)! Ẓer kter: $1',
'sourcefilename' => 'And yella afyalu',
'destfilename' => 'Anda iruḥ afaylu',
@@ -833,6 +812,7 @@ Ma tesɛiḍ tugna-nni s resolution tameqqrant, azen-it, ma ulac beddel isem-is.
'upload-curl-error28-text' => 'Adeg n internet-agi iɛetṭel aṭas. G leɛnayek ssenqed adeg-nni, ggun cwiṭ umbeɛd ɛreḍ tikelt nniḍen.',
'license' => 'Turagt',
+'license-header' => 'Turagt',
'nolicense' => 'Ur textareḍ acemma',
'upload_source_url' => ' (URL saḥiḥ)',
'upload_source_file' => ' (afaylu deg uselkim inek)',
@@ -848,16 +828,13 @@ Ma tesɛiḍ tugna-nni s resolution tameqqrant, azen-it, ma ulac beddel isem-is.
'listfiles_description' => 'Aglam',
# File description page
+'file-anchor-link' => 'Afaylu',
'filehist-current' => 'Lux a',
'filehist-user' => 'Amseqdac',
'imagelinks' => 'Izdayen',
'linkstoimage' => 'isebtar-agi sɛan azday ar afaylu-agi',
'nolinkstoimage' => 'Ulaḥedd seg isebtar sɛan azday ar afaylu-agi.',
-'sharedupload' => 'Afaylu-yagi yettuseqdac sɣur wiki tiyaḍ.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ẓer $1 iwakken ad tessneḍ kter.',
-'shareduploadwiki-linktext' => 'Asebter n weglam n ufaylu',
-'noimage' => 'Afaylu s yisem-agi ulac-it, tzemreḍ ad $1.',
-'noimage-linktext' => 't-tazneḍ',
+'sharedupload' => 'Afaylu-yagi yettuseqdac sɣur wiki tiyaḍ.',
'uploadnewversion-linktext' => 'tazneḍ tasiwelt tamaynut n ufaylu-yagi',
# MIME search
@@ -898,8 +875,8 @@ Ma tesɛiḍ tugna-nni s resolution tameqqrant, azen-it, ma ulac beddel isem-is.
'brokenredirects' => 'Isemmimḍen imerẓa',
'brokenredirectstext' => 'Isemmimḍen-agi sɛan izdayen ar isebtar ulac-iten:',
-'brokenredirects-edit' => '(beddel)',
-'brokenredirects-delete' => '(mḥu)',
+'brokenredirects-edit' => 'beddel',
+'brokenredirects-delete' => 'mḥu',
'withoutinterwiki' => 'isebtar mebla izdayen ar isebtar n wikipedia s tutlayin tiyaḍ',
'withoutinterwiki-summary' => 'isebtar-agi ur sɛan ara izdayen ar isebtar n wikipedia s tutlayin tiyaḍ:',
@@ -1075,7 +1052,7 @@ Ur yelli ara email n talɣut asmi llan ibeddlen deg usebter ala lukan teẓreḍ
--
Akken ad tbeddleḍ n wumuɣ n uɛessi inek settings, ruḥ ɣer
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Tadhelt:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1100,8 +1077,8 @@ Tadhelt:
# Rollback
'cantrollback' => 'Ur yezmir ara ad yessuɣal; yella yiwen kan amseqdac iwumi ibeddel/yexleq asebter-agi.',
-'editcomment' => "Agzul n ubeddel yella: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Yessuɣal ibeddlen n [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]]); yettubeddel ɣer tasiwelt taneggarut n [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Agzul n ubeddel yella: \"''\$1''\".",
+'revertpage' => 'Yessuɣal ibeddlen n [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]]); yettubeddel ɣer tasiwelt taneggarut n [[User:$1|$1]]',
'sessionfailure' => 'Yella ugul akk d takmect inek;
Axdam-agi yebṭel axaṭer waqila yella wemdan nniḍen i yeddem isem n wemseqdac inek.
G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek, umbeɛd wekki ɣef "Actualiser/reload" akk ad tɛerḍeḍ tikelt nniḍen.',
@@ -1141,12 +1118,14 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
'contributions' => 'Tikkin n wemseqdac',
'mycontris' => 'Tikkin inu',
'contribsub2' => 'n $1 ($2)',
-'nocontribs' => 'Ur yufi ara abddel i tebɣiḍ.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ur yufi ara abddel i tebɣiḍ.',
'uctop' => '(taneggarut)',
'sp-contributions-newbies' => 'Ssken tikkin n yimseqdacen imaynuten kan',
'sp-contributions-newbies-sub' => 'I yisem yimseqdacen imaynuten',
'sp-contributions-blocklog' => 'Aɣmis n uɛeṭṭil',
+'sp-contributions-talk' => 'Mmeslay',
+'sp-contributions-userrights' => 'Laɛej iserfan n wemseqdac',
'sp-contributions-search' => 'Nadi i tikkin',
'sp-contributions-username' => 'Tansa IP neɣ isem n wemseqdac:',
'sp-contributions-submit' => 'Nadi',
@@ -1240,8 +1219,6 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
'allmessagestext' => 'Wagi d umuɣ n izen n system i yellan deg yisem n taɣult.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ut yezmir ara ad yettuseqdac axaṭer '''\$wgUseDatabaseMessages''' yettwakkes.",
-'allmessagesfilter' => 'Tastayt n yisem n izen:',
-'allmessagesmodified' => 'Ssken win yettubeddlen kan',
# Thumbnails
'thumbnail-more' => 'Ssemɣer',
@@ -1334,7 +1311,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => 'Amseqdac udrig (Imseqdacen udrigen) n {{SITENAME}}',
'siteuser' => '{{SITENAME}} amseqdac $1',
-'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.',
'othercontribs' => 'Tikkin n wemseqdac-agi.',
'others' => 'wiyaḍ',
'siteusers' => '{{SITENAME}} amseqdac(imseqdacen) $1',
@@ -1364,6 +1341,17 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'mw_math_modern' => 'Mliḥ i browsers/explorateurs imaynuten',
'mw_math_mathml' => 'MathML ma yezmer (experimental)',
+# Math errors
+'math_failure' => 'Agul n tusnakt',
+'math_unknown_error' => 'Agul mačči d aḍahri',
+'math_unknown_function' => 'Tawuri mačči d taḍahrit',
+'math_lexing_error' => 'Agul n tmawalt',
+'math_syntax_error' => 'Agul n tseddast',
+'math_image_error' => 'Abeddil ɣer PNG yexser; ssenqed installation n latex, dvips, gs, umbeɛd eg abeddel',
+'math_bad_tmpdir' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n temp directory/dossier',
+'math_bad_output' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n tuffɣa directory/dossier',
+'math_notexvc' => "''texvc executable'' / ''executable texvc'' ulac-it; ẓer math/README akken a textareḍ isemyifiyen.",
+
# Patrolling
'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
'markaspatrolledtext' => 'Rcem amagrad-agi "yettwassenqden"',
@@ -1410,7 +1398,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'exif-meteringmode-255' => 'Nniḍen',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometr deg ssaɛa',
# External editor support
@@ -1540,7 +1528,7 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
'watchlisttools-raw' => 'Beddel umuɣ n uɛessi (raw)',
# Special:Version
-'version' => 'Tasiwelt', # Not used as normal message but as header for the special page itself
+'version' => 'Tasiwelt',
# Special:SpecialPages
'specialpages' => 'isebtar usligen',
diff --git a/languages/messages/MessagesKg.php b/languages/messages/MessagesKg.php
index 6c0635df..dc6ba8a3 100644
--- a/languages/messages/MessagesKg.php
+++ b/languages/messages/MessagesKg.php
@@ -91,7 +91,6 @@ $messages = array(
# Login and logout pages
'logout' => 'Basika',
'userlogout' => 'Basika',
-'yourlanguage' => 'Ndinga:',
'loginlanguagelabel' => 'Ndinga: $1',
# History pages
@@ -102,13 +101,14 @@ $messages = array(
'lineno' => 'Nzila ya $1:',
# Search results
-'prevn' => 'biyita $1',
-'nextn' => 'bilandi $1',
-'viewprevnext' => 'Mona ($1) ($2) ($3).',
+'prevn' => 'biyita {{PLURAL:$1|$1}}',
+'nextn' => 'bilandi {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Mona ($1 {{int:pipe-separator}} $2) ($3).',
'powersearch' => 'Sosa',
# Preferences page
'mypreferences' => 'Konte ya munu',
+'yourlanguage' => 'Ndinga:',
# Recent changes
'recentchanges' => 'Bampaluka ya mpa',
@@ -128,6 +128,8 @@ $messages = array(
# Contributions
'mycontris' => 'Makabu ya munu',
+'sp-contributions-talk' => 'Disolo',
+
# What links here
'whatlinkshere' => 'Balukaya ke songa awa',
@@ -136,7 +138,7 @@ $messages = array(
'newtitle' => 'Zina ya nkaka:',
'movepagebtn' => 'Nata lukaya',
'pagemovedsub' => 'Kunata me nunga',
-'movepage-moved' => '\'\'\'"$1" me natama na "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" me natama na "$2"\'\'\'',
'articleexists' => 'Lukaya ya nkaka kele na zina yango, to zina yango kele ya mbote ve.
Sola zina ya nkaka.',
'movereason' => 'Samu:',
diff --git a/languages/messages/MessagesKiu.php b/languages/messages/MessagesKiu.php
new file mode 100644
index 00000000..2e988a5b
--- /dev/null
+++ b/languages/messages/MessagesKiu.php
@@ -0,0 +1,1411 @@
+<?php
+/** Kirmanjki (Kırmancki)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Mirzali
+ */
+
+$fallback = 'tr';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Bınê girey de xete bonce:',
+'tog-highlightbroken' => 'Girêunê thalu {a href="" class="new"}nia{/a} (alternative: nia{a
+href="" class="internal"}?{/a}) basne.',
+'tog-justify' => 'Paragrafu ayar ke',
+'tog-hideminor' => 'Vurnaisunê senıku pela vurnaisê peyêni de wedare',
+'tog-hidepatrolled' => 'Vurnaisunê qontrolkerdu pela vurnaisê peyêni de wedare',
+'tog-newpageshidepatrolled' => 'Pelunê qontrolkerdu lista pelunê newu de wedare',
+'tog-extendwatchlist' => 'Lista şêrkerdene serba, teyna tewr peyênu nê, diyaena pêro vurnaisu hira ke',
+'tog-usenewrc' => 'Vurnaisunê peyênunê hirakerdiu bıgurene (JavaScript lazımo)',
+'tog-numberheadings' => 'Sernustu be ho numra cı sane',
+'tog-showtoolbar' => 'Gozagunê hacetunê vurnaişi basne (JavaScript lazımo)',
+'tog-editondblclick' => 'Pê dı rey teqnaene pele sero bıguriye (JavaScript lazımo)',
+'tog-editsection' => 'Vurnaena qısımi ebe girêunê [bıvurne] ra feal ke',
+'tog-editsectiononrightclick' => 'Qısımu teqnaena serrêze be gozaga raste bıvurne (JavaScript lazımo)',
+'tog-showtoc' => 'Tabloê tedeesteu basne (de pelunê be hirê sernustu ra jêdêri de)',
+'tog-rememberpassword' => 'Parola mı bia ho viri',
+'tog-editwidth' => 'Warê nustey hira ke, ke verıniya pela cıdaena nustey tam baso',
+'tog-watchcreations' => 'Pelê ke mı afernê, lista mına şêrkerdişi ke',
+'tog-watchdefault' => 'Pelê ke mı vurnê, lista mına şêrkerdişi ke',
+'tog-watchmoves' => 'Pelê ke mı kırısnê, lista mına şêrkerdişi ke',
+'tog-watchdeletion' => 'Pelê ke mı esterıtê, lista mına şêrkerdişi ke',
+'tog-minordefault' => 'Vurnaisunê ho pêrune ‘vurnaiso qızkek’ nisan bıde',
+'tog-previewontop' => 'Verqayti pela nustene ser de basne',
+'tog-previewonfirst' => 'Vurnaiso verên de verqayti tım basne',
+'tog-nocache' => 'Pelu mia ho viri',
+'tog-enotifwatchlistpages' => 'Pela ke ez şêr kenune eke vurnê mı rê e-mail bırusne',
+'tog-enotifusertalkpages' => 'Pela mına hurênaişi ke vurnê mı rê e-mail bırusne',
+'tog-enotifminoredits' => 'Vurnaisunê qızkeku de ki mı rê e-mail bırusne',
+'tog-enotifrevealaddr' => 'E-mailadresa mı emailunê xeberu de bıasne',
+'tog-shownumberswatching' => 'Amarê karberunê şêrkerdoğu bıasne',
+'tog-oldsig' => 'Verqaytê imza mewcude:',
+'tog-fancysig' => 'İmza rê mamelê wikimeqaley bıke (bê gireo otomatik)',
+'tog-externaleditor' => 'Editorê teberi standart bıgurene (teyna serba ekspertuno, komputerê sıma de ayarê xusuşiy lazımê)',
+'tog-externaldiff' => 'Têversanaene pê programê teberi vıraze (teyna serba ekspertuno, komputerê sıma de ayarê xusuşiy lazımê)',
+'tog-showjumplinks' => 'Girê "so"y feal ke',
+'tog-uselivepreview' => 'Verqayto cınde bıgurene (JavaScript) (hona cerrebnaene dero)',
+'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
+'tog-watchlisthideown' => 'Vurnaisunê mı lista mına şêrkerdişi de wedare',
+'tog-watchlisthidebots' => 'Vurnaisunê boti lista mına şêrkerdişi de wedare',
+'tog-watchlisthideminor' => 'Vurnaisunê qızkeku lista mına şêrkerdişi de wedare',
+'tog-watchlisthideliu' => 'Lista şêrkerdışi ra vurnaisunê karberunê cıkotu wedare',
+'tog-watchlisthideanons' => 'Lista şêrkerdışi ra vurnaisunê karberunê anonimu wedare',
+'tog-watchlisthidepatrolled' => 'Lista şêrkerdışi ra vurnaisunê qontrolkerdu wedare',
+'tog-ccmeonemails' => 'E-mailunê ke ez karberunê binu rê rusnenu, mı rê kopya inu bırusne',
+'tog-diffonly' => 'Qıyasê verziyonu de tek ferqu bıasne, pela butıne nê',
+'tog-showhiddencats' => 'Kategoriunê nımıtu bıasne',
+'tog-norollbackdiff' => 'Peyserardene ra dıme ferqi caverde',
+
+'underline-always' => 'Tım',
+'underline-never' => 'Qet',
+'underline-default' => 'Qerar cıcêraoği dest dero',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Warê vurnaena tipê nustey:',
+'editfont-default' => 'Fereziya cıfeteliyaoği',
+'editfont-monospace' => 'Tipê nustê sabıtcaguretoği',
+'editfont-sansserif' => 'Tipê nustê Sans-serifi',
+'editfont-serif' => 'Tipê nustê Serifi',
+
+# Dates
+'sunday' => 'Bazar',
+'monday' => 'Dıseme',
+'tuesday' => 'Şêseme',
+'wednesday' => 'Çarseme',
+'thursday' => 'Phoncseme',
+'friday' => 'Yene',
+'saturday' => 'Seme',
+'sun' => 'Baz',
+'mon' => 'Dıs',
+'tue' => 'Şês',
+'wed' => 'Çar',
+'thu' => 'Pho',
+'fri' => 'Yen',
+'sat' => 'Sem',
+'january' => 'Çele',
+'february' => 'Gucige',
+'march' => 'Mart',
+'april' => 'Nisane',
+'may_long' => 'Gulane',
+'june' => 'Hezirane',
+'july' => 'Temmuze',
+'august' => 'Tebaxe',
+'september' => 'Eylule',
+'october' => 'Keşkelun',
+'november' => 'Teşrine',
+'december' => 'Gağan',
+'january-gen' => 'Çeley',
+'february-gen' => 'Gucige',
+'march-gen' => 'Marti',
+'april-gen' => 'Nisane',
+'may-gen' => 'Gulane',
+'june-gen' => 'Hazirani',
+'july-gen' => 'Temmuzi',
+'august-gen' => 'Tebaxe',
+'september-gen' => 'Eylule',
+'october-gen' => 'Keşkeluni',
+'november-gen' => 'Teşrine',
+'december-gen' => 'Gağani',
+'jan' => 'Çel',
+'feb' => 'Guc',
+'mar' => 'Mar',
+'apr' => 'Nis',
+'may' => 'Gul',
+'jun' => 'Haz',
+'jul' => 'Tem',
+'aug' => 'Teb',
+'sep' => 'Eyl',
+'oct' => 'Keş',
+'nov' => 'Teş',
+'dec' => 'Gağ',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
+'category_header' => 'Pela ke kategoriya "$1" dera',
+'subcategories' => 'Kategoriyê bınêni',
+'category-media-header' => 'Medyawa ke kategoriya "$1" dera',
+'category-empty' => "''Na kategoriye de nıka pelgi ya ki medya çinê.''",
+'hidden-categories' => '{{PLURAL:$1|Kategoriya nımıtiye|Kategoriyê nımıtey}}',
+'hidden-category-category' => 'Kategoriyê nımıtey',
+'category-subcat-count' => '{{PLURAL:$2|Na kategoriye de ana kategoriya bınêne esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ana kategoriya bınêne esta|ani $1 kategoriyê bınêni estê.}}, be $2 ra pia.}}',
+'category-subcat-count-limited' => 'Na kategoriye de {{PLURAL:$1|ana kategoriya bınêne esta|ani $1 kategoriyê bınêni estê}}.',
+'category-article-count' => '{{PLURAL:$2|Na kategoriye de teyna ana pele esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ana pele esta|ani $1 peli estê.}}, be $2 ra pêro pia}}',
+'category-article-count-limited' => '{{PLURAL:$1|Ana pele kategoriya peyêne dera|Ani $1 peli kategoriya peyêne derê}}.',
+'category-file-count' => '{{PLURAL:$2|Na kategoriye de teyna ana dosya esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ana dosya esta|ani $1 dosyey estê.}}}}',
+'category-file-count-limited' => '{{PLURAL:$1|Ana dosya kategoriya peyêne dera|Ani $1 dosyey kategoriya peyêne derê}}.',
+'listingcontinuesabbrev' => 'işt.',
+'index-category' => 'Pelê endeksıni',
+'noindex-category' => 'Pelê bêendekşi',
+
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
+'mainpagetext' => "'''MediaWiki ebe mıwefeq instale bi.'''",
+'mainpagedocfooter' => "Serba melumatê gurenaena ''wiki software''i [http://meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
+
+== Gamê verêni ==
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista ayarunê vıraştene]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki de ÇZP]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-daena postey]",
+
+'about' => 'Heqa',
+'article' => 'Pela tede-esteun',
+'newwindow' => '(pençereo newe de beno ra)',
+'cancel' => 'Bıtexelne',
+'moredotdotdot' => 'Jêde...',
+'mypage' => 'Pela mı',
+'mytalk' => 'Hurênaisê mı',
+'anontalk' => "Hurênaisê ni ''IP''y",
+'navigation' => 'Pusula',
+'and' => '&#32;u',
+
+# Cologne Blue skin
+'qbfind' => 'Bıvêne',
+'qbbrowse' => 'Çım ra viarne',
+'qbedit' => 'Bıvurne',
+'qbpageoptions' => 'Na pele',
+'qbpageinfo' => 'Girê',
+'qbmyoptions' => 'Pelê mı',
+'qbspecialpages' => 'Pelê xususiy',
+'faq' => 'ÇZP',
+'faqpage' => 'Project:ÇZP',
+
+# Vector skin
+'vector-action-addsection' => 'Mewzu ilawe ke',
+'vector-action-delete' => 'Bıestere',
+'vector-action-move' => 'Bere',
+'vector-action-protect' => 'Bısevekne',
+'vector-action-undelete' => 'Esterıtene peyser bıcê',
+'vector-action-unprotect' => 'Seveknaene wedare',
+'vector-namespace-category' => 'Kategoriye',
+'vector-namespace-help' => 'Pela phoşti',
+'vector-namespace-image' => 'Dosya',
+'vector-namespace-main' => 'Pele',
+'vector-namespace-media' => 'Pela weseti',
+'vector-namespace-mediawiki' => 'Mesac',
+'vector-namespace-project' => 'Pela procey',
+'vector-namespace-special' => 'Pela xususiye',
+'vector-namespace-talk' => 'Hurênais',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Pela karberi',
+'vector-view-create' => 'Bıaferne',
+'vector-view-edit' => 'Bıvurne',
+'vector-view-history' => 'Tarixi bıasne',
+'vector-view-view' => 'Bıwane',
+'vector-view-viewsource' => 'Çımey bıvêne',
+'actions' => 'Kerdeni',
+'namespaces' => 'Caê namey',
+'variants' => 'Varyanti',
+
+'errorpagetitle' => 'Xeta',
+'returnto' => 'Peyser so $1.',
+'tagline' => '{{SITENAME}} ra',
+'help' => 'Phoşti',
+'search' => 'Cıfeteliyaene',
+'searchbutton' => 'Cıfeteliye',
+'go' => 'So',
+'searcharticle' => 'So',
+'history' => 'Tarixçê pele',
+'history_short' => 'Tarix',
+'updatedmarker' => 'cıkotena mına peyêne ra dıme biya rocaniye',
+'info_short' => 'Melumat',
+'printableversion' => 'Asaena çapkerdene',
+'permalink' => 'Girêo daimki',
+'print' => 'Çapkerdis',
+'edit' => 'Bıvurne',
+'create' => 'Vıraze',
+'editthispage' => 'Na pele bıvurne',
+'create-this-page' => 'Na pele bıaferne',
+'delete' => 'Esterıtis',
+'deletethispage' => 'Na pele bıestere',
+'undelete_short' => '{{PLURAL:$1|Jü vurnaişi|$1 Vurnaisun}} meestere',
+'protect' => 'Sıtar ke',
+'protect_change' => 'bıvurne',
+'protectthispage' => 'Na pele sıtar ke',
+'unprotect' => 'Sıtar meke',
+'unprotectthispage' => 'Na pele sıtar meke',
+'newpage' => 'Pela newiye',
+'talkpage' => 'Na pele sero hurêne',
+'talkpagelinktext' => 'Hurênais',
+'specialpage' => 'Pela xususiye',
+'personaltools' => 'Hacetê keşi',
+'postcomment' => 'Qısımo newe',
+'articlepage' => 'Pela tedeesteu bıvêne',
+'talk' => 'Hurênais',
+'views' => 'Asaeni',
+'toolbox' => 'Qutiya hacetu',
+'userpage' => 'Pela karberi bıvêne',
+'projectpage' => 'Pela procey bıvêne',
+'imagepage' => 'Pela dosya bıvêne',
+'mediawikipage' => 'Pela mesacun bıvêne',
+'templatepage' => 'Pela nımunun bıvêne',
+'viewhelppage' => 'Pela phoşti bıvêne',
+'categorypage' => 'Pela kategoriu bıvêne',
+'viewtalkpage' => 'Hurênaişi bıvêne',
+'otherlanguages' => 'Zonunê binun de',
+'redirectedfrom' => '($1 ra ard)',
+'redirectpagesub' => 'Pela ardene',
+'lastmodifiedat' => 'Na pela tewr peyên $1 de, $2 de vuriye.',
+'viewcount' => 'Na pele hata nıka {{PLURAL:$1|jü rae|$1 rey}} vêniye.',
+'protectedpage' => 'Pela kılit-kerdiye',
+'jumpto' => 'So be:',
+'jumptonavigation' => 'pusula',
+'jumptosearch' => 'cıfeteliye',
+'view-pool-error' => 'Qaytê qusıri mekerê, serverê ma nıka jêde bar gureto ho ser.
+Hedê ho ra jêde karberi kenê ke şêrê na pele bıkerê.
+Sıma rê zamet, tenê vınderê, hata ke reyna kenê ke na pele kuyê.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Heqa {{SITENAME}} de',
+'aboutpage' => 'Project:Heqa',
+'copyright' => 'Zerrek bınê $1i dero.',
+'copyrightpage' => '{{ns:project}}:Telifheqiye',
+'currentevents' => 'Veng u vac',
+'currentevents-url' => 'Project:Veng u vac',
+'disclaimers' => 'Diwanê mesuliyeti',
+'disclaimerpage' => 'Project:Diwanê mesuliyetê bıngey',
+'edithelp' => 'Phoştdariya vurnaişi',
+'edithelppage' => 'Help:Vurnais',
+'helppage' => 'Help:Tede estey',
+'mainpage' => 'Pela Seri',
+'mainpage-description' => 'Pela Seri',
+'policy-url' => 'Project:Poliça',
+'portal' => 'Portalê cemaeti',
+'portal-url' => 'Project:Portalê cemaeti',
+'privacy' => 'Maddê dızdêni',
+'privacypage' => 'Project:Maddê dızdêni',
+
+'badaccess' => 'Xeta desturi',
+'badaccess-group0' => 'Faeliyeto ke sıma wazenê, sıma nêşikinê ney ravêr berê.',
+'badaccess-groups' => 'No faeliyet teyna, keso ke {{PLURAL:$2|grube|grubu ra jüye}}: $1 dero, serba dino.',
+
+'versionrequired' => 'MediaWiki ra vurnaisê $1i lazımo',
+'versionrequiredtext' => 'MediaWiki ra vurnaisê $1i lazımo ke na pele bıgurenê. Qaytê [[Special:Version|vurnaisê pele]] ke.',
+
+'ok' => 'Temam',
+'pagetitle-view-mainpage' => '',
+'retrievedfrom' => '"$1" ra ard',
+'youhavenewmessages' => 'Yê sıma $1 ($2) esto.',
+'newmessageslink' => 'mesacê newey',
+'newmessagesdifflink' => 'vurnaiso peyên',
+'youhavenewmessagesmulti' => '$1 de mesacê sımaê newey estê',
+'editsection' => 'bıvurne',
+'editsection-brackets' => '[$1]',
+'editold' => 'bıvurne',
+'viewsourceold' => 'çımey bıvêne',
+'editlink' => 'bıvurne',
+'viewsourcelink' => 'çıme bıvêne',
+'editsectionhint' => 'Qısımê $1 bıvurne',
+'toc' => 'Tede estey',
+'showtoc' => 'bıasne',
+'hidetoc' => 'bınımne',
+'thisisdeleted' => '$1i bıasne ya ki peyser biya?',
+'viewdeleted' => '$1i bıasne?',
+'restorelink' => '{{PLURAL:$1|jü vurnaiso esterıte|$1 vurnaisê esterıtey}}',
+'feedlinks' => 'Cı de:',
+'feed-invalid' => 'Aboneo nêvêrdoğ.',
+'feed-unavailable' => 'Qutê sendikasyoni çino',
+'site-rss-feed' => '$1 Weyikerdena RSSi',
+'site-atom-feed' => '$1 Weyikerdena Atomi',
+'page-rss-feed' => '"$1" RSS Qut',
+'page-atom-feed' => '"$1" Qutê Atomi',
+'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
+'red-link-title' => '$1 (pele çina)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Pele',
+'nstab-user' => 'Pela karberi',
+'nstab-media' => 'Pela medya',
+'nstab-special' => 'Pela xase',
+'nstab-project' => 'Pela procey',
+'nstab-image' => 'Dosya',
+'nstab-mediawiki' => 'Mesac',
+'nstab-template' => 'Nımune',
+'nstab-help' => 'Pela phoşti',
+'nstab-category' => 'Kategoriye',
+
+# Main script and global functions
+'nosuchaction' => 'Çiyo de nianên çino',
+'nosuchactiontext' => "Faeliyeto ke hetê URL ra tesnif biyo, nêvêreno.
+To, beno ke URL ğelet nusno ya ki tı girêo de ğelet dıma şiya.
+No mısneno ke, ''software''o ke terefê {{SITENAME}} ra gurenino, jü ğeleliye tede esta.",
+'nosuchspecialpage' => 'Pela de xususiya nianêne çina',
+'nospecialpagetext' => '<strong>Sıma pela xususiya de nêvêrdiye kerde ra.</strong>
+
+Jü lista pelunê vêrdoğu bınê [[Special:SpecialPages|{{int:specialpages}}]] de vênina.',
+
+# General errors
+'error' => 'Xeta',
+'databaseerror' => 'Xeta panga daeyu',
+'dberrortext' => 'Jü xeta persê cumla panga daeyu de amê meydan.
+Heni aseno ke na xeta nustene de esta.
+Persê panga daeyuno peyên nia bi:
+<blockquote><tt>$1</tt></blockquote>
+ebe gurê zerrê "<tt>$2</tt>"y ra.
+Panga daeyu xetawa ke asnena "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'Rêza cumleunê panga daeyu de jü xeta amê meydan.
+Heni aseno ke na xeta nustene de esta.
+Persê panga daeyuno peyên nia bi:
+"$1"
+Fonksiyono ke gureniyo "$2".
+Panga daeyu xetawa ke asnena "$3: $4"',
+'laggedslavemode' => 'Teme: Beno ke vurnaisê peyêni pele de niyê.',
+'readonly' => 'Panga daeyu kılit kerdiya',
+'enterlockreason' => 'Serba kılit-kerdişi jü sebeb bıde ke, kılitkerdis texminen key beno ra',
+'readonlytext' => 'Panga daeyu nustunê newun u vurnaisunê binu rê kılita, seba ke bena pak, hama badêna oncia normal gurina.
+
+İdarekeru ra kami ke kılit kerda, na tesrih aseno: $1',
+'missing-article' => "Panga, pela be namê \"\$1\" \$2 ke gunê bıbo, nêdiye.
+
+Na belkia serba jü vurnaiso khan ya ki tarixê girê jü pelge esteriya.
+
+Eke nia niyo, belkia ''software''i de jü xeta esta.
+Kerem kerê, nae be namê ''URL''i jü [[Special:ListUsers/sysop|karber]]i ra vazê.",
+'missingarticle-rev' => '(tekrar diyais#: $1)',
+'missingarticle-diff' => '(Ferq: $1, $2)',
+'readonly_lag' => "Panga daeyu otomatikman qapan biye ''slave-database-servers''i ra be hata ''master''i",
+'internalerror' => 'Xeta zerrey',
+'internalerror_info' => 'Xeta zerrey: $1',
+'fileappenderror' => 'Dosya "$1"ine dosya "$2"ine ser nêbena.',
+'filecopyerror' => 'Dosya "$1"i kopya nêbiye be dosya "$2".',
+'filerenameerror' => 'Namê dosya "$1"i nêvuriya be dosya "$2".',
+'filedeleteerror' => 'Dosya "$1"i nêesteriye.',
+'directorycreateerror' => 'İndeksê "$1"i nêvıraşt.',
+'filenotfound' => 'Dosya "$1"i nêvêniye.',
+'fileexistserror' => 'Sıma nêşikinê dosya "$1" de bınusê: dosya esta',
+'unexpected' => 'Qimeto nêpawıte: "$1"="$2".',
+'formerror' => 'Xeta: form niard',
+'badarticleerror' => 'No faeliyet na pele de nêvıracino.',
+'cannotdelete' => 'Pela ya ki dosya "$1" nêesteriye.
+Beno ke, verênde terefê kesê de bini ra esteriya.',
+'badtitle' => 'Sernameo xırabın',
+'badtitletext' => "Sernamê pela ke sıma wast, nêvêrde, thal, ya girê mabênê zoni ğelet ya ki sernamê mabênê ''wiki'' bi.
+Beno ke, tede jü ya ki jêdê isareti estê ke sernameu de nêgurinê.",
+'perfcached' => 'Ni daey nımıteyê u beno ke rocaney niyê.',
+'perfcachedts' => 'Ni daey nımıteyê, u tewr peyên $1 de biyê rocaniy.',
+'querypage-no-updates' => 'Rocane-biyaena na pele nıka cadaiyê.
+Daey ita nıka newe nêbenê.',
+'wrong_wfQuery_params' => 'Parametreo ğelet serba wfPers()<br />
+Fonksiyon: $1<br />
+Pers: $2',
+'viewsource' => 'Çımey bıvêne',
+'viewsourcefor' => 'serba $1i',
+'actionthrottled' => 'Faeliyet xenekıt',
+'actionthrottledtext' => "Berqestiya tedbirê ''anti-spam''i ra vırastena ni faeliyeti rê sıma zafê rey zemano senık de sindor viarna ra.
+Kerem kerê, deqêna oncia bıcerrebnê.",
+'protectedpagetext' => 'Na pele vurnaisu rê qapan biya.',
+'viewsourcetext' => 'Sıma şikinê çımê na pele bıvênê u kopya kerê:',
+'protectedinterface' => "Na pele ''software'' rê meqalunê caunê bırnau dana, u qapana ke suıstımalu rê engel bo.",
+'editinginterface' => "'''Teme:''' Sıma hao jü pela ke serba ''software'' meqalunê caunê bırnau dana, vurnenê.
+Vurnaisê na pele karberunê binu rê serpela karberi kena ke bıasno.
+Serba çarnais, yardımê [http://translatewiki.net/wiki/Main_Page?setlang=kiu translatewiki.net]yê procê dos-kerdene rê diqet kerê.",
+'sqlhidden' => '(Persê SQLi nımıteo)',
+'cascadeprotected' => 'Na pele esterıtene ra sıtar biya, çıke na zerrê {{PLURAL:$1|pela ke|pelunê ke}} dera/derê be "cascading" opsiyoni kılit biya, $2 de bena ra.',
+'namespaceprotected' => "'''$1''' ''namespace'' de desturê sıma be vurnaisê pelu çino.",
+'customcssjsprotected' => 'Desturê sıma be vurnaisê na pele çino, çıke nae de ayarê kesê karberê bini esto.',
+'ns-specialprotected' => 'Pelê xususi nêvurrinê.',
+'titleprotected' => "No sername terefê [[User:$1|$1]]i ra, afernaene ra sıtar biyo.
+Sebebê ho ''$2'' dero.",
+
+# Virus scanner
+'virus-badscanner' => "Sıkılo xırabın: ''scanner''ê ''virus''ê nêzanıtey: ''$1''",
+'virus-scanfailed' => "''scan'' nêbi (code $1)",
+'virus-unknownscanner' => "''antivirus''o nêzanıte:",
+
+# Login and logout pages
+'logouttext' => "'''Sıma nıka cı ra veciyê.'''
+
+Sıma şikinê dızdêni {{SITENAME}} de dewam kerê, ya jê eyni karberi ya ki jê jüyê de bini [[Special:UserLogin|oncia cıkuyê]].
+Beno ke taê peli sıma hona cıkote asnenê, hata ke sıma ''browser cache''ê ho kerd pak.",
+'welcomecreation' => '== Xêr amê, $1! ==
+Hesabê sıma vıraciya.
+Vurnaena [[Special:Preferences|melumatanê {{SITENAME}}]] ho vira mekerê.',
+'yourname' => 'Namê karberi:',
+'yourpassword' => 'Parola:',
+'yourpasswordagain' => 'Parola tekrar ke:',
+'remembermypassword' => 'Mı na komputeri de biya ho viri',
+'yourdomainname' => 'Bandıra sıma:',
+'externaldberror' => 'Cıfeteliyaisê naskerdene de ya xeta esta ya ki tebera vırastena hesabê sıma rê destur çino.',
+'login' => 'Cıkuye',
+'nav-login-createaccount' => 'Cıkuye / hesab vıraze',
+'loginprompt' => "Cıkotena {{SITENAME}} rê gunê ''cookies'' akerdey bê.",
+'userlogin' => 'Cıkuye / hesab vıraze',
+'userloginnocreate' => 'Cıkuye',
+'logout' => 'Veciye',
+'userlogout' => 'Veciye',
+'notloggedin' => 'Cı nêkota',
+'nologin' => "Hesabê sıma çino? '''$1'''.",
+'nologinlink' => 'Jü hesab rake',
+'createaccount' => 'Hesab vıraze',
+'gotaccount' => "Hesabê sıma ke esto? '''$1'''.",
+'gotaccountlink' => 'Cıkuye',
+'createaccountmail' => 'e-poste sera',
+'badretype' => 'Parola sıma nêvêrena.',
+'userexists' => 'No namê karberi guretiyo.
+Kerem ke, namêna weçine.',
+'loginerror' => 'Xeta cıkotene',
+'createaccounterror' => 'Hesab nêvırajino: $1',
+'nocookiesnew' => 'Hesabê karberi vıraziya, hama sıma nêşikiyay cı kuyê.
+Serba rakerdena hesabi çerezê {{SITENAME}}i gurêninê.
+Sıma çerezi qapan kerdi.
+Ravêri ine rakerê, dıma be name u parola sımawa newiye cı kuyê.',
+'nocookieslogin' => 'Serba rakerdena hesabi çerezê {{SITENAME}}i gurêninê.
+Sıma çerezi qapan kerdi.
+Ravêri ine rakerê u reyna bıcerrebnê.',
+'noname' => 'Ebe namê do vêrdoği ra cınêkota.',
+'loginsuccesstitle' => 'Cıkotene biye ra',
+'loginsuccess' => "'''Sıta {{SITENAME}} de ebe namê karberi \"\$1\" kota cı.'''",
+'nosuchuser' => 'Ebe namê "$1"i jü karber çino.
+Nustena namunê karberu de herfa pil u qıze rê diqet kerê.
+Nustena ho qonrol kerê, ya ki [[Special:UserLogin/signup|jü hesabo newe rakerê]].',
+'nosuchusershort' => 'Karberê do ebe namê "<nowiki>$1</nowiki>" çino.
+Nustena cı qontrol ke.',
+'nouserspecified' => 'Gunê namê jü karberi bıdekernê.',
+'wrongpassword' => 'Parola ğelete kota cı.
+Kerem ke, oncia bıcerrebne.',
+'wrongpasswordempty' => 'Parola thale kota cı.
+Kerem ke, oncia bıcerrebne.',
+'passwordtooshort' => 'Paroley tewr senık ebe {{PLURAL:$1|1 karakter|$1 karakteru}} gunê derg bê.',
+'password-name-match' => 'Parola sıma namê sımaê karberi ra gunê ferqın bo.',
+'mailmypassword' => 'E-mail sera parola newiye bırusne',
+'passwordremindertitle' => 'Serba {{SITENAME}} parola newiya vêrdoğe',
+'noemail' => 'Adresa de e-posteya ke ebe namê karberi "$1" beqeyda, çina.',
+'mailerror' => 'Xeta rusnaena e-postey: $1',
+'emailconfirmlink' => 'Adresa e-postê ho tesdiq ke',
+'accountcreated' => 'Hesab vırajiya',
+'accountcreatedtext' => 'Serba $1i hesabê karberi vırajiya.',
+'createaccount-title' => 'Serba {{SITENAME}}i vırajiyaene hesabê karberi',
+'usernamehasherror' => 'Namê karberi de karakteri gunê têwerte ra mebê',
+'loginlanguagelabel' => 'Zon: $1',
+
+# Password reset dialog
+'resetpass' => 'Parola bıvurne',
+'resetpass_header' => 'Parola hesabi bıvurne',
+'oldpassword' => 'Parola khane:',
+'newpassword' => 'Parola newiye:',
+'retypenew' => 'Parola newiye tekrar ke:',
+'resetpass_submit' => 'Parola ayar ke u cı kuye',
+'resetpass_success' => 'Parola sıma ebe serkotene vurriye! Nıka hesabê sıma beno ra...',
+'resetpass_forbidden' => 'Paroley nêşikinê bıvurniyê',
+'resetpass-submit-loggedin' => 'Parola bıvurne',
+'resetpass-submit-cancel' => 'Bıtexelne',
+'resetpass-temp-password' => 'Parola vêrdiye:',
+
+# Edit page toolbar
+'bold_sample' => 'Nusto qolınd',
+'bold_tip' => 'Nusto qolınd',
+'italic_sample' => 'Meqalo italik',
+'italic_tip' => 'Meqalo italik',
+'link_sample' => 'Serrêza girêy',
+'link_tip' => 'Girê zerri',
+'extlink_sample' => 'http://www.example.com arezekerdena adrese',
+'extlink_tip' => 'Girê teberi (verbendê http:// ho vira mekerê)',
+'headline_sample' => 'Nustê serrêze',
+'headline_tip' => 'Serrêza sewiya 2ine',
+'math_sample' => 'İta formuli cıke',
+'math_tip' => 'Formulê matematiki (formatê LaTeXi de)',
+'nowiki_sample' => 'Formatê nustê huyo serbeti ita bınuse',
+'nowiki_tip' => 'Ehemêt formatê wikiy mede',
+'image_tip' => 'Dosya arêkerdiye',
+'media_tip' => 'Girê dosya',
+'sig_tip' => 'İmza to be tarix',
+'hr_tip' => 'Xeta ufqiye (zaf megurene)',
+
+# Edit pages
+'summary' => 'Xulasa:',
+'subject' => 'Mewzu/serrêze:',
+'minoredit' => 'No jü vurnaiso qızkeko',
+'watchthis' => 'Na pele de şêr ke',
+'savearticle' => 'Pele qeyd ke',
+'preview' => 'Verqayt',
+'showpreview' => 'Verqayti bıasne',
+'showlivepreview' => 'Verqayto cınde',
+'showdiff' => 'Vurnaisun bıasne',
+'anoneditwarning' => "'''Diqet:''' Tı cınêkota.
+Tarixê vurnaena na pele de, hurêndia leqeme de numra tuya IPy qeyd bena.",
+'missingcommenttext' => 'Cêr de jü xulasa bınuse.',
+'summary-preview' => 'Verqaytê xulasa:',
+'subject-preview' => 'Verqaytê mewzuy/serrêze:',
+'blockedtitle' => 'Karber kilıt bi',
+'blockednoreason' => 'sebeb nêdiyo',
+'blockedoriginalsource' => "Çımê pela '''$1'''i is cêr dero:",
+'blockededitsource' => "Meqalê '''vurnaisunê to''' be pela '''$1'''i cêr dero:",
+'whitelistedittitle' => 'Serba vurnaene gunê cı kuyê',
+'whitelistedittext' => 'Serba vurnaene $1.',
+'nosuchsectiontitle' => 'Qısım nêşikiya bıvêniyo',
+'nosuchsectiontext' => 'To waşt ke jü qısım kuyê, uyo ke çino.
+Sırewo ke to qaytê pele kerdêne, beno ke no kırışiyo ya ki esteriyo.',
+'loginreqtitle' => 'Gunê cı kuyê',
+'loginreqlink' => 'cı kuye',
+'loginreqpagetext' => 'Serba diyaena pelunê binu tı gunê $1 bıbê.',
+'accmailtitle' => 'Parola rusniye.',
+'newarticle' => '(Newe)',
+'newarticletext' => "To jü girê teqna be jü pela ke hona çina.
+Serba afernaena pele qutiya metnê cêrêni bıgurêne. Serba melumati qaytê [[{{MediaWiki:Helppage}}|pela phoşti]] ke.
+Eke be ğeletêni ama ita, wa gozaga '''peyser'''i programê ho de bıteqne.",
+'noarticletext' => 'Na pele de hona thowa çino.
+Tı şikina zerrê pelunê binu de [[Special:Search/{{PAGENAME}}|seba sernamê na pele cıfeteliyê]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cıkotena aide rê cıfeteliyê],
+ya ki [{{fullurl:{{FULLPAGENAME}}|action=edit}} na pele bıvurnê]</span>.',
+'userpage-userdoesnotexist' => 'Hesabê karberi "$1" qeyd nêbiyo.
+Kerem ke, tı ke wazena na pele vırazê/bıvurnê, qontrol ke.',
+'userpage-userdoesnotexist-view' => 'Hesabê karberi "$1" qeyd nêbiyo.',
+'updated' => '(Bi rozane)',
+'note' => "'''Not:'''",
+'previewnote' => "'''Bıfıkıriye ke no teyna jü verqayto.'''
+Vurnaişê to hona qeyd nêbiyê!",
+'editing' => 'Tıya $1 vurnena',
+'editingsection' => 'Vurnaena $1 (qısım)',
+'editingcomment' => '$1 vurnino (qısımo newe)',
+'editconflict' => 'Têverabiyaena vurnaişi: $1',
+'yourtext' => 'Metnê to',
+'storedversion' => 'Metıno qeydkerde',
+'yourdiff' => 'Ferqi',
+'copyrightwarning' => "Diqet ke, iştırakê ke benê be pela {{SITENAME}}i, pêro bınê $2 de rakerde vêrenê (serba daêna melumati qaytê $1 ke).
+İştırakunê ho, eke nêwazena wa terefê binu ra bıvuriyê ya ki caunê binu ra vıla bê, o taw ita menuse.<br />
+Zobina ki ebe ita nustene ra sond wena ke nê iştıraki terefê to ra nuşiyê, ya çımê do rakerdey ra ya ki çımê do serbest ra kopya biyê.
+'''Gurêo ke ebe telifheqiye ra sevekiyo bê destur ita darde meke!'''",
+'templatesused' => '{{PLURAL:$1|Şablono ke na pele de gurenino|Şablonê ke na pele de gureninê}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Şablono ke na verqayt de gureno|Şablonê ke na verqayt de gurenê}}:',
+'template-protected' => '(sevekna)',
+'template-semiprotected' => '(nêm-seveknais)',
+'hiddencategories' => 'Na pele mensuba {{PLURAL:$1|1 kategoriya nımıtiya|$1 kategoriunê nımıtuna}}:',
+'permissionserrors' => 'Xetê desturi',
+'permissionserrorstext-withaction' => 'Desturê to be $2 çino, serba {{PLURAL:$1|na sebebi|nê sebebu}} ra:',
+'edit-conflict' => 'Têverabiyaena vurnaişi.',
+
+# History pages
+'viewpagelogs' => 'Qeydê ke na pele ra alaqedarê, inu bıasne',
+'currentrev' => 'Çımraviarnaoğo rozane',
+'currentrev-asof' => '$1 ra gore pele be halo nıkaên',
+'revisionasof' => 'Halê roca $1ine',
+'previousrevision' => '← Halo khanêr',
+'nextrevision' => 'Tekrardiyaiso newêr →',
+'currentrevisionlink' => 'Halo nıkaên',
+'cur' => 'pey',
+'next' => 'badên',
+'last' => 'peyên',
+'page_first' => 'verên',
+'page_last' => 'peyên',
+'histlegend' => "Ferqê weçinıtene: Qutiya verziyonun serba têversanaene isaret ke u dest be ''enter''i ya ki gozaga cêrêne ro ne.<br />
+Cedwel: (pey) = ferqê verziyonê peyêni,
+(ver) = ferqê verziyonê verêni, Q = vurnaiso qızkek.",
+'history-fieldset-title' => 'Tarixê cıcêraişi',
+'history-show-deleted' => 'Teyna esterıtey',
+'histfirst' => 'Verênêr',
+'histlast' => 'Peyênêr',
+'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
+'historyempty' => '(thal)',
+
+# Revision feed
+'history-feed-title' => 'Tarixê çımraviarnaişi',
+'history-feed-description' => 'Wiki de tarixê çımraviarnaişê na pele',
+'history-feed-item-nocomment' => '$1 wertê $2i de',
+'history-feed-empty' => 'Pela cıfeteliyaiye çina.
+Beno ke na esteriya, ya ki namê cı vuriyo.
+Serba pelunê muhimunê newun [[Special:Cıcêre|cıcêraişê wiki de]] bıcerebne.',
+
+# Revision deletion
+'rev-deleted-comment' => '(tefşir esteriyo)',
+'rev-deleted-user' => '(namê karberi esteriyo)',
+'rev-deleted-event' => '(faeliyetê cıkotene esteriyo)',
+'rev-deleted-user-contribs' => '[namê karberi ya ki adresa IPy dariya we - vurnaene iştıraku ra nımniya]',
+'rev-deleted-text-permission' => "Çımraviarnaena na pele '''esteriya'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-deleted-text-unhide' => "Çımraviarnaena na pele '''esteriya'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+Sıma be idarekerênia ho ra şikinê hona [$1 na çımraviarnaene bıvênê], eke wazenê dewam kerê.",
+'rev-suppressed-text-unhide' => "Çımraviarnaena na pele '''dowoşiya'''.
+Beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto. Sıma be idarekerênia ho ra şikinê hona [$1 na çımraviarnaene bıvênê], eke wazenê dewam kerê.",
+'rev-deleted-text-view' => "Çımraviarnaena na pele '''esteriya'''.
+Sıma be idarekerênia ho ra şikinê ae bıvênê; beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-suppressed-text-view' => "Çımraviarnaena na pele '''dowoşiya'''.
+Sıma be idarekerênia ho ra şikinê ae bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto.",
+'rev-deleted-no-diff' => "Sıma nêşikinê nê ferqi bıvênê, çıke çımraviarnaisu ra jü '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
+'rev-deleted-unhide-diff' => "Çımraviarnaisunê na ferqi ra jü '''esteriyo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+Sıma be idarekerênia ho ra şikinê hona [$1 nê ferqi bıvênê], eke wazenê dewam kerê.",
+'rev-delundel' => 'bıasne/wedare',
+'rev-showdeleted' => 'bıasne',
+'revisiondelete' => 'Çımraviarnaisu bıestere/peyser bia',
+'revdelete-nooldid-title' => 'Çımraviarnaena waştiye nêvêrena',
+'revdelete-nooldid-text' => 'Sıma vırastena nê fonksiyoni rê ya jü çımraviarnaena waştiye diyar nêkerdo, çımraviarnaena diyarkerdiye çına, ya ki sıma wazenê ke çımraviarnaena nıkaêne bınımnê.',
+'revdelete-nologtype-title' => 'Qet qeydê cı nêdiya',
+'revdelete-nologtype-text' => 'Qeydê sımao diyar çino ke nê fealiyet kuyê.',
+'revdelete-nologid-title' => 'Cıkotene qebul nêbiye',
+'revdelete-nologid-text' => 'Sıma vırastena nê fonksiyoni rê ya jü cıkotena waştiye diyar nêkerda, ya ki çıkotena diyarkerdiye çina.',
+'revdelete-no-file' => 'Dosya diyarkerdiye çina.',
+'revdelete-show-file-confirm' => 'Sıma eminê ke wazenê çımraviarnaena esterıtiya na dosya "<nowiki>$1</nowiki>" $2 ra $3 de bıvênê?',
+'revdelete-show-file-submit' => 'Heya',
+'revdelete-selected' => "'''[[:$1]]: ra {{PLURAL:$2|Çımraviarnaiso weçinıte|Çımraviarnaisê weçinıtey}}'''",
+'revdelete-text' => "Çımraviarnaişê esterıtey u kerdişi hewna tarixê pele u qeydan de asenê, hama parçê zerrekê dine areze nêbenê.'''
+Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê hona bıresê zerrekê nımıtey u şikinê ey oncia na eyni mianpele ra peyser biarê.",
+'revdelete-suppress-text' => "Wedardene gunê '''teyna''' nê halunê cêrênu de bıguriyo:
+* Melumatê kıfırio mıhtemel
+* Melumatê şexsio bêmınasıb
+*: ''adresa çêi u numrê têlefoni, numrê siğorta sosyale, uêb.''",
+'revdelete-legend' => 'Şertunê vênaişi rone',
+'revdelete-hide-text' => 'Nustê çımraviarnaene bınımne',
+'revdelete-hide-image' => 'Zerrekê dosya bınımne',
+'revdelete-hide-name' => 'Biyaen u hedefi bınımne',
+'revdelete-hide-comment' => 'Xulasa measne',
+'revdelete-hide-user' => 'Namê karberiê/Adresa IPya vurnaoği bınımne',
+'revdelete-radio-same' => '(mevurne)',
+'revdelete-radio-set' => 'Heya',
+'revdelete-radio-unset' => 'Nê',
+'revdelete-log' => 'Sebeb:',
+'revdelete-submit' => '{{PLURAL:$1|Çımraviarnaiso ke çiniyo|Çımraviarnaisê ke çiniyê}} we tetbiq ke',
+'revdel-restore' => 'asaişi bıvurne',
+'pagehist' => 'Tarixê pele',
+'deletedhist' => 'Tarixo esterıte',
+'revdelete-content' => 'zerrek',
+'revdelete-summary' => 'xulasa vurnaene',
+'revdelete-uname' => 'namê karberi',
+'revdelete-hid' => 'bınımne $1',
+'revdelete-unhid' => 'bıasne $1',
+'revdelete-log-message' => '$1 rê $2 {{PLURAL:$2|çımraviarnais|çımraviarnaişi}}',
+'logdelete-log-message' => '$1 rê $2 {{PLURAL:$2|hadisa|hadisey}}',
+'revdelete-otherreason' => 'Sebebo bin/ilaweki:',
+'revdelete-reasonotherlist' => 'Sebebo bin',
+'revdelete-edit-reasonlist' => 'Sebebunê esterıtene bıvurne',
+'revdelete-offender' => 'Nustoğê revizyoni:',
+
+# History merging
+'mergehistory-from' => 'Pela çımey:',
+'mergehistory-into' => 'Pela hedefi:',
+'mergehistory-reason' => 'Sebeb:',
+
+# Merge log
+'revertmerge' => 'Cia ke',
+
+# Diffs
+'history-title' => 'Viartê pelga "$1"ine',
+'difference' => 'Ferqê wertê vurnaisu',
+'lineno' => 'Rêza $1i:',
+'compareselectedversions' => 'Varyantunê weçinıtun têver sane',
+'editundo' => 'peyser bia',
+'diff-multi' => '({{PLURAL:$1|Jü çımraviarnaena wertey|$1 çımraviarnaena wertey}} nêasna.)',
+
+# Search results
+'searchresults' => 'Neticê cıfeteliyaene',
+'searchresults-title' => '"$1" rê neticê cıfeteliyaene',
+'searchresulttext' => 'Zerrê {{SITENAME}} de heqa cıfeteliyaene de serba melumat guretene, şikina qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
+'searchsubtitle' => 'Tı serba \'\'\'[[:$1]]\'\'\' cıfeteliya. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra girê ho esto]])',
+'searchsubtitleinvalid' => "Serbacıfeteliyae: '''$1'''",
+'notitlematches' => 'Qet zu serrêze de nêvêniya',
+'notextmatches' => 'Qet zu pele de nêvêniya',
+'prevn' => '{{PLURAL:$1|$1}} verên',
+'nextn' => '{{PLURAL:$1|$1}} peyên',
+'viewprevnext' => 'Bıvêne ($1 {{int:pipe-separator}} $2) ($3)',
+'searchhelp-url' => 'Help:Tedeestey',
+'searchprofile-articles' => 'Pelê tedeesteu',
+'searchprofile-images' => 'Multimedya',
+'search-result-size' => '$1 ({{PLURAL:$2|1 çekuye|$2 çekuy}})',
+'search-redirect' => '(hetêcıraberdene $1)',
+'search-section' => '(qısımo $1)',
+'search-suggest' => 'To ney rê vat: $1',
+'search-interwiki-caption' => 'Procê bıray',
+'search-interwiki-default' => '$1 neticey:',
+'search-interwiki-more' => '(zafêr)',
+'search-mwsuggest-enabled' => 'ebe teklifu',
+'search-mwsuggest-disabled' => 'teklifi çinê',
+'searchrelated' => 'aleqeder',
+'searchall' => 'pêro',
+'nonefound' => "'''Not''': Teyna taê namê cau jê saybiyau cı fetelino.
+Verê cıfeteliyaene de be ilawekerdena verbendê '''all:'''i ra (ebe pelunê hurênaişi, şablonu uêb.) bıcerebnê ya ki namê cayo ke wajino jê verbendi bıgurênê.",
+'powersearch' => 'Cıcêraiso hira',
+'powersearch-legend' => 'Cıcêraiso hira',
+'powersearch-ns' => 'Caunê namun de cıcêre:',
+'powersearch-redir' => 'Girêun lista ke',
+'powersearch-field' => 'Serba cı qayt ke',
+'powersearch-togglelabel' => 'Weçine:',
+'powersearch-toggleall' => 'Pêro',
+'powersearch-togglenone' => 'Qet',
+'search-external' => 'Cıcêraisê teberi',
+'searchdisabled' => "Cıcêraisê {{SITENAME}} qapan biyo.
+Sıma şikinê na sıre ''Google'' de şêr kerê.
+Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
+
+# Quickbar
+'qbsettings' => 'Herbişiyaena hedefi',
+'qbsettings-none' => 'Qet',
+'qbsettings-fixedleft' => 'Çhep de bestniyo pa',
+'qbsettings-fixedright' => 'Rast de bestniyo pa',
+'qbsettings-floatingleft' => 'Çhepi ser aznino',
+'qbsettings-floatingright' => 'Rasti ser aznino',
+
+# Preferences page
+'preferences' => 'Tercihi',
+'mypreferences' => 'Tercihê mı',
+'prefs-edits' => 'Numra vurnaisun:',
+'prefsnologin' => 'Cı nêkota',
+'prefsnologintext' => 'Sıma gunê <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cı kuyê]</span> ke dıma tercihunê karberi bınusnê.',
+'changepassword' => 'Parola bıvurne',
+'prefs-skin' => 'Çerme',
+'skin-preview' => 'Verqayt',
+'prefs-math' => 'Mat',
+'datedefault' => 'Tercihi çinê',
+'prefs-datetime' => 'Tarix u zeman',
+'prefs-personal' => 'Dosya karberi',
+'prefs-rc' => 'Vurnaisê peyêni',
+'prefs-watchlist' => 'Lista şêr-kerdişi',
+'prefs-watchlist-days' => 'Rozê ke lista şêr-kerdişi de asenê:',
+'prefs-watchlist-edits' => 'Miqdarê tewr jêdêr vurnaisuno ke lista şêr-kerdişia hirakerdiye derê:',
+'prefs-misc' => 'Ğelet',
+'prefs-resetpass' => 'Parola bıvurne',
+'prefs-rendering' => 'Asais',
+'saveprefs' => 'Qeyd ke',
+'resetprefs' => 'Vurnaisunê qeydnêkerdun pak ke',
+'prefs-editing' => 'Vurnais',
+'rows' => 'Rêji:',
+'columns' => 'Ustıni:',
+'searchresultshead' => 'Cıcêre',
+'resultsperpage' => 'Pelgê be vênıtun:',
+'contextlines' => 'Vênıtê be xetun:',
+'contextchars' => 'Xetê be zerrek:',
+'stub-threshold' => 'Tertibê şêmıga <a href="#" class="stub">stub link</a> (\'\'bytes\'\'):',
+'recentchangesdays' => 'Rozê ke vurnaisunê peyênun de asenê:',
+'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|roze|roji}}',
+'recentchangescount' => 'Miqdarê vurnaisuno ke standardwari asniyenê:',
+'savedprefs' => 'Tercihê sıma qeydi biy.',
+'timezonelegend' => 'Warê saete:',
+'localtime' => 'Waxto mehelın:',
+'timezoneoffset' => 'Ware¹:',
+'servertime' => "Waxtê ''server''i:",
+'guesstimezone' => "''Browser''i ra pırr ke",
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Okyanuso Atlantik',
+'timezoneregion-australia' => 'Australya',
+'timezoneregion-europe' => 'Awrupa',
+'timezoneregion-indian' => 'Okyanuso Hind',
+'timezoneregion-pacific' => 'Okyanuso Pasifik',
+'allowemail' => "Karberunê binun ra ''e-mail''i fael ke",
+'prefs-searchoptions' => 'Alternatifê cıcêraişi',
+'prefs-namespaces' => 'Caê namey',
+'defaultns' => 'Halo bin de zerrê nê caunê namey de cıfeteliye:',
+'default' => 'ihmal',
+'prefs-files' => 'Dosyey',
+'youremail' => 'E-poste:',
+'username' => 'Namê karberi:',
+'uid' => 'Kamiya karberi:',
+'prefs-memberingroups' => 'Ezaê de {{PLURAL:$1|gruba|grubunê}}:',
+'yourrealname' => 'Namo rastıkên:',
+'yourlanguage' => 'Zon:',
+'yourvariant' => 'Varyant:',
+'yournick' => 'İmza:',
+'badsig' => "İmza kala nêvêrdiye.
+Etiketê ''HTML''i qontrol ke.",
+'badsiglength' => 'İmza to zaf derga.
+Gunê $1 {{PLURAL:$1|herfe|herfun}} ra senık bo.',
+'yourgender' => 'Cınsiyet:',
+'gender-male' => 'Cüamêrd',
+'gender-female' => 'Cüanıke',
+'email' => 'E-poste',
+'prefs-help-realname' => 'Namo rastıkên serbesto.
+Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
+'prefs-help-email-required' => 'Adresa emaili lazıma.',
+'prefs-signature' => 'İmza',
+'prefs-diffs' => 'Ferqi',
+
+# User rights
+'userrights' => 'İdarê hequnê karberi',
+'userrights-lookup-user' => 'Komunê karberun idare ke',
+'userrights-user-editname' => 'Jü namê karberi bıdê:',
+'editusergroup' => 'Komunê karberun bıvurne',
+'editinguser' => "Hequnê karberê '''[[User:$1|$1]]'''i vurnais ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Komunê karberun bıvurne',
+'saveusergroups' => 'Komunê karberun qeyd ke',
+'userrights-groupsmember' => 'Ezaê de:',
+'userrights-reason' => 'Sebeb:',
+
+# Groups
+'group' => 'Kom:',
+'group-user' => 'Karberi',
+'group-bot' => 'Boti',
+'group-sysop' => 'İdarekeri',
+'group-bureaucrat' => 'Burokrati',
+'group-all' => '(pêro)',
+
+'group-user-member' => 'Karber',
+'group-bot-member' => 'Bot',
+'group-sysop-member' => 'İdareker',
+'group-bureaucrat-member' => 'Burokrat',
+
+'grouppage-user' => '{{ns:project}}:Karberi',
+'grouppage-bot' => '{{ns:project}}:Boti',
+'grouppage-sysop' => '{{ns:project}}:İdarekeri',
+'grouppage-bureaucrat' => '{{ns:project}}:Burokrati',
+
+# Rights
+'right-read' => 'Pelu bıwane',
+'right-edit' => 'Pelu bıvurne',
+'right-move' => 'Pelu bere',
+'right-movefile' => 'Dosyu bere',
+'right-upload' => 'Dosyu bar ke',
+'right-delete' => 'Pelu bıestere',
+'right-undelete' => 'Esterıtena na pele peyser bıcê',
+
+# User rights log
+'rightslog' => 'Qeydê hequnê karberi',
+'rightslogtext' => 'No jü qeydê vurnaisê hequnê karberio.',
+'rightslogentry' => 'selahiyetê $1i $2 ra vurniya be $3i',
+'rightsnone' => '(qet jü)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'na pele bıwane',
+'action-edit' => 'na pele bıvurne',
+'action-createpage' => 'pelu bıaferne',
+'action-createtalk' => 'pelunê hurênaişi bıaferne',
+'action-createaccount' => 'na hesabê karberi bıaferne',
+'action-move' => 'na pele bere',
+'action-movefile' => 'na dosya bere',
+'action-upload' => 'na dosya bar ke',
+'action-delete' => 'na pele bıestere',
+'action-undelete' => 'na pele meestere',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|tedil|tedili}}',
+'recentchanges' => 'Vurnaisê peyêni',
+'recentchanges-legend' => 'Alternatifê vurnaisunê peyênu',
+'recentchanges-feed-description' => 'Na weiyekerdena wiki de vurnaisê tewrpeyêne ke biyê ine teqib ke.',
+'recentchanges-label-legend' => 'Arezekerdeni: $1.',
+'recentchanges-legend-newpage' => '$1 - pela newiye',
+'recentchanges-legend-minor' => '$1 vurnaiso qızkek',
+'recentchanges-legend-bot' => '$1 - vurnaisê boti',
+'rcnote' => "Cêr {{PLURAL:$1|'''1''' vurnaiso peyên|'''$1''' vurnaisê peyêni}} be {{PLURAL:$2|roza peyêne|'''$2''' rozunê peyênunê}} $5, $4 ra estê.",
+'rclistfrom' => '$1 ra hata nıka vurnaisunê newu bıasne',
+'rcshowhideminor' => '$1 vurnaisê qızkeki',
+'rcshowhidebots' => 'botê $1i',
+'rcshowhideliu' => '$1 karberê qeydbiyaey',
+'rcshowhideanons' => '$1 karberê anonimi',
+'rcshowhidemine' => '$1 vurnaisê mı',
+'rclinks' => '$1 vurnaisunê peyênunê $2 rozunê<br />$3 peyênun bıasne',
+'diff' => 'ferq',
+'hist' => 'ver',
+'hide' => 'Bınımne',
+'show' => 'Bıasne',
+'minoreditletter' => 'q',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Tefsilatu bıasne (JavaScript lazımo)',
+'rc-enhanced-hide' => 'Tefsilatu bınımne',
+
+# Recent changes linked
+'recentchangeslinked' => 'Ney sero vurnaene',
+'recentchangeslinked-title' => 'Heqa "$1"i de vurnais',
+'recentchangeslinked-backlink' => '← $1',
+'recentchangeslinked-summary' => "Lista cêrêne, pela bêlikerdiye rê (ya ki karberunê kategoriya bêlikerdiye rê) pelunê girêdaoğu de lista de vurnaisê peyênuna.
+[[Special:Watchlist|Lista sımawa şêrkedişi de]] peli be nusto '''qolınd''' bêli kerdê.",
+'recentchangeslinked-page' => 'Namê pele:',
+'recentchangeslinked-to' => 'Hurêndia pela ke yena daene, vurnaisunê pelunê ke dae ra girêdaiyê, inu bıasne',
+
+# Upload
+'upload' => 'Dosya bar ke',
+'uploadbtn' => 'Dosya bar ke',
+'reuploaddesc' => 'Bar-kerdene bıtexelne u racêre ra formê bar-kerdene',
+'uploadnologin' => 'Ede cı nêkotê',
+'uploadnologintext' => 'Sıma gunê [[Special:UserLogin|cı kuyê]] ke dosyeun bar kerê.',
+'upload_directory_missing' => "İndeksê bar-kerdena ($1)i çino u terefê ''webserver''i ra nêşikino ke bıaferiyo.",
+'upload_directory_read_only' => "İndeksê bar-kerdena ($1)i terefê ''webserver''i nênuşino.",
+'uploaderror' => 'Xeta bar-kerdene',
+'uploadlog' => 'qeydê barkerdene',
+'uploadlogpage' => 'Qeydê dosya barkerdene',
+'filename' => 'Namê dosya',
+'filedesc' => 'Xulasa',
+'fileuploadsummary' => 'Xulasa:',
+'filereuploadsummary' => 'Vurnaisê dosya:',
+'filestatus' => 'Halê heqa telifi:',
+'filesource' => 'Çıme:',
+'uploadedfiles' => 'Dosyê barkerdey',
+'savefile' => 'Dosya qeyd ke',
+'uploadedimage' => '"[[$1]]" bar bi',
+'upload-source' => 'Dosya çımey',
+'sourcefilename' => 'Namê dosya çımey:',
+'watchthisupload' => 'Na dosya de şêr ke',
+
+# Special:ListFiles
+'imgfile' => 'dosya',
+'listfiles' => 'Lista dosya',
+'listfiles_date' => 'Tarix',
+'listfiles_name' => 'Name',
+'listfiles_user' => 'Karber',
+
+# File description page
+'file-anchor-link' => 'Dosya',
+'filehist' => 'Tarixê dosya',
+'filehist-help' => "Serba diyaena viartê dosya tarixê ke qısımê tarix/zeman'i derê inu bıteqne.",
+'filehist-deleteone' => 'bıestere',
+'filehist-current' => 'nıkaên',
+'filehist-datetime' => 'Tarix/Dem',
+'filehist-thumb' => 'Resmo qızkek',
+'filehist-thumbtext' => 'Halo qızkek be versiyonê roza $1ine',
+'filehist-user' => 'Karber',
+'filehist-dimensions' => 'Budi',
+'filehist-filesize' => 'Gırşênia dosya',
+'filehist-comment' => 'Areze-kerdene',
+'imagelinks' => 'Girê dosya',
+'linkstoimage' => 'Ano {{PLURAL:$1|girê pele|$1 girê pelu}} be na dosya:',
+'sharedupload' => 'Na dosya depoê $1 rawa u beno ke procunê binu de gurenina.',
+'uploadnewversion-linktext' => 'Dosya de newiye bar ke',
+'shared-repo-from' => '$1 ra',
+
+# File reversion
+'filerevert-comment' => 'Arezekerdene:',
+'filerevert-submit' => 'Raçarne',
+
+# File deletion
+'filedelete' => 'Bıestere $1',
+'filedelete-legend' => 'Dosya bıestere',
+'filedelete-submit' => 'Bıestere',
+'filedelete-reason-otherlist' => 'Sebebo bin',
+
+# MIME search
+'download' => 'bar ke',
+
+# Statistics
+'statistics' => 'İstatistiki',
+'statistics-pages' => 'Peli',
+
+'brokenredirects-edit' => 'bıvurne',
+'brokenredirects-delete' => 'bıestere',
+
+'withoutinterwiki-submit' => 'Bıasne',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
+'ncategories' => '$1 {{PLURAL:$1|kategoriye|kategoriy}}',
+'nlinks' => '$1 {{PLURAL:$1|gire|girey}}',
+'nmembers' => '$1 {{PLURAL:$1|eza|ezay}}',
+'nrevisions' => '$1 {{PLURAL:$1|çım-ra-viarnais|çım-ra-viarnaişi}}',
+'nviews' => '$1 {{PLURAL:$1|vênais|vênaişi}}',
+'uncategorizedpages' => 'Pelê kategorizenêkerdey',
+'prefixindex' => 'Peli pêro be verbend',
+'shortpages' => 'Pelê kılmi',
+'longpages' => 'Pelê dergi',
+'listusers' => 'Lista karberi',
+'newpages' => 'Pelê newey',
+'newpages-username' => 'Namê karberi:',
+'ancientpages' => 'Pelê khanêri',
+'move' => 'Bere',
+'movethispage' => 'Na pele bere',
+'pager-newer-n' => '{{PLURAL:$1|1 newêr|$1 newêri}}',
+'pager-older-n' => '{{PLURAL:$1|1 khanêr|$1 khanêri}}',
+
+# Book sources
+'booksources' => 'Çımê kıtabun',
+'booksources-search-legend' => 'Serba çımeunê kıtabu cıfeteliye',
+'booksources-go' => 'So',
+
+# Special:Log
+'specialloguserlabel' => 'Karber:',
+'speciallogtitlelabel' => 'Sernuste:',
+'log' => 'Qeydi',
+
+# Special:AllPages
+'allpages' => 'Peli pêro',
+'alphaindexline' => '$1 bere $2',
+'prevpage' => 'Pela verêne ($1)',
+'allpagesfrom' => 'Pelê ke be na herfe dest niyo pıra bıasne:',
+'allpagesto' => 'Pelunê ke be na herfe qedinê bıasne:',
+'allarticles' => 'Peli pêro',
+'allpagessubmit' => 'So',
+
+# Special:Categories
+'categories' => 'Kategoriy',
+
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'iştıraki',
+
+# Special:LinkSearch
+'linksearch' => 'Girê teberi',
+
+# Special:ListUsers
+'listusers-submit' => 'Bıasne',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Qeydê karberiê newey',
+'newuserlog-create-entry' => 'Hesabê karberê newey',
+
+# Special:ListGroupRights
+'listgrouprights-group' => 'Kome',
+'listgrouprights-members' => '(lista azau)',
+
+# E-mail user
+'emailuser' => 'Nê karberi rê e-poste bırusne',
+'emailsend' => 'Bırusne',
+
+# Watchlist
+'watchlist' => 'Pela mına şêrkerdene',
+'mywatchlist' => 'Lista mına şêrkerdışi',
+'watchlistfor' => "(serba '''$1''')",
+'addedwatch' => 'Kerd be lista şêrkerdişi ser',
+'addedwatchtext' => "Pela \"[[:\$1]]\"i ilawe biye be [[Special:Watchlist|pela şêrkerdişi]].
+Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista, u pele [[Special:RecentChanges|lista vurnaisunê peyênu]] de '''qolınd''' asena ke cı ra asan weçiniyo.",
+'removedwatch' => 'Lista şêrkerdişi ra vet',
+'removedwatchtext' => 'Na pele "[[:$1]]" [[Special:Watchlist|lista tuya şêrkerdişi]] ra esteriya.',
+'watch' => 'Şêr ke',
+'watchthispage' => 'Na pele de şêr ke',
+'unwatch' => 'Endi şêr meke',
+'watchlist-details' => 'Pelunê hurênaişi ra qêri {{PLURAL:$1|$1 pele lista şêrkerdişi dera|$1 peli lista şêrkerdişi derê}}.',
+'wlshowlast' => '$1 saetunê $2 rozunê peyênu bıasne $3',
+'watchlist-options' => 'Alternatifê lista şêrkerdene',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Şêr ke…',
+'unwatching' => 'Şêr meke…',
+
+# Delete
+'deletepage' => 'Pele bıestere',
+'confirmdeletetext' => 'Tı hawo kena ke jü pele be tarixê dae pêro bıne ra bıesterê.
+Eke ferqê neticê na kerdene de bena u no kar be gorê [[{{MediaWiki:Policy-url}}|qeydunê esterıtene]] beno, wa gurêy tesdiq ke.',
+'actioncomplete' => 'Kar bi temam',
+'deletedtext' => '"<nowiki>$1</nowiki>" esteriya.
+Serba diyaena esterıteyunê peyênu $2 bıvêne.',
+'deletedarticle' => '"[[$1]]" esterıt',
+'dellogpage' => 'Qeydê esterıtene',
+'deletecomment' => 'Sebeb:',
+'deleteotherreason' => 'Sebebo bin/ilaweki:',
+'deletereasonotherlist' => 'Sebebo bin',
+
+# Rollback
+'rollbacklink' => 'peyser bia',
+
+# Protect
+'protectlogpage' => 'Qeydê seveknaene',
+'protectedarticle' => '"[[$1]]" sevekna',
+'modifiedarticleprotection' => 'serba "[[$1]]" sewiya seveknaene vurriye',
+'protectcomment' => 'Sebeb:',
+'protectexpiry' => 'Tarixê qediyaene:',
+'protect_expiry_invalid' => 'Tarixê qediyaena nêvêreno.',
+'protect_expiry_old' => 'Waxtê gurênaena peyêna vêrdiye.',
+'protect-text' => "Tı şikina halê seveknaena pela '''<nowiki>$1</nowiki>'''i ita bıvênê u bıvurnê.",
+'protect-locked-access' => "Hesabê karberê to vurnaisê sewiya seveknaena rê selahiyetdar niyo.
+Eyarê pela '''$1'''ina vêrdey nêyê:",
+'protect-cascadeon' => 'Na pele na sate sevekiya, çıke {{PLURAL:$1|na pele de|nê pelu de}} sevekiyaena qedemeine biya feal.
+Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedemeine rê tesirê ho nêbeno.',
+'protect-default' => 'Destur bıde be karberu pêrune',
+'protect-fallback' => 'Desturê "$1"i lazımo',
+'protect-level-autoconfirmed' => 'Karberunê newun u qeydnêbiyaoğu kilıt ke',
+'protect-level-sysop' => 'Teyna idarekeri',
+'protect-summary-cascade' => 'qedemein',
+'protect-expiring' => 'tarixê qediyaene $1 (UTC)',
+'protect-cascade' => 'Pelê ke na pele derê bısevekne (seveknaena qedemeine)',
+'protect-cantedit' => 'Tı nêşikina sinorê kilıtbiyaena na pele bıvurnê, çıke desturê to be vurnaene çino.',
+'restriction-type' => 'Destur:',
+'restriction-level' => 'Sinorê desturi:',
+
+# Undelete
+'undeletebtn' => 'Peyser bia',
+'undeletelink' => 'bıvêne/peyser bia',
+'undeletedarticle' => 'peyser ard "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Caê namey:',
+'invert' => 'Weçinıtu ra qêri bıasne',
+'blanknamespace' => '(Ser)',
+
+# Contributions
+'contributions' => 'İştırakê karberi',
+'contributions-title' => '$1 de iştırakê karberi',
+'mycontris' => 'İştırakê mı',
+'contribsub2' => 'Serba $1 ($2)',
+'uctop' => '(ser)',
+'month' => 'Asme ra (u ravêr):',
+'year' => 'Serre ra (u ravêr):',
+
+'sp-contributions-newbies' => 'Teyna iştırakunê neweqeydbiyaoğu basne',
+'sp-contributions-blocklog' => 'qeydê engeli',
+'sp-contributions-search' => 'Ebe iştıraku cı feteliye',
+'sp-contributions-username' => 'IP ya ki karber:',
+'sp-contributions-submit' => 'Cıfeteliye',
+
+# What links here
+'whatlinkshere' => 'Çı itay rê gırê beno',
+'whatlinkshere-title' => 'Pelê ke be "$1"i bestninê pa',
+'whatlinkshere-page' => 'Pele:',
+'whatlinkshere-backlink' => '← $1',
+'linkshere' => "Ni pelgi '''[[:$1]]'''i asnenê:",
+'nolinkshere' => "Pelgê ke '''[[:$1]]'''i asnenê çinê.",
+'isredirect' => 'pela ciheti',
+'istemplate' => 'ilawekerdis',
+'isimage' => 'girê sıkıli',
+'whatlinkshere-prev' => '{{PLURAL:$1|verêni|verên $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|tepiyaên|tepiyaên $1}}',
+'whatlinkshere-links' => '← girê beno',
+'whatlinkshere-hideredirs' => 'peyser sono $1',
+'whatlinkshere-hidetrans' => 'İlawekerdê çaprazi $1',
+'whatlinkshere-hidelinks' => '$1 girey',
+'whatlinkshere-filters' => 'Filtrey',
+
+# Block/unblock
+'blockip' => 'Karberi kilıt ke',
+'ipboptions' => '2 saeti:2 hours,1 roze:1 day,3 roji:3 days,1 hefte:1 week,2 heftey:2 weeks,1 asme:1 month,3 asmi:3 months,6 asmi:6 months,1 serre:1 year,bêmıdet:infinite',
+'ipblocklist' => 'Adresê IPê kilıtbiyaey u namê karberu',
+'blocklink' => 'kilıt ke',
+'unblocklink' => 'ra ke',
+'change-blocklink' => 'mani bıvurne',
+'contribslink' => 'iştıraki',
+'autoblocker' => 'Sıma otomatikmen kılit biy, çıke adresa sımawa \'\'IP\'\'y terefê "[[User:$1|$1]]" gurenina.
+Sebebê kılit-biyaena $1\'i: "$2"o',
+'blocklogpage' => 'Protokolê kilıti',
+'blocklogentry' => '[[$1]] hata peyê $2 $3ine kilıt bi',
+'reblock-logentry' => 'kilıt-kerdena [[$1]]i hata peyê $2 $3ine vurnê',
+'blocklogtext' => "No jü protokolê faeliyetê kilıt- u rakerdena karberuno.
+Otomatikmen kilıt biyaiyê adresê ''IP''y lista de çinê.
+Serba men- u kilıt-biyaene nıkaêne qaytê [[Special:IPBlockList|lista kilıt-kerdena ''IP''y]] ke.",
+'unblocklogentry' => "kilıt-kerdena $1'i",
+'block-log-flags-anononly' => 'teyna karberê bênamey',
+'block-log-flags-nocreate' => 'afernaena hesabi qapan biye',
+'block-log-flags-noautoblock' => 'kilıto otomatik qapan bi',
+'block-log-flags-noemail' => 'e-mail kilıt bi',
+'block-log-flags-nousertalk' => 'pela hurênaişi ho nêşikina bıvurnê',
+'block-log-flags-angry-autoblock' => 'kilıto otomatiko qewetın bi ra',
+'range_block_disabled' => 'Qabılıyetê idarekeri be afernaena komuna têdine qapan bi.',
+'ipb_expiry_invalid' => 'Xêlê zeman nêvêreno.',
+
+# Move page
+'movepagetext' => "Ebe gurênaena formê cêrêni namê jü pele vurino, qeydê cıyê verêni pêro tede sonê be namê newey ser.
+Nameo khan jü pela de cihetiê be namê newey cêna.
+Tı şikina ita de cihetu otomatikman hetê namê oricinali ser rocane kerê.
+Eke tı nêwazena otomatikman bıkerê, gunê [[Special:DoubleRedirects|cihetunê çıftu]] ya ki [[Special:BrokenRedirects|cihetunê nêvêrdeyu]] pêroine be ho duz kerê.
+Ho vira meke ke be na vurnaiso ke tı kena, gurênaisê girêu be caunê rastu pêroine ra tı mesula.
+
+Diqet ke, namê newey de hora ke jü madde esto, vurnaisê namey '''nêbeno''', wa no ke thalo ya ki jü cihetiserberdiso u vurnaisê huyo verên çino. No yeno na mana ke tı şikina namê jü pele peyser bıcêrê, koti ra ke namê ae vuriyo, beno ke to ğelet kerd u zobina ki qarısê pela de bine nêbena.
+
+'''Teme!'''
+No vurnais beno ke serba jü pela populere neticunê nêbiyau biaro meydan;
+kerem ke, verê vurnaişi neticunê biyau bia be çımu ver.",
+'movepagetalktext' => "Na pela hurênaişia ke tedera otomatikmen kırışina be namê newey, hama nê halu ra '''qêri''':
+*Jü pela hurênaişia pırre bınê namê newey de hora esta, ya ki
+*Qutiya bınêne to nêçinıte we.
+
+Nê halu de, tı gunê pele ebe dest berê ya ki ser kerê eke wajiye.",
+'movearticle' => 'Pele bere:',
+'newtitle' => 'Ebe nameo newe:',
+'move-watch' => 'Na pele de şêr ke',
+'movepagebtn' => 'Pele bere',
+'pagemovedsub' => 'Vurnaena namey biye temam',
+'movepage-moved' => '\'\'\'"$1" berd be pela "$2"\'\'\'',
+'articleexists' => 'Pelê da ebe nê namey çina, ya ki nameo ke çiniyo we nêvêreno.
+Kerem ke, nameo de bin bıcerrebne.',
+'talkexists' => "'''Pele be ho ebe mıweffeq kırışiye, hema pela hurênaişi nêşikiye ke bıkırışiyo, çıke bınê na namey de hora jüye esta.
+Kerem ke, zerreki ebe ho dest bere.'''",
+'movedto' => 'berd be',
+'movetalk' => 'Pela hurênaişiê alaqedare bere',
+'1movedto2' => '[[$1]] berd be [[$2]]',
+'1movedto2_redir' => 'serrêza [[$1]]ine berde be pela [[$2]]ine',
+'movelogpage' => 'Qeydê berdene',
+'movereason' => 'Sebeb:',
+'revertmove' => 'raçarnaene',
+
+# Export
+'export' => 'Pelu qeyd ke',
+
+# Namespace 8 related
+'allmessages' => 'Mesacê sistemi',
+
+# Thumbnails
+'thumbnail-more' => 'Gırs ke',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Pela sımawa karberi',
+'tooltip-pt-mytalk' => 'Pela sımawa hurênaişi',
+'tooltip-pt-preferences' => 'Tercihê mı',
+'tooltip-pt-watchlist' => 'Lista pelunê ke to guretê şêrkerdene',
+'tooltip-pt-mycontris' => 'Lista iştıraqunê sıma',
+'tooltip-pt-login' => 'Serba cıkotene sıma rê sılaiya; hama, na zeruriye niya',
+'tooltip-pt-anonlogin' => 'Serba cıkotene sıma rê sılaiya, hama na zeruriye niya.',
+'tooltip-pt-logout' => 'Veciye',
+'tooltip-ca-talk' => 'Pela tedeesteu sero hurênais',
+'tooltip-ca-edit' => 'Tı şikina na pele bıvurnê.
+Kerem ke, qeydkerdene ra ver gozaga verqayti bıgurene.',
+'tooltip-ca-addsection' => 'Jü qısımo newe rake',
+'tooltip-ca-viewsource' => 'Na pele seveknaiya.
+Tı şikina çımunê dae bıvênê',
+'tooltip-ca-history' => 'Versiyonê verênê na pele',
+'tooltip-ca-protect' => 'Na pele bısevekne',
+'tooltip-ca-delete' => 'Na pele bıestere',
+'tooltip-ca-move' => 'Namê na pele bıvurne',
+'tooltip-ca-watch' => 'Na pele bıcê lista huya şêrkerdene',
+'tooltip-ca-unwatch' => 'Na pele lista huya şêrkerdene ra wedare',
+'tooltip-search' => 'Zerrê {{SITENAME}} de cıfeteliye',
+'tooltip-search-go' => 'Ebe ni namê tami so jü pela ke esta',
+'tooltip-search-fulltext' => 'Serba ni meqaley pelu seha ke',
+'tooltip-p-logo' => 'Pela Seri',
+'tooltip-n-mainpage' => 'Pela Seri bıvêne',
+'tooltip-n-mainpage-description' => 'Pela Seri bıvêne',
+'tooltip-n-portal' => 'Heqa procey de, çı şikina bıvırazê, çı koti vênino',
+'tooltip-n-currentevents' => 'Vurnaisunê peyênu sero melumatê pey bıvêne',
+'tooltip-n-recentchanges' => 'Wiki de lista vurnaisunê peyênu',
+'tooltip-n-randompage' => 'Pelê da rastamaiye bar ke',
+'tooltip-n-help' => 'Caê doskerdene',
+'tooltip-t-whatlinkshere' => 'Lista pelunê wikia pêroina ke ita girê bena',
+'tooltip-t-recentchangeslinked' => 'Vurnaisê peyênê pelunê ke na pela ra girê biyê',
+'tooltip-feed-rss' => 'Qutê RSSê na pele',
+'tooltip-feed-atom' => 'Qutê atomê na pele',
+'tooltip-t-contributions' => 'Lista iştırakunê ni karberi bıvêne',
+'tooltip-t-emailuser' => 'Jü e-mail ni karberi rê bırusne',
+'tooltip-t-upload' => 'Dosya bar ke',
+'tooltip-t-specialpages' => 'Lista pelunê xasunê pêroinu',
+'tooltip-t-print' => 'Nımunê kopyakerdena na pele',
+'tooltip-t-permalink' => 'Girêo daimi be na versiyonê pele',
+'tooltip-ca-nstab-main' => 'Pela tede esteu bıvêne',
+'tooltip-ca-nstab-user' => 'Pela karberi bıvêne',
+'tooltip-ca-nstab-media' => 'Pela medya bıvêne',
+'tooltip-ca-nstab-special' => 'Na jü pelê da xususiya, sıma nêşikinê nae bıvurnê',
+'tooltip-ca-nstab-project' => 'Pela procey bıvêne',
+'tooltip-ca-nstab-image' => 'Pela dosya bıvêne',
+'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bıvêne',
+'tooltip-ca-nstab-template' => 'Nımuney bıvêne',
+'tooltip-ca-nstab-help' => 'Pela phoşti bıvêne',
+'tooltip-ca-nstab-category' => 'Pela kategoriye bıvêne',
+'tooltip-minoredit' => 'Ney jê vurnaiso qıc isaret ke',
+'tooltip-save' => 'Vurnaisunê ho qeyd ke',
+'tooltip-preview' => 'Kerem ke, vurnaisunê ho qeyd-kerdene ra ravêr be verqayt bıasne!',
+'tooltip-diff' => 'Kamci vurnaişi ke to meqale de kerdê, naine bıasne.',
+'tooltip-compareselectedversions' => 'Ferqunê wertê ni dı nımınunê weçinıtu bıvêne.',
+'tooltip-watch' => 'Na pele lista huya şêrkerdişi ser ke',
+'tooltip-recreate' => 'Na pele esterıte bo ki, nae oncia bıaferne',
+'tooltip-upload' => 'Dest be bar-kerdene ke',
+'tooltip-rollback' => '"Peyser bia" ebe jü tık pela iştırak(un)ê peyên|i(u) peyser ano.',
+'tooltip-undo' => '"Peyser" ni vurnaişi peyser ano u modusê verqayt de vurnaisê formi keno ra.
+Têser-kerdena jü sebebi rê xulasa de imkan dano cı.',
+
+# Stylesheets
+'common.css' => '/* CSSo ke itaro, serba çermu pêroine gurenino */',
+
+# Math errors
+'math_failure' => 'Analiz de xeta',
+'math_unknown_error' => 'xeta nêzanaiye',
+'math_unknown_function' => 'fonksiyono nêzanae',
+'math_lexing_error' => 'xeta grameri',
+'math_syntax_error' => 'xeta cumla',
+'math_image_error' => "Werênaisê ''PNG''y de xeta biye;
+enstale-kerdena ''latex'', ''dvips'', ''gs'', u ''convert''i qontrol ke",
+'math_bad_tmpdir' => "Sıma nêşikinê indeksê ''math temp''i de bınusê ya ki bıafernê",
+'math_bad_output' => 'Sıma nêşikinê indeksê formulunê matematiki de bınusê ya ki bıafernê',
+'math_notexvc' => "''Texvc''o gurênae çino;
+Serba areze-kerdene qaytê ''math/README''y ke.",
+
+# Browsing diffs
+'previousdiff' => '← Vurnaiso khanêr',
+'nextdiff' => 'Vurnaena newêre →',
+
+# Media information
+'file-info-size' => '($1 × $2 piksel, gırsênia dosya: $3, MIME tipê cı: $4)',
+'file-nohires' => '<small>Tewrêna berz rovıleşiyaene nêbena.</small>',
+'svg-long-desc' => '(Dosya SVGy, seha ke $1 × $2 pixels, gırşênia dosya: $3)',
+'show-big-image' => 'Rovıleşiyaena tame',
+'show-big-image-thumb' => '<small>Gırsênia verqayti: $1 × $2 piksel</small>',
+
+# Bad image list
+'bad_image_list' => 'Sıkılo umumi niaro:
+
+Teyna çiyo ke beno lista (rezê ke be * dest kenê cı) çımun ver de vênino.
+Jü rêze de girêo sıftein gunê girêo de dosya xırabıne bo.
+Na rêze de her girêo bin jê istisna vênino, yanê pelê ke dosya beno ke sero rêzbiyae asena.',
+
+/*
+Short names for language variants used for language conversion links.
+To disable showing a particular link, set it to 'disable', e.g.
+'variantname-zh-sg' => 'disable',
+Variants for Chinese language
+*/
+'variantname-zh-hans' => 'hans',
+'variantname-zh-hant' => 'hant',
+'variantname-zh-cn' => 'cn',
+'variantname-zh-tw' => 'tw',
+'variantname-zh-hk' => 'hk',
+'variantname-zh-mo' => 'mo',
+'variantname-zh-sg' => 'sg',
+'variantname-zh-my' => 'mın',
+'variantname-zh' => 'zh',
+
+# Variants for Serbian language
+'variantname-sr-ec' => 'sr-ek',
+'variantname-sr-el' => 'sr-el',
+'variantname-sr' => 'sr',
+
+# Variants for Kazakh language
+'variantname-kk-kz' => 'kk-kz',
+'variantname-kk-tr' => 'kk-tr',
+'variantname-kk-cn' => 'kk-kn',
+'variantname-kk-cyrl' => 'kk-kırl',
+'variantname-kk-latn' => 'kk-latn',
+'variantname-kk-arab' => 'kk-areb',
+'variantname-kk' => 'kk',
+
+# Variants for Kurdish language
+'variantname-ku-arab' => 'ku-Areb',
+'variantname-ku-latn' => 'ku-Latn',
+'variantname-ku' => 'ku',
+
+# Variants for Tajiki language
+'variantname-tg-cyrl' => 'tg-Kırl',
+'variantname-tg-latn' => 'tg-Latn',
+'variantname-tg' => 'tg',
+
+# Metadata
+'metadata' => 'Daê seri',
+'metadata-help' => 'Na dosya de mıxtemelen melumatê ilawekerdeyê ke terefê kamera dicitale u cıfeteliyaoği ra darde biyê, estê.
+Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê newey khan mendê.',
+'metadata-expand' => 'Arezekerdu bıasne',
+'metadata-collapse' => 'Arezekerdu measne',
+'metadata-fields' => "Meydanê EXIF metadataê ke na pele de benê lista, pela resımasnaene de ke tabloê metadata gına waro, gureninê.
+İ bini zê ''saekerdoğu'' nıminê.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength",
+
+# External editor support
+'edit-externally' => 'Na dosya be mırecaetê de teberi bıvurne',
+'edit-externally-help' => '(Serba daêna melumati qaytê pelga [http://www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'pêro',
+'namespacesall' => 'pêro',
+'monthsall' => 'pêro',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Vurnaisunê alaqadaru bımısne',
+'watchlisttools-edit' => 'Lista şêrkerdene bıvêne u vıraze',
+'watchlisttools-raw' => 'Lista şêrkerdena xame vıraze',
+
+# Special:SpecialPages
+'specialpages' => 'Pelê xaşi',
+'specialpages-note' => '----
+* Pelê xususiyê normali.
+* <span class="mw-specialpagerestricted">Pelê xususiyê mehcuri.</span>',
+'specialpages-group-maintenance' => 'Tebliğê baxımi',
+'specialpages-group-other' => 'Pelê xususiyê bini',
+'specialpages-group-login' => 'Cıkotene / qeyd',
+'specialpages-group-changes' => 'Vurnais u protokolê pêyêni',
+'specialpages-group-media' => 'Raporê medya u bar-kerdey',
+'specialpages-group-users' => 'Karber u heqi',
+'specialpages-group-highuse' => 'Pelê jêdêr gurenaey',
+'specialpages-group-pages' => 'Lista pelun',
+'specialpages-group-pagetools' => 'Hacetê pele',
+'specialpages-group-wiki' => "Daê ''Wiki''y u haceti",
+'specialpages-group-redirects' => 'Newe-vırastena pelunê xususiyun',
+'specialpages-group-spam' => "Hacetê ''spam''i",
+
+# Special:BlankPage
+'blankpage' => 'Pela thale',
+
+);
diff --git a/languages/messages/MessagesKk_arab.php b/languages/messages/MessagesKk_arab.php
index e9dcb9f0..e5aeb353 100644
--- a/languages/messages/MessagesKk_arab.php
+++ b/languages/messages/MessagesKk_arab.php
@@ -60,11 +60,10 @@ $fallback8bitEncoding = 'windows-1256';
$namespaceNames = array(
NS_MEDIA => 'تاسپا',
NS_SPECIAL => 'ارنايى',
- NS_MAIN => '',
- NS_TALK => 'تالقىلاۋ',
+ NS_MAIN => '',
+ NS_TALK => 'تالقىلاۋ',
NS_USER => 'قاتىسۋشى',
NS_USER_TALK => 'قاتىسۋشى_تالقىلاۋى',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_تالقىلاۋى',
NS_FILE => 'سۋرەت',
NS_FILE_TALK => 'سۋرەت_تالقىلاۋى',
@@ -75,7 +74,7 @@ $namespaceNames = array(
NS_HELP => 'انىقتاما',
NS_HELP_TALK => 'انىقتاما_تالقىلاۋى',
NS_CATEGORY => 'سانات',
- NS_CATEGORY_TALK => 'سانات_تالقىلاۋى'
+ NS_CATEGORY_TALK => 'سانات_تالقىلاۋى',
);
$namespaceAliases = array(
@@ -190,131 +189,130 @@ $dateFormats = array(
* This array can be modified at runtime with the LanguageGetMagic hook
*/
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#REDIRECT', '#ايداۋ' ),
- 'notoc' => array( 0, '__مازمۇنسىز__', '__مسىز__', '__NOTOC__' ),
- 'nogallery' => array( 0, '__قويماسىز__', '__قسىز__', '__NOGALLERY__' ),
- 'forcetoc' => array( 0, '__مازمۇنداتقىزۋ__', '__مقىزۋ__', '__FORCETOC__' ),
- 'toc' => array( 0, '__مازمۇنى__', '__مزمن__', '__TOC__' ),
- 'noeditsection' => array( 0, '__بولىدىموندەمەۋ__', '__بولىموندەتكىزبەۋ__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( 1, 'اعىمداعىاي', 'CURRENTMONTH' ),
- 'currentmonthname' => array( 1, 'اعىمداعىاياتاۋى', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( 1, 'اعىمداعىايىلىكاتاۋى', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( 1, 'اعىمداعىايجىيىر', 'اعىمداعىايقىسقا', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( 1, 'اعىمداعىكۇن', 'CURRENTDAY' ),
- 'currentday2' => array( 1, 'اعىمداعىكۇن2', 'CURRENTDAY2' ),
- 'currentdayname' => array( 1, 'اعىمداعىكۇناتاۋى', 'CURRENTDAYNAME' ),
- 'currentyear' => array( 1, 'اعىمداعىجىل', 'CURRENTYEAR' ),
- 'currenttime' => array( 1, 'اعىمداعىۋاقىت', 'CURRENTTIME' ),
- 'currenthour' => array( 1, 'اعىمداعىساعات', 'CURRENTHOUR' ),
- 'localmonth' => array( 1, 'جەرگىلىكتىاي', 'LOCALMONTH' ),
- 'localmonthname' => array( 1, 'جەرگىلىكتىاياتاۋى', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( 1, 'جەرگىلىكتىايىلىكاتاۋى', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( 1, 'جەرگىلىكتىايجىيىر', 'جەرگىلىكتىايقىسقاشا', 'جەرگىلىكتىايقىسقا', 'LOCALMONTHABBREV' ),
- 'localday' => array( 1, 'جەرگىلىكتىكۇن', 'LOCALDAY' ),
- 'localday2' => array( 1, 'جەرگىلىكتىكۇن2', 'LOCALDAY2' ),
- 'localdayname' => array( 1, 'جەرگىلىكتىكۇناتاۋى', 'LOCALDAYNAME' ),
- 'localyear' => array( 1, 'جەرگىلىكتىجىل', 'LOCALYEAR' ),
- 'localtime' => array( 1, 'جەرگىلىكتىۋاقىت', 'LOCALTIME' ),
- 'localhour' => array( 1, 'جەرگىلىكتىساعات', 'LOCALHOUR' ),
- 'numberofpages' => array( 1, 'بەتسانى', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( 1, 'ماقالاسانى', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( 1, 'فايلسانى', 'NUMBEROFFILES' ),
- 'numberofusers' => array( 1, 'قاتىسۋشىسانى', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( 1, 'وڭدەمەسانى', 'تۇزەتۋسانى', 'NUMBEROFEDITS' ),
- 'pagename' => array( 1, 'بەتاتاۋى', 'PAGENAME' ),
- 'pagenamee' => array( 1, 'بەتاتاۋى2', 'PAGENAMEE' ),
- 'namespace' => array( 1, 'ەسىماياسى', 'NAMESPACE' ),
- 'namespacee' => array( 1, 'ەسىماياسى2', 'NAMESPACEE' ),
- 'talkspace' => array( 1, 'تالقىلاۋاياسى', 'TALKSPACE' ),
- 'talkspacee' => array( 1, 'تالقىلاۋاياسى2', 'TALKSPACEE' ),
- 'subjectspace' => array( 1, 'تاقىرىپبەتى', 'ماقالابەتى', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( 1, 'تاقىرىپبەتى2', 'ماقالابەتى2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( 1, 'تولىقبەتاتاۋى', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( 1, 'تولىقبەتاتاۋى2', 'FULLPAGENAMEE' ),
- 'subpagename' => array( 1, 'بەتشەاتاۋى', 'استىڭعىبەتاتاۋى', 'SUBPAGENAME' ),
- 'subpagenamee' => array( 1, 'بەتشەاتاۋى2', 'استىڭعىبەتاتاۋى2', 'SUBPAGENAMEE' ),
- 'basepagename' => array( 1, 'نەگىزگىبەتاتاۋى', 'BASEPAGENAME' ),
- 'basepagenamee' => array( 1, 'نەگىزگىبەتاتاۋى2', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( 1, 'تالقىلاۋبەتاتاۋى', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( 1, 'تالقىلاۋبەتاتاۋى2', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( 1, 'تاقىرىپبەتاتاۋى', 'ماقالابەتاتاۋى', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( 1, 'تاقىرىپبەتاتاۋى2', 'ماقالابەتاتاۋى2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( 0, 'حبر:', 'MSG:' ),
- 'subst' => array( 0, 'بادەل:', 'SUBST:' ),
- 'msgnw' => array( 0, 'ۋىيكىيسىزحبر:', 'MSGNW:' ),
- 'img_thumbnail' => array( 1, 'نوباي', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( 1, 'نوباي=$1', 'thumbnail=$1', 'thumb=$1'),
- 'img_right' => array( 1, 'وڭعا', 'وڭ', 'right' ),
- 'img_left' => array( 1, 'سولعا', 'سول', 'left' ),
- 'img_none' => array( 1, 'ەشقانداي', 'جوق', 'none' ),
- 'img_width' => array( 1, '$1 نۇكتە', '$1px' ),
- 'img_center' => array( 1, 'ورتاعا', 'ورتا', 'center', 'centre' ),
- 'img_framed' => array( 1, 'سۇرمەلى', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( 1, 'سۇرمەسىز', 'frameless' ),
- 'img_page' => array( 1, 'بەت=$1', 'بەت $1', 'page=$1', 'page $1' ),
- 'img_upright' => array( 1, 'تىكتى', 'تىكتىك=$1', 'تىكتىك $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( 1, 'جىييەكتى', 'border' ),
- 'img_baseline' => array( 1, 'تىرەكجول', 'baseline' ),
- 'img_sub' => array( 1, 'استىلىعى', 'است', 'sub'),
- 'img_super' => array( 1, 'ۇستىلىگى', 'ۇست', 'sup', 'super', 'sup' ),
- 'img_top' => array( 1, 'ۇستىنە', 'top' ),
- 'img_text_top' => array( 1, 'ماتىن-ۇستىندە', 'text-top' ),
- 'img_middle' => array( 1, 'ارالىعىنا', 'middle' ),
- 'img_bottom' => array( 1, 'استىنا', 'bottom' ),
- 'img_text_bottom' => array( 1, 'ماتىن-استىندا', 'text-bottom' ),
- 'int' => array( 0, 'ىشكى:', 'INT:' ),
- 'sitename' => array( 1, 'توراپاتاۋى', 'SITENAME' ),
- 'ns' => array( 0, 'ەا:', 'ەسىمايا:', 'NS:' ),
- 'localurl' => array( 0, 'جەرگىلىكتىجاي:', 'LOCALURL:' ),
- 'localurle' => array( 0, 'جەرگىلىكتىجاي2:', 'LOCALURLE:' ),
- 'server' => array( 0, 'سەرۆەر', 'SERVER' ),
- 'servername' => array( 0, 'سەرۆەراتاۋى', 'SERVERNAME' ),
- 'scriptpath' => array( 0, 'امىرجولى', 'SCRIPTPATH' ),
- 'grammar' => array( 0, 'سەپتىگى:', 'سەپتىك:', 'GRAMMAR:' ),
- 'notitleconvert' => array( 0, '__تاقىرىپاتىنتۇرلەندىرگىزبەۋ__', '__تاتجوق__', '__اتاۋالماستىرعىزباۋ__', '__ااباۋ__', '__NOTITLECONVERT__', '__NOTC__' ),
- 'nocontentconvert' => array( 0, '__ماعلۇماتىنتۇرلەندىرگىزبەۋ__', '__ماتجوق__', '__ماعلۇماتالماستىرعىزباۋ__', '__ماباۋ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( 1, 'اعىمداعىاپتاسى', 'اعىمداعىاپتا', 'CURRENTWEEK' ),
- 'currentdow' => array( 1, 'اعىمداعىاپتاكۇنى', 'CURRENTDOW' ),
- 'localweek' => array( 1, 'جەرگىلىكتىاپتاسى', 'جەرگىلىكتىاپتا', 'LOCALWEEK' ),
- 'localdow' => array( 1, 'جەرگىلىكتىاپتاكۇنى', 'LOCALDOW' ),
- 'revisionid' => array( 1, 'تۇزەتۋنومىرٴى', 'نۇسقانومىرٴى', 'REVISIONID' ),
- 'revisionday' => array( 1, 'تۇزەتۋكۇنى','نۇسقاكۇنى', 'REVISIONDAY' ),
- 'revisionday2' => array( 1, 'تۇزەتۋكۇنى2', 'نۇسقاكۇنى2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( 1, 'تۇزەتۋايى', 'نۇسقاايى', 'REVISIONMONTH' ),
- 'revisionyear' => array( 1, 'تۇزەتۋجىلى', 'نۇسقاجىلى', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( 1, 'تۇزەتۋۋاقىتىتاڭباسى', 'نۇسقاۋاقىتتۇيىندەمەسى', 'REVISIONTIMESTAMP' ),
- 'plural' => array( 0, 'كوپشەتۇرى:','كوپشە:', 'PLURAL:' ),
- 'fullurl' => array( 0, 'تولىقجايى:', 'تولىقجاي:', 'FULLURL:' ),
- 'fullurle' => array( 0, 'تولىقجايى2:', 'تولىقجاي2:', 'FULLURLE:' ),
- 'lcfirst' => array( 0, 'كا1:', 'كىشىارىپپەن1:', 'LCFIRST:' ),
- 'ucfirst' => array( 0, 'با1:', 'باسارىپپەن1:', 'UCFIRST:' ),
- 'lc' => array( 0, 'كا:', 'كىشىارىپپەن:', 'LC:' ),
- 'uc' => array( 0, 'با:', 'باسارىپپەن:', 'UC:' ),
- 'raw' => array( 0, 'قام:', 'RAW:' ),
- 'displaytitle' => array( 1, 'كورسەتىلەتىناتاۋ', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( 1, 'ق', 'R' ),
- 'newsectionlink' => array( 1, '__جاڭابولىمسىلتەمەسى__', '__NEWSECTIONLINK__' ),
- 'currentversion' => array( 1, 'باعدارلامانۇسقاسى', 'CURRENTVERSION' ),
- 'urlencode' => array( 0, 'جايدىمۇقامداۋ:', 'URLENCODE:' ),
- 'anchorencode' => array( 0, 'جاكىردىمۇقامداۋ', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( 1, 'اعىمداعىۋاقىتتۇيىندەمەسى', 'اعىمداعىۋاقىتتۇيىن', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( 1, 'جەرگىلىكتىۋاقىتتۇيىندەمەسى', 'جەرگىلىكتىۋاقىتتۇيىن', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( 1, 'باعىتبەلگىسى', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( 0, '#تىل:', '#LANGUAGE:' ),
- 'contentlanguage' => array( 1, 'ماعلۇماتتىلى', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( 1, 'ەسىمايابەتسانى:', 'ەابەتسانى:', 'ايابەتسانى:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( 1, 'اكىمشىسانى', 'NUMBEROFADMINS' ),
- 'formatnum' => array( 0, 'سانپىشىمى', 'FORMATNUM' ),
- 'padleft' => array( 0, 'سولعاىعىس', 'سولىعىس', 'PADLEFT' ),
- 'padright' => array( 0, 'وڭعاىعىس', 'وڭىعىس', 'PADRIGHT' ),
- 'special' => array( 0, 'ارنايى', 'special' ),
- 'defaultsort' => array( 1, 'ادەپكىسۇرىپتاۋ:', 'ادەپكىساناتسۇرىپتاۋ:', 'ادەپكىسۇرىپتاۋكىلتى:', 'ادەپكىسۇرىپ:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( 0, 'فايلمەكەنى:', 'FILEPATH:' ),
- 'tag' => array( 0, 'بەلگى', 'tag' ),
- 'hiddencat' => array( 1, '__جاسىرىنسانات__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( 1, 'ساناتتاعىبەتتەر', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( 1, 'بەتمولشەرى', 'PAGESIZE' ),
+ 'redirect' => array( '0', '#ايداۋ', '#АЙДАУ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__مازمۇنسىز__', '__مسىز__', '__МАЗМҰНСЫЗ__', '__МСЫЗ__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__قويماسىز__', '__قسىز__', '__ҚОЙМАСЫЗ__', '__ҚСЫЗ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__مازمۇنداتقىزۋ__', '__مقىزۋ__', '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__مازمۇنى__', '__مزمن__', '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__بولىدىموندەمەۋ__', '__بولىموندەتكىزبەۋ__', '__БӨЛІДІМӨНДЕМЕУ__', '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'اعىمداعىاي', 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'اعىمداعىاياتاۋى', 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'اعىمداعىايىلىكاتاۋى', 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'اعىمداعىايجىيىر', 'اعىمداعىايقىسقا', 'АҒЫМДАҒЫАЙЖИЫР', 'АҒЫМДАҒЫАЙҚЫСҚА', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'اعىمداعىكۇن', 'АҒЫМДАҒЫКҮН', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'اعىمداعىكۇن2', 'АҒЫМДАҒЫКҮН2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'اعىمداعىكۇناتاۋى', 'АҒЫМДАҒЫКҮНАТАУЫ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'اعىمداعىجىل', 'АҒЫМДАҒЫЖЫЛ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'اعىمداعىۋاقىت', 'АҒЫМДАҒЫУАҚЫТ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'اعىمداعىساعات', 'АҒЫМДАҒЫСАҒАТ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'جەرگىلىكتىاي', 'ЖЕРГІЛІКТІАЙ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'جەرگىلىكتىاياتاۋى', 'ЖЕРГІЛІКТІАЙАТАУЫ', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'جەرگىلىكتىايىلىكاتاۋى', 'ЖЕРГІЛІКТІАЙІЛІКАТАУЫ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'جەرگىلىكتىايجىيىر', 'جەرگىلىكتىايقىسقاشا', 'جەرگىلىكتىايقىسقا', 'ЖЕРГІЛІКТІАЙЖИЫР', 'ЖЕРГІЛІКТІАЙҚЫСҚАША', 'ЖЕРГІЛІКТІАЙҚЫСҚА', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'جەرگىلىكتىكۇن', 'ЖЕРГІЛІКТІКҮН', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'جەرگىلىكتىكۇن2', 'ЖЕРГІЛІКТІКҮН2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'جەرگىلىكتىكۇناتاۋى', 'ЖЕРГІЛІКТІКҮНАТАУЫ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'جەرگىلىكتىجىل', 'ЖЕРГІЛІКТІЖЫЛ', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'جەرگىلىكتىۋاقىت', 'ЖЕРГІЛІКТІУАҚЫТ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'جەرگىلىكتىساعات', 'ЖЕРГІЛІКТІСАҒАТ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'بەتسانى', 'БЕТСАНЫ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ماقالاسانى', 'МАҚАЛАСАНЫ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'فايلسانى', 'ФАЙЛСАНЫ', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'قاتىسۋشىسانى', 'ҚАТЫСУШЫСАНЫ', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'وڭدەمەسانى', 'تۇزەتۋسانى', 'ӨҢДЕМЕСАНЫ', 'ТҮЗЕТУСАНЫ', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'بەتاتاۋى', 'БЕТАТАУЫ', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'بەتاتاۋى2', 'БЕТАТАУЫ2', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ەسىماياسى', 'ЕСІМАЯСЫ', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ەسىماياسى2', 'ЕСІМАЯСЫ2', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'تالقىلاۋاياسى', 'ТАЛҚЫЛАУАЯСЫ', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'تالقىلاۋاياسى2', 'ТАЛҚЫЛАУАЯСЫ2', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'تاقىرىپبەتى', 'ماقالابەتى', 'ТАҚЫРЫПБЕТІ', 'МАҚАЛАБЕТІ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'تاقىرىپبەتى2', 'ماقالابەتى2', 'ТАҚЫРЫПБЕТІ2', 'МАҚАЛАБЕТІ2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'تولىقبەتاتاۋى', 'ТОЛЫҚБЕТАТАУЫ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'تولىقبەتاتاۋى2', 'ТОЛЫҚБЕТАТАУЫ2', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'بەتشەاتاۋى', 'استىڭعىبەتاتاۋى', 'БЕТШЕАТАУЫ', 'АСТЫҢҒЫБЕТАТАУЫ', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'بەتشەاتاۋى2', 'استىڭعىبەتاتاۋى2', 'БЕТШЕАТАУЫ2', 'АСТЫҢҒЫБЕТАТАУЫ2', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'نەگىزگىبەتاتاۋى', 'НЕГІЗГІБЕТАТАУЫ', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'نەگىزگىبەتاتاۋى2', 'НЕГІЗГІБЕТАТАУЫ2', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'تالقىلاۋبەتاتاۋى', 'ТАЛҚЫЛАУБЕТАТАУЫ', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'تالقىلاۋبەتاتاۋى2', 'ТАЛҚЫЛАУБЕТАТАУЫ2', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'تاقىرىپبەتاتاۋى', 'ماقالابەتاتاۋى', 'ТАҚЫРЫПБЕТАТАУЫ', 'МАҚАЛАБЕТАТАУЫ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'تاقىرىپبەتاتاۋى2', 'ماقالابەتاتاۋى2', 'ТАҚЫРЫПБЕТАТАУЫ2', 'МАҚАЛАБЕТАТАУЫ2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'حبر:', 'ХБР:', 'MSG:' ),
+ 'subst' => array( '0', 'بادەل:', 'БӘДЕЛ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'ۋىيكىيسىزحبر:', 'УИКИСІЗХБР:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'نوباي', 'нобай', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'نوباي=$1', 'нобай=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'وڭعا', 'وڭ', 'оңға', 'оң', 'right' ),
+ 'img_left' => array( '1', 'سولعا', 'سول', 'солға', 'сол', 'left' ),
+ 'img_none' => array( '1', 'ەشقانداي', 'جوق', 'ешқандай', 'жоқ', 'none' ),
+ 'img_width' => array( '1', '$1 نۇكتە', '$1 нүкте', '$1px' ),
+ 'img_center' => array( '1', 'ورتاعا', 'ورتا', 'ортаға', 'орта', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'سۇرمەلى', 'сүрмелі', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'سۇرمەسىز', 'сүрмесіз', 'frameless' ),
+ 'img_page' => array( '1', 'بەت=$1', 'بەت $1', 'бет=$1', 'бет $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'تىكتى', 'تىكتىك=$1', 'تىكتىك $1', 'тікті', 'тіктік=$1', 'тіктік $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'جىييەكتى', 'жиекті', 'border' ),
+ 'img_baseline' => array( '1', 'تىرەكجول', 'тірекжол', 'baseline' ),
+ 'img_sub' => array( '1', 'استىلىعى', 'است', 'астылығы', 'аст', 'sub' ),
+ 'img_super' => array( '1', 'ۇستىلىگى', 'ۇست', 'үстілігі', 'үст', 'super', 'sup' ),
+ 'img_top' => array( '1', 'ۇستىنە', 'үстіне', 'top' ),
+ 'img_text_top' => array( '1', 'ماتىن-ۇستىندە', 'мәтін-үстінде', 'text-top' ),
+ 'img_middle' => array( '1', 'ارالىعىنا', 'аралығына', 'middle' ),
+ 'img_bottom' => array( '1', 'استىنا', 'астына', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'ماتىن-استىندا', 'мәтін-астында', 'text-bottom' ),
+ 'int' => array( '0', 'ىشكى:', 'ІШКІ:', 'INT:' ),
+ 'sitename' => array( '1', 'توراپاتاۋى', 'ТОРАПАТАУЫ', 'SITENAME' ),
+ 'ns' => array( '0', 'ەا:', 'ەسىمايا:', 'ЕА:', 'ЕСІМАЯ:', 'NS:' ),
+ 'localurl' => array( '0', 'جەرگىلىكتىجاي:', 'ЖЕРГІЛІКТІЖАЙ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'جەرگىلىكتىجاي2:', 'ЖЕРГІЛІКТІЖАЙ2:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'سەرۆەر', 'СЕРВЕР', 'SERVER' ),
+ 'servername' => array( '0', 'سەرۆەراتاۋى', 'СЕРВЕРАТАУЫ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'امىرجولى', 'ӘМІРЖОЛЫ', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'سەپتىگى:', 'سەپتىك:', 'СЕПТІГІ:', 'СЕПТІК:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__تاقىرىپاتىنتۇرلەندىرگىزبەۋ__', '__تاتجوق__', '__اتاۋالماستىرعىزباۋ__', '__ااباۋ__', '__ТАҚЫРЫПАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__ТАТЖОҚ__', '__АТАУАЛМАСТЫРҒЫЗБАУ__', '__ААБАУ__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__ماعلۇماتىنتۇرلەندىرگىزبەۋ__', '__ماتجوق__', '__ماعلۇماتالماستىرعىزباۋ__', '__ماباۋ__', '__МАҒЛҰМАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__МАТЖОҚ__', '__МАҒЛҰМАТАЛМАСТЫРҒЫЗБАУ__', '__МАБАУ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'اعىمداعىاپتاسى', 'اعىمداعىاپتا', 'АҒЫМДАҒЫАПТАСЫ', 'АҒЫМДАҒЫАПТА', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'اعىمداعىاپتاكۇنى', 'АҒЫМДАҒЫАПТАКҮНІ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'جەرگىلىكتىاپتاسى', 'جەرگىلىكتىاپتا', 'ЖЕРГІЛІКТІАПТАСЫ', 'ЖЕРГІЛІКТІАПТА', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'جەرگىلىكتىاپتاكۇنى', 'ЖЕРГІЛІКТІАПТАКҮНІ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'تۇزەتۋنومىرٴى', 'نۇسقانومىرٴى', 'ТҮЗЕТУНӨМІРІ', 'НҰСҚАНӨМІРІ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'تۇزەتۋكۇنى', 'نۇسقاكۇنى', 'ТҮЗЕТУКҮНІ', 'НҰСҚАКҮНІ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'تۇزەتۋكۇنى2', 'نۇسقاكۇنى2', 'ТҮЗЕТУКҮНІ2', 'НҰСҚАКҮНІ2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'تۇزەتۋايى', 'نۇسقاايى', 'ТҮЗЕТУАЙЫ', 'НҰСҚААЙЫ', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'تۇزەتۋجىلى', 'نۇسقاجىلى', 'ТҮЗЕТУЖЫЛЫ', 'НҰСҚАЖЫЛЫ', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'تۇزەتۋۋاقىتىتاڭباسى', 'نۇسقاۋاقىتتۇيىندەمەسى', 'ТҮЗЕТУУАҚЫТЫТАҢБАСЫ', 'НҰСҚАУАҚЫТТҮЙІНДЕМЕСІ', 'REVISIONTIMESTAMP' ),
+ 'plural' => array( '0', 'كوپشەتۇرى:', 'كوپشە:', 'КӨПШЕТҮРІ:', 'КӨПШЕ:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'تولىقجايى:', 'تولىقجاي:', 'ТОЛЫҚЖАЙЫ:', 'ТОЛЫҚЖАЙ:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'تولىقجايى2:', 'تولىقجاي2:', 'ТОЛЫҚЖАЙЫ2:', 'ТОЛЫҚЖАЙ2:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'كا1:', 'كىشىارىپپەن1:', 'КӘ1:', 'КІШІӘРІППЕН1:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'با1:', 'باسارىپپەن1:', 'БӘ1:', 'БАСӘРІППЕН1:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'كا:', 'كىشىارىپپەن:', 'КӘ:', 'КІШІӘРІППЕН:', 'LC:' ),
+ 'uc' => array( '0', 'با:', 'باسارىپپەن:', 'БӘ:', 'БАСӘРІППЕН:', 'UC:' ),
+ 'raw' => array( '0', 'قام:', 'ҚАМ:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'كورسەتىلەتىناتاۋ', 'КӨРІНЕТІНТАҚЫРЫАПАТЫ', 'КӨРСЕТІЛЕТІНАТАУ', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'ق', 'Қ', 'R' ),
+ 'newsectionlink' => array( '1', '__جاڭابولىمسىلتەمەسى__', '__ЖАҢАБӨЛІМСІЛТЕМЕСІ__', '__NEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'باعدارلامانۇسقاسى', 'БАҒДАРЛАМАНҰСҚАСЫ', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'جايدىمۇقامداۋ:', 'ЖАЙДЫМҰҚАМДАУ:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'جاكىردىمۇقامداۋ', 'ЖӘКІРДІМҰҚАМДАУ', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'اعىمداعىۋاقىتتۇيىندەمەسى', 'اعىمداعىۋاقىتتۇيىن', 'АҒЫМДАҒЫУАҚЫТТҮЙІНДЕМЕСІ', 'АҒЫМДАҒЫУАҚЫТТҮЙІН', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'جەرگىلىكتىۋاقىتتۇيىندەمەسى', 'جەرگىلىكتىۋاقىتتۇيىن', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІНДЕМЕСІ', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІН', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'باعىتبەلگىسى', 'БАҒЫТБЕЛГІСІ', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#تىل:', '#ТІЛ:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'ماعلۇماتتىلى', 'МАҒЛҰМАТТІЛІ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'ەسىمايابەتسانى:', 'ەابەتسانى:', 'ايابەتسانى:', 'ЕСІМАЯБЕТСАНЫ:', 'ЕАБЕТСАНЫ:', 'АЯБЕТСАНЫ:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'اكىمشىسانى', 'ӘКІМШІСАНЫ', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'سانپىشىمى', 'САНПІШІМІ', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'سولعاىعىس', 'سولىعىس', 'СОЛҒАЫҒЫС', 'СОЛЫҒЫС', 'PADLEFT' ),
+ 'padright' => array( '0', 'وڭعاىعىس', 'وڭىعىس', 'ОҢҒАЫҒЫС', 'ОҢЫҒЫС', 'PADRIGHT' ),
+ 'special' => array( '0', 'ارنايى', 'арнайы', 'special' ),
+ 'defaultsort' => array( '1', 'ادەپكىسۇرىپتاۋ:', 'ادەپكىساناتسۇرىپتاۋ:', 'ادەپكىسۇرىپتاۋكىلتى:', 'ادەپكىسۇرىپ:', 'ӘДЕПКІСҰРЫПТАУ:', 'ӘДЕПКІСАНАТСҰРЫПТАУ:', 'ӘДЕПКІСҰРЫПТАУКІЛТІ:', 'ӘДЕПКІСҰРЫП:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'فايلمەكەنى:', 'ФАЙЛМЕКЕНІ:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'بەلگى', 'белгі', 'tag' ),
+ 'hiddencat' => array( '1', '__جاسىرىنسانات__', '__ЖАСЫРЫНСАНАТ__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'ساناتتاعىبەتتەر', 'САНАТТАҒЫБЕТТЕР', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'بەتمولشەرى', 'БЕТМӨЛШЕРІ', 'PAGESIZE' ),
);
$specialPageAliases = array(
@@ -346,10 +344,10 @@ $specialPageAliases = array(
'Mostlinked' => array( 'ەڭ_كوپ_سىلتەنگەن_بەتتەر' ),
'Mostlinkedcategories' => array( 'ەڭ_كوپ_پايدالانىلعان_ساناتتار', 'ەڭ_كوپ_سىلتەنگەن_ساناتتار' ),
'Mostlinkedtemplates' => array( 'ەڭ_كوپ_پايدالانىلعان_ۇلگىلەر', 'ەڭ_كوپ_سىلتەنگەن_ۇلگىلەر' ),
- 'Mostcategories' => array( 'ەڭ_كوپ_ساناتتار_بارى' ),
'Mostimages' => array( 'ەڭ_كوپ_پايدالانىلعان_سۋرەتتەر', 'ەڭ_كوپ_سۋرەتتەر_بارى' ),
+ 'Mostcategories' => array( 'ەڭ_كوپ_ساناتتار_بارى' ),
'Mostrevisions' => array( 'ەڭ_كوپ_تۇزەتىلگەن', 'ەڭ_كوپ_نۇسقالار_بارى' ),
- 'Fewestrevisions' => array( 'ەڭ_از_تۇزەتىلگەن ' ),
+ 'Fewestrevisions' => array( 'ەڭ_از_تۇزەتىلگەن' ),
'Shortpages' => array( 'قىسقا_بەتتەر' ),
'Longpages' => array( 'ۇزىن_بەتتەر', 'ۇلكەن_بەتتەر' ),
'Newpages' => array( 'جاڭا_بەتتەر' ),
@@ -358,7 +356,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'قورعالعان_بەتتەر' ),
'Protectedtitles' => array( 'قورعالعان_تاقىرىپتار', 'قورعالعان_اتاۋلار' ),
'Allpages' => array( 'بارلىق_بەتتەر' ),
- 'Prefixindex' => array( 'ٴباستاۋىش_ٴتىزىمى' ) ,
+ 'Prefixindex' => array( 'ٴباستاۋىش_ٴتىزىمى' ),
'Ipblocklist' => array( 'بۇعاتتالعاندار' ),
'Specialpages' => array( 'ارنايى_بەتتەر' ),
'Contributions' => array( 'ۇلەسى' ),
@@ -367,14 +365,14 @@ $specialPageAliases = array(
'Whatlinkshere' => array( 'مىندا_سىلتەگەندەر' ),
'Recentchangeslinked' => array( 'سىلتەنگەندەردىڭ_وزگەرىستەرى' ),
'Movepage' => array( 'بەتتى_جىلجىتۋ' ),
- 'Blockme' => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ',),
+ 'Blockme' => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ' ),
'Booksources' => array( 'كىتاپ_قاينارلارى' ),
'Categories' => array( 'ساناتتار' ),
'Export' => array( 'سىرتقا_بەرۋ' ),
'Version' => array( 'نۇسقاسى' ),
'Allmessages' => array( 'بارلىق_حابارلار' ),
'Log' => array( 'جۋرنال', 'جۋرنالدار' ),
- 'Blockip' => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ'),
+ 'Blockip' => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ' ),
'Undelete' => array( 'جويۋدى_بولدىرماۋ', 'جويىلعاندى_قايتارۋ' ),
'Import' => array( 'سىرتتان_الۋ' ),
'Lockdb' => array( 'دەرەكقوردى_قۇلىپتاۋ' ),
@@ -389,7 +387,7 @@ $specialPageAliases = array(
'Mypage' => array( 'جەكە_بەتىم' ),
'Mytalk' => array( 'تالقىلاۋىم' ),
'Mycontributions' => array( 'ۇلەسىم' ),
- 'Listadmins' => array( 'اكىمشىلەر', 'اكىمشى_تىزىمى'),
+ 'Listadmins' => array( 'اكىمشىلەر', 'اكىمشى_تىزىمى' ),
'Listbots' => array( 'بوتتار', 'ٴبوتتار_ٴتىزىمى' ),
'Popularpages' => array( 'ەڭ_كوپ_قارالعان_بەتتەر', 'ايگىلى_بەتتەر' ),
'Search' => array( 'ىزدەۋ' ),
@@ -509,7 +507,7 @@ $messages = array(
'category-media-header' => '«$1» ساناتىنداعى تاسپالار',
'category-empty' => "''بۇل ساناتتا اعىمدا ەش بەت نە تاسپا جوق.''",
'hidden-categories' => '{{PLURAL:$1|جاسىرىن سانات|جاسىرىن ساناتتار}}',
-'hidden-category-category' => 'جاسىرىن ساناتتار', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'جاسىرىن ساناتتار',
'category-subcat-count' => '{{PLURAL:$2|بۇل ساناتتا تەك كەلەسى ساناتشا بار.|بۇل ساناتتا كەلەسى $1 ساناتشا بار (نە بارلىعى $2).}}',
'category-subcat-count-limited' => 'بۇل ساناتتا كەلەسى $1 ساناتشا بار.',
'category-article-count' => '{{PLURAL:$2|بۇل ساناتتا تەك كەلەسى بەت بار.|بۇل ساناتتا كەلەسى $1 بەت بار (نە بارلىعى $2).}}',
@@ -526,10 +524,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ مەدىياۋىيكىيدىڭ جىيى قويىلعان ساۋالدارى]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce مەدىياۋىيكىي شىعۋ تۋرالى حات تاراتۋ ٴتىزىمى]',
-'about' => 'جوبا تۋرالى',
-'article' => 'ماعلۇمات بەتى',
-'newwindow' => '(جاڭا تەرەزەدە)',
-'cancel' => 'بولدىرماۋ',
+'about' => 'جوبا تۋرالى',
+'article' => 'ماعلۇمات بەتى',
+'newwindow' => '(جاڭا تەرەزەدە)',
+'cancel' => 'بولدىرماۋ',
+'moredotdotdot' => 'كوبىرەك…',
+'mypage' => 'جەكە بەتىم',
+'mytalk' => 'تالقىلاۋىم',
+'anontalk' => 'IP تالقىلاۋى',
+'navigation' => 'شارلاۋ',
+'and' => '&#32;جانە',
+
+# Cologne Blue skin
'qbfind' => 'تابۋ',
'qbbrowse' => 'شولۋ',
'qbedit' => 'وڭدەۋ',
@@ -537,15 +543,8 @@ $messages = array(
'qbpageinfo' => 'اينالا',
'qbmyoptions' => 'بەتتەرىم',
'qbspecialpages' => 'ارنايى بەتتەر',
-'moredotdotdot' => 'كوبىرەك…',
-'mypage' => 'جەكە بەتىم',
-'mytalk' => 'تالقىلاۋىم',
-'anontalk' => 'IP تالقىلاۋى',
-'navigation' => 'شارلاۋ',
-'and' => '&#32;جانە',
-
-# Metadata in edit box
-'metadata_help' => 'قوسىمشا دەرەكتەر:',
+'faq' => 'ٴجىيى قويىلعان ساۋالدار',
+'faqpage' => 'Project:ٴجىيى قويىلعان ساۋالدار',
'errorpagetitle' => 'قاتەلىك',
'returnto' => '$1 دەگەنگە قايتا كەلۋ.',
@@ -595,7 +594,7 @@ $messages = array(
'otherlanguages' => 'باسقا تىلدەردە',
'redirectedfrom' => '($1 بەتىنەن ايداتىلعان)',
'redirectpagesub' => 'ايداتۋ بەتى',
-'lastmodifiedat' => 'بۇل بەتتىڭ وزگەرتىلگەن سوڭعى كەزى: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'بۇل بەتتىڭ وزگەرتىلگەن سوڭعى كەزى: $2, $1.',
'viewcount' => 'بۇل بەت $1 رەت قاتىنالعان.',
'protectedpage' => 'قورعالعان بەت',
'jumpto' => 'مىندا ٴوتۋ:',
@@ -606,7 +605,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} تۋرالى',
'aboutpage' => 'Project:جوبا تۋرالى',
'copyright' => 'ماعلۇمات $1 شارتىمەن جەتىمدى.',
-'copyrightpagename' => '{{SITENAME}} اۋتورلىق قۇقىقتارى',
'copyrightpage' => '{{ns:project}}:اۋتورلىق قۇقىقتار',
'currentevents' => 'اعىمداعى وقىيعالار',
'currentevents-url' => 'Project:اعىمداعى وقىيعالار',
@@ -614,8 +612,6 @@ $messages = array(
'disclaimerpage' => 'Project:جاۋاپكەرشىلىكتەن باس تارتۋ',
'edithelp' => 'وندەۋ انىقتاماسى',
'edithelppage' => 'Help:وڭدەۋ',
-'faq' => 'ٴجىيى قويىلعان ساۋالدار',
-'faqpage' => 'Project:ٴجىيى قويىلعان ساۋالدار',
'helppage' => 'Help:مازمۇنى',
'mainpage' => 'باستى بەت',
'mainpage-description' => 'باستى بەت',
@@ -692,10 +688,6 @@ MySQL قايتارعان قاتەسى «<tt>$3: $4</tt>».',
«$1»
مىنا جەتەدەن: «$2».
MySQL قايتارعان قاتەسى «$3: $4»',
-'noconnect' => 'عافۋ ەتىڭىز! بۇل ۋىيكىيدە كەيبىر تەحنىيكالىق قىيىنشىلىقتار كەزدەستى, جانە دە دەرەكقور سەرۆەرىنە بايلانىسا المايدى.<br />
-$1',
-'nodb' => '$1 دەگەن دەرەكقور بولەكتەنبەدى',
-'cachederror' => 'تومەندە سۇرالعان بەتتىڭ بۇركەمەلەنگەن كوشىرمەسى بەرىلەدى, ٴالى جاڭارتىلماعان بولۋى مۇمكىن.',
'laggedslavemode' => 'قۇلاقتاندىرۋ: بەتتە جۋىقتاعى جاڭالاۋلار بولماۋى مۇمكىن.',
'readonly' => 'دەرەكقورى قۇلىپتالعان',
'enterlockreason' => 'قۇلىپتاۋ سەبەبىن, قاي ۋاقىتقا دەيىن قۇلىپتالعانىن كىرىستىرىپ, ەنگىزىڭىز',
@@ -754,7 +746,6 @@ $2',
كەلتىرىلگەن سەبەبى: ''$2''.",
# Login and logout pages
-'logouttitle' => 'قاتىسۋشى شىعۋى',
'logouttext' => "'''ەندى جۇيەدەن شىقتىڭىز.'''
جۇيەگە كىرمەستەن {{SITENAME}} جوباسىن پايدالانۋىن جالعاستىرا الاسىز, نەمەسە ٴدال سول نە وزگە قاتىسۋشى بوپ قايتا كرۋىڭىز مۇمكىن.
@@ -762,7 +753,6 @@ $2',
'welcomecreation' => '== قوش كەلدىڭىز, $1! ==
جاڭا تىركەلگىڭىز جاسالدى.
{{SITENAME}} باپتالىمدارىڭىزدى وزگەرتۋىن ۇمىتپاڭىز.',
-'loginpagetitle' => 'قاتىسۋشى كىرۋى',
'yourname' => 'قاتىسۋشى اتىڭىز:',
'yourpassword' => 'قۇپىييا ٴسوزىڭىز:',
'yourpasswordagain' => 'قۇپىييا ٴسوزدى قايتالاڭىز:',
@@ -785,23 +775,7 @@ $2',
'badretype' => 'ەنگىزگەن قۇپىييا سوزدەرىڭىز ٴبىر بىرىنە سايكەس ەمەس.',
'userexists' => 'ەنگىزگەن قاتىسۋشى اتىڭىز الداقاشان پايدالانۋدا.
وزگە اتاۋدى تاڭداڭىز.',
-'youremail' => 'ە-پوشتاڭىز:',
-'username' => 'قاتىسۋشى اتىڭىز:',
-'uid' => 'قاتىسۋشى تەڭدەستىرگىشىڭىز:',
-'prefs-memberingroups' => 'كىرگەن {{PLURAL:$1|توبىڭىز|توپتارىڭىز}}:',
-'yourrealname' => 'ناقتى اتىڭىز:',
-'yourlanguage' => 'ٴتىلىڭىز:',
-'yourvariant' => 'ٴتىل/ٴجازبا نۇسقاڭىز:',
-'yournick' => 'قولتاڭباڭىز:',
-'badsig' => 'قام قولتاڭباڭىز جارامسىز; HTML بەلگىشەلەرىن تەكسەرىڭىز.',
-'badsiglength' => 'لاقاپ اتىڭىز تىم ۇزىن;
-بۇل $1 تاڭبادان اسپاۋى ٴجون.',
-'email' => 'ە-پوشتاڭىز',
-'prefs-help-realname' => 'ناقتى اتىڭىز مىندەتتى ەمەس.
-ەگەر بۇنى جەتىستىرۋدى تاڭداساڭىز, بۇل تۇزەتۋىڭىزدىڭ اۋتورلىعىن انىقتاۋ ٴۇشىن قولدانىلادى.',
'loginerror' => 'كىرۋ قاتەسى',
-'prefs-help-email' => 'ە-پوشتا مەكەنجايى مىندەتتى ەمەس, بىراق جەكە باسىڭىزدى اشپاي «قاتىسۋشى» نەمەسە «قاتىسۋشى_تالقىلاۋى» دەگەن بەتتەرىڭىز ارقىلى بارشا سىزبەن بايلانىسا الادى.',
-'prefs-help-email-required' => 'ە-پوشتا مەكەنجايى كەرەك.',
'nocookiesnew' => 'جاڭا قاتىسۋشى تىركەلگىسى جاسالدى, بىراق كىرمەگەنسىز.
قاتىسۋشى كىرۋ ٴۇشىن {{SITENAME}} تورابىندا «cookie» فايلدارى قولدانىلادى.
سىزدە «cookies» وشىرىلگەن.
@@ -857,18 +831,16 @@ $2',
'loginlanguagelabel' => 'ٴتىل: $1',
# Password reset dialog
-'resetpass' => 'تىركەلگىنىڭ قۇپىييا ٴسوزىن وزگەرتۋ',
-'resetpass_announce' => 'حاتپەن جىبەرىلگەن ۋاقىتشا كودىمەن كىرگەنسىز.
+'resetpass' => 'تىركەلگىنىڭ قۇپىييا ٴسوزىن وزگەرتۋ',
+'resetpass_announce' => 'حاتپەن جىبەرىلگەن ۋاقىتشا كودىمەن كىرگەنسىز.
كىرۋىڭىزدى ٴبىتىرۋ ٴۇشىن, جاڭا قۇپىييا ٴسوزىڭىزدى مىندا ەنگىزۋىڭىز ٴجون:',
-'resetpass_header' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
-'oldpassword' => 'اعىمدىق قۇپىييا ٴسوزىڭىز:',
-'newpassword' => 'جاڭا قۇپىييا ٴسوزىڭىز:',
-'retypenew' => 'جاڭا قۇپىييا ٴسوزىڭىزدى قايتالاڭىز:',
-'resetpass_submit' => 'قۇپىييا ٴسوزدى قويىڭىز دا كىرىڭىز',
-'resetpass_success' => 'قۇپىييا ٴسوزىڭىز ٴساتتى وزگەرتىلدى! ەندى كىرىڭىز…',
-'resetpass_bad_temporary' => 'ۋاقىتشا قۇپىييا ٴسوز جارامسىز.
-مۇمكىن قۇپىييا ٴسوزىڭىزدى الداقاشان ٴساتتى وزگەرتكەن بولارسىز نەمەسە جاڭا ۋاقىتشا قۇپىييا ٴسوزىن سۇراتىلعانسىز.',
-'resetpass_forbidden' => '{{SITENAME}} جوباسىندا قۇپىييا سوزدەر وزگەرتىلمەيدى',
+'resetpass_header' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
+'oldpassword' => 'اعىمدىق قۇپىييا ٴسوزىڭىز:',
+'newpassword' => 'جاڭا قۇپىييا ٴسوزىڭىز:',
+'retypenew' => 'جاڭا قۇپىييا ٴسوزىڭىزدى قايتالاڭىز:',
+'resetpass_submit' => 'قۇپىييا ٴسوزدى قويىڭىز دا كىرىڭىز',
+'resetpass_success' => 'قۇپىييا ٴسوزىڭىز ٴساتتى وزگەرتىلدى! ەندى كىرىڭىز…',
+'resetpass_forbidden' => '{{SITENAME}} جوباسىندا قۇپىييا سوزدەر وزگەرتىلمەيدى',
# Edit page toolbar
'bold_sample' => 'جۋان ٴماتىن',
@@ -940,7 +912,6 @@ IP مەكەنجايىڭىز بۇل بەتتىڭ تۇزەتۋ تارىيحىند
'blockededitsource' => "'''$1''' دەگەنگە جاسالعان '''وڭدەمەلەرىڭىزدىڭ''' ٴماتىنى تومەندە كورسەتىلەدى:",
'whitelistedittitle' => 'وڭدەۋ ٴۇشىن كىرۋىڭىز ٴجون.',
'whitelistedittext' => 'بەتتەردى وڭدەۋ ٴۇشىن $1 ٴجون.',
-'confirmedittitle' => 'قۇپتاۋ حاتى قايتا وڭدەلۋى ٴجون',
'confirmedittext' => 'بەتتەردى وڭدەۋ ٴۇشىن الدىن الا ە-پوشتا مەكەنجايىڭىزدى قۇپتاۋىڭىز ٴجون.
ە-پوشتا مەكەنجايىڭىزدى [[Special:Preferences|پايدالانۋشىلىق باپتالىمدارىڭىز]] ارقىلى قويىڭىز دا جارامدىلىعىن تەكسەرىپ شىعىڭىز.',
'nosuchsectiontitle' => 'وسىنداي ەش ٴبولىم جوق',
@@ -960,7 +931,8 @@ IP مەكەنجايىڭىز بۇل بەتتىڭ تۇزەتۋ تارىيحىند
'noarticletext' => 'بۇل بەتتە اعىمدا ەش ٴماتىن جوق, باسقا بەتتەردەن وسى بەت اتاۋىن [[Special:Search/{{PAGENAME}}|ىزدەپ كورۋىڭىزگە]] نەمەسە وسى بەتتى [{{fullurl:{{FULLPAGENAME}}|action=edit}} تۇزەتۋىڭىزگە] بولادى.',
'userpage-userdoesnotexist' => '«$1» قاتىسۋشى تىركەلگىسى جازىپ الىنباعان. بۇل بەتتى باستاۋ/وڭدەۋ تالابىڭىزدى تەكسەرىپ شىعىڭىز.',
'clearyourcache' => "'''اڭعارتپا:''' ساقتاعاننان كەيىن, وزگەرىستەردى كورۋ ٴۇشىن شولعىش بۇركەمەسىن وراعىتۋ ىقتىيمال. '''Mozilla / Firefox / Safari:''' ''قايتا جۇكتەۋ'' باتىرماسىن نۇقىعاندا ''Shift'' تۇتىڭىز, نە ''Ctrl-Shift-R'' باسىڭىز (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''جاڭارتۋ'' باتىرماسىن نۇقىعاندا ''Ctrl'' تۇتىڭىز, نە ''Ctrl-F5'' باسىڭىز; '''Konqueror:''': ''جاڭارتۋ'' باتىرماسىن جاي نۇقىڭىز, نە ''F5'' باسىڭىز; '''Opera''' پايدانۋشىلارى ''قۇرالدار→باپتالىمدار'' دەگەنگە بارىپ بۇركەمەسىن تولىق تازارتۋ ٴجون.",
-'usercssjsyoucanpreview' => "'''اقىل-كەڭەس:''' جاڭا CSS/JS فايلىن ساقتاۋ الدىندا «قاراپ شىعۋ» باتىرماسىن قولدانىپ سىناقتاڭىز.",
+'usercssyoucanpreview' => "'''اقىل-كەڭەس:''' جاڭا CSS فايلىن ساقتاۋ الدىندا «قاراپ شىعۋ» باتىرماسىن قولدانىپ سىناقتاڭىز.",
+'userjsyoucanpreview' => "'''اقىل-كەڭەس:''' جاڭا JS فايلىن ساقتاۋ الدىندا «قاراپ شىعۋ» باتىرماسىن قولدانىپ سىناقتاڭىز.",
'usercsspreview' => "'''مىناۋ CSS ٴماتىنىن تەك قاراپ شىعۋ ەكەنىن ۇمىتپاڭىز, ول ٴالى ساقتالعان جوق!'''",
'userjspreview' => "'''مىناۋ JavaScript قاتىسۋشى باعدارلاماسىن تەكسەرۋ/قاراپ شىعۋ ەكەنىن ۇمىتپاڭىز, ول ٴالى ساقتالعان جوق!'''",
'userinvalidcssjstitle' => "'''قۇلاقتاندىرۋ:''' وسى ارادا «$1» دەگەن ەش مانەر جوق.
@@ -1028,7 +1000,7 @@ IP مەكەنجايىڭىز بۇل بەتتىڭ تۇزەتۋ تارىيحىند
'permissionserrors' => 'رۇقساتتار قاتەلەرى',
'permissionserrorstext' => 'بۇنى ىستەۋگە رۇقساتىڭىز جوق, كەلەسى {{PLURAL:$1|سەبەپ|سەبەپتەر}} بويىنشا:',
'permissionserrorstext-withaction' => '$2 دەگەنگە رۇقساتىڭىز جوق, كەلەسى {{PLURAL:$1|سەبەپ|سەبەپتەر}} بويىنشا:',
-'recreate-deleted-warn' => "'''قۇلاقتاندىرۋ: الدىندا جويىلعان بەتتى قايتا باستايىن دەپ تۇرسىز.'''
+'recreate-moveddeleted-warn' => "'''قۇلاقتاندىرۋ: الدىندا جويىلعان بەتتى قايتا باستايىن دەپ تۇرسىز.'''
مىنا بەت وڭدەۋىن جالعاستىرۋ ٴۇشىن جاراستىعىن تەكسەرىپ شىعۋىڭىز ٴجون.
قولايلى بولۋى ٴۇشىن بۇل بەتتىڭ جويۋ جۋرنالى كەلتىرىلگەن:",
@@ -1062,7 +1034,7 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'nohistory' => 'مىندا بۇل بەتتىنىڭ تۇزەتۋ تارىيحى جوق.',
'currentrev' => 'اعىمدىق تۇزەتۋ',
'revisionasof' => '$1 كەزىندەگى تۇزەتۋ',
-'revision-info' => '$1 كەزىندەگى $2 ىستەگەن تۇزەتۋ', # Additionally available: $3: revision id
+'revision-info' => '$1 كەزىندەگى $2 ىستەگەن تۇزەتۋ',
'previousrevision' => '← ەسكىلەۋ تۇزەتۋى',
'nextrevision' => 'جاڭالاۋ تۇزەتۋى →',
'currentrevisionlink' => 'اعىمدىق تۇزەتۋى',
@@ -1074,7 +1046,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'histlegend' => 'ايىرماسىن بولەكتەۋ: سالىستىرماق نۇسقالارىنىڭ قوسۋ كوزدەرىن بەلگىلەپ <Enter> پەرنەسىن باسىڭىز, نەمەسە تومەندەگى باتىرمانى نۇقىڭىز.<br />
شارتتى بەلگىلەر: (اعىم.) = اعىمدىق نۇسقامەن ايىرماسى,
(سوڭ.) = الدىڭعى نۇسقامەن ايىرماسى, ش = شاعىن وڭدەمە',
-'deletedrev' => '[جويىلعان]',
'histfirst' => 'ەڭ العاشقىسىنا',
'histlast' => 'ەڭ سوڭعىسىنا',
'historysize' => '($1 بايت)',
@@ -1083,7 +1054,7 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
# Revision feed
'history-feed-title' => 'تۇزەتۋ تارىيحى',
'history-feed-description' => 'مىنا ۋىيكىيدەگى بۇل بەتتىڭ تۇزەتۋ تارىيحى',
-'history-feed-item-nocomment' => '$2 كەزىندەگى $1 دەگەن', # user at time
+'history-feed-item-nocomment' => '$2 كەزىندەگى $1 دەگەن',
'history-feed-empty' => 'سۇراتىلعان بەت جوق بولدى.
ول مىنا ۋىيكىيدەن جويىلعان, نەمەسە اتاۋى اۋىستىرىلعان.
وسىعان قاتىستى جاڭا بەتتەردى [[Special:Search|بۇل ۋىيكىيدەن ىزدەۋدى]] بايقاپ كورىڭىز.',
@@ -1109,12 +1080,12 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
{{SITENAME}} جوباسىنىڭ باسقا اكىمشىلەرى جاسىرىن ماعلۇماتقا قاتىناي الادى, جانە قوسىمشا تىيىمدار قويىلعانشا دەيىن, وسى تىلدەسۋ ارقىلى جويۋدى بولدىرماۋى مۇمكىن.",
'revdelete-legend' => 'كورىنىس تىيىمدارىن قويۋ:',
'revdelete-hide-text' => 'تۇزەتۋ ٴماتىنىن جاسىر',
+'revdelete-hide-image' => 'فايل ماعلۇماتىن جاسىر',
'revdelete-hide-name' => 'ارەكەت پەن نىساناسىن جاسىر',
'revdelete-hide-comment' => 'وڭدەمە ماندەمەسىن جاسىر',
'revdelete-hide-user' => 'وڭدەۋشى اتىن (IP مەكەنجايىن) جاسىر',
'revdelete-hide-restricted' => 'وسى تىيىمداردى اكىمشىلەرگە قولدانۋ جانە بۇل تىلدەسۋدى قۇلىپتاۋ',
'revdelete-suppress' => 'دەرەكتەردى بارشاعا ۇقساس اكىمشىلەردەن دە شەتتەتۋ',
-'revdelete-hide-image' => 'فايل ماعلۇماتىن جاسىر',
'revdelete-unsuppress' => 'قالپىنا كەلتىرىلگەن تۇزەتۋلەردەن تىيىمداردى الاستاۋ',
'revdelete-log' => 'سەبەبى:',
'revdelete-submit' => 'بولەكتەنگەن تۇزەتۋگە قولدانۋ',
@@ -1134,6 +1105,7 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'revdelete-unhid' => '$1 اشتى',
'revdelete-log-message' => '$2 تۇزەتۋ ٴۇشىن $1',
'logdelete-log-message' => '$2 وقىيعا ٴۇشىن $1',
+'revdelete-edit-reasonlist' => 'جويۋ سەبەپتەرىن وڭدەۋ',
# Suppression log
'suppressionlog' => 'شەتتەتۋ جۋرنالى',
@@ -1182,17 +1154,14 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'searchresulttext' => '{{SITENAME}} جوباسىندا ىزدەۋ تۋرالى كوبىرەك اقپارات ٴۇشىن, [[{{MediaWiki:Helppage}}|{{int:help}} بەتىن]] قاراڭىز.',
'searchsubtitle' => "ىزدەگەنىڭىز: '''[[:$1]]'''",
'searchsubtitleinvalid' => "ىزدەگەنىڭىز: '''$1'''",
-'noexactmatch' => "'''وسى ارادا بەتتىڭ «$1» تاقىرىپ اتى جوق.'''
-[[:$1|بۇل بەتتى باستاي]] الاسىز.",
-'noexactmatch-nocreate' => "'''وسى ارادا بەتتىڭ «$1» تاقىرىپ اتى جوق.'''",
'toomanymatches' => 'تىم كوپ سايكەس قايتارىلدى, وزگە سۇرانىمدى بايقاپ كورىڭىز',
'titlematches' => 'بەت تاقىرىبىن اتى سايكەس كەلەدى',
'notitlematches' => 'ەش بەت تاقىرىبىن اتى سايكەس ەمەس',
'textmatches' => 'بەت ٴماتىنى سايكەس كەلەدى',
'notextmatches' => 'ەش بەت ٴماتىنى سايكەس ەمەس',
-'prevn' => 'الدىڭعى $1',
-'nextn' => 'كەلەسى $1',
-'viewprevnext' => 'كورسەتىلۋى: ($1) ($2) ($3) جازبا',
+'prevn' => 'الدىڭعى {{PLURAL:$1|$1}}',
+'nextn' => 'كەلەسى {{PLURAL:$1|$1}}',
+'viewprevnext' => 'كورسەتىلۋى: ($1 {{int:pipe-separator}} $2) ($3) جازبا',
'searchhelp-url' => 'Help:مازمۇنى',
'search-result-size' => '$1 ($2 ٴسوز)',
'search-result-score' => 'اراقاتىناستىلىعى: $1 %',
@@ -1210,7 +1179,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'searchall' => 'بارلىق',
'showingresults' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ بارىنشا '''$1''' ناتىيجە كورسەتىلەدى.",
'showingresultsnum' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ '''$3''' ناتىيجە كورسەتىلەدى.",
-'showingresultstotal' => "تومەندە {{PLURAL:$3|'''$3''' اراسىنان '''$1''' ناتىيجە كورسەتىلەدى|'''$3''' اراسىنان '''$1 — $2''' ناتىيجە اۋقىمى كورسەتىلەدى}}",
'nonefound' => "'''اڭعارتپا''': ادەپكىدەن تەك كەيبىر ەسىم ايالاردان ىزدەلىنەدى. بارلىق ماعلۇمات ٴتۇرىن (سونىڭ ىشىندە تالقىلاۋ بەتتەردى, ۇلگىلەردى ت.ب.) ىزدەۋ ٴۇشىن سۇرانىمىڭىزدى ''بارلىق:'' دەپ باستاڭىز, نەمەسە قالاعان ەسىم اياسىن باستاۋىش ەسەبىندە قولدانىڭىز.",
'powersearch' => 'كەڭەيتىلگەن ىزدەۋ',
'powersearch-legend' => 'كەڭەيتىلگەن ىزدەۋ',
@@ -1222,71 +1190,75 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
ازىرشە Google ارقىلى ىزدەۋگە بولادى.
اڭعارتپا: {{SITENAME}} تورابىنىڭ ماعلۇمات تىزبەلەرى ەسكىرگەن بولۋى مۇمكىن.',
-# Preferences page
-'preferences' => 'باپتالىمدار',
-'mypreferences' => 'باپتالىمدارىم',
-'prefs-edits' => 'وڭدەمە سانى:',
-'prefsnologin' => 'كىرمەگەنسىز',
-'prefsnologintext' => 'باپتاۋىڭىزدى قويۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] ٴتىيىستى.',
-'prefsreset' => 'باپتالىمدار ارقاۋدان قايتا قويىلدى.',
+# Quickbar
'qbsettings' => 'ٴمازىر',
'qbsettings-none' => 'ەشقانداي',
'qbsettings-fixedleft' => 'سولعا بەكىتىلگەن',
'qbsettings-fixedright' => 'وڭعا بەكىتىلگەن',
'qbsettings-floatingleft' => 'سولعا قالقىعان',
'qbsettings-floatingright' => 'وڭعا قالقىعان',
-'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
-'skin' => 'مانەرلەر',
-'skin-preview' => 'قاراپ شىعۋ',
-'math' => 'ورنەكتەر',
-'dateformat' => 'كۇن-اي ٴپىشىمى',
-'datedefault' => 'ەش قالاۋسىز',
-'datetime' => 'ۋاقىت',
-'math_failure' => 'قۇرىلىمىن تالداتۋى ٴساتسىز ٴبىتتى',
-'math_unknown_error' => 'بەلگىسىز قاتە',
-'math_unknown_function' => 'بەلگىسىز جەتە',
-'math_lexing_error' => 'ٴسوز كەنىنىڭ قاتەسى',
-'math_syntax_error' => 'سويلەم جۇيەسىنىڭ قاتەسى',
-'math_image_error' => 'PNG اۋدارىسى ٴساتسىز ٴبىتتى;
-latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس ورناتۋىن تەكسەرىپ شىعىڭىز',
-'math_bad_tmpdir' => 'math دەگەن ۋاقىتشا قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
-'math_bad_output' => 'math دەگەن بەرىس قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
-'math_notexvc' => 'texvc اتقارىلمالىسى تابىلمادى;
-باپتاۋ ٴۇشىن math/README قۇجاتىن قاراڭىز.',
-'prefs-personal' => 'جەكە دەرەكتەرى',
-'prefs-rc' => 'جۋىقتاعى وزگەرىستەر',
-'prefs-watchlist' => 'باقىلاۋ',
-'prefs-watchlist-days' => 'باقىلاۋ تىزىمىندەگى كۇندەردىڭ كورسەتپەك سانى:',
-'prefs-watchlist-edits' => 'كەڭەيتىلگەن باقىلاۋلارداعى وزگەرىستەردىڭ بارىنشا كورسەتپەك سانى:',
-'prefs-misc' => 'ارقىيلى',
-'saveprefs' => 'ساقتا',
-'resetprefs' => 'ساقتالماعان وزگەرىستەردى تازارت',
-'textboxsize' => 'وڭدەۋ',
-'rows' => 'جولدار:',
-'columns' => 'باعاندار:',
-'searchresultshead' => 'ىزدەۋ',
-'resultsperpage' => 'بەت سايىن ناتىيجە سانى:',
-'contextlines' => 'ناتىيجە سايىن جول سانى:',
-'contextchars' => 'جول سايىن تاڭبا سانى:',
-'stub-threshold' => '<a href="#" class="stub">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):',
-'recentchangesdays' => 'جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:',
-'recentchangescount' => 'جۋىقتاعى وزگەرىستەردىندە, تارىيح جانە جۋرنال بەتتەرىندە كورسەتپەك وڭدەمە سانى:',
-'savedprefs' => 'باپتالىمدارىڭىز ساقتالدى.',
-'timezonelegend' => 'ۋاقىت بەلدەۋى',
-'timezonetext' => '¹ جەرگىلىكتى ۋاقىتىڭىز بەن سەرۆەر ۋاقىتىنىڭ (UTC) اراسىنداعى ساعات سانى.',
-'localtime' => 'جەرگىلىكتى ۋاقىت',
-'timezoneoffset' => 'ساعات ىعىسۋى¹',
-'servertime' => 'سەرۆەر ۋاقىتى',
-'guesstimezone' => 'شولعىشتان الىپ تولتىرۋ',
-'allowemail' => 'باسقادان حات قابىلداۋىن قوس',
-'prefs-searchoptions' => 'ىزدەۋ باپتالىمدارى',
-'prefs-namespaces' => 'ەسىم ايالارى',
-'defaultns' => 'مىنا ەسىم ايالاردا ادەپكىدەن ىزدەۋ:',
-'default' => 'ادەپكى',
-'files' => 'فايلدار',
+
+# Preferences page
+'preferences' => 'باپتالىمدار',
+'mypreferences' => 'باپتالىمدارىم',
+'prefs-edits' => 'وڭدەمە سانى:',
+'prefsnologin' => 'كىرمەگەنسىز',
+'prefsnologintext' => 'باپتاۋىڭىزدى قويۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] ٴتىيىستى.',
+'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
+'prefs-skin' => 'مانەرلەر',
+'skin-preview' => 'قاراپ شىعۋ',
+'prefs-math' => 'ورنەكتەر',
+'datedefault' => 'ەش قالاۋسىز',
+'prefs-datetime' => 'ۋاقىت',
+'prefs-personal' => 'جەكە دەرەكتەرى',
+'prefs-rc' => 'جۋىقتاعى وزگەرىستەر',
+'prefs-watchlist' => 'باقىلاۋ',
+'prefs-watchlist-days' => 'باقىلاۋ تىزىمىندەگى كۇندەردىڭ كورسەتپەك سانى:',
+'prefs-watchlist-edits' => 'كەڭەيتىلگەن باقىلاۋلارداعى وزگەرىستەردىڭ بارىنشا كورسەتپەك سانى:',
+'prefs-misc' => 'ارقىيلى',
+'saveprefs' => 'ساقتا',
+'resetprefs' => 'ساقتالماعان وزگەرىستەردى تازارت',
+'prefs-editing' => 'وڭدەۋ',
+'rows' => 'جولدار:',
+'columns' => 'باعاندار:',
+'searchresultshead' => 'ىزدەۋ',
+'resultsperpage' => 'بەت سايىن ناتىيجە سانى:',
+'contextlines' => 'ناتىيجە سايىن جول سانى:',
+'contextchars' => 'جول سايىن تاڭبا سانى:',
+'stub-threshold' => '<a href="#" class="stub">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):',
+'recentchangesdays' => 'جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:',
+'recentchangescount' => 'جۋىقتاعى وزگەرىستەردىندە, تارىيح جانە جۋرنال بەتتەرىندە كورسەتپەك وڭدەمە سانى:',
+'savedprefs' => 'باپتالىمدارىڭىز ساقتالدى.',
+'timezonelegend' => 'ۋاقىت بەلدەۋى',
+'localtime' => 'جەرگىلىكتى ۋاقىت',
+'timezoneoffset' => 'ساعات ىعىسۋى¹',
+'servertime' => 'سەرۆەر ۋاقىتى',
+'guesstimezone' => 'شولعىشتان الىپ تولتىرۋ',
+'allowemail' => 'باسقادان حات قابىلداۋىن قوس',
+'prefs-searchoptions' => 'ىزدەۋ باپتالىمدارى',
+'prefs-namespaces' => 'ەسىم ايالارى',
+'defaultns' => 'مىنا ەسىم ايالاردا ادەپكىدەن ىزدەۋ:',
+'default' => 'ادەپكى',
+'prefs-files' => 'فايلدار',
+'youremail' => 'ە-پوشتاڭىز:',
+'username' => 'قاتىسۋشى اتىڭىز:',
+'uid' => 'قاتىسۋشى تەڭدەستىرگىشىڭىز:',
+'prefs-memberingroups' => 'كىرگەن {{PLURAL:$1|توبىڭىز|توپتارىڭىز}}:',
+'yourrealname' => 'ناقتى اتىڭىز:',
+'yourlanguage' => 'ٴتىلىڭىز:',
+'yourvariant' => 'ٴتىل/ٴجازبا نۇسقاڭىز:',
+'yournick' => 'قولتاڭباڭىز:',
+'badsig' => 'قام قولتاڭباڭىز جارامسىز; HTML بەلگىشەلەرىن تەكسەرىڭىز.',
+'badsiglength' => 'لاقاپ اتىڭىز تىم ۇزىن;
+بۇل $1 تاڭبادان اسپاۋى ٴجون.',
+'email' => 'ە-پوشتاڭىز',
+'prefs-help-realname' => 'ناقتى اتىڭىز مىندەتتى ەمەس.
+ەگەر بۇنى جەتىستىرۋدى تاڭداساڭىز, بۇل تۇزەتۋىڭىزدىڭ اۋتورلىعىن انىقتاۋ ٴۇشىن قولدانىلادى.',
+'prefs-help-email' => 'ە-پوشتا مەكەنجايى مىندەتتى ەمەس, بىراق جەكە باسىڭىزدى اشپاي «قاتىسۋشى» نەمەسە «قاتىسۋشى_تالقىلاۋى» دەگەن بەتتەرىڭىز ارقىلى بارشا سىزبەن بايلانىسا الادى.',
+'prefs-help-email-required' => 'ە-پوشتا مەكەنجايى كەرەك.',
# User rights
-'userrights' => 'قاتىسۋشى قۇقىقتارىن رەتتەۋ', # Not used as normal message but as header for the special page itself
+'userrights' => 'قاتىسۋشى قۇقىقتارىن رەتتەۋ',
'userrights-lookup-user' => 'قاتىسۋشى توپتارىن رەتتەۋ',
'userrights-user-editname' => 'قاتىسۋشى اتىن ەنگىزىڭىز:',
'editusergroup' => 'قاتىسۋشى توپتارىن وڭدەۋ',
@@ -1368,6 +1340,8 @@ latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس
'right-editprotected' => 'قورعالعان بەتتەردى وڭدەۋ (باۋلى قورعاۋلارسىز)',
'right-editinterface' => 'پايدالانۋشىلىق تىلدەسىۋىن وڭدەۋ',
'right-editusercssjs' => 'باسقا قاتىسۋشىلاردىڭ CSS جانە JS فايلدارىن وڭدەۋ',
+'right-editusercss' => 'باسقا قاتىسۋشىلاردىڭ CSS فايلدارىن وڭدەۋ',
+'right-edituserjs' => 'باسقا قاتىسۋشىلاردىڭ JS فايلدارىن وڭدەۋ',
'right-rollback' => 'بەلگىلى بەتتى وڭدەگەن سوڭعى قاتىسۋشىنىڭ وڭدەمەلەرىنەن جىلدام شەگىندىرۋ',
'right-markbotedits' => 'شەگىندىرلگەن وڭدەمەلەردى بوتتاردىكى دەپ بەلگىلەۋ',
'right-noratelimit' => 'ەسەلىك شەكتەلىمدەرى ىقپال ەتپەيدى',
@@ -1418,6 +1392,8 @@ latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس
# Recent changes linked
'recentchangeslinked' => 'قاتىستى وزگەرىستەر',
+'recentchangeslinked-feed' => 'قاتىستى وزگەرىستەر',
+'recentchangeslinked-toolbox' => 'قاتىستى وزگەرىستەر',
'recentchangeslinked-title' => '«$1» دەگەنگە قاتىستى وزگەرىستەر',
'recentchangeslinked-noresult' => 'سىلتەلگەن بەتتەردە كەلتىرىلگەن مەرزىمدە ەشقانداي وزگەرىس بولماعان.',
'recentchangeslinked-summary' => "بۇل تىزىمدە وزىندىك بەتتەن سىلتەلگەن بەتتەردەگى (نە وزىندىك سانات مۇشەلەرىندەگى) ىستەلگەن جۋىقتاعى وزگەرىستەر بەرىلەدى.
@@ -1428,7 +1404,6 @@ latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس
# Upload
'upload' => 'قوتارىپ بەرۋ',
'uploadbtn' => 'قوتارىپ بەر!',
-'reupload' => 'قايتا قوتارىپ بەرۋ',
'reuploaddesc' => 'قوتارىپ بەرۋدى بولدىرماۋ جانە قوتارۋ پىشىنىنە قايتا كەلۋ.',
'uploadnologin' => 'كىرمەگەنسىز',
'uploadnologintext' => 'فايل قوتارۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] كەرەك.',
@@ -1478,7 +1453,6 @@ latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس
* قوتارىپ بەرىلەتىن فايل اتاۋى: '''<tt>[[:$1]]</tt>'''
* بار بولعان فايل اتاۋى: '''<tt>[[:$2]]</tt>'''
وزگە اتاۋدى تاڭداڭىز.",
-'fileexists-thumb' => "<center>'''بار بولعان سۋرەت'''</center>",
'fileexists-thumbnail-yes' => "وسى فايل — مولشەرى كىشىرىتىلگەن سۋرەت ''(نوباي)'' سىيياقتى. [[$1|thumb]]
بۇل '''<tt>[[:$1]]</tt>''' دەگەن فايلدى سىناپ شىعىڭىز.
ەگەر سىنالعان فايل تۇپنۇسقالى مولشەرى بار دالمە-ٴدال سۋرەت بولسا, قوسىسمشا نوبايدى قوتارىپ بەرۋ كەرەگى جوق.",
@@ -1498,8 +1472,6 @@ latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس
'uploaddisabled' => 'قوتارىپ بەرۋ وشىرىلگەن',
'uploaddisabledtext' => '{{SITENAME}} جوباسىندا فايل قوتارىپ بەرۋى وشىرىلگەن.',
'uploadscripted' => 'بۇل فايلدا ۆەب شولعىشتى قاتەلىكپەن تالداتقىزاتىن HTML نە ٴامىر كودى بار.',
-'uploadcorrupt' => 'بۇل فايل بۇلدىرىلگەن, نە بۇرىس كەڭەيتىمى بار.
-فايلدى تەكسەرىپ شىعىڭىز دا, قايتا قوتارىپ بەرىڭىز.',
'uploadvirus' => 'بۇل فايلدا ۆىيرۋس بار! ەگجەي-تەگجەيلەرى: $1',
'sourcefilename' => 'قاينار فايل اتاۋى:',
'destfilename' => 'نىسانا فايل اتاۋى:',
@@ -1534,6 +1506,7 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
تالابىڭىزدى قول تىيگەن كەزىندە قايتا بايقاپ كورۋىڭىز مۇمكىن.',
'license' => 'لىيتسەنزىييالاندىرۋى:',
+'license-header' => 'لىيتسەنزىييالاندىرۋى:',
'nolicense' => 'ەشتەڭە بولەكتەنبەگەن',
'license-nopreview' => '(قاراپ شىعۋ جەتىمدى ەمەس)',
'upload_source_url' => ' (جارامدى, بارشاعا قاتىناۋلى URL)',
@@ -1553,6 +1526,7 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
'listfiles_description' => 'سىيپاتتاماسى',
# File description page
+'file-anchor-link' => 'فايل بەتى',
'filehist' => 'فايل تارىيحى',
'filehist-help' => 'فايلدىڭ قاي ۋاقىتتا قالاي كورىنەتىن ٴۇشىن كۇن-اي/ۋاقىت دەگەندى نۇقىڭىز.',
'filehist-deleteall' => 'بارلىعىن جوي',
@@ -1570,12 +1544,7 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
'morelinkstoimage' => 'بۇل فايلدىڭ [[Special:WhatLinksHere/$1|كوبىرەك سىلتەمەلەرىن]] قاراۋ.',
'redirectstofile' => 'كەلەسى {{PLURAL:$1|فايل|$1 فايل}} بۇل فايلعا ايدايدى:',
'duplicatesoffile' => 'كەلەسى {{PLURAL:$1|فايل بۇل فايلدىڭ تەلنۇسقاسى|$1 فايل بۇل فايلدىڭ تەلنۇسقالارى}}:',
-'sharedupload' => 'بۇل فايل ورتاق قويماعا قوتارىپ بەرىلگەن سوندىقتان باسقا جوبالاردا قولدانۋى مۇمكىن.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'بىلايعى اقپارات ٴۇشىن $1 دەگەندى قاراڭىز.',
-'shareduploadwiki-desc' => 'بۇل $1 دەگەن فايلدىڭ ورتاق قويماداعى مالىمەتتەرى تومەندە كورسەتىلەدى.',
-'shareduploadwiki-linktext' => 'فايلدىڭ سىيپاتتاما بەتى',
-'noimage' => 'بىلاي اتالعان فايل جوق, $1 مۇمكىندىگىڭىز بار.',
-'noimage-linktext' => 'بۇنى قوتارىپ بەر',
+'sharedupload' => 'بۇل فايل ورتاق قويماعا قوتارىپ بەرىلگەن سوندىقتان باسقا جوبالاردا قولدانۋى مۇمكىن.',
'uploadnewversion-linktext' => 'بۇل فايلدىڭ جاڭا نۇسقاسىن قوتارىپ بەرۋ',
# File reversion
@@ -1649,8 +1618,8 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
'brokenredirects' => 'ەش بەتكە كەلتىرمەيتىن ايداعىشتار',
'brokenredirectstext' => 'كەلەسى ايداعىشتار جوق بەتتەرگە سىلتەيدى:',
-'brokenredirects-edit' => '(وڭدەۋ)',
-'brokenredirects-delete' => '(جويۋ)',
+'brokenredirects-edit' => 'وڭدەۋ',
+'brokenredirects-delete' => 'جويۋ',
'withoutinterwiki' => 'ەش تىلگە سىلتeمەگەن بەتتەر',
'withoutinterwiki-summary' => 'كەلەسى بەتتەر باسقا تىلدەرگە سىلتەمەيدى',
@@ -1921,8 +1890,8 @@ $NEWPAGE
باسقا بىرەۋ بۇل بەتتى الداقاشان وڭدەگەن نە شەگىندىرگەن.
سوڭعى وڭدەمەسىن [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|تالقىلاۋى]]) ىستەگەن.',
-'editcomment' => "بولعان وڭدەمە ماندەمەسى: «''$1''».", # only shown if there is an edit comment
-'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|تالقىلاۋى]]) وڭدەمەلەرىنەن [[{{ns:user}}:$1|$1]] سوڭعى نۇسقاسىنا قايتاردى', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "بولعان وڭدەمە ماندەمەسى: «''$1''».",
+'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|تالقىلاۋى]]) وڭدەمەلەرىنەن [[{{ns:user}}:$1|$1]] سوڭعى نۇسقاسىنا قايتاردى',
'rollback-success' => '$1 وڭدەمەلەرىنەن قايتارعان;
$2 سوڭعى نۇسقاسىنا وزگەرتتى.',
'sessionfailure' => 'كىرۋ سەسسىيياسىندا شاتاق بولعان سىيياقتى;
@@ -1943,7 +1912,6 @@ $2 سوڭعى نۇسقاسىنا وزگەرتتى.',
'protectexpiry' => 'مەرزىمى بىتپەك:',
'protect_expiry_invalid' => 'بىتەتىن ۋاقىتى جارامسىز.',
'protect_expiry_old' => 'بىتەتىن ۋاقىتى ٴوتىپ كەتكەن.',
-'protect-unchain' => 'جىلجىتۋ رۇقساتتارىن بەرۋ',
'protect-text' => "'''$1''' بەتىنىڭ قورعاۋ دەڭگەيىن قاراپ جانە وزگەرتىپ شىعا الاسىز.",
'protect-locked-blocked' => "بۇعاتتاۋىڭىز وشىرىلگەنشە دەيىن قورعاۋ دەڭگەيىن وزگەرتە المايسىز.
مىنا '''$1''' بەتتىڭ اعىمدىق باپتاۋلارى:",
@@ -1961,7 +1929,7 @@ $2 سوڭعى نۇسقاسىنا وزگەرتتى.',
'protect-expiring' => 'مەرزىمى بىتپەك: $1 (UTC)',
'protect-cascade' => 'بۇل بەتتىڭ كىرىكبەتتەرىن قورعاۋ (باۋلى قورعاۋ).',
'protect-cantedit' => 'بۇل بەتتىڭ قورعاۋ دەڭگەيىن وزگەرتە المايسىز, سەبەبى بۇنى وڭدەۋگە رۇقستاڭىز جوق.',
-'protect-expiry-options' => '2 ساعات:2 hours,1 كۇن:1 day,3 كۇن:3 days,1 اپتا:1 week,2 اپتا:2 weeks,1 اي:1 month,3 اي:3 months,6 اي:6 months,1 جىل:1 year,مانگى:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ساعات:2 hours,1 كۇن:1 day,3 كۇن:3 days,1 اپتا:1 week,2 اپتا:2 weeks,1 اي:1 month,3 اي:3 months,6 اي:6 months,1 جىل:1 year,مانگى:infinite',
'restriction-type' => 'رۇقساتى:',
'restriction-level' => 'تىيىمدىق دەڭگەيى:',
'minimum-size' => 'ەڭ از مولشەرى',
@@ -2038,7 +2006,7 @@ $1',
'contributions' => 'قاتىسۋشى ۇلەسى',
'mycontris' => 'ۇلەسىم',
'contribsub2' => '$1 ($2) ۇلەسى',
-'nocontribs' => 'وسى ىزدەۋ شارتىنا سايكەس وزگەرىستەر تابىلعان جوق.', # Optional parameter: $1 is the user name
+'nocontribs' => 'وسى ىزدەۋ شارتىنا سايكەس وزگەرىستەر تابىلعان جوق.',
'uctop' => ' (ٴۇستى)',
'month' => 'مىنا ايدان (جانە ەرتەرەكتەن):',
'year' => 'مىنا جىلدان (جانە ەرتەرەكتەن):',
@@ -2046,6 +2014,9 @@ $1',
'sp-contributions-newbies' => 'تەك جاڭا تىركەلگىدەن جاساعان ۇلەستەردى كورسەت',
'sp-contributions-newbies-sub' => 'جاڭادان تىركەلگى جاساعاندار ٴۇشىن',
'sp-contributions-blocklog' => 'بۇعاتتاۋ جۋرنالى',
+'sp-contributions-deleted' => 'قاتىسۋشىنىڭ جويىلعان ۇلەسى',
+'sp-contributions-talk' => 'تالقىلاۋى',
+'sp-contributions-userrights' => 'قاتىسۋشى قۇقىقتارىن رەتتەۋ',
'sp-contributions-search' => 'ۇلەس ٴۇشىن ىزدەۋ',
'sp-contributions-username' => 'IP مەكەنجايى نە قاتىسۋشى اتى:',
'sp-contributions-submit' => 'ىزدە',
@@ -2094,7 +2065,7 @@ $1',
'ipbenableautoblock' => 'بۇل قاتىسۋشى سوڭعى قولدانعان IP مەكەنجايىن, جانە كەيىن وڭدەۋگە بايقاپ كورگەن ٴار IP مەكەنجايلارىن وزبۇعاتتاۋى',
'ipbsubmit' => 'قاتىسۋشىنى بۇعاتتا',
'ipbother' => 'باسقا مەرزىمى:',
-'ipboptions' => '2 ساعات:2 hours,1 كۇن:1 day,3 كۇن:3 days,1 اپتا:1 week,2 اپتا:2 weeks,1 اي:1 month,3 اي:3 months,6 اي:6 months,1 جىل:1 year,مانگى:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ساعات:2 hours,1 كۇن:1 day,3 كۇن:3 days,1 اپتا:1 week,2 اپتا:2 weeks,1 اي:1 month,3 اي:3 months,6 اي:6 months,1 جىل:1 year,مانگى:infinite',
'ipbotheroption' => 'باسقا',
'ipbotherreason' => 'باسقا/قوسىمشا سەبەپ:',
'ipbhidename' => 'قاتىسۋشى اتىن بۇعاتتاۋ جۋرنالىننان, بەلسەندى بۇعاتتاۋ تىزىمىنەن, قاتىسۋشى تىزىمىنەن جاسىرۋ',
@@ -2119,7 +2090,7 @@ $1',
'ipblocklist-submit' => 'ىزدە',
'blocklistline' => '$1, $2 $3 دەگەندى بۇعاتتادى ($4)',
'infiniteblock' => 'مانگى',
-'expiringblock' => 'مەرزىمى بىتپەك: $1',
+'expiringblock' => 'مەرزىمى بىتپەك: $1 $2',
'anononlyblock' => 'تەك تىركەلگىسىزدەردى',
'noautoblockblock' => 'وزبۇعاتتاۋ وشىرىلگەن',
'createaccountblock' => 'تىركەلۋ بۇعاتتالعان',
@@ -2262,8 +2233,6 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەت
'allmessagestext' => 'مىندا {{ns:mediawiki}} ەسىم اياسىندا جەتىمدى جۇيە حابار ٴتىزىمى بەرىلەدى.
ەگەر امبەباپ MediaWiki جەرسىندىرۋگە ۇلەس قوسقىڭىز كەلسە [http://www.mediawiki.org/wiki/Localisation MediaWiki جەرسىندىرۋ بەتىنە] جانە [http://translatewiki.net translatewiki.net جوباسىنا] بارىپ شىعىڭىز.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' وشىرىلگەن سەبەبىنەن '''{{ns:special}}:AllMessages''' بەتى قولدانىلمايدى.",
-'allmessagesfilter' => 'حاباردى اتاۋىمەن سۇزگىلەۋ:',
-'allmessagesmodified' => 'تەك وزگەرتىلگەندى كورسەت',
# Thumbnails
'thumbnail-more' => 'ۇلكەيتۋ',
@@ -2405,7 +2374,7 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەت
# Attribution
'anonymous' => '{{SITENAME}} تىركەلگىسىز قاتىسۋشى(لارى)',
'siteuser' => '{{SITENAME}} قاتىسۋشى $1',
-'lastmodifiedatby' => 'بۇل بەتتى $3 قاتىسۋشى سوڭعى وزگەرتكەن كەزى: $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'بۇل بەتتى $3 قاتىسۋشى سوڭعى وزگەرتكەن كەزى: $2, $1.',
'othercontribs' => 'شىعارما نەگىزىن $1 جازعان.',
'others' => 'باسقالار',
'siteusers' => '{{SITENAME}} قاتىسۋشى(لار) $1',
@@ -2447,6 +2416,19 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەت
'mw_math_modern' => 'وسى زامانعى شولعىشتارىنا ۇسىنىلادى',
'mw_math_mathml' => 'ەگەر ىقتىيمال بولسا — MathML (سىناقتاما)',
+# Math errors
+'math_failure' => 'قۇرىلىمىن تالداتۋى ٴساتسىز ٴبىتتى',
+'math_unknown_error' => 'بەلگىسىز قاتە',
+'math_unknown_function' => 'بەلگىسىز جەتە',
+'math_lexing_error' => 'ٴسوز كەنىنىڭ قاتەسى',
+'math_syntax_error' => 'سويلەم جۇيەسىنىڭ قاتەسى',
+'math_image_error' => 'PNG اۋدارىسى ٴساتسىز ٴبىتتى;
+latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس ورناتۋىن تەكسەرىپ شىعىڭىز',
+'math_bad_tmpdir' => 'math دەگەن ۋاقىتشا قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
+'math_bad_output' => 'math دەگەن بەرىس قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
+'math_notexvc' => 'texvc اتقارىلمالىسى تابىلمادى;
+باپتاۋ ٴۇشىن math/README قۇجاتىن قاراڭىز.',
+
# Patrolling
'markaspatrolleddiff' => 'زەرتتەلدى دەپ بەلگىلەۋ',
'markaspatrolledtext' => 'بۇل بەتتى زەرتتەلدى دەپ بەلگىلە',
@@ -2529,7 +2511,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'ەنى',
@@ -2656,14 +2638,14 @@ $1',
'exif-unknowndate' => 'بەلگىسىز كۇن-ايى',
-'exif-orientation-1' => 'قالىپتى', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'دەرەلەي شاعىلىسقان', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° بۇرىشقا اينالعان', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'تىرەلەي شاعىلىسقان', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'ساعات تىلشەسىنە قارسى 90° بۇرىشقا اينالعان جانە تىرەلەي شاعىلىسقان', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'ساعات تىلشە بويىنشا 90° بۇرىشقا اينالعان', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'ساعات تىلشە بويىنشا 90° بۇرىشقا اينالعان جانە تىرەلەي شاعىلىسقان', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'ساعات تىلشەسىنە قارسى 90° بۇرىشقا اينالعان', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'قالىپتى',
+'exif-orientation-2' => 'دەرەلەي شاعىلىسقان',
+'exif-orientation-3' => '180° بۇرىشقا اينالعان',
+'exif-orientation-4' => 'تىرەلەي شاعىلىسقان',
+'exif-orientation-5' => 'ساعات تىلشەسىنە قارسى 90° بۇرىشقا اينالعان جانە تىرەلەي شاعىلىسقان',
+'exif-orientation-6' => 'ساعات تىلشە بويىنشا 90° بۇرىشقا اينالعان',
+'exif-orientation-7' => 'ساعات تىلشە بويىنشا 90° بۇرىشقا اينالعان جانە تىرەلەي شاعىلىسقان',
+'exif-orientation-8' => 'ساعات تىلشەسىنە قارسى 90° بۇرىشقا اينالعان',
'exif-planarconfiguration-1' => 'تالپاق ٴپىشىم',
'exif-planarconfiguration-2' => 'تايپاق ٴپىشىم',
@@ -2773,7 +2755,7 @@ $1',
'exif-gpsmeasuremode-2' => '2-باعىتتىق ولشەم',
'exif-gpsmeasuremode-3' => '3-باعىتتىق ولشەم',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mil/h',
'exif-gpsspeed-n' => 'knot',
@@ -2975,7 +2957,7 @@ $1',
'unknown_extension_tag' => 'تانىلماعان كەڭەيتپە بەلگىسى «$1»',
# Special:Version
-'version' => 'جۇيە نۇسقاسى', # Not used as normal message but as header for the special page itself
+'version' => 'جۇيە نۇسقاسى',
'version-extensions' => 'ورناتىلعان كەڭەيتىمدەر',
'version-specialpages' => 'ارنايى بەتتەر',
'version-parserhooks' => 'قۇرىلىمدىق تالداتقىشتىڭ تۇزاقتارى',
@@ -2989,7 +2971,7 @@ $1',
'version-skin-extension-functions' => 'مانەر كەڭەيتىمدەرىنىڭ جەتەلەرى',
'version-hook-name' => 'تۇزاق اتاۋى',
'version-hook-subscribedby' => 'تۇزاق تارتقىشتارى',
-'version-version' => 'نۇسقاسى:',
+'version-version' => '(نۇسقاسى: $1)',
'version-license' => 'لىيتسەنزىيياسى',
'version-software' => 'ورناتىلعان باعدارلامالىق جاساقتاما',
'version-software-product' => 'ٴونىم',
diff --git a/languages/messages/MessagesKk_cn.php b/languages/messages/MessagesKk_cn.php
index 4fef8156..e96d890f 100644
--- a/languages/messages/MessagesKk_cn.php
+++ b/languages/messages/MessagesKk_cn.php
@@ -1,6 +1,9 @@
<?php
/** Kazakh (China) (‫قازاقشا (جۇنگو)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesKk_cyrl.php b/languages/messages/MessagesKk_cyrl.php
index 22dc44cc..a039a64e 100644
--- a/languages/messages/MessagesKk_cyrl.php
+++ b/languages/messages/MessagesKk_cyrl.php
@@ -36,11 +36,9 @@ $fallback8bitEncoding = 'windows-1251';
$namespaceNames = array(
NS_MEDIA => 'Таспа',
NS_SPECIAL => 'Арнайы',
- NS_MAIN => '',
NS_TALK => 'Талқылау',
NS_USER => 'Қатысушы',
NS_USER_TALK => 'Қатысушы_талқылауы',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_талқылауы',
NS_FILE => 'Сурет',
NS_FILE_TALK => 'Сурет_талқылауы',
@@ -51,7 +49,7 @@ $namespaceNames = array(
NS_HELP => 'Анықтама',
NS_HELP_TALK => 'Анықтама_талқылауы',
NS_CATEGORY => 'Санат',
- NS_CATEGORY_TALK => 'Санат_талқылауы'
+ NS_CATEGORY_TALK => 'Санат_талқылауы',
);
$namespaceAliases = array(
@@ -152,131 +150,130 @@ $dateFormats = array(
);
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#REDIRECT', '#АЙДАУ' ),
- 'notoc' => array( 0, '__МАЗМҰНСЫЗ__', '__МСЫЗ__', '__NOTOC__' ),
- 'nogallery' => array( 0, '__ҚОЙМАСЫЗ__', '__ҚСЫЗ__', '__NOGALLERY__' ),
- 'forcetoc' => array( 0, '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ),
- 'toc' => array( 0, '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ),
- 'noeditsection' => array( 0, '__БӨЛІДІМӨНДЕМЕУ__', '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( 1, 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH' ),
- 'currentmonthname' => array( 1, 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( 1, 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( 1, 'АҒЫМДАҒЫАЙЖИЫР', 'АҒЫМДАҒЫАЙҚЫСҚА', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( 1, 'АҒЫМДАҒЫКҮН', 'CURRENTDAY' ),
- 'currentday2' => array( 1, 'АҒЫМДАҒЫКҮН2', 'CURRENTDAY2' ),
- 'currentdayname' => array( 1, 'АҒЫМДАҒЫКҮНАТАУЫ', 'CURRENTDAYNAME' ),
- 'currentyear' => array( 1, 'АҒЫМДАҒЫЖЫЛ', 'CURRENTYEAR' ),
- 'currenttime' => array( 1, 'АҒЫМДАҒЫУАҚЫТ', 'CURRENTTIME' ),
- 'currenthour' => array( 1, 'АҒЫМДАҒЫСАҒАТ', 'CURRENTHOUR' ),
- 'localmonth' => array( 1, 'ЖЕРГІЛІКТІАЙ', 'LOCALMONTH' ),
- 'localmonthname' => array( 1, 'ЖЕРГІЛІКТІАЙАТАУЫ', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( 1, 'ЖЕРГІЛІКТІАЙІЛІКАТАУЫ', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( 1, 'ЖЕРГІЛІКТІАЙЖИЫР', 'ЖЕРГІЛІКТІАЙҚЫСҚАША', 'ЖЕРГІЛІКТІАЙҚЫСҚА', 'LOCALMONTHABBREV' ),
- 'localday' => array( 1, 'ЖЕРГІЛІКТІКҮН', 'LOCALDAY' ),
- 'localday2' => array( 1, 'ЖЕРГІЛІКТІКҮН2', 'LOCALDAY2' ),
- 'localdayname' => array( 1, 'ЖЕРГІЛІКТІКҮНАТАУЫ', 'LOCALDAYNAME' ),
- 'localyear' => array( 1, 'ЖЕРГІЛІКТІЖЫЛ', 'LOCALYEAR' ),
- 'localtime' => array( 1, 'ЖЕРГІЛІКТІУАҚЫТ', 'LOCALTIME' ),
- 'localhour' => array( 1, 'ЖЕРГІЛІКТІСАҒАТ', 'LOCALHOUR' ),
- 'numberofpages' => array( 1, 'БЕТСАНЫ', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( 1, 'МАҚАЛАСАНЫ', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( 1, 'ФАЙЛСАНЫ', 'NUMBEROFFILES' ),
- 'numberofusers' => array( 1, 'ҚАТЫСУШЫСАНЫ', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( 1, 'ӨҢДЕМЕСАНЫ', 'ТҮЗЕТУСАНЫ', 'NUMBEROFEDITS' ),
- 'pagename' => array( 1, 'БЕТАТАУЫ', 'PAGENAME' ),
- 'pagenamee' => array( 1, 'БЕТАТАУЫ2', 'PAGENAMEE' ),
- 'namespace' => array( 1, 'ЕСІМАЯСЫ', 'NAMESPACE' ),
- 'namespacee' => array( 1, 'ЕСІМАЯСЫ2', 'NAMESPACEE' ),
- 'talkspace' => array( 1, 'ТАЛҚЫЛАУАЯСЫ', 'TALKSPACE' ),
- 'talkspacee' => array( 1, 'ТАЛҚЫЛАУАЯСЫ2', 'TALKSPACEE' ),
- 'subjectspace' => array( 1, 'ТАҚЫРЫПБЕТІ', 'МАҚАЛАБЕТІ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( 1, 'ТАҚЫРЫПБЕТІ2', 'МАҚАЛАБЕТІ2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( 1, 'ТОЛЫҚБЕТАТАУЫ', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( 1, 'ТОЛЫҚБЕТАТАУЫ2', 'FULLPAGENAMEE' ),
- 'subpagename' => array( 1, 'БЕТШЕАТАУЫ', 'АСТЫҢҒЫБЕТАТАУЫ', 'SUBPAGENAME' ),
- 'subpagenamee' => array( 1, 'БЕТШЕАТАУЫ2', 'АСТЫҢҒЫБЕТАТАУЫ2', 'SUBPAGENAMEE' ),
- 'basepagename' => array( 1, 'НЕГІЗГІБЕТАТАУЫ', 'BASEPAGENAME' ),
- 'basepagenamee' => array( 1, 'НЕГІЗГІБЕТАТАУЫ2', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( 1, 'ТАЛҚЫЛАУБЕТАТАУЫ', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( 1, 'ТАЛҚЫЛАУБЕТАТАУЫ2', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( 1, 'ТАҚЫРЫПБЕТАТАУЫ', 'МАҚАЛАБЕТАТАУЫ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( 1, 'ТАҚЫРЫПБЕТАТАУЫ2', 'МАҚАЛАБЕТАТАУЫ2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( 0, 'ХБР:', 'MSG:' ),
- 'subst' => array( 0, 'БӘДЕЛ:', 'SUBST:' ),
- 'msgnw' => array( 0, 'УИКИСІЗХБР:', 'MSGNW:' ),
- 'img_thumbnail' => array( 1, 'нобай', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( 1, 'нобай=$1', 'thumbnail=$1', 'thumb=$1'),
- 'img_right' => array( 1, 'оңға', 'оң', 'right' ),
- 'img_left' => array( 1, 'солға', 'сол', 'left' ),
- 'img_none' => array( 1, 'ешқандай', 'жоқ', 'none' ),
- 'img_width' => array( 1, '$1 нүкте', '$1px' ),
- 'img_center' => array( 1, 'ортаға', 'орта', 'center', 'centre' ),
- 'img_framed' => array( 1, 'сүрмелі', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( 1, 'сүрмесіз', 'frameless' ),
- 'img_page' => array( 1, 'бет=$1', 'бет $1', 'page=$1', 'page $1' ),
- 'img_upright' => array( 1, 'тікті', 'тіктік=$1', 'тіктік $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( 1, 'жиекті', 'border' ),
- 'img_baseline' => array( 1, 'тірекжол', 'baseline' ),
- 'img_sub' => array( 1, 'астылығы', 'аст', 'sub'),
- 'img_super' => array( 1, 'үстілігі', 'үст', 'sup', 'super', 'sup' ),
- 'img_top' => array( 1, 'үстіне', 'top' ),
- 'img_text_top' => array( 1, 'мәтін-үстінде', 'text-top' ),
- 'img_middle' => array( 1, 'аралығына', 'middle' ),
- 'img_bottom' => array( 1, 'астына', 'bottom' ),
- 'img_text_bottom' => array( 1, 'мәтін-астында', 'text-bottom' ),
- 'int' => array( 0, 'ІШКІ:', 'INT:' ),
- 'sitename' => array( 1, 'ТОРАПАТАУЫ', 'SITENAME' ),
- 'ns' => array( 0, 'ЕА:', 'ЕСІМАЯ:', 'NS:' ),
- 'localurl' => array( 0, 'ЖЕРГІЛІКТІЖАЙ:', 'LOCALURL:' ),
- 'localurle' => array( 0, 'ЖЕРГІЛІКТІЖАЙ2:', 'LOCALURLE:' ),
- 'server' => array( 0, 'СЕРВЕР', 'SERVER' ),
- 'servername' => array( 0, 'СЕРВЕРАТАУЫ', 'SERVERNAME' ),
- 'scriptpath' => array( 0, 'ӘМІРЖОЛЫ', 'SCRIPTPATH' ),
- 'grammar' => array( 0, 'СЕПТІГІ:', 'СЕПТІК:', 'GRAMMAR:' ),
- 'notitleconvert' => array( 0, '__ТАҚЫРЫПАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__ТАТЖОҚ__', '__АТАУАЛМАСТЫРҒЫЗБАУ__', '__ААБАУ__', '__NOTITLECONVERT__', '__NOTC__' ),
- 'nocontentconvert' => array( 0, '__МАҒЛҰМАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__МАТЖОҚ__', '__МАҒЛҰМАТАЛМАСТЫРҒЫЗБАУ__', '__МАБАУ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( 1, 'АҒЫМДАҒЫАПТАСЫ', 'АҒЫМДАҒЫАПТА', 'CURRENTWEEK' ),
- 'currentdow' => array( 1, 'АҒЫМДАҒЫАПТАКҮНІ', 'CURRENTDOW' ),
- 'localweek' => array( 1, 'ЖЕРГІЛІКТІАПТАСЫ', 'ЖЕРГІЛІКТІАПТА', 'LOCALWEEK' ),
- 'localdow' => array( 1, 'ЖЕРГІЛІКТІАПТАКҮНІ', 'LOCALDOW' ),
- 'revisionid' => array( 1, 'ТҮЗЕТУНӨМІРІ', 'НҰСҚАНӨМІРІ', 'REVISIONID' ),
- 'revisionday' => array( 1, 'ТҮЗЕТУКҮНІ','НҰСҚАКҮНІ', 'REVISIONDAY' ),
- 'revisionday2' => array( 1, 'ТҮЗЕТУКҮНІ2', 'НҰСҚАКҮНІ2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( 1, 'ТҮЗЕТУАЙЫ', 'НҰСҚААЙЫ', 'REVISIONMONTH' ),
- 'revisionyear' => array( 1, 'ТҮЗЕТУЖЫЛЫ', 'НҰСҚАЖЫЛЫ', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( 1, 'ТҮЗЕТУУАҚЫТЫТАҢБАСЫ', 'НҰСҚАУАҚЫТТҮЙІНДЕМЕСІ', 'REVISIONTIMESTAMP' ),
- 'plural' => array( 0, 'КӨПШЕТҮРІ:','КӨПШЕ:', 'PLURAL:' ),
- 'fullurl' => array( 0, 'ТОЛЫҚЖАЙЫ:', 'ТОЛЫҚЖАЙ:', 'FULLURL:' ),
- 'fullurle' => array( 0, 'ТОЛЫҚЖАЙЫ2:', 'ТОЛЫҚЖАЙ2:', 'FULLURLE:' ),
- 'lcfirst' => array( 0, 'КӘ1:', 'КІШІӘРІППЕН1:', 'LCFIRST:' ),
- 'ucfirst' => array( 0, 'БӘ1:', 'БАСӘРІППЕН1:', 'UCFIRST:' ),
- 'lc' => array( 0, 'КӘ:', 'КІШІӘРІППЕН:', 'LC:' ),
- 'uc' => array( 0, 'БӘ:', 'БАСӘРІППЕН:', 'UC:' ),
- 'raw' => array( 0, 'ҚАМ:', 'RAW:' ),
- 'displaytitle' => array( 1, 'КӨРІНЕТІНТАҚЫРЫАПАТЫ', 'КӨРСЕТІЛЕТІНАТАУ', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( 1, 'Қ', 'R' ),
- 'newsectionlink' => array( 1, '__ЖАҢАБӨЛІМСІЛТЕМЕСІ__', '__NEWSECTIONLINK__' ),
- 'currentversion' => array( 1, 'БАҒДАРЛАМАНҰСҚАСЫ', 'CURRENTVERSION' ),
- 'urlencode' => array( 0, 'ЖАЙДЫМҰҚАМДАУ:', 'URLENCODE:' ),
- 'anchorencode' => array( 0, 'ЖӘКІРДІМҰҚАМДАУ', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( 1, 'АҒЫМДАҒЫУАҚЫТТҮЙІНДЕМЕСІ', 'АҒЫМДАҒЫУАҚЫТТҮЙІН', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( 1, 'ЖЕРГІЛІКТІУАҚЫТТҮЙІНДЕМЕСІ', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІН', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( 1, 'БАҒЫТБЕЛГІСІ', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( 0, '#ТІЛ:', '#LANGUAGE:' ),
- 'contentlanguage' => array( 1, 'МАҒЛҰМАТТІЛІ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( 1, 'ЕСІМАЯБЕТСАНЫ:', 'ЕАБЕТСАНЫ:', 'АЯБЕТСАНЫ:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( 1, 'ӘКІМШІСАНЫ', 'NUMBEROFADMINS' ),
- 'formatnum' => array( 0, 'САНПІШІМІ', 'FORMATNUM' ),
- 'padleft' => array( 0, 'СОЛҒАЫҒЫС', 'СОЛЫҒЫС', 'PADLEFT' ),
- 'padright' => array( 0, 'ОҢҒАЫҒЫС', 'ОҢЫҒЫС', 'PADRIGHT' ),
- 'special' => array( 0, 'арнайы', 'special' ),
- 'defaultsort' => array( 1, 'ӘДЕПКІСҰРЫПТАУ:', 'ӘДЕПКІСАНАТСҰРЫПТАУ:', 'ӘДЕПКІСҰРЫПТАУКІЛТІ:', 'ӘДЕПКІСҰРЫП:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( 0, 'ФАЙЛМЕКЕНІ:', 'FILEPATH:' ),
- 'tag' => array( 0, 'белгі', 'tag' ),
- 'hiddencat' => array( 1, '__ЖАСЫРЫНСАНАТ__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( 1, 'САНАТТАҒЫБЕТТЕР', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( 1, 'БЕТМӨЛШЕРІ', 'PAGESIZE' ),
+ 'redirect' => array( '0', '#АЙДАУ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__МАЗМҰНСЫЗ__', '__МСЫЗ__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__ҚОЙМАСЫЗ__', '__ҚСЫЗ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__БӨЛІДІМӨНДЕМЕУ__', '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'АҒЫМДАҒЫАЙЖИЫР', 'АҒЫМДАҒЫАЙҚЫСҚА', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'АҒЫМДАҒЫКҮН', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'АҒЫМДАҒЫКҮН2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'АҒЫМДАҒЫКҮНАТАУЫ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'АҒЫМДАҒЫЖЫЛ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'АҒЫМДАҒЫУАҚЫТ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'АҒЫМДАҒЫСАҒАТ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'ЖЕРГІЛІКТІАЙ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'ЖЕРГІЛІКТІАЙАТАУЫ', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'ЖЕРГІЛІКТІАЙІЛІКАТАУЫ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ЖЕРГІЛІКТІАЙЖИЫР', 'ЖЕРГІЛІКТІАЙҚЫСҚАША', 'ЖЕРГІЛІКТІАЙҚЫСҚА', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'ЖЕРГІЛІКТІКҮН', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ЖЕРГІЛІКТІКҮН2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'ЖЕРГІЛІКТІКҮНАТАУЫ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ЖЕРГІЛІКТІЖЫЛ', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'ЖЕРГІЛІКТІУАҚЫТ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ЖЕРГІЛІКТІСАҒАТ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'БЕТСАНЫ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'МАҚАЛАСАНЫ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ФАЙЛСАНЫ', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ҚАТЫСУШЫСАНЫ', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'ӨҢДЕМЕСАНЫ', 'ТҮЗЕТУСАНЫ', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'БЕТАТАУЫ', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'БЕТАТАУЫ2', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ЕСІМАЯСЫ', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ЕСІМАЯСЫ2', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ТАЛҚЫЛАУАЯСЫ', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ТАЛҚЫЛАУАЯСЫ2', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ТАҚЫРЫПБЕТІ', 'МАҚАЛАБЕТІ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ТАҚЫРЫПБЕТІ2', 'МАҚАЛАБЕТІ2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'ТОЛЫҚБЕТАТАУЫ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'ТОЛЫҚБЕТАТАУЫ2', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'БЕТШЕАТАУЫ', 'АСТЫҢҒЫБЕТАТАУЫ', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'БЕТШЕАТАУЫ2', 'АСТЫҢҒЫБЕТАТАУЫ2', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'НЕГІЗГІБЕТАТАУЫ', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'НЕГІЗГІБЕТАТАУЫ2', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'ТАЛҚЫЛАУБЕТАТАУЫ', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'ТАЛҚЫЛАУБЕТАТАУЫ2', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'ТАҚЫРЫПБЕТАТАУЫ', 'МАҚАЛАБЕТАТАУЫ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'ТАҚЫРЫПБЕТАТАУЫ2', 'МАҚАЛАБЕТАТАУЫ2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'ХБР:', 'MSG:' ),
+ 'subst' => array( '0', 'БӘДЕЛ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'УИКИСІЗХБР:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'нобай', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'нобай=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'оңға', 'оң', 'right' ),
+ 'img_left' => array( '1', 'солға', 'сол', 'left' ),
+ 'img_none' => array( '1', 'ешқандай', 'жоқ', 'none' ),
+ 'img_width' => array( '1', '$1 нүкте', '$1px' ),
+ 'img_center' => array( '1', 'ортаға', 'орта', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'сүрмелі', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'сүрмесіз', 'frameless' ),
+ 'img_page' => array( '1', 'бет=$1', 'бет $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'тікті', 'тіктік=$1', 'тіктік $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'жиекті', 'border' ),
+ 'img_baseline' => array( '1', 'тірекжол', 'baseline' ),
+ 'img_sub' => array( '1', 'астылығы', 'аст', 'sub' ),
+ 'img_super' => array( '1', 'үстілігі', 'үст', 'super', 'sup' ),
+ 'img_top' => array( '1', 'үстіне', 'top' ),
+ 'img_text_top' => array( '1', 'мәтін-үстінде', 'text-top' ),
+ 'img_middle' => array( '1', 'аралығына', 'middle' ),
+ 'img_bottom' => array( '1', 'астына', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'мәтін-астында', 'text-bottom' ),
+ 'int' => array( '0', 'ІШКІ:', 'INT:' ),
+ 'sitename' => array( '1', 'ТОРАПАТАУЫ', 'SITENAME' ),
+ 'ns' => array( '0', 'ЕА:', 'ЕСІМАЯ:', 'NS:' ),
+ 'localurl' => array( '0', 'ЖЕРГІЛІКТІЖАЙ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ЖЕРГІЛІКТІЖАЙ2:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
+ 'servername' => array( '0', 'СЕРВЕРАТАУЫ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'ӘМІРЖОЛЫ', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'СЕПТІГІ:', 'СЕПТІК:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__ТАҚЫРЫПАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__ТАТЖОҚ__', '__АТАУАЛМАСТЫРҒЫЗБАУ__', '__ААБАУ__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__МАҒЛҰМАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__МАТЖОҚ__', '__МАҒЛҰМАТАЛМАСТЫРҒЫЗБАУ__', '__МАБАУ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'АҒЫМДАҒЫАПТАСЫ', 'АҒЫМДАҒЫАПТА', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'АҒЫМДАҒЫАПТАКҮНІ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'ЖЕРГІЛІКТІАПТАСЫ', 'ЖЕРГІЛІКТІАПТА', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'ЖЕРГІЛІКТІАПТАКҮНІ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'ТҮЗЕТУНӨМІРІ', 'НҰСҚАНӨМІРІ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'ТҮЗЕТУКҮНІ', 'НҰСҚАКҮНІ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'ТҮЗЕТУКҮНІ2', 'НҰСҚАКҮНІ2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'ТҮЗЕТУАЙЫ', 'НҰСҚААЙЫ', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ТҮЗЕТУЖЫЛЫ', 'НҰСҚАЖЫЛЫ', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'ТҮЗЕТУУАҚЫТЫТАҢБАСЫ', 'НҰСҚАУАҚЫТТҮЙІНДЕМЕСІ', 'REVISIONTIMESTAMP' ),
+ 'plural' => array( '0', 'КӨПШЕТҮРІ:', 'КӨПШЕ:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'ТОЛЫҚЖАЙЫ:', 'ТОЛЫҚЖАЙ:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'ТОЛЫҚЖАЙЫ2:', 'ТОЛЫҚЖАЙ2:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'КӘ1:', 'КІШІӘРІППЕН1:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'БӘ1:', 'БАСӘРІППЕН1:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'КӘ:', 'КІШІӘРІППЕН:', 'LC:' ),
+ 'uc' => array( '0', 'БӘ:', 'БАСӘРІППЕН:', 'UC:' ),
+ 'raw' => array( '0', 'ҚАМ:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'КӨРІНЕТІНТАҚЫРЫАПАТЫ', 'КӨРСЕТІЛЕТІНАТАУ', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'Қ', 'R' ),
+ 'newsectionlink' => array( '1', '__ЖАҢАБӨЛІМСІЛТЕМЕСІ__', '__NEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'БАҒДАРЛАМАНҰСҚАСЫ', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'ЖАЙДЫМҰҚАМДАУ:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'ЖӘКІРДІМҰҚАМДАУ', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'АҒЫМДАҒЫУАҚЫТТҮЙІНДЕМЕСІ', 'АҒЫМДАҒЫУАҚЫТТҮЙІН', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІНДЕМЕСІ', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІН', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'БАҒЫТБЕЛГІСІ', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#ТІЛ:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'МАҒЛҰМАТТІЛІ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'ЕСІМАЯБЕТСАНЫ:', 'ЕАБЕТСАНЫ:', 'АЯБЕТСАНЫ:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'ӘКІМШІСАНЫ', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'САНПІШІМІ', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'СОЛҒАЫҒЫС', 'СОЛЫҒЫС', 'PADLEFT' ),
+ 'padright' => array( '0', 'ОҢҒАЫҒЫС', 'ОҢЫҒЫС', 'PADRIGHT' ),
+ 'special' => array( '0', 'арнайы', 'special' ),
+ 'defaultsort' => array( '1', 'ӘДЕПКІСҰРЫПТАУ:', 'ӘДЕПКІСАНАТСҰРЫПТАУ:', 'ӘДЕПКІСҰРЫПТАУКІЛТІ:', 'ӘДЕПКІСҰРЫП:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'ФАЙЛМЕКЕНІ:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'белгі', 'tag' ),
+ 'hiddencat' => array( '1', '__ЖАСЫРЫНСАНАТ__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'САНАТТАҒЫБЕТТЕР', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'БЕТМӨЛШЕРІ', 'PAGESIZE' ),
);
$specialPageAliases = array(
@@ -308,10 +305,10 @@ $specialPageAliases = array(
'Mostlinked' => array( 'Ең_көп_сілтенген_беттер' ),
'Mostlinkedcategories' => array( 'Ең_көп_пайдаланылған_санаттар', 'Ең_көп_сілтенген_санаттар' ),
'Mostlinkedtemplates' => array( 'Ең_көп_пайдаланылған_үлгілер', 'Ең_көп_сілтенген_үлгілер' ),
- 'Mostcategories' => array( 'Ең_көп_санаттар_бары' ),
'Mostimages' => array( 'Ең_көп_пайдаланылған_суреттер', 'Ең_көп_суреттер_бары' ),
+ 'Mostcategories' => array( 'Ең_көп_санаттар_бары' ),
'Mostrevisions' => array( 'Ең_көп_түзетілген', 'Ең_көп_нұсқалар_бары' ),
- 'Fewestrevisions' => array( 'Ең_аз_түзетілген ' ),
+ 'Fewestrevisions' => array( 'Ең_аз_түзетілген' ),
'Shortpages' => array( 'Қысқа_беттер' ),
'Longpages' => array( 'Ұзын_беттер', 'Үлкен_беттер' ),
'Newpages' => array( 'Жаңа_беттер' ),
@@ -320,7 +317,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'Қорғалған_беттер' ),
'Protectedtitles' => array( 'Қорғалған_тақырыптар', 'Қорғалған_атаулар' ),
'Allpages' => array( 'Барлық_беттер' ),
- 'Prefixindex' => array( 'Бастауыш_тізімі' ) ,
+ 'Prefixindex' => array( 'Бастауыш_тізімі' ),
'Ipblocklist' => array( 'Бұғатталғандар' ),
'Specialpages' => array( 'Арнайы_беттер' ),
'Contributions' => array( 'Үлесі' ),
@@ -329,14 +326,14 @@ $specialPageAliases = array(
'Whatlinkshere' => array( 'Мында_сілтегендер' ),
'Recentchangeslinked' => array( 'Сілтенгендердің_өзгерістері', 'Қатысты_өзгерістер' ),
'Movepage' => array( 'Бетті_жылжыту' ),
- 'Blockme' => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау',),
+ 'Blockme' => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау' ),
'Booksources' => array( 'Кітап_қайнарлары' ),
'Categories' => array( 'Санаттар' ),
'Export' => array( 'Сыртқа_беру' ),
'Version' => array( 'Нұсқасы' ),
'Allmessages' => array( 'Барлық_хабарлар' ),
'Log' => array( 'Журнал', 'Журналдар' ),
- 'Blockip' => array( 'Жайды_бұғаттау', 'IP_бұғаттау'),
+ 'Blockip' => array( 'Жайды_бұғаттау', 'IP_бұғаттау' ),
'Undelete' => array( 'Жоюды_болдырмау', 'Жойылғанды_қайтару' ),
'Import' => array( 'Сырттан_алу' ),
'Lockdb' => array( 'Дерекқорды_құлыптау' ),
@@ -352,7 +349,7 @@ $specialPageAliases = array(
'Mypage' => array( 'Жеке_бетім' ),
'Mytalk' => array( 'Талқылауым' ),
'Mycontributions' => array( 'Үлесім' ),
- 'Listadmins' => array( 'Әкімшілер', 'Әкімші_тізімі'),
+ 'Listadmins' => array( 'Әкімшілер', 'Әкімші_тізімі' ),
'Listbots' => array( 'Боттар', 'Боттар_тізімі' ),
'Popularpages' => array( 'Ең_көп_қаралған_беттер', 'Әйгілі_беттер' ),
'Search' => array( 'Іздеу' ),
@@ -469,7 +466,7 @@ $messages = array(
'category-media-header' => '«$1» санатындағы таспалар',
'category-empty' => "''Бұл санатта ағымда еш бет не таспа жоқ.''",
'hidden-categories' => '{{PLURAL:$1|Жасырын санат|Жасырын санаттар}}',
-'hidden-category-category' => 'Жасырын санаттар', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Жасырын санаттар',
'category-subcat-count' => '{{PLURAL:$2|Бұл санатта тек келесі санатша бар.|Бұл санатта келесі $1 санатша бар (не барлығы $2).}}',
'category-subcat-count-limited' => 'Бұл санатта келесі $1 санатша бар.',
'category-article-count' => '{{PLURAL:$2|Бұл санатта тек келесі бет бар.|Бұл санатта келесі $1 бет бар (не барлығы $2).}}',
@@ -486,10 +483,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаУикидің Жиы Қойылған Сауалдары]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаУики шығу туралы хат тарату тізімі]',
-'about' => 'Жоба туралы',
-'article' => 'Мағлұмат беті',
-'newwindow' => '(жаңа терезеде)',
-'cancel' => 'Болдырмау',
+'about' => 'Жоба туралы',
+'article' => 'Мағлұмат беті',
+'newwindow' => '(жаңа терезеде)',
+'cancel' => 'Болдырмау',
+'moredotdotdot' => 'Көбірек…',
+'mypage' => 'Жеке бетім',
+'mytalk' => 'Талқылауым',
+'anontalk' => 'IP талқылауы',
+'navigation' => 'Шарлау',
+'and' => '&#32;және',
+
+# Cologne Blue skin
'qbfind' => 'Табу',
'qbbrowse' => 'Шолу',
'qbedit' => 'Өңдеу',
@@ -497,15 +502,34 @@ $messages = array(
'qbpageinfo' => 'Айнала',
'qbmyoptions' => 'Беттерім',
'qbspecialpages' => 'Арнайы беттер',
-'moredotdotdot' => 'Көбірек…',
-'mypage' => 'Жеке бетім',
-'mytalk' => 'Талқылауым',
-'anontalk' => 'IP талқылауы',
-'navigation' => 'Шарлау',
-'and' => '&#32;және',
-
-# Metadata in edit box
-'metadata_help' => 'Қосымша деректер:',
+'faq' => 'Жиі қойылған сауалдар',
+'faqpage' => 'Project:Жиі қойылған сауалдар',
+
+# Vector skin
+'vector-action-addsection' => 'Тақырып қосу',
+'vector-action-delete' => 'Жою',
+'vector-action-move' => 'Жылжыту',
+'vector-action-protect' => 'Қорғау',
+'vector-action-undelete' => 'Жоймау',
+'vector-action-unprotect' => 'Қорғамау',
+'vector-namespace-category' => 'Санат',
+'vector-namespace-help' => 'Анықтама',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Бет',
+'vector-namespace-media' => 'Таспа беті',
+'vector-namespace-mediawiki' => 'Хабар',
+'vector-namespace-project' => 'Жоба беті',
+'vector-namespace-special' => 'Арнайы бет',
+'vector-namespace-talk' => 'Талқылау',
+'vector-namespace-template' => 'Үлгі',
+'vector-namespace-user' => 'Жеке бет',
+'vector-view-create' => 'Бастау',
+'vector-view-edit' => 'Өңдеу',
+'vector-view-history' => 'Тарихы',
+'vector-view-view' => 'Оқу',
+'vector-view-viewsource' => 'Қайнар көзін қарау',
+'actions' => 'Әрекеттер',
+'namespaces' => 'Есім аялары',
'errorpagetitle' => 'Қателік',
'returnto' => '$1 дегенге қайта келу.',
@@ -555,7 +579,7 @@ $messages = array(
'otherlanguages' => 'Басқа тілдерде',
'redirectedfrom' => '($1 бетінен айдатылған)',
'redirectpagesub' => 'Айдату беті',
-'lastmodifiedat' => 'Бұл беттің өзгертілген соңғы кезі: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Бұл беттің өзгертілген соңғы кезі: $2, $1.',
'viewcount' => 'Бұл бет $1 рет қатыналған.',
'protectedpage' => 'Қорғалған бет',
'jumpto' => 'Мында өту:',
@@ -566,7 +590,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} туралы',
'aboutpage' => 'Project:Жоба туралы',
'copyright' => 'Мағлұмат $1 шартымен жетімді.',
-'copyrightpagename' => '{{SITENAME}} ауторлық құқықтары',
'copyrightpage' => '{{ns:project}}:Ауторлық құқықтар',
'currentevents' => 'Ағымдағы оқиғалар',
'currentevents-url' => 'Project:Ағымдағы оқиғалар',
@@ -574,8 +597,6 @@ $messages = array(
'disclaimerpage' => 'Project:Жауапкершіліктен бас тарту',
'edithelp' => 'Өндеу анықтамасы',
'edithelppage' => 'Help:Өңдеу',
-'faq' => 'Жиі қойылған сауалдар',
-'faqpage' => 'Project:Жиі қойылған сауалдар',
'helppage' => 'Help:Мазмұны',
'mainpage' => 'Басты бет',
'mainpage-description' => 'Басты бет',
@@ -654,10 +675,6 @@ MySQL қайтарған қатесі «<tt>$3: $4</tt>».',
«$1»
мына жетеден: «$2».
MySQL қайтарған қатесі «$3: $4»',
-'noconnect' => 'Ғафу етіңіз! Бұл уикиде кейбір техникалық қиыншылықтар кездесті, және де дерекқор серверіне байланыса алмайды.<br />
-$1',
-'nodb' => '$1 деген дерекқор бөлектенбеді',
-'cachederror' => 'Төменде сұралған беттің бүркемеленген көшірмесі беріледі, әлі жаңартылмаған болуы мүмкін.',
'laggedslavemode' => 'Құлақтандыру: Бетте жуықтағы жаңалаулар болмауы мүмкін.',
'readonly' => 'Дерекқоры құлыпталған',
'enterlockreason' => 'Құлыптау себебін, қай уақытқа дейін құлыпталғанын кірістіріп, енгізіңіз',
@@ -716,7 +733,6 @@ $2',
Келтірілген себебі: ''$2''.",
# Login and logout pages
-'logouttitle' => 'Қатысушы шығуы',
'logouttext' => "'''Енді жүйеден шықтыңыз.'''
Жүйеге кірместен {{SITENAME}} жобасын пайдалануын жалғастыра аласыз, немесе дәл сол не өзге қатысушы боп қайта круіңіз мүмкін.
@@ -724,7 +740,6 @@ $2',
'welcomecreation' => '== Қош келдіңіз, $1! ==
Жаңа тіркелгіңіз жасалды.
{{SITENAME}} бапталымдарыңызды өзгертуін ұмытпаңыз.',
-'loginpagetitle' => 'Қатысушы кіруі',
'yourname' => 'Қатысушы атыңыз:',
'yourpassword' => 'Құпия сөзіңіз:',
'yourpasswordagain' => 'Құпия сөзді қайталаңыз:',
@@ -747,23 +762,7 @@ $2',
'badretype' => 'Енгізген құпия сөздеріңіз бір біріне сәйкес емес.',
'userexists' => 'Енгізген қатысушы атыңыз алдақашан пайдалануда.
Өзге атауды таңдаңыз.',
-'youremail' => 'Е-поштаңыз:',
-'username' => 'Қатысушы атыңыз:',
-'uid' => 'Қатысушы теңдестіргішіңіз:',
-'prefs-memberingroups' => 'Кірген {{PLURAL:$1|тобыңыз|топтарыңыз}}:',
-'yourrealname' => 'Нақты атыңыз:',
-'yourlanguage' => 'Тіліңіз:',
-'yourvariant' => 'Тіл/жазба нұсқаңыз:',
-'yournick' => 'Қолтаңбаңыз:',
-'badsig' => 'Қам қолтаңбаңыз жарамсыз; HTML белгішелерін тексеріңіз.',
-'badsiglength' => 'Лақап атыңыз тым ұзын;
-Бұл $1 таңбадан аспауы жөн.',
-'email' => 'Е-поштаңыз',
-'prefs-help-realname' => 'Нақты атыңыз міндетті емес.
-Егер бұны жетістіруді таңдасаңыз, бұл түзетуіңіздің ауторлығын анықтау үшін қолданылады.',
'loginerror' => 'Кіру қатесі',
-'prefs-help-email' => 'Е-пошта мекенжайы міндетті емес, бірақ жеке басыңызды ашпай «Қатысушы» немесе «Қатысушы_талқылауы» деген беттеріңіз арқылы барша сізбен байланыса алады.',
-'prefs-help-email-required' => 'Е-пошта мекенжайы керек.',
'nocookiesnew' => 'Жаңа қатысушы тіркелгісі жасалды, бірақ кірмегенсіз.
Қатысушы кіру үшін {{SITENAME}} торабында «cookie» файлдары қолданылады.
Сізде «cookies» өшірілген.
@@ -819,18 +818,16 @@ $2',
'loginlanguagelabel' => 'Тіл: $1',
# Password reset dialog
-'resetpass' => 'Тіркелгінің құпия сөзін өзгерту',
-'resetpass_announce' => 'Хатпен жіберілген уақытша кодымен кіргенсіз.
+'resetpass' => 'Тіркелгінің құпия сөзін өзгерту',
+'resetpass_announce' => 'Хатпен жіберілген уақытша кодымен кіргенсіз.
Кіруіңізді бітіру үшін, жаңа құпия сөзіңізді мында енгізуіңіз жөн:',
-'resetpass_header' => 'Құпия сөзді өзгерту',
-'oldpassword' => 'Ағымдық құпия сөзіңіз:',
-'newpassword' => 'Жаңа құпия сөзіңіз:',
-'retypenew' => 'Жаңа құпия сөзіңізді қайталаңыз:',
-'resetpass_submit' => 'Құпия сөзді қойыңыз да кіріңіз',
-'resetpass_success' => 'Құпия сөзіңіз сәтті өзгертілді! Енді кіріңіз…',
-'resetpass_bad_temporary' => 'Уақытша құпия сөз жарамсыз.
-Мүмкін құпия сөзіңізді алдақашан сәтті өзгерткен боларсыз немесе жаңа уақытша құпия сөзін сұратылғансыз.',
-'resetpass_forbidden' => '{{SITENAME}} жобасында құпия сөздер өзгертілмейді',
+'resetpass_header' => 'Құпия сөзді өзгерту',
+'oldpassword' => 'Ағымдық құпия сөзіңіз:',
+'newpassword' => 'Жаңа құпия сөзіңіз:',
+'retypenew' => 'Жаңа құпия сөзіңізді қайталаңыз:',
+'resetpass_submit' => 'Құпия сөзді қойыңыз да кіріңіз',
+'resetpass_success' => 'Құпия сөзіңіз сәтті өзгертілді! Енді кіріңіз…',
+'resetpass_forbidden' => '{{SITENAME}} жобасында құпия сөздер өзгертілмейді',
# Edit page toolbar
'bold_sample' => 'Жуан мәтін',
@@ -903,7 +900,6 @@ IP мекенжайыңыз бұл беттің түзету тарихында
'blockededitsource' => "'''$1''' дегенге жасалған '''өңдемелеріңіздің''' мәтіні төменде көрсетіледі:",
'whitelistedittitle' => 'Өңдеу үшін кіруіңіз жөн.',
'whitelistedittext' => 'Беттерді өңдеу үшін $1 жөн.',
-'confirmedittitle' => 'Құптау хаты қайта өңделуі жөн',
'confirmedittext' => 'Беттерді өңдеу үшін алдын ала Е-пошта мекенжайыңызды құптауыңыз жөн.
Е-пошта мекенжайыңызды [[{{#special:Preferences}}|пайдаланушылық бапталымдарыңыз]] арқылы қойыңыз да жарамдылығын тексеріп шығыңыз.',
'nosuchsectiontitle' => 'Осындай еш бөлім жоқ',
@@ -923,7 +919,8 @@ IP мекенжайыңыз бұл беттің түзету тарихында
'noarticletext' => 'Бұл бетте ағымда еш мәтін жоқ, дегенмен басқа беттерден [[{{#special:Search}}/{{PAGENAME}}|бұл бет тақырыбы атын іздей]] не [{{fullurl:{{FULLPAGENAME}}|action=edit}} бұл бетті өңдей] аласыз.',
'userpage-userdoesnotexist' => '«$1» қатысушы тіркелгісі жазып алынбаған. Бұл бетті бастау/өңдеу талабыңызды тексеріп шығыңыз.',
'clearyourcache' => "'''Аңғартпа:''' Сақтағаннан кейін, өзгерістерді көру үшін шолғыш бүркемесін орағыту ықтимал. '''Mozilla / Firefox / Safari:''' ''Қайта жүктеу'' батырмасын нұқығанда ''Shift'' тұтыңыз, не ''Ctrl-Shift-R'' басыңыз (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''Жаңарту'' батырмасын нұқығанда ''Ctrl'' тұтыңыз, не ''Ctrl-F5'' басыңыз; '''Konqueror:''': ''Жаңарту'' батырмасын жай нұқыңыз, не ''F5'' басыңыз; '''Opera''' пайданушылары ''Құралдар→Бапталымдар'' дегенге барып бүркемесін толық тазарту жөн.",
-'usercssjsyoucanpreview' => "'''Ақыл-кеңес:''' Жаңа CSS/JS файлын сақтау алдында «Қарап шығу» батырмасын қолданып сынақтаңыз.",
+'usercssyoucanpreview' => "'''Ақыл-кеңес:''' Жаңа CSS файлын сақтау алдында «Қарап шығу» батырмасын қолданып сынақтаңыз.",
+'userjsyoucanpreview' => "'''Ақыл-кеңес:''' Жаңа JS файлын сақтау алдында «Қарап шығу» батырмасын қолданып сынақтаңыз.",
'usercsspreview' => "'''Мынау CSS мәтінін тек қарап шығу екенін ұмытпаңыз, ол әлі сақталған жоқ!'''",
'userjspreview' => "'''Мынау JavaScript қатысушы бағдарламасын тексеру/қарап шығу екенін ұмытпаңыз, ол әлі сақталған жоқ!'''",
'userinvalidcssjstitle' => "'''Құлақтандыру:''' Осы арада «$1» деген еш мәнер жоқ.
@@ -991,7 +988,7 @@ IP мекенжайыңыз бұл беттің түзету тарихында
'permissionserrors' => 'Рұқсаттар қателері',
'permissionserrorstext' => 'Бұны істеуге рұқсатыңыз жоқ, келесі {{PLURAL:$1|себеп|себептер}} бойынша:',
'permissionserrorstext-withaction' => '$2 дегенге рұқсатыңыз жоқ, келесі {{PLURAL:$1|себеп|себептер}} бойынша:',
-'recreate-deleted-warn' => "'''Құлақтандыру: Алдында жойылған бетті қайта бастайын деп тұрсыз.'''
+'recreate-moveddeleted-warn' => "'''Құлақтандыру: Алдында жойылған бетті қайта бастайын деп тұрсыз.'''
Мына бет өңдеуін жалғастыру үшін жарастығын тексеріп шығуыңыз жөн.
Қолайлы болуы үшін бұл беттің жою журналы келтірілген:",
@@ -1024,8 +1021,9 @@ $3 келтірілген себебі: ''$2''",
'viewpagelogs' => 'Бұл бет үшін журнал оқиғаларын қарау',
'nohistory' => 'Мында бұл беттінің түзету тарихы жоқ.',
'currentrev' => 'Ағымдық түзету',
+'currentrev-asof' => '$1 кезіндегі нұсқасы',
'revisionasof' => '$1 кезіндегі түзету',
-'revision-info' => '$1 кезіндегі $2 істеген түзету', # Additionally available: $3: revision id
+'revision-info' => '$1 кезіндегі $2 істеген түзету',
'previousrevision' => '← Ескілеу түзетуі',
'nextrevision' => 'Жаңалау түзетуі →',
'currentrevisionlink' => 'Ағымдық түзетуі',
@@ -1038,7 +1036,6 @@ $3 келтірілген себебі: ''$2''",
Шартты белгілер: (ағым.) = ағымдық нұсқамен айырмасы,
(соң.) = алдыңғы нұсқамен айырмасы, ш = шағын өңдеме',
'history-fieldset-title' => 'Тарихынан іздеу',
-'deletedrev' => '[жойылған]',
'histfirst' => 'Ең алғашқысына',
'histlast' => 'Ең соңғысына',
'historysize' => '($1 байт)',
@@ -1047,7 +1044,7 @@ $3 келтірілген себебі: ''$2''",
# Revision feed
'history-feed-title' => 'Түзету тарихы',
'history-feed-description' => 'Мына уикидегі бұл беттің түзету тарихы',
-'history-feed-item-nocomment' => '$2 кезіндегі $1 деген', # user at time
+'history-feed-item-nocomment' => '$2 кезіндегі $1 деген',
'history-feed-empty' => 'Сұратылған бет жоқ болды.
Ол мына уикиден жойылған, немесе атауы ауыстырылған.
Осыған қатысты жаңа беттерді [[Special:Search|бұл уикиден іздеуді]] байқап көріңіз.',
@@ -1073,12 +1070,12 @@ $3 келтірілген себебі: ''$2''",
{{SITENAME}} жобасының басқа әкімшілері жасырын мағлұматқа қатынай алады, және қосымша тиымдар қойылғанша дейін, осы тілдесу арқылы жоюды болдырмауы мүмкін.",
'revdelete-legend' => 'Көрініс тиымдарын қою:',
'revdelete-hide-text' => 'Түзету мәтінін жасыр',
+'revdelete-hide-image' => 'Файл мағлұматын жасыр',
'revdelete-hide-name' => 'Әрекет пен нысанасын жасыр',
'revdelete-hide-comment' => 'Өңдеме мәндемесін жасыр',
'revdelete-hide-user' => 'Өңдеуші атын (IP мекенжайын) жасыр',
'revdelete-hide-restricted' => 'Осы тиымдарды әкімшілерге қолдану және бұл тілдесуді құлыптау',
'revdelete-suppress' => 'Деректерді баршаға ұқсас әкімшілерден де шеттету',
-'revdelete-hide-image' => 'Файл мағлұматын жасыр',
'revdelete-unsuppress' => 'Қалпына келтірілген түзетулерден тиымдарды аластау',
'revdelete-log' => 'Себебі:',
'revdelete-submit' => 'Бөлектенген түзетуге қолдану',
@@ -1098,6 +1095,7 @@ $3 келтірілген себебі: ''$2''",
'revdelete-unhid' => '$1 ашты',
'revdelete-log-message' => '$2 түзету үшін $1',
'logdelete-log-message' => '$2 оқиға үшін $1',
+'revdelete-edit-reasonlist' => 'Жою себептерін өңдеу',
# Suppression log
'suppressionlog' => 'Шеттету журналы',
@@ -1147,17 +1145,14 @@ $3 келтірілген себебі: ''$2''",
'searchresulttext' => '{{SITENAME}} жобасында іздеу туралы көбірек ақпарат үшін, [[{{MediaWiki:Helppage}}|{{int:help}} бетін]] қараңыз.',
'searchsubtitle' => "Іздегеніңіз: '''[[:$1]]'''",
'searchsubtitleinvalid' => "Іздегеніңіз: '''$1'''",
-'noexactmatch' => "'''Осы арада беттің «$1» тақырып аты жоқ.'''
-[[:$1|Бұл бетті бастай]] аласыз.",
-'noexactmatch-nocreate' => "'''Осы арада беттің «$1» тақырып аты жоқ.'''",
'toomanymatches' => 'Тым көп сәйкес қайтарылды, өзге сұранымды байқап көріңіз',
'titlematches' => 'Бет тақырыбын аты сәйкес келеді',
'notitlematches' => 'Еш бет тақырыбын аты сәйкес емес',
'textmatches' => 'Бет мәтіні сәйкес келеді',
'notextmatches' => 'Еш бет мәтіні сәйкес емес',
-'prevn' => 'алдыңғы $1',
-'nextn' => 'келесі $1',
-'viewprevnext' => 'Көрсетілуі: ($1) ($2) ($3) жазба',
+'prevn' => 'алдыңғы {{PLURAL:$1|$1}}',
+'nextn' => 'келесі {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Көрсетілуі: ($1 {{int:pipe-separator}} $2) ($3) жазба',
'searchhelp-url' => 'Help:Мазмұны',
'search-result-size' => '$1 ($2 сөз)',
'search-result-score' => 'Арақатынастылығы: $1 %',
@@ -1175,7 +1170,6 @@ $3 келтірілген себебі: ''$2''",
'searchall' => 'барлық',
'showingresults' => "Төменде нөмір '''$2''' орнынан бастап барынша '''$1''' нәтиже көрсетіледі.",
'showingresultsnum' => "Төменде нөмір '''$2''' орнынан бастап '''$3''' нәтиже көрсетіледі.",
-'showingresultstotal' => "Төменде {{PLURAL:$3|'''$3''' арасынан '''$1''' нәтиже көрсетіледі|'''$3''' арасынан '''$1 — $2''' нәтиже ауқымы көрсетіледі}}",
'nonefound' => "'''Аңғартпа''': Әдепкіден тек кейбір есім аялардан ізделінеді. Барлық мағлұмат түрін (соның ішінде талқылау беттерді, үлгілерді т.б.) іздеу үшін сұранымыңызды ''барлық:'' деп бастаңыз, немесе қалаған есім аясын бастауыш есебінде қолданыңыз.",
'powersearch' => 'Кеңейтілген іздеу',
'powersearch-legend' => 'Кеңейтілген іздеу',
@@ -1187,71 +1181,75 @@ $3 келтірілген себебі: ''$2''",
Әзірше Google арқылы іздеуге болады.
Аңғартпа: {{SITENAME}} торабының мағлұмат тізбелері ескірген болуы мүмкін.',
-# Preferences page
-'preferences' => 'Бапталымдар',
-'mypreferences' => 'Баптауларым',
-'prefs-edits' => 'Өңдеме саны:',
-'prefsnologin' => 'Кірмегенсіз',
-'prefsnologintext' => 'Пайдаланушылық бапталымдарыңызды қою үшін [[{{#special:Userlogin}}|кіруіңіз]] жөн.',
-'prefsreset' => 'Бапталымдар арқаудан қайта қойылды.',
+# Quickbar
'qbsettings' => 'Мәзір',
'qbsettings-none' => 'Ешқандай',
'qbsettings-fixedleft' => 'Солға бекітілген',
'qbsettings-fixedright' => 'Оңға бекітілген',
'qbsettings-floatingleft' => 'Солға қалқыған',
'qbsettings-floatingright' => 'Оңға қалқыған',
-'changepassword' => 'Құпия сөзді өзгерту',
-'skin' => 'Мәнерлер',
-'skin-preview' => 'Қарап шығу',
-'math' => 'Өрнектер',
-'dateformat' => 'Күн-ай пішімі',
-'datedefault' => 'Еш қалаусыз',
-'datetime' => 'Уақыт',
-'math_failure' => 'Құрылымын талдатуы сәтсіз бітті',
-'math_unknown_error' => 'белгісіз қате',
-'math_unknown_function' => 'белгісіз жете',
-'math_lexing_error' => 'сөз кенінің қатесі',
-'math_syntax_error' => 'сөйлем жүйесінің қатесі',
-'math_image_error' => 'PNG аударысы сәтсіз бітті;
-latex, dvips, gs және convert бағдарламаларының дұрыс орнатуын тексеріп шығыңыз',
-'math_bad_tmpdir' => 'math деген уақытша қалтасына жазылмады, не қалта құрылмады',
-'math_bad_output' => 'math деген беріс қалтасына жазылмады, не қалта құрылмады',
-'math_notexvc' => 'texvc атқарылмалысы табылмады;
-баптау үшін math/README құжатын қараңыз.',
-'prefs-personal' => 'Жеке деректері',
-'prefs-rc' => 'Жуықтағы өзгерістер',
-'prefs-watchlist' => 'Бақылау',
-'prefs-watchlist-days' => 'Бақылау тізіміндегі күндердің көрсетпек саны:',
-'prefs-watchlist-edits' => 'Кеңейтілген бақылаулардағы өзгерістердің барынша көрсетпек саны:',
-'prefs-misc' => 'Әрқилы',
-'saveprefs' => 'Сақта',
-'resetprefs' => 'Сақталмаған өзгерістерді тазарт',
-'textboxsize' => 'Өңдеу',
-'rows' => 'Жолдар:',
-'columns' => 'Бағандар:',
-'searchresultshead' => 'Іздеу',
-'resultsperpage' => 'Бет сайын нәтиже саны:',
-'contextlines' => 'Нәтиже сайын жол саны:',
-'contextchars' => 'Жол сайын таңба саны:',
-'stub-threshold' => '<a href="#" class="stub">Бітеме сілтемесін</a> пішімдеу табалдырығы (байт):',
-'recentchangesdays' => 'Жүықтағы өзгерістерінде көрсетпек күн саны:',
-'recentchangescount' => 'Жуықтағы өзгерістердінде, тарих және журнал беттерінде көрсетпек өңдеме саны:',
-'savedprefs' => 'Бапталымдарыңыз сақталды.',
-'timezonelegend' => 'Уақыт белдеуі',
-'timezonetext' => '¹ Жергілікті уақытыңыз бен сервер уақытының (UTC) арасындағы сағат саны.',
-'localtime' => 'Жергілікті уақыт',
-'timezoneoffset' => 'Сағат ығысуы¹',
-'servertime' => 'Сервер уақыты',
-'guesstimezone' => 'Шолғыштан алып толтыру',
-'allowemail' => 'Басқадан хат қабылдауын қос',
-'prefs-searchoptions' => 'Іздеу бапталымдары',
-'prefs-namespaces' => 'Есім аялары',
-'defaultns' => 'Мына есім аяларда әдепкіден іздеу:',
-'default' => 'әдепкі',
-'files' => 'Файлдар',
+
+# Preferences page
+'preferences' => 'Бапталымдар',
+'mypreferences' => 'Баптауларым',
+'prefs-edits' => 'Өңдеме саны:',
+'prefsnologin' => 'Кірмегенсіз',
+'prefsnologintext' => 'Пайдаланушылық бапталымдарыңызды қою үшін [[{{#special:Userlogin}}|кіруіңіз]] жөн.',
+'changepassword' => 'Құпия сөзді өзгерту',
+'prefs-skin' => 'Мәнерлер',
+'skin-preview' => 'Қарап шығу',
+'prefs-math' => 'Өрнектер',
+'datedefault' => 'Еш қалаусыз',
+'prefs-datetime' => 'Уақыт',
+'prefs-personal' => 'Жеке деректері',
+'prefs-rc' => 'Жуықтағы өзгерістер',
+'prefs-watchlist' => 'Бақылау',
+'prefs-watchlist-days' => 'Бақылау тізіміндегі күндердің көрсетпек саны:',
+'prefs-watchlist-edits' => 'Кеңейтілген бақылаулардағы өзгерістердің барынша көрсетпек саны:',
+'prefs-misc' => 'Әрқилы',
+'saveprefs' => 'Сақта',
+'resetprefs' => 'Сақталмаған өзгерістерді тазарт',
+'prefs-editing' => 'Өңдеу',
+'rows' => 'Жолдар:',
+'columns' => 'Бағандар:',
+'searchresultshead' => 'Іздеу',
+'resultsperpage' => 'Бет сайын нәтиже саны:',
+'contextlines' => 'Нәтиже сайын жол саны:',
+'contextchars' => 'Жол сайын таңба саны:',
+'stub-threshold' => '<a href="#" class="stub">Бітеме сілтемесін</a> пішімдеу табалдырығы (байт):',
+'recentchangesdays' => 'Жүықтағы өзгерістерінде көрсетпек күн саны:',
+'recentchangescount' => 'Жуықтағы өзгерістердінде, тарих және журнал беттерінде көрсетпек өңдеме саны:',
+'savedprefs' => 'Бапталымдарыңыз сақталды.',
+'timezonelegend' => 'Уақыт белдеуі',
+'localtime' => 'Жергілікті уақыт',
+'timezoneoffset' => 'Сағат ығысуы¹',
+'servertime' => 'Сервер уақыты',
+'guesstimezone' => 'Шолғыштан алып толтыру',
+'allowemail' => 'Басқадан хат қабылдауын қос',
+'prefs-searchoptions' => 'Іздеу бапталымдары',
+'prefs-namespaces' => 'Есім аялары',
+'defaultns' => 'Мына есім аяларда әдепкіден іздеу:',
+'default' => 'әдепкі',
+'prefs-files' => 'Файлдар',
+'youremail' => 'Е-поштаңыз:',
+'username' => 'Қатысушы атыңыз:',
+'uid' => 'Қатысушы теңдестіргішіңіз:',
+'prefs-memberingroups' => 'Кірген {{PLURAL:$1|тобыңыз|топтарыңыз}}:',
+'yourrealname' => 'Нақты атыңыз:',
+'yourlanguage' => 'Тіліңіз:',
+'yourvariant' => 'Тіл/жазба нұсқаңыз:',
+'yournick' => 'Қолтаңбаңыз:',
+'badsig' => 'Қам қолтаңбаңыз жарамсыз; HTML белгішелерін тексеріңіз.',
+'badsiglength' => 'Лақап атыңыз тым ұзын;
+Бұл $1 таңбадан аспауы жөн.',
+'email' => 'Е-поштаңыз',
+'prefs-help-realname' => 'Нақты атыңыз міндетті емес.
+Егер бұны жетістіруді таңдасаңыз, бұл түзетуіңіздің ауторлығын анықтау үшін қолданылады.',
+'prefs-help-email' => 'Е-пошта мекенжайы міндетті емес, бірақ жеке басыңызды ашпай «Қатысушы» немесе «Қатысушы_талқылауы» деген беттеріңіз арқылы барша сізбен байланыса алады.',
+'prefs-help-email-required' => 'Е-пошта мекенжайы керек.',
# User rights
-'userrights' => 'Қатысушы құқықтарын реттеу', # Not used as normal message but as header for the special page itself
+'userrights' => 'Қатысушы құқықтарын реттеу',
'userrights-lookup-user' => 'Қатысушы топтарын реттеу',
'userrights-user-editname' => 'Қатысушы атын енгізіңіз:',
'editusergroup' => 'Қатысушы топтарын өңдеу',
@@ -1333,6 +1331,8 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
'right-editprotected' => 'Қорғалған беттерді өңдеу (баулы қорғауларсыз)',
'right-editinterface' => 'Пайдаланушылық тілдесіуін өңдеу',
'right-editusercssjs' => 'Басқа қатысушылардың CSS және JS файлдарын өңдеу',
+'right-editusercss' => 'Басқа қатысушылардың CSS файлдарын өңдеу',
+'right-edituserjs' => 'Басқа қатысушылардың JS файлдарын өңдеу',
'right-rollback' => 'Белгілі бетті өңдеген соңғы қатысушының өңдемелерінен жылдам шегіндіру',
'right-markbotedits' => 'Шегіндірлген өңдемелерді боттардікі деп белгілеу',
'right-noratelimit' => 'Еселік шектелімдері ықпал етпейді',
@@ -1360,6 +1360,11 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
'recentchanges-legend' => 'Жуықтағы өзгерістер баптаулары',
'recentchangestext' => 'Бұл бетте осы уикидегі болған жуықтағы өзгерістер байқалады.',
'recentchanges-feed-description' => 'Бұл арнаменен уикидегі ең соңғы өзгерістер қадағаланады.',
+'recentchanges-label-legend' => 'Шартты белгілер: $1',
+'recentchanges-legend-newpage' => '$1 - жаңа бет',
+'recentchanges-legend-minor' => '$1 - шағын өңдеме',
+'recentchanges-label-minor' => 'Бұл шағын өңдеме',
+'recentchanges-legend-bot' => '$1 - бот өңдемесі',
'rcnote' => "$3 кезіне дейін — төменде соңғы {{PLURAL:$2|күндегі|'''$2''' күндегі}}, соңғы '''$1''' өзгеріс көрсетіледі.",
'rcnotefrom' => "'''$2''' кезінен бері — төменде '''$1''' жеткенше дейін өзгерістер көрсетіледі.",
'rclistfrom' => '$1 кезінен бері — жаңа өзгерістерді көрсет.',
@@ -1384,6 +1389,8 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
# Recent changes linked
'recentchangeslinked' => 'Қатысты өзгерістер',
+'recentchangeslinked-feed' => 'Қатысты өзгерістер',
+'recentchangeslinked-toolbox' => 'Қатысты өзгерістер',
'recentchangeslinked-title' => '«$1» дегенге қатысты өзгерістер',
'recentchangeslinked-noresult' => 'Сілтеген беттерде келтірілген мерзімде ешқандай өзгеріс болмаған.',
'recentchangeslinked-summary' => "Бұл тізімде өзіндік бетке сілтеген беттердегі (не өзіндік санат мүшелеріндегі) істелген жуықтағы өзгерістер беріледі.
@@ -1394,7 +1401,6 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
# Upload
'upload' => 'Қотарып беру',
'uploadbtn' => 'Қотарып бер!',
-'reupload' => 'Қайта қотарып беру',
'reuploaddesc' => 'Қотарып беруді болдырмау және қотару пішініне қайта келу.',
'uploadnologin' => 'Кірмегенсіз',
'uploadnologintext' => 'Файлдарды қотарып беру үшін [[{{#special:Userlogin}}|кіруіңіз]] жөн.',
@@ -1444,7 +1450,6 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
* Қотарып берілетін файл атауы: '''<tt>[[:$1]]</tt>'''
* Бар болған файл атауы: '''<tt>[[:$2]]</tt>'''
Өзге атауды таңдаңыз.",
-'fileexists-thumb' => "<center>'''Бар болған сурет'''</center>",
'fileexists-thumbnail-yes' => "Осы файл — мөлшері кішірітілген сурет ''(нобай)'' сияқты. [[$1|thumb]]
Бұл '''<tt>[[:$1]]</tt>''' деген файлды сынап шығыңыз.
Егер сыналған файл түпнұсқалы мөлшері бар дәлме-дәл сурет болса, қосысмша нобайды қотарып беру керегі жоқ.",
@@ -1464,8 +1469,6 @@ latex, dvips, gs және convert бағдарламаларының дұрыс
'uploaddisabled' => 'Қотарып беру өшірілген',
'uploaddisabledtext' => '{{SITENAME}} жобасында файл қотарып беруі өшірілген.',
'uploadscripted' => 'Бұл файлда веб шолғышты қателікпен талдатқызатын HTML не әмір коды бар.',
-'uploadcorrupt' => 'Бұл файл бүлдірілген, не бұрыс кеңейтімі бар.
-Файлды тексеріп шығыңыз да, қайта қотарып беріңіз.',
'uploadvirus' => 'Бұл файлда вирус бар! Егжей-тегжейлері: $1',
'sourcefilename' => 'Қайнар файл атауы:',
'destfilename' => 'Нысана файл атауы:',
@@ -1500,6 +1503,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
Талабыңызды қол тиген кезінде қайта байқап көруіңіз мүмкін.',
'license' => 'Лицензияландыруы:',
+'license-header' => 'Лицензияландыруы:',
'nolicense' => 'Ештеңе бөлектенбеген',
'license-nopreview' => '(Қарап шығу жетімді емес)',
'upload_source_url' => ' (жарамды, баршаға қатынаулы URL)',
@@ -1519,6 +1523,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
'listfiles_description' => 'Сипаттамасы',
# File description page
+'file-anchor-link' => 'Файл беті',
'filehist' => 'Файл тарихы',
'filehist-help' => 'Файлдың қай уақытта қалай көрінетін үшін Күн-ай/Уақыт дегенді нұқыңыз.',
'filehist-deleteall' => 'барлығын жой',
@@ -1536,12 +1541,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
'morelinkstoimage' => 'Бұл файлдың [[Special:WhatLinksHere/$1|көбірек сілтемелерін]] қарау.',
'redirectstofile' => 'Келесі {{PLURAL:$1|файл|$1 файл}} бұл файлға айдайды:',
'duplicatesoffile' => 'Келесі {{PLURAL:$1|файл бұл файлдың телнұсқасы|$1 файл бұл файлдың телнұсқалары}}:',
-'sharedupload' => 'Бұл файл ортақ қоймаға қотарып берілген сондықтан басқа жобаларда қолдануы мүмкін.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Былайғы ақпарат үшін $1 дегенді қараңыз.',
-'shareduploadwiki-desc' => 'Бұл $1 деген файлдың ортақ қоймадағы мәліметтері төменде көрсетіледі.',
-'shareduploadwiki-linktext' => 'файлдың сипаттама беті',
-'noimage' => 'Былай аталған файл жоқ, $1 мүмкіндігіңіз бар.',
-'noimage-linktext' => 'бұны қотарып бер',
+'sharedupload' => 'Бұл файл ортақ қоймаға қотарып берілген сондықтан басқа жобаларда қолдануы мүмкін.',
'uploadnewversion-linktext' => 'Бұл файлдың жаңа нұсқасын қотарып беру',
# File reversion
@@ -1615,8 +1615,8 @@ URL дұрыс екендігін және торап істеп тұрғаны
'brokenredirects' => 'Еш бетке келтірмейтін айдағыштар',
'brokenredirectstext' => 'Келесі айдағыштар жоқ беттерге сілтейді:',
-'brokenredirects-edit' => '(өңдеу)',
-'brokenredirects-delete' => '(жою)',
+'brokenredirects-edit' => 'өңдеу',
+'brokenredirects-delete' => 'жою',
'withoutinterwiki' => 'Еш тілге сілтeмеген беттер',
'withoutinterwiki-summary' => 'Келесі беттер басқа тілдерге сілтемейді',
@@ -1887,8 +1887,8 @@ $NEWPAGE
басқа біреу бұл бетті алдақашан өңдеген не шегіндірген.
соңғы өңдемесін [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|талқылауы]]) істеген.',
-'editcomment' => "Болған өңдеме мәндемесі: «''$1''».", # only shown if there is an edit comment
-'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|талқылауы]]) өңдемелерінен [[{{ns:user}}:$1|$1]] соңғы нұсқасына қайтарды', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Болған өңдеме мәндемесі: «''$1''».",
+'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|талқылауы]]) өңдемелерінен [[{{ns:user}}:$1|$1]] соңғы нұсқасына қайтарды',
'rollback-success' => '$1 өңдемелерінен қайтарған;
$2 соңғы нұсқасына өзгертті.',
'sessionfailure' => 'Кіру сессиясында шатақ болған сияқты;
@@ -1909,7 +1909,6 @@ $2 соңғы нұсқасына өзгертті.',
'protectexpiry' => 'Мерзімі бітпек:',
'protect_expiry_invalid' => 'Бітетін уақыты жарамсыз.',
'protect_expiry_old' => 'Бітетін уақыты өтіп кеткен.',
-'protect-unchain' => 'Жылжыту рұқсаттарын беру',
'protect-text' => "'''<nowiki>$1</nowiki>''' бетінің қорғау деңгейін қарап және өзгертіп шыға аласыз.",
'protect-locked-blocked' => "Бұғаттауыңыз өшірілгенше дейін қорғау деңгейін өзгерте алмайсыз.
Мына '''$1''' беттің ағымдық баптаулары:",
@@ -1927,7 +1926,7 @@ $2 соңғы нұсқасына өзгертті.',
'protect-expiring' => 'мерзімі бітпек: $1 (UTC)',
'protect-cascade' => 'Бұл беттің кірікбеттерін қорғау (баулы қорғау).',
'protect-cantedit' => 'Бұл беттің қорғау деңгейін өзгерте алмайсыз, себебі бұны өңдеуге рұқстаңыз жоқ.',
-'protect-expiry-options' => '1 сағат:1 hour,1 күн:1 day,1 апта:1 week,2 апта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 жыл:1 year,мәнгі:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 сағат:1 hour,1 күн:1 day,1 апта:1 week,2 апта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 жыл:1 year,мәнгі:infinite',
'restriction-type' => 'Рұқсаты:',
'restriction-level' => 'Тиымдық деңгейі:',
'minimum-size' => 'Ең аз мөлшері',
@@ -2004,7 +2003,7 @@ $1',
'contributions' => 'Қатысушы үлесі',
'mycontris' => 'Үлесім',
'contribsub2' => '$1 ($2) үлесі',
-'nocontribs' => 'Осы іздеу шартына сәйкес өзгерістер табылған жоқ.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Осы іздеу шартына сәйкес өзгерістер табылған жоқ.',
'uctop' => ' (үсті)',
'month' => 'Мына айдан (және ертеректен):',
'year' => 'Мына жылдан (және ертеректен):',
@@ -2012,6 +2011,9 @@ $1',
'sp-contributions-newbies' => 'Тек жаңа тіркелгіден жасаған үлестерді көрсет',
'sp-contributions-newbies-sub' => 'Жаңадан тіркелгі жасағандар үшін',
'sp-contributions-blocklog' => 'Бұғаттау журналы',
+'sp-contributions-deleted' => 'Қатысушының жойылған үлесі',
+'sp-contributions-talk' => 'Талқылауы',
+'sp-contributions-userrights' => 'Қатысушы құқықтарын реттеу',
'sp-contributions-search' => 'Үлес үшін іздеу',
'sp-contributions-username' => 'IP мекенжайы не қатысушы аты:',
'sp-contributions-submit' => 'Ізде',
@@ -2060,7 +2062,7 @@ $1',
'ipbenableautoblock' => 'Бұл қатысушы соңғы қолданған IP мекенжайын, және кейін өңдеуге байқап көрген әр IP мекенжайларын өзбұғаттауы',
'ipbsubmit' => 'Қатысушыны бұғатта',
'ipbother' => 'Басқа мерзімі:',
-'ipboptions' => '2 сағат:2 hours,1 күн:1 day,3 күн:3 days,1 апта:1 week,2 апта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 жыл:1 year,мәнгі:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сағат:2 hours,1 күн:1 day,3 күн:3 days,1 апта:1 week,2 апта:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 жыл:1 year,мәнгі:infinite',
'ipbotheroption' => 'басқа',
'ipbotherreason' => 'Басқа/қосымша себеп:',
'ipbhidename' => 'Қатысушы атын бұғаттау журналыннан, белсенді бұғаттау тізімінен, қатысушы тізімінен жасыру',
@@ -2085,7 +2087,7 @@ $1',
'ipblocklist-submit' => 'Ізде',
'blocklistline' => '$1, $2 $3 дегенді бұғаттады ($4)',
'infiniteblock' => 'мәнгі',
-'expiringblock' => 'мерзімі бітпек: $1',
+'expiringblock' => 'мерзімі бітпек: $1 $2',
'anononlyblock' => 'тек тіркелгісіздерді',
'noautoblockblock' => 'өзбұғаттау өшірілген',
'createaccountblock' => 'тіркелу бұғатталған',
@@ -2173,7 +2175,7 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
'move-watch' => 'Бұл бетті бақылау',
'movepagebtn' => 'Бетті жылжыт',
'pagemovedsub' => 'Жылжыту сәтті аяқталды',
-'movepage-moved' => '\'\'\'"$1" беті "$2" бетіне жылжытылды\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" беті "$2" бетіне жылжытылды\'\'\'',
'articleexists' => 'Осылай аталған бет алдақашан бар, не таңдаған атауыңыз жарамды емес.
Өзге атауды таңдаңыз',
'cantmove-titleprotected' => 'Бетті осы орынға жылжыта алмайсыз, себебі жаңа тақырып аты бастаудан қорғалған',
@@ -2230,8 +2232,6 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
'allmessagestext' => 'Мында {{ns:mediawiki}} есім аясында жетімді жүйе хабар тізімі беріледі.
Егер әмбебап MediaWiki жерсіндіруге үлес қосқыңыз келсе [http://www.mediawiki.org/wiki/Localisation MediaWiki жерсіндіру бетіне] және [http://translatewiki.net translatewiki.net жобасына] барып шығыңыз.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' өшірілген себебінен '''{{#special:AllMessages}}''' беті қолданылмайды.",
-'allmessagesfilter' => 'Хабарды атауымен сүзгілеу:',
-'allmessagesmodified' => 'Тек өзгертілгенді көрсет',
# Thumbnails
'thumbnail-more' => 'Үлкейту',
@@ -2373,7 +2373,7 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
# Attribution
'anonymous' => '{{SITENAME}} тіркелгісіз қатысушы(лары)',
'siteuser' => '{{SITENAME}} қатысушы $1',
-'lastmodifiedatby' => 'Бұл бетті $3 қатысушы соңғы өзгерткен кезі: $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Бұл бетті $3 қатысушы соңғы өзгерткен кезі: $2, $1.',
'othercontribs' => 'Шығарма негізін $1 жазған.',
'others' => 'басқалар',
'siteusers' => '{{SITENAME}} қатысушы(лар) $1',
@@ -2415,6 +2415,19 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
'mw_math_modern' => 'Осы заманғы шолғыштарына ұсынылады',
'mw_math_mathml' => 'Егер ықтимал болса — MathML (сынақтама)',
+# Math errors
+'math_failure' => 'Құрылымын талдатуы сәтсіз бітті',
+'math_unknown_error' => 'белгісіз қате',
+'math_unknown_function' => 'белгісіз жете',
+'math_lexing_error' => 'сөз кенінің қатесі',
+'math_syntax_error' => 'сөйлем жүйесінің қатесі',
+'math_image_error' => 'PNG аударысы сәтсіз бітті;
+latex, dvips, gs және convert бағдарламаларының дұрыс орнатуын тексеріп шығыңыз',
+'math_bad_tmpdir' => 'math деген уақытша қалтасына жазылмады, не қалта құрылмады',
+'math_bad_output' => 'math деген беріс қалтасына жазылмады, не қалта құрылмады',
+'math_notexvc' => 'texvc атқарылмалысы табылмады;
+баптау үшін math/README құжатын қараңыз.',
+
# Patrolling
'markaspatrolleddiff' => 'Зерттелді деп белгілеу',
'markaspatrolledtext' => 'Бұл бетті зерттелді деп белгіле',
@@ -2498,7 +2511,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ені',
@@ -2625,14 +2638,14 @@ $1',
'exif-unknowndate' => 'Белгісіз күн-айы',
-'exif-orientation-1' => 'Қалыпты', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Дерелей шағылысқан', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° бұрышқа айналған', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Тірелей шағылысқан', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Сағат тілшесіне қарсы 90° бұрышқа айналған және тірелей шағылысқан', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Сағат тілше бойынша 90° бұрышқа айналған', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Сағат тілше бойынша 90° бұрышқа айналған және тірелей шағылысқан', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Сағат тілшесіне қарсы 90° бұрышқа айналған', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Қалыпты',
+'exif-orientation-2' => 'Дерелей шағылысқан',
+'exif-orientation-3' => '180° бұрышқа айналған',
+'exif-orientation-4' => 'Тірелей шағылысқан',
+'exif-orientation-5' => 'Сағат тілшесіне қарсы 90° бұрышқа айналған және тірелей шағылысқан',
+'exif-orientation-6' => 'Сағат тілше бойынша 90° бұрышқа айналған',
+'exif-orientation-7' => 'Сағат тілше бойынша 90° бұрышқа айналған және тірелей шағылысқан',
+'exif-orientation-8' => 'Сағат тілшесіне қарсы 90° бұрышқа айналған',
'exif-planarconfiguration-1' => 'талпақ пішім',
'exif-planarconfiguration-2' => 'тайпақ пішім',
@@ -2742,7 +2755,7 @@ $1',
'exif-gpsmeasuremode-2' => '2-бағыттық өлшем',
'exif-gpsmeasuremode-3' => '3-бағыттық өлшем',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mil/h',
'exif-gpsspeed-n' => 'knot',
@@ -2944,7 +2957,7 @@ $1',
'unknown_extension_tag' => 'Танылмаған кеңейтпе белгісі «$1»',
# Special:Version
-'version' => 'Жүйе нұсқасы', # Not used as normal message but as header for the special page itself
+'version' => 'Жүйе нұсқасы',
'version-extensions' => 'Орнатылған кеңейтімдер',
'version-specialpages' => 'Арнайы беттер',
'version-parserhooks' => 'Құрылымдық талдатқыштың тұзақтары',
@@ -2958,7 +2971,7 @@ $1',
'version-skin-extension-functions' => 'Мәнер кеңейтімдерінің жетелері',
'version-hook-name' => 'Тұзақ атауы',
'version-hook-subscribedby' => 'Тұзақ тартқыштары',
-'version-version' => 'Нұсқасы:',
+'version-version' => '(Нұсқасы: $1)',
'version-license' => 'Лицензиясы',
'version-software' => 'Орнатылған бағдарламалық жасақтама',
'version-software-product' => 'Өнім',
diff --git a/languages/messages/MessagesKk_kz.php b/languages/messages/MessagesKk_kz.php
index f01749df..231259ad 100644
--- a/languages/messages/MessagesKk_kz.php
+++ b/languages/messages/MessagesKk_kz.php
@@ -1,6 +1,9 @@
<?php
/** Kazakh (Kazakhstan) (‪Қазақша (Қазақстан)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesKk_latn.php b/languages/messages/MessagesKk_latn.php
index 6bb393c9..ffaae9c3 100644
--- a/languages/messages/MessagesKk_latn.php
+++ b/languages/messages/MessagesKk_latn.php
@@ -40,11 +40,9 @@ $fallback8bitEncoding = 'windows-1254';
$namespaceNames = array(
NS_MEDIA => 'Taspa',
NS_SPECIAL => 'Arnaýı',
- NS_MAIN => '',
NS_TALK => 'Talqılaw',
NS_USER => 'Qatıswşı',
NS_USER_TALK => 'Qatıswşı_talqılawı',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_talqılawı',
NS_FILE => 'Swret',
NS_FILE_TALK => 'Swret_talqılawı',
@@ -55,7 +53,7 @@ $namespaceNames = array(
NS_HELP => 'Anıqtama',
NS_HELP_TALK => 'Anıqtama_talqılawı',
NS_CATEGORY => 'Sanat',
- NS_CATEGORY_TALK => 'Sanat_talqılawı'
+ NS_CATEGORY_TALK => 'Sanat_talqılawı',
);
$namespaceAliases = array(
@@ -156,131 +154,129 @@ $dateFormats = array(
);
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#REDIRECT', '#AÝDAW' ),
- 'notoc' => array( 0, '__MAZMUNSIZ__', '__MSIZ__', '__NOTOC__' ),
- 'nogallery' => array( 0, '__QOÝMASIZ__', '__QSIZ__', '__NOGALLERY__' ),
- 'forcetoc' => array( 0, '__MAZMUNDATQIZW__', '__MQIZW__', '__FORCETOC__' ),
- 'toc' => array( 0, '__MAZMUNI__', '__MZMN__', '__TOC__' ),
- 'noeditsection' => array( 0, '__BÖLİDİMÖNDEMEW__', '__BÖLİMÖNDETKİZBEW__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( 1, 'AĞIMDAĞIAÝ', 'CURRENTMONTH' ),
- 'currentmonthname' => array( 1, 'AĞIMDAĞIAÝATAWI', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( 1, 'AĞIMDAĞIAÝİLİKATAWI', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( 1, 'AĞIMDAĞIAÝJÏIR', 'AĞIMDAĞIAÝQISQA', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( 1, 'AĞIMDAĞIKÜN', 'CURRENTDAY' ),
- 'currentday2' => array( 1, 'AĞIMDAĞIKÜN2', 'CURRENTDAY2' ),
- 'currentdayname' => array( 1, 'AĞIMDAĞIKÜNATAWI', 'CURRENTDAYNAME' ),
- 'currentyear' => array( 1, 'AĞIMDAĞIJIL', 'CURRENTYEAR' ),
- 'currenttime' => array( 1, 'AĞIMDAĞIWAQIT', 'CURRENTTIME' ),
- 'currenthour' => array( 1, 'AĞIMDAĞISAĞAT', 'CURRENTHOUR' ),
- 'localmonth' => array( 1, 'JERGİLİKTİAÝ', 'LOCALMONTH' ),
- 'localmonthname' => array( 1, 'JERGİLİKTİAÝATAWI', 'LOCALMONTHNAME' ),
- 'localmonthnamegen' => array( 1, 'JERGİLİKTİAÝİLİKATAWI', 'LOCALMONTHNAMEGEN' ),
- 'localmonthabbrev' => array( 1, 'JERGİLİKTİAÝJÏIR', 'JERGİLİKTİAÝQISQAŞA', 'JERGİLİKTİAÝQISQA', 'LOCALMONTHABBREV' ),
- 'localday' => array( 1, 'JERGİLİKTİKÜN', 'LOCALDAY' ),
- 'localday2' => array( 1, 'JERGİLİKTİKÜN2', 'LOCALDAY2' ),
- 'localdayname' => array( 1, 'JERGİLİKTİKÜNATAWI', 'LOCALDAYNAME' ),
- 'localyear' => array( 1, 'JERGİLİKTİJIL', 'LOCALYEAR' ),
- 'localtime' => array( 1, 'JERGİLİKTİWAQIT', 'LOCALTIME' ),
- 'localhour' => array( 1, 'JERGİLİKTİSAĞAT', 'LOCALHOUR' ),
- 'numberofpages' => array( 1, 'BETSANI', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( 1, 'MAQALASANI', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( 1, 'FAÝLSANI', 'NUMBEROFFILES' ),
- 'numberofusers' => array( 1, 'QATISWŞISANI', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( 1, 'ÖÑDEMESANI', 'TÜZETWSANI', 'NUMBEROFEDITS' ),
- 'pagename' => array( 1, 'BETATAWI', 'PAGENAME' ),
- 'pagenamee' => array( 1, 'BETATAWI2', 'PAGENAMEE' ),
- 'namespace' => array( 1, 'ESİMAYASI', 'NAMESPACE' ),
- 'namespacee' => array( 1, 'ESİMAYASI2', 'NAMESPACEE' ),
- 'talkspace' => array( 1, 'TALQILAWAYASI', 'TALKSPACE' ),
- 'talkspacee' => array( 1, 'TALQILAWAYASI2', 'TALKSPACEE' ),
- 'subjectspace' => array( 1, 'TAQIRIPBETİ', 'MAQALABETİ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( 1, 'TAQIRIPBETİ2', 'MAQALABETİ2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( 1, 'TOLIQBETATAWI', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( 1, 'TOLIQBETATAWI2', 'FULLPAGENAMEE' ),
- 'subpagename' => array( 1, 'BETŞEATAWI', 'ASTIÑĞIBETATAWI', 'SUBPAGENAME' ),
- 'subpagenamee' => array( 1, 'BETŞEATAWI2', 'ASTIÑĞIBETATAWI2', 'SUBPAGENAMEE' ),
- 'basepagename' => array( 1, 'NEGİZGİBETATAWI', 'BASEPAGENAME' ),
- 'basepagenamee' => array( 1, 'NEGİZGİBETATAWI2', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( 1, 'TALQILAWBETATAWI', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( 1, 'TALQILAWBETATAWI2', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( 1, 'TAQIRIPBETATAWI', 'MAQALABETATAWI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( 1, 'TAQIRIPBETATAWI2', 'MAQALABETATAWI2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( 0, 'XBR:', 'MSG:' ),
- 'subst' => array( 0, 'BÄDEL:', 'SUBST:' ),
- 'msgnw' => array( 0, 'WÏKÏSİZXBR:', 'MSGNW:' ),
- 'img_thumbnail' => array( 1, 'nobaý', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( 1, 'nobaý=$1', 'thumbnail=$1', 'thumb=$1'),
- 'img_right' => array( 1, 'oñğa', 'oñ', 'right' ),
- 'img_left' => array( 1, 'solğa', 'sol', 'left' ),
- 'img_none' => array( 1, 'eşqandaý', 'joq', 'none' ),
- 'img_width' => array( 1, '$1 nükte', '$1px' ),
- 'img_center' => array( 1, 'ortağa', 'orta', 'center', 'centre' ),
- 'img_framed' => array( 1, 'sürmeli', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( 1, 'sürmesiz', 'frameless' ),
- 'img_page' => array( 1, 'bet=$1', 'bet $1', 'page=$1', 'page $1' ),
- 'img_upright' => array( 1, 'tikti', 'tiktik=$1', 'tiktik $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( 1, 'jïekti', 'border' ),
- 'img_baseline' => array( 1, 'tirekjol', 'baseline' ),
- 'img_sub' => array( 1, 'astılığı', 'ast', 'sub'),
- 'img_super' => array( 1, 'üstiligi', 'üst', 'sup', 'super', 'sup' ),
- 'img_top' => array( 1, 'üstine', 'top' ),
- 'img_text_top' => array( 1, 'mätin-üstinde', 'text-top' ),
- 'img_middle' => array( 1, 'aralığına', 'middle' ),
- 'img_bottom' => array( 1, 'astına', 'bottom' ),
- 'img_text_bottom' => array( 1, 'mätin-astında', 'text-bottom' ),
- 'int' => array( 0, 'İŞKİ:', 'INT:' ),
- 'sitename' => array( 1, 'TORAPATAWI', 'SITENAME' ),
- 'ns' => array( 0, 'EA:', 'ESİMAYA:', 'NS:' ),
- 'localurl' => array( 0, 'JERGİLİKTİJAÝ:', 'LOCALURL:' ),
- 'localurle' => array( 0, 'JERGİLİKTİJAÝ2:', 'LOCALURLE:' ),
- 'server' => array( 0, 'SERVER', 'SERVER' ),
- 'servername' => array( 0, 'SERVERATAWI', 'SERVERNAME' ),
- 'scriptpath' => array( 0, 'ÄMİRJOLI', 'SCRIPTPATH' ),
- 'grammar' => array( 0, 'SEPTİGİ:', 'SEPTİK:', 'GRAMMAR:' ),
- 'notitleconvert' => array( 0, '__TAQIRIPATINTÜRLENDİRGİZBEW__', '__TATJOQ__', '__ATAWALMASTIRĞIZBAW__', '__AABAW__', '__NOTITLECONVERT__', '__NOTC__' ),
- 'nocontentconvert' => array( 0, '__MAĞLUMATINTÜRLENDİRGİZBEW__', '__MATJOQ__', '__MAĞLUMATALMASTIRĞIZBAW__', '__MABAW__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( 1, 'AĞIMDAĞIAPTASI', 'AĞIMDAĞIAPTA', 'CURRENTWEEK' ),
- 'currentdow' => array( 1, 'AĞIMDAĞIAPTAKÜNİ', 'CURRENTDOW' ),
- 'localweek' => array( 1, 'JERGİLİKTİAPTASI', 'JERGİLİKTİAPTA', 'LOCALWEEK' ),
- 'localdow' => array( 1, 'JERGİLİKTİAPTAKÜNİ', 'LOCALDOW' ),
- 'revisionid' => array( 1, 'TÜZETWNÖMİRİ', 'NUSQANÖMİRİ', 'REVISIONID' ),
- 'revisionday' => array( 1, 'TÜZETWKÜNİ','NUSQAKÜNİ', 'REVISIONDAY' ),
- 'revisionday2' => array( 1, 'TÜZETWKÜNİ2', 'NUSQAKÜNİ2', 'REVISIONDAY2' ),
- 'revisionmonth' => array( 1, 'TÜZETWAÝI', 'NUSQAAÝI', 'REVISIONMONTH' ),
- 'revisionyear' => array( 1, 'TÜZETWJILI', 'NUSQAJILI', 'REVISIONYEAR' ),
- 'revisiontimestamp' => array( 1, 'TÜZETWWAQITITAÑBASI', 'NUSQAWAQITTÜÝİNDEMESİ', 'REVISIONTIMESTAMP' ),
- 'plural' => array( 0, 'KÖPŞETÜRİ:','KÖPŞE:', 'PLURAL:' ),
- 'fullurl' => array( 0, 'TOLIQJAÝI:', 'TOLIQJAÝ:', 'FULLURL:' ),
- 'fullurle' => array( 0, 'TOLIQJAÝI2:', 'TOLIQJAÝ2:', 'FULLURLE:' ),
- 'lcfirst' => array( 0, 'KÄ1:', 'KİŞİÄRİPPEN1:', 'LCFIRST:' ),
- 'ucfirst' => array( 0, 'BÄ1:', 'BASÄRİPPEN1:', 'UCFIRST:' ),
- 'lc' => array( 0, 'KÄ:', 'KİŞİÄRİPPEN:', 'LC:' ),
- 'uc' => array( 0, 'BÄ:', 'BASÄRİPPEN:', 'UC:' ),
- 'raw' => array( 0, 'QAM:', 'RAW:' ),
- 'displaytitle' => array( 1, 'KÖRİNETİNTAQIRIAPATI', 'KÖRSETİLETİNATAW', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( 1, 'Q', 'R' ),
- 'newsectionlink' => array( 1, '__JAÑABÖLİMSİLTEMESİ__', '__NEWSECTIONLINK__' ),
- 'currentversion' => array( 1, 'BAĞDARLAMANUSQASI', 'CURRENTVERSION' ),
- 'urlencode' => array( 0, 'JAÝDIMUQAMDAW:', 'URLENCODE:' ),
- 'anchorencode' => array( 0, 'JÄKİRDİMUQAMDAW', 'ANCHORENCODE' ),
- 'currenttimestamp' => array( 1, 'AĞIMDAĞIWAQITTÜÝİNDEMESİ', 'AĞIMDAĞIWAQITTÜÝİN', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( 1, 'JERGİLİKTİWAQITTÜÝİNDEMESİ', 'JERGİLİKTİWAQITTÜÝİN', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( 1, 'BAĞITBELGİSİ', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( 0, '#TİL:', '#LANGUAGE:' ),
- 'contentlanguage' => array( 1, 'MAĞLUMATTİLİ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( 1, 'ESİMAYABETSANI:', 'EABETSANI:', 'AYABETSANI:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
- 'numberofadmins' => array( 1, 'ÄKİMŞİSANI', 'NUMBEROFADMINS' ),
- 'formatnum' => array( 0, 'SANPİŞİMİ', 'FORMATNUM' ),
- 'padleft' => array( 0, 'SOLĞAIĞIS', 'SOLIĞIS', 'PADLEFT' ),
- 'padright' => array( 0, 'OÑĞAIĞIS', 'OÑIĞIS', 'PADRIGHT' ),
- 'special' => array( 0, 'arnaýı', 'special' ),
- 'defaultsort' => array( 1, 'ÄDEPKİSURIPTAW:', 'ÄDEPKİSANATSURIPTAW:', 'ÄDEPKİSURIPTAWKİLTİ:', 'ÄDEPKİSURIP:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
- 'filepath' => array( 0, 'FAÝLMEKENİ:', 'FILEPATH:' ),
- 'tag' => array( 0, 'belgi', 'tag' ),
- 'hiddencat' => array( 1, '__JASIRINSANAT__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( 1, 'SANATTAĞIBETTER', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( 1, 'BETMÖLŞERİ', 'PAGESIZE' ),
+ 'redirect' => array( '0', '#AÝDAW', '#АЙДАУ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__MAZMUNSIZ__', '__MSIZ__', '__МАЗМҰНСЫЗ__', '__МСЫЗ__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__QOÝMASIZ__', '__QSIZ__', '__ҚОЙМАСЫЗ__', '__ҚСЫЗ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__MAZMUNDATQIZW__', '__MQIZW__', '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__MAZMUNI__', '__MZMN__', '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__BÖLİDİMÖNDEMEW__', '__BÖLİMÖNDETKİZBEW__', '__БӨЛІДІМӨНДЕМЕУ__', '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'AĞIMDAĞIAÝ', 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'AĞIMDAĞIAÝATAWI', 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'AĞIMDAĞIAÝİLİKATAWI', 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'AĞIMDAĞIAÝJÏIR', 'AĞIMDAĞIAÝQISQA', 'АҒЫМДАҒЫАЙЖИЫР', 'АҒЫМДАҒЫАЙҚЫСҚА', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'AĞIMDAĞIKÜN', 'АҒЫМДАҒЫКҮН', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'AĞIMDAĞIKÜN2', 'АҒЫМДАҒЫКҮН2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'AĞIMDAĞIKÜNATAWI', 'АҒЫМДАҒЫКҮНАТАУЫ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'AĞIMDAĞIJIL', 'АҒЫМДАҒЫЖЫЛ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'AĞIMDAĞIWAQIT', 'АҒЫМДАҒЫУАҚЫТ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'AĞIMDAĞISAĞAT', 'АҒЫМДАҒЫСАҒАТ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'JERGİLİKTİAÝ', 'ЖЕРГІЛІКТІАЙ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'JERGİLİKTİAÝATAWI', 'ЖЕРГІЛІКТІАЙАТАУЫ', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'JERGİLİKTİAÝİLİKATAWI', 'ЖЕРГІЛІКТІАЙІЛІКАТАУЫ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'JERGİLİKTİAÝJÏIR', 'JERGİLİKTİAÝQISQAŞA', 'JERGİLİKTİAÝQISQA', 'ЖЕРГІЛІКТІАЙЖИЫР', 'ЖЕРГІЛІКТІАЙҚЫСҚАША', 'ЖЕРГІЛІКТІАЙҚЫСҚА', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'JERGİLİKTİKÜN', 'ЖЕРГІЛІКТІКҮН', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'JERGİLİKTİKÜN2', 'ЖЕРГІЛІКТІКҮН2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'JERGİLİKTİKÜNATAWI', 'ЖЕРГІЛІКТІКҮНАТАУЫ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'JERGİLİKTİJIL', 'ЖЕРГІЛІКТІЖЫЛ', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'JERGİLİKTİWAQIT', 'ЖЕРГІЛІКТІУАҚЫТ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'JERGİLİKTİSAĞAT', 'ЖЕРГІЛІКТІСАҒАТ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'BETSANI', 'БЕТСАНЫ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'MAQALASANI', 'МАҚАЛАСАНЫ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'FAÝLSANI', 'ФАЙЛСАНЫ', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'QATISWŞISANI', 'ҚАТЫСУШЫСАНЫ', 'NUMBEROFUSERS' ),
+ 'numberofedits' => array( '1', 'ÖÑDEMESANI', 'TÜZETWSANI', 'ӨҢДЕМЕСАНЫ', 'ТҮЗЕТУСАНЫ', 'NUMBEROFEDITS' ),
+ 'pagename' => array( '1', 'BETATAWI', 'БЕТАТАУЫ', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'BETATAWI2', 'БЕТАТАУЫ2', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ESİMAYASI', 'ЕСІМАЯСЫ', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ESİMAYASI2', 'ЕСІМАЯСЫ2', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'TALQILAWAYASI', 'ТАЛҚЫЛАУАЯСЫ', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'TALQILAWAYASI2', 'ТАЛҚЫЛАУАЯСЫ2', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'TAQIRIPBETİ', 'MAQALABETİ', 'ТАҚЫРЫПБЕТІ', 'МАҚАЛАБЕТІ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'TAQIRIPBETİ2', 'MAQALABETİ2', 'ТАҚЫРЫПБЕТІ2', 'МАҚАЛАБЕТІ2', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'TOLIQBETATAWI', 'ТОЛЫҚБЕТАТАУЫ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'TOLIQBETATAWI2', 'ТОЛЫҚБЕТАТАУЫ2', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'BETŞEATAWI', 'ASTIÑĞIBETATAWI', 'БЕТШЕАТАУЫ', 'АСТЫҢҒЫБЕТАТАУЫ', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'BETŞEATAWI2', 'ASTIÑĞIBETATAWI2', 'БЕТШЕАТАУЫ2', 'АСТЫҢҒЫБЕТАТАУЫ2', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NEGİZGİBETATAWI', 'НЕГІЗГІБЕТАТАУЫ', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NEGİZGİBETATAWI2', 'НЕГІЗГІБЕТАТАУЫ2', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'TALQILAWBETATAWI', 'ТАЛҚЫЛАУБЕТАТАУЫ', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'TALQILAWBETATAWI2', 'ТАЛҚЫЛАУБЕТАТАУЫ2', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'TAQIRIPBETATAWI', 'MAQALABETATAWI', 'ТАҚЫРЫПБЕТАТАУЫ', 'МАҚАЛАБЕТАТАУЫ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'TAQIRIPBETATAWI2', 'MAQALABETATAWI2', 'ТАҚЫРЫПБЕТАТАУЫ2', 'МАҚАЛАБЕТАТАУЫ2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'XBR:', 'ХБР:', 'MSG:' ),
+ 'subst' => array( '0', 'BÄDEL:', 'БӘДЕЛ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'WÏKÏSİZXBR:', 'УИКИСІЗХБР:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'nobaý', 'нобай', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'nobaý=$1', 'нобай=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'oñğa', 'oñ', 'оңға', 'оң', 'right' ),
+ 'img_left' => array( '1', 'solğa', 'sol', 'солға', 'сол', 'left' ),
+ 'img_none' => array( '1', 'eşqandaý', 'joq', 'ешқандай', 'жоқ', 'none' ),
+ 'img_width' => array( '1', '$1 nükte', '$1 нүкте', '$1px' ),
+ 'img_center' => array( '1', 'ortağa', 'orta', 'ортаға', 'орта', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'sürmeli', 'сүрмелі', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'sürmesiz', 'сүрмесіз', 'frameless' ),
+ 'img_page' => array( '1', 'bet=$1', 'bet $1', 'бет=$1', 'бет $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'tikti', 'tiktik=$1', 'tiktik $1', 'тікті', 'тіктік=$1', 'тіктік $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'jïekti', 'жиекті', 'border' ),
+ 'img_baseline' => array( '1', 'tirekjol', 'тірекжол', 'baseline' ),
+ 'img_sub' => array( '1', 'astılığı', 'ast', 'астылығы', 'аст', 'sub' ),
+ 'img_super' => array( '1', 'üstiligi', 'üst', 'үстілігі', 'үст', 'super', 'sup' ),
+ 'img_top' => array( '1', 'üstine', 'үстіне', 'top' ),
+ 'img_text_top' => array( '1', 'mätin-üstinde', 'мәтін-үстінде', 'text-top' ),
+ 'img_middle' => array( '1', 'aralığına', 'аралығына', 'middle' ),
+ 'img_bottom' => array( '1', 'astına', 'астына', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'mätin-astında', 'мәтін-астында', 'text-bottom' ),
+ 'int' => array( '0', 'İŞKİ:', 'ІШКІ:', 'INT:' ),
+ 'sitename' => array( '1', 'TORAPATAWI', 'ТОРАПАТАУЫ', 'SITENAME' ),
+ 'ns' => array( '0', 'EA:', 'ESİMAYA:', 'ЕА:', 'ЕСІМАЯ:', 'NS:' ),
+ 'localurl' => array( '0', 'JERGİLİKTİJAÝ:', 'ЖЕРГІЛІКТІЖАЙ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'JERGİLİKTİJAÝ2:', 'ЖЕРГІЛІКТІЖАЙ2:', 'LOCALURLE:' ),
+ 'servername' => array( '0', 'SERVERATAWI', 'СЕРВЕРАТАУЫ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'ÄMİRJOLI', 'ӘМІРЖОЛЫ', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'SEPTİGİ:', 'SEPTİK:', 'СЕПТІГІ:', 'СЕПТІК:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__TAQIRIPATINTÜRLENDİRGİZBEW__', '__TATJOQ__', '__ATAWALMASTIRĞIZBAW__', '__AABAW__', '__ТАҚЫРЫПАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__ТАТЖОҚ__', '__АТАУАЛМАСТЫРҒЫЗБАУ__', '__ААБАУ__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__MAĞLUMATINTÜRLENDİRGİZBEW__', '__MATJOQ__', '__MAĞLUMATALMASTIRĞIZBAW__', '__MABAW__', '__МАҒЛҰМАТЫНТҮРЛЕНДІРГІЗБЕУ__', '__МАТЖОҚ__', '__МАҒЛҰМАТАЛМАСТЫРҒЫЗБАУ__', '__МАБАУ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'AĞIMDAĞIAPTASI', 'AĞIMDAĞIAPTA', 'АҒЫМДАҒЫАПТАСЫ', 'АҒЫМДАҒЫАПТА', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'AĞIMDAĞIAPTAKÜNİ', 'АҒЫМДАҒЫАПТАКҮНІ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'JERGİLİKTİAPTASI', 'JERGİLİKTİAPTA', 'ЖЕРГІЛІКТІАПТАСЫ', 'ЖЕРГІЛІКТІАПТА', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'JERGİLİKTİAPTAKÜNİ', 'ЖЕРГІЛІКТІАПТАКҮНІ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'TÜZETWNÖMİRİ', 'NUSQANÖMİRİ', 'ТҮЗЕТУНӨМІРІ', 'НҰСҚАНӨМІРІ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'TÜZETWKÜNİ', 'NUSQAKÜNİ', 'ТҮЗЕТУКҮНІ', 'НҰСҚАКҮНІ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'TÜZETWKÜNİ2', 'NUSQAKÜNİ2', 'ТҮЗЕТУКҮНІ2', 'НҰСҚАКҮНІ2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'TÜZETWAÝI', 'NUSQAAÝI', 'ТҮЗЕТУАЙЫ', 'НҰСҚААЙЫ', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'TÜZETWJILI', 'NUSQAJILI', 'ТҮЗЕТУЖЫЛЫ', 'НҰСҚАЖЫЛЫ', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'TÜZETWWAQITITAÑBASI', 'NUSQAWAQITTÜÝİNDEMESİ', 'ТҮЗЕТУУАҚЫТЫТАҢБАСЫ', 'НҰСҚАУАҚЫТТҮЙІНДЕМЕСІ', 'REVISIONTIMESTAMP' ),
+ 'plural' => array( '0', 'KÖPŞETÜRİ:', 'KÖPŞE:', 'КӨПШЕТҮРІ:', 'КӨПШЕ:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'TOLIQJAÝI:', 'TOLIQJAÝ:', 'ТОЛЫҚЖАЙЫ:', 'ТОЛЫҚЖАЙ:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'TOLIQJAÝI2:', 'TOLIQJAÝ2:', 'ТОЛЫҚЖАЙЫ2:', 'ТОЛЫҚЖАЙ2:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'KÄ1:', 'KİŞİÄRİPPEN1:', 'КӘ1:', 'КІШІӘРІППЕН1:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'BÄ1:', 'BASÄRİPPEN1:', 'БӘ1:', 'БАСӘРІППЕН1:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'KÄ:', 'KİŞİÄRİPPEN:', 'КӘ:', 'КІШІӘРІППЕН:', 'LC:' ),
+ 'uc' => array( '0', 'BÄ:', 'BASÄRİPPEN:', 'БӘ:', 'БАСӘРІППЕН:', 'UC:' ),
+ 'raw' => array( '0', 'QAM:', 'ҚАМ:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'KÖRİNETİNTAQIRIAPATI', 'KÖRSETİLETİNATAW', 'КӨРІНЕТІНТАҚЫРЫАПАТЫ', 'КӨРСЕТІЛЕТІНАТАУ', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'Q', 'Қ', 'R' ),
+ 'newsectionlink' => array( '1', '__JAÑABÖLİMSİLTEMESİ__', '__ЖАҢАБӨЛІМСІЛТЕМЕСІ__', '__NEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'BAĞDARLAMANUSQASI', 'БАҒДАРЛАМАНҰСҚАСЫ', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'JAÝDIMUQAMDAW:', 'ЖАЙДЫМҰҚАМДАУ:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'JÄKİRDİMUQAMDAW', 'ЖӘКІРДІМҰҚАМДАУ', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'AĞIMDAĞIWAQITTÜÝİNDEMESİ', 'AĞIMDAĞIWAQITTÜÝİN', 'АҒЫМДАҒЫУАҚЫТТҮЙІНДЕМЕСІ', 'АҒЫМДАҒЫУАҚЫТТҮЙІН', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'JERGİLİKTİWAQITTÜÝİNDEMESİ', 'JERGİLİKTİWAQITTÜÝİN', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІНДЕМЕСІ', 'ЖЕРГІЛІКТІУАҚЫТТҮЙІН', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'BAĞITBELGİSİ', 'БАҒЫТБЕЛГІСІ', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#TİL:', '#ТІЛ:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'MAĞLUMATTİLİ', 'МАҒЛҰМАТТІЛІ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'ESİMAYABETSANI:', 'EABETSANI:', 'AYABETSANI:', 'ЕСІМАЯБЕТСАНЫ:', 'ЕАБЕТСАНЫ:', 'АЯБЕТСАНЫ:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'ÄKİMŞİSANI', 'ӘКІМШІСАНЫ', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'SANPİŞİMİ', 'САНПІШІМІ', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'SOLĞAIĞIS', 'SOLIĞIS', 'СОЛҒАЫҒЫС', 'СОЛЫҒЫС', 'PADLEFT' ),
+ 'padright' => array( '0', 'OÑĞAIĞIS', 'OÑIĞIS', 'ОҢҒАЫҒЫС', 'ОҢЫҒЫС', 'PADRIGHT' ),
+ 'special' => array( '0', 'arnaýı', 'арнайы', 'special' ),
+ 'defaultsort' => array( '1', 'ÄDEPKİSURIPTAW:', 'ÄDEPKİSANATSURIPTAW:', 'ÄDEPKİSURIPTAWKİLTİ:', 'ÄDEPKİSURIP:', 'ӘДЕПКІСҰРЫПТАУ:', 'ӘДЕПКІСАНАТСҰРЫПТАУ:', 'ӘДЕПКІСҰРЫПТАУКІЛТІ:', 'ӘДЕПКІСҰРЫП:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'FAÝLMEKENİ:', 'ФАЙЛМЕКЕНІ:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'belgi', 'белгі', 'tag' ),
+ 'hiddencat' => array( '1', '__JASIRINSANAT__', '__ЖАСЫРЫНСАНАТ__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'SANATTAĞIBETTER', 'САНАТТАҒЫБЕТТЕР', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'BETMÖLŞERİ', 'БЕТМӨЛШЕРІ', 'PAGESIZE' ),
);
$specialPageAliases = array(
@@ -312,10 +308,10 @@ $specialPageAliases = array(
'Mostlinked' => array( 'Eñ_köp_siltengen_better' ),
'Mostlinkedcategories' => array( 'Eñ_köp_paýdalanılğan_sanattar', 'Eñ_köp_siltengen_sanattar' ),
'Mostlinkedtemplates' => array( 'Eñ_köp_paýdalanılğan_ülgiler', 'Eñ_köp_siltengen_ülgiler' ),
- 'Mostcategories' => array( 'Eñ_köp_sanattar_barı' ),
'Mostimages' => array( 'Eñ_köp_paýdalanılğan_swretter', 'Eñ_köp_swretter_barı' ),
+ 'Mostcategories' => array( 'Eñ_köp_sanattar_barı' ),
'Mostrevisions' => array( 'Eñ_köp_tüzetilgen', 'Eñ_köp_nusqalar_barı' ),
- 'Fewestrevisions' => array( 'Eñ_az_tüzetilgen ' ),
+ 'Fewestrevisions' => array( 'Eñ_az_tüzetilgen' ),
'Shortpages' => array( 'Qısqa_better' ),
'Longpages' => array( 'Uzın_better', 'Ülken_better' ),
'Newpages' => array( 'Jaña_better' ),
@@ -324,7 +320,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'Qorğalğan_better' ),
'Protectedtitles' => array( 'Qorğalğan_taqırıptar', 'Qorğalğan_atawlar' ),
'Allpages' => array( 'Barlıq_better' ),
- 'Prefixindex' => array( 'Bastawış_tizimi' ) ,
+ 'Prefixindex' => array( 'Bastawış_tizimi' ),
'Ipblocklist' => array( 'Buğattalğandar' ),
'Specialpages' => array( 'Arnaýı_better' ),
'Contributions' => array( 'Ülesi' ),
@@ -333,14 +329,14 @@ $specialPageAliases = array(
'Whatlinkshere' => array( 'Mında_siltegender' ),
'Recentchangeslinked' => array( 'Siltengenderdiñ_özgeristeri', 'Qatıstı_özgerister' ),
'Movepage' => array( 'Betti_jıljıtw' ),
- 'Blockme' => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw',),
+ 'Blockme' => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw' ),
'Booksources' => array( 'Kitap_qaýnarları' ),
'Categories' => array( 'Sanattar' ),
'Export' => array( 'Sırtqa_berw' ),
'Version' => array( 'Nusqası' ),
'Allmessages' => array( 'Barlıq_xabarlar' ),
'Log' => array( 'Jwrnal', 'Jwrnaldar' ),
- 'Blockip' => array( 'Jaýdı_buğattaw', 'IP_buğattaw'),
+ 'Blockip' => array( 'Jaýdı_buğattaw', 'IP_buğattaw' ),
'Undelete' => array( 'Joywdı_boldırmaw', 'Joýılğandı_qaýtarw' ),
'Import' => array( 'Sırttan_alw' ),
'Lockdb' => array( 'Derekqordı_qulıptaw' ),
@@ -356,7 +352,7 @@ $specialPageAliases = array(
'Mypage' => array( 'Jeke_betim' ),
'Mytalk' => array( 'Talqılawım' ),
'Mycontributions' => array( 'Ülesim' ),
- 'Listadmins' => array( 'Äkimşiler', 'Äkimşi_tizimi'),
+ 'Listadmins' => array( 'Äkimşiler', 'Äkimşi_tizimi' ),
'Listbots' => array( 'Bottar', 'Bottar_tizimi' ),
'Popularpages' => array( 'Eñ_köp_qaralğan_better', 'Äýgili_better' ),
'Search' => array( 'İzdew' ),
@@ -473,7 +469,7 @@ $messages = array(
'category-media-header' => '«$1» sanatındağı taspalar',
'category-empty' => "''Bul sanatta ağımda eş bet ne taspa joq.''",
'hidden-categories' => '{{PLURAL:$1|Jasırın sanat|Jasırın sanattar}}',
-'hidden-category-category' => 'Jasırın sanattar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Jasırın sanattar',
'category-subcat-count' => '{{PLURAL:$2|Bul sanatta tek kelesi sanatşa bar.|Bul sanatta kelesi $1 sanatşa bar (ne barlığı $2).}}',
'category-subcat-count-limited' => 'Bul sanatta kelesi $1 sanatşa bar.',
'category-article-count' => '{{PLURAL:$2|Bul sanatta tek kelesi bet bar.|Bul sanatta kelesi $1 bet bar (ne barlığı $2).}}',
@@ -490,10 +486,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MedïaWïkïdiñ Jïı Qoýılğan Sawaldarı]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MedïaWïkï şığw twralı xat taratw tizimi]',
-'about' => 'Joba twralı',
-'article' => 'Mağlumat beti',
-'newwindow' => '(jaña terezede)',
-'cancel' => 'Boldırmaw',
+'about' => 'Joba twralı',
+'article' => 'Mağlumat beti',
+'newwindow' => '(jaña terezede)',
+'cancel' => 'Boldırmaw',
+'moredotdotdot' => 'Köbirek…',
+'mypage' => 'Jeke betim',
+'mytalk' => 'Talqılawım',
+'anontalk' => 'IP talqılawı',
+'navigation' => 'Şarlaw',
+'and' => '&#32;jäne',
+
+# Cologne Blue skin
'qbfind' => 'Tabw',
'qbbrowse' => 'Şolw',
'qbedit' => 'Öñdew',
@@ -501,15 +505,8 @@ $messages = array(
'qbpageinfo' => 'Aýnala',
'qbmyoptions' => 'Betterim',
'qbspecialpages' => 'Arnaýı better',
-'moredotdotdot' => 'Köbirek…',
-'mypage' => 'Jeke betim',
-'mytalk' => 'Talqılawım',
-'anontalk' => 'IP talqılawı',
-'navigation' => 'Şarlaw',
-'and' => '&#32;jäne',
-
-# Metadata in edit box
-'metadata_help' => 'Qosımşa derekter:',
+'faq' => 'Jïi qoýılğan sawaldar',
+'faqpage' => 'Project:Jïi qoýılğan sawaldar',
'errorpagetitle' => 'Qatelik',
'returnto' => '$1 degenge qaýta kelw.',
@@ -559,7 +556,7 @@ $messages = array(
'otherlanguages' => 'Basqa tilderde',
'redirectedfrom' => '($1 betinen aýdatılğan)',
'redirectpagesub' => 'Aýdatw beti',
-'lastmodifiedat' => 'Bul bettiñ özgertilgen soñğı kezi: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Bul bettiñ özgertilgen soñğı kezi: $2, $1.',
'viewcount' => 'Bul bet $1 ret qatınalğan.',
'protectedpage' => 'Qorğalğan bet',
'jumpto' => 'Mında ötw:',
@@ -570,7 +567,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} twralı',
'aboutpage' => 'Project:Joba twralı',
'copyright' => 'Mağlumat $1 şartımen jetimdi.',
-'copyrightpagename' => '{{SITENAME}} awtorlıq quqıqtarı',
'copyrightpage' => '{{ns:project}}:Awtorlıq quqıqtar',
'currentevents' => 'Ağımdağı oqïğalar',
'currentevents-url' => 'Project:Ağımdağı oqïğalar',
@@ -578,8 +574,6 @@ $messages = array(
'disclaimerpage' => 'Project:Jawapkerşilikten bas tartw',
'edithelp' => 'Öndew anıqtaması',
'edithelppage' => 'Help:Öñdew',
-'faq' => 'Jïi qoýılğan sawaldar',
-'faqpage' => 'Project:Jïi qoýılğan sawaldar',
'helppage' => 'Help:Mazmunı',
'mainpage' => 'Bastı bet',
'mainpage-description' => 'Bastı bet',
@@ -656,10 +650,6 @@ Soñğı bolğan derekqor suranımı:
«$1»
mına jeteden: «$2».
MySQL qaýtarğan qatesi «$3: $4»',
-'noconnect' => 'Ğafw etiñiz! Bul wïkïde keýbir texnïkalıq qïınşılıqtar kezdesti, jäne de derekqor serverine baýlanısa almaýdı.<br />
-$1',
-'nodb' => '$1 degen derekqor bölektenbedi',
-'cachederror' => 'Tömende suralğan bettiñ bürkemelengen köşirmesi beriledi, äli jañartılmağan bolwı mümkin.',
'laggedslavemode' => 'Qulaqtandırw: Bette jwıqtağı jañalawlar bolmawı mümkin.',
'readonly' => 'Derekqorı qulıptalğan',
'enterlockreason' => 'Qulıptaw sebebin, qaý waqıtqa deýin qulıptalğanın kiristirip, engiziñiz',
@@ -718,7 +708,6 @@ $2',
Keltirilgen sebebi: ''$2''.",
# Login and logout pages
-'logouttitle' => 'Qatıswşı şığwı',
'logouttext' => "'''Endi jüýeden şıqtıñız.'''
Jüýege kirmesten {{SITENAME}} jobasın paýdalanwın jalğastıra alasız, nemese däl sol ne özge qatıswşı bop qaýta krwiñiz mümkin.
@@ -726,7 +715,6 @@ Añğartpa: Keýbir better şolğışıñızdıñ bürkemesin tazartqanşa deýi
'welcomecreation' => '== Qoş keldiñiz, $1! ==
Jaña tirkelgiñiz jasaldı.
{{SITENAME}} baptalımdarıñızdı özgertwin umıtpañız.',
-'loginpagetitle' => 'Qatıswşı kirwi',
'yourname' => 'Qatıswşı atıñız:',
'yourpassword' => 'Qupïya söziñiz:',
'yourpasswordagain' => 'Qupïya sözdi qaýtalañız:',
@@ -749,23 +737,7 @@ Jaña tirkelgiñiz jasaldı.
'badretype' => 'Engizgen qupïya sözderiñiz bir birine säýkes emes.',
'userexists' => 'Engizgen qatıswşı atıñız aldaqaşan paýdalanwda.
Özge atawdı tañdañız.',
-'youremail' => 'E-poştañız:',
-'username' => 'Qatıswşı atıñız:',
-'uid' => 'Qatıswşı teñdestirgişiñiz:',
-'prefs-memberingroups' => 'Kirgen {{PLURAL:$1|tobıñız|toptarıñız}}:',
-'yourrealname' => 'Naqtı atıñız:',
-'yourlanguage' => 'Tiliñiz:',
-'yourvariant' => 'Til/jazba nusqañız:',
-'yournick' => 'Qoltañbañız:',
-'badsig' => 'Qam qoltañbañız jaramsız; HTML belgişelerin tekseriñiz.',
-'badsiglength' => 'Laqap atıñız tım uzın;
-Bul $1 tañbadan aspawı jön.',
-'email' => 'E-poştañız',
-'prefs-help-realname' => 'Naqtı atıñız mindetti emes.
-Eger bunı jetistirwdi tañdasañız, bul tüzetwiñizdiñ awtorlığın anıqtaw üşin qoldanıladı.',
'loginerror' => 'Kirw qatesi',
-'prefs-help-email' => 'E-poşta mekenjaýı mindetti emes, biraq jeke basıñızdı aşpaý «Qatıswşı» nemese «Qatıswşı_talqılawı» degen betteriñiz arqılı barşa sizben baýlanısa aladı.',
-'prefs-help-email-required' => 'E-poşta mekenjaýı kerek.',
'nocookiesnew' => 'Jaña qatıswşı tirkelgisi jasaldı, biraq kirmegensiz.
Qatıswşı kirw üşin {{SITENAME}} torabında «cookie» faýldarı qoldanıladı.
Sizde «cookies» öşirilgen.
@@ -821,18 +793,16 @@ Eger bul tirkelgi qatelikpen jasalsa, osı xabarğa elemewiñiz mümkin.',
'loginlanguagelabel' => 'Til: $1',
# Password reset dialog
-'resetpass' => 'Tirkelginiñ qupïya sözin özgertw',
-'resetpass_announce' => 'Xatpen jiberilgen waqıtşa kodımen kirgensiz.
+'resetpass' => 'Tirkelginiñ qupïya sözin özgertw',
+'resetpass_announce' => 'Xatpen jiberilgen waqıtşa kodımen kirgensiz.
Kirwiñizdi bitirw üşin, jaña qupïya söziñizdi mında engizwiñiz jön:',
-'resetpass_header' => 'Qupïya sözdi özgertw',
-'oldpassword' => 'Ağımdıq qupïya söziñiz:',
-'newpassword' => 'Jaña qupïya söziñiz:',
-'retypenew' => 'Jaña qupïya söziñizdi qaýtalañız:',
-'resetpass_submit' => 'Qupïya sözdi qoýıñız da kiriñiz',
-'resetpass_success' => 'Qupïya söziñiz sätti özgertildi! Endi kiriñiz…',
-'resetpass_bad_temporary' => 'Waqıtşa qupïya söz jaramsız.
-Mümkin qupïya söziñizdi aldaqaşan sätti özgertken bolarsız nemese jaña waqıtşa qupïya sözin suratılğansız.',
-'resetpass_forbidden' => '{{SITENAME}} jobasında qupïya sözder özgertilmeýdi',
+'resetpass_header' => 'Qupïya sözdi özgertw',
+'oldpassword' => 'Ağımdıq qupïya söziñiz:',
+'newpassword' => 'Jaña qupïya söziñiz:',
+'retypenew' => 'Jaña qupïya söziñizdi qaýtalañız:',
+'resetpass_submit' => 'Qupïya sözdi qoýıñız da kiriñiz',
+'resetpass_success' => 'Qupïya söziñiz sätti özgertildi! Endi kiriñiz…',
+'resetpass_forbidden' => '{{SITENAME}} jobasında qupïya sözder özgertilmeýdi',
# Edit page toolbar
'bold_sample' => 'Jwan mätin',
@@ -904,7 +874,6 @@ Bul nömirdi ärbir suranımıñızdarğa kiristiriñiz.",
'blockededitsource' => "'''$1''' degenge jasalğan '''öñdemeleriñizdiñ''' mätini tömende körsetiledi:",
'whitelistedittitle' => 'Öñdew üşin kirwiñiz jön.',
'whitelistedittext' => 'Betterdi öñdew üşin $1 jön.',
-'confirmedittitle' => 'Quptaw xatı qaýta öñdelwi jön',
'confirmedittext' => 'Betterdi öñdew üşin aldın ala E-poşta mekenjaýıñızdı quptawıñız jön.
E-poşta mekenjaýıñızdı [[{{#special:Preferences}}|paýdalanwşılıq baptalımdarıñız]] arqılı qoýıñız da jaramdılığın tekserip şığıñız.',
'nosuchsectiontitle' => 'Osındaý eş bölim joq',
@@ -924,7 +893,8 @@ Eger siz tirkelgisiz qatıswşı bolsañız jäne sizge qatıssız mändemeler j
'noarticletext' => 'Bul bette ağımda eş mätin joq, basqa betterden osı bet atawın [[Special:Search/{{PAGENAME}}|izdep körwiñizge]] nemese osı betti [{{fullurl:{{FULLPAGENAME}}|action=edit}} tüzetwiñizge] boladı.',
'userpage-userdoesnotexist' => '«$1» qatıswşı tirkelgisi jazıp alınbağan. Bul betti bastaw/öñdew talabıñızdı tekserip şığıñız.',
'clearyourcache' => "'''Añğartpa:''' Saqtağannan keýin, özgeristerdi körw üşin şolğış bürkemesin orağıtw ıqtïmal. '''Mozilla / Firefox / Safari:''' ''Qaýta jüktew'' batırmasın nuqığanda ''Shift'' tutıñız, ne ''Ctrl-Shift-R'' basıñız (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''Jañartw'' batırmasın nuqığanda ''Ctrl'' tutıñız, ne ''Ctrl-F5'' basıñız; '''Konqueror:''': ''Jañartw'' batırmasın jaý nuqıñız, ne ''F5'' basıñız; '''Opera''' paýdanwşıları ''Quraldar→Baptalımdar'' degenge barıp bürkemesin tolıq tazartw jön.",
-'usercssjsyoucanpreview' => "'''Aqıl-keñes:''' Jaña CSS/JS faýlın saqtaw aldında «Qarap şığw» batırmasın qoldanıp sınaqtañız.",
+'usercssyoucanpreview' => "'''Aqıl-keñes:''' Jaña CSS faýlın saqtaw aldında «Qarap şığw» batırmasın qoldanıp sınaqtañız.",
+'userjsyoucanpreview' => "'''Aqıl-keñes:''' Jaña JS faýlın saqtaw aldında «Qarap şığw» batırmasın qoldanıp sınaqtañız.",
'usercsspreview' => "'''Mınaw CSS mätinin tek qarap şığw ekenin umıtpañız, ol äli saqtalğan joq!'''",
'userjspreview' => "'''Mınaw JavaScript qatıswşı bağdarlamasın tekserw/qarap şığw ekenin umıtpañız, ol äli saqtalğan joq!'''",
'userinvalidcssjstitle' => "'''Qulaqtandırw:''' Osı arada «$1» degen eş mäner joq.
@@ -992,7 +962,7 @@ Keri qaýtıp bar betti öñdewiñizge boladı, nemese [[{{#special:Userlogin}}|
'permissionserrors' => 'Ruqsattar qateleri',
'permissionserrorstext' => 'Bunı istewge ruqsatıñız joq, kelesi {{PLURAL:$1|sebep|sebepter}} boýınşa:',
'permissionserrorstext-withaction' => '$2 degenge ruqsatıñız joq, kelesi {{PLURAL:$1|sebep|sebepter}} boýınşa:',
-'recreate-deleted-warn' => "'''Qulaqtandırw: Aldında joýılğan betti qaýta bastaýın dep tursız.'''
+'recreate-moveddeleted-warn' => "'''Qulaqtandırw: Aldında joýılğan betti qaýta bastaýın dep tursız.'''
Mına bet öñdewin jalğastırw üşin jarastığın tekserip şığwıñız jön.
Qolaýlı bolwı üşin bul bettiñ joyw jwrnalı keltirilgen:",
@@ -1026,7 +996,7 @@ $3 keltirilgen sebebi: ''$2''",
'nohistory' => 'Mında bul bettiniñ tüzetw tarïxı joq.',
'currentrev' => 'Ağımdıq tüzetw',
'revisionasof' => '$1 kezindegi tüzetw',
-'revision-info' => '$1 kezindegi $2 istegen tüzetw', # Additionally available: $3: revision id
+'revision-info' => '$1 kezindegi $2 istegen tüzetw',
'previousrevision' => '← Eskilew tüzetwi',
'nextrevision' => 'Jañalaw tüzetwi →',
'currentrevisionlink' => 'Ağımdıq tüzetwi',
@@ -1038,7 +1008,6 @@ $3 keltirilgen sebebi: ''$2''",
'histlegend' => 'Aýırmasın bölektew: salıstırmaq nusqalarınıñ qosw közderin belgilep <Enter> pernesin basıñız, nemese tömendegi batırmanı nuqıñız.<br />
Şarttı belgiler: (ağım.) = ağımdıq nusqamen aýırması,
(soñ.) = aldıñğı nusqamen aýırması, ş = şağın öñdeme',
-'deletedrev' => '[joýılğan]',
'histfirst' => 'Eñ alğaşqısına',
'histlast' => 'Eñ soñğısına',
'historysize' => '($1 baýt)',
@@ -1047,7 +1016,7 @@ $3 keltirilgen sebebi: ''$2''",
# Revision feed
'history-feed-title' => 'Tüzetw tarïxı',
'history-feed-description' => 'Mına wïkïdegi bul bettiñ tüzetw tarïxı',
-'history-feed-item-nocomment' => '$2 kezindegi $1 degen', # user at time
+'history-feed-item-nocomment' => '$2 kezindegi $1 degen',
'history-feed-empty' => 'Suratılğan bet joq boldı.
Ol mına wïkïden joýılğan, nemese atawı awıstırılğan.
Osığan qatıstı jaña betterdi [[{{#special:Search}}|bul wïkïden izdewdi]] baýqap köriñiz.',
@@ -1073,12 +1042,12 @@ keltirilgen tüzetw joq, ne ağımdıq tüzetwdi jasırw üşin ärekettenip kö
{{SITENAME}} jobasınıñ basqa äkimşileri jasırın mağlumatqa qatınaý aladı, jäne qosımşa tïımdar qoýılğanşa deýin, osı tildesw arqılı joywdı boldırmawı mümkin.",
'revdelete-legend' => 'Körinis tïımdarın qoyw:',
'revdelete-hide-text' => 'Tüzetw mätinin jasır',
+'revdelete-hide-image' => 'Faýl mağlumatın jasır',
'revdelete-hide-name' => 'Äreket pen nısanasın jasır',
'revdelete-hide-comment' => 'Öñdeme mändemesin jasır',
'revdelete-hide-user' => 'Öñdewşi atın (IP mekenjaýın) jasır',
'revdelete-hide-restricted' => 'Osı tïımdardı äkimşilerge qoldanw jäne bul tildeswdi qulıptaw',
'revdelete-suppress' => 'Derekterdi barşağa uqsas äkimşilerden de şettetw',
-'revdelete-hide-image' => 'Faýl mağlumatın jasır',
'revdelete-unsuppress' => 'Qalpına keltirilgen tüzetwlerden tïımdardı alastaw',
'revdelete-log' => 'Sebebi:',
'revdelete-submit' => 'Bölektengen tüzetwge qoldanw',
@@ -1098,6 +1067,7 @@ keltirilgen tüzetw joq, ne ağımdıq tüzetwdi jasırw üşin ärekettenip kö
'revdelete-unhid' => '$1 aştı',
'revdelete-log-message' => '$2 tüzetw üşin $1',
'logdelete-log-message' => '$2 oqïğa üşin $1',
+'revdelete-edit-reasonlist' => 'Joyw sebepterin öñdew',
# Suppression log
'suppressionlog' => 'Şettetw jwrnalı',
@@ -1146,17 +1116,14 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{Mediawiki:helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
'searchsubtitle' => "İzdegeniñiz: '''[[:$1]]'''",
'searchsubtitleinvalid' => "İzdegeniñiz: '''$1'''",
-'noexactmatch' => "'''Osı arada bettiñ «$1» taqırıp atı joq.'''
-[[:$1|Bul betti bastaý]] alasız.",
-'noexactmatch-nocreate' => "'''Osı arada bettiñ «$1» taqırıp atı joq.'''",
'toomanymatches' => 'Tım köp säýkes qaýtarıldı, özge suranımdı baýqap köriñiz',
'titlematches' => 'Bet taqırıbın atı säýkes keledi',
'notitlematches' => 'Eş bet taqırıbın atı säýkes emes',
'textmatches' => 'Bet mätini säýkes keledi',
'notextmatches' => 'Eş bet mätini säýkes emes',
-'prevn' => 'aldıñğı $1',
-'nextn' => 'kelesi $1',
-'viewprevnext' => 'Körsetilwi: ($1) ($2) ($3) jazba',
+'prevn' => 'aldıñğı {{PLURAL:$1|$1}}',
+'nextn' => 'kelesi {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Körsetilwi: ($1 {{int:pipe-separator}} $2) ($3) jazba',
'searchhelp-url' => 'Help:Mazmunı',
'search-result-size' => '$1 ($2 söz)',
'search-result-score' => 'Araqatınastılığı: $1 %',
@@ -1174,7 +1141,6 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
'searchall' => 'barlıq',
'showingresults' => "Tömende nömir '''$2''' ornınan bastap barınşa '''$1''' nätïje körsetiledi.",
'showingresultsnum' => "Tömende nömir '''$2''' ornınan bastap '''$3''' nätïje körsetiledi.",
-'showingresultstotal' => "Tömende {{PLURAL:$3|'''$3''' arasınan '''$1''' nätïje körsetiledi|'''$3''' arasınan '''$1 — $2''' nätïje awqımı körsetiledi}}",
'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi. Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''barlıq:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
'powersearch' => 'Keñeýtilgen izdew',
'powersearch-legend' => 'Keñeýtilgen izdew',
@@ -1186,71 +1152,75 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
Äzirşe Google arqılı izdewge boladı.
Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümkin.',
-# Preferences page
-'preferences' => 'Baptalımdar',
-'mypreferences' => 'Baptalımdarım',
-'prefs-edits' => 'Öñdeme sanı:',
-'prefsnologin' => 'Kirmegensiz',
-'prefsnologintext' => 'Baptawıñızdı qoyw üşin [[Special:UserLogin|kirwiñiz]] tïisti.',
-'prefsreset' => 'Baptalımdar arqawdan qaýta qoýıldı.',
+# Quickbar
'qbsettings' => 'Mäzir',
'qbsettings-none' => 'Eşqandaý',
'qbsettings-fixedleft' => 'Solğa bekitilgen',
'qbsettings-fixedright' => 'Oñğa bekitilgen',
'qbsettings-floatingleft' => 'Solğa qalqığan',
'qbsettings-floatingright' => 'Oñğa qalqığan',
-'changepassword' => 'Qupïya sözdi özgertw',
-'skin' => 'Mänerler',
-'skin-preview' => 'Qarap şığw',
-'math' => 'Örnekter',
-'dateformat' => 'Kün-aý pişimi',
-'datedefault' => 'Eş qalawsız',
-'datetime' => 'Waqıt',
-'math_failure' => 'Qurılımın taldatwı sätsiz bitti',
-'math_unknown_error' => 'belgisiz qate',
-'math_unknown_function' => 'belgisiz jete',
-'math_lexing_error' => 'söz keniniñ qatesi',
-'math_syntax_error' => 'söýlem jüýesiniñ qatesi',
-'math_image_error' => 'PNG awdarısı sätsiz bitti;
-latex, dvips, gs jäne convert bağdarlamalarınıñ durıs ornatwın tekserip şığıñız',
-'math_bad_tmpdir' => 'math degen waqıtşa qaltasına jazılmadı, ne qalta qurılmadı',
-'math_bad_output' => 'math degen beris qaltasına jazılmadı, ne qalta qurılmadı',
-'math_notexvc' => 'texvc atqarılmalısı tabılmadı;
-baptaw üşin math/README qujatın qarañız.',
-'prefs-personal' => 'Jeke derekteri',
-'prefs-rc' => 'Jwıqtağı özgerister',
-'prefs-watchlist' => 'Baqılaw',
-'prefs-watchlist-days' => 'Baqılaw tizimindegi künderdiñ körsetpek sanı:',
-'prefs-watchlist-edits' => 'Keñeýtilgen baqılawlardağı özgeristerdiñ barınşa körsetpek sanı:',
-'prefs-misc' => 'Ärqïlı',
-'saveprefs' => 'Saqta',
-'resetprefs' => 'Saqtalmağan özgeristerdi tazart',
-'textboxsize' => 'Öñdew',
-'rows' => 'Joldar:',
-'columns' => 'Bağandar:',
-'searchresultshead' => 'İzdew',
-'resultsperpage' => 'Bet saýın nätïje sanı:',
-'contextlines' => 'Nätïje saýın jol sanı:',
-'contextchars' => 'Jol saýın tañba sanı:',
-'stub-threshold' => '<a href="#" class="stub">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):',
-'recentchangesdays' => 'Jüıqtağı özgeristerinde körsetpek kün sanı:',
-'recentchangescount' => 'Jwıqtağı özgeristerdinde, tarïx jäne jwrnal betterinde körsetpek öñdeme sanı:',
-'savedprefs' => 'Baptalımdarıñız saqtaldı.',
-'timezonelegend' => 'Waqıt beldewi',
-'timezonetext' => '¹ Jergilikti waqıtıñız ben server waqıtınıñ (UTC) arasındağı sağat sanı.',
-'localtime' => 'Jergilikti waqıt',
-'timezoneoffset' => 'Sağat ığıswı¹',
-'servertime' => 'Server waqıtı',
-'guesstimezone' => 'Şolğıştan alıp toltırw',
-'allowemail' => 'Basqadan xat qabıldawın qos',
-'prefs-searchoptions' => 'İzdew baptalımdarı',
-'prefs-namespaces' => 'Esim ayaları',
-'defaultns' => 'Mına esim ayalarda ädepkiden izdew:',
-'default' => 'ädepki',
-'files' => 'Faýldar',
+
+# Preferences page
+'preferences' => 'Baptalımdar',
+'mypreferences' => 'Baptalımdarım',
+'prefs-edits' => 'Öñdeme sanı:',
+'prefsnologin' => 'Kirmegensiz',
+'prefsnologintext' => 'Baptawıñızdı qoyw üşin [[Special:UserLogin|kirwiñiz]] tïisti.',
+'changepassword' => 'Qupïya sözdi özgertw',
+'prefs-skin' => 'Mänerler',
+'skin-preview' => 'Qarap şığw',
+'prefs-math' => 'Örnekter',
+'datedefault' => 'Eş qalawsız',
+'prefs-datetime' => 'Waqıt',
+'prefs-personal' => 'Jeke derekteri',
+'prefs-rc' => 'Jwıqtağı özgerister',
+'prefs-watchlist' => 'Baqılaw',
+'prefs-watchlist-days' => 'Baqılaw tizimindegi künderdiñ körsetpek sanı:',
+'prefs-watchlist-edits' => 'Keñeýtilgen baqılawlardağı özgeristerdiñ barınşa körsetpek sanı:',
+'prefs-misc' => 'Ärqïlı',
+'saveprefs' => 'Saqta',
+'resetprefs' => 'Saqtalmağan özgeristerdi tazart',
+'prefs-editing' => 'Öñdew',
+'rows' => 'Joldar:',
+'columns' => 'Bağandar:',
+'searchresultshead' => 'İzdew',
+'resultsperpage' => 'Bet saýın nätïje sanı:',
+'contextlines' => 'Nätïje saýın jol sanı:',
+'contextchars' => 'Jol saýın tañba sanı:',
+'stub-threshold' => '<a href="#" class="stub">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):',
+'recentchangesdays' => 'Jüıqtağı özgeristerinde körsetpek kün sanı:',
+'recentchangescount' => 'Jwıqtağı özgeristerdinde, tarïx jäne jwrnal betterinde körsetpek öñdeme sanı:',
+'savedprefs' => 'Baptalımdarıñız saqtaldı.',
+'timezonelegend' => 'Waqıt beldewi',
+'localtime' => 'Jergilikti waqıt',
+'timezoneoffset' => 'Sağat ığıswı¹',
+'servertime' => 'Server waqıtı',
+'guesstimezone' => 'Şolğıştan alıp toltırw',
+'allowemail' => 'Basqadan xat qabıldawın qos',
+'prefs-searchoptions' => 'İzdew baptalımdarı',
+'prefs-namespaces' => 'Esim ayaları',
+'defaultns' => 'Mına esim ayalarda ädepkiden izdew:',
+'default' => 'ädepki',
+'prefs-files' => 'Faýldar',
+'youremail' => 'E-poştañız:',
+'username' => 'Qatıswşı atıñız:',
+'uid' => 'Qatıswşı teñdestirgişiñiz:',
+'prefs-memberingroups' => 'Kirgen {{PLURAL:$1|tobıñız|toptarıñız}}:',
+'yourrealname' => 'Naqtı atıñız:',
+'yourlanguage' => 'Tiliñiz:',
+'yourvariant' => 'Til/jazba nusqañız:',
+'yournick' => 'Qoltañbañız:',
+'badsig' => 'Qam qoltañbañız jaramsız; HTML belgişelerin tekseriñiz.',
+'badsiglength' => 'Laqap atıñız tım uzın;
+Bul $1 tañbadan aspawı jön.',
+'email' => 'E-poştañız',
+'prefs-help-realname' => 'Naqtı atıñız mindetti emes.
+Eger bunı jetistirwdi tañdasañız, bul tüzetwiñizdiñ awtorlığın anıqtaw üşin qoldanıladı.',
+'prefs-help-email' => 'E-poşta mekenjaýı mindetti emes, biraq jeke basıñızdı aşpaý «Qatıswşı» nemese «Qatıswşı_talqılawı» degen betteriñiz arqılı barşa sizben baýlanısa aladı.',
+'prefs-help-email-required' => 'E-poşta mekenjaýı kerek.',
# User rights
-'userrights' => 'Qatıswşı quqıqtarın rettew', # Not used as normal message but as header for the special page itself
+'userrights' => 'Qatıswşı quqıqtarın rettew',
'userrights-lookup-user' => 'Qatıswşı toptarın rettew',
'userrights-user-editname' => 'Qatıswşı atın engiziñiz:',
'editusergroup' => 'Qatıswşı toptarın öñdew',
@@ -1332,6 +1302,8 @@ baptaw üşin math/README qujatın qarañız.',
'right-editprotected' => 'Qorğalğan betterdi öñdew (bawlı qorğawlarsız)',
'right-editinterface' => 'Paýdalanwşılıq tildesiwin öñdew',
'right-editusercssjs' => 'Basqa qatıswşılardıñ CSS jäne JS faýldarın öñdew',
+'right-editusercss' => 'Basqa qatıswşılardıñ CSS faýldarın öñdew',
+'right-edituserjs' => 'Basqa qatıswşılardıñ JS faýldarın öñdew',
'right-rollback' => 'Belgili betti öñdegen soñğı qatıswşınıñ öñdemelerinen jıldam şegindirw',
'right-markbotedits' => 'Şegindirlgen öñdemelerdi bottardiki dep belgilew',
'right-noratelimit' => 'Eselik şektelimderi ıqpal etpeýdi',
@@ -1382,6 +1354,8 @@ baptaw üşin math/README qujatın qarañız.',
# Recent changes linked
'recentchangeslinked' => 'Qatıstı özgerister',
+'recentchangeslinked-feed' => 'Qatıstı özgerister',
+'recentchangeslinked-toolbox' => 'Qatıstı özgerister',
'recentchangeslinked-title' => '«$1» degenge qatıstı özgerister',
'recentchangeslinked-noresult' => 'Siltegen betterde keltirilgen merzimde eşqandaý özgeris bolmağan.',
'recentchangeslinked-summary' => "Bul tizimde özindik betke siltegen betterdegi (ne özindik sanat müşelerindegi) istelgen jwıqtağı özgerister beriledi.
@@ -1392,7 +1366,6 @@ baptaw üşin math/README qujatın qarañız.',
# Upload
'upload' => 'Qotarıp berw',
'uploadbtn' => 'Qotarıp ber!',
-'reupload' => 'Qaýta qotarıp berw',
'reuploaddesc' => 'Qotarıp berwdi boldırmaw jäne qotarw pişinine qaýta kelw.',
'uploadnologin' => 'Kirmegensiz',
'uploadnologintext' => 'Faýl qotarw üşin [[Special:UserLogin|kirwiñiz]] kerek.',
@@ -1442,7 +1415,6 @@ Qısqaşa mazmundamañız osı arada körsetilw üşin, bunı qolmen öñdemek b
* Qotarıp beriletin faýl atawı: '''<tt>[[:$1]]</tt>'''
* Bar bolğan faýl atawı: '''<tt>[[:$2]]</tt>'''
Özge atawdı tañdañız.",
-'fileexists-thumb' => "<center>'''Bar bolğan swret'''</center>",
'fileexists-thumbnail-yes' => "Osı faýl — mölşeri kişiritilgen swret ''(nobaý)'' sïyaqtı. [[$1|thumb]]
Bul '''<tt>[[:$1]]</tt>''' degen faýldı sınap şığıñız.
Eger sınalğan faýl tüpnusqalı mölşeri bar dälme-däl swret bolsa, qosısmşa nobaýdı qotarıp berw keregi joq.",
@@ -1462,8 +1434,6 @@ keri qaýtıñız da, osı faýldı jaña atımen qotarıp beriñiz. [[File:$1|t
'uploaddisabled' => 'Qotarıp berw öşirilgen',
'uploaddisabledtext' => '{{SITENAME}} jobasında faýl qotarıp berwi öşirilgen.',
'uploadscripted' => 'Bul faýlda veb şolğıştı qatelikpen taldatqızatın HTML ne ämir kodı bar.',
-'uploadcorrupt' => 'Bul faýl büldirilgen, ne burıs keñeýtimi bar.
-Faýldı tekserip şığıñız da, qaýta qotarıp beriñiz.',
'uploadvirus' => 'Bul faýlda vïrws bar! Egjeý-tegjeýleri: $1',
'sourcefilename' => 'Qaýnar faýl atawı:',
'destfilename' => 'Nısana faýl atawı:',
@@ -1498,6 +1468,7 @@ Bul torap iste ekenin tekserip şığıñız, azğana kidire turıñız da qaýt
Talabıñızdı qol tïgen kezinde qaýta baýqap körwiñiz mümkin.',
'license' => 'Lïcenzïyalandırwı:',
+'license-header' => 'Lïcenzïyalandırwı:',
'nolicense' => 'Eşteñe bölektenbegen',
'license-nopreview' => '(Qarap şığw jetimdi emes)',
'upload_source_url' => ' (jaramdı, barşağa qatınawlı URL)',
@@ -1517,6 +1488,7 @@ Bağannıñ bas jolın nuqığanda surıptawdıñ rettewi özgertiledi.',
'listfiles_description' => 'Sïpattaması',
# File description page
+'file-anchor-link' => 'Faýl beti',
'filehist' => 'Faýl tarïxı',
'filehist-help' => 'Faýldıñ qaý waqıtta qalaý körinetin üşin Kün-aý/Waqıt degendi nuqıñız.',
'filehist-deleteall' => 'barlığın joý',
@@ -1534,12 +1506,7 @@ Bağannıñ bas jolın nuqığanda surıptawdıñ rettewi özgertiledi.',
'morelinkstoimage' => 'Bul faýldıñ [[{{#special:Whatlinkshere}}/$1|köbirek siltemelerin]] qaraw.',
'redirectstofile' => 'Kelesi {{PLURAL:$1|faýl|$1 faýl}} bul faýlğa aýdaýdı:',
'duplicatesoffile' => 'Kelesi {{PLURAL:$1|faýl bul faýldıñ telnusqası|$1 faýl bul faýldıñ telnusqaları}}:',
-'sharedupload' => 'Bul faýl ortaq qoýmağa qotarıp berilgen sondıqtan basqa jobalarda qoldanwı mümkin.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Bılaýğı aqparat üşin $1 degendi qarañız.',
-'shareduploadwiki-desc' => 'Bul $1 degen faýldıñ ortaq qoýmadağı mälimetteri tömende körsetiledi.',
-'shareduploadwiki-linktext' => 'faýldıñ sïpattama beti',
-'noimage' => 'Bılaý atalğan faýl joq, $1 mümkindigiñiz bar.',
-'noimage-linktext' => 'bunı qotarıp ber',
+'sharedupload' => 'Bul faýl ortaq qoýmağa qotarıp berilgen sondıqtan basqa jobalarda qoldanwı mümkin.',
'uploadnewversion-linktext' => 'Bul faýldıñ jaña nusqasın qotarıp berw',
# File reversion
@@ -1613,8 +1580,8 @@ Eger [[MediaWiki:Disambiguationspage]] tizimindegi ülgi qoldanılsa, bet aýrı
'brokenredirects' => 'Eş betke keltirmeýtin aýdağıştar',
'brokenredirectstext' => 'Kelesi aýdağıştar joq betterge silteýdi:',
-'brokenredirects-edit' => '(öñdew)',
-'brokenredirects-delete' => '(joyw)',
+'brokenredirects-edit' => 'öñdew',
+'brokenredirects-delete' => 'joyw',
'withoutinterwiki' => 'Eş tilge siltemegen better',
'withoutinterwiki-summary' => 'Kelesi better basqa tilderge siltemeýdi',
@@ -1885,8 +1852,8 @@ soñğı üleskeri tek osı bettiñ bastawşısı boldı.',
basqa birew bul betti aldaqaşan öñdegen ne şegindirgen.
soñğı öñdemesin [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|talqılawı]]) istegen.',
-'editcomment' => "Bolğan öñdeme mändemesi: «''$1''».", # only shown if there is an edit comment
-'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|talqılawı]]) öñdemelerinen [[{{ns:user}}:$1|$1]] soñğı nusqasına qaýtardı', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Bolğan öñdeme mändemesi: «''$1''».",
+'revertpage' => '[[{{#special:Contributions}}/$2|$2]] ([[{{ns:user_talk}}:$2|talqılawı]]) öñdemelerinen [[{{ns:user}}:$1|$1]] soñğı nusqasına qaýtardı',
'rollback-success' => '$1 öñdemelerinen qaýtarğan;
$2 soñğı nusqasına özgertti.',
'sessionfailure' => 'Kirw sessïyasında şataq bolğan sïyaqtı;
@@ -1907,7 +1874,6 @@ Ağımdağı qorğaw ärektter bar better üşin [[{{#special:Protectedpages}}|q
'protectexpiry' => 'Merzimi bitpek:',
'protect_expiry_invalid' => 'Bitetin waqıtı jaramsız.',
'protect_expiry_old' => 'Bitetin waqıtı ötip ketken.',
-'protect-unchain' => 'Jıljıtw ruqsattarın berw',
'protect-text' => "'''<nowiki>$1</nowiki>''' betiniñ qorğaw deñgeýin qarap jäne özgertip şığa alasız.",
'protect-locked-blocked' => "Buğattawıñız öşirilgenşe deýin qorğaw deñgeýin özgerte almaýsız.
Mına '''$1''' bettiñ ağımdıq baptawları:",
@@ -1925,7 +1891,7 @@ Bul bettiñ qorğaw deñgeýin özgerte alasız, biraq bul bawlı qorğawğa ıq
'protect-expiring' => 'merzimi bitpek: $1 (UTC)',
'protect-cascade' => 'Bul bettiñ kirikbetterin qorğaw (bawlı qorğaw).',
'protect-cantedit' => 'Bul bettiñ qorğaw deñgeýin özgerte almaýsız, sebebi bunı öñdewge ruqstañız joq.',
-'protect-expiry-options' => '1 sağat:1 hour,1 kün:1 day,1 apta:1 week,2 apta:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 jıl:1 year,mängi:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 sağat:1 hour,1 kün:1 day,1 apta:1 week,2 apta:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 jıl:1 year,mängi:infinite',
'restriction-type' => 'Ruqsatı:',
'restriction-level' => 'Tïımdıq deñgeýi:',
'minimum-size' => 'Eñ az mölşeri',
@@ -2002,7 +1968,7 @@ $1',
'contributions' => 'Qatıswşı ülesi',
'mycontris' => 'Ülesim',
'contribsub2' => '$1 ($2) ülesi',
-'nocontribs' => 'Osı izdew şartına säýkes özgerister tabılğan joq.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Osı izdew şartına säýkes özgerister tabılğan joq.',
'uctop' => ' (üsti)',
'month' => 'Mına aýdan (jäne erterekten):',
'year' => 'Mına jıldan (jäne erterekten):',
@@ -2010,6 +1976,9 @@ $1',
'sp-contributions-newbies' => 'Tek jaña tirkelgiden jasağan ülesterdi körset',
'sp-contributions-newbies-sub' => 'Jañadan tirkelgi jasağandar üşin',
'sp-contributions-blocklog' => 'Buğattaw jwrnalı',
+'sp-contributions-deleted' => 'Qatıswşınıñ joýılğan ülesi',
+'sp-contributions-talk' => 'Talqılawı',
+'sp-contributions-userrights' => 'Qatıswşı quqıqtarın rettew',
'sp-contributions-search' => 'Üles üşin izdew',
'sp-contributions-username' => 'IP mekenjaýı ne qatıswşı atı:',
'sp-contributions-submit' => 'İzde',
@@ -2058,7 +2027,7 @@ Tömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılı
'ipbenableautoblock' => 'Bul qatıswşı soñğı qoldanğan IP mekenjaýın, jäne keýin öñdewge baýqap körgen är IP mekenjaýların özbuğattawı',
'ipbsubmit' => 'Qatıswşını buğatta',
'ipbother' => 'Basqa merzimi:',
-'ipboptions' => '2 sağat:2 hours,1 kün:1 day,3 kün:3 days,1 apta:1 week,2 apta:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 jıl:1 year,mängi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sağat:2 hours,1 kün:1 day,3 kün:3 days,1 apta:1 week,2 apta:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 jıl:1 year,mängi:infinite',
'ipbotheroption' => 'basqa',
'ipbotherreason' => 'Basqa/qosımşa sebep:',
'ipbhidename' => 'Qatıswşı atın buğattaw jwrnalınnan, belsendi buğattaw tiziminen, qatıswşı tiziminen jasırw',
@@ -2083,7 +2052,7 @@ Buğattardı şolıp şığw üşin [[{{#special:Ipblocklist}}|IP buğattaw tizi
'ipblocklist-submit' => 'İzde',
'blocklistline' => '$1, $2 $3 degendi buğattadı ($4)',
'infiniteblock' => 'mängi',
-'expiringblock' => 'merzimi bitpek: $1',
+'expiringblock' => 'merzimi bitpek: $1 $2',
'anononlyblock' => 'tek tirkelgisizderdi',
'noautoblockblock' => 'özbuğattaw öşirilgen',
'createaccountblock' => 'tirkelw buğattalğan',
@@ -2171,7 +2140,7 @@ Osı oraýda, qalawıñız bolsa, betti qoldan jıljıta ne qosa alasız.",
'move-watch' => 'Bul betti baqılaw',
'movepagebtn' => 'Betti jıljıt',
'pagemovedsub' => 'Jıljıtw sätti ayaqtaldı',
-'movepage-moved' => '\'\'\'"$1" beti "$2" betine jıljıtıldı\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" beti "$2" betine jıljıtıldı\'\'\'',
'articleexists' => 'Osılaý atalğan bet aldaqaşan bar, ne tañdağan atawıñız jaramdı emes.
Özge atawdı tañdañız',
'cantmove-titleprotected' => 'Betti osı orınğa jıljıta almaýsız, sebebi jaña taqırıp atı bastawdan qorğalğan',
@@ -2227,8 +2196,6 @@ Soñğı jağdaýda siltemeni de, mısalı «{{{{ns:mediawiki}}:Mainpage}}» bet
'allmessagestext' => 'Mında {{ns:mediawiki}} esim ayasında jetimdi jüýe xabar tizimi beriledi.
Eger ämbebap MediaWiki jersindirwge üles qosqıñız kelse [http://www.mediawiki.org/wiki/Localisation MediaWiki jersindirw betine] jäne [http://translatewiki.net translatewiki.net jobasına] barıp şığıñız.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' öşirilgen sebebinen '''{{ns:special}}:AllMessages''' beti qoldanılmaýdı.",
-'allmessagesfilter' => 'Xabardı atawımen süzgilew:',
-'allmessagesmodified' => 'Tek özgertilgendi körset',
# Thumbnails
'thumbnail-more' => 'Ülkeýtw',
@@ -2370,7 +2337,7 @@ Wïkï-aparw üşin sırttan alw barlıq äreketter [[{{#special:Log}}/import|s
# Attribution
'anonymous' => '{{SITENAME}} tirkelgisiz qatıswşı(ları)',
'siteuser' => '{{SITENAME}} qatıswşı $1',
-'lastmodifiedatby' => 'Bul betti $3 qatıswşı soñğı özgertken kezi: $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Bul betti $3 qatıswşı soñğı özgertken kezi: $2, $1.',
'othercontribs' => 'Şığarma negizin $1 jazğan.',
'others' => 'basqalar',
'siteusers' => '{{SITENAME}} qatıswşı(lar) $1',
@@ -2412,6 +2379,19 @@ Bunıñ sebebi şettik torap siltemesinen bolwı mümkin.',
'mw_math_modern' => 'Osı zamanğı şolğıştarına usınıladı',
'mw_math_mathml' => 'Eger ıqtïmal bolsa — MathML (sınaqtama)',
+# Math errors
+'math_failure' => 'Qurılımın taldatwı sätsiz bitti',
+'math_unknown_error' => 'belgisiz qate',
+'math_unknown_function' => 'belgisiz jete',
+'math_lexing_error' => 'söz keniniñ qatesi',
+'math_syntax_error' => 'söýlem jüýesiniñ qatesi',
+'math_image_error' => 'PNG awdarısı sätsiz bitti;
+latex, dvips, gs jäne convert bağdarlamalarınıñ durıs ornatwın tekserip şığıñız',
+'math_bad_tmpdir' => 'math degen waqıtşa qaltasına jazılmadı, ne qalta qurılmadı',
+'math_bad_output' => 'math degen beris qaltasına jazılmadı, ne qalta qurılmadı',
+'math_notexvc' => 'texvc atqarılmalısı tabılmadı;
+baptaw üşin math/README qujatın qarañız.',
+
# Patrolling
'markaspatrolleddiff' => 'Zertteldi dep belgilew',
'markaspatrolledtext' => 'Bul betti zertteldi dep belgile',
@@ -2493,7 +2473,7 @@ Basqaları ädepkiden jasırıladı.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Eni',
@@ -2620,14 +2600,14 @@ Basqaları ädepkiden jasırıladı.
'exif-unknowndate' => 'Belgisiz kün-aýı',
-'exif-orientation-1' => 'Qalıptı', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Dereleý şağılısqan', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° burışqa aýnalğan', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Tireleý şağılısqan', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Sağat tilşesine qarsı 90° burışqa aýnalğan jäne tireleý şağılısqan', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Sağat tilşe boýınşa 90° burışqa aýnalğan', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Sağat tilşe boýınşa 90° burışqa aýnalğan jäne tireleý şağılısqan', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Sağat tilşesine qarsı 90° burışqa aýnalğan', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Qalıptı',
+'exif-orientation-2' => 'Dereleý şağılısqan',
+'exif-orientation-3' => '180° burışqa aýnalğan',
+'exif-orientation-4' => 'Tireleý şağılısqan',
+'exif-orientation-5' => 'Sağat tilşesine qarsı 90° burışqa aýnalğan jäne tireleý şağılısqan',
+'exif-orientation-6' => 'Sağat tilşe boýınşa 90° burışqa aýnalğan',
+'exif-orientation-7' => 'Sağat tilşe boýınşa 90° burışqa aýnalğan jäne tireleý şağılısqan',
+'exif-orientation-8' => 'Sağat tilşesine qarsı 90° burışqa aýnalğan',
'exif-planarconfiguration-1' => 'talpaq pişim',
'exif-planarconfiguration-2' => 'taýpaq pişim',
@@ -2737,7 +2717,7 @@ Basqaları ädepkiden jasırıladı.
'exif-gpsmeasuremode-2' => '2-bağıttıq ölşem',
'exif-gpsmeasuremode-3' => '3-bağıttıq ölşem',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mil/h',
'exif-gpsspeed-n' => 'knot',
@@ -2935,7 +2915,7 @@ Tağı da [[{{#special:Watchlist}}/edit|qalıpalğan öñdewişti paýdalana]] a
'unknown_extension_tag' => 'Tanılmağan keñeýtpe belgisi «$1»',
# Special:Version
-'version' => 'Jüýe nusqası', # Not used as normal message but as header for the special page itself
+'version' => 'Jüýe nusqası',
'version-extensions' => 'Ornatılğan keñeýtimder',
'version-specialpages' => 'Arnaýı better',
'version-parserhooks' => 'Qurılımdıq taldatqıştıñ tuzaqtarı',
@@ -2949,7 +2929,7 @@ Tağı da [[{{#special:Watchlist}}/edit|qalıpalğan öñdewişti paýdalana]] a
'version-skin-extension-functions' => 'Mäner keñeýtimderiniñ jeteleri',
'version-hook-name' => 'Tuzaq atawı',
'version-hook-subscribedby' => 'Tuzaq tartqıştarı',
-'version-version' => 'Nusqası:',
+'version-version' => '(Nusqası: $1)',
'version-license' => 'Lïcenzïyası',
'version-software' => 'Ornatılğan bağdarlamalıq jasaqtama',
'version-software-product' => 'Önim',
diff --git a/languages/messages/MessagesKk_tr.php b/languages/messages/MessagesKk_tr.php
index dd44c0ad..41d530a3 100644
--- a/languages/messages/MessagesKk_tr.php
+++ b/languages/messages/MessagesKk_tr.php
@@ -1,6 +1,9 @@
<?php
/** Kazakh (Turkey) (‪Qazaqşa (Türkïya)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesKl.php b/languages/messages/MessagesKl.php
index 86f807ac..450b7f65 100644
--- a/languages/messages/MessagesKl.php
+++ b/languages/messages/MessagesKl.php
@@ -15,6 +15,45 @@
$fallback = 'da';
+$namespaceNames = array(
+ NS_SPECIAL => 'Immikkut',
+ NS_TALK => 'Oqallinneq',
+ NS_USER => 'Atuisoq',
+ NS_USER_TALK => 'Atuisup oqalliffia',
+ NS_PROJECT_TALK => '$1-p oqalliffia',
+ NS_FILE => 'Fiileq',
+ NS_FILE_TALK => 'Fiilip oqalliffia',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Mediawikip oqalliffia',
+ NS_TEMPLATE => 'Ilisserut',
+ NS_TEMPLATE_TALK => 'Ilisserummi oqallinneq',
+ NS_HELP => 'Ikiuutit',
+ NS_HELP_TALK => 'Ikiuutini oqallinneq',
+ NS_CATEGORY => 'Sumut atassuseq',
+ NS_CATEGORY_TALK => 'Sumut atassusermi oqallinneq',
+);
+
+$namespaceAliases = array(
+ 'Speciel' => NS_SPECIAL,
+ 'Diskussion' => NS_TALK,
+ 'Bruger' => NS_USER,
+ 'Brugerdiskussion' => NS_USER_TALK,
+ '$1-diskussion' => NS_PROJECT_TALK,
+ '$1ip oqalliffia' => NS_PROJECT_TALK,
+ 'Fil' => NS_FILE,
+ 'Fildiskussion' => NS_FILE_TALK,
+ 'Billede' => NS_FILE,
+ 'Billeddiskussion' => NS_FILE_TALK,
+ 'MediaWiki' => NS_MEDIAWIKI,
+ 'MediaWiki-diskussion' => NS_MEDIAWIKI_TALK,
+ 'Skabelon' => NS_TEMPLATE,
+ 'Skabelondiskussion' => NS_TEMPLATE_TALK,
+ 'Hjælp' => NS_HELP,
+ 'Hjælp-diskussion' => NS_HELP_TALK,
+ 'Kategori' => NS_CATEGORY,
+ 'Kategoridiskussion' => NS_CATEGORY_TALK
+);
+
$messages = array(
# Dates
'sunday' => 'Sapaat',
@@ -78,12 +117,17 @@ $messages = array(
'about' => 'Pillugu',
'newwindow' => '(nutaamut ammassaaq)',
'cancel' => 'Unitsiguk',
-'qbfind' => 'Naniuk',
-'qbedit' => 'Aaqqissoruk',
'moredotdotdot' => 'Suli...',
'mytalk' => 'Oqalliffikka',
'navigation' => 'Sumiissusersiuut',
+# Cologne Blue skin
+'qbfind' => 'Naniuk',
+'qbedit' => 'Aaqqissoruk',
+
+# Vector skin
+'vector-view-edit' => 'Aaqqissoruk',
+
'errorpagetitle' => 'Kukkuneq',
'returnto' => '$1 -mut uterit',
'tagline' => '{{SITENAME}}-meersoq',
@@ -113,7 +157,7 @@ $messages = array(
'toolbox' => 'Atortut',
'otherlanguages' => 'Oqaatsit allat',
'redirectedfrom' => '($1-mit nuunneq)',
-'lastmodifiedat' => 'Una qupperneq kingullermik allanngortinneqarsimavoq $1 $2', # $1 date, $2 time
+'lastmodifiedat' => 'Una qupperneq kingullermik allanngortinneqarsimavoq $1 $2',
'jumpto' => 'Uunngarit:',
'jumptonavigation' => 'sumiissusersiuut',
'jumptosearch' => 'ujarlerit',
@@ -185,7 +229,6 @@ $messages = array(
'createaccountmail' => 'e-mail-ikkut',
'badretype' => 'Isissutissat allanneqartut assigiinngillat.',
'userexists' => 'Atuisup atia atorneqareerpoq. Allamik qinersigit.',
-'yourlanguage' => 'Oqaatsit:',
'loginerror' => 'Iserniarnerlunneq',
'loginsuccesstitle' => 'Maanna isersimalerputit',
'loginsuccess' => 'Maanna {{SITENAME}} -mut isersimalerputit "$1" -itut taaguuserlutit.',
@@ -229,10 +272,17 @@ Taamatut oqaasilimmik quppernerni allani [[Special:Search/{{PAGENAME}}|ujaasisin
'yourtext' => 'Allatat',
'editingold' => "'''Mianersoqqussut: Qupperneq pisoqaanerusoq aaqqissuutilerpat.'''
Toqqorukku quppernerup taamaannera taarserneqassaaq.",
+'protectedpagewarning' => "'''Mianersoqqussut: Una qupperneq illersugaavoq, administratorit kisimik aaqqissorsinnaavaat.'''",
+'semiprotectedpagewarning' => "'''Malugiuk:''' Qupperneq parnaaqqavoq, atuisutut nalunaarsimasut kisimik allanngortitersinnaavaat.",
+'templatesused' => '{{PLURAL:$1|Ilisserut|Ilisserutit}} quppernermi atorneqartoq/tut:',
'permissionserrorstext-withaction' => 'Pisinnaatitaaffeqanngilatit $2 atussallugu, {{PLURAL:$1|peqqutigalugu|peqqutigalugit}}:',
+'moveddeleted-notice' => 'Una qupperneq peerneqarsimavoq.
+Peersinermut nuutsinermullu nalunaarsuutit ataani takuneqarsinnaapput.',
# History pages
'currentrev' => 'Maanna taamaannera',
+'currentrev-asof' => 'Maanna taamaannera $1-meersoq',
+'revisionasof' => 'Taamaannera $1-meersoq',
'previousrevision' => '← Pisoqaaneq',
'nextrevision' => 'Nutaaneq →',
'currentrevisionlink' => 'Massakkuunera takuuk',
@@ -253,10 +303,14 @@ Toqqorukku quppernerup taamaannera taarserneqassaaq.",
# Search results
'searchresults' => 'Ujaasinermi inernerit',
'searchresults-title' => 'Uuma ujarnera "$1"',
-'viewprevnext' => 'Takuuk ($1) ($2) ($3)',
+'prevn' => 'siulii {{PLURAL:$1|$1}}',
+'nextn' => 'tullii {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Takuuk ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Qupperneqarpoq \"[[:\$1]]\" -mik atilimmik maani wikimi'''",
'searchmenu-new' => "'''Qupperneq [[:$1]] pilersiguk maani wikimi'''",
'searchhelp-url' => 'Help:Ikiuutit',
+'searchprofile-articles' => 'Imarisai',
+'searchprofile-project' => 'Ikiuutit suliniutillu imaat',
'searchprofile-everything' => 'Tamarmik',
'searchprofile-advanced' => 'Ujaasiffik anneq',
'search-result-size' => '$1 ({{PLURAL:$2|oqaaseq|$2 oqaatsit}})',
@@ -264,7 +318,7 @@ Toqqorukku quppernerup taamaannera taarserneqassaaq.",
'search-suggest' => 'Una piviuk: $1',
'search-mwsuggest-enabled' => 'siunnersuuserlugu',
'search-mwsuggest-disabled' => 'siunnersuusernagu',
-'showingresultstotal' => "Ataani takutippai {{PLURAL:$4|inernera '''$1''' '''$3'''|inerneri '''$1 - $2''' '''$3'''}}-suni",
+'showingresultsheader' => "{{PLURAL:$5|Inernera '''$1''' '''$3'''|Inerneri '''$1 - $2''' '''$3'''}}-suni '''$4'''-mut",
'search-nonefound' => 'Ujaasineq inerneqanngilaq',
'powersearch' => 'Ujarlerit',
@@ -272,32 +326,42 @@ Toqqorukku quppernerup taamaannera taarserneqassaaq.",
'mypreferences' => 'Inissiffissat',
'prefs-rc' => 'Allannguutit kingulliit',
'saveprefs' => 'Toqqukkit',
+'yourlanguage' => 'Oqaatsit:',
# Groups
'group-sysop' => 'Administratorit',
# Recent changes
-'recentchanges' => 'Allannguutit kingulliit',
-'recentchanges-legend' => 'Inissisimaffiit allannguutini kingullerni',
-'recentchangestext' => "Uani quppernermi '''{{SITENAME}}'''-mi allannguutit kingulliit malinnaavigisinnaavatit.",
-'rclistfrom' => 'Allannguutit kingulliit takukkit $1 -nngaanniit',
-'rcshowhideminor' => '$1 allannguutit annikitsut',
-'rcshowhidebots' => '$1 robottit',
-'rcshowhideliu' => '$1 atuisut nalunaarsimasut',
-'rcshowhideanons' => '$1 atuisut anonymejusut',
-'rcshowhidepatr' => '$1 allannguutit misissorneqarsimasut',
-'rcshowhidemine' => '$1 nammineq tapit',
-'rclinks' => 'Takutikkit $1 -it allannguutit kingulliit ulluni kingullerni $2 -ni<br />$3',
-'diff' => 'assigiinng',
-'hist' => 'oqalutt',
-'hide' => 'Assequt',
-'show' => 'Saqqummiuk',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'b',
+'recentchanges' => 'Allannguutit kingulliit',
+'recentchanges-legend' => 'Inissisimaffiit allannguutini kingullerni',
+'recentchangestext' => "Uani quppernermi '''{{SITENAME}}'''-mi allannguutit kingulliit malinnaavigisinnaavatit.",
+'recentchanges-label-legend' => 'Nassuiaatit: $1.',
+'recentchanges-legend-newpage' => '$1 - qupperneq nutaaq',
+'recentchanges-label-newpage' => 'Tassaavoq qupperneq nutaaq',
+'recentchanges-legend-minor' => '$1 - allannguut annikitsoq',
+'recentchanges-label-minor' => 'Tassaavoq allannguut annikitsoq',
+'recentchanges-legend-bot' => '$1 - bot-ip allannguutaa',
+'recentchanges-label-bot' => 'Bot-ip allannguutaa',
+'rclistfrom' => 'Allannguutit kingulliit takukkit $1 -nngaanniit',
+'rcshowhideminor' => '$1 allannguutit annikitsut',
+'rcshowhidebots' => '$1 robottit',
+'rcshowhideliu' => '$1 atuisut nalunaarsimasut',
+'rcshowhideanons' => '$1 atuisut anonymejusut',
+'rcshowhidepatr' => '$1 allannguutit misissorneqarsimasut',
+'rcshowhidemine' => '$1 nammineq tapit',
+'rclinks' => 'Takutikkit $1 -it allannguutit kingulliit ulluni kingullerni $2 -ni<br />$3',
+'diff' => 'assigiinng',
+'hist' => 'oqalutt',
+'hide' => 'Assequt',
+'show' => 'Saqqummiuk',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Allannguutit naleqqiussat',
+'recentchangeslinked' => 'Allannguutit naleqqiussat',
+'recentchangeslinked-feed' => 'Allannguutit naleqqiussat',
+'recentchangeslinked-toolbox' => 'Allannguutit naleqqiussat',
# Upload
'upload' => 'Fiilimik ilisigit',
@@ -307,6 +371,7 @@ Toqqorukku quppernerup taamaannera taarserneqassaaq.",
'listfiles_user' => 'Atuisoq',
# File description page
+'file-anchor-link' => 'Assiliaq',
'filehist-datetime' => 'Ulloq/Piffissaq',
'filehist-user' => 'Atuisoq',
'imagelinks' => 'Innersuutit',
@@ -339,8 +404,11 @@ Toqqorukku quppernerup taamaannera taarserneqassaaq.",
'allpagessubmit' => 'Tassunngarit',
# Special:Categories
-'categories' => 'Sunut atassusit',
-'categoriesfrom' => 'Takuuk qanoq aallartiffianeersumiit:',
+'categories' => 'Sunut atassusit',
+'categoriespagetext' => 'Uku {{PLURAL:$1|sumut atassuseq|sunut atassusit}} imarivai quppernerit media-lluunniit.
+[[Special:UnusedCategories|Sunut atassusit]] atorneqanngitsut maani ilaanngillat.
+Aamma takuuk [[Special:WantedCategories|sunut atassusinut kissaatigineqartut]].',
+'categoriesfrom' => 'Takuuk qanoq aallartiffianeersumiit:',
# Special:LinkSearch
'linksearch-ok' => 'Ujaruk',
@@ -372,11 +440,11 @@ Qupperneq nakkutilliinermi allattorsimaffik kingusinnerusukkut piissagukku, taav
'deletedarticle' => 'peerpaa "[[$1]]"',
# Rollback
-'revertpage' => 'Inisseqqiineq [[User:$1|$1]]-meersoq, peerneqarpoq [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]])-meersoq', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'Inisseqqiineq [[User:$1|$1]]-meersoq, peerneqarpoq [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]])-meersoq',
# Protect
'prot_1movedto2' => '[[$1]]-i nuunneqarsimavoq [[$2]]-mut',
-'protect-expiry-options' => '1 tiimi:1 hour,ulloq 1:1 day,sap akunn 1:1 week,sap akunn 2:2 weeks,qaammat 1:1 month,qaammatit 3:3 months,qaammatit 6:6 months,ukioq 1:1 year,killeqanngitsoq:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 tiimi:1 hour,ulloq 1:1 day,sap akunn 1:1 week,sap akunn 2:2 weeks,qaammat 1:1 month,qaammatit 3:3 months,qaammatit 6:6 months,ukioq 1:1 year,killeqanngitsoq:infinite',
# Undelete
'undeletebtn' => 'Inisseqqiguk',
@@ -396,6 +464,7 @@ Qupperneq nakkutilliinermi allattorsimaffik kingusinnerusukkut piissagukku, taav
'year' => 'Ukioq:',
'sp-contributions-newbies' => 'Atuisut nutaaginnaat takukkit',
+'sp-contributions-talk' => 'oqallinneq',
'sp-contributions-search' => 'Tapiisunik ujaasineq',
'sp-contributions-username' => 'IP adresse imalt. atuisoq:',
'sp-contributions-submit' => 'Ujaruk',
@@ -409,9 +478,10 @@ Qupperneq nakkutilliinermi allattorsimaffik kingusinnerusukkut piissagukku, taav
'blockip' => 'Atuisoq asseruk',
'blockip-legend' => 'Atuisoq asseruk',
'ipadressorusername' => 'IP adresse imalt. atuisoq:',
-'ipboptions' => '2 tiimit:2 hours,ulloq 1:1 day,ullut 3:3 days,sap akunn 1:1 week,sap akunn 2:2 weeks,qaammat 1:1 month,qaammatit 3:3 months,qaammatit 6:6 months,ukioq 1:1 year,killeqanngitsoq:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 tiimit:2 hours,ulloq 1:1 day,ullut 3:3 days,sap akunn 1:1 week,sap akunn 2:2 weeks,qaammat 1:1 month,qaammatit 3:3 months,qaammatit 6:6 months,ukioq 1:1 year,killeqanngitsoq:infinite',
'blocklistline' => '$1, $2 asserpaa $3 ($4)',
'infiniteblock' => 'killeqanngitsoq',
+'expiringblock' => 'atorunnaassaaq $1 $2-nngoruni',
'blocklink' => 'assersoruk',
'contribslink' => 'tapikkat',
'blocklogentry' => 'asserpaa [[$1]] $2-mik sivissusilimmik $3',
@@ -421,46 +491,51 @@ Qupperneq nakkutilliinermi allattorsimaffik kingusinnerusukkut piissagukku, taav
'move-watch' => 'Qupperneq ersersimatiguk',
'movepagebtn' => 'Qupperneq nuuguk',
'pagemovedsub' => 'Nuunnera iluatsippoq',
-'movepage-moved' => 'Qupperneq \'\'\'"$1" uunga nuuppoq "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'Qupperneq \'\'\'"$1" uunga nuuppoq "$2"\'\'\'',
'1movedto2' => '[[$1]] nuuppaa [[$2]]-mut',
'1movedto2_redir' => '[[$1]] nuunneqarsimavoq [[$2]]-mut adresse-ia aqqutigalugu allanngortillugu',
+# Namespace 8 related
+'allmessages-language' => 'Oqaatsit:',
+'allmessages-filter-submit' => 'Takuuk',
+
# Thumbnails
'thumbnail-more' => 'Allisiguk',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Atuisutut quppernerit',
-'tooltip-pt-mytalk' => 'Oqalliffiit',
-'tooltip-pt-preferences' => 'Inissiinikka',
-'tooltip-pt-mycontris' => 'Tapikkatit',
-'tooltip-pt-login' => 'Iseqquneqaraluarputit, pitsaanerussagaluarpoq',
-'tooltip-pt-logout' => 'Aniffik',
-'tooltip-ca-talk' => 'Quppernerup imaanik oqallinneq',
-'tooltip-ca-edit' => 'Allanngortiterisinnaavutit. Isikkua takulaariuk',
-'tooltip-ca-history' => 'Quppernerup siulii',
-'tooltip-ca-move' => 'Qupperneq nuuguk',
-'tooltip-ca-watch' => 'Saqqumitiguk',
-'tooltip-search' => 'Ujaarlerit {{SITENAME}}',
-'tooltip-search-go' => 'Tassunngarit nassaassappat',
-'tooltip-search-fulltext' => 'Taanna ujaruk',
-'tooltip-n-mainpage' => 'Saqqaa iseruk',
-'tooltip-n-portal' => 'Suliaq, ilitsersuut, nassaassaasinnaasullu',
-'tooltip-n-currentevents' => 'Maannakkut pisut tunuliaqutai takukkit',
-'tooltip-n-recentchanges' => 'Wikimi allannguutit kingulliit',
-'tooltip-n-randompage' => 'Allaaserisamukarit',
-'tooltip-n-help' => 'Qanoq iliussaanga ...',
-'tooltip-t-whatlinkshere' => 'Innersuussami saqqummiussat',
-'tooltip-t-recentchangeslinked' => 'Massuma quppernerani allannguutit kingulliit',
-'tooltip-t-upload' => 'Assinik mediafiilinilluunniit ilisigit',
-'tooltip-t-specialpages' => 'Quppernerit immikkut ittut nassaassaasinnaasut',
-'tooltip-t-print' => 'Quppernerup naqikkuminarnera',
-'tooltip-t-permalink' => 'Massuma quppernerup taamaaqqaarnera',
-'tooltip-ca-nstab-main' => 'Imarisaa takuuk',
-'tooltip-save' => 'Allannguutitit toqqukkit',
-'tooltip-preview' => 'Isikkua takuuk, toqqortinnaguk atortaruk!',
+'tooltip-pt-userpage' => 'Atuisutut quppernerit',
+'tooltip-pt-mytalk' => 'Oqalliffiit',
+'tooltip-pt-preferences' => 'Inissiinikka',
+'tooltip-pt-mycontris' => 'Tapikkatit',
+'tooltip-pt-login' => 'Iseqquneqaraluarputit, pitsaanerussagaluarpoq',
+'tooltip-pt-logout' => 'Aniffik',
+'tooltip-ca-talk' => 'Quppernerup imaanik oqallinneq',
+'tooltip-ca-edit' => 'Allanngortiterisinnaavutit. Isikkua takulaariuk',
+'tooltip-ca-history' => 'Quppernerup siulii',
+'tooltip-ca-move' => 'Qupperneq nuuguk',
+'tooltip-ca-watch' => 'Saqqumitiguk',
+'tooltip-search' => 'Ujaarlerit {{SITENAME}}',
+'tooltip-search-go' => 'Tassunngarit nassaassappat',
+'tooltip-search-fulltext' => 'Taanna ujaruk',
+'tooltip-n-mainpage' => 'Saqqaa iseruk',
+'tooltip-n-mainpage-description' => 'Saqqaa iseruk',
+'tooltip-n-portal' => 'Suliaq, ilitsersuut, nassaassaasinnaasullu',
+'tooltip-n-currentevents' => 'Maannakkut pisut tunuliaqutai takukkit',
+'tooltip-n-recentchanges' => 'Wikimi allannguutit kingulliit',
+'tooltip-n-randompage' => 'Allaaserisamukarit',
+'tooltip-n-help' => 'Qanoq iliussaanga ...',
+'tooltip-t-whatlinkshere' => 'Innersuussami saqqummiussat',
+'tooltip-t-recentchangeslinked' => 'Massuma quppernerani allannguutit kingulliit',
+'tooltip-t-upload' => 'Assinik mediafiilinilluunniit ilisigit',
+'tooltip-t-specialpages' => 'Quppernerit immikkut ittut nassaassaasinnaasut',
+'tooltip-t-print' => 'Quppernerup naqikkuminarnera',
+'tooltip-t-permalink' => 'Massuma quppernerup taamaaqqaarnera',
+'tooltip-ca-nstab-main' => 'Imarisaa takuuk',
+'tooltip-save' => 'Allannguutitit toqqukkit',
+'tooltip-preview' => 'Isikkua takuuk, toqqortinnaguk atortaruk!',
# Attribution
-'lastmodifiedatby' => 'Una qupperneq kingullermik allanngortinneqarsimavoq $2, $1 $3-mit.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Una qupperneq kingullermik allanngortinneqarsimavoq $2, $1 $3-mit.',
# Patrol log
'patrol-log-line' => 'nalunaaqqutserpaa $1 $2 misissorneqarsimasutut $3',
diff --git a/languages/messages/MessagesKm.php b/languages/messages/MessagesKm.php
index 39a275cd..e531d1fc 100644
--- a/languages/messages/MessagesKm.php
+++ b/languages/messages/MessagesKm.php
@@ -175,6 +175,8 @@ $specialPageAliases = array(
'Blankpage' => array( 'ទំព័រទទេ' ),
'LinkSearch' => array( 'ស្វែងរកតំណភ្ជាប់' ),
'DeletedContributions' => array( 'ការរួមចំណែកដែលត្រូវបានលុបចោល' ),
+ 'Tags' => array( 'ប្លាក' ),
+ 'Activeusers' => array( 'អ្នកប្រើប្រាស់សកម្ម' ),
);
$magicWords = array(
@@ -185,7 +187,7 @@ $magicWords = array(
'toc' => array( '0', '__មាតិកា__', '__បញ្ជីអត្ថបទ__', '__TOC__' ),
'noeditsection' => array( '0', '__ផ្នែកមិនត្រូវកែប្រែ__', '__មិនមានផ្នែកកែប្រែ__', '__លាក់ផ្នែកកែប្រែ__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__លាក់បឋមកថា__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'ខែនេះ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ខែនេះ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ឈ្មោះខែនេះ', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'ថ្ងៃនេះ', 'CURRENTDAY' ),
'currentdayname' => array( '1', 'ឈ្មោះថ្ងៃនេះ', 'CURRENTDAYNAME' ),
@@ -281,6 +283,7 @@ $messages = array(
'tog-enotifminoredits' => 'ផ្ញើអ៊ីមែល​មកខ្ញុំ​ផងដែរ​ចំពោះ​បំលាស់ប្ដូរតិចតួច​ផងដែរ',
'tog-enotifrevealaddr' => 'បង្ហាញ​អាសយដ្ឋានអ៊ីមែល​របស់ខ្ញុំ​ក្នុង​​មែល​ក្រើនរំលឹក​នានា',
'tog-shownumberswatching' => 'បង្ហាញ​ចំនួនអ្នកប្រើប្រាស់​ដែលតាមដាន​ទំព័រនេះ',
+'tog-oldsig' => 'ការមើលមុននៃហត្ថលេខាដែលមាន៖',
'tog-fancysig' => 'ចុះហត្ថលេខា​ជា​អត្ថបទវិគី​ (ដោយ​គ្មានតំណភ្ជាប់​ស្វ័យប្រវត្តិ)',
'tog-externaleditor' => 'ប្រើប្រាស់​ឧបករណ៍​កែប្រែខាងក្រៅ​តាមលំនាំដើម (សម្រាប់តែអ្នកមានជំនាញប៉ុណ្ណោះនិងត្រូវការការកំណត់ពិសេសៗនៅលើកុំព្យូទ័ររបស់អ្នក)',
'tog-externaldiff' => 'ប្រើប្រាស់​ឧបករណ៍​ប្រៀបធៀបខាងក្រៅ​តាមលំនាំដើម (សម្រាប់តែអ្នកមានជំនាញប៉ុណ្ណោះនិងត្រូវការការកំណត់ពិសេសៗនៅលើកុំព្យូទ័ររបស់អ្នក)',
@@ -302,6 +305,13 @@ $messages = array(
'underline-never' => 'កុំអោយសោះ',
'underline-default' => 'តាមលំនាំដើមនៃ​កម្មវិធី​រុករក​',
+# Font style option in Special:Preferences
+'editfont-style' => 'កែសម្រួល​រចនាបទ​ពុម្ព​អក្សរ​សម្រាប់​តំបន់​',
+'editfont-default' => 'លំនាំដើមនៃ​កម្មវិធី​រុករក​',
+'editfont-monospace' => 'ពុម្ព​អក្សរ​ដែល​ដក​ឃ្លា​តែមួយ​',
+'editfont-sansserif' => 'ពុម្ពអក្សរ​​គ្មាន serif (Sans-serif font)',
+'editfont-serif' => 'ពុម្ពអក្សរ​​ serif (Serif font)',
+
# Dates
'sunday' => 'ថ្ងៃអាទិត្យ',
'monday' => 'ថ្ងៃច័ន្ទ',
@@ -361,7 +371,7 @@ $messages = array(
'category-media-header' => 'ឯកសារមេឌា​ដែលមានក្នុង​ចំណាត់ថ្នាក់ក្រុម "$1"',
'category-empty' => "''ចំណាត់ថ្នាក់ក្រុមនេះ​មិនមានផ្ទុកអត្ថបទឬ​ឯកសារមេឌា​ណាមួយទេ។''",
'hidden-categories' => '{{PLURAL:|ចំណាត់ថ្នាក់ក្រុមមួយដែលត្រូវបានលាក់|ចំណាត់ថ្នាក់ក្រុមចំនួន$1ដែលត្រូវបានលាក់}}',
-'hidden-category-category' => 'ចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'ចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់',
'category-subcat-count' => '{{PLURAL:$2|ចំណាត់ថ្នាក់ក្រុមនេះមានតែចំណាត់ថ្នាក់ក្រុមរងមួយដូចខាងក្រោមទេ។|ចំណាត់ថ្នាក់ក្រុមនេះមាន{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុមរងមួយ|ចំណាត់ថ្នាក់ក្រុមរងចំនួន$1}}ដូចខាងក្រោម ក្នុងចំណោមចំណាត់ថ្នាក់ក្រុមរងសរុបចំនួន$2។}}',
'category-subcat-count-limited' => 'ចំណាត់ថ្នាក់ក្រុមនេះមាន {{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុមរងមួយ|ចំណាត់ថ្នាក់ក្រុមរងចំនួន$1}}ដូចខាងក្រោម។',
'category-article-count' => '{{PLURAL:$2|ចំណាត់ថ្នាក់ក្រុមនេះមានទំព័រមួយដូចខាងក្រោម។|{{PLURAL:$1|ទំព័រមួយ|ទំព័រចំនួន$1}}ក្នុងចំណោមទំព័រសរុប $2 ដូចខាងក្រោមស្ថិតក្នុងចំណាត់ថ្នាក់ក្រុមនេះ។}}',
@@ -379,10 +389,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/km សំណួរញឹកញាប់​មេឌាវិគី]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce បញ្ជី​ពិភាក្សា​ការផ្សព្វផ្សាយ​របស់​មេឌាវិគី]',
-'about' => 'អំពី',
-'article' => 'មាតិកាអត្ថបទ',
-'newwindow' => '(បើក​លើ​បង្អួច​ថ្មី)',
-'cancel' => 'បោះបង់',
+'about' => 'អំពី',
+'article' => 'មាតិកាអត្ថបទ',
+'newwindow' => '(បើក​លើ​បង្អួច​ថ្មី)',
+'cancel' => 'បោះបង់',
+'moredotdotdot' => 'បន្ថែមទៀត...',
+'mypage' => 'ទំព័រ​ខ្ញុំ',
+'mytalk' => 'ការពិភាក្សា​',
+'anontalk' => 'ទំព័រពិភាក្សាសំរាប់ IP នេះ',
+'navigation' => 'នាំទិស',
+'and' => '&#32;និង',
+
+# Cologne Blue skin
'qbfind' => 'ស្វែងរក',
'qbbrowse' => 'រាវរក',
'qbedit' => 'កែប្រែ',
@@ -390,15 +408,35 @@ $messages = array(
'qbpageinfo' => 'ព័ត៌មានទំព័រ',
'qbmyoptions' => 'ទំព័ររបស់ខ្ញុំ',
'qbspecialpages' => 'ទំព័រពិសេសៗ',
-'moredotdotdot' => 'បន្ថែមទៀត...',
-'mypage' => 'ទំព័រ​ខ្ញុំ',
-'mytalk' => 'ការពិភាក្សា​',
-'anontalk' => 'ទំព័រពិភាក្សាសំរាប់ IP នេះ',
-'navigation' => 'នាំទិស',
-'and' => '&#32;និង',
-
-# Metadata in edit box
-'metadata_help' => 'ទិន្នន័យមេតា៖',
+'faq' => 'សំណួរដែលសួរញឹកញាប់',
+'faqpage' => 'Project:សំណួរដែលសួរញឹកញាប់',
+
+# Vector skin
+'vector-action-addsection' => 'បន្ថែម​ប្រធានបទ​',
+'vector-action-delete' => 'លុបចោល',
+'vector-action-move' => 'ប្តូរទីតាំង',
+'vector-action-protect' => 'ការពារ',
+'vector-action-undelete' => 'ឈប់លុបចេញ',
+'vector-action-unprotect' => 'ឈប់ការពារ',
+'vector-namespace-category' => 'ចំណាត់ថ្នាក់ក្រុម',
+'vector-namespace-help' => 'ទំព័រជំនួយ',
+'vector-namespace-image' => 'ឯកសារ',
+'vector-namespace-main' => 'ទំព័រ',
+'vector-namespace-media' => 'ទំព័រមេឌា',
+'vector-namespace-mediawiki' => 'សារ',
+'vector-namespace-project' => 'ទំព័រគម្រោង',
+'vector-namespace-special' => 'ទំព័រពិសេស',
+'vector-namespace-talk' => 'ការពិភាក្សា',
+'vector-namespace-template' => 'គំរូ​',
+'vector-namespace-user' => 'ទំព័រ​អ្នកប្រើប្រាស់​',
+'vector-view-create' => 'បង្កើត​',
+'vector-view-edit' => 'កែប្រែ​',
+'vector-view-history' => 'មើល​ប្រវត្តិ​',
+'vector-view-view' => 'អាន',
+'vector-view-viewsource' => 'មើល​កូដ',
+'actions' => 'សកម្មភាព​',
+'namespaces' => 'ប្រភេទ',
+'variants' => 'អថេរ',
'errorpagetitle' => 'មានបញ្ហា',
'returnto' => 'ត្រឡប់ទៅ $1 វិញ ។',
@@ -448,18 +486,24 @@ $messages = array(
'otherlanguages' => 'ជាភាសាដទៃទៀត',
'redirectedfrom' => '(ត្រូវបានបញ្ជូនបន្តពី $1)',
'redirectpagesub' => 'ទំព័របញ្ជូនបន្ត',
-'lastmodifiedat' => 'ទំព័រនេះត្រូវបានកែចុងក្រោយនៅ$2 $1', # $1 date, $2 time
+'lastmodifiedat' => 'ទំព័រនេះត្រូវបានកែចុងក្រោយនៅ$2 $1',
'viewcount' => "ទំព័រនេះ​ត្រូវបានចូលមើល​ចំនួន'''{{PLURAL:$1|ម្ដង|$1ដង}}'''",
'protectedpage' => 'ទំព័រដែលត្រូវបានការពារ',
'jumpto' => 'លោតទៅ៖',
'jumptonavigation' => 'នាំទិស',
'jumptosearch' => 'ស្វែងរក',
+'view-pool-error' => 'សូមអភ័យទោស។ ប្រព័ន្ធបំរើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។
+
+មានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។
+
+សូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'អំពី{{SITENAME}}',
'aboutpage' => 'Project:អំពី',
'copyright' => 'រក្សាសិទ្ធិគ្រប់យ៉ាងដោយ$1។',
-'copyrightpagename' => 'រក្សាសិទ្ធិដោយ{{SITENAME}}',
'copyrightpage' => '{{ns:project}}:រក្សាសិទ្ធិ​',
'currentevents' => 'ព្រឹត្តិការណ៍​ថ្មីៗ',
'currentevents-url' => 'Project:ព្រឹត្តិការណ៍​ថ្មីៗ',
@@ -467,8 +511,6 @@ $messages = array(
'disclaimerpage' => 'Project:ការបដិសេធ​ទូទៅ',
'edithelp' => 'ជំនួយ​ក្នុងការកែប្រែ',
'edithelppage' => 'Help:របៀបកែប្រែ',
-'faq' => 'សំណួរដែលសួរញឹកញាប់',
-'faqpage' => 'Project:សំណួរដែលសួរញឹកញាប់',
'helppage' => 'Help:មាតិកា',
'mainpage' => 'ទំព័រដើម',
'mainpage-description' => 'ទំព័រដើម',
@@ -540,10 +582,6 @@ $messages = array(
# General errors
'error' => 'មានបញ្ហា',
'databaseerror' => 'មូលដ្ឋានទិន្នន័យមានបញ្ហា',
-'noconnect' => 'សូមអភ័យទោស! វិគី​នេះកំពុង​មានបញ្ហាបច្ចេកទេសខ្លះៗ ហេតុនេះ​វាមិនអាច​ទាក់ទងទៅ​មូលដ្ឋានទិន្នន័យ​នាពេលនេះទេ។ <br />
-$1',
-'nodb' => 'មិនអាចជ្រើសយក​មូលដ្ឋានទិន្នន័យ $1',
-'cachederror' => 'ទំព័រនេះគឺជាកំណែប្រែមួយដែលឋិតនៅក្នុងការលាក់ទុក ហើយមិនអាចធ្វើឱ្យទាន់សម័យបានទេ។',
'laggedslavemode' => "'''ប្រយ័ត្ន៖''' ទំព័រនេះ​មិនអាចទុក​បំលាស់ប្ដូរ​ថ្មីៗទេ។",
'readonly' => 'មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោ',
'enterlockreason' => 'សូមផ្ដល់ហេតុផលសម្រាប់ការជាប់សោ ព្រមទាំងកាលបរិច្ឆេទដោះសោវិញ',
@@ -560,6 +598,7 @@ $1',
'readonly_lag' => 'មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោដោយស្វ័យប្រវត្តិ ខណៈពេលដែលម៉ាស៊ីនបម្រើ(server)មូលដ្ឋានទិន្នន័យរង​កំពុង​ទាក់ទង​ទៅម៉ាស៊ីនបម្រើ​មូលដ្ឋានទិន្នន័យមេ',
'internalerror' => 'បញ្ហាផ្នែកខាងក្នុង',
'internalerror_info' => 'បញ្ហាផ្នែកខាងក្នុង៖ $1',
+'fileappenderror' => 'មិនអាចបន្ថែម "$1" ទៅខាងចុង "$2" បានទេ។',
'filecopyerror' => 'មិនអាចចម្លងឯកសារ"$1" ទៅ "$2"បានទេ។',
'filerenameerror' => 'មិនអាចប្តូរឈ្មោះឯកសារពី"$1" ទៅ "$2"បានទេ។',
'filedeleteerror' => 'មិនអាចលុបឯកសារ"$1"បានទេ។',
@@ -569,9 +608,9 @@ $1',
'unexpected' => 'តម្លៃ​មិនបានរំពឹងទុក៖ "$1"="$2"។',
'formerror' => 'បញ្ហា៖ មិនអាចដាក់ស្នើ​សំណុំបែបបទ',
'badarticleerror' => 'សកម្មភាពនេះ​មិនអាចអនុវត្ត​លើទំព័រនេះទេ។',
-'cannotdelete' => 'មិនអាច​លុបចោល ទំព័រ ឬ ឯកសារ ដែលបានប្រាប់ទេ។
+'cannotdelete' => 'មិនអាច​លុបចោលទំព័រឬឯកសារដែលមានឈ្មោះ "$1"បានទេ។
-ប្រហែល​នរណាម្នាក់ផ្សេងទៀតលុបវាចោលហើយ។',
+វាប្រហែលជាត្រូវបាន​នរណាម្នាក់ផ្សេងទៀតលុបចោលហើយ។',
'badtitle' => 'ចំណងជើង​មិនល្អ',
'badtitletext' => 'ចំណងជើងទំព័រដែលបានស្នើ គ្មានសុពលភាព, ទទេ, ឬ ចំណងជើងតំណភ្ជាប់អន្តរភាសាឬអន្តរវិគី មិនត្រឹមត្រូវ ។ ប្រហែលជាមានតួអក្សរមួយឬច្រើន ដែលជាតួអក្សរហាមប្រើ​ក្នុង​ចំណងជើង។',
'perfcached' => 'ទិន្នន័យទាំងនេះត្រូវបានដាក់ទៅសតិភ្ជាប់និងប្រហែលជាមិនទាន់សម័យ ។',
@@ -607,7 +646,6 @@ $2',
'virus-unknownscanner' => 'កម្មវិធីប្រឆាំងមេរោគមិនស្គាល់៖',
# Login and logout pages
-'logouttitle' => 'ការកត់ឈ្មោះចេញរបស់អ្នកប្រើប្រាស់',
'logouttext' => "'''ឥឡូវនេះលោកអ្នកបានកត់ឈ្មោះចេញពីគណនីរបស់លោកអ្នកហើយ។'''
អ្នកអាចបន្តប្រើប្រាស់{{SITENAME}}ក្នុងភាពអនាមិក ឬ [[Special:UserLogin|កត់ឈ្មោះចូលម្ដងទៀត]]ក្នុងនាមជាអ្នកប្រើប្រាស់ដដែលឬផ្សេងទៀត។
@@ -617,7 +655,6 @@ $2',
គណនីរបស់អ្នកត្រូវបានបង្កើតហើយ។
កុំភ្លេចផ្លាស់ប្ដូរ[[Special:Preferences|ចំណង់ចំណូលចិត្ត{{SITENAME}}]]របស់អ្នក។',
-'loginpagetitle' => 'ការកត់ឈ្មោះចូលរបស់អ្នកប្រើប្រាស់',
'yourname' => 'ឈ្មោះអ្នកប្រើ៖',
'yourpassword' => 'ពាក្យសំងាត់៖',
'yourpasswordagain' => 'វាយពាក្យសំងាត់ម្តងទៀត៖',
@@ -629,6 +666,7 @@ $2',
'nav-login-createaccount' => 'កត់ឈ្មោះចូលឬបង្កើតគណនី',
'loginprompt' => 'អ្នក​ត្រូវតែ​មាន​ខូគី ដើម្បី​អាច​កត់ឈ្មោះចូល​{{SITENAME}}។',
'userlogin' => 'កត់ឈ្មោះចូលឬបង្កើតគណនី',
+'userloginnocreate' => 'កត់ឈ្មោះចូល',
'logout' => 'កត់ឈ្មោះចេញ',
'userlogout' => 'កត់ឈ្មោះចេញ',
'notloggedin' => 'មិនទាន់កត់ឈ្មោះចូល',
@@ -641,30 +679,8 @@ $2',
'badretype' => 'ពាក្យសំងាត់ដែលអ្នកបានបញ្ចូលនោះ គឺមិនស៊ីគ្នាទេ។',
'userexists' => 'ឈ្មោះអ្នកប្រើដែលអ្នកបានវាយបញ្ចូលមានគេប្រើហើយ។
សូមជ្រើសរើសឈ្មោះផ្សេងពីនេះ។',
-'youremail' => 'អ៊ីមែល៖',
-'username' => 'ឈ្មោះអ្នកប្រើ៖',
-'uid' => 'អត្តលេខ៖',
-'prefs-memberingroups' => 'សមាជិកក្នុង{{PLURAL:$1|ក្រុម|ក្រុម}}៖',
-'yourrealname' => 'ឈ្មោះពិត៖',
-'yourlanguage' => 'ភាសា៖',
-'yourvariant' => 'អថេរ​៖',
-'yournick' => 'ហត្ថលេខា៖',
-'badsig' => 'ហត្ថលេខាឆៅមិនត្រឹមត្រូវ។សូមពិនិត្យមើលស្លាក​ HTML ។',
-'badsiglength' => 'ហត្ថលេខារបស់អ្នកវែងជ្រុល។
-
-វាត្រូវតែមានតួអក្សរតិចជាង $1 {{PLURAL:$1|តួ|តួ}}។',
-'yourgender' => 'ភេទ៖',
-'gender-unknown' => 'មិនបញ្ជាក់',
-'gender-male' => 'ប្រុស',
-'gender-female' => 'ស្រី',
-'prefs-help-gender' => 'ដាក់ក៏បានមិនដាក់ក៏បាន៖ ប្រើសំរាប់អោយសូហ្វវែរហៅតាមភេទអោយបាមត្រឹមត្រូវ។ ព័ត៌មាននេះនឹងត្រូវបង្ហាញជាសាធារណៈ។',
-'email' => 'អ៊ីមែល',
-'prefs-help-realname' => 'អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។',
'loginerror' => 'កំហុសនៃការកត់ឈ្មោះចូល',
-'prefs-help-email' => 'អ្នកអាចផ្ដល់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ ប៉ុន្ដែអាសយដ្ឋានអ៊ីមែលដែលផ្ដល់អោយនឹងមានប្រយោជន៍ក្នុងការប្ដូរពាក្យសំងាត់ ពេលដែលអ្នកភ្លេចវា។
-
-អ្នកក៏អាចជ្រើសរើស​ការផ្ដល់លទ្ឋភាព​​ឱ្យអ្នកដទៃទាក់ទងអ្នក​តាមរយៈ​​ទំព័រអ្នកប្រើប្រាស់​​ឬទំព័រពិភាក្សារបស់អ្នក​​ដោយមិនចាំបាច់ឱ្យគេដឹងពីអត្តសញ្ញាណរបស់អ្នកផងដែរ។',
-'prefs-help-email-required' => 'អាសយដ្ឋានអ៊ីមែលត្រូវការជាចាំបាច់។',
+'createaccounterror' => 'មិនអាចបង្កើតគណនីបានទេ៖ $1',
'nocookiesnew' => 'គណនីប្រើប្រាស់របស់អ្នកត្រូវបានបង្កើតហើយ ក៏ប៉ុន្តែអ្នកមិនទាន់បានកត់ឈ្មោះចូលទេ។
{{SITENAME}}ប្រើប្រាស់ខូឃី ដើម្បីកត់ឈ្មោះចូល។
@@ -687,15 +703,15 @@ $2',
សូម​ពិនិត្យ​​អក្ខរាវិរុទ្ធ​របស់អ្នក ។',
'nouserspecified' => 'អ្នកត្រូវតែ​ផ្ដល់ឈ្មោះ​អ្នកប្រើ។',
+'login-userblocked' => 'អ្នកប្រើប្រាស់នេះត្រូវបានរាំងខ្ទប់ហើយ។ មិនអនុញ្ញាតអោយកត់ឈ្មោះចូលទេ។',
'wrongpassword' => 'ពាក្យសំងាត់​ដែលបានបញ្ចូល​មិនត្រឹមត្រូវទេ។
សូមព្យាយាម​ម្តងទៀត។',
'wrongpasswordempty' => 'ពាក្យសំងាត់មិនបានបញ្ចូលទេ។
សូមព្យាយាម​ម្តងទៀត។',
-'passwordtooshort' => 'ពាក្យសំងាត់របស់អ្នក មិនមានសុពលភាព ឬ​ ខ្លីពេក។
-
-ពាក្យសំងាត់ត្រូវមានតួអក្សរយ៉ាងតិច $1 {{PLURAL:$1|មួយតួ|$1តួ}} និង ត្រូវផ្សេងពីឈ្មោះអ្នកប្រើរបស់អ្នក។',
+'passwordtooshort' => 'ពាក្យសម្ងាត់​ត្រូវ​មាន​យ៉ាងតិចណាស់​ {{PLURAL:$1|1 តួអក្សរ}}។',
+'password-name-match' => 'ពាក្យសំងាត់ត្រូវតែខុសគ្នាពីឈ្មោះរបស់អ្នក។',
'mailmypassword' => 'ផ្ញើអ៊ីមែលពាក្យសំងាត់ថ្មី',
'passwordremindertitle' => 'ពាក្យសំងាត់បណ្តោះអាសន្នថ្មីសម្រាប់{{SITENAME}}',
'passwordremindertext' => 'មានអ្នកណាម្នាក់ (ប្រហែលជាអ្នក, ពីអាសយដ្ឋាន IP $1) បានស្នើសុំពាក្យសំងាត់ថ្មីមួយពី {{SITENAME}} ($4)។
@@ -704,6 +720,7 @@ $2',
ក្នុងករណីមានអ្នកណាផ្សេងធ្វើការស្នើសុំនេះ ឬ អ្នកនឹកឃើញពាក្យសំងាត់ចាស់របស់អ្នកវិញ ហើយមិនចង់ផ្លាស់ប្តូរពាក្យសំងាត់ទេនោះ សូមអ្នកអាចបំភ្លេចពីសារនេះ ហើយបន្តប្រើប្រាស់ពាក្យសំងាត់ចាស់របស់អ្នកបន្តទៀត។',
'noemail' => 'គ្មានអាសយដ្ឋានអ៊ីមែលណាមួយត្រូវបានកត់ត្រាទុកសម្រាប់អ្នកប្រើឈ្មោះ "$1" ទេ។',
+'noemailcreate' => 'អ្នកត្រូវតែផ្ដល់អាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវមួយ',
'passwordsent' => 'ពាក្យសំងាត់​ថ្មី​ត្រូវ​បាន​ផ្ញើទៅ​អាសយដ្ឋាន​អ៊ីមែល​ដែល​បាន​ចុះបញ្ជី​សម្រាប់អ្នកប្រើឈ្មោះ "$1" ។
សូម​កត់ឈ្មោះចូល​ម្តងទៀត​បន្ទាប់ពី​អ្នក​បាន​ទទួល​ពាក្យសំងាត់ថ្មីនោះ។',
@@ -752,20 +769,14 @@ $2',
'retypenew' => 'សូមវាយពាក្យសំងាត់ថ្មី​ម្តងទៀត៖',
'resetpass_submit' => 'ដាក់ពាក្យសំងាត់និង​កត់ឈ្មោះចូល',
'resetpass_success' => 'ពាក្យសំងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរបានសំរេចហើយ! ឥឡូវនេះកំពុងកត់ឈ្មោះចូល...',
-'resetpass_bad_temporary' => 'ពាក្យសំងាត់បណ្តោះអាសន្នមិនត្រឹមត្រូវទេ។
-
-ប្រហែលជាអ្នកបានផ្លាស់ប្តូរពាក្យសំងាត់របស់អ្នករួចហើយ ឬបានស្នើពាក្យសំងាត់បណ្តោះអាសន្នថ្មីមួយហើយ។',
'resetpass_forbidden' => 'ពាក្យសំងាត់មិនអាចផ្លាស់ប្តូរបានទេ',
'resetpass-no-info' => 'អ្នក​ចាំបាច់​ត្រូវតែ​កត់ឈ្មោះចូល ដើម្បី​ចូលទៅកាន់​ទំព័រ​នេះ​ដោយផ្ទាល់​។',
'resetpass-submit-loggedin' => 'ប្តូរពាក្យសំងាត់',
+'resetpass-submit-cancel' => 'បោះបង់',
'resetpass-wrong-oldpass' => 'លេខ​សម្ងាត់​បណ្ដោះ​អាសន្ន​ ឬ​បច្ចុប្បន្នមិន​មាន​សុពលភាព​។
អ្នក​​ប្រហែល​ជា​បាន​ផ្លាស់​ប្ដូរ​លេខ​សម្ងាត់​រួចហើត​ ឬ​បានស្នើ​សុំ​លេខ​សម្ងាត់​​បណ្ដោះ​អាសន្ន​​ថ្មី​មួយ​ហើយ។',
'resetpass-temp-password' => 'ពាក្យសំងាត់បណ្តោះអាសន្ន:',
-'resetpass-log' => 'កំណត់ហេតុ​នៃ​ការ​កំណត់​ពាក្យសម្ងាត់​ឡើងវិញ',
-'resetpass-logtext' => 'ខាងក្រោមនេះជាកំណត់ត្រាឈ្មោះអ្នកប្រើប្រាស់​ដែលបានអោយអ្នកអភិបាលប្ដូរពាក្យសំងាត់របស់ពួកគេទៅពាក្យសំងាត់ដើមវិញ។',
-'resetpass-logentry' => 'ប្ដូរ​ពាក្យសម្ងាត់​សម្រាប់ $1',
-'resetpass-comment' => 'មូលហេតុក្នុងការប្ដូរទៅប្រើពាក្យសំងាត់ដើមវិញ៖',
# Edit page toolbar
'bold_sample' => 'អក្សរដិត',
@@ -849,7 +860,6 @@ $2',
'blockededitsource' => "ខ្លឹមសារ​នៃ '''កំណែប្រែ​របស់អ្នក''' លើទំព័រ '''$1''' ត្រូវបាន​បង្ហាញ​ខាងក្រោម ៖",
'whitelistedittitle' => 'តម្រូវអោយកត់ឈ្មោះចូលដើម្បីកែប្រែ',
'whitelistedittext' => 'អ្នកត្រូវតែ $1 ដើម្បី​កែប្រែ​ខ្លឹមសារទំព័រ។',
-'confirmedittitle' => 'តម្រូវអោយផ្ទៀងផ្ទាត់​បញ្ជាក់​អ៊ីមែល ដើម្បីកែប្រែ',
'confirmedittext' => 'អ្នកត្រូវតែផ្ទៀងផ្ទាត់បញ្ជាក់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកមុននឹងកែប្រែខ្លឹមសារអត្ថបទ។
សូមកំណត់និងផ្តល់សុពលភាពឱ្យអាសយដ្ឋានអ៊ីមែលរបស់អ្នកតាម [[Special:Preferences|ចំណង់ចំណូលចិត្ត]] របស់អ្នក។',
@@ -874,15 +884,20 @@ $2',
'noarticletext' => 'បច្ចុប្បន្នគ្មានអត្ថបទក្នុងទំព័រនេះទេ។
អ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំព័រនេះ]]ក្នុងទំព័រដទៃទៀត​​ ឬ [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណត់​ហេតុ​ដែល​ពាក់ព័ន្ធ] ឬ [{{fullurl:{{FULLPAGENAME}}|action=edit}} កែប្រែ​ទំព័រនេះ]។',
+'noarticletext-nopermission' => 'បច្ចុប្បន្ន គ្មានអត្ថបទណាមួយក្នុងទំព័រនេះទេ។
+
+អ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំព័រនេះ]] ក្នុងទំព័រ​ផ្សេងៗ ឬ<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណត់​ហេតុ​ដែល​ពាក់ព័ន្ធ]</span>។',
'userpage-userdoesnotexist' => 'គណនីអ្នកប្រើឈ្មោះ"$1" មិនទាន់បានចុះបញ្ជី។
ចូរគិតម្ដងទៀតថាអ្នកចង់ បង្កើត / កែប្រែ ទំព័រនេះឬទេ។',
+'userpage-userdoesnotexist-view' => 'គណនីអ្នកប្រើប្រាស់ដែលមានឈ្មោះ "$1"មិនទាន់បានចុះឈ្មោះទេ។',
'clearyourcache' => "'''សម្គាល់:''' បន្ទាប់ពីបានរក្សាទុករួចហើយ លោកអ្នកគួរតែសំអាត browser's cache របស់លោកអ្នកដើម្បីមើលការផ្លាស់ប្តូរ។ ខាងក្រោមនេះជាវិធីសំអាត browser's cache ចំពោះកម្មវិធីរុករក(Browser)មួយចំនួន។
* '''Mozilla / Firefox / Safari:''' សង្កត់ [Shift] ឱ្យជាប់រួចចុចប៊ូតុង ''Reload'' ឬក៏ចុច ''Ctrl-F5'' ឬ ''Ctrl-R'' (ចំពោះApple Mac វិញ​ចុច ''Command-R'')។
* '''IE(Internet Explorer):''' សង្កត់ [Ctrl] ឱ្យជាប់ រួចចុច ''Refresh''ប៊ូតុង ឬក៏ចុច ''Ctrl-F5''​។
* '''Konqueror:''' ចុចប៊ូតុង ''Reload'' ឬក៏ចុច ''F5''
* '''Opera:''' សូមចុច ''[Tools]→[Preferences]''​។",
-'usercssjsyoucanpreview' => "'''គន្លឹះ ៖ ''' សូមប្រើប្រាស់​ប្រអប់ 'បង្ហាញការមើលមុន' ដើម្បី​ធ្វើតេស្ត​សន្លឹក CSS/JS ថ្មីរបស់អ្នក​មុននឹង​រក្សាទុកវា ។",
+'usercssyoucanpreview' => "'''គន្លឹះ ៖ ''' សូមប្រើប្រាស់​ប្រអប់ 'បង្ហាញការមើលមុន' ដើម្បី​ធ្វើតេស្ត​សន្លឹក CSS ថ្មីរបស់អ្នក​មុននឹង​រក្សាទុកវា ។",
+'userjsyoucanpreview' => "'''គន្លឹះ ៖ ''' សូមប្រើប្រាស់​ប្រអប់ 'បង្ហាញការមើលមុន' ដើម្បី​ធ្វើតេស្ត​សន្លឹក JS ថ្មីរបស់អ្នក​មុននឹង​រក្សាទុកវា ។",
'usercsspreview' => "'''កុំភ្លេចថា​អ្នកគ្រាន់តែ​កំពុងមើលជាមុនសន្លឹក CSS របស់អ្នក។
វាមិនទាន់​ត្រូវបានរក្សាទុកទេ!'''",
'userjspreview' => "'កុំភ្លេចថាអ្នកគ្រាន់តែកំពុង ធ្វើតេស្ត/មើលមុន ទំព័រអ្នកប្រើប្រាស់ JavaScript របស់អ្នក។ វាមិនទាន់ត្រូវបានរក្សាទុកទេ!'''",
@@ -932,14 +947,20 @@ $2',
'readonlywarning' => "'''ប្រយ័ត្ន:មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោសម្រាប់ការរក្សាទុក ដូច្នេះអ្នកនឹងមិនអាចរក្សាទុករាល់កំណែប្រែរបស់អ្នកបានទេឥឡូវនេះ។ សូមអ្នកចម្លងអត្ថបទ រួចដាក់ទៅក្នុងឯកសារដែលជាអត្ថបទ ហើយបន្ទាប់មករក្សាវាទុកនៅពេលក្រោយ។'''
អ្នកអភិបាលដែលបានចាក់សោវា បានផ្ដល់នួវការពន្យល់ដូចតទៅ៖ $1",
-'protectedpagewarning' => "'''ប្រយ័ត្ន៖ ទំព័រនេះ​ត្រូវបានចាក់សោ។ ដូច្នេះ​មានតែ​អ្នកប្រើប្រាស់​ដែល​មាន​អភ័យឯកសិទ្ឋិ​ជាអ្នកថែទាំប្រព័ន្ឋ​ (sysop) ទេទើបអាច​កែប្រែ​វាបាន។'''",
-'semiprotectedpagewarning' => "'''សម្គាល់៖''' ទំព័រនេះ​បានត្រូវ​ចាក់សោ។ ដូច្នេះ​មានតែអ្នកប្រើប្រាស់​ដែលបានចុះឈ្មោះ​ទើបអាចកែប្រែ​វា​បាន។",
+'protectedpagewarning' => "'''ប្រយ័ត្ន៖ ទំព័រនេះ​ត្រូវបានចាក់សោ។ ដូច្នេះ​មានតែ​អ្នកប្រើប្រាស់​ដែល​មាន​អភ័យឯកសិទ្ឋិ​ជាអ្នកអភិបាលទេទើបអាច​កែប្រែ​វាបាន។'''
+
+ខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
+'semiprotectedpagewarning' => "'''សម្គាល់់៖''' ទំព័រនេះ​បានត្រូវ​ចាក់សោ។ ដូច្នេះ​មានតែអ្នកប្រើប្រាស់​ដែលបានចុះឈ្មោះ​ទេទើបអាចកែប្រែ​វា​បាន។
+
+ខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
'cascadeprotectedwarning' => 'ប្រយ័ត្ន​៖ ទំព័រ​នេះ​ត្រូវ​បាន​ចាក់​សោ​ ដូច្នោះ​ហើយ​មាន​តែ​អ្នក​ប្រើ​ប្រាស់​ដែល​មាន​សិទ្ធិ​ជា​អ្នក​អភិបាល​ប៉ុណ្ណោះ​ អាច​កែ​ប្រែ​បាន។ ពីព្រោះ​ទំព័រ​នេះ​ត្រូវ​បាន​រួម​បញ្ចូល​ទៅ​ក្នុង​
{{PLURAL:$1|ទំព័រ​}}ដែលការ​ពារ​ជា​ថ្នាក់ (cascade-protected)៖',
-'titleprotectedwarning' => "ប្រយ័ត្ន៖ ទំព័រនេះត្រូវបានចាក់សោ ដូច្នេះមានតែ [[Special:ListGroupRights|អ្នកប្រើប្រាស់មួយចំនួន]] ប៉ុណ្ណោះអាចបង្កើតវា។'''",
-'templatesused' => 'ទំព័រគំរូប្រើនៅក្នុងទំព័រនេះគឺ៖',
-'templatesusedpreview' => 'ទំព័រគំរូ​នានាដែល​បានប្រើប្រាស់​ក្នុងការមើលមុននេះ៖',
-'templatesusedsection' => 'ទំព័រគំរូដែលត្រូវបានប្រើប្រាស់ក្នុងផ្នែកនេះ៖',
+'titleprotectedwarning' => "'''ប្រយ័ត្ន៖ ទំព័រនេះត្រូវបានចាក់សោ។ ដូច្នេះមានតែ[[Special:ListGroupRights|អ្នកមានសិទ្ធពិសេស]]ប៉ុណ្ណោះទើបអាចបង្កើតវាបាន។'''
+
+ខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
+'templatesused' => '{{PLURAL:$1|ទំព័រគំរូ|ទំព័រគំរូទាំងឡាយដែល}}ប្រើនៅក្នុងទំព័រនេះ៖',
+'templatesusedpreview' => '{{PLURAL:$1|ទំព័រគំរូ​|ទំព័រគំរូ​ទាំងឡាយដែល​}}ប្រើ​ក្នុងការមើលមុននេះ៖',
+'templatesusedsection' => '{{PLURAL:$1|ទំព័រគំរូ|ទំព័រគំរូទាំងឡាយ}}ដែលមានប្រើក្នុងផ្នែកនេះ៖',
'template-protected' => '(ត្រូវបានការពារ)',
'template-semiprotected' => '(ត្រូវបានការពារពាក់កណ្តាល)',
'hiddencategories' => 'ទំព័រនេះស្ថិតនៅក្នុង {{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានបិទបាំងមួយ|ចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានបិទបាំងចំនួន$1}}:',
@@ -947,17 +968,18 @@ $2',
'nocreatetext' => '{{SITENAME}} បានដាក់កំហិតលទ្ធភាពបង្កើតទំព័រថ្មី ។
អ្នកអាចត្រឡប់ក្រោយ និង កែប្រែទំព័រមានស្រាប់ ឬ [[Special:UserLogin|ចូលឬបង្កើតគណនី]]។',
'nocreate-loggedin' => 'អ្នកគ្មានការអនុញ្ញាត​ឱ្យបង្កើតទំព័រថ្មី​ទេ។',
+'sectioneditnotsupported-title' => 'មិនអនុញ្ញាតអោយធ្វើការកែប្រែដោយផ្នែកទេ',
+'sectioneditnotsupported-text' => 'មិនអនុញ្ញាតអោយធ្វើការកែប្រែដោយផ្នែកនៅក្នុងទំព័រនេះទេ។',
'permissionserrors' => 'បញ្ហាច្បាប់អនុញ្ញាត',
'permissionserrorstext' => 'អ្នកគ្មានការអនុញ្ញាតឱ្យធ្វើបែបនោះទេ ដោយសារ{{PLURAL:$1|មូលហេតុ|មូលហេតុ}}ដូចខាងក្រោម៖',
'permissionserrorstext-withaction' => 'អ្នកគ្មានការអនុញ្ញាតឱ្យ$2ទេ ដោយសារ{{PLURAL:$1|មូលហេតុ|មូលហេតុ}}ដូចខាងក្រោម៖',
-'recreate-deleted-warn' => "'''ប្រយ័ត្ន ៖ អ្នកកំពុង​បង្កើតទំព័រដែលទើបតែ​ត្រូវបានលុបចោលឡើងវិញ​។'''
-
-អ្នក​គួរគិតមើល​តើជាការសមស្របក្នុងបន្តកែប្រែ​ទំព័រនេះ ។
+'recreate-moveddeleted-warn' => "'''ប្រយ័ត្ន៖ អ្នកកំពុង​បង្កើតឡើងវិញ​នូវទំព័រដែលទើបតែ​បានលុបចេញ។'''
-កំណត់ហេតុ​នៃការលុបចោល​ចំពោះទំព័រនេះ ត្រូវបានផ្ដល់​ទីនេះដើម្បីងាយ​តាមដាន​៖",
-'deleted-notice' => 'ទំព័រនេះត្រូវបានលុបចោលហើយ។
-កំណត់ហេតុនៃការលុបចោលចំពោះ​ទំព័រនេះត្រូវបាន​ផ្ដល់ឱ្យខាងក្រោម​សម្រាប់ជាការសំអាង។',
-'deletelog-fulllog' => 'មើលកំណត់ហេតុពេញលេញ',
+អ្នក​គួរពិចារណាមើលថា​​តើជាការសមស្របទេដែលបន្តកែប្រែ​ទំព័រនេះ។
+កំណត់ហេតុ​លុបចេញ​នៃទំព័រនេះ ត្រូវបានផ្ដល់ជូន​នៅ​​ទីនេះ​ដើម្បីងាយ​តាមដាន៖",
+'moveddeleted-notice' => 'ទំព័រនេះត្រូវបានលុបចេញហើយ។
+កំណត់ហេតុនៃ​ទំព័រនេះត្រូវបាន​ផ្ដល់ជូន​នៅ​ខាងក្រោម​សម្រាប់ជាឯកសារ​យោង​។',
+'log-fulllog' => 'បង្ហាញ​កំណត់ហេតុ​ទាំងមូល​',
'edit-gone-missing' => 'មិនអាចបន្ទាន់សម័យទំព័រនេះទេ។
ទំព័រនេះហាក់ដូចជាត្រូវបានលុបចោលហើយ។',
@@ -995,9 +1017,9 @@ $2',
'viewpagelogs' => 'មើលកំណត់ហេតុសម្រាប់ទំព័រនេះ',
'nohistory' => 'មិនមានប្រវត្តិកំណែប្រែ​ចំពោះទំព័រនេះ។',
'currentrev' => 'កំណែបច្ចុប្បន្ន',
-'currentrev-asof' => 'កំណែបច្ចុប្បន្ន $1',
+'currentrev-asof' => 'កំណែប្រែបច្ចុប្បន្ន $1',
'revisionasof' => 'កំណែ​របស់ $1',
-'revision-info' => 'កំណែ​របស់ $1 ដោយ $2', # Additionally available: $3: revision id
+'revision-info' => 'កំណែ​របស់ $1 ដោយ $2',
'previousrevision' => '← កំណែ​មុន',
'nextrevision' => 'កំណែបន្ទាប់ →',
'currentrevisionlink' => 'កំណែបច្ចុប្បន្ន',
@@ -1009,7 +1031,7 @@ $2',
'histlegend' => "ជម្រើស៖ សូមគូសក្នុងកូនប្រអប់ពីមុខកំណែដែលអ្នកចង់ប្រៀបធៀប រួចចុចច្នុច enter ឬប៊ូតុងនៅខាងក្រោម។<br />
'''ពាក្យតំណាង'''៖(បច្ចុប្បន្ន) = ភាពខុសគ្នាជាមួយនឹងកំណែបច្ចុប្បន្ន, (ចុងក្រោយ) = ភាពខុសគ្នារវាងកំណែប្រែពីមុន, តិច = កំណែប្រែតិចតួច",
'history-fieldset-title' => 'ស្វែងរកក្នុងប្រវត្តិ',
-'deletedrev' => '[ត្រូវបាន​លុបចោល]',
+'history-show-deleted' => 'តែទំព័រលុបចោលប៉ុណ្ណោះ',
'histfirst' => 'ដំបូងៗបំផុត',
'histlast' => 'ថ្មីៗបំផុត',
'historysize' => '({{PLURAL:$1|1បៃ|$1បៃ}})',
@@ -1018,70 +1040,98 @@ $2',
# Revision feed
'history-feed-title' => 'ប្រវត្តិនៃកំណែ',
'history-feed-description' => 'ប្រវត្តិនៃកំណែទំព័រនេះលើវិគី',
-'history-feed-item-nocomment' => 'ដោយ$1នៅវេលា$2', # user at time
+'history-feed-item-nocomment' => 'ដោយ$1នៅវេលា$2',
'history-feed-empty' => 'ទំព័រដែលអ្នកបានស្នើមិនមានទេ។
ប្រហែលជាវាត្រូវបានគេលុបចោលពីវីគីឬ​ត្រូវបានគេដាក់ឈ្មោះថ្មី។
សូមសាក [[Special:Search|ស្វែងរកនៅក្នុងវិគី]] ដើម្បីរកទំព័រថ្មីដែលមានការទាក់ទិន។',
# Revision deletion
-'rev-deleted-comment' => '(វិចារត្រូវបានដកចេញ)',
-'rev-deleted-user' => '(ឈ្មោះអ្នកប្រើប្រាស់ត្រូវបានដកចេញ)',
-'rev-deleted-event' => '(កំណត់ហេតុសកម្មភាពត្រូវបានដកចេញ)',
-'rev-deleted-text-permission' => "កំណែទំព័រនេះត្រូវបាន'''លុបចោល'''ហើយ។
-
-អ្នកអាចមើលព័ត៌មានលំអិតនៅក្នុង[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។",
-'rev-deleted-text-view' => "កំណែទំព័រនេះត្រូវបាន'''លុបចោល'''ហើយ។
-
-ដោយអ្នកជាអ្នកអភិបាល អ្នកអាចមើលព័ត៌មានលំអិតនៅក្នុង[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។",
-'rev-deleted-no-diff' => "អ្នកមិនអាចមើលភាពខុសគ្នាបានទេ ដោយសារកំណែមួយក្នុងចំនៅមកំណែទាំងអស់ត្រូវបាន'''លុបចោល'''ហើយ។
-
-អ្នកអាចមើលព័ត៌មានលំអិតនៅក្នុង[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។",
-'rev-deleted-unhide-diff' => "កំណែមួយក្នុងចំណោមកំណែទាំងអស់ក្នុងការមើលភាពខុសគ្នានេះត្រូវបាន'''លុបចោលហើយ'''។
-
-អ្នកអាចមើលព័ត៌មានលំអិតនៅក្នុង[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} កំណត់ហេតុនៃការលុបចោល]។
-
-ដោយអ្នកជាអ្នកភិបាល អ្នកនៅតែអាច[$1 មើលភាពខុសគ្នានេះ]បានប្រសិនបើអ្នកចង់។",
-'rev-delundel' => 'បង្ហាញ/លាក់',
-'revisiondelete' => 'លុបចេញ / លែងលុបចេញ កំណែនានា',
-'revdelete-nooldid-title' => 'កំណែគោលដៅមិនត្រឹមត្រូវ',
-'revdelete-nooldid-text' => 'អ្នកមិនបានផ្ដល់កំណែគោលដៅសំរាប់អនុវត្តសកម្មភាពនេះ ឬកំណែគោលដៅដែលបានផ្ដល់អោយមិនមាន ឬអ្នកកំពុងព្យាយាមលាក់កំណែបច្ចុប្បន្ន។',
-'revdelete-nologtype-title' => 'មិន​បាន​ឲ្យ​ប្រភេទ​នៃ​កំណត់ហេតុ​',
-'revdelete-nologtype-text' => 'អ្នក​មិន​បាន​ផ្ដល់ប្រភេទរបស់​​កំណត់​ហេតុ​ដើម្បី​អនុវត្ត​សកម្មភាព​នេះ​ទេ។',
-'revdelete-toomanytargets-title' => 'កំណែគោលដៅច្រើនពេកហើយ',
-'revdelete-toomanytargets-text' => 'អ្នកបានផ្ដល់ប្រភេទគោលដៅច្រើនពេកហើយដើម្បីអនុវត្តសកម្មភាពនេះ។',
-'revdelete-nologid-title' => 'ការ​វាយ​បញ្ចូល​កំណត់ហេតុ​ដែល​គ្មាន​សុពលភាព​',
-'revdelete-selected' => "'''{{PLURAL:$2|កំណែប្រែ​ដែលបាន​ជ្រើសយក}}របស់​[[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|ព្រឹត្តិការណ៍​កំណត់​ហេតុ​ដែលបាន​ជ្រើសយក}}:'''",
-'revdelete-suppress-text' => "ការ​ហាមឃាត់​គួរ​ត្រូវ​បាន​អនុវត្តិ​លើ​ករណី​ដូច​ខាង​ក្រោម​នេះ​ប៉ុណ្ណោះ​៖
+'rev-deleted-comment' => '(វិចារត្រូវបានដកចេញ)',
+'rev-deleted-user' => '(ឈ្មោះអ្នកប្រើប្រាស់ត្រូវបានដកចេញ)',
+'rev-deleted-event' => '(កំណត់ហេតុសកម្មភាពត្រូវបានដកចេញ)',
+'rev-deleted-text-permission' => "កំណែ​ប្រែ​នៃ​ទំព័រ​នេះ​ត្រូវ​បាន'''​លុប'''​។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការ​លុប​]។",
+'rev-deleted-text-unhide' => "កំណែ​ប្រែ​នៃ​ទំព័រ​នេះ​ត្រូវ​បាន'''​លុប'''​។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការ​លុប​]។
+ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​តែ​អាច​[$1 មើល​កំណែ​នេះ​]ប្រសិន​បើ​អ្នក​ចង់​។",
+'rev-suppressed-text-unhide' => "កំណែ​ប្រែ​នៃ​ទំព័រ​នេះ​ត្រូវ​បាន'''ហាម​ឃាត់​'''​។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការហាម​ឃាត់​​]។
+ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​តែ​អាច​[$1 មើល​កំណែ​នេះ​]ប្រសិន​បើ​អ្នក​ចង់​។",
+'rev-deleted-text-view' => "កំណែ​ប្រែ​នៃ​ទំព័រ​នេះ​ត្រូវ​បាន'''​លុប'''​។
+ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​អាច​មើល​កំណែប្រែ​​នេះ​បាន​។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការ​លុប​]។",
+'rev-suppressed-text-view' => "កំណែ​ប្រែ​នៃ​ទំព័រ​នេះ​ត្រូវ​បាន'''ហាម​ឃាត់​'''​។
+ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​​អាច​មើល​វា​បាន​។ ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការហាម​ឃាត់​​]។",
+'rev-deleted-no-diff' => "អ្នក​មិន​អាច​មើល​ភាព​ខុស​គ្នា​នេះ​បាន​ទេ​ពី​ព្រោះ​កំណែ​មួយ​នៃ​កំណែ​ប្រែ​ទាំង​អស់​ត្រូវ​បាន'''​លុប​'''។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការ​លុប​]។",
+'rev-deleted-unhide-diff' => "កំណែ​ប្រែ​មួយ​នៃភាព​ខុស​គ្នា​​នេះ​ត្រូវ​បាន'''​លុប'''​។
+ប្រហែល​ជា​មាន​ព័ត៌មាន​លម្អិត​នៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណត់​ហេតុ​នៃ​ការ​លុប​]។
+ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​តែ​អាច​[$1 មើលភាព​ខុស​គ្នា​​នេះ​]ប្រសិន​បើ​អ្នក​ចង់​។",
+'rev-delundel' => 'បង្ហាញ/លាក់',
+'rev-showdeleted' => 'បង្ហាញ',
+'revisiondelete' => 'លុបចេញ / លែងលុបចេញ កំណែនានា',
+'revdelete-nooldid-title' => 'កំណែគោលដៅមិនត្រឹមត្រូវ',
+'revdelete-nooldid-text' => 'អ្នកមិនបានផ្ដល់កំណែគោលដៅសំរាប់អនុវត្តសកម្មភាពនេះ ឬកំណែគោលដៅដែលបានផ្ដល់អោយមិនមាន ឬអ្នកកំពុងព្យាយាមលាក់កំណែបច្ចុប្បន្ន។',
+'revdelete-nologtype-title' => 'មិន​បាន​ឲ្យ​ប្រភេទ​នៃ​កំណត់ហេតុ​',
+'revdelete-nologtype-text' => 'អ្នក​មិន​បាន​ផ្ដល់ប្រភេទរបស់​​កំណត់​ហេតុ​ដើម្បី​អនុវត្ត​សកម្មភាព​នេះ​ទេ។',
+'revdelete-nologid-title' => 'ការ​វាយ​បញ្ចូល​កំណត់ហេតុ​ដែល​គ្មាន​សុពលភាព​',
+'revdelete-no-file' => 'មិនមានឯកសារ​ដូចដែលបានបញ្ជាក់ទេ។',
+'revdelete-show-file-confirm' => 'តើ​អ្នក​ប្រាកដ​ហើយ​ថា​អ្នក​ចង់​មើល​កំណែ​ប្រែ​ដែល​បាន​លុប​នៃ​ឯកសារ​ "<nowiki>$1</nowiki>" ពី $2 នៅ $3 ?',
+'revdelete-show-file-submit' => 'បាទ/ចាស',
+'revdelete-selected' => "'''{{PLURAL:$2|កំណែប្រែ​ដែលបាន​ជ្រើសយក}}របស់​[[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|ព្រឹត្តិការណ៍​កំណត់​ហេតុ​ដែលបាន​ជ្រើសយក}}:'''",
+'revdelete-suppress-text' => "ការ​ហាមឃាត់​គួរ​ត្រូវ​បាន​អនុវត្តិ​លើ​ករណី​ដូច​ខាង​ក្រោម​នេះ​ប៉ុណ្ណោះ​៖
* ព័ត៌មាន​ផ្ទាល់​ខ្លួន​ ឯកជន​មិន​សមរម្យ​
*: ''អាសយដ្ឋាននៃ​គេហដ្ឋាន​​ ​លេខ​ទូរស័ព្ទ និងលេខ​សន្តិសុខ​សង្គម​ជាដើម​''",
-'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
-'revdelete-hide-text' => 'បិទបាំងឃ្លានៃកំណែប្រែ',
-'revdelete-hide-name' => 'បិទបាំងសកម្មភាពនិងគោលដៅ',
-'revdelete-hide-comment' => 'បិទបាំងកំណែប្រែវិចារ',
-'revdelete-hide-user' => 'បិទបាំងឈ្មោះអ្នកប្រើប្រាស់​ឬអាសយដ្ឋាន IP នៃអ្នករួមចំណែក',
-'revdelete-hide-restricted' => 'ដាក់កំហិត​ទិន្នន័យ​ពី​អ្នកអភិបាល ក៏​ដូចជា​អ្នក​ដទៃ​ទៀត',
-'revdelete-suppress' => 'លាក់ទិន្នន័យពីអ្នកថែទាំប្រព័ន្ធ ព្រមទាំងពីសមាជិកដទៃទៀតផងដែរ',
-'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
-'revdelete-unsuppress' => 'ដកចេញការដាក់កំហិតលើកំណដែលបានស្តារឡើងវិញ',
-'revdelete-log' => 'មូលហេតុ៖',
-'revdelete-submit' => 'អនុវត្តន៍ទៅកំណែដែលបានជ្រើសយក',
-'revdelete-logentry' => 'បានផ្លាស់ប្តូរគំហើញកំណែនៃ[[$1]]',
-'logdelete-logentry' => 'បានផ្លាស់ប្តូរគំហើញហេតុការនៃ[[$1]]',
-'revdelete-success' => "'''បន្ទាន់សម័យគំហើញកំណែបានសំរេច។'''",
-'logdelete-success' => "'''បានកំណត់គំហើញកំណត់ហេតុដោយជោគជ័យ។'''",
-'revdel-restore' => 'ផ្លាស់ប្ដូរគំហើញ',
-'pagehist' => 'ប្រវត្តិទំព័រ',
-'deletedhist' => 'ប្រវត្តិដែលត្រូវបានលុប',
-'revdelete-content' => 'ខ្លឹមសារ',
-'revdelete-summary' => 'កែប្រែចំណារពន្យល់',
-'revdelete-uname' => 'ឈ្មោះអ្នកប្រើប្រាស់',
-'revdelete-restricted' => 'បានអនុវត្តការដាក់កំហិតចំពោះអ្នកអភិបាល',
-'revdelete-unrestricted' => 'បានដកការដាក់កំហិតចេញសម្រាប់អ្នកអភិបាល',
-'revdelete-hid' => 'បានលាក់$1',
-'revdelete-unhid' => 'ឈប់លាក់$1',
-'revdelete-log-message' => '$1 ចំពោះ $2 {{PLURAL:$2|កំណែ​ប្រែ​}}',
-'logdelete-log-message' => '$1 ចំពោះ $2 {{PLURAL:$2|ព្រឹត្តិការណ៍|ព្រឹត្តិការណ៍}}',
+'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
+'revdelete-hide-text' => 'បិទបាំងឃ្លានៃកំណែប្រែ',
+'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
+'revdelete-hide-name' => 'បិទបាំងសកម្មភាពនិងគោលដៅ',
+'revdelete-hide-comment' => 'បិទបាំងកំណែប្រែវិចារ',
+'revdelete-hide-user' => 'បិទបាំងឈ្មោះអ្នកប្រើប្រាស់​ឬអាសយដ្ឋាន IP នៃអ្នករួមចំណែក',
+'revdelete-hide-restricted' => 'ដាក់កំហិត​ទិន្នន័យ​ពី​អ្នកអភិបាល ក៏​ដូចជា​អ្នក​ដទៃ​ទៀត',
+'revdelete-radio-same' => '(មិនផ្លាស់ប្ដូរ)',
+'revdelete-radio-set' => 'បាទ/ចាស',
+'revdelete-radio-unset' => 'ទេ',
+'revdelete-suppress' => 'លាក់ទិន្នន័យពីអ្នកថែទាំប្រព័ន្ធ ព្រមទាំងពីសមាជិកដទៃទៀតផងដែរ',
+'revdelete-unsuppress' => 'ដកចេញការដាក់កំហិតលើកំណដែលបានស្តារឡើងវិញ',
+'revdelete-log' => 'មូលហេតុ៖',
+'revdelete-submit' => 'អនុវត្តទៅលើ{{PLURAL:$1|កំណែ|កំណែទាំងឡាយ}}ដែលបានជ្រើសយក',
+'revdelete-logentry' => 'បានផ្លាស់ប្តូរគំហើញកំណែនៃ[[$1]]',
+'logdelete-logentry' => 'បានផ្លាស់ប្តូរគំហើញហេតុការនៃ[[$1]]',
+'revdelete-success' => "'''បន្ទាន់សម័យគំហើញកំណែបានសំរេច។'''",
+'revdelete-failure' => "'''មិន​អាចកំណត់គំហើញនៃ​កំណែប្រែ​បាន​៖'''
+$1",
+'logdelete-success' => "'''បានកំណត់គំហើញកំណត់ហេតុដោយជោគជ័យ។'''",
+'logdelete-failure' => "'''មិន​អាចកំណត់គំហើញនៃ​កំណត់​ហេតុ​​បាន​៖'''
+$1",
+'revdel-restore' => 'ផ្លាស់ប្ដូរគំហើញ',
+'pagehist' => 'ប្រវត្តិទំព័រ',
+'deletedhist' => 'ប្រវត្តិដែលត្រូវបានលុប',
+'revdelete-content' => 'ខ្លឹមសារ',
+'revdelete-summary' => 'កែប្រែចំណារពន្យល់',
+'revdelete-uname' => 'ឈ្មោះអ្នកប្រើប្រាស់',
+'revdelete-restricted' => 'បានអនុវត្តការដាក់កំហិតចំពោះអ្នកអភិបាល',
+'revdelete-unrestricted' => 'បានដកការដាក់កំហិតចេញសម្រាប់អ្នកអភិបាល',
+'revdelete-hid' => 'បានលាក់$1',
+'revdelete-unhid' => 'ឈប់លាក់$1',
+'revdelete-log-message' => '$1 ចំពោះ $2 {{PLURAL:$2|កំណែ​ប្រែ​}}',
+'logdelete-log-message' => '$1 ចំពោះ $2 {{PLURAL:$2|ព្រឹត្តិការណ៍|ព្រឹត្តិការណ៍}}',
+'revdelete-hide-current' => 'មាន​កំហុស​ពេល​កំពុង​លាក់​បាំង​វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ $2, $1៖ នេះ​គឺ​ជា​កំណែបច្ចុប្បន្ន​។​
+វា​មិន​អាច​លាក់​បាំង​បាន​ទេ​។',
+'revdelete-show-no-access' => 'មាន​កំហុស​ពេល​កំពុង​បង្ហាញ​វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ $2, $1៖ វត្ថុ​នេះ​ត្រូវ​បាន​កត់​សម្គាល់​ជា"ការ​ដាក់​កំហិត​"​។​
+អ្នក​មិន​អាច​ចូល​ទៅ​កាន់​វា​​បាន​ទេ​។',
+'revdelete-modify-no-access' => 'មាន​កំហុស​ពេល​កំពុង​កែ​សម្រួល​​វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ $2, $1៖ វត្ថុ​នេះ​ត្រូវ​បាន​កត់​សម្គាល់​ជា"ការ​ដាក់​កំហិត​"​។​
+អ្នក​មិន​អាច​ចូល​ទៅ​កាន់​វា​​បាន​ទេ​។',
+'revdelete-modify-missing' => 'មាន​កំហុស​ពេល​កំពុង​កែ​សម្រួលវត្ថុដែលមាន​លេខ​ ID $1​​៖ វា​បាន​បាត់​​ពី​មូលដ្ឋាន​ទិន្នន័យ​!​',
+'revdelete-no-change' => "'''ប្រយ័ត្ន​៖''' វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ​ $2, $1 ត្រូវ​បាន​ស្នើ​សុំ​ការ​កំណត់​គំហើញ​រួច​ហើយ​។",
+'revdelete-reason-dropdown' => '*មូលហេតុលុបចោលទូទៅ
+** បំពានលើកម្មសិទ្ធិបញ្ញា
+** ព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ
+** ព័ត៌មានបង្ខូចកេរ្តិ៍ឈ្មោះ',
+'revdelete-otherreason' => 'មូលហេតុផ្សេង​ៗ/ដទៃទៀត​៖',
+'revdelete-reasonotherlist' => 'មូលហេតុផ្សេង​ទៀត​',
+'revdelete-edit-reasonlist' => 'មូលហេតុនៃការលុបការកែប្រែ',
# Suppression log
'suppressionlog' => 'កំណត់​ហេតុ​នៃ​ការ​ហាម​ឃាត់​',
@@ -1119,67 +1169,13 @@ $2',
'mergelogpagetext' => 'ខាងក្រោមគឺជាតារាងនៃការច្របាច់បញ្ចូលគ្នាថ្មីៗបំផុតរបស់ប្រវត្តិនៃទំព័រមួយទៅក្នុងប្រវត្តិនៃទំព័រមួយទៀត។',
# Diffs
-'history-title' => 'ប្រវត្តិកំណែប្រែនានានៃ "$1"',
-'difference' => '(ប្រៀបធៀបកំណែនានា)',
-'lineno' => 'បន្ទាត់ទី$1៖',
-'compareselectedversions' => 'ប្រៀបធៀប​កំណែដែលបាន​ជ្រើសយក',
-'visualcomparison' => 'បំរៀបធៀបរាងរៅ',
-'wikicodecomparison' => 'បំរៀបធៀបអត្ថបទវិគី',
-'editundo' => 'មិនធ្វើវិញ',
-'diff-multi' => '({{PLURAL:$1|កំណែប្រែកម្រិតបង្គួរមួយ|កំណែប្រែកម្រិតបង្គួរចំនួន$1}}មិនត្រូវបានបង្ហាញ)',
-'diff-movedto' => 'បានប្ដូរទីតាំងទៅ $1',
-'diff-styleadded' => 'បានបន្ថែម$1រចនាបថ',
-'diff-added' => 'បានបន្ថែម$1',
-'diff-changedto' => 'បានផ្លាស់ប្ដូរទៅ$1',
-'diff-movedoutof' => 'បានប្ដូរទីតាំងចេញពី $1',
-'diff-styleremoved' => 'បានដកចេញ$1រចនាបថ',
-'diff-removed' => 'បានដកចេញ$1',
-'diff-changedfrom' => 'បានផ្លាស់ប្ដូរពី$1',
-'diff-src' => 'ប្រភព',
-'diff-withdestination' => 'ជាមួយនឹងគោលដៅ$1',
-'diff-with' => '&#32;ជាមួយ $1 $2',
-'diff-with-final' => '&#32;និង $1 $2',
-'diff-width' => 'ទទឹង',
-'diff-height' => 'កម្ពស់',
-'diff-p' => "'''កថាខណ្ឌ'''មួយ",
-'diff-blockquote' => "'''ពាក្យ​ពេចន៍​'''មួយ​",
-'diff-h1' => "'''ចំណងជើង (កម្រិត ១)'''មួយ",
-'diff-h2' => "'''ចំណងជើង (កម្រិត ២)'''មួយ",
-'diff-h3' => "'''ចំណងជើង (កម្រិត ៣)'''មួយ",
-'diff-h4' => "'''ចំណងជើង (កម្រិត ៤)'''មួយ",
-'diff-h5' => "'''ចំណងជើង (កម្រិត ៥)'''មួយ",
-'diff-pre' => "'''ប្លុកបុព្វទំរង់'''មួយ",
-'diff-div' => "'''ផ្នែក'''មួយ",
-'diff-ul' => "'''បញ្ជីគ្មានរបៀប'''មួយ",
-'diff-ol' => "'''បញ្ជីមានរបៀប'''មួយ",
-'diff-li' => "'''វត្ថុ​ក្នុង​បញ្ជី​'''មួយ​",
-'diff-table' => "'''តារាង'''មួយ",
-'diff-tbody' => "'''មាតិកាតារាង'''មួយ",
-'diff-tr' => "'''ជួរដេក'''មួយ",
-'diff-td' => "'''ប្រអប់'''មួយ",
-'diff-th' => "'''ចំណង​ជើង​'''មួយ",
-'diff-br' => "'''ចុះបន្ទាត់'''",
-'diff-hr' => "'''បន្ទាត់ដេក'''មួយ",
-'diff-code' => "'''តួ​លេខ​កូដ​កុំព្យូទ័រ​'''មួយ​",
-'diff-dl' => "'''បញ្ជីនិយមន័យ'''មួយ",
-'diff-dt' => "'''ពាក្យ​និយមន័យ'''មួយ",
-'diff-dd' => "'''និយមន័យ'''មួយ",
-'diff-input' => "'''ការ​វាយ​បញ្ចូល​'''មួយ​",
-'diff-form' => "'''សំនុំ​បែប​បទ'''មួយ​",
-'diff-img' => "'''រូបភាព'''មួយ",
-'diff-span' => "'''វិសាលភាព​'''មួយ​",
-'diff-a' => "'''តំណភ្ជាប់'''មួយ",
-'diff-i' => "'''អក្សរទ្រេត'''",
-'diff-b' => "'''អក្សរដិត'''",
-'diff-strong' => "'''ខ្លាំង​'''",
-'diff-em' => "'''សង្កត់​ធ្ងន់​'''",
-'diff-font' => "'''ពុម្ពអក្សរ'''",
-'diff-big' => "'''ធំ'''",
-'diff-del' => "'''ត្រូវបានលុបចោល'''",
-'diff-tt' => "'''ទទឹងថេរ'''",
-'diff-sub' => "'''អក្សរតូចក្រោម'''",
-'diff-sup' => "'''អក្សរតូចលើ'''",
-'diff-strike' => "'''ឆូត'''",
+'history-title' => 'ប្រវត្តិកំណែប្រែនានានៃ "$1"',
+'difference' => '(ប្រៀបធៀបកំណែនានា)',
+'lineno' => 'បន្ទាត់ទី$1៖',
+'compareselectedversions' => 'ប្រៀបធៀប​កំណែដែលបាន​ជ្រើសយក',
+'showhideselectedversions' => 'បង្ហាញ​/លាក់​កំណែប្រែ​ដែលបាន​ជ្រើសយក',
+'editundo' => 'មិនធ្វើវិញ',
+'diff-multi' => '({{PLURAL:$1|កំណែប្រែកម្រិតបង្គួរមួយ|កំណែប្រែកម្រិតបង្គួរចំនួន$1}}មិនត្រូវបានបង្ហាញ)',
# Search results
'searchresults' => 'លទ្ធផលស្វែងរក',
@@ -1187,28 +1183,25 @@ $2',
'searchresulttext' => 'សំរាប់ព័ត៌មានបន្ថែមស្ដីអំពីការស្វែងរកក្នុង{{SITENAME}} សូមមើល[[{{MediaWiki:Helppage}}|{{int:help}}]]។',
'searchsubtitle' => 'អ្នកបានស្វែងរក \'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|គ្រប់ទំព័រដែលផ្ដើមដោយ "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|គ្រប់ទំព័រដែលភ្ជាប់មក "$1"]])',
'searchsubtitleinvalid' => "អ្នកបានស្វែងរក '''$1'''",
-'noexactmatch' => "'''គ្មានទំព័រ​ណាដែលមានចំណងជើង \"\$1\" ទេ។''' អ្នកអាច [[:\$1|បង្កើតទំព័រនេះ]]។",
-'noexactmatch-nocreate' => "'''គ្មានទំព័រ​ណាដែលមានចំណងជើង \"\$1\"ទេ។'''",
'toomanymatches' => 'មានតំណភ្ជាប់ច្រើនណាស់ត្រូវបានបង្ហាញ ចូរព្យាយាមប្រើសំណួរផ្សេងមួយទៀត',
'titlematches' => 'ភាពត្រូវគ្នានៃចំណងជើងទំព័រ',
'notitlematches' => 'ពុំមានចំណងជើងទំព័រណាដូចពាក្យនេះទេ',
'textmatches' => 'ទំព័រអត្ថបទផ្គូរផ្គងគ្នា',
'notextmatches' => 'គ្មានអត្ថបទទំព័រណាមួយដែលមានខ្លឹមសារផ្គូផ្គងនឹងឃ្លាឬពាក្យនេះទេ',
-'prevn' => 'មុន $1',
-'nextn' => 'បន្ទាប់ $1',
+'prevn' => 'មុន {{PLURAL:$1|$1}}',
+'nextn' => 'បន្ទាប់ {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|លទ្ធផល|លទ្ធផល}}មុន',
'nextn-title' => '$1 {{PLURAL:$1|លទ្ឋផល|លទ្ឋផល}}​បន្ទាប់​',
'shown-title' => 'បង្ហាញ $1 {{PLURAL:$1|លទ្ធផល|លទ្ធផល}}ក្នុងមួយទំព័រ',
-'viewprevnext' => 'មើល ($1) ($2) ($3)',
+'viewprevnext' => 'មើល ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'ជម្រើសនានាក្នុងការស្វែងរក',
'searchmenu-exists' => "* ទំព័រ '''[[$1]]'''",
'searchmenu-new' => "'''បង្កើតទំព័រ ''[[$1]]'' នៅ​លើ​វិគី​នេះ!'''",
'searchhelp-url' => 'Help:មាតិកា',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|រុក​រក​ក្នុង​ទំព័រ​នានា​ជាមួយ​បុព្វបទ​នេះ​]]',
-'searchprofile-articles' => 'ទំព័រ​ខ្លឹមសារ',
-'searchprofile-articles-and-proj' => 'ទំព័រ​មាតិកា​និង​ទំព័រ​គម្រោង',
-'searchprofile-project' => 'ទំព័រ​គម្រោង',
-'searchprofile-images' => 'ឯកសារ',
+'searchprofile-articles' => 'ទំព័រ​មាតិកា',
+'searchprofile-project' => 'ជំនួយ និង​ទំព័រ​គម្រោង',
+'searchprofile-images' => 'ពហុ​ព័ត៌មាន',
'searchprofile-everything' => 'ទាំងអស់',
'searchprofile-advanced' => 'ថ្នាក់ខ្ពស់',
'searchprofile-articles-tooltip' => 'ស្វែងរកក្នុង $1',
@@ -1216,8 +1209,6 @@ $2',
'searchprofile-images-tooltip' => 'ស្វែងរកឯកសាររូបភាព',
'searchprofile-everything-tooltip' => 'ស្វែងរកក្នុងខ្លឹមសារទាំងអស់(រួមបញ្ចូលទាំងទំព័រពិភាក្សា)',
'searchprofile-advanced-tooltip' => 'ស្វែងរកក្នុងប្រភេទកំនត់ដោយអ្នកប្រើប្រាស់',
-'prefs-search-nsdefault' => 'ស្វែងរកតាមលំនាំដើម៖',
-'prefs-search-nscustom' => 'ស្វែងរកក្នុងប្រភេទកំនត់ដោយអ្នកប្រើប្រាស់៖',
'search-result-size' => '$1({{PLURAL:$2|១ពាក្យ|$2ពាក្យ}})',
'search-result-score' => 'កម្រិតទាក់ទិន៖ $1%',
'search-redirect' => '(បញ្ជូនបន្ត $1)',
@@ -1230,11 +1221,12 @@ $2',
'search-mwsuggest-disabled' => 'គ្មានសំណើ',
'search-relatedarticle' => 'ទាក់ទិន',
'mwsuggest-disable' => 'មិនប្រើសំនើAJAX',
+'searcheverything-enable' => 'ស្វែងរកនៅក្នុងលំហឈ្មោះទាំងអស់',
'searchrelated' => 'ទាក់ទិន',
'searchall' => 'ទាំងអស់',
'showingresults' => "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។",
'showingresultsnum' => "កំពុងបង្ហាញ {{PLURAL:$3|'''1''' result|'''$3''' លទ្ឋផល}}ខាងក្រោម ចាប់ផ្ដើមដោយ #'''$2''' ។",
-'showingresultstotal' => "{{PLURAL:$4|លទ្ឋផលស្វែងរក '''$1''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''|លទ្ឋផលស្វែងរក '''$1 - $2''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|លទ្ឋផល '''$1''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''|លទ្ឋផល '''$1 - $2''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''}} សម្រាប់ '''$4'''",
'nonefound' => "'''កំណត់​ចំណាំ​'''៖ តាម​លំនាំ​ដើម មាន​តែ​លំហ​ឈ្មោះ​ខ្លះៗ​ប៉ុណ្ណោះ​ដែល​ត្រូវបាន​ស្វែងរក​។​​
សូម​សាកប្រើ​បុព្វបទ ''all:''ក្នុង​សំណើ​របស់អ្នក ដើម្បី​ស្វែងរក​មាតិកាទាំងអស់ (រួមបញ្ចូល​ទាំង​ទំព័រ​ពិភាក្សានិងទំព័រគំរូជាដើម) ឬ​ក៏ប្រើ​លំហឈ្មោះដែលចង់រក​​ ជាបុព្វបទ​ក៏បាន​។​",
'search-nonefound' => 'មិនមានលទ្ធផលណាមួយ​ត្រូវគ្នានឹងសំណើសុំនេះទេ',
@@ -1243,98 +1235,132 @@ $2',
'powersearch-ns' => 'ស្វែងរកក្នុងប្រភេទ៖',
'powersearch-redir' => 'បញ្ជីការបញ្ជូនបន្ត',
'powersearch-field' => 'ស្វែងរក',
+'powersearch-togglelabel' => 'គូសធីក៖',
+'powersearch-toggleall' => 'ទាំងអស់',
+'powersearch-togglenone' => 'ទទេ',
'search-external' => 'ស្វែងរកនៅខាងក្រៅ',
'searchdisabled' => 'ឧបករណ៍​ស្វែងរក​របស់​{{SITENAME}} មិនបានអនុញ្ញាត​។
ក្នុង​ពេល​ឥឡូវ​នេះ​ អ្នកអាច​ស្វែង​រក​តាម​រយៈ​ Google បាន​។
សូមចងចាំ​ថា​ លិបិក្រម​នៃ​មាតិការ​របស់​{{SITENAME}} អាចហួស​សម័យ​។​',
+# Quickbar
+'qbsettings' => 'របារទាន់ចិត្ត',
+'qbsettings-none' => 'ទទេ',
+'qbsettings-fixedleft' => 'ចុងខាងឆ្វេង',
+'qbsettings-fixedright' => 'ចុងខាងស្តាំ',
+'qbsettings-floatingleft' => 'អណ្តែតឆ្វេង',
+'qbsettings-floatingright' => 'អណ្តែតស្តាំ',
+
# Preferences page
-'preferences' => 'ចំណង់ចំណូលចិត្ត',
-'mypreferences' => 'ចំណង់ចំណូលចិត្ត​',
-'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
-'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'prefsnologintext' => 'អ្នកចាំបាច់ត្រូវតែ<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} កត់ឈ្មោះចូល]</span> ដើម្បីកំណត់ចំណង់ចំណូលចិត្តរបស់អ្នកប្រើប្រាស់។',
-'prefsreset' => 'ចំណង់ចំណូលចិត្ត​ផ្ទាល់ខ្លួនត្រូវបានធ្វើឱ្យដូចដើមវិញពីកំណែមុននេះហើយ។',
-'qbsettings' => 'របារទាន់ចិត្ត',
-'qbsettings-none' => 'ទទេ',
-'qbsettings-fixedleft' => 'ចុងខាងឆ្វេង',
-'qbsettings-fixedright' => 'ចុងខាងស្តាំ',
-'qbsettings-floatingleft' => 'អណ្តែតឆ្វេង',
-'qbsettings-floatingright' => 'អណ្តែតស្តាំ',
-'changepassword' => 'ប្តូរពាក្យសំងាត់',
-'skin' => 'សំបក',
-'skin-preview' => 'មើលជាមុន',
-'math' => 'គណិត',
-'dateformat' => 'ទម្រង់កាលបរិច្ឆេទ',
-'datedefault' => 'គ្មានចំណូលចិត្ត',
-'datetime' => 'កាលបរិច្ឆេទនិងល្វែងម៉ោង',
-'math_failure' => 'បរាជ័យ​ក្នុង​ការ​ញែក​ចេញ​',
-'math_unknown_error' => 'កំហុសមិនស្គាល់',
-'math_unknown_function' => 'អនុគមន៍​មិន​ស្គាល់',
-'math_lexing_error' => 'បញ្ហាក្នុងការអានតួអក្សរ',
-'math_syntax_error' => 'កំហុសពាក្យសម្ព័ន្ធ',
-'math_image_error' => 'ការបម្លែងជា PNG បានបរាជ័យ។
-សូមពិនិត្យមើលតើ latex, dvips, gs, បានដំឡើងត្រឹមត្រូវឬអត់ រួចបម្លែង',
-'math_bad_tmpdir' => 'មិនអាចសរសេរទៅ ឬ បង្កើតថតឯកសារគណិតបណ្តោះអាសន្ន',
-'math_bad_output' => 'មិនអាច សរសេរទៅ ឬ បង្កើត ថតឯកសារ គណិត ទិន្នផល',
-'math_notexvc' => 'បាត់កម្មវិធី texvc។
+'preferences' => 'ចំណង់ចំណូលចិត្ត',
+'mypreferences' => 'ចំណង់ចំណូលចិត្ត​',
+'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
+'prefsnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
+'prefsnologintext' => 'អ្នកចាំបាច់ត្រូវតែ<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} កត់ឈ្មោះចូល]</span> ដើម្បីកំណត់ចំណង់ចំណូលចិត្តរបស់អ្នក។',
+'changepassword' => 'ប្តូរពាក្យសំងាត់',
+'prefs-skin' => 'សំបក',
+'skin-preview' => 'មើលជាមុន',
+'prefs-math' => 'គណិត',
+'datedefault' => 'គ្មានចំណូលចិត្ត',
+'prefs-datetime' => 'កាលបរិច្ឆេទនិងល្វែងម៉ោង',
+'prefs-personal' => 'ប្រវត្តិរូប',
+'prefs-rc' => 'បំលាស់ប្ដូរថ្មីៗ',
+'prefs-watchlist' => 'បញ្ជីតាមដាន',
+'prefs-watchlist-days' => 'ចំនួនថ្ងៃត្រូវបង្ហាញក្នុងបញ្ជីតាមដាន៖',
+'prefs-watchlist-days-max' => '(អតិបរមា ៧ថ្ងៃ)',
+'prefs-watchlist-edits' => 'ចំនួនអតិបរមានៃបំលាស់ប្តូរត្រូវបង្ហាញក្នុងបញ្ជីតាមដានដែលបានពង្រីក៖',
+'prefs-watchlist-edits-max' => '(ចំនួនអតិបរមា៖ ១០០០)',
+'prefs-misc' => 'ផ្សេងៗ',
+'prefs-resetpass' => 'ប្តូរពាក្យសំងាត់',
+'prefs-email' => '
+ជំរើសទាក់ទិននឹងអ៊ីមែល',
+'prefs-rendering' => 'ការរចនា',
+'saveprefs' => 'រក្សាទុក',
+'resetprefs' => 'លុបចោលបំលាស់ប្ដូរមិនបានរក្សាទុក',
+'restoreprefs' => 'ស្ដារ​ការកំណត់​ទាំងអស់​ទៅ​លំនាំដើម',
+'prefs-editing' => 'កំណែប្រែ',
+'prefs-edit-boxsize' => 'ទំហំរបស់ផ្ទាំងកែប្រែទំព័រ។',
+'rows' => 'ជួរដេក៖',
+'columns' => 'ជួរឈរ៖',
+'searchresultshead' => 'ស្វែងរក',
+'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំព័រ៖',
+'contextlines' => 'ចំនួនបន្ទាត់ក្នុងមួយលទ្ធផល៖',
+'contextchars' => 'ចំនួនអក្សរក្នុងមួយជួរ៖',
+'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖',
+'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របំលាស់ប្តូរថ្មីៗ៖',
+'recentchangesdays-max' => '(អតិបរមា $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
+'recentchangescount' => 'ចំនួន​កំណែប្រែ​ដែល​ត្រូវ​បង្ហាញ​តាមលំនាំដើម:',
+'prefs-help-recentchangescount' => 'រាប់បញ្ចូលទាំងការកែប្រែនាពេលថ្មី ប្រវត្តិទំព័រនិងកំណត់ហេតុនានា។',
+'savedprefs' => 'ចំណង់ចំណូលចិត្តនានារបស់អ្នកត្រូវបានរក្សាទុកហើយ។',
+'timezonelegend' => 'ល្វែង​ម៉ោង:',
+'localtime' => 'ម៉ោងក្នុងស្រុក​៖',
+'timezoneuseserverdefault' => 'តាមការកំនត់របស់ម៉ាស៊ីនបំរើការ',
+'timezoneuseoffset' => 'ផ្សេងទៀត (បញ្ចូលម៉ោងដោយខ្លួនឯង)',
+'timezoneoffset' => 'ទូទាត់¹​៖',
+'servertime' => 'ម៉ោងម៉ាស៊ីនបម្រើ​៖',
+'guesstimezone' => 'បំពេញពីកម្មវិធីរាវរក',
+'timezoneregion-africa' => 'អាហ្វ្រិក',
+'timezoneregion-america' => 'អាមេរិក',
+'timezoneregion-antarctica' => 'អង់តាកតិក',
+'timezoneregion-arctic' => 'អាកតិក',
+'timezoneregion-asia' => 'អាស៊ី',
+'timezoneregion-atlantic' => 'មហាសមុទ្រអាត្លង់ទិក',
+'timezoneregion-australia' => 'អូស្ត្រាលី',
+'timezoneregion-europe' => 'អឺរ៉ុប',
+'timezoneregion-indian' => 'មហាសមុទ្រឥណ្ឌា',
+'timezoneregion-pacific' => 'មហាសមុទ្រប៉ាស៊ីហ្វិក',
+'allowemail' => 'ទទួលអ៊ីមែលពីអ្នកប្រើប្រាស់ដទៃទៀត',
+'prefs-searchoptions' => 'ជម្រើសក្នុងការស្វែងរក',
+'prefs-namespaces' => 'ប្រភេទ',
+'defaultns' => 'ស្វែងរក​ក្នុង​លំហឈ្មោះ​ទាំងនេះ​តាម​បែប​ផ្សេង:',
+'default' => 'លំនាំដើម',
+'prefs-files' => 'ឯកសារ',
+'prefs-custom-css' => 'កែតំរូវ CSS',
+'prefs-custom-js' => 'កែតំរូវ JS',
+'prefs-reset-intro' => 'អ្នក​អាច​ប្រើ​ទំព័រ​នេះ​ដើម្បី​កំណត់​ឡើង​វិញ​នូវ​ចំណូល​ចិត្ត​របស់​អ្នក​ដូច​លំនាំ​ដើម​របស់​តំបន់​វិញ​។
+សកម្មភាព​នេះ​មិន​អាច​ធ្វើ​ឡើង​វិញ​បាន​ទេ​។',
+'prefs-emailconfirm-label' => 'បញ្ជាក់ទទួលស្គាល់អ៊ីមែល៖',
+'prefs-textboxsize' => 'ទំហំរបស់ផ្ទាំងកែប្រែទំព័រ',
+'youremail' => 'អ៊ីមែល៖',
+'username' => 'ឈ្មោះអ្នកប្រើ៖',
+'uid' => 'អត្តលេខ៖',
+'prefs-memberingroups' => 'សមាជិកក្នុង{{PLURAL:$1|ក្រុម|ក្រុម}}៖',
+'prefs-registration' => 'កាលបរិច្ឆេទចុះឈ្មោះ៖',
+'yourrealname' => 'ឈ្មោះពិត៖',
+'yourlanguage' => 'ភាសា៖',
+'yourvariant' => 'អថេរ​៖',
+'yournick' => 'ហត្ថលេខាថ្មី៖',
+'prefs-help-signature' => 'រាល់វិចារនៅលើទំព័រពិភាក្សានានា​គួរតែមានចុះហត្ថលេខាដោយប្រើ "<nowiki>~~~~</nowiki>" ដែលនឹងបំលែង​ចេញជាហត្ថលេខា​របស់អ្នក​ជាមួយនឹងកាលបរិច្ឆេទ។',
+'badsig' => 'ហត្ថលេខាឆៅមិនត្រឹមត្រូវ។សូមពិនិត្យមើលស្លាក​ HTML ។',
+'badsiglength' => 'ហត្ថលេខារបស់អ្នកវែងជ្រុល។
-សូមមើលក្នុង math/README ដើម្បីធ្វើការកំណត់លំអិត។',
-'prefs-personal' => 'ប្រវត្តិរូប',
-'prefs-rc' => 'បំលាស់ប្ដូរថ្មីៗ',
-'prefs-watchlist' => 'បញ្ជីតាមដាន',
-'prefs-watchlist-days' => 'ចំនួនថ្ងៃត្រូវបង្ហាញក្នុងបញ្ជីតាមដាន៖',
-'prefs-watchlist-days-max' => '(អតិបរមា ៧ថ្ងៃ)',
-'prefs-watchlist-edits' => 'ចំនួនអតិបរមានៃបំលាស់ប្តូរត្រូវបង្ហាញក្នុងបញ្ជីតាមដានដែលបានពង្រីក៖',
-'prefs-watchlist-edits-max' => '(ចំនួនអតិបរមា៖ ១០០០)',
-'prefs-misc' => 'ផ្សេងៗ',
-'prefs-resetpass' => 'ប្តូរពាក្យសំងាត់',
-'saveprefs' => 'រក្សាទុក',
-'resetprefs' => 'លុបចោលបំលាស់ប្ដូរមិនបានរក្សាទុក',
-'restoreprefs' => 'ស្ដារ​ការកំណត់​ទាំងអស់​ទៅ​លំនាំដើម',
-'textboxsize' => 'កំពុងកែប្រែ',
-'prefs-edit-boxsize' => 'ទំហំរបស់ផ្ទាំងកែប្រែទំព័រ។',
-'rows' => 'ជួរដេក៖',
-'columns' => 'ជួរឈរ៖',
-'searchresultshead' => 'ស្វែងរក',
-'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំព័រ៖',
-'contextlines' => 'ចំនួនបន្ទាត់ក្នុងមួយលទ្ធផល៖',
-'contextchars' => 'ចំនួនអក្សរក្នុងមួយជួរ៖',
-'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖',
-'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របំលាស់ប្តូរថ្មីៗ៖',
-'recentchangesdays-max' => '(អតិបរមា $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
-'recentchangescount' => 'ចំនួន​កំណែប្រែ​ដែល​ត្រូវ​បង្ហាញ​នៅ​ក្នុង​បំលាស់ប្តូរថ្មីៗ ប្រវត្តិ​ទំព័រ និង​នៅ​ក្នុង​កំណត់ហេតុ តាមលំនាំដើម៖',
-'savedprefs' => 'ចំណង់ចំណូលចិត្តនានារបស់អ្នកត្រូវបានរក្សាទុកហើយ។',
-'timezonelegend' => 'ល្វែង​ម៉ោង:',
-'timezonetext' => '¹ចំនួន​ម៉ោង​ដែល​ម៉ោងក្នុងស្រុក​របស់​អ្នក​ខុសពី​ម៉ោងម៉ាស៊ីនបម្រើសេវា (UTC)។',
-'localtime' => 'ម៉ោងក្នុងស្រុក​៖',
-'timezoneselect' => 'ល្វែងម៉ោង​៖',
-'timezoneuseserverdefault' => 'តាមការកំនត់របស់ម៉ាស៊ីនបំរើការ',
-'timezoneuseoffset' => 'ផ្សេងទៀត (បញ្ចូលម៉ោងដោយខ្លួនឯង)',
-'timezoneoffset' => 'ទូទាត់¹​៖',
-'servertime' => 'ម៉ោងម៉ាស៊ីនបម្រើ​៖',
-'guesstimezone' => 'បំពេញពីកម្មវិធីរាវរក',
-'timezoneregion-africa' => 'អាហ្វ្រិក',
-'timezoneregion-america' => 'អាមេរិក',
-'timezoneregion-antarctica' => 'អង់តាកតិក',
-'timezoneregion-arctic' => 'អាកតិក',
-'timezoneregion-asia' => 'អាស៊ី',
-'timezoneregion-atlantic' => 'មហាសមុទ្រអាត្លង់ទិក',
-'timezoneregion-australia' => 'អូស្ត្រាលី',
-'timezoneregion-europe' => 'អឺរ៉ុប',
-'timezoneregion-indian' => 'មហាសមុទ្រឥណ្ឌា',
-'timezoneregion-pacific' => 'មហាសមុទ្រប៉ាស៊ីហ្វិក',
-'allowemail' => 'ទទួលអ៊ីមែលពីអ្នកប្រើប្រាស់ដទៃទៀត',
-'prefs-searchoptions' => 'ជម្រើសក្នុងការស្វែងរក',
-'prefs-namespaces' => 'ប្រភេទ',
-'defaultns' => 'ស្វែងរកក្នុងប្រភេទទំព័រទាំងនេះតាមលំនាំដើម៖',
-'default' => 'លំនាំដើម',
-'files' => 'ឯកសារ',
-'prefs-custom-css' => 'កែតំរូវ CSS',
-'prefs-custom-js' => 'កែតំរូវ JS',
+វាត្រូវតែមានតួអក្សរតិចជាង $1 {{PLURAL:$1|តួ|តួ}}។',
+'yourgender' => 'ភេទ៖',
+'gender-unknown' => 'មិនបញ្ជាក់',
+'gender-male' => 'ប្រុស',
+'gender-female' => 'ស្រី',
+'prefs-help-gender' => 'ដាក់ក៏បានមិនដាក់ក៏បាន៖ ប្រើសំរាប់អោយសូហ្វវែរហៅតាមភេទអោយបាមត្រឹមត្រូវ។ ព័ត៌មាននេះនឹងត្រូវបង្ហាញជាសាធារណៈ។',
+'email' => 'អ៊ីមែល',
+'prefs-help-realname' => 'អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។',
+'prefs-help-email' => 'អ្នកអាចផ្ដល់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ ប៉ុន្ដែអាសយដ្ឋានអ៊ីមែលដែលផ្ដល់អោយនឹងមានប្រយោជន៍ក្នុងការប្ដូរពាក្យសំងាត់ ពេលដែលអ្នកភ្លេចវា។
+
+អ្នកក៏អាចជ្រើសរើស​ការផ្ដល់លទ្ឋភាព​​ឱ្យអ្នកដទៃទាក់ទងអ្នក​តាមរយៈ​​ទំព័រអ្នកប្រើប្រាស់​​ឬទំព័រពិភាក្សារបស់អ្នក​​ដោយមិនចាំបាច់ឱ្យគេដឹងពីអត្តសញ្ញាណរបស់អ្នកផងដែរ។',
+'prefs-help-email-required' => 'អាសយដ្ឋានអ៊ីមែលត្រូវការជាចាំបាច់។',
+'prefs-info' => 'ព័ត៌មានផ្ទាល់​ខ្លួន',
+'prefs-i18n' => 'ភាសា',
+'prefs-signature' => 'ហត្ថលេខា​',
+'prefs-dateformat' => 'ទំរង់កាលបរិច្ឆេទ',
+'prefs-timeoffset' => 'កែប្រែម៉ោង',
+'prefs-advancedediting' => 'ជំរើសថ្នាក់ខ្ពស់',
+'prefs-advancedrc' => 'ជំរើសថ្នាក់ខ្ពស់',
+'prefs-advancedrendering' => 'ជំរើសថ្នាក់ខ្ពស់',
+'prefs-advancedsearchoptions' => 'ជំរើសថ្នាក់ខ្ពស់',
+'prefs-advancedwatchlist' => 'ជំរើសថ្នាក់ខ្ពស់',
+'prefs-display' => 'ជំរើសការបង្ហាញ',
+'prefs-diffs' => 'ភាពខុសគ្នា',
# User rights
-'userrights' => 'ការគ្រប់គ្រងសិទ្ធិអ្នកប្រើប្រាស់', # Not used as normal message but as header for the special page itself
+'userrights' => 'ការគ្រប់គ្រងសិទ្ធិអ្នកប្រើប្រាស់',
'userrights-lookup-user' => 'គ្រប់គ្រងក្រុមអ្នកប្រើប្រាស់',
'userrights-user-editname' => 'បញ្ចូលឈ្មោះអ្នកប្រើ៖',
'editusergroup' => 'កែប្រែក្រុមអ្នកប្រើប្រាស់',
@@ -1416,6 +1442,8 @@ $2',
'right-editprotected' => 'កែប្រែទំព័រដែលបានការពារ (ដោយមិនរំលាយការការពារ)',
'right-editinterface' => 'កែប្រែអន្តរមុខអ្នកប្រើប្រាស់',
'right-editusercssjs' => 'កែប្រែឯកសារ CSS និង JS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
+'right-editusercss' => 'កែប្រែឯកសារ CSS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
+'right-edituserjs' => 'កែប្រែឯកសារ JS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
'right-rollback' => 'ត្រឡប់យ៉ាងរហ័សនូវកំណែប្រែទំព័រវិសេសណាមួយ​ដែលធ្វើឡើងដោយ​អ្នកប្រើប្រាស់ចុងក្រោយគេ។',
'right-markbotedits' => 'ចំនាំកំនែប្រែត្រឡប់ឡើងវិញទាំងឡាយថាជាកំនែប្រែដោយរូបយន្ត',
'right-noratelimit' => 'មិនទទួលរងឥទ្ធិពលពីការដាក់កំហិតណាទាំងអស់',
@@ -1431,6 +1459,7 @@ $2',
'right-userrights-interwiki' => 'កែប្រែសិទ្ធិអ្នកប្រើប្រាស់នៅលើវិគីផ្សេងៗទៀត',
'right-siteadmin' => 'ចាក់សោនិងបើកសោមូលដ្ឋានទិន្នន័យ',
'right-reset-passwords' => 'កំណត់​ឡើង​វិញ​នូវ​លេខ​សម្ងាត់​អ្នក​ប្រើប្រាស់​ដទៃ​ទៀត​',
+'right-sendemail' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ',
# User rights log
'rightslog' => 'កំណត់ហេតុនៃការប្តូរសិទ្ធិអ្នកប្រើប្រាស់',
@@ -1480,6 +1509,15 @@ $2',
'recentchanges-legend' => 'ជម្រើសនានា​សម្រាប់ការបង្ហាញបំលាស់ប្ដូរថ្មីៗ',
'recentchangestext' => 'តាមដានរាល់បំលាស់ប្ដូរថ្មីៗបំផុតចំពោះវិគីនៅលើទំព័រនេះ។',
'recentchanges-feed-description' => 'តាមដាន​បំលាស់ប្ដូរថ្មីៗ​បំផុត​នៃ​វិគី​នេះក្នុង​មតិព័ត៌មាន​នេះ​។',
+'recentchanges-label-legend' => 'កំនត់សំគាល់៖ $1 ។',
+'recentchanges-legend-newpage' => '$1 - ទំព័រថ្មី',
+'recentchanges-label-newpage' => 'ការកែប្រែនេះបានបង្កើតទំព័រថ្មីមួយ',
+'recentchanges-legend-minor' => '$1 - ការកែប្រែតិចតួច',
+'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
+'recentchanges-legend-bot' => '$1 - ការកែប្រែដោយរូបយន្ត',
+'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
+'recentchanges-legend-unpatrolled' => '$1 - ការកែប្រែដែលបានល្បាត',
+'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
'rcnote' => "ខាងក្រោម​នេះ​ជា​{{PLURAL:$1|១បំលាស់ប្ដូរ|'''$1'''បំលាស់ប្ដូរ}}​ចុងក្រោយក្នុងរយៈពេល​{{PLURAL:$2|ថ្ងៃ|'''$2'''ថ្ងៃ}}​ចុងក្រោយគិតត្រឹម$5 $4 ។",
'rcnotefrom' => "ខាងក្រោមនេះជាបំលាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមា '''$1''' បំលាស់ប្ដូរ)។",
'rclistfrom' => 'បង្ហាញបំលាស់ប្ដូរថ្មីៗដែលចាប់ផ្តើមពី $1',
@@ -1508,6 +1546,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'បំលាស់ប្ដូរពាក់ព័ន្ធ',
+'recentchangeslinked-feed' => 'បំលាស់ប្ដូរពាក់ព័ន្ធ',
+'recentchangeslinked-toolbox' => 'បំលាស់ប្ដូរពាក់ព័ន្ធ',
'recentchangeslinked-title' => 'បំលាស់ប្ដូរ​ទាក់ទិននឹង "$1"',
'recentchangeslinked-noresult' => 'គ្មានបំលាស់ប្ដូរ​លើទំព័រ​ដែលត្រូវបានតភ្ជាប់ ក្នុងថេរវេលា​ដែលត្រូវបានផ្តល់ឱ្យ ។',
'recentchangeslinked-summary' => "នេះជាបញ្ជីបំលាស់ប្ដូរនានាដែលត្រូវបានធ្វើឡើងទៅលើទំព័រទាំងឡាយដែលមានតំណភ្ជាប់ពីទំព័រកំណត់មួយ(ឬមានតំណភ្ជាប់ទៅទំព័រដែលមានក្នុងចំណាត់ថ្នាក់ក្រុមកំណត់មួយ) នាពេលថ្មីៗនេះ ។ ទំព័រ​នានាក្នុង[[Special:Watchlist|បញ្ជីតាមដាន​របស់អ្នក]]ត្រូវបានសរសេរជា '''អក្សរដិត''' ។",
@@ -1517,7 +1557,6 @@ $2',
# Upload
'upload' => 'ផ្ទុកឯកសារឡើង',
'uploadbtn' => 'ផ្ទុកឯកសារឡើង',
-'reupload' => 'ផ្ទុកឡើងម្តងទៀត',
'reuploaddesc' => 'ឈប់ផ្ទុកឡើងរួចត្រឡប់ទៅបែបបទផ្ទុកឡើងវិញ។',
'uploadnologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
'uploadnologintext' => 'អ្នកត្រូវតែ [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីមានសិទ្ធិផ្ទុកឯកសារទាំងឡាយឡើង។',
@@ -1578,7 +1617,6 @@ $2',
* ឈ្មោះ​ឯកសារដែលបាន​ផ្ទុកឡើង​ ៖ '''<tt>[[:$1]]</tt>'''
* ឈ្មោះ​ឯកសារ​ដែល​មានស្រាប់​៖ '''<tt>[[:$2]]</tt>'''
សូម​ជ្រើសរើសឈ្មោះ​ផ្សេងទៀត។",
-'fileexists-thumb' => "<center>'''រូបភាពមានស្រេច'''</center>",
'fileexists-thumbnail-yes' => "ឯកសារនេះទំនងជារូបភាពដែលបានបង្រួមទំហំ ''(កូនរូបភាព)''។
[[$1|thumb]]
សូមពិនិត្យមើលឯកសារ '''<tt>[[:$1]]</tt>'''។
@@ -1607,13 +1645,16 @@ $2',
សូមពិនិត្យមើលការកំណត់ស្ដីអំពីការផ្ទុកឯកសារឡើង។',
'uploadscripted' => 'ឯកសារនេះមានកូដHTMLឬស្គ្រីបដែលអាចអោយឧបករណ៍រាវរកវិបសាយមានការយល់ច្រលំ។',
-'uploadcorrupt' => 'ឯកសារ​នេះ​ខូច​ឬ​មានកន្ទុយដែលមិនត្រឹមត្រូវ។ សូម​ពិនិត្យ​មើល​វាឡើងវិញ​ ហើយ​ផ្ទុកឡើង​ម្តងទៀត។',
'uploadvirus' => 'ឯកសារមានមេរោគ!
សេចក្តីលំអិត៖ $1',
+'upload-source' => 'ឯកសារប្រភព',
'sourcefilename' => 'ឈ្មោះឯកសារប្រភព៖',
+'sourceurl' => 'URLប្រភព៖',
'destfilename' => 'ឈ្មោះឯកសារគោលដៅ៖',
'upload-maxfilesize' => 'ទំហំអតិបរមារបស់ឯកសា​៖ $1',
+'upload-description' => 'ពណ៌នា',
+'upload-options' => 'ជម្រើសក្នុងការផ្ទុកឡើង',
'watchthisupload' => 'តាមដាន​ឯកសារ​នេះ',
'filewasdeleted' => 'ឯកសារដែលមានឈ្មោះនេះត្រូវបានដាក់បញ្ចេញមុននេះ ហើយក៏ត្រូវបានគេលុបចេញទៅវិញផងដែរ។​​​​ អ្នកគួរតែពិនិត្យ$1​មុននឹង​បន្តបញ្ចេញ​វាម្តង​ទៀត​។​',
'upload-wasdeleted' => "'''ប្រយ័ត្ន៖ អ្នក​កំពុង​ផ្ទុក​ឡើង​នូវ​ឯកសារ​មួយ​ដែល​ត្រូវ​បានលុបចោល​មុននេះ។'''
@@ -1638,18 +1679,28 @@ MGP # ម៉ាក Pentax
PICT # ផ្សេង​ៗ​
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'ប្រូតូខូលមិនត្រឹមត្រូវ',
-'upload-proto-error-text' => 'ការផ្ទុកឡើងពីចម្ងាយត្រូវការ URL ដែលចាប់ផ្ដើមដោយ <code>http://</code> ឬ <code>ftp://</code>។',
-'upload-file-error' => 'បញ្ហាផ្នែកខាងក្នុង',
-'upload-file-error-text' => 'បញ្ហាផ្នែកខាងក្នុងបានកើតឡើង​ នៅពេលព្យាយាមបង្កើតឯកសារបណ្ដោះអាសន្នមួយ​នៅក្នុងម៉ាស៊ីនបម្រើការ។
+'upload-proto-error' => 'ប្រូតូខូលមិនត្រឹមត្រូវ',
+'upload-proto-error-text' => 'ការផ្ទុកឡើងពីចម្ងាយត្រូវការ URL ដែលចាប់ផ្ដើមដោយ <code>http://</code> ឬ <code>ftp://</code>។',
+'upload-file-error' => 'បញ្ហាផ្នែកខាងក្នុង',
+'upload-file-error-text' => 'បញ្ហាផ្នែកខាងក្នុងបានកើតឡើង​ នៅពេលព្យាយាមបង្កើតឯកសារបណ្ដោះអាសន្នមួយ​នៅក្នុងម៉ាស៊ីនបម្រើការ។
សូមទំនាក់ទំនង[[Special:ListUsers/sysop|អ្នកអភិបាល]]។',
-'upload-misc-error' => 'បញ្ហាក្នុងការផ្ទុកឡើង',
-'upload-misc-error-text' => 'បញ្ហាដែលមិនស្គាល់មួយបានកើតឡើងនៅក្នុងកំឡុងពេលផ្ទុកឡើង។
+'upload-misc-error' => 'បញ្ហាក្នុងការផ្ទុកឡើង',
+'upload-misc-error-text' => 'បញ្ហាដែលមិនស្គាល់មួយបានកើតឡើងនៅក្នុងកំឡុងពេលផ្ទុកឡើង។
ចូរផ្ទៀងផ្ទាត់ថា URL គឺមានសុពលភាពហើយអាចដំណើរការ រួចហើយ​ព្យាយាមម្តងទៀត។
ប្រសិនបើបញ្ហានៅតែកើតឡើង សូមទំនាក់ទំនង[[Special:ListUsers/sysop|អ្នកអភិបាល]]។',
+'upload-too-many-redirects' => 'URLនេះមានតំនភ្ជាប់បញ្ជូនបន្តច្រើនពេកហើយ',
+'upload-unknown-size' => 'មិនដឹងទំហំ',
+'upload-http-error' => 'មានកំហុសHTTPមួយបានកើតឡើង៖ $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'ហាមចូល',
+'img-auth-nofile' => 'គ្មានឯកសារឈ្មោះ "$1"ទេ។',
+
+# HTTP errors
+'http-invalid-url' => 'URLមិនត្រឹមត្រូវ៖ $1',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'មិនអាច ចូលទៅដល់ URL',
@@ -1664,6 +1715,7 @@ PICT # ផ្សេង​ៗ​
អ្នកគួរតែសាកល្បងនៅពេលដែលវិបសាយនេះមិនសូវរវល់។',
'license' => 'អាជ្ញាប័ណ្ណ',
+'license-header' => 'ដាក់​ជា​អាជ្ញាប័ណ្ណ',
'nolicense' => 'គ្មាន',
'license-nopreview' => '(មិនទាន់មានការបង្ហាញការមើលជាមុនទេ)',
'upload_source_url' => ' (URL ត្រឹមត្រូវនិងបើកចំហជាសាធារណៈ)',
@@ -1686,6 +1738,7 @@ PICT # ផ្សេង​ៗ​
'listfiles_count' => 'កំណែ',
# File description page
+'file-anchor-link' => 'ឯកសារ',
'filehist' => 'ប្រវត្តិ​ឯកសារ',
'filehist-help' => "ចុចលើ'''ម៉ោងនិងកាលបរិច្ឆេទ'''ដើម្បីមើលឯកសារដែលបានផ្ទុកឡើងនៅពេលនោះ។",
'filehist-deleteall' => 'លុបចោលទាំងអស់',
@@ -1694,12 +1747,13 @@ PICT # ផ្សេង​ៗ​
'filehist-current' => 'បច្ចុប្បន្ន',
'filehist-datetime' => 'ម៉ោងនិងកាលបរិច្ឆេទ',
'filehist-thumb' => 'កូនរូបភាព',
-'filehist-thumbtext' => 'កូន​រូប​ភាព​​សម្រាប់​កំណែ​កាល​ពី​​ $1',
+'filehist-thumbtext' => 'កូន​រូប​ភាព​​សម្រាប់​កំណែ​ (version) កាល​ពី​​ $1',
'filehist-nothumb' => 'គ្មានកូនរូបភាព',
'filehist-user' => 'អ្នកប្រើប្រាស់',
'filehist-dimensions' => 'វិមាត្រ',
'filehist-filesize' => 'ទំហំឯកសារ',
'filehist-comment' => 'យោបល់',
+'filehist-missing' => 'ឯកសារបាត់បង់',
'imagelinks' => 'តំណភ្ជាប់​​ឯកសារ',
'linkstoimage' => '{{PLURAL:$1|ទំព័រ​|$1 ទំព័រ}} ខាងក្រោម​មានតំណភ្ជាប់មក​ឯកសារនេះ ៖',
'linkstoimage-more' => 'មាន​​{{PLURAL:$1|តំណ​ភ្ជាប់ទំព័រ​}}ច្រើន​ជាង​ $1 មក​កាន់​ឯកសារ​នេះ​។
@@ -1709,15 +1763,14 @@ PICT # ផ្សេង​ៗ​
'morelinkstoimage' => 'មើល [[Special:WhatLinksHere/$1|តំណភ្ជាប់បន្ថែមទៀត]] ដែលតភ្ជាប់មកកាន់ឯកសារនេះ។',
'redirectstofile' => '{{PLURAL:$1|file redirects|$1 ឯកសារ​បញ្ជូនបន្ត}}ដូចតទៅនេះ ត្រូវ​បញ្ជូនបន្ដទៅ​ឯកសារ​នេះ​៖',
'duplicatesoffile' => '{{PLURAL:$1|file is a duplicate|$1 ឯកសារ​ជាច្បាប់ចម្លង}}ដូចតទៅ​នៃ​ឯកសារ​នេះ​ ([[Special:FileDuplicateSearch/$2|ព័ត៌មាន​លំអិត]])​៖',
-'sharedupload' => 'ឯកសារ​នេះ​​បាន​មក​ពី $1 និង​អាច​ត្រូវ​បាន​ប្រើប្រាស់​នៅ​គម្រោង​ដទៃ​ទៀត។', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'សូម​មើល $1 សម្រាប់ព័ត៌មានបន្ថែម​។',
-'shareduploadwiki-desc' => 'ការពណ៌នាអំពី$1របស់វានៅក្នុងថតរួម គឺត្រូវបានបង្ហាញដូចខាងក្រោម។',
-'shareduploadwiki-linktext' => 'ទំព័រពិពណ៌នាអំពីឯកសារ',
-'noimage' => 'គ្មានរូបភាពដែលមានឈ្មោះនេះទេ។ ប៉ុន្តែអ្នកអាច $1 ។',
-'noimage-linktext' => 'ផ្ទុកឯកសារឡើង',
+'sharedupload' => 'ឯកសារ​នេះ​​បាន​មក​ពី $1 និង​អាច​ត្រូវ​បាន​ប្រើប្រាស់​នៅ​គម្រោង​ដទៃ​ទៀត។',
+'sharedupload-desc-there' => 'ឯកសារ​នេះ​មក​ពី ​$1 និង​អាច​ត្រូវ​បាន​ប្រើប្រាស់​ដោយ​គម្រោង​ផ្សេង​ៗ​ដទៃ​ទៀត​។
+សូម​មើល​[ទំព័របរិយាយ​ឯកសារ​ $2] សម្រាប់​ព័ត៌មាន​បន្ថែម​។',
+'filepage-nofile' => 'គ្មានឯកសារ​ដែលមានឈ្មោះនេះទេ។',
+'filepage-nofile-link' => 'គ្មានរូបភាពដែលមានឈ្មោះនេះទេ។ ប៉ុន្តែអ្នកអាច [$1 ផ្ទុក​វា​ឡើង​] ។',
'uploadnewversion-linktext' => 'ផ្ទុកឡើងមួយកំណែថ្មីនៃឯកសារនេះ',
-'shared-repo-from' => 'ពី $1', # $1 is the repository name
-'shared-repo' => 'ឃ្លាំងរួម​', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'ពី $1',
+'shared-repo' => 'ឃ្លាំងរួម​',
# File reversion
'filerevert' => 'ត្រឡប់ $1',
@@ -1768,7 +1821,7 @@ PICT # ផ្សេង​ៗ​
# Random page
'randompage' => 'ទំព័រចៃដន្យ',
-'randompage-nopages' => 'គ្មាន​ទំព័រ​ណាមួយ​ក្នុង​ប្រភេទ "$1" ទេ។',
+'randompage-nopages' => 'គ្មាន​ទំព័រ​ណាមួយ​ក្នុង​{{PLURAL:$2|លំហឈ្មោះ}}នេះ​ទេ៖ "$1" ។',
# Random redirect
'randomredirect' => 'ទំព័របញ្ជូនបន្តចៃដន្យ',
@@ -1780,6 +1833,7 @@ PICT # ផ្សេង​ៗ​
'statistics-header-edits' => 'ស្ថិតិកំណែប្រែ',
'statistics-header-views' => 'មើលស្ថិតិ',
'statistics-header-users' => 'ស្ថិតិអ្នកប្រើប្រាស់',
+'statistics-header-hooks' => 'ស្ថិតិ​ដទៃទៀត​',
'statistics-articles' => 'ទំព័រខ្លឹមសារ',
'statistics-pages' => 'ចំនួនទំព័រសរុប',
'statistics-pages-desc' => 'ទំព័រទាំងអស់នៅក្នុងវិគី រាប់បញ្ចូលទាំងទំព័រពិភាក្សា ទំព័របញ្ជូនបន្ត -ល-',
@@ -1812,8 +1866,8 @@ PICT # ផ្សេង​ៗ​
'brokenredirects' => 'ការបញ្ជូនបន្តដែលខូច',
'brokenredirectstext' => 'ការបញ្ជូនបន្ដដូចតទៅនេះ​សំដៅទៅ​ទំព័រដែលមិនមាន៖',
-'brokenredirects-edit' => '(កែប្រែ)',
-'brokenredirects-delete' => '(លុបចោល)',
+'brokenredirects-edit' => 'កែប្រែ',
+'brokenredirects-delete' => 'លុបចេញ',
'withoutinterwiki' => 'ទំព័រ​គ្មានតំណភ្ជាប់ភាសា',
'withoutinterwiki-summary' => 'ទំព័រខាងក្រោមនេះ​មិនមានតំណភ្ជាប់​ទៅកំណែជាភាសាដទៃទេ។',
@@ -1923,7 +1977,7 @@ PICT # ផ្សេង​ៗ​
# Special:Categories
'categories' => 'ចំណាត់ថ្នាក់ក្រុម',
-'categoriespagetext' => 'ចំណាត់ថ្នាក់ក្រុមខាងក្រោមនេះមានអត្ថបទឬមេឌា។
+'categoriespagetext' => '{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}ខាងក្រោមនេះមានអត្ថបទឬមេឌា។
[[Special:UnusedCategories|ចំណាត់ថ្នាក់ក្រុមមិនប្រើ]]ត្រូវបានបង្ហាញទីនេះ។
សូមមើលផងដែរ [[Special:WantedCategories|ចំណាត់ថ្នាក់ក្រុមដែលគ្រប់គ្នាចង់បាន]]។',
@@ -1932,8 +1986,9 @@ PICT # ផ្សេង​ៗ​
'special-categories-sort-abc' => 'តម្រៀបតាមអក្ខរក្រម',
# Special:DeletedContributions
-'deletedcontributions' => 'ការរួមចំណែកដែលត្រូវបានលុបចោល',
-'deletedcontributions-title' => 'ការរួមចំណែកដែលត្រូវបានលុបចោល',
+'deletedcontributions' => 'ការរួមចំណែកដែលត្រូវបានលុបចោល',
+'deletedcontributions-title' => 'ការរួមចំណែកដែលត្រូវបានលុបចោល',
+'sp-deletedcontributions-contribs' => 'ការរួមចំណែក​',
# Special:LinkSearch
'linksearch' => 'តំណភ្ជាប់ខាង​ក្រៅ​',
@@ -1948,6 +2003,13 @@ PICT # ផ្សេង​ៗ​
'listusersfrom' => 'បង្ហាញអ្នកប្រើប្រាស់ចាប់ផ្តើមពី៖',
'listusers-submit' => 'បង្ហាញ',
'listusers-noresult' => 'មិនមានអ្នកប្រើប្រាស់នៅក្នុងក្រុមនេះទេ។',
+'listusers-blocked' => '(បានរាំងខ្ទប់)',
+
+# Special:ActiveUsers
+'activeusers' => 'បញ្ជីរាយនាមអ្នកប្រើប្រាស់សកម្ម',
+'activeusers-count' => '$1 {{PLURAL:$1|កំនែប្រែ|កំនែប្រែ}}ថ្មីៗ',
+'activeusers-from' => 'បង្ហាញឈ្មោះអ្នកប្រើប្រាស់ផ្ដើមដោយ៖',
+'activeusers-noresult' => 'អ្នកប្រើប្រាស់​រកមិនឃើញ​។​',
# Special:Log/newusers
'newuserlogpage' => 'កំណត់ហេតុនៃការបង្កើតគណនី',
@@ -1958,16 +2020,22 @@ PICT # ផ្សេង​ៗ​
'newuserlog-autocreate-entry' => 'គណនីត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ',
# Special:ListGroupRights
-'listgrouprights' => 'សិទ្ធិនិងក្រុមអ្នកប្រើប្រាស់',
-'listgrouprights-summary' => 'ខាងក្រោមនេះជាបញ្ជីរាយឈ្មោះក្រុមអ្នកប្រើប្រាស់ដែលបានកំណត់ជាមួយនឹងសិទ្ធិរបស់គេនៅលើវិគីនេះ។ មាន[[{{MediaWiki:Listgrouprights-helppage}}|ព័ត៌មានបន្ថែម]] អំពីសិទ្ធិផ្ទាល់ខ្លួន។',
-'listgrouprights-group' => 'ក្រុម',
-'listgrouprights-rights' => 'សិទ្ធិ',
-'listgrouprights-helppage' => 'Help:ក្រុមនិងសិទ្ធិ',
-'listgrouprights-members' => '(បញ្ជីរាយនាមសមាជិក)',
-'listgrouprights-addgroup' => 'អាចបន្ថែម{{PLURAL:$2|ក្រុម|ក្រុម}}៖ $1',
-'listgrouprights-removegroup' => 'អាចដកចេញ {{PLURAL:$2|group|ក្រុម}}​៖ $1',
-'listgrouprights-addgroup-all' => 'អាចបន្ថែមគ្រប់ក្រុម',
-'listgrouprights-removegroup-all' => 'អាចដកចេញគ្រប់ក្រុម',
+'listgrouprights' => 'សិទ្ធិនិងក្រុមអ្នកប្រើប្រាស់',
+'listgrouprights-summary' => 'ខាងក្រោមនេះជាបញ្ជីរាយឈ្មោះក្រុមអ្នកប្រើប្រាស់ដែលបានកំណត់ជាមួយនឹងសិទ្ធិរបស់គេនៅលើវិគីនេះ។ មាន[[{{MediaWiki:Listgrouprights-helppage}}|ព័ត៌មានបន្ថែម]] អំពីសិទ្ធិផ្ទាល់ខ្លួន។',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">សិទ្ធិ​ដែល​បាន​ផ្តល់​ជូន​</span>
+* <span class="listgrouprights-revoked">សិទ្ធិ​ដែល​បាន​ដក​ហូត​</span>',
+'listgrouprights-group' => 'ក្រុម',
+'listgrouprights-rights' => 'សិទ្ធិ',
+'listgrouprights-helppage' => 'Help:ក្រុមនិងសិទ្ធិ',
+'listgrouprights-members' => '(បញ្ជីរាយនាមសមាជិក)',
+'listgrouprights-addgroup' => 'អាចបន្ថែម{{PLURAL:$2|ក្រុម|ក្រុម}}៖ $1',
+'listgrouprights-removegroup' => 'អាចដកចេញ {{PLURAL:$2|group|ក្រុម}}​៖ $1',
+'listgrouprights-addgroup-all' => 'អាចបន្ថែមគ្រប់ក្រុម',
+'listgrouprights-removegroup-all' => 'អាចដកចេញគ្រប់ក្រុម',
+'listgrouprights-addgroup-self' => 'បន្ថែម{{PLURAL:$2|ក្រុម}}ទៅ​គណនី​ផ្ទាល់ខ្លួន​៖ $1',
+'listgrouprights-removegroup-self' => 'យក​ចេញ​{{PLURAL:$2|ក្រុម}}ពី​​គណនី​ផ្ទាល់ខ្លួន​៖ $1',
+'listgrouprights-addgroup-self-all' => 'បន្ថែម​ក្រុម​ទាំងអស់​ទៅ​គណនី​ផ្ទាល់ខ្លួន​',
+'listgrouprights-removegroup-self-all' => 'យក​ចេញ​​ក្រុម​ទាំងអស់​ពី​​គណនី​ផ្ទាល់ខ្លួន​',
# E-mail user
'mailnologin' => 'មិនមានអាសយដ្ឋានផ្ញើទេ',
@@ -2041,29 +2109,25 @@ PICT # ផ្សេង​ៗ​
'enotif_body' => 'ជូនចំពោះ $WATCHINGUSERNAME ជាទីរាប់អាន,
-ទំព័រឈ្មោះ $PAGETITLE នៅក្នុង {{SITENAME}} ត្រូវបាន $CHANGEDORCREATED នៅថ្ងៃ $PAGEEDITDATE ដោយ $PAGEEDITOR។ សូមចូលមើលសម្រាប់​កំណែបច្ចុប្បន្ននៅ $PAGETITLE_URL ។
+ទំព័រ $PAGETITLE នៃ {{SITENAME}} ត្រូវបាន $CHANGEDORCREATED ថ្ងៃ $PAGEEDITDATE ដោយ $PAGEEDITOR។ សូមមើល $PAGETITLE_URL សម្រាប់​កំណែបច្ចុប្បន្ន។
$NEWPAGE
-ចំណារពន្យល់របស់អ្នកកែប្រែ ៖ $PAGESUMMARY $PAGEMINOREDIT
+សេចក្ដីសង្ខេប​នៃអ្នកកែប្រែ៖ $PAGESUMMARY $PAGEMINOREDIT
-ទាក់ទង​អ្នកកែប្រែ ៖
+ទាក់ទង​អ្នកកែប្រែ៖
+អ៊ីមែល៖ $PAGEEDITOR_EMAIL
+វិគី៖ $PAGEEDITOR_WIKI
-អ៊ីមែល ៖ $PAGEEDITOR_EMAIL
+នឹងមិនមាន​ការផ្ដល់ដំណឹង​ជាលាយលក្សណ៍អក្សរ​ផ្សេងទៀតទេ លើកលែងតែ​អ្នកចូលមើល​ទំព័រនេះ។ អ្នកក៏អាចធ្វើ​ឱ្យ​ការផ្តល់ដំណឹង​ត្រឡប់ទៅលើកទីសូន្យ​ចំពោះគ្រប់ទំព័រ​នៃ​បញ្ជីតាមដាន​របស់អ្នក។
-វិគី ៖ $PAGEEDITOR_WIKI
-
-គ្មាន​ការផ្ដល់ដំណឹង​ជាលាយលក្សណ៍អក្សរ​ផ្សេងទៀតទេពេលមានការកែប្រែបន្ថែមទៀតទេ លើកលែងតែ​លោកអ្នកចូលមើល​ទំព័រនេះសិន។
-
-លោកអ្នកក៏អាចធ្វើ​ឱ្យ​ការផ្តល់ដំណឹង​ត្រឡប់ទៅលើកទីសូន្យ​ចំពោះគ្រប់ទំព័រ​នៃ​បញ្ជីតាមដាន​របស់អ្នក។
-
-ពីប្រព័ន្ធផ្តល់ដំណឹង {{SITENAME}} ដ៏ស្និទ្ធស្នាល​របស់អ្នក
+ប្រព័ន្ធផ្តល់ដំណឹង {{SITENAME}} ដ៏ស្និទ្ធស្នាល​របស់អ្នក
--
ដើម្បីផ្លាស់ប្តូរ ការកំណត់បញ្ជីតាមដាន, សូមចូលមើល
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
-ប្រតិកម្ម និង ជំនួយបន្ថែម ៖
+មតិ​យោបល់​និងជំនួយបន្ថែម ៖
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2075,10 +2139,11 @@ $NEWPAGE
'exblank' => 'ទំព័រទទេ',
'delete-confirm' => 'លុប"$1"ចោល',
'delete-legend' => 'លុបចោល',
-'historywarning' => "​'''ប្រយ័ត្ន៖ ទំព័រដែលអ្នកហៀបនឹងលុបចោលមានប្រវត្តិ​៖",
+'historywarning' => 'ប្រយ័ត្ន​៖ ទំព័រដែលអ្នកទំនងជានឹងលុបមានប្រវត្តិ​៖',
'confirmdeletetext' => 'អ្នកប្រុងនឹងលុបចោលទាំងស្រុង នូវទំព័រមួយដោយរួមបញ្ចូលទាំងប្រវត្តិកែប្រែរបស់វាផង។
សូមអ្នកអះអាងថា អ្នកពិតជាមានចេតនាធ្វើបែបហ្នឹង និងថាអ្នកបានយល់ច្បាស់ពីផលវិបាកទាំងឡាយដែលអាចកើតមាន និង​សូមអះអាងថា អ្នកធ្វើស្របតាម [[{{MediaWiki:Policy-url}}|គោលការណ៍]]។',
'actioncomplete' => 'សកម្មភាពរួចរាល់ជាស្ថាពរ',
+'actionfailed' => 'សកម្មភាព​បរាជ័យ',
'deletedtext' => '"<nowiki>$1</nowiki>"ត្រូវបានលុបចោលរួចហើយ។
សូមមើល$2សំរាប់បញ្ជីនៃការលុបចោលនាពេលថ្មីៗ។',
@@ -2116,8 +2181,8 @@ $NEWPAGE
មាននរណាម្នាក់បានកែប្រែឬត្រឡប់ទំព័រនោះរួចហើយ។
កំណែប្រែចុងក្រោយរបស់ទំព័រនេះធ្វើឡើងដោយអ្នកប្រើឈ្មោះ [[User:$3|$3]] ([[User talk:$3|ការពិភាក្សា]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])។',
-'editcomment' => "ចំណារពន្យល់ពីការកែប្រែគឺ៖ \"''\$1''\"។", # only shown if there is an edit comment
-'revertpage' => 'បានត្រឡប់កំណែប្រែដោយ[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ទៅកំណែប្រែចុងក្រោយដោយ [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "ចំណារពន្យល់ពីការកែប្រែគឺ៖ \"''\$1''\"។",
+'revertpage' => 'បានត្រឡប់កំណែប្រែដោយ[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ទៅកំណែប្រែចុងក្រោយដោយ [[User:$1|$1]]',
'rollback-success' => 'កំណែ​ដែល​ត្រូវ​បាន​ត្រឡប់​ដោយ​ $1។
បាន​ផ្លាស់​ប្ដូរ​ទៅ​កំណែ​ចុង​ក្រោយ​វិញ​ដោយ $2។',
@@ -2137,7 +2202,6 @@ $NEWPAGE
'protectexpiry' => 'ផុតកំណត់៖',
'protect_expiry_invalid' => 'ពេលវេលាផុតកំណត់ មិនត្រឹមត្រូវ។',
'protect_expiry_old' => 'ពេលវេលាផុតកំណត់ ឋិតក្នុងអតីតកាល។',
-'protect-unchain' => 'ឈប់ហាមឃាត់ការអនុញ្ញាតប្ដូរទីតាំង',
'protect-text' => "លោកអ្នកអាចមើលនិងផ្លាស់ប្ដូរកម្រិតការពារទីនេះចំពោះទំព័រ'''<nowiki>$1</nowiki>'''។",
'protect-locked-blocked' => "អ្នកមិនអាចប្តូរកម្រិតការពារនៅក្នុងកំលុងពេលដែលត្រូវបានគេរារាំង។ នេះគឺជាការរៀបចំថ្មីៗសម្រាប់ទំព័រ'''$1''':",
'protect-locked-dblock' => "កម្រិត​នៃ​ការ​ការពារ​មិន​អាច​ផ្លាស់​ប្ដូរ​បាន​ទេ​ ដោយសារ​មាន​ជាប់​​សោ​មូលដ្នាន​ទិន្នន័យសកម្ម​។
@@ -2167,7 +2231,7 @@ $NEWPAGE
** សង្រ្គាមនៃការកែប្រែដែលនាំឲខូចប្រយោជន៍
** ទំព័រដែលមានចរាចរកម្រិតខ្ពស់',
'protect-edit-reasonlist' => 'មូលហេតុដែលគេការពារមិនឱ្យមានការកែប្រែ',
-'protect-expiry-options' => '១ ម៉ោង:1 hour,១ ថ្ងៃ:1 day,១ សប្ដាហ៍:1 week,២ សប្ដាហ៍:2 weeks,១ ខែ:1 month,៣ ខែ:3 months,៦ ខែ:6 months,១ ឆ្នាំ:1 year,គ្មានកំណត់:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '១ ម៉ោង:1 hour,១ ថ្ងៃ:1 day,១ សប្ដាហ៍:1 week,២ សប្ដាហ៍:2 weeks,១ ខែ:1 month,៣ ខែ:3 months,៦ ខែ:6 months,១ ឆ្នាំ:1 year,គ្មានកំណត់:infinite',
'restriction-type' => 'ការអនុញ្ញាត៖',
'restriction-level' => 'កម្រិត​នៃ​ការដាក់កំហិត ៖',
'minimum-size' => 'ទំហំអប្បបរមា',
@@ -2212,6 +2276,7 @@ $NEWPAGE
'undelete-nodiff' => 'រកមិនឃើញកំណែមុនទេ។',
'undeletebtn' => 'ស្ដារឡើងវិញ',
'undeletelink' => 'មើល​/​ស្តារឡើងវិញ',
+'undeleteviewlink' => 'មើល',
'undeletereset' => 'ធ្វើឱ្យដូចដើមវិញ',
'undeleteinvert' => 'ក្រៅពីនោះ',
'undeletecomment' => 'យោបល់៖',
@@ -2252,7 +2317,7 @@ $1',
'contributions-title' => 'ការរួមចំណែករបស់អ្នកប្រើប្រាស់ $1',
'mycontris' => 'ការរួមចំណែក',
'contribsub2' => 'សម្រាប់ $1 ($2)',
-'nocontribs' => 'គ្មានការផ្លាស់ប្តូរត្រូវបានឃើញដូចនឹងលក្ខណៈវិនិច្ឆ័យទាំងនេះ។', # Optional parameter: $1 is the user name
+'nocontribs' => 'គ្មានការផ្លាស់ប្តូរត្រូវបានឃើញដូចនឹងលក្ខណៈវិនិច្ឆ័យទាំងនេះ។',
'uctop' => '(ទាន់សម័យ)',
'month' => 'ខែ៖',
'year' => 'ឆ្នាំ៖',
@@ -2261,7 +2326,10 @@ $1',
'sp-contributions-newbies-sub' => 'ចំពោះគណនីថ្មីៗ',
'sp-contributions-newbies-title' => 'ការរួមចំណែករបស់អ្នកប្រើប្រាស់ចំពោះគណនីថ្មី',
'sp-contributions-blocklog' => 'កំណត់ហេតុនៃការហាមឃាត់',
+'sp-contributions-deleted' => 'ការរួមចំណែកដែលត្រូវបានលុប',
'sp-contributions-logs' => 'កំណត់​ហេតុ​',
+'sp-contributions-talk' => 'ការពិភាក្សា',
+'sp-contributions-userrights' => 'ការគ្រប់គ្រងសិទ្ធិអ្នកប្រើប្រាស់',
'sp-contributions-search' => 'ស្វែងរកការរួមចំណែក',
'sp-contributions-username' => 'អាសយដ្ឋាន IP ឬឈ្មោះអ្នកប្រើ៖',
'sp-contributions-submit' => 'ស្វែងរក',
@@ -2309,7 +2377,7 @@ $1',
'ipbemailban' => 'ការពារអ្នកប្រើប្រាស់ពីការផ្ញើរអ៊ីមែល',
'ipbsubmit' => 'ហាមឃាត់អ្នកប្រើប្រាស់នេះ',
'ipbother' => 'រយៈពេលផ្សេងទៀត៖',
-'ipboptions' => '២ម៉ោង:2 hours,១ថ្ងៃ:1 day,៣ថ្ងៃ:3 days,១សប្តាហ៍:1 week,២សប្តាហ៍:2 weeks,១ខែ:1 month,៣ខែ:3 months,៦ខែ:6 months,១ឆ្នាំ:1 year,គ្មានកំណត់:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '២ម៉ោង:2 hours,១ថ្ងៃ:1 day,៣ថ្ងៃ:3 days,១សប្តាហ៍:1 week,២សប្តាហ៍:2 weeks,១ខែ:1 month,៣ខែ:3 months,៦ខែ:6 months,១ឆ្នាំ:1 year,គ្មានកំណត់:infinite',
'ipbotheroption' => 'ផ្សេងៗទៀត',
'ipbotherreason' => 'មូលហេតុ(ផ្សេងទៀតឬបន្ថែម)៖',
'ipbhidename' => 'លាក់​ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​ពី​កំណែ​ប្រែ​នឹង​បញ្ជី​',
@@ -2337,7 +2405,7 @@ $1',
'ipblocklist-submit' => 'ស្វែងរក',
'blocklistline' => '$1, $2 បានហាមឃាត់ $3 (រយៈពេល$4)',
'infiniteblock' => 'គ្មានកំណត់',
-'expiringblock' => 'ផុតកំណត់ $1',
+'expiringblock' => 'ផុតកំណត់ នៅថ្ងៃ $1 ម៉ោង $2',
'anononlyblock' => 'សម្រាប់តែអនាមិកជនប៉ុណ្ណោះ',
'noautoblockblock' => 'ការហាមឃាត់ដោយស្វ័យប្រវត្តិមិនត្រូវបានអនុញ្ញាតទេ',
'createaccountblock' => 'ការបង្កើតគណនីត្រូវបានហាមឃាត់',
@@ -2351,7 +2419,6 @@ $1',
'contribslink' => 'ការរួមចំណែក',
'autoblocker' => 'អ្នកបានត្រូវបានហាមឃាត់ដោយស្វ័យប្រវត្តិ ពីព្រោះអាសយដ្ឋានIPរបស់អ្នកត្រូវបានប្រើប្រាស់ដោយ"[[User:$1|$1]]"។ មូលហេតុលើកឡើងចំពោះការហាមឃាត់$1គឺ៖ "$2"',
'blocklogpage' => 'កំណត់ហេតុនៃការហាមឃាត់',
-'blocklog-fulllog' => 'កំណត់ហេតុនៃការហាមឃាត់ពេញលេញ',
'blocklogentry' => 'បានហាមឃាត់ [[$1]]​ដោយរយៈពេលផុតកំណត់$2 $3',
'blocklogtext' => 'នេះជាកំណត់ហេតុនៃការហាមឃាត់និងឈប់ហាមឃាត់អ្នកប្រើប្រាស់។ អាសយដ្ឋានIPដែលត្រូវបានហាមឃាត់ដោយស្វ័យប្រវត្តិមិនត្រូវបានដាក់ក្នុងបញ្ជីនេះទេ។ សូមមើល[[Special:IPBlockList|បញ្ជីនៃការហាមឃាត់IP]]ចំពោះបញ្ជីនៃហាមឃាត់នាថ្មីៗ។',
'unblocklogentry' => 'បានឈប់ហាមឃាត់ $1',
@@ -2404,9 +2471,9 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'databasenotlocked' => 'មូលដ្ឋានទិន្នន័យ មិនត្រូវបានចាក់សោ។',
# Move page
-'move-page' => 'ប្តូរទីតាំង $1',
-'move-page-legend' => 'ប្តូរទីតាំងទំព័រ',
-'movepagetext' => "ការប្រើប្រាស់​ទម្រង់​ខាងក្រោម​នឹង​ប្តូរ​ឈ្មោះ​ទំព័រ ប្តូរទីតាំង​គ្រប់​ប្រវត្តិ​របស់​វា​ទៅ​ឈ្មោះថ្មី​។
+'move-page' => 'ប្តូរទីតាំង $1',
+'move-page-legend' => 'ប្តូរទីតាំងទំព័រ',
+'movepagetext' => "ការប្រើប្រាស់​ទម្រង់​ខាងក្រោម​នឹង​ប្តូរ​ឈ្មោះ​ទំព័រ ប្តូរទីតាំង​គ្រប់​ប្រវត្តិ​របស់​វា​ទៅ​ឈ្មោះថ្មី​។
ចំណងជើង​ចាស់​នឹង​ក្លាយជា​ទំព័រ​ប្តូរទិសទៅ​ចំណងជើងថ្មី​។
តំណភ្ជាប់​ទៅ​ចំណងជើង នៃ​ទំព័រចាស់​នឹង​មិន​បាន​ត្រូវ​ផ្លាស់ប្តូរ; សូម​ពិនិត្យមើល ការប្តូរទិស មិនបានបង្កើត ទំព័រប្តូរទិសទ្វេ ឬ ទំព័រប្តូរទិសបាក់ ។
អ្នកត្រូវតែធានាប្រាកដ ថា​តំណភ្ជាប់ទាំងនោះ បន្តសំដៅ​ទៅ​គោលដៅបានសន្មត​។
@@ -2415,63 +2482,65 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'''ប្រយ័ត្ន!'''
វាអាចជា បំលាស់ប្តូរដល់ឫសគល់ និង​មិននឹកស្មានជាមុន ចំពោះ​ទំព័រប្រជាប្រិយ​។ អ្នកត្រូវតែ​ដឹងប្រាកដ​អំពី​ផលវិបាកទាំងអស់ មុននឹង​បន្តទង្វើនេះ​។",
-'movepagetalktext' => "ទំព័រសហពិភាក្សាបើមាន នឹងត្រូវបានប្តូរទៅឈ្មោះ​ថ្មី​ជាមួយគ្នា​ដោយ​ស្វ័យប្រវត្តិ '''លើកលែងតែ៖'''
+'movepagetalktext' => "ទំព័រសហពិភាក្សាបើមាន នឹងត្រូវបានប្តូរទៅឈ្មោះ​ថ្មី​ជាមួយគ្នា​ដោយ​ស្វ័យប្រវត្តិ '''លើកលែងតែ៖'''
*ទំព័រពិភាក្សាមិនទទេនិងមានរួចរាល់ក្រោមឈ្មោះថ្មី ឬ
*អ្នក​ដោះប្រអប់ធីក​ខាងក្រោម។
ក្នុង​ករណី​ទាំង​នោះ អ្នក​នឹង​ត្រូវតែ​ប្តូរឈ្មោះ​ទំព័រ​ឬ​បញ្ចូលរួមគ្នា​បើ​អ្នក​ចង់។",
-'movearticle' => 'ប្ដូរទីតាំងទំព័រ៖',
-'movenologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
-'movenologintext' => 'អ្នក​ត្រូវតែ​ជា​អ្នកប្រើប្រាស់​ដែល​បាន​ចុះឈ្មោះ ហើយបាន [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីប្ដូរទីតាំងទំព័រមួយ។',
-'movenotallowed' => 'អ្នកមិនត្រូវបាន​អនុញ្ញាត​ឱ្យ​ប្តូរទីតាំងទំព័រ​ទេ។',
-'movenotallowedfile' => 'អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងឯកសារនានាទេ។',
-'cant-move-user-page' => 'អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យប្ដូរទីតាំងទំព័រអ្នកប្រើប្រាស់នានា(ដាច់ពីអនុទំព័ររបស់វា)ទេ។',
-'cant-move-to-user-page' => 'អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងទំព័រមួយទៅកាន់ទំព័រអ្នកប្រើប្រាស់មួយទេ (លើកលែងតែទៅកាន់ទំព័ររងមួយ)។',
-'newtitle' => 'ទៅចំណងជើងថ្មី៖',
-'move-watch' => 'តាមដានទំព័រនេះ',
-'movepagebtn' => 'ប្ដូរទីតាំង',
-'pagemovedsub' => 'ប្ដូរទីតាំងដោយជោគជ័យ',
-'movepage-moved' => '\'\'\'"$1"ត្រូវបានប្តូរទីតាំងទៅ"$2"\'\'\'ហើយ', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'movepage-moved-redirect' => 'ការបញ្ជូនបន្តត្រូវបានបង្កើត។',
-'movepage-moved-noredirect' => 'ការបង្កើតតំនបញ្ជូនបន្តត្រូវបានលុបចោល។',
-'articleexists' => 'ទំព័រដែលមានឈ្មោះបែបនេះមានរួចហើយ ឬ ឈ្មោះដែលអ្នកបានជ្រើសរើសមិនត្រឹមត្រូវ។
+'movearticle' => 'ប្ដូរទីតាំងទំព័រ៖',
+'movenologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
+'movenologintext' => 'អ្នក​ត្រូវតែ​ជា​អ្នកប្រើប្រាស់​ដែល​បាន​ចុះឈ្មោះ ហើយបាន [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីប្ដូរទីតាំងទំព័រមួយ។',
+'movenotallowed' => 'អ្នកមិនត្រូវបាន​អនុញ្ញាត​ឱ្យ​ប្តូរទីតាំងទំព័រ​ទេ។',
+'movenotallowedfile' => 'អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងឯកសារនានាទេ។',
+'cant-move-user-page' => 'អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យប្ដូរទីតាំងទំព័រអ្នកប្រើប្រាស់នានា(ដាច់ពីអនុទំព័ររបស់វា)ទេ។',
+'cant-move-to-user-page' => 'អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងទំព័រមួយទៅកាន់ទំព័រអ្នកប្រើប្រាស់មួយទេ (លើកលែងតែទៅកាន់ទំព័ររងមួយ)។',
+'newtitle' => 'ទៅចំណងជើងថ្មី៖',
+'move-watch' => 'តាមដានទំព័រនេះ',
+'movepagebtn' => 'ប្ដូរទីតាំង',
+'pagemovedsub' => 'ប្ដូរទីតាំងដោយជោគជ័យ',
+'movepage-moved' => '\'\'\'"$1"ត្រូវបានប្តូរទីតាំងទៅ"$2"\'\'\'ហើយ',
+'movepage-moved-redirect' => 'ការបញ្ជូនបន្តត្រូវបានបង្កើត។',
+'movepage-moved-noredirect' => 'ការបង្កើតតំនបញ្ជូនបន្តត្រូវបានលុបចោល។',
+'articleexists' => 'ទំព័រដែលមានឈ្មោះបែបនេះមានរួចហើយ ឬ ឈ្មោះដែលអ្នកបានជ្រើសរើសមិនត្រឹមត្រូវ។
សូមជ្រើសរើសឈ្មោះមួយផ្សេងទៀត។',
-'cantmove-titleprotected' => 'អ្នកមិនអាច​ប្តូទីតាំង ទំព័រ​ ទៅទីតាំងនេះ, ព្រោះ ចំណងជើងថ្មី បានត្រូវការពារ ចំពោះការបង្កើតវា',
-'talkexists' => "'''ទំព័រ ខ្លួនវា បានត្រូវប្ដូរទីតាំង ដោយជោគជ័យ, ប៉ុន្តែ ទំព័រពិភាក្សា មិនអាចត្រូវបាន ប្ដូរទីតាំង ព្រោះ នៅមាន មួយទំព័រពិភាក្សា នៅ ចំណងជើងថ្មី ។ សូម បញ្ចូលរួមគ្នា ពួកវា ដោយដៃ ។'''",
-'movedto' => 'បានប្ដូរទីតាំងទៅ',
-'movetalk' => 'ប្ដូរទីតាំងទំព័រសហពិភាក្សា',
-'move-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង (ទៅ $1)',
-'move-talk-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង​នៃ​ទំព័រ​ពិភាក្សា (ទៅ $1)',
-'movepage-page-exists' => 'ទំព័រ $1 មាន​រួច​ជា​ស្រេច​ហើយ​និង​មិន​អាច​សរសេរ​ជាន់​ពី​លើ​ដោយ​ស្វ័យប្រវត្តិ​បាន​ទេ​។',
-'movepage-page-moved' => 'ទំព័រ$1ត្រូវបានប្តូរទីតាំងទៅកាន់$2ហើយ។',
-'movepage-page-unmoved' => 'ទំព័រ$1មិនអាចប្តូរទីតាំងទៅ$2បានទេ។',
-'1movedto2' => 'បានប្ដូរទីតាំង [[$1]] ទៅ [[$2]]',
-'1movedto2_redir' => 'ទំព័រ [[$1]] ត្រូវបានប្តូរទីតាំងទៅ [[$2]] តាមរយៈការបញ្ជូនបន្ត។',
-'move-redirect-suppressed' => 'តំនបញ្ជូនបន្តត្រូវបានលុបចោល',
-'movelogpage' => 'កំណត់ហេតុនៃការប្ដូរទីតាំង',
-'movelogpagetext' => 'ខាងក្រោមនេះជាបញ្ជីនៃទំព័រដែលត្រូវបានប្តូរទីតាំង។',
-'movesubpage' => '{{PLURAL:$1|ទំព័ររង|ទំព័ររង}}',
-'movesubpagetext' => 'ទំព័រនេះមាន$1{{PLURAL:$1|ទំព័ររង|ទំព័ររង}}ដូចខាងក្រោម',
-'movenosubpage' => 'ទំព័រនេះគ្មានទំព័ររងទេ។',
-'movereason' => 'មូលហេតុ៖',
-'revertmove' => 'ត្រឡប់',
-'delete_and_move' => 'លុបនិងប្តូរទីតាំង',
-'delete_and_move_text' => '==ការលុបជាចាំបាច់==
+'cantmove-titleprotected' => 'អ្នកមិនអាច​ប្តូទីតាំង ទំព័រ​ ទៅទីតាំងនេះ, ព្រោះ ចំណងជើងថ្មី បានត្រូវការពារ ចំពោះការបង្កើតវា',
+'talkexists' => "'''ទំព័រ ខ្លួនវា បានត្រូវប្ដូរទីតាំង ដោយជោគជ័យ, ប៉ុន្តែ ទំព័រពិភាក្សា មិនអាចត្រូវបាន ប្ដូរទីតាំង ព្រោះ នៅមាន មួយទំព័រពិភាក្សា នៅ ចំណងជើងថ្មី ។ សូម បញ្ចូលរួមគ្នា ពួកវា ដោយដៃ ។'''",
+'movedto' => 'បានប្ដូរទីតាំងទៅ',
+'movetalk' => 'ប្ដូរទីតាំងទំព័រសហពិភាក្សា',
+'move-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង (ទៅ $1)',
+'move-talk-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង​នៃ​ទំព័រ​ពិភាក្សា (ទៅ $1)',
+'movepage-page-exists' => 'ទំព័រ $1 មាន​រួច​ជា​ស្រេច​ហើយ​និង​មិន​អាច​សរសេរ​ជាន់​ពី​លើ​ដោយ​ស្វ័យប្រវត្តិ​បាន​ទេ​។',
+'movepage-page-moved' => 'ទំព័រ$1ត្រូវបានប្តូរទីតាំងទៅកាន់$2ហើយ។',
+'movepage-page-unmoved' => 'ទំព័រ$1មិនអាចប្តូរទីតាំងទៅ$2បានទេ។',
+'1movedto2' => 'បានប្ដូរទីតាំង [[$1]] ទៅ [[$2]]',
+'1movedto2_redir' => 'ទំព័រ [[$1]] ត្រូវបានប្តូរទីតាំងទៅ [[$2]] តាមរយៈការបញ្ជូនបន្ត។',
+'move-redirect-suppressed' => 'តំនបញ្ជូនបន្តត្រូវបានលុបចោល',
+'movelogpage' => 'កំណត់ហេតុនៃការប្ដូរទីតាំង',
+'movelogpagetext' => 'ខាងក្រោមនេះជាបញ្ជីនៃទំព័រដែលត្រូវបានប្តូរទីតាំង។',
+'movesubpage' => '{{PLURAL:$1|ទំព័ររង|ទំព័ររង}}',
+'movesubpagetext' => 'ទំព័រនេះមាន$1{{PLURAL:$1|ទំព័ររង|ទំព័ររង}}ដូចខាងក្រោម',
+'movenosubpage' => 'ទំព័រនេះគ្មានទំព័ររងទេ។',
+'movereason' => 'មូលហេតុ៖',
+'revertmove' => 'ត្រឡប់',
+'delete_and_move' => 'លុបនិងប្តូរទីតាំង',
+'delete_and_move_text' => '==ការលុបជាចាំបាច់==
"[[:$1]]"ដែលជាទីតាំងទំព័រត្រូវបញ្ជូនទៅ មានរួចជាស្រេចហើយ។
តើអ្នកចង់លុបវាដើម្បីជាវិធីសម្រាប់ប្តូរទីតាំងទេ?',
-'delete_and_move_confirm' => 'យល់ព្រម​លុប​ទំព័រ​នេះ',
-'delete_and_move_reason' => 'បានលុបដើម្បីផ្លាស់ប្តូរទីតាំង',
-'selfmove' => 'ចំណងជើងប្រភពនិងចំណងជើងគោលដៅគឺតែមួយ។
+'delete_and_move_confirm' => 'យល់ព្រម​លុប​ទំព័រ​នេះ',
+'delete_and_move_reason' => 'បានលុបដើម្បីផ្លាស់ប្តូរទីតាំង',
+'selfmove' => 'ចំណងជើងប្រភពនិងចំណងជើងគោលដៅគឺតែមួយ។
មិនអាចប្ដូរទីតាំងទំព័រមួយទៅលើខ្លួនវាបានទេ។',
-'immobile-source-namespace' => 'មិនអាចប្តូរទីតាំងទំព័រក្នុងលំហឈ្មោះ "$1" បានទេ',
-'immobile-target-namespace' => 'មិនអាចប្តូរទីតាំងទំព័រទៅលំហឈ្មោះ "$1" បានទេ',
-'immobile-source-page' => 'ទំព័រនេះមិនអាចប្ដូរទីតាំងបានទេ។',
-'immobile-target-page' => 'មិនអាចប្ដូរទីតាំងទៅកាន់ចំណងជើងគោលដៅនោះបានទេ។',
-'imagenocrossnamespace' => 'មិន​អាច​ផ្លាស់​ទី​តាំង​ឯកសារ​ទៅ​កាន់​លំហ​ឈ្មោះ​ដែល​មិន​មែន​ជា​ឯកសារ​',
-'imageinvalidfilename' => 'ឈ្មោះឯកសារគោលដៅមិនត្រឹមត្រូវ',
-'fix-double-redirects' => 'បន្ទាន់សម័យនូវរាល់ការបញ្ជូនបន្តដែលសំដៅទៅរកចំណងជើងដើម',
-'move-leave-redirect' => 'បន្សល់ទុកតំនបញ្ជូនបន្តនៅទំព័រចាស់',
+'immobile-source-namespace' => 'មិនអាចប្តូរទីតាំងទំព័រក្នុងលំហឈ្មោះ "$1" បានទេ',
+'immobile-target-namespace' => 'មិនអាចប្តូរទីតាំងទំព័រទៅលំហឈ្មោះ "$1" បានទេ',
+'immobile-source-page' => 'ទំព័រនេះមិនអាចប្ដូរទីតាំងបានទេ។',
+'immobile-target-page' => 'មិនអាចប្ដូរទីតាំងទៅកាន់ចំណងជើងគោលដៅនោះបានទេ។',
+'imagenocrossnamespace' => 'មិន​អាច​ផ្លាស់​ទី​តាំង​ឯកសារ​ទៅ​កាន់​លំហ​ឈ្មោះ​ដែល​មិន​មែន​ជា​ឯកសារ​',
+'imageinvalidfilename' => 'ឈ្មោះឯកសារគោលដៅមិនត្រឹមត្រូវ',
+'fix-double-redirects' => 'បន្ទាន់សម័យនូវរាល់ការបញ្ជូនបន្តដែលសំដៅទៅរកចំណងជើងដើម',
+'move-leave-redirect' => 'បន្សល់ទុកតំនបញ្ជូនបន្តនៅទំព័រចាស់',
+'protectedpagemovewarning' => "'''ប្រយ័ត្ន៖''' ទំព័រនេះ​ត្រូវបានចាក់សោ។ ដូច្នេះ​មានតែ​អ្នកប្រើប្រាស់​ដែល​មាន​អភ័យឯកសិទ្ឋិជាអភិបាលប៉ុណ្ណោះដែលអាចប្តូរទីតាំងវា។",
+'semiprotectedpagemovewarning' => "'''សំគាល់៖''' ទំព័រនេះ​បានត្រូវ​ចាក់សោ។ ដូច្នេះ​មានតែអ្នកប្រើប្រាស់​ដែលបានចុះឈ្មោះ​ប៉ុណ្ណោះដែលអាចប្ដូរទីតាំងវាបាន។",
# Export
'export' => 'នាំទំព័រចេញ',
@@ -2491,13 +2560,18 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'export-templates' => 'រួមទាំងទំព័រគំរូ',
# Namespace 8 related
-'allmessages' => 'សាររបស់ប្រព័ន្ធ',
-'allmessagesname' => 'ឈ្មោះ',
-'allmessagesdefault' => 'អត្ថបទលំនាំដើម',
-'allmessagescurrent' => 'អត្ថបទបច្ចុប្បន្ន',
-'allmessagesnotsupportedDB' => "ទំព័រនេះមិនអាចប្រើប្រាស់បានទេព្រោះ '''\$wgUseDatabaseMessages''' ត្រូវបានបិទមិនឱ្យប្រើ។",
-'allmessagesfilter' => 'កម្រងឈ្មោះសារ៖',
-'allmessagesmodified' => 'បង្ហាញតែការកែសម្រួល',
+'allmessages' => 'សាររបស់ប្រព័ន្ធ',
+'allmessagesname' => 'ឈ្មោះ',
+'allmessagesdefault' => 'អត្ថបទលំនាំដើម',
+'allmessagescurrent' => 'អត្ថបទបច្ចុប្បន្ន',
+'allmessagesnotsupportedDB' => "ទំព័រនេះមិនអាចប្រើប្រាស់បានទេព្រោះ '''\$wgUseDatabaseMessages''' ត្រូវបានបិទមិនឱ្យប្រើ។",
+'allmessages-filter-legend' => 'តំរង',
+'allmessages-filter-unmodified' => 'មិន​បានកែសម្រួល',
+'allmessages-filter-all' => 'ទាំងអស់',
+'allmessages-filter-modified' => 'បានកែសម្រួល',
+'allmessages-prefix' => 'តម្រង​តាម​បុព្វបទ​៖',
+'allmessages-language' => 'ភាសា៖',
+'allmessages-filter-submit' => 'ទៅ',
# Thumbnails
'thumbnail-more' => 'ពង្រីក',
@@ -2507,6 +2581,7 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'djvu_no_xml' => 'មិនអាចនាំយក XML សម្រាប់ឯកសារ DjVu',
'thumbnail_invalid_params' => 'តួលេខ កូនទំព័រ គ្មានសុពលភាព',
'thumbnail_dest_directory' => 'មិនអាចបង្កើតថតឯកសារតាមគោលដៅបានទេ',
+'thumbnail_image-missing' => 'ឯកសារហាក់ដូចជាកំពុងបាត់ខ្លួន៖$1',
# Special:Import
'import' => 'ការនាំចូលទំព័រ',
@@ -2562,6 +2637,7 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'tooltip-ca-viewsource' => 'ទំព័រ​នេះ​បានត្រូវការពារ ។ អ្នកអាច​មើល​អក្សរកូដ​របស់វា ។',
'tooltip-ca-history' => 'កំណែកន្លងមករបស់ទំព័រនេះ ។',
'tooltip-ca-protect' => 'ការពារ​ទំព័រនេះ',
+'tooltip-ca-unprotect' => 'លែង​ការ​ពារ​ទំព័រ​នេះ​',
'tooltip-ca-delete' => 'លុបទំព័រនេះចេញ',
'tooltip-ca-undelete' => 'ស្ដារការកែប្រែនានាដែលត្រូវបានធ្វើចំពោះទំព័រនេះ មុនពេលដែលវាត្រូវបានគេលុបចោល',
'tooltip-ca-move' => 'ប្ដូរទីតាំង​ទំព័រនេះ',
@@ -2572,6 +2648,7 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'tooltip-search-fulltext' => 'ស្វែងរកទំព័រនានាដែលមានពាក្យនេះ',
'tooltip-p-logo' => 'ទំព័រដើម',
'tooltip-n-mainpage' => 'ចូលមើលទំព័រដើម',
+'tooltip-n-mainpage-description' => 'ចូលមើលទំព័រដើម',
'tooltip-n-portal' => 'អំពីគម្រោង វិធីប្រើប្រាស់ និង ការស្វែងរកព័ត៌មាន',
'tooltip-n-currentevents' => 'រកមើលព័ត៌មានទាក់ទិននឹងព្រឹត្តិការណ៍បច្ចុប្បន្ន',
'tooltip-n-recentchanges' => 'បញ្ជី​នៃ​បំលាស់ប្ដូរថ្មីៗ​នៅក្នុងវិគីនេះ',
@@ -2619,11 +2696,12 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'chick.css' => '/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Chick */',
'simple.css' => '/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Simple */',
'modern.css' => '/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Modern */',
+'vector.css' => '/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Vector */',
# Attribution
'anonymous' => '{{PLURAL:$1|user|អ្នកប្រើប្រាស់}}អនាមិកនៃ {{SITENAME}}',
'siteuser' => 'អ្នកប្រើប្រាស់$1នៃ{{SITENAME}}',
-'lastmodifiedatby' => 'ទំព័រនេះត្រូវបានប្តូរចុងក្រោយដោយ$3នៅវេលា$2,$1។', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'ទំព័រនេះត្រូវបានប្តូរចុងក្រោយដោយ$3នៅវេលា$2,$1។',
'othercontribs' => 'ផ្អែកលើការងាររបស់$1។',
'others' => 'ផ្សេងៗទៀត',
'siteusers' => '{{PLURAL:$2|user|អ្នកប្រើប្រាស់}} $1 នៃ {{SITENAME}}',
@@ -2652,6 +2730,7 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'skinname-chick' => 'កូនមាន់',
'skinname-simple' => 'សាមញ្ញ',
'skinname-modern' => 'ទំនើប',
+'skinname-vector' => 'វ៉ិចទ័រ​​',
# Math options
'mw_math_png' => 'ជានិច្ចការជាPNG',
@@ -2661,6 +2740,20 @@ $1 ត្រូវ​បាន​ទប់ស្កាត់​ហើយ​។
'mw_math_modern' => 'បានផ្តល់អនុសាសន៍ចំពោះកម្មវិធីរាវរកទំនើបៗ',
'mw_math_mathml' => 'MathML បើអាចទៅរួច (ពិសោធ)',
+# Math errors
+'math_failure' => 'បរាជ័យ​ក្នុង​ការ​ញែក​ចេញ​',
+'math_unknown_error' => 'កំហុសមិនស្គាល់',
+'math_unknown_function' => 'អនុគមន៍​មិន​ស្គាល់',
+'math_lexing_error' => 'បញ្ហាក្នុងការអានតួអក្សរ',
+'math_syntax_error' => 'កំហុសពាក្យសម្ព័ន្ធ',
+'math_image_error' => 'ការបម្លែងជា PNG បានបរាជ័យ។
+សូមពិនិត្យមើលតើ latex, dvips, gs, បានដំឡើងត្រឹមត្រូវឬអត់ រួចបម្លែង',
+'math_bad_tmpdir' => 'មិនអាចសរសេរទៅ ឬ បង្កើតថតឯកសារគណិតបណ្តោះអាសន្ន',
+'math_bad_output' => 'មិនអាច សរសេរទៅ ឬ បង្កើត ថតឯកសារ គណិត ទិន្នផល',
+'math_notexvc' => 'បាត់កម្មវិធី texvc។
+
+សូមមើលក្នុង math/README ដើម្បីធ្វើការកំណត់លំអិត។',
+
# Patrolling
'markaspatrolleddiff' => 'ចំណាំថាបានល្បាត',
'markaspatrolledtext' => 'ចំណាំទំព័រនេះថាបានល្បាត',
@@ -2692,7 +2785,7 @@ $1',
# Media information
'mediawarning' => "'''ប្រយ័ត្ន''' ៖ ឯកសារនេះអាចមានផ្ទុកកូដពិសពុល។ កុំព្យូទ័ររបស់អ្នកអាចមានគ្រោះថ្នាក់បើឱ្យវាមានដំណើរការ។",
-'imagemaxsize' => 'កំណត់ទំហំរូបភាពលើទំព័រពិពណ៌នារូបភាពត្រឹម៖',
+'imagemaxsize' => "កំណត់ទំហំរូបភាព៖<br />''(លើទំព័រពិពណ៌នារូបភាព)''",
'thumbsize' => 'ទំហំកូនរូបភាព៖',
'widthheightpage' => '$1×$2, $3{{PLURAL:$3|ទំព័រ|ទំព័រ}}',
'file-info' => '(ទំហំឯកសារ៖ $1, ប្រភេទ MIME ៖ $2)',
@@ -2737,7 +2830,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'ទទឹង',
@@ -2805,14 +2898,14 @@ $1',
'exif-unknowndate' => 'មិនដឹងកាលបរិច្ឆេទ',
-'exif-orientation-1' => 'ធម្មតា', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'ផ្កាប់​ផ្ដេក​', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'ត្រូវបាន​បង្វិល 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'ផ្កាប់​បញ្ឈរ​', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'បង្វិល​ 90° បញ្ច្រាស់​ទ្រនិច​នាឡិកា​ រូច​ហើយ​ផ្កាប់​បញ្ឈរ​', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'បានបង្វិល 90° តាមទិសទ្រនិចនាឡិកា', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'បង្វិល​ 90° ស្រប​ទ្រនិច​នាឡិកា​ រូច​ហើយ​ផ្កាប់​បញ្ឈរ​', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'បានបង្វិល 90° ច្រាស់ទិសទ្រនិចនាឡិកា', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'ធម្មតា',
+'exif-orientation-2' => 'ផ្កាប់​ផ្ដេក​',
+'exif-orientation-3' => 'ត្រូវបាន​បង្វិល 180°',
+'exif-orientation-4' => 'ផ្កាប់​បញ្ឈរ​',
+'exif-orientation-5' => 'បង្វិល​ 90° បញ្ច្រាស់​ទ្រនិច​នាឡិកា​ រូច​ហើយ​ផ្កាប់​បញ្ឈរ​',
+'exif-orientation-6' => 'បានបង្វិល 90° តាមទិសទ្រនិចនាឡិកា',
+'exif-orientation-7' => 'បង្វិល​ 90° ស្រប​ទ្រនិច​នាឡិកា​ រូច​ហើយ​ផ្កាប់​បញ្ឈរ​',
+'exif-orientation-8' => 'បានបង្វិល 90° ច្រាស់ទិសទ្រនិចនាឡិកា',
'exif-componentsconfiguration-0' => 'មិនមាន',
@@ -2885,7 +2978,7 @@ $1',
'exif-gpslongitude-e' => 'ខាងកើត',
'exif-gpslongitude-w' => 'ខាងលិច',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'គីឡូម៉ែត្រក្នុងមួយម៉ោង',
'exif-gpsspeed-m' => 'ម៉ាយល៍ក្នុងមួយម៉ោង',
'exif-gpsspeed-n' => 'ណុត',
@@ -2904,6 +2997,7 @@ $1',
'watchlistall2' => 'ទាំងអស់',
'namespacesall' => 'ទាំងអស់',
'monthsall' => 'ទាំងអស់',
+'limitall' => 'ទាំងអស់​',
# E-mail address confirmation
'confirmemail' => 'បញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែល',
@@ -3034,7 +3128,7 @@ $1',
'unknown_extension_tag' => 'ស្លាក​នៃផ្នែកបន្ថែម "$1" មិនស្គាល់',
# Special:Version
-'version' => 'កំណែ', # Not used as normal message but as header for the special page itself
+'version' => 'កំណែ',
'version-extensions' => 'ផ្នែកបន្ថែមដែលបានដំឡើង',
'version-specialpages' => 'ទំព័រពិសេសៗ',
'version-variables' => 'អថេរ',
@@ -3044,7 +3138,7 @@ $1',
'version-skin-extension-functions' => 'មុខងារផ្នែកបន្ថែមនៃសំបក',
'version-hook-name' => 'ឈ្មោះ​ Hook',
'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
-'version-version' => 'កំណែ',
+'version-version' => '(កំណែ $1)',
'version-license' => 'អាជ្ញាប័ណ្ណ',
'version-software' => 'ផ្នែកទន់​ដែល​បានដំឡើង',
'version-software-product' => 'ផលិតផល',
@@ -3112,4 +3206,15 @@ $1',
'dberr-outofdate' => 'សូមចំណាំ​​ថា​ លិបិក្រម​នៃ​មាតិការ​របស់យើងប្រហែលជាហួស​សម័យ​។​',
'dberr-cachederror' => 'នេះ​គឺ​ជា​ច្បាប់​ចម្លង​ដែលបាន​ដាក់ទៅសតិភ្ជាប់នៃ​ទំព័រ​ដែលបានស្នើសុំ​ និងប្រហែលជាមិនទាន់សម័យ។',
+# HTML forms
+'htmlform-invalid-input' => 'មាន​បញ្ហាខ្លះ​​​ជាមួយ​ការ​វាយ​បញ្ចូល​មួយ​ចំនួន​របស់​អ្នក​',
+'htmlform-select-badoption' => 'តំលៃលេខដែលអ្នកបានកំនត់មិនត្រឹមត្រូវទេ។',
+'htmlform-int-invalid' => 'តំលៃលេខដែលអ្នកបានកំនត់មិនមែនជាចំនួនគត់ទេ។',
+'htmlform-float-invalid' => 'តំលៃលេខដែលអ្នកបានកំនត់មិនមែនជាចំនួនទេ។',
+'htmlform-int-toolow' => 'តំលៃលេខដែលអ្នកបានកំនត់តូចជាងចំនួនអប្បបរមាដែលមានតំលៃ$1',
+'htmlform-int-toohigh' => 'តំលៃលេខដែលអ្នកបានកំនត់ធំជាងចំនួនអតិបរមាដែលមានតំលៃ$1',
+'htmlform-submit' => 'ដាក់ស្នើ',
+'htmlform-reset' => 'ធ្វើដូចដើមវិញ',
+'htmlform-selectorother-other' => 'ផ្សេងទៀត',
+
);
diff --git a/languages/messages/MessagesKn.php b/languages/messages/MessagesKn.php
index 2158c070..158accc5 100644
--- a/languages/messages/MessagesKn.php
+++ b/languages/messages/MessagesKn.php
@@ -22,11 +22,9 @@
$namespaceNames = array(
NS_MEDIA => 'ಮೀಡಿಯ',
NS_SPECIAL => 'ವಿಶೇಷ',
- NS_MAIN => '',
NS_TALK => 'ಚರ್ಚೆಪುಟ',
NS_USER => 'ಸದಸ್ಯ',
NS_USER_TALK => 'ಸದಸ್ಯರ_ಚರ್ಚೆಪುಟ',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_ಚರ್ಚೆ',
NS_FILE => 'ಚಿತ್ರ',
NS_FILE_TALK => 'ಚಿತ್ರ_ಚರ್ಚೆಪುಟ',
@@ -37,7 +35,7 @@ $namespaceNames = array(
NS_HELP => 'ಸಹಾಯ',
NS_HELP_TALK => 'ಸಹಾಯ_ಚರ್ಚೆ',
NS_CATEGORY => 'ವರ್ಗ',
- NS_CATEGORY_TALK => 'ವರ್ಗ_ಚರ್ಚೆ'
+ NS_CATEGORY_TALK => 'ವರ್ಗ_ಚರ್ಚೆ',
);
$digitTransformTable = array(
@@ -84,6 +82,7 @@ $messages = array(
'tog-enotifminoredits' => 'ಚಿಕ್ಕ-ಪುಟ್ಟ ಬದಲಾವಣೆಗಳಾದಾಗಲೂ ಇ-ಅಂಚೆ ಕಳುಹಿಸು',
'tog-enotifrevealaddr' => 'ಪ್ರಕಟಣೆ ಇ-ಅಂಚೆಗಳಲ್ಲಿ ನನ್ನ ಇ-ಅಂಚೆ ವಿಳಾಸ ತೋರು',
'tog-shownumberswatching' => 'ಪುಟವನ್ನು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಸದಸ್ಯರ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸು',
+'tog-oldsig' => 'ಪ್ರಸ್ತಕ ಸಹಿಯ ಮುನ್ನೋಟ:',
'tog-fancysig' => 'ಸರಳ ಸಹಿಗಳು (ಕೊಂಡಿ ಇಲ್ಲದಿರುವಂತೆ)',
'tog-externaleditor' => 'ಬಾಹ್ಯ ಸಂಪಾದನೆ ಸಲಕರಣೆಯನ್ನು ಯಾವಾಗಲೂ ಉಪಯೋಗಿಸು (ಅನುಭವ ಹೊಂದಿರುವ ಬಳಕೆದಾರರಿಗೆ ಮಾತ್ರ, ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ವಿಶೇಷ ಬದಲಾವಣೆಗಳು ಬೇಕಾಗುತ್ತದೆ)',
'tog-externaldiff' => 'ಬಾಹ್ಯ ಮುನ್ನೋಟವನ್ನು ಯಾವಗಲೂ ಉಪಯೋಗಿಸು (ಅನುಭವ ಹೊಂದಿರುವ ಬಳಕೆದಾರರಿಗೆ ಮಾತ್ರ, ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ವಿಶೇಷ ಬದಲಾವಣೆಗಳು ಬೇಕಾಗುತ್ತದೆ)',
@@ -161,7 +160,7 @@ $messages = array(
'category-media-header' => '"$1" ವರ್ಗದಲ್ಲಿರುವ ಚಿತ್ರ/ಶಬ್ದ ಫೈಲುಗಳು',
'category-empty' => "''ಈ ವರ್ಗದಲ್ಲಿ ಸದ್ಯದಲ್ಲಿ ಯಾವುದೇ ಪುಟಗಳಾಗಲಿ ಅಥವ ಚಿತ್ರಗಳಾಗಲಿ ಇಲ್ಲ.''",
'hidden-categories' => '{{PLURAL:$1|ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗ|ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗಗಳು}}',
-'hidden-category-category' => 'ಅಡಗಿಸಲ್ಪಟ್ಟಿರುವ ವರ್ಗಗಳು', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'ಅಡಗಿಸಲ್ಪಟ್ಟಿರುವ ವರ್ಗಗಳು',
'category-subcat-count' => '{{PLURAL:$2|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ ಉಪವರ್ಗ ಇದೆ.|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಉಪವರ್ಗವನ್ನು|$1 ಉಪವರ್ಗಗಳನ್ನು}} ಸೇರಿಸಿ, ಒಟ್ಟು $2 ಇವೆ.}}',
'category-subcat-count-limited' => 'ಈ ವರ್ಗದಲ್ಲಿ ಕೆಳಗೆ ತೋರಿಸಿರುವ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗಗಳು}} ಇವೆ.',
'category-article-count' => '{{PLURAL:$2|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ ಪುಟವೊಂದು ಇದೆ.|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಪುಟವನ್ನು|$1 ಪುಟಗಳನ್ನು}} ಸೇರಿಸಿ, ಒಟ್ಟು $2 ಪುಟಗಳು ಇವೆ.}}',
@@ -179,10 +178,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-'about' => 'ನಮ್ಮ ಬಗ್ಗೆ',
-'article' => 'ಲೇಖನ ಪುಟ',
-'newwindow' => '(ಹೊಸ ಕಿಟಕಿಯನ್ನು ತೆರೆಯುತ್ತದೆ)',
-'cancel' => 'ವಜಾ ಮಾಡಿ',
+'about' => 'ನಮ್ಮ ಬಗ್ಗೆ',
+'article' => 'ಲೇಖನ ಪುಟ',
+'newwindow' => '(ಹೊಸ ಕಿಟಕಿಯನ್ನು ತೆರೆಯುತ್ತದೆ)',
+'cancel' => 'ವಜಾ ಮಾಡಿ',
+'moredotdotdot' => 'ಇನ್ನಷ್ಟು...',
+'mypage' => 'ನನ್ನ ಪುಟ',
+'mytalk' => 'ನನ್ನ ಚರ್ಚೆ',
+'anontalk' => 'ಈ ಐ.ಪಿ ಗೆ ಮಾತನಾಡಿ',
+'navigation' => 'ಸಂಚರಣೆ',
+'and' => '&#32;ಮತ್ತು',
+
+# Cologne Blue skin
'qbfind' => 'ಹುಡುಕು',
'qbbrowse' => 'ವಿಹರಿಸು',
'qbedit' => 'ಸಂಪಾದಿಸು',
@@ -190,15 +197,29 @@ $messages = array(
'qbpageinfo' => 'ಸನ್ನಿವೇಶ',
'qbmyoptions' => 'ನನ್ನ ಪುಟಗಳು',
'qbspecialpages' => 'ವಿಶೇಷ ಪುಟಗಳು',
-'moredotdotdot' => 'ಇನ್ನಷ್ಟು...',
-'mypage' => 'ನನ್ನ ಪುಟ',
-'mytalk' => 'ನನ್ನ ಚರ್ಚೆ',
-'anontalk' => 'ಈ ಐ.ಪಿ ಗೆ ಮಾತನಾಡಿ',
-'navigation' => 'ಸಂಚರಣೆ',
-'and' => '&#32;ಮತ್ತು',
-
-# Metadata in edit box
-'metadata_help' => 'ಮೂಲಮಾಹಿತಿ:',
+'faq' => 'ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
+'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
+
+# Vector skin
+'vector-action-delete' => 'ಅಳಿಸು',
+'vector-action-move' => 'ಸ್ಥಳಾಂತರಿಸಿ',
+'vector-action-protect' => 'ಸಂರಕ್ಷಿಸು',
+'vector-action-unprotect' => 'ಸಂರಕ್ಷಣೆಯನ್ನು ತೆಗೆ',
+'vector-namespace-category' => 'ವರ್ಗ',
+'vector-namespace-help' => 'ಸಹಾಯ ಪುಟ',
+'vector-namespace-image' => 'ಫೈಲು',
+'vector-namespace-main' => 'ಪುಟ',
+'vector-namespace-mediawiki' => 'ಸಂದೇಶ',
+'vector-namespace-project' => 'ಯೋಜನೆ ಪುಟ',
+'vector-namespace-special' => 'ವಿಶೇಷ ಪುಟ',
+'vector-namespace-talk' => 'ಚರ್ಚೆ',
+'vector-namespace-template' => 'ಟೆಂಪ್ಲೇಟು',
+'vector-namespace-user' => 'ಸದಸ್ಯರ ಪುಟ',
+'vector-view-create' => 'ಸೃಷ್ಟಿಸು',
+'vector-view-edit' => 'ಸಂಪಾದಿಸಿ',
+'vector-view-history' => 'ಇತಿಹಾಸವನ್ನು ನೋಡಿ',
+'vector-view-view' => 'ಓದು',
+'vector-view-viewsource' => 'ಆಕರ ವೀಕ್ಷಿಸು',
'errorpagetitle' => 'ದೋಷ',
'returnto' => '$1 ಗೆ ಹಿಂತಿರುಗಿ.',
@@ -248,7 +269,7 @@ $messages = array(
'otherlanguages' => 'ಇತರ ಭಾಷೆಗಳು',
'redirectedfrom' => '($1 ಇಂದ ಪುನರ್ನಿರ್ದೇಶಿತ)',
'redirectpagesub' => 'ಪುನರ್ನಿರ್ದೇಶನ ಪುಟ',
-'lastmodifiedat' => 'ಈ ಪುಟವನ್ನು ಕೊನೆಯಾಗಿ $2, $1 ರಂದು ಬದಲಾಯಿಸಲಾಗಿತ್ತು.', # $1 date, $2 time
+'lastmodifiedat' => 'ಈ ಪುಟವನ್ನು ಕೊನೆಯಾಗಿ $2, $1 ರಂದು ಬದಲಾಯಿಸಲಾಗಿತ್ತು.',
'viewcount' => 'ಈ ಪುಟವನ್ನು {{PLURAL:$1|೧ ಬಾರಿ|$1 ಬಾರಿ}} ವೀಕ್ಷಿಸಲಾಗಿದೆ.',
'protectedpage' => 'ಸಂರಕ್ಷಿತ ಪುಟ',
'jumpto' => 'ಇಲ್ಲಿಗೆ ಹೋಗು:',
@@ -259,7 +280,6 @@ $messages = array(
'aboutsite' => 'ಕನ್ನಡ {{SITENAME}} ಬಗ್ಗೆ',
'aboutpage' => 'Project:ನಮ್ಮ ಬಗ್ಗೆ',
'copyright' => 'ಇದು ಈ ಕಾಪಿರೈಟ್‌ನಲ್ಲಿ ಲಭ್ಯವಿದೆ $1.',
-'copyrightpagename' => '{{SITENAME}} ಕಾಪಿರೈಟ್',
'copyrightpage' => '{{ns:project}}:ಕೃತಿಸ್ವಾಮ್ಯತೆಗಳು',
'currentevents' => 'ಪ್ರಚಲಿತ',
'currentevents-url' => 'Project:ಪ್ರಚಲಿತ',
@@ -267,8 +287,6 @@ $messages = array(
'disclaimerpage' => 'Project:ಸಾಮಾನ್ಯ ಅಬಾಧ್ಯತೆಗಳು',
'edithelp' => 'ಸಂಪಾದನೆಗೆ ಸಹಾಯ',
'edithelppage' => 'Help:ಸಂಪಾದನೆ',
-'faq' => 'ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
-'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
'helppage' => 'Help:ಪರಿವಿಡಿ',
'mainpage' => 'ಮುಖ್ಯ ಪುಟ',
'mainpage-description' => 'ಮುಖ್ಯ ಪುಟ',
@@ -346,10 +364,6 @@ MySQL ಹಿಂದಿರುಗಿಸಿದ ದೋಷ "<tt>$3: $4</tt>".',
"$1"
ಇದು ಉಂಟಾಗಿದ್ದು "$2" function ಒಳಗಿಂದ.
MySQL ಹಿಂದಿರುಗಿಸಿದ ದೋಷ "$3: $4"',
-'noconnect' => 'ಕ್ಷಮಿಸಿ! ಸದ್ಯಕ್ಕೆ ವಿಕಿಯು ತಾಂತ್ರಿಕ ತೊಂದರೆಗಳನ್ನು ಅನುಭವಿಸುತ್ತಿದೆ ಮತ್ತು ಡೇಟಾಬೇಸ್ ಸರ್ವರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. <br />
-$1',
-'nodb' => 'ಡೇಟಬೇಸ್ $1 ಅನ್ನು ಆರಿಸಲಾಗಲಿಲ್ಲ',
-'cachederror' => 'ಕೆಳಗೆ ತೋರಿಸಲಾಗುತ್ತಿರುವುದು ನೀವು ಕೋರಿದ ಪುಟದ cache ಪ್ರತಿ. ಇದು ಪುಟದ ಹಾಲಿ ಸ್ಥಿತಿಯನ್ನು ಬಿಂಬಿಸುತ್ತಿಲ್ಲದಿರಬಹುದು.',
'laggedslavemode' => 'ಎಚ್ಚರ: ಪುಟದಲ್ಲಿ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಕಾಣದಿರಬಹುದು.',
'readonly' => 'ಡೇಟಬೇಸ್ ಮುಚ್ಚಲಾಗಿದೆ',
'enterlockreason' => 'ಡೇಟಬೇಸ್ ಮುಚ್ಚುತಿರುವ ಕಾರಣವನ್ನು ಮತ್ತು ಮತ್ತೆ ಅದನ್ನು ತೆರೆಯುವ ಅಂದಾಜಿತ ಕಾಲವನ್ನು ತಿಳಿಸಿ',
@@ -400,7 +414,6 @@ $2',
ಸಂರಕ್ಷಣೆಗೆ ನೀಡಿರುವ ಕಾರಣ: ''$2''.",
# Login and logout pages
-'logouttitle' => 'ಸದಸ್ಯ ಲಾಗೌಟ್',
'logouttext' => "'''ನೀವು ಈಗ ಲಾಗ್ ಔಟ್ ಆಗಿರುವಿರಿ.'''
ನೀವು {{SITENAME}} ಅನ್ನು ಅನಾಮಧೇಯವಾಗಿ ಉಪಯೋಗಿಸಬಹುದು, ಅಥವ ಮತ್ತೆ ಇದೇ ಹೆಸರಿನಲ್ಲಿ ಅಥವ ಬೇರೆ ಹೆಸರಿನಲ್ಲಿ [[Special:UserLogin|ಲಾಗ್ ಇನ್]] ಆಗಬಹುದು.
@@ -408,7 +421,6 @@ $2',
'welcomecreation' => '== ಸುಸ್ವಾಗತ, $1! ==
ನಿಮ್ಮ ಅಕೌಂಟನ್ನು ಸೃಷ್ಟಿಸಲಾಗಿದೆ.
ನಿಮ್ಮ [[Special:Preferences|{{SITENAME}} ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು]] ಬದಲಾಯಿಸುವುದನ್ನು ಮರೆಯಬೇಡಿ.',
-'loginpagetitle' => 'ಬಳಕೆದಾರ ಲಾಗ್ ಇನ್',
'yourname' => 'ನಿಮ್ಮ ಬಳಕೆಯ ಹೆಸರು',
'yourpassword' => 'ನಿಮ್ಮ ಪ್ರವೇಶಪದ',
'yourpasswordagain' => 'ಪ್ರವೇಶ ಪದ ಮತ್ತೊಮ್ಮೆ ಟೈಪ್ ಮಾಡಿ',
@@ -417,6 +429,7 @@ $2',
'nav-login-createaccount' => 'ಲಾಗ್ ಇನ್ - log in',
'loginprompt' => '{{SITENAME}} ತಾಣಕ್ಕೆ ಲಾಗ್ ಇನ್ ಆಗಲು ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ಕುಕೀ (cookie) ಸೌಲಭ್ಯವಿರಬೇಕು.',
'userlogin' => 'ಲಾಗ್ ಇನ್ - log in',
+'userloginnocreate' => 'ಲಾಗ್ ಇನ್',
'logout' => 'ಲಾಗ್ ಔಟ್',
'userlogout' => 'ಲಾಗ್ ಔಟ್',
'notloggedin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
@@ -428,24 +441,7 @@ $2',
'createaccountmail' => 'ಇ-ಅಂಚೆಯ ಮೂಲಕ',
'badretype' => 'ನೀವು ಕೊಟ್ಟ ಪ್ರವೇಶಪದಗಳು ಬೇರೆಬೇರೆಯಾಗಿವೆ.',
'userexists' => 'ನೀವು ನೀಡಿದ ಸದಸ್ಯರ ಹೆಸರು ಆಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. ದಯವಿಟ್ಟು ಬೇರೊಂದು ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.',
-'youremail' => 'ಇ-ಅಂಚೆ:',
-'username' => 'ಸದಸ್ಯತ್ವದ ಹೆಸರು:',
-'uid' => 'ಬಳಕೆದಾರ ID:',
-'prefs-memberingroups' => 'ಈ {{PLURAL:$1|ಗುಂಪಿನ|ಗುಂಪುಗಳ}} ಸದಸ್ಯ:',
-'yourrealname' => 'ನಿಜ ಹೆಸರು:',
-'yourlanguage' => 'ಭಾಷೆ:',
-'yournick' => 'ಸಹಿ:',
-'badsiglength' => 'ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.
-ಅದು $1 {{PLURAL:$1|ಅಕ್ಷರಕ್ಕಿಂತ|ಅಕ್ಷರಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.',
-'yourgender' => 'ಲಿಂಗ:',
-'gender-male' => 'ಗಂಡಸು',
-'gender-female' => 'ಸ್ತ್ರೀ',
-'email' => 'ಇ-ಅಂಚೆ',
-'prefs-help-realname' => 'ನಿಜ ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.',
'loginerror' => 'ಲಾಗಿನ್ ದೋಷ',
-'prefs-help-email' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನೀವು ಅದನ್ನು ನೀಡಿದರೆ ನೀವು ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಮರೆತರೆ ಅದನ್ನು ನಿಮಗೆ ಇ-ಅಂಚೆಯಿಂದ ಕಳುಹಿಸಿಬಹುದು.
-ಅಲ್ಲದೆ ಬೇರೆಯವರು ನಿಮ್ಮನ್ನು ಇತರರಿಗೆ ತಿಳಿಯದಂತೆ ನಿಮ್ಮ ಸದಸ್ಯ ಪುಟ ಅಥವ ಚರ್ಚೆ ಪುಟದ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬಹುದು.',
-'prefs-help-email-required' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಬೇಕಾಗಿದೆ.',
'nocookiesnew' => 'ನಿಮ್ಮ ಬಳಕೆದಾರ ಖಾತೆಯು ಸೃಷ್ಟಿತವಾಗಿದೆ, ಆದರೆ ನೀವು ಲಾಗ್ ಇನ್ ಆಗಿಲ್ಲ.
{{SITENAME}} ಲಾಗ್ ಇನ್ ಮಾಡಲು cookieಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತದೆ.
ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ cookieಗಳು ನಿಷಿದ್ಧವಾಗಿದೆ.
@@ -463,8 +459,7 @@ $2',
'nouserspecified' => 'ನೀವು ಒಂದು ಸದಸ್ಯತ್ವದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು.',
'wrongpassword' => 'ತಪ್ಪು ಪ್ರವೇಶ ಪದ ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.',
'wrongpasswordempty' => 'ಖಾಲಿ ಪ್ರವೇಶ ಪದವನ್ನು ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.',
-'passwordtooshort' => 'ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಸಿಂಧುವಲ್ಲ ಅಥವ ತುಂಬ ಚಿಕ್ಕದಾಗಿದೆ.
-ಅದು ಕನಿಷ್ಟ {{PLURAL:$1|೧ ಅಕ್ಷರವನ್ನು|$1 ಅಕ್ಷರಗಳನ್ನು}} ಹೊಂದಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಬಳಕೆಯ ಹೆಸರಿಂದ ಭಿನ್ನವಾಗಿರಬೇಕು.',
+'passwordtooshort' => 'ಪ್ರವೇಶಪದ ಕನಿಷ್ಟ {{PLURAL:$1|೧ ಅಕ್ಷರವನ್ನು|$1 ಅಕ್ಷರಗಳನ್ನು}} ಹೊಂದಿರಬೇಕು.',
'mailmypassword' => 'ಹೊಸ ಪ್ರವೇಶ ಪದವನ್ನು ಇ-ಅಂಚೆ ಮೂಲಕ ಕಳುಹಿಸಿ',
'passwordremindertitle' => '{{SITENAME}}ಗೆ ಹೊಸ ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶ ಪದ',
'passwordremindertext' => '{{SITENAME}} ($4) ಸೈಟಿಗೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು $1 ಐ.ಪಿ. ವಿಳಾಸದಿಂದ ಕೋರಲಾಗಿದೆ.
@@ -509,12 +504,9 @@ $2',
'retypenew' => 'ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೆ ಟೈಪಿಸು:',
'resetpass_submit' => 'ಪ್ರವೇಶ ಪದವನ್ನು ನಿಶ್ಚಯಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿ',
'resetpass_success' => 'ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ. ಈಗ ನಿಮ್ಮನ್ನು ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ...',
-'resetpass_bad_temporary' => 'ಸರಿಯಾಗಿರದ ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ.
-ನೀವಾಗಲೆ ಯಶಸ್ವಿಯಾಗಿ ನಿಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿರಬಹುದು ಅಥವ ಹೊಸ ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ ಒಂದನ್ನು ಕೋರಿರಬಹುದು.',
'resetpass_forbidden' => 'ಪ್ರವೇಶಪದಗಳನ್ನು ಬದಲಾಯಿಸುವಂತಿಲ್ಲ.',
'resetpass-submit-loggedin' => 'ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸು',
'resetpass-temp-password' => 'ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ:',
-'resetpass-log' => 'ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಿದ ದಾಖಲೆ',
# Edit page toolbar
'bold_sample' => 'ದಪ್ಪಗಿನ ಅಚ್ಚು',
@@ -584,7 +576,6 @@ $2',
'blockededitsource' => "'''$1''' ಪುಟದಲ್ಲಿನ '''ನಿಮ್ಮ ಸಂಪಾದನೆಗಳ''' ಪಠ್ಯವನ್ನು ಕೆಳಗೆ ತೋರಲಾಗಿದೆ:",
'whitelistedittitle' => 'ಸಂಪಾದನೆ ಮಾಡಲು ಲಾಗ್ ಇನ್ ಆಗಿರಬೇಕು',
'whitelistedittext' => 'ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸಲು ನೀವು $1 ಆಗಬೇಕು.',
-'confirmedittitle' => 'ಸಂಪಾದನೆ ಮಾಡಲು ಇ-ಅಂಚೆ ಧೃಡೀಕರಣ ಬೇಕು',
'confirmedittext' => 'ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸುವ ಮುನ್ನ ನೀವು ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಬೇಕು.
ದಯವಿಟ್ಟು [[Special:Preferences|ಬಳಕೆದಾರ ಆಯ್ಕೆಗಳು]] ಪುಟದಲ್ಲಿ ತಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ಧೃಡೀಕರಿಸಿ.',
'nosuchsectiontitle' => 'ಆ ಹೆಸರಿನ ವಿಭಾಗ ಯಾವುದೂ ಇಲ್ಲ',
@@ -610,7 +601,8 @@ $2',
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂಧಿತ ದಾಖಲೆಗಳನ್ನು ಹುಡುಕಬಹುದು],
ಅಥವ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಬಹುದು]</span>.',
'userpage-userdoesnotexist' => 'ಬಳಕೆದಾರ ಖಾತೆ "$1" ದಾಖಲಾಗಿಲ್ಲ. ನೀವು ಇದೇ ಪುಟವನ್ನು ಸೃಷ್ಟಿ/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರುವಿರಿ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿಕೊಳ್ಳಿ.',
-'usercssjsyoucanpreview' => "'''ಗಮನಿಸಿ:''' ಉಳಿಸುವ ಮುನ್ನ 'ಮುನ್ನೋಟ' ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ CSS/JS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
+'usercssyoucanpreview' => "'''ಗಮನಿಸಿ:''' ಉಳಿಸುವ ಮುನ್ನ 'ಮುನ್ನೋಟ' ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ CSS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
+'userjsyoucanpreview' => "'''ಗಮನಿಸಿ:''' ಉಳಿಸುವ ಮುನ್ನ 'ಮುನ್ನೋಟ' ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ JS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
'usercsspreview' => "'''ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.'''
'''ಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
'userjspreview' => "'''ಗಮನಿಸಿ: ನೀವು ನಿಮ್ಮ ಬಳಕೆದಾರ JavaScriptನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ ಅಥವ ಪ್ರಯೋಗ ಮಾಡುತ್ತಿರುವಿರಿ. ಅದನ್ನಿನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
@@ -644,8 +636,8 @@ $2',
'semiprotectedpagewarning' => "'''ಗಮನಿಸಿ:''' ಈ ಪುಟವನ್ನು ಕೇವಲ ನೊಂದಯಿತ ಸದಸ್ಯರು ಸಂಪಾದನೆ ಮಾಡಬರುವಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ.",
'cascadeprotectedwarning' => "'''ಎಚ್ಚರಿಕೆ:''' ಈ ಪುಟವು ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಿರುವ ತಡಸಲು-ಸಂರಕ್ಷಣೆ ಹೊಂದಿರುವ {{PLURAL:$1|ಪುಟದಲ್ಲಿ|ಪುಟಗಳಲ್ಲಿ}} ಸೇರಿರುವುದರಿಂದ, ಇದನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕರು ಸಂಪಾದಿಸಬಹುದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ :",
'titleprotectedwarning' => "'''ಎಚ್ಚರಿಕೆ: ಈ ಪುಟವನ್ನು ಕೆಲ ಬಳಕೆದಾರರು ಮಾತ್ರ ಸೃಷ್ಟಿಸಬಹುದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. '''",
-'templatesused' => 'ಈ ಪುಟದಲ್ಲಿ ಉಪಯೋಗಿಸಲಾಗಿರುವ ಟೆಂಪ್ಲೇಟುಗಳು:',
-'templatesusedpreview' => 'ಈ ಮುನ್ನೋಟದಲ್ಲಿ ಉಪಯೋಗಿಸಲ್ಪಟ್ಟಿರುವ ಟೆಂಪ್ಲೇಟುಗಳು:',
+'templatesused' => 'ಈ ಪುಟದಲ್ಲಿ ಉಪಯೋಗಿಸಲಾಗಿರುವ {{PLURAL:$1|ಟೆಂಪ್ಲೇಟು|ಟೆಂಪ್ಲೇಟುಗಳು}}:',
+'templatesusedpreview' => 'ಈ ಮುನ್ನೋಟದಲ್ಲಿ ಉಪಯೋಗಿಸಲ್ಪಟ್ಟಿರುವ {{PLURAL:$1|ಟೆಂಪ್ಲೇಟು|ಟೆಂಪ್ಲೇಟುಗಳು}}:',
'templatesusedsection' => 'ಈ ವಿಭಾಗದಲ್ಲಿ ಉಪಯೋಗಿಸಲ್ಪಟ್ಟಿರುವ ಟೆಂಪ್ಲೇಟುಗಳು:',
'template-protected' => '(ಸಂರಕ್ಷಿತ)',
'template-semiprotected' => '(ಅರೆ-ಸಂರಕ್ಷಿತ)',
@@ -657,11 +649,12 @@ $2',
'permissionserrors' => 'ಅನುಮತಿಗಳ ದೋಷಗಳು',
'permissionserrorstext' => 'ನಿಮಗೆ ಅದನ್ನು ಮಾಡಲು ಅನುಮತಿ ಇಲ್ಲ, ಅದಕ್ಕೆ {{PLURAL:$1|ಕಾರಣ|ಕಾರಣಗಳು}}:',
'permissionserrorstext-withaction' => '$2 ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ, ಅದಕ್ಕೆ {{PLURAL:$1|ಕಾರಣ|ಕಾರಣಗಳು}}:',
-'recreate-deleted-warn' => "'''ಎಚ್ಚರಿಕೆ: ಹಿಂದೆ ಅಳಿಸಲಾದ ಪುಟವನ್ನು ನೀವು ಮತ್ತೆ ಸೃಷ್ಟಿಸುತ್ತಿರುವಿರಿ.'''
+'recreate-moveddeleted-warn' => "'''ಎಚ್ಚರಿಕೆ: ಹಿಂದೆ ಅಳಿಸಲಾದ ಪುಟವನ್ನು ನೀವು ಮತ್ತೆ ಸೃಷ್ಟಿಸುತ್ತಿರುವಿರಿ.'''
ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಸಮರ್ಪಕ ಕಾರಣವಿದೆಯೆ ಎಂದು ದಯವಿಟ್ಟು ಆಲೋಚಿಸಿ.
ಪುಟದ ಅಳಿಸುವಿಕೆ ದಿನಚರಿಯನ್ನು ಈ ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ:",
-'deletelog-fulllog' => 'ಎಲ್ಲ ದಾಖಲೆಗಳನ್ನು ನೋಡಿ',
+'moveddeleted-notice' => 'ಈ ಪುಟವು ಅಳಿಸಲ್ಪಟ್ಟಿದೆ.
+ಈ ಪುಟದ ಅಳಿಸುವಿಕೆಯ ದಾಖಲೆಯನ್ನು ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ.',
'edit-already-exists' => 'ಹೊಸ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲಾಗಲಿಲ್ಲ.
ಅದು ಆಗಲೆ ಅಸ್ಥಿತ್ವದಲ್ಲಿದೆ.',
@@ -680,7 +673,7 @@ $2',
'currentrev' => 'ಈಗಿನ ತಿದ್ದುಪಡಿ',
'currentrev-asof' => 'ಅತ್ಯಂತ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿ ($1)',
'revisionasof' => '$1 ದಿನದ ಆವೃತ್ತಿ',
-'revision-info' => '$2 ಅವರು $1 ಅಂದು ಸಂಪಾದನೆ ಮಾಡಿದ ನಂತರದ ಆವೃತ್ತಿ', # Additionally available: $3: revision id
+'revision-info' => '$2 ಅವರು $1 ಅಂದು ಸಂಪಾದನೆ ಮಾಡಿದ ನಂತರದ ಆವೃತ್ತಿ',
'previousrevision' => '←ಹಿಂದಿನ ಪರಿಷ್ಕರಣೆ',
'nextrevision' => 'ಮುಂದಿನ ಪರಿಷ್ಕರಣೆ',
'currentrevisionlink' => 'ಈಗಿನ ಪರಿಷ್ಕರಣೆ',
@@ -693,7 +686,6 @@ $2',
ಆಖ್ಯಾನ: (ಈಗಿನ) = ಪ್ರಸಕ್ತ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು,
(ಕೊನೆಯ) = ಹಿಂದಿನ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು, ಚು = ಚುಟುಕಾದ ಬದಲಾವಣೆ.',
'history-fieldset-title' => 'ಇತಿಹಾಸವನ್ನು ವಿಹರಿಸಿ',
-'deletedrev' => '[ಅಳಿಸಲಾಗಿದೆ]',
'histfirst' => 'ಅತ್ಯಂತ ಮುಂಚಿನ',
'histlast' => 'ಅತ್ಯಂತ ಇತ್ತೀಚಿನ',
'historysize' => '({{PLURAL:$1|೧ ಬೈಟ್|$1 ಬೈಟ್‍ಗಳು}})',
@@ -702,41 +694,46 @@ $2',
# Revision feed
'history-feed-title' => 'ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ',
'history-feed-description' => 'ವಿಕಿಯ ಈ ಪುಟದ ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ',
-'history-feed-item-nocomment' => '$1 $2 ಅಲ್ಲಿ', # user at time
+'history-feed-item-nocomment' => '$1 $2 ಅಲ್ಲಿ',
'history-feed-empty' => 'ನೀವು ಕೋರಿರುವ ಪುಟ ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇಲ್ಲ.
ಅದು ವಿಕಿಯಿಂದ ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು ಅಥವ ಪುನರ್ನಾಮಕಾರಣಗೊಂಡಿರಬಹುದು.
ಸಂಬಂಧಿತ ಹೊಸ ಪುಟಗಳನ್ನು [[Special:Search|ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸಿ]].',
# Revision deletion
-'rev-deleted-comment' => '(ಕಮೆ೦ಟ್ ತೆಗೆದು ಹಾಕಲಾಗಿದೆ)',
-'rev-deleted-user' => '(ಬಳಕೆದಾರ ಹೆಸರು ತಗೆಯಲ್ಪಟ್ಟಿದೆ)',
-'rev-deleted-event' => '(ದಾಖಲೆ ಕ್ರಿಯೆ ತೆಗೆಯಲಾಯಿತು)',
-'rev-delundel' => 'ತೋರಿಸು/ಅಡಗಿಸು',
-'revdelete-selected' => "'''[[:$1]]ರ ಆಯ್ಕೆಯಾಗಿರುವ {{PLURAL:$2|ಆವೃತ್ತಿ|ಆವೃತ್ತಿಗಳು}}:'''",
-'revdelete-text' => "'''ಅಳಿಸಲ್ಪಟ್ಟಿರುವ ಬದಲಾವಣೆಗಳು ಮತ್ತು ಘಟನೆಗಳು ಪುಟದ ಇತಿಹಾಸದಲ್ಲಿ ತೋರುತ್ತದೆ, ಆದರೆ ಅದರಲ್ಲಿನ ಮಾಹಿತಿಯು ಸಾರ್ವಜನಿಕರಿಗೆ ದೊರೆಯುವುದಿಲ್ಲ.'''
+'rev-deleted-comment' => '(ಕಮೆ೦ಟ್ ತೆಗೆದು ಹಾಕಲಾಗಿದೆ)',
+'rev-deleted-user' => '(ಬಳಕೆದಾರ ಹೆಸರು ತಗೆಯಲ್ಪಟ್ಟಿದೆ)',
+'rev-deleted-event' => '(ದಾಖಲೆ ಕ್ರಿಯೆ ತೆಗೆಯಲಾಯಿತು)',
+'rev-delundel' => 'ತೋರಿಸು/ಅಡಗಿಸು',
+'rev-showdeleted' => 'ತೋರಿಸು',
+'revdelete-show-file-submit' => 'ಹೌದು',
+'revdelete-selected' => "'''[[:$1]]ರ ಆಯ್ಕೆಯಾಗಿರುವ {{PLURAL:$2|ಆವೃತ್ತಿ|ಆವೃತ್ತಿಗಳು}}:'''",
+'revdelete-text' => "'''ಅಳಿಸಲ್ಪಟ್ಟಿರುವ ಬದಲಾವಣೆಗಳು ಮತ್ತು ಘಟನೆಗಳು ಪುಟದ ಇತಿಹಾಸದಲ್ಲಿ ತೋರುತ್ತದೆ, ಆದರೆ ಅದರಲ್ಲಿನ ಮಾಹಿತಿಯು ಸಾರ್ವಜನಿಕರಿಗೆ ದೊರೆಯುವುದಿಲ್ಲ.'''
{{SITENAME}} ಅಲ್ಲಿನ ಇತರ ನಿರ್ವಾಹಕರು ಹೀಗೆ ಅಡಗಿಸಲ್ಪಟ್ಟ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಅದರ ಅಳಿಸುವಿಕೆಯನ್ನು ಇದೇ ವ್ಯವಸ್ಥೆಯ ಪ್ರಕಾರ ರದ್ದುಮಾಡಬಹುದು. ಹೆಚ್ಚುವರಿ ನಿಬಂಧನಗಳಿದ್ದರೆ ಹಾಗೆ ಮಾಡಲಾಗುವುದಿಲ್ಲ.",
-'revdelete-legend' => 'ಕಾಣಿಸುವಿಕೆಯ ನಿಬಂಧನೆಗಳನ್ನು ನಿಶ್ಚಯಿಸು',
-'revdelete-hide-text' => 'ಬದಲಾವಣೆಯ ಪಠ್ಯವನ್ನು ಅಡಗಿಸು',
-'revdelete-hide-name' => 'ಕಾರ್ಯ ಮತ್ತು ಗುರಿಗಳನ್ನು ಅಡಗಿಸು',
-'revdelete-hide-comment' => 'ಸಂಪಾದನೆ ವಿವರಣೆ ಅಡಗಿಸು',
-'revdelete-hide-user' => 'ಸಂಪಾದಕರ ಬಳಕೆಯ ಹೆಸರು/IP ಅಡಗಿಸು',
-'revdelete-hide-restricted' => 'ಈ ನಿಬಂಧನೆಗಳನ್ನು ನಿರ್ವಾಹಕರಿಗೂ ಅನ್ವಯಿಸು ಮತ್ತು ಈ interface ಗೆ ಬೀಗ ಹಾಕು',
-'revdelete-suppress' => 'ನಿರ್ವಾಹಕರಿಂದ ಮತ್ತಿತರರಿಂದ ಬಂದ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು',
-'revdelete-hide-image' => 'ಫೈಲಿನಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು',
-'revdelete-unsuppress' => 'ಪುನಃ ಸ್ಥಾಪಿಸಿದ ಬದಲಾವಣೆಗಳ ಮೇಲಿನ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆ',
-'revdelete-log' => 'ಕಾರಣ:',
-'revdelete-submit' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಬದಲಾವಣೆಗೆ ಅನ್ವಯಿಸು',
-'revdelete-logentry' => '[[$1]] ರ ಸಂಪಾದನೆಯ ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲಾಯಿತು',
-'revdel-restore' => 'ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸು',
-'pagehist' => 'ಪುಟದ ಇತಿಹಾಸ',
-'deletedhist' => 'ಅಳಿಸಲ್ಪಟ್ಟ ಇತಿಹಾಸ',
-'revdelete-content' => 'ಮಾಹಿತಿ',
-'revdelete-summary' => 'ಸಂಪಾದನೆಯ ತಾತ್ಪರ್ಯ',
-'revdelete-uname' => 'ಬಳಕೆಯ ಹೆಸರು',
-'revdelete-restricted' => 'ನಿರ್ವಾಹಕರಿಗೆ ನಿಬಂಧನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಯಿತು',
-'revdelete-unrestricted' => 'ನಿರ್ವಾಹಕರ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆಯಲಾಯಿತು',
-'revdelete-hid' => '$1 ಅಡಗಿಸಲಾಯಿತು',
+'revdelete-legend' => 'ಕಾಣಿಸುವಿಕೆಯ ನಿಬಂಧನೆಗಳನ್ನು ನಿಶ್ಚಯಿಸು',
+'revdelete-hide-text' => 'ಬದಲಾವಣೆಯ ಪಠ್ಯವನ್ನು ಅಡಗಿಸು',
+'revdelete-hide-image' => 'ಫೈಲಿನಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು',
+'revdelete-hide-name' => 'ಕಾರ್ಯ ಮತ್ತು ಗುರಿಗಳನ್ನು ಅಡಗಿಸು',
+'revdelete-hide-comment' => 'ಸಂಪಾದನೆ ವಿವರಣೆ ಅಡಗಿಸು',
+'revdelete-hide-user' => 'ಸಂಪಾದಕರ ಬಳಕೆಯ ಹೆಸರು/IP ಅಡಗಿಸು',
+'revdelete-hide-restricted' => 'ಈ ನಿಬಂಧನೆಗಳನ್ನು ನಿರ್ವಾಹಕರಿಗೂ ಅನ್ವಯಿಸು ಮತ್ತು ಈ interface ಗೆ ಬೀಗ ಹಾಕು',
+'revdelete-radio-set' => 'ಹೌದು',
+'revdelete-radio-unset' => 'ಇಲ್ಲ',
+'revdelete-suppress' => 'ನಿರ್ವಾಹಕರಿಂದ ಮತ್ತಿತರರಿಂದ ಬಂದ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು',
+'revdelete-unsuppress' => 'ಪುನಃ ಸ್ಥಾಪಿಸಿದ ಬದಲಾವಣೆಗಳ ಮೇಲಿನ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆ',
+'revdelete-log' => 'ಕಾರಣ:',
+'revdelete-submit' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಬದಲಾವಣೆಗೆ ಅನ್ವಯಿಸು',
+'revdelete-logentry' => '[[$1]] ರ ಸಂಪಾದನೆಯ ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲಾಯಿತು',
+'revdel-restore' => 'ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸು',
+'pagehist' => 'ಪುಟದ ಇತಿಹಾಸ',
+'deletedhist' => 'ಅಳಿಸಲ್ಪಟ್ಟ ಇತಿಹಾಸ',
+'revdelete-content' => 'ಮಾಹಿತಿ',
+'revdelete-summary' => 'ಸಂಪಾದನೆಯ ತಾತ್ಪರ್ಯ',
+'revdelete-uname' => 'ಬಳಕೆಯ ಹೆಸರು',
+'revdelete-restricted' => 'ನಿರ್ವಾಹಕರಿಗೆ ನಿಬಂಧನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಯಿತು',
+'revdelete-unrestricted' => 'ನಿರ್ವಾಹಕರ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆಯಲಾಯಿತು',
+'revdelete-hid' => '$1 ಅಡಗಿಸಲಾಯಿತು',
+'revdelete-edit-reasonlist' => 'ಅಳಿಸುವಿಕೆಯ ಕಾರಣಗಳನ್ನು ಸಂಪಾದಿಸು',
# History merging
'mergehistory' => 'ಪುಟ ಇತಿಹಾಸಗಳನ್ನು ವಿಲೀನಗೊಳಿಸು',
@@ -775,26 +772,6 @@ $2',
'compareselectedversions' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಆವೃತ್ತಿಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಿ ನೋಡಿ',
'editundo' => 'ಹಿಂದಿನಂತೆ',
'diff-multi' => '(ಮಧ್ಯದಲ್ಲಿ ಆಗಿರುವ {{PLURAL:$1|೧ ಬದಲಾವಣೆಯನ್ನು|$1 ಬದಲಾವಣೆಗಳನ್ನು}} ತೋರಿಸಲಾಗಿಲ್ಲ.)',
-'diff-movedto' => '$1 ಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ',
-'diff-styleadded' => '$1 ಅಲಂಕಾರ ಸೇರಿಸಲಾಗಿದೆ',
-'diff-added' => '$1 ಸೇರಿಸಲಾಗಿದೆ',
-'diff-changedto' => '$1 ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ',
-'diff-movedoutof' => '$1 ಇಂದ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ',
-'diff-styleremoved' => '$1 ಅಲಂಕಾರ ತೆಗೆಯಲಾಗಿದೆ',
-'diff-removed' => '$1 ತೆಗೆಯಲಾಗಿದೆ',
-'diff-changedfrom' => '$1 ಇಂದ ಬದಲಾವಣೆ',
-'diff-src' => 'ಮೂಲ',
-'diff-with' => '&#32;$1 $2 ಒಂದಿಗೆ',
-'diff-width' => 'ಅಗಲ',
-'diff-height' => 'ಉದ್ದ',
-'diff-p' => "ಒ೦ದು '''ಪ್ಯಾರ '''",
-'diff-h1' => "ಒಂದು '''ಶೀರ್ಷಿಕೆ (ಮಟ್ಟ ೧)'''",
-'diff-h2' => "ಒಂದು '''ಶೀರ್ಷಿಕೆ (ಮಟ್ಟ ೨)'''",
-'diff-h3' => "ಒಂದು '''ಶೀರ್ಷಿಕೆ (ಮಟ್ಟ ೩)'''",
-'diff-img' => "ಒ೦ದು '''ಚಿತ್ರ'''",
-'diff-a' => "ಒ೦ದು '''ಕೊ೦ಡಿ'''",
-'diff-i' => "'''ವಾರೆಯಾಗಿರುವ'''",
-'diff-b' => "'''ದಪ್ಪ'''",
# Search results
'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು',
@@ -802,17 +779,17 @@ $2',
'searchresulttext' => '{{SITENAME}} ಅಲ್ಲಿ ಹುಡುಕಾಟ ನಡೆಸುವ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ [[{{MediaWiki:Helppage}}|{{int:help}}]] ಅನ್ನು ನೋಡಿ.',
'searchsubtitle' => 'ನೀವು \'\'\'[[:$1]]\'\'\' ಅನ್ನು ಹುಡುಕಿದಿರಿ ([[Special:Prefixindex/$1|"$1" ಇಂದ ಪ್ರಾರಂಭವಾಗುವ ಎಲ್ಲಾ ಪುಟಗಳು]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಎಲ್ಲಾ ಪುಟಗಳು]])',
'searchsubtitleinvalid' => "'''$1''' ಅನ್ನು ಹುಡುಕಿದಿರಿ",
-'noexactmatch' => "'''\"\$1\" ಹೆಸರಿನ ಯಾವ ಪುಟವೂ ಇಲ್ಲ.''' ನೀವು ಅದನ್ನು [[:\$1|ಸೃಷ್ಟಿಸಬಹುದು]].",
-'noexactmatch-nocreate' => "'''\"\$1\" ಹೆಸರಿನ ಯಾವ ಪುಟವೂ ಇಲ್ಲ.'''",
'toomanymatches' => 'ತುಂಬಾ ಫಲಿತಾಂಶಗಳು ದೊರೆತಿವೆ, ದಯವಿಟ್ಟು ಬೇರೆ ಪದಪುಂಜವನ್ನು ಪ್ರಯತ್ನಿಸಿ',
'titlematches' => 'ಹೊಂದಿಕೆಯಿರುವ ಪುಟ ಶೀರ್ಷಿಕೆಗಳು',
'notitlematches' => 'ಯಾವ ಪುಟ ಶೀರ್ಷಿಕೆಗಳೂ ಹೊಂದಿಕೆ ತೋರಲಿಲ್ಲ',
'textmatches' => 'ಪುಟದ ಪಠ್ಯದಲ್ಲಿನ ಹೋಲಿಕೆಗಳು',
'notextmatches' => 'ಯಾವ ಪುಟದ ಪಠ್ಯದಲ್ಲೂ ಹೋಲಿಕೆಗಳಿಲ್ಲ',
-'prevn' => 'ಹಿಂದಿನ $1',
-'nextn' => 'ಮುಂದಿನ $1',
-'viewprevnext' => 'ವೀಕ್ಷಿಸು ($1) ($2) ($3)',
+'prevn' => 'ಹಿಂದಿನ {{PLURAL:$1|$1}}',
+'nextn' => 'ಮುಂದಿನ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ವೀಕ್ಷಿಸು ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
+'searchprofile-project' => 'ಸಹಾಯ ಮತ್ತು ಯೋಜನೆ ಪುಟಗಳು',
+'searchprofile-images' => 'ಬಹುಮಾಧ್ಯಮ',
'searchprofile-advanced' => 'ಪರಿಣತ',
'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳು}})',
'search-result-score' => 'ಸಂಬದ್ಧತೆ: $1%',
@@ -830,7 +807,6 @@ $2',
'searchall' => 'ಎಲ್ಲಾ',
'showingresults' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾದ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
'showingresultsnum' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾಗಿ {{PLURAL:$3|'''೧''' ಫಲಿತಾಂಶವನ್ನು|'''$3''' ಫಲಿತಾಂಶಗಳನ್ನು}} ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
-'showingresultstotal' => "{{PLURAL:$4|ಒಟ್ಟು '''$3''' ಫಲಿತಾಂಶದಲ್ಲಿ '''$1''' ಅನ್ನು |'''$3''' ಫಲಿತಾಂಶಗಳಲ್ಲಿ '''$1''' ಇಂದ '''$2''' ವರೆಗಿನವನ್ನು}} ಕೆಳಗೆ ತೋರಿಸಲಾಗುತ್ತಿದೆ",
'nonefound' => "'''ಸೂಚನೆ''': ಕೆಲವೊಂದು ನೇಮ್ ಸ್ಪೇಸ್ ಗಳನ್ನು ಮಾತ್ರ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಹುಡುಕಲಾಗುತ್ತದೆ.
ನಿಮ್ಮ ಹುಡುಕುಪದದ ಹಿಂದೆ ''all:'' ಬಳಸಿ, ವಿಷಯವನ್ನು ಹುಡುಕಿ (ಚರ್ಚೆ, ಟೆಂಪ್ಲೇಟು, ಇತ್ಯಾದಿ ಪುಟಗಳನ್ನೊಳಗೊಂಡು), ಅಥವಾ ನಿಮಗೆ ಇಷ್ಟ ಬಂದ ನೇಮ್ ಸ್ಪೇಸ್ ಅನ್ನು ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನಾಗಿ ಬಳಸಿ.",
'powersearch' => 'ಹುಡುಕಿ',
@@ -843,66 +819,87 @@ $2',
ಈ ವೇಳೆಯಲ್ಲಿ ನೀವು ಗೂಗಲ್ ಉಪಯೋಗಿಸಿ ಹುಡುಕಾಟ ನಡೆಸಬಹುದು.
ಗಮನಿಸಿ: ಅವರ {{SITENAME}} ಮಾಹಿತಿಯು ಪ್ರಸಕ್ತವಾಗಿಲ್ಲದಿರಬಹುದು.',
+# Quickbar
+'qbsettings-none' => 'ಯಾವುದೂ ಇಲ್ಲ',
+'qbsettings-floatingleft' => 'ಎಡಕ್ಕ ತೇಲುತ್ತಿದೆ',
+'qbsettings-floatingright' => 'ಬಲಕ್ಕೆ ತೇಲುತ್ತಿದೆ',
+
# Preferences page
-'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
-'mypreferences' => 'ನನ್ನ ಪ್ರಾಶಸ್ತ್ಯಗಳು',
-'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
-'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
-'prefsnologintext' => 'ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ನೀವು <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ಲಾಗ್ ಇನ್]</span> ಆಗಿರಬೇಕು.',
-'prefsreset' => 'ಮುಂಚೆ ಉಳಿಸಲ್ಪಟ್ಟ ಮಾಹಿತಿಯಿಂದ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು reset ಮಾಡಲಾಯಿತು.',
-'qbsettings-none' => 'ಯಾವುದೂ ಇಲ್ಲ',
-'qbsettings-floatingleft' => 'ಎಡಕ್ಕ ತೇಲುತ್ತಿದೆ',
-'qbsettings-floatingright' => 'ಬಲಕ್ಕೆ ತೇಲುತ್ತಿದೆ',
-'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
-'skin' => 'ಚರ್ಮ',
-'skin-preview' => 'ಮುನ್ನೋಟ',
-'math' => 'ಗಣಿತ',
-'dateformat' => 'ದಿನಾಂಕದ ಫಾರ್ಮ್ಯಾಟ್',
-'datedefault' => 'ಯಾವುದೇ ಪ್ರಾಶಸ್ತ್ಯ ಇಲ್ಲ',
-'datetime' => 'ದಿನ ಮತ್ತು ಸಮಯ',
-'math_unknown_error' => 'ತಿಳಿದಿಲ್ಲದ ದೋಷ',
-'math_image_error' => 'PNGಗೆ ಬದಲಾವಣೆ ವಿಫಲವಾಯಿತು;
-latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆಯೆ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿ ಬದಲಾಯಿಸಿ',
-'prefs-personal' => 'ಬಳಕೆದಾರರ ಬಗ್ಗೆ',
-'prefs-rc' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು',
-'prefs-watchlist' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿ',
-'prefs-watchlist-days' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ತೋರಿಸಲಾಗುವ ದಿನಗಳು:',
-'prefs-watchlist-edits' => 'ವಿಸ್ತೃತ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ಗರಿಷ್ಠ ಬದಲಾವಣೆಗಳು:',
-'prefs-misc' => 'ಇತರೆ',
-'prefs-resetpass' => 'ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ',
-'saveprefs' => 'ಉಳಿಸಿ',
-'resetprefs' => 'ಉಳಿಸಿಲ್ಲದ ಬದಲಾವಣೆಗಳನ್ನು ಅಳಿಸು',
-'textboxsize' => 'ಸಂಪಾದನೆ',
-'rows' => 'ಸಾಲುಗಳು:',
-'searchresultshead' => 'ಹುಡುಕು',
-'resultsperpage' => 'ಪ್ರತಿ ಪುಟದಲ್ಲಿ ಫಲಿತಾಂಶಗಳು:',
-'recentchangesdays' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:',
-'recentchangescount' => 'ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿರುವ ವಿಷಯಗಳ ಸಂಖ್ಯೆ',
-'savedprefs' => 'ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.',
-'timezonelegend' => 'ಸಮಯ ವಲಯ:',
-'timezonetext' => '¹ನಿಮ್ಮ ಸ್ಥಳೀಯ ಸಮಯಕ್ಕೂ ಸರ್ವರ್‍ನ ಸಮಯಕ್ಕೂ (UTC) ಇರುವ ಗಂಟೆಗಳ ವ್ಯತ್ಯಾಸ.',
-'localtime' => 'ಸ್ಥಳೀಯ ಸಮಯ:',
-'timezoneselect' => 'ಸಮಯ ವಲಯ:',
-'timezoneoffset' => 'ವ್ಯತ್ಯಾಸ¹',
-'servertime' => 'ಸರ್ವರ್ ಕಾಲ',
-'guesstimezone' => 'ಬ್ರೌಸರ್ ಇಂದ ತುಂಬು',
-'timezoneregion-africa' => 'ಆಫ್ರಿಕ',
-'timezoneregion-america' => 'ಅಮೇರಿಕ',
-'timezoneregion-antarctica' => 'ಅಂಟಾರ್ಟಿಕ',
-'timezoneregion-arctic' => 'ಆರ್ಕ್ಟಿಕ್',
-'timezoneregion-asia' => 'ಏಷ್ಯಾ',
-'timezoneregion-atlantic' => 'ಅಟ್ಲಾಂಟಿಕ್ ಮಹಾಸಾಗರ',
-'timezoneregion-australia' => 'ಆಸ್ಟ್ರೇಲಿಯಾ',
-'timezoneregion-europe' => 'ಯುರೋಪ್',
-'timezoneregion-indian' => 'ಹಿಂದೂ ಮಹಾಸಾಗರ',
-'timezoneregion-pacific' => 'ಪೆಸಿಫಿಕ್ ಮಹಾಸಾಗರ',
-'allowemail' => 'ಬೇರೆ ಸದಸ್ಯರಿಂದ ಈ-ಮೈಲ್‍ಗಳನ್ನು ಸ್ವೀಕರಿಸು',
-'defaultns' => 'ಮೂಲಸ್ಥಿತಿಯಲ್ಲಿ ಈ ಪುಟಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕಿ:',
-'default' => 'ಮೂಲಸ್ಥಿತಿ',
-'files' => 'ಫೈಲುಗಳು',
+'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
+'mypreferences' => 'ನನ್ನ ಪ್ರಾಶಸ್ತ್ಯಗಳು',
+'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
+'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
+'prefsnologintext' => 'ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ನೀವು <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ಲಾಗ್ ಇನ್]</span> ಆಗಿರಬೇಕು.',
+'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
+'prefs-skin' => 'ಚರ್ಮ',
+'skin-preview' => 'ಮುನ್ನೋಟ',
+'prefs-math' => 'ಗಣಿತ',
+'datedefault' => 'ಯಾವುದೇ ಪ್ರಾಶಸ್ತ್ಯ ಇಲ್ಲ',
+'prefs-datetime' => 'ದಿನ ಮತ್ತು ಸಮಯ',
+'prefs-personal' => 'ಬಳಕೆದಾರರ ಬಗ್ಗೆ',
+'prefs-rc' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು',
+'prefs-watchlist' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿ',
+'prefs-watchlist-days' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ತೋರಿಸಲಾಗುವ ದಿನಗಳು:',
+'prefs-watchlist-days-max' => 'ಗರಿಷ್ಠ ೭ ದಿನಗಳು',
+'prefs-watchlist-edits' => 'ವಿಸ್ತೃತ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ಗರಿಷ್ಠ ಬದಲಾವಣೆಗಳು:',
+'prefs-watchlist-edits-max' => 'ಗರಿಷ್ಠ ಸಂಖ್ಯೆ: ೧೦೦೦',
+'prefs-misc' => 'ಇತರೆ',
+'prefs-resetpass' => 'ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ',
+'prefs-email' => 'ಇ-ಅಂಚೆ ಇಚ್ಛೆಗಳು',
+'saveprefs' => 'ಉಳಿಸಿ',
+'resetprefs' => 'ಉಳಿಸಿಲ್ಲದ ಬದಲಾವಣೆಗಳನ್ನು ಅಳಿಸು',
+'prefs-editing' => 'ಸಂಪಾದನೆ',
+'rows' => 'ಸಾಲುಗಳು:',
+'searchresultshead' => 'ಹುಡುಕು',
+'resultsperpage' => 'ಪ್ರತಿ ಪುಟದಲ್ಲಿ ಫಲಿತಾಂಶಗಳು:',
+'recentchangesdays' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:',
+'recentchangescount' => 'ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿರುವ ವಿಷಯಗಳ ಸಂಖ್ಯೆ',
+'savedprefs' => 'ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.',
+'timezonelegend' => 'ಸಮಯ ವಲಯ:',
+'localtime' => 'ಸ್ಥಳೀಯ ಸಮಯ:',
+'timezoneoffset' => 'ವ್ಯತ್ಯಾಸ¹',
+'servertime' => 'ಸರ್ವರ್ ಕಾಲ',
+'guesstimezone' => 'ಬ್ರೌಸರ್ ಇಂದ ತುಂಬು',
+'timezoneregion-africa' => 'ಆಫ್ರಿಕ',
+'timezoneregion-america' => 'ಅಮೇರಿಕ',
+'timezoneregion-antarctica' => 'ಅಂಟಾರ್ಟಿಕ',
+'timezoneregion-arctic' => 'ಆರ್ಕ್ಟಿಕ್',
+'timezoneregion-asia' => 'ಏಷ್ಯಾ',
+'timezoneregion-atlantic' => 'ಅಟ್ಲಾಂಟಿಕ್ ಮಹಾಸಾಗರ',
+'timezoneregion-australia' => 'ಆಸ್ಟ್ರೇಲಿಯಾ',
+'timezoneregion-europe' => 'ಯುರೋಪ್',
+'timezoneregion-indian' => 'ಹಿಂದೂ ಮಹಾಸಾಗರ',
+'timezoneregion-pacific' => 'ಪೆಸಿಫಿಕ್ ಮಹಾಸಾಗರ',
+'allowemail' => 'ಬೇರೆ ಸದಸ್ಯರಿಂದ ಈ-ಮೈಲ್‍ಗಳನ್ನು ಸ್ವೀಕರಿಸು',
+'defaultns' => 'ಮೂಲಸ್ಥಿತಿಯಲ್ಲಿ ಈ ಪುಟಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕಿ:',
+'default' => 'ಮೂಲಸ್ಥಿತಿ',
+'prefs-files' => 'ಫೈಲುಗಳು',
+'youremail' => 'ಇ-ಅಂಚೆ:',
+'username' => 'ಸದಸ್ಯತ್ವದ ಹೆಸರು:',
+'uid' => 'ಬಳಕೆದಾರ ID:',
+'prefs-memberingroups' => 'ಈ {{PLURAL:$1|ಗುಂಪಿನ|ಗುಂಪುಗಳ}} ಸದಸ್ಯ:',
+'yourrealname' => 'ನಿಜ ಹೆಸರು:',
+'yourlanguage' => 'ಭಾಷೆ:',
+'yournick' => 'ಸಹಿ:',
+'badsiglength' => 'ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.
+ಅದು $1 {{PLURAL:$1|ಅಕ್ಷರಕ್ಕಿಂತ|ಅಕ್ಷರಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.',
+'yourgender' => 'ಲಿಂಗ:',
+'gender-male' => 'ಗಂಡಸು',
+'gender-female' => 'ಸ್ತ್ರೀ',
+'email' => 'ಇ-ಅಂಚೆ',
+'prefs-help-realname' => 'ನಿಜ ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.',
+'prefs-help-email' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನೀವು ಅದನ್ನು ನೀಡಿದರೆ ನೀವು ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಮರೆತರೆ ಅದನ್ನು ನಿಮಗೆ ಇ-ಅಂಚೆಯಿಂದ ಕಳುಹಿಸಿಬಹುದು.
+ಅಲ್ಲದೆ ಬೇರೆಯವರು ನಿಮ್ಮನ್ನು ಇತರರಿಗೆ ತಿಳಿಯದಂತೆ ನಿಮ್ಮ ಸದಸ್ಯ ಪುಟ ಅಥವ ಚರ್ಚೆ ಪುಟದ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬಹುದು.',
+'prefs-help-email-required' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಬೇಕಾಗಿದೆ.',
+'prefs-signature' => 'ಸಹಿ',
+'prefs-advancedediting' => 'ಪರಿಣತ ಇಚ್ಛೆಗಳು',
+'prefs-advancedrc' => 'ಪರಿಣತ ಇಚ್ಛೆಗಳು',
+'prefs-advancedrendering' => 'ಪರಿಣತ ಇಚ್ಛೆಗಳು',
+'prefs-advancedsearchoptions' => 'ಪರಿಣತ ಇಚ್ಛೆಗಳು',
+'prefs-advancedwatchlist' => 'ಪರಿಣತ ಇಚ್ಛೆಗಳು',
# User rights
-'userrights' => 'ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ನಿರ್ವಹಣೆ', # Not used as normal message but as header for the special page itself
+'userrights' => 'ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ನಿರ್ವಹಣೆ',
'userrights-lookup-user' => 'ಬಳಕೆದಾರ ಗುಂಪುಗಳನ್ನು ನಿರ್ವಹಿಸು',
'userrights-user-editname' => 'ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಸೂಚಿಸಿ:',
'editusergroup' => 'ಬಳಕೆದಾರ ಗುಂಪುಗಳನ್ನು ಸಂಪಾದಿಸು',
@@ -1000,6 +997,8 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
# Recent changes linked
'recentchangeslinked' => 'ಸಂಬಂಧಪಟ್ಟ ಬದಲಾವಣೆಗಳು',
+'recentchangeslinked-feed' => 'ಸಂಬಂಧಪಟ್ಟ ಬದಲಾವಣೆಗಳು',
+'recentchangeslinked-toolbox' => 'ಸಂಬಂಧಪಟ್ಟ ಬದಲಾವಣೆಗಳು',
'recentchangeslinked-title' => '"$1" ಪುಟಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಬದಲಾವಣೆಗಳು',
'recentchangeslinked-noresult' => 'ಸೂಚಿತ ಕಾಲದಲ್ಲಿ ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿ ಯಾವ ಬದಲಾವಣೆಗಳೂ ಇಲ್ಲ.',
'recentchangeslinked-summary' => "ಒಂದು ನಿರ್ದಿಷ್ಟ ಪುಟದಿಂದ (ಅಥವ ನಿರ್ದಿಷ್ಟ ವರ್ಗಕ್ಕೆ ಸೇರಿರುವ ಪುಟಗಳಿಂದ) ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಮಾಡಲಾಗಿರುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ.
@@ -1010,7 +1009,6 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
# Upload
'upload' => 'ಫೈಲ್ ಅಪ್ಲೋಡ್',
'uploadbtn' => 'ಫೈಲನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ',
-'reupload' => 'ಮರು-ಅಪ್ಲೋಡ್',
'reuploaddesc' => 'ಅಪ್ಲೋಡ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತೆ ಅಪ್ಲೋಡ್ ವಕ್ಕಣೆಗೆ ಹಿಂದಿರುಗಿ',
'uploadnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
'uploadnologintext' => 'ಫೈಲುಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲು ನೀವು [[Special:UserLogin|ಲಾಗ್ ಇನ್]] ಆಗಬೇಕು.',
@@ -1053,7 +1051,6 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
* ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತಿರುವ ಫೈಲಿನ ಹೆಸರು: '''<tt>[[:$1]]</tt>'''
* ಅಸ್ಥಿತ್ವದಲ್ಲಿರುವ ಫೈಲಿನ ಹೆಸರು: '''<tt>[[:$2]]</tt>'''
ದಯವಿಟ್ಟು ಬೇರೆ ಹೆಸರೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ.",
-'fileexists-thumb' => "<center>'''ಅಸ್ಥಿತ್ವದಲ್ಲಿರುವ ಫೈಲು'''</center>",
'fileexists-thumbnail-yes' => "ಈ ಫೈಲು ಯಾವುದೋ ಚಿತ್ರದ ಕಿರುನೋಟ ''(thumbnail)'' ಇರಬಹುದೆಂದು ಅನಿಸುತ್ತದೆ . [[$1|thumb]]
ದಯವಿಟ್ಟು '''<tt>[[:$1]]</tt>''' ಫೈಲನ್ನೊಮ್ಮೆ ಪರೀಕ್ಷಿಸಿ.
ನೀವು ಪರೀಕ್ಷಿಸಿದ ಫೈಲು ಆ ಚಿತ್ರದ ಮೂಲ ಗಾತ್ರದ್ದಾಗಿದ್ದಲ್ಲಿ ಈ ಕಿರುನೋಟವನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ.",
@@ -1071,8 +1068,6 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'overwroteimage' => '"[[$1]]" ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲಾಯಿತು',
'uploaddisabled' => 'ಅಪ್ಲೋಡ್‍ಗಳು ನಿರ್ಬಂಧಿತವಾಗಿದೆ',
'uploaddisabledtext' => '{{SITENAME}} ತಾಣದಲ್ಲಿ ಫೈಲುಗಳ ಅಪ್ಲೋಡ್ ಮಾಡುವಿಕೆ ತಡೆಗಟ್ಟಲ್ಪಟ್ಟಿದೆ.',
-'uploadcorrupt' => 'ಈ ಫೈಲು ಕುಲಗೆಟ್ಟಿದೆ ಅಥವ ತಪ್ಪಾದ ಉಪನಾಮವನ್ನು (extension) ಹೊಂದಿದೆ.
-ದಯವಿಟ್ಟು ಮತ್ತೊಮ್ಮೆ ಫೈಲನ್ನು ಪರೀಕ್ಷಿಸಿ ನಂತರ ಅಪ್ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.',
'uploadvirus' => 'ಈ ಫೈಲಿನಲ್ಲಿ ಒಂದು ವೈರಸ್ ಇದೆ! ಮಾಹಿತಿ: $1',
'sourcefilename' => 'ಮೂಲ ಫೈಲಿನ ಹೆಸರು:',
'upload-maxfilesize' => 'ಗರಿಷ್ಠ ಫೈಲು ಗಾತ್ರ: $1',
@@ -1112,6 +1107,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'listfiles_count' => 'ಆವೃತ್ತಿಗಳು',
# File description page
+'file-anchor-link' => 'ಚಿತ್ರ',
'filehist' => 'ಕಡತದ ಇತಿಹಾಸ',
'filehist-help' => 'ದಿನ/ಕಾಲ ಒತ್ತಿದರೆ ಆ ಸಮಯದಲ್ಲಿ ಈ ಕಡತದ ವಸ್ತುಸ್ಥಿತಿ ತೋರುತ್ತದೆ.',
'filehist-deleteall' => 'ಎಲ್ಲವನ್ನೂ ಅಳಿಸು',
@@ -1119,6 +1115,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'filehist-current' => 'ಪ್ರಸಕ್ತ',
'filehist-datetime' => 'ದಿನ/ಕಾಲ',
'filehist-thumb' => 'ಕಿರುನೋಟ',
+'filehist-thumbtext' => '$1 ವರೆಗಿನ ಆವೃತ್ತಿಯ ಕಿರುನೋಟ',
'filehist-user' => 'ಸದಸ್ಯ',
'filehist-dimensions' => 'ಆಯಾಮಗಳು',
'filehist-filesize' => 'ಫೈಲಿನ ಗಾತ್ರ',
@@ -1126,11 +1123,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'imagelinks' => 'ಫೈಲು ಕೊಂಡಿಗಳು',
'linkstoimage' => 'ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಪುಟವು|$1 ಪುಟಗಳು}} ಈ ಚಿತ್ರಕ್ಕೆ ಸಂಪರ್ಕ {{PLURAL:$1|ಹೊಂದಿದೆ|ಹೊಂದಿವೆ}}:',
'nolinkstoimage' => 'ಈ ಫೈಲಿಗೆ ಯಾವ ಪುಟವೂ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ.',
-'sharedupload' => 'ಈ ಫೈಲು $1 ಇಂದ. ಇದು ಇತರ ಯೋಜನೆಗಳಲ್ಲಿ ಉಪಯೋಗದಲ್ಲಿರಬಹುದು.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'ಹೆಚ್ಚನ ಮಾಹಿತಿಗೆ $1 ಅನ್ನು ನೋಡಿ.',
-'shareduploadwiki-linktext' => 'ಫೈಲಿನ ಮಾಹಿತಿ ಪುಟ',
-'noimage' => 'ಈ ಹೆಸರಿನ ಫೈಲು ಯಾವುದೂ ಇಲ್ಲ. ಆದರೆ ನೀವು ಅದನ್ನು $1.',
-'noimage-linktext' => 'ಅಪ್ಲೋಡ್ ಮಾಡಿ',
+'sharedupload' => 'ಈ ಫೈಲು $1 ಇಂದ. ಇದು ಇತರ ಯೋಜನೆಗಳಲ್ಲಿ ಉಪಯೋಗದಲ್ಲಿರಬಹುದು.',
'uploadnewversion-linktext' => 'ಈ ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ',
# File reversion
@@ -1190,8 +1183,8 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'brokenredirects' => 'ಮುರಿದ ರಿಡೈರೆಕ್ಟ್‌ಗಳು',
'brokenredirectstext' => 'ಕೆಳಗಿನ ರಿಡೈರೆಕ್ಟುಗಳು ವಿಕಿಯಲ್ಲಿ ಇಲ್ಲದ ಪುಟಗಳಿಗೆ ಸಂಪರ್ಕ ಹೊಂದಿವೆ:',
-'brokenredirects-edit' => '(ಸಂಪಾದಿಸಿ)',
-'brokenredirects-delete' => '(ಅಳಿಸಿ)',
+'brokenredirects-edit' => 'ಸಂಪಾದಿಸಿ',
+'brokenredirects-delete' => 'ಅಳಿಸಿ',
'withoutinterwiki' => 'ಬೇರೆ ಭಾಷೆಗಳಿಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರದ ಪುಟಗಳು',
'withoutinterwiki-summary' => 'ಈ ಕೆಳಗಿನ ಪುಟಗಳು ಅವುಗಳ ಇತರ ಭಾಷೆಯಲ್ಲಿರುವ ಪುಟಗಳಿಗೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿಲ್ಲ:',
@@ -1283,6 +1276,9 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'special-categories-sort-count' => 'ಎಣಿಕೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು',
'special-categories-sort-abc' => 'ಅಕ್ಷರಮಾಲೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'ಕಾಣಿಕೆಗಳು',
+
# Special:LinkSearch
'linksearch' => 'ಹೊರಗಿನ ಸಂಪರ್ಕಗಳು',
'linksearch-ok' => 'ಹುಡುಕು',
@@ -1401,7 +1397,6 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'protectexpiry' => 'ಮುಕ್ತಾಯ:',
'protect_expiry_invalid' => 'ಮುಕ್ತಾಯದ ಕಾಲ ಸಿಂಧುವಲ್ಲ.',
'protect_expiry_old' => 'ಮುಕ್ತಾಯದ ಕಾಲ ಭೂತಕಾಲದಲ್ಲಿ ಇದೆ.',
-'protect-unchain' => 'ಸ್ಥಳಾತಂರಿಸುವ ಅನುಮತಿಗಳನ್ನು ತೆರೆ',
'protect-text' => "ನೀವು ಇಲ್ಲಿ '''<nowiki>$1</nowiki>''' ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ಬದಲಾಯಿಸಬಹುದು.",
'protect-locked-access' => "ನಿಮ್ಮ ಖಾತೆಗೆ ಪುಟ ಸಂರಕ್ಷಣ ಮಟ್ಟಗಳನ್ನು ಬದಲಾಯಿಸುವ ಅನುಮತಿ ಇಲ್ಲ.
ಈ ಪುಟದ ಪ್ರಸಕ್ತ ವಸ್ತುಸ್ಥಿತಿ ಹೀಗಿದೆ: '''$1''':",
@@ -1415,7 +1410,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'protect-expiring' => 'ಮುಕ್ತಾಯ $1 (UTC)',
'protect-cascade' => 'ಈ ಪುಟದಲ್ಲಿ ಸೇರಿಸಲಾಗಿರುವ ಪುಟಗಳನ್ನು ಸಂರಕ್ಷಿಸು (ತಡಸಲು ಸಂರಕ್ಷಣೆ - cascading protection)',
'protect-cantedit' => 'ನೀವು ಈ ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ಬದಲಾಯಿಸುವ ಅನುಮತಿಯನ್ನು ಹೊಂದಿಲ್ಲ.',
-'protect-expiry-options' => '೨ ಗಂಟೆಗಳು:2 hours,೧ ದಿನ:1 day,೩ ದಿನಗಳು:3 days,೧ ವಾರ:1 week,೨ ವಾರಗಳು:2 weeks,೧ ತಿಂಗಳು:1 month,೩ ತಿಂಗಳುಗಳು:3 months,೬ ತಿಂಗಳುಗಳು:6 months,೧ ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '೨ ಗಂಟೆಗಳು:2 hours,೧ ದಿನ:1 day,೩ ದಿನಗಳು:3 days,೧ ವಾರ:1 week,೨ ವಾರಗಳು:2 weeks,೧ ತಿಂಗಳು:1 month,೩ ತಿಂಗಳುಗಳು:3 months,೬ ತಿಂಗಳುಗಳು:6 months,೧ ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite',
'restriction-type' => 'ಅನುಮತಿ:',
'restriction-level' => 'ನಿರ್ಬಂಧನೆಯ ಮಟ್ಟ:',
'minimum-size' => 'ಕನಿಷ್ಠ ಗಾತ್ರ',
@@ -1466,6 +1461,8 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'sp-contributions-newbies' => 'ಹೊಸ ಖಾತೆಗಳ ಕಾಣಿಕೆಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸು',
'sp-contributions-newbies-sub' => 'ಹೊಸ ಖಾತೆಗಳಿಗೆ',
'sp-contributions-blocklog' => 'ತಡೆಹಿಡಿಯುವಿಕೆ ದಾಖಲೆ',
+'sp-contributions-talk' => 'ಚರ್ಚೆ',
+'sp-contributions-userrights' => 'ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ನಿರ್ವಹಣೆ',
'sp-contributions-search' => 'ಸಂಪಾದನೆಗಳನ್ನು ಹುಡುಕು',
'sp-contributions-username' => 'IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರು:',
'sp-contributions-submit' => 'ಹುಡುಕು',
@@ -1509,7 +1506,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'ipbemailban' => 'ಬಳಕೆದಾರನು ಇ-ಅಂಚೆ ಕಳುಹಿಸುವುದನ್ನು ತಡೆಗಟ್ಟು',
'ipbsubmit' => 'ಈ ಸದಸ್ಯರನ್ನು ತಡೆಹಿಡಿಯಿರಿ',
'ipbother' => 'ಇತರ ಕಾಲಾವಧಿ:',
-'ipboptions' => '೨ ಗಂಟೆಗಳು:2 hours,೧ ದಿನ:1 day,೩ ದಿನಗಳು:3 days,೧ ವಾರ:1 week,೨ ವಾರಗಳು:2 weeks,೧ ತಿಂಗಳು:1 month,೩ ತಿಂಗಳುಗಳು:3 months,೬ ತಿಂಗಳುಗಳು:6 months,೧ ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '೨ ಗಂಟೆಗಳು:2 hours,೧ ದಿನ:1 day,೩ ದಿನಗಳು:3 days,೧ ವಾರ:1 week,೨ ವಾರಗಳು:2 weeks,೧ ತಿಂಗಳು:1 month,೩ ತಿಂಗಳುಗಳು:3 months,೬ ತಿಂಗಳುಗಳು:6 months,೧ ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite',
'ipbotheroption' => 'ಇತರ',
'ipbotherreason' => 'ಇತರ/ಹೆಚ್ಚುವರಿ ಕಾರಣ:',
'badipaddress' => 'ಸರಿಯಿಲ್ಲದ IP ವಿಳಾಸ',
@@ -1591,7 +1588,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'move-watch' => 'ಈ ಪುಟವನ್ನು ವೀಕ್ಷಿಸು',
'movepagebtn' => 'ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಿ',
'pagemovedsub' => 'ಸ್ಥಳಾಂತರಿಸುವಿಕೆ ಯಶಸ್ವಿಯಾಯಿತು',
-'movepage-moved' => '\'\'\'"$1" ಪುಟವನ್ನು "$2" ಹೆಸರಿಗೆ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ಪುಟವನ್ನು "$2" ಹೆಸರಿಗೆ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ\'\'\'',
'articleexists' => 'ಆ ಹೆಸರಿನಲ್ಲಿ ಒಂದು ಪುಟ ಆಗಲೇ ಅಸ್ಥಿತ್ವದಲ್ಲಿದೆ ಅಥವ ನೀವು ಆಯ್ಕೆ ಮಾಡಿರುವ ಹೆಸರು ಇತರ ಕಾರಣಗಳಿಗೆ ಸ್ವೀಕಾರಾರ್ಹವಾಗಿಲ್ಲ.
ದಯವಿಟ್ಟು ಬೇರೆ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.',
'cantmove-titleprotected' => 'ಈ ಜಾಗಕ್ಕೆ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ಆಗುವುದಿಲ್ಲ, ಯಾಕೆಂದರೆ ಆ ಶೀರ್ಷಿಕೆಯು ಸೃಷ್ಟಿಯಾಗದಂತೆ ಸಂರಕ್ಷಿತವಾಗಿದೆ',
@@ -1624,9 +1621,10 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'export-templates' => 'ಟೆಂಪ್ಲೇಟುಗಳನ್ನು ಸೇರಿಸು',
# Namespace 8 related
-'allmessages' => 'ಸಂಪರ್ಕ ಸಾಧನದ ಎಲ್ಲ ಸಂದೇಶಗಳು',
-'allmessagesname' => 'ಹೆಸರು',
-'allmessagesmodified' => 'ಬದಲಾವಣೆ ಮಾಡಿದ್ದನ್ನು ಮಾತ್ರ ತೋರಿಸು',
+'allmessages' => 'ಸಂಪರ್ಕ ಸಾಧನದ ಎಲ್ಲ ಸಂದೇಶಗಳು',
+'allmessagesname' => 'ಹೆಸರು',
+'allmessages-language' => 'ಭಾಷೆ:',
+'allmessages-filter-submit' => 'ಹೋಗು',
# Thumbnails
'thumbnail-more' => 'ದೊಡ್ಡದಾಗಿಸು',
@@ -1679,6 +1677,7 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'tooltip-search-fulltext' => 'ಈ ಪಠ್ಯವನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕು',
'tooltip-p-logo' => 'ಮುಖ್ಯ ಪುಟ',
'tooltip-n-mainpage' => 'ಮುಖ್ಯ ಪುಟ ನೋಡಿ',
+'tooltip-n-mainpage-description' => 'ಮುಖ್ಯ ಪುಟ ನೋಡಿ',
'tooltip-n-portal' => 'ಯೋಜನೆಯ ಬಗ್ಗೆ, ನೀವು ಏನು ಮಾಡಬಹುದು, ಎಲ್ಲಿ ಇದರ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಬಹುದು',
'tooltip-n-currentevents' => 'ಪ್ರಸಕ್ತ ಆಗುಹೋಗುಗಳ ಬಗ್ಗೆ ಹಿನ್ನಲೆ ಮಾಹಿತಿ ಪಡೆಯಿರಿ',
'tooltip-n-recentchanges' => 'ವಿಕಿಯಲ್ಲಿನ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳ ಪಟ್ಟಿ.',
@@ -1732,6 +1731,11 @@ latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆ
'mw_math_simple' => 'ಸರಳವಾಗಿದ್ದಲ್ಲಿ HTML ಇಲ್ಲದಿದ್ದಲ್ಲಿ PNG',
'mw_math_html' => 'ಸಾಧ್ಯವಾದಲ್ಲಿ HTML ಇಲ್ಲದಿದ್ದರೆ PNG',
+# Math errors
+'math_unknown_error' => 'ತಿಳಿದಿಲ್ಲದ ದೋಷ',
+'math_image_error' => 'PNGಗೆ ಬದಲಾವಣೆ ವಿಫಲವಾಯಿತು;
+latex, dvips, gs, ಸರಿಯಾಗಿ ಸ್ಥಾಪಿತವಾಗಿದೆಯೆ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿ ಬದಲಾಯಿಸಿ',
+
# Patrol log
'patrol-log-diff' => 'ಆವೃತ್ತಿ $1',
@@ -1788,7 +1792,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'ಅಗಲ',
@@ -1826,7 +1830,7 @@ $1',
'exif-unknowndate' => 'ದಿನಾಂಕ ತಿಳಿದಿಲ್ಲ',
-'exif-orientation-3' => '180° ತಿರುಗಿಸಲ್ಪಟ್ಟಿದೆ', # 0th row: bottom; 0th column: right
+'exif-orientation-3' => '180° ತಿರುಗಿಸಲ್ಪಟ್ಟಿದೆ',
'exif-componentsconfiguration-0' => 'ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇಲ್ಲ',
@@ -1857,7 +1861,7 @@ $1',
'exif-gpsmeasuremode-2' => '೨-ಆಯಾಮಗಳಲ್ಲಿ ಅಳತೆ',
'exif-gpsmeasuremode-3' => '೩-ಆಯಾಮಗಳಲ್ಲಿ ಅಳತೆ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ಪ್ರತಿ ಗಂಟೆಗೆ ಕಿಲೊಮೀಟರ್‍ಗಳು',
'exif-gpsspeed-m' => 'ಪ್ರತಿ ಗಂಟೆಗೆ ಮೈಲಿಗಳು',
'exif-gpsspeed-n' => 'ಕ್ನಾಟ್‍ಗಳು',
@@ -1977,10 +1981,10 @@ $5
'watchlisttools-raw' => 'ಮೂಲ ವೀಕ್ಷಣಾಪಟ್ಟಿಯನ್ನು ಸಂಪಾದಿಸು',
# Special:Version
-'version' => 'ಆವೃತ್ತಿ', # Not used as normal message but as header for the special page itself
+'version' => 'ಆವೃತ್ತಿ',
'version-specialpages' => 'ವಿಶೇಷ ಪುಟಗಳು',
'version-other' => 'ಇತರ',
-'version-version' => 'ಆವೃತ್ತಿ',
+'version-version' => '(ಆವೃತ್ತಿ $1)',
'version-software' => 'ಸಂಸ್ಥಾಪಿಸಲಾಗಿರುವ ತಂತ್ರಾಂಶ',
'version-software-version' => 'ಆವೃತ್ತಿ',
@@ -2015,4 +2019,7 @@ $5
# Special:Tags
'tags-edit' => 'ಸಂಪಾದಿಸಿ',
+# HTML forms
+'htmlform-selectorother-other' => 'ಇತರ',
+
);
diff --git a/languages/messages/MessagesKo.php b/languages/messages/MessagesKo.php
index 475fd251..3b62c55a 100644
--- a/languages/messages/MessagesKo.php
+++ b/languages/messages/MessagesKo.php
@@ -9,6 +9,7 @@
*
* @author Albamhandae
* @author Ficell
+ * @author IRTC1015
* @author ITurtle
* @author Klutzy
* @author Kwj2772
@@ -52,9 +53,9 @@ $specialPageAliases = array(
'Disambiguations' => array( '동음이의', '동음이의문서' ),
'Userlogin' => array( '로그인' ),
'Userlogout' => array( '로그아웃' ),
- 'CreateAccount' => array( '가입', '계정만들기' ),
+ 'CreateAccount' => array( '계정만들기' ),
'Preferences' => array( '환경설정' ),
- 'Watchlist' => array( '주시문서', '주시목록' ),
+ 'Watchlist' => array( '주시문서목록' ),
'Recentchanges' => array( '최근바뀜' ),
'Upload' => array( '파일올리기', '그림올리기' ),
'Listfiles' => array( '파일', '그림', '파일목록', '그림목록' ),
@@ -62,7 +63,7 @@ $specialPageAliases = array(
'Listusers' => array( '사용자', '사용자목록' ),
'Listgrouprights' => array( '사용자권한', '권한목록' ),
'Statistics' => array( '통계' ),
- 'Randompage' => array( '임의문서', '랜덤문서' ),
+ 'Randompage' => array( '임의문서' ),
'Lonelypages' => array( '외톨이문서' ),
'Uncategorizedpages' => array( '분류안된문서' ),
'Uncategorizedcategories' => array( '분류안된분류' ),
@@ -116,7 +117,7 @@ $specialPageAliases = array(
'Listredirects' => array( '넘겨주기', '넘겨주기목록' ),
'Revisiondelete' => array( '특정판삭제' ),
'Unusedtemplates' => array( '안쓰는틀' ),
- 'Randomredirect' => array( '임의넘겨주기', '랜덤넘겨주기' ),
+ 'Randomredirect' => array( '임의넘겨주기' ),
'Mypage' => array( '내사용자문서' ),
'Mytalk' => array( '내사용자토론' ),
'Mycontributions' => array( '내기여', '내기여목록' ),
@@ -124,7 +125,7 @@ $specialPageAliases = array(
'Listbots' => array( '봇', '봇목록' ),
'Popularpages' => array( '인기있는문서' ),
'Search' => array( '찾기', '검색' ),
- 'Resetpass' => array( '비밀번호변경', '암호변경', '비밀번호바꾸기' ),
+ 'Resetpass' => array( '비밀번호변경', '비밀번호바꾸기' ),
'Withoutinterwiki' => array( '인터위키없는문서' ),
'MergeHistory' => array( '역사합치기' ),
'Filepath' => array( '파일경로', '그림경로' ),
@@ -133,6 +134,7 @@ $specialPageAliases = array(
'LinkSearch' => array( '외부링크찾기', '외부링크검색' ),
'DeletedContributions' => array( '삭제된기여' ),
'Tags' => array( '태그' ),
+ 'Activeusers' => array( '활동중인사용자' ),
);
$magicWords = array(
@@ -142,7 +144,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__목차보임__', '__FORCETOC__' ),
'toc' => array( '0', '__목차__', '__TOC__' ),
'noeditsection' => array( '0', '__단락편집숨김__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', '현재월', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', '현재월', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', '현재월이름', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', '현재월이름소유격', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', '현재월이름약자', 'CURRENTMONTHABBREV' ),
@@ -150,9 +152,9 @@ $magicWords = array(
'currentday2' => array( '1', '현재일2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', '현재요일', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', '현재년', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', '현재시분', 'CURRENTTIME' ),
+ 'currenttime' => array( '1', '현재시분', '현재시각', 'CURRENTTIME' ),
'currenthour' => array( '1', '현재시', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', '지역월', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', '지역월', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', '지역월이름', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', '지역월이름소유격', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', '지역월이름약자', 'LOCALMONTHABBREV' ),
@@ -160,13 +162,15 @@ $magicWords = array(
'localday2' => array( '1', '지역일2', 'LOCALDAY2' ),
'localdayname' => array( '1', '지역요일', 'LOCALDAYNAME' ),
'localyear' => array( '1', '지역년', 'LOCALYEAR' ),
- 'localtime' => array( '1', '지역시분', 'LOCALTIME' ),
+ 'localtime' => array( '1', '지역시분', '지역시각', 'LOCALTIME' ),
'localhour' => array( '1', '지역시', 'LOCALHOUR' ),
'numberofpages' => array( '1', '모든문서수', 'NUMBEROFPAGES' ),
'numberofarticles' => array( '1', '문서수', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', '파일수', '그림수', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', '사용자수', '계정수', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', '활동중인사용자수', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', '편집수', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', '조회수', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', '문서이름', 'PAGENAME' ),
'pagenamee' => array( '1', '문서이름E', 'PAGENAMEE' ),
'namespace' => array( '1', '이름공간', 'NAMESPACE' ),
@@ -198,6 +202,7 @@ $magicWords = array(
'img_link' => array( '1', '링크=$1', 'link=$1' ),
'sitename' => array( '1', '사이트이름', 'SITENAME' ),
'ns' => array( '0', '이름:', '이름공간:', 'NS:' ),
+ 'nse' => array( '0', '이름E:', '이름공간E:', 'NSE:' ),
'localurl' => array( '0', '지역주소:', 'LOCALURL:' ),
'localurle' => array( '0', '지역주소E:', 'LOCALURLE:' ),
'server' => array( '0', '서버', 'SERVER' ),
@@ -213,14 +218,16 @@ $magicWords = array(
'revisionmonth' => array( '1', '판월', 'REVISIONMONTH' ),
'revisionyear' => array( '1', '판년', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', '판타임스탬프', 'REVISIONTIMESTAMP' ),
- 'plural' => array( '0', '복수:', 'PLURAL:' ),
+ 'plural' => array( '0', '복수:', '복수형:', 'PLURAL:' ),
'fullurl' => array( '0', '전체주소:', 'FULLURL:' ),
'fullurle' => array( '0', '전체주소E:', 'FULLURLE:' ),
'lcfirst' => array( '0', '첫소문자:', 'LCFIRST:' ),
'ucfirst' => array( '0', '첫대문자:', 'UCFIRST:' ),
'lc' => array( '0', '소문자:', 'LC:' ),
'uc' => array( '0', '대문자:', 'UC:' ),
+ 'displaytitle' => array( '1', '제목표시', 'DISPLAYTITLE' ),
'newsectionlink' => array( '1', '__새글쓰기__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__새글쓰기숨기기__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', '현재버전', 'CURRENTVERSION' ),
'urlencode' => array( '0', '주소인코딩:', 'URLENCODE:' ),
'anchorencode' => array( '0', '책갈피인코딩', 'ANCHORENCODE' ),
@@ -237,8 +244,10 @@ $magicWords = array(
'hiddencat' => array( '1', '__숨은분류__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', '분류문서수', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', '문서크기', 'PAGESIZE' ),
+ 'numberingroup' => array( '1', '권한별사용자수', '그룹별사용자수', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__넘겨주기고정__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', '보호수준', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', '날짜형식', 'formatdate', 'dateformat' ),
);
$bookstoreList = array(
@@ -246,11 +255,15 @@ $bookstoreList = array(
'inherit' => true,
);
+$datePreferences = array(
+ 'default',
+ 'ISO 8601',
+);
$defaultDateFormat = 'ko';
$dateFormats = array(
- 'ko time' => 'H:i',
- 'ko date' => 'Y년 M월 j일 (D)',
- 'ko both' => 'Y년 M월 j일 (D) H:i',
+ 'ko time' => 'H:i',
+ 'ko date' => 'Y년 M월 j일 (D)',
+ 'ko both' => 'Y년 M월 j일 (D) H:i',
);
$messages = array(
@@ -284,6 +297,7 @@ $messages = array(
'tog-enotifminoredits' => '사소한 편집도 이메일로 알림',
'tog-enotifrevealaddr' => '알림 메일에 내 이메일 주소를 밝히기',
'tog-shownumberswatching' => '주시 사용자 수 보기',
+'tog-oldsig' => '지금 서명 미리보기:',
'tog-fancysig' => '서명을 위키텍스트로 취급 (자동으로 링크를 걸지 않음)',
'tog-externaleditor' => '외부 편집기를 기본 편집기로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요)',
'tog-externaldiff' => '외부 비교 도구를 기본 도구로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요)',
@@ -305,6 +319,13 @@ $messages = array(
'underline-never' => '치지 않음',
'underline-default' => '브라우저 설정을 따르기',
+# Font style option in Special:Preferences
+'editfont-style' => '편집창의 글꼴:',
+'editfont-default' => '브라우저 설정을 따르기',
+'editfont-monospace' => '고정폭 글꼴',
+'editfont-sansserif' => '산세리프체',
+'editfont-serif' => '세리프체',
+
# Dates
'sunday' => '일요일',
'monday' => '월요일',
@@ -364,7 +385,7 @@ $messages = array(
'category-media-header' => '‘$1’ 분류에 속하는 자료',
'category-empty' => '이 분류에 속하는 문서나 자료가 없습니다.',
'hidden-categories' => '{{PLURAL:$1|숨은 분류}}',
-'hidden-category-category' => '숨은 분류', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '숨은 분류',
'category-subcat-count' => '다음은 이 분류에 속하는 하위 분류 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
'category-subcat-count-limited' => '이 분류에 하위분류가 $1개 있습니다.',
'category-article-count' => '다음은 이 분류에 속하는 문서 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
@@ -372,6 +393,8 @@ $messages = array(
'category-file-count' => '다음은 이 분류에 속하는 파일 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
'category-file-count-limited' => '이 분류에 파일이 $1개 있습니다.',
'listingcontinuesabbrev' => ' (계속)',
+'index-category' => '색인된 문서',
+'noindex-category' => '색인에서 제외되는 문서',
'mainpagetext' => "'''미디어위키가 성공적으로 설치되었습니다.'''",
'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 프로그램에 대한 정보를 얻을 수 있습니다.
@@ -382,10 +405,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]',
-'about' => '소개',
-'article' => '문서 내용',
-'newwindow' => '(새 창으로 열림)',
-'cancel' => '취소',
+'about' => '소개',
+'article' => '문서 내용',
+'newwindow' => '(새 창으로 열림)',
+'cancel' => '취소',
+'moredotdotdot' => '더 보기...',
+'mypage' => '내 사용자 문서',
+'mytalk' => '내 사용자 토론',
+'anontalk' => '익명 사용자 토론',
+'navigation' => '둘러보기',
+'and' => ',',
+
+# Cologne Blue skin
'qbfind' => '찾기',
'qbbrowse' => '탐색',
'qbedit' => '편집',
@@ -393,15 +424,35 @@ $messages = array(
'qbpageinfo' => '문서 정보',
'qbmyoptions' => '내 문서',
'qbspecialpages' => '특수 문서',
-'moredotdotdot' => '더 보기...',
-'mypage' => '내 사용자 문서',
-'mytalk' => '내 사용자 토론',
-'anontalk' => '익명 사용자 토론',
-'navigation' => '둘러보기',
-'and' => ',',
-
-# Metadata in edit box
-'metadata_help' => '메타데이터:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => '새 주제',
+'vector-action-delete' => '삭제',
+'vector-action-move' => '이동',
+'vector-action-protect' => '보호',
+'vector-action-undelete' => '되살리기',
+'vector-action-unprotect' => '보호 해제',
+'vector-namespace-category' => '분류',
+'vector-namespace-help' => '도움말',
+'vector-namespace-image' => '파일',
+'vector-namespace-main' => '문서',
+'vector-namespace-media' => '미디어 문서',
+'vector-namespace-mediawiki' => '메시지',
+'vector-namespace-project' => '프로젝트 문서',
+'vector-namespace-special' => '특수 문서',
+'vector-namespace-talk' => '토론',
+'vector-namespace-template' => '틀',
+'vector-namespace-user' => '사용자 문서',
+'vector-view-create' => '생성',
+'vector-view-edit' => '편집',
+'vector-view-history' => '역사',
+'vector-view-view' => '읽기',
+'vector-view-viewsource' => '내용 보기',
+'actions' => '행위',
+'namespaces' => '이름공간',
+'variants' => '변수',
'errorpagetitle' => '오류',
'returnto' => '$1(으)로 돌아갑니다.',
@@ -451,18 +502,22 @@ $messages = array(
'otherlanguages' => '다른 언어',
'redirectedfrom' => '($1에서 넘어옴)',
'redirectpagesub' => '넘겨주기 문서',
-'lastmodifiedat' => '이 문서는 $1 $2 에 마지막으로 바뀌었습니다.', # $1 date, $2 time
+'lastmodifiedat' => '이 문서는 $1 $2 에 마지막으로 바뀌었습니다.',
'viewcount' => '이 문서는 $1번 읽혔습니다.',
'protectedpage' => '보호된 문서',
'jumpto' => '이동:',
'jumptonavigation' => '둘러보기',
'jumptosearch' => '찾기',
+'view-pool-error' => '서버가 과부하에 걸렸습니다.
+너무 많은 사용자가 이 문서를 보려고 하고 있습니다.
+이 문서를 다시 열기 전에 잠시만 기다려주세요.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} 소개',
'aboutpage' => 'Project:소개',
'copyright' => '모든 문서는 $1 라이선스를 따릅니다.',
-'copyrightpagename' => '{{SITENAME}} 저작권',
'copyrightpage' => '{{ns:project}}:저작권',
'currentevents' => '요즘 화제',
'currentevents-url' => 'Project:요즘 화제',
@@ -470,8 +525,6 @@ $messages = array(
'disclaimerpage' => 'Project:면책 조항',
'edithelp' => '편집 도움말',
'edithelppage' => 'Help:편집하기',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:목차',
'mainpage' => '대문',
'mainpage-description' => '대문',
@@ -551,9 +604,6 @@ $messages = array(
"$1"
입니다.
데이터베이스는 "$3: $4" 오류를 일으켰습니다.',
-'noconnect' => '위키의 기술적인 문제로 인해 데이터베이스 서버에 접근할 수 없습니다.<br />$1',
-'nodb' => '$1 데이터베이스를 선택할 수 없습니다.',
-'cachederror' => '아래는 요청한 문서의 캐시 복사본으로, 최신이 아닐 수 있습니다.',
'laggedslavemode' => "'''주의:''' 문서가 최근에 바뀐 내용이 아닐 수도 있습니다.",
'readonly' => '데이터베이스 잠김',
'enterlockreason' => '데이터베이스를 잠그는 이유와 예상되는 기간을 적어 주세요.',
@@ -570,6 +620,8 @@ $messages = array(
'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 갱신하는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
'internalerror' => '내부 오류',
'internalerror_info' => '내부 오류: $1',
+'fileappenderrorread' => '‘$1’ 파일을 읽을 수 없습니다. 해당 파일에 내용을 덧붙일 수 없습니다.',
+'fileappenderror' => '‘$1’ 파일을 ‘$2’에 덧붙일 수 없습니다.',
'filecopyerror' => '‘$1’ 파일을 ‘$2’(으)로 복사할 수 없습니다.',
'filerenameerror' => '‘$1’ 파일을 ‘$2’(으)로 옮길 수 없습니다.',
'filedeleteerror' => '‘$1’ 파일을 삭제할 수 없습니다.',
@@ -579,7 +631,7 @@ $messages = array(
'unexpected' => '예상되지 않은 값: "$1"="$2"',
'formerror' => '오류: 양식을 제출할 수 없습니다.',
'badarticleerror' => '지금의 명령은 이 문서에서는 실행할 수 없습니다.',
-'cannotdelete' => '문서나 파일을 삭제할 수 없습니다. 이미 삭제되었을 수도 있습니다.',
+'cannotdelete' => '"$1" 문서나 파일을 삭제할 수 없습니다. 이미 삭제되었을 수도 있습니다.',
'badtitle' => '잘못된 제목',
'badtitletext' => '문서 제목이 잘못되었거나 비어있습니다.',
'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다.',
@@ -610,7 +662,6 @@ $2',
'virus-unknownscanner' => '알려지지 않은 백신:',
# Login and logout pages
-'logouttitle' => '로그아웃',
'logouttext' => "'''{{SITENAME}}에서 로그아웃했습니다.'''
이대로 이름 없이 {{SITENAME}}을(를) 이용하거나, 방금 사용했던 계정이나 다른 계정으로 다시 [[Special:UserLogin|로그인]]해서 이용할 수 있습니다.
@@ -618,7 +669,6 @@ $2',
'welcomecreation' => '== $1 님, 환영합니다! ==
계정이 만들어졌습니다.
[[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
-'loginpagetitle' => '로그인',
'yourname' => '계정 이름:',
'yourpassword' => '비밀번호:',
'yourpasswordagain' => '암호 재입력:',
@@ -629,6 +679,7 @@ $2',
'nav-login-createaccount' => '로그인 / 계정 만들기',
'loginprompt' => '{{SITENAME}}에 로그인하려면 쿠키를 사용할 수 있어야 합니다.',
'userlogin' => '로그인 / 계정 만들기',
+'userloginnocreate' => '로그인',
'logout' => '로그아웃',
'userlogout' => '로그아웃',
'notloggedin' => '로그인하고 있지 않음',
@@ -641,26 +692,8 @@ $2',
'badretype' => '암호가 서로 다릅니다.',
'userexists' => '입력하신 사용자 이름이 이미 등록되어 있습니다.
다른 이름으로 만들어주십시오.',
-'youremail' => '이메일:',
-'username' => '계정 이름:',
-'uid' => '사용자 ID:',
-'prefs-memberingroups' => '가지고 있는 {{PLURAL:$1|권한}} 목록:',
-'yourrealname' => '실명:',
-'yourlanguage' => '언어:',
-'yournick' => '서명:',
-'badsig' => '서명이 잘못되었습니다. HTML 태그를 확인해주세요.',
-'badsiglength' => '서명이 너무 깁니다.
-서명은 $1자보다 짧아야 합니다.',
-'yourgender' => '성별:',
-'gender-unknown' => '무응답',
-'gender-male' => '남성',
-'gender-female' => '여성',
-'prefs-help-gender' => '선택 사항: 소프트웨어에서 성별에 따른 언어 문제를 해결하기 위해 사용됩니다. 이 정보는 공개됩니다.',
-'email' => '이메일',
-'prefs-help-realname' => '실명 기입은 자유입니다. 실명을 입력할 경우 문서 기여에 자신의 이름이 들어가게 됩니다.',
'loginerror' => '로그인 오류',
-'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 이메일을 등록해 두면 비밀번호를 잊었을 때 다른 비밀번호를 받을 수 있으며, 이메일을 공개하지 않고도 다른 사용자에게 메일을 받을 수 있습니다.',
-'prefs-help-email-required' => '이메일 주소가 필요합니다.',
+'createaccounterror' => '계정을 생성하지 못했습니다: $1',
'nocookiesnew' => '사용자 계정을 만들었지만, 아직 로그인하지 않았습니다. {{SITENAME}}에서는 로그인 정보를 저장하기 위해 쿠키를 사용합니다. 지금 사용하는 웹 브라우저는 쿠키를 사용하지 않도록 설정되어 있습니다. 로그인하기 전에 웹 브라우저에서 쿠키를 사용하도록 설정해주세요.',
'nocookieslogin' => '{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다. 당신의 웹 브라우저에서 쿠키가 비활성되어 있습니다. 쿠키 사용을 활성화한 다음 로그인해 주세요.',
'noname' => '사용자 이름이 올바르지 않습니다.',
@@ -671,11 +704,12 @@ $2',
[[Special:UserLogin/signup|새 계정을 만들 수도 있습니다]].',
'nosuchusershort' => '이름이 ‘<nowiki>$1</nowiki>’인 사용자는 없습니다. 철자가 맞는지 확인해 주세요.',
'nouserspecified' => '사용자 이름을 입력하지 않았습니다.',
+'login-userblocked' => '이 사용자는 차단되었습니다. 로그인할 수 없습니다.',
'wrongpassword' => '암호가 틀렸습니다. 다시 시도해 주세요.',
'wrongpasswordempty' => '암호를 쓰지 않았습니다.
다시 시도해 주세요.',
-'passwordtooshort' => '사용자의 암호가 타당하지 않거나 너무 짧습니다.
-그것은 적어도 {{PLURAL:$1|1 기호|$1 기호들}}을 가지고 있어야만하고 사용자 이름과 달라야 합니다.',
+'passwordtooshort' => '암호는 적어도 $1자보다 길어야 합니다.',
+'password-name-match' => '암호는 반드시 사용자 이름과 달라야 합니다.',
'mailmypassword' => '새 암호를 이메일로 보내기',
'passwordremindertitle' => '{{SITENAME}}에서 보내는 새 임시 암호',
'passwordremindertext' => 'IP 주소 $1에서 당신에게 {{SITENAME}} ($4)의 새 암호를 보내달라고 요청했습니다.
@@ -684,6 +718,7 @@ $2',
만약 이 암호 요청을 다른 사람이 보낸 것이거나, 예전에 사용하던 암호를 기억해냈다면 이 메시지를 무시하고 예전 암호를 계속 사용할 수 있습니다.',
'noemail' => '사용자 ‘$1’에 등록된 이메일 주소가 없습니다.',
+'noemailcreate' => '바른 이메일 주소를 써야 합니다.',
'passwordsent' => '‘$1’ 계정의 새로운 암호를 이메일로 보냈습니다. 암호를 받고 다시 로그인해 주세요.',
'blocked-mailpassword' => '당신의 IP 주소는 편집이 차단되어 있습니다. 따라서 암호 되살리기 기능은 악용 방지를 위해 금지됩니다.',
'eauthentsent' => '확인 이메일을 보냈습니다. 이메일 내용의 지시대로 계정 확인 절차를 실행해 주십시오.',
@@ -703,9 +738,11 @@ $2',
'createaccount-text' => '{{SITENAME}}($4)에서 계정 이름 ‘$2’, 비밀번호 ‘$3’으로 계정을 만들었습니다. 로그인을 한 다음 암호를 바꾸어 주세요.
계정을 잘못 만들었다면 이 메시지는 무시해도 됩니다.',
+'usernamehasherror' => '계정 이름에는 해시 문자가 들어가서는 안 됩니다.',
'login-throttled' => '로그인에 연속으로 실패하였습니다.
잠시 후에 다시 시도해주세요.',
'loginlanguagelabel' => '언어: $1',
+'suspicious-userlogout' => '브라우저의 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
# Password reset dialog
'resetpass' => '비밀번호 바꾸기',
@@ -716,17 +753,13 @@ $2',
'retypenew' => '새 암호 확인:',
'resetpass_submit' => '암호를 변경하고 로그인하기',
'resetpass_success' => '암호가 성공적으로 변경되었습니다! 이제 로그인해 주세요...',
-'resetpass_bad_temporary' => '임시 암호가 잘못되었습니다. 암호를 이미 바꾸었거나, 임시 암호를 새로 받았을 수 있습니다.',
'resetpass_forbidden' => '비밀번호 변경 불가',
'resetpass-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
'resetpass-submit-loggedin' => '비밀번호 변경',
+'resetpass-submit-cancel' => '취소',
'resetpass-wrong-oldpass' => '비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.
당신은 이미 비밀번호를 성공적으로 변경하였거나 새 임시 비밀번호를 발급받았을 수 있습니다.',
'resetpass-temp-password' => '임시 비밀번호:',
-'resetpass-log' => '비밀번호 변경 기록',
-'resetpass-logtext' => '다음은 관리자에 의해 비밀번호가 변경된 사용자에 대한 기록입니다.',
-'resetpass-logentry' => '$1 사용자의 비밀번호를 변경',
-'resetpass-comment' => '비밀번호를 바꾸는 이유:',
# Edit page toolbar
'bold_sample' => '굵은 글씨',
@@ -796,7 +829,6 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에
'blockededitsource' => "아래에 '''$1'''에서의 '''당신의 편집'''이 나와 있습니다:",
'whitelistedittitle' => '편집하려면 로그인 필요',
'whitelistedittext' => '문서를 편집하려면 $1해야 합니다.',
-'confirmedittitle' => '편집하려면 이메일 인증 필요',
'confirmedittext' => '문서를 고치려면 이메일 인증 절차가 필요합니다. [[Special:Preferences|사용자 환경 설정]]에서 이메일 주소를 입력하고 이메일 주소 인증을 해 주시기 바랍니다.',
'nosuchsectiontitle' => '단락을 찾을 수 없음',
'nosuchsectiontext' => '편집하려는 문단이 존재하지 않습니다.
@@ -815,11 +847,17 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에
여기는 계정을 만들지 않았거나 사용하고 있지 않은 비등록 사용자를 위한 토론 문서입니다. 비등록 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다. IP 주소는 여러 사용자가 공유할 수 있습니다. 자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 비등록 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인 하여]] 나중에 다른 비등록 사용자에게 줄 혼란을 줄일 수 있습니다.',
'noarticletext' => '이 문서가 존재하지 않습니다.
이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나, 문서를 직접 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>할 수 있습니다.',
+'noarticletext-nopermission' => '‘{{FULLPAGENAME}}’ 문서가 존재하지 않습니다.
+이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span>',
'userpage-userdoesnotexist' => '‘$1’ 계정은 등록되어 있지 않습니다. 이 문서를 만들거나 편집하려면 계정이 존재 하는지 확인해주세요.',
+'userpage-userdoesnotexist-view' => '"$1" 사용자 계정은 등록되지 않았습니다.',
+'blocked-notice-logextract' => '이 사용자는 현재 차단되어 있습니다.
+해당 사용자의 최근 차단 기록을 참고하십시오:',
'clearyourcache' => "'''참고 - 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 갱신해야 합니다.'''
'''모질라 / 파이어폭스 / 사파리''': Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R 을 입력 (매킨토시에서는 Command-R); '''컨커러''': 새로고침을 클릭하거나 F5를 입력; '''오페라''': 도구→설정에서 캐시를 비움; '''인터넷 익스플로러''': Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.",
-'usercssjsyoucanpreview' => "'''안내''': CSS/JS 문서를 저장하기 전에 ‘미리 보기’ 기능을 통해 작동을 확인해주세요.",
+'usercssyoucanpreview' => "'''안내''': CSS 문서를 저장하기 전에 ‘{{int:showpreview}}’ 기능을 통해 작동을 확인해주세요.",
+'userjsyoucanpreview' => "'''안내''': JS 문서를 저장하기 전에 ‘{{int:showpreview}}’ 기능을 통해 작동을 확인해주세요.",
'usercsspreview' => "'''이것은 사용자 CSS의 미리 보기이며, 아직 저장하지 않았다는 것을 주의해 주세요!'''",
'userjspreview' => "'''이것은 자바스크립트 미리 보기로, 아직 저장하지 않았다는 것을 주의해 주세요!'''",
'userinvalidcssjstitle' => "'''경고''': ‘$1’ 스킨은 없습니다.
@@ -863,13 +901,16 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에
편집 내용을 복사 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.'''
잠근 관리자가 남긴 설명은 다음과 같습니다: $1",
-'protectedpagewarning' => "'''경고: 이 문서는 관리자만 편집할 수 있도록 보호되어 있습니다.'''",
-'semiprotectedpagewarning' => "'''안내:''' 이 문서는 가입한지 3일이 지난 사용자만이 편집할 수 있도록 잠겨 있습니다.",
+'protectedpagewarning' => "'''경고: 이 문서는 관리자만 편집할 수 있도록 보호되어 있습니다.'''
+이 문서의 최근 기록을 참고하십시오:",
+'semiprotectedpagewarning' => "'''안내:''' 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.
+이 문서의 최근 기록을 참고하십시오:",
'cascadeprotectedwarning' => "'''주의''': 이 문서는 잠겨 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
-'titleprotectedwarning' => "'''경고: 이 문서는 잠겨 있어, 문서를 생성하려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.'''",
-'templatesused' => '이 문서에서 사용한 틀:',
-'templatesusedpreview' => '이 미리 보기에서 사용하고 있는 틀:',
-'templatesusedsection' => '이 부분에서 사용하고 있는 틀:',
+'titleprotectedwarning' => "'''경고: 이 문서는 잠겨 있어, 문서를 생성하려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.'''
+아래 문서의 최근 기록을 참고하십시오:",
+'templatesused' => '이 문서에서 사용한 {{PLURAL:$1|틀}}:',
+'templatesusedpreview' => '이 미리 보기에서 사용하고 있는 {{PLURAL:$1|틀}}:',
+'templatesusedsection' => '이 문단에서 사용하고 있는 {{PLURAL:$1|틀}}:',
'template-protected' => '(보호됨)',
'template-semiprotected' => '(준보호됨)',
'hiddencategories' => '이 문서는 다음 숨은 분류 $1 개에 속해 있습니다:',
@@ -877,16 +918,17 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에
'nocreatetitle' => '문서 생성 제한',
'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 생성하는 것은 제한되어 있습니다. 이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들 수 있습니다]].',
'nocreate-loggedin' => '새 문서를 만들 권한이 없습니다.',
+'sectioneditnotsupported-title' => '문단 편집 지원 안됨',
+'sectioneditnotsupported-text' => '이 문서에서는 문단 편집을 지원하지 않습니다.',
'permissionserrors' => '권한 오류',
'permissionserrorstext' => '해당 명령을 수행할 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해보세요:',
'permissionserrorstext-withaction' => '$2 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해주세요:',
-'recreate-deleted-warn' => "'''주의: 과거에 삭제된 문서를 다시 만들고 있습니다.'''
+'recreate-moveddeleted-warn' => "'''주의: 삭제된 적이 있는 문서를 다시 만들고 있습니다.'''
이 문서를 계속 편집하는 것이 적합한 것인지 확인해주세요.
-과거 삭제 기록은 다음과 같습니다:",
-'deleted-notice' => '이 문서는 삭제되어 있습니다.
-이 문서의 삭제 기록은 다음과 같습니다.',
-'deletelog-fulllog' => '전체 기록 보기',
+편의를 위해 삭제와 이동 기록을 다음과 같이 제공합니다:",
+'moveddeleted-notice' => '이 문서는 삭제되었습니다. 이 문서의 삭제/이동 기록은 다음과 같습니다.',
+'log-fulllog' => '전체 기록 보기',
'edit-hook-aborted' => '훅에 의해 편집이 중단되었습니다.
아무런 설명도 주어지지 않았습니다.',
'edit-gone-missing' => '문서를 저장하지 못했습니다.
@@ -909,6 +951,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'post-expand-template-argument-category' => '생략된 틀 변수를 포함한 문서',
'parser-template-loop-warning' => '재귀적인 틀이 발견되었습니다: [[$1]]',
'parser-template-recursion-depth-warning' => '틀 반복 횟수 제한을 초과함($1)',
+'language-converter-depth-warning' => '언어 변환기 실행 제한 초과($1)',
# "Undo" feature
'undo-success' => '이 편집을 되돌리려면 아래의 변경되는 사항을 확인한 후 저장해주세요.',
@@ -928,7 +971,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'currentrev' => '현재 판',
'currentrev-asof' => '$1 현재 판',
'revisionasof' => '$1 판',
-'revision-info' => '$2 사용자의 $1 버전', # Additionally available: $3: revision id
+'revision-info' => '$2 사용자의 $1 버전',
'previousrevision' => '← 이전 판',
'nextrevision' => '다음 판 →',
'currentrevisionlink' => '현재 판',
@@ -941,7 +984,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
설명: '''({{int:cur}})''' = 현재 판과의 차이,
'''({{int:last}})''' = 바로 이전 판과의 차이, '''{{int:minoreditletter}}'''= 사소한 편집",
'history-fieldset-title' => '문서의 변경 내력 찾기',
-'deletedrev' => '[삭제됨]',
+'history-show-deleted' => '삭제된 것만',
'histfirst' => '처음',
'histlast' => '마지막',
'historysize' => '($1 바이트)',
@@ -950,71 +993,115 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
# Revision feed
'history-feed-title' => '편집 역사',
'history-feed-description' => '이 문서의 편집 역사',
-'history-feed-item-nocomment' => '$2에 대한 $1의 편집', # user at time
+'history-feed-item-nocomment' => '$2에 대한 $1의 편집',
'history-feed-empty' => '요청한 문서가 존재하지 않습니다.
해당 문서가 삭제되었거나, 문서 이름이 바뀌었을 수 있습니다.
[[Special:Search|검색 기능]]을 사용해 관련 문서를 찾아보세요.',
# Revision deletion
-'rev-deleted-comment' => '(편집 요약 삭제됨)',
-'rev-deleted-user' => '(계정 이름 삭제됨)',
-'rev-deleted-event' => '(로그 삭제됨)',
-'rev-deleted-text-permission' => '이 문서의 편집은 문서 역사에서 제거되었습니다.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다..',
-'rev-deleted-text-view' => '이 문서의 편집은 문서 역사에서 제거되었습니다.
-당신은 {{SITENAME}}의 관리자로서, 삭제된 편집을 볼 수 있습니다;
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.',
-'rev-deleted-no-diff' => '당신은 특정 판이 문서 역사에서 제거되었기 때문에 이 차이를 확인할 수 없습니다.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다..',
-'rev-deleted-unhide-diff' => '특정판의 차이가 문서 역사에서 삭제되었습니다.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.
-{{SITENAME}}의 관리자로서 작업하기를 원하다면 [$1 차이보기]에서 차이를 볼 수 있습니다.',
-'rev-delundel' => '보이기/숨기기',
-'revisiondelete' => '판 삭제/복구',
-'revdelete-nooldid-title' => '대상 판이 잘못되었습니다.',
-'revdelete-nooldid-text' => '이 기능을 수행할 특정 판을 제시하지 않았거나 해당 판이 없습니다. 또는 현재 판을 숨기려 하고 있을 수도 있습니다.',
-'revdelete-nologtype-title' => '기록의 종류가 제시되지 않았습니다.',
-'revdelete-nologtype-text' => '이 명령을 수행할 기록의 종류를 제시하지 않았습니다.',
-'revdelete-toomanytargets-title' => '대상이 너무 많습니다.',
-'revdelete-toomanytargets-text' => '명령을 수행할 대상을 너무 많이 입력하였습니다.',
-'revdelete-nologid-title' => '잘못된 기록',
-'revdelete-nologid-text' => '이 기능을 수행할 특정 기록을 제시하지 않았거나 제시한 기록이 존재하지 않습니다.',
-'revdelete-selected' => "'''[[:$1]]의 {{PLURAL:$2|선택된 판}}:'''",
-'logdelete-selected' => "{{PLURAL:$1}}'''선택한 로그:'''",
-'revdelete-text' => "'''삭제된 판과 기록은 문서 역사와 기록에 계속 나타나지만, 내용은 공개되지 않을 것입니다.'''
-
-{{SITENAME}}의 다른 관리자는 다른 제한이 설정되어 있지 않는 한, 숨겨진 내용을 볼 수 있고, 같은 도구를 이용해 복구할 수 있습니다.
-이 도구를 사용하는 것의 결과를 인식하고 [[{{MediaWiki:Policy-url}}|정책]]에 맞게 사용하십시오.",
-'revdelete-suppress-text' => "숨기기는 '''다음 경우에만''' 사용되어야 합니다:
+'rev-deleted-comment' => '(편집 요약 삭제됨)',
+'rev-deleted-user' => '(계정 이름 삭제됨)',
+'rev-deleted-event' => '(로그 삭제됨)',
+'rev-deleted-user-contribs' => '[계정 이름/IP 주소 삭제됨 - 기여 목록에서 숨겨짐]',
+'rev-deleted-text-permission' => "해당 편집이 문서 역사에서 '''삭제'''되었습니다.
+자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 볼 수 있습니다.",
+'rev-deleted-text-unhide' => "해당 편집이 문서 역사에서 '''삭제'''되었습니다.
+자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 볼 수 있습니다.
+관리자 권한을 이용하여 [$1 해당 편집]을 볼 수도 있습니다.",
+'rev-suppressed-text-unhide' => "해당 편집이 문서 역사에서 '''숨겨져''' 있습니다.
+자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 볼 수 있습니다.
+관리자 권한을 이용하여 [$1 해당 편집]을 볼 수도 있습니다.",
+'rev-deleted-text-view' => "이 문서의 편집은 역사에서 '''삭제'''되었습니다.
+당신은 관리자로서 삭제된 편집을 볼 수 있습니다.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
+'rev-suppressed-text-view' => "이 문서의 편집은 역사에서 '''숨겨져''' 있습니다.
+당신은 관리자로서 숨겨진 편집을 볼 수 있습니다.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 자세한 내용을 볼 수 있습니다.",
+'rev-deleted-no-diff' => "특정 판이 문서 역사에서 '''삭제'''되었기 때문에 비교할 수 없습니다.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
+'rev-suppressed-no-diff' => "두 판 중 일부가 '''삭제'''되었기 때문에 문서 편집 내용을 비교할 수 없습니다.",
+'rev-deleted-unhide-diff' => "이 비교에 사용된 판 가운데 하나가 '''삭제'''되었습니다.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에 자세한 내용이 있을 수 있습니다.
+관리자로서 작업하고 싶다면 여전히 [$1 비교 보기]를 계속할 수 있습니다.",
+'rev-suppressed-unhide-diff' => "이 비교에 사용된 판 가운데 하나가 '''숨김'''되었습니다.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에 자세한 내용이 있을 수 있습니다.
+관리자로 작업하고 싶다면 [$1 해당 편집]을 볼 수도 있습니다.",
+'rev-deleted-diff-view' => "비교 대상 중 어느 한 판이 '''삭제'''되었습니다.
+관리자로서 삭제된 판과 다른 판의 비교를 할 수 있습니다; 자세한 것은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]을 참고하십시오.",
+'rev-suppressed-diff-view' => "비교하려는 판 중 일부가 '''숨겨져''' 있습니다.
+관리자 권한이 있다면 편집 비교가 가능합니다. 자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 해당 숨김 기록]에서 볼 수 있습니다.",
+'rev-delundel' => '보이기/숨기기',
+'rev-showdeleted' => '표시',
+'revisiondelete' => '판 삭제/복구',
+'revdelete-nooldid-title' => '대상 판이 잘못되었습니다.',
+'revdelete-nooldid-text' => '이 기능을 수행할 특정 판을 제시하지 않았거나 해당 판이 없습니다. 또는 현재 판을 숨기려 하고 있을 수도 있습니다.',
+'revdelete-nologtype-title' => '기록의 종류가 제시되지 않았습니다.',
+'revdelete-nologtype-text' => '이 명령을 수행할 기록의 종류를 제시하지 않았습니다.',
+'revdelete-nologid-title' => '잘못된 기록',
+'revdelete-nologid-text' => '이 기능을 수행할 특정 기록을 제시하지 않았거나 제시한 기록이 존재하지 않습니다.',
+'revdelete-no-file' => '해당 파일이 존재하지 않습니다.',
+'revdelete-show-file-confirm' => '정말 "<nowiki>$1</nowiki>" 파일의 삭제된 $2 $3 버전을 보시겠습니까?',
+'revdelete-show-file-submit' => '예',
+'revdelete-selected' => "'''[[:$1]]의 {{PLURAL:$2|선택된 판}}:'''",
+'logdelete-selected' => "{{PLURAL:$1}}'''선택한 로그:'''",
+'revdelete-text' => "'''삭제된 판과 기록은 문서 역사와 기록에 계속 나타나지만, 내용은 공개되지 않을 것입니다.'''
+{{SITENAME}}의 다른 관리자는 다른 제한이 설정되어 있지 않는 한, 숨겨진 내용을 볼 수 있고, 같은 도구를 이용해 복구할 수 있습니다.",
+'revdelete-confirm' => '이 작업을 수행하는 것의 결과를 알고 있으며, [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지 확인해주세요.',
+'revdelete-suppress-text' => "숨기기는 '''다음 경우에만''' 사용되어야 합니다:
* 부적절한 개인 정보
*: 집 주소, 전화번호, 주민등록번호 등",
-'revdelete-legend' => '보이기 제한을 설정',
-'revdelete-hide-text' => '판의 내용을 숨기기',
-'revdelete-hide-name' => '로그 내용과 대상을 숨기기',
-'revdelete-hide-comment' => '편집 요약을 숨기기',
-'revdelete-hide-user' => '편집자의 계정 이름/IP를 숨기기',
-'revdelete-hide-restricted' => '관리자도 보지 못하게 숨기기',
-'revdelete-suppress' => '문서 내용을 관리자에게도 보이지 않게 숨기기',
-'revdelete-hide-image' => '파일을 숨기기',
-'revdelete-unsuppress' => '복구된 판에 대한 제한을 해제',
-'revdelete-log' => '이유:',
-'revdelete-submit' => '선택된 판에 적용',
-'revdelete-logentry' => '[[$1]]의 판의 보이기 설정을 변경함',
-'logdelete-logentry' => '[[$1]]의 로그 보이기 설정을 변경함',
-'revdelete-success' => "'''판의 보이기 설정이 성공적으로 변경되었습니다.'''",
-'logdelete-success' => "'''로그의 보이기 설정이 성공적으로 변경되었습니다.'''",
-'revdel-restore' => '보이기 설정 변경',
-'pagehist' => '문서 역사',
-'deletedhist' => '삭제된 역사',
-'revdelete-content' => '내용',
-'revdelete-summary' => '편집 요약',
-'revdelete-uname' => '사용자 이름',
-'revdelete-restricted' => '관리자에게 제한을 적용함',
-'revdelete-unrestricted' => '관리자에 대한 제한을 해제함',
-'revdelete-hid' => '$1을 숨김',
-'revdelete-unhid' => '$1을 숨김 해제함',
-'revdelete-log-message' => '$2개의 판에 대해 $1',
-'logdelete-log-message' => '$2개의 로그에 대해 $1',
+'revdelete-legend' => '보이기 제한을 설정',
+'revdelete-hide-text' => '판의 내용을 숨기기',
+'revdelete-hide-image' => '파일을 숨기기',
+'revdelete-hide-name' => '로그 내용과 대상을 숨기기',
+'revdelete-hide-comment' => '편집 요약을 숨기기',
+'revdelete-hide-user' => '편집자의 계정 이름/IP를 숨기기',
+'revdelete-hide-restricted' => '관리자도 보지 못하게 숨기기',
+'revdelete-radio-same' => '(바꾸지 않음)',
+'revdelete-radio-set' => '예',
+'revdelete-radio-unset' => '아니오',
+'revdelete-suppress' => '문서 내용을 관리자에게도 보이지 않게 숨기기',
+'revdelete-unsuppress' => '복구된 판에 대한 제한을 해제',
+'revdelete-log' => '이유:',
+'revdelete-submit' => '선택한 {{PLURAL:$1|판}}에 적용',
+'revdelete-logentry' => '[[$1]]의 판의 보이기 설정을 변경함',
+'logdelete-logentry' => '[[$1]]의 로그 보이기 설정을 변경함',
+'revdelete-success' => "'''판의 보이기 설정이 성공적으로 변경되었습니다.'''",
+'revdelete-failure' => "'''특정 판 보기 설정을 바꾸지 못했습니다:'''
+$1",
+'logdelete-success' => "'''로그의 보이기 설정이 성공적으로 변경되었습니다.'''",
+'logdelete-failure' => "'''로그 보이기 설정을 바꾸지 못했습니다:'''
+$1",
+'revdel-restore' => '보이기 설정 변경',
+'pagehist' => '문서 역사',
+'deletedhist' => '삭제된 역사',
+'revdelete-content' => '내용',
+'revdelete-summary' => '편집 요약',
+'revdelete-uname' => '사용자 이름',
+'revdelete-restricted' => '관리자에게 제한을 적용함',
+'revdelete-unrestricted' => '관리자에 대한 제한을 해제함',
+'revdelete-hid' => '$1을 숨김',
+'revdelete-unhid' => '$1을 숨김 해제함',
+'revdelete-log-message' => '$2개의 판에 대해 $1',
+'logdelete-log-message' => '$2개의 로그에 대해 $1',
+'revdelete-hide-current' => '$1 $2 판을 숨기는 도중 오류 발생: 이 판은 현재 판입니다.
+현재 판은 숨길 수 없습니다.',
+'revdelete-show-no-access' => '$1 $2 판을 보이는 데 오류 발생: 이 판은 "제한"으로 표시되어 있습니다.
+여기에 접근할 수 없습니다.',
+'revdelete-modify-no-access' => '$1 $2 판을 고치는 데 오류 발생: 이 판은 "제한"으로 표시되어 있습니다.
+여기에 접근할 수 없습니다.',
+'revdelete-modify-missing' => '판 ID $1을 수정하는 중 오류 발생: 데이터베이스에 존재하지 않습니다!',
+'revdelete-no-change' => "'''경고:''' $1 $2에 해당하는 항목은 이미 같은 보이기 설정이 설정되어 있습니다.",
+'revdelete-concurrent-change' => '$1 $2에 수정된 항목을 갱신하면서 오류 발생: 이런 현상은 당신이 문서를 편집하고 있을 때 다른 사람이 문서를 편집했기 때문에 발생합니다.
+관련 로그를 확인해 보세요.',
+'revdelete-only-restricted' => '$1 $2 버전 숨기기 오류: 다른 숨기기 설정을 같이 설정하지 않고 관리자가 보지 못하도록 특정 판을 숨길 수 없습니다.',
+'revdelete-reason-dropdown' => '*일반적인 삭제 이유
+** 저작권 침해
+** 부적절한 개인 정보',
+'revdelete-otherreason' => '다른 이유/부가적인 이유',
+'revdelete-reasonotherlist' => '다른 이유',
+'revdelete-edit-reasonlist' => '삭제 이유 편집',
+'revdelete-offender' => '판 작성자:',
# Suppression log
'suppressionlog' => '숨기기 기록',
@@ -1053,67 +1140,13 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'mergelogpagetext' => '다음은 한 문서의 역사를 다른 문서의 역사와 합친 최근 기록입니다.',
# Diffs
-'history-title' => '‘$1’ 문서의 변경 내력',
-'difference' => '(버전 사이의 차이)',
-'lineno' => '$1번째 줄:',
-'compareselectedversions' => '선택된 판들을 비교하기',
-'visualcomparison' => '시각적 비교',
-'wikicodecomparison' => '위키텍스트 비교',
-'editundo' => '편집 취소',
-'diff-multi' => '(중간의 편집 $1 개 숨겨짐)',
-'diff-movedto' => '$1(으)로 이동',
-'diff-styleadded' => '$1 스타일 추가됨',
-'diff-added' => '$1 추가됨',
-'diff-changedto' => '$1(으)로 변경',
-'diff-movedoutof' => '$1 밖으로 이동',
-'diff-styleremoved' => '$1 스타일 제거됨',
-'diff-removed' => '$1 제거됨',
-'diff-changedfrom' => '$1에서 바꿈',
-'diff-src' => '출처',
-'diff-withdestination' => '$1 대상',
-'diff-with' => '&#32;$1 $2와 함께',
-'diff-with-final' => ', $1 $2',
-'diff-width' => '너비',
-'diff-height' => '높이',
-'diff-p' => "'''문단'''",
-'diff-blockquote' => "'''인용'''",
-'diff-h1' => "'''1단계 제목'''",
-'diff-h2' => "'''2단계 제목'''",
-'diff-h3' => "'''3단계 제목'''",
-'diff-h4' => "'''4단계 제목'''",
-'diff-h5' => "'''5단계 제목'''",
-'diff-pre' => "'''미리 보기 블록'''",
-'diff-div' => "'''구역'''",
-'diff-ul' => "'''순서 없는 목록'''",
-'diff-ol' => "'''순서 있는 목록'''",
-'diff-li' => "'''목록'''",
-'diff-table' => "'''표'''",
-'diff-tbody' => "'''표의 내용'''",
-'diff-tr' => "'''행'''",
-'diff-td' => "'''칸'''",
-'diff-th' => "'''제목'''",
-'diff-br' => "'''줄바꿈'''",
-'diff-hr' => "'''가로줄'''",
-'diff-code' => "'''컴퓨터 코드 블록'''",
-'diff-dl' => "'''정의 목록'''",
-'diff-dt' => "'''정의할 용어'''",
-'diff-dd' => "'''정의'''",
-'diff-input' => "'''입력 상자'''",
-'diff-form' => "'''양식'''",
-'diff-img' => "'''그림'''",
-'diff-span' => "'''span''' 태그",
-'diff-a' => "'''링크'''",
-'diff-i' => "'''기울임꼴'''",
-'diff-b' => "'''굵은 글씨'''",
-'diff-strong' => "'''굵은 글씨'''",
-'diff-em' => "'''강조'''",
-'diff-font' => "'''글꼴'''",
-'diff-big' => "'''큰 글씨'''",
-'diff-del' => "'''삭제됨'''",
-'diff-tt' => "'''고정폭 글꼴'''",
-'diff-sub' => "'''아랫첨자'''",
-'diff-sup' => "'''윗첨자'''",
-'diff-strike' => "'''삭제선'''",
+'history-title' => '‘$1’ 문서의 변경 내력',
+'difference' => '(버전 사이의 차이)',
+'lineno' => '$1번째 줄:',
+'compareselectedversions' => '선택된 판들을 비교하기',
+'showhideselectedversions' => '선택한 판을 보이기/숨기기',
+'editundo' => '편집 취소',
+'diff-multi' => '(중간의 편집 $1 개 숨겨짐)',
# Search results
'searchresults' => '검색 결과',
@@ -1121,8 +1154,6 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'searchresulttext' => '{{SITENAME}}의 찾기 기능에 대한 자세한 정보는 [[{{MediaWiki:Helppage}}|{{int:help}}]] 문서를 참고해주세요.',
'searchsubtitle' => "'''[[:$1]]''' 문서를 검색하고 있습니다. ([[Special:Prefixindex/$1|이름이 ‘$1’ 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|‘$1’ 문서를 가리키는 문서 목록]])",
'searchsubtitleinvalid' => "검색 단어 '''$1'''",
-'noexactmatch' => "'''$1 문서가 없습니다.''' 문서를 [[:$1|만들 수]] 있습니다.",
-'noexactmatch-nocreate' => "'''\"\$1\" 문서가 존재하지 않습니다.'''",
'toomanymatches' => '일치하는 결과가 너무 많습니다. 다른 검색어를 입력해주세요.',
'titlematches' => '문서 제목 일치',
'notitlematches' => '해당하는 제목 없음',
@@ -1133,16 +1164,15 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'prevn-title' => '이전 결과 $1개',
'nextn-title' => '다음 결과 $1개',
'shown-title' => '매 쪽마다 결과 $1 개씩 보이기',
-'viewprevnext' => '보기: ($1) ($2) ($3).',
+'viewprevnext' => '보기: ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => '검색 설정',
'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드십시오!'''",
'searchhelp-url' => 'Help:목차',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾기]]',
'searchprofile-articles' => '일반 문서',
-'searchprofile-articles-and-proj' => '일반 및 프로젝트 문서',
-'searchprofile-project' => '프로젝트 문서',
-'searchprofile-images' => '파일',
+'searchprofile-project' => '도움말 및 프로젝트 문서',
+'searchprofile-images' => '멀티미디어',
'searchprofile-everything' => '모든 문서 검색',
'searchprofile-advanced' => '고급 검색',
'searchprofile-articles-tooltip' => '$1에서 찾기',
@@ -1150,8 +1180,6 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'searchprofile-images-tooltip' => '파일 찾기',
'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 찾기',
'searchprofile-advanced-tooltip' => '다음 설정된 이름공간에서 찾기',
-'prefs-search-nsdefault' => '다음을 기본으로 검색:',
-'prefs-search-nscustom' => '다음 이름공간에서 찾기:',
'search-result-size' => '$1 ($2 단어)',
'search-result-score' => '유사도: $1%',
'search-redirect' => '($1에서 넘어옴)',
@@ -1164,11 +1192,12 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'search-mwsuggest-disabled' => '검색어 제안 없음',
'search-relatedarticle' => '관련',
'mwsuggest-disable' => 'AJAX 추천 기능 끄기',
+'searcheverything-enable' => '모든 이름공간에서 찾기',
'searchrelated' => '관련',
'searchall' => '모두',
'showingresults' => '<strong>$2</strong>번 부터의 <strong>결과 $1개</strong>입니다.',
'showingresultsnum' => "'''$2'''번 부터의 '''결과 $3개''' 입니다.",
-'showingresultstotal' => "'''$3'''개의 결과 중 {{PLURAL:$4|'''$1'''|'''$1 - $2'''}}",
+'showingresultsheader' => "'''$4''' 검색어에 대하여 '''$3'''개의 결과 중 {{PLURAL:$5|'''$1'''개|'''$1 - $2'''번째}}를 보여 주고 있습니다.",
'nonefound' => "'''참고''': 몇개의 이름공간만 기본 검색 범위입니다. 토론이나 틀 등의 모든 자료를 검색하기 위해서는 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
'search-nonefound' => '검색 결과가 없습니다.',
'powersearch' => '찾기',
@@ -1176,111 +1205,148 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'powersearch-ns' => '다음의 이름공간에서 찾기:',
'powersearch-redir' => '넘겨주기 목록',
'powersearch-field' => '검색',
+'powersearch-togglelabel' => '확인:',
+'powersearch-toggleall' => '모두 선택',
+'powersearch-togglenone' => '모두 선택하지 않음',
'search-external' => '외부 검색',
'searchdisabled' => '{{SITENAME}} 검색 기능이 비활성화되어 있습니다. 기능이 작동하지 않는 동안에는 구글(Google)을 이용해 검색할 수 있습니다. 검색 엔진의 내용은 최근 것이 아닐 수 있다는 점을 주의해주세요.',
+# Quickbar
+'qbsettings' => '빨리가기 맞춤',
+'qbsettings-none' => '없음',
+'qbsettings-fixedleft' => '왼쪽 고정',
+'qbsettings-fixedright' => '오른쪽 고정',
+'qbsettings-floatingleft' => '왼쪽 유동',
+'qbsettings-floatingright' => '오른쪽 유동',
+
# Preferences page
-'preferences' => '사용자 환경 설정',
-'mypreferences' => '사용자 환경 설정',
-'prefs-edits' => '편집 횟수:',
-'prefsnologin' => '로그인하지 않음',
-'prefsnologintext' => '사용자 환경 설정을 바꾸려면 먼저 <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} 로그인]</span>해야 합니다.',
-'prefsreset' => '사용자 환경 설정을 기본값으로 되돌렸습니다.',
-'qbsettings' => '빨리가기 맞춤',
-'qbsettings-none' => '없음',
-'qbsettings-fixedleft' => '왼쪽 고정',
-'qbsettings-fixedright' => '오른쪽 고정',
-'qbsettings-floatingleft' => '왼쪽 유동',
-'qbsettings-floatingright' => '오른쪽 유동',
-'changepassword' => '비밀번호 바꾸기',
-'skin' => '스킨',
-'skin-preview' => '미리 보기',
-'math' => '수식',
-'dateformat' => '날짜 형식',
-'datedefault' => '기본값',
-'datetime' => '날짜와 시각',
-'math_failure' => '해석 실패',
-'math_unknown_error' => '알 수 없는 오류',
-'math_unknown_function' => '알 수 없는 함수',
-'math_lexing_error' => '어휘 오류',
-'math_syntax_error' => '구문 오류',
-'math_image_error' => 'PNG 변환 실패 - latex, dvips, gs, convert가 올바르게 설치되어 있는지 확인해 주세요.',
-'math_bad_tmpdir' => '수식을 임시 폴더에 저장하거나 폴더를 만들 수 없습니다.',
-'math_bad_output' => '수식을 출력 폴더에 저장하거나 폴더를 만들 수 없습니다.',
-'math_notexvc' => '실행할 수 있는 texvc이 없습니다. 설정을 위해 math/README를 읽어 주세요.',
-'prefs-personal' => '사용자 정보',
-'prefs-rc' => '최근 바뀜',
-'prefs-watchlist' => '주시문서 목록',
-'prefs-watchlist-days' => '주시문서 목록에서 볼 날짜 수:',
-'prefs-watchlist-days-max' => '(최대 7일)',
-'prefs-watchlist-edits' => '주시문서 목록에서 볼 편집 수:',
-'prefs-watchlist-edits-max' => '(최대 1000개)',
-'prefs-misc' => '기타',
-'prefs-resetpass' => '비밀번호 바꾸기',
-'saveprefs' => '저장',
-'resetprefs' => '저장하지 않은 설정 되돌리기',
-'restoreprefs' => '모두 기본 설정으로 되돌리기',
-'textboxsize' => '편집상자 크기',
-'prefs-edit-boxsize' => '편집 창의 크기',
-'rows' => '줄 수:',
-'columns' => '열 수:',
-'searchresultshead' => '찾기',
-'resultsperpage' => '쪽마다 보이는 결과 수:',
-'contextlines' => '결과마다 보이는 줄 수:',
-'contextchars' => '각 줄에 보이는 글 수:',
-'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 표시할 문서 크기 (바이트 수):',
-'recentchangesdays' => '최근 바뀜에 표시할 날짜 수:',
-'recentchangesdays-max' => '(최대 $1일)',
-'recentchangescount' => '최근 바뀜, 문서 역사, 기록 보기에 기본으로 표시할 문서 수:',
-'savedprefs' => '설정을 저장했습니다.',
-'timezonelegend' => '시간대:',
-'timezonetext' => '¹현지 시각과 서버 시각(UTC) 사이의 시차를 써 주세요.',
-'localtime' => '현지 시각:',
-'timezoneselect' => '시간대:',
-'timezoneuseserverdefault' => '서버 기본값을 사용',
-'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
-'timezoneoffset' => '시차¹:',
-'servertime' => '서버 시각:',
-'guesstimezone' => '웹 브라우저 설정에서 가져오기',
-'timezoneregion-africa' => '아프리카',
-'timezoneregion-america' => '아메리카',
-'timezoneregion-antarctica' => '남극',
-'timezoneregion-arctic' => '북극',
-'timezoneregion-asia' => '아시아',
-'timezoneregion-atlantic' => '대서양',
-'timezoneregion-australia' => '오스트레일리아',
-'timezoneregion-europe' => '유럽',
-'timezoneregion-indian' => '인도양',
-'timezoneregion-pacific' => '태평양',
-'allowemail' => '다른 사용자에게서 이메일을 받음',
-'prefs-searchoptions' => '검색 설정',
-'prefs-namespaces' => '이름공간',
-'defaultns' => '기본으로 다음의 이름공간에서 찾기:',
-'default' => '기본값',
-'files' => '파일',
-'prefs-custom-css' => '사용자 CSS',
-'prefs-custom-js' => '사용자 자바스크립트',
+'preferences' => '사용자 환경 설정',
+'mypreferences' => '사용자 환경 설정',
+'prefs-edits' => '편집 횟수:',
+'prefsnologin' => '로그인하지 않음',
+'prefsnologintext' => '사용자 환경 설정을 바꾸려면 먼저 <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 로그인]</span>해야 합니다.',
+'changepassword' => '비밀번호 바꾸기',
+'prefs-skin' => '스킨',
+'skin-preview' => '미리 보기',
+'prefs-math' => '수식',
+'datedefault' => '기본값',
+'prefs-datetime' => '날짜와 시각',
+'prefs-personal' => '사용자 정보',
+'prefs-rc' => '최근 바뀜',
+'prefs-watchlist' => '주시문서 목록',
+'prefs-watchlist-days' => '주시문서 목록에서 볼 날짜 수:',
+'prefs-watchlist-days-max' => '(최대 7일)',
+'prefs-watchlist-edits' => '주시문서 목록에서 볼 편집 수:',
+'prefs-watchlist-edits-max' => '(최대 1000개)',
+'prefs-watchlist-token' => '주시문서 토큰:',
+'prefs-misc' => '기타',
+'prefs-resetpass' => '비밀번호 바꾸기',
+'prefs-email' => '이메일 설정',
+'prefs-rendering' => '문서 보이기 설정',
+'saveprefs' => '저장',
+'resetprefs' => '저장하지 않은 설정 되돌리기',
+'restoreprefs' => '모두 기본 설정으로 되돌리기',
+'prefs-editing' => '편집상자',
+'prefs-edit-boxsize' => '편집 창의 크기',
+'rows' => '줄 수:',
+'columns' => '열 수:',
+'searchresultshead' => '찾기',
+'resultsperpage' => '쪽마다 보이는 결과 수:',
+'contextlines' => '결과마다 보이는 줄 수:',
+'contextchars' => '각 줄에 보이는 글 수:',
+'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 표시할 문서 크기 (바이트 수):',
+'recentchangesdays' => '최근 바뀜에 표시할 날짜 수:',
+'recentchangesdays-max' => '(최대 $1일)',
+'recentchangescount' => '기본으로 표시할 편집 수:',
+'prefs-help-recentchangescount' => '이 설정은 최근 바뀜, 문서 역사와 기록에 적용됩니다.',
+'prefs-help-watchlist-token' => '아래에 비밀 값을 넣으면 주시문서에 대한 RSS 피드가 생성됩니다.
+비밀 값을 알고 있는 사람이라면 누구나 피드를 읽을 수 있으므로 안전한 값을 입력해주세요.
+임의로 만들어진 다음 값을 사용할 수도 있습니다: $1',
+'savedprefs' => '설정을 저장했습니다.',
+'timezonelegend' => '시간대:',
+'localtime' => '현지 시각:',
+'timezoneuseserverdefault' => '서버 기본값을 사용',
+'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
+'timezoneoffset' => '시차¹:',
+'servertime' => '서버 시각:',
+'guesstimezone' => '웹 브라우저 설정에서 가져오기',
+'timezoneregion-africa' => '아프리카',
+'timezoneregion-america' => '아메리카',
+'timezoneregion-antarctica' => '남극',
+'timezoneregion-arctic' => '북극',
+'timezoneregion-asia' => '아시아',
+'timezoneregion-atlantic' => '대서양',
+'timezoneregion-australia' => '오스트레일리아',
+'timezoneregion-europe' => '유럽',
+'timezoneregion-indian' => '인도양',
+'timezoneregion-pacific' => '태평양',
+'allowemail' => '다른 사용자에게서 이메일을 받음',
+'prefs-searchoptions' => '검색 설정',
+'prefs-namespaces' => '이름공간',
+'defaultns' => '다음 이름공간에서 검색하기:',
+'default' => '기본값',
+'prefs-files' => '파일',
+'prefs-custom-css' => '사용자 CSS',
+'prefs-custom-js' => '사용자 자바스크립트',
+'prefs-reset-intro' => '이 사이트의 기본 값으로 환경 설정을 되돌릴 수 있습니다.
+복구할 수 없습니다.',
+'prefs-emailconfirm-label' => '이메일 인증:',
+'prefs-textboxsize' => '편집창의 크기',
+'youremail' => '이메일:',
+'username' => '계정 이름:',
+'uid' => '사용자 ID:',
+'prefs-memberingroups' => '가지고 있는 {{PLURAL:$1|권한}} 목록:',
+'prefs-registration' => '등록 일시:',
+'yourrealname' => '실명:',
+'yourlanguage' => '언어:',
+'yournick' => '서명:',
+'prefs-help-signature' => '토론 문서에 글을 남기실 때는 서명을 해 주세요. “<nowiki>~~~~</nowiki>”를 입력하시면 서명과 시간이 자동으로 입력됩니다.',
+'badsig' => '서명이 잘못되었습니다. HTML 태그를 확인해주세요.',
+'badsiglength' => '서명이 너무 깁니다.
+서명은 $1자보다 짧아야 합니다.',
+'yourgender' => '성별:',
+'gender-unknown' => '무응답',
+'gender-male' => '남성',
+'gender-female' => '여성',
+'prefs-help-gender' => '선택 사항: 소프트웨어에서 성별에 따른 언어 문제를 해결하기 위해 사용됩니다. 이 정보는 공개됩니다.',
+'email' => '이메일',
+'prefs-help-realname' => '실명 기입은 자유입니다. 실명을 입력할 경우 문서 기여에 자신의 이름이 들어가게 됩니다.',
+'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 이메일을 등록해 두면 비밀번호를 잊었을 때 다른 비밀번호를 받을 수 있으며, 이메일을 공개하지 않고도 다른 사용자에게 메일을 받을 수 있습니다.',
+'prefs-help-email-required' => '이메일 주소가 필요합니다.',
+'prefs-info' => '기본 정보',
+'prefs-i18n' => '언어 설정',
+'prefs-signature' => '서명',
+'prefs-dateformat' => '날짜 형식',
+'prefs-timeoffset' => '시차 설정',
+'prefs-advancedediting' => '고급 설정',
+'prefs-advancedrc' => '고급 설정',
+'prefs-advancedrendering' => '고급 설정',
+'prefs-advancedsearchoptions' => '고급 설정',
+'prefs-advancedwatchlist' => '고급 설정',
+'prefs-display' => '보이기 설정',
+'prefs-diffs' => '차이',
# User rights
-'userrights' => '사용자 권한 관리', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '사용자 권한 관리',
-'userrights-user-editname' => '계정 이름:',
-'editusergroup' => '사용자 그룹 편집',
-'editinguser' => "'''[[User:$1|$1]]'''([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 사용자의 권한 변경",
-'userrights-editusergroup' => '사용자 그룹 편집',
-'saveusergroups' => '사용자 권한 저장',
-'userrights-groupsmember' => '현재 권한:',
-'userrights-groups-help' => '이 사용자의 권한을 바꿀 수 있습니다.
+'userrights' => '사용자 권한 관리',
+'userrights-lookup-user' => '사용자 권한 관리',
+'userrights-user-editname' => '계정 이름:',
+'editusergroup' => '사용자 그룹 편집',
+'editinguser' => "'''[[User:$1|$1]]'''([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 사용자의 권한 변경",
+'userrights-editusergroup' => '사용자 그룹 편집',
+'saveusergroups' => '사용자 권한 저장',
+'userrights-groupsmember' => '현재 권한:',
+'userrights-groupsmember-auto' => '자동으로 부여된 권한:',
+'userrights-groups-help' => '이 사용자의 권한을 바꿀 수 있습니다.
* 사용자는 체크 표시가 있는 권한을 갖습니다.
* 사용자는 체크 표시가 없는 권한을 갖지 않습니다.
* <nowiki>*</nowiki>표시는 권한을 주거나 거두는 것 중 하나만 할 수 있다는 뜻입니다.',
-'userrights-reason' => '이유:',
-'userrights-no-interwiki' => '다른 위키의 사용자 권한을 바꿀 권한이 없습니다.',
-'userrights-nodatabase' => '데이터베이스 $1이 존재하지 않거나 로컬에 있지 않습니다.',
-'userrights-nologin' => '사용자의 권한을 바꾸기 위해서는 반드시 관리자 계정으로 [[Special:UserLogin|로그인]]해야 합니다.',
-'userrights-notallowed' => '다른 사용자의 권한을 조정할 권한이 없습니다.',
-'userrights-changeable-col' => '바꿀 수 있는 권한',
-'userrights-unchangeable-col' => '바꿀 수 없는 권한',
+'userrights-reason' => '이유:',
+'userrights-no-interwiki' => '다른 위키의 사용자 권한을 바꿀 권한이 없습니다.',
+'userrights-nodatabase' => '데이터베이스 $1이 존재하지 않거나 로컬에 있지 않습니다.',
+'userrights-nologin' => '사용자의 권한을 바꾸기 위해서는 반드시 관리자 계정으로 [[Special:UserLogin|로그인]]해야 합니다.',
+'userrights-notallowed' => '다른 사용자의 권한을 조정할 권한이 없습니다.',
+'userrights-changeable-col' => '바꿀 수 있는 권한',
+'userrights-unchangeable-col' => '바꿀 수 없는 권한',
# Groups
'group' => '권한:',
@@ -1333,6 +1399,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'right-bigdelete' => '문서 역사가 긴 문서를 삭제',
'right-deleterevision' => '문서의 특정 판을 삭제 및 복구',
'right-deletedhistory' => '삭제된 문서의 내용을 제외한 역사를 보기',
+'right-deletedtext' => '삭제된 문서의 내용과 편집상의 차이를 보기',
'right-browsearchive' => '삭제된 문서 검색',
'right-undelete' => '삭제된 문서 복구',
'right-suppressrevision' => '관리자도 보지 못하도록 숨겨진 판의 확인 및 복구',
@@ -1346,6 +1413,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'right-editprotected' => '보호된 문서 편집 (연쇄적 보호 제외)',
'right-editinterface' => '사용자 인터페이스를 편집',
'right-editusercssjs' => '다른 사용자의 CSS와 JS 문서를 편집',
+'right-editusercss' => '다른 사용자의 CSS 문서를 편집',
+'right-edituserjs' => '다른 사용자의 JS 문서를 편집',
'right-rollback' => '특정 문서를 편집한 마지막 사용자의 편집을 신속하게 되돌리기',
'right-markbotedits' => '되돌리기를 봇의 편집으로 취급 가능',
'right-noratelimit' => '편집이나 다른 행동 속도의 제한을 받지 않음',
@@ -1362,6 +1431,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'right-siteadmin' => '데이터베이스를 잠그거나 잠금 해제',
'right-reset-passwords' => '다른 사용자의 비밀번호를 변경',
'right-override-export-depth' => '5단계로 링크된 문서를 포함하여 문서를 내보내기',
+'right-versiondetail' => '소프트웨어 버전에 대한 자세한 정보를 보기',
+'right-sendemail' => '다른 사용자에게 이메일 보내기',
# User rights log
'rightslog' => '사용자 권한 기록',
@@ -1411,6 +1482,15 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'recentchanges-legend' => '최근 바뀜 설정',
'recentchangestext' => '위키의 최근 바뀜 내역이 나와 있습니다.',
'recentchanges-feed-description' => '위키의 최근 바뀜',
+'recentchanges-label-legend' => '범례: $1.',
+'recentchanges-legend-newpage' => '$1 - 새 문서',
+'recentchanges-label-newpage' => '새로운 문서',
+'recentchanges-legend-minor' => '$1 - 사소한 편집',
+'recentchanges-label-minor' => '사소한 편집',
+'recentchanges-legend-bot' => '$1 - 봇 편집',
+'recentchanges-label-bot' => '봇의 편집',
+'recentchanges-legend-unpatrolled' => '$1 - 검토되지 않은 편집',
+'recentchanges-label-unpatrolled' => '아직 검토되지 않은 편집',
'rcnote' => "다음은 $4 $5 까지의 '''$2'''일동안 바뀐 '''$1'''개의 문서입니다.",
'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 '''$1'''개의 문서입니다.",
'rclistfrom' => '$1 이래로 바뀐 문서',
@@ -1437,6 +1517,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
# Recent changes linked
'recentchangeslinked' => '가리키는 글의 바뀜',
+'recentchangeslinked-feed' => '가리키는 글의 바뀜',
+'recentchangeslinked-toolbox' => '가리키는 글의 바뀜',
'recentchangeslinked-title' => '‘$1’ 문서에 관련된 문서 바뀜',
'recentchangeslinked-noresult' => '이 문서에서 링크하는 문서 중, 해당 기간에 바뀐 문서가 없습니다.',
'recentchangeslinked-summary' => "여기를 가리키는 문서(분류일 경우 이 분류에 포함된 문서)에 대한 최근 바뀜이 나와 있습니다.
@@ -1447,8 +1529,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
# Upload
'upload' => '파일 올리기',
'uploadbtn' => '파일 올리기',
-'reupload' => '다시 올리기',
'reuploaddesc' => '올리기를 취소하고 올리기 양식으로 돌아가기',
+'upload-tryagain' => '수정된 파일 설명을 저장',
'uploadnologin' => '로그인하지 않음',
'uploadnologintext' => '파일을 올리려면 [[Special:UserLogin|로그인]]해야 합니다.',
'upload_directory_missing' => '파일 올리기용 디렉토리($1)가 없고 웹 서버가 생성하지 못했습니다.',
@@ -1480,6 +1562,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'minlength1' => '파일 이름은 적어도 1글자 이상이어야 합니다.',
'illegalfilename' => '파일 이름 "$1"에는 문서 제목으로 허용되지 않는 글자가 포함되어 있습니다. 이름을 바꾸어 다시 시도해 주세요.',
'badfilename' => '파일 이름이 ‘$1’(으)로 바뀌었습니다.',
+'filetype-mime-mismatch' => '파일 확장자와 MIME가 일치하지 않습니다.',
'filetype-badmime' => '‘$1’ MIME을 가진 파일은 올릴 수 없습니다.',
'filetype-bad-ie-mime' => '인터넷 익스플로러가 잠재적으로 위험한 파일 형식으로 판단되어 사용이 금지된 "$1"로 인식할 수 있기 때문에 이 파일을 올릴 수 없습니다.',
'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 추천하지 않습니다. 추천하는 {{PLURAL:\$3|파일 확장자}}는 \$2입니다.",
@@ -1501,7 +1584,6 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
* 올리려는 파일 이름: '''<tt>[[:$1]]</tt>'''
* 존재하는 파일 이름: '''<tt>[[:$2]]</tt>'''
다른 이름으로 시도해 주세요.",
-'fileexists-thumb' => "<center>'''존재하는 파일'''</center>",
'fileexists-thumbnail-yes' => "이 파일은 원본 그림이 아닌, 다른 그림의 크기를 줄인 섬네일 파일인 것 같습니다. [[$1|thumb]]
'''<tt>[[:$1]]</tt>''' 파일을 확인해주세요.
해당 파일이 현재 올리려는 파일과 같다면, 더 작은 크기의 그림을 올릴 필요는 없습니다.",
@@ -1516,6 +1598,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'file-deleted-duplicate' => '이 파일과 같은 파일 ([[$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.',
'successfulupload' => '올리기 성공',
'uploadwarning' => '올리기 경고',
+'uploadwarning-text' => '아래의 파일 설명을 수정하고 다시 시도해 주세요.',
'savefile' => '파일 저장',
'uploadedimage' => '‘[[$1]]’ 파일을 올렸습니다.',
'overwroteimage' => '‘[[$1]]’ 파일의 새 버전을 올렸습니다.',
@@ -1523,11 +1606,14 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
'uploaddisabledtext' => '파일 올리기 기능이 비활성화되어 있습니다.',
'php-uploaddisabledtext' => 'PHP 파일 올리기가 비활성화되었습니다. 파일 올리기 설정을 확인하십시오.',
'uploadscripted' => '이 파일에는 HTML이나 다른 스크립트 코드가 포함되어 있어, 웹 브라우저에서 오류를 일으킬 수 있습니다.',
-'uploadcorrupt' => '이 파일은 잘못된 형식을 가지고 있습니다. 파일을 확인하고 다시 시도해 주세요.',
'uploadvirus' => '파일이 바이러스를 포함하고 있습니다! 상세 설명: $1',
+'upload-source' => '원본 파일',
'sourcefilename' => '원본 파일 이름:',
+'sourceurl' => '출처 URL:',
'destfilename' => '파일의 새 이름:',
'upload-maxfilesize' => '파일의 최대 크기: $1',
+'upload-description' => '파일의 설명',
+'upload-options' => '올리기 설정',
'watchthisupload' => '이 파일 주시하기',
'filewasdeleted' => '같은 이름을 가진 파일이 올라온 적이 있었고, 그 후에 삭제되었습니다. 올리기 전에 $1을 확인해 주시기 바랍니다.',
'upload-wasdeleted' => "'''경고: 삭제된 적이 있는 파일을 다시 올리려 하고 있습니다.'''
@@ -1552,12 +1638,41 @@ MGP # 펜탁스
PICT # 기타
#</pre> <!-- 이 줄은 그대로 두십시오. -->',
-'upload-proto-error' => '잘못된 프로토콜',
-'upload-proto-error-text' => '파일을 URL로 올리려면 <code>http://</code>이나 <code>ftp://</code>로 시작해야 합니다.',
-'upload-file-error' => '내부 오류',
-'upload-file-error-text' => '서버에 임시 파일을 만드는 과정에서 내부 오류가 발생했습니다. [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
-'upload-misc-error' => '알 수 없는 파일 올리기 오류',
-'upload-misc-error-text' => '파일을 올리는 중 알 수 없는 오류가 발생했습니다. URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세요. 문제가 계속되면 [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
+'upload-proto-error' => '잘못된 프로토콜',
+'upload-proto-error-text' => '파일을 URL로 올리려면 <code>http://</code>이나 <code>ftp://</code>로 시작해야 합니다.',
+'upload-file-error' => '내부 오류',
+'upload-file-error-text' => '서버에 임시 파일을 만드는 과정에서 내부 오류가 발생했습니다. [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
+'upload-misc-error' => '알 수 없는 파일 올리기 오류',
+'upload-misc-error-text' => '파일을 올리는 중 알 수 없는 오류가 발생했습니다. URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세요. 문제가 계속되면 [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
+'upload-too-many-redirects' => 'URL이 너무 많은 넘겨주기에 연결되어 있습니다.',
+'upload-unknown-size' => '크기를 알 수 없음',
+'upload-http-error' => 'HTTP 오류 발생: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => '접근 거부됨',
+'img-auth-nopathinfo' => 'PATH_INFO 가 빠졌습니다.
+서버에 이 정보가 설정되어 있지 않습니다.
+CGI 기반이거나 img_auth 를 지원하지 않을 수 있습니다.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization 를 참고하세요.',
+'img-auth-notindir' => '요청한 경로가 설정한 업로드 디렉토리에 없습니다.',
+'img-auth-badtitle' => '"$1"에서 바른 제목을 만들 수 없습니다.',
+'img-auth-nologinnWL' => '당신은 로그인하지 않았으며 "$1" 파일은 화이트리스트에 존재하지 않습니다.',
+'img-auth-nofile' => '"$1" 파일이 없습니다.',
+'img-auth-isdir' => '"$1" 디렉토리에 접근을 시도했습니다.
+파일에만 접근할 수 있습니다.',
+'img-auth-streaming' => '‘$1’ 파일을 전송하는 중입니다.',
+'img-auth-public' => 'img_auth.php는 개인 위키 파일을 외부 사이트로 전송하는 기능입니다. 이 기능은 기본적으로 공개적인 위키에서 사용하도록 설계되어 있으며, 보안적인 문제로 기본적으로 img_auth.php 기능은 비활성화되어 있습니다.',
+'img-auth-noread' => '‘$1’ 파일을 볼 권한이 없습니다.',
+
+# HTTP errors
+'http-invalid-url' => '잘못된 URL: $1',
+'http-invalid-scheme' => '‘$1’로 시작하는 URL은 지원되지 않습니다.',
+'http-request-error' => '알 수 없는 오류로 HTTP 요청에 실패했습니다.',
+'http-read-error' => 'HTTP 읽기 오류.',
+'http-timed-out' => 'HTTP 요청 시간 초과.',
+'http-curl-error' => 'URL 열기 오류: $1',
+'http-host-unreachable' => 'URL에 접근하지 못했습니다.',
+'http-bad-status' => 'HTTP 요청 중 오류 발생: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL 접근 불가',
@@ -1567,6 +1682,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'upload-curl-error28-text' => '사이트에서 응답하는 시간이 너무 깁니다. 사이트 접속이 가능한지 확인한 다음 다시 시도해주세요. 해당 사이트에 접속이 많을 경우, 접속이 원활한 시간대에 시도해주세요.',
'license' => '라이선스:',
+'license-header' => '라이선스',
'nolicense' => '선택하지 않음',
'license-nopreview' => '(미리보기 불가능)',
'upload_source_url' => ' (유효하고, 모든 사람이 접근 가능한 URL)',
@@ -1587,38 +1703,41 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'listfiles_count' => '버전',
# File description page
-'filehist' => '파일 역사',
-'filehist-help' => '날짜/시간 링크를 클릭하면 해당 시간의 파일을 볼 수 있습니다.',
-'filehist-deleteall' => '모두 삭제',
-'filehist-deleteone' => '지우기',
-'filehist-revert' => '되돌리기',
-'filehist-current' => '현재',
-'filehist-datetime' => '날짜/시간',
-'filehist-thumb' => '섬네일',
-'filehist-thumbtext' => '$1 버전의 파일',
-'filehist-nothumb' => '섬네일 없음',
-'filehist-user' => '사용자',
-'filehist-dimensions' => '크기',
-'filehist-filesize' => '파일 크기',
-'filehist-comment' => '내용',
-'imagelinks' => '파일 링크',
-'linkstoimage' => '다음 $1개의 문서가 이 파일을 사용하고 있습니다:',
-'linkstoimage-more' => '$1개 이상의 문서가 이 파일을 가리키고 있습니다.
+'file-anchor-link' => '파일',
+'filehist' => '파일 역사',
+'filehist-help' => '날짜/시간 링크를 클릭하면 해당 시간의 파일을 볼 수 있습니다.',
+'filehist-deleteall' => '모두 삭제',
+'filehist-deleteone' => '지우기',
+'filehist-revert' => '되돌리기',
+'filehist-current' => '현재',
+'filehist-datetime' => '날짜/시간',
+'filehist-thumb' => '섬네일',
+'filehist-thumbtext' => '$1 버전의 파일',
+'filehist-nothumb' => '섬네일 없음',
+'filehist-user' => '사용자',
+'filehist-dimensions' => '크기',
+'filehist-filesize' => '파일 크기',
+'filehist-comment' => '내용',
+'filehist-missing' => '파일을 찾을 수 없음',
+'imagelinks' => '파일 링크',
+'linkstoimage' => '다음 $1개의 문서가 이 파일을 사용하고 있습니다:',
+'linkstoimage-more' => '$1개 이상의 문서가 이 파일을 가리키고 있습니다.
다음 목록은 이 파일을 가리키는 처음 $1개 문서만 보여주고 있습니다.
이 파일을 가리키는 모든 문서를 보려면 [[Special:WhatLinksHere/$2|여기]]를 참고해 주십시오.',
-'nolinkstoimage' => '이 파일을 사용하는 문서가 없습니다.',
-'morelinkstoimage' => '이 파일이 쓰이고 있는 문서 목록 [[Special:WhatLinksHere/$1|더 보기]].',
-'redirectstofile' => '다음 파일 $1개가 이 파일로 넘겨주고 있습니다:',
-'duplicatesoffile' => '다음 파일 $1개가 이 파일과 중복됩니다 ([[Special:FileDuplicateSearch/$2|자세한 정보]]):',
-'sharedupload' => '이 파일은 $1으로부터 왔고, 다른 프로젝트에서 사용하고 있을 가능성이 있습니다.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '$1에서 더 자세한 정보를 얻을 수 있습니다.',
-'shareduploadwiki-desc' => '$1의 설명을 아래에 표시합니다.',
-'shareduploadwiki-linktext' => '자료의 설명 문서',
-'noimage' => '파일이 없습니다. $1 할 수 있습니다.',
-'noimage-linktext' => '업로드',
-'uploadnewversion-linktext' => '이 파일의 새로운 버전을 올리기',
-'shared-repo-from' => '($1)', # $1 is the repository name
-'shared-repo' => '공용 저장소', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => '이 파일을 사용하는 문서가 없습니다.',
+'morelinkstoimage' => '이 파일이 쓰이고 있는 문서 목록 [[Special:WhatLinksHere/$1|더 보기]].',
+'redirectstofile' => '다음 파일 $1개가 이 파일로 넘겨주고 있습니다:',
+'duplicatesoffile' => '다음 파일 $1개가 이 파일과 중복됩니다 ([[Special:FileDuplicateSearch/$2|자세한 정보]]):',
+'sharedupload' => '이 파일은 $1으로부터 왔고, 다른 프로젝트에서 사용하고 있을 가능성이 있습니다.',
+'sharedupload-desc-there' => '이 파일은 $1(으)로부터 왔고, 다른 프로젝트에서 사용하고 있을 가능성이 있습니다. [$2 해당 파일 문서]에서 자세한 정보를 확인해주세요.',
+'sharedupload-desc-here' => '이 파일은 $1(으)로부터 왔고, 다른 프로젝트에서 사용하고 있을 가능성이 있습니다.
+[$2 해당 파일]에 대한 설명이 아래에 나와 있습니다.',
+'filepage-nofile' => '해당 이름으로 된 파일이 없습니다.',
+'filepage-nofile-link' => '해당 이름으로 된 파일이 없습니다. [$1 파일을 올릴 수] 있습니다.',
+'uploadnewversion-linktext' => '이 파일의 새로운 버전을 올리기',
+'shared-repo-from' => '($1)',
+'shared-repo' => '공용 저장소',
+'shared-repo-name-wikimediacommons' => '위키미디어 공용',
# File reversion
'filerevert' => '$1 되돌리기',
@@ -1647,6 +1766,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
** 저작권 침해
** 중복된 파일',
'filedelete-edit-reasonlist' => '삭제 이유 편집',
+'filedelete-maintenance' => '점검 중에는 임시적으로 삭제와 복구를 할 수 없습니다.',
# MIME search
'mimesearch' => 'MIME 검색',
@@ -1669,7 +1789,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
# Random page
'randompage' => '임의 문서로',
-'randompage-nopages' => '"$1" 이름공간에는 문서가 없습니다.',
+'randompage-nopages' => '{{PLURAL:$2|다음}} 이름공간에는 문서가 없습니다: $1',
# Random redirect
'randomredirect' => '임의 넘겨주기 문서로',
@@ -1681,6 +1801,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'statistics-header-edits' => '편집 통계',
'statistics-header-views' => '방문 통계',
'statistics-header-users' => '사용자 통계',
+'statistics-header-hooks' => '기타 통계',
'statistics-articles' => '일반 문서',
'statistics-pages' => '전체 문서',
'statistics-pages-desc' => '토론 문서, 넘겨주기 문서 등을 포함.',
@@ -1703,15 +1824,15 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'doubleredirects' => '이중 넘겨주기 목록',
'doubleredirectstext' => '이 문서는 다른 넘겨주기 문서로 넘겨주고 있는 문서의 목록입니다.
-매 줄에는 첫번째 문서와 두번째 문서의 링크가 있습니다. 그리고 보통 첫번째 문서가 넘겨주어야 할 "실제" 문서인 두번째 넘겨주기의 대상이 있습니다.
+매 줄에는 첫 번째 문서와 두 번째 문서의 링크가 있습니다. 그리고 보통 첫 번째 문서가 넘겨주어야 할 "실제" 문서인 두 번째 넘겨주기의 대상이 있습니다.
<s>취소선이 그인</s> 부분은 이미 해결되었습니다.',
'double-redirect-fixed-move' => '[[$1]] 문서를 옮겼습니다. 이 문서는 이제 [[$2]] 문서로 넘겨줍니다.',
'double-redirect-fixer' => '넘겨주기 수리꾼',
'brokenredirects' => '끊긴 넘겨주기 목록',
'brokenredirectstext' => '존재하지 않는 문서로 넘겨주기가 되어 있는 문서의 목록입니다:',
-'brokenredirects-edit' => '(편집)',
-'brokenredirects-delete' => '(삭제)',
+'brokenredirects-edit' => '편집',
+'brokenredirects-delete' => '삭제',
'withoutinterwiki' => '언어 인터위키 링크가 없는 문서 목록',
'withoutinterwiki-summary' => '다른 언어로의 연결이 없는 문서의 목록입니다:',
@@ -1818,7 +1939,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
# Special:Categories
'categories' => '분류',
-'categoriespagetext' => '문서나 자료를 담고 있는 분류 목록입니다.
+'categoriespagetext' => '{{PLURAL:$1}}문서나 자료를 담고 있는 분류 목록입니다.
[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.
[[Special:WantedCategories|필요한 분류]]도 참고하세요.',
'categoriesfrom' => '다음으로 시작하는 분류들을 보여주기:',
@@ -1826,8 +1947,9 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'special-categories-sort-abc' => '알파벳순으로 정렬',
# Special:DeletedContributions
-'deletedcontributions' => '삭제된 기여 목록',
-'deletedcontributions-title' => '삭제된 기여 목록',
+'deletedcontributions' => '삭제된 기여 목록',
+'deletedcontributions-title' => '삭제된 기여 목록',
+'sp-deletedcontributions-contribs' => '기여',
# Special:LinkSearch
'linksearch' => '웹 링크 검색',
@@ -1843,6 +1965,16 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'listusersfrom' => '다음으로 시작하는 사용자 보기:',
'listusers-submit' => '보기',
'listusers-noresult' => '해당 사용자가 없습니다.',
+'listusers-blocked' => '(차단됨)',
+
+# Special:ActiveUsers
+'activeusers' => '활동 중인 사용자 목록',
+'activeusers-intro' => '다음은 최근 $1일 동안 활동한 사용자의 목록입니다.',
+'activeusers-count' => '최근 $3일 사이의 편집 $1개',
+'activeusers-from' => '다음으로 시작하는 사용자를 보기:',
+'activeusers-hidebots' => '봇을 숨기기',
+'activeusers-hidesysops' => '관리자를 숨기기',
+'activeusers-noresult' => '사용자가 없습니다.',
# Special:Log/newusers
'newuserlogpage' => '사용자 등록 기록',
@@ -1853,17 +1985,23 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'newuserlog-autocreate-entry' => '계정이 자동으로 만들어졌습니다.',
# Special:ListGroupRights
-'listgrouprights' => '사용자 권한 목록',
-'listgrouprights-summary' => '다음은 이 위키에서 설정된 사용자 권한 그룹의 목록입니다.
+'listgrouprights' => '사용자 권한 목록',
+'listgrouprights-summary' => '다음은 이 위키에서 설정된 사용자 권한 그룹의 목록입니다.
각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|이곳]]을 참조하십시오.',
-'listgrouprights-group' => '그룹',
-'listgrouprights-rights' => '권한',
-'listgrouprights-helppage' => 'Help:사용자 권한 그룹',
-'listgrouprights-members' => '(사용자 목록)',
-'listgrouprights-addgroup' => '{{PLURAL:$2}}권한 부여: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2}}권한 회수: $1',
-'listgrouprights-addgroup-all' => '모든 권한을 부여',
-'listgrouprights-removegroup-all' => '모든 권한을 회수',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">부여된 권한</span>
+* <span class="listgrouprights-revoked">해제된 권한</span>',
+'listgrouprights-group' => '그룹',
+'listgrouprights-rights' => '권한',
+'listgrouprights-helppage' => 'Help:사용자 권한 그룹',
+'listgrouprights-members' => '(사용자 목록)',
+'listgrouprights-addgroup' => '{{PLURAL:$2}}권한 부여: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2}}권한 회수: $1',
+'listgrouprights-addgroup-all' => '모든 권한을 부여',
+'listgrouprights-removegroup-all' => '모든 권한을 회수',
+'listgrouprights-addgroup-self' => '자신에게 다음 {{PLURAL:$2|권한|권한}}을 부여: $1',
+'listgrouprights-removegroup-self' => '자신에게서 다음 {{PLURAL:$2|권한|권한}}을 해제: $1',
+'listgrouprights-addgroup-self-all' => '자신에게 모든 권한을 부여',
+'listgrouprights-removegroup-self-all' => '자신의 계정에서 모든 권한을 해제',
# E-mail user
'mailnologin' => '보낼 이메일 주소가 없음',
@@ -1937,7 +2075,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
'enotif_anon_editor' => '익명 사용자 $1',
'enotif_body' => '$WATCHINGUSERNAME님,
-{{SITENAME}}의 문서 $PAGETITLE을(를) $PAGEEDITOR님이 $CHANGEDORCREATED었습니다. 현재의 문서는 $PAGETITLE_URL 에서 볼 수 있습니다.
+{{SITENAME}}의 $PAGETITLE 문서를 $PAGEEDITDATE에 $PAGEEDITOR님이 $CHANGEDORCREATED었습니다. 현재의 문서는 $PAGETITLE_URL 에서 볼 수 있습니다.
$NEWPAGE
@@ -1948,15 +2086,18 @@ $NEWPAGE
위키: $PAGEEDITOR_WIKI
이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다.
-주시 문서 목록을 지울 수도 있습니다.
+모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
{{SITENAME}} 알림 시스템
--
주시문서 설정을 바꾸려면 다음을 사용하세요:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+주시문서에서 이 문서를 지우려면 이곳을 방문해주세요:
+$UNWATCHURL
-도움말:
+도움을 얻거나 피드백 하기:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1968,9 +2109,10 @@ $NEWPAGE
'exblank' => '빈 문서',
'delete-confirm' => '‘$1’ 삭제',
'delete-legend' => '삭제',
-'historywarning' => '주의: 현재 삭제하려는 문서에는 문서 역사가 있습니다:',
+'historywarning' => "'''주의''': 삭제하려는 문서에 약 $1개의 과거 편집 내역이 있습니다:",
'confirmdeletetext' => '문서와 문서 역사를 삭제하려고 합니다. 삭제하려는 문서가 맞는지, 이 문서를 삭제하는 것이 [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지를 확인해 주세요.',
'actioncomplete' => '명령 완료',
+'actionfailed' => '명령 실패',
'deletedtext' => '‘<nowiki>$1</nowiki>’ 문서를 삭제했습니다. 최근 삭제 기록은 $2에 있습니다.',
'deletedarticle' => '사용자가 [[$1]] 문서를 삭제하였습니다.',
'suppressedarticle' => '"[[$1]]"를 숨김',
@@ -1992,18 +2134,19 @@ $NEWPAGE
주의해 주세요.',
# Rollback
-'rollback' => '편집 되돌리기',
-'rollback_short' => '되돌리기',
-'rollbacklink' => '되돌리기',
-'rollbackfailed' => '되돌리기 실패',
-'cantrollback' => '편집을 되돌릴 수 없습니다. 문서를 편집한 사용자가 한명뿐입니다.',
-'alreadyrolled' => '[[:$1]]에서 [[User:$2|$2]] ([[User talk:$2|토론]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) 의 편집을 되돌릴 수 없습니다; 누군가가 문서를 고치거나 되돌렸습니다.
+'rollback' => '편집 되돌리기',
+'rollback_short' => '되돌리기',
+'rollbacklink' => '되돌리기',
+'rollbackfailed' => '되돌리기 실패',
+'cantrollback' => '편집을 되돌릴 수 없습니다. 문서를 편집한 사용자가 한명뿐입니다.',
+'alreadyrolled' => '[[:$1]]에서 [[User:$2|$2]] ([[User talk:$2|토론]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) 의 편집을 되돌릴 수 없습니다; 누군가가 문서를 고치거나 되돌렸습니다.
마지막으로 문서를 편집한 사람은 [[User:$3|$3]] ([[User talk:$3|토론]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) 입니다.',
-'editcomment' => "편집 요약: ''$1''", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 [[User:$1|$1]]의 마지막 버전으로 되돌림', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1의 편집을 $2의 마지막 버전으로 되돌렸습니다.',
-'sessionfailure' => '로그인 세션에 문제가 발생한 것 같습니다. 세션 하이재킹을 막기 위해 동작이 취소되었습니다. 브라우저의 "뒤로" 버튼을 누르고 문서를 새로고침한 후에 다시 시도해 주세요.',
+'editcomment' => "편집 요약: ''$1''",
+'revertpage' => '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 [[User:$1|$1]]의 마지막 버전으로 되돌림',
+'revertpage-nouser' => '(계정 이름 삭제됨)의 편집을 [[User:$1|$1]]의 마지막 편집으로 되돌림',
+'rollback-success' => '$1의 편집을 $2의 마지막 버전으로 되돌렸습니다.',
+'sessionfailure' => '로그인 세션에 문제가 발생한 것 같습니다. 세션 하이재킹을 막기 위해 동작이 취소되었습니다. 브라우저의 "뒤로" 버튼을 누르고 문서를 새로고침한 후에 다시 시도해 주세요.',
# Protect
'protectlogpage' => '문서 보호 기록',
@@ -2019,7 +2162,7 @@ $NEWPAGE
'protectexpiry' => '보호 기간:',
'protect_expiry_invalid' => '보호 기간이 잘못되었습니다.',
'protect_expiry_old' => '기한을 과거로 입력했습니다.',
-'protect-unchain' => '이동 권한을 수동으로 조정',
+'protect-unchain-permissions' => '다른 보호 설정을 수동으로 설정하기',
'protect-text' => "'''<nowiki>$1</nowiki>''' 문서의 보호 수준을 보거나 변경할 수 있습니다.",
'protect-locked-blocked' => "차단된 동안에는 보호 설정을 바꿀 수 없습니다. '''$1''' 문서의 보호 설정은 다음과 같습니다:",
'protect-locked-dblock' => "데이터베이스가 잠겨 문서 보호 설정을 바꿀 수 없습니다. '''$1''' 문서의 현재 설정은 다음과 같습니다:",
@@ -2046,7 +2189,7 @@ $NEWPAGE
** 비생산적인 편집 분쟁
** 방문이 많은 문서',
'protect-edit-reasonlist' => '보호 이유 편집하기',
-'protect-expiry-options' => '1시간:1 hour,1일:1 day,1주일:1 week,2주일:2 weeks,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year,무기한:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1시간:1 hour,1일:1 day,1주일:1 week,2주일:2 weeks,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year,무기한:infinite',
'restriction-type' => '권한:',
'restriction-level' => '보호 수준:',
'minimum-size' => '최소 크기',
@@ -2088,6 +2231,7 @@ $NEWPAGE
'undelete-nodiff' => '이전의 판이 없습니다.',
'undeletebtn' => '복구',
'undeletelink' => '보기/되살리기',
+'undeleteviewlink' => '보기',
'undeletereset' => '초기화',
'undeleteinvert' => '선택 반전',
'undeletecomment' => '이유:',
@@ -2127,19 +2271,23 @@ $1',
'contributions-title' => '$1 사용자의 기여 목록',
'mycontris' => '내 기여 목록',
'contribsub2' => '$1($2)의 기여',
-'nocontribs' => '이 사용자는 아무 것도 기여하지 않았습니다.', # Optional parameter: $1 is the user name
+'nocontribs' => '이 사용자는 아무 것도 기여하지 않았습니다.',
'uctop' => '(최신)',
'month' => '월:',
'year' => '연도:',
-'sp-contributions-newbies' => '새 사용자의 기여만 보기',
-'sp-contributions-newbies-sub' => '새 사용자들의 기여',
-'sp-contributions-newbies-title' => '새 사용자의 기여',
-'sp-contributions-blocklog' => '차단 기록',
-'sp-contributions-logs' => '기록',
-'sp-contributions-search' => '기여 검색',
-'sp-contributions-username' => 'IP 주소 혹은 계정 이름:',
-'sp-contributions-submit' => '찾기',
+'sp-contributions-newbies' => '새 사용자의 기여만 보기',
+'sp-contributions-newbies-sub' => '새 사용자들의 기여',
+'sp-contributions-newbies-title' => '새 사용자의 기여',
+'sp-contributions-blocklog' => '차단 기록',
+'sp-contributions-deleted' => '삭제된 기여 목록',
+'sp-contributions-logs' => '기록',
+'sp-contributions-talk' => '토론',
+'sp-contributions-userrights' => '사용자 권한 관리',
+'sp-contributions-blocked-notice' => '이 사용자는 현재 차단되어 있습니다. 해당 사용자의 차단 기록은 다음과 같습니다.',
+'sp-contributions-search' => '기여 검색',
+'sp-contributions-username' => 'IP 주소 혹은 계정 이름:',
+'sp-contributions-submit' => '찾기',
# What links here
'whatlinkshere' => '여기를 가리키는 문서',
@@ -2162,6 +2310,7 @@ $1',
# Block/unblock
'blockip' => '사용자 차단',
+'blockip-title' => '특정 사용자를 차단하기',
'blockip-legend' => '사용자 차단',
'blockiptext' => '차단할 IP 주소나 사용자 이름을 아래에 적어 주세요.
차단은 문서 훼손을 막기 위해, [[{{MediaWiki:Policy-url}}|정책]]에 의해서만 이루어져야 합니다.
@@ -2185,7 +2334,7 @@ $1',
'ipbenableautoblock' => '이 사용자가 최근에 사용했거나 앞으로 사용하는 IP를 자동으로 막기',
'ipbsubmit' => '사용자 차단',
'ipbother' => '다른 기간:',
-'ipboptions' => '2시간:2 hours,1일:1 day,3일:3 days,1주일:1 week,2주일:2 weeks,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year,무기한:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2시간:2 hours,1일:1 day,3일:3 days,1주일:1 week,2주일:2 weeks,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year,무기한:infinite',
'ipbotheroption' => '수동으로 지정',
'ipbotherreason' => '다른 이유/추가적인 이유:',
'ipbhidename' => '사용자 이름을 편집 역사에서 숨기기',
@@ -2213,9 +2362,11 @@ $1',
'ipblocklist-sh-tempblocks' => '임시 차단을 $1',
'ipblocklist-sh-addressblocks' => '단일 IP 차단을 $1',
'ipblocklist-submit' => '찾기',
+'ipblocklist-localblock' => '로컬 차단',
+'ipblocklist-otherblocks' => '다른 {{PLURAL:$1|}}차단 기록',
'blocklistline' => '$1에 $2 사용자는 $3을 차단함 ($4)',
'infiniteblock' => '무기한',
-'expiringblock' => '$1에 해제',
+'expiringblock' => '$1 $2에 해제',
'anononlyblock' => '익명 사용자만',
'noautoblockblock' => '자동 차단 비활성화됨',
'createaccountblock' => '계정 생성 금지됨',
@@ -2230,7 +2381,8 @@ $1',
'autoblocker' => '당신의 IP 주소는 최근에 "[[User:$1|$1]]" 사용자가 사용하였기 때문에 자동으로 차단되었습니다.
$1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
'blocklogpage' => '차단 기록',
-'blocklog-fulllog' => '전체 차단 기록',
+'blocklog-showlog' => '이 사용자는 과거에 차단된 기록이 있습니다. 해당 사용자의 차단 기록은 다음과 같습니다.',
+'blocklog-showsuppresslog' => '이 사용자는 과거에 차단된 적이 있으며, 그 기록이 숨겨져 있습니다. 해당 사용자의 차단 기록은 다음과 같습니다.',
'blocklogentry' => '[[$1]] 사용자를 $2 차단함 $3',
'reblock-logentry' => '[[$1]] 사용자의 차단 기간을 $2(으)로 변경 $3',
'blocklogtext' => '이 목록은 사용자 차단/차단 해제 기록입니다. 자동으로 차단된 IP 주소는 여기에 나오지 않습니다. [[Special:IPBlockList|여기]]에서 현재 차단된 사용자 목록을 볼 수 있습니다.',
@@ -2249,11 +2401,13 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
'ipb_already_blocked' => '"$1" 사용자는 이미 차단됨',
'ipb-needreblock' => '== 이미 차단되어 있습니다 ==
$1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습니까?',
+'ipb-otherblocks-header' => '다른 {{PLURAL:$1|}}차단 기록',
'ipb_cant_unblock' => '오류: 차단 ID $1이(가) 존재하지 않습니다.
이미 차단 해제되었을 수 있습니다.',
'ipb_blocked_as_range' => '오류: IP 주소 $1은 직접 차단되지 않았기 때문에 차단 해제할 수 없습니다.
하지만 $2로 광역 차단되었기 때문에, 광역 차단 해제로 차단을 해제할 수 있습니다.',
'ip_range_invalid' => 'IP 범위가 잘못되었습니다.',
+'ip_range_toolarge' => '/$1보다 넓은 범위의 광역 차단을 할 수 없습니다.',
'blockme' => '자가 차단',
'proxyblocker' => '프록시 차단',
'proxyblocker-disabled' => '이 기능은 비활성되어 있습니다.',
@@ -2262,6 +2416,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'sorbsreason' => '당신의 IP 주소는 {{SITENAME}}에서 사용하는 DNSBL 공개 프록시 목록에 들어 있습니다.',
'sorbs_create_account_reason' => '당신의 IP 주소는 {{SITENAME}}에서 사용하는 DNSBL 공개 프록시 목록에 들어 있습니다. 계정을 만들 수 없습니다.',
'cant-block-while-blocked' => '당신이 차단되어 있는 동안에는 다른 사용자를 차단할 수 없습니다.',
+'cant-see-hidden-user' => '당신이 차단하려 하는 사용자는 이미 차단되었고 계정 숨김 처리되었습니다. 당신이 계정 숨기기 권한을 갖고 있지 않기 때문에, 이 사용자의 차단 기록을 보거나 차단 설정을 변경할 수 없습니다.',
# Developer tools
'lockdb' => '데이터베이스 잠그기',
@@ -2304,6 +2459,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
이 경우에는 문서를 직접 이동하거나 두 문서를 합쳐야 합니다.",
'movearticle' => '문서 이동하기',
+'moveuserpage-warning' => "'''경고:''' 당신은 사용자 문서를 옮기려 하고 있습니다. 사용자 문서만 이동되며 계정 이름이 바뀌지 않는다는 점을 명심해주시기 바랍니다.",
'movenologin' => '로그인하지 않음',
'movenologintext' => '[[Special:UserLogin|로그인]]해야만 문서를 이동할 수 있습니다.',
'movenotallowed' => '문서를 이동할 권한이 없습니다.',
@@ -2314,7 +2470,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'move-watch' => '이 문서 주시하기',
'movepagebtn' => '이동',
'pagemovedsub' => '문서 이동함',
-'movepage-moved' => '\'\'\'"$1" 문서를 "$2" 문서로 이동했습니다.\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" 문서를 "$2" 문서로 이동했습니다.\'\'\'',
'movepage-moved-redirect' => '넘겨주기 문서를 만들었습니다.',
'movepage-moved-noredirect' => '넘겨주기 문서를 남기지 않았습니다.',
'articleexists' => '문서가 이미 존재하거나 이름이 올바르지 않습니다.
@@ -2357,6 +2513,14 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'imageinvalidfilename' => '새 파일 이름이 잘못되었습니다.',
'fix-double-redirects' => '기존 이름을 가리키는 넘겨주기를 갱신',
'move-leave-redirect' => '이동 후 넘겨주기를 남기기',
+'protectedpagemovewarning' => "'''경고:''' 이 문서는 관리자만이 이동할 수 있도록 잠겨 있습니다.
+최근의 기록을 참조용으로 제공합니다:",
+'semiprotectedpagemovewarning' => "'''알림:''' 이 문서는 등록된 사용자만이 이동할 수 있도록 잠겨 있습니다.
+최근 기록 내용이 참조용으로 제공됩니다:",
+'move-over-sharedrepo' => '== 파일이 존재합니다 ==
+[[:$1]] 파일이 공용 저장소에 있습니다. 이 이름으로 파일을 옮기면 공용의 파일을 덮어쓰게 될 것입니다.',
+'file-exists-sharedrepo' => '당신이 선택한 파일 이름은 공용 저장소에서 사용 중입니다.
+다른 이름을 선택해주세요.',
# Export
'export' => '문서 내보내기',
@@ -2378,14 +2542,20 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'export-pagelinks' => '다음 단계로 링크된 문서를 포함:',
# Namespace 8 related
-'allmessages' => '시스템 메시지 목록',
-'allmessagesname' => '이름',
-'allmessagesdefault' => '기본 내용',
-'allmessagescurrent' => '현재 내용',
-'allmessagestext' => '미디어위키 이름공간에 있는 모든 시스템 메시지의 목록입니다. 미디어위키의 번역 작업에 관심이 있으면 [http://www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [http://translatewiki.net translatewiki.net]에 참가해주세요.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''가 해제되어 있어서 이 문서는 쓸 수 없습니다.",
-'allmessagesfilter' => '다음 메시지만 보이기:',
-'allmessagesmodified' => '변경된 것만 보여주기',
+'allmessages' => '시스템 메시지 목록',
+'allmessagesname' => '이름',
+'allmessagesdefault' => '기본 내용',
+'allmessagescurrent' => '현재 내용',
+'allmessagestext' => '미디어위키 이름공간에 있는 모든 시스템 메시지의 목록입니다. 미디어위키의 번역 작업에 관심이 있으면 [http://www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [http://translatewiki.net translatewiki.net]에 참가해주세요.',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''가 해제되어 있어서 이 문서는 쓸 수 없습니다.",
+'allmessages-filter-legend' => '필터',
+'allmessages-filter' => '수정 상태로 거르기:',
+'allmessages-filter-unmodified' => '수정되지 않음',
+'allmessages-filter-all' => '모두',
+'allmessages-filter-modified' => '수정됨',
+'allmessages-prefix' => '접두어로 거르기:',
+'allmessages-language' => '언어:',
+'allmessages-filter-submit' => '실행',
# Thumbnails
'thumbnail-more' => '실제 크기로',
@@ -2395,6 +2565,9 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'djvu_no_xml' => 'DjVu 파일의 XML 정보를 읽을 수 없음',
'thumbnail_invalid_params' => '섬네일 매개변수가 잘못되었습니다.',
'thumbnail_dest_directory' => '새 목적 디렉토리를 생성할 수 없습니다.',
+'thumbnail_image-type' => '해당 파일 형식은 지원하지 않습니다',
+'thumbnail_gd-library' => 'GD 라이브러리 설정이 잘못되었습니다. $1 함수를 찾을 수 없습니다.',
+'thumbnail_image-missing' => '파일을 찾을 수 없습니다: $1',
# Special:Import
'import' => '문서 가져오기',
@@ -2461,6 +2634,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'tooltip-ca-viewsource' => '문서가 잠겨 있습니다. 문서의 소스만 볼 수 있습니다.',
'tooltip-ca-history' => '문서의 과거 버전들',
'tooltip-ca-protect' => '문서 보호하기',
+'tooltip-ca-unprotect' => '이 문서 보호 헤제하기',
'tooltip-ca-delete' => '문서 삭제하기',
'tooltip-ca-undelete' => '삭제된 문서 복구하기',
'tooltip-ca-move' => '문서 이동하기',
@@ -2471,6 +2645,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'tooltip-search-fulltext' => '이 문자열이 포함된 문서 찾기',
'tooltip-p-logo' => '대문',
'tooltip-n-mainpage' => '대문으로',
+'tooltip-n-mainpage-description' => '대문으로',
'tooltip-n-portal' => '이 프로젝트에 대해',
'tooltip-n-currentevents' => '최근의 소식을 봅니다.',
'tooltip-n-recentchanges' => '이 위키에서 최근 바뀐 점의 목록입니다.',
@@ -2512,6 +2687,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'common.css' => '/** 이 CSS 설정은 모든 스킨에 적용됩니다 */',
'monobook.css' => '/* 이 CSS 설정은 모든 모노북 스킨에 적용됩니다 */',
'modern.css' => '/* 이 CSS 설정은 모든 모던 스킨에 적용됩니다 */',
+'vector.css' => '/* 이 CSS 설정은 모든 벡터 스킨에 적용됩니다 */',
# Scripts
'common.js' => '/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */',
@@ -2525,10 +2701,12 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
# Attribution
'anonymous' => '{{PLURAL:$1}}{{SITENAME}} 익명 사용자',
'siteuser' => '{{SITENAME}} 사용자 $1',
-'lastmodifiedatby' => '이 문서는 $3 사용자가 $1 $2에 마지막으로 바꾸었습니다.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} 익명 사용자 $1',
+'lastmodifiedatby' => '이 문서는 $3 사용자가 $1 $2에 마지막으로 바꾸었습니다.',
'othercontribs' => '$1의 작업을 바탕으로 함.',
'others' => '기타',
'siteusers' => '{{PLURAL:$2}}{{SITENAME}} 사용자 $1',
+'anonusers' => '{{PLURAL:$2}}{{SITENAME}} 익명 사용자 $1',
'creditspage' => '문서 기여자들',
'nocredits' => '이 문서에서는 기여자 정보가 없습니다.',
@@ -2558,6 +2736,7 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'skinname-chick' => '치크',
'skinname-simple' => '심플',
'skinname-modern' => '모던',
+'skinname-vector' => '벡터',
# Math options
'mw_math_png' => '항상 PNG로 표시',
@@ -2567,11 +2746,22 @@ $1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습
'mw_math_modern' => '최신 브라우저 사용자에게 권장',
'mw_math_mathml' => '가능하면 MathML로 (실험적인 기능)',
+# Math errors
+'math_failure' => '해석 실패',
+'math_unknown_error' => '알 수 없는 오류',
+'math_unknown_function' => '알 수 없는 함수',
+'math_lexing_error' => '어휘 오류',
+'math_syntax_error' => '구문 오류',
+'math_image_error' => 'PNG 변환 실패 - latex, dvips, gs, convert가 올바르게 설치되어 있는지 확인해 주세요.',
+'math_bad_tmpdir' => '수식을 임시 폴더에 저장하거나 폴더를 만들 수 없습니다.',
+'math_bad_output' => '수식을 출력 폴더에 저장하거나 폴더를 만들 수 없습니다.',
+'math_notexvc' => '실행할 수 있는 texvc이 없습니다. 설정을 위해 math/README를 읽어 주세요.',
+
# Patrolling
'markaspatrolleddiff' => '검토한 문서로 표시',
'markaspatrolledtext' => '이 문서를 검토한 것으로 표시',
'markedaspatrolled' => '검토한 문서로 표시',
-'markedaspatrolledtext' => '선택한 판을 검토한 것으로 표시하였습니다.',
+'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 검토한 것으로 표시하였습니다.',
'rcpatroldisabled' => '최근 바뀜 검토 기능 비활성화됨',
'rcpatroldisabledtext' => '최근 바뀜 검토 기능은 현재 비활성화되어 있습니다.',
'markedaspatrollederror' => '검토한 것으로 표시할 수 없습니다.',
@@ -2601,12 +2791,9 @@ $1',
'previousdiff' => '← 이전 편집',
'nextdiff' => '다음 편집 →',
-# Visual comparison
-'visual-comparison' => '시각적 비교',
-
# Media information
'mediawarning' => "'''경고''': 이 파일에 악성 코드가 포함되어 있을 수 있습니다. 파일을 실행하면 컴퓨터에 문제가 생길 가능성이 있습니다.",
-'imagemaxsize' => '파일 설명 문서의 그림 크기를 제한하기:',
+'imagemaxsize' => "그림 최대 크기:<br />''(파일 문서에 적용되는 기능)''",
'thumbsize' => '섬네일 크기:',
'widthheightpage' => '$1×$2, $3페이지',
'file-info' => '(파일 크기: $1, MIME 종류: $2)',
@@ -2615,6 +2802,8 @@ $1',
'svg-long-desc' => '(SVG 파일, 실제 크기 $1 × $2 픽셀, 파일 크기 $3)',
'show-big-image' => '최대 해상도',
'show-big-image-thumb' => '<small>미리보기 크기: $1 × $2 픽셀</small>',
+'file-info-gif-looped' => '반복됨',
+'file-info-gif-frames' => '$1 프레임',
# Special:NewFiles
'newimages' => '새 파일 목록',
@@ -2656,7 +2845,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '너비',
@@ -2783,14 +2972,14 @@ Variants for Chinese language
'exif-unknowndate' => '날짜를 알 수 없음',
-'exif-orientation-1' => '일반', # 0th row: top; 0th column: left
-'exif-orientation-2' => '수평으로 뒤집음', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° 회전됨', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '수직으로 뒤집음', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '시계 반대 방향으로 90° 회전하고 수직으로 뒤집음', # 0th row: left; 0th column: top
-'exif-orientation-6' => '시계 방향으로 90° 회전함', # 0th row: right; 0th column: top
-'exif-orientation-7' => '시계 방향으로 90° 회전하고 수직으로 뒤집음', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '시계 반대 방향으로 90° 회전됨', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '일반',
+'exif-orientation-2' => '수평으로 뒤집음',
+'exif-orientation-3' => '180° 회전됨',
+'exif-orientation-4' => '수직으로 뒤집음',
+'exif-orientation-5' => '시계 반대 방향으로 90° 회전하고 수직으로 뒤집음',
+'exif-orientation-6' => '시계 방향으로 90° 회전함',
+'exif-orientation-7' => '시계 방향으로 90° 회전하고 수직으로 뒤집음',
+'exif-orientation-8' => '시계 반대 방향으로 90° 회전됨',
'exif-planarconfiguration-1' => '덩어리 형식',
'exif-planarconfiguration-2' => '평면형',
@@ -2912,7 +3101,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => '2차원 측정',
'exif-gpsmeasuremode-3' => '3차원 측정',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '킬로미터 매 시간',
'exif-gpsspeed-m' => '마일 매 시간',
'exif-gpsspeed-n' => '노트',
@@ -2931,6 +3120,7 @@ Variants for Chinese language
'watchlistall2' => '모든 기간',
'namespacesall' => '모두',
'monthsall' => '모든 달',
+'limitall' => '모두',
# E-mail address confirmation
'confirmemail' => '이메일 주소 확인',
@@ -3056,7 +3246,7 @@ $1',
'duplicate-defaultsort' => '\'\'\'경고:\'\'\' 기본 정렬 키 "$2"가 이전의 기본 정렬 키 "$1"를 덮어쓰고 있습니다.',
# Special:Version
-'version' => '버전', # Not used as normal message but as header for the special page itself
+'version' => '버전',
'version-extensions' => '설치된 확장 기능',
'version-specialpages' => '특수 문서',
'version-parserhooks' => '파서 훅',
@@ -3070,7 +3260,7 @@ $1',
'version-skin-extension-functions' => '스킨 확장 기능',
'version-hook-name' => '훅 이름',
'version-hook-subscribedby' => '훅이 사용된 위치',
-'version-version' => '버전',
+'version-version' => '(버전 $1)',
'version-license' => '라이센스',
'version-software' => '설치된 프로그램',
'version-software-product' => '제품',
@@ -3151,4 +3341,15 @@ $1',
'dberr-outofdate' => '참고로, 구글의 내용 개요는 오래된 것일 수도 있습니다.',
'dberr-cachederror' => '다음은 요청한 문서의 캐시된 복사본이며, 최신이 아닐 수도 있습니다.',
+# HTML forms
+'htmlform-invalid-input' => '당신이 입력한 값에 문제가 있습니다.',
+'htmlform-select-badoption' => '당신이 입력한 값은 올바른 설정이 아닙니다.',
+'htmlform-int-invalid' => '당신이 입력한 값은 정수가 아닙니다.',
+'htmlform-float-invalid' => '입력한 값이 수가 아닙니다.',
+'htmlform-int-toolow' => '당신이 입력한 값은 최소값 $1 미만입니다.',
+'htmlform-int-toohigh' => '당신이 입력한 값은 최대값 $1 이상입니다.',
+'htmlform-submit' => '저장',
+'htmlform-reset' => '변경한 것을 되돌리기',
+'htmlform-selectorother-other' => '기타',
+
);
diff --git a/languages/messages/MessagesKo_kp.php b/languages/messages/MessagesKo_kp.php
new file mode 100644
index 00000000..3ac6f086
--- /dev/null
+++ b/languages/messages/MessagesKo_kp.php
@@ -0,0 +1,33 @@
+<?php
+/** Korean (한국어(조선))
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'ko';
+
+$datePreferences = array(
+ 'default',
+ 'juche',
+ 'juche bracket',
+ 'ISO 8601',
+);
+$defaultDateFormat = 'ko';
+$dateFormats = array(
+ 'ko time' => 'H:i',
+ 'ko date' => 'Y년 M월 j일 (D)',
+ 'ko both' => 'Y년 M월 j일 (D) H:i',
+
+ 'juche time' => 'H:i',
+ 'juche date' => 'xoY년 M월 j일 (D)',
+ 'juche both' => 'xoY년 M월 j일 (D) H:i',
+
+ 'juche bracket time' => 'H:i',
+ 'juche bracket date' => '주체xoY년 (Y년) M월 j일 (D)',
+ 'juche bracket both' => '주체xoY년 (Y년) M월 j일 (D) H:i',
+);
diff --git a/languages/messages/MessagesKoi.php b/languages/messages/MessagesKoi.php
new file mode 100644
index 00000000..463c7a84
--- /dev/null
+++ b/languages/messages/MessagesKoi.php
@@ -0,0 +1,630 @@
+<?php
+/** Komi-Permyak (Перем Коми)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Enye Lav
+ * @author Yufereff
+ */
+
+$fallback = 'ru';
+
+$messages = array(
+# Dates
+'sunday' => 'Кресення',
+'monday' => 'Вильлун',
+'tuesday' => 'Торник',
+'wednesday' => 'Середа',
+'thursday' => 'Четверг',
+'friday' => 'Пекнича',
+'saturday' => 'Субöта',
+'sun' => 'Кс',
+'mon' => 'Вл',
+'tue' => 'Вт',
+'wed' => 'Ср',
+'thu' => 'Чт',
+'fri' => 'Пк',
+'sat' => 'Сб',
+'january' => 'Январ',
+'february' => 'Февраль',
+'march' => 'Март',
+'april' => 'Апрель',
+'may_long' => 'Май',
+'june' => 'Юнь',
+'july' => 'Юль',
+'august' => 'Август',
+'september' => 'Сентяб',
+'october' => 'Октяб',
+'november' => 'Нояб',
+'december' => 'Декаб',
+'january-gen' => 'январ',
+'february-gen' => 'февраль',
+'march-gen' => 'март',
+'april-gen' => 'апрель',
+'may-gen' => 'май',
+'june-gen' => 'юнь',
+'july-gen' => 'юль',
+'august-gen' => 'август',
+'september-gen' => 'сентяб',
+'october-gen' => 'октяб',
+'november-gen' => 'нояб',
+'december-gen' => 'декаб',
+'jan' => 'янв',
+'feb' => 'фев',
+'mar' => 'мар',
+'apr' => 'апр',
+'may' => 'май',
+'jun' => 'юнь',
+'jul' => 'юль',
+'aug' => 'авг',
+'sep' => 'сен',
+'oct' => 'окт',
+'nov' => 'ноя',
+'dec' => 'дек',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'category_header' => '"$1" категорияын листбоккез',
+'subcategories' => 'Поснитжык категорияэз',
+'hidden-categories' => '{{PLURAL:$1|Сайöвтöм категория|Сайöвтöм категорияэз}}',
+'category-subcat-count' => '{{PLURAL:$2|Этiя категорияын дзир öтiк субкатегория.|{{PLURAL:$1|Мыччалöма $1 субкатегория}} $2-ись.}}',
+'category-article-count' => '{{PLURAL:$2|Этiя категорияын дзир öтiк листбок.|{{PLURAL:$1|Мыччалöма этiя категорияись $1 листбок}} $2-сис.}}',
+'listingcontinuesabbrev' => '(одзлань)',
+
+'newwindow' => '(виль öшынокын)',
+'cancel' => 'Керсьыны бöр',
+'mytalk' => 'Менам сёрнитан листбок',
+'navigation' => 'Уялöм',
+
+# Cologne Blue skin
+'qbfind' => 'Кошшан',
+
+'errorpagetitle' => 'Сорасьöм',
+'returnto' => 'Бертны $1-öдз.',
+'tagline' => 'Босьтöм {{SITENAME}} вылiсь',
+'help' => 'Отсöт',
+'search' => 'Кошшан',
+'searchbutton' => 'Адззыны',
+'searcharticle' => 'Вешшы сы сьöртi',
+'history' => 'Чулалöм',
+'history_short' => 'Чулалöм',
+'printableversion' => 'Печатайтан версия',
+'permalink' => 'Пырся ыстöт',
+'edit' => 'Веськöтны',
+'create' => 'Лöсьöтны',
+'editthispage' => 'Мöдкодьсьöтны этiйö листбоксö',
+'delete' => 'Чышкыны',
+'protect' => 'Дорйыны',
+'protect_change' => 'мöдкодьсьöтны',
+'newpage' => 'Виль листбок',
+'talkpage' => 'Сёрнитны этiя листбок йылiсь',
+'talkpagelinktext' => 'Сёрнитан',
+'personaltools' => 'Аслат керöтаннэз',
+'talk' => 'Сёрнитан',
+'views' => 'Видзöтöммез',
+'toolbox' => 'Керöтаннэз',
+'otherlanguages' => 'Мöдiк кыввез вылын',
+'redirectedfrom' => '(Вештöм татчö $1 вылiсь)',
+'redirectpagesub' => 'Мöдлаö иньдöтан листбок',
+'lastmodifiedat' => 'Листбокыс медбöрьяись мöдкодьсьöтöм $1, $2.',
+'jumpto' => 'Вешшыны татчö:',
+'jumptonavigation' => 'уялöм',
+'jumptosearch' => 'кошшан',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '{{SITENAME}} йылiсь',
+'aboutpage' => 'Project:сы йылiсь',
+'copyright' => 'Быдöс этiйö позьö копируйттны $1 сьöртi.',
+'copyrightpage' => '{{ns:project}}:Копирайт',
+'disclaimers' => 'Мийö сöстöмöсь йöз одзын',
+'edithelp' => 'Мöдкодьсьöтiсь понда отсöт',
+'edithelppage' => 'Help:Уджкерись понда отсöт',
+'helppage' => 'Help:Отсöт',
+'mainpage' => 'Юр листбок',
+'privacy' => 'Астор дорьян политика',
+'privacypage' => 'Project:Астор дорьян политика',
+
+'badaccess' => 'Пырикö сорасьöм',
+
+'retrievedfrom' => 'Öшмöс "$1"',
+'youhavenewmessages' => 'Тэ босьтiн $1 ($2).',
+'newmessageslink' => 'виль юöррез',
+'newmessagesdifflink' => 'медбöрьяись мöдкодьсьöтöм',
+'editsection' => 'мöдкодьсьöтны',
+'editold' => 'мöдкодьсьöтны',
+'editlink' => 'мöдкодьсьöтны',
+'viewsourcelink' => 'видзöтны под текст',
+'editsectionhint' => 'Веськöтны юкöт: $1',
+'toc' => 'Пышкöс',
+'showtoc' => 'мыччавны',
+'hidetoc' => 'сайöвтны',
+'site-rss-feed' => '$1 RSS-визыв',
+'site-atom-feed' => '$1 Atom-визыв',
+'page-rss-feed' => '«$1» — RSS-визыв',
+'page-atom-feed' => '«$1» — Atom-визыв',
+'red-link-title' => '$1 (листбокыс абу на)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Листбок',
+'nstab-user' => 'Уджкерисьлöн листбок',
+'nstab-special' => 'Тодильнöй листбок',
+'nstab-project' => 'Проект йылiсь',
+'nstab-image' => 'Серпас',
+'nstab-template' => 'Шаблон',
+'nstab-category' => 'Категория',
+
+# General errors
+'missing-article' => 'Мыччöт чукöрись эз шед сiя листбок, кöда сэтчин вöлi "$1" $2 ним увтын. Этадз аркмывлö унажыксö сэк, кöр вешшан бы важмöм ыстöт пыр сэтшöм листбок вылö, кöда вöлi вештöм. Абу кö сiдз, наттьö программаын мыйкö нетырви керöм. Юöрт жö сы йылiсь миянлö татчö: [[Special:ListUsers/sysop|administrator]], сы дырни эн вунöт пасйыны URL.',
+'missingarticle-rev' => '(версия#: $1)',
+'badtitletext' => 'Кошшана листбок нимыс абу веськыт, тыртöм, либо соралiн кыввезколасся нето интервики ним. А натьтö нимын эмöсь нелэдзан пассэз.',
+'viewsource' => 'Нёджалöм',
+
+# Login and logout pages
+'yourname' => 'Уджкерисьлöн пыран ним:',
+'yourpassword' => 'Пароль:',
+'remembermypassword' => 'Видзны менчим пыран ним этiя компьютер тöдвылын',
+'login' => 'Пырны ним увтын',
+'nav-login-createaccount' => 'Ас нимöн пырны / гижöтчыны',
+'userlogin' => 'Висьтасьны нето гижöтчыны',
+'logout' => 'Сайласьны',
+'userlogout' => 'Петан',
+'nologinlink' => 'Кер аслыт уджкерисьлiсь ним',
+'mailmypassword' => 'Ыстыны виль пароль',
+
+# Edit page toolbar
+'bold_sample' => 'Кызкодь текст',
+'bold_tip' => 'Кызкодь текст',
+'italic_sample' => 'Курсивöн гижан',
+'italic_tip' => 'Курсивöн гижан',
+'link_sample' => 'Ыстöтлöн юрним',
+'link_tip' => 'Пытшкас ыстöт',
+'extlink_sample' => 'http://www.example.com ыстöтлöн ним',
+'extlink_tip' => 'Вики сайö ыстöт (эн вунöт содтыны http:// )',
+'headline_sample' => 'Юрнимлöн текст',
+'headline_tip' => 'Мöд тшупöта юрним',
+'math_sample' => 'Пырт татчö формула',
+'math_tip' => 'Математикаись формула',
+'nowiki_sample' => 'Пырт татчö форматируйттöм текст',
+'nowiki_tip' => 'Игнорируйтны вики-форматируйтöм',
+'image_tip' => 'Пыртöм файл',
+'media_tip' => 'Медиа-файл дынö ыстöт',
+'sig_tip' => 'Тэнат кырымпас да кад пас',
+'hr_tip' => 'Водса визь (пыртö шочыника)',
+
+# Edit pages
+'summary' => 'Мый вежöм:',
+'subject' => 'Тема/юрним:',
+'minoredit' => 'Татöн небура вежыштöм',
+'watchthis' => 'Синмавны этiйö листбок',
+'savearticle' => 'Тöбавны листбок',
+'preview' => 'Одзвыв нёджалом',
+'showpreview' => 'Мыччавны мый аркмö',
+'showdiff' => 'Мыччавны мый неöткодь',
+'anoneditwarning' => "''Видз тöдвылат''': Тэ эн пыр системаö уджкерись нимöн. IP-адресыт гижасö этiя листбоксö мöдкодьсьöтöм сьöртi историяö",
+'summary-preview' => 'Дженыта сы йылiсь, мый лоас:',
+'newarticle' => '(Виль)',
+'newarticletext' => "Ыстöт кузя тэ шедiн листбок вылö, кöдa абу на аркмöтöм. Мед лосьöтны сiйö, гиж тексттö улiсь öшынöко (унажык видзöт: [[{{MediaWiki:Helppage}}|отсасян листбок]]). Шедiн кö татчö сорасьöмöн, нырышт браузерсит '''бöрлань''' личкöт.",
+'noarticletext' => 'Öнi этiя листбок вылын текстыс абу.
+Но сы нимкöт [[Special:Search/{{PAGENAME}}|öтмоза гижсян кыввез]] эмöсь мöдiк листбоккез вылын, class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{urlencode:{{FULLPAGENAME}}}}}} <span кошшыны лöсялана гижöттэз], or [{{fullurl:{{FULLPAGENAME}}|action=edit}} кутчыны этiя листбок бердö]</span>.',
+'previewnote' => 'Эта дзир одзвыв нёджалöм, текстыс абу на лэдзöм!',
+'editing' => 'Редактируйтöм $1',
+'editingsection' => '$1 (юкöт) редактируйтöм',
+'copyrightwarning' => "Видз тöдвылат, текстас быдöс содтöттэз нето мöдкодьсьöтоммез йöзöтсьöны лэдзог $2 под вылын (видзот $1).
+Он ко мöд, медбы тексттэтö унаöтлiсö нето мöдкодсьöтлiсö йöзыс, эн и пукты нiйö татчö.<br /> Этася тэ кыв сетан миянлö, ачым пö лоа авторöн пыртан содтöттэзлiсь, нето босьта пö нiйö öшмöсiсь, кöда оз öв пытшкöссö одзлань йöзöтöмсö да мöдкодьсьöтöмсö.<br />
+'''Эн пукты юасьтöг татчö авторлö позьöм сьöртi дорйöм материаллэз!'''",
+'templatesused' => 'Этiя листбок вылiсь {{PLURAL:$1|шаблон|шаблоннэз}}:',
+'templatesusedpreview' => 'Одзвыв нёджалан листбок вылiсь {{PLURAL:$1|шаблон|шаблоннэз}}:',
+'template-protected' => '(дорйöм)',
+'template-semiprotected' => '(мымдакö дорйöм)',
+'hiddencategories' => 'Этiя листбок пырö $1 {{PLURAL:$1|сайöвтöм категория|сайöвтöм категория|сайöвтöм категорияэз}} коласö:',
+'permissionserrorstext-withaction' => 'Тэныт оз позь керны $2 то {{PLURAL:$1|мыля|мыля}}:',
+
+# History pages
+'viewpagelogs' => 'Мыччавны журналлэз этiя листбок понда',
+'currentrev-asof' => 'Öння версия $1-ись кодь',
+'revisionasof' => 'Версия № $1',
+'previousrevision' => '← Важжык',
+'nextrevision' => 'Одзланься версия',
+'currentrevisionlink' => 'Öння версия',
+'cur' => 'öння',
+'last' => 'одзза',
+'histlegend' => "Вежöртöтаннэз: '''({{int:cur}})''' – мый неöткодьыс öння версиякöт; '''({{int:last}})''' – мый неöткодьыс одзжыкся версиякöт, '''({{int:minoreditletter}})''' – невна мöдкодьсьöтöм.",
+'history-fieldset-title' => 'Видзöтны история',
+'histfirst' => 'Медважся',
+'histlast' => 'Неважся',
+
+# Revision deletion
+'rev-delundel' => 'мыччавны/сайöвтны',
+'revdel-restore' => 'вежны тыдалöм',
+
+# Merge log
+'revertmerge' => 'Торйöтны',
+
+# Diffs
+'history-title' => '$1 мöдкодьсьöтан история',
+'difference' => '(Неöткоддез версияэз коласын)',
+'lineno' => 'Визёк $1:',
+'compareselectedversions' => 'Ордчаöтны бöрйöм версияэз',
+'editundo' => 'керны важмоз',
+
+# Search results
+'searchresults' => 'Адззöм то мый:',
+'searchresults-title' => '"$1" сьöртi адззöм то мый:',
+'searchresulttext' => 'Унажык информация {{SITENAME}} кошшикö, видзöт [[{{MediaWiki:Helppage}}|{{int:help}}]] вылö.',
+'searchsubtitle' => 'Тэ кошшан \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|быдöс листбоккез, кöдна пондöтчöны "$1"-öн]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|быдöс листбоккез, кöдна ыстiсьöны "$1" вылö]])',
+'searchsubtitleinvalid' => '«$1» кошшикö',
+'notitlematches' => 'Листбоккез ниммезын абу öткодь торрез',
+'notextmatches' => 'Листбоккез тексттэзын абу öткодь торрез',
+'prevn' => '{{PLURAL:$1|одзжыкся $1}}',
+'nextn' => '{{PLURAL:$1|одзланься $1}}',
+'viewprevnext' => 'Видзöтны ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 кыв|$2 кыв}})',
+'search-redirect' => '(вештöм $1 вылiсь)',
+'search-section' => '(юкöт № $1)',
+'search-suggest' => 'Поди колö $1',
+'search-interwiki-caption' => 'Вачкисян проекттэз',
+'search-interwiki-default' => '$1 результат:',
+'search-interwiki-more' => '(унажык)',
+'search-mwsuggest-enabled' => 'öтсöттэзöн',
+'search-mwsuggest-disabled' => 'öтсöттэзтöг',
+'nonefound' => "'''Пасйöт.''' Он кö нагладь шуан, кытiсь кошшыны, шедасö не быдöс тексттэз, кытöн пантасьö колан кылыс. Мед кошшыны быдöс тексттэзiсь (уджкериссез листбоккезiсь, шаболоннэзiсь дмд.), гиж ''all:'', нето утлянно мыччав, кытiсь кошшыны.",
+'powersearch' => 'Паськытжыка кошшан',
+'powersearch-legend' => 'Паськытжыка кошшан',
+'powersearch-ns' => 'Ниммез коласiсь кошшан:',
+'powersearch-redir' => 'Мöдлаö иньдöтöммез ним сьöртi',
+'powersearch-field' => 'Кошшан',
+
+# Preferences page
+'preferences' => 'Лöсьöтаннэз',
+'mypreferences' => 'Менам лöсьöтöм',
+
+# Groups
+'group-sysop' => 'Веськöтлiссез',
+
+'grouppage-sysop' => '{{ns:project}}:Веськöтлiссез',
+
+# User rights log
+'rightslog' => 'Уджкерисьлö позяннэз сьöртi журнал',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'мöдкодьсьöтны этiйö листбоксö',
+
+# Recent changes
+'nchanges' => '{{PLURAL:$1|мöдкодьсьöтöм|мöдкодьсьöтöм|мöдкодьсьöтöммез}}',
+'recentchanges' => 'Медбöрья мöдкодьсьöтöммез',
+'recentchanges-legend' => 'Виль мöдкодьсьöтöммез понда лöсьöтаннэз',
+'recentchanges-feed-description' => 'Синмавны медбöрья мöдкодьсьöтöммез этiя вики визылын.',
+'rcnote' => "{{PLURAL:$1|Медбöрья '''$1''' мöдкодьсьöтöм|Медбöрья '''$1''' мöдкодьсьöтöм|Медбöрья'''$1''' мöдкодьсьöтöм}} '''$2''' лун сьöрна, $4 $5-öдз.",
+'rclistfrom' => 'Мыччавны мöдкодьсьöтöмсö $1-сянь',
+'rcshowhideminor' => '$1 невнаöн мöдкöдьсьöтöм',
+'rcshowhidebots' => '$1 бот',
+'rcshowhideliu' => 'Ас нимöн $1 уджкерись',
+'rcshowhideanons' => '$1 нимтöг уджкерись',
+'rcshowhidemine' => 'аслам $1 мöдкодьсьöтöм',
+'rclinks' => 'Мыччавны медбöрья $1 мöдкодьсьöтöмсö $2 лун дырнаись<br />$3',
+'diff' => 'неöткодьыс',
+'hist' => 'чулалöм',
+'hide' => 'Сайöвтны',
+'show' => 'Мыччавны',
+'minoreditletter' => 'у',
+'newpageletter' => 'В',
+'boteditletter' => 'б',
+'rc-enhanced-expand' => 'Мыччавны деталлез (колö JavaScript)',
+'rc-enhanced-hide' => 'Сайöвтны деталлез',
+
+# Recent changes linked
+'recentchangeslinked' => 'Йитчöм мöдкодьсьöтöммез',
+'recentchangeslinked-title' => '$1-кöт йитчан мöдкодьсьöтöммез',
+'recentchangeslinked-summary' => "Этiя нимлёдз мыччалö неважся вежöммез листбоккезын, кöдна вылö ыстiсьöны висьталöм листбок (нето висьталöм категорияö пыран листбок) вылiсь. Листбоккез, кöдна [[Special:Watchlist|синмалан нимлёдзат]] '''кызöтöмöсь'''.",
+'recentchangeslinked-page' => 'Листбоклöн ним:',
+'recentchangeslinked-to' => 'Мыччавны мöдкодьсьöтöммез листбоккез вылын, кöдна асьныс ыстiсьöны этiя листбок вылö',
+
+# Upload
+'upload' => 'Тöбавны файл',
+'uploadlogpage' => 'Тöбалöм сьöртi журнал',
+'uploadedimage' => "тöбалiс ''[[$1]]''",
+
+# File description page
+'filehist' => 'Файллöн история',
+'filehist-help' => 'Нырышт дата/кад, мед адззыны, кытшöмöн сэк вöлi файлыс.',
+'filehist-current' => 'öння',
+'filehist-datetime' => 'Дата/Кад',
+'filehist-thumb' => 'Серпас',
+'filehist-thumbtext' => 'Thumbnail $1’ версия понда',
+'filehist-user' => 'Ас нимöн уджкерись',
+'filehist-dimensions' => 'Ыжда',
+'filehist-comment' => 'Пасйöт',
+'imagelinks' => 'Файл вылö ыстiсяннэз',
+'linkstoimage' => '{{PLURAL:$1|Сэтшöм листбок|$1 Сэтшöм листбоккез}} ыстiсьö(ны) этiя файл вылö:',
+'sharedupload' => 'Этiя файл $1-ись да вермас овны и модiк проекттэзын.',
+'uploadnewversion-linktext' => 'Тöбавны этiя файллiсь виль версия',
+
+# Statistics
+'statistics' => 'Статистика',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объект|объект}}',
+'prefixindex' => 'Листбок ниммезлiсь пондöтчаннэз мыччалан',
+'newpages' => 'Виль листбоккез',
+'move' => 'Вежны ним',
+'movethispage' => 'Вежны листбокыслiсь ним',
+'pager-newer-n' => '{{PLURAL:$1|вильжык 1|вильжык $1}}',
+'pager-older-n' => '{{PLURAL:$1|важжык 1|важжык $1}}',
+
+# Book sources
+'booksources' => 'Небöг öшмöссэз',
+'booksources-search-legend' => 'Небöг йылiсь юöррез кошшан',
+'booksources-go' => 'Кошшыны',
+
+# Special:Log
+'log' => 'Журналлэз',
+
+# Special:AllPages
+'allpages' => 'Быдöс листбоккез',
+'alphaindexline' => '$1-сянь $2-дынö',
+'prevpage' => 'Одзжыкся листбок ($1)',
+'allpagesfrom' => 'Мыччавны листбоккез, кöдна пондöтчöны сiдз:',
+'allpagesto' => 'Мыччавны листбоккез татшöмöдз:',
+'allarticles' => 'Быдöс листбоккез',
+'allpagessubmit' => 'Керны',
+
+# Special:LinkSearch
+'linksearch' => 'Вики сайöдз ыстöттэз',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Уджкерисьö гижöтчан журнал',
+'newuserlog-create-entry' => 'Виль уджкерись',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(уджкериссезлöн нимлёдз)',
+
+# E-mail user
+'emailuser' => 'Этiя ужкерисьлö гижöт',
+
+# Watchlist
+'watchlist' => 'Синмаланнэз',
+'mywatchlist' => 'Менам синмаланнэз',
+'watchlistfor' => "('''$1''' понда)",
+'addedwatch' => 'Синмалан нимлёдзö содтöм',
+'addedwatchtext' => '«[[:$1]]» листбок вöлi содтöм [[Special:Watchlist|синмалан нимлёдзат]].
+Быдöс, мый пондас вежсьыны листбок вылас да сыкöт йитчöм сёрнитанын, позяс адзыны этiя нимлёдзись; сiя лоас сiдзжо кызжыка тöдчöтöм [[Special:RecentChanges|виль вежсьöммез сьöртi нимлёдзын]], медбы позис кокнитжыка казявны.',
+'removedwatch' => 'Синмалан нимлёдзись вештöм',
+'removedwatchtext' => 'Листбок «[[:$1]]» вöлi вештöм [[Special:Watchlist|синмалан нимлёдзсит]].',
+'watch' => 'Синмав',
+'watchthispage' => 'Синмавны этiйö листбок',
+'unwatch' => 'Оз ков синмавны',
+'watchlist-details' => 'Синмалан нимлёдзат $1 {{PLURAL:$1|листбок|листбок|листбок}}, сёрнитан листбоккесö лыдö босьттöг.',
+'wlshowlast' => 'Мыччавны медбöрья $1 час $2 лун $3',
+'watchlist-options' => 'Синмалан нимлёз понда лöсьöтаннэз',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Синмавны …',
+'unwatching' => 'Дугдыны синмавны …',
+
+# Delete
+'deletepage' => 'Чышкыны листбок',
+'confirmdeletetext' => 'Тэ мöдан быдсöн чышкыны листбок (нето серпас) да сылiсь мöдкодьсьöтан история. Тэ былись мöдан сiйö керны, вежöртан я бура мыйö этö вермас вайöтны, и керан я этiйö [[{{MediaWiki:Policy-url}}]] туйдöттэз сьöртi.',
+'actioncomplete' => 'Керсьöм',
+'deletedtext' => '«<nowiki>$1</nowiki>» чышкöм. Видзöт $2-ись медбöрья чышкöммесö.',
+'deletedarticle' => 'чышкис "[[$1]]"',
+'dellogpage' => 'Шупкан чукöр',
+'deletecomment' => 'Мыля:',
+'deleteotherreason' => 'Эшö мыля чышкöм:',
+'deletereasonotherlist' => 'Эшö мыля',
+
+# Rollback
+'rollbacklink' => 'вежны бöр',
+
+# Protect
+'protectlogpage' => 'Дорьян журнал',
+'protectedarticle' => 'дорйöм "[[$1]]"',
+'modifiedarticleprotection' => "''[[$1]]'' листбоксö дорьян выныс мöдкодьсьöтöм",
+'protectcomment' => 'Мыля:',
+'protectexpiry' => 'Помасьö:',
+'protect_expiry_invalid' => 'Памасян кад соралöм.',
+'protect_expiry_old' => 'Помасян кад — чулалöмын.',
+'protect-text' => "Татöн тэ верман видзöтны да вежны '''<nowiki>$1</nowiki>''' листбок понда дорьян тшупöт.",
+'protect-locked-access' => "Уджкерисьлöн нимыт оз тырмы, мед вежны листбокыслiсь дорьян тшупöт.
+Öння лöсьöтöммез '''$1''' листбок понда:",
+'protect-cascadeon' => 'Этiя листбокыс дорйöм, мыля сiя пыртöм улынжык висьталöм {{PLURAL:$1|листбокö|листбокö}}, кытчö лöсьöтöм каскад нёж дорьян.
+Тэ верман вежны этiя листбоклiсь дорьян тшупöт, но каскад нёж дорьян сысянь оз вежсьы.',
+'protect-default' => 'Дорйытöм',
+'protect-fallback' => 'Колö мед лэдзис «$1»',
+'protect-level-autoconfirmed' => 'Дорйыны виль да гижöтчытöм уджкериссез шогья',
+'protect-level-sysop' => 'Дзир веськöтлiссез',
+'protect-summary-cascade' => 'каскад нёж',
+'protect-expiring' => 'чулалас $1 (UTC) кежö',
+'protect-cascade' => 'Дорйыны листбоккез, кöдна пыртöмöсь этiя листбокö (каскад нёж дорьян)',
+'protect-cantedit' => 'Тэ он вермы вежны этiя листбоклiсь дорьян тшупöт, мыля тэныт оз позь сiйö мöдкодьсьöтны.',
+'restriction-type' => 'Позяннэз:',
+'restriction-level' => 'Падмöтан тшупöт:',
+
+# Undelete
+'undeletelink' => 'видзöтны/керны важмоз',
+'undeletedarticle' => "бöр керис ''[[$1]]''",
+
+# Namespace form on various pages
+'namespace' => 'Ниммезаин:',
+'invert' => 'Мöдöртны бöрйöмсö',
+'blanknamespace' => '(Медколана)',
+
+# Contributions
+'contributions' => 'Уджкерисьлöн пыртöм пай',
+'contributions-title' => 'Уджкерись $1-лöн пыртöм пай',
+'mycontris' => 'Мый ме пыртi',
+'contribsub2' => '$1 ($2) пыртöм пай',
+'uctop' => '(медбöрья)',
+'month' => 'Тöлiсь сьöрна (и одзжык):',
+'year' => 'Во сьöрна (и одзжык):',
+
+'sp-contributions-newbies' => 'Мыччавны виль уджкериссезлiсь пыртан пайесö',
+'sp-contributions-blocklog' => 'падмöтаннэз',
+'sp-contributions-search' => 'Пыртöм пай кошшан',
+'sp-contributions-username' => 'IP-адрес нето уджкерисьлöн ним:',
+'sp-contributions-submit' => 'Кошшыны',
+
+# What links here
+'whatlinkshere' => 'Ыстöттэз татчö',
+'whatlinkshere-title' => '"$1" вылö ыстiсян листбоккез',
+'whatlinkshere-page' => 'Листбок:',
+'linkshere' => "''[[:$1]]''' вылö ыстiсьöны эттшöм листбоккез:",
+'isredirect' => 'мöдлаö иньдöтан листбок',
+'istemplate' => 'пыртöм',
+'isimage' => 'серпас вылö ыстiсьöм',
+'whatlinkshere-prev' => '{{PLURAL:$1|одзжыкся|одзжыкся|одзжыкся}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|одзланься|одзланься|одзланься}} $1',
+'whatlinkshere-links' => '← ыстöттэз',
+'whatlinkshere-hideredirs' => '$1 мöдлаö иньдöтан',
+'whatlinkshere-hidetrans' => '"$1" пыртассэз',
+'whatlinkshere-hidelinks' => '$1 ыстöттэз',
+'whatlinkshere-filters' => 'Сысъяннэз',
+
+# Block/unblock
+'blockip' => 'Блокируйтны',
+'ipboptions' => '2 час:2 hours,1 лун:1 day,3 лун:3 days,1 недель:1 week,2 недель:2 weeks,1 тöлiсь:1 month,3 тöлiсь:3 months,6 тöлiсь:6 months,1 во:1 year, пыр:infinite',
+'ipblocklist' => 'Падмöтöм IP-адрессэз да уджкериссезлöн ниммез',
+'blocklink' => 'падмöтны',
+'unblocklink' => 'вештыны падмöт',
+'change-blocklink' => 'мöдкодьсьöтны падмöт',
+'contribslink' => 'пуктöм',
+'blocklogpage' => 'Падмöтаннэз сьöртi журнал',
+'blocklogentry' => 'подмöтiс [[$1]]-сö $3 $2 -öдз',
+'unblocklogentry' => 'осьтiс падмöтсö $1 вылiсь',
+'block-log-flags-nocreate' => 'виль уджкерисьöн лоны оз позь',
+
+# Move page
+'movepagetext' => "Кöр улiсь форма сьöртi вежан нимсö листбокыслiсь, öтдырйи вештан мöдлаö и мöдкодьсьöтöм сьöртi журналсö. Важ ним лоас иньдöтанöн виль ним дынö. Тэ верман автоматическöя вильмöтны нiйо иньдöтаннэсö, кöдна ыстiсö важ ним дынö. Он кö кер сiдз, видзöт жö [[Special:DoubleRedirects|кыкпöвса]] да [[Special:BrokenRedirects|орöтöм иньдöтöммесö]]. Тэ ачыт видзан кыв сы понда, медбы ыстöттэз и одзлань вайöтiсö, сэтчö, кытчö колö. Тöд, листбокыслöн нимыс оз вежсьы, кöр виль нима листбокыс эм ни, и сыкоста оз ло мöдлаö иньдöтанöн нето тыртöмöн, и сэтчин абу мöдкодьсьöтöммес . Сiдзкö тэ верман сетны листбокыслö ним, кöда сылöн öнтай вöлi, сорасин кö ним вежико, но тэ он вермы казявтöг чышкыны тыр листбок.
+'''Тöд!'''
+Ним вежöмыссянь вермасö лоны ыджыт и виччисьтöм мöдкодьсьöтöммез «йöзлы радейтана» листбоккез вылын.
+Бура жö думайт сы вотодз, кыдз пондан мыйко керны, мый вермас этасянь аркмыны.",
+'movepagetalktext' => 'Сы йылiсь сёрнитан сiдзжö керсяс виль нимаöн аспонадсис. Но кöр:
+* Сэтшöм жö нима пондöтöм листбокыс эм ни, нето
+* Абу сувтöтöмыт улiсьжык ыбкоддьöмо вожок, сэк ковсяс вештыны нето öтлаöтны листбоккесö кипонiсь.',
+'movearticle' => 'Вежны листбокыслiсь ним:',
+'newtitle' => 'Виль ним:',
+'move-watch' => 'Пыртны этiйö листбоксö синмалöм понда нимлёдзö',
+'movepagebtn' => 'Вежны листбоклiсь ним',
+'pagemovedsub' => 'Листбоклöн нимыс вежöм',
+'movepage-moved' => "'''Листбоклiсь «$1» ним вежöм «$2»''' вылö",
+'articleexists' => 'Сэтшöм нимыс эм ни мöдiк листбоклöн, нето гижан бы непозян ним.
+Борйы кытшöмкö мöд ним.',
+'talkexists' => "'''Листбоклiсь ним вежöм ни, а сы йылiсь сёрнитанлiсь абу, мыля сэтшöм жö нима листбок эм ни. Öтлаöт жö нiйö кипонiсь.'''",
+'movedto' => 'вешшыны … дынö',
+'movetalk' => 'Вежны сы йылiсь сёрнитан листбок',
+'1movedto2' => 'вежис «[[$1]]»-лiсь нимсö «[[$2]]» вылö',
+'1movedto2_redir' => '«[[$1]]»-лö сетiсö виль ним «[[$2]]» мöдлаö иньдöтöм весьтын',
+'movelogpage' => 'Ним вежöм сьöртi журнал',
+'movereason' => 'Мыля:',
+'revertmove' => 'керны важмоз',
+
+# Export
+'export' => 'Гижöттэсö петкöтöм',
+
+# Thumbnails
+'thumbnail-more' => 'Ыждöтны',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Аслат листбок',
+'tooltip-pt-mytalk' => 'Тэнат сёрнитан листбок',
+'tooltip-pt-preferences' => 'Тэнат лöсьöтöммез',
+'tooltip-pt-watchlist' => 'Менам синмалан листбоккез ним сьöртi',
+'tooltip-pt-mycontris' => 'Мый тэ мöдкодьсьöтiн, ним сьöртi',
+'tooltip-pt-login' => 'Татi верман ас нимöн пырны, но туйö и нимтöмöн пыравны',
+'tooltip-pt-logout' => 'Петны',
+'tooltip-ca-talk' => 'Этiя листбок йылiсь сёрнитан',
+'tooltip-ca-edit' => 'Этiйö листбок позьö мöдкодьсьöтны. Вежсьöммез пыртöм одзын нырышт «нёджöвт» личкöт вылö, мед видзöтны, мый тэнат аркмö.',
+'tooltip-ca-addsection' => 'Лöсьöтны виль юкöт',
+'tooltip-ca-viewsource' => 'Этiя листбок дорйöм мöдкодьсьöтöмись. Тэ токö верман видзöтны да копируйтны сылiсь под текст',
+'tooltip-ca-history' => 'Кыдз мöдкодьсьöтлiсö этiйö листбоксö',
+'tooltip-ca-protect' => 'Дорйыны этiйö листбоксö',
+'tooltip-ca-delete' => 'Чышкыны этiйö листбоксö',
+'tooltip-ca-move' => 'Вежны листбоклiсь ним',
+'tooltip-ca-watch' => 'Содтыны листбок синмаланнэз коласö',
+'tooltip-ca-unwatch' => 'Шупкыны этiйö листбок синмаланнэз коласiсь',
+'tooltip-search' => 'Кошшыны {{SITENAME}}',
+'tooltip-search-go' => 'Вужны листбок вылö, кöдалöн нимыс утлянно сэтшöм, эм кö сiя',
+'tooltip-search-fulltext' => 'Кошшыны тексттэз, кытöн этiя текстыс эм',
+'tooltip-n-mainpage' => 'Вуджны юр листбок вылö',
+'tooltip-n-mainpage-description' => 'Вешшыны юр листбок вылö',
+'tooltip-n-portal' => 'Проект йылiсь, мый тэ верман керны, кытiсь мый кошшыны',
+'tooltip-n-currentevents' => 'Адззыны содтöт информация чулалан лоöмторрез йылiсь',
+'tooltip-n-recentchanges' => 'Медбöрья вежсьöммез ним сьöртi',
+'tooltip-n-randompage' => 'Тöбавны виччисьтöг шедöм листбок',
+'tooltip-n-help' => 'Отсöт проект понда:',
+'tooltip-t-whatlinkshere' => 'Быдöс листбоккез, кöдна ыстiсьöны татчö',
+'tooltip-t-recentchangeslinked' => 'Медбöрья вежсьöммез листбоккез вылын, кöдна вылö этiя листокыс ыстiсьö',
+'tooltip-feed-rss' => 'Этiя листбок понда RSS',
+'tooltip-feed-atom' => 'Этiя листбок понда Atom-визыв',
+'tooltip-t-contributions' => 'Видзöтны листбоккез, кöднö мöдкодьсьöтлiс этiя уджкерись',
+'tooltip-t-emailuser' => 'Иьдöтны гижöт этiя уджкерисьлö',
+'tooltip-t-upload' => 'Кöртавны медиа-файллэз',
+'tooltip-t-specialpages' => 'Тодильнöй листбоккез ним сьöртi',
+'tooltip-t-print' => 'Этiя листбоклöн печатайтан версия',
+'tooltip-t-permalink' => 'Листбоклöн этiя версия дынö пырся ыстöт',
+'tooltip-ca-nstab-main' => 'Видзöт листбоклiсь пытшкöс',
+'tooltip-ca-nstab-user' => 'Видзöтны уджкерисьлiсь листбок',
+'tooltip-ca-nstab-special' => 'Этiя листбокыс тодильнöй, сiйö оз позь мöдкодьсьöтны',
+'tooltip-ca-nstab-project' => 'Проектлöн листбок',
+'tooltip-ca-nstab-image' => 'Файллöн листбок',
+'tooltip-ca-nstab-template' => 'Шаблон видзан листбок',
+'tooltip-ca-nstab-category' => 'Категория листбок',
+'tooltip-minoredit' => 'Пасйыны сiйö неыджыт мöдкодьсьöтöм туйö',
+'tooltip-save' => 'Пыртны мöдкодьсьöтöмöс',
+'tooltip-preview' => 'Дзар кер мöдкодьсьöтöм вылат, кер этö сы вотöдз, кыдз тöбалан листбоктö!',
+'tooltip-diff' => 'Мыччавны мый мöдкодьсьöтöма текстiсь.',
+'tooltip-compareselectedversions' => 'Видзöтны, мый неöткодьыс этiя листбоклöн кык версия коласын',
+'tooltip-watch' => 'Содтыны этiйö листбок синмаланнэз коласö',
+'tooltip-rollback' => 'Öтпыр нырыштöмöн чышкыны быдöс, мый керис медбöрья редактор',
+'tooltip-undo' => '"Бöр вежны" чышкö öннясö да пыртö бöр одзжыкся редакция. Позьö висьтавны, мыля сiйö вежин бöр.',
+
+# Browsing diffs
+'previousdiff' => '← Одзжыкся мöдкодьсьöтöм',
+'nextdiff' => 'Одзланься мöдкодьсьöтöм →',
+
+# Media information
+'file-info-size' => '($1 × $2 пиксел, файллöн ыжда: $3, MIME-тип: $4)',
+'file-nohires' => '<small>Буржыка тыдалан версия абу.</small>',
+'svg-long-desc' => '(SVG-файл, гижöм сьöртi $1 × $2 пиксел, файллöн ыжда: $3)',
+'show-big-image' => 'Буржыка тыдалан серпас',
+'show-big-image-thumb' => '<small>Одзвыв нёджалан ыжда: $1 × $2 пиксел</small>',
+
+# Bad image list
+'bad_image_list' => 'Формат лöсьöтiкö видз тöд вылын: Уджавны пондасö токö нимлёдзись визёккез (кöдналöн пондöтчанын эм *). Визёклöн медодзза ыстöт ась лоö йитöм неуджалан файлкöт. Мöдiк ыстöттэз сiя жö визёкын огö пыртö сы лыдö, м.ш. гижöттэз, кытчö медиа-файл позьö пыртны.',
+
+# Metadata
+'metadata' => 'Метадатаэз',
+'metadata-help' => 'Файлö кышасьöмöсь содтöт юöррез, кöдна аркмывлöны лыдпаса камераын нето сканерын. Редактируйтiсö кö файлсö аркмöтöм бöрын, мукöд параметрыс оз понды сё ни лöсявны öння серпаскöт.',
+'metadata-expand' => 'Мыччавны содтöт юöррез',
+'metadata-collapse' => 'Сайöвтны поснитжык деталлез',
+'metadata-fields' => 'EXIF метадатаэза ыббез, кöдна шуöмöсь нимлёдзын, лоасö сё ни мыччалöмöсь серпаса листбок вылын, мöдiккез лоасö, он кö шу мöднёж, сайöвтöмöсь:
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Редактируйтны этiйö файлсö мöд программа пыр',
+'edit-externally-help' => '(Унажык видзöт: [http://www.mediawiki.org/wiki/Manual:External_editors _editors exactly as it is.])',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'быдöс',
+'namespacesall' => 'быдöс',
+'monthsall' => 'быдöс',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Видзöт öткодьжык мöдкодьсьöтöммез',
+'watchlisttools-edit' => 'Видзöтны/мöдкодьсьöтны нимлёдз',
+'watchlisttools-raw' => 'Вежны кыдз текст',
+
+# Special:SpecialPages
+'specialpages' => 'Тодильнöй листбоккез',
+
+);
diff --git a/languages/messages/MessagesKrc.php b/languages/messages/MessagesKrc.php
new file mode 100644
index 00000000..a2a52920
--- /dev/null
+++ b/languages/messages/MessagesKrc.php
@@ -0,0 +1,3219 @@
+<?php
+/** Karachay-Balkar (Къарачай-Малкъар)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Don Alessandro
+ * @author GerardM
+ * @author Iltever
+ * @author Къарачайлы
+ */
+
+$fallback = 'ru';
+
+$namespaceNames = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Къуллукъ',
+ NS_TALK => 'Сюзюу',
+ NS_USER => 'Къошулуучу',
+ NS_USER_TALK => 'Къошулуучуну сюзюу',
+ NS_PROJECT_TALK => '$1 сюзюу',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файлны сюзюу',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki-ни сюзюу',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблонну сюзюу',
+ NS_HELP => 'Болушлукъ',
+ NS_HELP_TALK => 'Болушлукъну сюзюу',
+ NS_CATEGORY => 'Категория',
+ NS_CATEGORY_TALK => 'Категорияны сюзюу',
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Джибериулени тюблерин сызыу',
+'tog-highlightbroken' => 'Болмагъан джибериулени <a href="" class="new">былай</a> (альтернатив: <a href="" class="internal">?</a>) кёргюз.',
+'tog-justify' => 'Текстни бетни кенглигине кёре тиз',
+'tog-hideminor' => 'Джангы тюрлениулени списогунда гитче тюрлениулени кёргюзме',
+'tog-hidepatrolled' => 'Джангы тюрлениулени списогунда тинтилген тюрлениулени кёргюзме',
+'tog-newpageshidepatrolled' => 'Джангы бетлени списогунда тинтилген бетлени кёргюзме',
+'tog-extendwatchlist' => 'Сынчыкълау списокну, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
+'tog-usenewrc' => 'Джангы тюрлениулени игиленнген списогун хайырландыр (JavaScript керекди)',
+'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
+'tog-showtoolbar' => 'Тюрлендирген сагъатда, башындагъы инструмент панелни кёргюз (JavaScript)',
+'tog-editondblclick' => 'Эки басыу бла тюрлендириу бет ачылсын (JavaScript)',
+'tog-editsection' => 'Хар бёлюмге «тюрлендир» джибериуню кёргюз',
+'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендириу бетин ач',
+'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
+'tog-rememberpassword' => 'Паролюму унутма бу компьютерде',
+'tog-editwidth' => 'Тюрлендириу бетни экранны саулай кенглигине кёргюз',
+'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени сынчыкълау списогума къош',
+'tog-watchdefault' => 'Мен тюрлендирген бетлени сынчыкълау списогума къош',
+'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени сынчыкълау списогуму къош',
+'tog-watchdeletion' => 'Мен кетерген бетлени сынчыкълау списогума къош',
+'tog-minordefault' => 'Тынгылау бла бары тюрлениулени "аз магъаналы" белгиле',
+'tog-previewontop' => 'Ал къарауну тюрлендириу бетни башы бла кёргюз',
+'tog-previewonfirst' => 'Тюрледириу бетге кёчгенде ал къарауну кёргюз',
+'tog-nocache' => 'Бетлени кэш этерге къойма',
+'tog-enotifwatchlistpages' => 'E-mail бла билдир сынчыкълау списокдагъы бетлени тюрлениулерин',
+'tog-enotifusertalkpages' => 'E-mail бла билдир энчи бетими тюрлениулерин',
+'tog-enotifminoredits' => 'E-mail бла гитче тюрлениуле огъуна болсалада бирдир',
+'tog-enotifrevealaddr' => 'E-mail адресими билдириу письмолада кёргюз',
+'tog-shownumberswatching' => 'Бетни сынчыкълау списокларына къошханланы санын кёргюз',
+'tog-oldsig' => 'Болгъан къол салыугъа ал къарау:',
+'tog-fancysig' => 'Энчи вики-тексти къол салыуну (автомат джибериусюз)',
+'tog-externaleditor' => 'Тыш редакторну хайырландырыу',
+'tog-externaldiff' => 'Версияланы тенглешдириучу тыш программа хайырландыр',
+'tog-showjumplinks' => '«Бар» болушлукъ джибериуню джандыр',
+'tog-uselivepreview' => 'Терк ал къарауну хайырландыр (JavaScript, экспериментал халда)',
+'tog-forceeditsummary' => 'Тюрлендириуню ачыкълау тизгини бош къалса, билдир',
+'tog-watchlisthideown' => 'Сынчыкълау бетден мени тюрлендириулерими джашыр',
+'tog-watchlisthidebots' => 'Сынчыкълау бетден ботланы тюрлендириулерин джашыр',
+'tog-watchlisthideminor' => 'Гитче тюрлендириулени сынчыкълау бетден джашыр',
+'tog-watchlisthideliu' => 'Авторизация этген къошулуучуланы тюрлендириулерин сынчыкълау бетде джашыр',
+'tog-watchlisthideanons' => 'Аноним къошулуучуланы тюрлендириулерин сынчыкълау бетден джашыр',
+'tog-watchlisthidepatrolled' => 'Тинтилген тюрлендириулени сынчыкълау бетден джашыр',
+'tog-ccmeonemails' => 'Башха къошулуучулагъа джиберген письмоларымы копияларын меннге да джибер',
+'tog-diffonly' => 'Версия тенглешдириуню тюбю бла бетни ичиндегисин кёргюзме',
+'tog-showhiddencats' => 'Джашыртын категорияланы кёргюз',
+'tog-norollbackdiff' => 'Къайтарыудан сора версияланы башхалыкъларын кёргюзме',
+
+'underline-always' => 'Хаманда',
+'underline-never' => 'Бирзаманда да',
+'underline-default' => 'Браузерни джарашдырыуларын хайырландыр',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Тюрлендириу джерни шрифтини тиби:',
+'editfont-default' => 'Браузерни джарашдырыуларындан шрифт',
+'editfont-monospace' => 'Кенгленнген шрифт',
+'editfont-sansserif' => 'Sans-serif шрифт',
+'editfont-serif' => 'Сериф шрифт',
+
+# Dates
+'sunday' => 'Ыйых кюн',
+'monday' => 'Баш кюн',
+'tuesday' => 'Геурге кюн',
+'wednesday' => 'Барас кюн',
+'thursday' => 'Орта кюн',
+'friday' => 'Байрым кюн',
+'saturday' => 'Шабат кюн',
+'sun' => 'Ыйых кюн',
+'mon' => 'Баш кюн',
+'tue' => 'Геурге кюн',
+'wed' => 'Барас кюн',
+'thu' => 'Орта кюн',
+'fri' => 'Байрым кюн',
+'sat' => 'Шабат кюн',
+'january' => 'январь',
+'february' => 'февраль',
+'march' => 'март',
+'april' => 'апрель',
+'may_long' => 'май',
+'june' => 'июнь',
+'july' => 'июль',
+'august' => 'август',
+'september' => 'сентябрь',
+'october' => 'октябрь',
+'november' => 'ноябрь',
+'december' => 'декабрь',
+'january-gen' => 'январь',
+'february-gen' => 'февраль',
+'march-gen' => 'март',
+'april-gen' => 'апрель',
+'may-gen' => 'май',
+'june-gen' => 'июнь',
+'july-gen' => 'июль',
+'august-gen' => 'август',
+'september-gen' => 'сентябрь',
+'october-gen' => 'октябрь',
+'november-gen' => 'ноябрь',
+'december-gen' => 'декабрь',
+'jan' => 'янв',
+'feb' => 'фев',
+'mar' => 'мар',
+'apr' => 'апр',
+'may' => 'май',
+'jun' => 'июн',
+'jul' => 'июл',
+'aug' => 'авг',
+'sep' => 'сен',
+'oct' => 'окт',
+'nov' => 'ноя',
+'dec' => 'дек',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Категория|Категорияла}}',
+'category_header' => '«$1» категориядагъы бетле',
+'subcategories' => 'Тюбкатегорияла',
+'category-media-header' => '«$1» категориядагъы файлла',
+'category-empty' => "''Бу категория бусагъатда бошду.''",
+'hidden-categories' => '{{PLURAL:$1|Джашырылгъан категория|Джашырылгъан категорияла}}',
+'hidden-category-category' => 'Джашыртын категорияла',
+'category-subcat-count' => '{{PLURAL:$2|Бу категориягъа къуру баргъан тюбкатегория киреди.|$2 тюбкатегориядан $1 киреди бу категориягъа.}}',
+'category-subcat-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 тюбкатегория}} барды.',
+'category-article-count' => '{{PLURAL:$2|Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден $1 кёргюзюлюннгенди.}}',
+'category-article-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 бет}} барды.',
+'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|$1 файлы кёргюзюлгенди}}.}}',
+'category-file-count-limited' => 'Бу категория да {{PLURAL:$1|$1 файл}} барды.',
+'listingcontinuesabbrev' => '(баргъаны)',
+'index-category' => 'Индексленнген бетле',
+'noindex-category' => 'Индексленмеген бетле',
+
+'mainpagetext' => "'''«MediaWiki» тыйыншлы салынды.'''",
+'mainpagedocfooter' => "Бу вики бла къалай ишлерге ангылатхан информацияны [http://meta.wikimedia.org/wiki/Help:Contents_User's_Guide къошулуучугъа юретиуде] табаргъа боллукъду.
+
+== Файдалы ресурсла ==
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings тюрлендириулени списогу (ингил.)];
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-ни юсюнден кёб берилген соруула];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ни джангы версиясыны чыкъгъанын билдириу письмола].",
+
+'about' => 'Ачыкълау',
+'article' => 'Статья',
+'newwindow' => '(джангы терезеде ачылады)',
+'cancel' => 'Ызына алыу',
+'moredotdotdot' => 'Баргъаны…',
+'mypage' => 'Энчи бетим',
+'mytalk' => 'Мени сюзюу бетим',
+'anontalk' => 'Бу IP-адресге сюзюу бет',
+'navigation' => 'Навигация',
+'and' => '&#32;эм',
+
+# Cologne Blue skin
+'qbfind' => 'Излеу',
+'qbbrowse' => 'Къарау',
+'qbedit' => 'Тюрлендир',
+'qbpageoptions' => 'Бу бет',
+'qbpageinfo' => 'Бетни юсюнден',
+'qbmyoptions' => 'Бетлерим',
+'qbspecialpages' => 'Къуллукъчу бетле',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Джангы тема къош',
+'vector-action-delete' => 'Кетер',
+'vector-action-move' => 'Атын ауушдур',
+'vector-action-protect' => 'Джакъла',
+'vector-action-undelete' => 'Къайтар',
+'vector-action-unprotect' => 'Джакълауну кетер',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Болушлукъ бет',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Бет',
+'vector-namespace-media' => 'Медиа-бет',
+'vector-namespace-mediawiki' => 'Билдириу',
+'vector-namespace-project' => 'Проект бет',
+'vector-namespace-special' => 'Къуллукъ бет',
+'vector-namespace-talk' => 'Сюзюу',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Къошулуучуну бети',
+'vector-view-create' => 'Къура',
+'vector-view-edit' => 'Тюрлендир',
+'vector-view-history' => 'Тарихин кёргюз',
+'vector-view-view' => 'Окъу',
+'vector-view-viewsource' => 'Разметкагъа къара',
+'actions' => 'Этимле',
+'namespaces' => 'Атланы аламы',
+'variants' => 'Вариантла',
+
+'errorpagetitle' => 'Халат',
+'returnto' => '$1 бетге къайт',
+'tagline' => '{{SITENAME}} сайтдан',
+'help' => 'Ангылатыу',
+'search' => 'Излеу',
+'searchbutton' => 'Таб',
+'go' => 'Бар',
+'searcharticle' => 'Кёч',
+'history' => 'Бетни тарихи',
+'history_short' => 'Тарих',
+'updatedmarker' => 'Ахыр киргенимден сора джангыргъан',
+'info_short' => 'Информация',
+'printableversion' => 'Басмагъа версиясы',
+'permalink' => 'Дайым джибериу',
+'print' => 'Басмала',
+'edit' => 'Тюрлендир',
+'create' => 'Къура',
+'editthispage' => 'Бу бетни тюрлендир',
+'create-this-page' => 'Бу бетни къура',
+'delete' => 'Кетер',
+'deletethispage' => 'Бу бетни кетер',
+'undelete_short' => '$1 {{PLURAL:$1|тюрлендириуню}} къайтар',
+'protect' => 'Джакъла',
+'protect_change' => 'тюрлендир',
+'protectthispage' => 'Бу бетни джакъла',
+'unprotect' => 'Джакълауну кетер',
+'unprotectthispage' => 'Бу бетден джакълауну кетер',
+'newpage' => 'Джангы бет',
+'talkpage' => 'Бу бетни сюз',
+'talkpagelinktext' => 'сюзюу',
+'specialpage' => 'Къуллукъ бет',
+'personaltools' => 'Энчи инструментле',
+'postcomment' => 'Джангы бёлюм',
+'articlepage' => 'Статьягъа къарау',
+'talk' => 'Сюзюу',
+'views' => 'Къараула',
+'toolbox' => 'Инструментле',
+'userpage' => 'Къошулуучуну энчи бетине къарау',
+'projectpage' => 'Проектни бетине къара',
+'imagepage' => 'Файлны бетине къара',
+'mediawikipage' => 'Билдириуню бетине къара',
+'templatepage' => 'Шаблонну бетине къара',
+'viewhelppage' => 'Болушлукъну бетине къара',
+'categorypage' => 'Категорияны бетине къара',
+'viewtalkpage' => 'Сюзюуню бетине къара',
+'otherlanguages' => 'Башха тилледе',
+'redirectedfrom' => '(«$1» бетден джиберилгенди)',
+'redirectpagesub' => 'Башха бетге джибериучю бет',
+'lastmodifiedat' => 'Бу бетни ахыр тюрленнгени: $2, $1.',
+'viewcount' => 'Бу бетге {{PLURAL:$1|1|$1}} кере киргендиле.',
+'protectedpage' => 'Джакъланнган бет',
+'jumpto' => 'Бери кёчерге:',
+'jumptonavigation' => 'навигация',
+'jumptosearch' => 'излеу',
+'view-pool-error' => 'Кечгинлик, бусагъатда серверле бош тюйюлдюле.
+Бу бетге къараргъа излегенле асыры кёбдюле.
+Кечирек кириб кёрюгюз.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '{{SITENAME}} атлы сайтны юсюнден',
+'aboutpage' => 'Project:Ачыкълау',
+'copyright' => 'Информация мунга кёре хайырланады: $1',
+'copyrightpage' => '{{ns:project}}:Авторлукъ хакъла',
+'currentevents' => 'Бусагъатда бола тургъанла',
+'currentevents-url' => 'Project:Бусагъатда бола тургъанла',
+'disclaimers' => 'Джууаблылыкъны унамау',
+'disclaimerpage' => 'Project:Джууаблылыкъны унамау',
+'edithelp' => 'Тюрлендириуню юсюнден болушлукъ',
+'edithelppage' => 'Help:Тюрлендириу',
+'helppage' => 'Help:Болушлукъ',
+'mainpage' => 'Баш бет',
+'mainpage-description' => 'Баш бет',
+'policy-url' => 'Project:Джорукъла',
+'portal' => 'Джамагъат портал',
+'portal-url' => 'Project:Джамагъат портал',
+'privacy' => 'Джашыргъанлыкъ политика',
+'privacypage' => 'Project:Джашыргъанлыкъ политика',
+
+'badaccess' => 'Кириуню халаты',
+'badaccess-group0' => 'Сизни соргъан амалны этерге эркинлигигиз джокъду.',
+'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
+
+'versionrequired' => 'MediaWiki-ни $1 версиясы керекди',
+'versionrequiredtext' => 'Бу бетде ишлер ючюн MediaWiki-ни $1 версиясы керекди. [[Special:Version|Хайырладырылгъан программаны версияларыны юсюнден информациягъа]] къара.',
+
+'ok' => 'ОК',
+'retrievedfrom' => 'Чыкъгъаны — «$1»',
+'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
+'newmessageslink' => 'джангы билдириуле',
+'newmessagesdifflink' => 'сюзюу бетигизни ахыр тюрлениую',
+'youhavenewmessagesmulti' => '$1 бетде джангы билдириуле бардыла.',
+'editsection' => 'тюрлендир',
+'editold' => 'тюрлендир',
+'viewsourceold' => 'Башланнган кодха къара',
+'editlink' => 'тюрлендир',
+'viewsourcelink' => 'башланнган кодха къара',
+'editsectionhint' => '$1 бёлюмню тюрлендир',
+'toc' => 'Башлары',
+'showtoc' => 'кёргюз',
+'hidetoc' => 'джашыр',
+'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
+'viewdeleted' => '$1къараймыса?',
+'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
+'feedlinks' => 'Бу кёрюмде:',
+'feed-invalid' => 'Джазылыу каналны типи терсди.',
+'feed-unavailable' => 'Синдикация лентала табылынмайла бусагъатда',
+'site-rss-feed' => '$1 — RSS-лента',
+'site-atom-feed' => '$1 — Atom лентасы',
+'page-rss-feed' => '«$1» — RSS-лентасы',
+'page-atom-feed' => '«$1» — Atom-лентасы',
+'red-link-title' => '$1 (быллай бет джокъду)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Статья',
+'nstab-user' => 'Къошулуучуну бети',
+'nstab-media' => 'Мультимедиа',
+'nstab-special' => 'Къуллукъчу бет',
+'nstab-project' => 'Проектни бети',
+'nstab-image' => 'Файл',
+'nstab-mediawiki' => 'Билдириу',
+'nstab-template' => 'Шаблон',
+'nstab-help' => 'Болушлукъ бет',
+'nstab-category' => 'Категория',
+
+# Main script and global functions
+'nosuchaction' => 'Быллай амал джокъду',
+'nosuchactiontext' => 'URL-да белгиленнген амал терсди.
+Сиз URL-ну терс джазгъан болурсуз, неда терс джибериу бла кёчгенсиз.
+Бу {{SITENAME}} проектде да хатаны кёргюзюрге боллукъду.',
+'nosuchspecialpage' => 'Быллай къуллукъ бет джокъду',
+'nospecialpagetext' => '<strong>Сиз излеген къуллукъ бет джокъду.</strong>
+
+Болгъан къуллукъ бетлени списогу: [[Special:SpecialPages|{{int:specialpages}}]].',
+
+# General errors
+'error' => 'Халат',
+'databaseerror' => 'Информация базада халат',
+'dberrortext' => 'Информация базагъа джиберилген сорууда синтаксис халат табылды.
+Программада халатны ачыкъларгъа да боллукъду ол.
+Информация базагъа ахыр соруу:
+<blockquote><tt>$1</tt></blockquote>
+<tt>«$2»</tt>функциясындан болгъанды.
+База <tt>«$3: $4»</tt> халатны къайтарды.',
+'dberrortextcl' => 'Информация базагъа джиберилген сорууда синтаксис халат табылды.
+Информация базагъа ахыр соруу:
+«$1»
+«$2» функциясындан болгъанды.
+База «$3: $4» халатны къайтарды.',
+'laggedslavemode' => 'Эс бёлюгюз! Бу бетге ахыр джангыртыула болмазгъа боллукъдула.',
+'readonly' => 'Информация база джабыкъды',
+'enterlockreason' => 'Блок этилиуню чурумун эм заманын белгилегиз.',
+'readonlytext' => 'Информация базаны тюрлендирген амал джабылыбды бусагъатда. Ол план ишлемле ючюн болгъан болур.
+Джабхан оператор быллай билдириу къойгъанды:
+$1',
+'missing-article' => 'Билгилени базасында табылыргъа керек болгъан, сорулгъан бетни тексти табылмагъанды, «$1» $2.
+
+Быллай турум, кетерилген бетни тюрлениулерини тарихине эски болгъан джибериу бла кирирге изленсе болады.
+
+Иш мында тюл эсе, сиз программа баджарыуда халат табхансыз. Халатны юсюнден URL-ну белгилеб [[Special:ListUsers/sysop|администраторгъа]] билдиригиз.',
+'missingarticle-rev' => '(версия № $1)',
+'missingarticle-diff' => '(башхалыкъ: $1, $2)',
+'readonly_lag' => 'Информация база, экинчи сервер биринчи сервер бла синхронизацияны тындыргъынчы, тюрлендириуледен автомат джабылыб турады.',
+'internalerror' => 'Ич халат',
+'internalerror_info' => 'Ич халат: $1',
+'fileappenderrorread' => '«$1» окъулуналмагъанды къошулгъан заманда',
+'fileappenderror' => '«$1» файл «$2» файлгъа къошулмайды.',
+'filecopyerror' => '«$2» файлны «$1» файлгъа копия этиб болмайды.',
+'filerenameerror' => '«$1» файлны атын «$2» атха алышдырыргъа болмайды.',
+'filedeleteerror' => '«$1» файлны кетерирге болмайды.',
+'directorycreateerror' => '«$1» директория къураргъа болмайды.',
+'filenotfound' => '«$1» файл табылынмайды.',
+'fileexistserror' => '«$1» файлгъа джазаргъа болмайды: ол энди барды',
+'unexpected' => 'Келишмеген магъана: «$1»=«$2».',
+'formerror' => 'Халат: форма ташылмайды',
+'badarticleerror' => 'Бу бетде этилирге болмайды быллай амал.',
+'cannotdelete' => '«$1» файлны неда бетни кетерирге болмайды.
+Башха къошулуучу кетерген болургъа боллукъду аны.',
+'badtitle' => 'Джарамагъан ат',
+'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
+'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёзгюзмезге боллукъду.',
+'perfcachedts' => 'Бу информация кэшден алыннгынды, ахыр кере ол $1 джангыртылыннганды.',
+'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
+Мында келтирилген информация къабыл этилинник тюйюлдю.',
+'wrong_wfQuery_params' => 'wfQuery()<br /> функциягъа джарамагъан параметрле<br />
+Функция: $1<br />
+Соруу: $2',
+'viewsource' => 'Къарау',
+'viewsourcefor' => '«$1» бет',
+'actionthrottled' => 'Терклик чекленнгенди',
+'actionthrottledtext' => 'Спамгъа къаршчы кюрешиуню себебинден, аз заманны ичинде бу амал бла кёб кере хайырланыу тыйылыбды. Кечирек джангыдан кёрюгюз.',
+'protectedpagetext' => 'Бу бет тюрлендириуге джабылыбды.',
+'viewsourcetext' => 'Сиз бу бетни башланнган текстине къараргъа эм аны копия этерге боллукъсуз:',
+'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды. Вандализмге къаршчы кюрешиу себебли, бу бетни тюрлендириу джабылыбды.',
+'editinginterface' => "'''Эс бёлюгюз:''' Сиз MediaWiki системаны интерфейс бетин тюрлендире турасыз. Бу башха къошулуучулагъ да тиерик затды. Кёчюрюр ючюн [http://translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net] локализация этиу проектни хайырландырыгъыз.",
+'sqlhidden' => '(SQL соруу джашырылыбды)',
+'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
+$2',
+'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге эркинлигигиз джокъду.',
+'customcssjsprotected' => 'Сизни бу бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары болгъаны ючюн.',
+'ns-specialprotected' => '«{{ns:special}}» ат аламны бетлерин тюрлендирирге болмайды.',
+'titleprotected' => "Быллай атлы бет къураргъа [[User:$1|$1]] къоймайды.
+Белгиленнген чурум: ''$2''.",
+
+# Virus scanner
+'virus-badscanner' => "Джарашдырыуну хатасы. Белгисиз вирус сканер: ''$1''",
+'virus-scanfailed' => 'скан этиуню хатасы (код $1)',
+'virus-unknownscanner' => 'белгисиз антивирус:',
+
+# Login and logout pages
+'logouttext' => "'''Аккаунтугъуздан чыкъдыгъыз.'''
+
+Сиз {{SITENAME}} сайтда аноним халда къалыргъа боллкъсуз. неда [[Special:UserLogin|джангыдан кирирге]].
+Талай бетле сиз тергеу джазыу (аккаунт) бла киргенча кёрюнюрге боллукъдула, аны кетерир ючюн кэшни джангыртыгъыз.",
+'welcomecreation' => '== Хош келигиз, $1! ==
+Сизни тергеу джазыуугъуз (аккаунтугъуз) къуралды.
+Сайтны [[Special:Preferences|персонал джарашдырыуларыны]] къараргъа унутмагъыз.',
+'yourname' => 'Къошулуучуну аты',
+'yourpassword' => 'Паролюгъуз:',
+'yourpasswordagain' => 'Паролну джангыдан джаз:',
+'remembermypassword' => 'Бу компьютерде къошулуучу атымы тут',
+'yourdomainname' => 'Сизни доменигиз:',
+'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
+'login' => 'Кир',
+'nav-login-createaccount' => 'Кириу / регистрация этиу',
+'loginprompt' => '{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.',
+'userlogin' => 'Кир / регистрация эт',
+'userloginnocreate' => 'Кириу',
+'logout' => 'Чыгъыу',
+'userlogout' => 'Чыгъыу',
+'notloggedin' => 'Авторизация ётмегенсиз',
+'nologin' => 'Тергеу джазыуугъуз (аккаунтугъуз) джокъмуду? $1.',
+'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
+'createaccount' => 'Джангы къошулуучуну регистрация эт',
+'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
+'gotaccountlink' => 'Кир',
+'createaccountmail' => 'e-mail бла',
+'badretype' => 'Джазгъан паролларыгъыз бир-бирине келишмейдиле.',
+'userexists' => 'Джазгъан ат хайырландырылады.
+Башха ат сайлагъыз.',
+'loginerror' => 'Кириу хата',
+'createaccounterror' => 'Быллай тергеу джазыу (аккаунт) къураргъа болмайды: $1',
+'nocookiesnew' => 'Къошлуучу регистрацияны ётгенди, алай кирмегенди. {{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хайырландырады. Сиз «cookies»-ни эркин этмегенсиз. «Cookies»-ни эркин этигиза да, андан сора джангы атыгъыз эм паролюгъуз бла киригиз.',
+'nocookieslogin' => '{{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хаырландырады. Сиз аны джукълатыб турасыз. «Cookies»-ни эркин этигизда джангыдан кёрюгюз.',
+'noname' => 'Терс атны джазгъансыз.',
+'loginsuccesstitle' => 'Авторизация тыйыншлы ётдю',
+'loginsuccess' => "'''Энди {{SITENAME}} сайтха \"\$1\" ат бла кирдигиз.'''",
+'nosuchuser' => '$1 аты бла къошулуучу джокъду.
+Къошулуучу атла харифни регистрин (уллу-гитчеликлерин) айырады.
+Атны тюз джазылгъанына къарагъыз неда [[Special:UserLogin/signup|джангы тергеу джазыу (аккаунт) къурагъаз]].',
+'nosuchusershort' => '<nowiki>$1</nowiki> аты бла къшулуучу джокъду. Атны тюз джазылгъанына къарагъыз.',
+'nouserspecified' => 'Сиз къошулуучу атыгъызны джазаргъа керексиз.',
+'login-userblocked' => 'Бу къошулуучу блокга салыннганды. Кирирге мадары джокъду.',
+'wrongpassword' => 'Сиз джазгъан пароль терсди. Джангыдан кёрюгюз.',
+'wrongpasswordempty' => 'Пароль джазылмай къалгъанды. Джангыдан кёрюгюз.',
+'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
+'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
+'mailmypassword' => 'Джангы пароль джибер E-mail бла',
+'passwordremindertitle' => '{{SITENAME}} къошулуучугъа джангы болджаллы пароль',
+'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
+
+Паролну алышдырыргъа сорууну сиз джибермеген эсегиз, неда эсигизге тюшген эсе паролюгъуз, бу билдириуге эс бёлмегизда къоюгъуз, эски паролюгъузну хайырландырыгъыз.',
+'noemail' => '$1 аты бла къошулуучугъа e-mail адрес джазылмагъанды.',
+'noemailcreate' => 'Сизге тюз e-mail адресни джазаргъа керекди',
+'passwordsent' => 'Джангы пароль $1 къошулуучуну электрон почтасына джиберилди.
+
+Паролну алгъандан сора, джангыдан киригиз системагъа.',
+'blocked-mailpassword' => 'Сизни IP-адресигиз блокланыб турады, аны бла паролну къайтарыу функцияда.',
+'eauthentsent' => 'Джазылгъан электрон почтагъа адресни тюрлениуюн бегитирге соруу джиберилгенди. Письмода бу сизни электрон почтагъызны адреси болгъанын бегитир ючюн не этерге керек болгъаны да чертилгенди.',
+'throttled-mailpassword' => 'Паролну электрон почтагъа джибериу амалны сиз {{PLURAL:$1|ахыр $1 сагъаны}} ичинде хайырландыргъансыз энди.
+Бу амаланы $1 {{PLURAL:$1|сагъатны}} ичинде къуру бир керек хайырландырыргъа болады.',
+'mailerror' => 'Почта джибериу хата: $1',
+'acct_creation_throttle_hit' => 'Кюн бла кечеге сизни IP-адресигизден {{PLURAL:$1|$1 тергеу джазыу (аккаунт)}} къуралгъанды. Бу амал энди бусагъатда джабыкъды.',
+'emailauthenticated' => 'Сизни электрон почта адресигиз бегитилгенди: $3, $2.',
+'emailnotauthenticated' => 'Сизни элктрон почта адресигиз алкъын бегитилмегенди, викини электрон почта бла ишлеу амаллары джукъланыбдыла.',
+'noemailprefs' => 'Электрон почта адрес джазылмагъанды, викини электрон почта бла ишлеу амаллары джукъланыбдыла.',
+'emailconfirmlink' => 'Электрон почта адресигизни бегитигиз.',
+'invalidemailaddress' => 'Электрон почта адресигизи къабыл этилинирге болмайды, форматха келишмегени ючюн.
+Тюз адрес джазыгъыз неда тизгинни бош къоюгъуз.',
+'accountcreated' => 'Тергеу джазыу (аккаунт) къуралды',
+'accountcreatedtext' => '$1 къошулуучугъа тергеу джазыу (аккаунт) къуралды.',
+'createaccount-title' => '{{SITENAME}}: тергеу джазыу (аккаунт) къурау',
+'createaccount-text' => 'Ким эсе да, электрон почтагъызны адресин джазыб {{SITENAME}} ($4) проектде «$3» пароль бла «$2» тергеу джазыу (аккаунт) къурагъанды. Сиз кириб паролну тюрлендирсегиз тыйыншлыды.
+
+Тергеу джазыуну (аккаунтну) халат бла къурагъан эсегиз, игнор этигиз да къоюгъуз бу билдириуню.',
+'usernamehasherror' => 'Къошулуучуну атында "#" символ болургъа джарамайда.',
+'login-throttled' => 'Сиз асыры кёб кере кирирге кюрешгенсиз.
+Джангыдан кёргюнчю бираз заман ётдюрюгюз.',
+'loginlanguagelabel' => 'Тил: $1',
+'suspicious-userlogout' => 'Терс браузер неда кэш этиучу прокси берген соруугъа ушагъаны ючюн, Сизни чыгъаргъа сорууугъуз алынмагъанды.',
+
+# Password reset dialog
+'resetpass' => 'Паролну тюрлендириу',
+'resetpass_announce' => 'Сиз, электрон почта бла ийилген, болджаллы пароль бла киргенсиз. Системагъа кириуню тамамларча, джангы пароль къурагъыз.',
+'resetpass_header' => 'Тергеу джазыуну (аккаунтну) паролюн тюрлендириу',
+'oldpassword' => 'Эски пароль:',
+'newpassword' => 'Джангы пароль:',
+'retypenew' => 'Джангы паролню къайтарыгъыз:',
+'resetpass_submit' => 'Паролну бегит эм кир',
+'resetpass_success' => 'Сизни паролюгъуз тыйыншлы тюрлендирилди! Системагъа кириу барады…',
+'resetpass_forbidden' => 'Пароль тюрленирге болмайды',
+'resetpass-no-info' => 'Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.',
+'resetpass-submit-loggedin' => 'Паролну тюрлендир',
+'resetpass-submit-cancel' => 'Ызына алыу',
+'resetpass-wrong-oldpass' => 'Терс пароль.
+Сиз энди паролну тюрлендирген неда джангы болджаллы пароль соргъан болурсуз.',
+'resetpass-temp-password' => 'Болджаллы пароль:',
+
+# Edit page toolbar
+'bold_sample' => 'Къалын джазыу',
+'bold_tip' => 'Къалын джазыу',
+'italic_sample' => 'Курсив джазыу',
+'italic_tip' => 'Курсив джазыу',
+'link_sample' => 'Джибериуню башлыгъы',
+'link_tip' => 'Ич джибериу',
+'extlink_sample' => 'http://www.example.com линкни ачыкълауу',
+'extlink_tip' => 'Тыш джибериу (http:// префиксни унутмагъыз)',
+'headline_sample' => 'Башлыкъны тексти',
+'headline_tip' => '2-чи дараджалы башлыкъ',
+'math_sample' => 'Формуланы бери салыгъыз',
+'math_tip' => 'Математика формула (LaTeX формат)',
+'nowiki_sample' => 'Формат этилинмеген текстни бери салыгъыз',
+'nowiki_tip' => 'Вики-формат этиуню игнор эт',
+'image_tip' => 'Эндирилген файл',
+'media_tip' => 'Медиа-файлгъа джибериу',
+'sig_tip' => 'Къол салыуугъуз эмда заман',
+'hr_tip' => 'Горизонтал сыз (кёб хайырландырмагъыз)',
+
+# Edit pages
+'summary' => 'Тюрлениулени къысха ачыкълау:',
+'subject' => 'Тема/башлыкъ:',
+'minoredit' => 'Бу гитче тюрлениудю',
+'watchthis' => 'Сынчыкълау списокга къош бу бетни',
+'savearticle' => 'Бетни сакъла',
+'preview' => 'Ал къарау',
+'showpreview' => 'Ал къарау',
+'showlivepreview' => 'Терк ал къарау',
+'showdiff' => 'Къошулгъан тюрлениуле',
+'anoneditwarning' => "'''Эс бёлюгюз''': Сиз системагъа кирмегенсиз. Сизни IP-адресигиз бу бетни тюрлениу тарихине джазыллыкъды.",
+'missingsummary' => "'''Эс бёлюгюз.''' Тюрлениулеге къысха ачыкълау джазмагъансыз.
+Сиз «Бетни сакъла» дегеннге энтда бассагъыз, тюрлениуле комментарийлесиз сакъланныкъдыла.",
+'missingcommenttext' => 'Тюбю бла ачыкълау джазыгъыз.',
+'missingcommentheader' => "'''Эс бёлюгюз:''' Сиз ачыкълаугъа башлыкъ джазмагъансыз.
+Сакълаугъа джангыдан бассагъыз, тюрлендириулеригиз башлыкъсыз сакъланныкъдыла.",
+'summary-preview' => 'Суратлауу былай боллукъду:',
+'subject-preview' => 'Башлыкъны ал къарау:',
+'blockedtitle' => 'Къошулуучу блок этилиниб турады',
+'blockedtext' => "'''Сизни тергеу джазыуугъуз (аккаунтугъуз) неда IP-адресигиз блокга салыннганды.'''
+
+Блокга салгъан администратор: $1.
+Чертилген чурум: ''«$2»''.
+
+* Блокну башланнганы: $8
+* Блокну бошалыуу: $6
+* Блокга салыннган: $7
+
+Сиз $1 къошулуучугъа неда башха [[{{MediaWiki:Grouppage-sysop}}|администраторгъа]] письмо джиберирге боллукъсуз, блокну сюзер ючюн.
+Сиз регистрацияны ётюб электрон почтагъызны адресин [[Special:Preferences|энчи джарашдырыулада]] бегитмеген эсегиз эмда блок бла письмола джиберирге къоюлмай эсе, администраторгъа письмо джибераллыкъ тюйюлсюз.
+Сизни IP-адресигиз — $3, блокну идентификатору — #$5.
+Бу информацияны ажымсыз чертигиз билдириулеригизде.",
+'autoblockedtext' => "Сизни IP-адресигиз автомат блокга салыннганды, алгъа къайсы эседа бир блокга салыннган къошулуучу хайырланнган ючюн. Аны блокга салгъан $1 администратор чертген чурум:
+
+:''«$2»''.
+
+* Блокну башланнганы: $8
+* Блокну бошалыуу: $6
+* Блокга салыннган: $7
+
+Сиз $1 къошулуучугъа неда башха [[{{MediaWiki:Grouppage-sysop}}|администраторгъа]] письмо джиберирге боллукъсуз, блокну сюзер ючюн.
+Сиз регистрацияны ётюб электрон почтагъызны адресин [[Special:Preferences|энчи джарашдырыулада]] бегитмеген эсегиз эмда блок бла письмола джиберирге къоюлмай эсе, администраторгъа письмо джибераллыкъ тюйюлсюз.
+Сизни IP-адресигиз — $3, блокну идентификатору — #$5.
+Бу информацияны ажымсыз чертигиз билдириулеригизде.",
+'blockednoreason' => 'Чурум белгиленмегенди',
+'blockedoriginalsource' => 'Тюбю бла «$1» бетни тексти кёргюзюледи.',
+'blockededitsource' => "Тюбю бла «$1» бетде '''сизни тюрлендириулеригизни''' тексти кёргюзюледи.",
+'whitelistedittitle' => 'Тюрлендирир ючюн тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керекди',
+'whitelistedittext' => 'Бетни тюрлендирир ючюн $1 тыйыншлысыз.',
+'confirmedittext' => 'Бетни тюрледирирни аллы бла сиз электрон почтагъызны адресин бегитирге керексиз.
+[[Special:Preferences|Джарашдырыуланы бетинде]] джазыгъыз эм бегитигиз электрон почтагъызны адресин.',
+'nosuchsectiontitle' => 'Бёлюм джокъду',
+'nosuchsectiontext' => 'Сиз болмагъан бетни тюрлендирирге кюрешесиз.
+Бу бетге къарагъан заманыгъызда, кетерилирге неда башха джерге кёчюрюлюрге боллукъду.',
+'loginreqtitle' => 'Кирирге керекди',
+'loginreqlink' => 'Кир',
+'loginreqpagetext' => 'Сиз башха бетлеге къарар ючюн $1 керексиз.',
+'accmailtitle' => 'Пароль джиберилди',
+'accmailtext' => "[[User talk:$1|$1]] къошулуучугъа къуралгъан пароль $2 адресине джиберилгенди.
+
+Регистрацияны тындыргъындан сора, ''[[Special:ChangePassword|паролну тюрлендирирге]]'' боллукъсуз.",
+'newarticle' => '(Джангы)',
+'newarticletext' => "Сиз джибериу бла алкъын къуралмагъан бетге кёчгенсиз.
+Аны къурар ючюн тюбюндеги терезеде статьяны текстин басмалагъыз (толуракъ [[{{MediaWiki:Helppage}}|ангылатыу бетде]] къарагъыз).
+Джангылыб кирген эсегиз а уа бери, браузеригизни '''артха''' тиегин басыгъызда къоюгъуз.",
+'anontalkpagetext' => "----''Бу сюзюу бет, тергеу джазыу (аккаунт) къурамагъан неда аны бла хайырланмагъан аноним къошулуучунукъуду.
+Аны ючюн идентификация этерге IP-адрес хайырланады.
+Талай башха къошулуучуланы да болургъа боллукъ быллай адреслери.
+Сиз аноним къошулуучу эсегиз эмда сизге джиберилмеген билдириуле алама деб суна эсегиз, ангылашылмаула болмаз ючюн [[Special:UserLogin|тергеу джазыу (аккаунт) къурагъыз]] неда [[Special:UserLogin/signup|системагъа киригиз]].''",
+'noarticletext' => "Бусагъатда бу бетде текст джокъду.
+Сиз [[Special:Search/{{PAGENAME}}|бу атны башха статьялада]] излерге , <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналлагъа къараргъа], неда '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} быллай атлы джангы бет къураргъа боллукъсуз]'''</span>.",
+'noarticletext-nopermission' => 'Бусагъатда бу бетде текст джокъду.
+Сиз [[Special:Search/{{PAGENAME}}|бу атны таныгъан]] башха статьяланы,
+неда <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналлада джазылгъанланы]</span> табаргъа боллукъсуз.',
+'userpage-userdoesnotexist' => '«$1» тергеу джазыу (аккаунт) джокъду. Къураргъа/тюрлендирирге излеймисиз бу бетни?',
+'userpage-userdoesnotexist-view' => '«$1» тергеу джазыу (аккаунт) джокъду.',
+'blocked-notice-logextract' => 'Бу къошулуучу бусагъатда блокланыб турады.
+Тюбюнде блокланыуланы журналындан ахыр джазыу бериледи:',
+'clearyourcache' => "'''Эслегиз:''' Бетде сакъланнгандан сора тюрлендириуле кёрюнюрча браузеригизни кэшин ариулатыгъыз:
+'''Mozilla / Firefox''': ''Ctrl+Shift+R'',
+'''IE:''' ''Ctrl+F5'',
+'''Safari''': ''Cmd+Shift+R'',
+ '''Konqueror''': ''F5'',
+'''Opera''': ''Tools→Preferences'' меню бла.",
+'usercssyoucanpreview' => "'''Юретиу.''' «{{int:showpreview}}» тиекни басыгъыз, джангы CSS-файлны сакълатырыгъызны аллы бла тинтиб кёрюрча.",
+'userjsyoucanpreview' => "'''Юретиу.''' «{{int:showpreview}}» тиекни басыгъыз, джангы JS-файлны сакълатырыгъызны аллы бла тинтиб кёрюрча.",
+'usercsspreview' => "'''Эсде тутугъуз, бу къуру ал къарауду, CSS файлыгъыз алкъын сакъланмагъанды!'''",
+'userjspreview' => "'''Эсде тутугъуз, бу къуру ал къарауду, javascript файлыгъыз алкъын сакъланмагъанды!'''",
+'userinvalidcssjstitle' => "'''Эс бёлюгюз:''' «$1» атлы тема джокъду. Эсде тутугъуз, .css эм .js бетле атлары ажымсыз къуру гитче харифледен болургъа керекди, сёз ючюн: {{ns:user}}:Foo/monobook.css, былай {{ns:user}}:Foo/Monobook.css тюйюл!",
+'updated' => '(Джангыртылды)',
+'note' => "'''Белги:'''",
+'previewnote' => "'''Бу къуру ал къарауду, текст алкъын сакъланмагъанды!'''",
+'previewconflict' => 'Бу ал къарау, башындагъы тюрлендириу терезеде текстни сакъланнганча кёргюзеди.',
+'session_fail_preview' => "'''Джарсыугъа, сессияны идентификаторуну тас этгени себебли, сервер сизни тюрлендириуюгюзни сакълаталмагъанды.
+Энтдада кёрюгюз.
+Бу хата къайтарылынса, [[Special:UserLogout|чыгъыгъыз]] да джангыдан кириб кёрюгюз.'''",
+'session_fail_preview_html' => "'''Джарсыугъа, сессияны билгилерин тас этгени себебли, сервер сизни тюрлендириуюгюзни сакълаталмагъанды.'''
+''{{SITENAME}} таза HTML-ны хайырландырыргъы къойгъаны себебли, ал къарау, JavaScript-атакалагъа каршчылыкъ этген халда, джабыкъды''
+'''Сиз ашхы ниет бла тюрлендирирге излеген эсегиз, энтда кёрюгюз.'''
+Джангыдан тюрлендириуюгюз ётмей эсе, [[Special:UserLogout|чыгъыгъыз]] да джангыдан кириб кёрюгюз.'''",
+'token_suffix_mismatch' => "'''Сизни тюрлендириуюгюз къабыл этилинмегенди.
+Себеби: браузеригиз редактор терезеде пунктуация белгилени терс кёргюзеди, аны ючюн статьяны тексти бузулургъа боллукъду.
+Бу халатлары болгъан аноним веб-проксилени хайырландырылгъанлары ючюн болургъа боллукъду'''",
+'editing' => '«$1» бетни тюрлендириу',
+'editingsection' => '«$1» бетде бёлюмню тюрлендириу',
+'editingcomment' => '«$1» бетни тюрлендириу (джангы бёлюм)',
+'editconflict' => 'Тюрлендириу конфликт: $1',
+'explainconflict' => 'Сиз тюрлендире тургъан сагъатда, ким эседа бы бетни тюрлендирген этгенди. Баш терезеде сиз бусагъатдагъы текстни кёресиз. Тюбюнде терезеде сизни варинтды. Сиз этген тюрлениулени тюб терезеден баш терезеге кёчюрюгюз. «Бетни сакъла» басылса баш терезеде текст сакъланныкъды.',
+'yourtext' => 'Сизни текстигиз',
+'storedversion' => 'Сакъланнган версия',
+'nonunicodebrowser' => "'''Эсгертиу: сизни браузеригиз Юникод кодировканы танымайдв.'''
+Бетлени тюрлендирген сагъатда ASCII болмагъан символла оналтылыкъ кодларына алышдырыллыкъдыла.",
+'editingold' => "'''Эсгертиу: сиз бу бетни эскирген версиясын тюрлендиресиз.'''
+Сакълатхан тиекге басхан сагъатда, джангы версиялада этилген тюрлендириуле тас боллукъдула.",
+'yourdiff' => 'Айырмала',
+'copyrightwarning' => 'Статьяны текстинде бютеу къошуула, тюрлендириуле $2 лицензияны тамалында (къарагъыз: $1) чыкъгъаннга саналгъанына эс бёлюгюз!
+Сизни текстлеригизни хар излегеннге эркин джайыллыгъын, эмда тюрлендириллигин излеймей эсегиз аланы бери салмагъыз.<br />
+Дагъыда сиз, этилген тюрлениулени автору болгъаныгъызгъа, неда аланы эркин джайылыргъа эмда тюрлендирирге эркинлик берген джерледен алыннганына шагъатлыкъ этесиз .<br />
+"ЭРКИНЛИКСИЗ, АВТОР ХАКЪ БЛА ДЖАКЪЛАННГАН МАТЕРИАЛЛАНЫ САЛМАГЪЫЗ"',
+'copyrightwarning2' => "{{SITENAME}} сайтха бютеу къошханыгъызны башха къошулуучула тюрлендирирге неда кетерирге боллукъдула.
+Башхала сизни текстлеригизни тюрлендиргенлерин излемей эсегиз, былайгъа салмагъыз.<br />
+Сиз дагъыда этген къошакъларыгъызны автору болгъаныгъызны неда информацияны чыкъгъан джери эркин джаяргъа эм тюрлендирирге къойгъанын аны бегитесиз (къарагъыз: $1).
+'''ЭРКИНЛИКСИЗ АВТОР ХАКЪ БЛА ДЖАКЪЛАННГАН МАТЕРИАЛЛА САЛМАГЪЫЗ БЫЛАЙГЪА!'''",
+'longpagewarning' => "'''Эсгертиу: Бу бетни узунлугъу $1 килобайтды.
+Ёлчемлери 32 КБ джууукълашхан неда андан кёб болгъан бетлени бир-бир браузерле терс кёргюзюрге боллукъдула.
+Текстни гитчерек кесеклеге юлешиб кёрюгюз.'''",
+'longpageerror' => "'''ХАТА: сиз сакълатхан текстни ёлчеми $1 килобайтды, ол $2 килобайт чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
+'readonlywarning' => "'''Эс бёлюгюз: Билгилени базасы бусагъатда киритленибди. Ол себебден тюрлениулеригиз къошулаллыкъ тюлдю. Джазгъанларыгъызны башха бир файлда сакълаб, кечирек къошаргъа боллукъсуз'''
+
+Киритлеген администратор бу билдириуню къойгъанды: $1",
+'protectedpagewarning' => "'''Эсгертиу: бу бет тюрлениуледен джакъланыбды, къуру администарторла тюрлендирелликдиле'''
+Тюбюнде, билги ючюн журналдагъы ахыр джазыу берилгенди:",
+'semiprotectedpagewarning' => "'''Эсгертиу:''' бу бетни джангыз регистрация этген къошулуучула тюрлендирелликдиле.
+Тюбюнде, билги ючюн журналны ахыр джазыуу берилгенди:",
+'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|бетде|бетде}} хайырланнганы себебли:",
+'titleprotectedwarning' => "'''Эсгертиу: Бу бет джакъланыбды. Джангыз [[Special:ListGroupRights|энчи хакълары]] болгъанла текстни салыргъа боллукъдула.'''
+Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
+'templatesused' => 'Бу бетде хайырланылгъан {{PLURAL:$1|шаблон|шаблонла}}:',
+'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
+'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
+'template-protected' => '(джакъланнган)',
+'template-semiprotected' => '(джарты джакъланыбды)',
+'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылыннган категориягъа|$1 джашырылыннган категориялагъа}} киреди:',
+'edittools' => '<!-- Былайда орналгъан текст тюрлениу эмда джюклениу формада кёрюннюкдю. -->',
+'nocreatetitle' => 'Бетле къурау чекленибди',
+'nocreatetext' => 'Бу сайтда джангы бет къуралыу тыйылгъанды.
+Ызына къайтыб болгъан бетни тюрлендирирге боллукъсуз, [[Special:UserLogin|системагъа кесигизни танытыргъа неда джангы тергеу джазыу (аккаунт) къураргъа]].',
+'nocreate-loggedin' => 'Джангы бетле къураргъа эркинлигигиз джокъду.',
+'sectioneditnotsupported-title' => 'Бёлюмлени тюрлендирир мадар джокъду.',
+'sectioneditnotsupported-text' => 'Бу бетде бёлюмлени тюрлендирирге болмайды.',
+'permissionserrors' => 'Эркинликлени халатлары',
+'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
+'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|Чуруму|Чурумлары}}:",
+'recreate-moveddeleted-warn' => "'''Эс бёлюгюз! Сиз алгъын кетерилген бетни джангыдан къураргъа излейсиз'''
+
+Бетни джангыдан къураргъа кереклигине сагъыш этигиз.
+Бетни кетериу бла атын тюрлендирилиуню журналы тюбюнде кёргюзюлгенди.",
+'moveddeleted-notice' => 'Бу бет кетерилгенди.
+Хапарлашдырыу ючюн тюбюрек кетериуле бла ат тюрлендириулени журналы берилгенди.',
+'log-fulllog' => 'Журналгъа толулай къара',
+'edit-hook-aborted' => 'Тюрлениу тохтатыучу процедура бла тыйылда.
+Ачыкълау берилмегенди.',
+'edit-gone-missing' => 'Бет джангыртылмайды.
+Кетерилген болур.',
+'edit-conflict' => 'Тюрлендириулени конфликти.',
+'edit-no-change' => 'Текстде тюрлениуле эсленмегени ючюн, сизни тюрлендириуюгюз къабыл этилмеди.',
+'edit-already-exists' => 'Джангы бет къураргъа боллукъ тюлдю.
+Алайсызда барды бу атлы бет.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''Эсгериу:''' Бу бетде асыры кёб къайнакълы функция барды.
+Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1 чакъырыу барды|$1 чакъырыу барды}}.",
+'expensive-parserfunction-category' => 'Асыры кёб къайнакълы функциялары болгъан бетле',
+'post-expand-template-inclusion-warning' => "'''Эсгериу:''' къошулгъан шаблонланы ёлчеми асыры уллуду.
+Бир-бир шаблонла бетге къошуллукъ тюлдюле.",
+'post-expand-template-inclusion-category' => 'Къошулгъан шаблонланы ёлчемлери асыры уллу болгъан бетле',
+'post-expand-template-argument-warning' => "'''Эсгериу:''' Бу бетде, салыргъа асыры уллу ёлчеми болгъан, эм азы бла бир шаблонну аргументи барды.
+Быллай аргументле къоюлгъандыла.",
+'post-expand-template-argument-category' => 'Джарамагъан шаблон аргументлери болгъан бетле',
+'parser-template-loop-warning' => 'Шаблон тюйюмчек табылгъанды: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Шаблонну рекурсиясыны теренлигини мардасындан тышына чыгъылды ($1)',
+'language-converter-depth-warning' => 'Тилни тюрлетиуюню мардасы толду ($1)',
+
+# "Undo" feature
+'undo-success' => 'Бу тюрлениу ызына алыныргъа боллукъду. Тилейбиз, версияланы тенглешдириуюн осмакълагъыз, кертида бу тюрлендириулени этерге излегенигизден ишексиз болугъуз, сора тюрлениуле къабыл этилир ючюн, "Бетни къош" деген тиекден басыгъыз.',
+'undo-failure' => 'Бир-бирине келишмегени себебли, тюрлениу ызына алынамады.',
+'undo-norev' => 'Болмагъаны неда кетерилгени ючюн, тюрлениу ызына алыналлыкъ тюлдю.',
+'undo-summary' => '$1 тюрлениу [[Special:Contributions/$2|$2]] ([[User talk:$2|сюзюу]]) ызына алынды.',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Акууант къурар мадар джокъду',
+'cantcreateaccount-text' => "Бу IP-адресден ('''$1''') хайырланыучу къошулуу, [[User:$3|$3]] джанындан тыйылгъанды.
+
+
+$3 джанындан берилген сылтау: ''$2''",
+
+# History pages
+'viewpagelogs' => 'Бу бетни журналларына къара',
+'nohistory' => 'Бу бетни тюрлениулерини тарихи джокъду.',
+'currentrev' => 'Бусагъатдагъы версия',
+'currentrev-asof' => 'Бусагъатдагъы версия, $1',
+'revisionasof' => '$1 версиясы',
+'revision-info' => '$2 джанындан этилген $1 версия',
+'previousrevision' => '← Алдагъы',
+'nextrevision' => 'Эндиги →',
+'currentrevisionlink' => 'Бусагъатдагъы версия',
+'cur' => 'бусагъатдагъы',
+'next' => 'эндиги',
+'last' => 'алдагъы',
+'page_first' => 'биринчи',
+'page_last' => 'ахыргъы',
+'histlegend' => "Ангылатыула: '''({{int:cur}})''' — бусагъатдагъы версиядан башхалыгъы, '''({{int:last}})''' — алдагъы версиядан башхалыгъы; '''({{int:last}})''' — гитче тюрлениу",
+'history-fieldset-title' => 'Тарихине къара',
+'history-show-deleted' => 'Къуру кетерилгенле',
+'histfirst' => 'Эм эски',
+'histlast' => 'Эм джангы',
+'historysize' => '($1 {{PLURAL:$1|байт|байт}})',
+'historyempty' => '(бош)',
+
+# Revision feed
+'history-feed-title' => 'Тюрлениулени тарихи',
+'history-feed-description' => 'Викиде бу бетни трюрлениулерини тарихи',
+'history-feed-item-nocomment' => '$1, $2',
+'history-feed-empty' => 'Сиз излеген бет табылмагъанды.
+Бет викиден кетерилирге неда аты тюрленирге болур.
+Темасы аннга ушагъан бетлени табар ючюн [[Special:Search|викиде излеб]] кёрюгюз.',
+
+# Revision deletion
+'rev-deleted-comment' => '(комментарий кетерилгенди)',
+'rev-deleted-user' => '(къошулуучуну аты кетерилгенди)',
+'rev-deleted-event' => '(джазыу кетерилгенди)',
+'rev-deleted-user-contribs' => '[къошулуучуну аты неда IP-адреси кетерилгенди — тюрлендириу къошакъны бетинде кёргюзюлмейди]',
+'rev-deleted-text-permission' => "Бетни бу версиясы '''кетерилгенди'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Кетериулени журналында] табыб къояргъа боллукъсуз.",
+'rev-deleted-text-unhide' => "Бу бетни версиясы '''кетерилгенди'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Кетериулени журналында] чурумла ангылатылгъан болур.
+Администратор болгъаныгъыз ючюн [$1 бу версияны кёрюрге боллукъсуз].",
+'rev-suppressed-text-unhide' => "Бетни бу версиясы '''джашырылгъанды'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Джашырылыуланы журналында] чурумла берилген болурла.
+Администратор болгъаныгъыз ючюн [$1 версияны кёрюрге боллукъсуз].",
+'rev-deleted-text-view' => "Бетни бу версиясы '''кетерилгенди'''.
+Администратор болгъаныз ючюн аннга къараргъа боллукъсуз; Ангылатыула [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Кетериулени журналында] болургъа боллукъдула.",
+'rev-suppressed-text-view' => "Бу бетни версиясы '''джашырылгъанды'''.
+Администратор болгъаныгъыз ючюн къараргъа боллукъсуз. Ангылатыула [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Джашырыуланы журналында] болургъа боллукъдула.",
+'rev-deleted-no-diff' => "Бетни версияларыны бири '''кетерилгени''' ючюн, тенглешдиреллик тюлсюз.
+Ангылатыула [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кетериулени журналында] болургъа боллукъдула.",
+'rev-suppressed-no-diff' => "Бетни бу версияларын тенглешдиреллик тюлсюз, аладан бири '''кетерилиб''' турады.",
+'rev-deleted-unhide-diff' => "Бетни версияларыны бири '''кетерилгенди'''.
+Ангылатыула [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кетериулени журналында] болургъа болур.
+Администратор болгъаныгъыз ючюн [$1 версиягъа къараргъа боллукъсуз].",
+'rev-suppressed-unhide-diff' => "Бу тенглешдириуну версияларыны бири '''джашырылгъанды'''.
+Ангылатыула [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} джашырыуланы журналында] болургъа болур.
+Администратор болгъаныгъыз ючюн, андан ары бардырыргъа излей эсегиз [$1 версияланы бу башхалыгъына] къараргъа боллукъсуз.",
+'rev-deleted-diff-view' => "Бу тенглешдириуню версияларыны бири '''кетерилгенди'''.
+Администратор болгъаныгъыз ючюн бу тенглештириуге къараргъа боллукъсуз, ангылатыула
+Как администратор, вы можете просмотреть это сравнение, подробности могут быть указаны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кетериулени журналында] болургъа боллукъдула.",
+'rev-suppressed-diff-view' => "Бу тенглешдириуню версияларыны бири '''джашырылгъанды'''.
+Администратор болгъаныгъыз ючюн, бу тенглешдириуге къараргъа боллукъсуз, ангылатыула [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} джашырыуланы журналында] болургъа боллукъду.",
+'rev-delundel' => 'кёргюзюу/джашырыу',
+'rev-showdeleted' => 'кёргюз',
+'revisiondelete' => 'Бетни версияларын кетер/къайтар',
+'revdelete-nooldid-title' => 'Нюзюрлю версиясы берилмегенди',
+'revdelete-nooldid-text' => 'Бу функцияны тындырыр ючюн нюзюрленнген версиягъыз (неда версияларыгъыз) джокъду. Теджеген версиягъыз джараулу тюлдю, неда джараулу версияны джарырыгъа излейсиз.',
+'revdelete-nologtype-title' => 'Журналны типи белгиленмегенди',
+'revdelete-nologtype-text' => 'Иш тындырыргъа керек болгъан журналны типин белгилемегенсиз.',
+'revdelete-nologid-title' => 'Журналда джазыу халатлыды',
+'revdelete-nologid-text' => 'Бу функцияны тындырыр ючюн чырт бир журнал типи белгиленмегенди, неда белгиленген журнал тип джараусузду.',
+'revdelete-no-file' => 'Белгиленнген файл джокъду.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" файлны $2 $3 датадан кетерилген версиясына къараргъа излегенигизге ишексизмисиз?',
+'revdelete-show-file-submit' => 'Хоу',
+'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|Сайланнган версия|сайланнган версиялары}}:'''",
+'logdelete-selected' => "'''Журналны {{PLURAL:$1|Сайланнган джазыу|сайланнган джазыулары}}:'''",
+'revdelete-text' => "'''Кетерилге версияла бла болуула алкъын бетни тарихи бла журналлада кёрюннюкдю, алай а бир кесеги тюз кириучюледен джашырыллыкъды.'''
+{{SITENAME}} сайтдагъы башха администраторла джашырылгъан ичге кирирге эмда аны ызына салыргъа боллукъдула.",
+'revdelete-confirm' => 'Тилейбиз, буну этерге излегенигизни, эсеблерин ангылагъаныгъызны, эм буну [[{{MediaWiki:Policy-url}}|джорукълагъа]] кёре этгенигизни билдиригиз.',
+'revdelete-suppress-text' => "Джашырыу '''джангыз''' бу турумлада этиледи:
+* Келишмеген энчи информация
+*: ''юй адресле эм телефон номерле, паспорт номер эмда башхала''",
+'revdelete-legend' => 'Чеклеуле сал:',
+'revdelete-hide-text' => 'Бетни бу версиясыны текстин джашыр',
+'revdelete-hide-image' => 'Файлны ичин джашыр',
+'revdelete-hide-name' => 'Ишлеу бла аны объектин джашыр',
+'revdelete-hide-comment' => 'Тюрлениулени ангылатыуларын джашыр',
+'revdelete-hide-user' => 'Авторну атын/IP адресин джашыр',
+'revdelete-hide-restricted' => 'Администраторладан да джашыр билгилени',
+'revdelete-radio-same' => '(тюрлендирмей къой)',
+'revdelete-radio-set' => 'Хоу',
+'revdelete-radio-unset' => 'Огъай',
+'revdelete-suppress' => 'Администраторладан да джашыра тур билгилени',
+'revdelete-unsuppress' => 'Ызына къайтарылгъан версияладан тыйгъычланы кетер',
+'revdelete-log' => 'Чурум:',
+'revdelete-submit' => '{{PLURAL:$1|Сайланнган версия|Сайланнган версиялада}} хайырлан',
+'revdelete-logentry' => '[[$1]] ючюн версияны кёрюнюую тюрленди',
+'logdelete-logentry' => '[[$1]] ючюн болууну кёрюнюую тюрленнгенди',
+'revdelete-success' => "'''Версияны кёрюнюую джетишимли тюрлендирилгенди'''",
+'revdelete-failure' => "'''Версияны кёрюнюую тюрленеллик тюлдю'''
+$1",
+'logdelete-success' => "'''Болууланы кёрюнюую тюрленнгенди.'''",
+'logdelete-failure' => "'''Журналны кёрюнюую салыналмады:'''
+$1",
+'revdel-restore' => 'кёрюнюуню тюрлендир',
+'pagehist' => 'Бетни тарихи',
+'deletedhist' => 'Кетериулени тарихи',
+'revdelete-content' => 'контент',
+'revdelete-summary' => 'тюрлениулени ачыкълау',
+'revdelete-uname' => 'къошулуучуну аты',
+'revdelete-restricted' => 'администраторла ючюн этилген чеклениуле',
+'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
+'revdelete-hid' => 'джашырылыныб $1',
+'revdelete-unhid' => 'ачыкъ $1',
+'revdelete-log-message' => ' $2 {{PLURAL:$2|версия|версия}} ючюн $1',
+'logdelete-log-message' => '$2 {{PLURAL:$2|болуу|болуу}} ючюн $1',
+'revdelete-hide-current' => '$2 $1 даталада джазыуну джашырыууну халаты: бу бусагъатдагъы версиясыды.
+Джашырыламаз.',
+'revdelete-show-no-access' => '$2 $1 замандагъы джазыуну ачыуда халат: бу джазыу "чеклендирилген" кибик белгиленнгенди.
+Сизни аннга кирир эркинлигигиз джокъду.',
+'revdelete-modify-no-access' => '$2 $1 заманда джазыуну тюрлениуюню халаты: бу джазыу "чекленнген" деб белгиленнгенди.
+Сизни аннга кирир эркинлигигиз джокъду.',
+'revdelete-modify-missing' => '$1 ID-си болгъан джазыуну тюрлениуюню халаты барды, билгилени базасында джокъду!',
+'revdelete-no-change' => "'''Эсгериу:''' $2 $1 замандагъы джазыу кёрюнюуню изленнген джарашыуларына алайсызда иеди.",
+'revdelete-concurrent-change' => '$2 $1 замандагъы джазыуну хатасы барды: аны статусу сиз тюрлендирирге кюреше тургъан заманда, башха бири бла тюрледирилгенди.
+Тилейбиз, журналланы осмакълагъыз.',
+'revdelete-only-restricted' => '$2, $1 Джазыуланы, джашырыуну башха джарашдырыуларындан бирин сайламай, администраторладан джашыраллыкъ тюлсюз.',
+'revdelete-reason-dropdown' => '* Кетериуню стандарт чурумлары
+** Автор хакъланы бузуу
+** Орунсуз энчи билгиле',
+'revdelete-otherreason' => 'Башха/къошакъ чурум:',
+'revdelete-reasonotherlist' => 'Башха чурум',
+'revdelete-edit-reasonlist' => 'Чурумланы списогун тюрлендир',
+'revdelete-offender' => 'Бетни версиясыны автору:',
+
+# Suppression log
+'suppressionlog' => 'Джашырыуланы журналы',
+'suppressionlogtext' => 'Тюбюндеги, администраторладан джашырылгъан материаллада къошулгъан кёб болмай этилген кетериуле бла тыйылыуланы списогуду.
+Бусагъатдагъы тыйылыуланы списоклары ючюн [[Special:IPBlockList|IP-тыйылыуланы списогуна]] къарагъыз.',
+
+# History merging
+'mergehistory' => 'Бетни тарихлерини бирлештириую.',
+'mergehistory-header' => 'Бу бет, эки башха бетни тюрлендириулерини тарихин бирлешдирирге мадар береди.
+Бу тюрлениуню бетни тарихине заран келтирмезине ишексиз болугъуз.',
+'mergehistory-box' => 'Эки бетни тарихин бирлешдир',
+'mergehistory-from' => 'Тамал бет:',
+'mergehistory-into' => 'Нюзюр бет:',
+'mergehistory-list' => 'Бирлешдирирге боллукъ тюрлениулени тарихи',
+'mergehistory-merge' => '[[:$1]] версияла [[:$2]]-гъа бирлешдирилирге боллукъдула.
+Джангыз белгиленнген заманда эмда аны аллында этилген версияланы бирлешдирир ючюн радио тиекни хайырланыгъыз.
+Эсигизде болсун, навигация джибериулени хайырландырсагъыз, билгиле тас боллукъдула.',
+'mergehistory-go' => 'Бирлешиннген тюрлендириулени кёргюз',
+'mergehistory-submit' => 'Тюрлениулени бирлештир',
+'mergehistory-empty' => 'Бирлешдирир ючюн тюрлениуле табылмагъандыла',
+'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
+'mergehistory-fail' => 'Бетлине тарихлери бирлешемеди, тилейбиз бетни эмда заманны параметрлерин джангыдан сынагъыз.',
+'mergehistory-no-source' => '$1 тамал бет джокъду',
+'mergehistory-no-destination' => '$1 нюзюр бет джокъду',
+'mergehistory-invalid-source' => 'Къайнакъ бетни джараулу башлыгъы болургъа керекди.',
+'mergehistory-invalid-destination' => 'Нюзюр бетни джараулу башлыгъы болургъа керекди.',
+'mergehistory-autocomment' => '[[:$1]], [[:$2]] бетге бирлешдирилди',
+'mergehistory-comment' => '[[:$1]] бла [[:$2]] бирлешдирилди: $3',
+'mergehistory-same-destination' => 'Тамал эмда нюзюрдеги бетле бирча болургъа болмайды',
+'mergehistory-reason' => 'Чурум:',
+
+# Merge log
+'mergelog' => 'Бирлешиулени журналы',
+'pagemerge-logentry' => '[[$1]] бла [[$2]] бирлешдирилгенди ($3 дери версияла)',
+'revertmerge' => 'Бёлюрге',
+'mergelogpagetext' => 'Тюбюрек бетлени тарихлерини ахыр бирлешдириулери берилгенди.',
+
+# Diffs
+'history-title' => '$1 бетни тюрлениу тарихи',
+'difference' => '(Версияланы араларында башхалыкъ)',
+'lineno' => 'Тизгин $1:',
+'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
+'showhideselectedversions' => 'Сайланнган версияланы кёргюз/джашыр',
+'editundo' => 'ызына алыу',
+'diff-multi' => '(Кёргюзюлмеген {{PLURAL:$1|$1 аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди.)',
+
+# Search results
+'searchresults' => 'Излеуню эсеби',
+'searchresults-title' => '"$1" ючюн излеуню эсеблери',
+'searchresulttext' => 'Проектни бетлеринде излеуню юсюндет толу информация табарча [[{{MediaWiki:Helppage}}|{{int:help}}]] бетге киригиз.',
+'searchsubtitle' => 'Изленнген «[[:$1]]» ([[Special:Prefixindex/$1|бу ат бла башланнган бетле]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|бу атха джибериу берген бетле]])',
+'searchsubtitleinvalid' => '«$1» сордугъуз',
+'toomanymatches' => 'Асыры кёб бирчалыкъ барды, джангыдан соруу джиберирге кюрешигиз',
+'titlematches' => 'Бетлени атында бирчалыкъ барды',
+'notitlematches' => 'Бетлени атларында бирчалыкълары джокъду',
+'textmatches' => 'Бетлени текстлеринде бирчалыкъла барды',
+'notextmatches' => 'Бетлени текстлеринде бирчалыкъ джокъду',
+'prevn' => 'алдагъы {{PLURAL:$1|$1}}',
+'nextn' => 'эндиги {{PLURAL:$1|$1}}',
+'prevn-title' => 'Алдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
+'nextn-title' => 'Артдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
+'shown-title' => 'Бетде $1 {{PLURAL:$1|джазыу|джазыуланы}} кёргюз',
+'viewprevnext' => 'Къара: ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'Излеуню джарашдырыулары',
+'searchmenu-exists' => "'''Бу викиде «[[:$1]]» атлы бет барды'''",
+'searchmenu-new' => "'''Бу вики-проектде «[[:$1]]» бетни къура!'''",
+'searchhelp-url' => 'Help:Ичиндегиле',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
+'searchprofile-articles' => 'Баш бетле',
+'searchprofile-project' => 'Болушлукъ бла проектлени бетлери',
+'searchprofile-images' => 'Мультимедия',
+'searchprofile-everything' => 'Хар не',
+'searchprofile-advanced' => 'Кенгерген',
+'searchprofile-articles-tooltip' => '$1 ичинде изле',
+'searchprofile-project-tooltip' => '$1 ичинде изле',
+'searchprofile-images-tooltip' => 'Файлланы изле',
+'searchprofile-everything-tooltip' => 'Бютеу бетледе изле (сюзюу бетледеда)',
+'searchprofile-advanced-tooltip' => 'Энчи ат аланладада изле',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 сёз}})',
+'search-result-score' => 'Келишиулюк: $1%',
+'search-redirect' => '(Джиберилиниу $1)',
+'search-section' => '($1 бёлюм)',
+'search-suggest' => 'Муну излей болурмусуз: $1',
+'search-interwiki-caption' => 'Джууукъ проектле',
+'search-interwiki-default' => '$1 эсеблери:',
+'search-interwiki-more' => '(дагъыда)',
+'search-mwsuggest-enabled' => 'юретиуле бла',
+'search-mwsuggest-disabled' => 'юретиулесиз',
+'search-relatedarticle' => 'Байламлы',
+'mwsuggest-disable' => 'AJAX юретиулени джукълатыгъыз',
+'searcheverything-enable' => 'Атланы бютеу аланларында изле',
+'searchrelated' => 'бейламлы',
+'searchall' => 'бютеу',
+'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
+'nonefound' => "'''Эсгериу.''' Тынгылау бла излеу бютеу атланы аламында бардырылмайды. Бютеу атланы аламында излер ючюн (къошулуучуланы сюзюулери, шаблонла эмда башхала) аллындан \"all:\" къошакъны хайырландырыгъыз, неда керекли атланы аламын хайырландырыгъыз.",
+'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
+'powersearch' => 'Кенг излеу',
+'powersearch-legend' => 'Кенг излеу',
+'powersearch-ns' => 'Атла аламда излеу:',
+'powersearch-redir' => 'Джибериулени кёргюз',
+'powersearch-field' => 'Излеу:',
+'powersearch-togglelabel' => 'Белгиле:',
+'powersearch-toggleall' => 'Барысыда',
+'powersearch-togglenone' => 'Бирида',
+'search-external' => 'Тыш излеу',
+'searchdisabled' => '{{SITENAME}} сайтда излеу талай заманнга тохтатылгъанды. Бусагъатда Google бла хайырланыб {{SITENAME}} ичинде излеу этерге боллукъсуз. Излеу сайтлада индекслери бир кесек эски болургъа боллугъун унутмагъыз.',
+
+# Quickbar
+'qbsettings' => 'Джюрютюуню панели',
+'qbsettings-none' => 'Кёргюзтме',
+'qbsettings-fixedleft' => 'Солу къатды',
+'qbsettings-fixedright' => 'Онгу къатды',
+'qbsettings-floatingleft' => 'Солгъа джюзеди',
+'qbsettings-floatingright' => 'Оннга джюзеди',
+
+# Preferences page
+'preferences' => 'Джарашдырыула',
+'mypreferences' => 'Джарашдырыуларым',
+'prefs-edits' => 'Тюрлендириулени саны:',
+'prefsnologin' => 'Системагъа кесигизни танытмагъансыз',
+'prefsnologintext' => 'Къошулуучуну джарашдырыуларын тюрлендирир ючюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} системагъа кесигизни танытыргъа]</span> керексиз.',
+'changepassword' => 'Паролну ауушдур',
+'prefs-skin' => 'Джасауу',
+'skin-preview' => 'Ал къарау',
+'prefs-math' => 'Математика белгиле',
+'datedefault' => 'Сайлау джокъду',
+'prefs-datetime' => 'Дата бла сагъат',
+'prefs-personal' => 'Энчи билгиле',
+'prefs-rc' => 'Ахыр тюрлениуле',
+'prefs-watchlist' => 'Къарауну списогу',
+'prefs-watchlist-days' => 'Къарауну списогунда кёргюзюллюк кюнню саны:',
+'prefs-watchlist-days-max' => '(эм кёб 7кюн)',
+'prefs-watchlist-edits' => 'Къарауну кенглешдирилген списогунда кёргюзюллюк тюрлениулени саны:',
+'prefs-watchlist-edits-max' => 'Максимум саны:1000',
+'prefs-watchlist-token' => 'Къарауну списогуну токени:',
+'prefs-misc' => 'Башха джарашдыдырыула',
+'prefs-resetpass' => 'Паролну тюрлендир',
+'prefs-email' => 'Электрон почтаны параметрлери',
+'prefs-rendering' => 'Кёрюнюую',
+'saveprefs' => 'Сакъла',
+'resetprefs' => 'Тюрлениулени ызына къайтар',
+'restoreprefs' => 'Тынгылау бла джарашдырыуланы ызына къайтар',
+'prefs-editing' => 'Тюрлендириу',
+'prefs-edit-boxsize' => 'Тюрлениу терезени ёлчеми',
+'rows' => 'Тизгинле:',
+'columns' => 'Колонкала:',
+'searchresultshead' => 'Излеу',
+'resultsperpage' => 'Бетде кёргюзюллюк табылгъан джазыуланы саны:',
+'contextlines' => 'Хар табылыннганнга кёргюзюлген тизгинлени саны:',
+'contextchars' => 'Тизгиннге контекстни символларыны саны:',
+'stub-threshold' => '<a href="#" class="stub">Стаблагъа джибериуню</a> формат этер ючюн марда (байтлада):',
+'recentchangesdays' => 'Ахыр тюрлениуледе кёргюзюллюк кюнле:',
+'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|кюн|кюн}})',
+'recentchangescount' => 'Тынгылау бла кёргюзюллюк тюрлениулени саны:',
+'prefs-help-recentchangescount' => 'Бу, ахыр тюрлениулени, бетни тарихлерин эмда журналланы ичине къошады.',
+'prefs-help-watchlist-token' => 'Бу аланны джашыртын ачхыч бла толтуруу, къарау списогугъуз ючюн бир RSS-трансляция къурайды.
+Бу аландагъы ачхычны билгенле къарау списогугъузну окъургъа боллукъду, ол себебден сырлы магъана сайлагъыз.
+Сакъланмагъанлай генерация этилген магъананы хайырландырыргъа боллукъсуз: $1',
+'savedprefs' => 'Джарашдырыуларыгъыз сакъландыла.',
+'timezonelegend' => 'Заман бел:',
+'localtime' => 'Джерли заман:',
+'timezoneuseserverdefault' => 'Серверни джарашдырыуларын хайырландыр',
+'timezoneuseoffset' => 'Башха (тебиндириуню беригиз)',
+'timezoneoffset' => 'Тебиндириу¹:',
+'servertime' => 'Сервер заман:',
+'guesstimezone' => 'Браузерден толтур',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантика океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индий океан',
+'timezoneregion-pacific' => 'Шош океан',
+'allowemail' => 'Башха къошулуучуладан электрон почтаны келмеге къой',
+'prefs-searchoptions' => 'Излеуню джарашдырыулары',
+'prefs-namespaces' => 'Атла алам',
+'defaultns' => 'Башха халда бу атла аламлада изле:',
+'default' => 'тынгылау бла',
+'prefs-files' => 'Файлла',
+'prefs-custom-css' => 'Энчи CSS',
+'prefs-custom-js' => 'Энчи JS',
+'prefs-reset-intro' => 'Бу бетни джарашдырыуларыгъызны тынгылыау бла салыннган джарашдырыулагъа кёчюрюрге хайырланаллыкъсыз.
+Бу ишлемни къабыл этсегиз, ызына къайтараллыкъ тюлсюз.',
+'prefs-emailconfirm-label' => 'Электрон почтаны бегитиу:',
+'prefs-textboxsize' => 'Тюрлендириу терезени ёлчеми',
+'youremail' => 'Электрон почта:',
+'username' => 'Къошулуучу ат:',
+'uid' => 'Къошулуучуну идентификатору:',
+'prefs-memberingroups' => '{{PLURAL:$1|Группаны|Группаланы}} члени:',
+'prefs-memberingroups-type' => '$1',
+'prefs-registration' => 'Регистрацияны этилген заманы:',
+'prefs-registration-date-time' => '$1',
+'yourrealname' => 'Керти атыгъыз:',
+'yourlanguage' => 'Интерфейсни тили:',
+'yourvariant' => 'Тилни варианты:',
+'yournick' => 'Псевдонимигиз (къол салыулагъа):',
+'prefs-help-signature' => 'Сюзюуню бетлериндеги оюмла "<nowiki>~~~~</nowiki>" символла къошулуб къол салыныргъа керекдиле, бу къолугъузгъа эмда заман тамгъагъа буруллукъду.',
+'badsig' => 'Джараусуз къол салыныу.
+HTML теглени осмакълагъыз.',
+'badsiglength' => 'Къол салыуугъуз бек узунду.
+$1 {{PLURAL:$1|символдан|символладан}} кеб болургъа болмайды.',
+'yourgender' => 'Эркиши/Тиширыу:',
+'gender-unknown' => 'Белгиленмегенди',
+'gender-male' => 'эркиши',
+'gender-female' => 'тиширыу',
+'prefs-help-gender' => 'Излеуге байламлы: джазылым джанындан къошулуучуну ырхызына кёре хайырланады.
+Бу билги хар кимгеда ачыкъды.',
+'email' => 'Электрон почта',
+'prefs-help-realname' => 'Керти ат (излеуге байламлы).
+Аны кёргюзюрге излесегиз, сиз тюрлендирген бетлеригизни,сиз тюрлендиргенигизи белгили боллукъду.',
+'prefs-help-email' => 'Электрон почта (излеуге байламлы), кёргюзюлсе, паролюгъуз унутулса джангы паролну адресигизге джибериу мадар береди. Ол замандада башха къошулуучула бетигизден сизни бла, сизни электрон почтагъызны адресин билир ючюн джазаргъа мадар берликди.',
+'prefs-help-email-required' => 'Электрон почтагъызны кёргюзюгюз.',
+'prefs-info' => 'Баш билгиле',
+'prefs-i18n' => 'Интернационализация',
+'prefs-signature' => 'Къол',
+'prefs-dateformat' => 'Датаны форматы',
+'prefs-timeoffset' => 'Заманны офсети',
+'prefs-advancedediting' => 'Кенгленнген джарашдырыула',
+'prefs-advancedrc' => 'Кенгленнген джарашдырыула',
+'prefs-advancedrendering' => 'Кенгленнген джарашдырыула',
+'prefs-advancedsearchoptions' => 'Кенгленнген джарашдырыула',
+'prefs-advancedwatchlist' => 'Кенгленнген джарашдырыула',
+'prefs-display' => 'Кёрюнюуню джарашдырыулары',
+'prefs-diffs' => 'Версияланы башхалыкълары',
+
+# User rights
+'userrights' => 'Къошулуучуну хакъларына оноу этиу',
+'userrights-lookup-user' => 'Къошулуучуланы къауумуна оноу эт',
+'userrights-user-editname' => 'Къошулуучуну атын джазыгъыз:',
+'editusergroup' => 'Къошулуучу къауумланы тюрлендир',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) къошулуучуну хакъын тюрлендиресиз",
+'userrights-editusergroup' => 'Къошулуучу къауумну тюрлендир',
+'saveusergroups' => 'Къошулуучу къауммланы сакъла',
+'userrights-groupsmember' => 'Къауумланы члени:',
+'userrights-groupsmember-auto' => 'Джангы член:',
+'userrights-groups-help' => 'Бу къошулуучу ичинде болгъан къауумланы тюрлендирирге боллукъсуз:
+* Къауумну атыны къатында белгичик бар эсе, къошулуучу бу къауумгъа киреди
+* Белгичик джокъ эсе, къошулуучу кирмейди бу къауумгъа.
+* * белги, сиз къошулуучуну къауумгъа къошсагъыз, кетералмазлыгъыгъызны, неда кетерсегиз къошалмазлыгъыгъызны билдиреди.',
+'userrights-reason' => 'Чурум:',
+'userrights-no-interwiki' => 'Башха викиледеги къошлуучуланы хакъларын тюрлендирирге эркинлигигиз джокъду.',
+'userrights-nodatabase' => '$1 белги базасы джокъду неда локаль тюлдю.',
+'userrights-nologin' => 'Къошулуучулагъа хакъланы берир ючюн администратор кибик [[Special:UserLogin|кирирге керексиз]].',
+'userrights-notallowed' => 'Сизни тергеу джазыуугъуздан къошулуучулагъа хакъла берирге эркинлик джокъду.',
+'userrights-changeable-col' => 'Сиз тюрлендиреллик къауумла',
+'userrights-unchangeable-col' => 'Сиз тюрлендирелмезлик къауумла',
+'userrights-irreversible-marker' => '$1*',
+
+# Groups
+'group' => 'Группа:',
+'group-user' => 'Къошулуучула',
+'group-autoconfirmed' => 'Автомат бегитилген къошулуучула',
+'group-bot' => 'Ботла',
+'group-sysop' => 'Администраторла',
+'group-bureaucrat' => 'Бюрократла',
+'group-suppress' => 'Ревизорла',
+'group-all' => '(бютеу)',
+
+'group-user-member' => 'Къошулуучу',
+'group-autoconfirmed-member' => 'Автомат бегитилген къошулуучу',
+'group-bot-member' => 'бот',
+'group-sysop-member' => 'администратор',
+'group-bureaucrat-member' => 'бюрократ',
+'group-suppress-member' => 'ревизор',
+
+'grouppage-user' => '{{ns:project}}:Къошулуучула',
+'grouppage-autoconfirmed' => '{{ns:project}}:Автомат бегитилген къошулуучула',
+'grouppage-bot' => '{{ns:project}}:Ботла',
+'grouppage-sysop' => '{{ns:project}}:Администраторла',
+'grouppage-bureaucrat' => '{{ns:project}}:Бюрократла',
+'grouppage-suppress' => '{{ns:project}}:Ревизорла',
+
+# Rights
+'right-read' => 'бетлеге къарау',
+'right-edit' => 'бетлени тюрлендириу',
+'right-createpage' => 'бетлени къурау (сюзюуле болмагъан)',
+'right-createtalk' => 'сюзюу бетле къурагъан',
+'right-createaccount' => 'джангы тергеу джазыула (аккаунтла) къурау',
+'right-minoredit' => '«гитче тюрлениу» белги салыу',
+'right-move' => 'бетлени атларын тюрлендириу',
+'right-move-subpages' => 'бетлени атларын тюббетлери бла бирге тюрлендириу',
+'right-move-rootuserpages' => 'Къошулуучуланы тамыр бетлерин атын тюрлендир',
+'right-movefile' => 'файлланы атларын тюрлендириу',
+'right-suppressredirect' => 'Бетни атытюрленсе, эски атындан джбериу этилмейди',
+'right-upload' => 'файлла джюклеу',
+'right-reupload' => 'Болгъан файлланы юслери бла джазыу',
+'right-reupload-own' => 'Кеси джюклеген файлны юсюне джазыу',
+'right-reupload-shared' => 'Орта файл сакълау джерни, локал бла ауушдур',
+'right-upload_by_url' => 'URL адресинден файлла джюклеу',
+'right-purge' => 'Мюкюл бетсиз бетлени кешлерин ариула',
+'right-autoconfirmed' => 'Джарым-джакълы бетлени тюрлендир',
+'right-bot' => 'Автомат процесс кибик сана',
+'right-nominornewtalk' => 'Къошулуучу сюзюу бетде этген гитче тюрлениуле, къошулуучугъа джангы билдириу бла билдирилмез',
+'right-apihighlimits' => 'API-соруулагъа мийик лимит хайырлан',
+'right-writeapi' => 'API джазыугъа хайырланыуу',
+'right-delete' => 'белтени кетериу',
+'right-bigdelete' => 'узун тарихли бетлени кетериу',
+'right-deleterevision' => 'бетлени белгили версияларыны кетериу эмда ызына къайтарыу',
+'right-deletedhistory' => 'Узакъдагъы эркинликсиз кетерилген бетлени тарихине къара',
+'right-deletedtext' => 'Кетерилген текстни эм кетерилген версияланы арасындагъы тюрлениулеге къара',
+'right-browsearchive' => 'Кетерилген бетлени изле',
+'right-undelete' => 'Бетни кетериуню ызына ал',
+'right-suppressrevision' => 'Администраторлада джашырылгъан версиялагъа къара эмда ызына джюкле',
+'right-suppressionlog' => 'энчи журналлагъа къарау',
+'right-block' => 'Башха къошулуучуланы тюрлендириу этиулерин тый',
+'right-blockemail' => 'Къошулуучуну электрон почтаны джибериуюн тый',
+'right-hideuser' => 'Къошулуучуну атын тый эмда аны джашыр',
+'right-ipblock-exempt' => 'IP тыйылуаны, автомат тыйыуланы эм диапозонланы тыйыуланы ётюдюр',
+'right-proxyunbannable' => 'Проксилени автомат тыйыуларыны ётдюр',
+'right-protect' => 'Къорууну дараджасын тюрлендир эмда къорууланнган бетледе тюрлениуле эт',
+'right-editprotected' => 'Къорууланнган бетледе тюрлениу эт (секиртмесиз джакъсыз)',
+'right-editinterface' => 'Къошулуучу интерфейсни тюрлендир',
+'right-editusercssjs' => 'Башха къошулуучуланы CSS- эм JS-файлларына тюрлениу эт',
+'right-editusercss' => 'Башха къошулуучуланы CSS-файлларына тюрлениу эт',
+'right-edituserjs' => 'Башха къошулуучуланы JS-файлларына тюрлениу эт',
+'right-rollback' => 'Белгили бетни тюрлендирген ахыр къошулуучуну тюрлениулерин дженгил ызына къайтар',
+'right-markbotedits' => 'Ызына къайтарылгъан тюрлениулени, бот тюрлениуле кибик белгиле',
+'right-noratelimit' => 'Теркликде чеклениу джокъду',
+'right-import' => 'Башха викиледен бетлени импорту',
+'right-importupload' => 'Файл джюклеуден бетлени импорт эт',
+'right-patrol' => 'Башхаланы тюрлениулерини осмакъланнганларын белгиле',
+'right-autopatrol' => 'Тюрлениуле автоматик осмакъланнган кибик белгиленедиле',
+'right-patrolmarks' => 'Ахыр тюрлениулени осмакъланыуларыны белгилерине къара',
+'right-unwatchedpages' => 'Къаралмагъан бетлени списогуна къара',
+'right-trackback' => 'Trackback-ны ашырыу',
+'right-mergehistory' => 'Бетлени тарихлерини бирлешдир',
+'right-userrights' => 'Бютеу къошулуучуланы хакъларыны тюрлендириу',
+'right-userrights-interwiki' => 'Башха викиледеги къошулуучуларыны хакъларын тюрлендир',
+'right-siteadmin' => 'Билги базаны киритле эмда киритни ач',
+'right-reset-passwords' => 'Башха къошулуучуланы паролларын кетер',
+'right-override-export-depth' => 'Бетлени, теренлиги 5-ге дери байламлы бетле бла бирге экспорт эт',
+'right-versiondetail' => 'Программа баджарыуну кенглетилген информациясыны кёргюз',
+'right-sendemail' => 'Башха къошулуучулагъа электрон почта джиберирге',
+
+# User rights log
+'rightslog' => 'Къошулуучуну хакъларыны журналы',
+'rightslogtext' => 'Бу къошулуучуну хакъларыны тюрлениуюню журналыды',
+'rightslogentry' => '$1-ни къауумлада членлиги $2-ден $3-ге тюрленнгенди',
+'rightsnone' => '(джокъ)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'бу бетни окъуу',
+'action-edit' => 'бу бетни тюрлендириу',
+'action-createpage' => 'бетни къурау',
+'action-createtalk' => 'сюзюу бетни къурау',
+'action-createaccount' => 'бу тергеу джазыуну (аккаунтну) къурау',
+'action-minoredit' => 'бу тюрлениуню гитче кибик белгилеу',
+'action-move' => 'бу бетни атын тюрлендириу',
+'action-move-subpages' => 'Бу бетни бютеу бёлюмлери бла атын тюрлендириу',
+'action-move-rootuserpages' => 'къошулуучуланы тамыр бетлерини атларын тюрлендириу',
+'action-movefile' => 'бу файлны атын тюрлендириу',
+'action-upload' => 'бу файлны джюклеу',
+'action-reupload' => 'болгъан файлны юсюне джаздырыу',
+'action-reupload-shared' => 'файлланы ортакъ сакълау джеринден бу файлны джараусуз этиу',
+'action-upload_by_url' => 'URL адресден бу файлны джюклеу',
+'action-writeapi' => 'API хайырландырыу тюрлендириулеге',
+'action-delete' => 'бу бетни кетериу',
+'action-deleterevision' => 'бетни бу версиясын кетериу',
+'action-deletedhistory' => 'бу бетни кетерилген тарихине къарау',
+'action-browsearchive' => 'кетерилген бетлени излеу',
+'action-undelete' => 'бу бетни ызына салыу',
+'action-suppressrevision' => 'бу джашырылгъан версиясына бетни къарау эм ызына салыу',
+'action-suppressionlog' => 'бу энчи журналгъа къарау',
+'action-block' => 'Къошулуучуну блок этиу, тюрлендириуле этерге къоймау',
+'action-protect' => 'бу бетни джакълау дараджасын тюрлендириу',
+'action-import' => 'бу бетни башха викиден импорт этиу',
+'action-importupload' => 'бу бетни джюкленнген файлдан импорт этиу',
+'action-patrol' => 'башхаланы тюрлендириулерин патруль этилиннгенлеча белгилеу',
+'action-autopatrol' => 'кесими тюрлендириулерими патруль этилиннгенлеча белгилеу',
+'action-unwatchedpages' => 'киши сынчыкъламагъан бетлени списогуна къарау',
+'action-trackback' => 'trackback ашырыу',
+'action-mergehistory' => 'бу бетлени тарихлерин бирлешдириу',
+'action-userrights' => 'къошулуучуну бютеу хакъларын тюрлендириу',
+'action-userrights-interwiki' => 'къошулуучуланы башха викиледе хакъларын тюрлендириу',
+'action-siteadmin' => 'билгилени базасын блокга салыу эм блокдан алыу',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'recentchanges' => 'Ахыр тюрлениуле',
+'recentchanges-legend' => 'Ахыр тюрлениулени джарашдырыулары',
+'recentchangestext' => 'Тюбюнде, Википедияда этилген ахыр тюрлениуле хронология бла тизилиб турадыла.',
+'recentchanges-feed-description' => 'Викиде бу лентада тюрлниулени сынчыкъла.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 — джангы бет',
+'recentchanges-label-newpage' => 'Бу тюрлендириу бла джангы бет къуралгъанды',
+'recentchanges-legend-minor' => '$1 — гитче тюрлендириу',
+'recentchanges-label-minor' => 'Бу гитче тюрлениудю',
+'recentchanges-legend-bot' => '$1 — ботну тюрлендириую',
+'recentchanges-label-bot' => 'Бу тюрлендириуню бот этгенди',
+'recentchanges-legend-unpatrolled' => '$1 - патруль этилинмеген тюрлендириуле',
+'recentchanges-label-unpatrolled' => 'Бу тюрлендириу алкъын патруль этилинмегенди',
+'rcnote' => '$4 $5 заманнга, арт {{PLURAL:$1|1|$1}} тюрлениу {{PLURAL:$2|1|$2}} кюнню ичинде',
+'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
+'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
+'rcshowhideminor' => 'гитче тюрлендириулени $1',
+'rcshowhidebots' => 'ботланы $1',
+'rcshowhideliu' => 'кирген къошулуучуланы $1',
+'rcshowhideanons' => 'анонимлени $1',
+'rcshowhidepatr' => '$1 патруль этилиннген тюрлендириуле',
+'rcshowhidemine' => 'кесими тюрлендириулерими $1',
+'rclinks' => 'Ахыр $2 кюнню ичинде этилиннген $1 тюрлениуню кёргюз;<br /> $3',
+'diff' => 'башх.',
+'hist' => 'тарих',
+'hide' => 'джашыр',
+'show' => 'кёргюз',
+'minoreditletter' => 'г',
+'newpageletter' => 'Дж',
+'boteditletter' => 'б',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|сынчыкълагъан къошулуучу}}]',
+'rc_categories' => 'Категориялагъа юлеш ("|" бла айыр)',
+'rc_categories_any' => 'Къайсы да',
+'rc-change-size' => '$1',
+'newsectionsummary' => '/* $1 */ Джангы бёлюм',
+'rc-enhanced-expand' => 'Къошакъланы кёргюз (JavaScript хайырланады)',
+'rc-enhanced-hide' => 'Къошакъланы джашыр',
+
+# Recent changes linked
+'recentchangeslinked' => 'Байламлы тюрлениуле',
+'recentchangeslinked-feed' => 'Байламлы тюрлендириуле',
+'recentchangeslinked-toolbox' => 'Байламлы тюрлендириуле',
+'recentchangeslinked-title' => '$1 бет бла байламлы тюрлендириуле',
+'recentchangeslinked-backlink' => '← $1',
+'recentchangeslinked-noresult' => 'Берилген кёзюуню ичинде белгиленнген бетге байламлы башха бетледе тюрлениуле болмагъандыла',
+'recentchangeslinked-summary' => "Белгиленнген бет (неда белгиленнген категориягъа киргенле) джиберген бетледе тюрлениулени списогуду.
+[[Special:Watchlist|Сынчыкълау списокга]] кирген бетле ''чертилгендиле'''.",
+'recentchangeslinked-page' => 'Бетни аты:',
+'recentchangeslinked-to' => 'Муну орнуна, бу бетге джиберген бетледе тюрлениулени кёргюз',
+
+# Upload
+'upload' => 'Файл джюкле',
+'uploadbtn' => 'Файл джюкле',
+'reuploaddesc' => 'Джюклеу формасына ызына къайт',
+'upload-tryagain' => 'Тюрлетилген файл ангылатыуну джибер',
+'uploadnologin' => 'Сиситемагъа кирмегенсиз',
+'uploadnologintext' => 'Файлла джюклер ючюн [[Special:UserLogin|системагъа кирирге]] керексиз.',
+'upload_directory_missing' => 'Джюклеу директория ($1) табылмайды эмда веб-сервер бла къуралалмайды.',
+'upload_directory_read_only' => 'Веб-сервер файл джюкленнегн ($1) папкагъа джазыу эркинлиги джокъду.',
+'uploaderror' => 'Джюклеуню хатасы',
+'uploadtext' => "Файл джюклер ючюн тюбюндеги форманы хайырлан.
+Алландан джюкленнген файлланы кёрюр неда излер ючюн [[Special:FileList|джюкленнген файлланы списогуна]] къарагъыз, (джангыдан) джюкленнгенле [[Special:Log/upload|джюклеу журналында]], кетерилгенле [[Special:Log/delete|кетериу журналында]] тутуладыла.
+
+Бетге файл салыр ючюн байлмыгъызда тюбюндеги формаларыны бирин хайырланыгъыз;
+* Файлны бютеу ёлчемини салыр ючюн: '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>'''
+* Сол къыйрда бир тёртгюл ичинде, тюбюндеда ангылатыуу бла, 200 пиксел ёлчеми бла хайырландырыргъа излей эсегиз: '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|тюбюнде ангылатыу]]</nowiki></tt>'''
+* Файлны кёргюзмей, файлгъа дижбиреиу берирге излей эсегиз: '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''",
+'upload-permitted' => 'Эркинлик берилген файлланы типлери: $1.',
+'upload-preferred' => 'Изленнген файлланы типлери: $1.',
+'upload-prohibited' => 'Джасакъ этилген файлланы типлери: $1.',
+'uploadlog' => 'Джюклеулени журналы',
+'uploadlogpage' => 'Джюклеулени журналы',
+'uploadlogpagetext' => 'Тюбюнде эм ахыр къошулгъан файлланы списогу барды.
+Дагъыда [[Special:NewFiles|dosyalджангы файлланы галереясына]] къара, анда джангы джюклеулени юсюнден билгиле толу кёрюгюзюлгендиле.',
+'filename' => 'Файлны аты',
+'filedesc' => 'Къысха ачыкълау',
+'fileuploadsummary' => 'Къысха ачыкълау:',
+'filereuploadsummary' => 'Файлны тюрлениулери:',
+'filestatus' => 'Джайылыу хакълары:',
+'filesource' => 'Къайнакъ:',
+'uploadedfiles' => 'Джюкленнген файлла',
+'ignorewarning' => 'Эсгертиулеге къарамай сакълат файлны',
+'ignorewarnings' => 'Эсгертиулеге къарама',
+'minlength1' => 'Файлны аты эм азы бла бир харифден болургъа керекди.',
+'illegalfilename' => '"$1" файл атда хайырланыугъа къабыл этилмеген символла бардыла.
+Файлны атын тюрлендириб, джангыдан джюклегиз.',
+'badfilename' => 'Файлны аты $1 болуб ауушду.',
+'filetype-mime-mismatch' => 'Файл MIME типге келишмейди.',
+'filetype-badmime' => '"$1" MIME типли файлланы джюклениуюне эркинлик берлимейди.',
+'filetype-bad-ie-mime' => 'Internet Explorer буну эркинлик берилмеген эмда потенцаил заран берлик "$1" файл тип кибик таныгъаны ючюн, бу файл джюкленеллик тюлдю.',
+'filetype-unwanted-type' => "'''\".\$1\"''' изленмеген файл типиди.
+Изленнген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
+'filetype-banned-type' => "'''\".\$1\"''' джасакъланнган файл типиди.
+Эркинлик берилген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
+'filetype-missing' => 'Файлны кенглешиуу джокъду (сёз ючюн, ".jpg" кибик)',
+'large-file' => 'Файлланы $1 байтдан уллу болмасы изленеди (бу файлны ёлчеми $2)',
+'largefileserver' => 'Бу файл сервер эркинлик бергенден уллуду.',
+'emptyfile' => 'Джюклеген файлыгъыз бош кёрюнеди. Буну чуруму файлны атыны джазыуда халат болургъа болур. Файлны джюклерге излегенигизден ишексиз болугъуз.',
+'fileexists' => "Быллай атлы файл барды.
+Аны ауушдурурда аккылы эсегиз, алгъын '''<tt>[[:$1]]</tt>''' файлгъа кёз джетдиригиз.
+[[$1|thumb]]",
+'filepageexists' => "Бу файл ючюн ангылатыу бет '''<tt>[[:$1]]</tt>''' адресинде алайсызда барды, алай а бу атлы файл бусагъатда джокъду.
+Ангылатыуугъуз файлны ангылатыу бетинде чыгъарыкъ тюлдю.
+Джангы ангылтаыу къошар ючюн, буну къол бла тюрлендирирге керексиз.
+[[$1|thumb]]",
+'fileexists-extension' => "Ушаш аты бла башха файл барды: [[$2|thumb]]
+* Джюкленнген файлны аты: '''<tt>[[:$1]]</tt>'''
+* Бар болгъан файлны аты: '''<tt>[[:$2]]</tt>'''
+Башха ат сайларыгъыгъызны тилейбиз.",
+'fileexists-thumbnail-yes' => "Бу файл, гитче этилген весриягъа (миниатурагъа) ушайды ''(thumbnail)''. [[$1|thumb]]
+Тилейбиз '''<tt>[[:$1]]</tt>''' файлны контроль этигиз .
+Контроль этилген файл бла оригинал бир эсе, айры аны гитче этилген версиясын джюклерге керек джокъду.",
+'file-thumbnail-no' => "Бу файлны аты '''<tt>$1</tt>''' бла башланады.
+Бу башха суратны гитче этилген версиясына ушайды ''(thumbnail)''
+Сизде бу суратны толу версиясы бар эсе, аны джюклегиз неда файлны атын тюрлендиригиз.",
+'fileexists-forbidden' => 'Бу ат бла файл барды, эмда аны юсюне джазылылмайды.
+Файлыгъызны джангыдан джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгъыз. [[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Быллай атлы файл файлланы сакълауну джеринде барды.
+Дагъыда файлыгъызны джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгыз. [[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|файлны|файлланы}} дубликатыды:',
+'file-deleted-duplicate' => 'Бу файлны ушашы болгъан башха файл ([[$1]]) алгъаракъ кетерилгенди. Бу файлны джангыдан джюклерни аллы бла файлны кетериуюню тарихи бла танышыгъыз.',
+'successfulupload' => 'Джюклеу тыйыншлы ётдю',
+'uploadwarning' => 'Эсгертиу',
+'uploadwarning-text' => 'Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.',
+'savefile' => 'Файлны сакълат',
+'uploadedimage' => '«[[$1]]» джюкленнгенди',
+'overwroteimage' => '"[[$1]]" суратны джангы версиясы джюкленнгенди',
+'uploaddisabled' => 'Джюклеуге эркинлик джокъду',
+'uploaddisabledtext' => 'Файлланы джюклеу мадар джукъланыбды',
+'php-uploaddisabledtext' => 'PHP-да файл джюклеу амал джукъланыбды.
+file_uploads джарашдырыулагъа бир къарагъыз.',
+'uploadscripted' => 'Бу файл, браузер бла халатлы таныргъа боллукъ, HTML-код неда скрипт джюрютеди.',
+'uploadvirus' => 'Файл вируслуду! $1 къара.',
+'upload-source' => 'Къайнакъ файл',
+'sourcefilename' => 'Къайнакъ аты файлны:',
+'sourceurl' => 'Къайнакъны URL-адреси:',
+'destfilename' => 'Файлны джангы аты:',
+'upload-maxfilesize' => 'Файлны максимал ёлчеми: $1',
+'upload-description' => 'Файлны ачыкълауу',
+'upload-options' => 'Джюклеуню опциялары',
+'watchthisupload' => 'Бу файлны сынчыкъларгъа',
+'filewasdeleted' => 'Быллай аты бла файл алгъаракъ джюкленнгенди, алай а артдан кетерилгенди. Файлны джюклеуню аллы бла, $1 бетге бир кёз джетдиригиз.',
+'upload-wasdeleted' => "'''Эсгериу: Алгъаракъ кетерилген файлны джюклей турасыз.'''
+
+Файлны джюклерге болгъанын осмакълагъыз.
+Бу файлны кетериу журналын теджейбиз:",
+'filename-bad-prefix' => "Джюклене тургъан файлны аты '''«$1»''' бла башланады эмда цифра камера суратларына берген шаблон ат болургъа болур.
+Файлны ангылатхан ат атаргъа кюрешигиз.",
+'filename-prefix-blacklist' => ' #<!-- бу тизгинни тургъаныча къоюгъуз --> <pre>
+# Синтаксис быллайды:
+# * «#» символдан башланнган барысыда комментарийге саналады (тизгинни артына дери)
+# * Хар джараусуз тизгин — файлны стандарт атыны префиксиди (цифра камера бериуюченди)
+CIMG # Casio
+DSC_ # Nikon
+DSCF # Fuji
+DSCN # Nikon
+DUW # бир-бир мобил телефонла
+IMG # орта
+JD # Jenoptik
+MGP # Pentax
+PICT # тюрлю-тюрлюле
+ #</pre> <!-- бу тизгинни тургъаныча къоюгъуз -->',
+
+'upload-proto-error' => 'Халатлы протокол',
+'upload-proto-error-text' => 'Узакъдан джюклеу,<code>http://</code> неда <code>ftp://</code> бла башланнган URL-ле керекдиле.',
+'upload-file-error' => 'Ич халат',
+'upload-file-error-text' => 'Серверде кёзюулю файл къуралгъан заманда ич халат болгъанды.
+[[Special:ListUsers/sysop|администраторгъа]] джазыгъыз.',
+'upload-misc-error' => 'Билинмеген джюклеу халат',
+'upload-misc-error-text' => 'Джюклеуню кёзюуюнде билинмеген халат болду.
+URL-адрес тюз болгъанын осмакълагъыз эмда джангыдан сынагъыз.
+Проблема джангыдан чыкъса, [[Special:ListUsers/sysop|администраторгъа]] джазыгъыз.',
+'upload-too-many-redirects' => 'URL асыры кёб джибериу тутады',
+'upload-unknown-size' => 'Билинмеген ёлчем',
+'upload-http-error' => 'HTTP хата болду: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Эркинлик джасакъланнганды',
+'img-auth-nopathinfo' => 'PATH_INFO джокъду.
+Серверигиз бу билгилени джиберир ючюн джарашмагъанды.
+CGI тамалында ишлерге эмда img_auth бла ишлемезге болур.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization бетге къара.',
+'img-auth-notindir' => 'Изленнген джол джюклениулени папкасы бла байламлы тюлдю.',
+'img-auth-badtitle' => '"$1" бла джараула башлыкъ этилелемейди.',
+'img-auth-nologinnWL' => 'Сиз системагъа кирмедигиз, эмда «$1» акъ списокда тюлдю.',
+'img-auth-nofile' => '"$1" файл джокъду',
+'img-auth-isdir' => '"$1" каталогга кирирге излейсиз.
+Къуру файллагъа кирирге эркинлик барды.',
+'img-auth-streaming' => '"$1" ойнатылады',
+'img-auth-public' => 'img_auth.php-ни фунцкиясы энчи джабыкъ викиден чыгъарыуду.
+Бу вики орта вики кибик джарашдырылгъанды.
+Эм келишиу къоркъуусузлукъ ючюн img_auth.php джукълатылгъанды.',
+'img-auth-noread' => 'Къоушулуучуну «$1» файлыны окъургъа эркинлиги джокъду.',
+
+# HTTP errors
+'http-invalid-url' => 'Терс URL: $1',
+'http-invalid-scheme' => '«$1» схемалы адресле тутулмайла',
+'http-request-error' => 'Соруу ийгенни халаты.',
+'http-read-error' => 'HTTP окъууну халаты.',
+'http-timed-out' => 'HTTP-сорууну сакълау заман ётдю.',
+'http-curl-error' => 'Бу URL-гъа сорууну халаты: $1',
+'http-host-unreachable' => 'URL-ге джетелмеди',
+'http-bad-status' => 'HTTP-соруу ишлеген заманында проблема чыкъгъанды: $1 $2',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL-ге джетилелимеди',
+'upload-curl-error6-text' => 'Белгиленнген URL-ге джетелмейди.
+URL-ни тюз , сайтны ачыкъ болгъанына ишексиз болугъуз.',
+'upload-curl-error28' => 'Джюклеу заманы чыкъды',
+'upload-curl-error28-text' => 'Бу сайтны джууаб бериую узун барады.
+Сайтны ачыкъ болгъанын контроль этигиз, къызха заман сакълаб, джангыдан сынагъыз.
+Сайтны бошуракъ болгъан заманында сынасагъыз игирек болургъа болур.',
+
+'license' => 'Лицензияланыу:',
+'license-header' => 'Лицензияланыу',
+'nolicense' => 'Чырт бирида сайланмагъанды',
+'license-nopreview' => '(Ал къарау ишлемейди)',
+'upload_source_url' => '(тюз, хар кимда джетеллик URL)',
+'upload_source_file' => '(компьютеригиздеги файл)',
+
+# Special:ListFiles
+'listfiles-summary' => 'Бу къуллукъ бет бютеу джюкленнген файлланы кёргюзеди.
+Кеб болмай джюкленнге файлла тынгылау бла списокну башында кёргюзюледиле.
+Колонканы башлыгъына басыу сафламаны тюрлендиреди.',
+'listfiles_search_for' => 'Медиа ат бла изле:',
+'imgfile' => 'файл',
+'listfiles' => 'Файлланы списогу',
+'listfiles_date' => 'Заман',
+'listfiles_name' => 'Файлны аты',
+'listfiles_user' => 'Къошулуучу',
+'listfiles_size' => 'Ёлчем',
+'listfiles_description' => 'Ачыкълау',
+'listfiles_count' => 'Версияла',
+
+# File description page
+'file-anchor-link' => 'Файл',
+'filehist' => 'Файлны тарихи',
+'filehist-help' => 'Датагъа/заманнга басыгъыз, ол сагъатда файл къаллай болгъанын кёрюр ючюн.',
+'filehist-deleteall' => 'барысын да кетер',
+'filehist-deleteone' => 'кетер',
+'filehist-revert' => 'ызына ал',
+'filehist-current' => 'бусагъатдагъы',
+'filehist-datetime' => 'Дата/заман',
+'filehist-thumb' => 'Миниатюра',
+'filehist-thumbtext' => '$1 кюнден версияны миниатюрасы',
+'filehist-nothumb' => 'Минатура джокоъду',
+'filehist-user' => 'Къошулуучу',
+'filehist-dimensions' => 'Ёлчеми',
+'filehist-filesize' => 'Файлны ёлчеми',
+'filehist-comment' => 'Эсгериу',
+'filehist-missing' => 'Файл джокъду',
+'imagelinks' => 'Файлгъа джибериуле',
+'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|бет|$1 бет}} джибередиле:',
+'linkstoimage-more' => '$1-ден артыкъ {{PLURAL:$1|бет|бет}} бу файлгъа джибериу береди.
+Кёзюудеги список къуру бу файлгъа джибериу берген {{PLURAL:$1|биринчи файлны|биринчи $1 файлны}} кёргюзеди.
+[[Special:WhatLinksHere/$2|Толу спиосок]] барды.',
+'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
+'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
+'redirectstofile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлгъа джибереди.',
+'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
+'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
+'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
+Андан кёб билги ючюн [$2 файлны ангылатыу бетге] къарагъыз.',
+'sharedupload-desc-here' => 'Бу файл $1денди эмда башха проектледе хайырландыргъа боллукъду.
+[$2 Файлны ангылатыу бетинден] билгиле тюбюрекде берилгендиле.',
+'filepage-nofile' => 'Быллай атлы файл джокъду.',
+'filepage-nofile-link' => 'Быллай атлы файл джокъду, алай а сиз [$1 джюклерге боллукъсуз].',
+'uploadnewversion-linktext' => 'Бу файлны джангы версиясын джюклеу',
+'shared-repo-from' => '$1-дан',
+'shared-repo' => 'Ортакъ сакълау джер',
+
+# File reversion
+'filerevert' => '$1 файлны эски халына къайтыу',
+'filerevert-backlink' => '← $1',
+'filerevert-legend' => 'Файлны эски халына къайтар',
+'filerevert-intro' => "'''[[Media:$1|$1]]''' медиясыны [$4 $3, $2 замандагъы версиясы]ны ызына къайтарыгъыз.",
+'filerevert-comment' => 'Чурум:',
+'filerevert-defaultcomment' => '$2, $1 замандагъы халына къайтарыгъыз',
+'filerevert-submit' => 'Эски халына къайтар',
+'filerevert-success' => "'''[[Media:$1|$1]]''' файл [$4 $3, $2 замандагъы халына] къайтарылды.",
+'filerevert-badversion' => 'Бу файлны берилген заман билгисине ие локал версиясы джокъду.',
+
+# File deletion
+'filedelete' => '$1 — кетериу',
+'filedelete-backlink' => '← $1',
+'filedelete-legend' => 'Файлны кетер',
+'filedelete-intro' => "'''[[Media:$1|$1]]''' файлны бютеу тарихи бла бирге кетере турасыз",
+'filedelete-intro-old' => "'''[[Media:$1|$1]]''' файлны [$4 $3, $2] замандагъы версиясын кетере турасыз.",
+'filedelete-comment' => 'Чурум:',
+'filedelete-submit' => 'Кетер',
+'filedelete-success' => "'''$1''' кетерилгенди.",
+'filedelete-success-old' => "'''[[Media:$1|$1]]''' файлны $3, $2 заманда этилген версиясы кетерилди.",
+'filedelete-nofile' => "'''$1''' джокъду.",
+'filedelete-nofile-old' => "'''$1''' ючюн белгиленнген атрибутлары бла архив версиясы джокъду.",
+'filedelete-otherreason' => 'Башха/къошакъ чурум:',
+'filedelete-reason-otherlist' => 'Башха чурум',
+'filedelete-reason-dropdown' => '*Кетериуню эм аслам тюбеген чурумлары
+** автор хакъланы бузуу
+** дубликат файл',
+'filedelete-edit-reasonlist' => 'Кетериуню чурумларын тюрлендир',
+'filedelete-maintenance' => 'Техника ишлени кёзюуюнде файлланы кетериу эм ызына къайтарыу функцияла ишлеймедиле.',
+
+# MIME search
+'mimesearch' => 'MIME бла излеу',
+'mimesearch-summary' => 'Бу бет, MIME типли файлланы сайларгъа мадар береди. Кириуню форматы: ичиндегини_типи/тюб_тип, сёз ючюн, <tt>image/jpeg</tt>.',
+'mimetype' => 'MIME-типи:',
+'download' => 'джюкле',
+
+# Unwatched pages
+'unwatchedpages' => 'Киши сынчыкъламагъан бетле',
+
+# List redirects
+'listredirects' => 'Джибериулени списогу',
+
+# Unused templates
+'unusedtemplates' => 'Хайырландырылмагъан шаблонла',
+'unusedtemplatestext' => 'Бу бет {{ns:template}} алан атында тургъан эмда башха бетлеге къошулгмаъан бетлени списогу барды. Кетериуню аллы бла, шаблоннга башха джибериулени джокоълагъыз.',
+'unusedtemplateswlh' => 'башха джибериуле',
+
+# Random page
+'randompage' => 'Къайсы болса да',
+'randompage-nopages' => '{{PLURAL:$2|Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
+
+# Random redirect
+'randomredirect' => 'Сакъланмагъан джибериу',
+'randomredirect-nopages' => '"$1" ат аланда чырт бир джибериу джокъду.',
+
+# Statistics
+'statistics' => 'Статистика',
+'statistics-header-pages' => 'Бетлени статистикалары',
+'statistics-header-edits' => 'Тюрлендириулени статистикасы',
+'statistics-header-views' => 'Къарауланы статистикалары',
+'statistics-header-users' => 'Къошулуучуланы статистикалары',
+'statistics-header-hooks' => 'Башха статистика',
+'statistics-articles' => 'Статьяла',
+'statistics-pages' => 'Бетле',
+'statistics-pages-desc' => 'Википедиягъы бютеу бетле, сюзюу бетле, джибериуле эмда башхала.',
+'statistics-files' => 'Джюкленнген файлла',
+'statistics-edits' => '{{SITENAME}} къуралгъанындан бери этилген тюрлендириуле.',
+'statistics-edits-average' => 'Хар бетдеги тюрлендириулени орта саны',
+'statistics-views-total' => 'Къараула бютеулей',
+'statistics-views-peredit' => 'Тюрлендириуге къарауну саны',
+'statistics-jobqueue' => '[http://www.mediawiki.org/wiki/Manual:Job_queue Иш кёзюуню] узунлугъу',
+'statistics-users' => 'Регистрация этилген [[Special:ListUsers|къошулуучула]]',
+'statistics-users-active' => 'Актив къошулуучула',
+'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
+'statistics-mostpopular' => 'Эм кёб къаралгъан бетле',
+
+'disambiguations' => 'Кёб магъаналы ангыламланы бетлери',
+'disambiguationspage' => 'Template:кёб магъаналылыкъ',
+'disambiguations-text' => "Бу бетле '''кёб магъаналы бетлеге''' джибериу этедиле. Аны орнуна ала белгили бир статьягъа джибериу этерге керек болурла.<br />
+[[MediaWiki:Disambiguationspage]] бетде аты салынган шаблон бетде болса, ол бет кёб магъаналы бетге саналады.",
+
+'doubleredirects' => 'Джибериу болгъан джибериуле',
+'doubleredirectstext' => 'Бу бетде башхы джибериулеге этилген джибериулени списогу барды.
+Хар тизгин биринчи неда экинчи джибериуню эмда асламысында бетни аты джазылгъан, биринчи джибериу кёргюзген, экинчи джибериуню нюзюр бети джазылады.
+<s>Юсю сызылгъан</s джазыула тюзетилген этгендиле.',
+'double-redirect-fixed-move' => '[[$1]] бет атын тюрлендиргенди, энди ол [[$2]] бетге джибериу этеди',
+'double-redirect-fixer' => 'Джибериулени тюзетиучю',
+
+'brokenredirects' => 'Халатлы джибериуле',
+'brokenredirectstext' => 'Бу джибериуле болмагъан бетлеге байлам бередиле:',
+'brokenredirects-edit' => 'тюрлендир',
+'brokenredirects-delete' => 'кетер',
+
+'withoutinterwiki' => 'Башха тиллеге байламы болмагъан бетле',
+'withoutinterwiki-summary' => 'Бу бетлени интернет-джибериулериулери джокъду:',
+'withoutinterwiki-legend' => 'Префикс',
+'withoutinterwiki-submit' => 'Кёргюз',
+
+'fewestrevisions' => 'Эм аз версиясы болгъан бетле',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|байт}}',
+'ncategories' => '$1 {{PLURAL:$1|категория|категорияла}}',
+'nlinks' => '$1 {{PLURAL:$1|джибериу|джибериу}}',
+'nmembers' => '$1 {{PLURAL:$1|объект}}',
+'nrevisions' => '$1 {{PLURAL:$1|версия|версия}}',
+'nviews' => '$1 {{PLURAL:$1|къарау|къарау}}',
+'specialpage-empty' => 'Сорма эсеб келтирмеди.',
+'lonelypages' => 'Ёксюз бетле',
+'lonelypagestext' => 'Тюбюндеги бетлеге {{SITENAME}} сайтдагъы башха бетледен джибериу берилмегенди неда ала башха бетлеге къошулмагъандыла.',
+'uncategorizedpages' => 'Категориясыз бетле',
+'uncategorizedcategories' => 'Категория салынмагъан категорияла',
+'uncategorizedimages' => 'Категория салынмагъан файлла',
+'uncategorizedtemplates' => 'Категория салынмагъан шаблонла',
+'unusedcategories' => 'Хайырланылынмагъан категорияла',
+'unusedimages' => 'Хайырланмагъан файлла',
+'popularpages' => 'Популяр бетле',
+'wantedcategories' => 'Керекли категорияла',
+'wantedpages' => 'Керекли бетле',
+'wantedpages-badtitle' => 'Сорманы эсеблеринде халатлы башлыкъ: $1',
+'wantedfiles' => 'Керекли файлла',
+'wantedtemplates' => 'Керекли шаблонла',
+'mostlinked' => 'Кесине кёб джибериу болгъан бетле',
+'mostlinkedcategories' => 'Эм кёб статьясы болгъан категорияла',
+'mostlinkedtemplates' => 'Эм кёб хайырланнган шаблонла',
+'mostcategories' => 'Эм кёб категориягъа кирген бетле',
+'mostimages' => 'Эм кёб джибериу берилген файлла',
+'mostrevisions' => 'Эм кёб тюрлендирилген бетле',
+'prefixindex' => 'Бетлени атлары башланнганына кёре кёргюзюу',
+'shortpages' => 'Къысха бетле',
+'longpages' => 'Узун бетле',
+'deadendpages' => 'Тупик бетле',
+'deadendpagestext' => 'Бу бетле,{{SITENAME}} сайтда башха бетлеге джибериу бермейдиле.',
+'protectedpages' => 'Къоруугъа алыннган бетле',
+'protectedpages-indef' => 'Къуру болджалсыз къоруу',
+'protectedpages-cascade' => 'Джангыз секиртме къоруу',
+'protectedpagestext' => 'Эндиги бетле атын ауушдуруу бла тюрлендириуден джакъланыбдыла.',
+'protectedpagesempty' => 'Бусагъатда бу параметрле бла джакъланнган бет джекъду.',
+'protectedtitles' => 'Джакъланнган башлыкъла',
+'protectedtitlestext' => 'Бу атланы хайырланыргъа эркинлик джокъду',
+'protectedtitlesempty' => 'Бусагъатда, бу параметрле бла джакъланнган башлыкъ джокъду.',
+'listusers' => 'Къошулуучуланы списогу',
+'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
+'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
+'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'usercreated' => 'Къуралгъанды: $1 $2',
+'newpages' => 'Джангы бетле',
+'newpages-username' => 'Къошулуучуну аты:',
+'ancientpages' => 'Ахыр тюрлендириуге кёре эм эски болгъан статьяла',
+'move' => 'Атын тюрлендириу',
+'movethispage' => 'Бу бетни атын тюрлендир',
+'unusedimagestext' => 'Файлла бардыла, алай а бетге джазылмагъандыла.
+Унутмагъыз, башха веб сайтланы бу файлгъа ачыкъдан URL бла джибериу берирге боллукъларын, эмда аны ючюн бу списокга киргенине къарамай актив халда хайырланыргъа боллукъду.',
+'unusedcategoriestext' => 'Бу категорияла болгъанлыкъгъа, чырт бир статья неда категория джанындан хайырланмыайдыла.',
+'notargettitle' => 'Нюзюр белгиленмегенди',
+'notargettext' => 'Бу функцияны ишлетир ючюн нюзюр бетни неда къошулуучуну белгилемегенсиз.',
+'nopagetitle' => 'Быллай нюзюр бет джокъду',
+'nopagetext' => 'Белгиленнген нюзюр бет джокъду.',
+'pager-newer-n' => '{{PLURAL:$1|1 джангыракъ|$1 джангыракъ}}',
+'pager-older-n' => '{{PLURAL:$1|1 эскирек|$1 эскирек}}',
+'suppress' => 'Джашырыу',
+
+# Book sources
+'booksources' => 'Китабланы чыкъгъан джерлери',
+'booksources-search-legend' => 'Китабны юсюнден информация излеу',
+'booksources-isbn' => 'ISBN:',
+'booksources-go' => 'Таб',
+'booksources-text' => 'Бу бетде джангы эмда эски китаб сатхан башха сайтлагъа джибериулени списогу барды, эм излеген китабларыгъызны юсюнден кёбюрек билги билирге боллукъсуз.',
+'booksources-invalid-isbn' => 'Берилген ISBN джараусуз кибик кёрюнеди; оригинал къайнакъдан кёчюрюлген заманда халатланы контроль этигиз.',
+
+# Special:Log
+'specialloguserlabel' => 'Къошулуучу:',
+'speciallogtitlelabel' => 'Башлыкъ:',
+'log' => 'Журналла',
+'all-logs-page' => 'Бютеу ачыкъ журналла',
+'alllogstext' => '{{SITENAME}} ючюн бютеу бар болгъан журналланы бирлешген списогу.
+Журнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (олда уллу-гитче харифге кёре) элерге боллукъсуз.',
+'logempty' => 'Журналлагъа келишген билги джокъду.',
+'log-title-wildcard' => 'Бу символладан башланнган башлыкъланы изле',
+
+# Special:AllPages
+'allpages' => 'Бютеу бетле',
+'alphaindexline' => '$1 бетден $2 бетге дери',
+'nextpage' => 'Эндиги бет ($1)',
+'prevpage' => 'Алдагъы бет ($1)',
+'allpagesfrom' => 'Мунга башланнган бетлени чыгъар:',
+'allpagesto' => 'Мында чыгъарыуну тохтат:',
+'allarticles' => 'Бютеу бетле',
+'allinnamespace' => '«$1» атла аламдагъы бютеу бетле',
+'allnotinnamespace' => 'Бютеу бетле ($1 аламда болмагъанла)',
+'allpagesprev' => 'Аллындагъы',
+'allpagesnext' => 'Эндиги',
+'allpagessubmit' => 'Тындыр',
+'allpagesprefix' => 'Былайда джазгъан харифледен башланнган бетлени список эт:',
+'allpagesbadtitle' => 'Кирилген бет аты тиллени арасы байлм неда викилени арасында байлам болгъаны себебли джараусузду. Башлыкълада хайырланыуу джасакъ болгъан бир неда андан аслам символ тутаргъа болур.',
+'allpages-bad-ns' => '{{SITENAME}} сайтда "$1" ат аламы джокъду.',
+
+# Special:Categories
+'categories' => 'Категорияла',
+'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|категория|категорияла}} бет неда медия-файл тутадыла.
+[[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.
+Дагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.',
+'categoriesfrom' => 'Бу бла башланнган категорияланы кёргюз:',
+'special-categories-sort-count' => 'санына кёре сафла',
+'special-categories-sort-abc' => 'алфавит халда тиз',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Кетерилген къошулуучуну къошхан юлюшю',
+'deletedcontributions-title' => 'Кетерилген къошулучуну къошхан юлюшю',
+'sp-deletedcontributions-contribs' => 'къошхан юлюш',
+
+# Special:LinkSearch
+'linksearch' => 'Тыш джибериуле',
+'linksearch-pat' => 'Излеуге шаблон:',
+'linksearch-ns' => 'Ат алам:',
+'linksearch-ok' => 'Таб',
+'linksearch-text' => '"*.wikipedia.org" кибик джокерле хайырландырыргъа боллукъду.<br />
+Дагъан болгъан протоколла: <tt>$1</tt>',
+'linksearch-line' => '$1-ге $2-ден джибериу берилгенди',
+'linksearch-error' => 'Джокерле къуру адреслени аллында хайырланыргъа боллукъдула.',
+
+# Special:ListUsers
+'listusersfrom' => 'Бу бла башланнган къошулуучуланы кёргюз:',
+'listusers-submit' => 'Кёргюз',
+'listusers-noresult' => 'Къошулуучула табылмадыла.',
+'listusers-blocked' => '(блокга салыныбды)',
+
+# Special:ActiveUsers
+'activeusers' => 'Актив къошулуучуланы списогу',
+'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы списогуду.',
+'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
+'activeusers-hidebots' => 'Ботланы джашыр',
+'activeusers-hidesysops' => 'Администраторланы джашыр',
+'activeusers-noresult' => 'Къошлуучу табылмады.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Къошулуучуланы регистрацияларыны журналы',
+'newuserlogpagetext' => 'Кёб болмай регистрация этген къошулуучуланы списогу.',
+'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
+'newuserlog-create-entry' => 'Джангы къошулуучу
+Джангы къошулуучу',
+'newuserlog-create2-entry' => '$1 джангы тергеу джазыуну къурады',
+'newuserlog-autocreate-entry' => 'Тергеу джазыу (аккаунт) автомат халда къуралды',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Къошулуучуланы къауумуну хакълары',
+'listgrouprights-summary' => 'Тюбюндеги бу викиде танылгъан къошулуучу къауумланы эмда аланы хакъларыны списогу.
+Энчи хакъла бла байламлы [[{{MediaWiki:Listgrouprights-helppage}}|асламыракъ билги]] болургъа болур.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Берилген хакъла</span>
+* <span class="listgrouprights-revoked">Сыйырылгъан хакъла</span>',
+'listgrouprights-group' => 'Къауум',
+'listgrouprights-rights' => 'Хакъла',
+'listgrouprights-helppage' => 'Help:Къауумланы хакълары',
+'listgrouprights-members' => '(группаны списогу)',
+'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>',
+'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>',
+'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
+'listgrouprights-removegroup' => 'бу {{PLURAL:$2|къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
+'listgrouprights-addgroup-all' => 'Бютеу къауумлагъа къошаргъа боллукъду',
+'listgrouprights-removegroup-all' => 'бютеу къауумладан къыстаргъа боллукъду',
+'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|къауум|къауумла}} къошаллыкъды: $1',
+'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|къауум|къауумланы}} къораталлыкъды: $1',
+'listgrouprights-addgroup-self-all' => 'Бютеу къауумланы кесини тергеу джазыууна къошаллыкъды',
+'listgrouprights-removegroup-self-all' => 'Кесини тергеу джазыуундан бютеу къауумланы къораталлыкъды',
+
+# E-mail user
+'mailnologin' => 'Джиберирге адрес джокъду',
+'mailnologintext' => 'Башха къошулуучулагъа эл. почта джиберелир ючюн [[Special:UserLogin|системагъа кирирге]] керексиз эм [[Special:Preferences|джарашдырыуланы]] бетинде джараулу эл. почта адрес болургъа керекди.',
+'emailuser' => 'Къошулуучугъа письмо',
+'emailpage' => 'Къошулуучугъа письмо джибер',
+'emailpagetext' => 'Бу къошулуучуну почтасына письмо джиберир ючюн бу форманы толтурургъа боллукъсуз.
+Ызына адрес болуб, сиз [[Special:Preferences|джарашдырыуларыгъызда]] джазгъан адрес белгиленникди, ол себебден сизни письмогъузну аллыкъ сизге тюз джууаб берирге мадарлы боллукъду.',
+'usermailererror' => 'Халат ючюн элетктрон письмо ызына къайтды:',
+'defemailsubject' => '{{SITENAME}} письмо',
+'noemailtitle' => 'Электрон почтаны адреси джокъду',
+'noemailtext' => 'Бу къошулуучу керти электрон адресин бермегенди.',
+'nowikiemailtitle' => 'Электрон письмо джиберирге эркинлик джокъду',
+'nowikiemailtext' => 'Бу къошулуучу, башха къошулуучуладан электрон писмо алыргъа излемегенин билдиргенди.',
+'email-legend' => 'Башха {{SITENAME}} къошулуучугъа электрон письмо джибер',
+'emailfrom' => 'Кимден:',
+'emailto' => 'Кимге:',
+'emailsubject' => 'Тема:',
+'emailmessage' => 'Билдириу:',
+'emailsend' => 'Джибер',
+'emailccme' => 'Письмону копиясын меннге джибер',
+'emailccsubject' => '$1-ге джиберилген письмону копиясы: $2',
+'emailsent' => 'Письмо джиберилди',
+'emailsenttext' => 'Сизни электрон билдириуюгюз джиберилгенди.',
+'emailuserfooter' => 'Бу письмо $1 джанындан $2 къошулуучугъа, {{SITENAME}} сайтдагъы "Къошулуучугъу письмо джибер" функциясы бла джиберилгенди.',
+
+# Watchlist
+'watchlist' => 'сынчыкълау списогум',
+'mywatchlist' => 'Сынчыкълау списогум',
+'watchlistfor' => "('''$1''' ючюн)",
+'nowatchlist' => 'Сынчыкълау списогугъуз бошду.',
+'watchlistanontext' => 'Сынчыкълау списогугъуздагъы статьяланы кёрюр неда тюрлендирир ючюн $1.',
+'watchnologin' => 'Системагъа кирирге керекди.',
+'watchnologintext' => 'Сынчыкълама списогугъузну тюрлендирир ючюн [[Special:UserLogin|системагъа кирирге керексиз]].',
+'addedwatch' => 'Сынчыкълау бетге къош',
+'addedwatchtext' => '«[[:$1]]» бет [[Special:Watchlist|сынчыкълау бетигизге]] къошулду.
+Бу бетни эмда муну бла байламлы сюзюу бетни тюрлениулери ол списокда белгиленникдиле, [[Special:RecentChanges|джангы тюрлениулени списогуну]] бетинде уа къалын шрифт бла чертилинникдиле, кёрюрге тынчыракъ болурча.',
+'removedwatch' => 'Сынчыкълау бетден кетерилди',
+'removedwatchtext' => '«[[:$1]]» бет сизни [[Special:Watchlist|сынчыкълау списогугъуздан]] кетерилгенди.',
+'watch' => 'Сынчыкъла',
+'watchthispage' => 'Бу бетни сынчыкъла',
+'unwatch' => 'Сынчыкълама',
+'unwatchthispage' => 'Сынчыкълауну тохтат',
+'notanarticle' => 'Статья тюлдю',
+'notvisiblerev' => 'Версия кетерилгенди',
+'watchnochange' => 'Къаралгъан кёзюуде, сынчыкълау списокдан чырт бир тюрленмегенди.',
+'watchlist-details' => 'Сынчыкълау списогугъузда, сюзюу бетлени санамай, {{PLURAL:$1|$1 бет|$1 бет}} барды.',
+'wlheader-enotif' => '* Эл. почта бла хапар бериу джандырылыбды.',
+'wlheader-showupdated' => "* Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
+'watchmethod-recent' => 'сынчыкъланнган бетледе этилген ахыр тюрлениуле контроль этиледиле',
+'watchmethod-list' => 'сынчыкъланнган бетледе этилген ахыр тюрлениуле контроль этиледиле',
+'watchlistcontains' => 'Сынчыкълау списогугъузда $1 {{PLURAL:$1|бет|бет}} барды.',
+'iteminvalidname' => "'$1' элемент бла проблемала, джараусуз ат...",
+'wlnote' => "Ахыр {{PLURAL:$2|бир сагъатха|'''$2''' сагъатха}} этилген {{PLURAL:$1|ахыр тюрлениу|ахыр '''$1''' тюрлениу}} тюбюндеди.",
+'wlshowlast' => 'Арт $1 сагъат $2 кюннге $3 кёргюз',
+'watchlist-options' => 'Сынчыкълау списокну джарашдырыулары',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Сынчыкълау списокга къошуу...',
+'unwatching' => 'Сынчыкълау списокдан кетериу...',
+
+'enotif_mailer' => '{{SITENAME}} Билдириу Почта',
+'enotif_reset' => 'Бютеу бетлени къаралгъанча белгиле',
+'enotif_newpagetext' => 'Бу джангы бетди',
+'enotif_impersonal_salutation' => '{{SITENAME}} къошулуучу',
+'changed' => 'тюрленди',
+'created' => 'къуралды',
+'enotif_subject' => '{{SITENAME}} бет $PAGETITLE, $PAGEEDITOR джанындан $CHANGEDORCREATED этилгенди.',
+'enotif_lastvisited' => 'Ахыр кириуюгюзден бу кереге дери болгъан бютеу тюрлениулени кёрюр ючюн $1-ге къара.',
+'enotif_lastdiff' => 'Бу тюрлениуню кёрюр ючюн, $1 бетге къарагъыз.',
+'enotif_anon_editor' => 'аноним къошулуучу $1',
+'enotif_body' => 'Багъалы $WATCHINGUSERNAME,
+
+{{SITENAME}} сайтдагъы $PAGETITLE башлыкълы бет $PAGEEDITDATE заманда $PAGEEDITOR джанындан $CHANGEDORCREATED тюзетилгенди неда тюрледирилгенди. Бетни ахыр халына $PAGETITLE_URL адресден кирирге боллукъсуз.
+
+$NEWPAGE
+
+Тюрлендириуню этген къошлуучуну ангылатыуу: $PAGESUMMARY $PAGEMINOREDIT
+
+Бетни тюрлендирген къошулуучуну билгилери:
+эл. почта: $PAGEEDITOR_EMAIL
+вики: $PAGEEDITOR_WIKI
+
+Бу бетге киргинчигизге дери бу бет бла байламлы башха тюрлендириулени юсюнден хапар джибериллик тюлдю. Санчыкълау списогугъуздагъу бютеу бетлени билдириу джибериу опцияларын джукълаталлыкъсыз.
+
+{{SITENAME}} сайтны билдириу системасы.
+
+--
+
+Джарашдырыуланы тюрлендирир ючюн:
+{{fullurl:Special:Watchlist/edit}}
+
+Сынчыкълау списокдан кетерир ючюн:
+$UNWATCHURL
+
+Болушлукъ эм теджеуле ючюн:
+{{fullurl:{{MediaWiki:Helppage}}}}',
+
+# Delete
+'deletepage' => 'Бетни кетер',
+'confirm' => 'Къабыл эт',
+'excontent' => 'ичиндеги: $1',
+'excontentauthor' => "ичиндеги: '$1' ('[[Special:Contributions/$2|$2]] юлюш къошхан джангыз къошулуучу болгъанды)",
+'exbeforeblank' => "Кетериуню алындагъы ичи: '$1'",
+'exblank' => 'бет бош эди',
+'delete-confirm' => '"$1" кетер',
+'delete-backlink' => '← $1',
+'delete-legend' => 'Кетер',
+'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|версиялы|версиялы}} тарихи барды:",
+'confirmdeletetext' => 'Сиз бетни (неда суратны) бютеу тюрлениу тарихи бла толу кетерирге соргъансыз.
+Алай этерге керти излегенигизни эм [[{{MediaWiki:Policy-url}}кетериу политика]] бёлюмде ачыкъланнган джорукъла бла этгенигизни, бегитигиз.',
+'actioncomplete' => 'Этим толтурулду',
+'actionfailed' => 'Этим джетишимсиз болду',
+'deletedtext' => '«<nowiki>$1</nowiki>» бет кетерилди.
+Ахыр кетерилгенлени списогун кёрюр ючюн, $2на къарагъыз.',
+'deletedarticle' => '«[[$1]]» кетерилди',
+'suppressedarticle' => '"[[$1]]" джашырылды',
+'dellogpage' => 'Кетерилгенлени журналы',
+'dellogpagetext' => 'Тюбюндеги список ахыр кетериулени журналыды.',
+'deletionlog' => 'кетериулени журналы',
+'reverted' => 'Алгъынгы версиясына къайтарылгъанды',
+'deletecomment' => 'Чурум:',
+'deleteotherreason' => 'башха чурум / дагъыда:',
+'deletereasonotherlist' => 'Башха чурум',
+'deletereason-dropdown' => '* Кетериуню баш чурумлары
+** Авторну тилеги
+** Автор хакъланы бузуу
+** Вандализм',
+'delete-edit-reasonlist' => 'Чурумланы списогут тюрлендир',
+'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|версияла|версияла}} бла бек узун тарихи барды.
+Быллай бетлени кетерилиую, {{SITENAME}} сайтны бузмаз ючюн чекленгенди.',
+'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|версиядан|версиядан}} артыкъ.
+Буну кетериу {{SITENAME}} ишлеулени асхатыргъа боллукъду;
+эсгере андан ары ишлегиз.',
+
+# Rollback
+'rollback' => 'Тюрлендириулени ызына ал',
+'rollback_short' => 'Ызына ал',
+'rollbacklink' => 'ызына къайтарыу',
+'rollbackfailed' => 'Ызына алыу джетишимсизди',
+'cantrollback' => 'Бетге ахыр юлюш къошхан къошулуучу, бетге юлюшюн къошхан джангыз адам болгъаны себебли, тюрлендириуле ызына алыналмайдыла.',
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) джанындан [[:$1]] бетде этилген ахыр тюрлендириу ызына алыналмайды;
+башха бири бетде тюрлендириу этди неда бетни ызына алды.
+
+Ахыр тюрлендириуюню этген: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Тюрлениу былай ангылатылгъанды: \"''\$1''\"",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|сюзюу]]) къошулуучуну тюрлендириулери кетерилиб, [[User:$1|$1]] къошулуучуну версиясы къайтарылды.',
+'revertpage-nouser' => 'Тюрлендириуле (къошулуучуну аты кетерилгенди) [[User:$1|$1]] къошулуучуну версиясына къайтарылдыла',
+'rollback-success' => '$1 этген тюрлендириуле ызына алыныб;
+$2 тюрлендирген алгъаракъ версиясына къайтылды.',
+'sessionfailure' => 'Ишни бу сеансы бла проблемала болгъаннга ушайды;
+бу этим "сеансны гудулаууна" къаршчылыкъ этилир ючюн тохтатылгъанды.
+Тилейбиз, "Ызына" деген тиекни басыгъыз эмда сиз кирген бетни джангыдан джюклегиз.',
+
+# Protect
+'protectlogpage' => 'Джакъланыуну журналы',
+'protectlogtext' => 'Къоруугъа алыу/чыгъарыу бла байламлы тюрлениулени кёресиз.
+Андан аслам билги ючюн [[Special:ProtectedPages|Коруугъа алыннган бетле]] атлы бетге къараргъа боллукъсуз.',
+'protectedarticle' => '«[[$1]]» джакъланыбды',
+'modifiedarticleprotection' => '"[[$1]]" бетни джакъланыу дараджасы тюрленилгенди',
+'unprotectedarticle' => '"[[$1]]" бетден къоруулау алыннганды',
+'movedarticleprotection' => 'Къоруулауну джарашдырыулары "[[$2]]" бетден "[[$1]]" бетге кёчюрюлгенди',
+'protect-title' => '"$1" ючюн къоруулау дараджаны сайлагъыз',
+'prot_1movedto2' => '[[$1]] бетни джангы аты: [[$2]]',
+'protect-backlink' => '← $1',
+'protect-legend' => 'Къоруулауну къабыл эт',
+'protectcomment' => 'Чурум:',
+'protectexpiry' => 'Бошалады:',
+'protect_expiry_invalid' => 'Джакъланыуну бошалгъан заманы терсди.',
+'protect_expiry_old' => 'Джакъланыу бошалгъанны заманы озгъанда.',
+'protect-unchain-permissions' => 'Къоруулауну къошакъ параметрлерини ачыгъыз',
+'protect-text' => "Былайда сиз '''<nowiki>$1</nowiki>''' бетни джакълау дараджасына къараб тюрлендирирге боллукъсуз.",
+'protect-locked-blocked' => "Тергеу джазыуугъуз джасакъ болса, бетни къоруулауну дараджасын тюрлендиреллик тюлсюз.
+'''$1''' бетдеги бусагъатдагъы параметрле:",
+'protect-locked-dblock' => "Актив билги базаны киритленнгени себебли, коъруулау параметрлени тюрлендиреллик тюлсюз.
+'''$1''' бет ючюн бусагъатдагъы параметрле:",
+'protect-locked-access' => "Сизге хакъ джетмейди бетни джакълау дараджасын тюрлендирирге. '''$1''' бетни бусагъатдагъы джакълау джарашдырыулары:",
+'protect-cascadeon' => 'Бу бет {{PLURAL:$1|тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
+'protect-default' => 'Джакълаусуз',
+'protect-fallback' => '«$1» эркинлик керекди',
+'protect-level-autoconfirmed' => 'Джангы эм регистрация этмеген къошулуучуладан джакъла',
+'protect-level-sysop' => 'Къуру администраторла',
+'protect-summary-cascade' => 'каскадлы',
+'protect-expiring' => 'бошалады $1 (UTC)',
+'protect-expiry-indefinite' => 'болджалсыз',
+'protect-cascade' => 'Бу бетге кирген бетлени джакъла (каскадлы джакълау)',
+'protect-cantedit' => 'Сиз бу бетни джакълау дараджасын тюрлендиреллик тюйюлсюз, бу бетни тюрлендирирге хакъыгъыз болмагъаны ючюн.',
+'protect-othertime' => 'Башха заман:',
+'protect-othertime-op' => 'башха заман',
+'protect-existing-expiry' => 'Бошалыуну бусагъатдагъы заманы: $3, $2',
+'protect-otherreason' => 'Башха/къошакъ чурум:',
+'protect-otherreason-op' => 'Башха чурум',
+'protect-dropdown' => '*Асламысы бла джюрюген къоруулау чурумла
+** Тохтаусуз вандализм
+** Тохтаусуз спам
+** Тюрлендириулени урушу
+** Мийик трафикли бет',
+'protect-edit-reasonlist' => 'Чурумланы списогун тюрлендир',
+'protect-expiry-options' => '1 сагъат:1 hour,1 кюн:1 day,1 ыйыкъ:1 week,2 ыйыкъ:2 weeks,1 ау:1 month,3 ау:3 months,6 ау:6 months,1 джыл:1 year,болжалсыз:infinite',
+'restriction-type' => 'Хакълары:',
+'restriction-level' => 'Ийилген дараджасы:',
+'minimum-size' => 'Минимум ёлчеми',
+'maximum-size' => 'Максимум ёлчем:',
+'pagesize' => '(байт)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Тюрлендириу',
+'restriction-move' => 'Атын тюрлендир',
+'restriction-create' => 'Къура',
+'restriction-upload' => 'Джюкле',
+
+# Restriction levels
+'restriction-level-sysop' => 'толу къоруу',
+'restriction-level-autoconfirmed' => 'джарым къоруу',
+'restriction-level-all' => 'бютеу джараджала',
+
+# Undelete
+'undelete' => 'кетерилген бетлени кёргюз',
+'undeletepage' => 'Кетерилген бетлени къара эмда ызына къайтар.',
+'undeletepagetitle' => "'''Тюбюнде [[:$1|$1]] бетни кетерилген версиялары кёрюннгенди'''.",
+'viewdeletedpage' => 'Кетерилген бетлеге къара',
+'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
+Архив кёзюулю ариуланыргъа болады.',
+'undelete-fieldset-title' => 'Версияны ызына джюкле',
+'undeleteextrahelp' => "Бетле бла бирге тарихини ызына къайтарыр ючюн бютеу белгилени бош къоюгъузда '''Ызына къайтар''' тиекден басыгъыз. Бетни тарихини башха-башха къайтарыр ючюн къайтарыргъа излеген тюрлендириулени белгилеб '''Ызына къайтар''' тиекден басыгъыз. Сайланнган белгилени эм комментарийлени кетерир ючюн '''Ариула''' тиекден басыгъыз.",
+'undeleterevisions' => '$1 {{PLURAL:$1|версия|версия}} архив этилди',
+'undeletehistory' => 'Сиз бетни ызына къайтарсагъыз, аны тюрлендириу тарихи да ызына къайтады.
+Кетерилгенден сора ол ат бла джангы бет къуралса, ызына къайтхан версияла джангы версиланы аллында тюрлендириуню тарихинде чыгъарыкъдыла.',
+'undeleterevdel' => 'Ызына къайтарыу, ахыр версияны неда файлны бузаргъа болса, тохтатыллыкъды.
+Быллай болумда, эм джангы кетерилген версияны сайлагъыз неда джашырыууну кетеригиз.',
+'undeletehistorynoadmin' => 'Бу статья кетерилгенди. Кетериу чуруму бла кетериуню аллында статьяны джарашдыргъан къошулуучуланы юсюнден ангылатыу тюбюрек берилгенди. Бу кетерилген статьяны текстин джангыз администраторла къараяллыкъдыла.',
+'undelete-revision' => '$3 этген $1 бетни кетерилген версиясы ($4 $5):',
+'undeleterevision-missing' => 'Джараусуз неда тас версия.
+Версия архивден кетерилген неда джибериу терс болургъа болур.',
+'undelete-nodiff' => 'Аллындагъы версиясы табылмады.',
+'undeletebtn' => 'Ызына къайтар',
+'undeletelink' => 'къара/ызына сал',
+'undeleteviewlink' => 'кёргюз',
+'undeletereset' => 'Ариула',
+'undeleteinvert' => 'Сайлауну ызына бур',
+'undeletecomment' => 'Чурум:',
+'undeletedarticle' => '«[[$1]]» орнуна келтирилди',
+'undeletedrevisions' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}} ызына къайтарылды',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 версия|$1 версия}} бла {{PLURAL:$2|1 файл|$2 файл}} ызына къайтарылды',
+'undeletedfiles' => '{{PLURAL:$1|1 файл|$1 файл}} ызына къайтарылды',
+'cannotundelete' => 'Бетни неда медианы сизден алгъа башха къошулуучу ызына къайтаргъаны себебли сизини ызына къайтарыу ишлемигиз джараусузду.',
+'undeletedpage' => "'''$1 бет ызына къайтарылды '''
+
+Ахыр кетериу бла ызына къайтарыуну кёрюр ючюн [[Special:Log/delete|кетериуню журнал]]ына къарагъыз.",
+'undelete-header' => 'Кёб болмай кетерилген бетлени кёрюр ючюн [[Special:Log/delete|кетериу журнал]]гъа къарагъыз.',
+'undelete-search-box' => 'Кетерилген бетлени изле',
+'undelete-search-prefix' => 'Буну бла башланнган бетлине кёргюз:',
+'undelete-search-submit' => 'Изле',
+'undelete-no-results' => 'Кетериуню архивинде келишген бет табылмагъанды.',
+'undelete-filename-mismatch' => '$1 заман билгиси болгъан файлны ызына къайтарыр мадар джокъду: файлны аты келишмейди',
+'undelete-bad-store-key' => '$1 заман билгиси болгъан файлны ызына къайтарыр мадар джокъду: кетируню аллында файл тас болгъанды.',
+'undelete-cleanup-error' => 'Хайырланмагъан "$1" архив файлны кетериуде халат.',
+'undelete-missing-filearchive' => 'Файлны архив ID-си билги базада болмагъаны себебли, "$1" ызына къатарылалмайды.',
+'undelete-error-short' => 'Бу файлны кетериуюню ызына алыныуда халат чыкъды: $1',
+'undelete-error-long' => 'Бу файлны кетерилиуюню ызына къайтарыуда халатла чыкъдыла:
+
+$1',
+'undelete-show-file-confirm' => '"<nowiki>$1</nowiki>" файлны $2 $3 замандагъы кетерилген версиясын кёрюрге излегенигизге ишексизмисиз?',
+'undelete-show-file-submit' => 'Хоу',
+
+# Namespace form on various pages
+'namespace' => 'Атла алам:',
+'invert' => 'Сайланнганны айландыр',
+'blanknamespace' => '(Баш)',
+
+# Contributions
+'contributions' => 'Къошулуучуну къошханы',
+'contributions-title' => '$1 къошулуучуну къошагъы',
+'mycontris' => 'Мени къошханым',
+'contribsub2' => '$1 ($2) къошакъ',
+'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
+'uctop' => '(ахыргъы)',
+'month' => 'Айдан башлаб (эм алгъаракъ):',
+'year' => 'Джылдан башлаб (эм алгъаракъ):',
+
+'sp-contributions-newbies' => 'Джангы тергеу джазыу (аккаунт) бла этилге къошакъны кёргюз',
+'sp-contributions-newbies-sub' => 'Джангы тергеу джазыуладан (аккаунтладан)',
+'sp-contributions-newbies-title' => 'Джангы тергеу джазыуладан этилген къошакъ',
+'sp-contributions-blocklog' => 'Блок этиуню журналы',
+'sp-contributions-deleted' => 'къошулуучуну кетерилген тюрлендириулери',
+'sp-contributions-logs' => 'журналла',
+'sp-contributions-talk' => 'сюзюу',
+'sp-contributions-userrights' => 'къошулуучуну хакъларына оноу этиу',
+'sp-contributions-blocked-notice' => 'Бу къошулуучу бусагъатда блокланыб турады. Тюбюнде блокланыуланы журналындан ахыр джазыу бериледи:',
+'sp-contributions-search' => 'Къошакъны излеу',
+'sp-contributions-username' => 'Къошулуучуну IP-адреси неда аты:',
+'sp-contributions-submit' => 'Таб',
+
+# What links here
+'whatlinkshere' => 'Былайгъа джибериуле',
+'whatlinkshere-title' => '«$1» бетге джиберген бетле',
+'whatlinkshere-page' => 'Бет:',
+'linkshere' => "'''[[:$1]]''' битге джиберген бетле:",
+'nolinkshere' => "'''[[:$1]]'' бетге башха бетле джибермейдиле.",
+'nolinkshere-ns' => "Сайланнган атла аламда '''[[:$1]]''' бетге джиберген бет джокъду.",
+'isredirect' => 'джибериу бет',
+'istemplate' => 'къошуу',
+'isimage' => 'суратха джибериу',
+'whatlinkshere-prev' => '{{PLURAL:$1|алдагъы|алдагъы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|эндиги|эндиги $1}}',
+'whatlinkshere-links' => '← джибериуле',
+'whatlinkshere-hideredirs' => 'джибериуле $1',
+'whatlinkshere-hidetrans' => 'Къошулуулары $1',
+'whatlinkshere-hidelinks' => '$1 джибериуле',
+'whatlinkshere-hideimages' => 'Суратлагъа джибериуле $1',
+'whatlinkshere-filters' => 'Фильтрле',
+
+# Block/unblock
+'blockip' => 'Бу къошулуучуну блок эт',
+'blockip-title' => 'Къошулуучуну блокга салыу',
+'blockip-legend' => 'Къошулуучуну блокга салыу',
+'blockiptext' => 'Тюбюндеги форманы хайырланыб белгили бир IP-ден неда регистрация этилген къошулуучуну тюрлениу этиуюню тыяллыкъсыз. Бу, джангыз вандализмни тыяр ючюн эм [[{{MediaWiki:Policy-url}}|джорукълагъа]] келишиулю этилирге керекди. Тюбюрек тыйыу бла байламлы ангылатыу джазыгъыз. (юлгю: -Бу- бетледе вандализм этилгенди).',
+'ipaddress' => 'IP-адрес:',
+'ipadressorusername' => 'IP-адрес неда къошулуучу ат:',
+'ipbexpiry' => 'Бошаллыкъды (ётсе):',
+'ipbreason' => 'Чурум:',
+'ipbreasonotherlist' => 'Башха чурум:',
+'ipbreason-dropdown' => '* Тыйылыуну асламысында тюбеген чурумлары
+** Джалгъан билги къошуу
+** Бетлени ичиндегин кетериу
+** Тыш спам-сайтлагъа джибериу бериу
+** Бетлеге магъанасыз/ангыламсыз джазмала къошуу
+** Къошулуучуланы къоркъутургъа излеу
+** Талай тергеу джазыу къураб аманлыкъгъа хайырланыу
+** Джарамагъан къошулуучу ат',
+'ipbanononly' => 'Къуру аноним къошулуучуланы тый',
+'ipbcreateaccount' => 'Джангы тергеу джазыу къурауну тый',
+'ipbemailban' => 'Къошулуучуну эл. почта бла письмо джибериуюне тыйгъыч бол',
+'ipbenableautoblock' => 'Бу къошулуучуну джанындан хайырланнган ахыр IP адресни эм тюрлениу этерге кюрешген IP-лени автомат халда тый',
+'ipbsubmit' => 'Бу адресни/къошулуучуну блокга сал',
+'ipbother' => 'Башха заман:',
+'ipboptions' => '2 сагъат:2 hours,1 кюн:1 day,3 кюн:3 days,1 ыйыкъ:1 week,2 ыйыкъ:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 джыл:1 year,болджалсыз:infinite',
+'ipbotheroption' => 'башха',
+'ipbotherreason' => 'Башха/къошакъ чурум:',
+'ipbhidename' => 'Къошулуучуну атын тюрлендириуле бла спиоскладан джашыр',
+'ipbwatchuser' => 'Бу къошулуучуну къошулуучу эмда сюзюу бетлерин сынчыкълау списогунга къош',
+'ipballowusertalk' => 'Бу къошулуучуну тыйылыуда тургъан заманда кесини сюзюу бетинде тюрлениуле этерге эркинлик бер',
+'ipb-change-block' => 'Бу джарашдырыула бла къошулуучуну джангыдан тый',
+'badipaddress' => 'Терс IP-адрес',
+'blockipsuccesssub' => 'Тыйыу джетишимли болду',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] тыйылды. <br />
+Тыйыуланы кёрюр ючюн [[Special:IPBlockList|тыйылгъан IP-адреслени списогуна]] къарагъыз.',
+'ipb-edit-dropdown' => 'Чурумланы списогун тюрлендир',
+'ipb-unblock-addr' => '$1 блокдан ал',
+'ipb-unblock' => 'Къошулуучуну неда IP-адресни тыйылыуун тохтат',
+'ipb-blocklist-addr' => '$1 ючюн бусагъатдагъы тыйгъычла',
+'ipb-blocklist' => 'Бусагъатдагъы болгъан тыйгъычланы кёргюз',
+'ipb-blocklist-contribs' => '$1 къошулуучуну къошханы',
+'unblockip' => 'Къошулуучуну тыйгъыч этиуню тохтат',
+'unblockiptext' => 'Алгъаракъ тыйылгъан IP-адресге неда къошулуучюге джазар эркинликни къайтарыргъа излей эсенг, тюбюндеги форманы хайырландыр.',
+'ipusubmit' => 'Бу тыйгъычны кетер',
+'unblocked' => '[[User:$1|$1]]- тыйылыу тохтатылгъанды',
+'unblocked-id' => '$1 тыйылыу къоратылгъанды',
+'ipblocklist' => 'Блок этилиннген IP-адресле эм къошулуучуланы атлары',
+'ipblocklist-legend' => 'Тыйылгъан къошулуучуну аты',
+'ipblocklist-username' => 'Къошулуучуну аты неда IP-адреси:',
+'ipblocklist-sh-userblocks' => 'Тергеу джазыуланы блокга салыу $1',
+'ipblocklist-sh-tempblocks' => 'Болджаллы блокга салыула $1',
+'ipblocklist-sh-addressblocks' => 'Айыры IP-адреслени блокга салыу $1',
+'ipblocklist-submit' => 'Таб',
+'ipblocklist-localblock' => 'Локал блокга салыу',
+'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|блокга салыу|блокга салыула}}',
+'blocklistline' => '$1, $2 блокга салынды: $3 ($4)',
+'infiniteblock' => 'Болджалсыз блокга салыу',
+'expiringblock' => '$1 $2 бошаллыкъды',
+'anononlyblock' => 'къуру анонимле',
+'noautoblockblock' => 'автомат блокга салыу джукъланыбды',
+'createaccountblock' => 'тергеу джазыула къураргъа болмайды',
+'emailblock' => 'e-mail иерге болмайды',
+'blocklist-nousertalk' => 'кесини сюзюу бетин тюрлендирелмейди',
+'ipblocklist-empty' => 'Блокга салыуланы списогу бошду.',
+'ipblocklist-no-results' => 'Берилген IP-адрес неда къошулуучу ат блокга салынмагъанды.',
+'blocklink' => 'блок эт',
+'unblocklink' => 'блокну ал',
+'change-blocklink' => 'блок этиуню тюрлендир',
+'contribslink' => 'къошакъ',
+'autoblocker' => 'Сизни IP-адресигиз "[[User:$1|$1]]" хайырланнган адрес болгъаны себебли,автомат халда тыйылдыгъыз. $1 атлы къошулуучуну тыйылыу чуруму: "\'\'\'$2\'\'\'"',
+'blocklogpage' => 'Блок этиуню журналы',
+'blocklog-showlog' => 'Бу къошулуучу мындан алгъа тыйылгъанды.
+Тыйылыуну журналы тюбюрек кёргюзюлгенди:',
+'blocklog-showsuppresslog' => 'Бу къошулуучу мындан алгъа тыйылгъанды эмда джашырылгъанды.
+Джашырыу журналны кёрюр ючюн тюбюрек къарагъыз:',
+'blocklogentry' => '[[$1]] блок этилингенди $2 заманнга $3',
+'reblock-logentry' => '[[$1]] ючюн бошалыу заманын $2 $3 этиб тыйыу джарашдырыуларын тюрлендирди',
+'blocklogtext' => 'Къошулуучуланы тыйылыу бла тыйылыудан чыгъарыуну журналы.
+Автомат халда тыйылгъан IP-адресле былайда кёргюзюлмейдиле.
+Банла бла блокланы кёрюр ючюн [[Special:IPBlockList|IP блок списогуна]] къарагъыз.',
+'unblocklogentry' => '$1 къошулуучудан блок алынды',
+'block-log-flags-anononly' => 'джангыз аноним къошулуучула',
+'block-log-flags-nocreate' => 'Тергеу джазыуланы (аккаунтланы) регистрациялары тыйылыбды',
+'block-log-flags-noautoblock' => 'автоблок джукъланыбды',
+'block-log-flags-noemail' => 'e-mail джибериу амал блокга салыннганды',
+'block-log-flags-nousertalk' => 'кесини сюзюу бетин тюрлендирелмейди',
+'block-log-flags-angry-autoblock' => 'кенгерилген автоблок джандырылгъанды',
+'block-log-flags-hiddenname' => 'къошулуучуну аты джашырыбды',
+'range_block_disabled' => 'Администратор джанындан диапазонланы джукълатыу джасакъ этилгенди.',
+'ipb_expiry_invalid' => 'Бошалыу заманы терс белгиленнгенди.',
+'ipb_expiry_temp' => 'Джашыртын къошулуучуну атыны тыйылыуу болджалсыз болургъа керекди.',
+'ipb_hide_invalid' => 'Бу тергеу джазыуну джашырыр мадар джокъду; асыры кёб тюрлендириу болургъа болур.',
+'ipb_already_blocked' => '«$1» блокга салыныбды',
+'ipb-needreblock' => '== Алайсызда тыйыбылды ==
+$1 алайсызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймисиз?',
+'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|блок|блокла}}',
+'ipb_cant_unblock' => 'Халат: Блок ID $1 табылмагъанды.
+Блок къоратылгъан болур.',
+'ipb_blocked_as_range' => 'Халат: $1 IP-адрес ачыкъдан тыйылмагъаны себебли, блокдан чыгъараллыкъ тюлсюз.
+Алай а, бу $2 диапазонну кесеги кибик тыйылгъанды, диапазонну блокдан чыгъарыргъа боллукъсуз.',
+'ip_range_invalid' => 'Джараусуз IP диапазон.',
+'ip_range_toolarge' => '/$1 кёб диапазонланы блокга салыргъа джарамайды.',
+'blockme' => 'Мени блокга сал',
+'proxyblocker' => 'Проксилени тыйыу',
+'proxyblocker-disabled' => 'Бу функция джукълатылыбды.',
+'proxyblockreason' => 'IP-адресигиз ачыкъ прокси болгъаны ючюн тыйылдыгъыз.
+Тилейбиз, кесигизни интернет-провайдеригиз бла, неда дагъан болгъан къуллукъла бла байланыб, къоркъуусузлукъну бу проблемасын билдиригиз.',
+'proxyblocksuccess' => 'Тындырылды.',
+'sorbsreason' => 'IP-адресигиз, {{SITENAME}} сайтда хайырланнган DNSBL-де ачыкъ прокси кибик саналады.',
+'sorbs_create_account_reason' => 'IP-адресигиз, translatewiki.net сайтда хайырланнган DNSBL-де ачыкъ прокси кибик саналады. Тергеу джазыу къураяллыкъ тюлсюз.',
+'cant-block-while-blocked' => 'Сиз кесигиз блокда заманда, башха къошулуучуланы блок этеллик тюлсюз.',
+'cant-see-hidden-user' => 'Тыяргъа излеген къошулуучу алайсызда тыйылыбды эмда джашырылыбды. Къошулуучуну джашырыргъа эркинлигигиз болмагъаны себебли, сиз бу блокну не къараяллыкъ, неда тюрлендиреллик тюлсюз.',
+
+# Developer tools
+'lockdb' => 'Билги база киритлиди',
+'unlockdb' => 'Билги базаны киритин ач',
+'lockdbtext' => 'Билги базаны кирит этиу, бютеу къошулуучуланы бетлерин, джарашадырыуларын эмда сынчыкълау списокларын тюрлендириуню эмда билги базагъа эркинлик излеген башха ишлемлени киритлерикди. Этгенигизге ишексиз болгъаныгъызны энтда бир кере билдиригиз. Эмда билги базадан ишлемни бошагъанлай киритни алыгъыз.',
+'unlockdbtext' => 'Билги базаны киритден чыгъарыу, бютеу къошулуучулагъа бетлени, джашардырыуларыны эмда сынчыкълау списокларыны тюрлендирирге амал берликди. Ишлемге ишексиз болгъаныгъызны билдиригиз.',
+'lockconfirm' => 'Хоу, билги базаны тюрлендирирге излейме.',
+'unlockconfirm' => 'Хоу, билги базаны киритин ачаргъа излейме.',
+'lockbtn' => 'Билги база киритлиди',
+'unlockbtn' => 'Билги базаны киритин ач',
+'locknoconfirm' => 'Къабыл этер ючюн белги салыгъыз.',
+'lockdbsuccesssub' => 'Билги база блок этилгенди',
+'unlockdbsuccesssub' => 'Билги базаны кирити ачылды.',
+'lockdbsuccesstext' => 'Билги база киритленди.<br />
+Билги базаны кереклисине къарагъандан сора [[Special:UnlockDB|киритин ачаргъа]] унутмагъыз.',
+'unlockdbsuccesstext' => 'Билги базаны кирити ачылды.',
+'lockfilenotwritable' => 'Билги базаны киритлеу файлы джазылырча тюлдю.
+Бу билги базаны киритлер неда ачар ючюн веб-серверни бу файлгъа джазаргъа эркинлиги болургъа керекди.',
+'databasenotlocked' => 'Билги база киритли тюлдю.',
+
+# Move page
+'move-page' => '$1 атын тюрлендиреди',
+'move-page-legend' => 'Бетни атын тюрлендириу',
+'movepagetext' => "Тюбюндеги форма бла хайырланыб, сиз бетни атын тюрлендирликсиз, аны бла бирге аны тюрлениулерини журналын джангы оруннга кёчюрлюксюз.
+Эски аты джангы атына джибериу боллукъду.
+Эски атына баргъан джибериулени автоматик халда джангыртыргъа боллукъсуз.
+Алай этмей эсегиз [[Special:DoubleRedirects|экили]] бла [[Special:BrokenRedirects|юзюлген джибериуле]] бармыдыла деб къарагъыз.
+Джибериулени мындан арыда керекли джерни кёргюзюулерине сиз джууаблысыз.
+Бет джангыдан джибериу болгъанны, неда тюрлендириулени тарихи болмай бош болгъанны тышында, джангы аты бла бет бар эсе, бетни атын тюрлдендиреллик '''тюлсюз''' .
+Аны магъанасы, сиз бетни атын , мындан алгъа болгъан атына къайтарыргъа боллукъсуз, халат бла атын тюрлендирген эсегиз, болгъан бет билмей кетерилиб къаллыкъ тюлдю.
+
+'''ЭСГЕРТИУ!'''
+Атын тюрлендириу, \"айырма бетлени\" уллу ёлчемде , эмда сакъланмагъан тюрлениулеге келтирирге боллукъду.
+Тилейбиз, мындан ары бардырлыгъыгъызны аллы бла, ахырында чыгъарыкъ эсеблени ангылагъаныгъызгъа ишексиз болугъуз.",
+'movepagetalktext' => "Къошулгъан сюзюу бет да автомат халда кёчюрюлюннюкдю, '''быллай ситуация болмаса''':
+
+*Бош болмагъан сюзюу бет бу аты бла барды;
+*Тюбюндеги тизгинде белги салмагъансыз.
+
+Аллай ситуация болса, сиз бетлени къол бла кёчюрюрге неда къошаргъа керек боллукъсуз.",
+'movearticle' => 'Бетни атын тюрлендир:',
+'moveuserpage-warning' => "'''Эс бёлюгюз.''' Къошлуучуну бетини атын тюрлендирирге башлагъансыз. Къуру бетни аты тюрленникди, къошулуучуну аты тюрленник '''тюйюлдю'''.",
+'movenologin' => 'Системада тюлсюз.',
+'movenologintext' => 'Бетни атын тюрлендирир ючюн регистрациялы эмда [[Special:UserLogin|системада]] болургъа керексиз.',
+'movenotallowed' => 'Бетни атын тюрлендирирге эркинлигигиз джокъду.',
+'movenotallowedfile' => 'Файлланы атларын тюрлендирирге эркинлигигиз джокъду.',
+'cant-move-user-page' => 'Къошулуучуну бетини атын (бет тюбледен башха) тюрлендирирге эркинлигигиз джокъду.',
+'cant-move-to-user-page' => 'Бетни, башха къошулуучуну бетине ташыргъа эркинлигигиз джокъду (къошулуучу бет тюб тышында).',
+'newtitle' => 'Джангы ат:',
+'move-watch' => 'Сынчыкълау списокга къош',
+'movepagebtn' => 'Бетни атын тюрлендир',
+'pagemovedsub' => 'Бетни аты тюрленди',
+'movepage-moved' => "'''«$1» бет «$2» бетге кёчдю'''",
+'movepage-moved-redirect' => 'Джиберилиу къуралды.',
+'movepage-moved-noredirect' => 'Джибериу къуралыу басдырылды.',
+'articleexists' => 'Быллай аты бла бет барды неда сиз джазгъан ат джарамайды.
+Башха ат сайлагъыз.',
+'cantmove-titleprotected' => 'Бу бетни атын тюрлендиреллик тюлсюз, джангы ат джараусуз атланы списогундады.',
+'talkexists' => "'''Бетни аты тюрленнгенди, алай а сюзюу бетни кёчюрюрге джарамайды, аллай аты бла бет болгъаны ючюн. Къол бла къошугъуз аланы бири-бирлерине.'''",
+'movedto' => 'аты тюрленнгенди:',
+'movetalk' => 'Байламлы сюзюу бетни атын тюрлендир',
+'move-subpages' => 'Бет тюблени атларын ($1 бетге дери) тюрлендир',
+'move-talk-subpages' => 'Сюзюу бетни бет тюблерин атларын тюрлендир ($1 бетге дери)',
+'movepage-page-exists' => '$1 статья алайсызда барды эмда автомат халда джангыдан джазылалмаз.',
+'movepage-page-moved' => '$1 бет $2 бетге атын ауушдурду.',
+'movepage-page-unmoved' => '$1 бет $2 бетге атын ауушдуралмаз.',
+'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
+'1movedto2' => '«[[$1]]» бет «[[$2]]» бетге тюрленилинди',
+'1movedto2_redir' => '«[[$1]]» бет «[[$2]]» бетге тюрленди джибериуню юсю бла',
+'move-redirect-suppressed' => 'джибериу басдырылды',
+'movelogpage' => 'Атла тюрлениуню журналы',
+'movelogpagetext' => 'Тюбюнде болгъан список аты тюрлендирилген бетлени кёргюзеди.',
+'movesubpage' => '{{PLURAL:$1|Subpage|Бет тюбле}}',
+'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|бет тюбю|бет тюбю}} барды.',
+'movenosubpage' => 'Бу бетни тюб бети джокъду.',
+'movereason' => 'Чурум:',
+'revertmove' => 'ызына къайтыу',
+'delete_and_move' => 'Кетер эмда атын тюрлендир',
+'delete_and_move_text' => '== Кетериу керекди ==
+"[[:$1]]" атлы бет алайсызда джокъду. О бетни кетериб, атны тюрлендириуню андан ары бардырыргъа излеймисиз?',
+'delete_and_move_confirm' => 'Хоу, бетни кетер',
+'delete_and_move_reason' => 'Ат тюрлендирир ючюн кетерилди.',
+'selfmove' => 'Болурун изледигиз ат бла бар болгъан ат бирдиле. Тюрлениу этилеллик тюлдю.',
+'immobile-source-namespace' => '"$1" ат аламынды бетле атларын тюрлендирелмейдиле',
+'immobile-target-namespace' => 'Бетле "$1" ат аламына кёчюрюлмейдиле',
+'immobile-target-namespace-iw' => 'Викиле арасы джибериу, бетни атын тюрлендирир ючюн хайырланамаз.',
+'immobile-source-page' => 'Бу бетни атын тюрлендирирге боллукъ тюлдю',
+'immobile-target-page' => 'Бетге бу атны берирге болмайды.',
+'imagenocrossnamespace' => 'Файл, файлла ючюн болмагъан ат аламына кёчюерлмез.',
+'imagetypemismatch' => 'Джангы файл кенгериу типине келишмейди',
+'imageinvalidfilename' => 'Файлны нюзюр аты джараусузду',
+'fix-double-redirects' => 'Алгъыннгы атына джибериулени автомат халда тюзетигиз',
+'move-leave-redirect' => 'Джибериу къой',
+'protectedpagemovewarning' => "'''Эсгетртиу:''' Бу бет киритленнгенди, джангыз администраторла атын тюрлендирирге боллукъдула.
+Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
+'semiprotectedpagemovewarning' => "'''Эсгериу:''' Бу бет киритленибди, джангыз регистрация болгъан къошулуучула атын тюрлендирелликдиле.
+Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
+'move-over-sharedrepo' => '== Файл барды ==
+[[:$1]] сакълау джерде барды. Файлны бу башлыкъгъа атын аушдуруу орта сакълаудагъы файлны юсюне келликди.',
+'file-exists-sharedrepo' => 'Сайланнган файл ат орта сакълауда алайсызда барды.
+Башха ат сайлагъыз.',
+
+# Export
+'export' => 'Статьяланы экспорт эт',
+'exporttext' => 'Белгили бетни неда бет къауумну текстлерин эмда тюрлендириу журналын XML-гъа экспорт этерге боллукъсуз. Бу МедиаВики хайырланнган башха бир викиге [[Special:Import|импорт]] этерге боллукъду.
+
+Бетлени экспорт этер ючюн атын тюбюндеги тюрлендириу сафда джазыгъыз, бир ат бир сафха болсун, сора статьяланы тюрлендириуюню бютеу тарихинми огъесе статьяланы ахыр версияларынмы экспорт этерге излегенигизни оноуун этигиз.
+
+Сиз дагъыда джангыз ахыр версияланы эскпорт этерча айры адресни хайырландырыргъа боллукъсуз. Сёз ючюн [[{{MediaWiki:Mainpage}}]] бет ючюн [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] адрес боллукъду.',
+'exportcuronly' => 'Озгъан версияланы алмай, джангыз ахыр версияны ал',
+'exportnohistory' => "----
+'''Эсгертиу:''' Бетни тюрлендириуню толу тарихини экспорту, перформанс проблемалары ючюн джукълатылыбды.",
+'export-submit' => 'Эспорт эт',
+'export-addcattext' => 'Категорияладан бет къош:',
+'export-addcat' => 'Къош',
+'export-addnstext' => 'Ат аламдан бетле къош:',
+'export-addns' => 'Къош',
+'export-download' => 'Файл кибик сакъла',
+'export-templates' => 'Шаблонланы къош',
+'export-pagelinks' => 'Байламлы бетлени ичине къошаллыкъ теренлик:',
+
+# Namespace 8 related
+'allmessages' => 'Системаны билдириулери',
+'allmessagesname' => 'Ат',
+'allmessagesdefault' => 'Оригинал текст',
+'allmessagescurrent' => 'Хайырлана тургъан текст',
+'allmessagestext' => 'Бу список MediaWiki ат аламында бар болгъан система билдириулени списогуду.
+MediaWiki локализациясына юлюш къошаргъа излей эсегиз, [http://www.mediawiki.org/wiki/Localisation MediaWiki локализация] бла [http://translatewiki.net translatewiki.net] сайтлагъа киригиз.',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' джабыкъ болгъаны ючюн '''{{ns:special}}:Allmessages''' хайырланыугъа ачыкъ тюлдю.",
+'allmessages-filter-legend' => 'Фильтр',
+'allmessages-filter' => 'Тюрлендириуюне кёре фильтрлендир:',
+'allmessages-filter-unmodified' => 'Тюрлендирилмеген',
+'allmessages-filter-all' => 'Барысыда',
+'allmessages-filter-modified' => 'Тюрлендирилгендиле',
+'allmessages-prefix' => 'Префикс бла фильтр:',
+'allmessages-language' => 'Тил:',
+'allmessages-filter-submit' => 'Бар',
+
+# Thumbnails
+'thumbnail-more' => 'Уллу эт',
+'filemissing' => 'Файл табылмады',
+'thumbnail_error' => 'Миниатураны этиуде халат: $1',
+'djvu_page_error' => 'DjVu бетге джетилелмез',
+'djvu_no_xml' => 'DjVu файл ючюн XML алыналмайды',
+'thumbnail_invalid_params' => 'Джараусуз миниатура параметрле',
+'thumbnail_dest_directory' => 'Нюзюр директория къураялыналмайды',
+'thumbnail_image-type' => 'Сурат тип дагъан болмайды',
+'thumbnail_gd-library' => 'GD библиотеканы толу болмагъан конфигурациясы: тас болгъан функция $1',
+'thumbnail_image-missing' => 'Файл тас кибик кёрюнеди: $1',
+
+# Special:Import
+'import' => 'Бетлени импорт эт',
+'importinterwiki' => 'Викиле арасы импорт',
+'import-interwiki-text' => 'Импорт этер ючюн викини эм импорт этилген бетни атын сайлагъыз.
+Тюрлениулени тарихи бла джазыучуланы атлары сакъланныкъды.
+Бютеу викиле арасы импорт операцияла [[Special:Log/import|импортну журналына]] кёчюрюллюкдю.',
+'import-interwiki-source' => 'Къайнакъ вики/бет:',
+'import-interwiki-history' => 'Бу бетни бютеу тюрлениу тарихин копия эт',
+'import-interwiki-templates' => 'Бютеу шаблонланы ичине сал',
+'import-interwiki-submit' => 'Импорт',
+'import-interwiki-namespace' => 'Нюзюр ат алам:',
+'import-upload-filename' => 'Файлны аты:',
+'import-comment' => 'Эсгериу:',
+'importtext' => 'Файлны вики къайнакъдан [[Special:Export|экспорт амал бла]] эскпорт эт.
+Компьютеригизге салыгъыз эм былайгъа джюклегиз.',
+'importstart' => 'Файлла импорт этиле турадыла...',
+'import-revision-count' => '$1 {{PLURAL:$1|версия|версия}}',
+'importnopages' => 'Импорт этиллик бет джокъду',
+'importfailed' => '$1 импорту джетишимсиз бошалды',
+'importunknownsource' => 'Билинмеген импорт къайнакъ типи',
+'importcantopen' => 'Импорт этилген файл ачылалмады',
+'importbadinterwiki' => 'Терс интер-вики джибериу',
+'importnotext' => 'Бош неда текст джокъду',
+'importsuccess' => 'Импорт этилиб бошады!',
+'importhistoryconflict' => 'Бар болгъан версияланы арасында уруш (бу бет алгъаракъ импорт этилген болур)',
+'importnosources' => 'Викиле арасы къайнакъ сайланмагъанды эм тюрлендириулени тарихини тюз джюклеую джукъланыбды.',
+'importnofile' => 'Импорт ючюн файл джюкленмегенди.',
+'importuploaderrorsize' => 'Импорт этилген файлны джюклеую джетишимсиз болду.
+Файл, эркинлик берилген джюклеу ёлчеминден уллуду.',
+'importuploaderrorpartial' => 'Импорт этилген файлны джюклеую джетишимсиз болду.
+Файлны къуру бир кесеги джюкленди.',
+'importuploaderrortemp' => 'Импорт этилген файлны джюклеую джетишимсиз болду.
+Кёзюулю файл тасды.',
+'import-parse-failure' => 'XML-ну ичине импорт этиу джетишимсиз',
+'import-noarticle' => 'Импорт этиллик бет джокъду!',
+'import-nonewrevisions' => 'Бютеу версияла алгъаракъ импорт этилгендиле.',
+'xml-error-string' => '$1 тизгинде $2, позицияда $3 (байт $4): $5',
+'import-upload' => 'XML-билгилени джюкле',
+'import-token-mismatch' => 'Сеансы билгилери тас болду. Тилейбиз, джангыдан сынагъыз.',
+'import-invalid-interwiki' => 'Белгиленнген викиден импорт этелирча тюлдю.',
+
+# Import log
+'importlogpage' => 'Импортну журналы',
+'importlogpagetext' => 'Башха викиледен бетлени тюрлендириу тарихин администраторланы импорт этиую.',
+'import-logentry-upload' => '[[$1]] файл джюклениую бла импорт этилди',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-logentry-interwiki' => '$1 трансвикиленди',
+'import-logentry-interwiki-detail' => '$2 бетден $1 {{PLURAL:$1|весрия|версия}}',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Къошулуучу бетигиз',
+'tooltip-pt-anonuserpage' => 'Сизни IP-адресигиз ючюн къошулуучу бет',
+'tooltip-pt-mytalk' => 'Сизни сюзюу бетигиз',
+'tooltip-pt-anontalk' => 'Бу IP-адресден этилген тюрлендириулени сюзюу бет',
+'tooltip-pt-preferences' => 'Джарашдырыуларыгъыз',
+'tooltip-pt-watchlist' => 'Мен сынчыкълагъан бетлени списогу',
+'tooltip-pt-mycontris' => 'Сизни тюрлендириулеригизни списогу',
+'tooltip-pt-login' => 'Былайда системада регистрация этерге боллукъду, алай а ол ажымсыз керекли тюйюлдю',
+'tooltip-pt-anonlogin' => 'Былайда сисетмагъа регистрация этерге боллукъду, алай а бу зорунлу тюлдю.',
+'tooltip-pt-logout' => 'Чыгъыу',
+'tooltip-ca-talk' => 'Бетни ичиндегин сюзюу',
+'tooltip-ca-edit' => 'Бу бетни тюрлендирирге болады. Сакълагъынчы ал къарауну хайырландырыгъыз.',
+'tooltip-ca-addsection' => 'Джангы бёлюм къура',
+'tooltip-ca-viewsource' => 'Бу бет тюрлендириуден джакъланыбды. Алай а сиз къараб, текстин копия этерге боллукъсуз',
+'tooltip-ca-history' => 'Бетни алгъын версиялары',
+'tooltip-ca-protect' => 'Бу бетни джакъла',
+'tooltip-ca-unprotect' => 'Джакълауну кетер бу бетден',
+'tooltip-ca-delete' => 'Бу бетни кетер',
+'tooltip-ca-undelete' => 'Бетни кетериуню аллындагъа халына къайтар',
+'tooltip-ca-move' => 'Бу бетни атын тюрлендириу',
+'tooltip-ca-watch' => 'Бу бетни сынчыкълау списогугъузгъа къошугъуз',
+'tooltip-ca-unwatch' => 'Сынчыкълау списокдан кетер бу бетни',
+'tooltip-search' => 'Бу сёзню изле',
+'tooltip-search-go' => 'Тамам быллай аты болгъан бетге кёч',
+'tooltip-search-fulltext' => 'Бу текст болгъан бетлени таб',
+'tooltip-p-logo' => 'Баш бет',
+'tooltip-n-mainpage' => 'Баш бетге кёчюу',
+'tooltip-n-mainpage-description' => 'Баш бетге кёчюу',
+'tooltip-n-portal' => 'Проектни юсюнден, сизни не этерге боллугъугъузню юсюнден, хар не къайда болгъаныны юсюнден',
+'tooltip-n-currentevents' => 'Бусагъатда болгъан ишлени списогу',
+'tooltip-n-recentchanges' => 'Ахыр тюрлениулени списогу',
+'tooltip-n-randompage' => 'Къайсы болсада бир бетге къара',
+'tooltip-n-help' => '«{{SITENAME}}» проектге болушлукъ',
+'tooltip-t-whatlinkshere' => 'Бу бетге джибериу берген бютеу бетлени списогу',
+'tooltip-t-recentchangeslinked' => 'Бу бет джибериуле берген бетледе ахыр тюрлениуле',
+'tooltip-feed-rss' => 'Бу битге RSS-трансляция',
+'tooltip-feed-atom' => 'Бу бетге Atom-трансляция',
+'tooltip-t-contributions' => 'Къошулуучуну тюрлендирген бетлерине къара',
+'tooltip-t-emailuser' => 'Бу къошулуучугъа письмо джибер',
+'tooltip-t-upload' => 'Файлланы джюклеу',
+'tooltip-t-specialpages' => 'Бютеу къуллукъчу бетлени списогу',
+'tooltip-t-print' => 'Бу бетни басмагъа версиясы',
+'tooltip-t-permalink' => 'Бетни бу версиясына дайым джибериу',
+'tooltip-ca-nstab-main' => 'Статьяны ичиндеги',
+'tooltip-ca-nstab-user' => 'Къошулуучуну бетине къарау',
+'tooltip-ca-nstab-media' => 'Медиа-файл',
+'tooltip-ca-nstab-special' => 'Бу къуллукъчу бетди, тюрлендирилмейди',
+'tooltip-ca-nstab-project' => 'Проектни бетине къара',
+'tooltip-ca-nstab-image' => 'Файлны бетине къара',
+'tooltip-ca-nstab-mediawiki' => 'Система билдириуге къара',
+'tooltip-ca-nstab-template' => 'Шаблоннга къара',
+'tooltip-ca-nstab-help' => 'Болушлукъ бетге къара',
+'tooltip-ca-nstab-category' => 'Категорияны бетине къара',
+'tooltip-minoredit' => 'Асыры гитчеди деб ызына алыу бу тюрлендириуню',
+'tooltip-save' => 'Тюрлендириулеринги сакъла',
+'tooltip-preview' => 'Ал къарауну бетге хайырландырыгъыз, тюрлендириулеригизни сакъларны аллы бла!',
+'tooltip-diff' => 'Тюрлендириулеригизни кёрюгюз',
+'tooltip-compareselectedversions' => 'Бу бетни сайланнган эки версиясыны араларында башхалыкъларын кёр',
+'tooltip-watch' => 'Сынчыкълау списокга къош бу бетни',
+'tooltip-recreate' => 'Кетерилгенина къарамай бетни ызына къайтар',
+'tooltip-upload' => 'Джюклеуню башла',
+'tooltip-rollback' => 'Бир басхан бла ахыр къошулуучуну тюрлендиргенин кетер',
+'tooltip-undo' => 'Этилиннген тюрлендириуню ызына ал эмда ал къарауну кёргюз, ызына нек алыннгын чертирча',
+
+# Metadata
+'nodublincore' => 'Dublin Core RDF метабилгиле бу серверде джасакъдыла.',
+'nocreativecommons' => 'Creative Commons RDF метабилгиле бу сервер ючюн джасакъдыла.',
+'notacceptable' => 'Бу вики-сервер сизни браузеригиз излеген форматда билгиле берелмейди.',
+
+# Attribution
+'anonymous' => 'сайтны аноним {{PLURAL:$1|къошулуучулары|къошулуучулары}}',
+'siteuser' => '{{SITENAME}} къошулуучу $1',
+'anonuser' => '{{SITENAME}} аноним къошулуучу $1',
+'lastmodifiedatby' => 'Бет эм ахыр $3 джанындан $2, $1 заманда тюрлендирилгенди.',
+'othercontribs' => '$1 джанындан этилген ишге тамалланады.',
+'others' => 'башхала',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
+'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
+'creditspage' => 'Бетни кредитлери',
+'nocredits' => 'Бу къошулуучу ючюн кредит билги джокъду.',
+
+# Spam protection
+'spamprotectiontitle' => 'Спамгъа къаршчы фильтр',
+'spamprotectiontext' => 'Къошаргъа излеген бет спам фильтр бла блок этилгенди. Къара списокдагъы тыш джибериуле чурум болургъа боллукъдула.',
+'spamprotectionmatch' => 'Спам фильтр ишлетген текст: $1',
+'spambot_username' => 'Спамны ариулау',
+'spam_reverting' => '$1 бла джибериую болмагъан ахыр версиягъа къайтылады',
+'spam_blanking' => 'Бютеу версияла $1 бетге джибериу тутадыла, ариуланадыла',
+
+# Info page
+'infosubtitle' => 'Бетни юсюнде билги',
+'numedits' => 'Тюрлендириулени саны (бет): $1',
+'numtalkedits' => 'Тюрлендириуню саны (сюзюу бет): $1',
+'numwatchers' => 'Къараучуланы саны: $1',
+'numauthors' => 'Башха-башха авторланы саны (бет): $1',
+'numtalkauthors' => 'Башха-башха авторланы саны (сюзюу бет): $1',
+
+# Skin names
+'skinname-standard' => 'Стандарт',
+'skinname-nostalgia' => 'Ностальгия',
+'skinname-cologneblue' => 'Кёльн такъылыкъ',
+'skinname-monobook' => 'Моно-китаб',
+'skinname-myskin' => 'Меники',
+'skinname-chick' => 'Шик',
+'skinname-simple' => 'Бош',
+'skinname-modern' => 'Бусагъатдагъы',
+'skinname-vector' => 'Вектор',
+
+# Math options
+'mw_math_png' => 'PNG сурат форматха кёчюргенлей тур',
+'mw_math_simple' => 'Бек бош эсе HTML, тюл эсе PNG',
+'mw_math_html' => 'Мадар бар эсе HTML, болмаса PNG',
+'mw_math_source' => 'Тюрлендирмей TeX болуб къой (текст браузерле ючюн)',
+'mw_math_modern' => 'Бусагъатдагъы браузерлеге ючюн теджеледи',
+'mw_math_mathml' => 'Мадар бар эсе "MathML" (сынау опция)',
+
+# Math errors
+'math_failure' => 'Ангылашынамады',
+'math_unknown_error' => 'билинмеген халат',
+'math_unknown_function' => 'билинмеген функция',
+'math_lexing_error' => 'лексика халат',
+'math_syntax_error' => 'синтаксис халат',
+'math_image_error' => 'PNG конвертация джетишимсиз болду; latex, dvips, gs бла convert джарашдырыуларына къарагъыз',
+'math_bad_tmpdir' => 'Математиканы кёзюулю каталогуна не джазаргъа, неда къураргъа мадар джокъду',
+'math_bad_output' => 'Математиканы чыгъыш каталогуна не джазар, неда къурар мадар джокъду',
+'math_notexvc' => 'texvc файл табылмайды; джарашдырыр ючюн math/README-ге къара.',
+
+# Patrolling
+'markaspatrolleddiff' => 'Контроль этилгенин белгиле',
+'markaspatrolledtext' => 'Сыналгъан статья кибик белгиле',
+'markedaspatrolled' => 'Сыналгъан кибик белгиленнгенди',
+'markedaspatrolledtext' => 'Сайланнган [[:$1]] версия сыналгъан кибик белгиленнгенди.',
+'rcpatroldisabled' => 'Ахыр тюрлениулени осмакъалауу джасакъды',
+'rcpatroldisabledtext' => 'Ахыр тюрлениулени осмамкъалау амалы бусагъатда джукълатылыбды.',
+'markedaspatrollederror' => 'Сыналмаганды',
+'markedaspatrollederrortext' => 'Сыналгъан кибик белгилер ючюн версия белгилерге керексиз.',
+'markedaspatrollederror-noautopatrol' => 'Кесигизни тюрлендириулеригизни, сыналгъан кибик белгилерге эркинлигигиз джокъду.',
+
+# Patrol log
+'patrol-log-page' => 'Патруль этиуню журналы',
+'patrol-log-header' => 'Бу осмакъланнган версияланы журналыды.',
+'patrol-log-line' => '$3 сыналгъан кибик $2 $1 версия белгиленди',
+'patrol-log-auto' => '(автомат халда)',
+'patrol-log-diff' => 'версия $1',
+'log-show-hide-patrol' => 'Осмакълауну журналы $1',
+
+# Image deletion
+'deletedrevision' => '$1 эски версия кетерилгенди.',
+'filedeleteerror-short' => 'Файл кетериуню халаты: $1',
+'filedeleteerror-long' => 'Файлны кетериуде халатлагъа тюбелди:
+
+$1',
+'filedelete-missing' => 'Болмагъаны себебли, "$1" файл кетерилелмейди.',
+'filedelete-old-unregistered' => 'Белгиленнген файлны "$1" вериясы билги базада джокъду.',
+'filedelete-current-unregistered' => 'Белгиленнген файл "$1" билги базада джокъду.',
+'filedelete-archive-read-only' => '"$1" архив директория веб-сервер джанындан джазылырча тюлдю.',
+
+# Browsing diffs
+'previousdiff' => '← Алдагъы тюрлендириу',
+'nextdiff' => 'Эндиги тюрлендириу →',
+
+# Media information
+'mediawarning' => "'''Эсгертиу''': Бу файл типи аман иннетли кодла тутаргъа боллукъду.
+Буну ишлетсегиз системагъызгъа заран келтирирге боллукъсуз.",
+'imagemaxsize' => "Суратны ёлчемини чеги:<br />''(файлны ангылытыу бетле ючюн)''",
+'thumbsize' => 'Гитче ёлчем:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|бет|бет}}',
+'file-info' => '(файлны ёлчеми: $1, MIME типи: $2)',
+'file-info-size' => '($1 × $2 пиксель, файлны ёлчеми: $3, MIME типи: $4)',
+'file-nohires' => '<small>Мындан ары ачыкъланнган версиясы джокъду</small>',
+'svg-long-desc' => '(SVG файл, шартлы $1 × $2 пиксель, файлны ёлчеми: $3)',
+'show-big-image' => 'Толу ачыкълау',
+'show-big-image-thumb' => '<small>Ал къарауда ёлчеми: $1 × $2 пиксель</small>',
+'file-info-gif-looped' => 'тогъайланнганды',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+
+# Special:NewFiles
+'newimages' => 'Джангы файлланы галереясы',
+'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|файл|файл}} кёрюнеди.",
+'newimages-summary' => 'Бу къуллукъ бет, кёб болмай джюкленнген файлланы кёргюзеди.',
+'newimages-legend' => 'Фильтр',
+'newimages-label' => 'Файлны аты (неда кесеги):',
+'showhidebots' => '($1 бот)',
+'noimages' => 'Кёрюр зат джокъду',
+'ilsubmit' => 'Таб',
+'bydate' => 'Хронологиягъа кёре',
+'sp-newimages-showfrom' => '$1, $2 замандан башлаб джангы файлланы кёргюз',
+
+# Bad image list
+'bad_image_list' => 'Формат былай болургъа керекди:
+
+Къуру списокну кесеклери (* символдан башланнганла) саналлыкъдыла.
+Тизгинни биринчи джибериую салыргъа болмагъан (аман) суратха джибериу болургъа керекди.
+Андан ары баргъан джибериуле ол тизгинде, сурат къошулургъа болгъан статьялагъа джибериулеге саналлыкъдыла.',
+
+# Metadata
+'metadata' => 'Метаданныйле',
+'metadata-help' => 'Файл, кёбюсюне цифралы камерала бла, неда сканерле бла къошулгъан, къошакъ билгилени тутаргъа болады. Файл къуралгъанындан сора тюрлендирилген эсе, бир-бир параметрлери бусагъатдагъы суратына келишмезге болур.',
+'metadata-expand' => 'Дагъыда билгиле кёргюз',
+'metadata-collapse' => 'Къошакъ билгилени джашыр',
+'metadata-fields' => 'Бу списокда келтирилинген метаданныйлени тизгинлери, суратны бетинде тынгылау бла кёргюзтюлюнлюкдюле, къалгъанла джашырылыныб боллукъдула.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'Кенглик',
+'exif-imagelength' => 'Мийиклик',
+'exif-bitspersample' => 'Бояуну теренлиги',
+'exif-compression' => 'Къыстырыу мадар',
+'exif-photometricinterpretation' => 'Пиксель модели',
+'exif-orientation' => 'Кадрны ориентациясы',
+'exif-samplesperpixel' => 'Компонентлени саны',
+'exif-planarconfiguration' => 'Билгилени къуралыу принципи',
+'exif-ycbcrsubsampling' => 'Y бла C компонетлени ёлчемлерини илишкиси',
+'exif-ycbcrpositioning' => 'Y бла C джерлешдириую',
+'exif-xresolution' => 'Горизонтал резолюциясы',
+'exif-yresolution' => 'Вертикал резолюциясы',
+'exif-resolutionunit' => 'Х бла Y резолюцияны ёлчем бирими',
+'exif-stripoffsets' => 'Билги блокну туруму',
+'exif-rowsperstrip' => '1 блокда болгъан тизгинни саны',
+'exif-stripbytecounts' => 'Къысдырылгъан блокну ёлчеми',
+'exif-jpeginterchangeformat' => 'preview блокну тамалыны туруму',
+'exif-jpeginterchangeformatlength' => 'preview блокну билгилерини ёлчеми',
+'exif-transferfunction' => 'Трансфер функциясы',
+'exif-whitepoint' => 'Акъ нохтаны боялулугъу',
+'exif-primarychromaticities' => 'Баш бояуланы бояулулугъу',
+'exif-ycbcrcoefficients' => 'Бояу модельни трансформация матрикс коофициенти',
+'exif-referenceblackwhite' => 'Акъ бла къара нохталаны турумлары',
+'exif-datetime' => 'Файлны тюрлендириуню датасы бла заманы',
+'exif-imagedescription' => 'Суратны аты',
+'exif-make' => 'Камераны маркасы',
+'exif-model' => 'Камераны модели',
+'exif-software' => 'Программа баджарыу',
+'exif-artist' => 'Автор',
+'exif-copyright' => 'Автор хакъланы иеси',
+'exif-exifversion' => 'Exif версиясы',
+'exif-flashpixversion' => 'Джакъланнган FlashPix версиясы',
+'exif-colorspace' => 'Бояу алам',
+'exif-componentsconfiguration' => 'Хар компонентни ангыламы',
+'exif-compressedbitsperpixel' => 'Суратны къысдырыу амалы',
+'exif-pixelydimension' => 'Суратны толу мийиклиги',
+'exif-pixelxdimension' => 'Суратны толу кенглиги',
+'exif-makernote' => 'Чыгъарыучуну къошакъ билгилери',
+'exif-usercomment' => 'Къошакъ комментарий',
+'exif-relatedsoundfile' => 'Тауушлу комментарийни файлы',
+'exif-datetimeoriginal' => 'Оригинал джаратыу заман',
+'exif-datetimedigitized' => 'Цифралашдрыуну заманы',
+'exif-subsectime' => 'Файлны тюрлендириу заманны дакъикъалары',
+'exif-subsectimeoriginal' => 'Оригинал заманны дакъикъалары',
+'exif-subsectimedigitized' => 'Цифралашдырыу заманны дакъикъалары',
+'exif-exposuretime' => 'Экспозиция заман',
+'exif-exposuretime-format' => '$1 с ($2)',
+'exif-fnumber' => 'Диафрагманы номери',
+'exif-exposureprogram' => 'Экспозицияны программасы',
+'exif-spectralsensitivity' => 'Спектрал сезимлилик',
+'exif-isospeedratings' => 'ISO терклик дараджасы',
+'exif-oecf' => 'Оптоэлекторника конверсияны фактору',
+'exif-shutterspeedvalue' => 'Декланшорну терклиги',
+'exif-aperturevalue' => 'Диафрагма',
+'exif-brightnessvalue' => 'Джарыкълыкъ',
+'exif-exposurebiasvalue' => 'Экспозицияны коменсациясы',
+'exif-maxaperturevalue' => 'Максимум диафрагма саны',
+'exif-subjectdistance' => 'Объектге дери узакълыкъ',
+'exif-meteringmode' => 'Ёлчем типи',
+'exif-lightsource' => 'Джарыкъны къайнагъы',
+'exif-flash' => 'Флеш',
+'exif-focallength' => 'Фокус узакълыкъ',
+'exif-focallength-format' => '$1 мм',
+'exif-subjectarea' => 'Субъект алам',
+'exif-flashenergy' => 'Флешни энергиясы',
+'exif-spatialfrequencyresponse' => 'Аламлыкъ фреканс хал',
+'exif-focalplanexresolution' => 'Фокал аламда Х резолюциясы',
+'exif-focalplaneyresolution' => 'Фокал аламда Y резолюциясы',
+'exif-focalplaneresolutionunit' => 'Фокал аламда резолюцияны ёлчем бирими',
+'exif-subjectlocation' => 'Субъектни туруму',
+'exif-exposureindex' => 'Экспозицияны индекси',
+'exif-sensingmethod' => 'Сенсор амалы',
+'exif-filesource' => 'Файлны къайнагъы',
+'exif-scenetype' => 'Сахнаны типи',
+'exif-cfapattern' => 'CFA типи',
+'exif-customrendered' => 'Айырма сурат ишлем',
+'exif-exposuremode' => 'Экспозицияны сайлауну режими',
+'exif-whitebalance' => 'Акъны балансы',
+'exif-digitalzoomratio' => 'Цифра джууукълашдырыуну ёлчеми',
+'exif-focallengthin35mmfilm' => '35 мм-лик плёнкада фокал узунлукъ',
+'exif-scenecapturetype' => 'Алыуда сахнаны типи',
+'exif-gaincontrol' => 'Сахна контролу',
+'exif-contrast' => 'Контраст',
+'exif-saturation' => 'Бояуну толулугъу',
+'exif-sharpness' => 'Кескинлик',
+'exif-devicesettingdescription' => 'Камераны джарашдырыуларыны ангылатыу',
+'exif-subjectdistancerange' => 'Алыуну объектине дери узунлукъ',
+'exif-imageuniqueid' => 'Суратны энчи номери (ID)',
+'exif-gpsversionid' => 'GPS версиясы',
+'exif-gpslatituderef' => 'Шимал неда Къыбыла кенглик',
+'exif-gpslatitude' => 'Кенглик',
+'exif-gpslongituderef' => 'Кюнчыгъыш неда кюнбатыш узунлукъ',
+'exif-gpslongitude' => 'Узунлукъ',
+'exif-gpsaltituderef' => 'Мийикликни индекси',
+'exif-gpsaltitude' => 'Мийиклик',
+'exif-gpstimestamp' => 'GPS заман (атом сагъат)',
+'exif-gpssatellites' => 'Хайырланнган спутниклени ангылатыу',
+'exif-gpsstatus' => 'Ресиверни статусу',
+'exif-gpsmeasuremode' => 'Ёлчелеуню амалы',
+'exif-gpsdop' => 'Ёлчемни тюзлюгю',
+'exif-gpsspeedref' => 'Теркликни ёлчем бирими',
+'exif-gpsspeed' => 'GPS алыучуну терклиги',
+'exif-gpstrackref' => 'GPS алыучуну азимутуну типи',
+'exif-gpstrack' => 'GPS алыучуну азимуту',
+'exif-gpsimgdirectionref' => 'Суратны азимутуну типи',
+'exif-gpsimgdirection' => 'Суратны азимуту',
+'exif-gpsmapdatum' => 'Координатланы геодезия системасын хайырландырыу',
+'exif-gpsdestlatituderef' => 'Объектни узунлугъуну индекси',
+'exif-gpsdestlatitude' => 'Объектни узунлугъу',
+'exif-gpsdestlongituderef' => 'Объектни кенглигини индекси',
+'exif-gpsdestlongitude' => 'Объектни кенглиги',
+'exif-gpsdestbearingref' => 'Объектни пеленгини типи',
+'exif-gpsdestbearing' => 'Объектни пеленги',
+'exif-gpsdestdistanceref' => 'Аралыкъны ёлчелеуню бирими',
+'exif-gpsdestdistance' => 'Аралыкъ',
+'exif-gpsprocessingmethod' => 'GPS ёлчелеу амалны аты',
+'exif-gpsareainformation' => 'GPS тёгерекни аты',
+'exif-gpsdatestamp' => 'GPS заман',
+'exif-gpsdifferential' => 'GPS дифференциялы тюзетиу',
+
+# EXIF attributes
+'exif-compression-1' => 'Къысдырылмагъан',
+
+'exif-unknowndate' => 'Билинмеген заман',
+
+'exif-orientation-1' => 'Нормал',
+'exif-orientation-2' => 'Горизонтал бла кёргюзюлгенди',
+'exif-orientation-3' => '180° бурулгъанды',
+'exif-orientation-4' => 'Вертикал бла кёргюзюлгенди',
+'exif-orientation-5' => '90° бурулгъан (солгъа) эмда вертикал бла кёргюзюлгенди',
+'exif-orientation-6' => '90° бурулгъаннды (сагъат стрелкагъа)',
+'exif-orientation-7' => '90° бурулгъанды (сагъат стрелкагъа) эмда вертикал бла кёргюзюлгенди',
+'exif-orientation-8' => '90° бурулгъанды (солгъа)',
+
+'exif-planarconfiguration-1' => '«chunky» формат',
+'exif-planarconfiguration-2' => '«planar» формат',
+
+'exif-xyresolution-i' => '$1 dpi',
+'exif-xyresolution-c' => '$1 dpc',
+
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-ffff.h' => 'FFFF.H',
+
+'exif-componentsconfiguration-0' => 'Джокъду',
+
+'exif-exposureprogram-0' => 'Танылмады',
+'exif-exposureprogram-1' => 'Къол режим',
+'exif-exposureprogram-2' => 'Нормал программа',
+'exif-exposureprogram-3' => 'Дифрагманы аллы',
+'exif-exposureprogram-4' => 'Декланшёр аллы',
+'exif-exposureprogram-5' => 'Суратлау программа (кескинликни керекли теренлигини тамалында)',
+'exif-exposureprogram-6' => 'Спорт режим',
+'exif-exposureprogram-7' => 'Портрет режим (фокуссуз фонда, джууукъ аралыкъдан сурат алыр ючюн)',
+'exif-exposureprogram-8' => 'Пейзаж режим (фокусда фону бла пейзаж суратла ючюн)',
+
+'exif-subjectdistance-value' => '$1 метр',
+
+'exif-meteringmode-0' => 'Билинмейди',
+'exif-meteringmode-1' => 'Орта',
+'exif-meteringmode-2' => 'Ара аурлукълу',
+'exif-meteringmode-3' => 'Нохталы',
+'exif-meteringmode-4' => 'Кёб нохталы',
+'exif-meteringmode-5' => 'Матрицалы',
+'exif-meteringmode-6' => 'Джартылы',
+'exif-meteringmode-255' => 'Башха',
+
+'exif-lightsource-0' => 'Билинмеген',
+'exif-lightsource-1' => 'Кюн джарыкъ',
+'exif-lightsource-2' => 'Кюндюз джарыкъны лампасы',
+'exif-lightsource-3' => 'Къызыуну лампасы',
+'exif-lightsource-4' => 'Флэш',
+'exif-lightsource-9' => 'Ачыкъ хауа',
+'exif-lightsource-10' => 'Булутлу',
+'exif-lightsource-11' => 'Ауана',
+'exif-lightsource-12' => 'Кюн джарыкъны лампасы (D 5700 – 7100K)',
+'exif-lightsource-13' => 'Кюндюз джарыкъны лампасы (N 4600 – 5400K)',
+'exif-lightsource-14' => 'Кюндюз джарыкъны лампасы (W 3900 – 4500K)',
+'exif-lightsource-15' => 'Кюндюз джарыкъны лампасы (W 3900 – 4500K)',
+'exif-lightsource-17' => 'А типли стандарт джарыкъ',
+'exif-lightsource-18' => 'B типли стандарт джарыкъ',
+'exif-lightsource-19' => 'С типли стандарт джарыкъ',
+'exif-lightsource-20' => 'D55',
+'exif-lightsource-21' => 'D65',
+'exif-lightsource-24' => 'ISO стандартлы студиялыкъ лампа',
+'exif-lightsource-255' => 'Джарыкъны башха къайнакълары',
+
+# Flash modes
+'exif-flash-fired-0' => 'Флэши ишлемеди',
+'exif-flash-fired-1' => 'Флэши ишледи',
+'exif-flash-return-0' => 'алгъаракъ флэш джаныу режими джокъду',
+'exif-flash-return-2' => 'алгъаракъ джаннган флэшни къайтхан импульсу джокъду',
+'exif-flash-return-3' => 'алгъаракъ ишлеген флэшни къайтыу имиульсу ишледи',
+'exif-flash-mode-1' => 'зорунлу флаш джанды',
+'exif-flash-mode-2' => 'зорунлу флэш джабыкъды',
+'exif-flash-mode-3' => 'автомат режим',
+'exif-flash-function-1' => 'Флэш джокъду',
+'exif-flash-redeye-1' => 'къызыл кёзле эффектни кетериу режим',
+
+'exif-focalplaneresolutionunit-2' => 'дюйм',
+
+'exif-sensingmethod-1' => 'Танымсыз',
+'exif-sensingmethod-2' => 'Бир кристаллы матрицалы бояулу сенсор',
+'exif-sensingmethod-3' => 'Эки матрицасы бла бояулу сенсор',
+'exif-sensingmethod-4' => 'Юч матрицасы бла бояулу сенсор',
+'exif-sensingmethod-5' => 'Боуну кёзюулю ёлчеу функциясы бла матрицалы сенсор',
+'exif-sensingmethod-7' => 'Юс бетли сызлы сенсор',
+'exif-sensingmethod-8' => 'Бетни кёюзюулю тюрлениую бла сызлы сенсор',
+
+'exif-filesource-3' => 'Цифра фотоаппарат',
+
+'exif-scenetype-1' => 'Сурат эрлай алыннганды',
+
+'exif-customrendered-0' => 'Нормал ишлеу',
+'exif-customrendered-1' => 'Стандарт тышында ишлеу',
+
+'exif-exposuremode-0' => 'Автомат экспозиция',
+'exif-exposuremode-1' => 'Экспозицияны къол бла джарашдырыу',
+'exif-exposuremode-2' => 'Автобрекет',
+
+'exif-whitebalance-0' => 'Автомат халда акъны балансы',
+'exif-whitebalance-1' => 'Акъны балансын къол бла джарашдырыу',
+
+'exif-scenecapturetype-0' => 'Стандарт',
+'exif-scenecapturetype-1' => 'Ландшафт',
+'exif-scenecapturetype-2' => 'Портрет',
+'exif-scenecapturetype-3' => 'Кече картха алыу',
+
+'exif-gaincontrol-0' => 'Джокъду',
+'exif-gaincontrol-1' => 'Аз уллайыу',
+'exif-gaincontrol-2' => 'Уллу уллайыу',
+'exif-gaincontrol-3' => 'Аз гитчелеу',
+'exif-gaincontrol-4' => 'Кючлю гитчелеу',
+
+'exif-contrast-0' => 'Нормал',
+'exif-contrast-1' => 'Джумушакъ',
+'exif-contrast-2' => 'Кючлю',
+
+'exif-saturation-0' => 'Нормал',
+'exif-saturation-1' => 'Аз тойгъанлыкъ',
+'exif-saturation-2' => 'Бек тойгъанлыкъ',
+
+'exif-sharpness-0' => 'Нормал',
+'exif-sharpness-1' => 'Джумушакъ',
+'exif-sharpness-2' => 'Кючлю',
+
+'exif-subjectdistancerange-0' => 'Билинмейди',
+'exif-subjectdistancerange-1' => 'Макро (джууукъдан картха алыу)',
+'exif-subjectdistancerange-2' => 'Джабыкъ кёрюнюу',
+'exif-subjectdistancerange-3' => 'Узакъ кёрюнюу',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Шимал кенглик',
+'exif-gpslatitude-s' => 'Къыбыла кенглик',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Кюнчыгъыш узунлукъ',
+'exif-gpslongitude-w' => 'Кюнбатыш узунлукъ',
+
+'exif-gpsstatus-a' => 'Ёлчелеу бошалмагъанды',
+'exif-gpsstatus-v' => 'Ёлчелеу бошалгъанды',
+
+'exif-gpsmeasuremode-2' => '2-ли координатланы ёлчелеу',
+'exif-gpsmeasuremode-3' => '3-лю коорданатланы ёлчелеу',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'км/с',
+'exif-gpsspeed-m' => 'Миль/сагъат',
+'exif-gpsspeed-n' => 'Тенгиз миля',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Керти',
+'exif-gpsdirection-m' => 'Мукъладис',
+
+# External editor support
+'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
+'edit-externally-help' => '(толу информациягъа мында къарагъыз: [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'бютеу',
+'imagelistall' => 'бютеу',
+'watchlistall2' => 'бютеу',
+'namespacesall' => 'бютеу',
+'monthsall' => 'бютеу',
+'limitall' => 'бютеую',
+
+# E-mail address confirmation
+'confirmemail' => 'Электорн адресни мюкюл эт',
+'confirmemail_noemail' => '[[Special:Preferences|джарашдырыулада]] тамамланнган, джараулу электрон адресигиз джокоъду.',
+'confirmemail_text' => 'Викини электрон почтасыны адреси бла хайырланыб башлауну аллы бла, аны мюкюл этериге керекди.
+Адресигизге мюкюл этиу письмо ийилир ючюн, тюбюндеги тиекден басыгъыз.
+Письмода адресигизни мюкюл этер ючюн джибериу боллукъду, аннга бассагъыз сиз энчи бир бетге чыгъарыкъсыз, андан башлаб сизни адресигиз мюкюл болгъаннга саналады.',
+'confirmemail_pending' => 'Мюкюл этиуню коду бла письмо сизге алайсызда джиберилгенди;
+Тергеу джазыуугъуз джангы къурагъан эсегиз, джангы бир код ишлеуню башланыууну аллы бла бир кесек сакъларыгъызны тилейбиз.',
+'confirmemail_send' => 'Мюкюл кодну джибер',
+'confirmemail_sent' => 'Мюкюл этиу письмо джиберилди.',
+'confirmemail_oncreate' => 'Мюкюл этиу код электрон адресигизге джиберилди.
+Кирир ючюн бу код керек тюлдю, алай а бу викиде хайырландырыб башлар ючюн бу кодну белгилерге керексиз.',
+'confirmemail_sendfailed' => '{{SITENAME}} Мюкюл письмо джиберилелмеди. Джараусуз харифле болургъа болур, адресни осмакълагъыз.
+
+Серверни джууабы: $1',
+'confirmemail_invalid' => 'Джараусуз мюкюл код. Мюкюл кодну ахыр хайырланыу болджалы чыгъаргъа болур.',
+'confirmemail_needlogin' => 'Электорн адресигизни мюкюл этер ючюн, алгъы бурун $1 этерге керексиз.',
+'confirmemail_success' => 'Электрон почтагъызны адреси мюкюл этилди. Олтуруу [[Special:UserLogin|ачыб]] Викини татыуун чыгъарыгъыз.',
+'confirmemail_loggedin' => 'Электорн почтагъызны адреси мюкюл этилди.',
+'confirmemail_error' => 'Мюкюл этилиуде билинмеген халат болду.',
+'confirmemail_subject' => '{{SITENAME}} электрон почта адресни мюкюл этилиую',
+'confirmemail_body' => 'Ким эседа, биз сагъышдан, $1 IP адресден,
+{{SITENAME}} сайтда бу электрон адрес бла $2 тергеу джазыу къурады.
+
+Бу тергеу джазыу кертида сизники болгъанын къабыл эмда {{SITENAME}} сайтдагъы
+электрон почта бла хайырланыуну актив халгъа келтирир ючюн, тюбюндеги джибериуню ачыгъыз.
+
+$3
+
+Тергеу джазыуну сиз *къурамагъан* эсегиз, электорн почта адресни мюкюл этиуюню
+тыяр ючюн тюбюндеги джибериуню басыгъыз:
+
+$5
+
+Бу мюкюл код $4 заманнга дери джарарыкъды.',
+'confirmemail_invalidated' => 'Электрон почтаны адресини мюкюл этилиую тыйылды',
+'invalidateemail' => 'Электрон почтаны адресин мюкюл этиуюн тый',
+
+# Scary transclusion
+'scarytranscludedisabled' => '[«Interwiki transcluding» джукъланыбды]',
+'scarytranscludefailed' => '[$1 ючюн шаблон алымы тындырылмады]',
+'scarytranscludetoolong' => '[URL асыры узунду]',
+
+# Trackbacks
+'trackbackbox' => 'Бу бет ючюн trackback :<br />
+$1',
+'trackbackremove' => '([$1 кетер])',
+'trackbacklink' => 'Trackback',
+'trackbackdeleteok' => 'Trackback кетерилди',
+
+# Delete conflict
+'deletedwhileediting' => "'''Эсериу''': Бу бет сиз тюрлендириб башлагъандан сора кетерилгенди!",
+'confirmrecreate' => "Бу бетни [[User:$1|$1]] ([[User talk:$1|сюзюу]]) къошулуучу, сиз бетде тюрлендириуле этген заманда кетергенди, чуруму:
+: ''$2''",
+'recreate' => 'Джанландыр',
+
+'unit-pixel' => 'пикс.',
+
+# action=purge
+'confirm_purge_button' => 'OK',
+'confirm-purge-top' => 'Бу бетни кеши кетерилсинми?',
+'confirm-purge-bottom' => 'Бетни кеши кетерилгенден сора, андан сора келген версиясы кёргюзюллюкдю.',
+
+# Separators for various lists, etc.
+'catseparator' => '|',
+'semicolon-separator' => ';&#32;',
+'percent' => '$1%',
+'parentheses' => '($1)',
+
+# Multipage image navigation
+'imgmultipageprev' => '← аллындыгъы бет',
+'imgmultipagenext' => 'эндиги бет →',
+'imgmultigo' => 'Кёч!',
+'imgmultigoto' => '$1 бетге кёч',
+
+# Table pager
+'ascending_abbrev' => 'гитчеден уллугъа',
+'descending_abbrev' => 'азалгъан',
+'table_pager_next' => 'Эндиги бет',
+'table_pager_prev' => 'Аллындагъы бет',
+'table_pager_first' => 'Биринчи бет',
+'table_pager_last' => 'Ахыр бет',
+'table_pager_limit' => 'Хар бетде $1 бет кёргюз',
+'table_pager_limit_submit' => 'Тындыр',
+'table_pager_empty' => 'Табылмагъанды',
+
+# Auto-summaries
+'autosumm-blank' => 'Бет бошалтылды',
+'autosumm-replace' => "Бетни ичи '$1' бла ауушдурулду",
+'autoredircomment' => '[[$1]] бетге джиберилди',
+'autosumm-new' => "Бет къуралды: '$1'",
+
+# Size units
+'size-bytes' => '$1 байт',
+'size-kilobytes' => '$1 КБ',
+'size-megabytes' => '$1 МБ',
+'size-gigabytes' => '$1 МБ',
+
+# Live preview
+'livepreview-loading' => 'Джюклениу...',
+'livepreview-ready' => 'Джюклениу... Хазырды!',
+'livepreview-failed' => 'Джанлы ал къарау джетишимсиз! Нормал ал къарауну сынагъыз.',
+'livepreview-error' => 'Байланыу этиленмеди: $1 "$2".
+Нормал ал къарауну хайырланыгъыз.',
+
+# Friendlier slave lag warnings
+'lag-warn-normal' => '$1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу списокда кёрюнмезге боллукъдула.',
+'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу списокда кёрюнмей къалыргъа болур.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'Сынчыкълау списокда {{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} барды, сюзюу бетни тышында.',
+'watchlistedit-noitems' => 'Сынчыкълау списогугъуз чырт бир башлыкъ тутмайды.',
+'watchlistedit-normal-title' => 'Чынчыкълау спизокню тюрлендир',
+'watchlistedit-normal-legend' => 'Сынчыкълау списогугъуздан башлыкъланы кетериу',
+'watchlistedit-normal-explain' => 'Сынчыкълау списокдагъы бетле тюбюрек кёргюзюлгендиле.
+Башлыкъланы кетерир ючюн, къатындагъы тёртгюлчюкде белгилеб, «{{int:Watchlistedit-normal-submit}}» тиекден басыгъыз.
+Сиз дагъыда [[Special:Watchlist/raw|списокну текст кибик тюрлендирирге]] боллукъсуз.',
+'watchlistedit-normal-submit' => 'Башлыкъланы кетер',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} сынчыкълау списогунгдан кетерилди:',
+'watchlistedit-raw-title' => '"Чий" сынчыкълау списокну тюрлендир',
+'watchlistedit-raw-legend' => '"Чий" сынчыкълау списокну тюрлендир',
+'watchlistedit-raw-explain' => 'Сынчыкълау списогугъуздагъы башлыкъла тюбюнде кёрюнедиле. Хар тизгинде бир башлыкъ болады, башлыкъланы къошуб неда кетериб списокну тюрлендирирге боллукъсуз.
+Бошалса «{{int:Watchlistedit-raw-submit}}» деген тиекден басыгъыз.
+[[Special:Watchlist/edit|Стандарт тюрлендириу]] бла да хайырланаллыкъсыз.',
+'watchlistedit-raw-titles' => 'Башлыкъла:',
+'watchlistedit-raw-submit' => 'Сынчыкълау списокну сакъла',
+'watchlistedit-raw-done' => 'Сынчыкълау списогугъуз сакъланды.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} къошулду:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} кетерилди:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Списокдан бетледе тюрлениуле',
+'watchlisttools-edit' => 'Къара/тюрлендир списокну',
+'watchlisttools-raw' => 'Текстча тюрлендириу',
+
+# Iranian month names
+'iranian-calendar-m1' => 'Фарвардин',
+'iranian-calendar-m2' => 'Ордибехешт',
+'iranian-calendar-m3' => 'Хордад',
+'iranian-calendar-m4' => 'Хордад',
+'iranian-calendar-m5' => 'Мордад',
+'iranian-calendar-m6' => 'Шахривар',
+'iranian-calendar-m7' => 'Мехр',
+'iranian-calendar-m8' => 'Абан',
+'iranian-calendar-m9' => 'Азар',
+'iranian-calendar-m10' => 'Дей',
+'iranian-calendar-m11' => 'Бахман',
+'iranian-calendar-m12' => 'Эсфанд',
+
+# Hijri month names
+'hijri-calendar-m1' => 'Мухаррам',
+'hijri-calendar-m2' => 'Сафар',
+'hijri-calendar-m3' => 'Раби-аль-аууаль',
+'hijri-calendar-m4' => 'Раби-аль-тани',
+'hijri-calendar-m5' => 'Джумада аль-аууаль',
+'hijri-calendar-m7' => 'Раджаб',
+'hijri-calendar-m8' => 'Шаабан',
+'hijri-calendar-m9' => 'Рамадан',
+'hijri-calendar-m10' => 'Шаууаль',
+'hijri-calendar-m11' => 'Ду аль-Къидан',
+'hijri-calendar-m12' => 'Ду аль-Хиджджан',
+
+# Hebrew month names
+'hebrew-calendar-m1' => 'Тишрей',
+'hebrew-calendar-m2' => 'Хешван',
+'hebrew-calendar-m3' => 'Кислев',
+'hebrew-calendar-m4' => 'Тевет',
+'hebrew-calendar-m5' => 'Шват',
+'hebrew-calendar-m6' => 'Адар',
+'hebrew-calendar-m6a' => 'Адар I',
+'hebrew-calendar-m6b' => 'Адар II',
+'hebrew-calendar-m7' => 'Нисан',
+'hebrew-calendar-m8' => 'Ияр',
+'hebrew-calendar-m9' => 'Сиван',
+'hebrew-calendar-m10' => 'Таммуз',
+'hebrew-calendar-m11' => 'Ав',
+'hebrew-calendar-m12' => 'Элул',
+'hebrew-calendar-m1-gen' => 'Тишрея',
+'hebrew-calendar-m2-gen' => 'Хешвана',
+'hebrew-calendar-m3-gen' => 'Кислева',
+'hebrew-calendar-m4-gen' => 'Тевет',
+'hebrew-calendar-m5-gen' => 'Шеват',
+'hebrew-calendar-m6-gen' => 'Адар',
+'hebrew-calendar-m6a-gen' => 'Адар I',
+
+# Core parser functions
+'unknown_extension_tag' => 'Къошакъны билинмеген "$1" теги',
+'duplicate-defaultsort' => '\'\'\'Эсгериу:\'\'\' Бар саналгъан "$2" сыныфлама ачхыч, аллындагъы "$1" сыныфлама ачхычны джараусуз этеди.',
+
+# Special:Version
+'version' => 'Версия',
+'version-extensions' => 'Салыннган кенгертиуле',
+'version-specialpages' => 'Къуллукъчу бетле',
+'version-parserhooks' => 'Синтаксис анализаторну тутуучула',
+'version-variables' => 'Тюрленнгенле',
+'version-other' => 'Башха',
+'version-mediahandlers' => 'Медияны джарашдырыучула',
+'version-hooks' => 'Тутуучула',
+'version-extension-functions' => 'Кенгертиулени функциялары',
+'version-parser-extensiontags' => 'Синтиаксис анализаторну кенгертиулерин теглери',
+'version-parser-function-hooks' => 'Синтаксис анализаторну функцияларын тутуучула',
+'version-skin-extension-functions' => 'Джасау темаланы кенгертиулерини функциялары',
+'version-hook-name' => 'Тутуучуну аты',
+'version-hook-subscribedby' => 'Абонент болгъан',
+'version-version' => '(Версия $1)',
+'version-license' => 'Лицензия',
+'version-software' => 'Салыннган программа баджарыу',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'Версия',
+
+# Special:FilePath
+'filepath' => 'Файлгъа джол',
+'filepath-page' => 'Файл:',
+'filepath-submit' => 'Кёч',
+'filepath-summary' => 'Бу къуллукъчу бет файл ючюн толу джолну береди.
+Суратла толу резолюциялары бла кёргюзюледиле, башха файл типле алагъа джараулу программала бла ачыладыла.
+
+Файлны атын, "{{ns:file}}:" префиксиз джазыгъыз.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Дубликат файлланы изле',
+'fileduplicatesearch-summary' => 'Хэш-кодлары бла дубликат файланны изле.
+
+Файлны атын «{{ns:file}}:» префикссиз джазыгъыз.',
+'fileduplicatesearch-legend' => 'Дубликатланы изле',
+'fileduplicatesearch-filename' => 'Файлны аты:',
+'fileduplicatesearch-submit' => 'Таб',
+'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
+'fileduplicatesearch-result-1' => '"$1" файлны келишген дубликаты джокъду',
+'fileduplicatesearch-result-n' => '"$1" файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+
+# Special:SpecialPages
+'specialpages' => 'Къуллукъчу бетле',
+'specialpages-note' => '----
+* Нормаль къуллукъчу бетле.
+* <strong class="mw-specialpagerestricted">Къысыулу къуллукъчу бетле.</strong>',
+'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
+'specialpages-group-other' => 'Башха къуллукъчу бетле',
+'specialpages-group-login' => 'Системагъа кир/регистрация эт',
+'specialpages-group-changes' => 'Ахыр тюрлендириуле бла журналла',
+'specialpages-group-media' => 'Медиа-материалланы юсюнден отчетла бла джюклеуле',
+'specialpages-group-users' => 'Къошулуучула эм хакълары',
+'specialpages-group-highuse' => 'Бек хайырландырылгъан бетле',
+'specialpages-group-pages' => 'Бетлени списоклары',
+'specialpages-group-pagetools' => 'Бетге инструментле',
+'specialpages-group-wiki' => 'Вики-билгиле эм инструментле',
+'specialpages-group-redirects' => 'Джиберген къуллукъчу бетле',
+'specialpages-group-spam' => 'Спамгъа къаршчы инструментле',
+
+# Special:BlankPage
+'blankpage' => 'Бош бет',
+'intentionallyblankpage' => 'Бу бет, иш этиб, бош къоюлгъанды.',
+
+# External image whitelist
+'external_image_whitelist' => '#Бу тизгинни болгъаныча къой<pre>
+#Хаманда айтылгъан айтыуланы кесеклерин (къуру // арасында къалгъан кесегин) тюбюнде джазыгъыз
+#Была тыш суратланы URL-лери бла келиширикди
+#Келишгенле сурат болуб кёрюннюкдюле, болмаса къуру суратха джибериу кёрюннюкдюле
+# # бла башланнган тизгинле сюзюуге саналлыкъдыла
+#Бу уллу-гитче харифге сезимлиди
+
+#Бютеу хаманда айтылгъан айтыуланы кесеклерин бу тизгинни башына къошугъуз. Бу тизгинни тургъаныча къоюгъуз</pre>',
+
+# Special:Tags
+'tags' => 'Джараулу тюрлендириу белгиле',
+'tag-filter' => '[[Special:Tags|Тег]] фильтр:',
+'tag-filter-submit' => 'Фильтрлендир',
+'tags-title' => 'Тегле',
+'tags-intro' => 'Бу бет, джазылыуну тюрлениуюню кёргюзюрге боллукъ теглени эм аланы ангыламларыны списогуду.',
+'tags-tag' => 'Тегни аты',
+'tags-display-header' => 'Тюрлендириулени списокларында кёрюнюу',
+'tags-description-header' => 'Магъананы толу ангылтыуу',
+'tags-hitcount-header' => 'Белгиленнген тюрлендириуле',
+'tags-edit' => 'тюрлендир',
+'tags-hitcount' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+
+# Database error messages
+'dberr-header' => 'Бу викини проблемасы барды',
+'dberr-problems' => 'Кечериксиз! Бу сайтда техника проблемала чыкгъандыла.',
+'dberr-again' => 'Талай минутну сакълаб, джангыдан джюклеб кёрюгюз.',
+'dberr-info' => '(Билги базаны сервери бла байлам къурулалмайды:$1)',
+'dberr-usegoogle' => 'Google болушулугъу бла излеб кёрюрге боллукъсуз.',
+'dberr-outofdate' => 'Аны индекси эски болургъа боллугъун унутмагъыз.',
+'dberr-cachederror' => 'Тюбюндеги бет, изленнген бетни кэш этилген версиясыды, эмда ахыр тюрлендириулени кёргюзмезге болур.',
+
+# HTML forms
+'htmlform-invalid-input' => 'Сиз къошхан билгилени къаууму проблемагъа чурум болдула',
+'htmlform-select-badoption' => 'Сиз белгилеген багъа джараулу тюлдю',
+'htmlform-int-invalid' => 'Сиз белгилеген багъа сан тюлдю',
+'htmlform-float-invalid' => 'Сиз белгилеген багъа сан тюлдю.',
+'htmlform-int-toolow' => 'Сиз белгилеген багъа минимумну -$1 тюбюндеди',
+'htmlform-int-toohigh' => 'Сиз белгилеген багъа максимумдан - $1 башындады',
+'htmlform-submit' => 'Джибер',
+'htmlform-reset' => 'Тюрлендириулени ызына сал',
+'htmlform-selectorother-other' => 'Башха',
+
+);
diff --git a/languages/messages/MessagesKri.php b/languages/messages/MessagesKri.php
index 38a7ffe7..ab6406b8 100644
--- a/languages/messages/MessagesKri.php
+++ b/languages/messages/MessagesKri.php
@@ -71,9 +71,13 @@ $messages = array(
'category-empty' => "''Dis katigori-ya noh geht noh pej o midya foh naw.''",
'hidden-categories' => '{{PLURAL:$1|Katigori we dehm dohn ayd|Katigori-dehm we dehm dohn ayd}}',
-'qbedit' => 'Chenj',
'mytalk' => 'Mi Tohk',
+# Cologne Blue skin
+'qbedit' => 'Chenj',
+'faq' => 'Kweshtyohn-dehm we ohlman de aks',
+'faqpage' => 'Project:Kwehstyohn-dehm we ohlman de aks',
+
'returnto' => 'Go bak tu $1.',
'tagline' => 'Dis kòmòt {{SITENAME}}',
'help' => 'Ehp mi',
@@ -112,13 +116,10 @@ $messages = array(
'aboutsite' => 'Na bòt {{SITENAME}}',
'aboutpage' => 'Project:Na bòt',
'copyright' => 'Dis kòtènt-im prais nò pass $1 .',
-'copyrightpagename' => '{{wehbsait-im nem}} kohpirait',
'disclaimers' => 'Disklema-dèm',
'disclaimerpage' => 'Project:Disklema fò òltin',
'edithelp' => 'Advais foh we yu wan ehdit',
'edithelppage' => 'Help:Ehditin',
-'faq' => 'Kweshtyohn-dehm we ohlman de aks',
-'faqpage' => 'Project:Kwehstyohn-dehm we ohlman de aks',
'helppage' => 'Help:Kohntehnt-dehm',
'mainpage' => 'Men Pej',
'mainpage-description' => 'Men Pej',
@@ -190,8 +191,6 @@ Luk [[Special:Version|version page]].',
'badretype' => 'Di tu paswohd-dehm noh mach.',
'userexists' => 'Ohda pohsin dohn tek da yuzanem de.
Yu go geht foh pik ohda wan.',
-'youremail' => 'E-mail:',
-'username' => 'Yuzanem:',
# Edit pages
'watchthis' => 'Wach dis pej-ya',
@@ -205,13 +204,12 @@ So dehm go sev yu IP address na di pej-im chenj istri",
If yu pres Sev bak, dehm go sev yu chenj lehk so.",
'missingcommenttext' => 'Rait yu opinyohn ohnda yah.',
'permissionserrorstext-withaction' => 'Yu noh go ebul fo $2, bicoh {{PLURAL:$1|reason|reasons}}:',
-'recreate-deleted-warn' => "'''Ebo!!: Yu de mek bak wan pej we dehm bin dohn ires.'''
+'recreate-moveddeleted-warn' => "'''Ebo!!: Yu de mek bak wan pej we dehm bin dohn ires.'''
Yu sabi if yu foh wok pan dis pej-ya.
Di log we dehm kip foh dis pej-in dilishohn de ya:",
-'deleted-notice' => 'Dehm dohn ires dis pej-ya.
+'moveddeleted-notice' => 'Dehm dohn ires dis pej-ya.
Di log we dehm kip foh dis pej-in dilishohn de ya:',
-'deletelog-fulllog' => 'Luk di wan-ol lohg',
'edit-hook-aborted' => 'Wan Hook dohn pul wetin yu chenj.
I noh eksplen wetin-mek.',
'edit-gone-missing' => 'Wi noh ebul updet dis pej-ya.
@@ -228,21 +226,12 @@ Sohmtehm dehm dohn ires am.',
'revertmerge' => 'Ònmaj',
# Diffs
-'editundo' => 'chenj am bak tu wetin i bin bi bifo',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} not shown)',
-'diff-movedto' => 'dèm dòn muf am go $1',
-'diff-styleadded' => '$1 dèm dòn add dis stail',
-'diff-added' => '$1 dèm dòn add am',
-'diff-changedto' => 'Dèm dòn chenj am tu $1',
-'diff-movedoutof' => 'Dèm dòn muf am kòmòt $1',
-'diff-styleremoved' => '$1 dèm dòn pul dis stail',
-'diff-removed' => '$1 Dèm dòn pul am',
-'diff-changedfrom' => 'Dèm dòn tek $1 mek',
-'diff-src' => 'sòce',
+'editundo' => 'chenj am bak tu wetin i bin bi bifo',
+'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} not shown)',
# Search results
-'prevn' => 'Go bak $1',
-'nextn' => 'nèks wan $1',
+'prevn' => 'Go bak {{PLURAL:$1|$1}}',
+'nextn' => 'nèks wan {{PLURAL:$1|$1}}',
'searchhelp-url' => 'Help:Kohntehnt-dehm',
'powersearch' => 'Luk fò sòmtin kyaful-wan',
'powersearch-legend' => 'Luk fò sòmtin fain-wan',
@@ -257,6 +246,8 @@ Mehmba se sohmtehm dehm indeks-dehm noh ohp-tu-det {{SITENAME}}.',
# Preferences page
'prefsnologin' => 'Yu noh kam insai di sait yet',
'searchresultshead' => 'Luk foh am',
+'youremail' => 'E-mail:',
+'username' => 'Yuzanem:',
# Upload
'upload' => 'Òplod fail',
@@ -265,6 +256,7 @@ Mehmba se sohmtehm dehm indeks-dehm noh ohp-tu-det {{SITENAME}}.',
'watchthisupload' => 'Wach dis pej-ya',
# File description page
+'file-anchor-link' => 'Fail',
'filehist-deleteone' => 'ires',
'filehist-datetime' => 'Det/Taim',
'filehist-thumb' => 'Tohmnel',
@@ -278,8 +270,8 @@ Di [[Special:WhatLinksHere/$2|ful list]] de yah.',
# File deletion
'filedelete-submit' => 'Ires',
-'brokenredirects-edit' => '(chenj)',
-'brokenredirects-delete' => '(ires)',
+'brokenredirects-edit' => 'chenj',
+'brokenredirects-delete' => 'ires',
# Miscellaneous special pages
'movethispage' => 'Muf dis pej-ya',
@@ -325,6 +317,7 @@ Di [[Special:WhatLinksHere/$2|ful list]] de yah.',
# Undelete
'undelete-search-submit' => 'Luk foh am',
+'sp-contributions-talk' => 'Tòk',
'sp-contributions-submit' => 'Luk foh am',
# What links here
diff --git a/languages/messages/MessagesKrj.php b/languages/messages/MessagesKrj.php
index bb33bf81..06a8d4eb 100644
--- a/languages/messages/MessagesKrj.php
+++ b/languages/messages/MessagesKrj.php
@@ -101,19 +101,23 @@ $messages = array(
'category-media-header' => 'Manga midya sa "$1"',
'category-empty' => "''Wara it manga artikolo okon medya ang katergorya nga dya.''",
-'about' => 'Angut sa Iwan',
-'article' => 'Pahina kasudlan',
-'newwindow' => "(gabokas sa bag-o nga ''window'')",
-'cancel' => 'Kanselar',
+'about' => 'Angut sa Iwan',
+'article' => 'Pahina kasudlan',
+'newwindow' => "(gabokas sa bag-o nga ''window'')",
+'cancel' => 'Kanselar',
+'moredotdotdot' => 'Raku pa...',
+'mypage' => 'Akun nga pahina',
+'anontalk' => "Istoryahun ang dya nga ''IP''",
+
+# Cologne Blue skin
'qbfind' => 'Sagap',
'qbbrowse' => 'Bilid',
'qbedit' => 'Iislan',
'qbpageoptions' => 'Dya nga Pahina',
'qbpageinfo' => 'Konteksto',
'qbspecialpages' => 'Manga espesyal nga pahina',
-'moredotdotdot' => 'Raku pa...',
-'mypage' => 'Akun nga pahina',
-'anontalk' => "Istoryahun ang dya nga ''IP''",
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Sayup',
'returnto' => 'Balik sa $1.',
@@ -160,8 +164,6 @@ $messages = array(
'disclaimerpage' => 'Project:Panginwala nga Pangtanan',
'edithelp' => 'Panoytoy sa Pag-ilis',
'edithelppage' => 'Help:Pag-ilis',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'mainpage' => 'Pono nga Pahina',
'mainpage-description' => 'Pono nga Pahina',
'privacy' => 'Surundun sa Privacy',
@@ -200,7 +202,6 @@ Lantawa sa [[Special:Version|version kang page]].',
# General errors
'error' => 'Sayup',
'databaseerror' => 'Sayup sa database',
-'nodb' => "Indi mapili ang ''database'' nga $1",
'readonly' => "Napintalan ang ''database''",
'internalerror' => 'Sayup internal',
'internalerror_info' => 'Sayup internal: $1',
@@ -216,8 +217,6 @@ Lantawa sa [[Special:Version|version kang page]].',
'remembermypassword' => "Tandaan ang akun nga ''log-in'' sa dya nga ''computer''",
'nologinlink' => "Himo ka sangka ''account''",
'createaccount' => "Himo ka ''account''",
-'youremail' => 'E-mail:',
-'email' => 'E-mail',
# Edit pages
'preview' => 'Bilid',
@@ -225,6 +224,8 @@ Lantawa sa [[Special:Version|version kang page]].',
# Preferences page
'skin-preview' => 'Bilid',
'searchresultshead' => 'Sagap',
+'youremail' => 'E-mail:',
+'email' => 'E-mail',
# Recent changes
'hide' => 'Itago',
@@ -235,11 +236,14 @@ Lantawa sa [[Special:Version|version kang page]].',
# Special:ListFiles
'imgfile' => 'inayap',
+# File description page
+'file-anchor-link' => 'Inayap',
+
# File deletion
'filedelete-submit' => 'Para',
-'brokenredirects-edit' => '(Iislan)',
-'brokenredirects-delete' => '(para)',
+'brokenredirects-edit' => 'Iislan',
+'brokenredirects-delete' => 'para',
'withoutinterwiki-submit' => 'Ipakita',
@@ -267,6 +271,7 @@ Lantawa sa [[Special:Version|version kang page]].',
# Undelete
'undelete-search-submit' => 'Sagap',
+'sp-contributions-talk' => 'Wakal',
'sp-contributions-submit' => 'Sagap',
# What links here
diff --git a/languages/messages/MessagesKs.php b/languages/messages/MessagesKs.php
index 603b37b0..22a5d8e2 100644
--- a/languages/messages/MessagesKs.php
+++ b/languages/messages/MessagesKs.php
@@ -1,6 +1,9 @@
<?php
/** Kashmiri (कश्मीरी - (كشميري))
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php
index 19296065..5c981756 100644
--- a/languages/messages/MessagesKsh.php
+++ b/languages/messages/MessagesKsh.php
@@ -136,6 +136,7 @@ $specialPageAliases = array(
'Protectedpages' => array( 'Siggeschotz' ),
'Protectedtitles' => array( 'Tittelschotz' ),
'Allpages' => array( 'All Sigge' ),
+ 'Prefixindex' => array( 'Sigge met Aanfang' ),
'Ipblocklist' => array( 'Jesperrt', 'Jeshpächt' ),
'Specialpages' => array( 'Sondersigge', 'Söndersigge' ),
'Contributions' => array( 'Beidräch', 'Beidrääsh' ),
@@ -148,6 +149,7 @@ $specialPageAliases = array(
'Booksources' => array( 'ISBN', 'Böcher', 'Böösher' ),
'Categories' => array( 'Saachjruppe' ),
'Export' => array( 'Expocht' ),
+ 'Version' => array( 'Väsjohn' ),
'Allmessages' => array( 'MediaWiki-Appachtemang' ),
'Log' => array( 'Logböcher', 'Logböösher' ),
'Blockip' => array( 'IP-Sperre' ),
@@ -182,9 +184,13 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#ÖMLEIDUNG', '#REDIRECT' ),
- 'language' => array( '0', '#SHPROOCH', '#SPROCH:', '#SPRACHE:', '#LANGUAGE:' ),
- 'hiddencat' => array( '1', '__VERSHTOCHE_SAACHJRUPP__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ),
+ 'redirect' => array( '0', '#ÖMLEIDE OP', '#ÖMLEIDE', '#LEIDT ÖM OP', '#ÖMLEIDUNG', '#WEITERLEITUNG', '#REDIRECT' ),
+ 'nogallery' => array( '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__NOGALLERY__' ),
+ 'toc' => array( '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
+ 'img_right' => array( '1', 'rähß', 'räts', 'rechts', 'right' ),
+ 'img_left' => array( '1', 'lengks', 'lenks', 'links', 'left' ),
+ 'language' => array( '0', '#SHPROOCH:', '#SPROCH:', '#SPRACHE:', '#LANGUAGE:' ),
+ 'hiddencat' => array( '1', '__VERSHTOCHE_SAACHJRUPP__', '__VERSTECKTE_KATEGORIE__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ),
);
$imageFiles = array(
@@ -222,6 +228,7 @@ $messages = array(
'tog-enotifminoredits' => 'Scheck mer och en E-Mail för de klein Mini-Änderunge',
'tog-enotifrevealaddr' => 'Zeich dä Andere ming E-Mail Adress aan, en de Benohrichtijunge per E-Mail',
'tog-shownumberswatching' => 'Zeich de Aanzahl Metmaacher, die op die Sigg am oppasse sin',
+'tog-oldsig' => 'Esu&nbsp;süht&nbsp;Ding „Ongerschreff“&nbsp;us:',
'tog-fancysig' => 'Donn de „Ungerschreff“ als Wiki-Tex behandelle (ohne enne automattesche Lengk)',
'tog-externaleditor' => 'Nemm jedes Mol en extern Editor-Projramm (Doför bruchs de spezjell Enstellunge op Dingem Kompjutor)',
'tog-externaldiff' => 'Nemm jedes Mol en extern Diff-Projramm (Doför bruchs de spezjell Enstellunge op Dingem Kompjutor)',
@@ -245,6 +252,13 @@ $messages = array(
'underline-never' => 'nä',
'underline-default' => 'nemm dem Brauser sing Enstellung',
+# Font style option in Special:Preferences
+'editfont-style' => 'De Zoot Schreff en däm Feld för der Sigge iere Täx erin ze schriive:',
+'editfont-default' => 'Em Brauser sing Ennschtällung',
+'editfont-monospace' => 'En SchievMaschineSchreff',
+'editfont-sansserif' => 'En Jrotesk-Schreff',
+'editfont-serif' => 'En Schreff met Serife',
+
# Dates
'sunday' => 'Sonndaach',
'monday' => 'Mondaach',
@@ -304,7 +318,7 @@ $messages = array(
'category-media-header' => 'Dateie en de Saachjrupp "$1"',
'category-empty' => "''En dä Saachjrupp heh sin kein Sigge un kein Dateie.''",
'hidden-categories' => 'Verstoche Saachjrupp{{PLURAL:$1||e|e}}',
-'hidden-category-category' => 'Verstoche Saachjruppe', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verstoche Saachjruppe',
'category-subcat-count' => 'En dä Saachrupp heh {{PLURAL:$2|es ein Ungerjrupp dren:|sin $2 Ungerjruppe dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun weede $1 heh|ävver dovun weed heh keine}} aanjezeich:|sinn_er kein Ungerjruppe dren.}}',
'category-subcat-count-limited' => 'En dä Saachrupp heh {{PLURAL:$1|es ein Ungerjrupp dren:|sin $1 Ungerjruppe dren:|sin kein Ungerjruppe dren.}}',
'category-article-count' => 'En dä Saachjrupp heh {{PLURAL:$2|es ein Sigg dren:|sin $2 Sigge dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun weede $1 heh|ävver dovun weed heh keine}} aanjezeich:|sin kein Sigge dren.}}',
@@ -312,6 +326,8 @@ $messages = array(
'category-file-count' => 'En dä Saachrupp heh {{PLURAL:$2|es ein Datei dren:|sin $2 Dateie dren, {{PLURAL:$1|un dovun weed heh nur ein|un dovun weede $1 heh|ävver dovun weed heh kein}} aanjezeich:|es kein Datei dren.}}',
'category-file-count-limited' => 'En dä Saachrupp heh {{PLURAL:$1|es ein Datei dren:|sin $1 Dateie dren:|es kein Datei dren.}}',
'listingcontinuesabbrev' => '… (wigger)',
+'index-category' => 'Sigge, di de Söhkmaschine opnämme sulle',
+'noindex-category' => 'Sigge, di de Söhkmaschine nit opnämme sulle',
'mainpagetext' => "'''MediaWiki es jetz enstalleet.'''",
'mainpagedocfooter' => 'Luur en et (änglesche) [http://meta.wikimedia.org/wiki/Help:Contents Handboch] wann De wesse wells wie de Wiki-Soffwär jebruch un bedeent wääde muss.
@@ -322,10 +338,18 @@ Dat es och all op Änglesch:
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-'about' => 'Üvver',
-'article' => 'Atikkel',
-'newwindow' => '(Mäht e neu Finster op, wann Dinge Brauser dat kann)',
-'cancel' => 'Stopp! Avbreche!',
+'about' => 'Üvver',
+'article' => 'Atikkel',
+'newwindow' => '(Mäht e neu Finster op, wann Dinge Brauser dat kann)',
+'cancel' => 'Stopp! Avbreche!',
+'moredotdotdot' => 'Mieh&nbsp;…',
+'mypage' => 'ming Metmaacher-Sigg',
+'mytalk' => 'ming Klaafsigg',
+'anontalk' => 'Klaaf för de IP-Adress',
+'navigation' => 'Jangk noh',
+'and' => ', un',
+
+# Cologne Blue skin
'qbfind' => 'Fingk',
'qbbrowse' => 'Aanluure',
'qbedit' => 'Ändere',
@@ -333,15 +357,35 @@ Dat es och all op Änglesch:
'qbpageinfo' => 'Üvver de Sigg',
'qbmyoptions' => 'Ming Sigge',
'qbspecialpages' => 'Spezial Sigge',
-'moredotdotdot' => 'Mieh&nbsp;…',
-'mypage' => 'ming Metmaacher-Sigg',
-'mytalk' => 'ming Klaafsigg',
-'anontalk' => 'Klaaf för de IP-Adress',
-'navigation' => 'Jangk noh',
-'and' => ', un',
-
-# Metadata in edit box
-'metadata_help' => 'Metta-Daate:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Ne neue Afschnet onge draan!',
+'vector-action-delete' => 'Fottschmiiße!',
+'vector-action-move' => 'Ömnänne!',
+'vector-action-protect' => 'Schöze!',
+'vector-action-undelete' => 'Zerökholle!',
+'vector-action-unprotect' => 'Schoz ophävve!',
+'vector-namespace-category' => 'Saachjroppesigg',
+'vector-namespace-help' => 'Hölpsigg',
+'vector-namespace-image' => 'Datei',
+'vector-namespace-main' => 'Wikisigg',
+'vector-namespace-media' => 'Medijesigg',
+'vector-namespace-mediawiki' => 'Täx/Nohreesch',
+'vector-namespace-project' => 'Projäksigg',
+'vector-namespace-special' => '{{int:nstab-special}}',
+'vector-namespace-talk' => 'Klaafsigg',
+'vector-namespace-template' => 'Schablohn',
+'vector-namespace-user' => 'Metmaachersigg',
+'vector-view-create' => 'Neu Schriive!',
+'vector-view-edit' => 'Ändere!',
+'vector-view-history' => 'Versione zeije!',
+'vector-view-view' => 'Lesse!',
+'vector-view-viewsource' => 'Wikitex aanlooere!',
+'actions' => 'Akßjuhne',
+'namespaces' => 'Appachtemangs',
+'variants' => 'Variante',
'errorpagetitle' => 'Fähler',
'returnto' => 'Jangk widder noh: „$1“.',
@@ -391,18 +435,22 @@ Dat es och all op Änglesch:
'otherlanguages' => 'En ander Sproche',
'redirectedfrom' => '(Ömjeleit vun $1)',
'redirectpagesub' => 'Ömleitungssigg',
-'lastmodifiedat' => 'Heh di Sigg es et letz aam $1 öm $2 Uhr jeändert woode.', # $1 date, $2 time
+'lastmodifiedat' => 'Heh di Sigg es et letz aam $1 öm $2 Uhr jeändert woode.',
'viewcount' => 'De Sigg es bes jetz {{PLURAL:$1|eimol|$1 Mol|keijmol}} avjerofe woode.',
'protectedpage' => 'Jeschötzte Sigg',
'jumpto' => 'Jangk noh:',
'jumptonavigation' => 'Noh de Navigation',
'jumptosearch' => 'Jangk Söke!',
+'view-pool-error' => 'Deiht uns leid, de ßöörvere han em Momang ze vill ze donn.
+Zoh vill Metmaacher versöhke di Sigg heh aanzelohre.
+Bes esu joot un waat e Weilsche, ih dat de versöhks, di Sigg noch ens opzeroofe.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Üvver de {{SITENAME}}',
'aboutpage' => 'Project:Üvver de {{SITENAME}}',
'copyright' => 'Dä Enhald steiht unger de $1.',
-'copyrightpagename' => 'Lizenz',
'copyrightpage' => '{{ns:project}}:Lizenz',
'currentevents' => 'Et Neuste',
'currentevents-url' => 'Project:Et Neuste',
@@ -410,8 +458,6 @@ Dat es och all op Änglesch:
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Hölp för et Bearbeide',
'edithelppage' => 'Help:Hölp',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Hölp',
'mainpage' => 'Haupsigg',
'mainpage-description' => 'Haupsigg',
@@ -494,10 +540,6 @@ Dä letzte Befähl för de Daatebank es jewäse:
<blockquote><code>$1</code></blockquote>
un kohm us däm Projramm singe Funktion: „<code>$2</code>“.
De Datebank meld dä Fähler: „<code>$3: $4</code>“.',
-'noconnect' => 'Schad! Dat Wiki hät e täschnesch Problem: Mer kunnte kein Verbindung met däm Daatebanksörver krije.<br />
-$1',
-'nodb' => 'Kunnt de Daatebank „$1“ nit uswähle',
-'cachederror' => 'Dat hee es en Kopie vun dä Sigg us em Cache. Künnt sin, se es nit aktuell.',
'laggedslavemode' => '<strong>Opjepass:</strong> Künnt sin, dat heh nit dä neuste Stand vun dä Sigg aanjezeich weed.',
'readonly' => 'De Daatebank es jesperrt',
'enterlockreason' => 'Jevv aan, woröm un för wie lang dat de Daatebank jesperrt wääde soll',
@@ -512,6 +554,7 @@ un doht em och de URL vun dä Sigg heh sage.',
'readonly_lag' => 'De Daatebank es för en koote Zigg jesperrt, för de Daate avzejliche.',
'internalerror' => 'De Wiki-Soffwär hät ene Fähler jefunge',
'internalerror_info' => 'Enne ennere Fäähler en de ßofwäer es opjetrodde: $1',
+'fileappenderror' => 'Mer kunnte „$1“ nit aan „$2“ aanhange.',
'filecopyerror' => 'Kunnt de Datei „$1“ nit noh „$2“ kopeere.',
'filerenameerror' => 'Kunnt de Datei „$1“ nit op „$2“ ömdäufe.',
'filedeleteerror' => 'Kunnt de Datei „$1“ nit fottschmieße.',
@@ -521,7 +564,7 @@ un doht em och de URL vun dä Sigg heh sage.',
'unexpected' => 'Domet hät keiner jerechnet: „$1“=„$2“',
'formerror' => 'Dat es donevve jejange: Wor nix, met däm Fomular.',
'badarticleerror' => 'Dat jeiht met heh dä Sigg nit ze maache.',
-'cannotdelete' => 'De Sigg oder de Datei hee fottzeschmieße es nit müjjelich. Mach sin, dat ene andere Metmaacher flöcker wor, hät et vürher jedon, un jetz es die Sigg ald fott.',
+'cannotdelete' => 'De Sigg oder de Datei „$1“ fottzeschmieße es nit müjjelich. Maach sin, dat ene andere Metmaacher flöcker wor, hät et vürher jedon, un jetz es se ald fott.',
'badtitle' => 'Verkihrte Üvverschreff',
'badtitletext' => 'De Üvverschreff es esu nit en Odenung. Et muss jet dren stonn.
Et künnt sin, dat ein vun de speziell Zeiche dren steiht,
@@ -571,7 +614,6 @@ $2',
'virus-unknownscanner' => 'Dat Projamm fö noh Komjuterviere ze sööke kenne mer nit:',
# Login and logout pages
-'logouttitle' => 'Uslogge',
'logouttext' => "'''Jetz bes de usjelogg'''
Do künnts op de {{SITENAME}} wigger maache, als ene namelose Metmaacher. Do kanns De ävver och [[Special:UserLogin|widder enlogge]], als däselve oder och ene andere Metmaacher.
@@ -580,7 +622,6 @@ Künnt sin, dat De de ein oder ander Sigg immer wigger aanjezeich kriss, wie wan
Dinge Zojang för heh es do.
Do bes jetz aanjemeldt.
Denk dran, Do künnts Der [[Special:Preferences|Ding Enstellunge heh op de {{SITENAME}} zeräächmaache]].',
-'loginpagetitle' => 'Enlogge',
'yourname' => 'Metmaacher Name:',
'yourpassword' => 'Passwood',
'yourpasswordagain' => 'Noch ens dat Passwood',
@@ -602,26 +643,8 @@ Denk dran, Do künnts Der [[Special:Preferences|Ding Enstellunge heh op de {{SIT
'createaccountmail' => 'Scheck mer en E-Mail met Passwood',
'badretype' => 'Ding zwëij ennjejovve Paßßwööter sinn nit ejaal. Do muss De Dich för ein entscheide.',
'userexists' => 'Ene Metmaacher met däm Name jitt et ald. Schad. Do muss De Der ene andere Name usdenke.',
-'youremail' => 'E-Mail *',
-'username' => 'Metmaacher Name:',
-'uid' => 'Metmaacher Nommer:',
-'prefs-memberingroups' => 'Bes en {{PLURAL:$1|de Metmaacherjrupp:|<strong>$1</strong> Metmaacherjruppe:|keijn Metmaacherjruppe.}}',
-'yourrealname' => 'Dinge richtije Name *',
-'yourlanguage' => 'Die Sproch, die et Wiki kalle soll:',
-'yourvariant' => 'Ding Variant',
-'yournick' => 'Name för en Ding Ungerschreff:',
-'badsig' => 'Di Ungeschreff jëijd_esu nit — luer noh dem HTML do_dren un maach et rėshtėsh.',
-'badsiglength' => 'Ding „Ungerschref“ es zoo lang. Et dörve nit nieh wi {{PLURAL:$1|eij|$1|keij}} Zeische do dren sin.',
-'yourgender' => 'Do bes *',
-'gender-unknown' => 'wesse mer nit',
-'gender-male' => 'Kääl odder Jung',
-'gender-female' => 'Möhn, Weech odder Mädche',
-'prefs-help-gender' => '* Moß mer nit aanjevve, un wann et aanjejovve eß, dann kallt et Wiki övver Desch als „dä Pitter“ udder „dat Tiina“, sönß uns „Metmaacher Pütz“. Dat kritt de janne Welt ze sinn, nit nur Do allein.',
-'email' => 'E-mail',
-'prefs-help-realname' => '* Dinge richtije Name - kanns De fott looße - wann De en ävver nenne wells, dann weed dä jebruch, öm Ding Beidräch domet ze schmöcke.',
'loginerror' => 'Fähler beim Enlogge',
-'prefs-help-email' => '* Ding <i lang="en">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß. Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang="en">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang="en">e-Mail</i> Adress kenne mööte.',
-'prefs-help-email-required' => 'Do moß en jöltije E-Mail-Adress aanjevve.',
+'createaccounterror' => 'Kunnt keine Zohjang för der Metmaacher-Name „$1“ aanlääje.',
'nocookiesnew' => 'Dinge neue Metmaacher Name es enjerich, ävver dat automatisch Enlogge wor dann nix.
Schad.
De {{SITENAME}} bruch Cookies, öm ze merke, wä enjelogg es.
@@ -640,7 +663,8 @@ Udder donn_[[Special:UserLogin/signup|ene neue Metmaacher aanmelde]].',
'nouserspecified' => 'Dat jeiht nit als ene Metmaacher Name',
'wrongpassword' => 'Dat Passwood oder dä Metmaacher Name wor verkihrt. Jetz muss De et noch ens versöke.',
'wrongpasswordempty' => "Dat Passwood ka'mer nit fottlooße. Jetz muss De et noch ens versöke.",
-'passwordtooshort' => 'Dat Passwood es jet koot - et mööte ald winnichstens <strong>$1</strong> Zeiche, Zeffer{{PLURAL:$1||e|e}}, un Buchstave do dren sin.',
+'passwordtooshort' => 'En Paßwööter {{PLURAL:$1|moß|möße|moß}} winnichstens {{PLURAL:ei|$1|kei}} Zeiche, Zeffer{{PLURAL:$1||e|e}}, un Bochstave dren sin.',
+'password-name-match' => 'Ding Poßwoot moß anders wi Dinge Name als ene Metmaacher sin.',
'mailmypassword' => 'Passwood verjesse?',
'passwordremindertitle' => 'Enlogge op {{SITENAME}}',
'passwordremindertext' => 'Jod müjjelich, Do wors et selver,
@@ -676,6 +700,7 @@ Ene schöne Jroß vun de {{SITENAME}}.
--
{{SITENAME}}: {{fullurl:{{Mediawiki:mainpage}}}}',
'noemail' => 'Dä Metmaacher „$1“ hät en dämm sing Enstellunge kein E-Mail Adress aanjejovve.',
+'noemailcreate' => 'Do moß en jöltijje Adräß för Ding <i lang="en">e-mail</i> aanjävve',
'passwordsent' => 'E neu Passwood es aan de E-Mail Adress vun däm Metmaacher „$1“ ungerwähs. Meld dich domet aan, wann De et häs. Dat ahle Passwood bliev erhalde un kann och noch jebruch wääde, bes dat De Dich et eetste Mol met däm Neue enjelogg häs.',
'blocked-mailpassword' => 'Ding IP Adress es blockeet.',
'eauthentsent' => 'En E-Mail es jetz ungerwähs aan de Adress, die en de Enstellunge steiht. Ih dat E-Mails üvver de {{SITENAME}} ehre E-Mail-Knopp verscheck wääde künne, muss de E-Mail Adress eets ens bestätich woode sin. Wat mer doför maache moß, steiht en dä E-Mail dren, die jrad avjescheck woode es.',
@@ -703,6 +728,7 @@ Don jlisch enlogge un donn et ändere.
Wann Dat all böömesch Dörver för Desch sin, da fojeß heh di
e-mail eijfach. Wann De en däm Wikki nit metmaache wells, och.',
+'usernamehasherror' => 'En Metmaacher iere Name darf dat Zeijche „#“ nit dren vürkumme.',
'login-throttled' => 'Do häs zo öff, zo vill, un zo lang en de letzde Zick probeet, ennzelogge.
Waat e Wielsche, ih dat De et widder versöhks.',
'loginlanguagelabel' => 'Sproch: $1',
@@ -717,7 +743,6 @@ Waat e Wielsche, ih dat De et widder versöhks.',
'retypenew' => 'Noch ens dat neue Passwood:',
'resetpass_submit' => 'E neu Zweschepasswood övvermeddele un aanmellde',
'resetpass_success' => 'Passwood jeändert. Jetz küdd_et Enlogge&nbsp;…',
-'resetpass_bad_temporary' => 'Da Zweschepasswoot es nix. Do häs ald ding Passwoot jeändert, udder De häs zweschedren ald widder e neu Passwoot pä e-mail jescheck bekumme.',
'resetpass_forbidden' => 'E Passwoot kann nit jeändert wääde.',
'resetpass-no-info' => 'Do mööts ad enjelogg sin, öm tiräk op di Sigg jonn ze dörve',
'resetpass-submit-loggedin' => 'Passwood tuusche',
@@ -725,10 +750,6 @@ Waat e Wielsche, ih dat De et widder versöhks.',
Müjjelesch, Do häs Ding Passwood ald jetuusch, künnt och sin,
Do häs Der enzwesche e neuZweschepasswood jehollt.',
'resetpass-temp-password' => 'Zweschepasswood:',
-'resetpass-log' => 'Logboch för de zeröck jesatz Paßwööter',
-'resetpass-logtext' => 'Hee es et Logbooch met de Metmaacher dänne ene Wiki-Köbes ens et Paßwoot zerök jesaz hät.',
-'resetpass-logentry' => 'hät {{GENDER:$1|däm|däm|däm Metmaacher|däm|dä}} $1 {{GENDER:$1|sing|sing|et|sing|ier}} Paßwoot zerök jesaz',
-'resetpass-comment' => 'Der Jrond för et Paßwoot zeröck setze:',
# Edit page toolbar
'bold_sample' => 'Fätte Schreff',
@@ -814,7 +835,6 @@ Do kanns och noch en et <span class=\"plainlinks\">[{{fullurl:Special:IPBlockLis
'blockededitsource' => 'Dä Wiki Tex vun <strong>Dinge Änderunge</strong> aan dä Sigg „<strong>$1</strong>“ steiht heh drunger:',
'whitelistedittitle' => 'Enlogge es nüdich för Sigge ze Ändere',
'whitelistedittext' => 'Do mööts ald $1, öm heh em Wiki Sigge ändere ze dürfe.',
-'confirmedittitle' => 'För et Sigge Ändere muss De Ding E-Mail Adress ald bestätich han.',
'confirmedittext' => 'Do muss Ding E-Mail Adress ald bestätich han, ih dat De heh Sigge ändere darfs.
Drag Ding E-Mail Adress en Ding [[Special:Preferences|ming Enstellunge]] en, un dun „Dun Ding E-Mail Adress bestätije looße“ klicke.',
'nosuchsectiontitle' => 'Dä Afschnitt ham_mer nit jefonge',
@@ -844,7 +864,13 @@ Metmaacher bes, un fings, dat heh Saache an Dich jeschrevve wääde, wo Do jar n
wahrscheinlich och nit jemeint. Denk villeich ens drüvver noh, datte Dich [[Special:UserLogin/signup|anmelde]] deis,
domet De dann donoh nit mieh met esu en Ömständ ze dun häs, wie de andere namenlose Metmaacher heh. Wann de aanjemelldt bes un deis [[Special:UserLogin|enlogge]], dann kam_mer Desch och fun alle andere Metmaacher ongerschejde.</i>',
'noarticletext' => '<span class="plainlinks">Em Momang es keine Tex op dä Sigg. Jangk en de Texte vun ander Sigge [[Special:Search/{{PAGENAME}}|noh däm Titel söke]], odder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} donn en de Logböcher donoh loore], oder [{{FULLURL:{{FULLPAGENAME}}|action=edit}} fang die Sigg aan] ze schrieve, oder jangk zeröck wo de her koms. Do hät Dinge Brauser ene Knopp för.</span>',
+'noarticletext-nopermission' => 'Op dä Sigg es em Momang nix drop.
+Do kanns noh däm Tittel vun heh dä Sigg [[Special:Search/{{PAGENAME}}|em Tex op ander Sigge söhke]],
+udder en dä zopaß <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbööscher nohloore]</span>.',
'userpage-userdoesnotexist' => 'Enne Metmaacher „$1“ hammer nit, beß De secher, dat De die Metmaachersigg ändere oder aanläje wellss?.',
+'userpage-userdoesnotexist-view' => 'Ene Metmaacher mem Naame „$1“ hät sesch noch nih aanjemeldt',
+'blocked-notice-logextract' => '{{GENDER:$1|Dä Metmaacher|Dat|Dä Metmaacher|Die Metmaacheren|Et}} es jraad jesperrt.
+Heh kütt der neuste Enndraach drövver uss_em Logbooch övver et Metmaacher_Sperre:',
'clearyourcache' => "<br clear=\"all\" style=\"clear:both\">
'''Opjepass:'''
Noh em Speichere, künnt et sin, datte Dingem Brauser singe Cache Speicher
@@ -858,9 +884,12 @@ Beim '''Internet Explorer''' dröck op ''Ctrl'' / ''Strg'' un Klick op ''Refresh
Beim '''Konqueror:''' klick dä ''Reload''-Knopp oder dröck dä ''F5''-Knopp.
Beim '''Opera''' kanns De üvver et Menue jonn un
däm janze Cache singe Enhald üvver ''Tools?Preferences'' fottschmieße, neuerdings jeiht et och met ''Alt+F5''.",
-'usercssjsyoucanpreview' => '<b>Tipp:</b> Dun met däm <b style="padding:2px; background-color:#ddd;
+'usercssyoucanpreview' => '<b>Tipp:</b> Dun met däm <b style="padding:2px; background-color:#ddd;
color:black">Vör-Aansich Zeije</b>-Knopp usprobeere, wat Ding neu
Metmaacher_CSS/Java_Skripp mäht, ih dat et avspeichere deis!',
+'userjsyoucanpreview' => '<b>Tipp:</b> Dun met däm <b style="padding:2px; background-color:#ddd;
+color:black">Vör-Aansich Zeije</b>-Knopp usprobeere, wat Ding neu
+Metmaacher_Java_Skripp mäht, ih dat et avspeichere deis!',
'usercsspreview' => '<b>Opjepass: Do bes heh nor am Usprobeere, wat Ding
Metmaacher_CSS mäht, et es noch nit jesechert!</b>',
'userjspreview' => "<strong>Opjepass:</strong> Do bes heh nor am Usprobeere, wat Ding
@@ -936,13 +965,14 @@ Jetz kanns De Ding Änderunge nit mieh avspeichere.
Dun se bei Dir om Rechner fasshalde un versök et späder noch ens.
Nävvebei, dä Datenbank-Köbes hät för et Sperre och ene Jrund aanjejovve: $1",
-'protectedpagewarning' => "'''Opjepass: Die Sigg hee es jäje Veränderunge jeschötz. Nor de Wiki-Köbesse künne se ändere.'''",
-'semiprotectedpagewarning' => "'''Opjepass:''' Die Sigg hee es halv jesperrt, wie mer sage, dat heiß, Do muss aanjemeldt un enjelogg sin, wann De dran ändere wells.",
+'protectedpagewarning' => "'''Opjepass: Die Sigg heh es jäje Veränderunge jeschötz. Nor de Wiki-Köbesse künne se ändere.'''
+Heh kütt der neuste Enndraach em Logbooch för di Sigg:",
+'semiprotectedpagewarning' => "'''Opjepass:''' Die Sigg heh es halv jesperrt, wie mer sage, dat heiß, Do muss aanjemeldt un enjelogg sin, wann De dran ändere wells.",
'cascadeprotectedwarning' => "'''Opjepaß:''' Die Sigg es jeschöz, un nur de Wiki-Köbesse künne se ändere. Se es en en Schotz-Kaskad enjebonge, zosamme met dä {{PLURAL:$1|Sigg|Sigge}}:",
-'titleprotectedwarning' => "<span style=\"text-transform:uppercase\"> Opjepaß! </span> Di Sigg hee is jesperrt woode. Bloß [[Special:ListGroupRights|bestemmpte]] Metmaacher dörve di Sigg neu aanläje.'''",
-'templatesused' => 'De Schablone, die vun dä Sigg hee jebruch wääde, sinn:',
-'templatesusedpreview' => 'Schablone en dä Vör-Aansich hee:',
-'templatesusedsection' => 'Schablone en däm Avschnedd hee:',
+'titleprotectedwarning' => "<span style=\"text-transform:uppercase\"> Opjepaß! </span> Di Sigg heh is jesperrt woode. Bloß [[Special:ListGroupRights|bestemmpte]] Metmaacher dörve di Sigg neu aanläje.'''",
+'templatesused' => '{{PLURAL:$1|De Schablon|De $1 Schablone|Kein Schablone}}, die en dä Sigg heh jebruch {{PLURAL:$1|weed|wääde|wääde}}, sinn:',
+'templatesusedpreview' => '{{PLURAL:$1|De Schablon|Schablone|-nix-}} en dä Vör-Aansich heh:',
+'templatesusedsection' => '{{PLURAL:$1|De Schablon|Schablone|-nix-}} en däm Avschnedd heh:',
'template-protected' => '(jeschöz)',
'template-semiprotected' => '(halfjeschöz - tabu för neu Metmaacher un ohne Enlogge)',
'hiddencategories' => 'Die Sigg heh is en {{PLURAL:$1|de verstoche Saachjrupp: |$1 verstoche Saachjruppe: |keij verstoche Saachjruppe dren.}}',
@@ -950,15 +980,16 @@ Nävvebei, dä Datenbank-Köbes hät för et Sperre och ene Jrund aanjejovve: $1
'nocreatetitle' => 'Neu Sigge Aanläje eß nit einfach esu müjjelesch.',
'nocreatetext' => 'Sigge neu aanläje es nor müjjelich, wann de [[Special:UserLogin|enjelogg]] bes. Der ohne kanns De ävver Sigge ändere, die ald do sin.',
'nocreate-loggedin' => 'Do häs nit dat Rääch, neu Sigge aanzelääje.',
+'sectioneditnotsupported-title' => 'Afschnedde Ändere is nit zohjelohße',
+'sectioneditnotsupported-text' => 'Afschnedde Ändere is en heh dä Sigg nit zohjelohße.',
'permissionserrors' => 'Dat jeit nit, dat darfs de nit.',
'permissionserrorstext' => 'Do häs nit dat Rääch, dat ze maache, {{PLURAL:$1|dä Jrund es:|de Jründe sin:|oohne Jrund.}}',
'permissionserrorstext-withaction' => 'Do häs nit dat Rääch $2, {{PLURAL:$1|dä Jrund es:|de Jründe sin:|oohne Jrund.}}',
-'recreate-deleted-warn' => "'''Opjepaß:''' Do bes om bäste Wääsh, en Sigg neu aanzelääje, di doför ald ens fottjeschmeße woode wohr.
-Bes förseschtesch un övverlääsch Der, of dat en joode Idee es, di Sigg widder opzemaache.
-Domet De Bescheid weiß, hee dä Endraach em Logboch vum Sigge-Fottschmieße mem Jrond,
-woröm di Sigg dohmohls fottjeschmesse woode es:",
-'deleted-notice' => 'Di Sigg es fottjeschmeße. He kütt e Shtöck uß däm Logbooch fum Sigge-Fotschmieße, för hee di Sigg.',
-'deletelog-fulllog' => 'Et kompläte Logboch aanloore',
+'recreate-moveddeleted-warn' => "'''Opjepaß:''' Do bes om bäste Wääsh, en Sigg neu aanzelääje, di doför ald ens fottjeschmeße woode wohr.
+
+Bes förseschtesch un övverlääsch Der, of dat en joode Idee es, di Sigg widder opzemaache. Domet De Bescheid weiß, hee de Endrääsh em Logboch vum Sigge-Ömnänne, un em Logboch vum Sigge-Fottschmieße mem Jrond, woröm di Sigg dohmohls fottjeschmesse woode es:",
+'moveddeleted-notice' => 'Heh di Sigg es fottjeschmeße. E Shtöck uß dä Logböösher fum Sigge-Fottschmieße un fum Sigge-Ömnänne för di Sigg kütt jetz, en dä Hoffnung, dat dat Der hellef.',
+'log-fulllog' => 'Donn dat janze Logboch aanloore',
'edit-hook-aborted' => 'Et Ändere wood affjebroche övver ene sujenannte „Hoke“ en de ßoffwäer.
Ene Jrond weße mer nit.',
'edit-gone-missing' => 'Kunnt di Sigg nit änndere. Se schingk verschwunde un weed fottjeschemeße woode sin.',
@@ -994,9 +1025,9 @@ Als Jrund för et Sperre es enjedraare: ''$2''",
'viewpagelogs' => 'De Logböcher för heh di Sigg beloore',
'nohistory' => 'Et jitt kei fottjeschmesse, zeröckhollba Versione vun dä Sigg.',
'currentrev' => 'Neuste Version',
-'currentrev-asof' => 'De neuste Version fum $1',
-'revisionasof' => 'Version vum $1',
-'revision-info' => 'Dat es de Version vum $1 vum $2.', # Additionally available: $3: revision id
+'currentrev-asof' => 'De neuste Version fum $2 öm $3 Uhr',
+'revisionasof' => 'De Version vum $2 öm $3 Uhr',
+'revision-info' => 'Dat heh es de övverhollte Version $3, {{GENDER:$6|vum|vum|vum Metmaacher|vum|vun dä}} $2 aam $4 öm $5 Uhr afjeshpeichert.',
'previousrevision' => '← De Version dovör zeije',
'nextrevision' => 'De Version donoh zeije →',
'currentrevisionlink' => 'De neuste Version',
@@ -1016,7 +1047,7 @@ Verklierung:
<b>M</b> = en klein <b>M</b>ini-Änderung,
Dattum+Uhrzigg = don de Version fun dämm Daach un dä Zigg aanzeije.',
'history-fieldset-title' => 'Wat uß de Verjangeheit ußwähle?',
-'deletedrev' => '[fott]',
+'history-show-deleted' => 'blohß fottjeschmeße Versione',
'histfirst' => 'Ählste',
'histlast' => 'Neuste',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes|0 Byte}})',
@@ -1025,69 +1056,107 @@ Dattum+Uhrzigg = don de Version fun dämm Daach un dä Zigg aanzeije.',
# Revision feed
'history-feed-title' => 'De Versione',
'history-feed-description' => 'Ählere Versione vun dä Sigg en de {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 öm $2', # user at time
+'history-feed-item-nocomment' => '$1 aam $3 öm $4 Uhr',
'history-feed-empty' => 'De aanjefrochte Sigg jitt et nit. Künnt sin, dat se enzwesche fottjeschmesse udder ömjenannt woode es. Kanns jo ens [[Special:Search|em Wiki söke looße]], öm de zopass, neu Sigge ze finge.',
# Revision deletion
-'rev-deleted-comment' => '(„Koot Zosammejefass, Quell“ usjeblendt)',
-'rev-deleted-user' => '(Metmaacher Name usjeblendt)',
-'rev-deleted-event' => '(Logboch-Enndraach fottjenomme)',
-'rev-deleted-text-permission' => "Die Version fun dä Sigg es '''fottjeschmeße'''.
-Wann Ehr en [{{FULLURL:Spezial:Log/delete|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:deletionlog}}}}] loore doht, künnt Ehr velleisch mieh do drövver lesse.",
-'rev-deleted-text-view' => '{{int:rev-deleted-text-permission}} Als ene Wiki-Köbes kanns De se ävver bekike.',
-'rev-deleted-no-diff' => "De kanns de Ongerscheide nit beloore, denn ein vun de Versione es '''fottjeschmeße'''.
-Mieh Einzelheite hät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:Deletionlog}}}}].",
-'rev-deleted-unhide-diff' => "Ein vun de Versione es '''fottjeschmeße'''.
-Mieh Einzelheite hät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:Deletionlog}}}}].
+'rev-deleted-comment' => '(„Koot Zosammejefass, Quell“ usjeblendt)',
+'rev-deleted-user' => '(Metmaacher Name usjeblendt)',
+'rev-deleted-event' => '(Logboch-Enndraach fottjenomme)',
+'rev-deleted-user-contribs' => '[Däm Metmaacher singe Name udder sing <i lang="en">IP</i>-Addräß wood veschtoche, un heh di Änderung douch nit mieh en de Leß met de Beidrääsch op]',
+'rev-deleted-text-permission' => "Die Version fun dä Sigg es '''fottjeschmeße'''.
+Wann Ehr en [{{FULLURL:{{#spezial:Log}}/delete|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:deletionlog}}}}] loore doht, künnt Ehr velleisch mieh do drövver lesse.",
+'rev-deleted-text-unhide' => '{{int:rev-deleted-text-permission}} Als ene Wiki-Köbes kanns De [$1 se ävver doch bekike], wann De wells.',
+'rev-suppressed-text-unhide' => "Die Version fun dä Sigg es '''verschtoche'''.
+Wann Ehr en [{{FULLURL:{{#spezial:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:suppressionlog}}}}] loore doht, künnt Ehr velleisch mieh do drövver lesse.
+Als ene Wiki-Köbes kanns De [$1 se ävver doch bekike], wann De wells.",
+'rev-deleted-text-view' => '{{int:rev-deleted-text-permission}} Als ene Wiki-Köbes kanns De se ävver bekike.',
+'rev-suppressed-text-view' => "Die Version fun dä Sigg es '''verschtoche'''.
+Als ene Wiki-Köbes kanns De se ävver doch bekike, wann De wells.
+Wann Ehr en [{{FULLURL:{{#spezial:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:suppressionlog}}}}] loore doht, künnt Ehr velleisch mieh do drövver lesse.",
+'rev-deleted-no-diff' => "De kanns de Ongerscheide nit beloore, ein vun de Versione es '''fottjeschmeße'''.
+Mieh Einzelheite hät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:deletionlog}}}}].",
+'rev-deleted-unhide-diff' => "Ein vun de Versione es '''fottjeschmeße'''.
+Mieh Einzelheite hät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:deletionlog}}}}].
Als ene Wiki_Köbes kanns De [$1 de Ungerscheide ävver aankike] wann De wells.",
-'rev-delundel' => 'zeije/usblende',
-'revisiondelete' => 'Versione fottschmieße un widder zeröck holle',
-'revdelete-nooldid-title' => 'Kein Version aanjejovve, oddeer en Stuß-Nommer',
-'revdelete-nooldid-text' => 'Do häs kein Version aanjejovve, womet mer dat maache sulle. Odder de Nommer wohr Stuß, verkeeht, et jitt se nit, odder De wellß de neuste Version fott maache.',
-'revdelete-nologtype-title' => 'Do häs kein Zoot vun Logboch aanjejovve.',
-'revdelete-nologtype-text' => 'Do häs kein Zoot vun Enndrääsh em Logboch aanjejovve, woh mer dat met maache sulle.',
-'revdelete-toomanytargets-title' => 'Do häs zoo vill Ziile aanjejovve.',
-'revdelete-toomanytargets-text' => 'Do häs zo vill Zoote vun Enndrääsh em Logboch aanjejovve, woh mer dat met maache sulle.',
-'revdelete-nologid-title' => 'Dat es ene onjöltijje Enndraach em Logboch.',
-'revdelete-nologid-text' => 'Do häs keine Enndraach em Logboch aanjejovve, woh mer dat met maache sulle, udder dä Enndraach jidd_et jaa_nit.',
-'revdelete-selected' => "'''{{PLURAL:$2|Ein usjewählte Version|$2 usjewählte Versione|Kein Version usjewählt}} vun [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Dä ußjewählte Logboch-Endrach|De Ußjewählte Logboch-Endrähsch}}:'''",
-'revdelete-text' => "'''Dä fottjeschmesse Sigge ehre Enhald kanns De nit mieh aanluure. Se blieve ävver en de Liss met de Versione un en de Logböcher dren.'''
-
+'rev-suppressed-unhide-diff' => "Ein vun de Versione heh es '''verschtoche'''.
+Mieh Einzelheite hät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:suppressionlog}}}}].
+Als ene Wiki_Köbes kanns De [$1 de Ungerscheide ävver aankike] wann De wells.",
+'rev-deleted-diff-view' => "Ein vun de Versione heh es '''fottjeschmeße'''.
+Mieh Einzelheite hät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:deletionlog}}}}].
+Als ene Wiki_Köbes kanns De de Ungerscheide ävver aankike wann De wells.",
+'rev-suppressed-diff-view' => "Ein vun de Versione heh es '''verschtoche'''.
+Mieh Einzelheite hät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} {{lcfirst:{{int:suppressionlog}}}}].
+Als ene Wiki_Köbes kanns De de Ungerscheide ävver aankike wann De wells.",
+'rev-delundel' => 'zeije/usblende',
+'rev-showdeleted' => 'zeije',
+'revisiondelete' => 'Versione fottschmieße un widder zeröck holle',
+'revdelete-nooldid-title' => 'Kein Version aanjejovve, oddeer en Stuß-Nommer',
+'revdelete-nooldid-text' => 'Do häs kein Version aanjejovve, womet mer dat maache sulle. Odder de Nommer wohr Stuß, verkeeht, et jitt se nit, odder De wellß de neuste Version fott maache.',
+'revdelete-nologtype-title' => 'Do häs kein Zoot vun Logboch aanjejovve.',
+'revdelete-nologtype-text' => 'Do häs kein Zoot vun Enndrääsh em Logboch aanjejovve, woh mer dat met maache sulle.',
+'revdelete-nologid-title' => 'Dat es ene onjöltijje Enndraach em Logboch.',
+'revdelete-nologid-text' => 'Do häs keine Enndraach em Logboch aanjejovve, woh mer dat met maache sulle, udder dä Enndraach jidd_et jaa_nit.',
+'revdelete-no-file' => 'De aanjejovve Dattei jidd_et nit.',
+'revdelete-show-file-confirm' => 'Beß De sescher, dat De de fottjeschmeße Version vun dä Dattei „<nowiki>$1</nowiki>“ vum $2 oö $3 Uhr aanloore wells?',
+'revdelete-show-file-submit' => 'Lohß Jonn!',
+'revdelete-selected' => "'''{{PLURAL:$2|Ein usjewählte Version|$2 usjewählte Versione|Kein Version usjewählt}} vun [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Dä ußjewählte Logboch-Endrach|De Ußjewählte Logboch-Endrähsch}}:'''",
+'revdelete-text' => "'''Dä fottjeschmesse Sigge ehre Enhald kanns De nit mieh aanluure. Se blieve ävver en de Liss met de Versione un en de Logböcher dren.'''
Ene Wiki Köbes kann de fottjeschmessene Krom immer noch aanluere un kann en och widder herholle, usser wann bei
-dem Wiki singe Installation dat anders fassjelaht woode es.
-
-Bes esu joot un don bestääteje, dat De dat maache wells, dat De versteihß wat dat bedügge kann, un dat dat wat De donn wells, met de [[{{MediaWiki:Policy-url}}|Rääjelle]] zosamme jeiht.",
-'revdelete-suppress-text' => "Dat sullt '''blooß''' jedonn wäde för:
+dem Wiki singe Installation dat anders fassjelaht woode es.",
+'revdelete-confirm' => 'Bes esu joot un doon dat beschtääteje, un donn domet ongerschriive, dat De dat donn wells, dat De weiß, wat dobei eruß kütt, un dat De dat och noh de [[{{MediaWiki:Policy-url}}|Rääjelle]] deihß.',
+'revdelete-suppress-text' => "Dat sullt '''blooß''' jedonn wäde för:
* unjenehmesch persöönlesch Daate
*: ''Aanschreffte, Tellefoon- un ander Nummere, <span lang=\"en\">e-mail</span> Adräß, uew.''",
-'revdelete-legend' => 'Dä öffentlije Zojang enschränke',
-'revdelete-hide-text' => 'Dä Tex vun dä Version versteiche',
-'revdelete-hide-name' => 'Der Förjang, un och der Enndraach uss_em Logboch, versteiche',
-'revdelete-hide-comment' => 'Dä Enhald vun „Koot Zosammejefass, Quell“ usblende',
-'revdelete-hide-user' => 'Däm Bearbeider sing IP Adress oder Metmaacher Name versteiche',
-'revdelete-hide-restricted' => 'Dun dat och för de Wiki-Köbesse esu maache wie för jede Andere',
-'revdelete-suppress' => 'Donn dä Jrond och för de Wiki-Köbesse versteische',
-'revdelete-hide-image' => 'De Enhallt vun däm Beld versteiche',
-'revdelete-unsuppress' => 'De Beschrängkonge för der widderjehollte Versione ophevve',
-'revdelete-log' => 'Aanlaß odder Jrund:',
-'revdelete-submit' => 'Op de aanjekrützte Version aanwende',
-'revdelete-logentry' => 'Zojang zo de Versione verändert för „[[$1]]“',
-'logdelete-logentry' => '„[[$1]]“ verstoche udder widder seeschba jemaat',
-'revdelete-success' => "'''De Version woot verstoche odder seeschba jemaat.'''",
-'logdelete-success' => "'''Dä Enndraach em Logboch woot verstoche odder seeschba jemaat.'''",
-'revdel-restore' => 'Versteische udder Seeschba maache',
-'pagehist' => 'Älldere Versione',
-'deletedhist' => 'Fottjeschmesse Versione',
-'revdelete-content' => 'dä Enhalt fun dä Sigg',
-'revdelete-summary' => 'dä Täx en „{{int:summary}}“',
-'revdelete-uname' => 'dä Metmaachername',
-'revdelete-restricted' => ', och för de Wiki-Köbesse',
-'revdelete-unrestricted' => ', och för de Wiki-Köbesse',
-'revdelete-hid' => '$1 verstoche',
-'revdelete-unhid' => '$1 weder seeschbaa jemaat',
-'revdelete-log-message' => 'hät för {{PLURAL:$1|eij Version|$2 Versione|nix}} $1',
-'logdelete-log-message' => '$1 för {{PLURAL:$2|eine Endraach|$2 Endräch|keine Endraach}} em Logboch',
+'revdelete-legend' => 'Dä öffentlije Zojang enschränke',
+'revdelete-hide-text' => 'Dä Tex vun dä Version versteiche',
+'revdelete-hide-image' => 'De Enhallt vun däm Beld versteiche',
+'revdelete-hide-name' => 'Der Förjang, un och der Enndraach uss_em Logboch, versteiche',
+'revdelete-hide-comment' => 'Dä Enhald vun „Koot Zosammejefass, Quell“ usblende',
+'revdelete-hide-user' => 'Däm Bearbeider sing IP Adress oder Metmaacher Name versteiche',
+'revdelete-hide-restricted' => 'Dun dat och för de Wiki-Köbesse esu maache wie för jede Andere',
+'revdelete-radio-same' => '(lohß wi_t eß)',
+'revdelete-radio-set' => 'Jo',
+'revdelete-radio-unset' => 'Nä',
+'revdelete-suppress' => 'Donn dä Jrond och för de Wiki-Köbesse versteische',
+'revdelete-unsuppress' => 'De Beschrängkonge för der widderjehollte Versione ophevve',
+'revdelete-log' => 'Aanlaß odder Jrund:',
+'revdelete-submit' => 'Op de aanjekrützte {{PLURAL:$1|Version|Versione|-nix-}} aanwende',
+'revdelete-logentry' => 'Zojang zo de Versione verändert för „[[$1]]“',
+'logdelete-logentry' => '„[[$1]]“ verstoche udder widder seeschba jemaat',
+'revdelete-success' => "'''De Version woot verstoche odder seeschba jemaat.'''",
+'revdelete-failure' => "'''Dä Version ier Seeschbaakeit kunnte mer nit ändere:'''
+$1",
+'logdelete-success' => "'''Dä Enndraach em Logboch woot verstoche odder seeschba jemaat.'''",
+'logdelete-failure' => "'''Däm Enndraach em Logboch sing Seeschbaakeit kunnte mer nit ändere:''' $1",
+'revdel-restore' => 'Versteische udder Seeschba maache',
+'pagehist' => 'Älldere Versione',
+'deletedhist' => 'Fottjeschmesse Versione',
+'revdelete-content' => 'dä Enhalt fun dä Sigg',
+'revdelete-summary' => 'dä Täx en „{{int:summary}}“',
+'revdelete-uname' => 'dä Metmaachername',
+'revdelete-restricted' => ', och för de Wiki-Köbesse',
+'revdelete-unrestricted' => ', och för de Wiki-Köbesse',
+'revdelete-hid' => '$1 verstoche',
+'revdelete-unhid' => '$1 weder seeschbaa jemaat',
+'revdelete-log-message' => 'hät för {{PLURAL:$1|eij Version|$2 Versione|nix}} $1',
+'logdelete-log-message' => '$1 för {{PLURAL:$2|eine Endraach|$2 Endräch|keine Endraach}} em Logboch',
+'revdelete-hide-current' => 'Ene Fähler es opjetodde beim Verschteische. De Version vum $1 öm $2 Uhr es de neuste Version, un kann dröm nit verschtoche wääde.',
+'revdelete-show-no-access' => 'Ene Fähler es opjetodde beim Aanloore. De Version vum $1 öm $2 Uhr es verschtoche, un De häß dröm keine Zohjang doh drop.',
+'revdelete-modify-no-access' => 'Ene Fähler es opjetodde beim Ändere. De Version vum $1 öm $2 Uhr es verschtoche, un De häß dröm keine Zohjang doh drop.',
+'revdelete-modify-missing' => 'Ene Fähler es opjetodde beim Ändere. En Version met dä Kennong $1 es nit en de Daatebangk.',
+'revdelete-no-change' => "'''Opjepaß:''' Dä Version vum $1 öm $2 Uhr ier Seeschbaakeit es ald esu, wi De se han wells.",
+'revdelete-concurrent-change' => 'Ene Fähler es opjetodde beim Ändere. Dä Version vum $1 öm $2 Uhr ier Seeschbaakeit schingk ald esu ze sinn, wi De se han wullts. Looer Der de Logbööscher aan.',
+'revdelete-only-restricted' => 'Beim Verschteische vun däm Enndraach vum $1 öm $2 Uhr es ene Fähler opjefalle:
+Do kanns kein Enndrääsch vör de Wiki_Köbeße verschteijsche, der oohne noch en Zoot Verschteijsche dobei ußzewähle.',
+'revdelete-reason-dropdown' => '*Jewöhnlijje Jrönd för et Fottschmiiße
+** Vershtüß jääje et Uerhävverrääsch.
+** Esu en päsöönlesche Enfomazjuhne sin nit aanjebraach, udder esujaa jääje der Dateschoz.',
+'revdelete-otherreason' => 'Ene andere ov zohsäzlejje Jrund:',
+'revdelete-reasonotherlist' => 'Ene andere Jrund',
+'revdelete-edit-reasonlist' => 'De Jrönde för et Fottschmieße beärbeide',
+'revdelete-offender' => 'Dä Väsion iere Schriever:',
# Suppression log
'suppressionlog' => 'Et Logboch fum Versteiche',
@@ -1124,68 +1193,13 @@ Donn de Version makeere bes wohen (inklusive) dat övverdraare wäde sull. Donn
'mergelogpagetext' => 'Dat hee is dat Logboch fun de zesammejelaate Versione fun Sigge',
# Diffs
-'history-title' => 'Liss met Versione vun „$1“',
-'difference' => '(Ungerscheid zwesche de Versione)',
-'lineno' => 'Reih $1:',
-'compareselectedversions' => 'Dun de markeete Version verjliche',
-'visualcomparison' => 'Änderonge en dä Sigg makeere',
-'wikicodecomparison' => 'Wikitäxte nevvenanderlääje',
-'editundo' => 'De letzte Änderung zeröck nämme',
-'diff-multi' => '(Mer don hee {{PLURAL:$1|eij Version|$1 Versione|keij Version}} dozwesche beim Verjliesche översprenge)',
-'diff-movedto' => 'noh $1 jebraat',
-'diff-styleadded' => 'Dä Stil <strong>$1</strong> för_t CSS dobei jedonn',
-'diff-added' => '<strong>$1</strong> dobei jedonn',
-'diff-changedto' => 'ömjeändert noh <strong>$1</strong>',
-'diff-movedoutof' => 'fun $1 noh he jebraat',
-'diff-styleremoved' => 'em CSS singe Stil <strong>$1</strong> he fottjenumme',
-'diff-removed' => '<strong>$1</strong> fottjenumme',
-'diff-changedfrom' => 'ömjeändert fun <strong>$1</strong>',
-'diff-src' => 'Hääkunf',
-'diff-withdestination' => 'met Ziel <strong>$1</strong>',
-'diff-with' => '&#32;met $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => ', un $1 $2',
-'diff-width' => 'Breed',
-'diff-height' => 'Hühde',
-'diff-p' => "ene '''Afsatz'''",
-'diff-blockquote' => "ene '''Zittaatblock'''",
-'diff-h1' => "en '''Övverschref''' om hühste Nivoh",
-'diff-h2' => "en '''Övverschref''' om zwetthühste Nivoh",
-'diff-h3' => "en '''Övverschref''' om dretthühste Nivoh",
-'diff-h4' => "en '''Övverschref''' om feethühste Nivoh",
-'diff-h5' => "en '''Övverschref''' om fönnefhühste Nivoh",
-'diff-pre' => "ene '''förfommatteete Block'''",
-'diff-div' => "e '''Blockelement'''",
-'diff-ul' => "en '''Leß''' ohne Nummere",
-'diff-ol' => "en '''Leß met Nummere'''",
-'diff-li' => "ene '''Endraach en en Leß'''",
-'diff-table' => "en '''Tabäll'''",
-'diff-tbody' => "dä '''Enhallt fun ene Tabäll'''",
-'diff-tr' => "en '''Reih''' en ene Tabäll",
-'diff-td' => "en '''Käßje''' en ene Tabäll",
-'diff-th' => "en '''Övverschreff''' för Spalld_en ene Tabäll",
-'diff-br' => "et '''Engk fun ene Reih'''",
-'diff-hr' => "en '''Queer Linisch'''",
-'diff-code' => "e '''Stöck Kompjuter-Kood'''",
-'diff-dl' => "en '''Leß met su jenannte Definizjuhne'''",
-'diff-dt' => "ene '''Jäjestand uß ene su jenannte Definizjuhn'''",
-'diff-dd' => "en '''su jenannte Definizjuhn'''",
-'diff-input' => "e '''Feld för jet Enzejävve'''",
-'diff-form' => "e '''Fommulaa'''",
-'diff-img' => "e '''Beld'''",
-'diff-span' => "e '''inline-Element'''",
-'diff-a' => "ene '''Lengk'''",
-'diff-i' => "'''scheive Schreff'''",
-'diff-b' => "'''fätte Schreff'''",
-'diff-strong' => "'''kräfteje Schreff'''",
-'diff-em' => "'''fürjehovve Schreff'''",
-'diff-font' => "en '''Schrefftüpe'''",
-'diff-big' => "'''jruße Schreff'''",
-'diff-del' => "'''Fottjelohße'''",
-'diff-tt' => "'''Schreff met einheitlesch ejaale Wigde fun de Boochshtave'''",
-'diff-sub' => "'''deefjestallte Schreff'''",
-'diff-sup' => "'''huhjestallte Schreff'''",
-'diff-strike' => "'''dorschjeshtreche Schreff'''",
+'history-title' => 'Liss met Versione vun „$1“',
+'difference' => '(Ungerscheid zwesche de Versione)',
+'lineno' => 'Reih $1:',
+'compareselectedversions' => 'Dun de markeete Version verjliche',
+'showhideselectedversions' => 'De ußjewählte Versione aanzeije udder vershteiche',
+'editundo' => 'De letzte Änderung zeröck nämme',
+'diff-multi' => '(Mer don hee {{PLURAL:$1|eij Version|$1 Versione|keij Version}} dozwesche beim Verjliesche översprenge)',
# Search results
'searchresults' => 'Wat beim Söke eruskom',
@@ -1193,29 +1207,25 @@ Donn de Version makeere bes wohen (inklusive) dat övverdraare wäde sull. Donn
'searchresulttext' => 'Luur en de [[{{MediaWiki:Helppage}}|{{int:help}}]]-Sigge noh, wann de mieh drüvver wesse wells, wie mer en de {{SITENAME}} jet fingk.',
'searchsubtitle' => 'För Ding Froch noh „[[:$1|$1]]“ — ([[Special:Prefixindex/$1|Sigge, di met „$1“ annfange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Sigge, di Links noh „$1“ han]])',
'searchsubtitleinvalid' => 'För Ding Froch noh „$1“',
-'noexactmatch' => 'Mer han kein Sigg met jenau däm Name „<strong>$1</strong>“ jefunge.
-Do kanns se [[:$1|aanläje]], wann De wells.',
-'noexactmatch-nocreate' => "'''Et jitt kei Sigg met däm Titel „$1“.'''",
'toomanymatches' => 'Dat wore zo vill Treffer, beß esu joot, un donn en annder Ußwahl probeere!',
'titlematches' => 'Zopass Üvverschrefte',
'notitlematches' => 'Kein zopass Üvverschrefte',
'textmatches' => 'Sigge met däm Täx',
'notextmatches' => 'Kein Sigg met däm Tex',
-'prevn' => 'de $1 doför zeije',
-'nextn' => 'de nächste $1 zeije',
+'prevn' => 'de {{PLURAL:$1|ein|$1|0}} doför zeije',
+'nextn' => 'de {{PLURAL:$1|läzte |nächste $1|nächste 0}} zeije',
'prevn-title' => '{{PLURAL:$1|Et vorijje|De $1 dovör|Es nix dovör}}',
'nextn-title' => '{{PLURAL:$1|Et näähßte|De nähßte $1|Kütt nix mieh}}',
'shown-title' => 'Zeisch {{PLURAL:$1|ein|$1|nix}} pro Sigg',
-'viewprevnext' => 'Bläddere: ($1) ($2) ($3).',
+'viewprevnext' => 'Bläddere: ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Enstellunge för et Söhke',
'searchmenu-exists' => "*Sigg '''[[$1]]'''",
'searchmenu-new' => "'''Donn de Sigg „[[:$1|$1]]“ hee em Wiki aanlääje'''",
'searchhelp-url' => 'Help:Hölp',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeich all Sigge, di met däm Tex aanfange]]',
'searchprofile-articles' => 'Sigge vum Enhalt',
-'searchprofile-articles-and-proj' => 'Sigge vum Enhallt un vum Projek',
-'searchprofile-project' => 'Projeksigge',
-'searchprofile-images' => 'Dateie',
+'searchprofile-project' => 'Hülp- ov Projäk-Sigge',
+'searchprofile-images' => 'Dateie met Medije',
'searchprofile-everything' => 'Övverall noh',
'searchprofile-advanced' => 'Extra',
'searchprofile-articles-tooltip' => 'Söök en de $1',
@@ -1223,8 +1233,6 @@ Do kanns se [[:$1|aanläje]], wann De wells.',
'searchprofile-images-tooltip' => 'Söök noh Dateie',
'searchprofile-everything-tooltip' => 'Söök övverall dren, och op de Klaafsigge',
'searchprofile-advanced-tooltip' => 'Donn en ußjesohte Appachtemangs sööke',
-'prefs-search-nsdefault' => 'Sök met dä Standat-Enstellunge:',
-'prefs-search-nscustom' => 'Sök en dä Appachtemangs:',
'search-result-size' => '$1 ({{PLURAL:$2|Eij Woot|$2 Wööter|Keij Woot}})',
'search-result-score' => 'Jeweesch: $1%',
'search-redirect' => '(Ömleitung $1)',
@@ -1237,11 +1245,12 @@ Do kanns se [[:$1|aanläje]], wann De wells.',
'search-mwsuggest-disabled' => 'ohne Vürschläsh',
'search-relatedarticle' => 'Ähnlesch',
'mwsuggest-disable' => 'Kein automatische Hölp-Liss per Ajax beim Tippe em Feld för et Söke',
+'searcheverything-enable' => 'En alle Appachtemangs söhke',
'searchrelated' => 'ähnlesch',
'searchall' => 'all',
'showingresults' => 'Unge {{PLURAL:$1|weed <strong>eine</strong>|wääde bes <strong>$1</strong>|weed <strong>keine</strong>}} vun de jefunge Endräch jezeich, vun de Nummer <strong>$2</strong> av.',
'showingresultsnum' => 'Unge {{PLURAL:$3|es ein|sin <strong>$3</strong>|sin <strong>kein</strong>}} vun de jefunge Endräch opjeliss, vun de Nummer <strong>$2</strong> av.',
-'showingresultstotal' => "Hee {{PLURAL:$4|kütt der Treffer Numero '''$1''' uß|kumme de Treffer '''$1''' beß '''$2''' fun}} '''$3:'''",
+'showingresultsheader' => "Jefonge un aanjezeisch: {{PLURAL:$5|'''$1''' vun '''$3'''|'''$1''' beß '''$2''' vun '''$3'''|nix}} för '''$4'''",
'nonefound' => '<strong>Opjepass:</strong>
Standatmääßesch don mer nur en bestemmpte Appachtemangs söke.
Donn „<code>all:</code>“ för Ding Wööt saze, wan de en alle Appachtemangs
@@ -1253,6 +1262,9 @@ Appachtemangs-Name.',
'powersearch-ns' => 'Söök en de Apachtemangs:',
'powersearch-redir' => 'Ömleidunge aanzeije',
'powersearch-field' => 'Söök noh:',
+'powersearch-togglelabel' => '&nbsp;',
+'powersearch-toggleall' => 'Övverall Höhksche draan maache',
+'powersearch-togglenone' => 'All Höhksche fott nämme',
'search-external' => 'Söke fun Ußerhallef',
'searchdisabled' => 'Dat Söke hee op de {{SITENAME}} es em Momang avjeschalt.
Dat weed op dänne Sörver ad ens jemaat, domet de Lass op inne nit ze jroß weed,
@@ -1264,93 +1276,123 @@ Et es nit jesaht,
dat dänne ihr Daate topaktuell sin,
ävver et es besser wie jar nix.',
+# Quickbar
+'qbsettings' => '„Flöcke Links“',
+'qbsettings-none' => 'Fottlooße, dat well ich nit sinn',
+'qbsettings-fixedleft' => 'Am linke Rand fass aanjepapp',
+'qbsettings-fixedright' => 'Am rächte Rand fass aanjepapp',
+'qbsettings-floatingleft' => 'Am linke Rand am Schwevve',
+'qbsettings-floatingright' => 'Am rächte Rand am Schwevve',
+
# Preferences page
-'preferences' => 'ming Enstellunge',
-'mypreferences' => 'ming Enstellunge',
-'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
-'prefsnologin' => 'Nit Enjelogg',
-'prefsnologintext' => 'Do mööts ald <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} enjelogg]</span> sin, öm Ding Enstellunge ze ändere.',
-'prefsreset' => 'De Enstellunge woodte jetz op Standard zeröck jesatz.',
-'qbsettings' => '„Flöcke Links“',
-'qbsettings-none' => 'Fottlooße, dat well ich nit sinn',
-'qbsettings-fixedleft' => 'Am linke Rand fass aanjepapp',
-'qbsettings-fixedright' => 'Am rächte Rand fass aanjepapp',
-'qbsettings-floatingleft' => 'Am linke Rand am Schwevve',
-'qbsettings-floatingright' => 'Am rächte Rand am Schwevve',
-'changepassword' => 'Passwood *',
-'skin' => 'Et Ussinn',
-'skin-preview' => 'Vör-Ansich',
-'math' => 'Mathematisch Formele',
-'dateformat' => 'Em Datum sing Fomat',
-'datedefault' => 'Ejaal - kein Vörliebe',
-'datetime' => 'Datum un Uhrzigge',
-'math_failure' => 'Fähler vum Parser',
-'math_unknown_error' => 'Fähler, dä mer nit kenne',
-'math_unknown_function' => 'en Funktion, die mer nit kenne',
-'math_lexing_error' => 'Fähler beim Lexing',
-'math_syntax_error' => 'Fähler en de Syntax',
-'math_image_error' => 'De Ömwandlung noh PNG es donevve jejange. Dun ens noh de richtije Enstallation luure bei <i>latex</i>, <i>dvips</i>, <i>gs</i>, un <i>convert</i>. Oder sag et enem Sörver-Admin, oder enem Wiki Köbes.',
-'math_bad_tmpdir' => 'Dat Zwescheverzeichnis för de mathematische Formele lööt sich nit aanläje oder nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem Sörver-Minsch.',
-'math_bad_output' => 'Dat Verzeichnis för de mathematische Formele lööt sich nit aanläje oder mer kann nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem Sörver-Minsch.',
-'math_notexvc' => "Dat Projamm <code>texvc</code> ha'mer nit jefunge. Sag et enem
-Wiki-Köbes, enem Sörver-Minsch, oder luur ens en de
-<code>math/README</code>.",
-'prefs-personal' => 'De Enstellunge',
-'prefs-rc' => 'Neuste Änderunge',
-'prefs-watchlist' => 'De Oppassliss',
-'prefs-watchlist-days' => 'Aanzahl Dage för en ming Oppassliss aanzezeije:',
-'prefs-watchlist-days-max' => '(Nit mieh wie 7 Dääch)',
-'prefs-watchlist-edits' => 'Aanzahl Änderunge för en ming verjrößerte Oppassliss aanzezeije:',
-'prefs-watchlist-edits-max' => '(Nit mieh wie 1000)',
-'prefs-misc' => 'Söns',
-'prefs-resetpass' => 'Dat Passwood ändere',
-'saveprefs' => 'Fasshalde',
-'resetprefs' => 'Zeröck setze',
-'restoreprefs' => 'Alles op der Shtandatt retuur stelle',
-'textboxsize' => 'Beim Bearbeide',
-'prefs-edit-boxsize' => 'Dat Feld zöm Schrieve sull han:',
-'rows' => 'Reihe:',
-'columns' => 'Spalte:',
-'searchresultshead' => 'Beim Söke',
-'resultsperpage' => 'Zeich Treffer pro Sigg:',
-'contextlines' => 'Reihe för jede Treffer:',
-'contextchars' => 'Zëijshe uß de Ömjävung, pro Rëij:',
-'stub-threshold' => 'Links passend för <a href="#" class="stub">klein Sigge</a> fomateere av esu vill Bytes:',
-'recentchangesdays' => 'Aanzahl Dage en de Liss met de „Neuste Änderunge“ — als Standad:',
-'recentchangesdays-max' => '(Nit mieh wie {{PLURAL:$1|eine Daach|$1 Dääsh|keine Daach}})',
-'recentchangescount' => 'Aanzahl Änderunge en de Liss met de „{{int:recentchanges}}“,
-de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
-'savedprefs' => 'Ding Enstellunge sin jetz jesechert.',
-'timezonelegend' => 'Ziggzon:',
-'timezonetext' => '¹ Dat sin de Stunde un Minutte zwesche de Zigg op de Uhre bei Dir am Oot un däm Sörver, dä met UTC läuf.',
-'localtime' => 'De Zigg op Dingem Kompjuter:',
-'timezoneselect' => 'De Ziggzon es:',
-'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg',
-'timezoneuseoffset' => 'Söns jet, jiff dä Ungerscheid aan',
-'timezoneoffset' => 'Dä Ungerscheid¹ es:',
-'servertime' => 'De Uhrzigg om Sörver es jetz:',
-'guesstimezone' => 'Fingk et erus üvver dä Brauser',
-'timezoneregion-africa' => 'Affrikka',
-'timezoneregion-america' => 'Ammerrika',
-'timezoneregion-antarctica' => 'Der Södpool',
-'timezoneregion-arctic' => 'Der Noodpool',
-'timezoneregion-asia' => 'Aasije',
-'timezoneregion-atlantic' => 'De atlantesche Ozejan',
-'timezoneregion-australia' => 'Austraalije',
-'timezoneregion-europe' => 'Europpa',
-'timezoneregion-indian' => 'De indesche Ozejan',
-'timezoneregion-pacific' => 'De shtelle Ozejan',
-'allowemail' => 'E-Mail vun andere Metmaacher zolooße',
-'prefs-searchoptions' => 'Enstellunge för et Sööke',
-'prefs-namespaces' => 'Appachtemangs',
-'defaultns' => 'Dun standaadmäßich en hee dä Appachtemengs söke:',
-'default' => 'Standaad',
-'files' => 'Dateie',
-'prefs-custom-css' => 'Selfsjemaat <i lang="en">Cascading Style Sheet</i>',
-'prefs-custom-js' => 'Selfsjemaat JavaSkripp',
+'preferences' => 'ming Enstellunge',
+'mypreferences' => 'ming Enstellunge',
+'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
+'prefsnologin' => 'Nit Enjelogg',
+'prefsnologintext' => 'Do mööts ald <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} enjelogg]</span> sin, öm Ding Enstellunge ze ändere.',
+'changepassword' => 'Passwood *',
+'prefs-skin' => 'Et Ussinn',
+'skin-preview' => 'Vör-Ansich',
+'prefs-math' => 'Mathematisch Formele',
+'datedefault' => 'Ejaal - kein Vörliebe',
+'prefs-datetime' => 'Datum un Uhrzigge',
+'prefs-personal' => 'De Enstellunge',
+'prefs-rc' => 'Neuste Änderunge',
+'prefs-watchlist' => 'De Oppassliss',
+'prefs-watchlist-days' => 'Aanzahl Dage för en ming Oppassliss aanzezeije:',
+'prefs-watchlist-days-max' => '(Nit mieh wie 7 Dääch)',
+'prefs-watchlist-edits' => 'Aanzahl Änderunge för en ming verjrößerte Oppassliss aanzezeije:',
+'prefs-watchlist-edits-max' => '(Nit mieh wie 1000)',
+'prefs-watchlist-token' => 'Oppassleß-Kennzeishe:',
+'prefs-misc' => 'Söns',
+'prefs-resetpass' => 'Dat Passwood ändere',
+'prefs-email' => '<i lang="en">e-mail</i>',
+'prefs-rendering' => 'Et Sigge-Aanzeije',
+'saveprefs' => 'Fasshalde',
+'resetprefs' => 'Zeröck setze',
+'restoreprefs' => 'Alles op der Shtandatt retuur stelle',
+'prefs-editing' => 'Beim Bearbeide',
+'prefs-edit-boxsize' => 'Dat Feld zöm Schrieve sull han:',
+'rows' => 'Reihe:',
+'columns' => 'Spalte:',
+'searchresultshead' => 'Beim Söke',
+'resultsperpage' => 'Zeich Treffer pro Sigg:',
+'contextlines' => 'Reihe för jede Treffer:',
+'contextchars' => 'Zëijshe uß de Ömjävung, pro Rëij:',
+'stub-threshold' => 'Links passend för <a href="#" class="stub">klein Sigge</a> fomateere av esu vill Bytes:',
+'recentchangesdays' => 'Aanzahl Dage en de Liss met de „Neuste Änderunge“ — als Standad:',
+'recentchangesdays-max' => '(Nit mieh wie {{PLURAL:$1|eine Daach|$1 Dääsh|keine Daach}})',
+'recentchangescount' => 'Aanzahl Änderunge en de Leß, als Shtandad:',
+'prefs-help-recentchangescount' => 'Dat ömfaß de „{{int:recentchanges}}“, de Versione uß de Fojangeheit, un de Logbööcher.',
+'prefs-help-watchlist-token' => 'Wann dat Feld met enem jeheime Schlößel ußjeföllt es, määt et Wiki ene <i lang="en">RSS</i>-Enspeisung en et Näz för Ding Oppaßleß op.
+Wä dä Schlößel weiß, kann ding Oppaßleß lesse. Donn alsu ene seschere un jeheime Wäät doför nämme.
+Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <code>$1</code>',
+'savedprefs' => 'Ding Enstellunge sin jetz jesechert.',
+'timezonelegend' => 'Ziggzon:',
+'localtime' => 'De Zigg op Dingem Kompjuter:',
+'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg',
+'timezoneuseoffset' => 'Söns jet, jiff dä Ungerscheid aan',
+'timezoneoffset' => 'Dä Ungerscheid¹ es:',
+'servertime' => 'De Uhrzigg om Sörver es jetz:',
+'guesstimezone' => 'Fingk et erus üvver dä Brauser',
+'timezoneregion-africa' => 'Affrikka',
+'timezoneregion-america' => 'Ammerrika',
+'timezoneregion-antarctica' => 'Der Södpool',
+'timezoneregion-arctic' => 'Der Noodpool',
+'timezoneregion-asia' => 'Aasije',
+'timezoneregion-atlantic' => 'De atlantesche Ozejan',
+'timezoneregion-australia' => 'Austraalije',
+'timezoneregion-europe' => 'Europpa',
+'timezoneregion-indian' => 'De indesche Ozejan',
+'timezoneregion-pacific' => 'De shtelle Ozejan',
+'allowemail' => 'E-Mail vun andere Metmaacher zolooße',
+'prefs-searchoptions' => 'Enstellunge för et Sööke',
+'prefs-namespaces' => 'Appachtemangs',
+'defaultns' => 'Söns don en hee dä Appachtemengs söhke:',
+'default' => 'Standaad',
+'prefs-files' => 'Dateie',
+'prefs-custom-css' => 'Selfsjemaat <i lang="en">Cascading Style Sheet</i>',
+'prefs-custom-js' => 'Selfsjemaat JavaSkripp',
+'prefs-reset-intro' => 'Op dä Sigg kanns De Ding Enstellunge op dämm Wiki singe Shandatt setze lohße. Ävver Opjepaß: Do jidd et keine „Retuur“-Knopp för!',
+'prefs-emailconfirm-label' => 'Beshtätejung övver <i lang="en">e-mail</i>:',
+'prefs-textboxsize' => 'Wi jruuß sull dat Feld för et Afschnedde un Sigge ändere sin',
+'youremail' => 'E-Mail *',
+'username' => 'Metmaacher Name:',
+'uid' => 'Metmaacher Nommer:',
+'prefs-memberingroups' => 'Bes en {{PLURAL:$1|de Metmaacherjrupp:|<strong>$1</strong> Metmaacherjruppe:|keijn Metmaacherjruppe.}}',
+'prefs-registration' => 'Aanjemeldt zick',
+'prefs-registration-date-time' => 'dem $2 öm $3 Uhr',
+'yourrealname' => 'Dinge richtije Name *',
+'yourlanguage' => 'Die Sproch, die et Wiki kalle soll:',
+'yourvariant' => 'Ding Variant',
+'yournick' => 'Ding&nbsp;„Ongerschreff“&nbsp;*',
+'prefs-help-signature' => '* Beidrääsch op Klaafsigge sullte met „<nowiki>~~~~</nowiki>“ ophüere, dat weed beim Afshpeishere en Ding „Ongerschreff“ met de Uhrzig un em Dattum ömjewandelt.',
+'badsig' => 'Di Ungeschreff jëijd_esu nit — luer noh dem HTML do_dren un maach et rėshtėsh.',
+'badsiglength' => 'Ding „Ungerschref“ es zoo lang. Et dörve nit nieh wi {{PLURAL:$1|eij|$1|keij}} Zeische do dren sin.',
+'yourgender' => 'Do bes *',
+'gender-unknown' => 'wesse mer nit',
+'gender-male' => 'Kääl odder Jung',
+'gender-female' => 'Möhn, Weech odder Mädche',
+'prefs-help-gender' => '* Moß mer nit aanjevve, un wann et aanjejovve eß, dann kallt et Wiki övver Desch als „dä Pitter“ udder „dat Tiina“, sönß uns „Metmaacher Pütz“. Dat kritt de janne Welt ze sinn, nit nur Do allein.',
+'email' => 'E-mail',
+'prefs-help-realname' => '* Dinge richtije Name - kanns De fott looße - wann De en ävver nenne wells, dann weed dä jebruch, öm Ding Beidräch domet ze schmöcke.',
+'prefs-help-email' => '* Ding <i lang="en">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß. Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang="en">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang="en">e-Mail</i> Adress kenne mööte.',
+'prefs-help-email-required' => 'Do moß en jöltije E-Mail-Adress aanjevve.',
+'prefs-info' => 'Jrundlare',
+'prefs-i18n' => 'Shprooche-Enshtellunge',
+'prefs-signature' => 'Ongerschreff',
+'prefs-dateformat' => 'Dem Dattum sing Fommaat',
+'prefs-timeoffset' => 'Enshtellunge för de Uhrzigge',
+'prefs-advancedediting' => 'Extra Ußwahle',
+'prefs-advancedrc' => 'Extra Ußwahle',
+'prefs-advancedrendering' => 'Extra Ußwahle',
+'prefs-advancedsearchoptions' => 'Extra Ußwahle',
+'prefs-advancedwatchlist' => 'Extra Ußwahle',
+'prefs-display' => 'Ußwahle för et Leßte Aanzeje',
+'prefs-diffs' => 'Ongerscheide un Verjliische',
# User rights
-'userrights' => 'Metmaacher ehr Räächde verwalte', # Not used as normal message but as header for the special page itself
+'userrights' => 'Metmaacher ehr Räächde verwalte',
'userrights-lookup-user' => 'Metmaacher Jruppe verwalte',
'userrights-user-editname' => 'Metmaacher Name:',
'editusergroup' => 'Däm Metmaacher sing Jruppe Räächde bearbeide',
@@ -1420,6 +1462,7 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
'right-bigdelete' => 'Sigge fottschmiiße, och wann se ahle Versione ze baasch han',
'right-deleterevision' => 'Einzel Versione fun Sigge fottschmiiße un zeröck holle',
'right-deletedhistory' => 'Fottjeschmeße Versione vun Sigge opleßte lohße — dat zeich ävver nit der Tex aan',
+'right-deletedtext' => 'Fotjeschmeße Täx un Ungerscheid zwesche de verschtoche Versione aanloore',
'right-browsearchive' => 'Noh fottjeschmesse Sigge söke',
'right-undelete' => 'Fottjeschmeße Sigge widder zeröck holle',
'right-suppressrevision' => 'Versione vun Sigge beloore un zeröck holle, di sujaa för de Wiki-Köbesse verstoche sin',
@@ -1433,6 +1476,8 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
'right-editprotected' => 'Jeschötzte Sigge ändere, ohne Kaskadeschoz',
'right-editinterface' => 'Sigge met de Texte ändere, die et Wiki kallt',
'right-editusercssjs' => 'Anderlücks CSS- un JS-Dateie ändere',
+'right-editusercss' => 'Anderlücks CSS-Dateie ändere',
+'right-edituserjs' => 'Anderlücks JS-Dateie ändere',
'right-rollback' => 'All de letzte Änderunge fom letzte Metmaacher aan ene Sigg retur maache',
'right-markbotedits' => 'Retur jemaate Änderonge als Bot-Änderung makeere',
'right-noratelimit' => 'Kein Beschränkunge dorch Jrenze (<i lang="en">[http://www.mediawiki.org/wiki/Manual:%24wgRateLimits $wgRateLimits]</i>)',
@@ -1449,6 +1494,8 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
'right-siteadmin' => 'De Datebank deeschmaache un opmaache för Änderunge',
'right-reset-passwords' => 'Enem andere Metmaacher et Paßwoot zeröck setze',
'right-override-export-depth' => 'Beim Sigge Expoteere de Sigge metnämme, woh Lingks drop jon — beß fönef Schredde wigk',
+'right-versiondetail' => 'Ußföhrlesh Enfomazjuhne övver de Projramme vum Wiki aanloore',
+'right-sendemail' => '<i lang="en">e-mail</i> aan ander Metmaacher schecke',
# User rights log
'rightslog' => 'Logboch för Änderunge aan Metmaacher-Räächde',
@@ -1498,8 +1545,17 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
'recentchanges-legend' => 'Enstellunge',
'recentchangestext' => 'Op dä Sigg hee sin de neuste Änderunge am Wiki opjeliss.',
'recentchanges-feed-description' => 'Op dämm Abonnomang-Kannal (<i lang="en">Feed</i>) kannze de {{int:recentchanges}} aam Wiki en Laif un en Färve metloore.',
+'recentchanges-label-legend' => 'Lejänd: $1.',
+'recentchanges-legend-newpage' => '$1 - neu Sigg',
+'recentchanges-label-newpage' => 'Heh di Sigg es neu dobei jekumme met dä Änderung',
+'recentchanges-legend-minor' => '$1 - klein mini-Änderung',
+'recentchanges-label-minor' => 'Heh dat es en Mini-Änderung',
+'recentchanges-legend-bot' => '$1 - vun enem Bot jemaat',
+'recentchanges-label-bot' => 'Di Änderung es fun enem Bot jemaat woode',
+'recentchanges-legend-unpatrolled' => '$1 - nit nohjeloort',
+'recentchanges-label-unpatrolled' => 'Heh di Änderung es noch nit nohjeloort',
'rcnote' => '{{PLURAL:$1|Heh es de letzte Änderung us|Heh sin de letzte <strong>$1</strong> Änderunge us|Et jit <strong>kei</strong> Änderunge en}} {{PLURAL:$2|däm letzte Daach|de letzte <strong>$2</strong> Dääsch|dä Zick}} vum <strong>$4</strong> aff <strong>$5</strong> Uhr beß jetz.',
-'rcnotefrom' => 'Hee sin bes <strong>$1</strong> fun de Änderunge zick <strong>$2</strong> opjeliss.',
+'rcnotefrom' => 'Hee sin bes <strong>$1</strong> fun de Änderunge zick däm <strong>$3</strong> öm <strong>$4</strong> Uhr opjeliss.',
'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
'rcshowhideminor' => '$1 klein Mini-Änderunge',
'rcshowhidebots' => '$1 de Bots ehr Änderunge',
@@ -1515,7 +1571,6 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
'minoreditletter' => 'M',
'newpageletter' => 'N',
'boteditletter' => 'B',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[{{PLURAL:$1|eine|$1|kein}} Oppasser]',
'rc_categories' => 'Nor de Saachjruppe (met „|“ dozwesche):',
'rc_categories_any' => 'All, wat mer han',
@@ -1526,6 +1581,8 @@ de Versione uß de Fojangeheit, un de Logbööcher — als Standad:',
# Recent changes linked
'recentchangeslinked' => 'Änderunge aan Sigge, wo heh drop jelink es',
+'recentchangeslinked-feed' => 'Änderunge aan Sigge, wo hee drop jelink es',
+'recentchangeslinked-toolbox' => 'Änderunge aan Sigge, wo hee drop jelink es',
'recentchangeslinked-title' => 'Änderunge aan Sigge, die vun „$1“ uß verlink sin',
'recentchangeslinked-backlink' => '←&nbsp;$1',
'recentchangeslinked-noresult' => 'Et woodte kein Änderunge aan verlinkte Sigge jemaat en dä Zick.',
@@ -1538,8 +1595,8 @@ Sigge uß Dinge [[Special:Watchlist|Opaßleß]] sin '''fett''' jeschrevve.",
# Upload
'upload' => 'Daate huhlade',
'uploadbtn' => 'Huhlade!',
-'reupload' => 'Noch ens huhlade',
'reuploaddesc' => 'Zeröck noh de Sigg zem Huhlade.',
+'upload-tryagain' => 'Donn ene veränderte Täx övver di Dattei loßßschecke',
'uploadnologin' => 'Nit Enjelogg',
'uploadnologintext' => 'Do mööts ald [[Special:UserLogin|enjelogg]] sin, öm Daate huhzelade.',
'upload_directory_missing' => "<b>Doof:</b>
@@ -1608,7 +1665,6 @@ Bes esu jod un luur Der '''<tt>[[:$1]]</tt>''' aan, wann De nit 100% secher bes
* Huh am laade sim_mer: '''<tt>[[:$1]]</tt>'''
* Ald om ßörve eß:</td><td>'''<tt>[[:$2]]</tt>'''
Bes esu joot, un söök Der ene ander Name fö di Datei us.",
-'fileexists-thumb' => "<center>'''Datei'''</center>",
'fileexists-thumbnail-yes' => "Dat süühd uß, wi wann dat hee en Minni-Beldsche em Breefmarrke-Fommaat (''<span lang=\"en\">thumbnail</span>'') wöhr. [[\$1|thumb]]
Don ens di Dattei '''<tt>[[:\$1]]</tt>''' prööfe.
Wann dat de Orjinaaljrüß es, do moß keij för dat Beld keij extra Vör-Aansich huhjelade wäde.",
@@ -1629,6 +1685,7 @@ wann De se noch han wells.',
'file-deleted-duplicate' => 'En Datei mem sellve Enhallt wi „[[$1]]“ es ens fottjeschmeße woode. Donn dä Zosammehang em „{{int:dellogpage}}“ nokike, ih dat De se widder huhläds.',
'successfulupload' => 'Et Huhlade hät jeflupp',
'uploadwarning' => 'Warnung beim Huhlade',
+'uploadwarning-text' => 'Donn onge dä Täx övver di Dattei ändere, un versöhg_et norr_ens.',
'savefile' => 'Datei avspeichere',
'uploadedimage' => 'hät huhjelade: „[[$1]]“',
'overwroteimage' => 'hät en neue Version huhjelade vun: „[[$1]]“',
@@ -1637,20 +1694,18 @@ wann De se noch han wells.',
'php-uploaddisabledtext' => 'Et Dateie Huhlade es en PHP affjeschalldt.
Bes esu joot un donn noh de Enshtellung <i lang="en">file_uploads</i> loore.',
'uploadscripted' => 'En dä Datei es HTML dren oder Code vun enem Skripp, dä künnt Dinge Brauser en do verkihrte Hals krije un usführe.',
-'uploadcorrupt' => 'Schad.
-<br />
-De Datei es kapott, hät en verkihrte File Name Extention, oder irjends ene andere Dress es passeet.
-<br />
-<br />
-Luur ens noh dä Datei, un dann muss de et noch ens versöke.',
'uploadvirus' => 'Esu ene Dress:
<br />
En dä Datei stich e Kompjutervirus!
<br />
De Einzelheite: $1',
+'upload-source' => 'Wo de Daate herkumme',
'sourcefilename' => 'Datei zem huhlade:',
+'sourceurl' => '<i lang="en">URL</i> för vun eronger ze laade',
'destfilename' => 'Unger däm Dateiname avspeichere:',
'upload-maxfilesize' => 'Der jrüütßte müjjelesche Ömfang för en Datei es $1.',
+'upload-description' => 'Övver di Datei',
+'upload-options' => 'Enstellunge för et Laade',
'watchthisupload' => 'Op di Datei oppasse',
'filewasdeleted' => 'Unger däm Name wood ald ens en Datei huhjelade. Die es enzwesche ävver widder fottjeschmesse woode. Luur leever eets ens en et $1 ih dat De se dann avspeichere deis.',
'upload-wasdeleted' => "'''Opjepaß:''' Do bes en Datei huh am lade, di ald doför doh wohr un fottjeschmesse wohdt.
@@ -1675,16 +1730,35 @@ MGP # Pentax
PICT # - diverse -
#</pre> <!-- Lohß di Reih jenou esu wie se es! -->',
-'upload-proto-error' => 'Verkihrt Protokoll',
-'upload-proto-error-text' => 'Ene URL för en Datei fun huhzelade moß met <code>http://</code> uder <code>ftp://</code> aafange.',
-'upload-file-error' => 'Fääler em Wiki beim Huhlade',
-'upload-file-error-text' => 'Ene ennere Fääler es opjekumme beim Aanläje vun en Datei om Server.
+'upload-proto-error' => 'Verkihrt Protokoll',
+'upload-proto-error-text' => 'Ene URL för en Datei fun huhzelade moß met <code>http://</code> uder <code>ftp://</code> aafange.',
+'upload-file-error' => 'Fääler em Wiki beim Huhlade',
+'upload-file-error-text' => 'Ene ennere Fääler es opjekumme beim Aanläje vun en Datei om Server.
Verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
-'upload-misc-error' => 'Dat Huhlaade jing donevve',
-'upload-misc-error-text' => 'Dat Huhlaade jing donevve.
+'upload-misc-error' => 'Dat Huhlaade jing donevve',
+'upload-misc-error-text' => 'Dat Huhlaade jing donevve.
Mer wesse nit woröm.
Pröf de URL un versök et noch ens.
Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
+'upload-too-many-redirects' => 'Zoh vill Ömleitunge en däm <i lang="en">URL</i>',
+'upload-unknown-size' => 'Mer weße nit, wi jruuß',
+'upload-http-error' => 'Ene <i lang="en">HTTP</i>-Fäähler es opjetrodde: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Keine Zohjang',
+'img-auth-nopathinfo' => 'De <code lang="en">PATH_INFO</code> fäählt.
+Dä Webßööver es nit doför ennjerescht, di Ennfommazjuhn wigger ze jävve.
+Hä künnd_op <code lang="en">CGI</code> opjebout sin, un dröm <code lang="en">img_auth</code> nit ongshtöze künne. Loor onger http://www.mediawiki.org/wiki/Manual:Image_Authorization noh, wat domet es.',
+'img-auth-notindir' => 'Dä aanjefroochte Pat is nit em enjeschtallte Verzeischneß för et Huhlaade.',
+'img-auth-badtitle' => 'Uß „$1“ lööt sesch keine jöltijje Tittel maache.',
+'img-auth-nologinnWL' => 'Do bes nit ennjelogg, un „$1“ es nit op dä Leß met de zohjelohße Datteiname.',
+'img-auth-nofile' => 'En Dattei „$1“ jidd_et nit.',
+'img-auth-isdir' => 'Do wells op et Verzeishneß „$1“ zohjriife, ävver mer darref bloß op Datteie zohjriife.',
+'img-auth-streaming' => 'Mer sin „$1“ aam schecke.',
+'img-auth-public' => 'Dat Projramm <code lang="en">img_auth.php</code> jitt Dateie ene ennem privaate Wiki uß.
+Dat Wiki heh es ävver öffentlesch.
+Dröm es <code lang="en">img_auth.php</code> zor Sisherheit heh affjeschalldt.',
+'img-auth-noread' => 'Dä Metmaacher hät keine Zohjang, öm „$1“ ze lässe.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Keij Antwoot vun dä URL',
@@ -1696,6 +1770,7 @@ Waat ene Moment un versök et nor_ens.
Velleich probees De et och zo en Zick, wo winnijer loss es.',
'license' => 'Lizenz:',
+'license-header' => 'Lizänz',
'nolicense' => 'Nix usjesök',
'license-nopreview' => '(Kein Vör-Aansich ze hann)',
'upload_source_url' => ' (richtije öffentlije URL)',
@@ -1714,6 +1789,7 @@ Velleich probees De et och zo en Zick, wo winnijer loss es.',
'listfiles_count' => 'Versione',
# File description page
+'file-anchor-link' => 'Datei',
'filehist' => 'De Versione vun dä Datei',
'filehist-help' => 'Di domohlije Version kriß De jezeich övver dä Link op em Dattum.',
'filehist-deleteall' => 'All Versione fottschmieße',
@@ -1722,12 +1798,13 @@ Velleich probees De et och zo en Zick, wo winnijer loss es.',
'filehist-current' => 'Von jetz',
'filehist-datetime' => 'Version vom',
'filehist-thumb' => 'Mini-Beldsche',
-'filehist-thumbtext' => 'Mini-Beldsche för de Version fum $1',
+'filehist-thumbtext' => 'Mini-Beldsche för de Version fum $2 öm $3 Uhr',
'filehist-nothumb' => 'Kei Mini-Beldsche',
'filehist-user' => 'Metmaacher',
'filehist-dimensions' => 'Pixelle Breed×Hühte (Dateiömfang)',
'filehist-filesize' => 'Dateiömfang',
'filehist-comment' => 'Aanmerkung',
+'filehist-missing' => 'Di Datei es nit doh',
'imagelinks' => 'Lenks op heh die Datei',
'linkstoimage' => 'Heh {{PLURAL:$1|kütt di Sigg|kumme di $1 Sigge|sin keij Sigge}}, die op heh di Dattei linke {{PLURAL:$1|deiht|dun|dun}}:',
'linkstoimage-more' => 'Mieh wie {{PLURAL:$1|ein Sigg link|$1 Sigge linke|kein Sigg link}} op di Datei.
@@ -1737,15 +1814,17 @@ Mer ävver han och en [[Special:WhatLinksHere/$2|Komplätte Leß]].',
'morelinkstoimage' => 'Belohr Der [[Special:WhatLinksHere/$1|de Links]] op di Datei.',
'redirectstofile' => 'Di {{PLURAL:$1|Datei heenoh leid|$1 Dateie leide}} op he di Datei öm:',
'duplicatesoffile' => 'Mer hann_er {{PLURAL:$1|en dubbelte Datei|$1 dubbelte Dateie|kei dubbelte Dateije}} fon he dä Datei, di {{PLURAL:$1|hät|han all|han}} dersellve Enhalldt ([[Special:FileDuplicateSearch/$2|mieh Einzelheite]]):',
-'sharedupload' => 'De Datei es för diverse ungerscheidlije Projekte parat jelaht. Se kütt fun $1.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Mieh Informatione fings De op dä $1.',
-'shareduploadwiki-desc' => 'Hee noh kütt dä Enhalt fun dä $1 uß dämm jemeinsame Beshtand.',
-'shareduploadwiki-linktext' => 'Sigg övver die Datei',
-'noimage' => 'Mer han kein Datei met däm Name, kanns De ävver $1.',
-'noimage-linktext' => 'huhlade!',
+'sharedupload' => 'De Datei es för diverse ungerscheidlije Projekte parat jelaht. Se kütt fun $1.',
+'sharedupload-desc-there' => 'Di Datei kütt vun $1 un kann en andere Projekte jebruch wäde.
+Mer han och [$2 jenouer Date övver se].',
+'sharedupload-desc-here' => 'Di Datei kütt vun $1 un kann en ander Projekte jebruch wäde.
+Jenouer Date övver se fingk mer op dä [$2 Sigg övver se].
+Dat sellve shteiht hee dronger.',
+'filepage-nofile' => 'Et jit kein Datei met dämm Nahme.',
+'filepage-nofile-link' => 'Et jit kein Datei met dämm Nahme, ävver De kanns se [$1 huhlaade].',
'uploadnewversion-linktext' => 'Dun en neu Version vun dä Datei huhlade',
-'shared-repo-from' => 'uß $1', # $1 is the repository name
-'shared-repo' => 'ene jemeinsame Beshtand', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'uß $1',
+'shared-repo' => 'ene jemeinsame Beshtand',
# File reversion
'filerevert' => '„$1“ zerök holle',
@@ -1777,6 +1856,7 @@ Mer ävver han och en [[Special:WhatLinksHere/$2|Komplätte Leß]].',
** Wohr jäje et Urhävverrääsch
** Dubbelt',
'filedelete-edit-reasonlist' => 'De Jrönde för et Fottschmieße beärbeide',
+'filedelete-maintenance' => 'Datteie Fottschmiiße un widder zerök Holle jeiht jez jrad nit, mer hann Waadong.',
# MIME search
'mimesearch' => 'Dateie üvver dänne ehre <span lang="en">MIME</span>-Typ söke',
@@ -1802,7 +1882,7 @@ wääde, un luur Der der iehr ander Links aan!',
# Random page
'randompage' => 'Zofällije Sigg',
-'randompage-nopages' => 'En dem Appachtemang „$1“ sin ja kein Sigge dren.',
+'randompage-nopages' => 'En {{PLURAL:$2|dem Appachtemang|dä Appachtemangs|keinem Appachtemang}} „$1“ sin ja kein Sigge dren.',
# Random redirect
'randomredirect' => 'Zofällije Ömleitung',
@@ -1814,6 +1894,7 @@ wääde, un luur Der der iehr ander Links aan!',
'statistics-header-edits' => 'Zahle övver Änderunge',
'statistics-header-views' => 'Zahle övver afjeroofe Sigge',
'statistics-header-users' => 'Statistike üvver de Metmaacher',
+'statistics-header-hooks' => 'Ander Statistike',
'statistics-articles' => 'Atikele',
'statistics-pages' => 'Sigge jesamp',
'statistics-pages-desc' => '
@@ -1847,8 +1928,8 @@ Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
'brokenredirects' => 'Ömleitunge, die en et Leere jonn',
'brokenredirectstext' => 'Die Ömleitunge hee jonn op Sigge, die mer jaa nit han:',
-'brokenredirects-edit' => '(ändere)',
-'brokenredirects-delete' => '(fottschmieße)',
+'brokenredirects-edit' => 'ändere',
+'brokenredirects-delete' => 'fottschmieße',
'withoutinterwiki' => 'Atikele ohne Links op annder Shprooche',
'withoutinterwiki-summary' => 'He sin Sigge jeliß, di nit op annder Shprooche jelingk sin.',
@@ -1971,8 +2052,7 @@ eins vun all däm op eimol.',
# Special:Categories
'categories' => 'Saachjruppe',
-'categoriespagetext' => 'Hee sin nur Saachjruppe jeliss, met jät dren.<br />
-Mer han_er eije Leßte för de
+'categoriespagetext' => 'Hee {{PLURAL:$1|es nur en Saachjrupp|sin nur Saachjruppe|es kei Saachjrupp}} jeliss, woh jät dren {{PLURAL:$1|es|es|wöhr}}. Mer han_er eije Leßte för de
[[Special:UnusedCategories|Saachjruppe met nix dren]], un de
[[Special:WantedCategories|jewönschte un nit aanjelaate Saachjruppe]].',
'categoriesfrom' => 'Zeich Saachjruppe vun hee af:',
@@ -1980,8 +2060,9 @@ Mer han_er eije Leßte för de
'special-categories-sort-abc' => 'Zoteere nohm Alphabett',
# Special:DeletedContributions
-'deletedcontributions' => 'Fottjeschmesse Versione',
-'deletedcontributions-title' => 'Fottjeschmesse Versione',
+'deletedcontributions' => 'Fottjeschmesse Versione',
+'deletedcontributions-title' => 'Fottjeschmesse Versione',
+'sp-deletedcontributions-contribs' => 'Beijdrääsch',
# Special:LinkSearch
'linksearch' => 'Lėngkß noh ußerhallef sööke',
@@ -2000,6 +2081,16 @@ De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <tt>$1</tt>',
'listusersfrom' => 'Zeich de Metmaacher vun:',
'listusers-submit' => 'Zeije',
'listusers-noresult' => 'Keine Metmaacher jefonge.',
+'listusers-blocked' => '(jespert)',
+
+# Special:ActiveUsers
+'activeusers' => 'Leß met de aktiive Metmaacher',
+'activeusers-intro' => 'Dat heh es en Leß met dä Metmaacher, di {{PLURAL:$1|zick jäßtere|en de läzde $1 Dääsch|hück}} ööhnsjät jemaat han.',
+'activeusers-count' => '{{PLURAL:$1|ein Änderung|$1 Änderunge|kein Änderunge}} {{PLURAL:$3|aam lezde Daach|en de lezte $3 Dääsch|hück}}',
+'activeusers-from' => 'Donn de Metmaacher zeije aff:',
+'activeusers-hidebots' => 'De Bots fott lohße',
+'activeusers-hidesysops' => 'De Wiki_Köbesse fott lohße',
+'activeusers-noresult' => 'Kein Metmaacher jefonge.',
# Special:Log/newusers
'newuserlogpage' => 'Logboch för neu Metmaachere',
@@ -2010,17 +2101,24 @@ De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'dä Metmaacher wood automattesch aanjemelldt',
# Special:ListGroupRights
-'listgrouprights' => 'Metmaacher-Jruppe-Rääschte',
-'listgrouprights-summary' => 'Hee kütt de Liss met dä Medmaacher-Jruppe, di dat Wiki hee kennt, un denne ier Rääschte.
+'listgrouprights' => 'Metmaacher-Jruppe-Rääschte',
+'listgrouprights-summary' => 'Hee kütt de Liss met dä Medmaacher-Jruppe, di dat Wiki hee kennt, un denne ier Rääschte.
Mieh övver de einzel Rääschte fenkt Er op de [[{{MediaWiki:Listgrouprights-helppage}}|Hölp-Sigg övver de Medmaacher ier Rääschte]].',
-'listgrouprights-group' => 'Jrupp',
-'listgrouprights-rights' => 'Räächte',
-'listgrouprights-helppage' => 'Help:Jrupperäächte',
-'listgrouprights-members' => '(opliste)',
-'listgrouprights-addgroup' => 'Metmaacher en {{PLURAL:$2|de Metmaacher-Jrupp|de Metmaacher-Jruppe|kein Metmaacher-Jrupp}} $1 erin dunn',
-'listgrouprights-removegroup' => 'Metmaacher us {{PLURAL:$2|dä Metmaacher-Jrupp|de Metmaacher-Jruppe|jaa kei Metmaacher-Jrupp}} $1 eruß nämme',
-'listgrouprights-addgroup-all' => 'Metmaacher en alle Metmaacher-Jruppe erin donn',
-'listgrouprights-removegroup-all' => 'Metmaacher us alle Metmaacher-Jruppe eruß nämme',
+'listgrouprights-key' => 'Lejend:
+* Dat es e <span class="listgrouprights-granted">jejovve Rääsch</span>
+* Dat es e <span class="listgrouprights-revoked">fottjenumme Rääsch</span>',
+'listgrouprights-group' => 'Jrupp',
+'listgrouprights-rights' => 'Räächte',
+'listgrouprights-helppage' => 'Help:Jrupperäächte',
+'listgrouprights-members' => '(opliste)',
+'listgrouprights-addgroup' => 'Metmaacher en {{PLURAL:$2|de Metmaacher-Jrupp|de Metmaacher-Jruppe|kein Metmaacher-Jrupp}} $1 erin dunn',
+'listgrouprights-removegroup' => 'Metmaacher us {{PLURAL:$2|dä Metmaacher-Jrupp|de Metmaacher-Jruppe|jaa kei Metmaacher-Jrupp}} $1 eruß nämme',
+'listgrouprights-addgroup-all' => 'Metmaacher en alle Metmaacher-Jruppe erin donn',
+'listgrouprights-removegroup-all' => 'Metmaacher us alle Metmaacher-Jruppe eruß nämme',
+'listgrouprights-addgroup-self' => 'Kann sesch sällver {{PLURAL:$2|erinn donn en de Metmaacherjropp:|en $2 Metmaacherjroppe erinn donn:|en kei Metmaacherjropp erenn donn.}} $1',
+'listgrouprights-removegroup-self' => 'Kann sesch sällver {{PLURAL:$2|eruß nämme uß dä Metmaacherjropp:|uß $2 Metmaacherjroppe eruß nämme:|uß kei Metmaacherjropp eruß nämme.}} $1',
+'listgrouprights-addgroup-self-all' => 'Kann sesch sällver en alle Metmaacherjroppe erenn donn',
+'listgrouprights-removegroup-self-all' => 'Kann sesch sällver uß alle Metmaacherjroppe eruß nämme',
# E-mail user
'mailnologin' => 'Keij E-Mail Adress',
@@ -2103,25 +2201,32 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
'enotif_lastdiff' => 'Loor noh $1 öm di änderung ze sinn.',
'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
'enotif_body' => 'Leeven $WATCHINGUSERNAME,
-en de {{SITENAME}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger
-$PAGETITLE_URL fings Do de Neuste Version.
+
+en de {{SITENAME}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de Neuste Version.
+
$NEWPAGE
-Koot Zosammejefass, Quell: „$PAGESUMMARY“ $PAGEMINOREDIT
+
+{{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT
+
Do kanns dä Metmaacher „$PAGEEDITOR“ aanspreche:
-* E-Mail: $PAGEEDITOR_EMAIL
-* wiki: $PAGEEDITOR_WIKI
-Do kriss vun jetz aan kein E-Mail mieh, bes dat Do Der die Sigg aanjeluurt häs. Do kanns ävver och all die E-Mail
+* E-mail: $PAGEEDITOR_EMAIL
+* Em Wiki: $PAGEEDITOR_WIKI
-Merker för die Sigge en Dinger Oppassliss op eimol ändere.
+Do kriss vun jetz aan kein E-Mail mieh, bes dat Do Der die Sigg aanjeluurt häs,
+och wann se norrens verändert weed.
+Do kanns ävver och all die E-Mail Merker för die Sigge en Dinger Oppassliss op eimol ändere.
Ene schöne Jroß vun de {{SITENAME}}.
--
Do kanns hee Ding Oppassliss ändere:
-{{FULLURL:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Öm di Sigg vun Dinger Oppassliss ze schmieße:
+$UNWATCHURL
Do kanns hee noh Hölp luure:
-{{FULLURL:int:MediaWiki:Helppage}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Schmieß die Sigg jetz fott',
@@ -2132,10 +2237,11 @@ Do kanns hee noh Hölp luure:
'exblank' => 'drop stundt nix',
'delete-confirm' => '„$1“ fottschmieße',
'delete-legend' => 'Fottschmieße',
-'historywarning' => '<strong>Opjepass:</strong> Die Sigg hät ene janze Püngel Versione',
+'historywarning' => '<strong>Opjepass:</strong> Die Sigg, di De fott schmiiße wells, hät {{PLURAL:$1|ein ällder Version|ald Stöcker $1 ällder Versione|jaa kei ällder Versione}}.',
'confirmdeletetext' => 'Do bes koot dovör, en Sigg för iwich fottzeschmieße. Dobei verschwind och de janze Verjangenheit vun dä Sigg us de Daatebank, met all ehr Änderunge un Metmaacher Name, un all dä Opwand, dä do dren stich. Do muss heh jetz bestätije, dat de versteihs, wat dat bedügg, un dat De weiß, wat Do do mähs.
<strong>Dun et nor, wann dat met de [[{{MediaWiki:Policy-url}}|Rejelle]] wirklich zosamme jeiht!</strong>',
'actioncomplete' => 'Erledich',
+'actionfailed' => 'Dat es donevve jejange',
'deletedtext' => 'De Sigg „<nowiki>$1</nowiki>“ es jetz fottjeschmesse woode. Luur Der „$2“ aan, do häs De en Liss met de Neuste fottjeschmesse Sigge.',
'deletedarticle' => 'hät fottjeschmesse: „[[$1]]“',
'suppressedarticle' => 'han „[[$1]]“ verstoche',
@@ -2155,18 +2261,19 @@ Do kanns hee noh Hölp luure:
'delete-warning-toobig' => 'Di Sigg hät {{PLURAL:$1|ein Version|$1 Versione|jakein Version}}. Dat sinn_er ärsch fill. Wann De die all fottschmieße wells, dat kann dem Wiki sing Datenbangk schwer ußbremse.',
# Rollback
-'rollback' => 'Em Letzte sing Änderunge zeröcknemme',
-'rollback_short' => 'Zeröcknemme',
-'rollbacklink' => 'All dem Letzte sing Änderunge zeröckdriehe',
-'rollbackfailed' => 'Dat Zeröcknemme jingk scheiv',
-'cantrollback' => 'De letzte Änderung zeröckzenemme es nit müjjelich. Dä letzte Schriever es dä einzije, dä aan dä Sigg hee jet jedon hät!',
-'alreadyrolled' => 'Mer künne de letzte Änderunge vun dä Sigg „[[:$1]]“ vum Metmaacher „[[User:$2|$2]]“ ([[User talk:$2|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) nimieh zeröcknemme, dat hät ene Andere enzwesche ald jedon, udder de Sigg ömjeändert.
+'rollback' => 'Em Letzte sing Änderunge zeröcknemme',
+'rollback_short' => 'Zeröcknemme',
+'rollbacklink' => 'All dem Letzte sing Änderunge zeröckdriehe',
+'rollbackfailed' => 'Dat Zeröcknemme jingk scheiv',
+'cantrollback' => 'De letzte Änderung zeröckzenemme es nit müjjelich. Dä letzte Schriever es dä einzije, dä aan dä Sigg hee jet jedon hät!',
+'alreadyrolled' => 'Mer künne de letzte Änderunge vun dä Sigg „[[:$1]]“ vum Metmaacher „[[User:$2|$2]]“ ([[User talk:$2|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) nimieh zeröcknemme, dat hät ene Andere enzwesche ald jedon, udder de Sigg ömjeändert.
De Neuste Änderung aan dä Sigg es jetz vun däm Metmaacher „[[User:$3|$3]]“ ([[User talk:$3|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Bei dä Änderung stundt: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Änderunge vun däm Metmaacher „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|däm sing Klaafsigg]]) fottjeschmesse, un doför de letzte Version vum „[[User:$1|$1]]“ widder zeröckjehollt', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'De Änderungen vum $1 zeröckjenumme, un dobei de letzte Version vum $2 widder jehollt.',
-'sessionfailure' => "Et jov wall e technisch Problem met Dingem Login. Dröm ha'mer dat us Vörsich jetz nit jemaht, domet mer nit villeich Ding Änderung däm verkihrte Metmaacher ungerjubele. Jangk zeröck un versök et noch ens.",
+'editcomment' => "Bei dä Änderung stundt: „''$1''“.",
+'revertpage' => 'Änderunge vun däm Metmaacher „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|däm sing Klaafsigg]]) fottjeschmesse, un doför de letzte Version vum „[[User:$1|$1]]“ widder zeröckjehollt',
+'revertpage-nouser' => 'Änderunge vun enem Metmaacher, däm singe Name vershtoche es, retuur jemaat op de letzte Version {{GENDER:$1|vum|vum|vum Metmaacher|vun dä|vum}} [[User:$1|$1]]',
+'rollback-success' => 'De Änderungen vum $1 zeröckjenumme, un dobei de letzte Version vum $2 widder jehollt.',
+'sessionfailure' => "Et jov wall e technisch Problem met Dingem Login. Dröm ha'mer dat us Vörsich jetz nit jemaht, domet mer nit villeich Ding Änderung däm verkihrte Metmaacher ungerjubele. Jangk zeröck un versök et noch ens.",
# Protect
'protectlogpage' => 'Logboch vum Sigge Schötze',
@@ -2182,7 +2289,6 @@ De Neuste Änderung aan dä Sigg es jetz vun däm Metmaacher „[[User:$3|$3]]
'protectexpiry' => 'Duur, wi lang:',
'protect_expiry_invalid' => 'Die Duur för ze Schötz es Kappes, di künne mer nit verstonn.',
'protect_expiry_old' => 'Do häs De Desch verdonn. Die Zick för ze Schötze es doch ald eröm!',
-'protect-unchain' => 'Et Schötze jäje Ömnenne extra enstelle looße',
'protect-text' => "Heh kanns De dä Schotz jäje Veränderunge för de Sigg „'''<nowiki>$1</nowiki>'''“ aanluure un ändere.",
'protect-locked-blocked' => "Do kanns nit der Siggeschotz ändere, esu lang wi Dinge Zojang zom Wiki jesperrt es. Hee es der aktuelle Stand fum Siggeschotz för di Sigg '''„$1“:'''",
'protect-locked-dblock' => "De Datebank es jesperrt. Dröm künne mer der Siggeschotz nit ändere.
@@ -2210,7 +2316,7 @@ Di Sigg '''„$1“:''' es jetz jrad:",
** Hen- un her-Änderei, woh mer süht, dat nix mieh joods erus kumme weed
** janz weschtejje Sigg, met ußerjewöhnlesch fill Afroofe',
'protect-edit-reasonlist' => 'Don de Grönd för t Schöze beärrbeide',
-'protect-expiry-options' => '1 Stund:1 hour,1 Dach:1 day,1 Woch:1 week,2 Woche:2 weeks,1 Mond:1 month,3 Mond:3 months,6 Mond:6 months,1 Johr:1 year,Unbejrenz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Stund:1 hour,1 Dach:1 day,1 Woch:1 week,2 Woche:2 weeks,1 Mond:1 month,3 Mond:3 months,6 Mond:6 months,1 Johr:1 year,Unbejrenz:infinite',
'restriction-type' => 'jespecht es:',
'restriction-level' => 'ändere darf:',
'minimum-size' => 'met mieh wie',
@@ -2252,6 +2358,7 @@ Versione för die neu Sigg enjerich. Die neu Sigg weed nit ersetz.',
'undelete-nodiff' => 'Mer han kei ällder Version jefonge.',
'undeletebtn' => 'Zeröckholle!',
'undeletelink' => 'aanloore odder widder zeröckholle',
+'undeleteviewlink' => 'aanloore',
'undeletereset' => 'De Felder usleere',
'undeleteinvert' => 'De Ußwahl ömdrije',
'undeletecomment' => 'Jrond (för en et Logboch):',
@@ -2289,19 +2396,23 @@ $1',
'contributions-title' => 'Beidräsch fum $1',
'mycontris' => 'ming Beidräch',
'contribsub2' => 'För dä Metmaacher: $1 ($2)',
-'nocontribs' => 'Mer han kein Änderunge jefonge, en de Logböcher, die do passe däte.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Mer han kein Änderunge jefonge, en de Logböcher, die do passe däte.',
'uctop' => ' (Neuste)',
'month' => 'un Moohnt:',
'year' => 'Beß Johr:',
-'sp-contributions-newbies' => 'Nor neu Metmaacher ier Beidräg zeije',
-'sp-contributions-newbies-sub' => 'För neu Metmaacher',
-'sp-contributions-newbies-title' => 'Neu Metmaacher ier Beidräsch',
-'sp-contributions-blocklog' => 'Logboch met Metmaacher-Sperre',
-'sp-contributions-logs' => 'Logböcher',
-'sp-contributions-search' => 'Söök noh Metmaacher ier Beidräg',
-'sp-contributions-username' => 'Metmaachername odder IP-Address:',
-'sp-contributions-submit' => 'Sööke',
+'sp-contributions-newbies' => 'Nor neu Metmaacher ier Beidräg zeije',
+'sp-contributions-newbies-sub' => 'För neu Metmaacher',
+'sp-contributions-newbies-title' => 'Neu Metmaacher ier Beidräsch',
+'sp-contributions-blocklog' => 'Logboch met Metmaacher-Sperre',
+'sp-contributions-deleted' => 'Fottjeschmesse Beidrääsch',
+'sp-contributions-logs' => 'Logböcher',
+'sp-contributions-talk' => 'Klaaf',
+'sp-contributions-userrights' => 'Räächde verwalde',
+'sp-contributions-blocked-notice' => 'Heh dä Metmaacher es em Momang jespert, Dä letzte Enndraach em Logbooch doh drövver kütt jez als ene Henwiiß:',
+'sp-contributions-search' => 'Söök noh Metmaacher ier Beidräg',
+'sp-contributions-username' => 'Metmaachername odder IP-Address:',
+'sp-contributions-submit' => 'Sööke',
# What links here
'whatlinkshere' => 'Wat noh heh link',
@@ -2324,6 +2435,7 @@ $1',
# Block/unblock
'blockip' => 'Metmaacher sperre',
+'blockip-title' => 'Metmaacher Schpärre',
'blockip-legend' => 'Metmaacher ov IP-Adresse Sperre',
'blockiptext' => 'Hee kanns De bestemmte Metmaacher oder IP-Adresse sperre, su dat se hee em Wiki nit mieh schrieve und Sigge ändere künne.
Dat sollt nor jedon wääde om sujenannte Vandaale ze bremse. Un mer müsse uns dobei natörlich aan uns [[{{MediaWiki:Policy-url}}|Rejelle]] för esu en Fäll halde.
@@ -2350,7 +2462,7 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
'ipbenableautoblock' => 'Dun automatisch de letzte IP-Adress sperre, die dä Metmaacher jehatt hät, un och all die IP-Adresse, vun wo dä versök, jet ze ändere.',
'ipbsubmit' => 'Dun dä Metmaacher sperre',
'ipbother' => 'För en ander Duur:',
-'ipboptions' => '2 Stund:2 hours,1 Dach:1 day,3 Däch:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Mond:1 month,3 Mond:3 months,6 Mond:6 months,1 Johr:1 year,Unbejrenz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stund:2 hours,1 Dach:1 day,3 Däch:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Mond:1 month,3 Mond:3 months,6 Mond:6 months,1 Johr:1 year,Unbejrenz:infinite',
'ipbotheroption' => 'Söns wie lang',
'ipbotherreason' => 'Ander Jrund oder Zosätzlich:',
'ipbhidename' => 'Don däm Metmaacher singe Name versteiche, en de Leste un däm sing Änderunge.',
@@ -2380,9 +2492,11 @@ un och wann De se ändere wells.',
'ipblocklist-sh-tempblocks' => '$1 de Sperre op Zick',
'ipblocklist-sh-addressblocks' => '$1 de einzel IP-Addresse ier Sperre',
'ipblocklist-submit' => 'Sööke',
+'ipblocklist-localblock' => 'Sperr heh em Wiki',
+'ipblocklist-otherblocks' => 'Ander {{PLURAL:$1|Sperr|Sperre|-nix-}}',
'blocklistline' => '$1, $2 hät „$3“ jesperrt ($4)',
'infiniteblock' => 'för iwich',
-'expiringblock' => 'leuf am $1 uß',
+'expiringblock' => 'leuf aam $1 öm $2 Uhr uß',
'anononlyblock' => 'nor namelose',
'noautoblockblock' => 'automatisch Sperre avjeschalt',
'createaccountblock' => 'Aanmelde es nit müjjelich',
@@ -2396,7 +2510,8 @@ un och wann De se ändere wells.',
'contribslink' => 'Beidräch',
'autoblocker' => 'Automattisch jesperrt. Ding IP_Adress wood vör kootem vun däm Metmaacher „[[User:$1|$1]]“ jebruch. Dä es jesperrt woode wäje: „$2“',
'blocklogpage' => 'Logboch met Metmaacher-Sperre',
-'blocklog-fulllog' => 'Et janze Logboch fum Metmaacher-Sperre',
+'blocklog-showlog' => 'Heh dä Metmaacher es ald fröjer jeshperrt woode. Dat Logbooch vum Metmaacher-Sperre onge künnt doh jät mieh zoh saare.',
+'blocklog-showsuppresslog' => 'Heh dä Metmaacher es ald fröjer jeshperrt un vershtoche woode. Dat Logbooch vum Metmaacher-Vershteishe onge künnt doh jät mieh zoh saare.',
'blocklogentry' => 'hät „[[$1]]“ fö de Zick vun $2 jesperrt. $3',
'reblock-logentry' => 'hät di Sperr för dä „[[$1]]“ met dä Duuer fun $2 $3 jeändert',
'blocklogtext' => 'Heh es dat Logboch för et Metmaacher Sperre un Freijevve.
@@ -2416,6 +2531,7 @@ Automatich jesperrte IP-Adresse sin nit heh, ävver en de [[Special:IPBlockList|
'ipb_already_blocked' => '„$1“ es ald jesperrt',
'ipb-needreblock' => '== Ald jespert ==
Dä Metmaacher „$1“ es ald jesperrt. Wellß De de Enstellunge för di Spär ändere?',
+'ipb-otherblocks-header' => 'Ander {{PLURAL:$1|Sperr|Sperre|-nix-}}',
'ipb_cant_unblock' => '<strong>Ene Fähler:</strong> En Sperr met dä Nummer $1 es nit ze finge. Se künnt ald widder freijejovve woode sin.',
'ipb_blocked_as_range' => 'Dat jeit nit. De IP-Adress „$1“ es nit tirek jesperrt. Se es ävver en däm jesperrte Bereich „$2“ dren. Die Sperr kam_mer ophevve. Donoh kam_mer och kleiner Aandeile fun däm Bereich widder neu sperre. Di Adress alleins kam_mer ävver nit freijevve.',
'ip_range_invalid' => 'Dä Bereich vun IP_Adresse es nit en Oodnung.',
@@ -2431,6 +2547,7 @@ un verzäll dänne vun däm ärrje Risiko för de Secherheit fun dänne ehr Rä
'sorbsreason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
'sorbs_create_account_reason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Dröm kanns De Dich heh em Wiki nit als ene neue Metmaacher aanmelde. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker oder (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
'cant-block-while-blocked' => 'Do kanns ander Metmaacher nit sperre, esu lang wi De sellver jesperrt bes.',
+'cant-see-hidden-user' => 'Dä Metmaacher, dä De shperre wells, es al jeshperrt un verschtoche. Weil De nit dat Rääsch häs. Metmaacher ze vershteiche (<code>hideuser</code>), kanns De däm sing Sperr och nit ändere.',
# Developer tools
'lockdb' => 'Daatebank sperre',
@@ -2484,7 +2601,7 @@ En dänne Fäll, muss De Der dä Enhald vun dä Klaafsigge selvs vörnemme, un e
'move-watch' => 'Op die Sigg heh oppasse',
'movepagebtn' => 'Ömnenne',
'pagemovedsub' => 'Dat Ömnenne hät jeflupp',
-'movepage-moved' => "'''De Sigg „$1“ es jez en „$2“ ömjenannt.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''De Sigg „$1“ es jez en „$2“ ömjenannt.'''",
'movepage-moved-redirect' => 'En Ömleidung es aanjelaat woode.',
'movepage-moved-noredirect' => 'Kein Ömleidung woodt aanjelaat.',
'articleexists' => "De Sigg met däm Name jitt et ald, oder dä Name ka'mer oder darf mer nit bruche.<br />Do muss Der ene andere Name ussöke.",
@@ -2526,6 +2643,12 @@ Di Sigg „[[:$1]]“ jitt et ald. Wollts De se fottschmieße, öm heh di Sigg
'imageinvalidfilename' => 'Dä Ziel-Name för de Datei es verkeht',
'fix-double-redirects' => 'Don noh em Ömnenne de Ömleidunge automattesch ändere, di noch op dä ahle Tittel zeije, also de neu entshtande dubbelte Ömleidunge oplöse.',
'move-leave-redirect' => 'Donn en Ömleidung doför ennreschte',
+'protectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß de Wiki-Kööbeße se ömnänne künne.",
+'semiprotectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß aanjemeldte Metmaacher se ömnänne künne.",
+'move-over-sharedrepo' => '==Di Dattei jidd_et ald==
+En Dattei [[:$1]] jidd_et ald en enem jemeinsame Beschtand. En annder Dattei op dä Name ömzenänne sorresch doför, dat mer aan di Dattei em jemeinsame Beschtand vun heh uß donoh nit mieh draan kütt.',
+'file-exists-sharedrepo' => 'Dinge Name för die Dattei weed ald jebruch, un zwa en enem jemeinsame Bestand vun Dateije.
+Dröm söhk ene andere Name uß.',
# Export
'export' => 'Sigge Exporteere',
@@ -2551,15 +2674,21 @@ zo jroße Lass för dä Sörver.',
'export-pagelinks' => 'Donn de Sigge metnämme, wo vun heh Lengks drop jon, un vun do wigger, bes esu vill Schrette:',
# Namespace 8 related
-'allmessages' => 'Aanzeije-Baustein, Täxte, un Nohreeschte vum Wiki-System',
-'allmessagesname' => 'Name',
-'allmessagesdefault' => 'Dä standaadmäßije Tex',
-'allmessagescurrent' => 'Esu es dä Tex jetz',
-'allmessagestext' => 'Heh kütt en Liss met Texte, Texstöck, un Nohreechte em Appachtemeng „MediaWiki“ — Do draan Ändere löht et Wiki anders ußsin, dat darf dröm nit Jede maache.
+'allmessages' => 'Aanzeije-Baustein, Täxte, un Nohreeschte vum Wiki-System',
+'allmessagesname' => 'Name',
+'allmessagesdefault' => 'Dä standaadmäßije Tex',
+'allmessagescurrent' => 'Esu es dä Tex jetz',
+'allmessagestext' => 'Heh kütt en Liss met Texte, Texstöck, un Nohreechte em Appachtemeng „MediaWiki“ — Do draan Ändere löht et Wiki anders ußsin, dat darf dröm nit Jede maache.
Wenn De jenerell aan [http://www.mediawiki.org/wiki/Localisation MediaWiki singe Översezung] jet anders han wells, do jangk noh [http://translatewiki.net translatewiki.net].',
-'allmessagesnotsupportedDB' => '<strong>Dat wor nix!</strong> Mer künne „{{#special:allmessages}}“ nit zeije, <code>$wgUseDatabaseMessages</code> es usjeschalt!',
-'allmessagesfilter' => 'Fingk dat Stöck hee em Name:',
-'allmessagesmodified' => 'Dun nor de Veränderte aanzeije',
+'allmessagesnotsupportedDB' => '<strong>Dat wor nix!</strong> Mer künne „{{#special:allmessages}}“ nit zeije, <code>$wgUseDatabaseMessages</code> es usjeschalt!',
+'allmessages-filter-legend' => 'Ußsöhke — wat för en Täxte o Nohreeshte aazeije?',
+'allmessages-filter' => 'Zohshtand:',
+'allmessages-filter-unmodified' => 'nit jeändert',
+'allmessages-filter-all' => 'ejaal',
+'allmessages-filter-modified' => 'heh em Wiki jeändert',
+'allmessages-prefix' => 'Name fängk aan met:',
+'allmessages-language' => 'Shprooch:',
+'allmessages-filter-submit' => 'Lohß Jonn!',
# Thumbnails
'thumbnail-more' => 'Jrößer aanzeije',
@@ -2569,6 +2698,9 @@ Wenn De jenerell aan [http://www.mediawiki.org/wiki/Localisation MediaWiki singe
'djvu_no_xml' => 'De XML-Date för di DjVu-Datei kunnte mer nit afrofe',
'thumbnail_invalid_params' => 'Ene Parameter för et Breefmarke-Belldsche (<i lang="en">thumbnail</i>) Maache wohr nit en Odenung',
'thumbnail_dest_directory' => 'Dat Verzeichnis för dat erin ze donn kunte mer nit aanlääje.',
+'thumbnail_image-type' => 'Di Zoot Beld künne mer nit met ömjonn',
+'thumbnail_gd-library' => 'Vun dä <i lang="en">GD</i> Projramm_Biplijotheek fäählt en Funkßuhn: „$1“',
+'thumbnail_image-missing' => 'Di Datei schingk nit doh ze sin: <code>$1</code>',
# Special:Import
'import' => 'Sigge Emporteere',
@@ -2634,6 +2766,7 @@ Bes esu joot, un versök et noch ens.',
'tooltip-ca-viewsource' => "Die Sigg es jeschötz. Dä Wikitex kam'mer ävver beloore.",
'tooltip-ca-history' => 'Ällder Versione vun dä Sigg',
'tooltip-ca-protect' => 'Dun die Sigg schötze',
+'tooltip-ca-unprotect' => 'Donn dä Schoz vun dä Sigg heh ophävve.',
'tooltip-ca-delete' => 'Dun die Sigg fottschmieße',
'tooltip-ca-undelete' => 'Don de Änderunge widder zerök holle, di aan dä Sigg heh jemat woode wore, ih dat se fottjeschmesse wood',
'tooltip-ca-move' => 'Dun die Sigg ömbenenne',
@@ -2644,6 +2777,7 @@ Bes esu joot, un versök et noch ens.',
'tooltip-search-fulltext' => 'Sök noh Sigge, wo dä Tex dren enthallde es',
'tooltip-p-logo' => 'Houpsigg',
'tooltip-n-mainpage' => 'Houpsigk aanzeije',
+'tooltip-n-mainpage-description' => 'Jangk op de {{int:Mainpage}}.',
'tooltip-n-portal' => 'Övver dat Projek heh, wat De donn un wie de metmaache kanns, wat wo ze fenge es',
'tooltip-n-currentevents' => 'Heh kreß De e beßje Enfommazjohn övver wat jraad am Jang eß',
'tooltip-n-recentchanges' => 'En Leß met de neuste Änderunge heh aam Wiki.',
@@ -2714,10 +2848,12 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
# Attribution
'anonymous' => 'Namelose {{PLURAL:$1|Metmaacher|Metmaacher|Metmaacher}} vun de {{SITENAME}}',
'siteuser' => '{{SITENAME}}-{{GENDER:$1|Metmaacher|Metmaacheren|Metmaacher|Metmaacher|Metmaacheren}} $1',
-'lastmodifiedatby' => 'Die Sigg heh wood et letz am $1 öm $2 Uhr {{GENDER:$4|vum|vun dä|vum|vum|vun dä}} $3 jeändert.', # $1 date, $2 time, $3 user
+'anonuser' => 'dä nameloose Metmaacher $1 vun de {{SITENAME}}',
+'lastmodifiedatby' => 'Die Sigg heh wood et letz am $1 öm $2 Uhr {{GENDER:$4|vum|vun dä|vum|vum|vun dä}} $3 jeändert.',
'othercontribs' => 'Bout op et Werk vun $1 op.',
'others' => 'ander',
'siteusers' => '{{PLURAL:$2|däm|de|keine}} {{PLURAL:$2|Metmaacher|Metmaachere|Metmaacher}} $1 aan de {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|dä|de|keine}} nameloose Metmaacher $1 vun de translatewiki.net',
'creditspage' => 'Üvver de Metmaacher un ehre Beidräch för heh die Sigg',
'nocredits' => "För die Sigg ha'mer nix en de Liss.",
@@ -2746,6 +2882,7 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
'skinname-chick' => 'Höhnche',
'skinname-simple' => 'Eifach',
'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vektor',
# Math options
'mw_math_png' => 'Immer nor PNG aanzeije',
@@ -2755,6 +2892,19 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
'mw_math_modern' => 'De bess Enstellung för de Brauser vun hück',
'mw_math_mathml' => 'Nemm „MathML“ wann müjjelich (em Probierstadium)',
+# Math errors
+'math_failure' => 'Fähler vum Parser',
+'math_unknown_error' => 'Fähler, dä mer nit kenne',
+'math_unknown_function' => 'en Funktion, die mer nit kenne',
+'math_lexing_error' => 'Fähler beim Lexing',
+'math_syntax_error' => 'Fähler en de Syntax',
+'math_image_error' => 'De Ömwandlung noh PNG es donevve jejange. Dun ens noh de richtije Enstallation luure bei <i>latex</i>, <i>dvips</i>, <i>gs</i>, un <i>convert</i>. Oder sag et enem Sörver-Admin, oder enem Wiki Köbes.',
+'math_bad_tmpdir' => 'Dat Zwescheverzeichnis för de mathematische Formele lööt sich nit aanläje oder nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem Sörver-Minsch.',
+'math_bad_output' => 'Dat Verzeichnis för de mathematische Formele lööt sich nit aanläje oder mer kann nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem Sörver-Minsch.',
+'math_notexvc' => "Dat Projamm <code>texvc</code> ha'mer nit jefunge. Sag et enem
+Wiki-Köbes, enem Sörver-Minsch, oder luur ens en de
+<code>math/README</code>.",
+
# Patrolling
'markaspatrolleddiff' => 'Nohjeluurt. Dun dat fasshallde.',
'markaspatrolledtext' => 'De Änderung es nohjeluert, dun dat fasshallde',
@@ -2789,14 +2939,10 @@ $1',
'previousdiff' => '← De Änderung dovör zeije',
'nextdiff' => 'De Änderung donoh zeije →',
-# Visual comparison
-'visual-comparison' => 'De Ungerscheide',
-
# Media information
'mediawarning' => '<strong>Opjepass</strong>: En dä Datei künnt en <b>jefährlich Projrammstöck</b> dren stecke. Wa\'mer et laufe looße dät, do künnt dä Sörver, udder Dinge Rääschner, met för de <i lang="en">Cracker</i> opjemaht wääde.',
-'imagemaxsize' => 'Belder op de Sigge, wo se beschrevve wääde, nit jrößer maache wie:',
+'imagemaxsize' => "Belder nit jrößer maache wie:<br /> ''(op dä Sigge, wo se beschrevve wääde)''",
'thumbsize' => 'Esu breid solle de klein Beldche (Thumbnails/Breefmarke) sin:',
-'widthheight' => '$1×$2',
'widthheightpage' => '$1×$2, {{PLURAL:$3|eij Sigg|$3 Sigge|keij Sigge}}',
'file-info' => '(Dateiömfang: $1, MIME-Tüp: <code>$2</code>)',
'file-info-size' => '({{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, de Datei hät $3, dä MIME-Typ es: <code>$4</code>)',
@@ -2804,6 +2950,8 @@ $1',
'svg-long-desc' => '(SVG-Datei, de Basis es {{PLURAL:$1|ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|ei Pixel|$2 Pixelle}} huh, dä Dateiömfang es $3)',
'show-big-image' => 'Jröößer Oplöösung',
'show-big-image-thumb' => '<small>Di Vör-Aansich es $1 × $2 Pixelle jroß</small>',
+'file-info-gif-looped' => 'läuf emmer widder vun vürre',
+'file-info-gif-frames' => '{{PLURAL:$1|ei einzel Beld|$1 einzel Belder|kei einzel Beld}}',
# Special:NewFiles
'newimages' => 'Neu Dateie als Jaleri',
@@ -2840,7 +2988,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breejd',
@@ -2970,14 +3118,14 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-unknowndate' => 'Dattum onbikannt',
-'exif-orientation-1' => 'Nommaal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Op der Kopp jespeejelt', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Op der Kopp jedrieht', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Links-Räähß jespeejelt', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'En Veedelsdriejong mem Uhrzeijer un dann links-räähß jespeejelt', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'En Veedelsdriejong mem Uhrzeijer', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'En Veedelsdriejong jääje der Uhrzeijer un dann links-räähß jespeejelt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'En Veedelsdriejong jääje der Uhrzeijer', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Nommaal',
+'exif-orientation-2' => 'Op der Kopp jespeejelt',
+'exif-orientation-3' => 'Op der Kopp jedrieht',
+'exif-orientation-4' => 'Links-Räähß jespeejelt',
+'exif-orientation-5' => 'En Veedelsdriejong mem Uhrzeijer un dann links-räähß jespeejelt',
+'exif-orientation-6' => 'En Veedelsdriejong mem Uhrzeijer',
+'exif-orientation-7' => 'En Veedelsdriejong jääje der Uhrzeijer un dann links-räähß jespeejelt',
+'exif-orientation-8' => 'En Veedelsdriejong jääje der Uhrzeijer',
'exif-planarconfiguration-1' => 'Dat Fomaat es en Stöckscher',
'exif-planarconfiguration-2' => 'Dat Fomaat es flaach',
@@ -3107,7 +3255,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-gpsmeasuremode-2' => 'Zweidimensjonal Mohß fum GPS',
'exif-gpsmeasuremode-3' => 'Dreidimensjonal Mohß fum GPS',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Killomeeter en de Shtondt noh_m GPS',
'exif-gpsspeed-m' => 'Miehle en de Shtondt noh_m GPS',
'exif-gpsspeed-n' => 'Knote noh_m GPS',
@@ -3126,6 +3274,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'watchlistall2' => 'all',
'namespacesall' => 'all',
'monthsall' => 'all',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-Mail Adress bestätije',
@@ -3145,42 +3294,24 @@ Jetz künns De och noch enlogge. Vill Spass!',
'confirmemail_loggedin' => 'Ding E-Mail Adress es jetz bestätich!',
'confirmemail_error' => 'Beim E-Mail Adress Bestätije es jet donevve jejange, de Bestätijung kunnt nit avjespeichert wääde.',
'confirmemail_subject' => 'Dun Ding E-Mail Adress bestätije för de {{SITENAME}}.',
-'confirmemail_body' => 'Künnt jod sin, Do wors et selver,
-vun de IP_Adress $1
-hät sich jedenfalls einer jemeldt, un well
-dä Metmaacher "$2" op de {{SITENAME}}
+'confirmemail_body' => 'Künnt jod sin, Do wors et selver, vun de IP_Adress $1 hät sich
+jedenfalls einer jemeldt, un well dä Metmaacher "$2" op de {{SITENAME}}
sin, un hät en E-Mail Adress aanjejovve.
-Öm jetz klor ze krije, dat die E-Mail
-Adress un dä neue Metmaacher och zosamme
-jehüre, muss dä Neue en singem Brauser
-dä Link:
+
+Öm jetz klor ze krije, dat die E-Mail Adress un dä neue Metmaacher och
+zosamme jehüre, muss dä Neue en singem Brauser dä Link:
$3
-opmaache. Noch för em $4.
-Alsu dun dat, wann de et selver bes.
+opmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann de et selver bes.
-Wann nit Do, sondern söns wä Ding E-Mail
-Adress aanjejovve hät, do bruchs de jar nix
-ze don. De E-Mail Adress kann nit jebruch
-wääde, ih dat se nit bestätich es.
-Do kanns ävver och op he dä Link jon:
+Wann nit Do, sondern söns wä Ding E-Mail Adress aanjejovve hät, do bruchs de
+jar nix ze don. De E-Mail Adress kann nit jebruch wääde, ih dat se nit
+bestätich es. Do kanns ävver och op he dä Link jon:
$5
-Domet deiß De tirek sare, dat De di Adress
-nit bestätije wells.
-
-Wann de jetz neujeerich jewoode bes, un wells
-wesse, wat met de {{SITENAME}} loss es,
-do jang met Dingem Brauser noh:
-{{FULLURL:{{MediaWiki:Mainpage}}}}
-un luur Der et aan.
-
-Ene schöne Jroß vun de {{SITENAME}}.
-
---
-{{SITENAME}}: {{fullurl:{{Mediawiki:mainpage}}}}',
+Domet deiß De tirek sare, dat De di Adress nit bestätije wells.',
'confirmemail_invalidated' => "Et Bestätijje för die E-Mail-Adress es afjebroche woode, un die Adress is '''nit''' bestätich.",
'invalidateemail' => 'E-Mail-Adress nit bestätich',
@@ -3217,6 +3348,7 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
'autocomment-prefix' => '-',
'word-separator' => '&#32;',
'ellipsis' => '&nbsp;…',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← de Sigg dovör',
@@ -3314,7 +3446,7 @@ De könnts Ding Oppassliss ävver och [[Special:Watchlist/edit|övver e Fomulaa
Dä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlößel „$2“.",
# Special:Version
-'version' => 'Version vun de Wiki Soffwär zeije', # Not used as normal message but as header for the special page itself
+'version' => 'Version vun de Wiki Soffwär zeije',
'version-extensions' => 'Installeete Erjänzunge un Zohsätz',
'version-specialpages' => '{{int:nstab-special}}e',
'version-parserhooks' => 'De Parser-Hooke',
@@ -3328,7 +3460,7 @@ Dä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlöße
'version-skin-extension-functions' => 'Funktione för de Skins ze erjänze',
'version-hook-name' => 'De Schnettstelle ier Name',
'version-hook-subscribedby' => 'Opjeroofe vun',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
'version-software' => 'Installeete Soffwäer',
'version-software-product' => 'Produk',
@@ -3410,4 +3542,15 @@ Der Name moß ohne der Försatz „{{ns:file}}:“ aanjejovve wääde.',
'dberr-cachederror' => 'Wat heh noh kütt es en Kopi vum Zwescheshpeisher vun dä Sigg,
die De häs han welle. Se künnt jet ällder un nit mieh aktoäll sin.',
+# HTML forms
+'htmlform-invalid-input' => 'Mer han e Problem met jet wat De enjejovve häß',
+'htmlform-select-badoption' => 'Dinge aanjejovve Wäät es kein müjjelesche Ußwahl.',
+'htmlform-int-invalid' => 'Dinge aanjejovve Wäät eß kein janze Zahl.',
+'htmlform-float-invalid' => 'Wat De doh aanjejovve häs, dat es kein gewöhnlijje udder Komma-Zahl.',
+'htmlform-int-toolow' => 'Dinge aanjejovve Wäät litt onger dämm winnischßde, wat müjjelesch es, un dat es $1.',
+'htmlform-int-toohigh' => 'Dinge aanjejovve Wäät litt övver dämm hühßte, wat jeiht, un dat es $1.',
+'htmlform-submit' => 'Loß Jonn!',
+'htmlform-reset' => 'Änderunge retuur nämme',
+'htmlform-selectorother-other' => 'Annder',
+
);
diff --git a/languages/messages/MessagesKu.php b/languages/messages/MessagesKu.php
index d0772270..0c71b1b3 100644
--- a/languages/messages/MessagesKu.php
+++ b/languages/messages/MessagesKu.php
@@ -1,6 +1,9 @@
<?php
/** Kurdish (Kurdî / كوردی)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesKu_arab.php b/languages/messages/MessagesKu_arab.php
index c9237155..6eea6915 100644
--- a/languages/messages/MessagesKu_arab.php
+++ b/languages/messages/MessagesKu_arab.php
@@ -7,15 +7,12 @@
* @ingroup Language
* @file
*
- * @author Aras Noori
* @author Arastein
* @author Asoxor
- * @author Cyrus abdi
* @author Marmzok
*/
-$fallback = 'ku-latn';
-
+$fallback = 'ckb-arab';
$digitTransformTable = array(
'0' => '٠', # &#x0660;
@@ -33,1066 +30,18 @@ $digitTransformTable = array(
);
$messages = array(
-# User preference toggles
-'tog-underline' => 'هێڵ بە ژێر بەستەرەکاندا بهێنە:',
-'tog-highlightbroken' => 'شێوازدانان بگۆڕه‌',
-'tog-justify' => 'كۆپله‌كه‌ ڕێك بكه‌',
-'tog-hideminor' => 'دەستکارییە بچوکەکان بشارەوە لە دوا گۆڕانکارییەکاندا',
-'tog-extendwatchlist' => 'لیستی ته‌ماشاكردن درێژبكه‌ره‌وه‌ تاكوو هه‌موو گۆڕانكارییه‌كان به‌رچاوت بكه‌وێ',
-'tog-usenewrc' => 'دوا گۆڕانکارییەکان پەرە پێبدە (پێویستی بە جاڤاسکریپتە)',
-'tog-numberheadings' => 'ژماره‌ی سه‌رتا خۆكارانه‌ دابنێ',
-'tog-showtoolbar' => 'شریتی ئامرازەکان نیشان بدە (JavaScript)',
-'tog-editondblclick' => 'ده‌ستكاریی په‌ڕه‌كه‌ بكه‌ به‌ دووكرته‌ لێكردنی (سكریپتی جاڤا)',
-'tog-editsection' => 'ده‌ستكاریی كردنی به‌ش چالاك بكه‌ له‌ڕێگه‌ی به‌سته‌ری [ده‌ستكاریی] یه‌وه‌',
-'tog-editsectiononrightclick' => 'ده‌ستكاریی كردنی به‌ش چالاك بكه‌ به‌هۆی كرته‌ كردن له‌ ناونیشانی به‌شه‌كه‌ (سكریپتی جاڤا)',
-'tog-showtoc' => 'ناوه‌ڕۆك نیشان بده‌ (بۆ ئه‌و په‌ڕانه‌ی كه‌ زیاتر له‌ ٣ به‌شه‌وتار یان هه‌یه‌)',
-'tog-rememberpassword' => 'چوونەژوورەوەم بەبیربهێنەوە لەسەر ئەم کۆمپیوتەرە',
-'tog-editwidth' => 'سندوقی نووسینه‌كه‌ گه‌وره‌ترین درێژی هه‌یه‌',
-'tog-watchcreations' => 'ئه‌و په‌ڕانه‌ زیاد بكه‌ كه‌ من دروستم كردوون‌ له‌ لیسته‌ی ته‌ماشاكردندا',
-'tog-watchdefault' => 'ئه‌و په‌ڕانه‌ زیاد بكه‌ كه‌ من ده‌ستكارییم كردوون له‌ لیسته‌ی ته‌ماشاكردندا‌',
-'tog-watchmoves' => 'ئه‌و په‌ڕانه‌ زیاد بكه‌ كه‌ بردومنه‌ته‌ لیستی ته‌ماشاكردنه‌وه‌',
-'tog-watchdeletion' => 'ئه‌و په‌ڕانه‌ زیاد بكه‌ كه‌ من سڕیومنه‌ته‌وه‌ له‌ لیستی ته‌ماشاكردندا',
-'tog-minordefault' => 'هه‌موو ئه‌و ورده‌كارییانه‌ی ده‌ستكاریی ده‌كرێن وه‌كوو پێوانه‌یی نیشانیان بكه‌',
-'tog-previewontop' => 'پێش ده‌ستكاریی كردن ته‌ماشایه‌كی بكه‌',
-'tog-previewonfirst' => 'له‌گه‌ڵ یه‌كه‌م ده‌ستكارییدا پێشبینین بكه‌',
-'tog-nocache' => 'كاش كردن ناچالاك بكه‌',
-'tog-enotifwatchlistpages' => 'به‌ پۆستی ئه‌لیكترۆنی ئاگادارم بكه‌ره‌وه‌ گه‌ر ئه‌و په‌ڕه‌یه‌ی من چاوی لێده‌كه‌م گۆڕانكاریی به‌سه‌ردا هات',
-'tog-enotifusertalkpages' => 'پۆستی ئه‌لیكترۆنیم بۆ بنێره‌ گه‌ر په‌ڕه‌ی به‌كارهێنانی وتووێژ گۆڕانكاریی به‌سه‌ردا هات‌',
-'tog-enotifminoredits' => 'له‌ گۆڕانكارییه‌ ورده‌كانیش ئاگادارم بكه‌ره‌وه‌ له‌ ڕێگه‌ی پۆستی ئه‌لیكترۆنییه‌وه',
-'tog-shownumberswatching' => 'ژماره‌ی چاولێكه‌ران نیسان بده‌',
-'tog-fancysig' => 'ئیمزای خام (جگە لە بەستەری خۆکار بۆ پەڕەی بەکارھێنەر)',
-'tog-externaleditor' => 'ده‌س',
-'tog-showjumplinks' => 'ڕێگه‌پێدانی بازدان بۆ به‌سته‌ره‌كان چالاك بكه‌',
-'tog-watchlisthideown' => 'دەستکارییەکانم بشارەوە لە لیستی چاودێری',
-'tog-watchlisthidebots' => 'دەستکارییەکانی بۆت بشارەوە لە لیستی چاودێری',
-'tog-watchlisthideminor' => 'ورده‌ ده‌ستكارییه‌كان له‌ لیسته‌ی ته‌ماشاكردندا بشاره‌وه‌',
-'tog-watchlisthideliu' => 'دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری',
-'tog-watchlisthideanons' => 'دەستکارییەکانی بەکارهێنەرانی نەناسراو بشارەوە لە لیستی چاودێری',
-'tog-nolangconversion' => 'وتووێژی هه‌مه‌چه‌شن ناچالاك بكه‌',
-'tog-ccmeonemails' => 'له‌به‌رگیراوه‌م بۆ بنێره‌ له‌و پۆستی ئه‌لیكترۆنییانه‌ی كه‌ بۆ به‌كارهێنه‌رانی دیكه‌ ناردوومه‌',
-'tog-diffonly' => 'په‌ڕه‌یه‌ك ئه‌م جیاوازییانه‌ی خواره‌وه‌ی له‌خۆ گرتبێت نیشانی مه‌ده‌‌',
-'tog-showhiddencats' => 'هاوپۆلە شاردراوکان پیشان بدە',
-
-'underline-always' => 'هه‌میشه‌',
-'underline-never' => 'هیچ كات',
-'underline-default' => 'نمایشكه‌ری پێوانه‌یی',
-
# Dates
-'sunday' => 'یه‌كشه‌ممه‌',
-'monday' => 'دووشه‌ممه‌',
-'tuesday' => 'سێشه‌ممه‌',
-'wednesday' => 'چوارشه‌ممه‌',
-'thursday' => 'پێنجشه‌ممه‌',
-'friday' => 'هه‌ینی',
-'saturday' => 'شه‌ممه‌',
-'sun' => 'یەکشەممە',
-'mon' => 'دووشەممە',
-'tue' => 'سێشەممە',
-'wed' => 'چوارشەممە',
-'thu' => 'پێنجشەممە',
-'fri' => 'ھەینی',
-'sat' => 'شه‌ممه‌',
-'january' => 'کانوونی دووەم',
-'february' => 'شوبات',
-'march' => 'ئازار',
-'april' => 'ئاپریل',
-'may_long' => 'ئایار',
-'june' => 'حوزەیران',
-'july' => 'تەمموز',
-'august' => 'ئاب',
-'september' => 'ئەیلوول',
-'october' => 'تشرینی یەکەم',
-'november' => 'تشرینی دووەم',
-'december' => 'کانونی یەکەم',
-'january-gen' => 'كانونی دووه‌م',
-'february-gen' => 'شوبات',
-'march-gen' => 'مارت',
-'april-gen' => 'نیسان',
-'may-gen' => 'مایس',
-'june-gen' => 'حوزه‌یران',
-'july-gen' => 'ته‌مموز',
-'august-gen' => 'ئاب',
-'september-gen' => 'ئه‌لیلول',
-'october-gen' => 'تشرینی یه‌كه‌م',
-'november-gen' => 'تشرینی دووه‌م',
-'december-gen' => 'كانونی یه‌كه‌م',
-'jan' => 'كا١',
-'feb' => 'شوب',
-'mar' => 'مارت',
-'apr' => 'ئب',
-'may' => 'مای',
-'jun' => 'حزن',
-'jul' => 'ته‌م',
-'aug' => 'ئاب',
-'sep' => 'ئه‌ی',
-'oct' => 'ت١',
-'nov' => 'ت٢',
-'dec' => 'كا١',
+'january' => 'کانوونی دووەم',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|ھاوپۆل|ھاوپۆلەکان}}',
-'category_header' => 'پەڕە ھاوپۆلەکانی "$1"',
-'subcategories' => 'به‌شه‌هاوپۆله‌كان',
-'category-media-header' => 'میدیا له‌ هاوپۆلی "$1" دا',
-'category-empty' => "''ئه‌م هاوپۆله‌ هه‌نووكه‌ هیچ له‌خۆ ناگرێت - به‌تاڵه‌''",
-'hidden-category-category' => 'هاوپۆلە شاردراوەکان', # Name of the category where hidden categories will be listed
-
-'mainpagetext' => "<big>'''ویكیمیدیا به‌سه‌ركه‌وتووی دامه‌زرا.'''</big>",
-'mainpagedocfooter' => 'بكه‌ [http://meta.wikimedia.org/wiki/Help:ناوه‌ڕۆكی چۆنێتی به‌كارهێنان] بۆ وه‌ده‌ست هێنانی زانیاریی له‌سه‌ر چۆنێتی كارگێڕی نه‌رمه‌كاڵای ویكی، سه‌ردانی.
-
-== ده‌ست به‌ كاركردن ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings لیسته‌ی هه‌ڵبژاردنه‌كان و ڕێكخستنه‌كان]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لیستی وه‌شانه‌كانی ویكیمیدیا]',
+'hidden-category-category' => 'هاوپۆلە شاردراوەکان',
-'about' => 'سه‌باره‌ت',
-'article' => 'بابه‌ت',
-'newwindow' => '(لە پەڕەیەکی نوێ دەکرێتەوە)',
-'cancel' => 'ھەڵوەشاندنەوە',
-'qbfind' => 'دۆزه‌ر',
-'qbbrowse' => 'بگه‌ڕێ',
-'qbedit' => 'دەستكاری',
-'qbpageoptions' => 'ئه‌م په‌ڕه‌یه‌',
-'qbpageinfo' => 'زانیاریی په‌ڕه‌',
-'qbmyoptions' => 'په‌ڕه‌كانی من',
-'qbspecialpages' => 'په‌ڕه‌تایبه‌ته‌كان',
-'moredotdotdot' => 'زیاتر',
-'mypage' => 'په‌ڕه‌ی من',
-'mytalk' => 'په‌ڕه‌ی گفتوگۆی من',
-'anontalk' => 'گفتوگۆ بۆ ئه‌م ئای‌پی‌ یه‌',
-'navigation' => 'ڕێدۆزی',
-'and' => '&#32;و',
-
-# Metadata in edit box
-'metadata_help' => 'دراوه‌ی مێتا:',
-
-'errorpagetitle' => 'هه‌ڵه‌',
-'returnto' => 'بگه‌ڕێوه‌ بۆ $1.',
-'tagline' => 'له‌ {{SITENAME}}',
-'help' => 'ڕێنمایی',
-'search' => 'گەڕان',
-'searchbutton' => 'بگەڕێ',
-'go' => 'ده‌ی',
-'searcharticle' => 'بڕۆ',
-'history' => 'مێژووی په‌ڕه‌',
-'history_short' => 'مێژووی نووسین',
-'updatedmarker' => 'گۆڕانكارییه‌كان پاش دوا سه‌ردانی من',
-'info_short' => 'زانیاری',
-'printableversion' => 'وەشانی ئامادەی چاپ',
-'permalink' => 'بەسته‌ری ھەمیشەیی',
-'print' => 'چاپ',
-'edit' => 'دەستكاری',
-'create' => 'دروستکردن',
-'editthispage' => 'ده‌ستكاری ئه‌م په‌ڕه‌یه‌ بكه‌',
-'create-this-page' => 'ئەم پەڕە دروست بکە',
-'delete' => 'سڕینه‌وه‌',
-'deletethispage' => 'سڕینه‌وه‌ی ئه‌م په‌ڕه‌یه‌',
-'undelete_short' => 'به‌جێ بهێنه‌ {{PLURAL:$1|سڕاوه‌|$1 سڕاوه‌كان}}هێنانه‌وه‌ی',
-'protect' => 'پاراستن',
-'protect_change' => 'گۆڕین',
-'protectthispage' => 'ئه‌م په‌ڕه‌یه‌ بپارێزه‌',
-'unprotect' => 'مه‌پارێزه‌',
-'unprotectthispage' => 'ئه‌م په‌ڕه‌یه‌ مه‌پارێزه‌',
-'newpage' => 'په‌ڕه‌یه‌كی نوێ',
-'talkpage' => 'گفتوگۆ له‌سه‌ر ئه‌م په‌ڕه‌یه بكه‌',
-'talkpagelinktext' => 'لێدوان',
-'specialpage' => 'په‌ڕه‌ی تایبه‌ت',
-'personaltools' => 'ئامڕازە تاکەکەسییەکان',
-'postcomment' => 'بەشی نوێ',
-'articlepage' => 'ناوه‌ڕۆكی بابه‌ت ببینه‌',
-'talk' => 'گفتوگۆ',
-'views' => 'بینینەکان',
-'toolbox' => 'ئامرازدان',
-'userpage' => 'په‌ڕه‌ی به‌كارهێنه‌ر نیشانبده‌',
-'projectpage' => 'په‌ڕه‌ی پرۆژه‌ نیشانبده‌',
-'imagepage' => 'په‌ڕه‌ی وێنه‌ نیشانبده‌',
-'mediawikipage' => 'په‌ڕه‌ی په‌یام نیشانبده‌',
-'templatepage' => 'په‌ڕه‌ی قاڵب نیشانبده‌',
-'viewhelppage' => 'په‌ڕه‌ی یارمه‌تی نیشانبده‌',
-'categorypage' => 'په‌ڕه‌ی هاوپۆل نیشانبده‌',
-'viewtalkpage' => 'په‌ڕه‌ی گفتوگۆ ببینه‌',
-'otherlanguages' => 'به‌ زمانه‌كانی دیكه‌',
-'redirectedfrom' => '(ڕه‌وانه‌كراوه‌ له‌ $1)',
-'redirectpagesub' => 'په‌ڕه‌ ڕه‌وانه‌بكه‌',
-'lastmodifiedat' => 'ئه‌م په‌ڕه‌یه‌ دواجار نوێكراوه‌ته‌وه‌ له‌ $2, $1', # $1 date, $2 time
-'viewcount' => 'ئه‌م په‌ڕه‌یه‌ ده‌ستكاریی كراوه‌ {{PLURAL:$1|یه‌كجار|$1 جار}}',
-'protectedpage' => 'په‌ڕه‌یه‌كی پارێزراو',
-'jumpto' => 'باز بدە بۆ:',
-'jumptonavigation' => 'ڕێدۆزی',
-'jumptosearch' => 'گه‌ڕان',
+'talkpagelinktext' => 'لێدوان',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'دەربارەی {{SITENAME}}',
-'aboutpage' => 'Project:دەربارە',
-'copyright' => 'ناوەڕۆک ئامادەیە لە ژێر $1.',
-'copyrightpage' => '{{ns:project}}:مافەکانی لەبەرگرتنەوە',
-'currentevents' => 'ڕووداوە هەنووکەییەکان',
-'currentevents-url' => 'Project:ڕووداوە بەردەوامەکان',
-'disclaimers' => 'بەرپرس‌نەبوونییەکان',
-'edithelp' => 'ڕێنمایی بۆ دەستکاریکردن',
-'edithelppage' => 'Help:دەستکاریکردن',
-'faq' => 'پرسیار و وەڵام (FAQ)',
-'faqpage' => 'Project:پرسیار و وەڵام',
-'helppage' => 'Help:رێنمایییەکان',
-'mainpage' => 'دەستپێک',
-'mainpage-description' => 'ده‌ستپێک',
-'portal' => 'دەروازەی بەکارھێنەران',
-'portal-url' => 'Project: دەروازەی بەکارھێنەران',
-'privacy' => 'سیاسەتی پاراستنی داتاکان',
-'privacypage' => 'Project:پاراستنی زانیارییەکان',
-
-'badaccess' => 'ھەڵە لە بە دەست ھێنان',
-
-'versionrequired' => 'پێویستیت به‌ وه‌شانی $1 ـی‌ ویكیمیدیایه‌',
-'versionrequiredtext' => 'پێویستیت به‌ وه‌شانی $1 ـێ ویكیمیدیا هه‌یه‌ بۆ به‌كاربردنی ئه‌م په‌ڕه‌یه‌
-. ته‌ماشای [[Special:Version|وه‌شانی]] بكه‌.',
-
-'ok' => 'باشه‌',
-'retrievedfrom' => 'له‌ لایه‌ن "$1" گه‌ڕاوه‌ته‌وه‌.',
-'youhavenewmessages' => '$1ت ھەیە ($2).',
-'newmessageslink' => 'په‌یامێكی نوێ',
-'newmessagesdifflink' => 'دوا گۆڕانكارییه‌كان',
-'youhavenewmessagesmulti' => 'په‌یامێكی نوێت هه‌یه‌ له‌ $1.',
-'editsection' => 'ده‌ستكاری',
-'editold' => 'دەستکاری',
-'viewsourceold' => 'بینینی سەرچاوە',
-'editlink' => 'دەستکاری',
-'viewsourcelink' => 'بینینی سەرچاوە',
-'editsectionhint' => 'دەستكاری به‌شی: $1',
-'toc' => 'ناوەڕۆک',
-'showtoc' => 'نیشاندان',
-'hidetoc' => 'شاردنەوە',
-'thisisdeleted' => '؟$1 نیشانی بده‌ یا بیگه‌ڕێنه‌ره‌وه‌',
-'viewdeleted' => '$1 نیشان بده‌؟',
-'restorelink' => '{{PLURAL:$1|گۆڕانکاریی سڕاو|$1 یەک گۆڕانکاریی سڕاو}}',
-'site-rss-feed' => 'RSS FEED ـی $1',
-'site-atom-feed' => 'Atom Feed ـی $1',
-'page-rss-feed' => 'RSS Feed ـی "$1"',
-'page-atom-feed' => 'Atom Feed ـی "$1"',
-'red-link-title' => '$1 (پەڕە بوونی نییە)',
-
-# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'پەڕە',
-'nstab-user' => 'پەڕەی بەکارھێنەر',
-'nstab-media' => 'میدیا',
-'nstab-special' => 'په‌ڕه‌ی تایبه‌ت',
-'nstab-project' => 'په‌ڕه‌ی پرۆژه‌',
-'nstab-image' => 'وێنه‌',
-'nstab-mediawiki' => 'په‌یام',
-'nstab-template' => 'قاڵب',
-'nstab-help' => 'یارمه‌تی',
-'nstab-category' => 'هاوپۆل',
-
-# Main script and global functions
-'nosuchaction' => 'كرداری به‌م شێوه‌یه‌ نییه‌',
-'nosuchactiontext' => 'ئەو چالاکییەی لە لایەن بەستەرەوە دیاریکراوە ناتەواوە.
-لەوانەیە بە هەڵە بەستەرەکەت نووسیبێت، یان بەستەرێکی هەڵەی بە دواوە بێت.
-لەوانەیە ئەمە نیشانەی هەڵەیەک بێت لەو نەرمەکاڵایەی کە بەکاردێت لە لایەن {{SITENAME}}.',
-'nosuchspecialpage' => 'په‌ڕه‌ی تایبه‌تی له‌و شێوه‌یه‌ نییه‌',
-'nospecialpagetext' => "<big>''په‌ڕه‌یكی تایبه‌ت ده‌خوازیت كه‌ بوونی نییه‌'''</big>
-
-لیستی په‌ڕه‌ تایبه‌تییه‌كان له‌ [[Special:SpecialPages|لیسته‌ی په‌ڕه‌ تایبه‌ته‌كان]] ده‌توانرێت ببینرێت.",
-
-# General errors
-'error' => 'هه‌ڵه‌',
-'databaseerror' => 'هه‌ڵه‌ له‌ بنكه‌دراوه‌دا هه‌یه‌',
-'readonly' => 'بنکەدراوە داخراوە',
-'missing-article' => 'دانەگە (دەیتابەیس) نەیتوانی دەقی لاپەڕەیەک بدۆزێتەوە کە دەبوا بیدۆزایەتوە، بەناوی "$1" $2 .
-
-This is usually caused by following an outdated diff or history link to a page that has been deleted.
-
-ئەگەر وا نەبێت، ئەوا ڕەنگە گرفتێکت لەم نەرمامێرە دا ھەبێت، کە تۆ پێت زانیوە..
-تکایە ئەم بە یەکێک لە ئەندامانی [[Special:ListUsers/sysop|administrator]] ڕاپۆرت بدە، و ناونیشانی URLـەکەی پێ بدە.',
-'missingarticle-rev' => '(پیاچوونەوە#: $1)',
-'readonly_lag' => 'بنكه‌دراوه‌كه‌ به‌شێوه‌ی خۆكار به‌ندكراوه‌، له‌كاتێكدا بنكه‌دراوه‌ی ڕاژه‌كاره‌كه‌ ڕۆڵی له‌خۆگرتن ده‌گێڕێت',
-'internalerror' => 'هه‌ڵه‌یه‌كی ناوخۆیی ڕویدا',
-'internalerror_info' => 'هه‌ڵه‌ی ناوخۆیی: $1',
-'filecopyerror' => 'په‌ڕگه‌ی „$1“ ڕوونوس نابێت بۆ „$2“ .',
-'filerenameerror' => 'ناوی په‌ڕگه‌ی "$1" نه‌گۆڕدرا بۆ "$2".',
-'filedeleteerror' => 'بسڕدرێته‌وه‌"$1" نه‌توانرا په‌ڕگه‌ی',
-'directorycreateerror' => 'نەتوانرا بوخچەی "$1"دروست بکرێت.',
-'filenotfound' => 'په‌ڕگه‌ی "$1" نه‌دۆزرایه‌وه‌',
-'cannotdelete' => 'نەتوانرا پەڕە یان پەڕگەی دیاریکراو بسڕدرێتەوە.
-لەوانەیە پێشتر لە لایەن کەسێکی ترەوە سڕدرابێتەوە.',
-'badtitle' => 'ناونیشانێكی بێ كه‌ڵك',
-'viewsource' => 'سه‌رچاوه‌ ببینه‌',
-'viewsourcefor' => 'بۆ $1',
-
-# Login and logout pages
-'logouttitle' => 'دەرچوونی بەکارهێنەر',
-'welcomecreation' => '== خۆش هاتیت, $1! ==
-
-هه‌ژماری تایبه‌تی تۆ سه‌ركه‌وتووانه‌ دروست كرا، له‌بیرت نه‌چێت گۆڕانكاری له {{SITENAME}} تایبه‌ت به‌خۆت دا بكه‌.',
-'loginpagetitle' => 'ناوی چوونه‌ ژووره‌وه‌',
-'yourname' => 'ناوی به‌كارهێنه‌وه‌',
-'yourpassword' => 'تێپه‌ڕه‌وشه‌',
-'yourpasswordagain' => 'تێپه‌ڕه‌وشه‌ دووباره‌',
-'remembermypassword' => 'زانیاریی چوونه‌ ژووره‌وه‌م له‌سه‌ر ئه‌م كۆمپیوته‌ره‌ پاشه‌كه‌وت بكه‌',
-'yourdomainname' => 'ناوی دۆمه‌ینی خۆت',
-'login' => 'تێکەوە (login)',
-'nav-login-createaccount' => 'چوونەژوورەوە / دروستکردنی هەژمار',
-'userlogin' => 'دروست کردنی ھەژمار/چوونە ژورەوە',
-'logout' => 'ده‌رچوون',
-'userlogout' => 'دەرچوون',
-'notloggedin' => 'له‌ ژووره‌وه‌ نیت',
-'nologin' => 'ھەژمارت نییە؟ $1.',
-'nologinlink' => 'ببه‌ به‌ ئه‌ندام',
-'createaccount' => 'ھەژمار دروست بکە',
-'gotaccount' => 'خاوه‌نی هه‌ژماری خۆتی؟ $1.',
-'gotaccountlink' => 'چوونه‌ ژووره‌وه‌',
-'createaccountmail' => 'به‌ پۆستی ئه‌لیكترۆنی',
-'badretype' => 'وشه‌ نهێنییه‌كان له‌یه‌ك ناچن',
-'userexists' => 'ئەو ناوەی تۆ داوتە پێشتر کەسێکی دیکە بەکاری بردووە.
-ناوێکی دیکە ھەڵبژێرە.',
-'youremail' => 'E-mail:',
-'username' => 'ناوی به‌كارهێنه‌ر:',
-'uid' => 'ژماره‌ی خۆت ID:',
-'prefs-memberingroups' => 'ئەندامی {{PLURAL:$1|گرووپی|گرووپەکانی}}:',
-'yourrealname' => 'ناوی ڕاستی:',
-'yourlanguage' => 'زمان',
-'yourvariant' => 'زاراوە:',
-'yournick' => 'نازناو',
-'badsig' => 'ئیمزاكه‌ هه‌ڵه‌یه‌، ته‌ماشای كۆدی HTML بكه‌‌',
-'yourgender' => 'جنس:',
-'gender-unknown' => 'ئاشکرا نەکراو',
-'gender-male' => 'پیاو',
-'gender-female' => 'ژن',
-'email' => 'E-mail',
-'prefs-help-realname' => 'ناوی ڕاستی دڵخوازە.
-ئەگەر پێت خۆش بێت بیدەی، زۆرتر ڕاتدەکێشێت بۆ کارەکانت.',
-'loginerror' => 'ھەڵە لە چوونە ژوورەوەدا',
-'prefs-help-email' => 'ئەدرەسی e-mail دڵخوازە.
-‏بەڵام ئەگەر تێپەڕوشەکەت لە بیر چوو، لە ڕێگەی e-mailەوە تێپەڕوشەیەکی نوێت بۆ دەنێردرێتەوە. ھەروەھا بە بەکارھێنەرانی دیکەش لە رێگەی e-mailەوە دەتوانن پەیوەندیت لەگەڵ گرن ئەگەر تۆ حەز بکەیت.',
-'loginsuccesstitle' => 'سرەکەوتی بۆ چوونە ژوورەوە!',
-'wrongpassword' => 'تێپەڕوشەی ھەڵە.
-تکایە دووبارە تێبکۆشە.',
-'wrongpasswordempty' => 'تێپەڕەوشەی لێدراو بەتاڵبوو.
-تکایە هەوڵ بدەوە.',
-'mailmypassword' => 'تێپەڕوشەیەکی نوێ بنێرە بۆ E-mailەکەم',
-'passwordremindertitle' => 'تێپەڕوشەیەکی نوێی کاتی بۆ {{SITENAME}}',
-'noemail' => 'ھیچ ئەدرەسێکی e-mail تۆمار نەکراوە بۆ بەکارھێنەر "$1" .',
-'mailerror' => 'هەڵە ڕوویدا لە ناردنی ئیمەیل: $1',
-'emailauthenticated' => 'ئیمەیلەکەت بە ڕاست ناسرا لە $3ی $2 دا',
-'emailnotauthenticated' => 'ئیمەیلەکەت ھێشتا نەناسراوە.
-ھیچ ئیمەیلێک بۆ ئەم بابەتانەی خوارەوە نانێردرێت.',
-'emailconfirmlink' => 'پۆستی ئه‌لیكترۆنی خۆت بنووسه‌',
-'accountcreated' => 'هه‌ژماره‌كه‌ سه‌ركه‌وتووانه‌ دروست كرا',
-'loginlanguagelabel' => 'زمان: $1',
-
-# Password reset dialog
-'resetpass' => 'گۆڕینی تێپەڕوشە',
-'resetpass_text' => '<!-- تێپه‌ڕه‌وشه‌ی هه‌ژماره‌كه‌ سفر بكه‌ره‌وه‌ -->',
-'resetpass_header' => 'تێپەڕوشەی ھەژمار بەتاڵ بکە',
-'oldpassword' => 'تێپەڕوشەی پێشو:',
-'newpassword' => 'تێپەڕوشەی نوێ:',
-'retypenew' => 'تێپەڕوشەی نوێ دوبارە بنووسەوە:',
-'resetpass_submit' => 'تێپەڕوشە رێکخە و بچۆ ژوورەوە',
-'resetpass_success' => 'تێپەروشەکەت بە سەرکەوتوویی گۆڕدرا. ئێستا چوونە ژوورەوەت...',
-'resetpass_bad_temporary' => 'تێپەڕوشەی کاتی ھەڵەیە.
-وا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.',
-'resetpass_forbidden' => 'تێپەڕوشەکە ناگۆڕدرێت',
-'resetpass-no-info' => 'بۆ گەیشتنی راستەوخۆ بەم پەڕە ئەشێ بچیتە ژوورەوە.',
-'resetpass-submit-loggedin' => 'گۆڕینی تێپەڕوشە',
-'resetpass-wrong-oldpass' => 'تێپەڕوشەی ھەنووکەیی یان تێپەڕوشەی کاتی ھەڵەیە.
-وا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.',
-'resetpass-temp-password' => 'تێپەڕوشەی کاتی:',
-
-# Edit page toolbar
-'bold_sample' => 'ده‌قی ئه‌ستوور',
-'bold_tip' => 'ده‌قی ئه‌ستوور',
-'italic_sample' => 'دەقی لار',
-'italic_tip' => 'دەقی لار',
-'link_sample' => 'نێوی بەستەر',
-'link_tip' => 'به‌سته‌رێكی ناوخۆیی',
-'extlink_sample' => 'http://www.example.com سەردێڕی بەستەر',
-'extlink_tip' => 'به‌سته‌ری ده‌ره‌كی ( ده‌ست پێ ده‌كاتhttp:// سه‌ره‌تاكه‌ی به‌ )',
-'headline_sample' => 'دەقی سەردێڕ',
-'headline_tip' => 'سەردێڕی ئاست ۲',
-'math_sample' => 'لەگرە فۆرموول بخەسەر',
-'math_tip' => ' فۆرموولی بیرکاریی (LaTeX)',
-'nowiki_sample' => 'لەگەرە دەقی نەڕازراو تێ‌بخە',
-'nowiki_tip' => 'لەبەرچاو نەگرتنی دارشتنەکانی ویکی',
-'image_sample' => 'نموونە.jpg',
-'image_tip' => 'وێنەی نێو دەق',
-'media_sample' => 'نموونە.ogg',
-'media_tip' => 'لینکی پەڕگە',
-'sig_tip' => 'ئیمزاکەت بە مۆری ڕێکەوتەوە',
-'hr_tip' => 'هێڵی ئاسۆیی (ده‌گمه‌ن به‌كاری بهێنه‌)',
-
-# Edit pages
-'summary' => 'پوختە:',
-'subject' => 'بابه‌ت / سه‌روتار:',
-'minoredit' => 'ئەم گۆڕانکاری‌یە بچووکە',
-'watchthis' => 'چاودێڕی ئه‌م په‌ڕه‌یه‌ بكه‌',
-'savearticle' => 'پاشەکەوتکردنی پەرە',
-'preview' => 'پێشبینین',
-'showpreview' => 'پێشبینینی پەڕە',
-'showlivepreview' => 'پێشبینینی ڕاسته‌وخۆ',
-'showdiff' => 'گۆڕانكارییه‌كان نیشانبده‌',
-'anoneditwarning' => "'''وشیار بە:''' نەچوویتەتە ژوورەوە.
-ئەدرەسی ئەکەت لە مێژووی ئەم پەڕە دا تۆمار دەکرێ.",
-'missingsummary' => "'''وە بیر خستنەوە:''' پوختەیەکت نەنووسیوە بۆ چۆنیەتی گۆڕانکارییەکەت.
-ئەگەر جارێکی تر پاشکەوت کردن لێبدەی، بێ پوختە تۆمار دەکرێ.",
-'missingcommenttext' => 'تکایە لە خوارەوە شرۆڤەیەک بنووسە.',
-'summary-preview' => 'پێشبینینی کورتە:',
-'newarticle' => '(نوێ)',
-'newarticletext' => "بە دوای بەستەری پەڕەیەک کەوتووی کە ھێشتا دروست نەکراوە. <br /> بۆ دروست کردنی پەڕەکە، لە چوارچێوەکەی خوارەوە دەست کە بە تایپ کردن. (بۆ زانیاری زورتر[[یارمەتی|{{MediaWiki:Helppage}}]] ببینە). <br /> ئەگەر بە ھەڵەوە ھاتویتە ئەگرە، لە سەر دوگمەی '''back'''ی وێبگەڕەکەت کلیک کە.",
-'previewnote' => "'''لە بیرت بێت کە ئەمە تەنها پێشبینینە.
-گۆڕانکارییەکانت تا ئێستا پاشەکەوت نەکراون!'''",
-'editing' => 'دەستکاریکردنی $1',
-'editingsection' => 'گۆڕاندنی: $1 (بەش)',
-'editingcomment' => 'گۆڕاندنی $1 (بەشی نوێ)',
-'copyrightwarning' => "تکایە ئاگادار بن کە ھەموو بەشدارییەک بۆ {{SITENAME}} وا فەرز ئەکرێت کە لە ژێر «$2» بڵاو دەبێتەوە (بۆ ئاگاداری زۆرتر $1 سەیر کە). ئەگەر ناتەوێ نوسراوەکەت بێ‌ڕەحمانە دەستکاری بکرێت و بە دڵخواز دیسان بڵاو ببێتەوە، لەگرە پێشکەشی مەکە. ھەروەھا بەڵین ئەدەی کە خۆت ئەمەت نووسیوە، یان لە سەرچاوەیەکی بە دەسەڵاتی گشتی ''(public domain)'' یان سەرچاوەیەکی ھاوتا لەبەرت‌گرتوەتەو.
-'''«بەرھەمێک کە مافی لەبەرگرتنەوەی پارێزراوە، بێ ئیجازە بڵاو مەکەرەوە.»'''",
-'templatesused' => 'ئەو قاڵبانە کە لەم پەڕەیەدا بە کارھێنراون:',
-'templatesusedpreview' => 'ئەو قاڵبانە کە لەم پێشبینینەدا بە کارھێنراون:',
-'templatesusedsection' => 'ئەو قاڵبانە کە لەم بەشەدا بە کارھێنراون:',
-'template-protected' => '(پارێزراو)',
-'template-semiprotected' => '(نیوەپارێزراو)',
-'permissionserrorstext-withaction' => 'دەسەڵاتت نییە بۆ $2 لەبەر ئەم {{PLURAL:$1|هۆکارە|هۆکارانە}}ی خوارەوە:',
-'deleted-notice' => 'ئەم پەڕەیە سڕدراوەتەوە.
-لۆگی سڕینەوە بۆ پەڕەکە لە خوارەوە دابینکراوە.',
-
-# History pages
-'viewpagelogs' => 'لۆگەکانی ئەم پەڕەیە ببینە',
-'revisionasof' => 'وەک بینینەوەی $1',
-'previousrevision' => '←پیاچوونەوەی کۆنتر',
-'nextrevision' => 'پیاچوونەوەی نوێتر→',
-'currentrevisionlink' => 'پیاچوونەوەی ئێستا',
-'cur' => 'ئێستا',
-'last' => 'پێشوو',
-'histlegend' => 'وەشانەکان بۆ ھەڵسەنگاندن دیاری بکە و ئەم دوگمەی خوارەوە لێبدە. <br />
-ڕێنمایی:
-(ئێستا) = جیاوازی لەگەڵ وەشانی ئێستا،
-(پێشوو) =جیاوازی لەگەڵ وەشانی پێشوو،
-ب = گۆڕانکاریی بچووک',
-'history-fieldset-title' => 'گەشتی مێژوو',
-'deletedrev' => '[سڕاو]',
-'histfirst' => 'کۆنترین',
-'histlast' => 'نوێترین',
-'historysize' => '({{PLURAL:$1|1 بایت|$1 بایت}})',
-'historyempty' => '(پووچ)',
-
-# Revision feed
-'history-feed-title' => 'مێژووی پیاچوونەوە',
-'history-feed-description' => 'مێژووی پیاچوونەوە بۆ ئەم پەڕە لە ویکییەکە',
-'history-feed-item-nocomment' => '$1 لە $2', # user at time
-
-# Revision deletion
-'rev-delundel' => 'پیشاندان/شاردنەوە',
-'revdel-restore' => 'چۆنیەتی دەرکەوتن بگۆڕە',
-
-# Merge log
-'revertmerge' => 'لەیەک جیاکردنەوە',
-
-# Diffs
-'history-title' => 'مێژووی پیاچوونەوەکانی "$1"',
-'difference' => '(جیاوازی نێوان پیاچوونەوەکان)',
-'lineno' => 'ھێڵی $1:',
-'compareselectedversions' => 'ھەڵسەنگاندنی وەشانە ھەڵبژاردراوەکان',
-'editundo' => 'پاشگەزبوونەوە',
-
-# Search results
-'searchresults' => 'ئەنجامەکانی گەڕان',
-'searchresults-title' => 'ئەنجامەکانی گەڕان بۆ "$1"',
-'searchresulttext' => 'بۆ زانیاری زیاتر دەربارەی گەڕان {{SITENAME}} ، بڕوانە لە [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'گەڕایت بۆ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|هەموو ئەو پەڕانەی دەستپێدەکەن بە "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|هەموو ئەو پەڕانەی بەستەرکراون بۆ "$1"]])',
-'searchsubtitleinvalid' => "گەڕایت بۆ '''$1'''",
-'noexactmatch' => "'''پەڕەیەک بە ناوی \"\$1\"ەوە نیە.'''
-دەتوانی ئەم پەڕە [[:\$1|دروست بکەیت]].",
-'noexactmatch-nocreate' => "'''هیچ پەڕەیەک نییە بە ناونیشانی \"\$1\".'''",
-'notitlematches' => 'لە نێو سەردێڕەکان نەبینرا',
-'notextmatches' => 'لە دەقی نووسراوەکان دا نەبینرا',
-'prevn' => '$1ی پێشوو',
-'nextn' => '$1ی دواتر',
-'viewprevnext' => '($1) ($2) ($3) ببینە',
-'search-result-size' => '$1 ({{PLURAL:$2|1 وشە|$2 وشە}})',
-'search-redirect' => '(ئاڵوگۆڕ $1)',
-'search-section' => '(بەشی $1)',
-'search-suggest' => 'ئایا مەبەستت ئەمە بوو: $1',
-'search-interwiki-caption' => 'پرۆژە خوشکەکان',
-'search-interwiki-default' => '$1 ئەنجام:',
-'search-interwiki-more' => '(زیاتر)',
-'search-mwsuggest-enabled' => 'بە پێشنیارەکانەوە',
-'search-mwsuggest-disabled' => 'بێ پێشنیار',
-'showingresults' => "لە خوارەوە {{PLURAL:$1|'''1''' ئەنجام|'''$1''' ئەنجام}} ئەبینن کە بە #'''$2'''ەوە دەست پێ‌ئەکات .",
-'showingresultsnum' => "لە خوارەوە {{PLURAL:$1|'''1''' ئەنجام|'''$1''' ئەنجام}} ئەبینن کە بە #'''$2'''ەوە دەست پێ‌ئەکات .",
-'showingresultstotal' => "نیشاندان لە خوارەوە{{PLURAL:$4|result '''$1''' of '''$3'''|ئاکامەکان '''$1 - $2''' of '''$3'''}}",
-'powersearch' => 'بە ھێز بگەڕە',
-'powersearch-legend' => 'گەڕانی پێشکەوتوو',
-'powersearch-ns' => 'لە namespace بگەڕە:',
-'powersearch-redir' => 'گواستنەوەکانی لیست',
-'powersearch-field' => 'گەڕان بۆ',
-
-# Preferences page
-'preferences' => 'ھەڵبژاردەکان',
-'mypreferences' => 'ھەڵبژاردەکانی من',
-'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
-'changepassword' => 'تێپەڕوشە بگۆڕە',
-'skin' => 'پێستە',
-'skin-preview' => 'پێش بینین',
-'math' => 'بیرکاری',
-'dateformat' => 'ڕازاندەوەی ڕێکەوت',
-'datedefault' => 'ھەڵنەبژێردراو',
-'datetime' => 'کات و ڕێکەوت',
-'prefs-personal' => 'پرۆفایلی بەکارھێنەر',
-'prefs-rc' => 'دوایین گۆڕانکارییەکان',
-'prefs-watchlist' => 'لیستی چاودێڕییەکان',
-'prefs-watchlist-days' => 'ژمارە ڕۆژە نیشاندراوەکان لە لیستی چاودێڕییەکان:',
-'prefs-watchlist-days-max' => '(ئه‌وپه‌ڕی 7 ڕۆژە)',
-'prefs-misc' => 'جۆراوجۆر',
-'prefs-resetpass' => 'تێپەڕوشە بگۆڕە',
-'saveprefs' => 'پاشکەوت',
-'resetprefs' => 'گۆڕانکارییە پاشکەوت نەکراوەکان پاک بکەرەوە',
-'restoreprefs' => 'ھەموو تەنزیمەکان ببەرەوە بۆ حاڵەتی بنچینەیی',
-'textboxsize' => 'دەستکاری کردن',
-'prefs-edit-boxsize' => 'قەبارەی پەنجەرەی گۆڕانکاری.',
-'rows' => 'ڕێز:',
-'columns' => 'ستوون:',
-'searchresultshead' => 'گەڕان',
-'timezonelegend' => 'کاتی ھەرێمی',
-'timezonetext' => '¹ ژمارە ئەو کاتژمێرانە کە کاتی ھەرێمیت لەگەڵ کاتی server (UTC)، ئیختیلافی ھەیە.',
-'localtime' => 'کاتی ناوچەیی:',
-'timezoneoffset' => 'جیاوازی¹:',
-'servertime' => 'کاتی server:',
-'guesstimezone' => 'لە وێبگەڕەکە browser بیگرە',
-'allowemail' => 'لە بەکارھێنەرانی دیکەوە e-mail قەبووڵ دەکەم',
-'prefs-searchoptions' => 'ھەڵبژاردەکانی گەڕان',
-'prefs-namespaces' => 'بۆشایییەکانی ناو',
-'defaultns' => 'لە حاڵەتی بنەڕەت لەم بۆشایی ناوانەدا بگەڕە:',
-'default' => 'بنچینەیی',
-'files' => 'پەڕگەکان',
-'prefs-custom-css' => 'CSSی دڵخواز',
-'prefs-custom-js' => 'JSی دڵخواز',
-
-# Groups
-'group-sysop' => 'بەڕێوبەران',
-'group-bureaucrat' => 'بورووکراتەکان',
-
-'group-user-member' => 'بەکارھێنەر',
-
-'grouppage-user' => '{{ns:project}}:بەکارھێنەران',
-'grouppage-sysop' => '{{ns:project}}:بەڕێوبەران',
-
-# User rights log
-'rightslog' => 'لۆگی مافەکانی بەکارهێنەر',
-
-# Associated actions - in the sentence "You do not have permission to X"
-'action-edit' => 'دەستکاری ئەم پەڕەیە بکە',
-'action-move' => 'گواستنەوەی ئەم پەڕە',
-
-# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|گۆڕانکاری|گۆڕانکاری}}',
-'recentchanges' => 'دوایین گۆڕانکارییەکان',
-'recentchanges-legend' => 'هەڵبژاردنەکانی دوا گۆڕانکارییەکان',
-'rcnote' => "لە خوارەوەدا {{PLURAL:$1|'''۱''' گۆڕانکاری |دوایین '''$1''' گۆڕانکارییەکان}} لە دوایین {{PLURAL:$2|ڕۆژ|'''$2''' ڕۆژەوە}} ، تا $5، $4 دەبینن.",
-'rclistfrom' => 'گۆڕانکارییە نوێکان کە لە $1ەوە دەست پێدەکەن نیشان بدە.',
-'rcshowhideminor' => '$1 دەستکارییە بچووکەکان',
-'rcshowhidebots' => 'ڕۆبۆتەکان $1',
-'rcshowhideliu' => 'بەکارھێنەرە لە ژوورەکان $1',
-'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
-'rcshowhidepatr' => 'گۆرانکارییە کۆنترۆڵکراوەکان $1',
-'rcshowhidemine' => '$1 دەستکارییەکانم',
-'rclinks' => 'دوایین $1 گۆڕانکارییەکانی دوایین $2 ڕۆژی <br />$3',
-'diff' => 'جیاوازی',
-'hist' => 'مێژوو',
-'hide' => 'بشارەوە',
-'show' => 'نیشان بدە',
-'minoreditletter' => 'ب',
-'newpageletter' => 'ن',
-'boteditletter' => 'ڕ',
-'rc-enhanced-expand' => 'وردەکارییەکان پیشان بدە (پێویستی بە جاڤاسکریپتە)',
-'rc-enhanced-hide' => 'وردەکارییەکان بشارەوە',
-
-# Recent changes linked
-'recentchangeslinked' => 'گۆڕانکارییە پەیوەندی‌دارەکان',
-'recentchangeslinked-title' => 'گۆڕانکارییە پەیوەندیدارەکان بە "$1" ـەوە',
-'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide.
-ئەو پەڕانە کە لە [[Special:Watchlist|لیستی چاودێڕییەکانت]]دان '''ئەستوورن'''",
-'recentchangeslinked-page' => 'ناوی پەڕە:',
-
-# Upload
-'upload' => 'پەڕگەیەک بار بکە',
-'uploadbtn' => 'پەڕگە بار بکە',
-'reupload' => 'دیسان بار بکە',
-'uploadtext' => "فۆرمی خوارەوە بەکاربێنن بۆ بارکردنی پەڕگە.
-بۆ بینینی ئەو پەڕگانە کە پێشتر بار کراون بڕۆ بۆ [[Special:FileList|لیستی پەڕگە بارکراوەکان]]، ھەروەھا
-[[Special:Log/upload|ڕەشنووسی بارکردنەکان]] و [[Special:Log/delete|رەشنووسی سڕینەوەکان]].
-
-بۆ بەکارھێنانی پەڕگەیەک لە پەڕەیەک دا، بەستەرێک بە یەکێک لەم شۆوازانەی خوارەوە بە کار بێنن:
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>'''
-to use the full version of the file
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>'''
-to use a 200 pixel wide rendition in a box in the left margin with 'alt text' as description
-* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''
-for directly linking to the file without displaying the file",
-'upload-permitted' => 'نەوعە پەڕگە قەبووڵ کراوەکان: $1.',
-'uploadlogpage' => 'لۆگ باربکە',
-'filename' => 'ناوی پەڕگە',
-'filedesc' => 'پوختە',
-'fileuploadsummary' => 'پوختە:',
-'filereuploadsummary' => 'گۆرانکارییەکانی پەڕگە:',
-'filestatus' => 'بارودۆخی مافی لەبەرگرتنەوە:',
-'filesource' => 'سەرچاوە:',
-'ignorewarnings' => 'گوێ مەدە بە ئاگادارییەکان',
-'uploadwarning' => 'ئاگادارییەکانی بارکردن',
-'savefile' => 'پەڕگە پاشەکەوت بکە',
-'uploadedimage' => '"[[$1]]" بار کراو',
-'overwroteimage' => 'وەشانێ نوێی "[[$1]]" بار کرا',
-'uploaddisabled' => 'بارکردن قەدەخە کراوە',
-'sourcefilename' => 'ناوی پەڕگەی سەرچاوە:',
-'destfilename' => 'ناوی مەبەست:',
-'upload-maxfilesize' => 'ئەو پەری قەبارەی فایل: $1',
-'watchthisupload' => 'چاودێڕی ئەم پەڕە بکە',
-
-# Special:ListFiles
-'imgfile' => 'پەڕگە',
-'listfiles' => 'لیستی پەرگەکان',
-'listfiles_date' => 'ڕێکەوت',
-'listfiles_name' => 'ناو',
-'listfiles_user' => 'بەکارھێنەر',
-
-# File description page
-'filehist' => 'مێژووی پەڕگە',
-'filehist-current' => 'هەنووکە',
-'filehist-datetime' => 'ڕێکەوت/کات',
-'filehist-user' => 'بەکارهێنەر',
-'filehist-dimensions' => 'دوورییەکان',
-'filehist-comment' => 'لێدوان',
-'imagelinks' => 'بەستەرەکانی پەڕگە',
-'shareduploadwiki-linktext' => 'پەڕەی پەسنی پەڕگە',
-'uploadnewversion-linktext' => 'وەشانێکی نوێی ئەم پەڕەیە بار بکە',
-
-# Unused templates
-'unusedtemplates' => 'قاڵبە بە کار نەھێراوەکان',
-
-# Random page
-'randompage' => 'پەڕەیەک بە ھەرەمەکی',
-
-# Statistics
-'statistics' => 'ئامارەکان',
-'statistics-header-pages' => 'ئامارەکانی پەڕەکان',
-'statistics-header-edits' => 'ئامارەکانی گۆڕانکارییەکان',
-'statistics-header-views' => 'ئامارەکانی سەردانەکان',
-'statistics-header-users' => 'ئامارەکانی بەکارھێنەران',
-'statistics-articles' => 'پەڕە بە ناوەڕۆکەکان',
-'statistics-pages' => 'پەڕەکان',
-
-'disambiguations' => 'پەڕەکانی جوداکردنەوە (لێڵی لابەر)',
-
-'withoutinterwiki' => 'پەڕەکان کە بەستەرەکانی زمانیان نییە',
-
-# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|بایت|بایت}}',
-'ncategories' => '$1 {{PLURAL:$1|ھاوپۆل|ھاوپۆل}}',
-'nlinks' => '$1 {{PLURAL:$1|بەستەر|بەستەر}}',
-'nmembers' => '$1 {{PLURAL:$1|ئەندام|ئەندام}}',
-'nrevisions' => '$1 {{PLURAL:$1|پیاچوونەوە|پیاچوونەوە}}',
-'nviews' => '$1 جار {{PLURAL:$1|بینراو|بینراو}}',
-'uncategorizedpages' => 'پەڕە بێ ھاوپۆلەکان',
-'uncategorizedcategories' => 'ھاوپۆلە ھاوپۆلدارنەکراوەکان',
-'uncategorizedimages' => 'پەڕگە بێ ھاوپۆلەکان',
-'uncategorizedtemplates' => 'قاڵبە بێ ھاوپۆلەکان',
-'unusedcategories' => 'ھاوپۆلە بەکارنەھێنراوەکان',
-'unusedimages' => 'پەڕگە بەکارنەھێنراوەکان',
-'popularpages' => 'پەڕە مەحبووبەکان',
-'wantedcategories' => 'ھاوپۆلە داواکراوەکان',
-'wantedpages' => 'پەڕە داواکراوەکان',
-'wantedfiles' => 'پەڕگە داواکراوەکان',
-'wantedtemplates' => 'قاڵبە داواکراوەکان',
-'mostcategories' => 'پەڕەکان بە زۆرترین ھاوپۆلەوە',
-'prefixindex' => 'هەموو پەڕەکان بە prefix ـەوە',
-'shortpages' => 'پەڕە کورتەکان',
-'longpages' => 'پەڕە دڕێژەکان',
-'newpages' => 'پەڕە نوێکان',
-'ancientpages' => 'کۆنترین پەڕەکان',
-'move' => 'ناوی ئەم پەڕە بگۆڕە',
-'movethispage' => 'ئەم پەڕەیە بگوازەوە',
-'pager-newer-n' => '{{PLURAL:$1|نوێتر 1|نوێتر $1}}',
-'pager-older-n' => '{{PLURAL:$1|کۆنتر 1|کۆنتر $1}}',
-
-# Book sources
-'booksources' => 'سەرچاوەکانی کتێب',
-'booksources-search-legend' => 'بۆ سەرچاوەی کتێب بگەڕێ',
-'booksources-go' => 'بڕۆ',
-
-# Special:Log
-'log' => 'لۆگەکان',
-
-# Special:AllPages
-'allpages' => 'ھەموو پەڕەکان',
-'alphaindexline' => '$1 تا $2',
-'nextpage' => 'پەڕەی پاشەوە ($1)',
-'prevpage' => 'پەڕەی پێشەوە ($1)',
-'allpagesfrom' => 'بینینی پەڕەکان بە دەست پێ کردن لە:',
-'allarticles' => 'ھەمووی وتارەکان',
-'allpagesprev' => 'پێش',
-'allpagesnext' => 'پاش',
-'allpagessubmit' => 'بڕۆ',
-
-# Special:Categories
-'categories' => 'هاوپۆله‌كان',
-
-# Special:DeletedContributions
-'deletedcontributions' => 'بەشدارییە بەکارھێنەریە سڕاوەکان',
-
-# Special:LinkSearch
-'linksearch' => 'بەستەرە دەرەکییەکان',
-
-# Special:Log/newusers
-'newuserlogpage' => 'لۆگی دروست کردنی بەکارھێنەر',
-'newuserlog-create-entry' => 'بەکارھێنەری نوێ',
-
-# Special:ListGroupRights
-'listgrouprights' => 'مافەکانی گرووپە بەکارھێنەرییەکان',
-'listgrouprights-members' => '(لیستی ئەندامەکان)',
-
-# E-mail user
-'emailuser' => 'بۆ ئەم بەکارھێنەرە E-Mail بنێرە',
-'emailpage' => 'ئیمەیل بۆ بەکارھێنەر',
-'defemailsubject' => 'ئیمەیلی {{SITENAME}}',
-'emailfrom' => 'لە:',
-'emailto' => 'بۆ:',
-'emailsubject' => 'بابەت:',
-'emailmessage' => 'نامە:',
-'emailsend' => 'بینێرە',
-'emailccme' => 'کۆپییەک لە نامەکە بنێرە بۆ ئیمەیلەکەم.',
-'emailccsubject' => 'کۆپیی نامەکەت بۆ $1: $2',
-'emailsent' => 'نامەکەت ناردرا',
-'emailsenttext' => 'نامەکەت ناردرا',
-'emailuserfooter' => 'ئەم ئیمەیلە لە $1ەوە ناردرا بۆ $2 بە "Email user" لە {{SITENAME}}ەوە.',
-
-# Watchlist
-'watchlist' => 'لیستی چاودێڕییەکانی من',
-'mywatchlist' => 'لیستی چاودێڕی‌یەکانم',
-'watchlistfor' => "(بۆ '''$1''')",
-'nowatchlist' => 'لە لیستی چاودێڕییەکانتدا ھیچ نیە.',
-'watchnologin' => 'لە ژوورەوە نیت.',
-'addedwatch' => 'بە لیستی چاودێڕییەکانت زێدە کرا',
-'removedwatch' => 'لە لیستی چاودێڕییەکانت لابرا',
-'watch' => 'چاودێڕی بکە',
-'watchthispage' => 'چاودێڕیی ئەم پەڕە بکە',
-'unwatch' => 'لابردنی چاودێڕی',
-'unwatchthispage' => 'ئیتر چاودێڕی مەکە',
-'notanarticle' => 'پەڕەی بێ ناوەڕۆک',
-'notvisiblerev' => 'پیاچوونەوە سڕاوەتەوە',
-'watchnochange' => 'لە کاتی دیاری کراو دا، بابەتە چاودێڕی کراوەکانت، دەستکاری نەکراون',
-'watchlist-details' => '* {{PLURAL:$1|پەڕە tê|$1 پەڕە}} لە چاودێڕیەکانت، پەڕەی وتووێژەکان حسێب ناکەن',
-'wlheader-enotif' => '* ئەکرێ بە E-mail ئاگاداری بدەی',
-'wlheader-showupdated' => "* ‏ئەو پەڕانە کە لە پاش دواین سەردانت دەستکاری کراون بە '''ئەستوور''' نیشان دراون",
-'watchlistcontains' => 'لیستی چاودێڕییەکانت $1 {{PLURAL:$1|پەڕە|پەڕە}}ی تێدایە.',
-'iteminvalidname' => "ھەڵە لەگەڵ بابەتی '$1'، ناوی نادروست...",
-'wlnote' => "خوارەوە {{PLURAL:$1|دوایین گۆڕانکاریە|دوایین '''$1''' گۆڕانکارییەکانن}} لە دواین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}} دا.",
-'wlshowlast' => 'نیشان دانی دوایین $1 کاتژمێری، $2 ڕۆژ لە $3',
-'watchlist-options' => 'ھەڵبژاردەکانی لیستی چاودێڕییەکان',
-
-# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'چاودێڕی...',
-'unwatching' => 'لابردنی چاودێڕی...',
-
-'enotif_reset' => 'ھەمووی پەڕەکان وەک بینراو دیاری بکە',
-
-# Delete
-'deletepage' => 'پەڕە بسڕەوەو',
-'confirm' => 'پشتدار بکەرەوە',
-'excontent' => "ناوەڕۆک ئەمە بو: '$1'",
-'excontentauthor' => "ناوەڕۆک ئەمە بو: '$1'(و تەنھا بەشداریکەر '[[Special:Contributions/$2|$2]]' بوو)",
-'exbeforeblank' => "ناوەڕۆک بەر لە بەتاڵ کردنەوە ئەمە بوو: '$1'",
-'exblank' => 'پەڕە خاڵی بوو',
-'delete-confirm' => 'سڕینەوەی "$1"',
-'delete-legend' => 'سڕینەوە',
-'historywarning' => 'ئاگاداری: ئەم پەڕە کە ئەتەوێ بیسڕیتەوە مێژووی ھەیە',
-'actioncomplete' => 'چالاکی دوایی هاو.',
-'deletedarticle' => '"[[$1]]" سڕدرایەوە',
-'dellogpage' => 'لۆگی سڕینەوە',
-'deletecomment' => 'ھۆکاری سڕینەوە:',
-'deleteotherreason' => 'ھۆکاری دیکە:',
-'deletereasonotherlist' => 'ھۆکاری دیکە',
-'deletereason-dropdown' => '* ھۆکاری سڕینەوە
-** داواکاریی نووسەر
-** تێکدانی مافی لەبەرگرتنەوە
-** خراپکاری',
-
-# Rollback
-'rollbacklink' => 'گەڕاندنەوە',
-
-# Protect
-'protectlogpage' => 'لۆگی پاراستن',
-'protectedarticle' => 'پارێزراو[[$1]]',
-'modifiedarticleprotection' => 'ئاستی پاراستنی "[[$1]]"ی گۆڕا',
-'unprotectedarticle' => '"[[$1]]" لە حاڵی ئێستا دا نەپازراوە',
-'movedarticleprotection' => 'ڕێککارییەکانی پاراستن لە "[[$2]]" گوازرایەوە بۆ "[[$1]]"',
-'protect-title' => 'ئاستی پاراستنی "$1" بگۆڕە',
-'prot_1movedto2' => '[[$1]] گوازراوەتەوە بۆ [[$2]]',
-'protect-backlink' => '← $1',
-'protect-legend' => 'پاراستن تەیید بکە',
-'protectcomment' => 'ھۆکاری پاراستن:',
-'protectexpiry' => 'ھەتا:',
-'protect_expiry_invalid' => 'کاتی بەسەرچوون نادروستە:',
-'protect_expiry_old' => 'کاتی بەسەرچوون ڕابردووە',
-'protect-unchain' => 'ئاستەنگی ئیزنی گواستنەوە لا ببە',
-'protect-text' => "تۆ دەتوانی لێرە ئاستی پاراستنی لاپەڕەکە ببینی وە بیگۆڕی '''<nowiki>$1</nowiki>''' .",
-'protect-locked-access' => "ئەکانتەکەی تۆ ڕێگەی ئەوەی پێ نەدراوە کە بتوانێت ئاستی پاراستنی لاپەڕە بگۆڕێت.
-ڕێککارییەکانی ئێستای لاپەڕەکە لێرەدایە '''$1''':",
-'protect-cascadeon' => 'ئەم لاپەڕە لە حاڵی ئێستا دا پارێزراوە چونکا لە نێو ئەم {{PLURAL:$1|لاپەڕ(ان)ە دایە کە }} حاڵەتی پاراستنی تاڤگەیی ئەو(ان) ھەڵکراوە
-
-تۆ دەتوانی ئاستی پاراستنی ئەم لاپەڕە بگۆڕی، بەڵام ئەم گۆڕانە ھیچ کاریگەر نابێت لە سەر پاراستنی تاڤگەیی',
-'protect-default' => 'بە ھەموو بەکارھێنەران ڕێگە بدە',
-'protect-fallback' => 'پێویستی بە ئیزنی "$1" ھەیە',
-'protect-level-autoconfirmed' => 'بەکارھێنەرانی نوێ و تۆمارنەکراو ئاستەنگ بکە',
-'protect-level-sysop' => 'تەنھا بەڕێوەبەران (admînan)',
-'protect-summary-cascade' => 'تاڤگەیی',
-'protect-expiring' => 'لەم بەروارە بەسەر دەچێت $1 (UTC)',
-'protect-cascade' => 'لاپەڕەکانی نێو ئەم لاپەتە بپارێزە (پاراستنی تاڤگەیی)',
-'protect-cantedit' => 'ئێمە ناتوانین ئاستی پاراستنی ئەم لاپەڕە بگۆڕین، چونکا تۆ ئیجازەی گۆڕینت نیە.',
-'restriction-type' => 'ئیزن:',
-'restriction-level' => 'ئاستی سنووردارکردن:',
-
-# Undelete
-'undeletelink' => 'بینین/گێڕاندنەوە',
-'undeletedarticle' => '"[[$1]]" گێڕدرایەوە',
-
-# Namespace form on various pages
-'namespace' => 'بۆشاییی ناو',
-'invert' => 'ھەڵبژاردەکان پێچەوانە بکە',
-'blanknamespace' => '(سەرەکی)',
-
-# Contributions
-'contributions' => 'بەشدارییەکانی بەکارھێنەر',
-'contributions-title' => 'بەشدارییەکانی بەکارھێنەر $1',
-'mycontris' => 'بەشدارییەکانی من',
-'contribsub2' => 'بۆ$1 ($2)',
-'uctop' => '(لوتکە)',
-'month' => 'لە مانگی (و پێشترەوە):',
-'year' => 'لە ساڵی (و پێشترەوە):',
-
-'sp-contributions-newbies' => 'تەنھا بەشدارییەکانی بەکارھێنەرە تازەکان نیشان بدە',
-'sp-contributions-newbies-sub' => 'لە بەکارھێنەرە تازەکانەوە',
-'sp-contributions-blocklog' => 'لۆگی بەربەستن',
-'sp-contributions-search' => 'گەڕین بۆ بەشدارییەکان',
-'sp-contributions-username' => 'ئەدرەسی IP یان بەکارھێنەر:',
-'sp-contributions-submit' => 'بگەڕە',
-
-# What links here
-'whatlinkshere' => 'بەسراوەکان بە ئێرەوە',
-'whatlinkshere-title' => 'ئەو پەڕانەی بەستەرکراون بۆ "$1"',
-'whatlinkshere-page' => 'پەڕە:',
-'isredirect' => 'پەڕە ئاڕاستە بکە',
-'isimage' => 'بەستەری وێنە',
-'whatlinkshere-links' => '← بەستەرەکان',
-'whatlinkshere-hideredirs' => '$1 ئاڕاستەکراو هەیە',
-'whatlinkshere-hidelinks' => '$1 بەستەر',
-'whatlinkshere-filters' => 'پاڵێوەرەکان',
-
-# Block/unblock
-'blockip' => 'بەکارھێنەر ئاستەنگ بکە',
-'ipboptions' => '2 کاتژمێر:2 hours,1 ڕۆژ:1 day,3 ڕۆژ:3 days,1 ھەفتە:1 week,2 ھەفتە:2 weeks,1 مانگ:1 month,3 مانگ:3 months,6 مانگ:6 months,1 ساڵ:1 year,بێ سنوور:infinite', # display1:time1,display2:time2,...
-'ipbotheroption' => 'دیکە',
-'blocklink' => 'بەربەستن',
-'unblocklink' => 'لابردنی ئاستەنگ',
-'change-blocklink' => 'گۆڕاندنی ئاستەنگ',
-'contribslink' => 'بەشداری',
-'blocklogpage' => 'لۆگی بلۆککردن',
-'block-log-flags-nocreate' => 'دروستکردنی هەژمار ناچالاککراوە',
-
-# Move page
-'movepagetext' => "لە ڕێگەی ئەم فۆرمەی خوارەوە ناوی پەڕە دەگۆڕدرێت، وە ھەموو مێژووەکەی دەگوازێتەوە بۆ ناوی نوێ.
-ئەگەر لە بەشی گەڕان ناوە کۆنەکەی پێ بدەی بە شێوەی خۆکار پەڕەکە دەگوازرێتەوە بۆ ناوە نوێکە .
-تۆ دەتوانی ئەو بەستەری ئاڵوگۆرانە بگۆڕی کە بەشێوەی خۆکار دەچێنە سەر لاپەڕەی ئەسڵی
-ئەگەر ناتەوێت ئەم کارە بکەی، دڵنیا بە کە [[Special:DoubleRedirects|دوبلەکان]] یان [[Special:BrokenRedirects|شکاوەکان]] تاقی بکەیتەوە.
-تۆ دەتوانی ئەو بەستەری ئاڵوگۆرانە تازە بکەیتەوە کە بەشێوەی خۆکار دەچێنە سەر لاپەڕەی ئەسڵی
-ئەگەر ناتەوێت ئەم کارە بکەی، دڵنیا بە کە [[Special:DoubleRedirects|دوبلەکان]] یان [[Special:BrokenRedirects|شکاوەکان]] تاقی بکەیتەوە.
-تۆ بەرپرسیاری دڵنیا ببیتەوە لەوەی کە بەستەرەکان دەچنە سەر خاڵێک کە چاوەروان دەکرێت بچنە ئەوێ.
-
-دەبێت بزانی کە ئەگەر پێشتر لاپەڕەیەک بەم ناوە ھەبێت لاپەڕەکە ناگوازرێتەوە، مەگەر ئەوەی کە لاپەڕەکە بەتاڵ بێت یان ئاڵوگۆر بێت وە ھیچ مێژووی گۆڕاندنی پێشووی نەبێت.
-
-ئەمە بەو واتایە کە ئەگەر ھەڵەیەک بکەی دەتوانی ناوی لاپەڕەکە دیسانەوە بگۆڕی بۆ ناوی پێشووی، وە ناتوانی بیخەیە جێگەی پەڕەیەک کە ھەنووکە ھەیە.
-
-'''ئاگاداریی'''
-ئەمە دەتوانێت گۆڕانێکی زۆر نابەجێ و چاوەڕوانەکراو بێت لە لاپەڕەیەکی ناسراو؛
-تکایە پێش گۆڕینی ناو باش بیر لە ئاکامەکەی بکەوە.",
-'movearticle' => 'ئەم لاپەڕە بگوازەوە:',
-'newtitle' => 'بۆ ناوێکی نوێ:',
-'move-watch' => 'ئەم لاپەڕە چاودێری بکە',
-'movepagebtn' => 'ئەم لاپەڕە بگوازەوە',
-'pagemovedsub' => 'گواستنەوە بە سەرکەوتوویی جێبەجێ کرا',
-'movepage-moved' => '<big>\'\'\'"$1" گوازراوەتەوە بۆ "$2"\'\'\'</big>', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'articleexists' => 'لاپەڕەیەک بەم ناوە ھەیە، یان ئەو ناوەی تۆ ھەڵتبژاردووە بایەخدار نیە.
-تکایە ناوێکی دیکە ھەڵبژێرە',
-'movedto' => 'بوو بە',
-'movetalk' => 'پەڕەی گوفتوگۆکەشی بگۆزەرەوە',
-'move-subpages' => 'ھەموو ژێرپەڕەکانیشی (بە ئەندازەی $1) بگۆزەرەوە، ئەگەر بیبێت',
-'move-talk-subpages' => 'ھەموو ژێرپەڕەکانی (بە ئەندارەی $1) پەڕەی گوفتوگۆکەشی بگۆزەرەوە، ئەگەر بیبێت',
-'1movedto2_redir' => 'بە ڕەوانکردنەوە، $1 ڕۆیشتە جێگەی $2',
-'movelogpage' => 'لۆگ بگوازەوە',
-'movereason' => 'بە ھۆی:',
-'revertmove' => 'پێچەوانەکردنەوە',
-'move-leave-redirect' => 'ڕەوانکردنەوەیەک دابنە بۆ پەڕە نوێکە',
-
-# Export
-'export' => 'پەڕەکان هەناردە بکە',
-
-# Thumbnails
-'thumbnail-more' => 'گەورە کردنەوە',
-
-# Tooltip help for the actions
-'tooltip-pt-userpage' => 'پەڕە شەخسییەکەت',
-'tooltip-pt-mytalk' => 'پەڕەی وتوبێژی تۆ',
-'tooltip-pt-preferences' => 'بژاردەکانت',
-'tooltip-pt-watchlist' => 'لیستی ئەو لاپەرانی کە چاودێری گۆڕانکارییەکانیان دەکەی',
-'tooltip-pt-mycontris' => 'لیستی بەشدارییەکانت',
-'tooltip-pt-login' => 'هاندەدرێیت کە بچیتە ژوورەوە؛ هەرچەندە، پێویست نییە',
-'tooltip-pt-logout' => 'دەرچوون',
-'tooltip-ca-talk' => 'گفتوگۆ دەربارەی ناوەڕۆکی پەرە',
-'tooltip-ca-edit' => 'ئەتوانی دەستکاری ئەم پەڕەیە بکەیت.
-تکایە دوگمەی پێشبینین بەکارببە پێش پاشەکەوتکردن.',
-'tooltip-ca-addsection' => 'بەشێکی نوێ دەست پێ بکە',
-'tooltip-ca-viewsource' => 'ئەم پەڕەیە پارێزراوە.
-ئەتوانی سەرچاوەکەی ببینیت',
-'tooltip-ca-history' => 'وەشانەکانی پێشووی ئەم پەڕەیە',
-'tooltip-ca-protect' => 'ئەم پەڕەیە بپارێزە',
-'tooltip-ca-delete' => 'ئەم پەڕەیە بسڕەوە',
-'tooltip-ca-move' => 'ئەم پەڕەیە بگوازەوە',
-'tooltip-ca-watch' => 'ئەم پەڕە بخە سەر لیستی چاودێریت',
-'tooltip-search' => 'لە {{SITENAME}} بگەڕێ',
-'tooltip-search-go' => 'بڕۆ بۆ پەڕەیەک کە بە تەواوەتی ئەم ناوەی تیادایە ئەگەر هەبێت',
-'tooltip-search-fulltext' => 'لە پەڕەکاندا بگەڕێ بۆ ئەم دەقە',
-'tooltip-n-mainpage' => 'بینینی پەڕەی دەستپێک',
-'tooltip-n-portal' => 'دەربارەی پڕۆژەکە، چی ئەتوانی بکەیت، لە کوێ شتەکان بدۆزیتەوە',
-'tooltip-n-currentevents' => 'زانیاری پێشینە بەدەست بھێنە دەربارەی بۆنە ھەنووکەییەکان',
-'tooltip-n-recentchanges' => 'لیستی دوایین گۆڕانکارییەکان لەم ویکییەدا',
-'tooltip-n-randompage' => 'پەڕەیەکی ڕەمەکی پیشان بدە',
-'tooltip-n-help' => 'شوێنێک بۆ دۆزینەوەی',
-'tooltip-t-whatlinkshere' => 'لیستی هەموو ئەو پەڕانەی ویکی کە بەستەرکراون بۆ ئێرە',
-'tooltip-t-recentchangeslinked' => 'دوایین گۆڕانکارییەکان لەو پەڕانە کە بەگرەوە گرێ دراون',
-'tooltip-feed-rss' => 'RSS بۆ ئەم گۆڕانکارییەکانی ئەم پەڕە',
-'tooltip-feed-atom' => 'Atom feed بۆ ئەم گۆڕانکارییەکانی ئەم پەڕە',
-'tooltip-t-contributions' => 'بینینی بەشدارییەکانی ئەم بەکارھێنەرە',
-'tooltip-t-emailuser' => 'ئیمەیلێک بنێرە بۆ ئەم بەکارھێنەرە',
-'tooltip-t-upload' => 'پەڕگەیەک (فایل) بار بکە',
-'tooltip-t-specialpages' => 'لیستی ھەموو پەڕە تایبەتەکان',
-'tooltip-t-print' => 'وەشانی چاپی ئەم پەڕەیە',
-'tooltip-t-permalink' => 'گرێدەری ھەمیشەیی بۆ ئەم وەشنەی ئەم پەڕەیە',
-'tooltip-ca-nstab-main' => 'بینینی پەڕەی ناوەڕۆک',
-'tooltip-ca-nstab-user' => 'پەڕەی بەکارھێنەر تەماشا بکە',
-'tooltip-ca-nstab-media' => 'پەڕەی میدیا چاو لێ بکە',
-'tooltip-ca-nstab-special' => 'ئەمە پەڕەیەکی تایبەتە، ناتوانی ئەم پەڕە خۆی دەستکاری بکەیت',
-'tooltip-ca-nstab-project' => 'بینینی پەڕەی پرۆژە',
-'tooltip-ca-nstab-image' => 'بینینی پەڕەی پەڕگە',
-'tooltip-ca-nstab-mediawiki' => 'بینینی پەیامی سیستەم',
-'tooltip-ca-nstab-template' => 'بینینی شابلۆنەکە',
-'tooltip-ca-nstab-help' => 'بینینی پەڕەی رێنمایی',
-'tooltip-ca-nstab-category' => 'بینینی پەڕەی ھاوپۆلەکان',
-'tooltip-minoredit' => 'ئەمە وەک گۆڕانکارییەکی بچووک دیاری بکە',
-'tooltip-save' => 'گۆڕانکارییەکانی خۆت پاشکەوت بکە',
-'tooltip-preview' => 'پێش بینینی گۆڕانکارییەکان، تکایە پێش پاشکەوت کردن ئەمە بەکار بھێنە',
-'tooltip-compareselectedversions' => 'جیاوازییەکانی دوو وەشانە دیاریکراوەی ئەم پەڕە ببینە.',
-
-# Skin names
-'skinname-standard' => 'کلاسیک',
-'skinname-nostalgia' => 'خەریبی',
-'skinname-cologneblue' => 'شینی کۆلۆن',
-'skinname-monobook' => 'مۆنۆ',
-'skinname-myskin' => 'پێستی خۆم',
-'skinname-chick' => 'جوجه‌',
-'skinname-simple' => 'ساده‌',
-'skinname-modern' => 'مۆدێڕن',
-
-# Math options
-'mw_math_png' => 'ھەموو جارێک وەک PNG نیشان بدە',
-'mw_math_simple' => 'HTML ئەگەر ساکار بێت, ئەگەرنا PNG',
-'mw_math_html' => 'ئەگەر بکرێ بە HTML ، ئەگەرنا بە PNG',
-
-# Browsing diffs
-'previousdiff' => '← دەستکاری کۆنتر',
-'nextdiff' => 'دەستکاری نوێتر →',
-
-# Media information
-'thumbsize' => 'قەبارەی Thumbnail:',
-'svg-long-desc' => '(پەڕگەی SVG، بە ناو $1 × $2 خاڵ، قەبارەی پەڕگە: $3)',
-'show-big-image' => 'گەورە کردنەوە',
-'show-big-image-thumb' => '<small>قەبارەی ئەم پێشبینینە: $1 × $2 خاڵە</small>',
-
-# Special:NewFiles
-'newimages' => 'پێشانگای پەڕگە نوێکان',
-
-# Bad image list
-'bad_image_list' => 'فۆرمات بەم شێوەی خوارەوەیە:
-
-تەنھا ئەو بابەتانەی کە کە لیست کراون (واتە ئەو دێڕانەی بە * دەست پێ دەکەن) لێک ئەدرێتەوە.
-یەکەم بەستەر لە سەر دێڕێک دەبێت بەستەری فایلێکی خراپ بێت.
-ھەموو بەستەرەکانی دوای ئەو کە لەسەر ھەمان دێڕن وەکوو نائاسایی دێتە ھەژمار، واتە ئەو لاپەڕانەی کە ڕەنگە تێدا فایل بە شێوەی ئینلاین بێت',
-
-# Variants for Kurdish language
-'variantname-ku-arab' => 'ئەلفوبێی عەرەبی',
-'variantname-ku-latn' => 'ئەلفوبێی لاتینی',
-
-# Metadata
-'metadata-help' => 'ئەم پەڕگە زانیاری زێدەی ھەیە، کە لەوە دەچێت کامێرا یان ھێماگر (scanner) خستبێتیە سەری. ئەگەر پەڕگەکە لە حاڵەتی سەرەتاییەکەیەوە دەستکاری کرابێ، شایەد بڕێ لە بڕگەکان بە تەواوی زانیارەکانی وێنە گۆڕدراوەکە نیشان نەدەن.',
-'metadata-expand' => 'وردەکارییە درێژکراوەکان پیشان بدە',
-'metadata-collapse' => 'وردەکارییە درێژکراوەکان بشارەوە',
-'metadata-fields' => 'ئەو کێڵگە EXIFانە لەم پەیامە بە ڕیز کراون، کاتێک خشتەی metadata کۆ کراوەش بێ ھەر نیشان ئەدرێت. کێڵگەکانی تر تا خشتەکە باز نەکرێ، شاراوەن.
-* make
-* model
-* datetimeoriginal
-* exposuretime
-* fnumber
-* focallength', # Do not translate list items
-
-# External editor support
-'edit-externally' => 'دەستکاری ئەم پەڕەیە بکە بە بەکارهێنانی پڕۆگرامێکی دەرەکی',
-
-# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ھەموو',
-'imagelistall' => 'ھەموو',
-'watchlistall2' => 'ھەموو',
-'namespacesall' => 'ھەموو',
-'monthsall' => 'هەموو',
-
-# Separators for various lists, etc.
-'semicolon-separator' => '؛&#32;',
-'comma-separator' => '،&#32;',
-
-# Live preview
-'livepreview-loading' => 'له‌باركردنایه‌ ...',
-'livepreview-ready' => 'ئاماده‌یه‌',
-
-# Watchlist editor
-'watchlistedit-numitems' => 'بێجگە لە پەڕەی وتووێژەکان، لیستی چاودێڕییەکانت {{PLURAL:$1|1 بابەت|$1 بابەت}}ی تێدایە،',
-'watchlistedit-noitems' => 'لیستی چاودێڕییەکانت ھیچ بابەتێکی تێدا نییە.',
-
-# Watchlist editing tools
-'watchlisttools-view' => 'بینینی گۆڕانکارییە پەیوەندی‌دارەکان',
-'watchlisttools-edit' => 'بینین و دەستکاری کردنی لیستی چاودێڕییەکان',
-'watchlisttools-raw' => 'دەستکاری کردنی لیستی خامی چاودێڕییەکان',
-
-# Iranian month names
-'iranian-calendar-m1' => 'خاکەلێوە',
-'iranian-calendar-m2' => 'گوڵان',
-'iranian-calendar-m3' => 'جۆزەردان',
-'iranian-calendar-m4' => 'پووشپەڕ',
-'iranian-calendar-m5' => 'گەلاوێژ',
-'iranian-calendar-m6' => 'خەرمانان',
-
-# Special:Version
-'version' => 'وەشان', # Not used as normal message but as header for the special page itself
-
-# Special:FilePath
-'filepath' => 'ڕێڕەوی پەڕگە',
-'filepath-page' => 'پەڕگە:',
-'filepath-submit' => 'ڕێڕەو',
-
-# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'گەڕان بۆ پەڕگە دووپات کراوەکان',
+'aboutsite' => 'دەربارەی {{SITENAME}}',
+'mainpage' => 'دەستپێک',
-# Special:SpecialPages
-'specialpages' => 'لاپەڕە تایبەتەکان',
-'specialpages-group-other' => 'پەڕە تایبەتەکانی دیکە',
-'specialpages-group-login' => 'چوونە ژوورەوە/ناونووسین',
-'specialpages-group-changes' => 'دوایین گۆڕانکارییەکان و ڕەشنووسەکان',
-'specialpages-group-media' => 'گوزارشتەکان و بارکردنەکانی مێدیا',
-'specialpages-group-users' => 'بەکارھێنەران و مافەمان',
-'specialpages-group-pages' => 'لیستی پەڕەکان',
+'red-link-title' => '$1 (پەڕە بوونی نییە)',
);
diff --git a/languages/messages/MessagesKu_latn.php b/languages/messages/MessagesKu_latn.php
index 6f4119dc..69f194c0 100644
--- a/languages/messages/MessagesKu_latn.php
+++ b/languages/messages/MessagesKu_latn.php
@@ -10,17 +10,16 @@
* @author Asoxor
* @author Bangin
* @author Erdal Ronahi
+ * @author Liangent
* @author The Evil IP address
*/
$namespaceNames = array(
NS_MEDIA => 'Medya',
NS_SPECIAL => 'Taybet',
- NS_MAIN => '',
NS_TALK => 'Nîqaş',
NS_USER => 'Bikarhêner',
NS_USER_TALK => 'Bikarhêner_nîqaş',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_nîqaş',
NS_FILE => 'Wêne',
NS_FILE_TALK => 'Wêne_nîqaş',
@@ -31,7 +30,7 @@ $namespaceNames = array(
NS_HELP => 'Alîkarî',
NS_HELP_TALK => 'Alîkarî_nîqaş',
NS_CATEGORY => 'Kategorî',
- NS_CATEGORY_TALK => 'Kategorî_nîqaş'
+ NS_CATEGORY_TALK => 'Kategorî_nîqaş',
);
$messages = array(
@@ -143,7 +142,7 @@ $messages = array(
'category-media-header' => 'Medya di kategorîya "$1" da',
'category-empty' => "''Di vê kategorîyê da niha gotar ya medya tune ne.''",
'hidden-categories' => '{{PLURAL:$1|Kategorîya veşartî|Kategorîyên veşartî}}',
-'hidden-category-category' => 'Kategorîyên veşartî', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategorîyên veşartî',
'category-subcat-count' => '{{PLURAL:$2|Di vê kategorîyê da bes ev binkategorîya heye:|Di vê kategorîyê da {{PLURAL:$2|binkategorîyek heye|$2 binkategorî hene}}. Jêr {{PLURAL:$1|binkategorîyek tê|$1 binkategorî tên}} nîşandan.}}',
'category-subcat-count-limited' => 'Di vê kategorîyê da ev {{PLURAL:$1|binkategorîya heye|$1 binkategorî hene}}.',
'category-article-count' => '{{PLURAL:$2|Di vê kategorîyê da bes ev rûpela heye:|Di vê kategorîyê da {{PLURAL:$2|rûpelek heye|$2 rûpel hene}}. Jêr {{PLURAL:$1|rûpelek tê|$1 rûpel tên}} nîşandan.}}',
@@ -161,10 +160,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lîsteya e-nameyên versyonên nuh yê MediaWiki]',
-'about' => 'Der barê',
-'article' => 'Gotar',
-'newwindow' => '(di rûpelekî din da yê were nîşandan)',
-'cancel' => 'Betal',
+'about' => 'Der barê',
+'article' => 'Gotar',
+'newwindow' => '(di rûpelekî din da yê were nîşandan)',
+'cancel' => 'Betal',
+'moredotdotdot' => 'Zêde...',
+'mypage' => 'Rûpela min',
+'mytalk' => 'Rûpela guftûgo ya min',
+'anontalk' => 'Guftûgo ji bo vê IPê',
+'navigation' => 'Navîgasyon',
+'and' => '&#32;û',
+
+# Cologne Blue skin
'qbfind' => 'Bibîne',
'qbbrowse' => 'Bigere',
'qbedit' => 'Biguherîne',
@@ -172,15 +179,8 @@ $messages = array(
'qbpageinfo' => "Data'yên rûpelê",
'qbmyoptions' => 'Rûpelên min',
'qbspecialpages' => 'Rûpelên taybet',
-'moredotdotdot' => 'Zêde...',
-'mypage' => 'Rûpela min',
-'mytalk' => 'Rûpela guftûgo ya min',
-'anontalk' => 'Guftûgo ji bo vê IPê',
-'navigation' => 'Navîgasyon',
-'and' => '&#32;û',
-
-# Metadata in edit box
-'metadata_help' => "Data'yên meta:",
+'faq' => 'Pirs û Bersîv (FAQ)',
+'faqpage' => 'Project:Pirs û Bersîv',
'errorpagetitle' => 'Çewtî (Error)',
'returnto' => 'Bizivire $1.',
@@ -230,7 +230,7 @@ $messages = array(
'otherlanguages' => 'Zimanên din',
'redirectedfrom' => '(Hat ragihandin ji $1)',
'redirectpagesub' => 'Rûpelê redirect',
-'lastmodifiedat' => 'Ev rûpel carî dawî di $2, $1 de hat guherandin.', # $1 date, $2 time
+'lastmodifiedat' => 'Ev rûpel carî dawî di $2, $1 de hat guherandin.',
'viewcount' => 'Ev rûpel {{PLURAL:$1|carekê|caran}} tê xwestin.',
'protectedpage' => 'Rûpela parastî',
'jumpto' => 'Here cem:',
@@ -241,7 +241,6 @@ $messages = array(
'aboutsite' => 'Der barê {{SITENAME}}',
'aboutpage' => 'Project:Der barê',
'copyright' => 'Ji bo naverokê $1 derbas dibe.',
-'copyrightpagename' => 'Mafên nivîsanê',
'copyrightpage' => '{{ns:project}}:Mafên nivîsanê',
'currentevents' => 'Bûyerên rojane',
'currentevents-url' => 'Project:Bûyerên rojane',
@@ -249,8 +248,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ferexetname',
'edithelp' => 'Alîkarî ji bo guherandin',
'edithelppage' => 'Help:Rûpeleke çawa biguherînim',
-'faq' => 'Pirs û Bersîv (FAQ)',
-'faqpage' => 'Project:Pirs û Bersîv',
'helppage' => 'Help:Alîkarî',
'mainpage' => 'Destpêk',
'mainpage-description' => 'Destpêk',
@@ -322,10 +319,6 @@ ji fonksyonê "<tt>$2</tt>" yê
MySQL ev şaşbûna hate dîtin: "<tt>$3: $4</tt>".',
'dberrortextcl' => 'Li cem sekirina database "$1 ji fonksyonê "<tt>$2</tt>" yê
MySQL ev şaşbûna hate dîtin: "<tt>$3: $4</tt>".',
-'noconnect' => 'Bibexşîne! Çend pirsgrêkên teknîkî heye, girêdan ji pêşkêşvanê (suxrekirê, server) re niha ne gengaz e. <br />
-$1',
-'nodb' => 'Database $1 nikanî hatiba sekirin. Xêra xwe derengtir dîsa bicerbîne.',
-'cachederror' => "Evê jêr bes kopîyek ji cache'ê ye û belkî ne yê niha ye.",
'laggedslavemode' => 'Zanibe: Ev rûpela belkî guherandinên yê ne niha nîşandide.',
'readonly' => 'Database hatîye girtin',
'enterlockreason' => 'Hoyek ji bo bestin binav bike, herweha zemaneke mezende kirî ji bo helgirtina bestinê!',
@@ -374,7 +367,6 @@ $2
'titleprotected' => "Rûpelek bi vî navî nikane were çêkirin. Ev astengkirina ji [[User:$1|$1]] bi sedemê ''$2'' hate çêkirin.",
# Login and logout pages
-'logouttitle' => 'Derketina bikarhêner',
'logouttext' => "'''Tu niha derketî (logged out).'''
Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner [[Special:UserLogin|dîsa têkevî]].
@@ -382,7 +374,6 @@ Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd
'welcomecreation' => '== Bi xêr hatî, $1! ==
Hesaba te hat afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe di {{SITENAME}}]] da eyar bikî.',
-'loginpagetitle' => 'Qeyda bikarhêner (User login)',
'yourname' => 'Navê te wek bikarhêner (user name)',
'yourpassword' => 'Şîfreya te (password)',
'yourpasswordagain' => 'Şîfreya xwe careke din binîvîse',
@@ -404,21 +395,7 @@ Hesaba te hat afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe di
'createaccountmail' => 'bi e-name',
'badretype' => 'Herdu şîfreyên ku te nivîsîn hevûdin nagirin.',
'userexists' => 'Ev navî bikarhênerî berê tê bikaranîn. Xêra xwe navekî din bibe.',
-'youremail' => 'E-maila te*',
-'username' => 'Navê bikarhêner:',
-'uid' => "ID'ya bikarhêner:",
-'prefs-memberingroups' => 'Endamê {{PLURAL:$1|grûpê|grûpan}}:',
-'yourrealname' => 'Navê te yê rastî*',
-'yourlanguage' => 'Ziman',
-'yourvariant' => 'Varîyant:',
-'yournick' => 'Leqeba te (ji bo îmza)',
-'badsig' => 'Nivîsandinê îmzê ne baş e; xêra xwe nivîsandina HTML seke, ku şaşbûn hene ya na.',
-'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîşanekê|nîşanan}} da be.',
-'email' => 'E-name',
-'prefs-help-realname' => 'Ne gereke. Tu dikarî navî xwe binivisînê, ew ê bi karkirên te were nivîsandin.',
'loginerror' => 'Çewtî (Login error)',
-'prefs-help-email' => 'Adrêsa te yê e-nameyan ne gereke were nivîsandin, lê ew qebûldike, ku bikarhênerên din vê naskirinê te kanibin e-nameyan ji te ra bişînin.',
-'prefs-help-email-required' => 'Adrêsa e-nameyan gereke.',
'nocookiesnew' => "Account'î bikarhêner hatibû çêkirin, lê te xwe qeyd nekirîye. {{SITENAME}} cookie'yan bikartîne ji bo qeydkirinê bikarhêneran. Te cookie'yan girtîye. Xêra xwe cookie'yan qebûlbike, manê tu kanibê bi navî bikarhêner û şîfreya xwe qeydbikê.",
'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
'noname' => 'Navê ku te nivîsand derbas nabe.',
@@ -457,17 +434,16 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
'loginlanguagelabel' => 'Ziman: $1',
# Password reset dialog
-'resetpass' => "Şîfreya account'î bikarhêneran şondabibe",
-'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
-'resetpass_text' => '<!-- Nivîsê xwe li vir binivisîne -->',
-'resetpass_header' => 'Şîfreya xwe betalbike',
-'oldpassword' => 'Şîfreya kevn',
-'newpassword' => 'Şîfreya nû',
-'retypenew' => 'Şîfreya nû careke din binîvîse',
-'resetpass_submit' => 'Şîfrê bişîne û xwe qedybike',
-'resetpass_success' => 'Şîfreya te hate guherandin! Niha tu tê qeydkirin...',
-'resetpass_bad_temporary' => 'Şîfreya te niha netê qebûlkirin. Te berê şîfreyekî nuh tomarkir ya şîfreyekî nuh xast.',
-'resetpass_forbidden' => 'Şîfre nikanin werin guhartin',
+'resetpass' => "Şîfreya account'î bikarhêneran şondabibe",
+'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
+'resetpass_text' => '<!-- Nivîsê xwe li vir binivisîne -->',
+'resetpass_header' => 'Şîfreya xwe betalbike',
+'oldpassword' => 'Şîfreya kevn',
+'newpassword' => 'Şîfreya nû',
+'retypenew' => 'Şîfreya nû careke din binîvîse',
+'resetpass_submit' => 'Şîfrê bişîne û xwe qedybike',
+'resetpass_success' => 'Şîfreya te hate guherandin! Niha tu tê qeydkirin...',
+'resetpass_forbidden' => 'Şîfre nikanin werin guhartin',
# Edit page toolbar
'bold_sample' => 'Nivîsa estûr',
@@ -541,7 +517,6 @@ Zanibe ku tu nikanê e-nameya bişînê heta tu di [[Special:Preferences|tercih
'blockededitsource' => "Nivîsarên '''guherandinên te''' di '''$1''' da tê wêşandan:",
'whitelistedittitle' => 'Ji bo guherandinê vê gotarê tu gireke xwe qeydbikê.',
'whitelistedittext' => 'Ji bo guherandina rûpelan, $1 pêwîst e.',
-'confirmedittitle' => 'Ji bo guherandinê, naskirina e-nameya te tê xastin.',
'confirmedittext' => 'Tu gireke adrêsa e-nameya xwe nasbikê berî tu rûpelan diguherînê. Xêra xwe adrêsa e-nameya ya xwe di [[Special:Preferences|tercihên xwe]] da binivisîne û nasbike.',
'nosuchsectiontitle' => 'Beşekî wisa tune ye',
'nosuchsectiontext' => 'Te dixast beşekê biguherînê yê tune ye.',
@@ -559,7 +534,8 @@ Eger tu bi şaştî hatî, bizivire rûpela berê.",
'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
'userpage-userdoesnotexist' => 'Account\'î bikarhêneran "$1" nehatîye qeydkirin. Xêra xwe seke ku tu dixazê vê rûpelê çêkê/biguherînê.',
'clearyourcache' => "'''Zanibe:''' Piştî tomarkirinê, tu gireke cache'a browser'î xwe dîsa wînê ji bo dîtina guherandinan. '''Mozilla / Firefor /Safari:''' Kepsa ''Shift'' bigre û li ''Reload'' xe, ya ''Ctrl-Shift-R'' bikepsîne (''Cmd-Shift-R'' li cem Apple Mac); '''IE:''' Kepsa ''Ctrl'' bigre û li ''Reload'' xe, ya li ''Ctrl-F5''; '''Konqueror:''' bes li ''Reload'' xe ya li kepsa ''F5'' xe; bikarhênerên '''Opera''' girekin belkî cache'a xwe tevda di bin ''Tools → Preferences'' da valabikin.",
-'usercssjsyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS/JS'ê te yê nuh e berî tomarkirinê.",
+'usercssyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS'ê te yê nuh e berî tomarkirinê.",
+'userjsyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa JS'ê te yê nuh e berî tomarkirinê.",
'usercsspreview' => "'''Zanibe ku tu bes CSS'ê xwe pêşdibînê.'''
'''Ew hên nehatîye tomarkirin!'''",
'userjspreview' => "'''Zanibe ku tu bes JavaScript'a xwe dicerbînê, ew hên nehatîye tomarkirin!'''",
@@ -594,11 +570,10 @@ baş nikarin rûpelên ku ji 32 kB drêjtir in biguherînin. Eger tu vê rûpel
'template-semiprotected' => '(nîv-parastî)',
'permissionserrorstext' => 'Tu nikanê vê tiştî bikê, ji bo {{PLURAL:$1|vê sedemê|van sedeman}}:',
'permissionserrorstext-withaction' => 'Mafên te bo $2 tune ye ji bo {{PLURAL:$1|vê sedemê|van sedeman}}:',
-'recreate-deleted-warn' => "'''Zanibe: Tu kê rûpelekê çêkê yê niha hate jêbirin!'''
+'recreate-moveddeleted-warn' => "'''Zanibe: Tu kê rûpelekê çêkê yê niha hate jêbirin!'''
Zanibe ku nuhçêkirinê vê rûpelê hêja ye ya na.
Înformasyon li ser jêbirinê vê rûpelê li vir e:",
-'deletelog-fulllog' => 'Reşahîyê tevda bibîne',
'edit-no-change' => 'Guherandina te hate nehate hesibandin, ji ber ku guherandinên nivîsê tune bûn.',
'edit-already-exists' => 'Nikarî rûpeleka nuh çêke.
Ew berê heye.',
@@ -629,7 +604,6 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
'page_last' => 'paşîn',
'histlegend' => 'Legend: (ferq) = cudayî nav vê û versiyon a niha,
(berê) = cudayî nav vê û yê berê vê, B = guhêrka biçûk',
-'deletedrev' => '[jêbir]',
'histfirst' => 'Kevintirîn',
'histlast' => 'Nûtirîn',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -637,13 +611,13 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
# Revision feed
'history-feed-title' => 'Dîroka versyona',
-'history-feed-item-nocomment' => '$1 li $2', # user at time
+'history-feed-item-nocomment' => '$1 li $2',
'history-feed-empty' => 'Rûpelê xastî tune ye. Belkî ew rûpela hatîye jêbirin ya sernava xwe hatîye guherandin. [[Special:Search|Di wîkîyê da li rûpelên nêzîkî wê bigere]].',
# Revision deletion
'rev-deleted-comment' => '(nivîs hate jêbirin)',
'rev-deleted-user' => '(navî bikarhêner hate jêbirin)',
-'rev-deleted-text-permission' => 'Ev verzyona vê rûpelê hatîye jêbirin. Belkî înformasyon di [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} reşahîya jêbirinê] da hebin.',
+'rev-deleted-text-permission' => 'Ev verzyona vê rûpelê hatîye jêbirin. Belkî înformasyon di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} reşahîya jêbirinê] da hebin.',
'rev-delundel' => 'nîşan bide/veşêre',
'revisiondelete' => 'Rêvîsyona jêbibe/dîsa çêke',
'revdelete-legend' => 'Guherandina qebûlkirina dîtinê',
@@ -653,6 +627,7 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
'revdelete-suppress' => 'Sedemê jêbirinê ji koordînatoran ra jî veşêre',
'revdelete-hid' => '$1 veşart',
'revdelete-unhid' => '$1 nîşanbide',
+'revdelete-edit-reasonlist' => 'Sedemên jêbirinê biguherîne',
# History merging
'mergehistory-from' => 'Çavkanîya rûpelê:',
@@ -667,33 +642,19 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
'compareselectedversions' => 'Guhartoyan bide ber hev',
'editundo' => 'Betalbike',
'diff-multi' => '({{PLURAL:$1|Verzyonekî navberê netê|$1 verzyonên navberê netên}} dîtin.)',
-'diff-movedto' => 'çû $1',
-'diff-removed' => '$1 hate jêbirin',
-'diff-src' => 'çavkanî',
-'diff-h1' => "'''sernav (level 1)'''",
-'diff-h2' => "'''sernav (level 2)'''",
-'diff-h3' => "'''sernav (level 3)'''",
-'diff-h4' => "'''sernav (level 4)'''",
-'diff-h5' => "'''sernav (level 5)'''",
-'diff-img' => "'''wêneyek'''",
-'diff-a' => "'''lînkek'''",
-'diff-big' => "'''mezin'''",
-'diff-del' => "'''jêbirî'''",
# Search results
'searchresults' => 'Encamên lêgerînê',
'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|Searching {{SITENAME}}]].',
'searchsubtitle' => 'Ji bo query "[[:$1]]"',
'searchsubtitleinvalid' => 'Ji bo query "$1"',
-'noexactmatch' => "'''Rûpeleke bi navê \"\$1\" tune.''' Tu dikarî [[:\$1|vê rûpelê biafirînî]]",
-'noexactmatch-nocreate' => "'''Rûpelek bi nava \"\$1\" tune ye.'''",
'titlematches' => 'Dîtinên di sernivîsên gotaran de',
'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
'textmatches' => 'Dîtinên di nivîsara rûpelan de',
'notextmatches' => 'Di nivîsarê de nehat dîtin.',
-'prevn' => '$1 paş',
-'nextn' => '$1 pêş',
-'viewprevnext' => '($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} paş',
+'nextn' => '{{PLURAL:$1|$1}} pêş',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Alîkarî',
'searchprofile-articles-tooltip' => 'Di $1 da lêbigere',
'searchprofile-project-tooltip' => 'Di $1 da lêbigere',
@@ -706,48 +667,59 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
'searchdisabled' => '<p>Tu dikarî li {{SITENAME}} bi Google an Yahoo! bigere. Têbînî: Dibe ku encamen lêgerîne ne yên herî nû ne.
</p>',
+# Quickbar
+'qbsettings-none' => 'Tune',
+
# Preferences page
-'preferences' => 'Tercîhên min',
-'mypreferences' => 'Tercihên min',
-'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe qeyd nekir',
-'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
-'prefsreset' => 'Tercih hatin şondakirin.',
-'qbsettings-none' => 'Tune',
-'changepassword' => 'Şîfre biguherîne',
-'skin' => 'Pêste',
-'skin-preview' => 'Pêşdîtin',
-'math' => 'TeX',
-'dateformat' => 'Formata rojê',
-'datedefault' => 'Tercih tune ne',
-'datetime' => 'Dem û rêkewt',
-'math_unknown_error' => 'şaşbûnekî nezanîn',
-'math_image_error' => 'Wêşandana PNG nemeşî',
-'prefs-personal' => 'Agahiyên bikarhênerê/î',
-'prefs-rc' => 'Guherandinên dawî',
-'prefs-watchlist' => 'Lîsteya şopandinê',
-'prefs-misc' => 'Eyaren cuda',
-'prefs-resetpass' => 'Şifreyê biguherîne',
-'saveprefs' => 'Tercîhan qeyd bike',
-'resetprefs' => 'Nivîsarên netomarkirî şondabike',
-'textboxsize' => 'Guheranin',
-'rows' => 'Rêz',
-'columns' => 'sitûn',
-'searchresultshead' => 'Eyarên encamên lêgerinê',
-'savedprefs' => 'Tercîhên te qeyd kirî ne.',
-'timezonelegend' => 'Navçeya demê',
-'timezonetext' => '¹Hejmara saetan têkê, yê navbera navçeya demê te û UTC da ne.',
-'localtime' => 'Demê vê cihê',
-'timezoneoffset' => 'Cudahî¹:',
-'servertime' => "Dema server'ê:",
-'guesstimezone' => "Ji browser'î xwe têkê",
-'allowemail' => 'Qebûlbike ku bikarhênerên di e-nameyan ji te ra bişînin',
-'prefs-searchoptions' => 'Tercihên lêgerînê',
-'default' => 'asayî',
-'files' => 'Dosya',
+'preferences' => 'Tercîhên min',
+'mypreferences' => 'Tercihên min',
+'prefs-edits' => 'Hejmarê guherandinan:',
+'prefsnologin' => 'Xwe qeyd nekir',
+'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
+'changepassword' => 'Şîfre biguherîne',
+'prefs-skin' => 'Pêste',
+'skin-preview' => 'Pêşdîtin',
+'prefs-math' => 'TeX',
+'datedefault' => 'Tercih tune ne',
+'prefs-datetime' => 'Dem û rêkewt',
+'prefs-personal' => 'Agahiyên bikarhênerê/î',
+'prefs-rc' => 'Guherandinên dawî',
+'prefs-watchlist' => 'Lîsteya şopandinê',
+'prefs-misc' => 'Eyaren cuda',
+'prefs-resetpass' => 'Şifreyê biguherîne',
+'saveprefs' => 'Tercîhan qeyd bike',
+'resetprefs' => 'Nivîsarên netomarkirî şondabike',
+'prefs-editing' => 'Guheranin',
+'rows' => 'Rêz',
+'columns' => 'sitûn',
+'searchresultshead' => 'Eyarên encamên lêgerinê',
+'savedprefs' => 'Tercîhên te qeyd kirî ne.',
+'timezonelegend' => 'Navçeya demê',
+'localtime' => 'Demê vê cihê',
+'timezoneoffset' => 'Cudahî¹:',
+'servertime' => "Dema server'ê:",
+'guesstimezone' => "Ji browser'î xwe têkê",
+'allowemail' => 'Qebûlbike ku bikarhênerên di e-nameyan ji te ra bişînin',
+'prefs-searchoptions' => 'Tercihên lêgerînê',
+'default' => 'asayî',
+'prefs-files' => 'Dosya',
+'youremail' => 'E-maila te*',
+'username' => 'Navê bikarhêner:',
+'uid' => "ID'ya bikarhêner:",
+'prefs-memberingroups' => 'Endamê {{PLURAL:$1|grûpê|grûpan}}:',
+'yourrealname' => 'Navê te yê rastî*',
+'yourlanguage' => 'Ziman',
+'yourvariant' => 'Varîyant:',
+'yournick' => 'Leqeba te (ji bo îmza)',
+'badsig' => 'Nivîsandinê îmzê ne baş e; xêra xwe nivîsandina HTML seke, ku şaşbûn hene ya na.',
+'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîşanekê|nîşanan}} da be.',
+'email' => 'E-name',
+'prefs-help-realname' => 'Ne gereke. Tu dikarî navî xwe binivisînê, ew ê bi karkirên te were nivîsandin.',
+'prefs-help-email' => 'Adrêsa te yê e-nameyan ne gereke were nivîsandin, lê ew qebûldike, ku bikarhênerên din vê naskirinê te kanibin e-nameyan ji te ra bişînin.',
+'prefs-help-email-required' => 'Adrêsa e-nameyan gereke.',
# User rights
-'userrights' => 'Îdarekirina mafên bikarhêneran', # Not used as normal message but as header for the special page itself
+'userrights' => 'Îdarekirina mafên bikarhêneran',
'userrights-lookup-user' => 'Îdarekirina grûpan',
'userrights-user-editname' => 'Navî bikarhênerê têke:',
'editusergroup' => 'Grûpên bikarhêneran biguherîne',
@@ -833,12 +805,13 @@ Sedemê qedexekirinê ji $3 ev e: ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Guherandinên peywend',
+'recentchangeslinked-feed' => 'Guherandinên peywend',
+'recentchangeslinked-toolbox' => 'Guherandinên peywend',
'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide. Ew rûpel yê di lîsteya te ya şopandinê da ne bi nivîsa '''estûr''' tên nîşandan.",
# Upload
'upload' => 'Wêneyekî barbike',
'uploadbtn' => 'Wêneyê (ya tiştekî din ya mêdya) barbike',
-'reupload' => 'Dîsa barbike',
'reuploaddesc' => 'Barkirinê biskîne û dîsa here rûpela barkirinê.',
'uploadnologin' => 'Xwe qeyd nekir',
'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[Special:UserLogin|têkevî]].',
@@ -881,7 +854,6 @@ Eger tu naxazê, xêra xwe li „Betal“ xe.
* Navî datayê yê tê barkirin: '''<tt>[[:$1]]</tt>'''
* Navî datayê yê berê heyê: '''<tt>[[:$2]]</tt>'''
Xêra xwe navekî din bibîne.",
-'fileexists-thumb' => "<center>'''Wêne yê berê heye'''</center>",
'file-thumbnail-no' => "Navî vê datayê bi '''<tt>$1</tt>''' destpêdike. Ev dibêje ku ev wêneyekî çûçik e ''(thumbnail)''. Xêra xwe seke, ku belkî versyonekî mezin yê vê wêneyê li cem te heye û wê wêneyê mezintir di bin navî orîjînal da barbike.",
'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
[[File:$1|thumb|center|$1]]',
@@ -905,7 +877,8 @@ Zanibe, ku ev barkirina kê were qebûlkirin ya na.
Înformasyonan li ser jêbirinê kevin ra:",
'filename-bad-prefix' => "Nava wê data'yê, yê tu niha bardikê, bi '''\"\$1\"''' destpêdike. Kamêrayên dîjîtal wan navan didin wêneyên xwe. Ji kerema xwe navekî baştir binivisîne ji bo mirov zûtir zanibin ku şayeşê vê wêneyê çî ye.",
-'license' => 'Lîsens:',
+'license' => 'Lîsens:',
+'license-header' => 'Lîsens:',
# Special:ListFiles
'listfiles_search_for' => 'Li navî wêneyê bigere:',
@@ -917,6 +890,7 @@ Zanibe, ku ev barkirina kê were qebûlkirin ya na.
'listfiles_description' => 'Wesif',
# File description page
+'file-anchor-link' => 'Wêne',
'filehist' => 'Dîroka datayê',
'filehist-help' => 'Li demekê xe ji bo dîtina verzyona wê demê',
'filehist-deleteall' => 'giştika jêbibe',
@@ -931,8 +905,6 @@ Zanibe, ku ev barkirina kê were qebûlkirin ya na.
'imagelinks' => 'Lînkên vî wêneyî',
'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
'nolinkstoimage' => 'Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.',
-'noimage' => 'Medyayek bi vê navî tune, lê tu kanî $1',
-'noimage-linktext' => 'wê barbike',
'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
# File reversion
@@ -984,8 +956,8 @@ Zanibe, ku ev barkirina kê were qebûlkirin ya na.
'double-redirect-fixed-move' => "cihê [[$1]] hatîye gerandin, ew niha redirect'ek berve [[$2]] ye",
'brokenredirects' => 'Ragihandinên jê bûye',
-'brokenredirects-edit' => '(biguherîne)',
-'brokenredirects-delete' => '(jêbibe)',
+'brokenredirects-edit' => 'biguherîne',
+'brokenredirects-delete' => 'jêbibe',
'withoutinterwiki' => 'Rûpel vê lînkên berve zimanên din',
'withoutinterwiki-submit' => 'Nîşan bide',
@@ -1156,7 +1128,7 @@ Heta tu vê guherandinê senekê, mêsajên din ji ber ku guherandinê wê rûpe
--
Eger tu dixazê lîstêya xwe yê şopandinê biguherînê, li
-{{fullurl:{{ns:special}}:Watchlist/edit}} seke.
+{{fullurl:{{#special:Watchlist}}/edit}} seke.
"Feedback" û alîkarîyê din:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1198,8 +1170,8 @@ Eger tu dixazê lîstêya xwe yê şopandinê biguherînê, li
bi [[User:$2|$2]] ([[User talk:$2|guftûgo]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|guftûgo]]).',
-'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".",
+'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
'rollback-success' => 'Guherandina $1 şondakir; dîsa guharte verzyona $2.',
# Protect
@@ -1218,7 +1190,7 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|guftûgo]]).',
'protect-level-autoconfirmed' => 'Bikarhênerên neqeydkirî astengbike',
'protect-level-sysop' => 'Bes koordînatoran (admînan)',
'protect-expiring' => 'heta rojê $1 (UTC)',
-'protect-expiry-options' => '1 seet:1 hour,1 roj:1 day,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,6 mihe:6 months,1 sal:1 year,ji her demê ra:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 seet:1 hour,1 roj:1 day,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,6 mihe:6 months,1 sal:1 year,ji her demê ra:infinite',
'restriction-type' => 'Destûr:',
# Restrictions (nouns)
@@ -1272,6 +1244,9 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
'sp-contributions-newbies' => 'Bes beşdarîyên bikarhênerê nû pêşêkê',
'sp-contributions-newbies-sub' => 'Ji bikarhênerên nû re',
'sp-contributions-blocklog' => 'Reşahîya astengkirinê',
+'sp-contributions-deleted' => 'Guherandinên bikarhênerekî yê jêbirî',
+'sp-contributions-talk' => 'Nîqaş',
+'sp-contributions-userrights' => 'Îdarekirina mafên bikarhêneran',
'sp-contributions-search' => 'Li beşdarîyan bigere',
'sp-contributions-username' => 'Adresê IP ya navî bikarhêner:',
'sp-contributions-submit' => 'Lêbigere',
@@ -1320,7 +1295,7 @@ Sedemekê binivîse!',
'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
'ipbsubmit' => 'Vê bikarhêner asteng bike',
'ipbother' => 'demekî din',
-'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
'ipbotheroption' => 'yên din',
'ipbotherreason' => 'Sedemekî din',
'ipbhidename' => 'Navî bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
@@ -1345,7 +1320,7 @@ Sedemekê binivîse!',
'ipblocklist-submit' => 'Lêbigere',
'blocklistline' => '$1, $2 $3 asteng kir ($4)',
'infiniteblock' => 'ji her demê ra',
-'expiringblock' => 'heta $1',
+'expiringblock' => 'heta $1 $2',
'anononlyblock' => 'bes kesên netên zanîn',
'noautoblockblock' => 'astengkirina otomatîk hatîye temirandin',
'createaccountblock' => "çêkirina account'an hatîye qedexekirin",
@@ -1398,7 +1373,7 @@ da bikarî navê wê rûpelê biguherînî.',
'move-watch' => 'Vê rûpelê bişopîne',
'movepagebtn' => 'Vê rûpelê bigerîne',
'pagemovedsub' => 'Gerandin serkeftî',
-'movepage-moved' => '\'\'\'"$1" çû cihê "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" çû cihê "$2"\'\'\'',
'movepage-moved-noredirect' => "Redirect'ek nehate çêkirin",
'articleexists' => 'Rûpela bi vî navî heye, an navê ku te hilbijart derbas nabe. Navekî din hilbijêre.',
'cantmove-titleprotected' => 'Tu nikanê vê rûpelê bervê vê cihê bigerînê ji ber ku sernava nuh tê parastin ji bo çêkirinê',
@@ -1563,6 +1538,10 @@ if (wgUserLanguage == "ku-arab")
'mw_math_modern' => "Baştir e ji browser'ên nuhtir",
'mw_math_mathml' => 'MathML eger bibe (ceribandin)',
+# Math errors
+'math_unknown_error' => 'şaşbûnekî nezanîn',
+'math_image_error' => 'Wêşandana PNG nemeşî',
+
# Patrolling
'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşanbide',
@@ -1694,7 +1673,7 @@ Xêra xwe zanibe ku tu bi rastî dixwazê vê rûpelê dîsa çêkê",
'watchlisttools-edit' => 'Lîsteya şopandinê bibîne û biguherîne',
# Special:Version
-'version' => 'Verzîyon', # Not used as normal message but as header for the special page itself
+'version' => 'Verzîyon',
'version-other' => 'yên din',
# Special:FilePath
diff --git a/languages/messages/MessagesKv.php b/languages/messages/MessagesKv.php
index 191f21c4..188cf0f4 100644
--- a/languages/messages/MessagesKv.php
+++ b/languages/messages/MessagesKv.php
@@ -48,9 +48,11 @@ $messages = array(
'december-gen' => 'ӧшым',
'cancel' => 'Дугӧдны',
+'mytalk' => 'Сёрнитӧм лист бокӧй',
+
+# Cologne Blue skin
'qbfind' => 'Корсьысьӧм',
'qbedit' => 'Веськӧдны',
-'mytalk' => 'Сёрнитӧм лист бокӧй',
'search' => 'Корсьысьӧм',
'searchbutton' => 'Аддзыны',
diff --git a/languages/messages/MessagesKw.php b/languages/messages/MessagesKw.php
index ab09bd73..cb774e14 100644
--- a/languages/messages/MessagesKw.php
+++ b/languages/messages/MessagesKw.php
@@ -15,6 +15,69 @@
* @author Nicky.ker
*/
+$namespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Arbennek',
+ NS_TALK => 'Keskows',
+ NS_USER => 'Devnydhyer',
+ NS_USER_TALK => 'Keskows_Devnydhyer',
+ NS_PROJECT_TALK => 'Keskows_$1',
+ NS_FILE => 'Restren',
+ NS_FILE_TALK => 'Keskows_Restren',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Keskows_MediaWiki',
+ NS_TEMPLATE => 'Skantlyn',
+ NS_TEMPLATE_TALK => 'Keskows_Skantlyn',
+ NS_HELP => 'Gweres',
+ NS_HELP_TALK => 'Keskows_Gweres',
+ NS_CATEGORY => 'Klass',
+ NS_CATEGORY_TALK => 'Keskows_Klass',
+);
+
+$namespaceAliases = array(
+ 'Arbednek' => NS_SPECIAL,
+ 'Cows' => NS_TALK,
+ 'Kescows' => NS_TALK,
+ 'Cows_Devnydhyer' => NS_USER_TALK,
+ 'Kescows_Devnydhyer' => NS_USER_TALK,
+ 'Cows_$1' => NS_PROJECT_TALK,
+ 'Kescows_$1' => NS_PROJECT_TALK,
+ 'Cows_Restren' => NS_FILE_TALK,
+ 'Kescows_Restren' => NS_FILE_TALK,
+ 'Cows_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Cows_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Cows_Scantlyn' => NS_TEMPLATE_TALK,
+ 'Scantlyn' => NS_TEMPLATE,
+ 'Kescows_Scantlyn' => NS_TEMPLATE_TALK,
+ 'Cows_Gweres' => NS_HELP_TALK,
+ 'Kescows_Gweres' => NS_HELP_TALK,
+ 'Cows_Class' => NS_CATEGORY_TALK,
+ 'Class' => NS_CATEGORY,
+ 'Kescows_Class' => NS_CATEGORY_TALK,
+);
+
+$specialPageAliases = array(
+ 'Watchlist' => array( 'Rol golyas' ),
+ 'Recentchanges' => array( 'Chanjyow a-dhiwedhes' ),
+ 'Upload' => array( 'Ughkarga' ),
+ 'Randompage' => array( 'FolenDreJons' ),
+ 'Allpages' => array( 'OllFolennow' ),
+ 'Specialpages' => array( 'FolennowArbennek' ),
+ 'Contributions' => array( 'Kevrohow' ),
+ 'Emailuser' => array( 'EbostyaDevnydhyer' ),
+ 'Movepage' => array( 'RemovyaFolen' ),
+ 'Categories' => array( 'Klassys' ),
+ 'Export' => array( 'Esperthi' ),
+ 'Version' => array( 'Versyon' ),
+ 'Allmessages' => array( 'OllMessajow' ),
+ 'Blockip' => array( 'Let' ),
+ 'Import' => array( 'Ymperthi' ),
+ 'Mypage' => array( 'OwFolen' ),
+ 'Mytalk' => array( 'OwHows' ),
+ 'Mycontributions' => array( 'OwHevrohow' ),
+ 'Search' => array( 'Hwilans' ),
+);
+
$messages = array(
# User preference toggles
'tog-hideminor' => 'Kudha chanjyow bian yn chanjyow a-dhiwedhes',
@@ -79,26 +142,49 @@ $messages = array(
'subcategories' => 'Is-klassys',
'category-media-header' => 'Media y\'n klass "$1"',
'hidden-categories' => '{{PLURAL:$1|Klass kovys|Klass kovys}}',
-'hidden-category-category' => 'Classys covys', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Classys covys',
'listingcontinuesabbrev' => 'pes.',
-'about' => 'A-dro dhe',
-'cancel' => 'Hedhi',
+'about' => 'A-dro dhe',
+'cancel' => 'Hedhi',
+'moredotdotdot' => 'Moy...',
+'mypage' => 'Ow folen',
+'mytalk' => 'Ow hows',
+'anontalk' => 'Keskows rag an trigva IP-ma',
+'navigation' => 'Lewyans',
+'and' => '&#32;ha(g)',
+
+# Cologne Blue skin
'qbfind' => 'Hwila',
'qbbrowse' => 'Peuri',
'qbedit' => 'Chanjya',
'qbpageoptions' => 'An folen ma',
'qbmyoptions' => 'Ow folennow',
'qbspecialpages' => 'Folennow arbennek',
-'moredotdotdot' => 'Moy...',
-'mypage' => 'Ow folen',
-'mytalk' => 'Ow hows',
-'anontalk' => 'Keskows rag an trigva IP-ma',
-'navigation' => 'Lewyans',
-'and' => '&#32;ha(g)',
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+# Vector skin
+'vector-action-addsection' => 'Keworra mater',
+'vector-action-delete' => 'Dilea',
+'vector-action-move' => 'Gwaya',
+'vector-action-protect' => 'Difres',
+'vector-action-undelete' => 'Disdhilea',
+'vector-action-unprotect' => 'Disdhifres',
+'vector-namespace-category' => 'Klass',
+'vector-namespace-help' => 'Gweres',
+'vector-namespace-image' => 'Restren',
+'vector-namespace-main' => 'Folen',
+'vector-namespace-media' => 'Folen media',
+'vector-namespace-mediawiki' => 'Messaj',
+'vector-namespace-project' => 'Folen an towl',
+'vector-namespace-special' => 'Folen arbennek',
+'vector-namespace-talk' => 'Keskows',
+'vector-namespace-template' => 'Skantlyn',
+'vector-namespace-user' => 'Folen devnydhyer',
+'vector-view-create' => 'Gwruthyl',
+'vector-view-edit' => 'Chanjya',
+'vector-view-history' => 'Gweles istori an folen',
+'vector-view-view' => 'Redya',
+'vector-view-viewsource' => 'Gweles pennfenten',
'errorpagetitle' => 'Gwall',
'tagline' => 'Dhyworth {{SITENAME}}',
@@ -143,7 +229,7 @@ $messages = array(
'categorypage' => 'Gweles folen an klass',
'viewtalkpage' => 'Gweles an keskows',
'otherlanguages' => 'Yethow erel',
-'lastmodifiedat' => 'An folen-ma a veu kens chanjys an $1, dhe $2.', # $1 date, $2 time
+'lastmodifiedat' => 'An folen-ma a veu kens chanjys an $1, dhe $2.',
'jumpto' => 'Lamma dhe:',
'jumptonavigation' => 'lewyans',
'jumptosearch' => 'hwilans',
@@ -152,7 +238,6 @@ $messages = array(
'aboutsite' => 'A-dro dhe {{SITENAME}}',
'aboutpage' => 'Project:Derivadow',
'copyright' => 'Kavadow yw an dalgh yn-dann $1.',
-'copyrightpagename' => '{{SITENAME}} gwirbryntyans',
'copyrightpage' => '{{ns:project}}:Gwirbryntyansow',
'currentevents' => 'Darvosow a-lemmyn',
'currentevents-url' => 'Project:Darvosow a-lemmyn',
@@ -205,8 +290,6 @@ $messages = array(
'viewsourcefor' => 'rag $1',
# Login and logout pages
-'logouttitle' => 'Digelmy devnydhyer',
-'loginpagetitle' => 'Omgelmy devnydhyer',
'yourname' => 'Hanow-usyer:',
'yourpassword' => 'Ger-tremena:',
'yourpasswordagain' => 'Jynnskrifa agas ger-tremena arta:',
@@ -224,16 +307,6 @@ $messages = array(
'gotaccount' => "Eus akont genowgh seulabrys? '''$1'''.",
'gotaccountlink' => 'Omgelmy',
'createaccountmail' => 'dre e-bost',
-'youremail' => 'E-bost:',
-'username' => 'Hanow-usyer:',
-'uid' => 'ID devnydhyer:',
-'prefs-memberingroups' => "Esel a'n {{PLURAL:$1|bagas|bagasow}}:",
-'yourrealname' => 'Hanow gwir:',
-'yourlanguage' => 'Yeth:',
-'yourgender' => 'Reyth:',
-'gender-male' => 'Gorow',
-'gender-female' => 'Benow',
-'email' => 'E-bost',
'mailmypassword' => 'E-bostya ger-tremena nowyth',
'loginlanguagelabel' => 'Yeth: $1',
@@ -300,35 +373,20 @@ $messages = array(
'history-title' => 'Istori an folen "$1"',
'lineno' => 'Linen $1:',
'editundo' => 'diswul',
-'diff-movedto' => 'movys dhe $1',
-'diff-added' => '$1 keworrys',
-'diff-removed' => '$1 dileys',
-'diff-width' => 'les',
-'diff-height' => 'ughelder',
-'diff-b' => "'''tew'''",
-'diff-strong' => "'''crev'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''bras'''",
-'diff-sub' => "'''isscrif'''",
-'diff-sup' => "'''gorscrif'''",
-'diff-strike' => "'''treuslinys'''",
# Search results
'searchresults' => 'Sewyansow an hwilans',
'searchresults-title' => 'Sewyansow an hwilans rag "$1"',
'searchresulttext' => 'Rag derivadow pella war hwila yn {{SITENAME}}, gwra gweles [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Hwi a wrug hwilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|oll folennow ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|oll folennow ow kevrenna dhe "$1"]])',
-'noexactmatch' => "'''Nag eus folen henwys \"\$1\".'''
-Whi a ell [[:\$1|gruthyl an folen-ma]].",
-'noexactmatch-nocreate' => "'''Nag eus folen henwys \"\$1\".'''",
-'prevn' => 'kyns $1',
-'nextn' => 'nessa $1',
-'viewprevnext' => 'Gweles ($1) ($2) ($3)',
+'prevn' => 'kens {{PLURAL:$1|$1}}',
+'nextn' => 'nessa {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Gweles ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Dewisyansow hwilans',
'searchmenu-exists' => "'''Yma folen henwys \"[[:\$1]]\" war an wiki-ma'''",
'searchmenu-new' => "'''Gwruthyl an folen \"[[:\$1]]\" war an wiki-ma!'''",
'searchhelp-url' => 'Help:Gweres',
-'searchprofile-images' => 'Restrednow',
+'searchprofile-images' => 'Liesmedia',
'searchprofile-everything' => 'Puptra',
'searchprofile-advanced' => 'Avoncys',
'searchprofile-articles-tooltip' => 'Hwila yn $1',
@@ -347,29 +405,49 @@ Whi a ell [[:\$1|gruthyl an folen-ma]].",
'powersearch-legend' => 'Hwilans avoncys',
'powersearch-ns' => 'Hwila yn spasys-hanow:',
'powersearch-field' => 'Hwila',
+'powersearch-toggleall' => 'Oll',
# Preferences page
-'preferences' => 'Dewisyansow',
-'mypreferences' => 'Ow dewisyansow',
-'changepassword' => 'Chanjya an ger-tremena',
-'skin' => 'Crohen',
-'prefs-rc' => 'Chanjyow a-dhiwedhes',
-'prefs-watchlist' => 'Rol golyas',
-'prefs-resetpass' => 'Chanjya ger-tremena',
-'saveprefs' => 'Gwitha',
-'searchresultshead' => 'Hwilans',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asi',
-'timezoneregion-atlantic' => 'Keynvor Atlantek',
-'timezoneregion-australia' => 'Awstralya',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Keynvor Eyndek',
-'timezoneregion-pacific' => 'Keynvor Hebask',
-'prefs-searchoptions' => 'Dewisyansow hwilans',
-'files' => 'Restrednow',
+'preferences' => 'Dewisyansow',
+'mypreferences' => 'Ow dewisyansow',
+'changepassword' => 'Chanjya an ger-tremena',
+'prefs-skin' => 'Krohen',
+'prefs-datetime' => 'Dydh hag eur',
+'prefs-rc' => 'Chanjyow a-dhiwedhes',
+'prefs-watchlist' => 'Rol golyas',
+'prefs-resetpass' => 'Chanjya ger-tremena',
+'prefs-email' => 'Dewisyansow e-bost',
+'saveprefs' => 'Gwitha',
+'searchresultshead' => 'Hwilans',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asi',
+'timezoneregion-atlantic' => 'Keynvor Atlantek',
+'timezoneregion-australia' => 'Awstralya',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Keynvor Eyndek',
+'timezoneregion-pacific' => 'Keynvor Hebask',
+'prefs-searchoptions' => 'Dewisyansow hwilans',
+'prefs-files' => 'Restrennow',
+'youremail' => 'E-bost:',
+'username' => 'Hanow-usyer:',
+'uid' => 'ID devnydhyer:',
+'prefs-memberingroups' => "Esel a'n {{PLURAL:$1|bagas|bagasow}}:",
+'yourrealname' => 'Hanow gwir:',
+'yourlanguage' => 'Yeth:',
+'yournick' => 'Hanowskrif nowyth:',
+'yourgender' => 'Reyth:',
+'gender-male' => 'Gorow',
+'gender-female' => 'Benow',
+'email' => 'E-bost',
+'prefs-signature' => 'Sinans',
+'prefs-advancedediting' => 'Dewisyansow avoncys',
+'prefs-advancedrc' => 'Dewisyansow avoncys',
+'prefs-advancedrendering' => 'Dewisyansow avoncys',
+'prefs-advancedsearchoptions' => 'Dewisyansow avoncys',
+'prefs-advancedwatchlist' => 'Dewisyansow avoncys',
# User rights
'userrights-groupsmember' => 'Esel a:',
@@ -408,29 +486,36 @@ Whi a ell [[:\$1|gruthyl an folen-ma]].",
'action-delete' => 'dilea an folen ma',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|chanj|chanj}}',
-'recentchanges' => 'Chanjyow a-dhiwedhes',
-'recentchanges-legend' => 'Dewisyansow an chanjyow a-dhiwedhes',
-'recentchangestext' => "Sewya an chanjyow diwettha eus dhe'n wiki war'n folen-ma.",
-'rclistfrom' => 'Diskwedhes chanjyow nowyth ow talleth a-dhia $1.',
-'rcshowhideminor' => '$1 chanjyow bian',
-'rcshowhidebots' => '$1 botow',
-'rcshowhideliu' => '$1 devnydhoryon omgelmys',
-'rcshowhideanons' => '$1 devnydhyoryon dihanow',
-'rcshowhidemine' => '$1 ow chanjyow',
-'rclinks' => "Diskwedhes an $1 chanj a-dhiwedhes gwres y'n $2 dydh a-dhiwedhes<br />$3",
-'diff' => 'dyffrans',
-'hist' => 'ist',
-'hide' => 'Kudha',
-'show' => 'Diskwedhes',
-'minoreditletter' => 'B',
-'newpageletter' => 'N',
-'boteditletter' => 'bot',
-'newsectionsummary' => '/* $1 */ rann nowyth',
-'rc-enhanced-hide' => 'Kudha manylyon',
+'nchanges' => '$1 {{PLURAL:$1|chanj|chanj}}',
+'recentchanges' => 'Chanjyow a-dhiwedhes',
+'recentchanges-legend' => 'Dewisyansow an chanjyow a-dhiwedhes',
+'recentchangestext' => "Sewya an chanjyow diwettha eus dhe'n wiki war'n folen-ma.",
+'recentchanges-label-legend' => 'Alhwedh: $1.',
+'recentchanges-legend-newpage' => '$1 - folen nowyth',
+'recentchanges-legend-minor' => '$1 - chanj bian',
+'recentchanges-label-minor' => 'Hemm yw chanj bian',
+'recentchanges-legend-bot' => '$1 - chanj gans bot',
+'rclistfrom' => 'Diskwedhes chanjyow nowyth ow talleth a-dhia $1.',
+'rcshowhideminor' => '$1 chanjyow bian',
+'rcshowhidebots' => '$1 botow',
+'rcshowhideliu' => '$1 devnydhoryon omgelmys',
+'rcshowhideanons' => '$1 devnydhyoryon dihanow',
+'rcshowhidemine' => '$1 ow chanjyow',
+'rclinks' => "Diskwedhes an $1 chanj a-dhiwedhes gwres y'n $2 dydh a-dhiwedhes<br />$3",
+'diff' => 'dyffrans',
+'hist' => 'ist',
+'hide' => 'Kudha',
+'show' => 'Diskwedhes',
+'minoreditletter' => 'B',
+'newpageletter' => 'N',
+'boteditletter' => 'bot',
+'newsectionsummary' => '/* $1 */ rann nowyth',
+'rc-enhanced-hide' => 'Kudha manylyon',
# Recent changes linked
'recentchangeslinked' => 'Chanjyow dhe folennow kevahal',
+'recentchangeslinked-feed' => 'Chanjyow dhe folennow kevahal',
+'recentchangeslinked-toolbox' => 'Chanjyow dhe folennow kevahal',
'recentchangeslinked-summary' => "↓ Hemm yw rol a janjyow a-dhiwedhes gwres war folennow kevrennys dhyworth unn folen (po dhe eseli unn glass).
Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
'recentchangeslinked-page' => 'Hanow an folen:',
@@ -451,6 +536,7 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
'listfiles_user' => 'Devnydhyer',
# File description page
+'file-anchor-link' => 'Restren',
'filehist' => 'Istori an folen',
'filehist-deleteall' => 'dilea oll',
'filehist-deleteone' => 'dilea',
@@ -479,8 +565,8 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
# Statistics
'statistics-pages' => 'Folennow',
-'brokenredirects-edit' => '(chanjya)',
-'brokenredirects-delete' => '(dilea)',
+'brokenredirects-edit' => 'chanjya',
+'brokenredirects-delete' => 'dilea',
'withoutinterwiki-submit' => 'Diskwedhes',
@@ -513,6 +599,9 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
# Special:Categories
'categories' => 'Klassys',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'kevrohow',
+
# Special:LinkSearch
'linksearch' => 'Kevrennow a-mes',
'linksearch-ok' => 'Hwila',
@@ -589,6 +678,7 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
'year' => 'A-dhia bledhen (ha moy a-varr):',
'sp-contributions-newbies' => 'Diskwedhes hepken kevrohow an akontow nowyth',
+'sp-contributions-talk' => 'keskows',
'sp-contributions-search' => 'Hwila kevrohow',
'sp-contributions-username' => 'Trigva IP po hanow-usyer:',
'sp-contributions-submit' => 'Hwila',
@@ -625,7 +715,7 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
'newtitle' => 'Dhe titel nowyth:',
'move-watch' => 'Golya an folen-ma',
'movepagebtn' => 'Gwaya an folen',
-'movepage-moved' => '\'\'\'Gwayes yw "$1" war-tu "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Gwayes yw "$1" war-tu "$2"\'\'\'',
'movedto' => 'gwayes yn',
'1movedto2' => '[[$1]] gwayes war-tu [[$2]]',
'movereason' => 'Acheson:',
@@ -649,52 +739,53 @@ Yma folennow eus war dha [[Special:Watchlist|rol a golyas]] yn '''tew'''.",
'import-noarticle' => 'Folen vyth dhe ymperthi!',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Agas folen devnydhyer',
-'tooltip-pt-mytalk' => 'Agas folen gows',
-'tooltip-pt-preferences' => 'Ow dewisyansow',
-'tooltip-pt-watchlist' => 'An rol a folennow esos jy ow kolyas',
-'tooltip-pt-mycontris' => "Rol a'gas kevrohow",
-'tooltip-pt-login' => 'Da via gwell dhis mar teu hag omgelmi, mes nyns yw besi',
-'tooltip-pt-logout' => 'Omdenna',
-'tooltip-ca-talk' => "Dadhelva a-dro dhe'n dalgh",
-'tooltip-ca-edit' => 'Hwi a yll chanjya an folen-ma. Mar pleg, gwrewgh devnydh an boton ragwel kyns gwitha.',
-'tooltip-ca-addsection' => 'Dalleth rann nowyth',
-'tooltip-ca-viewsource' => 'Alhwedhys yw an folen-ma.
+'tooltip-pt-userpage' => 'Agas folen devnydhyer',
+'tooltip-pt-mytalk' => 'Agas folen gows',
+'tooltip-pt-preferences' => 'Ow dewisyansow',
+'tooltip-pt-watchlist' => 'An rol a folennow esos jy ow kolyas',
+'tooltip-pt-mycontris' => "Rol a'gas kevrohow",
+'tooltip-pt-login' => 'Da via gwell dhis mar teu hag omgelmi, mes nyns yw besi',
+'tooltip-pt-logout' => 'Omdenna',
+'tooltip-ca-talk' => "Dadhelva a-dro dhe'n dalgh",
+'tooltip-ca-edit' => 'Hwi a yll chanjya an folen-ma. Mar pleg, gwrewgh devnydh an boton ragwel kyns gwitha.',
+'tooltip-ca-addsection' => 'Dalleth rann nowyth',
+'tooltip-ca-viewsource' => 'Alhwedhys yw an folen-ma.
Ty a ell gweles hy fennfenten.',
-'tooltip-ca-protect' => 'Difres an folen-ma',
-'tooltip-ca-delete' => 'Dilea an folen-ma',
-'tooltip-ca-move' => 'Gwaya an folen-ma',
-'tooltip-ca-watch' => "Keworra an folen-ma dh'agas rol golyas",
-'tooltip-ca-unwatch' => 'Hedhi golyas an folen-ma',
-'tooltip-search' => 'Hwila yn {{SITENAME}}',
-'tooltip-search-fulltext' => "Hwila an tekst-ma y'n folennow",
-'tooltip-n-mainpage' => 'Diskwedhes an pennfolen',
-'tooltip-n-portal' => "A-dro dhe'n ragdres, an pyth a ellys gwul, ple kavos an traow",
-'tooltip-n-recentchanges' => "Rol an chanjyow a-dhiwedhes y'n wiki",
-'tooltip-n-randompage' => 'Karga folen dre jons',
-'tooltip-n-help' => 'Gweres',
-'tooltip-t-whatlinkshere' => 'Rol a bub folennow wiki ow kevrenna bys omma',
-'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes yn folennow eus kevrennys orth an folen-ma',
-'tooltip-t-contributions' => 'Gweles rol kevrohow an devnydhyer-ma',
-'tooltip-t-emailuser' => "Danvon e-bost dhe'n devnydhyer-ma",
-'tooltip-t-upload' => 'Ughkarga restrennow',
-'tooltip-t-specialpages' => 'Rol a bub folen arbennek',
-'tooltip-t-print' => 'Versyon pryntyadow an folen-ma',
-'tooltip-t-permalink' => "Kevren fast dhe'n versyon-ma an folen",
-'tooltip-ca-nstab-main' => 'Gweles an folen dalgh',
-'tooltip-ca-nstab-user' => 'Gweles an folen devnydhyer',
-'tooltip-ca-nstab-special' => 'Hemm yw folen arbennek, ny ellowgh hwi chanjya an folen hy honan.',
-'tooltip-ca-nstab-project' => 'Gweles folen an wiki',
-'tooltip-ca-nstab-image' => 'Gweles folen an restren',
-'tooltip-ca-nstab-template' => 'Gweles an skantlyn',
-'tooltip-ca-nstab-category' => 'Gweles folen an klass',
-'tooltip-save' => 'Gwitha agas chanjyow',
-'tooltip-preview' => 'Ragweles dha janjyow; gwra usya hemma kens gwitha mar pleg!',
-'tooltip-diff' => "Diskwedhes an chanjyow eus gwres genes dhe'n tekst",
+'tooltip-ca-protect' => 'Difres an folen-ma',
+'tooltip-ca-delete' => 'Dilea an folen-ma',
+'tooltip-ca-move' => 'Gwaya an folen-ma',
+'tooltip-ca-watch' => "Keworra an folen-ma dh'agas rol golyas",
+'tooltip-ca-unwatch' => 'Hedhi golyas an folen-ma',
+'tooltip-search' => 'Hwila yn {{SITENAME}}',
+'tooltip-search-fulltext' => "Hwila an tekst-ma y'n folennow",
+'tooltip-n-mainpage' => 'Diskwedhes an pennfolen',
+'tooltip-n-mainpage-description' => 'Godriga an pennfolen',
+'tooltip-n-portal' => "A-dro dhe'n ragdres, an pyth a ellys gwul, ple kavos an traow",
+'tooltip-n-recentchanges' => "Rol an chanjyow a-dhiwedhes y'n wiki",
+'tooltip-n-randompage' => 'Karga folen dre jons',
+'tooltip-n-help' => 'Gweres',
+'tooltip-t-whatlinkshere' => 'Rol a bub folennow wiki ow kevrenna bys omma',
+'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes yn folennow eus kevrennys orth an folen-ma',
+'tooltip-t-contributions' => 'Gweles rol kevrohow an devnydhyer-ma',
+'tooltip-t-emailuser' => "Danvon e-bost dhe'n devnydhyer-ma",
+'tooltip-t-upload' => 'Ughkarga restrennow',
+'tooltip-t-specialpages' => 'Rol a bub folen arbennek',
+'tooltip-t-print' => 'Versyon pryntyadow an folen-ma',
+'tooltip-t-permalink' => "Kevren fast dhe'n versyon-ma an folen",
+'tooltip-ca-nstab-main' => 'Gweles an folen dalgh',
+'tooltip-ca-nstab-user' => 'Gweles an folen devnydhyer',
+'tooltip-ca-nstab-special' => 'Hemm yw folen arbennek, ny ellowgh hwi chanjya an folen hy honan.',
+'tooltip-ca-nstab-project' => 'Gweles folen an wiki',
+'tooltip-ca-nstab-image' => 'Gweles folen an restren',
+'tooltip-ca-nstab-template' => 'Gweles an skantlyn',
+'tooltip-ca-nstab-category' => 'Gweles folen an klass',
+'tooltip-save' => 'Gwitha agas chanjyow',
+'tooltip-preview' => 'Ragweles dha janjyow; gwra usya hemma kens gwitha mar pleg!',
+'tooltip-diff' => "Diskwedhes an chanjyow eus gwres genes dhe'n tekst",
# Attribution
'siteuser' => 'devnydhyer {{SITENAME}} $1',
-'lastmodifiedatby' => 'An folen-ma a veu kens chanjys dhe $2, $1 gans $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'An folen-ma a veu kens chanjys dhe $2, $1 gans $3.',
'siteusers' => '{{PLURAL:$2|devnydhyer|devnydhyoryon}} {{SITENAME}} $1',
# Browsing diffs
@@ -746,9 +837,9 @@ Ty a ell gweles hy fennfenten.',
'watchlisttools-raw' => 'Chanjya restren an rol golyas',
# Special:Version
-'version' => 'Versyon', # Not used as normal message but as header for the special page itself
+'version' => 'Versyon',
'version-other' => 'Aral',
-'version-version' => 'Versyon',
+'version-version' => '(Versyon $1)',
# Special:FilePath
'filepath-page' => 'Restren:',
diff --git a/languages/messages/MessagesKy.php b/languages/messages/MessagesKy.php
index 7846fcc8..232525b0 100644
--- a/languages/messages/MessagesKy.php
+++ b/languages/messages/MessagesKy.php
@@ -49,16 +49,18 @@ $messages = array(
'nov' => 'Ноя',
'dec' => 'Дек',
-'about' => 'Тууралуу',
-'cancel' => 'Жокко чыгаруу',
+'about' => 'Тууралуу',
+'cancel' => 'Жокко чыгаруу',
+'mypage' => 'Барагым',
+'mytalk' => 'Маегим',
+'navigation' => 'Багыттоо',
+'and' => '&#32;жана',
+
+# Cologne Blue skin
'qbedit' => 'Оңдоо',
'qbpageoptions' => 'Бул барак',
'qbpageinfo' => 'Контекст',
'qbmyoptions' => 'Барактарым',
-'mypage' => 'Барагым',
-'mytalk' => 'Маегим',
-'navigation' => 'Багыттоо',
-'and' => '&#32;жана',
'errorpagetitle' => 'Жаңылыш',
'tagline' => '{{SITENAME}} дан',
@@ -85,7 +87,6 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} тууралуу',
'aboutpage' => 'Project:тууралуу',
-'copyrightpagename' => '{{SITENAME}} автордук укугу',
'copyrightpage' => '{{ns:project}}:Автордук укуктар',
'currentevents' => 'Учурдагы окуялар',
'currentevents-url' => 'Project:Учурдагы окуялар',
@@ -129,13 +130,6 @@ $messages = array(
'logout' => 'Чыгуу',
'userlogout' => 'Чыгуу',
'createaccountmail' => 'Электрондук дарек боюнча',
-'youremail' => 'Электрондук почта:',
-'username' => 'Колдонуучунун аты:',
-'uid' => 'Колдонуучунун ID си:',
-'yourrealname' => 'Анык атыңыз:',
-'yourlanguage' => 'Тил:',
-'yourvariant' => 'Вариант:',
-'yournick' => 'Такма атыңыз:',
'wrongpassword' => 'Ката сырсөз киргизилди. Кайтадан аракет кылып көрүңүз.',
'wrongpasswordempty' => 'Сырсөз киргизилген жок. Кайтадан аракет кылып көрүңүз.',
'mailmypassword' => 'Сырсөздү электрондук дарегиме жибер',
@@ -159,9 +153,8 @@ $messages = array(
'yourdiff' => 'Айырмалар',
# History pages
-'next' => 'кийинки',
-'last' => 'соңку',
-'deletedrev' => '[өчүрүлдү]',
+'next' => 'кийинки',
+'last' => 'соңку',
# Diffs
'difference' => '(Оңдоолордун айырмасы)',
@@ -170,18 +163,23 @@ $messages = array(
'powersearch' => 'Издөө',
# Preferences page
-'preferences' => 'Түзөө',
-'changepassword' => 'Сырсөздү өзгөртүү',
-'dateformat' => 'Датанын форматы',
-'datetime' => 'Дата жана убакыт',
-'math_unknown_error' => 'белгисиз ката',
-'prefs-rc' => 'Соңку өзгөрүүлөр',
-'prefs-watchlist' => 'Байкоо тизме',
-'saveprefs' => 'Сактап кой',
-'textboxsize' => 'Оңдоо',
-'searchresultshead' => 'Издөө',
-'localtime' => 'Жергиликтүү убакыт',
-'files' => 'Файлдар',
+'preferences' => 'Түзөө',
+'changepassword' => 'Сырсөздү өзгөртүү',
+'prefs-datetime' => 'Дата жана убакыт',
+'prefs-rc' => 'Соңку өзгөрүүлөр',
+'prefs-watchlist' => 'Байкоо тизме',
+'saveprefs' => 'Сактап кой',
+'prefs-editing' => 'Оңдоо',
+'searchresultshead' => 'Издөө',
+'localtime' => 'Жергиликтүү убакыт',
+'prefs-files' => 'Файлдар',
+'youremail' => 'Электрондук почта:',
+'username' => 'Колдонуучунун аты:',
+'uid' => 'Колдонуучунун ID си:',
+'yourrealname' => 'Анык атыңыз:',
+'yourlanguage' => 'Тил:',
+'yourvariant' => 'Вариант:',
+'yournick' => 'Такма атыңыз:',
# Groups
'group' => 'Топ:',
@@ -196,7 +194,9 @@ $messages = array(
'newpageletter' => 'Ж',
# Recent changes linked
-'recentchangeslinked' => 'Тиешелүү өзгөрүүлөр',
+'recentchangeslinked' => 'Тиешелүү өзгөрүүлөр',
+'recentchangeslinked-feed' => 'Тиешелүү өзгөрүүлөр',
+'recentchangeslinked-toolbox' => 'Тиешелүү өзгөрүүлөр',
# Upload
'upload' => 'Файл жүктөө',
@@ -206,13 +206,15 @@ $messages = array(
'uploadedfiles' => 'Жүктөлгөн файлдар',
'savefile' => 'Файлды сактап кой',
-'license' => 'Лицензиялоо:',
+'license' => 'Лицензиялоо:',
+'license-header' => 'Лицензиялоо:',
# Special:ListFiles
'listfiles' => 'Файлдар тизмеси',
# File description page
-'imagelinks' => 'Шилтемелер',
+'file-anchor-link' => 'Файл',
+'imagelinks' => 'Шилтемелер',
# Unused templates
'unusedtemplates' => 'Колдонулбаган нускалар',
@@ -296,14 +298,16 @@ $messages = array(
'delete_and_move_confirm' => 'Ооба, бул баракты өчүр',
# Namespace 8 related
-'allmessages' => 'Система билдирүүлөрү',
-'allmessagesname' => 'Аталышы',
-'allmessagescurrent' => 'Учурдагы текст',
-'allmessagesmodified' => 'Өзгөрүүгө учурагандарды гана көрсөт',
+'allmessages' => 'Система билдирүүлөрү',
+'allmessagesname' => 'Аталышы',
+'allmessagescurrent' => 'Учурдагы текст',
# Attribution
'others' => 'башкалар',
+# Math errors
+'math_unknown_error' => 'белгисиз ката',
+
# Browsing diffs
'nextdiff' => 'Кийинки айырма →',
@@ -330,7 +334,7 @@ $messages = array(
'confirmemail_loggedin' => 'Электрондук дарегиңиз ырасталды.',
# Special:Version
-'version' => 'Версия', # Not used as normal message but as header for the special page itself
+'version' => 'Версия',
# Special:SpecialPages
'specialpages' => 'Атайын барактар',
diff --git a/languages/messages/MessagesLa.php b/languages/messages/MessagesLa.php
index 723e1533..87070c00 100644
--- a/languages/messages/MessagesLa.php
+++ b/languages/messages/MessagesLa.php
@@ -11,6 +11,7 @@
* @author Dferg
* @author Esteban97
* @author LeighvsOptimvsMaximvs
+ * @author McDutchie
* @author Omnipaedista
* @author OrbiliusMagister
* @author Ornil
@@ -180,6 +181,7 @@ $messages = array(
'tog-enotifminoredits' => 'Mittere mihi litteras electronicas etiam pro recensionibus minoribus',
'tog-enotifrevealaddr' => 'Monstrare inscriptio mea electronica in nuntiis notificantibus',
'tog-shownumberswatching' => 'Numerum usorum custodientium monstrare',
+'tog-oldsig' => 'Praevisum subscriptionis ad tempus adhibitae:',
'tog-fancysig' => 'Subscriptio vicitext (sine nexu automatico)',
'tog-externaleditor' => 'Utere editore externo semper',
'tog-externaldiff' => 'Utere dissimilitudine externa semper',
@@ -259,7 +261,7 @@ $messages = array(
'category-media-header' => 'Media in categoria "$1"',
'category-empty' => "''Huic categoriae non sunt paginae vel fasciculi.''",
'hidden-categories' => '{{PLURAL:$1|Categoria celata|Categoriae celatae}}',
-'hidden-category-category' => 'Categoriae celatae', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categoriae celatae',
'category-subcat-count' => '{{PLURAL:$2|Huic categoriae est solum una subcategoria.|Huic categoriae {{PLURAL:$1|est haec subcategoria|sunt hae $1 subcategoriae}} ex omnino $2 subcategoriis.}}',
'category-subcat-count-limited' => 'Huic categoriae {{PLURAL:$1|est haec subcategoria|sunt hae $1 subcategoriae}}.',
'category-article-count' => '{{PLURAL:$2|Huic categoriae est solum una pagina.|Huic categoriae {{PLURAL:$1|est haec pagina|sunt hae $1 paginae}} ex omnino $2 paginis.}}',
@@ -268,10 +270,18 @@ $messages = array(
'category-file-count-limited' => 'Huic categoriae {{PLURAL:$1|est hic fasciculus|sunt hi $1 fasciculi}}.',
'listingcontinuesabbrev' => 'cont.',
-'about' => 'De hoc',
-'article' => 'Pagina contenta continens',
-'newwindow' => '(in fenestra nova aperietur)',
-'cancel' => 'Abrogare',
+'about' => 'De hoc',
+'article' => 'Pagina contenta continens',
+'newwindow' => '(in fenestra nova aperietur)',
+'cancel' => 'Abrogare',
+'moredotdotdot' => 'Plus...',
+'mypage' => 'Pagina mea',
+'mytalk' => 'Disputatio mea',
+'anontalk' => 'Disputatio huius IP',
+'navigation' => 'Navigatio',
+'and' => '&#32;et',
+
+# Cologne Blue skin
'qbfind' => 'Invenire',
'qbbrowse' => 'Perspicere',
'qbedit' => 'Recensere',
@@ -279,15 +289,35 @@ $messages = array(
'qbpageinfo' => 'Contextus',
'qbmyoptions' => 'Paginae meae',
'qbspecialpages' => 'Paginae speciales',
-'moredotdotdot' => 'Plus...',
-'mypage' => 'Pagina mea',
-'mytalk' => 'Disputatio mea',
-'anontalk' => 'Disputatio huius IP',
-'navigation' => 'Navigatio',
-'and' => '&#32;et',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Quaestiones frequentes',
+'faqpage' => 'Project:Quaestiones frequentes',
+
+# Vector skin
+'vector-action-addsection' => 'Partem novam addere',
+'vector-action-delete' => 'Delere',
+'vector-action-move' => 'Movere',
+'vector-action-protect' => 'Protegere',
+'vector-action-undelete' => 'Restituere',
+'vector-action-unprotect' => 'Deprotegere',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Auxilium',
+'vector-namespace-image' => 'Fasciculus',
+'vector-namespace-main' => 'Res',
+'vector-namespace-media' => 'Media',
+'vector-namespace-mediawiki' => 'Nuntium',
+'vector-namespace-project' => 'Consilium',
+'vector-namespace-special' => 'Pagina specialis',
+'vector-namespace-talk' => 'Disputatio',
+'vector-namespace-template' => 'Formula',
+'vector-namespace-user' => 'Pagina usoris',
+'vector-view-create' => 'Creare',
+'vector-view-edit' => 'Recensere',
+'vector-view-history' => 'Historiam inspicere',
+'vector-view-view' => 'Legere',
+'vector-view-viewsource' => 'Fontem inspicere',
+'actions' => 'Actiones',
+'namespaces' => 'Spatia nominalia',
+'variants' => 'Variantes',
'errorpagetitle' => 'Erratum',
'returnto' => 'Redire ad $1.',
@@ -336,7 +366,7 @@ $messages = array(
'otherlanguages' => 'Linguis aliis',
'redirectedfrom' => '(Redirectum de $1)',
'redirectpagesub' => 'Pagina redirectionis',
-'lastmodifiedat' => 'Ultima mutatio: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultima mutatio: $2, $1.',
'viewcount' => 'Haec pagina iam vista est {{PLURAL:$1|semel|$1 vices}}.',
'protectedpage' => 'Pagina protecta',
'jumpto' => 'Salire ad:',
@@ -347,7 +377,6 @@ $messages = array(
'aboutsite' => 'De {{grammar:ablative|{{SITENAME}}}}',
'aboutpage' => 'Project:De {{GRAMMAR:ablative|{{SITENAME}}}}',
'copyright' => 'Res ad manum sub $1.',
-'copyrightpagename' => '{{grammar:genitive|{{SITENAME}}}} verba privata',
'copyrightpage' => '{{ns:project}}:Verba privata',
'currentevents' => 'Novissima',
'currentevents-url' => 'Project:Novissima',
@@ -355,8 +384,6 @@ $messages = array(
'disclaimerpage' => 'Project:Repudiationes',
'edithelp' => 'Opes recensendi',
'edithelppage' => 'Help:De recensendo',
-'faq' => 'Quaestiones frequentes',
-'faqpage' => 'Project:Quaestiones frequentes',
'helppage' => 'Help:Adiutatum',
'mainpage' => 'Pagina prima',
'mainpage-description' => 'Pagina prima',
@@ -429,9 +456,6 @@ Inquisitio basis datorum ultime apparata erat:
"$1"
ex functionis "$2".
Basis datorum erratum reddidit "$3: $4"',
-'noconnect' => '{{SITENAME}} per aerumnas technicas agit, et server basis datorum invenire non potest.<br />
-$1',
-'cachederror' => 'Quae sequuntur sunt ex exemplo conditivo paginae quaesitae, fortasse non recente.',
'readonly' => 'Basis datorum obstructa',
'missingarticle-rev' => '(numerus emendationis: $1)',
'missingarticle-diff' => '(Diss: $1, $2)',
@@ -443,7 +467,8 @@ $1',
'filenotfound' => 'Non potuit fasciculus "$1" inveniri.',
'unexpected' => 'Valor improvisus: "$1"="$2".',
'badarticleerror' => 'Haec actio non perfici potest in hac pagina.',
-'cannotdelete' => 'Pagina vel fasciculus deleri non potuit. (Fortasse usor alius iam deleverat.)',
+'cannotdelete' => 'Pagina vel fasciculus "$1" deleri non potuit.
+Fortasse usor alius iam deleverat.',
'badtitle' => 'Titulus malus',
'badtitletext' => 'Nomen paginae quaestae fuit invalidum, vacuum, aut praeverbium interlingualem vel intervicialem habuit. Fortasse insunt una aut plus litterarum quae in titulis non possunt inscribier.',
'wrong_wfQuery_params' => 'Parametri incorrectae pro wfQuery()<br />
@@ -468,7 +493,6 @@ Ratio data est "\'\'$2\'\'".',
'virus-unknownscanner' => 'antivirus incognitus:',
# Login and logout pages
-'logouttitle' => 'Conventum concludere',
'logouttext' => "'''Conventum tuum conclusum est.'''
Ignote continues {{grammar:ablative|{{SITENAME}}}} uti, aut conventum novum vel sub eodem vel novo nomine [[Special:UserLogin|aperias]].
@@ -476,7 +500,6 @@ Nota bene paginas fortasse videantur quasi tuum conventum esset apertum, priusqu
'welcomecreation' => '== Salve, $1! ==
Ratio tua iam creata est.
Noli oblivisci [[Special:Preferences|praeferentias tuas]] apud {{grammar:accusative|{{SITENAME}}}} mutare.',
-'loginpagetitle' => 'Conventum aperire',
'yourname' => 'Nomen usoris:',
'yourpassword' => 'Tessera:',
'yourpasswordagain' => 'Tesseram adfirmare:',
@@ -498,27 +521,7 @@ Noli oblivisci [[Special:Preferences|praeferentias tuas]] apud {{grammar:accusat
'badretype' => 'Tesserae quas scripsisti inter se non congruunt.',
'userexists' => 'Nomen usoris quod selegisti iam est.
Nomen usoris alium selige.',
-'youremail' => 'Inscriptio electronica:',
-'username' => 'Nomen usoris:',
-'uid' => 'ID usoris:',
-'yourrealname' => 'Nomen verum:',
-'yourlanguage' => 'Lingua:',
-'yourvariant' => 'Differentia:',
-'yournick' => 'Subscriptio:',
-'badsig' => 'Subscriptio cruda non est valida; scrutina affixa HTML.',
-'badsiglength' => 'Subscriptio tua nimis longa est.
-{{PLURAL:$1|Una littera est|$1 litterae sunt}} longitudo maxima.',
-'yourgender' => 'Sexus:',
-'gender-unknown' => 'Indefinitus',
-'gender-male' => 'Mas',
-'gender-female' => 'Femina',
-'email' => 'Litterae electronicae',
-'prefs-help-realname' => 'Nomen verum non necesse est.
-Si vis id dare, opera tua tibi ascribentur.',
'loginerror' => 'Error factus est in aperiendo conventum',
-'prefs-help-email' => 'Inscriptio electronica non necesse est, sed sinit tesseram novam tibi mitti si eae oblitus es.
-Si vis, sinit etiam aliis tecum loqui per tuam paginam usoris vel disputationis, nisi te reveles.',
-'prefs-help-email-required' => 'Inscriptio electronica necesse est.',
'nocookiesnew' => "Ratio usoris creata est, sed conventum non apertum est. {{SITENAME}} ''Cookies'' utitur in usorum conventa aperiendo. Cookies tua debiles sunt. Eis potestatem fac, tum conventum aperi cum nomine usoris tesseraque tua nova.",
'nocookieslogin' => "{{SITENAME}} ''Cookies'' utitur in usorum conventa aperiendo. Cookies tua debiles sunt. Eis potestatem fac, tum conare denuo.",
'noname' => 'Nominem usoris ratum non designavisti.',
@@ -566,7 +569,6 @@ Hunc nuntium ignorare potes, si nolis hac ratione uti.',
'resetpass-no-info' => 'Necesse est conventum aperire ad hanc paginam adhibendum.',
'resetpass-submit-loggedin' => 'Tesseram mutare',
'resetpass-temp-password' => 'Tessera temporaria:',
-'resetpass-comment' => 'Causa reperscriptationis tesserae:',
# Edit page toolbar
'bold_sample' => 'Litterae pingues',
@@ -635,7 +637,6 @@ Locus IP tuus temporarius $3 est et numerus obstructionis tuus est #$5. Quaesumu
'blockededitsource' => "Textus '''tuarum emendationum''' in '''$1''' subter monstratur:",
'whitelistedittitle' => 'Conventum aperiendum ut recenseas',
'whitelistedittext' => 'Necesse est tibi $1 priusquam paginas recenseas.',
-'confirmedittitle' => 'Adfirmanda est inscriptio tua electronica prisuquam recenseas',
'confirmedittext' => 'Tua inscriptio electronica est adfirmanda priusquam paginas recenseas. Quaesumus eam selige et adfirma per tuas [[Special:Preferences|praeferentias]].',
'nosuchsectiontitle' => 'Haec pars inveniri non potest',
'nosuchsectiontext' => 'Partem inexistentem recensere conaris.
@@ -688,9 +689,9 @@ Nobis etiam spondes te esse ipsum horum verborum scriptorem primum, aut ex opere
aliquae navigatra paginas longiores quam 32 chiliocteti recensere non possunt.
Considera paginam in partes minores frangere.',
'protectedpagewarning' => "'''CAVE: Haec pagina protecta est ut magistratus soli eam recenseant.'''",
-'templatesused' => 'Formulae hac in pagina adhibitae:',
-'templatesusedpreview' => 'Formulae hoc in praeviso adhibitae:',
-'templatesusedsection' => 'Formulae hac in parte adhibitae:',
+'templatesused' => '{{PLURAL:$1|Formula hac in pagina adhibita:|Formulae hac in pagina adhibitae:}}',
+'templatesusedpreview' => '{{PLURAL:$1|Formula hoc in praeviso adhibita:|Formulae hoc in praeviso adhibitae:}}',
+'templatesusedsection' => '{{PLURAL:$1|Formula hac in parte adhibita:|Formulae hac in parte adhibitae:}}',
'template-protected' => '(protecta)',
'template-semiprotected' => '(semi-protecta)',
'hiddencategories' => 'Haec pagina ad {{PLURAL:$1|unam categoriam celatam|$1 categorias celatas}} pertinet:',
@@ -698,11 +699,12 @@ Considera paginam in partes minores frangere.',
'nocreate-loggedin' => 'Tibi non licet paginas novas creare.',
'permissionserrors' => 'Errores permissionis',
'permissionserrorstext-withaction' => 'Tibi non licet $2, ex {{PLURAL:$1|ratione|rationibus}}:',
-'recreate-deleted-warn' => "'''Cave: paginam qui antea iam deleta est creas.'''
+'recreate-moveddeleted-warn' => "'''Cave: paginam qui antea iam deleta est creas.'''
-Tibi oportet meditari utrum hanc paginam creare tamen convenit. Commodule notatio paginarum deletarum hic datur:",
-'deleted-notice' => 'Haec pagina deleta est. Commodule notatio paginarum deletarum subter datur.',
-'deletelog-fulllog' => 'Inspicere acta plenissima',
+Tibi oportet meditari utrum hanc paginam creare tamen convenit. Commodule notatio paginarum deletarum motarumque hic datur:",
+'moveddeleted-notice' => 'Haec pagina deleta est.
+Commodule notatio paginarum deletarum motarumque huius paginae subter datur.',
+'log-fulllog' => 'Inspicere acta plenissima',
'edit-hook-aborted' => 'Recensio a hamo abrogata est.
Hamus nullam causam dedit.',
'edit-gone-missing' => 'Non potui paginam modificare.
@@ -731,7 +733,7 @@ Ille hanc causam dedit: ''$2''",
'currentrev' => 'Emendatio recentissima',
'currentrev-asof' => 'Emendatio recentissima ex $1',
'revisionasof' => 'Emendatio ex $1',
-'revision-info' => 'Emendatio ex $1 ab $2', # Additionally available: $3: revision id
+'revision-info' => 'Emendatio ex $1 ab $2',
'previousrevision' => '← Emendatio senior',
'nextrevision' => 'Emendatio novior →',
'currentrevisionlink' => 'Emendatio currens',
@@ -744,7 +746,6 @@ Ille hanc causam dedit: ''$2''",
Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
'''({{int:last}})''' = dissimilis ab emendatione proxima, '''{{int:minoreditletter}}''' = recensio minor.",
'history-fieldset-title' => 'Quaerere in paginae historia',
-'deletedrev' => '[deleta]',
'histfirst' => 'Veterrimus',
'histlast' => 'Novissimus',
'historysize' => '({{PLURAL:$1|1 octetus|$1 octeti}})',
@@ -752,35 +753,36 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
# Revision feed
'history-feed-title' => 'Historia',
-'history-feed-item-nocomment' => '$1 ad $2', # user at time
+'history-feed-item-nocomment' => '$1 ad $2',
# Revision deletion
-'rev-deleted-comment' => '(summarium celatum)',
-'rev-deleted-user' => '(nomen usoris celatum est)',
-'rev-deleted-event' => '(perscriptio celata)',
-'rev-delundel' => 'monstrare/celare',
-'revisiondelete' => 'Emendationem delere',
-'revdelete-nooldid-title' => 'Emendatio-scopus invalida',
-'revdelete-nologtype-title' => 'Nullus typus actorum datus',
-'revdelete-toomanytargets-title' => 'Numerus scoporum nimis magnus est',
-'revdelete-nologid-title' => 'Perscriptio actorum invalida',
-'revdelete-selected' => "'''{{PLURAL:$2|Emendatio selecta|Emendationes selectae}} paginae [[:$1]]:'''",
-'revdelete-legend' => 'Modificare cohibitiones visibilitatis',
-'revdelete-hide-text' => 'Celare textum emendationis',
-'revdelete-hide-comment' => 'Celare summarium emendationis',
-'revdelete-hide-image' => 'Celare contentum fasciculi',
-'revdelete-log' => 'Causa:',
-'revdelete-logentry' => 'mutavit visibilitatem emendationis paginae [[$1]]',
-'revdel-restore' => 'visibilitatem mutare',
-'pagehist' => 'Historia paginae',
-'deletedhist' => 'Historia deleta',
-'revdelete-content' => 'contenta',
-'revdelete-summary' => 'summarium recensionis',
-'revdelete-uname' => 'nomen usoris',
-'revdelete-hid' => 'celavit $1',
-'revdelete-unhid' => 'monstravit $1',
-'revdelete-log-message' => '$1 {{PLURAL:$2|unius emendationis|$2 emendationum}}',
-'logdelete-log-message' => '$1 {{PLURAL:$2|unius eventi|$2 eventorum}}',
+'rev-deleted-comment' => '(summarium celatum)',
+'rev-deleted-user' => '(nomen usoris celatum est)',
+'rev-deleted-event' => '(perscriptio celata)',
+'rev-delundel' => 'monstrare/celare',
+'revisiondelete' => 'Emendationem delere',
+'revdelete-nooldid-title' => 'Emendatio-scopus invalida',
+'revdelete-nologtype-title' => 'Nullus typus actorum datus',
+'revdelete-nologid-title' => 'Perscriptio actorum invalida',
+'revdelete-show-file-submit' => 'Sic',
+'revdelete-selected' => "'''{{PLURAL:$2|Emendatio selecta|Emendationes selectae}} paginae [[:$1]]:'''",
+'revdelete-legend' => 'Modificare cohibitiones visibilitatis',
+'revdelete-hide-text' => 'Celare textum emendationis',
+'revdelete-hide-image' => 'Celare contentum fasciculi',
+'revdelete-hide-comment' => 'Celare summarium emendationis',
+'revdelete-log' => 'Causa:',
+'revdelete-logentry' => 'mutavit visibilitatem emendationis paginae [[$1]]',
+'revdel-restore' => 'visibilitatem mutare',
+'pagehist' => 'Historia paginae',
+'deletedhist' => 'Historia deleta',
+'revdelete-content' => 'contenta',
+'revdelete-summary' => 'summarium recensionis',
+'revdelete-uname' => 'nomen usoris',
+'revdelete-hid' => 'celavit $1',
+'revdelete-unhid' => 'monstravit $1',
+'revdelete-log-message' => '$1 {{PLURAL:$2|unius emendationis|$2 emendationum}}',
+'logdelete-log-message' => '$1 {{PLURAL:$2|unius eventi|$2 eventorum}}',
+'revdelete-edit-reasonlist' => 'Causas deletionum recensere',
# Suppression log
'suppressionlog' => 'Acta suppressionum',
@@ -803,66 +805,12 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
'revertmerge' => 'Inconfundere',
# Diffs
-'history-title' => 'Historia paginae "$1"',
-'difference' => '(Dissimilitudo inter emendationes)',
-'lineno' => 'Linea $1:',
-'compareselectedversions' => 'Conferre emendationes selectas',
-'visualcomparison' => 'Comparatio visualis',
-'wikicodecomparison' => 'Comparatio vicitexti',
-'editundo' => 'abrogare',
-'diff-movedto' => 'movit ad $1',
-'diff-styleadded' => '$1 filum additum',
-'diff-added' => '$1 additum',
-'diff-changedto' => 'ad $1 mutatum est',
-'diff-movedoutof' => 'movit extra $1',
-'diff-styleremoved' => '$1 filum celatum',
-'diff-removed' => '$1 abrogata',
-'diff-changedfrom' => 'mutatum ex $1',
-'diff-src' => 'fons',
-'diff-withdestination' => 'cum destinatione $1',
-'diff-with' => '&#32;cum $1 $2',
-'diff-with-final' => '&#32;et $1 $2',
-'diff-width' => 'amplitudo',
-'diff-height' => 'altitudo',
-'diff-p' => "'''paragraphus'''",
-'diff-blockquote' => "'''citatus'''",
-'diff-h1' => "'''capitulum (scalae 1)'''",
-'diff-h2' => "'''capitulum (scalae 2)'''",
-'diff-h3' => "'''capitulum (scalae 3)'''",
-'diff-h4' => "'''capitulum (scalae 4)'''",
-'diff-h5' => "'''capitulum (scalae 5)'''",
-'diff-pre' => "'''copia praeformata'''",
-'diff-div' => "'''divisio'''",
-'diff-ul' => "'''index inordinatus'''",
-'diff-ol' => "'''index ordinatus'''",
-'diff-li' => "'''elementum indicis'''",
-'diff-table' => "'''tabula'''",
-'diff-tbody' => "'''contenta tabulae'''",
-'diff-tr' => "'''linea'''",
-'diff-td' => "'''cella'''",
-'diff-th' => "'''capitulum'''",
-'diff-br' => "'''intervallum'''",
-'diff-hr' => "'''linea horizontalis'''",
-'diff-code' => "'''elementum codicis computatralis'''",
-'diff-dl' => "'''index definitionum'''",
-'diff-dt' => "'''terminus definitionis'''",
-'diff-dd' => "'''definitio'''",
-'diff-input' => "'''perscriptio'''",
-'diff-form' => "'''forma'''",
-'diff-img' => "'''imago'''",
-'diff-span' => "'''diductio'''",
-'diff-a' => "'''nexus'''",
-'diff-i' => "'''litterae obliquae'''",
-'diff-b' => "'''litterae pingues'''",
-'diff-strong' => "'''fortis'''",
-'diff-em' => "'''emphasis'''",
-'diff-font' => "'''series litterarum'''",
-'diff-big' => "'''magnum'''",
-'diff-del' => "'''deleta'''",
-'diff-tt' => "'''amplitudo certa'''",
-'diff-sub' => "'''subscriptum'''",
-'diff-sup' => "'''superscriptum'''",
-'diff-strike' => "'''talea transversalis'''",
+'history-title' => 'Historia paginae "$1"',
+'difference' => '(Dissimilitudo inter emendationes)',
+'lineno' => 'Linea $1:',
+'compareselectedversions' => 'Conferre emendationes selectas',
+'showhideselectedversions' => 'Monstrare/celare emendationes selectas',
+'editundo' => 'abrogare',
# Search results
'searchresults' => 'Eventum investigationis',
@@ -870,23 +818,22 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
'searchresulttext' => 'Pro plurimis nuntiis de investigatione in {{grammar:ablative|{{SITENAME}}}}, vide [[{{MediaWiki:Helppage}}|{{MediaWiki:Help}}]].',
'searchsubtitle' => 'Quaesitum est \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omnes paginae quarum titulus incipit litteris "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omnes paginae quae ad "$1" nectunt]])',
'searchsubtitleinvalid' => 'Pro investigatione "$1"',
-'noexactmatch' => "'''Nulla pagina cum titulo \"\$1\" exacto existit.''' Potes [[:\$1|eam creare]].",
-'noexactmatch-nocreate' => "'''Nulla pagina cum titulo \"\$1\" exacto existit.'''",
'titlematches' => 'Exaequata indicibus rerum',
'notitlematches' => 'Nulla exaequata',
'notextmatches' => 'Nihil verbis quaesitis congruit',
-'prevn' => '$1 superiores',
-'nextn' => '$1 proxima',
+'prevn' => '{{PLURAL:$1|$1}} superiores',
+'nextn' => '{{PLURAL:$1|$1}} proxima',
'prevn-title' => '{{PLURAL:$1|Eventus prior|Eventus priores}} $1',
'nextn-title' => '{{PLURAL:$1|Eventus proximus|Eventus proximi}} $1',
'shown-title' => 'Monstrare $1 {{PLURAL:$1|eventum|eventus}} per paginam',
-'viewprevnext' => 'Videre ($1) ($2) ($3)',
+'viewprevnext' => 'Videre ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Optiones',
'searchmenu-exists' => "'''Iam est pagina \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Creare paginam \"[[:\$1]]\"'''",
'searchhelp-url' => 'Help:Adiutatum',
-'searchprofile-project' => 'Paginae incepti',
-'searchprofile-images' => 'Fasciculi',
+'searchprofile-articles' => 'Paginae contentorum',
+'searchprofile-project' => 'Paginae adiutati et incepti',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Omnia',
'searchprofile-advanced' => 'Callidissime',
'searchprofile-articles-tooltip' => 'Quaerere in $1',
@@ -904,11 +851,11 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
'search-mwsuggest-disabled' => 'sine suggestionibus',
'search-relatedarticle' => 'Relata',
'mwsuggest-disable' => 'Prohibere suggestiones AJAX',
+'searcheverything-enable' => 'Quaerere in omnibus spatiis nominalibus',
'searchrelated' => 'relata',
'searchall' => 'omnia',
'showingresults' => "Subter monstrans {{PLURAL:$1|'''1''' eventu|'''$1''' eventibus}} tenus incipiens ab #'''$2'''.",
'showingresultsnum' => "Subter monstrans {{PLURAL:$3|'''1''' eventum|'''$3''' eventus}} incipiens ab #'''$2'''.",
-'showingresultstotal' => "Subter monstrans {{PLURAL:$4|eventum '''$1''' ex '''$3'''|eventus '''$1 - $2''' ex '''$3'''}}",
'nonefound' => "'''Adnotatio''': Solum aliquae spatia nominalia quaesita sunt semper.
Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (paginas, formulas et cetera) vel utere spatio nominali desiderato quasi praefixo.",
'powersearch' => 'Quaerere callidissime',
@@ -916,45 +863,46 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'powersearch-ns' => 'Quaerere in spatiis nominalibus:',
'powersearch-redir' => 'Monstrare redirectiones',
'powersearch-field' => 'Quaerere',
+'powersearch-togglelabel' => 'Selegere:',
+'powersearch-toggleall' => 'Omnia',
+'powersearch-togglenone' => 'Nullum',
'search-external' => 'Inquisitio externalis',
'searchdisabled' => 'Per {{grammar:accusative|{{SITENAME}}}} ad tempus non potes quaerere. Interea per [http://www.google.com Googlem] quaeras. Nota indices {{grammar:genitive|{{SITENAME}}}} contentorum apud Googlem fortasse antiquiores esse.',
+# Quickbar
+'qbsettings' => 'Figuratio claustri celeris',
+'qbsettings-none' => 'Nullus',
+'qbsettings-fixedleft' => 'Constituere a sinistra',
+'qbsettings-fixedright' => 'Constituere a dextra',
+'qbsettings-floatingleft' => 'Innens a sinistra',
+'qbsettings-floatingright' => 'Innens a dextra',
+
# Preferences page
'preferences' => 'Praeferentiae',
'mypreferences' => 'Praeferentiae meae',
'prefs-edits' => 'Numerus recensionum:',
'prefsnologin' => 'Conventum non est apertum',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} Conventum aperire]</span> debes ad praeferentias tuas modificandum.',
-'prefsreset' => 'Praeferentiae tuae reperscriptae sunt.',
-'qbsettings' => 'Figuratio claustri celeris',
-'qbsettings-none' => 'Nullus',
-'qbsettings-fixedleft' => 'Constituere a sinistra',
-'qbsettings-fixedright' => 'Constituere a dextra',
-'qbsettings-floatingleft' => 'Innens a sinistra',
-'qbsettings-floatingright' => 'Innens a dextra',
+'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Conventum aperire]</span> debes ad praeferentias tuas modificandum.',
'changepassword' => 'Tesseram mutare',
-'skin' => 'Aspectum',
+'prefs-skin' => 'Aspectum',
'skin-preview' => 'Praevisum',
-'math' => 'Interpretatio artis mathematicae',
-'dateformat' => 'Forma diei',
+'prefs-math' => 'Interpretatio artis mathematicae',
'datedefault' => 'Nullum praeferentiae',
-'datetime' => 'Dies et tempus',
-'math_failure' => 'Excutare non potest',
-'math_unknown_error' => 'error ignotus',
-'math_unknown_function' => 'functio ignota',
-'math_lexing_error' => 'erratum lexicale',
-'math_syntax_error' => 'erratum syntaxis',
+'prefs-datetime' => 'Dies et tempus',
'prefs-personal' => 'Minutiae rationis',
'prefs-rc' => 'Nuper mutata',
'prefs-watchlist' => 'Paginae custoditae',
'prefs-watchlist-days' => 'Numerus dierum displicandus in paginis tuis custoditis:',
'prefs-watchlist-days-max' => '(maximum 7 dies)',
'prefs-watchlist-edits' => 'Numerus recensionum displicandus in paginis tuis custoditis extensis:',
+'prefs-watchlist-edits-max' => '(numerus maximus: 1000)',
'prefs-misc' => 'Misc',
'prefs-resetpass' => 'Tesseram mutare',
+'prefs-email' => 'Optiones inscriptionis electronicae',
+'prefs-rendering' => 'Conspectus',
'saveprefs' => 'Servare praeferentias',
'resetprefs' => 'Reddere praeferentias',
-'textboxsize' => 'Mensura capsae verbi',
+'prefs-editing' => 'Mensura capsae verbi',
'prefs-edit-boxsize' => 'Magnitudo capsae recensionis.',
'rows' => 'Lineae:',
'columns' => 'Columnae:',
@@ -966,9 +914,7 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'recentchangescount' => 'Quantum rerum in nuper mutatis, historiis et actis:',
'savedprefs' => 'Praeferentiae tuae servatae sunt.',
'timezonelegend' => 'Zona temporis:',
-'timezonetext' => '¹Numerus horarum inter horam tuam et illam moderatri (UTC).',
'localtime' => 'Hora indigena:',
-'timezoneselect' => 'Zona temporis:',
'timezoneuseoffset' => 'Alia (da dissimilitudinem cinguli horae)',
'timezoneoffset' => 'Dissimilitudo cinguli horae¹:',
'servertime' => 'Hora moderatri:',
@@ -988,12 +934,39 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'prefs-namespaces' => 'Spatia nominalia',
'defaultns' => 'Quaerere per haec spatia nominalia a defalta:',
'default' => 'praedeterminatum',
-'files' => 'Fasciculi',
+'prefs-files' => 'Fasciculi',
'prefs-custom-css' => 'CSS proprium',
'prefs-custom-js' => 'JS proprium',
+'prefs-emailconfirm-label' => 'Adfirmatio inscriptionis electronicae:',
+'prefs-textboxsize' => 'Magnitudo capsae recensionis',
+'youremail' => 'Inscriptio electronica:',
+'username' => 'Nomen usoris:',
+'uid' => 'ID usoris:',
+'prefs-registration' => 'Dies creationis rationis:',
+'yourrealname' => 'Nomen verum:',
+'yourlanguage' => 'Lingua:',
+'yourvariant' => 'Differentia:',
+'yournick' => 'Subscriptio nova:',
+'badsig' => 'Subscriptio cruda non est valida; scrutina affixa HTML.',
+'badsiglength' => 'Subscriptio tua nimis longa est.
+{{PLURAL:$1|Una littera est|$1 litterae sunt}} longitudo maxima.',
+'yourgender' => 'Sexus:',
+'gender-unknown' => 'Indefinitus',
+'gender-male' => 'Mas',
+'gender-female' => 'Femina',
+'email' => 'Litterae electronicae',
+'prefs-help-realname' => 'Nomen verum non necesse est.
+Si vis id dare, opera tua tibi ascribentur.',
+'prefs-help-email' => 'Inscriptio electronica non necesse est, sed sinit tesseram novam tibi mitti si eae oblitus es.
+Si vis, sinit etiam aliis tecum loqui per tuam paginam usoris vel disputationis, nisi te reveles.',
+'prefs-help-email-required' => 'Inscriptio electronica necesse est.',
+'prefs-info' => 'Informatio basica',
+'prefs-i18n' => 'Internationalizatio',
+'prefs-signature' => 'Subscriptio',
+'prefs-diffs' => 'Differentiae',
# User rights
-'userrights' => 'Usorum potestates', # Not used as normal message but as header for the special page itself
+'userrights' => 'Usorum potestates',
'userrights-lookup-user' => 'Greges usorum regere',
'userrights-user-editname' => 'Nomen usoris inscribe:',
'editusergroup' => 'Greges usorum recensere',
@@ -1057,6 +1030,8 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'right-protect' => 'Protectionem mutare vel paginas protectas recensere',
'right-editprotected' => 'Paginas protectas recensere (sine protectione defluente quasi cataracta)',
'right-editusercssjs' => 'Paginas CSS vel JS aliorum usorum recensere',
+'right-editusercss' => 'Paginas CSS aliorum usorum recensere',
+'right-edituserjs' => 'Paginas JS aliorum usorum recensere',
'right-rollback' => 'Cito reverti recensiones proximas usoris cuiuslibet paginae',
'right-import' => 'Paginas ex vicis aliis importare',
'right-importupload' => 'Paginas ex fasciculo imponendo importare',
@@ -1109,6 +1084,13 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'recentchanges-legend' => 'Indicis paginarum nuper mutatarum praeferentiae',
'recentchangestext' => 'Inspice mutationes recentes huic vici in hac pagina.',
'recentchanges-feed-description' => 'Nuper mutata Viciae hoc in fluxu observare.',
+'recentchanges-label-legend' => 'Sigla: $1.',
+'recentchanges-legend-newpage' => '$1 - pagina nova',
+'recentchanges-label-newpage' => 'Haec recensio paginam novam creavit',
+'recentchanges-legend-minor' => '$1 - recensio minor',
+'recentchanges-label-minor' => 'Haec est recensio minor',
+'recentchanges-legend-bot' => '$1 - recensio automati',
+'recentchanges-label-bot' => 'Hanc emendationem automaton fecit',
'rcnote' => "Subter {{PLURAL:$1|est '''1''' nuper mutatum|sunt '''$1''' nuperrime mutata}} in {{PLURAL:$2|die proximo|'''$2''' diebus proximis}} ex $5, $4.",
'rcnotefrom' => "Subter sunt '''$1''' nuperrime mutata in proxima '''$2''' die.",
'rclistfrom' => 'Monstrare mutata nova incipiens ab $1',
@@ -1134,6 +1116,8 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
# Recent changes linked
'recentchangeslinked' => 'Nuper mutata annexorum',
+'recentchangeslinked-feed' => 'Nuper mutata annexorum',
+'recentchangeslinked-toolbox' => 'Nuper mutata annexorum',
'recentchangeslinked-title' => 'Nuper mutata in paginis quibus pagina "$1" nectit',
'recentchangeslinked-summary' => "Ecce mutationes recentissimas commentationum quae aut paginae cuidam adnectuntur, aut in categoria quadam includuntur. Paginae a [[Special:Watchlist|te custoditae]] '''litteris pinguibus''' monstrantur.",
'recentchangeslinked-page' => 'Titulus paginae:',
@@ -1142,7 +1126,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
# Upload
'upload' => 'Fasciculum imponere',
'uploadbtn' => 'Fasciculum imponere',
-'reupload' => 'Iterum imponere',
'reuploaddesc' => 'Siste imponere et ad imponendi formam redi',
'uploadnologin' => 'Conventum non est apertum',
'uploadnologintext' => 'Oportet [[Special:UserLogin|aperire conventum]] ut fasciculos imponas.',
@@ -1174,7 +1157,6 @@ Vide etiam [[Special:NewFiles|pinacothecam fasciculorum recentissimorum imposito
'badfilename' => 'Nomen fasciculi ad "$1" mutatum est.',
'filetype-missing' => 'Fasciculus extensionem non habet (sicut e.&nbsp;g. ".jpg").',
'large-file' => 'Suasum est ut fasciculi $1 magnitudine non excedant; magnitudo huius fasciculi est $2.',
-'fileexists-thumb' => "<center>'''Imago quae iam est'''</center>",
'successfulupload' => 'Impositum est perfectum',
'uploadwarning' => 'Monitus imponendi',
'savefile' => 'Servare fasciculum',
@@ -1191,11 +1173,13 @@ Vide etiam [[Special:NewFiles|pinacothecam fasciculorum recentissimorum imposito
Tibi oportet meditari utrum hunc fasciculum iterum imponere tamen convenit.
Commodule notatio fasciculorum deletorum hic datur:",
-'upload-proto-error' => 'Protocollum incorrectum',
-'upload-file-error' => 'Erratum internum',
-'upload-misc-error' => 'Erratum impositionis ignotum',
+'upload-proto-error' => 'Protocollum incorrectum',
+'upload-file-error' => 'Erratum internum',
+'upload-misc-error' => 'Erratum impositionis ignotum',
+'upload-unknown-size' => 'Magnitudo ignota',
'license' => 'Typus permissionis:',
+'license-header' => 'Typus permissionis:',
'nolicense' => 'Nulla selecta',
'license-nopreview' => '(Praevisum monstrari non potest)',
@@ -1210,34 +1194,38 @@ Commodule notatio fasciculorum deletorum hic datur:",
'listfiles_count' => 'Emendationes',
# File description page
-'filehist' => 'Historia fasciculi',
-'filehist-help' => 'Ad emendationem fasciculi inspiciendum, preme in diem/tempus.',
-'filehist-deleteall' => 'delere omnes emendationes',
-'filehist-deleteone' => 'delere',
-'filehist-revert' => 'revertere',
-'filehist-current' => 'recentissima',
-'filehist-datetime' => 'Dies/Tempus',
-'filehist-thumb' => 'Pollicisunguis',
-'filehist-thumbtext' => 'Pollicisunguis emendationis ex $1',
-'filehist-nothumb' => 'Nullus pollicisunguis',
-'filehist-user' => 'Usor',
-'filehist-dimensions' => 'Dimensiones',
-'filehist-filesize' => 'Magnitudo fasciculi',
-'filehist-comment' => 'Sententia',
-'imagelinks' => 'Nexus ad fasciculum',
-'linkstoimage' => '{{PLURAL:$1|Haec pagina ad hunc fasciculum nectit:|Paginae sequentes ad hunc fasciculum nectunt:}}',
-'nolinkstoimage' => 'Nullae paginae ad hunc fasciculum nectunt.',
-'morelinkstoimage' => 'Videre [[Special:WhatLinksHere/$1|plures nexus]] ad hunc fasciculum.',
-'redirectstofile' => '{{PLURAL:$1|Fasciculus sequens ad hunc fasciculum redirigit:|Hae $1 fasciculi sequentes ad hunc fasciculum redirigunt:}}',
-'sharedupload' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Vide contenta $1.',
-'shareduploadwiki-desc' => 'Contenta $1 subter monstrantur.',
-'shareduploadwiki-linktext' => 'paginae descriptionis fasciculi',
-'noimage' => 'Fasciculus huius nominis non est, sed $1 potes.',
-'noimage-linktext' => 'fasciculum imponere',
-'uploadnewversion-linktext' => 'Emendationem novam huius fasciculi imponere',
-'shared-repo-from' => 'apud {{grammar:accusative|$1}}', # $1 is the repository name
-'shared-repo' => 'repositorium commune', # used when shared-repo-NAME does not exist
+'file-anchor-link' => 'Fasciculus',
+'filehist' => 'Historia fasciculi',
+'filehist-help' => 'Ad emendationem fasciculi inspiciendum, preme in diem/tempus.',
+'filehist-deleteall' => 'delere omnes emendationes',
+'filehist-deleteone' => 'delere',
+'filehist-revert' => 'revertere',
+'filehist-current' => 'recentissima',
+'filehist-datetime' => 'Dies/Tempus',
+'filehist-thumb' => 'Pollicisunguis',
+'filehist-thumbtext' => 'Pollicisunguis emendationis ex $1',
+'filehist-nothumb' => 'Nullus pollicisunguis',
+'filehist-user' => 'Usor',
+'filehist-dimensions' => 'Dimensiones',
+'filehist-filesize' => 'Magnitudo fasciculi',
+'filehist-comment' => 'Sententia',
+'filehist-missing' => 'Fasciculus absens',
+'imagelinks' => 'Nexus ad fasciculum',
+'linkstoimage' => '{{PLURAL:$1|Haec pagina ad hunc fasciculum nectit:|Paginae sequentes ad hunc fasciculum nectunt:}}',
+'nolinkstoimage' => 'Nullae paginae ad hunc fasciculum nectunt.',
+'morelinkstoimage' => 'Videre [[Special:WhatLinksHere/$1|plures nexus]] ad hunc fasciculum.',
+'redirectstofile' => '{{PLURAL:$1|Fasciculus sequens ad hunc fasciculum redirigit:|Hae $1 fasciculi sequentes ad hunc fasciculum redirigunt:}}',
+'sharedupload' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.',
+'sharedupload-desc-there' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.
+Vide [$2 paginam descriptionis fasciculi].',
+'sharedupload-desc-here' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.
+Contenta [$2 paginae descriptionis fasciculi] subter monstrantur.',
+'filepage-nofile' => 'Fasciculus huius nominis non est.',
+'filepage-nofile-link' => 'Fasciculus huius nominis non est, sed [$1 fasciculum imponere] potes.',
+'uploadnewversion-linktext' => 'Emendationem novam huius fasciculi imponere',
+'shared-repo-from' => 'apud {{grammar:accusative|$1}}',
+'shared-repo' => 'repositorium commune',
+'shared-repo-name-wikimediacommons' => 'Vicimedia Communia',
# File reversion
'filerevert' => 'Revertere $1',
@@ -1279,7 +1267,7 @@ Commodule notatio fasciculorum deletorum hic datur:",
# Random page
'randompage' => 'Pagina fortuita',
-'randompage-nopages' => 'Non est ulla pagina in spatio nominali "$1".',
+'randompage-nopages' => 'Non est ulla pagina {{PLURAL:$2|hoc in spatio nominale|in his spatiis nominalibus}}: $1.',
# Random redirect
'randomredirect' => 'Redirectio fortuita',
@@ -1291,6 +1279,7 @@ Commodule notatio fasciculorum deletorum hic datur:",
'statistics-header-edits' => 'Census recensionum',
'statistics-header-views' => 'Census visuum',
'statistics-header-users' => 'Census usorum',
+'statistics-header-hooks' => 'Alia statistica',
'statistics-articles' => 'Paginae in spatio nominali principali',
'statistics-pages' => 'Paginae',
'statistics-pages-desc' => 'Omnes paginae. Hic numerus includit paginas disputationum, redirectiones, etc.',
@@ -1317,8 +1306,8 @@ Pagina discretivam esse putatur si formulam adhibet ad quem [[MediaWiki:Disambig
'brokenredirects' => 'Redirectiones fractae',
'brokenredirectstext' => 'Hae redirectiones ad paginas inexistentes nectunt:',
-'brokenredirects-edit' => '(recensere)',
-'brokenredirects-delete' => '(delere)',
+'brokenredirects-edit' => 'recensere',
+'brokenredirects-delete' => 'delere',
'withoutinterwiki' => 'Paginae sine nexibus ad linguas alias',
'withoutinterwiki-summary' => 'Paginae sequentes non ad paginas in linguis aliis nectunt.',
@@ -1412,15 +1401,16 @@ Adspectum graciliorem potes facere modum indicum, nomen usoris (cave litteras ma
# Special:Categories
'categories' => 'Categoriae',
-'categoriespagetext' => 'Categoriae subter paginas vel fasciculos continent.
+'categoriespagetext' => '{{PLURAL:$1|Categoria subter paginas vel fasciculos continet.|Categoriae subter paginas vel fasciculos continent.}}
[[Special:UnusedCategories|Categoriae non in usu]] non monstrantur.
Vide etiam [[Special:WantedCategories|categorias desideratas]].',
'special-categories-sort-count' => 'ordinare secundum numerum',
'special-categories-sort-abc' => 'ordinare secundum abecedarium',
# Special:DeletedContributions
-'deletedcontributions' => 'Conlationes usoris deletae',
-'deletedcontributions-title' => 'Conlationes usoris deletae',
+'deletedcontributions' => 'Conlationes usoris deletae',
+'deletedcontributions-title' => 'Conlationes usoris deletae',
+'sp-deletedcontributions-contribs' => 'conlationes',
# Special:LinkSearch
'linksearch' => 'Quaerere nexus externos',
@@ -1431,6 +1421,14 @@ Vide etiam [[Special:WantedCategories|categorias desideratas]].',
# Special:ListUsers
'listusers-submit' => 'Monstrare',
'listusers-noresult' => 'Nullus usor inventus.',
+'listusers-blocked' => '(obstructus)',
+
+# Special:ActiveUsers
+'activeusers' => 'Index usorum activorum',
+'activeusers-count' => '{{PLURAL:$1|una recensio recens|$1 recensiones recentes}} {{PLURAL:$3|die proximo|in diebus $3 proximis}}',
+'activeusers-hidebots' => 'Celare automata',
+'activeusers-hidesysops' => 'Celare magistratus',
+'activeusers-noresult' => 'Nullus usor inventus.',
# Special:Log/newusers
'newuserlogpage' => 'Index rationum novarum creatarum',
@@ -1441,15 +1439,19 @@ Vide etiam [[Special:WantedCategories|categorias desideratas]].',
'newuserlog-autocreate-entry' => 'Ratio automatice creata',
# Special:ListGroupRights
-'listgrouprights' => 'Gregum usorum potestates',
-'listgrouprights-group' => 'Grex',
-'listgrouprights-rights' => 'Potestates',
-'listgrouprights-helppage' => 'Help:Gregum potestates',
-'listgrouprights-members' => '(index rationum)',
-'listgrouprights-addgroup' => 'Addere {{PLURAL:$2|gregem|greges}}: $1',
-'listgrouprights-removegroup' => 'Removere {{PLURAL:$2|gregem|greges}}: $1',
-'listgrouprights-addgroup-all' => 'Addere omnes greges',
-'listgrouprights-removegroup-all' => 'Removere omnes greges',
+'listgrouprights' => 'Gregum usorum potestates',
+'listgrouprights-group' => 'Grex',
+'listgrouprights-rights' => 'Potestates',
+'listgrouprights-helppage' => 'Help:Gregum potestates',
+'listgrouprights-members' => '(index rationum)',
+'listgrouprights-addgroup' => 'Addere {{PLURAL:$2|gregem|greges}}: $1',
+'listgrouprights-removegroup' => 'Removere {{PLURAL:$2|gregem|greges}}: $1',
+'listgrouprights-addgroup-all' => 'Addere omnes greges',
+'listgrouprights-removegroup-all' => 'Removere omnes greges',
+'listgrouprights-addgroup-self' => 'Addere {{PLURAL:$2|gregem|greges}} ad rationem propriam: $1',
+'listgrouprights-removegroup-self' => 'Removere {{PLURAL:$2|gregem|greges}} ex ratione propria: $1',
+'listgrouprights-addgroup-self-all' => 'Addere omnes greges ad rationem propriam',
+'listgrouprights-removegroup-self-all' => 'Removere omnes greges ex ratione propria',
# E-mail user
'emailuser' => 'Litteras electronicas usori mittere',
@@ -1533,7 +1535,7 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your watchlist settings, visit
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Feedback and further assistance:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1547,10 +1549,11 @@ Feedback and further assistance:
'exblank' => 'pagina erat vacua',
'delete-confirm' => 'Delere "$1"',
'delete-legend' => 'Delere',
-'historywarning' => 'Monitio: Pagina quam delere vis historiam habet:',
+'historywarning' => "'''Monitio:''' Pagina quam delere vis historiam {{PLURAL:$1|unius fere emendationis|$1 fere emendationum}} habet:",
'confirmdeletetext' => 'Paginam cum tota historia eius delebis.
Adfirma quaesumus te paginam re vera delere velle, te consequentias intellere, et actionem tuam [[{{MediaWiki:Policy-url}}|consilio]] congruere.',
'actioncomplete' => 'Actum perfectum',
+'actionfailed' => 'Actum non feliciter evenit',
'deletedtext' => '"<nowiki>$1</nowiki>" deletum est. Vide $2 pro indice deletionum recentum.',
'deletedarticle' => 'delevit "[[$1]]"',
'suppressedarticle' => 'supprimit "[[$1]]"',
@@ -1576,8 +1579,8 @@ Adfirma quaesumus te paginam re vera delere velle, te consequentias intellere, e
'alreadyrolled' => 'Ad emendationem proximam paginae [[:$1]] ab usore [[User:$2|$2]] ([[User talk:$2|Disputatio]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) reverti non potest; alius paginam iam recensuit vel revertit.
Emendatio proxima ab usore [[User:$3|$3]] ([[User talk:$3|Disputatio]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) effecta est.',
-'editcomment' => "Summarium erat: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Reverti recensiones ab usore [[Special:Contributions/$2|$2]] ([[User talk:$2|Disputatio]]) ad emendationem proximam ab [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Summarium erat: \"''\$1''\".",
+'revertpage' => 'Reverti recensiones ab usore [[Special:Contributions/$2|$2]] ([[User talk:$2|Disputatio]]) ad emendationem proximam ab [[User:$1|$1]]',
'rollback-success' => 'Reverti recensiones ab usore $1
ad emendationem proximam ab $2.',
@@ -1594,7 +1597,6 @@ ad emendationem proximam ab $2.',
'protectexpiry' => 'Exitus:',
'protect_expiry_invalid' => 'Tempus post quod res exitur est invalidum.',
'protect_expiry_old' => 'Tempus est praeteritus.',
-'protect-unchain' => 'Permissiones paginae movendae aperire',
'protect-text' => "Hic tibi licet protectiones legere et mutare paginae '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Tibi non licet protectionem paginarum mutare.
Ecce protectiones paginae '''$1''':",
@@ -1614,7 +1616,7 @@ Ecce protectiones paginae '''$1''':",
'protect-otherreason' => 'Causa alia vel explicatio:',
'protect-otherreason-op' => 'causa alia',
'protect-edit-reasonlist' => 'Causas protectionum recensere',
-'protect-expiry-options' => '1 horam:1 hour,1 diem:1 day,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 horam:1 hour,1 diem:1 day,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite',
'restriction-type' => 'Permissus:',
'restriction-level' => 'Gradus cohibitionis:',
'minimum-size' => 'Magnitudo minima',
@@ -1646,6 +1648,7 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'undelete-nodiff' => 'Nulla emendatio prior inventa.',
'undeletebtn' => 'Restituere',
'undeletelink' => 'inspicere/restituere',
+'undeleteviewlink' => 'inspicere',
'undeletereset' => 'Reperscriptare',
'undeleteinvert' => 'Selectionem invertere',
'undeletecomment' => 'Causa:',
@@ -1671,7 +1674,7 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'contributions-title' => 'Conlationes usoris $1',
'mycontris' => 'Conlationes meae',
'contribsub2' => 'Pro $1 ($2)',
-'nocontribs' => 'Nullae mutationes inventae sunt ex his indiciis.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nullae mutationes inventae sunt ex his indiciis.',
'uctop' => ' (vertex)',
'month' => 'Ab mense (et prior):',
'year' => 'Ab anno (et prior):',
@@ -1680,7 +1683,10 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'sp-contributions-newbies-sub' => 'Conlationes rationum novarum',
'sp-contributions-newbies-title' => 'Conlationes rationum novarum',
'sp-contributions-blocklog' => 'acta obstructionum',
+'sp-contributions-deleted' => 'conlationes usoris deletae',
'sp-contributions-logs' => 'acta',
+'sp-contributions-talk' => 'disputatio',
+'sp-contributions-userrights' => 'usorum potestates',
'sp-contributions-search' => 'Conlationes usoris quaerere',
'sp-contributions-username' => 'Locus IP aut nomen usoris:',
'sp-contributions-submit' => 'Quaerere',
@@ -1726,7 +1732,7 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'ipbemailban' => 'Litteras electronicas vetare',
'ipbsubmit' => 'Obstruere hunc locum',
'ipbother' => 'Exitus alius:',
-'ipboptions' => '2 horas:2 hours,1 diem:1 day,3 dies:3 days,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 diem:1 day,3 dies:3 days,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite',
'ipbotheroption' => 'alius',
'ipbotherreason' => 'Causa alia vel explicatio:',
'ipbwatchuser' => 'Paginam usoris disputationisque huius usoris custodire',
@@ -1754,7 +1760,7 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'ipblocklist-submit' => 'Quaerere',
'blocklistline' => '$1, $2 obstruxit $3 (exire $4)',
'infiniteblock' => 'infinita',
-'expiringblock' => 'exit $1',
+'expiringblock' => 'exit $2, $1',
'anononlyblock' => 'solum usores ignoti',
'noautoblockblock' => 'obstructio automatica prohibita',
'createaccountblock' => 'Creatio rationum obstructa',
@@ -1766,7 +1772,10 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'contribslink' => 'conlationes',
'autoblocker' => 'Obstructus es automatice quia "[[User:$1|$1]]" nuper tuum locum IP adhibuit. Ratio data ob obstructionem usoris $1 est: "$2"',
'blocklogpage' => 'Index obstructionum',
-'blocklog-fulllog' => 'Index plenissimus obstructionum',
+'blocklog-showlog' => 'Hic usor antea obstructus est.
+Commodule notatio obstructionum subter datur.',
+'blocklog-showsuppresslog' => 'Hic usor antea obstructus est celatus est.
+Commodule notatio obstructionum subter datur.',
'blocklogentry' => 'obstruxit [[$1]], exire $2 $3',
'reblock-logentry' => 'modificavit obstructionem usoris [[$1]], exire $2 $3',
'blocklogtext' => 'Hic est index actorum obstructionis deobstructionisque. Loci IP qui automatice obstructi sunt non enumerantur. Vide [[Special:IPBlockList|indicem usorum locorumque IP obstructorum]] pro indice toto.',
@@ -1825,6 +1834,7 @@ adfirma te consequentias intellegere antequam procedis.",
Ergo manu necesse disputationes motare vel contribuere erit, si vis.",
'movearticle' => 'Paginam movere:',
+'moveuserpage-warning' => "'''Monitio:''' Si paginam usoris moves, solum pagina movetur, usor '''non''' renominatur.",
'movenologin' => 'Conventum non est apertum',
'movenologintext' => 'Rationem usoris habere et [[Special:UserLogin|conventum aperire]] debes ad movendum paginam.',
'movenotallowed' => 'Tibi non licet paginas movere.',
@@ -1835,7 +1845,7 @@ Ergo manu necesse disputationes motare vel contribuere erit, si vis.",
'move-watch' => 'Hanc paginam custodire',
'movepagebtn' => 'Paginam movere',
'pagemovedsub' => 'Pagina mota est',
-'movepage-moved' => '\'\'\'"$1" mota est ad "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" mota est ad "$2"\'\'\'',
'movepage-moved-redirect' => 'Redirectio creata est.',
'movepage-moved-noredirect' => 'Redirectio non creata est.',
'articleexists' => 'Pagina huius tituli iam est, aut invalidum est nomen electum.
@@ -1887,8 +1897,10 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'allmessagescurrent' => 'Textus recens nuntii',
'allmessagestext' => 'Hic est index omnium nuntiorum in MediaWiki.',
'allmessagesnotsupportedDB' => "Haec pagina non adhiberi potest, quia '''\$wgUseDatabaseMessages''' non iam agitur.",
-'allmessagesfilter' => 'Colum nominibus nuntiorum:',
-'allmessagesmodified' => 'Ea modificata sola monstrare',
+'allmessages-filter-legend' => 'Filtrum',
+'allmessages-filter-all' => 'Omnia',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Ire',
# Thumbnails
'thumbnail-more' => 'Augere',
@@ -1942,6 +1954,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'tooltip-search-fulltext' => 'Hunc textum in paginis quaerere',
'tooltip-p-logo' => 'Ire ad paginam primam',
'tooltip-n-mainpage' => 'Ire ad paginam primam',
+'tooltip-n-mainpage-description' => 'Ire ad paginam primam',
'tooltip-n-portal' => 'De hoc incepto',
'tooltip-n-currentevents' => 'Eventus novissimi',
'tooltip-n-recentchanges' => 'Index nuper mutatorum in hac vici',
@@ -1980,7 +1993,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
# Attribution
'anonymous' => '{{PLURAL:$1|Usor ignotus|Usores ignoti}} {{grammar:genitive|{{SITENAME}}}}',
'siteuser' => '{{SITENAME}} usor $1',
-'lastmodifiedatby' => 'Ultima mutatio: $2, $1 ab $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ultima mutatio: $2, $1 ab $3.',
'others' => 'alii',
'siteusers' => '{{PLURAL:$2|usor|usores}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Auctores paginae',
@@ -2003,6 +2016,13 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'mw_math_modern' => 'Commendatum pro navigatri recentes',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Excutare non potest',
+'math_unknown_error' => 'error ignotus',
+'math_unknown_function' => 'functio ignota',
+'math_lexing_error' => 'erratum lexicale',
+'math_syntax_error' => 'erratum syntaxis',
+
# Patrolling
'markaspatrolleddiff' => 'Indicare hanc paginam qua circumita',
'markaspatrolledtext' => 'Indicare hanc paginam qua circumita',
@@ -2021,11 +2041,9 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'previousdiff' => '← Dissimilitudo senior',
'nextdiff' => 'Dissimilitudo novior →',
-# Visual comparison
-'visual-comparison' => 'Comparatio visualis',
-
# Media information
-'imagemaxsize' => 'Terminare imagines in paginis imaginum ad:',
+'imagemaxsize' => "Magnitudo maxima fasciculorum:<br />
+''(in pagina descriptionis fasciculi)''",
'thumbsize' => 'Magnitudo pollicisunguis:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginae}}',
'file-info' => '(magnitudo fasciculi: $1, typus MIME: $2)',
@@ -2034,6 +2052,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'svg-long-desc' => '(fasciculus SVG, nominale $1 × $2 elementa imaginalia, magnitudo fasciculi: $3)',
'show-big-image' => 'Resolutio completa',
'show-big-image-thumb' => '<small>Mensura huius praevisi: pixellae $1 × $2</small>',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|replum|repla}}',
# Special:NewFiles
'newimages' => 'Fasciculi novi',
@@ -2134,8 +2153,8 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-unknowndate' => 'Dies ignota',
-'exif-orientation-1' => 'Normalis', # 0th row: top; 0th column: left
-'exif-orientation-3' => 'Converta 180°', # 0th row: bottom; 0th column: right
+'exif-orientation-1' => 'Normalis',
+'exif-orientation-3' => 'Converta 180°',
'exif-planarconfiguration-1' => 'formatio dilatata',
'exif-planarconfiguration-2' => 'formatio planaris',
@@ -2228,7 +2247,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-gpsmeasuremode-2' => 'Mensura 2-dimensionalis',
'exif-gpsmeasuremode-3' => 'Mensura 3-dimensionalis',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Chiliometra per horam',
'exif-gpsspeed-m' => 'Milia per horam',
'exif-gpsspeed-n' => 'Nodi',
@@ -2342,7 +2361,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
'watchlisttools-raw' => 'Indicem paginarum custoditarum quasi textum recensere',
# Special:Version
-'version' => 'Versio', # Not used as normal message but as header for the special page itself
+'version' => 'Versio',
'version-specialpages' => 'Paginae speciales',
'version-parserhooks' => 'Extensiones programmatis analysis lexicalis',
'version-variables' => 'Variabilia',
@@ -2353,7 +2372,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
'version-skin-extension-functions' => 'Functiones extensionis cutis',
'version-hook-name' => 'Nomen extensionis',
'version-hook-subscribedby' => 'Subscriptum ab',
-'version-version' => 'Versio',
+'version-version' => '(Versio $1)',
'version-license' => 'Permissio',
'version-software-product' => 'Productum',
'version-software-version' => 'Versio',
@@ -2390,4 +2409,9 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
'tags-edit' => 'mutatum',
'tags-hitcount' => '$1 {{PLURAL:$1|mutatum|mutata}}',
+# HTML forms
+'htmlform-submit' => 'Submittere',
+'htmlform-reset' => 'Mutationes abrogare',
+'htmlform-selectorother-other' => 'Aliud',
+
);
diff --git a/languages/messages/MessagesLad.php b/languages/messages/MessagesLad.php
index 46e71bdc..b711f295 100644
--- a/languages/messages/MessagesLad.php
+++ b/languages/messages/MessagesLad.php
@@ -105,27 +105,54 @@ $messages = array(
'category-media-header' => 'Archivos multimedia en la kategoría "$1"',
'category-empty' => "''La kategoría no kontiene aktualmente ningún artikolo o archivo multimedia''",
'hidden-categories' => '{{PLURAL:$1|Categoría escondida|Categorías escondidas}}',
-'hidden-category-category' => 'Categorías escondidas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorías escondidas',
'category-subcat-count' => '{{PLURAL:$2|Esta categoría contiene solamente la categoría venidera.|Esta categoría contiene {{PLURAL:$1|las categorías venideras|$1 subcategorías venideras}}, de un total de $2 subcategorías.}}',
'category-article-count' => '{{PLURAL:$2|Esta categoría contiene solamente la hoja venidera.|{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta categoría, de un total de $2.}}',
'listingcontinuesabbrev' => 'cont.',
-'about' => 'Encima de',
-'article' => 'Artícůlo',
-'newwindow' => '(Se avre en una ventana nueva)',
-'cancel' => 'Suprimir',
+'about' => 'Encima de',
+'article' => 'Artícůlo',
+'newwindow' => '(Se avre en una ventana nueva)',
+'cancel' => 'Suprimir',
+'moredotdotdot' => 'Mas...',
+'mypage' => 'Mi hoja',
+'mytalk' => 'Mi diskusyón',
+'anontalk' => 'Diskusion para esta IP',
+'navigation' => 'Passeo',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Topa',
'qbbrowse' => 'Navêga',
'qbedit' => 'Troca',
'qbpageoptions' => 'Opciones de la hoja',
'qbmyoptions' => 'Mis opsiones',
'qbspecialpages' => 'Pajinas espesiales',
-'moredotdotdot' => 'Mas...',
-'mypage' => 'Mi hoja',
-'mytalk' => 'Mi diskusyón',
-'anontalk' => 'Diskusion para esta IP',
-'navigation' => 'Passeo',
-'and' => '&#32;i',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-delete' => 'Efassa',
+'vector-action-move' => 'Taxirea',
+'vector-action-protect' => 'Guarda',
+'vector-namespace-category' => 'Kateggoría',
+'vector-namespace-help' => 'Hoja de ayudo',
+'vector-namespace-image' => 'Dosya',
+'vector-namespace-main' => 'Hoja',
+'vector-namespace-mediawiki' => 'Noticia',
+'vector-namespace-project' => 'Hoja de proyecto',
+'vector-namespace-special' => 'Hoja especial',
+'vector-namespace-talk' => 'Diskussión',
+'vector-namespace-template' => 'Xabblón',
+'vector-namespace-user' => 'Hoja de empleador',
+'vector-view-create' => 'Cria',
+'vector-view-edit' => 'Troca',
+'vector-view-history' => 'Ve la istoria',
+'vector-view-view' => 'Melda',
+'vector-view-viewsource' => 'Ve su orijjín',
+'actions' => 'Acciones',
+'namespaces' => 'Espacios de nombres',
+'variants' => 'Variantes',
'errorpagetitle' => 'Yerro',
'returnto' => 'Tornar a $1.',
@@ -174,7 +201,7 @@ $messages = array(
'otherlanguages' => 'En otras linguas',
'redirectedfrom' => '(Redirigido desde $1)',
'redirectpagesub' => 'Hoja redirigida',
-'lastmodifiedat' => 'Esta hoja fue trocada por la última vez en $2, a las $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Esta hoja fue trocada por la última vez en $2, a las $1.',
'protectedpage' => 'Hoja guardada',
'jumpto' => 'Salta a:',
'jumptonavigation' => 'passeo',
@@ -191,13 +218,12 @@ $messages = array(
'disclaimerpage' => 'Project:Rēfusamiento de responsabbilitá general',
'edithelp' => '¿Cómodo se la troca?',
'edithelppage' => 'Help:Una hoja, ¿cómodo se la troca?',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Contenidos',
'mainpage' => 'La Primera Hoja',
'mainpage-description' => 'La Hoja Primera',
'policy-url' => 'Project:Politikas',
'portal' => 'Portal de la comunidad',
+'portal-url' => 'Project:Portal de la comunidad',
'privacy' => 'Prencipio de particůlaridad',
'privacypage' => 'Project:Prencipio de particůlaridad',
@@ -273,10 +299,7 @@ Puede ser que contiene uno o más caracteres que no se pueden usar en los títul
'createaccountmail' => 'por una letra electrónica',
'userexists' => 'El nombre que entrates ya se usa.
Si puede ser, escoge un otro nombre.',
-'youremail' => 'El adderesso de tu letra electrόnica:',
-'username' => 'Nombre de usuario:',
-'yourlanguage' => 'Lingua:',
-'email' => 'Letra electrónica',
+'createaccounterror' => 'No se pudo crear el cuento: $1',
'mailmypassword' => 'Embiar una nueva koddiche por e-mail',
'emailconfirmlink' => 'Confirma su adderesso de letra electrónica',
'accountcreated' => 'Cuento creado',
@@ -335,6 +358,8 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
'yourtext' => 'Tu teksto',
'yourdiff' => 'Diferencias',
'copyrightwarning' => "Si puede ser, observa que todas las contribuciones a {{SITENAME}} se consideran hechas públicas abaxo la $2 (ver detalyos en $1). Si no queres que la gente endereche tus tekstos escritos sin piadad i los esparta libberamente, alora no los metas aquí. También nos estás asegurando ansí que escribites este teksto tu mismo i sos el dueño de los derechos de autor, o lo copiates desde el dominio público u otra fuente libbero.'''¡QUE N0 USES TEKSTOS ESCRITOS CON COPYRIGHT SIN PERMISSIÓN!'''<br />",
+'templatesused' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta hoja:',
+'templatesusedpreview' => '↓ {{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta vista:',
'template-protected' => '(guardada)',
'template-semiprotected' => '(media guardada)',
'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kateggoría escondida|$1 kateggorías escondidas}}:',
@@ -343,7 +368,8 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
# History pages
'viewpagelogs' => 'Ver los registros de esta hoja',
-'revisionasof' => 'Rêvizión de $1',
+'currentrev-asof' => 'Versión de alcabo de $1',
+'revisionasof' => 'Rēvisión de $1',
'previousrevision' => '← Rēvisión de antes',
'nextrevision' => 'Rêvisión venidera →',
'currentrevisionlink' => 'Revisión actual',
@@ -355,16 +381,23 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
Leyenda: (act) = diferencias con la versión actual,
(prev) = diferencias con la versión previa, M = edición menor",
'history-fieldset-title' => 'Buscar en la istoria',
+'history-show-deleted' => 'Sólamente efassado',
'histfirst' => 'Primeras',
'histlast' => 'De alcabo',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
'historyempty' => '(vazío)',
# Revision deletion
-'rev-delundel' => 'mostra/esconde',
-'revdelete-log' => 'Razón:',
-'revdel-restore' => 'Troca la viźibbilidad',
-'revdelete-content' => 'contenido',
+'rev-delundel' => 'mostra/esconde',
+'rev-showdeleted' => 'mostra',
+'revdelete-show-file-submit' => 'Sí',
+'revdelete-radio-same' => '(no troques)',
+'revdelete-radio-set' => 'Sí',
+'revdelete-radio-unset' => 'No',
+'revdelete-log' => 'Razón:',
+'revdel-restore' => 'Troca la viźibbilidad',
+'revdelete-content' => 'contenido',
+'revdelete-reasonotherlist' => 'Otra razón',
# History merging
'mergehistory-reason' => 'Razón:',
@@ -387,10 +420,12 @@ Leyenda: (act) = diferencias con la versión actual,
'searchsubtitleinvalid' => "Buscates '''$1'''",
'notitlematches' => 'No se pudo topar en dingún título.',
'notextmatches' => 'No se pudo topar en dinguna hoja.',
+'prevn' => '{{PLURAL:$1|$1}} de antes',
+'nextn' => '{{PLURAL:$1|$1}} venideras',
'prevn-title' => '$1 {{PLURAL:$1|resultado|resultados}} de antes',
'nextn-title' => 'Venideros $1 {{PLURAL:$1|resultado|resultados}}',
'shown-title' => 'Mostra $1 {{PLURAL:$1|resultado|resultados}} por hoja',
-'viewprevnext' => 'Ver ($1) ($2) ($3).',
+'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Ayudo',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Adelantado',
@@ -413,21 +448,30 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
'powersearch-ns' => 'Busca en los espacios de nombres:',
'powersearch-redir' => 'Mostra las redirecciones',
'powersearch-field' => 'Busca por',
+'powersearch-toggleall' => 'Todos',
'search-external' => 'Búsqueda eksterna',
# Preferences page
'preferences' => 'Preferencias',
'mypreferences' => 'Mis preferencias',
+'prefs-skin' => 'Vista',
+'prefs-math' => 'Fórmulas',
'prefs-rc' => 'Los Trocamientos de Alcabo',
'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
+'prefs-watchlist-days-max' => '7 días a lo más muncho',
'prefs-resetpass' => 'Trocar la parola',
+'prefs-rendering' => 'Vista',
'timezoneregion-africa' => 'África',
'timezoneregion-america' => 'América',
'timezoneregion-antarctica' => 'Antárctica',
'timezoneregion-asia' => 'Asia',
'timezoneregion-australia' => 'Ostralia',
'timezoneregion-europe' => 'Europa',
+'youremail' => 'El adderesso de tu letra electrόnica:',
+'username' => 'Nombre de usuario:',
+'yourlanguage' => 'Lingua:',
+'email' => 'Letra electrónica',
# Groups
'group-sysop' => 'Administradores',
@@ -472,6 +516,8 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
# Recent changes linked
'recentchangeslinked' => 'Trocamientos conectados',
+'recentchangeslinked-feed' => 'Trocamientos conectados',
+'recentchangeslinked-toolbox' => 'Trocamientos conectados',
'recentchangeslinked-title' => 'Los trocamientos relacionados con "$1"',
'recentchangeslinked-summary' => "La lista dêbbaxo, es la lista de los trocamientos de alcabo, por las hojas que dan link a la hoja siñalada (o por los miembros de la kateggoría siñalada).
Las hojas en tu [[Special:Watchlist|lista de escogidas]] son escritas '''gordas'''.",
@@ -488,17 +534,19 @@ Las hojas en tu [[Special:Watchlist|lista de escogidas]] son escritas '''gordas'
'listfiles_user' => 'Usuario',
# File description page
+'file-anchor-link' => 'Archivo',
'filehist' => 'Istoria del dosyé',
'filehist-help' => 'Klika encima de una data/ora para vel el arxivo de esta data.',
'filehist-current' => 'actual',
'filehist-datetime' => 'Data/Ora',
'filehist-thumb' => 'Miniatura',
+'filehist-thumbtext' => 'Miniatura de la versión de $1',
'filehist-user' => 'Empleador',
'filehist-dimensions' => 'Dimensiones',
'filehist-comment' => 'Comentario',
'imagelinks' => 'Linkes al arxivo multimedia',
'linkstoimage' => '{{PLURAL:$1|La hoja venidera da link|Las hojas venideras dan link}} a este arxivo:',
-'sharedupload' => 'Este arxivo es de $1 i puede ser usado por otros proyectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Este arxivo es de $1 i puede ser usado por otros proyectos.',
'uploadnewversion-linktext' => 'Subir una nueva versión de este arxivo',
# Random page
@@ -642,6 +690,7 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
'sp-contributions-newbies' => 'Mostrar solo las ajustamientos de los usuarios nuevos',
'sp-contributions-blocklog' => 'registro de bloqueos',
+'sp-contributions-talk' => 'Diścutir',
'sp-contributions-search' => 'Buscar ajustamientos',
'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
'sp-contributions-submit' => 'Buscar',
@@ -664,7 +713,7 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
# Block/unblock
'blockip' => 'Bloquear usuario',
-'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
'ipblocklist' => 'Lista de direcciones IP y nombres de usuario bloqueadas',
'blocklink' => 'Bloquea',
'unblocklink' => 'quita el bloqueo',
@@ -699,7 +748,7 @@ En estos casos, va deber trasladar manualmente el contenido de la hoja de diskus
'move-watch' => 'Cudiar este artículo',
'movepagebtn' => 'Renombra la hoja',
'pagemovedsub' => 'Renombrado realizado con reuxitá',
-'movepage-moved' => '\'\'\'"$1" fue renombrado a "$2".\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" fue renombrado a "$2".\'\'\'',
'articleexists' => 'Una hoja con este nombre ya egziste, o el nombre que escogites no es valable.
Si puede ser, escoge otro nombre.',
'talkexists' => 'La hoja fue renombrada con reuxito, ma la diskussión no se pudo renombrar porque ya egziste una en el título nuevo. Si puede ser, házelo manualmente.',
@@ -746,6 +795,7 @@ Si puede ser, usa el botón de prēviźualiźasyón antes de enrejjistrarla.',
'tooltip-search-go' => 'Si ay una hoja con este nombre egzakto, vate allá.',
'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
'tooltip-n-mainpage' => 'Torna a la Hoja Primera',
+'tooltip-n-mainpage-description' => 'Visita la Primera Hoja',
'tooltip-n-portal' => 'Encima del prodjekto, ¿qué se puede hazer i ánde topar todo?',
'tooltip-n-currentevents' => 'Topar informaciones encima de los acontecimientos actuales',
'tooltip-n-recentchanges' => 'La lista de los trocamientos frescos en el viki',
@@ -812,7 +862,7 @@ Los otros campos se van a guardar por defecto.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-filesource' => 'Manadéro de archivo',
@@ -824,7 +874,7 @@ Los otros campos se van a guardar por defecto.
'exif-lightsource-9' => 'Bueno tiémpo',
'exif-lightsource-10' => 'Tiémpo nuvlozo',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometros por óra',
# External editor support
@@ -876,10 +926,10 @@ Los otros campos se van a guardar por defecto.
'watchlisttools-raw' => 'Troca tu lista de escogidas en crudo',
# Special:Version
-'version' => 'Versión', # Not used as normal message but as header for the special page itself
+'version' => 'Versión',
'version-specialpages' => 'Pajinas espesiales',
'version-other' => 'Otros',
-'version-version' => 'Versión',
+'version-version' => '(Versión $1)',
'version-software-version' => 'Versión',
# Special:FileDuplicateSearch
diff --git a/languages/messages/MessagesLb.php b/languages/messages/MessagesLb.php
index b5dea6a0..80629ff3 100644
--- a/languages/messages/MessagesLb.php
+++ b/languages/messages/MessagesLb.php
@@ -40,7 +40,6 @@ $namespaceAliases = array(
'Bild_Diskussioun' => NS_FILE_TALK,
);
-
$specialPageAliases = array(
'DoubleRedirects' => array( 'Duebel Viruleedungen' ),
'BrokenRedirects' => array( 'Futtis Viruleedungen' ),
@@ -80,7 +79,7 @@ $specialPageAliases = array(
'Longpages' => array( 'Laang Säiten' ),
'Newpages' => array( 'Nei Säiten' ),
'Ancientpages' => array( 'Al Säiten' ),
- 'Deadendpages' => array( 'Saackgaassesäiten' ),
+ 'Deadendpages' => array( 'Sakgaasse-Säiten' ),
'Protectedpages' => array( 'Protegéiert Säiten' ),
'Protectedtitles' => array( 'Gespaarte Säiten' ),
'Allpages' => array( 'All Säiten' ),
@@ -118,7 +117,7 @@ $specialPageAliases = array(
'Mycontributions' => array( 'Meng Kontributiounen' ),
'Listadmins' => array( 'Lëscht vun den Administrateuren' ),
'Listbots' => array( 'Botten' ),
- 'Popularpages' => array( 'Beléiwste Säiten' ),
+ 'Popularpages' => array( 'Beléifste Säiten' ),
'Search' => array( 'Sichen' ),
'Resetpass' => array( 'Passwuert zrécksetzen' ),
'Withoutinterwiki' => array( 'Säiten ouni Interwiki-Linken' ),
@@ -129,6 +128,14 @@ $specialPageAliases = array(
'LinkSearch' => array( 'Weblink-Sich' ),
'DeletedContributions' => array( 'Geläschte Kontributiounen' ),
'Tags' => array( 'Taggen' ),
+ 'Activeusers' => array( 'Aktiv Benotzer' ),
+);
+
+$magicWords = array(
+ 'img_right' => array( '1', 'riets', 'rechts', 'right' ),
+ 'img_left' => array( '1', 'lénks', 'links', 'left' ),
+ 'img_center' => array( '1', 'zentréiert', 'zentriert', 'center', 'centre' ),
+ 'img_border' => array( '1', 'bord', 'rand', 'border' ),
);
$messages = array(
@@ -162,6 +169,7 @@ $messages = array(
'tog-enotifminoredits' => 'Schéckt mir och bei klengen Ännerungen op vu mir iwwerwaachte Säiten eng E-Mail.',
'tog-enotifrevealaddr' => 'Meng E-Mailadress an de Benoriichtigungsmaile weisen.',
'tog-shownumberswatching' => "D'Zuel vun de Benotzer déi dës Säit iwwerwaache weisen",
+'tog-oldsig' => 'Ausgesi vun der aktueller Ënnerschrëft:',
'tog-fancysig' => 'Ënnerschrëft als Wiki-Text behandelen (Ouni automatesche Link)',
'tog-externaleditor' => 'Externen Editeur als Standard benotzen (Nëmme fir Experten, et musse seziell Astellungen op ärem Computer gemaach ginn)',
'tog-externaldiff' => 'En Externen Diff-Programm als Standard benotzen (nëmme fir Experten, et musse speziell Astellungen op ärem Computer gemaach ginn)',
@@ -185,6 +193,13 @@ $messages = array(
'underline-never' => 'Ni',
'underline-default' => 'vun der Browserastellung ofhängeg',
+# Font style option in Special:Preferences
+'editfont-style' => "Schrëftfamill fir d'Ännerungsfënster:",
+'editfont-default' => 'Standard vum Browser',
+'editfont-monospace' => 'Schrëft mat enger fixer Breet (fir all Zeechen)',
+'editfont-sansserif' => 'Schrëft ouni Serifen',
+'editfont-serif' => 'Schrëft mat Serifen',
+
# Dates
'sunday' => 'Sonndeg',
'monday' => 'Méindeg',
@@ -244,7 +259,7 @@ $messages = array(
'category-media-header' => 'Medien an der Kategorie "$1"',
'category-empty' => "''Dës Kategorie ass fir den Ament eidel''",
'hidden-categories' => '{{PLURAL:$1|Verstoppt Kategorie|Verstoppt Kategorien}}',
-'hidden-category-category' => 'Verstoppt Kategorien', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verstoppt Kategorien',
'category-subcat-count' => 'Dës Kategorie huet {{PLURAL:$2|nëmmen dës Ënnerkategorie.|dës {{PLURAL:$1|Ënnerkategorie|$1 Ënnerkategorien}}, vu(n) $2 am Ganzen.}}',
'category-subcat-count-limited' => 'Dës Kategorie huet dës {{PLURAL:$1|Ënnerkategorie|$1 Ënnerkategorien}}.',
'category-article-count' => 'An dëser Kategorie {{PLURAL:$2|ass just dës Säit.|{{PLURAL:$1|ass just dës Säit|si(nn) $1 Säiten}}, vu(n) $2 am Ganzen.}}',
@@ -252,6 +267,8 @@ $messages = array(
'category-file-count' => 'An dëser Kategorie {{PLURAL:$2|ass just dëse Fichier.|{{PLURAL:$1|ass just dëse Fichier|si(nn) $1 Fichieren}}, vu(n) $2 am Ganzen.}}',
'category-file-count-limited' => '{{PLURAL:$1|Dëse Fichier ass|Dës $1 Fichiere sinn}} an dëser Kategorie.',
'listingcontinuesabbrev' => '(Fortsetzung)',
+'index-category' => 'Indexéiert Säiten',
+'noindex-category' => 'Net-indexéiert Säiten',
'mainpagetext' => "'''MediaWiki gouf installéiert.'''",
'mainpagedocfooter' => "Kuckt w.e.g. [http://meta.wikimedia.org/wiki/Help:Contents d'Benotzerhandbuch] fir den Interface ze personnaliséieren.
@@ -261,10 +278,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]",
-'about' => 'A propos',
-'article' => 'Säit',
-'newwindow' => '(geet an enger neier Fënster op)',
-'cancel' => 'Zréck',
+'about' => 'A propos',
+'article' => 'Säit',
+'newwindow' => '(geet an enger neier Fënster op)',
+'cancel' => 'Zréck',
+'moredotdotdot' => 'Méi …',
+'mypage' => 'Meng Säit',
+'mytalk' => 'Meng Diskussioun',
+'anontalk' => 'Diskussioun fir dës IP Adress',
+'navigation' => 'Navigatioun',
+'and' => '&#32;an',
+
+# Cologne Blue skin
'qbfind' => 'Fannen',
'qbbrowse' => 'Duerchsichen',
'qbedit' => 'Änneren',
@@ -272,15 +297,35 @@ $messages = array(
'qbpageinfo' => 'Kontext',
'qbmyoptions' => 'Meng Säiten',
'qbspecialpages' => 'Spezialsäiten',
-'moredotdotdot' => 'Méi …',
-'mypage' => 'Meng Säit',
-'mytalk' => 'Meng Diskussioun',
-'anontalk' => 'Diskussioun fir dës IP Adress',
-'navigation' => 'Navigatioun',
-'and' => '&#32;an',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaten:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Sujet derbäisetzen',
+'vector-action-delete' => 'Läschen',
+'vector-action-move' => 'Réckelen',
+'vector-action-protect' => 'Spären',
+'vector-action-undelete' => 'Restauréieren',
+'vector-action-unprotect' => 'Spär ophiewen',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hëllefssäit',
+'vector-namespace-image' => 'Fichier',
+'vector-namespace-main' => 'Säit',
+'vector-namespace-media' => 'Mediesäit',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-project' => 'Projetssäit',
+'vector-namespace-special' => 'Spezialsäit',
+'vector-namespace-talk' => 'Diskussioun',
+'vector-namespace-template' => 'Schabloun',
+'vector-namespace-user' => 'Benotzersäit',
+'vector-view-create' => 'Uleeën',
+'vector-view-edit' => 'Änneren',
+'vector-view-history' => 'Versioune weisen',
+'vector-view-view' => 'Liesen',
+'vector-view-viewsource' => 'Quellcode weisen',
+'actions' => 'Aktiounen',
+'namespaces' => 'Nummraim',
+'variants' => 'Varianten',
'errorpagetitle' => 'Feeler',
'returnto' => 'Zréck op $1.',
@@ -330,18 +375,22 @@ $messages = array(
'otherlanguages' => 'Aner Sproochen',
'redirectedfrom' => '(Virugeleet vu(n) $1)',
'redirectpagesub' => 'Viruleedungssäit',
-'lastmodifiedat' => "Dës Säit gouf den $1 ëm $2 Auer fir d'lescht geännert.", # $1 date, $2 time
+'lastmodifiedat' => "Dës Säit gouf den $1 ëm $2 Auer fir d'lescht geännert.",
'viewcount' => 'Dës Säit gouf bis elo {{PLURAL:$1|emol|$1-mol}} ofgefrot.',
'protectedpage' => 'Gespaarte Säit',
'jumpto' => 'Wiesselen op:',
'jumptonavigation' => 'Navigatioun',
'jumptosearch' => 'Sich',
+'view-pool-error' => "Pardon, d'Servere si fir de Moment iwwerlaascht.
+Zevill Benotzer versichen dës Säit ze gesinn.
+Waart w.e.g. e bëssen ier Dir versicht dës Säit nach emol opzeruffen.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Iwwer {{SITENAME}}',
'aboutpage' => 'Project:Iwwer',
'copyright' => 'Inhalt ass zur Verfügung gestallt ënnert der $1.<br />',
-'copyrightpagename' => '{{SITENAME}} Copyright',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Aktualitéit',
'currentevents-url' => 'Project:Aktualitéit',
@@ -349,8 +398,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Hëllef beim Änneren',
'edithelppage' => 'Help:Wéi änneren ech eng Säit',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Hëllef',
'mainpage' => 'Haaptsäit',
'mainpage-description' => 'Haaptsäit',
@@ -430,10 +477,6 @@ De läschten Datebank Query war:
"$1"
vun der Funktioun "$2".
D\'Datebank huet de Feeler "$3: $4" gemellt.',
-'noconnect' => 'Et gëtt zur Zäit technesch Problemer op dëser Wiki, an et konnt keng Verbindung mat dem Datebankserver opgemaach ginn.<br />
-$1',
-'nodb' => "D'Datebank $1 konnt net gewielt ginn",
-'cachederror' => 'Folgend Säit ass eng Kopie aus dem Cache an net onbedéngt aktuell.',
'laggedslavemode' => 'Opgepasst: Dës Säit ass net onbedéngt um neiste Stand.',
'readonly' => "D'Datebank ass gespaart",
'enterlockreason' => "Gitt w.e.g. e Grond u firwat d'Datebak gespaart ass, a wéi laang dës Spär ongeféier bestoe soll.",
@@ -451,6 +494,8 @@ Mellt dëst w.e.g. bei engem [[Special:ListUsers/sysop|Administrateur]] a vergie
'readonly_lag' => "D'Datebank gouf automatesch gespaart fir datt d'Zweetserveren (slaves) nees mat dem Haaptserver (master) synchron geschalt kënne ginn.",
'internalerror' => 'Interne Feeler',
'internalerror_info' => 'Interne Feeler: $1',
+'fileappenderrorread' => '"$1" konnt während dem Derbäisetze net geliest ginn.',
+'fileappenderror' => '"$1" konnt net bäi "$2" derbäigesat ginn.',
'filecopyerror' => 'De Fichier "$1" konnt net op "$2" kopéiert ginn.',
'filerenameerror' => 'De Fichier "$1" konnt net op "$2" ëmbenannt ginn.',
'filedeleteerror' => 'De Fichier "$1" konnt net geläscht ginn.',
@@ -460,7 +505,8 @@ Mellt dëst w.e.g. bei engem [[Special:ListUsers/sysop|Administrateur]] a vergie
'unexpected' => 'Onerwarte Wert: "$1"="$2".',
'formerror' => 'Feeler: Dat wat Dir aginn hutt konnt net verschafft ginn.',
'badarticleerror' => 'Dës Aktioun kann net op dëser Säit duerchgefouert ginn.',
-'cannotdelete' => "D'Bild oder d'Säit kann net geläscht ginn (ass waarscheinlech schonns vun engem Anere geläscht ginn).",
+'cannotdelete' => 'D\'Bild oder d\'Säit "$1" konnt net geläscht ginn.
+Et ka sinn datt et scho vun engem Anere geläscht gouf.',
'badtitle' => 'Schlechten Titel',
'badtitletext' => 'De gewënschten Titel ass net valabel, eidel, oder een net korrekten Interwiki Link.',
'perfcached' => 'Dës Date kommen aus dem Cache a si méiglecherweis net aktuell:',
@@ -491,7 +537,6 @@ $2',
'virus-unknownscanner' => 'onbekannten Antivirus:',
# Login and logout pages
-'logouttitle' => 'Benotzer-Ofmeldung',
'logouttext' => "'''Dir sidd elo ofgemellt.'''
Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech [[Special:UserLogin|erëm umellt]].
@@ -500,7 +545,6 @@ Opgepasst: Op verschiddene Säite gesäit et nach esou aus, wéi wann Dir nach u
'welcomecreation' => '== Wëllkomm, $1! ==
Äre Kont gouf kreéiert.
Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
-'loginpagetitle' => 'Benotzer-Umeldung',
'yourname' => 'Benotzernumm:',
'yourpassword' => 'Passwuert:',
'yourpasswordagain' => 'Passwuert nach eemol antippen:',
@@ -511,6 +555,7 @@ Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
'nav-login-createaccount' => 'Aloggen',
'loginprompt' => "Fir sech op {{SITENAME}} umellen ze kënnen, mussen d'Cookien aktivéiert sinn.",
'userlogin' => 'Aloggen / Benotzerkont uleeën',
+'userloginnocreate' => 'Umellen',
'logout' => 'Ofmellen',
'userlogout' => 'Ausloggen',
'notloggedin' => 'Net ageloggt',
@@ -523,28 +568,8 @@ Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
'badretype' => 'Är Passwierder stëmmen net iwwerdeneen.',
'userexists' => 'Dëse Benotzernumm gëtt scho benotzt.
Sicht iech een anere Benotzernumm.',
-'youremail' => 'E-Mailadress:',
-'username' => 'Benotzernumm:',
-'uid' => 'Benotzer ID:',
-'prefs-memberingroups' => 'Member vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:',
-'yourrealname' => 'Richtegen Numm:',
-'yourlanguage' => 'Sprooch vun der Benotzeruewerfläch:',
-'yourvariant' => 'Sproochvariant:',
-'yournick' => 'Ënnerschrëft:',
-'badsig' => "D'Syntax vun ärer Ënnerschëft ass net korrekt; iwwerpréift w.e.g. ären HTML Code.",
-'badsiglength' => 'Är Ënnerschrëft ass ze laang.
-Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
-'yourgender' => 'Geschlecht:',
-'gender-unknown' => 'Net uginn',
-'gender-male' => 'Männlech',
-'gender-female' => 'Weiblech',
-'prefs-help-gender' => "Fakultativ: gëtt benotzt fir eng ''Gender-korrekt'' Uried duerch d'Software. Dës Informatioun ass ëffentlech.",
-'email' => 'E-Mail',
-'prefs-help-realname' => 'Äre richtegen Numm ass fakultativ. Wann Dir en ugitt, gëtt e benotzt fir Iech Är Kontributiounen zouzeuerdnen.',
'loginerror' => 'Feeler beim umellen',
-'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si erméiglecht et Iech Äert Passwuert ze mailen wann Dir et vergiess hutt.
-Dir kënnt et och zouloossen datt aner Benotzer iech - iwwert e Link op Ärer Benotzersäit oder Ärer Diskussiounssäit - kontaktéiere kënnen ouni datt Dir är Identitéit präisgitt.",
-'prefs-help-email-required' => 'Eng gëlteg E-Mailadress gëtt heifir gebraucht.',
+'createaccounterror' => 'Benotzerkont konnt net opgemaach ginn: $1',
'nocookiesnew' => "De Benotzerkont gouf ugeluecht, awer Dir sidd net ageloggt.
{{SITENAME}} brauch fir dës Funktioun Cookien.
Dir hutt d'Cookien desaktivéiert.
@@ -558,15 +583,18 @@ Beim Benotzernumm gëtt tëschent groussen a klenge Buchstawen ënnerscheed (cas
Kuckt w.e.g. op d\'Schreifweis richteg ass, oder [[Special:UserLogin/signup|maache en neie Benotzerkont op]].',
'nosuchusershort' => 'De Benotzernumm "<nowiki>$1</nowiki>" gëtt et net. Kuckt w.e.g. op d\'Schreifweis richteg ass.',
'nouserspecified' => 'Gitt w.e.g. e Benotzernumm un.',
+'login-userblocked' => 'Dëse Benotzer ass gespaart. Aloggen ass net erlaabt.',
'wrongpassword' => 'Dir hutt e falscht (oder kee) Passwuert aginn. Probéiert w.e.g. nach eng Kéier.',
'wrongpasswordempty' => "D'Passwuert dat Dir aginn hutt war eidel. Probéiert w.e.g. nach eng Kéier.",
-'passwordtooshort' => 'Ärt Passwuert ass ongülteg oder ze kuerz: Et muss mindestens {{PLURAL:$1|1 Zeeche|$1 Zeeche}} laang sinn an et däerf net mat dem Benotzernumm identesch sinn.',
+'passwordtooshort' => 'Passwierder musse mindestens {{PLURAL:$1|1 Zeeche|$1 Zeeche}} laang sinn.',
+'password-name-match' => 'Äert Passwuert muss verschidde vun Ärem Benotzernumm sinn.',
'mailmypassword' => 'Neit Passwuert per E-Mail kréien',
'passwordremindertitle' => 'Neit Passwuert fir ee {{SITENAME}}-Benotzerkont',
'passwordremindertext' => 'Iergend een (waarscheinlech Dir, mat der IP-Adress $1) huet en neit Passwuert fir {{SITENAME}} ($4) gefrot. Een temporäert Passwuert fir de Benotzer $2 gouf ugeluecht an et ass: $3. Wann et dëst ass wat Dir wollt, da sollt Dir Iech elo aloggen an en neit Passwuert eraussichen. Äert temporärt Passwuert leeft a(n) {{PLURAL:$5|engem Dag| $5 Deeg}} of.
Wann een aneren dës Ufro sollt gemaach hunn oder wann Dir Iech an der Zwëschenzäit nees un Äert Passwuert erënnere kënnt, an Dir Äert Passwuert net ännere wëllt, da kënnt Dir weider Äert aalt Passwuert benotzen.',
'noemail' => 'De Benotzer "$1" huet keng E-Mailadress uginn.',
+'noemailcreate' => 'Dir musst eng valabel E-Mailadress uginn',
'passwordsent' => 'Een neit Passwuert gouf un déi fir de Benotzer "$1" gespäichert E-Mailadress geschéckt.
Mellt iech w.e.g. domat un, soubal Dir et kritt hutt.',
'blocked-mailpassword' => "Déi vun Iech benotzten IP-Adress ass fir d'Ännere vu Säite gespaart. Fir Mëssbrauch ze verhënneren, gouf d'Méiglechkeet fir een neit Passwuert unzefroen och gespaart.",
@@ -591,9 +619,11 @@ Gitt eng valabel E-Mailadress an oder loosst dëst Feld eidel.',
Dir sollt Iech aloggen an Äert Passwuert elo änneren.
Falls dëse Benotzerkont ongewollt ugeluecht ginn ass kënnt Dir dës Noriicht einfach ignoréieren.',
+'usernamehasherror' => "Am Benotzernumm däerfe keng ''hash'' Zeeche sinn",
'login-throttled' => "Dir hutt zevill dacks versicht d'Passwuert vun dësem Benotzerkont anzeginn.
Waart w.e.g. ier Dir et nach eng Kéier versicht.",
'loginlanguagelabel' => 'Sprooch: $1',
+'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et esou ausgesäit wéi wann se vun engem Futtise Browser oder Proxy-Tëschespäicher kënnt.',
# Password reset dialog
'resetpass' => 'Passwuert änneren',
@@ -606,18 +636,13 @@ Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
'retypenew' => 'Neit Passwuert nach eemol antippen:',
'resetpass_submit' => 'Passwuert aginn an umellen',
'resetpass_success' => 'Äert Passwuert gouf geännert. Loggt iech elo an ...',
-'resetpass_bad_temporary' => 'Ongültegt temporairt Passwuert.
-Dir hutt ärt Passwuert scho geännert oder een neit temporairt Passwuert ugefrot.',
'resetpass_forbidden' => 'Passwierder kënnen net geännert ginn.',
'resetpass-no-info' => 'Dir musst ageloggt sinn, fir direkt op dës Säit ze kommen.',
'resetpass-submit-loggedin' => 'Passwuert änneren',
+'resetpass-submit-cancel' => 'Annulléieren',
'resetpass-wrong-oldpass' => 'Net valabelt temporäert oder aktuellt Passwuert.
Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwuert ugefrot.',
'resetpass-temp-password' => 'Temporäert Passwuert:',
-'resetpass-log' => 'Logbuch vun den zréckgesate Passwierder',
-'resetpass-logtext' => "Hei ass d'Logbuch vun de Benotzer denen hiirt Passwuert vun engem Admin zréckgesat gouf.",
-'resetpass-logentry' => "huet d'Passwuert vum Benotzer:$1 geännert",
-'resetpass-comment' => "Grond fir d'Passwuert zréckzesetzen:",
# Edit page toolbar
'bold_sample' => 'Fettgedréckten Text',
@@ -695,7 +720,6 @@ Gitt dës Donnéeë w.e.g bei allen Ufroen zu dëser Spär un.',
'blockededitsource' => "Den Text vun '''ären Ännerungen''' op '''$1''' steet hei ënnendrënner:",
'whitelistedittitle' => "Login noutwännesch fir z'änneren",
'whitelistedittext' => 'Dir musst iech $1, fir Säiten änneren ze kënnen.',
-'confirmedittitle' => "D'Confirmatioun vun ärer E-Mailadress ass erfuederlech fir z'änneren.",
'confirmedittext' => 'Dir musst är E-Mail-Adress confirméieren, ier Dir Ännerunge maache kënnt.
Gitt w.e.g. eng E-Mailadrss a validéiert se op äre [[Special:Preferences|Benotzerastellungen]].',
'nosuchsectiontitle' => 'Et gëtt keen esou enn Abschnitt',
@@ -714,9 +738,16 @@ D'Passwuert fir dësen neie Benotzerkont kann op der ''[[Special:ChangePassword|
'noarticletext' => 'Dës Säit huet momentan keen Text.
Dir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel sichen]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an den entspriechende Logbicher nokucken] oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} esou eng Säit uleeën]</span>.',
+'noarticletext-nopermission' => 'Elo ass keen Text op dëser Säit.
+Dir kënnt op anere Säiten [[Special:Search/{{PAGENAME}}|no dësem Sàitentitel sichen]],
+oder <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an de Logbicher sichen]</span>.',
'userpage-userdoesnotexist' => 'De Benotzerkont "$1" gëtt et net. Iwwerpréift w.e.g. op Dir dës Säit erschafe/ännere wëllt.',
+'userpage-userdoesnotexist-view' => 'De Benotzerkont "$1" ass net registréiert.',
+'blocked-notice-logextract' => 'Dëse Benotzer ass elo gespaart.
+Déi lescht Entrée am Logbuch vun de Späre steet als Referenz hei ënnendrënner:',
'clearyourcache' => "'''Opgepasst - Nom Späichere muss der Ärem Browser seng Cache eidel maachen, fir d'Ännerungen ze gesinn.''' '''Mozilla / Firefox / Safari: ''' dréckt op ''Shift'' während Dir ''reload'' klickt oder dréckt ''Ctrl-F5'' oder ''Ctrl-R''(''Command-R'' op engem Macintosh);'''Konqueror: ''' klickt ''Reload'' oder dréckt ''F5'' '''Opera:''' maacht de Cache eidel an ''Tools → Preferences;'' '''Internet Explorer:''' dréckt ''Ctrl'' während Dir op ''Refresh'' klickt oder dréckt ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tipp:''' Benotzt de ''Kucken ouni ze späichere''-Button, fir äre neien CSS/JS virum Späicheren ze testen.",
+'usercssyoucanpreview' => "'''Tipp:''' Benotzt de \"{{int:showpreview}}\"-Knäppchen, fir Ären neien CSS virum Späicheren ze testen.",
+'userjsyoucanpreview' => "'''Tipp:''' Benotzt de ''{{int:showpreview}}''-Knäppchen, fir Ären neie JavaScript virum Späicheren ze testen.",
'usercsspreview' => "'''Bedenkt: Dir kuckt just är Benotzer CSS.
Si gouf nach net gepäichert!'''",
'userjspreview' => "'''Denkt drun datt Dir äre Javascript nëmmen test, nach ass näischt gespäichert!'''",
@@ -765,13 +796,13 @@ Iwwerleet w.e.g., ob eng Opdeelung vun der Säit a méi kleng Abschnitter méigl
'readonlywarning' => "'''OPGEPASST: D'Datebank gouf wéinst Maintenanceaarbechte fir Säitenännerunge gespaart, dofir kënnt Dir déi Säit den Ament net ofspäicheren. Versuergt den Text a versicht d'Ännerunge méi spéit nach emol ze maachen.'''
Den Administrateur den d'Datebank gespaart huet, huet dës Erklärung ginn: $1",
-'protectedpagewarning' => "'''OPGEPASST: Dës Säit gouf gespaart a kann nëmme vun engem Administrateur geännert ginn.'''",
-'semiprotectedpagewarning' => "'''Bemierkung:''' Dës Säit gouf esou gespaart, datt nëmme ugemellte Benotzer s'ännere kënnen.",
+'protectedpagewarning' => "'''OPGEPASST: Dës Säit gouf gespaart a kann nëmme vun engem Administrateur geännert ginn.''' Déi lescht Zeil aus de Logbicher fannt Dir zu Ärer Informatioun hei ënnendrënner.",
+'semiprotectedpagewarning' => "'''Bemierkung:''' Dës Säit gouf esou gespaart, datt nëmme ugemellte Benotzer s'ännere kënnen. Déi lescht Zeil aus de Logbicher fannt Dir zu Ärer Informatioun hei ënnendrënner.",
'cascadeprotectedwarning' => "'''Passt op:''' Dës Säit gouf gespaart a kann nëmme vu Benotzer mat Administreursrechter geännert ginn. Si ass an dës {{PLURAL:$1|Säit|Säiten}} agebonnen, déi duerch Cascadespäroptioun gespaart {{PLURAL:$1|ass|sinn}}:'''",
-'titleprotectedwarning' => "'''OPGEPASST: Dës Säit gouf gespaart sou datt [[Special:ListGroupRights|spezifesch Rechter]] gebraucht gi fir se uleeën ze kënnen.'''",
-'templatesused' => 'Schablounen déi op dëser Säit am Gebrauch sinn:',
-'templatesusedpreview' => 'Schablounen déi an dëser nach net gespäicherter Versioun benotzt ginn:',
-'templatesusedsection' => 'Schablounen déi an dësem Abschnitt am Gebrauch sinn:',
+'titleprotectedwarning' => "'''OPGEPASST: Dës Säit gouf gespaart sou datt [[Special:ListGroupRights|spezifesch Rechter]] gebraucht gi fir se uleeën ze kënnen.''' Déi lescht Zeil aus de Logbicher fannt Dir zu Ärer Informatioun hei ënnendrënner.",
+'templatesused' => '{{PLURAL:$1|Schabloun|Schablounen}} déi op dëser Säit am Gebrauch sinn:',
+'templatesusedpreview' => '{{PLURAL:$1|Schabloun|Schablounen}} déi an dëser nach net gespäicherter Versioun benotzt ginn:',
+'templatesusedsection' => '{{PLURAL:$1|Schabloun|Schablounen}} déi an dësem Abschnitt am Gebrauch {{PLURAL:$1|ass|sinn}}:',
'template-protected' => '(gespaart)',
'template-semiprotected' => '(gespaart fir net-ugemellten an nei Benotzer)',
'hiddencategories' => 'Dës Säit gehéiert zu {{PLURAL:$1|1 verstoppter Kategorie|$1 verstoppte Kategorien}}:',
@@ -779,16 +810,18 @@ Den Administrateur den d'Datebank gespaart huet, huet dës Erklärung ginn: $1",
'nocreatetitle' => "D'Uleeë vun neie Säiten ass limitéiert.",
'nocreatetext' => "Op {{SITENAME}} gouf d'Schafe vun neie Säite limitéiert. Dir kënnt Säiten déi scho bestinn änneren oder Iech [[Special:UserLogin|umellen]].",
'nocreate-loggedin' => 'Dir hutt keng Berechtigung fir nei Säiten unzeleeën.',
+'sectioneditnotsupported-title' => 'Ännere vum Abschnitt gëtt net ënnerstëtzt',
+'sectioneditnotsupported-text' => "D'Ännere vun Abschnitten gëtt op dëser Ännerungssäit net ënnertstetzt.",
'permissionserrors' => 'Berechtigungs-Feeler',
'permissionserrorstext' => 'Dir hutt net genuch Rechter fir déi Aktioun auszeféieren. {{PLURAL:$1|Grond|Grënn}}:',
'permissionserrorstext-withaction' => 'Dir sidd, aus {{PLURAL:$1|dësem Grond|dëse Grënn}}, net berechtegt $2 :',
-'recreate-deleted-warn' => "'''Opgepasst: Dës Säit gouf schonns eng Kéier geläscht.'''
+'recreate-moveddeleted-warn' => "'''Opgepasst: Dir sidd amgaang eng Säit unzeleeën déi schonn eng Kéier geläscht gouf.'''
-Frot iech ob et wierklech sënnvoll ass dës Säit nees nei ze schafen.
-Fir iech z'informéieren fannt Dir hei d'Läschlescht mat dem Grond:",
-'deleted-notice' => 'Dës Seite gouf geläscht.
-Hei ass den Extrait aus der Läschlëscht fir déi Säit.',
-'deletelog-fulllog' => 'Déi ganz Lëscht weisen',
+Frot Iech ob et wierklech sënnvoll ass dës Säit nees nei ze schafen.
+Fir Iech z'informéieren fannt Dir hei d'Logbuch vum Läsche mam Grond:",
+'moveddeleted-notice' => 'Dës Säit gouf geläscht.
+Hei ass den Extrait aus dem Logbuch vum Réckelen a Läsche fir déi Säit.',
+'log-fulllog' => 'Dat ganzt Logbuch weisen',
'edit-hook-aborted' => "D'Ännerung gouf ouni Erklärung vun enger Schnëttstell (hook) ofgebrach.",
'edit-gone-missing' => "D'Säit konnt net aktualiséiert ginn.
Si gouf anscheinend geläscht.",
@@ -806,6 +839,7 @@ Et däerfen net méi wéi $2 {{PLURAL:$2|Ufro|Ufroe}} sinn, aktuell {{PLURAL:$2|
'post-expand-template-argument-warning' => "'''Warnung: Op dëser Säit ass mindestens een Argument an enger Schabloun dat eng ze grouss Expansiounsgréisst huet. Dës Argumenter goufen ewechgelooss.",
'post-expand-template-argument-category' => 'Säiten, op dene mindestens e Parameter vun enger Schabloun vergiess ginn ass',
'parser-template-loop-warning' => 'Endlos Schleef an der Schabloun: [[$1]] entdeckt',
+'language-converter-depth-warning' => "D'Limite vun der déift vun der Sproochëmwandlung gouf iwwerschratt ($1)",
# "Undo" feature
'undo-success' => "D'Ännerung gëtt réckgängeg gemaach. Iwwerpréift w.e.g. de Verglach ënnedrënner fir nozekuckeen ob et esou richteg ass, duerno späichert w.e.g d'Ännerungen of fir dës Aktioun ofzeschléissen.",
@@ -825,7 +859,7 @@ De Benotzer $3 huet "$2" als Grond uginn.',
'currentrev' => 'Aktuell Versioun',
'currentrev-asof' => 'Aktuell Versioun vum $1',
'revisionasof' => 'Versioun vum $1',
-'revision-info' => 'Versioun vum $1 vum $2.', # Additionally available: $3: revision id
+'revision-info' => 'Versioun vum $1 vum $2.',
'previousrevision' => '← Méi al Versioun',
'nextrevision' => 'Méi rezent Ännerung→',
'currentrevisionlink' => 'Aktuell Versioun',
@@ -839,7 +873,7 @@ De Benotzer $3 huet "$2" als Grond uginn.',
*(lescht) = Ënnerscheed mat der aler Versioun,
*k = Kleng Ännerung.",
'history-fieldset-title' => 'An de Versioune sichen',
-'deletedrev' => '[geläscht]',
+'history-show-deleted' => 'nëmmen déi geläschten',
'histfirst' => 'Eelsten',
'histlast' => 'Neisten',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Byten}})',
@@ -848,70 +882,113 @@ De Benotzer $3 huet "$2" als Grond uginn.',
# Revision feed
'history-feed-title' => 'Historique vun de Versiounen',
'history-feed-description' => 'Versiounshistorique fir dës Säit op {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 ëm $2', # user at time
+'history-feed-item-nocomment' => '$1 ëm $2',
'history-feed-empty' => 'Déi ugefrote Säit gëtt et net.
Vläicht gouf se geläscht oder geréckelt.
[[Special:Search|Sich op]] {{SITENAME}} no passenden neie Säiten.',
# Revision deletion
-'rev-deleted-comment' => '(Bemierkung geläscht)',
-'rev-deleted-user' => '(Benotzernumm ewechgeholl)',
-'rev-deleted-event' => '(Aktioun aus dem Logbuch erausgeholl)',
-'rev-deleted-text-permission' => "Dës Versioun vun der Säit gouf '''geläscht'''.
-Dir fannt eventuell méi Informatiounen an der [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läschlëscht].",
-'rev-deleted-text-view' => "Dës Versioun vun der Säit gouf '''eläscht'''.
-Als Administrateur kënnt Dir se weiderhi gesinn; Dir fannt eventuell méi Detailer am [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
-'rev-deleted-no-diff' => "Dir kënnt dësen Ënnerscheed net gesinn, well eng vun de Versiounen '''geläscht gouf'''.
-Detailer stinn eventuell am [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
-'rev-deleted-unhide-diff' => "Eng vun de Versioune vun dësem Ënnerscheed gouf '''geläscht'''.
-Detailer stinn eventuell am [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Logbuch vun de Läschungen].
-Als Administrateur kënnt Dir [$1 mat dësem Link de Versiounsënnerschied kucke] wann Dir weiderfuere wëllt.",
-'rev-delundel' => 'weisen/verstoppen',
-'revisiondelete' => 'Versioune läschen/restauréieren',
-'revdelete-nooldid-title' => 'Ongülteg Zilversioun',
-'revdelete-nooldid-text' => 'Dir hutt entweder keng Versioun uginn fir dës Funktioun ze benotzen, déi Versioun déi Dir uginn hutt gëtt et net, oder dir versicht déi aktuell Versioun ze verstoppen.',
-'revdelete-nologtype-title' => 'Keen Typ vu Logbuch uginn',
-'revdelete-nologtype-text' => 'Dir hutt keen Typ vu Logbuch ugi fir dës Aktioun ze maachen.',
-'revdelete-toomanytargets-title' => 'Zevill Ziler',
-'revdelete-toomanytargets-text' => 'Et goufen zevill Type vun Ziler, op deenen dës Aktioun gemaach soll ginn, definéiert.',
-'revdelete-nologid-title' => 'Net valbele Wert am Logbuch',
-'revdelete-nologid-text' => 'Dir hutt kee Logtyp erausgesicht oder de gewielte Logtyp gëtt et net.',
-'revdelete-selected' => "'''{{PLURAL:$2|Gewielte Versioun|Gewielte Versioune}} vu(n) '''$1''' :'''",
-'logdelete-selected' => "'''Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:'''",
-'revdelete-text' => "'''Geläschte Versiounen oder aner geäschte Bestanddeeler sinn net méi ëffentlech zougänglech, si stinn awer weiderhinn an der Versiounsgeschicht vun der Säit.'''
-
-Aner {{SITENAME}}-Administrateure kënnen de geläschten Inhalt oder aner geläschte Bestanddeeler weiderhi gesinn a restauréieren, et sief, et gouf festgeluecht, datt déi Limitatioune vum Accès och fir Administrateure gëllen.
-Confirméiert w.eg. datt Dir dëst maache wellt, datt dir d'Konsequenzen dovu verstitt an datt Dir dëst am Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
-'revdelete-suppress-text' => "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:
+'rev-deleted-comment' => '(Bemierkung geläscht)',
+'rev-deleted-user' => '(Benotzernumm ewechgeholl)',
+'rev-deleted-event' => '(Aktioun aus dem Logbuch erausgeholl)',
+'rev-deleted-user-contribs' => '[Benotzernumm oder IP-Adress ewechgeholl - Ännerung an der Lescht vun de Kontributioune verstoppt]',
+'rev-deleted-text-permission' => "Dës Versioun vun der Säit gouf '''geläscht'''.
+Dir fannt eventuell méi Informatiounen an der [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-deleted-text-unhide' => "Dës Versioun vun der Säit gouf '''geläscht'''.
+Detailer kënnen am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbuch] fonnt ginn.
+Als Administrateur kënnt Dir nach ëmmer [$1 dës Versioun kucken] wann Dir weiderfuere wëllt.",
+'rev-suppressed-text-unhide' => "Dës Versioun vun der Säit gouf '''geläscht'''.
+Detailler kënnen am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läschlogbuch] sinn.
+Als Adminstrateur kënnt Dir [$1 dës Versioun gesi] wann Dir weiderfuere wëllt.",
+'rev-deleted-text-view' => "Dës Versioun vun der Säit gouf '''geläscht'''.
+Als Administrateur kënnt Dir se gesinn; Dir fannt eventuell méi Detailer am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-suppressed-text-view' => "Dës Versioun vun der Säit gouf '''geläscht'''.
+Als Administrateur kënnt dir se gesinn; méi Detailler fannt Dir eventuell am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-deleted-no-diff' => "Dir kënnt dësen Ënnerscheed net gesinn, well eng vun de Versiounen '''geläscht gouf'''.
+Detailer stinn eventuell am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-suppressed-no-diff' => "Dir kënnt dësen Diff (Ënnerscheed) net gesinn well eng vun de Versioune '''geläscht''' gouf.",
+'rev-deleted-unhide-diff' => "Eng vun de Versioune vun dësem Ënnerscheed gouf '''geläscht'''.
+Detailer stinn eventuell am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].
+Als Administrateur kënnt Dir [$1 mat dësem Link de Versiounsënnerscheed kucke] wann Dir weiderfuere wëllt.",
+'rev-suppressed-unhide-diff' => "Eng vun de Versioune vun dësem Ënnerscheed gouf '''geläscht'''.
+Detailer stinn eventuell am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].
+Als Administrateur kënnt Dir [$1 mat dësem Link de Versiounsënnerscheed kucke] wann Dir weiderfuere wëllt.",
+'rev-deleted-diff-view' => "Eng Versioun vun dësem Versiounsënnerscheed gouf '''geläscht'''.
+Als Administrateur kënnt Dir dësen Ënnerscheed gesinn; et ka sinn datt Dir méi Detailer am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbuch vum Läsche] fannt.",
+'rev-suppressed-diff-view' => "Eng vun de Versioune vun dësem Ënnerscheeed gouf '''ënnerdréckt'''.
+Als Administrateur kënnt Dir dësen Ënnerscheed gesinn; et ka sinn datt Dir Detailer am [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Logbuch vun den Ënnerdréckunge] fannt.",
+'rev-delundel' => 'weisen/verstoppen',
+'rev-showdeleted' => 'Weisen',
+'revisiondelete' => 'Versioune läschen/restauréieren',
+'revdelete-nooldid-title' => 'Ongülteg Zilversioun',
+'revdelete-nooldid-text' => 'Dir hutt entweder keng Versioun uginn fir dës Funktioun ze benotzen, déi Versioun déi Dir uginn hutt gëtt et net, oder dir versicht déi aktuell Versioun ze verstoppen.',
+'revdelete-nologtype-title' => 'Keen Typ vu Logbuch uginn',
+'revdelete-nologtype-text' => 'Dir hutt keen Typ vu Logbuch ugi fir dës Aktioun ze maachen.',
+'revdelete-nologid-title' => 'Net valbele Wert am Logbuch',
+'revdelete-nologid-text' => 'Dir hutt kee Logtyp erausgesicht oder de gewielte Logtyp gëtt et net.',
+'revdelete-no-file' => 'De Fichier deen ugi war gëtt et net.',
+'revdelete-show-file-confirm' => 'Sidd Dir sécher datt Dir déi geläschte Versioun vum Fichier "<nowiki>$1</nowiki>" vum $2 ëm $3 gesi wëllt?',
+'revdelete-show-file-submit' => 'Jo',
+'revdelete-selected' => "'''{{PLURAL:$2|Gewielte Versioun|Gewielte Versioune}} vu(n) '''$1''' :'''",
+'logdelete-selected' => "'''Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:'''",
+'revdelete-text' => "'''Geläschte Versiounen oder aner geäschte Bestanddeeler sinn net méi ëffentlech zougänglech, si stinn awer weiderhinn an der Versiounsgeschicht vun der Säit.'''
+Aner {{SITENAME}}-Administrateure kënnen de geläschten Inhalt oder aner geläschte Bestanddeeler weiderhi gesinn a restauréieren, et sief, et gouf festgeluecht, datt déi Limitatioune vum Accès och fir Administrateure gëllen.",
+'revdelete-confirm' => "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
+'revdelete-suppress-text' => "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:
* Net ubruechte perséinlechen Informatiounen
*: ''Adressen, Telefonsnummeren, Sozialversécherungsnummeren asw.''",
-'revdelete-legend' => "Limitatioune fir d'Sichtbarkeet festleeën",
-'revdelete-hide-text' => 'Text vun der Versioun verstoppen',
-'revdelete-hide-name' => 'Logbuch-Aktioun verstoppen',
-'revdelete-hide-comment' => 'Bemierkung verstoppen',
-'revdelete-hide-user' => 'Dem Auteur säi Benotzernumm/IP verstoppen',
-'revdelete-hide-restricted' => 'Donnéeën och fir Administrateuren suppriméieren geneesou wéi fir déi Aner',
-'revdelete-suppress' => 'Grond vum Läschen och fir Administrateure verstoppt',
-'revdelete-hide-image' => 'Bildinhalt verstoppen',
-'revdelete-unsuppress' => 'Limitatiounen fir restauréiert Versiounen ophiewen',
-'revdelete-log' => 'Grond:',
-'revdelete-submit' => 'Op déi gewielte Versioun uwenden',
-'revdelete-logentry' => 'Sichtbarkeet vun der Versioun gouf geännert fir [[$1]]',
-'logdelete-logentry' => "huet d'Sichtbarkeet vun [[$1]] geännert",
-'revdelete-success' => "'''Sichtbarkeet vun de Versioune gouf aktualiséiert.''''",
-'logdelete-success' => "'''Sichbarkeet vum Logbuch geännert.'''",
-'revdel-restore' => 'Sichtbarkeet änneren',
-'pagehist' => 'Versioune vun dëser Säit',
-'deletedhist' => 'Geläschte Versiounen',
-'revdelete-content' => 'Inhalt',
-'revdelete-summary' => 'Resumé änneren',
-'revdelete-uname' => 'Benotzernumm',
-'revdelete-restricted' => 'Limitatioune fir Administrateuren ageschalt',
-'revdelete-unrestricted' => 'Limitatioune fir Administrateuren opgehuewen',
-'revdelete-hid' => '$1 verstoppen',
-'revdelete-unhid' => '$1 weisen',
-'revdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Versioun|Versiounen}}',
-'logdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Evenement|Evenementer}}',
+'revdelete-legend' => "Limitatioune fir d'Sichtbarkeet festleeën",
+'revdelete-hide-text' => 'Text vun der Versioun verstoppen',
+'revdelete-hide-image' => 'Bildinhalt verstoppen',
+'revdelete-hide-name' => 'Logbuch-Aktioun verstoppen',
+'revdelete-hide-comment' => 'Bemierkung verstoppen',
+'revdelete-hide-user' => 'Dem Auteur säi Benotzernumm/IP verstoppen',
+'revdelete-hide-restricted' => 'Donnéeën och fir Administrateuren suppriméieren geneesou wéi fir déi Aner',
+'revdelete-radio-same' => '(net änneren)',
+'revdelete-radio-set' => 'Jo',
+'revdelete-radio-unset' => 'Neen',
+'revdelete-suppress' => 'Grond vum Läschen och fir Administrateure verstoppt',
+'revdelete-unsuppress' => 'Limitatiounen fir restauréiert Versiounen ophiewen',
+'revdelete-log' => 'Grond:',
+'revdelete-submit' => 'Op déi gewielte {{PLURAL:$1|Versioun|Versiounen}} uwenden',
+'revdelete-logentry' => 'Sichtbarkeet vun der Versioun gouf geännert fir [[$1]]',
+'logdelete-logentry' => "huet d'Sichtbarkeet vun [[$1]] geännert",
+'revdelete-success' => "'''Sichtbarkeet vun de Versioune gouf aktualiséiert.''''",
+'revdelete-failure' => "'''Sichtbarkeet vun der Versioun konnt net aktualiséiert ginn:'''
+$1",
+'logdelete-success' => "'''Sichbarkeet vum Logbuch geännert.'''",
+'logdelete-failure' => "'''D'Sichtbarkeet vum Logbuch konnt net agestllt ginn:'''
+$1",
+'revdel-restore' => 'Sichtbarkeet änneren',
+'pagehist' => 'Versioune vun dëser Säit',
+'deletedhist' => 'Geläschte Versiounen',
+'revdelete-content' => 'Inhalt',
+'revdelete-summary' => 'Resumé änneren',
+'revdelete-uname' => 'Benotzernumm',
+'revdelete-restricted' => 'Limitatioune fir Administrateuren ageschalt',
+'revdelete-unrestricted' => 'Limitatioune fir Administrateuren opgehuewen',
+'revdelete-hid' => '$1 verstoppen',
+'revdelete-unhid' => '$1 weisen',
+'revdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Versioun|Versiounen}}',
+'logdelete-log-message' => '$1 fir $2 {{PLURAL:$2|Evenement|Evenementer}}',
+'revdelete-hide-current' => 'Feeler beim Verstoppe vum Objet vum $2 ëm $1: et ass déi aktuell Versioun.
+Si kann net verstoppt ginn.',
+'revdelete-show-no-access' => 'Feeler beim Weise vum Objet vum $1 ëm $2 Auer: dësen Objet gouf als "limitéiert2 markéiert.
+Dir hutt keen Zougang zu dësem Objet.',
+'revdelete-modify-no-access' => 'Feeler beim Ännere vum Objet vum $1 ëm $2 Auer: dësen Objet gouf als "limitéiert" markéiert.
+Dir hutt keen Zougang dozou.',
+'revdelete-modify-missing' => 'Feeler beim Ännere vun der ID $1: si feelt an der Datebank!',
+'revdelete-no-change' => "'''Opgepasst:''' D'Element vum $2 ëm $1 Auer huet schonn déi ugefrote Sichtbarkeetsastellung.",
+'revdelete-concurrent-change' => "Feeler beim Ännere vum Element vum $1 ëm $2 Auer: säit Statut schéngt geännert ginn ze si während Dir vericht hutt et z'änneren.
+Kuckt w.e.g. an de Logbicher no.",
+'revdelete-only-restricted' => 'Feler beim verstoppe vum Objet vum $2, $1: Dir kënnt keng Objete virun den Administrateure verstoppen ouni och eng vun den aneren Optiounen vum weisen erauszesichen.',
+'revdelete-reason-dropdown' => "* Generell Läschgrënn
+**Verletzung vun den Droits d'Auteur
+**Net ubruechte perséinlech Informatioun",
+'revdelete-otherreason' => 'Aneren/zousätzleche Grond:',
+'revdelete-reasonotherlist' => 'Anere Grond:',
+'revdelete-edit-reasonlist' => 'Läschgrënn änneren',
+'revdelete-offender' => 'Auteur vun der Versioun:',
# Suppression log
'suppressionlog' => 'Lëscht vun de verstoppten a geläschte Säiten',
@@ -952,67 +1029,13 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
'mergelogpagetext' => 'Lëscht vun de rezenten Zesummeféierunge vu Versiounsgeschichten.',
# Diffs
-'history-title' => 'Versiounshistorique vun „$1“',
-'difference' => '(Ennerscheed tëscht Versiounen)',
-'lineno' => 'Linn $1:',
-'compareselectedversions' => 'Ausgewielte Versioune vergläichen',
-'visualcomparison' => 'Visuelle Vergläich',
-'wikicodecomparison' => 'Wikitext vergläichen',
-'editundo' => 'zréck',
-'diff-multi' => '({{PLURAL:$1|Eng Tëscheversioun gëtt net|$1 Tëscheversioune ginn net}} gewisen)',
-'diff-movedto' => 'op $1 geréckelt',
-'diff-styleadded' => '$1 Style derbäigesat',
-'diff-added' => '$1 derbäigesat',
-'diff-changedto' => 'geännert op $1',
-'diff-movedoutof' => 'aus $1 geréckelt',
-'diff-styleremoved' => '$1 Style ewechgeholl',
-'diff-removed' => '$1 ewechgeholl',
-'diff-changedfrom' => 'geännert vu(n) $1',
-'diff-src' => 'Quell',
-'diff-withdestination' => 'mit dem Zil $1',
-'diff-with' => '&#32;mat $1 $2',
-'diff-with-final' => '&#32;a(n) $1 $2',
-'diff-width' => 'Breet',
-'diff-height' => 'Héicht',
-'diff-p' => "een '''Abschnitt'''",
-'diff-blockquote' => "e '''Block'''",
-'diff-h1' => "eng '''Iwwerschrëft (1. Niveau)'''",
-'diff-h2' => "eng '''Iwwerschrëft (2. Niveau)'''",
-'diff-h3' => "eng '''Iwwerschrëft (3. Niveau)'''",
-'diff-h4' => "eng '''Iwwerschrëft (4. Niveau)'''",
-'diff-h5' => "eng '''Iwwerschrëft (5. Niveau)'''",
-'diff-pre' => "e '''formatéierte Block'''",
-'diff-div' => "e '''Blockelement'''",
-'diff-ul' => "eng '''Lëscht'''",
-'diff-ol' => "eng '''numeréiert Lëscht'''",
-'diff-li' => "en '''Objet an enger Lëscht'''",
-'diff-table' => "eng '''Tabell'''",
-'diff-tbody' => "en '''Inhalt vun enger Tabell'''",
-'diff-tr' => "eine '''Reih'''",
-'diff-td' => "eng '''Zell'''",
-'diff-th' => "eng '''Iwwerschrëft'''",
-'diff-br' => "een '''Zeilenëmbroch'''",
-'diff-hr' => "eng '''horizontal Linn'''",
-'diff-code' => "e '''Beräich Computercode'''",
-'diff-dl' => "eng '''Definitiounslëscht'''",
-'diff-dt' => "e '''Begrëff als Definitioun'''",
-'diff-dd' => "eng '''Definitioun'''",
-'diff-input' => "eng '''Entrée'''",
-'diff-form' => "ein '''Formulair'''",
-'diff-img' => "e '''Bild'''",
-'diff-span' => "e '''Span'''",
-'diff-a' => "e '''Link'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''fett'''",
-'diff-strong' => "'''staark'''",
-'diff-em' => "'''betount'''",
-'diff-font' => "'''Schrëft'''",
-'diff-big' => "'''grouss'''",
-'diff-del' => "'''geläscht'''",
-'diff-tt' => "'''fest Breet'''",
-'diff-sub' => "'''déifgestallt'''",
-'diff-sup' => "'''héichgestallt'''",
-'diff-strike' => "'''duerchgestrach'''",
+'history-title' => 'Versiounshistorique vun „$1“',
+'difference' => '(Ennerscheed tëscht Versiounen)',
+'lineno' => 'Linn $1:',
+'compareselectedversions' => 'Ausgewielte Versioune vergläichen',
+'showhideselectedversions' => 'Erausgesichte Versioune weisen/verstoppen',
+'editundo' => 'zréck',
+'diff-multi' => '({{PLURAL:$1|Eng Tëscheversioun gëtt net|$1 Tëscheversioune ginn net}} gewisen)',
# Search results
'searchresults' => 'Resultat vun der Sich',
@@ -1020,30 +1043,25 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
'searchresulttext' => "Fir méi Informatiounen iwwer d'Sichfunktiounen op {{SITENAME}}, kuckt w.e.g op [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Dir hutt no "[[:$1]]" gesicht ([[Special:Prefixindex/$1|all Säiten déi mat "$1" ufänken]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Säiten déi op "$1" linken]])',
'searchsubtitleinvalid' => 'Dir hutt no "$1" gesicht.',
-'noexactmatch' => "'''Et gëtt keng Säit mam Titel \"\$1\".'''
-
-Dir kënnt [[:\$1|déi Säit uleeën]].",
-'noexactmatch-nocreate' => "'''Et gëtt keng Säit mam Titel \"\$1\".'''",
'toomanymatches' => 'Zevill Resultater goufe fonnt, versicht w.e.g. eng aner Ufro',
'titlematches' => 'Iwwereneestëmmungen am Säitentitel',
'notitlematches' => 'Keng Iwwereneestëmmunge mat Säitentitelen',
'textmatches' => 'Iwwereneestëmmungen am Säitentext',
'notextmatches' => 'Keng Iwwereneestëmmungen',
-'prevn' => 'vireg $1',
-'nextn' => 'nächst $1',
+'prevn' => 'vireg {{PLURAL:$1|$1}}',
+'nextn' => 'nächst {{PLURAL:$1|$1}}',
'prevn-title' => 'Vireg $1 {{PLURAL:$1|Resultat|Resultater}}',
'nextn-title' => 'Nächst $1 {{PLURAL:$1|Resultat|Resultater}}',
'shown-title' => '$1 {{PLURAL:$1|Resultat|Resultater}} pro Säit weisen',
-'viewprevnext' => 'Weis ($1) ($2) ($3)',
+'viewprevnext' => 'Weis ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Optioune vun der Sich',
'searchmenu-exists' => "* Säit '''[[$1]]'''",
'searchmenu-new' => "'''Opmaache vun der Säit ''[[:$1|$1]]'' op dëser Wiki!'''",
'searchhelp-url' => 'Help:Hëllef',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|All Säite weisen, déi mat dem Begrëff ufänken nodeem Dir sicht]]',
'searchprofile-articles' => 'Säite mat Inhalt',
-'searchprofile-articles-and-proj' => 'Inhalts- a Projetssäiten',
-'searchprofile-project' => 'Säite vum Projet',
-'searchprofile-images' => 'Fichieren',
+'searchprofile-project' => 'Hëllef a Projetssäiten',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Erweidert',
'searchprofile-articles-tooltip' => 'Sichen a(n) $1',
@@ -1051,8 +1069,6 @@ Dir kënnt [[:\$1|déi Säit uleeën]].",
'searchprofile-images-tooltip' => 'No Fichiere sichen',
'searchprofile-everything-tooltip' => 'Op alle Säiten nom Inhalt sichen (inclusiv Diskussiounssäiten)',
'searchprofile-advanced-tooltip' => 'Sich an den Nummraim déi an de perséinlichen Astellungen festgeluecht sinn',
-'prefs-search-nsdefault' => 'Sich mat de Standard-Astellungen:',
-'prefs-search-nscustom' => 'Sich an den agestallten Nummraim:',
'search-result-size' => '$1 ({{PLURAL:$2|1 Wuert|$2 Wierder}})',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Viruleedung $1)',
@@ -1065,11 +1081,12 @@ Dir kënnt [[:\$1|déi Säit uleeën]].",
'search-mwsuggest-disabled' => 'keng Virschléi',
'search-relatedarticle' => 'A Verbindung',
'mwsuggest-disable' => 'Ajax-Virschléi ausschalten',
+'searcheverything-enable' => 'An allen Nummraim sichen',
'searchrelated' => 'a Verbindng',
'searchall' => 'all',
'showingresults' => "Hei gesitt der {{PLURAL:$1| '''1''' Resultat|'''$1''' Resultater}}, ugefaang mat #'''$2'''.",
'showingresultsnum' => "Hei gesitt der {{PLURAL:$3|'''1''' Resultat|'''$3''' Resultater}}, ugefaange mat #'''$2'''.",
-'showingresultstotal' => "Weis ënnendrënner d'{{PLURAL:$4|Resultat '''$1'''|Resultater '''$1 - $2'''}} vu(n) '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' vu(n) '''$3'''|Resultater '''$1 - $2''' vu(n) '''$3'''}} fir '''$4'''",
'nonefound' => "'''Opgepasst''': Nëmmen e puer Nummraim gi ''par default'' duerchsicht. Versicht an ärer Ufro ''all:'' anzestellen fir de gesamten Inhalt (inklusiv Diskussiounssäiten, Schablonen, ...), oder benotzt déi gwënschten Nummraim als Virastellung.",
'search-nonefound' => 'Fir är Ufro gouf näischt fonnt.',
'powersearch' => 'Erweidert Sich',
@@ -1077,111 +1094,150 @@ Dir kënnt [[:\$1|déi Säit uleeën]].",
'powersearch-ns' => 'Sich an den Nummraim:',
'powersearch-redir' => 'Viruleedunge weisen',
'powersearch-field' => 'Sich no:',
+'powersearch-togglelabel' => 'Markéieren:',
+'powersearch-toggleall' => 'All',
+'powersearch-togglenone' => 'Keen',
'search-external' => 'Extern Sich',
'searchdisabled' => "D'Sichfunktioun op {{SITENAME}} ass ausgeschalt. Dir kënnt iwwerdeems mat Hëllef vu Google sichen. Bedenkt awer, datt deenen hire Sichindex fir {{SITENAME}} eventuell net dem aktuellste Stand entsprecht.",
+# Quickbar
+'qbsettings' => 'Geschirläischt',
+'qbsettings-none' => 'Keen',
+'qbsettings-fixedleft' => 'Lénks, fest',
+'qbsettings-fixedright' => 'Riets, fest',
+'qbsettings-floatingleft' => 'schwiewt lenks',
+'qbsettings-floatingright' => 'Schwiewt riets',
+
# Preferences page
-'preferences' => 'Astellungen',
-'mypreferences' => 'Meng Astellungen',
-'prefs-edits' => 'Zuel vun den Ännerungen:',
-'prefsnologin' => 'Net ageloggt',
-'prefsnologintext' => 'Dir musst <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}}agelogged]</span> sinn, fir är Astellungen änneren ze kënnen.',
-'prefsreset' => "D'Astellungen goufen zréckgesat esou wéi se ofgespäichert waren.",
-'qbsettings' => 'Geschirläischt',
-'qbsettings-none' => 'Keen',
-'qbsettings-fixedleft' => 'Lénks, fest',
-'qbsettings-fixedright' => 'Riets, fest',
-'qbsettings-floatingleft' => 'schwiewt lenks',
-'qbsettings-floatingright' => 'Schwiewt riets',
-'changepassword' => 'Passwuert änneren',
-'skin' => 'Skin',
-'skin-preview' => 'Kucken',
-'math' => 'Math/TeX',
-'dateformat' => 'Datumsformat',
-'datedefault' => 'Egal (Standard)',
-'datetime' => 'Datum an Auerzäit',
-'math_failure' => 'Parser-Feeler',
-'math_unknown_error' => 'Onbekannte Feeler',
-'math_unknown_function' => 'Onbekannte Funktioun',
-'math_lexing_error' => "'Lexing'-Feeler",
-'math_syntax_error' => 'Syntaxfeeler',
-'math_image_error' => "d'PNG-Konvertéierung huet net fonctionnéiert;
-iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
-'math_bad_tmpdir' => 'Den temporäre Repertire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
-'math_bad_output' => 'Den Zilrepertoire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
-'prefs-personal' => 'Benotzerprofil',
-'prefs-rc' => 'Rezent Ännerungen',
-'prefs-watchlist' => 'Iwwerwaachungslëscht',
-'prefs-watchlist-days' => 'Zuel vun den Deeg, déi an der Iwwerwaachungslëscht ugewise solle ginn:',
-'prefs-watchlist-days-max' => '(Maximal 7 Deeg)',
-'prefs-watchlist-edits' => 'Maximal Zuel vun den Ännerungen déi an der erweiderter Iwwerwaachungslëscht ugewise solle ginn:',
-'prefs-watchlist-edits-max' => '(Maximal Zuel: 1000)',
-'prefs-misc' => 'Verschiddenes',
-'prefs-resetpass' => 'Passwuert änneren',
-'saveprefs' => 'Späicheren',
-'resetprefs' => 'Net gespäichert Ännerungen zrécksetzen',
-'restoreprefs' => 'All Standardastellungen zrécksetzen',
-'textboxsize' => 'Änneren',
-'prefs-edit-boxsize' => 'Gréisst vun der Ännerungsfënster:',
-'rows' => 'Zeilen',
-'columns' => 'Kolonnen',
-'searchresultshead' => 'Sich',
-'resultsperpage' => 'Zuel vun de Resultater pro Säit:',
-'contextlines' => 'Zuel vun de Linnen:',
-'contextchars' => 'Kontextcharactère pro Linn:',
-'stub-threshold' => 'Maximum (a Byte) bei deem e Link nach ëmmer am <a href="#" class="stub">Skizze-Format</a> gewise gëtt:',
-'recentchangesdays' => 'Deeg déi an de Rezenten Ännerungen ugewise ginn:',
-'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Dag|Deeg}})',
-'recentchangescount' => 'Zuel vun den Ännerungen déi bei de rezenten Ännerungen de Versiounen an den Log-Säite, als Standard gewise ginn:',
-'savedprefs' => 'Är Astellunge goufe gespäichert.',
-'timezonelegend' => 'Zäitzon:',
-'timezonetext' => "¹Gitt d'Zuel vun de Stonnen an, déi tëscht ärer Zäitzon an der Serverzäit (UTC) leien .",
-'localtime' => 'Lokalzäit:',
-'timezoneselect' => 'Zäitzon:',
-'timezoneuseserverdefault' => 'De Standardwert vum Server benotzen',
-'timezoneuseoffset' => 'Aner (Differenz uginn)',
-'timezoneoffset' => 'Zäit-Differenz¹:',
-'servertime' => 'Serverzäit:',
-'guesstimezone' => 'Vum Browser iwwerhuelen',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlanteschen Ozean',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indeschen Ozean',
-'timezoneregion-pacific' => 'Pazifeschen Ozean',
-'allowemail' => 'E-Maile vun anere Benotzer kréien.',
-'prefs-searchoptions' => 'Sichoptiounen',
-'prefs-namespaces' => 'Nummraim',
-'defaultns' => 'Dës Nummraim duerchsichen:',
-'default' => 'Standard',
-'files' => 'Fichieren',
-'prefs-custom-css' => 'Benotzerdefinéierten CSS',
-'prefs-custom-js' => 'Benotzerdefinéierte JS',
+'preferences' => 'Astellungen',
+'mypreferences' => 'Meng Astellungen',
+'prefs-edits' => 'Zuel vun den Ännerungen:',
+'prefsnologin' => 'Net ageloggt',
+'prefsnologintext' => 'Dir musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}ageloggt]</span> sinn, fir Är Astellungen änneren ze kënnen.',
+'changepassword' => 'Passwuert änneren',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Kucken',
+'prefs-math' => 'Math/TeX',
+'datedefault' => 'Egal (Standard)',
+'prefs-datetime' => 'Datum an Auerzäit',
+'prefs-personal' => 'Benotzerprofil',
+'prefs-rc' => 'Rezent Ännerungen',
+'prefs-watchlist' => 'Iwwerwaachungslëscht',
+'prefs-watchlist-days' => 'Zuel vun den Deeg, déi an der Iwwerwaachungslëscht ugewise solle ginn:',
+'prefs-watchlist-days-max' => '(Maximal 7 Deeg)',
+'prefs-watchlist-edits' => 'Maximal Zuel vun den Ännerungen déi an der erweiderter Iwwerwaachungslëscht ugewise solle ginn:',
+'prefs-watchlist-edits-max' => '(Maximal Zuel: 1000)',
+'prefs-watchlist-token' => 'Iwwerwaachungslëscht-Token:',
+'prefs-misc' => 'Verschiddenes',
+'prefs-resetpass' => 'Passwuert änneren',
+'prefs-email' => 'E-Mail-Optiounen',
+'prefs-rendering' => 'Ausgesinn',
+'saveprefs' => 'Späicheren',
+'resetprefs' => 'Net gespäichert Ännerungen zrécksetzen',
+'restoreprefs' => 'All Standardastellungen zrécksetzen',
+'prefs-editing' => 'Änneren',
+'prefs-edit-boxsize' => 'Gréisst vun der Ännerungsfënster:',
+'rows' => 'Zeilen',
+'columns' => 'Kolonnen',
+'searchresultshead' => 'Sich',
+'resultsperpage' => 'Zuel vun de Resultater pro Säit:',
+'contextlines' => 'Zuel vun de Linnen:',
+'contextchars' => 'Kontextcharactère pro Linn:',
+'stub-threshold' => 'Maximum (a Byte) bei deem e Link nach ëmmer am <a href="#" class="stub">Skizze-Format</a> gewise gëtt:',
+'recentchangesdays' => 'Deeg déi an de Rezenten Ännerungen ugewise ginn:',
+'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Dag|Deeg}})',
+'recentchangescount' => 'Zuel vun den Ännerungen déi als Standard gewise ginn:',
+'prefs-help-recentchangescount' => 'Inklusiv Rezent Ännerungen, Versiounshistoriquen a Logbicher.',
+'prefs-help-watchlist-token' => 'Wann dir dëst Feld mat engem Geheimcode ausfëllt gëtt en RSS-Feed fir Är Iwwerwaachungslëscht generéiert.
+Jidfereen deen de Geheimcode aus dësem Feld kennt kann Är Iwwerwaachungslëscht liesen, wielt dofir e séchere Wert.
+Hei ass een zoufälleg generéierte Wert deen Dir benotze kënnt: $1',
+'savedprefs' => 'Är Astellunge goufe gespäichert.',
+'timezonelegend' => 'Zäitzon:',
+'localtime' => 'Lokalzäit:',
+'timezoneuseserverdefault' => 'De Standardwert vum Server benotzen',
+'timezoneuseoffset' => 'Aner (Differenz uginn)',
+'timezoneoffset' => 'Zäit-Differenz¹:',
+'servertime' => 'Serverzäit:',
+'guesstimezone' => 'Vum Browser iwwerhuelen',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlanteschen Ozean',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indeschen Ozean',
+'timezoneregion-pacific' => 'Pazifeschen Ozean',
+'allowemail' => 'E-Maile vun anere Benotzer kréien.',
+'prefs-searchoptions' => 'Sichoptiounen',
+'prefs-namespaces' => 'Nummraim',
+'defaultns' => 'Soss an dësen Nummraim sichen:',
+'default' => 'Standard',
+'prefs-files' => 'Fichieren',
+'prefs-custom-css' => 'Benotzerdefinéierten CSS',
+'prefs-custom-js' => 'Benotzerdefinéierte JS',
+'prefs-reset-intro' => "Dir kënnt dës Säit benotze fir Är Astellungen zréck op d'Standard-Astllungen ze setzen.
+Dëst kann net réckgängeg gemaach ginn.",
+'prefs-emailconfirm-label' => 'E-Mail Confirmatioun:',
+'prefs-textboxsize' => 'Gréisst vun der Ännerungsfënster',
+'youremail' => 'E-Mailadress:',
+'username' => 'Benotzernumm:',
+'uid' => 'Benotzer ID:',
+'prefs-memberingroups' => 'Member vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:',
+'prefs-registration' => 'Zäitpunkt vum Opmaache vum Benotzerkont:',
+'yourrealname' => 'Richtegen Numm:',
+'yourlanguage' => 'Sprooch vun der Benotzeruewerfläch:',
+'yourvariant' => 'Sproochvariant:',
+'yournick' => 'Ënnerschrëft:',
+'prefs-help-signature' => 'Bemierkungen op Diskussiounssäite solle mat "<nowiki>~~~~</nowiki>" ënnerscheiwwe ginn. Dëst gëtt dann an Är Ënnerschrëft an en Zäitstempel ëmgewandelt.',
+'badsig' => "D'Syntax vun ärer Ënnerschëft ass net korrekt; iwwerpréift w.e.g. ären HTML Code.",
+'badsiglength' => 'Är Ënnerschrëft ass ze laang.
+Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
+'yourgender' => 'Geschlecht:',
+'gender-unknown' => 'Net uginn',
+'gender-male' => 'Männlech',
+'gender-female' => 'Weiblech',
+'prefs-help-gender' => "Fakultativ: gëtt benotzt fir eng ''Gender-korrekt'' Uried duerch d'Software. Dës Informatioun ass ëffentlech.",
+'email' => 'E-Mail',
+'prefs-help-realname' => 'Äre richtegen Numm ass fakultativ. Wann Dir en ugitt, gëtt e benotzt fir Iech Är Kontributiounen zouzeuerdnen.',
+'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si erméiglecht et Iech Äert Passwuert ze mailen wann Dir et vergiess hutt.
+Dir kënnt et och zouloossen datt aner Benotzer iech - iwwert e Link op Ärer Benotzersäit oder Ärer Diskussiounssäit - kontaktéiere kënnen ouni datt Dir är Identitéit präisgitt.",
+'prefs-help-email-required' => 'Eng gëlteg E-Mailadress gëtt heifir gebraucht.',
+'prefs-info' => 'Grondinformatioun',
+'prefs-i18n' => 'Internationalisatioun',
+'prefs-signature' => 'Ënnerschrëft',
+'prefs-dateformat' => 'Format vum Datum',
+'prefs-timeoffset' => 'Zäitënnerscheed',
+'prefs-advancedediting' => 'Méi Optiounen',
+'prefs-advancedrc' => 'Méi Optiounen',
+'prefs-advancedrendering' => 'Méi Optiounen',
+'prefs-advancedsearchoptions' => 'Méi Optiounen',
+'prefs-advancedwatchlist' => 'Méi Optiounen',
+'prefs-display' => 'Optioune vum Affichage',
+'prefs-diffs' => 'Ënnerscheeder',
# User rights
-'userrights' => 'Benotzerrechterverwaltung', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Benotzergrupp verwalten',
-'userrights-user-editname' => 'Benotzernumm uginn:',
-'editusergroup' => 'Benotzergruppen änneren',
-'editinguser' => "Ännere vun de Rechter vum Benotzer '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Benotzergruppen änneren',
-'saveusergroups' => 'Benotzergruppe späicheren',
-'userrights-groupsmember' => 'Member vun:',
-'userrights-groups-help' => "Dir kënnt d'Gruppen zu deenen dëse Benotzer gehéiert änneren.
+'userrights' => 'Benotzerrechterverwaltung',
+'userrights-lookup-user' => 'Benotzergrupp verwalten',
+'userrights-user-editname' => 'Benotzernumm uginn:',
+'editusergroup' => 'Benotzergruppen änneren',
+'editinguser' => "Ännere vun de Rechter vum Benotzer '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Benotzergruppen änneren',
+'saveusergroups' => 'Benotzergruppe späicheren',
+'userrights-groupsmember' => 'Member vun:',
+'userrights-groupsmember-auto' => 'Implizit Member vun:',
+'userrights-groups-help' => "Dir kënnt d'Gruppen zu deenen dëse Benotzer gehéiert änneren.
* Een ugekräizt Haische bedeit, datt de Benotzer Member vun dëser Grupp ass.
* Een net ugekräizt Haische bedeit, datt de Benotzer net Member vun dëser Grupp ass.
* E Stäerchen (*) bedeit datt Dir d'Grupp net méi ewechhuele kënnt wann e bis eemol derbäigesat ass oder gouf.",
-'userrights-reason' => 'Grond:',
-'userrights-no-interwiki' => "Dir hutt net déi néideg Rechter, fir d'Rechter vu Benoutzer op anere Wikien z'änneren.",
-'userrights-nodatabase' => "D'Datebank $1 gëtt et net oder se ass net lokal.",
-'userrights-nologin' => 'Dir musst mat engem Administrateurs-Benotzerkont [[Special:UserLogin|ageloggt sinn]], fir Benotzerrechter änneren ze kënnen.',
-'userrights-notallowed' => "Dir hutt net déi néideg Rechter fir d'Rechter vun anere Benotzer z'änneren.",
-'userrights-changeable-col' => 'Gruppen déi Dir ännere kënnt',
-'userrights-unchangeable-col' => 'Gruppen déi Dir net ännere kënnt',
+'userrights-reason' => 'Grond:',
+'userrights-no-interwiki' => "Dir hutt net déi néideg Rechter, fir d'Rechter vu Benoutzer op anere Wikien z'änneren.",
+'userrights-nodatabase' => "D'Datebank $1 gëtt et net oder se ass net lokal.",
+'userrights-nologin' => 'Dir musst mat engem Administrateurs-Benotzerkont [[Special:UserLogin|ageloggt sinn]], fir Benotzerrechter änneren ze kënnen.',
+'userrights-notallowed' => "Dir hutt net déi néideg Rechter fir d'Rechter vun anere Benotzer z'änneren.",
+'userrights-changeable-col' => 'Gruppen déi Dir ännere kënnt',
+'userrights-unchangeable-col' => 'Gruppen déi Dir net ännere kënnt',
# Groups
'group' => 'Grupp:',
@@ -1234,6 +1290,7 @@ iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
'right-bigdelete' => 'Säite mat engem groussen Historique läschen',
'right-deleterevision' => 'Spezifesch Versioune vu Säite läschen a restauréieren',
'right-deletedhistory' => 'Weis geläschte Versiounen am Historique, ouni den assoziéierten Text',
+'right-deletedtext' => "Geläschten Text an d'Ännerungen tëschent de geläschte Versioune weisen",
'right-browsearchive' => 'Geläschte Säite sichen',
'right-undelete' => 'Eng Säit restauréieren',
'right-suppressrevision' => 'Virun den Administrateure verstoppte Versiounen nokucken a restauréieren',
@@ -1247,6 +1304,8 @@ iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
'right-editprotected' => 'Protegéiert Säiten (ouni Kaskadeprotectioun) änneren',
'right-editinterface' => 'De Benotzerinterface änneren',
'right-editusercssjs' => 'Anere Benotzer hir CSS a JS Fichieren änneren',
+'right-editusercss' => 'Anere Benotzer hir CSS Fichieren änneren',
+'right-edituserjs' => 'Anere Benotzer hir JS Fichieren änneren',
'right-rollback' => "Ännerunge vum läschte Benotzer vun enger spezieller Säit séier z'récksetzen ''(rollback)''",
'right-markbotedits' => 'Annuléiert Ännerungen als Botännerungen uweisen',
'right-noratelimit' => 'Net limitéiert duerch Zäitlimitatiounen um Server',
@@ -1263,6 +1322,8 @@ iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
'right-siteadmin' => "Datebank spären an d'Spär ophiewen",
'right-reset-passwords' => 'Anere Benotzer hir Passwierder zrécksetzen',
'right-override-export-depth' => 'Säiten exportéieren inklusiv de verlinkte Säite bis zu enger Déift vu 5',
+'right-versiondetail' => 'Informatiounen iwwert déi erweidert Software-Versioun weisen',
+'right-sendemail' => 'Anere Benotzer E-Maile schécken',
# User rights log
'rightslog' => 'Logbuch vun de Benotzerrechter',
@@ -1312,6 +1373,15 @@ iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
'recentchanges-legend' => 'Optioune vun de rezenten Ännerungen',
'recentchangestext' => "Op dëser Säit kënnt Dir déi rezent Ännerungen op '''{{SITENAME}}''' gesinn.",
'recentchanges-feed-description' => 'Verfollegt mat dësem Feed déi rezent Ännerungen op {{SITENAME}}.',
+'recentchanges-label-legend' => 'Legend: $1.',
+'recentchanges-legend-newpage' => '$1 - nei Säit',
+'recentchanges-label-newpage' => 'Dës Ännerung huet eng nei Säit ugeluecht',
+'recentchanges-legend-minor' => '$1 - kleng Ännerung',
+'recentchanges-label-minor' => 'Dëst ass eng kleng Ännerung',
+'recentchanges-legend-bot' => '$1 - Ännerung duerch e Bot',
+'recentchanges-label-bot' => 'Dës Ännerung gouf vun engem Bot gemaacht',
+'recentchanges-legend-unpatrolled' => '$1 - net-nogekuckten Ännerung',
+'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
'rcnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerungen}} {{PLURAL:$2|vum leschten Dag|vun de leschten '''$2''' Deeg}}, Stand: $4 ëm $5 Auer.",
'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
'rclistfrom' => 'Weis Ännerunge vu(n) $1 un',
@@ -1339,6 +1409,8 @@ iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
# Recent changes linked
'recentchangeslinked' => 'Ännerungen op verlinkte Säiten',
+'recentchangeslinked-feed' => 'Ännerungen op verlinkte Säiten',
+'recentchangeslinked-toolbox' => 'Ännerungen op verlinkte Säiten',
'recentchangeslinked-title' => 'Ännerungen a Verbindung mat "$1"',
'recentchangeslinked-noresult' => 'Am ausgewielten Zäitraum goufen op de verlinkte Säite keng Ännerunge gemaach.',
'recentchangeslinked-summary' => "Dëst ass eng Lëscht mat Ännerunge vu verlinkte Säiten op eng bestëmmte Säit (oder vu Membersäite vun der spezifizéierter Kategorie).
@@ -1349,8 +1421,8 @@ Säite vun [[Special:Watchlist|Ärer Iwwerwaachungslëscht]] si '''fett''' gesch
# Upload
'upload' => 'Eroplueden',
'uploadbtn' => 'Fichier eroplueden',
-'reupload' => 'Nach eemol eroplueden',
'reuploaddesc' => 'Eroplueden ofbriechen an zréck op de Formulaire fir Eropzelueden',
+'upload-tryagain' => 'Déi geännert Beschreiwung vum Fichier schécken',
'uploadnologin' => 'Net ageloggt',
'uploadnologintext' => 'Dir musst [[Special:UserLogin|ageloggt sinn]], fir Fichieren eroplueden zu kënnen.',
'upload_directory_missing' => 'De Repertoire an deen Dir eropluede wollt ($1) feelt a konnt net vum Webserver ugeluecht ginn.',
@@ -1382,6 +1454,7 @@ Kuckt [[Special:NewFiles|d'Gallerie vun de neie Fichieren]] wann Dir méi e visu
'minlength1' => "D'Nimm vu Fichiere musse mindestens e Buschtaf am Numm hunn.",
'illegalfilename' => 'Am Fichiersnumm "$1" sti Schrëftzeechen, déi net am Numm vun enger Säit erlaabt sinn. W.e.g. nennt de Fichier anescht, a probéiert dann nach eng Kéier.',
'badfilename' => 'Den Numm vum Fichier gouf an "$1" ëmgeännert.',
+'filetype-mime-mismatch' => 'Dateierweiderung passt net op de MIME-Typ.',
'filetype-badmime' => 'Fichiere vum MIME-Typ "$1" kënnen net eropgeluede ginn.',
'filetype-bad-ie-mime' => 'Dëse Fichier kann net eropgeluede ginn, well den Internet Explorer en als „$1“ erkennt, deen net erlaabt ass well et e potentiell geféierleche Fichierstyp ass.',
'filetype-unwanted-type' => "'''\".\$1\"''' ass een onerwënschte Fichiersformat.
@@ -1404,7 +1477,6 @@ Fir datt äre Resumé do opdaucht musst Dir e manuell änneren.
* Numm vum Fichier deen Dir versicht eropzelueden: '''<tt>[[:$1]]</tt>'''
* Numm vum Fichier deen et scho gëtt: '''<tt>[[:$2]]</tt>'''
Wielt w.e.g. en aneren Numm.",
-'fileexists-thumb' => "<center>'''Dëse Fichier gëtt et'''</center>",
'fileexists-thumbnail-yes' => "Beim Fichier schéngt et sech ëm e klengt Bild ''(Miniatur)'' ze handelen. [[$1|thumb]]
Kuckt de Fichier '''<tt>[[:$1]]</tt>''' w.e.g. no.
Wann et sech ëm d'Bild an der Originalgréisst handelt, da brauch kee separat Bild als Minitaur eropgelueden ze ginn.",
@@ -1419,6 +1491,7 @@ Wann Dir dëse Fichier trotzdeem eropluede wëllt da gitt w.e.g. zréck a luet d
'file-deleted-duplicate' => 'En identesche Fichier ([[$1]]) gouf virdru geläscht. Kuckt w.e.g. an der Lëscht vum Läsche no, Ier Dir en nach emol eropluet.',
'successfulupload' => 'Eroplueden erfollegräich',
'uploadwarning' => 'Opgepasst',
+'uploadwarning-text' => "Ännert d'Beschreiwung hei ënnedrënner w.e.g. a versicht et nach eng Kéier.",
'savefile' => 'Fichier späicheren',
'uploadedimage' => 'huet "[[$1]]" eropgelueden',
'overwroteimage' => 'huet eng nei Versioun vun "[[$1]]" eropgelueden',
@@ -1426,11 +1499,14 @@ Wann Dir dëse Fichier trotzdeem eropluede wëllt da gitt w.e.g. zréck a luet d
'uploaddisabledtext' => "D'Eropluede vu Fichieren ass ausgeschalt.",
'php-uploaddisabledtext' => "D'Eropluede vu Fichieren ass am PHP desaktivéiert. Kuckt w.e.g. d'Astellung ''file_uploads'' no.",
'uploadscripted' => 'An dësem Fichier ass HTML- oder Scriptcode, dee vun engem Webbrowser falsch interpretéiert kéint ginn.',
-'uploadcorrupt' => 'De Fichier ass futti oder en huet eng falsch Fichiers-Erweiderung. Kuckt de Fichier w.e.g. no a luet de Fichier nach eng Kéier erop.',
'uploadvirus' => 'An dësem Fichier ass ee Virus! Detailer: $1',
+'upload-source' => 'Quellfichier',
'sourcefilename' => 'Numm vum Originalfichier:',
+'sourceurl' => 'Quell-URL:',
'destfilename' => 'Numm ënner deem de Fichier gespäichert gëtt:',
'upload-maxfilesize' => 'Maximal Fichiersgréisst: $1',
+'upload-description' => 'Beschreiwung vum Fichier',
+'upload-options' => 'Optioune vum Eroplueden',
'watchthisupload' => 'Dëse Fichier iwwerwaachen',
'filewasdeleted' => 'E Fichier mat dësem Numm gouf schonn eemol eropgelueden an duerno nees geläscht. Kuckt w.e.g op $1 no, ier Dir dee Fichier nach eng Kéier eropluet.',
'upload-wasdeleted' => "'''Opgepasst: Dir luet e Fichier erop, dee schonn eng Kéier geläscht gouf.'''
@@ -1439,15 +1515,42 @@ Kuckt w.e.g. genee no, ob dat neit Eroplueden de Richtlinnen entsprécht.
Zu Ärer Informatioun steet an der Läsch-Lëscht de Grond vum virege Läschen:",
'filename-bad-prefix' => "Den Numm vum Fichier fänkt mat '''„$1“''' un. Dësen Numm krut en automatesch vun der Kamera a seet näischt iwwer dat aus, wat drop ass. Gitt dem Fichier w.e.gl. en Numm, deen den Inhalt besser beschreift, an deen net verwiesselt ka ginn.",
-'upload-proto-error' => 'Falsche Protokoll',
-'upload-proto-error-text' => "D'URL muss mat <code>http://</code> oder <code>ftp://</code> ufänken.",
-'upload-file-error' => 'Interne Feeler',
-'upload-file-error-text' => 'Beim Erstelle vun engem temporäre Fichier um Server ass een interne Feeler geschitt.
+'upload-proto-error' => 'Falsche Protokoll',
+'upload-proto-error-text' => "D'URL muss mat <code>http://</code> oder <code>ftp://</code> ufänken.",
+'upload-file-error' => 'Interne Feeler',
+'upload-file-error-text' => 'Beim Erstelle vun engem temporäre Fichier um Server ass een interne Feeler geschitt.
Informéiert w.e.g. e vun den [[Special:ListUsers/sysop|Administrateuren]].',
-'upload-misc-error' => 'Onbekannte Feeler beim Eroplueden',
-'upload-misc-error-text' => "Beim Eroplueden ass en onbekannte Feeler geschitt.
+'upload-misc-error' => 'Onbekannte Feeler beim Eroplueden',
+'upload-misc-error-text' => "Beim Eroplueden ass en onbekannte Feeler geschitt.
Kuckt d'URL w.e.g. no, a vergewëssert iech datt d'Säit online ass a probéiert et dann nach eng Kéier.
Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrateuren]].",
+'upload-too-many-redirects' => "Et waren zevill Viruleedungen fir d'URL do",
+'upload-unknown-size' => 'Onbekannte Gréisst',
+'upload-http-error' => 'Et ass en HTTP-Feeler geschitt: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zougang refuséiert',
+'img-auth-notindir' => 'De gefrote Pad ass net am Upload-Repertoire agestallt.',
+'img-auth-badtitle' => 'Aus "$1" ka kee valabelen Titel gemaach ginn.',
+'img-auth-nologinnWL' => 'Dir sidd net ageloggt a(n) "$1" ass net op der Wäisser Lëscht.',
+'img-auth-nofile' => 'De Fichier "$1" gëtt et net.',
+'img-auth-isdir' => 'Dir versicht op de Repertoire "$1" zouzegräifen.
+Nèemmen Datenofruff ass erlaabt.',
+'img-auth-streaming' => '"$1" lueden.',
+'img-auth-public' => "D'Fonctioun img_auth.php erlaabt et fir Fichieren vun enger privater Wiki erauszeginn.
+Dës Wiki ass als ëffentlech Wiki configuréiert.
+Fir eng oprimal Sécherheet ass img_auth.php ausgeschalt.",
+'img-auth-noread' => 'De Benotzer hut keen Zougang fir "$1" ze liesen',
+
+# HTTP errors
+'http-invalid-url' => 'Net-valabel URL: $1',
+'http-invalid-scheme' => 'URLe mam Schema "$1" ginn net ënnerstëtzt',
+'http-request-error' => "D'HTTP-Ufro huet wéinst engem onbekannte Feeler net fonctionnéiert.",
+'http-read-error' => 'HTTP-Feeler beim Liesen.',
+'http-timed-out' => 'HTTP-Ufro huet ze laang gebraucht (time out).',
+'http-curl-error' => 'Feeler beim Ofruff vun der URL: $1',
+'http-host-unreachable' => "D'URL konnt net erreecht ginn.",
+'http-bad-status' => 'Et gouf e Problem bäi der HTTP-Ufro: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "URL ass net z'erreechen",
@@ -1457,6 +1560,7 @@ Kuckt w.e.g. no op kee Feeler an der URL ass an op de Site och online ass.',
'upload-curl-error28-text' => "Dëse Site huet ze laang gebraucht fir z'äntwerten. Kuckt w. e. g. no, ob dëse Site online ass, waart een Ament a probéiert et dann nach eng Kéier. Et ka sënnvoll sinn, et nach eng Kéier méi spéit ze versichen.",
'license' => 'Lizenzéiert:',
+'license-header' => 'Lizenzéieren',
'nolicense' => 'Keng Lizenz ausgewielt',
'license-nopreview' => '(Kucken ouni ofzespäichere geet net)',
'upload_source_url' => ' (gëlteg, ëffentlech zougänglech URL)',
@@ -1475,38 +1579,42 @@ Kuckt w.e.g. no op kee Feeler an der URL ass an op de Site och online ass.',
'listfiles_count' => 'Versiounen',
# File description page
-'filehist' => 'Versiounen',
-'filehist-help' => 'Klickt op e bestëmmten Zäitpunkt fir déi respektiv Versioun vum Fichier ze kucken.',
-'filehist-deleteall' => 'All Versioune läschen',
-'filehist-deleteone' => 'Läschen',
-'filehist-revert' => 'zrécksetzen',
-'filehist-current' => 'aktuell',
-'filehist-datetime' => 'Versioun vum',
-'filehist-thumb' => 'Miniaturbild',
-'filehist-thumbtext' => "Miniaturbild fir d'Versioun vum $1",
-'filehist-nothumb' => 'Kee Miniaturbild do',
-'filehist-user' => 'Benotzer',
-'filehist-dimensions' => 'Dimensiounen',
-'filehist-filesize' => 'Gréisst vum Fichier',
-'filehist-comment' => 'Bemierkung',
-'imagelinks' => 'Linken op Fichieren',
-'linkstoimage' => 'Dës {{PLURAL:$1|Säit benotzt|Säite benotzen}} dëse Fichier:',
-'linkstoimage-more' => 'Méi wéi {{PLURAL:$1|eng Säit ass|$1 Säite si}} mat dësem Fichier verlinkt.
+'file-anchor-link' => 'Fichier',
+'filehist' => 'Versiounen',
+'filehist-help' => 'Klickt op e bestëmmten Zäitpunkt fir déi respektiv Versioun vum Fichier ze kucken.',
+'filehist-deleteall' => 'All Versioune läschen',
+'filehist-deleteone' => 'Läschen',
+'filehist-revert' => 'zrécksetzen',
+'filehist-current' => 'aktuell',
+'filehist-datetime' => 'Versioun vum',
+'filehist-thumb' => 'Miniaturbild',
+'filehist-thumbtext' => "Miniaturbild fir d'Versioun vum $1",
+'filehist-nothumb' => 'Kee Miniaturbild do',
+'filehist-user' => 'Benotzer',
+'filehist-dimensions' => 'Dimensiounen',
+'filehist-filesize' => 'Gréisst vum Fichier',
+'filehist-comment' => 'Bemierkung',
+'filehist-missing' => 'Fichier feelt',
+'imagelinks' => 'Linken op Fichieren',
+'linkstoimage' => 'Dës {{PLURAL:$1|Säit benotzt|Säite benotzen}} dëse Fichier:',
+'linkstoimage-more' => 'Méi wéi {{PLURAL:$1|eng Säit ass|$1 Säite si}} mat dësem Fichier verlinkt.
Dës Lëscht weist nëmmen {{PLURAL:$1|den éischte Link|déi éischt $1 Linken}} op dëse Fichier.
Eng [[Special:WhatLinksHere/$2|komplett Lëscht]] ass disponibel.',
-'nolinkstoimage' => 'Keng Säit benotzt dëse Fichier.',
-'morelinkstoimage' => 'Weis [[Special:WhatLinksHere/$1|méi Linken]] op dëse Fichier.',
-'redirectstofile' => '{{PLURAL:$1|De Fichier leet|Dës Fichiere leede}} virun op de Fichier:',
-'duplicatesoffile' => '{{PLURAL:$1|De Fichier ass een Doublon|Dës Fichiere sinn Doublone}} vum Fichier ([[Special:FileDuplicateSearch/$2|méi Detailer]]):',
-'sharedupload' => 'Dëse Fichier ass vu(n) $1 a ka vun anere Projete benotzt ginn.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Kuckt w.e.g. $1 fir méi Informatiounen.',
-'shareduploadwiki-desc' => "D'Beschreiwung op senger $1, steet ënnendrënner.",
-'shareduploadwiki-linktext' => 'Datei-Beschreiwungssäit',
-'noimage' => 'Ee Fichier mat dësem Numm gëtt et net, Dir kënnt awer $1.',
-'noimage-linktext' => 'eent eroplueden',
-'uploadnewversion-linktext' => 'Eng nei Versioun vun dësem Fichier eroplueden',
-'shared-repo-from' => 'vu(n) $1', # $1 is the repository name
-'shared-repo' => 'e gemeinsam genotzte Medienarchiv', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Keng Säit benotzt dëse Fichier.',
+'morelinkstoimage' => 'Weis [[Special:WhatLinksHere/$1|méi Linken]] op dëse Fichier.',
+'redirectstofile' => '{{PLURAL:$1|De Fichier leet|Dës Fichiere leede}} virun op de Fichier:',
+'duplicatesoffile' => '{{PLURAL:$1|De Fichier ass een Doublon|Dës Fichiere sinn Doublone}} vum Fichier ([[Special:FileDuplicateSearch/$2|méi Detailer]]):',
+'sharedupload' => 'Dëse Fichier ass vu(n) $1 a ka vun anere Projete benotzt ginn.',
+'sharedupload-desc-there' => "Dëse Fichier ass vu(n) $1 a kann an anere Projete benotzt ginn.
+Kuckt w.e.g. d'[$2 Säit mat der Beschreiwung vum Fichier] fir méi Informatiounen.",
+'sharedupload-desc-here' => "Dëse Fichier ass vu(n) $1 an däerf vun anere Projete benotzt ginn.
+D'Beschreiwung op senger [$2 Beschreiwungssäit] steet hei ënnedrënner.",
+'filepage-nofile' => 'Et gëtt kee Fichier mat deem Numm.',
+'filepage-nofile-link' => 'Et gëtt kee Fichier mat deem Numm, awer Dir kënnt [$1 en eroplueden].',
+'uploadnewversion-linktext' => 'Eng nei Versioun vun dësem Fichier eroplueden',
+'shared-repo-from' => 'vu(n) $1',
+'shared-repo' => 'e gemeinsam genotzte Medienarchiv',
+'shared-repo-name-wikimediacommons' => 'Wikimedia-Commons',
# File reversion
'filerevert' => '"$1" zrécksetzen',
@@ -1535,6 +1643,7 @@ Eng [[Special:WhatLinksHere/$2|komplett Lëscht]] ass disponibel.',
** Verletzung vun den Droits d'auteur
** De Fichier gëtt et nach eng Kéier an der Datebank",
'filedelete-edit-reasonlist' => 'Läschgrënn änneren',
+'filedelete-maintenance' => 'Läschen a Restauréiere vu Fichieren temporär ausgeschalt wéinst Maintenance.',
# MIME search
'mimesearch' => 'Sich no MIME-Zort',
@@ -1556,7 +1665,7 @@ Dir musst ëmmer de Medien- a Subtyp aginn: z. Bsp. <tt>image/jpeg</tt>.",
# Random page
'randompage' => 'Zoufallssäit',
-'randompage-nopages' => 'Et gëtt keng Säiten am Nummraum $1.',
+'randompage-nopages' => 'Et gëtt keng Säiten {{PLURAL:$2|am Nummraum|an den Nummraim}}: $1.',
# Random redirect
'randomredirect' => 'Zoufälleg Viruleedung',
@@ -1568,6 +1677,7 @@ Dir musst ëmmer de Medien- a Subtyp aginn: z. Bsp. <tt>image/jpeg</tt>.",
'statistics-header-edits' => 'Statistik vun den Ännerungen',
'statistics-header-views' => "Sttistiken iwwert d'Visiten",
'statistics-header-users' => 'Benotzerstatistik',
+'statistics-header-hooks' => 'Aner Statistiken',
'statistics-articles' => 'Säite mat Inhalt',
'statistics-pages' => 'Säiten',
'statistics-pages-desc' => 'All Säiten an der Wiki, inklusiv Diskussiounssäiten, Viruleedungen, asw.',
@@ -1597,8 +1707,8 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
'brokenredirects' => 'Futtis Viruleedungen',
'brokenredirectstext' => 'Dës Viruleedunge linken op Säiten déi et net gëtt.',
-'brokenredirects-edit' => '(änneren)',
-'brokenredirects-delete' => '(läschen)',
+'brokenredirects-edit' => 'änneren',
+'brokenredirects-delete' => 'läschen',
'withoutinterwiki' => 'Säiten ouni Interwiki-Linken',
'withoutinterwiki-summary' => 'Op dëser Spezialsäit stinn all déi Säiten déi keng Interwikilinken hunn.',
@@ -1705,16 +1815,17 @@ Dir kënnt d'Sich limitéieren wann dir e Log-Typ, e Benotzernumm (case-senisiti
# Special:Categories
'categories' => 'Kategorien',
-'categoriespagetext' => 'Dës Kategorie huet Säiten oder Medien.
-[[Special:UnusedCategories|Onbenotze Kategorien]] ginn hei net gewisen.
+'categoriespagetext' => 'Dës {{PLURAL:$1|Kategorie huet|Kategorien hu}} Säiten oder Medien.
+[[Special:UnusedCategories|Netbenotze Kategorien]] ginn hei net gewisen.
Kuckt och [[Special:WantedCategories|Gewënschte Kategorien]].',
'categoriesfrom' => 'Weis Kategorien ugefaang bei:',
'special-categories-sort-count' => 'No der Zuel sortéieren',
'special-categories-sort-abc' => 'alphabetesch sortéieren',
# Special:DeletedContributions
-'deletedcontributions' => 'Geläschte Kontributiounen',
-'deletedcontributions-title' => 'Geläschte Kontributiounen',
+'deletedcontributions' => 'Geläschte Kontributiounen',
+'deletedcontributions-title' => 'Geläschte Kontributiounen',
+'sp-deletedcontributions-contribs' => 'Kontributiounen',
# Special:LinkSearch
'linksearch' => 'Extern Linken',
@@ -1730,6 +1841,16 @@ Kuckt och [[Special:WantedCategories|Gewënschte Kategorien]].',
'listusersfrom' => "D'Benotzer uweisen, ugefaange bei:",
'listusers-submit' => 'Weis',
'listusers-noresult' => 'Kee Benotzer fonnt.',
+'listusers-blocked' => '(gespaart)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lëscht vun den aktive Benotzer',
+'activeusers-intro' => 'Dëst ass eng Lëscht vun de Benotzer déi op iergend eng Manéier an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.',
+'activeusers-count' => '$1 {{PLURAL:$1|Ännerung|Ännerungen}} {{PLURAL:$3|gëschter|an de leschten $3 Deeg}}',
+'activeusers-from' => 'Benotzer weisen, ugefaang bäi:',
+'activeusers-hidebots' => 'Botte verstoppen',
+'activeusers-hidesysops' => 'Administrateure verstoppen',
+'activeusers-noresult' => 'Keng Benotzer fonnt.',
# Special:Log/newusers
'newuserlogpage' => 'Logbuch vun den neien Umeldungen',
@@ -1740,17 +1861,23 @@ Kuckt och [[Special:WantedCategories|Gewënschte Kategorien]].',
'newuserlog-autocreate-entry' => 'Benotzerkont gouf automatesch gemaach',
# Special:ListGroupRights
-'listgrouprights' => 'Rechter vun de Benotzergruppen',
-'listgrouprights-summary' => 'Dëst ass eng Lëscht vun den op dëser Wiki definéierte Benotzergruppen an den domat verbonnene Rechter.
+'listgrouprights' => 'Rechter vun de Benotzergruppen',
+'listgrouprights-summary' => 'Dëst ass eng Lëscht vun den op dëser Wiki definéierte Benotzergruppen an den domat verbonnene Rechter.
Et ginn [[{{MediaWiki:Listgrouprights-helppage}}|zousätzlech Informatiounen]] iwwer individuell Benotzerrechter.',
-'listgrouprights-group' => 'Grupp',
-'listgrouprights-rights' => 'Rechter',
-'listgrouprights-helppage' => 'Help:Grupperechter',
-'listgrouprights-members' => '(Lëscht vun de Memberen)',
-'listgrouprights-addgroup' => 'Kann {{PLURAL:$2|dës Grupp|dës Gruppen}} derbäisetzen: $1',
-'listgrouprights-removegroup' => 'Kann {{PLURAL:$2|dëse Gruppe|dës Gruppen}} ewechhuelen: $1',
-'listgrouprights-addgroup-all' => 'Kann all Gruppen derbäisetzen',
-'listgrouprights-removegroup-all' => 'Ka Benotzer aus alle Gruppen eraushuelen',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Recht dat zouerkannt gouf</span>
+* <span class="listgrouprights-revoked">Recht dat ofgeholl gouf</span>',
+'listgrouprights-group' => 'Grupp',
+'listgrouprights-rights' => 'Rechter',
+'listgrouprights-helppage' => 'Help:Grupperechter',
+'listgrouprights-members' => '(Lëscht vun de Memberen)',
+'listgrouprights-addgroup' => 'Kann {{PLURAL:$2|dës Grupp|dës Gruppen}} derbäisetzen: $1',
+'listgrouprights-removegroup' => 'Kann {{PLURAL:$2|dëse Gruppe|dës Gruppen}} ewechhuelen: $1',
+'listgrouprights-addgroup-all' => 'Kann all Gruppen derbäisetzen',
+'listgrouprights-removegroup-all' => 'Ka Benotzer aus alle Gruppen eraushuelen',
+'listgrouprights-addgroup-self' => "Däerf {{PLURAL:$2|de Grupp|d'Gruppe}} bäi säin eegene Benotzerkont derbäisetzen: $1",
+'listgrouprights-removegroup-self' => "Däerf {{PLURAL:$2|de Grupp|d'Gruppe}} vu sengem eegene Benotzerkont ewechhuelen: $1",
+'listgrouprights-addgroup-self-all' => 'däerf all Gruppe bäi säin eegene Benotzerkont derbäisetzen',
+'listgrouprights-removegroup-self-all' => 'Däerf all Gruppe vu sengem eegene Benotzerkont ewechhuelen',
# E-mail user
'mailnologin' => 'Keng E-Mailadress',
@@ -1825,9 +1952,7 @@ Wann dir dës Säit net méi iwwerwaache wëllt, klickt op \"Net méi iwwerwaach
'enotif_anon_editor' => 'Anonyme Benotzer $1',
'enotif_body' => 'Léiwe $WATCHINGUSERNAME,
-d\'{{SITENAME}}-Säit "$PAGETITLE" gouf vum $PAGEEDITOR den $PAGEEDITDATE $CHANGEDORCREATED.
-
-Aktuell Versioun: $PAGETITLE_URL
+D\'{{SITENAME}}-Säit "$PAGETITLE" gouf vum $PAGEEDITOR den $PAGEEDITDATE $CHANGEDORCREATED. Aktuell Versioun: $PAGETITLE_URL
$NEWPAGE
@@ -1837,13 +1962,21 @@ Dëse Mataarbechter kontaktéieren:
E-Mail: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Et gi soulaang keng weider Maile geschéckt, bis Dir d\'Säit nees emol besicht hutt. Op ärer Iwwerwaachungslëscht kënnt Dir all Benoorichtigungsmarkeren zesummen zrécksetzen.
+Et gi soulaang keng weider Maile geschéckt, bis Dir d\'Säit nees emol besicht hutt.
+Op Ärer Iwwerwaachungslëscht kënnt Dir all Benoorichtigungsmarkeren zesummen zrécksetzen.
Äre frëndleche {{SITENAME}} Benoriichtigungssystem
--
-Fir d\'Astellungen op ärer Iwwerwaachungslëscht unzupassen, besicht w.e.g.: {{fullurl:Special:Watchlist/edit}}',
+Fir d\'Astellungen op ärer Iwwerwaachungslëscht z\'änneren, besicht w.e.g.
+{{fullurl:Special:Watchlist/edit}}
+
+Fir d\'Säit vun Ärer Iwwerwaachungslëscht erofzehuelen, gitt w.e.g. op
+$UNWATCHURL
+
+Reaktiounen a méi Hëllef:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Säit läschen',
@@ -1854,10 +1987,11 @@ Fir d\'Astellungen op ärer Iwwerwaachungslëscht unzupassen, besicht w.e.g.: {{
'exblank' => "D'Säit war eidel",
'delete-confirm' => 'Läsche vu(n) "$1"',
'delete-legend' => 'Läschen',
-'historywarning' => 'Opgepasst: Déi Säit déi dir läsche wëllt huet en Historique.',
+'historywarning' => "'''Opgepasst:''' Déi Säit déi Dir läsche wëllt huet en Historique mat ongeféier $1 {{PLURAL:$1|Versioun|Versiounen}}:",
'confirmdeletetext' => "Dir sidd am Gaang, eng Säit mat hirem kompletten Historique vollstänneg aus der Datebank ze läschen.
W.e.g. confirméiert, datt Dir dëst wierklech wëllt, datt Dir d'Konsequenze verstitt, an datt dat Ganzt am Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] geschitt.",
'actioncomplete' => 'Aktioun ofgeschloss',
+'actionfailed' => 'Aktioun huet net fonctionnéiert',
'deletedtext' => '"<nowiki>$1</nowiki>" gouf geläscht. Kuckt $2 fir eng Lëscht vun de Säiten déi viru Kuerzem geläscht goufen.',
'deletedarticle' => '"$1" gouf geläscht',
'suppressedarticle' => 'geläscht "$1"',
@@ -1880,19 +2014,20 @@ D'Läschen dovun kann zu Stéierungen am Funktionnement vun {{SITENAME}} féiere
dës Aktioun soll mat Vierssiicht gemaach ginn.",
# Rollback
-'rollback' => 'Ännerungen zrécksetzen',
-'rollback_short' => 'Zrécksetzen',
-'rollbacklink' => 'Zrécksetzen',
-'rollbackfailed' => 'Zrécksetzen huet net geklappt',
-'cantrollback' => 'Lescht Ännerung kann net zréckgesat ginn. De leschten Auteur ass deen eenzegen Auteur vun dëser Säit.',
-'alreadyrolled' => 'Déi lescht Ännerung vun der Säit [[$1]] vum [[User:$2|$2]] ([[User talk:$2|Diskussioun]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); kann net zréckgesat ginn;
+'rollback' => 'Ännerungen zrécksetzen',
+'rollback_short' => 'Zrécksetzen',
+'rollbacklink' => 'Zrécksetzen',
+'rollbackfailed' => 'Zrécksetzen huet net geklappt',
+'cantrollback' => 'Lescht Ännerung kann net zréckgesat ginn. De leschten Auteur ass deen eenzegen Auteur vun dëser Säit.',
+'alreadyrolled' => 'Déi lescht Ännerung vun der Säit [[$1]] vum [[User:$2|$2]] ([[User talk:$2|Diskussioun]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); kann net zréckgesat ginn;
een Aneren huet dëst entweder scho gemaach oder nei Ännerungen agedroen.
Déi lescht Ännerung vun der Säit ass vum [[User:$3|$3]] ([[User talk:$3|Diskussioun]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "De Resumé vun der Ännerung war: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ännerunge vum [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussioun]]) zréckgesat op déi lescht Versioun vum [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "D'Ännerunge vum $1 goufen zréckgesat op déi lescht Versioun vum $2.",
-'sessionfailure' => 'Et schéngt e Problem mat ärer Loginséance ze ginn;
+'editcomment' => "De Resumé vun der Ännerung war: \"''\$1''\".",
+'revertpage' => 'Ännerunge vum [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussioun]]) zréckgesat op déi lescht Versioun vum [[User:$1|$1]]',
+'revertpage-nouser' => 'Zréckgesaten Ännerungen vum (Benotzernummewechgeholl) op déilescht Versioun vum [[User:$1|$1]]',
+'rollback-success' => "D'Ännerunge vum $1 goufen zréckgesat op déi lescht Versioun vum $2.",
+'sessionfailure' => 'Et schéngt e Problem mat ärer Loginséance ze ginn;
Dës Aktioun gouf aus Sécherheetsgrënn ofgebrach, fir ze verhënneren datt är Séance piratéiert ka ginn.
Klickt w.e.g. op "Zréck" a lued déi Säit vun däer Dir komm sidd nei, a versicht et dann nach eng Kéier.',
@@ -1911,7 +2046,7 @@ Kuckt d'[[Special:ProtectedPages|Lëscht vun de gespaarte Säite]] fir eng Lësc
'protectexpiry' => 'Dauer vun der Spär:',
'protect_expiry_invalid' => "D'Dauer déi Dir uginn hutt ass ongëlteg.",
'protect_expiry_old' => "D'Spärzäit läit an der Vergaangenheet.",
-'protect-unchain' => 'Réckel-Protectioun änneren',
+'protect-unchain-permissions' => "D'Spär vu weidere Spär-Optioune ophiewen",
'protect-text' => "Hei kënnt Dir de Protectiounsstatus fir d'Säit '''$1''' kucken an änneren.",
'protect-locked-blocked' => "Dir kënnt den Niveau vun der Säite-Protectioun net änneren, well Äre Benotzerkont gespaart ass.
Hei sinn déi aktuell Säite-Protectiouns-Astellungen fir d'Säit '''$1''':",
@@ -1940,7 +2075,7 @@ Hei sinn déi aktuell Astellunge fir d'Säit '''$1''':",
** Dacks benotzte Schablounen
** Säit déi dacks besicht gëtt',
'protect-edit-reasonlist' => 'Grënn vun der Protectioun änneren',
-'protect-expiry-options' => '1 Stonn:1 hour,1 Dag:1 day,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Stonn:1 hour,1 Dag:1 day,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite',
'restriction-type' => 'Berechtigung:',
'restriction-level' => 'Niveau vun de Limitatiounen:',
'minimum-size' => 'Mindestgréisst',
@@ -1979,6 +2114,7 @@ An esou Fäll däerf déi neiste Versioun net markéiert ginn oder déi neiste g
'undelete-nodiff' => 'Et si keng méi al Versiounen do.',
'undeletebtn' => 'Restauréieren',
'undeletelink' => 'weisen/restauréieren',
+'undeleteviewlink' => 'weisen',
'undeletereset' => 'Ofbriechen',
'undeleteinvert' => 'Auswiel ëmdréinen',
'undeletecomment' => 'Grond:',
@@ -2016,19 +2152,23 @@ $1',
'contributions-title' => 'Kontributioune vum $1',
'mycontris' => 'Meng Kontributiounen',
'contribsub2' => 'Fir $1 ($2)',
-'nocontribs' => 'Et goufe keng Ännerunge fonnt, déi dëse Kritèren entspriechen.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Et goufe keng Ännerunge fonnt, déi dëse Kritèren entspriechen.',
'uctop' => '(aktuell)',
'month' => 'Vum Mount (a virdrun):',
'year' => 'Vum Joer (a virdrun):',
-'sp-contributions-newbies' => 'Nëmme Kontributioune vun neie Mataarbechter weisen',
-'sp-contributions-newbies-sub' => 'Fir déi Nei',
-'sp-contributions-newbies-title' => 'Kontributioune vun neie Benotzer',
-'sp-contributions-blocklog' => 'Spärlescht',
-'sp-contributions-logs' => 'Logbicher',
-'sp-contributions-search' => 'No Kontributioune sichen',
-'sp-contributions-username' => 'IP-Adress oder Benotzernumm:',
-'sp-contributions-submit' => 'Sichen',
+'sp-contributions-newbies' => 'Nëmme Kontributioune vun neie Mataarbechter weisen',
+'sp-contributions-newbies-sub' => 'Fir déi Nei',
+'sp-contributions-newbies-title' => 'Kontributioune vun neie Benotzer',
+'sp-contributions-blocklog' => 'Spärlescht',
+'sp-contributions-deleted' => 'geläschte Benotzer-Kontributiounen',
+'sp-contributions-logs' => 'Logbicher',
+'sp-contributions-talk' => 'diskutéieren',
+'sp-contributions-userrights' => 'Verwaltung vun de Benotzerrechter',
+'sp-contributions-blocked-notice' => 'Dëse Benotzer ass elo gespaart. Déi lescht Entrée am Läsch-Logbuch steet als Referenz hei ënnendrënner:',
+'sp-contributions-search' => 'No Kontributioune sichen',
+'sp-contributions-username' => 'IP-Adress oder Benotzernumm:',
+'sp-contributions-submit' => 'Sichen',
# What links here
'whatlinkshere' => 'Linken op dës Säit',
@@ -2051,6 +2191,7 @@ $1',
# Block/unblock
'blockip' => 'Benotzer spären',
+'blockip-title' => 'Benotzer spären',
'blockip-legend' => 'Benotzer spären',
'blockiptext' => 'Benotzt dëse Formulaire fir eng spezifesch IP-Adress oder e Benotzernumm ze spären. Dëst soll nëmmen am Fall vu Vandalismus gemaach ginn, en accordance mat den [[{{MediaWiki:Policy-url}}|interne Richlinen]]. Gitt e spezifesche Grond un (zum Beispill Säite wou Vandalismus virgefall ass).',
'ipaddress' => 'IP-Adress oder Benotzernamm:',
@@ -2072,7 +2213,7 @@ $1',
'ipbenableautoblock' => 'Automatesch déi lescht IP-Adress spären déi vun dësem Benotzer benotzt gouf, an all IP-Adresse vun denen dëse Benotzer versicht Ännerunge virzehuelen',
'ipbsubmit' => 'Dës IP-Adress resp dëse Benotzer spären',
'ipbother' => 'Aner Dauer:',
-'ipboptions' => '2 Stonnen:2 hours,1 Dag:1 day,3 Deeg:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stonnen:2 hours,1 Dag:1 day,3 Deeg:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite',
'ipbotheroption' => 'Aner Dauer',
'ipbotherreason' => 'Aneren oder zousätzleche Grond:',
'ipbhidename' => 'Benotzernumm op Lëschten a bei Ännerunge verstoppen',
@@ -2102,9 +2243,11 @@ Kuckt d'[[Special:IPBlockList|IP Spär-Lëscht]] fir all Spären ze gesin.",
'ipblocklist-sh-tempblocks' => 'temporär Späre $1',
'ipblocklist-sh-addressblocks' => 'eenzel IP-Adressen déi gespaart si $1',
'ipblocklist-submit' => 'Sichen',
+'ipblocklist-localblock' => 'Lokal Spär',
+'ipblocklist-otherblocks' => 'Aner {{PLURAL:$1|Spär|Spären}}',
'blocklistline' => '$1, $2 huet de Benotzer:$3 gespaart (gëllt $4)',
'infiniteblock' => 'onbegrenzt',
-'expiringblock' => 'bis $1',
+'expiringblock' => 'bis den $1 ëm $2',
'anononlyblock' => 'nëmmen anonym Benotzer',
'noautoblockblock' => 'déi automatesch Spär ass deaktivéiert',
'createaccountblock' => 'Opmaache vu Benotzerkonte gespaart',
@@ -2119,7 +2262,8 @@ Kuckt d'[[Special:IPBlockList|IP Spär-Lëscht]] fir all Spären ze gesin.",
'autoblocker' => 'Dir sidd automatesch gespaart well dir eng IP Adress mam "[[User:$1|$1]]" deelt.
De Grond dee fir d\'Spär vum $1 ugi gouf ass: "$2".',
'blocklogpage' => 'Spärlëscht',
-'blocklog-fulllog' => 'Komplett Lëscht vun de Spären',
+'blocklog-showlog' => "Dëse Benotzer war virdru gespaart. D'Lëscht vun de Späre ass als Referenz hei ënnendrënner:",
+'blocklog-showsuppresslog' => "Dëse Benotzer war virdru gespaart a verstoppt. D'Logbuch vun de Suppressiounen steet als Referenz hei ënnendrënner:",
'blocklogentry' => '"[[$1]]" gespaart fir $2 $3',
'reblock-logentry' => "huet d'Spär vum [[$1]] bis den $2 $3 geännert",
'blocklogtext' => "Dëst ass eng Lëscht vu Spären a vu Spären déi opgehuewe goufen.
@@ -2140,10 +2284,12 @@ Kuckt d'[[Special:IPBlockList|IP Spärlëscht]] fir déi aktuell Spären.",
'ipb_already_blocked' => '"$1" ass scho gespaart.',
'ipb-needreblock' => "== Scho gespaart ==
„$1“ ass scho gespaart. Wëllt dir d'Parametere vun der Spär änneren?",
+'ipb-otherblocks-header' => 'Aner {{PLURAL:$1|Spär|Spären}}',
'ipb_cant_unblock' => "Feeler: D'Nummer vun der Spär $1 gouf net fonnt. D'Spär gouf waarscheinlech schonn opgehuewen.",
'ipb_blocked_as_range' => "Feeler: D'IP-Adress $1 gouf net direkt gespaart an déi Spär kann dofir och net opghuewe ginn.
Si ass awer als Deel vun der Rei $2 gespaart, an dës Spär kann opgehuewe ginn.",
'ip_range_invalid' => 'Ongëltegen IP Block.',
+'ip_range_toolarge' => 'Späre vu Beräicher déi méi grouss wéi /$1 si sinn net erlaabt.',
'blockme' => 'Spär mech',
'proxyblocker' => 'Proxy blocker',
'proxyblocker-disabled' => 'Dës Funktioun ass ausgeschalt.',
@@ -2152,6 +2298,7 @@ Si ass awer als Deel vun der Rei $2 gespaart, an dës Spär kann opgehuewe ginn.
'sorbsreason' => 'Är IP Adress steet als oppene Proxy an der schwaarzer Lëscht (DNSBL) déi vu {{SITENAME}} benotzt gëtt.',
'sorbs_create_account_reason' => 'Är IP-Adress steet als oppene Proxy an der schwaarzer Lëscht déi op {{SITENAME}} benotzt gëtt. DIr kënnt keen neie Benotzerkont opmaachen.',
'cant-block-while-blocked' => 'Dir däerft keng aner Benotzer spären, esou lang wéi dir selwer gespaart sidd.',
+'cant-see-hidden-user' => "De Benotzer deen Dir versicht ze spären ass scho gespaart a verstoppt. Well Dir d'Recht ''Hideuser'' net hutt kënnt Dir dëse Benotzer net gesinn an dem Benotzer seng Spär net änneren.",
# Developer tools
'lockdb' => 'Datebank spären',
@@ -2197,6 +2344,7 @@ verstitt w.e.g. d'Konsequenze vun ärer Handlung éier Dir d'Säit réckelt.",
An deene Fäll musst Dir d'Diskussiounssäit manuell réckelen oder fusionéieren.",
'movearticle' => 'Säit réckelen:',
+'moveuserpage-warning' => "'''Opgepasst:''' Dir sidd am gaang eng Benotzersäit ze réckelen. Denkt w.e.g. dorunn datt just d'Säit geréckelt gëtt an datt de Benotzer ''net'' ëmbenannt gëtt.",
'movenologin' => 'Net ageloggt',
'movenologintext' => 'Dir musst e registréierte Benotzer an [[Special:UserLogin|ageloggt]] sinn, fir eng Säit ze réckelen.',
'movenotallowed' => 'Dir hutt net déi néideg Rechter fir Säiten ze réckelen.',
@@ -2207,7 +2355,7 @@ An deene Fäll musst Dir d'Diskussiounssäit manuell réckelen oder fusionéiere
'move-watch' => 'Dës Säit iwwerwaachen',
'movepagebtn' => 'Säit réckelen',
'pagemovedsub' => 'Gouf geréckelt',
-'movepage-moved' => "'''D'Säit \"\$1\" gouf op \"\$2\" geréckelt.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''D'Säit \"\$1\" gouf op \"\$2\" geréckelt.'''",
'movepage-moved-redirect' => 'Et gouf eng Viruleedung ugeluecht.',
'movepage-moved-noredirect' => "D'Uleeë vun enger Viruleedung gouf ënnerdréckt.",
'articleexists' => 'Eng Säit mat dësem Numm gëtt et schonns, oder den Numm deen Dir gewielt hutt gëtt net akzeptéiert. Wielt w.e.g. en aneren Numm.',
@@ -2246,6 +2394,12 @@ An deene Fäll musst Dir d'Diskussiounssäit manuell réckelen oder fusionéiere
'imageinvalidfilename' => 'Den Numm vum Zil-Fichier ass ongëlteg',
'fix-double-redirects' => 'All Viruleedungen déi op den Originaltitel weisen aktualiséieren',
'move-leave-redirect' => 'Viruleedung uleeën',
+'protectedpagemovewarning' => "'''OPGEPASST:''' Dës Säit gouf gespaart esou datt nëmme Benotzer mat Administreurs-Rechter se réckele kënnen. Déi lescht Zeil aus de Logbicher fannt Dir zu Ärer Informatioun hei ënnendrënner.",
+'semiprotectedpagemovewarning' => "'''OPGEPASST:''' Dës Säit gouf gespaart esou datt nëmme konfirméiert Benotzer se réckele kënnen. Déi lescht Zeil aus de Logbicher fannt Dir zu Ärer Informatioun hei ënnendrënner.",
+'move-over-sharedrepo' => '== De Fichier gëtt et ==
+[[:$1]] gëtt et op engem gedeelte Repertoire. Wann dir e Fichier op dësen Titel réckelt dann ass dee gedeelte Fichier net méi accessibel.',
+'file-exists-sharedrepo' => 'Den Numm vum Fichier deen dir erausgesicht hutt gëtt schonn op engem gemeinsame Repertoire benotzt.
+Sicht Iech w.e.g. en aneren Numm.',
# Export
'export' => 'Säiten exportéieren',
@@ -2268,15 +2422,21 @@ Wann nëmmen déi aktuell Versioun exportéiert soll ginn, kënnt Dir och e Link
'export-pagelinks' => 'Verlinkte Säiten mat exportéieren, bis zu enger Déift vun:',
# Namespace 8 related
-'allmessages' => 'All Systemmessagen',
-'allmessagesname' => 'Numm',
-'allmessagesdefault' => 'Standardtext',
-'allmessagescurrent' => 'Aktuellen Text',
-'allmessagestext' => "Dëst ass eng Lëscht vun alle '''Messagen am MediaWiki:Nummraum, déi vun der MediaWiki-Software benotzt ginn.
+'allmessages' => 'All Systemmessagen',
+'allmessagesname' => 'Numm',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Aktuellen Text',
+'allmessagestext' => "Dëst ass eng Lëscht vun alle '''Messagen am MediaWiki:Nummraum, déi vun der MediaWiki-Software benotzt ginn.
Besicht w.e.g. [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisatioun] an [http://translatewiki.net translatewiki.net] wann Dir wëllt bei de MediaWiki Iwwersetzunge matschaffen.",
-'allmessagesnotsupportedDB' => "Dës Säit kann net benotzt gi well '''\$wgUseDatabaseMessages''' ausgeschalt ass.",
-'allmessagesfilter' => 'Filter vun de Systemmessagen:',
-'allmessagesmodified' => 'Nëmme geännerter weisen',
+'allmessagesnotsupportedDB' => "Dës Säit kann net benotzt gi well '''\$wgUseDatabaseMessages''' ausgeschalt ass.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter nom ugepassten Zoustand:',
+'allmessages-filter-unmodified' => 'Net geännert',
+'allmessages-filter-all' => 'Alleguer',
+'allmessages-filter-modified' => 'Geännert',
+'allmessages-prefix' => 'Nom Prefix filteren:',
+'allmessages-language' => 'Sprooch:',
+'allmessages-filter-submit' => 'Lass',
# Thumbnails
'thumbnail-more' => 'vergréisseren',
@@ -2286,6 +2446,9 @@ Besicht w.e.g. [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisatio
'djvu_no_xml' => 'Den XML ka fir den DjVu-Fichier net ofgeruff ginn',
'thumbnail_invalid_params' => 'Ongëlteg Miniatur-Parameter',
'thumbnail_dest_directory' => 'Den Zilepertoire konnt net ugeluecht ginn.',
+'thumbnail_image-type' => 'Bildtyp gëtt net ënnerstëtzt',
+'thumbnail_gd-library' => "D'Konfiguratioun vun der GD-Bibliothéik (GD library) ass net komplett: D'Fonctioun $1 feelt",
+'thumbnail_image-missing' => 'De Fichier schengt ze feelen: $1',
# Special:Import
'import' => 'Säiten importéieren',
@@ -2350,6 +2513,7 @@ Späichert en op Ärem Computer of a luet en hei nees erop.',
'tooltip-ca-viewsource' => 'Dës Säit ass gespaart. Nëmmen de Quelltext ka gewise ginn.',
'tooltip-ca-history' => 'Vireg Versioune vun dëser Säit',
'tooltip-ca-protect' => 'Dës Säit spären',
+'tooltip-ca-unprotect' => "D'Spär vun dëser Säit ophiewen",
'tooltip-ca-delete' => 'Dës Säit läschen',
'tooltip-ca-undelete' => 'Dës Säit restauréieren',
'tooltip-ca-move' => 'Dës Säit réckelen',
@@ -2360,6 +2524,7 @@ Späichert en op Ärem Computer of a luet en hei nees erop.',
'tooltip-search-fulltext' => 'No Säite sichen, an deenen dësen Text dran ass',
'tooltip-p-logo' => "Besicht d'Haaptsäit",
'tooltip-n-mainpage' => "Besicht d'Haaptsäit",
+'tooltip-n-mainpage-description' => "Besicht d'Haaptsäit",
'tooltip-n-portal' => 'Iwwer de Portal, wat Dir maache kënnt, wou wat ze fannen ass',
'tooltip-n-currentevents' => "D'Aktualitéit a wat derhannert ass",
'tooltip-n-recentchanges' => 'Lëscht vun de rezenten Ännerungen op {{SITENAME}}.',
@@ -2419,10 +2584,12 @@ Erlaabt et e Grond an de Resumé derbäizesetzen.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonyme Benotzer|Anonym Benotzer}} op {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Benotzer $1',
-'lastmodifiedatby' => "Dës Säit gouf den $1 ëm $2 Auer vum $3 fir d'lescht geännert.", # $1 date, $2 time, $3 user
+'anonuser' => 'Anonyme(n) {{SITENAME}}-Benotzer $1',
+'lastmodifiedatby' => "Dës Säit gouf den $1 ëm $2 Auer vum $3 fir d'lescht geännert.",
'othercontribs' => 'Op der Basis vun der Aarbecht vum $1',
'others' => 'anerer',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|Benotzer|Benotzer}} $1',
+'anonusers' => '{{PLURAL:$2|Anonyme(n)|Anonym}} {{SITENAME}}-Benotzer $1',
'creditspage' => 'Quellen',
'nocredits' => "Fir dës Säit si keng Informatiounen iwwert d'Mataarbechter vun der Säit disponibel.",
@@ -2461,11 +2628,22 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
'mw_math_modern' => 'Recommandéiert fir modern Browser',
'mw_math_mathml' => 'MathML wa méiglech (experimentell)',
+# Math errors
+'math_failure' => 'Parser-Feeler',
+'math_unknown_error' => 'Onbekannte Feeler',
+'math_unknown_function' => 'Onbekannte Funktioun',
+'math_lexing_error' => "'Lexing'-Feeler",
+'math_syntax_error' => 'Syntaxfeeler',
+'math_image_error' => "d'PNG-Konvertéierung huet net fonctionnéiert;
+iwwerpréift déi korrekt Installatioun vu LaTeX, dvips, gs a convert",
+'math_bad_tmpdir' => 'Den temporäre Repertire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
+'math_bad_output' => 'Den Zilrepertoire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
+
# Patrolling
'markaspatrolleddiff' => 'Als kontrolléiert markéieren',
'markaspatrolledtext' => 'Dës Säit als kontrolléiert markéieren',
'markedaspatrolled' => 'ass als kontrolléiert markéiert',
-'markedaspatrolledtext' => 'Déi gewielte Versioun gouf als kontrolléiert markéiert.',
+'markedaspatrolledtext' => 'Déi gewielte Versioun vu(n) [[:$1]] gouf als kontrolléiert markéiert.',
'rcpatroldisabled' => 'Rezent Ännerungskontroll ausgeschalt.',
'rcpatroldisabledtext' => "D'Kontroll vun de leschten Ännerungen ass elo ausgeschalt.",
'markedaspatrollederror' => 'Kann net als "kontrolléiert" markéiert ginn.',
@@ -2495,13 +2673,10 @@ $1',
'previousdiff' => '← Méi al Ännerung',
'nextdiff' => 'Méi nei Ännerung →',
-# Visual comparison
-'visual-comparison' => 'Visuelle Vergläich',
-
# Media information
'mediawarning' => "'''Warnung:''' Dës Zort vu Fichier kann e béiswëllege Programmcode enthalen.
Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
-'imagemaxsize' => 'Biller op de Billerbeschreiwungssäite limitéieren op:',
+'imagemaxsize' => "Maximal Gréisst fir Biller:<br />''(fir Billerbeschreiwungssäiten)''",
'thumbsize' => 'Gréisst vun der Miniatur:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Säit|Säiten}}',
'file-info' => '(Dateigréisst: $1, MIME-Typ: $2)',
@@ -2510,6 +2685,8 @@ Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
'svg-long-desc' => '(SVG-Fichier, Basisgréisst: $1 × $2 Pixel, Gréisst vum Fichier: $3)',
'show-big-image' => 'Versioun an enger méi héijer Opléisung',
'show-big-image-thumb' => '<small>Gréisst vun der Miniatur: $1 × $2 Pixel</small>',
+'file-info-gif-looped' => 'Endloosschleef',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Biller}}',
# Special:NewFiles
'newimages' => 'Gallerie vun den neie Biller',
@@ -2541,7 +2718,7 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Breet',
@@ -2666,14 +2843,14 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-unknowndate' => 'Onbekannten Datum',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontal gedréit', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Ëm 180° gedréit', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikal gedréit', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => "90° géint d'Richtung vun den Zäre vun der Auer gedréint a vertikal ëmgedréint", # 0th row: left; 0th column: top
-'exif-orientation-6' => "Ëm 90° an d'Richtung vun den Zäre vun der Auer gedréint", # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° an der Richtung vun den Zäre vun der Auer gedréint a vertikal ëmgedréint', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => "Ëm 90° géint d'Richtung vun den Zäre vun der Auer gedréint", # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Horizontal gedréit',
+'exif-orientation-3' => 'Ëm 180° gedréit',
+'exif-orientation-4' => 'Vertikal gedréit',
+'exif-orientation-5' => "90° géint d'Richtung vun den Zäre vun der Auer gedréint a vertikal ëmgedréint",
+'exif-orientation-6' => "Ëm 90° an d'Richtung vun den Zäre vun der Auer gedréint",
+'exif-orientation-7' => '90° an der Richtung vun den Zäre vun der Auer gedréint a vertikal ëmgedréint',
+'exif-orientation-8' => "Ëm 90° géint d'Richtung vun den Zäre vun der Auer gedréint",
'exif-componentsconfiguration-0' => 'Gëtt et net',
@@ -2792,7 +2969,7 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-gpsmeasuremode-2' => '2-dimensional Miessung',
'exif-gpsmeasuremode-3' => '3-dimensional Miessung',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer pro Stonn',
'exif-gpsspeed-m' => 'Meile pro Stonn',
'exif-gpsspeed-n' => 'Kniet',
@@ -2811,6 +2988,7 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'watchlistall2' => 'all',
'namespacesall' => 'all',
'monthsall' => 'all',
+'limitall' => 'all',
# E-mail address confirmation
'confirmemail' => 'E-Mailadress confirméieren',
@@ -2836,7 +3014,7 @@ Feelermeldung vum Mailserver: $1',
Fir ze bestätegen, datt dee Kont iech wierklech gehéiert a fir d\'E-Mail-Funktiounen um Site {{SITENAME}} z\'aktivéieren, maacht w.e.g. dëse Link an ärem Browser op:
$3
-Wann dir dëse Benotzerkont *net* opgemaach huet, maacht w.e.g. dëse Link an ärem Browser op fir d\'E-Mailconfirmation z\'annulléieren:
+Wann dir dëse Benotzerkont *net* opgemaach hutt, maacht w.e.g. dëse Link an ärem Browser op fir d\'E-Mailconfirmation z\'annulléieren:
$5
@@ -2931,7 +3109,7 @@ Dir kënnt och [[Special:Watchlist/edit|de Standard Editeur benotzen]].",
'duplicate-defaultsort' => 'Opgepasst: Den Zortéierschlëssel "$2" iwwerschreift de viregen Zortéierschlëssel "$1".',
# Special:Version
-'version' => 'Versioun', # Not used as normal message but as header for the special page itself
+'version' => 'Versioun',
'version-extensions' => 'Installéiert Erweiderungen',
'version-specialpages' => 'Spezialsäiten',
'version-parserhooks' => 'Parser-Erweiderungen',
@@ -2945,7 +3123,7 @@ Dir kënnt och [[Special:Watchlist/edit|de Standard Editeur benotzen]].",
'version-skin-extension-functions' => 'Skin-Erweiderungs-Funktiounen',
'version-hook-name' => 'Numm vun der Klamer',
'version-hook-subscribedby' => 'Opruff vum',
-'version-version' => 'Versioun',
+'version-version' => '(Versioun $1)',
'version-license' => 'Lizenz',
'version-software' => 'Installéiert Software',
'version-software-product' => 'Produkt',
@@ -3025,4 +3203,15 @@ Gitt den Numm vum Fichier ouni de Prefix \"{{ns:file}}:\" an.",
'dberr-outofdate' => 'Denkt drunn, datt de Sichindex vun eisen Inhalte méiglecherweis net aktuell ass.',
'dberr-cachederror' => 'Dëst ass eng tëschegespäichert Kopie vun der gefroter Säit, a si kann eventuell net aktuell sinn.',
+# HTML forms
+'htmlform-invalid-input' => 'Et gëtt Problemer mat de Wäerter déi dir aginn hutt.',
+'htmlform-select-badoption' => 'De Wert deen Dir aginn hutt ass keng valabel Optioun.',
+'htmlform-int-invalid' => 'De Wert deen dir aginn hutt ass keng ganz Zuel.',
+'htmlform-float-invalid' => 'De Wert deen Dir uginn hutt ass keng Zuel.',
+'htmlform-int-toolow' => 'De Wert deen Dir uginn hut ass ënnert dem Minimum vu(n) $1',
+'htmlform-int-toohigh' => 'De Wert deen Dir uginn hutt ass iwwert dem Maximum vu(n) $1',
+'htmlform-submit' => 'Späicheren',
+'htmlform-reset' => 'Ännerungen zrécksetzen',
+'htmlform-selectorother-other' => 'Anerer',
+
);
diff --git a/languages/messages/MessagesLbe.php b/languages/messages/MessagesLbe.php
index bab1257a..6af09b23 100644
--- a/languages/messages/MessagesLbe.php
+++ b/languages/messages/MessagesLbe.php
@@ -22,11 +22,9 @@ $linkPrefixExtension = true;
$namespaceNames = array(
NS_MEDIA => 'Медиа',
NS_SPECIAL => 'Къуллугъирал_лажин',
- NS_MAIN => '',
NS_TALK => 'Ихтилат',
NS_USER => 'Гьуртту_хьума',
- NS_USER_TALK => 'Гьуртту_хьуминнал_ихтилат',
- #NS_PROJECT set by $wgMetaNamespace
+ NS_USER_TALK => 'Гьуртту_хьуминнал_ихтилат',
NS_PROJECT_TALK => '$1лиясса_ихтилат',
NS_FILE => 'Сурат',
NS_FILE_TALK => 'Суратраясса_ихтилат',
@@ -44,7 +42,9 @@ $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъы
$messages = array(
'article' => 'Тарих',
-'qbedit' => 'Дакьин дуван',
+
+# Cologne Blue skin
+'qbedit' => 'Дакьин дуван',
'history' => 'Макьала',
'history_short' => 'Макьала',
@@ -73,7 +73,8 @@ $messages = array(
'recentchanges' => 'Махъсса дахханашивурту',
# File description page
-'filehist-user' => 'Гьурттучув',
+'file-anchor-link' => 'Сурат',
+'filehist-user' => 'Гьурттучув',
# Miscellaneous special pages
'move' => 'ЦIа даххана дан',
@@ -81,4 +82,6 @@ $messages = array(
# Special:Log
'specialloguserlabel' => 'Гьурттучув:',
+'sp-contributions-talk' => 'Ихтилат',
+
);
diff --git a/languages/messages/MessagesLez.php b/languages/messages/MessagesLez.php
index 47263c7e..7ad33ec0 100644
--- a/languages/messages/MessagesLez.php
+++ b/languages/messages/MessagesLez.php
@@ -57,7 +57,9 @@ $messages = array(
'nov' => 'ЦӀе',
'dec' => 'Фaн',
-'about' => 'Хакъиндай',
+'about' => 'Хакъиндай',
+
+# Cologne Blue skin
'qbfind' => 'Жугъун',
'qbedit' => 'Дегишарун',
@@ -109,9 +111,6 @@ $messages = array(
# General errors
'viewsource' => 'Къаларун булах',
-# Login and logout pages
-'yourrealname' => 'Xалис тIвар:',
-
# Edit pages
'minoredit' => 'И гъвечIи дегишарун',
'watchthis' => 'Гелкъуьн и хъувун',
@@ -129,9 +128,12 @@ $messages = array(
'lineno' => 'ЦIар $1:',
# Search results
-'viewprevnext' => 'Къаларун ($1) ($2) ($3)',
+'viewprevnext' => 'Къаларун ($1 {{int:pipe-separator}} $2) ($3)',
'powersearch' => 'Ахтармишун',
+# Preferences page
+'yourrealname' => 'Xалис тIвар:',
+
# Recent changes
'diff' => 'тафават',
'hist' => 'тарих',
@@ -144,6 +146,7 @@ $messages = array(
'upload' => 'Парвиниз шикил',
# File description page
+'file-anchor-link' => 'Шикил',
'filehist' => 'Шикил тарих',
'filehist-datetime' => 'Югъ/Заман',
@@ -186,6 +189,8 @@ $messages = array(
# Contributions
'uctop' => '(кIукI)',
+'sp-contributions-talk' => 'Рахун',
+
# Block/unblock
'blocklink' => 'тIаб',
diff --git a/languages/messages/MessagesLfn.php b/languages/messages/MessagesLfn.php
index d4c0eeff..43eecb58 100644
--- a/languages/messages/MessagesLfn.php
+++ b/languages/messages/MessagesLfn.php
@@ -133,7 +133,7 @@ $messages = array(
'category-media-header' => 'Medio en catagoria "$1"',
'category-empty' => "''Aora, esta categoria no conteni pajes o medio.''",
'hidden-categories' => '{{PLURAL:$1|Categoria|Categorias}} ascondeda',
-'hidden-category-category' => 'Categorias ascondeda', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias ascondeda',
'listingcontinuesabbrev' => 'cont.',
'mainpagetext' => "'''MediaWiki es aora instalada.'''",
@@ -145,10 +145,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Demandas comun de MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista per receta anunsias de novas supra MediaWiki]',
-'about' => 'Supra',
-'article' => 'Paje de contenis',
-'newwindow' => '(va abri en fenetra nova)',
-'cancel' => 'Cansela',
+'about' => 'Supra',
+'article' => 'Paje de contenis',
+'newwindow' => '(va abri en fenetra nova)',
+'cancel' => 'Cansela',
+'moredotdotdot' => 'Plu...',
+'mypage' => 'Me paje',
+'mytalk' => 'Me discutes',
+'anontalk' => 'Discutes per esta IP',
+'navigation' => 'Naviga',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Trova',
'qbbrowse' => 'Surfa',
'qbedit' => 'Edita',
@@ -156,15 +164,6 @@ $messages = array(
'qbpageinfo' => 'Situa',
'qbmyoptions' => 'Me pajes',
'qbspecialpages' => 'Pajes spesial',
-'moredotdotdot' => 'Plu...',
-'mypage' => 'Me paje',
-'mytalk' => 'Me discutes',
-'anontalk' => 'Discutes per esta IP',
-'navigation' => 'Naviga',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
'errorpagetitle' => 'Era',
'returnto' => 'Restora a $1.',
@@ -286,7 +285,6 @@ $messages = array(
'viewsourcetext' => 'Tu pote vide e copia la orijin de esta paje:',
# Login and logout pages
-'logouttitle' => 'Sinia per retira',
'yourname' => 'Nom de usor:',
'yourpassword' => 'Sinia de entra:',
'yourpasswordagain' => 'Retape la sinia:',
@@ -303,17 +301,6 @@ $messages = array(
'createaccount' => 'Crea un conta',
'gotaccount' => "Tu ave ja un conta? '''$1'''.",
'gotaccountlink' => 'Sinia per entra',
-'youremail' => 'Eposta:',
-'username' => 'Nom de usor:',
-'prefs-memberingroups' => 'Membro de la {{PLURAL:$1|grupo|grupos}}:',
-'yourrealname' => 'Nom vera:',
-'yourlanguage' => 'Lingua:',
-'yournick' => 'Suscrive:',
-'yourgender' => 'Seso:',
-'gender-male' => 'Mas',
-'gender-female' => 'Fema',
-'email' => 'Eposta',
-'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.',
'loginerror' => 'Era de entra',
'loginsuccesstitle' => 'Entra susedente',
'loginsuccess' => "'''Tu ia entrada aora a {{SITENAME}} como \"\$1\".'''",
@@ -369,19 +356,19 @@ Ante alga otra eposta es enviada a la conta, tu va nesesa segue la instruis en l
'hr_tip' => 'Linia orizonal (usa nonfrecuente)',
# Edit pages
-'summary' => 'Soma:',
-'subject' => 'Sujeto/titulo:',
-'minoredit' => 'Esta es un cambia minor',
-'watchthis' => 'Oserva esta paje',
-'savearticle' => 'Fisa paje',
-'preview' => 'Previde',
-'showpreview' => 'Mostra previde',
-'showdiff' => 'Mostra diferes',
-'anoneditwarning' => "'''Avisa:''' Tu no ia sinia per entra.
+'summary' => 'Soma:',
+'subject' => 'Sujeto/titulo:',
+'minoredit' => 'Esta es un cambia minor',
+'watchthis' => 'Oserva esta paje',
+'savearticle' => 'Fisa paje',
+'preview' => 'Previde',
+'showpreview' => 'Mostra previde',
+'showdiff' => 'Mostra diferes',
+'anoneditwarning' => "'''Avisa:''' Tu no ia sinia per entra.
Tu adirije de IP va es memorada en la istoria de revisas de esta paje.",
-'summary-preview' => 'Previde soma:',
-'blockedtitle' => 'Usor es impedida',
-'blockedtext' => "'''Tu nom de usor o adirije de IP ia es impedida.'''
+'summary-preview' => 'Previde soma:',
+'blockedtitle' => 'Usor es impedida',
+'blockedtext' => "'''Tu nom de usor o adirije de IP ia es impedida.'''
La impedi ia es fada par $1.
La razon donada es ''$2''.
@@ -395,32 +382,32 @@ Tu no pote usa la 'envia un eposta a esta usor' sin un adirije de eposta legal e
[[Special:Preferences|preferis de conta]] e tu no es impedida de usa el.
Tu adirije de IP es aora $3, e la identia de la impedi es #$5.
Per favore inclui tota esta detales en tu demandas.",
-'newarticle' => '(Nova)',
-'newarticletext' => "Tu ia segue un lia a un paje ce no esista ja.
+'newarticle' => '(Nova)',
+'newarticletext' => "Tu ia segue un lia a un paje ce no esista ja.
Per crea la paje, comensa scrive en la caxa a su
(vide la [[{{MediaWiki:Helppage}}|paje de aida]] per plu).
Si tu es asi par era, clica a la boton '''retro''' de tu surfador.",
-'noarticletext' => 'Es aora no testo a esta paje.
+'noarticletext' => 'Es aora no testo a esta paje.
Tu pote [[Special:Search/{{PAGENAME}}|xerca per la titulo de esta paje]] en otra pajes,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca la arcivos relatada],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} edita esta paje].',
-'previewnote' => "'''Esta sola un previde; cambias no es fisada ja'''",
-'editing' => 'En la prosede de edita $1',
-'editingsection' => 'Edita $1 (sesion)',
-'editingcomment' => 'Edita $1 (sesion nova)',
-'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 />
+'previewnote' => "'''Esta sola un previde; cambias no es fisada ja'''",
+'editing' => 'En la prosede de edita $1',
+'editingsection' => 'Edita $1 (sesion)',
+'editingcomment' => 'Edita $1 (sesion nova)',
+'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 />
Tu ance promete a nos ce tu ia scriveda esta par tu mesma, o copiada esta de un domina publica o otra orijin libre.
'''NO SUMITA LABORA SU DIRETOS DE AUTOR SIN PERMITE!!'''",
-'longpagewarning' => "'''AVISA: Esta paje usa $1 kilotetas; alga surfadores pote ave problemes con la edita de pajes plu grande ce 32 ko.
+'longpagewarning' => "'''AVISA: Esta paje usa $1 kilotetas; alga surfadores pote ave problemes con la edita de pajes plu grande ce 32 ko.
Per favore, considera parti la paje en pesos plu poca.'''",
-'templatesused' => 'Modeles usada a esta paje:',
-'templatesusedpreview' => 'Modeles usada en esta previde:',
-'template-protected' => '(protejeda)',
-'template-semiprotected' => '(proteje en parte)',
-'nocreatetext' => '{{SITENAME}} ave un restringe a la capas per crea pajes nova.
+'templatesused' => '{{PLURAL:$1|Modele|Modeles}} usada en esta paje:',
+'templatesusedpreview' => '{{PLURAL:$1|Modele|Modeles}} usada en esta previde:',
+'template-protected' => '(protejeda)',
+'template-semiprotected' => '(proteje en parte)',
+'nocreatetext' => '{{SITENAME}} ave un restringe a la capas per crea pajes nova.
Tu pote vade a retro e edita un paje esistente, o [[Special:UserLogin|sinia per entra o crea un conta]].',
-'recreate-deleted-warn' => "'''Avisa: Tu es recrea un paje ce ia es sutraed en la pasada.'''
+'recreate-moveddeleted-warn' => "'''Avisa: Tu es recrea un paje ce ia es sutraed en la pasada.'''
Tu debe pensa ce es bon continua edita esta paje.
La arcivo de sutraes per esta paje es asi per conveni:",
@@ -429,7 +416,7 @@ La arcivo de sutraes per esta paje es asi per conveni:",
'currentrev' => 'Cambia presente',
'currentrev-asof' => 'Cambia presente a departi di $1',
'revisionasof' => 'Revisa de $1',
-'revision-info' => 'Revisa de $1 par $2', # Additionally available: $3: revision id
+'revision-info' => 'Revisa de $1 par $2',
'previousrevision' => '← Altera presedente',
'nextrevision' => 'Revisa plu nova→',
'currentrevisionlink' => 'Revisa presente',
@@ -449,7 +436,7 @@ La arcivo de sutraes per esta paje es asi per conveni:",
# Revision feed
'history-feed-title' => 'Istoria de revises',
-'history-feed-item-nocomment' => '$1 a $2', # user at time
+'history-feed-item-nocomment' => '$1 a $2',
# Revision deletion
'rev-delundel' => 'mostra/asconde',
@@ -461,15 +448,12 @@ La arcivo de sutraes per esta paje es asi per conveni:",
'compareselectedversions' => 'Compare varias elejeda',
'editundo' => 'desfa',
'diff-multi' => '({{PLURAL:$1|$1 revise|$1 revises}} medial no mostrada.)',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
# Search results
'searchresults' => 'Resultas de xerca',
-'noexactmatch' => "'''Es no paje clamada \"\$1\".''' Tu pote [[:\$1|crea esta paje]].",
-'prevn' => '$1 presedente',
-'nextn' => '$1 seguente',
-'viewprevnext' => 'Vide ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} presedente',
+'nextn' => '{{PLURAL:$1|$1}} seguente',
+'viewprevnext' => 'Vide ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Contenis',
'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 parolas}})',
'search-section' => '(sesion $1)',
@@ -484,7 +468,7 @@ La arcivo de sutraes per esta paje es asi per conveni:",
'preferences' => 'Preferis',
'mypreferences' => 'Me preferis',
'skin-preview' => 'Previde',
-'math' => 'Matematica',
+'prefs-math' => 'Matematica',
'saveprefs' => 'Fisa',
'rows' => 'Linias:',
'columns' => 'Colonas:',
@@ -500,10 +484,21 @@ La arcivo de sutraes per esta paje es asi per conveni:",
'timezoneregion-europe' => 'Europa',
'timezoneregion-indian' => 'Mar Indian',
'timezoneregion-pacific' => 'Mar Pasifica',
-'files' => 'Fixes',
+'prefs-files' => 'Fixes',
+'youremail' => 'Eposta:',
+'username' => 'Nom de usor:',
+'prefs-memberingroups' => 'Membro de la {{PLURAL:$1|grupo|grupos}}:',
+'yourrealname' => 'Nom vera:',
+'yourlanguage' => 'Lingua:',
+'yournick' => 'Suscrive:',
+'yourgender' => 'Seso:',
+'gender-male' => 'Mas',
+'gender-female' => 'Fema',
+'email' => 'Eposta',
+'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.',
# User rights
-'userrights' => 'Dirije de la diretos de usores', # Not used as normal message but as header for the special page itself
+'userrights' => 'Dirije de la diretos de usores',
'saveusergroups' => 'Fisa la grupo de usores',
# Groups
@@ -551,6 +546,8 @@ La arcivo de sutraes per esta paje es asi per conveni:",
# Recent changes linked
'recentchangeslinked' => 'Cambias relateda',
+'recentchangeslinked-feed' => 'Cambias relateda',
+'recentchangeslinked-toolbox' => 'Cambias relateda',
'recentchangeslinked-title' => 'Cambias relatada a "$1"',
'recentchangeslinked-noresult' => 'No cambias de pajes liada entre esta periodo.',
'recentchangeslinked-summary' => "Esta lista conteni la cambias plu resente de la pajes liada a otra (o de la membros de un categoria).
@@ -572,6 +569,7 @@ Pajes a [[Special:Watchlist|tu lista de pajes oservada]] es en leteras '''forte'
'listfiles_name' => 'Nom',
# File description page
+'file-anchor-link' => 'Fix',
'filehist' => 'Istoria de fix',
'filehist-help' => 'Clica a un data/tempo per vide la fix como el ia aperi alora.',
'filehist-current' => 'aora',
@@ -583,9 +581,7 @@ Pajes a [[Special:Watchlist|tu lista de pajes oservada]] es en leteras '''forte'
'imagelinks' => 'Lias de fix',
'linkstoimage' => 'Esta {{PLURAL:$1|paje|pajes}} lia a esta fix:',
'nolinkstoimage' => 'Es no pajes ce lia a esta fix.',
-'sharedupload' => 'Esta fix es parte de $1 e pote es usada par otra projetas.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Es no fix con esta nom, ma tu pote $1.',
-'noimage-linktext' => 'envia un',
+'sharedupload' => 'Esta fix es parte de $1 e pote es usada par otra projetas.',
'uploadnewversion-linktext' => 'Envia un varia nova de esta fix',
# MIME search
@@ -743,7 +739,6 @@ Vide $2 per un catalogo de sutraes resente.',
'protectexpiry' => 'Fini:',
'protect_expiry_invalid' => 'Ora de fini no es legal.',
'protect_expiry_old' => 'Ora de fini es en la pasada.',
-'protect-unchain' => 'Desecura la permetes de move',
'protect-text' => "Tu pote vide e cambia la nivel de proteje asi per la paje '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Tu conta no ave permite per cambia niveles de proteje.
Asi es la ajustas presente per la paje '''$1''':",
@@ -756,7 +751,7 @@ Asi es la ajustas presente per la paje '''$1''':",
'protect-expiring' => 'fini $1 (UTC)',
'protect-cascade' => 'Proteje pajes ce es incluida en esta paje (proteje cascadente)',
'protect-cantedit' => 'Tu no pote cambia la nivel de proteje de esta paje, per ce tu no ave la permite per edita el.',
-'protect-expiry-options' => '1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite',
'restriction-type' => 'Permete:',
'restriction-level' => 'Nivel de restrinje:',
@@ -781,6 +776,8 @@ Asi es la ajustas presente per la paje '''$1''':",
'sp-contributions-newbies' => 'Sola mostra contribuis de contas nova',
'sp-contributions-newbies-sub' => 'Per contas nova',
'sp-contributions-blocklog' => 'Impedi arcivo',
+'sp-contributions-talk' => 'Parla',
+'sp-contributions-userrights' => 'Dirije de la diretos de usores',
'sp-contributions-search' => 'Xerca per contribuis',
'sp-contributions-username' => 'Adirije de IP o nom de usor:',
'sp-contributions-submit' => 'Xerca',
@@ -805,7 +802,7 @@ Asi es la ajustas presente per la paje '''$1''':",
'blockip' => 'Impedi usor',
'ipbreason' => 'Razona:',
'ipbsubmit' => 'Impedi esta usor',
-'ipboptions' => '2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite',
'blockipsuccesssub' => 'La impedi susede',
'ipusubmit' => 'Desimpedi esta adirije',
'ipblocklist' => 'Liste de adirijes de IP e usores impedida',
@@ -840,7 +837,7 @@ En esta casos, tu va nesesa move o fusa la paje per mano, si desirada.",
'move-watch' => 'Oserva esta paje',
'movepagebtn' => 'Move paje',
'pagemovedsub' => 'La move ia susede',
-'movepage-moved' => '\'\'\'"$1" ia es moveda a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ia es moveda a "$2"\'\'\'',
'articleexists' => 'Un paje con acel nom esiste ja, o la nom ce tu ia eleje no es un nom legal. Per favore, eleje un otra nom.',
'talkexists' => "'''La paje se mesma ia es moveda, ma la paje de discutes no pote es moveda, per ce un esiste ja a la titulo nova. Per favore, fusa los per mano'''",
'movedto' => 'moveda a',
@@ -888,6 +885,7 @@ En esta casos, tu va nesesa move o fusa la paje per mano, si desirada.",
'tooltip-search' => 'Xerca {{SITENAME}}',
'tooltip-p-logo' => 'Visita la paje prima',
'tooltip-n-mainpage' => 'Visita la paje prima',
+'tooltip-n-mainpage-description' => 'Visita la paje prima',
'tooltip-n-portal' => 'De la projeta, ce tu pote fa, do tu pote trova cosas',
'tooltip-n-currentevents' => 'Trova informa presedente de avenis nova',
'tooltip-n-recentchanges' => 'La lista de cambias resente en la vici.',
@@ -950,7 +948,7 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-exposuretime-format' => '$1 sec. ($2)',
@@ -973,8 +971,8 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
'watchlisttools-raw' => 'Edita la lista rua de pajes oservada',
# Special:Version
-'version' => 'Varia', # Not used as normal message but as header for the special page itself
-'version-version' => 'Varia',
+'version' => 'Varia',
+'version-version' => '(Varia $1)',
# Special:FilePath
'filepath-page' => 'Fix:',
diff --git a/languages/messages/MessagesLg.php b/languages/messages/MessagesLg.php
index 7b11cff4..09f7f671 100644
--- a/languages/messages/MessagesLg.php
+++ b/languages/messages/MessagesLg.php
@@ -77,16 +77,26 @@ $messages = array(
'category-subcat-count' => '{{PLURAL:$2|Ettuluba lino lirimu ettabi lino lyokka:|Ettuluba lino lirimu {{PLURAL:$1|ettabi lino:|amatabi $1 gano}}, ku $2 awamu.}}',
'listingcontinuesabbrev' => 'era...',
-'about' => 'Okutangaaza',
-'newwindow' => '(bijjira mu kadirisa kapya)',
-'cancel' => 'Biveeko',
+'about' => 'Okutangaaza',
+'newwindow' => '(bijjira mu kadirisa kapya)',
+'cancel' => 'Biveeko',
+'mypage' => 'Enfo yange',
+'mytalk' => 'Yogera nange',
+'navigation' => 'Endagiriro',
+
+# Cologne Blue skin
'qbfind' => 'Noonya',
'qbbrowse' => 'Lambula',
'qbedit' => 'Kyusa',
'qbspecialpages' => 'Empapula enjawule',
-'mypage' => 'Enfo yange',
-'mytalk' => 'Yogera nange',
-'navigation' => 'Endagiriro',
+'faq' => 'Ebitera okubuuzibwa',
+'faqpage' => 'Project:Ebitera okubuuzibwa ku',
+
+# Vector skin
+'vector-action-move' => 'Simbuliza',
+'vector-namespace-main' => 'Lupapula',
+'vector-view-edit' => 'Kyusa',
+'vector-view-viewsource' => "Kebera obulambike obw'ennono obw'olupapula luno",
'errorpagetitle' => 'Kiremya',
'returnto' => 'Dda ku $1.',
@@ -119,7 +129,7 @@ $messages = array(
'toolbox' => 'Ebikozesebwa',
'otherlanguages' => 'Mu nnimi ndala',
'redirectedfrom' => '(Oleetedwa wano okuva ku $1)',
-'lastmodifiedat' => 'Luno olupapula lwasemba okukyusibwamu ku $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Luno olupapula lwasemba okukyusibwamu ku $2, $1.',
'viewcount' => 'Luno olupapula lwakasomebwa {{PLURAL:$1|omurundi gumu|emirundi $1}}.',
'protectedpage' => 'Luno olupapula terukyusibwamu',
'jumpto' => 'Genda ku:',
@@ -130,7 +140,6 @@ $messages = array(
'aboutsite' => 'Okutangaaza ku {{SITENAME}}',
'aboutpage' => 'Project:Okutangaaza ku',
'copyright' => 'Ebiri kuno bifugibwa $1.',
-'copyrightpagename' => "bino biriko ekikuguzo eky'obwananyi ekya {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Ebikugizo eby'obwa nannyini",
'currentevents' => 'Ebibindabinda',
'currentevents-url' => 'Project:Ebibindabinda',
@@ -138,8 +147,6 @@ $messages = array(
'disclaimerpage' => "Project:Okutangaaza ku kkomo ery'obuvunaaniro bwaffe obw'omu mateeka",
'edithelp' => 'Nyamba',
'edithelppage' => "Help:Obuyambi ku by'okukyusakyusa",
-'faq' => 'Ebitera okubuuzibwa',
-'faqpage' => 'Project:Ebitera okubuuzibwa ku',
'helppage' => 'Help:Endagiriro',
'mainpage' => 'Olupapula Olusooka',
'mainpage-description' => 'Olupapula Olusooka',
@@ -193,12 +200,10 @@ Ensobi eno gimanyise [[Special:ListUsers/sysop|omuteesiteesi]], nga omulaga n'en
Enkyukakyuka z'okola wano zigyakubaako kye zikola ku ngeri abantu gye bakozesaamu enfo eno.",
# Login and logout pages
-'logouttitle' => 'Kuvaamu',
'logouttext' => "'''Kati ovuddemu.'''
Osobola okusigala nga okozesa {{SITENAME}} nga atamanyise, ate osobola n'okuddamu okuyingira nga bw'obadde oba nga okozesezza ery'obwa memba eddala.
Wekkaanye, empapula ezimu ziyinza okukweyolekera nga bwe zibadde nga oyingidde - okutuusa lw'okunkumula eggwanika ezzibizi erya kalambula-neti yo.",
-'loginpagetitle' => 'Kuyingira - memba',
'yourname' => "Ery'obwa memba",
'yourpassword' => 'Ekigambo ekikuumi',
'yourpasswordagain' => 'Ddamu ekigambo ekikuumi',
@@ -214,11 +219,6 @@ Wekkaanye, empapula ezimu ziyinza okukweyolekera nga bwe zibadde nga oyingidde -
'createaccount' => 'Kolawo akawunti',
'gotaccount' => "Akawunti wafuna? '''$1'''.",
'gotaccountlink' => 'Yingira',
-'username' => "Ery'obwa memba:",
-'yourlanguage' => 'Lulimi lwo:',
-'yournick' => 'Empaako yo (ssi ya tteeka):',
-'prefs-help-email' => "* E-mail (ssi kya tteeka): Bw'ogiwayo, basobola okukutuukirira nga bayitira ku enfo yo ey'obwa memba oba olupapula lwo
-olwa 'yogera nange' nga ggwe tewetaaze kulaga bikufaako.",
'loginsuccesstitle' => 'Oyingidde',
'loginsuccess' => "'''Kati oyingidde mu {{SITENAME}} nga okozesa erinnya \"\$1\".'''",
'mailmypassword' => 'Nsindikira ekigambo ekikuumi ekipya',
@@ -294,12 +294,12 @@ Tukwesiga nti by'owandiika muno bibyo oba wabigya mu kya bonna oba awalala gye b
'copyrightwarning2' => "Genderera nti buli kyowandiika muno mu {{SITENAME}} abalala bayinza okubikyusa oba n'okubigiramu ddala. Obanga tewetegese okulaba by'owandiise nga babikyusakyusa n'okubisaasaanya nga bwe balaba, tobiwandiika muno.<br />
Tukwesiga nti by'owandiika muno bibyo oba wabigya mu kya bonna oba awalala gye batalina bikugizo eby'obwa nannyini. (okuyiga ebisingawo, laba $1).
'''TOTEEKAMU EBIRIKO EBIKUGIZO EBY'OBWA NANNYINI NGA BA NYINI BYO TEBAKUWADDE LUKUSA!'''",
-'templatesused' => 'Olupapula luno entiba ze lukozesa ze:',
+'templatesused' => 'Olupapula luno lukozesa {{PLURAL:$1|olutiba luno|entiba zino}} :',
'template-protected' => '(luno lusibidwa)',
'template-semiprotected' => '(ebimu ku lupapula luno bisibidwa)',
'nocreatetext' => "Ku {{SITENAME}} tosobola okukolawo empapula mpya nga tokozesa buyinza obw'obwamemba. Kati oyinza kugenda n'okyusamu olupapula olulala olwakolebwa dda, oba oyinza [[Special:UserLogin|okufuna obuyinza obw'obwamemba]].",
'permissionserrorstext-withaction' => "Tokkirizibwa $2, olw'ensonga {{PLURAL:eno|zino|$1}}:",
-'recreate-deleted-warn' => "'''Kulabula: Ogenda okuzzaawo olupapuka olwagyibwawo.'''
+'recreate-moveddeleted-warn' => "'''Kulabula: Ogenda okuzzaawo olupapuka olwagyibwawo.'''
Okakasa nti kisaanira okuluzzaawo?
Ebifa ku kugyibwawo kw'olupapula luno bye bino:",
@@ -336,12 +336,11 @@ oba ku gano agali ku lupapula luno.<br />
'searchsubtitle' => 'Onoonyezza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|empapula zonna ezitandika ne "$1"]]{{int:pipe-separator}}
[[Special:WhatLinksHere/$1|empapula zonna ezikuggusa ku "$1"]])',
'searchsubtitleinvalid' => "Onoonyezza '''$1'''",
-'noexactmatch' => "'''Tewali lupapula lwa \"\$1\".''' Ob'oyagala, [[:\$1|olupapula olwo gwe osobola okulukolawo]].",
'notitlematches' => 'Tewali mpapula zirina mutwe guno',
'notextmatches' => 'Tewali mpapula ziriko bigambo bino',
-'prevn' => '$1 ezikulembedde zino',
-'nextn' => '$1 eziddako',
-'viewprevnext' => 'Laga ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} ezikulembedde zino',
+'nextn' => '{{PLURAL:$1|$1}} eziddako',
+'viewprevnext' => 'Laga ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Endagiriro',
'search-result-size' => '$1 ({{PLURAL:$2|kigambo 1 | bigambo $2}})',
'search-redirect' => "(olupapula '$1' lukuggusiza wano)",
@@ -367,6 +366,11 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
'searchresultshead' => 'Noonya',
'savedprefs' => 'Enteekateeka yo ekazidwa.',
'allowemail' => 'Kkiriza bamemba abalala okukusindikira e-mail',
+'username' => "Ery'obwa memba:",
+'yourlanguage' => 'Lulimi lwo:',
+'yournick' => 'Empaako yo (ssi ya tteeka):',
+'prefs-help-email' => "* E-mail (ssi kya tteeka): Bw'ogiwayo, basobola okukutuukirira nga bayitira ku enfo yo ey'obwa memba oba olupapula lwo
+olwa 'yogera nange' nga ggwe tewetaaze kulaga bikufaako.",
# User rights
'editinguser' => "Kukyuusa ebya memba '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -397,6 +401,8 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
# Recent changes linked
'recentchangeslinked' => 'Ebikyusiddwa ebyekuusa ku lupapula luno',
+'recentchangeslinked-feed' => 'Ebikyusiddwa ebyekuusa ku lupapula luno',
+'recentchangeslinked-toolbox' => 'Ebikyusiddwa ebyekuusa ku lupapula luno',
'recentchangeslinked-title' => 'Enkyukakyuka ezikwatagana ne "$1"',
'recentchangeslinked-noresult' => 'Empapula eziriko enyunzi tewali lukyuse mu kiseera kino.',
'recentchangeslinked-summary' => "Olulpapula olw'enjawulo luno luliko olukalala lw'ebikyuse ku mpapula eziriko enyunzi ezigguka ku lw'obadde otunuulira. Ebiwandikidwa mu '''nukuta enziggumivu''' biri ku [[Special:Watchlist|mpapula z'ogoberera]].",
@@ -410,11 +416,13 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
'listfiles_user' => 'Memba',
# File description page
+'file-anchor-link' => 'Fayiro',
'filehist' => 'Ebyafaayo ebya fayiro eno',
'filehist-help' => "Bw'onyiga ku nnaku n'essaawa, ojjakulaba fayiro nga bwe yali efaanana ku kiseera ekyo.",
'filehist-current' => 'oluwandika oluliwo kakano',
'filehist-datetime' => "Ennaku n'obudde",
'filehist-thumb' => 'Kulingiza',
+'filehist-thumbtext' => 'Lingiza oluwandika olwakolebwa nga $1',
'filehist-user' => 'Eyakiteekawo',
'filehist-dimensions' => "Obuwanvu n'obugazi bwakyo",
'filehist-filesize' => 'Obunene bwa fayiro eno',
@@ -422,7 +430,7 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
'imagelinks' => 'Empapula eziriko enyunzi ezigguka ku kifaananyi kino',
'linkstoimage' => '{{PLURAL:olupapula $1 olukuggusa ku fayiro eno lwe|Empapula $1 ezikuggusa ku fayiro eno ze}}:',
'nolinkstoimage' => 'Tewali mpapula ziriko nyunzi ezigguka ku fayiro eno.',
-'sharedupload' => "Fayiro eno, ey'omu $1, y'emu esobola okuba nga empapula ez'omu pulojekiti endala zigikozesa", # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => "Fayiro eno, ey'omu $1, y'emu esobola okuba nga empapula ez'omu pulojekiti endala zigikozesa",
# Random page
'randompage' => 'Nondera olupapula muwawa',
@@ -496,7 +504,7 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
# Protect
'protectedarticle' => 'olupapula "[[$1]]" lusibidwa',
-'protect-expiry-options' => 'saawa 2:2 hours,lunaku 1:1 day,nnaku 3:3 days,sande 1:1 week,sande 2:2 weeks,mwezi 1:1 month,myezi 3:3 months,myezi 6:6 months,mwaka 1:1 year,okutali kkomo:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'saawa 2:2 hours,lunaku 1:1 day,nnaku 3:3 days,sande 1:1 week,sande 2:2 weeks,mwezi 1:1 month,myezi 3:3 months,myezi 6:6 months,mwaka 1:1 year,okutali kkomo:infinite',
# Restrictions (nouns)
'restriction-edit' => 'Kyusa',
@@ -518,6 +526,7 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
'year' => "Mu mwaka (n'egyakulembera):",
'sp-contributions-blocklog' => 'Ebifa ku bagaanidwa',
+'sp-contributions-talk' => 'Yogera nange',
'sp-contributions-submit' => 'Noonya',
# What links here
@@ -535,7 +544,7 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
# Block/unblock
'blockip' => 'Gaana memba okuwandiika',
-'ipboptions' => 'saawa 2:2 hours,lunaku 1:1 day,nnaku 3:3 days,sande 1:1 week,sande 2:2 weeks,mwezi 1:1 month,myezi 3:3 months,myezi 6:6 months,mwaka 1:1 year,okutali kkomo:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'saawa 2:2 hours,lunaku 1:1 day,nnaku 3:3 days,sande 1:1 week,sande 2:2 weeks,mwezi 1:1 month,myezi 3:3 months,myezi 6:6 months,mwaka 1:1 year,okutali kkomo:infinite',
'blockipsuccesssub' => 'Memba agaaniddwa okuwandika',
'blocklink' => 'Ono agaanibwe okuwandiika',
'contribslink' => 'byawaddeyo',
@@ -556,13 +565,11 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
'export' => 'Okusomosa mpapula',
# Namespace 8 related
-'allmessages' => 'Bubaka bwa sisitemu',
-'allmessagesname' => 'Erinnya',
-'allmessagesdefault' => 'Ebigambo ebya bulijjo',
-'allmessagescurrent' => 'Ebiriwo kakano',
-'allmessagestext' => "Luno lwe lukalala olw'obubaka obwa sisitemu obw'omu kkunngaanizo erya MediaWiki.",
-'allmessagesfilter' => "Amannya ag'obubaka gasunsuze:",
-'allmessagesmodified' => 'Lagako ebikyusidwa byokka',
+'allmessages' => 'Bubaka bwa sisitemu',
+'allmessagesname' => 'Erinnya',
+'allmessagesdefault' => 'Ebigambo ebya bulijjo',
+'allmessagescurrent' => 'Ebiriwo kakano',
+'allmessagestext' => "Luno lwe lukalala olw'obubaka obwa sisitemu obw'omu kkunngaanizo erya MediaWiki.",
# Thumbnails
'thumbnail-more' => 'Gejjesa akafaanayi',
@@ -590,6 +597,7 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
'tooltip-search-go' => "Bw'onyiga wano kinonayo olupapula olutumidwa ekigambo ky'owandise kyennyini, bwe luba nga gyeluli",
'tooltip-search-fulltext' => "bw'onyiga wano kinoonya empapula zonna mu Wikipediya ezirimu ebigambo by'owandise",
'tooltip-n-mainpage' => "Nyiga wano ob'oyagala okukebera olupapula olusooka",
+'tooltip-n-mainpage-description' => 'Genda ku lupapula olusookerwako',
'tooltip-n-portal' => "Ebikutangaaza ku kawefube wa Wiki eno n'engeri naawe mw'osobolera okubyenyigiramu",
'tooltip-n-currentevents' => 'Nyiga wano oba oyagala okuyiga ebisingawo ku bibindabinda',
'tooltip-n-recentchanges' => "Nyiga wano okulaba olukalala lw'ebyakakyusibwamu ku wiki eno",
@@ -652,7 +660,7 @@ Enyunzi endala eziba ku lunyiriri olwo zibalibwa nga ezigguka ku mpapula ezikoze
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# External editor support
'edit-externally' => 'Fayiro eno gikolereko mu pulogulamu endala',
diff --git a/languages/messages/MessagesLi.php b/languages/messages/MessagesLi.php
index 7a651249..10762bf1 100644
--- a/languages/messages/MessagesLi.php
+++ b/languages/messages/MessagesLi.php
@@ -13,6 +13,7 @@
* @author Matthias
* @author Ooswesthoesbes
* @author Pahles
+ * @author Purodha
* @author Remember the dot
* @author Tibor
* @author לערי ריינהארט
@@ -22,24 +23,22 @@ $fallback = 'nl';
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Speciaal',
- NS_MAIN => '',
- NS_TALK => 'Euverlèk',
- NS_USER => 'Gebroeker',
- NS_USER_TALK => 'Euverlèk_gebroeker',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'Euverlèk_$1',
- NS_FILE => 'Plaetje',
- NS_FILE_TALK => 'Euverlèk_plaetje',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Euverlèk_MediaWiki',
- NS_TEMPLATE => 'Sjabloon',
- NS_TEMPLATE_TALK => 'Euverlèk_sjabloon',
- NS_HELP => 'Help',
- NS_HELP_TALK => 'Euverlèk_help',
- NS_CATEGORY => 'Categorie',
- NS_CATEGORY_TALK => 'Euverlèk_categorie'
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciaal',
+ NS_TALK => 'Euverlèk',
+ NS_USER => 'Gebroeker',
+ NS_USER_TALK => 'Euverlèk_gebroeker',
+ NS_PROJECT_TALK => 'Euverlèk_$1',
+ NS_FILE => 'Plaetje',
+ NS_FILE_TALK => 'Euverlèk_plaetje',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Euverlèk_MediaWiki',
+ NS_TEMPLATE => 'Sjabloon',
+ NS_TEMPLATE_TALK => 'Euverlèk_sjabloon',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Euverlèk_help',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Euverlèk_categorie',
);
$namespaceAliases = array(
@@ -52,7 +51,7 @@ $namespaceAliases = array(
$specialPageAliases = array(
'DoubleRedirects' => array( 'Dobbel doorverwiezinge' ),
'BrokenRedirects' => array( 'Gebraoke doorverwiezinge' ),
- 'Disambiguations' => array( 'Verdudelikingspazjena\'s' ),
+ 'Disambiguations' => array( 'Verdudelikingspagina\'s' ),
'Userlogin' => array( 'Aanmelje' ),
'Userlogout' => array( 'Aafmelje' ),
'CreateAccount' => array( 'Gebroeker aonmake' ),
@@ -63,17 +62,17 @@ $specialPageAliases = array(
'Listfiles' => array( 'Plaetjes' ),
'Newimages' => array( 'Nuuj plaetjes' ),
'Listusers' => array( 'Gebroekers' ),
- 'Listgrouprights' => array( 'Groepsrechte weergeve' ),
- 'Statistics' => array( 'Sjtatistieke' ),
- 'Randompage' => array( 'Willekäörig artikkel' ),
- 'Lonelypages' => array( 'Weispazjena\'s' ),
- 'Uncategorizedpages' => array( 'Óngecategoriseerde pazjena\'s' ),
+ 'Listgrouprights' => array( 'Groepsrechte weergaeve' ),
+ 'Statistics' => array( 'Sjtattestieke' ),
+ 'Randompage' => array( 'Willekäörig artikel' ),
+ 'Lonelypages' => array( 'Weispagina\'s' ),
+ 'Uncategorizedpages' => array( 'Óngecategoriseerde pagina\'s' ),
'Uncategorizedcategories' => array( 'Óngecategoriseerde categorieë' ),
'Uncategorizedimages' => array( 'Óngecategoriseerde plaetjes' ),
'Uncategorizedtemplates' => array( 'Óngecategorisserde sjablone' ),
'Unusedcategories' => array( 'Óngebroekde categorieë' ),
'Unusedimages' => array( 'Óngebroekde plaetjes' ),
- 'Wantedpages' => array( 'Gewunsjde pazjena\'s' ),
+ 'Wantedpages' => array( 'Gewunsjde pagina\'s' ),
'Wantedcategories' => array( 'Gewunsjde categorieë' ),
'Wantedfiles' => array( 'Gevraogde besjtande' ),
'Wantedtemplates' => array( 'Gevraogde sjablone' ),
@@ -82,25 +81,25 @@ $specialPageAliases = array(
'Mostlinkedtemplates' => array( 'Meis gebroekde sjablone' ),
'Mostimages' => array( 'Meis gebroekde plaetjes' ),
'Mostcategories' => array( 'Meiste categorieë' ),
- 'Mostrevisions' => array( 'Meis bewirkde pazjena\'s' ),
- 'Fewestrevisions' => array( 'Winnigs bewirkde pazjena\'s' ),
- 'Shortpages' => array( 'Kórte pazjena\'s' ),
- 'Longpages' => array( 'Lang pazjena\'s' ),
- 'Newpages' => array( 'Nuuj pazjena\'s' ),
- 'Ancientpages' => array( 'Audste pazjena\'s' ),
- 'Deadendpages' => array( 'Doedloupende pazjena\'s' ),
- 'Protectedpages' => array( 'Beveiligde pazjena\'s' ),
+ 'Mostrevisions' => array( 'Meis bewirkde pagina\'s' ),
+ 'Fewestrevisions' => array( 'Winnigs bewirkde pagina\'s' ),
+ 'Shortpages' => array( 'Kórte pagina\'s' ),
+ 'Longpages' => array( 'Lang pagina\'s' ),
+ 'Newpages' => array( 'Nuuj pagina\'s' ),
+ 'Ancientpages' => array( 'Audste pagina\'s' ),
+ 'Deadendpages' => array( 'Doedloupende pagina\'s' ),
+ 'Protectedpages' => array( 'Beveiligde pagina\'s' ),
'Protectedtitles' => array( 'Beveiligde titels' ),
- 'Allpages' => array( 'Alle pazjena\'s' ),
+ 'Allpages' => array( 'Alle pagina\'s' ),
'Prefixindex' => array( 'Alle artikele' ),
'Ipblocklist' => array( 'Geblokkeerde IP\'s' ),
- 'Specialpages' => array( 'Sjpeciaal pazjena\'s' ),
+ 'Specialpages' => array( 'Speciaal pagina\'s' ),
'Contributions' => array( 'Biedrage' ),
'Emailuser' => array( 'E-maile' ),
'Confirmemail' => array( 'E-mail bevestige' ),
'Whatlinkshere' => array( 'Verwiezinge nao hie' ),
- 'Recentchangeslinked' => array( 'Verwante wiezinge' ),
- 'Movepage' => array( 'Versjuve' ),
+ 'Recentchangeslinked' => array( 'Verwante verangeringe' ),
+ 'Movepage' => array( 'Verplaatse' ),
'Blockme' => array( 'Blokkeer mich' ),
'Booksources' => array( 'Bookwinkele' ),
'Categories' => array( 'Categorieë' ),
@@ -115,21 +114,29 @@ $specialPageAliases = array(
'Unlockdb' => array( 'DB vriegaeve' ),
'Userrights' => array( 'Gebroekersrechte' ),
'MIMEsearch' => array( 'MIME zeuke' ),
- 'FileDuplicateSearch' => array( 'Bestandsduplicate zeuke' ),
- 'Unwatchedpages' => array( 'Neet-gevolgde pazjena\'s' ),
+ 'FileDuplicateSearch' => array( 'Besjtandsduplicate zeuke' ),
+ 'Unwatchedpages' => array( 'Neet-gevolgde pagina\'s' ),
'Listredirects' => array( 'Doorverwiezinge' ),
- 'Revisiondelete' => array( 'Versie eweghaole' ),
+ 'Revisiondelete' => array( 'Versie ewegsjaffe' ),
'Unusedtemplates' => array( 'Óngebroekde sjablone' ),
'Randomredirect' => array( 'Willekäörige doorverwiezing' ),
- 'Mypage' => array( 'Mien pazjena\'s' ),
+ 'Mypage' => array( 'Mien pagina\'s' ),
'Mytalk' => array( 'Mien euverlèk' ),
'Mycontributions' => array( 'Mien biedrage' ),
'Listadmins' => array( 'Systeemwèrkers' ),
'Listbots' => array( 'Botlies' ),
- 'Popularpages' => array( 'Populair pazjena\'s' ),
+ 'Popularpages' => array( 'Populair pagina\'s' ),
'Search' => array( 'Zeuke' ),
'Resetpass' => array( 'Wachwaord opnuuj insjtèlle' ),
'Withoutinterwiki' => array( 'Gein interwiki' ),
+ 'MergeHistory' => array( 'Historie sameveuge' ),
+ 'Filepath' => array( 'Besjtandspaad' ),
+ 'Invalidateemail' => array( 'E-mail annulere' ),
+ 'Blankpage' => array( 'Laege pagina\'s' ),
+ 'LinkSearch' => array( 'Verwiezinge zeuke' ),
+ 'DeletedContributions' => array( 'Eweggesjafde biedrage' ),
+ 'Tags' => array( 'Labels' ),
+ 'Activeusers' => array( 'Aktieve gebroekers' ),
);
$dateFormats = array(
@@ -177,6 +184,7 @@ $messages = array(
'tog-enotifminoredits' => "'ne E-mail nao mich versjikke bie klein bewirkinge op pazjena's op mien volglies",
'tog-enotifrevealaddr' => 'Mien e-mailadres tuine in e-mailberichte',
'tog-shownumberswatching' => "'t Aantal gebroekers tuine die dees pazjena volg",
+'tog-oldsig' => 'Betrachting vanne bestaondje ongerteikening:',
'tog-fancysig' => 'Handjteikening zónger link nao dien gebroekerspazjena',
'tog-externaleditor' => "Sjtanderd 'ne externe teksbewirker gebroeke (inkel veur experts, speciaal instellinge zien nudig)",
'tog-externaldiff' => "Sjtanderd 'n extern vergeliekingsprogramma gebroeke (inkel veur experts, speciaal instellinge zien nudig)",
@@ -199,6 +207,13 @@ $messages = array(
'underline-never' => 'Noets',
'underline-default' => 'Sjtanderd van de browser',
+# Font style option in Special:Preferences
+'editfont-style' => 'Lettertypestielbewèrkingsvènster:',
+'editfont-default' => 'Standerd browser',
+'editfont-monospace' => 'Monospacefont',
+'editfont-sansserif' => 'Sans-seriffont',
+'editfont-serif' => 'Seriffont',
+
# Dates
'sunday' => 'zóndig',
'monday' => 'maondig',
@@ -258,7 +273,7 @@ $messages = array(
'category-media-header' => 'Media in de categorie "$1"',
'category-empty' => "''Dees categorie bevat op 't memènt gein artikele of media.''",
'hidden-categories' => 'Verbórge {{PLURAL:$1|categorie|categorië}}',
-'hidden-category-category' => 'Verbórge categorië', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verbórge categorië',
'category-subcat-count' => "{{PLURAL:$2|Dees categorie haet de volgende óngercategorie.|Dees categorie haet de volgende {{PLURAL:$1|óngercategorie|$1 óngercategorië}}, van 'n totaal van $2.}}",
'category-subcat-count-limited' => 'Dees categorie haet de volgende {{PLURAL:$1|óngercategorie|$1 óngercategorië}}.',
'category-article-count' => "{{PLURAL:$2|Dees categorie bevat de volgende pazjena.|Dees categorie bevat de volgende {{PLURAL:$1|pazjena|$1 pazjena's}}, van in totaal $2.}}",
@@ -266,6 +281,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Dees categorie bevat 't volgende bestandj.|Dees categorie bevat {{PLURAL:$1|'t volgende bestandj|de volgende $1 bestenj}}, van in totaal $2.}}",
'category-file-count-limited' => "Dees categorie bevat {{PLURAL:$1|'t volgende bestandj|de volgende $1 bestenj}}.",
'listingcontinuesabbrev' => 'wiejer',
+'index-category' => 'Geïndexeerde paazjes',
+'noindex-category' => 'Óngeïndexeerde paazjes',
'mainpagetext' => "'''MediaWiki software succesvol geïnsjtalleerd.'''",
'mainpagedocfooter' => "Raodpleeg de [http://meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.
@@ -276,10 +293,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki VGV (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]",
-'about' => 'Informatie',
-'article' => 'Contentpazjena',
-'newwindow' => '(in nuuj venster)',
-'cancel' => 'Aafbraeke',
+'about' => 'Informatie',
+'article' => 'Contentpazjena',
+'newwindow' => '(in nuuj venster)',
+'cancel' => 'Aafbraeke',
+'moredotdotdot' => 'Miè...',
+'mypage' => 'Mien gebroekerspazjena',
+'mytalk' => 'Mien euverlèkpazjena',
+'anontalk' => 'Euverlèk veur dit IP adres',
+'navigation' => 'Navigatie',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Zeuke',
'qbbrowse' => 'Bladere',
'qbedit' => 'Bewirke',
@@ -287,15 +312,35 @@ $messages = array(
'qbpageinfo' => 'Pazjena-informatie',
'qbmyoptions' => 'mien opties',
'qbspecialpages' => "Speciaal pagina's",
-'moredotdotdot' => 'Miè...',
-'mypage' => 'Mien gebroekerspazjena',
-'mytalk' => 'Mien euverlèkpazjena',
-'anontalk' => 'Euverlèk veur dit IP adres',
-'navigation' => 'Navigatie',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (väölgesjtèlde vraoge)',
+'faqpage' => 'Project:Väölgestjèlde vraoge',
+
+# Vector skin
+'vector-action-addsection' => 'Voog köpke toe',
+'vector-action-delete' => 'Ewegsjaffe',
+'vector-action-move' => 'Verplaats',
+'vector-action-protect' => 'Besjirm',
+'vector-action-undelete' => 'Plaats trök',
+'vector-action-unprotect' => 'Gaef vrie',
+'vector-namespace-category' => 'Categorie',
+'vector-namespace-help' => 'Hölppaasj',
+'vector-namespace-image' => 'Bestandj',
+'vector-namespace-main' => 'Paasj',
+'vector-namespace-media' => 'Mediapaasj',
+'vector-namespace-mediawiki' => 'Berich',
+'vector-namespace-project' => 'Projekpaasj',
+'vector-namespace-special' => 'Speciaal paasj',
+'vector-namespace-talk' => 'Euverlègk',
+'vector-namespace-template' => 'Sjabloon',
+'vector-namespace-user' => 'Gebroeker',
+'vector-view-create' => 'Maak aan',
+'vector-view-edit' => 'Bewirk',
+'vector-view-history' => 'Bekiek de gesjiedenis',
+'vector-view-view' => 'Laes',
+'vector-view-viewsource' => 'Bekiek bróntèks',
+'actions' => 'Henjeling',
+'namespaces' => 'Naamruumdes',
+'variants' => 'Anger vorme',
'errorpagetitle' => 'Fout',
'returnto' => 'Truuk nao $1.',
@@ -345,18 +390,22 @@ $messages = array(
'otherlanguages' => 'Anger tale',
'redirectedfrom' => '(Doorverweze van $1)',
'redirectpagesub' => 'Doorverwiespazjena',
-'lastmodifiedat' => "Dees pagina is 't lèts verangerd op $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Dees pagina is 't lèts verangerd op $2, $1.",
'viewcount' => 'Dees pazjena is {{PLURAL:$1|1 kier|$1 kier}} bekeke.',
'protectedpage' => 'Beveiligde pazjena',
'jumpto' => 'Gank nao:',
'jumptonavigation' => 'navigatie',
'jumptosearch' => 'zeuke',
+'view-pool-error' => "Ós excuses, de servers zeen noe euverbelas.
+Te väöl gebroekers perberen óm dees pazjena te bekieke.
+Wach estebleef nag efkes veudet g'r óppernuuj toegank verzeuk te kriege toet dees pazjena.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Euver {{SITENAME}}',
'aboutpage' => 'Project:Info',
'copyright' => 'De inhawd is besjikbaar ónger de $1.',
-'copyrightpagename' => '{{SITENAME}} auteursrechte',
'copyrightpage' => '{{ns:project}}:Auteursrechte',
'currentevents' => "In 't nuujs",
'currentevents-url' => "Project:In 't nuujs",
@@ -364,8 +413,6 @@ $messages = array(
'disclaimerpage' => 'Project:Algemein aafwiezing aansjprakelikheid',
'edithelp' => 'Hulp bie bewirke',
'edithelppage' => 'Help:Instructies',
-'faq' => 'FAQ (väölgesjtèlde vraoge)',
-'faqpage' => 'Project:Väölgestjèlde vraoge',
'helppage' => 'Help:Help',
'mainpage' => 'Veurblaad',
'mainpage-description' => 'Veurblaad',
@@ -445,10 +492,6 @@ De lèste opgevraogde zeukactie waor:
"$1"
vanoet de functie "$2".
Database brach fout "$3" nao veure: "$4"',
-'noconnect' => 'De wiki óngervundj technische meujelikhede en kan de database neet bereike.<br />
-$1',
-'nodb' => 'Selectie van database $1 neet mäögelik',
-'cachederror' => "Dit is 'n gearsjiveerde kopie van de gevraogde pazjena, en is mesjien neet gans actueel.",
'laggedslavemode' => 'Waorsjuwing: De pazjena kin veraajerd zeen.',
'readonly' => 'Database geblokkeerd',
'enterlockreason' => "Gaef 'n rae veur de blokkering en wie lank 't dinkelik zal dore. De ingegaeve rae zal aan de gebroekers getuind waere.",
@@ -467,6 +510,8 @@ Maak hievan melding bie 'ne [[Special:ListUsers/sysop|systeembeheerder]] van {{S
'readonly_lag' => 'De database is autematis vergrendeld terwiel de ongergesjikte databaseservers synchronisere mit de huidserver.',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
+'fileappenderrorread' => '"$1" kós neet gelaeze waere tiejes \'t toevoge.',
+'fileappenderror' => 'Kós "$1" neet toevogen aan "$2".',
'filecopyerror' => 'Besjtand "$1" kós neet nao "$2" gekopieerd waere.',
'filerenameerror' => 'Verangere van de titel van \'t besjtand "$1" in "$2" neet mäögelik.',
'filedeleteerror' => 'Kós bestjand "$1" neet ewegsjaffe.',
@@ -476,7 +521,8 @@ Maak hievan melding bie 'ne [[Special:ListUsers/sysop|systeembeheerder]] van {{S
'unexpected' => 'Ónverwachte waerd: "$1"="$2".',
'formerror' => 'Fout: kós formeleer neet versjikke',
'badarticleerror' => 'Dees hanjeling kan neet waere oetgeveurd op dees pazjena.',
-'cannotdelete' => "Kós de pazjena of 't besjtand neet ewegsjaffe.",
+'cannotdelete' => 'Kós de pazjena of \'t besjtand "$1" neet ewegsjaffe.
+Mesjiens haet emes anges det al gedaon.',
'badtitle' => 'Óngeljige pazjenatitel',
'badtitletext' => 'De opgevraogde pazjena is neet besjikbaar of laeg.',
'perfcached' => "De gegaeves koume oet 'n cache en zeen mäögelik neet actueel:",
@@ -508,7 +554,6 @@ De gegaeve ree is ''$2''.",
'virus-unknownscanner' => 'onbekeng antivirus:',
# Login and logout pages
-'logouttitle' => 'Aafmèlde gebroeker',
'logouttext' => "'''De bis noe aafgemeld.'''
De kèns {{SITENAME}} noe anoniem (mit vermeljing van IP-adres) gebroeke, of [[Special:UserLogin|opnuuj aanmelde]] ónger dezelfde of 'ne angere naam.
@@ -516,7 +561,6 @@ Mäögelik waere nog 'n deil pazjena's getuind esofs te nog aangemeld bis pès t
'welcomecreation' => '== Wèlkóm, $1! ==
Diene gebroeker is noe vaerdig.
Vergaet neet dien [[Special:Preferences|veurkäöre veur {{SITENAME}}]] aan te passe.',
-'loginpagetitle' => 'gebroekersnaam',
'yourname' => 'Diene gebroekersnaam',
'yourpassword' => 'Die wachwaord',
'yourpasswordagain' => 'Wachwaord opnuuj intype',
@@ -527,6 +571,7 @@ Vergaet neet dien [[Special:Preferences|veurkäöre veur {{SITENAME}}]] aan te p
'nav-login-createaccount' => 'Aanmelje / registrere',
'loginprompt' => "Diene browser mót ''cookies'' acceptere óm in te logge op {{SITENAME}}.",
'userlogin' => 'Aanmelde / registrere',
+'userloginnocreate' => 'Mèlj aan',
'logout' => 'Aafmèlde',
'userlogout' => 'Aafmèlde',
'notloggedin' => 'Neet aangemeld',
@@ -538,27 +583,8 @@ Vergaet neet dien [[Special:Preferences|veurkäöre veur {{SITENAME}}]] aan te p
'createaccountmail' => 'via de e-mail',
'badretype' => 'De ingeveurde wachwäörd versjille vanein.',
'userexists' => "De gebroekersnaam dae se höbs ingeveurd weurt al gebroek.<br />Kees estebleef 'ne angere naam.",
-'youremail' => 'Dien e-mailadres',
-'username' => 'Gebroekersnaam:',
-'uid' => 'Gebroekersnómmer:',
-'prefs-memberingroups' => 'Lid van {{PLURAL:$1|gróp|gróppe}}:',
-'yourrealname' => 'Dienen echte naam*',
-'yourlanguage' => 'Taal van de gebroekersinterface',
-'yournick' => "Diene bienaam (veur ''handjteikeninge'')",
-'badsig' => 'Óngeljige roew handjteikening; kiek de HTML-tags nao.',
-'badsiglength' => 'De handjteikening is te lank.
-Zie maag neet mie es $1 {{PLURAL:$1|karakter|karakters}} bevatte.',
-'yourgender' => 'Geslach:',
-'gender-unknown' => 'Neet aangegaeve',
-'gender-male' => 'Miensj',
-'gender-female' => 'Vrów',
-'prefs-help-gender' => 'Optioneel: dit wört gebroek om gebroekers correk aan te spraeke in de software.
-Deze informatie is zichbaar veur angere gebroekers.',
-'email' => 'E-mail',
-'prefs-help-realname' => '* Echte naam (opsjeneel): esse deze opgufs kin deze naam gebroek waere om dich erkinning te gaeve veur dien wèrk.',
'loginerror' => 'Inlogfout',
-'prefs-help-email' => 'E-mail (optioneel): Hiedoor kan me contak mit diech opnumme zónger dats te dien identiteit hoofs vrie te gaeve.',
-'prefs-help-email-required' => "Hiej veur is 'n e-mailadres neudig.",
+'createaccounterror' => 'Kós gebroeker neet aanmake: $1',
'nocookiesnew' => "De gebroeker is aangemaak mèr neet aangemeld. {{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Sjakel die a.u.b. in en meld dao nao aan mèt diene nuje gebroekersnaam en wachwaord.",
'nocookieslogin' => "{{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Doe accepteers gén cookies. Sjakel deze optie a.u.b. in en perbeer 't oppernuuj.",
'noname' => "De mos 'n gebroekersnaam opgaeve.",
@@ -569,15 +595,18 @@ Die seen huidlettegevullig
Controleer dien spelling, of gebroek ongersjtaond formuleer om \'n [[Special:UserLogin/signup|nuuj]] gebroekersprofiel aan te make.',
'nosuchusershort' => 'De gebroeker "<nowiki>$1</nowiki>" besjteit neet. Konterleer de sjriefwieze.',
'nouserspecified' => "Doe deens 'ne gebroekersnaam op te gaeve.",
+'login-userblocked' => 'Deze gebroeker steit geblokkeerd. Aanmèlje is neet toegestange.',
'wrongpassword' => "'t Ingegaeve wachwaord is neet zjus. Perbeer 't obbenuujts.",
'wrongpasswordempty' => "'t Ingegaeve wachwoord waor laeg. Perbeer 't obbenuujts.",
'passwordtooshort' => "Dien wachwaord is te kort. 't Mót minstes oet {{PLURAL:$1|1 teike|$1 teikes}} besjtaon.",
+'password-name-match' => 'Die wachwaord mót anges zeen es diene gebroekersnaam.',
'mailmypassword' => "Sjik mich 'n nuuj wachwaord",
'passwordremindertitle' => 'Nuuj tiedelik wachwaord van {{SITENAME}}',
'passwordremindertext' => 'Emes (waorsjienlik dich zelf) haet vanaaf IP-adres $1 \'n nuuj wachwoord veur {{SITENAME}} ($4) verzoch. \'t Nuuj wachwoord veur gebroeker "$2" is "$3". Es dat dien bedoeling waor, mèl diech daan noe aan en kees \'n nuuj wachwoord. \'t Tiedelik wachwoord verluip euver {{PLURAL:$5|$5 daag|$5 daag}}.
Es emes anders dit verzeuk heet gedoon, of wens te diech dien wachwoord weer herinners en \'t neet mie wèls wiezige, negeer dan dit berich en blief dien aud wachwoord gebroeke.',
'noemail' => 'D\'r is gein geregistreerd e-mailadres veur "$1".',
+'noemailcreate' => 'Doe mós e geljig e-mailadres ópgaeve.',
'passwordsent' => 'D\'r is \'n nuui wachwaord verzonde nao \'t e-mailadres dat geregistreerd sjtit veur "$1".
Gelieve na ontvangst opnieuw aan te melden.',
'blocked-mailpassword' => "Dien IP-adres is geblokkeerd veur 't make van verangeringe. Om misbroek te veurkomme is 't neet meugelik om 'n nuuj wachwaord aan te vraoge.",
@@ -601,9 +630,11 @@ e-mail óntvange veur alle volgende toepassinge.',
($4) mit \'t wachwaord "$3". Meld dich aan en wiezig dien wachwaord.
Negeer dit berich as deze gebroeker zonger dien medewete is aangemaak.',
+'usernamehasherror' => '\'ne Gebroekersnaam kèn geint hèkske ("#") bevatte.',
'login-throttled' => "Doe höbs te huifig geperbeerd aan te melje mèt 'n verkierd wachwaord.
Doe mós effe wachte ierdets te 't obbenuuts kens perbere.",
'loginlanguagelabel' => 'Taol: $1',
+'suspicious-userlogout' => "Die verzeuk óm aaf te mèlje is genegeerdj gewaoren, ómdet 't liek det 't verzeuk is verzónje dórch 'ne browser of cacheproxy dae kepót is.",
# Password reset dialog
'resetpass' => 'Wachwaord obbenuuts insjtèlle',
@@ -614,17 +645,13 @@ Doe mós effe wachte ierdets te 't obbenuuts kens perbere.",
'retypenew' => "Veur 't nuuj wachwaord nogins in",
'resetpass_submit' => 'Wachwaord instelle en aanmelje',
'resetpass_success' => 'Dien wachwaord is verangerd. Bezig mèt aanmelje...',
-'resetpass_bad_temporary' => "Ongeldig tiejdelik wachwaord. Doe höbs dien wachwaord al verangerd of 'n nuuj tiejdelik wachwaord aangevräög.",
'resetpass_forbidden' => 'Wachwäörd kónne neet verangerd waere',
'resetpass-no-info' => 'Doe moos aangemeld zien ierdets doe dees pagina gebroeke kens.',
'resetpass-submit-loggedin' => 'Wachwaord wiezige',
+'resetpass-submit-cancel' => 'Aafbraeke',
'resetpass-wrong-oldpass' => "'t Hujig of tiedelik wachwaord is ongeljig.
Meugelik höbs doe dien wachwaord al gewiezig of 'n nuuj tiedelik wachwaord aangevraog.",
'resetpass-temp-password' => 'Tiedelik wachwaord:',
-'resetpass-log' => 'Wachwaordherinstellingelogbook',
-'resetpass-logtext' => 'Deze pagina bevat n logbook met gebroekers wovan t wachwaord opnuuj is ingesteld door ne beheerder.',
-'resetpass-logentry' => 'haet t wachwaord veur $1 gewiezig',
-'resetpass-comment' => 'Rede veur opnuuj instelle van t wachwaord:',
# Edit page toolbar
'bold_sample' => 'Vètten teks',
@@ -692,7 +719,6 @@ Vermeld det esse örges euver deze blokkaasj reageers.",
'blockededitsource' => "Hiej onger stuit de teks van '''dien bewèrkinge''' aan '''$1''':",
'whitelistedittitle' => 'Geer mót óch inlogke óm te bewirke',
'whitelistedittext' => 'Geer mót uch $1 óm pajzená te bewirke.',
-'confirmedittitle' => 'E-mailbevestiging is verplich veurdets te kèns bewirke',
'confirmedittext' => "De mós dien e-mailadres bevestige veurdats te kèns bewirke.
Veur dien e-mailadres in en bevestig 'm bie [[Special:Preferences|dien veurkäöre]].",
'nosuchsectiontitle' => 'Deze subkop bestuit neet',
@@ -715,9 +741,16 @@ Det adres kan waere gedeild door mierdere gebroekers.
Es te 'ne anonieme gebroeker bis en de höbs 't geveul dat 'r ónrelevante commentare aan dich gerich zeen, kèns te 't bèste [[Special:UserLogin/signup|'n account crëere]] of [[Special:UserLogin|inlogge]] óm toekomstige verwarring mit anger anoniem gebroekers te veurkomme.''",
'noarticletext' => 'Dees pagina bevat gein teks.
De kèns [[Special:Search/{{PAGENAME}}|nao deze term zeuke]] in anger pagina\'s, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logbeuk doorzeuke] of <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} dees pagina bewirke]</span>.',
+'noarticletext-nopermission' => 'Dees pazjena bevat gein teks.
+De kèns [[Special:Search/{{PAGENAME}}|nao dees term zeuken]] in anger pazjena\'s of
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logbeuk derzeuke]</span>.',
'userpage-userdoesnotexist' => 'Doe bewirks \'n gebroekerspazjena van \'ne gebroeker dae neet besjteit (gebroeker "$1"). Controlere ofs doe dees pazjena waal wils aanmake/bewirke.',
+'userpage-userdoesnotexist-view' => 'Gebroeker "$1" is neet geregistreerd.',
+'blocked-notice-logextract' => "Deze gebroeker is noe geblok.
+De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
'clearyourcache' => "'''Lèt op:''' Nao 't opsjlaon mós te diene browserbuffer wisse óm de verangeringe te zeen: '''Mozilla:''' klik ''Reload'' (of ''Ctrl-R''), '''Firefox / IE / Opera:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-R'', '''Konqueror''' ''Ctrl-R''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Gebroek de knóp 'Bekiek dees bewirking' om dien nuuj CSS/JS te teste veurdets te opsjleis.",
+'usercssyoucanpreview' => "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj CSS te teste veurdets te opsjleis.",
+'userjsyoucanpreview' => "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj JS te teste veurdets te opsjleis.",
'usercsspreview' => "'''Dit is allein 'n veurvertuun van dien perseunlike css, deze is neet opgeslage!'''",
'userjspreview' => "'''Let op: doe tes noe dien perseunlik JavaScript. De pazjena is neet opgeslage!'''",
'userinvalidcssjstitle' => "'''Waorsjuwing:''' d'r is geine skin \"\$1\". Let op: dien eige .css- en .js-pazjena's beginne mèt 'ne kleine letter, bijveurbeeld {{ns:user}}:Naam/monobook.css in plaats van {{ns:user}}:Naam/Monobook.css.",
@@ -756,13 +789,16 @@ groot, wat groter is dan 't maximum van $2 kilobyte. Opslaon is neet meugelik.''
'readonlywarning' => "WAARSJUWING: De database is vasgezèt veur ongerhoud, dus op 't mement kins e dien verangeringe neet opsjlaon. De kins dien tèks 't biste opsjlaon in 'n tèksbesjtand om 't later hie nog es te prebere.
t Is geslaote waenger: $1",
-'protectedpagewarning' => 'WAARSJUWING: Dees pazjena is besjermd zoedat ze allein doer gebroekers mit administratorrechte kint weure verangerd.',
-'semiprotectedpagewarning' => "'''Let op:''' Deze pagina is beveilig en kin allein door geregistreerde gebroekers bewerk waere.",
+'protectedpagewarning' => "'''WAARSJUWING: Dees pazjena is besjermp zoedat ze allein doer gebroekers mit administratorrechte kint weure verangerd.'''
+De lèste logbookregel steit hierónger:",
+'semiprotectedpagewarning' => "'''Let op:''' Dees pazjena is beveilig en kin allein door geregistreerde gebroekers bewerk waere.
+De lèste logbookregel steit hiejónger:",
'cascadeprotectedwarning' => "'''Waarschuwing:''' Deze pagina is beveilig en kin allein door beheerders bewerk waere, omdat deze is opgenaome in de volgende {{PLURAL:$1|pagina|pagina's}} {{PLURAL:$1|dae|die}} beveilig {{PLURAL:$1|is|zeen}} met de cascade-optie:",
-'titleprotectedwarning' => "'''WAORSJUWING: Deze pagina is beveilig zodet allein inkele gebroekers 'm kinne aanmake. De beneuds [[Special:ListGroupRights|speciale rechte]].'''",
-'templatesused' => 'Sjablone gebroek in dees pazjena:',
-'templatesusedpreview' => 'Sjablone gebroek in deze veurvertuning:',
-'templatesusedsection' => 'Sjablone die gebroek waere in deze subkop:',
+'titleprotectedwarning' => "'''WAORSJUWING: Deze pagina is beveilig zodet allein inkele gebroekers 'm kinne aanmake. De beneuds [[Special:ListGroupRights|speciale rechte]].'''
+De lèste logbookregel vólg hier:",
+'templatesused' => 'Op dees pagina {{PLURAL:$1|gebroek sjabloon|gebroekde sjablone}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Sjabloon|Sjablone}} gebroek in dees veurvertuining:',
+'templatesusedsection' => '{{PLURAL:$1|Sjabloon|Sjablone}} in dees sectie in gebroek:',
'template-protected' => '(besjirmp)',
'template-semiprotected' => '(semi-besjörmp)',
'hiddencategories' => 'Dees pazjena velt in de volgendje verbórge {{PLURAL:$1|categorie|categorië}}:',
@@ -773,12 +809,11 @@ De kèns al besjtaonde pazjena's verangere, of de kèns [[Special:UserLogin|dich
'permissionserrors' => 'Foute inne rèchter',
'permissionserrorstext' => 'Doe höbs gein rèchter om det te daon om de volgende {{PLURAL:$1|reje|rejer}}:',
'permissionserrorstext-withaction' => 'Geer höb gein rech óm $2 óm de volgende {{PLURAL:$1|raej|raej}}:',
-'recreate-deleted-warn' => "'''Waorsjuwing: Doe bis bezig mit 't aanmake van 'n pazjena die in 't verleje gewis is.'''
+'recreate-moveddeleted-warn' => "'''Waorsjuwing: Doe bös bezig mit 't aanmake van 'n pazjena die in 't verleje gewis is.'''
Euverwaeg of 't terech is dets te wiejer wèrks aan dees pazjena. Veur dien gemaak stuit hiejónger 't logbook eweggesjafde pazjena's veur dees pazjena:",
-'deleted-notice' => "Dees pazjena is eweggesjaf.
-Ter informatie weurt 't verwijderingslogbook van dees pazjena hiejónger weergegeve.",
-'deletelog-fulllog' => 'Gans logbook betrachte',
+'moveddeleted-notice' => "Dees pazjena is eweggesjaf.
+Ter informatie weurt 't verwijderingslogbook en 't verplaatsjingslogbook van dees pazjena hiejónger weergegeve.",
'edit-hook-aborted' => "De bewèrking is aafgebroke door 'ne 'hook'.
D'r is gein toelichting besjikbaar.",
'edit-gone-missing' => 'De pazjena is neet biegewirk.
@@ -801,6 +836,7 @@ Dees paramaetere zeen eweggelaote.",
'post-expand-template-argument-category' => "Pazjena's die missendje sjabloonillemènter bevatte",
'parser-template-loop-warning' => "D'r is 'ne krinkloup in sjablone geconstateerd: [[$1]]",
'parser-template-recursion-depth-warning' => 'De recursiedeepte veur sjablone is euversjrede ($1)',
+'language-converter-depth-warning' => 'De deepdjelimiet veure spraokómzètter is euversjreje ($1)',
# "Undo" feature
'undo-success' => "Hiej onger stuit de teks wo in de verangering ongedaon gemaak is. Controleer veur 't opslaon of 't resultaot gewins is.",
@@ -820,7 +856,7 @@ De door $3 opgegaeve reje is ''$2''",
'currentrev' => 'Hujige versie',
'currentrev-asof' => 'Hujige versie per $1',
'revisionasof' => 'Versie op $1',
-'revision-info' => 'Versie op $1 door $2', # Additionally available: $3: revision id
+'revision-info' => 'Versie op $1 door $2',
'previousrevision' => '← Awwer versie',
'nextrevision' => 'Nuujere versie→',
'currentrevisionlink' => 'zuug hujige versie',
@@ -831,7 +867,7 @@ De door $3 opgegaeve reje is ''$2''",
'page_last' => 'lèste',
'histlegend' => 'Verklaoring aafkortinge: (wijz) = versjil mit actueile versie, (vörrige) = versjil mit vörrige versie, K = kleine verangering',
'history-fieldset-title' => 'Door de historie blajere',
-'deletedrev' => '[gewis]',
+'history-show-deleted' => 'Nör gwösj',
'histfirst' => 'Aajste',
'histlast' => 'Nuujste',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -840,70 +876,82 @@ De door $3 opgegaeve reje is ''$2''",
# Revision feed
'history-feed-title' => 'Bewerkingseuverzich',
'history-feed-description' => 'Bewerkingseuverzich veur dees pazjena op de wiki',
-'history-feed-item-nocomment' => '$1 op $2', # user at time
+'history-feed-item-nocomment' => '$1 op $2',
'history-feed-empty' => "De gevraogde pazjena bestuit neet.
Wellich is d'r gewis of vernäömp.
[[Special:Search|Doorzeuk de wiki]] veur relevante pazjena's.",
# Revision deletion
-'rev-deleted-comment' => '(opmerking weggehaold)',
-'rev-deleted-user' => '(gebroeker weggehaold)',
-'rev-deleted-event' => '(actie weggehaold)',
-'rev-deleted-text-permission' => "Dees bewerking is '''gewusj oet de publieke archieve'''.
-Dao kónne details aanwezig zeen in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} wusjlogbook].",
-'rev-deleted-text-view' => "Dees bewèrking is '''gewösj oet de publieke archieve'''.
+'rev-deleted-comment' => '(opmerking weggehaold)',
+'rev-deleted-user' => '(gebroeker weggehaold)',
+'rev-deleted-event' => '(actie weggehaold)',
+'rev-deleted-text-permission' => "Dees bewerking is '''gewusj oet de publieke archieve'''.
+Dao kónne details aanwezig zeen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} wusjlogbook].",
+'rev-deleted-text-unhide' => "Dees versie van de pazjena is '''eweggesjaf'''.
+Achtergrönj zeen meugelik te vinje in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} wösjlogbook].
+Es beheerder kins se [$1 dees versie bekieke] es se wils.",
+'rev-deleted-text-view' => "Dees bewèrking is '''gewösj oet de publieke archieve'''.
Es beheerder kèns te deze zeen;
-dao kónne details aanwezig zeen in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} wusjlogbook].",
-'rev-deleted-no-diff' => "De kins de versjille neet bekieke omdet ein van de versies oet 't '''publieke archief is verwiederd'''.
-Achtergrönj zeen meugelik te vinje in t [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwiederlogbook].",
-'rev-deleted-unhide-diff' => "Eine venne angerversjiller is '''gwösj oete pebliek archiever'''.
-Details in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} wislog].
+dao kónne details aanwezig zeen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} wusjlogbook].",
+'rev-deleted-no-diff' => "De kins de versjille neet bekieke omdet ein van de versies oet 't '''publieke archief is verwiederd'''.
+Achtergrönj zeen meugelik te vinje in t [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verwiederlogbook].",
+'rev-deleted-unhide-diff' => "Eine venne angerversjiller is '''gwösj oete pebliek archiever'''.
+Details in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} wislog].
Es behieërder kèns se nag [$1 de angering zeen] es se doearch wils gaon.",
-'rev-delundel' => 'Laot zeen/versjtaek',
-'revisiondelete' => 'Verwijder/herstel bewerkinge',
-'revdelete-nooldid-title' => 'Geine doelverzie',
-'revdelete-nooldid-text' => "Doe höbs gein(e) doelverzie(s) veur deze hanjeling opgegaeve, d'n aangaeving besteit neet, of doe perbeers de letste versie te verberge.",
-'revdelete-nologtype-title' => "d'r Is gein logbooktype opgegaeve",
-'revdelete-nologtype-text' => 'De höbs gein logbooktype opgegaeve om deze handeling op oet te voere.',
-'revdelete-toomanytargets-title' => 'Te väöl doele',
-'revdelete-toomanytargets-text' => 'De hebs te väöl doele gegaeve om deze handeling op oet te voere.',
-'revdelete-nologid-title' => 'Ongeldige logbookregel',
-'revdelete-nologid-text' => 'De höbs ofwaal gein doellogbookregel opgegaeve of de aangegaeve logbookregel besteit neet.',
-'revdelete-selected' => "'''Geselecteerde {{PLURAL:$2|bewerking|bewerkinge}} van '''[[:$1]]''':'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Geselecteerde log gebeurtenis|Geselecteerde log gebeurtenisse}}:'''",
-'revdelete-text' => "'''Gewisjde bewerkinge zeen zichbaar in de gesjiedenis, maar de inhoud is neet langer publiek toegankelik.'''
-
-Anger beheerders van {{SITENAME}} kinne de verborge inhoud benäöjere en de verwiedering ongedaon make mit behölp van dit sjerm, tenzij d'r additionele restricties gelje die zeen ingesteld door de systeembeheerder. Confirmeer det se dit wils doon, es se de consekwensies begrieps, en detse dit mit de [[{{MediaWiki:Policy-url}}|beleid]] deis.",
-'revdelete-suppress-text' => "Versies verbèrge deentj '''allein''' gebroek te waere in de volgende gevalle:
+'rev-delundel' => 'Laot zeen/versjtaek',
+'rev-showdeleted' => 'toean',
+'revisiondelete' => 'Verwijder/herstel bewerkinge',
+'revdelete-nooldid-title' => 'Geine doelverzie',
+'revdelete-nooldid-text' => "Doe höbs gein(e) doelverzie(s) veur deze hanjeling opgegaeve, d'n aangaeving besteit neet, of doe perbeers de letste versie te verberge.",
+'revdelete-nologtype-title' => "d'r Is gein logbooktype opgegaeve",
+'revdelete-nologtype-text' => 'De höbs gein logbooktype opgegaeve om deze handeling op oet te voere.',
+'revdelete-nologid-title' => 'Ongeldige logbookregel',
+'revdelete-nologid-text' => 'De höbs ofwaal gein doellogbookregel opgegaeve of de aangegaeve logbookregel besteit neet.',
+'revdelete-no-file' => "'d Aangegaeve bestandj besteit neet.",
+'revdelete-show-file-submit' => 'Jao',
+'revdelete-selected' => "'''Geselecteerde {{PLURAL:$2|bewerking|bewerkinge}} van '''[[:$1]]''':'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Geselecteerde log gebeurtenis|Geselecteerde log gebeurtenisse}}:'''",
+'revdelete-text' => "'''Gewisjde bewerkinge zeen zichbaar in de gesjiedenis, maar de inhoud is neet langer publiek toegankelik.'''
+Anger beheerders van {{SITENAME}} kinne de verborge inhoud benäöjere en de verwiedering ongedaon make mit behölp van dit sjerm, tenzij d'r additionele restricties gelje die zeen ingesteld door de systeembeheerder.",
+'revdelete-suppress-text' => "Versies verbèrge deentj '''allein''' gebroek te waere in de volgende gevalle:
* Ongepaste perseunlike informatie
*: ''woonadres, telefoonnummers, Burger Service Nummers, enzovoors.''",
-'revdelete-legend' => 'Stel zichbaarheidsbeperkinge in',
-'revdelete-hide-text' => 'Verberg de bewerkte teks',
-'revdelete-hide-name' => 'Actie en doel verberge',
-'revdelete-hide-comment' => 'De bewerkingssamevatting verberge',
-'revdelete-hide-user' => 'Verberg gebroekersnaam/IP van de gebroeker',
-'revdelete-hide-restricted' => 'Pas deze beperkinge toe op zowaal beheerders es angere',
-'revdelete-suppress' => 'Ongerdruk gegaeves veur zowaal admins es angere',
-'revdelete-hide-image' => 'Verberg bestandjsinhoud',
-'revdelete-unsuppress' => 'Verwijder beperkinge op truuk gezatte wieziginge',
-'revdelete-log' => 'Reeje:',
-'revdelete-submit' => 'Pas toe op de geselecteerde bewèrking',
-'revdelete-logentry' => 'zichbaarheid van bewerkinge is gewiezig veur [[$1]]',
-'logdelete-logentry' => 'gewiezigde zichbaarheid van gebeurtenis [[$1]]',
-'revdelete-success' => "'''Wieziging zichbaarheid succesvol ingesteld.'''",
-'logdelete-success' => "'''Zichbaarheid van de gebeurtenis succesvol ingesteld.'''",
-'revdel-restore' => 'Zichbaarheid wiezige',
-'pagehist' => 'Pazjenagesjiedenis',
-'deletedhist' => 'Verwiederde gesjiedenis',
-'revdelete-content' => 'inhoud',
-'revdelete-summary' => 'samevatting bewerke',
-'revdelete-uname' => 'gebroekersnaam',
-'revdelete-restricted' => 'haet beperkinge aan beheerders opgelag',
-'revdelete-unrestricted' => 'haet beperkinge veur beheerders opgehaeve',
-'revdelete-hid' => 'haet $1 verborge',
-'revdelete-unhid' => 'haet $1 zichbaar gemaak',
-'revdelete-log-message' => '$1 veur $2 {{PLURAL:$2|versie|versies}}',
-'logdelete-log-message' => '$1 veur $2 {{PLURAL:$2|logbookregel|logbookregels}}',
+'revdelete-legend' => 'Stel zichbaarheidsbeperkinge in',
+'revdelete-hide-text' => 'Verberg de bewerkte teks',
+'revdelete-hide-image' => 'Verberg bestandjsinhoud',
+'revdelete-hide-name' => 'Actie en doel verberge',
+'revdelete-hide-comment' => 'De bewerkingssamevatting verberge',
+'revdelete-hide-user' => 'Verberg gebroekersnaam/IP van de gebroeker',
+'revdelete-hide-restricted' => 'Pas deze beperkinge toe op zowaal beheerders es angere',
+'revdelete-radio-same' => '(anger neet)',
+'revdelete-radio-set' => 'Jao',
+'revdelete-radio-unset' => 'Nein',
+'revdelete-suppress' => 'Ongerdruk gegaeves veur zowaal admins es angere',
+'revdelete-unsuppress' => 'Verwijder beperkinge op truuk gezatte wieziginge',
+'revdelete-log' => 'Reeje:',
+'revdelete-submit' => 'Pas toe op de geselecteerde {{PLURAL:$1|bewèrking|bewèrkinger}}',
+'revdelete-logentry' => 'zichbaarheid van bewerkinge is gewiezig veur [[$1]]',
+'logdelete-logentry' => 'gewiezigde zichbaarheid van gebeurtenis [[$1]]',
+'revdelete-success' => "'''Wieziging zichbaarheid succesvol ingesteld.'''",
+'revdelete-failure' => "'''De zichbaarheid veur de versie kos neet ingesteld waere.'''
+$1",
+'logdelete-success' => "'''Zichbaarheid van de gebeurtenis succesvol ingesteld.'''",
+'revdel-restore' => 'Zichbaarheid wiezige',
+'pagehist' => 'Pazjenagesjiedenis',
+'deletedhist' => 'Verwiederde gesjiedenis',
+'revdelete-content' => 'inhoud',
+'revdelete-summary' => 'samevatting bewerke',
+'revdelete-uname' => 'gebroekersnaam',
+'revdelete-restricted' => 'haet beperkinge aan beheerders opgelag',
+'revdelete-unrestricted' => 'haet beperkinge veur beheerders opgehaeve',
+'revdelete-hid' => 'haet $1 verborge',
+'revdelete-unhid' => 'haet $1 zichbaar gemaak',
+'revdelete-log-message' => '$1 veur $2 {{PLURAL:$2|versie|versies}}',
+'logdelete-log-message' => '$1 veur $2 {{PLURAL:$2|logbookregel|logbookregels}}',
+'revdelete-otherreason' => 'Anger/biekómstig reeje:',
+'revdelete-reasonotherlist' => 'Anger reeje',
+'revdelete-edit-reasonlist' => 'Reeje veur verwiedering bewèrke',
+'revdelete-offender' => 'Versiesjriever:',
# Suppression log
'suppressionlog' => 'Verbergingslogbook',
@@ -940,67 +988,13 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
'mergelogpagetext' => "Hiejonger zuut geer 'ne lies van recente samevoeginge van 'ne paginagesjiedenis nao 'ne angere.",
# Diffs
-'history-title' => 'Gesjiedenis van "$1"',
-'difference' => '(Versjil tösje bewirkinge)',
-'lineno' => 'Tekslien $1:',
-'compareselectedversions' => 'Vergeliek geselecteerde versies',
-'visualcomparison' => 'Visueel vergelieking',
-'wikicodecomparison' => 'Wikiteksvergelieking',
-'editundo' => 'maak óngedaon',
-'diff-multi' => '({{PLURAL:$1|éin tusseligkede versie wörd|$1 tusseligkede versies waere}} neet getuund)',
-'diff-movedto' => 'Verplaats nao $1',
-'diff-styleadded' => 'stijl $1 biegedoon',
-'diff-added' => '$1 biegedoon',
-'diff-changedto' => 'verangerd in $1',
-'diff-movedoutof' => 'verplaats boete $1',
-'diff-styleremoved' => 'stijl $1 eweggesjaf',
-'diff-removed' => '$1 eweggesjaf',
-'diff-changedfrom' => 'verangerd van $1',
-'diff-src' => 'brón',
-'diff-withdestination' => 'mit besjtömming $1',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;en $1 $2',
-'diff-width' => 'breidte',
-'diff-height' => 'huugde',
-'diff-p' => "'n '''paragraaf'''",
-'diff-blockquote' => "'n '''häökske'''",
-'diff-h1' => "'n '''köpke (niveau 1)'''",
-'diff-h2' => "'n '''köpke (niveau 2)'''",
-'diff-h3' => "'n '''köpke (niveau 3)'''",
-'diff-h4' => "'n '''köpke (niveau 4)'''",
-'diff-h5' => "'n '''köpke (niveau 5)'''",
-'diff-pre' => "'n '''veurgeformatteerd teksblok'''",
-'diff-div' => "'n '''deiling'''",
-'diff-ul' => "'n '''óngenómmerde lies'''",
-'diff-ol' => "'n '''genómmerde lies'''",
-'diff-li' => "'n '''liesóngerdeil'''",
-'diff-table' => "'n '''tabel'''",
-'diff-tbody' => "'''tabelinhaud'''",
-'diff-tr' => "'n '''riej'''",
-'diff-td' => "'n '''cel'''",
-'diff-th' => "'ne '''kolomkop'''",
-'diff-br' => "'ne '''nuje regel'''",
-'diff-hr' => "'n '''horizontaal lien'''",
-'diff-code' => "'n '''teksblok mit programmacode'''",
-'diff-dl' => "'n '''definitielies'''",
-'diff-dt' => "'n '''definitieterm'''",
-'diff-dd' => "'n '''definitie'''",
-'diff-input' => "'ne '''input'''",
-'diff-form' => "'n '''formulier'''",
-'diff-img' => "n '''plaetje'''",
-'diff-span' => "'ne '''span'''",
-'diff-a' => "'n '''verwiezing'''",
-'diff-i' => "'''cursief'''",
-'diff-b' => "'''vèt'''",
-'diff-strong' => "'''sjterk'''",
-'diff-em' => "'''naodrök'''",
-'diff-font' => "'''lèttertype'''",
-'diff-big' => "'''groet'''",
-'diff-del' => "'''eweggesjaf'''",
-'diff-tt' => "'''vaste breidte'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''doorhaoling'''",
+'history-title' => 'Gesjiedenis van "$1"',
+'difference' => '(Versjil tösje bewirkinge)',
+'lineno' => 'Tekslien $1:',
+'compareselectedversions' => 'Vergeliek geselecteerde versies',
+'showhideselectedversions' => 'Tuin/versjtaek geselecteerde versies',
+'editundo' => 'maak óngedaon',
+'diff-multi' => '({{PLURAL:$1|éin tusseligkede versie wörd|$1 tusseligkede versies waere}} neet getuund)',
# Search results
'searchresults' => 'Zeukresultate',
@@ -1008,28 +1002,25 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
'searchresulttext' => 'Veur mier informatie euver zeuke op {{SITENAME}}, zuug [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Doe zeukdes veur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginne mit "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwieze nao "$1"]])',
'searchsubtitleinvalid' => 'Voor zoekopdracht "$1"',
-'noexactmatch' => "'''Dao besjteit gein pazjena mit de naam $1.''' De kèns 'm [[:$1|aanmake]].",
-'noexactmatch-nocreate' => "'''Er besteit gein pagina genaamp \"\$1\".'''",
'toomanymatches' => "d'r Wore te väöl resultate. Probeer estebleef 'n anger zeukopdrach.",
'titlematches' => 'Overeinkoms mèt volgende titels',
'notitlematches' => 'Geine inkele paginatitel gevónje mit de opgegaeve zeukterm',
'textmatches' => 'Euvereinkoms mèt artikelinhoud',
'notextmatches' => 'Geen artikel gevonden met opgegeven zoekterm',
-'prevn' => 'vörrige $1',
-'nextn' => 'volgende $1',
+'prevn' => 'veurige {{PLURAL:$1|$1}}',
+'nextn' => 'volgende {{PLURAL:$1|$1}}',
'prevn-title' => 'Vörge {{PLURAL:$1|resultaat|$1 resultate}}',
'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per pagina weergaeve',
-'viewprevnext' => '($1) ($2) ($3) bekieke.',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekieke.',
'searchmenu-legend' => 'Zeukopties',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmake op deze wiki'''",
'searchhelp-url' => 'Help:Help',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanaome mit dit veurveugsel weergaeve]]',
'searchprofile-articles' => "Contentpazjena's",
-'searchprofile-articles-and-proj' => "Inhaudelike en projekpagina's",
-'searchprofile-project' => "Projekpagina's",
-'searchprofile-images' => 'Besjtandje',
+'searchprofile-project' => "Help- en projekpagina's",
+'searchprofile-images' => 'Bestenj',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Oetgebreid',
'searchprofile-articles-tooltip' => 'Zeuke in $1',
@@ -1037,8 +1028,6 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
'searchprofile-images-tooltip' => 'Zeuke naor besjtandje',
'searchprofile-everything-tooltip' => "Alle inhaud doorzeuke (inklusief euverlèkpagina's)",
'searchprofile-advanced-tooltip' => 'Zeuke in aongegeve naamruumdes',
-'prefs-search-nsdefault' => 'Zeuke mit sjtandaardinsjtèllinge:',
-'prefs-search-nscustom' => 'Zeuke in aangegaeve naamruumdes:',
'search-result-size' => '$1 ({{PLURAL:$2|1 waord|$2 wäörd}})',
'search-result-score' => 'Relevantie: $1%',
'search-redirect' => '(doorverwiezing $1)',
@@ -1055,7 +1044,6 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
'searchall' => 'alle',
'showingresults' => 'Hieonger staon de <b>$1</b> {{PLURAL:$1|resultaat|resultaat}}, vanaaf #<b>$2</b>.',
'showingresultsnum' => "Hieonger {{PLURAL:$3|steit '''1''' resultaat|staon '''$3''' resultate}} vanaaf #<b>$2</b>.",
-'showingresultstotal' => "Hiejónger {{PLURAL:$4|waert resultaat '''$1'''|waere de resultate '''$1 tót $2''' van '''$3'''}} weergegaeve",
'nonefound' => "'''Lèt op:''' sjtandaard waere neet alle naamruumdes naogezeuk.
Wens doe in dien zeukopdrach es veurvoegsel \"''all:''\" gebroeks waere alle pagina's naogezeuk (inclusief euverlèkpagina's, sjablone, enzoewiejer).
Doe kans ouch 'n naamruumde es veurvoegsel gebroeke.",
@@ -1065,95 +1053,119 @@ Doe kans ouch 'n naamruumde es veurvoegsel gebroeke.",
'powersearch-ns' => 'Zeuke in naamruumdes:',
'powersearch-redir' => 'Doorverwiezinge waergaeve',
'powersearch-field' => 'Zeuk nao',
+'powersearch-togglelabel' => 'Conterleer:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Gein',
'search-external' => 'Extern zeuke',
'searchdisabled' => 'Zeuke op {{SITENAME}} is oetgesjakeld vanweige gebrek aan servercapaciteit.
Zoelang as de servers nog neet sjterk genog zunt kins e zeuke bie Google.
Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
+# Quickbar
+'qbsettings' => 'Menubalkinsjtèllinge',
+'qbsettings-none' => 'Oetgesjakeld',
+'qbsettings-fixedleft' => 'Links vas',
+'qbsettings-fixedright' => 'Rechts vas',
+'qbsettings-floatingleft' => 'Links zjwevend',
+'qbsettings-floatingright' => 'Rechs zjwevend',
+
# Preferences page
-'preferences' => 'Veurkäöre',
-'mypreferences' => 'Mien veurkäöre',
-'prefs-edits' => 'Aantal bewèrkinge:',
-'prefsnologin' => 'Neet aangemèld',
-'prefsnologintext' => 'De mós zeen <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} aagemeld]</span> óm dien veurkäöre te kónne insjtèlle.',
-'prefsreset' => 'Sjtandaardveurkäöre hersjtèld.',
-'qbsettings' => 'Menubalkinsjtèllinge',
-'qbsettings-none' => 'Oetgesjakeld',
-'qbsettings-fixedleft' => 'Links vas',
-'qbsettings-fixedright' => 'Rechts vas',
-'qbsettings-floatingleft' => 'Links zjwevend',
-'qbsettings-floatingright' => 'Rechs zjwevend',
-'changepassword' => 'Wachwaord verangere',
-'skin' => '{{SITENAME}}-uterlik',
-'skin-preview' => 'Veurbesjouwing',
-'math' => 'Mattemetik rendere',
-'dateformat' => 'Datumformaat',
-'datedefault' => 'Gein veurkäör',
-'datetime' => 'Datum en tied',
-'math_failure' => 'Parse misluk',
-'math_unknown_error' => 'onbekènde fout',
-'math_unknown_function' => 'onbekènde functie',
-'math_lexing_error' => 'lexicografische fout',
-'math_syntax_error' => 'fout vanne syntax',
-'math_image_error' => 'PNG-conversie is misluk. Gao nao of latex, dvips en gs correc geïnstalleerd zeen en converteer nogmaols',
-'math_bad_tmpdir' => 'De map veur tiedelike bestenj veur wiskóndige formules bestuit neet of kin neet gemaak waere',
-'math_bad_output' => 'Kin neet sjrieve nao de output directory veur mattematik',
-'math_notexvc' => "Kin 't programma texvc neet vinje; stel alles in volges de besjrieving in math/README.",
-'prefs-personal' => 'Gebroekersinfo',
-'prefs-rc' => 'Recènte verangeringe en weergaaf van sjtumpkes',
-'prefs-watchlist' => 'Volglies',
-'prefs-watchlist-days' => 'Te tuine daag in de volglies:',
-'prefs-watchlist-days-max' => '(maximaal 7 daag)',
-'prefs-watchlist-edits' => 'Maximaal aantal bewirkinge in de oetgebreide volglies:',
-'prefs-watchlist-edits-max' => '(maximaal aantal: 1000)',
-'prefs-misc' => 'Anger insjtèllinge',
-'prefs-resetpass' => 'Wachwaord wiezige',
-'saveprefs' => 'Veurkäöre opsjlaon',
-'resetprefs' => 'Sjtandaardveurkäöre hersjtèlle',
-'restoreprefs' => 'Terug nao standaardinstellinge',
-'textboxsize' => 'Aafmeitinge tèksveld',
-'prefs-edit-boxsize' => "Aafmetinge van 't bewirkingsvinster.",
-'rows' => 'Regels',
-'columns' => 'Kolomme',
-'searchresultshead' => 'Insjtèllinge veur zeukresultate',
-'resultsperpage' => 'Aantal te toene zeukresultate per pazjena',
-'contextlines' => 'Aantal reigels per gevónje pazjena',
-'contextchars' => 'Aantal teikes van de conteks per reigel',
-'stub-threshold' => 'Drempel veur markering <a href="#" class="stub">begske</a>:',
-'recentchangesdays' => 'Aantal daag te tuine in de recènte verangeringe:',
-'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|daag|daag}})',
-'recentchangescount' => 'Aantal titels in lies recènte verangeringe, gesjiedenis en logbook:',
-'savedprefs' => 'Dien veurkäöre zint opgesjlage.',
-'timezonelegend' => 'Tiedzone:',
-'timezonetext' => "¹'t Aantal oere dat diene lokale tied versjilt van de servertied (UTC).",
-'localtime' => 'Plaatselike tied',
-'timezoneselect' => 'Tiedzone:',
-'timezoneuseserverdefault' => 'Gebroek servertied',
-'timezoneuseoffset' => 'Angers (gaef tiedversjil)',
-'timezoneoffset' => 'Tiedsversjil¹:',
-'servertime' => 'Server tied:',
-'guesstimezone' => 'Invulle van browser',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctis',
-'timezoneregion-asia' => 'Azië',
-'timezoneregion-atlantic' => 'Atlantische Oceaan',
-'timezoneregion-australia' => 'Australië',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indische Oceaan',
-'timezoneregion-pacific' => 'Stille Oceaan',
-'allowemail' => 'E-mail van anger gebroekers toesjtaon',
-'prefs-searchoptions' => 'Zeukinstellinge',
-'prefs-namespaces' => 'Naamruimte',
-'defaultns' => 'Zeuk sjtandaard in dees naomruumdes:',
-'default' => 'sjtandaard',
-'files' => 'Bestenj',
-'prefs-custom-css' => 'Persoonlijke CSS',
-'prefs-custom-js' => 'Persoonlijke JS',
+'preferences' => 'Veurkäöre',
+'mypreferences' => 'Mien veurkäöre',
+'prefs-edits' => 'Aantal bewèrkinge:',
+'prefsnologin' => 'Neet aangemèld',
+'prefsnologintext' => 'De mós zeen <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aagemeld]</span> óm dien veurkäöre te kónne insjtèlle.',
+'changepassword' => 'Wachwaord verangere',
+'prefs-skin' => '{{SITENAME}}-uterlik',
+'skin-preview' => 'Veurbesjouwing',
+'prefs-math' => 'Mattemetik rendere',
+'datedefault' => 'Gein veurkäör',
+'prefs-datetime' => 'Datum en tied',
+'prefs-personal' => 'Gebroekersinfo',
+'prefs-rc' => 'Recènte verangeringe en weergaaf van sjtumpkes',
+'prefs-watchlist' => 'Volglies',
+'prefs-watchlist-days' => 'Te tuine daag in de volglies:',
+'prefs-watchlist-days-max' => '(maximaal 7 daag)',
+'prefs-watchlist-edits' => 'Maximaal aantal bewirkinge in de oetgebreide volglies:',
+'prefs-watchlist-edits-max' => '(maximaal aantal: 1000)',
+'prefs-watchlist-token' => 'Volgliessläötel:',
+'prefs-misc' => 'Anger insjtèllinge',
+'prefs-resetpass' => 'Wachwaord wiezige',
+'prefs-email' => 'E-mailopsjes',
+'prefs-rendering' => 'Oeterlik',
+'saveprefs' => 'Veurkäöre opsjlaon',
+'resetprefs' => 'Sjtandaardveurkäöre hersjtèlle',
+'restoreprefs' => 'Terug nao standaardinstellinge',
+'prefs-editing' => 'Aafmeitinge tèksveld',
+'prefs-edit-boxsize' => "Aafmetinge van 't bewirkingsvinster.",
+'rows' => 'Regels',
+'columns' => 'Kolomme',
+'searchresultshead' => 'Insjtèllinge veur zeukresultate',
+'resultsperpage' => 'Aantal te toene zeukresultate per pazjena',
+'contextlines' => 'Aantal reigels per gevónje pazjena',
+'contextchars' => 'Aantal teikes van de conteks per reigel',
+'stub-threshold' => 'Drempel veur markering <a href="#" class="stub">begske</a>:',
+'recentchangesdays' => 'Aantal daag te tuine in de recènte verangeringe:',
+'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|daag|daag}})',
+'recentchangescount' => 'Standerd aantal waer te gaeve bewèrkinge:',
+'savedprefs' => 'Dien veurkäöre zint opgesjlage.',
+'timezonelegend' => 'Tiedzone:',
+'localtime' => 'Plaatselike tied',
+'timezoneuseserverdefault' => 'Gebroek servertied',
+'timezoneuseoffset' => 'Angers (gaef tiedversjil)',
+'timezoneoffset' => 'Tiedsversjil¹:',
+'servertime' => 'Server tied:',
+'guesstimezone' => 'Invulle van browser',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctis',
+'timezoneregion-asia' => 'Azië',
+'timezoneregion-atlantic' => 'Atlantische Oceaan',
+'timezoneregion-australia' => 'Australië',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indische Oceaan',
+'timezoneregion-pacific' => 'Stille Oceaan',
+'allowemail' => 'E-mail van anger gebroekers toesjtaon',
+'prefs-searchoptions' => 'Zeukinstellinge',
+'prefs-namespaces' => 'Naamruimte',
+'defaultns' => 'Zeuk anges in dees naomruumdes:',
+'default' => 'sjtandaard',
+'prefs-files' => 'Bestenj',
+'prefs-custom-css' => 'Persoonlijke CSS',
+'prefs-custom-js' => 'Persoonlijke JS',
+'youremail' => 'Dien e-mailadres',
+'username' => 'Gebroekersnaam:',
+'uid' => 'Gebroekersnómmer:',
+'prefs-memberingroups' => 'Lid van {{PLURAL:$1|gróp|gróppe}}:',
+'yourrealname' => 'Dienen echte naam*',
+'yourlanguage' => 'Taal van de gebroekersinterface',
+'yournick' => "Diene bienaam (veur ''handjteikeninge'')",
+'badsig' => 'Óngeljige roew handjteikening; kiek de HTML-tags nao.',
+'badsiglength' => 'De handjteikening is te lank.
+Zie maag neet mie es $1 {{PLURAL:$1|karakter|karakters}} bevatte.',
+'yourgender' => 'Geslach:',
+'gender-unknown' => 'Neet aangegaeve',
+'gender-male' => 'Miensj',
+'gender-female' => 'Vrów',
+'prefs-help-gender' => 'Optioneel: dit wört gebroek om gebroekers correk aan te spraeke in de software.
+Deze informatie is zichbaar veur angere gebroekers.',
+'email' => 'E-mail',
+'prefs-help-realname' => '* Echte naam (opsjeneel): esse deze opgufs kin deze naam gebroek waere om dich erkinning te gaeve veur dien wèrk.',
+'prefs-help-email' => 'E-mail (optioneel): Hiedoor kan me contak mit diech opnumme zónger dats te dien identiteit hoofs vrie te gaeve.',
+'prefs-help-email-required' => "Hiej veur is 'n e-mailadres neudig.",
+'prefs-signature' => 'Handjteikening',
+'prefs-dateformat' => 'Datumópmaak:',
+'prefs-timeoffset' => 'Tiedsversjèl',
+'prefs-advancedediting' => 'Wiejer instèllinger',
+'prefs-advancedrc' => 'Wiejer instèllinger',
+'prefs-advancedrendering' => 'Wiejer instèllinger',
+'prefs-advancedsearchoptions' => 'Wiejer instèllinger',
+'prefs-advancedwatchlist' => 'Wiejer instèllinger',
+'prefs-diffs' => 'Vers',
# User rights
-'userrights' => 'Gebroekersrechtebeheer', # Not used as normal message but as header for the special page itself
+'userrights' => 'Gebroekersrechtebeheer',
'userrights-lookup-user' => 'Beheer gebroekersgróppe',
'userrights-user-editname' => "Veur 'ne gebroekersnaam in:",
'editusergroup' => 'Bewirk gebroekersgróppe',
@@ -1237,6 +1249,8 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
'right-editprotected' => "Beveiligde pagina's bewerke",
'right-editinterface' => 'De gebroekersinterface bewerke',
'right-editusercssjs' => 'De CSS- en JS-bestande van angere gebroekers bewerke',
+'right-editusercss' => 'De CSS-bestande van angere gebroekers bewerke',
+'right-edituserjs' => 'De JS-bestande van angere gebroekers bewerke',
'right-rollback' => "Snel de letste bewerking(e) van 'n gebroeker van 'n pagina terugdraaie",
'right-markbotedits' => 'Teruggedraaide bewerkinge markere es botbewerkinge',
'right-noratelimit' => "Heet gein ti'jdsafhankelijke beperkinge",
@@ -1302,6 +1316,15 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
'recentchanges-legend' => 'Opties veur recènte verangeringe',
'recentchangestext' => 'op dees pazjena kins doe de recènte verangeringe in deze wiki betrachte.',
'recentchanges-feed-description' => 'Volg de meis recente bewerkinge in deze wiki via deze feed.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - Nuuj pagina',
+'recentchanges-label-newpage' => "Mit dees verangering is 'n nuuj pagina aangemaak",
+'recentchanges-legend-minor' => '$1 - klein verangering',
+'recentchanges-label-minor' => "Dit is 'n klein bewirking",
+'recentchanges-legend-bot' => '$1 - botbewirking',
+'recentchanges-label-bot' => "Dees bewirking is oetgeveurd door 'ne bot",
+'recentchanges-legend-unpatrolled' => '$1 - ongekónterleerde bewirking',
+'recentchanges-label-unpatrolled' => 'Dees bewirking is nog neet gekónterleerd',
'rcnote' => "Hiejónger {{PLURAL:$1|steit de lètste bewirking|staon de lètste '''$1''' bewirkinge}} van de aafgeloupe {{PLURAL:$2|daag|'''$2''' daag}}, op $4, um $5.",
'rcnotefrom' => "Verangeringe sins <b>$2</b> (mit 'n maximum van <b>$1</b> verangeringe).",
'rclistfrom' => 'Tuin de verangeringe vanaaf $1',
@@ -1328,6 +1351,8 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
# Recent changes linked
'recentchangeslinked' => 'Volg links',
+'recentchangeslinked-feed' => 'Volg links',
+'recentchangeslinked-toolbox' => 'Volg links',
'recentchangeslinked-title' => 'Wieziginge verwantj mit "$1"',
'recentchangeslinked-noresult' => "d'r Zeen gein bewerkinge in de gegaeve periode gewaes op de pagina's die vanaaf hiej gelink waere.",
'recentchangeslinked-summary' => "Dees speciaal pagina tuint de lètste bewirkinge op pagina's die gelink waere vanaaf deze pagina. Pagina's die op [[Special:Watchlist|dien volglies]] staon waere '''vet''' weergegaeve.",
@@ -1337,7 +1362,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
# Upload
'upload' => 'Upload',
'uploadbtn' => 'bestandj uploade',
-'reupload' => 'Opnuui uploade',
'reuploaddesc' => "Truuk nao 't uploadformeleer.",
'uploadnologin' => 'Neet aangemèld',
'uploadnologintext' => 'De mos [[Special:UserLogin|zien aangemèld]] om besjtande te uploade.',
@@ -1390,7 +1414,6 @@ Aangeweze {{PLURAL:\$3|bestandjstype|bestandjstypes}}zeen \$2.",
* Naam van 't geüploade bestand: '''<tt>[[:$1]]</tt>'''
* Naam van 't bestaonde bestand: '''<tt>[[:$2]]</tt>'''
Lèver 'ne angere naam te keze.",
-'fileexists-thumb' => "<center>'''Bestaonde afbeilding'''</center>",
'fileexists-thumbnail-yes' => "'t Liek 'n afbeilding van 'n verkleinde grootte te zeen ''(thumbnail)''. [[$1|thumb]]
Lèver 't bestand '''<tt>[[:$1]]</tt>''' te controlere.
Es 't gecontroleerde bestand dezelfde afbeilding van oorspronkelike grootte is, is 't neet noodzakelik 'ne extra thumbnail te uploade.",
@@ -1413,7 +1436,6 @@ Raodpleeg t verwiederingslogbook veurdet se wiejer geis.',
'uploaddisabledtext' => "'t uploade van bestenj is oetgesjakeld.",
'php-uploaddisabledtext' => 'PHP-bestanduploads zeen oetgesjakeld. Controleer a.u.b. de file_uploads-instelling.',
'uploadscripted' => 'Dit bestandj bevat HTML- of scriptcode die foutief door diene browser weergegaeve kinne waere.',
-'uploadcorrupt' => "'t bestand is corrup of haet 'n onzjuste extensie. Controleer 't bestand en upload 't opnuuj.",
'uploadvirus' => "'t Bestand bevat 'n virus! Details: $1",
'sourcefilename' => 'Oorspronkelike bestandsnaam:',
'destfilename' => 'Doeltitel:',
@@ -1440,6 +1462,7 @@ Lèver zeker te zeen detse gesjik bös om door te gaon met 't uploade van dit be
'upload-curl-error28-text' => "'t Doorde te lang veurdet de website antwaord goof. Controleer a.u.b. of de website besjikbaar is, wach effe en probeer 't dan opnuuj. De kèns 't mesjiens probere es 't minder drök is.",
'license' => 'Licentie:',
+'license-header' => 'Licentie:',
'nolicense' => "Maak 'ne keuze",
'license-nopreview' => '(Veurvertuun neet besjikbaar)',
'upload_source_url' => " ('ne geldige, publiek toegankelike URL)",
@@ -1460,6 +1483,7 @@ Klikke op 'ne kolomkop verangert de sortering.",
'listfiles_count' => 'Versies',
# File description page
+'file-anchor-link' => 'Besjtandj',
'filehist' => 'Besjtandjshistorie',
'filehist-help' => "Klik op 'ne datum/tied om 't besjtand te zeen wie 't destieds waor.",
'filehist-deleteall' => 'wis alles',
@@ -1483,15 +1507,14 @@ d'r Is ouch ne [[Special:WhatLinksHere/$2|volledige lies]].",
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mier verwijzinge]] naor dit bestaand bekèèke.',
'redirectstofile' => 'De volgende bestaande {{PLURAL:$1|verwèès|verwèèze}} door naor dit bestaand:',
'duplicatesoffile' => "{{PLURAL:$1|'t Nègsvóggendj bestandj is|De $1 nègsvóggendje bestenj zeen}} identiek aan dit bestandj ([[Special:FileDuplicateSearch/$2|deper]]):",
-'sharedupload' => 'Dit besjtandj kump van $1 en kin ouch door anger projekte gebroek waere.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Zee $1 veur meer informatie.',
-'shareduploadwiki-desc' => 'De omschrèèving op zie $1 is hij onder wiergegeve.',
-'shareduploadwiki-linktext' => 'bestandsbesjrieving',
-'noimage' => "D'r besjteit gein besjtandj mit deze naam, mer doe kèns 't $1.",
-'noimage-linktext' => 'uploade',
+'sharedupload' => 'Dit besjtandj kump van $1 en kin ouch door anger projekte gebroek waere.',
+'sharedupload-desc-there' => 'Dit besjtandj kump van $1 en kin ouch in anger projekte gebroek waere.
+Bekiek de [$2 pagina mit de besjtandjsbesjrieving] veur mie infermasie.',
+'sharedupload-desc-here' => 'Dit besjtandj kump van $1 en kin ouch in anger projekte gebroek waere.
+De [$2 pagina mit de besjtandjsbesjrieving] wurt hiejónger weergegaeve.',
'uploadnewversion-linktext' => "Upload 'n nuuje versie van dit bestand",
-'shared-repo-from' => 'ven $1', # $1 is the repository name
-'shared-repo' => 'n gedeilde bestanjebank', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'ven $1',
+'shared-repo' => 'n gedeilde bestanjebank',
# File reversion
'filerevert' => '$1 trökdrèjje',
@@ -1580,8 +1603,8 @@ Op eder raegel vings te de ierste redirectpazjena, de twiede redirectpazjena en
'brokenredirects' => 'Gebraoke redirects',
'brokenredirectstext' => "De óngersjtaonde redirectpazjena's bevatte 'n redirect nao 'n neet-besjtaonde pazjena:",
-'brokenredirects-edit' => '(bewerke)',
-'brokenredirects-delete' => '(wisse)',
+'brokenredirects-edit' => 'bewerke',
+'brokenredirects-delete' => 'wisse',
'withoutinterwiki' => "Pazjena's zónger interwiki's",
'withoutinterwiki-summary' => "De volgende pagina's linke neet nao versies in 'n anger taal:",
@@ -1715,6 +1738,9 @@ Zuuch ouch [[Special:WantedCategories|neet-bestaondje categorieë mit verwiezing
'listusers-submit' => 'Tuin',
'listusers-noresult' => 'Gein(e) gebroeker(s) gevonje.',
+# Special:ActiveUsers
+'activeusers-count' => '$1 {{PLURAL:$1|bewèrking|bewèrkinger}} inne {{PLURAL:$3|lèsten daag|lès $3 daag}}',
+
# Special:Log/newusers
'newuserlogpage' => 'Logbook nuuj gebroekers',
'newuserlogpagetext' => 'Hiej ónger saton de nuuj ingesjreve gebroekers.',
@@ -1872,8 +1898,8 @@ Kónfermeer hiejónger dat dit inderdaod dien bedoeling is, dats doe de gevolge
Emes angers haet de pagina al hersjtèld of haet 'n anger bewirking gedaon.
De lètste bewirking is gedaon door [[User:$3|$3]] ([[User talk:$3|euverlik]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "'t Bewirkingscommentair waor: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Wieziginge door [[Special:Contributions/$2|$2]] ([[User talk:$2|Euverlik]]) trukgedriejd tot de lètste versie door [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "'t Bewirkingscommentair waor: \"''\$1''\".",
+'revertpage' => 'Wieziginge door [[Special:Contributions/$2|$2]] ([[User talk:$2|Euverlik]]) trukgedriejd tot de lètste versie door [[User:$1|$1]]',
'rollback-success' => 'Wieziginge door $1 trökgedrèjd; letste versie van $2 hersteld.',
'sessionfailure' => "d'r Liek 'n probleem te zeen mit dien aanmelsessie. Diene hanjeling is gestop oet veurzorg taenge 'n beveiligingsrisico (det bestuit oet meugelik \"hijacking\"(euverkape) van deze sessie). Gao 'n pazjena trök, laaj die pazjena opnuuj en probeer 't nog ins.",
@@ -1892,7 +1918,6 @@ Zuug de [[Special:ProtectedPages|lies mit beveiligde pazjena's]] veur alle hujig
'protectexpiry' => 'Verlöp:',
'protect_expiry_invalid' => "De pazjena's aangegaeve verloup is ongeldig.",
'protect_expiry_old' => "De pazjena verlöp in 't verleje.",
-'protect-unchain' => 'Maak verplaatse meugelik',
'protect-text' => "Hiej kinse 't beveiligingsniveau veur de pazjena '''<nowiki>$1</nowiki>''' bekieke en wiezige.",
'protect-locked-blocked' => "De kèns 't beveiligingsniveau neet verangere terwiels te geblokkeerd bis.
Hie zeen de hujige insjtèllinge veur de pazjena '''[[$1]]''':",
@@ -1921,7 +1946,7 @@ Dit zeen de hujige instellinge veur de pazjena '''[[$1]]''':",
** Bewèrkingskrieg
** Preventieve beveiliging väölbezóchde paasj',
'protect-edit-reasonlist' => 'Reeje veur beveiliging bewèrke',
-'protect-expiry-options' => '1 oer:1 hour,1 daag:1 day,1 waek:1 week,2 waek:2 weeks,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year,veur iwweg:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 oer:1 hour,1 daag:1 day,1 waek:1 week,2 waek:2 weeks,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year,veur iwweg:infinite',
'restriction-type' => 'Rech:',
'restriction-level' => 'Bepèrkingsniveau:',
'minimum-size' => 'Min. gruutde',
@@ -1996,7 +2021,7 @@ $1",
'contributions-title' => 'Biedrage van $1',
'mycontris' => 'Mien biedrage',
'contribsub2' => 'Veur $1 ($2)',
-'nocontribs' => 'Gein wijzigingen gevonden die aan de gestelde criteria voldoen.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Gein wijzigingen gevonden die aan de gestelde criteria voldoen.',
'uctop' => '(lèste verangering)',
'month' => 'Van maond (en ierder):',
'year' => 'Van jaor (en ierder):',
@@ -2005,7 +2030,10 @@ $1",
'sp-contributions-newbies-sub' => 'Veur nuujelinge',
'sp-contributions-newbies-title' => 'Biedraag ven nuuj gebroekers',
'sp-contributions-blocklog' => 'Blokkeerlogbook',
+'sp-contributions-deleted' => 'eweggesjafde gebroekersbiedrages',
'sp-contributions-logs' => 'logbeuk',
+'sp-contributions-talk' => 'euverlèk',
+'sp-contributions-userrights' => 'gebroekersrechtebeheer',
'sp-contributions-search' => 'Zeuke nao biedrages',
'sp-contributions-username' => 'IP-adres of gebroekersnaam:',
'sp-contributions-submit' => 'Zeuk',
@@ -2052,7 +2080,7 @@ $1",
'ipbenableautoblock' => 'Automatisch de IP-adresse van deze gebroeker blokkere',
'ipbsubmit' => 'Blokkeer dit IP-adres',
'ipbother' => 'Anger verloup',
-'ipboptions' => '2 oer:2 hours,1 daag:1 day,3 daag:3 days,1 waek:1 week,2 waek:2 weeks,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year,veur iwweg:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oer:2 hours,1 daag:1 day,3 daag:3 days,1 waek:1 week,2 waek:2 weeks,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year,veur iwweg:infinite',
'ipbotheroption' => 'anger verloup',
'ipbotherreason' => 'Angere/eventuele rejer:',
'ipbhidename' => 'Verberg gebroekersnaam van liester èn bewèrkinger',
@@ -2083,7 +2111,7 @@ Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
'ipblocklist-submit' => 'Zeuk',
'blocklistline' => 'Op $1 blokkeerde $2 $3 ($4)',
'infiniteblock' => 'veur iwweg',
-'expiringblock' => 'verlöp op $1',
+'expiringblock' => 'verlöp op $1 $2',
'anononlyblock' => 'allein anoniem',
'noautoblockblock' => 'autoblok neet actief',
'createaccountblock' => 'aanmake gebroekers geblokkeerd',
@@ -2097,7 +2125,6 @@ Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
'contribslink' => 'biedrages',
'autoblocker' => 'Ómdets te \'n IP-adres deils mit "[[User:$1|$1]]" (geblokkeerd mit raeje "$2") bis te automatisch geblokkeerd.',
'blocklogpage' => 'Blokkeerlogbook',
-'blocklog-fulllog' => 'Volledige blokkeerlogbook',
'blocklogentry' => '"[[$1]]" is geblokkeerd veur d\'n tied van $2 $3',
'reblock-logentry' => 'haet de instellinge veur de blokkaasj veur [[$1]] gewiezig. Deze verlöp noe op $2 om $3',
'blocklogtext' => "Dit is 'n log van blokkades van gebroekers. Automatisch geblokkeerde IP-adresse sjtoon hie neet bie. Zuug de [[Special:IPBlockList|Lies van geblokkeerde IP-adresse]] veur de lies van op dit mement wèrkende blokkades.",
@@ -2166,7 +2193,7 @@ Vergaet neet de database opnuuj te [[Special:UnlockDB|deblokkere]] wens te klaor
'move-watch' => 'Volg deze pazjena',
'movepagebtn' => 'Verplaats pazjena',
'pagemovedsub' => 'De verplaatsing is gelök',
-'movepage-moved' => '\'\'\'"$1" is verplaats nao "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" is verplaats nao "$2"\'\'\'',
'movepage-moved-redirect' => "d'r Is 'n doorverwiezing aongemaak.",
'movepage-moved-noredirect' => "d'r Is gein doorverwiezing aongemaak.",
'articleexists' => "Dao is al 'n pazjena mit dees titel of de titel is óngeljig. <br />Kees estebleef 'n anger titel.",
@@ -2235,8 +2262,6 @@ In 't letste geval kèns te ouch 'ne link gebroeken, bieveurbild [[{{#Special:Ex
'allmessagestext' => "Dit is 'n lies van alle systeemberichte besjikbaar in de MediaWiki-naamruumde.
Bezeuk [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [http://translatewiki.net translatewiki.net] es doe wils biedrage aon lokalisatie.",
'allmessagesnotsupportedDB' => "Deze pagina kan neet gebroek waere omdet '''\$wgUseDatabaseMessages''' oet steit.",
-'allmessagesfilter' => 'Berich naamfilter:',
-'allmessagesmodified' => 'Tuin allein verangerde systeemtekste',
# Thumbnails
'thumbnail-more' => 'Vergroete',
@@ -2246,6 +2271,9 @@ Bezeuk [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [ht
'djvu_no_xml' => "De XML veur 't DjVu-bestandj kos neet opgehaald waere",
'thumbnail_invalid_params' => 'Onzjuste thumbnailparamaetere',
'thumbnail_dest_directory' => 'Neet in staat doel directory aan te make',
+'thumbnail_image-type' => 'Dit besjtandjstype waert neet ongersjteund',
+'thumbnail_gd-library' => 'De insjtèllinge veur de GD-bibliotheek zeen incompleet. De functie $1 waert gemis',
+'thumbnail_image-missing' => "'t Besjtandj liek neet aanwezig te zeen: $1",
# Special:Import
'import' => "Pazjena's importere",
@@ -2319,6 +2347,7 @@ Alle transwiki-importhanjelinge waere opgeslage in 't [[Special:Log/import|impor
'tooltip-search-fulltext' => "Zeuk de pagina's veur dees teks",
'tooltip-p-logo' => 'Veurblaad',
'tooltip-n-mainpage' => "Bezeuk 't Veurblaad",
+'tooltip-n-mainpage-description' => "Bezeuk 't Veurblaad",
'tooltip-n-portal' => "Euver 't projek, wats te kins doon, woes te dinger kins vènje",
'tooltip-n-currentevents' => "Achtergrondinfo van 't nuujs",
'tooltip-n-recentchanges' => 'De lies van recènte verangeringe in de wiki.',
@@ -2364,7 +2393,7 @@ Doe kans in de bewirkingssamevatting \'n reej opgaeve.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonieme gebroeker|Anoniem gebroekers}} ven {{SITENAME}}',
'siteuser' => '{{SITENAME}} gebroeker $1',
-'lastmodifiedatby' => "Dees pagina is 't lèts verangerd op $2, $1 door $3.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Dees pagina is 't lèts verangerd op $2, $1 door $3.",
'othercontribs' => 'Gebaseerd op wirk van $1.',
'others' => 'angere',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|gebroeker|gebroekers}} $1',
@@ -2401,6 +2430,17 @@ Meistal wörd dit door 'ne zwarte externe link veroorzaak.",
'mw_math_modern' => 'Aangeroaje vuur nuui browsers',
'mw_math_mathml' => 'MathML woe meugelik (experimenteil)',
+# Math errors
+'math_failure' => 'Parse misluk',
+'math_unknown_error' => 'onbekènde fout',
+'math_unknown_function' => 'onbekènde functie',
+'math_lexing_error' => 'lexicografische fout',
+'math_syntax_error' => 'fout vanne syntax',
+'math_image_error' => 'PNG-conversie is misluk. Gao nao of latex, dvips en gs correc geïnstalleerd zeen en converteer nogmaols',
+'math_bad_tmpdir' => 'De map veur tiedelike bestenj veur wiskóndige formules bestuit neet of kin neet gemaak waere',
+'math_bad_output' => 'Kin neet sjrieve nao de output directory veur mattematik',
+'math_notexvc' => "Kin 't programma texvc neet vinje; stel alles in volges de besjrieving in math/README.",
+
# Patrolling
'markaspatrolleddiff' => 'Markeer es gecontroleerd',
'markaspatrolledtext' => 'Markeer deze pagina es gecontroleerd',
@@ -2435,9 +2475,6 @@ $1",
'previousdiff' => '← Veurige bewirking',
'nextdiff' => 'Volgende bewirking →',
-# Visual comparison
-'visual-comparison' => 'Visuele vergelieking',
-
# Media information
'mediawarning' => "'''Waorsjuwing''': Dit bestandj kin 'n anger kood höbbe, door 't te doorveure in dien systeem kin 't gecompromeerde dinger oplevere.",
'imagemaxsize' => "Bepèrk plaetsjes op de besjrievingspazjena's van aafbeildinge tot:",
@@ -2480,7 +2517,7 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Breidte',
@@ -2607,14 +2644,14 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-unknowndate' => 'Datum ónbekindj',
-'exif-orientation-1' => 'Normaal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontaal gespegeldj', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° gedrejd', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Verticaal gespegeldj', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Gespegeldj om as linksbaove-rechsonger', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° rechsom gedrejd', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Gespegeldj om as linksonger-rechsbaove', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° linksom gedrejd', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaal',
+'exif-orientation-2' => 'Horizontaal gespegeldj',
+'exif-orientation-3' => '180° gedrejd',
+'exif-orientation-4' => 'Verticaal gespegeldj',
+'exif-orientation-5' => 'Gespegeldj om as linksbaove-rechsonger',
+'exif-orientation-6' => '90° rechsom gedrejd',
+'exif-orientation-7' => 'Gespegeldj om as linksonger-rechsbaove',
+'exif-orientation-8' => '90° linksom gedrejd',
'exif-planarconfiguration-1' => 'chunky gegaevesformaat',
'exif-planarconfiguration-2' => 'planar gegaevesformaat',
@@ -2736,7 +2773,7 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-gpsmeasuremode-2' => '2-dimensionale maeting',
'exif-gpsmeasuremode-3' => '3-dimensionale maeting',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilomaeter per oer',
'exif-gpsspeed-m' => 'Miel per oer',
'exif-gpsspeed-n' => 'Knuip',
@@ -2883,7 +2920,7 @@ De kèns ouch [[Special:Watchlist/edit|'t sjtanderd bewirkingssjirm gebroeke]]."
'duplicate-defaultsort' => 'Waarsjuwing: De standaardsortering "$2" krieg veurrang veur de sortering "$1".',
# Special:Version
-'version' => 'Versie', # Not used as normal message but as header for the special page itself
+'version' => 'Versie',
'version-extensions' => 'Geïnstalleerde oetbreijinge',
'version-specialpages' => "Speciaal pazjena's",
'version-parserhooks' => 'Parserheuk',
@@ -2897,7 +2934,7 @@ De kèns ouch [[Special:Watchlist/edit|'t sjtanderd bewirkingssjirm gebroeke]]."
'version-skin-extension-functions' => 'Vormgaevingsoetbreijingsfuncties',
'version-hook-name' => 'Hooknaam',
'version-hook-subscribedby' => 'Geabonneerd door',
-'version-version' => 'Versie',
+'version-version' => '(Versie $1)',
'version-license' => 'Licentie',
'version-software' => 'Geïnstallieërde sofwaer',
'version-software-product' => 'Perduk',
diff --git a/languages/messages/MessagesLij.php b/languages/messages/MessagesLij.php
index 09f1ea19..0e849d51 100644
--- a/languages/messages/MessagesLij.php
+++ b/languages/messages/MessagesLij.php
@@ -196,27 +196,29 @@ $messages = array(
'subcategories' => 'Sottocategorîe',
'category-media-header' => 'Archivvio inta categorîa "$1"',
'category-empty' => "''Pe-o momento 'sta categorîa a no contegne nisciûnn-a paggina ò archivvio multimedia.''",
-'hidden-category-category' => 'Categorîe ascôse', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorîe ascôse',
'category-subcat-count-limited' => "'Sta categorîa a contegne {{PLURAL:$1|ûnn-a sottocategorîa, indicaa|$1 sottocategorîe, indicæ}} chì inzû.",
'category-article-count-limited' => "'Sta categorîa a contegne {{PLURAL:$1|'sta paggina|'ste $1 paggine}}.",
'listingcontinuesabbrev' => 'cont.',
-'about' => 'Informaçioin',
-'article' => 'Pagina de i contenùi',
-'newwindow' => "(A s'ârve inte 'n âtro barcon)",
-'cancel' => 'Scassa',
+'about' => 'Informaçioin',
+'article' => 'Pagina de i contenùi',
+'newwindow' => "(A s'ârve inte 'n âtro barcon)",
+'cancel' => 'Scassa',
+'moredotdotdot' => 'De ciû...',
+'mypage' => 'A mea pagina',
+'mytalk' => 'Mæ discuscioin',
+'anontalk' => 'Discuscion pe questo indirisso IP',
+'navigation' => 'Navegaçion',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Attrêuva',
'qbedit' => 'Cangia',
'qbpageoptions' => "Opsioîn de 'sta paggina",
'qbpageinfo' => 'Informassion inscia paggina',
'qbmyoptions' => 'E mæ paggine',
'qbspecialpages' => 'Pagine speçiä',
-'moredotdotdot' => 'De ciû...',
-'mypage' => 'A mea pagina',
-'mytalk' => 'Mæ discuscioin',
-'anontalk' => 'Discuscion pe questo indirisso IP',
-'navigation' => 'Navegaçion',
-'and' => '&#32;e',
'errorpagetitle' => 'Errô',
'returnto' => 'Tornâ a $1.',
@@ -256,7 +258,7 @@ $messages = array(
'otherlanguages' => 'In ätre lengue',
'redirectedfrom' => '(Rediritto da $1)',
'redirectpagesub' => 'Paggina de rindirissamento',
-'lastmodifiedat' => "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1.", # $1 date, $2 time
+'lastmodifiedat' => "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1.",
'viewcount' => "'Sta paggina a l'è stæta vista {{PLURAL:$1|solo 'na vòtta|$1 vòtte}}.",
'protectedpage' => 'Paggina protezûa',
'jumpto' => 'Vanni a:',
@@ -267,7 +269,6 @@ $messages = array(
'aboutsite' => 'Informaçioin in scia {{SITENAME}}',
'aboutpage' => 'Project:Informassioîn',
'copyright' => 'O contegnûo o se peu trovâ a $1.',
-'copyrightpagename' => "Diritti d'autô de {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Diritti d'autô",
'currentevents' => 'Attualitæ',
'currentevents-url' => 'Project:Attualitæ',
@@ -321,9 +322,6 @@ $messages = array(
# General errors
'error' => 'Errô',
'databaseerror' => 'Errô da a base de i dæti',
-'noconnect' => "Scûsa! 'Sto scîto o g'ha di problemmi tecnixi e o no pêu connettâse co-a base.<br />
-$1",
-'cachederror' => "Questa a l'è una copia da pagina ceh ti te çercoö, e a peu esê vegia.",
'readonly' => 'Database bloccòu',
'internalerror' => 'Errô interno',
'filecopyerror' => 'Non ho potùo copiâ o papê "$1" in te "$2".',
@@ -361,16 +359,6 @@ O to account o l'è stæto creoö. Non te ascordà de cangiâ e toe preferençe
'badretype' => "E paròlle d'ordine che t'hæ scrîo son despægie.",
'userexists' => "O nomme d'ûtente inserîo o l'è zà in ûso.<br />
Pe piaxei prêuva a scellie 'n âtro.",
-'youremail' => 'Posta elettronega:',
-'username' => "Nomme d'utente",
-'yourrealname' => 'Nomme vëo:',
-'yourlanguage' => 'Léngoa:',
-'yourvariant' => 'Differensa',
-'yournick' => 'Nommeaggio:',
-'badsig' => 'Errô in ta firma; controlla i comandi HTML.',
-'badsiglength' => "O nommeaggio o l'é tròppo lóngo; o dêve avéi meno de $1 caratteri.",
-'email' => 'Posta elettronega',
-'prefs-help-realname' => '* Nomme vëo (opsionâ): se o se scellie de scrivilo, o sajà dêuviòu pe ascrivighe a paternitæ di contegnûi inviæ.',
'loginerror' => "Errô inte l'accesso",
'noname' => "O nomme d'ûtente o l'è sballiòu.",
'loginsuccesstitle' => 'Accesso effettuòu',
@@ -430,18 +418,18 @@ Pe abilitâ l'invîo de messaggi e-mail pe quest'accesso, o se deive seguî l'is
'hr_tip' => 'Linnia orissontâ',
# Edit pages
-'summary' => 'Oggetto:',
-'subject' => 'Argomento (tittolo):',
-'minoredit' => 'Cangiamento minô (m)',
-'watchthis' => 'Azzonze a-i osservæ speçiâli',
-'savearticle' => 'Sârva a pagina',
-'preview' => 'Anteprimma',
-'showpreview' => "Veddi l'anteprimma",
-'showdiff' => 'Veddi i cangiamenti',
-'anoneditwarning' => "'''Attension:''' No ti t'hæ registròu. O têu indirisso IP o sajà misso inta stöja di cangiamenti da paggina.",
-'summary-preview' => 'Anteprimma oggetto:',
-'blockedtitle' => "L'utente o l'é bloccòu",
-'blockedtext' => "''''Sto nomme d'ûtente ou indirisso IP o l'è stæto bloccòu.'''
+'summary' => 'Oggetto:',
+'subject' => 'Argomento (tittolo):',
+'minoredit' => 'Cangiamento minô (m)',
+'watchthis' => 'Azzonze a-i osservæ speçiâli',
+'savearticle' => 'Sârva a pagina',
+'preview' => 'Anteprimma',
+'showpreview' => "Veddi l'anteprimma",
+'showdiff' => 'Veddi i cangiamenti',
+'anoneditwarning' => "'''Attension:''' No ti t'hæ registròu. O têu indirisso IP o sajà misso inta stöja di cangiamenti da paggina.",
+'summary-preview' => 'Anteprimma oggetto:',
+'blockedtitle' => "L'utente o l'é bloccòu",
+'blockedtext' => "''''Sto nomme d'ûtente ou indirisso IP o l'è stæto bloccòu.'''
O blòcco o l'è stæto fæto da \$1. A raxon dæta a l'è ''\$2''.
@@ -453,7 +441,7 @@ O l'è poscibbile contattâ \$1 o 'n âtro [[{{MediaWiki:Grouppage-sysop}}|ammin
O no se pêu ûsâ o comando \"Inviâ 'na léttia elettronega a quest'ûtente\" se ti no ti g'hæ 'n indirisso e-mail registròu inte têu [[Special:Preferences|preferense]] e se o no l'è stæto bloccòu ascì.
O têu indirisso IP o l'è \$3, e o têu blòcco ID o l'è #\$5.
Pe piaxei mettighe ûn di doî in tûtte e domande che ti fæ.",
-'autoblockedtext' => "O têu indirisso IP o l'è stæto bloccòu outomaticamente perché o l'ea za ûsòu da 'n âtro ûtente, bloccòu da \$1.
+'autoblockedtext' => "O têu indirisso IP o l'è stæto bloccòu outomaticamente perché o l'ea za ûsòu da 'n âtro ûtente, bloccòu da \$1.
A raxon dæta a l'è stæta:
:''\$2''
@@ -467,39 +455,39 @@ Ti pêu contattâ \$1 ou 'n âtro
Dagghe a mente a che no ti pêu ûsâ o comando \"manda na littia elettronega a sto utente\" se non ti g'hæ 'n indirisso de posta elettronega registroö in te têu [[Special:Preferences|preferense]] e se o no l'è stæto bloccòu ascì.
O têu blòcco ID o l'è \$5. Pe piaxei metti 'sto ID in tûtte e domande che ti fæ.",
-'blockedoriginalsource' => "A fònte de '''$1''' a l'è chi sotta:",
-'blockededitsource' => "O testo de i '''teu cangiamenti''' a '''$1''' o l'è chi sotta:",
-'whitelistedittitle' => "Bezêugna registrâse pe modificâ 'na pagina.",
-'whitelistedittext' => 'Pe cangia sta pagina devvi $1.',
-'loginreqtitle' => "Besêugna registrâse primma de modificâ 'sta paggina.",
-'accmailtitle' => 'Pòula segretta spedïa',
-'accmailtext' => 'A pòula segretta pe-o utente "$1" a l\'è stæta spedïa a o indirisso $2.',
-'newarticle' => '(Nêuvo)',
-'newarticletext' => "'Sto collegamento o corisponde a 'na paggina che ancon a no l'esciste.
+'blockedoriginalsource' => "A fònte de '''$1''' a l'è chi sotta:",
+'blockededitsource' => "O testo de i '''teu cangiamenti''' a '''$1''' o l'è chi sotta:",
+'whitelistedittitle' => "Bezêugna registrâse pe modificâ 'na pagina.",
+'whitelistedittext' => 'Pe cangia sta pagina devvi $1.',
+'loginreqtitle' => "Besêugna registrâse primma de modificâ 'sta paggina.",
+'accmailtitle' => 'Pòula segretta spedïa',
+'accmailtext' => 'A pòula segretta pe-o utente "$1" a l\'è stæta spedïa a o indirisso $2.',
+'newarticle' => '(Nêuvo)',
+'newarticletext' => "'Sto collegamento o corisponde a 'na paggina che ancon a no l'esciste.
Se o se vêu creâ a paggina òua, o se pêu comensâ a scrive o testo into spassio vêuo chì sotta.
(fâ riferimento a-e [[{{MediaWiki:Helppage}}|paggine d'agiûtto]] pe ciû informassion).
Se o s'ha intròu inte 'sto collegamento pe sbàllio, o basta sciaccâ '''Inderrê''' (Indietro) into navigatô.",
-'noarticletext' => "Inte 'sto momento a paggina çercâa a l'è vêua. O l'è poscibbile [[Special:Search/{{PAGENAME}}|çercâ 'sto tittolo]] inte âtre paggine do scîto oppûre [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificâ a paggina òua].",
-'previewnote' => "'''Questa chì a l'è solo 'n'anteprimma; i cangiamenti no son ancon stæti sarvæ!'''",
-'editing' => 'Modiffica de $1',
-'editingsection' => 'Modiffica de $1 (session)',
-'yourtext' => 'O teu testo',
-'yourdiff' => 'Differense',
-'copyrightwarning' => "Nota: Tùtte e contribuçioìn a {{SITENAME}} van conscideræ comme rilasciæ drento a-i termini da licensa d'ûso $2 (veddi $1 pe savéine de ciù).
+'noarticletext' => "Inte 'sto momento a paggina çercâa a l'è vêua. O l'è poscibbile [[Special:Search/{{PAGENAME}}|çercâ 'sto tittolo]] inte âtre paggine do scîto oppûre [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificâ a paggina òua].",
+'previewnote' => "'''Questa chì a l'è solo 'n'anteprimma; i cangiamenti no son ancon stæti sarvæ!'''",
+'editing' => 'Modiffica de $1',
+'editingsection' => 'Modiffica de $1 (session)',
+'yourtext' => 'O teu testo',
+'yourdiff' => 'Differense',
+'copyrightwarning' => "Nota: Tùtte e contribuçioìn a {{SITENAME}} van conscideræ comme rilasciæ drento a-i termini da licensa d'ûso $2 (veddi $1 pe savéine de ciù).
Se no ti veu che i testi teu pêuan esse modificæ da quarchedùn sensa limitaçioìn, no mandâli a {{SITENAME}}.<br />
Inviando o testo ti diciâri, sott'a teu responsabilitæ, ch'o l'é stæto scrîto da ti personalmente oppure ch'o l'é stæto piggiòu da 'na fonte de pùbrico domìnio òu anàlogamente lìbea.<br />
'''NO INVIÂ MATERIÂLE COVERTO DA DRÎTI D'AUTÔ SENSA OUTORIZAÇION!'''",
-'longpagewarning' => "'''ATTENSION: 'Sta paggina chì a g'ha $1 kilobyte; çerti browser porieivan avei di problemmi inta modiffica de-e paggine che s'avvixinn-an o che ecceddan i 32 kB.
+'longpagewarning' => "'''ATTENSION: 'Sta paggina chì a g'ha $1 kilobyte; çerti browser porieivan avei di problemmi inta modiffica de-e paggine che s'avvixinn-an o che ecceddan i 32 kB.
Pe piaxei conscidera l'opportûnitæ de soddividde a paggina in sessioîn ciû piccinn-e.'''",
-'templatesused' => "Template dêuviæ inte 'sta paggina:",
-'templatesusedpreview' => "Template dêuviæ inte 'st'anteprimma:",
-'template-protected' => '(protezûo)',
-'template-semiprotected' => '(semiprotezûo)',
-'nocreatetext' => "A poscibilitæ de creâ nêuve paggine insce {{SITENAME}} a l'è stæta limitâ solo a-i ûtenti registræ.
+'templatesused' => "Template dêuviæ inte 'sta paggina:",
+'templatesusedpreview' => "Template dêuviæ inte 'st'anteprimma:",
+'template-protected' => '(protezûo)',
+'template-semiprotected' => '(semiprotezûo)',
+'nocreatetext' => "A poscibilitæ de creâ nêuve paggine insce {{SITENAME}} a l'è stæta limitâ solo a-i ûtenti registræ.
O se pêu tornâ inderê e modificâ 'na paggina escistente, oppûre [[Special:UserLogin|intrâ ò creâ 'n accesso nêuvo]].",
-'recreate-deleted-warn' => "'''Attension: o se sta pe ricreâ 'na paggina zà scassâa into passòu.'''
+'recreate-moveddeleted-warn' => "'''Attension: o se sta pe ricreâ 'na paggina zà scassâa into passòu.'''
O se deive consciderâ se o l'è davvei corretto continuâ avanti a modificâ 'sta paggina.
E relative cancellassioîn son pûbricæ chì sotta:",
@@ -514,7 +502,7 @@ A razon dæta a l'è ''$2''",
'viewpagelogs' => "Veddi i log relativi a 'sta paggina.",
'currentrev' => 'Verscion attuâle',
'revisionasof' => 'Verscion do $1',
-'revision-info' => 'Verscion do $1, outô: $2', # Additionally available: $3: revision id
+'revision-info' => 'Verscion do $1, outô: $2',
'previousrevision' => '← Verscion meno reçente',
'nextrevision' => 'Revixon ciû nêuva →',
'currentrevisionlink' => 'Ûrtima revixon',
@@ -532,7 +520,7 @@ Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a v
# Revision feed
'history-feed-title' => 'Stöia de e revisioin',
-'history-feed-item-nocomment' => '$1 o $2', # user at time
+'history-feed-item-nocomment' => '$1 o $2',
# Diffs
'history-title' => 'Cronologîa de-e revixoîn de "$1"',
@@ -546,27 +534,35 @@ Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a v
'searchresults' => 'Resultati da reçerca',
'searchsubtitle' => "Ti t'è çercoö '''[[:$1]]'''",
'searchsubtitleinvalid' => "Ti t'è çercoö '''$1'''",
-'noexactmatch' => "'''No gh'è nisciûnn-a paggina c'a se ciamme \"\$1\".''' O se pêu [[:\$1|creâla òua]].",
-'prevn' => 'Preçedenti $1',
-'nextn' => 'Proscima $1',
-'viewprevnext' => 'Veddi ($1) ($2) ($3).',
+'prevn' => 'Preçedenti {{PLURAL:$1|$1}}',
+'nextn' => 'Proscima {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Veddi ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Contegnûi',
'powersearch' => 'Çerca',
# Preferences page
-'preferences' => 'Preferençe',
-'mypreferences' => 'Mæ preferense',
-'changepassword' => 'Cangiâ a pòula segretta',
-'skin-preview' => 'Anteprimma',
-'dateformat' => 'Formato da a data',
-'datetime' => 'Data e oùa',
-'saveprefs' => 'Sarva',
-'textboxsize' => 'Cangia',
-'searchresultshead' => 'Çerca',
-'timezonelegend' => 'Oùa',
-'allowemail' => 'Permitti a posta elettronega da ätri utenti',
-'default' => 'Predefinïo',
-'files' => 'Papê',
+'preferences' => 'Preferençe',
+'mypreferences' => 'Mæ preferense',
+'changepassword' => 'Cangiâ a pòula segretta',
+'skin-preview' => 'Anteprimma',
+'prefs-datetime' => 'Data e oùa',
+'saveprefs' => 'Sarva',
+'prefs-editing' => 'Cangia',
+'searchresultshead' => 'Çerca',
+'timezonelegend' => 'Oùa',
+'allowemail' => 'Permitti a posta elettronega da ätri utenti',
+'default' => 'Predefinïo',
+'prefs-files' => 'Papê',
+'youremail' => 'Posta elettronega:',
+'username' => "Nomme d'utente",
+'yourrealname' => 'Nomme vëo:',
+'yourlanguage' => 'Léngoa:',
+'yourvariant' => 'Differensa',
+'yournick' => 'Nommeaggio:',
+'badsig' => 'Errô in ta firma; controlla i comandi HTML.',
+'badsiglength' => "O nommeaggio o l'é tròppo lóngo; o dêve avéi meno de $1 caratteri.",
+'email' => 'Posta elettronega',
+'prefs-help-realname' => '* Nomme vëo (opsionâ): se o se scellie de scrivilo, o sajà dêuviòu pe ascrivighe a paternitæ di contegnûi inviæ.',
# Groups
'group-user' => 'Ûtenti',
@@ -601,6 +597,8 @@ Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a v
# Recent changes linked
'recentchangeslinked' => 'Cangiamenti correlæ',
+'recentchangeslinked-feed' => 'Cangiamenti correlæ',
+'recentchangeslinked-toolbox' => 'Cangiamenti correlæ',
'recentchangeslinked-title' => 'Modiffiche correlæ a "$1"',
'recentchangeslinked-noresult' => 'Nisciûn cangiamento a-e paggine collegæ into periodo speçificòu.',
'recentchangeslinked-summary' => "'Sta paggina a fa vedde e modiffiche ciû reçenti a-e paggine in collegamento.
@@ -620,15 +618,15 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'savefile' => 'Sarva o papê',
'uploadedimage' => 'O s\'ha caregòu "[[$1]]"',
'uploaddisabledtext' => 'In {{SITENAME}} non se peu caregâ de papê.',
-'uploadcorrupt' => "O papê o gh'à di erroì ò-o gh'à unn'estenscion sbaliâ. Pe piaxei dagghe unn'euggiâ a-o papê e càreghilo tórna.",
'uploadvirus' => 'O papê gha un virus!! Dettaggi: $1',
'sourcefilename' => "Nomme do papê d'origine:",
'destfilename' => 'Nomme do papê de destin:',
'upload-file-error' => 'Errô interno',
-'license' => 'Permisso:',
-'nolicense' => 'Nisciûnn-a liçensa indicâa',
+'license' => 'Permisso:',
+'license-header' => 'Permisso:',
+'nolicense' => 'Nisciûnn-a liçensa indicâa',
# Special:ListFiles
'listfiles_search_for' => "Çerca pe nomme de l'imàgine:",
@@ -637,6 +635,7 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'listfiles_date' => 'Dæta',
# File description page
+'file-anchor-link' => 'Archivvio',
'filehist' => "Cronologîa de l'archivvio",
'filehist-help' => "Sciacca inscie 'n grûppo data/ôa pe vedde l'archivvio comme o se presentâva into momento indicòu.",
'filehist-current' => 'Corrente',
@@ -648,10 +647,7 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'imagelinks' => "Collegamenti a l'immaggine",
'linkstoimage' => "Queste son e pagine che appóntan a st'archivio",
'nolinkstoimage' => "No gh'è nisciûnn-a paggina collegâa con 'st'archivvio.",
-'sharedupload' => "'St'archivvio o l'è condiviso; sajeiva a dî c'o pêu ese dêuviòu da ciû progetti wiki.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'pagina da descriçion do papê',
-'noimage' => "No gh'è nisciûn archivvio con quello nomme, o se pêu $1.",
-'noimage-linktext' => 'Caregâlo òua',
+'sharedupload' => "'St'archivvio o l'è condiviso; sajeiva a dî c'o pêu ese dêuviòu da ciû progetti wiki.",
'uploadnewversion-linktext' => "Carega 'na nêuva verscion de 'st'archivvio chì",
# File deletion
@@ -681,8 +677,8 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'brokenredirects' => 'Rindirissamenti sballiæ',
'brokenredirectstext' => 'De sotta unn-a lista de reindirissi a pagine che non existàn:',
-'brokenredirects-edit' => '(cangia)',
-'brokenredirects-delete' => '(scassa)',
+'brokenredirects-edit' => 'cangia',
+'brokenredirects-delete' => 'scassa',
'withoutinterwiki' => 'Paggine sensa interwiki',
'withoutinterwiki-summary' => "'Ste paggine chì inzû no g'han nisciûn collegamento co-e verscioîn in âtre lengoe:",
@@ -820,7 +816,7 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
da [[User:$2|$2]] ([[User talk:$2|Ciæti]]); quarche âtro
o l'à cangiâ ò o l'è zà tornòu inderê.
L'ûrtimo cangiamento o ghe l'à fæto [[User:$3|$3]] ([[User talk:$3|Ciæti]]).",
-'revertpage' => 'E modificaçioin de [[Special:Contributions/$2|$2]] ([[User talk:$2|Ciæti]]) son stæte eliminæ; riportæ a verscion de primma de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'E modificaçioin de [[Special:Contributions/$2|$2]] ([[User talk:$2|Ciæti]]) son stæte eliminæ; riportæ a verscion de primma de [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Protessioîn',
@@ -831,7 +827,6 @@ L'ûrtimo cangiamento o ghe l'à fæto [[User:$3|$3]] ([[User talk:$3|Ciæti]]).
'protectexpiry' => 'Scadensa:',
'protect_expiry_invalid' => 'Scadensa invalida.',
'protect_expiry_old' => 'Data de scadensa into passòu.',
-'protect-unchain' => 'Scollegâ i permissi de stramûo',
'protect-text' => "Chì o l'è poscibbile vedde e modificâ o livello de protession pe-a paggina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "No ti g'hæ permisso pe modificâ i livelli de protession da paggina.
Queste son e impostassioîn correnti pe 'sta paggina ('''$1'''):",
@@ -844,7 +839,7 @@ Queste son e impostassioîn correnti pe 'sta paggina ('''$1'''):",
'protect-expiring' => 'scadensa: $1 (UTC)',
'protect-cascade' => 'Protession recorsciva (estende a protession a tûtte e paggine inclûse in questa chì).',
'protect-cantedit' => "Ti no ti pêu modificâ i livelli de protession pe-a paggina se no ti g'hæ i permissi pe modificâ a paggina mæxima.",
-'protect-expiry-options' => '2 ôe:2 hours,1 giorno:1 day,3 giorni:3 days,1 settemann-a:1 week,2 settemann-e:2 weeks,1 meise:1 month,3 meixi:3 months,6 meixi:6 months,1 anno:1 year,infinîo:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ôe:2 hours,1 giorno:1 day,3 giorni:3 days,1 settemann-a:1 week,2 settemann-e:2 weeks,1 meise:1 month,3 meixi:3 months,6 meixi:6 months,1 anno:1 year,infinîo:infinite',
'restriction-type' => 'Permisso',
'restriction-level' => 'Livello de restrission',
@@ -881,6 +876,7 @@ $1',
'sp-contributions-newbies-sub' => 'Pe i nêuvi ûtenti',
'sp-contributions-blocklog' => 'Blocchi',
+'sp-contributions-talk' => 'Ciæti',
'sp-contributions-submit' => 'Çerca',
# What links here
@@ -897,7 +893,7 @@ $1',
# Block/unblock
'blockip' => "Blocca l'ûtente",
'ipbreason' => 'Raxon:',
-'ipboptions' => '2 ôe:2 hours,1 giorno:1 day,3 giorni:3 days,1 settemann-a:1 week,2 settemann-e:2 weeks,1 meise:1 month,3 meixi:3 months,6 meixi:6 months,1 anno:1 year,infinîo:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ôe:2 hours,1 giorno:1 day,3 giorni:3 days,1 settemann-a:1 week,2 settemann-e:2 weeks,1 meise:1 month,3 meixi:3 months,6 meixi:6 months,1 anno:1 year,infinîo:infinite',
'badipaddress' => 'Indirisso IP non valido',
'blockipsuccesssub' => 'Affermaçion arriescïa',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] o l'è stæto affermoö.
@@ -973,8 +969,6 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
'allmessagescurrent' => 'Testo corrente',
'allmessagestext' => "Sta chie a l'è unn-a lista de messaggi do scistema in ta MediaWiki.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' o non ti te peu vedde, perchè '''\$wgUseDatabaseMessages''' o non l'è attivo.",
-'allmessagesfilter' => 'Çernia de mesasggi:',
-'allmessagesmodified' => 'Vanni vedde söo i cangiamenti',
# Thumbnails
'thumbnail-more' => 'Ciû grande',
@@ -1032,7 +1026,7 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
# Attribution
'anonymous' => 'Utente anonimmo de {{SITENAME}}',
-'lastmodifiedatby' => "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1 da $3.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1 da $3.",
# Browsing diffs
'previousdiff' => '← Differensa preçedente',
@@ -1069,7 +1063,7 @@ L'ingançi succescivi, inscia mæxima riga, van conscideræ comme eccescioîn (p
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-datetime' => 'Data e öa do cangiamento do papê',
@@ -1117,7 +1111,7 @@ L'ingançi succescivi, inscia mæxima riga, van conscideræ comme eccescioîn (p
'watchlisttools-raw' => 'Modiffica a lista in formato testo',
# Special:Version
-'version' => 'Verscion', # Not used as normal message but as header for the special page itself
+'version' => 'Verscion',
# Special:SpecialPages
'specialpages' => 'Paggine speçiâli',
diff --git a/languages/messages/MessagesLld.php b/languages/messages/MessagesLld.php
deleted file mode 100644
index f79a4419..00000000
--- a/languages/messages/MessagesLld.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/** Ladin (Ladin)
- *
- * @ingroup Language
- * @file
- *
- */
-
-$fallback = 'it';
diff --git a/languages/messages/MessagesLmo.php b/languages/messages/MessagesLmo.php
index 09978bcc..af734561 100644
--- a/languages/messages/MessagesLmo.php
+++ b/languages/messages/MessagesLmo.php
@@ -23,6 +23,83 @@
$fallback = 'it';
+$namespaceNames = array(
+ NS_SPECIAL => 'Special',
+ NS_TALK => 'Ciciarada',
+ NS_USER => 'Druvadur',
+ NS_USER_TALK => 'Ciciarada_Druvadur',
+ NS_PROJECT_TALK => '$1_Ciciarada',
+ NS_FILE => 'Archivi',
+ NS_FILE_TALK => 'Ciciarada_Archivi',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Ciciarada_MediaWiki',
+ NS_TEMPLATE => 'Mudel',
+ NS_TEMPLATE_TALK => 'Ciciarada_Mudel',
+ NS_HELP => 'Jüt',
+ NS_HELP_TALK => 'Ciciarada_Jüt',
+ NS_CATEGORY => 'Categuria',
+ NS_CATEGORY_TALK => 'Ciciarada_Categuria',
+);
+
+$namespaceAliases = array(
+ 'Speciale' => NS_SPECIAL,
+ 'Discussione' => NS_TALK,
+ 'Utente' => NS_USER,
+ 'Druvat' => NS_USER,
+ 'Dovrat' => NS_USER,
+ 'Discussioni_utente' => NS_USER_TALK,
+ 'Ciciarada_Druvat' => NS_USER_TALK,
+ 'Ciciarada_Dovrat' => NS_USER_TALK,
+ 'Discussioni_$1' => NS_PROJECT_TALK,
+ 'Immagine' => NS_FILE,
+ 'Discussioni_file' => NS_FILE_TALK,
+ 'Discussioni_immagine' => NS_FILE_TALK,
+ 'Discussioni_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Model' => NS_TEMPLATE,
+ 'Discussioni_template' => NS_TEMPLATE_TALK,
+ 'Ciciarada_Model' => NS_TEMPLATE_TALK,
+ 'Aiuto' => NS_HELP,
+ 'Aida' => NS_HELP,
+ 'Discussioni_aiuto' => NS_HELP_TALK,
+ 'Ciciarada_Aida' => NS_HELP_TALK,
+ 'Categoria' => NS_CATEGORY,
+ 'Discussioni_categoria' => NS_CATEGORY_TALK,
+ 'Ciciarada_Categoria' => NS_CATEGORY_TALK,
+);
+
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'RedirezionDubia' ),
+ 'BrokenRedirects' => array( 'RedirezionS-cepada' ),
+ 'Disambiguations' => array( 'Desambiguazion' ),
+ 'Userlogin' => array( 'VenaDenter' ),
+ 'Userlogout' => array( 'VaFö' ),
+ 'CreateAccount' => array( 'CreaCünt' ),
+ 'Preferences' => array( 'Preferenz' ),
+ 'Watchlist' => array( 'SutOeugg' ),
+ 'Recentchanges' => array( 'CambiamentRecent' ),
+ 'Upload' => array( 'CaregaSü' ),
+ 'Listfiles' => array( 'Imagin' ),
+ 'Newimages' => array( 'ImaginNöv' ),
+ 'Listusers' => array( 'Dupradur' ),
+ 'Listgrouprights' => array( 'Lista di dirit di grüp' ),
+ 'Statistics' => array( 'Statìstegh' ),
+ 'Randompage' => array( 'PaginaAzardada' ),
+ 'Lonelypages' => array( 'PaginnDaPerLur' ),
+ 'Uncategorizedpages' => array( 'PaginnMingaCategurizaa' ),
+ 'Specialpages' => array( 'PaginnSpecial' ),
+ 'Recentchangeslinked' => array( 'MudifeghCulegaa' ),
+ 'Categories' => array( 'Categurij' ),
+ 'Allmessages' => array( 'Messagg' ),
+ 'Listadmins' => array( 'ListaAministradur' ),
+);
+
+$magicWords = array(
+ 'img_right' => array( '1', 'drita', 'destra', 'right' ),
+ 'img_left' => array( '1', 'manzína', 'sinistra', 'left' ),
+ 'img_none' => array( '1', 'nissön', 'nessuno', 'none' ),
+ 'sitename' => array( '1', 'NUMSIT', 'NOMESITO', 'SITENAME' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Sutulinia i ligam',
@@ -53,6 +130,7 @@ süi titul dai sezziún (JavaScript)',
'tog-enotifusertalkpages' => "Mandem un messagg e-mail quand che gh'è di mudifegh a la mè pàgina di ciaciarad",
'tog-enotifminoredits' => 'Màndem un messagg e-mail anca per i mudifegh piscinín',
'tog-enotifrevealaddr' => "Lassa vedè 'l mè indirizz e-mail int i messagg d'avis",
+'tog-oldsig' => 'Anteprima de la firma esistenta:',
'tog-fancysig' => 'Trata la firma cume test wiki (senza nissön ligam utumatich)',
'tog-externaleditor' => "Dröva semper un prugrama da redatazión estern (dumà per espert, 'l gh'ha de besogn d'impustazión speciaj ins 'l to computer)",
'tog-externaldiff' => 'Druvá sempar un "diff" estèrnu',
@@ -67,6 +145,13 @@ süi titul dai sezziún (JavaScript)',
'underline-never' => 'Mai',
'underline-default' => 'Mantegn i impustazión standard del browser',
+# Font style option in Special:Preferences
+'editfont-style' => "Stil del font de l'area de mudifega:",
+'editfont-default' => 'Browser de default',
+'editfont-monospace' => 'Font mono-spaziaa',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Dumeniga',
'monday' => 'Lündesdí',
@@ -126,17 +211,26 @@ süi titul dai sezziún (JavaScript)',
'category-media-header' => 'File int la categuria "$1"',
'category-empty' => "''Per 'l mument quela categuria chì la gh'ha denter né de paginn ne d'archivi mültimedia''",
'hidden-categories' => '{{PLURAL:$1|Categuria scundüda|Categurij scundüü}}',
-'hidden-category-category' => 'Categurij scundüü', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categurij scundüü',
'category-subcat-count' => "{{PLURAL:$2|Quela categuria chì la gh'ha dumà una sota-categuria, missa chì de sota.|Quela categuria chì la gh'ha {{PLURAL:$1|una sota-categuria|$1 sota-categurij}} chì de sota, sü un tutal de $2.}}",
'category-subcat-count-limited' => "Quela categuria chì la gh'ha denter {{PLURAL:$1|la sut-categuria| i $1 sut-categurij}} chì abass.",
'category-article-count' => "{{PLURAL:$2|Quela categuria chì la gh'ha dumà quela pagina chì.|In quela categuria chì gh'è {{PLURAL:$1|la pagina indicada|i $1 paginn indicaa}} de $2 che gh'hinn in tutal.}}",
'category-file-count' => "{{PLURAL:$2|Quela categuria chì la gh'ha denter dumà el file chì suta|Quela categuria chì la gh'ha denter {{PLURAL:$1|'l file|$1 i file}} ripurtaa chì suta, sü un tutal de $2.}}",
'listingcontinuesabbrev' => 'cont.',
-
-'about' => 'A pruposit də',
-'article' => 'Pagina de cuntegnüü',
-'newwindow' => "(sa derviss int un'óltra finèstra)",
-'cancel' => 'Lassa perd',
+'index-category' => 'Paginn indicizaa',
+
+'about' => 'A pruposit də',
+'article' => 'Pagina de cuntegnüü',
+'newwindow' => "(sa derviss int un'óltra finèstra)",
+'cancel' => 'Lassa perd',
+'moredotdotdot' => 'Püssee',
+'mypage' => 'La mè pagina',
+'mytalk' => 'i mè discüssiun',
+'anontalk' => 'Ciciarad per quel adress IP chì',
+'navigation' => 'Navegazión',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Tröva',
'qbbrowse' => 'Sföja',
'qbedit' => 'Mudifega',
@@ -144,15 +238,35 @@ süi titul dai sezziún (JavaScript)',
'qbpageinfo' => 'Infurmazión revard a la pagina',
'qbmyoptions' => 'I mè paginn',
'qbspecialpages' => 'Paginn special',
-'moredotdotdot' => 'Püssee',
-'mypage' => 'La mè pagina',
-'mytalk' => 'i mè discüssiun',
-'anontalk' => 'Ciciarad per quel adress IP chì',
-'navigation' => 'Navegazión',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadat:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:Dumand frequent',
+
+# Vector skin
+'vector-action-addsection' => 'Giunta argument',
+'vector-action-delete' => 'Scancela',
+'vector-action-move' => 'Sposta',
+'vector-action-protect' => 'Prutegg',
+'vector-action-undelete' => 'Recüpera',
+'vector-action-unprotect' => 'Desbloca',
+'vector-namespace-category' => 'Categuria',
+'vector-namespace-help' => 'Pagina de vüt',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'File mültimedial',
+'vector-namespace-mediawiki' => 'Messagg',
+'vector-namespace-project' => 'Pagina de servizi',
+'vector-namespace-special' => 'Pagina speciala',
+'vector-namespace-talk' => 'Discüssión',
+'vector-namespace-template' => 'Mudel',
+'vector-namespace-user' => 'Pagina da dovrée',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Mudifega',
+'vector-view-history' => 'Varda la storia',
+'vector-view-view' => 'Legg',
+'vector-view-viewsource' => 'Varda el codes',
+'actions' => 'Azión',
+'namespaces' => 'Namespace',
+'variants' => 'Variant',
'errorpagetitle' => 'Erur',
'returnto' => 'Turna indré a $1.',
@@ -201,18 +315,22 @@ süi titul dai sezziún (JavaScript)',
'otherlanguages' => 'Alter lenguv',
'redirectedfrom' => '(Rimandaa da $1)',
'redirectpagesub' => 'Pagina de redirezión',
-'lastmodifiedat' => "Quela pagina chì l'è stada mudifegada l'ültima völta del $1, a $2.", # $1 date, $2 time
+'lastmodifiedat' => "Quela pagina chì l'è stada mudifegada l'ültima völta del $1, a $2.",
'viewcount' => "Quela pagina chì a l'è stada legiüda {{PLURAL:$1|una völta|$1 völta}}.",
'protectedpage' => 'Pagina prutegiüda',
'jumpto' => 'Va a:',
'jumptonavigation' => 'Navigazión',
'jumptosearch' => 'cerca',
+'view-pool-error' => "Ne rincress, ma i server a hinn bej caregaa al mument.
+Trop drovat a hinn 'dree pruvà a vardà quela pagina chì.
+Per piasè, specia un mument prima de pruà a vardà anmò quela pagina chì.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A prupòsit de {{SITENAME}}',
'aboutpage' => 'Project:A pruposit',
'copyright' => "El cuntegnüü a l'è dispunibil sota a una licenza $1.",
-'copyrightpagename' => "Dirit d'autur de {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Dirit d'autur",
'currentevents' => 'Atüalitaa',
'currentevents-url' => 'Project:Aveniment Recent',
@@ -220,8 +338,6 @@ süi titul dai sezziún (JavaScript)',
'disclaimerpage' => 'Project:Avertenz generaj',
'edithelp' => 'Manual de spiegazión',
'edithelppage' => 'Help:Scriv un articul',
-'faq' => 'FAQ',
-'faqpage' => 'Project:Dumand frequent',
'helppage' => 'Help:Contegnüü',
'mainpage' => 'Pagina principala',
'mainpage-description' => 'Pagina principala',
@@ -329,6 +445,7 @@ Tegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füd
'nav-login-createaccount' => 'Vena denter / Crea un cünt',
'loginprompt' => 'Par cunett a {{SITENAME}}, a duvii abilitá i galet.',
'userlogin' => 'Vegní denter - Creè un cünt',
+'userloginnocreate' => 'Vegn denter',
'logout' => 'Va fö',
'userlogout' => 'Và fö',
'notloggedin' => 'Te seet minga dent in del sistema',
@@ -341,21 +458,8 @@ Tegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füd
'badretype' => "I password che t'hee miss a hinn diferent.",
'userexists' => "El nom de duvrat che t'hee miss dent a l'è giamò dupraa.
Per piasè, scerniss un alter suranom.",
-'youremail' => 'E-mail',
-'username' => 'Nom dal dovrée',
-'uid' => 'ID del druvadur:',
-'prefs-memberingroups' => 'Mémber {{PLURAL:$1|del grüp|di grüp}}:',
-'yourrealname' => 'Nomm:',
-'yourlanguage' => 'Lengua:',
-'yournick' => 'Suranomm:',
-'yourgender' => 'Géner:',
-'gender-unknown' => 'Mía specifegaa',
-'gender-male' => "Mas'c",
-'gender-female' => 'Femena',
-'prefs-help-gender' => 'Upziunal: druvaa per adatà i messagg del software a segónda del gener del druvadur. Questa infurmazion chì la sarà püblica.',
-'email' => 'Indirizz de pòsta elettrònica.',
'loginerror' => "Erur in de l'andà dent in del sistema.",
-'prefs-help-email' => "L'e-mail a l'è mia obligatòri, però al permet da mandàv una ciav noeva in cas che ve la desmenteghé. A podé apó scernì da lassà entrà i alter dovrat in contat con violter senza da busogn da svelà la vosta identità.",
+'createaccounterror' => 'Se pö minga creà el cünt: $1',
'nocookiesnew' => "El cünt a l'è staa creaa, ma t'hee minga pudüü andà dent in del sistema.
{{SITENAME}} al dupra i cookies per fà andà i duvrat in del sistema.
Tì te gh'hee i cookies disabilitaa.
@@ -460,17 +564,26 @@ Cunt el test che te mandet tì te deciaret anca che, sota la tò respunsabilità
'''MANDA MINGA DEL MATERIAL CHE L'E' CUERT D'UN DIRIT D'AUTUR SENZA UTURIZAZIUN'''",
'longpagewarning' => "'''Feegh da ment''': Quela pagina chì l'è longa $1 kilobyte; gh'è di browser ch'i pudarissen vegh di fastidi a mudifegà paginn ch'i riven arent o ch'i gh'hann püssee de 32kb. Per piasè vardee se l'è pussibil fà giò la pagina in tuchet püssee piscinin.",
'protectedpagewarning' => "'''Ocio: quela pagina chì l'è stada blucaa in manéra che dumá i dupradur cunt i privilegg de sysop i pören mudificàla.'''",
-'templatesused' => 'Buete duvrade in chesta pàgina - Buett duvraat in chesta pàgina:',
+'semiprotectedpagewarning' => "'''Nota:''' Quela pagina chì l'è stada blucada in manera che dumà i druvadur registraa i pören mudifegàla.
+L'ültima vus del register l'è mustrada chì de suta per riferiment:",
+'templatesused' => '{{PLURAL:$1|Mudel|Mudej}} dopraa in quela pagina chì:',
+'templatesusedpreview' => '{{PLURAL:$1|Mudel|Mudej}} dopraa in quela pröva chì:',
'template-protected' => '(prutegiüü)',
'template-semiprotected' => '(semi-prutegiüü)',
'hiddencategories' => 'Quela pagina chì la fa part de {{PLURAL:$1|una categuria|$1 categurij}} scundüü:',
'permissionserrorstext-withaction' => "Te gh'hee minga i permiss per $2, per {{PLURAL:$1|quela resón chì |quij resón chì}}:",
+'recreate-moveddeleted-warn' => "'''Ocio: te see adree a creà turna una pagina che l'eva giamò stada scancelada.'''
+
+Cuntrulee se l'è propi el cas de cuntinuà a mudifegà 'sta pagina chì.
+Per cumudità, la lista di scancelament e di San Martìn l'è ripurtada chi de suta:",
# "Undo" feature
'undo-summary' => 'Scancelada la mudifega $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Ciciarada]])',
# History pages
'viewpagelogs' => 'Varda i register de quela pagina chì',
+'currentrev-asof' => 'Versión curenta di $1',
+'revisionasof' => 'Revisión $1',
'previousrevision' => '←Versión püssee vegia',
'nextrevision' => 'Revisión püssee növ →',
'currentrevisionlink' => 'Varda la revisión curenta',
@@ -484,8 +597,11 @@ Spiegazzion di símbul: (cur) = diferenza cun la version curenta, (ültima) = di
'histlast' => 'Püssee növ',
# Revision deletion
-'rev-delundel' => 'fa vidè/scund',
-'revdel-restore' => 'Cambia la visibilità',
+'rev-deleted-text-permission' => "Questa version de la pagina l'è stada '''scancelada'''.
+Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} register di scancelament].",
+'rev-delundel' => 'fa vidè/scund',
+'revdel-restore' => 'Cambia la visibilità',
+'revdelete-edit-reasonlist' => 'Mudifega i mutiv del scancelament',
# Merge log
'revertmerge' => 'Scancela i ünión',
@@ -503,18 +619,19 @@ Spiegazzion di símbul: (cur) = diferenza cun la version curenta, (ültima) = di
'searchresulttext' => 'Per vegh püssee infurmazión in de la ricerca interna de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|Ricerca in {{SITENAME}}]].',
'searchsubtitle' => 'Tì t\'hee cercaa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tüt i paginn che scumincen per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tüt i paginn che porten a "$1"]])',
'searchsubtitleinvalid' => 'T\'hee cercaa "$1"',
-'noexactmatch' => "'''La pagina \"\$1\" la esista no.''' L'è pussibil [[:\$1|creala adèss]].",
-'noexactmatch-nocreate' => "'''La pagina cun el titul \"\$1\" la esista no.'''",
'toomanymatches' => "Gh'è tropi curispundens. Mudifichè la richiesta.",
'notitlematches' => "La vus che t'hee ciamaa la se tröa minga intra i tituj di articuj",
'textmatches' => "Truvaa int 'l test di paginn",
'notextmatches' => "La vus che t'hee ciamaa la gh'ha minga una curispundenza in del test di paginn.",
-'prevn' => 'preçedeent $1',
-'nextn' => 'pròssim $1',
-'viewprevnext' => 'Vidé ($1) ($2) ($3).',
+'prevn' => 'precedent {{PLURAL:$1|$1}}',
+'nextn' => 'pròssim {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vidé ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Upzión de ricerca',
'searchmenu-new' => "'''Trà in pee la pagina \"[[:\$1]]\" ins quel sit chì!'''",
'searchhelp-url' => 'Help:Contegnüü',
+'searchprofile-articles' => 'Paginn de cuntegnüü',
+'searchprofile-project' => 'Paginn de jüt e de pruget',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tüt',
'searchprofile-advanced' => 'Avanzaa',
'searchprofile-articles-tooltip' => 'Cerca in $1',
@@ -539,46 +656,65 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
'powersearch-field' => 'Cerca',
# Preferences page
-'preferences' => 'Preferenz',
-'mypreferences' => 'i mè preferenz',
-'prefs-edits' => 'Quantità de mudifegh faa:',
-'changepassword' => "Mudifega la paròla d'urdin",
-'skin' => "Aspett de l'interfacia",
-'math' => 'Matem',
-'dateformat' => 'Furmaa da la data',
-'datedefault' => 'Nissüna preferenza',
-'datetime' => 'Data e urari',
-'prefs-personal' => 'Carateristich dal dupradur',
-'prefs-rc' => 'Cambiament recent',
-'prefs-watchlist' => "Paginn tegnüü d'ögg",
-'prefs-watchlist-days' => "Nümer de dì da mustrà ind i paginn da tegn d'ögg:",
-'prefs-watchlist-edits' => 'Nümer de mudifegh da mustrà cunt i fünzión avanzaa:',
-'prefs-misc' => 'Ólter',
-'saveprefs' => 'Tegn i mudifech',
-'resetprefs' => 'Trá via i mudifech',
-'restoreprefs' => 'Ristabiliss i impustazión de default',
-'textboxsize' => 'Mudifich',
-'rows' => 'Riich:',
-'columns' => 'Culònn:',
-'searchresultshead' => 'Cerca',
-'resultsperpage' => 'Resültaa pər pagina:',
-'contextlines' => 'Riich pər resültaa:',
-'contextchars' => 'Cuntèst pər riga:',
-'recentchangescount' => 'Titui in di "cambiameent reçeent":',
-'savedprefs' => 'I preferenz hinn stai salvaa.',
-'timezonelegend' => 'Lucalitaa',
-'timezonetext' => 'I uur da diferenza tra l urari lucaal e chél dal sèrver (UTC).',
-'localtime' => 'Urari lucaal',
-'timezoneoffset' => 'Diferenza¹',
-'servertime' => 'Urari dal sèrver',
-'guesstimezone' => 'Catá l urari dal sèrver',
-'allowemail' => 'Permètt ai altar üteent də cuntatamm par email',
-'prefs-searchoptions' => 'Upzión de ricerca',
-'defaultns' => 'Tröva sempar in di caamp:',
-'files' => 'Archivi',
+'preferences' => 'Preferenz',
+'mypreferences' => 'i mè preferenz',
+'prefs-edits' => 'Quantità de mudifegh faa:',
+'changepassword' => "Mudifega la paròla d'urdin",
+'prefs-skin' => "Aspett de l'interfacia",
+'prefs-math' => 'Matem',
+'datedefault' => 'Nissüna preferenza',
+'prefs-datetime' => 'Data e urari',
+'prefs-personal' => 'Carateristich dal dupradur',
+'prefs-rc' => 'Cambiament recent',
+'prefs-watchlist' => "Paginn tegnüü d'ögg",
+'prefs-watchlist-days' => "Nümer de dì da mustrà ind i paginn da tegn d'ögg:",
+'prefs-watchlist-edits' => 'Nümer de mudifegh da mustrà cunt i fünzión avanzaa:',
+'prefs-misc' => 'Ólter',
+'prefs-rendering' => 'Aparenza',
+'saveprefs' => 'Tegn i mudifech',
+'resetprefs' => 'Trá via i mudifech',
+'restoreprefs' => 'Ristabiliss i impustazión de default',
+'prefs-editing' => 'Mudifich',
+'rows' => 'Riich:',
+'columns' => 'Culònn:',
+'searchresultshead' => 'Cerca',
+'resultsperpage' => 'Resültaa pər pagina:',
+'contextlines' => 'Riich pər resültaa:',
+'contextchars' => 'Cuntèst pər riga:',
+'recentchangescount' => "Nümer de mudifegh da mustrà per ''default'':",
+'savedprefs' => 'I preferenz hinn stai salvaa.',
+'timezonelegend' => 'Lucalitaa',
+'localtime' => 'Urari lucaal',
+'timezoneoffset' => 'Diferenza¹',
+'servertime' => 'Urari dal sèrver',
+'guesstimezone' => 'Catá l urari dal sèrver',
+'allowemail' => 'Permètt ai altar üteent də cuntatamm par email',
+'prefs-searchoptions' => 'Upzión de ricerca',
+'defaultns' => 'Tröva sempar in di caamp:',
+'prefs-files' => 'Archivi',
+'prefs-emailconfirm-label' => "Cunferma de l'e-mail:",
+'youremail' => 'E-mail',
+'username' => 'Nom dal dovrée',
+'uid' => 'ID del druvadur:',
+'prefs-memberingroups' => 'Mémber {{PLURAL:$1|del grüp|di grüp}}:',
+'prefs-registration' => 'Registraa dal:',
+'yourrealname' => 'Nomm:',
+'yourlanguage' => 'Lengua:',
+'yournick' => 'Suranomm:',
+'prefs-help-signature' => "I cument ind i paginn de discüssion i gh'han de vess firmaa cun \"<nowiki>~~~~</nowiki>\" che 'l sarà pö cunvertì int la tua firma cun tacada la data e l'ura.",
+'yourgender' => 'Géner:',
+'gender-unknown' => 'Mía specifegaa',
+'gender-male' => "Mas'c",
+'gender-female' => 'Femena',
+'prefs-help-gender' => 'Upziunal: druvaa per adatà i messagg del software a segónda del gener del druvadur. Questa infurmazion chì la sarà püblica.',
+'email' => 'Indirizz de pòsta elettrònica.',
+'prefs-help-email' => "L'e-mail a l'è mia obligatòri, però al permet da mandàv una ciav noeva in cas che ve la desmenteghé. A podé apó scernì da lassà entrà i alter dovrat in contat con violter senza da busogn da svelà la vosta identità.",
+'prefs-info' => 'Infurmazion de bas',
+'prefs-i18n' => 'Internaziunalizazión',
+'prefs-advancedrendering' => 'Fünzión avanzaa',
# User rights
-'userrights' => 'Gestión di dirit di druvadur', # Not used as normal message but as header for the special page itself
+'userrights' => 'Gestión di dirit di druvadur',
'userrights-lookup-user' => 'Gestion di grüp di druvaduu',
'userrights-user-editname' => 'Butée dent un nom da dovrat',
'editusergroup' => 'Mudifega i grüp del druvadur',
@@ -620,32 +756,44 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
'action-edit' => 'mudifega quela pagina chì',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|mudifega|mudifegh}}',
-'recentchanges' => 'Cambiament recent',
-'recentchanges-legend' => 'Upzión ültem mudifegh',
-'recentchangestext' => "In quela pagina chì a gh'è i cambiament püssee recent al cuntegnüü del sit.",
-'recentchanges-feed-description' => "Quel feed chì 'l mustra i mudifegh püssee recent ai cuntegnüü de la wiki.",
-'rcnote' => "Chì de sota {{PLURAL:$1|gh'è '''1''' mudifega|a hinn i ültim '''$1''' mudifegh}} in di ültim {{PLURAL:$2|dì|'''$2''' dì}}, a partì dai $5 del $4.",
-'rclistfrom' => 'Fà vidè i cambiament növ a partì de $1',
-'rcshowhideminor' => '$1 i mudifegh piscinín',
-'rcshowhidebots' => '$1 i bot',
-'rcshowhideliu' => '$1 i dupradur cunetüü',
-'rcshowhideanons' => '$1 i dupradur anònim',
-'rcshowhidemine' => '$1 i mè mudifich',
-'rclinks' => 'Fà vedé i ültim $1 cambiament in di ültim $2 dì<br />$3',
-'diff' => 'dif',
-'hist' => 'stòria',
-'hide' => 'Scund',
-'show' => 'Famm vedè',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'b',
-'newsectionsummary' => '/* $1 */ sezión növa',
-'rc-enhanced-expand' => 'Varda i detali (al vör el JavaScript)',
-'rc-enhanced-hide' => 'Scund i detali',
+'nchanges' => '$1 {{PLURAL:$1|mudifega|mudifegh}}',
+'recentchanges' => 'Cambiament recent',
+'recentchanges-legend' => 'Upzión ültem mudifegh',
+'recentchangestext' => "In quela pagina chì a gh'è i cambiament püssee recent al cuntegnüü del sit.",
+'recentchanges-feed-description' => "Quel feed chì 'l mustra i mudifegh püssee recent ai cuntegnüü de la wiki.",
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - pagina növa',
+'recentchanges-label-newpage' => "Quela mudifega chì l'ha creaa una pagina növa",
+'recentchanges-legend-minor' => '$1 - mudifega minur',
+'recentchanges-label-minor' => "Quela chì l'è una mudifega piscinina.",
+'recentchanges-legend-bot' => "$1 - mudifega d'un bot",
+'recentchanges-label-bot' => "Quela mudifega chì l'ha fada un bot",
+'recentchanges-legend-unpatrolled' => '$1 - mudifega mia verificada',
+'recentchanges-label-unpatrolled' => "Quela mudifega chì a l'è stada mimga anmò verificada.",
+'rcnote' => "Chì de sota {{PLURAL:$1|gh'è '''1''' mudifega|a hinn i ültim '''$1''' mudifegh}} in di ültim {{PLURAL:$2|dì|'''$2''' dì}}, a partì dai $5 del $4.",
+'rcnotefrom' => "Chì de sota gh'è la lista di mudifegh de <b>$2</b> (fina a <b>$1</b>).",
+'rclistfrom' => 'Fà vidè i cambiament növ a partì de $1',
+'rcshowhideminor' => '$1 i mudifegh piscinín',
+'rcshowhidebots' => '$1 i bot',
+'rcshowhideliu' => '$1 i dupradur cunetüü',
+'rcshowhideanons' => '$1 i dupradur anònim',
+'rcshowhidemine' => '$1 i mè mudifich',
+'rclinks' => 'Fà vedé i ültim $1 cambiament in di ültim $2 dì<br />$3',
+'diff' => 'dif',
+'hist' => 'stòria',
+'hide' => 'Scund',
+'show' => 'Famm vedè',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'newsectionsummary' => '/* $1 */ sezión növa',
+'rc-enhanced-expand' => 'Varda i detali (al vör el JavaScript)',
+'rc-enhanced-hide' => 'Scund i detali',
# Recent changes linked
'recentchangeslinked' => 'Cambiament culegaa',
+'recentchangeslinked-feed' => 'Cambiament culegaa',
+'recentchangeslinked-toolbox' => 'Cambiament culegaa',
'recentchangeslinked-title' => 'Mudifegh ligaa a "$1"',
'recentchangeslinked-summary' => "Questa chì a l'è una lista di paginn faa de poch temp ai paginn culigaa a quela specifegada (o a member d'una categuria specifegada).
I paginn dent in [[Special:Watchlist|la lista ch'it ten-e sot euj]] i resten marcaa in \"grasset\"",
@@ -681,12 +829,15 @@ I paginn dent in [[Special:Watchlist|la lista ch'it ten-e sot euj]] i resten mar
'filehist-current' => 'curent',
'filehist-datetime' => 'Data/Ura',
'filehist-thumb' => 'Miniadüra',
+'filehist-thumbtext' => 'Miniadüra de la versión di $1',
'filehist-user' => 'Dovrat',
'filehist-dimensions' => 'Dimensión',
'filehist-comment' => 'Uget',
'imagelinks' => 'Ligamm al file',
'linkstoimage' => "{{PLURAL:$1|Quela pagina chì la gh'ha |$1 Quij paginn chì i gh'hann}} ligam al file:",
-'sharedupload' => "Quel archivi chì al vegn de $1 e'l pö vess dupraa da alter pruget", # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => "Quel archivi chì al vegn de $1 e'l pö vess dupraa da alter pruget",
+'sharedupload-desc-here' => "Quel ''file'' chì al vegn de $1 e 'l pö vess druvaa da alter pruget.
+La descrizión sura la sua [$2 pagina de descrizión del file] l'è mustrada chì suta.",
'uploadnewversion-linktext' => 'Carga una versión növa de quel file chì',
# File reversion
@@ -731,6 +882,7 @@ I paginn dent in [[Special:Watchlist|la lista ch'it ten-e sot euj]] i resten mar
'statistics-header-edits' => 'Statistegh di mudifegh',
'statistics-header-views' => 'Statistegh di visüalizazión',
'statistics-header-users' => 'Statistegh di druvadur',
+'statistics-header-hooks' => 'Alter statistegh',
'statistics-articles' => 'Paginn de cuntegnüü',
'statistics-pages' => 'Paginn',
'statistics-pages-desc' => 'Tüt i paginn del sit, cumpres i paginn de discüssion, i redirect, e.i.v.',
@@ -815,6 +967,9 @@ I paginn dent in [[Special:Watchlist|la lista ch'it ten-e sot euj]] i resten mar
# Special:ListUsers
'listusersfrom' => 'Fàm vedè i dupradur a partì da:',
+# Special:ActiveUsers
+'activeusers-from' => 'Fàm vedè i dupradur a partì da:',
+
# Special:Log/newusers
'newuserlogpage' => 'Rrgister di druvat növ',
'newuserlog-create-entry' => 'Druvadur növ',
@@ -856,13 +1011,36 @@ i vegnarann segnalaa chichinscì e la pagina la se vedarà cun caràter '''grev'
'changed' => 'cambiaa',
'enotif_subject' => 'La pagina $PAGETITLE de {{SITENAME}} l\'è stada $CHANGEDORCREATED da $PAGEEDITOR',
'enotif_lastvisited' => 'Varda $1 per vedè tüt i mudifegh da la tua ültema vìsita.',
+'enotif_body' => 'Cara $WATCHINGUSERNAME,
+
+La pàgina $PAGETITLE del sit {{SITENAME}} a l\'è stada $CHANGEDORCREATED del $PAGEEDITDATE da $PAGEEDITOR, varda $PAGETITLE_URL per la version curenta.
+
+$NEWPAGE
+
+Sumari de la mudifega, metüü denter da l\'autur: $PAGESUMMARY $PAGEMINOREDIT
+
+Per cuntatà l\'autur:
+per e-mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Ghe sarà pü mía de nutificazion in cas d\'una quaj oltra mudifega, a manch che te veet nò a visità la pàgina in questión.
+De surapü, te pö mudifegà l\'impustazion de l\'avis de nutifega per quij paginn che i henn ins la lista di paginn che te tegn d\'ögg.
+
+ \'L to sistema de nutifega da {{SITENAME}}
+
+--
+Per mudifegà l\'impustazión de la lista di paginn che te tegn d\'ögg, varda
+{{fullurl:Special:Watchlist/edit}}
+
+Per fà di cumünicazion de servizzi e per cercà jüt:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scancela la pagina',
'excontent' => "'l cuntegnüü l'eva: '$1'",
'excontentauthor' => "'l cuntegnüü l'eva: '$1' (e l'ünich cuntribüdur l'eva staa '[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "Inanz da vess svujaa 'l cuntegnüü l'eva: '$1'",
-'historywarning' => "Atenziún: La pagina che a sii dré a scancelá la gh'a una stòria:",
+'historywarning' => "'''Ocio!''' La pagina che a sii adree a scancelà la gh'a una stòria cun $1 {{PLURAL:$1|revisión|revisionn}}:",
'confirmdeletetext' => "A te see lì per scancelà una pagina cun tüta la sua crunulugìa.
Per piasè, dà la cunferma che te gh'hee intenzión de andà inanz cun 'l scancelament, che te see al curent di cunseguenz, e che te see adree a fàl segónd i regulament de [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Aziun cumpletada',
@@ -900,7 +1078,6 @@ L'ültima redatazziún l eva da [[User:$3|$3]] ([[User talk:$3|Discüssiún]])."
'protectexpiry' => 'Scadenza:',
'protect_expiry_invalid' => 'Scadenza pü bona',
'protect_expiry_old' => 'Scadenza giamò passada',
-'protect-unchain' => 'Desbloca i permiss de spostà i paginn',
'protect-text' => "Chì se pö vardà e müdà el nivel de prutezión de la pagina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "El tò cünt a l'ha minga la qualifega per pudè müdà el nivel de prutezión.
Quest chì a hinn i regulazión curent per la pagina '''$1''':",
@@ -919,7 +1096,7 @@ Quest chì a hinn i regulazión curent per la pagina '''$1''':",
** Edit war
** Pagina cun parecc tràfich',
'protect-edit-reasonlist' => 'Mudifega i mutiv per la prutezion',
-'protect-expiry-options' => '1 ura:1 hour,1 dì:1 day,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,per sémper:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ura:1 hour,1 dì:1 day,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,per sémper:infinite',
'restriction-type' => 'Permiss',
'restriction-level' => 'Nivel de restrizión',
'minimum-size' => 'Misüra mìnima',
@@ -951,11 +1128,15 @@ Quest chì a hinn i regulazión curent per la pagina '''$1''':",
'month' => 'A partì del mes (e quij inanz)',
'year' => "A partì de l'ann (e quij inanz)",
-'sp-contributions-newbies' => 'Fà vidè dumà i cuntribüzión di dvurat növ',
-'sp-contributions-blocklog' => 'Register di bloch',
-'sp-contributions-search' => 'Cerca i cuntribüzión',
-'sp-contributions-username' => 'Adress IP o nom druvat:',
-'sp-contributions-submit' => 'Ricerca',
+'sp-contributions-newbies' => 'Fà vidè dumà i cuntribüzión di dvurat növ',
+'sp-contributions-blocklog' => 'Register di bloch',
+'sp-contributions-deleted' => 'Cuntribüziun scancelaa',
+'sp-contributions-talk' => 'ciciarada',
+'sp-contributions-userrights' => 'Gestión di dirit di druvadur',
+'sp-contributions-blocked-notice' => "Per el mument quel druvadur chì l'è blucaa. L'ültima entrada int el register di bloch l'è repurtada chì de suta per riferiment:",
+'sp-contributions-search' => 'Cerca i cuntribüzión',
+'sp-contributions-username' => 'Adress IP o nom druvat:',
+'sp-contributions-submit' => 'Ricerca',
# What links here
'whatlinkshere' => 'Pagin che se culeghen chì',
@@ -975,6 +1156,7 @@ Quest chì a hinn i regulazión curent per la pagina '''$1''':",
# Block/unblock
'blockip' => 'Bloca el dovrat',
+'blockip-title' => "Bloca 'l druvadur",
'blockip-legend' => "Bloca 'l druvadur",
'blockiptext' => "Druvee 'l mòdul chì de suta per blucà l'acess cun dirit de scritüra a un indirizz IP specifegh o a un druvadur registraa.
El bloch gh'è de druvàl dumà per evità el vandalism e in acord cun i [[{{MediaWiki:Policy-url}}|regulament de {{SITENAME}}]].
@@ -998,7 +1180,7 @@ Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i
'ipbenableautoblock' => "Bloca in manera utumatega l'ültim indirizz IP druvaa da 'stu druvadur chì, e qualsessìa olter indirizz IP cun al qual el cerca de fà di mudifegh.",
'ipbsubmit' => 'Blòca quel druvàt chì',
'ipbother' => 'Altra dürada:',
-'ipboptions' => '2 ur:2 hours,1 dì:1 day,3 dì:3 days,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,infinii:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ur:2 hours,1 dì:1 day,3 dì:3 days,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,infinii:infinite',
'ipbotheroption' => 'Alter',
'ipbotherreason' => 'Alter resón/spiegazión',
'ipbhidename' => "Scund 'l nom del druvat dai mudifegh e da i list.",
@@ -1021,6 +1203,7 @@ Varda [[Special:IPBlockList|lista di IP blucaa]] per vidè anmò i bloch.",
'ipblocklist' => 'Adrèss IP e druvàt blucaa',
'blocklistline' => "$1, $2 l'ha blucaa $3 ($4)",
'infiniteblock' => 'per semper',
+'expiringblock' => 'el finiss el $1 a $2',
'anononlyblock' => 'dumà i anònim',
'noautoblockblock' => 'bloch utumàtich mía ativ',
'createaccountblock' => 'creazión di cünt blucada',
@@ -1059,7 +1242,7 @@ In quij cas chì, se'l var la pena, ghe sarà de spustà a man i infurmazión de
'move-watch' => "Gionta chela pagina chí ai pàgin à tegní d'œucc.",
'movepagebtn' => 'Sposta quela pagina chì',
'pagemovedsub' => "San Martin l'è bele fat!",
-'movepage-moved' => "'''\"\$1\" l'è staa muvüü a \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" l'è staa muvüü a \"\$2\"'''",
'movepage-moved-redirect' => "L'è staa creaa un redirect.",
'articleexists' => "Una pagina che la se ciama cumpagn la gh'è giamò, opüra el nom che hii scernüü al va minga ben. <br />
Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
@@ -1077,12 +1260,10 @@ Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
'export' => 'Espurtá pagin',
# Namespace 8 related
-'allmessages' => 'Tücc i messacc dal sistéma',
-'allmessagesdefault' => 'Test standard',
-'allmessagescurrent' => 'Test curent',
-'allmessagestext' => 'Chesta chí l è una lista də messácc də sistema dispunibil indal MediaWiki: namespace.',
-'allmessagesfilter' => 'Varda dumà i messacc che tegnen dent:',
-'allmessagesmodified' => 'Varda dumá i messacc mudificaa',
+'allmessages' => 'Tücc i messacc dal sistéma',
+'allmessagesdefault' => 'Test standard',
+'allmessagescurrent' => 'Test curent',
+'allmessagestext' => 'Chesta chí l è una lista də messácc də sistema dispunibil indal MediaWiki: namespace.',
# Thumbnails
'thumbnail-more' => 'Ingrandí',
@@ -1104,6 +1285,7 @@ Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
'tooltip-ca-viewsource' => "Quela pagina chì a l'è pruteta, ma te pödet vidè el sò codes surgent",
'tooltip-ca-history' => 'Versión vegg de quela pagina chì',
'tooltip-ca-protect' => 'Prutegg quela pagina chì',
+'tooltip-ca-unprotect' => 'Tö via la prutezión a questa pagina',
'tooltip-ca-delete' => 'Scancela questa pagina',
'tooltip-ca-move' => "Sposta 'sta pagina chì (cambiagh 'l titul)",
'tooltip-ca-watch' => 'Giunta quela pagina chì a la tò lista di rop che te tegnet sot ögg',
@@ -1113,6 +1295,7 @@ Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
'tooltip-search-fulltext' => 'Cerca quel test chì intra i paginn del sit',
'tooltip-p-logo' => 'Pagina principala',
'tooltip-n-mainpage' => 'Visité la pàgina principala',
+'tooltip-n-mainpage-description' => 'Visita la pagina principala',
'tooltip-n-portal' => "Descrizión del pruget, 'sè ch'a pudé fà, indè che se pö truvà i rob.",
'tooltip-n-currentevents' => "Infurmazión sura a vergòt d'atüalità.",
'tooltip-n-recentchanges' => 'Lista di ültim mudifegh a la wiki',
@@ -1194,7 +1377,7 @@ I ligam che i vegnen dopu, in sü l'istessa riga, i vegnen cónsideraa di ecezi
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Redatá chest archivi cunt un prugramari da fö',
@@ -1226,7 +1409,7 @@ Te riçevaree un mesacc cun deent un ligamm specjal; ti duvaree clicaa sül liga
'watchlisttools-raw' => 'Mudifega la lista in furmaa test',
# Special:Version
-'version' => 'Versiun', # Not used as normal message but as header for the special page itself
+'version' => 'Versiun',
# Special:FilePath
'filepath' => 'Percuurz daj archivi',
diff --git a/languages/messages/MessagesLn.php b/languages/messages/MessagesLn.php
index c25945d2..0d2637c5 100644
--- a/languages/messages/MessagesLn.php
+++ b/languages/messages/MessagesLn.php
@@ -13,6 +13,10 @@
$fallback = 'fr';
+$defaultUserOptionOverrides = array(
+ 'editfont' => 'sans-serif', # poor font support
+);
+
$linkPrefixExtension = true;
# Same as the French (bug 8485)
@@ -77,14 +81,16 @@ $messages = array(
'subcategories' => 'Ndéngé-bǎna',
'category-empty' => "''Loléngé loye ezalí na ekakola tɛ̂, loléngé-mwǎna tɛ̂ tǒ nkásá mitímediá tɛ̂.''",
-'about' => 'elɔ́kɔ elobámí',
-'article' => 'ekakoli',
-'cancel' => 'Kozóngela',
+'about' => 'elɔ́kɔ elobámí',
+'article' => 'ekakoli',
+'cancel' => 'Kozóngela',
+'mytalk' => 'Ntembe na ngáí',
+'navigation' => 'Botamboli',
+'and' => '&#32;mpé',
+
+# Cologne Blue skin
'qbedit' => 'kobalusa',
'qbspecialpages' => 'Nkásá ya ndéngé isúsu',
-'mytalk' => 'Ntembe na ngáí',
-'navigation' => 'Botamboli',
-'and' => '&#32;mpé',
'errorpagetitle' => 'Mbéba',
'tagline' => 'Artíclɛ ya {{SITENAME}}.',
@@ -189,11 +195,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'nologinlink' => 'Míkomísá yɔ̌-mɛ́i',
'gotaccount' => "Omíkomísí naíno ? '''$1'''.",
'createaccountmail' => 'na mokánda',
-'youremail' => 'Mokandá (e-mail) *',
-'username' => 'Nkómbó ya ekitoli :',
-'yourrealname' => 'nkómbó ya sɔ̂lɔ́',
-'yourlanguage' => 'Lokótá',
-'email' => 'Mokánda',
# Edit page toolbar
'bold_sample' => 'Nkomá ya mbinga',
@@ -215,7 +216,7 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'editing' => 'Kobimisela « $1 »',
'editingcomment' => 'Kokoma « $1 » (ndimbola)',
'yourtext' => 'Nkomá na yɔ̌',
-'templatesused' => 'Bimekoli na mosálá o lokásá loye :',
+'templatesused' => '{{PLURAL:$1|Emekoli esálélí|Bimekoli bisálélí}} o lonkásá óyo :',
'templatesusedpreview' => 'Bimekoli na mosálá o botáli boye :',
'template-protected' => '(na bobáteli)',
'template-semiprotected' => '(na bobáteli ya ndámbo)',
@@ -229,7 +230,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'cur' => 'sika',
'next' => 'bolɛngɛli',
'last' => 'ya nsúka',
-'deletedrev' => '[elímwísámí]',
# Revision deletion
'rev-delundel' => 'komɔ́nisa/kobomba',
@@ -240,9 +240,9 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'editundo' => 'kozóngela',
# Search results
-'prevn' => '$1 ya libosó',
-'nextn' => 'bolɛngɛli $1',
-'viewprevnext' => 'Komɔ́na ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} ya libosó',
+'nextn' => 'bolɛngɛli {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Komɔ́na ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|lokomá 1|nkomá $2}})',
'search-result-score' => 'Ntína : $1%',
'search-redirect' => '(bopengoli útá $1)',
@@ -253,12 +253,16 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
# Preferences page
'preferences' => 'Malúli',
'mypreferences' => 'Malúli ma ngáí',
-'dateformat' => 'bokomi ya mokɔlɔ',
-'datetime' => 'Mokɔlɔ mpé ntángo',
+'prefs-datetime' => 'Mokɔlɔ mpé ntángo',
'prefs-rc' => 'Mbóngwana ya nsúka',
'saveprefs' => 'kobómbisa',
'searchresultshead' => 'Boluki',
'allowemail' => 'Enable mokánda from other users',
+'youremail' => 'Mokandá (e-mail) *',
+'username' => 'Nkómbó ya ekitoli :',
+'yourrealname' => 'nkómbó ya sɔ̂lɔ́',
+'yourlanguage' => 'Lokótá',
+'email' => 'Mokánda',
# Groups
'group-sysop' => 'Bayángeli',
@@ -281,7 +285,9 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Bolandi ekangisi',
+'recentchangeslinked' => 'Bolandi ekangisi',
+'recentchangeslinked-feed' => 'Bolandi ekangisi',
+'recentchangeslinked-toolbox' => 'Bolandi ekangisi',
# Upload
'upload' => 'Kokumbisa (elilingi)',
@@ -292,7 +298,8 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'listfiles_date' => 'Mokɔlɔ',
# File description page
-'filehist' => 'Mokóló ya kásá',
+'file-anchor-link' => 'Elilingi',
+'filehist' => 'Mokóló ya kásá',
# File deletion
'filedelete-submit' => 'Kolímwisa',
@@ -386,6 +393,8 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'contributions-title' => 'Mosálá ya moto mpɔ̂ na $1',
'mycontris' => 'Nkásá nakomí',
+'sp-contributions-talk' => 'Ntembe',
+
# What links here
'whatlinkshere' => 'Ekangísí áwa',
'isredirect' => 'Lonkásá ya bopengoli',
@@ -415,25 +424,26 @@ Ezalí listɛ́ ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'import' => 'koútisa...',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Lonkásá na ngáí',
-'tooltip-pt-mytalk' => 'Lokásá ntembe la ngáí',
-'tooltip-pt-preferences' => 'Malúli ma ngáí',
-'tooltip-pt-watchlist' => 'Nkásá nalandí mpɔ̂ na mbóngwana',
-'tooltip-pt-mycontris' => 'Nkásá nakomí',
-'tooltip-pt-logout' => 'Ombémbóí',
-'tooltip-ca-move' => 'Kobóngola nkómbó ya lonkásá óyo',
-'tooltip-ca-watch' => 'Kobakisa na nkásá olandaka',
-'tooltip-ca-unwatch' => 'Kolongola na nkásá olandaka',
-'tooltip-search' => 'Boluki {{SITENAME}}',
-'tooltip-search-go' => 'Kokɛndɛ na lonkásá na nkómbó óyo sɔ́kí ezalí',
-'tooltip-search-fulltext' => 'Koluka nkásá na nkomá yangó.',
-'tooltip-p-logo' => 'Lokásá ya libosó',
-'tooltip-n-mainpage' => 'Kokɛndɛ na Lonkásá ya libosó',
-'tooltip-n-portal' => "etalí ''projet'' óyo",
-'tooltip-n-randompage' => 'Tómbisa lonkásá na mbɛsɛ',
-'tooltip-n-help' => 'Lisálisi',
-'tooltip-ca-nstab-template' => 'Komɔ́nisela emekoli',
-'tooltip-ca-nstab-category' => 'Komɔ́nisela lonkásá ya katégori',
+'tooltip-pt-userpage' => 'Lonkásá na ngáí',
+'tooltip-pt-mytalk' => 'Lokásá ntembe la ngáí',
+'tooltip-pt-preferences' => 'Malúli ma ngáí',
+'tooltip-pt-watchlist' => 'Nkásá nalandí mpɔ̂ na mbóngwana',
+'tooltip-pt-mycontris' => 'Nkásá nakomí',
+'tooltip-pt-logout' => 'Ombémbóí',
+'tooltip-ca-move' => 'Kobóngola nkómbó ya lonkásá óyo',
+'tooltip-ca-watch' => 'Kobakisa na nkásá olandaka',
+'tooltip-ca-unwatch' => 'Kolongola na nkásá olandaka',
+'tooltip-search' => 'Boluki {{SITENAME}}',
+'tooltip-search-go' => 'Kokɛndɛ na lonkásá na nkómbó óyo sɔ́kí ezalí',
+'tooltip-search-fulltext' => 'Koluka nkásá na nkomá yangó.',
+'tooltip-p-logo' => 'Lokásá ya libosó',
+'tooltip-n-mainpage' => 'Kokɛndɛ na Lonkásá ya libosó',
+'tooltip-n-mainpage-description' => 'Kokɛndɛ na lonkásá ya libosó',
+'tooltip-n-portal' => "etalí ''projet'' óyo",
+'tooltip-n-randompage' => 'Tómbisa lonkásá na mbɛsɛ',
+'tooltip-n-help' => 'Lisálisi',
+'tooltip-ca-nstab-template' => 'Komɔ́nisela emekoli',
+'tooltip-ca-nstab-category' => 'Komɔ́nisela lonkásá ya katégori',
# Browsing diffs
'previousdiff' => '← diff ya libosó',
diff --git a/languages/messages/MessagesLo.php b/languages/messages/MessagesLo.php
index 827b8c82..88c78d3c 100644
--- a/languages/messages/MessagesLo.php
+++ b/languages/messages/MessagesLo.php
@@ -199,28 +199,30 @@ $messages = array(
'category-media-header' => 'ໜ້າຕ່າງ າ ໃນ "$1"',
'category-empty' => "''ບໍ່ມີໜ້າໃດຢູ່ໃນໝວດນີ້''",
'hidden-categories' => '{{PLURAL:$1|ໜວດເຊື່ອງ|ໜວດເຊື່ອງ}}',
-'hidden-category-category' => 'ບັນດາໜວດເຊື່ອງ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'ບັນດາໜວດເຊື່ອງ',
'category-subcat-count-limited' => 'ໜວດນີ້ ມີ ໜວດຍ່ອຍ ດັ່ງຕໍ່ໄປນີ້ {{PLURAL:$1|ໜວດຍ່ອຍ|$1 ໜວດຍ່ອຍ}}.',
'category-article-count' => '{{PLURAL:$2|ໝວດນີ້ມີໜ້າຢູ່ພຽງໜ້າດຽວ|ມີ {{PLURAL:$1|ໜ້າດຽວ|$1 ໜ້າ}} ໃນໝວດນີ້ ເຕັມ $2}}',
'listingcontinuesabbrev' => 'ຕໍ່.',
'mainpagetext' => "'''ຕິດຕັ້ງມີເດຍວິກິນີ້ສຳເລັດແລ້ວ.'''",
-'about' => 'ກ່ຽວກັບ',
-'article' => 'ບົດຄວາມ',
-'newwindow' => '(ເປີດເປັນ ປ່ອງຢ້ຽມ(ວິນໂດ)ໃໝ່ )',
-'cancel' => 'ລົບລ້າງ',
+'about' => 'ກ່ຽວກັບ',
+'article' => 'ບົດຄວາມ',
+'newwindow' => '(ເປີດເປັນ ປ່ອງຢ້ຽມ(ວິນໂດ)ໃໝ່ )',
+'cancel' => 'ລົບລ້າງ',
+'moredotdotdot' => 'ຕື່ມ...',
+'mypage' => 'ໜ້າຂ້ອຍ',
+'mytalk' => 'ສົນທະນາ',
+'anontalk' => 'ສົນທະນາ ສຳຫຼັບ IP ນີ້',
+'navigation' => 'ນຳທິດ',
+'and' => '&#32;ແລະ',
+
+# Cologne Blue skin
'qbfind' => 'ຊອກຫາ',
'qbedit' => 'ດັດແກ້',
'qbpageoptions' => 'ໜ້ານີ້',
'qbmyoptions' => 'ໝ້າຂ້ອຍ',
'qbspecialpages' => 'ໜ້າພິເສດ',
-'moredotdotdot' => 'ຕື່ມ...',
-'mypage' => 'ໜ້າຂ້ອຍ',
-'mytalk' => 'ສົນທະນາ',
-'anontalk' => 'ສົນທະນາ ສຳຫຼັບ IP ນີ້',
-'navigation' => 'ນຳທິດ',
-'and' => '&#32;ແລະ',
'errorpagetitle' => 'ຜິດພາດ',
'returnto' => 'ກັບໄປ $1.',
@@ -264,7 +266,7 @@ $messages = array(
'otherlanguages' => 'ເປັນພາສາອື່ນໆ',
'redirectedfrom' => '(ໂອນມາຈາກ $1)',
'redirectpagesub' => 'ໜ້າໂອນ',
-'lastmodifiedat' => 'ໜ້ານີ້ຖຶກດັດແກ້ຫຼ້າສຸດ $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'ໜ້ານີ້ຖຶກດັດແກ້ຫຼ້າສຸດ $2, $1.',
'viewcount' => 'ໜ້ານີ້ຖືກເຂົ້າເບິ່ງ {{PLURAL:$1|ເທື່ອໜຶ່ງ|$1 ເທື່ອ}}.',
'protectedpage' => 'ໜ້າຖືກປົກປ້ອງ',
'jumpto' => 'ໄປຫາ:',
@@ -332,9 +334,6 @@ $messages = array(
# General errors
'databaseerror' => 'ມີຄວາມຜິດພາດ ດ້ານ ຖານຂໍ້ມູນ',
-'noconnect' => 'ຂໍອະໄພ! ວິກີ ພວມປະສົບບັນຫາ ທາງດ້ານເຕັກນິກ ແລະ ບໍ່ສາມາດເຂົ້າຫາ ຖານຂໍ້ມູນ.<br />$1',
-'nodb' => 'ບໍ່ສາມາດເລືອກຖານຂໍ້ມູນ $1',
-'cachederror' => 'ທາງລຸ່ມນີ້ ແມ່ນ ບັນທຶກຂໍ້ມູນ ຂອງ ໜ້າທີ່ທ່ານຊອກຫາ ເຊິ່ງອາດຈະບໍ່ແມ່ນສະບັບຫຼ້າສຸດ.',
'readonly' => 'ຖານຂໍ້ມູນຖືກລອັກ',
'enterlockreason' => 'ກະລຸນາຂຽນເຫດຜົນໃນການລອັກ, ລວມທັງ ປະມານເວລາທີ່ຈະປົດລອັກ',
'missingarticle-diff' => '(ສ່ວນຕ່າງ: $1, $2)',
@@ -347,7 +346,6 @@ $messages = array(
'namespaceprotected' => "ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດ ໃຫ້ ດັດແກ້ ໜ້າ ໃນ '''$1'''.",
# Login and logout pages
-'logouttitle' => 'ຜູ້ໃຊ້ ເຊັນອອກ',
'logouttext' => "'''ທ່່ານ ໄດ້ ເຊັນອອກແລ້ວ.'''
ທ່ານ ສາມາດສືບຕໍ່ໃຊ້ {{SITENAME}} ແບບບໍ່ສະແດງຊື່, ຫຼື ທ່ານ ສາມາດ ເຊັນເຂົ້າ ອີກ ໂດຍ ຊື່ຜູ້ໃຊ້ ເກົ່າ ຫຼື ໃໝ່ ກໍ່ໄດ້.
@@ -355,7 +353,6 @@ $messages = array(
'welcomecreation' => '== ຍິນດີຕ້ອນຮັບ, $1! ==
ບັນຊີ ຂອງທ່ານ ຖືກສ້າງຂຶ້ນແລ້ວ. ຢ່າລືມ ຕັ້ງຄ່າ ທ່ານ ຢູ່ {{SITENAME}}.',
-'loginpagetitle' => 'ຜູ້ໃຊ້ ເຊັນເຂົ້າ',
'yourname' => 'ຊື່ຜູ້ໃຊ້',
'yourpassword' => 'ລະຫັດຜ່ານ',
'yourpasswordagain' => 'ພິມລະຫັດຜ່ານອີກ',
@@ -374,15 +371,7 @@ $messages = array(
'gotaccountlink' => 'ເຊັນເຂົ້າ',
'createaccountmail' => 'ໂດຍ ອີເມລ',
'badretype' => 'ລະຫັດຜ່ານ ທີ່ ທ່ານພິມຄືນ ບໍ່ຖືກກັບ ທີ່ພິມກ່ອນ.',
-'youremail' => 'ອີເມລ *:',
-'username' => 'ຊື່ຜູ້ໃຊ້:',
-'uid' => 'ເລກປະຈຳໂຕຜູ້ໃຊ້:',
-'yourrealname' => 'ຊື່ແທ້ *:',
-'yourlanguage' => 'ພາສາ:',
-'yournick' => 'ຊື່ຫຼິ້ນ:',
-'email' => 'ອີເມລ',
'loginerror' => 'ມີບັນຫາໃນການເຊັນເຂົ້າ',
-'prefs-help-email' => '* ອີເມລ (ເລືອກໄດ້): ໃຫ້ຜູ້ອື່ນ ສາມາດຕິດຕໍ່ຫາ ທ່ານ ຜ່ານ ໜ້າຜູ້ໃຊ້ ຫຼື ໜ້າສົນທະນາຜູ້ໃຊ້ ຂອງ ທ່ານ ໂດຍ ບໍ່ຈຳເປັນຕ້ອງ ເປີດເຜີຍ ອີເມລຂອງທ່ານ.',
'loginsuccesstitle' => 'ເຊັນເຂົ້າສຳເລັດ',
'loginsuccess' => "'''ທ່ານ ເຊັນເຂົ້າ {{SITENAME}} ໃນນາມ \"\$1\".'''",
'wrongpassword' => 'ລະຫັດຜ່ານບໍ່ຖືກ. ກະລຸນາເຮັດຄືນໃໝ່.',
@@ -430,7 +419,6 @@ $messages = array(
'blockededitsource' => "ເນື້ອໃນ ຂອງ '''ການດັດແປງໂດຍທ່ານ '''ຕໍ່ກັບ '''$1''' ມີດັ່ງລຸ່ມນີ້:",
'whitelistedittitle' => 'ຕ້ອງເຊັນເຂົ້າ ຈຶ່ງຈະສາມາດດັດແກ້ໄດ້',
'whitelistedittext' => 'ທ່ານ ຈະຕ້ອງ $1 ເພື່ອ ຈະດັດແກ້.',
-'confirmedittitle' => 'ຕ້ອງຢືນຢັນ ທີ່ຢູ່ ອີເມລ ຈຶ່ງຈະສາມາດ ດັດແກ້',
'loginreqtitle' => 'ຈຳເປັນຕ້ອງ ເຊັນເຂົ້າ',
'loginreqlink' => 'ເຊັນເຂົ້າ',
'accmailtitle' => 'ໄດ້ສົ່ງ ລະຫັດຜ່ານ ໄປແລ້ວ.',
@@ -498,10 +486,9 @@ $messages = array(
# Search results
'searchresulttext' => 'ສຳຫຼັບ ຂໍ້ມູນເພີ່ມເຕີມ ກ່ຽວກັບ ການຊອກຫາ ຢູ່ {{SITENAME}}, ກະລຸນາເບິ່ງ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "ທ່ານ ຊອກຫາ '''[[:$1]]'''",
-'noexactmatch' => "'''ຍັງບໍ່ມີໜ້າ ຊື່ວ່າ \"\$1\".''' ທ່ານ ສາມາດ [[:\$1|ສ້າງໜ້ານີ້ໄດ້]].",
-'prevn' => '$1 ກ່ອນໜ້າ',
-'nextn' => '$1 ຕໍ່ໄປ',
-'viewprevnext' => 'ເບິ່ງ ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} ກ່ອນໜ້າ',
+'nextn' => '{{PLURAL:$1|$1}} ຕໍ່ໄປ',
+'viewprevnext' => 'ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:ເນື້ອໃນ',
'search-result-size' => '$1 ({{PLURAL:$2|1 ຄຳ|$2 ຄຳ}})',
'search-result-score' => 'ຄວາມກ່ຽວຂ້ອງ: $1%',
@@ -514,7 +501,6 @@ $messages = array(
'searchall' => 'ທັງໜົດ',
'showingresults' => "ສະແດງທາງລຸ່ມ ຮອດ {{PLURAL:$1|'''1''' ຜົນ|'''$1''' ຜົນ}} ເລີ່ມຈາກ #'''$2'''.",
'showingresultsnum' => "ສະແດງທາງລຸ່ມ {{PLURAL:$3|'''1''' ຜົນ|'''$3''' ຜົນ}} ເລີ່ມຈາກ #'''$2'''.",
-'showingresultstotal' => "ສະແດງທາງລຸ່ມ {{PLURAL:$4|ຜົນ '''$1''' of '''$3'''|ຜົນ '''$1 - $2''' of '''$3'''}}",
'nonefound' => "'''ໜາຍເຫດ''': ຈະຄົ້ນຫາແຕ່ໃນ ບາງຂອບເຂດຊື່ ຖ້າບໍ່ມີການຕັ້ງຄ່າ.
ທົດລອງ ໃຊ້ຄຳນຳໝ້າ ''all:'' ໃນຂໍ້ຄວາມຊອກຫາ ຂອງ ທ່ານ ເພື່ອ ຄົ້ນຫາ ທຸກໆເນື້ອໃນ (ລວມທັງໝ້າສົນທະນາ, ແມ່ແບບ ແລະອື່ນໆ), ຫຼື ໃຊ້ ຂອບເຂດຊື່ໃດໝຶ່ງເປັນ ຄຳນຳໝ້າເລີຍ.",
'powersearch' => 'ຊອກຫາ',
@@ -524,13 +510,11 @@ $messages = array(
'mypreferences' => 'ຕັ້ງຄ່າ',
'prefs-edits' => 'ຈຳນວນການດັດແກ້:',
'changepassword' => 'ປ່ຽນລະຫັດຜ່ານ',
-'skin' => 'ລວດລາຍ',
+'prefs-skin' => 'ລວດລາຍ',
'skin-preview' => 'ລອງເບິ່ງ',
-'math' => 'ຄະນິດສາດ',
-'dateformat' => 'ແບບວັນເດືອນປີ',
+'prefs-math' => 'ຄະນິດສາດ',
'datedefault' => 'ແນວໃດກໍ່ໄດ້',
-'datetime' => 'ວັນ ແລະ ເວລາ',
-'math_syntax_error' => 'ຜິດຫຼັກໄວຍະກອນ',
+'prefs-datetime' => 'ວັນ ແລະ ເວລາ',
'prefs-personal' => 'ຂໍ້ມູນຫຼັກຜູ້ໃຊ້',
'prefs-rc' => 'ການດັດແກ້ຫຼ້າສຸດ',
'prefs-watchlist' => 'ລາຍການຕິດຕາມ',
@@ -539,7 +523,7 @@ $messages = array(
'prefs-misc' => 'ແລະອື່ນໆ',
'saveprefs' => 'ບັນທຶກ',
'resetprefs' => 'ເລີ່ມຄືນໃໝ່',
-'textboxsize' => 'ການດັດແກ້',
+'prefs-editing' => 'ການດັດແກ້',
'rows' => 'ແຖວ:',
'columns' => 'ຖັນ:',
'searchresultshead' => 'ຊອກຫາ',
@@ -549,14 +533,21 @@ $messages = array(
'recentchangescount' => 'ຈຳນວນການດັດແກ້ສະແດງໃນການປ່ຽນແປງຫຼ້າສຸດ:',
'savedprefs' => 'ການຕັ້ງຄ່າຂອງທ່ານໄດ້ຖືກບັນທຶກແລ້ວ.',
'timezonelegend' => 'ເຂດເວລາ',
-'timezonetext' => 'ຈຳນວນຊົ່ວໂມງແຕກຕ່າງ ລະຫວ່າງເວລາທ້ອງຖິ່ນ ແລະ ເວລາ ຂອງ ເຊີບເວີ (UTC).',
'localtime' => 'ເວລາທ້ອງຖິ່ນ',
'timezoneoffset' => 'ຫ່າງກັນ¹',
'servertime' => 'ເວລາເຊີເວີ',
'guesstimezone' => 'ເອົາເວລາຈາກໂປຣແກຣມທ່ອງເວັບ',
'allowemail' => 'ອະນຸຍາດ ໃຫ້ຜູ້ໃຊ້ອື່ນ ສົ່ງອີເມລຫາຂ້ອຍ',
'defaultns' => 'ຄົ້ນຫາ ໃນ ຂອບເຂດຊື່ ນີ້ ເວລາບໍ່ມີການລະບຸ:',
-'files' => 'ໄຟລ໌',
+'prefs-files' => 'ໄຟລ໌',
+'youremail' => 'ອີເມລ *:',
+'username' => 'ຊື່ຜູ້ໃຊ້:',
+'uid' => 'ເລກປະຈຳໂຕຜູ້ໃຊ້:',
+'yourrealname' => 'ຊື່ແທ້ *:',
+'yourlanguage' => 'ພາສາ:',
+'yournick' => 'ຊື່ຫຼິ້ນ:',
+'email' => 'ອີເມລ',
+'prefs-help-email' => '* ອີເມລ (ເລືອກໄດ້): ໃຫ້ຜູ້ອື່ນ ສາມາດຕິດຕໍ່ຫາ ທ່ານ ຜ່ານ ໜ້າຜູ້ໃຊ້ ຫຼື ໜ້າສົນທະນາຜູ້ໃຊ້ ຂອງ ທ່ານ ໂດຍ ບໍ່ຈຳເປັນຕ້ອງ ເປີດເຜີຍ ອີເມລຂອງທ່ານ.',
# User rights
'editinguser' => 'ຜູ້ໃຊ້ <b>$1</b> ພວມດັດແກ້ ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])',
@@ -583,6 +574,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'ການດັດແກ້ທີ່ກ່ຽວຂ້ອງ',
+'recentchangeslinked-feed' => 'ການດັດແກ້ທີ່ກ່ຽວຂ້ອງ',
+'recentchangeslinked-toolbox' => 'ການດັດແກ້ທີ່ກ່ຽວຂ້ອງ',
'recentchangeslinked-title' => 'ການປ່ຽນແປງກ່ຽວຂ້ອງກັບ "$1"',
'recentchangeslinked-noresult' => 'ບໍ່ມີການປ່ຽນແປງຢູ່ໜ້າລິ້ງຄ໌ໃນໄລຍະດັ່ງກ່າວ.',
@@ -601,6 +594,7 @@ $messages = array(
'listfiles' => 'ລາຍຊື່ໄຟລ໌',
# File description page
+'file-anchor-link' => 'ໄຟລ໌',
'filehist' => 'ປະຫວັດໄຟລ໌',
'filehist-current' => 'ປະຈຸບັນ',
'filehist-datetime' => 'ວັນເວລາ',
@@ -611,9 +605,7 @@ $messages = array(
'imagelinks' => 'ລິ້ງຄ໌',
'linkstoimage' => 'ລິ້ງຄ໌ຕໍ່ໄປນີ້ເຊື່ອມຕໍ່ຫາໄຟລ໌:',
'nolinkstoimage' => 'ບໍ່ມີໜ້າໃດ ລິ້ງຄ໌ ຫາ ໄຟລ໌ນີ້.',
-'sharedupload' => 'ໄຟລ໌ນີ້ແມ່ນການອັບໂຫຼດຣ່ວມ ແລະ ອາດຖືກໃຊ້ໂດຍໂຄງການອື່ນໆ.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'ຍັງບໍ່ມີ ໄຟລ໌ຊື່ນີ້ ເທື່ອ, ທ່ານ ສາມາດ $1.',
-'noimage-linktext' => 'ອັບໂຫຼດມັນ',
+'sharedupload' => 'ໄຟລ໌ນີ້ແມ່ນການອັບໂຫຼດຣ່ວມ ແລະ ອາດຖືກໃຊ້ໂດຍໂຄງການອື່ນໆ.',
# List redirects
'listredirects' => 'ລາຍການການໂອນໜ້າ',
@@ -639,8 +631,8 @@ $messages = array(
'brokenredirects' => 'ການໂອນບໍ່ມີໜ້າປາຍທາງ',
'brokenredirectstext' => 'ການໂອນໜ້ານີ້ ເຊື່ອມຕໍ່ໄປຫາໜ້າ ທີ່ ຍັງບໍ່ມີເທື່ອ:',
-'brokenredirects-edit' => '(ດັດແກ້)',
-'brokenredirects-delete' => '(ລຶບ)',
+'brokenredirects-edit' => 'ດັດແກ້',
+'brokenredirects-delete' => 'ລຶບ',
'withoutinterwiki' => 'ບັນດາໜ້າ ທີ່ບໍ່ມີລິ້ງຄ໌ ຫາ ສະບັບພາສາອື່ນ',
'withoutinterwiki-summary' => 'ໜ້າ ຕໍ່ໄປນີ້ ບໍ່ມີ ລິ້ງຄ໌ ຫາ ບົດຄວາມສະບັບພາສາອື່ນໆ:',
@@ -802,13 +794,14 @@ $messages = array(
'contributions' => 'ການປະກອບສ່ວນ',
'mycontris' => 'ປະກອບສ່ວນ',
'contribsub2' => 'ສຳຫຼັບ $1 ($2)',
-'nocontribs' => 'ຍັງບໍ່ມີການປ່ຽນແປງ ໃນນີ້.', # Optional parameter: $1 is the user name
+'nocontribs' => 'ຍັງບໍ່ມີການປ່ຽນແປງ ໃນນີ້.',
'uctop' => '(ເທິງສຸດ)',
'month' => 'ແຕ່ເດືອນ (ແລະກ່ອນໜ້ານັ້ນ):',
'year' => 'ແຕ່ປີ (ແລະກ່ອນໜ້ານັ້ນ):',
'sp-contributions-newbies' => 'ສະແດງສະເພາະ ການປະກອບສ່ວນ ໂດຍ ບັນຊີໃໝ່',
'sp-contributions-blocklog' => 'ບັນທຶກການຫ້າມ',
+'sp-contributions-talk' => 'ສົນທະນາ',
'sp-contributions-search' => 'ຊອກຫາ ການປະກອບສ່ວນ',
'sp-contributions-username' => 'ທີ່ຢູ່ IP ຫຼື ຊື່ຜູ້ໃຊ້:',
'sp-contributions-submit' => 'ຊອກຫາ',
@@ -860,11 +853,10 @@ $messages = array(
'delete_and_move_reason' => 'ລຶບແລ້ວ ເພື່ອ ຍ້າຍໜ້າອື່ນ ມານີ້',
# Namespace 8 related
-'allmessages' => 'ຂໍ້ຄວາມ ຂອງ ລະບົບ',
-'allmessagesname' => 'ຊື່',
-'allmessagesdefault' => 'ຂໍ້ຄວາມເດີມ',
-'allmessagescurrent' => 'ຂໍ້ຄວາມປະຈຸບັນ',
-'allmessagesmodified' => 'ສະແດງແຕ່ອັນທີ່ຖືກດັດແປງ',
+'allmessages' => 'ຂໍ້ຄວາມ ຂອງ ລະບົບ',
+'allmessagesname' => 'ຊື່',
+'allmessagesdefault' => 'ຂໍ້ຄວາມເດີມ',
+'allmessagescurrent' => 'ຂໍ້ຄວາມປະຈຸບັນ',
# Thumbnails
'thumbnail-more' => 'ໃຫ້ໃຫຍ່ຂຶ້ນ',
@@ -916,6 +908,9 @@ $messages = array(
# Info page
'numedits' => 'ຈຳນວນດັດແກ້ (ໜ້າ): $1',
+# Math errors
+'math_syntax_error' => 'ຜິດຫຼັກໄວຍະກອນ',
+
# Browsing diffs
'previousdiff' => 'ສ່ວນຕ່າງກ່ອນ',
'nextdiff' => 'ສ່ວນຕ່າງຕໍ່ໄປ →',
@@ -999,7 +994,7 @@ $messages = array(
'watchlisttools-edit' => 'ເບິ່ງ ແລະ ດັດແກ້ ລາຍການຕິດຕາມ',
# Special:Version
-'version' => 'ສະບັບ', # Not used as normal message but as header for the special page itself
+'version' => 'ສະບັບ',
# Special:FilePath
'filepath' => 'ທາງໄປຫາໄຟລ໌',
diff --git a/languages/messages/MessagesLoz.php b/languages/messages/MessagesLoz.php
index c1d78658..3d1bf7d4 100644
--- a/languages/messages/MessagesLoz.php
+++ b/languages/messages/MessagesLoz.php
@@ -110,10 +110,18 @@ $messages = array(
'category-empty' => "''Wo kattegori cwale fumile ishi petulo nji media.''",
'listingcontinuesabbrev' => 'kepoli',
-'about' => "Ngesi ye ng'i atulile",
-'article' => 'Petulo',
-'newwindow' => '(apuzi kwa nca windo)',
-'cancel' => 'Ngambu',
+'about' => "Ngesi ye ng'i atulile",
+'article' => 'Petulo',
+'newwindow' => '(apuzi kwa nca windo)',
+'cancel' => 'Ngambu',
+'moredotdotdot' => 'Ye plus...',
+'mypage' => 'Zwa petulo',
+'mytalk' => 'Zwa bulelezi',
+'anontalk' => 'Bulelezi di bye IP',
+'navigation' => 'Muya',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Fatukile',
'qbbrowse' => 'Nepile',
'qbedit' => "Hloli ye ng'i",
@@ -121,15 +129,8 @@ $messages = array(
'qbpageinfo' => 'Petulo tuto',
'qbmyoptions' => 'Zwa petulona',
'qbspecialpages' => 'Petulo zwenti',
-'moredotdotdot' => 'Ye plus...',
-'mypage' => 'Zwa petulo',
-'mytalk' => 'Zwa bulelezi',
-'anontalk' => 'Bulelezi di bye IP',
-'navigation' => 'Muya',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Meta ngesi:',
+'faq' => 'Alabile',
+'faqpage' => 'Project:Alabile',
'errorpagetitle' => 'Bufosi',
'returnto' => 'Kutezi $1.',
@@ -177,7 +178,7 @@ $messages = array(
'otherlanguages' => 'Silozi kibuzi',
'redirectedfrom' => '(Petulo abezi di $1)',
'redirectpagesub' => 'Petulo abezi',
-'lastmodifiedat' => 'Bye petulo sa petuhisize di lila kwa $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Bye petulo sa petuhisize di lila kwa $2, $1.',
'viewcount' => 'Bye petulo sa akusi {{PLURAL:$1|1×|$1×}}.',
'protectedpage' => 'Petulo bukelezi',
'jumpto' => 'Yezi:',
@@ -188,7 +189,6 @@ $messages = array(
'aboutsite' => "Ngesi ye ng'i atulile {{SITENAME}}",
'aboutpage' => "Project:Ngesi ye ng'i atulile",
'copyright' => 'Bye sa ilonungi di $1.',
-'copyrightpagename' => "{{SITENAME}} copyright ng'i",
'copyrightpage' => "{{ns:project}}:Copyright ng'i",
'currentevents' => 'Muembatami',
'currentevents-url' => 'Project:Muembatami',
@@ -196,8 +196,6 @@ $messages = array(
'disclaimerpage' => 'Project:Dikulemi generali',
'edithelp' => "Hloli ye ng'i",
'edithelppage' => "Help:Hloli ye ng'i",
-'faq' => 'Alabile',
-'faqpage' => 'Project:Alabile',
'helppage' => 'Help:Buinaneli di petulo',
'mainpage' => 'Petulo yem efro',
'mainpage-description' => 'Petulo yem efro',
@@ -255,7 +253,6 @@ $messages = array(
# General errors
'error' => 'Bufosi',
'databaseerror' => 'Bufosi di database',
-'nodb' => 'Ni sa selektisize databesi $1',
'readonly' => 'Databesi sa loko',
'internalerror' => 'Interni bufosi',
'internalerror_info' => 'Interni bufosi: $1',
@@ -278,66 +275,53 @@ Query: $2",
'sqlhidden' => '(SQL query sa cwankekile)',
# Login and logout pages
-'logouttitle' => 'Sebelu ile',
-'loginpagetitle' => 'Sebelu menuhile',
-'yourname' => 'Sebelu:',
-'yourpassword' => 'Sebu dafi:',
-'yourpasswordagain' => 'Ritapi sebu dafi:',
-'remembermypassword' => 'Askevusize zwa menuhile kwa bye kompyuta.',
-'yourdomainname' => 'Zwa domeni:',
-'login' => 'Menuhile',
-'nav-login-createaccount' => 'Menuhile / ipupezi sebelu',
-'loginprompt' => 'A sa nyembulisize di kukina di menuhile kwa {{SITENAME}}.',
-'userlogin' => 'Menuhile / ipupezi sebelu',
-'logout' => 'Ile',
-'userlogout' => 'Ile',
-'notloggedin' => 'Ile sa akwezi',
-'nologin' => "Ni menuhile? '''$1'''.",
-'nologinlink' => 'Ipupezi sebelu',
-'createaccount' => 'Ipupezi sebelu',
-'gotaccount' => "Xete a sa sebelu? '''$1'''.",
-'gotaccountlink' => 'Menuhile',
-'createaccountmail' => 'dimeli',
-'badretype' => 'Sebu dafi ni sa identikali.',
-'userexists' => 'Sebu di sebelu sa sebelize. Hloli veti sebu petuho.',
-'youremail' => 'Imeli:',
-'username' => 'Sebelu:',
-'uid' => 'Sebelu ID:',
-'yourrealname' => 'Sebu monida:',
-'yourlanguage' => 'Siselect:',
-'yourvariant' => 'Pane:',
-'yournick' => 'Kamukile di sebelu printezi:',
-'badsig' => 'Ro sebu di sebelu con xete data bufosi; kamukile HTML tegina.',
-'email' => 'Imeli',
-'prefs-help-realname' => 'Nom sa opsi e a sa kisize providisize sa tekini atribusi di zwa selt.',
-'loginerror' => 'Bufosi di menuhile',
-'prefs-help-email-required' => 'Adressi di meli sa nidyisize.',
-'nocookieslogin' => '{{SITENAME}} sebelize kukina di menuhile sebelu. A ni sa kukina. Sa kukina.',
-'noname' => 'A sa sebelu consa sebelu bufosi.',
-'loginsuccesstitle' => 'Menuhile ni condi bufosi',
-'loginsuccess' => "'''A sa menuhile di {{SITENAME}} con sebelu \"\$1\".'''",
-'nosuchuser' => 'No sebelu "$1". Tembile/ipupezi.',
-'nosuchusershort' => 'No sebelu "<nowiki>$1</nowiki>". Tembile.',
-'nouserspecified' => 'A tumbelezi sebelunom.',
-'wrongpassword' => 'Bufosi sebu dafi. Tembile.',
-'wrongpasswordempty' => 'No sebu dafi. Tembile.',
-'passwordtooshort' => 'Zwa sebu dafi sa bufosi/kuswani. A sa $1 di selt e petuho di zwa sebelunom.',
-'mailmypassword' => 'Meli sebu dafi',
-'passwordremindertitle' => 'Nca sebu dafi temporali di {{SITENAME}}',
-'passwordremindertext' => 'Ku (sa a, dIP $1)
+'yourname' => 'Sebelu:',
+'yourpassword' => 'Sebu dafi:',
+'yourpasswordagain' => 'Ritapi sebu dafi:',
+'remembermypassword' => 'Askevusize zwa menuhile kwa bye kompyuta.',
+'yourdomainname' => 'Zwa domeni:',
+'login' => 'Menuhile',
+'nav-login-createaccount' => 'Menuhile / ipupezi sebelu',
+'loginprompt' => 'A sa nyembulisize di kukina di menuhile kwa {{SITENAME}}.',
+'userlogin' => 'Menuhile / ipupezi sebelu',
+'logout' => 'Ile',
+'userlogout' => 'Ile',
+'notloggedin' => 'Ile sa akwezi',
+'nologin' => "Ni menuhile? '''$1'''.",
+'nologinlink' => 'Ipupezi sebelu',
+'createaccount' => 'Ipupezi sebelu',
+'gotaccount' => "Xete a sa sebelu? '''$1'''.",
+'gotaccountlink' => 'Menuhile',
+'createaccountmail' => 'dimeli',
+'badretype' => 'Sebu dafi ni sa identikali.',
+'userexists' => 'Sebu di sebelu sa sebelize. Hloli veti sebu petuho.',
+'loginerror' => 'Bufosi di menuhile',
+'nocookieslogin' => '{{SITENAME}} sebelize kukina di menuhile sebelu. A ni sa kukina. Sa kukina.',
+'noname' => 'A sa sebelu consa sebelu bufosi.',
+'loginsuccesstitle' => 'Menuhile ni condi bufosi',
+'loginsuccess' => "'''A sa menuhile di {{SITENAME}} con sebelu \"\$1\".'''",
+'nosuchuser' => 'No sebelu "$1". Tembile/ipupezi.',
+'nosuchusershort' => 'No sebelu "<nowiki>$1</nowiki>". Tembile.',
+'nouserspecified' => 'A tumbelezi sebelunom.',
+'wrongpassword' => 'Bufosi sebu dafi. Tembile.',
+'wrongpasswordempty' => 'No sebu dafi. Tembile.',
+'passwordtooshort' => 'Zwa sebu dafi sa bufosi/kuswani. A sa $1 di selt e petuho di zwa sebelunom.',
+'mailmypassword' => 'Meli sebu dafi',
+'passwordremindertitle' => 'Nca sebu dafi temporali di {{SITENAME}}',
+'passwordremindertext' => 'Ku (sa a, dIP $1)
kusizi sebu dafi di {{SITENAME}} ($4).
Sebu dafi di sebelu "$2" sa "$3".
A sa menuhile e hloli zwa sebu dafi.
Sa ku bye fatukile zwa sebu dafi e a ni petuho, ni petuho e mulumiwasibukirisize.',
-'noemail' => 'No meli di sebelu "$1".',
-'passwordsent' => 'Nca sebu dafi sa meli di sebelu "$1". Menuhile post tamibukisimelize.',
-'eauthentsent' => 'Meli sa meli di meli adresi. Pre xete meli sa meli di sebelu, inisidusize melisaku, di saguridimi sebelu.',
-'mailerror' => 'Bufosi afi mail: $1',
-'accountcreated' => 'Sebelu sa hloli',
-'accountcreatedtext' => 'Sebelu di $1 sa hloli.',
-'createaccount-title' => 'Sebelu sa hloli di {{SITENAME}}',
-'loginlanguagelabel' => 'Zwa Siselect: $1',
+'noemail' => 'No meli di sebelu "$1".',
+'passwordsent' => 'Nca sebu dafi sa meli di sebelu "$1". Menuhile post tamibukisimelize.',
+'eauthentsent' => 'Meli sa meli di meli adresi. Pre xete meli sa meli di sebelu, inisidusize melisaku, di saguridimi sebelu.',
+'mailerror' => 'Bufosi afi mail: $1',
+'accountcreated' => 'Sebelu sa hloli',
+'accountcreatedtext' => 'Sebelu di $1 sa hloli.',
+'createaccount-title' => 'Sebelu sa hloli di {{SITENAME}}',
+'loginlanguagelabel' => 'Zwa Siselect: $1',
# Password reset dialog
'resetpass' => 'Lisetize sebelu sebu dafi',
@@ -368,20 +352,20 @@ Sa ku bye fatukile zwa sebu dafi e a ni petuho, ni petuho e mulumiwasibukirisize
'hr_tip' => 'Lani - (sepalati)',
# Edit pages
-'summary' => 'Lyangutukezi:',
-'subject' => 'Lyangutukezi selt:',
-'minoredit' => 'A sa pili kenki',
-'watchthis' => 'Kantezi bye petulo',
-'savearticle' => 'Bulukezi',
-'preview' => 'PendiBe',
-'showpreview' => 'Kamukile PendiBe',
-'showlivepreview' => "Lyangutukezi 'Live'",
-'showdiff' => 'Kamukile nca petuho',
-'anoneditwarning' => "'''!:''' A ni sa menuhile.
+'summary' => 'Lyangutukezi:',
+'subject' => 'Lyangutukezi selt:',
+'minoredit' => 'A sa pili kenki',
+'watchthis' => 'Kantezi bye petulo',
+'savearticle' => 'Bulukezi',
+'preview' => 'PendiBe',
+'showpreview' => 'Kamukile PendiBe',
+'showlivepreview' => "Lyangutukezi 'Live'",
+'showdiff' => 'Kamukile nca petuho',
+'anoneditwarning' => "'''!:''' A ni sa menuhile.
Zwa adresi di IP sa bulukezi kwa kenki bundau di petulo.",
-'summary-preview' => 'Lyangutukezi pendiBe:',
-'blockedtitle' => 'Sebelu sa bolok',
-'blockedtext' => "'''Zwa sebelu/IP sa bolok.'''
+'summary-preview' => 'Lyangutukezi pendiBe:',
+'blockedtitle' => 'Sebelu sa bolok',
+'blockedtext' => "'''Zwa sebelu/IP sa bolok.'''
$1 bolok a. Lyangutukezireason sa ''$2''.
@@ -392,38 +376,38 @@ $1 bolok a. Lyangutukezireason sa ''$2''.
A bulelezi $1/[[{{MediaWiki:Grouppage-sysop}}|xetewi sesop]] bolok.
A ni sebilize 'meli sebelu' ka a ni afi adresi di meli kwa zwa [[Special:Preferences|petohoni]] e no sa bolok di sebelize.
A IP sa $3, e ID di bolok sa #$5. Bulelezi IP e ID kwa bukizisize.",
-'blockedoriginalsource' => "Olige di '''$1''' sa kamukile:",
-'blockededitsource' => "Selt di '''zwa hloli ye ng'i''' di '''$1''' sa kamukile:",
-'whitelistedittext' => "A sa $1 di hloli ye ng'i petulo.",
-'nosuchsectiontitle' => 'Ni di lyangutukezi',
-'loginreqlink' => 'menuhile',
-'loginreqpagetext' => 'A sa $1 di kamukile xeti di petulo.',
-'newarticle' => '(Nca)',
-'newarticletext' => "Bye petulo ni sa, tiguki zwa ling'ki.
+'blockedoriginalsource' => "Olige di '''$1''' sa kamukile:",
+'blockededitsource' => "Selt di '''zwa hloli ye ng'i''' di '''$1''' sa kamukile:",
+'whitelistedittext' => "A sa $1 di hloli ye ng'i petulo.",
+'nosuchsectiontitle' => 'Ni di lyangutukezi',
+'loginreqlink' => 'menuhile',
+'loginreqpagetext' => 'A sa $1 di kamukile xeti di petulo.',
+'newarticle' => '(Nca)',
+'newarticletext' => "Bye petulo ni sa, tiguki zwa ling'ki.
Di hloli, seltisize kwa sisebelisoni (kamukile [[{{MediaWiki:Helppage}}|likitisize]]).
A sa nca di bufosi, tampi '''back'''.",
-'noarticletext' => 'Sa no selt kwa petulo, a sa [[Special:Search/{{PAGENAME}}|fatukile di petulonom]] kwa xete petulo/[{{fullurl:{{FULLPAGENAME}}|action=edit}} petulo kenki].',
-'updated' => '(sa updeti)',
-'note' => "'''Lyangutukezi:'''",
-'previewnote' => "'''A sa in kamukile PendiBe; petuho ni sa bulukezi!'''",
-'editing' => "Hloli ye ng'i $1",
-'editingsection' => "Hloli ye ng'i $1 (lyangutukezi)",
-'editingcomment' => "Hloli ye ng'i $1 (lyangutukezi)",
-'yourtext' => 'Zwa selt',
-'storedversion' => 'Selt bulukezi',
-'yourdiff' => 'Petuhoni',
-'copyrightwarning' => "Xete kenki di {{SITENAME}} sa rilisi kwa $2 (fatukile $1 di pagu). A ni tokwezi zwa selt sa kenki a ridistributi kwa tokwi, ni bulukezi.<br />
+'noarticletext' => 'Sa no selt kwa petulo, a sa [[Special:Search/{{PAGENAME}}|fatukile di petulonom]] kwa xete petulo/[{{fullurl:{{FULLPAGENAME}}|action=edit}} petulo kenki].',
+'updated' => '(sa updeti)',
+'note' => "'''Lyangutukezi:'''",
+'previewnote' => "'''A sa in kamukile PendiBe; petuho ni sa bulukezi!'''",
+'editing' => "Hloli ye ng'i $1",
+'editingsection' => "Hloli ye ng'i $1 (lyangutukezi)",
+'editingcomment' => "Hloli ye ng'i $1 (lyangutukezi)",
+'yourtext' => 'Zwa selt',
+'storedversion' => 'Selt bulukezi',
+'yourdiff' => 'Petuhoni',
+'copyrightwarning' => "Xete kenki di {{SITENAME}} sa rilisi kwa $2 (fatukile $1 di pagu). A ni tokwezi zwa selt sa kenki a ridistributi kwa tokwi, ni bulukezi.<br />
A sumekezi zwa selt sa dya, a kopisize di publiki domeni, a ike risorsi.
'''NI BULUKEZI SELT KOPINITUMELELO E NI TUMELELO!'''",
-'longpagewarning' => "'''AGTU: Bye petulo sa $1 kilobytes; browser sa di bufosikaku hloli ye ng'i petulo plusu di 32 kilobytes.
+'longpagewarning' => "'''AGTU: Bye petulo sa $1 kilobytes; browser sa di bufosikaku hloli ye ng'i petulo plusu di 32 kilobytes.
Konsidisize takubikinalisize.'''",
-'templatesused' => 'Yegani sebelize di bye petulo:',
-'templatesusedpreview' => 'Yegani sebelize kwa bye PendiBe:',
-'template-protected' => '(sa bukelezi)',
-'template-semiprotected' => '(bukelezi di pagafi)',
-'nocreatetext' => '{{SITENAME}} sa simplekile petulo.
+'templatesused' => 'Yegani sebelize di bye petulo:',
+'templatesusedpreview' => 'Yegani sebelize kwa bye PendiBe:',
+'template-protected' => '(sa bukelezi)',
+'template-semiprotected' => '(bukelezi di pagafi)',
+'nocreatetext' => '{{SITENAME}} sa simplekile petulo.
A afi e kenki/[[Special:UserLogin|menuhile]].',
-'recreate-deleted-warn' => "'''!: A sa hloli petulo dy sa afi kulobala.'''
+'recreate-moveddeleted-warn' => "'''!: A sa hloli petulo dy sa afi kulobala.'''
A sa luku a kenki dyangitubilinisize petulo.
Desu dafi kulobala di petulo sa gi di informasi:",
@@ -435,7 +419,7 @@ Desu dafi kulobala di petulo sa gi di informasi:",
'viewpagelogs' => 'Kamukile desu di petulo',
'currentrev' => 'Selt nca',
'revisionasof' => 'Selt di $1',
-'revision-info' => 'Selt di $1 di $2', # Additionally available: $3: revision id
+'revision-info' => 'Selt di $1 di $2',
'previousrevision' => '←Kona selt',
'nextrevision' => 'Lila selt→',
'currentrevisionlink' => 'Selt nca',
@@ -453,7 +437,7 @@ Informasi: (bye) = petuho a nca selt,
# Revision feed
'history-feed-title' => 'Bundau di selt',
'history-feed-description' => 'Bundau di selt di petulo di wiki.',
-'history-feed-item-nocomment' => '$1 di $2', # user at time
+'history-feed-item-nocomment' => '$1 di $2',
# Revision deletion
'rev-deleted-comment' => '(lyangutukezi sa afi kulobala)',
@@ -476,46 +460,57 @@ Informasi: (bye) = petuho a nca selt,
'searchresults' => 'Fatukile kamukile',
'searchsubtitle' => "A fatukile di '''[[:$1]]'''",
'searchsubtitleinvalid' => "A fatukile di '''$1'''",
-'noexactmatch' => "'''Petulo di sebu \"\$1\" ni sa.''' A sa [[:\$1|hloli petulo]].",
'titlematches' => 'Sebu di petulo ekali',
'notitlematches' => 'Ni sebu di petulo ekali',
'textmatches' => 'Selt di petulo ekali',
'notextmatches' => 'Ni selt di petulo ekali',
-'prevn' => 'kona $1',
-'nextn' => 'lila $1',
-'viewprevnext' => 'Kamukile ($1) ($2) ($3)',
+'prevn' => 'kona {{PLURAL:$1|$1}}',
+'nextn' => 'lila {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Kamukile ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Buinaneli di petulo',
'searchall' => 'xete',
'showingresults' => "Kamukile opi {{PLURAL:$1|'''1''' ekali|'''$1''' ekalina}} di #'''$2'''.",
'showingresultsnum' => "Kamukile {{PLURAL:$3|'''1''' ekali|'''$3''' ekalina}} di #'''$2'''.",
'powersearch' => 'Fatukile',
+# Quickbar
+'qbsettings-none' => 'Ni',
+
# Preferences page
-'preferences' => 'Petohoni di sebelu',
-'mypreferences' => 'Zwa petohoni di sebelu',
-'prefs-edits' => "Hloli ye ng'inabi:",
-'prefsnologin' => 'Ni menuhile',
-'qbsettings-none' => 'Ni',
-'skin' => 'PendiBe',
-'skin-preview' => 'PendiBe',
-'math' => 'Mat',
-'dateformat' => 'Data apukisize',
-'datedefault' => 'Ni di petohoni di sebelu',
-'datetime' => 'Data',
-'prefs-rc' => 'Petuho nca',
-'prefs-watchlist' => 'Mukoloko di kentezi',
-'saveprefs' => 'Bulukezi',
-'resetprefs' => 'Lisetize',
-'textboxsize' => "Hloli ye ng'i",
-'rows' => 'Roo:',
-'columns' => 'Kalom:',
-'searchresultshead' => 'Fatukile',
-'resultsperpage' => 'Hit di petulo:',
-'contextlines' => 'Lani di hit:',
-'contextchars' => 'Selt di lani:',
-'timezoneoffset' => 'Ufiseti¹',
-'default' => 'auto',
-'files' => 'Imegini',
+'preferences' => 'Petohoni di sebelu',
+'mypreferences' => 'Zwa petohoni di sebelu',
+'prefs-edits' => "Hloli ye ng'inabi:",
+'prefsnologin' => 'Ni menuhile',
+'prefs-skin' => 'PendiBe',
+'skin-preview' => 'PendiBe',
+'prefs-math' => 'Mat',
+'datedefault' => 'Ni di petohoni di sebelu',
+'prefs-datetime' => 'Data',
+'prefs-rc' => 'Petuho nca',
+'prefs-watchlist' => 'Mukoloko di kentezi',
+'saveprefs' => 'Bulukezi',
+'resetprefs' => 'Lisetize',
+'prefs-editing' => "Hloli ye ng'i",
+'rows' => 'Roo:',
+'columns' => 'Kalom:',
+'searchresultshead' => 'Fatukile',
+'resultsperpage' => 'Hit di petulo:',
+'contextlines' => 'Lani di hit:',
+'contextchars' => 'Selt di lani:',
+'timezoneoffset' => 'Ufiseti¹',
+'default' => 'auto',
+'prefs-files' => 'Imegini',
+'youremail' => 'Imeli:',
+'username' => 'Sebelu:',
+'uid' => 'Sebelu ID:',
+'yourrealname' => 'Sebu monida:',
+'yourlanguage' => 'Siselect:',
+'yourvariant' => 'Pane:',
+'yournick' => 'Kamukile di sebelu printezi:',
+'badsig' => 'Ro sebu di sebelu con xete data bufosi; kamukile HTML tegina.',
+'email' => 'Imeli',
+'prefs-help-realname' => 'Nom sa opsi e a sa kisize providisize sa tekini atribusi di zwa selt.',
+'prefs-help-email-required' => 'Adressi di meli sa nidyisize.',
# Groups
'group-all' => '(xete)',
@@ -551,6 +546,8 @@ Informasi: (bye) = petuho a nca selt,
# Recent changes linked
'recentchangeslinked' => 'Petuho adusi',
+'recentchangeslinked-feed' => 'Petuho adusi',
+'recentchangeslinked-toolbox' => 'Petuho adusi',
'recentchangeslinked-title' => 'Petuho dadusi di "$1"',
'recentchangeslinked-noresult' => "Ni petuhoni kwa ling'ki petulo kwa bye datum.",
'recentchangeslinked-summary' => "Bye petulo zwenti kamukile lapu-kona petuho di petulo sa ling'ki. Petulo di zwa mukoloko di kentezi sa '''ombelu'''.",
@@ -558,7 +555,6 @@ Informasi: (bye) = petuho a nca selt,
# Upload
'upload' => 'Imegi uplodezi',
'uploadbtn' => 'Imegi uplodezi',
-'reupload' => 'Uplodezi nca',
'uploadnologin' => 'Ni menuhile',
'uploadnologintext' => 'A sa [[Special:UserLogin|menuhile]]
di uplodezi media.',
@@ -585,6 +581,7 @@ di uplodezi media.',
'listfiles_user' => 'Sebelu',
# File description page
+'file-anchor-link' => 'Imegi',
'filehist' => 'Imegi bundau',
'filehist-help' => 'Tampa datum/taimi di kamukile imegi a sa kwa bye datum.',
'filehist-current' => 'bye',
@@ -596,9 +593,7 @@ di uplodezi media.',
'imagelinks' => "Ling'kina",
'linkstoimage' => "Bye petulo sa ling'ki di bye media:",
'nolinkstoimage' => "No petulo ling'ki a imegi.",
-'sharedupload' => 'Imegi sa uplodezi kwa wiki dy apukolobili sa e sa kubi xetewi proyeti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Ni media bye sebu sa, a sa $1.',
-'noimage-linktext' => 'a uplodezi',
+'sharedupload' => 'Imegi sa uplodezi kwa wiki dy apukolobili sa e sa kubi xetewi proyeti.',
'uploadnewversion-linktext' => 'Uplodezi nca selt di bye media',
# File reversion
@@ -637,8 +632,8 @@ di uplodezi media.',
'doubleredirects' => 'Petulo abezi sa dužemi',
'brokenredirects' => 'Petulo abezi bufosi',
-'brokenredirects-edit' => "(hloli ye ng'i)",
-'brokenredirects-delete' => '(afi kulobala)',
+'brokenredirects-edit' => "hloli ye ng'i",
+'brokenredirects-delete' => 'afi kulobala',
'withoutinterwiki' => 'Petulo dicon interwikina',
@@ -794,7 +789,6 @@ A sa afi kulobala di zwa mukoloko di kentezi, tampi \"ngambu kentezi\".",
'protectexpiry' => 'Simpekile:',
'protect_expiry_invalid' => 'Bufosi di simpekile.',
'protect_expiry_old' => 'Simpekile sa kwa bundau.',
-'protect-unchain' => 'Petuho nyanganyisize tumelelo',
'protect-text' => "A sa kamukile e hloli bukelezi di petulo '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Zwa sebelu ni sa hloli bukelezi.
Petohoni di petulo '''$1''' sa:",
@@ -807,7 +801,7 @@ Petohoni di petulo '''$1''' sa:",
'protect-expiring' => 'simpekile $1 (UTC)',
'protect-cascade' => 'Bukelezi petulo kwa bye petulo (kaskedi)',
'protect-cantedit' => "A ni ku hloli a bukelezi di bye petulo, a ni sa tumelelo di hloli ye ng'i.",
-'protect-expiry-options' => '2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite',
'restriction-type' => 'Tumelelo:',
'restriction-level' => 'Bolok tumelelo:',
@@ -846,6 +840,8 @@ Petohoni di petulo '''$1''' sa:",
'sp-contributions-newbies' => 'Kamukile afina di sebelu nca',
'sp-contributions-newbies-sub' => 'Di nca sebelu',
'sp-contributions-blocklog' => 'Desu di bolok',
+'sp-contributions-deleted' => 'Afina di sebelu bye sa afi kulobala',
+'sp-contributions-talk' => 'Bulelezi',
'sp-contributions-search' => 'Fatukile di afina',
'sp-contributions-username' => 'IP/sebelu:',
'sp-contributions-submit' => 'Fatukile',
@@ -867,7 +863,7 @@ Petohoni di petulo '''$1''' sa:",
'blockip' => 'Bolok sebelu',
'ipaddress' => 'IP:',
'ipadressorusername' => 'IP/sebelu:',
-'ipboptions' => '2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite',
'badipaddress' => 'IP ni sa',
'ipblocklist' => 'Mukoloko di IP e sebelu bye sa bolok',
'ipblocklist-submit' => 'Fatukile',
@@ -1044,7 +1040,7 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagedescription' => 'Sebu di imegi',
@@ -1106,7 +1102,7 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
'watchlisttools-raw' => "Hloli ye ng'i ro mukoloko di kentezi",
# Special:Version
-'version' => 'Pane', # Not used as normal message but as header for the special page itself
+'version' => 'Pane',
# Special:SpecialPages
'specialpages' => 'Petulo zwenti',
diff --git a/languages/messages/MessagesLt.php b/languages/messages/MessagesLt.php
index ae06880d..f95f5450 100644
--- a/languages/messages/MessagesLt.php
+++ b/languages/messages/MessagesLt.php
@@ -54,6 +54,7 @@ $specialPageAliases = array(
'Listfiles' => array( 'Paveikslėlių sąrašas' ),
'Newimages' => array( 'Nauji paveikslėliai' ),
'Listusers' => array( 'Naudotojų sąrašas' ),
+ 'Listgrouprights' => array( 'Grupių teisių sąrašas' ),
'Statistics' => array( 'Statistika' ),
'Randompage' => array( 'Atsitiktinis puslapis' ),
'Lonelypages' => array( 'Vieniši puslapiai' ),
@@ -65,9 +66,11 @@ $specialPageAliases = array(
'Unusedimages' => array( 'Nenaudojami paveikslėliai' ),
'Wantedpages' => array( 'Trokštamiausi puslapiai', 'Blogos nuorodos' ),
'Wantedcategories' => array( 'Trokštamiausios kategorijos' ),
+ 'Wantedfiles' => array( 'Trokštami failai' ),
+ 'Wantedtemplates' => array( 'Trokštami šablonai' ),
'Mostlinked' => array( 'Turintys daugiausiai nuorodų' ),
'Mostlinkedcategories' => array( 'Kategorijos turinčios daugiausiai nuorodų' ),
- 'Mostlinkedtemplates' => array( 'Šablonai', ),
+ 'Mostlinkedtemplates' => array( 'Šablonai' ),
'Mostimages' => array( 'Daugiausiai naudojami paveikslėliai' ),
'Mostcategories' => array( 'Daugiausiai naudojamos kategorijos' ),
'Mostrevisions' => array( 'Daugiausiai keičiami' ),
@@ -103,6 +106,7 @@ $specialPageAliases = array(
'Unlockdb' => array( 'Atrakinti duomenų bazę' ),
'Userrights' => array( 'Naudotojo teisės' ),
'MIMEsearch' => array( 'MIME paieška' ),
+ 'FileDuplicateSearch' => array( 'Failo dublikatų paieška' ),
'Unwatchedpages' => array( 'Nestebimi puslapiai' ),
'Listredirects' => array( 'Peradresavimų sąrašas' ),
'Revisiondelete' => array( 'Redagavimo ištrynimas' ),
@@ -118,6 +122,12 @@ $specialPageAliases = array(
'Resetpass' => array( 'Slaptažodžio atstatymas' ),
'Withoutinterwiki' => array( 'Be interwiki' ),
'MergeHistory' => array( 'Sujungti istoriją' ),
+ 'Filepath' => array( 'Kelias iki failo' ),
+ 'Invalidateemail' => array( 'Nutraukti elektroninio pašto galiojimą' ),
+ 'Blankpage' => array( 'Tuščias puslapis' ),
+ 'LinkSearch' => array( 'Nuorodų paieška' ),
+ 'DeletedContributions' => array( 'Ištrintas indėlis' ),
+ 'Tags' => array( 'Žymos' ),
);
$magicWords = array(
@@ -126,7 +136,7 @@ $magicWords = array(
'nogallery' => array( '0', '__BEGALERIJOS__', '__NOGALLERY__' ),
'toc' => array( '0', '__TURINYS__', '__TOC__' ),
'noeditsection' => array( '0', '__BEREDAGSEKC__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'DABARTINISMĖNESIS', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'DABARTINISMĖNESIS', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'DABARTINIOMĖNESIOPAVADINIMAS', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'DABARTINĖDIENA', 'CURRENTDAY' ),
'currentday2' => array( '1', 'DABARTINĖDIENA2', 'CURRENTDAY2' ),
@@ -149,17 +159,9 @@ $fallback8bitEncoding = 'windows-1257';
$separatorTransformTable = array(',' => "\xc2\xa0", '.' => ',' );
$dateFormats = array(
- 'mdy time' => 'H:i',
- 'mdy date' => 'F j, Y',
- 'mdy both' => 'H:i, F j, Y',
-
- 'dmy time' => 'H:i',
- 'dmy date' => 'Y F j',
- 'dmy both' => 'H:i, Y F j',
-
'ymd time' => 'H:i',
- 'ymd date' => 'Y F j',
- 'ymd both' => 'Y F j, H:i',
+ 'ymd date' => 'Y "m." F j "d."',
+ 'ymd both' => 'Y "m." F j "d.", H:i',
'ISO 8601 time' => 'xnH:xni:xns',
'ISO 8601 date' => 'xnY-xnm-xnd',
@@ -197,6 +199,7 @@ $messages = array(
'tog-enotifminoredits' => 'Siųsti man laišką, kai puslapio keitimas yra smulkus',
'tog-enotifrevealaddr' => 'Rodyti mano el. pašto adresą priminimo laiškuose',
'tog-shownumberswatching' => 'Rodyti stebinčių naudotojų skaičių',
+'tog-oldsig' => 'Esamo parašo peržiūra:',
'tog-fancysig' => 'Laikyti parašą vikitekstu (be automatinių nuorodų)',
'tog-externaleditor' => 'Pagal nutylėjimą naudoti išorinį redaktorių',
'tog-externaldiff' => 'Pagal nutylėjimą naudoti išorinę skirtumų rodymo programą',
@@ -219,6 +222,13 @@ $messages = array(
'underline-never' => 'Niekada',
'underline-default' => 'Pagal naršyklės nustatymus',
+# Font style option in Special:Preferences
+'editfont-style' => 'Redagavimo srities šrifto stilius:',
+'editfont-default' => 'Naršyklės numatytasis',
+'editfont-monospace' => 'Lygiaplotis šriftas',
+'editfont-sansserif' => 'Šriftas be užraitų',
+'editfont-serif' => 'Šriftas su užraitais',
+
# Dates
'sunday' => 'sekmadienis',
'monday' => 'pirmadienis',
@@ -278,7 +288,7 @@ $messages = array(
'category-media-header' => 'Daugialypės terpės failai kategorijoje „$1“',
'category-empty' => "''Šiuo metu ši kategorija neturi jokių puslapių ar failų.''",
'hidden-categories' => '{{PLURAL:$1|Paslėpta kategorija|Paslėptos kategorijos}}',
-'hidden-category-category' => 'Paslėptos kategorijos', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Paslėptos kategorijos',
'category-subcat-count' => '{{PLURAL:$2|Šioje kategorijoje yra viena subkategorija.|{{PLURAL:$1|Rodoma|Rodomos|Rodoma}} $1 {{PLURAL:$1|subkategorija|subkategorijos|subkategorijų}} (iš viso yra $2 {{PLURAL:$2|subkategorija|subkategorijos|subkategorijų}}).}}',
'category-subcat-count-limited' => 'Šioje kategorijoje yra $1 {{PLURAL:$1|subkategorija|subkategorijos|subkategorijų}}.',
'category-article-count' => '{{PLURAL:$2|Šioje kategorijoje yra vienas puslapis.|{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|puslapis|puslapiai|puslapių}} (iš viso kategorijoje yra $2 {{PLURAL:$2|puslapis|puslapiai|puslapių}}).}}',
@@ -286,6 +296,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Šioje kategorijoje yra vienas failas.|{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|failas|failai|failų}} (iš viso kategorijoje yra $2 {{PLURAL:$2|failas|failai|failų}}).}}',
'category-file-count-limited' => '{{PLURAL:$1|Rodomas|Rodomi|Rodoma}} $1 šios kategorijos {{PLURAL:$1|failas|failai|failų}}.',
'listingcontinuesabbrev' => 'tęs.',
+'index-category' => 'Indeksuoti puslapiai',
+'noindex-category' => 'Neindeksuoti puslapiai',
'mainpagetext' => "'''MediaWiki sėkmingai įdiegta.'''",
'mainpagedocfooter' => 'Informacijos apie wiki programinės įrangos naudojimą, ieškokite [http://meta.wikimedia.org/wiki/Help:Contents žinyne].
@@ -296,10 +308,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki DUK]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki pranešimai paštu apie naujas versijas]',
-'about' => 'Apie',
-'article' => 'Turinys',
-'newwindow' => '(atsidaro naujame lange)',
-'cancel' => 'Atšaukti',
+'about' => 'Apie',
+'article' => 'Turinys',
+'newwindow' => '(atsidaro naujame lange)',
+'cancel' => 'Atšaukti',
+'moredotdotdot' => 'Daugiau...',
+'mypage' => 'Mano puslapis',
+'mytalk' => 'Mano aptarimas',
+'anontalk' => 'Šio IP aptarimas',
+'navigation' => 'Naršymas',
+'and' => '&#32;ir',
+
+# Cologne Blue skin
'qbfind' => 'Paieška',
'qbbrowse' => 'Naršymas',
'qbedit' => 'Taisyti',
@@ -307,15 +327,35 @@ $messages = array(
'qbpageinfo' => 'Kontekstas',
'qbmyoptions' => 'Mano puslapiai',
'qbspecialpages' => 'Specialieji puslapiai',
-'moredotdotdot' => 'Daugiau...',
-'mypage' => 'Mano puslapis',
-'mytalk' => 'Mano aptarimas',
-'anontalk' => 'Šio IP aptarimas',
-'navigation' => 'Naršymas',
-'and' => '&#32;ir',
-
-# Metadata in edit box
-'metadata_help' => 'Metaduomenys:',
+'faq' => 'DUK',
+'faqpage' => 'Project:DUK',
+
+# Vector skin
+'vector-action-addsection' => 'Pridėti temą',
+'vector-action-delete' => 'Ištrinti',
+'vector-action-move' => 'Perkelti',
+'vector-action-protect' => 'Užrakinti',
+'vector-action-undelete' => 'Atkurti',
+'vector-action-unprotect' => 'Atrakinti',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Pagalbos puslapis',
+'vector-namespace-image' => 'Failas',
+'vector-namespace-main' => 'Puslapis',
+'vector-namespace-media' => 'Media puslapis',
+'vector-namespace-mediawiki' => 'Pranešimas',
+'vector-namespace-project' => 'Projekto puslapis',
+'vector-namespace-special' => 'Specialusis puslapis',
+'vector-namespace-talk' => 'Diskusija',
+'vector-namespace-template' => 'Šablonas',
+'vector-namespace-user' => 'Naudotojo puslapis',
+'vector-view-create' => 'Kurti',
+'vector-view-edit' => 'Redaguoti',
+'vector-view-history' => 'Istorija',
+'vector-view-view' => 'Skaityti',
+'vector-view-viewsource' => 'Žiūrėti kodą',
+'actions' => 'Veiksmai',
+'namespaces' => 'Vardų sritys',
+'variants' => 'Variantai',
'errorpagetitle' => 'Klaida',
'returnto' => 'Grįžti į $1.',
@@ -365,18 +405,22 @@ $messages = array(
'otherlanguages' => 'Kitomis kalbomis',
'redirectedfrom' => '(Nukreipta iš $1)',
'redirectpagesub' => 'Nukreipimo puslapis',
-'lastmodifiedat' => 'Šis puslapis paskutinį kartą keistas $1 $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Šis puslapis paskutinį kartą keistas $1 $2.',
'viewcount' => 'Šis puslapis buvo atvertas $1 {{PLURAL:$1|kartą|kartus|kartų}}.',
'protectedpage' => 'Užrakintas puslapis',
'jumpto' => 'Peršokti į:',
'jumptonavigation' => 'navigaciją',
'jumptosearch' => 'paiešką',
+'view-pool-error' => 'Atsiprašome, šiuo metu serveriai yra perkrauti.
+Pernelyg daug naudotojų skaito šį puslapį.
+Prašome palaukti ir bandyti į šį puslapį patekti dar kartą.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Apie {{SITENAME}}',
'aboutpage' => 'Project:Apie',
'copyright' => 'Turinys pateikiamas pagal $1 licenciją.',
-'copyrightpagename' => '{{SITENAME}} autorystės teisės',
'copyrightpage' => '{{ns:project}}:Autorystės teisės',
'currentevents' => 'Naujienos',
'currentevents-url' => 'Project:Naujienos',
@@ -384,8 +428,6 @@ $messages = array(
'disclaimerpage' => 'Project:Atsakomybės apribojimas',
'edithelp' => 'Kaip redaguoti',
'edithelppage' => 'Help:Redagavimas',
-'faq' => 'DUK',
-'faqpage' => 'Project:DUK',
'helppage' => 'Help:Turinys',
'mainpage' => 'Pagrindinis puslapis',
'mainpage-description' => 'Pagrindinis puslapis',
@@ -465,10 +507,6 @@ Paskutinė mėginta duomenų bazės užklausa buvo:
„$1“
iš funkcijos: „$2“.
Duomenų bazė grąžino klaidą „$3: $4“',
-'noconnect' => 'Atsiprašome, bet projektas turi techninių nesklandumų, ir negali prisijungti prie duomenų bazės. <br />
-$1',
-'nodb' => 'Nepavyksta pasirinkti duomenų bazės $1',
-'cachederror' => 'Pateiktas išsaugota prašomo puslapio kopija, ji gali būti pasenusi.',
'laggedslavemode' => 'Dėmesio: Puslapyje gali nesimatyti naujausių pakeitimų.',
'readonly' => 'Duomenų bazė užrakinta',
'enterlockreason' => 'Įveskite užrakinimo priežastį, taip pat datą, kada bus atrakinta',
@@ -488,6 +526,8 @@ Prašome apie tai pranešti [[Special:ListUsers/sysop|administratoriui]], nepami
'readonly_lag' => 'Duomenų bazė buvo automatiškai užrakinta, kol pagalbinės duomenų bazės prisivys pagrindinę',
'internalerror' => 'Vidinė klaida',
'internalerror_info' => 'Vidinė klaida: $1',
+'fileappenderrorread' => 'Papildymo metu nepavyko perskaityti „$1“.',
+'fileappenderror' => 'Nepavyko pridėti „$1“ prie „$2“.',
'filecopyerror' => 'Nepavyksta kopijuoti failo iš „$1“ į „$2“.',
'filerenameerror' => 'Nepavyksta pervardinti failo iš „$1“ į „$2“.',
'filedeleteerror' => 'Nepavyksta ištrinti failo „$1“.',
@@ -497,7 +537,7 @@ Prašome apie tai pranešti [[Special:ListUsers/sysop|administratoriui]], nepami
'unexpected' => 'Netikėta reikšmė: „$1“=„$2“.',
'formerror' => 'Klaida: nepavyko apdoroti formos duomenų',
'badarticleerror' => 'Veiksmas negalimas šiam puslapiui.',
-'cannotdelete' => 'Nepavyko ištrinti nurodyto puslapio ar failo.
+'cannotdelete' => 'Nepavyko ištrinti puslapio ar failo „$1“.
Galbūt jį jau kažkas kitas ištrynė.',
'badtitle' => 'Blogas pavadinimas',
'badtitletext' => 'Nurodytas puslapio pavadinimas buvo neleistinas, tuščias arba neteisingai sujungtas tarpkalbinis arba tarpprojektinis pavadinimas. Jame gali būti vienas ar daugiau simbolių, neleistinų pavadinimuose',
@@ -530,7 +570,6 @@ Nurodyta priežastis yra ''$2''.",
'virus-unknownscanner' => 'nežinomas antivirusas:',
# Login and logout pages
-'logouttitle' => 'Naudotojo atsijungimas',
'logouttext' => "'''Dabar jūs esate atsijungęs.'''
Galite toliau naudoti {{SITENAME}} anonimiškai arba [[Special:UserLogin|prisijunkite]] iš naujo tuo pačiu ar kitu naudotoju.
@@ -538,7 +577,6 @@ Pastaba: kai kuriuose puslapiuose ir toliau gali rodyti, kad esate prisijungęs
'welcomecreation' => '== Sveiki, $1! ==
Jūsų paskyra buvo sukurta. Nepamirškite pakeisti savo [[Special:Preferences|{{SITENAME}} nustatymų]].',
-'loginpagetitle' => 'Prisijungimas',
'yourname' => 'Naudotojo vardas:',
'yourpassword' => 'Slaptažodis:',
'yourpasswordagain' => 'Pakartokite slaptažodį:',
@@ -549,6 +587,7 @@ Jūsų paskyra buvo sukurta. Nepamirškite pakeisti savo [[Special:Preferences|{
'nav-login-createaccount' => 'Prisijungti / sukurti paskyrą',
'loginprompt' => 'Įjunkite slapukus, jei norite prisijungti prie {{SITENAME}}.',
'userlogin' => 'Prisijungti / sukurti paskyrą',
+'userloginnocreate' => 'Prisijungti',
'logout' => 'Atsijungti',
'userlogout' => 'Atsijungti',
'notloggedin' => 'Neprisijungęs',
@@ -561,29 +600,8 @@ Jūsų paskyra buvo sukurta. Nepamirškite pakeisti savo [[Special:Preferences|{
'badretype' => 'Įvesti slaptažodžiai nesutampa.',
'userexists' => 'Įvestasis naudotojo vardas jau naudojamas.
Prašome pasirinkti kitą vardą.',
-'youremail' => 'El. paštas:',
-'username' => 'Naudotojo vardas:',
-'uid' => 'Naudotojo ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|Grupės|Grupių}} narys:',
-'yourrealname' => 'Tikrasis vardas:',
-'yourlanguage' => 'Sąsajos kalba:',
-'yourvariant' => 'Variantas:',
-'yournick' => 'Parašas:',
-'badsig' => 'Neteisingas parašas; patikrinkite HTML žymes.',
-'badsiglength' => 'Jūsų parašas per ilgas.
-Jį turi sudaryti ne daugiau kaip $1 {{PLURAL:$1|simbolis|simboliai|simbolių}}.',
-'yourgender' => 'Lytis:',
-'gender-unknown' => 'Nenurodyta',
-'gender-male' => 'Vyras',
-'gender-female' => 'Moteris',
-'prefs-help-gender' => 'Pasirinktinai: naudojama teisingam sistemos kreipimuisi į jus.
-Ši informacija yra vieša.',
-'email' => 'El. paštas',
-'prefs-help-realname' => 'Tikrasis vardas yra neprivalomas.
-Jei jūs jį įvesite, jis bus naudojamas pažymėti jūsų darbą.',
'loginerror' => 'Prisijungimo klaida',
-'prefs-help-email' => 'El. pašto adresas yra neprivalomas, bet jis leidžia jums gauti naują slaptažodį, jei jūs užmiršote koks jis buvo, o taip pat jūs galite leisti kitiems pasiekti jus per jūsų naudotojo ar naudotojo aptarimo puslapį neatskleidžiant jūsų tapatybės.',
-'prefs-help-email-required' => 'El. pašto adresas yra būtinas.',
+'createaccounterror' => 'Nepavyko sukurti paskyros: $1',
'nocookiesnew' => 'Naudotojo paskyra buvo sukurta, bet jūs nesate prisijungęs. {{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos, tada prisijunkite su savo naujuoju naudotojo vardu ir slaptažodžiu.',
'nocookieslogin' => '{{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos ir pamėginkite vėl.',
'noname' => 'Jūs nesate nurodęs teisingo naudotojo vardo.',
@@ -594,9 +612,11 @@ Naudotojų varduose skiriamos didžiosios ir mažosios raidės.
Patikrinkite rašybą, arba [[Special:UserLogin/signup|sukurkite naują paskyrą]].',
'nosuchusershort' => 'Nėra jokio naudotojo, pavadinto „<nowiki>$1</nowiki>“. Patikrinkite rašybą.',
'nouserspecified' => 'Jums reikia nurodyti naudotojo vardą.',
+'login-userblocked' => 'Šis naudotojas yra užblokuotas. Prisijungti neleidžiama.',
'wrongpassword' => 'Įvestas neteisingas slaptažodis. Pamėginkite dar kartą.',
'wrongpasswordempty' => 'Įvestas slaptažodis yra tuščias. Pamėginkite vėl.',
-'passwordtooshort' => 'Jūsų slaptažodis yra neleistinas arba per trumpas. Jis turi būti bent $1 {{PLURAL:$1|simbolis|simboliai|simbolių}} ilgio ir skirtis nuo jūsų naudotojo vardo.',
+'passwordtooshort' => 'Slaptažodžiai turi būti bent $1 {{PLURAL:$1|simbolio|simbolių|simbolių}} ilgio.',
+'password-name-match' => 'Jūsų slaptažodis turi skirtis nuo jūsų naudotojo vardo.',
'mailmypassword' => 'Atsiųsti naują slaptažodį el. paštu',
'passwordremindertitle' => 'Laikinasis {{SITENAME}} slaptažodis',
'passwordremindertext' => 'Kažkas (tikriausiai jūs, IP adresu $1)
@@ -609,6 +629,7 @@ Jei kažkas kitas atliko šį prašymą arba jūs prisiminėte savo slaptažodį
nebenorite jo pakeisti, galite tiesiog nekreipti dėmesio į šį laišką ir toliau
naudotis savo senuoju slaptažodžiu.',
'noemail' => 'Nėra jokio el. pašto adreso įvesto naudotojui „$1“.',
+'noemailcreate' => 'Jūs turite nurodyti veikiantį el. pašto adresą',
'passwordsent' => 'Naujas slaptažodis buvo nusiųstas į el. pašto adresą,
užregistruotą naudotojo „$1“.
Prašome prisijungti vėl, kai jūs jį gausite.',
@@ -634,9 +655,11 @@ Prašome įvesti gerai suformuotą adresą arba palikite tą laukelį tuščią.
Jūs turėtumėte prisijungti ir pasikeisti savo slaptažodį.
Jūs galite nekreipti dėmesio į laišką, jei ši paskyra buvo sukurta per klaidą.',
+'usernamehasherror' => 'Naudotojo vardas negali turėti grotelių simbolio',
'login-throttled' => 'Jūs pernelyg daug kartų bandėte prisijungti.
Palaukite prieš bandant vėl.',
'loginlanguagelabel' => 'Kalba: $1',
+'suspicious-userlogout' => 'Jūsų prašymas atsijungti buvo atmestas, nes, atrodo, jį klaidingai išsiuntė naršyklė arba spartinantysis tarpinis serveris.',
# Password reset dialog
'resetpass' => 'Keisti slaptažodį',
@@ -648,17 +671,13 @@ Palaukite prieš bandant vėl.',
'retypenew' => 'Pakartokite naują slaptažodį:',
'resetpass_submit' => 'Nustatyti slaptažodį ir prisijungti',
'resetpass_success' => 'Jūsų slaptažodis pakeistas sėkmingai! Dabar prisijungiama...',
-'resetpass_bad_temporary' => 'Neteisingas laikinasis slaptažodis. Galbūt jūs jau sėkmingai pakeitėte savo slaptažodį arba paprašėte naujo laikino slaptažodžio.',
'resetpass_forbidden' => 'Slaptažodžiai negali būti pakeisti',
'resetpass-no-info' => 'Jūs turite būti prisijugęs, kad pasiektumėte puslapį tiesiogiai.',
'resetpass-submit-loggedin' => 'Keisti slaptažodį',
+'resetpass-submit-cancel' => 'Atšaukti',
'resetpass-wrong-oldpass' => 'Klaidingas laikinas ar esamas slaptažodis.
Jūs galbūt jau sėkmingai pakeitėte savo slaptažodį ar gavote naują laikiną slaptažodį.',
'resetpass-temp-password' => 'Laikinas slaptažodis:',
-'resetpass-log' => 'Slaptažodžio atstatymų sąrašas',
-'resetpass-logtext' => 'Čia pateikiamas sąrašas naudotojų, kurių slaptažodis buvo atstatytas administratoriaus.',
-'resetpass-logentry' => 'pakeistas $1 slaptažodis',
-'resetpass-comment' => 'Slaptažodžio atstatymo priežastis:',
# Edit page toolbar
'bold_sample' => 'Paryškintas tekstas',
@@ -731,7 +750,6 @@ Prašome nurodyti šiuos duomenis visais atvejais, kai kreipiatės dėl blokavim
'blockededitsource' => "''Jūsų keitimų'' tekstas puslapiui '''$1''' yra rodomas žemiau:",
'whitelistedittitle' => 'Norint redaguoti reikia prisijungti',
'whitelistedittext' => 'Jūs turite $1, kad redaguotumėte puslapius.',
-'confirmedittitle' => 'Kad galėtumėte redaguoti, reikalingas el. pašto patvirtinimas',
'confirmedittext' => 'Jums reikia patvirtinti el. pašto adresą, prieš redaguojant puslapius.
Prašome nurodyti ir patvirtinti jūsų el. pašto adresą per jūsų [[Special:Preferences|naudotojo nustatymus]].',
'nosuchsectiontitle' => 'Nėra tokio skyriaus',
@@ -757,9 +775,16 @@ Jeigu Jūs esate anoniminis naudotojas ir atrodo, kad komentarai nėra skirti Ju
Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų],
arba [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaguoti šį puslapį]</span>.',
+'noarticletext-nopermission' => 'Šiuo metu šiame puslapyje nėra jokio teksto.
+Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų]</span>.',
'userpage-userdoesnotexist' => 'Naudotojo paskyra „$1“ yra neužregistruota. Prašom patikrinti, ar jūs norite kurti/redaguoti šį puslapį.',
+'userpage-userdoesnotexist-view' => 'Naudotojo paskyra „$1“ neužregistruota.',
+'blocked-notice-logextract' => 'Šis naudotojas šiuo metu yra užblokuotas.
+Žemiau pateikiamas paskutinis blokavimo istorijos įrašas:',
'clearyourcache' => "'''Dėmesio:''' Išsaugoję jums gali prireikti išvalyti jūsų naršyklės podėlį, kad pamatytumėte pokyčius. '''Mozilla / Safari / Konqueror:''' laikydami ''Shift'' pasirinkite ''Atsiųsti iš naujo'', arba paspauskite ''Ctrl-Shift-R'' (sistemoje Apple Mac ''Cmd-Shift-R''); '''IE:''' laikydami ''Ctrl'' paspauskite ''Atnaujinti'', arba paspauskite ''Ctrl-F5''; '''Konqueror:''' tiesiog paspauskite ''Perkrauti'' mygtuką, arba paspauskite ''F5''; '''Opera''' naudotojams gali prireikti pilnai išvalyti jų podėlį ''Priemonės→Nuostatos''.",
-'usercssjsyoucanpreview' => "'''Patarimas:''' Naudokite „Rodyti peržiūrą“ mygtuką, kad išmėgintumėte savo naująjį CSS/JS prieš išsaugant.",
+'usercssyoucanpreview' => "'''Patarimas:''' Naudokite „Rodyti peržiūrą“ mygtuką, kad išmėgintumėte savo naująjį CSS prieš išsaugant.",
+'userjsyoucanpreview' => "'''Patarimas:''' Naudokite „Rodyti peržiūrą“ mygtuką, kad išmėgintumėte savo naująjį JS prieš išsaugant.",
'usercsspreview' => "'''Nepamirškite, kad jūs tik peržiūrit savo naudotojo CSS, jis dar nebuvo išsaugotas!'''",
'userjspreview' => "'''Nepamirškite, kad jūs tik testuojat/peržiūrit savo naudotojo JavaScript, jis dar nebuvo išsaugotas!'''",
'userinvalidcssjstitle' => "'''Dėmesio:''' Nėra jokios išvaizdos „$1“. Nepamirškite, kad savo .css ir .js puslapiai naudoja pavadinimą mažosiomis raidėmis, pvz., {{ns:user}}:Foo/monobook.css, o ne {{ns:user}}:Foo/Monobook.css.",
@@ -805,13 +830,16 @@ kuris yra didesnis nei daugiausiai leistini $2 kilobaitai. Jis nebus išsaugotas
'readonlywarning' => "'''DĖMESIO: Duomenų bazė buvo užrakinta techninei profilaktikai, todėl šiuo metu negalėsite išsaugoti savo pakeitimų. Siūlome nusikopijuoti tekstą į tekstinį failą ir vėliau jį čia išsaugoti.'''
Ją užrakinusio administratoriaus paaiškinimas: $1",
-'protectedpagewarning' => "'''DĖMESIO: Šis puslapis yra užrakintas taip, kad jį redaguoti gali tik administratoriaus teises turintys naudotojai.'''",
-'semiprotectedpagewarning' => "'''Pastaba:''' Šis puslapis buvo užrakintas, jį gali redaguoti tik registruoti naudotojai.",
+'protectedpagewarning' => "'''Dėmesio: Šis puslapis yra užrakintas taip, kad jį redaguoti gali tik administratoriaus teises turintys naudotojai.'''
+Naujausias įrašas žurnale yra pateiktas žemiau:",
+'semiprotectedpagewarning' => "'''Pastaba:''' Šis puslapis buvo užrakintas, jį gali redaguoti tik registruoti naudotojai.
+Naujausias įrašas žurnale yra pateiktas žemiau:",
'cascadeprotectedwarning' => "'''Dėmesio''': Šis puslapis buvo užrakintas taip, kad tik naudotojai su administratoriaus teisėmis galėtų jį redaguoti, nes jis yra įtrauktas į {{PLURAL:$1|šį puslapį, apsaugotą|šiuos puslapius, apsaugotus}} „pakopinės apsaugos“ pasirinktimi:",
-'titleprotectedwarning' => "'''ĮSPĖJIMAS: Šis puslapis buvo užrakintas taip, kad tik [[Special:ListGroupRights|kai kurie naudotojai]] galėtų jį sukurti.'''",
-'templatesused' => 'Puslapyje naudojami šablonai:',
-'templatesusedpreview' => 'Šablonai, naudoti šioje peržiūroje:',
-'templatesusedsection' => 'Šablonai, naudoti šiame skyrelyje:',
+'titleprotectedwarning' => "'''Dėmesio: Šis puslapis buvo užrakintas taip, kad tik [[Special:ListGroupRights|kai kurie naudotojai]] galėtų jį sukurti.'''
+Naujausias įrašas žurnale yra pateiktas žemiau:",
+'templatesused' => '{{PLURAL:$1|Šablonas|Šablonai}}, naudojami puslapyje:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablonas|Šablonai}}, naudoti šioje peržiūroje:',
+'templatesusedsection' => 'Šiame skyriuje {{PLURAL:$1|naudojamas šablonas|naudojami šablonai}}:',
'template-protected' => '(apsaugotas)',
'template-semiprotected' => '(pusiau apsaugotas)',
'hiddencategories' => 'Šis puslapis priklauso $1 {{PLURAL:$1|paslėptai kategorijai|paslėptoms kategorijoms|paslėptų kategorijų}}:',
@@ -820,16 +848,18 @@ Ją užrakinusio administratoriaus paaiškinimas: $1",
'nocreatetext' => '{{SITENAME}} apribojo galimybę kurti naujus puslapius.
Jūs galite grįžti ir redaguoti jau esantį puslapį, arba [[Special:UserLogin|prisijungti arba sukurti paskyrą]].',
'nocreate-loggedin' => 'Jūs neturite teisės kurti puslapius.',
+'sectioneditnotsupported-title' => 'Skyrių redagavimas nepalaikomas',
+'sectioneditnotsupported-text' => 'Šiame puslapyje skyrių redagavimas nepalaikomas.',
'permissionserrors' => 'Teisių klaida',
'permissionserrorstext' => 'Jūs neturite teisių tai daryti dėl {{PLURAL:$1|šios priežasties|šių priežasčių}}:',
'permissionserrorstext-withaction' => 'Jūs neturite leidimo $2 dėl {{PLURAL:$1|šios priežasties|šių priežasčių}}:',
-'recreate-deleted-warn' => "'''Dėmesio: Jūs atkuriate puslapį, kuris anksčiau buvo ištrintas.'''
+'recreate-moveddeleted-warn' => "'''Dėmesio: Jūs atkuriate puslapį, kuris anksčiau buvo ištrintas.'''
-Jūs turite nuspręsti, ar tinka toliau redaguoti šį puslapį.
-Dėl patogumo čia pateikta šio puslapio šalinimų istorija:",
-'deleted-notice' => 'Šis puslapis buvo panaikintas.
-Panaikinto puslapio versijų sąrašas pateiktas žemiau peržiūrėjimui.',
-'deletelog-fulllog' => 'Peržiūrėti visą protokolą',
+Jūs turite nuspręsti, ar reikėtų toliau redaguoti šį puslapį.
+Dėl patogumo čia pateikta šio puslapio šalinimų ir perkėlimų istorija:",
+'moveddeleted-notice' => 'Šis puslapis buvo ištrintas.
+Žemiau pateikta puslapio šalinimų ir pervadinimų istorija.',
+'log-fulllog' => 'Rodyti visą istoriją',
'edit-hook-aborted' => 'Keitimas nutrauktas užlūžimo.
Tam nėra paaiškinimo.',
'edit-gone-missing' => 'Negalima atnaujinti puslapio.
@@ -852,6 +882,7 @@ Kai kurie šablonai nebus įtraukti.',
'post-expand-template-argument-category' => 'Puslapiai, turintys praleistų šablono argumentų',
'parser-template-loop-warning' => 'Aptiktas šablono ciklas: [[$1]]',
'parser-template-recursion-depth-warning' => 'Šablono rekursinio gylio riba viršyta ($1)',
+'language-converter-depth-warning' => 'Kalbos keitiklio gylio riba viršyta ($1)',
# "Undo" feature
'undo-success' => 'Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.',
@@ -871,7 +902,7 @@ $3 nurodyta priežastis yra ''$2''",
'currentrev' => 'Dabartinė versija',
'currentrev-asof' => 'Dabartinė $1 versija',
'revisionasof' => '$1 versija',
-'revision-info' => '$1 versija naudotojo $2', # Additionally available: $3: revision id
+'revision-info' => '$1 versija naudotojo $2',
'previousrevision' => '←Ankstesnė versija',
'nextrevision' => 'Vėlesnė versija→',
'currentrevisionlink' => 'Dabartinė versija',
@@ -884,7 +915,7 @@ $3 nurodyta priežastis yra ''$2''",
Žymėjimai: (dab) = palyginimas su naujausia versija,
(pask) = palyginimas su prieš tai buvusia versija, S = smulkus keitimas.",
'history-fieldset-title' => 'Ieškoti istorijoje',
-'deletedrev' => '[ištrinta]',
+'history-show-deleted' => 'Tik ištrinti',
'histfirst' => 'Seniausi',
'histlast' => 'Paskutiniai',
'historysize' => '($1 {{PLURAL:$1|baitas|baitai|baitų}})',
@@ -893,75 +924,115 @@ $3 nurodyta priežastis yra ''$2''",
# Revision feed
'history-feed-title' => 'Versijų istorija',
'history-feed-description' => 'Šio puslapio versijų istorija projekte',
-'history-feed-item-nocomment' => '$1 $2', # user at time
+'history-feed-item-nocomment' => '$1 $2',
'history-feed-empty' => 'Prašomas puslapis neegzistuoja.
Jis galėjo būti ištrintas iš projekto, arba pervardintas.
Pamėginkite [[Special:Search|ieškoti projekte]] susijusių naujų puslapių.',
# Revision deletion
-'rev-deleted-comment' => '(komentaras pašalintas)',
-'rev-deleted-user' => '(naudotojo vardas pašalintas)',
-'rev-deleted-event' => '(įrašas pašalintas)',
-'rev-deleted-text-permission' => "Ši puslapio versija buvo '''pašalinta'''.
-Daugiau detalių galima rasti [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
-'rev-deleted-text-view' => "Ši puslapio versija buvo '''pašalinta'''.
-Kaip šios svetainės administratorius, jūs galite jį pamatyti;
-daugiau detalių gali būti [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
-'rev-deleted-no-diff' => "Jūs negalite peržiūrėti šio skirtumo, nes viena iš versijų yra '''ištrinta'''.
-Daugiau detalių gali būti [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
-'rev-deleted-unhide-diff' => "One of the revisions of this diff has been '''deleted'''.
-There may be details in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].
-As an administrator you can still [$1 view this diff] if you wish to proceed.
-
-Viena šio skirtumo versijų yra '''ištrinta'''.
-Daugiau detalių gali būti [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].
-Kaip administratorius, jei norite, jūs vis tiek [$1 galite pamatyti šį skirtumą].",
-'rev-delundel' => 'rodyti/slėpti',
-'revisiondelete' => 'Trinti/atkurti versijas',
-'revdelete-nooldid-title' => 'Neleistina paskirties versija',
-'revdelete-nooldid-text' => 'Jūs nenurodėte versijos (-ų), kurioms įvykdyti šią funkciją, nurodyta versija neegzistuoja arba jūs bandote paslėpti esamą versiją.',
-'revdelete-nologtype-title' => 'Nenurodytas istorijos tipas',
-'revdelete-nologtype-text' => 'Jūs nenurodėte istorijos tipo, kuriam atlikti šį veiksmą.',
-'revdelete-toomanytargets-title' => 'Per daug paskirčių',
-'revdelete-toomanytargets-text' => 'Jūs nurodėte per daug paskirčių tipų, kuriems atlikti šį veiksmą.',
-'revdelete-nologid-title' => 'Neleistinas istorijos įrašas',
-'revdelete-nologid-text' => 'Jūs arba nenurodėte paskirties istorijos įvykio, kuriam atlikti šį veiksmą, arba nurodytas įrašas neegzistuoja.',
-'revdelete-selected' => "'''{{PLURAL:$2|Pasirinkta [[:$1]] versija|Pasirinktos [[:$1]] versijos}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Pasirinktas istorijos įvykis|Pasirinkti istorijos įvykiai}}:'''",
-'revdelete-text' => "'''Ištrintos versijos bei įvykiai vistiek dar bus rodomi puslapio istorijoje ir specialiųjų veiksmų istorijoje, bet jų turinio dalys nebus viešai prieinamos.'''
-Kiti administratoriai iš {{SITENAME}} vistiek galės pasiekti paslėptą turinį ir galės jį atkurti vėl per tą pačią sąsają, nebent yra nustatyti papildomi apribojimai.
-
-Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad jūs tai darote atsižvelgdami į [[{{MediaWiki:Policy-url}}|politiką]].",
-'revdelete-suppress-text' => "Ištrynimas turėtų būti taikomas '''tik''' šiais atvejais:
+'rev-deleted-comment' => '(komentaras pašalintas)',
+'rev-deleted-user' => '(naudotojo vardas pašalintas)',
+'rev-deleted-event' => '(įrašas pašalintas)',
+'rev-deleted-user-contribs' => '[vardas arba IP adresas pašalintas - redagavimas paslėptas nuo prisidėjimų]',
+'rev-deleted-text-permission' => "Ši puslapio versija buvo '''pašalinta'''.
+Daugiau detalių galima rasti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
+'rev-deleted-text-unhide' => "Ši puslapio versija buvo '''ištrinta'''.
+Trynimo detales rasite [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ištrintų puslapių sąraše].
+Kaip administratorius, jūs vis dar galite [$1 peržiūrėti šią versiją].",
+'rev-suppressed-text-unhide' => "Ši puslapio versija buvo '''paslėpta'''.
+Daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} slėpimų istorijoje].
+Kaip administratorius, jūs vis dar galite [$1 peržiūrėti šią versiją].",
+'rev-deleted-text-view' => "Ši puslapio versija buvo '''pašalinta'''.
+Kaip administratorius, jūs galite ją pamatyti;
+daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
+'rev-suppressed-text-view' => "Ši puslapio versija buvo '''paslėpta'''.
+Kaip administratorius, jūs galite ją peržiūrėti; daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} slėpimų sąraše].",
+'rev-deleted-no-diff' => "Jūs negalite peržiūrėti šio skirtumo, nes viena iš versijų yra '''ištrinta'''.
+Daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} trynimų istorijoje].",
+'rev-suppressed-no-diff' => "Jūs negalite peržiūrėti šio skirtumo, nes viena iš versijų buvo '''ištrinta'''.",
+'rev-deleted-unhide-diff' => "Viena iš šio skirtumo versijų yra '''ištrinta'''.
+Daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} trynimų istorijoje].
+Kaip administratorius, jūs vis tiek galite [$1 pamatyti šį skirtumą].",
+'rev-suppressed-unhide-diff' => "Viena iš šio skirtumo versijų buvo '''paslėpta'''.
+Daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} slėpimų istorijoje].
+Kaip administratorius, jūs vis dar galite [$1 peržiūrėti šią versiją].",
+'rev-deleted-diff-view' => "Viena iš šio palyginimo versija buvo '''pašalinta'''.
+Kaip administratorius, jūs galite ją pamatyti; daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} trynimų žurnale].",
+'rev-suppressed-diff-view' => "Viena iš šio palyginimo versija buvo '''paslėpta'''.
+Kaip administratorius, jūs galite ją pamatyti; daugiau detalių gali būti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} slėpimų žurnale].",
+'rev-delundel' => 'rodyti/slėpti',
+'rev-showdeleted' => 'rodyti',
+'revisiondelete' => 'Trinti/atkurti versijas',
+'revdelete-nooldid-title' => 'Neleistina paskirties versija',
+'revdelete-nooldid-text' => 'Jūs nenurodėte versijos (-ų), kurioms įvykdyti šią funkciją, nurodyta versija neegzistuoja arba jūs bandote paslėpti esamą versiją.',
+'revdelete-nologtype-title' => 'Nenurodytas istorijos tipas',
+'revdelete-nologtype-text' => 'Jūs nenurodėte istorijos tipo, kuriam atlikti šį veiksmą.',
+'revdelete-nologid-title' => 'Neleistinas istorijos įrašas',
+'revdelete-nologid-text' => 'Jūs arba nenurodėte paskirties istorijos įvykio, kuriam atlikti šį veiksmą, arba nurodytas įrašas neegzistuoja.',
+'revdelete-no-file' => 'Nurodytas failas neegzistuoja.',
+'revdelete-show-file-confirm' => 'Ar tikrai norite peržiūrėti ištrintą failo „<nowiki>$1</nowiki>“ $2 $3 versiją?',
+'revdelete-show-file-submit' => 'Taip',
+'revdelete-selected' => "'''{{PLURAL:$2|Pasirinkta [[:$1]] versija|Pasirinktos [[:$1]] versijos}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Pasirinktas istorijos įvykis|Pasirinkti istorijos įvykiai}}:'''",
+'revdelete-text' => "'''Ištrintos versijos bei įvykiai vistiek dar bus rodomi puslapio istorijoje ir specialiųjų veiksmų istorijoje, bet jų turinio dalys nebus viešai prieinamos.'''
+Kiti administratoriai iš {{SITENAME}} vistiek galės pasiekti paslėptą turinį ir galės jį atkurti vėl per tą pačią sąsają, nebent yra nustatyti papildomi apribojimai.",
+'revdelete-confirm' => 'Prašome patvirtinti, kad jūs tai ketinate padaryti, kad jūs suprantate padarinius, ir kad jūs tai darote pagal [[{{MediaWiki:Policy-url}}|politiką]].',
+'revdelete-suppress-text' => "Ištrynimas turėtų būti taikomas '''tik''' šiais atvejais:
* Netinkama asmeninė informacija
*: ''namų adresai, telefonų numeriai, asmens kodai ir t. t.''",
-'revdelete-legend' => 'Nustatyti matomumo apribojimus:',
-'revdelete-hide-text' => 'Slėpti versijos tekstą',
-'revdelete-hide-name' => 'Slėpti veiksmą ir paskirtį',
-'revdelete-hide-comment' => 'Slėpti redagavimo komentarą',
-'revdelete-hide-user' => 'Slėpti redagavusiojo naudotojo vardą ar IP adresą',
-'revdelete-hide-restricted' => 'Nuslėpti duomenis nuo adminstratorių kaip ir nuo kitų',
-'revdelete-suppress' => 'Slėpti duomenis nuo administratorių kaip ir nuo kitų',
-'revdelete-hide-image' => 'Slėpti failo turinį',
-'revdelete-unsuppress' => 'Šalinti apribojimus atkurtose versijose',
-'revdelete-log' => 'Priežastis:',
-'revdelete-submit' => 'Taikyti pasirinktai versijai',
-'revdelete-logentry' => 'pakeistas [[$1]] versijos matomumas',
-'logdelete-logentry' => 'pakeistas [[$1]] įvykio matomumas',
-'revdelete-success' => "'''Versijos matomumas sėkmingai pakeistas.'''",
-'logdelete-success' => "'''Įvykio matomumas sėkmingai nustatytas.'''",
-'revdel-restore' => 'Keisti matomumą',
-'pagehist' => 'Puslapio istorija',
-'deletedhist' => 'Ištrinta istorija',
-'revdelete-content' => 'turinys',
-'revdelete-summary' => 'keitimo komentaras',
-'revdelete-uname' => 'naudotojo vardas',
-'revdelete-restricted' => 'uždėti apribojimai administratoriams',
-'revdelete-unrestricted' => 'pašalinti apribojimai administratoriams',
-'revdelete-hid' => 'slėpti $1',
-'revdelete-unhid' => 'atslėpti $1',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|versijai|versijoms|versijų}}',
-'logdelete-log-message' => '$1 $2 {{PLURAL:$2|įvykiui|įvykiams|įvykių}}',
+'revdelete-legend' => 'Nustatyti matomumo apribojimus:',
+'revdelete-hide-text' => 'Slėpti versijos tekstą',
+'revdelete-hide-image' => 'Slėpti failo turinį',
+'revdelete-hide-name' => 'Slėpti veiksmą ir paskirtį',
+'revdelete-hide-comment' => 'Slėpti redagavimo komentarą',
+'revdelete-hide-user' => 'Slėpti redagavusiojo naudotojo vardą ar IP adresą',
+'revdelete-hide-restricted' => 'Nuslėpti duomenis nuo adminstratorių kaip ir nuo kitų',
+'revdelete-radio-same' => '(nekeisti)',
+'revdelete-radio-set' => 'Taip',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Slėpti duomenis nuo administratorių kaip ir nuo kitų',
+'revdelete-unsuppress' => 'Šalinti apribojimus atkurtose versijose',
+'revdelete-log' => 'Priežastis:',
+'revdelete-submit' => 'Taikyti {{PLURAL:$1|pasirinktai versijai|pasirinktoms versijoms}}',
+'revdelete-logentry' => 'pakeistas [[$1]] versijos matomumas',
+'logdelete-logentry' => 'pakeistas [[$1]] įvykio matomumas',
+'revdelete-success' => "'''Versijos matomumas sėkmingai pakeistas.'''",
+'revdelete-failure' => "'''Versijos rodomumas negali būti nustatytas:'''
+$1",
+'logdelete-success' => "'''Įvykio matomumas sėkmingai nustatytas.'''",
+'logdelete-failure' => "'''Sąrašo rodomumas negali būti nustatytas:'''
+$1",
+'revdel-restore' => 'Keisti matomumą',
+'pagehist' => 'Puslapio istorija',
+'deletedhist' => 'Ištrinta istorija',
+'revdelete-content' => 'turinys',
+'revdelete-summary' => 'keitimo komentaras',
+'revdelete-uname' => 'naudotojo vardas',
+'revdelete-restricted' => 'uždėti apribojimai administratoriams',
+'revdelete-unrestricted' => 'pašalinti apribojimai administratoriams',
+'revdelete-hid' => 'slėpti $1',
+'revdelete-unhid' => 'atslėpti $1',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|versijai|versijoms|versijų}}',
+'logdelete-log-message' => '$1 $2 {{PLURAL:$2|įvykiui|įvykiams|įvykių}}',
+'revdelete-hide-current' => 'Klaida slepiant $1, $2 keitimą: tai yra dabartinė versija.
+Ji negali būti paslėpta.',
+'revdelete-show-no-access' => 'Klaida rodant $1, $2 keitimą: jis pažymėtas ženklu „apribotas“.
+Jūs neturite teisių jo peržiūrai.',
+'revdelete-modify-no-access' => 'Klaida taisant $1, $2 keitimą: jis pažymėtas ženklu „apribotas“.
+Jūs neturite teisių jo taisymui.',
+'revdelete-modify-missing' => 'Klaida keičiant versiją $1: ji nerandama duomenų bazėje!',
+'revdelete-no-change' => "'''Įspėjimas:''' versija $2, $1 jau turi norimus rodomumo nustatymus.",
+'revdelete-concurrent-change' => 'Klaida keičiant $2, $1 versiją: jos statusas jau buvo pakeistas kažkieno kito kol jūs redagavote.
+Prašome patikrinti sąrašus.',
+'revdelete-only-restricted' => 'Klaida slepiant $1 $2 elementą: jūs negalite paslėpti elementų nuo administratorių peržiūros nepasirenkant vieno iš kitų matomumo nustatymų.',
+'revdelete-reason-dropdown' => '*Dažnos trynimo priežastys
+** Autorinių teisių pažeidimas
+** Netinkama asmeninė informacija
+** Informacija, kuri gali būti šmeižikiška',
+'revdelete-otherreason' => 'Kita/papildoma priežastis:',
+'revdelete-reasonotherlist' => 'Kita priežastis',
+'revdelete-edit-reasonlist' => 'Keisti trynimo priežastis',
+'revdelete-offender' => 'Versijos autorius:',
# Suppression log
'suppressionlog' => 'Trynimo istorija',
@@ -999,67 +1070,13 @@ Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad
'mergelogpagetext' => 'Žemiau yra paskiausių vieno su kitu puslapių sujungimų sąrašas.',
# Diffs
-'history-title' => '„$1“ versijų istorija',
-'difference' => '(Skirtumai tarp versijų)',
-'lineno' => 'Eilutė $1:',
-'compareselectedversions' => 'Palyginti pasirinktas versijas',
-'visualcomparison' => 'Vizualinis palyginimas',
-'wikicodecomparison' => 'Vikiteksto palyginimas',
-'editundo' => 'atšaukti',
-'diff-multi' => '($1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}}.)',
-'diff-movedto' => 'perkelta į $1',
-'diff-styleadded' => '$1 stilius pridėtas',
-'diff-added' => 'pridėta $1',
-'diff-changedto' => 'pakeista į $1',
-'diff-movedoutof' => 'iškelta iš $1',
-'diff-styleremoved' => '$1 stilius pašalintas',
-'diff-removed' => '$1 pašalinta',
-'diff-changedfrom' => 'pakeista iš $1',
-'diff-src' => 'šaltinis',
-'diff-withdestination' => 'su tikslu $1',
-'diff-with' => '&#32;su $1 $2',
-'diff-with-final' => '&#32;ir $1 $2',
-'diff-width' => 'plotis',
-'diff-height' => 'aukštis',
-'diff-p' => "'''paragrafas'''",
-'diff-blockquote' => "'''citata'''",
-'diff-h1' => "'''antraštė (I lygis)'''",
-'diff-h2' => "'''antraštė (II lygis)'''",
-'diff-h3' => "'''antraštė (III lygis)'''",
-'diff-h4' => "'''antraštė (IV lygis)'''",
-'diff-h5' => "'''antraštė (V lygis)'''",
-'diff-pre' => "'''išankstinis blokavimas'''",
-'diff-div' => "'''dalijimas'''",
-'diff-ul' => "'''nesutvarkytas sąrašas'''",
-'diff-ol' => "'''sutvarkytas sąrašas'''",
-'diff-li' => "'''punktų sąrašas'''",
-'diff-table' => "'''lentelė'''",
-'diff-tbody' => "'''lentelės turinys'''",
-'diff-tr' => "'''eilutė'''",
-'diff-td' => "'''langelis'''",
-'diff-th' => "'''antraštė'''",
-'diff-br' => "'''lūžis'''",
-'diff-hr' => "'''horizontali linija'''",
-'diff-code' => "'''kompiuterio kodo blokavimas'''",
-'diff-dl' => "'''reikšmių sąrašas'''",
-'diff-dt' => "'''apibrėžtas terminas'''",
-'diff-dd' => "'''reikšmė'''",
-'diff-input' => "'''įvadas'''",
-'diff-form' => "'''forma'''",
-'diff-img' => "'''paveikslėlis'''",
-'diff-span' => "'''trukmė'''",
-'diff-a' => "'''nuoroda'''",
-'diff-i' => "'''kursyvas'''",
-'diff-b' => "'''paryškinimas'''",
-'diff-strong' => "'''„strong“ įvedimas'''",
-'diff-em' => "'''„em“ įvedimas'''",
-'diff-font' => "'''„font“ įvedimas'''",
-'diff-big' => "'''didelis'''",
-'diff-del' => "'''ištrintas'''",
-'diff-tt' => "'''fiksuotas plotis'''",
-'diff-sub' => "'''subskriptas'''",
-'diff-sup' => "'''superskriptas'''",
-'diff-strike' => "'''perbraukimas'''",
+'history-title' => '„$1“ versijų istorija',
+'difference' => '(Skirtumai tarp versijų)',
+'lineno' => 'Eilutė $1:',
+'compareselectedversions' => 'Palyginti pasirinktas versijas',
+'showhideselectedversions' => 'Rodyti/slėpti pasirinktas versijas',
+'editundo' => 'atšaukti',
+'diff-multi' => '($1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}}.)',
# Search results
'searchresults' => 'Paieškos rezultatai',
@@ -1067,28 +1084,25 @@ Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad
'searchresulttext' => 'Daugiau informacijos apie paiešką projekte {{SITENAME}} rasite [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Jūs ieškote '''[[:$1]]''' ([[Special:Prefixindex/$1|visi puslapiai, prasidedantys „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visi puslapiai, rodantys į „$1“]])",
'searchsubtitleinvalid' => "Ieškoma '''$1'''",
-'noexactmatch' => "'''Nėra jokio puslapio, pavadinto „$1“.''' Jūs galite [[:$1|sukurti šį puslapį]].",
-'noexactmatch-nocreate' => "'''Nėra puslapio su pavadinimu „$1“.'''",
'toomanymatches' => 'Perdaug atitikmenų buvo grąžinta. Prašome pabandyti kitokią užklausą',
'titlematches' => 'Puslapių pavadinimų atitikmenys',
'notitlematches' => 'Jokių pavadinimo atitikmenų',
'textmatches' => 'Puslapio turinio atitikmenys',
'notextmatches' => 'Jokių puslapių teksto atitikmenų',
-'prevn' => 'ankstesnius $1',
-'nextn' => 'tolimesnius $1',
+'prevn' => '{{PLURAL:$1|atgal|ankstesnius $1}}',
+'nextn' => '{{PLURAL:$1|toliau|tolimesnius $1}}',
'prevn-title' => '{{PLURAL:$1|Ankstesnis $1 rezultatas|Ankstesni $1 rezultatai|Ankstesni $1 rezultatų}}',
'nextn-title' => '{{PLURAL:$1|Kitas $1 rezultatas|Kiti $1 rezultatai|Kiti $1 rezultatų}}',
'shown-title' => 'Rodyti $1 {{PLURAL:$1|rezultatą|rezultatus|rezultatus}} puslapyje',
-'viewprevnext' => 'Žiūrėti ($1) ($2) ($3)',
+'viewprevnext' => 'Žiūrėti ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Paieškos nustatymai',
'searchmenu-exists' => "'''Puslapis pavadinimu „[[$1]]“ šioje wiki'''",
'searchmenu-new' => "'''Sukurti puslapį „[[:$1]]“ šioje wiki!'''",
'searchhelp-url' => 'Help:Turinys',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ieškoti puslapių su šiuo priešdėliu]]',
'searchprofile-articles' => 'Turinio puslapiai',
-'searchprofile-articles-and-proj' => 'Turinys ir projekto puslapiai',
-'searchprofile-project' => 'Projekto puslapiai',
-'searchprofile-images' => 'Failai',
+'searchprofile-project' => 'Pagalbos ir projekto puslapiai',
+'searchprofile-images' => 'Daugialypės terpės failai',
'searchprofile-everything' => 'Viskas',
'searchprofile-advanced' => 'Išplėstinė',
'searchprofile-articles-tooltip' => 'Ieškoti čia: $1',
@@ -1096,8 +1110,6 @@ Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad
'searchprofile-images-tooltip' => 'Ieškoti failų',
'searchprofile-everything-tooltip' => 'Ieškoti viso turinio (tame tarpe aptarimų puslapių)',
'searchprofile-advanced-tooltip' => 'Ieškoti skirtingose vardų srityse',
-'prefs-search-nsdefault' => 'Ieškoti naudojantis išankstiniais nustatymais:',
-'prefs-search-nscustom' => 'Ieškoti įprastų vardų sričių:',
'search-result-size' => '$1 ({{PLURAL:$2|1 žodis|$2 žodžiai|$2 žodžių}})',
'search-result-score' => 'Tinkamumas: $1%',
'search-redirect' => '(peradresavimas $1)',
@@ -1110,11 +1122,12 @@ Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad
'search-mwsuggest-disabled' => 'nėra pasiūlymų',
'search-relatedarticle' => 'Susiję',
'mwsuggest-disable' => 'Slėpti AJAX pasiūlymus',
+'searcheverything-enable' => 'Ieškoti visose vardų srityse',
'searchrelated' => 'susiję',
'searchall' => 'visi',
'showingresults' => "Žemiau rodoma iki '''$1''' {{PLURAL:$1|rezultato|rezultatų|rezultatų}} pradedant #'''$2'''.",
'showingresultsnum' => "Žemiau rodoma '''$3''' {{PLURAL:$3|rezultato|rezultatų|rezultatų}}rezultatų pradedant #'''$2'''.",
-'showingresultstotal' => "Žemiau rodom{{PLURAL:$4|as rezultatas '''$1''' iš '''$3'''|i rezultatai '''$1 - $2''' iš '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultatas '''$1''' iš '''$3'''|Rezultatai '''$1 - $2''' iš '''$3'''}} pagal užklausą '''$4'''",
'nonefound' => "'''Pastaba''': Pagal nutylėjimą ieškoma tik kai kuriose vardų srityse. Pamėginkite prirašyti priešdėlį ''all:'', jei norite ieškoti viso turinio (įskaitant aptarimo puslapius, šablonus ir t. t.), arba naudokite norimą vardų sritį kaip priešdėlį.",
'search-nonefound' => 'Nėra rezultatų, atitinkančių užklausą.',
'powersearch' => 'Išplėstinė paieška',
@@ -1122,112 +1135,152 @@ Prašome patvirtinti, kad jūs tikrai to norite, kad suprantate pasekmes, ir kad
'powersearch-ns' => 'Ieškoti vardų srityse:',
'powersearch-redir' => 'Įtraukti peradresavimus',
'powersearch-field' => 'Ieškoti',
+'powersearch-togglelabel' => 'Pažymėti:',
+'powersearch-toggleall' => 'Viską',
+'powersearch-togglenone' => 'Nieko',
'search-external' => 'Išorinė paieška',
'searchdisabled' => 'Projekto {{SITENAME}} paieška yra uždrausta. Galite pamėginti ieškoti Google paieškos sistemoje. Paieškos sistemoje projekto {{SITENAME}} duomenys gali būti pasenę.',
+# Quickbar
+'qbsettings' => 'Greitasis pasirinkimas',
+'qbsettings-none' => 'Nerodyti',
+'qbsettings-fixedleft' => 'Fiksuoti kairėje',
+'qbsettings-fixedright' => 'Fiksuoti dešinėje',
+'qbsettings-floatingleft' => 'Plaukiojantis kairėje',
+'qbsettings-floatingright' => 'Plaukiojantis dešinėje',
+
# Preferences page
-'preferences' => 'Nustatymai',
-'mypreferences' => 'Mano nustatymai',
-'prefs-edits' => 'Keitimų skaičius:',
-'prefsnologin' => 'Neprisijungęs',
-'prefsnologintext' => 'Jums reikia būti <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} prisijungusiam]</span>, kad galėtumėte keisti savo nustatymus.',
-'prefsreset' => 'Nustatymai buvo atstatyti iš saugyklos.',
-'qbsettings' => 'Greitasis pasirinkimas',
-'qbsettings-none' => 'Nerodyti',
-'qbsettings-fixedleft' => 'Fiksuoti kairėje',
-'qbsettings-fixedright' => 'Fiksuoti dešinėje',
-'qbsettings-floatingleft' => 'Plaukiojantis kairėje',
-'qbsettings-floatingright' => 'Plaukiojantis dešinėje',
-'changepassword' => 'Pakeisti slaptažodį',
-'skin' => 'Išvaizda',
-'skin-preview' => 'Peržiūra',
-'math' => 'Matematika',
-'dateformat' => 'Datos formatas',
-'datedefault' => 'Jokio pasirinkimo',
-'datetime' => 'Data ir laikas',
-'math_failure' => 'Nepavyko apdoroti',
-'math_unknown_error' => 'nežinoma klaida',
-'math_unknown_function' => 'nežinoma funkcija',
-'math_lexing_error' => 'leksikos klaida',
-'math_syntax_error' => 'sintaksės klaida',
-'math_image_error' => 'PNG konvertavimas nepavyko; patikrinkite, ar teisingai įdiegta latex, dvips, gs, ir convert',
-'math_bad_tmpdir' => 'Nepavyksta sukurti arba rašyti į matematikos laikinąjį aplanką',
-'math_bad_output' => 'Nepavyksta sukurti arba rašyti į matematikos išvesties aplanką',
-'math_notexvc' => 'Trūksta texvc vykdomojo failo; pažiūrėkite math/README kaip konfigūruoti.',
-'prefs-personal' => 'Naudotojo profilis',
-'prefs-rc' => 'Paskutiniai keitimai',
-'prefs-watchlist' => 'Stebimų sąrašas',
-'prefs-watchlist-days' => 'Dienos rodomos stebimųjų sąraše:',
-'prefs-watchlist-days-max' => '(daugiausiai 7 dienos)',
-'prefs-watchlist-edits' => 'Kiek daugiausia keitimų rodyti išplėstiniame stebimųjų sąraše:',
-'prefs-watchlist-edits-max' => '(didžiausias skaičius: 1000)',
-'prefs-misc' => 'Įvairūs nustatymai',
-'prefs-resetpass' => 'Keisti slaptažodį',
-'saveprefs' => 'Išsaugoti',
-'resetprefs' => 'Išvalyti neišsaugotus pakeitimus',
-'restoreprefs' => 'Atstatyti visus numatytuosius nustatymus',
-'textboxsize' => 'Redagavimas',
-'prefs-edit-boxsize' => 'Redagavimo lango dydis.',
-'rows' => 'Eilutės:',
-'columns' => 'Stulpeliai:',
-'searchresultshead' => 'Paieškos nustatymai',
-'resultsperpage' => 'Rezultatų puslapyje:',
-'contextlines' => 'Eilučių rezultate:',
-'contextchars' => 'Konteksto simbolių eilutėje:',
-'stub-threshold' => 'Puslapį žymėti <a href="#" class="stub">nebaigtu</a>, jei mažesnis nei:',
-'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
-'recentchangesdays-max' => '(daugiausiai $1 {{PLURAL:$1|diena|dienų|dienos}})',
-'recentchangescount' => 'Numatytasis keitimų skaičius, rodomas naujausių keitimų, puslapių istorijose ir įvykių sąrašuose:',
-'savedprefs' => 'Nustatymai sėkmingai išsaugoti.',
-'timezonelegend' => 'Laiko juosta:',
-'timezonetext' => '¹Įveskite, kiek valandų jūsų vietinis laikas skiriasi nuo serverio laiko (UTC).',
-'localtime' => 'Vietinis laikas:',
-'timezoneselect' => 'Laiko juosta:',
-'timezoneuseserverdefault' => 'Naudoti pagal nutylėjimą iš serverio',
-'timezoneuseoffset' => 'Kita (patikslinti skirtumą)',
-'timezoneoffset' => 'Skirtumas¹:',
-'servertime' => 'Serverio laikas:',
-'guesstimezone' => 'Paimti iš naršyklės',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktida',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlanto vandenynas',
-'timezoneregion-australia' => 'Australija',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indijos vandenynas',
-'timezoneregion-pacific' => 'Ramusis vandenynas',
-'allowemail' => 'Leisti siųsti el. laiškus iš kitų naudotojų',
-'prefs-searchoptions' => 'Paieškos nuostatos',
-'prefs-namespaces' => 'Vardų sritys',
-'defaultns' => 'Pagal nutylėjimą ieškoti šiose vardų srityse:',
-'default' => 'pagal nutylėjimą',
-'files' => 'Failai',
-'prefs-custom-css' => 'Asmeninis CSS',
-'prefs-custom-js' => 'Asmeninis JavaSript',
+'preferences' => 'Nustatymai',
+'mypreferences' => 'Mano nustatymai',
+'prefs-edits' => 'Keitimų skaičius:',
+'prefsnologin' => 'Neprisijungęs',
+'prefsnologintext' => 'Jums reikia būti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisijungusiam]</span>, kad galėtumėte keisti savo nustatymus.',
+'changepassword' => 'Pakeisti slaptažodį',
+'prefs-skin' => 'Išvaizda',
+'skin-preview' => 'Peržiūra',
+'prefs-math' => 'Matematika',
+'datedefault' => 'Jokio pasirinkimo',
+'prefs-datetime' => 'Data ir laikas',
+'prefs-personal' => 'Naudotojo profilis',
+'prefs-rc' => 'Paskutiniai keitimai',
+'prefs-watchlist' => 'Stebimų sąrašas',
+'prefs-watchlist-days' => 'Dienos rodomos stebimųjų sąraše:',
+'prefs-watchlist-days-max' => '(daugiausiai 7 dienos)',
+'prefs-watchlist-edits' => 'Kiek daugiausia keitimų rodyti išplėstiniame stebimųjų sąraše:',
+'prefs-watchlist-edits-max' => '(didžiausias skaičius: 1000)',
+'prefs-watchlist-token' => 'Stebimųjų sąrašo raktas:',
+'prefs-misc' => 'Įvairūs nustatymai',
+'prefs-resetpass' => 'Keisti slaptažodį',
+'prefs-email' => 'El. pašto nustatymai',
+'prefs-rendering' => 'Išvaizda',
+'saveprefs' => 'Išsaugoti',
+'resetprefs' => 'Išvalyti neišsaugotus pakeitimus',
+'restoreprefs' => 'Atstatyti visus numatytuosius nustatymus',
+'prefs-editing' => 'Redagavimas',
+'prefs-edit-boxsize' => 'Redagavimo lango dydis.',
+'rows' => 'Eilutės:',
+'columns' => 'Stulpeliai:',
+'searchresultshead' => 'Paieškos nustatymai',
+'resultsperpage' => 'Rezultatų puslapyje:',
+'contextlines' => 'Eilučių rezultate:',
+'contextchars' => 'Konteksto simbolių eilutėje:',
+'stub-threshold' => 'Puslapį žymėti <a href="#" class="stub">nebaigtu</a>, jei mažesnis nei:',
+'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
+'recentchangesdays-max' => '(daugiausiai $1 {{PLURAL:$1|diena|dienos|dienų}})',
+'recentchangescount' => 'Numatytasis rodomas keitimų skaičius:',
+'prefs-help-recentchangescount' => 'Į tai įeina paskutiniai keitimai, puslapių istorijos ir specialiųjų veiksmų istorijos.',
+'prefs-help-watchlist-token' => 'Įrašius slaptą raktą į šį laukelį, bus sugeneruotas RSS srautas su jūsų stebimųjų sąrašu.
+Bet kas, žinantis šio lauko raktą, galės matyti jūsų stebimų sąrašą, todėl pasirinkite saugią reikšmę.
+Galite panaudoti šią atsitiktinai sugeneruotą reikšmę: $1',
+'savedprefs' => 'Nustatymai sėkmingai išsaugoti.',
+'timezonelegend' => 'Laiko juosta:',
+'localtime' => 'Vietinis laikas:',
+'timezoneuseserverdefault' => 'Naudoti pagal nutylėjimą iš serverio',
+'timezoneuseoffset' => 'Kita (patikslinti skirtumą)',
+'timezoneoffset' => 'Skirtumas¹:',
+'servertime' => 'Serverio laikas:',
+'guesstimezone' => 'Paimti iš naršyklės',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktida',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlanto vandenynas',
+'timezoneregion-australia' => 'Australija',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indijos vandenynas',
+'timezoneregion-pacific' => 'Ramusis vandenynas',
+'allowemail' => 'Leisti siųsti el. laiškus iš kitų naudotojų',
+'prefs-searchoptions' => 'Paieškos nuostatos',
+'prefs-namespaces' => 'Vardų sritys',
+'defaultns' => 'Pagal nutylėjimą ieškoti šiose vardų srityse:',
+'default' => 'pagal nutylėjimą',
+'prefs-files' => 'Failai',
+'prefs-custom-css' => 'Asmeninis CSS',
+'prefs-custom-js' => 'Asmeninis JavaSript',
+'prefs-reset-intro' => 'Jūs galite pasinaudoti šiuo puslapiu atstatyti jūsų nustatymus į svetainės numatytuosius.
+Tai nebeatšaukiama.',
+'prefs-emailconfirm-label' => 'El. pašto patvirtinimas:',
+'prefs-textboxsize' => 'Redagavimo lango dydis',
+'youremail' => 'El. paštas:',
+'username' => 'Naudotojo vardas:',
+'uid' => 'Naudotojo ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|Grupės|Grupių}} narys:',
+'prefs-registration' => 'Registravimosi laikas:',
+'yourrealname' => 'Tikrasis vardas:',
+'yourlanguage' => 'Sąsajos kalba:',
+'yourvariant' => 'Variantas:',
+'yournick' => 'Parašas:',
+'prefs-help-signature' => 'Komentarai aptarimų puslapiuose turėtų būti pasirašyti su „<nowiki>~~~~</nowiki>“, kuris bus paverstas į jūsų parašą ir laiką.',
+'badsig' => 'Neteisingas parašas; patikrinkite HTML žymes.',
+'badsiglength' => 'Jūsų parašas per ilgas.
+Jį turi sudaryti ne daugiau kaip $1 {{PLURAL:$1|simbolis|simboliai|simbolių}}.',
+'yourgender' => 'Lytis:',
+'gender-unknown' => 'Nenurodyta',
+'gender-male' => 'Vyras',
+'gender-female' => 'Moteris',
+'prefs-help-gender' => 'Pasirinktinai: naudojama teisingam sistemos kreipimuisi į jus.
+Ši informacija yra vieša.',
+'email' => 'El. paštas',
+'prefs-help-realname' => 'Tikrasis vardas yra neprivalomas.
+Jei jūs jį įvesite, jis bus naudojamas pažymėti jūsų darbą.',
+'prefs-help-email' => 'El. pašto adresas yra neprivalomas, bet jis leidžia jums gauti naują slaptažodį, jei jūs užmiršote koks jis buvo, o taip pat jūs galite leisti kitiems pasiekti jus per jūsų naudotojo ar naudotojo aptarimo puslapį neatskleidžiant jūsų tapatybės.',
+'prefs-help-email-required' => 'El. pašto adresas yra būtinas.',
+'prefs-info' => 'Pagrindinė informacija',
+'prefs-i18n' => 'Kalbos nustatymai',
+'prefs-signature' => 'Parašas',
+'prefs-dateformat' => 'Datos formatas',
+'prefs-timeoffset' => 'Laiko skirtumas',
+'prefs-advancedediting' => 'Papildomi nustatymai',
+'prefs-advancedrc' => 'Papildomi nustatymai',
+'prefs-advancedrendering' => 'Papildomi nustatymai',
+'prefs-advancedsearchoptions' => 'Papildomi nustatymai',
+'prefs-advancedwatchlist' => 'Papildomi nustatymai',
+'prefs-display' => 'Rodymo nustatymai',
+'prefs-diffs' => 'Skirtumai',
# User rights
-'userrights' => 'Naudotojų teisių valdymas', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Tvarkyti naudotojo grupes',
-'userrights-user-editname' => 'Įveskite naudotojo vardą:',
-'editusergroup' => 'Redaguoti naudotojo grupes',
-'editinguser' => "Taisomos naudotojo '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])
+'userrights' => 'Naudotojų teisių valdymas',
+'userrights-lookup-user' => 'Tvarkyti naudotojo grupes',
+'userrights-user-editname' => 'Įveskite naudotojo vardą:',
+'editusergroup' => 'Redaguoti naudotojo grupes',
+'editinguser' => "Taisomos naudotojo '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])
teisės",
-'userrights-editusergroup' => 'Redaguoti naudotojų grupes',
-'saveusergroups' => 'Saugoti naudotojų grupes',
-'userrights-groupsmember' => 'Narys:',
-'userrights-groups-help' => 'Jūs galite pakeisti grupes, kuriose yra šis naudotojas:
+'userrights-editusergroup' => 'Redaguoti naudotojų grupes',
+'saveusergroups' => 'Saugoti naudotojų grupes',
+'userrights-groupsmember' => 'Narys:',
+'userrights-groupsmember-auto' => 'Narys automatiškai:',
+'userrights-groups-help' => 'Jūs galite pakeisti grupes, kuriose yra šis naudotojas:
* Pažymėtas langelis reiškia, kad šis naudotojas yra toje grupėje.
* Nepažymėtas langelis reiškia, kad šis naudotojas nėra toje grupėje.
* * parodo, kad jūs nebegalėsite pašalinti grupės, kai ją pridėsite, ir atvirkščiai.',
-'userrights-reason' => 'Priežastis:',
-'userrights-no-interwiki' => 'Jūs neturite leidimo keisti naudotojų teises kituose projektuose.',
-'userrights-nodatabase' => 'Duomenų bazė $1 neegzistuoja arba yra ne vietinė.',
-'userrights-nologin' => 'Jūs privalote [[Special:UserLogin|prisijungti]] kaip administratorius, kad galėtumėte priskirti naudotojų teises.',
-'userrights-notallowed' => 'Jūsų paskyra neturi teisių priskirti naudotojų teises.',
-'userrights-changeable-col' => 'Grupės, kurias galite keisti',
-'userrights-unchangeable-col' => 'Grupės, kurių negalite keisti',
+'userrights-reason' => 'Priežastis:',
+'userrights-no-interwiki' => 'Jūs neturite leidimo keisti naudotojų teises kituose projektuose.',
+'userrights-nodatabase' => 'Duomenų bazė $1 neegzistuoja arba yra ne vietinė.',
+'userrights-nologin' => 'Jūs privalote [[Special:UserLogin|prisijungti]] kaip administratorius, kad galėtumėte priskirti naudotojų teises.',
+'userrights-notallowed' => 'Jūsų paskyra neturi teisių priskirti naudotojų teises.',
+'userrights-changeable-col' => 'Grupės, kurias galite keisti',
+'userrights-unchangeable-col' => 'Grupės, kurių negalite keisti',
# Groups
'group' => 'Grupė:',
@@ -1280,6 +1333,7 @@ teisės",
'right-bigdelete' => 'Ištrinti puslapius su ilga istorija',
'right-deleterevision' => 'Ištrinti ir atstatyti specifines puslapių versijas',
'right-deletedhistory' => 'Žiūrėti ištrintų puslapių istoriją nerodant susieto teksto',
+'right-deletedtext' => 'Peržiūrėti ištrintą tekstą ir skirtumus tarp ištrintų puslapio versijų.',
'right-browsearchive' => 'Ieškoti ištrintų puslapių',
'right-undelete' => 'Atstatyti puslapį',
'right-suppressrevision' => 'Peržiūrėti ir atstatyti versijas, paslėptas nuo administratorių',
@@ -1293,6 +1347,8 @@ teisės",
'right-editprotected' => 'Redaguoti apsaugotus puslapius (be pakopinės apsaugos)',
'right-editinterface' => 'Redaguoti naudotojo aplinką',
'right-editusercssjs' => 'Redaguoti kitų naudotojų CSS ir JS failus',
+'right-editusercss' => 'Redaguoti kitų naudotojų CSS failus',
+'right-edituserjs' => 'Redaguoti kitų naudotojų JS failus',
'right-rollback' => 'Greitai atmesti paskutinio naudotojo tam tikro puslapio pakeitimus',
'right-markbotedits' => 'Žymėti atmestus keitimus kaip atliktus boto',
'right-noratelimit' => 'Netaikyti greičio apribojimų',
@@ -1309,6 +1365,8 @@ teisės",
'right-siteadmin' => 'Atrakinti ir užrakinti duomenų bazę',
'right-reset-passwords' => 'Atstatyti kitų naudotojų slaptažodžius',
'right-override-export-depth' => 'Eksportuoti puslapius įtraukiant susietus puslapius iki 5 lygio gylio',
+'right-versiondetail' => 'Rodyti išplėstinę programinės įrangos versijos informaciją',
+'right-sendemail' => 'Siųsti el. laišką kitiems naudotojams',
# User rights log
'rightslog' => 'Naudotojų teisių istorija',
@@ -1358,6 +1416,15 @@ teisės",
'recentchanges-legend' => 'Naujausių keitimų parinktys',
'recentchangestext' => 'Šiame puslapyje yra patys naujausi pakeitimai šiame projekte.',
'recentchanges-feed-description' => 'Sekite pačius naujausius projekto keitimus šiame šaltinyje.',
+'recentchanges-label-legend' => 'Paaiškinimai: $1.',
+'recentchanges-legend-newpage' => '$1 - naujas puslapis',
+'recentchanges-label-newpage' => 'Šiuo keitimu sukurtas naujas puslapis',
+'recentchanges-legend-minor' => '$1 - smulkus pakeitimas',
+'recentchanges-label-minor' => 'Tai smulkus pakeitimas',
+'recentchanges-legend-bot' => '$1 - automatizuotas keitimas',
+'recentchanges-label-bot' => 'Šį keitimą atliko automatinė programa',
+'recentchanges-legend-unpatrolled' => '$1 - nepatikrintas keitimas',
+'recentchanges-label-unpatrolled' => 'Šis keitimas dar nebuvo patikrintas',
'rcnote' => "Žemiau yra {{PLURAL:$1|'''1''' pakeitimas|paskutiniai '''$1''' pakeitimai|paskutinių '''$1''' pakeitimų}} per {{PLURAL:$2|dieną|paskutiniąsias '''$2''' dienas|paskutiniųjų '''$2''' dienų}} skaičiuojant nuo $5, $4.",
'rcnotefrom' => "Žemiau yra pakeitimai pradedant '''$2''' (rodoma iki '''$1''' pakeitimų).",
'rclistfrom' => 'Rodyti naujus pakeitimus pradedant $1',
@@ -1384,6 +1451,8 @@ teisės",
# Recent changes linked
'recentchangeslinked' => 'Susiję keitimai',
+'recentchangeslinked-feed' => 'Susiję keitimai',
+'recentchangeslinked-toolbox' => 'Susiję keitimai',
'recentchangeslinked-title' => 'Su „$1“ susiję keitimai',
'recentchangeslinked-noresult' => 'Nėra jokių pakeitimų susietuose puslapiuose duotu periodu.',
'recentchangeslinked-summary' => "Tai paskutinių keitimų, atliktų puslapiuose, į kuriuos yra nuoroda iš nurodyto puslapio (arba į nurodytos kategorijos narius), sąrašas.
@@ -1394,8 +1463,8 @@ Puslapiai iš jūsų [[Special:Watchlist|stebimųjų sąrašo]] yra '''paryškin
# Upload
'upload' => 'Įkelti failą',
'uploadbtn' => 'Įkelti failą',
-'reupload' => 'Pakartoti įkėlimą',
'reuploaddesc' => 'Atšaukti įkėlimą ir grįžti į įkėlimo formą.',
+'upload-tryagain' => 'Siųsti pakeistą failo aprašymą',
'uploadnologin' => 'Neprisijungęs',
'uploadnologintext' => 'Norėdami įkelti failą, turite būti [[Special:UserLogin|prisijungęs]].',
'upload_directory_missing' => 'Nėra įkėlimo aplanko ($1) ir negali būti sukurtas tinklo serverio.',
@@ -1426,6 +1495,7 @@ Norėdami panaudoti įkeltą failą puslapyje, naudokite tokias nuorodas:
'minlength1' => 'Failo pavadinimas turi būti bent viena raidė.',
'illegalfilename' => 'Failo varde „$1“ yra simbolių, neleidžiamų puslapio pavadinimuose. Prašome pervadint failą ir mėginkite įkelti jį iš naujo.',
'badfilename' => 'Failo pavadinimas pakeistas į „$1“.',
+'filetype-mime-mismatch' => 'Failo plėtinys neatitinka MIME tipo.',
'filetype-badmime' => 'Neleidžiama įkelti „$1“ MIME tipo failų.',
'filetype-bad-ie-mime' => 'Negalima įkelti šio failo, kadangi Internet Explorer jį pažymėtų kaip „$1“. Tai yra neleistinas ir potencialiai pavojingas failo tipas.',
'filetype-unwanted-type' => "„.$1“''' yra nepageidautinas failo tipas. {{PLURAL:$3|Pageidautinas failų tipas|pageidautini failų tipai}} yra $2.",
@@ -1444,7 +1514,6 @@ Jei norite, kad jūsų komentaras ten atsirastų, jums reikia jį pakeisti pači
* Įkeliamo failo pavadinimas: '''<tt>[[:$1]]</tt>'''
* Jau esančio failo pavadinimas: '''<tt>[[:$2]]</tt>'''
Prašome pasirinkti kitą vardą.",
-'fileexists-thumb' => "<center>'''Egzistuojantis failas'''</center>",
'fileexists-thumbnail-yes' => "Failas turbūt yra sumažinto dydžio failas ''(miniatiūra)''. [[$1|thumb]]
Prašome peržiūrėti failą '''<tt>[[:$1]]</tt>'''.
Jeigu tai yra toks pats pradinio dydžio paveikslėlis, tai įkelti papildomos miniatūros nereikia.",
@@ -1459,6 +1528,7 @@ Jei visvien norite įkelti savo failą, prašome eiti atgal ir įkelti šį fail
'file-deleted-duplicate' => 'Failas, identiškas šiam failui ([[$1]]), seniau buvo ištrintas. Prieš įkeldami jį vėl patikrinkite šio failo ištrynimo istoriją.',
'successfulupload' => 'Įkelta sėkmingai',
'uploadwarning' => 'Dėmesio',
+'uploadwarning-text' => 'Prašome pakeisti failo aprašymą ir bandykite dar kartą.',
'savefile' => 'Išsaugoti failą',
'uploadedimage' => 'įkėlė „[[$1]]“',
'overwroteimage' => 'įkėlė naują „[[$1]]“ versiją',
@@ -1467,11 +1537,14 @@ Jei visvien norite įkelti savo failą, prašome eiti atgal ir įkelti šį fail
'php-uploaddisabledtext' => "Failų įkėlimai uždrausti PHP nustatymuose.
Patikrinkite ''file_uploads'' nustatą.",
'uploadscripted' => 'Šis failas turi HTML arba programinį kodą, kuris gali būti klaidingai suprastas interneto naršyklės.',
-'uploadcorrupt' => 'Failas yra pažeistas arba turi neteisingą galūnę. Prašome patikrinti failą ir įkeltį jį vėl.',
'uploadvirus' => 'Šiame faile yra virusas! Smulkiau: $1',
+'upload-source' => 'Failo šaltinis',
'sourcefilename' => 'Įkeliamas failas:',
+'sourceurl' => 'Šaltinio adresas:',
'destfilename' => 'Norimas failo vardas:',
'upload-maxfilesize' => 'Didžiausias failo dydis: $1',
+'upload-description' => 'Failo aprašymas',
+'upload-options' => 'Įkėlimo nustatymai',
'watchthisupload' => 'Stebėti šį failą',
'filewasdeleted' => 'Failas šiuo vardu anksčiau buvo įkeltas, o paskui ištrintas. Jums reikėtų patikrinti $1 prieš bandant įkelti jį vėl.',
'upload-wasdeleted' => "'''Įspėjimas: Jūs įkeliate failą, kuris anksčiau buvo ištrintas.'''
@@ -1480,13 +1553,44 @@ Jūs turėtumėte nuspręsti, ar verta toliau įkeldinėti šį failą.
Šio failo šalinimų istorija yra pateikta dėl patogumo:",
'filename-bad-prefix' => "Jūsų įkeliamas failas prasideda su '''„$1“''', bet tai yra neapibūdinantis pavadinimas, dažniausiai priskirtas skaitmeninių kamerų. Prašome suteikti labiau apibūdinantį pavadinimą savo failui.",
-'upload-proto-error' => 'Neteisingas protokolas',
-'upload-proto-error-text' => 'Nuotoliniai įkėlimas reikalauja, kad URL prasidėtų <code>http://</code> arba <code>ftp://</code>.',
-'upload-file-error' => 'Vidinė klaida',
-'upload-file-error-text' => 'Įvyko vidinė klaida bandant sukurti laikinąjį failą serveryje.
+'upload-proto-error' => 'Neteisingas protokolas',
+'upload-proto-error-text' => 'Nuotoliniai įkėlimas reikalauja, kad URL prasidėtų <code>http://</code> arba <code>ftp://</code>.',
+'upload-file-error' => 'Vidinė klaida',
+'upload-file-error-text' => 'Įvyko vidinė klaida bandant sukurti laikinąjį failą serveryje.
Prašome susisiekti su [[Special:ListUsers/sysop|sistemos administratoriumi]].',
-'upload-misc-error' => 'Nežinoma įkėlimo klaida',
-'upload-misc-error-text' => 'Įvyko nežinoma klaida vykstant įkėlimui. Prašome patikrinti, kad URL teisingas bei pasiekiamas ir pamėginkite vėl. Jei problema lieka, susisiekite su sistemos administratoriumi.',
+'upload-misc-error' => 'Nežinoma įkėlimo klaida',
+'upload-misc-error-text' => 'Įvyko nežinoma klaida vykstant įkėlimui. Prašome patikrinti, kad URL teisingas bei pasiekiamas ir pamėginkite vėl. Jei problema lieka, susisiekite su sistemos administratoriumi.',
+'upload-too-many-redirects' => 'URL yra per daug kartų peradresuotas',
+'upload-unknown-size' => 'Nežinomas dydis',
+'upload-http-error' => 'Įvyko HTTP klaida: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Prieiga uždrausta',
+'img-auth-nopathinfo' => 'Trūksta PATH_INFO.
+Jūsų serveris nenustatytas perduoti šią informaciją.
+Tai gali būti CGI paremta ir negali palaikyti img_auth.
+Daugiau informacijos http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Užklaustas kelias nėra sukonfigūruotame įkėlimo kataloge.',
+'img-auth-badtitle' => 'Nepavyksta padaryti leistino pavadinimo iš „$1“.',
+'img-auth-nologinnWL' => 'Jūs nesate prisijungęs ir „$1“ nėra baltajame sąraše.',
+'img-auth-nofile' => 'Failas „$1“ neegzistuoja.',
+'img-auth-isdir' => 'Jūs bandote pasiekti katalogą „$1“.
+Leidžiama prieiga tik prie failų.',
+'img-auth-streaming' => 'Siunčiamas „$1“.',
+'img-auth-public' => 'img_auth.php paskirtis yra pateikti failus iš privačių projektų.
+Šis projektas sukonfigūruotas kaip viešasis.
+Dėl saugumo, img_auth.php yra išjungtas.',
+'img-auth-noread' => 'Naudotojas neturi teisės peržiūrėti „$1“.',
+
+# HTTP errors
+'http-invalid-url' => 'Neleistinas URL: $1',
+'http-invalid-scheme' => 'URL su priedėliu „$1“ nepalaikomi.',
+'http-request-error' => 'HTTP užklausa nepavyko dėl nežinomos klaidos.',
+'http-read-error' => 'HTTP skaitymo klaida.',
+'http-timed-out' => 'HTTP užklausos laikas baigėsi.',
+'http-curl-error' => 'Klaida siunčiantis URL: $1',
+'http-host-unreachable' => 'Nepavyko pasiekti URL.',
+'http-bad-status' => 'Iškilo problemų vykdant HTTP užklausą: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Nepavyksta pasiekti URL',
@@ -1495,6 +1599,7 @@ Prašome susisiekti su [[Special:ListUsers/sysop|sistemos administratoriumi]].',
'upload-curl-error28-text' => 'Atsakant svetainė užtrunka per ilgai. Patikrinkite, ar svetainė veikia, palaukite truputį ir vėl pamėginkite. Galbūt jums reikėtų pamėginti ne tokiu apkrautu metu.',
'license' => 'Licencija:',
+'license-header' => 'Licensija',
'nolicense' => 'Nepasirinkta',
'license-nopreview' => '(Peržiūra negalima)',
'upload_source_url' => ' (tikras, viešai prieinamas URL)',
@@ -1515,6 +1620,7 @@ Paspaudę ant stulpelio antraštės pakeiste išrikiavimą.',
'listfiles_count' => 'Versijos',
# File description page
+'file-anchor-link' => 'Failas',
'filehist' => 'Paveikslėlio istorija',
'filehist-help' => 'Paspauskite ant datos/laiko, kad pamatytumėte failą tokį, koks jis buvo tuo metu.',
'filehist-deleteall' => 'trinti visus',
@@ -1529,6 +1635,7 @@ Paspaudę ant stulpelio antraštės pakeiste išrikiavimą.',
'filehist-dimensions' => 'Matmenys',
'filehist-filesize' => 'Failo dydis',
'filehist-comment' => 'Komentaras',
+'filehist-missing' => 'Failo nėra',
'imagelinks' => 'Failų nuorodos',
'linkstoimage' => '{{PLURAL:$1|Šis puslapis|Šie puslapiai}} nurodo į šį failą:',
'linkstoimage-more' => 'Daugiau nei $1 {{PLURAL:$1|puslapis|puslapiai|puslapių}} rodo į šį failą.
@@ -1538,15 +1645,16 @@ Yra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].',
'morelinkstoimage' => 'Žiūrėti [[Special:WhatLinksHere/$1|daugiau nuorodų]] į šį failą.',
'redirectstofile' => '{{PLURAL:$1|Šis failas|$1 failai}} peradresuoja į šį failą:',
'duplicatesoffile' => 'Šis failas turi {{PLURAL:$1|$1 dublikatą|$1 dublikatus|$1 dublikatų}} ([[Special:FileDuplicateSearch/$2|daugiau informacijos]]):',
-'sharedupload' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Žiūrėkite $1 tolimesnei informacijai.',
-'shareduploadwiki-desc' => 'Aprašymas iš jo $1 yra rodomas žemiau.',
-'shareduploadwiki-linktext' => 'failo aprašymo puslapio',
-'noimage' => 'Failas tokiu pavadinimu neegzistuoja. Jūs galite $1',
-'noimage-linktext' => 'įkelti jį',
+'sharedupload' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.',
+'sharedupload-desc-there' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.
+Norėdami sužinoti daugiau, žiūrėkite [$2 failo aprašymą].',
+'sharedupload-desc-here' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.
+Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.',
+'filepage-nofile' => 'Joks failas su duotu pavadinimu neegzistuoja.',
+'filepage-nofile-link' => 'Joks failas su duotu pavadinimu neegzistuoja, bet vis dar galite [$1 jį įkelti].',
'uploadnewversion-linktext' => 'Įkelti naują failo versiją',
-'shared-repo-from' => 'iš $1', # $1 is the repository name
-'shared-repo' => 'bendrosios failų saugyklos', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'iš $1',
+'shared-repo' => 'bendrosios failų saugyklos',
# File reversion
'filerevert' => 'Sugrąžinti $1',
@@ -1575,6 +1683,7 @@ Yra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].',
** Autorystės teisių pažeidimai
** Pasikartojantis failas',
'filedelete-edit-reasonlist' => 'Keisti trynimo priežastis',
+'filedelete-maintenance' => 'Failų trynimas ir atkūrimas laikinai išjungtas dėl profilaktikos.',
# MIME search
'mimesearch' => 'MIME paieška',
@@ -1595,7 +1704,7 @@ Yra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].',
# Random page
'randompage' => 'Atsitiktinis puslapis',
-'randompage-nopages' => 'Vardų srityje "$1" nėra jokių puslapių.',
+'randompage-nopages' => '{{PLURAL:$2|Šioje vardų srityje|Šiose vardų srityse}} nėra jokių puslapių: $1.',
# Random redirect
'randomredirect' => 'Atsitiktinis peradresavimas',
@@ -1607,6 +1716,7 @@ Yra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].',
'statistics-header-edits' => 'Redagavimų statistika',
'statistics-header-views' => 'Peržiūrų statistika',
'statistics-header-users' => 'Naudotojų statistika',
+'statistics-header-hooks' => 'Kita statistika',
'statistics-articles' => 'Turinio puslapiai',
'statistics-pages' => 'Puslapiai',
'statistics-pages-desc' => 'Visi puslapiai, tarp jų aptarimo, nukreipimų, ir kiti puslapiai.',
@@ -1636,8 +1746,8 @@ Kiekvienoje eilutėje yra nuorodos į pirmąjį ir antrąjį peradresavimą, tai
'brokenredirects' => 'Peradresavimai į niekur',
'brokenredirectstext' => 'Šie peradresavimo puslapiai nurodo į neegzistuojančius puslapius:',
-'brokenredirects-edit' => '(redaguoti)',
-'brokenredirects-delete' => '(trinti)',
+'brokenredirects-edit' => 'redaguoti',
+'brokenredirects-delete' => 'trinti',
'withoutinterwiki' => 'Puslapiai be kalbų nuorodų',
'withoutinterwiki-summary' => 'Šie puslapiai nenurodo į kitų kalbų versijas:',
@@ -1744,7 +1854,7 @@ Galima sumažinti rezultatų skaičių patikslinant veiksmo rūšį, naudotoją
# Special:Categories
'categories' => 'Kategorijos',
-'categoriespagetext' => 'Šios kategorijos turi puslapių ar failų.
+'categoriespagetext' => '{{PLURAL:$1|Ši kategorija|Šios kategorijos}} turi puslapių ar failų.
[[Special:UnusedCategories|Nenaudojamos kategorijos]] čia nerodomos.
Taip pat žiūrėkite [[Special:WantedCategories|trokštamas kategorijas]].',
'categoriesfrom' => 'Vaizduoti kategorijas pradedant nuo:',
@@ -1752,8 +1862,9 @@ Taip pat žiūrėkite [[Special:WantedCategories|trokštamas kategorijas]].',
'special-categories-sort-abc' => 'rikiuoti pagal abėcėlę',
# Special:DeletedContributions
-'deletedcontributions' => 'Ištrintas naudotojo indėlis',
-'deletedcontributions-title' => 'Ištrintas naudotojo indėlis',
+'deletedcontributions' => 'Ištrintas naudotojo indėlis',
+'deletedcontributions-title' => 'Ištrintas naudotojo indėlis',
+'sp-deletedcontributions-contribs' => 'indėlis',
# Special:LinkSearch
'linksearch' => 'Ieškoti išorinių nuorodų',
@@ -1769,6 +1880,16 @@ Palaikomi protokolai: <tt>$1</tt>',
'listusersfrom' => 'Rodyti naudotojus pradedant nuo:',
'listusers-submit' => 'Rodyti',
'listusers-noresult' => 'Nerasta jokių naudotojų.',
+'listusers-blocked' => '(užblokuotas)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktyvių naudotojų sąrašas',
+'activeusers-intro' => 'Tai naudotojų sąrašas, kurie ką nors padarė per $1 {{PLURAL:$1|paskutinę dieną|paskutines dienas|paskutinių dienų}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|keitimas|keitimai|keitimų}} per $3 {{PLURAL:$3|paskutinę dieną|paskutines dienas|paskutinių dienų}}',
+'activeusers-from' => 'Rodyti naudotojus, pradedant:',
+'activeusers-hidebots' => 'Slėpti robotus',
+'activeusers-hidesysops' => 'Slėpti administratorius',
+'activeusers-noresult' => 'Nerasta jokių naudotojų.',
# Special:Log/newusers
'newuserlogpage' => 'Prisiregistravę naudotojai',
@@ -1779,17 +1900,23 @@ Palaikomi protokolai: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Paskyra sukurta automatiškai',
# Special:ListGroupRights
-'listgrouprights' => 'Naudotojų grupių teisės',
-'listgrouprights-summary' => 'Žemiau pateiktas naudotojų grupių, apibrėžtų šioje wiki, ir su jomis susijusių teisių sąrašas.
+'listgrouprights' => 'Naudotojų grupių teisės',
+'listgrouprights-summary' => 'Žemiau pateiktas naudotojų grupių, apibrėžtų šioje wiki, ir su jomis susijusių teisių sąrašas.
Čia gali būti [[{{MediaWiki:Listgrouprights-helppage}}|papildoma informacija]] apie individualias teises.',
-'listgrouprights-group' => 'Grupė',
-'listgrouprights-rights' => 'Teisės',
-'listgrouprights-helppage' => 'Help:Grupės teisės',
-'listgrouprights-members' => '(narių sąrašas)',
-'listgrouprights-addgroup' => 'Gali pridėti {{PLURAL:$2|grupę|grupes}}: $1',
-'listgrouprights-removegroup' => 'Gali pašalinti {{PLURAL:$2|grupę|grupes}}: $1',
-'listgrouprights-addgroup-all' => 'Gali pridėti visas grupes',
-'listgrouprights-removegroup-all' => 'Gali pašalinti visas grupes',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Suteikta teisė</span>
+* <span class="listgrouprights-revoked">Atimta teisė</span>',
+'listgrouprights-group' => 'Grupė',
+'listgrouprights-rights' => 'Teisės',
+'listgrouprights-helppage' => 'Help:Grupės teisės',
+'listgrouprights-members' => '(narių sąrašas)',
+'listgrouprights-addgroup' => 'Gali pridėti {{PLURAL:$2|grupę|grupes}}: $1',
+'listgrouprights-removegroup' => 'Gali pašalinti {{PLURAL:$2|grupę|grupes}}: $1',
+'listgrouprights-addgroup-all' => 'Gali pridėti visas grupes',
+'listgrouprights-removegroup-all' => 'Gali pašalinti visas grupes',
+'listgrouprights-addgroup-self' => 'Priskirti {{PLURAL:$2|grupę|grupes}} savo paskyrai: $1',
+'listgrouprights-removegroup-self' => 'Pašalinti {{PLURAL:$2|grupę|grupes}} iš savo paskyros: $1',
+'listgrouprights-addgroup-self-all' => 'Priskirti visas grupes prie paskyros',
+'listgrouprights-removegroup-self-all' => 'Pašalinti visas grupes iš savo paskyros',
# E-mail user
'mailnologin' => 'Nėra adreso',
@@ -1875,13 +2002,17 @@ Susisiekti su redaguotoju:
el. paštu: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Daugiau pranešimų apie vėlesnius pakeitimus nebus siunčiama, jei neapsilankysite puslapyje. Jūs taip pat galite išjungti pranešimo žymę visiems jūsų stebimiems puslapiams savo stebimųjų sąraše.
+Daugiau pranešimų apie vėlesnius pakeitimus nebus siunčiama, jei neapsilankysite puslapyje.
+Jūs taip pat galite išjungti pranešimo žymę visiems jūsų stebimiems puslapiams savo stebimųjų sąraše.
Jūsų draugiškoji projekto {{SITENAME}} pranešimų sistema
--
Norėdami pakeisti stebimų puslapių nustatymus, užeikite į
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Norėdami puslapį iš stebimų puslapių sąrašo, užeikite į
+$UNWATCHURL
Atsiliepimai ir pagalba:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1895,10 +2026,11 @@ Atsiliepimai ir pagalba:
'exblank' => 'puslapis buvo tuščias',
'delete-confirm' => 'Ištrinti „$1“',
'delete-legend' => 'Trynimas',
-'historywarning' => 'Dėmesio: Trinamas puslapis turi istoriją:',
+'historywarning' => "'''Dėmesio:''' Trinamas puslapis turi istoriją su maždaug $1 {{PLURAL:$1|versija|versijomis|versijų}}:",
'confirmdeletetext' => 'Jūs pasirinkote ištrinti puslapį ar paveikslėlį kartu su visa jo istorija.
Prašome patvirtinti, kad jūs tikrai norite tai padaryti, žinote apie galimus padarinius, ir kad jūs tai darote atsižvelgdami į [[{{MediaWiki:Policy-url}}|politiką]].',
'actioncomplete' => 'Veiksmas atliktas',
+'actionfailed' => 'Veiksmas atšauktas',
'deletedtext' => '„<nowiki>$1</nowiki>“ ištrintas.
Paskutinių šalinimų istorija - $2.',
'deletedarticle' => 'ištrynė „[[$1]]“',
@@ -1919,20 +2051,21 @@ Paskutinių šalinimų istorija - $2.',
'delete-warning-toobig' => 'Šis puslapis turi ilgą keitimų istoriją, daugiau nei $1 {{PLURAL:$1|revizija|revizijos|revizijų}}. Trinant jis gali sutrikdyti {{SITENAME}} duomenų bazės operacijas; būkite atsargūs.',
# Rollback
-'rollback' => 'Atmesti keitimus',
-'rollback_short' => 'Atmesti',
-'rollbacklink' => 'atmesti',
-'rollbackfailed' => 'Atmetimas nepavyko',
-'cantrollback' => 'Negalima atmesti redagavimo; paskutinis keitęs naudotojas yra šio puslapio autorius.',
-'alreadyrolled' => 'Nepavyko atmesti paskutinio [[User:$2|$2]] ([[User talk:$2|Aptarimas]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) daryto puslapio [[:$1]] keitimo;
+'rollback' => 'Atmesti keitimus',
+'rollback_short' => 'Atmesti',
+'rollbacklink' => 'atmesti',
+'rollbackfailed' => 'Atmetimas nepavyko',
+'cantrollback' => 'Negalima atmesti redagavimo; paskutinis keitęs naudotojas yra šio puslapio autorius.',
+'alreadyrolled' => 'Nepavyko atmesti paskutinio [[User:$2|$2]] ([[User talk:$2|Aptarimas]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) daryto puslapio [[:$1]] keitimo;
kažkas jau pakeitė puslapį arba suspėjo pirmas atmesti keitimą.
Paskutimas keitimas darytas naudotojo [[User:$3|$3]] ([[User talk:$3|Aptarimas]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redagavimo komentaras: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Atmestas [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarimas]]) pakeitimas; sugrąžinta naudotojo [[User:$1|$1]] versija', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Atmesti $1 pakeitimai;
+'editcomment' => "Redagavimo komentaras: „''$1''“.",
+'revertpage' => 'Atmestas [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarimas]]) pakeitimas; sugrąžinta naudotojo [[User:$1|$1]] versija',
+'revertpage-nouser' => 'Atmesti (naudotojo vardas pašalintas) pakeitimai, grąžinta prieš tai buvusi [[User:$1|$1]] versija',
+'rollback-success' => 'Atmesti $1 pakeitimai;
grąžinta prieš tai buvusi $2 versija.',
-'sessionfailure' => 'Atrodo yra problemų su jūsų prisijungimo sesija; šis veiksmas buvo atšauktas kaip atsargumo priemonė prieš sesijos vogimą.
+'sessionfailure' => 'Atrodo yra problemų su jūsų prisijungimo sesija; šis veiksmas buvo atšauktas kaip atsargumo priemonė prieš sesijos vogimą.
Prašome paspausti „atgal“ ir perkraukite puslapį iš kurio atėjote, ir pamėginkite vėl.',
# Protect
@@ -1950,7 +2083,7 @@ Dabar veikiančių puslapių apsaugų sąrašą rasite [[Special:ProtectedPages|
'protectexpiry' => 'Baigia galioti:',
'protect_expiry_invalid' => 'Galiojimo laikas neteisingas.',
'protect_expiry_old' => 'Galiojimo laikas yra praeityje.',
-'protect-unchain' => 'Atrakinti pervardinimo teises',
+'protect-unchain-permissions' => 'Atrakinti šiuos apsaugos nustatymus',
'protect-text' => "Čia jūs gali matyti ir keisti apsaugos lygį puslapiui '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Jūs negalite keisti apsaugos lygių, kol esate užbluokuotas.
Čia yra dabartiniai nustatymai puslapiui '''$1''':",
@@ -1979,7 +2112,7 @@ Dabar veikiančių puslapių apsaugų sąrašą rasite [[Special:ProtectedPages|
** Neproduktyvus redagavimo karas
** Didelės svarbos puslapis',
'protect-edit-reasonlist' => 'Keisti užrakinimo priežastis',
-'protect-expiry-options' => '1 valanda:1 hour,1 diena:1 day,1 savaitė:1 week,2 savaitės:2 weeks,1 mėnuo:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year,neribotai:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 valanda:1 hour,1 diena:1 day,1 savaitė:1 week,2 savaitės:2 weeks,1 mėnuo:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year,neribotai:infinite',
'restriction-type' => 'Leidimas:',
'restriction-level' => 'Apribojimo lygis:',
'minimum-size' => 'Min. dydis',
@@ -2019,6 +2152,7 @@ Tokiais atvejais, jums reikia atžymėti arba atslėpti naujausią ištrintą ve
'undelete-nodiff' => 'Nerasta jokių ankstesnių versijų.',
'undeletebtn' => 'Atkurti',
'undeletelink' => 'žiūrėti/atstatyti',
+'undeleteviewlink' => 'žiūrėti',
'undeletereset' => 'Iš naujo',
'undeleteinvert' => 'Žymėti priešingai',
'undeletecomment' => 'Priežastis:',
@@ -2056,19 +2190,24 @@ $1',
'contributions-title' => 'Naudotojo $1 indėlis',
'mycontris' => 'Mano įnašas',
'contribsub2' => 'Naudotojo $1 ($2)',
-'nocontribs' => 'Jokie keitimai neatitiko šių kriterijų.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Jokie keitimai neatitiko šių kriterijų.',
'uctop' => ' (paskutinis)',
'month' => 'Nuo mėnesio (ir anksčiau):',
'year' => 'Nuo metų (ir anksčiau):',
-'sp-contributions-newbies' => 'Rodyti tik naujų paskyrų įnašus',
-'sp-contributions-newbies-sub' => 'Naujoms paskyroms',
-'sp-contributions-newbies-title' => 'Naudotojų keitimai naujoms paskyroms',
-'sp-contributions-blocklog' => 'Blokavimų istorija',
-'sp-contributions-logs' => 'Specialiųjų veiksmų istorija',
-'sp-contributions-search' => 'Ieškoti įnašo',
-'sp-contributions-username' => 'IP adresas arba naudotojo vardas:',
-'sp-contributions-submit' => 'Ieškoti',
+'sp-contributions-newbies' => 'Rodyti tik naujų paskyrų įnašus',
+'sp-contributions-newbies-sub' => 'Naujoms paskyroms',
+'sp-contributions-newbies-title' => 'Naudotojų keitimai naujoms paskyroms',
+'sp-contributions-blocklog' => 'Blokavimų istorija',
+'sp-contributions-deleted' => 'ištrintas naudotojo indėlis',
+'sp-contributions-logs' => 'Specialiųjų veiksmų istorija',
+'sp-contributions-talk' => 'Aptarimas',
+'sp-contributions-userrights' => 'naudotojų teisių valdymas',
+'sp-contributions-blocked-notice' => 'Šis naudotojas šiuo metu užblokuotas.
+Pateikiamas paskutinis blokavimo istorijos įrašas.',
+'sp-contributions-search' => 'Ieškoti įnašo',
+'sp-contributions-username' => 'IP adresas arba naudotojo vardas:',
+'sp-contributions-submit' => 'Ieškoti',
# What links here
'whatlinkshere' => 'Susiję puslapiai',
@@ -2091,6 +2230,7 @@ $1',
# Block/unblock
'blockip' => 'Blokuoti naudotoją',
+'blockip-title' => 'Blokuoti naudotoją',
'blockip-legend' => 'Blokuoti naudotoją',
'blockiptext' => 'Naudokite šią formą norėdami uždrausti rašymo teises nurodytui IP adresui ar naudotojui. Tai turėtų būti atliekama tam, kad sustabdytumėte vandalizmą, ir pagal [[{{MediaWiki:Policy-url}}|politiką]].
Žemiau nurodykite tikslią priežastį (pavyzdžiui, nurodydami sugadintus puslapius).',
@@ -2113,7 +2253,7 @@ $1',
'ipbenableautoblock' => 'Automatiškai blokuoti šio naudotojo paskiausiai naudotą IP adresą, bei bet kokius vėlesnius IP adresus, iš kurių jie mėgina redaguoti',
'ipbsubmit' => 'Blokuoti šį naudotoją',
'ipbother' => 'Kitoks laikas',
-'ipboptions' => '2 valandos:2 hours,1 diena:1 day,3 dienos:3 days,1 savaitė:1 week,2 savaitės:2 weeks,1 mėnesis:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year,neribotai:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 valandos:2 hours,1 diena:1 day,3 dienos:3 days,1 savaitė:1 week,2 savaitės:2 weeks,1 mėnesis:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year,neribotai:infinite',
'ipbotheroption' => 'kita',
'ipbotherreason' => 'Kita/papildoma priežastis',
'ipbhidename' => 'Slėpti naudotojo vardą keitimuose bei sąrašuose',
@@ -2143,9 +2283,11 @@ ankščiau užblokuotam IP adresui ar naudotojui.',
'ipblocklist-sh-tempblocks' => '$1 laikinus blokavimus',
'ipblocklist-sh-addressblocks' => '$1 pavienių IP blokavimus',
'ipblocklist-submit' => 'Ieškoti',
+'ipblocklist-localblock' => 'Vietinis blokavimas',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Kitas blokavimas|Kiti blokavimai}}',
'blocklistline' => '$1, $2 blokavo $3 ($4)',
'infiniteblock' => 'neribotai',
-'expiringblock' => 'baigia galioti $1',
+'expiringblock' => 'baigia galioti $1 $2',
'anononlyblock' => 'tik anonimai',
'noautoblockblock' => 'automatinis blokavimas išjungtas',
'createaccountblock' => 'paskyrų kūrimas uždraustas',
@@ -2159,7 +2301,10 @@ ankščiau užblokuotam IP adresui ar naudotojui.',
'contribslink' => 'įnašas',
'autoblocker' => 'Jūs buvote automatiškai užblokuotas, nes jūsų IP adresą neseniai naudojo „[[User:$1|$1]]“. Nurodyta naudotojo $1 blokavimo priežastis: „$2“.',
'blocklogpage' => 'Blokavimų istorija',
-'blocklog-fulllog' => 'Visas blokavimų sąrašas',
+'blocklog-showlog' => 'Šis naudotojas buvo užblokuotas.
+Pateikiamas paskutinis blokavimo istorijos įrašas.',
+'blocklog-showsuppresslog' => 'Šis naudotojas buvo užblokuotas ir paslėptas anksčiau.
+Žemiau yra pateiktas slėpimų žurnalas:',
'blocklogentry' => 'blokavo [[$1]], blokavimo laikas - $2 $3',
'reblock-logentry' => 'pakeisti [[$1]] blokavimo nustatymai, naujas blokavimo laikas – $2 $3',
'blocklogtext' => 'Čia yra naudotojų blokavimo ir atblokavimo sąrašas.
@@ -2180,9 +2325,11 @@ Jei norite pamatyti dabar blokuojamus adresus, žiūrėkite [[Special:IPBlockLis
'ipb_already_blocked' => '„$1“ jau užblokuotas',
'ipb-needreblock' => '== Jau užblokuotas ==
$1 jau yra užblokuotas. Ar norite pakeisti nustatymus?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Kitas blokavimas|Kiti blokavimai}}',
'ipb_cant_unblock' => 'Klaida: Blokavimo ID $1 nerastas. Galbūt jis jau atblokuotas.',
'ipb_blocked_as_range' => 'Klaida: IP $1 nebuvo užblokuotas tiesiogiai, tad negali būti atblokuotas. Tačiau jis buvo užblokuotas kaip srities $2 dalis, kuri gali būti atblokuota.',
'ip_range_invalid' => 'Neleistina IP sritis.',
+'ip_range_toolarge' => 'Didesni nei /$1 blokai neleidžiami.',
'blockme' => 'Užblokuoti mane',
'proxyblocker' => 'Tarpinių serverių blokuotojas',
'proxyblocker-disabled' => 'Ši funkcija yra išjungta.',
@@ -2191,6 +2338,8 @@ $1 jau yra užblokuotas. Ar norite pakeisti nustatymus?',
'sorbsreason' => 'Jūsų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą šios svetainės.',
'sorbs_create_account_reason' => 'Jūsų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą šios svetainės. Jūs negalite sukurti paskyros',
'cant-block-while-blocked' => 'Jūs negalite blokuoti kitų naudotojų kuomet pats esate užblokuotas.',
+'cant-see-hidden-user' => 'Naudotojas, kurį bandote užblokuoti, jau yra užblokuotas arba paslėptas.
+Kadangi jūs neturi hideuser teisės, jūs negalite pamatyti arba pakeisti naudotojo blokavimo.',
# Developer tools
'lockdb' => 'Užrakinti duomenų bazę',
@@ -2244,6 +2393,7 @@ kad suprantate visas pasekmes.",
Šiais atvejais jūs savo nuožiūra turite perkelti arba apjungti aptarimo puslapį.",
'movearticle' => 'Pervardinti puslapį:',
+'moveuserpage-warning' => "'''Dėmesio:''' Jūs ruošiatės perkelti naudotojo puslapį. Atkreipkite dėmesį, kad bus perkeltas tik puslapis, o naudotojas ''nebus'' pervadintas.",
'movenologin' => 'Neprisijungęs',
'movenologintext' => 'Norėdami pervadinti puslapį, turite būti užsiregistravęs naudotojas ir būti [[Special:UserLogin|prisijungęs]].',
'movenotallowed' => 'Jūs neturite teisių pervadinti puslapių.',
@@ -2254,7 +2404,7 @@ kad suprantate visas pasekmes.",
'move-watch' => 'Stebėti šį puslapį',
'movepagebtn' => 'Pervadinti puslapį',
'pagemovedsub' => 'Pervadinta sėkmingai',
-'movepage-moved' => "'''„$1“ buvo pervadintas į „$2“'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''„$1“ buvo pervadintas į „$2“'''",
'movepage-moved-redirect' => 'Nukreipimas sukurtas.',
'movepage-moved-noredirect' => 'Nukreipimo sukūrimas buvo atšauktas.',
'articleexists' => 'Puslapis tokiu pavadinimu jau egzistuoja
@@ -2299,6 +2449,14 @@ Paskirties puslapis „[[:$1]]“ jau yra. Ar norite jį ištrinti, kad galėtum
'imageinvalidfilename' => 'Failo pavadinimas yra klaidingas',
'fix-double-redirects' => 'Atnaujinti peradresavimus, kad šie rodytų į originalų straipsnio pavadinimą',
'move-leave-redirect' => 'Pervadinant palikti nukreipimą',
+'protectedpagemovewarning' => "'''Dėmesio:''' Šis puslapis buvo užrakintas, kad tik naudotojai su administratoriaus teisėmis galėtų jį pervadinti.
+Naujausias įrašas žurnale yra pateiktas žemiau:",
+'semiprotectedpagemovewarning' => "'''Pastaba''': Šis puslapis buvo užrakintas, kad tik registruoti naudotojai galėtų jį redaguoti.
+Naujausias įrašas žurnale yra pateiktas žemiau:",
+'move-over-sharedrepo' => '== Failas jau yra ==
+[[:$1]] egzistuoja bendrojoje saugykloje. Perkėlus failą į šį pavadinimą, jis pakeis bendrąjį failą.',
+'file-exists-sharedrepo' => 'Pasirinktas failo pavadinimas jau yra naudojamas bendrojoje saugykloje.
+Prašome pasirinkti kitą pavadinimą.',
# Export
'export' => 'Eksportuoti puslapius',
@@ -2321,15 +2479,21 @@ Pastaruoju atveju, jūs taip pat galite naudoti nuorodą, pvz. [[{{#Special:Expo
'export-pagelinks' => 'Įtraukti susietus puslapius iki šio gylio:',
# Namespace 8 related
-'allmessages' => 'Visi sistemos tekstai bei pranešimai',
-'allmessagesname' => 'Pavadinimas',
-'allmessagesdefault' => 'Pradinis tekstas',
-'allmessagescurrent' => 'Dabartinis tekstas',
-'allmessagestext' => 'Čia pateikiamas sisteminių pranešimų sąrašas, esančių MediaWiki vardų srityje.
+'allmessages' => 'Visi sistemos tekstai bei pranešimai',
+'allmessagesname' => 'Pavadinimas',
+'allmessagesdefault' => 'Pradinis tekstas',
+'allmessagescurrent' => 'Dabartinis tekstas',
+'allmessagestext' => 'Čia pateikiamas sisteminių pranešimų sąrašas, esančių MediaWiki vardų srityje.
Aplankykite [http://www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją] ir [http://translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.',
-'allmessagesnotsupportedDB' => "Šis puslapis nepalaikomas, nes nuostata '''\$wgUseDatabaseMessages''' yra išjungtas.",
-'allmessagesfilter' => 'Tekstų pavadinimo filtras:',
-'allmessagesmodified' => 'Rodyti tik pakeistus',
+'allmessagesnotsupportedDB' => "Šis puslapis nepalaikomas, nes nuostata '''\$wgUseDatabaseMessages''' yra išjungtas.",
+'allmessages-filter-legend' => 'Filtras',
+'allmessages-filter' => 'Filtruoti pagal būseną:',
+'allmessages-filter-unmodified' => 'Nepakeisti',
+'allmessages-filter-all' => 'Visi',
+'allmessages-filter-modified' => 'Pakeisti',
+'allmessages-prefix' => 'Filtruoti pagal pradžią:',
+'allmessages-language' => 'Kalba:',
+'allmessages-filter-submit' => 'Rodyti',
# Thumbnails
'thumbnail-more' => 'Padidinti',
@@ -2339,6 +2503,9 @@ Aplankykite [http://www.mediawiki.org/wiki/Localisation „MediaWiki“ lokalizi
'djvu_no_xml' => 'Nepavyksta gauti XML DjVu failui',
'thumbnail_invalid_params' => 'Neleistini miniatiūros parametrai',
'thumbnail_dest_directory' => 'Nepavyksta sukurti paskirties aplanko',
+'thumbnail_image-type' => 'Paveikslėlio tipas nėra palaikomas',
+'thumbnail_gd-library' => 'Nepilna GD bibliotekos konfigūracija: trūksta funkcijos $1',
+'thumbnail_image-missing' => 'Gali būti, kad failo nėra: $1',
# Special:Import
'import' => 'Importuoti puslapius',
@@ -2402,6 +2569,7 @@ Visi tarpprojektiniai importo veiksmai yra registruojami [[Special:Log/import|i
'tooltip-ca-viewsource' => 'Puslapis yra užrakintas. Galite pažiūrėti turinį.',
'tooltip-ca-history' => 'Ankstesnės puslapio versijos.',
'tooltip-ca-protect' => 'Užrakinti šį puslapį',
+'tooltip-ca-unprotect' => 'Atrakinti šį puslapį',
'tooltip-ca-delete' => 'Ištrinti šį puslapį',
'tooltip-ca-undelete' => 'Atkurti puslapį su visais darytais keitimais',
'tooltip-ca-move' => 'Pervadinti puslapį',
@@ -2412,6 +2580,7 @@ Visi tarpprojektiniai importo veiksmai yra registruojami [[Special:Log/import|i
'tooltip-search-fulltext' => 'Ieškoti puslapių su šiuo tekstu',
'tooltip-p-logo' => 'Pradinis puslapis',
'tooltip-n-mainpage' => 'Eiti į pradinį puslapį',
+'tooltip-n-mainpage-description' => 'Eiti į pradinį puslapį',
'tooltip-n-portal' => 'Apie projektą, ką galima daryti, kur ką rasti',
'tooltip-n-currentevents' => 'Raskite naujausią informaciją',
'tooltip-n-recentchanges' => 'Paskutinių keitimų sąrašas šiame projekte.',
@@ -2465,10 +2634,12 @@ Leidžia pridėti atmetimo priežastį komentaruose',
# Attribution
'anonymous' => '{{SITENAME}} {{PLURAL:$1|anoniminis naudotojas|anoniminiai naudotojai}}',
'siteuser' => '{{SITENAME}} naudotojas $1',
-'lastmodifiedatby' => 'Šį puslapį paskutinį kartą redagavo $3 $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anoniminis naudotojas $1',
+'lastmodifiedatby' => 'Šį puslapį paskutinį kartą redagavo $3 $2, $1.',
'othercontribs' => 'Paremta $1 darbu.',
'others' => 'kiti',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|naudotojas|naudotojai}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anoniminis naudotojas|anoniminiai naudotojai}} $1',
'creditspage' => 'Puslapio kūrėjai',
'nocredits' => 'Kūrėjų informacija negalima šiam puslapiui.',
@@ -2505,11 +2676,22 @@ Leidžia pridėti atmetimo priežastį komentaruose',
'mw_math_modern' => 'Rekomenduojama modernioms naršyklėms',
'mw_math_mathml' => 'MathML jei įmanoma (eksperimentinis)',
+# Math errors
+'math_failure' => 'Nepavyko apdoroti',
+'math_unknown_error' => 'nežinoma klaida',
+'math_unknown_function' => 'nežinoma funkcija',
+'math_lexing_error' => 'leksikos klaida',
+'math_syntax_error' => 'sintaksės klaida',
+'math_image_error' => 'PNG konvertavimas nepavyko; patikrinkite, ar teisingai įdiegta latex, dvips, gs, ir convert',
+'math_bad_tmpdir' => 'Nepavyksta sukurti arba rašyti į matematikos laikinąjį aplanką',
+'math_bad_output' => 'Nepavyksta sukurti arba rašyti į matematikos išvesties aplanką',
+'math_notexvc' => 'Trūksta texvc vykdomojo failo; pažiūrėkite math/README kaip konfigūruoti.',
+
# Patrolling
'markaspatrolleddiff' => 'Žymėti, kad patikrinta',
'markaspatrolledtext' => 'Pažymėti, kad puslapis patikrintas',
'markedaspatrolled' => 'Pažymėtas kaip patikrintas',
-'markedaspatrolledtext' => 'Pasirinkta versija sėkmingai pažymėta kaip patikrinta',
+'markedaspatrolledtext' => 'Pasirinkta [[:$1]] versija pažymėta kaip patikrinta.',
'rcpatroldisabled' => 'Paskutinių keitimų tikrinimas išjungtas',
'rcpatroldisabledtext' => 'Paskutinių keitimų tikrinimo funkcija šiuo metu išjungta.',
'markedaspatrollederror' => 'Negalima pažymėti, kad patikrinta',
@@ -2539,13 +2721,10 @@ $1',
'previousdiff' => '← Ankstesnis keitimas',
'nextdiff' => 'Vėlesnis pakeitimas →',
-# Visual comparison
-'visual-comparison' => 'Vizualinis palyginimas',
-
# Media information
'mediawarning' => "'''Dėmesio''': Šis failas gali turėti kenksmingą kodą.
Jį paleidus jūsų sistema gali būti pažeista.",
-'imagemaxsize' => 'Riboti paveikslėlių dydį jų aprašymo puslapyje iki:',
+'imagemaxsize' => "Riboti paveikslėlių dydį:<br />''(failų aprašymo puslapiuose)''",
'thumbsize' => 'Sumažintų paveikslėlių dydis:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|puslapis|puslapiai|puslapių}}',
'file-info' => '(failo dydis: $1, MIME tipas: $2)',
@@ -2554,6 +2733,8 @@ Jį paleidus jūsų sistema gali būti pažeista.",
'svg-long-desc' => '(SVG failas, formaliai $1 × $2 taškų, failo dydis: $3)',
'show-big-image' => 'Pilna raiška',
'show-big-image-thumb' => '<small>Šios peržiūros dydis: $1 × $2 taškų</small>',
+'file-info-gif-looped' => 'ciklinis',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kadras|kadrai|kadrų}}',
# Special:NewFiles
'newimages' => 'Naujausių failų galerija',
@@ -2586,7 +2767,7 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Plotis',
@@ -2713,14 +2894,14 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
'exif-unknowndate' => 'Nežinoma data',
-'exif-orientation-1' => 'Standartinis', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Apversta horizontaliai', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Pasukta 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Apversta vertikaliai', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Pasukta 90° prieš laikrodžio rodyklę ir apversta vertikaliai', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Pasukta 90° laikrodžio rodyklės kryptimi', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Pasukta 90° laikrodžio rodyklės kryptimi ir apversta vertikaliai', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Pasukta 90° prieš laikrodžio rodyklę', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Standartinis',
+'exif-orientation-2' => 'Apversta horizontaliai',
+'exif-orientation-3' => 'Pasukta 180°',
+'exif-orientation-4' => 'Apversta vertikaliai',
+'exif-orientation-5' => 'Pasukta 90° prieš laikrodžio rodyklę ir apversta vertikaliai',
+'exif-orientation-6' => 'Pasukta 90° laikrodžio rodyklės kryptimi',
+'exif-orientation-7' => 'Pasukta 90° laikrodžio rodyklės kryptimi ir apversta vertikaliai',
+'exif-orientation-8' => 'Pasukta 90° prieš laikrodžio rodyklę',
'exif-planarconfiguration-1' => 'stambusis formatas',
'exif-planarconfiguration-2' => 'plokštuminis formatas',
@@ -2845,7 +3026,7 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
'exif-gpsmeasuremode-2' => 'Dvimatis matavimas',
'exif-gpsmeasuremode-3' => 'Trimatis matavimas',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometrai per valandą',
'exif-gpsspeed-m' => 'Mylios per valandą',
'exif-gpsspeed-n' => 'Mazgai',
@@ -2864,6 +3045,7 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
'watchlistall2' => 'visus',
'namespacesall' => 'visos',
'monthsall' => 'visi',
+'limitall' => 'visi',
# E-mail address confirmation
'confirmemail' => 'Patvirtinkite el. pašto adresą',
@@ -2996,7 +3178,7 @@ Jūs taip pat galite [[Special:Watchlist/edit|naudoti standartinį redaktorių]]
'duplicate-defaultsort' => 'Įspėjimas: Numatytasis rikiavimo raktas „$2“ pakeičia ankstesnį numatytąjį rikiavimo raktą „$1“.',
# Special:Version
-'version' => 'Versija', # Not used as normal message but as header for the special page itself
+'version' => 'Versija',
'version-extensions' => 'Įdiegti priedai',
'version-specialpages' => 'Specialieji puslapiai',
'version-parserhooks' => 'Analizatoriaus gaudliai',
@@ -3010,7 +3192,7 @@ Jūs taip pat galite [[Special:Watchlist/edit|naudoti standartinį redaktorių]]
'version-skin-extension-functions' => 'Išvaizdos papildinių funkcijos',
'version-hook-name' => 'Gaudlio pavadinimas',
'version-hook-subscribedby' => 'Užsakyta',
-'version-version' => 'Versija',
+'version-version' => '(Versija $1)',
'version-license' => 'Licencija',
'version-software' => 'Įdiegta programinė įranga',
'version-software-product' => 'Produktas',
@@ -3090,4 +3272,15 @@ Jūs taip pat galite [[Special:Watchlist/edit|naudoti standartinį redaktorių]]
'dberr-outofdate' => 'Mūsų turinio kopijos ten gali būti pasenusios.',
'dberr-cachederror' => 'Tai prašomo puslapio išsaugota kopija, ji gali būti pasenusi.',
+# HTML forms
+'htmlform-invalid-input' => 'Yra problemų su jūsų įvestimi',
+'htmlform-select-badoption' => 'Reikšmė, kurią nurodėte, nėra leistina.',
+'htmlform-int-invalid' => 'Reikšmė, kurią nurodėte, nėra sveikasis skaičius.',
+'htmlform-float-invalid' => 'Nurodyta reikšmė nėra skaičius.',
+'htmlform-int-toolow' => 'Reikšmė, kurią nurodėte, yra mažesnė nei mažiausia leistina $1',
+'htmlform-int-toohigh' => 'Reikšmė, kurią nurodėte, yra didesnė nei didžiausia leistina $1',
+'htmlform-submit' => 'Siųsti',
+'htmlform-reset' => 'Atšaukti pakeitimus',
+'htmlform-selectorother-other' => 'Kita',
+
);
diff --git a/languages/messages/MessagesLtg.php b/languages/messages/MessagesLtg.php
new file mode 100644
index 00000000..9758a7b6
--- /dev/null
+++ b/languages/messages/MessagesLtg.php
@@ -0,0 +1,746 @@
+<?php
+/** Latgalian (Latgaļu)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Dark Eagle
+ * @author Jureits
+ */
+
+$fallback = 'lv';
+
+$messages = array(
+'underline-always' => 'Vysod',
+'underline-never' => 'Nikod',
+
+# Dates
+'sunday' => 'Svātdīne',
+'monday' => 'Pyrmūdīne',
+'tuesday' => 'Ūtardīne',
+'wednesday' => 'Trešdīne',
+'thursday' => 'Catūrtdīne',
+'friday' => 'Pīktdīne',
+'saturday' => 'Sastdīne',
+'january' => 'Janvars / Jaunagods mieness',
+'february' => 'Febraļs / Svacainis mieness',
+'march' => 'Marts / Pavasara mieness',
+'april' => 'Apreļs / Sulu mieness',
+'may_long' => 'Majs / Lopu mieness',
+'june' => 'Juņs / Vosorys mieness',
+'july' => 'Juļs / Sīna mieness',
+'august' => 'Augusts / Labeibys mieness',
+'september' => 'Seņtebrs / Rudiņa mieness',
+'october' => 'Oktobrs / Leita mieness',
+'november' => 'Nojabrs / Solnys mieness',
+'december' => 'Dekabrs / Zīmys mieness',
+'january-gen' => 'Janvara / Jaunagods mieneša',
+'february-gen' => 'Febraļa / Svacainis mieneša',
+'march-gen' => 'Marta / Pavasara mieneša',
+'april-gen' => 'Apreļa / Sulu mieneša',
+'may-gen' => 'Maja / Lopu mieneša',
+'june-gen' => 'Juņa / Vosorys mieneša',
+'july-gen' => 'Juļa / Sīna mieneša',
+'august-gen' => 'Augusta / Labeibys mieneša',
+'september-gen' => 'Seņtebra / Rudiņa mieneša',
+'october-gen' => 'Oktoba / Leita mieneša',
+'november-gen' => 'Nojabra / Solnys mieneša',
+'december-gen' => 'Dekabra / Zīmys mieneša',
+'jan' => 'janv.',
+'feb' => 'febr.',
+'mar' => 'martā',
+'apr' => 'apr.',
+'may' => 'junī',
+'jun' => 'julī',
+'jul' => 'julī',
+'aug' => 'aug.',
+'sep' => 'seņt.',
+'oct' => 'okt.',
+'nov' => 'noj.',
+'dec' => 'dek.',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategoreja|Kategorejis}}',
+'category_header' => 'Puslopys kategorejā "$1"',
+'subcategories' => 'Apakškategorejis / Zamkategorejis',
+'hidden-categories' => '{{PLURAL:$1|Nūglobuota kategoreja|Nūglobuotys kategorejis}}',
+'category-subcat-count' => '{{PLURAL:$2|Itai kategorejai ir tikai vīna apakškategoreja.|Itai kategorejai ir $2 apakškategorejis, nu tom ir {{PLURAL:$1|redzama vīna|redzamys $1}}.}}',
+'category-article-count' => '{{PLURAL:$2|Itei kategoreja satur tikai itū vīnu lopu.|Itamā kategorejā kūpā ir $2 lopys, tagad ir {{PLURAL:$1|radzama vīna nu tom|redzamys $1 no tom}}.}}',
+'listingcontinuesabbrev' => '(tuoļuok)',
+
+'about' => 'Ap',
+'newwindow' => '(atsaver jaunā lopā)',
+'cancel' => 'Atsaukt',
+'moredotdotdot' => 'Vaira...',
+'mypage' => 'Muna puslopa',
+'mytalk' => 'Muna sprīža',
+'navigation' => 'Navigaceja',
+'and' => '&#32;i',
+
+# Cologne Blue skin
+'qbfind' => 'Mekliešona',
+'qbpageoptions' => 'Ita puslopa',
+'qbmyoptions' => 'Munys puslopys',
+'qbspecialpages' => 'Specialuos puslopys',
+
+# Vector skin
+'vector-action-addsection' => 'Dalikt padaļu',
+'vector-action-delete' => 'Iztreit',
+'vector-action-protect' => 'Apsorguot',
+'vector-namespace-category' => 'Kategoreja',
+'vector-namespace-image' => 'Fails',
+'vector-namespace-project' => 'Projekta puslopa',
+'vector-namespace-special' => 'Specialuo puslopa',
+'vector-namespace-talk' => 'Sprīža',
+'vector-namespace-template' => 'Taiss',
+'variants' => 'Varianti',
+
+'errorpagetitle' => 'Klaida',
+'returnto' => 'Atsagrīzt: $1.',
+'tagline' => 'Nu {{SITENAME}}',
+'help' => 'Paleigs',
+'search' => 'Maklātivs',
+'searchbutton' => 'Meklēt',
+'go' => 'Īt',
+'searcharticle' => 'Īt',
+'history' => 'Puslopys viesture',
+'history_short' => 'Viesture',
+'printableversion' => 'Verseja drukavuošonai',
+'permalink' => 'Stypruo saite / Nūtalejuo nūruode',
+'print' => 'Drukavuot',
+'edit' => 'Pataiseit',
+'create' => 'Taiseit jaunu',
+'editthispage' => 'Lobuot itū lopu',
+'delete' => 'Iztreit',
+'deletethispage' => 'Iztreit itu puslopu',
+'protect' => 'Apsorguot',
+'protect_change' => 'maineit',
+'protectthispage' => 'Apsorguot itu puslopu',
+'newpage' => 'Jauna lopa',
+'talkpage' => 'Saruna par itū lopu',
+'talkpagelinktext' => 'Sprīža',
+'personaltools' => 'Muni reiki',
+'talk' => 'Sprīža',
+'views' => 'Vērtīs',
+'toolbox' => 'Reiki',
+'otherlanguages' => 'Cytuos volūduos',
+'redirectedfrom' => '(Puoradresāts nu $1)',
+'redirectpagesub' => 'Puoradresiešonys puslopa',
+'lastmodifiedat' => 'Itymā lopā pādejuos izmainis izdareitys $2, $1.',
+'jumpto' => 'Puorlēkt da:',
+'jumptonavigation' => 'navigaceja',
+'jumptosearch' => 'meklēt',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Ap {{grammar:akuzativs|{{SITENAME}}}}',
+'aboutpage' => 'Project:Ap',
+'copyright' => 'Saturs ir pīejams saisteibā ar $1.',
+'copyrightpage' => '{{ns:project}}:Autors',
+'disclaimers' => 'Daīšmu nūstatejumi',
+'disclaimerpage' => 'Project:Saisteibu nūsacejumi',
+'edithelp' => 'Paleigs',
+'edithelppage' => 'Help:Redigiešona',
+'helppage' => 'Help:Saturs',
+'mainpage' => 'Suoku puslopa',
+'mainpage-description' => 'Suoku puslopa',
+'portal-url' => 'Project:Dūmu meits',
+'privacy' => 'Privatuma politika',
+'privacypage' => 'Project:Privatuma politika',
+
+'badaccess' => 'Atļuovis klaida',
+
+'retrievedfrom' => 'Saturs dabuots nu "$1"',
+'youhavenewmessages' => 'Tev ir $1 (verīs $2).',
+'newmessageslink' => 'Jauna viests',
+'newmessagesdifflink' => 'Pādejais lobuojums',
+'editsection' => 'pataiseit',
+'editold' => 'lobuot',
+'editlink' => 'lobuot',
+'viewsourcelink' => 'Apsavērt suokūtnejū kodu',
+'editsectionhint' => 'Lobuot sadali: $1',
+'toc' => 'Satura ruodeituojs',
+'showtoc' => 'paruodeit',
+'hidetoc' => 'nūglobuot',
+'site-rss-feed' => '$1 RSS pādi',
+'site-atom-feed' => '$1 Atoma pādi',
+'page-rss-feed' => '"$1" RSS pādi',
+'page-atom-feed' => '"$1" Atom pādi',
+'feed-rss' => 'RSS',
+'red-link-title' => '$1 (itaidys lopys navā)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Rakstīņs',
+'nstab-user' => 'Lītuotuoja puslopa',
+'nstab-special' => 'Specialuo lopa',
+'nstab-project' => 'Projekta lopa',
+'nstab-image' => 'Fails',
+'nstab-template' => 'Taiss',
+'nstab-category' => 'Kategoreja',
+
+# General errors
+'error' => 'Klaida',
+'missing-article' => 'Teksts lopai ar nūsaukumu "$1" $2 datu bazā nav atrūnams.
+
+Tys parostai nūtiek vacu saišu gadejumā: pīprosūt izmainis voi viesturi lopai, kas ir dzāsta.
+
+Ka lopai ir juobyut, tod, īspiejams, ir klaida programā.
+Par to var ziņuot [[Special:ListUsers/sysop|kaidam administratoram]], nūruodūt ari URL.',
+'missingarticle-rev' => '(Puorsavieršona#: $1)',
+'badtitletext' => 'Pīpraseituo lopa ir ar klaidu, tukša voi napareizai saisteits dažaidu volūdu voi dažaidu wiki viersroksti. Tys var saturēt vīnu voi vairuokus simbolus, kū navar izmontuot viersrokstūs.',
+'viewsource' => 'Apsavērt kodu',
+
+# Login and logout pages
+'yourname' => 'Tovs lītuotuojvuords / Slāgvuords:',
+'yourpassword' => 'Paroļs:',
+'remembermypassword' => 'Atguoduot munu paroli iz ituo datora',
+'login' => 'Dasaslāgt',
+'nav-login-createaccount' => 'Dasaslāgt / sataiseit jaunu lītuotuoju',
+'userlogin' => 'Dasaslāgt / sataiseit jaunu lītuotuoju',
+'userloginnocreate' => 'Dasaslāgt',
+'logout' => 'Atsaslēgt',
+'userlogout' => 'Atsaslēgt',
+'nologinlink' => 'Registrētīs',
+'createaccount' => 'Sataiseit jaunu lītuotuoju',
+'gotaccountlink' => 'Dasaslāgt',
+'mailmypassword' => 'Atsyuteit maņ jaunu paroli',
+'loginlanguagelabel' => 'Volūda: $1',
+
+# Edit page toolbar
+'bold_sample' => 'Rasnais teksts (Bold)',
+'bold_tip' => 'Rasnais teksts (Bold)',
+'italic_sample' => 'Sleipais roksts',
+'italic_tip' => 'Sleipais roksts',
+'link_sample' => 'Lopys nūsaukums/ viersroksts',
+'link_tip' => 'Īškejuo saite',
+'extlink_sample' => 'http://www.paraugs.com saitis aproksts',
+'extlink_tip' => 'Uorejuo saite (naaizmierst suokumā dalikt "http://")',
+'headline_sample' => 'Viersroksta teksts',
+'headline_tip' => '2. leimiņa viersroksts',
+'math_sample' => 'Formulu īrokst ite',
+'math_tip' => 'Matematiska formula (LaTeX)',
+'nowiki_sample' => 'Ite rokst naformatietu tekstu',
+'nowiki_tip' => 'Najimt vārā wiki formatiejumu',
+'image_tip' => 'Davīnuots fails',
+'media_tip' => 'Saite iz multimediju failu',
+'sig_tip' => 'Tovs paroksts ar laika atzeimi',
+'hr_tip' => 'Horizontaluo lineja (nalīc bez vajadzeibys)',
+
+# Edit pages
+'summary' => 'Kūpsavylkums',
+'subject' => 'Tema/viersroksts:',
+'minoredit' => 'nanūzeimeigs lobuojums',
+'watchthis' => 'Puorraudzeit itū lopu',
+'savearticle' => 'Saglobuot lopu',
+'preview' => 'Apsavērt',
+'showpreview' => 'Apsavērt',
+'showdiff' => 'Paruodeit izmainis',
+'anoneditwarning' => "'''Uzmaneibu:''' tu naesi īguojs kai lītuotuojs. Lopys viesturē tiks īraksteita tovs IP adress.",
+'summary-preview' => 'Apsavērt kūpsavylkumu',
+'newarticle' => '(Jauns roksts)',
+'newarticletext' => "Tu ite tyki caur saitis nu, pagaidam vēļ nauzraksteitys, lopys.
+Kab radeitu lopu, suoc raksteit teksta lūgā apaškā (par teksta formatiešonu i seikuokai informaceja verīs [[{{MediaWiki:Helppage}}|paleigu]]).
+Ka Tu ite tyki deļ klaidys, vīnkuorši daspīd '''back''' pūgu puorlyukprogramā.",
+'noarticletext' => 'Itymā lopā nav nikaida teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt cytuos lopuos piec ituos lopys nūsaukuma]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saisteitūs registru īrokstūs] voi ari [{{fullurl:{{FULLPAGENAME}}|action=edit}} suokt taiseit itū lopu].',
+'previewnote' => "'''Itei ir tikai apsavieršona!'''
+Jiusu izmanis vēļ nav saglobuotys!",
+'editing' => 'Lobuot $1',
+'editingsection' => 'Izmaineit $1 (sadaļa)',
+'copyrightwarning' => "Lyudzu, atguodoj, ka vyss īguļdejums, kas dareits {{grammar:lokatīvs|{{SITENAME}}}}, ir skaitams par publiskuotu saskaņā ar \$2 (vairuok info verīs \$1).
+Ka nagribi, kab Tevi raksteitū kaids redigej i izplota tuoluok, tod, lyudzu, nalīc tū ite!<br />
+
+Izavieljūt \"Saglobuot lopu\", Tu aplīcynoj, ka itū rokstu esi rakstejs voi papyldynovs pats voi izmantovs informaceju nu dorba, kuru naaizsorgoj autortīseibys, voi tamleidzeiga breivi lītojama resursa.
+'''BEZ ATĻUOVIS NADAVĪNOJ DORBU, KURU AIZSORGOJ AUTORTĪSEIBYS!'''",
+'templatesused' => 'Itamā lopā {{PLURAL:$1|izmontuots šablons|izmontuoti šabloni}}:',
+'templatesusedpreview' => 'Itymā izskotā {{PLURAL:$1|lītuotais šablons|lītuotī šabloni}}:',
+'template-protected' => '(aizsorguota)',
+'template-semiprotected' => '(daleji aizsorguota)',
+'hiddencategories' => 'Itei lopa ir {{PLURAL:$1|1 nūglobuotajā kategorejā|$1 nuoglobuotajuos kategorejuos}}:',
+'permissionserrorstext-withaction' => 'Tev nav atļuovis iz $2, deļ {{PLURAL:$1|itaida pamata|itaidu pamatu}}:',
+
+# History pages
+'viewpagelogs' => 'Apsavērt ar itū lopu saisteitūs registru īrokstus',
+'currentrev-asof' => 'Niulinejuo verseja, $1',
+'revisionasof' => 'Verseja, kas saglobuota $1',
+'previousrevision' => '←Vacuoka verseja',
+'nextrevision' => 'Jaunuokuo verseja →',
+'currentrevisionlink' => 'apsavērt tagadejū verseju',
+'cur' => 'ar tagadejū',
+'last' => 'ar īprīškejū',
+'histlegend' => 'Atškireibu izvēle: atzeimej vajadzeigū verseju opoluos pūgys i spīd "Saleidzynuot ituos versejis".<br />
+Apzeimiejumi:
+n = nasvareigs lobuojums.',
+'history-fieldset-title' => 'Meklēt viesturē',
+'histfirst' => 'Vacuokuos',
+'histlast' => 'Jaunuokuos',
+
+# Revision deletion
+'rev-delundel' => 'ruodeit/nūglobuot',
+'revdel-restore' => 'maineit radzameibu',
+
+# Merge log
+'revertmerge' => 'Atceļt apvīnuošonu',
+
+# Diffs
+'history-title' => '"$1" verseju viesture',
+'difference' => '(Versiju saleidzynuojums)',
+'lineno' => '$1 aiļa',
+'compareselectedversions' => 'Saleidzynuot ituos versejis',
+'editundo' => 'atsaukt',
+
+# Search results
+'searchresults' => 'Mekliešonys rezultati',
+'searchresults-title' => 'Mekliešonys rezuļtati "$1"',
+'searchresulttext' => 'Lai dabuotu vaira informacejis par mekliešuonu {{grammar:akuzativs|{{SITENAME}}}}, vērtīs [[{{MediaWiki:Helppage}}|{{grammar:genitivs|{{SITENAME}}}} meklēšana]].',
+'searchsubtitle' => 'Pīprasejums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vysys lopys, kas suoknās ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vysys lopys, kuramuos ir saite iz "$1"]])',
+'searchsubtitleinvalid' => 'Pīprasejums: $1',
+'notitlematches' => 'Nav rezuļtata meklejūt lopys viersrokstā',
+'notextmatches' => 'Nav rezuļtatu meklejūt lopys tekstā',
+'prevn' => 'īprīškejuos {{PLURAL:$1|$1}}',
+'nextn' => 'nuokamuos {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Apsavērt ($1 {{int:pipe-separator}} $2) ($3 vīnā lopā).',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 vuords|$2 vuordi|$2 vuordi}})',
+'search-redirect' => '(puoradresiešona nu $1)',
+'search-section' => '(sadaļa $1)',
+'search-suggest' => 'Voi jius dūmovat: $1',
+'search-interwiki-caption' => 'Citi projekti',
+'search-interwiki-default' => 'Rezuļtati nu $1',
+'search-interwiki-more' => '(vaira)',
+'search-mwsuggest-enabled' => 'Ar īsacejumim',
+'search-mwsuggest-disabled' => 'Bez īsacejumim',
+'searchall' => 'vysi',
+'nonefound' => "'''Pīzeime:''' bīži vin mekliešona ir naveiksmeiga, meklejūt plaši izplateitus vuordus, pīvadumam, \"kai\" voi \"ir\", deļ tam ka tī nateik īkļauti mekliešonys datu bazā, voi ari meklejūt vairuok par vīnu vuordu (deļ tam ka rezuļtatūs pasaruodeis tikai lopys, kuramuos ir visi meklietī vuordi). Vēļ, piec nūklusiejuma, puormeklej tikai dažys ''namespaces''. Lai meklētu vysuos, mekliešonys pīprasejumam prīškā juolīkn ''all:'', voi ari analogā veidā juonūruoda puormekliejamuo ''namespace''.",
+'powersearch' => 'Smolkuo mekliešona',
+'powersearch-legend' => 'Smolkuo mekliešona',
+'powersearch-ns' => 'Meklēt itamuos lopu grupuos:',
+'powersearch-redir' => 'Ruodeit puoradresacejis',
+'powersearch-field' => 'Meklēt',
+'powersearch-toggleall' => 'Vysi',
+'powersearch-togglenone' => 'Nikas',
+
+# Preferences page
+'preferences' => 'Īstatejumi',
+'mypreferences' => 'Muni īstatejumi',
+'saveprefs' => 'Izglobuot',
+'uid' => 'Lītuotuoja ID:',
+'yourlanguage' => 'Volūda:',
+'yourgender' => 'Kuorta:',
+'gender-unknown' => 'Nava nūruodeits',
+'gender-male' => 'Veirīts',
+'gender-female' => 'Sīvīts',
+'prefs-info' => 'Pamatinformaceja',
+
+# Groups
+'group-user' => 'Lītuotuoji',
+'group-sysop' => 'Administratori',
+
+'group-user-member' => 'Lītuotuojs',
+'group-sysop-member' => 'Administrators',
+
+'grouppage-user' => '{{ns:project}}:Lītuotuoji',
+'grouppage-sysop' => '{{ns:project}}:Administratori',
+
+# Rights
+'right-upload' => 'Īsyuteit failus',
+'right-upload_by_url' => 'Īsyuteit failu nu URL adresa',
+
+# User rights log
+'rightslog' => 'Lītuotuoju tīseibu registrs',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'lobuot itū lopu',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|izmaiņa|izmainis}}',
+'recentchanges' => 'Pādejuos izmainis',
+'recentchanges-legend' => 'Pādejūs izmaiņu īspiejis',
+'recentchanges-feed-description' => 'Redzit jaunuokuos wiki izmainis ar itīm pādim.',
+'rcnote' => 'Tagad ir {{PLURAL:$1|radzama pādejuo <strong>$1</strong> izmaiņa, kas izdareita|redzamys pādejuos <strong>$1</strong> izmainis, kas izdareitys}} {{PLURAL:$2|pādejā|pādejuos}} <strong>$2</strong> {{PLURAL:$2|dīnā|dīnuos}} (da $4, $5).',
+'rclistfrom' => 'Paruodeit jaunys izmainis nu $1',
+'rcshowhideminor' => '$1 nasvareigūs',
+'rcshowhidebots' => '$1 robotprogramys',
+'rcshowhideliu' => '$1 dasaslāgtu lītuotuoju',
+'rcshowhideanons' => '$1 anonimūs',
+'rcshowhidemine' => '$1 munus',
+'rclinks' => 'Paruodeit pādejuos $1 izmainis pādejūs $2 dīnu laikā.<br />$3',
+'diff' => 'izmainis',
+'hist' => 'viesture',
+'hide' => 'nūglobuot',
+'show' => 'paruodeit',
+'minoreditletter' => 'n',
+'newpageletter' => 'J',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Ruodeit informaceju (vajadzeigs JavaScript)',
+'rc-enhanced-hide' => 'Nūglobuot detalis',
+
+# Recent changes linked
+'recentchangeslinked' => 'Saisteituos izmanis',
+'recentchangeslinked-title' => 'Izmainis, kas saisteitys ar "$1"',
+'recentchangeslinked-summary' => "Ite ir naseņ izdareituos izmainis lopuos, iz kurom ir saitis nu paruodeituos lopys (voi paruodeitajā kategorejā īlyktuos lopys).
+Lopys, kas ir tovā [[Special:Watchlist|puorraugamūs rokstu sarokstā]] ir '''rasnys'''.",
+'recentchangeslinked-page' => 'Lopys nūsaukums:',
+'recentchangeslinked-to' => 'Ruodeit izmainis lopuos, kur ir saitis iz itū lopu (a na lopuos, iz kurom ir saitis nu ituos lopys)',
+
+# Upload
+'upload' => 'Davīnuot failu',
+'uploadbtn' => 'Īsyuteit failu',
+'uploadlogpage' => 'Davīnuotūs failu registrs',
+'savefile' => 'Izglobuot failu',
+'uploadedimage' => 'davīnuots "[[$1]]"',
+
+'license' => 'Liceņceja:',
+'license-header' => 'Liceņceja',
+
+# Special:ListFiles
+'imgfile' => 'fails',
+'listfiles' => 'Failu saroksts',
+'listfiles_date' => 'Data',
+'listfiles_name' => 'Pasauka',
+'listfiles_user' => 'Lītuotuojs',
+'listfiles_size' => 'Mārs',
+'listfiles_description' => 'Aproksts',
+'listfiles_count' => 'Versejis',
+
+# File description page
+'file-anchor-link' => 'Fails',
+'filehist' => 'Faila viesture',
+'filehist-help' => 'Spīd iz datums/laiks kolonā īlyktuos saitis, kab apsavārtu, kai itais fails izavēre tūlaik.',
+'filehist-current' => 'tagadejais',
+'filehist-datetime' => 'Datums/Laiks',
+'filehist-thumb' => 'Biļde',
+'filehist-thumbtext' => 'Atzeime ? par verseji nu $1',
+'filehist-user' => 'Lītuotuojs',
+'filehist-dimensions' => 'Izmāri',
+'filehist-comment' => 'Komentars',
+'imagelinks' => 'Failu saitis',
+'linkstoimage' => '{{PLURAL:$1|Itamā lopā ir saite|Itamuos $1 lopuos ir saitis}} iz itū failu:',
+'sharedupload' => 'Itais fails ir saglobuots nu $1 i ir kūplītuojams cytūs projektūs.',
+'uploadnewversion-linktext' => 'Saglobuot jaunu ituo faila verseju',
+'shared-repo-from' => 'nu $1',
+
+# File reversion
+'filerevert-comment' => 'Īmesle:',
+
+# File deletion
+'filedelete' => 'Iztreit $1',
+'filedelete-legend' => 'Iztreit failu',
+'filedelete-submit' => 'Iztreit',
+
+# Statistics
+'statistics' => 'Statistika',
+'statistics-pages' => 'Puslopys',
+'statistics-files' => 'Īsyuteiti faili',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|baits|baiti|baitu}}',
+'nmembers' => '$1 {{PLURAL:$1|lopa|lopys}}',
+'prefixindex' => 'Meklēt piec viersroksta pyrmajim burtim',
+'newpages' => 'Jaunys puslopys',
+'move' => 'Puorceļt',
+'movethispage' => 'Puorceļt itū lopu',
+'pager-newer-n' => '{{PLURAL:$1|jaunuoku 1|jaunuokuos $1}}',
+'pager-older-n' => '{{PLURAL:$1|vacuoku 1|vacuokys $1}}',
+
+# Book sources
+'booksources' => 'Gruomotu olūti',
+'booksources-search-legend' => 'Meklēt gruomotu olūtus',
+'booksources-go' => 'Meklēt',
+
+# Special:Log
+'log' => 'Registri',
+
+# Special:AllPages
+'allpages' => 'Vysys puslopys',
+'alphaindexline' => 'nu $1 da $2',
+'prevpage' => 'Īprīškejuo lopa ($1)',
+'allpagesfrom' => 'Paruodeit lobys suocūt ar:',
+'allpagesto' => 'Paruodeit lopys da:',
+'allarticles' => 'Vysys puslopys',
+'allpagessubmit' => 'Īt',
+
+# Special:LinkSearch
+'linksearch' => 'Uorejuos saitis',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Jaunūs lītuotuoju registrs',
+'newuserlog-create-entry' => 'Registrāts lītuotuojvuords',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(dalinīku saroksts)',
+'listgrouprights-addgroup' => 'Dalikt {{PLURAL:$2|grupu|grupys}}: $1',
+
+# E-mail user
+'emailuser' => 'Syuteit e-postu itam lītuotuojam',
+
+# Watchlist
+'watchlist' => 'Muni puorraugamī roksti',
+'mywatchlist' => 'Muni puorraugamī roksti',
+'watchlistfor' => "(deļ '''$1''')",
+'addedwatch' => 'Davīnuots puorraugamū sarokstam.',
+'addedwatchtext' => "Lopa \"[[:\$1]]\" ir davīnuota [[Special:Watchlist|tevis puorraugamajom lopom]], kur tiks paruodeitys izmainis, kas izdareitys itymā lopā voi ituos lopys sarunu lopā, kai ari itei lopa tiks īzeimāta '''pusrasna''' [[Special:RecentChanges|pādejūs izmaiņu lopā]], lai itū byutu vīgluok pamaneit.
+
+Ka vāluok puordūmuosi i nagribiesi vairs puorraudzeit itū lopu, spīd iz saitis '''napuorraudzeit''' reiku jūslā.",
+'removedwatch' => 'Lopa vairs nateik puorraudzeita',
+'removedwatchtext' => 'Lopa "[[:$1]]" ir izjimta nu tova [[Special:Watchlist|puorraugamūs lopu saroksta]].',
+'watch' => 'Puorraudzeit',
+'watchthispage' => 'Puorraudzeit itū lopu',
+'unwatch' => 'Vairs napuorraudzeit',
+'watchlist-details' => '(Tu puorraug $1 {{PLURAL:$1|lopu|lopys}}, naskaitūt sarunu lopys.)',
+'wlshowlast' => 'Paruodeit izmainis pādejūs $1 stuņžu laikā voi $2 dīnu laikā, voi ari $3',
+'watchlist-options' => 'Puorraugamū rokstu saroksta īspiejis',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Davīnoj puorraudzeišonai...',
+'unwatching' => 'Atslādz puorraudzeišonu...',
+
+# Delete
+'deletepage' => 'Iztreit puslopu',
+'confirmdeletetext' => 'Tu tagad nu datu bazys iztreisi lopu voi biļdi, kai ari tūs īprīškejuos versejis. Lyudzu, apstypryni, ka tu pa eistam tū gribi dareit, ka tu saprūt, ka tū dori i atbylstūši [[{{MediaWiki:Policy-url}}|nūsacejumim]].',
+'actioncomplete' => 'Darbeiba pabeigta',
+'deletedtext' => 'Lopa "<nowiki>$1</nowiki>" ir iztreita.
+Ite var apsavērt pādejūs iztreitūs: "$2".',
+'deletedarticle' => 'dzāsts "[[$1]]"',
+'dellogpage' => 'Dziesšonys registrs',
+'deletecomment' => 'Īmesle:',
+'deleteotherreason' => 'Cyts/papyldu pamats:',
+'deletereasonotherlist' => 'Cyts pamats',
+
+# Rollback
+'rollbacklink' => 'nūgrīzt',
+
+# Protect
+'protectlogpage' => 'Aizsorguošonys registrs',
+'protectedarticle' => 'Aizsorgova [[$1]]',
+'modifiedarticleprotection' => 'imaineja aizsardzeibys leimini "[[$1]]"',
+'protectcomment' => 'Īmesle:',
+'protectexpiry' => 'Izabeidz:',
+'protect_expiry_invalid' => 'Beigu termiņš ir nadereigs.',
+'protect_expiry_old' => 'Beigu termiņš jau paguojs.',
+'protect-text' => "Ite var apsavērt i izmaineit lopys '''<nowiki>$1</nowiki>''' aizsardzeibys leimini.",
+'protect-locked-access' => "Jiusu kontam nav atļuovis maineit lopys aizsardzeibys pakuopi.
+Pašreizejī lopys '''$1''' īstatejumi ir:",
+'protect-cascadeon' => 'Itei lopa niu ir aizsorguota, deļ tam ka tei ir īlykta {{PLURAL:$1|itadā lopā|itaiduos lopuos}} (mainūt ituos lopys aizsardzeibys leimini tuos aizsardzeiba nabyus nūjimta):',
+'protect-default' => 'Atļaut visim lītuotuojim',
+'protect-fallback' => 'Vajadzeiga atļuove "$1"',
+'protect-level-autoconfirmed' => 'Bloķēt jaunim i naregistrātim lītuotuojim',
+'protect-level-sysop' => 'Viņ administratorim',
+'protect-summary-cascade' => 'Aizsardzeibys kaskads',
+'protect-expiring' => 'da $1 (UTC)',
+'protect-cascade' => "Aizsorguot itymā lopā īkļautuos lopys (veidnis) ''(cascading protection)''",
+'protect-cantedit' => 'Tu navari izmaineit ituos lopys aizsardzeibys leimiņus, deļ tuo ka tur navari izmaineit itū lopu.',
+'restriction-type' => 'Atļuove:',
+'restriction-level' => 'Aizsardzeibys leimiņs:',
+
+# Restrictions (nouns)
+'restriction-move' => 'Puorceļt',
+
+# Undelete
+'undeletelink' => 'apsavērt/atjaunynuot',
+'undeletedarticle' => 'atjaunynoju "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Lopys veids:',
+'invert' => 'Izavielēt pretejū',
+'blanknamespace' => '(Pamatlopa)',
+
+# Contributions
+'contributions' => 'Lītuotuoja devīņs',
+'contributions-title' => 'Lītuotuoja $1 īguļdejums',
+'mycontris' => 'Muns devīņs',
+'contribsub2' => 'Lītuotuojs: $1 ($2)',
+'uctop' => '(pādejais lobuojums)',
+'month' => 'Nu mieneša (i vacuoki):',
+'year' => 'Nu goda (i vacuoki):',
+
+'sp-contributions-newbies' => 'Ruodeit jaunūs lituotuoju īguļdejumu',
+'sp-contributions-blocklog' => 'Blokiešonys registrs',
+'sp-contributions-search' => 'Meklēt lītuotuoju izdareitūs lobuojumus',
+'sp-contributions-username' => 'IP adress voi lītuotuojvuords',
+'sp-contributions-submit' => 'Meklēt',
+
+# What links here
+'whatlinkshere' => 'Saitis iz itū rokstu / Sasītuos nūruodis',
+'whatlinkshere-title' => 'Lopys, kuramuos ir saitis iz lopu $1',
+'whatlinkshere-page' => 'Lopa:',
+'linkshere' => "Itamuos lopuos ir nūruodis iz lopu '''[[:$1]]''':",
+'isredirect' => 'puoradresacejis lopa',
+'istemplate' => 'izsaukts',
+'isimage' => 'biļdis saite',
+'whatlinkshere-prev' => '{{PLURAL:$1|īprīškejū|īprīškejūs $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|nuokamū|nuokamūs $1}}',
+'whatlinkshere-links' => '← saitis',
+'whatlinkshere-hideredirs' => '$1 puoradresacejis',
+'whatlinkshere-hidetrans' => '$1 transclusions ?',
+'whatlinkshere-hidelinks' => '$1 saitis',
+'whatlinkshere-filters' => 'Filtri',
+
+# Block/unblock
+'blockip' => 'Nūblokēt lītuotuoju',
+'ipboptions' => '2 stuņdis:2 hours,1 dīna:1 day,3 dīnys:3 days,1 nedeļa:1 week,2 nedelis:2 weeks,1 mieness:1 month,3 mieneši:3 months,6 mieneši:6 months,1 gods:1 year,iz nanūsokamu laiku:infinite',
+'ipblocklist' => 'Blokietais IP adress i lītuotuojvuords',
+'blocklink' => 'Nūblokēt',
+'unblocklink' => 'atblokēt',
+'change-blocklink' => 'izmaineit bloku',
+'contribslink' => 'devīņs',
+'blocklogpage' => 'Blokiejumu registris',
+'blocklogentry' => 'noblokieja [[$1]] iz $2 $3',
+'unblocklogentry' => 'atblokieja $1',
+'block-log-flags-nocreate' => 'Kontu radeišonys atslāga',
+
+# Move page
+'movepagetext' => "Itamā lopā tu vari puorsaukt voi puorlikt lopu, kūpā ar tuos izmaiņu hronologeju puorlīkūt tū iz cytu nūsaukumu.
+Īprīškejuo lopa klius par lopu, kas puoradresēs iz jaunū lopu.
+Ite var automatiskai izmaineit vysys puoradresacejis (redirektus) iz itū lopu (2. atzeime apakšā).
+Saitis puorejuos lopuos iz īprīškejū lopu nabyus maineitys. Ka gribi namaineit puoradresacejis automatiskai, puorbaud i izloboj, napīļaunūt [[Special:DoubleRedirects|dubultu puoradresaceji]] voi [[Special:BrokenRedirects|puoradresaceji iz naasūšu lopu]].
+Tev ir juopuorsalīcynoj, voi saitis vēļ vys īt iz tīni, kur tuos ir īdūmuotys.
+
+Jem vārā, ka lopa '''nabyus''' puorvītuota, ka jau eksistej kaida cyta lopa ar itaidu nūsaukumu (izjemūt gadīņus, kod tei ir tukša voi kod tei ir puoradresacejis lopa, kai ari tod, ka tai nav izmaiņu hronologejis).
+Tys zeimoj, ka tu vari puorlikt lopu atpakaļ, nu kurīnis tu jau nazkod esi tū puorlics, ka byusi pīlaids klaidu, bet tu navari puorraksteit jau asūšu lopu.
+
+'''BREIDYNUOJUMS!'''
+Popularom lopom tei var byut kruosa i nagaideita puormaiņa;
+pyrma tuoluok īsšonys apdūmoj, voi tu saprūt, kū eistyn dori.",
+'movepagetalktext' => "Saisteituo sarunu lopa, ka taida eksistej, tiks automatiski puorvītuota, '''izjemūt gadejumus, kod''':
+*tu puorlīc lopu iz cytu paleiglopu,
+*ar jaunū nūsaukumu jau eksistej sarunu lopa, voi ari
+*atzeimiesi zamuok atrūnamū lauceņu.
+
+Ka gribiesi, tod tev itei sarunu lopa byus juopuolīk voi juoapvīnoj pošam.",
+'movearticle' => 'Puorvītuot lopu',
+'newtitle' => 'Iz itaidu jaunu lopu:',
+'move-watch' => 'Puorraudzeit itū lopu',
+'movepagebtn' => 'Puorvītuot lopu',
+'pagemovedsub' => 'Puorvītuošona nūtykuse veiksmeigai',
+'movepage-moved' => '\'\'\'"$1" tyka puorvītuots iz "$2"\'\'\'',
+'articleexists' => 'Lopa ar itaidu nūsaukumu jau ir voi ari tovs nūsaukums nav dereigs. Lyudzu, izavielejit cytu nūsaukumu.',
+'talkexists' => "'''Itei lopa tyka puorvītuota veiksmeigai, bet tuos sarunu lopu navarieja puorvītuot, deļ tuo ka jaunuo nūsaukuma lopai jau ir diskuseju lopa. Lyudzu apvīnoj ituos sarunu lopys pats.'''",
+'movedto' => 'puorvītuota iz',
+'movetalk' => 'Puorvītuot ari sarunu lopu, ka taida ir.',
+'1movedto2' => '"[[$1]]" puorsauču par "[[$2]]"',
+'1movedto2_redir' => '[[$1]] tyka puorsauktys par [[$2]], lītojūt puoradresaceju',
+'movelogpage' => 'Puorvītuošonys registrs',
+'movesubpage' => '{{PLURAL:$1|Zampuslopa|Zampuslopys}}',
+'movereason' => 'Īmesle:',
+'revertmove' => 'atsaukt',
+
+# Export
+'export' => 'Eksportēt lopu',
+'export-addcattext' => 'Dalikt puslopys nu kategorejis',
+'export-addcat' => 'Dalikt',
+'export-addns' => 'Dalikt',
+'export-download' => 'Izglobuot kai failu',
+
+# Namespace 8 related
+'allmessagesname' => 'Pasauka',
+'allmessages-filter-submit' => 'Īt',
+
+# Thumbnails
+'thumbnail-more' => 'Palelynuot',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Tova lopa',
+'tooltip-pt-mytalk' => 'Tova sprīža',
+'tooltip-pt-preferences' => 'Muni īstatejumi',
+'tooltip-pt-watchlist' => 'Lopys, kuru izmainis Tu puorraug',
+'tooltip-pt-mycontris' => 'Tevis padareitais',
+'tooltip-pt-login' => 'Aicynojam Tevi dasaslēgt, koč tei nav spīsta līta',
+'tooltip-pt-logout' => 'Atsaslāgt',
+'tooltip-ca-talk' => 'Diskuseja par ituos lopys rokstu',
+'tooltip-ca-edit' => 'Jius varit izmaineit itū lopu. Lyudzam apsavērt, kai lopa izaver, pyrma tuos saglobuošnoys.',
+'tooltip-ca-addsection' => 'Suokt jaunu sadali',
+'tooltip-ca-viewsource' => 'Itei lopa ir aizsorguota. Tu vari apsavērt tuos suokuma kodu.',
+'tooltip-ca-history' => 'Ituos lopys īprīškejī varianti',
+'tooltip-ca-protect' => 'Apsorguot itū lopu',
+'tooltip-ca-delete' => 'Iztreit itū lopu',
+'tooltip-ca-move' => 'Puorceļt itū lopu',
+'tooltip-ca-watch' => 'Davīnuot itū lopu munam puorraugamajam sarokstam',
+'tooltip-ca-unwatch' => 'Izjimt itū lopu nu puorraugamū saroksta',
+'tooltip-search' => 'Meklēt itymā projektā',
+'tooltip-search-go' => 'Īt iz puslopu ar itaidu nūsaukumu, ka taida ir',
+'tooltip-search-fulltext' => 'Meklēt puslopys ar itū tekstu',
+'tooltip-n-mainpage' => 'Īt iz suokumu',
+'tooltip-n-mainpage-description' => 'Īt da suoku puslopys',
+'tooltip-n-portal' => 'Ap projektu, kū vari dareit i kur vari kū atrast',
+'tooltip-n-currentevents' => 'Papyldinformaceja par tagad aktualajom nūtikšonom',
+'tooltip-n-recentchanges' => 'Jaunuokūs izmaiņu saroksts itymā wiki',
+'tooltip-n-randompage' => 'Apsavērt najauši izvālātu lopu / Īceļt navuošu puslopu',
+'tooltip-n-help' => 'Vīta, kur dazynuot vaira',
+'tooltip-t-whatlinkshere' => 'Vysys wiki lopys, kuramuos ir saitis iz itēni',
+'tooltip-t-recentchangeslinked' => 'Izmainis, kas naseņ pataiseitys, kuramuos ir saitis iz itū lopu',
+'tooltip-feed-rss' => 'Ituos lopys RSS pādi',
+'tooltip-feed-atom' => 'Ituos lopys Atom pādi',
+'tooltip-t-contributions' => 'Apsavērt ituo lītuotuoja padareitūs dorbus.',
+'tooltip-t-emailuser' => 'Syuteit e-postu itam lītuotuojam',
+'tooltip-t-upload' => 'Īsyuteit biļdis ci daudziviesteitivu (multimediju) failus',
+'tooltip-t-specialpages' => 'Vysu specialūs puslopu saroksts',
+'tooltip-t-print' => 'Verseja drukavuošonai',
+'tooltip-t-permalink' => 'Stypruo saite iz itū lopys verseju',
+'tooltip-ca-nstab-main' => 'Apsavērt',
+'tooltip-ca-nstab-user' => 'Apsavērt lītuotuoja lopu',
+'tooltip-ca-nstab-special' => 'Itei ir specialuo lopa, tu navari puormeit pošu lopu.',
+'tooltip-ca-nstab-project' => 'Apsavērt projekta lopu',
+'tooltip-ca-nstab-image' => 'Apsavērt faila lopu',
+'tooltip-ca-nstab-template' => 'Apsavērt šablonu',
+'tooltip-ca-nstab-category' => 'Apsavērt kategorejis lopu',
+'tooltip-minoredit' => 'Atzeimēt itū kai nasvareigu lobuojumu',
+'tooltip-save' => 'Saglobuot izmainis',
+'tooltip-preview' => 'Apsaver izmainis! Lyudzam tū izdareit pyrma saglobuošonys!',
+'tooltip-diff' => 'Paruodeit, kur tekstā esi kū pamainejs.',
+'tooltip-compareselectedversions' => 'Apsavērt atškireibys itamuos lopu versejuos.',
+'tooltip-watch' => 'Davīnuot itū lopu puorraugamajam sarokstam',
+'tooltip-rollback' => 'Apsaver iprīškejūs lobuojumus',
+'tooltip-undo' => '"Atgrīzt" atceļ ituos izmainis i attaisa lobuošonys formu prīškskatejuma veidā.
+Tys ļaun davīnuot pamatuojumu kūpsavylkumā.',
+
+# Browsing diffs
+'previousdiff' => '← Vacuoka verseja',
+'nextdiff' => 'Jaunuokuo verseja →',
+
+# Media information
+'file-info-size' => '($1 × $2 pikseli, faila izmārs: $3, MIME tips: $4)',
+'file-nohires' => '<small>Augstuoka izškirtspieja nav pīejama.</small>',
+'svg-long-desc' => '(SVG fails, definātais lelums $1 × $2 pikseli, faila lelums: $3)',
+'show-big-image' => 'Pylnā lelumā',
+'show-big-image-thumb' => '<small>Ituo pyrmsskota lelums: $1 × $2 pikseli</small>',
+
+# Bad image list
+'bad_image_list' => 'Formats ir taids: tikai saroksta elementi (ryndys, suocūt ar *), ir skaitams par failu. Pyrmuo saite iz ryndys ir saite uz nalobu failu. Sevkurys vāluokys saitis tymā pošā ryndā tīk skaiteitys par izjāmumim, t.i., lopom, kur fails var atsarast ryndys vydā.',
+
+# Metadata
+'metadata' => 'Suokumolūts',
+'metadata-help' => 'Itais fails satur vaira informacejis, kuru vysa dreižuok ir davīnovs digitalais fotoaparats voi cyts aparats, kas itū failu radeja. Ka itais fails piec tam ir maineits, itī dati var byut nūvacovuši.',
+'metadata-expand' => 'Paruodeit papyldu detalis',
+'metadata-collapse' => 'Nūglobuot papyldu detalis',
+'metadata-fields' => 'Itymā paziņuojumā asūši metadatu lauki byus radzami attāla lopā ari tod, kod metadatu tabula byus sateita.
+Puorejī lauki, piec nūklusiejuma, byus nūglobuoti.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Izmaineit itū failu ar uoreju programu',
+'edit-externally-help' => '(Verīs [http://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'vysys',
+'namespacesall' => 'vysys',
+'monthsall' => 'vysi',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Apsavērt atbylstūšuos izmainis',
+'watchlisttools-edit' => 'Apsavērt i pamaineit puorraugamū rokstu listi',
+'watchlisttools-raw' => 'Maineit puorraugamūs rokstu listes kodu',
+
+# Special:Version
+'version-specialpages' => 'Specialuos puslopys',
+
+# Special:SpecialPages
+'specialpages' => 'Specialuos puslopys',
+
+);
diff --git a/languages/messages/MessagesLv.php b/languages/messages/MessagesLv.php
index b16d71b1..09b3d8f4 100644
--- a/languages/messages/MessagesLv.php
+++ b/languages/messages/MessagesLv.php
@@ -10,6 +10,7 @@
* @author Dark Eagle
* @author FnTmLV
* @author GreenZeb
+ * @author Kikos
* @author Knakts
* @author Marozols
* @author Papuass
@@ -26,11 +27,9 @@
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_MAIN => '',
NS_TALK => 'Diskusija',
NS_USER => 'Lietotājs',
NS_USER_TALK => 'Lietotāja_diskusija',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '{{grammar:ģenitīvs|$1}}_diskusija',
NS_FILE => 'Attēls',
NS_FILE_TALK => 'Attēla_diskusija',
@@ -75,6 +74,7 @@ $messages = array(
'tog-enotifminoredits' => 'Paziņot pa e-pastu arī par maznozīmīgiem rakstu labojumiem',
'tog-enotifrevealaddr' => 'Atklāt manu e-pasta adresi paziņojumu vēstulēs',
'tog-shownumberswatching' => 'Rādīt uzraudzītāju skaitu',
+'tog-oldsig' => 'Pašreizējais paraksts:',
'tog-fancysig' => 'Vienkāršs paraksts (bez automātiskās saites)',
'tog-externaleditor' => 'Pēc noklusējuma izmantot ārēju programmu lapu izmainīšanai (tikai pieredzējušiem lietotājiem, nepieciešami speciāli uzstādījumi tavā datorā (lai tas darbotos))',
'tog-externaldiff' => 'Pēc noklusējuma izmantot ārēju programmu izmaiņu parādīšanai (tikai pieredzējušiem lietotājiem, nepieciešami speciāli uzstādījumi tavā datorā (lai tas darbotos))',
@@ -94,6 +94,12 @@ $messages = array(
'underline-never' => 'nekad',
'underline-default' => 'kā pārlūkā',
+# Font style option in Special:Preferences
+'editfont-style' => 'Fonta veids rediģēšanas laukā:',
+'editfont-default' => 'kā pārlūkā',
+'editfont-sansserif' => 'Bezserifa fonts',
+'editfont-serif' => 'Serifa fonts',
+
# Dates
'sunday' => 'svētdiena',
'monday' => 'Pirmdiena',
@@ -153,7 +159,7 @@ $messages = array(
'category-media-header' => 'Faili kategorijā "$1"',
'category-empty' => "''Šī kategorija šobrīd nesatur ne lapas, ne failus''",
'hidden-categories' => '{{PLURAL:$1|Slēpta kategorija|Slēptas kategorijas}}',
-'hidden-category-category' => 'Slēptās kategorijas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Slēptās kategorijas',
'category-subcat-count' => '{{PLURAL:$2|Šajai kategorijai ir tikai viena apakškategorija.|Šajai kategorijai ir $2 apakškategorijas, no kurām ir {{PLURAL:$1|redzama viena|redzamas $1}}.}}',
'category-subcat-count-limited' => 'Šai kategorijai ir {{PLURAL:$1|viena apakškategorija|$1 apakškategorijas}}.',
'category-article-count' => '{{PLURAL:$2|Šī kategorija satur tikai šo vienu lapu.|Šajā kategorijā kopā ir $2 lapas, šobrīd ir {{PLURAL:$1|redzama viena no tām|redzamas $1 no tām}}.}}',
@@ -161,6 +167,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Šī kategorija satur tikai šo vienu failu.|Šajā kategorijā ir $2 faili, no kuriem {{PLURAL:$1|redzams ir viens|ir redzami $1}}.}}',
'category-file-count-limited' => 'Šajā kategorijā atrodas {{PLURAL:$1|tikai šis fails|šie $1 faili}}.',
'listingcontinuesabbrev' => ' (turpinājums)',
+'index-category' => 'Indeksētās lapas',
+'noindex-category' => 'Neindeksētās lapas',
'mainpagetext' => "'''MediaWiki veiksmīgi ieinstalēts'''",
'mainpagedocfooter' => 'Izlasi [http://meta.wikimedia.org/wiki/Help:Contents Lietotāja pamācību], lai iegūtu vairāk informācijas par Wiki programmatūras lietošanu.
@@ -170,10 +178,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki J&A]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Parakstīties uz paziņojumiem par jaunām MediaWiki versijām]',
-'about' => 'Par',
-'article' => 'Raksts',
-'newwindow' => '(atveras jaunā logā)',
-'cancel' => 'Atcelt',
+'about' => 'Par',
+'article' => 'Raksts',
+'newwindow' => '(atveras jaunā logā)',
+'cancel' => 'Atcelt',
+'moredotdotdot' => 'Vairāk...',
+'mypage' => 'Mana lapa',
+'mytalk' => 'Mana diskusiju lapa',
+'anontalk' => 'Šīs IP adreses diskusija',
+'navigation' => 'Navigācija',
+'and' => '&#32;un',
+
+# Cologne Blue skin
'qbfind' => 'Meklēšana',
'qbbrowse' => 'Navigācija',
'qbedit' => 'Izmainīšana',
@@ -181,15 +197,35 @@ $messages = array(
'qbpageinfo' => 'Konteksts',
'qbmyoptions' => 'Manas lapas',
'qbspecialpages' => 'Īpašās lapas',
-'moredotdotdot' => 'Vairāk...',
-'mypage' => 'Mana lapa',
-'mytalk' => 'Mana diskusiju lapa',
-'anontalk' => 'Šīs IP adreses diskusija',
-'navigation' => 'Navigācija',
-'and' => '&#32;un',
-
-# Metadata in edit box
-'metadata_help' => 'Metadati:',
+'faq' => 'BUJ',
+'faqpage' => 'Project:BUJ',
+
+# Vector skin
+'vector-action-addsection' => 'Jauna sadaļa',
+'vector-action-delete' => 'Dzēst',
+'vector-action-move' => 'Pārvietot',
+'vector-action-protect' => 'Aizsargāt',
+'vector-action-undelete' => 'Atjaunot',
+'vector-action-unprotect' => 'Neaizsargāt',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Palīdzības lapa',
+'vector-namespace-image' => 'Attēls',
+'vector-namespace-main' => 'Raksts',
+'vector-namespace-media' => 'Multivides lapa',
+'vector-namespace-mediawiki' => 'Paziņojums',
+'vector-namespace-project' => 'Projekta lapa',
+'vector-namespace-special' => 'Īpašā lapa',
+'vector-namespace-talk' => 'Diskusija',
+'vector-namespace-template' => 'Veidne',
+'vector-namespace-user' => 'Lietotāja lapa',
+'vector-view-create' => 'Izveidot',
+'vector-view-edit' => 'Rediģēt',
+'vector-view-history' => 'Hronoloģija',
+'vector-view-view' => 'Skatīt',
+'vector-view-viewsource' => 'Aplūkot kodu',
+'actions' => 'Darbības',
+'namespaces' => 'Vārdtelpas',
+'variants' => 'Varianti',
'errorpagetitle' => 'Kļūda',
'returnto' => 'Atgriezties: $1.',
@@ -239,18 +275,22 @@ $messages = array(
'otherlanguages' => 'Citās valodās',
'redirectedfrom' => '(Pāradresēts no $1)',
'redirectpagesub' => 'Pāradresācijas lapa',
-'lastmodifiedat' => 'Šajā lapā pēdējās izmaiņas izdarītas $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Šajā lapā pēdējās izmaiņas izdarītas $2, $1.',
'viewcount' => 'Šī lapa ir tikusi apskatīta $1 {{PLURAL:$1|reizi|reizes}}.',
'protectedpage' => 'Aizsargāta lapa',
'jumpto' => 'Pārlēkt uz:',
'jumptonavigation' => 'navigācija',
'jumptosearch' => 'meklēt',
+'view-pool-error' => 'Atvainojiet, šobrīd serveri ir pārslogoti.
+Pārāk daudz lietotāju mēģina apskatīt šo lapu.
+Lūdzu, brīdi uzgaidiet un mēģiniet šo lapu apskatīties vēlreiz.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Par {{grammar:akuzatīvs|{{SITENAME}}}}',
'aboutpage' => 'Project:Par',
'copyright' => 'Saturs ir pieejams saskaņā ar $1.',
-'copyrightpagename' => '{{grammar:ģenitīvs|{{SITENAME}}}} autortiesības',
'copyrightpage' => '{{ns:project}}:Autortiesības',
'currentevents' => 'Aktualitātes',
'currentevents-url' => 'Project:Aktualitātes',
@@ -258,8 +298,6 @@ $messages = array(
'disclaimerpage' => 'Project:Saistību atrunas',
'edithelp' => 'Rediģēšanas palīdzība',
'edithelppage' => 'Help:Rediģēšana',
-'faq' => 'BUJ',
-'faqpage' => 'Project:BUJ',
'helppage' => 'Help:Saturs',
'mainpage' => 'Sākumlapa',
'mainpage-description' => 'Sākumlapa',
@@ -329,10 +367,6 @@ Pēdējais priekšraksts:
"$1"
palaists funkcijā "$2".
Izdotā MySQL kļūda: "$3: $4"',
-'noconnect' => 'Šajā wiki ir radušās tehniskas grūtības un nav iespējams savienoties ar datubāžu serveri. <br />
-$1',
-'nodb' => 'Kļūda, pieslēdzoties datubāzei $1',
-'cachederror' => 'Šī ir lapas saglabātā versija, iespējams, ka tā nav atjaunināta.',
'laggedslavemode' => 'Uzmanību: Iespējams, šajā lapā nav redzami nesen izdarītie papildinājumi.',
'readonly' => 'Datubāze bloķēta',
'readonlytext' => 'Datubāze šobrīd ir bloķēta pret jaunu ierakstu izveidošanu un citām izmaiņām, visticamāk, dēļ kārtējā datubāzes uzturēšanas pasākuma, pēc kura tā tiks atjaunota normālā stāvoklī.
@@ -357,7 +391,7 @@ Par to varat ziņot [[Special:ListUsers/sysop|kādam administratoram]], norādot
'unexpected' => 'Negaidīta vērtība: "$1"="$2".',
'formerror' => 'Kļūda: neizdevās nosūtīt saturu',
'badarticleerror' => 'Šo darbību nevar veikt šajā lapā.',
-'cannotdelete' => 'Nevar izdzēst norādīto lapu vai failu. (Iespējams, to jau ir izdzēsis kāds cits)',
+'cannotdelete' => 'Nevar izdzēst lapu vai failu $1. Iespējams, to jau ir izdzēsis kāds cits.',
'badtitle' => 'Nepiemērots nosaukums',
'badtitletext' => 'Pieprasītā lapa ir kļūdaina, tukša, vai nepareizi saistīts starpvalodu vai starp-vikiju virsrakstas. Tas var saturēt vienu vai vairākus simbolus, ko nedrīkst izmantot nosaukumos.',
'perfcached' => 'Šie dati ir no servera kešatmiņas un var būt novecojuši:',
@@ -385,7 +419,6 @@ Norādītais iemesls bija ''$2''.",
'virus-unknownscanner' => 'nezināms antivīruss:',
# Login and logout pages
-'logouttitle' => 'Lietotāja iziešana',
'logouttext' => "'''Tu esi izgājis no {{grammar:ģenitīvs|{{SITENAME}}}}.'''
Vari turpināt to izmantot anonīmi, vari [[Special:UserLogin|atgriezties]] kā cits lietotājs vai varbūt tas pats.
@@ -393,7 +426,6 @@ Vari turpināt to izmantot anonīmi, vari [[Special:UserLogin|atgriezties]] kā
'welcomecreation' => '== Laipni lūdzam, $1! ==
Tavs lietotāja konts ir izveidots. Neaizmirsti, ka ir iespējams mainīt [[Special:Preferences|{{grammar:ģenitīvs|{{SITENAME}}}} izmantošanas izvēles]].',
-'loginpagetitle' => 'Lietotāja ieiešana',
'yourname' => 'Tavs lietotājvārds',
'yourpassword' => 'Tava parole:',
'yourpasswordagain' => 'Atkārto paroli',
@@ -404,6 +436,7 @@ Tavs lietotāja konts ir izveidots. Neaizmirsti, ka ir iespējams mainīt [[Spec
'nav-login-createaccount' => 'Izveidot jaunu lietotāju vai doties iekšā',
'loginprompt' => 'Lai ieietu {{grammar:lokatīvs|{{SITENAME}}}}, tavam datoram ir jāpieņem sīkdatnes (<i>cookies</i>).',
'userlogin' => 'Izveidot jaunu lietotāju vai doties iekšā',
+'userloginnocreate' => 'Ieiet',
'logout' => 'Iziet',
'userlogout' => 'Iziet',
'notloggedin' => 'Neesi iegājis',
@@ -415,28 +448,8 @@ Tavs lietotāja konts ir izveidots. Neaizmirsti, ka ir iespējams mainīt [[Spec
'createaccountmail' => 'pa e-pastu',
'badretype' => 'Tevis ievadītās paroles nesakrīt.',
'userexists' => 'Šāds lietotāja vārds jau eksistē. Izvēlies citu vārdu.',
-'youremail' => 'Tava e-pasta adrese:',
-'username' => 'Lietotājvārds:',
-'uid' => 'Lietotāja ID:',
-'prefs-memberingroups' => 'Pieder {{PLURAL:$1|grupai|grupām}}:',
-'yourrealname' => 'Tavs īstais vārds:',
-'yourlanguage' => 'Lietotāja saskarnes valoda:',
-'yournick' => 'Tavs paraksts (tāds kāds parādīsies uzrakstot 3~):',
-'badsig' => "Kļūdains ''paraksta'' kods; pārbaudi HTML (ja tāds ir lietots).",
-'badsiglength' => 'Paraksts ir pārāk garš.
-Tam ir jābūt īsākam par $1 {{PLURAL:$1|simbolu|simboliem}}.',
-'yourgender' => 'Dzimums:',
-'gender-unknown' => 'Nav norādīts',
-'gender-male' => 'Vīrietis',
-'gender-female' => 'Sieviete',
-'prefs-help-gender' => 'Dzimums nav obligāti jānorāda (šo parametru programmatūra izmanto, lai ģenerētu paziņojumus, kas atkarīgi no lietotāja dzimuma).
-Norādītā parametra vērtība būs publiski pieejama.',
-'email' => 'E-pasts',
-'prefs-help-realname' => 'Īstais vārds nav obligāti jānorāda.
-Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (ieguldījumu {{grammar:lokatīvs|{{SITENAME}}}}).',
'loginerror' => 'Neveiksmīga ieiešana',
-'prefs-help-email' => 'E-pasts nav obligāti jānorāda, taču tā norādīšana nodrošina iespēju atsūtīt paroli, ja tu to esi aizmirsis. Šī iespēja arī ļauj citiem sazināties ar tevi, izmantojot tavu lietotāja lapu vai lietotāja diskusiju lapu, tev nekur neatklājot savu identitāti.',
-'prefs-help-email-required' => 'E-pasta adrese ir obligāta.',
+'createaccounterror' => 'Neizdevās izveidot kontu: $1',
'nocookiesnew' => 'Lietotājvārds tika izveidots, bet tu neesi iegājis iekšā. {{SITENAME}} izmanto sīkdatnes (<i>cookies</i>), lai lietotāji varētu tajā ieiet. Tavs pārlūks nepieņem tās. Lūdzu, atļauj to pieņemšanu un tad nāc iekšā ar savu lietotājvārdu un paroli.',
'nocookieslogin' => '{{SITENAME}} izmanto sīkdatnes (<i>cookies</i>), lai lietotāji varētu ieiet tajā. Diemžēl tavs pārlūks tos nepieņem. Lūdzu, atļauj to pieņemšanu un mēģini vēlreiz.',
'noname' => 'Tu neesi norādījis derīgu lietotāja vārdu.',
@@ -445,9 +458,12 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
'nosuchuser' => 'Šeit nav lietotāja ar vārdu "$1". Lietotājvārdi ir reģistrjutīgi (lielie un mazie burti nav viens un tas pats) Pārbaudi, vai pareizi uzrakstīts, vai arī [[Special:UserLogin/signup|izveido jaunu kontu]].',
'nosuchusershort' => 'Šeit nav lietotāja ar vārdu "<nowiki>$1</nowiki>". Pārbaudi, vai nav drukas kļūda.',
'nouserspecified' => 'Tev jānorāda lietotājvārds.',
+'login-userblocked' => 'Šis lietotājs ir bloķēts. Pieslēgšanās nav atļauta.',
'wrongpassword' => 'Tu ievadīji nepareizu paroli. Lūdzu, mēģini vēlreiz.',
'wrongpasswordempty' => 'Parole bija tukša. Lūdzu mēģini vēlreiz.',
-'passwordtooshort' => 'Tava parole ir nederīga vai pārāk īsa. Tajā jābūt vismaz {{PLURAL:$1|1 zīmei|$1 zīmēm}} un jābūt atšķirīgai no tava lietotāja vārda.',
+'passwordtooshort' => 'Tava parole ir pārāk īsa.
+Tajā jābūt vismaz {{PLURAL:$1|1 zīmei|$1 zīmēm}}.',
+'password-name-match' => 'Tava parole nedrīkst būt tāda pati kā tavs lietotājvārds.',
'mailmypassword' => 'Atsūtīt man jaunu paroli',
'passwordremindertitle' => 'Jauna pagaidu parole no {{SITENAME}}s',
'passwordremindertext' => 'Kads (iespejams, Tu pats, no IP adreses $1)
@@ -458,6 +474,7 @@ Tavas pagaidu paroles deriiguma terminsh beigsies peec {{PLURAL:$5|vienas dienas
Ja paroles pieprasījumu bija nosūtījis kāds cits, vai arī tu atcerējies savu veco paroli, šo var ignorēt. Vecā parole joprojām darbojas.',
'noemail' => 'Lietotājs "$1" nav reģistrējis e-pasta adresi.',
+'noemailcreate' => 'Tev jānorāda derīgu e-pasta adresi',
'passwordsent' => 'Esam nosūtījuši jaunu paroli uz e-pasta adresi, kuru ir norādījis lietotājs $1. Lūdzu, nāc iekšā ar jauno paroli, kad būsi to saņēmis.',
'blocked-mailpassword' => "Tava IP adrese ir bloķēta un tāpēc nevar lietot paroles atjaunošanas (''recovery'') funkciju, lai nevarētu apiet bloku.",
'eauthentsent' => "Apstiprinājuma e-pasts tika nosūtīts uz norādīto e-pasta adresi. Lai varētu saņemt citus ''meilus'', izpildi vēstulē norādītās instrukcijas, lai apstiprinātu, ka šī tiešām ir tava e-pasta adrese.",
@@ -474,6 +491,7 @@ Tādēļ šobrīd no šīs IP adreses vairs nevar izveidot jaunus kontus.',
'accountcreated' => 'Konts izveidots',
'accountcreatedtext' => 'Lietotāja konts priekš $1 tika izveidots.',
'createaccount-title' => 'Lietotāja konta izveidošana {{grammar:lokatīvs|{{SITENAME}}}}',
+'usernamehasherror' => 'Lietotājvārds nevar saturēt hash simbolus',
'loginlanguagelabel' => 'Valoda: $1',
# Password reset dialog
@@ -483,6 +501,7 @@ Tādēļ šobrīd no šīs IP adreses vairs nevar izveidot jaunus kontus.',
'newpassword' => 'Jaunā parole',
'retypenew' => 'Atkārto jauno paroli',
'resetpass-submit-loggedin' => 'Mainīt paroli',
+'resetpass-submit-cancel' => 'Atcelt',
'resetpass-wrong-oldpass' => 'Nepareiza pagaidu vai galvenā parole.
Tu jau esi veiksmīgi nomainījis savu galveno paroli, vai arī esi pieprasījis jaunu pagaidu paroli.',
'resetpass-temp-password' => 'Pagaidu parole:',
@@ -578,10 +597,14 @@ Ja tu šeit nonāci kļūdas pēc, vienkārši uzspied '''back''' pogu pārlūkp
Šāda IP adrese var būt vairākiem lietotājiem.
Ja tu esi anonīms lietotājs un uzskati, ka tev ir adresēti neatbilstoši komentāri, lūdzu, [[Special:UserLogin/signup|kļūsti par lietotāju]] vai arī [[Special:UserLogin|izmanto jau izveidotu lietotājvārdu]], lai izvairītos no turpmākām neskaidrībām un tu netiktu sajaukts ar citiem anonīmiem lietotājiem.''",
'noarticletext' => 'Šajā lapā šobrīd nav nekāda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt citās lapās pēc šīs lapas nosaukuma]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītos reģistru ierakstos] vai arī [{{fullurl:{{FULLPAGENAME}}|action=edit}} sākt rediģēt šo lapu].',
+'noarticletext-nopermission' => 'Šajā lapā pašlaik nav nekāda teksta.
+Tu vari [[Special:Search/{{PAGENAME}}|meklēt šīs lapas nosaukumu]] citās lapās,
+vai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>.',
'userpage-userdoesnotexist' => 'Lietotājs "$1" nav reģistrēts.
Lūdzu, pārliecinies vai vēlies izveidot/izmainīt šo lapu.',
'clearyourcache' => "'''Piezīme - Pēc saglabāšanas, lai būtu redzamas izmaiņas, var būt nepieciešamas iztīrīt pārlūka kešatmiņu.''' '''Mozilla / Firefox / Safari:''' turi nospiestu ''Shift'' un klikšķini ''Reload,'' vai arī spied ''Ctrl-F5'' vai ''Ctrl-R'' (''Command-R'' uz Macintosh); '''Konqueror: '''klikšķini ''Reload'' vai spied uz ''F5;'' '''Opera:''' kešu var iztīrīt ''Tools → Preferences;'' '''Internet Explorer:''' turi nospiestu ''Ctrl'' un klikšķini ''Refresh,'' vai spied ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Ieteikums:''' Lieto pirmsskata pogu, lai pārbaudītu savu jauno CSS/JS pirms saglabāšanas.",
+'usercssyoucanpreview' => "'''Ieteikums:''' Lieto pirmsskata pogu, lai pārbaudītu savu jauno CSS pirms saglabāšanas.",
+'userjsyoucanpreview' => "'''Ieteikums:''' Lieto pirmsskata pogu, lai pārbaudītu savu jauno JS pirms saglabāšanas.",
'usercsspreview' => "'''Atceries, ka šis ir tikai tava lietotāja CSS pirmskats, lapa vēl nav saglabāta!'''",
'userjspreview' => "'''Atceries, ka šis ir tikai tava lietotāja JavaScript pirmskats/tests, lapa vēl nav saglabāta!'''",
'updated' => '(Atjaunots)',
@@ -631,9 +654,9 @@ Admins, kas slēdza datubāzi, norādīja šādu paskaidrojumu: $1",
'protectedpagewarning' => "'''BRĪDINĀJUMS: Šī lapa ir bloķēta pret izmaiņām, tikai lietotāji ar admina privilēģijām var to izmainīt. To darot, noteikti ievēro [[Project:Norādījumi par aizsargātajām lapām|norādījumus par aizsargātajām lapām]].'''",
'semiprotectedpagewarning' => "'''Piezīme:''' Izmaiņu veikšana šajā lapā ir atļauta tikai reģistrētiem lietotājiem.",
'titleprotectedwarning' => "'''Brīdinājums: Šī lapa ir slēgta un to var izveidot tikai [[Special:ListGroupRights|noteikti]] lietotāji.'''",
-'templatesused' => '<br />Šajā lapā izmantotās veidnes:',
-'templatesusedpreview' => 'Šajā pirmskatā izmantotās veidnes:',
-'templatesusedsection' => 'Šajā sadaļā izmantotās veidnes:',
+'templatesused' => 'Šajā lapā {{PLURAL:$1|izmantotā veidne|izmantotās veidnes}}:',
+'templatesusedpreview' => 'Šajā pirmskatā {{PLURAL:$1|izmanotā veidne|izmantotās veidnes}}:',
+'templatesusedsection' => 'Šajā sadaļā {{PLURAL:$1|izmantotā veidne|izmantotās veidnes}}:',
'template-protected' => '(aizsargāta)',
'template-semiprotected' => '(daļēji aizsargāta)',
'hiddencategories' => 'Šī lapa ietilpst {{PLURAL:$1|1 slēptajā kategorijā|$1 slēptajās kategorijās}}:',
@@ -641,16 +664,18 @@ Admins, kas slēdza datubāzi, norādīja šādu paskaidrojumu: $1",
'nocreatetext' => '{{grammar:lokatīvs|{{SITENAME}}}} ir atslēgta iespēja izveidot jauinas lapas.
Tu vari atgriezties atpakaļ un izmainīt esošu lapu, vai arī [[Special:UserLogin|ielogoties, vai izveidot kontu]].',
'nocreate-loggedin' => 'Tev nav atļaujas veidot jaunas lapas.',
+'sectioneditnotsupported-title' => 'Sadaļa rediģēšana nav atbalstīta',
+'sectioneditnotsupported-text' => 'Sadaļu rediģēsana šajā lapā nav atļauta.',
'permissionserrors' => 'Atļaujas kļūdas',
'permissionserrorstext' => 'Tev nav atļauts veikt šo darbību {{PLURAL:$1|šāda iemesla|šādu iemeslu}} dēļ:',
'permissionserrorstext-withaction' => 'Tev nav atļauts $2 {{PLURAL:$1|šāda iemesla|šādu iemeslu}} dēļ:',
-'recreate-deleted-warn' => "'''Brīdinājums: Tu atjauno lapu, kas ir tikusi izdzēsta'''
+'recreate-moveddeleted-warn' => "'''Brīdinājums: Tu atjauno lapu, kas ir tikusi izdzēsta'''
Tev vajadzētu pārliecināties, vai ir lietderīgi turpināt izmainīt šo lapu.
-Te var apskatīties dzēšanas reģistru, kurā jābūt datiem par to kas, kad un kāpēc šo lapu izdzēsa.",
-'deleted-notice' => 'Šī lapa ir tikusi izdzēsta.
-Te var apskatīties dzēšanas reģistra fragmentu, lai noskaidrotu kurš, kāpēc un kad to izdzēsa.',
-'deletelog-fulllog' => 'Skatīt pilnu žurnālu',
+Te var apskatīties dzēšanas un pārvietošanas reģistrus, kuros jābūt datiem par to kas, kad un kāpēc šo lapu izdzēsa.",
+'moveddeleted-notice' => 'Šī lapa ir tikusi izdzēsta.
+Te var apskatīties dzēšanas un pārvietošanas reģistru fragmentus, lai noskaidrotu kurš, kāpēc un kad to izdzēsa.',
+'log-fulllog' => 'Paskatīties pilnu reģistru',
'edit-gone-missing' => 'Nevar atjaunināt lapu.
Izskatās, ka lapa ir dzēsta.',
'edit-conflict' => 'Labošanas konflikts.',
@@ -677,7 +702,7 @@ $3 norādītais iemesls ir ''$2''",
'currentrev' => 'Pašreizējā versija',
'currentrev-asof' => 'Pašreizējā versija, $1',
'revisionasof' => 'Versija, kas saglabāta $1',
-'revision-info' => 'Versija $1 laikā, kādu to atstāja $2', # Additionally available: $3: revision id
+'revision-info' => 'Versija $1 laikā, kādu to atstāja $2',
'previousrevision' => '← Senāka versija',
'nextrevision' => 'Jaunāka versija →',
'currentrevisionlink' => 'skatīt pašreizējo versiju',
@@ -692,7 +717,6 @@ Apzīmējumi:
"ar iepriekšējo" = salīdzināt ar iepriekšējo versiju,
m = maznozīmīgs labojums.',
'history-fieldset-title' => 'Meklēt hronoloģijā',
-'deletedrev' => '[izdzēsta]',
'histfirst' => 'Senākās',
'histlast' => 'Jaunākās',
'historysize' => '({{PLURAL:$1|1 baits|$1 baiti}})',
@@ -701,30 +725,37 @@ m = maznozīmīgs labojums.',
# Revision feed
'history-feed-title' => 'Versiju hronoloģija',
'history-feed-description' => 'Šīs wiki lapas versiju hronoloģija',
-'history-feed-item-nocomment' => '$1 : $2', # user at time
+'history-feed-item-nocomment' => '$1 : $2',
'history-feed-empty' => 'Pieprasītā lapa nepastāv.
Iespējams, tā ir izdzēsta vai pārdēvēta.
Mēģiniet [[Special:Search|meklēt]], lai atrastu saistītas lapas!',
# Revision deletion
-'rev-deleted-comment' => '(komentārs nodzēsts)',
-'rev-deleted-user' => '(lietotāja vārds nodzēsts)',
-'rev-deleted-event' => '(reģistra ieraksts nodzēsts)',
-'rev-delundel' => 'rādīt/slēpt',
-'revisiondelete' => 'Dzēst / atjaunot versijas',
-'revdelete-nooldid-title' => 'Nederīga mērķa versija',
-'revdelete-nologtype-title' => 'Nav dots reģistra veids.',
-'revdelete-nologid-title' => 'Nederīgs reģistra ieraksts',
-'revdelete-hide-text' => 'Paslēpt versijas tekstu',
-'revdelete-hide-image' => 'Paslēpt faila saturu',
-'revdelete-log' => 'Iemesls:',
-'revdel-restore' => 'mainīt redzamību',
-'pagehist' => 'Lapas vēsture',
-'revdelete-content' => 'saturs',
-'revdelete-summary' => 'izmaiņu kopsavilkums',
-'revdelete-uname' => 'lietotāja vārds',
-'revdelete-hid' => 'paslēpa $1',
-'revdelete-unhid' => 'atjaunoja $1',
+'rev-deleted-comment' => '(komentārs nodzēsts)',
+'rev-deleted-user' => '(lietotāja vārds nodzēsts)',
+'rev-deleted-event' => '(reģistra ieraksts nodzēsts)',
+'rev-delundel' => 'rādīt/slēpt',
+'rev-showdeleted' => 'parādīt',
+'revisiondelete' => 'Dzēst / atjaunot versijas',
+'revdelete-nooldid-title' => 'Nederīga mērķa versija',
+'revdelete-nologtype-title' => 'Nav dots reģistra veids.',
+'revdelete-nologid-title' => 'Nederīgs reģistra ieraksts',
+'revdelete-show-file-submit' => 'Jā',
+'revdelete-hide-text' => 'Paslēpt versijas tekstu',
+'revdelete-hide-image' => 'Paslēpt faila saturu',
+'revdelete-radio-same' => '(nemainīt)',
+'revdelete-radio-set' => 'Jā',
+'revdelete-radio-unset' => 'Nē',
+'revdelete-log' => 'Iemesls:',
+'revdel-restore' => 'mainīt redzamību',
+'pagehist' => 'Lapas vēsture',
+'revdelete-content' => 'saturs',
+'revdelete-summary' => 'izmaiņu kopsavilkums',
+'revdelete-uname' => 'lietotāja vārds',
+'revdelete-hid' => 'paslēpa $1',
+'revdelete-unhid' => 'atjaunoja $1',
+'revdelete-reasonotherlist' => 'Cits iemesls',
+'revdelete-edit-reasonlist' => 'Izmainīt dzēšanas iemeslus',
# History merging
'mergehistory-reason' => 'Iemesls:',
@@ -747,20 +778,21 @@ Mēģiniet [[Special:Search|meklēt]], lai atrastu saistītas lapas!',
'searchresulttext' => 'Lai iegūtu vairāk informācijas par meklēšanu {{grammar:akuzatīvs|{{SITENAME}}}}, skat. [[{{MediaWiki:Helppage}}|{{grammar:ģenitīvs|{{SITENAME}}}} meklēšana]].',
'searchsubtitle' => 'Pieprasījums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|visas lapas, kas sākas ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visas lapas, kurās ir saite uz "$1"]])',
'searchsubtitleinvalid' => 'Pieprasījums: $1',
-'noexactmatch' => "'''Lapas ar nosaukumu \"\$1\" šeit nav.''' Tu vari to [[:\$1|izveidot]].",
-'noexactmatch-nocreate' => "'''Šeit nav lapas ar nosaukumu \"\$1\".'''",
'toomanymatches' => 'Tika atgriezti poārāk daudzi rezultāti, lūdzu pamēģini citādāku pieprasījumu',
'titlematches' => 'Rezultāti virsrakstos',
'notitlematches' => 'Neviena rezultāta, meklējot lapas virsrakstā',
'textmatches' => 'Rezultāti lapu tekstos',
'notextmatches' => 'Neviena rezultāta, meklējot lapas tekstā',
-'prevn' => 'iepriekšējās $1',
-'nextn' => 'nākamās $1',
-'viewprevnext' => 'Skatīt ($1) ($2) ($3 vienā lapā).',
+'prevn' => 'iepriekšējās {{PLURAL:$1|$1}}',
+'nextn' => 'nākamās {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Skatīt ($1 {{int:pipe-separator}} $2) ($3 vienā lapā).',
'searchmenu-legend' => 'Meklēšanas iespējas',
'searchmenu-exists' => "'''Šajā projektā ir raksts ar nosaukumu \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Izveido rakstu \"[[:\$1]]\" šajā projektā!'''",
'searchhelp-url' => 'Help:Saturs',
+'searchprofile-articles' => 'Rakstos',
+'searchprofile-project' => 'Palīdzības un projektu lapās',
+'searchprofile-images' => 'Multivides failos',
'searchprofile-everything' => 'Visur',
'searchprofile-advanced' => 'Izvēlēties sīkāk',
'searchprofile-articles-tooltip' => 'Meklēt iekš $1',
@@ -778,9 +810,10 @@ Mēģiniet [[Special:Search|meklēt]], lai atrastu saistītas lapas!',
'search-mwsuggest-enabled' => 'ar ieteikumiem',
'search-mwsuggest-disabled' => 'bez ieteikumiem',
'mwsuggest-disable' => 'Atslēgt AJAX ieteikumus',
+'searcheverything-enable' => 'Meklēt visās nosaukumvietās',
'showingresults' => "Šobrīd ir {{PLURAL:$1|redzama|redzamas}} '''$1''' {{PLURAL:$1|lapa|lapas}}, sākot ar #'''$2'''.",
'showingresultsnum' => "Šobrīd ir {{PLURAL:$3|redzama|redzamas}} '''$3''' {{PLURAL:$3|lapa|lapas}}, sākot ar #'''$2'''.",
-'showingresultstotal' => "Rāda {{PLURAL:$4|rezultātu '''$1''' no '''$3'''|rezultātus '''$1 - $2''' no '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Šobrīd ir redzama '''$1''' lapa no '''$3'''|Šobrīd ir redzamas '''$1 — $2''' lapas no '''$3'''}}, kas satur '''$4'''",
'nonefound' => "'''Piezīme:''' bieži vien meklēšana ir neveiksmīga, meklējot plaši izplatītus vārdus, piemēram, \"un\" vai \"ir\", jo tie netiek iekļauti meklēšanas datubāzē, vai arī meklējot vairāk par vienu vārdu (jo rezultātos parādīsies tikai lapas, kurās ir visi meklētie vārdi). Vēl, pēc noklusējuma, pārmeklē tikai dažas ''namespaces''. Lai meklētu visās, meklēšanas pieprasījumam priekšā jāieliek ''all:'', vai arī analogā veidā jānorāda pārmeklējamo ''namespaci''.",
'search-nonefound' => 'Nav atrasti pieprasījumam atbilstoši rezultāti.',
'powersearch' => 'Izvērstā meklēšana',
@@ -793,73 +826,116 @@ Mēģiniet [[Special:Search|meklēt]], lai atrastu saistītas lapas!',
Pagaidām vari meklēt, izmantojot Google vai Yahoo.
Ņem vērā, ka meklētāju indeksētais {{grammar:ģenitīvs|{{SITENAME}}}} saturs var būt novecojis.',
+# Quickbar
+'qbsettings' => 'Rīku joslas stāvoklis',
+
# Preferences page
-'preferences' => 'Izvēles',
-'mypreferences' => 'Mani uzstādījumi',
-'prefs-edits' => 'Izmaiņu skaits:',
-'prefsnologin' => 'Neesi iegājis',
-'prefsnologintext' => 'Tev jābūt <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} iegājušam], lai mainītu lietotāja izvēles.',
-'prefsreset' => 'Sākotnējās izvēles ir atjaunotas.',
-'qbsettings' => 'Rīku joslas stāvoklis',
-'changepassword' => 'Mainīt paroli',
-'skin' => 'Apdare',
-'skin-preview' => 'Priekšskats',
-'math' => 'Formulas',
-'dateformat' => 'Datuma formāts',
-'datedefault' => 'Vienalga',
-'datetime' => 'Datums un laiks',
-'math_unknown_error' => 'nezināma kļūda',
-'math_unknown_function' => 'nezināma funkcija',
-'math_syntax_error' => 'sintakses kļūda',
-'prefs-personal' => 'Lietotāja dati',
-'prefs-rc' => 'Pēdējās izmaiņas',
-'prefs-watchlist' => 'Uzraugāmie raksti',
-'prefs-watchlist-days' => 'Dienu skaits, kuras parādīt uzraugāmo rakstu sarakstā:',
-'prefs-watchlist-edits' => 'Izmaiņu skaits, kuras rādīt izvērstajā uzraugāmo rakstu sarakstā:',
-'prefs-misc' => 'Dažādi',
-'prefs-resetpass' => 'Mainīt paroli',
-'saveprefs' => 'Saglabāt',
-'resetprefs' => 'Atcelt nesaglabātās izmaiņas',
-'restoreprefs' => 'Atjaunot noklusētos uzstādījumus',
-'textboxsize' => 'Rediģēšana',
-'rows' => 'Rindiņu skaits:',
-'columns' => 'Simbolu skaits rindiņā:',
-'searchresultshead' => 'Meklēšana',
-'resultsperpage' => 'Lappusē parādāmo rezultātu skaits',
-'contextlines' => 'Cik rindiņas parādīt katram atrastajam rezultātam',
-'contextchars' => 'Konteksta simbolu skaits vienā rindiņā',
-'recentchangesdays' => 'Dienu skaits, kuru rādīt pēdējajās izmaiņās:',
-'recentchangescount' => 'Virsrakstu skaits pēdējo izmaiņu, hronoloģiju un reģistru lapās, pēc noklusējuma:',
-'savedprefs' => 'Tavas izvēles ir saglabātas.',
-'timezonelegend' => 'Laika josla:',
-'timezonetext' => '¹Ieraksti, par cik stundām tavs vietējais laiks atšķiras no servera laika (UTC).',
-'localtime' => 'Vietējais laiks:',
-'timezoneuseserverdefault' => 'Lietot servera noklusēto',
-'timezoneuseoffset' => 'Cita (norādi starpību)',
-'timezoneoffset' => 'Starpība¹:',
-'servertime' => 'Servera laiks šobrīd:',
-'guesstimezone' => 'Izmantot datora sistēmas laiku',
-'timezoneregion-africa' => 'Āfrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktīda',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Āzija',
-'timezoneregion-atlantic' => 'Atlantijas okeāns',
-'timezoneregion-australia' => 'Austrālija',
-'timezoneregion-europe' => 'Eiropa',
-'timezoneregion-indian' => 'Indijas okeāns',
-'timezoneregion-pacific' => 'Klusais okeāns',
-'allowemail' => 'Atļaut saņemt e-pastus no citiem lietotājiem',
-'prefs-searchoptions' => 'Meklēšanas opcijas',
-'prefs-namespaces' => 'Vārdtelpas',
-'defaultns' => 'Meklēt šajās palīglapās pēc noklusējuma:',
-'default' => 'pēc noklusējuma',
-'files' => 'Attēli',
-'prefs-custom-css' => 'Personīgais CSS',
-'prefs-custom-js' => 'Personīgais JS',
+'preferences' => 'Izvēles',
+'mypreferences' => 'Mani uzstādījumi',
+'prefs-edits' => 'Izmaiņu skaits:',
+'prefsnologin' => 'Neesi iegājis',
+'prefsnologintext' => 'Tev jābūt <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} iegājušam], lai mainītu lietotāja izvēles.',
+'changepassword' => 'Mainīt paroli',
+'prefs-skin' => 'Apdare',
+'skin-preview' => 'Priekšskats',
+'prefs-math' => 'Formulas',
+'datedefault' => 'Vienalga',
+'prefs-datetime' => 'Datums un laiks',
+'prefs-personal' => 'Lietotāja dati',
+'prefs-rc' => 'Pēdējās izmaiņas',
+'prefs-watchlist' => 'Uzraugāmie raksti',
+'prefs-watchlist-days' => 'Dienu skaits, kuras parādīt uzraugāmo rakstu sarakstā:',
+'prefs-watchlist-days-max' => 'Ne vairāk kā 7 dienas',
+'prefs-watchlist-edits' => 'Izmaiņu skaits, kuras rādīt izvērstajā uzraugāmo rakstu sarakstā:',
+'prefs-watchlist-edits-max' => 'Ne vairāk kā 1000',
+'prefs-watchlist-token' => 'Uzraugāmo lapu saraksta marķieris:',
+'prefs-misc' => 'Dažādi',
+'prefs-resetpass' => 'Mainīt paroli',
+'prefs-email' => 'E-pasta uzstādījumi',
+'prefs-rendering' => 'Izskats',
+'saveprefs' => 'Saglabāt',
+'resetprefs' => 'Atcelt nesaglabātās izmaiņas',
+'restoreprefs' => 'Atjaunot noklusētos uzstādījumus',
+'prefs-editing' => 'Rediģēšana',
+'rows' => 'Rindiņu skaits:',
+'columns' => 'Simbolu skaits rindiņā:',
+'searchresultshead' => 'Meklēšana',
+'resultsperpage' => 'Lappusē parādāmo rezultātu skaits',
+'contextlines' => 'Cik rindiņas parādīt katram atrastajam rezultātam',
+'contextchars' => 'Konteksta simbolu skaits vienā rindiņā',
+'recentchangesdays' => 'Dienu skaits, kuru rādīt pēdējajās izmaiņās:',
+'recentchangesdays-max' => 'Ne vairāk kā $1 {{PLURAL:$1|diena|dienas}}',
+'recentchangescount' => 'Izmaiņu skaits, kuru rāda pēc noklusējuma:',
+'prefs-help-recentchangescount' => 'Šis parametrs attiecas uz pēdējo izmaiņu un hronoloģijas lapām, kā arī uz sistēmas žurnāliem',
+'prefs-help-watchlist-token' => 'Šajā laukā tu vari ievadīt slepenu kodu, lai izveidotu RSS barotni savam uzraugāmo lapu sarakstam.
+Izvēlies drošu kodu, jo katrs, kam ir zināms šis kods, varēs redzēt tavu uzraugāmo lapu sarakstu.
+Ja vēlies, tu vari izmantot šo nejauši uzģenerēto kodu: $1',
+'savedprefs' => 'Tavas izvēles ir saglabātas.',
+'timezonelegend' => 'Laika josla:',
+'localtime' => 'Vietējais laiks:',
+'timezoneuseserverdefault' => 'Lietot servera noklusēto',
+'timezoneuseoffset' => 'Cita (norādi starpību)',
+'timezoneoffset' => 'Starpība¹:',
+'servertime' => 'Servera laiks šobrīd:',
+'guesstimezone' => 'Izmantot datora sistēmas laiku',
+'timezoneregion-africa' => 'Āfrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktīda',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Āzija',
+'timezoneregion-atlantic' => 'Atlantijas okeāns',
+'timezoneregion-australia' => 'Austrālija',
+'timezoneregion-europe' => 'Eiropa',
+'timezoneregion-indian' => 'Indijas okeāns',
+'timezoneregion-pacific' => 'Klusais okeāns',
+'allowemail' => 'Atļaut saņemt e-pastus no citiem lietotājiem',
+'prefs-searchoptions' => 'Meklēšanas opcijas',
+'prefs-namespaces' => 'Vārdtelpas',
+'defaultns' => 'Meklēt šajās palīglapās pēc noklusējuma:',
+'default' => 'pēc noklusējuma',
+'prefs-files' => 'Attēli',
+'prefs-custom-css' => 'Personīgais CSS',
+'prefs-custom-js' => 'Personīgais JS',
+'prefs-emailconfirm-label' => 'E-pasta statuss:',
+'prefs-textboxsize' => 'Rediģēšanas loga izmērs',
+'youremail' => 'Tava e-pasta adrese:',
+'username' => 'Lietotājvārds:',
+'uid' => 'Lietotāja ID:',
+'prefs-memberingroups' => 'Pieder {{PLURAL:$1|grupai|grupām}}:',
+'prefs-registration' => 'Reģistrēšanās datums:',
+'yourrealname' => 'Tavs īstais vārds:',
+'yourlanguage' => 'Lietotāja saskarnes valoda:',
+'yournick' => 'Tava iesauka (parakstam):',
+'prefs-help-signature' => 'Komentāri diskusiju lapās ir jāparaksta, pievienojot simbolu virkni "<nowiki>~~~~</nowiki>", kas tiek automātiski aizstāta ar tavu parakstu un parakstīšanās laiku.',
+'badsig' => "Kļūdains ''paraksta'' kods; pārbaudi HTML (ja tāds ir lietots).",
+'badsiglength' => 'Paraksts ir pārāk garš.
+Tam ir jābūt īsākam par $1 {{PLURAL:$1|simbolu|simboliem}}.',
+'yourgender' => 'Dzimums:',
+'gender-unknown' => 'Nav norādīts',
+'gender-male' => 'Vīrietis',
+'gender-female' => 'Sieviete',
+'prefs-help-gender' => 'Dzimums nav obligāti jānorāda (šo parametru programmatūra izmanto, lai ģenerētu paziņojumus, kas atkarīgi no lietotāja dzimuma).
+Norādītā parametra vērtība būs publiski pieejama.',
+'email' => 'E-pasts',
+'prefs-help-realname' => 'Īstais vārds nav obligāti jānorāda.
+Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (ieguldījumu {{grammar:lokatīvs|{{SITENAME}}}}).',
+'prefs-help-email' => 'E-pasts nav obligāti jānorāda, taču tā norādīšana nodrošina iespēju atsūtīt paroli, ja tu to esi aizmirsis. Šī iespēja arī ļauj citiem sazināties ar tevi, izmantojot tavu lietotāja lapu vai lietotāja diskusiju lapu, tev nekur neatklājot savu identitāti.',
+'prefs-help-email-required' => 'E-pasta adrese ir obligāta.',
+'prefs-info' => 'Pamatinformācija',
+'prefs-i18n' => 'Internacionalizācija',
+'prefs-signature' => 'Paraksts',
+'prefs-dateformat' => 'Datuma formāts',
+'prefs-timeoffset' => 'Laika nobīde',
+'prefs-advancedediting' => 'Papildus uzstādījumi',
+'prefs-advancedrc' => 'Papildus uzstādījumi',
+'prefs-advancedrendering' => 'Papildus uzstādījumi',
+'prefs-advancedsearchoptions' => 'Papildus uzstādījumi',
+'prefs-advancedwatchlist' => 'Papildus uzstādījumi',
+'prefs-display' => 'Pamatuzstādījumi',
+'prefs-diffs' => 'Izmaiņas',
# User rights
-'userrights' => 'Lietotāju tiesību pārvaldība', # Not used as normal message but as header for the special page itself
+'userrights' => 'Lietotāju tiesību pārvaldība',
'userrights-lookup-user' => 'Pārvaldīt lietotāja grupas',
'userrights-user-editname' => 'Ievadi lietotājvārdu:',
'editusergroup' => 'Izmainīt lietotāja grupas',
@@ -924,6 +1000,8 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
'right-protect' => 'Izmainīt aizsargātās lapas un to aizsardzības līmeni',
'right-editinterface' => 'Izmainīt lietotāja interfeisu',
'right-editusercssjs' => 'Izmainīt citu lietotāju CSS un JS failus',
+'right-editusercss' => 'Izmainīt citu lietotāju CSS failus',
+'right-edituserjs' => 'Izmainīt citu lietotāju JS failus',
'right-import' => 'Importēt lapas no citiem wiki',
'right-importupload' => 'Importēt lapas no failu augšuplādes',
'right-userrights' => 'Mainīt visu lietotāju tiesības',
@@ -942,6 +1020,13 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
'recentchanges-legend' => 'Pēdējo izmaiņu opcijas',
'recentchangestext' => 'Šajā lapā ir šitajā viki izdarītās pēdējās izmaiņas.',
'recentchanges-feed-description' => 'Sekojiet līdzi jaunākajām izmaiņām vikijā izmantojot šo barotni.',
+'recentchanges-label-legend' => 'Apzīmējumu skaidrojums: $1.',
+'recentchanges-legend-newpage' => '$1 - jauna lapa',
+'recentchanges-label-newpage' => 'Šī ir jaunizveidota lapa',
+'recentchanges-legend-minor' => '$1 - maznozīmīga izmaiņa',
+'recentchanges-label-minor' => 'Šī ir maznozīmīga izmaiņa',
+'recentchanges-legend-bot' => '$1 - bota veikta izmaiņa',
+'recentchanges-label-bot' => 'Šī ir bota veikta izmaiņa',
'rcnote' => 'Šobrīd ir {{PLURAL:$1|redzama pēdējā <strong>$1</strong> izmaiņa, kas izdarīta|redzamas pēdējās <strong>$1</strong> izmaiņas, kas izdarītas}} {{PLURAL:$2|pēdējā|pēdējās}} <strong>$2</strong> {{PLURAL:$2|dienā|dienās}} (līdz $4, $5).',
'rcnotefrom' => "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
@@ -966,6 +1051,8 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
# Recent changes linked
'recentchangeslinked' => 'Saistītās izmaiņas',
+'recentchangeslinked-feed' => 'Saistītās izmaiņas',
+'recentchangeslinked-toolbox' => 'Saistītās izmaiņas',
'recentchangeslinked-title' => 'Izmaiņas, kas saistītas ar "$1"',
'recentchangeslinked-noresult' => 'Norādītajā laika periodā saistītajās lapās izmaiņu nebija.',
'recentchangeslinked-summary' => "Šiet ir nesen izdarītās izmaiņas lapās, uz kurām ir saites no norādītās lapas (vai norādītajā kategorijā ietilpstošās lapas).
@@ -976,7 +1063,6 @@ Lapas, kas ir tavā [[Special:Watchlist|uzraugāmo rakstu sarakstā]] ir '''trek
# Upload
'upload' => 'Augšuplādēt failu',
'uploadbtn' => 'Augšuplādēt',
-'reupload' => 'Vēlreiz augšuplādēt',
'reuploaddesc' => 'Atcelt augšupielādi un atgriezties pie augšupielādes veidnes.',
'uploadnologin' => 'Neesi iegājis',
'uploadnologintext' => 'Tev jābūt [[Special:UserLogin|iegājušam]], lai augšuplādētu failus.',
@@ -1047,11 +1133,13 @@ Ja tu joprojām gribi augšuplādēt šo failu, tad mēģini vēlreiz, ar citu f
'uploaddisabled' => 'Augšupielāde atslēgta',
'uploaddisabledtext' => 'Failu augšupielāde ir atslēgta.',
'uploadscripted' => 'Šis fails satur HTML vai skriptu kodu, kuru, interneta pārlūks, var kļūdas pēc, mēģināt interpretēt (ar potenciāli sliktām sekām).',
-'uploadcorrupt' => 'Šis fails ir bojāts, vai arī tam ir nekorekts paplašinājums. Lūdzu pārbaudi failu un augšupielādē vēlreiz.',
'uploadvirus' => 'Šis fails satur vīrusu! Sīkāk: $1',
+'upload-source' => 'Augšuplādējamais fails',
'sourcefilename' => 'Faila adrese:',
'destfilename' => 'Vajadzīgais faila nosaukums:',
'upload-maxfilesize' => 'Maksimālais faila izmērs: $1',
+'upload-description' => 'Faila apraksts',
+'upload-options' => 'Augšupielādes iestatījumi',
'watchthisupload' => 'Uzraudzīt šo failu',
'filewasdeleted' => 'Fails ar šādu nosaukumu jau ir bijis augšuplādēts un pēc tam izdzēsts.
Apskaties $1 pirms turpini šo failu augšuplādēt atkārtoti.',
@@ -1063,6 +1151,7 @@ Te var apskatīties dzēšanas reģistru, lai noskaidrotu kāpēc šo failu tore
Lūdzu izvēlies aprakstošāku vārdu šim failam.",
'license' => 'Licence:',
+'license-header' => 'Licence',
'nolicense' => 'Neviena licence nav izvēlēta',
'license-nopreview' => '(Priekšskatījums nav pieejams)',
'upload_source_file' => '(fails datorā)',
@@ -1081,6 +1170,7 @@ Uzklikšķinot uz kādas kolonnas virsraksta, var sakārtot pēc kāda cita para
'listfiles_description' => 'Apraksts',
# File description page
+'file-anchor-link' => 'Attēls',
'filehist' => 'Faila hronoloģija',
'filehist-help' => 'Uzklikšķini uz datums/laiks kolonnā esošās saites, lai apskatītos, kā šis fails izskatījās tad.',
'filehist-deleteall' => 'dzēst visus',
@@ -1089,6 +1179,7 @@ Uzklikšķinot uz kādas kolonnas virsraksta, var sakārtot pēc kāda cita para
'filehist-current' => 'tagadējais',
'filehist-datetime' => 'Datums/Laiks',
'filehist-thumb' => 'Attēls',
+'filehist-thumbtext' => '$1 versijas sīktēls',
'filehist-user' => 'Lietotājs',
'filehist-dimensions' => 'Izmēri',
'filehist-filesize' => 'Faila izmērs',
@@ -1096,9 +1187,7 @@ Uzklikšķinot uz kādas kolonnas virsraksta, var sakārtot pēc kāda cita para
'imagelinks' => 'Failu saites',
'linkstoimage' => '{{PLURAL:$1|Šajā lapā ir saite|Šajās $1 lapās ir saites}} uz šo failu:',
'nolinkstoimage' => 'Nevienā lapā nav norāžu uz šo attēlu.',
-'sharedupload' => 'Šis fails ir augšupielādēts no $1 un ir koplietojams citos projektos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Ar šādu nosaukumu nav neviena faila, bet tu vari [$1].',
-'noimage-linktext' => 'augšuplādēt to',
+'sharedupload' => 'Šis fails ir augšupielādēts no $1 un ir koplietojams citos projektos.',
'uploadnewversion-linktext' => 'Augšupielādēt jaunu šī faila versiju',
# File reversion
@@ -1258,7 +1347,7 @@ Tu vari sašaurināt aplūkojamo reģistru, izvēloties reģistra veidu, lietot
# Special:Categories
'categories' => 'Kategorijas',
-'categoriespagetext' => "Šīs kategorijas satur lapas vai failus.
+'categoriespagetext' => "{{PLURAL:$1|Šī kategorija|Šīs kategorijas}} satur lapas vai failus.
Šeit nav parādītas [[Special:UnusedCategories|neizmantotās kategorijas]].
Skatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
'categoriesfrom' => 'Parādīt kategorijas sākot ar:',
@@ -1275,6 +1364,9 @@ Skatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
# Special:ListUsers
'listusersfrom' => 'Parādīt lietotājus sākot ar:',
+# Special:ActiveUsers
+'activeusers' => 'Aktīvo lietotāju saraksts',
+
# Special:Log/newusers
'newuserlogpage' => 'Jauno lietotāju reģistrs',
'newuserlogpagetext' => 'Jauno lietotājvārdu reģistrs.',
@@ -1356,15 +1448,15 @@ e-pasts: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
Ja šo uzraugāmo lapu izmainīs vēl, turpmāku paziņojumu par to nebūs, kamēr tu to neatvērsi.
-Tu arī vari noresetot visu uzraugāmo lapu paziņojumu statusus uzraugāmo lapu sarakstā.
+Tu arī vari atstatīt visu uzraugāmo lapu paziņojumu statusus uzraugāmo lapu sarakstā.
{{grammar:ģenitīvs|{{SITENAME}}}} paziņojumu sistēma
--
Lai izmainītu uzraugāmo lapu saraksta uzstādījumus:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
-Papildus informācija:
+Papildinformācija:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1376,7 +1468,8 @@ Papildus informācija:
'exblank' => 'lapa bija tukša',
'delete-confirm' => 'Dzēst "$1"',
'delete-legend' => 'Dzēšana',
-'historywarning' => 'Brīdinājums: Tu dzēsīsi lapu, kurai ir saglabātas iepriekšējas versijas.',
+'historywarning' => "'''Brīdinājums:'' Tu grasies dzēst lapu, kurai ir saglabātas izmaiņu vēsture ar $1 {{PLURAL:versiju|versijām}}
+iepriekšējas versijas.",
'confirmdeletetext' => 'Tu tūlīt no datubāzes dzēsīsi lapu vai attēlu, kā arī to iepriekšējās versijas. Lūdzu, apstiprini, ka tu tiešām to vēlies darīt, ka tu apzinies sekas un ka tu to dari saskaņā ar [[{{MediaWiki:Policy-url}}|vadlīnijām]].',
'actioncomplete' => 'Darbība pabeigta',
'deletedtext' => 'Lapa "<nowiki>$1</nowiki>" ir izdzēsta.
@@ -1406,8 +1499,8 @@ Papildus informācija:
'alreadyrolled' => 'Nav iespējams novērst pēdējās izmaiņas, ko lapā [[:$1]] saglabāja [[User:$2|$2]] ([[User talk:$2|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Kāds cits jau ir rediģējis šo lapu vai novērsis izmaiņas.
Pēdējās izmaiņas saglabāja [[User:$3|$3]] ([[User talk:$3|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Attiecīgās izmaiņas kopsavilkums bija: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Novērsu izmaiņas, ko izdarīja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]), atjaunoju versiju, ko saglabāja [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Attiecīgās izmaiņas kopsavilkums bija: \"''\$1''\".",
+'revertpage' => 'Novērsu izmaiņas, ko izdarīja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]), atjaunoju versiju, ko saglabāja [[User:$1|$1]]',
'rollback-success' => 'Tika novērstas $1 izdarītās izmaiņas;
un tika atjaunota iepriekšējā versija, kuru bija izveidojis $2.',
'sessionfailure' => "Ir radusies problēma ar sesijas autentifikāciju;
@@ -1426,7 +1519,6 @@ Lūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlrei
'protectexpiry' => 'Beidzas:',
'protect_expiry_invalid' => 'Beigu termiņš ir nederīgs.',
'protect_expiry_old' => 'Beigu termiņs ir pagātnē.',
-'protect-unchain' => 'Mainīt pārvietošanas atļaujas',
'protect-text' => "Šeit var apskatīties un izmainīt lapas '''<nowiki>$1</nowiki>''' aizsardzības līmeni.",
'protect-locked-access' => "Jūsu kontam nav atļaujas mainīt lapas aizsardzības pakāpi.
Pašreizējie lapas '''$1''' iestatījumi ir:",
@@ -1447,7 +1539,7 @@ Pašreizējie lapas '''$1''' iestatījumi ir:",
** Neproduktīvi izmaiņu kari
** Bieži apskatīta lapa',
'protect-edit-reasonlist' => 'Izmainīt aizsargāšanas iemeslus',
-'protect-expiry-options' => '1 stunda:1 hour,1 diena:1 day,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 stunda:1 hour,1 diena:1 day,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite',
'restriction-type' => 'Atļauja:',
'restriction-level' => 'Aizsardzības līmenis:',
@@ -1505,7 +1597,7 @@ kāds cits iespējams to ir atjaunojis ātrāk.',
'contributions-title' => 'Lietotāja $1 devums',
'mycontris' => 'Mans devums',
'contribsub2' => 'Lietotājs: $1 ($2)',
-'nocontribs' => 'Netika atrastas izmaiņas, kas atbilstu šiem kritērijiem.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Netika atrastas izmaiņas, kas atbilstu šiem kritērijiem.',
'uctop' => '(pēdējā izmaiņa)',
'month' => 'No mēneša (un senāki):',
'year' => 'No gada (un senāki):',
@@ -1513,7 +1605,10 @@ kāds cits iespējams to ir atjaunojis ātrāk.',
'sp-contributions-newbies' => 'Rādīt jauno lietotāju devumu',
'sp-contributions-newbies-sub' => 'Jaunie lietotāji',
'sp-contributions-blocklog' => 'Bloķēšanas reģistrs',
+'sp-contributions-deleted' => 'Izdzēstais lietotāju devums',
'sp-contributions-logs' => 'reģistri',
+'sp-contributions-talk' => 'diskusija',
+'sp-contributions-userrights' => 'Lietotāju tiesību pārvaldība',
'sp-contributions-search' => 'Meklēt lietotāju veiktās izmaiņas',
'sp-contributions-username' => 'IP adrese vai lietotāja vārds:',
'sp-contributions-submit' => 'Meklēt',
@@ -1559,7 +1654,7 @@ Norādi konkrētu iemeslu (piemēram, linkus uz vandalizētajām lapām).',
'ipbenableautoblock' => 'Automātiski bloķēt lietotāja pēdējo IP adresi un jebkuru IP adresi, no kuras šis lietotājs piekļūst šim wiki',
'ipbsubmit' => 'Bloķēt šo lietotāju',
'ipbother' => 'Cits laiks',
-'ipboptions' => '2 stundas:2 hours,1 diena:1 day,3 dienas:3 days,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 stundas:2 hours,1 diena:1 day,3 dienas:3 days,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite',
'ipbotheroption' => 'cits',
'ipbotherreason' => 'Cits/papildu iemesls:',
'ipbwatchuser' => 'Uzraudzīt šī lietotāja lietotāja un lietotāja diskusijas lapas',
@@ -1588,7 +1683,7 @@ Visus blokus var apskatīties [[Special:IPBlockList|IP bloku sarakstā]].',
'ipblocklist-sh-addressblocks' => '$1 vienas IP adreses blokus',
'ipblocklist-submit' => 'Meklēt',
'blocklistline' => '$1 $2 bloķēja $3 (termiņš $4)',
-'expiringblock' => 'beidzas $1',
+'expiringblock' => 'beidzas $1 $2',
'ipblocklist-no-results' => 'Norādītā IP adrese vai lietotājs nav bloķēts.',
'blocklink' => 'bloķēt',
'unblocklink' => 'atbloķēt',
@@ -1597,6 +1692,8 @@ Visus blokus var apskatīties [[Special:IPBlockList|IP bloku sarakstā]].',
'autoblocker' => 'Tava IP ir nobloķēta automātiski, tāpēc, ka to nesen lietojis "[[User:$1|$1]]".
Viņa bloķēšanas iemesls bija: "$2"',
'blocklogpage' => 'Bloķēšanas reģistrs',
+'blocklog-showlog' => 'Šis lietotājs ir bijis bloķēts jau agrāk.
+Te apakšā var apskatīties bloķēšanas reģistru:',
'blocklogentry' => 'nobloķēja [[$1]] uz $2 $3',
'blocklogtext' => 'Šajā lapā ir pēdējo nobloķēto un atbloķēto lietotāju un IP adrešu saraksts. Te neparādās automātiski nobloķētās IP adreses.
Šobrīd aktīvos blokus var apskatīties [[Special:IPBlockList|bloķēto lietotāju un IP adrešu sarakstā]].',
@@ -1648,7 +1745,7 @@ Ja tomēr vēlēsies, tad tev šī diskusiju lapa būs jāpārvieto vai jāapvie
'move-watch' => 'Uzraudzīt šo lapu',
'movepagebtn' => 'Pārvietot lapu',
'pagemovedsub' => 'Pārvietošana notikusi veiksmīgi',
-'movepage-moved' => '\'\'\'"$1" tika pārvietots uz "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" tika pārvietots uz "$2"\'\'\'',
'movepage-moved-redirect' => 'Tika izveidota pāradresācija.',
'articleexists' => 'Lapa ar tādu nosaukumu jau pastāv vai arī tevis izvēlētais nosaukums ir nederīgs. Lūdzu, izvēlies citu nosaukumu.',
'cantmove-titleprotected' => 'Tu nevari pārvietot lapu uz šo nosaukumu, tāpēc, ka jaunais nosaukums (lapa) ir aizsargāta pret izveidošanu',
@@ -1697,15 +1794,21 @@ Pirmajā gadījumā var arī lietot šādu metodi, piem., [[{{#Special:Export}}/
'export-templates' => 'Iekļaut veidnes',
# Namespace 8 related
-'allmessages' => 'Visi sistēmas paziņojumi',
-'allmessagesname' => 'Nosaukums',
-'allmessagesdefault' => 'Sākotnējais teksts',
-'allmessagescurrent' => 'Pašreizējais teksts',
-'allmessagestext' => "Šajā lapā ir visu \"'''MediaWiki:'''\" lapās atrodamo sistēmas paziņojumu uzskaitījums.
+'allmessages' => 'Visi sistēmas paziņojumi',
+'allmessagesname' => 'Nosaukums',
+'allmessagesdefault' => 'Sākotnējais teksts',
+'allmessagescurrent' => 'Pašreizējais teksts',
+'allmessagestext' => "Šajā lapā ir visu \"'''MediaWiki:'''\" lapās atrodamo sistēmas paziņojumu uzskaitījums.
Šos paziņojumus var izmainīt tikai admini. Izmainot tos šeit, tie tiks izmainīti tikai šajā mediawiki instalācijā. Lai tos izmainītu visām pārējām, apskatieties [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [http://translatewiki.net translatewiki.net].",
-'allmessagesnotsupportedDB' => "Šī lapa nedarbojas, tāpēc, ka '''wgUseDatabaseMessages''' nedarbojas.",
-'allmessagesfilter' => 'Paziņojumu nosaukuma filtrs:',
-'allmessagesmodified' => 'Rādīt tikai izmainītos',
+'allmessagesnotsupportedDB' => "Šī lapa nedarbojas, tāpēc, ka '''wgUseDatabaseMessages''' nedarbojas.",
+'allmessages-filter-legend' => 'Filtrs',
+'allmessages-filter' => 'Filtrēt pēc izmainīšanas statusa:',
+'allmessages-filter-unmodified' => 'Nemodificēti',
+'allmessages-filter-all' => 'Visi',
+'allmessages-filter-modified' => 'Modificēti',
+'allmessages-prefix' => 'Filtrēt pēc prefiksa:',
+'allmessages-language' => 'Valoda:',
+'allmessages-filter-submit' => 'Parādīt',
# Thumbnails
'thumbnail-more' => 'Palielināt',
@@ -1737,6 +1840,7 @@ Pirmajā gadījumā var arī lietot šādu metodi, piem., [[{{#Special:Export}}/
'tooltip-ca-viewsource' => 'Šī lapa ir aizsargāta. Tu vari apskatīties tās izejas kodu.',
'tooltip-ca-history' => 'Šīs lapas iepriekšējās versijas.',
'tooltip-ca-protect' => 'Aizsargāt šo lapu',
+'tooltip-ca-unprotect' => 'NEaizsargāt šo lapu',
'tooltip-ca-delete' => 'Dzēst šo lapu',
'tooltip-ca-undelete' => 'Atjaunot labojumus, kas izdarīti šajā lapā pirms lapas dzēšanas.',
'tooltip-ca-move' => 'Pārvietot šo lapu',
@@ -1747,6 +1851,7 @@ Pirmajā gadījumā var arī lietot šādu metodi, piem., [[{{#Special:Export}}/
'tooltip-search-fulltext' => 'Meklēt lapās šo tekstu',
'tooltip-p-logo' => 'Sākumlapa',
'tooltip-n-mainpage' => 'Iet uz sākumlapu',
+'tooltip-n-mainpage-description' => 'Šī projekta sākumlapa',
'tooltip-n-portal' => 'Par šo projektu, par to, ko tu vari šeit darīt un kur ko atrast',
'tooltip-n-currentevents' => 'Uzzini papildinformāciju par šobrīd aktuālajiem notikumiem',
'tooltip-n-recentchanges' => 'Izmaiņas, kas nesen izdarītas šajā wiki.',
@@ -1787,7 +1892,7 @@ Tas atļauj pievienot iemeslu kopsavilkumā.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonīmais {{grammar:ģenitīvs|{{SITENAME}}}} lietotājs|Anonīmie {{grammar:ģenitīvs|{{SITENAME}}}} lietotāji}}',
'siteuser' => '{{grammar:ģenitīvs|{{SITENAME}}}} lietotājs $1',
-'lastmodifiedatby' => 'Šo lapu pēdējoreiz izmainīja $3, $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Šo lapu pēdējoreiz izmainīja $3, $2, $1.',
# Spam protection
'spamprotectiontitle' => 'Spama filtrs',
@@ -1809,6 +1914,11 @@ To visticamāk izraisīja ārēja saite uz melnajā sarakstā esošu interneta v
'mw_math_modern' => 'Moderniem pārlūkiem ieteiktais variants',
'mw_math_mathml' => 'MathML, ja iespējams (eksperimentāla iespēja)',
+# Math errors
+'math_unknown_error' => 'nezināma kļūda',
+'math_unknown_function' => 'nezināma funkcija',
+'math_syntax_error' => 'sintakses kļūda',
+
# Patrol log
'patrol-log-page' => 'Pārbaudes reģistrs',
'patrol-log-line' => '"$2" lapas $1 atzīmēta kā pārbaudīta $3',
@@ -1861,7 +1971,7 @@ Pārējie lauki, pēc noklusējuma, būs paslēpti.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'platums',
@@ -1906,7 +2016,7 @@ Pārējie lauki, pēc noklusējuma, būs paslēpti.
'exif-gpslongitude-e' => 'Austrumu garums',
'exif-gpslongitude-w' => 'Rietumu garums',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometri stundā',
'exif-gpsspeed-m' => 'Jūdzes stundā',
@@ -2030,9 +2140,10 @@ Var arī lietot [[Special:Watchlist/edit|standarta izmainīšanas lapu]].',
'watchlisttools-raw' => 'Izmainīt uzraugāmo rakstu saraksta kodu',
# Special:Version
-'version' => 'Versija', # Not used as normal message but as header for the special page itself
+'version' => 'Versija',
'version-extensions' => 'Ieinstalētie paplašinājumi',
'version-specialpages' => 'Īpašās lapas',
+'version-version' => '(Versija $1)',
'version-software-version' => 'Versija',
# Special:FilePath
@@ -2071,4 +2182,7 @@ Var arī lietot [[Special:Watchlist/edit|standarta izmainīšanas lapu]].',
# Database error messages
'dberr-header' => 'Šim viki ir problēma',
+# HTML forms
+'htmlform-reset' => 'Atcelt izmaiņas',
+
);
diff --git a/languages/messages/MessagesLzh.php b/languages/messages/MessagesLzh.php
index 94150aca..4c77f183 100644
--- a/languages/messages/MessagesLzh.php
+++ b/languages/messages/MessagesLzh.php
@@ -95,6 +95,7 @@ $messages = array(
'tog-enotifminoredits' => '校新,遣函',
'tog-enotifrevealaddr' => '列余址於書內',
'tog-shownumberswatching' => '放哨有',
+'tog-oldsig' => '覽原署名:',
'tog-fancysig' => '署以本碼待之(免自連)',
'tog-externaleditor' => '它器修文(高人用,需設之)',
'tog-externaldiff' => '它器修異(高人用,需設之)',
@@ -118,6 +119,13 @@ $messages = array(
'underline-never' => '絕',
'underline-default' => '慣',
+# Font style option in Special:Preferences
+'editfont-style' => '纂字樣:',
+'editfont-default' => '慣',
+'editfont-monospace' => '固字',
+'editfont-sansserif' => '哥特字',
+'editfont-serif' => '宋明字',
+
# Dates
'sunday' => '週日',
'monday' => '週一',
@@ -177,7 +185,7 @@ $messages = array(
'category-media-header' => '「$1」中之媒',
'category-empty' => "''無頁或媒也。''",
'hidden-categories' => '$1隱類',
-'hidden-category-category' => '隱類', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隱類',
'category-subcat-count' => '{{PLURAL:$2|門有戶壹。|門有戶$1,有$2戶也。}}',
'category-subcat-count-limited' => '門有戶$1。',
'category-article-count' => '{{PLURAL:$2|門有頁壹。|門有頁$1,有$2頁也。}}',
@@ -185,6 +193,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|門有檔壹。|門有檔$1,有$2檔也。}}',
'category-file-count-limited' => '門有檔$1。',
'listingcontinuesabbrev' => '續',
+'index-category' => '已索之頁',
+'noindex-category' => '未索之頁',
'mainpagetext' => "'''共筆臺已立'''",
'mainpagedocfooter' => "欲識維基,見[http://meta.wikimedia.org/wiki/Help:Contents User's Guide]
@@ -195,10 +205,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => '述',
-'article' => '文',
-'newwindow' => '啟窗',
-'cancel' => '捨',
+'about' => '述',
+'article' => '文',
+'newwindow' => '啟窗',
+'cancel' => '捨',
+'moredotdotdot' => '見逾',
+'mypage' => '寒舍',
+'mytalk' => '書房',
+'anontalk' => '與(IP)私議',
+'navigation' => '導',
+'and' => '與',
+
+# Cologne Blue skin
'qbfind' => '尋',
'qbbrowse' => '覽',
'qbedit' => '纂',
@@ -206,15 +224,35 @@ $messages = array(
'qbpageinfo' => '內文',
'qbmyoptions' => '吾好',
'qbspecialpages' => '非凡',
-'moredotdotdot' => '見逾',
-'mypage' => '寒舍',
-'mytalk' => '書房',
-'anontalk' => '與(IP)私議',
-'navigation' => '導',
-'and' => '與',
-
-# Metadata in edit box
-'metadata_help' => '衍意:',
+'faq' => '頻答問',
+'faqpage' => 'Project:頻答問',
+
+# Vector skin
+'vector-action-addsection' => '入題',
+'vector-action-delete' => '刪',
+'vector-action-move' => '遷',
+'vector-action-protect' => '緘',
+'vector-action-undelete' => '覽刪',
+'vector-action-unprotect' => '啟',
+'vector-namespace-category' => '類',
+'vector-namespace-help' => '助',
+'vector-namespace-image' => '檔',
+'vector-namespace-main' => '文',
+'vector-namespace-media' => '雅',
+'vector-namespace-mediawiki' => '訊',
+'vector-namespace-project' => '策',
+'vector-namespace-special' => '奇',
+'vector-namespace-talk' => '議',
+'vector-namespace-template' => '模',
+'vector-namespace-user' => '齋',
+'vector-view-create' => '立',
+'vector-view-edit' => '纂',
+'vector-view-history' => '覽史',
+'vector-view-view' => '閱',
+'vector-view-viewsource' => '覽源',
+'actions' => '動',
+'namespaces' => '名集',
+'variants' => '變字',
'errorpagetitle' => '誤',
'returnto' => '返$1。',
@@ -264,18 +302,22 @@ $messages = array(
'otherlanguages' => '他山',
'redirectedfrom' => '(渡自$1)',
'redirectpagesub' => '渡',
-'lastmodifiedat' => '此頁於$1$2方易。', # $1 date, $2 time
+'lastmodifiedat' => '此頁於$1$2方易。',
'viewcount' => '此頁$1閱矣',
'protectedpage' => '此頁錮矣',
'jumpto' => '往:',
'jumptonavigation' => '嚮',
'jumptosearch' => '尋',
+'view-pool-error' => '歉也,伺服器超負矣。
+多簿查頁。
+欲試候之。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '述{{SITENAME}}',
'aboutpage' => 'Project:述',
'copyright' => '文奉$1行。',
-'copyrightpagename' => '權歸{{SITENAME}}',
'copyrightpage' => '{{ns:project}}:版權',
'currentevents' => '世事',
'currentevents-url' => 'Project:世事',
@@ -283,8 +325,6 @@ $messages = array(
'disclaimerpage' => 'Project:免責宣',
'edithelp' => '助纂塾',
'edithelppage' => 'Help:纂',
-'faq' => '頻答問',
-'faqpage' => 'Project:頻答問',
'helppage' => 'Help:目錄',
'mainpage' => '卷首',
'mainpage-description' => '卷首',
@@ -359,10 +399,6 @@ $messages = array(
"$1"
內此函式"$2".
庫藏報有誤"$3: $4"',
-'noconnect' => '歉哉有變,莫能問庫藏。<br />
-$1',
-'nodb' => '莫能擇庫$1',
-'cachederror' => '此為謄本,恐不新也',
'laggedslavemode' => '警示,此頁不新',
'readonly' => '鎖庫藏',
'enterlockreason' => '何以鎖之?何日啟之?',
@@ -374,6 +410,8 @@ $1',
'missingarticle-diff' => '(異:$1,$2)',
'internalerror' => '家誤',
'internalerror_info' => '家誤:$1',
+'fileappenderrorread' => '當附時無讀 "$1",未可為也。',
+'fileappenderror' => '"$2"附"$1",未可為也。',
'filecopyerror' => '"$1"謄"$2",未可為也。',
'filerenameerror' => '"$2"替"$1"名,未可為也。',
'filedeleteerror' => '"$1"未可刪也。',
@@ -383,7 +421,7 @@ $1',
'unexpected' => '異數,"$1"="$2"。',
'formerror' => '有誤:表不可呈',
'badarticleerror' => '此頁莫為之',
-'cannotdelete' => '此頁或刪矣,不復為之。',
+'cannotdelete' => '頁或檔"$1"刪矣,不復為之。',
'badtitle' => '無此題',
'badtitletext' => '或別、或缺、或違、或他山謬鏈,此題不存也。',
'perfcached' => '下為謄本,恐不新也。',
@@ -410,14 +448,12 @@ $2',
'virus-unknownscanner' => '不明之反毒:',
# Login and logout pages
-'logouttitle' => '去簿',
'logouttext' => "'''子去簿矣'''
子可匿名還覽{{SITENAME}},或[[Special:UserLogin|復登]]同簿、異簿。
未清謄本,覽器文舊,且慎之。",
'welcomecreation' => '== $1大駕光臨! ==
子簿增矣,敬更[[Special:Preferences|簿註]]。',
-'loginpagetitle' => '合符節',
'yourname' => '名',
'yourpassword' => '符節',
'yourpasswordagain' => '復核節',
@@ -427,6 +463,7 @@ $2',
'nav-login-createaccount' => '登簿、增簿',
'loginprompt' => '登簿{{SITENAME}}須cookies,請准之。',
'userlogin' => '登簿、增簿',
+'userloginnocreate' => '登簿',
'logout' => '去簿',
'userlogout' => '去簿',
'notloggedin' => '尚未登簿',
@@ -438,26 +475,8 @@ $2',
'createaccountmail' => '同郵',
'badretype' => '符節不合也。',
'userexists' => '簿名存矣,惠更之',
-'youremail' => '郵:',
-'username' => '簿名:',
-'uid' => '編號︰',
-'prefs-memberingroups' => '{{PLURAL:$1|一|權任}}:',
-'yourrealname' => '本名:',
-'yourlanguage' => '語言:',
-'yourvariant' => '變字:',
-'yournick' => '署名︰',
-'badsig' => '無效之自畫。
-查HTML籤之。',
-'badsiglength' => '署名宜簡。',
-'yourgender' => '性別︰',
-'gender-unknown' => '未',
-'gender-male' => '男',
-'gender-female' => '女',
-'email' => '郵',
-'prefs-help-realname' => '可用署也,選填之。',
'loginerror' => '登簿誤然',
-'prefs-help-email' => '電郵地址,雖非必要,惟失符節之時,重設者須寄於此。',
-'prefs-help-email-required' => '郵須也。',
+'createaccounterror' => '無增簿:$1',
'nocookiesnew' => '{{SITENAME}}簿增而未登,惠准cookies後再登之。',
'nocookieslogin' => '登簿{{SITENAME}}須cookies,惠准之後登。',
'noname' => '缺簿名,或不格也。',
@@ -466,15 +485,18 @@ $2',
'nosuchuser' => '查無此人。',
'nosuchusershort' => '查無"<nowiki>$1</nowiki>",惠核之。',
'nouserspecified' => '簿名須也',
+'login-userblocked' => '此簿已被封。登無簿也。',
'wrongpassword' => '符節不合,惠核之。',
'wrongpasswordempty' => '缺符節,惠補之。',
-'passwordtooshort' => '符節短錯哉,莫逾$1字,且與簿名異也。',
+'passwordtooshort' => '符節莫逾$1字。',
+'password-name-match' => '符節與簿名異也。',
'mailmypassword' => '遣吾符節',
'passwordremindertitle' => '新臨符節自{{SITENAME}}',
'passwordremindertext' => '$1求遣{{SITENAME}}($4):"$2"之臨符節為"$3"。日到有$5。
子若罔須或省更之,如舊即可。',
'noemail' => '"$1"無存郵也。',
+'noemailcreate' => '爾需乙郵也',
'passwordsent' => '新節已遣$1",惠鑒復登之。',
'blocked-mailpassword' => '爾之IP已錮,密復無用之,以之濫也。',
'eauthentsent' => '核文遣矣。惠循核之,簿方活也。',
@@ -493,9 +515,11 @@ $2',
'createaccount-text' => '有人於{{SITENAME}}用爾之電郵增名為 "$2" 之簿 ($4),符節為 "$3" 。汝應登,再改符節也。
如簿誤增,爾可略之。',
+'usernamehasherror' => '簿名無含切細符也',
'login-throttled' => '爾多試於此簿登中。
請候再試之。',
'loginlanguagelabel' => '語:$1',
+'suspicious-userlogout' => '爾欲無離也,可由壞瀏覽器或快枝代理呈送之。',
# Password reset dialog
'resetpass' => '變符',
@@ -508,11 +532,10 @@ $2',
'resetpass_submit' => '設符再登',
'resetpass_success' => '爾之符節已改!
現登簿中...',
-'resetpass_bad_temporary' => '無效之臨符。
-爾或改符,或求新臨符。',
'resetpass_forbidden' => '無改符節',
'resetpass-no-info' => '爾須登簿後方進此頁。',
'resetpass-submit-loggedin' => '改符節',
+'resetpass-submit-cancel' => '消',
'resetpass-wrong-oldpass' => '無效之臨符或現符。
爾或改符,或求新臨符。',
'resetpass-temp-password' => '臨符節:',
@@ -571,7 +594,6 @@ $2',
'blockededitsource' => "子'''$1纂文'''如下:",
'whitelistedittitle' => '登簿以纂',
'whitelistedittext' => '$1後方可纂文。',
-'confirmedittitle' => '證驛以纂',
'confirmedittext' => '驛證方可纂文。惠見[[Special:Preferences|簿註]]。',
'nosuchsectiontitle' => '無尋節',
'nosuchsectiontext' => '爾纂之節無存也。
@@ -588,13 +610,18 @@ $2',
'noarticletext' => '查無此文。[[Special:Search/{{PAGENAME}}|尋題]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌],
或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 纂頁]</span>。',
+'noarticletext-nopermission' => '查無此文。[[Special:Search/{{PAGENAME}}|尋題]],或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌]</span>。',
'userpage-userdoesnotexist' => '「$1」之簿未增也。請建纂本頁前查之。',
+'userpage-userdoesnotexist-view' => '「$1」之簿未增也。',
+'blocked-notice-logextract' => '該簿現鎖也。
+下列之記鎖,以察之:',
'clearyourcache' => "'''註:'''重取頁面,文方新焉。
'''Mozilla / Firefox / Safari:'''押''Shift''並點''重新載入'',或合鍵''Ctrl-F5''或''Ctrl-R''(Macintosh為''Command-R'')。
'''Konqueror:'''點''Reload'',或押''F5''。
:''Opera:'''須至''Tools→Preferences''清謄本。
'''Internet Explorer:'''押''Ctrl''並點''重新整理'',或合鍵''Ctrl-F5''。",
-'usercssjsyoucanpreview' => "'''訣:'''CSS/JS應先預覽而後存。",
+'usercssyoucanpreview' => "'''訣:'''CSS應先「{{int:showpreview}}」而後存。",
+'userjsyoucanpreview' => "'''訣:'''JavaScript應先「{{int:showpreview}}」而後存。",
'usercsspreview' => "'''預覽CSS。'''
'''尚未儲焉。'''",
'userjspreview' => "'''預覽JavaScript。'''
@@ -629,9 +656,13 @@ $2',
'readonlywarning' => "'''警示:修庫藏,存儲謝焉。惠謄文備用之。'''
鎖者曰:「$1」",
-'protectedpagewarning' => "'''警示:庫藏鎖矣,惟有秩纂之。'''",
-'semiprotectedpagewarning' => "'''註記'''庫藏鎖矣,惟登簿纂之。",
+'protectedpagewarning' => "'''警示:庫藏鎖矣,惟有秩纂之。'''
+近誌下曰參詳之:",
+'semiprotectedpagewarning' => "'''註記'''庫藏鎖矣,惟登簿纂之。
+近誌下曰參詳之:",
'cascadeprotectedwarning' => "'''警示:'''此頁鎖錮矣,唯有秩纂之,乃因{{PLURAL:$1|一|多}}頁連誅之:",
+'titleprotectedwarning' => "'''警告:此頁錮矣,乃需[[Special:ListGroupRights|權]]用之。'''
+近誌下曰參詳之:",
'templatesused' => '此文用模:',
'template-protected' => '(錮)',
'template-semiprotected' => '(半錮)',
@@ -639,14 +670,16 @@ $2',
'nocreatetitle' => '新題謝焉',
'nocreatetext' => '舊題可修,新題謝焉。[[Special:UserLogin|登簿、增簿]]以逮權也。',
'nocreate-loggedin' => '子權未逮,新頁謝焉。',
+'sectioneditnotsupported-title' => '不纂持節',
+'sectioneditnotsupported-text' => '此頁不持纂節也。',
'permissionserrors' => '權未逮也',
'permissionserrorstext' => '子權未逮,有{{PLURAL:$1|因|因}}如下:',
'permissionserrorstext-withaction' => '子權未逮,有{{PLURAL:$1|因|因}}如$2:',
-'recreate-deleted-warn' => "'''留意:刪文復造,惠慎纂。'''
-誌刪如下:",
-'deleted-notice' => '此頁刪矣。
-此頁之誌參留之。',
-'deletelog-fulllog' => '察整誌',
+'recreate-moveddeleted-warn' => "'''留意:刪文復造,惠慎纂。'''
+誌刪遷如下:",
+'moveddeleted-notice' => '此頁刪矣。
+此頁之誌刪遷參留之。',
+'log-fulllog' => '閱誌全',
'edit-hook-aborted' => '鈎纂消矣。
無解也。',
'edit-gone-missing' => '無更頁。
@@ -669,6 +702,7 @@ $2',
'post-expand-template-argument-category' => '含略模數之頁',
'parser-template-loop-warning' => '測迴模:[[$1]]',
'parser-template-recursion-depth-warning' => '已超迴模限深($1)',
+'language-converter-depth-warning' => '已超字變限深($1)',
# "Undo" feature
'undo-success' => '此審可返也。查確然完之。',
@@ -686,7 +720,7 @@ $2',
'currentrev' => '今審',
'currentrev-asof' => '$1之今審',
'revisionasof' => '$1審',
-'revision-info' => '本版日期︰$1;作者︰$2', # Additionally available: $3: revision id
+'revision-info' => '本版日期︰$1;作者︰$2',
'previousrevision' => '←舊',
'nextrevision' => '新→',
'currentrevisionlink' => '今審',
@@ -698,7 +732,7 @@ $2',
'histlegend' => "辨異:擇二孔後,按Enter、或點下鈕以辨之。<br />
釋義:'''({{int:cur}})'''與今審辨;'''({{int:last}})'''與前審辨;'''{{int:minoreditletter}}''',校文",
'history-fieldset-title' => '誌覽',
-'deletedrev' => '刪矣',
+'history-show-deleted' => '只刪',
'histfirst' => '初',
'histlast' => '末',
'historysize' => '($1位元組)',
@@ -707,62 +741,98 @@ $2',
# Revision feed
'history-feed-title' => '誌審',
'history-feed-description' => '維基誌審',
-'history-feed-item-nocomment' => '$1於$2', # user at time
+'history-feed-item-nocomment' => '$1於$2',
'history-feed-empty' => '此頁不存,或刪、或更。類由此[[Special:Search|尋]]',
# Revision deletion
-'rev-deleted-comment' => '(此註刪矣)',
-'rev-deleted-user' => '(此簿刪矣)',
-'rev-deleted-event' => '(此誌刪矣)',
-'rev-deleted-text-permission' => "此審'''刪'''矣,詳見[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}}誌刪]。",
-'rev-deleted-text-view' => "此審'''刪'''矣,惟有秩可見之,詳見[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 誌刪]。",
-'rev-deleted-no-diff' => "此審'''刪'''矣,無視之審也。
-詳見[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}}誌刪]。",
-'rev-deleted-unhide-diff' => "此審'''刪'''矣,
-詳見[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}}誌刪]。
+'rev-deleted-comment' => '(此註刪矣)',
+'rev-deleted-user' => '(此簿刪矣)',
+'rev-deleted-event' => '(此誌刪矣)',
+'rev-deleted-user-contribs' => '[簿名或IP地址已除 - 從貢藏纂]',
+'rev-deleted-text-permission' => "此審'''刪'''矣,詳見[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}}誌刪]。",
+'rev-deleted-text-unhide' => "此審'''刪'''矣,詳見[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}}誌刪]。
+有秩仍看者,[$1 看此審]也。",
+'rev-suppressed-text-unhide' => "此審'''廢'''矣,詳見[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}}誌廢]。
+有秩仍看者,[$1 看此審]也。",
+'rev-deleted-text-view' => "此審'''刪'''矣,惟有秩可見之,詳見[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 誌刪]。",
+'rev-suppressed-text-view' => "此審'''廢'''矣,惟有秩可見之,詳見[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 誌廢]。",
+'rev-deleted-no-diff' => "此審'''刪'''矣,無視之審也。
+詳見[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}}誌刪]。",
+'rev-suppressed-no-diff' => "此審'''刪'''矣,爾無視此審也。",
+'rev-deleted-unhide-diff' => "此審'''刪'''矣,
+詳見[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}}誌刪]。
有秩仍看者,[$1 看此審]也。",
-'rev-delundel' => '見/藏',
-'revisiondelete' => '刪、還審',
-'revdelete-nooldid-title' => '無此審。',
-'revdelete-nooldid-text' => '審未擇,審未存,爾隱現審,不可為之。',
-'revdelete-nologtype-title' => '無誌類',
-'revdelete-nologtype-text' => '爾未定誌類以為之。',
-'revdelete-toomanytargets-title' => '多標',
-'revdelete-toomanytargets-text' => '爾定多標以為之。',
-'revdelete-nologid-title' => '無效之誌項',
-'revdelete-nologid-text' => '爾未定標誌項以為之或其無存也。',
-'revdelete-selected' => "'''審[[:$1]]已擇$2:'''",
-'logdelete-selected' => "'''已擇誌$1:'''",
-'revdelete-text' => "'''刪審雖見誌,其文摒公眾,惟有秩可得之。'''無規則有秩可復還焉。",
-'revdelete-suppress-text' => "'''限'''於此壓:
+'rev-suppressed-unhide-diff' => "此審'''廢'''矣,
+詳見[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}}誌廢]。
+有秩仍看者,[$1 看此審]也。",
+'rev-deleted-diff-view' => "此二孔之一審'''刪'''矣,惟有秩可見之,詳見[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 誌刪]。",
+'rev-suppressed-diff-view' => "此二孔之一審'''廢'''矣,惟有秩可見之,詳見[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 誌廢]。",
+'rev-delundel' => '見/藏',
+'rev-showdeleted' => '見',
+'revisiondelete' => '刪、還審',
+'revdelete-nooldid-title' => '無此審。',
+'revdelete-nooldid-text' => '審未擇,審未存,爾隱現審,不可為之。',
+'revdelete-nologtype-title' => '無誌類',
+'revdelete-nologtype-text' => '爾未定誌類以為之。',
+'revdelete-nologid-title' => '無效之誌項',
+'revdelete-nologid-text' => '爾未定標誌項以為之或其無存也。',
+'revdelete-no-file' => '指之檔無存也。',
+'revdelete-show-file-confirm' => '爾察於$2 $3刪「$1」檔之審?',
+'revdelete-show-file-submit' => '善',
+'revdelete-selected' => "'''審[[:$1]]已擇$2:'''",
+'logdelete-selected' => "'''已擇誌$1:'''",
+'revdelete-text' => "'''刪審雖見誌,其文摒公眾,惟有秩可得之。'''無規則有秩可復還焉。",
+'revdelete-confirm' => '爾確作之,解之果焉,合之[[{{MediaWiki:Policy-url}}|策]]矣。',
+'revdelete-suppress-text' => "'''限'''於此壓:
* 無適之個訊
*: ''地、號、保等之。''",
-'revdelete-legend' => '見,規之以',
-'revdelete-hide-text' => '藏審文',
-'revdelete-hide-comment' => '藏贊',
-'revdelete-hide-user' => '簿、IP址以藏',
-'revdelete-hide-restricted' => '廢有秩與簿之事',
-'revdelete-suppress' => '廢有秩與簿之事',
-'revdelete-hide-image' => '藏檔容',
-'revdelete-unsuppress' => '復審解限',
-'revdelete-log' => '因:',
-'revdelete-submit' => '擇審使之',
-'revdelete-logentry' => '[[$1]]之見審動矣',
-'logdelete-logentry' => '[[$1]]之事見動矣',
-'revdelete-success' => "'''見審已更也。'''",
-'logdelete-success' => "'''見事已設也。'''",
-'revdel-restore' => '動見之',
-'pagehist' => '頁史',
-'deletedhist' => '刪史',
-'revdelete-content' => '字',
-'revdelete-summary' => '摘',
-'revdelete-uname' => '簿名',
-'revdelete-restricted' => '應限至有秩',
-'revdelete-unrestricted' => '除限自有秩',
-'revdelete-hid' => '隱$1',
-'revdelete-unhid' => '非隱$1',
-'revdelete-log-message' => '$1之修$2',
-'logdelete-log-message' => '$1之事$2',
+'revdelete-legend' => '見,規之以',
+'revdelete-hide-text' => '藏審文',
+'revdelete-hide-image' => '藏檔容',
+'revdelete-hide-comment' => '藏贊',
+'revdelete-hide-user' => '簿、IP址以藏',
+'revdelete-hide-restricted' => '廢有秩與簿之事',
+'revdelete-radio-same' => '(無改)',
+'revdelete-radio-set' => '可',
+'revdelete-radio-unset' => '否',
+'revdelete-suppress' => '廢有秩與簿之事',
+'revdelete-unsuppress' => '復審解限',
+'revdelete-log' => '因:',
+'revdelete-submit' => '擇{{PLURAL:$1|審}}使之',
+'revdelete-logentry' => '[[$1]]之見審動矣',
+'logdelete-logentry' => '[[$1]]之事見動矣',
+'revdelete-success' => "'''見審已更也。'''",
+'revdelete-failure' => "'''見審無更也:'''
+$1",
+'logdelete-success' => "'''見事已設也。'''",
+'logdelete-failure' => "'''見事無設也:'''
+$1",
+'revdel-restore' => '動見之',
+'pagehist' => '頁史',
+'deletedhist' => '刪史',
+'revdelete-content' => '字',
+'revdelete-summary' => '摘',
+'revdelete-uname' => '簿名',
+'revdelete-restricted' => '應限至有秩',
+'revdelete-unrestricted' => '除限自有秩',
+'revdelete-hid' => '隱$1',
+'revdelete-unhid' => '非隱$1',
+'revdelete-log-message' => '$1之修$2',
+'logdelete-log-message' => '$1之事$2',
+'revdelete-hide-current' => '錯藏於$1 $2項:現之審也,無藏之。',
+'revdelete-show-no-access' => '錯示於$1 $2項:「限」之項,爾無通行權也。',
+'revdelete-modify-no-access' => '錯改於$1 $2項:「限」之項,爾無通行權也。',
+'revdelete-modify-missing' => '錯改項ID $1:失庫!',
+'revdelete-no-change' => '警:於$1 $2之項求示設也。',
+'revdelete-concurrent-change' => '錯改於$1 $2項:眾改之設,乃另之改。查誌。',
+'revdelete-only-restricted' => '藏期於 $1 $2 之項:爾無廢有秩見之項,而無選另廢項也。',
+'revdelete-reason-dropdown' => '*常因
+** 侵權
+** 無合之人料',
+'revdelete-otherreason' => '它附因:',
+'revdelete-reasonotherlist' => '它因',
+'revdelete-edit-reasonlist' => '纂刪因',
+'revdelete-offender' => '審著:',
# Suppression log
'suppressionlog' => '誌廢',
@@ -801,67 +871,13 @@ $2',
'mergelogpagetext' => '下乃近頁之誌併至二頁之表也。',
# Diffs
-'history-title' => '$1之誌',
-'difference' => '(辨異)',
-'lineno' => '列$1:',
-'compareselectedversions' => '辨二擇',
-'visualcomparison' => '較見',
-'wikicodecomparison' => '較字',
-'editundo' => '悔',
-'diff-multi' => '(未示之審有$1)',
-'diff-movedto' => '遷到$1',
-'diff-styleadded' => '加$1樣表',
-'diff-added' => '加$1',
-'diff-changedto' => '改到$1',
-'diff-movedoutof' => '除自$1',
-'diff-styleremoved' => '除$1樣表',
-'diff-removed' => '除$1',
-'diff-changedfrom' => '改自$1',
-'diff-src' => '源碼',
-'diff-withdestination' => '跟$1目的地',
-'diff-with' => '跟 $1 $2',
-'diff-with-final' => '與 $1 $2',
-'diff-width' => '闊',
-'diff-height' => '高',
-'diff-p' => '段',
-'diff-blockquote' => '錄',
-'diff-h1' => '題(一級)',
-'diff-h2' => '題(二級)',
-'diff-h3' => '題(三級)',
-'diff-h4' => '題(四級)',
-'diff-h5' => '題(五級)',
-'diff-pre' => '預設塊',
-'diff-div' => '部分',
-'diff-ul' => '未排表',
-'diff-ol' => '已排表',
-'diff-li' => '表項',
-'diff-table' => '表',
-'diff-tbody' => '表容',
-'diff-tr' => '行',
-'diff-td' => '格',
-'diff-th' => '表頭',
-'diff-br' => '斷行',
-'diff-hr' => '橫線',
-'diff-code' => '電腦碼塊',
-'diff-dl' => '定表',
-'diff-dt' => '定字',
-'diff-dd' => '解',
-'diff-input' => '輸',
-'diff-form' => '表',
-'diff-img' => '圖',
-'diff-span' => '樣',
-'diff-a' => '接',
-'diff-i' => '斜',
-'diff-b' => '粗',
-'diff-strong' => '強',
-'diff-em' => '重',
-'diff-font' => '字體',
-'diff-big' => '大',
-'diff-del' => '刪',
-'diff-tt' => '固闊',
-'diff-sub' => '下標',
-'diff-sup' => '上標',
-'diff-strike' => '刪線',
+'history-title' => '$1之誌',
+'difference' => '(辨異)',
+'lineno' => '列$1:',
+'compareselectedversions' => '辨二擇',
+'showhideselectedversions' => '示/藏之擇',
+'editundo' => '悔',
+'diff-multi' => '(未示之審有$1)',
# Search results
'searchresults' => '得尋',
@@ -869,25 +885,22 @@ $2',
'searchresulttext' => '何索{{SITENAME}},詳見[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => "'''[[:$1]]'''尋焉([[Special:Prefixindex/$1|『$1』之全首頁]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|『$1』之全取佐]])",
'searchsubtitleinvalid' => "'''$1'''尋焉",
-'noexactmatch' => "'''無題曰\"\$1\"。'''子可[[:\$1|撰之]]。",
-'noexactmatch-nocreate' => "'''無題曰\"\$1\"。'''",
'toomanymatches' => '多配應之,試異詢也',
'titlematches' => '合題',
'notitlematches' => '無題合',
'textmatches' => '合文',
'notextmatches' => '無文合',
-'prevn' => '前$1',
-'nextn' => '次$1',
-'viewprevnext' => '見($1)($2)($3)',
+'prevn' => '前{{PLURAL:$1|$1}}',
+'nextn' => '次{{PLURAL:$1|$1}}',
+'viewprevnext' => '見($1 {{int:pipe-separator}} $2)($3)',
'searchmenu-legend' => '尋選',
'searchmenu-exists' => "'''在此wiki中有頁為\"[[:\$1]]\"'''",
'searchmenu-new' => "'''在此wiki上建頁\"[[:\$1]]\"!'''",
'searchhelp-url' => 'Help:目錄',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|查此首之頁]]',
'searchprofile-articles' => '容',
-'searchprofile-articles-and-proj' => '容與題',
-'searchprofile-project' => '題',
-'searchprofile-images' => '檔',
+'searchprofile-project' => '助題',
+'searchprofile-images' => '媒',
'searchprofile-everything' => '全',
'searchprofile-advanced' => '進',
'searchprofile-articles-tooltip' => '在$1中尋',
@@ -895,8 +908,6 @@ $2',
'searchprofile-images-tooltip' => '尋檔',
'searchprofile-everything-tooltip' => '尋全(含議)',
'searchprofile-advanced-tooltip' => '自定名集中尋',
-'prefs-search-nsdefault' => '用定值尋:',
-'prefs-search-nscustom' => '尋自定名集:',
'search-result-size' => '$1 ($2字)',
'search-result-score' => '關:$1%',
'search-redirect' => '(轉 $1)',
@@ -909,11 +920,12 @@ $2',
'search-mwsuggest-disabled' => '無議',
'search-relatedarticle' => '關',
'mwsuggest-disable' => '停AJAX議',
+'searcheverything-enable' => '尋全名集',
'searchrelated' => '關',
'searchall' => '全',
'showingresults' => "見'''$1'''尋,自'''$2'''始:",
'showingresultsnum' => "見'''$3'''尋,自'''$2'''始:",
-'showingresultstotal' => "見'''$1{{PLURAL:$4||至$2}}''',共'''$3'''尋",
+'showingresultsheader' => "見'''$4''',{{PLURAL:$5|'''$1''''''$3'''之尋|'''$1 - $2''',共'''$3'''之尋}}",
'nonefound' => "'''注''':部名冊預尋也。。試''all:''尋全名刪之頁(含議模等),或可用要之名冊為前綴也。",
'search-nonefound' => '詢中無結。',
'powersearch' => '尋',
@@ -921,83 +933,122 @@ $2',
'powersearch-ns' => '尋名集:',
'powersearch-redir' => '轉表',
'powersearch-field' => '尋',
+'powersearch-togglelabel' => '核:',
+'powersearch-toggleall' => '全',
+'powersearch-togglenone' => '無',
'search-external' => '外尋',
'searchdisabled' => '{{SITENAME}}因性能而停用之。可Gooogle查之,乃之過時也。',
+# Quickbar
+'qbsettings-none' => '無',
+
# Preferences page
-'preferences' => '簿註',
-'mypreferences' => '簿註',
-'prefs-edits' => '數計:',
-'prefsnologin' => '未登簿',
-'prefsnologintext' => '註記須<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} 登簿]</span>。',
-'prefsreset' => '簿註歸白',
-'qbsettings-none' => '無',
-'changepassword' => '易符節',
-'skin' => '面版',
-'skin-preview' => '草覽',
-'math' => '數學',
-'dateformat' => '日期格式',
-'datedefault' => '原註',
-'datetime' => '日時',
-'math_failure' => '譯不成',
-'math_unknown_error' => '未知之誤',
-'math_unknown_function' => '未知函式',
-'math_lexing_error' => '律有誤',
-'math_syntax_error' => '語法有誤',
-'prefs-personal' => '概簿',
-'prefs-rc' => '近易',
-'prefs-watchlist' => '哨站',
-'prefs-watchlist-days' => '哨報有日',
-'prefs-watchlist-days-max' => '(最大有七)',
-'prefs-watchlist-edits' => '哨站有易',
-'prefs-watchlist-edits-max' => '(最多之量:一千)',
-'prefs-misc' => '雜',
-'prefs-resetpass' => '更符節',
-'saveprefs' => '儲',
-'resetprefs' => '棄',
-'restoreprefs' => '重修',
-'textboxsize' => '在修',
-'prefs-edit-boxsize' => '修框尺',
-'rows' => '行:',
-'columns' => '列:',
-'searchresultshead' => '尋',
-'resultsperpage' => '頁示尋',
-'contextlines' => '尋分列',
-'contextchars' => '列有字',
-'recentchangesdays' => '近易示日:',
-'recentchangesdays-max' => '(最大有$1)',
-'recentchangescount' => '修著凡幾︰',
-'savedprefs' => '簿註書矣',
-'timezonelegend' => '時區:',
-'timezonetext' => '¹與伺服器偏時有',
-'localtime' => '本地時:',
-'timezoneselect' => '時區:',
-'timezoneuseserverdefault' => '用伺服器之預定',
-'timezoneuseoffset' => '它(定偏)',
-'timezoneoffset' => '偏¹:',
-'servertime' => '伺服器時:',
-'guesstimezone' => '瀏覽器填之',
-'timezoneregion-africa' => '非洲',
-'timezoneregion-america' => '美洲',
-'timezoneregion-antarctica' => '南極洲',
-'timezoneregion-arctic' => '北極',
-'timezoneregion-asia' => '亞洲',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => '澳洲',
-'timezoneregion-europe' => '歐洲',
-'timezoneregion-indian' => '印度洋',
-'timezoneregion-pacific' => '太平洋',
-'allowemail' => '允遺書',
-'prefs-searchoptions' => '尋項',
-'prefs-namespaces' => '名集',
-'defaultns' => '定尋之名集:',
-'default' => '予定',
-'files' => '檔',
-'prefs-custom-css' => '定之CSS',
-'prefs-custom-js' => '定之JavaScript',
+'preferences' => '簿註',
+'mypreferences' => '簿註',
+'prefs-edits' => '數計:',
+'prefsnologin' => '未登簿',
+'prefsnologintext' => '註記須<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登簿]</span>。',
+'changepassword' => '易符節',
+'prefs-skin' => '面版',
+'skin-preview' => '草覽',
+'prefs-math' => '數學',
+'datedefault' => '原註',
+'prefs-datetime' => '日時',
+'prefs-personal' => '概簿',
+'prefs-rc' => '近易',
+'prefs-watchlist' => '哨站',
+'prefs-watchlist-days' => '哨報有日',
+'prefs-watchlist-days-max' => '最大有七',
+'prefs-watchlist-edits' => '哨站有易',
+'prefs-watchlist-edits-max' => '最多之量:一千',
+'prefs-watchlist-token' => '哨幣:',
+'prefs-misc' => '雜',
+'prefs-resetpass' => '更符節',
+'prefs-email' => '傳書',
+'prefs-rendering' => '觀',
+'saveprefs' => '儲',
+'resetprefs' => '棄',
+'restoreprefs' => '重修',
+'prefs-editing' => '在修',
+'prefs-edit-boxsize' => '修框尺',
+'rows' => '行:',
+'columns' => '列:',
+'searchresultshead' => '尋',
+'resultsperpage' => '頁示尋',
+'contextlines' => '尋分列',
+'contextchars' => '列有字',
+'recentchangesdays' => '近易示日:',
+'recentchangesdays-max' => '最大有$1',
+'recentchangescount' => '修著凡幾︰',
+'prefs-help-recentchangescount' => '含近易、史與誌。',
+'prefs-help-watchlist-token' => '添匙參爾之RSS哨。
+且人知匙,可閱矣之,擇全之值也。
+任成之值,爾可選之:$1',
+'savedprefs' => '簿註書矣',
+'timezonelegend' => '時區:',
+'localtime' => '本地時:',
+'timezoneuseserverdefault' => '用伺服器之預定',
+'timezoneuseoffset' => '它(定偏)',
+'timezoneoffset' => '偏¹:',
+'servertime' => '伺服器時:',
+'guesstimezone' => '瀏覽器填之',
+'timezoneregion-africa' => '非洲',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => '南極洲',
+'timezoneregion-arctic' => '北極',
+'timezoneregion-asia' => '亞洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳洲',
+'timezoneregion-europe' => '歐洲',
+'timezoneregion-indian' => '印度洋',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => '允遺書',
+'prefs-searchoptions' => '尋項',
+'prefs-namespaces' => '名集',
+'defaultns' => '則尋之名集:',
+'default' => '予定',
+'prefs-files' => '檔',
+'prefs-custom-css' => '定之CSS',
+'prefs-custom-js' => '定之JavaScript',
+'prefs-reset-intro' => '爾用頁重設至預之設。無修之也。',
+'prefs-emailconfirm-label' => '確郵:',
+'prefs-textboxsize' => '纂框量',
+'youremail' => '郵:',
+'username' => '簿名:',
+'uid' => '編號︰',
+'prefs-memberingroups' => '{{PLURAL:$1|一|權任}}:',
+'prefs-registration' => '注簿時辰:',
+'yourrealname' => '本名:',
+'yourlanguage' => '語言:',
+'yourvariant' => '變字:',
+'yournick' => '新署名︰',
+'prefs-help-signature' => '論版以論事以「<nowiki>~~~~</nowiki>」署名之,換爾之署名與時辰也。',
+'badsig' => '無效之自畫。
+查HTML籤之。',
+'badsiglength' => '署名宜簡。',
+'yourgender' => '性別︰',
+'gender-unknown' => '未',
+'gender-male' => '男',
+'gender-female' => '女',
+'email' => '郵',
+'prefs-help-realname' => '可用署也,選填之。',
+'prefs-help-email' => '電郵地址,雖非必要,惟失符節之時,重設者須寄於此。',
+'prefs-help-email-required' => '郵須也。',
+'prefs-info' => '基',
+'prefs-i18n' => '萬國',
+'prefs-signature' => '簽',
+'prefs-dateformat' => '日格',
+'prefs-timeoffset' => '偏時',
+'prefs-advancedediting' => '進',
+'prefs-advancedrc' => '進',
+'prefs-advancedrendering' => '進',
+'prefs-advancedsearchoptions' => '進',
+'prefs-advancedwatchlist' => '進',
+'prefs-display' => '示項',
+'prefs-diffs' => '異',
# User rights
-'userrights' => '秉治權任', # Not used as normal message but as header for the special page itself
+'userrights' => '秉治權任',
'userrights-lookup-user' => '司社',
'userrights-user-editname' => '簿名:',
'editusergroup' => '治社',
@@ -1005,6 +1056,7 @@ $2',
'userrights-editusergroup' => '治社',
'saveusergroups' => '定之',
'userrights-groupsmember' => '有員:',
+'userrights-groupsmember-auto' => '固有員:',
'userrights-groups-help' => '足下可為者有二︰
*賦其權,此其一也;
@@ -1071,6 +1123,7 @@ $2',
'right-bigdelete' => '刪大史之頁',
'right-deleterevision' => '刪與反刪頁之審',
'right-deletedhistory' => '看刪之項,無關之字',
+'right-deletedtext' => '看刪之項,審關之字',
'right-browsearchive' => '尋刪之頁',
'right-undelete' => '反刪頁',
'right-suppressrevision' => '看與復由有秩藏之審',
@@ -1084,6 +1137,8 @@ $2',
'right-editprotected' => '纂錮頁(無連錮)',
'right-editinterface' => '纂要',
'right-editusercssjs' => '纂他簿之CSS與JavaScript檔',
+'right-editusercss' => '纂他簿之CSS檔',
+'right-edituserjs' => '纂他簿之JavaScript檔',
'right-rollback' => '速復上簿頁之纂',
'right-markbotedits' => '標復纂為機纂',
'right-noratelimit' => '無率之上限',
@@ -1100,6 +1155,8 @@ $2',
'right-siteadmin' => '鎖與解鎖資料庫',
'right-reset-passwords' => '設他簿之符節',
'right-override-export-depth' => '出有五層深之頁',
+'right-versiondetail' => '示延用之版',
+'right-sendemail' => '擬書傳予他簿',
# User rights log
'rightslog' => '職權志',
@@ -1147,6 +1204,15 @@ $2',
'recentchanges-legend' => '近易項',
'recentchangestext' => '共筆揮新,悉列於此。',
'recentchanges-feed-description' => '跟wiki源之近易。',
+'recentchanges-label-legend' => '例: $1',
+'recentchanges-legend-newpage' => '$1 - 新頁',
+'recentchanges-label-newpage' => '此纂開新頁',
+'recentchanges-legend-minor' => '$1 - 細纂',
+'recentchanges-label-minor' => '此乃細纂',
+'recentchanges-legend-bot' => '$1 - 機纂',
+'recentchanges-label-bot' => '此乃機纂',
+'recentchanges-legend-unpatrolled' => '$1 - 未巡之纂',
+'recentchanges-label-unpatrolled' => '此乃未巡之纂',
'rcnote' => "下為自$4$5起,'''$2'''日內'''$1'''近易也。",
'rcnotefrom' => "下為自'''$2'''至'''$1'''之易也。",
'rclistfrom' => '自$1起之易也',
@@ -1172,6 +1238,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => '援引',
+'recentchangeslinked-feed' => '援引',
+'recentchangeslinked-toolbox' => '援引',
'recentchangeslinked-title' => '「$1」援引近易',
'recentchangeslinked-noresult' => '限期內無近易。',
'recentchangeslinked-summary' => "此奇頁乃列''由''頁援之近易(或對類之員)。
@@ -1182,8 +1250,8 @@ $2',
# Upload
'upload' => '進獻',
'uploadbtn' => '進獻',
-'reupload' => '復獻之',
'reuploaddesc' => '消進乃返載獻',
+'upload-tryagain' => '呈改檔述',
'uploadnologin' => '未登簿',
'uploadnologintext' => '[[Special:UserLogin|登簿]]始可進獻',
'upload_directory_missing' => '目錄$1已失,無建之。',
@@ -1213,6 +1281,7 @@ $2',
'minlength1' => '名務逾一字元。',
'illegalfilename' => '名"$1"不格,更之再焉。',
'badfilename' => '更名"$1。"。',
+'filetype-mime-mismatch' => '檔展名無配MIME類。',
'filetype-badmime' => '「$1」之MIME類物檔案不能獻之。',
'filetype-bad-ie-mime' => '因 Internet Explorer 偵作「$1」不貢也。它乃有危險之類也。',
'filetype-unwanted-type' => "'''「.$1」'''乃無需之物類也。
@@ -1224,11 +1293,11 @@ $2',
'emptyfile' => '無以獻,疑謬名也,惠核之。',
'fileexists' => "'''<tt>[[:$1]]</tt>'''存矣,欲蓋之則再也。 [[$1|thumb]]",
'filepageexists' => "此檔之述於'''<tt>[[:$1]]</tt>'''存矣,檔未存也。爾入述無存也。要現之,爾需纂之。",
-'fileexists-thumb' => "<center>'''現存之檔'''</center>",
'file-exists-duplicate' => '此檔乃重檔{{PLURAL:$1|一|數}}:',
'file-deleted-duplicate' => '此檔([[$1]])前刪。爾需查刪錄再貢之。',
'successfulupload' => '檔案安矣',
'uploadwarning' => '慎焉!',
+'uploadwarning-text' => '改下檔述再試之。',
'savefile' => '存之',
'uploadedimage' => '進獻"[[$1]]"',
'overwroteimage' => '新置「[[$1]]」矣',
@@ -1236,14 +1305,50 @@ $2',
'php-uploaddisabledtext' => 'PHP之貢被禁也。查 file_uploads 之。',
'uploadvirus' => '此檔含毒也!
詳:$1',
+'upload-source' => '源檔',
'sourcefilename' => '源名:',
+'sourceurl' => '源址:',
'destfilename' => '欲置檔名:',
'upload-maxfilesize' => '檔限:$1',
+'upload-description' => '檔述',
+'upload-options' => '貢項',
'watchthisupload' => '派哨',
'upload-wasdeleted' => "'''警示:復獻棄檔,慎續之。'''
誌刪如下:",
'filename-bad-prefix' => "獻檔以'''「$1」'''首,常由相機瞎造,惠更述之。",
+'upload-too-many-redirects' => '網址含多轉',
+'upload-unknown-size' => '未知之積',
+'upload-http-error' => '發一HTTP之錯:$1',
+
+# img_auth script messages
+'img-auth-accessdenied' => '無通',
+'img-auth-nopathinfo' => 'PATH_INFO失之。
+爾之伺服器無此資料也。
+以CGI之本耳,無img_auth矣。
+閱http://www.mediawiki.org/wiki/Manual:Image_Authorization。',
+'img-auth-notindir' => '求之徑無存貢錄中。',
+'img-auth-badtitle' => '於「$1」無建效題也。',
+'img-auth-nologinnWL' => '爾未登簿,「$1」無在白名中。',
+'img-auth-nofile' => '檔「$1」無存也。',
+'img-auth-isdir' => '爾試問錄「$1」。
+只問檔也。',
+'img-auth-streaming' => '流「$1」中。',
+'img-auth-public' => 'img_auth.php之功能乃由共wiki出貢。
+此wiki為公共wiki是也。
+保強,img_auth.php已停矣。',
+'img-auth-noread' => '簿無權讀「$1」也。',
+
+# HTTP errors
+'http-invalid-url' => '無效之網址:$1',
+'http-invalid-scheme' => '有「$1」之網址無持也',
+'http-request-error' => '未知之錯令HTTP求時錯之。',
+'http-read-error' => 'HTTP讀錯。',
+'http-timed-out' => 'HTTP求之過時也。',
+'http-curl-error' => '取網址現錯之:$1',
+'http-host-unreachable' => '無達網址之。',
+'http-bad-status' => 'HTTP求時現問:$1 $2',
+
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => '無達網址也',
'upload-curl-error6-text' => '無達所指之網址也。再試其正,乃正常也。',
@@ -1251,6 +1356,7 @@ $2',
'upload-curl-error28-text' => '網站應之長也。再試其而行之。乃以閑以試之。',
'license' => '權:',
+'license-header' => '權',
'nolicense' => '無選',
'license-nopreview' => '(謝草覽)',
'upload_source_url' => '(乃一公共可達之網址)',
@@ -1271,36 +1377,40 @@ $2',
'listfiles_count' => '擇',
# File description page
-'filehist' => '檔史',
-'filehist-help' => '揀日尋檔。',
-'filehist-deleteall' => '全刪',
-'filehist-deleteone' => '刪',
-'filehist-revert' => '還',
-'filehist-current' => '今',
-'filehist-datetime' => '時',
-'filehist-thumb' => '縮',
-'filehist-thumbtext' => '於$1之縮',
-'filehist-nothumb' => '無縮',
-'filehist-user' => '薄',
-'filehist-dimensions' => '度',
-'filehist-filesize' => '檔幅',
-'filehist-comment' => '註',
-'imagelinks' => '檔所繫者',
-'linkstoimage' => '下頁連本檔有$1:',
-'linkstoimage-more' => '連檔有多於$1。
+'file-anchor-link' => '檔',
+'filehist' => '檔史',
+'filehist-help' => '揀日尋檔。',
+'filehist-deleteall' => '全刪',
+'filehist-deleteone' => '刪',
+'filehist-revert' => '還',
+'filehist-current' => '今',
+'filehist-datetime' => '時',
+'filehist-thumb' => '縮',
+'filehist-thumbtext' => '於$1之縮',
+'filehist-nothumb' => '無縮',
+'filehist-user' => '薄',
+'filehist-dimensions' => '度',
+'filehist-filesize' => '檔幅',
+'filehist-comment' => '註',
+'filehist-missing' => '失檔',
+'imagelinks' => '檔所繫者',
+'linkstoimage' => '下頁連本檔有$1:',
+'linkstoimage-more' => '連檔有多於$1。
下表示連檔之首$1。
[[Special:WhatLinksHere/$2|整表]]可供之閱也。',
-'nolinkstoimage' => '無頁連本檔也。',
-'morelinkstoimage' => '閱檔[[Special:WhatLinksHere/$1|接]]。',
-'redirectstofile' => '下檔轉到此檔有$1:',
-'duplicatesoffile' => '下檔重此檔有$1([[Special:FileDuplicateSearch/$2|詳]]):',
-'sharedupload' => '此檔為$1之共傳,可另項用也。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '詳閱$1。',
-'shareduploadwiki-desc' => '於共庫上$1之示。',
-'shareduploadwiki-linktext' => '檔述',
-'noimage' => '查無此檔,爾可$1。',
-'noimage-linktext' => '貢焉',
-'uploadnewversion-linktext' => '更新此檔',
+'nolinkstoimage' => '無頁連本檔也。',
+'morelinkstoimage' => '閱檔[[Special:WhatLinksHere/$1|接]]。',
+'redirectstofile' => '下檔轉到此檔有$1:',
+'duplicatesoffile' => '下檔重此檔有$1([[Special:FileDuplicateSearch/$2|詳]]):',
+'sharedupload' => '此檔為$1之共傳,可另項用也。',
+'sharedupload-desc-there' => '此檔為$1之共傳,可另項用也。
+詳閱[$2 檔述]。',
+'sharedupload-desc-here' => '此檔為$1之共傳,可另項用也。
+於共庫上[$2 檔述]之示。',
+'filepage-nofile' => '查無此檔。',
+'filepage-nofile-link' => '查無此檔,爾可[$1 貢焉]。',
+'uploadnewversion-linktext' => '更新此檔',
+'shared-repo-name-wikimediacommons' => '維基共享',
# File reversion
'filerevert' => '還$1',
@@ -1330,6 +1440,7 @@ $2',
** 侵版權
** 重檔',
'filedelete-edit-reasonlist' => '纂刪因',
+'filedelete-maintenance' => '護當禁刪復檔也。',
# MIME search
'mimesearch' => '篩檔',
@@ -1349,7 +1460,8 @@ $2',
'unusedtemplateswlh' => '支鏈',
# Random page
-'randompage' => '風掀',
+'randompage' => '風掀',
+'randompage-nopages' => '下列{{PLURAL:$2|名集}}中無頁也:$1',
# Random redirect
'randomredirect' => '任渡',
@@ -1361,6 +1473,7 @@ $2',
'statistics-header-edits' => '纂彙統',
'statistics-header-views' => '閱彙統',
'statistics-header-users' => '有簿彙統',
+'statistics-header-hooks' => '他彙統',
'statistics-articles' => '容頁',
'statistics-pages' => '頁',
'statistics-pages-desc' => 'wiki上之全頁,含議、轉等',
@@ -1386,8 +1499,8 @@ $2',
'brokenredirects' => '斷渡',
'brokenredirectstext' => '頁下斷渡。',
-'brokenredirects-edit' => '(替)',
-'brokenredirects-delete' => '(刪)',
+'brokenredirects-edit' => '替',
+'brokenredirects-delete' => '刪',
'withoutinterwiki' => '孤語',
'withoutinterwiki-summary' => '頁下無鏈他語。',
@@ -1486,7 +1599,7 @@ $2',
# Special:Categories
'categories' => '類',
-'categoriespagetext' => '大典有頁或媒。
+'categoriespagetext' => '大典{{PLURAL:$1|類中}}有頁或媒。
[[Special:UnusedCategories|未類]]無示之。
閱[[Special:WantedCategories|需類]]也。',
'categoriesfrom' => '示此項起之類:',
@@ -1494,8 +1607,9 @@ $2',
'special-categories-sort-abc' => '排字',
# Special:DeletedContributions
-'deletedcontributions' => '已刪之積',
-'deletedcontributions-title' => '所棄之事',
+'deletedcontributions' => '已刪之積',
+'deletedcontributions-title' => '所棄之事',
+'sp-deletedcontributions-contribs' => '積',
# Special:LinkSearch
'linksearch' => '尋網連',
@@ -1511,6 +1625,16 @@ $2',
'listusersfrom' => '始簿:',
'listusers-submit' => '見',
'listusers-noresult' => '尋無簿。',
+'listusers-blocked' => '(已禁)',
+
+# Special:ActiveUsers
+'activeusers' => '躍簿',
+'activeusers-intro' => '此乃為近$1天內之躍簿也。',
+'activeusers-count' => '$3天內之$1易',
+'activeusers-from' => '示簿始於:',
+'activeusers-hidebots' => '藏僕',
+'activeusers-hidesysops' => '藏有秩',
+'activeusers-noresult' => '無簿矣。',
# Special:Log/newusers
'newuserlogpage' => '誌簿',
@@ -1521,16 +1645,22 @@ $2',
'newuserlog-autocreate-entry' => '已自註之簿',
# Special:ListGroupRights
-'listgrouprights' => '權任一覽',
-'listgrouprights-summary' => '此所列述,諸職所司也,各有異同。欲知其詳,請閱[[{{MediaWiki:Listgrouprights-helppage}}|此文]]。',
-'listgrouprights-group' => '組',
-'listgrouprights-rights' => '權',
-'listgrouprights-helppage' => 'Help:組權',
-'listgrouprights-members' => '(社員表)',
-'listgrouprights-addgroup' => '加{{PLURAL:$2|一|多}}組:$1',
-'listgrouprights-removegroup' => '除{{PLURAL:$2|一|多}}組:$1',
-'listgrouprights-addgroup-all' => '加全組',
-'listgrouprights-removegroup-all' => '除全組',
+'listgrouprights' => '權任一覽',
+'listgrouprights-summary' => '此所列述,諸職所司也,各有異同。欲知其詳,請閱[[{{MediaWiki:Listgrouprights-helppage}}|此文]]。',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">權授矣</span>
+* <span class="listgrouprights-revoked">權撤矣</span>',
+'listgrouprights-group' => '組',
+'listgrouprights-rights' => '權',
+'listgrouprights-helppage' => 'Help:組權',
+'listgrouprights-members' => '(社員表)',
+'listgrouprights-addgroup' => '加{{PLURAL:$2|一|多}}組:$1',
+'listgrouprights-removegroup' => '除{{PLURAL:$2|一|多}}組:$1',
+'listgrouprights-addgroup-all' => '加全組',
+'listgrouprights-removegroup-all' => '除全組',
+'listgrouprights-addgroup-self' => '加自之{{PLURAL:$2|一|多}}組:$1',
+'listgrouprights-removegroup-self' => '除自之{{PLURAL:$2|一|多}}組:$1',
+'listgrouprights-addgroup-self-all' => '加自之全組',
+'listgrouprights-removegroup-self-all' => '除自之全組',
# E-mail user
'mailnologin' => '無驛',
@@ -1603,7 +1733,7 @@ $2',
'enotif_anon_editor' => '過客$1',
'enotif_body' => '$WATCHINGUSERNAME鈞鑑
-{$PAGEEDITDATE}{{SITENAME}}簿{$PAGEEDITOR}{$CHANGEDORCREATED}{$PAGETITLE},閱審之見{$PAGETITLE_URL}。
+$PAGEEDITDATE{{SITENAME}}簿$PAGEEDITOR$CHANGEDORCREATED$PAGETITLE,閱審之見$PAGETITLE_URL。
$NEWPAGE
@@ -1615,8 +1745,11 @@ $NEWPAGE
{{SITENAME}}敬上
--
-欲更哨令,惠訪{{fullurl:{{ns:special}}:Watchlist/edit}}
-饋助之,惠訪{{fullurl:{{ns:help}}:Contents}}',
+欲更哨令,惠訪{{fullurl:{{#special:Watchlist}}/edit}}
+
+欲刪之頁,惠訪$UNWATCHURL
+
+饋助之,惠訪{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '刪頁',
@@ -1626,9 +1759,10 @@ $NEWPAGE
'exblank' => '缺頁',
'delete-confirm' => '刪"$1"',
'delete-legend' => '刪',
-'historywarning' => '警示,此頁有誌:',
+'historywarning' => '警示,此頁約有誌$1:',
'confirmdeletetext' => '欲刪此物與誌,知後果、合[[{{MediaWiki:Policy-url}}]]後再為之。',
'actioncomplete' => '成矣',
+'actionfailed' => '敗矣',
'deletedtext' => '"<nowiki>$1</nowiki>"刪矣,見誌刪於$2。',
'deletedarticle' => '刪焉「[[$1]]」',
'suppressedarticle' => '廢焉「[[$1]]」',
@@ -1648,16 +1782,17 @@ $NEWPAGE
'delete-warning-toobig' => '此頁含大誌,過$1修。刪之可亂{{SITENAME}}之事也;續時留神之。',
# Rollback
-'rollback' => '反正',
-'rollback_short' => '正',
-'rollbacklink' => '正',
-'rollbackfailed' => '未能反正',
-'cantrollback' => '獨一作者,無以反正。',
-'alreadyrolled' => '[[User:$2|$2]]([[User talk:$2|議]] | [[Special:Contributions/$2|{{int:contribslink}}]])作[[:$1]],退不成也。有易或已退焉。新纂者為[[User:$3|$3]]([[User talk:$3|議]] | [[Special:Contributions/$3|{{int:contribslink}}]])',
-'editcomment' => "贊曰\"''\$1''\"", # only shown if there is an edit comment
-'revertpage' => '去[[Special:Contributions/$2|$2]]之作(欲言之,可至[[User talk:$2|此]])為[[User:$1|$1]]之本耳', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '去$1之作,復為$2之本耳。',
-'sessionfailure' => '登簿有變。為防盜簿,返前重取再為之。',
+'rollback' => '反正',
+'rollback_short' => '正',
+'rollbacklink' => '正',
+'rollbackfailed' => '未能反正',
+'cantrollback' => '獨一作者,無以反正。',
+'alreadyrolled' => '[[User:$2|$2]]([[User talk:$2|議]] | [[Special:Contributions/$2|{{int:contribslink}}]])作[[:$1]],退不成也。有易或已退焉。新纂者為[[User:$3|$3]]([[User talk:$3|議]] | [[Special:Contributions/$3|{{int:contribslink}}]])',
+'editcomment' => "贊曰\"''\$1''\"",
+'revertpage' => '去[[Special:Contributions/$2|$2]]之作(欲言之,可至[[User talk:$2|此]])為[[User:$1|$1]]之本耳',
+'revertpage-nouser' => '去(刪簿)之作為[[User:$1|$1]]之本耳',
+'rollback-success' => '去$1之作,復為$2之本耳。',
+'sessionfailure' => '登簿有變。為防盜簿,返前重取再為之。',
# Protect
'protectlogpage' => '誌緘',
@@ -1673,7 +1808,7 @@ $NEWPAGE
'protectexpiry' => '屆期',
'protect_expiry_invalid' => '屆期不明。',
'protect_expiry_old' => '屆期已過。',
-'protect-unchain' => '准遷之',
+'protect-unchain-permissions' => '解鎖更遠之項',
'protect-text' => "緘捆'''<nowiki>$1</nowiki>'''。",
'protect-locked-blocked' => "簿禁,'''$1'''緘昔如下:",
'protect-locked-dblock' => "庫鎖,'''$1'''緘昔如下:",
@@ -1699,7 +1834,7 @@ $NEWPAGE
** 反產之戰纂
** 高量之頁',
'protect-edit-reasonlist' => '纂護之理',
-'protect-expiry-options' => '半時:1 hour,一日:1 day,一週:1 week,兩週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '半時:1 hour,一日:1 day,一週:1 week,兩週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永久:infinite',
'restriction-type' => '准',
'restriction-level' => '緘捆',
'minimum-size' => '幅越',
@@ -1735,6 +1870,7 @@ $NEWPAGE
'undeleterevision-missing' => '審謬失;棄、還或鏈亡。',
'undeletebtn' => '還',
'undeletelink' => '察焉,以定還否',
+'undeleteviewlink' => '察',
'undeletereset' => '歸白',
'undeleteinvert' => '反相',
'undeletecomment' => '因:',
@@ -1771,19 +1907,24 @@ $1',
'contributions-title' => '$1之功績',
'mycontris' => '吾績',
'contribsub2' => '$1勛($2)',
-'nocontribs' => '無勛及也。', # Optional parameter: $1 is the user name
+'nocontribs' => '無勛及也。',
'uctop' => '(至頂)',
'month' => '且不越',
'year' => '年不越',
-'sp-contributions-newbies' => '惟列新進',
-'sp-contributions-newbies-sub' => '予新進',
-'sp-contributions-newbies-title' => '新進之功績',
-'sp-contributions-blocklog' => '誌禁',
-'sp-contributions-logs' => '誌',
-'sp-contributions-search' => '問勛',
-'sp-contributions-username' => '簿名或IP址',
-'sp-contributions-submit' => '問',
+'sp-contributions-newbies' => '惟列新進',
+'sp-contributions-newbies-sub' => '予新進',
+'sp-contributions-newbies-title' => '新進之功績',
+'sp-contributions-blocklog' => '誌禁',
+'sp-contributions-deleted' => '已刪之積',
+'sp-contributions-logs' => '誌',
+'sp-contributions-talk' => '議',
+'sp-contributions-userrights' => '秉治權任',
+'sp-contributions-blocked-notice' => '此簿現禁。
+近誌禁之項如下示之:',
+'sp-contributions-search' => '問勛',
+'sp-contributions-username' => '簿名或IP址',
+'sp-contributions-submit' => '問',
# What links here
'whatlinkshere' => '取佐',
@@ -1806,6 +1947,7 @@ $1',
# Block/unblock
'blockip' => '禁簿',
+'blockip-title' => '禁簿',
'blockip-legend' => '禁簿',
'blockiptext' => '函下禁纂,簿、址明判;[[{{MediaWiki:Policy-url}}|秉據]]如斯,立法克亂。指罪證行,了冤無憾。',
'ipaddress' => 'IP址',
@@ -1827,7 +1969,7 @@ $1',
'ipbenableautoblock' => '屢禁此簿,新IP址、後繼亦如也。',
'ipbsubmit' => '禁簿',
'ipbother' => '別期',
-'ipboptions' => '二時:2 hours,一日:1 day,三日:3 days,一週:1 week,二週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永如:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '二時:2 hours,一日:1 day,三日:3 days,一週:1 week,二週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永如:infinite',
'ipbotheroption' => '它',
'ipbotherreason' => '補證、加證曰',
'ipbhidename' => '簿名隱乎纂與表',
@@ -1855,9 +1997,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1次臨禁',
'ipblocklist-sh-addressblocks' => '$1次禁單IP',
'ipblocklist-submit' => '尋',
+'ipblocklist-localblock' => '本禁',
+'ipblocklist-otherblocks' => '他{{PLURAL:$1|禁|禁}}',
'blocklistline' => '$1,$2禁$3($4)',
'infiniteblock' => '永如',
-'expiringblock' => '屆$1',
+'expiringblock' => '屆$1 $2',
'anononlyblock' => '惟匿者',
'noautoblockblock' => '止自禁',
'createaccountblock' => '禁增簿',
@@ -1871,7 +2015,8 @@ $1',
'contribslink' => '勛',
'autoblocker' => '近日$1"$2";同子IP址,故禁焉。',
'blocklogpage' => '誌禁',
-'blocklog-fulllog' => '整誌禁',
+'blocklog-showlog' => '此簿曾被禁。誌禁示下:',
+'blocklog-showsuppresslog' => '此簿曾被禁隱。誌廢示下:',
'blocklogentry' => '禁[[$1]]屆$2$3',
'reblock-logentry' => '改[[$1]]之禁,屆$2$3',
'blocklogtext' => '此誌禁赦;自禁不示。見[[Special:IPBlockList|此]]列今禁者。',
@@ -1890,13 +2035,17 @@ $1',
'ipb_already_blocked' => '"$1"早禁矣',
'ipb-needreblock' => '== 已禁 ==
$1已被禁矣。爾是否改此置?',
+'ipb-otherblocks-header' => '他{{PLURAL:$1|禁|禁}}',
'ipb_cant_unblock' => '有誤:禁$1無尋;或早赦矣。',
'ipb_blocked_as_range' => '錯:該IP $1 無直禁也,無赦之。唯它在 $2 之範禁內,其範可赦之。',
'ip_range_invalid' => 'IP址圍不格',
+'ip_range_toolarge' => '大於 /$1 之禁段乃無容也。',
'blockme' => '自禁',
'proxyblocker' => '禁Proxy',
'proxyblocksuccess' => '成矣。',
'cant-block-while-blocked' => '爾然被禁,勿施於人。',
+'cant-see-hidden-user' => '簿禁或藏矣。
+爾無藏之權,無視纂禁也。',
# Developer tools
'lockdb' => '閉庫',
@@ -1925,6 +2074,7 @@ $1已被禁矣。爾是否改此置?',
<b>警示</b>
膾炙遷焉,禍生不測;戒慎行之。",
'movearticle' => '遷文:',
+'moveuserpage-warning' => "'''警:'''爾將遷頁齋。注之遷齋後之簿名乃為''無''變也。",
'movenologin' => '未登簿',
'movenologintext' => '遷文須[[Special:UserLogin|登簿]]。',
'movenotallowed' => '無准遷檔也。',
@@ -1934,7 +2084,7 @@ $1已被禁矣。爾是否改此置?',
'move-watch' => '派哨至自與至之頁',
'movepagebtn' => '遷文',
'pagemovedsub' => '遷成矣',
-'movepage-moved' => "'''「$1」已遷至「$2」'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''「$1」已遷至「$2」'''",
'movepage-moved-redirect' => '一渡已建。',
'movepage-moved-noredirect' => '建渡已押。',
'articleexists' => '此題早存,或名謬焉;請更之。',
@@ -1972,6 +2122,14 @@ $1已被禁矣。爾是否改此置?',
'imageinvalidfilename' => '標之檔名乃無效也',
'fix-double-redirects' => '更指原題之任渡',
'move-leave-redirect' => '留渡',
+'protectedpagemovewarning' => "'''警:'''本頁已錮,有秩移之。
+近誌下曰參詳之:",
+'semiprotectedpagemovewarning' => "'''注:'''本頁已錮,注簿移之。
+近誌下曰參詳之:",
+'move-over-sharedrepo' => '== 檔存也 ==
+[[:$1]]於共存存也,遷標題,蓋共檔之。',
+'file-exists-sharedrepo' => '同名之檔已存於共也。
+請擇其另名之。',
# Export
'export' => '出匯',
@@ -1988,15 +2146,21 @@ $1已被禁矣。爾是否改此置?',
'export-templates' => '含模',
# Namespace 8 related
-'allmessages' => '官話',
-'allmessagesname' => '話',
-'allmessagesdefault' => '慣話文',
-'allmessagescurrent' => '今話文',
-'allmessagestext' => '此列MediaWiki官話。
+'allmessages' => '官話',
+'allmessagesname' => '話',
+'allmessagesdefault' => '慣話文',
+'allmessagescurrent' => '今話文',
+'allmessagestext' => '此列MediaWiki官話。
如貢正宗MediaWiki本地化,[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]與[http://translatewiki.net translatewiki.net]閱之。',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''閉庫,'''無纂也。",
-'allmessagesfilter' => '含辭:',
-'allmessagesmodified' => '見易',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''閉庫,'''無纂也。",
+'allmessages-filter-legend' => '濾',
+'allmessages-filter' => '以易濾:',
+'allmessages-filter-unmodified' => '無易',
+'allmessages-filter-all' => '全',
+'allmessages-filter-modified' => '有易',
+'allmessages-prefix' => '以前綴濾:',
+'allmessages-language' => '言:',
+'allmessages-filter-submit' => '始',
# Thumbnails
'thumbnail-more' => '展',
@@ -2004,6 +2168,9 @@ $1已被禁矣。爾是否改此置?',
'thumbnail_error' => '縮圖$1有誤',
'thumbnail_invalid_params' => '縮圖參數不合',
'thumbnail_dest_directory' => '縮圖匣未可造',
+'thumbnail_image-type' => '圖類未支也',
+'thumbnail_gd-library' => '未完之GD設:功遺$1',
+'thumbnail_image-missing' => '檔遺:$1',
# Special:Import
'import' => '圖入匯',
@@ -2065,6 +2232,7 @@ $1已被禁矣。爾是否改此置?',
'tooltip-ca-viewsource' => '文函緘,讀源老',
'tooltip-ca-history' => '誌流衍、備謄本、修惡盜',
'tooltip-ca-protect' => '謝撰纂,奏原調',
+'tooltip-ca-unprotect' => '和原調,以撰纂',
'tooltip-ca-delete' => '撕書頁,棄於奧',
'tooltip-ca-undelete' => '悔刪斷,奉回轎',
'tooltip-ca-move' => '安居所,嚮正道',
@@ -2075,6 +2243,7 @@ $1已被禁矣。爾是否改此置?',
'tooltip-search-fulltext' => '尋通篇,列倣傚',
'tooltip-p-logo' => '返卷首,訪露朝',
'tooltip-n-mainpage' => '返卷首,訪露朝',
+'tooltip-n-mainpage-description' => '返卷首,訪露朝',
'tooltip-n-portal' => '識百科、習施行、熟矩教',
'tooltip-n-currentevents' => '知天下、順潮流、察脈絡',
'tooltip-n-recentchanges' => '閱新易、聞脈搏、觀熱鬧',
@@ -2121,6 +2290,7 @@ $1已被禁矣。爾是否改此置?',
'chick.css' => '/* 此之 CSS 用於窈窕面之簿也 */',
'simple.css' => '/* 此之 CSS 用於簡明面之簿也 */',
'modern.css' => '/* 此之 CSS 用於時髦面之簿也 */',
+'vector.css' => '/* 此之 CSS 用於動力面之簿也 */',
'print.css' => '/* 此之 CSS 用於印之出力也 */',
'handheld.css' => '/* 此之 CSS 用於 $wgHandheldStyle 之手置面也 */',
@@ -2134,14 +2304,17 @@ $1已被禁矣。爾是否改此置?',
'chick.js' => '/* 此之JavaScript將載於用窈窕面之簿 */',
'simple.js' => '/* 此之JavaScript將載於用簡明面之簿 */',
'modern.js' => '/* 此之JavaScript將載於用時髦面之簿 */',
+'vector.js' => '/* 此之JavaScript將載於用動力面之簿 */',
# Attribution
'anonymous' => '{{SITENAME}}無{{PLURAL:$1|簿|簿}}者',
'siteuser' => '{{SITENAME}}有簿者$1',
-'lastmodifiedatby' => '$1$2,$3新易此頁。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}有匿簿者$1',
+'lastmodifiedatby' => '$1$2,$3新易此頁。',
'othercontribs' => '$1主撰',
'others' => '他',
'siteusers' => '{{SITENAME}}有{{PLURAL:$2|簿|簿}}者$1',
+'anonusers' => '{{SITENAME}}有匿{{PLURAL:$2|簿|簿}}者$1',
'creditspage' => '頁贊',
'nocredits' => '本頁未有贊信也。',
@@ -2171,6 +2344,7 @@ $1已被禁矣。爾是否改此置?',
'skinname-chick' => '窈窕',
'skinname-simple' => '簡明',
'skinname-modern' => '時髦',
+'skinname-vector' => '動力',
# Math options
'mw_math_png' => '屢作PNG',
@@ -2180,11 +2354,18 @@ $1已被禁矣。爾是否改此置?',
'mw_math_modern' => '今之覽器此薦。',
'mw_math_mathml' => '實驗者,堪為則作MathML。',
+# Math errors
+'math_failure' => '譯不成',
+'math_unknown_error' => '未知之誤',
+'math_unknown_function' => '未知函式',
+'math_lexing_error' => '律有誤',
+'math_syntax_error' => '語法有誤',
+
# Patrolling
'markaspatrolleddiff' => '派哨',
'markaspatrolledtext' => '哨此報',
'markedaspatrolled' => '派哨',
-'markedaspatrolledtext' => '此審哨矣。',
+'markedaspatrolledtext' => '[[:$1]]之審哨矣。',
'rcpatroldisabled' => '不哨近易',
'rcpatroldisabledtext' => '近易之哨,未准行也。',
'markedaspatrollederror' => '哨有誤',
@@ -2213,12 +2394,9 @@ $1',
'previousdiff' => '←前辨',
'nextdiff' => '後辨→',
-# Visual comparison
-'visual-comparison' => '較見',
-
# Media information
'mediawarning' => "'''警''':此檔型疑惡。行之恐諜也。",
-'imagemaxsize' => '述檔頁惟列:',
+'imagemaxsize' => "述檔頁惟列:<br />''(用於檔)''",
'thumbsize' => '縮圖幅',
'widthheight' => '$1矩$2',
'widthheightpage' => '$1矩$2,共$3頁',
@@ -2228,6 +2406,8 @@ $1',
'svg-long-desc' => '(SVG檔,貌有像素$1矩$2,幅$3)',
'show-big-image' => '全幅',
'show-big-image-thumb' => '<small>縮圖幅有像素$1矩$2</small>',
+'file-info-gif-looped' => '循',
+'file-info-gif-frames' => '$1幀',
# Special:NewFiles
'newimages' => '新圖之廊',
@@ -2261,7 +2441,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '寬',
@@ -2314,6 +2494,7 @@ $1',
'watchlistall2' => '全',
'namespacesall' => '全',
'monthsall' => '全',
+'limitall' => '全',
# E-mail address confirmation
'confirmemail' => '核郵驛',
@@ -2323,6 +2504,19 @@ $1',
'confirmemail_sendfailed' => '{{SITENAME}}信未遣焉,請核郵驛。
郵者覆之:$1',
+'confirmemail_body' => '持IP $1之人(亦為汝)於{{SITENAME}}建簿"$2",並呈電郵位址。
+
+確此簿屬爾,並用{{SITENAME}}之電郵。
+於瀏覽器上開此連:
+
+$3
+
+如汝之簿*未*增,
+於瀏覽器上開此連消確:
+
+$5
+
+確碼於$4過之。',
'confirmemail_invalidated' => '核郵驛消也',
'invalidateemail' => '消核郵驛',
@@ -2423,7 +2617,7 @@ $1',
'duplicate-defaultsort' => '警:預之排鍵「$2」蓋前之排鍵「$1」。',
# Special:Version
-'version' => '版', # Not used as normal message but as header for the special page itself
+'version' => '版',
'version-extensions' => '裝展',
'version-specialpages' => '奇頁',
'version-parserhooks' => '語鈎',
@@ -2437,7 +2631,7 @@ $1',
'version-skin-extension-functions' => '面版展函',
'version-hook-name' => '鈎名',
'version-hook-subscribedby' => '用於',
-'version-version' => '版',
+'version-version' => '(版 $1)',
'version-license' => '牌',
'version-software' => '裝件',
'version-software-product' => '品',
@@ -2499,4 +2693,15 @@ $1',
'tags-tag' => '標名',
'tags-edit' => '纂',
+# HTML forms
+'htmlform-invalid-input' => '爾之輸問也',
+'htmlform-select-badoption' => '爾之值為非效之。',
+'htmlform-int-invalid' => '爾之值為非整數也。',
+'htmlform-float-invalid' => '爾之值為非數字也。',
+'htmlform-int-toolow' => '爾之值比$1以低',
+'htmlform-int-toohigh' => '爾之值比$1以高',
+'htmlform-submit' => '呈',
+'htmlform-reset' => '復',
+'htmlform-selectorother-other' => '他',
+
);
diff --git a/languages/messages/MessagesLzz.php b/languages/messages/MessagesLzz.php
index e480982d..979ba554 100644
--- a/languages/messages/MessagesLzz.php
+++ b/languages/messages/MessagesLzz.php
@@ -13,6 +13,8 @@
* @author The Evil IP address
*/
+$fallback = 'tr';
+
$messages = array(
# User preference toggles
'tog-underline' => "Link'iş tude kogu3’uxaçki:",
@@ -82,11 +84,13 @@ $messages = array(
'category-media-header' => '"$1" k\'at\'egoris media',
'category-empty' => "''Am k'at'egoris çkar madde varna media va uğun.''",
'hidden-categories' => '{{PLURAL:$1|Şinaxeri kʼatʼegori|Şinaxeri kʼatʼegorepe}}',
-'hidden-category-category' => "Şinaxeri k'at'egorepe", # Name of the category where hidden categories will be listed
+'hidden-category-category' => "Şinaxeri k'at'egorepe",
'category-subcat-count' => '{{PLURAL:$2|Am kʼatʼegoris, xvala, tude na ren kʼatʼegori uğun.|Am kʼatʼegori tʼoplamurot $2 kʼatʼegorişen {{PLURAL:$1|tudekʼatʼegori|$1 tudekʼatʼegori}}s uğun}}',
'category-subcat-count-limited' => "Am k'at'egori tudes na dgin {{PLURAL:$1|tude k'at'egoris|$1 tude k'at'egoris}} uğun.",
'category-article-count' => '{{PLURAL:$2|Am kʼatʼegoris, xvala, tude na ren kʼatʼegori uğun.|Tʼoplami $2 şen, tude na ren {{PLURAL:$1|butʼkʼa|$1 butʼkʼa}} am kʼatʼegoris ren.}}',
'listingcontinuesabbrev' => '(naqona)',
+'index-category' => "Indexi na uğun but'k'ape",
+'noindex-category' => 'Indexi muşi na var uğun sayfape',
'mainpagetext' => "'''Mediawiki dido k'ai ik'idu.'''",
'mainpagedocfooter' => "Vik'i şeni muç'o ixmarinen ya mutxanepe oguru şeni [http://meta.wikimedia.org/wiki/Help:Contents oxmaruşi rexberis] o3'k'edit.
@@ -96,20 +100,32 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki P'anda Na-k'itxu K'itxalape]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-mailepeşiş liste]",
-'about' => 'Şeni',
-'newwindow' => '(ağne penceres guin3ʼkʼen)',
-'cancel' => 'İpʼtʼali qʼvi',
+'about' => 'Şeni',
+'newwindow' => '(ağne penceres guin3ʼkʼen)',
+'cancel' => 'İpʼtʼali qʼvi',
+'moredotdotdot' => 'Çkva…',
+'mypage' => 'Çkimi sayfa',
+'mytalk' => 'Çkimi mesajepe',
+'anontalk' => "Am IP'şi mesajepe",
+'navigation' => 'Goxtima',
+'and' => '&#32;do',
+
+# Cologne Blue skin
'qbfind' => 'Koz*iri',
'qbedit' => 'Doktiri',
'qbpageoptions' => 'Am sayfa',
'qbmyoptions' => 'Çkimi sayfape',
'qbspecialpages' => 'Doxmeli sayfape',
-'moredotdotdot' => 'Çkva…',
-'mypage' => 'Çkimi sayfa',
-'mytalk' => 'Çkimi mesajepe',
-'anontalk' => "Am IP'şi mesajepe",
-'navigation' => 'Goxtima',
-'and' => '&#32;do',
+
+# Vector skin
+'vector-action-delete' => 'Jili',
+'vector-namespace-category' => "K'at'egori",
+'vector-namespace-help' => "Meşvelaş t'aba",
+'vector-namespace-image' => 'Dosya',
+'vector-namespace-mediawiki' => 'Mesaji',
+'vector-namespace-project' => "P'rojeşi t'aba",
+'vector-namespace-special' => 'Doxmeli sayfa',
+'vector-view-edit' => 'Doktiri',
'errorpagetitle' => 'Çilata',
'returnto' => '$1 butʼkʼaşa goikti.',
@@ -142,7 +158,7 @@ $messages = array(
'otherlanguages' => 'Majurani nenapes',
'redirectedfrom' => '($1 butʼkʼaşen moxtu)',
'redirectpagesub' => 'Redirektʼiş butʼkʼa',
-'lastmodifiedat' => 'Am butʼkʼa çodinurot $2, $1 tarixis iktirinu.', # $1 date, $2 time
+'lastmodifiedat' => 'Am butʼkʼa çodinurot $2, $1 tarixis iktirinu.',
'jumpto' => 'İdi do:',
'jumptonavigation' => 'ixmari',
'jumptosearch' => 'mgori',
@@ -151,7 +167,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} şeni',
'aboutpage' => 'Project:Ambarepe',
'copyright' => 'Doloxe na renanpe, $1-şi ren.',
-'copyrightpagename' => '{{SITENAME}} copyright',
'copyrightpage' => '{{ns:project}}:Şinaxeri Hakʼepe',
'disclaimers' => 'Kʼabuli na var ixvenu ondepe',
'disclaimerpage' => 'Project:Mtelot kʼabuli na var ixvenu ondepe',
@@ -218,12 +233,6 @@ Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.'
'userlogout' => 'Siteşen Kogamaxti',
'nologin' => "Hesabi va giğuni? '''$1'''",
'nologinlink' => 'Hesabi dokʼidi.',
-'youremail' => 'E-maili:',
-'yourrealname' => 'Coxo skani:',
-'yourlanguage' => 'Nena skani:',
-'gender-male' => "Biç'i",
-'gender-female' => "Bozo (K'ulani)",
-'email' => 'E-maili',
'mailmypassword' => 'Ağne pʼarola-çkimi moncğoni',
# Password reset dialog
@@ -276,6 +285,8 @@ paktʼiş doloxe ren (detayepe şeni $1's o3ʼkʼedi).
Na qʼvi meşvelaşa başka makʼaturepeşkʼelen pʼatʼi mutxanepe ixvenen varna xemoşletinerot do uoçodinurot başka svapeşa niçinen, aya kʼabuli qʼvi varna am sitʼe şeni mutu mo ikip!<br />
Edo amuş metʼi, ak mxuciş meçamu ginonna, meşvelape ti-skani kʼala oçʼaruşi re, varna ofi3ialurişa gon3ʼkʼimeri na ren ar kʼaynağişen (odudeşen) varna başka oxoşkveri kʼaynağepeşen (odudepeşen) na ezdi kʼabuli oxvenuşi re.<br />
'''<center>DOXMELİ HAKʼEPETE NA İŞİNAXENAN XANDAPE AK MO UKʼATEPT!</center>'''",
+'templatesused' => 'Am butʼkʼas na ixmarinen {{PLURAL:$1|şabloni|şablonepe}}:',
+'templatesusedpreview' => 'Am "Evvelişen i3ʼkʼedi" fonkʼsionis na ixmarinen {{PLURAL:$1|şabloni|şablonepe}}:',
'template-protected' => '(oçvu)',
'template-semiprotected' => '(gverd-oçvu)',
'hiddencategories' => 'Am butʼkʼa {{PLURAL:$1|1 şinaxeri kʼatʼegori|$1 şinaxeri kʼatʼegori}}şi ren:',
@@ -283,6 +294,8 @@ Edo amuş metʼi, ak mxuciş meçamu ginonna, meşvelape ti-skani kʼala oçʼar
# History pages
'viewpagelogs' => 'Am butʼkʼa şeni kʼayitʼepe ko3ʼiri',
+'currentrev-asof' => '$1 itibariten butʼkʼaşi a3ʼineri xali.',
+'revisionasof' => 'Butʼkʼaşi $1 tarixis xali muşi',
'previousrevision' => '← Mcveşi xali muşi',
'nextrevision' => 'Ağani xali-muşi →',
'currentrevisionlink' => 'İrişen ağne xali-muşi ko3ʼiri',
@@ -296,8 +309,10 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
'histlast' => 'irişen ağani',
# Revision deletion
-'rev-delundel' => 'ko3ʼiri/doşinaxi',
-'revdel-restore' => 'Ozʼiramuşi doktiri',
+'rev-delundel' => 'ko3ʼiri/doşinaxi',
+'revdelete-radio-set' => 'Ho',
+'revdelete-radio-unset' => 'Var',
+'revdel-restore' => 'Ozʼiramuşi doktiri',
# Merge log
'revertmerge' => 'Artikʼartişen okʼo3ʼkʼi',
@@ -317,7 +332,9 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
'searchsubtitleinvalid' => "'''$1''' şeni mgori",
'notitlematches' => 'Çkar svas var iz*irinu',
'notextmatches' => 'Çkar butʼkʼa var iz*irinu',
-'viewprevnext' => '($1) ($2) ($3)',
+'prevn' => 'ukʼuni {{PLURAL:$1|$1}}',
+'nextn' => 'mendi {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 tkvala|$2 tkvala}})',
'search-redirect' => '(redirektʼi $1)',
'search-section' => '(burme $1)',
@@ -343,6 +360,12 @@ Ogoruşi dudis '''all:''' pʼrefiksi okʼatute doloçʼareli na ren iri şeyi (o
'timezoneregion-antarctica' => "Antartik'a",
'timezoneregion-asia' => 'Asya',
'timezoneregion-europe' => "Avrop'a",
+'youremail' => 'E-maili:',
+'yourrealname' => 'Coxo skani:',
+'yourlanguage' => 'Nena skani:',
+'gender-male' => "Biç'i",
+'gender-female' => "Bozo (K'ulani)",
+'email' => 'E-maili',
# Groups
'group' => 'Grubi:',
@@ -407,17 +430,21 @@ Ogoruşi dudis '''all:''' pʼrefiksi okʼatute doloçʼareli na ren iri şeyi (o
'filehist-current' => 'A3ʼineri',
'filehist-datetime' => 'Dğa/Ora',
'filehist-thumb' => 'Mçʼitʼa sureti',
+'filehist-thumbtext' => '$1 tarixis na iz*iren versiyonişi mçʼitʼa na ren xali',
'filehist-user' => 'Maxmare',
'filehist-dimensions' => 'Ebatʼepe',
'filehist-comment' => 'Kʼommentʼi',
'imagelinks' => 'Dosyaşi kʼontaktʼepe',
'linkstoimage' => 'Am oz*ira-dosyaşa kʼontʼaktʼi na ikips {{PLURAL:$1|butʼkʼa|$1 butʼkʼa}}:',
-'sharedupload' => 'Am dosya $1-şen moxtu do belkim majurani pʼrojepesti ixmarinen.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Am dosya $1-şen moxtu do belkim majurani pʼrojepesti ixmarinen.',
'uploadnewversion-linktext' => 'Dosyaşi ağani versiyoni doloxe kamaxvi',
# Statistics
'statistics' => 'İstatistʼiğepe',
+'brokenredirects-edit' => 'doktiri',
+'brokenredirects-delete' => 'jili',
+
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
'nmembers' => '{{PLURAL:$1|makʼature|makʼaturepe}}',
@@ -567,7 +594,7 @@ Am butʼkʼaşi oçvuşi sinori gaktirinen; ama am oktiroba, kʼademoni oçvalu
# Block/unblock
'blockip' => 'Maxmares bloği qʼvi',
-'ipboptions' => '2 saatʼi:2 hours,1 ndğa:1 day,3 ndğa:3 days,1 doloni:1 week,2 doloni:2 weeks,1 tuta:1 month,3 tuta:3 months,6 tuta:6 months,1 3ʼana:1 year,pʼanda:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 saatʼi:2 hours,1 ndğa:1 day,3 ndğa:3 days,1 doloni:1 week,2 doloni:2 weeks,1 tuta:1 month,3 tuta:3 months,6 tuta:6 months,1 3ʼana:1 year,pʼanda:infinite',
'ipblocklist' => 'Bloği xveneri na renan IP adresepe do maxmareş coxope',
'blocklink' => 'bloği qʼvi',
'unblocklink' => 'bloği kezdi',
@@ -599,7 +626,7 @@ Am situa3yonepes, butʼkʼa skanişkʼelen otiruşi ren.",
'move-watch' => 'Am butʼkʼa gatxozi',
'movepagebtn' => 'Coxo-muşi doktiri',
'pagemovedsub' => 'Coxo iktirinu.',
-'movepage-moved' => '\'\'\'"$1", "$2" butʼkʼa muşişa itirinu\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1", "$2" butʼkʼa muşişa itirinu\'\'\'',
'articleexists' => 'Am coxos ar butʼkʼa koren varna na çʼari coxo mtini va ren.
Mu iqʼven başka coxo doçʼari.',
'talkexists' => "'''Butʼkʼa dido kʼai itirinu, mara oğarğaluşi butʼkʼa var itirinu çunki na itirinasen coxos zate ar butʼkʼa rtʼu. Mu iqʼven butʼkʼaşi doloçʼareli nç'arape majurani butʼkʼaşa ti-skani kʼala itirini.'''",
@@ -639,6 +666,7 @@ Mu iqʼven başka coxo doçʼari.',
'tooltip-search-go' => 'Eger korenna, am coxos na uğun ar butʼkʼaşa idi',
'tooltip-search-fulltext' => 'Am nçʼara şeni butʼkʼape mgori',
'tooltip-n-mainpage' => 'Dudi butʼkʼaşa idi',
+'tooltip-n-mainpage-description' => 'Dudi butʼkʼaşa idi',
'tooltip-n-portal' => 'Proje şeni, şeyepe so gaz*iren, mu gaxvenen',
'tooltip-n-currentevents' => 'Ağani oğodape şeni çodinaşi çkinape',
'tooltip-n-recentchanges' => 'Vikʼis na ixvenu sonni oktirobapeşi listʼe.',
@@ -702,7 +730,7 @@ Ukʼaçxe na mulunan kʼontʼaktʼepe istʼisna oqʼopinot kʼabuli ixvenen. Mes
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Dosyas, kʼompʼuteris na renan pʼrogramepe kʼala oktirobape doqʼvi.',
diff --git a/languages/messages/MessagesMai.php b/languages/messages/MessagesMai.php
index c9e66049..4f4a16fc 100644
--- a/languages/messages/MessagesMai.php
+++ b/languages/messages/MessagesMai.php
@@ -188,8 +188,7 @@ $messages = array(
'editundo' => 'असंपादन',
# Search results
-'noexactmatch' => "'''\"\$1\" नामसँ कोनो लेख नहि अछि।''' अहाँ ई लेख [[:\$1|बना सकैत छी]]।",
-'powersearch' => 'त्वरित खोज',
+'powersearch' => 'त्वरित खोज',
# Preferences page
'preferences' => 'विकल्प',
@@ -208,8 +207,10 @@ $messages = array(
'boteditletter' => 'ब',
# Recent changes linked
-'recentchangeslinked' => 'संबंधित परिवर्त्तन',
-'recentchangeslinked-title' => '"$1" मे भेल परिवर्तन',
+'recentchangeslinked' => 'संबंधित परिवर्त्तन',
+'recentchangeslinked-feed' => 'संबंधित परिवर्त्तन',
+'recentchangeslinked-toolbox' => 'संबंधित परिवर्त्तन',
+'recentchangeslinked-title' => '"$1" मे भेल परिवर्तन',
# Upload
'upload' => 'फाइल अपलोड करू',
@@ -252,6 +253,8 @@ $messages = array(
# Contributions
'mycontris' => 'हमर योगदान',
+'sp-contributions-talk' => 'कहू',
+
# What links here
'whatlinkshere' => 'एतय कोन लिंक अछि',
'whatlinkshere-links' => '← लिंक',
diff --git a/languages/messages/MessagesMap_bms.php b/languages/messages/MessagesMap_bms.php
index 3ac53915..4276ae7c 100644
--- a/languages/messages/MessagesMap_bms.php
+++ b/languages/messages/MessagesMap_bms.php
@@ -57,7 +57,9 @@ $messages = array(
'recentchanges' => 'Pengobahan',
# Recent changes linked
-'recentchangeslinked' => 'Pengobahan terkait',
+'recentchangeslinked' => 'Pengobahan terkait',
+'recentchangeslinked-feed' => 'Pengobahan terkait',
+'recentchangeslinked-toolbox' => 'Pengobahan terkait',
# Random page
'randompage' => 'Kaca Liya',
diff --git a/languages/messages/MessagesMdf.php b/languages/messages/MessagesMdf.php
index f237fece..abee9f94 100644
--- a/languages/messages/MessagesMdf.php
+++ b/languages/messages/MessagesMdf.php
@@ -248,7 +248,7 @@ $messages = array(
'category-media-header' => '"$1" категориеса медиясь',
'category-empty' => "''Медиа лопат тя категориеса ашет.''",
'hidden-categories' => '{{PLURAL:$1|Кяшф категорие|Кяшф категориет}}',
-'hidden-category-category' => 'Кяшф категориет', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Кяшф категориет',
'category-subcat-count' => '{{PLURAL:$2|Тя категориеса аньцек фкя субкатегорие.|Тя категориеса {{PLURAL:$1|субкатегорие|$1 субкатегориет}}, $2-нь эста.}}',
'category-subcat-count-limited' => 'Тя категориеса {{PLURAL:$1|субкатегорие|$1 субкатегориет}}.',
'category-article-count' => '{{PLURAL:$2|Тя категориеса аньцек фкя лопа.|Вага {{PLURAL:$1|лопа|$1 лопат}} тя категориеса $2-нь эста.}}',
@@ -266,10 +266,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаВикить Сидеста Кеподеви Кизефксне]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикить од верзиятнень колга кулянь пачфтема]',
-'about' => 'Колганза',
-'article' => 'Сёрматфть потмонц лопац',
-'newwindow' => '(панчсеви од вальмаса)',
-'cancel' => 'Мърдамс меки',
+'about' => 'Колганза',
+'article' => 'Сёрматфть потмонц лопац',
+'newwindow' => '(панчсеви од вальмаса)',
+'cancel' => 'Мърдамс меки',
+'moredotdotdot' => 'Сяда лама...',
+'mypage' => 'Монь лопазе',
+'mytalk' => 'Монь корхтамазе',
+'anontalk' => 'Корхтамс тя IP-ть мархта',
+'navigation' => 'Навигацие',
+'and' => '&#32;эди',
+
+# Cologne Blue skin
'qbfind' => 'Мук',
'qbbrowse' => 'Ванондома',
'qbedit' => 'Петнема',
@@ -277,15 +285,34 @@ $messages = array(
'qbpageinfo' => 'Контекстсь',
'qbmyoptions' => 'Монь лопане',
'qbspecialpages' => 'Башка тевонь лопат',
-'moredotdotdot' => 'Сяда лама...',
-'mypage' => 'Монь лопазе',
-'mytalk' => 'Монь корхтамазе',
-'anontalk' => 'Корхтамс тя IP-ть мархта',
-'navigation' => 'Навигацие',
-'and' => '&#32;эди',
-
-# Metadata in edit box
-'metadata_help' => 'Метадата:',
+'faq' => 'Сидеста Кеподеви Кизефксне',
+'faqpage' => 'Project:Сидеста Кеподеви Кизефксне',
+
+# Vector skin
+'vector-action-delete' => 'Нардамс',
+'vector-action-move' => 'Шашфтомс',
+'vector-action-protect' => 'Араламс',
+'vector-action-undelete' => 'Мърдафтомс',
+'vector-action-unprotect' => 'Аралама лоткамс',
+'vector-namespace-category' => 'Категорие',
+'vector-namespace-help' => 'Лезкс лопа',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Лопа',
+'vector-namespace-media' => 'Медиа лопа',
+'vector-namespace-mediawiki' => 'Пачфтема',
+'vector-namespace-project' => 'Проектонь лопа',
+'vector-namespace-special' => 'Башка тевонь лопа',
+'vector-namespace-talk' => 'Корхнема',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Тиинь лопа',
+'vector-view-create' => 'Тиемс',
+'vector-view-edit' => 'Петнемс',
+'vector-view-history' => 'История няфтемс',
+'vector-view-view' => 'Морафтомс',
+'vector-view-viewsource' => 'Лисьма няфтемс',
+'actions' => 'Тефне',
+'namespaces' => 'Лемботмот',
+'variants' => 'Вариатт',
'errorpagetitle' => 'Эльбятькс',
'returnto' => 'Мърдамс $1-с.',
@@ -335,7 +362,7 @@ $messages = array(
'otherlanguages' => 'Иля кяльса',
'redirectedfrom' => '(Шашфтф $1ста)',
'redirectpagesub' => 'Шашфтф лопа',
-'lastmodifiedat' => 'Тя лопать мекольцеда петнезь $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Тя лопать мекольцеда петнезь $2, $1.',
'viewcount' => 'Тя лопас сувасть {{PLURAL:$1|весть|$1-ксть}}.',
'protectedpage' => 'Тя лопать аралаф',
'jumpto' => 'Юпадемс тязк:',
@@ -346,7 +373,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} колга',
'aboutpage' => 'Project:Колга',
'copyright' => 'Сёрматфсь ули кода мумс $1-са.',
-'copyrightpagename' => '{{SITENAME}} копияма видекс',
'copyrightpage' => '{{ns:project}}:Копияма видекст',
'currentevents' => 'Мезе тяса моли',
'currentevents-url' => 'Project:Мезе тяса моли',
@@ -354,8 +380,6 @@ $messages = array(
'disclaimerpage' => 'Project:Пря видешинь корхнема',
'edithelp' => 'Петнемань лезкс',
'edithelppage' => 'Help:Петнема',
-'faq' => 'Сидеста Кеподеви Кизефксне',
-'faqpage' => 'Project:Сидеста Кеподеви Кизефксне',
'helppage' => 'Help:Лопань потмоц',
'mainpage' => 'Пря лопа',
'mainpage-description' => 'Пря лопа',
@@ -435,10 +459,6 @@ $messages = array(
"$1"
функциеста "$2".
Датабазась мърдафтозе эльбятьксть "$3: $4"',
-'noconnect' => 'Викиса тяни листь текникань проблепт ди аш кода сотнемс датабазонь серверть мархта. <br />
-$1',
-'nodb' => 'Аш кода сотомс $1 датабаза мархта',
-'cachederror' => 'Тя лопать копияц, кона, улема, сирелгодсь тяниень верзиенц коряс.',
'laggedslavemode' => 'Шарфтк мяльце: Тя лопась, улема, сирелгодсь.',
'readonly' => 'Датабазась пякстаф',
'enterlockreason' => 'Сёрматк тязк пякстама туфтал тонь арьсемацень мархта эли няфтть тяса мъзярда ули кода пякстамать валхтомс.',
@@ -465,7 +485,8 @@ $1',
'unexpected' => 'Аф шарьхкодеви смузьсь: "$1"="$2".',
'formerror' => 'Эльбятькс: Формсь аф кучеви',
'badarticleerror' => 'Тя лопаса тя аф тиеви.',
-'cannotdelete' => 'Лопась эли кочкаф файлсь аф нардави. (Сон, улема, нардафоль инголе.)',
+'cannotdelete' => 'Лопась эли кочкаф "$1" файлсь аф нардави.
+Сонь, улема, кинге нардазе ни.',
'badtitle' => 'Аф кондясти лем',
'badtitletext' => 'Вешф лопань лемоц аф тяфтама эли шава, шятьта кялень-ётка эли викинь-ётка лемсна аф лац сюлмафт. Сонь эса, улема ащи фкя эли сяда лама башка тяштькстт конат коняксонди аф кондястихть.',
'perfcached' => 'Вешф програмонь информациесь сёрматфоль эслек ванфневи файлхнень эса ди, улема, сирелгодсь.',
@@ -497,7 +518,6 @@ $2',
'virus-unknownscanner' => 'аф содаф антивирус:',
# Login and logout pages
-'logouttitle' => 'Тиить лисема',
'logouttext' => "'''Тон лисеть.'''
Тондейть ули кода ащемс {{SITENAME}}са апак содак эли [[Special:UserLogin|сувак тага весть]] кода сяка эли иля тиись.
@@ -505,7 +525,6 @@ $2',
'welcomecreation' => '== Сувак, $1! ==
Тонь сёрматфтомаце анок. Тят юкста полафнемс эсь [[Special:Preferences|{{SITENAME}} латцематне]].',
-'loginpagetitle' => 'Тиить сувама лемоц',
'yourname' => 'Тиить лемоц:',
'yourpassword' => 'Сувама валце:',
'yourpasswordagain' => 'Сёрматк сувама валце омбоцекс:',
@@ -527,25 +546,7 @@ $2',
'createaccountmail' => 'электрононь сёрма вельде',
'badretype' => 'Сувама валхне тон путыть аф фкат.',
'userexists' => 'Тя лемсь кой-кие сявозь ни. Эняльттяма, арьсек иля лемсь.',
-'youremail' => 'Электрононь адресце:',
-'username' => 'Тиить лемоц:',
-'uid' => 'Тиить идентификациесь:',
-'prefs-memberingroups' => 'Полаяй {{PLURAL:$1|полга|полга}}ста:',
-'yourrealname' => 'Афкуксонь лемце:',
-'yourlanguage' => 'Кяль:',
-'yournick' => 'Эсь тяшкстама:',
-'badsig' => 'Аф кондясти казяма кядьтяшксоце; ванк HTML тяштьксне.',
-'badsiglength' => 'Тонь тяшкстамаце пяк кувака.
-Аф эряви путомс $1 {{PLURAL:$1|тяшкста|тяшкста}} лама.',
-'yourgender' => 'Симанкс:',
-'gender-unknown' => 'Аф содаф',
-'gender-male' => 'Аля вайме',
-'gender-female' => 'Ава вайме',
-'email' => 'Электрононь адресце',
-'prefs-help-realname' => 'Афкуксонь лемце путомась аф лувови эрявикс. Афкуксонь лемцень тязк путомада меле тонь лемце кармай эвондама лопаса тонь петнемацень ала.',
'loginerror' => 'Сувама эльбятькс',
-'prefs-help-email' => 'Электрононь адресце тяса аф лувови эрявикс, интай сонь путомась лезды полафнемс сёрмаса иля тиихнень мархта тонь электрононь адресцень апак няфтек. Тондейть ули кода мярьгомс иля тиихнеди тонь мархта сюлмамс тонь тиить вельде эли тиись_корхнема лопа вельде тонць панчсемафтома.',
-'prefs-help-email-required' => 'Эряви электрононь адресце.',
'nocookiesnew' => 'Тиить сёрматфтомаце анок, аньцек тон изеть сува. {{SITENAME}}-са тиихнень содафтоманкса функцие cookies эряви. Тяни тонь содама машинаса функцие cookies кардаф. Эняльттяма нолдамс тевс cookies, меле сувак од эсь тиить лемцень эди сувама валцень мархта.',
'nocookieslogin' => '{{SITENAME}} лопаса тиихнень содафтоманкса функцие cookies эряви. Тяни тонь содама машинаса функцие cookies кардаф. Эняльттяма нолдамс тевс cookies, меле сувак тага весть.',
'noname' => 'Тон изеть пута кемокстаф тиить лемоц.',
@@ -558,7 +559,7 @@ $2',
'nouserspecified' => 'Тиить лемсь эряви.',
'wrongpassword' => 'Сувама валсь сёрматф аф лац. Варжак тага весть.',
'wrongpasswordempty' => 'Сувама валсь кадовсь апак сёрматк. Сёрматк одукс.',
-'passwordtooshort' => 'Тонь сувама валце аф кондясти эли кувалмоц аф саты. Тяса аф эряви путомс {{PLURAL:$1|1 тяшкста|$1 тяшкста}} кържа. Сувама валонцты эряви явовомс тонь тиить лемдот.',
+'passwordtooshort' => 'Тонь сувама валценди эряви улемс аф {{PLURAL:$1|1 тяшкста|$1 тяшкста}} кържа',
'mailmypassword' => 'Кучт од сувама вал',
'passwordremindertitle' => 'Од ёткопингонь сувама валсь {{SITENAME}}с суваманди',
'passwordremindertext' => 'Кивок (улема, тон IP адресста $1) вешсь од сувама валсь {{SITENAME}} ($4)с суваманди.
@@ -600,7 +601,6 @@ $2',
'retypenew' => 'Сёрматк од сувама вал омбоцекс:',
'resetpass_submit' => 'Арафтк сувама валть эди сувак',
'resetpass_success' => 'Тонь сувама валцень полафнемась ётась лац! Тонь сувафттядязь системс...',
-'resetpass_bad_temporary' => 'Аф кондясти ёткопингонь сувама валсь. Шятьта сонь полафтыть ни эли кучить тага фкя вешфкс од сувама валть кундаманкса.',
'resetpass_forbidden' => 'Сувама валхнень полафтомс аш кода',
'resetpass-no-info' => 'Тондейть эряви сёрматфтомс тя лопас видеста суваманди.',
'resetpass-submit-loggedin' => 'Полафтомс сувама валцень',
@@ -679,7 +679,6 @@ $2',
'blockededitsource' => "'''$1''' лопанди '''тонь петнематнень''' текстсна ала:",
'whitelistedittitle' => 'Петнема тиеманди эряви сувама лемсь',
'whitelistedittext' => 'Лопань петнеманкса эряви $1.',
-'confirmedittitle' => 'Эряви электрононь адресть кемокстама лопань петнеманкса',
'confirmedittext' => 'Тондейть эряви кемокстамс тонь электрононь адресцень лопань петнемада инголе. Эняльттяма, путт эди кемокстак тонь электрононь адресце тонь [[Special:Preferences|тиить арафнематне|тиить арафнематнень]] вельде.',
'nosuchsectiontitle' => 'Стама секцие аш',
'nosuchsectiontext' => 'Тон тяряфнеть петнемс секция конань тяса аш.
@@ -705,7 +704,8 @@ $2',
эли [{{fullurl:{{FULLPAGENAME}}|action=edit}} петнемс тя лопать]</span>.',
'userpage-userdoesnotexist' => 'Сёрматфтомась «$1» лемса аш. Арьсек лацкаста, афкукс тонь улендяряй мяльце тиемс эли полафтомс тя лопать.',
'clearyourcache' => "'''Шарфтк мяльце:''' Ванфтомада меле од полафнематнень ваноманкса тондейть эряви нардамс эслек ванфневи файлхнень тонь интернет полатксонь вальмастонза. '''Mozilla / Firefox / Safari:''' ''Shift'' кирдезь, люпштак ''Reload'', эли люпштак ''Ctrl-Shift-F5'' эли ''Ctrl-R'' (''Command-Shift-R'' Macintosh машинаса); '''Konqueror: '''люпштак ''Reload'' эли люпштак ''F5;'' '''Opera:''' програмса тондейть эрявксты нардамс сембе эслек ванфневи файлхт ''Tools→Preferences'' вельде; '' '''Internet Explorer:''' ''Ctrl'' кирдезь люпштакшнек ''Refresh'' эли люпштак ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Мялень максома:''' Ванфтомада инголе нолдак тевс 'Васень няфтема' пунять тонь од CSS эли JS файлть варжаманкса.",
+'usercssyoucanpreview' => "'''Мялень максома:''' Ванфтомада инголе нолдак тевс 'Васень няфтема' пунять тонь од CSS эли JS файлть варжаманкса.",
+'userjsyoucanpreview' => "'''Мялень максома:''' Ванфтомада инголе нолдак тевс 'Васень няфтема' пунять тонь од CSS эли JS файлть варжаманкса.",
'usercsspreview' => "Киртть мяльсот тя аньцек тонь CSS файлцень васень няфтемац. Сон нинге изь ванфтов!'''",
'userjspreview' => "'''Киртть мяльсот тя аньцек тонь JavaScript файлть варжамась/васень няфтемась, сон нинге изь ванфтов!'''",
'userinvalidcssjstitle' => "'''Инголе мярьгома:''' Аш тема файл \"\$1\" мазопнеманкса. Киртть мяльсот .css эди .js лопас путови аньцек ёмла тяшкса коняксне, кепотьксонди {{ns:user}}:Foo/лем.css афи {{ns:user}}:Foo/Лем.css.",
@@ -751,13 +751,16 @@ $2',
'readonlywarning' => "'''ИНГОЛЕ КАРДАМА: Датабазась пякстаф петема покаматнень сюнеда, тя пингста тондейть аш кода ванфтомс тонь петнематнень. Шятьта тондейть пароль синь ванфтомс текст файлс ди путомс тяза меле.'''
Системонь вятикссь, конась тонь сёлгозе путсь тяфтама туфталсь: $1",
-'protectedpagewarning' => "'''ИНГОЛЕ КАРДАМА: Тя лопать пякстаф петнемада, сонь петнема мярьгови аньцек системонь вийксненди.'''",
-'semiprotectedpagewarning' => "'''Шарфтк мяльце:''' Тя лопась пякстаф, сонь петнемац мярьгови аньцек сёрматфтф тиихненди.",
+'protectedpagewarning' => "''Инголе кардама: Тя лопать пякстаф петнемада, сонь петнема мярьгови аньцек системонь вийксненди.'''
+Мекольце петнемань лувомась ули кода ваномс вага ала:",
+'semiprotectedpagewarning' => "'''Шарфтк мяльце:''' Тя лопась пякстаф, сонь петнемац мярьгови аньцек сёрматфтф тиихненди.
+Мекольце петнемань лувомась ули кода ваномс вага ала.",
'cascadeprotectedwarning' => "'''ИНГОЛЕ КАРДАМА:''' Тя лопась пякстаф, сонь петнема мярьгови аньцек системонь вийксненди, сяс мес сонь сувафнезь каскад араламать ала {{PLURAL:$1|лопа|лопас}}:",
-'titleprotectedwarning' => "'''ИНГОЛЕ КАРДАМА: Тя лопась пякстаф, эрявихть [[Special:ListGroupRights|башка видекст]] сонь тиеманди.'''",
-'templatesused' => 'Тя лопаса тевс нолдаф кепотьксне:',
-'templatesusedpreview' => 'Тя васень няфтема вальмаса тевс нолдаф кепотьксне:',
-'templatesusedsection' => 'Тя пяльксса тевс нолдаф кепотьксне:',
+'titleprotectedwarning' => "'''Инголе кардама: Тя лопась пякстаф, эрявихть [[Special:ListGroupRights|башка видекст]] сонь тиеманди.'''
+Мекольце петнемань лувомась ули кода ваномс вага ала.",
+'templatesused' => 'Тя лопаса тевс нолдаф {{PLURAL:$1|кепотькс|кепотьксне}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Кепотькс|Кепотьксне}} нолдаф тевс тя вальмаса:',
+'templatesusedsection' => 'Тя пяльксса тевс нолдаф {{PLURAL:$1|кепотькс|кепотьксне}} :',
'template-protected' => '(аралаф)',
'template-semiprotected' => '(пялес-аралаф)',
'hiddencategories' => 'Тя лопась {{PLURAL:$1|1 кяшф катериень|$1 кяшф категориень}} полаец:',
@@ -768,13 +771,12 @@ $2',
'permissionserrors' => 'Мярьговома Эльбятькст',
'permissionserrorstext' => 'Тондейть аф мярьгови тянь тиемс {{PLURAL:$1|туфтал|туфталхнень}} коряс:',
'permissionserrorstext-withaction' => 'Тондейть аф мярьгови сувамс $2-с {{PLURAL:$1|тя туфтал|ня туфталхнень}} инкса:',
-'recreate-deleted-warn' => "'''Инголе кардама: Тон тисак одукс инголе нардаф лопать.'''
+'recreate-moveddeleted-warn' => "'''Инголе кардама: Тон тисак одукс инголе нардаф лопать.'''
Васенда арьсек эряви тя лопать вельмомац эли аф.
-Ванк тя лопать нардама лувомац ала:",
-'deleted-notice' => 'Тя лопась нардаф.
-Нардама лувомась тя лопать коряс вага ала.',
-'deletelog-fulllog' => 'Ваномс пякшсе лувомась',
+Ала ули кода ваномс тя лопать нардама ди шашфтома лувомась:",
+'moveddeleted-notice' => 'Тя лопась нардаф.
+Нардама ди шашфтома лувомась тя лопать коряс вага ала.',
'edit-hook-aborted' => 'Туворкс програм петнемать лоткафтозе.
Пачфтематнень тянь коряс ашет.',
'edit-gone-missing' => 'Аш кода лопать одонзамс.
@@ -815,7 +817,7 @@ $3 макссь туфталсь - ''$2''",
'currentrev' => 'Тяниень верзие',
'currentrev-asof' => 'Тяниень $1нь верзиец',
'revisionasof' => '$1-нь верзиесь',
-'revision-info' => '$1-нь иялякстоптомась конань тизе $2', # Additionally available: $3: revision id
+'revision-info' => '$1-нь иялякстоптомась конань тизе $2',
'previousrevision' => 'Сядынгольдень илякстоптома',
'nextrevision' => 'Сяда од илякстоптома',
'currentrevisionlink' => 'Тяниень илякстоптома',
@@ -828,7 +830,6 @@ $3 макссь туфталсь - ''$2''",
Шарьхкотьфтема: (тян.) = тяниень верзиеда явомась,
(сяд.) = сядынгольдень верзияда явомась, Ё = ёмла петнема.',
'history-fieldset-title' => 'Вешентть история',
-'deletedrev' => '[нардаф]',
'histfirst' => 'Кунардонь',
'histlast' => 'Мекольце',
'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
@@ -837,7 +838,7 @@ $3 макссь туфталсь - ''$2''",
# Revision feed
'history-feed-title' => 'Верзиетнень историясна',
'history-feed-description' => 'Викиса тя лопать верзиетнень историясна',
-'history-feed-item-nocomment' => '$1-сь $2-са', # user at time
+'history-feed-item-nocomment' => '$1-сь $2-са',
'history-feed-empty' => 'Лопась, конань тон вешеть тяса аш.
Улема сонь нардазь Викиста эли сонь лемоц полафтозь.
Сувак [[Special:Вешендемас|Викиса вешендемас]] сяда мала лопатнень муманкса.',
@@ -847,31 +848,31 @@ $3 макссь туфталсь - ''$2''",
'rev-deleted-user' => '(тиить лемоц нардаф)',
'rev-deleted-event' => '(сёрматфсь нардаф)',
'rev-deleted-text-permission' => "Тя лопать верзиенц '''нардазь'''.
-Шарьхкотьфнемат, шятьта, улихть [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} нардамань лувомаса].",
+Шарьхкотьфнемат, шятьта, улихть [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} нардамань лувомаса].",
'rev-deleted-text-view' => "Тя лопать верзиенц '''нардазь'''.
-Тондейть кода оцюнянцты ули кода ваномонза; ванк сяда лама информацие [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} нардамань лувомаса].",
+Тондейть кода оцюнянцты ули кода ваномонза; ванк сяда лама информацие [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} нардамань лувомаса].",
'rev-delundel' => 'няфтемс/кяшемс',
'revisiondelete' => 'Нардамс/мърдафтомс илякстоптоматнень',
'revdelete-nooldid-title' => 'Аф лац верзиень кочкама',
'revdelete-nooldid-text' => 'Тон ашеть кочка верзие эли верзиет конатнень мархта эряви тянь тиемс, илякс ня верзиетне ашет эли тонт тяряфнят кяшемс тяниень верзиеть.',
+'revdelete-show-file-submit' => 'Ина',
'revdelete-selected' => "''''''$1:'''-нь {{PLURAL:$2|Кочкаф верзиец|Кочкаф верзиенза}}'''",
'logdelete-selected' => "'''{{PLURAL:$1|Кочкаф сёрматфтомась|кочкаф сёрматфтоматне}}:'''",
'revdelete-text' => "'''Нардаф верзиетне илядыхть няевикс лопать историясонза ди нардамань лувомава, интай сонь потмоснон пакшенза кармайхть аф сембонди сатовихть.'''
-
-Иля {{SITENAME}}нь оцюнятненди кяшф потмоснон ули кода ваномс эди мърдафтомс тяка програмонь ванфть вельде мъзярс иля кардафксне исть путов.
-
-Эняльттяма, сёрматт тонь ули мяльце тянь тиемс эди тон шарьхкодят мезе тяста лиси, эди сон тянь тият [[{{MediaWiki:Policy-url}}|койхнень коряс]].",
+Иля {{SITENAME}}нь оцюнятненди кяшф потмоснон ули кода ваномс эди мърдафтомс тяка програмонь ванфть вельде мъзярс иля кардафксне исть путов.",
'revdelete-legend' => 'Арафтомс няемга оторхне',
'revdelete-hide-text' => 'Кяшемс тя лопать верзиенц',
+'revdelete-hide-image' => 'Кяшемс файлхнень потмосна',
'revdelete-hide-name' => 'Кяшемс тиемать эди туфталонц',
'revdelete-hide-comment' => 'Кяшемс мяльполатксонь петнемать',
'revdelete-hide-user' => 'Кяшемс петнить лемонц/IP адресонц',
'revdelete-hide-restricted' => 'Нолдак тевс ня кардафкснень системонь вийксненди ди тага илятненди.',
+'revdelete-radio-set' => 'Ина',
+'revdelete-radio-unset' => 'Аф',
'revdelete-suppress' => 'Кяшемс информациень системонь вятикснень эзда',
-'revdelete-hide-image' => 'Кяшемс файлхнень потмосна',
'revdelete-unsuppress' => 'Валхтомс мърдаф верзиятнень кардамаснон',
'revdelete-log' => 'Туфтал:',
-'revdelete-submit' => 'Нолдамс тевс кочкаф верзиенди',
+'revdelete-submit' => 'Нолдамс тевс кочкаф {{PLURAL:$1|верзие|верзиет}}',
'revdelete-logentry' => '[[$1]]-нь верзиенц няевомац полафтсь',
'logdelete-logentry' => '[[$1]]-с сёрматфть няевомац полафтсь',
'revdelete-success' => "'''Верзиеть няевоманц одонзафозь лац.'''",
@@ -888,6 +889,7 @@ $3 макссь туфталсь - ''$2''",
'revdelete-unhid' => '$1 апак кяштт',
'revdelete-log-message' => '$1 $2 {{PLURAL:$2|верзиенди|верзиетненди}}',
'logdelete-log-message' => '$1 $2 {{PLURAL:$2|тевти|тефненди}}',
+'revdelete-edit-reasonlist' => 'Петнемс нардамань туфталхне',
# Suppression log
'suppressionlog' => 'Кяшемань лувомась',
@@ -929,63 +931,8 @@ $3 макссь туфталсь - ''$2''",
'difference' => '(Явомась верзиетнень ёткова)',
'lineno' => 'Кикссь $1:',
'compareselectedversions' => 'Путомс кочкаф верзиетнень ваксс',
-'visualcomparison' => 'Ваномань ваксс путомась',
-'wikicodecomparison' => 'Викитекст ваксс путомась',
'editundo' => 'валхтомс',
'diff-multi' => '({{PLURAL:$1|$1-нь ётконь верзиец изь няфтев|$1-нь ётконь верзиенза исть няфтев}}.)',
-'diff-movedto' => 'шашфтф $1с',
-'diff-styleadded' => '$1 стильсь полатф',
-'diff-added' => '$1 полатф',
-'diff-changedto' => 'полафтф $1с',
-'diff-movedoutof' => 'шашфтф $1ста',
-'diff-styleremoved' => '$1 стильсь валхтф',
-'diff-removed' => '$1 валхтф',
-'diff-changedfrom' => 'полафтф $1ста',
-'diff-src' => 'лисьма',
-'diff-withdestination' => 'сай лопась $1сь',
-'diff-with' => '&#32;$1 $2 мархта',
-'diff-with-final' => '&#32;$1 $2 мархта',
-'diff-width' => 'келец',
-'diff-height' => 'серец',
-'diff-p' => "'''параграф'''",
-'diff-blockquote' => "'''валлятфнема'''",
-'diff-h1' => "'''конякс (лув 1)'''",
-'diff-h2' => "'''конякс (лув 2)'''",
-'diff-h3' => "'''конякс (лув 3)'''",
-'diff-h4' => "'''конякс (лув 4)'''",
-'diff-h5' => "'''конякс (лув 5)'''",
-'diff-pre' => "'''форматыяфтф пакш'''",
-'diff-div' => "'''явкс'''",
-'diff-ul' => "'''апак арафтт лувома'''",
-'diff-ol' => "'''арафтф лувома'''",
-'diff-li' => "'''лувомас сувси'''",
-'diff-table' => "'''таблица'''",
-'diff-tbody' => "'''таблицань потмоц'''",
-'diff-tr' => "'''лув'''",
-'diff-td' => "'''саркс'''",
-'diff-th' => "'''конякс'''",
-'diff-br' => "'''ётка'''",
-'diff-hr' => "'''горизонтонь латцема'''",
-'diff-code' => "'''содама машинань кодонц сёлгомац'''",
-'diff-dl' => "'''шарьхкотьфтемань лувома'''",
-'diff-dt' => "'''шарьхкотьфтема вал'''",
-'diff-dd' => "'''шарьхкотьфтема'''",
-'diff-input' => "'''путф'''",
-'diff-form' => "'''форм'''",
-'diff-img' => "'''няйф'''",
-'diff-span' => "'''вакс'''",
-'diff-a' => "'''сюлмафкс'''",
-'diff-i' => "'''комафтф'''",
-'diff-b' => "'''эчке'''",
-'diff-strong' => "'''кемоста'''",
-'diff-em' => "'''тяшкстама мархта'''",
-'diff-font' => "'''сёрма'''",
-'diff-big' => "'''оцюста'''",
-'diff-del' => "'''нардаф'''",
-'diff-tt' => "'''арафтф келец'''",
-'diff-sub' => "'''алга тяшкстафкс'''",
-'diff-sup' => "'''вярьге тяшкстафкс'''",
-'diff-strike' => "'''туркс кикст'''",
# Search results
'searchresults' => 'Мезе мувсь',
@@ -993,25 +940,22 @@ $3 макссь туфталсь - ''$2''",
'searchresulttext' => '{{SITENAME}}-са вешендемань колга лама содаманкса ватт [[{{MediaWiki:Helppage}}|кизефтемань пялькссь]].',
'searchsubtitle' => 'Тон вешить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|сембе лопат "$1"ста ушедомс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|сембе лопат сюлмафт "$1" мархта]])',
'searchsubtitleinvalid' => "Тон вешить '''$1'''",
-'noexactmatch' => "'''\"\$1\" конякс мархта лопа аш.''' Тондейть ули кода [[:\$1|тиемс лопать]].",
-'noexactmatch-nocreate' => "'''\"\$1\" конякс мархта лопа аш.'''",
'toomanymatches' => 'Пяк лама вешфонди малады муфкст, эняльттяма вешентть тага весть',
'titlematches' => 'Лопать коняксоц мувсь',
'notitlematches' => 'Лопать коняксоц изь мув',
'textmatches' => 'Лопаса сёрматфсь мувсь',
'notextmatches' => 'Лопаса сёрматфсь изь мув',
-'prevn' => 'сядынголень $1',
-'nextn' => 'сай $1',
-'viewprevnext' => 'Ваномс ($1) ($2) ($3)',
+'prevn' => 'сядынголень {{PLURAL:$1|$1}}',
+'nextn' => 'сай {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ваномс ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Вешендема арафнематне',
'searchmenu-exists' => "'''Тя Викиса ули лопась \"[[:\$1]]\" лем мархта'''",
'searchmenu-new' => "'''Ушедомс лопась \"[[:\$1]]\" тя Викиса!'''",
'searchhelp-url' => 'Help:Лопань потмоц',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Мумс лопат тя валынголькссь мархта]]',
'searchprofile-articles' => 'Потмонь лопат',
-'searchprofile-articles-and-proj' => 'Потмонь ди проектонь лопат',
-'searchprofile-project' => 'Проектонь лопат',
-'searchprofile-images' => 'Файлхт',
+'searchprofile-project' => 'Лезкс эди проектонь лопат',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Сембе',
'searchprofile-advanced' => 'Келептьф',
'searchprofile-articles-tooltip' => 'Вешендемс $1са',
@@ -1019,8 +963,6 @@ $3 макссь туфталсь - ''$2''",
'searchprofile-images-tooltip' => 'Вешендемс файлхт',
'searchprofile-everything-tooltip' => 'Вешендемс сембе лопаса (корхнема лопат сявомок)',
'searchprofile-advanced-tooltip' => 'Вешендемс кърдань лемботмова',
-'prefs-search-nsdefault' => 'Вешендемс мезеге апак полафтт:',
-'prefs-search-nscustom' => 'Вешендемс кърдань лемботмова:',
'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валхт}})',
'search-result-score' => 'Малавиксши: $1%',
'search-redirect' => '(шашфтт $1с)',
@@ -1037,7 +979,6 @@ $3 макссь туфталсь - ''$2''",
'searchall' => 'сембе',
'showingresults' => "Ала няфтеви {{PLURAL:$1|мувсь '''1'''|мувсть '''$1'''}} '''$2'''-ста ушедомс.",
'showingresultsnum' => "Ала няфтеви {{PLURAL:$3|мувсь '''1'''|мувсть '''$3'''}} '''$2'''-ста ушедомс.",
-'showingresultstotal' => "Няфтемс ала {{PLURAL:$4|муфоль '''$1''' '''$3'''-ста|муфольхть '''$1 - $2''' '''$3'''-ста}}",
'nonefound' => "'''Шарфтк мяльце''': Аньцек мъзярошка лемботмат вешендевихть инголе апак полафтт. Тяряфтт вешендема валда инголе путомс ''all:'' сембе потмонь вешендеманди (корхнема лопат ди шаблотт сявомок, ди с. т) эли кундак эрявикс лемботмос кода валынгольксс.",
'search-nonefound' => 'Аш вешфксонди малады муфкст.',
'powersearch' => 'Сядонга вешендемс',
@@ -1048,35 +989,26 @@ $3 макссь туфталсь - ''$2''",
'search-external' => 'Ушеширень вешендема',
'searchdisabled' => '{{SITENAME}}-са тяни вешендемась аш. Ули кода вешендемс Google эли иля вешендемань интернет програпнень вельде. Шарфтк мяльце тостонь {{SITENAME}}-нь потмонц верзиец, улема, сирелгодсь.',
+# Quickbar
+'qbsettings' => 'Навигациень седяфкс',
+'qbsettings-none' => 'Аф няфтемс',
+'qbsettings-fixedleft' => 'Кержи шири киртьф',
+'qbsettings-fixedright' => 'Види шири киртьф',
+'qbsettings-floatingleft' => 'Кержи ширеса уенди',
+'qbsettings-floatingright' => 'Виде ширеса уенди',
+
# Preferences page
'preferences' => 'Арафнематне',
'mypreferences' => 'Монь латцемане',
'prefs-edits' => 'Петнематнень лувсна:',
'prefsnologin' => 'Апак сувак',
-'prefsnologintext' => 'Тондейть эряви <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} сувамс]</span> тонь арафнематнень латцеманкса.',
-'prefsreset' => 'Ингольдень арафнематне мърдасть меки.',
-'qbsettings' => 'Навигациень седяфкс',
-'qbsettings-none' => 'Аф няфтемс',
-'qbsettings-fixedleft' => 'Кержи шири киртьф',
-'qbsettings-fixedright' => 'Види шири киртьф',
-'qbsettings-floatingleft' => 'Кержи ширеса уенди',
-'qbsettings-floatingright' => 'Виде ширеса уенди',
+'prefsnologintext' => 'Тондейть эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} сувамс]</span> тонь арафнематнень латцеманкса.',
'changepassword' => 'Сувама валть полафтомс',
-'skin' => 'Ванфонь латцема',
+'prefs-skin' => 'Ванфонь латцема',
'skin-preview' => 'Васень няфтема',
-'math' => 'Няфтемс формулат',
-'dateformat' => 'Шинь форматоц',
+'prefs-math' => 'Няфтемс формулат',
'datedefault' => 'Апак полафтт',
-'datetime' => 'Ши ди пинге',
-'math_failure' => 'Аф морафтови',
-'math_unknown_error' => 'аф содаф эльбятькс',
-'math_unknown_function' => 'аф содаф функцие',
-'math_lexing_error' => 'лексиконь эльбятькс',
-'math_syntax_error' => 'синтаксонь эльбятькс',
-'math_image_error' => 'PNG форматс сёрматфтомась изь лисев; ватт лац эли аф арафтовсть latex, dvips, gs эди convert',
-'math_bad_tmpdir' => 'Аф сёрматфтови ётконь математик директориес эди директориесь аф тиеви',
-'math_bad_output' => 'Аф сёрматфтови нолдамань математик директориес эди директориесь аф тиеви',
-'math_notexvc' => 'Нолдамань файл texvc изь мув; Ванк math/README ладямать колга.',
+'prefs-datetime' => 'Ши ди пинге',
'prefs-personal' => 'Тиить колга',
'prefs-rc' => 'Мекольце полафнемат',
'prefs-watchlist' => 'Мельгеванома',
@@ -1089,7 +1021,7 @@ $3 макссь туфталсь - ''$2''",
'saveprefs' => 'Ванфтомс',
'resetprefs' => 'Валхтомс апак ванфтт полафнематнень',
'restoreprefs' => 'Мърдафтомс васень латцематне',
-'textboxsize' => 'Петнема',
+'prefs-editing' => 'Петнема',
'prefs-edit-boxsize' => 'Петнема вальмоть келец.',
'rows' => 'Луфт (строкат):',
'columns' => 'Орват (столбанят):',
@@ -1100,12 +1032,10 @@ $3 макссь туфталсь - ''$2''",
'stub-threshold' => 'Оторсь (лимитсь) <a href="#" class="stub">-нь керф сюлмафкснень</a> латцемаснонды (байтт):',
'recentchangesdays' => 'Мъзяра шит няфтемс мекольце полафнемаса:',
'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|ши|шит}})',
-'recentchangescount' => 'Мъзяра петнемат няфтемс апак полафтт мекольце полафнемаса, история ди сувама лувома лопаса:',
+'recentchangescount' => 'Мъзяра петнемат няфтемс апак полафтт:',
'savedprefs' => 'Тонь латцематне ванфтсть.',
'timezonelegend' => 'Оень (часонь) каркссь:',
-'timezonetext' => '¹Мъзяра ойда (часта) тястонь пинге яви серверонь пингта (UTC - Гринвич пинге).',
'localtime' => 'Тястоконь пинге:',
-'timezoneselect' => 'Пингонь зонась:',
'timezoneuseserverdefault' => 'Нолдак апак полафтт серверть тевс',
'timezoneuseoffset' => 'Иля (путт явомась)',
'timezoneoffset' => 'Явома¹:',
@@ -1121,12 +1051,30 @@ $3 макссь туфталсь - ''$2''",
'allowemail' => 'Электрононь сёрматнень иля тиихнень эзда тиемс мярьговикс',
'prefs-searchoptions' => 'Вешендема арафнемат',
'prefs-namespaces' => 'Лемботмот',
-'defaultns' => 'Вешендемс ня лепнень потмова мъзярс илякс изь мярьгов:',
+'defaultns' => 'Илякс вешентть ня лемботмова:',
'default' => 'апак полафтт',
-'files' => 'Файлхт',
+'prefs-files' => 'Файлхт',
+'youremail' => 'Электрононь адресце:',
+'username' => 'Тиить лемоц:',
+'uid' => 'Тиить идентификациесь:',
+'prefs-memberingroups' => 'Полаяй {{PLURAL:$1|полга|полга}}ста:',
+'yourrealname' => 'Афкуксонь лемце:',
+'yourlanguage' => 'Кяль:',
+'yournick' => 'Эсь тяшкстама:',
+'badsig' => 'Аф кондясти казяма кядьтяшксоце; ванк HTML тяштьксне.',
+'badsiglength' => 'Тонь тяшкстамаце пяк кувака.
+Аф эряви путомс $1 {{PLURAL:$1|тяшкста|тяшкста}} лама.',
+'yourgender' => 'Симанкс:',
+'gender-unknown' => 'Аф содаф',
+'gender-male' => 'Аля вайме',
+'gender-female' => 'Ава вайме',
+'email' => 'Электрононь адресце',
+'prefs-help-realname' => 'Афкуксонь лемце путомась аф лувови эрявикс. Афкуксонь лемцень тязк путомада меле тонь лемце кармай эвондама лопаса тонь петнемацень ала.',
+'prefs-help-email' => 'Электрононь адресце тяса аф лувови эрявикс, интай сонь путомась лезды полафнемс сёрмаса иля тиихнень мархта тонь электрононь адресцень апак няфтек. Тондейть ули кода мярьгомс иля тиихнеди тонь мархта сюлмамс тонь тиить вельде эли тиись_корхнема лопа вельде тонць панчсемафтома.',
+'prefs-help-email-required' => 'Эряви электрононь адресце.',
# User rights
-'userrights' => 'Тиинь видекснень вятема', # Not used as normal message but as header for the special page itself
+'userrights' => 'Тиинь видекснень вятема',
'userrights-lookup-user' => 'Тиихнень полгаснон вятемасна',
'userrights-user-editname' => 'Путт тиить лемонц:',
'editusergroup' => 'Полафтомс тиить полганзон',
@@ -1210,6 +1158,8 @@ $3 макссь туфталсь - ''$2''",
'right-editprotected' => 'Петнемс аралаф лопатнень (какскадонь араламада башка)',
'right-editinterface' => 'Петнемс тиить лопанц арафнеманзон',
'right-editusercssjs' => 'Петнемс иля тиихнень CSS ди JS файлснон',
+'right-editusercss' => 'Петнемс иля тиихнень CSS файлснон',
+'right-edituserjs' => 'Петнемс иля тиихнень JS файлснон',
'right-rollback' => 'Куроконе мумс мекольце тиить конась петнесь лопат',
'right-markbotedits' => 'Тяштемс мърдаф петнематнень кода робот петнематне',
'right-noratelimit' => 'Куроксшинь оторхт ашет',
@@ -1299,6 +1249,8 @@ $3 макссь туфталсь - ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Сюлмаф полафнематне',
+'recentchangeslinked-feed' => 'Сюлмаф полафнематне',
+'recentchangeslinked-toolbox' => 'Сюлмаф полафнематне',
'recentchangeslinked-title' => 'Полафнемат сюлмафт "$1" мархта',
'recentchangeslinked-noresult' => 'Сюлмаф лопава тя пингста полафнемат ашельхть.',
'recentchangeslinked-summary' => "Тя башка лопас сувафнезь мекольце полафнемат сюлмаф лопава. Тонь ванома сёрмалувомастонь лопатне тяштезь '''эчкста'''.",
@@ -1308,7 +1260,6 @@ $3 макссь туфталсь - ''$2''",
# Upload
'upload' => 'Тонгомс файл',
'uploadbtn' => 'Тонгомс файл',
-'reupload' => 'Тонгомс тага весть',
'reuploaddesc' => 'Валхтомс тонгомать ди мърдамс тонгома формс.',
'uploadnologin' => 'Апак сувак',
'uploadnologintext' => 'Тондейть эряви [[Special:UserLogin|сувамс]] файл тонгоманкса.',
@@ -1359,7 +1310,6 @@ $3 макссь туфталсь - ''$2''",
* Тонгодеви файлть лемоц: '''<tt>[[:$1]]</tt>'''
* Файллем, кона ульсь ни: '''<tt>[[:$2]]</tt>'''
Эняльттяма, арьсек иля лем.",
-'fileexists-thumb' => "<center>'''Тяниень файл'''</center>",
'fileexists-thumbnail-yes' => "Файлсь, улема, архтофксонь кирьфтаф верзиесь ''(thumbnail)''. [[$1|thumb]]
Ванк файл '''<tt>[[:$1]]</tt>''' лангс.
Дяряй файлсь конань лангс тон ваноть сяка пяшксе кувалмоса архтофкссь, тоса тага фкя миниатюр тонгомс аф эряви.",
@@ -1379,7 +1329,6 @@ $3 макссь туфталсь - ''$2''",
'uploaddisabled' => 'Тонгодемать лоткозь',
'uploaddisabledtext' => 'Файл тонгодемась лоткаф.',
'uploadscripted' => 'Тя файлса ащи HTML эли програм, конат аф морафтовихть интернет полатксть вельде.',
-'uploadcorrupt' => 'Тя файлсь колавсь эли сонь аф кондясти файл формат тяшксоц. Ванк ди тонк сонь одукс.',
'uploadvirus' => 'Тя файлса ащи вирус програм! Информацие: $1',
'sourcefilename' => 'Лисьма файлонь лемоц',
'destfilename' => 'Сувафтома файлонь лемоц',
@@ -1405,6 +1354,7 @@ $3 макссь туфталсь - ''$2''",
'upload-curl-error28-text' => 'Лопась аф пъшкяди каршес пяк ламос. Ванк лопась няфтеви эли аф эди тик сембе одукс аф лама пингта меле. Улема, тевть пароль тиемс иля пингста, мъзярда лопас сувсида кържа.',
'license' => 'Лицензияма:',
+'license-header' => 'Лицензияма',
'nolicense' => 'Лицензие аш',
'license-nopreview' => '(Васень няфтемась аш)',
'upload_source_url' => ' (кондясти, сембонди панжада URL)',
@@ -1425,6 +1375,7 @@ $3 макссь туфталсь - ''$2''",
'listfiles_count' => 'Верзиет',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлонь историясь',
'filehist-help' => 'Люпштак шить/пингть лангс ся пингонь файлть верзинц няфтеманкса.',
'filehist-deleteall' => 'нардамс сембе',
@@ -1448,12 +1399,7 @@ $3 макссь туфталсь - ''$2''",
'morelinkstoimage' => 'Ванк [[Special:WhatLinksHere/$1|сяда лама сюлмафкст]] тя файлонди.',
'redirectstofile' => 'Сай {{PLURAL:$1|файлсь шашфтфоль|$1 файлхне шашфтфольхть}} тя файлонди:',
'duplicatesoffile' => 'Сай {{PLURAL:$1|файлсь ащи кафонзафксокс|$1 файлхне ащихть кафонзафксокс}} тя файлонди ([[Special:FileDuplicateSearch/$2|сяда лама информацие]]):',
-'sharedupload' => 'Тя файлсь $1ста ди сонь ули кода сувафтомс иля проектс.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ванк $1 лама информацие ванома.',
-'shareduploadwiki-desc' => 'Сёрмадома сонць $1 коряс марстонь репозиториса ванк ала.',
-'shareduploadwiki-linktext' => 'файл колга информациень лопа',
-'noimage' => 'Тя лем мархта файл аш, интай тондейть ули кода $1.',
-'noimage-linktext' => 'тонгодемс тянь',
+'sharedupload' => 'Тя файлсь $1ста ди сонь ули кода сувафтомс иля проектс.',
'uploadnewversion-linktext' => 'Тонгодемс тя файлонь од верзиенц',
# File reversion
@@ -1503,7 +1449,7 @@ $3 макссь туфталсь - ''$2''",
# Random page
'randompage' => 'Кона повсь лопа',
-'randompage-nopages' => '"$1" лемботмоса лопат ашет.',
+'randompage-nopages' => 'Аш лопат {{PLURAL:$2|тя лемботмоса|ня лемботмоса}}: $1.',
# Random redirect
'randomredirect' => 'Коза повсь шашфтфкс',
@@ -1541,8 +1487,8 @@ $3 макссь туфталсь - ''$2''",
'brokenredirects' => 'Синтьф умборондафтфксне',
'brokenredirectstext' => 'Ся умборондафтфксне сюлмафт лопат мархта конат ашет:',
-'brokenredirects-edit' => '(петнемс)',
-'brokenredirects-delete' => '(нардамс)',
+'brokenredirects-edit' => 'петнемс',
+'brokenredirects-delete' => 'нардамс',
'withoutinterwiki' => 'Кялень сюлмафксфтома лопат',
'withoutinterwiki-summary' => 'Ся лопатне аф сюлмафт иля кялень верзиетнень мархта:',
@@ -1647,9 +1593,9 @@ $3 макссь туфталсь - ''$2''",
# Special:Categories
'categories' => 'Категориет',
-'categoriespagetext' => 'Ся категориетнень эса улихть лопат эли медиат.
-[[Special:UnusedCategories|тевс апак нолдак категориятне]] тяса аф няфтевихть.
-Стане ина ватт [[Special:WantedCategories|вешема категориятне]].',
+'categoriespagetext' => '{{PLURAL:$1|Тя категориень|ся категориетнень}} эса улихть лопат эли медиат.
+[[Special:UnusedCategories|тевс апак нолдак категориятне]] тяса аф няфневихть.
+Стане ина ватт [[Special:WantedCategories|вешема категориет]].',
'categoriesfrom' => 'Няфтемс категориет тяста ушедозь:',
'special-categories-sort-count' => 'арафтомс луфть коряс',
'special-categories-sort-abc' => 'арафтомс алфавитонь коряс',
@@ -1770,25 +1716,28 @@ $3 макссь туфталсь - ''$2''",
'enotif_body' => 'Кельгома $WATCHINGUSERNAME,
-$PAGEEDITDATE {{SITENAME}}-нь лопа $PAGETITLE $CHANGEDORCREATED тиись $PAGEEDITOR, ванк $PAGETITLE_URL тя пингонь верзиень ваномста.
+{{SITENAME}} лопа $PAGETITLE $CHANGEDORCREATED $PAGEEDITDATE тиись $PAGEEDITOR. Мекольце верзие ванк $REFINFO
$NEWPAGE
Петнить лихтемац: $PAGESUMMARY $PAGEMINOREDIT
Сотомс петнить мархта:
-электрононь адрес: $PAGEEDITOR_EMAIL
-вики: $PAGEEDITOR_WIKI
+электрононь адрес вельде: $PAGEEDITOR_EMAIL
+вики вельде: $PAGEEDITOR_WIKI
Аф кармайхть кучевома пачфтемат иля сай полафнематнень колга тонь самдот тя лопас инголе. Тондейть тага ули кода омбоцекс путомс пачфтема содафксне тонь мельгеваномазот сембе тонь мельгеванома ала лопатненди.
- Тонь ялгань {{SITENAME}}нь пачфтема системце
+ Тонь ялгань {{SITENAME}} пачфтема системце
--
-Тонь мельгеваномацень латцемасна полафтоманкса ванк
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Тонь мельгеваномацень латцемасна полафтоманкса сашентт
+{{fullurl:{{#special:Watchlist}}/edit}}
-Азома мекпяли ди лезкс:
+Лопать тонь мельгеваномастот нардаманди сашентт
+$UNWATCHURL
+
+Азома мекпяли ди иля лезкс:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1800,7 +1749,7 @@ $NEWPAGE
'exblank' => 'лопась шаволь',
'delete-confirm' => 'Нардамс "$1"',
'delete-legend' => 'Нардамс',
-'historywarning' => 'Инголе мярьгома: Тон ёрат нардамс лопать, конань ульсь историец:',
+'historywarning' => "'''Инголе мярьгома''' Тон ёрат нардамс лопа, конань $1 {{PLURAL:$1|верзие|верзиет}}:",
'confirmdeletetext' => 'Тон сърхкать нардамс лопать сембе сонь историянц мархта.
Эняльттяма, кемокстак тон афкукс ёрат тянь тиемс, эди тон шарьхкодьсак мезе лиси тяда меле, ди тон сембе тянь тисак [[{{MediaWiki:Policy-url}}|политик]] коряс.',
'actioncomplete' => 'Тевонь тиемась анок',
@@ -1832,8 +1781,8 @@ $NEWPAGE
иля тиись сонь петезе эли кевордазе ни.
Мекольце петнема тизе [[User:$3|$3]] ([[User talk:$3|Корхнема]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Петнема лихтема ульсь: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Петнематнень мърдафтозь [[Special:Contributions/$2|$2]] ([[User talk:$2|Корхнема]]) сядынгольдень верзиес мърдафтозе [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Петнема лихтема ульсь: \"''\$1''\".",
+'revertpage' => 'Петнематнень мърдафтозь [[Special:Contributions/$2|$2]] ([[User talk:$2|Корхнема]]) сядынгольдень верзиес мърдафтозе [[User:$1|$1]]',
'rollback-success' => 'Петнематнень мърдафтозе $1; сядынгольдень верзиес мърдафтозе $2.',
'sessionfailure' => 'Улема, лиссь прябала тонь сувама пингста; програмонь якамась лотказевсь сувамать върьгятемада аралама туфталонкса. Эняльттяма, люпштак "меки" ди одонзафтт лопать, конаста тон сать, меле тик сембе одукс.',
@@ -1851,7 +1800,6 @@ $NEWPAGE
'protectexpiry' => 'Шумордави:',
'protect_expiry_invalid' => 'Шумордама пинге аф кондясти.',
'protect_expiry_old' => 'Шумордама пингсь ётась.',
-'protect-unchain' => 'Панжемс ётафтомань мярьговомась',
'protect-text' => "Тондейть ули кода тяса ваномс эди полафтомс аралама виенц '''<nowiki>$1</nowiki>''' лопанди.",
'protect-locked-blocked' => "Аш кода полафтомс араламать виенц сёлгома пингста. Лопать тяниень латцеманза тясот '''$1''':",
'protect-locked-dblock' => "Аш кода полафтомс араламать виенц датабазонь пякстамать сюнеда.
@@ -1880,7 +1828,7 @@ $NEWPAGE
** Потафнема петнематнень мархта тюремась
** Вельф лама лисемат-сувамот лопаса',
'protect-edit-reasonlist' => 'Петнемс аралама туфталхне',
-'protect-expiry-options' => '1 ой (час):1 hour,1 ши:1 day,1 тарга (недля):1 week,2 таргат (недлят):2 weeks,1 ков:1 month,3 кофт:3 months,6 кофт:6 months,1 киза:1 year,пефтома:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ой (час):1 hour,1 ши:1 day,1 тарга (недля):1 week,2 таргат (недлят):2 weeks,1 ков:1 month,3 кофт:3 months,6 кофт:6 months,1 киза:1 year,пефтома:infinite',
'restriction-type' => 'Мярьговома:',
'restriction-level' => 'Пякстама вийсь:',
'minimum-size' => 'Минимум кувалмоц',
@@ -1954,7 +1902,7 @@ $1',
'contributions-title' => 'Тиить путксонза $1нди',
'mycontris' => 'Монь путксне',
'contribsub2' => '$1 ($2)-нди',
-'nocontribs' => 'Тя вешфксть коряс кодамога полафтомат исть мув.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Тя вешфксть коряс кодамога полафтомат исть мув.',
'uctop' => '(прянь)',
'month' => 'Ковста (ди сядынголе):',
'year' => 'Кизоста (ди сядынголе):',
@@ -1963,6 +1911,9 @@ $1',
'sp-contributions-newbies-sub' => 'Од сёрматфтомаста',
'sp-contributions-newbies-title' => 'Тиить путксонза од сёрматфтоматненди',
'sp-contributions-blocklog' => 'Сёлгомань лувомась',
+'sp-contributions-deleted' => 'нардаф тиинь путксонза',
+'sp-contributions-talk' => 'корхтама',
+'sp-contributions-userrights' => 'тиинь видекснень вятема',
'sp-contributions-search' => 'Вешендемс путкст',
'sp-contributions-username' => 'IP адрес эли тиить лемоц:',
'sp-contributions-submit' => 'Вешендема',
@@ -2011,7 +1962,7 @@ $1',
'ipbenableautoblock' => 'Эсезонза сёлгомс тя тиить мекольце IP адресть эди иля IP адрест конань эста сон тяряфни петнемат тиемс',
'ipbsubmit' => 'Сёлгомс тя тиить',
'ipbother' => 'Иля пинге:',
-'ipboptions' => '2 ойхть (част):2 hours,1 ши:1 day,3 шит:3 days,1 тарга (недля):1 week,2 таргат (недлят):2 weeks,1 ков:1 month,3 кофт:3 months,6 кофт:6 months,1 киза:1 year,пефтома:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ойхть (част):2 hours,1 ши:1 day,3 шит:3 days,1 тарга (недля):1 week,2 таргат (недлят):2 weeks,1 ков:1 month,3 кофт:3 months,6 кофт:6 months,1 киза:1 year,пефтома:infinite',
'ipbotheroption' => 'иля',
'ipbotherreason' => 'Иля/поладомань туфтал:',
'ipbhidename' => 'Кяшемс тиить лемоц петнемада ди лувомада',
@@ -2042,7 +1993,7 @@ $1',
'ipblocklist-submit' => 'Вешендема',
'blocklistline' => '$1, $2 сёлгозь $3 ($4)',
'infiniteblock' => 'пефтома',
-'expiringblock' => 'шумордави $1',
+'expiringblock' => 'шумордави $1 $2 ойста',
'anononlyblock' => 'аньцек лемфтома',
'noautoblockblock' => 'эслек сёлгома лоткаф',
'createaccountblock' => 'сёрматфтомась тиема сёлкф',
@@ -2056,7 +2007,6 @@ $1',
'contribslink' => 'путкс.',
'autoblocker' => 'Эслек сёлкф сяс мес тонь IP адресцень нолдась тевс "[[User:$1|$1]]". $1-нь сёлгомац туфтал: "$2"',
'blocklogpage' => 'Сёлгомань лувома',
-'blocklog-fulllog' => 'Пяшксе сёлгомань лувомась',
'blocklogentry' => '[[$1]] сёлкф $2 $3 пингс',
'reblock-logentry' => 'полафтсь сёлгома латцематне [[$1]]нди сёлгомать сирелгодома пинге ули $2 $3',
'blocklogtext' => 'Тя лувомас сувсихть тиихнень сембе пякстамань ди панжемань тефне.
@@ -2140,7 +2090,7 @@ $1 сёлкф ни. Мяльце полафтомс латцематнень?',
'move-watch' => 'Ваномс тя лопать мельге',
'movepagebtn' => 'Шашфтомс лопать иля вастс',
'pagemovedsub' => 'Шашфтомась ётась лац',
-'movepage-moved' => '\'\'\'"$1"сь шашфтфоль "$2"с\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1"сь шашфтфоль "$2"с\'\'\'',
'movepage-moved-redirect' => 'Умборондафтфкс тифоль.',
'movepage-moved-noredirect' => 'Умборондафтфксонь тиемась лоткафоль.',
'articleexists' => 'Тя лем мархта лопась ульсь ни эли лемсь, кона тон кочкать аф кондясти.
@@ -2206,8 +2156,6 @@ $1 сёлкф ни. Мяльце полафтомс латцематнень?',
'allmessagestext' => 'Тя MediaWiki-са васьфневи системонь пачфтематнень лувомась.
Эняльттяма, сувак [http://www.mediawiki.org/wiki/Localisation MediaWiki Локализациес] ди [http://translatewiki.net translatewiki.net-с] кда тонь мяльце тиемс эсь путксце марстонь MediaWiki локализациес.',
'allmessagesnotsupportedDB' => "Тя лопас аш кода кунцемс сяс мес '''\$wgUseDatabaseMessages'''лоткафоль.",
-'allmessagesfilter' => 'Пачфтемань лепнень фильтрась:',
-'allmessagesmodified' => 'Няфтемс аньцек полафтф',
# Thumbnails
'thumbnail-more' => 'Оцюлгофтомс',
@@ -2289,6 +2237,7 @@ $1 сёлкф ни. Мяльце полафтомс латцематнень?',
'tooltip-search-fulltext' => 'Вешендемс тя текссть лопава',
'tooltip-p-logo' => 'Пря лопа',
'tooltip-n-mainpage' => 'Сувак Пря лопас',
+'tooltip-n-mainpage-description' => 'Сашентт Пря лопас',
'tooltip-n-portal' => 'Проектть колга, мезьса лездомс, коста мумс мезь',
'tooltip-n-currentevents' => 'Ванк мезе молихть тя пингста',
'tooltip-n-recentchanges' => 'Мекольце Викиса полафнематнень лувомась.',
@@ -2334,7 +2283,7 @@ $1 сёлкф ни. Мяльце полафтомс латцематнень?',
# Attribution
'anonymous' => 'Лемфтома {{SITENAME}}-нь {{PLURAL:$1|тиись|тиихне}}',
'siteuser' => '{{SITENAME}}-нь тиись $1',
-'lastmodifiedatby' => 'Тя лопать мекольцеда петнезь $3 $2, $1', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Тя лопать мекольцеда петнезь $3 $2, $1',
'othercontribs' => 'Тиф $1-нь покаманц коряс.',
'others' => 'илят',
'siteusers' => '{{SITENAME}}-нь {{PLURAL:$2|тиись|тиихне}} $1',
@@ -2366,11 +2315,22 @@ $1 сёлкф ни. Мяльце полафтомс латцематнень?',
'mw_math_modern' => 'Пароль тяниень пингонь содама машинатнень вальмаснонды',
'mw_math_mathml' => 'MathML коса ули кода (экспериментокс)',
+# Math errors
+'math_failure' => 'Аф морафтови',
+'math_unknown_error' => 'аф содаф эльбятькс',
+'math_unknown_function' => 'аф содаф функцие',
+'math_lexing_error' => 'лексиконь эльбятькс',
+'math_syntax_error' => 'синтаксонь эльбятькс',
+'math_image_error' => 'PNG форматс сёрматфтомась изь лисев; ватт лац эли аф арафтовсть latex, dvips, gs эди convert',
+'math_bad_tmpdir' => 'Аф сёрматфтови ётконь математик директориес эди директориесь аф тиеви',
+'math_bad_output' => 'Аф сёрматфтови нолдамань математик директориес эди директориесь аф тиеви',
+'math_notexvc' => 'Нолдамань файл texvc изь мув; Ванк math/README ладямать колга.',
+
# Patrolling
'markaspatrolleddiff' => 'Тяштемс кода патрулень варжаф',
'markaspatrolledtext' => 'Тяштемс тя лопать кода патрулень варжаф',
'markedaspatrolled' => 'Тяштьф кода патрулень варжаф',
-'markedaspatrolledtext' => 'Кочкаф илякстоптомась тяштьфоль кода патрулень варжаф.',
+'markedaspatrolledtext' => 'Кочкаф [[:$1]] илякстоптомась тяштьфоль кода патрулень варжаф.',
'rcpatroldisabled' => 'Мекольце полафнематненди патрульсь тевс аф нолдави',
'rcpatroldisabledtext' => 'Мекольце полафнематнень патрульть функциесь тяни тевс аф нолдави.',
'markedaspatrollederror' => 'Аш кода тяштемс кода патрулень варжаф',
@@ -2399,13 +2359,10 @@ $1',
'previousdiff' => 'Сядынгольдень верзиец',
'nextdiff' => 'Од верзиец →',
-# Visual comparison
-'visual-comparison' => 'Няемста ваксс путома',
-
# Media information
'mediawarning' => "'''Инголе кардама''': Тя файлть, улема, пелькс код.
Сонь нолдаманза тон коласак тонь системацень.",
-'imagemaxsize' => 'Оторонзамс архтофкснень лувксонц файл информациень лопава:',
+'imagemaxsize' => "Архтофкснень келеснон оторсна:<br />''(файлонь шарьхкотьфтема лопатненди)''",
'thumbsize' => 'Миниатюронь кувалмоц:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|лопа|лопат}}',
'file-info' => '(файлонь кувалмоц: $1, MIME сортоц: $2)',
@@ -2445,7 +2402,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Келец',
@@ -2572,14 +2529,14 @@ $1',
'exif-unknowndate' => 'Аф содаф шись',
-'exif-orientation-1' => 'Апак полафтт', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Шарфтф горизонталь коряс', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Шарфтф 180° градусс', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Шарфтф вертикаль коряс', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Шарфтф 90° градусс ойхть каршес ди вертикаль коряс', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Шарфтф 90° градусс ойхть коряс', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Шарфтф 90° градусс ойхть коряс ди вертикаль коряс', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Шарфтф 90° градусс ойхть каршес', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Апак полафтт',
+'exif-orientation-2' => 'Шарфтф горизонталь коряс',
+'exif-orientation-3' => 'Шарфтф 180° градусс',
+'exif-orientation-4' => 'Шарфтф вертикаль коряс',
+'exif-orientation-5' => 'Шарфтф 90° градусс ойхть каршес ди вертикаль коряс',
+'exif-orientation-6' => 'Шарфтф 90° градусс ойхть коряс',
+'exif-orientation-7' => 'Шарфтф 90° градусс ойхть коряс ди вертикаль коряс',
+'exif-orientation-8' => 'Шарфтф 90° градусс ойхть каршес',
'exif-planarconfiguration-1' => 'нюрьхкяня форматсь',
'exif-planarconfiguration-2' => 'лапш форматсь',
@@ -2701,7 +2658,7 @@ $1',
'exif-gpsmeasuremode-2' => '2-кърдань ункстама',
'exif-gpsmeasuremode-3' => '3-кърдань ункстама',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Вайгяльбет ойс',
'exif-gpsspeed-m' => 'Милят ойс',
'exif-gpsspeed-n' => 'Сюлмот',
@@ -2849,7 +2806,7 @@ $1',
'duplicate-defaultsort' => 'Инголе мярьгома: Апак полафтт сортонь панжема "$2" апак полафтт сортонь панжема "$1"да вяре.',
# Special:Version
-'version' => 'MediaWiki-ть верзиец', # Not used as normal message but as header for the special page itself
+'version' => 'MediaWiki-ть верзиец',
'version-extensions' => 'Нолдаф тевс келепнематне',
'version-specialpages' => 'Башка тевонь лопат',
'version-parserhooks' => 'Синтакс анализаторонь кярьмодихне',
@@ -2863,7 +2820,7 @@ $1',
'version-skin-extension-functions' => 'Темонь келептема функциесна',
'version-hook-name' => 'Кярьмодинь лемоц',
'version-hook-subscribedby' => 'Сёрматфтсь',
-'version-version' => 'Верзие',
+'version-version' => '(Верзие $1)',
'version-license' => 'Лицензие',
'version-software' => 'Нолдаф програпне',
'version-software-product' => 'Нолдафкс',
diff --git a/languages/messages/MessagesMg.php b/languages/messages/MessagesMg.php
index a7906edc..8a8d1722 100644
--- a/languages/messages/MessagesMg.php
+++ b/languages/messages/MessagesMg.php
@@ -13,9 +13,79 @@
* @author לערי ריינהארט
*/
+$magicWords = array(
+ 'redirect' => array( '0', '#FIHODINANA', '#REDIRECTION', '#REDIRECT' ),
+ 'notoc' => array( '0', '__TSYASIANALAHATRA__', '__AUCUNSOMMAIRE__', '__AUCUNETDM__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__TSYASIANAGALLERY__', '__AUCUNEGALERIE__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__TEREONYLAHATRA__', '__FORCERSOMMAIRE__', '__FORCERTDM__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__LAHATRA__', '__LAHAT__', '__SOMMAIRE__', '__TDM__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__TSYAZOOVAINA__', '__SECTIONNONEDITABLE__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'VOLANA', 'MOISACTUEL', 'MOIS2ACTUEL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'VOLANA1', 'MOIS1ACTUEL', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'ANARAMBOLANA', 'NOMMOISACTUEL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'ANARAMBOLANAGEN', 'ANARANAVOLANA', 'CURRENTMONTHNAME', 'NOMGENMOISACTUEL', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ANARAMBOLANAFOHY', 'ANARANAVOLANAFOHY', 'ABREVMOISACTUEL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'ANDRO', 'JOURACTUEL', 'JOUR1ACTUEL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'ANDRO2', 'JOUR2ACTUEL', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'ANARANANDRO', 'ANARANAANDRO', 'NOMJOURACTUEL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'TAONA', 'ANNEEACTUELLE', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'LERA', 'HORAIREACTUEL', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ORA', 'HEUREACTUELLE', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'VOLANAANTOERANA', 'MOISLOCAL', 'MOIS2LOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'VOLANAANTOERANA1', 'MOIS1LOCAL', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'ANARAMBOLANAANTOERANA', 'NOMMOISLOCAL', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'ANARAMBOLANAANTOERANAGEN', 'NOMGENMOISLOCAL', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ANARAMBOLANAANTOERANAFOHY', 'ABREVMOISLOCAL', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'ANDROANTOERANA', 'JOURLOCAL', 'JOUR1LOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ANDROANTOERANA2', 'JOUR2LOCAL', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'ANARANANDROANTOERANA', 'NOMJOURLOCAL', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'TAONAANTOERANA', 'ANNEELOCALE', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'LERAANTOERANA', 'HORAIRELOCAL', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ORAANTOERANA', 'HEURELOCALE', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'ISAPEJY', 'NOMBREPAGES', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ISALAHATSORATRA', 'NOMBREARTICLES', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ISARAKITRA', 'NOMBREFICHIERS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ISAMPIKAMBANA', 'NOMBREUTILISATEURS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'ISAMPIKAMBANAMANOVA', 'NOMBREUTILISATEURSACTIFS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'ISAFANOVANA', 'NOMBREMODIFS', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'ISATOPIMASO', 'NOMBREVUES', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'ANARAMPEJY', 'ANARANAPEJY', 'NOMPAGE', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'ANARAMPEJYX', 'ANARANAPEJYX', 'NOMPAGEX', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ANARANTSEHATRA', 'ANARANASEHATRA', 'ESPACENOMMAGE', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ANARANTSEHATRAX', 'ANARANASEHATRAX', 'ESPACENOMMAGEX', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'PEJINDRESAKA', 'PEJYRESAKA', 'DINIKA', 'ESPACEDISCUSSION', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'PEJINDRESAKAX', 'PEJYRESAKAX', 'DINIKAX', 'ESPACEDISCUSSIONX', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'TOERANALAHATSORATRA', 'ESPACESUJET', 'ESPACEARTICLE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'TOERANNYLAHATSORATRA', 'ESPACESUJETX', 'ESPACEARTICLEX', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'ANARAMPEJYFENO', 'ANARANAPEJYFENO', 'NOMPAGECOMPLET', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'ANARAMPEJYFENOX', 'ANARANAPEJYFENOX', 'NOMPAGECOMPLETX', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'ANARANAZANAPEJY', 'ANARANJANAPEJY', 'NOMSOUSPAGE', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'ANARANJANAPEJYX', 'ANARANAZANAPEJYX', 'NOMSOUSPAGEX', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'ANARANAFOTOPEJY', 'ANARAMPOTOPEJY', 'NOMBASEDEPAGE', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'ANARANAFOTOPEJYE', 'ANARAMPOTOPEJYE', 'NOMBASEDEPAGEX', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'ANARAMPEJINDRESAKA', 'ANARANAPEJINDRESAKA', 'NOMPAGEDISCUSSION', 'TALKPAGENAME' ),
+ 'img_right' => array( '1', 'ankavanana', 'droite', 'right' ),
+ 'img_left' => array( '1', 'ankavia', 'gauche', 'left' ),
+ 'img_none' => array( '1', 'tsymisy', 'néant', 'neant', 'none' ),
+ 'img_center' => array( '1', 'ampivoany', 'anivony', 'centré', 'center', 'centre' ),
+ 'img_page' => array( '1', 'pejy $1', 'page=$1', 'page $1' ),
+ 'img_border' => array( '1', 'sisiny', 'bordure', 'border' ),
+ 'img_top' => array( '1', 'ambony', 'haut', 'top' ),
+ 'img_middle' => array( '1', 'anivo', 'milieu', 'middle' ),
+ 'img_bottom' => array( '1', 'ambany', 'bas', 'bottom' ),
+ 'currentweek' => array( '1', 'HERINANDRO', 'SEMAINEACTUELLE', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'ALAHADY', 'JDSACTUEL', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'HERINANDROANTOERANA', 'SEMAINELOCALE', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'ALAHADYANTOERANA', 'JDSLOCAL', 'LOCALDOW' ),
+ 'fullurl' => array( '0', 'URLREHETRA:', 'URLCOMPLETE:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URLREHETRAX:', 'URLCOMPLETEX:', 'FULLURLE:' ),
+ 'displaytitle' => array( '1', 'ASEHOLOHATENY', 'AFFICHERTITRE', 'DISPLAYTITLE' ),
+);
+
$fallback = 'fr';
$namespaceNames = array(
+ NS_MEDIA => 'Rakitra',
NS_SPECIAL => 'Manokana',
NS_TALK => 'Dinika',
NS_USER => 'Mpikambana',
@@ -27,13 +97,14 @@ $namespaceNames = array(
NS_MEDIAWIKI_TALK => 'Dinika_amin\'ny_MediaWiki',
NS_TEMPLATE => 'Endrika',
NS_TEMPLATE_TALK => 'Dinika_amin\'ny_endrika',
- NS_HELP => 'Fanampiana',
- NS_HELP_TALK => 'Dinika_amin\'ny_fanampiana',
+ NS_HELP => 'Fanoroana',
+ NS_HELP_TALK => 'Dinika_amin\'ny_fanoroana',
NS_CATEGORY => 'Sokajy',
NS_CATEGORY_TALK => 'Dinika_amin\'ny_sokajy',
);
$namespaceAliases = array(
+ 'Média' => NS_MEDIA,
'Discuter' => NS_TALK,
'Utilisateur' => NS_USER,
'Discussion_Utilisateur' => NS_USER_TALK,
@@ -44,10 +115,29 @@ $namespaceAliases = array(
'Discussion_Modèle' => NS_TEMPLATE_TALK,
'Aide' => NS_HELP,
'Discussion_Aide' => NS_HELP_TALK,
+ 'Fanampiana' => NS_HELP,
+ 'Dinika_amin\'ny_fanampiana' => NS_HELP_TALK,
'Catégorie' => NS_CATEGORY,
'Discussion_Catégorie' => NS_CATEGORY_TALK,
);
+$specialPageAliases = array(
+ 'Recentchanges' => array( 'Fanovàna farany' ),
+ 'Randompage' => array( 'Kisendra' ),
+ 'Uncategorizedpages' => array( 'Pejy tsy misy sokajy' ),
+ 'Uncategorizedcategories' => array( 'Sokajy tsy misy sokajy' ),
+ 'Uncategorizedimages' => array( 'Sary tsy misy sokajy', 'Rakitra tsy misy sokajy' ),
+ 'Uncategorizedtemplates' => array( 'Endrika tsy misy sokajy' ),
+ 'Unusedcategories' => array( 'Sokajy tsy miasa' ),
+ 'Unusedimages' => array( 'Rakitra tsy miasa' ),
+ 'Wantedpages' => array( 'Pejy tadiavina' ),
+ 'Wantedcategories' => array( 'Sokajy tadiavina' ),
+ 'Wantedfiles' => array( 'Rakitra tadiavina' ),
+ 'Wantedtemplates' => array( 'Endrika tadiavina' ),
+ 'Mostcategories' => array( 'Pejy be sokajy indrindra' ),
+ 'Mostrevisions' => array( 'Pejy be mpanova indrindra' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Tsipiho ny rohy:',
@@ -79,6 +169,7 @@ $messages = array(
'tog-enotifminoredits' => 'Andefaso imailaka aho na dia fanovana madinika ihany aza',
'tog-enotifrevealaddr' => "Asehoy ny adiresy imailako any amin'ny imailaka fampilazana",
'tog-shownumberswatching' => "Asehoy ny isan'ny mpikambana manara-maso ny pejy",
+'tog-oldsig' => 'Topi-maso ny sonia :',
'tog-fancysig' => 'Sonia tsotra (tsy misy rohy)',
'tog-externaleditor' => 'Fitaovana hafa no hanaovana ny fanovana pejy',
'tog-externaldiff' => 'Fitaovana hafa no hanaovana ny fampitahana',
@@ -100,6 +191,13 @@ $messages = array(
'underline-never' => 'Tsy tsipihina mihitsy',
'underline-default' => "Izay itiavan'ny navigateur azy",
+# Font style option in Special:Preferences
+'editfont-style' => "soratra ampiasain'ny toerana isoratana :",
+'editfont-default' => "Izay itiavan'ny navigateur azy",
+'editfont-monospace' => 'soratra monospacé',
+'editfont-sansserif' => 'soratra tsy misy tongony (sans-serif)',
+'editfont-serif' => 'soratra misy tongony (serif)',
+
# Dates
'sunday' => 'Alahady',
'monday' => 'Alatsinainy',
@@ -159,7 +257,7 @@ $messages = array(
'category-media-header' => "Fisy multimedia anatin'ny sokajy « $1 »",
'category-empty' => "''Tsy misy pejy, sokajy ambany na sary ao anatin'io sokajy io''",
'hidden-categories' => '{{PLURAL:$1|Sokajy misitrika|Sokajy misitrika}} $1',
-'hidden-category-category' => 'Sokajy misitrika', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Sokajy misitrika',
'category-subcat-count' => '{{PLURAL:$2|Ity sokajy ity|Ireo sokajy ireo}} dia manana {{PLURAL:$1|zana-tsokajy|zana-tsokajy}} $1 . Ny taotaliny dia $2',
'category-subcat-count-limited' => 'Misy zana-tsokajy $1 ity sokajy ity.{{PLURAL:}}',
'category-article-count' => "{{PLURAL:$2|Misy pejy $1 ity sokajy ity|Misy pejy $1 ity sokajy ity}}. Pejy $2 no anatin'ity sokajy ity",
@@ -167,6 +265,8 @@ $messages = array(
'category-file-count' => 'Misy rakitra $1 (tontaliny : rakitra $2) ireo ity sokajy ity{{PLURAL:}}',
'category-file-count-limited' => "Anatin'ity sokajy ity ireo rakitra ireo. ($1 no aseho) {{PLURAL:}}",
'listingcontinuesabbrev' => ' manaraka.',
+'index-category' => 'pejy voasokajy',
+'noindex-category' => 'Pejy tsy voasikajy',
'mainpagetext' => "'''Tafajoro soa aman-tsara ny rindrankajy Wiki.'''",
'mainpagedocfooter' => "Vangio ny [http://meta.wikimedia.org/wiki/Aide:Contenu Fanoroana ho an'ny mpampiasa] ra te hitady fanoroana momba ny fampiasan'ity rindrankajy ity.
@@ -177,10 +277,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ momba ny MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Resaka momba ny fizaràn'ny MediaWiki]",
-'about' => 'Mombamomba',
-'article' => "Votoatin'ny pejy",
-'newwindow' => '(sokafy anaty takila hafa)',
-'cancel' => 'Aoka ihany',
+'about' => 'Mombamomba',
+'article' => "Votoatin'ny pejy",
+'newwindow' => '(sokafy anaty takila hafa)',
+'cancel' => 'Aoka ihany',
+'moredotdotdot' => 'Tohiny...',
+'mypage' => 'Pejiko',
+'mytalk' => 'Ny diniko',
+'anontalk' => "Dinika amin'io adiresy IP io",
+'navigation' => 'Fikarohana',
+'and' => '&#32;sy',
+
+# Cologne Blue skin
'qbfind' => 'Tadiavo',
'qbbrowse' => 'Tadiavo',
'qbedit' => 'Hanova',
@@ -188,15 +296,35 @@ $messages = array(
'qbpageinfo' => 'Pejy fanoroana',
'qbmyoptions' => 'Pejiko',
'qbspecialpages' => 'Pejy manokana',
-'moredotdotdot' => 'Tohiny...',
-'mypage' => 'Pejiko',
-'mytalk' => 'Ny diniko',
-'anontalk' => "Dinika amin'io adiresy IP io",
-'navigation' => 'Fikarohana',
-'and' => '&#32;sy',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata :',
+'faq' => 'FAQ (fanontaniana)',
+'faqpage' => 'Project:Fanontaniana',
+
+# Vector skin
+'vector-action-addsection' => 'hanampy foto-kevitra (topic)',
+'vector-action-delete' => 'fafao',
+'vector-action-move' => 'afindrao',
+'vector-action-protect' => 'arovy',
+'vector-action-undelete' => 'avereno',
+'vector-action-unprotect' => 'esory ny fiarovana',
+'vector-namespace-category' => 'sokajy',
+'vector-namespace-help' => 'fanoroana',
+'vector-namespace-image' => 'rakitra',
+'vector-namespace-main' => 'pejy',
+'vector-namespace-media' => 'Pejy Media',
+'vector-namespace-mediawiki' => 'hafatra',
+'vector-namespace-project' => 'tetikasa',
+'vector-namespace-special' => 'pejy manokana',
+'vector-namespace-talk' => 'resaka',
+'vector-namespace-template' => 'endrika',
+'vector-namespace-user' => 'pejy ny mpikambana',
+'vector-view-create' => 'amboary',
+'vector-view-edit' => 'Hanova',
+'vector-view-history' => 'Hijery ny tantara',
+'vector-view-view' => 'Hamaky',
+'vector-view-viewsource' => 'hijery fango',
+'actions' => 'Tao',
+'namespaces' => 'Namespace',
+'variants' => "Ny ''skin'' Voasintona",
'errorpagetitle' => 'Tsy fetezana',
'returnto' => "Hiverina any amin'ny $1.",
@@ -246,18 +374,22 @@ $messages = array(
'otherlanguages' => "Amin'ny tenim-pirenena hafa",
'redirectedfrom' => "(tonga teto avy amin'ny $1)",
'redirectpagesub' => 'Pejy fihodinana',
-'lastmodifiedat' => "Voaova farany tamin'ny $1 amin'ny $2 ity pejy ity<br />", # $1 date, $2 time
+'lastmodifiedat' => "Voaova farany tamin'ny $1 amin'ny $2 ity pejy ity<br />",
'viewcount' => 'voastsidika in-$1 ity pejy ity.{{PLURAL:}}',
'protectedpage' => 'Pejy voaaro',
'jumpto' => 'Hanketo:',
'jumptonavigation' => 'Fikarohana',
'jumptosearch' => 'karohy',
+'view-pool-error' => 'Azafady, be asa ny lohamilina ankehitriny.
+Betsaka loatra ny mpikambana mitady hijery ity pejy ity.
+Miandrasa kely, dia avereno.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Mombamomba ny {{SITENAME}}',
'aboutpage' => 'Project:Mombamomba',
'copyright' => '$1 no mifehy ny fampiasana ny votoatin-kevitra eto.',
-'copyrightpagename' => 'lisansa {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Ny vaovao',
'currentevents-url' => 'Project:Vaovao',
@@ -265,8 +397,6 @@ $messages = array(
'disclaimerpage' => 'Project:General disclaimer',
'edithelp' => 'Fanoroana',
'edithelppage' => 'Help:Endritsoratra',
-'faq' => 'FAQ (fanontaniana)',
-'faqpage' => 'Project:Fanontaniana',
'helppage' => 'Help:Fanoroana',
'mainpage' => 'Fandraisana',
'mainpage-description' => 'Fandraisana',
@@ -344,10 +474,6 @@ Ny fangatahana farany nalefa dia :
« $1 »
tao amin'ny asa « $2 ».
Ny banky angona dia namerina ny tsi-fetezana « $3 : $4 »",
-'noconnect' => "Miala tsiny! Misedra olana kely ny wiki ankehitriny, ary tsy afaka mifandray amin'ny serveur banky angona <br />
-$1",
-'nodb' => "Tsy afaka misafidy/mijery ny ''base de données'' $1",
-'cachederror' => "Version an-tahirin'ny pejy tadiavina ity pejy ity, mety efa tsy à jour intsony ity intsony io pejy io.",
'laggedslavemode' => 'Fampitandremana: Mety ho tsy nisy fanovana vao haingana angamba io pejy io',
'readonly' => 'Mihidy ny banky angona',
'enterlockreason' => 'Manomeza antony hanidiana ny pejy, ahitana ny fotoana tokony hamahana izay fihidiana izay',
@@ -367,6 +493,8 @@ Lazao any amin'ny [[Special:ListUsers/sysop|mpandrindra]] io olana io ary aza a
Mihidy ho azy aloha ny banky angona mandra-pahatratran'ny serveur andevo ny tompony",
'internalerror' => "Tsy fetezana anatin'ny rindrankajy",
'internalerror_info' => 'Tsy fetezana ety anatiny : $1',
+'fileappenderrorread' => 'Tsy afaka mamaky « $1 » nandritry ny fampidirana.',
+'fileappenderror' => "Tsy afaka ampiana amin'ny « $2 » « $1 ».",
'filecopyerror' => 'Tsy voadika ho "$2" ilay rakitra"$1".',
'filerenameerror' => 'Tsy voaova ho "$2" ny anaran\'ilay rakitra "$1".',
'filedeleteerror' => 'Tsy voafafa ilay rakitra "$1".',
@@ -376,7 +504,8 @@ Mihidy ho azy aloha ny banky angona mandra-pahatratran'ny serveur andevo ny tomp
'unexpected' => 'Tsy nandrasana: "$1"="$2".',
'formerror' => 'Tsy mety: tsy lasa ny fisy',
'badarticleerror' => "Tsy azo atao eto amin'ity pejy ity io asa io.",
-'cannotdelete' => 'Tsy voafafa ny pejy na rakitra nomenao. (Angamba efa nisy olon-kafa namafa ilay izy.)',
+'cannotdelete' => "Tsy afaka fafàna ny pejy na ny rakitra « $1 ».
+Mety efa nataon'ny hafa angamba ny famafàna.",
'badtitle' => 'Tsy mety ny lohateny',
'badtitletext' => "Tsy mety io anaram-pejy nangatahinao io na tsy misy n'inon'inona na rohy dikan-teny vahiny misy diso tsipelina.",
'perfcached' => 'Ireto angona ireto dia nalaina tao anaty cache koa mety ho efa lany daty.:',
@@ -411,7 +540,6 @@ Ny antony napetraka dia : « ''$2'' ».",
'virus-unknownscanner' => 'Tsy fantatra io Antivirus io :',
# Login and logout pages
-'logouttitle' => 'Fivoahana',
'logouttext' => "'''Tafavoaka ianao ankehitriny.'''
Mbola afaka mampiasa ny {{SITENAME}} ianao na dia ef anivoaka aza, na afaka [[Special:UserLogin|miverina miditra]] ianao ambanin'ny anaranao na anaram-pikambana hafa.
@@ -420,7 +548,6 @@ Fantaro fa ny endriky ny pejy sasany dia mety mitovy amin'ny endrika nahitanao a
Voaforona soa aman-tsara ny kaontinao.
Aza hadino ny manova ny [[Special:Preferences|safidinao]]',
-'loginpagetitle' => 'Fidirana',
'yourname' => 'Solonanarana',
'yourpassword' => 'Tenimiafina',
'yourpasswordagain' => 'Avereno ampidirina eto ny tenimiafina',
@@ -432,6 +559,7 @@ Aza hadino ny manova ny [[Special:Preferences|safidinao]]',
'loginprompt' => "
Mila manaiky cookies ianao raha te hiditra amin'ny {{SITENAME}}.",
'userlogin' => 'Hiditra na hanokatra kaonty',
+'userloginnocreate' => 'hiditra',
'logout' => 'Hiala',
'userlogout' => 'Hiala',
'notloggedin' => 'Tsy tafiditra',
@@ -443,26 +571,8 @@ Mila manaiky cookies ianao raha te hiditra amin'ny {{SITENAME}}.",
'createaccountmail' => "amin'ny imailaka",
'badretype' => 'Tsy mitovy ny tenimiafina nampidirinao.',
'userexists' => 'Efa misy mampiasa io solonanarana io. Mifidiana solonanarana hafa azafady.',
-'youremail' => 'Imailaka:',
-'username' => 'Solonanarana:',
-'uid' => "Laharan'ny mpikambana:",
-'prefs-memberingroups' => "mpikamban'ny gropy{{PLURAL:}} $1 :",
-'yourrealname' => 'Tena anarana marina:',
-'yourlanguage' => 'Tenim-pirenena:',
-'yournick' => 'Anaram-bositra:',
-'badsig' => 'Tsy mety io sonia io; hamarino ny kialo HTML.',
-'badsiglength' => "Lava loatra ny sonianao. {{PLURAL:$1||}}
-Tokony mba manana lohavy ambanimbany kokoa non'ny $1",
-'yourgender' => 'lahy/vavy :',
-'gender-unknown' => 'Tsy voalaza',
-'gender-male' => 'Lehilahy',
-'gender-female' => 'Vehivavy',
-'prefs-help-gender' => "Ankifidy : Ampiasaina mba hifanaraka amin'ny lahi-vavy. Ho sarababem-bahoaka io fampahalalàna io.",
-'email' => 'Imailaka',
-'prefs-help-realname' => "Anarana marina (afaka tsy fenoina): raha fenoinao ity dia hampiasaina hanomezana anao tambin'ny asa izay efainao eto.",
'loginerror' => "Tsy fetezana teo amin'ny fidirana",
-'prefs-help-email' => "Imailaka (afaka tsy asiana): Hahafahan'ny olona mifandray aminao amin'ny alalan'ny pejinao manokana na ny pejin-dresakao, nefa tsy aseho azy ny anaranao.",
-'prefs-help-email-required' => 'Ilaina ny adiresy imailaka',
+'createaccounterror' => 'Tsy afaka mamorona kaonty : $1',
'nocookiesnew' => "Voaforona ny kaonty-mpikambana, fa tsy niditra ianao. Mampiasa ny cookies ny {{SITENAME}} ho an'ny fampidirana fa tsy navelanao ampiasaina ny cookies. Omeo alalana miditra eo amin'ny mpikajinao ny cookies, ary midira ato miaraka amin'ny solonanarana sy ny tenimiafina.",
'nocookieslogin' => 'Mampiasa cookies i {{SITENAME}} nefa ny navigateur-nao tsy manaiky cookies. Ovay mba hanaiky cookies aloha ny navigateur-nao vao afaka manandrana miditra ato indray.',
'noname' => 'Tsy nanome solonanarana mety ianao.',
@@ -471,10 +581,12 @@ Tokony mba manana lohavy ambanimbany kokoa non'ny $1",
'nosuchuser' => 'Tsy misy mpikambana manana izany solonanarana "$1" izany. Hamarino ny tsipelina na manokafa kaonty vaovao.',
'nosuchusershort' => 'Tsy misy mpikambana hoe "<nowiki>$1</nowiki>". Hamarino ny tsipelina.',
'nouserspecified' => 'Tsy maintsy mampiditra solonanarana ianao.',
+'login-userblocked' => 'Voasakana io mpikambana io. Fidirana tsy nahazoan-dalana.',
'wrongpassword' => 'Diso ny tenimiafina. Manandrama tenimiafina hafa azafady.',
'wrongpasswordempty' => 'Tsy nampiditra tenimiafina ianao, azafady mba avereno indray.',
-'passwordtooshort' => 'Fohy loatra io tenimiafina io.
+'passwordtooshort' => '{{PLURAL:}}Fohy loatra io tenimiafina io.
Farafahakeliny tokony hisy litera $1 ny tenimiafina.',
+'password-name-match' => 'Tsy maintsy samihafa ny solonanaranao sy ny tenimiafinao tompoko.',
'mailmypassword' => 'Alefaso imailaka ny tenimiafiko',
'passwordremindertitle' => "Fampatsiahivana tenimiafina avy amin'i {{SITENAME}}",
'passwordremindertext' => 'Nisy olona, izay ianao ihany angamba, avy tamin\'ny adiresy IP $1, nangataka
@@ -488,6 +600,7 @@ Raha olon-kafa io nangataka io, na tadidinao ihany ny tenimiafinao taloha ka
tsy irinao hovana intsony, dia fafao fotsiny ity hafatra ity dia ilay
tenimiafina taloha ihany no ampiasao.{{PLURAL:}}',
'noemail' => 'Tsy nanome adiresy imailaka i "$1".',
+'noemailcreate' => 'Tsy maintsy misy ny adiresy imailaka ho atsofokao',
'passwordsent' => 'Nandefasana tenimiafina vaovao any amin\'ny adiresy imailak\'i "$1".
Azafady midira rehefa voarainao io imailaka io.',
'blocked-mailpassword' => "Voasakana ny adiresy IP-nao, nesorina aminao ny asa ''password recovery'' mba tsy hanararaotra.",
@@ -511,9 +624,11 @@ Azafady manomeza adiresy voasoratra tsara na avelao ho banga io toerana io.',
Tokony miditra na manokatra kaonty ianao ary manova ny tenimiafinao dian-izao.
Aza mijery ity hafatra ity ianao raha voaforona an-tsipetezana ilay kaonty io.",
+'usernamehasherror' => 'Ny anaram-pikambana dia tsy afaka manana soratra fanaovana hash.',
'login-throttled' => "Im-betsaka loatra ianao no nanandrana tenimiafina teo amin'io kaonty io.
Andraso kely ary andramo indray.",
'loginlanguagelabel' => 'fiteny : $1',
+'suspicious-userlogout' => "Ny fangataham-pialanao dia tsy nekena satria ohatry ny nalfan'ny mpizahan-tsehatra simba izy na kasy ny proxy.",
# Password reset dialog
'resetpass' => 'Hanova ny tenimiafina',
@@ -524,17 +639,13 @@ Andraso kely ary andramo indray.",
'retypenew' => 'Avereno ampidirina ny tenimiafina vaovao:',
'resetpass_submit' => 'Ovay ny tenimiafina ary midira',
'resetpass_success' => 'Voasolo soa aman-tsara ny tenimiafinao ! Mampiditranao izao ankehitriny...',
-'resetpass_bad_temporary' => 'Tsy izy ny tenimiafina miserana. Mety efa nanova tenimiafina angamba ianao, na nanontany tenimifina miserana.',
'resetpass_forbidden' => 'Tsy afaka ovaina ny tenimiafina',
'resetpass-no-info' => "Tsy maintsy miditra/nanokatra kaonty ato ianao mba hafaka hitsidika n'ity pejy ity.",
'resetpass-submit-loggedin' => 'Ovay ny tenimiafina',
+'resetpass-submit-cancel' => 'Aoka ihany',
'resetpass-wrong-oldpass' => 'Tsy izy ny tenimiafinao (tsotra na miserana)
Mety efa nanova tenimiafina na nanontany tenimiafina miserana angamba ianao.',
'resetpass-temp-password' => 'Tenimiafina miserana :',
-'resetpass-log' => 'Tatitr’asa momban’ny famerenana tenimiafina',
-'resetpass-logtext' => "Ity ny lisitra ny mpikambana nosoloin'ny mpandrindra tenimiafina.",
-'resetpass-logentry' => "nanova ny tenimiafin'i $1",
-'resetpass-comment' => 'Antony momba ny famerenana tenimiafina :',
# Edit page toolbar
'bold_sample' => 'Soratra matavy',
@@ -610,7 +721,6 @@ Soraty ireo fanoroana ireo anatin'ny fangatahana ataonao.",
'blockededitsource' => "Eo amban'ny votoatin'ny '''nosoratanao''' nataonao tamin'ny '''$1'''",
'whitelistedittitle' => 'Midira/Misorata anarana',
'whitelistedittext' => "Mila $1 aloha ianao vao afaka manova/mamorona pejy eto amin'ity wiki ity.",
-'confirmedittitle' => 'Ilaina no mi-valide ny adiresy imailaka ra te hanova pejy',
'confirmedittext' => "Tsy maintsy marihina ny adiresy imailakao aloha no manova pejy.
Ampidiro sy Checkeo ny adiresy imailakao amin'ny [[Special:Preferences|safidinao]].",
'nosuchsectiontitle' => 'Tsy nahita ilay fizarana',
@@ -629,10 +739,17 @@ Raha toa moa ka tsy nieritreritra ny hamorona ity takelaka ity ianao dia miveren
'noarticletext' => "'''Tsy mbola nisy namorona io lahatsoratra io.
Azonao atao ny [[Special:Search/{{PAGENAME}}||Tadiavo ny momba ny {{PAGENAME}}]].'''
* '''[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} Na forony eto ny lahatsoratra momba ny {{PAGENAME}}]'''.",
+'noarticletext-nopermission' => "Mbola tsy misy lahatsoratra ao amin'io pejy io.
+
+Azonao atao ny [[Special:Search/{{PAGENAME}}|Mikaroka momba ny lohatenin'io pejy io]] ao amin'ny pejy hafa, mitady <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} anatin'ny tatitr'asa mikasika azy]</span>",
'userpage-userdoesnotexist' => 'Mbola tsy nisoratra anarana ato i « $1 ». Marino raha tena hamorona ity pejy ity ianao.',
+'userpage-userdoesnotexist-view' => 'Tsy nisoratra anarana ato i « $1 ».',
+'blocked-notice-logextract' => "Ankehitriny ity mpikambana ity dia voasakana.
+Ny fampidirana faran'ny tatitr'asa ny fanakanam-pikambana dia naseho teo ambany ho an'ny fampahalalàna :",
'clearyourcache' => "'''Fanamarihana:''' Aorian'ny fanovana, dia mila mamafa ny cache ianao vao mahita ny fiovana.
'''Mozilla / Firefox / Safari:''' Tsindrio ny ''Shift'' rehefa manindry ''Reload'', na tsindrio ''Ctrl-Shift-R'' (''Cmd-Shift-R'' ho an'ny Apple Mac); '''IE:''' tsindrio ''Ctrl'' rehefa manindry ''Refresh'', na tsindrio ''Ctrl-F5''; '''Konqueror:''': tsindrio fotsiny ny bokotra ''Reload'' na ''F5''; ny mpampiasa '''Opera''' angamba dia tokony hamafa ny cache-ny ao amin'ny ''Tools&rarr;Preferences''.",
-'usercssjsyoucanpreview' => "'''Fika:''' Ampiasao ny bokotra 'Tsipalotra' mialoha ny hitehirizanao ny CSS/JS-nao vaovao.",
+'usercssyoucanpreview' => "'''Fika:''' Ampiasao ny bokotra 'Tsipalotra' mialoha ny hitehirizanao ny CSS-nao vaovao.",
+'userjsyoucanpreview' => "'''Fika:''' Ampiasao ny bokotra 'Tsipalotra' mialoha ny hitehirizanao ny JS-nao vaovao.",
'usercsspreview' => "'''Tadidio fa mijery tsipalotra ny fivoakan'ny takilan'angalinao (CSS) vaovao fotsiny ihany ianao fa tsy mbola voatahiry akory izy io!'''",
'userjspreview' => "
'''Tadidio fa manandrana/mijery tsipalotra ny fivoakan'ny JavaScript-nao fotsiny ihany ianao fa tsy mbola voatahiry akory izy io!'''",
@@ -687,25 +804,26 @@ Ny mpandrindra nanidy ny banky angona dia nanome ny antony : <br />$1",
'semiprotectedpagewarning' => "'''Naoty''' : Voaaro ity pejy ity, ny mpikambana nanokatra kaonty tato ihany no afaka manova azy.",
'cascadeprotectedwarning' => "'''Tandremo : ''' Voaaro ity pejy ity ary ny mpandrindra ihany no afaka manova azy. Natao ny fiarovana satria ao anatina pejy voaaro mampiasa ny « fiarovana an-driana (protection en cascade) » {{PLURAL:$1}}",
'titleprotectedwarning' => "'''TANDREMO''' : Ny mpikambana manana [[Special:ListGroupRights|alàlana manokana]] ihany no afaka manova ity pejy ity.",
-'templatesused' => "endrika miasa eto amin'ity pejy ity:",
-'templatesusedpreview' => "endrika miasa anatin'ity topi-maso ity :",
-'templatesusedsection' => "Endrika miasa anatin'ity fizaràna ity :",
+'templatesused' => "endrika{{PLURAL:$1||}} miasa eto amin'ity pejy ity:",
+'templatesusedpreview' => "endrika{{PLURAL:$1||}} ampiasaina anatin'ity topi-maso ity :",
+'templatesusedsection' => "Endrika miasa anatin'ity{{PLURAL:$1||}} fizaràna ity :",
'template-protected' => '(voaaro)',
'template-semiprotected' => '(voaaro an-tàpany)',
'hiddencategories' => '{{PLURAL:$1|anaty sokajy|anaty sokajy}} nasitrika $1 ity pejy ity',
'nocreatetitle' => 'Voafetra ny famoronana pejy',
'nocreatetext' => " Voafetra ihany ny fahafahana mamorona pejy eto amin'ity sehatra ity. Ny pejy efa misy no azonao ovaina, na [[Special:UserLogin|midira na mamoròna kaonty]].",
'nocreate-loggedin' => 'Tsy mahazo ataonao no manamboatra pejy vao.',
+'sectioneditnotsupported-title' => 'Fanovana fizarana tsy zaka',
+'sectioneditnotsupported-text' => "Ny fanovana fizarana iray dia tsy zaka ao anatin'ity pejy fanovana ity.",
'permissionserrors' => 'Tsy azonao atao',
'permissionserrorstext' => 'Tsy afaka manao ilay aza nangatahanao ianao noho ny antony {{PLURAL:$1||maro}} manaraka :',
'permissionserrorstext-withaction' => '{{PLURAL:$1|Tsy manana alalàna ianao|Tsy manana alalàna ianao}} $2. Io ny antony ($2):',
-'recreate-deleted-warn' => "'''fampitandremana : mamerina mamorona pejy efa voafafa ianao.'''
+'recreate-moveddeleted-warn' => "'''Tandremo''' : Mamerina pejy efa voafafa ianareo.''''
-Manontania tena raha tsara averina amboarina ity pejy ity.
-Ho hitanao eo ambany ny tatitr'asa momban'ny famafana mikasika ity pejy ity :",
-'deleted-notice' => "Voafafa ity pejy ity.
-Naseho eo ambany ny tatitr'asa momban'ny famafana pejy ho an'ny tsiahy sy ho an'ny fampahalalana.",
-'deletelog-fulllog' => 'Hijery ny log',
+Marino raha tsara tohizana ny fanovana eto amin'ity pejy ity. Ny tatitr'asa momban'ny famafana pejy sy ny fanovan-toerana dia eo ambany :",
+'moveddeleted-notice' => "Voafafa ity pejy ity.
+Eo ambany eo any tatitr'asa momban'ny famindran-toerana sy ny famafana ho an'ny antsipirihany.",
+'log-fulllog' => 'Hijery ny tatitr’asa (log)',
'edit-hook-aborted' => 'Tsy nety ny fanovàna
Tsy nanome antony',
'edit-gone-missing' => 'Tsy afaka natao update ilay pejy.
@@ -727,6 +845,7 @@ Ao aorian'ny fivelarana, mety namoaka valy lava loatra angamba izy, ary tsy namp
'post-expand-template-argument-category' => 'Pejy misy parametatra endrika hadino',
'parser-template-loop-warning' => 'endrika vono hita tao : [[$1]]',
'parser-template-recursion-depth-warning' => "Fetran'ny halalin'ny fiantsoana endrika voahoatra ($1).",
+'language-converter-depth-warning' => "Mihoatra ny fetran-kalalin'ny mpamadika teny ($1)",
# "Undo" feature
'undo-success' => 'Ho voafafa io fanovana io. Marino tsara ny fanovana eo ambany, ary tehirizo rehefa vita.',
@@ -745,7 +864,8 @@ Ao aorian'ny fivelarana, mety namoaka valy lava loatra angamba izy, ary tsy namp
'nohistory' => 'Tsy manana tantaram-panovana io pejy io.',
'currentrev' => 'Votoatiny ankehitriny',
'currentrev-asof' => "Endrika tamin'ity $1 ity",
-'revisionasof' => "Èndriny tamin'ny $1",
+'revisionasof' => "Endrik'io pejy io tamin'ny $1",
+'revision-info' => "Santiônan'i $1 nataon'i $2",
'previousrevision' => '←Votoatiny antitra kokoa',
'nextrevision' => 'Fanovana vao haingana→',
'currentrevisionlink' => 'Endrika-ny ankehitriny',
@@ -759,7 +879,7 @@ Fifidianana ny votoatiny hampitahaina: mariho eo anilan'ny versions hampitahaina
Tadidio: (ank) = fampitahana amin'ny votoatin'ny pejy ankehitriny,
(farany) = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
'history-fieldset-title' => 'Karohy ny tantara',
-'deletedrev' => '[voafafa]',
+'history-show-deleted' => 'Voafafa ihany',
'histfirst' => 'Ny vao indrindra',
'histlast' => 'Antintra indrindra',
'historysize' => '($1 {{PLURAL:$1|oktety|oktety}})',
@@ -768,60 +888,103 @@ Tadidio: (ank) = fampitahana amin'ny votoatin'ny pejy ankehitriny,
# Revision feed
'history-feed-title' => 'Tantara ny fanovàna',
'history-feed-description' => "Tantaran'ity pejy ity teto amin'ity wiki ity.",
-'history-feed-item-nocomment' => "$1 hatramin'ny $2", # user at time
+'history-feed-item-nocomment' => "$1 tamin'ny $2",
'history-feed-empty' => "Tsy misy ny pejy notadiavina.
Mety efa voafafa na voafindra angamba izy.
Mitadiava amin'ny '''[[Special:Search|fiasàna fitadiavina]]''' mba hitady ny pejy misy fifandraisana.",
# Revision deletion
-'rev-deleted-comment' => '(hafatra nesorina)',
-'rev-deleted-user' => '(solonanarana nesorina)',
-'rev-deleted-event' => '(nesorina ny fampidirana)',
-'rev-deleted-text-permission' => "'''Voafafa''' ny santiônan'ity pejy ity.
-Mety any amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} tatitr'asa momban'ny famafàna pejy] angamba ny antsipirihany.",
-'rev-deleted-no-diff' => "Tsy azonao jerena io fampitahana io satria misy santiôna iray '''voafafa''' ao aminy.
-Mety any amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} tatitr'asa momban'ny famafàna pejy] angamba ny antsipirihany.",
-'rev-delundel' => 'jereo/asitriho',
-'revisiondelete' => 'Hamafa/hamerina revision',
-'revdelete-nooldid-title' => 'tsy izy ny version tanjona',
-'revdelete-nooldid-text' => 'Tsy nilaza ny santiôna hokendrena ianao, tsy misy izy, na santiôna ankehitriny io.',
-'revdelete-nologtype-title' => "Tsy misy tatitr'asa nampidirana/nomena",
-'revdelete-nologtype-text' => "Tsy nosafidianao akory ny tatitr'asa anaovana io tao io ianao",
-'revdelete-toomanytargets-title' => 'Be loatra ny tanjona',
-'revdelete-nologid-title' => "Misy diso ny tatitr'asa nampidiranao",
-'revdelete-nologid-text' => "Tsy nosafidianao akory ny tatitr'asa anaovana io tao io ianao, na tsy misy ilay zavatra notenenina",
-'revdelete-selected' => "'''{{PLURAL:$2|Votoatiny nosafidiana|Votoatiny nosafidiana}}n'i '''[[:$1]]''' :'''",
-'logdelete-selected' => "'''{{PLURAL:$1||}}Tatitr'asa voafidy :'''",
-'revdelete-suppress-text' => "Ny famafàna pejy dia ampiasaina rehefa :
+'rev-deleted-comment' => '(hafatra nesorina)',
+'rev-deleted-user' => '(solonanarana nesorina)',
+'rev-deleted-event' => '(nesorina ny fampidirana)',
+'rev-deleted-user-contribs' => "[anaram-pikambana na adiresy IP voafafa - fanovana nasitria teo amin'ny fandraisan'anjara modification]",
+'rev-deleted-text-permission' => "'''Voafafa''' ny santiônan'ity pejy ity.
+Mety misy ny antsipirihany angamba ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} tatitr'asa momban'ny famafàna pejy].",
+'rev-deleted-text-unhide' => "Ity santiônan'ity pejy ity dia '''voafafa'''.
+Hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tatitr'asa momban'ny famafana] ny antsipirihany.
+Noho ianao mpandrindra mbola afaka [$1 mijery ilay santiôna] ianao raha tianao.",
+'rev-deleted-no-diff' => "Tsy afaka mijery anio diff io ianao satria misy santôna '''voafafa''' ao aminy.
+Mety any amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} tatitr'asa momban'ny famafàna pejy] ny antsipirihany.",
+'rev-suppressed-no-diff' => "Tsy azo jerenao io diff io satria '''voafafa''' ny iraika amin'ny reviziônany.",
+'rev-deleted-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
+Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tatitr'asa momban'ny famafana].
+Noho ianao mpandrindra, [$1 azonao jerena foana ilay diff] raha tianao.",
+'rev-suppressed-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
+Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tatitr'asa momban'ny famafana].
+Noho ianao mpandrindra, [$1 azonao jerena foana ilay diff] raha tianao.",
+'rev-deleted-diff-view' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
+Ny antsipirihany dia mety hita ao amin'ny
+Noho ianao mpandrindra, azonao jerena foana ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tatitr'asa momban'ny famafana]. raha tianao.",
+'rev-delundel' => 'jereo/asitriho',
+'rev-showdeleted' => 'aseho',
+'revisiondelete' => 'Hamafa/hamerina revision',
+'revdelete-nooldid-title' => 'tsy izy ny version tanjona',
+'revdelete-nooldid-text' => 'Tsy nilaza ny santiôna hokendrena ianao, tsy misy izy, na santiôna ankehitriny io.',
+'revdelete-nologtype-title' => "Tsy misy tatitr'asa nampidirana/nomena",
+'revdelete-nologtype-text' => "Tsy nosafidianao akory ny tatitr'asa anaovana io tao io ianao",
+'revdelete-nologid-title' => "Misy diso ny tatitr'asa nampidiranao",
+'revdelete-nologid-text' => "Tsy nosafidianao akory ny tatitr'asa anaovana io tao io ianao, na tsy misy ilay zavatra notenenina",
+'revdelete-no-file' => 'Tsy misy ilay rakitra hofafàna.',
+'revdelete-show-file-confirm' => "Tapa-kevitra hamafa ny ''revision''-n'i rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
+'revdelete-show-file-submit' => 'Eny',
+'revdelete-selected' => "'''{{PLURAL:$2|Votoatiny nosafidiana|Votoatiny nosafidiana}}n'i '''[[:$1]]''' :'''",
+'logdelete-selected' => "'''{{PLURAL:$1||}}Tatitr'asa voafidy :'''",
+'revdelete-text' => "'''Mbola ao amin'ny tatitr'asa ny santiôna voafafa, fa tsy afaka jeren'ny vahoaka ny lahatsoratra ao aminy.'''
+Afaka mijery ny lahatsoratra nasitrika sy mamerina azy ny mpandrindra hafa ny {{SITENAME}} amin'ny alalan'ity interface ity, raha tsy misy restriction hafa koa.",
+'revdelete-suppress-text' => "Ny famafàna pejy dia ampiasaina rehefa :
* Misy information tsy sarababem-bahoaka tsy metimety
*: ''Misy adiresy nomeraona antso an-tariby, nomeraona sécurité sociale, sns.''",
-'revdelete-legend' => "Ampetraho ny fepetra momban'ny fahitana :",
-'revdelete-hide-text' => "Asitriho ny lahatsoratr'ity version ity",
-'revdelete-hide-name' => 'Asitriho ny asa sy ny tanjona',
-'revdelete-hide-comment' => 'asitriho ny ambangovangony',
-'revdelete-hide-user' => "Asitriho ny solonanaran'ny mpikambana/adiresy IP",
-'revdelete-hide-restricted' => "Fafao ireo votoatiny ireo amin'ny mpiandrindra sy amin'ny mpikambana hafa",
-'revdelete-suppress' => "Manitrika ny votoatiny ho an'ny mpandrindra",
-'revdelete-hide-image' => "asitriho ny votoatin'ilay rakitra",
-'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny santiôna naverina",
-'revdelete-log' => 'Antony :',
-'revdelete-submit' => "Ataovy amin'ny version nosafidiako",
-'revdelete-logentry' => "nanova ny fahitan'ny/i [[$1]]",
-'logdelete-logentry' => "nanova ny fahitan'ny zava-mitranga ny/n'i [[$1]]",
-'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny santiôna.'''",
-'logdelete-success' => "'''Voaova soa aman-tsara ny fisehon'ny tatitr’asa.'''",
-'revdel-restore' => 'Ovay ny fahitàna',
-'pagehist' => "Tantaran'ilay pejy",
-'deletedhist' => 'Tantara voafafa',
-'revdelete-content' => 'votoatiny',
-'revdelete-summary' => "ambangovangon'ny fanovàna",
-'revdelete-uname' => 'anarana mpikambana',
-'revdelete-restricted' => "nametraka fanerena ho an'ny mpandrindra",
-'revdelete-unrestricted' => "fanerena nesorina tamin'ny mpandrindra",
-'revdelete-hid' => 'nanitrika ny $1',
-'revdelete-unhid' => "nanala fanitriana (hoan'(ny)) $1",
-'revdelete-log-message' => "$1 ho an'ny{{PLURAL:$2||}} $2",
-'logdelete-log-message' => "zava-miseho $1 amin'ny $2{{PLURAL:}}",
+'revdelete-legend' => "Ampetraho ny fepetra momban'ny fahitana :",
+'revdelete-hide-text' => "Asitriho ny lahatsoratr'ity version ity",
+'revdelete-hide-image' => "asitriho ny votoatin'ilay rakitra",
+'revdelete-hide-name' => 'Asitriho ny asa sy ny tanjona',
+'revdelete-hide-comment' => 'asitriho ny ambangovangony',
+'revdelete-hide-user' => "Asitriho ny solonanaran'ny mpikambana/adiresy IP",
+'revdelete-hide-restricted' => "Fafao ireo votoatiny ireo amin'ny mpiandrindra sy amin'ny mpikambana hafa",
+'revdelete-radio-same' => '(aza ovaina)',
+'revdelete-radio-set' => 'Eny',
+'revdelete-radio-unset' => 'Tsia',
+'revdelete-suppress' => "Manitrika ny votoatiny ho an'ny mpandrindra",
+'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny santiôna naverina",
+'revdelete-log' => 'Antony :',
+'revdelete-submit' => "Ataovy amin'ny version nosafidiako",
+'revdelete-logentry' => "nanova ny fahitan'ny/i [[$1]]",
+'logdelete-logentry' => "nanova ny fahitan'ny zava-mitranga ny/n'i [[$1]]",
+'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny santiôna.'''",
+'revdelete-failure' => "'''Ny fisehon'ity santiôna ity dia tsy afaka natao update'''
+$1",
+'logdelete-success' => "'''Voaova soa aman-tsara ny fisehon'ny tatitr’asa.'''",
+'logdelete-failure' => "'''Tsy afaka novaina ny fisehon'ny tatitr’asa'''
+$1",
+'revdel-restore' => 'Ovay ny fahitàna',
+'pagehist' => "Tantaran'ilay pejy",
+'deletedhist' => 'Tantara voafafa',
+'revdelete-content' => 'votoatiny',
+'revdelete-summary' => "ambangovangon'ny fanovàna",
+'revdelete-uname' => 'anarana mpikambana',
+'revdelete-restricted' => "nametraka fanerena ho an'ny mpandrindra",
+'revdelete-unrestricted' => "fanerena nesorina tamin'ny mpandrindra",
+'revdelete-hid' => 'nanitrika ny $1',
+'revdelete-unhid' => "nanala fanitriana (hoan'(ny)) $1",
+'revdelete-log-message' => "$1 ho an'ny{{PLURAL:$2||}} $2",
+'logdelete-log-message' => "zava-miseho $1 amin'ny $2{{PLURAL:}}",
+'revdelete-hide-current' => "Tsi-fetezana tamin'ny zavatra voadaty tamin'ny $1 tamin'ny $2 : io ny reviziôna ankehitriny.
+Tsy azo fafana izy.",
+'revdelete-show-no-access' => "Tsi-fetazana teo am-panehoana ny zavatra voadaty tamin'ny $1 tamin'ny $2 : izy io dia mitondra ny marika « voafetra ».
+Tsy azo jerenao io.",
+'revdelete-modify-no-access' => "Tsi-fetezana teo am-panovana ny zavatra voadaty tamin'ny $1 tamin'ny $2 : izy io dia mitondra ny marika « voafetra ». Tsy azonao jerena io.",
+'revdelete-modify-missing' => "Tsi-fetezana teo am-panovana ny zavatra miaraka amin'ny marika ID $1 : tsy ao amin'ny banky angona izy !",
+'revdelete-no-change' => "'''Tandremo :''' ny zavatra voadaty tamin'ny $1 tamin'ny $2 dia efa manana ny parametatry ny fisehoana nangatahana.",
+'revdelete-concurrent-change' => "Tsi-fetezana teo am-panovana ny zavatra voadaty tamin'ny $1 tamin'ny $2 : ny satany dia voaovan' olon-kafa tamin'ianao nanova azy.
+Jereo ny tatitr'asa.",
+'revdelete-only-restricted' => "Tsi-fetezana teo am-panitrihana ny zavatra voadaty tamin'ny $1 tamin'ny $2 : tsy azonao fafana ireo zavatra ireo amin'ny mpandrindra raha tsy misafidy option famafana.",
+'revdelete-reason-dropdown' => '* Antom-pamafana matetika miasa
+** Tsi-fanajana ny Copyright
+** Fampahalalana tsy tokony apetraka eo',
+'revdelete-otherreason' => 'Antony hafa / antony miampy :',
+'revdelete-reasonotherlist' => 'Antony hafa',
+'revdelete-edit-reasonlist' => "Hanova ny anton'ny famafàna",
+'revdelete-offender' => 'Mpanao ilay reviziôna :',
# Suppression log
'suppressionlog' => 'tatitr’asa momban’ny famafana pejy',
@@ -860,49 +1023,13 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
'mergelogpagetext' => 'Ity ny lisitry ny fanambarana ny tantaram-pejy vao haingana',
# Diffs
-'history-title' => "Tantara ny endrik'i « $1 »",
-'difference' => "(Fahasamihafan'ny pejy)",
-'lineno' => 'Andalana $1:',
-'compareselectedversions' => 'Ampitahao ireo version voafidy',
-'visualcomparison' => 'fampitahana ara-maso',
-'wikicodecomparison' => "fampitahan'ny Wikitext",
-'editundo' => 'esory',
-'diff-multi' => '{{PLURAL:}}(Reviziôna anelanelany nasitrika $1)',
-'diff-movedto' => "novàna toerana tany amin'ny $1",
-'diff-styleadded' => 'fomba $1 nasiana',
-'diff-added' => 'nasiana $1',
-'diff-changedto' => 'novàna ho $1',
-'diff-movedoutof' => "nakisaka any ivelan'i $1",
-'diff-styleremoved' => 'nesorina ny fomba $1',
-'diff-removed' => 'nesorina/niala $1',
-'diff-changedfrom' => 'novaina hatry ny $1',
-'diff-src' => 'fango/fiavina',
-'diff-width' => 'halalaka',
-'diff-height' => 'haabo',
-'diff-p' => 'paragrafy',
-'diff-blockquote' => "'''fitanisàna'''",
-'diff-h1' => "'''lohateny (sokajy faha 1)'''",
-'diff-h2' => "'''lohateny (sokajy faha 2)'''",
-'diff-h3' => "'''lohateny (sokajy faha 3)'''",
-'diff-h4' => "'''lohateny (sokajy faha 4)'''",
-'diff-h5' => "'''lohateny (sokajy faha 5)'''",
-'diff-div' => "'''fizaràna'''",
-'diff-ul' => "'''lisitra tsy nalaminana'''",
-'diff-ol' => "'''lisitra milamina'''",
-'diff-table' => "'''tabilao'''",
-'diff-tbody' => "'''votoatina tabilao'''",
-'diff-tr' => "'''andalan-dohavy'''",
-'diff-td' => "'''sela'''",
-'diff-th' => "'''andoha'''",
-'diff-br' => "'''fanapahana'''",
-'diff-hr' => "'''fitsipika marindrano'''",
-'diff-code' => "'''blaokina kaodina mpikajy'''",
-'diff-input' => "'''fampidiran-tsoratra'''",
-'diff-form' => "'''fomulaire'''",
-'diff-img' => "'''sary'''",
-'diff-a' => "'''rohy'''",
-'diff-i' => "'''mandry'''",
-'diff-b' => "'''matavy'''",
+'history-title' => "Tantara ny endrik'i « $1 »",
+'difference' => "(Fahasamihafan'ny pejy)",
+'lineno' => 'Andalana $1:',
+'compareselectedversions' => 'Ampitahao ireo version voafidy',
+'showhideselectedversions' => 'Asehoy/asitriho ny santiôna nofidiana',
+'editundo' => 'esory',
+'diff-multi' => '{{PLURAL:}}(Reviziôna anelanelany nasitrika $1)',
# Search results
'searchresults' => 'Valim-pikarohana',
@@ -910,28 +1037,25 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
'searchresulttext' => "Jereo ny [[{{MediaWiki:Helppage}}|fanazavana fanampiny momba ny fikarohana eto amin'ny {{SITENAME}}]].",
'searchsubtitle' => "nitady lohatsoratra « '''[[:$1]]''' » ianao ([[Special:Prefixindex/$1|ny pejy rehetra manomboka amin'ny « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ny pejy rehetra manana rohy amin'ny « $1 »]])",
'searchsubtitleinvalid' => "Nitady « '''$1''' » ianao",
-'noexactmatch' => "'''Tsy misy pejy manana lohateny « $1 » ato.''' Afaka [[:$1|Amboarinao io pejy io]].",
-'noexactmatch-nocreate' => "''Tsy misy pejy milohateny « $1 ».'''",
'toomanymatches' => "Betsaka loatra ny isan'ny mitovy naverina, mametraha fangatahana hafa.",
'titlematches' => "Mifanitsy amin'ny lohatenin'ny lahatsoratra",
'notitlematches' => 'Tsy nahitana lohateny mifanaraka',
'textmatches' => "Mifanitsy amin'ny votoatin'ny pejy",
'notextmatches' => 'Tsy nahitana votoatim-pejy mifanaraka',
-'prevn' => '$1 taloha',
-'nextn' => '$1 manaraka',
+'prevn' => '{{PLURAL:$1|$1}} taloha',
+'nextn' => '{{PLURAL:$1|$1}} manaraka',
'prevn-title' => 'Valim-pikarohana taloha $1{{PLURAL:}}',
'nextn-title' => 'Valim-pikarohana manaraka $1{{PLURAL:}}',
'shown-title' => 'Aseho valiny $1 isaky ny pejy iray{{PLURAL:}}',
-'viewprevnext' => 'Hijery ($1) ($2) ($3).',
+'viewprevnext' => 'Hijery ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Safidy mikasika ny fitadiavana',
'searchmenu-exists' => "'''Misy pejy mitondra anarana « [[:$1]] » eto amin'ity wiki ity'''",
'searchmenu-new' => "'''Hanamboatra ny pejy « [[:$1|$1]] » eto amin'ity wiki ity !'''",
'searchhelp-url' => 'Help:Fanoroana',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Hitady pejy manomboka amin'io tovona io]]",
-'searchprofile-articles' => 'Pages de contenu',
-'searchprofile-articles-and-proj' => 'Pejy votoatiny sy tetikasa',
-'searchprofile-project' => "Pejin'ny tetikasa",
-'searchprofile-images' => 'Rakitra',
+'searchprofile-articles' => 'Pejy misy votoatiny',
+'searchprofile-project' => 'Pejy fanampiana sy pejy tetikasa',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Izy Rehetra',
'searchprofile-advanced' => 'Fikarohana antsipirihany',
'searchprofile-articles-tooltip' => "Hikaroka ao amin'ny $1",
@@ -939,8 +1063,6 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
'searchprofile-images-tooltip' => 'Hikaroka rakitra multimedia',
'searchprofile-everything-tooltip' => "Hitady eraky ny tranonkala (miaraka amin'ny pejin-dresaka)",
'searchprofile-advanced-tooltip' => "Hitady ny anaran-tsehatra ho an'ny fikarohana",
-'prefs-search-nsdefault' => 'Fikarohana mampiasa ny anaran-tsehatra tsipalotra:',
-'prefs-search-nscustom' => "Hikaroka amin'ny fampiasana anaran-tsehatra natokana :",
'search-result-size' => '$1 ({{PLURAL:$2|teny|teny}} $2)',
'search-result-score' => 'Fifanarahana : $1%',
'search-redirect' => "(redirect avy amin'ny/amin'i $1)",
@@ -953,11 +1075,11 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
'search-mwsuggest-disabled' => 'tsy misy hevitra',
'search-relatedarticle' => 'voadinika',
'mwsuggest-disable' => 'Aza atao ny toro-hevitra AJAX',
+'searcheverything-enable' => "Hitady anatin'ny anaran-tsehatra rehetra:",
'searchrelated' => 'voadinika',
'searchall' => 'rehetra',
'showingresults' => "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
'showingresultsnum' => 'Omeo ny valiny miisa <b>$3</b> manomboka ny #<b>$2</b>.{{PLURAL:||}}',
-'showingresultstotal' => "Fampisehon'ny {{PLURAL:$4|vokany|vokany}} '''$1''' – $2''' amin'ny '''$3'''",
'nonefound' => "'''Fanamarihana''': ny mahatonga ny fikarohana tsy hahita vokany matetika dia ny
fampiasanao teny miasa matetika toy ny \"izay\" sy ny \"tsy\",
na ny fanomezanao teny mihoatra ny iray (ny pejy ahitana ny teny rehetra hokarohina
@@ -968,92 +1090,127 @@ ihany no miseho amin'ny vokatry ny karoka).",
'powersearch-ns' => "Hitady anatin'ny anaran-tsehatra :",
'powersearch-redir' => 'Ampiseho ny redirect',
'powersearch-field' => 'Hitady',
+'powersearch-togglelabel' => 'Marihana:',
+'powersearch-toggleall' => 'Rehetra',
+'powersearch-togglenone' => 'Tsy misy',
'search-external' => 'Hikaroka any ivelany',
'searchdisabled' => "Tsy nalefa ny karoka eto amin'i {{SITENAME}}. Afaka mampiasa an'i Google aloha ianao mandra-paha. Nefa fantaro fa mety ho efa lany daty ny valiny omeny.",
+# Quickbar
+'qbsettings' => 'Tsipika fiasàna',
+'qbsettings-none' => 'Tsy misy',
+'qbsettings-fixedleft' => 'Ankavia',
+'qbsettings-fixedright' => 'Ankavanana',
+'qbsettings-floatingleft' => 'Mitsingevaheva any ankavanana',
+'qbsettings-floatingright' => 'Mitsigevaheva any ankavanana',
+
# Preferences page
-'preferences' => 'Ny momba anao',
-'mypreferences' => 'Ny safidiko',
-'prefs-edits' => 'isa ny fanovàna :',
-'prefsnologin' => 'Tsy tafiditra',
-'prefsnologintext' => '[[Special:UserLogin|Midira]] aloha izay vao manova ny mombamomba anao.',
-'prefsreset' => "Naverina avy amin'ny santiôna voatahiry ny safidy.",
-'qbsettings' => 'Tsipika fiasàna',
-'qbsettings-none' => 'Tsy misy',
-'qbsettings-fixedleft' => 'Ankavia',
-'qbsettings-fixedright' => 'Ankavanana',
-'qbsettings-floatingleft' => 'Mitsingevaheva any ankavanana',
-'qbsettings-floatingright' => 'Mitsigevaheva any ankavanana',
-'changepassword' => 'Hanova tenimiafina',
-'skin' => 'Endrika',
-'skin-preview' => 'Tsipalotra',
-'math' => 'Math',
-'dateformat' => 'endriky ny daty',
-'datedefault' => 'Tsy misy safidy',
-'datetime' => 'Daty sy ora',
-'math_failure' => 'Tsy nety ny fanodinana ny raikipohy',
-'math_unknown_error' => 'tsy fahatomombanana tsy hay antony',
-'math_unknown_function' => 'fonction tsy fantatra',
-'math_lexing_error' => 'fahadisoana ara-teny',
-'math_syntax_error' => 'Misy diso ny raikipohy',
-'math_image_error' => 'Tsy voavadika ho PNG; hamarino fa mety voapetraka tsara ny rindrankajy latex, dvips, gs ary convert',
-'math_bad_tmpdir' => "Tsy afaka namorona na nanoratra répertoire vonjimaika ho an'ny matematika",
-'math_bad_output' => "Tsy afaka namorona na nanoratra tao amin'ny répertoire hampiasain'ny asa matematika",
-'math_notexvc' => 'Tsy hita ny rindrankajy texvc; azafady jereo math/README hanamboarana azy.',
-'prefs-personal' => 'Mombamomba anao',
-'prefs-rc' => 'Vao niova',
-'prefs-watchlist' => 'Lisitry ny pejy arahana-maso',
-'prefs-watchlist-days' => "Isa ny andro haseho anatin'ny lisitra ny pejy arahana-maso",
-'prefs-watchlist-days-max' => '(7 andro fara-fahabetsany)',
-'prefs-watchlist-edits' => "Isa ny fanovana aseho eo amin'ny fanaraha-maso navelatra:",
-'prefs-watchlist-edits-max' => '(isa fara-fahabetsany : 1000)',
-'prefs-misc' => 'Hafa',
-'prefs-resetpass' => 'Hanova tenimiafina',
-'saveprefs' => 'Tehirizo',
-'resetprefs' => 'Avereno',
-'restoreprefs' => 'Averina ny reglages taloha',
-'textboxsize' => 'Fanovana',
-'prefs-edit-boxsize' => 'Hangeza ny varavarankely fanovàna',
-'rows' => 'Filaharana :',
-'columns' => 'Tsanganana/Tioba :',
-'searchresultshead' => 'Fikarohana',
-'resultsperpage' => "Isa ny valiny isakin'ny pejy :",
-'contextlines' => "Isa ny andalana isakin'ny valiny :",
-'contextchars' => 'Isa ny litera isaky ny andalana',
-'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
-'recentchangescount' => "Lohateny amin'ny vao niova:",
-'savedprefs' => 'Voatahiry ny mombamomba anao.',
-'timezonelegend' => "Faritr'ora :",
-'timezonetext' => "
-Elanelan'ny ora any aminao sy aty amin'ny seveur (GMT).",
-'localtime' => 'Ora an-toerana',
-'timezoneselect' => 'Faritra ora :',
-'timezoneuseserverdefault' => "Ampiasaina ny tenenin'i Mpikajy",
-'timezoneuseoffset' => 'Hafa (safidio ny faritra)',
-'servertime' => "Oran'ny lohamilina",
-'guesstimezone' => "
+'preferences' => 'Ny momba anao',
+'mypreferences' => 'Ny safidiko',
+'prefs-edits' => 'isa ny fanovàna :',
+'prefsnologin' => 'Tsy tafiditra',
+'prefsnologintext' => '[[Special:UserLogin|Midira]] aloha izay vao manova ny mombamomba anao.',
+'changepassword' => 'Hanova tenimiafina',
+'prefs-skin' => 'Endrika',
+'skin-preview' => 'Tsipalotra',
+'prefs-math' => 'Math',
+'datedefault' => 'Tsy misy safidy',
+'prefs-datetime' => 'Daty sy ora',
+'prefs-personal' => 'Mombamomba anao',
+'prefs-rc' => 'Vao niova',
+'prefs-watchlist' => 'Lisitry ny pejy arahana-maso',
+'prefs-watchlist-days' => "Isa ny andro haseho anatin'ny lisitra ny pejy arahana-maso",
+'prefs-watchlist-days-max' => '(7 andro fara-fahabetsany)',
+'prefs-watchlist-edits' => "Isa ny fanovana aseho eo amin'ny fanaraha-maso navelatra:",
+'prefs-watchlist-edits-max' => '(isa fara-fahabetsany : 1000)',
+'prefs-watchlist-token' => "token ho an'ny lisitry ny pejy arahi-maso:",
+'prefs-misc' => 'Hafa',
+'prefs-resetpass' => 'Hanova tenimiafina',
+'prefs-email' => 'Option ny imailaka',
+'prefs-rendering' => 'Fampisehoana',
+'saveprefs' => 'Tehirizo',
+'resetprefs' => 'Avereno',
+'restoreprefs' => 'Averina ny reglages taloha',
+'prefs-editing' => 'Fanovana',
+'prefs-edit-boxsize' => 'Hangeza ny varavarankely fanovàna',
+'rows' => 'Filaharana :',
+'columns' => 'Tsanganana/Tioba :',
+'searchresultshead' => 'Fikarohana',
+'resultsperpage' => "Isa ny valiny isakin'ny pejy :",
+'contextlines' => "Isa ny andalana isakin'ny valiny :",
+'contextchars' => 'Isa ny litera isaky ny andalana',
+'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
+'recentchangesdays-max' => '($1 andro{{PLURAL:$1||}} fara-faha betsany)',
+'recentchangescount' => "Isan'ny fanovana haseho (tsipalotra) :",
+'prefs-help-recentchangescount' => "Misy ny fanovana farany, ny tantaram-pejy ary ny tatitr'asa.",
+'prefs-help-watchlist-token' => "Ny famenoana ity fampidiran-teny ity amina soramiafina iray dia hamoaka topaka RSS ho an'ny pejy arahinao.
+Afaka mamaky ny lisitry ny pejy arahinao izay olona mahalala io soramiafina io, mifidiana sanda sarotra hita ianao noho izany.
+Ity misy soramiafina navoaka amin'ny fomba kisendra afaka ampiasainao :
+$1",
+'savedprefs' => 'Voatahiry ny mombamomba anao.',
+'timezonelegend' => "Faritr'ora :",
+'localtime' => 'Ora an-toerana',
+'timezoneuseserverdefault' => "Ampiasaina ny tenenin'i Mpikajy",
+'timezoneuseoffset' => 'Hafa (safidio ny faritra)',
+'servertime' => "Oran'ny lohamilina",
+'guesstimezone' => "
Fenoy araka ny datin'ny solosainan'ny mpitsidika",
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Azia',
-'timezoneregion-atlantic' => 'Ranomasimbe Atlantika',
-'timezoneregion-australia' => 'Aostralia',
-'timezoneregion-europe' => 'Eoropa',
-'timezoneregion-indian' => 'Ranomasimbe Indianina',
-'timezoneregion-pacific' => 'Ranomasimbe Pasifika',
-'allowemail' => "Ekeo ny handraisana imailaka avy amin'ny mpikambana hafa",
-'prefs-searchoptions' => 'Option ny fikarohana',
-'prefs-namespaces' => "Toeran'anarana",
-'defaultns' => "Hitady amin'ireo anaran-tsehatra an-tsopalotra :",
-'default' => 'tsipalotra',
-'files' => 'Rakitra',
-'prefs-custom-css' => 'CSS manokana',
-'prefs-custom-js' => 'Javascript manokana',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Azia',
+'timezoneregion-atlantic' => 'Ranomasimbe Atlantika',
+'timezoneregion-australia' => 'Aostralia',
+'timezoneregion-europe' => 'Eoropa',
+'timezoneregion-indian' => 'Ranomasimbe Indianina',
+'timezoneregion-pacific' => 'Ranomasimbe Pasifika',
+'allowemail' => "Ekeo ny handraisana imailaka avy amin'ny mpikambana hafa",
+'prefs-searchoptions' => 'Option ny fikarohana',
+'prefs-namespaces' => "Toeran'anarana",
+'defaultns' => "Fikarohana tsipalotra anatin'ireo anaran-tsehatra ireo :",
+'default' => 'tsipalotra',
+'prefs-files' => 'Rakitra',
+'prefs-custom-css' => 'CSS manokana',
+'prefs-custom-js' => 'Javascript manokana',
+'prefs-reset-intro' => "Azonao ampiasaina ity pejy ity mba hamerina ny safidinao amin'izay safidy tsipalotr'ilay sehatra. Tsy azo averina io.",
+'prefs-emailconfirm-label' => 'Famarinana ny imailaka :',
+'prefs-textboxsize' => "Hangezan'ny varavarankely fanovana",
+'youremail' => 'Imailaka:',
+'username' => 'Solonanarana:',
+'uid' => "Laharan'ny mpikambana:",
+'prefs-memberingroups' => "mpikamban'ny gropy{{PLURAL:}} $1 :",
+'prefs-registration' => 'Daty fidirana :',
+'yourrealname' => 'Tena anarana marina:',
+'yourlanguage' => 'Tenim-pirenena:',
+'yournick' => 'Anaram-bositra:',
+'badsig' => 'Tsy mety io sonia io; hamarino ny kialo HTML.',
+'badsiglength' => "Lava loatra ny sonianao. {{PLURAL:$1||}}
+Tokony mba manana lohavy ambanimbany kokoa non'ny $1",
+'yourgender' => 'lahy/vavy :',
+'gender-unknown' => 'Tsy voalaza',
+'gender-male' => 'Lehilahy',
+'gender-female' => 'Vehivavy',
+'prefs-help-gender' => "Ankifidy : Ampiasaina mba hifanaraka amin'ny lahi-vavy. Ho sarababem-bahoaka io fampahalalàna io.",
+'email' => 'Imailaka',
+'prefs-help-realname' => "Anarana marina (afaka tsy fenoina): raha fenoinao ity dia hampiasaina hanomezana anao tambin'ny asa izay efainao eto.",
+'prefs-help-email' => "Imailaka (afaka tsy asiana): Hahafahan'ny olona mifandray aminao amin'ny alalan'ny pejinao manokana na ny pejin-dresakao, nefa tsy aseho azy ny anaranao.",
+'prefs-help-email-required' => 'Ilaina ny adiresy imailaka',
+'prefs-info' => 'Fampahalalàna fototra',
+'prefs-i18n' => 'Internasiônalizasiôna',
+'prefs-signature' => 'Sonia',
+'prefs-dateformat' => 'Endriky ny daty',
+'prefs-timeoffset' => 'Elanelana ora',
+'prefs-advancedediting' => 'Antsipirihan-tsafidy',
+'prefs-advancedrc' => 'Antsipirihan-tsafidy',
+'prefs-advancedrendering' => 'Antsipirihan-tsafidy',
+'prefs-advancedsearchoptions' => 'Antsipirihan-tsafidy',
+'prefs-advancedwatchlist' => 'Antsipirihan-tsafidy',
+'prefs-display' => 'safidim-tseho',
+'prefs-diffs' => 'Diff',
# User rights
-'userrights' => 'Fandrindràna ny fahazoan-dàlana', # Not used as normal message but as header for the special page itself
+'userrights' => 'Fandrindràna ny fahazoan-dàlana',
'userrights-lookup-user' => 'Handrindra vondrom-pikambana',
'userrights-user-editname' => 'Manomeza solonanarana:',
'editusergroup' => "Hanova satan'ny mpikambana",
@@ -1119,6 +1276,7 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
'right-bigdelete' => 'Mamafa pejy manana tantara be',
'right-deleterevision' => 'Mamafa ny version manokana-na pejy iray',
'right-deletedhistory' => 'Mijery ny tantaram-pejy voafafa fa tsy lahatsorany',
+'right-deletedtext' => "Mijery ny lahatsoratra voafafa sy ny fampitahana anelanelan'ny santiôna voafafa",
'right-browsearchive' => 'Mitady pejy voafafa',
'right-undelete' => 'Mamerina pejy voafafa',
'right-suppressrevision' => "Mandinika sy mamerina ny version asitrika amin'ny mpandrindra",
@@ -1132,6 +1290,8 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
'right-editprotected' => 'Manova ny pejy voaaro (tsy misy fiarovana en cascade)',
'right-editinterface' => 'Manova ny interface ny mpikambana',
'right-editusercssjs' => 'Manova ny rakitra CSS sy JS ny mpikambana hafa',
+'right-editusercss' => 'Manova ny rakitra CSS ny mpikambana hafa',
+'right-edituserjs' => "Manova ny rakitra JS an'ny mpikambana hafa",
'right-rollback' => "Mamafa haingankaingana ny fanovan'ny mpandray anjara farany amina pejy manokana",
'right-markbotedits' => "Manamarika ny fanovana voafafa hoatry ny nataon'ny rôbô.",
'right-noratelimit' => 'Tsy voafetra ny isa',
@@ -1148,6 +1308,8 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
'right-siteadmin' => 'Manidy sy manokatra ny banky angona',
'right-reset-passwords' => "Manova ny tenimiafin'ny mpikambana hafa",
'right-override-export-depth' => "Mamoaka ny pejy miaraka amin'ny zana-pejy hatramin'ny ambaratonga fahadimy",
+'right-versiondetail' => "Mijery ny fampahalalàna momba ny version'ny rindrankajy",
+'right-sendemail' => "Mandefa imailaka any amin'ny mpikambana hafa",
# User rights log
'rightslog' => 'Tatitr’asa momban’ny fanovana satam-pikambana',
@@ -1197,6 +1359,15 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
'recentchanges-legend' => 'Safidy ny fanovàna farany',
'recentchangestext' => "Jereo eto amin'ity pejy ity izay vao niova vao haingana teto amin'ity wiki ity.",
'recentchanges-feed-description' => "Arao ny fanovàna farany amin'ity wiki ity anaty topa",
+'recentchanges-label-legend' => 'Maribolana : $1.',
+'recentchanges-legend-newpage' => '$1 - pejy vaovao',
+'recentchanges-label-newpage' => 'Namorona pejy vaovao io fanovana io',
+'recentchanges-legend-minor' => '$1 - fanovana kely',
+'recentchanges-label-minor' => 'Kely fotsiny ity fanovana ity',
+'recentchanges-legend-bot' => "$1 - fanovana nataon'ny rôbô",
+'recentchanges-label-bot' => "Nataon'ny rôbô ity fanovana ity.",
+'recentchanges-legend-unpatrolled' => '$1 - fanovana mbola tsy nojerena',
+'recentchanges-label-unpatrolled' => 'Ity fanovana ity dia mbola tsy voamarina',
'rcnote' => "!Ity ny {{PLURAL:$1|fanovàna farany|fanovàna farany}} $1 natao nandritra ny <b>$2</b> andro, hatramin'ny $4 tamin'ny ora faha $5.",
'rcnotefrom' => "Ity eto ambany ity ny lisitry ny vao niova manomboka ny <b>$2</b> (hatramin'ny <b>$1</b> no miseho).",
'rclistfrom' => 'Asehoy izay vao niova manomboka ny $1',
@@ -1223,6 +1394,8 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
# Recent changes linked
'recentchangeslinked' => 'Novaina',
+'recentchangeslinked-feed' => 'Novaina',
+'recentchangeslinked-toolbox' => 'Novaina',
'recentchangeslinked-title' => "Fanaraha-maso ny pejy miarak'amin'ny « $1 »",
'recentchangeslinked-noresult' => "Tsy nisy fanovana teo amin'ny pejy voarohy mandritry ny fotoana voafidy.",
'recentchangeslinked-summary' => "Mampiseho ny fanovàna vao haingana ity pejy manokana ity. Voasoratra amin'ny '''sora-matavy''' ny lohaten'ny [[Special:Watchlist|pejy arahinao-maso]].",
@@ -1232,8 +1405,8 @@ Fenoy araka ny datin'ny solosainan'ny mpitsidika",
# Upload
'upload' => 'Handefa rakitra',
'uploadbtn' => 'Alefaso ny rakitra',
-'reupload' => 'Alefaso indray',
'reuploaddesc' => "Miverena any amin'ny fisy fandefasan-drakitra.",
+'upload-tryagain' => "Hanfefa ny fanoritan'ny rakitra novaina",
'uploadnologin' => 'Tsy niditra',
'uploadnologintext' => 'Mila [[Special:UserLogin|misoratra anarana]] aloha vao afaka mandefa rakitra.',
'upload_directory_missing' => "Ny fametrahan-drakitra ampidiran-drakitra ($1) dia tsy misy ary tsy afaka namboarin'ny lohamilin-tranonkala.",
@@ -1263,6 +1436,7 @@ Raha hanisy sary ao anaty pejy, dia mampiasà rohy toy ny iray amin'ireto
'minlength1' => 'Ny anaran-drakitra dia tokony manana litera iray fara-fahakeliny',
'illegalfilename' => 'Misy litera tsy mety amin\'ny lohateny ny anaran\'ilay rakita "$1". Azafady soloy ny anaran\'ny rakitra dia andramo alefa indray.',
'badfilename' => 'Novana ho "$1" ny anaran\'ny rakitra.',
+'filetype-mime-mismatch' => "Ny karazan-drakitra dia tsy miady amin'ny karazana MIME.",
'filetype-badmime' => 'Ny karazan-drakitra MIME « $1 » dia tsy afaka ampidirina.',
'filetype-bad-ie-mime' => "Tsy afaka ampidirina ilay rakitra satria hitan'i Internet Explorer faha « $1 » izy, midika rakitra voarara satria mety mampidi-doza",
'filetype-unwanted-type' => "Karazan-drakitra tsy tiana ny karazan-drakitra '''« .$1 »'''.
@@ -1285,7 +1459,6 @@ Mba hanao azy, tsy maintsy ovainao manokana ilay pejy [[$1|thumb]]",
* Anaran-drakitra ho ampidirina : '''<tt>[[:$1]]</tt>'''
* Anaran-drakitra misy : '''<tt>[[:$2]]</tt>'''
Misafidia anarana hafa.",
-'fileexists-thumb' => "<center>'''Rakitra misy'''</center>",
'fileexists-thumbnail-yes' => "
Hoatry ny saritapaka ''(vignette)'' ilay sary. [[$1|thumb]]
Marino ilay rakitra '''<tt>[[:$1]]</tt>'''.
@@ -1303,6 +1476,7 @@ Raha mbola te-hampiditra io rakitra io foana ianao, miverena any aoriana ary mam
'file-deleted-duplicate' => "Efa voafafa ny rakitra mitovy amin'ity rakitra ity ([[$1]]). Tokony jerena any amin'ny tantaran'asan'ny famafana io pejy io alohan'ny mampiditra azy indray.",
'successfulupload' => 'Voaray soa aman-tsara ny rakitra',
'uploadwarning' => 'Fampitandremana',
+'uploadwarning-text' => "Ovay ny fanoritan' ilay rakitra ary andrao fanindroany.",
'savefile' => 'Tehirizo ny rakitra',
'uploadedimage' => 'tonga ny rakitra"[[$1]]"',
'overwroteimage' => "nampiditra santiôna vaovao an'ny « [[$1]] »",
@@ -1312,12 +1486,14 @@ Raha mbola te-hampiditra io rakitra io foana ianao, miverena any aoriana ary mam
Marino ny option configuration file_uploads.",
'uploadscripted' => "
Misy kialo HTML na fango script mety tsy ho hain'ny navigateur sasany haseho ity rakitra ity.",
-'uploadcorrupt' => 'Misy tailana ny rakitra na diso ny extension-ny.
-Hamarino tsara aloha dia avereno alefa indray.',
'uploadvirus' => 'Misy viriosy io rakitra io! Toy izao ny antsipirihany: $1',
+'upload-source' => 'Rakitra fango',
'sourcefilename' => "Anaran'ny rakitra:",
+'sourceurl' => 'Loharano URL :',
'destfilename' => "Anaran'ny rakitra:",
'upload-maxfilesize' => 'Fetran-danja avo indrindra : $1',
+'upload-description' => "Visavisa momban' ilay rakitra",
+'upload-options' => 'Safidim-pampidirana',
'watchthisupload' => 'Araho maso ity rakitra ity',
'filewasdeleted' => 'Efa nampidirina tato ary efa voafafa ny rakitra manana io anarana io.
Tokony marina ny $1 aloha ny manao fampidirana vaovao.',
@@ -1327,14 +1503,38 @@ Marino raha tsara tohizana ny fanovana eto amin'ity pejy ity. Ny tantaran'asan'n
'filename-bad-prefix' => "Ny anaran-drakitra ho ampidirinareo dia manomboka amin'ny '''« $1 »''', anarana omena an'ny fakan-tsary elektirônika.
Misafidia anaran-drakitra mambangovango.",
-'upload-proto-error' => 'Protokolina diso',
-'upload-proto-error-text' => "Mila URL manomboka amin'ny <code>http://</code> na <code>ftp://</code> ny fampidiran-drakitra.",
-'upload-file-error' => 'Tsy fetezana anatiny',
-'upload-file-error-text' => "Nisy tsi-fetezana anaty nitranga teo am-panamboarana rakitra miserana teo amin'ny lohamilina. Manorata any amin'ny [[Special:ListUsers/sysop|mpandrindra]].",
-'upload-misc-error' => 'Tsi-fetezana tsy fantatra teo am-pampidiran-drakitra',
-'upload-misc-error-text' => "Nisy tsi-fetezana tsy fantatra nitranga nandritry ny fampidirana.
+'upload-proto-error' => 'Protokolina diso',
+'upload-proto-error-text' => "Mila URL manomboka amin'ny <code>http://</code> na <code>ftp://</code> ny fampidiran-drakitra.",
+'upload-file-error' => 'Tsy fetezana anatiny',
+'upload-file-error-text' => "Nisy tsi-fetezana anaty nitranga teo am-panamboarana rakitra miserana teo amin'ny lohamilina. Manorata any amin'ny [[Special:ListUsers/sysop|mpandrindra]].",
+'upload-misc-error' => 'Tsi-fetezana tsy fantatra teo am-pampidiran-drakitra',
+'upload-misc-error-text' => "Nisy tsi-fetezana tsy fantatra nitranga nandritry ny fampidirana.
Marino raha azo andehanana na misy ny URL ary manandrama indray.
Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/sysop|mpandrindra]].",
+'upload-too-many-redirects' => "Be loatra ny fihodinan'ny URL.",
+'upload-unknown-size' => 'tsy fantatra ny hangeza',
+'upload-http-error' => 'Nisy tsy fetezana HTTP nitranga : $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Tsy azo aleha',
+'img-auth-notindir' => 'Ny lalana nangatahana dia tsy ny fametrahan-drakitra nokaonfigiorena.',
+'img-auth-badtitle' => "Tsy afaka mamorona lohateny azo ampiasaina avy amin'ny « $1 ».",
+'img-auth-nologinnWL' => "Tsy mbola niditra ianao ary tsy ao amin'ny lisitra fotsy « $1 ».",
+'img-auth-nofile' => 'Tsy misy ny rakitra « $1 ».',
+'img-auth-isdir' => "Nanandrana nakao amin'ny fametrahan-drakitra « $1 » ianao.
+Ny fametrahan-drakitra misy rakitra ihany no azo aleha.",
+'img-auth-streaming' => 'Vaky streaming « $1 ».',
+'img-auth-noread' => "Tsy manana ny alalam-pamakiana ilay mpikambana eo amin'ny « $1 ».",
+
+# HTTP errors
+'http-invalid-url' => 'URL diso : $1',
+'http-invalid-scheme' => "Tsy zaka ny URL miaraka amin'ny sema « $1 »",
+'http-request-error' => 'Tsi-fetezana tsy fantam-piaviana teo ampandefasana ilay hataka.',
+'http-read-error' => "Tsy fetezana momban'ny famakiana HTTP.",
+'http-timed-out' => 'Ny fangatahana HTTP dia efa lany daty.',
+'http-curl-error' => 'Tsi-fetezana teo am-pangalana ny URL : $1',
+'http-host-unreachable' => 'URL tsy afaka andehanana',
+'http-bad-status' => 'Nisy tsi-fetezana teo ampandefasana ny hataka HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL tsy afaka andehanana',
@@ -1343,6 +1543,7 @@ Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/syso
'upload-curl-error28-text' => "Ela loatra ilay sehatra vao mamaly. Marino raha an-tranonkala ilay sehatra, miandraza kely ary avereno indray. Afaka mamerina amin'ny ora tsy itsidihana azy matetika ianao.",
'license' => 'Lisansy:',
+'license-header' => "Navoaka tambanin'ny lisansy",
'nolicense' => 'Tsy misy safidy',
'license-nopreview' => '(Topi-maso tsy misy)',
'upload_source_url' => " (URL misy ary azo vangian'ny daholobe)",
@@ -1360,6 +1561,7 @@ Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/syso
'listfiles_count' => 'Version',
# File description page
+'file-anchor-link' => 'Rakitra',
'filehist' => 'Tantara ny rakitra',
'filehist-help' => "Tsindrio eo amin'ny daty/ora iray mba hijery ny toetra n'ilay rakitra tamin'io fotoana io.",
'filehist-deleteall' => 'fafao daholo',
@@ -1368,26 +1570,24 @@ Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/syso
'filehist-current' => 'ankehitriny',
'filehist-datetime' => 'Daty sy ora',
'filehist-thumb' => 'saritapaka',
-'filehist-thumbtext' => "Vignette hoan'ny $1",
+'filehist-thumbtext' => "Vignette ho an'ny $1",
'filehist-nothumb' => 'Tsy misy saritapaka',
'filehist-user' => 'Mpikambana',
'filehist-dimensions' => 'Hangeza',
'filehist-filesize' => "Hangezan'ilay rakitra",
'filehist-comment' => 'resaka',
+'filehist-missing' => 'Tsy ampy rakitra',
'imagelinks' => "Fampiasan'io rakitra io",
'linkstoimage' => "Ireto avy no {{PLURAL:$1|pejy mirohy|pejy mirohy}} ($1) amin'io rakitra io:",
'nolinkstoimage' => "Tsy misy pejy mirohy amin'ity sary ity.",
'morelinkstoimage' => "Hijery [[Special:WhatLinksHere/$1|rohy fanampiny]] makany amin'io rakitra io.",
'redirectstofile' => "Ny rakitra fihodinana manaraka dia mitondra any amin'ity rakitra ity {{PLURAL:$1||}}:",
-'sharedupload' => "Mety ho rakitra itambarana amin'ny tetikasa hafa ny rakitra $1.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Fanazavana fanampiny, jereo $1.',
-'shareduploadwiki-desc' => "Ny fampahalalana aseho eo ambany dia avy amin'ny $1 anaty fametrahan-drakitra iraisana.",
-'shareduploadwiki-linktext' => 'pejy famaritana ny rakitra',
-'noimage' => 'Tsy misy rakitra mitondra io anarana io, afaka $1 ianao.',
-'noimage-linktext' => 'alefaso',
+'sharedupload' => "Mety ho rakitra itambarana amin'ny tetikasa hafa ny rakitra $1.",
+'filepage-nofile' => 'Tsy nahitana rakitra mitondra io anarana io.',
+'filepage-nofile-link' => 'Tsy misy rakitra mitondra io anarana io, fa afaka [$1 mampiditra azy ianao].',
'uploadnewversion-linktext' => "Andefa version vaovao n'ity rakitra ity",
-'shared-repo-from' => "avy amin'ny $1", # $1 is the repository name
-'shared-repo' => 'fametrahan-drakitra iraisana', # used when shared-repo-NAME does not exist
+'shared-repo-from' => "avy amin'ny $1",
+'shared-repo' => 'fametrahan-drakitra iraisana',
# File reversion
'filerevert' => "Hamerinan'i $1",
@@ -1412,6 +1612,7 @@ Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/syso
'filedelete-otherreason' => 'Antony fanampiny :',
'filedelete-reason-otherlist' => 'Antony hafa',
'filedelete-edit-reasonlist' => 'Hanova ny antom-pamafàna',
+'filedelete-maintenance' => 'Ny famafana sy ny famerenan-drakitra dia tsy alefa mandritra ny fikojakojana.',
# MIME search
'mimesearch' => 'Fikarohana MIME',
@@ -1435,7 +1636,7 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
# Random page
'randompage' => 'Takelaka kisendra',
-'randompage-nopages' => "Tsy misy pejy fihodinana eo amin'ny anaran-tsehatra «$1»",
+'randompage-nopages' => "Tsy misy pejy ao amin'ny anarant-tsehatra {{PLURAL:$1}} : $1.",
# Random redirect
'randomredirect' => 'Pejy fihodinana kisendra',
@@ -1447,6 +1648,7 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
'statistics-header-edits' => "Statistikan'ny fanovana",
'statistics-header-views' => "Statistikan'ny tsidika",
'statistics-header-users' => "Statistikan'ny mpikambana",
+'statistics-header-hooks' => 'statistika hafa',
'statistics-articles' => 'Lahatsoratra',
'statistics-pages' => 'Pejy rehetra',
'statistics-pages-desc' => "Pejy rehetra eto amin'ity wiki ity: pejin-dresaka, redirect, sns.",
@@ -1470,8 +1672,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
'brokenredirects' => 'Tapaka ny redirection',
'brokenredirectstext' => "Mitondra makany amin'ny pejy tsy misy ireo fihodinana ireo :",
-'brokenredirects-edit' => '(ovao)',
-'brokenredirects-delete' => '(fafao)',
+'brokenredirects-edit' => 'ovao',
+'brokenredirects-delete' => 'fafao',
'withoutinterwiki' => 'Pejy tsy manan-drohi-piteny',
'withoutinterwiki-summary' => "Ireo pejy ireo dia tsy manan-drohy makany amin'ny fiteny hafa :",
@@ -1584,8 +1786,9 @@ Azonao akelezina ny fahitana azy amin'ny alàlan'ny fisafidianana tatitr'asa ira
'special-categories-sort-abc' => 'famantinana ara-abidy',
# Special:DeletedContributions
-'deletedcontributions' => "Fandraisan'anjara voafafa",
-'deletedcontributions-title' => "fandraisan'anjara voafafa",
+'deletedcontributions' => "Fandraisan'anjara voafafa",
+'deletedcontributions-title' => "fandraisan'anjara voafafa",
+'sp-deletedcontributions-contribs' => "fandraisan'anjara",
# Special:LinkSearch
'linksearch' => 'Rohy ivelany',
@@ -1599,6 +1802,15 @@ Azonao akelezina ny fahitana azy amin'ny alàlan'ny fisafidianana tatitr'asa ira
'listusersfrom' => "Haneho ny mpikambana manomboka amin'ny :",
'listusers-submit' => 'Aseho',
'listusers-noresult' => 'Tsy nahitana mpikambana.',
+'listusers-blocked' => '(voasakana)',
+
+# Special:ActiveUsers
+'activeusers' => 'lisitra ny mpikambana miasa',
+'activeusers-intro' => "Ity ny lisitra ny mpikambana niasa teto tanatin'ny $1 andro farany {{PLURAL:}}",
+'activeusers-from' => 'Aseho ny mpikambana hatry ny :',
+'activeusers-hidebots' => 'Asitriho ny robo',
+'activeusers-hidesysops' => 'Asitriho ny mpandrindra',
+'activeusers-noresult' => 'Tsy nahitana mpikambana.',
# Special:Log/newusers
'newuserlogpage' => 'Tatitr’asan’ny fanokafana kaontim-pikambana',
@@ -1609,15 +1821,17 @@ Azonao akelezina ny fahitana azy amin'ny alàlan'ny fisafidianana tatitr'asa ira
'newuserlog-autocreate-entry' => 'Kaonty namboarina ho azy',
# Special:ListGroupRights
-'listgrouprights' => "Fahefan'ny vondrom-pikambana",
-'listgrouprights-group' => 'Vondrona/Gropy',
-'listgrouprights-rights' => 'Fahefana miaraka aminy',
-'listgrouprights-helppage' => "Help:Fahefan'ny vondrona",
-'listgrouprights-members' => '(lisitra ny mpikambana)',
-'listgrouprights-addgroup' => '{{PLURAL:$2}}Manampy ny mpikambana : $1',
-'listgrouprights-removegroup' => "Manala ny mpikambana {{PLURAL:$2}}amin'ny gropy : $1",
-'listgrouprights-addgroup-all' => 'Manampy mpikambana anaty vondrona rehetra',
-'listgrouprights-removegroup-all' => 'Manala mpikambana anaty gropy rehetra',
+'listgrouprights' => "Fahefan'ny vondrom-pikambana",
+'listgrouprights-group' => 'Vondrona/Gropy',
+'listgrouprights-rights' => 'Fahefana miaraka aminy',
+'listgrouprights-helppage' => "Help:Fahefan'ny vondrona",
+'listgrouprights-members' => '(lisitra ny mpikambana)',
+'listgrouprights-addgroup' => '{{PLURAL:$2}}Manampy ny mpikambana : $1',
+'listgrouprights-removegroup' => "Manala ny mpikambana {{PLURAL:$2}}amin'ny gropy : $1",
+'listgrouprights-addgroup-all' => 'Manampy mpikambana anaty vondrona rehetra',
+'listgrouprights-removegroup-all' => 'Manala mpikambana anaty gropy rehetra',
+'listgrouprights-addgroup-self-all' => "Manampy ny vondrom-pikambana rehetra amin'ny kaontiny",
+'listgrouprights-removegroup-self-all' => "Manala ny vondrom-pikambana rehetra amin'ny kaontiny",
# E-mail user
'mailnologin' => 'Tsy misy adiresy handefasana ny tenimiafina',
@@ -1713,7 +1927,7 @@ Azonao atao koa ny manajanona ny fampahafantarana anao aloha na misy manova aza
--
Raha hanova ny fandehan\'ny momba ny lisitry ny pejy arahi-maso, jereo
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Hevitrao sy fanampiana:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1733,6 +1947,7 @@ ao anatin'ny toby ianao. Azafady mba hamafiso fa irinao tokoa izany,
fantatrao ny vokany ary mahalala ianao fa tsy mifanipaka amin'ny
[[{{MediaWiki:Policy-url}}|fepetra]] izao ataonao izany.",
'actioncomplete' => 'Vita ny asa',
+'actionfailed' => 'Tsy nandeha ny tao',
'deletedtext' => 'Voafafa i "<nowiki>$1</nowiki>".
Jereo amin\'ny $2 ny lisitry ny famafana pejy faramparany.',
'deletedarticle' => 'voafafa "[[$1]]"',
@@ -1749,16 +1964,17 @@ Jereo amin\'ny $2 ny lisitry ny famafana pejy faramparany.',
Ny famafana ireo pejy ireto dia voafetra mba tsy hikorontana {{SITENAME}}.',
# Rollback
-'rollback' => 'Foano indray ilay fanovana',
-'rollback_short' => 'Aza ovaina indray',
-'rollbacklink' => 'foano',
-'rollbackfailed' => "Tsy voaverina amin'ny teo aloha",
-'cantrollback' => "Tsy afaka iverenana ny fanovana; ny mpanova farany ihany no tompon'ny pejy.",
-'alreadyrolled' => "Tsy afaka foanana ny fanovana ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
+'rollback' => 'Foano indray ilay fanovana',
+'rollback_short' => 'Aza ovaina indray',
+'rollbacklink' => 'foano',
+'rollbackfailed' => "Tsy voaverina amin'ny teo aloha",
+'cantrollback' => "Tsy afaka iverenana ny fanovana; ny mpanova farany ihany no tompon'ny pejy.",
+'alreadyrolled' => "Tsy afaka foanana ny fanovana ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fanovana farany.",
-'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".",
+'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]",
+'revertpage-nouser' => "Manala ny fanovana (nataon'ny anaram-pikambana nesorina), miverina any amin'ny santiona farany nataon'i [[User:$1|$1]]",
# Protect
'protectlogpage' => 'Tatitr’asa momban’ny fiarovana',
@@ -1774,7 +1990,7 @@ Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Spec
'protectexpiry' => 'Daty fialàna :',
'protect_expiry_invalid' => 'Tsy mety ilay daty fialàna.',
'protect_expiry_old' => 'Efa lasa ilay daty fialàna.',
-'protect-unchain' => 'Avela ny fahefahana manova anarana',
+'protect-unchain-permissions' => 'Aitatra ny fomba fiarovana',
'protect-text' => "Afaka jerenao na ovainao eto ny politikam-piarovana ny pejy '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Tsy afaka ovanao ny sokajy ny fiarovana raha tsy mahazo manoratra ianao.
Ity ny sokajy ny pejy '''$1''' :",
@@ -1803,7 +2019,7 @@ Ity ny réglage ny pejy '''$1''' :",
** Misy adim-panontana
** Misy olona maro no mandalo eo",
'protect-edit-reasonlist' => 'Hanova ny antony famafana',
-'protect-expiry-options' => '1 ora:1 hour,1 andro:1 day,1 herinandro:1 week,tapa-bolana:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 andro:1 day,1 herinandro:1 week,tapa-bolana:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite',
'restriction-type' => 'Sata ilaina :',
'restriction-level' => 'Sokajy ny fanerena :',
'minimum-size' => 'Hnageza fara-fahakeliny',
@@ -1840,6 +2056,7 @@ pejy vaovao io ny tantaran'ity pejy voafafa ity, fa tsy ho voafafa akory.",
'undelete-nodiff' => 'Tsy nahitana santiôna nialoha.',
'undeletebtn' => 'Avereno!',
'undeletelink' => 'Topi-maso/averina',
+'undeleteviewlink' => 'hijery',
'undeletereset' => 'Hamerina',
'undeleteinvert' => 'Hampifamaidika ny safidy',
'undeletecomment' => 'Dinika :',
@@ -1871,7 +2088,7 @@ $1',
'contributions-title' => "Fandraisan'anjaran'i $1",
'mycontris' => 'Ny nosoratako',
'contribsub2' => "ho an'ny $1 ($2)",
-'nocontribs' => "Tsy misy fanovana mifanaraka amin'ireo critères ireo.", # Optional parameter: $1 is the user name
+'nocontribs' => "Tsy misy fanovana mifanaraka amin'ireo critères ireo.",
'uctop' => ' (loha)',
'month' => "Tamin'ny volana (sy teo aloha) :",
'year' => "Tamin'ny taona (sy teo aloha) :",
@@ -1880,7 +2097,10 @@ $1',
'sp-contributions-newbies-sub' => "Ao amin'ny kaonty vaovao",
'sp-contributions-newbies-title' => "Fandraisan'anjara ao amin'ny kaonty vaovao",
'sp-contributions-blocklog' => 'Tatitr’asa momban’ny fanakanana',
+'sp-contributions-deleted' => "fandraisan'anjara voafafa",
'sp-contributions-logs' => 'tatitr’asa',
+'sp-contributions-talk' => 'Dinika',
+'sp-contributions-userrights' => 'Fandrindràna ny fahazoan-dàlana',
'sp-contributions-search' => "Hikaroka fandraisan'anjara",
'sp-contributions-username' => 'Adiresy IP na anaram-pikambana :',
'sp-contributions-submit' => 'Hikaroka',
@@ -1905,6 +2125,7 @@ $1',
# Block/unblock
'blockip' => 'Sakano ny mpikambana',
+'blockip-title' => 'Hanakana ilay mpikambana',
'blockip-legend' => 'Sakano ny mpikambana',
'blockiptext' => "Ampiasao ity formulaire ity hisakanana ny fahazoan-dàlana hanoratra
ananan'ny adiresy IP iray na solonanarana iray.
@@ -1922,7 +2143,7 @@ Fenoy etsy ambany ny antony manokana (ohatra, mitanisà pejy nosomparana).",
'ipbenableautoblock' => "Manakana ny IP farany ampiasain'ity mpikambana ity, ary ny IP-ny taloha mety ho andramnay",
'ipbsubmit' => 'Sakano',
'ipbother' => 'Hafa',
-'ipboptions' => '2 ora:2 hours,1 andro:1 day,3 andro:3 days,1 herinandro:1 week,2 herinandro:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ora:2 hours,1 andro:1 day,3 andro:3 days,1 herinandro:1 week,2 herinandro:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite',
'ipbotheroption' => 'hafa',
'ipbotherreason' => 'Antony hafa na fanampiny :',
'ipbhidename' => "Hanitrika ny anaram-pikambana anatin'ny fanovana sy anaty lisitra",
@@ -1953,9 +2174,10 @@ mihatra amin'ny adiresy IP na solonanarana iray.",
'ipblocklist-sh-tempblocks' => '$1 ny fanakanana miserana',
'ipblocklist-sh-addressblocks' => '$1 ny fanakanana adiresy IP mitokana',
'ipblocklist-submit' => 'Fikarohana',
+'ipblocklist-localblock' => 'Fanakanana eo an-toerana',
'blocklistline' => '$1, $2 nisakana $3 ($4)',
'infiniteblock' => 'mandrakizay',
-'expiringblock' => "tapitra amin'ny $1",
+'expiringblock' => "tapitra amin'ny $1 $2",
'anononlyblock' => 'mpikambana tsy nisoratra anarana ihany',
'noautoblockblock' => 'fanakanana mande ho azy nesorina',
'createaccountblock' => 'tsy mahazo manokatra kaonty',
@@ -1969,7 +2191,10 @@ mihatra amin'ny adiresy IP na solonanarana iray.",
'contribslink' => "fandraisan'anjara",
'autoblocker' => "Voasakana satria ny adiresy IP-nao dia vao avy nampiasain'i \"[[User:\$1|\$1]]\". Ny anton'ny fanakanana dia: \"'''\$2'''\"",
'blocklogpage' => "Tantaran'ny sakana",
-'blocklog-fulllog' => "Tatitr'asa manontolon'ny fanakanana",
+'blocklog-showlog' => "Efa voasakana ity mpikambana ity taloha.
+Eo ambany ny tatitr'asa momban'ny fanakanana.",
+'blocklog-showsuppresslog' => "Efa voasakana sy voasitrika ity mpikambana ity.
+Eo ambany ny tatitr'asa momban'ny famafana.",
'blocklogentry' => 'voasakana i "[[$1]]" mandritra ny $2 ; antony : $3',
'reblock-logentry' => "dia nanova ny parametatry ny sakan'i $1, tapitra amin'ny $2 ilay sakana ary ''$3'' ny antony",
'blocklogtext' => "Eto no ahitana ny tantaran'ny hetsika momba ny fisakanana sy ny fanafoanana fisakanana mpandray anjara.
@@ -1993,6 +2218,7 @@ Efa voasakana i $1. Tianao ovaina ve ny parametatra ?',
'ipb_cant_unblock' => 'Tsy fetezana : Marik ny fanakanana $1 tsy hita.
Mety efa natao angamba ny fanalana sakana.',
'ip_range_invalid' => 'Tsy mety io IP io.',
+'ip_range_toolarge' => 'Ny fanidiana laharana IP ngeza nohonny /$1 dia tsy azo atao.',
'blockme' => 'Sakano ahy',
'proxyblocker' => 'Mpisakana proxy',
'proxyblocker-disabled' => 'Tsy mandeha io asa io.',
@@ -2057,7 +2283,7 @@ Tokony ataonao rery io asa io (fusion)",
'move-watch' => 'araho-maso ity pejy ity',
'movepagebtn' => 'Afindrao',
'pagemovedsub' => 'Voafindra ny pejy',
-'movepage-moved' => "voafindra tany amin'ny '''$2''' i '''$1'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "voafindra tany amin'ny '''$2''' i '''$1'''",
'movepage-moved-redirect' => "Voaforona ny fihodinana manketo any amin'ny anarany taloha.",
'movepage-moved-noredirect' => "Tsy nasiana fihodinana (redirect) avy any amin'ny anarana taloha.",
'articleexists' => 'Efa misy ny lahatsoratra mitondra io anarana io, na
@@ -2102,6 +2328,8 @@ Efa misy ny lahatsoratra hoe "[[:$1]]". Irinao ve ny hamafana azy mba hahafahana
'imageinvalidfilename' => 'Diso ny anaran-drakitra tanjona',
'fix-double-redirects' => "Hanao update ny fihodinana makany amin'ny lohateny fotony",
'move-leave-redirect' => "Hamela fihodinana makany amin'ny lohateny vaovao",
+'move-over-sharedrepo' => "== Efa misy ilay rakitra ==
+Efa misy ao amina petra-drakitra zaraina ny rakitra [[:$1]]. Raha ovaina anarana ity rakitra ity, dia tsy ho hita eto intsony ny rakitra eo amin'ny petra-drakitra zaraina.",
# Export
'export' => 'Hanondrana pejy',
@@ -2128,14 +2356,17 @@ Etsy amin'ny toerana farany dia afaka mampiasa rohy ihany koa ianao, ohatra [[{{
'export-pagelinks' => "Ataovy ao any pejy mmirohy amin'y halalina :",
# Namespace 8 related
-'allmessages' => 'Hafatry ny rindrankajy',
-'allmessagesname' => 'Anarana',
-'allmessagesdefault' => 'Dikan-teny tany am-boalohany',
-'allmessagescurrent' => 'Dikan-teny miasa ankehitriny',
-'allmessagestext' => "Ity no lisitry ny system messages misy eto amin'ity MediaWiki: namespace ity.",
-'allmessagesnotsupportedDB' => "Tsy mbola mandeha ny '''{{ns:special}}:Allmessages''' satria tsy mandeha koa ny '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'sivana anaran-kafatra :',
-'allmessagesmodified' => 'Dikan-teny efa novaina ihany',
+'allmessages' => 'Hafatry ny rindrankajy',
+'allmessagesname' => 'Anarana',
+'allmessagesdefault' => 'Dikan-teny tany am-boalohany',
+'allmessagescurrent' => 'Dikan-teny miasa ankehitriny',
+'allmessagestext' => "Ity no lisitry ny system messages misy eto amin'ity MediaWiki: namespace ity.",
+'allmessagesnotsupportedDB' => "Tsy mbola mandeha ny '''{{ns:special}}:Allmessages''' satria tsy mandeha koa ny '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-unmodified' => 'Mbola tsy voaova',
+'allmessages-filter-all' => 'Rehetra',
+'allmessages-filter-modified' => 'Voaova',
+'allmessages-language' => 'Tenim-pirenena/fiteny :',
+'allmessages-filter-submit' => 'Alefa',
# Thumbnails
'thumbnail-more' => 'Angedazina',
@@ -2145,6 +2376,8 @@ Etsy amin'ny toerana farany dia afaka mampiasa rohy ihany koa ianao, ohatra [[{{
'djvu_no_xml' => "Tsy afaka alaina ny XML ho an'ny rakitra DjVu",
'thumbnail_invalid_params' => 'Parametatry ny saritapaka tsy mety',
'thumbnail_dest_directory' => 'Tsy mety amboarina ilay fametrahan-drakitra tanjona',
+'thumbnail_image-type' => 'Karazan-drakitra tsy zaka',
+'thumbnail_image-missing' => "Rakitra ohatran'ny tsy ao : $1",
# Special:Import
'import' => 'Hampidi-pejy',
@@ -2209,6 +2442,7 @@ Ampesao ny topi-maso aloha no mihatiry.",
'tooltip-ca-viewsource' => 'Voaaro ilay pejy. Fa afaka itanao ny voatotiny.',
'tooltip-ca-history' => "Ny revision natao tamin'ity pejy ity",
'tooltip-ca-protect' => 'Arovy ity pejy ity',
+'tooltip-ca-unprotect' => "Hanala ny fiarovan'ity pejy ity",
'tooltip-ca-delete' => 'Fafao ity pejy ity',
'tooltip-ca-undelete' => "Hamerina ny fanovana natao tamin'ity pejy ity talohan'ny famafany",
'tooltip-ca-move' => 'Ovay anarana ilay pejy',
@@ -2219,6 +2453,7 @@ Ampesao ny topi-maso aloha no mihatiry.",
'tooltip-search-fulltext' => "Tadiavo ny pejy misy an'io lahatsoratra io.",
'tooltip-p-logo' => 'Renpejy',
'tooltip-n-mainpage' => 'Jereo ny renipejy',
+'tooltip-n-mainpage-description' => 'hitsidika ny renipejy',
'tooltip-n-portal' => 'Ny mombamomba ny tetikasa',
'tooltip-n-currentevents' => "Hidady ny rohy momban'ny vaovao ankehitriny",
'tooltip-n-recentchanges' => "Lisitra ny fanovàna farany efa vita eto amin'ity wiki ity",
@@ -2265,7 +2500,8 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
# Attribution
'anonymous' => "Mpikambana {{PLURAL:}} tsy mitonona anarana eto amin'ny {{SITENAME}}",
'siteuser' => '{{SITENAME}} mpikambana $1',
-'lastmodifiedatby' => "Novain'i $3 tamin'ny $1 tamin'ny $2 ity pejy ity.", # $1 date, $2 time, $3 user
+'anonuser' => "ny mpikambana tsy nisoratra anarana $1 an'i {{SITENAME}}",
+'lastmodifiedatby' => "Novain'i $3 tamin'ny $1 tamin'ny $2 ity pejy ity.",
'othercontribs' => "Mifototra amin'ny asan'i $1.",
'others' => 'hafa',
'siteusers' => '{{SITENAME}} mpikambana $1',
@@ -2296,10 +2532,22 @@ Avelao ho TeX (ho an'ny navigateurs textes)",
Amporisihina ho an'ny navigateur moderna",
'mw_math_mathml' => 'MathML raha mety (andrana ihany)',
+# Math errors
+'math_failure' => 'Tsy nety ny fanodinana ny raikipohy',
+'math_unknown_error' => 'tsy fahatomombanana tsy hay antony',
+'math_unknown_function' => 'fonction tsy fantatra',
+'math_lexing_error' => 'fahadisoana ara-teny',
+'math_syntax_error' => 'Misy diso ny raikipohy',
+'math_image_error' => 'Tsy voavadika ho PNG; hamarino fa mety voapetraka tsara ny rindrankajy latex, dvips, gs ary convert',
+'math_bad_tmpdir' => "Tsy afaka namorona na nanoratra répertoire vonjimaika ho an'ny matematika",
+'math_bad_output' => "Tsy afaka namorona na nanoratra tao amin'ny répertoire hampiasain'ny asa matematika",
+'math_notexvc' => 'Tsy hita ny rindrankajy texvc; azafady jereo math/README hanamboarana azy.',
+
# Patrolling
'markaspatrolleddiff' => 'Marihana ho voamarina',
'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
'markedaspatrolled' => 'Voamarina',
+'markedaspatrolledtext' => "Ny santiôna voafidy an'ny [[:$1]] dia voamarika ho voamarina.",
'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fanovana farany.",
'rcpatroldisabledtext' => 'Tsy atao ankehitriny ny fanamarinana ny pejy novaina farany.',
'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
@@ -2338,6 +2586,7 @@ $1',
'svg-long-desc' => '(rakitra SVG, hangeza $1 × $2 piksely, hangeza : $3)',
'show-big-image' => 'Sary ngeza hangeza',
'show-big-image-thumb' => "<small>Hangezan'ity topi-maso ity : $1 × $2 piksely</small>",
+'file-info-gif-looped' => 'miverimberina',
# Special:NewFiles
'newimages' => 'Tahala misy ny rakitra vaovao',
@@ -2367,7 +2616,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Halalaka',
@@ -2417,7 +2666,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
'exif-gpsmeasuremode-2' => 'Fandrefesana 2D',
'exif-gpsmeasuremode-3' => 'Fandrefesana 3D',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => "Kilometatra isak'ora",
'exif-gpsspeed-m' => "Maily isak'ora",
'exif-gpsspeed-n' => 'Knot',
@@ -2432,6 +2681,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
'watchlistall2' => 'rehetra',
'namespacesall' => 'rehetra',
'monthsall' => 'rehetra',
+'limitall' => 'rehetra',
# E-mail address confirmation
'confirmemail' => 'Fanamarinana adiresy imailaka.',
@@ -2539,12 +2789,13 @@ Andramo ny topi-maso tsotra',
'watchlisttools-raw' => 'Ovay ilay pejy arahako maso amizao',
# Special:Version
-'version' => 'Santiôna', # Not used as normal message but as header for the special page itself
+'version' => 'Santiôna',
'version-extensions' => 'Fanitarana nampidirina',
'version-specialpages' => 'Pejy manokana',
'version-variables' => 'Miova',
'version-other' => 'Samihafa',
'version-hook-subscribedby' => "Nalefan'i",
+'version-version' => '(Santiôna $1)',
'version-license' => 'Lisansy',
'version-software' => 'Rindrankahy voapetraka',
'version-software-product' => 'Vokatra',
@@ -2608,4 +2859,15 @@ Ampidiro ny anaran-drakitra tsy misy ny tovona « {{ns:file}}: »",
'dberr-usegoogle' => "Afaka manandrana mikaroka eo amin'ny Google ianao mandritra izay.",
'dberr-cachederror' => 'Izy io dia dika nasitriky ny pejy nangatahana ary mety efa tola.',
+# HTML forms
+'htmlform-invalid-input' => "Nisy olana nitranga tamin'ny sanda sasany",
+'htmlform-select-badoption' => 'Tsy azo ekena ny sanda nambaranao.',
+'htmlform-int-invalid' => 'Tsy isa manontolo ny sanda nambaranao.',
+'htmlform-float-invalid' => 'Tsy isa ny sanda nambaranao.',
+'htmlform-int-toolow' => "Ny sanda nambaranao dia kely nohon'ny fetra iva indrindra $1",
+'htmlform-int-toohigh' => "Ny sanda nambaranao dia ngeza nohon'ny fetra avo indrindra $1",
+'htmlform-submit' => 'Alefa',
+'htmlform-reset' => 'Hanala ny fanovana',
+'htmlform-selectorother-other' => 'Hafa',
+
);
diff --git a/languages/messages/MessagesMhr.php b/languages/messages/MessagesMhr.php
index 483274f5..195f1270 100644
--- a/languages/messages/MessagesMhr.php
+++ b/languages/messages/MessagesMhr.php
@@ -15,6 +15,41 @@
$fallback = 'ru';
+$namespaceNames = array(
+ NS_SPECIAL => 'Лӱмын ыштыме',
+ NS_TALK => 'Каҥашымаш',
+ NS_USER => 'Пайдаланыше',
+ NS_USER_TALK => 'Пайдаланышын_каҥашымаш',
+ NS_PROJECT_TALK => '$1ын_каҥашымаш',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файлын_каҥашымаш',
+ NS_TEMPLATE => 'Ямдылык',
+ NS_TEMPLATE_TALK => 'Ямдылыкын_каҥашымаш',
+ NS_HELP => 'Полшык',
+ NS_HELP_TALK => 'Полшыкын_каҥашымаш',
+ NS_CATEGORY => 'Категорий',
+ NS_CATEGORY_TALK => 'Категорийын_каҥашымаш',
+);
+
+$namespaceAliases = array(
+ // Fallbacks for all 'ru' namespace aliases
+ 'Медиа' => NS_MEDIA,
+ 'Служебная' => NS_SPECIAL,
+ 'Обсуждение' => NS_TALK,
+ 'Участник' => NS_USER,
+ 'Обсуждение_участника' => NS_USER_TALK,
+ 'Обсуждение_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
+ 'Файл' => NS_FILE,
+ 'Обсуждение_файла' => NS_FILE_TALK,
+ 'Обсуждение_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Шаблон' => NS_TEMPLATE,
+ 'Обсуждение_шаблона' => NS_TEMPLATE_TALK,
+ 'Справка' => NS_HELP,
+ 'Обсуждение_справки' => NS_HELP_TALK,
+ 'Категория' => NS_CATEGORY,
+ 'Обсуждение_категории' => NS_CATEGORY_TALK,
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Кузе кылвер-влакым ӱлычын удыралаш?',
@@ -39,6 +74,7 @@ $messages = array(
'tog-nocache' => 'Лаштыкым кешироватлымым чараш',
'tog-enotifwatchlistpages' => 'Мыйын эскерыме лӱмер гыч лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
'tog-enotifusertalkpages' => 'Мыйын каҥашымаш лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
+'tog-oldsig' => 'Кидпалын ончылгоч ончымаш:',
'tog-showjumplinks' => '"Куснаш …" ешартыш кылверым чӱкташ',
'tog-watchlisthideown' => 'Эскерыме лӱмер гыч мыйын тӧрлатымаш-влакым ончыкташ огыл',
'tog-watchlisthidebots' => 'Эскерыме лӱмер гыч бот-влакын тӧрлатымым ончыкташ огыл',
@@ -108,27 +144,55 @@ $messages = array(
'category_header' => '"$1" категорийыште лаштык-влак',
'subcategories' => 'Ӱлылкатегорий-влак',
'hidden-categories' => '{{PLURAL:$1|Шылтыме категорий|Шылтыме категорий-влак}}',
-'hidden-category-category' => 'Шылтымо категорий-влак', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Шылтымо категорий-влак',
'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
'listingcontinuesabbrev' => '(умбакыжым)',
'mainpagetext' => "'''MediaWiki сай шындыме.'''",
-'about' => 'Нерген',
-'article' => 'Возымо лаштык',
-'newwindow' => '(у тӧрзаште почылтеш)',
-'cancel' => 'Чараш',
+'about' => 'Нерген',
+'article' => 'Возымо лаштык',
+'newwindow' => '(у тӧрзаште почылтеш)',
+'cancel' => 'Чараш',
+'moredotdotdot' => 'Рашрак...',
+'mypage' => 'Мыйын лаштык',
+'mytalk' => 'Мыйын каҥашымаш',
+'anontalk' => 'Каҥашымаш тиде IP нерген',
+'navigation' => 'Корнылаш',
+
+# Cologne Blue skin
'qbfind' => 'Муаш',
'qbedit' => 'Тӧрлаташ',
'qbpageoptions' => 'Тиде лаштык',
'qbmyoptions' => 'Мыйын лаштык-влак',
'qbspecialpages' => 'Лӱмын ыштыме лаштык-влак',
-'moredotdotdot' => 'Рашрак...',
-'mypage' => 'Мыйын лаштык',
-'mytalk' => 'Мыйын каҥашымаш',
-'anontalk' => 'Каҥашымаш тиде IP нерген',
-'navigation' => 'Корнылаш',
+
+# Vector skin
+'vector-action-addsection' => 'У ӱжашым тӱҥалаш',
+'vector-action-delete' => 'Шӧраш',
+'vector-action-move' => 'Кусараш',
+'vector-action-protect' => 'Тӧрлатымаш деч аралаш',
+'vector-action-undelete' => 'Шӧрымым пӧртылаш',
+'vector-action-unprotect' => 'Аралаш огыл',
+'vector-namespace-category' => 'Категорий',
+'vector-namespace-help' => 'Полшык',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Лаштык',
+'vector-namespace-media' => 'Медиа-лаштык',
+'vector-namespace-mediawiki' => 'Увертарымаш',
+'vector-namespace-project' => 'Проект нерген',
+'vector-namespace-special' => 'Лӱмын ыштыме лаштык',
+'vector-namespace-talk' => 'Каҥашымаш',
+'vector-namespace-template' => 'Ямдылык',
+'vector-namespace-user' => 'Пайдаланышын лаштыкше',
+'vector-view-create' => 'Ышташ',
+'vector-view-edit' => 'Тӧрлаташ',
+'vector-view-history' => 'Эртымгорным ончалаш',
+'vector-view-view' => 'Лудаш',
+'vector-view-viewsource' => 'Тӱҥалтыш текстым ончалаш',
+'actions' => 'Сомылка-влак',
+'namespaces' => 'Лӱм-влакын кумдык-влак',
'errorpagetitle' => 'Йоҥылыш',
'returnto' => '$1 деке пӧртылаш.',
@@ -171,7 +235,7 @@ $messages = array(
'otherlanguages' => 'Вес йылме дене',
'redirectedfrom' => '(Колтымо $1 гыч)',
'redirectpagesub' => 'Вес вереш колтышо лаштык',
-'lastmodifiedat' => 'Тиде лаштыкым пытартыш гана $2 $1 тӧрлымӧ.', # $1 date, $2 time
+'lastmodifiedat' => 'Тиде лаштыкым пытартыш гана $2 $1 тӧрлымӧ.',
'protectedpage' => 'Тӧрлатымаш деч аралыме лаштык',
'jumpto' => 'Куснаш:',
'jumptonavigation' => 'корнылашыш',
@@ -273,17 +337,6 @@ $messages = array(
'gotaccount' => "Тый регистрацийым эртенат? '''$1'''.",
'gotaccountlink' => 'Шке денет палымым ыште',
'createaccountmail' => 'e-mail дене',
-'youremail' => 'Электрон почто:',
-'username' => 'Пайдаланышын лӱмжӧ:',
-'uid' => 'Пайдаланышын ID-же:',
-'prefs-memberingroups' => '{{PLURAL:$1|Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
-'yourrealname' => 'Чын лӱмжӧ:',
-'yourlanguage' => 'Йылме:',
-'yournick' => 'Кидпале:',
-'gender-male' => 'Пӧръеҥ',
-'gender-female' => 'Ӱдырамаш',
-'email' => 'Электрон почто',
-'prefs-help-email' => 'Электрон почтын адресшым ончыктыде кертат, адакшым тудо моло ушнышо-влаклан тыйын лаштык гоч тый денет кылым кучаш йӧным ышта, тыгодымак нунылан палыдыме кодеш.',
'nosuchuser' => '"$1" лӱман пайдаланыше уке.
Пайдаланышын лӱмыштӧ йӱкпале-влакын кугытшо тӱрыс лийшаш.
Лӱмым чын возымым терге але [[Special:UserLogin/signup|регистрацийым эрте]].',
@@ -294,8 +347,7 @@ $messages = array(
Эше ик гана ыштен ончо.',
'wrongpasswordempty' => 'Тый яра шолыпмутым пуртенат.
Эше ик гана ыштен ончо.',
-'passwordtooshort' => 'Тыйын шолыпмутет келшен огеш тол але пеш кӱчык.
-Тудо {{PLURAL:$1|1 символ|$1 символ}} деч шагал огыл лийшаш да тыйын пайдаланыше лӱмет ден икгай лийшаш огыл.',
+'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1 символ|$1 символ}} деч шагал огыл лийшаш.',
'mailmypassword' => 'У шолыпмутым колташ',
'passwordremindertitle' => '{{SITENAME}} сайтлан жаплан ыштыме у шолыпмут',
'passwordremindertext' => '{{SITENAME}} сайтлан ($4) $1 IP адрес гыч ала-кӧ (але тый) у шолыпмутым йодын. "$2" пайдаланышылан жаплан ыштыме у шолыпмутым ыштыме да "$3" электрон адресыш колтымо. Тидым тый йодынат гын, системыш у шолыпмут дене пуро.
@@ -363,20 +415,20 @@ $messages = array(
Тыйын текстет весе-влаклан ынже логал да керек кӧ тудым ынже тӧрлатен керт манын, тышке тудым ит шыҥдаре.<br />
Тыгак тидым тый шке возенат але тудым эрыкан шаркалаш лийше вер гыч налынат манын, мутым пуэт.<br />
'''АВТОР АЛЕ ТУДЫН ПРАВАМ АРАЛЫШЕ-ВЛАК ДЕЧ ЙОДДЕ МАТЕРИАЛЫМ ИТ ШЫҤДАРЕ!'''",
-'templatesused' => 'Тиде лаштыкыште кучылтмо ямдылык-влак:',
-'templatesusedpreview' => 'Тиде ончылгоч ончымаште кучылтмо ямдылык-влак:',
+'templatesused' => 'Тиде кызыт улшо лаштыкыште кучылтмо {{PLURAL:$1|ямдылык|ямдылык-влак}}:',
+'templatesusedpreview' => 'Тиде ончылгоч ончымаште кучылтмо {{PLURAL:$1|ямыдылык|ямдылык-влак}}:',
'template-protected' => '(тӧрлаташ чарыме)',
'template-semiprotected' => '(верын аралыме)',
'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмешет шагал. Тиде {{PLURAL:$1|амал ден|амал дене}}:",
-'deleted-notice' => 'Тиде лаштык шӧрымӧ лийын.
-Тиде лаштыклан шӧрымӧ нерген журнал ӱлнӧ ончыктымо.',
+'moveddeleted-notice' => 'Тиде лаштык шӧрымӧ лийын.
+Тиде лаштыклан шӧрымӧ да кусарыме нерген журнал ӱлнӧ ончыктымо.',
# History pages
'viewpagelogs' => 'Тиде лаштыклан журнал-влакым ончыкташ',
'currentrev' => 'Кызытсе тӱрлык',
'currentrev-asof' => '$1 кечын кызытсе тӱрлык',
-'revisionasof' => '$1 кечын тӱрлык',
+'revisionasof' => '$1 тӱрлык',
'previousrevision' => '← Ончычсо тӱрлык',
'nextrevision' => 'Вес тӱрлык →',
'currentrevisionlink' => 'Кызытсе тӱрлык',
@@ -392,16 +444,19 @@ $messages = array(
'historyempty' => '(яра)',
# Revision deletion
-'rev-delundel' => 'ончыкташ/шылташ',
-'revdelete-hide-user' => 'Тӧрлатышын лӱмжым шылташ',
-'revdelete-hide-image' => 'Файл кӧргым шылташ',
-'revdel-restore' => 'Койымашым вашталташ',
-'pagehist' => 'Лаштыкын эртымгорно',
-'deletedhist' => 'Шӧрымо эртымгорно',
-'revdelete-content' => 'кӧргӧ',
-'revdelete-summary' => 'тӧрлатымаш-влакым возен ончыктымаш',
-'revdelete-uname' => 'Пайдаланышын лӱмжӧ',
-'revdelete-hid' => '$1 шылтыме',
+'rev-delundel' => 'ончыкташ/шылташ',
+'rev-showdeleted' => 'ончыкташ',
+'revdelete-hide-image' => 'Файл кӧргым шылташ',
+'revdelete-hide-user' => 'Тӧрлатышын лӱмжым шылташ',
+'revdel-restore' => 'Койымашым вашталташ',
+'pagehist' => 'Лаштыкын эртымгорно',
+'deletedhist' => 'Шӧрымо эртымгорно',
+'revdelete-content' => 'кӧргӧ',
+'revdelete-summary' => 'тӧрлатымаш-влакым возен ончыктымаш',
+'revdelete-uname' => 'Пайдаланышын лӱмжӧ',
+'revdelete-hid' => '$1 шылтыме',
+'revdelete-otherreason' => 'Вес/ешартыш амал:',
+'revdelete-reasonotherlist' => 'Вес амал',
# History merging
'mergehistory-reason' => 'Амал:',
@@ -422,16 +477,15 @@ $messages = array(
'searchresulttext' => "{{SITENAME}}'ыште кычалмаш нерген шукырак палнеда гын, [[{{MediaWiki:Helppage}}|полышым]] ончыза.",
'searchsubtitle' => 'Тые кычалыч \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|чыла лаштык-влакым, кудыжо тӱҥалыт: "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|чыла лаштык-влакым, "$1" дене кылым палемдат]])',
'searchsubtitleinvalid' => "Тый кычалыч '''$1'''",
-'noexactmatch' => "'''\"\$1\" лӱман лаштык уке.'''
-Тый [[:\$1|тиде лаштыкым ыштен]] кертат.",
-'noexactmatch-nocreate' => "'''\"\$1\" лӱман лаштык уке.'''",
'notitlematches' => 'Лаштык-влакын лӱмыштышт икгайлык уке',
'notextmatches' => 'Лаштык-влакыште икгайлык возымо уке',
-'prevn' => 'кодшо $1',
-'nextn' => 'весе $1',
-'viewprevnext' => 'Ончал ($1) ($2) ($3)',
+'prevn' => 'кодшо {{PLURAL:$1|$1}}',
+'nextn' => 'весе {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ончал ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-new' => "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
'searchhelp-url' => 'Help:Вуйлымаш',
+'searchprofile-articles' => 'Возымо лаштык-влак',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Чыла',
'searchprofile-articles-tooltip' => 'Кычалмаш $1ште',
'searchprofile-project-tooltip' => 'Кычалмаш $1ште',
@@ -446,7 +500,6 @@ $messages = array(
'search-mwsuggest-enabled' => 'темлымаш дене',
'search-mwsuggest-disabled' => 'темлымаш деч посна',
'searchall' => 'чыла',
-'showingresultstotal' => "Ӱлнӧ '''$3''' кычалын мумо гыч {{PLURAL:$4|'''$1'''|'''$1 — $2'''}} ончыктымо",
'nonefound' => "'''Ешартыш''': Посна каласыме огыл дык, кычалмаш южо лӱм-влакын кумдыкышто эрта. Уло лӱм-влакын кумдыкышто кычалашлан(чӱктен каҥашымаш лаштык-влакым, ямдылык-влакым и туге молат) шке йодмашыштет ''all:'' префиксым кучылт, але кӱлешан лӱм-влакын кумдыкым ончыкто.",
'search-nonefound' => 'Тыйын йодышлан нимом кычален мумо уке.',
'powersearch' => 'Сайынрак кычал',
@@ -454,15 +507,19 @@ $messages = array(
'powersearch-ns' => 'Кычалаш тиде лӱм-влакын кумдыкышт-влакыште:',
'powersearch-redir' => 'Вес верек колтымо лаштык-влакым ончыкташ',
'powersearch-field' => 'Кычалаш',
+'powersearch-togglelabel' => 'Сайлаш:',
+'powersearch-toggleall' => 'Чыла',
+'powersearch-togglenone' => 'Нимо',
# Preferences page
'preferences' => 'Келыштарымаш',
'mypreferences' => 'Келыштарымаш',
'prefs-edits' => 'Тӧрлатымаш чот:',
'changepassword' => 'Шолыпмутым вашталташ',
-'skin' => 'Сӧрастарыме йӧн',
+'prefs-skin' => 'Сӧрастарыме йӧн',
'skin-preview' => 'Ончылгоч ончымаш',
-'math' => 'Формуло-влак',
+'prefs-math' => 'Формуло-влак',
+'prefs-datetime' => 'Кече да жап',
'prefs-personal' => 'Пайдаланышын профильже',
'prefs-rc' => 'Шукертсе огыл тӧрлымаш-влак',
'prefs-watchlist' => 'Эскерымаш лӱмер',
@@ -470,9 +527,12 @@ $messages = array(
'prefs-watchlist-edits' => 'Мыняр тӧрлатымашым ышташ лиймым кугемдыме эскерымаш лӱмерыште ончыктымо?',
'prefs-misc' => 'Тӱрлӧ',
'prefs-resetpass' => 'Шолыпмутым вашталташ',
+'prefs-email' => 'Электрон почто келыштарымаш',
+'prefs-rendering' => 'Тӱжвал сын',
'saveprefs' => 'Аралаш',
'resetprefs' => 'Тӧрлатымым шотыш налаш огыл',
'restoreprefs' => 'Чыла ойлыде келыштарымашым пӧртылаш',
+'prefs-editing' => 'Тöрлатымаш',
'searchresultshead' => 'Кычалме',
'savedprefs' => 'Тыйын келыштарымашым аралыме.',
'timezonelegend' => 'Шагат ÿштö:',
@@ -490,6 +550,21 @@ $messages = array(
'prefs-searchoptions' => 'Кычалмаш',
'prefs-namespaces' => 'Лӱм-влакын кумдыкышт-влак',
'default' => 'ойлыде',
+'prefs-files' => 'Файл-влак',
+'prefs-emailconfirm-label' => 'Электрон почто пеҥгыдемдыме:',
+'youremail' => 'Электрон почто:',
+'username' => 'Пайдаланышын лӱмжӧ:',
+'uid' => 'Пайдаланышын ID-же:',
+'prefs-memberingroups' => '{{PLURAL:$1|Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
+'yourrealname' => 'Чын лӱмжӧ:',
+'yourlanguage' => 'Йылме:',
+'yournick' => 'Кидпале:',
+'gender-male' => 'Пӧръеҥ',
+'gender-female' => 'Ӱдырамаш',
+'email' => 'Электрон почто',
+'prefs-help-email' => 'Электрон почтын адресшым ончыктыде кертат, адакшым тудо моло ушнышо-влаклан тыйын лаштык гоч тый денет кылым кучаш йӧным ышта, тыгодымак нунылан палыдыме кодеш.',
+'prefs-i18n' => 'Калык коклаште',
+'prefs-signature' => 'Кидпале',
# Groups
'group-bot' => 'Бот-влак',
@@ -508,31 +583,42 @@ $messages = array(
'action-edit' => 'тиде лаштыкым тӧрлаташ',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
-'recentchanges' => 'Пытартыш тӧрлатымаш-влак',
-'recentchanges-legend' => 'Пытартыш тӧрлатымаш-влакын келыштарымашышт',
-'recentchangestext' => 'Тиде лаштыкыште пытартыш тӧрлатымашым шекланаш.',
-'recentchanges-feed-description' => 'Тиде кылыште пытартыш тӧрлатымашым шекланаш.',
-'rcnote' => "Ӱлнӧ {{PLURAL:$1|'''1'''|'''$1'''}} вашталтыш пытартыш {{PLURAL:$2||'''$2'''}} кечылан, $5-лан, $4-лан.",
-'rclistfrom' => '$1 гыч тӱҥалын у вашталтымашым ончыкташ',
-'rcshowhideminor' => 'Изирак тӧрлымым $1',
-'rcshowhidebots' => 'Бот-влакым $1',
-'rcshowhideliu' => 'Шолып пайдаланыше-влакым $1',
-'rcshowhideanons' => 'Ончыкталтше пайдаланыше-влакым $1',
-'rcshowhidemine' => 'Мыйын тӧрлымым $1',
-'rclinks' => 'Пытартыш $2 кечылан $1 вашталтымашым ончыкташ<br />$3',
-'diff' => 'ойырт.',
-'hist' => 'эрт.',
-'hide' => 'шылташ',
-'show' => 'ончыкташ',
-'minoreditletter' => 'и',
-'newpageletter' => 'У',
-'boteditletter' => 'б',
-'rc-enhanced-expand' => 'Тӱткынракым ончыкташ (JavaScript кӱлеш)',
-'rc-enhanced-hide' => 'Рашлык-влакым шылташ',
+'nchanges' => '$1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'recentchanges' => 'Пытартыш тӧрлатымаш-влак',
+'recentchanges-legend' => 'Пытартыш тӧрлатымаш-влакын келыштарымашышт',
+'recentchangestext' => 'Тиде лаштыкыште пытартыш тӧрлатымашым шекланаш.',
+'recentchanges-feed-description' => 'Тиде кылыште пытартыш тӧрлатымашым шекланаш.',
+'recentchanges-label-legend' => 'Умылтарымаш: $1.',
+'recentchanges-legend-newpage' => '$1 - у лаштык',
+'recentchanges-label-newpage' => 'Тиде тӧрлатымаш дене у лаштыкым ыштеныт',
+'recentchanges-legend-minor' => '$1 - изирак тӧрлатымаш',
+'recentchanges-label-minor' => 'Тиде изирак тӧрлатымаш',
+'recentchanges-legend-bot' => '$1 - бот тӧрлатымаш',
+'recentchanges-label-bot' => 'Тиде тӧрлатымашым бот ыштен',
+'recentchanges-legend-unpatrolled' => '$1 - тергымашдыме тӧрлатымаш',
+'recentchanges-label-unpatrolled' => 'Тиде тӧрлатымаш эше терген налын огыл',
+'rcnote' => "Ӱлнӧ {{PLURAL:$1|'''1'''|'''$1'''}} вашталтыш пытартыш {{PLURAL:$2||'''$2'''}} кечылан, $5-лан, $4-лан.",
+'rclistfrom' => '$1 гыч тӱҥалын у вашталтымашым ончыкташ',
+'rcshowhideminor' => 'Изирак тӧрлымым $1',
+'rcshowhidebots' => 'Бот-влакым $1',
+'rcshowhideliu' => 'Шолып пайдаланыше-влакым $1',
+'rcshowhideanons' => 'Ончыкталтше пайдаланыше-влакым $1',
+'rcshowhidemine' => 'Мыйын тӧрлымым $1',
+'rclinks' => 'Пытартыш $2 кечылан $1 вашталтымашым ончыкташ<br />$3',
+'diff' => 'ойырт.',
+'hist' => 'эрт.',
+'hide' => 'шылташ',
+'show' => 'ончыкташ',
+'minoreditletter' => 'и',
+'newpageletter' => 'У',
+'boteditletter' => 'б',
+'rc-enhanced-expand' => 'Тӱткынракым ончыкташ (JavaScript кӱлеш)',
+'rc-enhanced-hide' => 'Рашлык-влакым шылташ',
# Recent changes linked
'recentchangeslinked' => 'Ваш кылдалтше тӧрлатымаш-влак',
+'recentchangeslinked-feed' => 'Ваш кылдалтше тӧрлатымаш-влак',
+'recentchangeslinked-toolbox' => 'Ваш кылдалтше тӧрлатымаш-влак',
'recentchangeslinked-title' => '"$1" лаштыклан кылдалтше тӧрлатымаш-влак',
'recentchangeslinked-noresult' => 'Ончыктымо пагытыште кылдалтше лаштыклаште вашталтыш лийын огыл.',
'recentchangeslinked-summary' => "Тиде шукертсе огыл тӧрлымӧ лаштык-влакын, кудыжо палемдыме лаштык дене кылдалтыныт (ала пелемдыме категорийыш пурат) лӱмерже.
@@ -554,13 +640,14 @@ $messages = array(
'listfiles_user' => 'Пайдаланыше',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлын эртымгорно',
'filehist-help' => 'Файл ончыч могай ыле манын ончалнет гын, кече/жапым темдал.',
'filehist-deleteone' => 'шӧраш',
'filehist-current' => 'кызыт',
'filehist-datetime' => 'Кече/жап',
'filehist-thumb' => 'Иземдыме сӱрет',
-'filehist-thumbtext' => '$1 версий лан иземдыме сӱрет',
+'filehist-thumbtext' => '$1 тӱрлыклан иземдыме сӱрет',
'filehist-user' => 'Пайдаланыше',
'filehist-dimensions' => 'Кугытшо',
'filehist-filesize' => 'Файлын кугытшо',
@@ -568,9 +655,7 @@ $messages = array(
'imagelinks' => 'Файл деке кылвер-влак',
'linkstoimage' => 'Тиде {{PLURAL:$1|$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
'nolinkstoimage' => 'Тиде файл дене кылдалтше ик лаштыкат уке.',
-'sharedupload' => 'Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'Ӱлнӧ $1 возымо ончыктымо.',
-'shareduploadwiki-linktext' => 'файлын умылтартыш лаштыкыште',
+'sharedupload' => 'Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.',
'uploadnewversion-linktext' => 'Тиде файлын у тӱрлыкшым пурташ',
# File deletion
@@ -591,6 +676,7 @@ $messages = array(
'statistics-header-edits' => 'Тӧрлатымаш коклам иктешлымаш',
'statistics-header-views' => 'Ончымаш коклам иктешлымаш',
'statistics-header-users' => 'Пайдаланыше коклам иктешлымаш',
+'statistics-header-hooks' => 'Тӱрлӧ коклам иктешлымаш',
'statistics-articles' => 'Возымо лаштык-влак',
'statistics-pages' => 'Лаштык-влак',
'statistics-pages-desc' => 'Чыла лаштык-влак, чӱктен каҥашымаш лаштык-влакым, вес верек колтымо лаштык-влакым и туге молат',
@@ -606,7 +692,8 @@ $messages = array(
'statistics-mostpopular' => 'Эн чӱчкыдын ончымо лаштык-влак',
'brokenredirects' => 'Пудыртымо вес верек колтымаш-влак',
-'brokenredirects-delete' => '(шӧраш)',
+'brokenredirects-edit' => 'тӧрлаташ',
+'brokenredirects-delete' => 'шӧраш',
'withoutinterwiki-submit' => 'ончыкташ',
@@ -657,7 +744,14 @@ $messages = array(
'linksearch-ok' => 'Кычал',
# Special:ListUsers
-'listusers-submit' => 'ончыкташ',
+'listusers-submit' => 'ончыкташ',
+'listusers-blocked' => '(йӧн петырыме)',
+
+# Special:ActiveUsers
+'activeusers' => 'Чӱчкыдын пайдаланыше-влак лӱмер',
+'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|кечыште|кечылаште}} $1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'activeusers-hidebots' => 'Бот-влакым шылташ',
+'activeusers-hidesysops' => 'Сайтвиктарыше-влакым шылташ',
# Special:Log/newusers
'newuserlogpage' => 'У пайдаланыше регистрацийым эртарыме журнал',
@@ -697,7 +791,7 @@ $messages = array(
'deletepage' => 'Лаштыкым шӧраш',
'delete-confirm' => 'Шӧраш "$1"',
'delete-legend' => 'Шӧраш',
-'historywarning' => 'Тӱтко лий: шӧраш шонымо лаштыкет вашталтыш-влак нерген историйым нумалеш:',
+'historywarning' => 'Тӱтко лий: шӧраш шонымо лаштыкет вашталтыш-влак нерген эртымгорным нумалеш:',
'confirmdeletetext' => 'Тый тиде лаштыкым пӱтынь эртымгорныже дене йӧршын шӧрынет.
Пеҥгыдемде тидым [[{{MediaWiki:Policy-url}}|правил]] почеш ыштыметым да, мо тидын деч вара лиймым, умылыметым.',
'actioncomplete' => 'Ыштыме',
@@ -721,7 +815,6 @@ $messages = array(
'protectexpiry' => 'Мучашлалтеш:',
'protect_expiry_invalid' => 'Йоҥылыш мучашлалтше жап.',
'protect_expiry_old' => 'Мучашлалтше жап эртен.',
-'protect-unchain' => 'Лаштык кусараш кертме йӧным ышташ',
'protect-text' => "Тыште тый '''<nowiki>$1</nowiki>''' лаштыкын шыгыремдымашыжым ончалаш да тӧрлаташ кертат.",
'protect-locked-access' => "Тыйын лаштыкын шыгыремдымашыжым тӧрлаш кертмешет шагал.
Ӱлнӧ '''$1''' лаштыкын кызытсе келыштарымаш.",
@@ -760,6 +853,7 @@ $messages = array(
'sp-contributions-newbies' => 'У пайдалнышын гына пашам ончыкташ',
'sp-contributions-blocklog' => 'йӧным вашталтыме журнал',
+'sp-contributions-talk' => 'каҥашымаш',
'sp-contributions-search' => 'Пашам кычалаш',
'sp-contributions-username' => 'IP-адрес ала пайдаланышын лӱмжӧ:',
'sp-contributions-submit' => 'Кычал',
@@ -786,7 +880,7 @@ $messages = array(
'blockip' => 'Пайдаланышылан йӧным петыраш',
'ipbreason' => 'Амал:',
'ipbreasonotherlist' => 'Вес амал',
-'ipboptions' => '2 жап:2 hours,1 кече:1 day,3 кече:3 days,1 арня:1 week,2 арня:2 weeks,1 тылзе:1 month,3 тылзе:3 months,6 тылзе:6 months,1 ий:1 year,нимучашдымылык:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 жап:2 hours,1 кече:1 day,3 кече:3 days,1 арня:1 week,2 арня:2 weeks,1 тылзе:1 month,3 тылзе:3 months,6 тылзе:6 months,1 ий:1 year,нимучашдымылык:infinite',
'ipbotherreason' => 'Вес/ешартыш амал:',
'ipblocklist' => 'Петырыме IP адрес-влак да пайдаланыше-влак',
'ipblocklist-submit' => 'Кычал',
@@ -823,7 +917,7 @@ $messages = array(
'move-watch' => 'Тиде лаштыкым эскераш',
'movepagebtn' => 'Лаштыкым кусараш',
'pagemovedsub' => 'Кусарымаш сайын эртен',
-'movepage-moved' => '\'\'\'"$1" лаштыкым "$2" лаштыкыш кусарыме\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" лаштыкым "$2" лаштыкыш кусарыме\'\'\'',
'movepage-moved-redirect' => 'Вес верек колтымаш ыштыме.',
'movepage-moved-noredirect' => 'Вес верек колтымаш ыштыме огыл.',
'articleexists' => 'Тыгай лӱман лаштык уло але тиде лӱмым кучылташ огеш лий. Вес лӱмым ойыро.',
@@ -840,6 +934,9 @@ $messages = array(
# Export
'export' => 'Лаштык-влакым келыштараш',
+# Namespace 8 related
+'allmessages-filter-all' => 'Чыла',
+
# Thumbnails
'thumbnail-more' => 'Кугемдаш',
@@ -867,6 +964,7 @@ $messages = array(
'tooltip-search-fulltext' => 'Тиде текстан лаштык-влакым кычалаш',
'tooltip-p-logo' => 'Тӱҥ лаштык',
'tooltip-n-mainpage' => 'Тӱҥ лаштыкыш куснаш',
+'tooltip-n-mainpage-description' => 'Тӱҥ лаштыкыш куснаш',
'tooltip-n-portal' => 'Проект нерген, мом тый ыштен кертат, мо кушто уло',
'tooltip-n-currentevents' => 'Кызытсе лиймаш-влак нерген увер',
'tooltip-n-recentchanges' => 'Шукертсе огыл тӧрлатыме лаштык-влак лӱмер',
@@ -944,7 +1042,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Файлым ӧрдыж программыште тӧрлаташ',
diff --git a/languages/messages/MessagesMi.php b/languages/messages/MessagesMi.php
index 9556ac5a..319f38e6 100644
--- a/languages/messages/MessagesMi.php
+++ b/languages/messages/MessagesMi.php
@@ -33,10 +33,12 @@ $messages = array(
'november' => 'Whiringa-ā-rangi',
'december' => 'Hakihea',
-'cancel' => 'Whakakore',
+'cancel' => 'Whakakore',
+'mytalk' => 'Karere mōku',
+'navigation' => 'Huarahi',
+
+# Cologne Blue skin
'qbspecialpages' => 'Whārangi motuhake',
-'mytalk' => 'Karere mōku',
-'navigation' => 'Huarahi',
'help' => 'Whakamārama',
'search' => 'Rapua',
@@ -89,7 +91,9 @@ $messages = array(
'show' => 'Whakaaturia',
# Recent changes linked
-'recentchangeslinked' => 'Rerekētanga pū tahi',
+'recentchangeslinked' => 'Rerekētanga pū tahi',
+'recentchangeslinked-feed' => 'Rerekētanga pū tahi',
+'recentchangeslinked-toolbox' => 'Rerekētanga pū tahi',
# Upload
'upload' => 'Tuku atu',
diff --git a/languages/messages/MessagesMk.php b/languages/messages/MessagesMk.php
index 2c257d3f..3315622b 100644
--- a/languages/messages/MessagesMk.php
+++ b/languages/messages/MessagesMk.php
@@ -15,6 +15,7 @@
* @author Glupav
* @author INkubusse
* @author Misos
+ * @author Spacebirdy
* @author Urhixidur
* @author לערי ריינהארט
*/
@@ -93,7 +94,7 @@ $specialPageAliases = array(
'Disambiguations' => array( 'Појаснувања' ),
'Userlogin' => array( 'Најавување' ),
'Userlogout' => array( 'Одјавување' ),
- 'CreateAccount' => array( 'КреирајКирисничкаСметка' ),
+ 'CreateAccount' => array( 'СоздајКирисничкаСметка' ),
'Preferences' => array( 'Нагодувања' ),
'Watchlist' => array( 'ЛистаНаНабљудувања' ),
'Recentchanges' => array( 'СкорешниПромени' ),
@@ -134,6 +135,8 @@ $specialPageAliases = array(
'Ipblocklist' => array( 'ЛистаНаБлокираниIP' ),
'Specialpages' => array( 'СпецијалниСтраници' ),
'Contributions' => array( 'Придонеси' ),
+ 'Emailuser' => array( 'Пиши е-пошта на корисникот' ),
+ 'Confirmemail' => array( 'Потврди е-пошта' ),
'Whatlinkshere' => array( 'ШтоВодиОвде' ),
'Recentchangeslinked' => array( 'ПоврзаниПромени' ),
'Movepage' => array( 'ПреместиСтраница' ),
@@ -172,7 +175,8 @@ $specialPageAliases = array(
'Blankpage' => array( 'ПразнаСтраница' ),
'LinkSearch' => array( 'ПребарајВрска' ),
'DeletedContributions' => array( 'ИзбришаниПридонеси' ),
- 'Tags' => array( 'Приврзоци' ),
+ 'Tags' => array( 'Oзнаки', 'Приврзоци' ),
+ 'Activeusers' => array( 'АктивниКорисници' ),
);
$magicWords = array(
@@ -183,7 +187,7 @@ $magicWords = array(
'toc' => array( '0', '__СОДРЖИНА__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_УРЕДУВАЊЕ_НА_СЕКЦИИ__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__БЕЗНАСЛОВ__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'СЕГАШЕНМЕСЕЦ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'СЕГАШЕНМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'СЕГАШЕНМЕСЕЦИМЕ', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'СЕГАШЕНМЕСЕЦИМЕРОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'СЕГАШЕНМЕСЕЦСКР', 'CURRENTMONTHABBREV' ),
@@ -193,7 +197,7 @@ $magicWords = array(
'currentyear' => array( '1', 'СЕГАШНАГОДИНА', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'СЕГАШНОВРЕМЕ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'СЕГАШЕНЧАС', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'МЕСЕЦ_ЛОКАЛНО', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'МЕСЕЦ_ЛОКАЛНО', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'МЕСЕЦИМЕ_ЛОКАЛНО', 'LOCALMONTHNAME' ),
'localday' => array( '1', 'ДЕН_ЛОКАЛНО', 'LOCALDAY' ),
'localday2' => array( '1', 'ДЕН2_ЛОКАЛНО', 'LOCALDAY2' ),
@@ -237,7 +241,6 @@ $magicWords = array(
'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
'servername' => array( '0', 'ИМЕНАСЕРВЕР', 'SERVERNAME' ),
'grammar' => array( '0', 'ГРАМАТИКА:', 'GRAMMAR:' ),
- 'notitleconvert' => array( '0', '__БЕЗСОДРЖИНА__', '__NOTITLECONVERT__', '__NOTC__' ),
'currentweek' => array( '1', 'СЕГАШНАСЕДМИЦА', 'CURRENTWEEK' ),
'localweek' => array( '1', 'СЕДМИЦА_ЛОКАЛНО', 'LOCALWEEK' ),
'plural' => array( '0', 'МНОЖИНА:', 'PLURAL:' ),
@@ -290,6 +293,7 @@ $messages = array(
'tog-enotifminoredits' => 'Испраќај ми е-пошта и за ситни промени во страниците',
'tog-enotifrevealaddr' => 'Откриј ја мојата е-поштенска адреса во пораките за известување',
'tog-shownumberswatching' => 'Прикажи го бројот на корисници кои набљудуваат',
+'tog-oldsig' => 'Преглед на тековниот потпис:',
'tog-fancysig' => 'Третирај го потписот како викитекст (без автоматска врска)',
'tog-externaleditor' => 'Користи надворешен уредувач по основно (само за експерти, потребно е посебно нагодување на сметачот)',
'tog-externaldiff' => 'Користи надворешен програм за разлики по основно (само за стручњаци, потребно е специјално нагодување на сметачот)',
@@ -313,6 +317,13 @@ $messages = array(
'underline-never' => 'Никогаш',
'underline-default' => 'Според нагодувањата на прелистувачот',
+# Font style option in Special:Preferences
+'editfont-style' => 'Фонт кој се користи во прозорецот за уредување:',
+'editfont-default' => 'Основен прелистувач:',
+'editfont-monospace' => 'Сразмернен фонт',
+'editfont-sansserif' => 'Бессерифен фонт',
+'editfont-serif' => 'Серифен фонт',
+
# Dates
'sunday' => 'недела',
'monday' => 'понеделник',
@@ -372,7 +383,7 @@ $messages = array(
'category-media-header' => 'Медии во категорија „$1“',
'category-empty' => "''Оваа категорија моментално не содржи страници или податотеки.''",
'hidden-categories' => '{{PLURAL:$1|Скриена категорија|Скриени категории}}',
-'hidden-category-category' => 'Скриени категории', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Скриени категории',
'category-subcat-count' => '{{PLURAL:$2|Оваа категорија ја содржи само следнава поткатегорија.|Оваа категорија {{PLURAL:$1|ја содржи следнава поткатегорија|ги содржи следниве $1 поткатегории}}, од вкупно $2.}}',
'category-subcat-count-limited' => 'Оваа категорија {{PLURAL:$1|ја содржи следнава поткатегорија|ги содржи следниве $1 поткатегории}}.',
'category-article-count' => '{{PLURAL:$2|Оваа категорија ја содржи само следната страница.|{{PLURAL:$1|Следната страница е|Следните $1 страници се}} во оваа категорија, од вкупно $2.}}',
@@ -380,6 +391,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Оваа категорија ја содржи само следната податотека.|{{PLURAL:$1|Следната податотека е|Следните $1 податотеки се}} во оваа категорија, од вкупно $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Следнава податотека е|Следниве $1 податотеки се}} во оваа категорија.',
'listingcontinuesabbrev' => 'продолжува',
+'index-category' => 'Индексирани страници',
+'noindex-category' => 'Неиндексирани страници',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''МедијаВики е успешно инсталиран.'''",
@@ -390,10 +403,18 @@ $messages = array(
* [http://meta.wikimedia.org/wiki/Manual:FAQ ЧПП (често поставувани прашања) за МедијаВики].
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Поштенски список на МедијаВики за нови верзии]',
-'about' => 'Информации за',
-'article' => 'Статија',
-'newwindow' => '(се отвора во нов прозорец)',
-'cancel' => 'Откажи',
+'about' => 'Информации за',
+'article' => 'Статија',
+'newwindow' => '(се отвора во нов прозорец)',
+'cancel' => 'Откажи',
+'moredotdotdot' => 'Повеќе...',
+'mypage' => 'Моја страница',
+'mytalk' => 'мои разговори',
+'anontalk' => 'Разговор за оваа IP-адреса',
+'navigation' => 'Навигација',
+'and' => '&#32;и',
+
+# Cologne Blue skin
'qbfind' => 'Најди',
'qbbrowse' => 'Прелистај',
'qbedit' => 'Уреди',
@@ -401,15 +422,35 @@ $messages = array(
'qbpageinfo' => 'Содржина на страница',
'qbmyoptions' => 'Мои страници',
'qbspecialpages' => 'Специјални страници',
-'moredotdotdot' => 'Повеќе...',
-'mypage' => 'Моја страница',
-'mytalk' => 'мои разговори',
-'anontalk' => 'Разговор за оваа IP-адреса',
-'navigation' => 'Навигација',
-'and' => '&#32;и',
-
-# Metadata in edit box
-'metadata_help' => 'Метаподатоци:',
+'faq' => 'ЧПП',
+'faqpage' => 'Project:ЧПП',
+
+# Vector skin
+'vector-action-addsection' => 'Додај тема',
+'vector-action-delete' => 'Бриши',
+'vector-action-move' => 'Премести',
+'vector-action-protect' => 'Заштити',
+'vector-action-undelete' => 'Врати',
+'vector-action-unprotect' => 'Отстрани заштита',
+'vector-namespace-category' => 'Категорија',
+'vector-namespace-help' => 'Страница за помош',
+'vector-namespace-image' => 'Податотека',
+'vector-namespace-main' => 'Страница',
+'vector-namespace-media' => 'Мултимедијална страница',
+'vector-namespace-mediawiki' => 'Порака',
+'vector-namespace-project' => 'Проектна страница',
+'vector-namespace-special' => 'Специјална страница',
+'vector-namespace-talk' => 'Разговор',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Корисничка страница',
+'vector-view-create' => 'Создај',
+'vector-view-edit' => 'Уреди',
+'vector-view-history' => 'Види историја',
+'vector-view-view' => 'Читај',
+'vector-view-viewsource' => 'Види код',
+'actions' => 'Дејства',
+'namespaces' => 'Именски простори',
+'variants' => 'Варијанти',
'errorpagetitle' => 'Грешка',
'returnto' => 'Врати се на $1.',
@@ -459,18 +500,22 @@ $messages = array(
'otherlanguages' => 'Други јазици',
'redirectedfrom' => '(Пренасочено од $1)',
'redirectpagesub' => 'Страница за пренасочување',
-'lastmodifiedat' => 'Оваа страница последен пат е изменета на $1 во $2 ч.', # $1 date, $2 time
+'lastmodifiedat' => 'Оваа страница последен пат е изменета на $1 во $2 ч.',
'viewcount' => 'Оваа страница била посетена {{PLURAL:$1|еднаш|$1 пати}}.',
'protectedpage' => 'Заштитена страница',
'jumpto' => 'Скокни на:',
'jumptonavigation' => 'содржини',
'jumptosearch' => 'барај',
+'view-pool-error' => 'За жал во моментов опслужувачите се преоптоварени.
+Премногу корисници се обидуваат да ја прегледаат оваа страница.
+Ве молиме почекајте некое време пред повторно да се обидете да пристапите до оваа страница.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'За {{SITENAME}}',
'aboutpage' => 'Project:За {{SITENAME}}',
'copyright' => 'Сите текстови се достапни под условите на $1.',
-'copyrightpagename' => '{{SITENAME}} авторски права',
'copyrightpage' => '{{ns:project}}:Авторски права',
'currentevents' => 'Тековни настани',
'currentevents-url' => 'Project:Тековни настани',
@@ -478,8 +523,6 @@ $messages = array(
'disclaimerpage' => 'Project:Услови на употреба',
'edithelp' => 'Помош за уредување',
'edithelppage' => 'Help:Како се уредуваат страници',
-'faq' => 'ЧПП',
-'faqpage' => 'Project:ЧПП',
'helppage' => 'Help:Содржина',
'mainpage' => 'Главна страница',
'mainpage-description' => 'Главна страница',
@@ -563,10 +606,6 @@ $messages = array(
"$1"
од функцијата "$2".
Вратена е следната грешка "$3: $4".',
-'noconnect' => 'Извинете! Викито има некои технички проблеми и не може да пристапи кон базата на податоци на опслужувачот.<br />
-$1',
-'nodb' => 'Не можам да изберам база $1',
-'cachederror' => 'Следува кеширана копија на бараната страница, која можеби е застарена.',
'laggedslavemode' => 'Предупредување: Страницата може да не ги содржи скорешните ажурирања.',
'readonly' => 'Базата е заклучена',
'enterlockreason' => 'Внесете причина за заклучувањето, вклучувајќи и приближно време на отклучување',
@@ -582,6 +621,8 @@ $1',
'readonly_lag' => 'Базата е автоматски заклучена додека помошните опслужувачи не се усогласат',
'internalerror' => 'Внатрешна грешка',
'internalerror_info' => 'Внатрешна грешка: $1',
+'fileappenderrorread' => 'Не можев да го прочитам „$1“ во текот на придодавањето.',
+'fileappenderror' => 'Не можe да се додаде "$1" на "$2".',
'filecopyerror' => 'Не можe да се копира податотеката "$1" во "$2".',
'filerenameerror' => 'Не може да се преименува податотеката "$1" во "$2".',
'filedeleteerror' => 'Не може да се избрише податотеката "$1".',
@@ -591,7 +632,8 @@ $1',
'unexpected' => 'Неочекувана вредност: "$1"="$2".',
'formerror' => 'Грешка: не можам да го испратам образецот',
'badarticleerror' => 'Ова дејство не може да се спроведе на оваа страница.',
-'cannotdelete' => 'Не можам да ја избришам страницата или сликата. (Можеби е веќе избришана од некој друг.)',
+'cannotdelete' => 'Страницата или податотеката „$1“ не можеше да се избрише.
+Можеби некој друг веќе ја избришал.',
'badtitle' => 'Лош наслов',
'badtitletext' => 'Бараниот наслов е грешен, празен или погрешно поврзан меѓујазичен или интер-вики наслов. Може да содржи еден или повеќе знаци што не можат да се користат во наслови.',
'perfcached' => 'Следните податоци се кеширани и може да не бидат целосно ажурирани:',
@@ -626,7 +668,6 @@ $2',
'virus-unknownscanner' => 'непознат антивирус:',
# Login and logout pages
-'logouttitle' => 'одјавување на корисник',
'logouttext' => "'''Сега сте одјавени.'''
Можете да продолжите со користење на {{SITENAME}} анонимно или можете [[Special:UserLogin|повторно да се најавите]] под исто или различно корисничко име.
@@ -634,7 +675,6 @@ $2',
'welcomecreation' => '== Добредојдовте, $1! ==
Вашата корисничка сметка е создадена.
Не заборавајте да ги промените вашите [[Special:Preferences|{{SITENAME}} нагодувања]].',
-'loginpagetitle' => 'Најавување на корисник',
'yourname' => 'Корисничко име:',
'yourpassword' => 'Лозинка:',
'yourpasswordagain' => 'Повторете ја лозинката:',
@@ -645,6 +685,7 @@ $2',
'nav-login-createaccount' => 'Најавување / создавање на корисничка сметка',
'loginprompt' => 'За да се најавите на {{SITENAME}} мора да користите колачиња.',
'userlogin' => 'Најавување / создавање на корисничка сметка',
+'userloginnocreate' => 'Најава',
'logout' => 'одјавување',
'userlogout' => 'одјавување',
'notloggedin' => 'Не сте најавени',
@@ -657,31 +698,8 @@ $2',
'badretype' => 'Внесените лозинки не се исти.',
'userexists' => 'Корисничкото име што го внесовте веќе се користи.
Ве молиме изберете друго име.',
-'youremail' => 'Е-пошта:',
-'username' => 'Корисничко име:',
-'uid' => 'ID на корисникот:',
-'prefs-memberingroups' => 'Член на {{PLURAL:$1|групата|групите}}:',
-'yourrealname' => 'Вистинско име:',
-'yourlanguage' => 'Јазик:',
-'yourvariant' => 'Варијанта:',
-'yournick' => 'Потпис:',
-'badsig' => 'Грешка во потписот.
-Проверете ги HTML ознаките.',
-'badsiglength' => 'Вашиот потпис е премногу долг.
-Мора да биде со помалку од $1 {{PLURAL:$1|знак|знаци}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'Непосочен',
-'gender-male' => 'Машки',
-'gender-female' => 'Женски',
-'prefs-help-gender' => 'По избор: се користи од вики-програмот за создавање на пораки во зависност од наведениот пол.
-Оваа информација ќе биде јавно достапна.',
-'email' => 'Е-пошта',
-'prefs-help-realname' => "'''Вистинското име''' е изборно.
-Доколку изберете да го впишете вашето име, тоа може да се искористи за оддавање на заслуги за вашата работа.",
'loginerror' => 'Грешка при најавување',
-'prefs-help-email' => 'Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако си ја заборавите постоечката.
-Исто така можете да изберете другите корисници да ве контактираат преку вашата корисничка страница или страница за разговор, без да го откриете вашиот идентитет.',
-'prefs-help-email-required' => 'Е-поштенска адреса е задолжително да се наведе.',
+'createaccounterror' => 'Не може да биде создадена сметка: $1',
'nocookiesnew' => 'Корисничката сметка е создадена, но не сте најавени.
{{SITENAME}} користи колачиња за најавување на корисници.
Вие имате оневозможено колачиња на вашиот прелистувач.
@@ -698,10 +716,11 @@ $2',
'nosuchusershort' => 'Нема корисник со името "<nowiki>$1</nowiki>".
Проверете дали правилно сте напишале.',
'nouserspecified' => 'Мора да назначите корисничко име.',
+'login-userblocked' => 'Овој корисник е блокиран. Најавувањето не е дозволено.',
'wrongpassword' => 'Внесовте погрешна лозинка. Обидете се повторно.',
'wrongpasswordempty' => 'Внесената лозинка е празна. Обидете се повторно.',
-'passwordtooshort' => 'Вашата лозинка е погрешна или прекратка.
-Мора да има најмалку {{PLURAL:$1|1 знак|$1 знаци}} и да биде различна од вашето корисничко име.',
+'passwordtooshort' => 'Лозинката мора да има најмалку {{PLURAL:$1|1 знак|$1 знаци}}.',
+'password-name-match' => 'Лозинката мора да се разликува од корисничкото име.',
'mailmypassword' => 'Испрати нова лозинка по е-пошта',
'passwordremindertitle' => 'Нова привремена лозинка за {{SITENAME}}',
'passwordremindertext' => 'Некој (најверојатно вие, од IP-адреса $1) побара нова лозинка за {{SITENAME}} ($4).
@@ -711,6 +730,7 @@ $2',
Ако некој друг го поднел ова барање или ако сте се сетиле на вашата лозинка и веќе не сакате да ја промените, може слободно да ја занемарите оваа порака и да продолжите да придонесувате користејќи се со старата лозинка.',
'noemail' => 'Нема заведено е-поштенска адреса за корисник "$1".',
+'noemailcreate' => 'Потребно е да наведете важечка е-поштенска адреса',
'passwordsent' => 'Нова лозинка е испратена на е-поштенската адреса заведена за "$1".
Ве молиме најавете се повторно откако ќе ја примите пораката.',
'blocked-mailpassword' => 'Вашата IP-адреса е блокирана за уредување, истовремено е ставена забрана за користење на функцијата за обнова на лозинка за да се спречи можноста за злоупотреба.',
@@ -735,9 +755,11 @@ $2',
Би требало сега да се пријавите и да ја промените вашата лозинка.
Можете да ја занемарите оваа порака ако сметката била направена по грешка.',
+'usernamehasherror' => 'Корисничкото име не може да содржи тараба',
'login-throttled' => 'Скоро имате направено повеќе обиди за најавување.
Почекајте малку пред да се обидете повторно.',
'loginlanguagelabel' => 'Јазик: $1',
+'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи се чини дека е испратено од расипан прелистувач или кеширачки застапник (proxy).',
# Password reset dialog
'resetpass' => 'Промена на лозинка',
@@ -750,18 +772,13 @@ $2',
'retypenew' => 'Повторно внеси нова лозинка:',
'resetpass_submit' => 'Поставете лозинка и најавете се',
'resetpass_success' => 'Вашата лозинка беше успешно променета! Најавувањето е во тек...',
-'resetpass_bad_temporary' => 'Неважечка привремена лозинка.
-Можно е веќе да сте ја промениле вашата лозинка или да сте побарале нова привремена лозинка.',
'resetpass_forbidden' => 'Лозинките не може да се менуваат',
'resetpass-no-info' => 'Мора да бидете најавени ако сакате да имате директен пристап до оваа страница.',
'resetpass-submit-loggedin' => 'Промени лозинка',
+'resetpass-submit-cancel' => 'Откажи',
'resetpass-wrong-oldpass' => 'Погрешна привремена или тековна лозинка.
Можеби веќе ја имате успешно променето вашата лизинка или сте побарале нова привремена лозинка.',
'resetpass-temp-password' => 'Привремена лозинка:',
-'resetpass-log' => 'Дневник на ресетирања на лозинка',
-'resetpass-logtext' => 'Подолу следи список на корисници чии лозинки се сменети од страна на администратор.',
-'resetpass-logentry' => 'променета лозинката за $1',
-'resetpass-comment' => 'Причина за промена на лозинката:',
# Edit page toolbar
'bold_sample' => 'Задебелен текст',
@@ -836,7 +853,6 @@ $2',
'blockededitsource' => "Текстот на '''вашите уредувања''' на '''$1''' е прикажан подолу:",
'whitelistedittitle' => 'Мора да сте најавени доколку сакате да уредувате',
'whitelistedittext' => 'Мора да сте $1 за да уредувате страници.',
-'confirmedittitle' => 'Потребна е потврда за е-поштенската адреса за уредување',
'confirmedittext' => 'Морате да ја потврдите вашата е-поштенска адреса пред да уредувате страници.
Поставете ја и валидирајте ја вашата е-поштенска адреса преку вашите [[Special:Preferences|нагодувања]].',
'nosuchsectiontitle' => 'Не можам да го пронајдам заглавието',
@@ -860,14 +876,21 @@ $2',
Можете да направите [[Special:Search/{{PAGENAME}}|пребарување за овој наслов на страница]] во други страници,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарување во дневниците],
или [{{fullurl:{{FULLPAGENAME}}|action=edit}} да ја уредите оваа страница]</span>.',
+'noarticletext-nopermission' => 'Нема текст на оваа страница.
+Можете да го [[Special:Search/{{PAGENAME}}|пребарате овој наслов]] во други страници,
+или да ги <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарате соодветните дневници]</span>.',
'userpage-userdoesnotexist' => 'Корисничката сметка „$1“ не е регистрирана.
Ве молиме размислете дали навистина сакате да ја создадете/уредите оваа страница.',
+'userpage-userdoesnotexist-view' => 'Корисничката сметка "$1" не е регистрирана.',
+'blocked-notice-logextract' => 'Овој корисник е моментално блокиран.
+Подолу е прикажан последниот дневнички запис:',
'clearyourcache' => "'''Напомена: По зачувувањето морате да го исчистите кешот на прелистувачот за да можете ги видите промените.'''
'''Mozilla / Firefox / Safari:''' држете ''Shift'' додека кликате на ''Reload'' или притиснете ''Ctrl+F5'' или ''Ctrl+R'' (''Command+R'' на Macintosh);
'''Konqueror:''' кликнете на ''Reload'' или притиснете ''F5'';
'''Opera:''' исчистете го кешот во ''Tools → Preferences'';
'''Internet Explorer:''' држете ''Ctrl'' додека притискате на ''Refresh'' или притиснете ''Ctrl+F5''.",
-'usercssjsyoucanpreview' => "'''Совет:''' Користете го копчето „'''Преглед'''“ за да го испробате новиот CSS/JS код пред зачувувањето.",
+'usercssyoucanpreview' => "'''Совет:''' Употребете го копчето „{{int:showpreview}}“ за да го испробате вашиот нов CSS пред да зачувате.",
+'userjsyoucanpreview' => "'''Совет:''' Употребете го копчето „{{int:showpreview}}“ за да ја испробате вашата нова JavaScript пред да зачувате.",
'usercsspreview' => "'''Запомнете дека ова е само преглед на вашиот кориснички CSS код, страницата сè уште не е зачувана!'''",
'userjspreview' => "'''Запомнете дека ова е само преглед на вашиот JavaScript код, страницата сè уште не е зачувана!'''",
'userinvalidcssjstitle' => "'''Предупредување:''' Нема руво „$1“.
@@ -920,13 +943,16 @@ $2',
Пробајте да го зачувате текстот локално (cut & paste) во некоја податотека и да го пратите подоцна.'''
Администраторот кој ја заклучил базата на податоци го дал следново објаснување: $1",
-'protectedpagewarning' => "'''ПРЕДУПРЕДУВАЊЕ: Оваа страница е заклучена, така што само корисници со администраторски привилегии можат да ја менуваат.'''",
-'semiprotectedpagewarning' => "'''Забелешка:''' Оваа страница е заклучена и само регистрирани корисници може да ја уредуваат.",
+'protectedpagewarning' => "'''Предупредување: Оваа страница е заклучена, така што само корисници со администраторски привилегии можат да ја уредуваат.'''
+За ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
+'semiprotectedpagewarning' => "'''Предупредување:''' Оваа страница е заклучена, така што само регистрирани корисници може да ја уредуваат.'''
+За ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
'cascadeprotectedwarning' => "'''Предупредување:''' Оваа страница е заклучена, така што можат да ја уредуваат само корисници со администраторски привилегии, бидејќи е вклучена во {{PLURAL:$1|следнава „преносно-заштитена“ страница|следниве „преносно-заштитени“ страници}}:",
-'titleprotectedwarning' => "'''ПРЕДУПРЕДУВАЊЕ: Оваа страница е заклучена, потребни се [[Special:ListGroupRights|посебни права]] за да се создаде.'''",
-'templatesused' => 'Шаблони користени на оваа страница:',
-'templatesusedpreview' => 'Шаблони користени во овој преглед:',
-'templatesusedsection' => 'Шаблони користени во оваа секција:',
+'titleprotectedwarning' => "'''Предупредување:''' Оваа страница е заклучена, така што се потребни [[Special:ListGroupRights|посебни права]] за да се создаде.''''
+За ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
+'templatesused' => '{{PLURAL:$1|Шаблон користен на оваа страница|Шаблони користени на оваа страница}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон користен во овој преглед|Шаблони користени во овој преглед}}:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблон користен во ова заглавие|Шаблони користени во овие заглавија}}:',
'template-protected' => '(заштитен)',
'template-semiprotected' => '(полузаштитен)',
'hiddencategories' => 'Оваа страница припаѓа на {{PLURAL:$1|1 скриена категорија|$1 скриени категории}}:',
@@ -935,16 +961,18 @@ $2',
'nocreatetext' => '{{SITENAME}} ја има ограничено можноста за создавање нови страници.
Можете да се вратите назад и да уредувате постоечка страница или [[Special:UserLogin|најавете се или создајте нова корисничка сметка]].',
'nocreate-loggedin' => 'Немате дозвола да создавате нови страници.',
+'sectioneditnotsupported-title' => 'Уредувањето на заглавија не е поддржано',
+'sectioneditnotsupported-text' => 'На оваа станица не е поддржано уредувањето на заглавија.',
'permissionserrors' => 'Грешки во правата',
'permissionserrorstext' => 'Немате дозвола да го направите тоа, заради {{PLURAL:$1|следнава причина|следниве причини}}:',
'permissionserrorstext-withaction' => 'Немате дозвола за $2, заради {{PLURAL:$1|следнава причина|следниве причини}}:',
-'recreate-deleted-warn' => "'''Внимание: Создавате страница што претходно била бришена.'''
+'recreate-moveddeleted-warn' => "Внимание: Повторно создавате страница што претходно била бришена.'''
Размислете дали е правилно да продолжите со уредување на оваа страница.
-Погледнете го дневникот на бришења за оваа страница заради преглед:",
-'deleted-notice' => 'Оваа страница била претходно бришена.
-За ваша информација подолу може да го погледнете дневникот на бришења за оваа страница.',
-'deletelog-fulllog' => 'Преглед на полн дневник',
+Подолу е прикажан дневникот на бришења и преместувања на оваа страница за ваш преглед:",
+'moveddeleted-notice' => 'Оваа страница била претходно бришена.
+Дневникот на бришења и преместувања за оваа страница е прикажан подолу за ваше дополнително информирање.',
+'log-fulllog' => 'Преглед на целиот дневник',
'edit-hook-aborted' => 'Уредувањето прекинато со кука.
Не е дадено никакво објаснување.',
'edit-gone-missing' => 'Не е возможно да се ажурира страницата.
@@ -967,6 +995,7 @@ $2',
'post-expand-template-argument-category' => 'Страници кои содржат изземени аргументи на шаблони',
'parser-template-loop-warning' => 'Пронајдена е јамка во шаблонот: [[$1]]',
'parser-template-recursion-depth-warning' => 'Ограничувањето на рекурзивната длабочина надмината во шаблонот ($1)',
+'language-converter-depth-warning' => 'Надмината е границата на длабочината на јазичниот претворач ($1)',
# "Undo" feature
'undo-success' => 'Уредувањето може да се откаже.
@@ -987,7 +1016,7 @@ $2',
'currentrev' => 'Тековна ревизија',
'currentrev-asof' => 'Последна ревизија од $1',
'revisionasof' => 'Ревизија од $1',
-'revision-info' => 'Ревизија од $1; направена од $2', # Additionally available: $3: revision id
+'revision-info' => 'Ревизија од $1; направена од $2',
'previousrevision' => '← Претходна ревизија',
'nextrevision' => 'Следна ревизија →',
'currentrevisionlink' => 'Последна ревизија',
@@ -999,7 +1028,7 @@ $2',
'histlegend' => "Разлика помеѓу ревизии: означете ги ревизиите кои сакате да ги споредите и притиснете Enter или копчето на дното од страницата.<br />
Легенда: '''({{int:cur}})''' = разлика со последна ревизија, '''({{int:last}})''' = разлика со претходна ревизија, '''{{int:minoreditletter}}''' = ситна промена.",
'history-fieldset-title' => 'Прелистување на историја',
-'deletedrev' => '[избришано]',
+'history-show-deleted' => 'Само избришани',
'histfirst' => 'Први',
'histlast' => 'Последни',
'historysize' => '({{PLURAL:$1|1 бајт|$1 бајти}})',
@@ -1008,71 +1037,109 @@ $2',
# Revision feed
'history-feed-title' => 'Историја на ревидирање',
'history-feed-description' => 'Историја на ревидирање за оваа страница на викито',
-'history-feed-item-nocomment' => '$1 на $2', # user at time
+'history-feed-item-nocomment' => '$1 на $2',
'history-feed-empty' => 'Бараната страница не постои.
Може била избришана од викито или преименувана.
Обидете се да [[Special:Search|пребарате низ викито]] за релевантни нови страници.',
# Revision deletion
-'rev-deleted-comment' => '(избришан коментар)',
-'rev-deleted-user' => '(избришано корисничко име)',
-'rev-deleted-event' => '(избришан запис на дејство)',
-'rev-deleted-text-permission' => "Ревизија на оваа страница е '''избришана'''.
-Можеби има детали во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-deleted-text-view' => "Ревизија на оваа страница беше '''избришана'''.
+'rev-deleted-comment' => '(избришан коментар)',
+'rev-deleted-user' => '(избришано корисничко име)',
+'rev-deleted-event' => '(избришан запис на дејство)',
+'rev-deleted-user-contribs' => '[отстрането е корисничкото име или IP-адресата - уредувањето нема да се прикаже на списокот на придонеси]',
+'rev-deleted-text-permission' => "Ревизија на оваа страницата била '''бришана'''.
+Можеби има детали во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
+'rev-deleted-text-unhide' => "Оваа ревизија на страницата била '''избришана'''.
+Повеќе детали има во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].
+Како администратор вие сепак можете [$1 да ја погледнете оваа ревизија] ако сакате да продолжите.",
+'rev-suppressed-text-unhide' => "Оваа ревизија на страница била '''потисната'''.
+Повеќе детали има во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на потиснувања].
+Како администратор, вие сепак можете [$1 да ја погледнете оваа ревизија] ако сакате да продолжите.",
+'rev-deleted-text-view' => "Ревизија на оваа страницата била '''избришана'''.
Како администратор вие можете да ја погледнете; можеби има повеќе детали во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-deleted-no-diff' => "Не може да ја погледнете оваа разлика бидејќи една од ревизиите била '''избришана'''.
-Може да најдете повеќе детали во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-deleted-unhide-diff' => "Една од ревизиите на оваа разлика била '''избришана'''.
+'rev-suppressed-text-view' => "Ревизија на оваа страница беше '''супресирана'''.
+Како администратор вие можете да ја погледнете; можеби има повеќе детали во [{{fullurl:Special:Log/suppress|page={{FULLPAGENAMEE}}}} дневникот на супресии].",
+'rev-deleted-no-diff' => "Не може да ја погледнете оваа разлика бидејќи една од ревизиите била '''избришана'''.
+Може да најдете повеќе детали во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
+'rev-suppressed-no-diff' => "Не можете да ги видите разликите помеѓу овие ревизии бидејќи една од нив е '''избришана'''.",
+'rev-deleted-unhide-diff' => "Една од ревизиите на оваа разлика била '''избришана'''.
Можеби има детали во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].
-Како администратор вие сеуште можете [$1 да ја видите оваа разлика] ако сакате да продолжите.",
-'rev-delundel' => 'прикажи/сокриј',
-'revisiondelete' => 'Избриши/врати ревизии',
-'revdelete-nooldid-title' => 'Бараната измена не постои',
-'revdelete-nooldid-text' => 'Не сте посочиле измена (измени) за да се изврши оваа функција или посочената измена не постои или се обидувате да ја сокриете моменталната измена.',
-'revdelete-nologtype-title' => 'Не е наведен тип на дневник',
-'revdelete-nologtype-text' => 'Немате наведено тип на дневник за кој треба да се изврши ова дејство.',
-'revdelete-toomanytargets-title' => 'Премногу цели',
-'revdelete-toomanytargets-text' => 'Имате наведено премногу цели за извршување на ова дејство.',
-'revdelete-nologid-title' => 'Погрешно внесен запис во дневник.',
-'revdelete-nologid-text' => 'Немате наведено дневнички запис за извршување на оваа функција или наведената ставка не постои.',
-'revdelete-selected' => "'''{{PLURAL:$2|Избрана ревизија|Избрани ревизии}} од [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Одбран настан од дневник|Одбрани настани од дневник}}:'''",
-'revdelete-text' => "'''Избришаните измени и настани сѐ уште ќе се појавуваат во историјата на страницата и дневниците, но делови од нивната содржина ќе бидат недостапни за јавноста.'''
-
-Други администратори на {{SITENAME}} сѐ уште ќе имаат пристап до скриената содржина и ќе можат да ја вратат преку истиот интерфејс, освен ако не се поставени дополнителни ограничувања.
-
-Потврдете дека сакате да го направите ова, дека сте свесни за последиците и дека го правите ова согласно со [[{{MediaWiki:Policy-url}}|политиката]].",
-'revdelete-suppress-text' => "Ограничувањето '''се користи''' само во следниве случаи:
+Како администратор вие сепак можете [$1 да ја видите оваа разлика] ако сакате да продолжите.",
+'rev-suppressed-unhide-diff' => "Една од ревизиите на оваа разлика била '''сокриена'''.
+Дополнителни детали можебиима во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на прикривања].
+Како администратор вие можете да [$1 ја видите оваа разлика] ако сакате да продолжите.",
+'rev-deleted-diff-view' => "Една од ревизиите на оваа разлика е '''избришана'''.
+Како администратор можете да ја погледате оваа разлика; детали можеби има во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришење].",
+'rev-suppressed-diff-view' => "Една од ревизиите на оваа разлика е '''прикриена'''.
+Како администратор можете да ја погледате оваа разлика; детали можеби има во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на прикривања].",
+'rev-delundel' => 'прикажи/сокриј',
+'rev-showdeleted' => 'прикажи',
+'revisiondelete' => 'Избриши/врати ревизии',
+'revdelete-nooldid-title' => 'Бараната измена не постои',
+'revdelete-nooldid-text' => 'Не сте посочиле измена (измени) за да се изврши оваа функција или посочената измена не постои или се обидувате да ја сокриете моменталната измена.',
+'revdelete-nologtype-title' => 'Не е наведен тип на дневник',
+'revdelete-nologtype-text' => 'Немате наведено тип на дневник за кој треба да се изврши ова дејство.',
+'revdelete-nologid-title' => 'Погрешно внесен запис во дневник.',
+'revdelete-nologid-text' => 'Немате наведено дневнички запис за извршување на оваа функција или наведената ставка не постои.',
+'revdelete-no-file' => 'Наведената податотека не постои.',
+'revdelete-show-file-confirm' => 'Дали сакате да ја погледнете избришаната ревизија на податотеката "<nowiki>$1</nowiki>" од $2 во $3?',
+'revdelete-show-file-submit' => 'Да',
+'revdelete-selected' => "'''{{PLURAL:$2|Избрана ревизија|Избрани ревизии}} од [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Одбран настан од дневник|Одбрани настани од дневник}}:'''",
+'revdelete-text' => "'''Избришаните измени и настани сѐ уште ќе се појавуваат во историјата на страницата и дневниците, но делови од нивната содржина ќе бидат недостапни за јавноста.'''
+Други администратори на {{SITENAME}} сѐ уште ќе имаат пристап до скриената содржина и ќе можат да ја вратат преку истиот посредник, освен ако не се поставени дополнителни ограничувања.",
+'revdelete-confirm' => 'Потврдете дека сакате да го направите ова, дека ги сфаќате последиците, и дека тоа го правите во согласност со [[{{MediaWiki:Policy-url}}|правилата]].',
+'revdelete-suppress-text' => "Ограничувањето '''се користи''' само во следниве случаи:
* Несоодветни лични информации
*: ''домашни адреси и телефонски броеви, матични броеви, и.т.н.''",
-'revdelete-legend' => 'Постави ограничувања за видливост',
-'revdelete-hide-text' => 'Сокриј го текст на ревизија',
-'revdelete-hide-name' => 'Сокриј го дејството и неговата цел',
-'revdelete-hide-comment' => 'Сокриј опис на уредување',
-'revdelete-hide-user' => 'Сокриј корисничко име/IP на уредувач',
-'revdelete-hide-restricted' => 'Постави ограничувања и за администратори на ист начин како и за останатите',
-'revdelete-suppress' => 'Сокриј податоци и од администраторите',
-'revdelete-hide-image' => 'Сокриј содржина на податотека',
-'revdelete-unsuppress' => 'Отстрани ограничувања на обновени ревизии',
-'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Примени на селектирани ревизии',
-'revdelete-logentry' => 'променета е видливост на ревизија на [[$1]]',
-'logdelete-logentry' => 'променета видливост на настан од [[$1]]',
-'revdelete-success' => "'''Видливоста на ревизијата е успешно изменета.'''",
-'logdelete-success' => "'''Успешно нагодување на дневник на видливост.'''",
-'revdel-restore' => 'Промена на видливост',
-'pagehist' => 'Историја на страница',
-'deletedhist' => 'Историја на бришења',
-'revdelete-content' => 'содржина',
-'revdelete-summary' => 'опис на уредување',
-'revdelete-uname' => 'корисничко име',
-'revdelete-restricted' => 'применети ограничувања на систем оператори',
-'revdelete-unrestricted' => 'отстранети ограничувања за систем оператори',
-'revdelete-hid' => 'сокриј $1',
-'revdelete-unhid' => 'прикажи $1',
-'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|ревизија|ревизии}}',
-'logdelete-log-message' => '$1 од $2 {{PLURAL:$2|настан|настани}}',
+'revdelete-legend' => 'Постави ограничувања за видливост',
+'revdelete-hide-text' => 'Сокриј го текст на ревизија',
+'revdelete-hide-image' => 'Сокриј содржина на податотека',
+'revdelete-hide-name' => 'Сокриј го дејството и неговата цел',
+'revdelete-hide-comment' => 'Сокриј опис на уредување',
+'revdelete-hide-user' => 'Сокриј корисничко име/IP на уредувач',
+'revdelete-hide-restricted' => 'Постави ограничувања и за администратори на ист начин како и за останатите',
+'revdelete-radio-same' => '(не менувај)',
+'revdelete-radio-set' => 'Да',
+'revdelete-radio-unset' => 'Не',
+'revdelete-suppress' => 'Сокриј податоци и од администраторите',
+'revdelete-unsuppress' => 'Отстрани ограничувања на обновени ревизии',
+'revdelete-log' => 'Причина:',
+'revdelete-submit' => 'Примени на одбрани {{PLURAL:$1|ревизија|ревизии}}',
+'revdelete-logentry' => 'променета е видливост на ревизија на [[$1]]',
+'logdelete-logentry' => 'променета видливост на настан од [[$1]]',
+'revdelete-success' => "'''Видливоста на ревизијата е успешно изменета.'''",
+'revdelete-failure' => "'''Видливоста на ревизијата не можеше да се измени:'''
+$1",
+'logdelete-success' => "'''Успешно нагодување на дневник на видливост.'''",
+'logdelete-failure' => "'''Дневникот на видливост не може да биде нагоден:'''
+$1",
+'revdel-restore' => 'Промена на видливост',
+'pagehist' => 'Историја на страница',
+'deletedhist' => 'Историја на бришења',
+'revdelete-content' => 'содржина',
+'revdelete-summary' => 'опис на уредување',
+'revdelete-uname' => 'корисничко име',
+'revdelete-restricted' => 'применети ограничувања на систем оператори',
+'revdelete-unrestricted' => 'отстранети ограничувања за систем оператори',
+'revdelete-hid' => 'сокриј $1',
+'revdelete-unhid' => 'прикажи $1',
+'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|ревизија|ревизии}}',
+'logdelete-log-message' => '$1 од $2 {{PLURAL:$2|настан|настани}}',
+'revdelete-hide-current' => 'Грешка при сокривање на ставката датирана на $2, $1: ова е актуелна ревизија.',
+'revdelete-show-no-access' => 'Грешка при прикажување на ставката датирана на $2, $1: оваа ставка е означена како "ограничена". Немате пристап до неа.',
+'revdelete-modify-no-access' => 'Грешка при промена на ставката датирана на $2, $1: оваа ставка била означена како "ограничена". Немате пристап до неа.',
+'revdelete-modify-missing' => 'Грешка при промена на ставка со број $1: ја нема во базата на податоци!',
+'revdelete-no-change' => "'''Предупредување:''' ставката датирана на $2, $1 веќе ги има бараните нагодувања за видливост.",
+'revdelete-concurrent-change' => 'Грешка при промена на ставката датирана на $2, $1: нејзиниот статус изгледа дека бил изменет од некој друг додека вие се обидувавте да го направите тоа. Ве молиме проверете во дневниците.',
+'revdelete-only-restricted' => 'Грешка при сокривањето на записот од $2, $1: не можете да криете записи од администратори без воедно да изберете едно од другите нагодувања на видливоста.',
+'revdelete-reason-dropdown' => '*Вообичаени причини за бришење
+** Прекршување на авторски права
+** Несоодветни лични информации',
+'revdelete-otherreason' => 'Друга/дополнителна причина:',
+'revdelete-reasonotherlist' => 'Друга причина',
+'revdelete-edit-reasonlist' => 'Уреди причини за бришење',
+'revdelete-offender' => 'Автор на ревизија:',
# Suppression log
'suppressionlog' => 'Дневник на сокривања',
@@ -1111,68 +1178,13 @@ $2',
'mergelogpagetext' => 'Следи список на скорешни спојувања на истории на страници.',
# Diffs
-'history-title' => 'Историја на ревизии за „$1“',
-'difference' => '(Разлика меѓу ревизија)',
-'lineno' => 'Ред $1:',
-'compareselectedversions' => 'Спореди избрани ревизии',
-'visualcomparison' => 'Визуелна споредба',
-'wikicodecomparison' => 'Викитекст споредба',
-'editundo' => 'откажи',
-'diff-multi' => '({{PLURAL:$1|Не е прикажана една меѓуревзија|Не се прикажани $1 меѓуревизии}})',
-'diff-movedto' => 'преместено во $1',
-'diff-styleadded' => '$1 додаден стил',
-'diff-added' => '$1 додадено',
-'diff-changedto' => 'променето во $1',
-'diff-movedoutof' => 'исфрлено надвор од $1',
-'diff-styleremoved' => '$1 избришано стил',
-'diff-removed' => '$1 избришано',
-'diff-changedfrom' => 'променето од $1',
-'diff-src' => 'извор',
-'diff-withdestination' => 'со дестинација $1',
-'diff-with' => '&#32;со $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;и $1 $2',
-'diff-width' => 'ширина',
-'diff-height' => 'висина',
-'diff-p' => "'''параграф'''",
-'diff-blockquote' => "'''цитат'''",
-'diff-h1' => "'''наслов (ниво 1)'''",
-'diff-h2' => "'''наслов (ниво 2)'''",
-'diff-h3' => "'''наслов (ниво 3)'''",
-'diff-h4' => "'''наслов (ниво 4)'''",
-'diff-h5' => "'''наслов (ниво 5)'''",
-'diff-pre' => "'''префроматиран текст'''",
-'diff-div' => "'''дел од текст'''",
-'diff-ul' => "'''неподреден список'''",
-'diff-ol' => "'''подреден список'''",
-'diff-li' => "'''ставка на списокот'''",
-'diff-table' => "'''табела'''",
-'diff-tbody' => "'''содржина'''",
-'diff-tr' => "'''редица'''",
-'diff-td' => "'''клетка'''",
-'diff-th' => "'''заглавие'''",
-'diff-br' => "'''прекршување на ред'''",
-'diff-hr' => "'''хоризонтална линија'''",
-'diff-code' => "'''компјутерски код'''",
-'diff-dl' => "'''список со определувања'''",
-'diff-dt' => "'''дефиниционен поим'''",
-'diff-dd' => "'''дефиниција'''",
-'diff-input' => "'''влез'''",
-'diff-form' => "'''образец'''",
-'diff-img' => "'''слика'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''врска'''",
-'diff-i' => "'''италик'''",
-'diff-b' => "'''задебелено'''",
-'diff-strong' => "'''задебелено'''",
-'diff-em' => "'''зголемено'''",
-'diff-font' => "'''фонт'''",
-'diff-big' => "'''големо'''",
-'diff-del' => "'''избришано'''",
-'diff-tt' => "'''фиксна ширина'''",
-'diff-sub' => "'''долен индекс'''",
-'diff-sup' => "'''горен индекс'''",
-'diff-strike' => "'''прецртано'''",
+'history-title' => 'Историја на ревизии за „$1“',
+'difference' => '(Разлика меѓу ревизија)',
+'lineno' => 'Ред $1:',
+'compareselectedversions' => 'Спореди избрани ревизии',
+'showhideselectedversions' => 'Прикажи/сокриј избрани ревизии',
+'editundo' => 'откажи',
+'diff-multi' => '({{PLURAL:$1|Не е прикажана една меѓуревзија|Не се прикажани $1 меѓуревизии}})',
# Search results
'searchresults' => 'Резултати од пребарувањето',
@@ -1180,29 +1192,25 @@ $2',
'searchresulttext' => 'За повеќе информации во врска со пребарување на {{SITENAME}}, погледнете [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Пребарувате \'\'\'[[:$1]]\'\'\' на ([[Special:Prefixindex/$1|сите страници кои започнуваат со "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|сите страници кои водат до "$1"]])',
'searchsubtitleinvalid' => "Пребарувавте '''$1'''",
-'noexactmatch' => "'''Нема страница насловена како „$1“.'''
-Можете да ја [[:$1|создадете таа страница]].",
-'noexactmatch-nocreate' => "'''Не постои страница насловена како \"\$1\".'''",
'toomanymatches' => 'Премногу резултати од пребарувањето, ве молиме обидете се со поинакво барање',
'titlematches' => 'Насловот на статијата одговара',
'notitlematches' => 'Ниеден наслов на страница не одговара',
'textmatches' => 'Текстот на статијата одговара',
'notextmatches' => 'Ниеден текст во статиите не одговара',
-'prevn' => 'претходни $1',
-'nextn' => 'следни $1',
+'prevn' => '{{PLURAL:претходна $1| претходни $1}}',
+'nextn' => '{{PLURAL:следна $1|следни $1}}',
'prevn-title' => '{{PLURAL:$1|Претходен|Претходни}} $1 {{PLURAL:$1|резултат|резултати}}',
'nextn-title' => '{{PLURAL:$1|Следен|Следни}} $1 {{PLURAL:$1|резултат|резултати}}',
'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултати}} на страница',
-'viewprevnext' => 'Погледајте ($1) ($2) ($3)',
+'viewprevnext' => 'Погледајте ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Нагодувања на пребарувањето',
'searchmenu-exists' => "'''На ова вики има страница со наслов „[[:$1]]“'''",
'searchmenu-new' => "Создај ја страницата ''[[:$1]]'' на ова вики!'''",
'searchhelp-url' => 'Help:Содржина',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прелистување на страници со овој префикс]]',
'searchprofile-articles' => 'Статии',
-'searchprofile-articles-and-proj' => 'Статии & проектни страници',
-'searchprofile-project' => 'Проектни страници',
-'searchprofile-images' => 'Податотеки',
+'searchprofile-project' => 'Помош и проектни страници',
+'searchprofile-images' => 'Мултимедија',
'searchprofile-everything' => 'Сè',
'searchprofile-advanced' => 'Напредно',
'searchprofile-articles-tooltip' => 'Пребарај во $1',
@@ -1210,8 +1218,6 @@ $2',
'searchprofile-images-tooltip' => 'Пребарај податотеки',
'searchprofile-everything-tooltip' => 'Пребарај низ сета содржина (вклучително и страници за разговор)',
'searchprofile-advanced-tooltip' => 'Пребарај во посебни именски простори',
-'prefs-search-nsdefault' => 'Пребарување по основно:',
-'prefs-search-nscustom' => 'Пребарај посебни именски простори:',
'search-result-size' => '$1 ({{PLURAL:$2|1 збор|$2 збора}})',
'search-result-score' => 'Релевантност: $1%',
'search-redirect' => '(пренасочување $1)',
@@ -1224,11 +1230,12 @@ $2',
'search-mwsuggest-disabled' => 'без сугестии',
'search-relatedarticle' => 'Поврзано',
'mwsuggest-disable' => 'Оневозможи AJAX сугестии',
+'searcheverything-enable' => 'Барај во сите именски простори',
'searchrelated' => 'поврзано',
'searchall' => 'сè',
'showingresults' => "Подолу {{PLURAL:$1|е прикажан '''1''' резултат|се прикажани '''$1''' резултати}} почнувајќи од #'''$2'''.",
'showingresultsnum' => "Подолу {{PLURAL:$3|е прикажан '''1''' резултат|се прикажани '''$3''' резултати}} почнувајќи од '''$2'''.",
-'showingresultstotal' => "Подолу {{PLURAL:$4|е прикажан '''$1''' резултат|се прикажани '''$1 - $2''' од '''$3''' резултати}}",
+'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултати '''$1 - $2''' од '''$3'''}} за '''$4'''",
'nonefound' => "'''Напомена''': Само некои именски простори се пребаруваат по основно.
Обидете се со додавање на префиксот ''all:'' за да пребарувате низ сите содржини (вклучувајќи страници за разговор, шаблони, итн) или користете го бараниот именски простор како префикс.",
'search-nonefound' => 'Нема резултати кои го задоволуваат бараното.',
@@ -1237,96 +1244,135 @@ $2',
'powersearch-ns' => 'Пребарај во следниве именски простори:',
'powersearch-redir' => 'Список на пренасочувања',
'powersearch-field' => 'Пребарување на',
+'powersearch-togglelabel' => 'Одбери:',
+'powersearch-toggleall' => 'Сè',
+'powersearch-togglenone' => 'Ништо',
'search-external' => 'Надворешно пребарување',
'searchdisabled' => '{{SITENAME}} пребарувањето е оневозможено.
Во меѓувреме, можете да пребарувате преку Google.
Да напоменеме дека нивното индексирање на {{SITENAME}} содржините може да биде застарено.',
+# Quickbar
+'qbsettings' => 'Лента за брз избор',
+'qbsettings-none' => 'Без мени',
+'qbsettings-fixedleft' => 'Фиксирано лево',
+'qbsettings-fixedright' => 'Фиксирано десно',
+'qbsettings-floatingleft' => 'Пловечко лево',
+'qbsettings-floatingright' => 'Пловечки десно',
+
# Preferences page
-'preferences' => 'Нагодувања',
-'mypreferences' => 'мои нагодувања',
-'prefs-edits' => 'Број на уредувања:',
-'prefsnologin' => 'Не сте најавени',
-'prefsnologintext' => 'Мора да бидете <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} најавени]</span> за промена на вашите кориснички нагодувања.',
-'prefsreset' => 'Воспоставени се стандардните нагодувања.',
-'qbsettings' => 'Лента за брз избор',
-'qbsettings-none' => 'Без мени',
-'qbsettings-fixedleft' => 'Фиксирано лево',
-'qbsettings-fixedright' => 'Фиксирано десно',
-'qbsettings-floatingleft' => 'Пловечко лево',
-'qbsettings-floatingright' => 'Пловечки десно',
-'changepassword' => 'Промени лозинка',
-'skin' => 'Маска',
-'skin-preview' => 'Прегледај',
-'math' => 'Математика',
-'dateformat' => 'Формат на датумот',
-'datedefault' => 'Небитно',
-'datetime' => 'Датум и време',
-'math_failure' => 'Неможам да парсирам',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функција',
-'math_lexing_error' => 'лексичка грешка',
-'math_syntax_error' => 'синтаксна грешка',
-'math_image_error' => 'неуспешна PNG конверзија',
-'math_bad_tmpdir' => 'Неможе да се запише во или да се создаде привремен именик за математички операции',
-'math_bad_output' => 'Неможе да се запише во или да се создаде именик за излезни математички операции',
-'math_notexvc' => 'Недостасува извршната податотека texvc;
-погледнете math/README за нејзино нагодување.',
-'prefs-personal' => 'Кориснички профил',
-'prefs-rc' => 'Скорешни промени',
-'prefs-watchlist' => 'Список на набљудувања',
-'prefs-watchlist-days' => 'Број на денови за приказ во списокот на набљудувања:',
-'prefs-watchlist-days-max' => '(максимум 7 дена)',
-'prefs-watchlist-edits' => 'Максимален број на промени прикажани во проширениот список на набљудувања:',
-'prefs-watchlist-edits-max' => '(максимален број: 1000)',
-'prefs-misc' => 'Други нагодувања',
-'prefs-resetpass' => 'Промени лозинка',
-'saveprefs' => 'Зачувај нагодувања',
-'resetprefs' => 'Избриши незачувани измени',
-'restoreprefs' => 'Врати сè по основно',
-'textboxsize' => 'Уредување',
-'prefs-edit-boxsize' => 'Големина на прозорецот за уредување.',
-'rows' => 'Редови:',
-'columns' => 'Колони:',
-'searchresultshead' => 'Пребарување',
-'resultsperpage' => 'Резултати по страница:',
-'contextlines' => 'Линии по резултат:',
-'contextchars' => 'Контекст по ред:',
-'stub-threshold' => 'Праг за <a href="#" class="stub">никулци</a> (бајти):',
-'recentchangesdays' => 'Денови за приказ во скорешните промени:',
-'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|ден|денови}})',
-'recentchangescount' => 'Број на уредувања кои ќе се прикажуват во скорешни промени, историја на страница и во дневници, по основно:',
-'savedprefs' => 'Вашите нагодувања се зачувани.',
-'timezonelegend' => 'Часовна зона:',
-'timezonetext' => '¹Број на часови за колку се разликува вашето локално време од серверското време (UTC).',
-'localtime' => 'Локално време:',
-'timezoneselect' => 'Часовна зона:',
-'timezoneuseserverdefault' => 'Користи серверско време',
-'timezoneuseoffset' => 'Друго (посочете отстапување)',
-'timezoneoffset' => 'Отстапка¹:',
-'servertime' => 'Серверско време:',
-'guesstimezone' => 'Пополни од прелистувачот',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктик',
-'timezoneregion-arctic' => 'Арктик',
-'timezoneregion-asia' => 'Азија',
-'timezoneregion-atlantic' => 'Атлантски Океан',
-'timezoneregion-australia' => 'Австралија',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Индиски Океан',
-'timezoneregion-pacific' => 'Тихи Океан',
-'allowemail' => 'Дозволи е-пошта од други корисници',
-'prefs-searchoptions' => 'Нагодувања на пребарувањето',
-'prefs-namespaces' => 'Именски простори',
-'defaultns' => 'Пребарувај во овие именски простори по основно:',
-'default' => 'по основно',
-'files' => 'Податотеки',
-'prefs-custom-css' => 'Посебно CSS',
-'prefs-custom-js' => 'Посебно JS',
+'preferences' => 'Нагодувања',
+'mypreferences' => 'мои нагодувања',
+'prefs-edits' => 'Број на уредувања:',
+'prefsnologin' => 'Не сте најавени',
+'prefsnologintext' => 'Мора да бидете <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} најавени]</span> за промена на вашите кориснички нагодувања.',
+'changepassword' => 'Промени лозинка',
+'prefs-skin' => 'Руво',
+'skin-preview' => 'Прегледај',
+'prefs-math' => 'Математика',
+'datedefault' => 'Небитно',
+'prefs-datetime' => 'Датум и време',
+'prefs-personal' => 'Кориснички профил',
+'prefs-rc' => 'Скорешни промени',
+'prefs-watchlist' => 'Список на набљудувања',
+'prefs-watchlist-days' => 'Број на денови за приказ во списокот на набљудувања:',
+'prefs-watchlist-days-max' => '(највеќе 7 дена)',
+'prefs-watchlist-edits' => 'Максимален број на промени прикажани во проширениот список на набљудувања:',
+'prefs-watchlist-edits-max' => '(највеќе: 1000)',
+'prefs-watchlist-token' => 'Жетон на список на набљудувања:',
+'prefs-misc' => 'Други нагодувања',
+'prefs-resetpass' => 'Промени лозинка',
+'prefs-email' => 'Нагодувања за е-пошта',
+'prefs-rendering' => 'Изглед',
+'saveprefs' => 'Зачувај нагодувања',
+'resetprefs' => 'Избриши незачувани измени',
+'restoreprefs' => 'Врати сè по основно',
+'prefs-editing' => 'Уредување',
+'prefs-edit-boxsize' => 'Големина на прозорецот за уредување.',
+'rows' => 'Редови:',
+'columns' => 'Колони:',
+'searchresultshead' => 'Пребарување',
+'resultsperpage' => 'Резултати по страница:',
+'contextlines' => 'Линии по резултат:',
+'contextchars' => 'Контекст по ред:',
+'stub-threshold' => 'Праг за <a href="#" class="stub">никулци</a> (бајти):',
+'recentchangesdays' => 'Денови за приказ во скорешните промени:',
+'recentchangesdays-max' => '(највеќе $1 {{PLURAL:$1|ден|дена}})',
+'recentchangescount' => 'Број на уредувања кои ќе се прикажат по основно:',
+'prefs-help-recentchangescount' => 'Подразбира скорешни промени, истории на страници и дневници.',
+'prefs-help-watchlist-token' => 'Со внесување на тајниот клуч во полево ќе создадете RSS емитување за вашиот список на набљудувања.
+Секој што го знае клучот во полево ќе може да го чита вашиот список на набљудувања, па затоа изберете некоја безбедна вредност.
+Еве една случајно-создадена вредност што можете да ја користите: $1',
+'savedprefs' => 'Вашите нагодувања се зачувани.',
+'timezonelegend' => 'Часовна зона:',
+'localtime' => 'Локално време:',
+'timezoneuseserverdefault' => 'Користи серверско време',
+'timezoneuseoffset' => 'Друго (посочете отстапување)',
+'timezoneoffset' => 'Отстапка¹:',
+'servertime' => 'Серверско време:',
+'guesstimezone' => 'Пополни од прелистувачот',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктик',
+'timezoneregion-arctic' => 'Арктик',
+'timezoneregion-asia' => 'Азија',
+'timezoneregion-atlantic' => 'Атлантски Океан',
+'timezoneregion-australia' => 'Австралија',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индиски Океан',
+'timezoneregion-pacific' => 'Тихи Океан',
+'allowemail' => 'Дозволи е-пошта од други корисници',
+'prefs-searchoptions' => 'Нагодувања на пребарувањето',
+'prefs-namespaces' => 'Именски простори',
+'defaultns' => 'Инаку пребарувај во овие именски простори:',
+'default' => 'по основно',
+'prefs-files' => 'Податотеки',
+'prefs-custom-css' => 'Посебно CSS',
+'prefs-custom-js' => 'Посебно JS',
+'prefs-reset-intro' => 'Може да ја користите оваа страница за враќање на вашите нагодувања на основно-зададените нагодувања на викито. Оваа не може да се врати.',
+'prefs-emailconfirm-label' => 'Потврда на е-пошта:',
+'prefs-textboxsize' => 'Големина на прозорец за уредување',
+'youremail' => 'Е-пошта:',
+'username' => 'Корисничко име:',
+'uid' => 'ID на корисникот:',
+'prefs-memberingroups' => 'Член на {{PLURAL:$1|групата|групите}}:',
+'prefs-registration' => 'Време на регистрација:',
+'yourrealname' => 'Вистинско име:',
+'yourlanguage' => 'Јазик:',
+'yourvariant' => 'Варијанта:',
+'yournick' => 'Потпис:',
+'prefs-help-signature' => 'Коментарите на страниците за разговор треба да се потпишуваат со „<nowiki>~~~~</nowiki>“ кое ќе се претвори во вашиот потпис и време.',
+'badsig' => 'Грешка во потписот.
+Проверете ги HTML ознаките.',
+'badsiglength' => 'Вашиот потпис е премногу долг.
+Мора да биде со помалку од $1 {{PLURAL:$1|знак|знаци}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'Непосочен',
+'gender-male' => 'Машки',
+'gender-female' => 'Женски',
+'prefs-help-gender' => 'По избор: се користи од вики-програмот за создавање на пораки во зависност од наведениот пол.
+Оваа информација ќе биде јавно достапна.',
+'email' => 'Е-пошта',
+'prefs-help-realname' => "'''Вистинското име''' е изборно.
+Доколку изберете да го впишете вашето име, тоа може да се искористи за оддавање на заслуги за вашата работа.",
+'prefs-help-email' => 'Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако си ја заборавите постоечката.
+Исто така можете да изберете другите корисници да ве контактираат преку вашата корисничка страница или страница за разговор, без да го откриете вашиот идентитет.',
+'prefs-help-email-required' => 'Е-поштенска адреса е задолжително да се наведе.',
+'prefs-info' => 'Основни информации',
+'prefs-i18n' => 'Интернационализација',
+'prefs-signature' => 'Потпис',
+'prefs-dateformat' => 'Формат на датумот',
+'prefs-timeoffset' => 'Временско отстапување',
+'prefs-advancedediting' => 'Напредни нагодувања',
+'prefs-advancedrc' => 'Напредни нагодувања',
+'prefs-advancedrendering' => 'Напредни нагодувања',
+'prefs-advancedsearchoptions' => 'Напредни нагодувања',
+'prefs-advancedwatchlist' => 'Напредни нагодувања',
+'prefs-display' => 'Нагодувања за приказ',
+'prefs-diffs' => 'Разлики',
# User rights
-'userrights' => 'Раководење со кориснички права', # Not used as normal message but as header for the special page itself
+'userrights' => 'Раководење со кориснички права',
'userrights-lookup-user' => 'Раководење со кориснички групи',
'userrights-user-editname' => 'Внеси корисничко име:',
'editusergroup' => 'Уреди кориснички групи',
@@ -1334,6 +1380,7 @@ $2',
'userrights-editusergroup' => 'Уреди ги корисничките групи',
'saveusergroups' => 'Зачувај ги корисничките групи',
'userrights-groupsmember' => 'Член на:',
+'userrights-groupsmember-auto' => 'Подразбран член на:',
'userrights-groups-help' => 'Можете да ги промените групите во кои е овој корисник:
* Маркирано, значи дека корисникот е во групата.
* Немаркирано, значи дека корисникот не е во групата.
@@ -1398,6 +1445,7 @@ $2',
'right-bigdelete' => 'Бришење страници со долга историја',
'right-deleterevision' => 'Бришење и враќање на конкретни ревизии на страници',
'right-deletedhistory' => 'Прегледување на записи во историја на бришења, без придружниот текст',
+'right-deletedtext' => 'Прегледување на избришан текст и промени помеѓу избришани ревизии',
'right-browsearchive' => 'Пребарување низ избришани страници',
'right-undelete' => 'Обновување избришана страница',
'right-suppressrevision' => 'Прегледување и враќање на ревизии сокриени од администратори',
@@ -1411,6 +1459,8 @@ $2',
'right-editprotected' => 'Уредување на заштитени страници (без каскадна заштита)',
'right-editinterface' => 'Уредување на кориснички посредник',
'right-editusercssjs' => 'Уредување на CSS и JS податотеки на други корисници',
+'right-editusercss' => 'Уредување на CSS податотеки на други корисници',
+'right-edituserjs' => 'Уредување на JS податотеки на други корисници',
'right-rollback' => 'Брзо отстранување на уредувањата на последниот корисник кој уредувал одредена страница',
'right-markbotedits' => 'Означување на вратени уредувања како ботовски уредувања',
'right-noratelimit' => 'Без временски ограничувања на уредување',
@@ -1427,6 +1477,8 @@ $2',
'right-siteadmin' => 'Заклучување и отклучување на базата на податоци',
'right-reset-passwords' => 'Менување на лозинки на други корисници',
'right-override-export-depth' => 'Извезување на страници вклучително и поврзани страници со длабочина 5',
+'right-versiondetail' => 'Приказ на проширени информации за верзијата на програмската опрема',
+'right-sendemail' => 'Испраќање на е-пошта до други корисници',
# User rights log
'rightslog' => 'Дневник на менувања на кориснички права',
@@ -1476,6 +1528,15 @@ $2',
'recentchanges-legend' => 'Нагодувања за скорешни промени',
'recentchangestext' => 'На оваа страница ги следите скорешните промени на викито.',
'recentchanges-feed-description' => 'Следење на најскорешните промени на викито во овие емитувања.',
+'recentchanges-label-legend' => 'Легенда: $1',
+'recentchanges-legend-newpage' => '$1 - нова страница',
+'recentchanges-label-newpage' => 'Ова уредување создаде нова страница',
+'recentchanges-legend-minor' => '$1 - ситно уредување',
+'recentchanges-label-minor' => 'Ова е ситно уредување',
+'recentchanges-legend-bot' => '$1 - ботовско уредување',
+'recentchanges-label-bot' => 'Ова уредување е направено од бот',
+'recentchanges-legend-unpatrolled' => '$1 - непатролирано уредување',
+'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не било патролирано',
'rcnote' => "Долу {{PLURAL:$1|е прикажана '''1''' промена|се прикажани скорешните '''$1''' промени}} {{PLURAL:$2|денес|во последниве '''$2''' дена}}, почнувајќи од $5, $4.",
'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
@@ -1493,7 +1554,6 @@ $2',
'minoreditletter' => 'с',
'newpageletter' => 'Н',
'boteditletter' => 'б',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|корисник кој набљудува|корисници кои набљудуваат}}]',
'rc_categories' => 'Ограничи на категории (раздели со "|")',
'rc_categories_any' => 'Било кои',
@@ -1504,6 +1564,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Поврзани промени',
+'recentchangeslinked-feed' => 'Поврзани промени',
+'recentchangeslinked-toolbox' => 'Поврзани промени',
'recentchangeslinked-title' => 'Промени поврзани со "$1"',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Нема промени на поврзаните страници во зададениот период.',
@@ -1515,8 +1577,8 @@ $2',
# Upload
'upload' => 'Подигни податотека',
'uploadbtn' => 'Подигни податотека',
-'reupload' => 'Повторно подигни',
'reuploaddesc' => 'Прекини и назад кон образецот за подигање',
+'upload-tryagain' => 'Поднеси изменет опис на податотеката',
'uploadnologin' => 'Не сте најавени',
'uploadnologintext' => 'Морате да бидете [[Special:UserLogin|најавени]] за да можете да подигате податотеки.',
'upload_directory_missing' => 'Папката за подигање на слики ($1) не постои и не може да биде создадена од опслужувачот.',
@@ -1549,6 +1611,7 @@ $2',
'illegalfilename' => 'Името на податотеката "$1" содржи знаци што не се дозволени во наслов на страници.
Ве молиме преименувајте ја податотеката и обидете се да ја подигнете повторно.',
'badfilename' => 'Името на податотеката е променето во "$1".',
+'filetype-mime-mismatch' => 'Наставката на податотеката не е соодветна на MIME-типот.',
'filetype-badmime' => 'Податотеките од MIME-тип „$1“ не се дозволени за подигање.',
'filetype-bad-ie-mime' => 'Не може да се подигне оваа податотека бидејќи Internet Explorer би можел да го препознае како "$1", што е оневозможен и потенцијално опасен тип на податотека.',
'filetype-unwanted-type' => "'''\".\$1\"''' не е посакуван тип на податотека.
@@ -1571,7 +1634,6 @@ $2',
* Име на податотека која се подигнува: '''<tt>[[:$1]]</tt>'''
* Име на постоечка податотека: '''<tt>[[:$2]]</tt>'''
Ве молиме изберете друго име за податотеката.",
-'fileexists-thumb' => "'''<center>Постоечка податотека</center>'''",
'fileexists-thumbnail-yes' => "Податотеката изгледа дека е слика со намалена големина ''(минијатура)''. [[$1|thumb]]
Ве молиме проверете ја податотеката '''<tt>[[:$1]]</tt>'''.
Ако податотеката која ја проверувате е истата слика во својата оригинална големина тогаш не мора да ја подигате дополнително.",
@@ -1586,6 +1648,7 @@ $2',
'file-deleted-duplicate' => 'Податотека индентична со податотеката ([[$1]]) претходно била избришана. Треба да проверите во дневникот на бришења за оваа податотека пред повторно да ја подигнете.',
'successfulupload' => 'Подигањето е успешно',
'uploadwarning' => 'Предупредување при подигање',
+'uploadwarning-text' => 'Изменете го описот на податотеката подолу и обидете се повторно.',
'savefile' => 'Зачувај податотека',
'uploadedimage' => 'подигнато "[[$1]]"',
'overwroteimage' => 'подигнато нова верзија на "[[$1]]"',
@@ -1593,12 +1656,14 @@ $2',
'uploaddisabledtext' => 'Подигањето на податотеки е оневозможено.',
'php-uploaddisabledtext' => 'Подигнување на податотеки е оневозможено во PHP. Проверете го нагодувањето за параметарот file_uploads.',
'uploadscripted' => 'Податотеката содржи HTML или скриптен код што може да биде погрешно протолкуван од прелистувач.',
-'uploadcorrupt' => 'Податотеката е оштетена или има неточна наставка.
-Ве молиме проверете ја податотеката и подигнете ја повторно.',
'uploadvirus' => 'Оваа податотека содржи вирус! Повеќе детали: $1',
+'upload-source' => 'Изворна податотека',
'sourcefilename' => 'Изворно име на податотеката:',
+'sourceurl' => 'Изворен URL:',
'destfilename' => 'Целно име на податотеката:',
'upload-maxfilesize' => 'Максимална големина на податотеката: $1',
+'upload-description' => 'Опис на податотека',
+'upload-options' => 'Нагодувања за подигање',
'watchthisupload' => 'Набљудувај ја оваа податотека',
'filewasdeleted' => 'Податотека со ова име претходно била подигната и потоа избришана.
Проверете во $1 пред да продолжите со повтроно подигање.',
@@ -1623,15 +1688,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- Не менувај ја содржината на оваа редица, остави ја како што е -->',
-'upload-proto-error' => 'Погрешен протокол',
-'upload-proto-error-text' => 'За далечинско подигнување потребно е URL-то да почнува со <code>http://</code> или <code>ftp://</code>.',
-'upload-file-error' => 'Внатрешна грешка',
-'upload-file-error-text' => 'Се случи внатрешна грешка при обидот за создавање на помошна податотека на опслужувачот.
+'upload-proto-error' => 'Погрешен протокол',
+'upload-proto-error-text' => 'За далечинско подигнување потребно е URL-то да почнува со <code>http://</code> или <code>ftp://</code>.',
+'upload-file-error' => 'Внатрешна грешка',
+'upload-file-error-text' => 'Се случи внатрешна грешка при обидот за создавање на помошна податотека на опслужувачот.
Молиме контактирајте некој [[Special:ListUsers/sysop|администратор]].',
-'upload-misc-error' => 'Непозната грешка при подигањето',
-'upload-misc-error-text' => 'Се појави грешка при подигнувањето.
+'upload-misc-error' => 'Непозната грешка при подигањето',
+'upload-misc-error-text' => 'Се појави грешка при подигнувањето.
Проверете дали URL-то е правилно и достапно, па обидете се повторно.
Ако пак се појави проблем контактирајте со некој [[Special:ListUsers/sysop|администратор]].',
+'upload-too-many-redirects' => 'Оваа URL адреса содржеше премногу пренасочувања',
+'upload-unknown-size' => 'Непозната големина',
+'upload-http-error' => 'HTTP грешка: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Оневозможен пристап',
+'img-auth-nopathinfo' => 'Недостасува PATH_INFO.
+Вашиот опслужувач не е нагоден за да ја проследи оваа информација.
+Можеби се заснова на CGI, и така не подржува img_auth.
+Видете http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Бараниот пат не е во конфигурираниот именик за подигнување.',
+'img-auth-badtitle' => 'Не може да се конструира важечки наслов од „$1“.',
+'img-auth-nologinnWL' => 'Не сте најавени и „$1“ не е на списокот на допуштени.',
+'img-auth-nofile' => 'Податотеката "$1" не постои.',
+'img-auth-isdir' => 'Се обидувате да пристапите до именикот "$1".
+Допуштен е само податотечен пристап.',
+'img-auth-streaming' => 'Поток "$1".',
+'img-auth-public' => 'Функцијата на img_auth.php служи за излез на податотеки од приватни викија.
+Ова вики е нагодено како јавно вики.
+Од причини на оптимална сигурност, img_auth.php е оневозможен.',
+'img-auth-noread' => 'Корисникот нема пристап за читање на "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Неважечка URL: $1',
+'http-invalid-scheme' => 'Не се поддржани URL-адреси со шема „$1“',
+'http-request-error' => 'Неуспешно HTTP барање поради непозната грешка.',
+'http-read-error' => 'Грешка при читањето на HTTP.',
+'http-timed-out' => 'HTTP-барањето истече.',
+'http-curl-error' => 'Грешка при добивањето на URL: $1',
+'http-host-unreachable' => 'Не можев да пристапам до URL-адресата',
+'http-bad-status' => 'Се појави проблем во текот на обработката на HTTP-барањето: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Не може да се пристапи до URL-то',
@@ -1643,6 +1739,7 @@ PICT # misc.
Може да се обидете кога местото нема да биде толку оптоварено.',
'license' => 'Лиценцирање:',
+'license-header' => 'Лиценцирање',
'nolicense' => 'Нема',
'license-nopreview' => '(Прегледот не е достапен)',
'upload_source_url' => ' (важечка, јавно достапна URL-адреса)',
@@ -1663,6 +1760,7 @@ PICT # misc.
'listfiles_count' => 'Верзии',
# File description page
+'file-anchor-link' => 'Податотека',
'filehist' => 'Историја на податотеката',
'filehist-help' => 'Кликнете на датум/време за да ја видите податотеката како изгледала тогаш.',
'filehist-deleteall' => 'бриши се',
@@ -1671,12 +1769,13 @@ PICT # misc.
'filehist-current' => 'тековна',
'filehist-datetime' => 'Датум/Време',
'filehist-thumb' => 'Минијатура',
-'filehist-thumbtext' => 'Мини-слика за верзија од $1',
+'filehist-thumbtext' => 'Минијатура за верзија од $1',
'filehist-nothumb' => 'Нема минијатура',
'filehist-user' => 'Корисник',
'filehist-dimensions' => 'Димензии',
'filehist-filesize' => 'Големина',
'filehist-comment' => 'Коментар',
+'filehist-missing' => 'Непостоечка податотека',
'imagelinks' => 'Врски до податотекава',
'linkstoimage' => 'До оваа податотека има {{PLURAL:$1|врска од следнава страница|врски од следниве $1 страници}}:',
'linkstoimage-more' => 'Повеќе од {{PLURAL:$1|една страница е поврзана|$1 страници се поврзани}} со оваа податотека.
@@ -1686,15 +1785,16 @@ PICT # misc.
'morelinkstoimage' => 'Погледни [[Special:WhatLinksHere/$1|други врски]] кон оваа податотека.',
'redirectstofile' => '{{PLURAL:$1|Следната податотека пренасочува|$1 Следните податотеки пренасочуваат}} кон оваа податотека:',
'duplicatesoffile' => '{{PLURAL:$1|Следната податотека е дупликат|$1 Следните податотеки се дупликати}} на оваа податотека ([[Special:FileDuplicateSearch/$2|повеќе информации]]):',
-'sharedupload' => 'Оваа податотека е од $1 и може да се користи во други проекти.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Видете $1 за повеќе информации.',
-'shareduploadwiki-desc' => 'Описот на нејзината $1 е прикажан подолу.',
-'shareduploadwiki-linktext' => 'страница за опис на податотека',
-'noimage' => 'Не постои податотека со тоа име, проверете $1',
-'noimage-linktext' => 'подигни една',
+'sharedupload' => 'Оваа податотека е од $1 и може да се користи во други проекти.',
+'sharedupload-desc-there' => 'Оваа податотека е од $1 и може да се користи во други проекти.
+Погледнете ја [$2 страницата за опис на податотеката] за повеќе информации.',
+'sharedupload-desc-here' => 'Оваа податотека е од $1 и можно е да се користи во други проекти.
+Описот на нејзината [$2 страница за опис] е прикажан подолу.',
+'filepage-nofile' => 'Не постои податотека со ова име.',
+'filepage-nofile-link' => 'Нема податотека со ова име, може да ја [$1 подигнете].',
'uploadnewversion-linktext' => 'Подигни нова верзија на оваа податотека',
-'shared-repo-from' => 'од $1', # $1 is the repository name
-'shared-repo' => 'заедничко складиште', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'од $1',
+'shared-repo' => 'заедничко складиште',
# File reversion
'filerevert' => 'Врати $1',
@@ -1725,6 +1825,7 @@ PICT # misc.
** Прекршување на Copyright
** Дуплирање на податотеки',
'filedelete-edit-reasonlist' => 'Уреди причини за бришење',
+'filedelete-maintenance' => 'Бришење и враќање на податотеки е привремено оневозможено поради одржување на базата на податоци.',
# MIME search
'mimesearch' => 'Пребарување по MIME',
@@ -1747,7 +1848,7 @@ PICT # misc.
# Random page
'randompage' => 'Случајна страница',
-'randompage-nopages' => 'Нема страници во именскиот простор "$1".',
+'randompage-nopages' => 'Нема страници во {{PLURAL:$2|следниот именски простор|следниве именски простори}}: $1.',
# Random redirect
'randomredirect' => 'Случајно пренасочување',
@@ -1759,6 +1860,7 @@ PICT # misc.
'statistics-header-edits' => 'Статистики на уредувања',
'statistics-header-views' => 'Статистики на посети',
'statistics-header-users' => 'Статистики за корисници',
+'statistics-header-hooks' => 'Други статистики',
'statistics-articles' => 'Статии',
'statistics-pages' => 'Страници',
'statistics-pages-desc' => 'Сите страници на викито, вклучувајќи и страници за разговор, пренасочувања, и.т.н.',
@@ -1789,8 +1891,8 @@ PICT # misc.
'brokenredirects' => 'Прекинати пренасочувања',
'brokenredirectstext' => 'Следните пренасочувања водат до непостоечки страници.',
-'brokenredirects-edit' => '(уреди)',
-'brokenredirects-delete' => '(бриши)',
+'brokenredirects-edit' => 'уреди',
+'brokenredirects-delete' => 'бриши',
'withoutinterwiki' => 'Страници без интервики (јазични) врски',
'withoutinterwiki-summary' => 'Следните страници немаат врски до други јазични верзии.',
@@ -1898,16 +2000,17 @@ PICT # misc.
# Special:Categories
'categories' => 'Категории',
-'categoriespagetext' => 'Следниве категории содржат страници или медија.
+'categoriespagetext' => '{{PLURAL:$1|Следната категорија содржи|Следните категории содржат}} страници или мултимедијални податотеки.
[[Special:UnusedCategories|Неискористените категории]] не се прикажани овде.
-Исто така види [[Special:WantedCategories|барани категории]].',
+Исто така видете [[Special:WantedCategories|барани категории]].',
'categoriesfrom' => 'Приказ на категории почнувајќи од:',
'special-categories-sort-count' => 'нумеричко подредување',
'special-categories-sort-abc' => 'алфанумеричко подредување по',
# Special:DeletedContributions
-'deletedcontributions' => 'Избришани кориснички придонеси',
-'deletedcontributions-title' => 'Избришани кориснички придонеси',
+'deletedcontributions' => 'Избришани кориснички придонеси',
+'deletedcontributions-title' => 'Избришани кориснички придонеси',
+'sp-deletedcontributions-contribs' => 'придонеси',
# Special:LinkSearch
'linksearch' => 'Надворешни врски',
@@ -1923,6 +2026,16 @@ PICT # misc.
'listusersfrom' => 'Прикажни корисници почнувајќи од:',
'listusers-submit' => 'Прикажи',
'listusers-noresult' => 'Не е пронајден корисник.',
+'listusers-blocked' => '(блокиран)',
+
+# Special:ActiveUsers
+'activeusers' => 'Список на активни корисници',
+'activeusers-intro' => 'Ова е список на корисници кои биле на некој начин активни во последните $1 {{PLURAL:$1|ден|дена}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|уредување|уредувања}} {{PLURAL:$3|денес|во последните $3 дена}}',
+'activeusers-from' => 'Прикажува корисници кои почнуваат на:',
+'activeusers-hidebots' => 'Сокриј ботови',
+'activeusers-hidesysops' => 'Сокриј систем-оператори',
+'activeusers-noresult' => 'Нема пронајдено корисници.',
# Special:Log/newusers
'newuserlogpage' => 'Дневник на регистрирања на корисници',
@@ -1933,18 +2046,23 @@ PICT # misc.
'newuserlog-autocreate-entry' => 'Автоматски создадена корисничка сметка',
# Special:ListGroupRights
-'listgrouprights' => 'Права на кориснички групи',
-'listgrouprights-summary' => 'Следи список на кориснички групи утврдени на ова вики, заедно со нивните придружни права на пристап.
+'listgrouprights' => 'Права на кориснички групи',
+'listgrouprights-summary' => 'Следи список на кориснички групи утврдени на ова вики, заедно со нивните придружни права на пристап.
Можно е да има [[{{MediaWiki:Listgrouprights-helppage}}|дополнителни информации]] за некои права.',
-'listgrouprights-group' => 'Група',
-'listgrouprights-rights' => 'Права',
-'listgrouprights-helppage' => 'Help:Права на групи',
-'listgrouprights-members' => '(список на членови)',
-'listgrouprights-right-display' => '$1 ($2)',
-'listgrouprights-addgroup' => 'Може да додава {{PLURAL:$2|група|групи}}: $1',
-'listgrouprights-removegroup' => 'Може да брише {{PLURAL:$2|група|групи}}: $1',
-'listgrouprights-addgroup-all' => 'Може да ги додава сите групи',
-'listgrouprights-removegroup-all' => 'Може да ги брише сите групи',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Доделено право</span>
+* <span class="listgrouprights-revoked">Одземено право</span>',
+'listgrouprights-group' => 'Група',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права на групи',
+'listgrouprights-members' => '(список на членови)',
+'listgrouprights-addgroup' => 'Може да додава {{PLURAL:$2|група|групи}}: $1',
+'listgrouprights-removegroup' => 'Може да брише {{PLURAL:$2|група|групи}}: $1',
+'listgrouprights-addgroup-all' => 'Може да ги додава сите групи',
+'listgrouprights-removegroup-all' => 'Може да ги брише сите групи',
+'listgrouprights-addgroup-self' => 'Може да додава {{PLURAL:$2|група|групи}} на сопствената корисничка сметка: $1',
+'listgrouprights-removegroup-self' => 'Може да брише {{PLURAL:$2|група|групи}} од сопствената корисничка сметка: $1',
+'listgrouprights-addgroup-self-all' => 'Може да ги додаде сите групи на сопствената корисничка сметка',
+'listgrouprights-removegroup-self-all' => 'Може да ги избрише сите групи од сопствената корисничка сметка',
# E-mail user
'mailnologin' => 'Нема адреса за праќање',
@@ -2016,26 +2134,33 @@ PICT # misc.
'enotif_lastvisited' => 'Видете $1 за сите промени од вашата последна посета.',
'enotif_lastdiff' => 'Видете $1 за да ја видите оваа промена.',
'enotif_anon_editor' => 'анонимен корисник $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Почитуван(а) $WATCHINGUSERNAME,
-Страницата за разговор на {{SITENAME}} беше променета на $PAGEEDITDATE од \'\'\'$PAGEEDITOR\'\'\', види $PAGETITLE_URL.
+
+На {{SITENAME}} страницата $PAGETITLE е $CHANGEDORCREATED на $PAGEEDITDATE од $PAGEEDITOR, видете $PAGETITLE_URL за тековната ревизија.
$NEWPAGE
-Резиме: $PAGESUMMARY $PAGEMINOREDIT
+Опис на уредувачот: $PAGESUMMARY $PAGEMINOREDIT
-Контактирајте го уредувачот:
+Конакт на уредувачот:
е-пошта: $PAGEEDITOR_EMAIL
вики: $PAGEEDITOR_WIKI
-Веќе нема да има известувања за следните промени освен ако не ја посетите оваа страница. Исто така треба да ги ресетирате знаменцата за известување за сите ваши набљудувани страници во вашата листа на набљудувања.
+Повеќе нема да добивате известувања во случај на други понатамошни промени, освен ако не ја посетите оваа страница.
+Можете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.
-{{SITENAME}} систем за известување
+ Системот за известување на {{SITENAME}}
--
-За промена на нагодувањата на вашата листа на набљудувања, види {{fullurl:Special:Watchlist/edit}}
+За да ги промените нагодувањата на списокот на набљудувања, посетете ја страницата
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+За да ја избришете страницата од списокот на набљудувања, посетете ја страницата
+$UNWATCHURL
-Дополнителна помош: {{fullurl:Help:Содржина}}',
+Повратни информации и помош:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Избриши страница',
@@ -2047,10 +2172,11 @@ $NEWPAGE
'delete-confirm' => 'Бриши "$1"',
'delete-backlink' => '← $1',
'delete-legend' => 'Бриши',
-'historywarning' => 'Предупредување: Страницата која сакате да ја избришете има историја:',
+'historywarning' => "'''Предупредување:''' Страницата којашто сакате да ја избришете има историја со околу $1 {{PLURAL:$1|ревизија|ревизии}}:",
'confirmdeletetext' => 'На пат сте трајно да избришете страница заедно со нејзината историја.
Потврдете дека имате намера да го направите ова, дека ги разбирате последиците од тоа, дека го правите ова во согласност со [[{{MediaWiki:Policy-url}}|политиката]].',
'actioncomplete' => 'Дејството беше извршено',
+'actionfailed' => 'Неуспешно дејство',
'deletedtext' => '"<nowiki>$1</nowiki>" беше избришана. Видете $2 за досие на скорешните бришења.',
'deletedarticle' => 'ја избриша „[[$1]]“',
'suppressedarticle' => 'suppressed "[[$1]]"',
@@ -2073,20 +2199,21 @@ $NEWPAGE
продолжете доколку сте сигруни дека треба тоа да го сторите.',
# Rollback
-'rollback' => 'Врати промени',
-'rollback_short' => 'Врати',
-'rollbacklink' => 'Врати',
-'rollbackfailed' => 'Неуспешно враќање',
-'cantrollback' => 'Уредувањето не може да се врати;
+'rollback' => 'Врати промени',
+'rollback_short' => 'Врати',
+'rollbacklink' => 'Врати',
+'rollbackfailed' => 'Неуспешно враќање',
+'cantrollback' => 'Уредувањето не може да се врати;
последниот уредник е воедно и единствениот автор на страницата.',
-'alreadyrolled' => 'Не може да се врати последното уредување од [[:$1]] на [[User:$2|$2]] ([[User talk:$2|Разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => 'Не може да се врати последното уредување од [[:$1]] на [[User:$2|$2]] ([[User talk:$2|Разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
некој друг веќе ја уредил или ги вратил промените на страницата.
Последното уредување беше на [[User:$3|$3]] ([[User talk:$3|Разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Коментарот на уредувањето беше: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Откажани уредувањата на $1; вратено на последната верзија на $2.',
-'sessionfailure' => 'Има проблем со вашата сесија;
+'editcomment' => "Коментарот на уредувањето беше: \"''\$1''\".",
+'revertpage' => 'Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]',
+'revertpage-nouser' => 'Вратени уредувања на (избришано корисничко име) на последната ревизија од [[User:$1|$1]]',
+'rollback-success' => 'Откажани уредувањата на $1; вратено на последната верзија на $2.',
+'sessionfailure' => 'Има проблем со вашата сесија;
оваа дејство е откажано како превентива против преземање сесии.
Притиснете го копчето „назад“ и повторно вчитајте ја страницата од која дојдовте и обидете се повторно.',
@@ -2105,7 +2232,7 @@ $NEWPAGE
'protectexpiry' => 'Истекува:',
'protect_expiry_invalid' => 'Времето на истекување не е добро дефинирано.',
'protect_expiry_old' => 'Времето на истекување е постаро од тековното време.',
-'protect-unchain' => 'Отклучи ја можноста за преместување',
+'protect-unchain-permissions' => 'Отклучи дополнителни можности за заштита',
'protect-text' => "Овде можете да го погледнете или смените нивото на заштита за страницата '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Не можете да ја менувате заштитата додека сте блокирани. Овде се
дадени актуелните нагодувања за страницата '''$1''':",
@@ -2135,7 +2262,7 @@ $NEWPAGE
** Бескорисна уредувачка војна
** Страница со зачестена посета',
'protect-edit-reasonlist' => 'Уреди причини за заштита',
-'protect-expiry-options' => '1 час: 1 hour,1 ден:1 day,1 недела:1 week,2 недели:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 час: 1 hour,1 ден:1 day,1 недела:1 week,2 недели:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
'restriction-type' => 'Дозвола:',
'restriction-level' => 'Ниво на заштита:',
'minimum-size' => 'Минимална големина',
@@ -2178,6 +2305,7 @@ $NEWPAGE
'undelete-nodiff' => 'Не постои постара ревизија.',
'undeletebtn' => 'Обнови',
'undeletelink' => 'погледај/врати',
+'undeleteviewlink' => 'преглед',
'undeletereset' => 'Врати',
'undeleteinvert' => 'Обратен избор',
'undeletecomment' => 'Причина:',
@@ -2216,19 +2344,23 @@ $1',
'contributions-title' => 'Кориснички придонеси за $1',
'mycontris' => 'мои придонеси',
'contribsub2' => 'За $1 ($2)',
-'nocontribs' => 'Не се пронајдени промени што одговараат на овој критериум.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Не се пронајдени промени што одговараат на овој критериум.',
'uctop' => ' (врв)',
'month' => 'Од месец (и порано):',
'year' => 'Од година (и порано):',
-'sp-contributions-newbies' => 'Прикажи придонеси само на нови корисници',
-'sp-contributions-newbies-sub' => 'За нови кориснички сметки',
-'sp-contributions-newbies-title' => 'Придонеси на нови корисници',
-'sp-contributions-blocklog' => 'Дневник на блокирања',
-'sp-contributions-logs' => 'дневници',
-'sp-contributions-search' => 'Пребарување на придонеси',
-'sp-contributions-username' => 'IP-адреса или корисничко име:',
-'sp-contributions-submit' => 'Пребарај',
+'sp-contributions-newbies' => 'Прикажи придонеси само на нови корисници',
+'sp-contributions-newbies-sub' => 'За нови кориснички сметки',
+'sp-contributions-newbies-title' => 'Придонеси на нови корисници',
+'sp-contributions-blocklog' => 'Дневник на блокирања',
+'sp-contributions-deleted' => 'избришани кориснички придонеси',
+'sp-contributions-logs' => 'дневници',
+'sp-contributions-talk' => 'разговор',
+'sp-contributions-userrights' => 'раководење со кориснички права',
+'sp-contributions-blocked-notice' => 'Овој корисник е блокиран. Последните ставки во дневникот на блокирања, за ваша информација се дадени подолу:',
+'sp-contributions-search' => 'Пребарување на придонеси',
+'sp-contributions-username' => 'IP-адреса или корисничко име:',
+'sp-contributions-submit' => 'Пребарај',
# What links here
'whatlinkshere' => 'Што води овде',
@@ -2252,6 +2384,7 @@ $1',
# Block/unblock
'blockip' => 'Блокирај корисник',
+'blockip-title' => 'Блокирај корисник',
'blockip-legend' => 'Блокирај корисник',
'blockiptext' => 'Користете го долниот образец за да го забраните пристапот за пишување од одредена IP-адреса или корисничко име.
Ова единствено треба да се прави за да се спречи вандализам, во согласност со [[{{MediaWiki:Policy-url}}|правилата на Википедија]].
@@ -2275,7 +2408,7 @@ $1',
'ipbenableautoblock' => 'Автоматски блокирај ја последната IP-адреса што ја користел корисникот и сите понатамошни адреси од кои ќе се обиде да уредува',
'ipbsubmit' => 'Блокирај го овој корисник',
'ipbother' => 'Друг рок:',
-'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 седмица:1 week,2 седмици:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 седмица:1 week,2 седмици:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
'ipbotheroption' => 'друго',
'ipbotherreason' => 'Друга, дополнителна причина:',
'ipbhidename' => 'Сокриј корисничко име во уредувања и списоци',
@@ -2304,9 +2437,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 привремени блокирања',
'ipblocklist-sh-addressblocks' => '$1 блокирани поединечни IP-адреси',
'ipblocklist-submit' => 'Пребарај',
+'ipblocklist-localblock' => 'Локален блок',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|друг блок|други блокови}}',
'blocklistline' => '$1, $2 го блокираше $3 ($4)',
'infiniteblock' => 'бесконечно',
-'expiringblock' => 'истекува на $1',
+'expiringblock' => 'истекува на $1 во $2',
'anononlyblock' => 'само анон.',
'noautoblockblock' => 'оневозможено автоблокирање',
'createaccountblock' => 'блокирано создавање кориснички сметки',
@@ -2321,7 +2456,10 @@ $1',
'autoblocker' => 'Автоматски сте блокирани бидејќи вашата IP-адреса била скоро користена од „[[User:$1|$1]]“.
Причината за блокирање на $1 била: „$2“',
'blocklogpage' => 'Дневник на блокирања',
-'blocklog-fulllog' => 'Целосен дневник на блокирања',
+'blocklog-showlog' => 'Овој корисник бил претходно блокиран.
+Дневникот на блокирања, за ваша информација е прикажан подолу:',
+'blocklog-showsuppresslog' => 'Овој корисник бил претходно блокиран и сокриен.
+Дневникот на ограничувања, за ваша информација е прикажан подолу:',
'blocklogentry' => 'блокирано [[$1]] со рок на истекување до $2, $3',
'reblock-logentry' => 'променети нагодувања за блокирање на [[$1]] со рок на истекување од $2 $3',
'blocklogtext' => 'Ова е дневник на блокирање и одблокирање на кориснци.
@@ -2342,11 +2480,13 @@ $1',
'ipb_already_blocked' => '„$1“ е веќе блокиран',
'ipb-needreblock' => '== Веќе блокиран ==
$1 е веќе блокиран. Дали сакате да направите промена?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокирање|Други блокирања}}',
'ipb_cant_unblock' => 'Грешка: Блокирањето $1 не постои.
Можеби веќе е одблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP-адресата $1 не е директно блокирана и не може да се деблокира.
Таа е блокирана како дел од блокот адреси $2, кој не може да се деблокира.',
'ip_range_invalid' => 'Неважечки IP дијапазон на адреси.',
+'ip_range_toolarge' => 'Не се дозволени опсежни блокирања поголеми од /$1.',
'blockme' => 'Блокирај ме',
'proxyblocker' => 'Блокер на застапници (proxy)',
'proxyblocker-disabled' => 'Оваа функција е оневозможена.',
@@ -2358,6 +2498,7 @@ $1 е веќе блокиран. Дали сакате да направите
'sorbs_create_account_reason' => 'Вашата IP-адреса е наведена како отворен застапникот (proxy) во DNSBL користена од {{SITENAME}}.
Не можете да создадете корисничка сметка.',
'cant-block-while-blocked' => 'Не можете да блокирате други корисници додека и вие самите сте блокирани.',
+'cant-see-hidden-user' => 'Корисникот кој се обидувате да го блокирате е веќе блокиран и сокриен. Бидејќи вие немате права за сокривање на корисник, не можете да ги видите или уредувате корисничките блокирања.',
# Developer tools
'lockdb' => 'Заклучи база на податоци',
@@ -2401,6 +2542,7 @@ $1 е веќе блокиран. Дали сакате да направите
Во овие случаи, ќе треба рачно да се премести или спои ако има потреба.',
'movearticle' => 'Премести страница:',
+'moveuserpage-warning' => "'''Предупредување:''' На пат сте да преместите корисничка страница. Имајте предвид дека само страницата ќе биде преместена, а самиот корисник ''нема'' да биде преименуван.",
'movenologin' => 'Не сте најавени',
'movenologintext' => 'Мора да бидете регистриран корисник и [[Special:UserLogin|најавен]] за да преместите страница.',
'movenotallowed' => 'Немате доволно привилегии за преместување на страници.',
@@ -2411,7 +2553,7 @@ $1 е веќе блокиран. Дали сакате да направите
'move-watch' => 'Набљудувај ја оваа страница',
'movepagebtn' => 'Премести страница',
'pagemovedsub' => 'Успешно преместување',
-'movepage-moved' => '\'\'\'"$1" беше преместена под името "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" беше преместена под името "$2"\'\'\'',
'movepage-moved-redirect' => 'Беше направено пренасочување.',
'movepage-moved-noredirect' => 'Создавањето на пренасочување е оневозможено.',
'articleexists' => 'Страница со тоа име веќе постои или името што го избравте не е валидно.
@@ -2455,6 +2597,14 @@ $1 е веќе блокиран. Дали сакате да направите
'imageinvalidfilename' => 'Целниот наслов на податотеката е невалиден',
'fix-double-redirects' => 'Ажурирајте ги сите пренасочувања кои покажуваат на првобитниот наслов',
'move-leave-redirect' => 'Направи пренасочување',
+'protectedpagemovewarning' => "'''Предупредување:''' Оваа страница е заклучена, така што само корисници со администраторски привилегии може да ја преместат.
+За ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
+'semiprotectedpagemovewarning' => "'''Напомена:''' Оваа страница е заклучена, така што само регистрирани корисници може да ја преместат.
+За ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
+'move-over-sharedrepo' => '== Податотеката постои ==
+[[:$1]] постои на заедничко складиште. Ако податотеката ја преместите на овој наслов, тоа ќе ја потисне заедничката податотека.',
+'file-exists-sharedrepo' => 'Одбраното име на податотеката веќе се користи на заедничко складиште.
+Одберете друго име.',
# Export
'export' => 'Извезување на страници',
@@ -2477,15 +2627,21 @@ $1 е веќе блокиран. Дали сакате да направите
'export-pagelinks' => 'Вклучи поврзани страници до длабочина од:',
# Namespace 8 related
-'allmessages' => 'Системски пораки',
-'allmessagesname' => 'Име',
-'allmessagesdefault' => 'Текст по основно',
-'allmessagescurrent' => 'Сегашен текст',
-'allmessagestext' => 'Ова е список на системските пораки расположиви за именскиот простор „МедијаВики“.
+'allmessages' => 'Системски пораки',
+'allmessagesname' => 'Име',
+'allmessagesdefault' => 'Текст по основно',
+'allmessagescurrent' => 'Сегашен текст',
+'allmessagestext' => 'Ова е список на системските пораки расположиви за именскиот простор „МедијаВики“.
Одете на [http://www.mediawiki.org/wiki/Localisation Локализација на МедијаВики] и [http://translatewiki.net translatewiki.net] ако сакате да придонесете кон општата локализација на МедијаВики.',
-'allmessagesnotsupportedDB' => "Оваа страница не може да се користи бидејќи '''\$wgUseDatabaseMessages''' е исклучено.",
-'allmessagesfilter' => 'Филтер за регуларни изрази:',
-'allmessagesmodified' => 'Прикажи само изменети',
+'allmessagesnotsupportedDB' => "Оваа страница не може да се користи бидејќи '''\$wgUseDatabaseMessages''' е исклучено.",
+'allmessages-filter-legend' => 'Филтер',
+'allmessages-filter' => 'Филтрирај по состојба на прилагодувањето:',
+'allmessages-filter-unmodified' => 'Непроменети',
+'allmessages-filter-all' => 'Сите',
+'allmessages-filter-modified' => 'Изменети',
+'allmessages-prefix' => 'Филтер по префикс:',
+'allmessages-language' => 'Јазик:',
+'allmessages-filter-submit' => 'Оди',
# Thumbnails
'thumbnail-more' => 'Зголеми',
@@ -2495,6 +2651,9 @@ $1 е веќе блокиран. Дали сакате да направите
'djvu_no_xml' => 'Не е можно да се излачи XML за DjVu податотеки',
'thumbnail_invalid_params' => 'Погрешни параметри за минијатурата',
'thumbnail_dest_directory' => 'Целниот именик не може да се создаде',
+'thumbnail_image-type' => 'Неподдржан тип на слика',
+'thumbnail_gd-library' => 'Некомплетна конфигурација на графичката библиотека: недостасува функција $1',
+'thumbnail_image-missing' => 'Изгледа дека податотеката недостасува: $1',
# Special:Import
'import' => 'Увезување на страници',
@@ -2562,6 +2721,7 @@ $1 е веќе блокиран. Дали сакате да направите
'tooltip-ca-viewsource' => 'Оваа страница е заштитена. Можете да го видите изворниот код.',
'tooltip-ca-history' => 'Претходни верзии на оваа страница.',
'tooltip-ca-protect' => 'Заштитете ја оваа страница',
+'tooltip-ca-unprotect' => 'Симни заштита на оваа страница',
'tooltip-ca-delete' => 'Избриши ја оваа страница',
'tooltip-ca-undelete' => 'Обнови ги уредувањата направени на оваа страница пред да биде избришана',
'tooltip-ca-move' => 'Премести ја оваа страница',
@@ -2572,6 +2732,7 @@ $1 е веќе блокиран. Дали сакате да направите
'tooltip-search-fulltext' => 'Пребарај го овој текст низ странците',
'tooltip-p-logo' => 'Главна страница',
'tooltip-n-mainpage' => 'Посети ја главната страница',
+'tooltip-n-mainpage-description' => 'Посети главна страница',
'tooltip-n-portal' => 'За проектот, што можете да направите, каде да најдете некои работи',
'tooltip-n-currentevents' => 'Најдете информации за тековните настани',
'tooltip-n-recentchanges' => 'Список на скорешни промени на викито.',
@@ -2624,6 +2785,7 @@ $1 е веќе блокиран. Дали сакате да направите
'chick.css' => '/* CSS кодот поставен тука ќе се применува врз корисниците што го избрале рувото Шик */',
'simple.css' => '/* CSS кодот поставен тука ќе се применува врз корисниците што го одбрале рувото Просто */',
'modern.css' => '/* CSS кодот поставен тука ќе се применува врз корисниците што го одбрале рувото Современо */',
+'vector.css' => '/* CSS кодот поставен тука ќе се применува врз корисниците што го користат рувото Векторско */',
'print.css' => '/* CSS кодот поставен тука ќе се рефлектира врз страниците за печатење */',
'handheld.css' => '/* CSS кодот поставен тука ќе се примнува врз рачните уреди засновани на рувото поставено во $wgHandheldStyle */',
@@ -2637,6 +2799,7 @@ $1 е веќе блокиран. Дали сакате да направите
'chick.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Шик */',
'simple.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Просто */',
'modern.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Современо */',
+'vector.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Векторско */',
# Metadata
'nodublincore' => 'Dublin Core RDF метаподатоци се оневозможени за овој опслужувач.',
@@ -2646,10 +2809,12 @@ $1 е веќе блокиран. Дали сакате да направите
# Attribution
'anonymous' => '{{PLURAL:$1|Анонимен корисник|Анонимни корисници}} на {{SITENAME}}',
'siteuser' => '{{SITENAME}} корисник $1',
-'lastmodifiedatby' => 'Оваа страница е последен пат изменета на $1 во $2 ч. од $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} анонимен корисник $1',
+'lastmodifiedatby' => 'Оваа страница е последен пат изменета на $1 во $2 ч. од $3.',
'othercontribs' => 'Засновано на работата на $1.',
'others' => 'други',
'siteusers' => '{{PLURAL:$2|корисникот|корисниците}} на {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|анонимен корисник|анонимни корисници}} на {{SITENAME}} $1',
'creditspage' => 'Автори на страницата',
'nocredits' => 'Не постојат податоци за авторите на оваа страница.',
@@ -2679,6 +2844,7 @@ $1 е веќе блокиран. Дали сакате да направите
'skinname-chick' => 'Шик',
'skinname-simple' => 'Просто',
'skinname-modern' => 'Современо',
+'skinname-vector' => 'Векторско',
# Math options
'mw_math_png' => 'Секогаш исцртувај во PNG',
@@ -2688,11 +2854,23 @@ $1 е веќе блокиран. Дали сакате да направите
'mw_math_modern' => 'Препорачливо за современи прелистувачи',
'mw_math_mathml' => 'MathML ако е можно (експериментално)',
+# Math errors
+'math_failure' => 'Неможам да парсирам',
+'math_unknown_error' => 'непозната грешка',
+'math_unknown_function' => 'непозната функција',
+'math_lexing_error' => 'лексичка грешка',
+'math_syntax_error' => 'синтаксна грешка',
+'math_image_error' => 'неуспешна PNG конверзија',
+'math_bad_tmpdir' => 'Неможе да се запише во или да се создаде привремен именик за математички операции',
+'math_bad_output' => 'Неможе да се запише во или да се создаде именик за излезни математички операции',
+'math_notexvc' => 'Недостасува извршната податотека texvc;
+погледнете math/README за нејзино нагодување.',
+
# Patrolling
'markaspatrolleddiff' => 'Означи како проверена верзија',
'markaspatrolledtext' => 'Означи ја верзијата како проверена',
'markedaspatrolled' => 'Означено како проверено',
-'markedaspatrolledtext' => 'Избраната ревизија е означена како патролирана.',
+'markedaspatrolledtext' => 'Избраната ревизија на [[:$1]] е означена како патролирана.',
'rcpatroldisabled' => 'Оневозможено проверка на скорешни промени',
'rcpatroldisabledtext' => 'Патролирањето на Скорешните промени е деактивирано.',
'markedaspatrollederror' => 'Не можам да означам како проверена',
@@ -2722,15 +2900,11 @@ $1',
'previousdiff' => '← Постаро уредување',
'nextdiff' => 'Поново уредување →',
-# Visual comparison
-'visual-comparison' => 'Визуелна споредба',
-
# Media information
'mediawarning' => "'''Предупредување''': Оваа податотека може да содржи штетен код.
Ако ја користите, ова може да му наштети на вашиот систем.",
-'imagemaxsize' => 'Ограничи ги сликите на нивните описни страници до:',
+'imagemaxsize' => "Ограничување на големина на слика:<br />''(на нивните описни страници)''",
'thumbsize' => 'Големина на минијатурата:',
-'widthheight' => '$1×$2',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|страница|страници}}',
'file-info' => '(големина: $1, MIME-тип: $2)',
'file-info-size' => '($1 × $2 пиксели, големина: $3, MIME-тип: $4)',
@@ -2738,6 +2912,8 @@ $1',
'svg-long-desc' => '(SVG податотека, номинално $1 × $2 пиксели, големина: $3)',
'show-big-image' => 'Вистинска големина',
'show-big-image-thumb' => '<small>Големина на овој приказ: $1 × $2 пиксели</small>',
+'file-info-gif-looped' => 'врзано во круг',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|рамка|рамки}}',
# Special:NewFiles
'newimages' => 'Галерија на нови податотеки',
@@ -2816,7 +2992,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2944,14 +3120,14 @@ Variants for Chinese language
'exif-unknowndate' => 'Непознат датум',
-'exif-orientation-1' => 'Нормална', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Пресликано по хоризонтална оска', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Свртено за 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Пресликано по вертикална оска', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Свртено за 90° наспроти часовникот и обратно по вертикална оска', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Ротирано за 90° по часовникот', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Ротирано 90° по часовникот и обратно по вертикална оска', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Ротирано за 90° спротивно од часовникот', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нормална',
+'exif-orientation-2' => 'Пресликано по хоризонтална оска',
+'exif-orientation-3' => 'Свртено за 180°',
+'exif-orientation-4' => 'Пресликано по вертикална оска',
+'exif-orientation-5' => 'Свртено за 90° наспроти часовникот и обратно по вертикална оска',
+'exif-orientation-6' => 'Ротирано за 90° по часовникот',
+'exif-orientation-7' => 'Ротирано 90° по часовникот и обратно по вертикална оска',
+'exif-orientation-8' => 'Ротирано за 90° спротивно од часовникот',
'exif-planarconfiguration-1' => 'формат „chunky“',
'exif-planarconfiguration-2' => 'формат „planar“',
@@ -3087,7 +3263,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => 'Дводимензионално мерење',
'exif-gpsmeasuremode-3' => 'Тридимензионално мерење',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Километри на час',
'exif-gpsspeed-m' => 'Милји на час',
'exif-gpsspeed-n' => 'Јазли',
@@ -3106,6 +3282,7 @@ Variants for Chinese language
'watchlistall2' => 'сите',
'namespacesall' => 'сите',
'monthsall' => 'сите',
+'limitall' => 'сите',
# E-mail address confirmation
'confirmemail' => 'Потврда на е-поштенска адреса',
@@ -3131,20 +3308,20 @@ Variants for Chinese language
'confirmemail_loggedin' => 'Вашата е-поштенска адреса сега е потврдена.',
'confirmemail_error' => 'Нешто тргна наопаку при снимањето на вашата потврда.',
'confirmemail_subject' => '{{SITENAME}} потврда за е-поштенска адреса',
-'confirmemail_body' => 'Некој, веројатно вие, од IP адресата $1,
+'confirmemail_body' => 'Некој, веројатно Вие, од IP-адресата $1,
ја регистрирал сметката „$2“ со оваа е-поштенска адреса на {{SITENAME}}.
-За да потврдите дека оваа сметка навистина ви припаѓа вам и да ја активирате
-можноста за е-пошта на {{SITENAME}}, отворете ја оваа врска во вашиот пребарувач:
+За да потврдите дека оваа сметка навистина Ви припаѓа Вам и да ја активирате
+можноста за е-пошта на {{SITENAME}}, следете ја оваа врска во вашиот прелистувач:
$3
-Ако *не* сте ја регистрирале сметката вие, следете ја оваа врска
+Ако Вие *не* сте оној што ја регистрирал сметката, следете ја оваа врска
за да го откажете потврдувањето на е-поштенската адреса:
$5
-Овој код за потврда ќе истече на $4.',
+Овој потврден код ќе истече на $4.',
'confirmemail_invalidated' => 'Потврдата на е-поштенската адреса е откажана',
'invalidateemail' => 'Откажување на потврда на е-пошта',
@@ -3249,7 +3426,7 @@ $1',
'duplicate-defaultsort' => 'Предупредување: Основниот клуч за подредување "$2" го поништува претходниот основен клуч за подредување "$1".',
# Special:Version
-'version' => 'Верзија', # Not used as normal message but as header for the special page itself
+'version' => 'Верзија',
'version-extensions' => 'Инсталирани додатоци',
'version-specialpages' => 'Специјални страници',
'version-parserhooks' => 'Парсерски куки',
@@ -3263,7 +3440,7 @@ $1',
'version-skin-extension-functions' => 'Функции за обогатување на изгледот',
'version-hook-name' => 'Име на кука',
'version-hook-subscribedby' => 'Претплатено од',
-'version-version' => 'Верзија',
+'version-version' => '(Верзија $1)',
'version-license' => 'Лиценца',
'version-software' => 'Инсталирана програмска опрема',
'version-software-product' => 'Производ',
@@ -3343,4 +3520,15 @@ $1',
'dberr-outofdate' => 'Да напоменеме дека нивните индекси на нашата содржина можат да бидат застарени.',
'dberr-cachederror' => 'Следнава содржина е кеширана копија на бараната страница, која може да е застарена.',
+# HTML forms
+'htmlform-invalid-input' => 'Има проблеми со дел од вашиот внес',
+'htmlform-select-badoption' => 'Вредноста која ја наведовте не е важечка.',
+'htmlform-int-invalid' => 'Вредноста која ја наведовте не е цел број.',
+'htmlform-float-invalid' => 'Вредноста која ја наведовте не е број.',
+'htmlform-int-toolow' => 'Вредноста која ја наведовте е под минимумот од $1',
+'htmlform-int-toohigh' => 'Вредноста која ја наведовте е над максимумот од $1',
+'htmlform-submit' => 'Зачувај',
+'htmlform-reset' => 'Откажи промени',
+'htmlform-selectorother-other' => 'Друго',
+
);
diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php
index 9b8151b9..3e94381f 100644
--- a/languages/messages/MessagesMl.php
+++ b/languages/messages/MessagesMl.php
@@ -36,16 +36,16 @@ $namespaceNames = array(
NS_USER => 'ഉപയോക്താവ്',
NS_USER_TALK => 'ഉപയോക്താവിന്റെ_സംവാദം',
NS_PROJECT_TALK => '$1_സംവാദം',
- NS_FILE => 'ചിത്രം',
- NS_FILE_TALK => 'ചിത്രത്തിന്റെ_സംവാദം',
+ NS_FILE => 'പ്രമാണം',
+ NS_FILE_TALK => 'പ്രമാണത്തിന്റെ_സംവാദം',
NS_MEDIAWIKI => 'മീഡിയവിക്കി',
NS_MEDIAWIKI_TALK => 'മീഡിയവിക്കി_സംവാദം',
NS_TEMPLATE => 'ഫലകം',
NS_TEMPLATE_TALK => 'ഫലകത്തിന്റെ_സംവാദം',
NS_HELP => 'സഹായം',
NS_HELP_TALK => 'സഹായത്തിന്റെ_സംവാദം',
- NS_CATEGORY => 'വര്‍ഗ്ഗം',
- NS_CATEGORY_TALK => 'വര്‍ഗ്ഗത്തിന്റെ_സംവാദം',
+ NS_CATEGORY => 'വർഗ്ഗം',
+ NS_CATEGORY_TALK => 'വർഗ്ഗത്തിന്റെ_സംവാദം',
);
$namespaceAliases = array(
@@ -55,124 +55,232 @@ $namespaceAliases = array(
'ഉസം' => NS_USER_TALK,
'ചി' => NS_FILE,
'ചിസം' => NS_FILE_TALK,
+ 'ചിത്രം' => NS_FILE,
+ 'ചിത്രത്തിന്റെ_സംവാദം' => NS_FILE_TALK,
'ഫ' => NS_TEMPLATE,
'ഫസം' => NS_TEMPLATE_TALK,
'വി' => NS_CATEGORY,
'വിസം' => NS_CATEGORY_TALK,
'വിഭാഗം' => NS_CATEGORY,
'വിഭാഗത്തിന്റെ_സംവാദം' => NS_CATEGORY_TALK,
+ 'വർഗ്ഗം' => NS_CATEGORY,
+ 'വർഗ്ഗത്തിന്റെ_സംവാദം' => NS_CATEGORY_TALK,
'സ' => NS_HELP,
'സസം' => NS_HELP_TALK,
);
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'ഇരട്ടത്തിരിച്ചുവിടലുകൾ' ),
+ 'BrokenRedirects' => array( 'പൊട്ടിയതിരിച്ചുവിടലുകൾ' ),
+ 'Disambiguations' => array( 'നാനാർത്ഥങ്ങൾ' ),
+ 'Userlogin' => array( 'പ്രവേശനം' ),
+ 'Userlogout' => array( 'പുറത്തുകടക്കൽ' ),
+ 'CreateAccount' => array( 'അംഗത്വമെടുക്കൽ' ),
+ 'Preferences' => array( 'ക്രമീകരണങ്ങൾ' ),
+ 'Watchlist' => array( 'ശ്രദ്ധിക്കുന്നവ' ),
+ 'Recentchanges' => array( 'സമീപകാലമാറ്റങ്ങൾ' ),
+ 'Upload' => array( 'അപ്‌ലോഡ്' ),
+ 'Listfiles' => array( 'പ്രമാണങ്ങളുടെ പട്ടിക', 'ചിത്രങ്ങളുടെ പട്ടിക' ),
+ 'Newimages' => array( 'പുതിയ പ്രമാണങ്ങൾ', 'പുതിയ ചിത്രങ്ങൾ' ),
+ 'Listusers' => array( 'ഉപയോക്താക്കളുടെ പട്ടിക' ),
+ 'Listgrouprights' => array( 'സമൂഹത്തിന്റെ അവകാശങ്ങളുടെ പട്ടിക' ),
+ 'Statistics' => array( 'സ്ഥിതിവിവരം' ),
+ 'Randompage' => array( 'ക്രമരഹിതമായി', 'താളുകൾ ക്രമരഹിതമായി' ),
+ 'Lonelypages' => array( 'അനാഥ താളുകൾ' ),
+ 'Uncategorizedpages' => array( 'വർഗ്ഗീകരിക്കാത്ത താളുകൾ' ),
+ 'Uncategorizedcategories' => array( 'വർഗ്ഗീകരിക്കാത്ത വർഗ്ഗങ്ങൾ' ),
+ 'Uncategorizedimages' => array( 'വർഗ്ഗീകരിക്കാത്ത പ്രമാണങ്ങൾ' ),
+ 'Uncategorizedtemplates' => array( 'വർഗ്ഗീകരിക്കാത്ത ഫലകങ്ങൾ' ),
+ 'Unusedcategories' => array( 'ഉപയോഗിക്കാത്ത വർഗ്ഗങ്ങൾ' ),
+ 'Unusedimages' => array( 'ഉപയോഗിക്കാത്ത പ്രമാണങ്ങൾ' ),
+ 'Wantedpages' => array( 'ആവശ്യമുള്ള താളുകൾ', 'പൊട്ടിയ കണ്ണികൾ' ),
+ 'Wantedcategories' => array( 'ആവശ്യമുള്ള വർഗ്ഗങ്ങൾ' ),
+ 'Wantedfiles' => array( 'ആവശ്യമുള്ള പ്രമാണങ്ങൾ' ),
+ 'Wantedtemplates' => array( 'ആവശ്യമുള്ള ഫലകങ്ങൾ' ),
+ 'Mostlinked' => array( 'കൂടുതൽ കണ്ണികളുള്ള താളുകൾ', 'കൂടുതൽ കണ്ണികളുള്ളവ' ),
+ 'Mostlinkedcategories' => array( 'കൂടുതൽ കണ്ണികളുള്ള വർഗ്ഗങ്ങൾ', 'കൂടുതൽ ഉപയോഗിച്ചിട്ടുള്ള വർഗ്ഗങ്ങൾ' ),
+ 'Mostlinkedtemplates' => array( 'കൂടുതൽ കണ്ണികളുള്ള ഫലകങ്ങൾ', 'കൂടുതൽ ഉപയോഗിച്ചിട്ടുള്ള ഫലകങ്ങൾ' ),
+ 'Mostimages' => array( 'കൂടുതൽ കണ്ണികളുള്ള പ്രമാണങ്ങൾ', 'കൂടുതൽ പ്രമാണങ്ങൾ', 'കൂടുതൽ ചിത്രങ്ങൾ' ),
+ 'Mostcategories' => array( 'കൂടുതൽ വർഗ്ഗങ്ങൾ' ),
+ 'Mostrevisions' => array( 'കൂടുതൽ പുനരവലോകനങ്ങൾ' ),
+ 'Fewestrevisions' => array( 'കുറഞ്ഞ പുനരവലോകനങ്ങൾ' ),
+ 'Shortpages' => array( 'ചെറിയ താളുകൾ' ),
+ 'Longpages' => array( 'വലിയ താളുകൾ' ),
+ 'Newpages' => array( 'പുതിയ താളുകൾ' ),
+ 'Ancientpages' => array( 'പുരാതന താളുകൾ' ),
+ 'Deadendpages' => array( 'അന്ത്യസ്ഥാനത്തുള്ള താളുകൾ' ),
+ 'Protectedpages' => array( 'സംരക്ഷിത താളുകൾ' ),
+ 'Protectedtitles' => array( 'സംരക്ഷിത ശീർഷകങ്ങൾ' ),
+ 'Allpages' => array( 'എല്ലാതാളുകളും' ),
+ 'Prefixindex' => array( 'പൂർവ്വപദസൂചിക' ),
+ 'Ipblocklist' => array( 'തടയൽ‌പട്ടിക', 'ഐപികളുടെ തടയൽ‌പട്ടിക' ),
+ 'Specialpages' => array( 'പ്രത്യേകതാളുകൾ' ),
+ 'Contributions' => array( 'സംഭാവനകൾ' ),
+ 'Emailuser' => array( 'ഉപയോക്തൃഇമെയിൽ' ),
+ 'Confirmemail' => array( 'ഇമെയിൽ സ്ഥിരീകരിക്കുക' ),
+ 'Whatlinkshere' => array( 'കണ്ണികളെന്തെല്ലാം' ),
+ 'Recentchangeslinked' => array( 'ബന്ധപ്പെട്ട മാറ്റങ്ങൾ' ),
+ 'Movepage' => array( 'താൾ മാറ്റുക' ),
+ 'Blockme' => array( 'എന്നെതടയുക' ),
+ 'Booksources' => array( 'പുസ്തകസ്രോതസ്സുകൾ' ),
+ 'Categories' => array( 'വർഗ്ഗങ്ങൾ' ),
+ 'Export' => array( 'കയറ്റുമതി' ),
+ 'Version' => array( 'പതിപ്പ്' ),
+ 'Allmessages' => array( 'സർവ്വസന്ദേശങ്ങൾ' ),
+ 'Log' => array( 'രേഖ', 'രേഖകൾ' ),
+ 'Blockip' => array( 'തടയുക', 'ഐപിയെ തടയുക', 'ഉപയോക്താവിനെ തടയുക' ),
+ 'Undelete' => array( 'മായ്ച്ചവ പുനഃസ്ഥാപനം' ),
+ 'Import' => array( 'ഇറക്കുമതി' ),
+ 'Lockdb' => array( 'ഡി.ബി.ബന്ധിക്കുക' ),
+ 'Unlockdb' => array( 'ഡി.ബി.ബന്ധനംനീക്കുക' ),
+ 'Userrights' => array( 'ഉപയോക്തൃഅവകാശങ്ങൾ', 'കാര്യനിർവാഹകസൃഷ്ടി', 'യന്ത്രസൃഷ്ടി' ),
+ 'MIMEsearch' => array( 'മൈംതിരയൽ' ),
+ 'FileDuplicateSearch' => array( 'പ്രമാണത്തിന്റെ അപരനുള്ള തിരച്ചിൽ' ),
+ 'Unwatchedpages' => array( 'ആരുംശ്രദ്ധിക്കാത്തതാളുകൾ' ),
+ 'Listredirects' => array( 'തിരിച്ചുവിടൽ‌പട്ടിക' ),
+ 'Revisiondelete' => array( 'നാൾപ്പതിപ്പ് മായ്ക്കൽ' ),
+ 'Unusedtemplates' => array( 'ഉപയോഗിക്കാത്തഫലകങ്ങൾ' ),
+ 'Randomredirect' => array( 'ക്രമരഹിതതിരിച്ചുവിടലുകൾ' ),
+ 'Mypage' => array( 'എന്റെ താൾ' ),
+ 'Mytalk' => array( 'എന്റെ സംവാദം' ),
+ 'Mycontributions' => array( 'എന്റെ സംഭാവനകൾ' ),
+ 'Listadmins' => array( 'കാര്യനിർവാഹകപട്ടിക' ),
+ 'Listbots' => array( 'യന്ത്രങ്ങളുടെ പട്ടിക' ),
+ 'Popularpages' => array( 'ജനകീയതാളുകൾ' ),
+ 'Search' => array( 'അന്വേഷണം' ),
+ 'Resetpass' => array( 'രഹസ്യവാക്ക് മാറ്റുക' ),
+ 'Withoutinterwiki' => array( 'അന്തർവിക്കിയില്ലാത്തവ' ),
+ 'MergeHistory' => array( 'നാൾവഴിലയിപ്പിക്കുക' ),
+ 'Filepath' => array( 'പ്രമാണവിലാസം' ),
+ 'Invalidateemail' => array( 'സാധുവല്ലാത്ത ഇമെയിൽ' ),
+ 'Blankpage' => array( 'ശൂന്യതാൾ' ),
+ 'LinkSearch' => array( 'കണ്ണികൾ തിരയുക' ),
+ 'DeletedContributions' => array( 'മായ്ച്ച സേവനങ്ങൾ' ),
+ 'Tags' => array( 'റ്റാഗുകൾ' ),
+ 'Activeusers' => array( 'സജീവ ഉപയോക്താക്കൾ' ),
+);
+
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#REDIRECT' , '#തിരിച്ചുവിടുക' , 'തിരിച്ചുവിടല്‍' ),
- 'notoc' => array( 0, '__NOTOC__' , '__ഉള്ളടക്കംവേണ്ട__' ),
- 'nogallery' => array( 0, '__NOGALLERY__' , '__ചിത്രസഞ്ചയംവേണ്ട__' ),
- 'forcetoc' => array( 0, '__FORCETOC__' , '__ഉള്ളടക്കംഇടുക__' ),
- 'toc' => array( 0, '__TOC__' , '__ഉള്ളടക്കം__' ),
- 'noeditsection' => array( 0, '__NOEDITSECTION__' , '__സംശോധിക്കേണ്ട__' ),
- 'start' => array( 0, '__START__' , '__തുടക്കം__' , '__പ്രാരംഭം__' ),
-
- 'currentmonth' => array( 1,'CURRENTMONTH' , 'മാസം' ),
- 'currentmonthname' => array( 1, 'CURRENTMONTHNAME' , 'മാസത്തിന്റെപേര്‌' ),
- 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV' , 'മാസത്തിന്റെപേര്‌സംഗ്രഹം' , 'മാസത്തിന്റെപേര്‌ചുരുക്കം' ),
- 'currentday' => array( 1, 'CURRENTDAY' , 'ദിവസം' ),
- 'currentday2' => array( 1, 'CURRENTDAY2' , 'ദിവസം2' ),
- 'currentdayname' => array( 1, 'CURRENTDAYNAME' , 'ദിവസത്തിന്റെപേര്‌' ),
- 'currentyear' => array( 1, 'CURRENTYEAR' , 'വര്‍ഷം' ),
- 'currenttime' => array( 1, 'CURRENTTIME' , 'സമയം' ),
- 'currenthour' => array( 1, 'CURRENTHOUR' , 'മണിക്കൂര്‍' ),
-
- 'localmonth' => array( 1, 'LOCALMONTH' , 'പ്രാദേശികമാസം' ),
- 'localmonthname' => array( 1, 'LOCALMONTHNAME' , 'പ്രാദേശികമാസത്തിന്റെപേര്‌' ),
- 'localmonthabbrev' => array( 1, 'LOCALMONTHABBREV' , 'പ്രാദേശികമാസത്തിന്റെപേര്‌സംഗ്രഹം' , 'പ്രാദേശികമാസത്തിന്റെപേര്‌ചുരുക്കം' ),
- 'localday' => array( 1, 'LOCALDAY' , 'പ്രാദേശികദിവസം' ),
- 'localday2' => array( 1, 'LOCALDAY2' , 'പ്രാദേശികദിവസം2' ),
- 'localdayname' => array( 1, 'LOCALDAYNAME' , 'പ്രാദേശികദിവസത്തിന്റെപേര്‌' ),
- 'localyear' => array( 1, 'LOCALYEAR' , 'പ്രാദേശികവര്‍ഷം' ),
- 'localtime' => array( 1, 'LOCALTIME' , 'പ്രാദേശികസമയം' ),
- 'localhour' => array( 1, 'LOCALHOUR' , '', 'പ്രാദേശികമണിക്കൂര്‍' ),
-
- 'numberofpages' => array( 1, 'NUMBEROFPAGES' , 'താളുകളുടെഎണ്ണം' ),
- 'numberofarticles' => array( 1, 'NUMBEROFARTICLES' , 'ലേഖങ്ങളുടെഎണ്ണം' ),
- 'numberoffiles' => array( 1, 'NUMBEROFFILES' , 'പ്രമാണങ്ങളുടെഎണ്ണം'),
- 'numberofusers' => array( 1, 'NUMBEROFUSERS' , 'ഉപയോക്താക്കളുടെഎണ്ണം' , 'അംഗങ്ങളുടെഎണ്ണം' ),
-
- 'pagename' => array( 1, 'PAGENAME' , 'താളിന്റെപേര്‌' ),
- 'pagenamee' => array( 1, 'PAGENAMEE' , 'താളിന്റെപേര്‌സമഗ്രം' ),
- 'namespace' => array( 1, 'NAMESPACE' , 'നാമമേഖല' ),
- 'namespacee' => array( 1, 'NAMESPACEE' , 'നാമമേഖലസമഗ്രം' ),
- 'talkspace' => array( 1, 'TALKSPACE' , 'സംവാദമേഖല' ),
- 'talkspacee' => array( 1, 'TALKSPACEE' , 'സംവാദമേഖലസമഗ്രം' ),
- 'subjectspace' => array( 1, 'SUBJECTSPACE', 'ARTICLESPACE' , 'വിഷയമേഖല' , 'ലേഖനമേഖല' ),
- 'subjectspacee' => array( 1, 'SUBJECTSPACEE', 'ARTICLESPACEE' , 'വിഷയമേഖലസമഗ്രം' , 'ലേഖനമേഖലസമഗ്രം' ),
- 'fullpagename' => array( 1, 'FULLPAGENAME' , 'താളിന്റെമുഴുവന്‍പേര്‌' ),
- 'fullpagenamee' => array( 1, 'FULLPAGENAMEE' , 'താളിന്റെമുഴുവന്‍പേര്സമഗ്രം' ),
- 'subpagename' => array( 1, 'SUBPAGENAME' , 'അനുബന്ധതാളിന്റെപേര്‌'),
- 'subpagenamee' => array( 1, 'SUBPAGENAMEE' , 'അനുബന്ധതാളിന്റെപേര്സമഗ്രം' ),
- 'basepagename' => array( 1, 'BASEPAGENAME' , 'അടിസ്ഥാനതാളിന്റെപേര്‌' ),
- 'basepagenamee' => array( 1, 'BASEPAGENAMEE' , 'അടിസ്ഥാനതാളിന്റെപേര്‌സമഗ്രം' ),
- 'talkpagename' => array( 1, 'TALKPAGENAME' , 'സംവാദതാളിന്റെപേര്‌'),
- 'talkpagenamee' => array( 1, 'TALKPAGENAMEE' , 'സംവാദതാളിന്റെപേര്‌സമഗ്രം' ),
- 'subjectpagename' => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' , 'ലേഖനതാളിന്റെപേര്‌' ),
- 'subjectpagenamee' => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' , 'ലേഖനതാളിന്റെപേര്‌സമഗ്രം' ),
-
- 'msg' => array( 0, 'MSG:' , 'സന്ദേശം:' ),
- 'subst' => array( 0, 'SUBST:' , 'ബദല്‍:' ),
- 'msgnw' => array( 0, 'MSGNW:' , 'മൂലരൂപം:' ),
- 'end' => array( 0, '__END__' , '__ശുഭം__' ),
-
- 'img_thumbnail' => array( 1, 'thumbnail', 'thumb' , 'ലഘുചിത്രം' , 'ലഘു' ),
- 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1' , 'ലഘുചിത്രം=$1' , 'ലഘു=$1' ),
- 'img_right' => array( 1, 'right' , 'വലത്ത്‌' , 'വലത്‌' ),
- 'img_left' => array( 1, 'left' , 'ഇടത്ത്‌' , 'ഇടത്‌' ),
- 'img_none' => array( 1, 'none' , 'ശൂന്യം' ),
- 'img_width' => array( 1, '$1px' , '$1ബിന്ദു' ),
- 'img_center' => array( 1, 'center', 'centre' , 'നടുവില്‍' , 'നടുക്ക്‌' ),
- 'img_framed' => array( 1, 'framed', 'enframed', 'frame' , 'ചട്ടം', 'ചട്ടത്തില്‍' ),
- 'img_page' => array( 1, 'page=$1', 'page $1', 'താള്‍=$1', 'താള്‍ $1' ),
-
- 'sitename' => array( 1, 'SITENAME' ,'സൈറ്റിന്റെപേര്' ),
- 'ns' => array( 0, 'NS:' , 'നാമേ:' , 'നാമമേഖല' ),
- 'localurl' => array( 0, 'LOCALURL:' , 'ലോക്കല്‍യുആര്‍എല്‍:' ),
- 'localurle' => array( 0, 'LOCALURLE:' , 'ലോക്കല്‍യുആര്‍എല്‍ഇ:' ),
- 'server' => array( 0, 'SERVER' , 'സെര്‍വര്‍' ),
- 'servername' => array( 0, 'SERVERNAME' , 'സെര്‍വറിന്റെപേര്' ),
- 'scriptpath' => array( 0, 'SCRIPTPATH' ,'സ്ക്രിപ്റ്റ്പാത്ത്'),
- 'grammar' => array( 0, 'GRAMMAR:' , 'വ്യാകരണം:' ),
-
- 'currentweek' => array( 1, 'CURRENTWEEK' , 'ആഴ്ച' ,'ആഴ്‌ച' ),
- 'currentdow' => array( 1, 'CURRENTDOW', 'ദിവസത്തിന്റെപേര്‌അക്കത്തില്‍' ),
- 'localweek' => array( 1, 'LOCALWEEK' , 'പ്രാദേശികആഴ്ച' , 'പ്രാദേശികആഴ്‌ച' ),
- 'localdow' => array( 1, 'LOCALDOW' , 'ആഴ്ചയുടെപേര്‌അക്കത്തില്‍' , 'ആഴ്‌ചയുടെപേര്‌അക്കത്തില്‍' ),
-
- 'revisionid' => array( 1, 'REVISIONID' , 'തിരുത്തല്‍അടയാളം' ),
- 'revisionday' => array( 1, 'REVISIONDAY' , 'തിരുത്തിയദിവസം' , 'തിരുത്തിയദിനം' ),
- 'revisionday2' => array( 1, 'REVISIONDAY2' , 'തിരുത്തിയദിവസം2' , 'തിരുത്തിയദിനം2'),
- 'revisionmonth' => array( 1, 'REVISIONMONTH' , 'തിരുത്തിയമാസം'),
- 'revisionyear' => array( 1, 'REVISIONYEAR' , 'തിരുത്തിയവര്‍ഷം' ),
- 'revisiontimestamp' => array( 1, 'REVISIONTIMESTAMP' , 'തിരുത്തിയസമയമുദ്ര' ),
-
- 'plural' => array( 0, 'PLURAL:' , 'ബഹുവചനം:'),
- 'raw' => array( 0, 'RAW:' , 'വരി:' ),
- 'displaytitle' => array( 1, 'DISPLAYTITLE' , 'ശീര്‍ഷകംപ്രദര്‍ശിപ്പിക്കുക' , 'തലക്കെട്ട്പ്രദര്‍ശിപ്പിക്കുക' ),
- 'rawsuffix' => array( 1, 'R' , 'വ' ),
- 'newsectionlink' => array( 1, '__NEWSECTIONLINK__' , '__പുതിയവിഭാഗംകണ്ണി__', '__പുതിയഖണ്ഡിക്കണ്ണി__'),
-
- 'currentversion' => array( 1, 'CURRENTVERSION' , 'പതിപ്പ്' ),
- 'currenttimestamp' => array( 1, 'CURRENTTIMESTAMP' , 'സമയമുദ്ര' ),
- 'localtimestamp' => array( 1, 'LOCALTIMESTAMP' , 'പ്രാദേശികസമയമുദ്ര' ),
- 'directionmark' => array( 1, 'DIRECTIONMARK', 'DIRMARK' , 'ദിശാ‍അടയാളം' ),
- 'language' => array( 0, '#LANGUAGE:' , '#ഭാഷ:' ),
- 'contentlanguage' => array( 1, 'CONTENTLANGUAGE', 'CONTENTLANG' , 'ഉള്ളടക്കഭാഷ' ),
- 'pagesinnamespace' => array( 1, 'PAGESINNAMESPACE:', 'PAGESINNS:' , 'നാമമേഖലയിലുള്ളതാളുകള്‍' ),
- 'numberofadmins' => array( 1, 'NUMBEROFADMINS' , 'കാര്യനിര്‍വ്വാഹകരുടെഎണ്ണം' ),
- 'formatnum' => array( 0, 'FORMATNUM' , 'ദശാംശഘടന' , 'സംഖ്യാഘടന' ),
- 'padleft' => array( 0, 'PADLEFT' , 'ഇടത്ത്നിറക്കുക' ),
- 'padright' => array( 0, 'PADRIGHT' , 'വലത്ത്നിറക്കുക' ),
- 'special' => array( 0, 'special' , 'പ്രത്യേകം' ),
+ 'redirect' => array( '0', '#തിരിച്ചുവിടുക', '#തിരിച്ചുവിടൽ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__ഉള്ളടക്കംവേണ്ട__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__ചിത്രസഞ്ചയംവേണ്ട__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__ഉള്ളടക്കംഇടുക__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ഉള്ളടക്കം__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__സംശോധിക്കേണ്ട__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__തലക്കെട്ടുവേണ്ട__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'ഈമാസം', 'ഈമാസം2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ഈമാസം1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'ഈമാസത്തിന്റെപേര്‌', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'ഈമാസത്തിന്റെപേരുസൃഷ്ടിക്കുക', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ഈമാസത്തിന്റെപേര്‌സംഗ്രഹം', 'ഈമാസത്തിന്റെപേര്‌ചുരുക്കം', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'ഈദിവസം', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'ഈദിവസം2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'ഈദിവസത്തിന്റെപേര്‌', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ഈവർഷം', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ഈസമയം', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ഈമണിക്കൂർ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'പ്രാദേശികമാസം', 'പ്രാദേശികമാസം2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'പ്രാദേശികമാസം1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'പ്രാദേശികമാസത്തിന്റെപേര്‌', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'പ്രാദേശികമാസത്തിന്റെപേരുസൃഷ്ടിക്കുക', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'പ്രാദേശികമാസത്തിന്റെപേര്‌സംഗ്രഹം', 'പ്രാദേശികമാസത്തിന്റെപേര്‌ചുരുക്കം', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'പ്രാദേശികദിവസം', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'പ്രാദേശികദിവസം2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'പ്രാദേശികദിവസത്തിന്റെപേര്‌', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'പ്രാദേശികവർഷം', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'പ്രാദേശികസമയം', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'പ്രാദേശികമണിക്കൂർ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'താളുകളുടെയെണ്ണം', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ലേഖങ്ങനളുടെയെണ്ണം', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'പ്രമാണങ്ങളുടെയെണ്ണം', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ഉപയോക്താക്കളുടെയെണ്ണം', 'അംഗങ്ങളുയെണ്ണം', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'സജീവോപയാക്താക്കളുടെയെണ്ണം', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'തിരുത്തലുകളുടെണ്ണം', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'എടുത്തുനോക്കലുകളുടെണ്ണം', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'താളിന്റെപേര്‌', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'താളിന്റെപേര്‌സമഗ്രം', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'നാമമേഖല', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'നാമമേഖലസമഗ്രം', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'സംവാദമേഖല', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'സംവാദമേഖലസമഗ്രം', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'വിഷയമേഖല', 'ലേഖനമേഖല', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'വിഷയമേഖലസമഗ്രം', 'ലേഖനമേഖലസമഗ്രം', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'താളിന്റെമുഴുവൻപേര്‌', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'താളിന്റെമുഴുവൻപേര്സമഗ്രം', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'അനുബന്ധതാളിന്റെപേര്‌', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'അനുബന്ധതാളിന്റെപേര്സമഗ്രം', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌സമഗ്രം', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'സംവാദതാളിന്റെപേര്‌', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'സംവാദതാളിന്റെപേര്‌സമഗ്രം', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'ലേഖനതാളിന്റെപേര്‌', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'ലേഖനതാളിന്റെപേര്‌സമഗ്രം', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'സന്ദേശം:', 'MSG:' ),
+ 'subst' => array( '0', 'ബദൽ:', 'ബദൽ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'മൂലരൂപം:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'ലഘുചിത്രം', 'ലഘു', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'ലഘുചിത്രം=$1', 'ലഘു=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'വലത്ത്‌', 'വലത്‌', 'right' ),
+ 'img_left' => array( '1', 'ഇടത്ത്‌', 'ഇടത്‌', 'left' ),
+ 'img_none' => array( '1', 'ശൂന്യം', 'none' ),
+ 'img_width' => array( '1', '$1ബിന്ദു', '$1px' ),
+ 'img_center' => array( '1', 'നടുവിൽ', 'നടുക്ക്‌', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'framed', 'enframed', 'frame' ),
+ 'img_page' => array( '1', 'താൾ=$1', 'താൾ $1', 'page=$1', 'page $1' ),
+ 'img_border' => array( '1', 'അതിർവര', 'border' ),
+ 'img_top' => array( '1', 'മേലെ', 'top' ),
+ 'img_text_top' => array( '1', 'എഴുത്ത്-മേലെ', 'text-top' ),
+ 'img_middle' => array( '1', 'മദ്ധ്യം', 'middle' ),
+ 'img_bottom' => array( '1', 'താഴെ', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'എഴുത്ത്-താഴെ', 'text-bottom' ),
+ 'img_link' => array( '1', 'കണ്ണി=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'പകരം=$1', 'alt=$1' ),
+ 'sitename' => array( '1', 'സൈറ്റിന്റെപേര്', 'SITENAME' ),
+ 'ns' => array( '0', 'നാമേ:', 'NS:' ),
+ 'localurl' => array( '0', 'ലോക്കൽയുആർഎൽ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ലോക്കൽയുആർഎൽഇ:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'സെർവർ', 'SERVER' ),
+ 'servername' => array( '0', 'സെർവറിന്റെപേര്', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'സ്ക്രിപ്റ്റ്പാത്ത്', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'വ്യാകരണം:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'ലിംഗം:', 'GENDER:' ),
+ 'currentweek' => array( '1', 'ആഴ്ച', 'ആഴ്‌ച', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'ദിവസത്തിന്റെപേര്‌അക്കത്തിൽ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'പ്രാദേശികആഴ്ച', 'പ്രാദേശികആഴ്‌ച', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'ആഴ്ചയുടെപേര്‌അക്കത്തിൽ', 'ആഴ്‌ചയുടെപേര്‌അക്കത്തിൽ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'തിരുത്തൽഅടയാളം', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'തിരുത്തിയദിവസം', 'തിരുത്തിയദിനം', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'തിരുത്തിയദിവസം2', 'തിരുത്തിയദിനം2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'തിരുത്തിയമാസം', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'തിരുത്തിയവർഷം', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'തിരുത്തിയസമയമുദ്ര', 'REVISIONTIMESTAMP' ),
+ 'plural' => array( '0', 'ബഹുവചനം:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'പൂർണ്ണവിലാസം:', 'FULLURL:' ),
+ 'raw' => array( '0', 'അസംസ്കൃതം:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'ശീർഷകംപ്രദർശിപ്പിക്കുക', 'തലക്കെട്ട്പ്രദർശിപ്പിക്കുക', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'വ', 'R' ),
+ 'newsectionlink' => array( '1', '__പുതിയവിഭാഗംകണ്ണി__', '__പുതിയഖണ്ഡിക്കണ്ണി__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__പുതിയവിഭാഗംകണ്ണിവേണ്ട__', '__പുതിയഖണ്ഡിക്കണ്ണിവേണ്ട__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'ഈപതിപ്പ്', 'CURRENTVERSION' ),
+ 'currenttimestamp' => array( '1', 'സമയമുദ്ര', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'പ്രാദേശികസമയമുദ്ര', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'ദിശാസൂചിക', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#ഭാഷ:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'ഉള്ളടക്കഭാഷ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'നാമമേഖലയിലുള്ളതാളുകൾ', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'കാര്യനിർവ്വാഹകരുടെഎണ്ണം', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'ദശാംശഘടന', 'സംഖ്യാഘടന', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'ഇടത്ത്നിറക്കുക', 'PADLEFT' ),
+ 'padright' => array( '0', 'വലത്ത്നിറക്കുക', 'PADRIGHT' ),
+ 'special' => array( '0', 'പ്രത്യേകം', 'special' ),
+ 'tag' => array( '0', 'റ്റാഗ്', 'tag' ),
+ 'hiddencat' => array( '1', '‌‌__മറഞ്ഞിരിക്കുംവർഗ്ഗം__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'വർഗ്ഗത്തിലുള്ളതാളുകൾ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'താൾവലിപ്പം', 'PAGESIZE' ),
+ 'index' => array( '1', '‌‌__സൂചിക__', '__INDEX__' ),
+ 'noindex' => array( '1', '__സൂചികവേണ്ട__', '__NOINDEX__' ),
+ 'protectionlevel' => array( '1', 'സംരക്ഷണതലം', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'ദിനരേഖീകരണരീതി', 'ദിവസരേഖീകരണരീതി', 'formatdate', 'dateformat' ),
);
$messages = array(
@@ -206,6 +314,7 @@ $messages = array(
'tog-enotifminoredits' => 'ചെറുതിരുത്തലുകൾക്കും എനിക്ക് ഇമെയിൽ അയയ്ക്കുക',
'tog-enotifrevealaddr' => 'വിജ്ഞാപന മെയിലുകളിൽ എന്റെ ഇമെയിൽ വിലാസം വെളിവാക്കാൻ അനുവദിക്കുക',
'tog-shownumberswatching' => 'ശ്രദ്ധിക്കുന്ന ഉപയോക്താക്കളുടെ എണ്ണം കാണിക്കുക',
+'tog-oldsig' => 'നിലവിലുള്ള ഒപ്പ് എങ്ങനെയുണ്ടെന്നു കാണുക:',
'tog-fancysig' => 'ഒപ്പ് ഒരു വിക്കിടെക്സ്റ്റായി പരിഗണിക്കുക (കണ്ണി സ്വയം ചേർക്കേണ്ടതില്ല)',
'tog-externaleditor' => 'തിരുത്തലുകൾക്കായി ബാഹ്യ ഉപകരണങ്ങൾ സ്വതേ ഉപയോഗിക്കുക',
'tog-externaldiff' => 'വ്യത്യാസം അറിയാനായി ബാഹ്യ ഉപകരണങ്ങൾ സ്വതേ ഉപയോഗിക്കുക',
@@ -227,6 +336,13 @@ $messages = array(
'underline-never' => 'ഒരിക്കലും അരുത്',
'underline-default' => 'ബ്രൗസറിലേതു പോലെ',
+# Font style option in Special:Preferences
+'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി',
+'editfont-default' => 'ബ്രൗസറിലേതു പോലെ',
+'editfont-monospace' => 'മോണോസ്പേസ്ഡ് ഫോണ്ട്',
+'editfont-sansserif' => 'സാൻസ്-സെറിഫ് ഫോണ്ട്',
+'editfont-serif' => 'സെറിഫ് ഫോണ്ട്',
+
# Dates
'sunday' => 'ഞായർ',
'monday' => 'തിങ്കൾ',
@@ -286,7 +402,7 @@ $messages = array(
'category-media-header' => '"$1" എന്ന വർഗ്ഗത്തിലെ പ്രമാണങ്ങൾ',
'category-empty' => "''ഈ വർഗ്ഗത്തിൽ താളുകളോ പ്രമാണങ്ങളോ ഇല്ല.''",
'hidden-categories' => '{{PLURAL:$1|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗം|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ}}',
-'hidden-category-category' => 'മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ',
'category-subcat-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിനു്‌ താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന ഒരു ഉപവർഗ്ഗം മാത്രമേ ഉള്ളൂ.|ഈ വർഗ്ഗത്തിനു്‌ മൊത്തം $2 ഉപവർഗ്ഗങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരു ഉപവർഗ്ഗം|$1 ഉപവർഗ്ഗങ്ങൾ}} താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.}}',
'category-subcat-count-limited' => 'ഈ വർഗ്ഗത്തിനു താഴെ കാണുന്ന {{PLURAL:$1|ഉപവർഗ്ഗമുണ്ട്|$1 ഉപവർഗ്ഗങ്ങളുണ്ട്}}.',
'category-article-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന ഒരു താളേ ഉള്ളൂ.|ഈ വർഗ്ഗത്തിൽ $2 താളുകളുള്ളതിൽ {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.}}',
@@ -294,6 +410,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ കാണുന്ന ഒരു പ്രമാണം മാത്രമേ ഉള്ളൂ.|മൊത്തം $2 പ്രമാണങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} താഴെ കാണിച്ചിരിക്കുന്നു.}}',
'category-file-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ കാണുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
'listingcontinuesabbrev' => 'തുടർച്ച.',
+'index-category' => 'വർഗ്ഗീകരിക്കപ്പെട്ട താളുകൾ',
+'noindex-category' => 'വർഗ്ഗീകരിക്കപ്പെടാത്ത താളുകൾ',
'mainpagetext' => "'''മീഡിയവിക്കി വിജയകരമായി സജ്ജീകരിച്ചിരിക്കുന്നു.'''",
'mainpagedocfooter' => 'വിക്കി സോഫ്റ്റ്‌വെയർ ഉപയോഗിക്കുന്നതിനെ കുറിച്ചുള്ള വിശദാംശങ്ങൾക്ക് [http://meta.wikimedia.org/wiki/Help:Contents സോഫ്റ്റ്‌വെയർ സഹായി] കാണുക.
@@ -303,10 +421,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ മീഡിയവിക്കി സ്ഥിരംചോദ്യങ്ങൾ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce മീഡിയവിക്കി പ്രകാശന മെയിലിങ്ങ് ലിസ്റ്റ്]',
-'about' => 'വിവരണം',
-'article' => 'ലേഖന താൾ',
-'newwindow' => '(പുതിയ ജാലകത്തിൽ തുറന്നു വരും)',
-'cancel' => 'റദ്ദാക്കുക',
+'about' => 'വിവരണം',
+'article' => 'ലേഖന താൾ',
+'newwindow' => '(പുതിയ ജാലകത്തിൽ തുറന്നു വരും)',
+'cancel' => 'റദ്ദാക്കുക',
+'moredotdotdot' => 'കൂടുതൽ...',
+'mypage' => 'എന്റെ താൾ',
+'mytalk' => 'എന്റെ സംവാദതാൾ',
+'anontalk' => 'ഈ ഐ.പി.യുടെ സം‌വാദം താൾ',
+'navigation' => 'ഉള്ളടക്കം',
+'and' => '&#32;ഒപ്പം',
+
+# Cologne Blue skin
'qbfind' => 'കണ്ടെത്തുക',
'qbbrowse' => 'പരതുക',
'qbedit' => 'തിരുത്തുക',
@@ -314,15 +440,35 @@ $messages = array(
'qbpageinfo' => 'സന്ദർഭം',
'qbmyoptions' => 'എന്റെ താളുകൾ',
'qbspecialpages' => 'പ്രത്യേക താളുകൾ',
-'moredotdotdot' => 'കൂടുതൽ...',
-'mypage' => 'എന്റെ താൾ',
-'mytalk' => 'എന്റെ സംവാദതാൾ',
-'anontalk' => 'ഈ ഐ.പി.യുടെ സം‌വാദം താൾ',
-'navigation' => 'ഉള്ളടക്കം',
-'and' => '&#32;ഒപ്പം',
-
-# Metadata in edit box
-'metadata_help' => 'മെറ്റാഡാറ്റ:',
+'faq' => 'പതിവുചോദ്യങ്ങൾ',
+'faqpage' => 'Project:പതിവുചോദ്യങ്ങൾ',
+
+# Vector skin
+'vector-action-addsection' => 'വിഷയം ചേർക്കുക',
+'vector-action-delete' => 'മായ്ക്കുക',
+'vector-action-move' => 'തലക്കെട്ട് മാറ്റുക',
+'vector-action-protect' => 'സം‌രക്ഷിക്കുക',
+'vector-action-undelete' => 'മായ്ക്കപ്പെട്ടത് പുനഃസ്ഥാപിക്കുക',
+'vector-action-unprotect' => 'സം‌രക്ഷണം നീക്കുക',
+'vector-namespace-category' => 'വർഗ്ഗം',
+'vector-namespace-help' => 'സഹായം താൾ',
+'vector-namespace-image' => 'പ്രമാണം',
+'vector-namespace-main' => 'ലേഖനം',
+'vector-namespace-media' => 'മീഡിയ താൾ',
+'vector-namespace-mediawiki' => 'സന്ദേശം',
+'vector-namespace-project' => 'പദ്ധതി താൾ',
+'vector-namespace-special' => 'പ്രത്യേക താൾ',
+'vector-namespace-talk' => 'സം‌വാദം',
+'vector-namespace-template' => 'ഫലകം',
+'vector-namespace-user' => 'ഉപയോക്താവിന്റെ താൾ',
+'vector-view-create' => 'സൃഷ്ടിക്കുക',
+'vector-view-edit' => 'തിരുത്തുക',
+'vector-view-history' => 'നാൾവഴി കാണുക',
+'vector-view-view' => 'വായിക്കുക',
+'vector-view-viewsource' => 'മൂലരൂപം കാണുക',
+'actions' => 'നടപടികൾ',
+'namespaces' => 'നാമമേഖല',
+'variants' => 'ചരങ്ങൾ',
'errorpagetitle' => 'പിഴവ്',
'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
@@ -372,18 +518,22 @@ $messages = array(
'otherlanguages' => 'ഇതര ഭാഷകളിൽ',
'redirectedfrom' => '($1 എന്ന താളിൽ നിന്നും തിരിച്ചുവിട്ടതു പ്രകാരം)',
'redirectpagesub' => 'തിരിച്ചുവിടൽ താൾ',
-'lastmodifiedat' => 'ഈ താൾ അവസാനം തിരുത്തപ്പെട്ടത്: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'ഈ താൾ അവസാനം തിരുത്തപ്പെട്ടത്: $2, $1.',
'viewcount' => 'ഈ താൾ {{PLURAL:$1|ഒരു തവണ|$1 തവണ}} സന്ദർശിക്കപ്പെട്ടിട്ടുണ്ട്.',
'protectedpage' => 'സംരക്ഷിത താൾ',
'jumpto' => 'പോവുക:',
'jumptonavigation' => 'വഴികാട്ടി',
'jumptosearch' => 'തിരയൂ',
+'view-pool-error' => 'ക്ഷമിക്കണം, ഈ നിമിഷം സെർവറുകൾ അമിതഭാരം കൈകാര്യം ചെയ്യുകയാണ്.
+ധാരാളം ഉപയോക്താക്കൾ ഈ താൾ കാണുവാൻ ശ്രമിച്ചുകൊണ്ടിരിക്കുകയാണ്.
+ഇനിയും താൾ ലഭ്യമാക്കുവാൻ താങ്കൾ ശ്രമിക്കുന്നതിന് മുൻപ് ദയവായി അല്പസമയം കാത്തിരിക്കുക.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} സം‌രംഭത്തെക്കുറിച്ച്',
'aboutpage' => 'Project:വിവരണം',
'copyright' => 'ഉള്ളടക്കം $1 പ്രകാരം ലഭ്യം.',
-'copyrightpagename' => '{{SITENAME}} പകർപ്പവകാശം',
'copyrightpage' => '{{ns:project}}:പകർപ്പവകാശം',
'currentevents' => 'സമകാലികം',
'currentevents-url' => 'Project:സമകാലികം',
@@ -391,14 +541,12 @@ $messages = array(
'disclaimerpage' => 'Project:പൊതുനിരാകരണം',
'edithelp' => 'തിരുത്തൽ സഹായി',
'edithelppage' => 'Help:തിരുത്തൽ വഴികാട്ടി',
-'faq' => 'പതിവുചോദ്യങ്ങൾ',
-'faqpage' => 'Project:പതിവുചോദ്യങ്ങൾ',
'helppage' => 'Help:ഉള്ളടക്കം',
'mainpage' => 'പ്രധാന താൾ',
'mainpage-description' => 'പ്രധാന താൾ',
'policy-url' => 'Project:നയം',
'portal' => 'സാമൂഹികകവാടം',
-'portal-url' => 'Project:സാമൂഹ്യകവാടം',
+'portal-url' => 'Project:സാമൂഹികകവാടം',
'privacy' => 'സ്വകാര്യതാനയം',
'privacypage' => 'Project:സ്വകാര്യതാനയം',
@@ -471,10 +619,6 @@ $messages = array(
"$1"
"$2" എന്ന നിർദ്ദേശത്തിനകത്ത് നിന്നും .
വിവരശേഖരത്തിൽ നിന്നും ലഭിച്ച പിഴവ് "$3: $4"',
-'noconnect' => 'ക്ഷമിക്കണം! ചില സാങ്കേതികപ്രശ്നങ്ങൾ മൂലം വിക്കിക്കു ഡാറ്റാബേസ് സെർവറുമായി ബന്ധപ്പെടാൻ സാധിച്ചില്ല. <br />
-$1',
-'nodb' => '$1 എന്ന ഡാറ്റാബേസ് തിരഞ്ഞെടുക്കാൻ പറ്റിയില്ല.',
-'cachederror' => 'താങ്കൾ ആവശ്യപ്പെട്ട താളിന്റെ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കപ്പെട്ടിട്ടുള്ള ഒരു പതിപ്പാണ് താഴെക്കാണുന്നത്. ഇത് ഏറ്റവും പുതിയ പതിപ്പാവണമെന്നില്ല.',
'laggedslavemode' => 'മുന്നറിയിപ്പ്: താളിൽ അടുത്തകാലത്ത് വരുത്തിയ പുതുക്കലുകൾ ഉണ്ടാവണമെന്നില്ല.',
'readonly' => 'ഡാറ്റാബേസ് ബന്ധിച്ചിരിക്കുന്നു',
'enterlockreason' => 'ഡാറ്റാബേസ് ബന്ധിക്കുവാനുള്ള കാരണം സൂചിപ്പിക്കുക. അതോടൊപ്പം എപ്പോഴാണ്‌ ബന്ധനം അഴിക്കുവാൻ ഉദ്ദേശിക്കുന്നതെന്നും രേഖപ്പെടുത്തുക.',
@@ -492,6 +636,8 @@ $1',
'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ പിടിച്ചിരിക്കുന്നു',
'internalerror' => 'ആന്തരികമായ പ്രശ്നം',
'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
+'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
+'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
'filerenameerror' => 'പ്രമാണം "$1", "$2" എന്ന തലക്കെട്ടിലേയ്ക്കു മാറ്റാൻ സാധിച്ചില്ല.',
'filedeleteerror' => '"$1" നീക്കം ചെയ്യാൻ സാധിച്ചില്ല.',
@@ -501,7 +647,8 @@ $1',
'unexpected' => 'പ്രതീക്ഷിക്കാത്ത മൂല്യം: "$1"="$2".',
'formerror' => 'പിഴവ്: ഫോം സമർപ്പിക്കുവാൻ പറ്റിയില്ല',
'badarticleerror' => 'താങ്കൾ ചെയ്യാനുദ്ദേശിക്കുന്നത് ഈ താളിൽ സാദ്ധ്യമല്ല',
-'cannotdelete' => 'സൂചിപ്പിച്ച താളോ പ്രമാണമോ നീക്കം ചെയ്യാന്‍ സാധിച്ചില്ല. (അതു മറ്റാരെങ്കിലും മുമ്പേ നീക്കം ചെയ്തിട്ടുണ്ടാവാം.)',
+'cannotdelete' => '"$1" എന്ന താൾ അഥവാ പ്രമാണം നീക്കം ചെയ്യാൻ കഴിഞ്ഞില്ല.
+അതു മിക്കവാറും മറ്റാരെങ്കിലും നീക്കം ചെയ്തിട്ടുണ്ടാവാം.',
'badtitle' => 'അസാധുവായ തലക്കെട്ട്',
'badtitletext' => 'താങ്കൾ ആവശ്യപ്പെട്ട തലക്കെട്ടുള്ള ഒരു താൾ നിലവിലില്ല. ഇതു തെറ്റായി അന്തർഭാഷാ/അന്തർവിക്കി കണ്ണി ചെയ്യപ്പെട്ടതു മൂലമോ, തലക്കെട്ടിൽ ഉപയോഗിക്കരുതാത്ത അക്ഷരരൂപങ്ങൾ ഉപയോഗിച്ചതു മൂലമോ സംഭവിച്ചതായിരിക്കാം.',
'perfcached' => 'താഴെ കൊടുത്തിരിക്കുന്ന വിവരം ശേഖരിക്കപ്പെട്ടതാണ് ആയതിനാൽ ചിലപ്പോൾ നവീനമായിരിക്കില്ല.',
@@ -533,7 +680,6 @@ $2',
'virus-unknownscanner' => 'തിരിച്ചറിയാനാകാത്ത ആന്റിവൈറസ്:',
# Login and logout pages
-'logouttitle' => 'യൂസർ ലോഗൗട്ട്',
'logouttext' => "'''താങ്കൾ ഇപ്പോൾ {{SITENAME}} സംരംഭത്തിൽനിന്നും ലോഗൗട്ട് ചെയ്തിരിക്കുന്നു'''
അജ്ഞാതമായിരുന്നു കൊണ്ട് {{SITENAME}} സം‌രംഭം താങ്കൾക്കു തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്‌.
@@ -542,7 +688,6 @@ $2',
'welcomecreation' => '== സ്വാഗതം, $1! ==
താങ്കളുടെ അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.
താങ്കളുടെ [[Special:Preferences|{{SITENAME}} ക്രമീകരണങ്ങളിൽ]] ആവശ്യമായ മാറ്റം വരുത്തുവാൻ മറക്കരുതേ.',
-'loginpagetitle' => 'ഉപയോക്തൃലോഗിൻ',
'yourname' => 'ഉപയോക്തൃനാമം:',
'yourpassword' => 'രഹസ്യവാക്ക്:',
'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
@@ -553,6 +698,7 @@ $2',
'nav-login-createaccount' => 'പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക',
'loginprompt' => '{{SITENAME}} സംരംഭത്തിൽ ലോഗിൻ ചെയ്യാൻ താങ്കൾ കുക്കികൾ (Cookies) സജ്ജമാക്കിയിരിക്കണം.',
'userlogin' => 'പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക',
+'userloginnocreate' => 'പ്രവേശിക്കുക',
'logout' => 'ലോഗൗട്ട്',
'userlogout' => 'ലോഗൗട്ട്',
'notloggedin' => 'പ്രവേശിച്ചിട്ടില്ല',
@@ -564,29 +710,8 @@ $2',
'createaccountmail' => 'ഇമെയിൽ വഴി',
'badretype' => 'താങ്കൾ ടൈപ്പു ചെയ്ത രഹസ്യവാക്കുകൾ തമ്മിൽ യോജിക്കുന്നില്ല.',
'userexists' => 'ഈ പേരിൽ മറ്റൊരു ഉപയോക്തൃനാമം നിലവിലുണ്ട്. ദയവായി മറ്റൊരു ഉപയോക്തൃനാമം തിരഞ്ഞെടുക്കുക.',
-'youremail' => 'ഇമെയിൽ:',
-'username' => 'ഉപയോക്തൃനാമം:',
-'uid' => 'ഉപയോക്തൃഐ.ഡി:',
-'prefs-memberingroups' => 'അംഗത്വമുള്ള {{PLURAL:$1|സംഘം|സംഘങ്ങൾ}}:',
-'yourrealname' => 'യഥാർത്ഥ പേര്‌:',
-'yourlanguage' => 'ഭാഷ:',
-'yourvariant' => 'വ്യത്യാസമാനം',
-'yournick' => 'ഒപ്പ്:',
-'badsig' => 'അനുവദനീയമല്ലാത്ത രൂപത്തിലുള്ള ഒപ്പ്. HTML ടാഗുകൾ പരിശോധിക്കുക.',
-'badsiglength' => 'താങ്കളുടെ ഒപ്പിനു നീളം കൂടുതലാണ്‌.
-അതിലെ {{PLURAL:$1|അക്ഷരത്തിന്റെ|അക്ഷരങ്ങങ്ങളുടെ}} എണ്ണം $1 ൽ താഴെയായിരിക്കണം.',
-'yourgender' => 'ആൺ/പെൺ:',
-'gender-unknown' => 'വ്യക്തമാക്കിയിട്ടില്ല',
-'gender-male' => 'പുരുഷൻ',
-'gender-female' => 'സ്ത്രീ',
-'prefs-help-gender' => 'നിർബന്ധമില്ല: സോഫ്റ്റ്‌വെയർ ഉപയോഗിച്ച് സ്ത്രീകളേയും പുരുഷന്മാരേയും ശരിയായി സംബോധന ചെയ്യാൻ ഉപയോഗിക്കുന്നു.
-ഈ വിവരം പരസ്യമായി ലഭ്യമായിരിക്കുന്നതാണ്‌.',
-'email' => 'ഇമെയിൽ',
-'prefs-help-realname' => 'താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല. എങ്കിലും അങ്ങനെ ചെയ്താൽ താങ്കളുടെ സംഭാവനകൾ ആ പേരിൽ അംഗീകരിക്കപ്പെടും.',
'loginerror' => 'പ്രവേശനം സാധിച്ചില്ല',
-'prefs-help-email' => 'ഇമെയിൽ വിലാസം നൽകണമെന്ന് നിർബന്ധമില്ല, പക്ഷേ താങ്കൾ രഹസ്യവാക്ക് മറന്നാൽ പുതിയത് അയച്ചു തരാൻ ഇതുകൊണ്ട് സാധിക്കുന്നതാണ്‌.
-താങ്കൾക്കായുള്ള താളിൽ നിന്നോ, താങ്കൾക്കുള്ള സന്ദേശങ്ങളുടെ താളിൽ നിന്നോ മറ്റുപയോക്താക്കൾക്ക് താങ്കളുടെ വ്യക്തിത്വം മനസ്സിലാക്കാതെ തന്നെ താങ്കൾക്ക് സന്ദേശങ്ങളയയ്ക്കാനും ഈ സം‌വിധാനം അവസരം നൽകുന്നു.',
-'prefs-help-email-required' => 'ഇമെയിൽ വിലാസം ആവശ്യമാണ്‌.',
+'createaccounterror' => 'അംഗത്വമെടുക്കാൻ കഴിഞ്ഞില്ല:$1',
'nocookiesnew' => 'ഉപയോക്തൃഅംഗത്വം ഉണ്ടാക്കിയിരിക്കുന്നു. പക്ഷെ താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല. {{SITENAME}} സംരംഭത്തിൽ ലോഗിൻ ചെയ്യുവാൻ കുക്കികൾ സജ്ജമാക്കിയിരിക്കണം. താങ്കളുടെ കമ്പ്യൂട്ടറിൽ നിലവിൽ കുക്കികൾ ഡിസേബിൾ ചെയ്തിരിക്കുന്നു. അതു എനേബിൾ ചെയ്തു താങ്കളുടെ ഉപയോക്തൃനാമവും രഹസ്യവാക്കും ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യൂ.',
'nocookieslogin' => '{{SITENAME}} സംരഭത്തിൽ ലോഗിൻ ചെയ്യുവാൻ കുക്കികൾ സജ്ജമാക്കിയിരിക്കണം. പക്ഷെ താങ്കൾ കുക്കികൾ സജ്ജമാക്കിയിട്ടില്ല. കുക്കികൾ സജ്ജമാക്കിയതിനു ശേഷം വീണ്ടും ലോഗിൻ ചെയ്യാൻ ശ്രമിക്കൂ.',
'noname' => 'താങ്കൾ സാധുവായ ഉപയോക്തൃനാമം സൂചിപ്പിച്ചിട്ടില്ല.',
@@ -597,15 +722,18 @@ $2',
പുതിയ [[Special:UserLogin/signup|അംഗത്വമെടുക്കുക]].',
'nosuchusershort' => '"<nowiki>$1</nowiki>" എന്ന പേരിൽ ഒരു ഉപയോക്താവ് ഇല്ല. അക്ഷരങ്ങൾ ഒന്നു കൂടി പരിശോധിക്കുക.',
'nouserspecified' => 'ഉപയോക്തൃനാമം നിർബന്ധമായും ചേർക്കണം.',
+'login-userblocked' => 'ഈ ഉപയോക്താവ് തടയപ്പെട്ടിരിക്കുന്നു. പ്രവേശനം അനുവദിക്കുന്നില്ല.',
'wrongpassword' => 'താങ്കൾ നൽകിയ രഹസ്യവാക്ക് തെറ്റാണ്, വീണ്ടും ശ്രമിക്കുക.',
'wrongpasswordempty' => 'താങ്കൾ രഹസ്യവാക്ക് നൽകിയിരുന്നില്ല. വീണ്ടും ശ്രമിക്കുക.',
-'passwordtooshort' => 'നിങ്ങളുടെ രഹസ്യവാക്ക് ഒന്നുകില്‍ അസാധുവാണ് അല്ലെങ്കില്‍ വളരെ ചെറുതാണ്. രഹസ്യവാക്കില്‍ കുറഞ്ഞതു {{PLURAL:$1|1 അക്ഷരം|$1 അക്ഷരങ്ങള്‍}} ഉണ്ടാവണം. രഹസ്യവാക്ക് നിങ്ങളുടെ ഉപയോക്തൃനാമത്തില്‍ നിന്നു വ്യത്യസ്തമായിരിക്കുകയും വേണം.',
+'passwordtooshort' => 'രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.',
+'password-name-match' => 'താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.',
'mailmypassword' => 'പുതിയ രഹസ്യവാക്ക് ഇമെയിൽ ചെയ്യുക',
'passwordremindertitle' => '{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കാനുള്ള താത്ക്കാലിക രഹസ്യവാക്ക്',
'passwordremindertext' => 'ആരോ ഒരാൾ (ഒരു പക്ഷേ താങ്കളായിരിക്കാം, $1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന്) {{SITENAME}} ($4) സംരംഭത്തിലേക്ക് പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. "$2" എന്ന ഉപയോക്താവിന് ആവശ്യമായ ഒരു താൽകാലിക രഹസ്യവാക്കായി "$3" എന്ന് സജ്ജീകരിച്ചിരിക്കുന്നു. ഇത് താങ്കളുടെ ആവശ്യമാണെങ്കിൽ, താങ്കൾ പ്രവേശം ചെയ്ത് പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.
ഈ അഭ്യർത്ഥന മറ്റാരെങ്കിലും നടത്തിയതാണെങ്കിൽ, അതല്ല പഴയ രഹസ്യവാക്ക് ഓർമ്മയുണ്ടായിരിക്കുകയും അത് മാറ്റുവാൻ താങ്കൾക്ക് താത്പര്യവുമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിച്ച് താങ്കളുടെ പഴയ രഹസ്യവാക്ക് തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്‌.',
'noemail' => '"$1" എന്ന ഉപയോക്താവ് ഇമെയിൽ വിലാസം ക്രമീകരിച്ചിട്ടില്ല.',
+'noemailcreate' => 'താങ്കൾ സാധുവായ ഇമെയിൽ വിലാസം നൽകേണ്ടതാണ്',
'passwordsent' => '‘$1” എന്ന അംഗത്വത്തിനായി രജിസ്റ്റർ ചെയ്യപ്പെട്ടിട്ടുള്ള ഇമെയിൽ വിലാസത്തിലേക്ക് ഒരു പുതിയ രഹസ്യവാക്ക് അയച്ചിട്ടുണ്ട്. അത് ലഭിച്ചശേഷം ദയവായി ലോഗിൻ ചെയ്യുക.',
'blocked-mailpassword' => 'താങ്കളുടെ ഐ.പി. വിലാസത്തെ ഈ വിക്കി തിരുത്തുന്നതിൽ നിന്നു തടഞ്ഞിട്ടുള്ളതാണ്‌. അതിനാൽ രഹസ്യവാക്ക് വീണ്ടെടുക്കുവാനുള്ള സജ്ജീകരണം ഉപയോഗിക്കുന്നതിനു താങ്കൾക്ക് അവകാശമില്ല.',
'eauthentsent' => 'താങ്കൾ വിക്കിയിൽ ക്രമീകരിച്ചിട്ടുള്ള ഇമെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണത്തിനായി ഒരു മെയിൽ അയച്ചിട്ടുണ്ട്. ഇവിടെ നിന്ന് ആ ഇമെയിൽ വിലാസത്തിലേക്ക് മറ്റൊരു മെയിൽ കൂടി അയക്കുന്നതിനു മുൻപായി, അംഗത്വം താങ്കളുടേതു തന്നെ എന്നു ഉറപ്പു വരുത്തുന്നതിനായി, ഇപ്പോൾ അയച്ചിട്ടുള്ള മെയിലിലെ നിർദ്ദേശങ്ങൾ താങ്കൾ പാലിക്കേണ്ടതാണ്.',
@@ -625,9 +753,11 @@ $2',
'createaccount-text' => '{{SITENAME}} സംരംഭത്തിൽ ($4) താങ്കളുടെ ഇമെയിൽ വിലാസത്തിൽ ആരോ ഒരു അംഗത്വം "$2" എന്ന ഉപയോക്തൃനാമത്തിൽ ഉണ്ടാക്കിയിരിക്കുന്നു (രഹസ്യവാക്ക്: "$3"). താങ്കൾ ഇപ്പോൾ ലോഗിൻ ചെയ്തു രഹസ്യവാക്ക് മാറ്റേണ്ടതാകുന്നു.
അംഗത്വം അബദ്ധവശാൽ ഉണ്ടാക്കിയതാണെങ്കിൽ താങ്കൾക്ക് ഈ സന്ദേശം നിരാകരിക്കാവുന്നതാണ്‌.',
+'usernamehasherror' => 'ഉപയോക്തൃനാമത്തിൽ ഹാഷ് ലിപികൾ ഉൾപ്പെടുത്തരുത്',
'login-throttled' => 'താങ്കൾ നിരവധി പ്രാവശ്യം ലോഗിൻ ചെയ്യാൻ ശ്രമിച്ചിരിക്കുന്നു.
പുതിയതായി ശ്രമിക്കുന്നതിനു മുമ്പ് ദയവായി കാത്തിരിക്കുക.',
'loginlanguagelabel' => 'ഭാഷ: $1',
+'suspicious-userlogout' => 'ലോഗൗട്ട് ചെയ്യാനുള്ള താങ്കളുടെ അഭ്യർത്ഥന നിരസിച്ചിരിക്കുന്നു, കാരണം അത് തകർന്ന ബ്രൗസറിൽ നിന്നോ കാഷിങ് പ്രോക്സിയിൽ നിന്നോ ഉണ്ടായതുപോലെ അനുഭവപ്പെടുന്നു.',
# Password reset dialog
'resetpass' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
@@ -638,14 +768,13 @@ $2',
'retypenew' => 'പുതിയ രഹസ്യവാക്ക് ഉറപ്പിക്കുക:',
'resetpass_submit' => 'രഹസ്യവാക്ക് സജ്ജീകരിച്ചശേഷം ലോഗിൻ ചെയ്യുക',
'resetpass_success' => 'താങ്കളുടെ രഹസ്യവാക്ക് വിജയകരമായി മാറ്റിയിരിക്കുന്നു! ഇപ്പോൾ താങ്കളെ സംരംഭത്തിലേക്ക് ആനയിക്കുന്നു...',
-'resetpass_bad_temporary' => 'അസാധുവായ താൽക്കാലിക രഹസ്യവാക്ക്. ഒന്നുകിൽ ഇതിനകം താങ്കൾ രഹസ്യവാക്ക് മാറ്റിയിരിക്കാം. അല്ലെങ്കിൽ പുതിയ ഒരു താൽക്കാലിക രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിട്ടുണ്ടായിരിക്കാം.',
'resetpass_forbidden' => 'രഹസ്യവാക്കുകൾ മാറ്റുന്നത് അനുവദിക്കുന്നില്ല',
'resetpass-no-info' => 'ഈ താൾ നേരിട്ടു കാണുന്നതിന് താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.',
'resetpass-submit-loggedin' => 'രഹസ്യവാക്ക് മാറ്റുക',
+'resetpass-submit-cancel' => 'റദ്ദാക്കുക',
'resetpass-wrong-oldpass' => 'സാധുതയില്ലാത്ത താത്കാലിക അല്ലെങ്കിൽ നിലവിലുള്ള രഹസ്യവാക്ക്.
നിലവിൽ താങ്കൾ വിജയകരമായി രഹസ്യവാക്ക് മാറ്റിയിട്ടുണ്ട് അല്ലെങ്കിൽ ഒരു പുതിയ താത്കാലിക രഹസ്യവാക്കിന് ആവശ്യപ്പെട്ടിരിക്കുന്നു.',
'resetpass-temp-password' => 'താത്കാലിക രഹസ്യവാക്ക്:',
-'resetpass-log' => 'രഹസ്യവാക്ക് പുതിയതിന്റെ പട്ടിക',
# Edit page toolbar
'bold_sample' => 'കടുപ്പിച്ച എഴുത്ത്',
@@ -713,7 +842,6 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
'blockededitsource' => "'''$1''' എന്ന താളിൽ '''താങ്കൾ നടത്തിയ തിരുത്തലുകളുടെ''' പൂർണ്ണരൂപം താഴെക്കാണിച്ചിരിക്കുന്നു:",
'whitelistedittitle' => 'തിരുത്താൻ ലോഗിൻ ചെയ്യണം',
'whitelistedittext' => 'താളുകൾ തിരുത്താൻ താങ്കൾ $1 ചെയ്യേണ്ടതാണ്',
-'confirmedittitle' => 'തിരുത്താൻ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതുണ്ട്',
'confirmedittext' => 'താളുകൾ തിരുത്തുന്നതിനു മുൻപ് താങ്കൾ താങ്കളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതാണ്‌. ഇമെയിൽ വിലാസം ക്രമപ്പെടുത്തി സാധുത പരിശോധിക്കാൻ [[Special:Preferences|എന്റെ ക്രമീകരണങ്ങൾ]] എന്ന സം‌വിധാനം ഉപയോഗിക്കുക.',
'nosuchsectiontitle' => 'ഉപവിഭാഗം കണ്ടെത്താനായില്ല',
'nosuchsectiontext' => 'നിലവിലില്ലാത്ത ഒരു ഉപവിഭാഗമാണു താങ്കൾ തിരുത്താൻ ശ്രമിക്കുന്നത്.
@@ -736,7 +864,13 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
|}",
'noarticletext' => 'ഈ താളിൽ ഇതുവരെ ഉള്ളടക്കം ആയിട്ടില്ല.
താങ്കൾക്ക് മറ്റുതാളുകളിൽ [[Special:Search/{{PAGENAME}}|ഇതേക്കുറിച്ച് അന്വേഷിക്കുകയോ]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ബന്ധപ്പെട്ട രേഖകൾ പരിശോധിക്കുകയോ], [{{fullurl:{{FULLPAGENAME}}|action=edit}} ഈ താൾ തിരുത്തുകയോ ചെയ്യാവുന്നതാണ്]</span>.',
+'noarticletext-nopermission' => 'ഇപ്പോൾ ഈ താളിൽ എഴുത്തുകളൊന്നും ഇല്ല.
+താങ്കൾക്ക് മറ്റു താളുകളിൽ [[Special:Search/{{PAGENAME}}|ഈ താളിന്റെ തലക്കെട്ടിനായി തിരയാവുന്നതാണ്‌]],
+അല്ലെങ്കിൽ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ബന്ധപ്പെട്ട രേഖകൾ പരിശോധിക്കാവുന്നതാണ്‌]</span>.',
'userpage-userdoesnotexist' => '"$1" എന്ന ഉപയോക്താവ് അംഗത്വമെടുത്തിട്ടില്ല. ഈ താൾ സൃഷ്ടിക്കണമോ എന്നതു പരിശോധിക്കുക.',
+'userpage-userdoesnotexist-view' => '"$1" എന്ന അം‌ഗത്വം നിലവിലില്ല.',
+'blocked-notice-logextract' => 'ഈ ഉപയോക്താവ് ഇപ്പോൾ തടയപ്പെട്ടിരിക്കുകയാണ്.
+തടയൽ രേഖയിലെ പുതിയ ഉൾപ്പെടുത്തൽ അവലംബമായി താഴെ നൽകിയിരിക്കുന്നു:',
'clearyourcache' => "'''പ്രത്യേക ശ്രദ്ധയ്ക്ക്:'''
സേവ് ചെയ്ത ക്രമീകരണങ്ങൾ കാണാൻ താങ്കളുടെ ബ്രൗസറിന്റെ കാഷെ ക്ലിയർ ചെയ്യണം.
@@ -745,7 +879,8 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
*'''ഇന്റർനെറ്റ് എക്സ്പ്ലോറർ (IE):''Refresh'' ബട്ടൺ അമർത്തുമ്പോൾ ''Ctrl'' കീ അമർത്തിപിടിക്കുക. അല്ലെങ്കിൽ ''Ctrl-F5'' അമർത്തുക;
*'''ഓപ്പറ (Opera)''': ''Tools→Preferences'' ഉപയോഗിച്ച് കാഷെ പൂർണ്ണമായും ക്ലിയർ ചെയ്യുക;
*'''Konqueror:''': ''Reload'' ബട്ടൺ അമർത്തുകയോ ''F5'' കീ അമർത്തുകയോ ചെയ്യുക.",
-'usercssjsyoucanpreview' => "'''വഴികാട്ടി:''' താങ്കളുടെ പുതിയ CSS/JS സേവ് ചെയ്യുന്നതിനു മുമ്പ് 'പ്രിവ്യൂ കാണുക' എന്ന ബട്ടൻ ഉപയോഗിച്ച് പരിശോധിക്കുക.",
+'usercssyoucanpreview' => "'''വഴികാട്ടി:''' താങ്കളുടെ പുതിയ CSS സേവ് ചെയ്യുന്നതിനു മുമ്പ് \"{{int:showpreview}}\" എന്ന ബട്ടൻ ഉപയോഗിച്ച് പരിശോധിക്കുക.",
+'userjsyoucanpreview' => "'''വഴികാട്ടി:''' താങ്കളുടെ പുതിയ ജാവാസ്ക്രിപ്റ്റ് സേവ് ചെയ്യുന്നതിനു മുമ്പ് \"{{int:showpreview}}\" എന്ന ബട്ടൻ ഉപയോഗിച്ച് പരിശോധിക്കുക.",
'usercsspreview' => "'''താങ്കൾ താങ്കളുടെ സ്വന്തം CSS പ്രിവ്യൂ ചെയ്യുക മാത്രമേ ചെയ്യുന്നുള്ളൂ എന്ന കാര്യം ഓർമ്മിക്കുക.'''
'''ഇതു സേവ് ചെയ്തിട്ടില്ല!'''",
'userjspreview' => "'''താങ്കൾ താങ്കളുടെ സ്വന്തം ജാവസ്ക്രിപ്റ്റ് പ്രിവ്യൂ ചെയ്യുക മാത്രമേ ചെയ്യുന്നുള്ളൂ എന്ന കാര്യം ഓർമ്മിക്കുക. ഇതു സേവ് ചെയ്തിട്ടില്ല!'''",
@@ -790,13 +925,13 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
താളുകളുടെ ഉപവിഭാഗങ്ങൾ തിരഞ്ഞെടുത്ത് തിരുത്തുന്നത് പരിഗണിക്കുക.",
'longpageerror' => "'''പിഴവ്: താങ്കൾ സമർപ്പിച്ച എഴുത്തുകൾക്ക് $1 കിലോബൈറ്റ്സ് വലിപ്പമുണ്ട്. പരമാവധി അനുവദനീയമായ വലിപ്പം $2 കിലോബൈറ്റ്സ് ആണ്‌. അതിനാലിതു സേവ് ചെയ്യാൻ സാദ്ധ്യമല്ല.'''",
'readonlywarning' => "'''മുന്നറിയിപ്പ്: വിവരശേഖരം അതിന്റെ പരിപാലനത്തിനു വേണ്ടി ബന്ധിച്ചിരിക്കുന്നു, അതുകൊണ്ട് താങ്കളിപ്പോൾ വരുത്തിയ മാറ്റങ്ങൾ സേവ് ചെയ്യാൻ സാദ്ധ്യമല്ല.''' താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ ഒരു ടെക്സ്റ്റ് പ്രമാണത്തിലേക്ക് പകർത്തി (കട്ട് & പേസ്റ്റ്) പിന്നീടുള്ള ഉപയോഗത്തിനായി സേവ് ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു. വിവരശേഖരം ബന്ധിച്ച അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
-'protectedpagewarning' => "'''മുന്നറിയിപ്പ്: ഈ താള്‍ സിസോപ്പ് അധികാരമുള്ളവര്‍ക്ക് മാത്രം തിരുത്താന്‍ സാധിക്കാവുന്ന തരത്തില്‍ സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു '''",
-'semiprotectedpagewarning' => "'''ശ്രദ്ധിക്കുക:''' ഈ താള്‍ സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്; {{SITENAME}} സംരംഭത്തില്‍ അംഗത്വമെടുത്തിട്ടുള്ളവര്‍ക്കേ ഈ താള്‍ തിരുത്താന്‍ സാധിക്കൂ.",
+'protectedpagewarning' => "'''മുന്നറിയിപ്പ്: ഈ താൾ കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം തിരുത്താൻ സാധിക്കാവുന്ന തരത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
+'semiprotectedpagewarning' => "'''ശ്രദ്ധിക്കുക:'''അംഗത്വമെടുത്തിട്ടുള്ളവർക്കുമാത്രം തിരുത്താൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
'cascadeprotectedwarning' => "'''മുന്നറിയിപ്പ്:''' ഈ താൾ കാര്യനിർ‌വാഹക അവകാശമുള്ളവർക്കു മാത്രം തിരുത്തുവാൻ സാധിക്കുന്ന വിധത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌. {{PLURAL:$1|താൾ|താളുകൾ}} കാസ്കേഡ് സം‌രക്ഷണം ചെയ്തപ്പോൾ അതിന്റെ ഭാഗമായി സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌ ഈ താൾ.",
-'titleprotectedwarning' => "'''മുന്നറിയിപ്പ്: ഈ താള്‍ സൃഷ്ടിക്കണമെങ്കില്‍ [[Special:ListGroupRights|പ്രത്യേക അവകാശമുള്ള]] ഉപയോക്താക്കള്‍ വേണ്ടിയിരിക്കുന്നു.'''",
-'templatesused' => 'ഈ താളില്‍ ഉപയോഗിച്ചിരിക്കുന്ന ഫലകങ്ങള്‍:',
-'templatesusedpreview' => 'ഈ താളില്‍ ഇപ്പോള്‍ ഉപയോഗിച്ചിരിക്കുന്ന ഫലകങ്ങള്‍:',
-'templatesusedsection' => 'ഈ ഉപവിഭാഗത്തില്‍ ഉപയോഗിച്ചിരിക്കുന്ന ഫലകങ്ങള്‍:',
+'titleprotectedwarning' => "'''മുന്നറിയിപ്പ്: [[Special:ListGroupRights|പ്രത്യേക അവകാശമുള്ള]] ഉപയോക്താക്കൾക്ക് മാത്രം സൃഷ്ടിക്കാൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
+'templatesused' => 'ഈ താളിൽ ഉപയോഗിച്ചിരിക്കുന്ന {{PLURAL:$1|ഫലകം|ഫലകങ്ങൾ}}:',
+'templatesusedpreview' => 'ഈ പ്രിവ്യൂവിൽ ഉപയോഗിച്ചിരിക്കുന്ന {{PLURAL:$1|ഫലകം|ഫലകങ്ങൾ}}:',
+'templatesusedsection' => 'ഈ ഉപവിഭാഗത്തിൽ ഉപയോഗിച്ചിരിക്കുന്ന {{PLURAL:$1|ഫലകം|ഫലകങ്ങൾ}}:',
'template-protected' => '(സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു)',
'template-semiprotected' => '(അർ‌ദ്ധസം‌രക്ഷിതം)',
'hiddencategories' => 'ഈ താൾ {{PLURAL:$1|മറഞ്ഞിരിക്കുന്ന ഒരു വർഗ്ഗത്തിൽ|മറഞ്ഞിരിക്കുന്ന $1 വർഗ്ഗങ്ങളിൽ}} അംഗമാണു്‌:',
@@ -805,16 +940,17 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
'nocreatetext' => '{{SITENAME}} സംരംഭത്തിൽ പുതിയ താളുകൾ സൃഷ്ടിക്കുവാനുള്ള അവകാശം നിയന്ത്രിതമാണ്‌.
താങ്കൾ ദയവായി തിരിച്ചുചെന്ന് നിലവിലുള്ള ഒരു താൾ തിരുത്തുകയോ, അഥവാ [[Special:UserLogin|ലോഗിൻ ചെയ്യുകയോ ഒരു അംഗത്വം സൃഷ്ടിക്കുകയോ]] ചെയ്യാൻ അഭ്യർത്ഥിക്കുന്നു.',
'nocreate-loggedin' => 'പുതിയ താളുകൾ സൃഷ്ടിക്കുവാനുള്ള അനുവാദം താങ്കൾക്കില്ല.',
+'sectioneditnotsupported-title' => 'വിഭാഗങ്ങളായുള്ള തിരുത്തൽ പിന്തുണയ്ക്കുന്നില്ല',
+'sectioneditnotsupported-text' => 'ഈ തിരുത്താനുള്ള താളിൽ വിഭാഗങ്ങളായുള്ള തിരുത്തൽ പിന്തുണയ്ക്കുന്നില്ല.',
'permissionserrors' => 'അനുമതിപ്രശ്നം',
'permissionserrorstext' => 'താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|കാരണം|കാരണങ്ങൾ}} കൊണ്ട് താങ്കൾക്ക് ഈ പ്രവൃത്തി ചെയ്യാനുള്ള അനുമതിയില്ല:',
'permissionserrorstext-withaction' => 'താങ്കൾക്ക് $2 എന്ന പ്രവൃത്തി ചെയ്യാൻ അനുമതി ഇല്ല, {{PLURAL:$1|കാരണം|കാരണങ്ങൾ}} താഴെ കൊടുത്തിരിക്കുന്നു:',
-'recreate-deleted-warn' => "
-'''മുന്നറിയിപ്പ്: മുമ്പ് മായ്ച്ചുകളഞ്ഞ താളാണ്‌ താങ്കള്‍ വീണ്ടും ചേര്‍ക്കാന്‍ ശ്രമിക്കുന്നത്'''
+'recreate-moveddeleted-warn' => "'''മുന്നറിയിപ്പ്: മുമ്പ് മായ്ച്ചുകളഞ്ഞ താളാണ്‌ താങ്കൾ വീണ്ടും ചേർക്കാൻ ശ്രമിക്കുന്നത്'''
-താങ്കള്‍ ചെയ്യുന്നത് ശരിയായ നടപടിയാണോ എന്നു പരിശോധിക്കുക. ഉറപ്പിനായി ഈ താളിന്റെ മായ്ക്കല്‍ രേഖ കൂടെ ചേര്‍ത്തിരിക്കുന്നു.",
-'deleted-notice' => 'ഈ താള്‍ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.
-
-ഈ താളിന്റെ മായ്ക്കല്‍ പട്ടിക മറ്റ് വിവരങ്ങള്‍ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു',
+താങ്കൾ ചെയ്യുന്നത് ശരിയായ നടപടിയാണോ എന്നു പരിശോധിക്കുക. ഉറപ്പിനായി ഈ താളിന്റെ മായ്ക്കൽ രേഖയും മാറ്റൽ രേഖയും കൂടെ ചേർത്തിരിക്കുന്നു.",
+'moveddeleted-notice' => 'ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.
+ഈ താളിന്റെ മായ്ക്കൽ രേഖ പരിശോധനയ്ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു',
+'log-fulllog' => 'എല്ലാ രേഖകളും കാണുക',
'edit-hook-aborted' => 'കൊളുത്ത് ഛേദിച്ച തിരുത്ത്.
ഇത് ഒരു വിശദീകരണവും നൽകിയിട്ടില്ല.',
'edit-gone-missing' => 'ഈ താൾ പുതുക്കുവാൻ സാധിക്കുകയില്ല.
@@ -837,6 +973,7 @@ It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $
'post-expand-template-argument-category' => 'താൾ ഫലകത്തിന്റെ ഘടകങ്ങളിൽ ഒഴിവാക്കിയവ ഉൾക്കൊള്ളുന്നു',
'parser-template-loop-warning' => 'ഫലകക്കുരുക്ക് കണ്ടെത്തിയിരിക്കുന്നു: [[$1]]',
'parser-template-recursion-depth-warning' => 'ഫലകത്തിന്റെ പുനരാവർത്തന ആഴത്തിന്റെ പരിധി കഴിഞ്ഞിരിക്കുന്നു ($1)',
+'language-converter-depth-warning' => 'ഭാഷ മാറ്റൽ ഉപകരണത്തിന്റെ ആഴത്തിന്റെ പരിധി കവിഞ്ഞിരിക്കുന്നു ($1)',
# "Undo" feature
'undo-success' => 'ഈ തിരുത്തൽ താങ്കൾക്ക് തിരസ്ക്കരിക്കാവുന്നതാണ്‌. താഴെ കൊടുത്തിരിക്കുന്ന പതിപ്പുകൾ തമ്മിലുള്ള താരതമ്യം ഒന്നുകൂടി പരിശോധിച്ച് ഈ പ്രവൃത്തി ചെയ്യണോ എന്ന് ഒന്നുകൂടി ഉറപ്പാക്കുക. ഉറപ്പാണെങ്കിൽ തിരുത്തൽ തിരസ്ക്കരിക്കുവാൻ താൾ സേവ് ചെയ്യുക.',
@@ -854,9 +991,9 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
'viewpagelogs' => 'ഈ താളുമായി ബന്ധപ്പെട്ട രേഖകൾ കാണുക',
'nohistory' => 'ഈ താളിന് നാൾവഴി ഇല്ല.',
'currentrev' => 'ഇപ്പോഴുള്ള രൂപം',
-'currentrev-asof' => '$1 -ല്‍ നിലവില്‍ ഉള്ള രൂപം',
+'currentrev-asof' => '$1 -ൽ നിലവിലുള്ള രൂപം',
'revisionasof' => '$1-നു നിലവിലുണ്ടായിരുന്ന രൂപം',
-'revision-info' => '$1-നു ഉണ്ടായിരുന്ന രൂപം സൃഷ്ടിച്ചത്:- $2', # Additionally available: $3: revision id
+'revision-info' => '$1-നു ഉണ്ടായിരുന്ന രൂപം സൃഷ്ടിച്ചത്:- $2',
'previousrevision' => '←പഴയ രൂപം',
'nextrevision' => 'പുതിയ രൂപം→',
'currentrevisionlink' => 'ഇപ്പോഴുള്ള രൂപം',
@@ -869,7 +1006,7 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
സൂചന: (ഇപ്പോൾ) = നിലവിലുള്ള പതിപ്പുമായുള്ള വ്യത്യാസം, (മുമ്പ്) = തൊട്ടുമുൻപത്തെ പതിപ്പുമായുള്ള വ്യത്യാസം, (ചെ.) = ചെറിയ തിരുത്തൽ.",
'history-fieldset-title' => 'നാൾവഴി പരിശോധന',
-'deletedrev' => '[മായ്ച്ചു]',
+'history-show-deleted' => 'മായ്ക്കപ്പെട്ടവ മാത്രം',
'histfirst' => 'പഴയവ',
'histlast' => 'പുതിയവ',
'historysize' => '({{PLURAL:$1|1 ബൈറ്റ്|$1 ബൈറ്റുകൾ}})',
@@ -878,61 +1015,117 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
# Revision feed
'history-feed-title' => 'നാൾവഴി',
'history-feed-description' => 'വിക്കിയിൽ ഈ താളിന്റെ നാൾവഴി',
-'history-feed-item-nocomment' => '$1 ല്‍ $2', # user at time
+'history-feed-item-nocomment' => '$1 ൽ $2',
'history-feed-empty' => 'താങ്കൾ തിരഞ്ഞ താൾ നിലവിലില്ല.
പ്രസ്തുത താൾ വിക്കിയിൽ നിന്നു ഒഴിവാക്കിയിരിക്കാനോ പുനർനാമകരണം ചെയ്തിരിക്കാനോ സാദ്ധ്യത ഉണ്ട്.
ബന്ധപ്പെട്ട പുതിയ താളുകൾ കണ്ടെത്താൻ [[Special:Search|വിക്കിയിലെ തിരച്ചിൽ]] എന്ന താൾ ഉപയോഗിക്കുക.',
# Revision deletion
-'rev-deleted-comment' => '(പ്രസ്താവന ഒഴിവാക്കിയിരിക്കുന്നു)',
-'rev-deleted-user' => '(ഉപയോക്തൃനാമം ഒഴിവാക്കിയിരിക്കുന്നു)',
-'rev-deleted-event' => '(പ്രവർത്തനരേഖയിൽ നടത്തിയ പ്രവർത്തനം ഒഴിവാക്കിയിരിക്കുന്നു)',
-'rev-deleted-text-view' => 'ഈ താളിന്റെ പതിപ്പുകള്‍ പൊതുവായ ദര്‍ശനത്തില്‍ നിന്നു മാറ്റിയിരിക്കുന്നു.
-{{SITENAME}} സം‌രഭത്തിലെ കാര്യനിര്‍‌വാഹകന്‍ എന്ന നിലയില്‍ നിങ്ങള്‍ക്ക് അതു കാണാം. കൂടുതല്‍ വിവരങ്ങള്‍ക്ക് [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കല്‍ ലോഗ്] കാണുക.',
-'rev-delundel' => 'പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
-'revisiondelete' => 'പതിപ്പുകൾ ഒഴിവാക്കുകയോ/പുനഃസ്ഥാപിക്കുകയോ ചെയ്യുക',
-'revdelete-nooldid-title' => 'അസാധുവായ ലക്ഷ്യ നാൾപ്പതിപ്പ്',
-'revdelete-nooldid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനാവശ്യമായ ഉദ്ദിഷ്ട പതിപ്പ്/പതിപ്പുകൾ താങ്കൾ തിരഞ്ഞെടുത്തിട്ടില്ല അല്ലെങ്കിൽ ഉദ്ദിഷ്ട പതിപ്പ് നിലവിലില്ല അതുമല്ലെങ്കിൽ താങ്കൾ നിലവിലുള്ള പതിപ്പ് മറയ്ക്കുവാൻ ശ്രമിക്കുന്നു.',
-'revdelete-nologtype-title' => 'പ്രവർത്തനരേഖയുടെ തരം നൽകിയിട്ടില്ല',
-'revdelete-nologtype-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാൻ പ്രവർത്തനരേഖയുടെ തരം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല.',
-'revdelete-nologid-title' => 'തെറ്റായ തിരുത്തൽ പട്ടിക',
-'revdelete-nologid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനായി രേഖയിൽ ലക്ഷ്യം വെയ്ക്കേണ്ട സംഭവം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ വ്യക്തമാക്കിയത് നിലനിൽക്കുന്നില്ല.',
-'revdelete-selected' => "'''[[:$1]] എന്ന താളിന്റെ {{PLURAL:$2|തിരഞ്ഞെടുത്ത പതിപ്പ്|തിരഞ്ഞെടുത്ത പതിപ്പുകൾ}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളത്|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളവ}}:'''",
-'revdelete-text' => "'''താങ്കള്‍ മായ്ച്ച പതിപ്പുകളും പ്രവര്‍ത്തനരേഖകളും താളിന്റെ നാള്‍‌വഴിയിലും ലോഗുകളിലും തുടര്‍ന്നും ലഭ്യമാകും. പക്ഷെ ആ പതിപ്പുകളുടെ ഉള്ളടക്കം പൊതുജനത്തിനു പ്രാപ്യമല്ല.'''
-
-{{SITENAME}} സം‌രംഭത്തിലെ മറ്റു കാര്യനിര്‍‌വാഹകര്‍ക്ക് ഈ മറഞ്ഞിരിക്കുന്ന ഉള്ളടക്കം പരിശോധിക്കുവാനും താങ്കള്‍ മായ്ച്ചതു തിരസ്ക്കരിക്കുവാനും സാധിക്കും. മറ്റു കൂടുതല്‍ സം‌രക്ഷണ പരിമിതികള്‍ സജ്ജീകരിച്ചിട്ടില്ലെങ്കില്‍ ഇതേ ഇന്റര്‍ഫേസ് ഉപയോഗിച്ചു തന്നെ അത്തരത്തില്‍ പ്രവര്‍ത്തിക്കുന്നതിനു അവര്‍ക്ക് സാധിക്കും.",
-'revdelete-suppress-text' => "താഴെ പറയുന്ന സാഹചര്യങ്ങളിൽ '''മാത്രമേ''' ഒതുക്കൽ ഉപയോഗിക്കാവൂ:
+'rev-deleted-comment' => '(പ്രസ്താവന ഒഴിവാക്കിയിരിക്കുന്നു)',
+'rev-deleted-user' => '(ഉപയോക്തൃനാമം ഒഴിവാക്കിയിരിക്കുന്നു)',
+'rev-deleted-event' => '(പ്രവർത്തനരേഖയിൽ നടത്തിയ പ്രവർത്തനം ഒഴിവാക്കിയിരിക്കുന്നു)',
+'rev-deleted-user-contribs' => '[ഉപയോക്തൃനാമം അഥവാ ഐ.പി. വിലാസം ഒഴിവാക്കപ്പെട്ടിരിക്കുന്നു - തിരുത്തൽ സേവനങ്ങളിൽ നിന്നും മറച്ചിരിക്കുന്നു]',
+'rev-deleted-text-permission' => "താളിന്റെ ഈ നാൾപ്പതിപ്പ് '''മായ്ച്ചിരിക്കുന്നു'''.
+കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] കാണാവുന്നതാണ്.",
+'rev-deleted-text-unhide' => "താളിന്റെ ഈ നാൾപ്പതിപ്പ് '''മായ്ച്ചിരിക്കുന്നു'''.
+കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] ഉണ്ടായിരിക്കും.
+കാര്യനിർവ്വാഹകനെന്ന നിലയിൽ താങ്കൾക്ക് ഇപ്പോഴും വേണമെങ്കിൽ [$1 ഈ നാൾപ്പതിപ്പ് കാണാവുന്നതാണ്].",
+'rev-suppressed-text-unhide' => "താളിന്റെ ഈ സംശോധനം '''ഒതുക്കപ്പെട്ടിരിക്കുന്നു'''.
+കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ഒതുക്കൽ രേഖയിൽ] ഉണ്ടാകും.
+കാര്യനിർവാകനായതിനാൽ താങ്കൾക്ക് ആവശ്യമെങ്കിൽ [$1 ഈ സംശോധനം കാണാൻ] കഴിയുന്നതാണ്.",
+'rev-deleted-text-view' => "ഈ താളിന്റെ പതിപ്പുകൾ '''മായ്ച്ചിരിക്കുന്നു'''.
+
+കാര്യനിർ‌വാഹകൻ എന്ന നിലയിൽ താങ്കാൾക്ക് അവ കാണാവുന്നതാണ്; കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] കാണാം.",
+'rev-suppressed-text-view' => "താളിന്റെ ഈ സംശോധനം '''ഒതുക്കിയിരിക്കുന്നു'''.
+കാര്യനിർവാഹകനെന്നിരിക്കെ താങ്കൾക്കത് കാണാവുന്നതാണ്; കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ഒതുക്കൽ രേഖയിൽ] ഉണ്ട്.",
+'rev-deleted-no-diff' => "നാൾപ്പതിപ്പുകളിലൊന്ന് '''മായ്ച്ചിരിക്കുന്നതിനാൽ''' ഈ വ്യത്യാസം താങ്കൾക്ക് കാണാൻ കഴിയില്ല.
+കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] ഉണ്ടായിരിക്കും.",
+'rev-suppressed-no-diff' => "ഒരു നാൾപ്പതിപ്പ് '''മായ്ക്കപ്പെട്ടിരിക്കുന്നു''' എന്ന കാരണത്താൽ ഈ വ്യത്യാസം കാണാൻ താങ്കൾക്ക് കഴിയില്ല.",
+'rev-deleted-unhide-diff' => "ഈ വ്യത്യാസങ്ങളിലെ ഒരു നാൾപ്പതിപ്പ് '''മായ്ക്കപ്പെട്ടിരിക്കുന്നു'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] വിശദവിവരങ്ങൾ ഉണ്ടായിരിക്കും.
+കാര്യനിർവാഹകനായതിനാൽ താങ്കൾക്ക് [$1 ഈ വ്യത്യാസം] വേണമെങ്കിൽ കാണാവുന്നതാണ്.",
+'rev-suppressed-unhide-diff' => "ഈ വ്യത്യാസത്തിലെ ഒരു നാൾപ്പതിപ്പ് '''ഒതുക്കിയിരിക്കുന്നു'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ഒതുക്കൽ രേഖയിൽ] കൂടുതൽ വിവരങ്ങൾ ഉണ്ടാകാം.
+ഒരു കാര്യനിർവാഹകനായതിനാൽ താങ്കൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ [$1 ഈ വ്യത്യാസം കാണാവുന്നതാണ്].",
+'rev-deleted-diff-view' => "ഈ വ്യത്യാസത്തിലെ ഒരു മാറ്റം '''മായ്ക്കപ്പെട്ടിരിക്കുന്നു'''.
+കാര്യനിർവാഹകനായതിനാൽ താങ്കൾക്ക് ഈ മാറ്റം കാണാവുന്നതാണ്; കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} മായ്ക്കൽ രേഖയിൽ] ഉണ്ടാവും.",
+'rev-suppressed-diff-view' => "ഈ വ്യത്യാസത്തിലെ ഒരു നാൾപ്പതിപ്പ് '''ഒതുക്കിയിരിക്കുന്നു'''.
+ഒരു കാര്യനിർവാഹകനായതിനാല താങ്കൾ ഈ മാറ്റം കാണാൻ കഴിയുന്നതാണ്; കൂടുതൽ വിവരങ്ങൾ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ഒതുക്കൽ രേഖയിൽ] ഉണ്ടായിരിക്കും.",
+'rev-delundel' => 'പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
+'rev-showdeleted' => 'പ്രദർശിപ്പിക്കുക',
+'revisiondelete' => 'പതിപ്പുകൾ ഒഴിവാക്കുകയോ/പുനഃസ്ഥാപിക്കുകയോ ചെയ്യുക',
+'revdelete-nooldid-title' => 'അസാധുവായ ലക്ഷ്യ നാൾപ്പതിപ്പ്',
+'revdelete-nooldid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനാവശ്യമായ ഉദ്ദിഷ്ട പതിപ്പ്/പതിപ്പുകൾ താങ്കൾ തിരഞ്ഞെടുത്തിട്ടില്ല അല്ലെങ്കിൽ ഉദ്ദിഷ്ട പതിപ്പ് നിലവിലില്ല അതുമല്ലെങ്കിൽ താങ്കൾ നിലവിലുള്ള പതിപ്പ് മറയ്ക്കുവാൻ ശ്രമിക്കുന്നു.',
+'revdelete-nologtype-title' => 'പ്രവർത്തനരേഖയുടെ തരം നൽകിയിട്ടില്ല',
+'revdelete-nologtype-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാൻ പ്രവർത്തനരേഖയുടെ തരം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല.',
+'revdelete-nologid-title' => 'തെറ്റായ തിരുത്തൽ പട്ടിക',
+'revdelete-nologid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനായി രേഖയിൽ ലക്ഷ്യം വെയ്ക്കേണ്ട സംഭവം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ വ്യക്തമാക്കിയത് നിലനിൽക്കുന്നില്ല.',
+'revdelete-no-file' => 'നിർദ്ദേശിച്ച പ്രമാണം നിലവിലില്ല.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" പ്രമാണത്തിന്റെ $2 തീയതി $3 -യ്ക്കു നിലനിന്നിരുന്ന മായ്ക്കപ്പെട്ട പതിപ്പു കാണണം എന്നു താങ്കൾക്ക് ഉറപ്പാണോ?',
+'revdelete-show-file-submit' => 'അതെ',
+'revdelete-selected' => "'''[[:$1]] എന്ന താളിന്റെ {{PLURAL:$2|തിരഞ്ഞെടുത്ത പതിപ്പ്|തിരഞ്ഞെടുത്ത പതിപ്പുകൾ}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളത്|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളവ}}:'''",
+'revdelete-text' => "'''മായ്ക്കപ്പെട്ട നാൾരൂപങ്ങളും സംഭവങ്ങളും താളിന്റെ നാൾവഴിയിലും രേഖകളിലും ഉണ്ടായിരിക്കും, പക്ഷേ ആ ഉള്ളടക്കം പൊതുജനത്തിനു ലഭ്യമല്ല.'''
+താങ്കൾ മായ്ച്ച പതിപ്പുകളും പ്രവർത്തനരേഖകളും താളിന്റെ നാൾവഴിയിലും ലോഗുകളിലും തുടർന്നും ലഭ്യമാകും. പക്ഷെ ആ പതിപ്പുകളുടെ ഉള്ളടക്കം പൊതുജനത്തിനു പ്രാപ്യമല്ല.
+{{SITENAME}} സം‌രംഭത്തിലെ മറ്റു കാര്യനിർ‌വാഹകർക്ക് ഈ മറഞ്ഞിരിക്കുന്ന ഉള്ളടക്കം പരിശോധിക്കുവാനും താങ്കൾ മായ്ച്ചതു തിരസ്ക്കരിക്കുവാനും സാധിക്കും. മറ്റു കൂടുതൽ സം‌രക്ഷണ പരിമിതികൾ സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ ഇതേ സമ്പർക്കമുഖം ഉപയോഗിച്ചു തന്നെ അത്തരത്തിൽ പ്രവർത്തിക്കുന്നതിനു അവർക്ക് സാധിക്കും.",
+'revdelete-confirm' => 'ഇതിന്റെ അനന്തരഫലങ്ങളെക്കുറിച്ചറിയാമെന്നും, [[{{MediaWiki:Policy-url}}|നയങ്ങൾ]] പാലിച്ചാണ് താങ്കളിത് ചെയ്യുന്നതെന്നും താങ്കൾ ദയവായി സ്ഥിരീകരിക്കുക.',
+'revdelete-suppress-text' => "താഴെ പറയുന്ന സാഹചര്യങ്ങളിൽ '''മാത്രമേ''' ഒതുക്കൽ ഉപയോഗിക്കാവൂ:
* അപകീർത്തികരമായ വിവരങ്ങൾ അടങ്ങിയവ
* അനുയോജ്യമല്ലാത്ത വ്യക്തി വിവരങ്ങൾ
*: ''വീട്ടുവിലാസങ്ങൾ, ടെലിഫോൺ നമ്പറുകൾ, സാമൂഹിക സുരക്ഷാ നമ്പരുകൾ, തുടങ്ങിയവ.''",
-'revdelete-legend' => 'ദർശനത്തിനു നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുക',
-'revdelete-hide-text' => 'മാറ്റം വന്ന എഴുത്ത് മറയ്ക്കുക',
-'revdelete-hide-name' => 'പ്രവൃത്തിയും ലക്ഷ്യവും മറയ്ക്കുക',
-'revdelete-hide-comment' => 'തിരുത്തലിന്റെ അഭിപ്രായം മറയ്ക്കുക',
-'revdelete-hide-user' => 'തിരുത്തുന്ന ആളുടെ ഉപയോക്തൃനാമം/ഐ.പി. വിലാസം മറയ്ക്കുക',
-'revdelete-hide-restricted' => 'വിവരങ്ങളുടെ നിയന്ത്രണം മറ്റുള്ളവരെ പോലെ കാര്യനിർവാഹകർക്കും ബാധകമാക്കുക',
-'revdelete-suppress' => 'സിസോപ്പുകളിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഈ ഡാറ്റാ മറച്ചു വെക്കുക',
-'revdelete-hide-image' => 'പ്രമാണത്തിന്റെ ഉള്ളടക്കം മറയ്ക്കുക',
-'revdelete-unsuppress' => 'പുനഃസ്ഥാപിച്ച പതിപ്പുകളിലുള്ള നിയന്ത്രണങ്ങൾ ഒഴിവാക്കുക',
-'revdelete-log' => 'കാരണം:',
-'revdelete-submit' => 'തിരഞ്ഞെടുത്ത പതിപ്പിനു ബാധകമാക്കുക',
-'revdelete-logentry' => '[[$1]]-ന്റെ പതിപ്പുകൾ പ്രദർശിപ്പിക്കുന്ന വിധം തിരുത്തിയിരിക്കുന്നു',
-'logdelete-logentry' => '[[$1]] സാഹചര്യത്തിന്റെ പ്രദർശനപരത മാറ്റിയിരിക്കുന്നു',
-'revdelete-success' => "'''നാൾപ്പതിപ്പുകളുടെ ദർശനീയത വിജയകരമായി പുതുക്കിയിരിക്കുന്നു.'''",
-'logdelete-success' => "'''രേഖയുടെ ദൃശ്യത വിജയകരമായി നിശ്ചിതപ്പെടുത്തി.'''",
-'revdel-restore' => 'കാണുന്ന രൂപത്തിൽ മാറ്റം വരുത്തുക',
-'pagehist' => 'താളിന്റെ നാൾവഴി',
-'deletedhist' => 'ഒഴിവാക്കപ്പെട്ട നാൾവഴി',
-'revdelete-content' => 'ഉള്ളടക്കം',
-'revdelete-summary' => 'തിരുത്തലിന്റെ ചുരുക്കം',
-'revdelete-uname' => 'ഉപയോക്തൃനാമം',
-'revdelete-restricted' => 'കാര്യനിർവാഹകർക്ക് പ്രവർത്തന അതിരുകൾ ഏർപ്പെടുത്തിയിരിക്കുന്നു',
-'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
-'revdelete-hid' => '$1 അപ്രത്യക്ഷമാക്കി',
-'revdelete-unhid' => '$1 പ്രത്യക്ഷമാക്കി',
-'revdelete-log-message' => '{{PLURAL:$2|ഒരു നാൾപ്പതിപ്പിന്റെ|$2 നാൾപ്പതിപ്പുകളുടെ}} $1',
-'logdelete-log-message' => '{{PLURAL:$2|സാഹചര്യങ്ങളിൽ|$2 സാഹചര്യങ്ങളിൽ}} $1',
+'revdelete-legend' => 'ദർശനത്തിനു നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുക',
+'revdelete-hide-text' => 'മാറ്റം വന്ന എഴുത്ത് മറയ്ക്കുക',
+'revdelete-hide-image' => 'പ്രമാണത്തിന്റെ ഉള്ളടക്കം മറയ്ക്കുക',
+'revdelete-hide-name' => 'പ്രവൃത്തിയും ലക്ഷ്യവും മറയ്ക്കുക',
+'revdelete-hide-comment' => 'തിരുത്തലിന്റെ അഭിപ്രായം മറയ്ക്കുക',
+'revdelete-hide-user' => 'തിരുത്തുന്ന ആളുടെ ഉപയോക്തൃനാമം/ഐ.പി. വിലാസം മറയ്ക്കുക',
+'revdelete-hide-restricted' => 'വിവരങ്ങളുടെ നിയന്ത്രണം മറ്റുള്ളവരെ പോലെ കാര്യനിർവാഹകർക്കും ബാധകമാക്കുക',
+'revdelete-radio-same' => '(മാറ്റം വരുത്തരുത്)',
+'revdelete-radio-set' => 'അതെ',
+'revdelete-radio-unset' => 'അല്ല',
+'revdelete-suppress' => 'സിസോപ്പുകളിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഈ ഡാറ്റാ മറച്ചു വെക്കുക',
+'revdelete-unsuppress' => 'പുനഃസ്ഥാപിച്ച പതിപ്പുകളിലുള്ള നിയന്ത്രണങ്ങൾ ഒഴിവാക്കുക',
+'revdelete-log' => 'കാരണം:',
+'revdelete-submit' => 'തിരഞ്ഞെടുത്ത {{PLURAL:$1|നാൾപ്പതിപ്പിനു|നാൾപ്പതിപ്പുകൾക്ക്}} ബാധകമാക്കുക',
+'revdelete-logentry' => '[[$1]]-ന്റെ പതിപ്പുകൾ പ്രദർശിപ്പിക്കുന്ന വിധം തിരുത്തിയിരിക്കുന്നു',
+'logdelete-logentry' => '[[$1]] സാഹചര്യത്തിന്റെ പ്രദർശനപരത മാറ്റിയിരിക്കുന്നു',
+'revdelete-success' => "'''നാൾപ്പതിപ്പുകളുടെ ദർശനീയത വിജയകരമായി പുതുക്കിയിരിക്കുന്നു.'''",
+'revdelete-failure' => "'''നാൾപ്പതിപ്പിന്റെ ദർശനീയത പുതുക്കാൻ കഴിഞ്ഞില്ല:'''
+$1",
+'logdelete-success' => "'''രേഖയുടെ ദൃശ്യത വിജയകരമായി നിശ്ചിതപ്പെടുത്തി.'''",
+'logdelete-failure' => "'''രേഖയുടെ ദൃശ്യത നിശ്ചിതപ്പെടുത്താൻ കഴിഞ്ഞില്ല:'''
+$1",
+'revdel-restore' => 'കാണുന്ന രൂപത്തിൽ മാറ്റം വരുത്തുക',
+'pagehist' => 'താളിന്റെ നാൾവഴി',
+'deletedhist' => 'ഒഴിവാക്കപ്പെട്ട നാൾവഴി',
+'revdelete-content' => 'ഉള്ളടക്കം',
+'revdelete-summary' => 'തിരുത്തലിന്റെ ചുരുക്കം',
+'revdelete-uname' => 'ഉപയോക്തൃനാമം',
+'revdelete-restricted' => 'കാര്യനിർവാഹകർക്ക് പ്രവർത്തന അതിരുകൾ ഏർപ്പെടുത്തിയിരിക്കുന്നു',
+'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
+'revdelete-hid' => '$1 അപ്രത്യക്ഷമാക്കി',
+'revdelete-unhid' => '$1 പ്രത്യക്ഷമാക്കി',
+'revdelete-log-message' => '{{PLURAL:$2|ഒരു നാൾപ്പതിപ്പിന്റെ|$2 നാൾപ്പതിപ്പുകളുടെ}} $1',
+'logdelete-log-message' => '{{PLURAL:$2|സാഹചര്യങ്ങളിൽ|$2 സാഹചര്യങ്ങളിൽ}} $1',
+'revdelete-hide-current' => '$2, $1 തീയതിയിലെ ഇനം മറയ്ക്കുമ്പോൾ പിഴവ് സംഭവിച്ചു: ഇത് ഇപ്പോഴുള്ള നാൾപ്പതിപ്പാണ്.
+ഇത് മറയ്ക്കാൻ കഴിയില്ല.',
+'revdelete-show-no-access' => '$2, $1 തീയതി കുറിച്ച ഇനം പ്രദർശിപ്പിക്കുന്നതിൽ പിഴവ്: ഇത് "പരിമിതപ്പെടുത്തിയതെന്ന്" അടയാളപ്പെടുത്തിയിരിക്കുന്നു.
+താങ്കൾക്ക് അതിനുള്ള അനുമതിയില്ല.',
+'revdelete-modify-no-access' => '$2, $1 എന്നു സമയമുദ്രയുള്ള ഇനം പുതുക്കുന്നതിൽ പിഴവ്: ഈ ഇനം "ഉപയോഗം പരിമിതപ്പെടുത്തിയത്" എന്നടയാളപ്പെടുത്തിയതാണ്.
+താങ്കൾക്കതിനുള്ള അനുമതി ഇല്ല.',
+'revdelete-modify-missing' => 'ഇനം ഐ.ഡി. $1 ഉള്ളതിൽ മാറ്റം വരുത്തുമ്പോൾ പിഴവ് സംഭവിച്ചു: ഇത് ഡേറ്റാബേസിൽ ലഭ്യമല്ല!',
+'revdelete-no-change' => "'''മുന്നറിയിപ്പ്:''' $2 $1 തീയതിയിലുള്ള ഇനം മുമ്പുതന്നെ ദൃശ്യതാ ക്രമീകരണങ്ങൾ ആവശ്യപ്പെട്ടിട്ടുണ്ട്.",
+'revdelete-concurrent-change' => '$1 $2 ദിനസമയമുദ്രയുള്ള ഇനം പുതുക്കുമ്പോൾ പിഴവു സംഭവിച്ചിരിക്കുന്നു: താങ്കൾ പുതുക്കാൻ ശ്രമിക്കുമ്പോൾ മറ്റാരോ അതിന്റെ സ്ഥിതി മാറ്റിയതായി കാണുന്നു.
+ദയവായി രേഖകൾ പരിശോധിക്കുക.',
+'revdelete-only-restricted' => '$2, $1 തീയതിയിലെ ഇനം മറയ്ക്കുന്നതിൽ പിഴവ്: ഒതുക്കലിനുള്ള മറ്റ് ഐച്ഛികങ്ങളിലൊന്ന് തിരഞ്ഞെടുക്കാതെ ഇനങ്ങൾ കാര്യനിർവാഹകരുടെ ദൃഷ്ടിയിൽ നിന്നും ഒതുക്കാൻ താങ്കൾക്ക് കഴിയില്ല.',
+'revdelete-reason-dropdown' => '*മായ്ക്കാനുള്ള സാധാരണ കാരണങ്ങൾ
+**പകർപ്പവകാശ ലംഘനം
+**അനുയോജ്യമല്ലാത്ത വ്യക്തി വിവരങ്ങൾ
+**അടിസ്ഥാനപരമായി ദോഷകരമാകുന്ന വിവരങ്ങൾ',
+'revdelete-otherreason' => 'മറ്റ്/കൂടുതൽ കാരണം:',
+'revdelete-reasonotherlist' => 'മറ്റ് കാരണം',
+'revdelete-edit-reasonlist' => 'മായ്ക്കലിന്റെ കാരണം തിരുത്തുക',
+'revdelete-offender' => 'നാൾപ്പതിപ്പിന്റെ രചയിതാവ്:',
# Suppression log
'suppressionlog' => 'ഒതുക്കൽ രേഖ',
@@ -969,55 +1162,13 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
'mergelogpagetext' => 'രണ്ടു താളുകളുടെ നാൾ‌വഴികൾ തമ്മിൽ സം‌യോജിപ്പിച്ചതിന്റെ പ്രവർത്തനരേഖകളുടെ ഏറ്റവും പുതിയ പട്ടിക താഴെ കാണാം.',
# Diffs
-'history-title' => '"$1" എന്ന താളിന്റെ നാൾവഴി',
-'difference' => '(തിരഞ്ഞെടുത്ത പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം)',
-'lineno' => 'വരി $1:',
-'compareselectedversions' => 'തിരഞ്ഞെടുത്ത പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം കാണുക',
-'visualcomparison' => 'ദൃഷ്ടിഗോചര തുലനം',
-'wikicodecomparison' => 'വിക്കിവാചക തുലനം',
-'editundo' => 'മാറ്റം തിരസ്ക്കരിക്കുക',
-'diff-multi' => '(ഇടക്കുള്ള {{PLURAL:$1|ഒരു പതിപ്പിലെ മാറ്റം|$1 പതിപ്പുകളിലെ മാറ്റങ്ങൾ}} ഇവിടെ കാണിക്കുന്നില്ല.)',
-'diff-movedto' => '$1 ലേക്ക് നീക്കപെട്ടിരിക്കുന്നു',
-'diff-styleadded' => '$1 എന്ന ശൈലി ചേർത്തിരിക്കുന്നു',
-'diff-added' => '$1 ചേർത്തു',
-'diff-changedto' => '$1 ലേക്ക് മാറ്റിയിരിക്കുന്നു',
-'diff-movedoutof' => '$1-ൽ നിന്നും നീക്കിയിരിക്കുന്നു',
-'diff-styleremoved' => '$1 എന്ന ശൈലി നീക്കിയിരിക്കുന്നു',
-'diff-removed' => '$1 നീക്കം ചെയ്തിരിക്കുന്നു',
-'diff-changedfrom' => '$1 ൽ നിന്നും മാറ്റിയിരിക്കുന്നു',
-'diff-src' => 'ഉറവിടം',
-'diff-withdestination' => '$1 എന്ന ലക്ഷ്യത്തോടെ',
-'diff-with' => '&#32;ന്റെ കൂടെ $1 $2',
-'diff-with-final' => '&#32;ഉം $1 $2',
-'diff-width' => 'വീതി',
-'diff-height' => 'നീളം',
-'diff-p' => "ഒരു '''ഖണ്ഡിക'''",
-'diff-blockquote' => "ഒരു '''ഉദ്ധരണി'''",
-'diff-h1' => "ഒരു '''തലക്കെട്ട് (നില 1)'''",
-'diff-h2' => "ഒരു '''തലക്കെട്ട് (നില 2)'''",
-'diff-h3' => "ഒരു '''തലക്കെട്ട് (നില 3)'''",
-'diff-h4' => "ഒരു '''തലക്കെട്ട് (നില 4)'''",
-'diff-h5' => "ഒരു '''തലക്കെട്ട് (നില 5)'''",
-'diff-ul' => "'''എണ്ണമിടാത്ത ലിസ്റ്റ്'''",
-'diff-ol' => "'''എണ്ണമിട്ട ലിസ്റ്റ്'''",
-'diff-table' => "ഒരു '''പട്ടിക'''",
-'diff-tbody' => "'''പട്ടികയുടെ ഉള്ളടക്കം'''",
-'diff-tr' => "ഒരു '''വരി'''",
-'diff-td' => "ഒരു '''നിര'''",
-'diff-th' => "ഒരു '''തലക്കെട്ട്'''",
-'diff-hr' => "'''കുറുകെയുള്ള വര'''",
-'diff-dt' => "'''നിർവ്വചന പദം'''",
-'diff-dd' => "ഒരു '''നിർവചനം'''",
-'diff-img' => "ഒരു '''ചിത്രം'''",
-'diff-a' => "ഒരു '''കണ്ണി'''",
-'diff-i' => "'''ചെരിച്ച്'''",
-'diff-b' => "'''കടുപ്പത്തിൽ'''",
-'diff-strong' => "'''ദൃഢം'''",
-'diff-font' => "'''ഫോണ്ട്'''",
-'diff-big' => "'''വലുത്'''",
-'diff-del' => "'''മായ്ച്ചത്'''",
-'diff-tt' => "'''ഉറച്ച വീതി'''",
-'diff-strike' => "'''വെട്ടുക'''",
+'history-title' => '"$1" എന്ന താളിന്റെ നാൾവഴി',
+'difference' => '(തിരഞ്ഞെടുത്ത പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം)',
+'lineno' => 'വരി $1:',
+'compareselectedversions' => 'തിരഞ്ഞെടുത്ത പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം കാണുക',
+'showhideselectedversions' => 'തിരഞ്ഞെടുത്ത മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
+'editundo' => 'മാറ്റം തിരസ്ക്കരിക്കുക',
+'diff-multi' => '(ഇടക്കുള്ള {{PLURAL:$1|ഒരു പതിപ്പിലെ മാറ്റം|$1 പതിപ്പുകളിലെ മാറ്റങ്ങൾ}} ഇവിടെ കാണിക്കുന്നില്ല.)',
# Search results
'searchresults' => 'തിരച്ചിലിന്റെ ഫലം',
@@ -1025,26 +1176,25 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
'searchresulttext' => '{{SITENAME}} സംരംഭത്തിൽ വിവരങ്ങൾ എങ്ങനെ അന്വേഷിച്ചു കണ്ടെത്താമെന്നറിയാൻ, [[{{MediaWiki:Helppage}}|{{int:help}}]] എന്ന താൾ കാണുക.',
'searchsubtitle' => 'താങ്കൾ അന്വേഷിച്ച വാക്ക് \'\'\'[[:$1]]\'\'\' ആണ്‌. ([[Special:Prefixindex/$1|"$1" എന്ന വാക്കിൽ തുടങ്ങുന്ന എല്ലാ താളുകളും]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"എന്ന വാക്കിലേക്ക് കണ്ണി ചേർത്തിരിക്കുന്ന എല്ലാ താളുകളും]])',
'searchsubtitleinvalid' => "താങ്കൾ തിരഞ്ഞത് '''$1'''",
-'noexactmatch' => "'''ഈ വിക്കിയിൽ \"\$1\" എന്ന തലക്കെട്ടിൽ എന്ന താൾ നിലവിലില്ല.'''
-താങ്കൾക്ക് [[:\$1|പ്രസ്തുത ശീർഷകത്തോടു കൂടിയ ഒരു താൾ]] തുടങ്ങാവുന്നതാണ്.",
-'noexactmatch-nocreate' => "'''\"\$1\" എന്ന താൾ നിലവിലില്ല.'''",
'toomanymatches' => 'യോജിച്ച ഫലങ്ങൾ വളരെയധികം കിട്ടിയിരിക്കുന്നു; ദയവായി വേറൊരു അന്വേഷണ വാക്ക് ഉപയോഗിച്ച് തിരയുക.',
'titlematches' => 'താളിന്റെ തലക്കെട്ടുമായി യോജിക്കുന്ന ഫലങ്ങൾ',
'notitlematches' => 'ഒരു താളിന്റെയും തലക്കെട്ടുമായി യോജിക്കുന്നില്ല',
'textmatches' => 'താങ്കൾ തിരഞ്ഞ വാക്കുകൾ ഉള്ള താളുകൾ',
'notextmatches' => 'താളുകളുടെ ഉള്ളടക്കത്തിൽ താങ്കൾ തിരഞ്ഞ വാക്കുമായി യോജിക്കുന്ന ഫലങ്ങൾ ഒന്നും തന്നെയില്ല',
-'prevn' => 'മുമ്പത്തെ $1',
-'nextn' => 'അടുത്ത $1',
+'prevn' => 'മുമ്പത്തെ {{PLURAL:$1|$1}}',
+'nextn' => 'അടുത്ത {{PLURAL:$1|$1}}',
'prevn-title' => 'മുൻപത്തെ {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}}',
'nextn-title' => 'അടുത്ത {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}}',
'shown-title' => '{{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}} വീതം താളിൽ കാണിക്കുക',
-'viewprevnext' => '($1) ($2) ($3) മാറ്റങ്ങള്‍ കാണുക',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2 {{int:pipe-separator}} $3 മാറ്റങ്ങൾ കാണുക)',
'searchmenu-legend' => 'തിരച്ചിൽ ഉപാധികൾ',
'searchmenu-exists' => "'''\"[[:\$1]]\" എന്ന പേരിൽ ഒരു താൾ ഈ വിക്കിയിൽ നിലവിലുണ്ട്'''",
'searchmenu-new' => "'''ഈ വിക്കിയിൽ \"[[:\$1]]\" താൾ നിർമ്മിക്കുക!'''",
'searchhelp-url' => 'Help:ഉള്ളടക്കം',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ഈ പൂർ‌വ്വപദങ്ങളുള്ള താളുകൾ ബ്രൗസ് ചെയ്യുക]]',
-'searchprofile-images' => 'പ്രമാണങ്ങള്‍',
+'searchprofile-articles' => 'ലേഖനങ്ങളിൽ',
+'searchprofile-project' => 'സഹായം, പദ്ധതി താളുകളിൽ',
+'searchprofile-images' => 'പ്രമാണങ്ങളിൽ',
'searchprofile-everything' => 'എല്ലാം',
'searchprofile-advanced' => 'വിപുലമായ വിധം',
'searchprofile-articles-tooltip' => '$1 മേഖലയിൽ തിരയുക',
@@ -1064,11 +1214,12 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
'search-mwsuggest-disabled' => 'നിർദ്ദേശങ്ങൾ വേണ്ട',
'search-relatedarticle' => 'ബന്ധപ്പെട്ടവ',
'mwsuggest-disable' => 'അജാക്സ് നിർദ്ദേശങ്ങൾ വേണ്ട',
+'searcheverything-enable' => 'എല്ലാ നാമമേഖലകളും തിരയുക',
'searchrelated' => 'ബന്ധപ്പെട്ടവ',
'searchall' => 'എല്ലാം',
'showingresults' => "ഇതിനു താഴെ #'''$2'''-ൽ തുടങ്ങുന്ന {{PLURAL:$1|'''ഒരു''' ഫലം|'''$1''' ഫലങ്ങൾ}} പ്രദർശിപ്പിക്കുന്നു.",
'showingresultsnum' => "താഴെ #'''$2''' കൊണ്ടു തുടങ്ങുന്ന {{PLURAL:$3|'''ഒരു''' ഫലം|'''$3''' ഫലങ്ങൾ}} കാണിച്ചിരിക്കുന്നു.",
-'showingresultstotal' => "{{PLURAL:$4|'''$1''' മുതൽ '''$3''' വരെയുള്ള ഫലം|'''$3''' ഫലങ്ങളിൽ '''$1''' മുതൽ '''$2''' വരെയുള്ളവ}} താഴെ കൊടുത്തിരിക്കുന്നു",
+'showingresultsheader' => "'''$4''' എന്ന പദത്തിനു ലഭിച്ച {{PLURAL:$5|ആകെ '''$3''' എണ്ണത്തിൽ '''$1''' ഫലം |ആകെ '''$3''' എണ്ണത്തിൽ '''$1 - $2''' ഫലങ്ങൾ}}",
'nonefound' => "'''ശ്രദ്ധിക്കുക''': ചില നാമമേഖലകൾ മാത്രമേ സ്വതേ തിരയാറുള്ളൂ. എല്ലാ വിവരങ്ങളിലും തിരയാൻ '''തിരയേണ്ട നാമമേഖലകൾ''' ''എല്ലാം'' എന്നതോ ആവശ്യമായ നാമമേഖലമാത്രം തിരയുവാൻ (സംവാദം, ഫലകം, തുടങ്ങിയവ) അതു മാത്രമായോ ടിക്ക് ചെയ്യേണ്ടതാണ്.",
'search-nonefound' => 'താങ്കളുടെ തിരച്ചിലിനനുയോജ്യമായ ഫലങ്ങൾ ഒന്നും ലഭ്യമല്ല.',
'powersearch' => 'തിരയൂ',
@@ -1076,112 +1227,151 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
'powersearch-ns' => 'തിരയേണ്ട നാമമേഖലകൾ',
'powersearch-redir' => 'തിരിച്ചുവിടലുകൾ കാണിക്കുക',
'powersearch-field' => 'ഇതിനു വേണ്ടി തിരയുക',
+'powersearch-togglelabel' => 'അടയാളപ്പെടുത്തുക:',
+'powersearch-toggleall' => 'എല്ലാം',
+'powersearch-togglenone' => 'ഒന്നുംവേണ്ട',
'search-external' => 'ബാഹ്യ അന്വേഷണം',
'searchdisabled' => '{{SITENAME}} സം‌രംഭത്തിൽ തിരച്ചിൽ ദുർബലപ്പെടുത്തിയിരിക്കുന്നു. താങ്കൾക്ക് ഗൂഗിൾ ഉപയോഗിച്ച് തത്കാലം തിരച്ചിൽ നടത്താവുന്നതാണ്‌. പക്ഷെ ഗൂഗിളിൽ {{SITENAME}} സം‌രംഭത്തിന്റെ സൂചിക കാലഹരണപ്പെട്ടതായിരിക്കാൻ സാദ്ധ്യതയുണ്ട്.',
+# Quickbar
+'qbsettings' => 'ദ്രുത സൗകര്യം',
+'qbsettings-none' => 'ഒന്നുമില്ല',
+'qbsettings-fixedleft' => 'സ്ഥിരമായ ഇടത്',
+'qbsettings-fixedright' => 'സ്ഥിരമായ വലത്',
+'qbsettings-floatingleft' => 'ഇടത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
+'qbsettings-floatingright' => 'വലത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
+
# Preferences page
-'preferences' => 'ക്രമീകരണങ്ങൾ',
-'mypreferences' => 'എന്റെ ക്രമീകരണങ്ങൾ',
-'prefs-edits' => 'ആകെ തിരുത്തലുകൾ:',
-'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
-'prefsnologintext' => 'ഉപയോക്തൃക്രമീകരണങ്ങള്‍ മാറ്റാന്‍ താങ്കള്‍ <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ലോഗിന്‍ ചെയ്തിരിക്കണം]</span>.',
-'qbsettings' => 'ദ്രുത സൗകര്യം',
-'qbsettings-none' => 'ഒന്നുമില്ല',
-'qbsettings-fixedleft' => 'സ്ഥിരമായ ഇടത്',
-'qbsettings-fixedright' => 'സ്ഥിരമായ വലത്',
-'qbsettings-floatingleft' => 'ഇടത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
-'qbsettings-floatingright' => 'വലത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
-'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
-'skin' => 'രൂപം',
-'skin-preview' => 'പ്രിവ്യൂ',
-'math' => 'സമവാക്യം',
-'dateformat' => 'തീയതി പ്രദർശിപ്പിക്കുന്ന രീതി',
-'datedefault' => 'ക്രമീകരണങ്ങൾ വേണ്ട',
-'datetime' => 'ദിവസവും സമയവും',
-'math_failure' => 'parse ചെയ്യുവാൻ പരാജയപ്പെട്ടു',
-'math_unknown_error' => 'കാരണമറിയാത്ത പിഴവ്',
-'math_unknown_function' => 'അജ്ഞാതമായ ഫങ്ങ്ഷൻ',
-'math_lexing_error' => 'ലെക്സിങ് പിഴവ്',
-'math_syntax_error' => 'തെറ്റായ പദവിന്യാസം',
-'math_image_error' => 'PNG രൂപത്തിലേയ്ക്കുള്ള മാറ്റം പരാജയപ്പെട്ടു;
-latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻസ്റ്റോൾ ചെയ്തിരിക്കുന്നതെന്നു പരിശോധിക്കുക',
-'math_bad_tmpdir' => 'math temp ഡയറക്ടറി ഉണ്ടാക്കാനോ അതിലേക്കു എഴുതാനോ സാധിച്ചില്ല',
-'math_bad_output' => 'math output ഡയറക്ടറി ഉണ്ടാക്കാനോ അതിലേക്കു എഴുതാനോ സാധിച്ചില്ല',
-'math_notexvc' => 'പ്രവർത്തനസജ്ജമായ texvc ലഭ്യമല്ല;
-സജ്ജീകരിച്ചെടുക്കാനുള്ള സഹായത്തിനു ദയവായി math/README കാണുക.',
-'prefs-personal' => 'അഹം',
-'prefs-rc' => 'പുതിയ മാറ്റങ്ങൾ',
-'prefs-watchlist' => 'ശ്രദ്ധിക്കുന്നവ',
-'prefs-watchlist-days' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി ദിവസങ്ങൾ:',
-'prefs-watchlist-days-max' => '(പരമാവധി 7 ദിവസം)',
-'prefs-watchlist-edits' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ വികസിത രൂപത്തിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി മാറ്റങ്ങൾ:',
-'prefs-watchlist-edits-max' => 'പരമാവധി എണ്ണം: 1000',
-'prefs-misc' => 'പലവക',
-'prefs-resetpass' => 'രഹസ്യവാക്ക് മാറ്റുക',
-'saveprefs' => 'സേവ് ചെയ്യുക',
-'resetprefs' => 'സേവ് ചെയ്തിട്ടില്ലാത്ത മാറ്റങ്ങൾ പുനഃക്രമീകരിക്കുക',
-'restoreprefs' => 'സ്വതേയുള്ള ക്രമീകരണങ്ങൾ പുനഃസ്ഥാപിക്കുക',
-'textboxsize' => 'തിരുത്തല്‍',
-'prefs-edit-boxsize' => 'തിരുത്തൽ ജാലകത്തിന്റെ വലിപ്പം',
-'rows' => 'വരി:',
-'columns' => 'നിര:',
-'searchresultshead' => 'തിരയൂ',
-'resultsperpage' => 'ഒരു താളിലുള്ള ശരാശരി സന്ദർശനം:',
-'contextlines' => 'ഓരോ സന്ദർശനത്തിലും ചേർക്കപ്പെട്ട വരികൾ:',
-'contextchars' => 'ഓരോ വരിയുടേയും പ്രസക്തി:',
-'stub-threshold' => '<a href="#" class="stub">അപൂർണ്ണമായ കണ്ണിയെന്നു</a> സ്ഥാപിക്കാനുള്ള ത്വരകം (ബൈറ്റുകൾ):',
-'recentchangesdays' => 'പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:',
-'recentchangesdays-max' => '(പരമാവധി $1 {{PLURAL:$1|ദിവസം|ദിവസങ്ങൾ}})',
-'recentchangescount' => 'പുതിയ മാറ്റങ്ങളുടെ താളില്‍ പ്രദര്‍ശിപ്പിക്കേണ്ട തിരുത്തലുകളുടെ എണ്ണം:',
-'savedprefs' => 'താങ്കളുടെ ക്രമീകരണങ്ങൾ കാത്തുസൂക്ഷിച്ചിരിക്കുന്നു.',
-'timezonelegend' => 'സമയ മേഖല:',
-'timezonetext' => '¹സെർവർ സമയവും (UTC) താങ്കളുടെ പ്രാദേശിക സമയവും തമ്മിലുള്ള വ്യത്യാസം.',
-'localtime' => 'പ്രാദേശിക സമയം:',
-'timezoneselect' => 'സമയ മേഖല',
-'timezoneuseserverdefault' => 'സെർ‌വറിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക',
-'timezoneuseoffset' => 'മറ്റുള്ളത് (എന്താണെന്നു നൽകുക)',
-'timezoneoffset' => 'വ്യത്യാസം¹:',
-'servertime' => 'സെർവർ സമയം:',
-'guesstimezone' => 'സമയവ്യത്യാസം ബ്രൗസറിൽ നിന്നും ശേഖരിക്കൂ',
-'timezoneregion-africa' => 'ആഫ്രിക്ക',
-'timezoneregion-america' => 'അമേരിക്ക',
-'timezoneregion-antarctica' => 'അന്റാർട്ടിക്ക',
-'timezoneregion-arctic' => 'ആർട്ടിക്',
-'timezoneregion-asia' => 'ഏഷ്യ',
-'timezoneregion-atlantic' => 'അറ്റ്ലാന്റിക് സമുദ്രം',
-'timezoneregion-australia' => 'ഓസ്ട്രേലിയ',
-'timezoneregion-europe' => 'യൂറോപ്പ്',
-'timezoneregion-indian' => 'ഇന്ത്യൻ മഹാസമുദ്രം',
-'timezoneregion-pacific' => 'ശാന്തസമുദ്രം',
-'allowemail' => 'എനിക്ക് എഴുത്തയക്കാൻ മറ്റുള്ളവരെ അനുവദിക്കുക',
-'prefs-searchoptions' => 'തിരച്ചിൽ ക്രമീകരണങ്ങൾ',
-'prefs-namespaces' => 'നാമമേഖലകൾ',
-'defaultns' => 'സ്വതവേ ഈ നാമമേഖലകളില്‍ തിരയുക:',
-'default' => 'സ്വതവെ',
-'files' => 'ഫയലുകള്‍',
-'prefs-custom-css' => 'സ്വന്തം സി.എസ്.എസ്.',
-'prefs-custom-js' => 'സ്വന്തം ജെ.എസ്.',
+'preferences' => 'ക്രമീകരണങ്ങൾ',
+'mypreferences' => 'എന്റെ ക്രമീകരണങ്ങൾ',
+'prefs-edits' => 'ആകെ തിരുത്തലുകൾ:',
+'prefsnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
+'prefsnologintext' => 'ഉപയോക്തൃക്രമീകരണങ്ങൾ മാറ്റാൻ താങ്കൾ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ലോഗിൻ]</span> ചെയ്തിരിക്കണം.',
+'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
+'prefs-skin' => 'രൂപം',
+'skin-preview' => 'പ്രിവ്യൂ',
+'prefs-math' => 'സമവാക്യം',
+'datedefault' => 'ക്രമീകരണങ്ങൾ വേണ്ട',
+'prefs-datetime' => 'ദിവസവും സമയവും',
+'prefs-personal' => 'അഹം',
+'prefs-rc' => 'പുതിയ മാറ്റങ്ങൾ',
+'prefs-watchlist' => 'ശ്രദ്ധിക്കുന്നവ',
+'prefs-watchlist-days' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി ദിവസങ്ങൾ:',
+'prefs-watchlist-days-max' => '(പരമാവധി 7 ദിവസം)',
+'prefs-watchlist-edits' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ വികസിത രൂപത്തിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി മാറ്റങ്ങൾ:',
+'prefs-watchlist-edits-max' => '(പരമാവധി 1000 തിരുത്തലുകൾ)',
+'prefs-watchlist-token' => 'ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയ്ക്കുള്ള അടയാളപദം:',
+'prefs-misc' => 'പലവക',
+'prefs-resetpass' => 'രഹസ്യവാക്ക് മാറ്റുക',
+'prefs-email' => 'ഇമെയിൽ ക്രമീകരണങ്ങൾ',
+'prefs-rendering' => 'ദൃശ്യരൂപം',
+'saveprefs' => 'സേവ് ചെയ്യുക',
+'resetprefs' => 'സേവ് ചെയ്തിട്ടില്ലാത്ത മാറ്റങ്ങൾ പുനഃക്രമീകരിക്കുക',
+'restoreprefs' => 'സ്വതേയുള്ള ക്രമീകരണങ്ങൾ പുനഃസ്ഥാപിക്കുക',
+'prefs-editing' => 'തിരുത്തൽ',
+'prefs-edit-boxsize' => 'തിരുത്തൽ ജാലകത്തിന്റെ വലിപ്പം',
+'rows' => 'വരി:',
+'columns' => 'നിര:',
+'searchresultshead' => 'തിരയൂ',
+'resultsperpage' => 'ഒരു താളിലുള്ള ശരാശരി സന്ദർശനം:',
+'contextlines' => 'ഓരോ സന്ദർശനത്തിലും ചേർക്കപ്പെട്ട വരികൾ:',
+'contextchars' => 'ഓരോ വരിയുടേയും പ്രസക്തി:',
+'stub-threshold' => '<a href="#" class="stub">അപൂർണ്ണമായ കണ്ണിയെന്നു</a> സ്ഥാപിക്കാനുള്ള ത്വരകം (ബൈറ്റുകൾ):',
+'recentchangesdays' => 'പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:',
+'recentchangesdays-max' => 'പരമാവധി {{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസങ്ങൾ}}',
+'recentchangescount' => 'സ്വതേ പ്രദർശിപ്പിക്കേണ്ട തിരുത്തലുകളുടെ എണ്ണം:',
+'prefs-help-recentchangescount' => 'ഇത് പുതിയമാറ്റങ്ങൾ, താളിന്റെ നാൾ‌വഴികൾ, രേഖകൾ എന്നിവയെ ഉൾക്കൊള്ളുന്നു.',
+'prefs-help-watchlist-token' => 'ഈ പെട്ടിയിൽ ഒരു രഹസ്യവാക്ക് ഉപയോഗിച്ചാൽ താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയ്ക്കുള്ള ആർ.എസ്.എസ്. ഫീഡ് ഉണ്ടാക്കുന്നതാണ്.
+ഈ രഹസ്യവാക്ക് അറിയാവുന്ന ആർക്കും താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വായിക്കാവുന്നതാണ്. അതുകൊണ്ട് സുരക്ഷിതമായ ഒന്നു തിരഞ്ഞെടുക്കുക.
+ഇവിടെ താങ്കൾക്കുപയോഗിക്കാവുന്ന ക്രമരഹിതമായി സൃഷ്ടിച്ച ഒരെണ്ണം കൊടുത്തിരിക്കുന്നു: $1',
+'savedprefs' => 'താങ്കളുടെ ക്രമീകരണങ്ങൾ കാത്തുസൂക്ഷിച്ചിരിക്കുന്നു.',
+'timezonelegend' => 'സമയ മേഖല:',
+'localtime' => 'പ്രാദേശിക സമയം:',
+'timezoneuseserverdefault' => 'സെർ‌വറിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക',
+'timezoneuseoffset' => 'മറ്റുള്ളത് (എന്താണെന്നു നൽകുക)',
+'timezoneoffset' => 'വ്യത്യാസം¹:',
+'servertime' => 'സെർവർ സമയം:',
+'guesstimezone' => 'സമയവ്യത്യാസം ബ്രൗസറിൽ നിന്നും ശേഖരിക്കൂ',
+'timezoneregion-africa' => 'ആഫ്രിക്ക',
+'timezoneregion-america' => 'അമേരിക്ക',
+'timezoneregion-antarctica' => 'അന്റാർട്ടിക്ക',
+'timezoneregion-arctic' => 'ആർട്ടിക്',
+'timezoneregion-asia' => 'ഏഷ്യ',
+'timezoneregion-atlantic' => 'അറ്റ്ലാന്റിക് സമുദ്രം',
+'timezoneregion-australia' => 'ഓസ്ട്രേലിയ',
+'timezoneregion-europe' => 'യൂറോപ്പ്',
+'timezoneregion-indian' => 'ഇന്ത്യൻ മഹാസമുദ്രം',
+'timezoneregion-pacific' => 'ശാന്തസമുദ്രം',
+'allowemail' => 'എനിക്ക് എഴുത്തയക്കാൻ മറ്റുള്ളവരെ അനുവദിക്കുക',
+'prefs-searchoptions' => 'തിരച്ചിൽ ക്രമീകരണങ്ങൾ',
+'prefs-namespaces' => 'നാമമേഖലകൾ',
+'defaultns' => 'അല്ലെങ്കിൽ ഈ നാമമേഖലകളിൽ തിരയുക:',
+'default' => 'സ്വതവെ',
+'prefs-files' => 'പ്രമാണങ്ങൾ',
+'prefs-custom-css' => 'സ്വന്തം സി.എസ്.എസ്.',
+'prefs-custom-js' => 'സ്വന്തം ജെ.എസ്.',
+'prefs-reset-intro' => 'സൈറ്റിൽ സ്വതേയുണ്ടാവേണ്ട ക്രമീകരണങ്ങൾ പുനഃക്രമീകരിക്കാൻ താങ്കൾക്ക് ഈ താൾ ഉപയോഗിക്കാവുന്നതാണ്.
+ഇത് തിരിച്ചു ചെയ്യാൻ സാദ്ധ്യമല്ല.',
+'prefs-emailconfirm-label' => 'ഇമെയിൽ സ്ഥിരീകരണം:',
+'prefs-textboxsize' => 'തിരുത്താനുള്ള ജാലകത്തിന്റെ വലിപ്പം',
+'youremail' => 'ഇമെയിൽ:',
+'username' => 'ഉപയോക്തൃനാമം:',
+'uid' => 'ഉപയോക്തൃഐ.ഡി:',
+'prefs-memberingroups' => 'അംഗത്വമുള്ള {{PLURAL:$1|സംഘം|സംഘങ്ങൾ}}:',
+'prefs-registration' => 'അംഗത്വം എടുത്തത്:',
+'yourrealname' => 'യഥാർത്ഥ പേര്‌:',
+'yourlanguage' => 'ഭാഷ:',
+'yourvariant' => 'വ്യത്യാസമാനം',
+'yournick' => 'ഒപ്പ്:',
+'prefs-help-signature' => 'സംവാദം താളിലെ കുറിപ്പുകളിൽ "<nowiki>~~~~</nowiki>" ഉപയോഗിച്ച് ഒപ്പിടേണ്ടതാണ്, അത് താങ്കളുടെ സമയമുദ്രയോടുകൂടിയ ഒപ്പായി സ്വയം മാറിക്കൊള്ളും.',
+'badsig' => 'അനുവദനീയമല്ലാത്ത രൂപത്തിലുള്ള ഒപ്പ്. HTML ടാഗുകൾ പരിശോധിക്കുക.',
+'badsiglength' => 'താങ്കളുടെ ഒപ്പിനു നീളം കൂടുതലാണ്‌.
+അതിലെ {{PLURAL:$1|അക്ഷരത്തിന്റെ|അക്ഷരങ്ങങ്ങളുടെ}} എണ്ണം $1 ൽ താഴെയായിരിക്കണം.',
+'yourgender' => 'ആൺ/പെൺ:',
+'gender-unknown' => 'വ്യക്തമാക്കിയിട്ടില്ല',
+'gender-male' => 'പുരുഷൻ',
+'gender-female' => 'സ്ത്രീ',
+'prefs-help-gender' => 'നിർബന്ധമില്ല: സോഫ്റ്റ്‌വെയർ ഉപയോഗിച്ച് സ്ത്രീകളേയും പുരുഷന്മാരേയും ശരിയായി സംബോധന ചെയ്യാൻ ഉപയോഗിക്കുന്നു.
+ഈ വിവരം പരസ്യമായി ലഭ്യമായിരിക്കുന്നതാണ്‌.',
+'email' => 'ഇമെയിൽ',
+'prefs-help-realname' => 'താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല. എങ്കിലും അങ്ങനെ ചെയ്താൽ താങ്കളുടെ സംഭാവനകൾ ആ പേരിൽ അംഗീകരിക്കപ്പെടും.',
+'prefs-help-email' => 'ഇമെയിൽ വിലാസം നൽകണമെന്ന് നിർബന്ധമില്ല, പക്ഷേ താങ്കൾ രഹസ്യവാക്ക് മറന്നാൽ പുതിയത് അയച്ചു തരാൻ ഇതുകൊണ്ട് സാധിക്കുന്നതാണ്‌.
+താങ്കൾക്കായുള്ള താളിൽ നിന്നോ, താങ്കൾക്കുള്ള സന്ദേശങ്ങളുടെ താളിൽ നിന്നോ മറ്റുപയോക്താക്കൾക്ക് താങ്കളുടെ വ്യക്തിത്വം മനസ്സിലാക്കാതെ തന്നെ താങ്കൾക്ക് സന്ദേശങ്ങളയയ്ക്കാനും ഈ സം‌വിധാനം അവസരം നൽകുന്നു.',
+'prefs-help-email-required' => 'ഇമെയിൽ വിലാസം ആവശ്യമാണ്‌.',
+'prefs-info' => 'അടിസ്ഥാന വിവരങ്ങൾ',
+'prefs-i18n' => 'ആഗോളീകരണം',
+'prefs-signature' => 'ഒപ്പ്',
+'prefs-dateformat' => 'ദിന ലേഖന രീതി',
+'prefs-timeoffset' => 'സമയ വ്യത്യാസം',
+'prefs-advancedediting' => 'വിപുലമായ ഉപാധികൾ',
+'prefs-advancedrc' => 'വിപുലമായ ഉപാധികൾ',
+'prefs-advancedrendering' => 'വിപുലമായ ഉപാധികൾ',
+'prefs-advancedsearchoptions' => 'വിപുലമായ ഉപാധികൾ',
+'prefs-advancedwatchlist' => 'വിപുലമായ ഉപാധികൾ',
+'prefs-display' => 'പ്രദർശന ഐച്ഛികങ്ങൾ',
+'prefs-diffs' => 'വ്യത്യാസങ്ങൾ',
# User rights
-'userrights' => 'ഉപയോക്തൃ അവകാശ പരിപാലനം', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'ഉപയോക്തൃസംഘങ്ങളെ പരിപാലിക്കുക',
-'userrights-user-editname' => 'ഒരു ഉപയോക്തൃനാമം ടൈപ്പു ചെയ്യുക:',
-'editusergroup' => 'ഉപയോക്തൃസംഘങ്ങൾ തിരുത്തുക',
-'editinguser' => "'''[[User:$1|$1]]''' എന്ന ഉപയോക്താവിന്റെ ഉപയോക്തൃ അവകാശങ്ങൾ തിരുത്തുന്നു ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'ഉപയോക്തൃസമൂഹത്തിലെ അംഗത്വം തിരുത്തുക',
-'saveusergroups' => 'ഉപയോക്തൃസംഘങ്ങൾ സേവ് ചെയ്യുക',
-'userrights-groupsmember' => 'അംഗത്വമുള്ളത്:',
-'userrights-groups-help' => 'ഈ ഉപയോക്താവ് ഉൾപ്പെട്ടിട്ടുള്ള സംഘങ്ങൾ താങ്കൾക്ക് മാറ്റാവുന്നതാണ്:
+'userrights' => 'ഉപയോക്തൃ അവകാശ പരിപാലനം',
+'userrights-lookup-user' => 'ഉപയോക്തൃസംഘങ്ങളെ പരിപാലിക്കുക',
+'userrights-user-editname' => 'ഒരു ഉപയോക്തൃനാമം ടൈപ്പു ചെയ്യുക:',
+'editusergroup' => 'ഉപയോക്തൃസംഘങ്ങൾ തിരുത്തുക',
+'editinguser' => "'''[[User:$1|$1]]''' എന്ന ഉപയോക്താവിന്റെ ഉപയോക്തൃ അവകാശങ്ങൾ തിരുത്തുന്നു ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'ഉപയോക്തൃസമൂഹത്തിലെ അംഗത്വം തിരുത്തുക',
+'saveusergroups' => 'ഉപയോക്തൃസംഘങ്ങൾ സേവ് ചെയ്യുക',
+'userrights-groupsmember' => 'അംഗത്വമുള്ളത്:',
+'userrights-groupsmember-auto' => 'അന്തർലീനമായ അംഗത്വം:',
+'userrights-groups-help' => 'ഈ ഉപയോക്താവ് ഉൾപ്പെട്ടിട്ടുള്ള സംഘങ്ങൾ താങ്കൾക്ക് മാറ്റാവുന്നതാണ്:
*ഉപയോക്താവ് ആ സംഘത്തിലുണ്ടെന്ന് ശരിയിട്ട ചതുരം അർത്ഥമാക്കുന്നു.
*ഉപയോക്താവ് ആ സംഘത്തിലില്ലെന്ന് ശരിയിടാത്ത ചതുരം അർത്ഥമാക്കുന്നു.
*ഒരു * ഒരിക്കൽ സംഘം കൂട്ടിച്ചേർത്താൻ പിന്നീട് അത് നീക്കാൻ താങ്കൾക്ക് കഴിയില്ലന്നോ, അല്ലെങ്കിൽ തിരിച്ചോ അർത്ഥമാക്കുന്നു.',
-'userrights-reason' => 'കാരണം:',
-'userrights-no-interwiki' => 'മറ്റ് വിക്കികളിലെ ഉപയോക്തൃ അവകാശങ്ങൾ തിരുത്തുവാൻ താങ്കൾക്ക് അനുമതിയില്ല.',
-'userrights-nodatabase' => '$1 എന്ന ഡാറ്റാബേസ് നിലവിലില്ല അല്ലെങ്കിൽ പ്രാദേശികമല്ല.',
-'userrights-nologin' => 'ഉപയോക്താക്കൾക്ക് അവകാശങ്ങൾ കൊടുക്കണമെങ്കിൽ താങ്കൾ കാര്യനിർ‌വാഹക അംഗത്വം ഉപയോഗിച്ച് [[Special:UserLogin|പ്രവേശിച്ചിരിക്കണം]].',
-'userrights-notallowed' => 'ഉപയോക്താക്കൾക്ക് അവകാശങ്ങൾ കൊടുക്കാനുള്ള അനുമതി താങ്കളുടെ അംഗത്വത്തിനില്ല.',
-'userrights-changeable-col' => 'താങ്കൾക്ക് മാറ്റാവുന്ന സംഘങ്ങൾ',
-'userrights-unchangeable-col' => 'താങ്കൾക്ക് മാറ്റാനാവാത്ത സംഘങ്ങൾ',
+'userrights-reason' => 'കാരണം:',
+'userrights-no-interwiki' => 'മറ്റ് വിക്കികളിലെ ഉപയോക്തൃ അവകാശങ്ങൾ തിരുത്തുവാൻ താങ്കൾക്ക് അനുമതിയില്ല.',
+'userrights-nodatabase' => '$1 എന്ന ഡാറ്റാബേസ് നിലവിലില്ല അല്ലെങ്കിൽ പ്രാദേശികമല്ല.',
+'userrights-nologin' => 'ഉപയോക്താക്കൾക്ക് അവകാശങ്ങൾ കൊടുക്കണമെങ്കിൽ താങ്കൾ കാര്യനിർ‌വാഹക അംഗത്വം ഉപയോഗിച്ച് [[Special:UserLogin|പ്രവേശിച്ചിരിക്കണം]].',
+'userrights-notallowed' => 'ഉപയോക്താക്കൾക്ക് അവകാശങ്ങൾ കൊടുക്കാനുള്ള അനുമതി താങ്കളുടെ അംഗത്വത്തിനില്ല.',
+'userrights-changeable-col' => 'താങ്കൾക്ക് മാറ്റാവുന്ന സംഘങ്ങൾ',
+'userrights-unchangeable-col' => 'താങ്കൾക്ക് മാറ്റാനാവാത്ത സംഘങ്ങൾ',
# Groups
'group' => 'സംഘം:',
@@ -1235,6 +1425,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'right-bigdelete' => 'വലിയ നാൾവഴിയുള്ള താളുകൾ മായ്ക്കുക',
'right-deleterevision' => 'താളിന്റെ പ്രത്യേക പതിപ്പുകൾ മായ്ക്കുക പുനഃസ്ഥാപിക്കുക',
'right-deletedhistory' => 'മായ്ക്കപ്പെട്ട വിവരങ്ങൾ ബന്ധപ്പെട്ട എഴുത്തുകൾ ഇല്ലാതെ കാണുക',
+'right-deletedtext' => 'മായ്ക്കപ്പെട്ട എഴുത്തും താളിന്റെ മായ്ക്കപ്പെട്ട പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസവും കാണുക',
'right-browsearchive' => 'നീക്കം ചെയ്യപ്പെട്ട താളുകളിൽ തിരയുക',
'right-undelete' => 'താൾ പുനഃസ്ഥാപിക്കുക',
'right-suppressrevision' => 'കാര്യനിർവാഹകരിൽ നിന്നും മറയ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ സംശോധനം ചെയ്യുക, പുനഃസ്ഥാപിക്കുക',
@@ -1248,6 +1439,8 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'right-editprotected' => 'സംരക്ഷിത താളുകൾ തിരുത്തുക (നിർഝരിത സംരക്ഷണം അല്ലാത്തത്)',
'right-editinterface' => 'ഉപയോക്തൃ സമ്പർക്കമുഖത്തിൽ മാറ്റം വരുത്തുക',
'right-editusercssjs' => 'മറ്റ് ഉപയോക്താക്കളുടെ CSS, JS പ്രമാണങ്ങൾ തിരുത്തുക',
+'right-editusercss' => 'മറ്റ് ഉപയോക്താക്കളുടെ CSS പ്രമാണങ്ങൾ തിരുത്തുക',
+'right-edituserjs' => 'മറ്റ് ഉപയോക്താക്കളുടെ JS പ്രമാണങ്ങൾ തിരുത്തുക',
'right-rollback' => 'ഒരു പ്രത്യേക താളിൽ അവസാനം തിരുത്തൽ നടത്തിയ ഉപയോക്താവിന്റെ തിരുത്തൽ പെട്ടെന്ന് ഒഴിവാക്കുക',
'right-markbotedits' => 'മുൻപ്രാപനം നടത്തിയ തിരുത്തലുകൾ യാന്ത്രിക തിരുത്തലുകളായി അടയാളപ്പെടുത്തുക',
'right-noratelimit' => 'നിലവാരമിടലിന്റെ പരിധികൾ ബാധകമല്ല',
@@ -1264,6 +1457,8 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'right-siteadmin' => 'ഡേറ്റാബേസ് തുറക്കുക, പൂട്ടുക',
'right-reset-passwords' => 'മറ്റ് ഉപയോക്താക്കളുടെ രഹസ്യവാക്കുകൾ റീസെറ്റ് ചെയ്യുക',
'right-override-export-depth' => 'കണ്ണിവത്കരിക്കപ്പെട്ട താളുകളുടെ ആഴം 5 വരെയുള്ള താളുകൾ കയറ്റുമതി ചെയ്യുക',
+'right-versiondetail' => 'സോഫ്റ്റ്‌‌വെയർ പതിപ്പ് വിവരങ്ങൾ വിശദമായി കാട്ടുക',
+'right-sendemail' => 'മറ്റുപയോക്താക്കൾക്ക് ഇമെയിൽ അയയ്ക്കുക',
# User rights log
'rightslog' => 'ഉപയോക്തൃ അവകാശ രേഖ',
@@ -1313,8 +1508,17 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'recentchanges-legend' => 'സമീപകാല മാറ്റങ്ങളുടെ ക്രമീകരണം',
'recentchangestext' => '{{SITENAME}} സംരംഭത്തിലെ ഏറ്റവും പുതിയ മാറ്റങ്ങൾ ഇവിടെ കാണാം.',
'recentchanges-feed-description' => 'ഈ ഫീഡ് ഉപയോഗിച്ച് വിക്കിയിലെ പുതിയ മാറ്റങ്ങൾ നിരീക്ഷിക്കുക.',
+'recentchanges-label-legend' => 'സൂചന: $1.',
+'recentchanges-legend-newpage' => '$1 - പുതിയ താൾ',
+'recentchanges-label-newpage' => 'ഈ തിരുത്തൽ മൂലം ഒരു പുതിയ താൾ സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു',
+'recentchanges-legend-minor' => '$1 - ചെറിയ തിരുത്ത്',
+'recentchanges-label-minor' => 'ഇതൊരു ചെറിയ തിരുത്തലാണ്',
+'recentchanges-legend-bot' => '$1 - യന്ത്രം ഉപയോഗിച്ചുള്ള തിരുത്ത്',
+'recentchanges-label-bot' => 'ഒരു യന്ത്രം നടത്തിയ തിരുത്താണിത്',
+'recentchanges-legend-unpatrolled' => '$1 - റോന്തുചുറ്റപ്പെടാത്ത തിരുത്ത്',
+'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തു ചുറ്റപ്പെടാത്ത ഒരു തിരുത്താണിത്',
'rcnote' => "കഴിഞ്ഞ {{PLURAL:$2|ദിവസം|'''$2''' ദിവസങ്ങൾക്കുള്ളിൽ}} സംഭവിച്ച, {{PLURAL:$1|'''1''' തിരുത്തൽ|'''$1''' തിരുത്തലുകൾ}} താഴെക്കാണാം. ശേഖരിച്ച സമയം: $4, $5.",
-'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങള്‍ (<b>$1</b> എണ്ണം വരെ കാണാം).',
+'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
'rcshowhideminor' => 'ചെറുതിരുത്തലുകൾ $1',
'rcshowhidebots' => 'യന്ത്രങ്ങളെ $1',
@@ -1339,6 +1543,8 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
# Recent changes linked
'recentchangeslinked' => 'അനുബന്ധ മാറ്റങ്ങൾ',
+'recentchangeslinked-feed' => 'അനുബന്ധ മാറ്റങ്ങൾ',
+'recentchangeslinked-toolbox' => 'അനുബന്ധ മാറ്റങ്ങൾ',
'recentchangeslinked-title' => '$1 എന്ന താളുമായി ബന്ധപ്പെട്ട മാറ്റങ്ങൾ',
'recentchangeslinked-noresult' => 'ഈ താളിലേയ്ക്ക് കണ്ണികളുള്ള മറ്റ് താളുകൾക്ക് ഇവിടെ സൂചിപ്പിക്കപ്പെട്ട സമയത്ത് മാറ്റങ്ങളൊന്നും സം‌ഭവിച്ചിട്ടില്ല.',
'recentchangeslinked-summary' => "ഒരു പ്രത്യേക താളിൽ നിന്നു കണ്ണി ചേർക്കപ്പെട്ടിട്ടുള്ള താളുകളിൽ അവസാനമായി വരുത്തിയ മാറ്റങ്ങളുടെ പട്ടിക താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. ഈ പട്ടികയിൽ പെടുന്ന [[Special:Watchlist|താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകൾ]] '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു.",
@@ -1348,8 +1554,8 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
# Upload
'upload' => 'അപ്‌ലോഡ്‌',
'uploadbtn' => 'പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക',
-'reupload' => 'ഒരിക്കൽകൂടി അപ്‌ലോഡ് ചെയ്യുക',
'reuploaddesc' => 'വീണ്ടും അപ്‌ലോഡ് ചെയ്ത് നോക്കാനായി തിരിച്ചു പോവുക.',
+'upload-tryagain' => 'പുതുക്കിയ പ്രമാണ വിവരണങ്ങൾ സമർപ്പിക്കുക',
'uploadnologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
'uploadnologintext' => 'പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യാൻ താങ്കൾ [[Special:UserLogin|ലോഗിൻ]] ചെയ്തിരിക്കണം',
'upload_directory_missing' => 'അപ്‌‌ലോഡ് ഡയറക്ടറി ($1) ലഭ്യമല്ല, അത് സൃഷ്ടിക്കാൻ വെബ്‌‌സെർവറിനു സാധിക്കില്ല.',
@@ -1382,6 +1588,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'minlength1' => 'പ്രമാണത്തിന്റെ പേരിൽ ഒരക്ഷരമെങ്കിലും ഉണ്ടാവണം.',
'illegalfilename' => 'പ്രമാണത്തിന്റെ "$1" എന്ന പേരിൽ, താളിന്റെ തലക്കെട്ടിൽ അനുവദനീയമല്ലാത്ത ചിഹ്നങ്ങൾ ഉണ്ട്. ദയവായി പ്രമാണം പുനർനാമകരണം നടത്തി വീണ്ടും അപ്‌ലോഡ് ചെയ്യുവാൻ ശ്രമിക്കുക.',
'badfilename' => 'പ്രമാണത്തിന്റെ പേര് "$1" എന്നാക്കി മാറ്റിയിരിക്കുന്നു.',
+'filetype-mime-mismatch' => 'മൈം തരവുമായി പ്രമാണത്തിന്റെ എക്സ്റ്റെൻഷൻ ഒത്തുപോകുന്നില്ല.',
'filetype-badmime' => '"$1" എന്ന MIME ഇനത്തിലുള്ള പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നത് അനുവദനീയമല്ല.',
'filetype-bad-ie-mime' => 'ഈ പ്രമാണത്തെ ഇന്റർനെറ്റ് എക്സ്‌‌പ്ലോറർ "$1" ആയി തിരിച്ചറിഞ്ഞിരിക്കുന്നു, ഇത് അപകടകരമായ തരം പ്രമാണമായതിനാൽ അനുവദനീയമല്ല.',
'filetype-unwanted-type' => "'''\".\$1\"''' ഉപയോഗയോഗ്യമല്ലാത്ത ഒരു പ്രമാണ തരം ആണ്‌. {{PLURAL:\$3|പ്രമാണ തരം|പ്രമാണ തരങ്ങൾ}} \$2 ആണ് അഭിലഷണീയം.",
@@ -1402,7 +1609,6 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
* ഇപ്പോൾ അപ്‌ലോഡ് ചെയ്ത പ്രമാണത്തിന്റെ പേര്‌: '''<tt>[[:$1]]</tt>'''
* നിലവിലുള്ള പ്രമാണത്തിന്റെ പേര്‌: '''<tt>[[:$2]]</tt>'''
വേറെ ഒരു പേരു തിരഞ്ഞെടുക്കുക.",
-'fileexists-thumb' => "<center>'''നിലവിലുള്ള പ്രമാണം'''</center>",
'fileexists-thumbnail-yes' => "ഈ ചിത്രം വലിപ്പം കുറച്ച ഒന്നാണെന്നു ''(ലഘുചിത്രം)'' കാണുന്നു.
[[$1|ലഘുചിത്രം]]
ദയവായി '''<tt>[[:$1]]</tt>''' എന്ന ചിത്രം പരിശോധിക്കുക.
@@ -1418,6 +1624,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
ആ പ്രമാണത്തിന്റെ മായ്ക്കൽ ചരിത്രം എടുത്തു പരിശോധിച്ച ശേഷം വീണ്ടും അപ്‌‌ലോഡ് ചെയ്യുക.',
'successfulupload' => 'അപ്‌ലോഡ് വിജയിച്ചിരിക്കുന്നു',
'uploadwarning' => 'അപ്‌ലോഡ് മുന്നറിയിപ്പ്',
+'uploadwarning-text' => 'ദയവായി താഴെയുള്ള പ്രമാണ വിവരണങ്ങൾ പുതുക്കി വീണ്ടും ശ്രമിക്കുക.',
'savefile' => 'പ്രമാണം കാത്ത് സൂക്ഷിക്കുക',
'uploadedimage' => '"[[$1]]" അപ്‌ലോഡ് ചെയ്തു.',
'overwroteimage' => '"[[$1]]" എന്നതിന്റെ പുതിയ പതിപ്പ് അപ്‌ലോഡ് ചെയ്തിരിക്കുന്നു',
@@ -1426,11 +1633,14 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'php-uploaddisabledtext' => 'പി.എച്ച്.പി.യിൽ പ്രമാണ അപ്‌‌ലോഡുകൾ സാദ്ധ്യമല്ലാതാക്കിയിരിക്കുന്നു.
ദയവായി file_uploads ക്രമീകരണങ്ങൾ പരിശോധിക്കുക.',
'uploadscripted' => 'ഈ പ്രമാണത്തിൽ വെബ്ബ് ബ്രൗസർ തെറ്റായി വ്യാഖ്യാനിച്ചേക്കാവുന്ന HTML അല്ലെങ്കിൽ സ്ക്രിപ് കോഡുകൾ ഉണ്ട്.',
-'uploadcorrupt' => 'ഉപയോഗയോഗ്യമല്ലാത്തതോ തെറ്റായ എക്സ്റ്റൻഷൻ ഉപയോഗിക്കുന്നതോ ആയ ഒരു പ്രമാണമാണിത്‌. ദയവായി ഒന്നു കൂടി പരിശോധിച്ചതിനു ശേഷം മാത്രം പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക.',
'uploadvirus' => 'പ്രമാണത്തിൽ വൈറസുണ്ട്! വിശദാംശങ്ങൾ: $1',
+'upload-source' => 'സ്രോതസ്സ് പ്രമാണം',
'sourcefilename' => 'അപ്‌ലോഡ് ചെയ്യേണ്ട പ്രമാണത്തിന്റെ സ്രോതസ്സ് നാമം:',
+'sourceurl' => 'സ്രോതസ്സ് യു.ആർ.എൽ:',
'destfilename' => '{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കേണ്ട പേര്:',
'upload-maxfilesize' => 'പ്രമാണത്തിന്റെ വലിപ്പത്തിന്റെ കൂടിയ പരിധി: $1',
+'upload-description' => 'പ്രമാണ വിവരണം',
+'upload-options' => 'അപ്‌‌ലോഡ് ഐച്ഛികങ്ങൾ',
'watchthisupload' => 'ഈ പ്രമാണം ശ്രദ്ധിക്കുക',
'filewasdeleted' => 'ഈ പേരിലുള്ള ഒരു പ്രമാണം ഇതിനു മുൻപ് അപ്‌ലോഡ് ചെയ്യുകയും പിന്നീട് മായ്ക്കുകയും ചെയ്തിട്ടുള്ളതാണ്‌. ഈ പ്രമാണം തുടർന്നും അപ്‌ലോഡ് ചെയ്യുന്നതിനു മുൻപ് $1 പരിശോധിക്കേണ്ടതാണ്‌.',
'upload-wasdeleted' => "'''മുന്നറിയിപ്പ്: മുൻപ് അപ്‌ലോഡ് ചെയ്യുകയും പിന്നീട് മായ്ക്കുകയും ചെയ്തിട്ടുള്ള ഒരു പ്രമാണമാണ്‌ താങ്കൾ അപ്‌ലോഡ് ചെയ്യാൻ ശ്രമിക്കുന്നത്.'''
@@ -1439,14 +1649,45 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
താങ്കളുടെ പരിശോധനയ്ക്കായി പ്രമാണത്തിന്റെ മായ്ക്കൽ രേഖ ഇവിടെ കൊടുത്തിരിക്കുന്നു:",
'filename-bad-prefix' => "താങ്കൾ അപ്‌ലോഡ് ചെയ്യുവാൻ ശ്രമിക്കുന്ന പ്രമാണത്തിന്റെ പേര്‌ '''\"\$1\"''' എന്നാണ്‌ തുടങ്ങുന്നത്. ഇതു ഡിജിറ്റൽ ക്യാമറയിൽ പടങ്ങൾക്കു യാന്ത്രികമായി ചേർക്കുന്ന പേരാണ്‌. ദയവു ചെയ്തു താങ്കൾ അപ്‌ലോഡ് ചെയ്യുന്ന പ്രമാണത്തെ വിശദീകരിക്കുന്ന അനുയോജ്യമായ ഒരു പേരു തിരഞ്ഞെടുക്കുക.",
-'upload-proto-error' => 'തെറ്റായ പ്രോട്ടോക്കോൾ',
-'upload-proto-error-text' => 'റിമോട്ട് അപ്‌ലോഡിനു <code>http://</code> അഥവാ <code>ftp://</code> എന്നു തുടങ്ങുന്ന URL വേണം.',
-'upload-file-error' => 'ആന്തരികപ്രശ്നം',
-'upload-file-error-text' => 'സെർവറിൽ ഒരു താൽക്കാലിക പ്രമാണം ഉണ്ടാക്കുവാൻ ശ്രമിക്കുമ്പോൾ ആന്തരികപ്രശ്നം സംഭവിച്ചു. ദയവായി [[Special:ListUsers/sysop|കാര്യനിർവാഹകരിലൊരാളെ]] സമീപിക്കുക.',
-'upload-misc-error' => 'കാരണം അജ്ഞാതമായ അപ്‌ലോഡ് പിഴവ്',
-'upload-misc-error-text' => 'അപ്‌ലോഡിങ്ങ് സമയത്ത് അജ്ഞാതമായ പിഴവ് സംഭവിച്ചു.
+'upload-proto-error' => 'തെറ്റായ പ്രോട്ടോക്കോൾ',
+'upload-proto-error-text' => 'റിമോട്ട് അപ്‌ലോഡിനു <code>http://</code> അഥവാ <code>ftp://</code> എന്നു തുടങ്ങുന്ന URL വേണം.',
+'upload-file-error' => 'ആന്തരികപ്രശ്നം',
+'upload-file-error-text' => 'സെർവറിൽ ഒരു താൽക്കാലിക പ്രമാണം ഉണ്ടാക്കുവാൻ ശ്രമിക്കുമ്പോൾ ആന്തരികപ്രശ്നം സംഭവിച്ചു. ദയവായി [[Special:ListUsers/sysop|കാര്യനിർവാഹകരിലൊരാളെ]] സമീപിക്കുക.',
+'upload-misc-error' => 'കാരണം അജ്ഞാതമായ അപ്‌ലോഡ് പിഴവ്',
+'upload-misc-error-text' => 'അപ്‌ലോഡിങ്ങ് സമയത്ത് അജ്ഞാതമായ പിഴവ് സംഭവിച്ചു.
ദയവായി URL സാധുവാണോ എന്നും അതു പ്രാപ്യമാണോ എന്നും പരിശോധിച്ചതിനു ശേഷം വീണ്ടും പരിശ്രമിക്കുക.
തുടർന്നും പ്രശ്നം അവശേഷിക്കുകയാണെങ്കിൽ [[Special:ListUsers/sysop|കാര്യനി‌ർവാഹകരിലൊരാളെ]] സമീപിക്കുക.',
+'upload-too-many-redirects' => 'യൂ.ആർ.എല്ലിൽ നിരവധി തിരിച്ചുവിടലുകളുണ്ട്',
+'upload-unknown-size' => 'വലിപ്പം അറിയില്ല',
+'upload-http-error' => 'ഒരു എച്ച്.റ്റി.റ്റി.പി. പിഴവു സംഭവിച്ചിരിക്കുന്നു: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'പ്രവേശനമില്ല',
+'img-auth-nopathinfo' => 'PATH_INFO ലഭ്യമല്ല.
+താങ്കളുടെ സെർവർ ഈ വിവരം കൈമാറ്റം ചെയ്യാൻ തയ്യാറാക്കിയിട്ടില്ല.
+അത് img_auth പിന്തുണയില്ലാത്ത സി.ജി.ഐ. അധിഷ്ഠിതമായ ഒന്നായിരിക്കാം.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
+'img-auth-notindir' => 'ആവശ്യപ്പെട്ട പാത അപ്‌‌ലോഡ് ഡയറക്റ്ററിയിൽ സജ്ജീകരിച്ചു നൽകിയിട്ടില്ല.',
+'img-auth-badtitle' => '"$1" എന്നതിൽ നിന്ന് സാധുവായ തലക്കെട്ട് സൃഷ്ടിക്കാൻ കഴിയില്ല.',
+'img-auth-nologinnWL' => 'താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല ഒപ്പം "$1" ശുദ്ധിപട്ടികയിൽ ഇല്ല.',
+'img-auth-nofile' => '"$1" എന്ന പ്രമാണം നിലവിലില്ല.',
+'img-auth-isdir' => 'താങ്കൾ "$1" എന്ന ഡയറക്ടറി എടുക്കാനാണു ശ്രമിക്കുന്നത്.
+പ്രമാണങ്ങൾ എടുക്കാൻ മാത്രമേ അനുവദിക്കുള്ളു.',
+'img-auth-streaming' => 'സ്ട്രീമിങ് "$1".',
+'img-auth-public' => 'img_auth.php എന്ന ഗുണനിർവഹണം സ്വകാര്യ‌‌വിക്കികളിൽ പ്രമാണങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യുന്നതിനുള്ളതാണ്.
+ഈ വിക്കി ഒരു പൊതുജന വിക്കിയായാണ് ക്രമീകരിച്ചിരിക്കുന്നത്.
+സുരക്ഷയ്ക്ക് ഏറ്റവും അനുകൂലിതമായെന്നതിനാൽ img_auth.php നിർജീവമാക്കിയിരിക്കുന്നു.',
+'img-auth-noread' => '"$1" എടുത്തുനോക്കാൻ ഉപയോക്താവിനു കഴിയില്ല.',
+
+# HTTP errors
+'http-invalid-url' => 'അസാധുവായ യു.ആർ.എൽ.: $1',
+'http-invalid-scheme' => '"$1" രീതിയിലുള്ള യു.ആർ.എല്ലുകൾ പിന്തുണയ്ക്കുന്നില്ല',
+'http-request-error' => 'അഭ്യർത്ഥന അയയ്ക്കുന്നതിൽ അപരിചിതമായ പിഴവ്:',
+'http-read-error' => 'എച്ച്.റ്റി.റ്റി.പി. വിവരം പ്രദർശിപ്പിക്കുന്നതിൽ പിഴവ്.',
+'http-timed-out' => 'എച്ച്.റ്റി.റ്റി.പി. അഭ്യർത്ഥന സമയം കഴിഞ്ഞു.',
+'http-curl-error' => 'യു.ആർ.എൽ. ശേഖരിക്കുന്നതിൽ പിഴവ്: $1',
+'http-host-unreachable' => 'യു.ആർ.എൽ.-ല്‍ എത്തിപ്പെടാന്‍ സാധിച്ചില്ല',
+'http-bad-status' => 'എച്ച്.റ്റി.റ്റി.പി. അഭ്യർത്ഥനാ വേളയിൽ ഒരു പിഴവുണ്ടായി: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-ൽ എത്തിപ്പെടാൻ സാധിച്ചില്ല',
@@ -1455,6 +1696,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'upload-curl-error28-text' => 'ഈ സൈറ്റിൽ നിന്നു പ്രതികരണം ലഭിക്കുവാൻ ധാരാളം സമയമെടുക്കുന്നു. സൈറ്റ് സജീവമാണോ എന്നു പരിശോധിക്കുകയും കുറച്ച് സമയം കാത്തു നിന്നതിനു ശേഷം വീടും ശ്രമിക്കുകയും ചെയ്യുക. തിരക്കു കുറഞ്ഞ സമയത്ത് പരിശ്രമിക്കുന്നതാവും നല്ലത്.',
'license' => 'പകർപ്പവകാശ വിവരങ്ങൾ:',
+'license-header' => 'അനുമതി',
'nolicense' => 'ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല',
'license-nopreview' => '(പ്രിവ്യൂ ലഭ്യമല്ല)',
'upload_source_url' => '(സാധുവായ, ആർക്കും ഉപയോഗിക്കാവുന്ന URL)',
@@ -1473,38 +1715,42 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'listfiles_count' => 'പതിപ്പുകൾ',
# File description page
-'filehist' => 'പ്രമാണ നാൾവഴി',
-'filehist-help' => 'ഏതെങ്കിലും തീയതി/സമയ കണ്ണിയിൽ ഞെക്കിയാൽ പ്രസ്തുതസമയത്ത് ഈ പ്രമാണം എങ്ങനെയായിരുന്നു എന്നു കാണാം.',
-'filehist-deleteall' => 'എല്ലാം മായ്ക്കുക',
-'filehist-deleteone' => 'ഇതു മായ്ക്കുക',
-'filehist-revert' => 'പൂർവ്വസ്ഥിതിയിലാക്കുക',
-'filehist-current' => 'നിലവിലുള്ളത്',
-'filehist-datetime' => 'തീയതി/സമയം',
-'filehist-thumb' => 'ലഘുചിത്രം',
-'filehist-thumbtext' => 'മാറ്റം $1-ന്റെ ലഘുചിത്രം',
-'filehist-nothumb' => 'ലഘുചിത്രമില്ല',
-'filehist-user' => 'ഉപയോക്താവ്',
-'filehist-dimensions' => 'അളവുകൾ',
-'filehist-filesize' => 'പ്രമാണത്തിന്റെ വലിപ്പം',
-'filehist-comment' => 'അഭിപ്രായം',
-'imagelinks' => 'പ്രമാണത്തിലേക്കുള്ള കണ്ണികൾ',
-'linkstoimage' => 'താഴെ കാണുന്ന {{PLURAL:$1|താളിൽ|$1 താളുകളിൽ}} ഈ ചിത്രം ഉപയോഗിക്കുന്നു:',
-'linkstoimage-more' => 'ഈ പ്രമാണത്തിലേയ്ക്ക് {{PLURAL:$1|ഒരു താളിലധികം കണ്ണി|$1 താളിലധികം കണ്ണികൾ}} ഉണ്ട്.
+'file-anchor-link' => 'പ്രമാണം',
+'filehist' => 'പ്രമാണ നാൾവഴി',
+'filehist-help' => 'ഏതെങ്കിലും തീയതി/സമയ കണ്ണിയിൽ ഞെക്കിയാൽ പ്രസ്തുതസമയത്ത് ഈ പ്രമാണം എങ്ങനെയായിരുന്നു എന്നു കാണാം.',
+'filehist-deleteall' => 'എല്ലാം മായ്ക്കുക',
+'filehist-deleteone' => 'ഇതു മായ്ക്കുക',
+'filehist-revert' => 'പൂർവ്വസ്ഥിതിയിലാക്കുക',
+'filehist-current' => 'നിലവിലുള്ളത്',
+'filehist-datetime' => 'തീയതി/സമയം',
+'filehist-thumb' => 'ലഘുചിത്രം',
+'filehist-thumbtext' => 'മാറ്റം $1-ന്റെ ലഘുചിത്രം',
+'filehist-nothumb' => 'ലഘുചിത്രമില്ല',
+'filehist-user' => 'ഉപയോക്താവ്',
+'filehist-dimensions' => 'അളവുകൾ',
+'filehist-filesize' => 'പ്രമാണത്തിന്റെ വലിപ്പം',
+'filehist-comment' => 'അഭിപ്രായം',
+'filehist-missing' => 'പ്രമാണം ലഭ്യമല്ല',
+'imagelinks' => 'പ്രമാണത്തിലേക്കുള്ള കണ്ണികൾ',
+'linkstoimage' => 'താഴെ കാണുന്ന {{PLURAL:$1|താളിൽ|$1 താളുകളിൽ}} ഈ ചിത്രം ഉപയോഗിക്കുന്നു:',
+'linkstoimage-more' => 'ഈ പ്രമാണത്തിലേയ്ക്ക് {{PLURAL:$1|ഒരു താളിലധികം കണ്ണി|$1 താളിലധികം കണ്ണികൾ}} ഉണ്ട്.
താഴെക്കൊടുത്തിരിക്കുന്ന പട്ടിക ഈ പ്രമാണത്തിലേയ്ക്കു മാത്രമുള്ള {{PLURAL:$1|ആദ്യ താളിന്റെ കണ്ണി|ആദ്യ $1 താളുകളുടെ കണ്ണികൾ}} കാട്ടുന്നു.
[[Special:WhatLinksHere/$2|മുഴുവൻ പട്ടികയും]] ലഭ്യമാണ്.',
-'nolinkstoimage' => 'ഈ ചിത്രം/പ്രമാണം വിക്കിയിലെ താളുകളിലൊന്നിലും ഉപയോഗിക്കുന്നില്ല.',
-'morelinkstoimage' => 'ഈ പ്രമാണത്തിലേയ്ക്കുള്ള [[Special:WhatLinksHere/$1|കൂടുതൽ കണ്ണികൾ]] കാണുക.',
-'redirectstofile' => 'താഴെ ഈ പ്രമാണത്തിലേയ്ക്കുള്ള {{PLURAL:$1|പ്രമാണ തിരിച്ചുവിടലുകൾ|$1 പ്രമാണങ്ങളുടെ തിരിച്ചുവിടൽ}} കൊടുത്തിരിക്കുന്നു:',
-'duplicatesoffile' => 'ഈ പ്രമാണത്തിന്റെ {{PLURAL:$1|ഒരു അപര പ്രമാണത്തെ|$1 അപര പ്രമാണങ്ങളെ}} താഴെ കൊടുത്തിരിക്കുന്നു ([[Special:FileDuplicateSearch/$2|കൂടുതൽ വിവരങ്ങൾ]]):',
-'sharedupload' => 'ഇത് $1 സം‌രംഭത്തിൽ നിന്നുള്ള പ്രമാണമാണ്‌, മറ്റു സം‌രംഭങ്ങളും ഇതുപയോഗിക്കുന്നുണ്ടാകാം.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'കൂടുതൽ വിവരത്തിനു $1 കാണുക.',
-'shareduploadwiki-desc' => 'ഇതിന്റെ $1 ഉള്ള കുറിപ്പ് താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.',
-'shareduploadwiki-linktext' => 'പ്രമാണത്തെക്കുറിച്ചുള്ള വിവരണത്തിന്റെ താൾ',
-'noimage' => 'ഈ പേരിൽ പ്രമാണങ്ങൾ ഒന്നുമില്ല, പക്ഷേ താങ്കൾക്ക് $1.',
-'noimage-linktext' => 'അപ്‌ലോഡ് ചെയ്യുക',
-'uploadnewversion-linktext' => 'ഈ ചിത്രത്തിലും മെച്ചപ്പെട്ടത് അപ്‌ലോഡ് ചെയ്യുക',
-'shared-repo-from' => '$1 സംരംഭത്തിൽ നിന്ന്', # $1 is the repository name
-'shared-repo' => 'ഒരു പങ്കുവെക്കപ്പെട്ട സംഭരണി', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'ഈ ചിത്രം/പ്രമാണം വിക്കിയിലെ താളുകളിലൊന്നിലും ഉപയോഗിക്കുന്നില്ല.',
+'morelinkstoimage' => 'ഈ പ്രമാണത്തിലേയ്ക്കുള്ള [[Special:WhatLinksHere/$1|കൂടുതൽ കണ്ണികൾ]] കാണുക.',
+'redirectstofile' => 'താഴെ ഈ പ്രമാണത്തിലേയ്ക്കുള്ള {{PLURAL:$1|പ്രമാണ തിരിച്ചുവിടലുകൾ|$1 പ്രമാണങ്ങളുടെ തിരിച്ചുവിടൽ}} കൊടുത്തിരിക്കുന്നു:',
+'duplicatesoffile' => 'ഈ പ്രമാണത്തിന്റെ {{PLURAL:$1|ഒരു അപര പ്രമാണത്തെ|$1 അപര പ്രമാണങ്ങളെ}} താഴെ കൊടുത്തിരിക്കുന്നു ([[Special:FileDuplicateSearch/$2|കൂടുതൽ വിവരങ്ങൾ]]):',
+'sharedupload' => 'ഇത് $1 സം‌രംഭത്തിൽ നിന്നുള്ള പ്രമാണമാണ്‌, മറ്റു സം‌രംഭങ്ങളും ഇതുപയോഗിക്കുന്നുണ്ടാകാം.',
+'sharedupload-desc-there' => 'ഈ പ്രമാണം $1 സംരംഭത്തിൽ നിന്നുമുള്ളതാണ്, മറ്റു പദ്ധതികൾ ഇതുപയോഗിക്കുന്നുണ്ടാകാം.
+കൂടുതൽ വിവരങ്ങൾക്ക് ദയവായി [$2 പ്രമാണത്തിന്റെ വിവരണ താൾ] കാണുക.',
+'sharedupload-desc-here' => 'ഈ പ്രമാണം $1 സംരംഭത്തിൽ നിന്നുമുള്ളതാണ്, മറ്റു പദ്ധതികൾ ഇതുപയോഗിക്കുന്നുണ്ടാകാം.
+ഈ [$2 പ്രമാണത്തിന്റെ വിവരണ താളിലുള്ള] വിവരങ്ങൾ താഴെ കൊടുത്തിരിക്കുന്നു.',
+'filepage-nofile' => 'ഈ പേരിൽ ഒരു പ്രമാണവും നിലവിലില്ല.',
+'filepage-nofile-link' => 'ഈ പേരിൽ ഒരു പ്രമാണവും നിലവിലില്ല, താങ്കൾക്ക് [$1 അത് അപ്‌ലോഡ് ചെയ്യാവുന്നതാണ്‌]',
+'uploadnewversion-linktext' => 'ഈ ചിത്രത്തിലും മെച്ചപ്പെട്ടത് അപ്‌ലോഡ് ചെയ്യുക',
+'shared-repo-from' => '$1 സംരംഭത്തിൽ നിന്ന്',
+'shared-repo' => 'ഒരു പങ്കുവെക്കപ്പെട്ട സംഭരണി',
+'shared-repo-name-wikimediacommons' => 'വിക്കിമീഡിയ കോമൺസ്',
# File reversion
'filerevert' => '$1 തിരസ്ക്കരിക്കുക',
@@ -1533,6 +1779,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
** നിലവിലുള്ള പ്രമാണത്തിന്റെ പകർപ്പ്
** പകർപ്പവകാശ വിവരങ്ങൾ ചേർത്തിട്ടില്ല',
'filedelete-edit-reasonlist' => 'മായ്ക്കലിന്റെ കാരണം തിരുത്തുക',
+'filedelete-maintenance' => 'നന്നാക്കൽ പ്രവർത്തനങ്ങൾ പുരോഗമിക്കുന്നതിനാൽ പ്രമാണങ്ങളുടെ മായ്ക്കലും പുനഃസ്ഥാപിക്കലും താത്ക്കാലികമായി നിർത്തിവച്ചിരിക്കുന്നു.',
# MIME search
'mimesearch' => 'MIME തിരയൽ',
@@ -1554,7 +1801,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
# Random page
'randompage' => 'ഏതെങ്കിലും താൾ',
-'randompage-nopages' => '$1 എന്ന നെയിംസ്പേസില്‍ താളുകളൊന്നുമില്ല.',
+'randompage-nopages' => 'ഇനി കൊടുത്തിരിക്കുന്ന {{PLURAL:$2|നാമമേഖലയിൽ|നാമമേഖലകളിൽ}} താളുകൾ ഒന്നുമില്ല: $1.',
# Random redirect
'randomredirect' => 'ക്രമരഹിതമായ തിരിച്ചുവിടൽ',
@@ -1566,6 +1813,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'statistics-header-edits' => 'തിരുത്തൽ സ്ഥിതിവിവരക്കണക്കുകൾ',
'statistics-header-views' => 'സന്ദർശനങ്ങളുടെ സ്ഥിതിവിവരക്കണക്കുകൾ',
'statistics-header-users' => 'ഉപയോക്താക്കളുടെ സ്ഥിതിവിവരക്കണക്കുകൾ',
+'statistics-header-hooks' => 'മറ്റു സ്ഥിതിവിവരക്കണക്കുകൾ',
'statistics-articles' => 'ലേഖനങ്ങൾ',
'statistics-pages' => 'താളുകൾ',
'statistics-pages-desc' => 'സം‌വാദം താളുകൾ, തിരിച്ചുവിടലുകൾ തുടങ്ങിയവയടക്കം വിക്കിയിലെ എല്ലാ താളുകളും.',
@@ -1593,8 +1841,8 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'brokenredirects' => 'മുറിഞ്ഞ തിരിച്ചുവിടലുകൾ',
'brokenredirectstext' => 'താഴെക്കാണുന്ന തിരിച്ചുവിടലുകൾ നിലവിലില്ലാത്ത താളുകളിലേയ്ക്കാണ്‌:',
-'brokenredirects-edit' => '(തിരുത്തുക)',
-'brokenredirects-delete' => '(മായ്ക്കുക)',
+'brokenredirects-edit' => 'തിരുത്തുക',
+'brokenredirects-delete' => 'മായ്ക്കുക',
'withoutinterwiki' => 'അന്തർഭാഷാകണ്ണികൾ ഇല്ലാത്ത താളുകൾ',
'withoutinterwiki-summary' => 'താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന താളുകളിൽ മറ്റു ഭാഷാ വിക്കികളിലേക്ക് കണ്ണി ചേർത്തിട്ടില്ല.',
@@ -1702,14 +1950,15 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
# Special:Categories
'categories' => 'വർഗ്ഗങ്ങൾ',
-'categoriespagetext' => 'താഴെ കൊടുത്തിരിക്കുന്ന വിഭാഗങ്ങളില്‍ താളുകളും പ്രമാണങ്ങളുമുണ്ട്. [[Special:UnusedCategories|ഉപയോഗിക്കപ്പെടാത്ത വിഭാഗങ്ങള്‍]] ഇവിടെ കാണിക്കുന്നില്ല. [[Special:WantedCategories|അവശ്യവിഭാഗങ്ങള്‍]] കൂടി കാണുക.',
+'categoriespagetext' => 'താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|വർഗ്ഗത്തിൽ|വർഗ്ഗങ്ങളിൽ}} താളുകളും പ്രമാണങ്ങളുമുണ്ട്. [[Special:UnusedCategories|ഉപയോഗിക്കപ്പെടാത്ത വർഗ്ഗങ്ങൾ]] ഇവിടെ കാണിക്കുന്നില്ല. [[Special:WantedCategories|അവശ്യവർഗ്ഗങ്ങൾ]] കൂടി കാണുക.',
'categoriesfrom' => 'ഇങ്ങനെ തുടങ്ങുന്ന വർഗ്ഗങ്ങൾ കാട്ടുക:',
'special-categories-sort-count' => 'എണ്ണത്തിനനുസരിച്ച് ക്രമപ്പെടുത്തുക',
'special-categories-sort-abc' => 'അക്ഷരമാലാക്രമത്തിൽ ക്രമീകരിക്കുക',
# Special:DeletedContributions
-'deletedcontributions' => 'മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ',
-'deletedcontributions-title' => 'മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ',
+'deletedcontributions' => 'മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ',
+'deletedcontributions-title' => 'മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ',
+'sp-deletedcontributions-contribs' => 'സം‌ഭാവനകൾ',
# Special:LinkSearch
'linksearch' => 'വെബ്ബ് കണ്ണികൾ',
@@ -1725,6 +1974,16 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'listusersfrom' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ പ്രദർശിപ്പിക്കുക:',
'listusers-submit' => 'പ്രദർശിപ്പിക്കുക',
'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
+'listusers-blocked' => '(തടയപ്പെട്ടത്)',
+
+# Special:ActiveUsers
+'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
+'activeusers-intro' => 'ഇത് കഴിഞ്ഞ {{PLURAL:$1|ദിവസം|$1 ദിവസങ്ങളിൽ}} ഏതെങ്കിലും വിധത്തിലുള്ള പ്രവർത്തനങ്ങൾ ചെയ്ത ഉപയോക്താക്കളുടെ പട്ടികയാണ്.',
+'activeusers-count' => 'അവസാനത്തെ {{PLURAL:$3|ഒരു ദിവസം|$3 ദിവസങ്ങളിൽ}} നടത്തിയ {{PLURAL:$1|ഒരു തിരുത്തൽ|$1 തിരുത്തലുകൾ}}',
+'activeusers-from' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ കാട്ടുക:',
+'activeusers-hidebots' => 'യന്ത്രങ്ങളെ മറയ്ക്കുക',
+'activeusers-hidesysops' => 'കാര്യനിർവാഹകരെ മറയ്ക്കുക',
+'activeusers-noresult' => 'ഉപയോക്താക്കളില്ല',
# Special:Log/newusers
'newuserlogpage' => 'ഉപയോക്തൃ സൃഷ്ടിയുടെ രേഖ',
@@ -1735,17 +1994,23 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'newuserlog-autocreate-entry' => 'യാന്ത്രികമായി സൃഷ്ടിക്കപ്പെട്ട അംഗത്വം',
# Special:ListGroupRights
-'listgrouprights' => 'ഉപയോക്തൃവിഭാഗത്തിന്റെ അവകാശങ്ങൾ',
-'listgrouprights-summary' => 'ഈ വിക്കിയിൽ നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോക്തൃസംഘങ്ങളെയും, ആ സംഘങ്ങൾക്ക് പ്രാപ്തമായിട്ടുള്ള അവകാശങ്ങളേയും താഴെ കുറിച്ചിരിക്കുന്നു.
+'listgrouprights' => 'ഉപയോക്തൃവിഭാഗത്തിന്റെ അവകാശങ്ങൾ',
+'listgrouprights-summary' => 'ഈ വിക്കിയിൽ നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോക്തൃസംഘങ്ങളെയും, ആ സംഘങ്ങൾക്ക് പ്രാപ്തമായിട്ടുള്ള അവകാശങ്ങളേയും താഴെ കുറിച്ചിരിക്കുന്നു.
വ്യക്തിപരമായ അവകാശങ്ങളെ കുറിച്ച് [[{{MediaWiki:Listgrouprights-helppage}}|കൂടുതൽ വിവരങ്ങൾ]] ഉണ്ടാകാനിടയുണ്ട്.',
-'listgrouprights-group' => 'വിഭാഗം',
-'listgrouprights-rights' => 'അവകാശങ്ങൾ',
-'listgrouprights-helppage' => 'Help:സംഘാവകാശങ്ങൾ',
-'listgrouprights-members' => '(അംഗങ്ങളുടെ പട്ടിക)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|സംഘം|സംഘങ്ങൾ}} ചേർക്കുക: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|സംഘം|സംഘങ്ങൾ}} നീക്കംചെയ്യുക: $1',
-'listgrouprights-addgroup-all' => 'എല്ലാ സംഘങ്ങളേയും ചേർക്കുക',
-'listgrouprights-removegroup-all' => 'എല്ലാ സംഘങ്ങളേയും നീക്കം ചെയ്യുക',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">അവകാശം നൽകിയിരിക്കുന്നു</span>
+* <span class="listgrouprights-revoked">അവകാശം നീക്കിയിരിക്കുന്നു</span>',
+'listgrouprights-group' => 'വിഭാഗം',
+'listgrouprights-rights' => 'അവകാശങ്ങൾ',
+'listgrouprights-helppage' => 'Help:സംഘാവകാശങ്ങൾ',
+'listgrouprights-members' => '(അംഗങ്ങളുടെ പട്ടിക)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|സംഘം|സംഘങ്ങൾ}} ചേർക്കുക: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|സംഘം|സംഘങ്ങൾ}} നീക്കംചെയ്യുക: $1',
+'listgrouprights-addgroup-all' => 'എല്ലാ സംഘങ്ങളേയും ചേർക്കുക',
+'listgrouprights-removegroup-all' => 'എല്ലാ സംഘങ്ങളേയും നീക്കം ചെയ്യുക',
+'listgrouprights-addgroup-self' => 'സ്വന്തം അംഗത്വത്തിലേയ്ക്ക് {{PLURAL:$2|സംഘത്തെ|സംഘങ്ങളെ}} ചേർക്കുക: $1',
+'listgrouprights-removegroup-self' => 'സ്വന്തം അംഗത്വത്തിൽ നിന്ന് {{PLURAL:$2|സംഘത്തെ|സംഘങ്ങളെ}} നീക്കം ചെയ്യുക: $1',
+'listgrouprights-addgroup-self-all' => 'എല്ലാ സംഘങ്ങളേയും സ്വന്തം അംഗത്വത്തിൽ ചേർക്കുക',
+'listgrouprights-removegroup-self-all' => 'സ്വന്തം അംഗത്വത്തിൽ നിന്ന് എല്ലാ സംഘങ്ങളേയും നീക്കംചെയ്യുക',
# E-mail user
'mailnologin' => 'അയയ്ക്കാനുള്ള വിലാസം ലഭ്യമല്ല',
@@ -1818,6 +2083,32 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'enotif_lastvisited' => 'താങ്കളുടെ അവസാന സന്ദർശനത്തിനു ശേഷമുണ്ടായ മാറ്റങ്ങൾ കാണുവാൻ $1 സന്ദർശിക്കുക.',
'enotif_lastdiff' => 'ഈ മാറ്റം ദർശിക്കാൻ $1 കാണുക.',
'enotif_anon_editor' => 'അജ്ഞാത ഉപയോക്താവ് $1',
+'enotif_body' => 'പ്രിയ $WATCHINGUSERNAME,
+
+
+{{SITENAME}} സം‌രംഭത്തിലെ $PAGETITLE താൾ $PAGEEDITDATE-ൽ $PAGEEDITOR എന്ന ഉപയോക്താവ് $CHANGEDORCREATED, ഇപ്പോഴുള്ള പതിപ്പിനായി $PAGETITLE_URL കാണുക.
+
+$NEWPAGE
+
+തിരുത്തിയയാൾ നൽകിയ സം‌ഗ്രഹം: $PAGESUMMARY $PAGEMINOREDIT
+
+തിരുത്തിയയാളെ ബന്ധപ്പെടുക:
+മെയിൽ: $PAGEEDITOR_EMAIL
+വിക്കി: $PAGEEDITOR_WIKI
+
+താങ്കൾ ഈ താൾ സന്ദർശിക്കുന്നില്ലങ്കിൽ മറ്റ് അറിയിപ്പുകൾ ഒന്നുമുണ്ടാകുന്നതല്ല.
+ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക സന്ദർശിച്ചും ഉൾപ്പെട്ട താളുകളിലെ അറിയിപ്പ് മുദ്രകൾ താങ്കൾക്ക് പുനഃക്രമീകരിക്കാവുന്നതാണ്‌.
+ താങ്കളുടെ {{SITENAME}} സുഹൃദ് അറിയിപ്പ് സജ്ജീകരണം
+
+--
+ശ്രദ്ധിക്കുന്ന പട്ടികയിലെ ക്രമീകരണങ്ങളിൽ മാറ്റം വരുത്താൻ, സന്ദർശിക്കുക
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+താൾ താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിൽ നിന്ന് നീക്കംചെയ്യാൻ, സന്ദർശിക്കുക
+$UNWATCHURL
+
+അഭിപ്രായം അറിയിക്കാനും മറ്റു സഹായങ്ങൾക്കും:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'താൾ മായ്ക്കുക',
@@ -1828,9 +2119,10 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'exblank' => 'താൾ ശൂന്യമായിരുന്നു',
'delete-confirm' => '"$1" മായ്ക്കുക',
'delete-legend' => 'മായ്ക്കുക',
-'historywarning' => 'മുന്നറിയിപ്പ്: നിങ്ങള്‍ മായ്ക്കുവാന്‍ പോകുന്ന താള്‍ തിരുത്തല്‍ ചരിത്രം ഉള്ള ഒരു താളാണ്.',
+'historywarning' => "'''മുന്നറിയിപ്പ്''': താങ്കൾ മായ്ക്കുവാൻ പോകുന്ന താളിനു ഏകദേശം {{PLURAL:$1|ഒരു നാൾപ്പതിപ്പ്|$1 നാൾപ്പതിപ്പുകൾ}} ഉള്ള നാൾവഴി ഉണ്ട്:",
'confirmdeletetext' => 'താങ്കൾ ഒരു താൾ അതിന്റെ തിരുത്തൽ ചരിത്രമടക്കം മായ്ക്കുവാൻ പോവുകയാണ്. താങ്കൾ ചെയ്യുന്നതിന്റെ പരിണതഫലം താങ്കൾക്കറിയാമെന്നും, താങ്കളുടെ ഈ മായ്ക്കൽ [[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ചാണു ചെയ്യുന്നതെന്നും ഉറപ്പാക്കുക.',
'actioncomplete' => 'പ്രവൃത്തി പൂർത്തിയായിരിക്കുന്നു',
+'actionfailed' => 'പ്രവൃത്തി പരാജയപ്പെട്ടിരിക്കുന്നു',
'deletedtext' => '"<nowiki>$1</nowiki>" മായ്ച്ചിരിക്കുന്നു. പുതിയതായി നടന്ന മായ്ക്കലുകളുടെ വിവരങ്ങൾ $2 ഉപയോഗിച്ച് കാണാം.',
'deletedarticle' => '"[[$1]]" മായ്ച്ചിരിക്കുന്നു',
'suppressedarticle' => '"[[$1]]" ഒതുക്കിയിരിക്കുന്നു',
@@ -1850,18 +2142,19 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'delete-warning-toobig' => 'ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. അതായത്, ഇതിനു് $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സം‌രംഭത്തിന്റെ ഡാറ്റാബേസ് ഓപ്പറേഷനെ ബാധിച്ചേക്കാം. അതിനാൽ വളരെ ശ്രദ്ധാപൂർവ്വം തുടർനടപടികളിലേക്കു നീങ്ങുക.',
# Rollback
-'rollback' => 'തിരുത്തലുകൾ റോൾബാക്ക് ചെയ്യുക',
-'rollback_short' => 'റോൾബാക്ക്',
-'rollbacklink' => 'റോൾബാക്ക്',
-'rollbackfailed' => 'റോൾബാക്ക് പരാജയപ്പെട്ടു',
-'cantrollback' => 'റോൾ ബാക്ക് ചെയ്യുവാൻ സാദ്ധ്യമല്ല. ഒരു ഉപയോക്താവ് മാത്രമാണു ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
-'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
+'rollback' => 'തിരുത്തലുകൾ റോൾബാക്ക് ചെയ്യുക',
+'rollback_short' => 'റോൾബാക്ക്',
+'rollbacklink' => 'റോൾബാക്ക്',
+'rollbackfailed' => 'റോൾബാക്ക് പരാജയപ്പെട്ടു',
+'cantrollback' => 'റോൾ ബാക്ക് ചെയ്യുവാൻ സാദ്ധ്യമല്ല. ഒരു ഉപയോക്താവ് മാത്രമാണു ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
+'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
താളിലെ അവസാന തിരുത്തൽ ചെയ്തിരിക്കുന്നത് [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ആണ്.',
-'editcomment' => "തിരുത്തലിന്റെ ചുരുക്കം: \"''\$1''\" എന്നായിരുന്നു.", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|സംവാദം]]) നടത്തിയ തിരുത്തലുകൾ നീക്കം ചെയ്തിരിക്കുന്നു; നിലവിലുള്ള പതിപ്പ് [[User:$1|$1]] സൃഷ്ടിച്ചതാണ്', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 ചെയ്ത തിരുത്തൽ തിരസ്ക്കരിച്ചിരിക്കുന്നു; $2 ചെയ്ത തൊട്ടു മുൻപത്തെ പതിപ്പിലേക്ക് സേവ് ചെയ്യുന്നു.',
-'sessionfailure' => 'താങ്കളുടെ ലോഗിൻ സെഷനിൽ പ്രശ്നങ്ങളുള്ളതായി കാണുന്നു;
+'editcomment' => "തിരുത്തലിന്റെ ചുരുക്കം: \"''\$1''\" എന്നായിരുന്നു.",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|സംവാദം]]) നടത്തിയ തിരുത്തലുകൾ നീക്കം ചെയ്തിരിക്കുന്നു; നിലവിലുള്ള പതിപ്പ് [[User:$1|$1]] സൃഷ്ടിച്ചതാണ്',
+'revertpage-nouser' => '(ഉപയോക്തൃനാമം നീക്കിയിരിക്കുന്നു) നടത്തിയ തിരുത്തലുകൾ [[User:$1|$1]] സൃഷ്ടിച്ച അവസാന പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്തിരിക്കുന്നു',
+'rollback-success' => '$1 ചെയ്ത തിരുത്തൽ തിരസ്ക്കരിച്ചിരിക്കുന്നു; $2 ചെയ്ത തൊട്ടു മുൻപത്തെ പതിപ്പിലേക്ക് സേവ് ചെയ്യുന്നു.',
+'sessionfailure' => 'താങ്കളുടെ ലോഗിൻ സെഷനിൽ പ്രശ്നങ്ങളുള്ളതായി കാണുന്നു;
സെഷൻ തട്ടിയെടുക്കൽ ഒഴിവാക്കാനുള്ള മുൻകരുതലായി ഈ പ്രവൃത്തി റദ്ദാക്കിയിരിക്കുന്നു.
ദയവായി പിന്നോട്ട് പോയി താങ്കൾ വന്ന താളിൽ ചെന്ന്, വീണ്ടും ശ്രമിക്കുക.',
@@ -1880,7 +2173,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'protectexpiry' => 'സംരക്ഷണ കാലാവധി:',
'protect_expiry_invalid' => 'കാലാവധി തീരുന്ന സമയം അസാധുവാണ്.',
'protect_expiry_old' => 'കാലവധി തീരുന്ന സമയം ഭൂതകാലത്തിലാണ്.',
-'protect-unchain' => 'തലക്കെട്ടുമാറ്റാനുള്ള അനുമതികൾ പുനഃസ്ഥാപിക്കുക',
+'protect-unchain-permissions' => 'മറ്റ് സംരക്ഷണ ഐച്ഛികങ്ങൾ തുറക്കുക',
'protect-text' => "താങ്കൾക്ക് ഇവിടെ '''<nowiki>$1</nowiki>''' എന്ന താളിന്റെ നിലവിലുള്ള സംരക്ഷണമാനം ദർശിക്കുകയും അതിൽ മാറ്റംവരുത്തുകയും ചെയ്യാം.",
'protect-locked-blocked' => "തടയപ്പെട്ടിരിക്കുന്ന സമയത്ത് താങ്കൾക്ക് സം‌രക്ഷണ പരിധി മാറ്റുവാൻ സാധിക്കില്ല. '''$1''' എന്ന താളിന്റെ നിലവിലുള്ള ക്രമീകരണം ഇതാണ്‌:",
'protect-locked-dblock' => "ഡാറ്റാബേസ് ബന്ധിച്ചിരിക്കുന്നതു കാരണം താങ്കൾക്കു സം‌രക്ഷണമാനം മാറ്റുവാൻ സാധിക്കില്ല.
@@ -1909,7 +2202,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
** സൃഷ്ടിപരമല്ലാതെ ഭവിക്കുന്ന തിരുത്തൽ യുദ്ധം
** സന്ദർശകരുടെ എണ്ണം വളരെ കൂടുതലായ താൾ',
'protect-edit-reasonlist' => 'സംരക്ഷണ കാരണങ്ങൾ തിരുത്തുക',
-'protect-expiry-options' => '1 മണിക്കൂർ:1 hour,1 ദിവസം:1 day,1 ആഴ്ച:1 week,2 ആഴ്ച:2 weeks,1 മാസം:1 month,3 മാസം:3 months,6 മാസം:6 months,1 വർഷം:1 year,അനന്തകാലം:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 മണിക്കൂർ:1 hour,1 ദിവസം:1 day,1 ആഴ്ച:1 week,2 ആഴ്ച:2 weeks,1 മാസം:1 month,3 മാസം:3 months,6 മാസം:6 months,1 വർഷം:1 year,അനന്തകാലം:infinite',
'restriction-type' => 'അനുമതി:',
'restriction-level' => 'പരിമിതപ്പെടുത്തലിന്റെ മാനം:',
'minimum-size' => 'കുറഞ്ഞ വലിപ്പം',
@@ -1948,6 +2241,7 @@ latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻ
'undelete-nodiff' => 'പഴയ പതിപ്പുകൾ ഒന്നും കണ്ടില്ല.',
'undeletebtn' => 'പുനഃസ്ഥാപിക്കുക',
'undeletelink' => 'കാണുക/പുനഃസ്ഥാപിക്കുക',
+'undeleteviewlink' => 'കാണുക',
'undeletereset' => 'പുനഃക്രമീകരിക്കുക',
'undeleteinvert' => 'വിപരീതം തിരഞ്ഞെടുക്കുക',
'undeletecomment' => 'കാരണം:',
@@ -1983,19 +2277,23 @@ $1',
'contributions-title' => '$1 എന്ന ഉപയോക്താവിന്റെ സംഭാവനകൾ',
'mycontris' => 'എന്റെ സംഭാവനകൾ',
'contribsub2' => '$1 എന്ന ഉപയോക്താവിന്റെ $2.',
-'nocontribs' => 'ഈ മാനദണ്ഡങ്ങളുമായി യോജിക്കുന്ന മാറ്റങ്ങൾ ഒന്നും കണ്ടില്ല.', # Optional parameter: $1 is the user name
+'nocontribs' => 'ഈ മാനദണ്ഡങ്ങളുമായി യോജിക്കുന്ന മാറ്റങ്ങൾ ഒന്നും കണ്ടില്ല.',
'uctop' => '(അവസാനത്തെ തിരുത്തൽ)',
'month' => 'മാസം:',
'year' => 'വർഷം:',
-'sp-contributions-newbies' => 'പുതിയ അംഗങ്ങൾ നടത്തിയ തിരുത്തലുകൾ മാത്രം',
-'sp-contributions-newbies-sub' => 'പുതിയ അംഗത്വങ്ങൾക്ക്',
-'sp-contributions-newbies-title' => 'പുതിയ അംഗത്വമെടുത്ത ഉപയോക്താക്കളുടെ സേവനങ്ങൾ',
-'sp-contributions-blocklog' => 'തടയൽ രേഖ',
-'sp-contributions-logs' => 'പ്രവർത്തനരേഖകൾ',
-'sp-contributions-search' => 'ചെയ്ത സേവനങ്ങൾ',
-'sp-contributions-username' => 'ഐ.പി. വിലാസം അഥവാ ഉപയോക്തൃനാമം:',
-'sp-contributions-submit' => 'തിരയൂ',
+'sp-contributions-newbies' => 'പുതിയ അംഗങ്ങൾ നടത്തിയ തിരുത്തലുകൾ മാത്രം',
+'sp-contributions-newbies-sub' => 'പുതിയ അംഗത്വങ്ങൾക്ക്',
+'sp-contributions-newbies-title' => 'പുതിയ അംഗത്വമെടുത്ത ഉപയോക്താക്കളുടെ സേവനങ്ങൾ',
+'sp-contributions-blocklog' => 'തടയൽ രേഖ',
+'sp-contributions-deleted' => 'മായ്ക്കപ്പെട്ട ഉപയോക്തൃസംഭാവനകൾ',
+'sp-contributions-logs' => 'പ്രവർത്തനരേഖകൾ',
+'sp-contributions-talk' => 'സംവാദം',
+'sp-contributions-userrights' => 'ഉപയോക്തൃ അവകാശങ്ങളുടെ പരിപാലനം',
+'sp-contributions-blocked-notice' => 'ഈ ഉപയോക്താവ് ഇപ്പോൾ തടയപ്പെട്ടിരിക്കുകയാണ്. അവലംബമായി തടയൽ രേഖയുടെ പുതിയ ഭാഗം താഴെ കൊടുത്തിരിക്കുന്നു:',
+'sp-contributions-search' => 'ചെയ്ത സേവനങ്ങൾ',
+'sp-contributions-username' => 'ഐ.പി. വിലാസം അഥവാ ഉപയോക്തൃനാമം:',
+'sp-contributions-submit' => 'തിരയൂ',
# What links here
'whatlinkshere' => 'അനുബന്ധകണ്ണികൾ',
@@ -2018,6 +2316,7 @@ $1',
# Block/unblock
'blockip' => 'ഉപയോക്താവിനെ തടയുക',
+'blockip-title' => 'ഉപയോക്താവിനെ തടയുക',
'blockip-legend' => 'ഉപയോക്താവിനെ തടയുക',
'blockiptext' => 'ഏതെങ്കിലും ഐ.പി. വിലാസത്തേയോ ഉപയോക്താവിനേയോ തടയുവാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.
[[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ച് നശീകരണപ്രവർത്തനം തടയാൻ മാത്രമേ ഇതു ചെയ്യാവൂ.
@@ -2041,7 +2340,7 @@ $1',
'ipbenableautoblock' => 'ഈ ഉപയോക്താവ് അവസാനം ഉപയോഗിച്ച ഐ.പി.യും തുടർന്ന് ഉപയോഗിക്കാൻ സാദ്ധ്യതയുള്ള ഐ.പി.കളും യാന്ത്രികമായി തടയുക',
'ipbsubmit' => 'ഈ ഉപയോക്താവിനെ തടയുക',
'ipbother' => 'മറ്റ് കാലാവധി:',
-'ipboptions' => '2 മണിക്കൂർ നേരത്തേയ്ക്ക്:2 hours,1 ദിവസത്തേയ്ക്ക്:1 day,3 ദിവസത്തേയ്ക്ക്:3 days,1 ആഴ്ചത്തേയ്ക്ക്:1 week,2 ആഴ്ചത്തേയ്ക്ക്:2 weeks,1 മാസത്തേയ്ക്ക്:1 month,3 മാസത്തേയ്ക്ക്:3 months,6 മാസത്തേയ്ക്ക്:6 months,1 വർഷത്തേയ്ക്ക്:1 year,അനന്തകാലത്തേയ്ക്ക്:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 മണിക്കൂർ നേരത്തേയ്ക്ക്:2 hours,1 ദിവസത്തേയ്ക്ക്:1 day,3 ദിവസത്തേയ്ക്ക്:3 days,1 ആഴ്ചത്തേയ്ക്ക്:1 week,2 ആഴ്ചത്തേയ്ക്ക്:2 weeks,1 മാസത്തേയ്ക്ക്:1 month,3 മാസത്തേയ്ക്ക്:3 months,6 മാസത്തേയ്ക്ക്:6 months,1 വർഷത്തേയ്ക്ക്:1 year,അനന്തകാലത്തേയ്ക്ക്:infinite',
'ipbotheroption' => 'മറ്റുള്ളവ',
'ipbotherreason' => 'മറ്റ്/കൂടുതൽ കാരണം:',
'ipbhidename' => 'തിരുത്തലുകൾ, പട്ടികകൾ എന്നിവയിൽ നിന്നും ഉപയോക്തൃനാമം മറയ്ക്കുക',
@@ -2070,9 +2369,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 താൽക്കാലിക വിലക്കുകൾ',
'ipblocklist-sh-addressblocks' => 'ഏക ഐ.പി. വിലക്കുകൾ $1',
'ipblocklist-submit' => 'തിരയൂ',
+'ipblocklist-localblock' => 'പ്രാദേശിക തടയൽ',
+'ipblocklist-otherblocks' => 'മറ്റ് {{PLURAL:$1|തടയൽ|തടയലുകൾ}}',
'blocklistline' => '$1-നു, $3-യെ $2 തടഞ്ഞിരിക്കുന്നു ($4)',
'infiniteblock' => 'അനിശ്ചിത കാലം',
-'expiringblock' => '$1 നു കാലാവധി തീരുന്നു',
+'expiringblock' => 'കാലാവധി തീരുന്നത് - $1 $2',
'anononlyblock' => 'അജ്ഞാത ഉപയോക്താക്കളെ മാത്രം',
'noautoblockblock' => 'യാന്ത്രികതടയൽ ഒഴിവാക്കിയിരിക്കുന്നു',
'createaccountblock' => 'അംഗത്വം സൃഷ്ടിക്കുന്നതിൽനിന്ന് തടഞ്ഞിരിക്കുന്നു',
@@ -2086,7 +2387,10 @@ $1',
'contribslink' => 'സംഭാവനകൾ',
'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1ന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" ആണ്‌.',
'blocklogpage' => 'തടയൽ രേഖ',
-'blocklog-fulllog' => 'എല്ലാ തടയൽ രേഖകളും',
+'blocklog-showlog' => 'ഈ ഉപയോക്താവ് മുമ്പേ തടയപ്പെട്ടതാണ്.
+തടയൽ രേഖ അവലംബമായി താഴെ കൊടുത്തിരിക്കുന്നു:',
+'blocklog-showsuppresslog' => 'ഈ ഉപയോക്താവ് മുമ്പേ തടയപ്പെടുകയും മറയ്ക്കപ്പെടുകയും ചെയ്തതാണ്.
+അവലംബത്തിനായി ഒതുക്കൽ രേഖ താഴെ കൊടുത്തിരിക്കുന്നു:',
'blocklogentry' => '[[$1]]-നെ $2 കാലത്തേക്കു വിലക്കിയിരിക്കുന്നു $3',
'reblock-logentry' => '[[$1]] തടയൽ നിബന്ധനകൾ മാറ്റിയിരിക്കുന്നു, തടയൽ അവസാനിക്കുന്നത് $2 $3',
'blocklogtext' => '{{SITENAME}} സംരംഭത്തിൽ പ്രവർത്തിക്കുന്നതിൽ നിന്ന് ഉപയോക്താക്കളെ തടഞ്ഞതിന്റേയും, പുനഃപ്രവർത്തനാനുമതി നൽകിയതിന്റേയും രേഖകൾ താഴെ കാണാം. {{SITENAME}} സംരംഭം സ്വയം തടയുന്ന ഐ.പി. വിലാസങ്ങൾ ഈ പട്ടികയിൽ ഇല്ല. [[Special:IPBlockList|തടയപ്പെട്ടിട്ടുള്ള ഐ.പി. വിലാസങ്ങളുടെ പട്ടിക]] എന്നതാളിൽ നിലവിലുള്ള നിരോധനങ്ങളേയും തടയലുകളേയും കാണാവുന്നതാണ്.',
@@ -2106,9 +2410,11 @@ $1',
'ipb-needreblock' => '== നിലവിൽ തടയപ്പെട്ടതാണ് ==
$1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
താങ്കൾ സജ്ജീകരണത്തിൽ മാറ്റം വരുത്തുവാൻ ഉദ്ദേശിക്കുന്നുണ്ടോ?',
+'ipb-otherblocks-header' => 'മറ്റ് {{PLURAL:$1|തടയൽ|തടയലുകൾ}}',
'ipb_cant_unblock' => 'പിഴവ്: $1 എന്ന തടയൽ ഐ.ഡി. കാണുന്നില്ല. ഇതിനകം അതിന്റെ തടയൽ നീക്കം ചെയ്തിരിക്കാം.',
'ipb_blocked_as_range' => 'പിഴവ്: $1 എന്ന ഐ.പി.യെ നേരിട്ടല്ല തടഞ്ഞിട്ടുള്ളത്. അതിനാൽ തടയൽ നീക്കം ചെയ്യുവാൻ സാദ്ധ്യമല്ല. അതിനെ $2ന്റെ ഭാഗമായുള്ള റേഞ്ചിൽ ആണ്‌ തടഞ്ഞിട്ടുള്ളത്. അത് ഒഴിവാക്കാവുന്നതാണ്.',
'ip_range_invalid' => 'അസാധുവായ ഐ.പി. റേഞ്ച്.',
+'ip_range_toolarge' => 'പരിധി നിശ്ചയിച്ചുള്ള തടയലുകൾ /$1 എന്നതിലും കൂടുതലാകാൻ അനുവദിക്കുന്നില്ല.',
'blockme' => 'എന്നെ തടയുക',
'proxyblocker' => 'പ്രോക്സി തടയൽ',
'proxyblocker-disabled' => 'ഈ പ്രക്രിയ അനുവദനീയമല്ല.',
@@ -2117,6 +2423,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'sorbsreason' => '{{SITENAME}} ഉപയോഗിക്കുന്ന DNSBL ൽ താങ്കളുടെ ഐ.പി. വിലാസം ഒരു ഓപ്പൺ പ്രോക്സിയായാണു രേഖപ്പെടുത്തിട്ടുള്ളത്.',
'sorbs_create_account_reason' => '{{SITENAME}} ഉപയോഗിക്കുന്ന DNSBL ൽ താങ്കളുടെ ഐ.പി. വിലാസം ഒരു ഓപ്പൺ പ്രോക്സിയായാണു രേഖപ്പെടുത്തിട്ടുള്ളത്. താങ്കൾക്ക് അംഗത്വമെടുക്കാൻ സാദ്ധ്യമല്ല.',
'cant-block-while-blocked' => 'താങ്കൾ തടയപ്പെട്ടിരിക്കുമ്പോൾ മറ്റുപയോക്താക്കളെ തടയാൻ താങ്കൾക്ക് സാധിക്കില്ല.',
+'cant-see-hidden-user' => 'താങ്കൾ തടയാൻ ശ്രമിക്കുന്ന ഉപയോക്താവ് മുമ്പേ തടയപ്പെടുകയും മറയ്ക്കപ്പെടുകയും ചെയ്യപ്പെട്ടതാണ്. താങ്കൾക്ക് ഉപയോക്താവിനെ മറയ്ക്കാനുള്ള അവകാശം ഇല്ലെങ്കിൽ, ഉപയോക്താവിനെതിരെ ഉള്ള തടയൽ കാണാനോ തിരുത്താനോ കഴിയുന്നതല്ല.',
# Developer tools
'lockdb' => 'ഡാറ്റാബേസ് ബന്ധിക്കുക',
@@ -2163,6 +2470,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
അത്തരം സന്ദർഭങ്ങളിൽ സം‌വാദം താളുകൾ താങ്കൾ സ്വയം കൂട്ടിച്ചേർക്കേണ്ടതാണ്.",
'movearticle' => 'മാറ്റേണ്ട താൾ',
+'moveuserpage-warning' => "'''മുന്നറിയിപ്പ്:''' ഉപയോക്താവിനുള്ള താളാണ് താങ്കൾ മാറ്റാൻ പോകുന്നത്. താൾ മാത്രമേ മാറുകയുള്ളു എന്നും ഉപയോക്താവിന്റെ പേര് ''മാറുകയില്ലെന്നും'' ദയവായി ഓർക്കുക.",
'movenologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
'movenologintext' => 'തലക്കെട്ടു മാറ്റാനുള്ള അനുമതി കൈവരിക്കാൻ താങ്കൾ ഒരു രജിസ്റ്റേർഡ് ഉപയോക്താവായിരിക്കുകയും [[Special:UserLogin|ലോഗിൻ ചെയ്തിരിക്കുകയും]] ചെയ്യേണ്ടത് അത്യന്താപേക്ഷിതമാണ്‌.',
'movenotallowed' => 'താളുകളുടെ തലക്കെട്ടു മാറ്റുവാനുള്ള അനുവാദം താങ്കൾക്കില്ല.',
@@ -2173,7 +2481,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'move-watch' => 'ഈ താളിലെ മാറ്റങ്ങൾ ശ്രദ്ധിക്കുക',
'movepagebtn' => 'താൾ മാറ്റുക',
'pagemovedsub' => 'തലക്കെട്ടു മാറ്റം വിജയിച്ചിരിക്കുന്നു',
-'movepage-moved' => '\'\'\'"$1" എന്ന ലേഖനം "$2" എന്ന തലക്കെട്ടിലേക്ക് മാറ്റിയിരിക്കുന്നു\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" എന്ന ലേഖനം "$2" എന്ന തലക്കെട്ടിലേക്ക് മാറ്റിയിരിക്കുന്നു\'\'\'',
'movepage-moved-redirect' => 'ഒരു തിരിച്ചുവിടൽ സൃഷ്ടിച്ചിരിക്കുന്നു.',
'movepage-moved-noredirect' => 'തിരിച്ചുവിടലിന്റെ സൃഷ്ടി ഒതുക്കിയിരിക്കുന്നു.',
'articleexists' => 'ഈ പേരിൽ മറ്റൊരു താൾ ഉള്ളതായി കാണുന്നു, അല്ലെങ്കിൽ താങ്കൾ തിരഞ്ഞെടുത്ത തലക്കെട്ട് സ്വീകാര്യമല്ല. ദയവായി മറ്റൊരു തലക്കെട്ട് തിരഞ്ഞെടുക്കുക.',
@@ -2214,6 +2522,12 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'imageinvalidfilename' => 'പ്രമാണത്തിനു ലക്ഷ്യമിട്ട പേര് അസാധുവാണ്',
'fix-double-redirects' => 'പഴയ തലക്കെട്ടിലേക്കുള്ള തിരിച്ചുവിടൽ താളുകളും ഇതോടൊപ്പം പുതുക്കുക',
'move-leave-redirect' => 'പിന്നിൽ ഒരു തിരിച്ചുവിടൽ നിലനിർത്തുക',
+'protectedpagemovewarning' => "'''മുന്നറിയിപ്പ്:''' കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം മാറ്റാൻ കഴിയുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
+'semiprotectedpagemovewarning' => "'''കുറിപ്പ്:''' അംഗത്വമെടുത്ത ഉപയോക്താക്കൾക്കു മാത്രം മാറ്റാൻ കഴിയുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
+'move-over-sharedrepo' => '==പ്രമാണം നിലനിൽക്കുന്നുണ്ട്==
+പങ്ക് ‌‌വെച്ചുപയോഗിക്കുന്ന ശേഖരണിയൊന്നിൽ [[:$1]] നിലനിൽക്കുന്നു. ഈ തലക്കെട്ടിലേയ്ക്ക് ഒരു പ്രമാണത്തെ മാറ്റുന്നത് പങ്ക് വെച്ചുപയോഗിക്കുന്ന പ്രമാണത്തെ അതിലംഘിക്കുന്നതാണ്.',
+'file-exists-sharedrepo' => 'താങ്കൾ തിരഞ്ഞെടുത്ത പ്രമാണ നാമം പങ്ക് വെയ്ക്കപ്പെട്ടുപയോഗിക്കുന്ന റെപ്പോസിറ്ററിയിൽ ഉപയോഗിക്കുന്നു.
+ദയവായി മറ്റൊരു നാമം സ്വീകരിക്കുക.',
# Export
'export' => 'താളുകൾ കയറ്റുമതി ചെയ്യുക',
@@ -2236,15 +2550,21 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'export-pagelinks' => 'ഉൾപ്പെടുത്തേണ്ട കണ്ണികളുള്ള താളുകളുടെ ആഴം:',
# Namespace 8 related
-'allmessages' => 'സന്ദേശസഞ്ചയം',
-'allmessagesname' => 'പേര്‌',
-'allmessagesdefault' => 'സ്വതേയുള്ള ഉള്ളടക്കം',
-'allmessagescurrent' => 'നിലവിലുള്ള ഉള്ളടക്കം',
-'allmessagestext' => 'ഇത് മീഡിയവിക്കി നാമമേഖലയിൽ ലഭ്യമായ വ്യവസ്ഥാസന്ദേശങ്ങളുടെ ഒരു പട്ടിക ആണ്‌.
+'allmessages' => 'സന്ദേശസഞ്ചയം',
+'allmessagesname' => 'പേര്‌',
+'allmessagesdefault' => 'സ്വതേയുള്ള ഉള്ളടക്കം',
+'allmessagescurrent' => 'നിലവിലുള്ള ഉള്ളടക്കം',
+'allmessagestext' => 'ഇത് മീഡിയവിക്കി നാമമേഖലയിൽ ലഭ്യമായ വ്യവസ്ഥാസന്ദേശങ്ങളുടെ ഒരു പട്ടിക ആണ്‌.
പ്രാമാണികമായ വിധത്തിൽ മീഡിയവിക്കിയുടെ പ്രാദേശീകരണം താങ്കൾ ഉദ്ദേശിക്കുന്നുവെങ്കിൽ ദയവായി [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [http://translatewiki.net translatewiki.net] എന്നീ താളുകൾ സന്ദർശിക്കുക.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ബന്ധിച്ചിരിക്കുന്നതു കാരണം ഈ താൾ ഉപയോഗിക്കുവാൻ സാദ്ധ്യമല്ല.",
-'allmessagesfilter' => 'സന്ദേശങ്ങൾ പേരുപയോഗിച്ചു ഫിൽറ്റർ ചെയ്യുക:',
-'allmessagesmodified' => 'മാറ്റം വരുത്തിയവ മാത്രം പ്രദർശിപ്പിക്കുക',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ബന്ധിച്ചിരിക്കുന്നതു കാരണം ഈ താൾ ഉപയോഗിക്കുവാൻ സാദ്ധ്യമല്ല.",
+'allmessages-filter-legend' => 'അരിപ്പ',
+'allmessages-filter' => 'പുനഃക്രമീകരിച്ച ക്രമത്തിൽ തിരഞ്ഞുവെയ്ക്കുക:',
+'allmessages-filter-unmodified' => 'തിരുത്തപ്പെടാത്തത്',
+'allmessages-filter-all' => 'എല്ലാം',
+'allmessages-filter-modified' => 'തിരുത്തപ്പെട്ടത്',
+'allmessages-prefix' => 'പൂർവ്വപദത്തിനനുസരിച്ച് തിരഞ്ഞുവെയ്ക്കുക:',
+'allmessages-language' => 'ഭാഷ:',
+'allmessages-filter-submit' => 'പോകൂ',
# Thumbnails
'thumbnail-more' => 'വലുതാക്കി കാണിക്കുക',
@@ -2254,6 +2574,9 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'djvu_no_xml' => 'DjVu പ്രമാണത്തിനു വേണ്ടി XML ശേഖരിക്കുവാൻ പറ്റിയില്ല',
'thumbnail_invalid_params' => 'ലഘുചിത്രത്തിനാവശ്യമായ ചരങ്ങൾ അസാധുവാണ്',
'thumbnail_dest_directory' => 'ലക്ഷ്യ ഡയറക്ടറി സൃഷ്ടിക്കുവാൻ സാധിച്ചില്ല',
+'thumbnail_image-type' => 'ചിത്രത്തിന്റെ തരം പിന്തുണക്കപ്പെട്ടതല്ല',
+'thumbnail_gd-library' => 'അപൂർണ്ണമായ ജി.ഡി. ലൈബ്രറി ക്രമീകരണം: ഫങ്ഷൻ $1 ലഭ്യമല്ല',
+'thumbnail_image-missing' => 'പ്രമാണം ലഭ്യമല്ലെന്നു കാണുന്നു: $1',
# Special:Import
'import' => 'താളുകൾ ഇറക്കുമതി ചെയ്യുക',
@@ -2321,6 +2644,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'tooltip-ca-viewsource' => 'ഈ താൾ സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. താങ്കൾക്ക് ഈ താളിന്റെ മൂലരൂപം കാണാവുന്നതാണ്‌.',
'tooltip-ca-history' => 'ഈ താളിന്റെ പഴയ പതിപ്പുകൾ.',
'tooltip-ca-protect' => 'ഈ താൾ സം‌രക്ഷിക്കുക',
+'tooltip-ca-unprotect' => 'ഈ താളിന്റെ സംരക്ഷണം ഒഴിവാക്കുക',
'tooltip-ca-delete' => 'ഈ താൾ നീക്കം ചെയ്യുക',
'tooltip-ca-undelete' => 'ഈ താൾ നീക്കം ചെയ്തതിനുമുമ്പ് വരുത്തിയ തിരുത്തലുകൾ പുനഃസ്ഥാപിക്കുക',
'tooltip-ca-move' => 'ഈ താളിന്റെ തലക്കെട്ടു്‌ മാറ്റുക',
@@ -2331,6 +2655,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'tooltip-search-fulltext' => 'ഈ പദത്തിലുള്ള താളുകൾ തേടുക',
'tooltip-p-logo' => 'പ്രധാനതാൾ സന്ദർശിക്കുക',
'tooltip-n-mainpage' => 'പ്രധാനതാൾ സന്ദർശിക്കുക',
+'tooltip-n-mainpage-description' => 'പ്രധാനതാൾ സന്ദർശിക്കുക',
'tooltip-n-portal' => 'പദ്ധതി താളിനെക്കുറിച്ച്, താങ്കൾക്കെന്തൊക്കെ ചെയ്യാം, കാര്യങ്ങൾ എവിടെനിന്ന് കണ്ടെത്താം',
'tooltip-n-currentevents' => 'സമകാലീനസംഭവങ്ങളുടെ പശ്ചാത്തലം അന്വേഷിക്കുക',
'tooltip-n-recentchanges' => 'വിക്കിയിലെ സമീപകാലമാറ്റങ്ങൾ',
@@ -2369,9 +2694,11 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
# Stylesheets
'common.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. എല്ലാ ദൃശ്യരൂപങ്ങൾക്കും ബാധകമായിരിക്കും */',
+'vector.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. വെക്റ്റർ ദൃശ്യരൂപത്തിനു ബാധകമായിരിക്കും*/',
# Scripts
'common.js' => '/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് എല്ലാ ഉപയോക്താക്കൾക്കും, എല്ലാ താളുകളിലും പ്രവർത്തിക്കുന്നതായിരിക്കും */',
+'vector.js' => '/*ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് വെക്റ്റർ ദൃശ്യരൂപം ഉപയോഗിക്കുന്ന ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും*/',
# Metadata
'nodublincore' => 'ഡബ്ലിൻ കോർ ആർ.ഡി.എഫ്. മെറ്റാഡേറ്റാ ഈ സെർവറിൽ സജ്ജമല്ല.',
@@ -2381,10 +2708,12 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
# Attribution
'anonymous' => '{{SITENAME}} സംരംഭത്തിലെ അജ്ഞാത {{PLURAL:$1|ഉപയോക്താവ്|ഉപയോക്താക്കൾ}}',
'siteuser' => '{{SITENAME}} ഉപയോക്താവ് $1',
-'lastmodifiedatby' => '$2, $1 നു $3 ആണ്‌ ഈ താൾ അവസാനം പുതുക്കിയത്.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} പദ്ധതിയിലെ അജ്ഞാത ഉപയോക്താവ് $1',
+'lastmodifiedatby' => '$2, $1 നു $3 ആണ്‌ ഈ താൾ അവസാനം പുതുക്കിയത്.',
'othercontribs' => '$1 നടത്തിയ സൃഷ്ടിയെ അധികരിച്ച്.',
'others' => 'മറ്റുള്ളവർ',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|ഉപയോക്താവ്‌|ഉപയോക്താക്കൾ}} $1',
+'anonusers' => '{{SITENAME}} പദ്ധതിയിലെ അജ്ഞാത {{PLURAL:$2|ഉപയോക്താവ്|ഉപയോക്താക്കൾ}} $1',
'creditspage' => 'താളിനുള്ള കടപ്പാട്',
'nocredits' => 'ഈ താളിന്റെ കടപ്പാട് വിവരങ്ങൾ ലഭ്യമല്ല.',
@@ -2414,6 +2743,7 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'skinname-chick' => 'സുന്ദരി',
'skinname-simple' => 'ലളിതം',
'skinname-modern' => 'നവീനം',
+'skinname-vector' => 'വെക്റ്റർ',
# Math options
'mw_math_png' => 'എപ്പോഴും PNG ആയി പ്രദർശിപ്പിക്കുക',
@@ -2423,11 +2753,24 @@ $1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
'mw_math_modern' => 'ആധുനിക ബ്രൗസറുകൾക്കായി നിർദേശിക്കപ്പെട്ടത്',
'mw_math_mathml' => 'പറ്റുമെങ്കിൽ MathML (പരീക്ഷണാടിസ്ഥാനം)',
+# Math errors
+'math_failure' => 'parse ചെയ്യുവാൻ പരാജയപ്പെട്ടു',
+'math_unknown_error' => 'കാരണമറിയാത്ത പിഴവ്',
+'math_unknown_function' => 'അജ്ഞാതമായ ഫങ്ങ്ഷൻ',
+'math_lexing_error' => 'ലെക്സിങ് പിഴവ്',
+'math_syntax_error' => 'തെറ്റായ പദവിന്യാസം',
+'math_image_error' => 'PNG രൂപത്തിലേയ്ക്കുള്ള മാറ്റം പരാജയപ്പെട്ടു;
+latex, dvips, gs, convert എന്നിവ ശരിയായാണോ ഇൻസ്റ്റോൾ ചെയ്തിരിക്കുന്നതെന്നു പരിശോധിക്കുക',
+'math_bad_tmpdir' => 'math temp ഡയറക്ടറി ഉണ്ടാക്കാനോ അതിലേക്കു എഴുതാനോ സാധിച്ചില്ല',
+'math_bad_output' => 'math output ഡയറക്ടറി ഉണ്ടാക്കാനോ അതിലേക്കു എഴുതാനോ സാധിച്ചില്ല',
+'math_notexvc' => 'പ്രവർത്തനസജ്ജമായ texvc ലഭ്യമല്ല;
+സജ്ജീകരിച്ചെടുക്കാനുള്ള സഹായത്തിനു ദയവായി math/README കാണുക.',
+
# Patrolling
'markaspatrolleddiff' => 'റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക',
'markaspatrolledtext' => 'ഈ താളിൽ റോന്തുചുറ്റിയതായി രേഖപ്പെടുത്തുക',
'markedaspatrolled' => 'റോന്തുചുറ്റിയതായി രേഖപ്പെടുത്തിയിരിക്കുന്നു',
-'markedaspatrolledtext' => "\"'''{{PAGENAME}}'''\" എന്ന താളില്‍ റോന്തുചുറ്റിയതായി രേഖപ്പെടുത്തിയിരിക്കുന്നു",
+'markedaspatrolledtext' => '[[:$1]] എന്ന താളിന്റെ തിരഞ്ഞെടുത്ത നാൾപ്പതിപ്പിൽ റോന്തുചുറ്റിയതായി രേഖപ്പെടുത്തിയിരിക്കുന്നു',
'rcpatroldisabled' => 'പുതിയ മാറ്റങ്ങളുടെ റോന്തുചുറ്റൽ ദുർബലപ്പെടുത്തിയിരിക്കുന്നു',
'rcpatroldisabledtext' => 'പുതിയ മാറ്റങ്ങളുടെ റോന്തുചുറ്റൽ സം‌വിധാനം ദുർബലപ്പെടുത്തിയിരിക്കുകയാണ്‌.',
'markedaspatrollederror' => 'റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക സാധ്യമല്ല',
@@ -2456,12 +2799,9 @@ $1',
'previousdiff' => '← മുൻ‌പത്തെ വ്യത്യാസം',
'nextdiff' => 'അടുത്ത വ്യത്യാസം →',
-# Visual comparison
-'visual-comparison' => 'ദൃഷ്ടിഗോചരമായ താരതമ്യം',
-
# Media information
'mediawarning' => "'''മുന്നറിയിപ്പ്''': ഈ തരത്തിലുള്ള പ്രമാണത്തിൽ വിനാശകാരിയായ കോഡ് ഉണ്ടായേക്കാം. ഇതു തുറക്കുന്നതു താങ്കളുടെ കമ്പ്യൂട്ടറിനു അപകടമായി തീർന്നേക്കാം.",
-'imagemaxsize' => 'ചിത്രത്താളുകളിൽ ചിത്രത്തിന്റെ വലിപ്പം:',
+'imagemaxsize' => "ചിത്രത്തിന്റെ വലിപ്പം:<br />''(പ്രമാണത്തിന്റെ വിവരണ താളുകളിൽ)''",
'thumbsize' => 'ലഘുചിത്രത്തിന്റെ വലിപ്പം:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|താൾ|താളുകൾ}}',
'file-info' => '(പ്രമാണത്തിന്റെ വലിപ്പം: $1, MIME തരം: $2)',
@@ -2470,6 +2810,8 @@ $1',
'svg-long-desc' => '(SVG പ്രമാണം, നാമമാത്രമായ $1 × $2 പിക്സലുകൾ, പ്രമാണത്തിന്റെ വലിപ്പം: $3)',
'show-big-image' => 'പൂർണ്ണ റെസലൂഷൻ',
'show-big-image-thumb' => '<small>ഈ പ്രിവ്യൂവിന്റെ വലിപ്പം: $1 × $2 പിക്സലുകൾ</small>',
+'file-info-gif-looped' => 'പുനരാവർത്തിതം',
+'file-info-gif-frames' => '{{PLURAL:$1|ഒരു ചട്ടം|$1 ചട്ടങ്ങൾ}}',
# Special:NewFiles
'newimages' => 'പുതിയ പ്രമാണങ്ങളുടെ ഗാലറി',
@@ -2500,7 +2842,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'വീതി',
@@ -2611,14 +2953,14 @@ $1',
'exif-unknowndate' => 'തീയ്യതി അജ്ഞാതം',
-'exif-orientation-1' => 'സാധാരണം', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'തിരശ്ചീനമാക്കി', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° തിരിച്ചു', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'കുത്തനെ തിരിച്ചു', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° CCW തിരിക്കുകയും കുത്തനെയാക്കുകയും ചെയ്തു', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° CW തിരിച്ചു', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° CW തിരിക്കുകയും കുത്തനെയാക്കുകയും ചെയ്തു', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° CCW തിരിച്ചു', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'സാധാരണം',
+'exif-orientation-2' => 'തിരശ്ചീനമാക്കി',
+'exif-orientation-3' => '180° തിരിച്ചു',
+'exif-orientation-4' => 'കുത്തനെ തിരിച്ചു',
+'exif-orientation-5' => '90° CCW തിരിക്കുകയും കുത്തനെയാക്കുകയും ചെയ്തു',
+'exif-orientation-6' => '90° CW തിരിച്ചു',
+'exif-orientation-7' => '90° CW തിരിക്കുകയും കുത്തനെയാക്കുകയും ചെയ്തു',
+'exif-orientation-8' => '90° CCW തിരിച്ചു',
'exif-componentsconfiguration-0' => 'നിലവിലില്ല',
@@ -2720,7 +3062,7 @@ $1',
'exif-gpsmeasuremode-2' => 'ദ്വിമാന അളവ്',
'exif-gpsmeasuremode-3' => 'ത്രിമാന അളവ്',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'കിലോമീറ്റർ/മണിക്കൂർ',
'exif-gpsspeed-m' => 'മൈലുകൾ/മണിക്കൂർ',
'exif-gpsspeed-n' => 'നോട്ടുകൾ (Knots)',
@@ -2739,6 +3081,7 @@ $1',
'watchlistall2' => 'എല്ലാം',
'namespacesall' => 'എല്ലാം',
'monthsall' => 'എല്ലാം',
+'limitall' => 'എല്ലാം',
# E-mail address confirmation
'confirmemail' => 'ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
@@ -2758,13 +3101,13 @@ $1',
'confirmemail_loggedin' => 'താങ്കളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കപ്പെട്ടിരിക്കുന്നു.',
'confirmemail_error' => 'താങ്കളുടെ സ്ഥിരീകരണം സൂക്ഷിച്ചുവയ്ക്കാനുള്ള ശ്രമത്തിനിടയ്ക്ക് എന്തോ പിഴവ് സംഭവിച്ചു.',
'confirmemail_subject' => '{{SITENAME}} ഇമെയിൽ വിലാസ സ്ഥിരീകരണം',
-'confirmemail_body' => '$1 എന്ന ഐപി വിലാസത്തില്‍ നിന്നു (ഒരു പക്ഷെ താങ്കളായിരിക്കാം), "$2" എന്ന പേരോടു കൂടിയും ഈ ഇമെയില്‍ വിലാസത്തോടു കൂടിയും {{SITENAME}} സം‌രംഭത്തില്‍ ഒരു അക്കൗണ്ട് സൃഷ്ടിച്ചിരിക്കുന്നു.
+'confirmemail_body' => '$1 എന്ന ഐ.പി. വിലാസത്തിൽ നിന്നു (ഒരു പക്ഷെ താങ്കളായിരിക്കാം), "$2" എന്ന പേരോടു കൂടിയും ഈ ഇമെയിൽ വിലാസത്തോടു കൂടിയും {{SITENAME}} സം‌രംഭത്തിൽ ഒരു അംഗത്വം സൃഷ്ടിച്ചിരിക്കുന്നു.
-ഈ അക്കൗണ്ട് താങ്കളുടേതാണ്‌ എന്നു സ്ഥിരീകരിക്കുവാനും {{SITENAME}} സം‌രംഭത്തില്‍ ഇമെയിലുമായി ബന്ധപ്പെട്ട സേവനങ്ങള്‍ ഉപയോഗിക്കുവാനും താഴെ കാണുന്ന കണ്ണി ബ്രൗസറില്‍ തുറക്കുക.
+ഈ അംഗത്വം താങ്കളുടേതാണ്‌ എന്നു സ്ഥിരീകരിക്കുവാനും {{SITENAME}} സം‌രംഭത്തിൽ ഇമെയിലുമായി ബന്ധപ്പെട്ട സേവനങ്ങൾ ഉപയോഗിക്കുവാനും താഴെ കാണുന്ന കണ്ണി ബ്രൗസറിൽ തുറക്കുക.
$3
-അക്കൗണ്ട് ഉണ്ടാക്കിയത് താങ്കളല്ലെങ്കില്‍ ഇമെയില്‍ വിലാസ സ്ഥിരീകരണം റദ്ദാക്കുവാന്‍ താഴെയുള്ള കണ്ണി ബ്രൗസറില്‍ തുറക്കുക.
+അംഗത്വം ഉണ്ടാക്കിയത് താങ്കളല്ലെങ്കിൽ ഇമെയിൽ വിലാസ സ്ഥിരീകരണം റദ്ദാക്കുവാൻ താഴെയുള്ള കണ്ണി ബ്രൗസറിൽ തുറക്കുക.
$5
@@ -2860,7 +3203,7 @@ $1',
'duplicate-defaultsort' => '\'\'\'മുന്നറിയിപ്പ്:\'\'\' ക്രമപ്പെടുത്താനുള്ള ചാവിയായ "$2" മുമ്പ് ക്രമപ്പെടുത്താനുള്ള ചാവിയായിരുന്ന "$1" എന്നതിനെ അതിലംഘിക്കുന്നു.',
# Special:Version
-'version' => 'പതിപ്പ്', # Not used as normal message but as header for the special page itself
+'version' => 'പതിപ്പ്',
'version-extensions' => 'ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള അനുബന്ധങ്ങൾ',
'version-specialpages' => 'പ്രത്യേക താളുകൾ',
'version-variables' => 'ചരങ്ങൾ',
@@ -2871,7 +3214,7 @@ $1',
'version-skin-extension-functions' => 'ദൃശ്യരൂപാനുബന്ധങ്ങളുടെ കർത്തവ്യങ്ങൾ',
'version-hook-name' => 'കൊളുത്തിന്റെ പേര്',
'version-hook-subscribedby' => 'വരിക്കാരനായത്',
-'version-version' => 'പതിപ്പ്',
+'version-version' => '(പതിപ്പ് $1)',
'version-license' => 'ലൈസൻസ്',
'version-software' => 'ഇൻസ്റ്റാൾ ചെയ്ത സോഫ്റ്റ്‌വെയർ',
'version-software-product' => 'സോഫ്റ്റ്‌വെയർ ഉല്പ്പന്നം',
@@ -2942,4 +3285,15 @@ $1',
'dberr-outofdate' => 'ഞങ്ങളുടെ ഉള്ളടക്കത്തിന്റെ സൂചികകൾ കാലഹരണപ്പെട്ടതാകാമെന്ന് ഓർക്കുക.',
'dberr-cachederror' => 'ആവശ്യപ്പെട്ട താളിന്റെ കാഷ് ചെയ്യപ്പെട്ട പകർപ്പാണിത്, ഇത് ഇപ്പോഴുള്ളതാകണമെന്നില്ല.',
+# HTML forms
+'htmlform-invalid-input' => 'താങ്കൾ നൽകിയ ചില വിവരങ്ങളിൽ അപാകതകളുണ്ട്',
+'htmlform-select-badoption' => 'താങ്കൾ നൽകിയ വില ഒരു സ്വീകാര്യമായ ഉപാധിയല്ല.',
+'htmlform-int-invalid' => 'താങ്കൾ നൽകിയ വില ഒരു പൂർണ്ണസംഖ്യയല്ല.',
+'htmlform-float-invalid' => 'താങ്കൾ നൽകിയ വില ഒരു അക്കമല്ല.',
+'htmlform-int-toolow' => 'താങ്കൾ നൽകിയത് ഏറ്റവും കുറഞ്ഞ വിലയായ $1-നു താഴെയാണ്',
+'htmlform-int-toohigh' => 'താങ്കൾ നൽകിയത് ഏറ്റവും കൂടിയ വിലയായ $1-നു മുകളിലാണ്',
+'htmlform-submit' => 'സമർപ്പിക്കുക',
+'htmlform-reset' => 'മാറ്റങ്ങൾ വേണ്ട',
+'htmlform-selectorother-other' => 'മറ്റുള്ളവ',
+
);
diff --git a/languages/messages/MessagesMn.php b/languages/messages/MessagesMn.php
index f8c0777c..45cdb43c 100644
--- a/languages/messages/MessagesMn.php
+++ b/languages/messages/MessagesMn.php
@@ -65,6 +65,7 @@ $messages = array(
'tog-enotifminoredits' => 'Хуудсууд бага зэргээр засварлагдахад ч и-мэйл явуулах',
'tog-enotifrevealaddr' => 'Мэдэгдлийн и-мэйлд миний мэйл хаягийг илчлэх',
'tog-shownumberswatching' => 'Харж буй хэрэглэгчдийн тоог үзүүлэх',
+'tog-oldsig' => 'Одоогийн гарын үсгийн урьдчилж харсан байдал:',
'tog-fancysig' => 'Түүхий гарын үсэг (автомат холбоосгүй)',
'tog-externaleditor' => 'Үндсэн горим нь гадны программ ашиглан засварлах (экспертүүдэд зориулагдсан, таны компьютерт тусгай тохиргоо шаардлагатай)',
'tog-externaldiff' => 'Үндсэн горим гадаад харьцуулагч программ ашиглах (экспертүүдэд зориулав, таны компьютерт тусгай тохиргоо шаардлагатай)',
@@ -86,6 +87,13 @@ $messages = array(
'underline-never' => 'Хэзээ ч үгүй',
'underline-default' => 'Вэб хөтөчийн анхны тохиргоо',
+# Font style option in Special:Preferences
+'editfont-style' => 'Засварлах талбарын фонт хэв маяг:',
+'editfont-default' => 'Вэб хөтөчийн анхны тохиргоо',
+'editfont-monospace' => 'Нэг өргөнт фонт',
+'editfont-sansserif' => 'Санс-сериф фонт',
+'editfont-serif' => 'Сериф фонт',
+
# Dates
'sunday' => 'Ням',
'monday' => 'Даваа',
@@ -145,7 +153,7 @@ $messages = array(
'category-media-header' => '"$1" ангилал дахь медиа файлууд',
'category-empty' => "''Одоогийн байдлаар энэ ангилалд хуудас, медиа файл байхгүй байна.''",
'hidden-categories' => '{{PLURAL:$1|Нуугдсан ангилал|Нуугдсан ангиллууд}}',
-'hidden-category-category' => 'Нуугдсан ангиллууд', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Нуугдсан ангиллууд',
'category-subcat-count' => '{{PLURAL:$2|Энэ ангилалд дараах дэд ангилал л байна.|Энэ ангилалд нийт $2-с $1 дэд ангилал байна.}}',
'category-subcat-count-limited' => 'Энэ ангилалд {{PLURAL:$1| дэд ангилал|$1-н дэд ангилалууд}} байна.',
'category-article-count' => '{{PLURAL:$2|Энэ ангилалд дараах хуудас л байна.|Энэ ангилалд нийт $2-с дараах $1 хуудас байна.}}',
@@ -162,10 +170,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаВикигийн тогтмол тавигддаг асуултууд]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикигийн мэдээний мэйл явуулах жагсаалт]',
-'about' => 'Тухай',
-'article' => 'Өгүүлэл',
-'newwindow' => '(шинэ цонх нээгдэнэ)',
-'cancel' => 'Цуцлах',
+'about' => 'Тухай',
+'article' => 'Өгүүлэл',
+'newwindow' => '(шинэ цонх нээгдэнэ)',
+'cancel' => 'Цуцлах',
+'moredotdotdot' => 'Дэлгэрэнгүй...',
+'mypage' => 'Миний хуудас',
+'mytalk' => 'Миний яриа',
+'anontalk' => 'Энэ IP-н яриа',
+'navigation' => 'Залуурдлага',
+'and' => '&#32;ба',
+
+# Cologne Blue skin
'qbfind' => 'Хайх',
'qbbrowse' => 'Дэлгэх',
'qbedit' => 'Засварлах',
@@ -173,15 +189,35 @@ $messages = array(
'qbpageinfo' => 'Агуулга',
'qbmyoptions' => 'Миний хуудсууд',
'qbspecialpages' => 'Тусгай хуудсууд',
-'moredotdotdot' => 'Дэлгэрэнгүй...',
-'mypage' => 'Миний хуудас',
-'mytalk' => 'Миний яриа',
-'anontalk' => 'Энэ IP-н яриа',
-'navigation' => 'Залуурдлага',
-'and' => '&#32;ба',
-
-# Metadata in edit box
-'metadata_help' => 'Зургийн тухай мэдээлэл:',
+'faq' => 'Тогтмол тавигддаг асуултууд',
+'faqpage' => 'Project:Тогтмол тавигддаг асуултууд',
+
+# Vector skin
+'vector-action-addsection' => 'Сэдэв нэмэх',
+'vector-action-delete' => 'Устгах',
+'vector-action-move' => 'Зөөх',
+'vector-action-protect' => 'Хамгаалах',
+'vector-action-undelete' => 'Үл устгах',
+'vector-action-unprotect' => 'Үл хамгаалах',
+'vector-namespace-category' => 'Ангилал',
+'vector-namespace-help' => 'Тусламжийн хуудас',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Хуудас',
+'vector-namespace-media' => 'Медиа хуудас',
+'vector-namespace-mediawiki' => 'Мессеж',
+'vector-namespace-project' => 'Төслийн хуудас',
+'vector-namespace-special' => 'Тусгай хуудас',
+'vector-namespace-talk' => 'Хэлэлцүүлэг',
+'vector-namespace-template' => 'Загвар',
+'vector-namespace-user' => 'Хэрэглэгчийн хуудас',
+'vector-view-create' => 'Үүсгэх',
+'vector-view-edit' => 'Засварлах',
+'vector-view-history' => 'Түүхийг үзэх',
+'vector-view-view' => 'Унших',
+'vector-view-viewsource' => 'Кодыг харах',
+'actions' => 'Үйлдлүүд',
+'namespaces' => 'Нэрний зайнууд',
+'variants' => 'Хувилбарууд',
'errorpagetitle' => 'Aлдаа',
'returnto' => '$1 руу буцах.',
@@ -231,18 +267,22 @@ $messages = array(
'otherlanguages' => 'Өөр хэлээр',
'redirectedfrom' => '($1-с чиглүүлэгдэв)',
'redirectpagesub' => 'Хуудсыг чиглүүлэх',
-'lastmodifiedat' => 'Энэ хуудсыг хамгийн сүүлд өөрчилсөн нь $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Энэ хуудсыг хамгийн сүүлд өөрчилсөн нь $2, $1.',
'viewcount' => 'Энэ хуудсанд {{PLURAL:$1|ганцхан удаа|$1 удаа}} хандсан байна.',
'protectedpage' => 'Хамгаалагдсан хуудас',
'jumpto' => 'Шууд очих:',
'jumptonavigation' => 'залуурдлага',
'jumptosearch' => 'хайлт',
+'view-pool-error' => 'Уучлаарай, серверүүд хэт их ачааллагдсан байна.
+Энэ хуудсыг хэт олон хэрэглэгч харах гэж оролдож байна.
+Дахин энэ хуудаст хандахынхаа өмнө түр хугацаагаар хүлээнэ үү.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}-н тухай',
'aboutpage' => 'Project:Тухай',
'copyright' => 'Агуулгыг $1-н хувьд хэрэглэх боломжтой.',
-'copyrightpagename' => '{{SITENAME}}-н зохиогчийн эрх',
'copyrightpage' => '{{ns:project}}:Зохиогчийн эрх',
'currentevents' => 'Сүүлийн үеийн мэдээ',
'currentevents-url' => 'Project:Сүүлийн үеийн мэдээ',
@@ -250,8 +290,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ерөнхий татгалзал',
'edithelp' => 'Засвар хийх тухай тусламж',
'edithelppage' => 'Help:Засварлах',
-'faq' => 'Тогтмол тавигддаг асуултууд',
-'faqpage' => 'Project:Тогтмол тавигддаг асуултууд',
'helppage' => 'Help:Агуулга',
'mainpage' => 'Нүүр хуудас',
'mainpage-description' => 'Нүүр хуудас',
@@ -331,10 +369,6 @@ $messages = array(
"$2" функц доторх:
"$1" байна.
Өгөгдлийн сан нь "$3: $4" алдааг буцаав',
-'noconnect' => 'Уучлаарай! Викид гарсан техникийн саатлын улмаас өгөгдлийн сангийн серверт холбогдохгүй байна.<br />
-$1',
-'nodb' => '$1 мэдээллийн санг сонгож чадсангүй',
-'cachederror' => 'Дараах нь таны хүссэн хуудасны нөөц хуулбар тул хамгийн шинэ хувилбар биш байх магадлалтай.',
'laggedslavemode' => 'Анхаар: Энэ хуудас нь хамгийн сүүлийн өөрчлөлтүүдийг хамруулаагүй байж болно.',
'readonly' => 'Мэдээллийн сан түгжигдсэн байна',
'enterlockreason' => 'Түгжих болсон шалтгаан болон хэзээ уг түгжээ нь тайлагдах тухай оруулна уу.',
@@ -352,6 +386,7 @@ $1',
'readonly_lag' => 'Хоёрдогч серверүүд анхдагчдаа гүйцэж ирэх хүртэл мэдээллийн санг автоматаар түгжлээ.',
'internalerror' => 'Дотоод алдаа',
'internalerror_info' => 'Дотоод алдаа: $1',
+'fileappenderror' => '"$1"-г "$2-нд нэмж чадсангүй.',
'filecopyerror' => 'Файлыг "$1"-с "$2" руу хуулж чадсангүй.',
'filerenameerror' => 'Файлын нэрийг "$1"-с "$2" болгон өөрчилж чадсангүй.',
'filedeleteerror' => '"$1" файлыг устгаж чадсангүй.',
@@ -396,7 +431,6 @@ $2',
'virus-unknownscanner' => 'үл мэдэгдэх антивирус:',
# Login and logout pages
-'logouttitle' => 'Гарах',
'logouttext' => "'''Та одоо гарлаа.'''
Та ямар нэг хэрэглэгчийн бүртгэлгүйгээр {{SITENAME}}-г ашиглах боломжтой, эсвэл саяынхаа болон өөр хэрэглэгчийн бүртгэлээ ашиглан [[Special:UserLogin|дахин нэвтэрч]] болно.
@@ -404,7 +438,6 @@ $2',
'welcomecreation' => '= $1, тавтай морилно уу! ==
Та амжилттай бүртгэгдлээ.
[[Special:Preferences|{{SITENAME}}-н тохиргоогоо]] өөрчлөхөө мартуузай.',
-'loginpagetitle' => 'Хэрэглэгч нэвтрэх',
'yourname' => 'Хэрэглэгчийн нэр:',
'yourpassword' => 'Нууц үг:',
'yourpasswordagain' => 'Нууц үгээ дахин оруулах:',
@@ -415,6 +448,7 @@ $2',
'nav-login-createaccount' => 'Нэвтрэх / Бүртгүүлэх',
'loginprompt' => 'Та {{SITENAME}}-д нэвтрэхийн тулд күүкинүүд ашигладах хэрэгтэй.',
'userlogin' => 'Нэвтрэх / Бүртгүүлэх',
+'userloginnocreate' => 'Нэвтрэх',
'logout' => 'Гарах',
'userlogout' => 'Гарах',
'notloggedin' => 'Нэвтрээгүй байна',
@@ -427,29 +461,7 @@ $2',
'badretype' => 'Таны оруулсан хоёр нууц үг таарахгүй байна.',
'userexists' => 'Хэрэглэгчийн нэр ашиглагдаж байна.
Өөр нэр сонгоно уу.',
-'youremail' => 'Мэйл хаяг:',
-'username' => 'Хэрэглэгчийн нэр:',
-'uid' => 'Хэрэглэгчийн ID:',
-'prefs-memberingroups' => 'Дараах {{PLURAL:$1|бүлгийн|бүлгүүдийн}} гишүүн:',
-'yourrealname' => 'Жинхэнэ нэр:',
-'yourlanguage' => 'Хэл:',
-'yourvariant' => 'Вариант',
-'yournick' => 'Дуудах нэр (хоч):',
-'badsig' => 'Хүчингүй гарын үсэг байна; HTML тагуудаа шалгаж үзнэ үү.',
-'badsiglength' => 'Таны хоч нэр хэтэрхий урт байна.
-$1 тэмдэгтээс богино байх ёстой.',
-'yourgender' => 'Хүйс:',
-'gender-unknown' => 'Тодорхойгүй',
-'gender-male' => 'Эр',
-'gender-female' => 'Эм',
-'prefs-help-gender' => 'Заавал биш: прорамм хангамж таньд хандахдаа зөв хүйсний үгсийг хэрэглэнэ.
-Энэ мэдээлэл нийтэд нээлттэй байх болно.',
-'email' => 'Мэйл хаяг',
-'prefs-help-realname' => 'Жинхэнэ нэрээ заавал оруулах албагүй бөгөөд оруулбал таны хийсэн бүтээлийг түүгээр хаяглана.',
'loginerror' => 'Нэвтрэхэд алдаа гарлаа',
-'prefs-help-email' => 'Мэйл хаягаа заавал оруулах албагүй ч оруулснаар нууц үгээ мартвал шинэ нууц үгийг мэйлээр тань явуулах болно.
-Мөн өөрийгөө таниулалгүйгээр таны хэрэглэгчийн эсвэл ярианы хуудсаар бусад хэрэглэгч таньтай харилцах боломжтой.',
-'prefs-help-email-required' => 'Мэйл хаяг шаардлагатай байна.',
'nocookiesnew' => 'Таны хэрэглэгчийн бүртгэл үүсгэгдсэн боловч нэвтрээгүй байна.
{{SITENAME}}-д холбогдоход күүкиг хэрэглэдэг.
Та күүкиг идэвхижүүлээгүй байна.
@@ -468,8 +480,9 @@ $1 тэмдэгтээс богино байх ёстой.',
'nouserspecified' => 'Та хэрэглэгчийн нэрээ зааж өгөх хэрэгтэй.',
'wrongpassword' => 'Нууц үгээ буруу оруулсан байна. Дахин оролдоно уу.',
'wrongpasswordempty' => 'Хоосон нууц үг оруулсан байна. Дахин оруулна уу.',
-'passwordtooshort' => 'Таны нууц үг буруу эсвэл хэт богино байна.
-Хамгийн багадаа {{PLURAL:$1|1 тэмдэгттэй|$1 тэмдэгттэй}} байх ба таны бүртгүүлсэн нэрнээс өөр байх ёстой.',
+'passwordtooshort' => 'Таны нууц үг хэт богино байна.
+Хамгийн багадаа {{PLURAL:$1|1 үсэгтэй|$1 үсэгтэй}} байх ёстой.',
+'password-name-match' => 'Таны нууц үг хэрэглэгчийн нэрнээс ялгаатай байх ёстой.',
'mailmypassword' => 'Мэйл хаягаар шинэ нууц үгийг илгээ',
'passwordremindertitle' => '{{SITENAME}}-д нэвтрэх түр зуурын шинэ нууц үг',
'passwordremindertext' => 'Хэн нэгэн (магадгүй та, IP хаяг нь $1) {{SITENAME}} ($4) хуудсанд нэвтрэх шинэ нууц үг явуулах хүсэлтийг тавьсан байна. Түр нууц үг "$3" хэрэглэгч "$2"-д олгогдлоо.
@@ -516,8 +529,6 @@ $1 тэмдэгтээс богино байх ёстой.',
'retypenew' => 'Шинэ нууц үгээ дахин оруулах:',
'resetpass_submit' => 'Нууц үгээ тогтоож нэвтрэх',
'resetpass_success' => 'Таны нууц үг амжилттай солигдлоо! Та одоо нэвтэрч байна...',
-'resetpass_bad_temporary' => 'Хүчингүй түр зуурын нууц үг байна.
-Та аль хэдийнээ нууц үгээ сольсон, эсвэл шинэ түр зуурын нууц үг авах хүсэлтийг тавьсан байж магадгүй.',
'resetpass_forbidden' => 'Нууц үг өөрчлөх боломжгүй',
'resetpass-no-info' => 'Энэ хуудсыг шууд үзэхийн тулд нэвтэрч орсон байх шаардлагатай.',
'resetpass-submit-loggedin' => 'Нууц үгээ солих',
@@ -597,7 +608,6 @@ $1 тэмдэгтээс богино байх ёстой.',
'blockededitsource' => "Таны '''$1'''-д хийж байгаа '''засваруудын''' текстийг доор үзүүлэв:",
'whitelistedittitle' => 'Засварлахын тулд нэвтрэх шаардлагатай',
'whitelistedittext' => 'Хуудсуудад засвар хийхийн тулд та урьдаар $1 хэрэгтэй.',
-'confirmedittitle' => 'Засварлахын тулд мэйлийн баталгаа шаардлагатай',
'confirmedittext' => 'Та хуудсуудыг засварлахдаа мэйл хаягаа баталгаажуулах хэрэгтэй.
[[Special:Preferences|Хэрэглэгчийн тохиргоо]] хэсэгт өөрийнхөө мэйл хаягийг оруулж, баталгаажуулна уу.',
'nosuchsectiontitle' => 'Хэсэг олдсонгүй',
@@ -627,7 +637,8 @@ $1 тэмдэгтээс богино байх ёстой.',
'''Конкерор: ''' ''Reload'' товч дээр дар, эсвэл ''F5''-г дар;
'''Опера:''' ''Tools→Preferences'' дээр хийсвэр санах ойг бүрэн арилгах;
'''Интернэт Эксплорер:''' ''Ctrl'' -г дарж байхдаа ''Refresh'' дээр дар, эсвэл ''Ctrl-F5'' гэж дар.",
-'usercssjsyoucanpreview' => "'''Зөвлөгөө:''' 'Урьдчилан харах' товчийг ашиглан та өөрийн шинэ CSS/ЖаваСкриптийг хадгалахаасаа өмнө шалгах боломжтой.",
+'usercssyoucanpreview' => "'''Зөвлөгөө:''' 'Урьдчилан харах' товчийг ашиглан та өөрийн шинэ CSS/ЖаваСкриптийг хадгалахаасаа өмнө шалгах боломжтой.",
+'userjsyoucanpreview' => "'''Зөвлөгөө:''' 'Урьдчилан харах' товчийг ашиглан та өөрийн шинэ ЖаваСкриптийг хадгалахаасаа өмнө шалгах боломжтой.",
'usercsspreview' => "'''Та өөрийн хэрэглэгчийн CSS-г зөвхөн урьдчилан харж байгаа гэдгээ санаарай.'''
'''Хараахан хадгалагдаагүй байгаа гэдгийг анхаарна уу!'''",
'userjspreview' => "'''Та өөрийн хэрэглэгчийн ЖаваСкриптийг зөвхөн урьдчилан харж байгаа бөгөөд энэ нь хараахан хадгалагдаагүй байгаа гэдгийг анхаарна уу!'''",
@@ -681,8 +692,8 @@ $1 тэмдэгтээс богино байх ёстой.',
'semiprotectedpagewarning' => "'''Анхаар''': Энэ хуудас нь зөвхөн бүртгэгдсэн хэрэглэгчид л засварлаж болохоор түгжигдсэн байна.",
'cascadeprotectedwarning' => "'''Анхаар''': Энэ хуудас нь зөвхөн системийн операторууд л засварлаж болохоор түгжигдсэн байна. Учир нь энэ хуудас дараах давхар хамгаалалттай {{PLURAL:$1|хуудаст|хуудсуудад}} оржээ:",
'titleprotectedwarning' => "'''АНХААР: Энэ хуудсыг үүсгэхийн тулд [[Special:ListGroupRights|тодорхой эрхүүд]] шаардлагатай.'''",
-'templatesused' => 'Энэ хуудсанд ашиглагдаж буй загварууд:',
-'templatesusedpreview' => 'Энэ урьдчилж харсан байдалд ашиглагдаж буй загварууд:',
+'templatesused' => 'Энэ хуудсанд ашиглагдсан {{PLURAL:$1|загвар|загварууд}}:',
+'templatesusedpreview' => 'Дараах параметр ашиглагдаагүй: $1',
'templatesusedsection' => 'Энэ хэсэгт ашиглагдаж буй загварууд:',
'template-protected' => '(хамгаалагдсан)',
'template-semiprotected' => '(хагас-хамгаалагдсан)',
@@ -695,13 +706,13 @@ $1 тэмдэгтээс богино байх ёстой.',
'permissionserrors' => 'Зөвшөөрлүүдийн алдаанууд',
'permissionserrorstext' => 'Таньд үүнийг хийх зөвшөөрөл байхгүй байна. {{PLURAL:$1|Шалтгаан|Шалтгаанууд}} нь:',
'permissionserrorstext-withaction' => 'Дараах {{PLURAL:$1|шалтгааны|шалтгаануудын}} улмаас таньд $2 эрх байхгүй байна:',
-'recreate-deleted-warn' => "'''Анхаар: Та өмнө нь устгагдсан хуудсыг дахин үүсгэх гэж байна.'''
+'recreate-moveddeleted-warn' => "'''Анхаар: Та өмнө нь устгагдсан хуудсыг дахин үүсгэх гэж байна.'''
-Та энэ хуудсанд засвар хийх нь зүйтэй юу гэж бодох хэрэгтэй.
-Энэ хуудасны устгалын лог хэрэг болж магадгүй тул доор байна:",
-'deleted-notice' => 'Энэ хуудас устгагдсан байна.
-Лавлагааны зориулалтаар тухайн хуудасны устгалын лог доор тавигдсан байгаа.',
-'deletelog-fulllog' => 'Бүтэн логийг үзэх',
+Та энэ хуудсанд дахин засвар хийх нь зүйтэй юу гэж бодох хэрэгтэй.
+Энэ хуудасны устгалын ба зөөлтийн лог хэрэг болж магадгүй тул доор тавигдсан байгаа:",
+'moveddeleted-notice' => 'Энэ хуудас устгагдсан байна.
+Лавлагааны зориулалтаар тухайн хуудасны устгалын ба зөөлтийн лог доор тавигдсан байгаа.',
+'log-fulllog' => 'Бүтэн логийг үзэх',
'edit-hook-aborted' => 'Хүк засварыг зогсоолоо.
Шалтгаан өгөгдсөнгүй.',
'edit-gone-missing' => 'Хуудсыг шинэчилж чадсангүй.
@@ -742,8 +753,9 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'viewpagelogs' => 'Энэ хуудасны логийг үзэх',
'nohistory' => 'Хуудсанд засвар хийсэн түүх байхгүй байна.',
'currentrev' => 'Одоогийн засвар',
+'currentrev-asof' => '$1-ий байдлаарх одоогийн засвар',
'revisionasof' => '$1-ий байдлаарх засвар',
-'revision-info' => '$1-ий байдлаарх $2 хэрэглэгчийн хийсэн засвар', # Additionally available: $3: revision id
+'revision-info' => '$1-ий байдлаарх $2 хэрэглэгчийн хийсэн засвар',
'previousrevision' => '←Хуучны засвар',
'nextrevision' => 'Дараагийн засвар→',
'currentrevisionlink' => 'Одоогийн засвар',
@@ -756,7 +768,6 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
Тэмдэг: (одоогийн) = одоогийн засвартай харьцуулах
(сүүлчийн) = өмнөх засвартай харьцуулах, Б = бага зэргийн засвар',
'history-fieldset-title' => 'Түүх сөхөе',
-'deletedrev' => '[устгагдсан]',
'histfirst' => 'Эхний',
'histlast' => 'Сүүлийн',
'historysize' => '($1 байт)',
@@ -765,7 +776,7 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
# Revision feed
'history-feed-title' => 'Засварын түүх',
'history-feed-description' => 'Вики дэх энэ хуудасны засварын түүх',
-'history-feed-item-nocomment' => '$2 дээрх $1', # user at time
+'history-feed-item-nocomment' => '$2 дээрх $1',
'history-feed-empty' => 'Таны үзэх гэсэн хуудас байхгүй байна.
Викигээс устгагдсан юмуу нэр нь өөрчлөгдсөн байж магадгүй.
[[Special:Search|Викид хайлт хийж]] үзнэ үү.',
@@ -774,10 +785,23 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'rev-deleted-comment' => '(товч агуулгын тухай мэдээлэл арилгагдсан байна)',
'rev-deleted-user' => '(хэрэглэгчийн нэр арилгагдсан байна)',
'rev-deleted-event' => '(логийн үйлдэл арилгагдсан байна)',
-'rev-deleted-text-permission' => 'Энэ хуудасны засвар нийтийн архиваас арилгагдсан байна.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.',
-'rev-deleted-text-view' => 'Энэ хуудасны засвар нийтийн архиваас арилгагдсан байна. Та {{SITENAME}}-д администратор учраас харах боломжтой;
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.',
+'rev-deleted-text-permission' => "Энэ хуудасны засвар '''устгагдсан'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
+'rev-deleted-text-unhide' => "Энэ хуудасны засвар '''устгагдсан байна'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
+Администраторын хувьд та хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
+'rev-suppressed-text-unhide' => "Энэ хуудасны засвар '''далдлагдсан байна'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Далдлагааны логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
+Администраторын хувьд та хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
+'rev-deleted-text-view' => "Энэ хуудасны засвар '''устгагдсан'''.
+Администраторын хувьд та харах боломжтой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
+'rev-suppressed-text-view' => "Энэ хуудасны засвар '''далдлагдсан'''.
+Администраторын хувьд та харах боломжтой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} далдлагааны логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
+'rev-deleted-no-diff' => "Аль нэг засвар нь '''устгагдсан''' тул та ялгааг үзэх боломжгүй байна.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
+'rev-deleted-unhide-diff' => "Ялгааны аль нэг засвар '''устгагдсан''' байна.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
+Администраторын хувьд та хүсвэл [$1 энэ ялгааг] үзэх боломжтой.",
'rev-delundel' => 'үзүүлэх/нуух',
'revisiondelete' => 'Засваруудыг устгах/сэргээх',
'revdelete-nooldid-title' => 'Зорьсон засвар байхгүй байна',
@@ -786,19 +810,21 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'revdelete-nologtype-text' => 'Энэ үйлдлийг хийх логийн төрөл өгөгдөөгүй байна.',
'revdelete-nologid-title' => 'Хүчингүй логийн бүртгэл',
'revdelete-nologid-text' => 'Та энэ функцийг хийх логийн үйл явдлыг тусгаж өгөөгүй, эсвэл тусгаж өгсөн бүртгэл байхгүй байна.',
+'revdelete-no-file' => 'Өгөгдсөн файл байхгүй байна.',
+'revdelete-show-file-confirm' => '$2-ий $3 дахь "<nowiki>$1</nowiki>" файлын устгагдсан засварыг үзмээр байгаадаа итгэлтэй байна уу?',
+'revdelete-show-file-submit' => 'Тийм',
'revdelete-selected' => "'''[[:$1]]-н {{PLURAL:$2|сонгосон засвар|сонгосон засварууд}}:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Сонгосон логийн үйл явдал|Сонгосон логийн үйл явдлууд}}:'''",
-'revdelete-text' => "'''Устгагдсан засварууд ба үйл явдлууд нь хуудасны түүх болон логуудад харагдах боловч агуулгынх нь зарим хэсгүүд нийтэд үл үзэгдэнэ.'''
-
-Нуугдсан агуулга нь {{SITENAME}}-н бусад администраторуудад харагдах бөгөөд, нэмэлт хязгааруудууд тавигдахгүй бол дахин сэргээгдэх боломжтой.",
+'revdelete-text' => "'''Устгагдсан засварууд ба үйл явдлууд нь хуудасны түүх болон логт харагдах хэвээр үлдэх ч эдгээрийн зарим агуулга нийтэд үл харагдана.'''
+Давхар хязгаарууд тавигдаагүй тохиолдолд {{SITENAME}}-н бусад администраторууд нуугдсан агуулгыг энэ талбараар харж үл арилгах боломжтой хэвээр үлдэнэ.",
'revdelete-legend' => 'Харагдах байдалд хязгаар тавих',
'revdelete-hide-text' => 'Засварын текстийг нуух',
+'revdelete-hide-image' => 'Файлын агуулыг нуух',
'revdelete-hide-name' => 'Объект ба түүнд хийсэн үйлдлийг нуух',
'revdelete-hide-comment' => 'Засварын товч агуулгыг нуух',
'revdelete-hide-user' => 'Засварлагчийн хэрэглэгчийн нэр/IP хаягийг нуух',
'revdelete-hide-restricted' => 'Администраторууд болон бусдаас энэ мэдээллийг далдлах',
'revdelete-suppress' => 'Системийн операторууд болон бусдаас мэдээллийг нууцлах',
-'revdelete-hide-image' => 'Файлын агуулыг нуух',
'revdelete-unsuppress' => 'Сэргээгдсэн засварууд дахь хязгаарлалтуудыг авч хаях',
'revdelete-log' => 'Шалтгаан:',
'revdelete-submit' => 'Сонгосон засварт үйлчлүүлэх',
@@ -818,6 +844,7 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'revdelete-unhid' => 'нууцлахаа болиулсан $1',
'revdelete-log-message' => '$2 засварт $1',
'logdelete-log-message' => '$2 үйл явдалд $1',
+'revdelete-edit-reasonlist' => 'Устгах шалтгаануудыг засварлах',
# Suppression log
'suppressionlog' => 'Хязгаарлалтын лог',
@@ -859,63 +886,8 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'difference' => '(Засварууд хоорондын ялгаа)',
'lineno' => '$1-р мөр:',
'compareselectedversions' => 'Сонгосон хувилбаруудыг харьцуулах',
-'visualcomparison' => 'Үзэгдэх байдлаар харьцуулах',
-'wikicodecomparison' => 'Викитекстийг харьцуулах',
'editundo' => 'цуцлах',
'diff-multi' => 'Завсрын $1 засварыг үзүүлээгүй байна.',
-'diff-movedto' => '$1 руу зөөгдлөө',
-'diff-styleadded' => '$1 гэсэн хэв маяг нэмэгдлээ',
-'diff-added' => '$1 нэмэгдлээ',
-'diff-changedto' => '$1 болгож өөрчиллөө',
-'diff-movedoutof' => '$1-с гаргаж зөөгдлөө',
-'diff-styleremoved' => '$1 гэсэн хэв маягийг авч хаялаа',
-'diff-removed' => '$1-г авч хаялаа',
-'diff-changedfrom' => '$1-с өөрчиллөө',
-'diff-src' => 'эх үүсвэр',
-'diff-withdestination' => '$1 гэх зорьсон газартай',
-'diff-with' => '&#32; $1 $2-тай',
-'diff-with-final' => '&#32;ба $1 $2',
-'diff-width' => 'өргөн',
-'diff-height' => 'өндөр',
-'diff-p' => "'''догол мөр'''",
-'diff-blockquote' => "'''ишлэл'''",
-'diff-h1' => "'''гарчиг (1-р түвшин)'''",
-'diff-h2' => "'''гарчиг (2-р түвшин)'''",
-'diff-h3' => "'''гарчиг (3-р түвшин)'''",
-'diff-h4' => "'''гарчиг (4-р түвшин)'''",
-'diff-h5' => "'''гарчиг (5-р түвшин)'''",
-'diff-pre' => "'''өмнө нь форматлагдсан хэсэг'''",
-'diff-div' => "'''хуваалт'''",
-'diff-ul' => "'''дэс дараагүй жагсаалт'''",
-'diff-ol' => "'''дэс дараатай жагсаалт'''",
-'diff-li' => "'''жагсаалтны зүйл'''",
-'diff-table' => "'''хүснэгт'''",
-'diff-tbody' => "'''хүснэгтийн агуулга'''",
-'diff-tr' => "'''мөр'''",
-'diff-td' => "'''нүд'''",
-'diff-th' => "'''жижиг гарчиг'''",
-'diff-br' => "'''тусгаарлалт'''",
-'diff-hr' => "'''хөндлөн шугам'''",
-'diff-code' => "'''компьютерийн кодны хэсэг'''",
-'diff-dl' => "'''тодорхойлолтуудын жагсаалт'''",
-'diff-dt' => "'''тодорхойлолтийн нэр томъёо'''",
-'diff-dd' => "'''тодорхойлолт'''",
-'diff-input' => "'''оролт'''",
-'diff-form' => "'''маягт'''",
-'diff-img' => "'''зураг'''",
-'diff-span' => "'''зай'''",
-'diff-a' => "'''холбоос'''",
-'diff-i' => "'''налуу бичиг'''",
-'diff-b' => "'''тодруулсан бичиг'''",
-'diff-strong' => "'''анхааруулсан'''",
-'diff-em' => "'''чухалчлах'''",
-'diff-font' => "'''фонт'''",
-'diff-big' => "'''том'''",
-'diff-del' => "'''устгагдсан'''",
-'diff-tt' => "'''тогтсон өргөн'''",
-'diff-sub' => "'''доогуурх үсэг'''",
-'diff-sup' => "'''дээгүүрх үсэг'''",
-'diff-strike' => "'''дундуурх зураас'''",
# Search results
'searchresults' => 'Хайлтын үр дүн',
@@ -923,22 +895,22 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'searchresulttext' => '{{SITENAME}}-с хайх тухай дэлгэрэнгүй мэдээллийг [[{{MediaWiki:Helppage}}|{{int:help}}]] хуудаснаас авна уу.',
'searchsubtitle' => 'Та \'\'\'[[:$1]]\'\'\' гэж хайлаа ([[Special:Prefixindex/$1|"$1-р эхлэсэн бүх хуудас]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"-д холбогдсон бүх хуудас]])',
'searchsubtitleinvalid' => "Та '''$1''' гэж хайлаа",
-'noexactmatch' => '"$1" гэсэн гарчигтай хуудас байхгүй байна.\'\'\' Та [[:$1|энэ хуудсыг үүсгэх]] боломжтой.',
-'noexactmatch-nocreate' => "'''\"\$1\" гэсэн гарчигтай хуудас байхгүй байна.'''",
'toomanymatches' => 'Хэт олон илэрц илэрлээ. Өөр үгээр хайна уу.',
'titlematches' => 'Хуудасны гарчигтай таарсан хуудсууд',
'notitlematches' => 'Хуудасны гарчигтай таарсан хуудсууд байхгүй байна',
'textmatches' => 'Хуудасны тексттэй таарсан хуудсууд',
'notextmatches' => 'Хуудасны тексттэй таарсан хуудсууд байхгүй байна',
-'prevn' => 'өмнөх $1',
-'nextn' => 'дараагийн $1',
-'viewprevnext' => 'Үзэх: ($1) ($2) ($3)',
+'prevn' => 'өмнөх {{PLURAL:$1|$1}}',
+'nextn' => 'дараагийн {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Үзэх: ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Хайх сонголтууд',
'searchmenu-exists' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудас байна'''",
'searchmenu-new' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудсыг үүсгэх!'''",
'searchhelp-url' => 'Help:Агуулга',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Энэ угтвартай хуудсуудыг гүйлгэж харах]]',
-'searchprofile-articles-and-proj' => 'Агуулгын ба төслийн хуудсууд',
+'searchprofile-articles' => 'Агуулгын хуудсууд',
+'searchprofile-project' => 'Тусламжийн болон төслийн хуудсууд',
+'searchprofile-images' => 'Мультмедиа',
'searchprofile-everything' => 'Бүгдийг',
'searchprofile-advanced' => 'Шилж хайх',
'searchprofile-articles-tooltip' => '$1 дотор хайх',
@@ -946,8 +918,6 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'searchprofile-images-tooltip' => 'Файлуудаас хайх',
'searchprofile-everything-tooltip' => 'Бүх агуулгаас хайх (үүнд ярианы хуудсуудыг оролцуулах)',
'searchprofile-advanced-tooltip' => 'Сонгосон нэрний зайнуудаас хайх',
-'prefs-search-nsdefault' => 'Ердийн тохиргоогоор хайх:',
-'prefs-search-nscustom' => 'Сонгосон нэрний зайнуудаас хайх:',
'search-result-size' => '$1 ($2 үг)',
'search-result-score' => 'Холбоо хамаарал: $1%',
'search-redirect' => '(чиглүүлэгч $1)',
@@ -960,11 +930,12 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'search-mwsuggest-disabled' => 'санаачлага байхгүй',
'search-relatedarticle' => 'Холбоотой',
'mwsuggest-disable' => 'AJAX саналуудыг болиулах',
+'searcheverything-enable' => 'Бүх нэрний зайнуудад хайх',
'searchrelated' => 'холбоотой',
'searchall' => 'бүгдийг',
'showingresults' => "Доор #'''$2'''-с эхлэсэн '''$1''' илэрцийг үзүүлж байна.",
'showingresultsnum' => "Доор #'''$2'''-с эхлэсэн '''$3''' илэрцийг үзүүлж байна.",
-'showingresultstotal' => "Доор {{PLURAL:$4|ширхэг илэрц (нийт '''$3''')|ширхэг '''$1 - $2''' дугаартай (нийт '''$3''') илэрцүүдийг }} үзүүлж байна.",
+'showingresultsheader' => "'''$4''' хайлтын {{PLURAL:$5|'''$3'''-н '''$1''' үр дүн|'''$3'''-н '''$1 - $2''' үр дүн}}",
'nonefound' => "'''Анхаар''': Зарим нэрний зайнуудыг л автоматаар хайна.
Хайлтынхаа өмнө 'all:'' гэж бичвэл бүх агуулга дотроос хайх (үүнд ярианы хуудас, загвар гэх мэт) ба хэрэгтэй нэрний зайг үүний байдлаар бичвэл үүн дотроос хайна.",
'search-nonefound' => 'Хайлтад таарсан үр дүн илэрсэнгүй.',
@@ -973,93 +944,125 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
'powersearch-ns' => 'Дараах нэрний зайнуудад хайх:',
'powersearch-redir' => 'Чиглүүлэгч хуудсуудыг оролцуулах',
'powersearch-field' => 'Дараахыг хайх:',
+'powersearch-togglelabel' => 'Сонгох:',
+'powersearch-toggleall' => 'Бүгд',
+'powersearch-togglenone' => 'Байхгүй',
'search-external' => 'Гадны хайлт',
'searchdisabled' => '{{SITENAME}} хайлтыг түр хаасан байна.
Та одоохондоо Google-г ашиглан хайх боломжтой.
Анхааруулж хэлэхэд, тэдний {{SITENAME}}-н агуулгын индексүүд хоцрогдсон байж магадгүй.',
+# Quickbar
+'qbsettings' => 'Шуурхай тавцан',
+'qbsettings-none' => 'Байхгүй',
+'qbsettings-fixedleft' => 'Зүүн талд бэхжүүлсэн',
+'qbsettings-fixedright' => 'Баруун талд бэхжүүлсэн',
+'qbsettings-floatingleft' => 'Зүүн талд хөвсөн',
+'qbsettings-floatingright' => 'Баруун талд хөвсөн',
+
# Preferences page
-'preferences' => 'Хэрэглэгчийн тохиргоо',
-'mypreferences' => 'Миний тохиргоо',
-'prefs-edits' => 'Засваруудын тоо:',
-'prefsnologin' => 'Нэвтрээгүй байна',
-'prefsnologintext' => 'Хэрэглэгчийн тохиргоогоо тохируулахын тулд та [[Special:UserLogin|нэвтэрсэн байх]] шаардлагатай.',
-'prefsreset' => 'Тохиргоонуудыг анхны байдалд нь орууллаа.',
-'qbsettings' => 'Шуурхай тавцан',
-'qbsettings-none' => 'Байхгүй',
-'qbsettings-fixedleft' => 'Зүүн талд бэхжүүлсэн',
-'qbsettings-fixedright' => 'Баруун талд бэхжүүлсэн',
-'qbsettings-floatingleft' => 'Зүүн талд хөвсөн',
-'qbsettings-floatingright' => 'Баруун талд хөвсөн',
-'changepassword' => 'Нууц үгээ солих',
-'skin' => 'Арьс',
-'skin-preview' => 'Урьдчилж харах',
-'math' => 'Томъёонууд',
-'dateformat' => 'Огнооний хэлбэр',
-'datedefault' => 'Анхны байдал',
-'datetime' => 'Огноо ба цаг',
-'math_failure' => 'Задлан ялгал хийж чадсангүй',
-'math_unknown_error' => 'үл мэдэгдэх алдаа',
-'math_unknown_function' => 'үл мэдэгдэх функц',
-'math_lexing_error' => 'лекслэхэд алдаа гарлаа',
-'math_syntax_error' => 'синтаксийн алдаа',
-'math_image_error' => 'PNG руух хувиргал амжилтгүй боллоо;
-latex, dvips, gs, convert-г зөв суулгасан эсэхийг шалгана уу',
-'math_bad_tmpdir' => 'Математикийн түр зуурын каталогыг үүсгэх, эсвэл түүн руу хуулж чадсангүй',
-'math_bad_output' => 'Математикийн гадагшлуулах каталогыг үүсгэх, эсвэл түүн руу хуулж чадсангүй',
-'math_notexvc' => 'texvc программ олдохгүй байна;
-math/README-г уншиж тохируулна уу.',
-'prefs-personal' => 'Хувийн тохируулга',
-'prefs-rc' => 'Сүүлийн засварууд',
-'prefs-watchlist' => 'Хянах жагсаалт',
-'prefs-watchlist-days' => 'Хянах жагсаалтанд үзүүлэх өдрүүдийн тоо:',
-'prefs-watchlist-edits' => 'Дэлгэрүүлсэн хянах жагсаалтанд үзүүлэх дээд хэмжээний өөрчлөлтүүдийн тоо:',
-'prefs-misc' => 'Бусад',
-'prefs-resetpass' => 'Нууц үгээ солих',
-'saveprefs' => 'Хадгалах',
-'resetprefs' => 'Хадгалаагүй өөрчлөлтүүдийг арилгах',
-'textboxsize' => 'Засварлаж байна',
-'prefs-edit-boxsize' => 'Засварлах цонхны хэмжээ.',
-'rows' => 'Мөр:',
-'columns' => 'Багана:',
-'searchresultshead' => 'Хайлт',
-'resultsperpage' => 'Хуудас тус бүр дээрх илэрцийн тоо:',
-'contextlines' => 'Илэрц тус бүр дэх мөрийн тоо:',
-'contextchars' => 'Нэг мөр тус бүр дэх үгийн тоо:',
-'stub-threshold' => '<a href="#" class="stub">Түүхий холбоосийг</a> форматлах босго (байт):',
-'recentchangesdays' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх өдрийн тоо:',
-'recentchangescount' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх засварын тоо:',
-'savedprefs' => 'Таны тохиргоо хадгалагдлаа.',
-'timezonelegend' => 'Цагийн бүс:',
-'timezonetext' => '¹Серверийн цаг (UTC) ба таны орон нутгийн цаг хоорондын зөрүү.',
-'localtime' => 'Орон нутгийн цаг:',
-'timezoneselect' => 'Цагийн бүс:',
-'timezoneuseserverdefault' => 'Серверийн ердийн тохиргоог хэрэглэх',
-'timezoneuseoffset' => 'Бусад (зөрөөг заах)',
-'timezoneoffset' => 'Зөрөө¹',
-'servertime' => 'Серверийн цаг',
-'guesstimezone' => 'Броузераас бөглөх',
-'timezoneregion-africa' => 'Африк',
-'timezoneregion-america' => 'Америк',
-'timezoneregion-antarctica' => 'Антарктид',
-'timezoneregion-arctic' => 'Хойд мөсөн далай',
-'timezoneregion-asia' => 'Ази',
-'timezoneregion-atlantic' => 'Атлантын далай',
-'timezoneregion-australia' => 'Австрали',
-'timezoneregion-europe' => 'Европ',
-'timezoneregion-indian' => 'Энэтхэгийн далай',
-'timezoneregion-pacific' => 'Номхон далай',
-'allowemail' => 'Бусад хэрэглэгчдээс ирэх мэйлийг зөвшөөрөх',
-'prefs-searchoptions' => 'Хайх сонголтууд',
-'prefs-namespaces' => 'Нэрний зайнууд',
-'defaultns' => 'Байнга эдгээр нэрний зайнуудад хайх:',
-'default' => 'анхны байдал',
-'files' => 'Файлууд',
-'prefs-custom-css' => 'Өөрийн сонгосон CSS',
-'prefs-custom-js' => 'Өөрийн сонгосон JS',
+'preferences' => 'Хэрэглэгчийн тохиргоо',
+'mypreferences' => 'Миний тохиргоо',
+'prefs-edits' => 'Засваруудын тоо:',
+'prefsnologin' => 'Нэвтрээгүй байна',
+'prefsnologintext' => 'Хэрэглэгчийн тохиргоогоо тохируулахын тулд та [[Special:UserLogin|нэвтэрсэн байх]] шаардлагатай.',
+'changepassword' => 'Нууц үгээ солих',
+'prefs-skin' => 'Арьс',
+'skin-preview' => 'Урьдчилж харах',
+'prefs-math' => 'Томъёонууд',
+'datedefault' => 'Анхны байдал',
+'prefs-datetime' => 'Огноо ба цаг',
+'prefs-personal' => 'Хувийн тохируулга',
+'prefs-rc' => 'Сүүлийн засварууд',
+'prefs-watchlist' => 'Хянах жагсаалт',
+'prefs-watchlist-days' => 'Хянах жагсаалтанд үзүүлэх өдрүүдийн тоо:',
+'prefs-watchlist-days-max' => 'Хамгийн ихдээ 7 өдөр',
+'prefs-watchlist-edits' => 'Дэлгэрүүлсэн хянах жагсаалтанд үзүүлэх дээд хэмжээний өөрчлөлтүүдийн тоо:',
+'prefs-watchlist-edits-max' => 'Хамгийн том тоо: 1000',
+'prefs-misc' => 'Бусад',
+'prefs-resetpass' => 'Нууц үгээ солих',
+'saveprefs' => 'Хадгалах',
+'resetprefs' => 'Хадгалаагүй өөрчлөлтүүдийг арилгах',
+'prefs-editing' => 'Засварлах',
+'prefs-edit-boxsize' => 'Засварлах цонхны хэмжээ.',
+'rows' => 'Мөр:',
+'columns' => 'Багана:',
+'searchresultshead' => 'Хайлт',
+'resultsperpage' => 'Хуудас тус бүр дээрх илэрцийн тоо:',
+'contextlines' => 'Илэрц тус бүр дэх мөрийн тоо:',
+'contextchars' => 'Нэг мөр тус бүр дэх үгийн тоо:',
+'stub-threshold' => '<a href="#" class="stub">Түүхий холбоосийг</a> форматлах босго (байт):',
+'recentchangesdays' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх өдрийн тоо:',
+'recentchangesdays-max' => 'Хамгийн ихдээ $1 өдөр',
+'recentchangescount' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх засварын тоо:',
+'savedprefs' => 'Таны тохиргоо хадгалагдлаа.',
+'timezonelegend' => 'Цагийн бүс:',
+'localtime' => 'Орон нутгийн цаг:',
+'timezoneuseserverdefault' => 'Серверийн ердийн тохиргоог хэрэглэх',
+'timezoneuseoffset' => 'Бусад (зөрөөг заах)',
+'timezoneoffset' => 'Зөрөө¹',
+'servertime' => 'Серверийн цаг',
+'guesstimezone' => 'Броузераас бөглөх',
+'timezoneregion-africa' => 'Африк',
+'timezoneregion-america' => 'Америк',
+'timezoneregion-antarctica' => 'Антарктид',
+'timezoneregion-arctic' => 'Хойд мөсөн далай',
+'timezoneregion-asia' => 'Ази',
+'timezoneregion-atlantic' => 'Атлантын далай',
+'timezoneregion-australia' => 'Австрали',
+'timezoneregion-europe' => 'Европ',
+'timezoneregion-indian' => 'Энэтхэгийн далай',
+'timezoneregion-pacific' => 'Номхон далай',
+'allowemail' => 'Бусад хэрэглэгчдээс ирэх мэйлийг зөвшөөрөх',
+'prefs-searchoptions' => 'Хайх сонголтууд',
+'prefs-namespaces' => 'Нэрний зайнууд',
+'defaultns' => 'Үгүй бол эдгээр нэрний зайнуудад хайх:',
+'default' => 'анхны байдал',
+'prefs-files' => 'Файлууд',
+'prefs-custom-css' => 'Өөрийн сонгосон CSS',
+'prefs-custom-js' => 'Өөрийн сонгосон JS',
+'prefs-reset-intro' => 'Та энэ хуудсыг ашиглан өөрийн тохиргоог сайтын анхны тохиргооо руу шилжүүлэх боломжтой.
+Энэ үйлдлийг буцаах боломжгүй.',
+'prefs-emailconfirm-label' => 'Мэйлийн баталгаажуулалт:',
+'prefs-textboxsize' => 'Засварлах талбарын хэмжээ',
+'youremail' => 'Мэйл хаяг:',
+'username' => 'Хэрэглэгчийн нэр:',
+'uid' => 'Хэрэглэгчийн ID:',
+'prefs-memberingroups' => 'Дараах {{PLURAL:$1|бүлгийн|бүлгүүдийн}} гишүүн:',
+'prefs-registration' => 'Бүртгүүлсэн цаг:',
+'yourrealname' => 'Жинхэнэ нэр:',
+'yourlanguage' => 'Хэл:',
+'yourvariant' => 'Вариант',
+'yournick' => 'Дуудах нэр (хоч):',
+'prefs-help-signature' => 'Ярианы хуудсуудад санал бодлоо оруулахдаа ард нь "<nowiki>~~~~</nowiki>" гэж бичих ёстой бөгөөд энэ нь таны гарын үсэг, бичсэн цаг болж хувирна.',
+'badsig' => 'Хүчингүй гарын үсэг байна; HTML тагуудаа шалгаж үзнэ үү.',
+'badsiglength' => 'Таны хоч нэр хэтэрхий урт байна.
+$1 тэмдэгтээс богино байх ёстой.',
+'yourgender' => 'Хүйс:',
+'gender-unknown' => 'Тодорхойгүй',
+'gender-male' => 'Эр',
+'gender-female' => 'Эм',
+'prefs-help-gender' => 'Заавал биш: прорамм хангамж таньд хандахдаа зөв хүйсний үгсийг хэрэглэнэ.
+Энэ мэдээлэл нийтэд нээлттэй байх болно.',
+'email' => 'Мэйл хаяг',
+'prefs-help-realname' => 'Жинхэнэ нэрээ заавал оруулах албагүй бөгөөд оруулбал таны хийсэн бүтээлийг түүгээр хаяглана.',
+'prefs-help-email' => 'Мэйл хаягаа заавал оруулах албагүй ч оруулснаар нууц үгээ мартвал шинэ нууц үгийг мэйлээр тань явуулах болно.
+Мөн өөрийгөө таниулалгүйгээр таны хэрэглэгчийн эсвэл ярианы хуудсаар бусад хэрэглэгч таньтай харилцах боломжтой.',
+'prefs-help-email-required' => 'Мэйл хаяг шаардлагатай байна.',
+'prefs-info' => 'Ердийн мэдээлэл',
+'prefs-signature' => 'Гарын үсэг',
+'prefs-dateformat' => 'Огнооны хэлбэр',
+'prefs-timeoffset' => 'Цагын зөрөө',
+'prefs-advancedediting' => 'Ахимаг хэмжээний сонголтууд',
+'prefs-advancedrc' => 'Ахимаг хэмжээний сонголтууд',
+'prefs-advancedrendering' => 'Ахимаг хэмжээний сонголтууд',
+'prefs-advancedsearchoptions' => 'Ахимаг хэмжээний сонголтууд',
+'prefs-advancedwatchlist' => 'Ахимаг хэмжээний сонголтууд',
+'prefs-display' => 'Харагдах байдлын сонголтууд',
+'prefs-diffs' => 'Ялгаанууд',
# User rights
-'userrights' => 'Хэрэглэгчдийн эрхийн удирдлага', # Not used as normal message but as header for the special page itself
+'userrights' => 'Хэрэглэгчдийн эрхийн удирдлага',
'userrights-lookup-user' => 'Хэрэглэгчдийн бүлгүүдийг удирдах',
'userrights-user-editname' => 'Хэрэглэгчийн нэрээ оруулна уу:',
'editusergroup' => 'Хэрэглэгчийн бүлгийг засварлах',
@@ -1142,6 +1145,8 @@ math/README-г уншиж тохируулна уу.',
'right-editprotected' => 'Хамгаалагдсан хуудсуудыг засварлах (давхар хамгаалалтгүй)',
'right-editinterface' => 'Хэрэглэгчийн интерфэйсийг засварлах',
'right-editusercssjs' => 'Бусад хэрэглэгчдийн CSS болон JS файлуудыг засварлах',
+'right-editusercss' => 'Бусад хэрэглэгчдийн CSS файлуудыг засварлах',
+'right-edituserjs' => 'Бусад хэрэглэгчдийн JS файлуудыг засварлах',
'right-rollback' => 'Тодорхой хуудсыг засварласан хамгийн сүүлийн хэрэглэгчийн засварыг түргэн буцаах',
'right-markbotedits' => 'Буцаасан засваруудыг ботын засвар гэж тэмдэглэх',
'right-noratelimit' => 'Үйлдлийн хурдны хязгааруудад хамаарагдахгүй байх',
@@ -1158,6 +1163,7 @@ math/README-г уншиж тохируулна уу.',
'right-siteadmin' => 'Мэдээллийн баазыг түгжих буюу нээх',
'right-reset-passwords' => 'Бусад хэрэглэгчдийн нууц үгсийг дахин тогтоох',
'right-override-export-depth' => '5 хүртэлх гүний хуудсуудыг холбогдсон хуудсуудтай хамт гаргах',
+'right-versiondetail' => 'Программ хангамжийн дэлгэрэнгүй мэдээллийг үзүүлэх',
# User rights log
'rightslog' => 'Хэрэглэгчдийн эрхийн лог',
@@ -1207,8 +1213,17 @@ math/README-г уншиж тохируулна уу.',
'recentchanges-legend' => 'Сүүлийн өөрчлөлтүүдийн сонголтууд',
'recentchangestext' => 'Энэхүү хуудсанд викид хийсэн хамгийн сүүлийн өөрчлөлтүүдийг үзүүлж байна.',
'recentchanges-feed-description' => 'Вики дахь хамгийн сүүлийн өөрчлөлтүүдийг хянах.',
+'recentchanges-label-legend' => 'Тайлбар: $1.',
+'recentchanges-legend-newpage' => '$1 - шинэ хуудас',
+'recentchanges-label-newpage' => 'Энэ засвар шинэ хуудсыг үүсгэсэн байна',
+'recentchanges-legend-minor' => '$1 - бага зэргийн засвар',
+'recentchanges-label-minor' => 'Энэ нь бага зэргийн засвар байна',
+'recentchanges-legend-bot' => '$1 - ботын засвар',
+'recentchanges-label-bot' => 'Энэ засварыг бот гүйцэтгэсэн байна',
+'recentchanges-legend-unpatrolled' => '$1 - манагдаагүй засвар',
+'recentchanges-label-unpatrolled' => 'Энэ засварыг одоогийн байдлаар манаагүй байна',
'rcnote' => "Доорх нь $5, $4-ий байдлаарх сүүлийн '''$2''' өдрийн турших '''$1''' засвар юм.",
-'rcnotefrom' => "Доорх нь '''$2'''-с хойших өөрчлөлтүүд ('''$1''' хүртэл харуулагдсан) юм.",
+'rcnotefrom' => "Доорх нь '''$2'''-с хойших өөрчлөлтүүд ('''$1''' хүртэл харуулагдсан) юм.",
'rclistfrom' => '$1-с хойших шинэ засваруудыг үзүүлэх',
'rcshowhideminor' => 'Бага зэргийн засваруудыг $1',
'rcshowhidebots' => 'Роботуудыг $1',
@@ -1233,6 +1248,8 @@ math/README-г уншиж тохируулна уу.',
# Recent changes linked
'recentchangeslinked' => 'Холбогдох өөрчлөлтүүд',
+'recentchangeslinked-feed' => 'Холбогдох өөрчлөлтүүд',
+'recentchangeslinked-toolbox' => 'Холбогдох өөрчлөлтүүд',
'recentchangeslinked-title' => '"$1"-тай холбоотой засварууд',
'recentchangeslinked-noresult' => 'Өгөгдсөн хугацаанд холбогдсон хуудсууд дээр засвар хийгдээгүй байна.',
'recentchangeslinked-summary' => "Энэ хуудас бол тодорхой хуудаснаас (эсвэл тодорхой ангиллын доторх хуудсууд) холбогдсон хуудсуудад хийгдсэн өөрчлөлтийн жагсаалт юм.
@@ -1243,7 +1260,6 @@ math/README-г уншиж тохируулна уу.',
# Upload
'upload' => 'Файл оруулах',
'uploadbtn' => 'Файл оруулах',
-'reupload' => 'Дахин оруулах',
'reuploaddesc' => 'Файл оруулалтыг цуцалж оруулах маягт руу буцах',
'uploadnologin' => 'Нэвтрээгүй байна',
'uploadnologintext' => 'Та файл оруулахын тулд [[Special:UserLogin|нэвтэрч орсон]] байх шаардлагатай.',
@@ -1296,7 +1312,6 @@ math/README-г уншиж тохируулна уу.',
* Оруулж байгаа файлын нэр: '''<tt>[[:$1]]</tt>'''
* Оршиж буй файлын нэр: '''<tt>[[:$2]]</tt>'''
Өөр нэр сонгоно уу.",
-'fileexists-thumb' => "<center>'''Байгаа файл'''</center>",
'fileexists-thumbnail-yes' => "Энэ файл хэмжээг нь багасгасан зураг юм шиг байна ''(thumbnail)''.
[[$1|thumb]]
'''<tt>[[:$1]]</tt>''' файлыг шалгана уу.
@@ -1321,8 +1336,6 @@ math/README-г уншиж тохируулна уу.',
'uploaddisabled' => 'Файл оруулах боломжгүй байна.',
'uploaddisabledtext' => 'Файл оруулалтуудыг идэвхижүүлээгүй байна.',
'uploadscripted' => 'Энэ файл нь вэб броузераас шалтгаалж алдаатай уншигдах магадлал бүхий HTML буюу скрипт код агуулсан байна.',
-'uploadcorrupt' => 'Файл эвдэрхий буюу өргөтгөл нь буруу байна.
-Файлаа шалгаад дахин оруулна үү.',
'uploadvirus' => 'Энэ файл вирусыг агуулж байна! Дэлгэрэнгүй: $1',
'sourcefilename' => 'Эх үүсвэр файлын нэр',
'destfilename' => 'Зорьсон файлын нэр:',
@@ -1357,6 +1370,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
Арай ажил багатай цагт дахин оролдохыг санал болгоё.',
'license' => 'Эрх олгож байна:',
+'license-header' => 'Эрх олгож байна:',
'nolicense' => 'Алиныг ч сонгоогүй байна',
'license-nopreview' => '(Урьдчилж харсан байдлыг харж болохгүй байна)',
'upload_source_url' => ' (хүчинтэй, нийтэд нээлттэй URL)',
@@ -1377,6 +1391,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'listfiles_count' => 'Хувилбар',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлын түүх',
'filehist-help' => 'Огноо/цаг дээр дарж тухайн үеийнх нь файлын байдлыг харна уу.',
'filehist-deleteall' => 'бүгдийг устга',
@@ -1385,6 +1400,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'filehist-current' => 'одоогийн',
'filehist-datetime' => 'Огноо/Цаг',
'filehist-thumb' => 'Жижиг зураг',
+'filehist-thumbtext' => '$1-ий байдлаарх хувилбарын жижиг хувилбар',
'filehist-nothumb' => 'Жижиг зураг алга',
'filehist-user' => 'Хэрэглэгч',
'filehist-dimensions' => 'Хэмжээ',
@@ -1399,12 +1415,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'morelinkstoimage' => 'Энэ файлд руух [[Special:WhatLinksHere/$1|илүү олон холбоос]] үзэх.',
'redirectstofile' => 'Дараах {{PLURAL:$1|чиглүүлэгч|$1 чиглүүлэгч}} энэ файлд холбогдоно:',
'duplicatesoffile' => 'Дараах {{PLURAL:$1|файл|$1 файл}} нь энэ файлтай яг ижилхэн байна ([[Special:FileDuplicateSearch/$2|дэлгэрэнгүй мэдээлэл]]):',
-'sharedupload' => 'Энэ файл нь $1-ийнх бөгөөд бусад төслүүдэд ашиглах боломжтой', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Дэлгэрэнгүй мэдээллийг $1-с авна уу.',
-'shareduploadwiki-desc' => '$1 дээрх тайлбарыг доор үзүүлэв.',
-'shareduploadwiki-linktext' => 'файлын тайлбарын хуудас',
-'noimage' => 'Ийм нэртэй файл байхгүй байна, гэхдээ та $1 боломжтой.',
-'noimage-linktext' => 'нэгийг оруулах',
+'sharedupload' => 'Энэ файл нь $1-ийнх бөгөөд бусад төслүүдэд ашиглах боломжтой',
'uploadnewversion-linktext' => 'Энэ файлын шинэ хувилбарыг оруулах',
# File reversion
@@ -1495,8 +1506,8 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'brokenredirects' => 'Эвдэрхий чиглүүлэгчүүд',
'brokenredirectstext' => 'Дараах чиглүүлэгчүүд нь оршдоггүй хуудсууд руу холбогдож байна:',
-'brokenredirects-edit' => '(засварлах)',
-'brokenredirects-delete' => '(устгах)',
+'brokenredirects-edit' => 'засварлах',
+'brokenredirects-delete' => 'устгах',
'withoutinterwiki' => 'Бусад хэлтэйх холбоосгүй хуудсууд',
'withoutinterwiki-summary' => 'Дараах хуудсууд бусад хэлний хувилбаруудад холбогддоггүй:',
@@ -1712,6 +1723,29 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'enotif_lastvisited' => '$1-н хамгийн сүүлд зочилсноос хойших өөрчлөлтүүдийг харуул.',
'enotif_lastdiff' => '$1-г харж энэ өөрчлөлтийг үзнэ үү.',
'enotif_anon_editor' => '$1 бүртгэлгүй хэрэглэгч',
+'enotif_body' => '$WATCHINGUSERNAME танаа,
+
+{{SITENAME}}-н $PAGETITLE хуудаст $PAGEEDITOR $PAGEEDITDATE-нд $CHANGEDORCREATED үйлдэл хийжээ. Одоогийн засварыг $PAGETITLE_URL хуудсаас харна уу.
+
+$NEWPAGE
+
+Засварлагчийн тойм: $PAGESUMMARY $PAGEMINOREDIT
+
+Засварлагчтай холбоо барих:
+мэйл: $PAGEEDITOR_EMAIL
+вики: $PAGEEDITOR_WIKI
+
+Та энэ хуудаст зочлохгүй бол өөр өөрчлөлтүүдийн талаарх мэдээлэл өгөхгүй болно.
+Мөн та хянаж буй хуудсуудын мэдээллэх бүртгэлийг өөрчилж болно.
+
+ {{SITENAME}}-н мэдээллэх систем
+
+--
+Хянаж буй хуудсуудынхаа тохиргоог өөрчлөхийн тулд дараах хуудаст зочилно уу:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Дэлгэрэнгүй мэдээлэл:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Хуудсыг устга',
@@ -1722,7 +1756,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'exblank' => 'хуудас нь хоосон байсан',
'delete-confirm' => '"$1"-г устгах',
'delete-legend' => 'Устгах',
-'historywarning' => 'Анхаар: Таны устгах гэж байгаа хуудас түүхтэй байна:',
+'historywarning' => "'''Анхаар''': Таны устгах гэж байгаа хуудас $1 орчим засвар бүхий түүхтэй байна:",
'confirmdeletetext' => 'Та энэ хуудсыг түүхтэй нь бүхлээр нь устгах гэж байна.
Энэхүү үйлдлийг хийснээр ямар үр дүнд хүрэхийг бүрэн гүйцэд ойлгож хийж байгаа гэдгээ, мөн [[{{MediaWiki:Policy-url}}|дүрэм журмынх нь дагуу]] хийж байнаагаа илтгэнэ үү.',
'actioncomplete' => 'Үйлдлийг гүйцэтгэлээ.',
@@ -1758,8 +1792,8 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
Хуудаст хамгийн сүүлд засвар хийсэн хэрэглэгч нь [[User:$3|$3]] ([[User talk:$3|яриа]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Засварлалтын агуулга нь: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|яриа]])-н хийсэн засваруудыг [[User:$1|$1]]-ий хийсэн сүүлийн засварт буцаан шилжүүллээ.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Засварлалтын агуулга нь: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|яриа]])-н хийсэн засваруудыг [[User:$1|$1]]-ий хийсэн сүүлийн засварт буцаан шилжүүллээ.',
'rollback-success' => '$1-н өөрчлөлтүүдийг $2-н үйлдсэн сүүлийн хувилбар руу буцаалаа.',
'sessionfailure' => 'Таны нэвтрэлд алдаа гарсан бололтой;
компьютерийн систем дэх мэдээллийг хууль бусаар авах явдлаас хамгаалах гэж үйлдэл цуцлагдсан байна
@@ -1779,7 +1813,6 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
'protectexpiry' => 'Дуусах:',
'protect_expiry_invalid' => 'Дуусах хугацаа хүчингүй байна.',
'protect_expiry_old' => 'Дуусах хугацаа өнгөрсөн цагт байна.',
-'protect-unchain' => 'Зөөх зөвшөөрлүүдийг тайлах',
'protect-text' => "Та '''<nowiki>$1</nowiki>''' хуудасны хамгаалалтын түвшинг харж, өөрчлөх боломжтой.",
'protect-locked-blocked' => "Түгжигдсэн байхад хамгаалалтын түвшинг өөрчилж болохгүй.
'''$1''' хуудасны одоогийн тохиргоо энд байна:",
@@ -1809,7 +1842,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
** Ашиггүй засварын зөрчилдөөнүүдтэй
** Маш олон хүн ордог',
'protect-edit-reasonlist' => 'Түгжих шалтгаануудыг засварлах',
-'protect-expiry-options' => '1 цаг:1 hour,1 өдөр:1 day,1 долоо хоног:1 week,2 долоо хоног:2 weeks,1 сар:1 month,3 сар:3 months,6 сар:6 months,1 жил:1 year,хугацаагүй:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 цаг:1 hour,1 өдөр:1 day,1 долоо хоног:1 week,2 долоо хоног:2 weeks,1 сар:1 month,3 сар:3 months,6 сар:6 months,1 жил:1 year,хугацаагүй:infinite',
'restriction-type' => 'Зөвшөөрөл:',
'restriction-level' => 'Хамгаалалтын түвшин:',
'minimum-size' => 'Доод хэмжээ',
@@ -1884,7 +1917,7 @@ $1',
'contributions-title' => '$1 хэрэглэгчийн хувь нэмэр',
'mycontris' => 'Миний оруулсан хувь нэмэр',
'contribsub2' => 'Хэрэглэгчийн нэр: $1 ($2)',
-'nocontribs' => 'Энэ шалгуурт тохирох өөрчилсөн зүйлүүд олдсонгүй.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Энэ шалгуурт тохирох өөрчилсөн зүйлүүд олдсонгүй.',
'uctop' => '(дээд)',
'month' => 'Дараах сараас (өмнөх засварууд нь ч орно):',
'year' => 'Дараах жилээс (өмнөх засварууд нь ч орно):',
@@ -1893,6 +1926,8 @@ $1',
'sp-contributions-newbies-sub' => 'Шинээр бүртгүүлсэн хэрэглэгчид',
'sp-contributions-newbies-title' => 'Шинэ бүртгэлүүдийн хувь нэмэр',
'sp-contributions-blocklog' => 'Түгжээний лог',
+'sp-contributions-talk' => 'Яриа',
+'sp-contributions-userrights' => 'Хэрэглэгчдийн эрхийн удирдлага',
'sp-contributions-search' => 'Хувь нэмрийг хайх',
'sp-contributions-username' => 'IP хаяг эсвэл хэрэглэгчийн нэр:',
'sp-contributions-submit' => 'Хайх',
@@ -1941,7 +1976,7 @@ $1',
'ipbenableautoblock' => 'Энэ хэрэглэгчийн сүүлийн IP хаягийг түгж. Дээр нь дахин оролдого хийж болох хаягуудыг ч мөн түгжих.',
'ipbsubmit' => 'Энэ хэрэглэгчийг түгжих',
'ipbother' => 'Өөр хугацаа:',
-'ipboptions' => '2 цаг:2 hours,1 хоног:1 day,3 хоног:3 days,1 долоо хоног:1 week,2 долоо хоног:2 weeks,1 сар:1 month,3 сар:3 months,6 сар:6 months,1 жил:1 year,хязгааргүй:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 цаг:2 hours,1 хоног:1 day,3 хоног:3 days,1 долоо хоног:1 week,2 долоо хоног:2 weeks,1 сар:1 month,3 сар:3 months,6 сар:6 months,1 жил:1 year,хязгааргүй:infinite',
'ipbotheroption' => 'бусад',
'ipbotherreason' => 'Өөр/нэмэлт шалтгаан:',
'ipbhidename' => 'Хэрэглэгчийн нэрийг түгжээний лог, одоо хэрэгжиж буй түгжээний жагсаалт болон хэрэглэгчийн жагсаалтаас нууцлах',
@@ -1972,7 +2007,7 @@ $1',
'ipblocklist-submit' => 'Хайх',
'blocklistline' => '$1, $2 нь $3 ($4)-г түгжив',
'infiniteblock' => 'тодорхойгүй',
-'expiringblock' => '$1-д хугацаа нь дуусна',
+'expiringblock' => '$1-ний $2-д хугацаа нь дуусна',
'anononlyblock' => 'зөвхөн бүртгэгдээгүйг',
'noautoblockblock' => 'Автоматаар түгжихийг хаасан байна.',
'createaccountblock' => 'бүртгэл үүсгэх явдлыг хаав',
@@ -1986,7 +2021,6 @@ $1',
'contribslink' => 'хувь нэмэр',
'autoblocker' => 'Автоматаар түгжигдлээ. Учир нь таны IP хаягийг "[[User:$1|$1]]" нь хэрэглэж байжээ. "$1"-г түгжих болсон шалтгаан нь: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Түгжээний лог',
-'blocklog-fulllog' => 'Түгжээний бүх лог',
'blocklogentry' => '[[$1]] нь $2 $3 хугацаатайгаар түгжигдсэн',
'reblock-logentry' => '[[$1]]-н түгжээний тохиргоог $2 $3 хугацаатай болгож өөрчилсөн',
'blocklogtext' => 'Энэ нь хэрэглэгчийг түгжсэн болон тайлсан үйлдлийн лог юм.
@@ -2067,7 +2101,7 @@ $1 нь аль хэдийнээ түгжигдсэн байна.
'move-watch' => 'Энэ хуудсыг хянах',
'movepagebtn' => 'Хуудсыг зөөх',
'pagemovedsub' => 'Амжилттай зөөгдлөө',
-'movepage-moved' => '\'\'\'"$1" нь "$2" руу зөөгдлөө\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" нь "$2" руу зөөгдлөө\'\'\'',
'movepage-moved-redirect' => 'Чиглүүлэгч хуудас үүсгэгдэв.',
'movepage-moved-noredirect' => 'Чиглүүлэгч хуудас үүсгэхийг хориглолоо.',
'articleexists' => 'Ийм нэртэй хуудсыг өмнө нь үүсгэсэн, эсвэл сонгосон нэр тань хүчингүй байна.
@@ -2132,8 +2166,7 @@ $1 нь аль хэдийнээ түгжигдсэн байна.
'allmessagestext' => 'Энэ бол МедиаВики дахь системийн мэдэгдлүүдийн жагсаалт юм.
МедиаВикиг орчуулах тухай мэдээллийг [http://www.mediawiki.org/wiki/Localisation МедиаВикигийн орчуулга], мөн [http://translatewiki.net translatewiki.net]-с авна уу.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' нь унтарсан байгаа тул '''Special:Allmessages'''-г хэрэглэж болохгүй.",
-'allmessagesfilter' => 'Мэдэгдлийн нэрийн шүүлтүүр:',
-'allmessagesmodified' => 'Зөвхөн өөрчлөгдсөнийг нь харуулах',
+'allmessages-filter-legend' => 'Шүүлтүүр',
# Thumbnails
'thumbnail-more' => 'Томруулах',
@@ -2216,6 +2249,7 @@ $1 нь аль хэдийнээ түгжигдсэн байна.
'tooltip-search-fulltext' => 'Энэ текстийг хуудсуудаас хайх',
'tooltip-p-logo' => 'Нүүр хуудас',
'tooltip-n-mainpage' => 'Нүүр хуудаст зочлох',
+'tooltip-n-mainpage-description' => 'Нүүр хуудаст зочлох',
'tooltip-n-portal' => 'Энэ төслийн тухай, түүн дээр юу хийж болох, ба хаана зүйлсийг мэдэж авах тухай',
'tooltip-n-currentevents' => 'Сүүлийн үед болсон үйл явдлуудын тухай',
'tooltip-n-recentchanges' => '{{SITENAME}} дэх хамгийн сүүлийн өөрчлөлтүүдийн жагсаалт.',
@@ -2267,7 +2301,7 @@ $1 нь аль хэдийнээ түгжигдсэн байна.
# Attribution
'anonymous' => '{{SITENAME}}-н бүртгүүлээгүй {{PLURAL:$1|хэрэглэгч|хэрэглэгчид}}',
'siteuser' => '{{SITENAME}}-н хэрэглэгч $1',
-'lastmodifiedatby' => 'Энэ хуудсыг $3 нь хамгийн сүүлд өөрчилсөн ба өөрчилсөн нь $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Энэ хуудсыг $3 нь хамгийн сүүлд өөрчилсөн ба өөрчилсөн нь $2, $1.',
'othercontribs' => '$1-ий бүтээл дээр тулгуурласан.',
'others' => 'Бусад',
'siteusers' => '{{SITENAME}}-н {{PLURAL:$2|хэрэглэгч|хэрэглэгчид}} $1',
@@ -2299,6 +2333,19 @@ $1 нь аль хэдийнээ түгжигдсэн байна.
'mw_math_modern' => 'Сүүлийн үеийн браузер хэрэглэхийг зөвлөж байна/Интернет хөтлөгчийн шинэ хувилбаруудад зориулсан.',
'mw_math_mathml' => 'Бололцоотой бол MathML (туршилт)',
+# Math errors
+'math_failure' => 'Задлан ялгал хийж чадсангүй',
+'math_unknown_error' => 'үл мэдэгдэх алдаа',
+'math_unknown_function' => 'үл мэдэгдэх функц',
+'math_lexing_error' => 'лекслэхэд алдаа гарлаа',
+'math_syntax_error' => 'синтаксийн алдаа',
+'math_image_error' => 'PNG руух хувиргал амжилтгүй боллоо;
+latex, dvips, gs, convert-г зөв суулгасан эсэхийг шалгана уу',
+'math_bad_tmpdir' => 'Математикийн түр зуурын каталогыг үүсгэх, эсвэл түүн руу хуулж чадсангүй',
+'math_bad_output' => 'Математикийн гадагшлуулах каталогыг үүсгэх, эсвэл түүн руу хуулж чадсангүй',
+'math_notexvc' => 'texvc программ олдохгүй байна;
+math/README-г уншиж тохируулна уу.',
+
# Patrolling
'markaspatrolleddiff' => 'Хяналтанд авъя',
'markaspatrolledtext' => 'Үүнийг хяналтанд авъя',
@@ -2333,9 +2380,6 @@ $1',
'previousdiff' => '← Өмнөх засвар',
'nextdiff' => 'Удаах засвар →',
-# Visual comparison
-'visual-comparison' => 'Зэрэгцүүлж харах',
-
# Media information
'mediawarning' => "'''Анхаар''':Энэ файл нь хор нөлөөтэй код агуулсан байж болзошгүй, хэрвээ ачааллавал таны системийн аюулгүй байдал доройтож болзошгүй.",
'imagemaxsize' => 'Доорх шаардлагын дагуу зургын хуудсанд хязгаарлалт хийлээ:',
@@ -2381,7 +2425,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Өргөн',
@@ -2507,14 +2551,14 @@ $1',
'exif-unknowndate' => 'Мэдэгдэхгүй огноо',
-'exif-orientation-1' => 'Ердийн', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Хөндлөнгөөр эргүүлэх', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° эргүүллээ', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Босоогоор эргүүлэх', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Цагийн зүүний эсрэгээр 90° эргүүлж босоогоор эргүүллээ', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Цагийн зүүний дагуу 90° эргүүллээ', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Цагийн зүүний дагуу 90° эргүүлж босоогоор эргүүллээ', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Цагийн зүүний эсрэгээр 90° эргүүллээ', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Ердийн',
+'exif-orientation-2' => 'Хөндлөнгөөр эргүүлэх',
+'exif-orientation-3' => '180° эргүүллээ',
+'exif-orientation-4' => 'Босоогоор эргүүлэх',
+'exif-orientation-5' => 'Цагийн зүүний эсрэгээр 90° эргүүлж босоогоор эргүүллээ',
+'exif-orientation-6' => 'Цагийн зүүний дагуу 90° эргүүллээ',
+'exif-orientation-7' => 'Цагийн зүүний дагуу 90° эргүүлж босоогоор эргүүллээ',
+'exif-orientation-8' => 'Цагийн зүүний эсрэгээр 90° эргүүллээ',
'exif-componentsconfiguration-0' => 'байхгүй байна',
@@ -2607,7 +2651,7 @@ $1',
'exif-gpsmeasuremode-2' => '2D хэмжилт',
'exif-gpsmeasuremode-3' => '3D хэмжилт',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Километр/цаг',
'exif-gpsspeed-m' => 'Миль/цаг',
'exif-gpsspeed-n' => 'Зангилаа',
@@ -2729,7 +2773,7 @@ $5
'watchlisttools-raw' => 'Хянаж буй хуудсуудын жагсаалтаа текстээр засварлах',
# Special:Version
-'version' => 'Хувилбар', # Not used as normal message but as header for the special page itself
+'version' => 'Хувилбар',
'version-specialpages' => 'Тусгай хуудсууд',
'version-other' => 'Бусад',
'version-license' => 'Лиценз',
@@ -2757,4 +2801,8 @@ $5
# Special:Tags
'tag-filter-submit' => 'Шүүлтүүр',
+# HTML forms
+'htmlform-reset' => 'Өөрчлөлтүүдийг цуцлах',
+'htmlform-selectorother-other' => 'Бусад',
+
);
diff --git a/languages/messages/MessagesMo.php b/languages/messages/MessagesMo.php
index d380b1ab..23f03e49 100644
--- a/languages/messages/MessagesMo.php
+++ b/languages/messages/MessagesMo.php
@@ -116,15 +116,18 @@ $messages = array(
'newpageletter' => 'Н',
# Recent changes linked
-'recentchangeslinked' => 'Скимбарь корелате',
+'recentchangeslinked' => 'Скимбарь корелате',
+'recentchangeslinked-feed' => 'Скимбарь корелате',
+'recentchangeslinked-toolbox' => 'Скимбарь корелате',
# Upload
'upload' => 'Тримите фишиер',
# File description page
-'filehist' => 'Историкул фишиерулуй',
-'filehist-user' => 'Утилизатор',
-'imagelinks' => 'Легэтурь',
+'file-anchor-link' => 'Фишиер',
+'filehist' => 'Историкул фишиерулуй',
+'filehist-user' => 'Утилизатор',
+'imagelinks' => 'Легэтурь',
# Miscellaneous special pages
'nbytes' => '{{PLURAL:$1|ун октет|$1 октець}}',
@@ -139,6 +142,8 @@ $messages = array(
# Namespace form on various pages
'blanknamespace' => '(Принчиал)',
+'sp-contributions-talk' => 'Дискуций',
+
# What links here
'whatlinkshere' => 'Че се лягэ аичь',
'whatlinkshere-links' => '← легэтурь',
diff --git a/languages/messages/MessagesMr.php b/languages/messages/MessagesMr.php
index af854057..1545638d 100644
--- a/languages/messages/MessagesMr.php
+++ b/languages/messages/MessagesMr.php
@@ -16,6 +16,7 @@
* @author Sankalpdravid
* @author अभय नातू
* @author कोलࣿहापࣿरी
+ * @author कोल्हापुरी
* @author प्रणव कुलकर्णी
* @author शࣿरीहरि
*/
@@ -44,11 +45,13 @@ $namespaceAliases = array(
'साहाय्य_चर्चा' => NS_HELP_TALK,
);
+#!!# sqlविचारा is not in normalised form, which is Sqlविचारा or Sqlविचारा
$specialPageAliases = array(
'DoubleRedirects' => array( 'दुहेरी पुनर्निर्देशने' ),
'BrokenRedirects' => array( 'चुकीची पुनर्निर्देशने' ),
'Disambiguations' => array( 'नि:संदिग्धीकरण' ),
'Userlogin' => array( 'सदस्यप्रवेश' ),
+ 'Userlogout' => array( 'सदस्यबहिर्गमन' ),
'CreateAccount' => array( 'सदस्यनोंद' ),
'Preferences' => array( 'पसंती' ),
'Watchlist' => array( 'पहार्‍याची सूची' ),
@@ -60,6 +63,7 @@ $specialPageAliases = array(
'Listgrouprights' => array( 'गट अधिकार यादी' ),
'Statistics' => array( 'सांख्यिकी' ),
'Randompage' => array( 'अविशिष्ट', 'अविशिष्ट पृष्ठ' ),
+ 'Lonelypages' => array( 'एकलपाने' ),
'Uncategorizedpages' => array( 'अवर्गीकृत पाने' ),
'Uncategorizedcategories' => array( 'अवर्गीकृत वर्ग' ),
'Uncategorizedimages' => array( 'अवर्गीकृत चित्रे' ),
@@ -68,10 +72,15 @@ $specialPageAliases = array(
'Unusedimages' => array( 'न वापरलेली चित्रे' ),
'Wantedpages' => array( 'हवे असलेले लेख' ),
'Wantedcategories' => array( 'हवे असलेले वर्ग' ),
+ 'Wantedfiles' => array( 'संचिकाहवी' ),
+ 'Wantedtemplates' => array( 'साचाहवा' ),
'Mostlinked' => array( 'सर्वात जास्त जोडलेली' ),
'Mostlinkedcategories' => array( 'सर्वात जास्त जोडलेले वर्ग', 'सर्वात जास्त वापरलेले वर्ग' ),
'Mostlinkedtemplates' => array( 'सर्वात जास्त जोडलेले साचे', 'सर्वात जास्त वापरलेले साचे' ),
+ 'Mostimages' => array( 'सर्वाधिकसांधलेलीसंचिका' ),
'Mostcategories' => array( 'सर्वात जास्त वर्ग' ),
+ 'Mostrevisions' => array( 'सर्वाधिकआवर्तने' ),
+ 'Fewestrevisions' => array( 'कमीतकमीआवर्तने' ),
'Shortpages' => array( 'छोटी पाने' ),
'Longpages' => array( 'मोठी पाने' ),
'Newpages' => array( 'नवीन पाने' ),
@@ -80,18 +89,35 @@ $specialPageAliases = array(
'Protectedpages' => array( 'सुरक्षित पाने' ),
'Protectedtitles' => array( 'सुरक्षित शीर्षके' ),
'Allpages' => array( 'सर्व पाने' ),
+ 'Prefixindex' => array( 'उपसर्गसुची' ),
+ 'Ipblocklist' => array( 'प्रतिबंधनसुची' ),
'Specialpages' => array( 'विशेष पाने' ),
'Contributions' => array( 'योगदान' ),
+ 'Emailuser' => array( 'विपत्रवापरकर्ता' ),
+ 'Confirmemail' => array( 'विपत्रनक्कीकरा' ),
'Whatlinkshere' => array( 'येथे काय जोडले आहे' ),
+ 'Recentchangeslinked' => array( 'सांधलेलेअलिकडीलबदल' ),
'Movepage' => array( 'पान हलवा' ),
+ 'Blockme' => array( 'मलाप्रतिबंधकरा' ),
+ 'Booksources' => array( 'पुस्तकस्रोत' ),
'Categories' => array( 'वर्ग' ),
'Export' => array( 'निर्यात' ),
'Version' => array( 'आवृत्ती' ),
'Allmessages' => array( 'सर्व निरोप' ),
+ 'Log' => array( 'नोंद', 'नोंदी' ),
+ 'Blockip' => array( 'प्रतिबंध', 'अंकपत्ताप्रतिबंध', 'सदस्यप्रतिबंध' ),
'Undelete' => array( 'काढणे रद्द करा' ),
'Import' => array( 'आयात' ),
'Lockdb' => array( 'कुलुपबंद करा (डेटाबेस)' ),
+ 'Unlockdb' => array( 'विदागारताळेउघडा' ),
'Userrights' => array( 'खातेदाराचे अधिकार' ),
+ 'MIMEsearch' => array( 'माईमशोध' ),
+ 'FileDuplicateSearch' => array( 'दुहेरीसंचिकाशोध' ),
+ 'Unwatchedpages' => array( 'अप्रेक्षीतपाने' ),
+ 'Listredirects' => array( 'पुर्ननिर्देशनसुची' ),
+ 'Revisiondelete' => array( 'आवर्तनवगळा' ),
+ 'Unusedtemplates' => array( 'नउपयोगातआणलेलासाचा' ),
+ 'Randomredirect' => array( 'अविशिष्ट्पुर्ननिर्देशन' ),
'Mypage' => array( 'माझे पान' ),
'Mytalk' => array( 'माझ्या चर्चा' ),
'Mycontributions' => array( 'माझे योगदान' ),
@@ -99,18 +125,28 @@ $specialPageAliases = array(
'Listbots' => array( 'सांगकाम्यांची यादी' ),
'Popularpages' => array( 'प्रसिद्ध पाने' ),
'Search' => array( 'शोधा' ),
+ 'Resetpass' => array( 'परवलीचाशब्दबदला' ),
+ 'Withoutinterwiki' => array( 'विनाआंतरविकि' ),
'MergeHistory' => array( 'इतिहास एकत्र करा' ),
'Filepath' => array( 'संचिकेचा पत्ता (पाथ)' ),
+ 'Invalidateemail' => array( 'चूकदिनांकविपत्र' ),
+ 'Blankpage' => array( 'कोरेपान' ),
+ 'LinkSearch' => array( 'दुवाशोध' ),
+ 'DeletedContributions' => array( 'वगळलेलीयोगदाने' ),
+ 'Tags' => array( 'खूणा' ),
+ 'Activeusers' => array( 'कार्यरतसदस्य' ),
);
$magicWords = array(
- 'redirect' => array( '0', '#पुनर्निर्देशन', '#REDIRECT' ),
+ 'redirect' => array( '0', '#पुनर्निर्देशन', '#पुर्ननिर्देशन', '#REDIRECT' ),
'notoc' => array( '0', '__अनुक्रमणिकानको__', '__NOTOC__' ),
'nogallery' => array( '0', '__प्रदर्शननको__', '__NOGALLERY__' ),
'forcetoc' => array( '0', '__अनुक्रमणिकाहवीच__', '__FORCETOC__' ),
'toc' => array( '0', '__अनुक्रमणिका__', '__TOC__' ),
'noeditsection' => array( '0', '__असंपादनक्षम__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'सद्यमहिना', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__शीर्षकनाही__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'सद्यमहिना', 'सद्यमहिना२', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'सद्यमहिना१', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'सद्यमहिनानाव', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'सद्यमहिनासाधारण', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'सद्यमहिनासंक्षीप्त', 'CURRENTMONTHABBREV' ),
@@ -120,7 +156,8 @@ $magicWords = array(
'currentyear' => array( '1', 'सद्यवर्ष', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'सद्यवेळ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'सद्यतास', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'स्थानिकमहिना', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'स्थानिकमहिना', 'स्थानिकमहिना२', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'स्थानिकमहिना१', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'स्थानिकमहिनानाव', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'स्थानिकमहिनासाधारण', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'स्थानिकमहिनासंक्षीप्त', 'LOCALMONTHABBREV' ),
@@ -134,38 +171,110 @@ $magicWords = array(
'numberofarticles' => array( '1', 'लेखसंख्या', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'संचिकासंख्या', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'सदस्यसंख्या', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'सक्रीयसदस्यसंख्या', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'संपादनसंख्या', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'धडकसंख्या', 'प्रेक्षासंख्या', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'लेखनाव', 'PAGENAME' ),
'pagenamee' => array( '1', 'लेखानावव', 'PAGENAMEE' ),
'namespace' => array( '1', 'नामविश्व', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'नामविश्वा', 'नामविश्वाचे', 'NAMESPACEE' ),
'talkspace' => array( '1', 'चर्चाविश्व', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'चर्चाविश्वा', 'चर्चाविश्वाचे', 'TALKSPACEE' ),
'subjectspace' => array( '1', 'विषयविश्व', 'लेखविश्व', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'विषयविश्वा', 'लेखविश्वा', 'विषयविश्वाचे', 'लेखविश्वाचे', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
'fullpagename' => array( '1', 'पूर्णलेखनाव', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'पूर्णलेखनावे', 'अंशदुवा', 'FULLPAGENAMEE' ),
'subpagename' => array( '1', 'उपपाननाव', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'उपपाननावे', 'उपपाननावाचे', 'उपौंशदुवा', 'SUBPAGENAMEE' ),
'basepagename' => array( '1', 'मूळपाननाव', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'मूळपाननावे', 'BASEPAGENAMEE' ),
'talkpagename' => array( '1', 'चर्चापाननाव', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'चर्चापाननावे', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'विषयपाननाव', 'लेखपाननाव', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'विषयपाननावे', 'लेखपाननावे', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'संदेश:', 'निरोप:', 'MSG:' ),
+ 'subst' => array( '0', 'पर्याय:', 'समाविष्टी:', 'अबाह्य:', 'निरकंसबिंब:', 'कंसत्याग:', 'साचाहिन:', 'साचान्तर:', 'साचापरिस्फोट:', 'साचोद्घाटन:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'संदेशनवा:', 'निरोपनवा:', 'MSGNW:' ),
'img_thumbnail' => array( '1', 'इवलेसे', 'thumbnail', 'thumb' ),
'img_manualthumb' => array( '1', 'इवलेसे=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'उजवे', 'right' ),
'img_left' => array( '1', 'डावे', 'left' ),
'img_none' => array( '1', 'कोणतेचनाही', 'नन्ना', 'none' ),
+ 'img_width' => array( '1', '$1अंश', '$1कणी', '$1पक्ष', '$1px' ),
'img_center' => array( '1', 'मध्यवर्ती', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'चौकट', 'फ़्रेम', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'विनाचौकट', 'विनाफ़्रेम', 'frameless' ),
+ 'img_page' => array( '1', 'पान=$1', 'पान $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'उभा', 'उभा=$1', 'उभा $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'सीमा', 'border' ),
+ 'img_baseline' => array( '1', 'तळरेषा', 'आधाररेषा', 'baseline' ),
+ 'img_sub' => array( '1', 'अधो', 'sub' ),
+ 'img_super' => array( '1', 'उर्ध्व', 'super', 'sup' ),
+ 'img_top' => array( '1', 'अत्यूच्च', 'top' ),
+ 'img_text_top' => array( '1', 'मजकूर-शीर्ष', 'शीर्ष-मजकूर', 'text-top' ),
'img_middle' => array( '1', 'मध्य', 'middle' ),
'img_bottom' => array( '1', 'तळ', 'बूड', 'bottom' ),
'img_text_bottom' => array( '1', 'मजकुरतळ', 'text-bottom' ),
+ 'img_link' => array( '1', 'दुवा=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'अल्ट=$1', 'alt=$1' ),
+ 'int' => array( '0', 'इन्ट:', 'INT:' ),
'sitename' => array( '1', 'संकेतस्थळनाव', 'SITENAME' ),
'ns' => array( '0', 'नावि:', 'NS:' ),
+ 'nse' => array( '0', 'नाविअरिक्त:', 'नाव्यारिक्त:', 'नाव्याख:', 'NSE:' ),
+ 'localurl' => array( '0', 'स्थानिकस्थळ:', 'स्थानिकसंकेतस्थळ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'स्थानिकस्थली:', 'LOCALURLE:' ),
'server' => array( '0', 'विदादाता', 'SERVER' ),
'servername' => array( '0', 'विदादातानाव', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'संहीतामार्ग', 'SCRIPTPATH' ),
'grammar' => array( '0', 'व्याकरण:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'लिंग:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__विनाशीर्षकबदल__', '__विनाशीब__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__विनामजकुरबदल__', '__विनामब__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'सद्यआठवडा', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'सद्यउतरण', 'सद्यउतार', 'CURRENTDOW' ),
'localweek' => array( '1', 'स्थानिकआठवडा', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'स्थानिकउतरण', 'स्थानिकउतार', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'आवृत्तीक्र्मांक', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'आवृत्तीदिन', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'आवृत्तीदिन२', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'आवृत्तीमास', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'आवृत्तीवर्ष', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'आवृत्तीमुद्रा', 'आवृत्तीठसा', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'आवृत्तीसदस्य', 'REVISIONUSER' ),
'plural' => array( '0', 'बहुवचन:', 'PLURAL:' ),
- 'language' => array( '0', '#भाषा:', '', '#LANGUAGE:' ),
+ 'fullurl' => array( '0', 'संपूर्णसंस्थळ', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'संपूर्णसंस्थली :', 'संपूर्णसंस्थळी :', 'FULLURLE:' ),
+ 'raw' => array( '0', 'कच्चे:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'शीर्षकदाखवा', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'ॠ', 'R' ),
+ 'newsectionlink' => array( '1', '__नवविभागदुवा__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__विनानवविभागदुवा__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'सद्यआवृत्ती', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'संकेतस्थलीआंग्ल्संकेत :', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'नांगरआंग्लसंकेत', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'सद्यकालमुद्रा', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'स्थानिककालमुद्रा', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'दिशाचिन्ह', 'दिशादर्शक', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#भाषा:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', 'मसुदाभाषा', 'मजकुरभाषा', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'नामविश्वातीलपाने:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'प्रचालकसंख्या', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'क्रमपद्धती', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'डावाभरीव', 'भरीवडावा', 'PADLEFT' ),
+ 'padright' => array( '0', 'उजवाभरीव', 'भरीवउजवा', 'PADRIGHT' ),
'special' => array( '0', 'विशेष', 'special' ),
+ 'defaultsort' => array( '1', 'अविचलवर्ग :', 'अविचलवर्गकळ :', 'अविचलवर्गवर्गीकरण:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'संचिकामार्ग:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'खूण', 'खूणगाठ', 'tag' ),
'hiddencat' => array( '1', '__वर्गलपवा__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'वर्गातीलपाने', 'वर्गीतपाने', 'श्रेणीतपाने', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'पानक्षमता', 'PAGESIZE' ),
+ 'index' => array( '1', '__क्रमीत__', '__अनुक्रमीत__', '__INDEX__' ),
+ 'noindex' => array( '1', '__विनाक्रमीत__', '__विनाअनुक्रमीत__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'गटक्रमांक', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__अविचलपुर्ननिर्देश__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'सुरक्षास्तर', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'दिनांकनपद्धती', 'formatdate', 'dateformat' ),
);
$digitTransformTable = array(
@@ -294,7 +403,7 @@ $messages = array(
'category-media-header' => '"$1" वर्गातील माध्यमे',
'category-empty' => "''या वर्गात अद्याप एकही लेख नाही.''",
'hidden-categories' => '{{PLURAL:$1|लपविलेला वर्ग|लपविलेले वर्ग}}',
-'hidden-category-category' => 'लपविलेले वर्ग', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'लपविलेले वर्ग',
'category-subcat-count' => '{{PLURAL:$2|या वर्गात फक्त खालील उपवर्ग आहे.|एकूण $2 उपवर्गांपैकी या वर्गात खालील {{PLURAL:$1|उपवर्ग आहे.|$1 उपवर्ग आहेत.}}}}',
'category-subcat-count-limited' => 'या वर्गात खालील $1 उपवर्ग {{PLURAL:$1|आहे|आहेत}}.',
'category-article-count' => '{{PLURAL:$2|या वर्गात फक्त खालील लेख आहे.|एकूण $2 पैकी खालील {{PLURAL:$1|पान|$1 पाने}} या वर्गात {{PLURAL:$1|आहे|आहेत}}.}}',
@@ -312,10 +421,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ मीडियाविकी नेहमी विचारले जाणारे प्रश्न]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिस्ट]',
-'about' => 'च्या विषयी',
-'article' => 'लेख',
-'newwindow' => '(नवीन खिडकीत उघडते.)',
-'cancel' => 'रद्द करा',
+'about' => 'च्या विषयी',
+'article' => 'लेख',
+'newwindow' => '(नवीन खिडकीत उघडते.)',
+'cancel' => 'रद्द करा',
+'moredotdotdot' => 'अजून...',
+'mypage' => 'माझे पृष्ठ',
+'mytalk' => 'माझ्या चर्चा',
+'anontalk' => 'या अंकपत्त्याचे चर्चा पान उघडा',
+'navigation' => 'सुचालन',
+'and' => '&#32;आणि',
+
+# Cologne Blue skin
'qbfind' => 'शोध',
'qbbrowse' => 'विचरण',
'qbedit' => 'संपादन',
@@ -323,15 +440,8 @@ $messages = array(
'qbpageinfo' => 'पृष्ठ जानकारी',
'qbmyoptions' => 'माझी पाने',
'qbspecialpages' => 'विशेष पृष्ठे',
-'moredotdotdot' => 'अजून...',
-'mypage' => 'माझे पृष्ठ',
-'mytalk' => 'माझ्या चर्चा',
-'anontalk' => 'या अंकपत्त्याचे चर्चा पान उघडा',
-'navigation' => 'सुचालन',
-'and' => '&#32;आणि',
-
-# Metadata in edit box
-'metadata_help' => 'मेटाडाटा:',
+'faq' => 'नेहमीची प्रश्नावली',
+'faqpage' => 'Project:प्रश्नावली',
'errorpagetitle' => 'चुक',
'returnto' => '$1 कडे परत चला.',
@@ -381,7 +491,7 @@ $messages = array(
'otherlanguages' => 'इतर भाषा',
'redirectedfrom' => '($1 पासून पुनर्निर्देशित)',
'redirectpagesub' => 'पुनर्निर्देशनाचे पान',
-'lastmodifiedat' => 'या पानातील शेवटचा बदल $1 रोजी $2 वाजता केला गेला.', # $1 date, $2 time
+'lastmodifiedat' => 'या पानातील शेवटचा बदल $1 रोजी $2 वाजता केला गेला.',
'viewcount' => 'हे पान {{PLURAL:$1|एकदा|$1 वेळा}} बघितले गेलेले आहे.',
'protectedpage' => 'सुरक्षित पृष्ठ',
'jumpto' => 'येथे जा:',
@@ -392,7 +502,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} बद्दल',
'aboutpage' => 'Project:माहितीपृष्ठ',
'copyright' => 'येथील मजकूर $1च्या अंतर्गत उपलब्ध आहे.',
-'copyrightpagename' => '{{SITENAME}} प्रताधिकार',
'copyrightpage' => '{{ns:project}}:प्रताधिकार',
'currentevents' => 'सद्य घटना',
'currentevents-url' => 'Project:सद्य घटना',
@@ -400,8 +509,6 @@ $messages = array(
'disclaimerpage' => 'Project: सर्वसाधारण उत्तरदायकत्वास नकार',
'edithelp' => 'संपादन साहाय्य',
'edithelppage' => 'Help:संपादन',
-'faq' => 'नेहमीची प्रश्नावली',
-'faqpage' => 'Project:प्रश्नावली',
'helppage' => 'Help:साहाय्य पृष्ठ',
'mainpage' => 'मुखपृष्ठ',
'mainpage-description' => 'मुखपृष्ठ',
@@ -482,10 +589,6 @@ MySQL ने "<tt>$3: $4</tt>" ही त्रूटी दिलेली आ
"$1"
"$2" या कार्यकृतीमधून .
MySQL returned error "$3: $4".',
-'noconnect' => 'क्षमस्व! विकिस तांत्रिक अडचण भेडसावत असल्यामुळे तो विदागारास संपर्क करू शकत नाही.<br />
-$1',
-'nodb' => '$1 विदागार निवडता आला नाही.',
-'cachederror' => 'खाली दिलेली प्रत ही मागितलेल्या पानाची सयीतील आवृत्ती आहे, ही कदाचित अद्ययावत असणार नाही.',
'laggedslavemode' => 'सुचना: पानावर नवीन बदल नसतील.',
'readonly' => 'विदागारास (database) ताळे आहे.',
'enterlockreason' => 'विदागारास ताळे ठोकण्याचे कारण, ताळे उघडले जाण्याच्या अदमासे कालावधीसहीत द्या.',
@@ -544,7 +647,6 @@ $2',
'virus-unknownscanner' => 'अनोळखी ऍन्टीव्हायरस:',
# Login and logout pages
-'logouttitle' => 'बाहेर पडा',
'logouttext' => "'''तुम्ही आता अदाखल झाला(logout)आहात.'''
तुम्ही अनामिकपणे {{SITENAME}}चा उपयोग करत राहू शकता, किंवा त्याच अथवा वेगळ्या सदस्य नावाने [[Special:UserLogin| पुन्हा दाखल होऊ शकता]].
@@ -553,7 +655,6 @@ $2',
तुमचे खाते उघडण्यात आले आहे.
आपल्या [[Special:Preferences|{{SITENAME}} पसंती]] बदलण्यास विसरू नका.',
-'loginpagetitle' => 'सदस्य नोंदणी',
'yourname' => 'तुमचे नाव',
'yourpassword' => 'तुमचा परवलीचा शब्द',
'yourpasswordagain' => 'तुमचा परवलीचा शब्द पुन्हा लिहा',
@@ -576,21 +677,7 @@ $2',
'badretype' => 'आपला परवलीचा शब्द चुकीचा आहे.',
'userexists' => 'या नावाने सदस्याची नोंदणी झालेली आहे.
कृपया दुसरे सदस्य नाव निवडा.',
-'youremail' => 'आपला इमेल:',
-'username' => 'सदस्यनाम:',
-'uid' => 'सदस्य खाते:',
-'prefs-memberingroups' => 'खालील {{PLURAL:$1|गटाचा|गटांचा}} सदस्य:',
-'yourrealname' => 'तुमचे खरे नाव:',
-'yourlanguage' => 'भाषा:',
-'yournick' => 'आपले उपनाव (सहीसाठी)',
-'badsig' => 'अयोग्य कच्ची सही;HTML खूणा तपासा.',
-'badsiglength' => 'टोपणनाव खूप लांब आहे.
-टोपणनाव $1 {{PLURAL:$1|अक्षरापेक्षा|अक्षरांपेक्षा}} कमी लांबीचे हवे.',
-'email' => 'विपत्र(ई-मेल)',
-'prefs-help-realname' => 'तुमचे खरे नाव (वैकल्पिक): हे नाव दिल्यास आपले योगदान या नावाखाली नोंदले व दाखवले जाईल.',
'loginerror' => 'आपल्या प्रवेश नोंदणीमध्ये चुक झाली आहे',
-'prefs-help-email' => 'विरोप(ईमेल)(वैकल्पिक):इतरांना सदस्य किंवा सदस्य_चर्चा पानातून, तुमची ओळख देण्याची आवश्यकता न ठेवता , तुमच्याशी संपर्क सुविधा पुरवते.',
-'prefs-help-email-required' => 'विपत्र(ईमेल)पत्ता लागेल.',
'nocookiesnew' => 'सदस्य खाते उघडले ,पण तुम्ही खाते वापरून दाखल झालेले नाही आहात.{{SITENAME}} सदस्यांना दाखल करून घेताना त्यांच्या स्मृतीशेष (cookies) वापरते.तुम्ही स्मृतीशेष सुविधा अनुपलब्ध टेवली आहे.ती कृपया उपलब्ध करा,आणि नंतर तुमच्या नवीन सदस्य नावाने आणि परवलीने दाखल व्हा.',
'nocookieslogin' => '{{SITENAME}} सदस्यांना दाखल करून घेताना त्यांच्या स्मृतीशेष (cookies) वापरते.तुम्ही स्मृतीशेष सुविधा अनुपलब्ध टेवली आहे.स्मृतीशेष सुविधा कृपया उपलब्ध करा,आणि दाखल होण्यासाठी पुन्हा प्रयत्न करा.',
'noname' => 'आपण नोंदणीसाठी सदस्याचे योग्य नाव लिहिले नाही.',
@@ -632,17 +719,16 @@ $2',
'loginlanguagelabel' => 'भाषा: $1',
# Password reset dialog
-'resetpass' => 'परवलीचा शब्द पुर्नयोजन(रिसेट)करा.',
-'resetpass_announce' => 'तुम्ही इमेलमधून दिलेल्या तात्पुरत्या शब्दांकाने प्रवेश केलेला आहे. आपली सदस्य नोंदणी पूर्ण करण्यासाठी कृपया इथे नवीन परवलीचा शब्द द्या:',
-'resetpass_text' => '<!-- मजकूर इथे लिहा -->',
-'resetpass_header' => 'परवलीचे पुर्नयोजन करा',
-'oldpassword' => 'जुना परवलीचा शब्दः',
-'newpassword' => 'नवीन परवलीचा शब्द:',
-'retypenew' => 'पुन्हा एकदा परवलीचा शब्द',
-'resetpass_submit' => 'परवलीचा शब्द टाका आणि प्रवेश करा',
-'resetpass_success' => 'तुमचा परवलीचा शब्द बदललेला आहे! आता तुमचा प्रवेश करीत आहोत...',
-'resetpass_bad_temporary' => 'तात्पुरता परवलीचा शब्द चुकीचा आहे. तुम्ही कदाचित पूर्वीच परवलीचा शब्द बदललेला असेल किंवा नवीन तात्पुरता परवलीचा शब्द मागितलेला असेल.',
-'resetpass_forbidden' => '{{SITENAME}} वर परवलीचा शब्द बदलता येत नाही.',
+'resetpass' => 'परवलीचा शब्द पुर्नयोजन(रिसेट)करा.',
+'resetpass_announce' => 'तुम्ही इमेलमधून दिलेल्या तात्पुरत्या शब्दांकाने प्रवेश केलेला आहे. आपली सदस्य नोंदणी पूर्ण करण्यासाठी कृपया इथे नवीन परवलीचा शब्द द्या:',
+'resetpass_text' => '<!-- मजकूर इथे लिहा -->',
+'resetpass_header' => 'परवलीचे पुर्नयोजन करा',
+'oldpassword' => 'जुना परवलीचा शब्दः',
+'newpassword' => 'नवीन परवलीचा शब्द:',
+'retypenew' => 'पुन्हा एकदा परवलीचा शब्द',
+'resetpass_submit' => 'परवलीचा शब्द टाका आणि प्रवेश करा',
+'resetpass_success' => 'तुमचा परवलीचा शब्द बदललेला आहे! आता तुमचा प्रवेश करीत आहोत...',
+'resetpass_forbidden' => '{{SITENAME}} वर परवलीचा शब्द बदलता येत नाही.',
# Edit page toolbar
'bold_sample' => 'ठळक मजकूर',
@@ -711,7 +797,6 @@ $2',
'blockededitsource' => "'''$1'''ला '''तुमची संपादने'''चा मजकुर खाली दाखवला आहे:",
'whitelistedittitle' => 'संपादनासाठी सदस्य म्हणून प्रवेश आवश्यक आहे.',
'whitelistedittext' => 'लेखांचे संपादन करण्यासाठी आधी $1 करा.',
-'confirmedittitle' => 'संपादनाकरिता विपत्राने शाबीत करणे आवश्यक',
'confirmedittext' => 'तुम्ही संपादने करण्यापुर्वी तुमचा विपत्र पत्ता शाबीत करणे आवश्यक आहे.Please set and validate तुमचा विपत्र पत्ता तुमच्या[[Special:Preferences|सदस्य पसंती]]तून लिहा व सिद्ध करा.',
'nosuchsectiontitle' => 'असा विभाग नाही.',
'nosuchsectiontext' => 'तुम्ही अस्तिवात नसलेला विभाग संपादन करण्याचा प्रयत्न केला आहे.',
@@ -732,7 +817,8 @@ $2',
'clearyourcache' => "'''सूचना:''' जतन केल्यानंतर, बदल पहाण्याकरिता तुम्हाला तुमच्या विचरकाची सय टाळायला लागू शकते. '''मोझील्ला/फायरफॉक्स /सफारी:''' ''Reload''करताना ''Shift''दाबून ठेवा किंवा ''Ctrl-Shift-R'' दाबा
(ऍपल मॅक वर ''Cmd-shift-R'');'''IE:''' ''Refresh'' टिचकताना ''Ctrl'' दाबा,किंवा ''Ctrl-F5'' दाबा ; '''Konqueror:''': केवळ '''Reload''' टिचकवा,किवा ''F5'' दाबा; '''Opera'''उपयोगकर्त्यांना ''Tools→Preferences'' मधील सय पूर्ण रिकामी करायला लागेल.",
-'usercssjsyoucanpreview' => "'''टीप:'''तुमचे नवे CSS/JS जतन करण्यापूर्वी 'झलक पहा' कळ वापरा.",
+'usercssyoucanpreview' => "'''टीप:'''तुमचे नवे CSS जतन करण्यापूर्वी 'झलक पहा' कळ वापरा.",
+'userjsyoucanpreview' => "'''टीप:'''तुमचे नवे JS जतन करण्यापूर्वी 'झलक पहा' कळ वापरा.",
'usercsspreview' => "'''तुम्ही तुमच्या सी.एस.एस.ची केवळ झलक पहात आहात, ती अजून जतन केलेली नाही हे लक्षात घ्या.'''",
'userjspreview' => "'''तुम्ही तुमची सदस्य जावास्क्रिप्ट तपासत आहात किंवा झलक पहात आहात ,ती अजून जतन केलेली नाही हे लक्षात घ्या!'''",
'userinvalidcssjstitle' => "'''सावधान:''' \"\$1\" अशी त्वचा नाही.custom .css आणि .js पाने lowercase title वापरतात हे लक्षात घ्या, उदा. {{ns:user}}:Foo/monobook.css या विरूद्ध {{ns:user}}:Foo/Monobook.css.",
@@ -788,10 +874,12 @@ $2',
'permissionserrors' => 'परवानगीतील त्रूटी',
'permissionserrorstext' => 'खालील{{PLURAL:$1|कारणामुळे|कारणांमुळे}} तुम्हाला तसे करण्याची परवानगी नाही:',
'permissionserrorstext-withaction' => 'तुम्हाला $2 ची परवानगी नाही, खालील {{PLURAL:$1|कारणासाठी|कारणांसाठी}}:',
-'recreate-deleted-warn' => "'''सूचना: पूर्वी वगळलेला लेख तुम्ही पुन्हा संपादित आहात.'''
+'recreate-moveddeleted-warn' => "'''सूचना: पूर्वी वगळलेला लेख तुम्ही पुन्हा संपादित आहात.'''
कृपया तुम्ही करत असलेले संपादन योग्य असल्याची खात्री करा.
या लेखाची वगळल्याची नोंद तुमच्या संदर्भाकरीता पुढीलप्रमाणे:",
+'moveddeleted-notice' => 'हे पान वगळण्यात आलेले आहे.
+खाली संदर्भासाठी वगळण्याची सूची दिलेली आहे.',
# Parser/template warnings
'expensive-parserfunction-warning' => 'इशारा: या पानावर खूप सारे खर्चिक पृथक्करण क्रिया कॉल्स आहेत.
@@ -823,7 +911,7 @@ $3ने ''$2'' कारण दिले आहे.",
'currentrev' => 'चालू आवृत्ती',
'currentrev-asof' => '$1 ची सध्याची आवृत्ती',
'revisionasof' => '$1 नुसारची आवृत्ती',
-'revision-info' => '$2ने $1चे आवर्तन', # Additionally available: $3: revision id
+'revision-info' => '$2ने $1चे आवर्तन',
'previousrevision' => '←मागील आवृत्ती',
'nextrevision' => 'पुढील आवृत्ती→',
'currentrevisionlink' => 'आताची आवृत्ती',
@@ -836,7 +924,6 @@ $3ने ''$2'' कारण दिले आहे.",
लिजेंड: (चालू) = चालू आवृत्तीशी फरक,
(मागील) = पूर्वीच्या आवृत्तीशी फरक, छो = छोटा बदल',
'history-fieldset-title' => 'इतिहास विंचरण करा',
-'deletedrev' => '[वगळले]',
'histfirst' => 'सर्वात जुने',
'histlast' => 'सर्वात नवीन',
'historysize' => '({{PLURAL:$1|1 बाइट|$1 बाइट}})',
@@ -845,7 +932,7 @@ $3ने ''$2'' कारण दिले आहे.",
# Revision feed
'history-feed-title' => 'आवृत्ती इतिहास',
'history-feed-description' => 'विकिवरील या पानाच्या आवृत्त्यांचा इतिहास',
-'history-feed-item-nocomment' => '$2 इथले $1', # user at time
+'history-feed-item-nocomment' => '$2 इथले $1',
'history-feed-empty' => 'विनंती केलेले पान अस्तित्वात नाही.
ते विकिवरून वगळले किंवा नाव बदललेले असण्याची शक्यता आहे.
@@ -856,11 +943,11 @@ $3ने ''$2'' कारण दिले आहे.",
'rev-deleted-comment' => '(प्रतिक्रीया वगळली)',
'rev-deleted-user' => '(सदस्य नाव वगळले)',
'rev-deleted-event' => '(कार्य नोंद वगळली)',
-'rev-deleted-text-permission' => 'या पानाची आवृत्ती सार्वजनिक विदागारातून वगळण्यात आली आहे.
+'rev-deleted-text-permission' => "या पानाची आवृत्ती सार्वजनिक विदागारातून '''वगळण्यात आली आहे'''.
-[{{fullurl:Special:Log/delete|पान={{FULLPAGENAMEE}}}} वगळल्याच्या नोंदीत निर्देश असण्याची शक्यता आहे].',
-'rev-deleted-text-view' => 'पानाचे हे आवर्तन सार्वजनिक विदागारातून वगळण्यात आले आहे.
-{{SITENAME}}च्या प्रबंधक या नात्याने तुम्ही ते पाहू शकता; [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदीत] माहिती असण्याची शक्यता आहे .',
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळल्याच्या नोंदीत]निर्देश असण्याची शक्यता आहे",
+'rev-deleted-text-view' => "!!पानाचे हे आवर्तन सार्वजनिक विदागारातून '''वगळण्यात आले आहे'''.
+{{SITENAME}}च्या प्रबंधक या नात्याने तुम्ही ते पाहू शकता; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदीत] माहिती असण्याची शक्यता आहे .",
'rev-delundel' => 'दाखवा/लपवा',
'revisiondelete' => 'आवर्तने वगळा/पुनर्स्थापित करा',
'revdelete-nooldid-title' => 'अपेक्षीत आवृत्ती दिलेली नाही',
@@ -872,12 +959,12 @@ $3ने ''$2'' कारण दिले आहे.",
अजून इतर प्रतिबंध घातल्या शिवाय {{SITENAME}}चे इतर प्रबंधक झाकलेला मजकुर याच दुव्याने परतवू शकतील.",
'revdelete-legend' => 'दृश्य बंधने निश्चित करा',
'revdelete-hide-text' => 'आवर्तीत मजकुर लपवा',
+'revdelete-hide-image' => 'संचिका मजकुर लपवा',
'revdelete-hide-name' => 'कृती आणि ध्येय लपवा',
'revdelete-hide-comment' => 'संपादन प्रतिक्रीया लपवा',
'revdelete-hide-user' => 'संपादकाचे सदस्यनाव/आंतरजाल अंकपत्ता लपवा',
'revdelete-hide-restricted' => 'ही बंधने प्रबंधक तसेच इतरांनाही लागू करा तसेच इंटरफेस ला ताळा ठोका',
'revdelete-suppress' => 'प्रबंधक तसेच इतरांपासून विदा लपवा',
-'revdelete-hide-image' => 'संचिका मजकुर लपवा',
'revdelete-unsuppress' => 'पुर्नस्थापीत आवृत्तीवरील बंधने ऊठवा',
'revdelete-log' => 'कारण:',
'revdelete-submit' => 'निवडलेल्या आवृत्त्यांना लागू करा',
@@ -897,6 +984,7 @@ $3ने ''$2'' कारण दिले आहे.",
'revdelete-unhid' => 'अनहिड $1',
'revdelete-log-message' => '$2 {{PLURAL:$2|आवॄत्ती|आवृत्त्यां}}साठी $1',
'logdelete-log-message' => '$2 {{PLURAL:$2|घटने|घटनां}}साठी $1',
+'revdelete-edit-reasonlist' => 'वगळण्याची कारणे संपादीत करा',
# Suppression log
'suppressionlog' => 'सप्रेशन नोंद',
@@ -943,16 +1031,14 @@ $3ने ''$2'' कारण दिले आहे.",
'searchresulttext' => '{{SITENAME}} वरील माहिती कशी शोधावी, याच्या माहिती करता पहा - [[{{MediaWiki:Helppage}}|{{SITENAME}} वर शोध कसा घ्यावा]].',
'searchsubtitle' => 'तुम्ही \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ने सुरू होणारी सर्व पाने]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ला जोडणारी सर्व पाने]]) याचा शोध घेत आहात.',
'searchsubtitleinvalid' => "तुम्ही '''$1''' या शब्दाचा शोध घेत आहात.",
-'noexactmatch' => "'''\"\$1\" या मथळ्याचा लेख अस्तित्त्वात नाही.''' तुम्ही हा लेख [[:\$1|लिहु शकता]].",
-'noexactmatch-nocreate' => "'''येथे \"\$1\" शीर्षकाचे पान नाही.'''",
'toomanymatches' => 'खूप एकसारखी उत्तरे मिळाली, कृपया पृच्छा वेगळ्या तर्‍हेने करून पहा',
'titlematches' => 'पानाचे शीर्षक जुळते',
'notitlematches' => 'कोणत्याही पानाचे शीर्षक जुळत नाही',
'textmatches' => 'पानातील मजकुर जुळतो',
'notextmatches' => 'पानातील मजकुराशी जुळत नाही',
-'prevn' => 'मागील $1',
-'nextn' => 'पुढील $1',
-'viewprevnext' => 'पहा ($1 ) ($2) ($3).',
+'prevn' => 'मागील {{PLURAL:$1|$1}}',
+'nextn' => 'पुढील {{PLURAL:$1|$1}}',
+'viewprevnext' => 'पहा ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:साहाय्य पृष्ठ',
'search-result-size' => '$1 ({{PLURAL:$2|१ शब्द|$2 शब्द}})',
'search-result-score' => 'जुळणी: $1%',
@@ -970,7 +1056,6 @@ $3ने ''$2'' कारण दिले आहे.",
'searchall' => 'सर्व',
'showingresults' => "#'''$2'''पासून {{PLURAL:$1|'''1'''पर्यंतचा निकाल|'''$1'''पर्यंतचे निकाल}} खाली दाखवले आहे.",
'showingresultsnum' => "खाली दिलेले #'''$2'''पासून सुरू होणारे {{PLURAL:$3|'''1''' निकाल|'''$3''' निकाल}}.",
-'showingresultstotal' => "खाली '''$3''' पैकी {{PLURAL:$4|'''$1''' निकाल|'''$1 - $2''' निकाल}} दाखवित आहे",
'nonefound' => "'''सूचना''':काही नामविश्वेच नेहमी शोधली जातात. सर्व नामविश्वे शोधण्याकरीता (चर्चा पाने, साचे, इ. सकट) कॄपया शोधशब्दांच्या आधी ''all:'' लावून पहा किंवा पाहिजे असलेले नामविश्व लिहा.",
'powersearch' => 'वाढीव शोध',
'powersearch-legend' => 'वाढीव शोध',
@@ -980,69 +1065,73 @@ $3ने ''$2'' कारण दिले आहे.",
'search-external' => 'बाह्य शोध',
'searchdisabled' => '{{SITENAME}} शोध अनुपलब्ध केला आहे.तो पर्यंत गूगलवरून शोध घ्या.{{SITENAME}}च्या मजकुराची त्यांची सूचिबद्धता शिळी असण्याची शक्यता असु शकते हे लक्षात घ्या.',
-# Preferences page
-'preferences' => 'माझ्या पसंती',
-'mypreferences' => 'माझ्या पसंती',
-'prefs-edits' => 'संपादनांची संख्या:',
-'prefsnologin' => 'प्रवेश केलेला नाही',
-'prefsnologintext' => 'सदस्य पसंती बदलण्यासाठी [[Special:UserLogin|प्रवेश]] करावा लागेल.',
-'prefsreset' => 'पसंती पूर्ववत करण्यात आल्या आहेत.',
+# Quickbar
'qbsettings' => 'शीघ्रपट',
'qbsettings-none' => 'नाही',
'qbsettings-fixedleft' => 'स्थिर डावे',
'qbsettings-fixedright' => 'स्थिर ऊजवे',
'qbsettings-floatingleft' => 'तरंगते डावे',
'qbsettings-floatingright' => 'तरंगते ऊजवे',
-'changepassword' => 'परवलीचा शब्द बदला',
-'skin' => 'त्वचा',
-'skin-preview' => 'झलक',
-'math' => 'गणित',
-'dateformat' => 'दिनांक लेखनशैली',
-'datedefault' => 'प्राथमिकता नाही',
-'datetime' => 'दिनांक आणि वेळ',
-'math_failure' => 'पृथक्करणात अयशस्वी',
-'math_unknown_error' => 'अपरिचित त्रूटी',
-'math_unknown_function' => 'अज्ञात कार्य',
-'math_lexing_error' => 'लेक्झींग(कोशीय?)त्रूटी',
-'math_syntax_error' => 'आज्ञावली-विन्यास त्रूटी',
-'math_image_error' => 'PNG पालट अयशस्वी; latex, dvips, gs ची स्थापना योग्य झाली आहे काय ते तपासा आणि बदल करा',
-'math_bad_tmpdir' => '"गणितीय तूर्त धारिके"(math temp directory)ची निर्मीती करू शकत नाही अथवा "मॅथ तूर्त धारिकेत" लिहू शकत नाही .',
-'math_bad_output' => 'गणितीय प्राप्त धारिकेची( math output directory) निर्मीती अथवा त्यात लेखन करू शकत नाही.',
-'math_notexvc' => 'texvcकरणी(texvc एक्झिक्यूटेबल)चूकमुकली आहे;कृपया,सज्जीत करण्याकरिता math/README पहा.',
-'prefs-personal' => 'सदस्य व्यक्तिरेखा',
-'prefs-rc' => 'अलीकडील बदल',
-'prefs-watchlist' => 'पहार्‍याची सूची',
-'prefs-watchlist-days' => 'पहार्‍याच्या सूचीत दिसणार्‍या दिवसांची संख्या:',
-'prefs-watchlist-edits' => 'वाढीव पहार्‍याच्या सूचीत दिसणार्‍या संपादनांची संख्या:',
-'prefs-misc' => 'इतर',
-'saveprefs' => 'जतन करा',
-'resetprefs' => 'न जतन केलेले बदल रद्द करा',
-'textboxsize' => 'संपादन',
-'rows' => 'ओळी:',
-'columns' => 'स्तंभ:',
-'searchresultshead' => 'शोध',
-'resultsperpage' => 'प्रति पान धडका:',
-'contextlines' => 'प्रति धडक ओळी:',
-'contextchars' => 'प्रतिओळ संदर्भ:',
-'stub-threshold' => '<a href="#" class="stub">अंकुरीत दुव्यांच्या</a> रचनेची नांदी (बाईट्स):',
-'recentchangesdays' => 'अलिकडील बदल मधील दाखवावयाचे दिवस:',
-'recentchangescount' => 'अलिकडील बदल, इतिहास व नोंद पानांमध्ये दाखवायाच्या संपादनांची संख्या:',
-'savedprefs' => 'तुमच्या पसंती जतन केल्या आहेत.',
-'timezonelegend' => 'काळवेळ प्रभाग',
-'timezonetext' => '¹विदागारदात्याच्या वेळेपासून(UTC) तुमच्या स्थानिक वेळेचा तासांनी फरक.',
-'localtime' => 'स्थानिक वेळ',
-'timezoneoffset' => 'समासफरक¹',
-'servertime' => 'विदागारदात्याची वेळ',
-'guesstimezone' => 'विचरकातून भरा',
-'allowemail' => 'इतर सदस्यांकडून इ-मेल येण्यास मुभा द्या',
-'prefs-searchoptions' => 'शोध विकल्प',
-'prefs-namespaces' => 'नामविश्वे',
-'defaultns' => 'या नामविश्वातील अविचल शोध :',
-'default' => 'अविचल',
-'files' => 'संचिका',
+
+# Preferences page
+'preferences' => 'माझ्या पसंती',
+'mypreferences' => 'माझ्या पसंती',
+'prefs-edits' => 'संपादनांची संख्या:',
+'prefsnologin' => 'प्रवेश केलेला नाही',
+'prefsnologintext' => 'सदस्य पसंती बदलण्यासाठी [[Special:UserLogin|प्रवेश]] करावा लागेल.',
+'changepassword' => 'परवलीचा शब्द बदला',
+'prefs-skin' => 'त्वचा',
+'skin-preview' => 'झलक',
+'prefs-math' => 'गणित',
+'datedefault' => 'प्राथमिकता नाही',
+'prefs-datetime' => 'दिनांक आणि वेळ',
+'prefs-personal' => 'सदस्य व्यक्तिरेखा',
+'prefs-rc' => 'अलीकडील बदल',
+'prefs-watchlist' => 'पहार्‍याची सूची',
+'prefs-watchlist-days' => 'पहार्‍याच्या सूचीत दिसणार्‍या दिवसांची संख्या:',
+'prefs-watchlist-edits' => 'वाढीव पहार्‍याच्या सूचीत दिसणार्‍या संपादनांची संख्या:',
+'prefs-misc' => 'इतर',
+'saveprefs' => 'जतन करा',
+'resetprefs' => 'न जतन केलेले बदल रद्द करा',
+'prefs-editing' => 'संपादन',
+'rows' => 'ओळी:',
+'columns' => 'स्तंभ:',
+'searchresultshead' => 'शोध',
+'resultsperpage' => 'प्रति पान धडका:',
+'contextlines' => 'प्रति धडक ओळी:',
+'contextchars' => 'प्रतिओळ संदर्भ:',
+'stub-threshold' => '<a href="#" class="stub">अंकुरीत दुव्यांच्या</a> रचनेची नांदी (बाईट्स):',
+'recentchangesdays' => 'अलिकडील बदल मधील दाखवावयाचे दिवस:',
+'recentchangescount' => 'अलिकडील बदल, इतिहास व नोंद पानांमध्ये दाखवायाच्या संपादनांची संख्या:',
+'savedprefs' => 'तुमच्या पसंती जतन केल्या आहेत.',
+'timezonelegend' => 'काळवेळ प्रभाग',
+'localtime' => 'स्थानिक वेळ',
+'timezoneoffset' => 'समासफरक¹',
+'servertime' => 'विदागारदात्याची वेळ',
+'guesstimezone' => 'विचरकातून भरा',
+'allowemail' => 'इतर सदस्यांकडून इ-मेल येण्यास मुभा द्या',
+'prefs-searchoptions' => 'शोध विकल्प',
+'prefs-namespaces' => 'नामविश्वे',
+'defaultns' => 'या नामविश्वातील अविचल शोध :',
+'default' => 'अविचल',
+'prefs-files' => 'संचिका',
+'youremail' => 'आपला इमेल:',
+'username' => 'सदस्यनाम:',
+'uid' => 'सदस्य खाते:',
+'prefs-memberingroups' => 'खालील {{PLURAL:$1|गटाचा|गटांचा}} सदस्य:',
+'yourrealname' => 'तुमचे खरे नाव:',
+'yourlanguage' => 'भाषा:',
+'yournick' => 'आपले उपनाव (सहीसाठी)',
+'badsig' => 'अयोग्य कच्ची सही;HTML खूणा तपासा.',
+'badsiglength' => 'टोपणनाव खूप लांब आहे.
+टोपणनाव $1 {{PLURAL:$1|अक्षरापेक्षा|अक्षरांपेक्षा}} कमी लांबीचे हवे.',
+'email' => 'विपत्र(ई-मेल)',
+'prefs-help-realname' => 'तुमचे खरे नाव (वैकल्पिक): हे नाव दिल्यास आपले योगदान या नावाखाली नोंदले व दाखवले जाईल.',
+'prefs-help-email' => 'विरोप(ईमेल)(वैकल्पिक):इतरांना सदस्य किंवा सदस्य_चर्चा पानातून, तुमची ओळख देण्याची आवश्यकता न ठेवता , तुमच्याशी संपर्क सुविधा पुरवते.',
+'prefs-help-email-required' => 'विपत्र(ईमेल)पत्ता लागेल.',
# User rights
-'userrights' => 'सदस्य अधिकार व्यवस्थापन', # Not used as normal message but as header for the special page itself
+'userrights' => 'सदस्य अधिकार व्यवस्थापन',
'userrights-lookup-user' => 'सदस्य गटांचे(ग्रूप्स) व्यवस्थापन करा.',
'userrights-user-editname' => 'सदस्य नाव टाका:',
'editusergroup' => 'सदस्य गट (ग्रूप्स) संपादीत करा',
@@ -1124,6 +1213,8 @@ $3ने ''$2'' कारण दिले आहे.",
'right-editprotected' => 'सुरक्षित पाने संपादा',
'right-editinterface' => 'सदस्य पसंती बदला',
'right-editusercssjs' => 'इतर सदस्यांच्या CSS व JS संचिका संपादित करा',
+'right-editusercss' => 'इतर सदस्यांच्या CSS संचिका संपादित करा',
+'right-edituserjs' => 'इतर सदस्यांच्या JS संचिका संपादित करा',
'right-rollback' => 'एखादे विशिष्ट पान ज्याने संपादन केले त्याला लवकर पूर्वपदास न्या',
'right-markbotedits' => 'निवडलेली संपादने सांगकाम्यांची म्हणून जतन करा',
'right-noratelimit' => 'रेट लिमिट्स चा परिणाम होत नाही.',
@@ -1180,6 +1271,8 @@ $3ने ''$2'' कारण दिले आहे.",
# Recent changes linked
'recentchangeslinked' => 'या पृष्ठासंबंधीचे बदल',
+'recentchangeslinked-feed' => 'या पृष्ठासंबंधीचे बदल',
+'recentchangeslinked-toolbox' => 'या पृष्ठासंबंधीचे बदल',
'recentchangeslinked-title' => '"$1" च्या संदर्भातील बदल',
'recentchangeslinked-noresult' => 'जोडलेल्या पानांमध्ये दिलेल्या कालावधीत काहीही बदल झालेले नाहीत.',
'recentchangeslinked-summary' => "हे पृष्ठ एखाद्या विशिष्ट पानाशी (किंवा एखाद्या विशिष्ट वर्गात असणार्‍या पानांशी) जोडलेल्या पानांवरील बदल दर्शवते.
@@ -1190,7 +1283,6 @@ $3ने ''$2'' कारण दिले आहे.",
# Upload
'upload' => 'संचिका चढवा',
'uploadbtn' => 'संचिका चढवा',
-'reupload' => 'पुन्हा चढवा',
'reuploaddesc' => 'चढवायच्या पानाकडे परता',
'uploadnologin' => 'प्रवेश केलेला नाही',
'uploadnologintext' => 'संचिका चढविण्यासाठी तुम्हाला [[Special:UserLogin|प्रवेश]] करावा लागेल.',
@@ -1235,7 +1327,6 @@ $3ने ''$2'' कारण दिले आहे.",
* चढवित असलेल्या संचिकेचे नाव: '''<tt>[[:$1]]</tt>'''
* अस्तित्वात असलेल्या संचिकेचे नाव: '''<tt>[[:$2]]</tt>'''
कृपया दुसरे नाव निवडा.",
-'fileexists-thumb' => "<center>'''सध्याची संचिका'''</center>",
'fileexists-thumbnail-yes' => "आपण चढवित असलेली संचिका ही मोठ्या चित्राची इवलीशी प्रतिकृती ''(thumbnail)'' असण्याची शक्यता आहे. [[$1|इवलेसे]]
कृपया '''<tt>[[:$1]]</tt>''' ही संचिका तपासा.
जर तपासलेली संचिका ही याच आकाराची असेल तर नवीन प्रतिकृती चढविण्याची गरज नाही.",
@@ -1253,7 +1344,6 @@ $3ने ''$2'' कारण दिले आहे.",
'uploaddisabled' => 'संचिका चढविण्यास बंदी घालण्यात आलेली आहे.',
'uploaddisabledtext' => '{{SITENAME}} वर संचिका चढविण्यास बंदी घालण्यात आलेली आहे.',
'uploadscripted' => 'या संचिकेत HTML किंवा स्क्रिप्ट कोडचा आंतर्भाव आहे, त्याचा एखाद्या विचरकाकडून विचीत्र अर्थ लावला जाऊ शकतो.',
-'uploadcorrupt' => 'ही संचिका भ्रष्ट आहे किंवा तिचे नाव व्यवस्थित नाही. कृपया संचिका तपासा आणि पुन्हा चढवा.',
'uploadvirus' => 'ह्या संचिकेत व्हायरस आहे. अधिक माहिती: $1',
'sourcefilename' => 'स्रोत-संचिकानाम:',
'destfilename' => 'नवे संचिकानाम:',
@@ -1280,6 +1370,7 @@ $3ने ''$2'' कारण दिले आहे.",
'upload-curl-error28-text' => 'संकेतस्थळाने साद देण्यात खूप जास्त वेळ घेतला आहे,कृपया थोडा वेळ थांबा आणि पुन्हा प्रयत्न करा.कदाचित तुम्ही कमी गर्दीच्या वेळात प्रयत्न करू इच्छीताल.',
'license' => 'परवाना:',
+'license-header' => 'परवाना:',
'nolicense' => 'काही निवडलेले नाही',
'license-nopreview' => '(झलक उपलब्ध नाही)',
'upload_source_url' => '(एक सुयोग्य,सार्वजनिकरित्या उपलब्ध URL)',
@@ -1299,6 +1390,7 @@ $3ने ''$2'' कारण दिले आहे.",
'listfiles_description' => 'वर्णन',
# File description page
+'file-anchor-link' => 'संचिका',
'filehist' => 'संचिकेचा इतिहास',
'filehist-help' => 'संचिकेची पूर्वीची आवृत्ती बघण्यासाठी दिनांक/वेळ वर टिचकी द्या.',
'filehist-deleteall' => 'सर्व वगळा',
@@ -1318,12 +1410,7 @@ $3ने ''$2'' कारण दिले आहे.",
'morelinkstoimage' => 'या संचिकेचे [[Special:WhatLinksHere/$1|अधिक दुवे]] पहा.',
'redirectstofile' => 'खालील संचिका या संचिकेकडे पुनर्निर्देशन करतात:',
'duplicatesoffile' => 'खालील संचिका या दिलेल्या संचिकेच्या प्रती आहेत:',
-'sharedupload' => 'ही संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली गेल्याची शक्यता आहे.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'अधिक माहितीसाठी $1 पहा.',
-'shareduploadwiki-desc' => 'माहिती जी $1 वर शेअर्ड रिपॉझिटरी मध्ये आहे ती खाली दिलेली आहे.',
-'shareduploadwiki-linktext' => 'संचिका वर्णन पान',
-'noimage' => 'या नावाचे चित्र अस्तित्त्वात नाही. $1 करून पहा.',
-'noimage-linktext' => 'चढवा',
+'sharedupload' => 'ही संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली गेल्याची शक्यता आहे.',
'uploadnewversion-linktext' => 'या संचिकेची नवीन आवृत्ती चढवा',
# File reversion
@@ -1394,8 +1481,8 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
'brokenredirects' => 'मोडके पुनर्निर्देशन',
'brokenredirectstext' => 'खालील पुनर्निर्देशने अस्तित्वात नसलेली पाने जोडतात:',
-'brokenredirects-edit' => '(संपादा)',
-'brokenredirects-delete' => '(वगळा)',
+'brokenredirects-edit' => 'संपादा',
+'brokenredirects-delete' => 'वगळा',
'withoutinterwiki' => 'आंतरविकि दुवे नसलेली पाने',
'withoutinterwiki-summary' => 'खालील लेखात इतर भाषांमधील आवृत्तीला दुवे नाहीत:',
@@ -1615,7 +1702,7 @@ $NEWPAGE
--
-तुमचे पहार्‍यातील पानांची मांडणावळ (कोंदण) बदलू शकता,{{fullurl:{{ns:special}}:Watchlist/edit}}ला भेट द्या
+तुमचे पहार्‍यातील पानांची मांडणावळ (कोंदण) बदलू शकता,{{fullurl:{{#special:Watchlist}}/edit}}ला भेट द्या
पुढील सहाय्य आणि प्रतिक्रीया:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1662,8 +1749,8 @@ $NEWPAGE
'alreadyrolled' => 'Cannot rollback last edit of by [[User:$2|$2]] ([[User talk:$2|Talk]])चे शेवटाचे [[:$1]]वे संपादन माघारी परतवता येतनाही; पान आधीच कुणी माघारी परतवले आहे किंवा संपादीत केले आहे.
शेवटचे संपादन [[User:$3|$3]] ([[User talk:$3|Talk]])-चे होते.',
-'editcomment' => "बदलासोबतची नोंद होती : \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|चर्चा]]) यांनी केलेले बदल [[User:$1|$1]] यांच्या आवृत्तीकडे पूर्वपदास नेले.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "बदलासोबतची नोंद होती : \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|चर्चा]]) यांनी केलेले बदल [[User:$1|$1]] यांच्या आवृत्तीकडे पूर्वपदास नेले.',
'rollback-success' => '$1 ने उलटवलेली संपादने;$2 च्या आवृत्तीस परत नेली.',
'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणा पासून काळजी घेण्याच्या दृष्टीने ही कृती रद्द केली गेली आहे.कपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि प्रत प्रयत्न करा.',
@@ -1680,7 +1767,6 @@ $NEWPAGE
'protectexpiry' => 'संपण्याचा कालावधी:',
'protect_expiry_invalid' => 'संपण्याचा कालावधी चुकीचा आहे.',
'protect_expiry_old' => 'संपण्याचा कालावधी उलटून गेलेला आहे.',
-'protect-unchain' => 'स्थानांतरणाची परवानगी द्या',
'protect-text' => "'''<nowiki>$1</nowiki>''' या पानाची सुरक्षापातळी तुम्ही इथे पाहू शकता अथवा बदलू शकता.",
'protect-locked-blocked' => "तुम्ही प्रतिबंधीत असताना सुरक्षा पातळी बदलू शकत नाही.येथे '''$1''' पानाकरिता सध्याची मांडणावळ आहे:",
'protect-locked-dblock' => "विदागारास ताळे लागलेले असताना सुरक्षा पातळी बदलता येत नाही.येथे '''$1''' पानाकरिता सध्याची मांडणावळ आहे:",
@@ -1695,7 +1781,7 @@ $NEWPAGE
'protect-expiring' => '$1 (UTC) ला संपेल',
'protect-cascade' => 'या पानात असलेली पाने सुरक्षित करा (सुरक्षा शिडी)',
'protect-cantedit' => 'तुम्ही या पानाची सुरक्षा पातळी बदलू शकत नाही कारण तुम्हाला तसे करण्याची परवानगी नाही.',
-'protect-expiry-options' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite',
'restriction-type' => 'परवानगी:',
'restriction-level' => 'सुरक्षापातळी:',
'minimum-size' => 'किमान आकार',
@@ -1765,7 +1851,7 @@ $1',
'contributions-title' => '$1 साठी सदस्याचे योगदान',
'mycontris' => 'माझे योगदान',
'contribsub2' => '$1 ($2) साठी',
-'nocontribs' => 'या मानदंडाशी जुळणारे बदल सापडले नाहीत.', # Optional parameter: $1 is the user name
+'nocontribs' => 'या मानदंडाशी जुळणारे बदल सापडले नाहीत.',
'uctop' => ' (वर)',
'month' => 'या महिन्यापासून (आणि पूर्वीचे):',
'year' => 'या वर्षापासून (आणि पूर्वीचे):',
@@ -1773,6 +1859,9 @@ $1',
'sp-contributions-newbies' => 'केवळ नवीन सदस्य खात्यांचे योगदान दाखवा',
'sp-contributions-newbies-sub' => 'नवशिक्यांसाठी',
'sp-contributions-blocklog' => 'ब्लॉक यादी',
+'sp-contributions-deleted' => 'वगळलेली सदस्य संपादने',
+'sp-contributions-talk' => 'चर्चा',
+'sp-contributions-userrights' => 'सदस्य अधिकार व्यवस्थापन',
'sp-contributions-search' => 'योगदान शोधयंत्र',
'sp-contributions-username' => 'आंतरजाल अंकपत्ता किंवा सदस्यनाम:',
'sp-contributions-submit' => 'शोध',
@@ -1821,7 +1910,7 @@ $1',
'ipbenableautoblock' => 'या सदस्याने वापरलेला शेवटचा अंकपत्ता आणि जेथून या पुढे तो संपादनाचा प्रयत्न करेल ते सर्व अंकपत्ते आपोआप प्रतिबंधीत करा.',
'ipbsubmit' => 'हा पत्ता अडवा',
'ipbother' => 'इतर वेळ:',
-'ipboptions' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite',
'ipbotheroption' => 'इतर',
'ipbotherreason' => 'इतर/अजून कारण:',
'ipbhidename' => 'सदस्य नाम प्रतिबंधन नोंदी, प्रतिबंधनाची चालू यादी आणि सदस्य यादी इत्यादीतून लपवा',
@@ -1846,7 +1935,7 @@ $1',
'ipblocklist-submit' => 'शोध',
'blocklistline' => '$3 ($4)ला $1, $2 ने प्रतिबंधीत केले',
'infiniteblock' => 'अनंत',
-'expiringblock' => 'समाप्ति $1',
+'expiringblock' => 'समाप्ति $1 $2',
'anononlyblock' => 'केवळ अनामिक',
'noautoblockblock' => 'स्व्यंचलितप्रतिबंधन स्थगित केले',
'createaccountblock' => 'खात्याची निर्मिती प्रतिबंधीत केली',
@@ -1932,7 +2021,7 @@ $1',
'move-watch' => 'या पानावर लक्ष ठेवा',
'movepagebtn' => 'स्थानांतरण करा',
'pagemovedsub' => 'स्थानांतरण यशस्वी',
-'movepage-moved' => '\'\'\'"$1" ला "$2" मथळ्याखाली स्थानांतरीत केले\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ला "$2" मथळ्याखाली स्थानांतरीत केले\'\'\'',
'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले
नाव योग्य नाही आहे.
कृपया दुसरे नाव शोधा.',
@@ -1986,8 +2075,6 @@ $1',
'allmessagescurrent' => 'सध्याचा मजकूर',
'allmessagestext' => 'MediaWiki नामविश्वातील सर्व प्रणाली संदेशांची यादी',
'allmessagesnotsupportedDB' => "हे पान संपादित करता येत नाही कारण'''\$wgUseDatabaseMessages''' मालवला आहे.",
-'allmessagesfilter' => 'संदेशनावांची चाळणी:',
-'allmessagesmodified' => 'फक्त बदललेले दाखवा',
# Thumbnails
'thumbnail-more' => 'मोठे करा',
@@ -2065,6 +2152,7 @@ $1',
'tooltip-search-fulltext' => 'या मजकुराकरिता पान शोधा',
'tooltip-p-logo' => 'मुखपृष्ठ',
'tooltip-n-mainpage' => 'मुखपृष्ठाला भेट द्या',
+'tooltip-n-mainpage-description' => 'मुखपृष्ठाला भेट द्या',
'tooltip-n-portal' => 'प्रकल्पाबद्दल, तुम्ही काय करू शकता, कुठे काय सापडेल',
'tooltip-n-currentevents' => 'सद्य घटनांबद्दलची माहिती',
'tooltip-n-recentchanges' => 'विकिवरील अलीकडील बदलांची यादी',
@@ -2110,7 +2198,7 @@ $1',
# Attribution
'anonymous' => '{{SITENAME}} वरील अनामिक सदस्य',
'siteuser' => '<!--{{SITENAME}}-->मराठी विकिपीडियाचा सदस्य $1',
-'lastmodifiedatby' => 'या पानातील शेवटचा बदल $3ने $2, $1 यावेळी केला.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'या पानातील शेवटचा बदल $3ने $2, $1 यावेळी केला.',
'othercontribs' => '$1 ने केलेल्या कामानुसार.',
'others' => 'इतर',
'siteusers' => '{{SITENAME}} सदस्य $1',
@@ -2153,6 +2241,17 @@ $1',
'mw_math_modern' => 'आधूनिक विचरकांकरिता सूचवलेले',
'mw_math_mathml' => 'शक्य असल्यास मॅथ एमएल (MathML) (प्रयोगावस्था)',
+# Math errors
+'math_failure' => 'पृथक्करणात अयशस्वी',
+'math_unknown_error' => 'अपरिचित त्रूटी',
+'math_unknown_function' => 'अज्ञात कार्य',
+'math_lexing_error' => 'लेक्झींग(कोशीय?)त्रूटी',
+'math_syntax_error' => 'आज्ञावली-विन्यास त्रूटी',
+'math_image_error' => 'PNG पालट अयशस्वी; latex, dvips, gs ची स्थापना योग्य झाली आहे काय ते तपासा आणि बदल करा',
+'math_bad_tmpdir' => '"गणितीय तूर्त धारिके"(math temp directory)ची निर्मीती करू शकत नाही अथवा "मॅथ तूर्त धारिकेत" लिहू शकत नाही .',
+'math_bad_output' => 'गणितीय प्राप्त धारिकेची( math output directory) निर्मीती अथवा त्यात लेखन करू शकत नाही.',
+'math_notexvc' => 'texvcकरणी(texvc एक्झिक्यूटेबल)चूकमुकली आहे;कृपया,सज्जीत करण्याकरिता math/README पहा.',
+
# Patrolling
'markaspatrolleddiff' => 'टेहळणी केल्याची खूण करा',
'markaspatrolledtext' => 'या पानावर गस्त झाल्याची खूण करा',
@@ -2224,7 +2323,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'रूंदी',
@@ -2351,14 +2450,14 @@ $1',
'exif-unknowndate' => 'अज्ञात तारीख',
-'exif-orientation-1' => 'सामान्य', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'समांतर पालटले', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° फिरवले', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'उभ्या बाजूने पालटले', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '९०° CCW अंशात वळवले आणि उभे पालटले', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° CW फिरवले', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° CW वळवले आणि उभे पलटवले', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° CCW फिरवले', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'सामान्य',
+'exif-orientation-2' => 'समांतर पालटले',
+'exif-orientation-3' => '180° फिरवले',
+'exif-orientation-4' => 'उभ्या बाजूने पालटले',
+'exif-orientation-5' => '९०° CCW अंशात वळवले आणि उभे पालटले',
+'exif-orientation-6' => '90° CW फिरवले',
+'exif-orientation-7' => '90° CW वळवले आणि उभे पलटवले',
+'exif-orientation-8' => '90° CCW फिरवले',
'exif-planarconfiguration-1' => 'चंकी संरचना (रूपरेषा)',
'exif-planarconfiguration-2' => 'प्लानर संरचना(रूपरेषा)',
@@ -2468,7 +2567,7 @@ $1',
'exif-gpsmeasuremode-2' => 'द्वि-दिश मापन',
'exif-gpsmeasuremode-3' => 'त्रि-दिश मोजमाप',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'प्रतिताशी किलोमीटर',
'exif-gpsspeed-m' => 'प्रतिताशी मैल',
'exif-gpsspeed-n' => 'गाठी',
@@ -2604,7 +2703,7 @@ $1',
'unknown_extension_tag' => 'अज्ञात विस्तार खूण "$1"',
# Special:Version
-'version' => 'आवृत्ती', # Not used as normal message but as header for the special page itself
+'version' => 'आवृत्ती',
'version-extensions' => 'स्थापित विस्तार',
'version-specialpages' => 'विशेष पाने',
'version-parserhooks' => 'पृथकक अंकुश',
@@ -2618,7 +2717,7 @@ $1',
'version-skin-extension-functions' => 'त्वचा अतिविस्तार(एक्स्टेंशन) कार्ये',
'version-hook-name' => 'अंकुश नाव',
'version-hook-subscribedby' => 'वर्गणीदार',
-'version-version' => 'आवृत्ती',
+'version-version' => '(आवृत्ती $1)',
'version-license' => 'परवाना',
'version-software' => 'स्थापित संगणक प्रणाली (Installed software)',
'version-software-product' => 'उत्पादन',
diff --git a/languages/messages/MessagesMrj.php b/languages/messages/MessagesMrj.php
new file mode 100644
index 00000000..ff4edc1e
--- /dev/null
+++ b/languages/messages/MessagesMrj.php
@@ -0,0 +1,716 @@
+<?php
+/** Hill Mari (Кырык мары)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Amdf
+ */
+
+$fallback = 'ru';
+
+$namespaceNames = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Спецӹлӹштӓш',
+ NS_TALK => 'Кӓнгӓшӹмӓш',
+ NS_USER => 'Сирӹшӹ',
+ NS_USER_TALK => 'Сирӹшӹн кӓнгӓшӹмӓшӹжӹ',
+ NS_PROJECT_TALK => '$1 кӓнгӓшӹмӓш',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файл кӓнгӓшӹмӓш',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki кӓнгӓшӹмӓш',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблон кӓнгӓшӹмӓш',
+ NS_HELP => 'Палшык',
+ NS_HELP_TALK => 'Палшыкын кӓнгӓшӹмӓш',
+ NS_CATEGORY => 'Категори',
+ NS_CATEGORY_TALK => 'Категори кӓнгӓшӹмӓш',
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Ажедмäшвлäм ыдыралаш',
+'tog-highlightbroken' => 'Уке ылшы ажедмäшвлäм <a href="" class="new"> тенге </a> (уке гӹнь тенге<a href="" class="internal">?</a>).',
+'tog-justify' => 'Текстӹм ӹлӹштäш кымдык тöрлäш',
+'tog-hideminor' => 'Изи тöрлӹмäшвлäм у вашталтымашвлä лошты шӹлташ, анжыкташ агыл',
+'tog-hidepatrolled' => 'Патрулируйымы тöрлӹмäшвлäм у вашталтымашвлä лошты шӹлташ, анжыкташ агыл',
+'tog-newpageshidepatrolled' => 'Патрулирыйымы ӹлӹшташвлäм у вашталтымашвлä лошты шӹлташ, анжыкташ агыл',
+'tog-extendwatchlist' => 'Вангӹмашӹн (анжымашын) кымда списокшы, кышты остатка веле агыл, а цилä вашталтымашым пыртымы',
+'tog-usenewrc' => 'У вашталтымашвлäн яжорак списокым кычылтман (JavaScript келеш)',
+'tog-numberheadings' => 'Артикль лӹмвлäм автоматически нумеруяш',
+'tog-showtoolbar' => 'Текстӹм тöрлӹмӹ годым кӱшӹл панельӹм анжыкташ (JavaScript)',
+'tog-editondblclick' => 'Ӹлӹшташвлäм кок гäнä темдäл, тöрлäш (JavaScript)',
+'tog-editsection' => '«Тöрлäш» ажедмäшӹм м цилä секцилäнок анжыкташ',
+'tog-editsectiononrightclick' => 'Секцим тöрлӹмӹ годым артикль лӹмӹм каля доно вургымлашты темдäлäш (JavaScript)',
+'tog-showtoc' => 'Кöргӹштӹш лӹмвлäм анжыкташ (3 гӹц шукырак артикль лӹмäн ӹлӹштäшвлäштӹ)',
+'tog-rememberpassword' => 'Мӹньӹн шотыш нäлмӹ сирмäшем ти компьютерӹштӹ äштäш',
+'tog-editwidth' => 'Тöрлӹмӹ паштек цилä экран кымдык',
+'tog-watchcreations' => 'Мӹньӹн ӹштӹмӹ ӹлӹштäшвлäэм вäнгӹмӹ списокыш пырташ',
+'tog-watchdefault' => 'Мӹньӹн вашталтымы ӹлӹштäшвлäэм вäнгӹмӹ списокыш пырташ',
+'tog-watchmoves' => 'Мӹньӹн лӹмӹм вашталтымы ӹлӹштäшвлäэм вäнгӹмӹ списокыш пырташ',
+'tog-watchdeletion' => 'Мӹньӹн карангдымы ӹлӹштäшвлäэм вäнгӹмӹ списокыш пырташ',
+'tog-minordefault' => 'Пäлдӹртӹмӹ агыл тöрлӹмäшвлäм когонжок керäлеш шотлаш агыл',
+'tog-previewontop' => 'Текстӹм анзыц анжен лäкмӹм тöрлӹмӹ окня анзыкы шӹндäш',
+'tog-previewonfirst' => 'Текстӹм анзыц анжен лäкмӹм тöрлäш тӹнгäлмӹ анзыц анжыкташ',
+'tog-nocache' => 'Ӹлӹштäшвлäн кешированим (шӹлтӹмӹм) цäрäш',
+'tog-enotifwatchlistpages' => 'Мам вäнгӹмӹ списокын ӹлӹштäшӹштӹ вашталтымы, тӹдӹм эл.почта доно увертäрäш',
+'tog-enotifusertalkpages' => 'Мам персональный ӹлӹштäшӹштӹ дискуссилäн пачмы, тӹ вашталтмашым эл.почта доно увертäрäш',
+'tog-enotifminoredits' => 'Изи вашталтымашвлä гишäнäт эл.почта доно увертäрäш',
+'tog-enotifrevealaddr' => 'Мӹньӹн эл.адресем увертäрӹмвлäштӹ анжыкташ',
+'tog-shownumberswatching' => 'Манярын ӹлӹштäшӹм вäнгӹмӹ списокышкышты пыртенӹт, анжыкташ',
+'tog-oldsig' => 'Ылшы сирӹмӹ подписьӹм анзыцок анжен лäктäш',
+'tog-fancysig' => 'Вики-пäлӹкӹн ӹшке подписьшӹ (автоматический ажедмäш гӹц пасна)',
+'tog-externaleditor' => 'Тӱнӹш тöрлӹшӹм кычылташ (компьютерӹн йори настройкыжы келеш)',
+'tog-externaldiff' => 'Вариантвлäн тäнгäштäрӹмӹ годым тӱнӹш программым кычылташ (компьютерӹн йори настройкыжы келеш)',
+'tog-showjumplinks' => '«ванжаш» палшышы ажедмäшвлäм чӱктäш',
+'tog-uselivepreview' => 'Текстӹм пӹсӹн анзыц анжен лäкмӹм кычылташ (эксперимент семӹнь JavaScript)',
+'tog-forceeditsummary' => 'Мам тöрлӹмӹ тӹ ”нырын” охыр ылмыжы гишäн пäлдӹртäш',
+'tog-watchlisthideown' => 'Мам тöрленäм, тӹдӹм вäнгӹмӹ спискышты шӹлтäш, анжыкташ агыл',
+'tog-watchlisthidebots' => 'Ботвлäм тöрлӹмӹм вäнгӹмӹ списокышты шӹлтäш, анжыкташ агыл',
+'tog-watchlisthideminor' => 'Изи тöрлӹмäшвлäм вäнгӹмӹ списокышты шӹлтäш, анжыкташ агыл',
+'tog-watchlisthideliu' => 'Лӹмӹштӹм анжыктышывлäн тöрлӹмӹштӹм вäнгӹмӹ списокышты шӹлтäш, анжыкташ агыл',
+'tog-watchlisthideanons' => 'Кӱ лӹмжӹм анжыктыде, тӹдӹм вäнгӹмӹ списокышты шӹлтäш, анжыкташ агыл',
+'tog-watchlisthidepatrolled' => 'Патрулируйымы тöрлӹмäшвлäм вäнгӹмӹ списокышты шӹлтäш, анжыкташ агыл',
+'tog-ccmeonemails' => 'Кӱлäн сирмäшӹм сирем, тӹдӹн копижӹм мӹлäм колташ',
+'tog-diffonly' => 'Кок верси доно тäнгäштäрен ӹлӹштäшӹн текстшӹм колташ агыл',
+'tog-showhiddencats' => 'Шӹлтӹмӹ категоривлäм анжыкташ',
+'tog-norollbackdiff' => 'Лишӹц колтымын вариантвлäн айыртемӹштӹм анжыкташ агыл',
+
+'underline-always' => 'Соок',
+'underline-never' => 'Нигнамат',
+'underline-default' => 'Браузерӹн настройкыжым кычылташ',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Тöрлӹмäштӹ шрифтӹн типшӹ',
+'editfont-default' => 'Браузерӹн настройкывлäн шрифтӹштӹ',
+'editfont-sansserif' => 'Шрифт ыдыралтышвлä гӹц пасна',
+'editfont-serif' => 'Шрифт ыдыралтышвлä доно',
+
+# Dates
+'sunday' => 'рушäрня',
+'monday' => 'шачмы',
+'tuesday' => 'кышкыжмы',
+'wednesday' => 'вӹргечӹ',
+'thursday' => 'изäрня',
+'friday' => 'когарня',
+'saturday' => 'кукшыгечӹ',
+'sun' => 'рш.',
+'mon' => 'шч',
+'tue' => 'кш',
+'wed' => 'вӹ',
+'thu' => 'из',
+'fri' => 'кг',
+'sat' => 'ку',
+'january' => 'январь',
+'february' => 'февраль',
+'march' => 'март',
+'april' => 'апрель',
+'may_long' => 'май',
+'june' => 'июнь',
+'july' => 'июль',
+'august' => 'август',
+'september' => 'сентябрь',
+'october' => 'октябрь',
+'november' => 'ноябрь',
+'december' => 'декабрь',
+'january-gen' => 'январьын',
+'february-gen' => 'февральын',
+'march-gen' => 'мартын',
+'april-gen' => 'апрельӹн',
+'may-gen' => 'майын',
+'june-gen' => 'июньын',
+'july-gen' => 'июльын',
+'august-gen' => 'августын',
+'september-gen' => 'сентябрьын',
+'october-gen' => 'октябрьын',
+'november-gen' => 'ноябрьын',
+'december-gen' => 'декабрьын',
+'jan' => 'янв',
+'feb' => 'фев',
+'mar' => 'мар',
+'apr' => 'апр',
+'may' => 'май',
+'jun' => 'июн',
+'jul' => 'июл',
+'aug' => 'авг',
+'sep' => 'сен',
+'oct' => 'окт',
+'nov' => 'ноя',
+'dec' => 'дек',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Категори|Категоривлӓ}}',
+'category_header' => 'Категори «$1» ӹлӹштӓшвлӓ',
+'subcategories' => 'Лӹвӓл категоривлӓ',
+'hidden-categories' => '{{PLURAL:$1|Шӹлтӹмӹ категори| Шӹлтӹмӹ категоривлӓ}}',
+'category-subcat-count' => '{{PLURAL:$2|Ти категориштӹ лач ти лӹвӓл категори веле.|{{PLURAL:$1|Лӹвӓл категорим $1 анжыктымы|Лӹвӓл категоривлӓм $1 анжыктымы|Лӹвӓл категорим $1}} анжыктымы $2.}}',
+'category-article-count' => '{{PLURAL:$2|Ти категориштӹ ик ӹлыштӓш веле. |{{PLURAL:$1|Анжыктымы$1 ӹлӹшташ|Анжыктымы$1 ӹлӹштӓшӹм|Анжыктымы$1 ӹлыштӓшвлӓм}}ти категори гӹц$2.}}',
+'listingcontinuesabbrev' => '(пакыла)',
+
+'newwindow' => '(у окняшты)',
+'cancel' => 'Вашталташ',
+'mytalk' => 'Мӹньӹн кӓнгӓшӹмӹ ӹлӹштӓшем',
+'navigation' => 'Навигаци',
+
+# Cologne Blue skin
+'qbfind' => 'Кӹчӓлӓш',
+
+'errorpagetitle' => 'Самынь',
+'returnto' => 'Мӹнгеш ӹлӹштӓшӹш $1.',
+'tagline' => 'гӹц материал {{grammar:genitive|{{SITENAME}}}}',
+'help' => 'Палшык',
+'search' => 'Кӹчӓлӓш',
+'searchbutton' => 'Моаш',
+'searcharticle' => 'Ванжаш',
+'history' => 'Истори',
+'history_short' => 'Истори',
+'printableversion' => 'Пецӓтлӓш верси',
+'permalink' => 'Соок ылшы (постоянный) ажедмӓш',
+'edit' => 'Торлӓш',
+'create' => 'Ӹштӓш',
+'editthispage' => 'Ти ӹлӹштӓшӹм тӧрлӓш',
+'delete' => 'Карангдаш',
+'protect' => 'Ӹшӹклӓш',
+'protect_change' => 'вашталташ',
+'newpage' => 'У ӹлӹштӓш',
+'talkpage' => 'Ти ӹлӹштӓш гишӓн хытыраш',
+'talkpagelinktext' => 'Кӓнгӓшӹмӓш',
+'personaltools' => 'Персональный инструментвлӓ',
+'talk' => 'Дискусси',
+'views' => 'Анжымашвлӓ',
+'toolbox' => 'Инструментвлӓ',
+'otherlanguages' => 'Вес йӹлмӹвлӓ доно',
+'redirectedfrom' => '($1 гӹц колтымы)',
+'redirectpagesub' => 'Вес вӓр гӹц колтымы ӹлӹштӓш',
+'lastmodifiedat' => 'Ти ӹлӹштӓшӹн остатка вашталтымашвлӓжӹ: $2, $1.',
+'jumpto' => 'Ванжаш:',
+'jumptonavigation' => 'навигаци',
+'jumptosearch' => 'кӹчӓлӓш',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Тидӹ гишӓн сирӹмӓш {{grammar:genitive|{{SITENAME}}}}',
+'aboutpage' => 'Project:Сирӹмӓш',
+'copyright' => 'Тидӹ, тидӹ семӹнь ылеш $1.',
+'copyrightpage' => '{{ns:project}}:Авторын праважы',
+'disclaimers' => 'Вӓшештӹмӹ шая (ответственность) гӹц карангмаш',
+'disclaimerpage' => 'Project:Вӓшештӹмӓш (ответственность) гӹц карангмаш',
+'edithelp' => 'Тӧрлӓш манын палшык',
+'edithelppage' => 'Help:Тӧрлӓш манын палшык',
+'helppage' => 'Help:Палшык',
+'mainpage' => 'Тӹнг ӹлӹштӓш',
+'privacy' => 'Весӹвлӓлӓн шайышташ ак ли ылмы политика',
+'privacypage' => 'Project:Весӹвлӓлӓн шайышташ ак ли ылмы политика',
+
+'badaccess' => 'Коргӹш сирӓлтмӓштӹдӓ тама самынь улы',
+
+'retrievedfrom' => 'Кышец нӓлмӹ «$1»',
+'youhavenewmessages' => 'Тӓ нӓлӹндӓ $1 ($2).',
+'newmessageslink' => 'у увервлӓ',
+'newmessagesdifflink' => 'пӹтӓртӹш вашталтымаш',
+'editsection' => 'тӧрлӓш',
+'editold' => 'тӧрлӓш',
+'editlink' => 'тӧрлӓш',
+'viewsourcelink' => 'сек пӹтӓриш кодым анжалаш',
+'editsectionhint' => 'Секцим тӧрлӓш: $1',
+'toc' => 'Кӧргӹштӹжӹ',
+'showtoc' => 'анжыкташ',
+'hidetoc' => 'карангдаш',
+'site-rss-feed' => '$1 — RSS-вола',
+'site-atom-feed' => '$1 — Atom-вола',
+'page-rss-feed' => '«$1» — RSS-вола',
+'page-atom-feed' => '«$1» — Atom-вола',
+'red-link-title' => '$1 (техень ӹлӹштӓш уке)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Ӹлӹштӓш',
+'nstab-user' => 'Ӹлӹштӓшым сирӹшӹ',
+'nstab-special' => 'Спецӹлӹштӓш',
+'nstab-project' => 'Проект гишӓн',
+'nstab-image' => 'Файл',
+'nstab-template' => 'Шаблон',
+'nstab-category' => 'Категори',
+
+# General errors
+'missing-article' => 'Информаци базышты ядмы текст уке, кыдым моаш лиэш ылын «$1» $2.
+
+Тенге ӹлӹштӓшӹн вашталтымашвлӓштӹ тошты ажедмӓшвлӓм анжыктымы
+годым лиӓлтеш.
+Ядмаш тиштӹ агыл гӹнь , лин кердеш, тӹнӓм тӓ программышты тамахань самыньым монда. Пуры лидӓ, тидӹ гишӓн увертӓрӹдӓ [[Special:ListUsers/sysop|администратор]], анжыктен URL.',
+'missingarticle-rev' => '(верси № $1)',
+'badtitletext' => 'Ядмы ӹлӹштӓшдӓн лӹмжӹ самынь, охыр, лин кердеш тӧр агыл лӹмӹм ӓль интервикым анжыктендӓ, ӓнят лӹмӹштӹ кычылташ лидӹмӹ символым сирендӓ.',
+'viewsource' => 'Анжен лӓктӓш',
+
+# Login and logout pages
+'yourname' => 'Сирӹшӹн лӹмжӹ:',
+'yourpassword' => 'Пароль:',
+'remembermypassword' => 'Ти компьютерӹштӹ мӹньӹн учетный сирмӓшем ӓштӓш',
+'login' => 'Системыш сирӓлтдӓ',
+'nav-login-createaccount' => 'Коргӹшкӹ сирӓлтдӓ/регистрируялтда',
+'userlogin' => 'Кӧргӹшкӹ сирӓлтдӓ ӓль регистрируялтда',
+'logout' => 'Сеансым пӹтӓрӓш',
+'userlogout' => 'Сеансым кашарташ',
+'nologinlink' => 'Учётный сирмӓшӹм ӹштӹдӓ',
+'mailmypassword' => 'У парольым колташ',
+
+# Edit page toolbar
+'bold_sample' => 'Пеле кӹжгӹн сирӹмӹ',
+'bold_tip' => 'Пеле кӹжгӹн сирӹмӹ',
+'italic_sample' => 'Пылен сирӹмӹ',
+'italic_tip' => 'Пылен сирӹмы',
+'link_sample' => 'Ажедмӓшвлӓн лӹмвлӓштӹ',
+'link_tip' => 'Кӧргӹштӹш ажедмӓш',
+'extlink_sample' => 'http://www.example.com ажедмӓшвлӓ',
+'extlink_tip' => 'Тӱнӹш ажедмӓш (префиксӹм идӓ монды http:// )',
+'headline_sample' => 'Текстӹн лӹмжӹ',
+'headline_tip' => '2-шы кӱкшӹцӓн тӹнг лӹм',
+'math_sample' => 'Тишкӹ формулым шӹндӹдӓ',
+'math_tip' => 'Математика формула (формат LaTeX)',
+'nowiki_sample' => 'Тишкӹ форматируйымы агыл текствлӓм шӹндӹдӓ',
+'nowiki_tip' => 'Вики-форматированим мондаш',
+'image_tip' => 'Кӧргӹш пыртен шӹндӹмӹ файл',
+'media_tip' => 'Медиа-файлыш ажедмӓш',
+'sig_tip' => ' Кынам лӹм лӹвӓлӓн киддӓм-пиштендӓ, дата',
+'hr_tip' => 'Горизонталь вола (шӹренжок идӓ кычылт)',
+
+# Edit pages
+'summary' => 'Мам вашталтымы:',
+'subject' => 'Тема/вуй лӹм:',
+'minoredit' => 'Изи тӧрлӹмӓш',
+'watchthis' => 'Ти ӹлыштӓшӹм вӓнгӓш манын списокыш пырташ',
+'savearticle' => 'Ӹлӹштӓшӹм темӓш',
+'preview' => 'Анзыц анжен лӓктӓш',
+'showpreview' => 'Анзыц анжен лӓкмӓш',
+'showdiff' => 'Пыртымы вашталтымашвлӓ',
+'anoneditwarning' => "'''ӓштӹдӓ''': Тӓ кӧргӹш сирӓлтделда. Системылан ӹшке донда пӓлӹмӹм ӹштӹделда. Тӓмдӓн IP-адресдӓ ти ӹлыштӓшӹн вашталтымашвлӓн историэшӹжӹ кодеш.",
+'summary-preview' => 'Сирӹмӹ лиэш:',
+'newarticle' => '(У)',
+'newarticletext' => "Ажедмӹ доно тӓ эче ӹштӹмӹ агыл ӹлӹшташӹш вӓрештӹндӓ. Тӹдӹм ӹштӓш манын, ӱлнӹрӓк ылшы окняэш лӹмӹм сирӓлтӹдӓ. (шукыракым пӓлен нӓлаш, анжал. [[{{MediaWiki:Helppage}}|палшыкын ӹлӹштӓшӹм]])
+Самынь тишкӹ вӓрештӹндӓ гӹнь лач браузердӓн '''мӹнгеш''' кнопкыжым веле темдӓлдӓ.",
+'noarticletext' => "Кӹзӹт ти ӹлӹштӓшӹштӹ текст уке. Ти лӹмӹм [[Special:Search/{{PAGENAME}}|тӓ вес лӹм доно вес ӹлӹштӓшвлӓштӹ мон кердӹдӓ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тӓ вес лӹм доно вес ӹлӹштӓшвлӓштӹ мон кердӹда -]] журналвлӓн вес сирмӓшвлӓштӓт моаш лиэш], ӓль
+'''[{{fullurl:{{FULLPAGENAME}}|action=edit}} техень лӹм доно ӹлӹштӓшӹм пачаш лиэш]'''</span>.",
+'previewnote' => "'''Тидӹ анзыц анжымаш веле, текстӹм эче сирӹмӹ агыл!'''",
+'editing' => 'Редактируйымаш: $1',
+'editingsection' => 'Тӧрлӹмаш $1 (пӧлкӓ)',
+'copyrightwarning' => 'Пуры лидӓ, ӓшӹшкӹдӓ пиштӹда! Цилӓ мам тӧрлӹмӹ, ушештӹмӹ дӓ вашталтымы, $2 (см. $1) негӹцеш ӹштӹмы семӹнь анжымы лиэш. Мам сиредӓ, тӹдӹм кычылтмы дӓ тӧрлӹмӹ ваштареш ылыда гӹнь пуры лидӓ, тишӓк идӓ сирӹ.<br /> Тенгеок мам сиредӓ тӹдӹн авторжы ылыда дӓ мам копируедӓ, тидӹ ирӹкӓн кычылтмашты лишӓшлык<br />.
+
+Автор пӓшӓлӓнжӹ публикаяш разрешеним пуде гӹнь, тишӓк идӓ сирӹ!!!',
+'templatesused' => '{{PLURAL:$1|Кычылтмы шаблон|Кычылтмы шаблонвлӓ}} ӹлӹштӓшӹн ти версиштӹжӹ:',
+'templatesusedpreview' => '{{PLURAL:$1|Кычылтмы шаблон|Кычылтмы шаблонвлӓ }} анзыц анжымы ӹлӹштӓшӹштӹ:',
+'template-protected' => '(ӹшӹклӓлтеш, перегӓлтеш)',
+'template-semiprotected' => '(лаштыкын-лыштыкын ӹшӹклӓлтеш)',
+'hiddencategories' => 'Ти ӹлӹштӓш $1 {{PLURAL:$1|шӹлтӹмӹ категориш|шӹлтӹмӹ категоривлӓш|шӹлтӹмӹ категориш пыра}}:',
+'permissionserrorstext-withaction' => "Тидӹм (действим) ӹштӓш манын тӓмдӓн разрешенидӓ уке«'''$2'''» семеш {{PLURAL:$1|ти ӓмӓл|ӓмӓлвлӓ доно}}:",
+
+# History pages
+'viewpagelogs' => 'Ти ӹлӹштӓшлӓн журналвлӓм анжыкташ',
+'currentrev-asof' => 'Кӹзӹтшӹ верси $1-штӹ',
+'revisionasof' => 'Верси $1',
+'previousrevision' => '← Тошты/первирӓкшӹ верси',
+'nextrevision' => 'Весӹ→',
+'currentrevisionlink' => 'Ти ылшы верси',
+'cur' => 'кӹзӹтшӹ',
+'last' => 'анзыц ылшы',
+'histlegend' => "Ынгылдарымашвлӓ: (кӹзӹтшӹ) —кӹзӹтшӹ верси гӹц айыртемӓлтеш ; (анзыл.) — анзылныш верси гӹц айыртемӓлтеш; '''и''' — изи вашталтымаш",
+'history-fieldset-title' => 'Историм анжалаш',
+'histfirst' => 'сек тоштывлӓ',
+'histlast' => 'шукердшӹ агыл',
+
+# Revision deletion
+'rev-delundel' => 'анжыкташ/шӹлтӓш',
+'revdel-restore' => 'ужаш лимӹм вашталташ',
+
+# Merge log
+'revertmerge' => 'Пайылаш',
+
+# Diffs
+'history-title' => '$1 — вашталтымашвлӓн историштӹ',
+'difference' => '(Версивлӓ лошты вашталтмашвлӓ)',
+'lineno' => 'Сирӹмӹ корны $1:',
+'compareselectedversions' => 'Айырен нӓлмӹ версивлӓм тӓнгӓштӓрӓш',
+'editundo' => 'ярал агыл/вашталташ',
+
+# Search results
+'searchresults' => 'Кӹчӓлмӓшӹн результатшы',
+'searchresults-title' => 'Кӹчӓлӓш «$1»',
+'searchresulttext' => 'Ӹлӹштӓшӹшты шукырак информацим нӓлӓш манын [[{{MediaWiki:Helppage}}| палшыкым анжал]]',
+'searchsubtitle' => 'Кӹчӓлмӹ годым«[[:$1]]» ([[Special:Prefixindex/$1|кыды, ти лӹм доно тӹнгӓлӓлтеш]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|кыдывлӓ ти лӹмӹм анжыктенӹт]])',
+'searchsubtitleinvalid' => 'Ядмы семӹнь «$1»',
+'notitlematches' => 'Ӹлӹштӓшвлӓн лӹм икань агыл',
+'notextmatches' => 'Ӹлӹштӓшӹн текствлӓ доно икань агыл',
+'prevn' => '{{PLURAL:$1|анзылнышы $1|анзылнышывлӓ $1|анзылнышывлӓ $1}}',
+'nextn' => '{{PLURAL:$1|паштек кешӹ $1|паштек кешӹвлӓ $1|паштек кешӹвлӓ $1}}',
+'viewprevnext' => 'Анжен лӓктӓш ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 шамак|$2 шамаквлӓ|$2 шамак}})',
+'search-redirect' => '(вес вӓрӹш ажед колташ $1)',
+'search-section' => '(кӹдеж $1)',
+'search-suggest' => 'Анят тӓ $1 шанендӓ:',
+'search-interwiki-caption' => 'Техеньок проектвлӓ',
+'search-interwiki-default' => '$1 результ.:',
+'search-interwiki-more' => '(эче)',
+'search-mwsuggest-enabled' => 'согоньвлӓ доно',
+'search-mwsuggest-disabled' => 'согоньвлӓдеок',
+'nonefound' => "'''Шотыш нӓлдӓ.''' Нимат ак лиӓлт гӹнь, керӓл шамакым цилӓ вӓреок кӹчӓлӓш ак тӹнгӓл. Кӹчӓлжӹ манын, ''all:'' префиксӹм кычылтда. Тенге тӓ лӹмвлӓм мода (кӱ тишкӹ сирӓ, нӹнӹн Кӓнгӓшӹмӓшвлӓштӹмӓт, шаблонвлӓмӓт дӓ молымат), уке гӹнь, шукырак лӹмӹм анжыктыда",
+'powersearch' => 'Кымдан кӹчӓлмӓш',
+'powersearch-legend' => 'Кымдан кӹчӓлмӓш',
+'powersearch-ns' => 'Кымдецвлӓштӹ лӹмвлӓм кӹчӓлмӓш:',
+'powersearch-redir' => 'Ажедмӓшвлӓм анжыкташ',
+'powersearch-field' => 'Кӹчӓлӓш',
+
+# Preferences page
+'preferences' => 'Настройкывлӓ',
+'mypreferences' => 'Настройкывлӓ',
+
+# Groups
+'group-sysop' => 'Администраторвлӓ',
+
+'grouppage-sysop' => '{{ns:project}}:Администраторвлӓ',
+
+# User rights log
+'rightslog' => 'Сирӹшӹн прававлӓжӹм анжыктышы журнал',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'ти ӹлӹштӓшӹм тӧрлӹмӓш',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|вашталтымаш|вашталтымашвлӓ|вашталтымаш}}',
+'recentchanges' => 'У тӧрлӹмӓшвлӓ',
+'recentchanges-legend' => 'У тӧрлӹмашвлӓн настройкышты',
+'recentchanges-feed-description' => 'Ти лиништӹ Викиштӹш вашталтмашвлӓм анжалаш.',
+'rcnote' => "{{PLURAL:$1|Пӹтӓртӹш вашталтымаш'''$1''' вашталтымаш|Пӹтӓртыш '''$1''' вашталтымашвлӓ|Пӹтӓртӹш '''$1''' вашталтымашвлӓ}} '''$2''' {{PLURAL:$2|кечӹштӹ|кечӹштӹ|кечӹвлӓштӹ}}, ти моментеш $5 $4.",
+'rclistfrom' => '$1 доно вашталтмашвлӓм анжыкташ',
+'rcshowhideminor' => '$1 изи тӧрлӹмаш',
+'rcshowhidebots' => '$1 бот',
+'rcshowhideliu' => '$1 тинӓрӹн сирӓлтӹнӹт',
+'rcshowhideanons' => '$1 анонимвлӓ',
+'rcshowhidemine' => '$1 ӹшке тӧрлӹмӓшвлӓэт',
+'rclinks' => 'Пӹтӓрӹтш $1кечӹвлаштӹш $2 вашталтмашвлӓм анжыкташ<br />$3',
+'diff' => 'ма-шон',
+'hist' => 'истори',
+'hide' => 'шӹлтӓш',
+'show' => 'анжыкташ',
+'minoreditletter' => 'м',
+'newpageletter' => 'У',
+'boteditletter' => 'б',
+'rc-enhanced-expand' => 'Цилӓ анжыкташ (JavaScript кычылтда)',
+'rc-enhanced-hide' => 'Цилӓ анжыкташ агыл',
+
+# Recent changes linked
+'recentchangeslinked' => 'Кӹлдӓлтшӹ тӧрлӹмӓшвлӓ',
+'recentchangeslinked-title' => 'Кӹлдӓлтшӹ торлӹмӓшвлӓ $1 доно',
+'recentchangeslinked-summary' => "Тиштӹ шукердӹ агыл ӹштӹмӹ вашталтмашвлӓ анжыкталтыт, кышты ти ӹлыштӓш ажедеш (ӓль ти категоришкӹ пырышывлӓ). Ӹлӹштӓшвлӓ, кыдывлӓ пырат [[Special:Watchlist|тӓмдӓн вангӹмӹ списокда]] графаш, '''айырымы ылыт'''.",
+'recentchangeslinked-page' => 'Ӹлӹштӓшӹн лӹмжӹ:',
+'recentchangeslinked-to' => 'Анешлӓ, тӹ ӹлыштӓшвлӓштӹш вашталтымашвлӓм анжыкташ, кыдывлӓ ти ӹлӹштӓшӹшкӹ ажедӹт',
+
+# Upload
+'upload' => 'Файлым темӓш',
+'uploadlogpage' => 'Оптымашвлӓн журналышты',
+'uploadedimage' => 'оптымы «[[$1]]»',
+
+# File description page
+'filehist' => 'Файлын историжӹ',
+'filehist-help' => 'Файл тӹнӓм махань ылын, тидӹм ужаш манын датым темдӓлдӓ.',
+'filehist-current' => 'кӹзӹтшӹ',
+'filehist-datetime' => 'Дата/жеп',
+'filehist-thumb' => 'Миниатюра',
+'filehist-thumbtext' => '$1 гӹц версилӓн миниатюра вариантжы',
+'filehist-user' => 'Сирӹшӹ',
+'filehist-dimensions' => 'Объектӹн размержӹ',
+'filehist-comment' => 'Пӓлӹквлӓ',
+'imagelinks' => 'Файлышкы ажедмӓшвлӓ',
+'linkstoimage' => '{{PLURAL:$1|Паштек $1 вес ӹлӹштӓш ажедеш| $1 вес ӹлӹштӓшвлӓ ажедӹт|Вес $1 ӹлӹштӓшвлӓ ти файлыш}} ажедӹт:',
+'sharedupload' => 'Ти $1 файлым вес проектвлӓштӹ кычылташ лиэш',
+'uploadnewversion-linktext' => 'Файлын у версижӹм темӓш',
+
+# Statistics
+'statistics' => 'Статистика',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|байт|байтан|байтвлӓ}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объектӹн|объект}}',
+'prefixindex' => 'Ӹлыштӓшвлӓн лӹмӹштӹн тӹнгӓлтӹш доно анжыктымы',
+'newpages' => 'У ӹлӹштӓшвлӓ',
+'move' => 'Вес лӹмӹм пуаш',
+'movethispage' => 'Ти ӹлыштӓшӹн лӹмжӹм вашталташ',
+'pager-newer-n' => '{{PLURAL:$1|урак|ураквлӓ|ураквлӓ гӹц}} $1',
+'pager-older-n' => '{{PLURAL:$1|тоштырак|тоштыраквлӓ|тоштыраквлӓ гӹц}} $1',
+
+# Book sources
+'booksources' => 'Книгӓн кӹлвлӓжӹ (источник)',
+'booksources-search-legend' => 'Книгӓ гишӓн информацим кӹчӓлмӓш',
+'booksources-go' => 'Моаш',
+
+# Special:Log
+'log' => 'Журналвлӓ',
+
+# Special:AllPages
+'allpages' => 'Цилӓ ӹлӹштӓш',
+'alphaindexline' => '$1 гӹц $2 якте',
+'prevpage' => 'Анзыл ӹлӹштӓш ($1)',
+'allpagesfrom' => 'Анжыкташ тӹ ӹлӹштӓшвлӓм , кыдывлӓ тӹнгӓлӓлтӹт:',
+'allpagesto' => 'Лыкмашым тишӓк шагалташ:',
+'allarticles' => 'Цилӓ ӹлӹштӓш',
+'allpagessubmit' => 'Ӹштӓш',
+
+# Special:LinkSearch
+'linksearch' => 'Тӱнӹш ажедмӓшвлӓ',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Сирӹшӹвлӓм регистрируйышы журнал',
+'newuserlog-create-entry' => 'У сирӹшӹ',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(группын списокшы)',
+
+# E-mail user
+'emailuser' => 'Сирӹшӹлӓн сирмӓш',
+
+# Watchlist
+'watchlist' => 'Вӓнгӹмӹ список',
+'mywatchlist' => 'Вӓнгӹмӹ сирмӓш, список',
+'watchlistfor' => "(сирӹшӹн '''$1''')",
+'addedwatch' => 'Вӓнгӹмӓш списокыш пыртымы',
+'addedwatchtext' => 'Ӹлӹштӓшӹм«[[:$1]]» тӓмдӓн вӓнгӹмӹ [[Special:Watchlist|ӹлӹштӓшӹшкӹдӓ пыртымы]]. Тидӹ паштек ӹштӹмӹ ӹлӹштӓшӹн вашталтымашвлӓ ти списокышты анжыктымы дӓ тенгеок кӹжгӹ буквавлӓ доно у вашталтымашвлӓн списокышты пӓлдӹртӹмӹ лиэш[[Special:RecentChanges| пӓлдӹртӹмӹ лит]] нӹнӹм айыраш куштылгырак лижӹ манын.',
+'removedwatch' => 'Вӓнгӹмӹ список гӹц карангдымы',
+'removedwatchtext' => 'Ӹлӹштӓш «[[:$1]]» тӓмдӓн вӓнгӹмӹ ӹлӹштӓшдӓ гӹц [[Special:Watchlist|карангдымы]].',
+'watch' => 'Вӓнгӓш',
+'watchthispage' => 'Ти ӹлӹштӓшӹм вӓнгӓш',
+'unwatch' => 'Вӓнгӓш агыл',
+'watchlist-details' => 'Тӓмдӓн вӓнгӹмӹ списокыштыда $1 {{PLURAL:$1|ӹлӹштӓш|ӹлӹштӓшвлӓ|ӹлӹштӓш}}, Кӓнгӓшӹмӓш ӹлыштӓшвлӓ гӹц пасна.',
+'wlshowlast' => 'Анжыкташ эртӹш $1 час $2 кечӹвлӓн $3',
+'watchlist-options' => 'Вӓнгӹмӹ списокын настройкыжы',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Вӓнгӹмӹ списокыш пырташ...',
+'unwatching' => 'Вӓнгӹмӹ список гӹц карангдаш...',
+
+# Delete
+'deletepage' => 'Ӹлӹштӓшӹм карангдаш',
+'confirmdeletetext' => 'Тӓ ӹлӹштӓшӹн (изображенин) цилӓ информацижӹм дӓ базышты ылшы вашталтымашвлӓн историм ӹштӹл шуаш ядыда. Пуры лидӓ, дӓ лачокат ма тенге ӹштӹнедӓ, шаналтыда. Махань последствивлӓ тидӹ паштек вычат, ынгылышашлык ылыда дӓ тидӹм ти кӹдешӹтӹ анжыктымы правилывлӓштӹ анжалда [[{{MediaWiki:Policy-url}}]].',
+'actioncomplete' => 'Лачокат ӹштӹмӹ',
+'deletedtext' => '«<nowiki>$1</nowiki>» карангдымы.
+Анжы: $2 тидӹ мам карангдымы тӹ списокым анжыкта',
+'deletedarticle' => '«[[$1]]» карангдымы',
+'dellogpage' => 'Мам карангдымы анжыктышы сирмӓш',
+'deletecomment' => 'Ӓмӓлжӹ:',
+'deleteotherreason' => 'Вес ӓмӓл/ынгылдарал:',
+'deletereasonotherlist' => 'Вес ӓмӓл',
+
+# Rollback
+'rollbacklink' => 'лишӹц колташ',
+
+# Protect
+'protectlogpage' => 'Ӹшӹклӹмӹ журнал',
+'protectedarticle' => 'ӹлӹштӓш ӹшӹклӓлтеш «[[$1]]»',
+'modifiedarticleprotection' => 'ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтымы «[[$1]]»',
+'protectcomment' => 'Ӓмӓлжӹ:',
+'protectexpiry' => 'Жепшӹ пӹтӓ:',
+'protect_expiry_invalid' => 'Ӹшӹклӹмӹ жепӹм самынь анжыктымы.',
+'protect_expiry_old' => 'Пӹтӹм жепшӹ эртен',
+'protect-text' => "Тиштӹ тӓ ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм анжал дӓ вашталтен кердӹдӓ'''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Тӓмдӓн учетный карточкыдан ӹшӹклӹмӓш кӱкшӹцӹм вашталташ манын ситӓлык праважы уке. Ти ӹлӹштӓшӹм шӹндӹдӓ'''$1''':",
+'protect-cascadeon' => 'Ти ӹлӹштӓшӹм {{PLURAL:$1|-шкы пыртымат, ӹшӹклӓлтеш, кыды ӱлнӹрӓк ылшы ӹлӹштӓшӹш|ӹлӹштӓшвлӓшкӹ ажедеш, кышкы }} каскадан ӹшӹклӹмашӹм шӹндӹмӹ. Тӓ ти ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтен кердӹдӓ, но тидӹ каскадан ӹшӹклӹмашӹм ак тӹкӓл лиэш.',
+'protect-default' => 'Ӹшӹклӹмӹ агыл',
+'protect-fallback' => 'Разрешени келеш «$1»',
+'protect-level-autoconfirmed' => 'У дӓ регистрируялтшы агыл сирӹшӹвла гӹц ӹшӹклӓш',
+'protect-level-sysop' => 'Администраторвлӓ веле',
+'protect-summary-cascade' => 'каскадан',
+'protect-expiring' => 'жепшӹ пӹтӓ $1 (UTC)',
+'protect-cascade' => 'Ти ӹлӹштӓшӹшкӹ пыртымы ӹлӹштӓшвлӓм ӹшӹклӓш (каскадан ӹшӹклӹмӓш)',
+'protect-cantedit' => 'Ти текстӹм тӧрлӓш правада укеӓт, тӓ ти ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтен ада керд.',
+'restriction-type' => 'Прававлӓ:',
+'restriction-level' => 'Пыраш лимӹ кӱкшӹц:',
+
+# Undelete
+'undeletelink' => 'анжен лӓктӓш/угӹц ӹштӓш',
+'undeletedarticle' => 'мӹнгеш шӹндӹмӹ «[[$1]]»',
+
+# Namespace form on various pages
+'namespace' => 'Лӹмвлӓн кымдецӹштӹ:',
+'invert' => 'Мам айырендӓ, мынгеш шӹндӓш',
+'blanknamespace' => '(Тӹнг)',
+
+# Contributions
+'contributions' => 'Лӓктӹшет',
+'contributions-title' => 'Сирӹшӹн лӓктӹшӹжӹ $1',
+'mycontris' => 'Мӹньын лӓктӹшем',
+'contribsub2' => 'Лӓктӹш $1 ($2)',
+'uctop' => '(пӹтӓртӹш)',
+'month' => 'Тӹлзӹ гӹц (ирӹрӓкӓт):',
+'year' => 'Ти и гӹц (ирӹрӓкӓт):',
+
+'sp-contributions-newbies' => 'Лач тӹ лӓктӹшвлӓм веле анжыкташ, кыдывлӓм у сирӹмӓшвлӓштӹ шотыш нӓлмӹ',
+'sp-contributions-blocklog' => 'блокировкывлӓ',
+'sp-contributions-search' => 'Лӓктӹшӹм кӹчӓлмӓш',
+'sp-contributions-username' => 'IP-сирӹшӹн адрес дон лӹмжӹ:',
+'sp-contributions-submit' => 'Моаш',
+
+# What links here
+'whatlinkshere' => 'Тишкӹ ажедмӓшвлӓ (ссылкывлӓ)',
+'whatlinkshere-title' => 'Ӹлӹштӓшвлӓ, кыдывлӓ ажедӹт «$1»',
+'whatlinkshere-page' => 'Ӹлӹштӓш:',
+'linkshere' => "Ти ӹлӹштӓшвлӓ тишкӹ ажедӹт '''[[:$1]]''':",
+'isredirect' => 'вес вӓре колтымым анжыктышы ӹлӹштӓш',
+'istemplate' => 'кӧргӹш пыртымы',
+'isimage' => 'изображени докы ажедмӓш',
+'whatlinkshere-prev' => '{{PLURAL:$1|анзылнышы|анзылнышывлӓ|анзылнышывла}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|пакылашы|пакылашывлӓ|пакылашывлӓ}} $1',
+'whatlinkshere-links' => '← ажедмӓшвлӓ',
+'whatlinkshere-hideredirs' => '$1 вес вӓрӹш колтымаш',
+'whatlinkshere-hidetrans' => '$1 кӧргӹш пыртымывлӓ',
+'whatlinkshere-hidelinks' => '$1 ажедмӓшвлӓ',
+'whatlinkshere-filters' => 'Фильтрвлӓ',
+
+# Block/unblock
+'blockip' => 'Блокируяш',
+'ipboptions' => '2 часеш:2 hours,1 кечеш:1 day,3 кечеш:3 days,1 ӓрняэш:1 week,2 ӓрняэш:2 weeks,1 тӹлзеш:1 month,3 тӹлзеш:3 months,6 тӹлзеш:6 months,1 иэш:1 year, соэшок:infinite',
+'ipblocklist' => 'Блокируйымы IP-адресвлӓ дон шотыш нӓлмӹ сирӹмӓшвлӓ',
+'blocklink' => 'блокируяш',
+'unblocklink' => 'блокировкым пачаш',
+'change-blocklink' => 'блокировкым вашталташ',
+'contribslink' => 'лӓктӹш, мам ӹштендӓ тӹдӹ',
+'blocklogpage' => 'Блокировкывлӓн журналышты',
+'blocklogentry' => 'периодеш [[$1]] блокируйымы$2 $3',
+'unblocklogentry' => 'блокировкым пачмы $1',
+'block-log-flags-nocreate' => 'учётный сирмӓшвлӓн регистрацим запрещӓйӹмӹ',
+
+# Move page
+'movepagetext' => 'Ӱлнӹш формым кычылт, тӓ ӹлӹштӓшлӓн у лӹмӹм пуэдӓ дӓ тӹ годымок вашталтымашвлӓн журналышты у вӓрӹш шӹндедӓ. Тошты лӹм у лӹмӹн вес вӓрӹшкӹ колтышы семӹнь лиэш. Тошты лӹмӹшкӹ пыртымы
+вес вӓрӹшкӹ колтымашвлӓм автоматически уэмден кердӹдӓ. Тидӹм ада ӹштӹ гӹнь, пуры лидӓ, контролируен лӓкдӓ [[Special:DoubleRedirects|коктым]] дон [[Special:BrokenRedirects|кӹрмӹ вес вӓре ажедмӓшвлӓм]]. Кышкы ажедмӓшвлӓ анжыктышашлык ылыт, тӓ тидӹ верц вӓшештедӓ. Шотыш нӓлдӓ, у лӹм доно ӹлӹштӓш улы гӹнь, тӹдӹн лӹмжӹ ”ак вашталт”; вес вӓрӹшкӹ колтымаш ӓль охыр дӓ тӧрлӹмӓшвлӓн историштӹ уке ылмы гӹц пасна.
+Тидӹ теве мам анжыкта, самынь у лӹмӹм пуэндӓ гӹнь, изиш анзыцырак ӹлӹштӓшӹн махань лӹмжӹ ылын, тӹ лӹмӹшкок вашталтен кердӹдӓ, но ти улы ылшы ӹлӹштӓшӹм тӓ ӹштӹл шуэн ада керд.
+”ӒШТӸДӒ!”
+У лӹмӹм пумаш ”популярный” ӹлӹштӓшвлӓлӓн пиш кого вычыдымашвлӓм канден кердеш.
+Пуры лидӓ, пакыла сирӓш шанедӓ гӹнь, кышкы тидӹ канден кердеш, ынгылышашлык ылыда.',
+'movepagetalktext' => 'Пижӹктӹмӹ кӓнгӓшӹмӓш ӹлӹштӓшӓт лӹмжӹм автоматически вашталта, техень лиӓлтмӓшвлӓ гӹц пасна:
+*Техень лӹмӓн кӓнгӓшӹмӓш ӹлӹштӓш тӹтежӓт улы ӓль
+*ӱлнӹрӓк ылшы ныреш кагырикӹм ыдыралделда.
+Техень годым, келеш гӹнь, тӓ ти ӹлыштӓшӹм вес вӓрӹшкӹ кид доно шӹндӹшӓшлык ӓль ушештӹшӓшлык ылыда.',
+'movearticle' => 'Ӹлӹштӓш лӹмӹм вашталташ',
+'newtitle' => 'У лӹм:',
+'move-watch' => 'Ти ӹлыштӓшӹм вӓнгӹмӓшӹн списокыш пыртымыла',
+'movepagebtn' => 'Ӹлӹштӓшӹн лӹмжӹм вашталташ',
+'pagemovedsub' => 'Ӹлӹштӓшӹн лӹмжӹм вашталтымы',
+'movepage-moved' => "'''Ӹлӹштӓшӹн «$1» лӹмжӹ ӹнде«$2»'''",
+'articleexists' => 'Техень лӹмӓн ӹлӹштӓш тӹтежӓт улы. Пуры лидӓ, вес лӹмӹм айырыда.',
+'talkexists' => "'''Ӹлӹштӓш лӹм вашталтымы, но техень лӹмӓн ӹлӹштӓш тӹтежӓт улы, кӓнгӓшӹмӓш ӹлӹштӓшӹн лӹмжӹм вашталташ ак ли. Пуры лидӓ, кид доно нӹнӹм ушыда.'''",
+'movedto' => 'техеньӹш вашталтымы',
+'movetalk' => 'Ти кӓнгӓшӹмӓш ӹлӹштӓшӹн лӹмжӹм вашталташ',
+'1movedto2' => 'лӹмӹм вашталтымы «[[$1]]» в «[[$2]]»',
+'1movedto2_redir' => '«[[$1]]» у лӹмӹм пумы «[[$2]]» вес вӓрыш колтымы вӹлец',
+'movelogpage' => 'Лӹмвлӓм вашталтымы журнал',
+'movereason' => 'Ӓмӓлжӹ:',
+'revertmove' => 'лишӹц колтымаш',
+
+# Export
+'export' => 'Артикльвлӓм экспортируйымаш',
+
+# Thumbnails
+'thumbnail-more' => 'Шукемдӓш',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Тӓмдӓн сирӹмӹ ӹлӹштӓшда',
+'tooltip-pt-mytalk' => 'Тӓмдӓн Кӓнгӓшӹмӓш ӹлӹштӓшдӓ',
+'tooltip-pt-preferences' => 'Мӹньӹн настройкывлӓэм',
+'tooltip-pt-watchlist' => 'Мам вӓнгенӓм, тӹдӹн сирмӓшӹжӹ',
+'tooltip-pt-mycontris' => 'Мам тӧрлендӓ , тӹдӹн списокшы',
+'tooltip-pt-login' => 'Тиштӹ регистрируялташ лиэш, но обязательны агыл',
+'tooltip-pt-logout' => 'Пӓшан сеансшым пӹтӓрӓш',
+'tooltip-ca-talk' => 'Мам ӹлӹштӓшӹштӹ сирӹмӹ, тӹдӹ гишӓн хытыраш',
+'tooltip-ca-edit' => 'Ти ӹлӹштӓшӹм вашталташ лиэш. Пуры лидӓ, ”переген кодаш” графам темдӓлмешкӹдӓ “анзыц анжалаш” графам кычылтда',
+'tooltip-ca-addsection' => 'У трансляцин пӧлкӓм ӹштӓш',
+'tooltip-ca-viewsource' => 'Ти ӹлӹштӓш вашталтымашвлӓ гӹц ӹшӹклӓлтеш, тенге гӹнят тӓ махань тӹдӹ пӹтӓри ылын анжал дӓ копируен кердӹдӓ',
+'tooltip-ca-history' => 'Мам ӹлӹштӓшӹштӹ вашталтымы',
+'tooltip-ca-protect' => 'Ӹлӹштӓшӹм вашталтымашвлӓ гыц ӹшӹклӓш',
+'tooltip-ca-delete' => 'Ти ӹлӹштӓшӹм ӹштӹл шуаш',
+'tooltip-ca-move' => 'Ӹлӹштӓшлӓн вес лӹмӹм пуаш',
+'tooltip-ca-watch' => 'Ти ӹлыштӓшӹм вӓнгӹшӹвлӓн сирмӓшӹш пырташ',
+'tooltip-ca-unwatch' => 'Ти ӹлыштӓшӹм вӓнгӹмы сирмӓшдӓ гӹц ӹштӹл шуаш',
+'tooltip-search' => 'Кӹчӓлӓш {{SITENAME}}',
+'tooltip-search-go' => 'Техень лӹм донок ылшы вес ӹлӹштӓшӹш ванжаш',
+'tooltip-search-fulltext' => 'Техень текстӓн ӹлӹштӓшвлӓшкӹ ванжаш',
+'tooltip-n-mainpage' => 'Тӹнг ӹлӹштӓшӹш ванжаш',
+'tooltip-n-mainpage-description' => 'Тӹнг ӹлӹштӓшӹш ванжаш',
+'tooltip-n-portal' => 'Тӹдӹ, мам ӹштен кердӹдӓ дӓ кышты ма вӓрлӓнӓ, тӹдӹ гишӓн проект',
+'tooltip-n-currentevents' => 'Ма лиӓлтӹн, тӹдӹм анжыктышы сирмӓш',
+'tooltip-n-recentchanges' => 'Техень текстӓн ӹлӹштӓшвлӓшкӹ ванжаш',
+'tooltip-n-randompage' => 'Самынь вӓрештшӹ ӹлӹштӓшӹм анжен лӓктӓш',
+'tooltip-n-help' => '«{{SITENAME}}» проект доно справочник',
+'tooltip-t-whatlinkshere' => 'Цилӓ ӹлӹштӓшӹн список, кыдывлӓ ти ӹлӹштӓшӹш ажедӹт',
+'tooltip-t-recentchangeslinked' => 'Тӹ ӹлӹштӓшвлӓштӹ остатка вашталтмашвлӓ, кышкы ти ӹлӹштӓш ажедеш',
+'tooltip-feed-rss' => 'Ти ӹлӹштӓшлӓн RSS-шты трансляци',
+'tooltip-feed-atom' => 'Ти ӹлӹштӓшлӓн Atom-шты трансляци',
+'tooltip-t-contributions' => 'Мам ти сирӹшӹ вашталтен, ӹлӹштӓшвлӓн список',
+'tooltip-t-emailuser' => 'Ти сирӹшӹлӓн сирмӓшӹм колташ',
+'tooltip-t-upload' => 'Изображенивлӓ дон мультимеди-файлым темӓш',
+'tooltip-t-specialpages' => 'Спецӹлӹштӓшвлӓн список',
+'tooltip-t-print' => 'Ти ӹлӹштӓшӹн пецӓтлӹмӹ версижӹ',
+'tooltip-t-permalink' => 'Соок ти ӹлӹтӓшӹн вариантышкыжы ажедмӓш',
+'tooltip-ca-nstab-main' => 'Ӹлӹштӓшӹн кӧргӹжӹ',
+'tooltip-ca-nstab-user' => 'Сирӹшӹн ӹшке ӹлӹштӓшӹжӹ',
+'tooltip-ca-nstab-special' => 'Тидӹ спецӹлӹштӓш, кыдым редактируяш ак ли',
+'tooltip-ca-nstab-project' => 'Проектӹн ӹлӹштӓшӹжӹ',
+'tooltip-ca-nstab-image' => 'Файлын ӹлӹштӓшӹжӹ',
+'tooltip-ca-nstab-template' => 'Шаблонын ӹлӹшташӹжӹ',
+'tooltip-ca-nstab-category' => 'Категорин ӹлӹштӓшӹжӹ',
+'tooltip-minoredit' => 'Ти вашталтымаш кого агылат, вашталташ',
+'tooltip-save' => 'Тӧрлӹмашдӓм ӹшӹклен кодаш',
+'tooltip-preview' => 'Переген кодаш кнопкым темдӓлмӹда анзыц, пуры лидӓ, анзыц анжалмым кычылтда!',
+'tooltip-diff' => 'Мам тӧрлӹмӹдӓ якте текстӹштӹ сирӹмӹ ылын, тӹ вашталтымашвлӓм анжыкташ',
+'tooltip-compareselectedversions' => 'Ти кок айырымы верси лошты махань айыртем, анжалаш',
+'tooltip-watch' => 'Ти ӹлӹштӓшӹм вӓнгӹмӹ списокыш пырташ',
+'tooltip-rollback' => 'Мам анзыцда тӧрлӹшӹ ӹштен, тӹдым ик гӓнӓ темдӓлок ӹштӹл шуаш',
+'tooltip-undo' => 'Тӧрлӹмӹм ӹштӹл шуаш, анзыц анжалмым дӓ лиэш гӹнь вашталтымашын ӓмӓлжӹм анжыкташ',
+
+# Browsing diffs
+'previousdiff' => '← Анзыл тӧрлӹмӓш',
+'nextdiff' => 'Вес тӧрлӹмӓш →',
+
+# Media information
+'file-info-size' => '($1 × $2 пиксел, файлын размержӹ: $3, MIME-тип: $4)',
+'file-nohires' => '<small>Кого разрешени доно верси уке.</small>',
+'svg-long-desc' => '(SVG-файл, номинально $1 × $2 пиксель, файлын размержӹ: $3)',
+'show-big-image' => 'Кӱкшӹрӓк разрешениӓн изображени',
+'show-big-image-thumb' => '<small>Размер анзыц анжымы годым: $1 × $2 пиксель</small>',
+
+# Bad image list
+'bad_image_list' => 'Техень форматан лишӓшлык:
+
+Лач списокын элементвлӓжӹм веле шотыш нӓлмӹ лиэш (* пӓлӹк доно тӹнгӓлӓлтшӹ символвлӓ)
+Корнын пӹтӓриш ажедмӓшӹжӹ ӹштӓш ак ли ылмы лаштыкым анжыктышашлык, тӹшкӹ ажедшӓшлык.
+Тидӹ паштек ажедмӓшвлӓ, кыдывлӓм ти корнышты анжыктымы, исключени семӹнь анжымы лит дӓ тӹшкӹ ти изображеним шӹндӓш лиэш.',
+
+# Metadata
+'metadata' => 'Метадата',
+'metadata-help' => 'Дигитальный камеры дӓ сканер доно шӹндӹмӹ файлыштыш дополнительный информаци. Ӹштӹмӹ паштек файлым редактируйымы гӹнь, тӹнӓм кыды-тидӹ параметржӹ анжыктымы изображенилан ак вӓшештӹ.',
+'metadata-expand' => 'Дополнительный информацим анжыкташ',
+'metadata-collapse' => 'Дополнительный информацим шӹлтӓш',
+'metadata-fields' => 'Ти списокышты ылшы метадатывлӓн нырыштым изображенин ӹлӹштӓшӹштӹ анжыктымы лиэш, весӹвлӓжӹ шӹлтӹмӹ лит.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Тӱнӹш программым кычылт, ти файлым тӧрлӓш',
+'edit-externally-help' => '(шукыракым анжал: [http://www.mediawiki.org/wiki/Manual:External_editors установкын правилывлӓжӹ])',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'цилӓ',
+'namespacesall' => 'цилӓ',
+'monthsall' => 'цилӓ',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Список гӹц нӓлмӹ ӹлӹштӓшӹштӹш вашталтымашвлӓ',
+'watchlisttools-edit' => 'Анжалаш/списокым тӧрлӓш',
+'watchlisttools-raw' => 'Текст семӹнь тӧрлӓш',
+
+# Special:SpecialPages
+'specialpages' => 'Спецӹлӹштӓшвлӓ',
+
+);
diff --git a/languages/messages/MessagesMs.php b/languages/messages/MessagesMs.php
index a2c09ff4..524cb42d 100644
--- a/languages/messages/MessagesMs.php
+++ b/languages/messages/MessagesMs.php
@@ -15,6 +15,7 @@
* @author Meno25
* @author Putera Luqman Tunku Andre
* @author Urhixidur
+ * @author Yosri
* @author Zamwan
* @author לערי ריינהארט
*/
@@ -181,6 +182,7 @@ $messages = array(
'tog-enotifminoredits' => 'Juga e-melkan saya apabila berlaku penyuntingan kecil',
'tog-enotifrevealaddr' => 'Serlahkan alamat e-mel saya dalam e-mel pemberitahuan',
'tog-shownumberswatching' => 'Tunjukkan bilangan pemantau',
+'tog-oldsig' => 'Pratonton bagi tanda tangan yang sedia ada:',
'tog-fancysig' => 'Anggap tandatangan sebagai teks wiki (tanpa pautan automatik)',
'tog-externaleditor' => 'Gunakan penyunting luar secara lalai',
'tog-externaldiff' => 'Gunakan pembeza luar secara lalai (untuk pakar sahaja, perlu penetapan khas pada komputer anda)',
@@ -204,6 +206,13 @@ $messages = array(
'underline-never' => 'Jangan',
'underline-default' => 'Ikut tetapan pelayar',
+# Font style option in Special:Preferences
+'editfont-style' => 'Gaya fon ruang sunting:',
+'editfont-default' => 'Lalai pelayar',
+'editfont-monospace' => 'Fon monospace',
+'editfont-sansserif' => 'Fon sans-serif',
+'editfont-serif' => 'Fon serif',
+
# Dates
'sunday' => 'Ahad',
'monday' => 'Isnin',
@@ -263,7 +272,7 @@ $messages = array(
'category-media-header' => 'Media-media dalam kategori "$1"',
'category-empty' => "''Kategori ini tidak mengandungi sebarang laman atau media.''",
'hidden-categories' => '{{PLURAL:$1|Kategori tersembunyi|Kategori-kategori tersembunyi}}',
-'hidden-category-category' => 'Kategori tersembunyi', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori tersembunyi',
'category-subcat-count' => '{{PLURAL:$2|Kategori ini mengandungi sebuah subkategori berikut.|Yang berikut ialah $1 daripada $2 buah subkategori dalam kategori ini.}}',
'category-subcat-count-limited' => 'Katergori ini mengandungi {{PLURAL:$1|subkategori|$1 subkategori}}.',
'category-article-count' => '{{PLURAL:$2|Kategori ini mengandungi sebuah laman berikut.|Yang berikut ialah $1 daripada $2 buah laman dalam kategori ini.}}',
@@ -271,6 +280,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kategori ini mengandungi sebuah fail berikut.|Yang berikut ialah $1 daripada $2 buah fail dalam kategori ini.}}',
'category-file-count-limited' => '$1 fail berikut terdapat dalam kategori ini.',
'listingcontinuesabbrev' => 'samb.',
+'index-category' => 'Laman terindeks',
+'noindex-category' => 'Laman tak diindeks',
'mainpagetext' => "'''MediaWiki telah berjaya dipasang.'''",
'mainpagedocfooter' => 'Sila rujuk [http://meta.wikimedia.org/wiki/Help:Contents Panduan Penggunaan] untuk maklumat mengenai penggunaan perisian wiki ini.
@@ -281,10 +292,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Soalan Lazim MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai mel bagi keluaran MediaWiki]',
-'about' => 'Perihal',
-'article' => 'Laman kandungan',
-'newwindow' => '(dibuka di tetingkap baru)',
-'cancel' => 'Batal',
+'about' => 'Perihal',
+'article' => 'Laman kandungan',
+'newwindow' => '(dibuka di tetingkap baru)',
+'cancel' => 'Batal',
+'moredotdotdot' => 'Lagi...',
+'mypage' => 'Laman saya',
+'mytalk' => 'Perbualan saya',
+'anontalk' => 'Perbualan bagi IP ini',
+'navigation' => 'Pandu arah',
+'and' => '&#32;dan',
+
+# Cologne Blue skin
'qbfind' => 'Cari',
'qbbrowse' => 'Semak imbas',
'qbedit' => 'Sunting',
@@ -292,15 +311,35 @@ $messages = array(
'qbpageinfo' => 'Konteks',
'qbmyoptions' => 'Laman-laman saya',
'qbspecialpages' => 'Laman khas',
-'moredotdotdot' => 'Lagi...',
-'mypage' => 'Laman saya',
-'mytalk' => 'Perbualan saya',
-'anontalk' => 'Perbualan bagi IP ini',
-'navigation' => 'Pandu arah',
-'and' => '&#32;dan',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Soalan Lazim',
+'faqpage' => 'Project:Soalan Lazim',
+
+# Vector skin
+'vector-action-addsection' => 'Tambah topik',
+'vector-action-delete' => 'Hapus',
+'vector-action-move' => 'Pindah',
+'vector-action-protect' => 'Lindungi',
+'vector-action-undelete' => 'Batal hapus',
+'vector-action-unprotect' => 'Nyahlindung',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Laman bantuan',
+'vector-namespace-image' => 'Fail',
+'vector-namespace-main' => 'Laman',
+'vector-namespace-media' => 'Laman media',
+'vector-namespace-mediawiki' => 'Pesanan',
+'vector-namespace-project' => 'Laman projek',
+'vector-namespace-special' => 'Laman khas',
+'vector-namespace-talk' => 'Bincang',
+'vector-namespace-template' => 'Templat',
+'vector-namespace-user' => 'Laman pengguna',
+'vector-view-create' => 'Cipta',
+'vector-view-edit' => 'Sunting',
+'vector-view-history' => 'Lihat sejarah',
+'vector-view-view' => 'Baca',
+'vector-view-viewsource' => 'Lihat sumber',
+'actions' => 'Tindakan',
+'namespaces' => 'Ruang nama',
+'variants' => 'Kelainan',
'errorpagetitle' => 'Ralat',
'returnto' => 'Kembali ke $1.',
@@ -350,18 +389,22 @@ $messages = array(
'otherlanguages' => 'Bahasa lain',
'redirectedfrom' => '(Dilencongkan dari $1)',
'redirectpagesub' => 'Laman lencongan',
-'lastmodifiedat' => 'Laman ini diubah buat kali terakhir pada $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Laman ini diubah buat kali terakhir pada $2, $1.',
'viewcount' => 'Laman ini telah dilihat {{PLURAL:$1|sekali|sebanyak $1 kali}}.',
'protectedpage' => 'Laman dilindungi',
'jumpto' => 'Lompat ke:',
'jumptonavigation' => 'pandu arah',
'jumptosearch' => 'gelintar',
+'view-pool-error' => 'Maaf, pelayan terlebih bebanan pada masa ini.
+Terlalu ramai pengguna cuba melihat laman ini.
+Sila tunggu sebentar sebelum cuba mencapai laman ini lagi.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Perihal {{SITENAME}}',
'aboutpage' => 'Project:Perihal',
'copyright' => 'Kandungan disediakan dengan $1.',
-'copyrightpagename' => 'Hak cipta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hak cipta',
'currentevents' => 'Hal semasa',
'currentevents-url' => 'Project:Hal semasa',
@@ -369,8 +412,6 @@ $messages = array(
'disclaimerpage' => 'Project:Penolak tuntutan umum',
'edithelp' => 'Bantuan menyunting',
'edithelppage' => 'Help:Menyunting',
-'faq' => 'Soalan Lazim',
-'faqpage' => 'Project:Soalan Lazim',
'helppage' => 'Help:Kandungan',
'mainpage' => 'Laman Utama',
'mainpage-description' => 'Laman Utama',
@@ -448,9 +489,6 @@ Pertanyaan terakhir ialah:
"$1"
daripada fungsi "$2".
Pangkalan data memulangkan ralat "$3: $4".',
-'noconnect' => 'Maaf! Wiki ini sedang menghadapi masalah teknikal dan tidak dapat menghubungi pelayan pangkalan data.<br />$1',
-'nodb' => 'Tidak dapat memilih pangkalan data $1',
-'cachederror' => 'Yang berikut ialah salinan simpanan bagi laman yang diminta, dan barangkali bukan yang terkini.',
'laggedslavemode' => 'Amaran: Laman ini mungkin bukan yang terkini.',
'readonly' => 'Pangkalan data dikunci',
'enterlockreason' => 'Sila nyatakan sebab penguncian dan jangkaan
@@ -469,6 +507,8 @@ Sila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:
'readonly_lag' => 'Pangkalan data telah dikunci secara automatik sementara semua pelayan pangkalan data diselaraskan.',
'internalerror' => 'Ralat dalaman',
'internalerror_info' => 'Ralat dalaman: $1',
+'fileappenderrorread' => 'Tidak dapat membaca "$1" semasa tambah.',
+'fileappenderror' => 'Tidak dapat menambah "$1" kepada "$2".',
'filecopyerror' => 'Fail "$1" tidak dapat disalin kepada "$2".',
'filerenameerror' => 'Nama fail "$1" tidak dapat ditukarkan kepada "$2".',
'filedeleteerror' => 'Fail "$1" tidak dapat dihapuskan.',
@@ -478,7 +518,8 @@ Sila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:
'unexpected' => 'Nilai tanpa diduga: "$1"="$2".',
'formerror' => 'Ralat: borang tidak dapat dikirim.',
'badarticleerror' => 'Tindakan ini tidak boleh dilaksanakan pada laman ini.',
-'cannotdelete' => 'Laman atau imej yang dinyatakan tidak dapat dihapuskan. Ia mungkin telah pun dihapuskan oleh orang yang lain.',
+'cannotdelete' => 'Laman atau fail $1 tidak dapat dihapuskan.
+Ia mungkin telah pun dihapuskan oleh orang lain.',
'badtitle' => 'Tajuk tidak sah',
'badtitletext' => 'Tajuk laman yang diminta tidak sah, kosong, ataupun tajuk antara bahasa atau tajuk antara wiki yang salah dipaut. Ia mungkin mengandungi aksara yang tidak dibenarkan.',
'perfcached' => 'Data berikut adalah teragregat dan mungkin bukan yang terkini.',
@@ -509,14 +550,12 @@ Pertanyaan: $2',
'virus-unknownscanner' => 'antivirus tidak dikenali:',
# Login and logout pages
-'logouttitle' => 'Log keluar',
'logouttext' => "'''Anda telah log keluar.'''
Anda boleh terus menggunakan {{SITENAME}} sebagai pengguna tanpa nama, atau anda boleh [[Special:UserLogin|log masuk sekali lagi]] sebagai pengguna lain. Anda boleh membersihkan cache pelayar web anda sekiranya terdapat laman yang memaparkan seolah-olah anda masih log masuk.",
'welcomecreation' => '== Selamat datang, $1! ==
Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutamaan {{SITENAME}}]] anda.',
-'loginpagetitle' => 'Log masuk',
'yourname' => 'Nama pengguna:',
'yourpassword' => 'Kata laluan:',
'yourpasswordagain' => 'Ulangi kata laluan:',
@@ -527,6 +566,7 @@ Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutam
'nav-login-createaccount' => 'Log masuk / buka akaun',
'loginprompt' => 'Anda mesti membenarkan kuki untuk log masuk ke dalam {{SITENAME}}.',
'userlogin' => 'Log masuk / buka akaun',
+'userloginnocreate' => 'Log masuk',
'logout' => 'Log keluar',
'userlogout' => 'Log keluar',
'notloggedin' => 'Belum log masuk',
@@ -538,26 +578,8 @@ Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutam
'createaccountmail' => 'melalui e-mel',
'badretype' => 'Sila ulangi kata laluan dengan betul.',
'userexists' => 'Nama pengguna yang anda masukkan telah pun digunakan. Sila pilih nama yang lain.',
-'youremail' => 'E-mel:',
-'username' => 'Nama pengguna:',
-'uid' => 'ID pengguna:',
-'prefs-memberingroups' => 'Ahli {{PLURAL:$1|kumpulan|kumpulan}}:',
-'yourrealname' => 'Nama sebenar:',
-'yourlanguage' => 'Bahasa:',
-'yourvariant' => 'Varian',
-'yournick' => 'Nama samaran:',
-'badsig' => 'Tandatangan mentah tidak sah; sila semak tag HTML.',
-'badsiglength' => 'Tandatangan anda tidak boleh melebihi $1 aksara.',
-'yourgender' => 'Jantina:',
-'gender-unknown' => 'Tidak dinyatakan',
-'gender-male' => 'Lelaki',
-'gender-female' => 'Perempuan',
-'prefs-help-gender' => 'Pilihan: digunakan oleh perisian ini untuk merujuk diri anda dengan betul. Maklumat ini akan didedahkan kepada orang awam.',
-'email' => 'E-mel',
-'prefs-help-realname' => 'Nama sebenar adalah tidak wajib. Jika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.',
'loginerror' => 'Ralat log masuk',
-'prefs-help-email' => 'Alamat e-mel adalah tidak wajib. Akan tetapi, jika anda terlupa kata laluan, anda boleh meminta kata laluan yang baru dikirim kepada e-mel anda. Anda juga boleh membenarkan orang lain menghubungi anda melalui laman pengguna atau laman perbualan anda tanpa mendedahkan identiti anda.',
-'prefs-help-email-required' => 'Alamat e-mel adalah wajib.',
+'createaccounterror' => 'Tidak dapat mencipta akaun: $1',
'nocookiesnew' => 'Akaun anda telah dibuka, tetapi anda belum log masuk. {{SITENAME}} menggunakan kuki untuk mencatat status log masuk pengguna. Sila aktifkan sokongan kuki pada pelayar anda, kemudian log masuk dengan nama pengguna dan kata laluan baru anda.',
'nocookieslogin' => "{{SITENAME}} menggunakan ''cookies'' untuk mencatat status log masuk pengguna. Sila aktifkan sokongan ''cookies'' pada pelayar anda dan cuba lagi.",
'noname' => 'Nama pengguna tidak sah.',
@@ -566,15 +588,18 @@ Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutam
'nosuchuser' => 'Pengguna "$1" tidak wujud. Nama pengguna adalah peka huruf besar. Sila semak ejaan anda, atau anda boleh [[Special:UserLogin/signup|membuka akaun baru]].',
'nosuchusershort' => 'Pengguna "<nowiki>$1</nowiki>" tidak wujud. Sila semak ejaan anda.',
'nouserspecified' => 'Sila nyatakan nama pengguna.',
+'login-userblocked' => 'Pengguna ini disekat. Log masuk tidak dibenarkan.',
'wrongpassword' => 'Kata laluan yang dimasukkan adalah salah. Sila cuba lagi.',
'wrongpasswordempty' => 'Kata laluan yang dimasukkan adalah kosong. Sila cuba lagi.',
-'passwordtooshort' => 'Kata laluan anda tidak sah atau terlalu pendek. Panjangnya mestilah sekurang-kurangnya $1 aksara dan berbeza daripada nama pengguna anda.',
+'passwordtooshort' => 'Kata laluan mestilah sekurang-kurangnya {{PLURAL:$1|1 aksara|$1 aksara}}.',
+'password-name-match' => 'Kata laluan anda mesti berbeza daripada nama pengguna anda.',
'mailmypassword' => 'E-melkan kata laluan baru',
'passwordremindertitle' => 'Pengingat kata laluan daripada {{SITENAME}}',
'passwordremindertext' => 'Seseorang (mungkin anda, dari alamat IP $1) telah meminta kata laluan baru untuk {{SITENAME}} ($4). Kata laluan sementara baru untuk pengguna "$2" ialah "$3". Untuk menamatkan prosedur ini, anda perlu log masuk dan tetapkan kata laluan yang baru dengan segera. Kata laluan sementara anda akan luput dalam $5 hari.
Jika anda tidak membuat permintaan ini, atau anda telah pun mengingati semula kata laluan anda dan tidak mahu menukarnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan yang sedia ada.',
'noemail' => 'Tiada alamat e-mel direkodkan bagi pengguna "$1".',
+'noemailcreate' => 'Anda perlu memberikan alamat e-mel sah',
'passwordsent' => 'Kata laluan baru telah dikirim kepada alamat
e-mel yang didaftarkan oleh "$1".
Sila log masuk semula setelah anda menerima e-mel tersebut.',
@@ -603,9 +628,11 @@ alamat e-mel anda di {{SITENAME}} ($4) dengan nama "$2" dan kata laluan "$3".
Anda boleh log masuk dan tukar kata laluan anda sekarang.
Sila abaikan mesej ini jika anda tidak meminta untuk membuka akaun tersebut.',
+'usernamehasherror' => 'Nama pengguna tidak boleh memiliki aksara cincangan',
'login-throttled' => 'Anda telah mencuba log masuk berulang kali.
Sila tunggu sebentar dan cuba lagi.',
'loginlanguagelabel' => 'Bahasa: $1',
+'suspicious-userlogout' => 'Permintaan anda untuk log keluar ditolak kerana ia kelihatan seperti dihantar oleh pelayar rosak atau proksi pengagregatan.',
# Password reset dialog
'resetpass' => 'Tukar kata laluan',
@@ -617,17 +644,13 @@ Sila tunggu sebentar dan cuba lagi.',
'retypenew' => 'Ulangi kata laluan baru:',
'resetpass_submit' => 'Tetapkan kata laluan dan log masuk',
'resetpass_success' => 'Kata laluan anda ditukar dengan jayanya! Sila tunggu...',
-'resetpass_bad_temporary' => 'Kata laluan sementara tidak sah. Anda mungkin telah pun menukar kata laluan atau meminta kata laluan sementara yang baru.',
'resetpass_forbidden' => 'Kata laluan tidak boleh ditukar',
'resetpass-no-info' => 'Anda hendaklah log masuk terlebih dahulu untuk mencapai laman ini secara terus.',
'resetpass-submit-loggedin' => 'Tukar kata laluan',
+'resetpass-submit-cancel' => 'Batal',
'resetpass-wrong-oldpass' => 'Kata laluan sementara atau semasa tidak sah.
Anda mungkin telah pun berjaya menukar kata laluan anda atau meminta kata laluan sementara yang baru.',
'resetpass-temp-password' => 'Kata laluan sementara:',
-'resetpass-log' => 'Log pengesetan semula kata laluan',
-'resetpass-logtext' => 'Berikut ialah log pengguna yang kata laluannya telah diset semula oleh penyelia.',
-'resetpass-logentry' => 'menukar kata laluan $1',
-'resetpass-comment' => 'Alasan mengeset semula kata laluan:',
# Edit page toolbar
'bold_sample' => 'Teks tebal',
@@ -701,7 +724,6 @@ ditunjukkan di bawah:",
'blockededitsource' => "Teks bagi '''suntingan anda''' terhadap '''$1''' ditunjukkan di bawah:",
'whitelistedittitle' => 'Log masuk dahulu untuk menyunting',
'whitelistedittext' => 'Anda hendaklah $1 terlebih dahulu untuk menyunting laman.',
-'confirmedittitle' => 'Pengesahan e-mel diperlukan untuk menyunting',
'confirmedittext' => 'Anda perlu mengesahkan alamat e-mel anda terlebih dahulu untuk menyunting mana-mana laman. Sila tetapkan dan sahkan alamat e-mel anda melalui [[Special:Preferences|laman keutamaan]].',
'nosuchsectiontitle' => 'Tidak ada bahagian ini',
'nosuchsectiontext' => 'Anda cuba untuk menyunting bahagian yang tidak wujud.
@@ -722,13 +744,20 @@ Jika anda tiba di sini secara tak sengaja, hanya klik butang '''back''' pada pel
Oleh itu kami terpaksa menggunakan alamat IP untuk mengenal pasti pengguna tersebut. Alamat IP ini boleh dikongsi oleh ramai pengguna.
Sekiranya anda adalah seorang pengguna tanpa nama dan berasa bahawa komen yang tidak kena mengena telah ditujukan kepada anda, sila [[Special:UserLogin/signup|buka akaun baru]] atau [[Special:UserLogin|log masuk]] untuk mengelakkan sebarang kekeliruan dengan pengguna tanpa nama yang lain.''",
'noarticletext' => 'Tiada teks dalam laman ini pada masa sekarang. Anda boleh [[Special:Search/{{PAGENAME}}|mencari tajuk bagi laman ini]] dalam laman-laman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} menggelintar log-log yang berkaitan], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} menyunting laman ini]</span>.',
+'noarticletext-nopermission' => 'Tiada teks dalam laman ini ketika ini.
+Anda boleh [[Special:Search/{{PAGENAME}}|mencari tajuk laman ini]] dalam laman lain,
+atau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} menggelintar log yang berkaitan]</span>.',
'userpage-userdoesnotexist' => 'Akaun pengguna "$1" tidak berdaftar. Sila pastikan sama ada anda mahu mencipta/menyunting laman ini.',
+'userpage-userdoesnotexist-view' => 'Akaun pengguna "$1" tidak berdaftar.',
+'blocked-notice-logextract' => 'Pengguna ini sedang disekat.
+Masukan log sekatan terakhir disediakan di bawah sebagai rujukan:',
'clearyourcache' => "'''Catatan: Selepas menyimpan laman ini, anda mungkin perlu membersihkan cache pelayar web anda terlebih dahulu untuk mengenakan perubahan.'''
'''Mozilla/Firefox/Safari:''' tahan ''Shift'' ketika mengklik ''Reload'' atau tekan ''Ctrl+F5'' atau tekan ''Ctrl+R'' (''Command+R'' dalam komputer Macintosh).
'''Konqueror:''' klik butang ''Reload'' atau tekan ''F5''.
'''Opera:''' bersihkan cache melalui menu ''Tools → Preferences''.
'''Internet Explorer:''' tahan ''Ctrl'' ketika mengklik ''Refresh'' atau tekan ''Ctrl+F5''.",
-'usercssjsyoucanpreview' => "'''Petua:''' Gunakan butang 'Pratonton' untuk menguji CSS/JS baru anda sebelum menyimpan.",
+'usercssyoucanpreview' => "'''Petua:''' Gunakan butang 'Pratonton' untuk menguji CSS baru anda sebelum menyimpan.",
+'userjsyoucanpreview' => "'''Petua:''' Gunakan butang 'Pratonton' untuk menguji JS baru anda sebelum menyimpan.",
'usercsspreview' => "'''Ingat bahawa anda hanya sedang melihat pratonton CSS peribadi anda. Laman ini belum lagi disimpan!'''",
'userjspreview' => "'''Ingat bahawa anda hanya menguji/melihat pratonton JavaScript anda, ia belum lagi disimpan!'''",
'userinvalidcssjstitle' => "'''Amaran:''' Rupa \"\$1\" tidak wujud. Ingat bahawa laman tempahan .css dan .js menggunakan tajuk berhuruf kecil, contohnya {{ns:user}}:Anu/monobook.css tidak sama dengan {{ns:user}}:Anu/Monobook.css.",
@@ -778,13 +807,16 @@ melebihi had maksimum $2 kilobait. Ia tidak boleh disimpan.'''",
Anda boleh menyalin teks anda ke dalam komputer anda terlebih dahulu dan simpan teks tersebut di sini pada masa akan datang.'''
Yang berikut ialah penjelasan yang diberikan: $1",
-'protectedpagewarning' => "'''AMARAN: Laman ini telah dikunci supaya hanya penyelia boleh menyuntingnya.'''",
-'semiprotectedpagewarning' => "'''Catatan:''' Laman ini telah dikunci supaya hanya pengguna berdaftar sahaja yang boleh menyuntingnya.",
+'protectedpagewarning' => "'''Amaran: Laman ini telah dikunci supaya hanya mereka yang mempunyai keistimewaan penyelia boleh menyuntingnya.'''
+Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
+'semiprotectedpagewarning' => "'''Nota:''' Laman ini telah dikunci agar hanya pengguna berdaftar sahaja boleh menyuntingnya.
+Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
'cascadeprotectedwarning' => "'''Amaran:''' Laman ini telah dikunci, oleh itu hanya penyelia boleh menyuntingnya. Ini kerana ia termasuk dalam {{PLURAL:$1|laman|laman-laman}} berikut yang dilindungi secara melata:",
-'titleprotectedwarning' => "'''AMARAN: Laman ini telah dikunci supaya hanya pengguna dengan [[Special:ListGroupRights|hak-hak tertentu]] sahaja boleh menciptanya.'''",
-'templatesused' => 'Templat yang digunakan dalam laman ini:',
-'templatesusedpreview' => 'Templat yang digunakan dalam pratonton ini:',
-'templatesusedsection' => 'Templat yang digunakan dalam bahagian ini:',
+'titleprotectedwarning' => "'''Amaran: Laman ini telah dikunci hingga [[Special:ListGroupRights|hak-hak tertentu]] diperlukan untuk menciptanya.'''
+Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
+'templatesused' => '{{PLURAL:$1|Templat|Templat}} yang digunakan dalam laman ini:',
+'templatesusedpreview' => '{{PLURAL:$1|Templat|Templat}} yang digunakan dalam pratonton ini:',
+'templatesusedsection' => '{{PLURAL:$1|Templat|Templat}} digunakan dalam bahagian ini:',
'template-protected' => '(dilindungi)',
'template-semiprotected' => '(dilindungi separa)',
'hiddencategories' => 'Laman ini terdapat dalam $1 kategori tersembunyi:',
@@ -793,15 +825,18 @@ Yang berikut ialah penjelasan yang diberikan: $1",
'nocreatetext' => 'Penciptaan laman baru dihadkan pada {{SITENAME}}.
Anda boleh berundur dan menyunting laman yang sedia ada, atau [[Special:UserLogin|log masuk]].',
'nocreate-loggedin' => 'Anda tidak mempunyai keizinan untuk mencipta laman baru.',
+'sectioneditnotsupported-title' => 'Suntingan bahagian tidak disokong',
+'sectioneditnotsupported-text' => 'Suntingan bahagian tidak disokong di laman ini.',
'permissionserrors' => 'Tidak Dibenarkan',
'permissionserrorstext' => 'Anda tidak mempunyai keizinan untuk berbuat demikian atas {{PLURAL:$1|sebab|sebab-sebab}} berikut:',
'permissionserrorstext-withaction' => 'Anda tidak mempunyai keizinan untuk $2, atas {{PLURAL:$1|sebab|sebab-sebab}} berikut:',
-'recreate-deleted-warn' => "'''Amaran: Anda sedang mencipta semula sebuah laman yang pernah dihapuskan.''',
+'recreate-moveddeleted-warn' => "'''Amaran: Anda sedang mencipta semula sebuah laman yang pernah dihapuskan.'''
Anda harus mempertimbangkan perlunya menyunting laman ini.
Untuk rujukan, yang berikut ialah log penghapusan bagi laman ini:",
-'deleted-notice' => 'Laman ini telah dihapuskan. Log penghapusan bagi laman ini dilampirkan di bawah untuk rujukan.',
-'deletelog-fulllog' => 'Lihat log penuh',
+'moveddeleted-notice' => 'Laman ini telah dihapuskan.
+Log penghapusan bagi laman ini dilampirkan di bawah untuk rujukan.',
+'log-fulllog' => 'Lihat log lengkap',
'edit-hook-aborted' => 'Suntingan anda telah dibatalkan oleh penyangkuk. Tiada sebab diberikan.',
'edit-gone-missing' => 'Laman tersebut telah dihapuskan dan tidak dapat dikemaskinikan.',
'edit-conflict' => 'Percanggahan penyuntingan.',
@@ -821,6 +856,7 @@ Argumen-argumen ini telah ditinggalkan.',
'post-expand-template-argument-category' => 'Laman yang mengandungi templat dengan argumen yang tidak lengkap',
'parser-template-loop-warning' => 'Gelung templat dikesan: [[$1]]',
'parser-template-recursion-depth-warning' => 'Had pengulangan templat dilebihi ($1)',
+'language-converter-depth-warning' => 'Had kedalaman penukar bahasa dilepasi ($1)',
# "Undo" feature
'undo-success' => 'Suntingan ini boleh dibatalkan. Sila semak perbandingan di bawah untuk mengesahkan bahawa anda betul-betul mahu melakukan tindakan ini, kemudian simpan perubahan tersebut.',
@@ -840,7 +876,7 @@ Sebab yang diberikan oleh $3 ialah ''$2''",
'currentrev' => 'Semakan semasa',
'currentrev-asof' => 'Semakan semasa pada $1',
'revisionasof' => 'Semakan pada $1',
-'revision-info' => 'Semakan pada $1 oleh $2', # Additionally available: $3: revision id
+'revision-info' => 'Semakan pada $1 oleh $2',
'previousrevision' => '←Semakan sebelumnya',
'nextrevision' => 'Semakan berikutnya→',
'currentrevisionlink' => 'Semakan semasa',
@@ -853,7 +889,7 @@ Sebab yang diberikan oleh $3 ialah ''$2''",
Petunjuk: (kini) = perbezaan dengan versi terkini,
(akhir) = perbezaan dengan versi sebelumnya, K = suntingan kecil.",
'history-fieldset-title' => 'Lihat sejarah',
-'deletedrev' => '[dihapuskan]',
+'history-show-deleted' => 'Dihapuskan sahaja',
'histfirst' => 'Terawal',
'histlast' => 'Terkini',
'historysize' => '($1 bait)',
@@ -862,72 +898,107 @@ Petunjuk: (kini) = perbezaan dengan versi terkini,
# Revision feed
'history-feed-title' => 'Sejarah semakan',
'history-feed-description' => 'Sejarah semakan bagi laman ini',
-'history-feed-item-nocomment' => '$1 pada $2', # user at time
+'history-feed-item-nocomment' => '$1 pada $2',
'history-feed-empty' => 'Laman yang diminta tidak wujud.
Mungkin ia telah dihapuskan atau namanya telah ditukar.
Cuba [[Special:Search|cari]] laman lain yang mungkin berkaitan.',
# Revision deletion
-'rev-deleted-comment' => '(komen dibuang)',
-'rev-deleted-user' => '(nama pengguna dibuang)',
-'rev-deleted-event' => '(entri dibuang)',
-'rev-deleted-text-permission' => "Semakan laman ini telah '''dihapuskan'''.
-Butiran lanjut mungkin boleh didapati dalam [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-text-view' => "Semakan laman ini telah '''dihapuskan'''.
-Sebagai seorang pentadbir anda boleh melihatnya; butiran lanjut mungkin boleh didapati dalam [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-no-diff' => "Anda tidak boleh melihat perbezaan ini kerana satu daripada semakan yang dibandingkan telah '''dihapuskan'''.
-Butiran lanjut mungkin boleh didapati dalam [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
-'rev-deleted-unhide-diff' => "Salah satu semakan laman ini telah '''dihapuskan'''.
-Butiran lanjut mungkin boleh didapati dalam [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
-Sebagai pentadbir anda masih boleh [$1 melihat semakan ini] jika anda ingin.",
-'rev-delundel' => 'tunjuk/sembunyi',
-'revisiondelete' => 'Hapus/nyahhapus semakan',
-'revdelete-nooldid-title' => 'Tiada semakan sasaran',
-'revdelete-nooldid-text' => 'Anda tidak menyatakan semakan sasaran.',
-'revdelete-nologtype-title' => 'Jenis log tidak diberi',
-'revdelete-nologtype-text' => 'Anda tidak menyatakan jenis log untuk tindakan ini.',
-'revdelete-toomanytargets-title' => 'Terlalu banyak sasaran',
-'revdelete-toomanytargets-text' => 'Anda telah menyatakan terlalu banyak jenis sasaran untuk tindakan ini.',
-'revdelete-nologid-title' => 'Entri log tidak sah',
-'revdelete-nologid-text' => 'Anda tidak menyatakan peristiwa log sasaran perkara untuk melakukan fungsi ini atau entri ynag dinyatakan tidak wujud.',
-'revdelete-selected' => "'''{{PLURAL:$2|Versi|Versi-versi}} '''$1''' yang dipilih:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Peristiwa|Peristiwa-peristiwa}} log yang dipilih:'''",
-'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log,
-tetapi kandungannya tidak boleh diakses awam.'''
-
-Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya
-semula melalui laman ini melainkan mempunyai batasan.
-Sila sahkan bahawa anda hendak lakukan ini dan memahami akibatnya, dan anda mematuhi [[{{MediaWiki:Policy-url}}|polisi]].",
-'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
+'rev-deleted-comment' => '(komen dibuang)',
+'rev-deleted-user' => '(nama pengguna dibuang)',
+'rev-deleted-event' => '(entri dibuang)',
+'rev-deleted-user-contribs' => '[nama pengguna atau alamat IP dibuang - suntingan disembunyikan daripada sumbangan]',
+'rev-deleted-text-permission' => "Semakan laman ini telah '''dihapuskan'''.
+Perinciannya mungkin ada di dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-deleted-text-unhide' => "Semakan laman ini telah '''dihapuskan'''.
+Butiran lanjut mungkin boleh didapati dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
+Sebagai seorang pentadbir anda masih boleh [$1 melihat semakan ini] jika anda ingin teruskan.",
+'rev-suppressed-text-unhide' => "Semakan laman ini telah '''diselindungkan'''.<br />Butiran lanjut mungkin boleh didapati dalam [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penyelindungan].<br />Sebagai pentadbir anda masih boleh [$1 melihat semakan ini] jika anda ingin.",
+'rev-deleted-text-view' => "Semakan laman ini telah '''dihapuskan'''.
+Sebagai seorang pentadbir anda boleh melihatnya; butiran lanjut mungkin boleh didapati dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-text-view' => "Semakan bagi laman ini telah '''diselindungkan'''.
+Sebagai seorang pentadbir, anda boleh memaparkannya; butiran lanjut mungkin ada di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penyelindungan].",
+'rev-deleted-no-diff' => "Anda tidak boleh melihat perbezaan ini kerana salah satu daripada semakannya telah '''dihapuskan'''.
+Mungkin terdapat butiran lanjut di dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-no-diff' => "Anda tidak boleh melihat perbezaan ini kerana salah satu semakannya telah '''dihapuskan'''.",
+'rev-deleted-unhide-diff' => "Salah satu semakan laman ini telah '''dihapuskan'''.
+Butiran lanjut mungkin boleh didapati dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].
+Sebagai seorang pentadbir anda masih boleh [$1 melihat semakan ini] jika anda ingin teruskan.",
+'rev-suppressed-unhide-diff' => "Salah satu semakan perbezaan ini telah '''diselindungkan'''.
+Butiran lanjut mungkin boleh didapati dalam [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penyelindungan].
+Sebagai pentadbir anda masih boleh [$1 melihat perbezaan ini] jika anda ingin teruskan.",
+'rev-deleted-diff-view' => "Salah satu semakan perbezaan ini telah '''dihapuskan'''.
+Sebagai pentadbir anda boleh melihat perbezaan ini; mungkin terdapat perincian pada [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+'rev-suppressed-diff-view' => "Salah satu semakan perbezaan ini telah '''dipendam'''.
+Sebagai pentadbir anda boleh melihat perbezaan ini; mungkin terdapat perincian pada [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penyelindungan].",
+'rev-delundel' => 'tunjuk/sembunyi',
+'rev-showdeleted' => 'tunjuk',
+'revisiondelete' => 'Hapus/nyahhapus semakan',
+'revdelete-nooldid-title' => 'Tiada semakan sasaran',
+'revdelete-nooldid-text' => 'Anda tidak menyatakan semakan sasaran.',
+'revdelete-nologtype-title' => 'Jenis log tidak diberi',
+'revdelete-nologtype-text' => 'Anda tidak menyatakan jenis log untuk tindakan ini.',
+'revdelete-nologid-title' => 'Entri log tidak sah',
+'revdelete-nologid-text' => 'Anda tidak menyatakan peristiwa log sasaran perkara untuk melakukan fungsi ini atau entri ynag dinyatakan tidak wujud.',
+'revdelete-no-file' => 'Fail yang dinyatakan tidak wujud.',
+'revdelete-show-file-confirm' => 'Anda pasti anda mahu paparkan semakan yang telah dihapuskan bagi fail "<nowiki>$1</nowiki>" dari $2 pada $3?',
+'revdelete-show-file-submit' => 'Ya',
+'revdelete-selected' => "'''{{PLURAL:$2|Versi|Versi-versi}} '''$1''' yang dipilih:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Peristiwa|Peristiwa-peristiwa}} log yang dipilih:'''",
+'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log, tetapi kandungannya tidak boleh diakses awam.'''
+Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya semula melalui laman ini melainkan mempunyai batasan.",
+'revdelete-confirm' => 'Sila sahkan bahawa anda bertujuan melakukan ini, bahawa anda faham akibatnya, dan anda melakukannya menurut [[{{MediaWiki:Policy-url}}| polisi]].',
+'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
* Maklumat peribadi tidak sesuai
*: ''alamat rumah dan nombor telefon, nombor keselamatan sosial, dsbg.''",
-'revdelete-legend' => 'Tetapkan batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks semakan',
-'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
-'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
-'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
-'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
-'revdelete-hide-image' => 'Sembunyikan kandungan fail',
-'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
-'revdelete-log' => 'Sebab:',
-'revdelete-submit' => 'Kenakan ke atas versi yang dipilih',
-'revdelete-logentry' => 'menukar kebolehnampakan semakan [[$1]]',
-'logdelete-logentry' => 'menukar kebolehnampakan peristiwa bagi [[$1]]',
-'revdelete-success' => "'''Kebolehnampakan semakan berjaya ditetapkan.'''",
-'logdelete-success' => 'Kebolehnampakan peristiwa ditetapkan.',
-'revdel-restore' => 'Tukar kebolehnampakan',
-'pagehist' => 'Sejarah laman',
-'deletedhist' => 'Sejarah yang dihapuskan',
-'revdelete-content' => 'kandungan',
-'revdelete-summary' => 'ringkasan',
-'revdelete-uname' => 'nama pengguna',
-'revdelete-restricted' => 'mengenakan sekatan pada penyelia',
-'revdelete-unrestricted' => 'menarik sekatan daripada penyelia',
-'revdelete-hid' => 'menyembunyikan $1',
-'revdelete-unhid' => 'memunculkan $1',
-'revdelete-log-message' => '$1 bagi {{PLURAL:$2|sebuah|$2 buah}} semakan',
-'logdelete-log-message' => '$1 bagi $2 peristiwa',
+'revdelete-legend' => 'Tetapkan batasan:',
+'revdelete-hide-text' => 'Sembunyikan teks semakan',
+'revdelete-hide-image' => 'Sembunyikan kandungan fail',
+'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
+'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
+'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
+'revdelete-radio-same' => '(jangan tukar)',
+'revdelete-radio-set' => 'Ya',
+'revdelete-radio-unset' => 'Tidak',
+'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
+'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
+'revdelete-log' => 'Sebab:',
+'revdelete-submit' => 'Kenakan ke atas {{PLURAL:$1|versi|versi}} yang dipilih',
+'revdelete-logentry' => 'menukar kebolehnampakan semakan [[$1]]',
+'logdelete-logentry' => 'menukar kebolehnampakan peristiwa bagi [[$1]]',
+'revdelete-success' => "'''Kebolehnampakan semakan berjaya ditetapkan.'''",
+'revdelete-failure' => "'''Keterlihatan semakan tidak dapat dikemaskini:'''
+$1",
+'logdelete-success' => 'Kebolehnampakan peristiwa ditetapkan.',
+'logdelete-failure' => "'''Log nampak tidak dapat diset:'''
+$1",
+'revdel-restore' => 'Tukar kebolehnampakan',
+'pagehist' => 'Sejarah laman',
+'deletedhist' => 'Sejarah yang dihapuskan',
+'revdelete-content' => 'kandungan',
+'revdelete-summary' => 'ringkasan',
+'revdelete-uname' => 'nama pengguna',
+'revdelete-restricted' => 'mengenakan sekatan pada penyelia',
+'revdelete-unrestricted' => 'menarik sekatan daripada penyelia',
+'revdelete-hid' => 'menyembunyikan $1',
+'revdelete-unhid' => 'memunculkan $1',
+'revdelete-log-message' => '$1 bagi {{PLURAL:$2|sebuah|$2 buah}} semakan',
+'logdelete-log-message' => '$1 bagi $2 peristiwa',
+'revdelete-hide-current' => 'Ralat menyembunyikan item bertarikh $2, $1: ini adalah versi semasa.
+Ia tidak dapat disembunyikan.',
+'revdelete-show-no-access' => 'Ralat menunjukkan item bertarikh $2, $1: item ini telah ditanda "larangan".
+Anda tidak memiliki capaian padanya.',
+'revdelete-modify-no-access' => 'Ralat menyunting item bertarikh $2, $1: item ini telah ditanda "larangan".
+Anda tidak memiliki capaian padanya.',
+'revdelete-modify-missing' => 'Ralat menyunting item ID $1: ia tiada dalam pangkalan data!',
+'revdelete-reason-dropdown' => '*Sebab penghapusan biasa
+** Pencabulan hak cipta
+** Maklumat peribadi tidak sesuai
+** Maklumat berpotensi fitnah',
+'revdelete-otherreason' => 'Sebab lain/tambahan:',
+'revdelete-reasonotherlist' => 'Sebab lain',
+'revdelete-edit-reasonlist' => 'Ubah sebab-sebab hapus',
# Suppression log
'suppressionlog' => 'Log penahanan',
@@ -966,67 +1037,13 @@ Sila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.
'mergelogpagetext' => 'Yang berikut ialah senarai terkini bagi penggabungan sejarah sesebuah laman ke dalam lamana yang lain.',
# Diffs
-'history-title' => 'Sejarah semakan bagi "$1"',
-'difference' => '(Perbezaan antara semakan)',
-'lineno' => 'Baris $1:',
-'compareselectedversions' => 'Bandingkan versi-versi yang dipilih',
-'visualcomparison' => 'Perbandingan visual',
-'wikicodecomparison' => 'Perbandingan wikitext',
-'editundo' => 'batal',
-'diff-multi' => '({{PLURAL:$1|Satu|$1}} semakan pertengahan tidak ditunjukkan.)',
-'diff-movedto' => 'dipindahkan ke $1',
-'diff-styleadded' => '$1 gaya ditambah',
-'diff-added' => '$1 ditambah',
-'diff-changedto' => '$1 ditukar menjadi',
-'diff-movedoutof' => 'dipindah keluar daripada $1',
-'diff-styleremoved' => '$1 gaya dibuang',
-'diff-removed' => '$1 dibuang',
-'diff-changedfrom' => 'ditukar daripada $1',
-'diff-src' => 'sumber',
-'diff-withdestination' => 'dengan sasaran $1',
-'diff-with' => '&#32;dengan $1 $2',
-'diff-with-final' => '&#32;dan $1 $2',
-'diff-width' => 'lebar',
-'diff-height' => 'tinggi',
-'diff-p' => "'''perenggan'''",
-'diff-blockquote' => "'''blok petikan'''",
-'diff-h1' => "'''tajuk (aras 1)'''",
-'diff-h2' => "'''tajuk (aras 2)'''",
-'diff-h3' => "'''tajuk (aras 3)'''",
-'diff-h4' => "'''tajuk (aras 4)'''",
-'diff-h5' => "'''tajuk (aras 5)'''",
-'diff-pre' => "'''blok praformat'''",
-'diff-div' => "'''bahagian'''",
-'diff-ul' => "'''senarai tak bertertib'''",
-'diff-ol' => "'''senarai bertertib'''",
-'diff-li' => "'''unsur senarai'''",
-'diff-table' => "'''jadual'''",
-'diff-tbody' => "'''isi jadual'''",
-'diff-tr' => "'''baris'''",
-'diff-td' => "'''sel'''",
-'diff-th' => "'''pengatas'''",
-'diff-br' => "'''hentian'''",
-'diff-hr' => "'''garis mengufuk'''",
-'diff-code' => "'''blok kod komputer'''",
-'diff-dl' => "'''senarai takrif'''",
-'diff-dt' => "'''istilah takrif'''",
-'diff-dd' => "'''takrif'''",
-'diff-input' => "'''input'''",
-'diff-form' => "'''borang'''",
-'diff-img' => "'''imej'''",
-'diff-span' => "'''bidang'''",
-'diff-a' => "'''pautan'''",
-'diff-i' => "'''condong'''",
-'diff-b' => "'''tebal'''",
-'diff-strong' => "'''kuat'''",
-'diff-em' => "'''tegas'''",
-'diff-font' => "'''fon'''",
-'diff-big' => "'''besar'''",
-'diff-del' => "'''potong'''",
-'diff-tt' => "'''lebar tetap'''",
-'diff-sub' => "'''subskrip'''",
-'diff-sup' => "'''superskrip'''",
-'diff-strike' => "'''potong'''",
+'history-title' => 'Sejarah semakan bagi "$1"',
+'difference' => '(Perbezaan antara semakan)',
+'lineno' => 'Baris $1:',
+'compareselectedversions' => 'Bandingkan versi-versi yang dipilih',
+'showhideselectedversions' => 'Tunjuk/sorok versi yang dipilih',
+'editundo' => 'batal',
+'diff-multi' => '({{PLURAL:$1|Satu|$1}} semakan pertengahan tidak ditunjukkan.)',
# Search results
'searchresults' => 'Keputusan carian',
@@ -1034,28 +1051,25 @@ Sila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.
'searchresulttext' => 'Untuk maklumat lanjut tentang carian dalam {{SITENAME}}, sila lihat [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Anda mencari \'\'\'[[$1]]\'\'\' ([[Special:Prefixindex/$1|semua laman dengan awalan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua laman yang mengandungi pautan ke "$1"]])',
'searchsubtitleinvalid' => 'Untuk pertanyaan "$1"',
-'noexactmatch' => "'''Tiada laman bertajuk \"\$1\".''' Anda boleh [[:\$1|menciptanya]].",
-'noexactmatch-nocreate' => "'''Tiada laman bertajuk \"\$1\".'''",
'toomanymatches' => 'Terlalu banyak padanan dipulangkan, sila cuba pertanyaan lain',
'titlematches' => 'Padanan tajuk laman',
'notitlematches' => 'Tiada tajuk laman yang sepadan',
'textmatches' => 'Padanan teks laman',
'notextmatches' => 'Tiada teks laman yang sepadan',
-'prevn' => '$1 sebelumnya',
-'nextn' => '$1 berikutnya',
+'prevn' => '{{PLURAL:$1|$1 sebelumnya}}',
+'nextn' => '{{PLURAL:$1|$1 berikutnya}}',
'prevn-title' => '$1 hasil sebelumnya',
'nextn-title' => '$1 hasil berikutnya',
'shown-title' => 'Papar $1 hasil setiap laman',
-'viewprevnext' => 'Lihat ($1) ($2) ($3)',
+'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Pilihan gelintar',
'searchmenu-exists' => "* Laman '''[[$1]]'''",
'searchmenu-new' => "'''Cipta laman \"[[:\$1]]\" di wiki ini!'''",
'searchhelp-url' => 'Help:Kandungan',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Senarai laman dengan awalan ini]]',
'searchprofile-articles' => 'Laman kandungan',
-'searchprofile-articles-and-proj' => 'Laman kandungan & projek',
-'searchprofile-project' => 'Laman projek',
-'searchprofile-images' => 'Fail',
+'searchprofile-project' => 'Laman bantuan dan projek',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Semua',
'searchprofile-advanced' => 'Maju',
'searchprofile-articles-tooltip' => 'Cari dalam $1',
@@ -1063,8 +1077,6 @@ Sila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.
'searchprofile-images-tooltip' => 'Cari fail',
'searchprofile-everything-tooltip' => 'Gelintar semua kandungan (termasuk laman perbincangan)',
'searchprofile-advanced-tooltip' => 'Gelintar ruang nama tempahan',
-'prefs-search-nsdefault' => 'Gelintar menggunakan tetapan lalai:',
-'prefs-search-nscustom' => 'Gelintar ruang nama tempahan:',
'search-result-size' => '$1 ({{PLURAL:$2|$2 patah perkataan}})',
'search-result-score' => 'Kaitan: $1%',
'search-redirect' => '(pelencongan $1)',
@@ -1077,11 +1089,12 @@ Sila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.
'search-mwsuggest-disabled' => 'tiada cadangan',
'search-relatedarticle' => 'Berkaitan',
'mwsuggest-disable' => 'Matikan ciri cadangan AJAX',
+'searcheverything-enable' => 'Gelintar semua ruang nama',
'searchrelated' => 'berkaitan',
'searchall' => 'semua',
'showingresults' => "Yang berikut ialah '''$1''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
'showingresultsnum' => "Yang berikut ialah '''$3''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
-'showingresultstotal' => "Yang berikut ialah {{PLURAL:$4|hasil '''$1'''|hasil '''$1 - $2'''}} daripada '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Keputusan '''$1''' daripada '''$3'''|Keputusan '''$1 - $2''' daripada '''$3'''}} untuk '''$4'''",
'nonefound' => "'''Catatan''': Ketika lalai, hanya sesetengah ruang nama digelintar.
Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman perbincangan, templat, dan lain-lain), atau gunakan ruang nama yang dikehendaki sebagai awalan.",
'search-nonefound' => 'Tiada hasil yang sepadan dengan pertanyaan tersebut.',
@@ -1090,93 +1103,128 @@ Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman
'powersearch-ns' => 'Gelintar ruang nama:',
'powersearch-redir' => 'Termasuk lencongan',
'powersearch-field' => 'Cari',
+'powersearch-togglelabel' => 'Semak:',
+'powersearch-toggleall' => 'Semua',
+'powersearch-togglenone' => 'Tiada',
'search-external' => 'Carian luar',
'searchdisabled' => 'Ciri pencarian dalam {{SITENAME}} dimatikan. Anda boleh mencari melalui Google. Sila ambil perhatian bahawa indeks dalam Google mungkin bukan yang terkini.',
+# Quickbar
+'qbsettings' => 'Bar pantas',
+'qbsettings-none' => 'Tiada',
+'qbsettings-fixedleft' => 'Tetap sebelah kiri',
+'qbsettings-fixedright' => 'Tetap sebelah kanan',
+'qbsettings-floatingleft' => 'Berubah-ubah sebelah kiri',
+'qbsettings-floatingright' => 'Berubah-ubah sebelah kanan',
+
# Preferences page
-'preferences' => 'Keutamaan',
-'mypreferences' => 'Keutamaan saya',
-'prefs-edits' => 'Jumlah suntingan:',
-'prefsnologin' => 'Belum log masuk',
-'prefsnologintext' => 'Anda hendaklah <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} log masuk]</span> terlebih dahulu untuk menetapkan keutamaan.',
-'prefsreset' => 'Keutamaan anda telah diset semula dari storan.',
-'qbsettings' => 'Bar pantas',
-'qbsettings-none' => 'Tiada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Berubah-ubah sebelah kiri',
-'qbsettings-floatingright' => 'Berubah-ubah sebelah kanan',
-'changepassword' => 'Tukar kata laluan',
-'skin' => 'Rupa',
-'skin-preview' => 'Pratonton',
-'math' => 'Matematik',
-'dateformat' => 'Format tarikh',
-'datedefault' => 'Tiada keutamaan',
-'datetime' => 'Tarikh dan waktu',
-'math_failure' => 'Gagal menghurai',
-'math_unknown_error' => 'ralat yang tidak dikenali',
-'math_unknown_function' => 'fungsi yang tidak dikenali',
-'math_lexing_error' => "ralat ''lexing''",
-'math_syntax_error' => 'ralat sintaks',
-'math_image_error' => 'penukaran PNG gagal; sila pastikan bahawa latex, dvips, gs dan convert dipasang dengan betul',
-'math_bad_tmpdir' => 'Direktori temp matematik tidak boleh ditulis atau dicipta',
-'math_bad_output' => 'Direktori output matematik tidak boleh ditulis atau dicipta',
-'math_notexvc' => 'Atur cara texvc hilang; sila lihat fail math/README untuk maklumat konfigurasi.',
-'prefs-personal' => 'Profil',
-'prefs-rc' => 'Perubahan terkini',
-'prefs-watchlist' => 'Senarai pantau',
-'prefs-watchlist-days' => 'Had bilangan hari dalam senarai pantau:',
-'prefs-watchlist-days-max' => '(had 7 hari)',
-'prefs-watchlist-edits' => 'Had maksimum perubahan untuk ditunjukkan dalam senarai pantau penuh:',
-'prefs-watchlist-edits-max' => '(had: 1000)',
-'prefs-misc' => 'Pelbagai',
-'prefs-resetpass' => 'Tukar kata laluan',
-'saveprefs' => 'Simpan',
-'resetprefs' => 'Set semula',
-'restoreprefs' => 'Pulihkan semua tetapan lalai',
-'textboxsize' => 'Menyunting',
-'prefs-edit-boxsize' => 'Saiz kotak sunting.',
-'rows' => 'Baris:',
-'columns' => 'Lajur:',
-'searchresultshead' => 'Cari',
-'resultsperpage' => 'Jumlah padanan bagi setiap halaman:',
-'contextlines' => 'Bilangan baris untuk dipaparkan bagi setiap capaian:',
-'contextchars' => 'Bilangan askara konteks bagi setiap baris:',
-'stub-threshold' => 'Ambang bagi pemformatan <a href="#" class="stub">pautan ke rencana ringkas</a> (bait):',
-'recentchangesdays' => 'Bilangan hari dalam perubahan terkini:',
-'recentchangesdays-max' => '(had $1 hari)',
-'recentchangescount' => 'Bilangan suntingan yang dipaparkan dalam perubahan terkini, sejarah laman, dan log, ketika lalai:',
-'savedprefs' => 'Keutamaan anda disimpan.',
-'timezonelegend' => 'Zon waktu:',
-'timezonetext' => 'Beza waktu dalam jam antara waktu tempatan anda dengan waktu UTC (8 untuk Kuala Lumpur).',
-'localtime' => 'Waktu tempatan:',
-'timezoneselect' => 'Zon waktu:',
-'timezoneuseserverdefault' => 'Gunakan nilai pelayan',
-'timezoneuseoffset' => 'Lain-lain (nyatakan imbangan)',
-'timezoneoffset' => 'Imbangan¹:',
-'servertime' => 'Waktu pelayan:',
-'guesstimezone' => 'Gunakan tetapan pelayar saya',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Artik',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Lautan Atlantik',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Eropah',
-'timezoneregion-indian' => 'Lautan Hindi',
-'timezoneregion-pacific' => 'Lautan Pasifik',
-'allowemail' => 'Benarkan e-mel daripada pengguna lain',
-'prefs-searchoptions' => 'Pilihan gelintar',
-'prefs-namespaces' => 'Ruang nama',
-'defaultns' => 'Cari dalam ruang nama ini secara lalai:',
-'default' => 'lalai',
-'files' => 'Fail',
-'prefs-custom-css' => 'CSS tempahan',
-'prefs-custom-js' => 'JS tempahan',
+'preferences' => 'Keutamaan',
+'mypreferences' => 'Keutamaan saya',
+'prefs-edits' => 'Jumlah suntingan:',
+'prefsnologin' => 'Belum log masuk',
+'prefsnologintext' => 'Anda hendaklah <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} log masuk]</span> terlebih dahulu untuk menetapkan keutamaan.',
+'changepassword' => 'Tukar kata laluan',
+'prefs-skin' => 'Rupa',
+'skin-preview' => 'Pratonton',
+'prefs-math' => 'Matematik',
+'datedefault' => 'Tiada keutamaan',
+'prefs-datetime' => 'Tarikh dan waktu',
+'prefs-personal' => 'Profil',
+'prefs-rc' => 'Perubahan terkini',
+'prefs-watchlist' => 'Senarai pantau',
+'prefs-watchlist-days' => 'Had bilangan hari dalam senarai pantau:',
+'prefs-watchlist-days-max' => '(had 7 hari)',
+'prefs-watchlist-edits' => 'Had maksimum perubahan untuk ditunjukkan dalam senarai pantau penuh:',
+'prefs-watchlist-edits-max' => '(had: 1000)',
+'prefs-watchlist-token' => 'Token senarai pantau:',
+'prefs-misc' => 'Pelbagai',
+'prefs-resetpass' => 'Tukar kata laluan',
+'prefs-email' => 'Pilihan e-mel',
+'prefs-rendering' => 'Penampilan',
+'saveprefs' => 'Simpan',
+'resetprefs' => 'Set semula',
+'restoreprefs' => 'Pulihkan semua tetapan lalai',
+'prefs-editing' => 'Menyunting',
+'prefs-edit-boxsize' => 'Saiz kotak sunting.',
+'rows' => 'Baris:',
+'columns' => 'Lajur:',
+'searchresultshead' => 'Cari',
+'resultsperpage' => 'Jumlah padanan bagi setiap halaman:',
+'contextlines' => 'Bilangan baris untuk dipaparkan bagi setiap capaian:',
+'contextchars' => 'Bilangan askara konteks bagi setiap baris:',
+'stub-threshold' => 'Ambang bagi pemformatan <a href="#" class="stub">pautan ke rencana ringkas</a> (bait):',
+'recentchangesdays' => 'Bilangan hari dalam perubahan terkini:',
+'recentchangesdays-max' => '(had $1 hari)',
+'recentchangescount' => 'Bilangan suntingan yang dipaparkan mengikut ketetapan:',
+'prefs-help-recentchangescount' => 'Ini termasuklah perubahan terkini, sejarah laman dan log.',
+'prefs-help-watchlist-token' => 'Mengisi medan ini dengan kunci rahsia akan menghasilkan suapan RSS untuk senarai pantau anda.
+Sesiapa yang mengetahui kunci dalam medan ini akan dapat membaca senarai pantau anda, jadi pilihlah nilai selamat.
+Di sini ada nilai yang dihasilkan secara rawak yang boleh anda guna: $1',
+'savedprefs' => 'Keutamaan anda disimpan.',
+'timezonelegend' => 'Zon waktu:',
+'localtime' => 'Waktu tempatan:',
+'timezoneuseserverdefault' => 'Gunakan nilai pelayan',
+'timezoneuseoffset' => 'Lain-lain (nyatakan imbangan)',
+'timezoneoffset' => 'Imbangan¹:',
+'servertime' => 'Waktu pelayan:',
+'guesstimezone' => 'Gunakan tetapan pelayar saya',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Artik',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Lautan Atlantik',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Eropah',
+'timezoneregion-indian' => 'Lautan Hindi',
+'timezoneregion-pacific' => 'Lautan Pasifik',
+'allowemail' => 'Benarkan e-mel daripada pengguna lain',
+'prefs-searchoptions' => 'Pilihan gelintar',
+'prefs-namespaces' => 'Ruang nama',
+'defaultns' => 'Jika tidak cari dalam ruang nama ini:',
+'default' => 'lalai',
+'prefs-files' => 'Fail',
+'prefs-custom-css' => 'CSS tempahan',
+'prefs-custom-js' => 'JS tempahan',
+'prefs-reset-intro' => 'Anda boleh menggunakan laman ini untuk set semula keutamaan anda kepada lalaian tapak ini.',
+'prefs-emailconfirm-label' => 'Pengesahan e-mail:',
+'prefs-textboxsize' => 'Saiz tetingkap penyuntingan',
+'youremail' => 'E-mel:',
+'username' => 'Nama pengguna:',
+'uid' => 'ID pengguna:',
+'prefs-memberingroups' => 'Ahli {{PLURAL:$1|kumpulan|kumpulan}}:',
+'prefs-registration' => 'Masa pendaftaran:',
+'yourrealname' => 'Nama sebenar:',
+'yourlanguage' => 'Bahasa:',
+'yourvariant' => 'Varian',
+'yournick' => 'Nama samaran:',
+'prefs-help-signature' => 'Komen di laman perbincangan harus ditandatangani dengan "<nowiki>~~~~</nowiki>" yang akan ditukar menjadi tandatangan anda dan cap waktu.',
+'badsig' => 'Tandatangan mentah tidak sah; sila semak tag HTML.',
+'badsiglength' => 'Tandatangan anda tidak boleh melebihi $1 aksara.',
+'yourgender' => 'Jantina:',
+'gender-unknown' => 'Tidak dinyatakan',
+'gender-male' => 'Lelaki',
+'gender-female' => 'Perempuan',
+'prefs-help-gender' => 'Pilihan: digunakan oleh perisian ini untuk merujuk diri anda dengan betul. Maklumat ini akan didedahkan kepada orang awam.',
+'email' => 'E-mel',
+'prefs-help-realname' => 'Nama sebenar adalah tidak wajib. Jika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.',
+'prefs-help-email' => 'Alamat e-mel adalah tidak wajib. Akan tetapi, jika anda terlupa kata laluan, anda boleh meminta kata laluan yang baru dikirim kepada e-mel anda. Anda juga boleh membenarkan orang lain menghubungi anda melalui laman pengguna atau laman perbualan anda tanpa mendedahkan identiti anda.',
+'prefs-help-email-required' => 'Alamat e-mel adalah wajib.',
+'prefs-info' => 'Maklumat asas',
+'prefs-i18n' => 'Pengantarabangsaan',
+'prefs-signature' => 'Tandatangan',
+'prefs-dateformat' => 'Format tarikh',
+'prefs-timeoffset' => 'Imbangan masa',
+'prefs-advancedediting' => 'Pilihan terperinci',
+'prefs-advancedrc' => 'Pilihan maju',
+'prefs-advancedrendering' => 'Pilihan maju',
+'prefs-advancedsearchoptions' => 'Pilihan maju',
+'prefs-advancedwatchlist' => 'Pilihan maju',
+'prefs-display' => 'Papar pilihan',
+'prefs-diffs' => 'Beza',
# User rights
-'userrights' => 'Pengurusan hak pengguna', # Not used as normal message but as header for the special page itself
+'userrights' => 'Pengurusan hak pengguna',
'userrights-lookup-user' => 'Urus kumpulan pengguna',
'userrights-user-editname' => 'Masukkan nama pengguna:',
'editusergroup' => 'Sunting Kumpulan Pengguna',
@@ -1260,6 +1308,8 @@ Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman
'right-editprotected' => 'Menyunting laman yang dilindungi (tanpa perlindungan melata)',
'right-editinterface' => 'Menyunting antara muka pengguna',
'right-editusercssjs' => 'Menyunting fail CSS dan JavaScript pengguna lain',
+'right-editusercss' => 'Menyunting fail CSS pengguna lain',
+'right-edituserjs' => 'Menyunting fail JavaScript pengguna lain',
'right-rollback' => 'Mengundurkan suntigan terakhir bagi laman tertentu',
'right-markbotedits' => 'Menanda suntingan yang diundurkan sebagai suntingan bot',
'right-noratelimit' => 'Tidak dikenakan had kadar penyuntingan',
@@ -1325,6 +1375,13 @@ Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman
'recentchanges-legend' => 'Pilihan perubahan terkini',
'recentchangestext' => 'Jejaki perubahan terkini dalam {{SITENAME}} pada laman ini.',
'recentchanges-feed-description' => 'Jejaki perubahan terkini dalam {{SITENAME}} pada suapan ini.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - laman baru',
+'recentchanges-label-newpage' => 'Suntingan ini mencipta laman baru',
+'recentchanges-legend-minor' => '$1 - suntingan kecil',
+'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
+'recentchanges-legend-bot' => '$1 - suntingan bot',
+'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
'rcnote' => "Yang berikut ialah '''$1''' perubahan terakhir sejak '''$2''' hari yang lalu sehingga $5, $4.",
'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
'rclistfrom' => 'Papar perubahan sejak $1',
@@ -1351,6 +1408,8 @@ Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman
# Recent changes linked
'recentchangeslinked' => 'Perubahan berkaitan',
+'recentchangeslinked-feed' => 'Perubahan berkaitan',
+'recentchangeslinked-toolbox' => 'Perubahan berkaitan',
'recentchangeslinked-title' => 'Perubahan berkaitan dengan $1',
'recentchangeslinked-noresult' => 'Tiada perubahan pada semua laman yang dipaut dalam tempoh yang diberikan.',
'recentchangeslinked-summary' => "Laman khas ini menyenaraikan perubahan terkini bagi laman-laman yang dipaut. Laman-laman yang terdapat dalam senarai pantau anda ditandakan dengan '''teks tebal'''.",
@@ -1360,7 +1419,6 @@ Cuba berikan awalan ''all:'' untuk menggelintar semua kandungan (termasuk laman
# Upload
'upload' => 'Muat naik fail',
'uploadbtn' => 'Muat naik',
-'reupload' => 'Muat naik sekali lagi',
'reuploaddesc' => 'Kembali ke borang muat naik',
'uploadnologin' => 'Belum log masuk',
'uploadnologintext' => 'Anda perlu [[Special:UserLogin|log masuk]]
@@ -1392,6 +1450,7 @@ Untuk menyertakan imej tersebut dalam sesebuah laman, sila masukkan teks
'minlength1' => 'Panjang nama fail mestilah sekurang-kurangnya satu huruf.',
'illegalfilename' => 'Nama fail "$1" mengandungi aksara yang tidak dibenarkan dalam tajuk laman. Sila tukar nama fail ini dan muat naik sekali lagi.',
'badfilename' => 'Nama fail telah ditukar kepada "$1".',
+'filetype-mime-mismatch' => 'Sambungan fail tidak berpadanan dengan jenis MIME.',
'filetype-badmime' => 'Memuat naik fail jenis MIME "$1" adalah tidak dibenarkan.',
'filetype-bad-ie-mime' => 'Fail ini tidak boleh dimuat naik kerana Internet Explorer mengesannya sebagai fail jenis "$1" yang tidak dibenarkan dan berbahaya.',
'filetype-unwanted-type' => "'''\".\$1\"''' adalah jenis fail yang tidak dikehendaki. {{PLURAL:\$3|Jenis|Jenis-jenis}} fail yang diutamakan ialah \$2.",
@@ -1410,7 +1469,6 @@ Ringkasan yang anda masukkan tidak akan muncul di laman penerangan tersebut. Unt
* Nama fail yang dimuat naik: '''<tt>[[:$1]]</tt>'''
* Nama fail yang sedia ada: '''<tt>[[:$2]]</tt>'''
Sila pilih nama lain.",
-'fileexists-thumb' => "<center>'''Imej sedia ada'''</center>",
'fileexists-thumbnail-yes' => "Fail ini kelihatan seperti sebuah imej yang telah dikecilkan ''(imej ringkas)''. [[$1|thumb]]
Sila semak fail '''<tt>[[:$1]]</tt>'''.
Jika fail yang disemak itu adalah sama dengan yang saiz asal, maka anda tidak perlu memuat naik imej ringkas tambahan.",
@@ -1429,9 +1487,9 @@ Jika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. S
'uploaddisabledtext' => 'Ciri muat naik fail dimatikan.',
'php-uploaddisabledtext' => 'Pemuatnaikan fail PHP dilumpuhkan. Sila semak tetapan file_uploads.',
'uploadscripted' => 'Fail ini mengandungi kod HTML atau skrip yang boleh disalahtafsirkan oleh pelayar web.',
-'uploadcorrupt' => 'Fail tersebut rosak atau mempunyai sambungan yang salah. Sila periksa fail tersebut dan cuba lagi.',
'uploadvirus' => 'Fail tersebut mengandungi virus! Butiran: $1',
'sourcefilename' => 'Nama fail sumber:',
+'sourceurl' => 'URL sumber:',
'destfilename' => 'Nama fail destinasi:',
'upload-maxfilesize' => 'Had saiz fail: $1',
'watchthisupload' => 'Pantau fail ini',
@@ -1457,6 +1515,7 @@ Sila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].',
'upload-curl-error28-text' => 'Tapak web tersebut terlalu lambat bertindak balas. Sila pastikan bahawa tapak web tersebut hidup, tunggu sebentar dan cuba lagi. Anda boleh mencuba lagi pada waktu yang kurang sibuk.',
'license' => 'Lesen:',
+'license-header' => 'Perlesenan',
'nolicense' => 'Tidak dipilih',
'license-nopreview' => '(Tiada pratonton)',
'upload_source_url' => ' (URL yang boleh diakses oleh orang awam)',
@@ -1476,6 +1535,7 @@ Klik di atas mana-mana lajur yang berkenaan untuk menukar tertib susunan.',
'listfiles_count' => 'Versi',
# File description page
+'file-anchor-link' => 'Imej',
'filehist' => 'Sejarah fail',
'filehist-help' => 'Klik pada tarikh/waktu untuk melihat rupa fail tersebut pada waktu silam.',
'filehist-deleteall' => 'hapuskan semua',
@@ -1490,6 +1550,7 @@ Klik di atas mana-mana lajur yang berkenaan untuk menukar tertib susunan.',
'filehist-dimensions' => 'Ukuran',
'filehist-filesize' => 'Saiz fail',
'filehist-comment' => 'Komen',
+'filehist-missing' => 'Fail tidak dapat dijumpai',
'imagelinks' => 'Pautan fail',
'linkstoimage' => '{{PLURAL:$1|Laman|$1 buah laman}} berikut mengandungi pautan ke fail ini:',
'linkstoimage-more' => 'Lebih daripada $1 laman mengandungi pautan ke fail ini.
@@ -1499,15 +1560,14 @@ Anda boleh melihat [[Special:WhatLinksHere/$2|senarai penuh]].',
'morelinkstoimage' => 'Lihat [[Special:WhatLinksHere/$1|semua pautan]] ke fail ini.',
'redirectstofile' => '{{PLURAL:$1|Fail|$1 buah fail}} berikut melencong ke fail ini:',
'duplicatesoffile' => '{{PLURAL:$1|Fail|$1 buah fail}} berikut adalah salinan bagi fail ini ([[Special:FileDuplicateSearch/$2|butiran lanjut]]):',
-'sharedupload' => 'Fail ini daripada $1 dan boleh digunakan oleh projek lain.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Sila lihat $1 untuk maklumat lanjut.',
-'shareduploadwiki-desc' => 'Yang berikut ialah keterangan yang diambil daripada $1nya.',
-'shareduploadwiki-linktext' => 'laman keterangan fail',
-'noimage' => 'Fail ini tidak wujud. Anda boleh $1.',
-'noimage-linktext' => 'memuat naik fail baru',
+'sharedupload' => 'Fail ini daripada $1 dan boleh digunakan oleh projek lain.',
+'sharedupload-desc-there' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
+Sila lihat [$2 laman penerangan fail] untuk maklumat lanjut.',
+'sharedupload-desc-here' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
+Penerangan pada [$2 laman penerangan failnya] di sana ditunjukkan di bawah.',
'uploadnewversion-linktext' => 'Muat naik versi baru bagi fail ini',
-'shared-repo-from' => 'dari $1', # $1 is the repository name
-'shared-repo' => 'sebuah gedung kongsi', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'dari $1',
+'shared-repo' => 'sebuah gedung kongsi',
# File reversion
'filerevert' => 'Balikkan $1',
@@ -1557,7 +1617,7 @@ Anda boleh melihat [[Special:WhatLinksHere/$2|senarai penuh]].',
# Random page
'randompage' => 'Laman rawak',
-'randompage-nopages' => 'Tiada laman dalam ruang nama "$1".',
+'randompage-nopages' => 'Tiada laman dalam {{PLURAL:$2|ruang|ruang-ruang}} nama berikut: $1.',
# Random redirect
'randomredirect' => 'Lencongan rawak',
@@ -1569,6 +1629,7 @@ Anda boleh melihat [[Special:WhatLinksHere/$2|senarai penuh]].',
'statistics-header-edits' => 'Statistik suntingan',
'statistics-header-views' => 'Statistik pandangan',
'statistics-header-users' => 'Statistik pengguna',
+'statistics-header-hooks' => 'Statistik lain',
'statistics-articles' => 'Laman kandungan',
'statistics-pages' => 'Laman',
'statistics-pages-desc' => 'Semua laman di wiki ini, termasuk laman perbincangan, lencongan, dan lain-lain.',
@@ -1595,8 +1656,8 @@ Masukan yang <s>dipotong</s> telah diselesaikan.',
'brokenredirects' => 'Lencongan rosak',
'brokenredirectstext' => 'Lencongan-lencongan berikut menuju ke laman yang tidak wujud:',
-'brokenredirects-edit' => '(sunting)',
-'brokenredirects-delete' => '(hapus)',
+'brokenredirects-edit' => 'sunting',
+'brokenredirects-delete' => 'hapus',
'withoutinterwiki' => 'Laman tanpa pautan bahasa',
'withoutinterwiki-summary' => 'Laman-laman berikut tidak mempunyai pautan ke versi bahasa lain:',
@@ -1703,16 +1764,17 @@ serta mungkin mempunyai maklumat lanjut mengenai buku yang anda cari:',
# Special:Categories
'categories' => 'Kategori',
-'categoriespagetext' => 'Kategori-kategori berikut mengandungi laman-laman dan bahan-bahan media.
+'categoriespagetext' => '{{PLURAL:$1|Kategori|Kategori-kategori}} berikut mengandungi laman-laman atau media.
[[Special:UnusedCategories|Kategori yang tidak digunakan]] tidak dipaparkan di sini.
-Lihat juga [[Special:WantedCategories|senarai kategori dikehendaki]].',
+Lihat juga [[Special:WantedCategories|kategori yang dikehendaki]].',
'categoriesfrom' => 'Paparkan kategori bermula daripada:',
'special-categories-sort-count' => 'susun mengikut tertib bilangan',
'special-categories-sort-abc' => 'susun mengikut tertib abjad',
# Special:DeletedContributions
-'deletedcontributions' => 'Sumbangan dihapuskan',
-'deletedcontributions-title' => 'Sumbangan dihapuskan',
+'deletedcontributions' => 'Sumbangan dihapuskan',
+'deletedcontributions-title' => 'Sumbangan dihapuskan',
+'sp-deletedcontributions-contribs' => 'sumbangan',
# Special:LinkSearch
'linksearch' => 'Pautan luar',
@@ -1728,6 +1790,11 @@ Protokol yang disokong: <tt>$1</tt>',
'listusersfrom' => 'Tunjukkan pengguna bermula pada:',
'listusers-submit' => 'Tunjuk',
'listusers-noresult' => 'Tiada pengguna dijumpai.',
+'listusers-blocked' => '(disekat)',
+
+# Special:ActiveUsers
+'activeusers' => 'Senarai pengguna aktif',
+'activeusers-noresult' => 'Tiada pengguna dijumpai.',
# Special:Log/newusers
'newuserlogpage' => 'Log akaun baru',
@@ -1741,6 +1808,8 @@ Protokol yang disokong: <tt>$1</tt>',
'listgrouprights' => 'Hak kumpulan pengguna',
'listgrouprights-summary' => 'Yang berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini dengan hak-hak masing-masing.
Anda boleh mengetahui [[{{MediaWiki:Listgrouprights-helppage}}|maklumat tambahan]] mengenai setiap hak.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Hak ditunaikan</span>
+* <span class="listgrouprights-revoked">Hak dibatalkan</span>',
'listgrouprights-group' => 'Kumpulan',
'listgrouprights-rights' => 'Hak',
'listgrouprights-helppage' => 'Help:Hak kumpulan',
@@ -1836,17 +1905,21 @@ $NEWPAGE
Ringkasan: $PAGESUMMARY $PAGEMINOREDIT
-Anda boleh menghubungi si penyunting melalui:
-e-mel: $PAGEEDITOR_EMAIL
+Hubungi penyunting tersebut:
+mel: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Tiada pemberitahuan lain akan dikirim selagi anda tidak mengunjungi laman tersebut. Anda juga boleh mengeset semula tanda pemberitahuan bagi semua laman dalam senarai pantau anda.
+Tiada pemberitahuan lain akan dikirim berkaitan perubahan selanjutnya melainkan anda mengunjungi laman tersebut.
+Anda juga boleh menetapkan semula penanda pemberitahuan bagi semua laman dalam senarai pantau anda.
- Sistem pemberitahuan {{SITENAME}}
+ Sistem pemberitahuan {{SITENAME}} anda yang ramah
--
-Untuk mengubah tetapan senarai pantau anda, sila kunjungi
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Untuk mengubah tetapan senarai pantau anda, lawati
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Untuk memadam laman ini dari senarai pantau anda, lawati
+$UNWATCHURL
Maklum balas dan bantuan:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1860,7 +1933,7 @@ Maklum balas dan bantuan:
'exblank' => 'laman tersebut kosong',
'delete-confirm' => 'Hapus "$1"',
'delete-legend' => 'Hapus',
-'historywarning' => '<b>Amaran</b>: Laman yang ingin anda hapuskan mengandungi sejarah:',
+'historywarning' => "'''Amaran:''' Laman yang ingin anda hapuskan mengandungi sejarah dengan kira-kira $1 {{PLURAL:$1|semakan|semakan}}:",
'confirmdeletetext' => 'Anda sudah hendak menghapuskan sebuah laman berserta semua sejarahnya.
Sila sahkan bahawa anda memang hendak berbuat demikian, anda faham akan
akibatnya, dan perbuatan anda mematuhi [[{{MediaWiki:Policy-url}}|dasar kami]].',
@@ -1893,8 +1966,8 @@ Sila lihat $2 untuk rekod penghapusan terkini.',
'alreadyrolled' => 'Suntingan terakhir bagi [[:$1]] oleh [[User:$2|$2]] ([[User talk:$2|Perbualan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tidak dapat dibalikkan; terdapat pengguna lain yang telah menyunting atau membalikkan laman itu.
Suntingan terakhir telah dibuat oleh [[User:$3|$3]] ([[User talk:$3|Perbualan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ringkasan sutingan: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Membalikkan suntingan oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|Perbincangan]]) kepada versi terakhir oleh [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Ringkasan sutingan: \"''\$1''\".",
+'revertpage' => 'Membalikkan suntingan oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|Perbincangan]]) kepada versi terakhir oleh [[User:$1|$1]]',
'rollback-success' => 'Membalikkan suntingan oleh $1 kepada versi terakhir oleh $2.',
'sessionfailure' => 'Terdapat sedikit masalah pada sesi log masuk anda.
Tindakan ini telah dibatalkan untuk mencegah perampasan sesi.
@@ -1914,7 +1987,6 @@ Sila tekan butang "back" dan muatkan semula laman yang telah anda kunjungi sebel
'protectexpiry' => 'Sehingga:',
'protect_expiry_invalid' => 'Waktu tamat tidak sah.',
'protect_expiry_old' => 'Waktu tamat telah berlalu.',
-'protect-unchain' => 'Buka kunci keizinan pemindahan',
'protect-text' => "Anda boleh melihat dan menukar peringkat perlindungan bagi laman '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Anda telah disekat, justeru tidak boleh menukar peringkat perlindungan.
Ini adalah tetapan semasa bagi laman '''$1''':",
@@ -1943,7 +2015,7 @@ Ini adalah tetapan semasa bagi laman '''$1''':",
** Perang sunting
** Laman popular',
'protect-edit-reasonlist' => 'Ubah sebab-sebab perlindungan',
-'protect-expiry-options' => '1 jam:1 hour,1 hari:1 day,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selama-lamanya:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 jam:1 hour,1 hari:1 day,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selama-lamanya:infinite',
'restriction-type' => 'Keizinan:',
'restriction-level' => 'Peringkat pembatasan:',
'minimum-size' => 'Saiz minimum',
@@ -1983,6 +2055,7 @@ atau semakan tersebut telah dipulihkan atau dibuang daripada arkib.',
'undelete-nodiff' => 'Tiada semakan sebelumnya.',
'undeletebtn' => 'Pulihkan',
'undeletelink' => 'lihat/pulih',
+'undeleteviewlink' => 'papar',
'undeletereset' => 'set semula',
'undeleteinvert' => 'Kecualikan pilihan',
'undeletecomment' => 'Komen:',
@@ -2020,7 +2093,7 @@ $1',
'contributions-title' => 'Sumbangan oleh $1',
'mycontris' => 'Sumbangan saya',
'contribsub2' => 'Oleh $1 ($2)',
-'nocontribs' => 'Tiada sebarang perubahan yang sepadan dengan kriteria-kriteria ini.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Tiada sebarang perubahan yang sepadan dengan kriteria-kriteria ini.',
'uctop' => ' (puncak)',
'month' => 'Sebelum bulan:',
'year' => 'Sebelum tahun:',
@@ -2029,7 +2102,10 @@ $1',
'sp-contributions-newbies-sub' => 'Bagi akaun-akaun baru',
'sp-contributions-newbies-title' => 'Sumbangan oleh pengguna baru',
'sp-contributions-blocklog' => 'Log sekatan',
+'sp-contributions-deleted' => 'sumbangan dihapuskan',
'sp-contributions-logs' => 'log',
+'sp-contributions-talk' => 'perbincangan',
+'sp-contributions-userrights' => 'pengurusan hak pengguna',
'sp-contributions-search' => 'Cari sumbangan',
'sp-contributions-username' => 'Alamat IP atau nama pengguna:',
'sp-contributions-submit' => 'Cari',
@@ -2081,7 +2157,7 @@ dirosakkan).',
'ipbenableautoblock' => 'Sekat alamat IP terakhir dan mana-mana alamat berikutnya yang digunakan oleh pengguna ini secara automatik',
'ipbsubmit' => 'Sekat pengguna ini',
'ipbother' => 'Waktu lain:',
-'ipboptions' => '2 jam:2 hours,1 hari:1 day,3 hari:3 days,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selama-lamanya:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 jam:2 hours,1 hari:1 day,3 hari:3 days,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,selama-lamanya:infinite',
'ipbotheroption' => 'lain',
'ipbotherreason' => 'Sebab tambahan/lain:',
'ipbhidename' => 'Sembunyikan nama pengguna daripada senarai suntingan dan pengguna',
@@ -2112,7 +2188,7 @@ dirosakkan).',
'ipblocklist-submit' => 'Cari',
'blocklistline' => '$1, $2 menyekat $3 ($4)',
'infiniteblock' => 'selama-lamanya',
-'expiringblock' => 'sehingga $1',
+'expiringblock' => 'sehingga $1 pada $2',
'anononlyblock' => 'pengguna tanpa nama sahaja',
'noautoblockblock' => 'sekatan automatik dipadamkan',
'createaccountblock' => 'pembukaan akaun baru disekat',
@@ -2126,7 +2202,6 @@ dirosakkan).',
'contribslink' => 'sumb.',
'autoblocker' => 'Disekat secara automatik kerana baru-baru ini alamat IP anda digunakan oleh "[[User:$1|$1]]". Sebab sekatan $1 ialah: "$2"',
'blocklogpage' => 'Log sekatan',
-'blocklog-fulllog' => 'Log sekatan penuh',
'blocklogentry' => 'menyekat [[$1]] sehingga $2 $3',
'reblock-logentry' => 'menukar tetapan sekatan [[$1]] yang tamat pada $2 $3',
'blocklogtext' => 'Ini adalah log bagi sekatan dan penyahsekatan.
@@ -2210,7 +2285,7 @@ Dalam kes tersebut, anda terpaksa melencongkan atau menggabungkan laman secara m
'move-watch' => 'Pantau laman ini',
'movepagebtn' => 'Pindah laman',
'pagemovedsub' => 'Pemindahan berjaya',
-'movepage-moved' => '\'\'\'"$1" telah dipindahkan ke "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" telah dipindahkan ke "$2"\'\'\'',
'movepage-moved-redirect' => 'Sebuah lencongan telah dicipta.',
'movepage-moved-noredirect' => 'Penciptaan lencongan telah dihalang.',
'articleexists' => 'Laman dengan nama tersebut telah pun wujud,
@@ -2253,6 +2328,10 @@ Laman destinasi "[[:$1]]" telah pun wujud. Adakah anda mahu menghapuskannya supa
'imageinvalidfilename' => 'Nama fail imej sasaran tidak sah',
'fix-double-redirects' => 'Kemas kinikan semua lencongan yang menuju ke tajuk asal',
'move-leave-redirect' => 'Lencongkan ke tajuk baru',
+'protectedpagemovewarning' => "'''Amaran:''' Laman ini telah dikunci supaya hanya mereka yang mempunyai keistimewaan penyelia boleh mengalihkannya.
+Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Laman ini telah dikunci agar hanya pengguna berdaftar sahaja boleh memindahkannya.
+Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
# Export
'export' => 'Eksport laman',
@@ -2282,8 +2361,9 @@ Dalam pilihan kedua tadi, anda juga boleh menggunakan pautan, umpamanya [[{{#Spe
'allmessagestext' => 'Ini ialah senarai pesanan sistem yang terdapat dalam ruang nama MediaWiki.
Sila lawat [http://www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki] dan [http://translatewiki.net translatewiki.net] sekiranya anda mahu menyumbang dalam menyetempatkan dan menterjemah perisian MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' tidak boleh digunakan kerana '''\$wgUseDatabaseMessages''' dipadamkan.",
-'allmessagesfilter' => 'Tapis nama mesej:',
-'allmessagesmodified' => 'Hanya tunjukkan yang telah diubah',
+'allmessages-filter-all' => 'Semua',
+'allmessages-language' => 'Bahasa:',
+'allmessages-filter-submit' => 'Pergi',
# Thumbnails
'thumbnail-more' => 'Besarkan',
@@ -2293,6 +2373,9 @@ Sila lawat [http://www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki]
'djvu_no_xml' => 'Gagal mendapatkan data XML bagi fail DjVu',
'thumbnail_invalid_params' => 'Parameter imej ringkas tidak sah',
'thumbnail_dest_directory' => 'Direktori destinasi gagal diciptakans',
+'thumbnail_image-type' => 'Jenis imej tidak disokong',
+'thumbnail_gd-library' => 'Tatarajah perpustakaan GD tidak lengkap: kehilangan fungsi $1',
+'thumbnail_image-missing' => 'Fail hilang: $1',
# Special:Import
'import' => 'Import laman',
@@ -2356,6 +2439,7 @@ Semua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import
'tooltip-ca-viewsource' => 'Laman ini dilindungi. Anda boleh melihat sumbernya.',
'tooltip-ca-history' => 'Versi-versi terdahulu bagi laman ini.',
'tooltip-ca-protect' => 'Lindungi laman ini',
+'tooltip-ca-unprotect' => 'Nyahlindung laman ini',
'tooltip-ca-delete' => 'Hapuskan laman ini',
'tooltip-ca-undelete' => 'Balikkan suntingan yang dilakukan kepada laman ini sebelum ia dihapuskan',
'tooltip-ca-move' => 'Pindahkan laman ini',
@@ -2366,6 +2450,7 @@ Semua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import
'tooltip-search-fulltext' => 'Cari laman dengan teks ini',
'tooltip-p-logo' => 'Laman Utama',
'tooltip-n-mainpage' => 'Kunjungi Laman Utama',
+'tooltip-n-mainpage-description' => 'Kunjungi laman utama',
'tooltip-n-portal' => 'Maklumat mengenai projek ini',
'tooltip-n-currentevents' => 'Cari maklumat latar belakang mengenai peristiwa semasa',
'tooltip-n-recentchanges' => 'Senarai perubahan terkini dalam wiki ini.',
@@ -2410,7 +2495,7 @@ Semua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import
# Attribution
'anonymous' => '{{PLURAL:$1|Pengguna|Pengguna-pengguna}} {{SITENAME}} tanpa nama',
'siteuser' => 'Pengguna {{SITENAME}}, $1',
-'lastmodifiedatby' => 'Laman ini diubah buat kali terakhir pada $2, $1 oleh $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Laman ini diubah buat kali terakhir pada $2, $1 oleh $3.',
'othercontribs' => 'Berdasarkan karya $1.',
'others' => 'lain-lain',
'siteusers' => '{{PLURAL:$2|Pengguna|Pengguna-pengguna}} {{SITENAME}}, $1',
@@ -2446,11 +2531,22 @@ Semua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import
'mw_math_modern' => 'Dicadangkan untuk pelayar moden',
'mw_math_mathml' => 'MathML jika boleh (sedang dalam uji kaji)',
+# Math errors
+'math_failure' => 'Gagal menghurai',
+'math_unknown_error' => 'ralat yang tidak dikenali',
+'math_unknown_function' => 'fungsi yang tidak dikenali',
+'math_lexing_error' => "ralat ''lexing''",
+'math_syntax_error' => 'ralat sintaks',
+'math_image_error' => 'penukaran PNG gagal; sila pastikan bahawa latex, dvips, gs dan convert dipasang dengan betul',
+'math_bad_tmpdir' => 'Direktori temp matematik tidak boleh ditulis atau dicipta',
+'math_bad_output' => 'Direktori output matematik tidak boleh ditulis atau dicipta',
+'math_notexvc' => 'Atur cara texvc hilang; sila lihat fail math/README untuk maklumat konfigurasi.',
+
# Patrolling
'markaspatrolleddiff' => 'Tanda ronda',
'markaspatrolledtext' => 'Tanda ronda laman ini',
'markedaspatrolled' => 'Tanda ronda',
-'markedaspatrolledtext' => 'Semakan tersebut telah ditanda ronda.',
+'markedaspatrolledtext' => 'Semakan [[:$1]] tersebut telah ditanda sebagai telah diperiksa.',
'rcpatroldisabled' => 'Rondaan Perubahan Terkini dimatikan',
'rcpatroldisabledtext' => 'Ciri Rondaan Perubahan Terkini dimatikan.',
'markedaspatrollederror' => 'Tidak boleh menanda ronda',
@@ -2480,13 +2576,10 @@ $1',
'previousdiff' => '← Suntingan sebelumnya',
'nextdiff' => 'Suntingan berikutnya →',
-# Visual comparison
-'visual-comparison' => 'Perbandingan visual',
-
# Media information
'mediawarning' => "'''Amaran''': Fail jenis ini mungkin mengandungi kod berbahaya.
Dengan menjalankannya, komputer anda mungkin akan terjejas.",
-'imagemaxsize' => 'Had saiz imej di laman keterangannya:',
+'imagemaxsize' => "Had saiz imej:<br />''(untuk laman keterangan fail)''",
'thumbsize' => 'Saiz imej ringkas:',
'widthheightpage' => '$1×$2, $3 halaman',
'file-info' => '(saiz file: $1, jenis MIME: $2)',
@@ -2495,6 +2588,7 @@ Dengan menjalankannya, komputer anda mungkin akan terjejas.",
'svg-long-desc' => '(Fail SVG, ukuran dasar $1 × $2 piksel, saiz fail: $3)',
'show-big-image' => 'Leraian penuh',
'show-big-image-thumb' => '<small>Saiz pratonton ini: $1 × $2 piksel</small>',
+'file-info-gif-frames' => '$1 bingkai',
# Special:NewFiles
'newimages' => 'Galeri fail baru',
@@ -2531,7 +2625,7 @@ Ruangan lain akan disembunyikan.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lebar',
@@ -2658,14 +2752,14 @@ Ruangan lain akan disembunyikan.
'exif-unknowndate' => 'Tarikh tidak diketahui',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Dibalikkan secara mengufuk', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Diputar 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Dibalikkan secara menegak', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Diputarkan 90° melawan arah jam dan dibalikkan secara menegak', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Diputarkan 90° mengikut arah jam', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Diputarkan 90° mengikut arah jam dan dibalikkan secara menegak', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Diputarkan 90° melawan arah jam', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Dibalikkan secara mengufuk',
+'exif-orientation-3' => 'Diputar 180°',
+'exif-orientation-4' => 'Dibalikkan secara menegak',
+'exif-orientation-5' => 'Diputarkan 90° melawan arah jam dan dibalikkan secara menegak',
+'exif-orientation-6' => 'Diputarkan 90° mengikut arah jam',
+'exif-orientation-7' => 'Diputarkan 90° mengikut arah jam dan dibalikkan secara menegak',
+'exif-orientation-8' => 'Diputarkan 90° melawan arah jam',
'exif-planarconfiguration-1' => 'format besar',
'exif-planarconfiguration-2' => 'format satah',
@@ -2787,7 +2881,7 @@ Ruangan lain akan disembunyikan.
'exif-gpsmeasuremode-2' => 'Pengukuran dua dimensi',
'exif-gpsmeasuremode-3' => 'Pengukuran tiga dimensi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer sejam',
'exif-gpsspeed-m' => 'Batu sejam',
'exif-gpsspeed-n' => 'Knot',
@@ -2806,6 +2900,7 @@ Ruangan lain akan disembunyikan.
'watchlistall2' => 'semua',
'namespacesall' => 'semua',
'monthsall' => 'semua',
+'limitall' => 'semua',
# E-mail address confirmation
'confirmemail' => 'Sahkan alamat e-mel',
@@ -2947,7 +3042,7 @@ Anda juga boleh [[Special:Watchlist/edit|menggunakan penyunting piawai]].',
'duplicate-defaultsort' => 'Amaran: Kunci susunan lalai "$2" mengatasi kunci susunan lalai "$1" sebelumnya.',
# Special:Version
-'version' => 'Versi', # Not used as normal message but as header for the special page itself
+'version' => 'Versi',
'version-extensions' => 'Penyambung yang dipasang',
'version-specialpages' => 'Laman khas',
'version-parserhooks' => 'Penyangkuk penghurai',
@@ -2961,7 +3056,7 @@ Anda juga boleh [[Special:Watchlist/edit|menggunakan penyunting piawai]].',
'version-skin-extension-functions' => 'Fungsi penyangkuk rupa',
'version-hook-name' => 'Nama penyangkuk',
'version-hook-subscribedby' => 'Dilanggan oleh',
-'version-version' => 'Versi',
+'version-version' => '(Versi $1)',
'version-license' => 'Lesen',
'version-software' => 'Perisian yang dipasang',
'version-software-product' => 'Produk',
@@ -3042,4 +3137,15 @@ Sila masukkan nama fail tanpa awalan "{{ns:file}}:".',
'dberr-outofdate' => 'Sila ambil perhatian bahawa indeks mereka bagi kandungan kami mungkin sudah ketinggalan zaman.',
'dberr-cachederror' => 'Yang berikut ialah salinan bagi laman yang diminta yang diambil daripada cache, dan mungkin bukan yang terkini.',
+# HTML forms
+'htmlform-invalid-input' => 'Terdapat beberapa masalah dengan input anda',
+'htmlform-select-badoption' => 'Nilai yang anda tentukan bukan satu pilihan yang sah.',
+'htmlform-int-invalid' => 'Nilai yang anda tetapkan bukan satu integer.',
+'htmlform-float-invalid' => 'Nilai yang anda nyatakan bukan nombor.',
+'htmlform-int-toolow' => 'Nilai yang anda nyatakan berada di bawah minimum bagi $1',
+'htmlform-int-toohigh' => 'Nilai yang anda nyatakan berada di atas maksimum bagi $1',
+'htmlform-submit' => 'Hantar',
+'htmlform-reset' => 'Undur perubahan',
+'htmlform-selectorother-other' => 'Lain-lain',
+
);
diff --git a/languages/messages/MessagesMt.php b/languages/messages/MessagesMt.php
index 4d50159f..7ce504ca 100644
--- a/languages/messages/MessagesMt.php
+++ b/languages/messages/MessagesMt.php
@@ -15,12 +15,12 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Midja',
+ NS_MEDIA => 'Medja',
NS_SPECIAL => 'Speċjali',
NS_TALK => 'Diskussjoni',
NS_USER => 'Utent',
NS_USER_TALK => 'Diskussjoni_utent',
- NS_PROJECT_TALK => '$1_diskussjoni',
+ NS_PROJECT_TALK => 'Diskussjoni_$1',
NS_FILE => 'Stampa',
NS_FILE_TALK => 'Diskussjoni_stampa',
NS_MEDIAWIKI => 'MediaWiki',
@@ -34,10 +34,11 @@ $namespaceNames = array(
);
$namespaceAliases = array(
- 'Medja' => NS_MEDIA,
+ 'Midja' => NS_MEDIA,
'Diskuti' => NS_TALK,
'Diskuti_utent' => NS_USER_TALK,
'$1_diskuti' => NS_PROJECT_TALK,
+ '$1_diskussjoni' => NS_PROJECT_TALK,
'Diskuti_stampa' => NS_FILE_TALK,
'MedjaWiki' => NS_MEDIAWIKI,
'Diskuti_MedjaWiki' => NS_MEDIAWIKI_TALK,
@@ -60,7 +61,7 @@ $specialPageAliases = array(
'Listfiles' => array( 'ListaStampi' ),
'Newimages' => array( 'StampiĠodda' ),
'Listusers' => array( 'Utenti' ),
- 'Listgrouprights' => array( 'ListaDrittijietGruppijiet' ),
+ 'Listgrouprights' => array( 'ListaDrittijietGruppi' ),
'Statistics' => array( 'Statistika' ),
'Randompage' => array( 'PaġnaKwalunkwe' ),
'Lonelypages' => array( 'PaġniOrfni' ),
@@ -74,9 +75,10 @@ $specialPageAliases = array(
'Wantedcategories' => array( 'KategorijiRikjesti' ),
'Wantedfiles' => array( 'FajlsRikjesti' ),
'Wantedtemplates' => array( 'MudelliRikjesti' ),
- 'Mostlinked' => array( 'L-AktarMarbuta' ),
+ 'Mostlinked' => array( 'L-AktarPaġniMarbuta' ),
+ 'Mostlinkedcategories' => array( 'L-AktarKategorijiMarbuta' ),
'Mostlinkedtemplates' => array( 'L-AktarMudelliMarbuta' ),
- 'Mostimages' => array( 'L-AktarStampi' ),
+ 'Mostimages' => array( 'L-AktarStampiMarbuta' ),
'Mostcategories' => array( 'L-AktarKategoriji' ),
'Mostrevisions' => array( 'L-AktarReviżjonijiet' ),
'Fewestrevisions' => array( 'L-InqasReviżjonijiet' ),
@@ -95,7 +97,7 @@ $specialPageAliases = array(
'Emailuser' => array( 'IbgħatUtent' ),
'Confirmemail' => array( 'KonfermaPostaElettronika' ),
'Whatlinkshere' => array( 'XiJwassalHawn' ),
- 'Recentchangeslinked' => array( 'ModifikiRelatati' ),
+ 'Recentchangeslinked' => array( 'TibdilRelatat' ),
'Movepage' => array( 'MexxiPaġna' ),
'Blockme' => array( 'Imblukkani' ),
'Booksources' => array( 'SorsiKotba' ),
@@ -103,6 +105,7 @@ $specialPageAliases = array(
'Export' => array( 'Esporta' ),
'Version' => array( 'Verżjoni' ),
'Allmessages' => array( 'MessaġġiKollha' ),
+ 'Log' => array( 'Reġistru', 'Reġistri' ),
'Blockip' => array( 'BlokkaIP' ),
'Undelete' => array( 'Irkupra' ),
'Import' => array( 'Importa' ),
@@ -112,11 +115,11 @@ $specialPageAliases = array(
'MIMEsearch' => array( 'FittexMIME' ),
'FileDuplicateSearch' => array( 'FittexFajlDuplikat' ),
'Unwatchedpages' => array( 'PaġniMhuxOsservati' ),
- 'Listredirects' => array( 'ListaRiindirizz' ),
+ 'Listredirects' => array( 'ListaRiindirizzi' ),
'Revisiondelete' => array( 'ĦassarReviżjoni' ),
'Unusedtemplates' => array( 'MudelliMhuxUżati' ),
'Randomredirect' => array( 'RiindirizzKwalunkwe' ),
- 'Mypage' => array( 'PaġniTiegħi' ),
+ 'Mypage' => array( 'PaġnaTiegħi' ),
'Mytalk' => array( 'DiskussjonijietTiegħi' ),
'Mycontributions' => array( 'KontribuzzjonijietTiegħi' ),
'Listadmins' => array( 'ListaAmmin' ),
@@ -140,7 +143,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__SFORZAWERREJ__', '__FORCETOC__' ),
'toc' => array( '0', '__WERREJ__', '__TOC__' ),
'noeditsection' => array( '0', '__EBDASEZZJONIMODIFIKA__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'XAHARKURRENTI', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'XAHARKURRENTI', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ISEMXAHARKURRENTI', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'ĠENISEMXAHARKURRENTI', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'ABBREVXAHARKURRENTI', 'CURRENTMONTHABBREV' ),
@@ -150,7 +153,8 @@ $magicWords = array(
'currentyear' => array( '1', 'SENAKURRENTI', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'ĦINKURRENTI', 'CURRENTTIME' ),
'currenthour' => array( '1', 'SIEGĦAKURRENTI', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'XAHARLOKALI', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'XAHARLOKALI', 'XAHARLOKALI2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'XAHARLOKALI1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'ISEMXAHARLOKALI', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'ĠENISEMXAHARLOKALI', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'ABBREVXAHARLOKALI', 'LOCALMONTHABBREV' ),
@@ -164,20 +168,23 @@ $magicWords = array(
'numberofarticles' => array( '1', 'NUMRUTA\'ARTIKLI', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'NUMRUTA\'FAJLS', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'NUMRUTA\'UTENTI', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NUMRUTA\'UTENTIATTIVI', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'NUMBRUTA\'MODIFIKI', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NUMRUTA\'VISTI', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'ISEMTAL-PAĠNA', 'PAGENAME' ),
'pagenamee' => array( '1', 'ISEMTAL-PAĠNAE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'SPAZJUTAL-ISEM', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'SPAZJUTAL-ISEME', 'NAMESPACEE' ),
'talkspace' => array( '1', 'SPAZJUTA\'DISKUSSJONI', 'TALKSPACE' ),
'talkspacee' => array( '1', 'SPAZJUTA\'DISKUSSJONIE', 'TALKSPACEE' ),
'subjectspace' => array( '1', 'SPAZJUTAS-SUĠĠETT', 'SPAZJUTAL-ARTIKLU', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( '1', 'SPAZJUTAS-SUĠĠETTE', 'SPAZJUTAL-ARTILKUE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
- 'fullpagename' => array( '1', 'ISEMTAL-PAĠNASĦIĦA', 'FULLPAGENAME' ),
+ 'fullpagename' => array( '1', 'ISEMSĦIĦTAL-PAĠNA', 'FULLPAGENAME' ),
'fullpagenamee' => array( '1', 'ISEMTAL-PAĠNASĦIĦAE', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'ISEMTAS-SUBPAĠNA', 'SUBPAGENAME' ),
+ 'subpagename' => array( '1', 'ISEMTAS-SOTTOPAĠNA', 'SUBPAGENAME' ),
'subpagenamee' => array( '1', 'ISEMTAS-SUBPAĠNAE', 'SUBPAGENAMEE' ),
- 'basepagename' => array( '1', 'ISEMTAL-PAĠNATAL-BAŻI', 'BASEPAGENAME' ),
+ 'basepagename' => array( '1', 'ISEMBAŻIKUTAL-PAĠNA', 'BASEPAGENAME' ),
'basepagenamee' => array( '1', 'ISEMTAL-PAĠNATAL-BAŻIE', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'ISEMTAL-PAĠNATAD-DISKUSSJONI', 'TALKPAGENAME' ),
+ 'talkpagename' => array( '1', 'ISEMPAĠNATA\'DISKUSSJONI', 'TALKPAGENAME' ),
'talkpagenamee' => array( '1', 'ISEMTAL-PAĠNATAD-DISKUSSJONIE', 'TALKPAGENAMEE' ),
'subjectpagename' => array( '1', 'ISEMTAS-SUĠĠETTTAL-PAĠNA', 'ISEMTAL-ARTIKLUTAL-PAĠNA', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subjectpagenamee' => array( '1', 'ISEMTAS-SUĠĠETTTAL-PAĠNAE', 'ISEMTAL-ARTIKLUTAL-PAĠNAE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
@@ -189,18 +196,17 @@ $magicWords = array(
'img_right' => array( '1', 'lemin', 'right' ),
'img_left' => array( '1', 'xellug', 'left' ),
'img_none' => array( '1', 'xejn', 'none' ),
- 'img_center' => array( '1', 'nofs', 'ċentrali', 'center', 'centre' ),
+ 'img_center' => array( '1', 'nofs', 'ċentrali', 'ċentru', 'center', 'centre' ),
'img_framed' => array( '1', 'tilat', 'b\'tilar', 'tilar', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'bla tilar', 'frameless' ),
'img_page' => array( '1', 'paġna=$1', 'paġna $1', 'page=$1', 'page $1' ),
'img_upright' => array( '1', 'wieqaf', 'wieqaf=$1', 'wieqaf $1', 'upright', 'upright=$1', 'upright $1' ),
- 'img_border' => array( '1', 'bordura', 'border' ),
+ 'img_border' => array( '1', 'bordura', 'burdura', 'border' ),
'img_baseline' => array( '1', 'bażi tal-linja', 'baseline' ),
'img_sub' => array( '1', 'bid', 'sub' ),
- 'img_super' => array( '1', 'tajjeb', 'taj', 'super', 'sup' ),
+ 'img_super' => array( '1', 'tajjeb', 'super', 'sup' ),
'img_top' => array( '1', 'fuq', 'top' ),
'img_text_top' => array( '1', 'test-fuq', 'text-top' ),
- 'img_middle' => array( '1', 'nofs', 'middle' ),
'img_bottom' => array( '1', 'taħt', 'bottom' ),
'img_text_bottom' => array( '1', 'test-taħt', 'text-bottom' ),
'img_link' => array( '1', 'ħolqa=$1', 'link=$1' ),
@@ -211,6 +217,7 @@ $magicWords = array(
'servername' => array( '0', 'ISEMTAS-SERVER', 'SERVERNAME' ),
'scriptpath' => array( '0', 'DESTINAZZJONITA\'SKRITT', 'SCRIPTPATH' ),
'grammar' => array( '0', 'GRAMMATIKA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'SESS:', 'GENDER:' ),
'notitleconvert' => array( '0', '__EBDAKONVERTURTITLU__', '__EBDAKT__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__EBDAKONVERTURKONTENUT__', '__EBDAKK__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'ĠIMGĦAKURRENTI', 'CURRENTWEEK' ),
@@ -230,7 +237,8 @@ $magicWords = array(
'lc' => array( '0', 'KŻ:', 'LC:' ),
'uc' => array( '0', 'KK:', 'UC:' ),
'displaytitle' => array( '1', 'URITITLU', 'DISPLAYTITLE' ),
- 'newsectionlink' => array( '1', '__LINKSEZZJONIĠDIDA__', '__NEWSECTIONLINK__' ),
+ 'newsectionlink' => array( '1', '__ĦOLQASEZZJONIĠDIDA__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__EBDAĦOLQASEZZJONIĠDIDA__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'VERŻJONIKURRENTI', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'URLKODIĊI:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'ANKRAKODIĊI', 'ANCHORENCODE' ),
@@ -239,7 +247,7 @@ $magicWords = array(
'directionmark' => array( '1', 'MARKATAD-DIREZZJONI', 'MARKADIRE', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#LINGWA:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', 'LINGWATAL-KONTENUT', 'LINGKONTENUT', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( '1', 'PAĠNIFINNAMESPACE:', 'PAĠNIFN:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'pagesinnamespace' => array( '1', 'PAĠNIFL-ISPAZJUTAL-ISEM:', 'PAĠNISI:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'NUMRUTA\'AMMIN', 'NUMBEROFADMINS' ),
'padleft' => array( '0', 'PADXELLUG', 'PADLEFT' ),
'padright' => array( '0', 'PADLEMIN', 'PADRIGHT' ),
@@ -248,10 +256,14 @@ $magicWords = array(
'filepath' => array( '0', 'DESTINAZZJONITAL-FAJL:', 'FILEPATH:' ),
'tag' => array( '0', 'tabella', 'tag' ),
'hiddencat' => array( '1', '__KATMOĦBIJA__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'PAĠNIFIL-KATEGORIJI', 'PAĠNIFILK', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesincategory' => array( '1', 'PAĠNIFIL-KATEGORIJA', 'PAĠNIFILK', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'DAQSTAL-PAĠNI', 'PAGESIZE' ),
'index' => array( '1', '__INDIĊI__', '__INDEX__' ),
'noindex' => array( '1', '__EBDAINDIĊI__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NUMRUFIL-GRUPP', 'NUMFIL-GRUPP', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__RIINDIRIZZSTATIKU__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'LIVELLITA\'PROTEZZJONI', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formatdata', 'dataformat', 'formatdate', 'dateformat' ),
);
$messages = array(
@@ -285,6 +297,7 @@ $messages = array(
'tog-enotifminoredits' => 'Ibgħatli wkoll ittra-e għall-modifiki minuri fuq paġni',
'tog-enotifrevealaddr' => "Ikxef l-indirizz tal-posta elettronika tiegħi fil-messaġġi ta' avviż",
'tog-shownumberswatching' => "Uri n-numru ta' utenti li qegħdin isegwu din il-paġna",
+'tog-oldsig' => 'Dehra proviżorja tal-firma attwali:',
'tog-fancysig' => 'Interpreta l-firma bħala test tal-wiki (mingħajr ħolqa awtomatika)',
'tog-externaleditor' => 'Uża awtomatikament modifikatur estern għat-testi (għal esperti biss, għandha bżonn preferenzi speċjali fuq il-komputer tiegħek)',
'tog-externaldiff' => 'Uża awtomatikament diff estern (għal esperti biss, għandhek bżonn preferenzi speċjali fuq il-komputer tiegħek)',
@@ -307,6 +320,9 @@ $messages = array(
'underline-never' => 'Qatt',
'underline-default' => 'Żomm l-issettjar tal-browser',
+# Font style option in Special:Preferences
+'editfont-default' => 'Żomm l-issettjar tal-browser',
+
# Dates
'sunday' => 'Il-Ħadd',
'monday' => 'It-Tnejn',
@@ -366,7 +382,7 @@ $messages = array(
'category-media-header' => 'Fajls fil-kategorija "$1"',
'category-empty' => "''Bħalissa, din il-kategorija m'għandiex paġni jew fajls multimedjali.''",
'hidden-categories' => '{{PLURAL:$1|Kategorija moħbija|Kategoriji moħbija}}',
-'hidden-category-category' => 'Kategoriji moħbija', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategoriji moħbija',
'category-subcat-count' => "{{PLURAL:$2|Din il-kategorija għandha biss din is-sottokategorija segwenti.|Din il-kategorija għandha {{PLURAL:$1|s-sottokategorija indikata|$1 sottokategoriji}}, minn total ta' $2.}}",
'category-subcat-count-limited' => 'Din il-kategorija għandha {{PLURAL:$1|sottokategorija|$1 sottokategoriji}}.',
'category-article-count' => "{{PLURAL:$2|Din il-kategorija għandha biss din il-paġna, kif indikat.| Din il-kategorija għandha {{PLURAL:$1|l-paġna indikata|l-$1 paġni indikati}}, minn total ta' $2.}}",
@@ -374,6 +390,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Din il-kategorija għandha biss dan il-fajl, kif indikat|Din il-kategorija għandha {{PLURAL:$1|fajl, kif indikat|$1 fajls, indikati}}, minn total ta' $2.}}",
'category-file-count-limited' => "Il-{{PLURAL:$1|fajl indikat huwa|$1 fajls indikati huma}} f'din il-kategorija.",
'listingcontinuesabbrev' => 'kompli',
+'index-category' => 'Paġni indiċjati',
+'noindex-category' => 'Paġni mhux indiċizzati',
'linkprefix' => '/^(.*?)([a-żA-Ż\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''MediaWiki ġie installat b'suċċess.'''",
@@ -384,10 +402,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Mistoqsijiet rikorrenti fuq il-MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Il-lista tal-posta tħabbar 'l MediaWiki]",
-'about' => 'Dwar',
-'article' => 'artiklu',
-'newwindow' => "(tinfetaħ f'tieqa ġdida)",
-'cancel' => 'Annulla',
+'about' => 'Dwar',
+'article' => 'artiklu',
+'newwindow' => "(tinfetaħ f'tieqa ġdida)",
+'cancel' => 'Annulla',
+'moredotdotdot' => 'Aktar...',
+'mypage' => 'Il-paġna tiegħi',
+'mytalk' => 'id-diskussjonijiet tiegħi',
+'anontalk' => 'Diskussjoni għal dan l-IP',
+'navigation' => 'Navigazzjoni',
+'and' => '&#32;u',
+
+# Cologne Blue skin
'qbfind' => 'Fittex',
'qbbrowse' => 'Qalleb',
'qbedit' => 'Immodifika',
@@ -395,15 +421,35 @@ $messages = array(
'qbpageinfo' => 'Kuntest',
'qbmyoptions' => 'Il-paġni tiegħi',
'qbspecialpages' => 'Paġni speċjali',
-'moredotdotdot' => 'Aktar...',
-'mypage' => 'Il-paġna tiegħi',
-'mytalk' => 'id-diskussjonijiet tiegħi',
-'anontalk' => 'Diskussjoni għal dan l-IP',
-'navigation' => 'Navigazzjoni',
-'and' => '&#32;u',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Mistoqsijiet komuni',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Żid diskussjoni',
+'vector-action-delete' => 'Ħassar',
+'vector-action-move' => 'Mexxi',
+'vector-action-protect' => 'Ipproteġi',
+'vector-action-undelete' => 'Irkupra',
+'vector-action-unprotect' => 'Żblokka',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Għajnuna',
+'vector-namespace-image' => 'Fajl',
+'vector-namespace-main' => 'Paġna',
+'vector-namespace-media' => 'Fajl multimedjali',
+'vector-namespace-mediawiki' => 'Messaġġ',
+'vector-namespace-project' => "Paġna ta' proġett",
+'vector-namespace-special' => 'Paġna speċjali',
+'vector-namespace-talk' => 'Diskussjoni',
+'vector-namespace-template' => 'Mudell',
+'vector-namespace-user' => 'Utent',
+'vector-view-create' => 'Oħloq',
+'vector-view-edit' => 'Editja',
+'vector-view-history' => 'Uri l-kronoloġija',
+'vector-view-view' => 'Aqra',
+'vector-view-viewsource' => 'Ara s-sors',
+'actions' => 'Azzjonijiet',
+'namespaces' => 'Spazji tal-isem',
+'variants' => 'Varjanti',
'errorpagetitle' => 'Problema',
'returnto' => "Erġa' lura lejn $1.",
@@ -453,18 +499,22 @@ $messages = array(
'otherlanguages' => "F'lingwi oħrajn",
'redirectedfrom' => '(Riindirizzat minn $1)',
'redirectpagesub' => "Paġna ta' riindirizzament",
-'lastmodifiedat' => 'L-aħħar modifika fuq il-paġna: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'L-aħħar modifika fuq il-paġna: $2, $1.',
'viewcount' => 'Din il-paġna ġiet aċċessata {{PLURAL:$1|darba|$1 darba}}.',
'protectedpage' => 'Paġna protetta',
'jumpto' => 'Aqbeż għal:',
'jumptonavigation' => 'navigazzjoni',
'jumptosearch' => 'fittex',
+'view-pool-error' => "Jiddispjaċina, imma fil-mument is-servers jinsabu mgħobbija ż-żejjed.
+Ħafna utenti qegħdin jippruvaw jaraw din il-paġna.
+Jekk jogħġbok stenna ftit qabel ma terġa' tipprova tuża' din il-paġna.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Dwar {{SITENAME}}',
'aboutpage' => 'Project:Dwar',
'copyright' => 'Kontenut aċċessibli taħt $1.',
-'copyrightpagename' => 'Copyright {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Ġrajjiet kurrenti',
'currentevents-url' => 'Project:Ġrajjiet kurrenti',
@@ -472,8 +522,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ċaħda ġenerali',
'edithelp' => 'Gwida',
'edithelppage' => 'Help:Kif Timmodifika',
-'faq' => 'Mistoqsijiet komuni',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Kontenut',
'mainpage' => 'Il-Paġna prinċipali',
'mainpage-description' => 'Il-Paġna prinċipali',
@@ -553,10 +601,6 @@ L-aħħar attentat ta\' rikjesta tad-databażi kienet:
"$1"
mill-funzjoni "$2".
Id-databażi tat il-problema segwenti "$3: $4"',
-'noconnect' => 'Skużana! Il-wiki bħalissa għandha xi problemi tekniċi, u ma tistax tagħmel kuntatt mad-database tas-server.<br />
-$1',
-'nodb' => 'Ma tistax tagħżel id-database $1',
-'cachederror' => "Din hija kopja ''cache'' tal-paġna rikjesta, u jista' jkun li ma tkunx aġġornata għaldaqstant.",
'laggedslavemode' => "Twissija: Il-Paġna jista' ma jkollhiex l-affarijiet aġġornati.",
'readonly' => 'Database magħluq',
'enterlockreason' => "Daħħal raġuni għala qiegħed tagħlqu, inkludi l-istima ta' meta l-għeluq se tieħu effett",
@@ -582,8 +626,8 @@ Jekk din mhix ir-raġuni, wisq probabli sibt problema fis-software. Jekk jogħġ
'unexpected' => 'Valur mhux mistenni: "$1"="$2".',
'formerror' => 'Problema: il-formula ma setgħatx tiġi proċessata',
'badarticleerror' => 'Din l-azzjoni ma setgħetx isseħħ fuq din il-paġna.',
-'cannotdelete' => "Il-fajl jew il-paġna speċifikati ma setgħux jiġu mħassra.
-Jista' jkun li diġà tħassru minn xi ħaddieħor.",
+'cannotdelete' => 'Il-paġna jew il-fajl "$1" ma jistax jiġi mħassar.
+Jista\' jkun li diġà ġie mħassar minn xi ħaddieħor.',
'badtitle' => 'Titlu ħażin',
'badtitletext' => "It-titlu tal-paġna rikjesta huwa invalidu, vojt, jew ġej minn żball fil-ħolqa bejn siti wiki differenti jew verżjonijiet ta' lingwi differenti tal-istess sit. Jista' wkoll ikollu wieħed jew aktar karattri li ma jistgħux jintużaw għat-titli.",
'perfcached' => "L-informazzjoni li jmiss huwa kopja ''cache'' u jista' ma jkunx aġġornat.",
@@ -616,7 +660,6 @@ Ir-raġuni li ġiet mogħtija kienet ''$2''.",
'virus-unknownscanner' => 'antivirus mhux magħruf:',
# Login and logout pages
-'logouttitle' => 'Oħroġ utent',
'logouttext' => "'''Bħalissa tinsab barra mill-kont tiegħek.'''
Tista' tkompli tuża' {{SITENAME}} bħala utent anonimu, jew tista' terġa [[Special:UserLogin|tidħol]] bħala l-istess utent jew wieħed differenti.
@@ -624,7 +667,6 @@ Kun af li ċerti paġni jistgħu jkomplu jidhru bħallikieku l-illogjar 'l barra
'welcomecreation' => "== Merħba, $1! ==
Il-kont tiegħek ġie maħluq.<br />
Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
-'loginpagetitle' => 'Idħol utent',
'yourname' => 'Isem tal-utent:',
'yourpassword' => 'Password:',
'yourpasswordagain' => "Erġa' ikteb il-password:",
@@ -635,6 +677,7 @@ Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
'nav-login-createaccount' => 'Idħol / Oħloq kont',
'loginprompt' => "Irid ikollok il-cookies mixgħula biex tkun tista' tidħol fuq {{SITENAME}}.",
'userlogin' => 'Idħol jew oħloq kont ġdid',
+'userloginnocreate' => 'Idħol',
'logout' => 'Oħroġ',
'userlogout' => 'oħroġ',
'notloggedin' => 'Għadek ma dħaltx ġewwa',
@@ -646,26 +689,8 @@ Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
'createaccountmail' => 'bil-posta elettronika',
'badretype' => 'Il-passwords li daħħalt ma jaqblux.',
'userexists' => 'L-isem tal-utent li daħħalt huwa diġà meħud. Jekk jogħġbok, agħżel isem differenti.',
-'youremail' => 'E-mail:',
-'username' => 'Isem tal-utent:',
-'uid' => 'L-ID tal-utent:',
-'prefs-memberingroups' => 'Membru tal-{{PLURAL:$1|grupp|gruppi}}:',
-'yourrealname' => 'Isem proprju:',
-'yourlanguage' => 'Lingwa:',
-'yourvariant' => 'Varjant:',
-'yournick' => 'Firma:',
-'badsig' => 'Il-firma mhux standard, hija invalida; iċċekkja t-tags tal-HTML.',
-'badsiglength' => 'Il-firma hija twila wisq. Trid tkun inqas minn $1 {{PLURAL:$1|karattru|karattru}}.',
-'yourgender' => 'Sess:',
-'gender-unknown' => 'Mhux speċifikat',
-'gender-male' => 'Maskil',
-'gender-female' => 'Femminil',
-'prefs-help-gender' => 'Opzjonali: użat biex jagħmel l-indikazzjoni tas-sess mis-softwer. Din l-informazzjoni tkun pubblika.',
-'email' => 'Posta elettronika',
-'prefs-help-realname' => 'L-isem propju mhuwiex obbligatorju; jekk tagħżel li tipprovdih, dan jintuża biss biex jagħtik attribuzzjoni għax-xogħol tiegħek.',
'loginerror' => 'Problemi fil-login',
-'prefs-help-email' => "L-indirizz tal-posta elettronika huwa kamp opzjonali, però dan jagħti aċċess lil oħrajn sabiex jagħmlu kuntatt miegħek minn ġol-paġna tal-utent jew mill-paġna ta' diskussjoni tal-utent mingħajr ma jkollok bżonn li turi l-identità tiegħek.",
-'prefs-help-email-required' => 'Hemm bżonn l-indirizz tal-posta elettronika.',
+'createaccounterror' => 'Il-kont ma jistax jinħoloq: $1',
'nocookiesnew' => "Il-Kont tal-utent għal l-aċċess ġie maħluq, però ma kienx possibli li tagħmel aċċess għal {{SITENAME}} għax il-''cookies'' huma disattivati. Erġa' prova l-aċċess bl-isem tal-utent u l-password wara li tkun attivajt il-''cookies'' tal-''browser''.",
'nocookieslogin' => "L-aċċess għal {{SITENAME}} jagħmel użu minn ''cookies'', li bħalissa huma disattivati. Jekk jogħġbok erġa' prova idħol wara li tkun attivajt il-''cookies'' fil-browser.",
'noname' => "Inti ma speċifikajtx isem ta' utent validu.",
@@ -677,12 +702,13 @@ Jekk jogħġbok kun żġur li ktibtu sew, jew minflok [[Special:UserLogin/signup
'nosuchusershort' => 'M\'hemm l-ebda utent bl-isem "<nowiki>$1</nowiki>".
Agħmel żġur li ktibta sew.',
'nouserspecified' => 'Trid tispeċifika isem tal-utent.',
+'login-userblocked' => 'Dan l-utent huwa imblukkat. Mhuwiex possibbli li jsir il-login.',
'wrongpassword' => "Il-password li daħħalt mhijiex tajba.
Jekk jogħġbok, erġa' pprova.",
'wrongpasswordempty' => "Ma ddaħlet l-ebda password.
Jekk jogħġbok, erġa' pprova.",
-'passwordtooshort' => 'Il-Password tiegħek huwa invalidu jew qasir wisq.
-Trid tkun mill-inqas {{PLURAL:$1|1 karratru|$1 karattri}} twila u differenti mill-isem tal-utent.',
+'passwordtooshort' => 'Il-password trid tkun mill-inqas {{PLURAL:$1|karattru|$1 karattri}} twila u differenti mill-isem tal-utent.',
+'password-name-match' => 'Il-password trid tkun differenti mill-isem tal-utent tiegħek.',
'mailmypassword' => 'Ibgħatli password ġdida',
'passwordremindertitle' => 'Password temporanju ġdid għal {{SITENAME}}',
'passwordremindertext' => 'Xi ħadd (probabbilment int, mill-indirizz tal-IP $1) għamel rikjesta għal password ġdida għal {{SITENAME}} ($4).<br />
@@ -692,6 +718,7 @@ Din il-password il-ġdida se tiskadi fi żmien {{PLURAL:$5|ġurnata|$5 ijiem}}.
Jekk xi ħadd ieħor għamel din ir-rikjesta jew jekk int ftakart il-password tiegħek u issa ma tridx tbiddilha, int tista\' ma tagħtix każ dan il-messaġġ u tkompli bl-użu tal-password l-antika.',
'noemail' => 'M\'hemm l-ebda indirizz ta\' posta elettronika għall-utent "$1".',
+'noemailcreate' => 'Huwa neċessarju li tipprovdi indirizz elettroniku validu',
'passwordsent' => 'Il-password il-ġdida ntbagħtet fl-indirizz tal-posta elettronika ta\' "$1".
Jekk jogħġbok, għamel aċċess wara li tasallek.',
'blocked-mailpassword' => 'L-indirizz tal-IP tiegħek huwa bblokkjat u miżmum milli jwettaq modifiki. Għaldaqstant, mhuwiex possibli għalik li tuża l-funzjoni sabiex iġġib lura l-password, u dan sabiex ma jkunx hemm abbużi.',
@@ -715,9 +742,11 @@ Jekk jogħġbok daħħal indirizz validu jew inkella ħassru.',
Huwa opportun li tidħol issa u tbiddel il-password tiegħek mill-ewwel.
Jekk trid tista\' ma tagħtix każ dan il-messaġġ, jekk dan il-kont ġie maħluq bi żball.',
+'usernamehasherror' => 'L-isem tal-utent ma jistax ikolu karattri hash',
'login-throttled' => "Saru ħafna tentattivi riċenti fuq il-password ta' dan il-kont.
Jekk jogħġbok stenna qabel ma terġa' tipprova.",
'loginlanguagelabel' => 'Lingwa: $1',
+'suspicious-userlogout' => "Ir-rikjesta tiegħek li toħroġ barra mill-kont tiegħek ġiet miċħuda minħabba li jidher li din intbagħtet minn browser li ma jaħdimx jew minn proxy ta' caching.",
# Password reset dialog
'resetpass' => 'Biddel il-password',
@@ -730,11 +759,10 @@ Biex tkompli l-aċċess tal-kont tiegħek huwa neċessarju li toħloq password
'retypenew' => "Erġa' ikteb il-password il-ġdida:",
'resetpass_submit' => 'Issettja l-password u idħol fis-sit',
'resetpass_success' => 'Il-password ġie modifikat. Aċċess fil-proċess...',
-'resetpass_bad_temporary' => "Password temporanja invalidu.
-Jista jkun li diġa b'suċċess bidilt il-password jew għamilt rikjesta għal password temporanju ġdid.",
'resetpass_forbidden' => 'Mhuwiex possibbli li timmodifika l-passwords',
'resetpass-no-info' => 'Trid tkun effetwajt il-login qabel ma taċċessa direttament din il-paġna.',
'resetpass-submit-loggedin' => 'Biddel il-password',
+'resetpass-submit-cancel' => 'Annulla',
'resetpass-wrong-oldpass' => "Password temporanja jew kurrenti invalida.
Jista' jkun li int diġà biddilt il-password, jew għamilt rikjesta għal password temporanja ġdida.",
'resetpass-temp-password' => 'Password temporanja:',
@@ -814,7 +842,6 @@ Jekk jogħġbok inkludi mqar wieħed minn dawn it-tnejn f'kwalunkwe rikjesta.",
'blockededitsource' => "It-test tal-'''modifiki tiegħek''' f' '''$1''' jinstab hawn taħt:",
'whitelistedittitle' => "Trid tidħol sabiex tkun tista' timmodifika l-paġna",
'whitelistedittext' => "Int trid $1 biex tkun tista' timodifika l-paġni.",
-'confirmedittitle' => "Tinħtieġ il-konferma b'e-mail qabel tkun tista' teditja l-paġni",
'confirmedittext' => "Jinħtieġ li tikkonferma l-indirizz tal-e-mail tiegħek sabiex tkun tista' timmodifika l-paġni.
Jekk jogħġbok, issettja u kkonferma l-indirizz tal-e-mail tiegħek mill-[[Special:Preferences|preferenzi tal-utent]].",
'nosuchsectiontitle' => 'Is-sezzjoni ma tistax tinstab',
@@ -837,10 +864,15 @@ L-istess indirizz tal-IP jista' jkun użat minn bosta utenti differenti.
Jekk int utent anonimu u tħoss li qiegħed tirċievi kummenti irrelevanti jew li ma jagħmlux sens, jekk jogħġbok [[Special:UserLogin|idħol fil-kont tiegħek]] jew [[Special:UserLogin/signup|oħloq wieħed]] sabiex tevita li fil-futur tiġi konfuż ma' utenti anonimi oħra.''",
'noarticletext' => "Bħalissa m'hemm l-ebda test f'din il-paġna.
Inti tista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} timmodifika din il-paġna]</span>.",
+'noarticletext-nopermission' => "Bħalissa m'hemm l-ebda test f'din il-paġna. Inti tista' [[Special:Search/{{PAGENAME}}|tfittex għal dan it-titlu tal-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fittex ir-reġistri relatati]</span>.",
'userpage-userdoesnotexist' => 'Il-kont tal-utent "$1" mhux reġistrat.
Jekk jogħġbok, ara jekk verament tridx toħloq/timodifika din il-paġna.',
+'userpage-userdoesnotexist-view' => 'Il-kont tal-utent "$1" mhuwiex reġistrat.',
+'blocked-notice-logextract' => 'L-utent attwalment jinsab imblukkat.
+L-aħħar daħla fir-reġistru tal-imblokki hi mogħtiha hawn taħt għal referenza:',
'clearyourcache' => "'''Nota - Wara li tagħmel il-modifiki, xi drabi jkollok bżonn tħassar ''il-cache'' sabiex tkun tista' tara t-tibdil li sar.''' '''Mozilla / Firefox / Safari:''' żomm ''Shift'' waqt li tkun qiegħed tagħfas ''Reload,'' jew agħfas ''Ctrl-F5'' jew ''Ctrl-R'' (''Command-R'' fuq \"Macintosh\"); '''Konqueror: '''agħfas ''Reload'' jew agħfas ''F5;'' '''Opera:''' ħassar il-cache fl-''Għodda → Preferenzi;'' '''Internet Explorer:''' żomm ''Ctrl'' waqt li tagħfas ''Refresh,'' jew agħfas ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Avviż:''' Uża l-buttuna 'Dehra proviżorja' sabiex tittestja s-CSS/JS il-ġodda qabel ma tagħmel il-modifiki.",
+'usercssyoucanpreview' => "'''Suġġeriment:''' Uża l-buttuna \"{{int:showpreview}}\" sabiex tipprova s-CSS il-ġdid tiegħek qabel ma ssalvah.",
+'userjsyoucanpreview' => "'''Suġġeriment:''' Uża l-buttuna \"{{int:showpreview}}\" sabiex tipprova l-JavaScript il-ġdid tiegħek qabel ma ssalvah.",
'usercsspreview' => "'''Ftakar li inti qed turi dehra proviżorja tas-CSS personali. Il-modifiki li għamilt għadhom ma ġewx salvati!'''",
'userjspreview' => "'''Ftakar li inti qiegħed biss tipprova/tara dehra proviżorja tal-JavaScript personali; il-modifiki li għamilt għad iridu jiġu salvati!'''",
'userinvalidcssjstitle' => "'''Twissija:''' M'hemm l-ebda skin bl-isem \"\$1\".
@@ -889,13 +921,16 @@ Jekk jogħġbok konsidra taqsam din il-paġna f'sezzjonijiet iż-żgħar.'''",
'readonlywarning' => "'''TWISSIJA: Id-databażi ġiet imblukkata għall-manutenzjoni, u għaldaqstant m'huwiex possibbli li ssalva l-modifiki tiegħek dal-ħin. Biex ma titlifhomx, għalissa salva xogħlok ġo fajl u ġaladarba terġa' tinfetaħ id-databażi, ikkopja kollox. Grazzi.'''
L-amministratur li mblokkaha offra din ir-raġuni: $1",
-'protectedpagewarning' => "'''Twissija: Din il-paġna ġiet magħluqa sabiex l-utenti li għandhom il-privileġġi ta' amministratur biss ikunu jistgħu jimmodifikawha.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Din il-paġna ġiet imblukkata sabiex l-utenti reġistrati biss ikunu jistgħu jimmodifikawha.",
+'protectedpagewarning' => "'''Twissija: Din il-paġna ġiet imblukkata b'tali mod li l-utenti li għandhom il-privileġġi ta' amministratur biss jistgħu jimmodifikawha.'''<br/ >
+L-aħħar daħla fir-reġistru hija disponibbli hawn taħt għar-referenza:",
+'semiprotectedpagewarning' => "'''Nota:''' Din il-paġna ġiet imblukkata b'tali mod li l-utenti reġistrati biss jistgħu jimmodifikawha.<br />
+L-aħħar daħla fir-reġistru hija disponibbli hawn taħt għar-referenza:",
'cascadeprotectedwarning' => "'''Twissija:''' Din il-paġna ġiet imblukkata sabiex l-utenti li għandhom il-privileġġi ta' amministratur biss ikunu jistgħu jimmodifikawha, minħabba li hija inkluża fil-{{PLURAL:\$1|paġna segwenti, li ġiet protetta|paġni segwenti li ġew protetti}}, bil-protezzjoni \"rikorsiva\" tiġi magħżula:",
-'titleprotectedwarning' => "'''TWISSIJA: Din il-paġna ġiet imblukkata sabiex dawk l-utenti li għandhom [[Special:ListGroupRights|drittijiet speċifiċi]] jkunu jistgħu joħolquha.'''",
-'templatesused' => 'Templates użati fuq din il-paġna:',
-'templatesusedpreview' => 'Templates użati fil-previżjoni:',
-'templatesusedsection' => "Templates użati f'din is-sezzjoni:",
+'titleprotectedwarning' => "'''Twissija: Din il-paġna ġiet imblukkata b'tali mod li l-utenti li għandhom [[Special:ListGroupRights|drittijiet speċifiċi]] jistgħu joħolquha.'''<br/ >
+L-aħħar daħla fir-reġistru hija disponibbli hawn taħt għar-referenza:",
+'templatesused' => "{{PLURAL:$1|Mudell użat|Mudelli wżati}} f'din il-paġna:",
+'templatesusedpreview' => "{{PLURAL:$1|Mudell użat|Mudelli wżati}} f'din id-dehra proviżorja.",
+'templatesusedsection' => "{{PLURAL:$1|Mudell użat|Mudelli wżati}} f'din is-sezzjoni:",
'template-protected' => '(protetta)',
'template-semiprotected' => '(semi-protetta)',
'hiddencategories' => "Din il-paġna hija membru ta' {{PLURAL:$1|1 kategorija moħbija|$1 kategoriji moħbija}}:",
@@ -904,14 +939,17 @@ L-amministratur li mblokkaha offra din ir-raġuni: $1",
'nocreatetext' => "{{SITENAME}} limitat l-abbilitá tal-ħolqien ta' paġni ġodda.
Tista' tmur lura u tagħmel modifiki ta' paġni eżistenti, inkella [[Special:UserLogin|idħol jew oħloq kont ġdid]].",
'nocreate-loggedin' => "M'għandekx permess li toħloq paġni ġodda.",
+'sectioneditnotsupported-title' => 'L-immodifikar tas-sezzjonijiet mhuwiex sostnut',
+'sectioneditnotsupported-text' => "L-immodifikar ta' sezzjonijiet f'din il-paġna mhuwiex sostnut.",
'permissionserrors' => 'Problemi bil-permessi',
'permissionserrorstext' => "Inti m'għandhekx dritt li tagħmel hekk, għar-{{PLURAL:$1|raġuni|raġunijiet}} segwenti:",
'permissionserrorstext-withaction' => "M'għandekx il-permessi neċessarji biex $2, minħabba r-{{PLURAL:$1|raġuni|raġunijiet}} segwenti:",
-'recreate-deleted-warn' => "'''Twissija: Inti qiegħed toħloq paġna li kienet imħassra.'''
+'recreate-moveddeleted-warn' => "'''Twissija: Inti qiegħed toħloq mill-ġdid paġna li ġiet imħassra.'''
-Aċċerta ruħek jekk mhux opportun li tkompli timodifika din il-paġna.
-Il-Link għar-reġistru ta' tħassir għal din il-paġna hija provduta għal konvenjenza:",
-'deleted-notice' => "Din il-paġna ġiet imħassra. Il-log tat-tħassir ta' din il-paġna huwa pprovdut hawn taħt għal referenza.",
+Aċċerta ruħek jekk huwiex opportun li tkompli timmodifika din il-paġna.
+Ir-reġistru tat-tħassir u tal-mixi huwa pprovdut għal aktar konvenjenza:",
+'moveddeleted-notice' => 'Din il-paġna ġiet imħassra. Ir-reġistri tat-tħassir u tal-mixi għal din il-paġna huma provduti hawn taħt għal referenza.',
+'log-fulllog' => 'Uri r-reġistru sħiħ',
'edit-gone-missing' => 'Il-paġna ma tistax tiġi aġġornata.
Jidher li din ġiet imħassra.',
'edit-conflict' => 'Kunflitt tal-editjar.',
@@ -949,7 +987,7 @@ Ir-raġuni li ngħatat minħabba l-blokk mingħand $3 kienet ''$2''",
'currentrev' => 'Reviżjoni kurrenti',
'currentrev-asof' => "Reviżjoni kurrenti ta' $1",
'revisionasof' => "Reviżjoni ta' $1",
-'revision-info' => "Reviżjoni ta' $1 minn $2", # Additionally available: $3: revision id
+'revision-info' => "Reviżjoni ta' $1 minn $2",
'previousrevision' => '←Reviżjoni eqdem',
'nextrevision' => 'Reviżjoni iġded→',
'currentrevisionlink' => 'Reviżjoni kurrenti',
@@ -962,7 +1000,7 @@ Ir-raġuni li ngħatat minħabba l-blokk mingħand $3 kienet ''$2''",
Leġġenda: (kur) = differenzi bil-verżjoni kurrenti,
(l-aħħar) = differenzi bil-verżjoni preċedenti, M = modifiki żgħar.",
'history-fieldset-title' => 'Fittex fil-kronoloġija',
-'deletedrev' => '[imħassra]',
+'history-show-deleted' => 'Dawk biss imħassra',
'histfirst' => 'L-iġded',
'histlast' => 'L-eqdem',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -971,7 +1009,7 @@ Leġġenda: (kur) = differenzi bil-verżjoni kurrenti,
# Revision feed
'history-feed-title' => 'Kronoloġija',
'history-feed-description' => 'Kronoloġija għal din il-paġna fuq dan il-wiki',
-'history-feed-item-nocomment' => '$1 fil- $2', # user at time
+'history-feed-item-nocomment' => '$1 fil- $2',
'history-feed-empty' => "Il-Paġna rikjesta qas teżisti.
Jista' jkun li ġiet imħassra mill-wiki, jew imsemmija mill-ġdid.
Prova [[Special:Search|fittex fuq il-wiki]] għal paġni relevanti ġodda.",
@@ -980,12 +1018,20 @@ Prova [[Special:Search|fittex fuq il-wiki]] għal paġni relevanti ġodda.",
'rev-deleted-comment' => '(tneħħa l-kumment)',
'rev-deleted-user' => '(l-isem tal-utent tneħħa)',
'rev-deleted-event' => '(azzjoni tal-log tneħħa)',
-'rev-deleted-text-permission' => "Ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
-Jista' jkun hemm informazzjoni fir-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} reġistru ta' tħassir].",
-'rev-deleted-text-view' => "Din ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
-Bħala amministratur inti tista' taraha;
-jista' jkun li hemm informazzjoni fir-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} reġistru ta' tħassir].",
+'rev-deleted-user-contribs' => '[isem tal-utent jew indirizz IP imneħħi - il-modifika ġie moħbiha mill-kronoloġija]',
+'rev-deleted-text-permission' => "Din ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
+Ikkonsulta r-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir] għal aktar dettalji.",
+'rev-deleted-text-unhide' => "Din ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
+Ikkonsulta r-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir] għal aktar dettalji.
+Bħala amministratur inti tista' [$1 tara din ir-reviżjoni] jekk huwa neċessarju.",
+'rev-suppressed-text-unhide' => "Ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
+Dettalji jistgħu jinstabu fuq ir-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir]. Bħala amministratur inti xorta waħda tista' [$1 tara din ir-reviżjoni] jekk huwa neċessarju.",
+'rev-deleted-text-view' => "Ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
+Bħala amministratur inti tista' taraha; jista' jkun li hemm dettalji fir-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir].",
+'rev-suppressed-text-view' => "Ir-reviżjoni ta' din il-paġna ġiet '''imħassra'''.
+Bħala amministratur inti xorta waħda tista' taraha; dettalji jistgħu jinstabu fuq ir-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir].",
'rev-delundel' => 'uri/aħbi',
+'rev-showdeleted' => 'uri',
'revisiondelete' => 'Ħassar/irkupra reviżjonijiet',
'revdelete-nooldid-title' => 'Verżjoni mhux speċifikata',
'revdelete-nooldid-text' => 'Ma ġiet speċifikata l-ebda reviżjoni tal-paġna fuq liema se ssir din l-azzjoni, ir-reviżjoni speċifikata ma teżistix, jew inkella qiegħed tipprova taħbi r-reviżjoni kurrenti.',
@@ -993,25 +1039,33 @@ jista' jkun li hemm informazzjoni fir-[{{fullurl:Special:Log/delete|page={{FULLP
'revdelete-nologtype-text' => "Ma ġie speċifikat l-ebda tip ta' reġistru fuqiex l-azzjoni se ssir.",
'revdelete-nologid-title' => 'Daħla invalida għar-reġistru',
'revdelete-nologid-text' => 'Ma ġie speċifikat l-ebda avveniment tar-reġistru fuqiex il-funzjoni se ssir jew id-daħla speċifikata ma teżistix.',
+'revdelete-no-file' => 'Il-fajl speċifikat ma jeżistix.',
+'revdelete-show-file-confirm' => 'Tinsab ċert li trid tara reviżjoni mħassra tal-fajl "<nowiki>$1</nowiki>" tal-$2 fil-$3?',
+'revdelete-show-file-submit' => 'Iva',
'revdelete-selected' => "'''{{PLURAL:$2|Reviżjoni magħżula|Reviżjonijiet magħżula}} ta' [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Avveniment tar-reġistru magħżul|Avvenimenti tar-reġistri magħżula}}:'''",
-'revdelete-text' => "'''Reviżjonijiet imħassra u avvenimenti xorta jidhru fil-kronoloġija tal-paġna, filwaqt partijiet tal-kontenut jiġu inaċċessibli għal pubbliku.'''
-
-L-Amminstraturi l-oħrajn fuq {{SITENAME}} xorta jkunu jistgħu jitħlu fuq il-kontenut moħbi u jistgħu jiġu irkuprati mill-istess ''interface'', sakemm m'hemmx aktar limiti fil-fażi ta' installazjoni ta' dan is-sit.",
+'revdelete-text' => "'''Reviżjonijiet u azzjonijiet imħassra xorta waħda jidhru fil-kronoloġija tal-paġna, filwaqt li partijiet tal-kontenut jiġu inaċċessibli għall-pubbliku.'''
+L-amminstraturi l-oħrajn fuq {{SITENAME}} xorta jkunu jistgħu jidħlu fuq il-kontenut moħbi u jistgħu jirkuprawh minn din l-istess interfaċċa, sakemm restrizzjonijiet ulterjuri jiġu definiti.",
+'revdelete-confirm' => 'Jekk jogħġbok ikkonferma li dan hu dak li tixtieq tagħmel, li tifhem il-konsegwenzi, u li qed tagħmel dan skont il-[[{{MediaWiki:Policy-url}}|politika]].',
'revdelete-legend' => "Oħloq limiti ta' viżibilità",
'revdelete-hide-text' => 'Aħbi l-kontenut tar-reviżjoni',
+'revdelete-hide-image' => 'Aħbi l-kontenut tal-fajl',
'revdelete-hide-name' => 'Aħbi l-azzjoni u it-tarka',
'revdelete-hide-comment' => 'Aħbi kumment tal-modifika',
'revdelete-hide-user' => 'Aħbi l-isem tal-utent/IP tal-modifikatur',
'revdelete-hide-restricted' => 'Aħbi d-dati indikati anki lill-amministraturi.',
+'revdelete-radio-same' => '(tbiddilx)',
+'revdelete-radio-set' => 'Iva',
+'revdelete-radio-unset' => 'Le',
'revdelete-suppress' => 'Aħbi l-informazzjoni minn Amministraturi wkoll bħall-oħrajn',
-'revdelete-hide-image' => 'Aħbi l-kontenut tal-fajl',
'revdelete-unsuppress' => 'Neħħi limiti fuq reviżjonijiet irkuprati',
'revdelete-log' => 'Raġuni:',
-'revdelete-submit' => 'Applika lil reviżjoni magħżula',
+'revdelete-submit' => 'Applika lir-{{PLURAL:$1|reviżjoni magħżulha|reviżjonijiet magħżula}}',
'revdelete-logentry' => "Il-Visibilitá tar-reviżjoni ta' [[$1]] inbidlet",
'logdelete-logentry' => "Il-Visibilitá tal-avveniment ta' $1 inbidlet",
'revdelete-success' => "'''Il-viżibilità tar-reviżjoni ġiet aġġornata b'suċċess.'''",
+'revdelete-failure' => "'''Il-viżibilità tar-reviżjoni ma tistax tiġi aġġornata:'''
+$1",
'logdelete-success' => "'''II-viżibilità tar-reġistru ġiet imposta b'suċċess.'''",
'revdel-restore' => 'Biddel visibilitá',
'pagehist' => 'Kronoloġija tal-paġna',
@@ -1025,6 +1079,12 @@ L-Amminstraturi l-oħrajn fuq {{SITENAME}} xorta jkunu jistgħu jitħlu fuq il-k
'revdelete-unhid' => 'uri $1',
'revdelete-log-message' => '$1 għal $2 {{PLURAL:$2|revision|reviżjoni}}',
'logdelete-log-message' => '$1 għal $2 {{PLURAL:$2|event|avvenimenti}}',
+'revdelete-reason-dropdown' => "*Raġunijiet komuni għat-tħassir
+** Vjolazzjoni ta' copyright
+** Informazzjoni personali inapproprjata
+** Informazzjoni potenzjalment libelluża",
+'revdelete-reasonotherlist' => 'Raġuni oħra',
+'revdelete-edit-reasonlist' => 'Immodifika r-raġunijiet għat-tħassir',
# Suppression log
'suppressionlog' => "Log ta' ċaħdied",
@@ -1063,33 +1123,13 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
'mergelogpagetext' => "Hawn taħt hawn lista ta' l-aktar tgħaqqid riċenti ta' paġna waħda ta' storja f'oħra.",
# Diffs
-'history-title' => 'Kronoloġija tal-modifiki ta\' "$1"',
-'difference' => '(Differenzi bejn ir-reviżjonijiet)',
-'lineno' => 'Linja $1:',
-'compareselectedversions' => 'Qabbel il-verżjonijiet magħżula',
-'visualcomparison' => 'Konfront viżwali',
-'wikicodecomparison' => 'Konfront tal-wikitext',
-'editundo' => 'ħassar',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 reviżjonijiet intermedji}} mhux qegħdin jidhru.)',
-'diff-movedto' => 'immexxi għal $1',
-'diff-styleadded' => 'L-istil $1 miżjud',
-'diff-added' => '$1 miżjud',
-'diff-changedto' => 'imbiddel għal $1',
-'diff-styleremoved' => 'L-istil $1 tneħħa',
-'diff-removed' => 'Tneħħa $1',
-'diff-src' => 'sors',
-'diff-withdestination' => "b'destinazzjoni $1",
-'diff-width' => "wisa'",
-'diff-height' => 'tul',
-'diff-p' => "'''paragrafu'''",
-'diff-blockquote' => "'''kwotazzjoni'''",
-'diff-div' => "'''diviżjoni'''",
-'diff-table' => "'''tabella'''",
-'diff-tbody' => "'''kontenut ta' tabella'''",
-'diff-tr' => "'''ringiela'''",
-'diff-img' => "'''stampa'''",
-'diff-i' => "'''tipa korsiva'''",
-'diff-b' => "'''tipa ħoxna'''",
+'history-title' => 'Kronoloġija tal-modifiki ta\' "$1"',
+'difference' => '(Differenzi bejn ir-reviżjonijiet)',
+'lineno' => 'Linja $1:',
+'compareselectedversions' => 'Qabbel il-verżjonijiet magħżula',
+'showhideselectedversions' => 'Uri/aħbi reviżjonijiet magħżula',
+'editundo' => 'ħassar',
+'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 reviżjonijiet intermedji}} mhux qegħdin jidhru.)',
# Search results
'searchresults' => 'Riżultat tat-tfittxija',
@@ -1097,30 +1137,27 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
'searchresulttext' => "Aktar informazzjoni dwar ir-riċerka ta' {{SITENAME}}, ara [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Int fittixt għal \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|il-paġni kollha li jibdew b\'"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|il-paġni kollha li jwasslu għal "$1"]])',
'searchsubtitleinvalid' => "Int fittixt għal '''$1'''",
-'noexactmatch' => "'''M'hemmx paġna li jisimha \"\$1\".''' Inti tista' [[:\$1|toħloq din il-paġna]].",
-'noexactmatch-nocreate' => "'''M'hemmx paġna li jisimha \"\$1\".'''",
'toomanymatches' => 'Ħafna tqabbil ġew ritornati, jekk jogħġbok prova inkjesta differenti',
'titlematches' => 'Titlu tal-paġna taqbel',
'notitlematches' => "L-ebda titlu ta' paġna ma jaqbel",
'textmatches' => 'It-test tal-paġni, jaqbel',
'notextmatches' => "L-ebda test ta' paġna ma jaqbel",
-'prevn' => "$1 ta' qabel",
-'nextn' => '$1 li jmiss',
-'viewprevnext' => 'Ara ($1) ($2) ($3)',
+'prevn' => "{{PLURAL:$1|$1}} ta' qabel",
+'nextn' => '{{PLURAL:$1|$1}} li jmiss',
+'viewprevnext' => 'Ara ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Hemm paġna bl-isem ta' \"[[:\$1]]\" fuq din il-wiki'''",
'searchmenu-new' => "'''Oħloq il-paġna \"[[:\$1]]\" fuq din il-wiki!'''",
'searchhelp-url' => 'Help:Kontenut',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Uri l-paġni b'dan il-prefiss]]",
'searchprofile-articles' => "Paġni ta' kontenut",
-'searchprofile-project' => "Paġni ta' proġetti",
-'searchprofile-images' => 'Fajls',
+'searchprofile-project' => "Paġni ta' għajnuna u ta' proġett",
+'searchprofile-images' => 'Multimedja',
'searchprofile-everything' => 'Kollox',
'searchprofile-advanced' => 'Avvanzata',
'searchprofile-articles-tooltip' => "Fittex f'$1",
'searchprofile-project-tooltip' => "Fittex f'$1",
'searchprofile-images-tooltip' => 'Fittex għal fajls',
'searchprofile-everything-tooltip' => "Fittex kullimkien (inklużi l-paġni ta' diskussjoni)",
-'prefs-search-nscustom' => 'Fittex fl-ispazji tal-isem personalizzati:',
'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 kliem}})',
'search-result-score' => 'Relevanza: $1%',
'search-redirect' => '(rindirizza $1)',
@@ -1137,7 +1174,6 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
'searchall' => 'kollha',
'showingresults' => "Hawn taħt ġie inkluż massimu ta' {{PLURAL:$1|riżultat '''1''' li jibda|'''$1''' riżultat li jibdew}} bin-numru '''$2'''.",
'showingresultsnum' => "Hawn taħt {{PLURAL:$3|jinsab riżultat '''1''' li jibda|jinsabu '''$3''' riżultati li jibdew}} bin-numru '''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Riżultat minn '''$1''' sa '''$3'''|Riżultati '''$1 - $2''' ta' '''$3'''}} jinstabu hawn taħt",
'nonefound' => "'''Nota''': Awtomatikament, huma ftit spazji tal-isem imfittxija.
Ipprova għamel prefiss għall-inkjesta tiegħek ma' ''all:'' sabiex tfittex il-kontenut kollu (inkluż paġni ta' diskussjoni, mudelli, etċ), jew uża l-ispazju tal-isem mixtieq bħala prefiss.",
'search-nonefound' => 'It-tfittxija ma tat l-ebda riżultat.',
@@ -1146,113 +1182,143 @@ Ipprova għamel prefiss għall-inkjesta tiegħek ma' ''all:'' sabiex tfittex il-
'powersearch-ns' => 'Fittex fl-ispazju tal-isem:',
'powersearch-redir' => "Lista ta' riindirizzi",
'powersearch-field' => 'Fittex',
+'powersearch-toggleall' => 'Kollha',
+'powersearch-togglenone' => 'Ebda',
'search-external' => 'Tfittxija esterna',
'searchdisabled' => "It-Tfittxija fil-{{SITENAME}} mhux attiva.
Sadanittant, tista' tipprova tfittex bil-Google.
Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu ma jkunux aġġornati.",
+# Quickbar
+'qbsettings' => "''Quickbar''",
+'qbsettings-none' => 'Xejn',
+'qbsettings-fixedleft' => 'Mehmuż fix-xellug',
+'qbsettings-fixedright' => 'Mehmuż fil-lemin',
+'qbsettings-floatingleft' => "''Floating'' lejn ix-xellug",
+'qbsettings-floatingright' => "''Floating'' lejn il-lemin",
+
# Preferences page
-'preferences' => 'Preferenzi',
-'mypreferences' => 'il-preferenzi tiegħi',
-'prefs-edits' => "Numru ta' modifiki:",
-'prefsnologin' => 'Għadek ma dħaltx ġewwa',
-'prefsnologintext' => 'Sabiex tkun tista\' tippersonalizza l-preferenzi huwa neċessarju li tidħol fil-<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} kont]</span>.',
-'prefsreset' => 'Il-preferenzi ġew irrisettjati għall-valuri predefiniti.',
-'qbsettings' => "''Quickbar''",
-'qbsettings-none' => 'Xejn',
-'qbsettings-fixedleft' => 'Mehmuż fix-xellug',
-'qbsettings-fixedright' => 'Mehmuż fil-lemin',
-'qbsettings-floatingleft' => "''Floating'' lejn ix-xellug",
-'qbsettings-floatingright' => "''Floating'' lejn il-lemin",
-'changepassword' => 'Ibdel il-password',
-'skin' => 'Aspett grafiku (skin)',
-'skin-preview' => 'dehra proviżorja',
-'math' => 'Formuli matematiċi',
-'dateformat' => 'Format tad-data',
-'datedefault' => 'L-ebda preferenza',
-'datetime' => 'Data u ħin',
-'math_failure' => "Problema fil-''parser''",
-'math_unknown_error' => 'Problema mhux magħrufa',
-'math_unknown_function' => 'funżjoni mhux magħrufa',
-'math_lexing_error' => 'żball lessikali',
-'math_syntax_error' => 'żball fis-sintassi',
-'math_image_error' => "Konverżjoni għal PNG bla suċċess; verifika li huma installati tajjeb il-programmi segwenti: ''latex, dvips, gs, u convert''",
-'math_bad_tmpdir' => "Impossibli tikteb jew toħloq direttorju temporanju għal ''math''",
-'math_bad_output' => "Impossibli tikteb jew toħloq direttorju tal-''output'' tal-''math''",
-'math_notexvc' => "Esekuzzjoni ''texvc'' nieqes; jekk jogħġbok konsultà ''math/README'' għal konfigurazzjoni.",
-'prefs-personal' => 'Profil tal-utent',
-'prefs-rc' => 'Modifiki riċenti',
-'prefs-watchlist' => 'Osservazzjoni speċjali',
-'prefs-watchlist-days' => "Numru ta' ġranet li għandu jintwera fil-osservazzjoni speċjali:",
-'prefs-watchlist-days-max' => '(massimu 7 ijiem)',
-'prefs-watchlist-edits' => "Numru ta' modifiki li tista' turi bil-funżjoni avvanzata:",
-'prefs-watchlist-edits-max' => '(numru massimu: 1000)',
-'prefs-misc' => 'Varji',
-'prefs-resetpass' => 'Biddel il-password',
-'saveprefs' => 'Żomm il-preferenzi',
-'resetprefs' => 'Neħħi modifiki mhux salvati',
-'restoreprefs' => 'Irkupra l-impostazzjonijiet awtomatiċi',
-'textboxsize' => 'Modifika',
-'prefs-edit-boxsize' => 'Daqs tat-tieqa tal-immodifikar.',
-'rows' => 'Fillieri:',
-'columns' => 'Kolonni:',
-'searchresultshead' => 'Fittex',
-'resultsperpage' => "Numru ta' riżultati għal kull paġna:",
-'contextlines' => 'Fillieri għal kull riżultat:',
-'contextchars' => "Numru ta' karratri tal-kliem",
-'stub-threshold' => 'Valur minimu għall-<a href="#" class="stub">ħoloq għall-abozzi</a>, f\'bytes:',
-'recentchangesdays' => "Numru ta' ġranet li għandhom jintwerew fit-tibdil riċenti:",
-'recentchangesdays-max' => '(massimu $1 ġurnata)',
-'recentchangescount' => "Numru ta' fillieri fit-tibdil riċenti, kronoloġiji, u fir-reġistri:",
-'savedprefs' => 'Il-preferenzi tiegħek ġew salvati.',
-'timezonelegend' => 'Żona tal-ħin:',
-'timezonetext' => "¹Numru ta' siegħat li hemm differenza bejn il-ħin lokali u il-ħin tas-server (UTC).",
-'localtime' => 'Ħin lokali:',
-'timezoneselect' => 'Żona tal-ħin:',
-'timezoneuseserverdefault' => 'Uża l-ħin tas-server',
-'timezoneuseoffset' => 'Ieħor (ispeċifika d-differenza)',
-'timezoneoffset' => 'Differenza¹:',
-'servertime' => 'Ħin tas-server:',
-'guesstimezone' => "Uża l-ħin tal-''browser'' tiegħek",
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Artiku',
-'timezoneregion-asia' => 'Asja',
-'timezoneregion-atlantic' => 'Oċean Atlantiku',
-'timezoneregion-australia' => 'Awstralja',
-'timezoneregion-europe' => 'Ewropa',
-'timezoneregion-indian' => 'Oċean Indjan',
-'timezoneregion-pacific' => 'Oċean Paċifiku',
-'allowemail' => 'Ħalli li jaslulek ittri-e mingħand utenti oħrajn',
-'prefs-searchoptions' => 'Preferenzi għat-tfittxija',
-'prefs-namespaces' => 'Namespace',
-'defaultns' => 'Namespace predefinit għat-tfittxija:',
-'default' => 'predefinit',
-'files' => 'Fajls',
-'prefs-custom-css' => 'CSS personalizzat',
-'prefs-custom-js' => 'JS personalizzat',
+'preferences' => 'Preferenzi',
+'mypreferences' => 'il-preferenzi tiegħi',
+'prefs-edits' => "Numru ta' modifiki:",
+'prefsnologin' => 'Għadek ma dħaltx ġewwa',
+'prefsnologintext' => 'Sabiex tkun tista\' tippersonalizza l-preferenzi huwa neċessarju li tidħol fil-<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kont]</span>.',
+'changepassword' => 'Ibdel il-password',
+'prefs-skin' => 'Aspett grafiku (skin)',
+'skin-preview' => 'dehra proviżorja',
+'prefs-math' => 'Formuli matematiċi',
+'datedefault' => 'L-ebda preferenza',
+'prefs-datetime' => 'Data u ħin',
+'prefs-personal' => 'Profil tal-utent',
+'prefs-rc' => 'Modifiki riċenti',
+'prefs-watchlist' => 'Osservazzjoni speċjali',
+'prefs-watchlist-days' => "Numru ta' ġranet li għandu jintwera fil-osservazzjoni speċjali:",
+'prefs-watchlist-days-max' => "(massimu ta' 7 ġranet)",
+'prefs-watchlist-edits' => "Numru ta' modifiki li tista' turi bil-funżjoni avvanzata:",
+'prefs-watchlist-edits-max' => '(numru massimu: 1000)',
+'prefs-misc' => 'Varji',
+'prefs-resetpass' => 'Biddel il-password',
+'prefs-email' => 'Opzjonijiet għall-posta elettronika',
+'prefs-rendering' => 'Dehra',
+'saveprefs' => 'Żomm il-preferenzi',
+'resetprefs' => 'Neħħi modifiki mhux salvati',
+'restoreprefs' => 'Irkupra l-impostazzjonijiet awtomatiċi',
+'prefs-editing' => 'Modifiki',
+'prefs-edit-boxsize' => 'Daqs tat-tieqa tal-immodifikar.',
+'rows' => 'Fillieri:',
+'columns' => 'Kolonni:',
+'searchresultshead' => 'Fittex',
+'resultsperpage' => "Numru ta' riżultati għal kull paġna:",
+'contextlines' => 'Fillieri għal kull riżultat:',
+'contextchars' => "Numru ta' karratri tal-kliem",
+'stub-threshold' => 'Valur minimu għall-<a href="#" class="stub">ħoloq għall-abozzi</a>, f\'bytes:',
+'recentchangesdays' => "Numru ta' ġranet li għandhom jintwerew fit-tibdil riċenti:",
+'recentchangesdays-max' => "(massimu ta' $1 {{PLURAL:$1|ġurnata|ġurnata}})",
+'recentchangescount' => "Numru ta' fillieri fit-tibdil riċenti:",
+'prefs-help-recentchangescount' => 'Din tinkludi tibdil riċenti, kronoloġiji u reġistri.',
+'savedprefs' => 'Il-preferenzi tiegħek ġew salvati.',
+'timezonelegend' => 'Żona tal-ħin:',
+'localtime' => 'Ħin lokali:',
+'timezoneuseserverdefault' => 'Uża l-ħin tas-server',
+'timezoneuseoffset' => 'Ieħor (ispeċifika d-differenza)',
+'timezoneoffset' => 'Differenza¹:',
+'servertime' => 'Ħin tas-server:',
+'guesstimezone' => "Uża l-ħin tal-''browser'' tiegħek",
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Artiku',
+'timezoneregion-asia' => 'Asja',
+'timezoneregion-atlantic' => 'Oċean Atlantiku',
+'timezoneregion-australia' => 'Awstralja',
+'timezoneregion-europe' => 'Ewropa',
+'timezoneregion-indian' => 'Oċean Indjan',
+'timezoneregion-pacific' => 'Oċean Paċifiku',
+'allowemail' => 'Ħalli li jaslulek ittri-e mingħand utenti oħrajn',
+'prefs-searchoptions' => 'Preferenzi għat-tfittxija',
+'prefs-namespaces' => 'Namespace',
+'defaultns' => "Fil-każ kuntrarju, fittex f'dawn l-ispazji tal-isem:",
+'default' => 'predefinit',
+'prefs-files' => 'Fajls',
+'prefs-custom-css' => 'CSS personalizzat',
+'prefs-custom-js' => 'JS personalizzat',
+'prefs-emailconfirm-label' => 'Konferma tal-ittra-e:',
+'prefs-textboxsize' => 'Daqs tat-tieqa tal-modifika',
+'youremail' => 'E-mail:',
+'username' => 'Isem tal-utent:',
+'uid' => 'L-ID tal-utent:',
+'prefs-memberingroups' => 'Membru tal-{{PLURAL:$1|grupp|gruppi}}:',
+'prefs-memberingroups-type' => '$1',
+'prefs-registration' => "Ħin ta' reġistrazzjoni:",
+'yourrealname' => 'Isem proprju:',
+'yourlanguage' => 'Lingwa:',
+'yourvariant' => 'Varjant:',
+'yournick' => 'Firma:',
+'prefs-help-signature' => "Kummenti fuq il-paġni ta' diskussjoni jridu jiġu ffirmati b'permezz ta' \"<nowiki>~~~~</nowiki>\" li jiġu maqluba għall-firma tiegħek u d-data.",
+'badsig' => 'Il-firma mhux standard, hija invalida; iċċekkja t-tags tal-HTML.',
+'badsiglength' => 'Il-firma hija twila wisq. Trid tkun inqas minn $1 {{PLURAL:$1|karattru|karattru}}.',
+'yourgender' => 'Sess:',
+'gender-unknown' => 'Mhux speċifikat',
+'gender-male' => 'Maskil',
+'gender-female' => 'Femminil',
+'prefs-help-gender' => 'Opzjonali: użat biex jagħmel l-indikazzjoni tas-sess mis-softwer. Din l-informazzjoni tkun pubblika.',
+'email' => 'Posta elettronika',
+'prefs-help-realname' => 'L-isem propju mhuwiex obbligatorju; jekk tagħżel li tipprovdih, dan jintuża biss biex jagħtik attribuzzjoni għax-xogħol tiegħek.',
+'prefs-help-email' => "L-indirizz tal-posta elettronika huwa kamp opzjonali, però dan jagħti aċċess lil oħrajn sabiex jagħmlu kuntatt miegħek minn ġol-paġna tal-utent jew mill-paġna ta' diskussjoni tal-utent mingħajr ma jkollok bżonn li turi l-identità tiegħek.",
+'prefs-help-email-required' => 'Hemm bżonn l-indirizz tal-posta elettronika.',
+'prefs-info' => 'Informazzjoni bażika',
+'prefs-i18n' => 'Internazzjonalizzazzjoni',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Format tad-data',
+'prefs-timeoffset' => 'Differenza fis-sigħat',
+'prefs-advancedediting' => 'Opzjonijiet avvanzati',
+'prefs-advancedrc' => 'Opzjonijiet avvanzati',
+'prefs-advancedrendering' => 'Opzjonijiet avvanzati',
+'prefs-advancedsearchoptions' => 'Opzjonijiet avvanzati',
+'prefs-advancedwatchlist' => 'Opzjonijiet avvanzati',
+'prefs-display' => "Opzjonijiet ta' viżwalizazzjoni",
# User rights
-'userrights' => 'Ġestjoni tad-drittijiet tal-utent', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Ġestjoni tal-gruppi tal-utent',
-'userrights-user-editname' => 'Daħħal isem tal-utent:',
-'editusergroup' => 'Immodifika l-gruppi tal-utent',
-'editinguser' => "Modifika tad-drittijiet tal-utent '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Immodifika l-gruppi tal-utent',
-'saveusergroups' => 'Salva l-gruppi tal-utent',
-'userrights-groupsmember' => "Membru ta':",
-'userrights-groups-help' => "Huwa possibbli li timmodifika l-gruppi li dan l-utent jinsab fihom:
+'userrights' => 'Ġestjoni tad-drittijiet tal-utent',
+'userrights-lookup-user' => 'Ġestjoni tal-gruppi tal-utent',
+'userrights-user-editname' => 'Daħħal isem tal-utent:',
+'editusergroup' => 'Immodifika l-gruppi tal-utent',
+'editinguser' => "Modifika tad-drittijiet tal-utent '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Immodifika l-gruppi tal-utent',
+'saveusergroups' => 'Salva l-gruppi tal-utent',
+'userrights-groupsmember' => "Membru ta':",
+'userrights-groupsmember-auto' => "Membru impliċitu ta':",
+'userrights-groups-help' => "Huwa possibbli li timmodifika l-gruppi li dan l-utent jinsab fihom:
* Kaxxa bil-punta magħżula tfisser li l-utent huwa fil-grupp
* Kaxxa bil-punta mhux magħżula tfisser li l-utent mhuwiex f'dak il-grupp
* It-tagħrifa * tindika li mhuwiex possibbli li tneħħi l-grupp ġaladarba tkun żidtu (jew viċi versa)",
-'userrights-reason' => 'Raġuni:',
-'userrights-no-interwiki' => "M'għandekx permess tagħmel modifiki fid-drittijiet tal-utenti fuq siti oħrajn.",
-'userrights-nodatabase' => 'Id-Database $1 ma jeżistix jew inkella mhux database lokali.',
-'userrights-nologin' => "Sabiex tkun tista' tagħti d-drittijiet lill-utenti hemm bżonn li [[Special:UserLogin|tidħol]] bħalha amministratur.",
-'userrights-notallowed' => "M'għandekx permess tagħti drittijiet lill-utenti.",
-'userrights-changeable-col' => "Gruppi li tista' tbiddel",
-'userrights-unchangeable-col' => 'Gruppi li ma tistax tbiddel',
+'userrights-reason' => 'Raġuni:',
+'userrights-no-interwiki' => "M'għandekx permess tagħmel modifiki fid-drittijiet tal-utenti fuq siti oħrajn.",
+'userrights-nodatabase' => 'Id-Database $1 ma jeżistix jew inkella mhux database lokali.',
+'userrights-nologin' => "Sabiex tkun tista' tagħti d-drittijiet lill-utenti hemm bżonn li [[Special:UserLogin|tidħol]] bħalha amministratur.",
+'userrights-notallowed' => "M'għandekx permess tagħti drittijiet lill-utenti.",
+'userrights-changeable-col' => "Gruppi li tista' tbiddel",
+'userrights-unchangeable-col' => 'Gruppi li ma tistax tbiddel',
# Groups
'group' => 'Grupp:',
@@ -1317,6 +1383,8 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
'right-editprotected' => 'Modifika paġni protetti',
'right-editinterface' => 'Immodifika l-interfaċċa tal-utent',
'right-editusercssjs' => "Modifika l-fajls CSS u JS ta' utenti oħrajn",
+'right-editusercss' => "Modifika l-fajls CSS ta' utenti oħrajn",
+'right-edituserjs' => "Modifika l-fajls JS ta' utenti oħrajn",
'right-rollback' => "Rollback malajr il-modifiki ta' l-aħħar utent li għamel modifiki f'paġna partikulari",
'right-markbotedits' => "Marka modifiki speċifiki bħalha modifiki ta' bot",
'right-noratelimit' => "Mhux suġġett ta' limitu ta' azzjoni",
@@ -1366,6 +1434,15 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
'recentchanges-legend' => 'Opzjonijiet tat-tibdil riċenti',
'recentchangestext' => 'Din il-paġna turi l-modifiki l-aktar riċenti għal kontenut tas-sit.',
'recentchanges-feed-description' => "Dan il-feed jirraporta l-modifiki l-aktar riċenti fil-kontenut ta' dan is-sit.",
+'recentchanges-label-legend' => 'Leġġenda: $1.',
+'recentchanges-legend-newpage' => '$1 - paġna ġdida',
+'recentchanges-label-newpage' => 'Din il-modifika ħolqot paġna ġdida',
+'recentchanges-legend-minor' => '$1 - modifika minuri',
+'recentchanges-label-minor' => 'Din hi modifika minuri',
+'recentchanges-legend-bot' => "$1 - modifika ta' bot",
+'recentchanges-label-bot' => 'Din il-modifika ġiet effettwata minn bot',
+'recentchanges-legend-unpatrolled' => '$1 - modifika mhux verifikata',
+'recentchanges-label-unpatrolled' => 'Din il-modifika għadha ma ġietx verifikata',
'rcnote' => "Hawn taħt {{PLURAL:$1|tinsab l-aktar modifika riċenti|jinsabu l-'''$1''' modifiki riċenti}} għas-sit fl-aħħar {{PLURAL:$2|24 siegħa|'''$2''' ġranet}}, id-dati ġew aġġornati fil-$5 ta' $4.",
'rcnotefrom' => "Ħawn taħt jinsabu l-modifiki minn '''$2''' (sa '''$1''').",
'rclistfrom' => 'Uri l-modifiki ġodda jibdew minn $1',
@@ -1392,6 +1469,8 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
# Recent changes linked
'recentchangeslinked' => 'Tibdil relatat',
+'recentchangeslinked-feed' => 'Tibdil relatat',
+'recentchangeslinked-toolbox' => 'Tibdil relatat',
'recentchangeslinked-title' => 'Modifiki relatati ma\' "$1"',
'recentchangeslinked-noresult' => 'L-ebda modifika ma saret fuq il-paġni relatati waqt il-perjodu speċifikat.',
'recentchangeslinked-summary' => "Din hija lista ta' bidliet li saru riċentament fuq paġni marbuta minn paġna speċifika (jew lejn membri ta' kategorija speċifika). Il-paġni fuq il-[[Special:Watchlist|lista ta' osservazzjoni]] tiegħek huma mmarkati b''''tipa ħoxna'''.",
@@ -1401,7 +1480,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
# Upload
'upload' => "Tella' fajl",
'uploadbtn' => "Tella' fajl",
-'reupload' => "Tella' mill-ġdid",
'reuploaddesc' => 'Mur lura għal formula',
'uploadnologin' => 'Għadek ma dħaltx ġewwa',
'uploadnologintext' => "Sabiex il-fajl jiġu ''uploaded'' inti trid tkun [[Special:UserLogin|dħalt]] b'kont reġistrat.",
@@ -1454,7 +1532,6 @@ Sabiex it-taqsira tidher fuq il-paġna ta' deskrizzjoni, huwa neċessarju li tim
* L-isem tal-fajl imtella': '''<tt>[[:$1]]</tt>'''
* L-isem tal-fajl eżistenti: '''<tt>[[:$2]]</tt>'''
Jekk jogħġbok, agħżel isem differenti.",
-'fileexists-thumb' => "<center>'''Fajl eżistenti'''</center>",
'fileexists-thumbnail-yes' => "Il-fajl li ttella' jidher li huwa stampa żgħira ''(minjatura)''. [[$1|thumb]]
Jekk jogħġbok, iċċekkja dan il-fajl '''<tt>[[:$1]]</tt>'''.
Jekk il-fajl li ċċekkjajt huwa l-istess stampa fid-daqs oriġinali, m'hemmx bżonn li ttella' minjatura oħra.",
@@ -1473,12 +1550,14 @@ Jekk jogħġbok mur lura u tella' dan il-fajl b'isem ġdid. [[File:$1|thumb|cent
'uploaddisabled' => "Skuzana, però ''uploads'' ta' fajls huwa temporalment sospiż.",
'uploaddisabledtext' => "It-tlugħ ta' fajls mhuwiex attiv.",
'uploadscripted' => "Dan il-fajl fih kodiċi ta' ''HTML'' u ''script'' li jista' jkun interpretat hażin mill-''web browser''.",
-'uploadcorrupt' => "Dan il-fajl jidher li huwa maħruq jew għandu estenżjoni ħażina.
-Jekk jogħġbok verifika l-fajl u erġa' prova tellgħu.",
'uploadvirus' => "Dan il-fajl huwa infettat b'virus! Dettalji: $1",
+'upload-source' => 'Sors tal-fajl',
'sourcefilename' => 'L-isem tal-fajl tal-oriġini:',
+'sourceurl' => 'Sors tal-URL:',
'destfilename' => 'L-Isem tal-fajl tad-destinazzjoni:',
'upload-maxfilesize' => 'Daqs massimu tal-fajl: $1',
+'upload-description' => 'Deskrizzjoni tal-fajl',
+'upload-options' => 'Opzjonijiet għat-tlugħ tal-fajl',
'watchthisupload' => 'Segwi dan il-fajl',
'filewasdeleted' => "Fajl b'dan l-isem kien itella' diġa u wara ġie mħassar.
Inti għandek tiverifika ir-$1 qabel ma tkompli bl-''upload'' mill-ġdid.",
@@ -1511,6 +1590,10 @@ Jekk jogħġbok ikkuntatja lil xi [[Special:ListUsers/sysop|amministratur]].",
'upload-misc-error-text' => "Waqt li l-fajl kien qed jittella', ġiet verifikata problema mhux magħrufha.<br />
Ivverifika li l-URL huwa validu u aċċessibbli, u erġa' pprova.<br />
Jekk il-problema tkompli tippersisti, ikkuntatja lil xi [[Special:ListUsers/sysop|amministratur]].",
+'upload-unknown-size' => 'Dimensjoni mhux magħrufa',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Aċċess miċħud',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL mhux tajjeb',
@@ -1541,6 +1624,7 @@ Biex tagħmel modifika fl-ordni tal-kolonna, klikkja fuq it-titlu tal-kolonna st
'listfiles_count' => 'Verżjonijiet',
# File description page
+'file-anchor-link' => 'Fajl',
'filehist' => 'Kronoloġija tal-fajl',
'filehist-help' => 'Agħfas fuq il-grupp data/ħin biex tara l-fajl biex tara kif jidher dak il-ħin.',
'filehist-deleteall' => 'ħassar kollox',
@@ -1560,15 +1644,10 @@ Biex tagħmel modifika fl-ordni tal-kolonna, klikkja fuq it-titlu tal-kolonna st
'morelinkstoimage' => 'Uri [[Special:WhatLinksHere/$1|aktar links]] għal dan il-fajl.',
'redirectstofile' => '{{PLURAL:$1|Il-fajl segwenti huwa rindirizzat|Il-$1 fajls segwenti huma rindirizzati}} għal dan il-fajl.',
'duplicatesoffile' => "{{PLURAL:$1|Il-fajl segwenti huwa duplikat|Il-$1 fajls segwenti huma duplikati}} ta' dan il-fajl ([[Special:FileDuplicateSearch/$2|aktar dettalji]]):",
-'sharedupload' => "Dan il-fajl ġej minn $1 u jista' jiġi wżat minn proġetti oħra.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Jekk jogħġbok ara $1 għal aktar informazzjoni.',
-'shareduploadwiki-desc' => 'Id-deskrizzjoni fuq il-$1, tinsab hawn taħt.',
-'shareduploadwiki-linktext' => 'paġna tad-deskrizzjoni tal-fajl',
-'noimage' => "Ebda fajl ma jeżisti b'dan l-isem, imma jekk trid tista' $1.",
-'noimage-linktext' => "tella' wieħed",
+'sharedupload' => "Dan il-fajl ġej minn $1 u jista' jiġi wżat minn proġetti oħra.",
'uploadnewversion-linktext' => "Tella' verżjoni ġdida ta' dan il-fajl",
-'shared-repo-from' => 'minn $1', # $1 is the repository name
-'shared-repo' => 'repożitorju maqsum', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'minn $1',
+'shared-repo' => 'repożitorju maqsum',
# File reversion
'filerevert' => 'Ġib lura $1',
@@ -1618,7 +1697,7 @@ Daħħal: tip/subtip, e.ż. <tt>image/jpeg</tt>.",
# Random page
'randompage' => 'Paġna kwalunkwe',
-'randompage-nopages' => 'M\'hemmx paġni fl-ispazju tal-isem "$1".',
+'randompage-nopages' => "M'hemm l-ebda paġna fl-{{PLURAL:$2|ispazju tal-isem|ispazji tal-isem}} segwenti: $1.",
# Random redirect
'randomredirect' => 'Rindirizz kwalunkwe',
@@ -1630,6 +1709,7 @@ Daħħal: tip/subtip, e.ż. <tt>image/jpeg</tt>.",
'statistics-header-edits' => 'Statistika tal-immodifikar',
'statistics-header-views' => 'Statistika tal-viżwalizzazzjoni',
'statistics-header-users' => 'Statistika tal-utent',
+'statistics-header-hooks' => 'Statistika oħra',
'statistics-articles' => "Paġni ta' kontenut",
'statistics-pages' => 'Paġni',
'statistics-pages-desc' => "Il-paġni kollha tal-wiki, inklużi l-paġni ta' diskussjoni, ir-riindirizzi, etċ.",
@@ -1655,8 +1735,8 @@ Kull filliera għandha ħolqa għall-ewwel u t-tieni riindirizz, kif ukoll fejn
'brokenredirects' => 'Riindirizzi ħżiena',
'brokenredirectstext' => 'Ir-riindirizzi segwenti għandhom ħoloq għal paġni ineżistenti:',
-'brokenredirects-edit' => '(modifika)',
-'brokenredirects-delete' => '(ħassar)',
+'brokenredirects-edit' => 'editja',
+'brokenredirects-delete' => 'ħassar',
'withoutinterwiki' => 'Paġni bla interwiki',
'withoutinterwiki-summary' => "Il-paġni segwenti m'għandhomx links għal verżjonijiet ta' lingwi oħrajn:",
@@ -1758,15 +1838,17 @@ Tista' tqassar il-kriterji ta' tfittxija billi tagħżel it-tip ta' log, l-isem
# Special:Categories
'categories' => 'Kategoriji',
-'categoriespagetext' => 'Il-kategoriji segwenti għandhom paġni jew fajls multimedjali.<br />
-Il-[[Special:UnusedCategories|kategoriji vojta]] u dawk [[Special:WantedCategories|rikjesti]] ma jidhrux hawnhekk.',
+'categoriespagetext' => 'Il-{{PLURAL:$1|kategorija segwenti għandha|kategoriji segwenti għandhom}} paġni jew fajls multimedjali.<br />
+Il-[[Special:UnusedCategories|kategoriji vojta]] ma jidhrux hawnhekk.
+Ara wkoll il-[[Special:WantedCategories|kategoriji rikjesti]].',
'categoriesfrom' => 'Uri kategoriji minn:',
'special-categories-sort-count' => 'irranġa skont in-numru',
'special-categories-sort-abc' => 'irranġa skont l-alfabett',
# Special:DeletedContributions
-'deletedcontributions' => 'Kontribuzzjonijiet imħassra tal-utent',
-'deletedcontributions-title' => 'Kontribuzzjonijiet imħassra tal-utent',
+'deletedcontributions' => 'Kontribuzzjonijiet imħassra tal-utent',
+'deletedcontributions-title' => 'Kontribuzzjonijiet imħassra tal-utent',
+'sp-deletedcontributions-contribs' => 'kontribuzzjonijiet',
# Special:LinkSearch
'linksearch' => 'Ħoloq esterni',
@@ -1779,6 +1861,14 @@ Il-[[Special:UnusedCategories|kategoriji vojta]] u dawk [[Special:WantedCategori
'listusers-submit' => 'Uri',
'listusers-noresult' => 'l-Ebda utent insab għal din il-kriterja.',
+# Special:ActiveUsers
+'activeusers' => 'Lista tal-utenti attivi',
+'activeusers-intro' => "Din hija lista ta' utenti li kellhom xi tip ta' attività f'dawn l-aħħar $1 {{PLURAL:$1|ġurnata|ġurnata}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|modifika|modifika}} fl-aħħar {{PLURAL:$3|jum|$3 jum}}',
+'activeusers-from' => 'Uri utenti li jibdew minn:',
+'activeusers-hidebots' => 'Aħbi l-bots',
+'activeusers-hidesysops' => 'Aħbi amministraturi',
+
# Special:Log/newusers
'newuserlogpage' => 'Utenti ġodda',
'newuserlogpagetext' => "Dan hu reġistru tal-kreazzjoni ta' kontijiet ġodda.",
@@ -1791,6 +1881,8 @@ Il-[[Special:UnusedCategories|kategoriji vojta]] u dawk [[Special:WantedCategori
'listgrouprights' => 'Drittijiet tal-grupp tal-utenti',
'listgrouprights-summary' => "Hawn taħt hawn elenkati l-gruppi tal-utenti għal din il-wiki, bid-drittijiet ta' aċċess rispettiv.
Jista' jkun hemm [[{{MediaWiki:Listgrouprights-helppage}}|aktar informazzjoni]] fuq id-drittjiet individwali.",
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dritt mogħti</span>
+* <span class="listgrouprights-revoked">Dritt revokat</span>',
'listgrouprights-group' => 'Grupp',
'listgrouprights-rights' => 'Drittijiet',
'listgrouprights-helppage' => 'Help:Drittijiet tal-grupp',
@@ -1866,25 +1958,28 @@ Jekk f'xi ħin tkun tixtieq tneħħi l-paġna mil-lista ta' osservazzjoni tiegħ
'enotif_anon_editor' => 'utent anonimu $1',
'enotif_body' => 'Għażiż $WATCHINGUSERNAME,
-Il-Paġna $PAGETITLE ta\' {{SITENAME}} ġiet $CHANGEDORCREATED - $PAGEEDITDATE minn $PAGEEDITOR; il-verżjoni kurrenti tinsab fl-indirizz $PAGETITLE_URL.
+Il-paġna $PAGETITLE ta\' {{SITENAME}} ġiet $CHANGEDORCREATED nhar il-$PAGEEDITDATE minn $PAGEEDITOR; il-verżjoni kurrenti tinsab fl-indirizz $PAGETITLE_URL.
$NEWPAGE
-Taqsira tal-modifikatur: $PAGESUMMARY $PAGEMINOREDIT
+Taqsira tal-editur: $PAGESUMMARY $PAGEMINOREDIT
-Agħmel kuntatt mal-modifikatur:
-mail: $PAGEEDITOR_EMAIL
+Ikkuntatja \'l-editur:
+ittra-e: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Mhux se jiġu mibgħuta notifiki aktar fil-każ ta\' aktar modifiki, sakemm ma tmurx fil-paġna. Inoltri, huwa possibli li terġa\' tpoġġi l-avviż mill-ġdid għal paġni kollha fil-lista t\'osservazzjoni speċjali.
+Mhux se jiġu mibgħuta notifiki oħra f\'każ ta\' aktar modifiki sakemm ma żżirx din il-paġna. Huwa possibbli li terġa\' tpoġġi l-avviż mill-ġdid għal paġni kollha fil-lista ta\' osservazzjoni speċjali.
- Is-Sistema ta\' notifikazzjoni ta\' {{SITENAME}}, fis-servizz tiegħek
+ Is-sistema ta\' notifika ta\' {{SITENAME}}, fis-servizz tiegħek
--
-Biex tagħmel modifiki fil-lista t\'osservazzjoni tiegħek:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Biex tbiddel l-impostazzjonijiet tal-lista ta\' osservazzjoni tiegħek, żur
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Biex tħassar il-paġna minn fuq il-lista ta\' osservazzjoni tiegħek, żur
+$UNWATCHURL
-Biex tagħti l-kumment tiegħek u għal aktar għajnuna:
+Biex tagħti l-kumment tiegħek u biex tikseb aktar għajnuna:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1896,7 +1991,7 @@ Biex tagħti l-kumment tiegħek u għal aktar għajnuna:
'exblank' => 'paġna kienet vojta',
'delete-confirm' => 'Ħassar "$1"',
'delete-legend' => 'Ħassar',
-'historywarning' => 'Twissija: Il-paġna li se tħassar għanda kronoloġija:',
+'historywarning' => "'''Twissija:''' Il-paġna li se tħassar għandha kronoloġija b'madwar {{PLURAL:$1|reviżjoni waħda|$1 reviżjoni}}:",
'confirmdeletetext' => "Int se tħassar għal kollox mid-database paġna jew stampa, flimkien mal-kronoloġija kollha tagħha. Jekk jogħġbok, ikkonferma li hija x-xewqa tiegħek li tkompli bit-tħassir ta' din il-paġna, u tifhem il-konsegwenzi ta' li qiegħed tagħmel, u li qiegħed tagħmilhom skont il- [[{{MediaWiki:Policy-url}}|politika]] stabbilita.",
'actioncomplete' => 'Azzjoni mwettqa',
'deletedtext' => 'Il-paġna "<nowiki>$1</nowiki>" ġiet imħassra.
@@ -1929,8 +2024,8 @@ Tħassara tista' toħloq problema ta' funżjoni fid-database ta' {{SITENAME}}; m
'alreadyrolled' => "Mhuwiex possibbli li tneħħi l-modifiki ta' [[User:$2|$2]] ([[User talk:$2|diskussjoni]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) fil-paġna [[:$1]]; utent ieħor diġà immodifika din il-paġna jew inkella reġġa' lura.
L-iktar modifika riċenti fuq dil-paġna saret minn [[User:$3|$3]] ([[User talk:$3|diskussjoni]]).",
-'editcomment' => "It-taqsira tal-modifika kienet: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Modifiki mneħħa minn [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) għall-aħħar verżjoni ta' [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "It-taqsira tal-modifika kienet: \"''\$1''\".",
+'revertpage' => "Modifiki mneħħa minn [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) għall-aħħar verżjoni ta' [[User:$1|$1]]",
'rollback-success' => "Modifiki mneħħa ta' $1;
Modifikata lura għall-aħħar verżjoni ta' $2.",
'sessionfailure' => "Ġie verifikat problema fis-sessjoni tal-aċċess; din l-azzjoni ġiet imħassra bħalha prekawzjoni. Mur lura fil-paġna preċedenti bl-użu tal-buttuna 'Lura' tal-browser, niżżel il-paġna mill-ġdid u erġa' prova.",
@@ -1949,7 +2044,6 @@ Ara [[Special:ProtectedPages|l-lista ta' paġni protetti]] għal lista ta' paġn
'protectexpiry' => 'Jiskadi:',
'protect_expiry_invalid' => 'Skadenza mhux valida.',
'protect_expiry_old' => 'Skadenza ġa inġarbet.',
-'protect-unchain' => "Ħalli permessi ta' ċaqlieq",
'protect-text' => "Int tista' tara jew tagħmel modifiki fil-livell ta' protezzjoni hawnhekk għal paġna '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ma tistax tbiddel il-livell ta' protezzjoni waqt li tkun imblukkat. Il-preferenzi kurrenti għall-paġna '''$1''' huma:",
'protect-locked-dblock' => "Livelli ta' protezzjoni ma jistgħux jiġu modifikata minħabba li database attiv huwa magħluq. Il-Preferenzi kurrenti ta' din il-paġna huma '''$1''':",
@@ -1971,7 +2065,7 @@ Il-Preferenzi kurrenti ta' din il-paġni huma '''$1''':",
** Spamming eċċessiv
** Gwerrer tal-editjar kontinwi
** Paġna wżata ħafna',
-'protect-expiry-options' => 'siegħa:1 hour,ġurnata:1 day,ġimgħa:1 week,ġimgħatejn:2 weeks,xahar:1 month,3 xhur:3 months,6 xhur:6 months,sena:1 year,infinita:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'siegħa:1 hour,ġurnata:1 day,ġimgħa:1 week,ġimgħatejn:2 weeks,xahar:1 month,3 xhur:3 months,6 xhur:6 months,sena:1 year,infinita:infinite',
'restriction-type' => 'Permess:',
'restriction-level' => "Livell ta' limitazzjoni:",
'minimum-size' => 'Daqs minimu',
@@ -2049,7 +2143,7 @@ $1',
'contributions-title' => 'Kontribuzzjonijiet tal-utent għal $1',
'mycontris' => 'il-kontribuzzjonijiet tiegħi',
'contribsub2' => 'Għal $1 ($2)',
-'nocontribs' => 'L-Ebda modifiki li jisodisfa l-kriterji tat-tfittxija.', # Optional parameter: $1 is the user name
+'nocontribs' => 'L-Ebda modifiki li jisodisfa l-kriterji tat-tfittxija.',
'uctop' => '(l-aħħar fil-paġna)',
'month' => 'Mix-xahar (u qabel):',
'year' => 'Mis-sena (u qabel):',
@@ -2058,6 +2152,8 @@ $1',
'sp-contributions-newbies-sub' => 'Għall-utenti l-ġodda',
'sp-contributions-newbies-title' => "Kontribuzzjonijiet ta' utenti ġodda",
'sp-contributions-blocklog' => 'blokki',
+'sp-contributions-deleted' => 'kontribuzzjonijiet imħassra tal-utent',
+'sp-contributions-talk' => 'diskussjoni',
'sp-contributions-search' => 'Fittex għal kontribuzzjonijiet',
'sp-contributions-username' => 'Indirizz IP jew isem tal-utent:',
'sp-contributions-submit' => 'Fittex',
@@ -2083,6 +2179,7 @@ $1',
# Block/unblock
'blockip' => 'Imblokka lil utent',
+'blockip-title' => "Imblokka 'l-utent",
'blockip-legend' => "Imblokka 'l-utent",
'blockiptext' => "Uża l-formola t'hawn taħt sabiex biex tibblokkja l-aċċess tal-kitba lil IP speċifiku jew utent.
Il-blokk irid ikun użat biss sabiex jitnaqqas iċ-ċans ta' vandaliżmu, u għandu josservja b'mod strett il-[[{{MediaWiki:Policy-url}}|politika ta' {{SITENAME}}]].
@@ -2106,7 +2203,7 @@ Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempj
'ipbenableautoblock' => 'Awtomatikament blokka l-aħħar indirizz tal-IP użat minn dan l-utent, u IP suċċessivi li jipprovaw jagħmlu modifiki',
'ipbsubmit' => 'Imblokk lil dan l-utent',
'ipbother' => 'Ħin ieħor:',
-'ipboptions' => 'sagħtejn:2 hours,ġurnata 1:1 day,3 ġranet:3 days,ġimgħa 1:1 week,ġimgħatejn:2 weeks,xahar 1:1 month,3 xhur:3 months,6 xhur:6 months,sena 1:1 year,infinita:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'sagħtejn:2 hours,ġurnata 1:1 day,3 ġranet:3 days,ġimgħa 1:1 week,ġimgħatejn:2 weeks,xahar 1:1 month,3 xhur:3 months,6 xhur:6 months,sena 1:1 year,infinita:infinite',
'ipbotheroption' => 'ieħor',
'ipbotherreason' => 'Raġunijiet oħra/addizzjonali:',
'ipbhidename' => 'Aħbi l-isem tal-utent mill-modifiki u mill-elenki.',
@@ -2136,7 +2233,7 @@ Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.
'ipblocklist-submit' => 'Fittex',
'blocklistline' => '$1, $2 imblokka lil $3 (sa $4)',
'infiniteblock' => 'infinit',
-'expiringblock' => 'sa $1',
+'expiringblock' => 'jiskadi sa $1 fil-$2',
'anononlyblock' => 'anonimu biss',
'noautoblockblock' => 'bla blokk awtomatiku',
'createaccountblock' => 'ħolqien tal-kont imblukkat',
@@ -2164,6 +2261,7 @@ Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.
'ipb_already_blocked' => 'L-utent "$1" diġà bblokkjat',
'ipb-needreblock' => '== Diġà imblukkat ==
L-utent $1 hu diġà imblukkat. Trid tbiddel l-impostazzjonijet?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Blokk ieħor|Blokki oħra}}',
'ipb_cant_unblock' => 'Problema: Impossibli ssib il-blokk bl-ID $1. L-Imblokk setgħa jkun ġa sblokkat.',
'ipb_blocked_as_range' => "Problema: L-Indirizz tal-IP $1 ma jistax jiġi blokkat waħdu u ma jistax jiġi sblokkat. L-Imblokk huwa attiv però f'livell ta' interval $2, li jista' jkun sblokkat.",
'ip_range_invalid' => "Interval ta' indirizzi ta' IP mhux validi.",
@@ -2176,6 +2274,8 @@ Jekk jogħġbok, ikkuntattja lill-provdituri tas-servizz tal-internet jew lis-su
'sorbsreason' => "L-Indirizz tal-IP tiegħek huwa mniżżel bħala proxy miftuħ fil-DNSBL ta' {{SITENAME}}.",
'sorbs_create_account_reason' => 'Mhux possibli toħloq aċċessi ġodda minn dan l-indirizz tal-IP minħabba li huwa mniżżel bħala proxy miftuħ fil-DNSBL użat minn {{SITENAME}}.',
'cant-block-while-blocked' => 'Ma tistax timblokka lil utenti oħra waqt li inti mblukkat.',
+'cant-see-hidden-user' => 'L-utent li qiegħed tipprova timblokk diġà ġie imblukkat u moħbi.
+Minħabba li inti m\'għandikx id-dritt li "taħbi \'l-utent", ma tistax tara jew timmodifika l-blokk tal-utent.',
# Developer tools
'lockdb' => 'Agħlaq id-database',
@@ -2222,7 +2322,7 @@ F'dawn il-każi, inti trid iċaqlaq jew tagħqad il-paġna manwalment jekk dan h
'move-watch' => 'Segwi din il-paġna',
'movepagebtn' => 'Ċaqlaq il-paġna',
'pagemovedsub' => 'Ċaqlieq irnexxa',
-'movepage-moved' => '\'\'\'"$1" ġie mċaqlaq għal "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ġie mċaqlaq għal "$2"\'\'\'',
'articleexists' => "Diġà teżisti paġna b'dak l-isem, jew inkella l-isem li għażilt mhux validu.
Jekk jogħġbok, agħżel isem ieħor.",
'cantmove-titleprotected' => 'Ma tistax iċċaqlaq paġna hemmhekk, minħabba li t-titlu l-ġdid ġie protett milli jiġi maħluq.',
@@ -2284,14 +2384,20 @@ Fl-aħħar każ inti tista' tuża ħolqa, per eżempju
'export-templates' => 'Inkludi templates',
# Namespace 8 related
-'allmessages' => 'Messaġġi tas-sistema',
-'allmessagesname' => 'Isem',
-'allmessagesdefault' => 'Test predefinit',
-'allmessagescurrent' => 'It-test attwali',
-'allmessagestext' => "Din hija lista ta' messaġġi tas-sistema disponibbli fl-ispazju tal-isem MediaWiki.",
-'allmessagesnotsupportedDB' => "Il-paġna ma tistax tintuża għax '''\$wgUseDatabaseMessages''' mhux attivat.",
-'allmessagesfilter' => 'Filtru fuq l-ismijiet tal-messaġġi:',
-'allmessagesmodified' => 'Uri biss dawk modifikati',
+'allmessages' => 'Messaġġi tas-sistema',
+'allmessagesname' => 'Isem',
+'allmessagesdefault' => 'Test predefinit',
+'allmessagescurrent' => 'It-test attwali',
+'allmessagestext' => "Din hija lista ta' messaġġi tas-sistema disponibbli fl-ispazju tal-isem MediaWiki.",
+'allmessagesnotsupportedDB' => "Il-paġna ma tistax tintuża għax '''\$wgUseDatabaseMessages''' mhux attivat.",
+'allmessages-filter-legend' => 'Filtru',
+'allmessages-filter' => "Iffilitra skont l-istat ta' modifika:",
+'allmessages-filter-unmodified' => 'Mhux modifikati',
+'allmessages-filter-all' => 'Kollha',
+'allmessages-filter-modified' => 'Modifikati',
+'allmessages-prefix' => 'Iffiltra skont il-prefiss:',
+'allmessages-language' => 'Lingwa:',
+'allmessages-filter-submit' => 'Mur',
# Thumbnails
'thumbnail-more' => 'Kabbar',
@@ -2301,6 +2407,7 @@ Fl-aħħar każ inti tista' tuża ħolqa, per eżempju
'djvu_no_xml' => 'Impossibli ġġib il-XML għal fajl DjVu',
'thumbnail_invalid_params' => 'Parametri invalidi għall-minjatura',
'thumbnail_dest_directory' => 'Impossibli toħloq id-direttorju tad-destinazzjoni',
+'thumbnail_image-missing' => 'Il-fajl $1 jidher li hu nieqes',
# Special:Import
'import' => 'Importa paġni',
@@ -2373,6 +2480,7 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
'tooltip-search-fulltext' => 'Fittex it-test indikat fil-paġni',
'tooltip-p-logo' => 'Il-Paġna prinċipali',
'tooltip-n-mainpage' => 'Żur il-Paġna Prinċipali',
+'tooltip-n-mainpage-description' => 'Żur il-paġna prinċipali',
'tooltip-n-portal' => "Dwar il-proġett, x'tista' tagħmel, fejn tista' ssib l-affarijiet",
'tooltip-n-currentevents' => 'Sib aktar informazzjoni dwar il-ġrajjiet kurrenti',
'tooltip-n-recentchanges' => 'Il-lista tat-tibdil riċenti fil-wiki',
@@ -2439,7 +2547,7 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
# Attribution
'anonymous' => "{{PLURAL:$1|Utent anonimu|Utenti anonimi}} ta' {{SITENAME}}",
'siteuser' => '$1, utent tal-{{SITENAME}}',
-'lastmodifiedatby' => 'Din il-paġna ġiet modifikata l-aħħar fil-$2, $1 minn $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Din il-paġna ġiet modifikata l-aħħar fil-$2, $1 minn $3.',
'othercontribs' => "Dan it-test ibbażat fuq ix-xogħol ta' $1.",
'others' => 'oħrajn',
'siteusers' => "$1, {{PLURAL:$2|utent|utenti}} ta' {{SITENAME}}",
@@ -2480,11 +2588,22 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
'mw_math_modern' => 'Format rakkomandat għall-browsers moderni',
'mw_math_mathml' => 'MathML jekk possibli (esperimentali)',
+# Math errors
+'math_failure' => "Problema fil-''parser''",
+'math_unknown_error' => 'Problema mhux magħrufa',
+'math_unknown_function' => 'funżjoni mhux magħrufa',
+'math_lexing_error' => 'żball lessikali',
+'math_syntax_error' => 'żball fis-sintassi',
+'math_image_error' => "Konverżjoni għal PNG bla suċċess; verifika li huma installati tajjeb il-programmi segwenti: ''latex, dvips, gs, u convert''",
+'math_bad_tmpdir' => "Impossibli tikteb jew toħloq direttorju temporanju għal ''math''",
+'math_bad_output' => "Impossibli tikteb jew toħloq direttorju tal-''output'' tal-''math''",
+'math_notexvc' => "Esekuzzjoni ''texvc'' nieqes; jekk jogħġbok konsultà ''math/README'' għal konfigurazzjoni.",
+
# Patrolling
'markaspatrolleddiff' => 'Marka l-modifiki bħalha verifikati',
'markaspatrolledtext' => 'Immarka din il-paġna bħala verifikata',
'markedaspatrolled' => 'Markat bħalha verifikat',
-'markedaspatrolledtext' => 'Ir-Reviżjoni magħżula hija markata bħalha verifikata.',
+'markedaspatrolledtext' => "Ir-reviżjoni magħżulha ta' [[:$1]] hija mmarkata bħala verifikata.",
'rcpatroldisabled' => 'Modifikar riċenti verifikar disattivat',
'rcpatroldisabledtext' => "Il-Funżjoni ta' verifika tal-aħħar modifiki bħalissa mhux attivata.",
'markedaspatrollederror' => 'Ma jistax jiġi markat bħalha verifikat',
@@ -2512,12 +2631,9 @@ $1',
'previousdiff' => '← Differenza preċedenti',
'nextdiff' => 'Id-differenza suċċessiva →',
-# Visual comparison
-'visual-comparison' => 'Paragun viżwali',
-
# Media information
'mediawarning' => "'''Twissija''': Dan il-fajl jista' jinkludi ġo fih kodiċi malizzjuż. L-eżekuzzjoni tiegħu jista' jagħmel ħsara s-sistema informatika tiegħek.",
-'imagemaxsize' => 'Daqs massimu tas-stampi fuq il-paġni relativi tad-diskussjoni:',
+'imagemaxsize' => "Daqs massimu tal-istampa:<br />''(għall-paġni ta' deskrizzjoni tal-fajl)''",
'thumbsize' => 'Daqs tal-minjatura:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paġna|paġni}}',
'file-info' => "(Dimensjoni: $1, tip ta' MIME: $2)",
@@ -2563,7 +2679,7 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => "Wisa'",
@@ -2690,14 +2806,14 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-unknowndate' => 'Data mhux magħrufa',
-'exif-orientation-1' => 'Normali', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Maqlub oriżżontali', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Imdawwar 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Maqlub vertikali', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Imdawwar 90° fis-sens kontra l-arloġġ u maqlub vertikali', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Imdawwar 90° fis-sens tal-arloġġ', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Imdawwar 90° fis-sens tal-arloġġ u maqlub vertikalment', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Imdawwar 90° fis-sens kontra l-arloġġ', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normali',
+'exif-orientation-2' => 'Maqlub oriżżontali',
+'exif-orientation-3' => 'Imdawwar 180°',
+'exif-orientation-4' => 'Maqlub vertikali',
+'exif-orientation-5' => 'Imdawwar 90° fis-sens kontra l-arloġġ u maqlub vertikali',
+'exif-orientation-6' => 'Imdawwar 90° fis-sens tal-arloġġ',
+'exif-orientation-7' => 'Imdawwar 90° fis-sens tal-arloġġ u maqlub vertikalment',
+'exif-orientation-8' => 'Imdawwar 90° fis-sens kontra l-arloġġ',
'exif-planarconfiguration-1' => 'format imbaċċaċ',
'exif-planarconfiguration-2' => 'format tal-ippjanar',
@@ -2811,7 +2927,7 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-gpsmeasuremode-2' => 'Qisien bidimensjonali',
'exif-gpsmeasuremode-3' => 'Qisien tridimensjonali',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometru fis-siegħa',
'exif-gpsspeed-m' => 'Mili fis-siegħa',
'exif-gpsspeed-n' => 'Nodi',
@@ -2853,18 +2969,18 @@ Il-kodiċi setgħat tkun skadiet.",
'confirmemail_loggedin' => 'L-indirizz tal-posta elettronika tiegħek ġie ikkonfermat.',
'confirmemail_error' => 'Problema fis-salvataġġ tal-konferma.',
'confirmemail_subject' => '{{SITENAME}}: rikjesta tal-konferma tal-indirizz',
-'confirmemail_body' => 'Xi ħadd, probabilment int, mill-indirizz tal-IP $1,
+'confirmemail_body' => 'Xi ħadd, probabbilment int, mill-indirizz tal-IP $1,
irreġistra l-kont "$2" b\'dan l-indirizz tal-posta elettronika fuq {{SITENAME}}.
-Biex tinkonferma li dan il-kont vera huwa tiegħek u jkollhok aċċess għal faċċilitajiet tal-posta elettronika ta\' {{SITENAME}}, iftaħ dan il-link fil-browser tiegħek:
+Biex tikkonferma li dan il-kont huwa vera tiegħek u biex ikollok aċċess għall-faċilitajiet tal-posta elettronika ta\' {{SITENAME}}, iftaħ din il-ħolqa fil-browżer tiegħek:
$3
-Jekk int *ma irreġistrajtx* il-kont, segwi dan il-link sabiex tħassar il-konfermazzjoni tal-indirizz tal-posta elettronika:
+Jekk int *ma irreġistrajtx* il-kont, segwi l-ħolqa segwenti sabiex tħassar il-konferma tal-indirizz tal-posta elettronika:
$5
-Din il-kodiċi tal-konfermazzjoni se tiskadi f\'$4.',
+Din il-kodiċi tal-konferma se tiskadi fil-$4.',
'confirmemail_invalidated' => "Rikjesta ta' konfermazzjoni tal-indirizz tal-posta elettronika mħassra",
'invalidateemail' => 'Ħassar il-konfermazzjoni tal-posta elettronika',
@@ -2979,7 +3095,7 @@ Inti tista' wkoll tuża' l-[[Special:Watchlist/edit|editur bl-interfaċċa stand
'unknown_extension_tag' => 'Estensjoni tat-tag mhux magħrufa "$1"',
# Special:Version
-'version' => 'Verżjoni', # Not used as normal message but as header for the special page itself
+'version' => 'Verżjoni',
'version-extensions' => 'Estensjonijiet installati',
'version-specialpages' => 'Paġni speċjali',
'version-parserhooks' => 'Hook tal-parser',
@@ -2993,7 +3109,7 @@ Inti tista' wkoll tuża' l-[[Special:Watchlist/edit|editur bl-interfaċċa stand
'version-skin-extension-functions' => 'Funżjoni marbut mall-aspett grafiku (skin) introdott mill-estenżjoni',
'version-hook-name' => 'Isem tal-hook',
'version-hook-subscribedby' => 'Reġistrat minn',
-'version-version' => 'Verżjoni',
+'version-version' => '(Verżjoni $1)',
'version-license' => 'Liċensja',
'version-software' => 'Software installat',
'version-software-product' => 'Prodott',
@@ -3051,4 +3167,14 @@ Daħħal l-isem tal-fajl mingħajr il-prefiss \"{{ns:file}}:\".",
'dberr-problems' => 'Jiddispjaċina! Dan is-sit għandu diffikultajiet tekniċi.',
'dberr-again' => "Prova stenna ftit minuti u erġa' tella' l-paġna.",
+# HTML forms
+'htmlform-invalid-input' => "Hemm xi problemi f'dak li daħħalt",
+'htmlform-select-badoption' => 'Il-valur li speċifikajt mhuwiex għażla valida.',
+'htmlform-int-invalid' => 'Il-valur li speċifikajt mhuwiex sħiħ.',
+'htmlform-int-toolow' => "Il-valur li speċifikajt hu inferjuri għall-minimu ta' $1",
+'htmlform-int-toohigh' => "Il-valur li speċifikjat hu 'l fuq mill-massimu ta' $1",
+'htmlform-submit' => 'Ibgħat',
+'htmlform-reset' => 'Annulla l-modifiki',
+'htmlform-selectorother-other' => 'Oħrajn',
+
);
diff --git a/languages/messages/MessagesMwl.php b/languages/messages/MessagesMwl.php
index c4a60a5b..9d5a6d55 100644
--- a/languages/messages/MessagesMwl.php
+++ b/languages/messages/MessagesMwl.php
@@ -63,17 +63,17 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#ANCAMINAR', '#REDIRECT' ),
- 'img_right' => array( '1', 'dreita', 'right' ),
- 'img_left' => array( '1', 'squierda', 'left' ),
- 'img_none' => array( '1', 'nanhun', 'none' ),
+ 'redirect' => array( '0', '#ANCAMINAR', '#REDIRECIONAMENTO', '#REDIRECT' ),
+ 'img_right' => array( '1', 'dreita', 'direita', 'right' ),
+ 'img_left' => array( '1', 'squierda', 'esquerda', 'left' ),
+ 'img_none' => array( '1', 'nanhun', 'nenhum', 'none' ),
'img_center' => array( '1', 'centro', 'center', 'centre' ),
'img_middle' => array( '1', 'meio', 'middle' ),
- 'language' => array( '0', '#LHENGUA:', '#LANGUAGE:' ),
- 'filepath' => array( '0', 'CAMINOFEXEIRO:', 'FILEPATH:' ),
+ 'language' => array( '0', '#LHENGUA:', '#IDIOMA:', '#LANGUAGE:' ),
+ 'filepath' => array( '0', 'CAMINOFEXEIRO:', 'CAMINHODOARQUIVO', 'FILEPATH:' ),
'tag' => array( '0', 'eitiqueta', 'tag' ),
- 'pagesize' => array( '1', 'TAMANHOFEXEIRO', 'PAGESIZE' ),
- 'staticredirect' => array( '1', '_ANCAMINARSTATICO_', '__STATICREDIRECT__' ),
+ 'pagesize' => array( '1', 'TAMANHOFEXEIRO', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
+ 'staticredirect' => array( '1', '_ANCAMINARSTATICO_', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ),
);
$messages = array(
@@ -187,7 +187,7 @@ $messages = array(
'category-media-header' => 'Multimédia na catadorie "$1"',
'category-empty' => "''Esta catadorie nun cuntén atualmente nanhue páigina ó fexeiro multimédia.''",
'hidden-categories' => '{{PLURAL:$1|Catadorie scundida|Catadories scundidas}}',
-'hidden-category-category' => 'Catadories scundidas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Catadories scundidas',
'category-subcat-count' => '{{PLURAL:$2|Esta catadorie solo cuntén la seguinte subcatadorie.|Esta catadorie cuntén {{PLURAL:$1|la seguinte subcatadorie|las seguintes $1 subcatadories}} (dun total de $2).}}',
'category-subcat-count-limited' => 'Esta catadorie ten {{PLURAL:$1|la seguinte subcatadorie|las $1 subcatadories a seguir}}.',
'category-article-count' => '{{PLURAL:$2|Esta catadorie solo cuntén la seguinte páigina.|Esta catadorie cuntén {{PLURAL:$1|la seguinte páigina|las seguintes $1 páiginas}} (dun total de $2).}}',
@@ -196,10 +196,18 @@ $messages = array(
'category-file-count-limited' => 'Nesta catadorie hai {{PLURAL:$1|un fexeiro|$1 fexeiros}}.',
'listingcontinuesabbrev' => 'cunt.',
-'about' => 'Subre',
-'article' => 'Páigina de cuntenido',
-'newwindow' => '(abre nua nuoba jinela)',
-'cancel' => 'Çfazer',
+'about' => 'Subre',
+'article' => 'Páigina de cuntenido',
+'newwindow' => '(abre nua nuoba jinela)',
+'cancel' => 'Çfazer',
+'moredotdotdot' => 'Mais...',
+'mypage' => 'Mie páigina',
+'mytalk' => 'Mie cumbersa',
+'anontalk' => 'Çcusson pa este IP',
+'navigation' => 'Nabegaçon',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Percurar',
'qbbrowse' => 'Nabegar',
'qbedit' => 'Eiditar',
@@ -207,15 +215,8 @@ $messages = array(
'qbpageinfo' => 'Cuntesto',
'qbmyoptions' => 'Mies páiginas',
'qbspecialpages' => 'Páiginas speciales',
-'moredotdotdot' => 'Mais...',
-'mypage' => 'Mie páigina',
-'mytalk' => 'Mie cumbersa',
-'anontalk' => 'Çcusson pa este IP',
-'navigation' => 'Nabegaçon',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metadados:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Erro',
'returnto' => 'Retornar pa $1.',
@@ -261,7 +262,7 @@ $messages = array(
'otherlanguages' => 'Outras lhénguas',
'redirectedfrom' => '(Ancaminamiento de <b>$1</b>)',
'redirectpagesub' => 'Páigina de ancaminamiento',
-'lastmodifiedat' => 'Esta páigina fui demudada pula redadeira beç a las $2 de $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Esta páigina fui demudada pula redadeira beç a las $2 de $1.',
'protectedpage' => 'Páigina portegida',
'jumpto' => 'Saltar pa:',
'jumptonavigation' => 'nabegaçon',
@@ -271,7 +272,6 @@ $messages = array(
'aboutsite' => 'Subre {{SITENAME}}',
'aboutpage' => 'Project:Subre',
'copyright' => 'Cuntenido çponible subre la lhicença $1.',
-'copyrightpagename' => 'Dreitos de outor de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Dreitos de outor',
'currentevents' => 'Amboras atuales',
'currentevents-url' => 'Project:Amboras atuales',
@@ -279,8 +279,6 @@ $messages = array(
'disclaimerpage' => 'Project:Abiso giral',
'edithelp' => 'Ajuda de eidiçon',
'edithelppage' => 'Help:Eiditar',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Cuntenidos',
'mainpage' => 'Páigina Percipal',
'mainpage-description' => 'Páigina Percipal',
@@ -338,7 +336,6 @@ $messages = array(
# General errors
'error' => 'Erro',
'databaseerror' => 'Erro na base de dados',
-'nodb' => 'Nun fui possible scolher la base de dados $1',
'laggedslavemode' => 'Abiso: La páigina poderá nun cuntener las redadeiras atualizaçones.',
'readonly' => 'Base de dados bloquiada',
'missing-article' => 'La base de dados nun achou l testo dua páigina que deberie tener achado, cul nome "$1" $2.
@@ -373,8 +370,6 @@ Puode tener un ó mais carateres que nun puoden ser outelizados an títalos.',
'virus-unknownscanner' => 'antibírus çcoincido:',
# Login and logout pages
-'logouttitle' => 'Salir de l sistema',
-'loginpagetitle' => 'Outenticaçon de outelizador',
'yourname' => 'Nome de Outelizador',
'yourpassword' => 'Palabra chabe',
'yourpasswordagain' => 'Repite la tue palabra-chabe',
@@ -393,20 +388,6 @@ Puode tener un ó mais carateres que nun puoden ser outelizados an títalos.',
'gotaccount' => "Yá tenes ua cuonta? '''$1'''.",
'gotaccountlink' => 'Antrar',
'createaccountmail' => 'por morada eiletrónica',
-'youremail' => 'Morada de correio eiletrónico:',
-'username' => 'Nome de outelizador:',
-'uid' => 'Númaro de eidentificaçon:',
-'prefs-memberingroups' => 'Nembro {{PLURAL:$1|de l grupo|de ls grupos}}:',
-'yourrealname' => 'Nome berdadeiro:',
-'yourlanguage' => 'Lhéngua:',
-'yournick' => 'Assinatura:',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'Nun specificado',
-'gender-male' => 'Home',
-'gender-female' => 'Mulhier',
-'email' => 'Morada Eiletrónica',
-'prefs-help-realname' => 'L nome berdadeiro ye oupcional.
-Causo l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.',
'loginerror' => 'Erro de outenticaçon',
'loginsuccesstitle' => 'Antreste cumo debe de ser',
'loginsuccess' => "'''Stás agora lhigado a {{SITENAME}} cumo \"\$1\"'''.",
@@ -421,7 +402,8 @@ Por fabor, spurmenta outra beç.',
'wrongpasswordempty' => 'Tenes que poner la palabra chabe.
Por fabor, spurmenta outra beç.',
'passwordtooshort' => 'La tue palabra chabe ye ambálida ó mui pequeinha.
-Debe de tener pul menos {{PLURAL:$1|1 caracter|$1 caracteres}} i ser defrente de l tou nome de outelizador.',
+Debe de tener pul menos {{PLURAL:$1|1 caracter|$1 caracteres}}.',
+'password-name-match' => 'La tue palabra-chabe ten que ser defrente de l tou nome de outelizador.',
'mailmypassword' => 'Ambiar nuoba palabra chabe por carta eiletrónica',
'passwordremindertitle' => 'Nuoba palabra chabe temporária an {{SITENAME}}',
'passwordremindertext' => 'Alguém (l mais cierto tu, a partir de la morada de IP $1) pediu que le fusse ambiada ua nouba palabra-chabe pa {{SITENAME}} ($4).
@@ -514,27 +496,27 @@ Tu stás, al mesmo tiempo, a garantir-mos qu'esto ye algo screbido por ti, ó al
'longpagewarning' => "'''Abiso: Esta páigina ten$1 kilobytes; alguns
nabegadores de la anternete ténen porblemas al eiditar páiginas cun mais de 32 kb.
Por fabor, pensa an scachar la páigina an cachos mais pequeinhos.'''",
-'templatesused' => 'Modelos ousados nesta páigina:',
-'templatesusedpreview' => 'Modelos outelizados neste amostra:',
+'templatesused' => '{{PLURAL:$1|Modelo ousado|Modelos ousados}} nesta páigina:',
+'templatesusedpreview' => '{{PLURAL:$1|Modelo outelizado|Modelos outelizados}} neste amostra:',
'template-protected' => '(portegida)',
'template-semiprotected' => '(semi-protegida)',
'hiddencategories' => 'Esta páigina faç parte {{PLURAL:$1|dua catadorie scundida|$1 duas catadories scundidas}}:',
'nocreatetext' => '{{SITENAME}} tem restringida la possibilidade de criar nuobas páginas.
Pode boltar atrás i editar unha página yá eisistente, o [[Special:UserLogin|autenticar-se o criar unha cuonta]].',
'permissionserrorstext-withaction' => 'Tu nun tenes premisson pa $2, {{PLURAL:$1|pula seguinte rezon|pulas seguintes rezones}}:',
-'recreate-deleted-warn' => "'''Abiso: Tu stás a criar ua páigina que yá fui d'atrás botada fuora.'''
+'recreate-moveddeleted-warn' => "Abiso: Tu stás a criar ua páigina que yá fui d'atrás botada fuora.'''
-Bei bien se ye aprópiado cuntinar a eiditar esta páigina.
-L registro de quando esta páigina fui botada fuora ye amostrado a seguir, por quemodidade:",
-'deleted-notice' => 'Esta páigina fui apagada.
-Ambaixo stá l registro de las eileminaçones pa refréncia.',
+Bei bien se ye própio cuntinar a eiditar esta páigina.
+L registro de la eileminaçon i de l arrastrar ye amostrado eiqui por cumbeniéncia:",
+'moveddeleted-notice' => 'Esta páigina fui apagada.
+L registro de la eileminaçon i de l arrastrar stá ambaixo pa refréncia.',
# History pages
'viewpagelogs' => 'Ber registros pa esta páigina',
'currentrev' => 'Rebison atual',
'currentrev-asof' => 'Eidiçon atual cumo $1',
'revisionasof' => 'Eidiçon cumo la de $1',
-'revision-info' => 'Rebison de $1 por $2', # Additionally available: $3: revision id
+'revision-info' => 'Rebison de $1 por $2',
'previousrevision' => "← Berson d'atrás",
'nextrevision' => 'Berson mais nuoba→',
'currentrevisionlink' => 'Ber berson atual',
@@ -546,12 +528,11 @@ Ambaixo stá l registro de las eileminaçones pa refréncia.',
Legenda: (atu) = defrénças de la berson atual,
(red) = defrénça de la redadeira berson, m = eidiçon pequerrixa',
'history-fieldset-title' => 'Nabegar pul stórico',
-'deletedrev' => '[apagada]',
'histfirst' => 'Mais antigas',
'histlast' => 'Redadeiras',
# Revision feed
-'history-feed-item-nocomment' => '$1 a $2', # user at time
+'history-feed-item-nocomment' => '$1 a $2',
# Revision deletion
'rev-delundel' => 'amostrar/scunder',
@@ -572,14 +553,6 @@ Legenda: (atu) = defrénças de la berson atual,
'compareselectedversions' => 'Cumparar las bersones marcadas',
'editundo' => 'çfazer',
'diff-multi' => '({{PLURAL:$1|ua eidiçon antermédia nun stá a ser amostrada|$1 eidiçones antermédias nun stan a ser amostradas}}.)',
-'diff-movedto' => 'arrastrado pa $1',
-'diff-changedto' => 'demudado pa $1',
-'diff-src' => 'fuonte',
-'diff-width' => 'ancho',
-'diff-height' => 'altura',
-'diff-strong' => "'''fuorte'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''apagado'''",
# Search results
'searchresults' => 'Resultados de la percura',
@@ -587,16 +560,13 @@ Legenda: (atu) = defrénças de la berson atual,
'searchresulttext' => 'Pa mais anformaçones subre cumo percurar an {{SITENAME}}, bei [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tu percureste por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páiginas ampeçadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páiginas que apuntan pa "$1"]])',
'searchsubtitleinvalid' => 'Tu percureste por "$1"',
-'noexactmatch' => "'''Nun eisiste ua páigina cul títalo \"\$1\".'''
-Tu puodes [[:\$1|criar esta páigina]].",
-'noexactmatch-nocreate' => "'''Nun hai nanhua páigina chamada \"\$1\".'''",
'notitlematches' => 'Nanhun títalo de páigina bate cierto cula percura',
'notextmatches' => 'Nun fui possible achar, ne l cuntenido de las páiginas, la palabra percurada',
-'prevn' => 'anteriores $1',
-'nextn' => 'próssimos $1',
-'viewprevnext' => 'Ber ($1) ($2) ($3)',
+'prevn' => 'anteriores {{PLURAL:$1|$1}}',
+'nextn' => 'próssimos {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ber ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Conteúdos',
-'searchprofile-images' => 'Fexeiros',
+'searchprofile-images' => 'Multimédia',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Abançado',
'search-result-size' => '$1 ({{PLURAL:$2|1 palabra|$2 palabras}})',
@@ -609,7 +579,6 @@ Tu puodes [[:\$1|criar esta páigina]].",
'search-mwsuggest-enabled' => 'cun sugestones',
'search-mwsuggest-disabled' => 'sien sugestones',
'searchall' => 'todos',
-'showingresultstotal' => "A amostrar {{PLURAL:$4|l resultado '''$1''' de '''$3'''|ls resultados '''$1 a $2''' de '''$3'''}}",
'nonefound' => "'''Abiso''': solo alguns spácios nominales son percurados por oumisson. Spurmenta outelizar l perfixo ''all:'' na percura, pa percurar por todos ls cuntenidos desta Biqui (até páiginas de çcusson, modelos etc), ó mesmo, outelizando l spácio nominal que queiras cumo perfixo.",
'powersearch' => 'Percura Abançada',
'powersearch-legend' => 'Percura abançada',
@@ -620,15 +589,14 @@ Tu puodes [[:\$1|criar esta páigina]].",
# Preferences page
'preferences' => 'Perfréncias',
'mypreferences' => 'Las mies perfréncias',
-'skin' => 'Maçcarilha',
+'prefs-skin' => 'Maçcarilha',
'skin-preview' => 'Amostrar',
-'math' => 'Matemática',
-'dateformat' => 'Formato de la data',
-'datetime' => 'Data i hora',
+'prefs-math' => 'Matemática',
+'prefs-datetime' => 'Data i hora',
'prefs-personal' => 'Calantriç',
'prefs-rc' => 'Redadeiras alteraçones',
'saveprefs' => 'Grabar',
-'textboxsize' => 'Oupçones de eidiçon',
+'prefs-editing' => 'Oupçones de eidiçon',
'rows' => 'Lhinhas:',
'servertime' => 'Hora de l serbidor:',
'timezoneregion-africa' => 'África',
@@ -642,7 +610,24 @@ Tu puodes [[:\$1|criar esta páigina]].",
'timezoneregion-indian' => 'Ouceano Índico',
'timezoneregion-pacific' => 'Ouceano Pacífico',
'default' => 'defeito',
-'files' => 'Fexeiros',
+'prefs-files' => 'Fexeiros',
+'prefs-emailconfirm-label' => 'Cunfirmaçon de l correio eiletrónico:',
+'youremail' => 'Morada de correio eiletrónico:',
+'username' => 'Nome de outelizador:',
+'uid' => 'Númaro de eidentificaçon:',
+'prefs-memberingroups' => 'Nembro {{PLURAL:$1|de l grupo|de ls grupos}}:',
+'yourrealname' => 'Nome berdadeiro:',
+'yourlanguage' => 'Lhéngua:',
+'yournick' => 'Assinatura:',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Nun specificado',
+'gender-male' => 'Home',
+'gender-female' => 'Mulhier',
+'email' => 'Morada Eiletrónica',
+'prefs-help-realname' => 'L nome berdadeiro ye oupcional.
+Causo l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.',
+'prefs-signature' => 'Assinatura',
+'prefs-dateformat' => 'Formato de la data',
# User rights
'editusergroup' => 'Eiditar grupos de outelizadores',
@@ -684,6 +669,8 @@ Tu puodes [[:\$1|criar esta páigina]].",
'recentchanges' => 'Redadeiras altaraçones',
'recentchanges-legend' => 'Oupçones de las redadeiras altaraçones',
'recentchanges-feed-description' => 'Acumpanha las redadeiras altaraçones de l biqui por esta semiente.',
+'recentchanges-legend-newpage' => '$1 - nuoba páigina',
+'recentchanges-legend-minor' => '$1 - eidiçon pequerrixa',
'rcnote' => "A seguir {{PLURAL:$1|stá listada '''ua''' altaraçon feita|stan '''$1''' altaraçones feitas}} {{PLURAL:$2|ne l redadeiro die|ne ls redadeiros '''$2''' dies}}, a partir de las $5 de $4.",
'rcnotefrom' => 'Alteraçones feitas zde <b>$2</b> (amostradas até <b>$1</b>).',
'rclistfrom' => 'Amostrar las noubas altaraçones a partir de $1',
@@ -708,6 +695,8 @@ Tu puodes [[:\$1|criar esta páigina]].",
# Recent changes linked
'recentchangeslinked' => 'Altaraçones relacionadas',
+'recentchangeslinked-feed' => 'Alterações relacionadas',
+'recentchangeslinked-toolbox' => 'Alterações relacionadas',
'recentchangeslinked-title' => 'Altaraçones que ténen a ber cun "$1"',
'recentchangeslinked-noresult' => 'Nun houbo alteraçones an páiginas relacionadas ne l anterbalo de tiempo.',
'recentchangeslinked-summary' => "Esta páigina special amostra las redadeiras altaraçones de páiginas que téngan ua lhigaçon a outra (ó de nembros dua catadorie speceficada).
@@ -726,11 +715,14 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
'uploadedimage' => 'cargou "[[$1]]"',
'watchthisupload' => 'Begiar este fexeiro',
+'upload-unknown-size' => 'Tamanho çcoincido',
+
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error28' => 'Ultrapassado l tiempo lhemite pa l ambio de l fexeiro',
-'license' => 'Lhicença:',
-'nolicense' => 'Nanhua scolhida',
+'license' => 'Lhicença:',
+'license-header' => 'Lhicença:',
+'nolicense' => 'Nanhua scolhida',
# Special:ListFiles
'imgfile' => 'fexeiro',
@@ -742,6 +734,7 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
'listfiles_description' => 'Çcriçon',
# File description page
+'file-anchor-link' => 'Fexeiro',
'filehist' => 'Stórico de l fexeiro',
'filehist-help' => 'Clique an ua data/hora para ber l fexeiro tal cumo el staba naquel sfergante.',
'filehist-current' => 'atual',
@@ -755,13 +748,9 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
'imagelinks' => 'Lhigaçones de Fexeiros',
'linkstoimage' => '{{PLURAL:$1|Esta páigina lhigan|Estas $1 páiginas lhigan}} este fexeiro:',
'nolinkstoimage' => 'Nanhua páigina apunta pa este fexeiro.',
-'sharedupload' => 'Este fexeiro ye de $1 i puode ser outelizado por outros porjetos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'La çcriçon an $1 ye amostrada ambaixo.',
-'shareduploadwiki-linktext' => 'páigina de çcriçon de fexeiro',
-'noimage' => 'Nun eisiste nanhun fexeiro cun este nome, mas puodes $1',
-'noimage-linktext' => 'carga un',
+'sharedupload' => 'Este fexeiro ye de $1 i puode ser outelizado por outros porjetos.',
'uploadnewversion-linktext' => 'Cargar ua nuoba berson deste fexeiro',
-'shared-repo-from' => 'de $1', # $1 is the repository name
+'shared-repo-from' => 'de $1',
# File reversion
'filerevert-comment' => 'Comentairo:',
@@ -798,7 +787,9 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
'doubleredirects' => 'Ancaminamientos duplos',
-'brokenredirects' => 'Ancaminamientos scachados',
+'brokenredirects' => 'Ancaminamientos scachados',
+'brokenredirects-edit' => 'eiditar',
+'brokenredirects-delete' => 'Botar fuora',
'withoutinterwiki' => 'Páiginas sin lhigaçones de lhénguas',
'withoutinterwiki-submit' => 'Amostrar',
@@ -935,7 +926,6 @@ Consulte $2 para um registo de eliminações recentes.',
'protectexpiry' => 'Data de balidade:',
'protect_expiry_invalid' => 'La data de balidade ye ambálido.',
'protect_expiry_old' => 'La data de balidade stá ne l passado.',
-'protect-unchain' => 'Zbloguiar permissones pa arrastrar',
'protect-text' => "Tu eiqui puodes ber i demudar ls nibles de porteçon pa esta páigina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "La tue cuonta nun ten permissones pa demudar ls nibles de porteçon dua páigina.
Esta ye la cunfiguraçon atual pa la páigina '''$1''':",
@@ -948,7 +938,7 @@ Esta ye la cunfiguraçon atual pa la páigina '''$1''':",
'protect-expiring' => 'termina an $1 (UTC)',
'protect-cascade' => 'Portege qualquiera páigina que steia ancluída nesta (porteçon an cachon)',
'protect-cantedit' => 'Tu nun puodes demudar l nible de porteçon desta páigina, porque tu nun tener outorizaçon pa la eiditar.',
-'protect-expiry-options' => '1 hora:1 hour,1 die:1 day,1 sumana:1 week,2 sumanas:2 weeks,1 més:1 month,3 meses:3 months,6 meses:6 months,1 anho:1 year,anfenito:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 die:1 day,1 sumana:1 week,2 sumanas:2 weeks,1 més:1 month,3 meses:3 months,6 meses:6 months,1 anho:1 year,anfenito:infinite',
'restriction-type' => 'Permisson:',
'restriction-level' => 'Nible de restriçon:',
@@ -978,6 +968,7 @@ Esta ye la cunfiguraçon atual pa la páigina '''$1''':",
'sp-contributions-newbies' => 'Percurar solo an las cuntribuiçones de nuobas cuontas',
'sp-contributions-newbies-sub' => 'Pa nuobas cuontas',
'sp-contributions-blocklog' => 'Registro de bloqueios',
+'sp-contributions-talk' => 'Cumbersa',
'sp-contributions-search' => 'Percurar cuntribuiçones',
'sp-contributions-username' => 'Morada de IP ó outelizador:',
'sp-contributions-submit' => 'Percurar',
@@ -1001,7 +992,7 @@ Esta ye la cunfiguraçon atual pa la páigina '''$1''':",
# Block/unblock
'blockip' => 'Bloquiar outelizador',
-'ipboptions' => '2 horas:2 hours,1 die:1 day,3 dias:3 days,1 sumana:1 week,2 sumanas:2 weeks,1 més:1 month,3 meses:3 months,6 meses:6 months,1 anho:1 year,anfenito:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 die:1 day,3 dias:3 days,1 sumana:1 week,2 sumanas:2 weeks,1 més:1 month,3 meses:3 months,6 meses:6 months,1 anho:1 year,anfenito:infinite',
'ipblocklist' => 'IPs i outelizadores bloquiados',
'blocklink' => 'bloquiar',
'unblocklink' => 'zbloquiar',
@@ -1034,7 +1025,7 @@ Nestes causos, tu terás que arrastrar ou ajuntar la páigina a la mano, se assi
'move-watch' => 'Begiar esta páigina',
'movepagebtn' => 'Arrastrar páigina',
'pagemovedsub' => 'Páigina arrastrada cumo debe de ser',
-'movepage-moved' => '\'\'\'"$1" fui arrastrado pa "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" fui arrastrado pa "$2"\'\'\'',
'articleexists' => 'Yá eisiste ua páigina cun este títalo, ou l títalo que scolhiste ye ambálido.
Por fabor, scuolhe outro nome.',
'talkexists' => "'''La páigina an si fui arrastrada cun éisito. Inda assi, la páigina de çcusson nun fui arrastrada, ua beç que yá eisistie ua cun este títalo. Por fabor, ajunta-las a la mano.'''",
@@ -1051,9 +1042,10 @@ Por fabor, scuolhe outro nome.',
'export-download' => 'Grabar cumo fexeiro',
# Namespace 8 related
-'allmessages' => 'Todas las mensaiges de l sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Testo por oumisson',
+'allmessages' => 'Todas las mensaiges de l sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Testo por oumisson',
+'allmessages-filter-all' => 'Todas',
# Thumbnails
'thumbnail-more' => 'Oumentar',
@@ -1084,6 +1076,7 @@ Por fabor, scuolhe outro nome.',
'tooltip-search-go' => 'Ir pa ua páigina cun este nome, causo eisista',
'tooltip-search-fulltext' => 'Percurar por páiginas cun este testo',
'tooltip-n-mainpage' => 'Besitar la Páigina Percipal',
+'tooltip-n-mainpage-description' => 'Besitar la Páigina Percipal',
'tooltip-n-portal' => 'Subre l porjeto, l que puodes fazer, adonde ancuntrar cousas',
'tooltip-n-currentevents' => 'Ancuntrar anformaçon de fondo subre amboras atuales',
'tooltip-n-recentchanges' => 'Lhista de redadeiras altaraçones nesta biqui.',
@@ -1162,7 +1155,7 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ancho',
@@ -1172,7 +1165,7 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
'exif-colorspace' => 'Spácio de quelor',
'exif-contrast' => 'Cuntraste',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normal',
'exif-exposureprogram-1' => 'Manual',
@@ -1233,11 +1226,10 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
'watchlisttools-raw' => 'Ediçon bruta da lhista de ls bigiados',
# Special:Version
-'version' => 'Berson', # Not used as normal message but as header for the special page itself
+'version' => 'Berson',
'version-specialpages' => 'Páiginas Speciales',
'version-variables' => 'Bariables',
'version-other' => 'Outro',
-'version-version' => 'Berson',
'version-license' => 'Licença',
'version-software-product' => 'Perduto',
'version-software-version' => 'Berson',
diff --git a/languages/messages/MessagesMy.php b/languages/messages/MessagesMy.php
index a666956e..bee35240 100644
--- a/languages/messages/MessagesMy.php
+++ b/languages/messages/MessagesMy.php
@@ -90,13 +90,15 @@ $messages = array(
'december-gen' => 'ဒီ​ဇင်​ဘာ​',
'may' => 'မေ​',
-'about' => 'အကြောင်း',
-'cancel' => 'မ​လုပ်​တော့​ပါ​',
+'about' => 'အကြောင်း',
+'cancel' => 'မ​လုပ်​တော့​ပါ​',
+'mytalk' => 'ကျွန်​တော့​ပြော​ရေး​ဆို​ရာ​',
+'navigation' => 'အ​ညွှန်း​',
+
+# Cologne Blue skin
'qbfind' => 'ရှာပါ',
'qbedit' => 'ပြင်​ဆင်​ရန်​',
'qbspecialpages' => 'အ​ထူး​စာ​မျက်​နှာ​',
-'mytalk' => 'ကျွန်​တော့​ပြော​ရေး​ဆို​ရာ​',
-'navigation' => 'အ​ညွှန်း​',
'help' => 'အ​ကူ​အ​ညီ​',
'search' => 'ရှာ​ဖွေ​ရန်​',
@@ -157,13 +159,6 @@ $messages = array(
'nologinlink' => 'မှတ်​ပုံ​တင်​ပြု​လုပ်​ပါ​',
'createaccount' => 'မှတ်​ပုံ​တင်​ပြု​လုပ်​ပါ​',
'gotaccountlink' => 'မှတ်​ပုံ​တင်​ဖြင့်​ဝင်​ပါ​',
-'youremail' => 'အီ​မေး:',
-'username' => 'မှတ်​ပုံ​တင်​အ​မည်:',
-'uid' => 'မှတ်​ပုံ​တင်​ID:',
-'yourrealname' => 'နာမည်ရင်း:',
-'yourlanguage' => 'ဘာသာ:',
-'yournick' => 'ဆိုင်း:',
-'email' => 'အီ​မေး​',
'loginsuccesstitle' => 'မှတ်​ပုံ​တင်​ဖြင့်​ဝင်​ခြင်းအောင်မြင်သည်။',
'loginlanguagelabel' => 'ဘာသာ: $1',
@@ -211,9 +206,16 @@ $messages = array(
'prefsnologin' => 'မှတ်​ပုံ​တင်​ဖြင့်​မ​ဝင်​ရ​သေး​ပါ​',
'changepassword' => 'ဝှက်​စ​ကား​လုံးကိုပြောင်းပါ',
'skin-preview' => 'နမူနာ',
-'math' => 'သင်္ချာ',
-'datetime' => 'နေ့စွဲနှင့် အချိန်',
+'prefs-math' => 'သင်္ချာ',
+'prefs-datetime' => 'နေ့စွဲနှင့် အချိန်',
'searchresultshead' => 'ရှာ​ဖွေ​ရန်​',
+'youremail' => 'အီ​မေး:',
+'username' => 'မှတ်​ပုံ​တင်​အ​မည်:',
+'uid' => 'မှတ်​ပုံ​တင်​ID:',
+'yourrealname' => 'နာမည်ရင်း:',
+'yourlanguage' => 'ဘာသာ:',
+'yournick' => 'ဆိုင်း:',
+'email' => 'အီ​မေး​',
# Groups
'group-all' => '(အားလုံး)',
@@ -228,7 +230,9 @@ $messages = array(
'boteditletter' => 'ဆ',
# Recent changes linked
-'recentchangeslinked' => 'ဆက်​ဆပ်​သော​အ​ပြောင်း​အ​လဲ​များ​',
+'recentchangeslinked' => 'ဆက်​ဆပ်​သော​အ​ပြောင်း​အ​လဲ​များ​',
+'recentchangeslinked-feed' => 'ဆက်​ဆပ်​သော​အ​ပြောင်း​အ​လဲ​များ​',
+'recentchangeslinked-toolbox' => 'ဆက်​ဆပ်​သော​အ​ပြောင်း​အ​လဲ​များ​',
# Upload
'upload' => 'ဖိုင်​တင်​ရန်​',
@@ -245,6 +249,7 @@ $messages = array(
'listfiles_date' => 'နေ့စွဲ',
# File description page
+'file-anchor-link' => 'ဖိုင်',
'filehist' => 'ဖိုင်မှတ်တမ်း',
'filehist-deleteall' => 'အားလုံးဖျက်',
'filehist-deleteone' => 'ဖျက်',
@@ -266,8 +271,8 @@ $messages = array(
# Statistics
'statistics' => 'စာရင်းအင်း',
-'brokenredirects-edit' => '(ပြင်​ဆင်​ရန်)',
-'brokenredirects-delete' => '(ဖျက်​ပါ)',
+'brokenredirects-edit' => 'ပြင်​ဆင်​ရန်',
+'brokenredirects-delete' => 'ဖျက်​ပါ',
'withoutinterwiki-submit' => 'ပြ',
@@ -308,7 +313,7 @@ $messages = array(
# Protect
'prot_1movedto2' => '[[$1]] မှ​ [[$2]] သို့​',
-'protect-expiry-options' => '၂ နာရီ:2 hours,၁ နေ့:1 day,၃ နေ့:3 days,၁ ပတ်:1 week,၂ ပတ်:2 weeks,၁ လ:1 month,၃ လ:3 months,၆ လ:6 months,၁ နှစ်:1 year,အနန္တ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '၂ နာရီ:2 hours,၁ နေ့:1 day,၃ နေ့:3 days,၁ ပတ်:1 week,၂ ပတ်:2 weeks,၁ လ:1 month,၃ လ:3 months,၆ လ:6 months,၁ နှစ်:1 year,အနန္တ:infinite',
'restriction-type' => 'အခွင့်:',
# Restrictions (nouns)
@@ -333,10 +338,10 @@ $messages = array(
# Block/unblock
'ipbreason' => 'အ​ကြောင်း​ပြ​ချက်:',
'ipbother' => 'အခြားအချိန်:',
-'ipboptions' => '၂ နာရီ:2 hours,၁ နေ့:1 day,၃ နေ့:3 days,၁ ပတ်:1 week,၂ ပတ်:2 weeks,၁ လ:1 month,၃ လ:3 months,၆ လ:6 months,၁ နှစ်:1 year,အနန္တ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '၂ နာရီ:2 hours,၁ နေ့:1 day,၃ နေ့:3 days,၁ ပတ်:1 week,၂ ပတ်:2 weeks,၁ လ:1 month,၃ လ:3 months,၆ လ:6 months,၁ နှစ်:1 year,အနန္တ:infinite',
'ipbotheroption' => 'အခြား',
'ipblocklist-submit' => 'ရှာ​ဖွေ​ရန်​',
-'expiringblock' => '$1 ဆုံးမည်',
+'expiringblock' => '$1 $2 ဆုံးမည်',
# Move page
'move-page-legend' => 'စာ​မျက်​နှာ​အား​ရွေ့​ပြောင်း​ပါ​',
diff --git a/languages/messages/MessagesMyv.php b/languages/messages/MessagesMyv.php
index a6a8d315..f08adef6 100644
--- a/languages/messages/MessagesMyv.php
+++ b/languages/messages/MessagesMyv.php
@@ -107,7 +107,7 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'currentmonth' => array( '1', 'МОЛИЦЯКОВ', 'ТЕКУЩИЙ_МЕСЯЦ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'МОЛИЦЯКОВ', 'ТЕКУЩИЙ_МЕСЯЦ', 'ТЕКУЩИЙ_МЕСЯЦ_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'МОЛИЦЯКОВЛЕМ', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'МОЛИЦЯКОВЛЕМГЕН', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_РОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'МОЛИЦЯКОВКИРЬТЯНЬХВОРМА', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_АБР', 'CURRENTMONTHABBREV' ),
@@ -117,7 +117,7 @@ $magicWords = array(
'currentyear' => array( '1', 'МОЛИЦЯИЕ', 'ТЕКУЩИЙ_ГОД', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'МОЛИЦЯШКА', 'ТЕКУЩЕЕ_ВРЕМЯ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'МОЛИЦЯЦЯС', 'ТЕКУЩИЙ_ЧАС', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'ТЕСКЭНЬКОВ', 'МЕСТНЫЙ_МЕСЯЦ', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'ТЕСКЭНЬКОВ', 'МЕСТНЫЙ_МЕСЯЦ', 'МЕСТНЫЙ_МЕСЯЦ_2', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'ТЕСКЭНЬКОВЛЕМ', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'ТЕСКЭНЬКОВЛЕМГЕН', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_РОД', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'ТЕСКЭНЬКОВКИРЬТЯНЬХВОРМА', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_АБР', 'LOCALMONTHABBREV' ),
@@ -214,6 +214,10 @@ $messages = array(
'underline-never' => 'Зярдояк',
'underline-default' => 'Васнянь браузер',
+# Font style option in Special:Preferences
+'editfont-style' => 'Витнема-петнема уминенть фонт стилезэ',
+'editfont-serif' => 'Сериф шрифтэсь',
+
# Dates
'sunday' => 'Таргочи',
'monday' => 'Атяньчи',
@@ -273,7 +277,7 @@ $messages = array(
'category-media-header' => '"$1" категориясонть медиясь',
'category-empty' => "''Те категориясонть арасть лопат-медият.''",
'hidden-categories' => '{{PLURAL:$1|Кекшень категория|Кекшень категорият}}',
-'hidden-category-category' => 'Кекшень категорият', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Кекшень категорият',
'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть {{PLURAL:$1|явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|алкс категория|$1 алкс категорият}}.',
'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
@@ -281,13 +285,23 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
'listingcontinuesabbrev' => 'поладксозо моли',
+'index-category' => 'Индекс марто лопатне',
+'noindex-category' => 'Индекстэме лопатне',
'mainpagetext' => "'''МедияВикинь тевс аравтомазо парсте лиссь.'''",
-'about' => 'Эстедензэ',
-'article' => 'Потмокслопа',
-'newwindow' => '(панжови од вальмасо)',
-'cancel' => 'Саемс мекев',
+'about' => 'Эстедензэ',
+'article' => 'Потмокслопа',
+'newwindow' => '(панжови од вальмасо)',
+'cancel' => 'Саемс мекев',
+'moredotdotdot' => 'Седе ламо...',
+'mypage' => 'Монь лопам',
+'mytalk' => 'Монь кортамом',
+'anontalk' => 'Кортамс те IP-нть марто',
+'navigation' => 'Навигация',
+'and' => '&#32;ды',
+
+# Cologne Blue skin
'qbfind' => 'Мук',
'qbbrowse' => 'Ваномо-тееме',
'qbedit' => 'Витнеме-петнеме',
@@ -295,15 +309,35 @@ $messages = array(
'qbpageinfo' => 'Косо-зярдо',
'qbmyoptions' => 'Монь лопан',
'qbspecialpages' => 'Башка тевень лопат',
-'moredotdotdot' => 'Седе ламо...',
-'mypage' => 'Монь лопам',
-'mytalk' => 'Монь кортамом',
-'anontalk' => 'Кортамс те IP-нть марто',
-'navigation' => 'Навигация',
-'and' => '&#32;ды',
-
-# Metadata in edit box
-'metadata_help' => 'Метадата:',
+'faq' => 'Сеедьстэ кепедень кевкстемат',
+'faqpage' => 'Project:Сеедьстэ кепедень кевкстемат',
+
+# Vector skin
+'vector-action-addsection' => 'Поладомс мезде кортамс',
+'vector-action-delete' => 'Нардамс',
+'vector-action-move' => 'Печтевтемс',
+'vector-action-protect' => 'Аравтомс ванстомас',
+'vector-action-undelete' => 'Вельмевтемс нардазенть',
+'vector-action-unprotect' => 'Ванстомасто саемс',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Лезкс лопа',
+'vector-namespace-image' => 'Файла',
+'vector-namespace-main' => 'Лопа',
+'vector-namespace-media' => 'Медиа лопа',
+'vector-namespace-mediawiki' => 'Пачтямнэ',
+'vector-namespace-project' => 'Проекттэ лопа',
+'vector-namespace-special' => 'Башка тевень лопа',
+'vector-namespace-talk' => 'Кортнема',
+'vector-namespace-template' => 'Лопа парцун',
+'vector-namespace-user' => 'Теицянь лопа',
+'vector-view-create' => 'Теемс-Шкамс',
+'vector-view-edit' => 'Витнемс-петнемс',
+'vector-view-history' => 'Ваномс юронзо-путовксонзо',
+'vector-view-view' => 'Ловномс',
+'vector-view-viewsource' => 'Ваномс косто саезь',
+'actions' => 'Тев теемат',
+'namespaces' => 'Лемпотмот',
+'variants' => 'Вариантт',
'errorpagetitle' => 'Ильведькс',
'returnto' => 'Велявтомс $1 лопантень.',
@@ -353,7 +387,7 @@ $messages = array(
'otherlanguages' => 'Лия кельсэ',
'redirectedfrom' => '(Ютавтозь $1 вельде)',
'redirectpagesub' => 'Лиясто ютавтозь лопа',
-'lastmodifiedat' => 'Те лопанть меельседе витнезь-петнезь $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Те лопанть меельседе витнезь-петнезь $2, $1.',
'viewcount' => 'Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.',
'protectedpage' => 'Те лопась ванстомасо',
'jumpto' => 'Тёкадемс тей:',
@@ -364,7 +398,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} ланга',
'aboutpage' => 'Project:Эстэдензэ',
'copyright' => '$1-сто муят мезе тесэ.',
-'copyrightpagename' => '{{SITENAME}} копиянь теемань прават',
'copyrightpage' => '{{ns:project}}:Ломанень видечинзэ',
'currentevents' => 'Мезе ней моли',
'currentevents-url' => 'Project:Мезе ней моли',
@@ -372,8 +405,6 @@ $messages = array(
'disclaimerpage' => 'Project:Видечинь прякс кортнема',
'edithelp' => 'Витнемань-петнемань лезкс',
'edithelppage' => 'Help:Витнема-петнема',
-'faq' => 'Сеедьстэ кепедень кевкстемат',
-'faqpage' => 'Project:Сеедьстэ кепедень кевкстемат',
'helppage' => 'Help:Лопась мезе кирди',
'mainpage' => 'Прякслопа',
'mainpage-description' => 'Прякслопа',
@@ -435,7 +466,6 @@ $messages = array(
# General errors
'error' => 'Ильведькс',
'databaseerror' => 'Датабазань ильведькс',
-'nodb' => '$1 датабазась эзь кочкаво',
'laggedslavemode' => 'Ванок: Кизды, лопасонть материалось таштомсь.',
'readonly' => 'Датабазась панжома экшсэ',
'enterlockreason' => 'Сёрмадт мейс сёлгамс эряви, ды ёвтак, зярдо таго арьсят панжови',
@@ -475,11 +505,9 @@ $messages = array(
'virus-unknownscanner' => 'апак содань антивирус:',
# Login and logout pages
-'logouttitle' => 'Теицянь лисема',
'welcomecreation' => '== Совак, инеськеть, $1! ==
Совамотаркат теезь.
Иля стувто полавтнемс эсеть [[Special:Preferences|{{SITENAME}} ладсематнень]].',
-'loginpagetitle' => 'Теицянь совамо',
'yourname' => 'Теицянь лем:',
'yourpassword' => 'Совамо валот:',
'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
@@ -489,6 +517,7 @@ $messages = array(
'nav-login-createaccount' => 'Совамо / тейть совамотарка',
'loginprompt' => '{{SITENAME}} сайтэнтень совамга эряви нолдамс тевс cookies.',
'userlogin' => 'Совамо / тейть совамотарка',
+'userloginnocreate' => 'Совамо',
'logout' => 'Лисеме',
'userlogout' => 'Лисеме',
'notloggedin' => 'Апак соваво',
@@ -500,22 +529,8 @@ $messages = array(
'createaccountmail' => 'е-сёрмасо',
'badretype' => 'Сёрмадыть совамо валот кавксть, сынь аволь вейкеть.',
'userexists' => 'Те лемесь уш саезь. Арсека эсеть лия, инеськеть.',
-'youremail' => 'Е-сёрма:',
-'username' => 'Теицянь леметь:',
-'uid' => 'Теицянь ID:',
-'yourrealname' => 'Алкуксонь леметь:',
-'yourlanguage' => 'Келесь:',
-'yournick' => 'Кедень путома:',
-'badsiglength' => 'Кедень путомат пек кувака.
-Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
-'yourgender' => 'Сыметь (цёрань-тейтерень):',
-'gender-unknown' => 'апак невте',
-'gender-male' => 'цёрань сыме',
-'gender-female' => 'Авань сыме',
-'email' => 'Е-сёрма',
-'prefs-help-realname' => 'Алкуксонь леметь (арась мелеть, иляк путо): путсак, ды сон карми неявомо не таркатнесэ, косо тон тев теят.',
'loginerror' => 'Совамсто ильведькс',
-'prefs-help-email-required' => 'Е-сёрмань адресэть эряви.',
+'createaccounterror' => 'Совамо тарка эзь теевть: $1',
'nocookiesnew' => 'Совамо таркась шкавсь, ансяк зярс эзить сова.
{{SITENAME}} сайтэв совават cookies функция вельде.
Содымашинасот cookies функциятне тевс апак нолда.
@@ -529,7 +544,7 @@ $messages = array(
'nouserspecified' => 'Теицянь лем эряви.',
'wrongpassword' => 'Аволь истя сёрмадык совамо валот. Варчыка одов.',
'wrongpasswordempty' => 'Салавань валот кадовсь апак сёрмадо. Сёрмадыка одов.',
-'passwordtooshort' => 'Совамо валот а маштови эли кувалмозо а саты. Эйсэнзэ эряволь улемс {{PLURAL:$1|1 тешкс|$1 тешкст}}, аволь седе аламо. Совамо валонтень эряви явовомс теицянь валонть эйстэ.',
+'passwordtooshort' => 'Совамо валонть кувалмозо {{PLURAL:$1|улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
'mailmypassword' => 'Кучт е-сёрмасо од совамо вал',
'passwordremindertitle' => '{{SITENAME}} туртов акуватень од совамо вал',
'passwordremindertext' => 'Кие-бути (кода неяви тон IP-тешксстэнть $1) вешсь,<br />
@@ -563,7 +578,6 @@ $messages = array(
'resetpass_forbidden' => 'Совамо валтнэ а полавтовить',
'resetpass-submit-loggedin' => 'Полавтомс совамо валот',
'resetpass-temp-password' => 'А куватень совамо валось:',
-'resetpass-log' => 'Совамо валонь полавтомадо конёв',
# Edit page toolbar
'bold_sample' => 'Эчке текст',
@@ -618,7 +632,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'blockedoriginalsource' => "'''$1''' -нть лисьмапрясь ало неяви:",
'whitelistedittitle' => 'Витнемань-петнемань теемга эряви совамо лем',
'whitelistedittext' => 'Лопанть витнемс - петнемс эряви $1.',
-'confirmedittitle' => 'Витнемга-петнемга эряви е-сёрма паргонь кемекстамо',
'nosuchsectiontitle' => 'Явксось а муеви',
'loginreqtitle' => 'Совамс эряви',
'loginreqlink' => 'совамс',
@@ -651,10 +664,11 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
'longpagewarning' => "'''ВАНОК: Те лопанть сталмозо $1 килобайтт; конат-конат интерчаматнесэ-браузертнэсэ стакасто витнемс-петнемс сёрмадовкс 32-во kб сталмосо али седе стака.
Инеськеть, паро улевель лопанть явомс вишка пельксекс.'''",
-'titleprotectedwarning' => "'''ВАНОК: Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''",
-'templatesused' => 'Те лопасонть тевс нолдазь лопа парцунт:',
-'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь лопа парцунт:',
-'templatesusedsection' => 'Те пелькссэнть тевс нолдазь лопа парцунт:',
+'titleprotectedwarning' => "'''ВАНОК: Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''
+Журналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
+'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
+'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
+'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:',
'template-protected' => '(ванстозь)',
'template-semiprotected' => '(пельс ванстозь)',
'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:',
@@ -663,11 +677,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'nocreate-loggedin' => 'Тонеть а мерить теемс-шкамс од лопат.',
'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|тувталось|тувталтнэ}}:',
'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|тувталось|тувталтнэ}} вана:',
-'recreate-deleted-warn' => "'''Икелев кардома: Вельмевтят лопа, кона нардазель.'''
+'recreate-moveddeleted-warn' => "'''Ванок: Вельмевтят лопа, кона нардазель.'''
Васня арьсек, эряви - а эряви полалемс ды витнемс-петнемс те лопанть.
-Вант те лопанть нардома лувонть ало:",
-'deletelog-fulllog' => 'Ваномс весе журналонть',
+Те лопанть нардамодо ды печтевтемадо путовкстнэ одов максозь тесэ, улезт шожда ванстнемс:",
+'moveddeleted-notice' => 'Те лопась нардазь.
+Лопанть нардамодо сёрмадовксось максозь вана ало.',
'edit-conflict' => 'Витнемань-петнемань аладямо.',
'edit-already-exists' => 'Од лопась кодаяк эзь тееве; сон уш ули.',
@@ -684,7 +699,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'currentrev' => 'Тевате лиякстомтома',
'currentrev-asof' => 'Неень верзиясь истямо шкань $1',
'revisionasof' => '$1-це версиясь',
-'revision-info' => '$1 -нь лиякстомтома, конань теизе $2', # Additionally available: $3: revision id
+'revision-info' => '$1 -нь лиякстомтома, конань теизе $2',
'previousrevision' => '←Седе икелень лиякстомтома',
'nextrevision' => 'Седе од вановкс→',
'currentrevisionlink' => 'Тевате лиякстомтома',
@@ -696,7 +711,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'histlegend' => "Версиняь кочкамось: тешксты невтезь верисятнень, али лепштик Enter повнэнть.<br />
Чарькодевтемат: (молиц.) = редямось молиця версиястонть; (и. молиц.) = редямось икеле молиця версиястонть; '''а''' = аволь седе ламо лиякстомтома.",
'history-fieldset-title' => 'Ваномс лопанть юронзо-путовксонзо',
-'deletedrev' => '[нардазь]',
+'history-show-deleted' => 'Ансяк нардазь',
'histfirst' => 'Васенце',
'histlast' => 'Меельсе',
'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
@@ -705,35 +720,38 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Revision feed
'history-feed-title' => 'Лиякстомтомань тевде',
'history-feed-description' => 'Викинь тевате лопанть лиякстомтомань тевдензэ',
-'history-feed-item-nocomment' => '$1 $2-зэ', # user at time
+'history-feed-item-nocomment' => '$1 $2-зэ',
# Revision deletion
-'rev-deleted-comment' => '(арсемась-мелесь нардазь)',
-'rev-deleted-user' => '(теицянь лемесь нардазь)',
-'rev-deleted-event' => '(сёрмадсткэсь нардазь)',
-'rev-delundel' => 'невтемс/кекшемс',
-'revisiondelete' => 'Нардамс/вельмевтемс лиякстомтоматнень',
-'revdelete-nologtype-title' => 'Журнал типесь апак максо',
-'revdelete-toomanytargets-title' => 'Норовамо таркатнеде ламо',
-'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
-'revdelete-legend' => 'Аравтомс неявомачынь петне',
-'revdelete-hide-text' => 'Кекшемс лиякстомтомань текстэнть',
-'revdelete-hide-name' => 'Кекшемс тев тееманть ды норовамо тарканзо',
-'revdelete-hide-comment' => 'Кекшемс витнемадо-петнемадо арсематнень',
-'revdelete-hide-user' => 'Кекшемс витницянть-петницянть теиця лемензэ/IP-нзэ',
-'revdelete-hide-image' => 'Кекшемс мезе файлатнесэ',
-'revdelete-log' => 'Тувталось:',
-'revdelete-submit' => 'Аравтомс кочказь лиякстомтонть',
-'revdelete-logentry' => '[[$1]]-нть лиякстомтоманть неявомазо полавтовсь',
-'revdel-restore' => 'Полавтомс неявомачынзэ',
-'pagehist' => 'Лопанть икелькс умазо',
-'deletedhist' => 'Нардань икелькс умазо',
-'revdelete-content' => 'потмозо',
-'revdelete-summary' => 'витнемадо-петнемадо нурькине йовтавкс',
-'revdelete-uname' => 'Совицянь леметь',
-'revdelete-hid' => '$1 кекшезь',
-'revdelete-unhid' => '$1 ливтезь лангс',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|лиякстомтомань туртов|лиякстомтоматнень туртов}}',
+'rev-deleted-comment' => '(арсемась-мелесь нардазь)',
+'rev-deleted-user' => '(теицянь лемесь нардазь)',
+'rev-deleted-event' => '(сёрмадсткэсь нардазь)',
+'rev-delundel' => 'невтемс/кекшемс',
+'rev-showdeleted' => 'невтемс',
+'revisiondelete' => 'Нардамс/вельмевтемс лиякстомтоматнень',
+'revdelete-nologtype-title' => 'Журнал типесь апак максо',
+'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
+'revdelete-legend' => 'Аравтомс неявомачынь петне',
+'revdelete-hide-text' => 'Кекшемс лиякстомтомань текстэнть',
+'revdelete-hide-image' => 'Кекшемс мезе файлатнесэ',
+'revdelete-hide-name' => 'Кекшемс тев тееманть ды норовамо тарканзо',
+'revdelete-hide-comment' => 'Кекшемс витнемадо-петнемадо арсематнень',
+'revdelete-hide-user' => 'Кекшемс витницянть-петницянть теиця лемензэ/IP-нзэ',
+'revdelete-log' => 'Тувталось:',
+'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|лиякстомтомантень|лиякстомтоматненень}}',
+'revdelete-logentry' => '[[$1]]-нть лиякстомтоманть неявомазо полавтовсь',
+'revdel-restore' => 'Полавтомс неявомачынзэ',
+'pagehist' => 'Лопанть икелькс умазо',
+'deletedhist' => 'Нардань икелькс умазо',
+'revdelete-content' => 'потмозо',
+'revdelete-summary' => 'витнемадо-петнемадо нурькине йовтавкс',
+'revdelete-uname' => 'Совицянь леметь',
+'revdelete-hid' => '$1 кекшезь',
+'revdelete-unhid' => '$1 ливтезь лангс',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|лиякстомтомань туртов|лиякстомтоматнень туртов}}',
+'revdelete-reasonotherlist' => 'Лия тувтал',
+'revdelete-edit-reasonlist' => 'Витнемс-петнемс нардамонь тувталтнэсэ',
+'revdelete-offender' => 'Версиянть теицязо:',
# History merging
'mergehistory' => 'Совавтомс лопатнень лиякстомтомадо сёрмадовкстнэнь ве лувс',
@@ -760,134 +778,73 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'difference' => '(Явовкс ванокснень юткова)',
'lineno' => 'Киксэсь $1:',
'compareselectedversions' => 'Кочказь версиятнень аравтомс карадо-каршо',
-'visualcomparison' => 'Неемга карадо-каршо аравтома',
'editundo' => 'Велявтомс мекев мезе витнинь-петнинь',
'diff-multi' => '({{PLURAL:$1|$1 юткине версиясь апак невте|$1 юткине версиятне апак невте|$1 юткине версиятнеде апак невте.}})',
-'diff-movedto' => 'печтевтезь $1-с',
-'diff-styleadded' => '$1 стилесь поладозь',
-'diff-added' => '$1 поладозь',
-'diff-changedto' => 'полавтозь истямокс $1',
-'diff-movedoutof' => 'печтевтезь $1 таркасто',
-'diff-styleremoved' => '$1 стилесь саезь',
-'diff-removed' => '$1 нардазь',
-'diff-changedfrom' => 'полавтозь, ульнесь $1',
-'diff-src' => 'лисьмапрязо',
-'diff-withdestination' => 'норовамо лопась $1-сь',
-'diff-with' => '&#32; $1 $2 марто',
-'diff-with-final' => '&#32;$1 $2 марто',
-'diff-width' => 'келезэ',
-'diff-height' => 'сэрезэ',
-'diff-p' => "'''ушодома-абзац'''",
-'diff-blockquote' => "'''цитат'''",
-'diff-h1' => "'''конякс (лув 1)'''",
-'diff-h2' => "'''конякс (лув 2)'''",
-'diff-h3' => "'''конякс (лув 3)'''",
-'diff-h4' => "'''конякс (лув 4)'''",
-'diff-h5' => "'''конякс (лув 5)'''",
-'diff-pre' => "'''анок формат марто пакш'''",
-'diff-div' => "'''явкс'''",
-'diff-ul' => "'''списка, апак йовта конась зяроце'''",
-'diff-ol' => "'''зяроцень-зяроцень списка'''",
-'diff-li' => "'''спискас совий'''",
-'diff-table' => "'''таблица'''",
-'diff-tbody' => "'''мезе таблицасонть'''",
-'diff-tr' => "'''чилькс'''",
-'diff-td' => "'''чакшкэ'''",
-'diff-th' => "'''конякс'''",
-'diff-br' => "'''ютко'''",
-'diff-hr' => "'''горизонтонь коняс кикс'''",
-'diff-code' => "'''соды машинань код марто пакш'''",
-'diff-dl' => "'''чарькодевтемань списка'''",
-'diff-dt' => "'''чарькодевтема вал'''",
-'diff-dd' => "'''чарькодевтема'''",
-'diff-input' => "'''путомкст'''",
-'diff-form' => "'''хорма'''",
-'diff-img' => "'''неевть'''",
-'diff-span' => "'''вакс'''",
-'diff-a' => "'''сюлмавома пе'''",
-'diff-i' => "'''комавтозь'''",
-'diff-b' => "'''эчкстэ'''",
-'diff-strong' => "'''кеместэ'''",
-'diff-em' => "'''тешкстамо марто'''",
-'diff-font' => "'''сёрма'''",
-'diff-big' => "'''покшсто'''",
-'diff-del' => "'''нардазь'''",
-'diff-tt' => "'''аравтонь келезэ'''",
-'diff-sub' => "'''алга тешкставкс'''",
-'diff-sup' => "'''верьга тешкставкс'''",
-'diff-strike' => "'''трокс черькставкс'''",
# Search results
-'searchresults' => 'Мезе муевсь',
-'searchresults-title' => 'Мезе муевсь "$1" вешнемасо',
-'searchresulttext' => '{{SITENAME}} сайтсэ вешнэмадо седе ламо содамга вант [[{{MediaWiki:Helppage}}|кевкстемань пельксэнть]].',
-'searchsubtitle' => 'Вешнить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|весе лопатне "$1" лопасто саезь]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" лопа марто сюлмазь весе лопатне]])',
-'searchsubtitleinvalid' => "Вешнить '''$1'''",
-'noexactmatch' => "'''\"\$1\" конякс марто лопа арась.''' Мелеть ули, [[:\$1|теика те лопанть]].",
-'noexactmatch-nocreate' => "'''\"\$1\" лемсэ лопа арась.'''",
-'titlematches' => 'Лопанть коняксонзо марто вейтьс прась',
-'notitlematches' => 'Лопанть коняксонзо марто вейтьс прамот арасть',
-'textmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот',
-'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
-'prevn' => 'седе икелень $1',
-'nextn' => 'сы $1',
-'viewprevnext' => 'Ванномс ($1) ($2) ($3)',
-'searchmenu-legend' => 'Вешнемань аравтомкат',
-'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
-'searchhelp-url' => 'Help:Лопась мезе кирди',
-'searchprofile-articles' => 'Потмокс лопат',
-'searchprofile-articles-and-proj' => 'Потмокст-проектт лопат',
-'searchprofile-project' => 'Проект лопат',
-'searchprofile-images' => 'Файлат',
-'searchprofile-everything' => 'Весе',
-'searchprofile-articles-tooltip' => 'Вешнемс вана тестэ $1',
-'searchprofile-project-tooltip' => 'Вешнемс вана тестэ $1',
-'searchprofile-images-tooltip' => 'Вешнемс файлат',
-'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
-'search-redirect' => '(йутавтт $1-с)',
-'search-section' => '(пелькс $1)',
-'search-suggest' => 'Истя мерикскелить: $1',
-'search-interwiki-caption' => 'Дугакс проектт',
-'search-interwiki-default' => '$1 савкс:',
-'search-interwiki-more' => '(седе ламо)',
-'search-mwsuggest-enabled' => 'ушодкс марто',
-'search-mwsuggest-disabled' => 'ушодкстомо',
-'search-relatedarticle' => 'Малавикс',
-'searchrelated' => 'малавикс',
-'searchall' => 'весе',
-'showingresultstotal' => "Невтемс ало {{PLURAL:$4|муезь '''$1''' '''$3''' эйстэ|муезь '''$1 - $2''' '''$3''' эйстэ}}",
-'nonefound' => "'''Ванта''': Башка лем потмонь апак аравто ансяк кона-кона лем потмот понгить вешнэма таркакс.
+'searchresults' => 'Мезе муевсь',
+'searchresults-title' => 'Мезе муевсь "$1" вешнемасо',
+'searchresulttext' => '{{SITENAME}} сайтсэ вешнэмадо седе ламо содамга вант [[{{MediaWiki:Helppage}}|кевкстемань пельксэнть]].',
+'searchsubtitle' => 'Вешнить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|весе лопатне "$1" лопасто саезь]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" лопа марто сюлмазь весе лопатне]])',
+'searchsubtitleinvalid' => "Вешнить '''$1'''",
+'titlematches' => 'Лопанть коняксонзо марто вейтьс прась',
+'notitlematches' => 'Лопанть коняксонзо марто вейтьс прамот арасть',
+'textmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот',
+'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
+'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
+'nextn' => 'сы {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'Вешнемань аравтомкат',
+'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
+'searchhelp-url' => 'Help:Лопась мезе кирди',
+'searchprofile-articles' => 'Потмокс лопат',
+'searchprofile-project' => 'Лезкс ды проекттэ лопат',
+'searchprofile-images' => 'Мультимедия',
+'searchprofile-everything' => 'Весе',
+'searchprofile-articles-tooltip' => 'Вешнемс вана тестэ $1',
+'searchprofile-project-tooltip' => 'Вешнемс вана тестэ $1',
+'searchprofile-images-tooltip' => 'Вешнемс файлат',
+'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
+'search-redirect' => '(йутавтт $1-с)',
+'search-section' => '(пелькс $1)',
+'search-suggest' => 'Истя мерикскелить: $1',
+'search-interwiki-caption' => 'Дугакс проектт',
+'search-interwiki-default' => '$1 савкс:',
+'search-interwiki-more' => '(седе ламо)',
+'search-mwsuggest-enabled' => 'ушодкс марто',
+'search-mwsuggest-disabled' => 'ушодкстомо',
+'search-relatedarticle' => 'Малавикс',
+'searchrelated' => 'малавикс',
+'searchall' => 'весе',
+'nonefound' => "'''Ванта''': Башка лем потмонь апак аравто ансяк кона-кона лем потмот понгить вешнэма таркакс.
Аравтта вешнэма икельксэкс ''all:'', зярдо мель саят вешнэмс эрьва кодамо таркасто (сайсынек: кортнема лопатнень, лопа парцунтнэнь, ды седе тов), лиякс аравтыка эрявикс лем потмонть вешнэма икельксэкс.",
-'powersearch' => 'Седеяк вешнемс',
-'powersearch-legend' => 'Седе келейстэ вешнема',
-'powersearch-ns' => 'Вешнемс не лем потмотнестэ:',
-'powersearch-redir' => 'Лия таркав йутавтоматнень сёрмалема',
-'powersearch-field' => 'Вешнемс',
-'search-external' => 'Ушо йондонь вешнема',
+'powersearch' => 'Седеяк вешнемс',
+'powersearch-legend' => 'Седе келейстэ вешнема',
+'powersearch-ns' => 'Вешнемс не лем потмотнестэ:',
+'powersearch-redir' => 'Лия таркав йутавтоматнень сёрмалема',
+'powersearch-field' => 'Вешнемс',
+'powersearch-toggleall' => 'Весе',
+'search-external' => 'Ушо йондонь вешнема',
+
+# Quickbar
+'qbsettings' => 'Навигациянь лазнэ',
+'qbsettings-none' => 'Арась мезе невтемс',
+'qbsettings-fixedleft' => 'Керш ёндо кирдезь',
+'qbsettings-fixedright' => 'Вить ёндо кирдезь',
+'qbsettings-floatingleft' => 'Керш ёнга уи',
+'qbsettings-floatingright' => 'Вить ёнга уи',
# Preferences page
'preferences' => 'Лия ютксто явома',
'mypreferences' => 'Мейсэ явован лиятнень эйстэ',
'prefs-edits' => 'Зяроксть витнезь-петнезь:',
'prefsnologin' => 'Эзить сова',
-'qbsettings' => 'Навигациянь лазнэ',
-'qbsettings-none' => 'Арась мезе невтемс',
-'qbsettings-fixedleft' => 'Керш ёндо кирдезь',
-'qbsettings-fixedright' => 'Вить ёндо кирдезь',
-'qbsettings-floatingleft' => 'Керш ёнга уи',
-'qbsettings-floatingright' => 'Вить ёнга уи',
'changepassword' => 'Салавань валонь полавтома',
-'skin' => 'Неемань ладсема',
+'prefs-skin' => 'Неемань ладсема',
'skin-preview' => 'Васнянь неевтезэ',
-'math' => 'Математика',
-'dateformat' => 'Чынь хвормат',
+'prefs-math' => 'Математика',
'datedefault' => 'Икелькс вешема арась',
-'datetime' => 'Чи ды шка',
-'math_failure' => 'А ловнови',
-'math_unknown_error' => 'апак содань ильведькс',
-'math_unknown_function' => 'апак содань функция',
-'math_lexing_error' => 'лексиконь манявкс',
-'math_syntax_error' => 'синтаксонь ильведевкс',
+'prefs-datetime' => 'Чи ды шка',
'prefs-personal' => 'Теицядо',
'prefs-rc' => 'Чиень полавтнемат',
'prefs-watchlist' => 'Ванома лемрисьме',
@@ -896,16 +853,16 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'prefs-resetpass' => 'Совамо валонь полавтомо',
'saveprefs' => 'Ванстомс',
'resetprefs' => 'Нардамс апак вансто полавтнемат',
-'textboxsize' => 'Витнема-петнема',
+'prefs-editing' => 'Витнема-петнема',
'prefs-edit-boxsize' => 'Витнема-петнема вальманть сэрензэ-келензэ.',
'rows' => 'Вал чилькстнэ (строкатне):',
'columns' => 'Палманть:',
'searchresultshead' => 'Вешнэма',
'resultsperpage' => 'Зяроксть вастневи ве лопасо:',
'contextlines' => 'Зяро рисьметь эрьва муевкссэ:',
+'recentchangesdays-max' => '(максимумось $1 {{PLURAL:$1|чи|чить}})',
'timezonelegend' => 'Шкань зонась:',
'localtime' => 'Теицянь шкась:',
-'timezoneselect' => 'Шкань зонась:',
'servertime' => 'Серверэнь шкась:',
'guesstimezone' => 'Пештемс интернет икельксстэть',
'timezoneregion-africa' => 'Африка',
@@ -920,7 +877,25 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'timezoneregion-pacific' => 'Сэтьме иневедь',
'prefs-namespaces' => 'Лем потмот',
'default' => 'зярдо лиякс апак йовта',
-'files' => 'Файлат',
+'prefs-files' => 'Файлат',
+'youremail' => 'Е-сёрма:',
+'username' => 'Теицянь леметь:',
+'uid' => 'Теицянь ID:',
+'yourrealname' => 'Алкуксонь леметь:',
+'yourlanguage' => 'Келесь:',
+'yournick' => 'Кедень путома:',
+'badsiglength' => 'Кедень путомат пек кувака.
+Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
+'yourgender' => 'Сыметь (цёрань-тейтерень):',
+'gender-unknown' => 'апак невте',
+'gender-male' => 'цёрань сыме',
+'gender-female' => 'Авань сыме',
+'email' => 'Е-сёрма',
+'prefs-help-realname' => 'Алкуксонь леметь (арась мелеть, иляк путо): путсак, ды сон карми неявомо не таркатнесэ, косо тон тев теят.',
+'prefs-help-email-required' => 'Е-сёрмань адресэть эряви.',
+'prefs-signature' => 'Кедь путовкс',
+'prefs-dateformat' => 'Ков чинь форматозо',
+'prefs-diffs' => 'Мейсэ явовить верзиятне',
# User rights
'userrights-lookup-user' => 'Сови куротнень ветямось',
@@ -972,6 +947,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'right-blockemail' => 'Кардамс лия лисийтнень-совийтнень е-сёрмань кучомадо',
'right-editinterface' => 'Витнемс-петнемс теицянь интерчаманть (васодема йожонть)',
'right-editusercssjs' => 'Витнемс-петнемс лия теицятнень CSS ды JS файласт',
+'right-editusercss' => 'Витнемс-петнемс лия теицятнень CSS файласт',
+'right-edituserjs' => 'Витнемс-петнемс лия теицятнень JS файласт',
'right-import' => 'Ёвкстамс лия Викистэ лопат',
'right-mergehistory' => 'Вейтьсэндямс лопатнень юрост-путовксост',
'right-userrights' => 'Витнемс-петнемс совицянь весе видечитнень',
@@ -1001,34 +978,43 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'action-importupload' => 'совавтомс те лопанть файлань йовкстамо юртсто',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
-'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
-'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
-'recentchanges-feed-description' => 'Мельга ваннынк кода ульнесть витьнемат-петнемат wiki-сэ те максовксонть.',
-'rcnote' => "$5, $4 шканть коряс муят алдо {{PLURAL:$1|Меельсе '''1''' лиякстомтоманть|Меельсе '''$1''' лиякстомтоматнень}} меельсе {{PLURAL:$2|чинть|'''$2''' читнень}} шкасто.",
-'rcnotefrom' => "Ало невтезь '''$2''' лиякстомтомасто саезь ('''$1''' видс).",
-'rclistfrom' => 'Невтемс од витьнематнень $1-нть эйстэ саезь.',
-'rcshowhideminor' => '$1 апокшкэ витнемат-петнемат',
-'rcshowhidebots' => '$1 ботт',
-'rcshowhideliu' => '$1 совазь уськекирдийтне',
-'rcshowhideanons' => '$1 лемтеме теицят',
-'rcshowhidepatr' => '$1 кона патрульсэ витьни-петни',
-'rcshowhidemine' => '$1 мезе мон витнинь-петнинь',
-'rclinks' => 'Невтемс меельсе $1 полавтнемат меельсе $2 чинь перть<br />$3',
-'diff' => 'кадовикс',
-'hist' => 'ист',
-'hide' => 'Кекшемс',
-'show' => 'Невтемс',
-'minoreditletter' => 'а',
-'newpageletter' => 'О',
-'boteditletter' => 'б',
-'rc_categories_any' => 'Кодамо илязо уле',
-'newsectionsummary' => '/* $1 */ од пелькс',
-'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга (JavaScript эряви)',
-'rc-enhanced-hide' => 'Кекшемс келейстэ ёвтазенть',
+'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
+'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
+'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
+'recentchanges-feed-description' => 'Мельга ваннынк кода ульнесть витьнемат-петнемат wiki-сэ те максовксонть.',
+'recentchanges-legend-newpage' => '$1, те - од лопа',
+'recentchanges-label-newpage' => 'Те витнемась-петнемась од лопа тейсь',
+'recentchanges-legend-minor' => '$1, те - а покшкэ витнема-петнема',
+'recentchanges-label-minor' => 'Те а покшкэ витнемась-петнемась',
+'recentchanges-legend-bot' => '$1, те - ботонь витнемазо-петнемазо',
+'recentchanges-label-bot' => 'Те витнеманть-петнеманть теизе кона-кона бот',
+'recentchanges-legend-unpatrolled' => '$1, те витнеманть-петнеманть мельга а ванстнить',
+'rcnote' => "$5, $4 шканть коряс муят алдо {{PLURAL:$1|Меельсе '''1''' лиякстомтоманть|Меельсе '''$1''' лиякстомтоматнень}} меельсе {{PLURAL:$2|чинть|'''$2''' читнень}} шкасто.",
+'rcnotefrom' => "Ало невтезь '''$2''' лиякстомтомасто саезь ('''$1''' видс).",
+'rclistfrom' => 'Невтемс од витьнематнень $1-нть эйстэ саезь.',
+'rcshowhideminor' => '$1 апокшкэ витнемат-петнемат',
+'rcshowhidebots' => '$1 ботт',
+'rcshowhideliu' => '$1 совазь уськекирдийтне',
+'rcshowhideanons' => '$1 лемтеме теицят',
+'rcshowhidepatr' => '$1 кона патрульсэ витьни-петни',
+'rcshowhidemine' => '$1 мезе мон витнинь-петнинь',
+'rclinks' => 'Невтемс меельсе $1 полавтнемат меельсе $2 чинь перть<br />$3',
+'diff' => 'кадовикс',
+'hist' => 'ист',
+'hide' => 'Кекшемс',
+'show' => 'Невтемс',
+'minoreditletter' => 'а',
+'newpageletter' => 'О',
+'boteditletter' => 'б',
+'rc_categories_any' => 'Кодамо илязо уле',
+'newsectionsummary' => '/* $1 */ од пелькс',
+'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга (JavaScript эряви)',
+'rc-enhanced-hide' => 'Кекшемс келейстэ ёвтазенть',
# Recent changes linked
'recentchangeslinked' => 'Сюлмавозь лиякстоматне',
+'recentchangeslinked-feed' => 'Сюлмавозь лиякстоматне',
+'recentchangeslinked-toolbox' => 'Сюлмавозь лиякстоматне',
'recentchangeslinked-title' => 'Полавтнемат-лиякстомтомат конат кандовить теватезэнь "$1"',
'recentchangeslinked-noresult' => 'Максозь шкастонть кодаткак полавтовомат сюлмавозь лопатнесэ арасельть.',
'recentchangeslinked-summary' => "Тесэ максозь меельсе шкань витнемат-петнемат, конат теезельть башка максозь лопа вельде (эли категорияс совавтовиця тевнес). Ванома лопасот лопатне максозь '''эчкстэ тештезь'''",
@@ -1038,7 +1024,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Upload
'upload' => 'Ёкстамс файла',
'uploadbtn' => 'Йовксамс файланть',
-'reupload' => 'Тонгомс одов',
'uploadnologin' => 'Эзить сова',
'uploaderror' => 'Тонгомсто ильведькс',
'upload-permitted' => 'Файлань форматт, конат меревить: $1.',
@@ -1053,7 +1038,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'minlength1' => 'Файлалемесь аштезэ вейке эли седе ламо тешксттнэстэ.',
'badfilename' => 'Файланть лемесь полавтозь "$1"-кс.',
'filetype-missing' => 'Файланть арась поладкс пезэ (саемга «.jpg»).',
-'fileexists-thumb' => "<center>'''Уликс файла'''</center>",
'file-thumbnail-no' => "Файланть лемезэ ушодови '''<tt>$1</tt>'''.
Сонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.
Улиндеряй файланть покш верзиязо, йовкстыка сонзэ - арась, полавтыка тетень лемензэ.",
@@ -1065,20 +1049,30 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'overwroteimage' => 'Ёвкстамс "[[$1]]" файлань од версия',
'uploaddisabled' => 'Совавтомась лоткавтозь',
'uploadvirus' => 'Те файласонть вирус програм! Информация: $1',
+'upload-source' => 'Лисьмапрякс файла',
'sourcefilename' => 'Лисьмапря файланть лемезэ',
+'sourceurl' => 'Лисьмапрянть "URL" адресэзэ:',
'destfilename' => 'Теевиця файланть лемезэ',
'upload-maxfilesize' => 'Файлань покшолмазо иляссо юта: $1',
+'upload-description' => 'Файланть йовтамозо',
+'upload-options' => 'Йовкстамонь параметрат',
'watchthisupload' => 'Ваномс те лопанть мельга',
-'upload-proto-error' => 'Аволь истямо протокол',
-'upload-file-error' => 'Потмонь ильведькс',
-'upload-misc-error' => 'Файлань ёвкстамонь апак содань ильведевкс',
+'upload-proto-error' => 'Аволь истямо протокол',
+'upload-file-error' => 'Потмонь ильведькс',
+'upload-misc-error' => 'Файлань ёвкстамонь апак содань ильведевкс',
+'upload-too-many-redirects' => 'URL адрессэнть пек ламо печтевтемат',
+'upload-unknown-size' => 'Апак содань покшолмазо',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Совамось кардазь',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-эсь а кундави',
'upload-curl-error28' => 'Ёвкстамо шкась весиясь',
'license' => 'Лицензиянь теема:',
+'license-header' => 'Лицензиянь теема:',
'nolicense' => 'Лицензия арась',
'license-nopreview' => '(Васнянь невтевкс арась)',
'upload_source_file' => ' (арси машинасот файла)',
@@ -1095,6 +1089,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'listfiles_count' => 'Верзият',
# File description page
+'file-anchor-link' => 'Файла',
'filehist' => 'Файланть эрямопингезэ',
'filehist-help' => 'Лепштинк чиннть/шканть ланкс, сестэ вансынк коли файлось ульнесь теезь.',
'filehist-deleteall' => 'нардамс весе',
@@ -1109,17 +1104,14 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'filehist-dimensions' => 'Онкставкс',
'filehist-filesize' => 'Файланть покшолмазо',
'filehist-comment' => 'Мельполадкс',
+'filehist-missing' => 'Файлась арась',
'imagelinks' => 'Файлань сюлмавомапеть',
'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
'nolinkstoimage' => 'Арась вейкеяк лопа, кона сюлмавови те файланть марто.',
-'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Седе ламо информация эряви, вант, инеськеть $1.',
-'shareduploadwiki-linktext' => 'файладо йовтнема лопа',
-'noimage' => 'Кодамояк файла истямо лем марто арась. Ули мелеть $1.',
-'noimage-linktext' => 'йовкстык тень',
+'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.',
'uploadnewversion-linktext' => 'Тонгодо од версия те файланть',
-'shared-repo-from' => 'вана теньстэ $1', # $1 is the repository name
-'shared-repo' => 'вейтьсэнь ванстома тарка', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'вана теньстэ $1',
+'shared-repo' => 'вейтьсэнь ванстома тарка',
# File reversion
'filerevert' => 'Велявтомс $1 мекев',
@@ -1156,7 +1148,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Random page
'randompage' => 'Кодамо понгсь лопа',
-'randompage-nopages' => '"$1" лем потмосонть лопат арасть.',
+'randompage-nopages' => '{{PLURAL:$2|Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
# Random redirect
'randomredirect' => 'Апак фатя ёнксось',
@@ -1182,8 +1174,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'double-redirect-fixer' => 'Печтевтемс витнема-петнема пель',
'brokenredirects' => 'Сезезь ёнксось',
-'brokenredirects-edit' => '(витнеме-петнеме)',
-'brokenredirects-delete' => '(нардамс)',
+'brokenredirects-edit' => 'витнеме-петнеме',
+'brokenredirects-delete' => 'нардамс',
'withoutinterwiki' => 'Лопат келеньютковань невтевкснень теме',
'withoutinterwiki-summary' => 'Вана неть лопатне апак сюлма лия келень верзия марто:',
@@ -1272,12 +1264,15 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Special:Categories
'categories' => 'Категорият',
-'categoriespagetext' => 'Не категориятнесэ улить лопат эли медият.
+'categoriespagetext' => '{{PLURAL:$1|Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.
Истяжо ванытя [[Special:WantedCategories|вешень категориятнень]].',
'special-categories-sort-count' => 'аравтомс цётонь коряс',
'special-categories-sort-abc' => 'аравтомс альфавитэнь коряс',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'путовксонзо',
+
# Special:LinkSearch
'linksearch' => 'Ушонь сюлмавомапенеть',
'linksearch-pat' => 'Вешнемкс парцун:',
@@ -1287,6 +1282,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Special:ListUsers
'listusers-submit' => 'Невтемс',
'listusers-noresult' => 'Совицязо а муеви',
+'listusers-blocked' => '(саймас саезь)',
+
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Кекшемс ботатнень',
+'activeusers-hidesysops' => 'Кекшемс администратортнэнь',
+'activeusers-noresult' => 'Якинзэ-пакинзэ арасть',
# Special:Log/newusers
'newuserlogpage' => 'Теицянь шкамодо-теемадо конёв',
@@ -1356,10 +1357,11 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'exblank' => 'лопась чаволь',
'delete-confirm' => 'Нардамс "$1"',
'delete-legend' => 'Нардамс',
-'historywarning' => 'Ванок: Лопанть, конань пурнат нардамонзо улить лиякстомтомань икелькс уманзо:',
+'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат, лиякстомтомань икелькс $1 {{PLURAL:$1|умазо|уманзо}}:',
'confirmdeletetext' => 'Кундыть нардамо лопа (эли невтевкс-артовкс) вейтьсэ лиякстомтоматнеде икелькс уманзо марто.<br />
Инеськеть, кемекстык, эсеть мелеть коряс тень тейсак, алкукс содат, мезе лияды теде мейле, ды алкукс теят тень видечинть (правилатьнень) коряс, конат сёрмадозь [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Тевень теемась топавтовсь',
+'actionfailed' => 'Тев теемась эзь лисе',
'deletedtext' => '"<nowiki>$1</nowiki>"-сь ульнесь нардазь.
Вант $2 тосо веси уаль умоконь нардавксне.',
'deletedarticle' => 'нардазь "[[$1]]"',
@@ -1388,7 +1390,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'protectexpiry' => 'Прядови:',
'protect_expiry_invalid' => 'Прядома шкась ашти ютань шкасо.',
'protect_expiry_old' => 'Прядома шкась амаштовикс.',
-'protect-unchain' => 'Панжомс сыргамонь нолдамонть',
'protect-text' => "Тесэ тынь вансынк ды лиякстомсынк ванстоманть покшолманзо лопаньте '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Кирдицянь совамо таркат а максы видечи лиякстомтомс лопанть ванстома лувонзо. Тесэ вана лопанть уликс путовксонзо-аравтоманзо '''$1''':",
'protect-cascadeon' => 'Те лопась ванстозь, сон путозь {{PLURAL:$1|невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
@@ -1405,7 +1406,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'protect-othertime-op' => 'лия шка',
'protect-otherreason' => 'Лия/поладкс тувталось:',
'protect-otherreason-op' => 'лия/поладкс тувтал',
-'protect-expiry-options' => '1 час:1 hour,1 чи:1 day,1 тарго:1 week,2 таргот:2 weeks,1 ков:1 month,3 ковт:3 months,6 ковт:6 months,1 ие:1 year,певтеме:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 час:1 hour,1 чи:1 day,1 тарго:1 week,2 таргот:2 weeks,1 ков:1 month,3 ковт:3 months,6 ковт:6 months,1 ие:1 year,певтеме:infinite',
'restriction-type' => 'Нолдамо:',
'restriction-level' => 'Нолдавксонь покшизэ:',
'minimum-size' => 'Минимум кувалмозо',
@@ -1428,6 +1429,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'viewdeletedpage' => 'Ваномс нардазь лопатнень',
'undeletebtn' => 'Велявтомс мекев сенень, мезе ульнесь витнемадо-петнемадо икеле',
'undeletelink' => 'неемс/вельмевтемс',
+'undeleteviewlink' => 'ваномс',
'undeleteinvert' => 'Кочказень таркас апаконь кочкамо',
'undeletecomment' => 'Арсемат - мельть:',
'undeletedarticle' => 'вельмевтезь "[[$1]]"',
@@ -1458,6 +1460,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'sp-contributions-newbies-sub' => 'Од акаунтс',
'sp-contributions-blocklog' => 'Пекстамонь журналось',
'sp-contributions-logs' => 'журналт',
+'sp-contributions-talk' => 'кортнеме',
'sp-contributions-search' => 'Путовксонь вешнеме',
'sp-contributions-username' => 'IP адрес эли теицянь лем:',
'sp-contributions-submit' => 'Вешнэмс',
@@ -1481,6 +1484,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Block/unblock
'blockip' => 'Пекстамондо теицянть',
+'blockip-title' => 'Совицянть саймас саемс',
'blockip-legend' => 'Аравтомс теицянть саймас',
'ipaddress' => 'IP адрес:',
'ipadressorusername' => 'IP адрес эли теицянь лем:',
@@ -1489,7 +1493,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'ipbreasonotherlist' => 'Лия тувтал',
'ipbsubmit' => 'Озавтомс те теицянть саймес',
'ipbother' => 'Лия шка:',
-'ipboptions' => '2 част:2 hours,1 чи:1 day,3 чить:3 days,1 тарго:1 week,2 таргот:2 weeks,1 ков:1 month,3 ковт:3 months,6 ковт:6 months,1 ие:1 year,певтеме:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 част:2 hours,1 чи:1 day,3 чить:3 days,1 тарго:1 week,2 таргот:2 weeks,1 ков:1 month,3 ковт:3 months,6 ковт:6 months,1 ие:1 year,певтеме:infinite',
'ipbotheroption' => 'лия',
'ipbotherreason' => 'Лия/поладкс тувтал:',
'badipaddress' => 'Амаштовикс IP адрес',
@@ -1506,14 +1510,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'ipblocklist-username' => 'Совицянть лемезэ эли IP адресэзэ:',
'ipblocklist-submit' => 'Вешнэме',
'infiniteblock' => 'певтеме',
-'expiringblock' => 'прядови $1',
+'expiringblock' => 'саймас саемась прядови $1 $2 цяссто',
'anononlyblock' => 'ансяк лемтеме',
'blocklink' => 'блокось',
'unblocklink' => 'панжомс',
'change-blocklink' => 'полавтомадо сайма',
'contribslink' => 'лездыцят кить',
'blocklogpage' => 'Пекстамонь журналось',
-'blocklog-fulllog' => 'Саймас саемань журнал целанек',
'blocklogentry' => 'пектстамонзо [[$1]] ютазь шканть марто $2 $3',
'unblocklogentry' => 'сайместэ нолдазь $1',
'block-log-flags-anononly' => 'ансяк лемтеме теицятненень',
@@ -1560,7 +1563,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'move-watch' => 'Ваномс лопанть',
'movepagebtn' => 'Печтевтемс лопанть',
'pagemovedsub' => 'Лопась печтевтевсь',
-'movepage-moved' => "'''«$1»-сь печтевтезь «$2»-с'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1»-сь печтевтезь «$2»-с'''",
'articleexists' => 'Лопась истямо лем марто ули али невтезь тынк эйсэ лемесь анолдавиксев.<br />Инескеть, кочкадо лия лем.',
'talkexists' => "'''Сонсь лопась печтевтевсь, ансяк кортамонь лопась кодаяк эзь печтевтеве, вана мекс, истямо лем марто лопась ули. Инеськеть, пурныть сынст вейтьс кедьсэ.'''",
'movedto' => 'печтевтезь',
@@ -1591,10 +1594,16 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'export-templates' => 'Поладомс лопа парцунонтень',
# Namespace 8 related
-'allmessages' => 'Систэмань вишка сёрмадовкс',
-'allmessagesname' => 'Лемезэ',
-'allmessagescurrent' => 'Тевате текстэсь',
-'allmessagesmodified' => 'Невтемс ансяк мезе полавтозь',
+'allmessages' => 'Систэмань вишка сёрмадовкс',
+'allmessagesname' => 'Лемезэ',
+'allmessagescurrent' => 'Тевате текстэсь',
+'allmessages-filter-legend' => 'Сувтеме',
+'allmessages-filter-unmodified' => 'Апак одкстомто',
+'allmessages-filter-all' => 'Весе',
+'allmessages-filter-modified' => 'Одолгавтозь',
+'allmessages-prefix' => 'Икелькс валпень коряс сувтеме',
+'allmessages-language' => 'Келесь:',
+'allmessages-filter-submit' => 'Ютак',
# Thumbnails
'thumbnail-more' => 'Покшолгавтомс',
@@ -1648,6 +1657,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'tooltip-search-fulltext' => 'Лопатнестэ вешнемс истямо текст',
'tooltip-p-logo' => 'Прякс лопа',
'tooltip-n-mainpage' => 'Совака прякслопантень',
+'tooltip-n-mainpage-description' => 'Совамс прякс лопав',
'tooltip-n-portal' => 'Проектэнть эйстэ, мейсэ лездамс, косто мезе муемс',
'tooltip-n-currentevents' => 'Муинк совавикс информациянть неень событиятнесэ',
'tooltip-n-recentchanges' => 'Викисэ мезе чияк полавтовсь-лиякстомтовсь.',
@@ -1687,7 +1697,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Attribution
'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|теицязо|теицянзо}}',
'siteuser' => '{{SITENAME}}-нь теиця $1',
-'lastmodifiedatby' => 'Меельседе те лопанть полавтызе $3 $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Меельседе те лопанть полавтызе $3 $2, $1.',
'othercontribs' => '$1-нь важодеманзо лангс нежедезь.',
'others' => 'лият',
'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|теицязо|теицянзо}} $1',
@@ -1717,6 +1727,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'mw_math_modern' => 'Арьсезь неень шкань содый машинань вальмас',
'mw_math_mathml' => 'MathML косо ули кода (варчамонь)',
+# Math errors
+'math_failure' => 'А ловнови',
+'math_unknown_error' => 'апак содань ильведькс',
+'math_unknown_function' => 'апак содань функция',
+'math_lexing_error' => 'лексиконь манявкс',
+'math_syntax_error' => 'синтаксонь ильведевкс',
+
# Patrolling
'markaspatrolleddiff' => 'Тешкстамс ванстнемань ютазекс',
'markaspatrolledtext' => 'Тешкстамс те лопанть ванстнемань ютазекс',
@@ -1770,7 +1787,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Келе',
@@ -1819,11 +1836,11 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'exif-unknowndate' => 'Апак содань чи',
-'exif-orientation-1' => 'Свалшкань', # 0th row: top; 0th column: left
-'exif-orientation-3' => 'Велявтомс 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-5' => 'Чаравтозь 90° чинь каршо, мейле велявтозь прянзо лангс', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Чаравтозь 90° чи мельга', # 0th row: right; 0th column: top
-'exif-orientation-8' => 'Чаравтозь 90° чинь каршо', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Свалшкань',
+'exif-orientation-3' => 'Велявтомс 180°',
+'exif-orientation-5' => 'Чаравтозь 90° чинь каршо, мейле велявтозь прянзо лангс',
+'exif-orientation-6' => 'Чаравтозь 90° чи мельга',
+'exif-orientation-8' => 'Чаравтозь 90° чинь каршо',
'exif-componentsconfiguration-0' => 'арась',
@@ -1905,7 +1922,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'exif-gpsmeasuremode-2' => 'келес-кувалмс онкстамо',
'exif-gpsmeasuremode-3' => 'келес-кувалмс-сэрьс онкстамо',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Вайгельпеть цясозонзо',
'exif-gpsspeed-m' => 'Милат цясозонзо',
'exif-gpsspeed-n' => 'Сюлмот цясозонзо',
@@ -1924,6 +1941,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'watchlistall2' => 'весе',
'namespacesall' => 'весе',
'monthsall' => 'весе',
+'limitall' => 'весе',
# E-mail address confirmation
'confirmemail' => 'Кемекстамс е-почтань сёрмапаргот',
@@ -1984,14 +2002,14 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
'watchlisttools-raw' => 'Витнеме-петнеме верек ваномалопанть',
# Special:Version
-'version' => 'Версия', # Not used as normal message but as header for the special page itself
+'version' => 'Версия',
'version-specialpages' => 'Башка тевень лопат',
'version-variables' => 'Полавтневикс тевть',
'version-other' => 'Лия',
'version-hooks' => 'Кечказт',
'version-hook-name' => 'Кечказонть лемезэ',
'version-hook-subscribedby' => 'Сёрмадстызе',
-'version-version' => 'Версия',
+'version-version' => '(Версия $1)',
'version-license' => 'Лицензия',
'version-software' => 'Нолдань программат',
'version-software-product' => 'Шкавкс-нолдавкс',
@@ -2031,4 +2049,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
# Database error messages
'dberr-header' => 'Те викисэнть проблема',
+# HTML forms
+'htmlform-selectorother-other' => 'Лия',
+
);
diff --git a/languages/messages/MessagesMzn.php b/languages/messages/MessagesMzn.php
index 05a2d819..bb53c4a5 100644
--- a/languages/messages/MessagesMzn.php
+++ b/languages/messages/MessagesMzn.php
@@ -13,6 +13,8 @@
* @author محک
*/
+$fallback = 'fa';
+
$linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
@@ -24,7 +26,53 @@ $defaultUserOptionOverrides = array(
'underline' => 0,
);
-$fallback = 'fa';
+$namespaceNames = array(
+ NS_MEDIA => 'مه‌دیا',
+ NS_SPECIAL => 'شا',
+ NS_TALK => 'گپ',
+ NS_USER => 'کارور',
+ NS_USER_TALK => 'کارور گپ',
+ NS_PROJECT_TALK => '$1 گپ',
+ NS_FILE => 'پرونده',
+ NS_FILE_TALK => 'پرونده گپ',
+ NS_MEDIAWIKI => 'مه‌دیاویکی',
+ NS_MEDIAWIKI_TALK => 'مه‌دیاویکی گپ',
+ NS_TEMPLATE => 'شابلون',
+ NS_TEMPLATE_TALK => 'شابلون گپ',
+ NS_HELP => 'رانه‌ما',
+ NS_HELP_TALK => 'رانه‌مائه گپ',
+ NS_CATEGORY => 'رج',
+ NS_CATEGORY_TALK => 'رج گپ',
+);
+
+$namespaceAliases = array(
+ 'مدیا' => NS_MEDIA,
+ 'ویژه' => NS_SPECIAL,
+ 'بحث' => NS_TALK,
+ 'کاربر' => NS_USER,
+ 'بحث_کاربر' => NS_USER_TALK,
+ 'بحث_$1' => NS_PROJECT_TALK,
+ 'تصویر' => NS_FILE,
+ 'پرونده' => NS_FILE,
+ 'بحث_تصویر' => NS_FILE_TALK,
+ 'بحث_پرونده' => NS_FILE_TALK,
+ 'مدیاویکی' => NS_MEDIAWIKI,
+ 'مه‌دیا ویکی' => NS_MEDIAWIKI,
+ 'بحث_مدیاویکی' => NS_MEDIAWIKI_TALK,
+ 'مه‌دیا ویکی گپ' => NS_MEDIAWIKI_TALK,
+ 'الگو' => NS_TEMPLATE,
+ 'بحث_الگو' => NS_TEMPLATE_TALK,
+ 'راهنما' => NS_HELP,
+ 'بحث_راهنما' => NS_HELP_TALK,
+ 'رانه‌مای گپ' => NS_HELP_TALK,
+ 'رده' => NS_CATEGORY,
+ 'بحث_رده' => NS_CATEGORY_TALK,
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#بور', '#تغییرمسیر', '#REDIRECT' ),
+ 'numberofpages' => array( '1', 'تعدادصفحه‌ها', 'تعداد_صفحه‌ها', 'ولگ‌ئون نمره', 'وألگ‌ئون نومره', 'NUMBEROFPAGES' ),
+);
$messages = array(
# User preference toggles
@@ -55,6 +103,7 @@ $messages = array(
'tog-enotifminoredits' => 'هرگادر صحه ها دله اتا خورد چی ره عوض هکردنه مه وسّه ایمیل بزن',
'tog-enotifrevealaddr' => 'منه ایمیل نامه ئون ایطیلاع رسونی دله دواشه',
'tog-shownumberswatching' => 'نشون هدائن کارورن دمبال کوننده',
+'tog-oldsig' => 'پیش نیمایش ایمضای موجود:',
'tog-fancysig' => 'ایمضا ره ویکی متن نظر بیرین (بدون لینک هایتن)',
'tog-externaleditor' => 'به شیکل پیش فرض خارجی ویرایشگرون جه ایستیفاده بواشه',
'tog-externaldiff' => 'ایستیفاده از تفاوت‌گیر جه (diff) خارجی به‌طور پیش‌فرض.',
@@ -73,6 +122,12 @@ $messages = array(
'underline-default' => 'مه چأرخ‌گأر ده‌لخاء',
+# Font style option in Special:Preferences
+'editfont-default' => 'مه چأرخ‌گأر ده‌لخاء',
+'editfont-monospace' => 'فونت Monospaced',
+'editfont-sansserif' => 'فونت Sans-serif',
+'editfont-serif' => 'فونت Serif',
+
# Dates
'sunday' => 'یه‌شنبه',
'monday' => 'دِشنبه',
@@ -133,9 +188,17 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|ای رج هأمـینـتا وألـگ ره داره‌نه.|ای {{PLURAL:$1ولگ|ولگ|$1 ئون}}، $2 جه ایجه دأره‌نه.}}',
'listingcontinuesabbrev' => '(دمباله)',
-'about' => 'ده‌لـه‌واره',
-'newwindow' => '(ته‌رنه‌ روجین ده‌له‌ وا بونه)',
-'cancel' => 'وه‌ل هـه‌کـارده‌ن',
+'about' => 'ده‌لـه‌واره',
+'newwindow' => '(ته‌رنه‌ روجین ده‌له‌ وا بونه)',
+'cancel' => 'وه‌ل هـه‌کـارده‌ن',
+'moredotdotdot' => 'ویـشـتـه...',
+'mypage' => 'مه ولگ',
+'mytalk' => 'مه گپ',
+'anontalk' => 'گپ بزوئن اینتا آی‌پی وسّه',
+'navigation' => 'چـأرخـه‌سـه‌ن',
+'and' => '&#32;و',
+
+# Cologne Blue skin
'qbfind' => 'پیدا هکردن',
'qbbrowse' => 'چأرخه‌سه‌ن',
'qbedit' => 'دأچیه‌ن',
@@ -143,12 +206,23 @@ $messages = array(
'qbpageinfo' => 'بافت',
'qbmyoptions' => 'مـه وألـگ‌ئون',
'qbspecialpages' => 'شا ولگ ئون',
-'moredotdotdot' => 'ویـشـتـه...',
-'mypage' => 'مه ولگ',
-'mytalk' => 'مه گپ',
-'anontalk' => 'گپ بزوئن اینتا آی‌پی وسّه',
-'navigation' => 'چـأرخـه‌سـه‌ن',
-'and' => '&#32;و',
+'faq' => 'معمولی سوالا',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'ایضافه هکردن عونوان',
+'vector-action-delete' => 'پاک هاکردن',
+'vector-action-move' => 'دکش هاکردن',
+'vector-action-protect' => 'موحافظت',
+'vector-action-undelete' => 'دباره بنویشته بیّن',
+'vector-action-unprotect' => 'موحافظت نکاردن',
+'vector-namespace-category' => 'رج',
+'vector-namespace-help' => 'دأسـگـیری وألـگ',
+'vector-namespace-image' => 'پرونده',
+'vector-namespace-main' => 'صحفه',
+'vector-view-history' => 'چـه‌کوت ئـه‌شـه‌نـه‌ن',
+'vector-view-view' => 'بأخـونـه‌سـه‌ن',
+'vector-view-viewsource' => 'چـه‌شــمـه ئـه‌شـه‌نـه‌ن',
'errorpagetitle' => 'شه‌ت!',
'returnto' => 'وأرگه‌رده‌سه‌ن تا $1',
@@ -183,7 +257,7 @@ $messages = array(
'otherlanguages' => 'دیـگـه زیوون‌ئون',
'redirectedfrom' => '(به‌مونه $1 جه)',
'lastmodifiedat' => 'ای ولـگ ره پایانی جور هکاردن ره بنه وخت ره وند بونه:
-$2، $1', # $1 date, $2 time
+$2، $1',
'jumpto' => 'کـأپـتـه تـا:',
'jumptonavigation' => 'چـأرخـه‌سـه‌ن',
'jumptosearch' => 'چـأرخـه‌تـو',
@@ -198,13 +272,12 @@ $2، $1', # $1 date, $2 time
'disclaimerpage' => 'Project:تکذیب‌نومهٔ همه‌گونی',
'edithelp' => 'دأچـیه‌ن ره رانـه‌ما',
'edithelppage' => 'رونما:دَچی‌ین',
-'faq' => 'معمولی سوالا',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:رونما',
'mainpage' => 'گت ولگ',
'mainpage-description' => 'گت ولگ',
'policy-url' => 'Project:سیاستون',
'portal' => 'مازرون دأروازه',
+'portal-url' => 'Project:کارورون لوش',
'privacy' => 'کاری رول',
'privacypage' => 'Project:Privacy_policy',
@@ -270,43 +343,33 @@ $2، $1', # $1 date, $2 time
'viewsourcefor' => '$1 ره وسه',
# Login and logout pages
-'welcomecreation' => '<h2>$1، خـه‌ش بـه‌مـونـی!</h2><p>شه‌مه حساب/ئـه‌کانت وا بأیه! یاد نه‌کانه‌نین که شه خواسته‌نی ئون ره {{SITENAME}} ده‌له ده‌رست هاکنین.',
-'yourname' => 'کاروری‌نوم:',
-'yourpassword' => 'پـأس‌واجـه',
-'yourpasswordagain' => 'پسورد ره دِباره بنویس',
-'remembermypassword' => 'مـه کاروری نوم ئو پـأس‌واجه ره، ای کـامـپـیـوتـه‌ر ده‌لـه وه‌سـه، شـه یـاد بیـه‌ل',
-'yourdomainname' => 'شمه کاروری نوم',
-'login' => 'ده‌لـه بـوری',
-'nav-login-createaccount' => 'ده‌لـه‌بـوری / ئـه‌کـانـت بـأئـیـتـه‌ن',
-'loginprompt' => '{{SITENAME}} ره ده‌لـه بیـه‌موئـه‌ن وه‌سه، وه‌نـه cookieئون کـارسأر بـوئـه‌ن.',
-'userlogin' => 'ده‌لـه‌بـوری / اکـانـت بـأئـیـتـه‌ن',
-'logout' => 'دأیابـوری',
-'userlogout' => 'دأیابـوری',
-'notloggedin' => 'سیستم ره دله نی یه موئین',
-'nologin' => 'ئـه‌کـانـت نـه‌دارنـه‌نی؟ $1.',
-'nologinlink' => 'أتـا ئـه‌کـانـت وا هـه‌کـارده‌ن',
-'createaccount' => 'ترنه حساب وا هکاردن',
-'gotaccount' => 'ئـه‌سـا ئـه‌کانت دارنـه‌نی؟ $1.',
-'gotaccountlink' => 'ده‌لـه بـوری',
-'createaccountmail' => 'Email ره هه‌مرا',
-'youremail' => 'شه مه Email:',
-'username' => 'کاروری نوم:',
-'uid' => 'کاروری إشماره:',
-'yourrealname' => 'شیمه راستین ره نوم :',
-'yourlanguage' => 'زیوون:',
-'badsig' => 'ایمضا بی اعتبار هسه. html کودون ره أی هارشین.',
-'email' => 'رایانومه',
-'prefs-help-realname' => 'اصلی نوم اختیاری هسه. اگه شه‌ما بنویسین شمه کارون ونه جا ثبت بونه.',
-'loginerror' => 'ده‌له بوری إشه‌ت',
-'prefs-help-email' => 'ایمیل اختیاری هسه. ولی أگه شه‌ما شه پاس واجه ره یات بکه‌رده‌نی نو پاس واژه شه‌مه ایمیل سر راهی بونه. شما همچه‌نین تونه‌نی به‌لین که دیگه کارورون شمه سر کاروری ولگ ئو کاروری گپ جاایمیل بأزه‌نه‌ن بی اونکه شه‌مه ایمیل سو دأکه‌فه.',
-'prefs-help-email-required' => 'ایمیل نه‌شونی لازم هسه.',
-'nocookiesnew' => 'کاروری إکانت به‌سات بئی بیه. ولی شه‌ما ده‌له نأشینی. {{SITENAME}} کوکی‌ئون ره کارورون ده‌له بوری سر کار زننه. شه‌ما کوکی‌ئون ره پاک هأکه‌نین. شه‌ما جا خائه‌ش دارمی که کوکی‌ئون ره کار به‌لین ئو سیسته‌م ره نو کاروری نوم ئو پاس واجه جا ده‌له بورین.',
-'nocookieslogin' => '‏{{SITENAME}} کوکی‌ئون ره کارورون دله بوردن سر کار زأننه. شه‌ما جا خائه‌ش دارمی که وه‌شون ره کار به‌لین ئو ده‌باره سأئی هکه‌نین.‎‎',
-'loginsuccess' => "'''شـه‌مـا، ئـه‌سـا {{SITENAME}} درون؛ \"\$1\" نـوم مـونـا بی‌یه‌موئه‌نی.'''",
-'nouserspecified' => 'شه‌ما وه‌نه أتا کارور نوم هادی.',
-'mailmypassword' => 'اتـا نـه پـأس‌واجـه بـه‌سـاتـه‌ن ئو بـأره‌سـه‌نـده‌ن',
-'accountcreated' => 'کاروری نوم/ئه‌کانت وا بأیه',
-'accountcreatedtext' => 'کاروری نوم، $1 وه‌سه وا بأیه.',
+'welcomecreation' => '<h2>$1، خـه‌ش بـه‌مـونـی!</h2><p>شه‌مه حساب/ئـه‌کانت وا بأیه! یاد نه‌کانه‌نین که شه خواسته‌نی ئون ره {{SITENAME}} ده‌له ده‌رست هاکنین.',
+'yourname' => 'کاروری‌نوم:',
+'yourpassword' => 'پـأس‌واجـه',
+'yourpasswordagain' => 'پسورد ره دِباره بنویس',
+'remembermypassword' => 'مـه کاروری نوم ئو پـأس‌واجه ره، ای کـامـپـیـوتـه‌ر ده‌لـه وه‌سـه، شـه یـاد بیـه‌ل',
+'yourdomainname' => 'شمه کاروری نوم',
+'login' => 'ده‌لـه بـوری',
+'nav-login-createaccount' => 'ده‌لـه‌بـوری / ئـه‌کـانـت بـأئـیـتـه‌ن',
+'loginprompt' => '{{SITENAME}} ره ده‌لـه بیـه‌موئـه‌ن وه‌سه، وه‌نـه cookieئون کـارسأر بـوئـه‌ن.',
+'userlogin' => 'ده‌لـه‌بـوری / اکـانـت بـأئـیـتـه‌ن',
+'logout' => 'دأیابـوری',
+'userlogout' => 'دأیابـوری',
+'notloggedin' => 'سیستم ره دله نی یه موئین',
+'nologin' => 'ئـه‌کـانـت نـه‌دارنـه‌نی؟ $1.',
+'nologinlink' => 'أتـا ئـه‌کـانـت وا هـه‌کـارده‌ن',
+'createaccount' => 'ترنه حساب وا هکاردن',
+'gotaccount' => 'ئـه‌سـا ئـه‌کانت دارنـه‌نی؟ $1.',
+'gotaccountlink' => 'ده‌لـه بـوری',
+'createaccountmail' => 'Email ره هه‌مرا',
+'loginerror' => 'ده‌له بوری إشه‌ت',
+'nocookiesnew' => 'کاروری إکانت به‌سات بئی بیه. ولی شه‌ما ده‌له نأشینی. {{SITENAME}} کوکی‌ئون ره کارورون ده‌له بوری سر کار زننه. شه‌ما کوکی‌ئون ره پاک هأکه‌نین. شه‌ما جا خائه‌ش دارمی که کوکی‌ئون ره کار به‌لین ئو سیسته‌م ره نو کاروری نوم ئو پاس واجه جا ده‌له بورین.',
+'nocookieslogin' => '‏{{SITENAME}} کوکی‌ئون ره کارورون دله بوردن سر کار زأننه. شه‌ما جا خائه‌ش دارمی که وه‌شون ره کار به‌لین ئو ده‌باره سأئی هکه‌نین.‎‎',
+'loginsuccess' => "'''شـه‌مـا، ئـه‌سـا {{SITENAME}} درون؛ \"\$1\" نـوم مـونـا بی‌یه‌موئه‌نی.'''",
+'nouserspecified' => 'شه‌ما وه‌نه أتا کارور نوم هادی.',
+'mailmypassword' => 'اتـا نـه پـأس‌واجـه بـه‌سـاتـه‌ن ئو بـأره‌سـه‌نـده‌ن',
+'accountcreated' => 'کاروری نوم/ئه‌کانت وا بأیه',
+'accountcreatedtext' => 'کاروری نوم، $1 وه‌سه وا بأیه.',
# Edit page toolbar
'bold_sample' => 'کأفتال ته‌کست',
@@ -346,13 +409,24 @@ $2، $1', # $1 date, $2 time
'blockednoreason' => 'معلوم نی‌یه چچی وسه اینتی بیّه!',
'whitelistedittitle' => 'جور هکاردن ره وسه ونه سیستم ره دله ئه نین',
'newarticle' => '(ته‌رنه)',
+'blocked-notice-logextract' => 'دسترسی اینتا کارور الآن دوستوئه.
+آخرین مورد سیاهه قطع دسترسی زیر بموئه:',
'previewnote' => "'''شه‌مه یاد بوئه که اینتا أتا پیش‌نه‌مایه‌ش هأسه.'''
شه‌مه ده‌گه‌ره‌سه‌ن‌ئون جانأکه‌فته که وه‌نه، جادأکه‌فته‌ن تگمه ره بأزه‌نین!",
'editing' => 'دچیه‌ن => $1',
'editingsection' => 'دچیه‌ن $1 (تیکه)',
'copyrightwarning' => 'خـاهـه‌ش بـونـه شـه یـاد ده‌لـه دأکـه‌نـیـن کـه هـأمـه کـایـه‌رئونی کـه {{SITENAME}} ده‌لـه بـونـه، $2 جـیـر ره‌هـا بـونـه. (ویـشـتـه‌ر وه‌سـه $1 ره بـأویـنـیـن)<br />
أگـه نـه‌خـانـه‌نـی شـه‌مـه بـأنـویـشـتـه‌ئون ایـجـه دسـت بـأخـوره ئو أتـا جـا دیـگـه پـخـش بـأوه، بـه‌تـه‌ر هـأسـه کـه وه‌شـون ره ایـجـه نـیـه‌لـیـن.',
+'templatesused' => 'شـابـلـون‌ئـونی که ای ولـگ ده‌له کـار بـورده‌نـه:',
+'templatesusedpreview' => 'شـابـلـون‌ئونی کی ای پـیـش‌نـه‌مـایـه‌ش ده‌لـه کـار بـورده‌نـه:',
'permissionserrorstext-withaction' => 'ته اجازهٔ $2 ره به {{PLURAL:$1|دلیل|دلایل}} رو به رو ندانی:',
+'recreate-moveddeleted-warn' => "'''هشدار: ته دری اتا صفحه ره نویسنی که قبلا پاک بیّه.'''
+
+شه فکر هاکن که اینتا کار که دری کانده درسته یا نا؟
+اینجه توندی پاک بیی صفحه ره هارشی:",
+'moveddeleted-notice' => 'اینتا صفحه پاک بی بی‌یه
+اینجه بتوندی قبلی صفحه که پاک بیّه ره هارشی',
+'log-fulllog' => 'بدی‌ین سیاهه کامل',
'edit-gone-missing' => '.شما نتوندی صفحه ره دباره هارشی
احتمالا صفحه پاک بیه.',
'edit-conflict' => 'دِ نفر با هم درنه نویسنه.
@@ -381,7 +455,9 @@ $2، $1', # $1 date, $2 time
'searchresults' => 'چرخه‌توی هه‌دایی‌ئون',
'searchsubtitle' => 'شـه‌مـا \'\'\'[[:$1]]\'\'\' ره ده‌مـبـال بـورده‌نـی ([[Special:Prefixindex/$1|هـأمـه ولـگ‌ئونـی کـه وه‌شـون نـوم "$1" هـه‌مـرا سـأر گـیـرنـه ره بـأویـنـه‌ن]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|هـأمه ولـگ‌ئونـی که "$1" ره لـیـنـک وه‌شـون ده‌لـه دأره]])',
'notitlematches' => 'هـیـچ ولـگـی شه‌مه گـب ره نـه‌مـاسـتـه',
-'viewprevnext' => 'بـأویـنـه‌ن ($1) ($2) ($3)',
+'prevn' => 'پـیـشـیـن {{PLURAL:$1|$1}}',
+'nextn' => 'پـأسـیـن {{PLURAL:$1|$1}}',
+'viewprevnext' => 'بـأویـنـه‌ن ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 واجه|$2 واجه}})',
'search-redirect' => '(بـأره‌سـیـه $1 جـه)',
'search-section' => '(تیکه $1)',
@@ -390,7 +466,6 @@ $2، $1', # $1 date, $2 time
'search-interwiki-more' => '(ویشته‌ر)',
'search-mwsuggest-enabled' => 'پیشنهاد هه‌مرا',
'search-mwsuggest-disabled' => 'هیچ پیشنهادی دنیه',
-'showingresultstotal' => "نـه‌شـون هـه‌دائـه‌ن {{PLURAL:$4|نتیجه '''$1'''، '''$3''' جه|نتیجه‌ئون '''$1 - $2'''، '''$3''' جه}}",
'powersearch' => 'سه‌ره‌ک به‌نه‌ک (پیـش‌بـورده چـأرخـه‌تو)',
'powersearch-legend' => 'سه‌ره‌ک به‌نه‌ک (پیـش‌بـورده چـأرخـه‌تو)',
'powersearch-ns' => 'سه‌ره‌ک به‌نه‌ک، نوم‌جائون ده‌له:',
@@ -398,9 +473,19 @@ $2، $1', # $1 date, $2 time
'powersearch-field' => 'سه‌ره‌ک به‌نه‌ک',
# Preferences page
-'mypreferences' => 'مـه خـاسـته‌نی‌ئون',
-'prefs-edits' => 'نومـه‌ره دأچیه‌ن‌ئون:',
-'prefsnologin' => 'سیـستـه‌م ره ده‌لـه نـی‌یـه‌نـی',
+'mypreferences' => 'مـه خـاسـته‌نی‌ئون',
+'prefs-edits' => 'نومـه‌ره دأچیه‌ن‌ئون:',
+'prefsnologin' => 'سیـستـه‌م ره ده‌لـه نـی‌یـه‌نـی',
+'youremail' => 'شه مه Email:',
+'username' => 'کاروری نوم:',
+'uid' => 'کاروری إشماره:',
+'yourrealname' => 'شیمه راستین ره نوم :',
+'yourlanguage' => 'زیوون:',
+'badsig' => 'ایمضا بی اعتبار هسه. html کودون ره أی هارشین.',
+'email' => 'رایانومه',
+'prefs-help-realname' => 'اصلی نوم اختیاری هسه. اگه شه‌ما بنویسین شمه کارون ونه جا ثبت بونه.',
+'prefs-help-email' => 'ایمیل اختیاری هسه. ولی أگه شه‌ما شه پاس واجه ره یات بکه‌رده‌نی نو پاس واژه شه‌مه ایمیل سر راهی بونه. شما همچه‌نین تونه‌نی به‌لین که دیگه کارورون شمه سر کاروری ولگ ئو کاروری گپ جاایمیل بأزه‌نه‌ن بی اونکه شه‌مه ایمیل سو دأکه‌فه.',
+'prefs-help-email-required' => 'ایمیل نه‌شونی لازم هسه.',
# User rights
'userrights-user-editname' => 'کارور نوم ره بنویش هاکنین',
@@ -438,8 +523,10 @@ $2، $1', # $1 date, $2 time
'boteditletter' => 'ربوت',
# Recent changes linked
-'recentchangeslinked' => 'واری دأچیـه‌ن‌ئون',
-'recentchangeslinked-page' => 'ولـگ نـوم:',
+'recentchangeslinked' => 'واری دأچیـه‌ن‌ئون',
+'recentchangeslinked-feed' => 'واری دچیه‌ن‌ئون',
+'recentchangeslinked-toolbox' => 'واری دچیه‌ن‌ئون',
+'recentchangeslinked-page' => 'ولـگ نـوم:',
# Upload
'upload' => 'بـاربیـه‌شـتـه‌ن فـایـل',
@@ -454,6 +541,7 @@ $2، $1', # $1 date, $2 time
'listfiles_size' => 'گـأتـی',
# File description page
+'file-anchor-link' => 'فایل',
'filehist' => 'فایل چه‌کوت',
'filehist-current' => 'ئـه‌سـا',
'filehist-datetime' => 'تاریخ/زأمون',
@@ -542,11 +630,12 @@ $2، $1', # $1 date, $2 time
'dellogpage' => 'وربأئیته‌نه‌ئون گوزارش',
# Rollback
-'rollback' => 'واچیه‌ن دأچیه‌ن‌ئون',
-'rollback_short' => 'واچیه‌ن',
-'rollbacklink' => 'واچیه‌ن',
-'revertpage' => '"چـیـزونی که [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که [[User:$1|$1]] ای وألگ ده‌لـه، پـایـانی بـار هـه‌کـارده"', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'چـیـزونی که $1 دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که $2 پـایـانی دأچـیـه‌ن ده‌لـه هـه‌کـارده',
+'rollback' => 'واچیه‌ن دأچیه‌ن‌ئون',
+'rollback_short' => 'واچیه‌ن',
+'rollbacklink' => 'واچیه‌ن',
+'revertpage' => '"چـیـزونی که [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که [[User:$1|$1]] ای وألگ ده‌لـه، پـایـانی بـار هـه‌کـارده"',
+'revertpage-nouser' => '"چـیـزونی که (وه‌نـه کـاروری نـوم پـاک بـأیـه) دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که [[User:$1|$1]] پـایـانی دأچـیـه‌ن ده‌لـه هـه‌کـارده"',
+'rollback-success' => 'چـیـزونی که $1 دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که $2 پـایـانی دأچـیـه‌ن ده‌لـه هـه‌کـارده',
# Undelete
'undeletelink' => 'بـأویـنـه‌ن / ده‌واره جـا بـیـه‌شـتـه‌ن',
@@ -564,6 +653,7 @@ $2، $1', # $1 date, $2 time
'uctop' => '(سه‌ر)',
'sp-contributions-newbies' => 'نـه وا بـأیـه ئـه‌کـانـت‌ئون دأچـیـه‌ن‌ئون ره نـه‌شـون هـاده',
+'sp-contributions-talk' => 'گپ',
'sp-contributions-username' => 'IP نـه‌شـونـی یا کـاروری‌نوم',
'sp-contributions-submit' => 'چـأرخـه‌تـو',
@@ -588,7 +678,7 @@ $2، $1', # $1 date, $2 time
# Move page
'newtitle' => 'ته‌رنـه نـوم:',
-'movepage-moved' => "'''ای «$1» ولـگ، بورده «$2» ره.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''ای «$1» ولـگ، بورده «$2» ره.'''",
'movetalk' => '«گپ» ولـگ هم، اگه بونه، بوره.',
'1movedto2' => '[[$1]] بـورده [[$2]] ره',
'revertmove' => 'واچـیـه‌ن',
@@ -604,47 +694,48 @@ $2، $1', # $1 date, $2 time
'import-interwiki-submit' => 'بیاردن',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'مه کاروری ولـگ',
-'tooltip-pt-mytalk' => 'مه گب ولـگ',
-'tooltip-pt-preferences' => 'مه خواسته‌نی‌ئون',
-'tooltip-pt-watchlist' => 'لیست ولـگ‌ئونی که وه‌شون ره دچیه‌ن‌ئون وه‌سه ده‌مـبـال که‌نده‌نی',
-'tooltip-pt-mycontris' => 'مه کایه‌رئون ره لیست',
-'tooltip-pt-login' => 'شه‌ما به‌ته‌ر هـأسـه که سـیـسـتـه‌م ده‌لـه بـیـه‌ئی، هـرچـأن زوری نـیـه',
-'tooltip-pt-logout' => 'سیستم جه دأیابـوری',
-'tooltip-ca-talk' => 'ولـگ ده‌له‌واره گب بأزوئه‌ن',
-'tooltip-ca-edit' => 'شه‌ما به‌تونده‌نی ای ولـگ ره دأچیه‌نی.
+'tooltip-pt-userpage' => 'مه کاروری ولـگ',
+'tooltip-pt-mytalk' => 'مه گب ولـگ',
+'tooltip-pt-preferences' => 'مه خواسته‌نی‌ئون',
+'tooltip-pt-watchlist' => 'لیست ولـگ‌ئونی که وه‌شون ره دچیه‌ن‌ئون وه‌سه ده‌مـبـال که‌نده‌نی',
+'tooltip-pt-mycontris' => 'مه کایه‌رئون ره لیست',
+'tooltip-pt-login' => 'شه‌ما به‌ته‌ر هـأسـه که سـیـسـتـه‌م ده‌لـه بـیـه‌ئی، هـرچـأن زوری نـیـه',
+'tooltip-pt-logout' => 'سیستم جه دأیابـوری',
+'tooltip-ca-talk' => 'ولـگ ده‌له‌واره گب بأزوئه‌ن',
+'tooltip-ca-edit' => 'شه‌ما به‌تونده‌نی ای ولـگ ره دأچیه‌نی.
خوائه‌ش که‌مبی پیش‌نه‌مایه‌ش تگمه ره ته‌له‌مبار پیش بأزه‌نین.',
-'tooltip-ca-addsection' => 'أتـا نـه گـب را دأکـه‌تـه‌ن',
-'tooltip-ca-viewsource' => 'ای ولـگ ره نه‌تونده‌نی دأچیه‌نی.
+'tooltip-ca-addsection' => 'أتـا نـه گـب را دأکـه‌تـه‌ن',
+'tooltip-ca-viewsource' => 'ای ولـگ ره نه‌تونده‌نی دأچیه‌نی.
شه‌ما به‌تونده‌نی وه‌نه چه‌شمه ره بأوینی.',
-'tooltip-ca-history' => 'کـوهـنـه ده‌گـه‌ره‌سـه‌ئـونی کـه ای ولـگ ده‌لـه دأکـه‌تـه',
-'tooltip-ca-delete' => 'ای ولـگ ره وربـأئـیـتـه‌ن',
-'tooltip-ca-watch' => 'ای ولـگ ره شه هارشالیست بأبه‌رده‌ن',
-'tooltip-search' => '{{SITENAME}} ره چـأرخـه‌تـو',
-'tooltip-search-go' => 'بـور اتـا ولـگـی کـه وه‌نـه نـوم هـأمـیـنـتـا بـوئـه',
-'tooltip-search-fulltext' => 'ولـگ‌ئـون ره ایـنـتـا تـه‌کـسـت وه‌سـه چـأرخ بـأزوئـه‌ن',
-'tooltip-p-logo' => 'گـأت وألـگ ره ئـه‌شـه‌نـه‌ن',
-'tooltip-n-mainpage' => 'بأویـنـه‌ن گـت ولـگ',
-'tooltip-n-portal' => 'په‌روجه ده‌له‌واره، چه‌شی به‌توده‌نی هاکه‌نی ئو که‌جه چیزئون ره بأره‌سی',
-'tooltip-n-currentevents' => 'تازه چی‌ئون ده‌له‌واره دونه‌سه‌ن',
-'tooltip-n-recentchanges' => 'ای ویکی ده‌له، ئه‌سا دچیه‌نون ره لیست',
-'tooltip-n-randompage' => 'أتـا شـانـسـی وألـگ بـیـارده‌ن',
-'tooltip-n-help' => 'أتـا جـا کـه...',
-'tooltip-t-whatlinkshere' => 'هأمو ولـگ‌ئونی که ایجه ره لینک هه‌دانه',
-'tooltip-t-recentchangeslinked' => 'ئـه‌سـائـی ده‌گـه‌ره‌سـه‌ئون ولـگ‌ئونی ده‌له، کـه ای ولـگ جـه لـیـنـک دارنـه‌نـه',
-'tooltip-feed-rss' => 'RSS خه‌راک ای ولـگ وه‌سه',
-'tooltip-feed-atom' => 'Atom خه‌راک ای ولـگ وه‌سه',
-'tooltip-t-emailuser' => 'ای کـارور ره اتـا ئـه‌لـه‌کـتـه‌رونـیـکـی‌نـومـه راهـی هـه‌کـارده‌ن',
-'tooltip-t-upload' => 'بـاربـیـه‌شـتـه‌ن فـایـل‌ئون',
-'tooltip-t-specialpages' => 'هأمـه شـا ولـگ‌ئون ره لـیـسـت',
-'tooltip-t-print' => 'پـه‌ریـنـت هـه‌کـارده‌نـی ولـگ ده‌گـه‌ره‌سـه‌ن',
-'tooltip-t-permalink' => 'مـونـده‌سـه‌نـی لـیـنـک ای ولـگ ره ایـنـتـا بـه‌تـیـم وه‌سـه',
-'tooltip-ca-nstab-main' => 'بـأویـنـه‌ن ولـگ',
-'tooltip-ca-nstab-user' => 'کاروری ولـگ بأویـنه‌ن',
-'tooltip-ca-nstab-special' => 'اینتا أتا شـا ولـگ هأسه که شه‌ما نه‌تونده‌نی وه‌نه به‌تیم ره دأچیه‌نی',
-'tooltip-ca-nstab-image' => 'وه‌نـه وألـگ ره بـأویـنـه‌ن',
-'tooltip-ca-nstab-template' => 'شـابـلـون بـأویـنـه‌ن',
-'tooltip-preview' => 'شـه ده‌گـه‌ره‌سـه‌ئون ره پـیـشـاپـیـش بـأویـنـه‌ن،
+'tooltip-ca-history' => 'کـوهـنـه ده‌گـه‌ره‌سـه‌ئـونی کـه ای ولـگ ده‌لـه دأکـه‌تـه',
+'tooltip-ca-delete' => 'ای ولـگ ره وربـأئـیـتـه‌ن',
+'tooltip-ca-watch' => 'ای ولـگ ره شه هارشالیست بأبه‌رده‌ن',
+'tooltip-search' => '{{SITENAME}} ره چـأرخـه‌تـو',
+'tooltip-search-go' => 'بـور اتـا ولـگـی کـه وه‌نـه نـوم هـأمـیـنـتـا بـوئـه',
+'tooltip-search-fulltext' => 'ولـگ‌ئـون ره ایـنـتـا تـه‌کـسـت وه‌سـه چـأرخ بـأزوئـه‌ن',
+'tooltip-p-logo' => 'گـأت وألـگ ره ئـه‌شـه‌نـه‌ن',
+'tooltip-n-mainpage' => 'بأویـنـه‌ن گـت ولـگ',
+'tooltip-n-mainpage-description' => 'گـأت وألـگ ره ئـه‌شـه‌نـه‌ن',
+'tooltip-n-portal' => 'په‌روجه ده‌له‌واره، چه‌شی به‌توده‌نی هاکه‌نی ئو که‌جه چیزئون ره بأره‌سی',
+'tooltip-n-currentevents' => 'تازه چی‌ئون ده‌له‌واره دونه‌سه‌ن',
+'tooltip-n-recentchanges' => 'ای ویکی ده‌له، ئه‌سا دچیه‌نون ره لیست',
+'tooltip-n-randompage' => 'أتـا شـانـسـی وألـگ بـیـارده‌ن',
+'tooltip-n-help' => 'أتـا جـا کـه...',
+'tooltip-t-whatlinkshere' => 'هأمو ولـگ‌ئونی که ایجه ره لینک هه‌دانه',
+'tooltip-t-recentchangeslinked' => 'ئـه‌سـائـی ده‌گـه‌ره‌سـه‌ئون ولـگ‌ئونی ده‌له، کـه ای ولـگ جـه لـیـنـک دارنـه‌نـه',
+'tooltip-feed-rss' => 'RSS خه‌راک ای ولـگ وه‌سه',
+'tooltip-feed-atom' => 'Atom خه‌راک ای ولـگ وه‌سه',
+'tooltip-t-emailuser' => 'ای کـارور ره اتـا ئـه‌لـه‌کـتـه‌رونـیـکـی‌نـومـه راهـی هـه‌کـارده‌ن',
+'tooltip-t-upload' => 'بـاربـیـه‌شـتـه‌ن فـایـل‌ئون',
+'tooltip-t-specialpages' => 'هأمـه شـا ولـگ‌ئون ره لـیـسـت',
+'tooltip-t-print' => 'پـه‌ریـنـت هـه‌کـارده‌نـی ولـگ ده‌گـه‌ره‌سـه‌ن',
+'tooltip-t-permalink' => 'مـونـده‌سـه‌نـی لـیـنـک ای ولـگ ره ایـنـتـا بـه‌تـیـم وه‌سـه',
+'tooltip-ca-nstab-main' => 'بـأویـنـه‌ن ولـگ',
+'tooltip-ca-nstab-user' => 'کاروری ولـگ بأویـنه‌ن',
+'tooltip-ca-nstab-special' => 'اینتا أتا شـا ولـگ هأسه که شه‌ما نه‌تونده‌نی وه‌نه به‌تیم ره دأچیه‌نی',
+'tooltip-ca-nstab-image' => 'وه‌نـه وألـگ ره بـأویـنـه‌ن',
+'tooltip-ca-nstab-template' => 'شـابـلـون بـأویـنـه‌ن',
+'tooltip-preview' => 'شـه ده‌گـه‌ره‌سـه‌ئون ره پـیـشـاپـیـش بـأویـنـه‌ن،
خـا‌هـه‌ش بـونـه، شـه کـارئون ره جـا دأکـه‌تـه‌ن پـیـش، ای ره کـار بـأزه‌نـی.',
# Browsing diffs
@@ -679,9 +770,9 @@ $2، $1', # $1 date, $2 time
'exif-unknowndate' => 'نه‌شناسی روز',
-'exif-orientation-1' => 'معمولی', # 0th row: top; 0th column: left
-'exif-orientation-3' => '180 درجه چرخ بزوئن', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'عمودی په‌شت ئو روبئی', # 0th row: bottom; 0th column: left
+'exif-orientation-1' => 'معمولی',
+'exif-orientation-3' => '180 درجه چرخ بزوئن',
+'exif-orientation-4' => 'عمودی په‌شت ئو روبئی',
# External editor support
'edit-externally' => 'ای فـایـل ره، أتـا دأیـا بـه‌رنـومـه هـه‌مـرا، دأچـیـه‌نـیـن',
diff --git a/languages/messages/MessagesNa.php b/languages/messages/MessagesNa.php
index f998dbd9..7c3a2bb6 100644
--- a/languages/messages/MessagesNa.php
+++ b/languages/messages/MessagesNa.php
@@ -22,10 +22,12 @@ $messages = array(
'friday' => 'Preidak',
'saturday' => 'Tadurdei',
-'qbedit' => 'Kiwiwid',
'moredotdotdot' => 'Iyuw...',
'and' => '&#32;me',
+# Cologne Blue skin
+'qbedit' => 'Kiwiwid',
+
'errorpagetitle' => 'Dairinaiya',
'help' => 'Ipuok',
'search' => 'Kanani',
@@ -56,10 +58,9 @@ $messages = array(
'error' => 'Dairinaiya',
# Login and logout pages
-'login' => 'Metu',
-'logout' => 'Meta',
-'userlogout' => 'Meta',
-'yourlanguage' => 'Edorer',
+'login' => 'Metu',
+'logout' => 'Meta',
+'userlogout' => 'Meta',
# Edit page toolbar
'bold_sample' => 'Eõ mangiyungiy',
@@ -77,8 +78,9 @@ $messages = array(
'powersearch' => 'Anani ko',
# Preferences page
-'skin' => 'Witsin',
+'prefs-skin' => 'Witsin',
'searchresultshead' => 'Anani ko',
+'yourlanguage' => 'Edorer',
# Recent changes
'recentchanges' => 'Iwiwidit tsimeduw',
diff --git a/languages/messages/MessagesNah.php b/languages/messages/MessagesNah.php
index 9751cbe4..59286c4f 100644
--- a/languages/messages/MessagesNah.php
+++ b/languages/messages/MessagesNah.php
@@ -166,7 +166,7 @@ $messages = array(
'category-media-header' => 'Media "$1" neneuhcāyōc',
'category-empty' => "''Cah ahtlein inīn neneuhcāyōc.''",
'hidden-categories' => 'Neneuhcāyōtl {{PLURAL:$1|ōmotlāti|ōmotlātih}}',
-'hidden-category-category' => 'Neneuhcāyōtl ōmotlāti', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Neneuhcāyōtl ōmotlāti',
'category-subcat-count' => '{{PLURAL:$2|Inīn neneuhcāyōtl zan quipiya|Inīn neneuhcāyōtl quimpiya {{PLURAL:$1|inīn neneuhcāyōtzintli|inīn $1 neneuhcāyōtzintli}}, īhuīcpa $2.}}',
'category-subcat-count-limited' => 'Inīn {{PLURAL:$1|neneuhcāyōtzintli cah|$1 neneuhcāyōtzintli cateh}} inīn neneuhcāyōc.',
'category-article-count' => '{{PLURAL:$2|Inīn neneuhcāyōtl zan quipiya|Inīn neneuhcāyōtl quimpiya {{PLURAL:$1|inīn zāzanilli|inīn $1 zāzanilli}}, īhuīcpa $2.}}',
@@ -177,10 +177,18 @@ $messages = array(
'mainpagetext' => "'''MediaHuiqui cualli ōmotlahtlāli.'''",
-'about' => 'Ītechpa',
-'article' => 'tlahcuilōlli',
-'newwindow' => '(Motlapoāz cē yancuīc tlanexillōtl)',
-'cancel' => 'Ticcuepāz',
+'about' => 'Ītechpa',
+'article' => 'tlahcuilōlli',
+'newwindow' => '(Motlapoāz cē yancuīc tlanexillōtl)',
+'cancel' => 'Ticcuepāz',
+'moredotdotdot' => 'Huehca ōmpa...',
+'mypage' => 'Nozāzanil',
+'mytalk' => 'Notēixnāmiquiliz',
+'anontalk' => 'Inīn IP ītēixnāmiquiliz',
+'navigation' => 'Ācalpapanōliztli',
+'and' => '&#32;īhuān',
+
+# Cologne Blue skin
'qbfind' => 'Tlatēmōz',
'qbbrowse' => 'Titlatēmōz',
'qbedit' => 'Ticpatlāz',
@@ -188,15 +196,8 @@ $messages = array(
'qbpageinfo' => 'Tlahcuilōltechcopa',
'qbmyoptions' => 'Nozāzanil',
'qbspecialpages' => 'Nōncuahquīzqui āmatl',
-'moredotdotdot' => 'Huehca ōmpa...',
-'mypage' => 'Nozāzanil',
-'mytalk' => 'Notēixnāmiquiliz',
-'anontalk' => 'Inīn IP ītēixnāmiquiliz',
-'navigation' => 'Ācalpapanōliztli',
-'and' => '&#32;īhuān',
-
-# Metadata in edit box
-'metadata_help' => 'Metatlahcuilōlli:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Ahcuallōtl',
'returnto' => 'Timocuepāz īhuīc $1.',
@@ -246,7 +247,7 @@ $messages = array(
'otherlanguages' => 'Occequīntīn tlahtōlcopa',
'redirectedfrom' => '(Ōmotlacuep īhuīcpa $1)',
'redirectpagesub' => 'Ōmotlacuep zāzanilli',
-'lastmodifiedat' => 'Inīn zāzanilli ōtlapatlac catca īpan $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Inīn zāzanilli ōtlapatlac catca īpan $2, $1.',
'viewcount' => 'Inīn zāzanilli quintlapōhua {{PLURAL:$1|cē tlahpololiztli|$1 tlahpololiztli}}.',
'protectedpage' => 'Ōmoquīxtix zāzanilli',
'jumpto' => 'Yāuh īhuīc:',
@@ -257,15 +258,12 @@ $messages = array(
'aboutsite' => 'Ītechcopa {{SITENAME}}',
'aboutpage' => 'Project:Ītechcopa',
'copyright' => 'Tlahcuilōltzin cah yōllōxoxouhqui īpan $1',
-'copyrightpagename' => '{{SITENAME}} copyright',
'copyrightpage' => '{{ns:project}}:Tlachīhualōni ītlapiyaliz',
'currentevents' => 'Āxcāncāyōtl',
'currentevents-url' => 'Project:Āxcāncāyōtl',
'disclaimers' => 'Nahuatīllahtōl',
'edithelp' => 'Tlapatlaliztechcopa tēpalēhuiliztli',
'edithelppage' => 'Help:¿Quēn motlahcuiloa cē zāzanilli?',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Tlapiyaliztli',
'mainpage' => 'Calīxatl',
'mainpage-description' => 'Calīxatl',
@@ -355,70 +353,55 @@ Hueliz quimpiya tlahtōl tlein ahmo mohuelītih motequitiltia tōcāpan.',
'virus-unknownscanner' => 'ahmatic antivirus:',
# Login and logout pages
-'logouttitle' => 'Ōtiquīz',
-'welcomecreation' => '== ¡Ximopanōlti, $1! ==
+'welcomecreation' => '== ¡Ximopanōlti, $1! ==
Mocuentah ōmochīuh.
Ye tihuelīti titēchihtoa [[Special:Preferences|motlaēlēhuiliz]].',
-'loginpagetitle' => 'Ximomachiyōmaca/Ximocalaqui',
-'yourname' => 'Motlatequitiltilīltōca:',
-'yourpassword' => 'Motlahtōlichtacāyo',
-'yourpasswordagain' => 'Motlahtōlichtacāyo occeppa',
-'remembermypassword' => 'Ticpiyāz motlacalaquiliz inīn chīuhpōhualhuazco',
-'yourdomainname' => 'Moāxcāyō',
-'login' => 'Ximomachiyōmaca/Ximocalaqui',
-'nav-login-createaccount' => 'Ximocalaqui / ximomachiyōmaca',
-'loginprompt' => 'Tihuīquilia tiquimpiyāz cookies ic ticalaquīz {{SITENAME}}.',
-'userlogin' => 'Ximomachiyōmaca/Ximocalaqui',
-'logout' => 'Tiquīzāz',
-'userlogout' => 'Tiquīzāz',
-'notloggedin' => 'Ahmo ōtimocalac',
-'nologin' => "¿Ahmo ticpiya cuentah? '''$1'''.",
-'nologinlink' => 'Ticchīhuāz cē cuentah',
-'createaccount' => 'Ticchīhuāz cē cuentah',
-'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
-'gotaccountlink' => 'Ximocalaqui',
-'createaccountmail' => 'e-mailcopa',
-'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
-'userexists' => 'Ye ia in tōcāitl ōquihcuilo.
+'yourname' => 'Motlatequitiltilīltōca:',
+'yourpassword' => 'Motlahtōlichtacāyo',
+'yourpasswordagain' => 'Motlahtōlichtacāyo occeppa',
+'remembermypassword' => 'Ticpiyāz motlacalaquiliz inīn chīuhpōhualhuazco',
+'yourdomainname' => 'Moāxcāyō',
+'login' => 'Ximomachiyōmaca/Ximocalaqui',
+'nav-login-createaccount' => 'Ximocalaqui / ximomachiyōmaca',
+'loginprompt' => 'Tihuīquilia tiquimpiyāz cookies ic ticalaquīz {{SITENAME}}.',
+'userlogin' => 'Ximomachiyōmaca/Ximocalaqui',
+'logout' => 'Tiquīzāz',
+'userlogout' => 'Tiquīzāz',
+'notloggedin' => 'Ahmo ōtimocalac',
+'nologin' => "¿Ahmo ticpiya cuentah? '''$1'''.",
+'nologinlink' => 'Ticchīhuāz cē cuentah',
+'createaccount' => 'Ticchīhuāz cē cuentah',
+'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
+'gotaccountlink' => 'Ximocalaqui',
+'createaccountmail' => 'e-mailcopa',
+'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
+'userexists' => 'Ye ia in tōcāitl ōquihcuilo.
Timitztlātlauhtiah xitlahcuiloa occē.',
-'youremail' => 'E-mail:',
-'username' => 'Tlatequitiltilīltōcāitl:',
-'uid' => 'Tlatequitiltilīlli ID:',
-'prefs-memberingroups' => 'Tlācatl {{PLURAL:$1|olōlco|olōlco}}:',
-'yourrealname' => 'Melāhuac motōcā:',
-'yourlanguage' => 'Motlahtōl:',
-'yournick' => 'Motōcātlaliz:',
-'badsiglength' => 'Motōcātlaliz cah achi huēiyac.
-Ahmo huīquilia quimpiya achi $1 {{PLURAL:$1|tlahtōl|tlahtōltin}}.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Melāhuac motōca.
-Intlā ticnequi, tlācah quimatīzqueh motequi.',
-'loginerror' => 'Ahcuallōtl tlacalaquiliztechcopa',
-'prefs-help-email-required' => 'Tihuīquilia quihcuiloa mo e-mailcān.',
-'noname' => 'Ahmo ōtiquihto cualli tlatequitiltilīlli tōcāitl.',
-'loginsuccesstitle' => 'Cualli calaquiliztli',
-'loginsuccess' => "'''Ōticalac {{SITENAME}} quemeh \"\$1\".'''",
-'nosuchuser' => 'Ahmo ia tlatequitiltilīlli ītōca "$1".
+'loginerror' => 'Ahcuallōtl tlacalaquiliztechcopa',
+'noname' => 'Ahmo ōtiquihto cualli tlatequitiltilīlli tōcāitl.',
+'loginsuccesstitle' => 'Cualli calaquiliztli',
+'loginsuccess' => "'''Ōticalac {{SITENAME}} quemeh \"\$1\".'''",
+'nosuchuser' => 'Ahmo ia tlatequitiltilīlli ītōca "$1".
Xiquimpiya motlahtōl, nozo [[Special:UserLogin/signup|xicchīhua yancuīc cuentah]].',
-'nosuchusershort' => 'Ahmo cah tlatequitiltilīlli ītōcā "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Ahmo cah tlatequitiltilīlli ītōcā "<nowiki>$1</nowiki>".
Xiquimpiya motlahtōl.',
-'nouserspecified' => 'Mohuīquilia tiquihtoa cualli tlatequitiltilīltōcāitl.',
-'wrongpassword' => 'Ahcualli motlahtōlichtacāyo.
+'nouserspecified' => 'Mohuīquilia tiquihtoa cualli tlatequitiltilīltōcāitl.',
+'wrongpassword' => 'Ahcualli motlahtōlichtacāyo.
Timitztlātlauhtia xicchīhua occeppa.',
-'wrongpasswordempty' => 'Ayāc motlahtōlichtacāyo.
+'wrongpasswordempty' => 'Ayāc motlahtōlichtacāyo.
Timitztlātlauhtia xicchīhua occeppa.',
-'mailmypassword' => 'E-mailīz yancuīc motlahtōlichtacāyo',
-'noemail' => '"$1" ahmo quipiya īe-mailcān.',
-'passwordsent' => 'Ōmoihuah yancuīc motlahtōlichtacāyo īhuīc mo e-mail ("$1").
+'mailmypassword' => 'E-mailīz yancuīc motlahtōlichtacāyo',
+'noemail' => '"$1" ahmo quipiya īe-mailcān.',
+'passwordsent' => 'Ōmoihuah yancuīc motlahtōlichtacāyo īhuīc mo e-mail ("$1").
Occeppa xicalaqui niman ticmatīz.',
-'mailerror' => 'Ahcuallōtl e-mailcopa: $1',
-'emailconfirmlink' => 'Ticchicāhua mo e-mail',
-'accountcreated' => 'Cuentah ōmochīuh',
-'accountcreatedtext' => 'Tlatequitiltilīlcuentah ic $1 ōmochīuh.',
-'createaccount-title' => 'Cuentah ītlachīhualiz ic {{SITENAME}}',
-'loginlanguagelabel' => 'Tlahtōlli: $1',
+'mailerror' => 'Ahcuallōtl e-mailcopa: $1',
+'emailconfirmlink' => 'Ticchicāhua mo e-mail',
+'accountcreated' => 'Cuentah ōmochīuh',
+'accountcreatedtext' => 'Tlatequitiltilīlcuentah ic $1 ōmochīuh.',
+'createaccount-title' => 'Cuentah ītlachīhualiz ic {{SITENAME}}',
+'loginlanguagelabel' => 'Tlahtōlli: $1',
# Password reset dialog
'resetpass' => 'Ticpatlāz motlahtōlichtacāyo',
@@ -467,7 +450,6 @@ Occeppa xicalaqui niman ticmatīz.',
'blockededitsource' => "'''Mopatlaliz''' ītlahtōl īpan '''$1''' motta nicān:",
'whitelistedittitle' => 'Tihuīquilia timocalaqui ic patla',
'whitelistedittext' => 'Tihuīquilia $1 ic ticpatla zāzaniltin.',
-'confirmedittitle' => 'E-mail chicāhualiztli moēlēhuia ic ticpatla',
'nosuchsectiontitle' => 'Ahmo ia inōn tlahtōltzintli',
'loginreqtitle' => 'Ximocalaqui',
'loginreqlink' => 'ximocalaqui',
@@ -504,9 +486,8 @@ Occeppa xicalaqui niman ticmatīz.',
'permissionserrors' => 'Huelītiliztechcopa ahcuallōtl',
'permissionserrorstext' => 'Ahmo tihuelīti quichīhua inōn, inīn {{PLURAL:$1|īxtlamatilizpampa|īxtlamatilizpampa}}:',
'permissionserrorstext-withaction' => 'Ahmo tiquihuelīti $2 inīn {{PLURAL:$1|īxtlamatilizpampa|īxtlamatilizpampa}}:',
-'deleted-notice' => 'Inīn zāzanilli ōmopolo.
+'moveddeleted-notice' => 'Inīn zāzanilli ōmopolo.
Tlapololiztli tlahcuilōlloh cah tlani.',
-'deletelog-fulllog' => 'Xiquittāz mochi',
'edit-gone-missing' => 'Ahmo huelīti yancuīya zāzanilli.
Hueliz ōmopolo.',
'edit-conflict' => 'Tlapatlaliztli yāōyōtōn',
@@ -525,7 +506,7 @@ Ye ia.',
'currentrev' => 'Āxcān tlapatlaliztli',
'currentrev-asof' => 'Āxcān tlachiyaliztli īpan $1',
'revisionasof' => 'Tlachiyaliztli īpan $1',
-'revision-info' => 'Tlachiyaliztli īpan $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Tlachiyaliztli īpan $1; $2',
'previousrevision' => '← Huēhueh tlapatlaliztli',
'nextrevision' => 'Yancuīc tlapatlaliztli →',
'currentrevisionlink' => 'Āxcān tlapatlaliztli',
@@ -535,7 +516,6 @@ Ye ia.',
'page_first' => 'achto',
'page_last' => 'xōcoyōc',
'history-fieldset-title' => 'Tictēmōz īpan tlahcuilōlloh',
-'deletedrev' => '[ōmopolo]',
'histfirst' => 'Achto',
'histlast' => 'Yancuīc',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -544,27 +524,28 @@ Ye ia.',
# Revision feed
'history-feed-title' => 'Tlachiyaliztli tlahcuilōlloh',
'history-feed-description' => 'Tlachiyaliztli tlahcuilōlloh inīn zāzaniltechcopa huiquipan',
-'history-feed-item-nocomment' => '$1 īpan $2', # user at time
+'history-feed-item-nocomment' => '$1 īpan $2',
'history-feed-empty' => 'In zāzanilli tiquiēlēhuia ahmo ia.
Hueliz ōmopolo huiqui nozo ōmozacac.
[[Special:Search|Xitēmoa huiquipan]] yancuīc huēyi zāzaniltin.',
# Revision deletion
-'rev-delundel' => 'tiquittāz/tictlātīz',
-'revisiondelete' => 'Tiquimpolōz/ahtiquimpolōz tlachiyaliztli',
-'revdelete-selected' => "'''{{PLURAL:$2|Tlachiyaliztli ōmoēlēhui|Tlachiyaliztli ōmoēlēhuih}} [[:$1]] ītechcopa:'''",
-'revdelete-hide-text' => 'Tictlātīz tlachiyaliztli ītlahcuilōl',
-'revdelete-hide-image' => 'Tictlātīz tlahcuilōlli ītlapiyaliz',
-'revdel-restore' => 'Ticpatlāz tlattaliztli',
-'pagehist' => 'Zāzanilli tlahcuilōlloh',
-'deletedhist' => 'Ōtlapolo tlahcuilōlloh',
-'revdelete-content' => 'tlapiyaliztli',
-'revdelete-summary' => 'ticpatlāz tlahcuilōltōn',
-'revdelete-uname' => 'tlatēquitiltilīltōcāitl',
-'revdelete-hid' => 'xictlātia $1',
-'revdelete-unhid' => 'tiquittāz $1',
-'revdelete-log-message' => '$1 ic $2 {{PLURAL:$2|tlachiyaliztli|tlachiyaliztli}}',
-'logdelete-log-message' => '$1 īhuīc $2 {{PLURAL:$2|tlachīhualiztli|tlachīhualiztli}}',
+'rev-delundel' => 'tiquittāz/tictlātīz',
+'revisiondelete' => 'Tiquimpolōz/ahtiquimpolōz tlachiyaliztli',
+'revdelete-selected' => "'''{{PLURAL:$2|Tlachiyaliztli ōmoēlēhui|Tlachiyaliztli ōmoēlēhuih}} [[:$1]] ītechcopa:'''",
+'revdelete-hide-text' => 'Tictlātīz tlachiyaliztli ītlahcuilōl',
+'revdelete-hide-image' => 'Tictlātīz tlahcuilōlli ītlapiyaliz',
+'revdel-restore' => 'Ticpatlāz tlattaliztli',
+'pagehist' => 'Zāzanilli tlahcuilōlloh',
+'deletedhist' => 'Ōtlapolo tlahcuilōlloh',
+'revdelete-content' => 'tlapiyaliztli',
+'revdelete-summary' => 'ticpatlāz tlahcuilōltōn',
+'revdelete-uname' => 'tlatēquitiltilīltōcāitl',
+'revdelete-hid' => 'xictlātia $1',
+'revdelete-unhid' => 'tiquittāz $1',
+'revdelete-log-message' => '$1 ic $2 {{PLURAL:$2|tlachiyaliztli|tlachiyaliztli}}',
+'logdelete-log-message' => '$1 īhuīc $2 {{PLURAL:$2|tlachīhualiztli|tlachīhualiztli}}',
+'revdelete-edit-reasonlist' => 'Tiquimpatlāz īxtlamatiliztli tlapoloaliztechcopa',
# History merging
'mergehistory-from' => 'Zāzanilhuīcpa:',
@@ -575,41 +556,19 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
'mergehistory-comment' => 'Ōmocēntili [[:$1]] īpan [[:$2]]: $3',
# Diffs
-'history-title' => '"$1" ītlachiyaliz tlahcuilōlloh',
-'difference' => '(Ahneneuhquiliztli tlapatlaliznepantlah)',
-'lineno' => 'Pāntli $1:',
-'editundo' => 'ahticchīhuāz',
-'diff-multi' => '({{PLURAL:$1|Cē tlapatlaliztli nepantlah ahmo motta|$1 tlapatlaliztli nepantlah ahmo mottah}}.)',
-'diff-movedto' => 'ōmozacac īhuīc $1',
-'diff-added' => 'ōcēntili $1',
-'diff-changedto' => 'ōmopatlac īhuīc $1',
-'diff-src' => 'tlahtōlcaquiliztilōni',
-'diff-with' => '&#32;īca $1 $2',
-'diff-with-final' => '&#32;īhuān $1 $2',
-'diff-h1' => "cē '''cuāyōtl (iuhcāyōtl 1)'''",
-'diff-h2' => "cē '''cuāyōtl (iuhcāyōtl 2)'''",
-'diff-h3' => "cē '''cuāyōtl (iuhcāyōtl 3)'''",
-'diff-h4' => "cē '''cuāyōtl (iuhcāyōtl 4)'''",
-'diff-h5' => "cē '''cuāyōtl (iuhcāyōtl 5)'''",
-'diff-tr' => "cē '''pāntli'''",
-'diff-th' => "cē '''cuāyōtzintli'''",
-'diff-img' => "cē '''īxiptli'''",
-'diff-a' => "cē '''tzonhuiliztli'''",
-'diff-b' => "'''tlīltic'''",
-'diff-strong' => "'''chicāhuac'''",
-'diff-em' => "'''tlachicāhualiztli'''",
-'diff-big' => "'''huēyi'''",
-'diff-del' => "'''tlapoloc'''",
+'history-title' => '"$1" ītlachiyaliz tlahcuilōlloh',
+'difference' => '(Ahneneuhquiliztli tlapatlaliznepantlah)',
+'lineno' => 'Pāntli $1:',
+'editundo' => 'ahticchīhuāz',
+'diff-multi' => '({{PLURAL:$1|Cē tlapatlaliztli nepantlah ahmo motta|$1 tlapatlaliztli nepantlah ahmo mottah}}.)',
# Search results
'searchresults' => 'Tlatēmoliztli',
'searchsubtitle' => 'Ōtictēmōz \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|mochīntīn zāzaniltin mopēhua īca "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|mochīntīn zāzaniltin tzonhuilia "$1" īhuīc]])',
'searchsubtitleinvalid' => "Ōtictēmōz '''$1'''",
-'noexactmatch' => "'''Ahmo ia zāzanilli ītōcā \"\$1\".''' Tihuelīti [[:\$1|ticchīhua]].",
-'noexactmatch-nocreate' => "'''Ahmo ia \"\$1\" zāzanilli.'''",
-'prevn' => '$1 achtopa',
-'nextn' => 'niman $1',
-'viewprevnext' => 'Xiquintta ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} achtopa',
+'nextn' => 'niman {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Xiquintta ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Ye ia zāzanilli ītōca \"[[\$1]]\" inīn huiquipan'''",
'searchmenu-new' => "'''Tihuelīti ticchīhuāz zāzanilli ītōca \"[[:\$1]]\" inīn huiquipan'''",
'searchhelp-url' => 'Help:Tlapiyaliztli',
@@ -638,38 +597,52 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
'powersearch-field' => 'Tlatēmōz',
'search-external' => 'Tlatēmotiliztli calāmpa',
+# Quickbar
+'qbsettings-none' => 'Ahtlein',
+
# Preferences page
-'preferences' => 'Tlaēlēhuiliztli',
-'mypreferences' => 'Notlaēlēhuiliz',
-'prefs-edits' => 'Tlapatlaliztli tlapōhualli:',
-'prefsnologin' => 'Ahmo ōtimocalac',
-'qbsettings-none' => 'Ahtlein',
-'changepassword' => 'Ticpatlāz motlahtōlichtacāyo',
-'skin-preview' => 'Xiquitta quemeh yez',
-'math' => 'Tlapōhualmatiliztli',
-'dateformat' => 'Cāuhtiliztli iuhcāyōtl',
-'datedefault' => 'Ayāc tlanequiliztli',
-'datetime' => 'Cāuhtiliztli īhuān cāhuitl',
-'prefs-personal' => 'Motlācatlanōnōtzaliz',
-'prefs-rc' => 'Yancuīc tlapatlaliztli',
-'prefs-watchlist' => 'Tlachiyaliztli',
-'prefs-watchlist-days' => 'Tōnaltin tiquinttāz tlachiyalizpan:',
-'prefs-watchlist-edits' => 'Tlapatlaliztli tiquintta tlachiyalizpan:',
-'prefs-misc' => 'Zāzo',
-'prefs-resetpass' => 'Ticpatlāz motlahtōlichtacāyo',
-'saveprefs' => 'Ticpiyāz',
-'textboxsize' => 'Tlapatlaliztli',
-'rows' => 'Pāntli:',
-'searchresultshead' => 'Tlatēmoliztli',
-'contextlines' => 'Pāntli tlahtōltechcopa:',
-'contextchars' => 'Tlahtōltechcopa ic pāntli:',
-'recentchangesdays' => 'Tōnaltin tiquinttāz yancuīc tlapatlalizpan:',
-'localtime' => 'Cāhuitl nicān:',
-'prefs-searchoptions' => 'Tlatēmoliztli tlaēlēhuiliztli',
-'prefs-namespaces' => 'Tōcātzin',
-'defaultns' => 'Tlatēmōz inīn tōcātzimpan ic default:',
-'default' => 'ic default',
-'files' => 'Tlahcuilōlli',
+'preferences' => 'Tlaēlēhuiliztli',
+'mypreferences' => 'Notlaēlēhuiliz',
+'prefs-edits' => 'Tlapatlaliztli tlapōhualli:',
+'prefsnologin' => 'Ahmo ōtimocalac',
+'changepassword' => 'Ticpatlāz motlahtōlichtacāyo',
+'skin-preview' => 'Xiquitta quemeh yez',
+'prefs-math' => 'Tlapōhualmatiliztli',
+'datedefault' => 'Ayāc tlanequiliztli',
+'prefs-datetime' => 'Cāuhtiliztli īhuān cāhuitl',
+'prefs-personal' => 'Motlācatlanōnōtzaliz',
+'prefs-rc' => 'Yancuīc tlapatlaliztli',
+'prefs-watchlist' => 'Tlachiyaliztli',
+'prefs-watchlist-days' => 'Tōnaltin tiquinttāz tlachiyalizpan:',
+'prefs-watchlist-edits' => 'Tlapatlaliztli tiquintta tlachiyalizpan:',
+'prefs-misc' => 'Zāzo',
+'prefs-resetpass' => 'Ticpatlāz motlahtōlichtacāyo',
+'saveprefs' => 'Ticpiyāz',
+'prefs-editing' => 'Tlapatlaliztli',
+'rows' => 'Pāntli:',
+'searchresultshead' => 'Tlatēmoliztli',
+'contextlines' => 'Pāntli tlahtōltechcopa:',
+'contextchars' => 'Tlahtōltechcopa ic pāntli:',
+'recentchangesdays' => 'Tōnaltin tiquinttāz yancuīc tlapatlalizpan:',
+'localtime' => 'Cāhuitl nicān:',
+'prefs-searchoptions' => 'Tlatēmoliztli tlaēlēhuiliztli',
+'prefs-namespaces' => 'Tōcātzin',
+'defaultns' => 'Tlatēmōz inīn tōcātzimpan ic default:',
+'default' => 'ic default',
+'prefs-files' => 'Tlahcuilōlli',
+'youremail' => 'E-mail:',
+'username' => 'Tlatequitiltilīltōcāitl:',
+'uid' => 'Tlatequitiltilīlli ID:',
+'prefs-memberingroups' => 'Tlācatl {{PLURAL:$1|olōlco|olōlco}}:',
+'yourrealname' => 'Melāhuac motōcā:',
+'yourlanguage' => 'Motlahtōl:',
+'yournick' => 'Motōcātlaliz:',
+'badsiglength' => 'Motōcātlaliz cah achi huēiyac.
+Ahmo huīquilia quimpiya achi $1 {{PLURAL:$1|tlahtōl|tlahtōltin}}.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Melāhuac motōca.
+Intlā ticnequi, tlācah quimatīzqueh motequi.',
+'prefs-help-email-required' => 'Tihuīquilia quihcuiloa mo e-mailcān.',
# User rights
'userrights-user-editname' => 'Xihcuiloa cē tlatequitiltilīltōcāitl:',
@@ -771,14 +744,15 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
'newsectionsummary' => 'Yancuīc tlahtōltzintli: /* $1 */',
# Recent changes linked
-'recentchangeslinked' => 'Tlapatlaliztli tzonhuilizpan',
-'recentchangeslinked-title' => 'Tlapatlaliztli "$1" ītechcopa',
-'recentchangeslinked-page' => 'Zāzanilli ītōcā:',
+'recentchangeslinked' => 'Tlapatlaliztli tzonhuilizpan',
+'recentchangeslinked-feed' => 'Tlapatlaliztli tzonhuilizpan',
+'recentchangeslinked-toolbox' => 'Tlapatlaliztli tzonhuilizpan',
+'recentchangeslinked-title' => 'Tlapatlaliztli "$1" ītechcopa',
+'recentchangeslinked-page' => 'Zāzanilli ītōcā:',
# Upload
'upload' => 'Tlahcuilōlquetza',
'uploadbtn' => 'Tlahcuilōlquetza',
-'reupload' => 'Tiquiquetzāz occeppa',
'uploadnologin' => 'Ahmo ōtimocalac',
'uploaderror' => 'Tlaquetzaliztli ahcuallōtl',
'uploadlog' => 'tlaquetzaliztli tlahcuilōlloh',
@@ -799,7 +773,6 @@ Tlahcuilōlli iuhcāyōtl {{PLURAL:\$3|moēlēhuia cah|moēlēhuiah cateh}} \$2.
* Tlahcuilōlli moquetzacah: '''<tt>[[:$1]]</tt>'''
* Tlahcuilōlli tlein ia ītōca: '''<tt>[[:$2]]</tt>'''
Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
-'fileexists-thumb' => "<center>'''Tlahcuilōlli ia'''</center>",
'successfulupload' => 'Cualli quetzaliztli',
'savefile' => 'Quipiyāz tlahcuilōlli',
'uploadedimage' => 'ōmoquetz "[[$1]]"',
@@ -820,6 +793,7 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
'listfiles_user' => 'Tlatequitiltilīlli',
# File description page
+'file-anchor-link' => 'Īxiptli',
'filehist' => 'Tlahcuilōlli tlahcuilōlloh',
'filehist-deleteall' => 'tiquimpolōz mochīntīn',
'filehist-deleteone' => 'ticpolōz',
@@ -832,9 +806,7 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
'morelinkstoimage' => 'Tiquinttāz [[Special:WhatLinksHere/$1|achi tzonhuiliztli]] inīn tlahcuilōlhuīc.',
'redirectstofile' => 'Inōn {{PLURAL:$1|tlahcuilōlli mocuepa|$1 tlahcuilōlli mocuepah}} nicān:',
'duplicatesoffile' => 'Inōn {{PLURAL:$1|tlahcuilōlli cah|$1 tlahcuilōlli cateh}} neneuhqui inīn:',
-'sharedupload' => 'Inīn īxiptli huelīti motequitiltia zāzocāmpa', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Ahmo ia inōn tlahcuilōlli; $1',
-'noimage-linktext' => 'ticquetzāz cē',
+'sharedupload' => 'Inīn īxiptli huelīti motequitiltia zāzocāmpa',
'uploadnewversion-linktext' => 'Ticquetzāz yancuīc tlahcuilōlli',
# File reversion
@@ -892,8 +864,8 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
'doubleredirects' => 'Ōntetl tlacuepaliztli',
'brokenredirects' => 'Tzomoc tlacuepaliztli',
-'brokenredirects-edit' => '(ticpatlāz)',
-'brokenredirects-delete' => '(ticpolōz)',
+'brokenredirects-edit' => 'ticpatlāz',
+'brokenredirects-delete' => 'ticpolōz',
'withoutinterwiki' => 'Zāzaniltin ahtle tzonhuiliztli',
'withoutinterwiki-submit' => 'Tiquittāz',
@@ -1066,7 +1038,7 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
'protect-fallback' => 'Tiquihuīquilia tlahuelītiliztli "$1"',
'protect-level-autoconfirmed' => 'Tiquinquīxtīz tlatequitiltilīlli tlein ahmo ōmocalac',
'protect-expiring' => 'motlamīz $1 (UTC)',
-'protect-expiry-options' => '2 yēmpōhualminutl:2 hours,1 tōnalli:1 day,2 tōnaltin:2 days,3 tōnaltin:3 days,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,Mochipa:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 yēmpōhualminutl:2 hours,1 tōnalli:1 day,2 tōnaltin:2 days,3 tōnaltin:3 days,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,Mochipa:infinite',
# Restrictions (nouns)
'restriction-edit' => 'Ticpatlāz',
@@ -1104,6 +1076,7 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
'sp-contributions-newbies-sub' => 'Ic yancuīc',
'sp-contributions-newbies-title' => 'Yancuīc tlatequitiltilīlli ītlahcuilōl',
'sp-contributions-blocklog' => 'Tlatzacuiliztli tlahcuilōlloh',
+'sp-contributions-talk' => 'Tēixnāmiquiliztli',
'sp-contributions-search' => 'Tiquintlatēmōz tlapatlaliztli',
'sp-contributions-username' => 'IP nozo tlatequitiltilīlli ītōcā:',
'sp-contributions-submit' => 'Tlatēmōz',
@@ -1133,7 +1106,7 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
'ipbreasonotherlist' => 'Occē īxtlamatiliztli',
'ipbsubmit' => 'Tiquitzacuilīz inīn tlatequitiltilīlli',
'ipbother' => 'Occē cāuhpan:',
-'ipboptions' => '2 yēmpōhualminutl:2 hours,1 tōnalli:1 day,3 tōnaltin:3 days,7 tōnaltin:1 week,14 tōnaltin:2 weeks,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,Mochipa:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 yēmpōhualminutl:2 hours,1 tōnalli:1 day,3 tōnaltin:3 days,7 tōnaltin:1 week,14 tōnaltin:2 weeks,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,Mochipa:infinite',
'ipbotheroption' => 'occē',
'ipbotherreason' => 'Occē īxtlamatiliztli:',
'ipbwatchuser' => 'Tiquinchiyāz inīn tlatequitiltilīlli in ītlatequitiltilīlzāzanil auh in ītēixnāmiquiliz',
@@ -1145,7 +1118,7 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
'ipblocklist-submit' => 'Tlatēmōz',
'blocklistline' => '$1, $2 ōquitzacuili $3 ($4)',
'infiniteblock' => 'ahtlamic',
-'expiringblock' => 'motlamia $1',
+'expiringblock' => 'motlamia $1 $2',
'anononlyblock' => 'zan ahtōcā',
'blocklink' => 'tiquitzacuilīz',
'unblocklink' => 'ahtiquitzacuilīz',
@@ -1175,7 +1148,7 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
'move-watch' => 'Tictlachiyāz inīn zāzanilli',
'movepagebtn' => 'Ticzacāz zāzanilli',
'pagemovedsub' => 'Cualli ōmozacac',
-'movepage-moved' => '\'\'\'"$1" ōmotlacuep īhuīc "$2".\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ōmotlacuep īhuīc "$2".\'\'\'',
'movedto' => 'ōmozacac īhuīc',
'movetalk' => 'Ticzacāz nō tēixnāmiquiliztli tlahcuilōltechcopa.',
'movepage-page-moved' => 'Zāzanilli $1 ōmozacac īhuīc $2.',
@@ -1201,10 +1174,9 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
'export-templates' => 'Tiquimpiyāz nemachiyōtīlli',
# Namespace 8 related
-'allmessages' => 'Mochīntīn Huiquimedia tlahcuilōltzintli',
-'allmessagesname' => 'Tōcāitl',
-'allmessagescurrent' => 'Āxcān tlahcuilōlli',
-'allmessagesmodified' => 'Zan tiquinttāz inōn ōmopatlac',
+'allmessages' => 'Mochīntīn Huiquimedia tlahcuilōltzintli',
+'allmessagesname' => 'Tōcāitl',
+'allmessagescurrent' => 'Āxcān tlahcuilōlli',
# Thumbnails
'thumbnail-more' => 'Tiquihuēyiyāz',
@@ -1278,7 +1250,7 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
# Attribution
'anonymous' => 'Ahtōcāitl {{PLURAL:$1|tlatequitiltilīlli|tlatequitiltilīlli}} īpan {{SITENAME}}',
'siteuser' => '$1 tlatequitiltilīlli īpan {{SITENAME}}',
-'lastmodifiedatby' => 'Inīn zāzanilli ōtlapatlac catca īpan $2, $1 īpal $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Inīn zāzanilli ōtlapatlac catca īpan $2, $1 īpal $3.',
'others' => 'occequīntīn',
'siteusers' => '$1 {{PLURAL:$2|tlatequitiltilīlli|tlatequitiltilīlli}} īpan {{SITENAME}}',
@@ -1329,7 +1301,7 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
'exif-flashenergy' => 'Flax chicāhualiztli',
'exif-gpstimestamp' => 'GPS cāhuitl (atomic tepozcāhuitl)',
-'exif-orientation-1' => 'Yēctli', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Yēctli',
'exif-meteringmode-255' => 'Occē',
@@ -1435,10 +1407,10 @@ Niman tihuelīti timocalaqui auh quiyōlēhua huiqui.',
'watchlisttools-edit' => 'Tiquittāz auh ticpatlāz motlachiyaliz',
# Special:Version
-'version' => 'Machiyōtzin', # Not used as normal message but as header for the special page itself
+'version' => 'Machiyōtzin',
'version-specialpages' => 'Nōncuahquīzqui āmatl',
'version-other' => 'Occē',
-'version-version' => 'Machiyōtzin',
+'version-version' => '(Machiyōtzin $1)',
'version-software-version' => 'Machiyōtzin',
# Special:FilePath
diff --git a/languages/messages/MessagesNan.php b/languages/messages/MessagesNan.php
index f8a378b8..0a359b16 100644
--- a/languages/messages/MessagesNan.php
+++ b/languages/messages/MessagesNan.php
@@ -118,13 +118,15 @@ $messages = array(
'about' => 'Koan-hē',
'newwindow' => '(ē khui sin thang-á hián-sī)',
'cancel' => 'Chhú-siau',
-'qbedit' => 'Siu-kái',
'mypage' => 'Góa ê ia̍h',
'mytalk' => 'Góa ê thó-lūn',
'anontalk' => 'Chit ê IP ê thó-lūn-ia̍h',
'navigation' => 'Se̍h chām',
'and' => '&#32;kap',
+# Cologne Blue skin
+'qbedit' => 'Siu-kái',
+
'errorpagetitle' => 'Chhò-gō·',
'returnto' => 'Tò-tńg khì $1.',
'help' => 'Soat-bêng-su',
@@ -205,8 +207,6 @@ $messages = array(
# General errors
'error' => 'Chhò-gō·',
'databaseerror' => 'Chu-liāu-khò· chhò-gō·',
-'noconnect' => 'háiⁿ-sè! Hiān-chhú-sî tú-tio̍h ki-su̍t būn-tê, bô-hoat-tō· lian-lo̍k chu-liāu-khò· ê sù-hû-chhí.<br />$1',
-'cachederror' => 'Í-hā sī beh ti̍h ê ia̍h ê cache khó·-pih, ū khó-lêng m̄-sī siōng sin ê.',
'readonly' => 'Chu-liāu-khò· só tiâu leh',
'readonlytext' => 'Chu-liāu-khò· hiān-chú-sî só tiâu leh, bô khai-hòng hō· lâng siu-kái. Che tāi-khài sī in-ūi teh pān î-siu khang-khòe, oân-sêng liáu-āu èng-tong tō ē hôe-ho̍k chèng-siông. Hū-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1',
'filecopyerror' => 'Bô-hoat-tō· kā tóng-àn "$1" khó·-pih khì "$2".',
@@ -251,10 +251,6 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'gotaccountlink' => 'Teng-ji̍p',
'badretype' => 'Lí su-ji̍p ê 2-cho· bi̍t-bé bô tùi.',
'userexists' => 'Lí beh ti̍h ê iōng-chiá miâ-chheng í-keng ū lâng iōng. Chhiáⁿ kéng pa̍t-ê miâ.',
-'youremail' => 'Lí ê email:',
-'yourrealname' => 'Lí ê chin miâ:',
-'yourlanguage' => 'Kài-bīn gú-giân:',
-'yournick' => 'Lí ê sió-miâ (chhiam-miâ iōng):',
'loginerror' => 'Teng-ji̍p chhò-gō·',
'loginsuccesstitle' => 'Teng-ji̍p sêng-kong',
'loginsuccess' => 'Lí hiān-chhú-sî í-keng teng-ji̍p {{SITENAME}} chò "$1".',
@@ -294,51 +290,51 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'sig_tip' => 'Lí ê chhiam-miâ kap sî-kan ìn-á',
# Edit pages
-'summary' => 'Khài-iàu:',
-'subject' => 'Tê-bo̍k/piau-tê:',
-'minoredit' => 'Che sī sió siu-kái',
-'watchthis' => 'Kàm-sī chit ia̍h',
-'savearticle' => 'Pó-chûn chit ia̍h',
-'preview' => 'Seng khoàⁿ-māi',
-'showpreview' => 'Seng khoàⁿ-māi',
-'showdiff' => 'Khòaⁿ kái-piàn ê pō·-hūn',
-'anoneditwarning' => "'''Kéng-kò:''' Lí bô teng-ji̍p. Lí ê IP chū-chí ē kì tī pún ia̍h ê pian-chi̍p le̍k-sú lāi-bīn.",
-'summary-preview' => 'Khài-iàu ê preview:',
-'subject-preview' => 'Ū-lám tê-bo̍k/piau-tê:',
-'whitelistedittitle' => 'Su-iàu teng-ji̍p chiah ē-sái siu-kái',
-'whitelistedittext' => 'Lí ài $1 chiah ē-sái siu-kái.',
-'confirmedittitle' => 'Su-iàu khak-jīn e-mail chū-chí chiah ē-tit pian-chi̍p',
-'loginreqtitle' => 'Su-iàu Teng-ji̍p',
-'accmailtitle' => 'Bi̍t-bé kià chhut khì ah.',
-'accmailtext' => '$1 ê bi̍t-bé í-keng kìa khì $2.',
-'newarticle' => '(Sin)',
-'newarticletext' => "Lí tòe 1 ê liân-kiat lâi kàu 1 bīn iáu-bōe chûn-chāi ê ia̍h. Beh khai-sí pian-chi̍p chit ia̍h, chhiáⁿ tī ē-kha ê bûn-jī keh-á lāi-té phah-jī. ([[{{MediaWiki:Helppage}}|Bo̍k-lio̍k]] kà lí án-choáⁿ chìn-hêng.) Ká-sú lí bô-tiuⁿ-tî lâi kàu chia, ē-sai chhi̍h liû-lám-khì ê '''téng-1-ia̍h''' tńg--khì.",
-'anontalkpagetext' => "----''Pún thó-lūn-ia̍h bô kò·-tēng ê kháu-chō/hō·-thâu, kan-na ū 1 ê IP chū-chí (chhin-chhiūⁿ 123.456.789.123). In-ūi bô kāng lâng tī bô kāng sî-chūn ū khó-lêng tú-hó kong-ke kāng-ê IP, lâu tī chia ê oē ū khó-lêng hō· bô kāng lâng ê! Beh pī-bián chit khoán būn-tê, ē-sái khì [[Special:UserLogin|khui 1 ê hō·-thâu a̍h-sī teng-ji̍p]].''",
-'clearyourcache' => "'''Chù-ì:''' Pó-chûn liáu-āu, tio̍h ē-kì leh kā liû-lám-khì ê cache piàⁿ tiāu chiah khoàⁿ-ē-tio̍h kái-piàn: '''Mozilla:''' chhi̍h ''reload/têng-sin chài-ji̍p'' (a̍h-sī ''Ctrl-R''), '''Internet Explorer kap Opera:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-R'', '''Konqueror''' ''Ctrl-R''.",
-'usercssjsyoucanpreview' => "'''Phiat-pō·''': Pó-chûn chìn-chêng ē-sái chhi̍h 'Seng khoàⁿ-māi' kiám-cha sin ê CSS a̍h-sī JavaScript.",
-'usercsspreview' => "'''Sè-jī! Lí hiān-chú-sî khoàⁿ--ê sī lí ê su-jîn css ê preview; che iáu-bōe pó-chûn--khí-lâi!'''",
-'userjspreview' => "'''Sè-jī! Lí hiān-chú-sî chhì khoàⁿ--ê sī lí ka-kī ê javascript; che iáu-bōe pó-chûn--khí-lâi!'''",
-'note' => "'''Chù-ì:'''",
-'previewnote' => "'''Thê-chhéⁿ lí che sī 1 bīn kiám-cha chho͘-phe ēng--ê \"seng-khoàⁿ-ia̍h\", iáu-bōe pó-chûn--khí-lâi!'''",
-'session_fail_preview' => "'''Pháiⁿ-sè! Gún chiām-sî bô hoat-tō͘ chhú-lí lí ê pian-chi̍p (goân-in: \"phàng-kiàn sú-iōng kî-kan ê chu-liāu\"). Lô-hoân têng chhì khoàⁿ-māi. Ká-sú iû-goân bô-hāu, ē-sái teng-chhut koh-chài teng-ji̍p hoān-sè tō ē-tit kái-koat.'''",
-'editing' => 'Siu-kái $1',
-'editingsection' => 'Pian-chi̍p $1 (section)',
-'editingcomment' => 'Teh pian-chi̍p $1 (lâu-oē)',
-'editconflict' => 'Siu-kái sio-chhiong: $1',
-'explainconflict' => 'Ū lâng tī lí tng teh siu-kái pún-ia̍h ê sî-chūn oân-sêng kî-tha ê siu-kái. Téng-koân ê bûn-jī-keh hián-sī hiān-chhú-sî siōng sin ê lōe-iông. Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê kái-piàn kap siōng sin ê lōe-iông chéng-ha̍p. <b>Kan-na</b> téng-koân keh-á ê bûn-jī ē tī lí chhi̍h "Pó-chûn" liáu-āu pó-chûn khí lâi.<br />',
-'yourtext' => 'Lí ê bûn-jī',
-'storedversion' => 'Chu-liāu-khò· ê pán-pún',
-'editingold' => "'''KÉNG-KÒ: Lí tng teh siu-kái chit ia̍h ê 1 ê kū siu-tēng-pún. Lí nā kā pó-chûn khí lâi, chit ê siu-tēng-pún sòa-āu ê jīm-hô kái-piàn ē bô khì.'''",
-'yourdiff' => 'Chha-pia̍t',
-'longpagewarning' => "'''SÈ-JĪ: Pún ia̍h $1 kilobyte tn̂g; ū-ê liû-lám-khì bô-hoat-tō· pian-chi̍p 32 kb chó-iū ia̍h-sī koh khah tn̂g ê ia̍h. Chhiáⁿ khó-lū kā chit ia̍h thiah chò khah sè ê toāⁿ-lo̍h.'''",
-'readonlywarning' => "'''CHÙ-Ì: Chu-liāu-khò· taⁿ só tiâu leh thang pān î-siu khang-khòe, só·-í lí hiān-chú-sî bô thang pó-chûn jīn-hô phian-chi̍p hāng-bo̍k. Lí ē-sái kā siong-koan pō·-hūn tah--ji̍p-khì 1-ê bûn-jī tóng-àn pó-chûn, āu-chhiú chiah koh kè-sio̍k.'''",
-'protectedpagewarning' => "'''KÉNG-KÒ: Pún ia̍h só tiâu leh. Kan-taⁿ ū hêng-chèng te̍k-koân ê iōng-chiá (sysop) ē-sái siu-kái.'''",
-'templatesused' => 'Chit ia̍h iōng chia ê pang-bô·:',
-'templatesusedpreview' => 'Chit ê preview iōng chia ê pang-bô͘:',
-'templatesusedsection' => 'Chit ê section iōng chia ê pang-bô͘:',
-'template-protected' => '(pó-hō͘)',
-'template-semiprotected' => '(poàⁿ pó-hō͘)',
-'recreate-deleted-warn' => "'''Sè-jī: Lí taⁿ chún-pī beh khui ê ia̍h, chêng bat hō͘ lâng thâi tiāu koè.''' Lí tio̍h chim-chiok soà-chiap pian-chi̍p chit ia̍h ê pit-iàu-sèng. Chia ū chit ia̍h ê san-tû kì-lo̍k (deletion log) hō͘ lí chham-khó:",
+'summary' => 'Khài-iàu:',
+'subject' => 'Tê-bo̍k/piau-tê:',
+'minoredit' => 'Che sī sió siu-kái',
+'watchthis' => 'Kàm-sī chit ia̍h',
+'savearticle' => 'Pó-chûn chit ia̍h',
+'preview' => 'Seng khoàⁿ-māi',
+'showpreview' => 'Seng khoàⁿ-māi',
+'showdiff' => 'Khòaⁿ kái-piàn ê pō·-hūn',
+'anoneditwarning' => "'''Kéng-kò:''' Lí bô teng-ji̍p. Lí ê IP chū-chí ē kì tī pún ia̍h ê pian-chi̍p le̍k-sú lāi-bīn.",
+'summary-preview' => 'Khài-iàu ê preview:',
+'subject-preview' => 'Ū-lám tê-bo̍k/piau-tê:',
+'whitelistedittitle' => 'Su-iàu teng-ji̍p chiah ē-sái siu-kái',
+'whitelistedittext' => 'Lí ài $1 chiah ē-sái siu-kái.',
+'loginreqtitle' => 'Su-iàu Teng-ji̍p',
+'accmailtitle' => 'Bi̍t-bé kià chhut khì ah.',
+'accmailtext' => '$1 ê bi̍t-bé í-keng kìa khì $2.',
+'newarticle' => '(Sin)',
+'newarticletext' => "Lí tòe 1 ê liân-kiat lâi kàu 1 bīn iáu-bōe chûn-chāi ê ia̍h. Beh khai-sí pian-chi̍p chit ia̍h, chhiáⁿ tī ē-kha ê bûn-jī keh-á lāi-té phah-jī. ([[{{MediaWiki:Helppage}}|Bo̍k-lio̍k]] kà lí án-choáⁿ chìn-hêng.) Ká-sú lí bô-tiuⁿ-tî lâi kàu chia, ē-sai chhi̍h liû-lám-khì ê '''téng-1-ia̍h''' tńg--khì.",
+'anontalkpagetext' => "----''Pún thó-lūn-ia̍h bô kò·-tēng ê kháu-chō/hō·-thâu, kan-na ū 1 ê IP chū-chí (chhin-chhiūⁿ 123.456.789.123). In-ūi bô kāng lâng tī bô kāng sî-chūn ū khó-lêng tú-hó kong-ke kāng-ê IP, lâu tī chia ê oē ū khó-lêng hō· bô kāng lâng ê! Beh pī-bián chit khoán būn-tê, ē-sái khì [[Special:UserLogin|khui 1 ê hō·-thâu a̍h-sī teng-ji̍p]].''",
+'clearyourcache' => "'''Chù-ì:''' Pó-chûn liáu-āu, tio̍h ē-kì leh kā liû-lám-khì ê cache piàⁿ tiāu chiah khoàⁿ-ē-tio̍h kái-piàn: '''Mozilla:''' chhi̍h ''reload/têng-sin chài-ji̍p'' (a̍h-sī ''Ctrl-R''), '''Internet Explorer kap Opera:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-R'', '''Konqueror''' ''Ctrl-R''.",
+'usercssyoucanpreview' => "'''Phiat-pō·''': Pó-chûn chìn-chêng ē-sái chhi̍h 'Seng khoàⁿ-māi' kiám-cha sin ê CSS a̍h-sī JavaScript.",
+'userjsyoucanpreview' => "'''Phiat-pō·''': Pó-chûn chìn-chêng ē-sái chhi̍h 'Seng khoàⁿ-māi' kiám-cha sin ê CSS a̍h-sī JavaScript.",
+'usercsspreview' => "'''Sè-jī! Lí hiān-chú-sî khoàⁿ--ê sī lí ê su-jîn css ê preview; che iáu-bōe pó-chûn--khí-lâi!'''",
+'userjspreview' => "'''Sè-jī! Lí hiān-chú-sî chhì khoàⁿ--ê sī lí ka-kī ê javascript; che iáu-bōe pó-chûn--khí-lâi!'''",
+'note' => "'''Chù-ì:'''",
+'previewnote' => "'''Thê-chhéⁿ lí che sī 1 bīn kiám-cha chho͘-phe ēng--ê \"seng-khoàⁿ-ia̍h\", iáu-bōe pó-chûn--khí-lâi!'''",
+'session_fail_preview' => "'''Pháiⁿ-sè! Gún chiām-sî bô hoat-tō͘ chhú-lí lí ê pian-chi̍p (goân-in: \"phàng-kiàn sú-iōng kî-kan ê chu-liāu\"). Lô-hoân têng chhì khoàⁿ-māi. Ká-sú iû-goân bô-hāu, ē-sái teng-chhut koh-chài teng-ji̍p hoān-sè tō ē-tit kái-koat.'''",
+'editing' => 'Siu-kái $1',
+'editingsection' => 'Pian-chi̍p $1 (section)',
+'editingcomment' => 'Teh pian-chi̍p $1 (lâu-oē)',
+'editconflict' => 'Siu-kái sio-chhiong: $1',
+'explainconflict' => 'Ū lâng tī lí tng teh siu-kái pún-ia̍h ê sî-chūn oân-sêng kî-tha ê siu-kái. Téng-koân ê bûn-jī-keh hián-sī hiān-chhú-sî siōng sin ê lōe-iông. Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê kái-piàn kap siōng sin ê lōe-iông chéng-ha̍p. <b>Kan-na</b> téng-koân keh-á ê bûn-jī ē tī lí chhi̍h "Pó-chûn" liáu-āu pó-chûn khí lâi.<br />',
+'yourtext' => 'Lí ê bûn-jī',
+'storedversion' => 'Chu-liāu-khò· ê pán-pún',
+'editingold' => "'''KÉNG-KÒ: Lí tng teh siu-kái chit ia̍h ê 1 ê kū siu-tēng-pún. Lí nā kā pó-chûn khí lâi, chit ê siu-tēng-pún sòa-āu ê jīm-hô kái-piàn ē bô khì.'''",
+'yourdiff' => 'Chha-pia̍t',
+'longpagewarning' => "'''SÈ-JĪ: Pún ia̍h $1 kilobyte tn̂g; ū-ê liû-lám-khì bô-hoat-tō· pian-chi̍p 32 kb chó-iū ia̍h-sī koh khah tn̂g ê ia̍h. Chhiáⁿ khó-lū kā chit ia̍h thiah chò khah sè ê toāⁿ-lo̍h.'''",
+'readonlywarning' => "'''CHÙ-Ì: Chu-liāu-khò· taⁿ só tiâu leh thang pān î-siu khang-khòe, só·-í lí hiān-chú-sî bô thang pó-chûn jīn-hô phian-chi̍p hāng-bo̍k. Lí ē-sái kā siong-koan pō·-hūn tah--ji̍p-khì 1-ê bûn-jī tóng-àn pó-chûn, āu-chhiú chiah koh kè-sio̍k.'''",
+'protectedpagewarning' => "'''KÉNG-KÒ: Pún ia̍h só tiâu leh. Kan-taⁿ ū hêng-chèng te̍k-koân ê iōng-chiá (sysop) ē-sái siu-kái.'''",
+'templatesused' => 'Chit ia̍h iōng chia ê pang-bô·:',
+'templatesusedpreview' => 'Chit ê preview iōng chia ê pang-bô͘:',
+'templatesusedsection' => 'Chit ê section iōng chia ê pang-bô͘:',
+'template-protected' => '(pó-hō͘)',
+'template-semiprotected' => '(poàⁿ pó-hō͘)',
+'recreate-moveddeleted-warn' => "'''Sè-jī: Lí taⁿ chún-pī beh khui ê ia̍h, chêng bat hō͘ lâng thâi tiāu koè.''' Lí tio̍h chim-chiok soà-chiap pian-chi̍p chit ia̍h ê pit-iàu-sèng. Chia ū chit ia̍h ê san-tû kì-lo̍k (deletion log) hō͘ lí chham-khó:",
# "Undo" feature
'undo-success' => 'Pian-chi̍p í-keng chhú-siau. Chhiáⁿ khak-tēng, liáu-āu kā ē-kha ho̍k-goân ê kái-piàn pó-chûn--khí-lâi.',
@@ -374,28 +370,28 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'notitlematches' => 'Bô sio-tùi ê ia̍h-piau-tê',
'textmatches' => 'Lōe-iông ū-tùi ê bûn-chiuⁿ',
'notextmatches' => 'Bô sio-tùi ê bûn-chiuⁿ lōe-iông',
-'prevn' => 'chêng $1 hāng',
-'nextn' => 'āu $1 hāng',
-'viewprevnext' => 'Khoàⁿ ($1) ($2) ($3)',
+'prevn' => 'chêng {{PLURAL:$1|$1}} hāng',
+'nextn' => 'āu {{PLURAL:$1|$1}} hāng',
+'viewprevnext' => 'Khoàⁿ ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Bo̍k-lio̍k',
'showingresults' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$1</b> hāng kiat-kó.',
'showingresultsnum' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$3</b> hāng kiat-kó.',
'powersearch' => 'Kiám-sek',
+# Quickbar
+'qbsettings' => 'Quickbar ê siat-tēng',
+
# Preferences page
'preferences' => 'Siat-tēng',
'mypreferences' => 'Góa ê siat-tēng',
'prefsnologin' => 'Bô teng-ji̍p',
'prefsnologintext' => 'Lí it-tēng ài [[Special:UserLogin|teng-ji̍p]] chiah ē-tàng chhiâu iōng-chiá ê siat-tēng.',
-'prefsreset' => 'Iōng-chiá siat-tēng í-keng chiàu goân siat-tēng têng-siat.',
-'qbsettings' => 'Quickbar ê siat-tēng',
'changepassword' => 'Oāⁿ bi̍t-bé',
-'skin' => 'Phôe',
+'prefs-skin' => 'Phôe',
'skin-preview' => 'Chhì khoàⁿ',
-'math' => 'Sò·-ha̍k ê rendering',
-'dateformat' => 'Ji̍t-kî keh-sek',
+'prefs-math' => 'Sò·-ha̍k ê rendering',
'datedefault' => 'Chhìn-chhái',
-'datetime' => 'Ji̍t-kî kap sî-kan',
+'prefs-datetime' => 'Ji̍t-kî kap sî-kan',
'prefs-personal' => 'Iōng-chiá chu-liāu',
'prefs-rc' => 'Chòe-kīn ê kái-piàn & stub ê hián-sī',
'prefs-watchlist' => 'Kàm-sī-toaⁿ',
@@ -404,7 +400,7 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'prefs-misc' => 'Kî-thaⁿ ê siat-tēng',
'saveprefs' => 'Pó-chûn siat-tēng',
'resetprefs' => 'Têng siat-tēng',
-'textboxsize' => 'Pian-chi̍p',
+'prefs-editing' => 'Pian-chi̍p',
'rows' => 'Chōa:',
'columns' => 'Nôa',
'searchresultshead' => 'Chhiau-chhōe kiat-kó ê siat-tēng',
@@ -415,14 +411,17 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'recentchangescount' => 'Hián-sī kúi tiâu chòe-kīn ê kái-piàn:',
'savedprefs' => 'Lí ê iōng-chiá siat-tēng í-keng pó-chûn khí lâi ah.',
'timezonelegend' => 'Sî-khu',
-'timezonetext' => 'Su-ji̍p lí chāi-tē sî-kan kap server sî-kan (UTC) chha kúi tiám-cheng.',
'localtime' => 'Chāi-tē sî-kan sī',
'timezoneoffset' => 'Sî-chha¹',
'servertime' => 'Server sî-kan hiān-chāi sī',
'guesstimezone' => 'Tùi liû-lám-khì chhau--lâi',
'allowemail' => 'Ún-chún pa̍t-ê iōng-chiá kià email kòe-lâi',
'defaultns' => 'Tī chiah ê miâ-khong-kan chhiau-chhōe:',
-'files' => 'Tóng-àn',
+'prefs-files' => 'Tóng-àn',
+'youremail' => 'Lí ê email:',
+'yourrealname' => 'Lí ê chin miâ:',
+'yourlanguage' => 'Kài-bīn gú-giân:',
+'yournick' => 'Lí ê sió-miâ (chhiam-miâ iōng):',
'grouppage-sysop' => '{{ns:project}}:Hêng-chèng jîn-oân',
@@ -446,12 +445,13 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
# Recent changes linked
'recentchangeslinked' => 'Siong-koan ê kái-piàn',
+'recentchangeslinked-feed' => 'Siong-koan ê kái-piàn',
+'recentchangeslinked-toolbox' => 'Siong-koan ê kái-piàn',
'recentchangeslinked-noresult' => 'Lí chí-tēng ê tiâu-kiaⁿ lāi-té chhōe bô jīn-hô kái-piàn.',
# Upload
'upload' => 'Kā tóng-àn chiūⁿ-bāng',
'uploadbtn' => 'Kā tóng-àn chiūⁿ-bāng',
-'reupload' => 'Têng sàng-chiūⁿ-bāng',
'reuploaddesc' => 'Tò khì sàng-chiūⁿ-bāng ê pió.',
'uploadnologin' => 'Bô teng-ji̍p',
'uploadnologintext' => 'Bô [[Special:UserLogin|teng-ji̍p]] bē-sái-tit kā tóng-àn sàng-chiūⁿ-bāng.',
@@ -469,7 +469,6 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'savefile' => 'Pó-chûn tóng-àn',
'uploadedimage' => 'thoân "[[$1]]" chiūⁿ-bāng',
'uploaddisabled' => 'Pháiⁿ-sè, sàng chiūⁿ-bāng ê kong-lêng bô khui.',
-'uploadcorrupt' => 'Tóng-àn nōa--khì he̍k-chiá tóng-àn miâ ê bóe-liu tàu m̄-tio̍h khoán. Chhiáⁿ kiám-cha--chi̍t-ē, liáu-āu têng thoân chiūⁿ-bāng.',
'sourcefilename' => 'Tóng-àn goân miâ:',
'destfilename' => 'Tóng-àn sin miâ:',
'watchthisupload' => 'Kàm-sī chit ia̍h',
@@ -483,11 +482,10 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
'listfiles_description' => 'Soat-bêng',
# File description page
+'file-anchor-link' => 'Tóng-àn',
'imagelinks' => 'Iáⁿ-siōng liân-kiat',
'linkstoimage' => 'Í-hā ê ia̍h liân kàu chit ê iáⁿ-siōng:',
'nolinkstoimage' => 'Bô poàⁿ ia̍h liân kàu chit tiuⁿ iáⁿ-siōng.',
-'noimage' => 'Hō chit ê miâ ê tóng-àn bô tè chhoē. Lí ē-sái $1.',
-'noimage-linktext' => 'kā thoân chiūⁿ bāng',
# MIME search
'mimesearch' => 'MIME chhiau-chhoē',
@@ -655,7 +653,7 @@ Template:Khu-pia̍t-ia̍h',
'rollbackfailed' => 'Ká bē tńg khì',
'cantrollback' => 'Bô-hoat-tō· kā siu-kái ká-tńg--khì; téng ūi kòng-hiàn-chiá sī chit ia̍h î-it ê chok-chiá.',
'alreadyrolled' => 'Bô-hoat-tō· kā [[User:$2|$2]] ([[User talk:$2|Thó-lūn]]) tùi [[:$1]] ê siu-kái ká-tńg-khì; í-keng ū lâng siu-kái a̍h-sī ká-tńg chit ia̍h. Téng 1 ūi siu-kái-chiá sī [[User:$3|$3]] ([[User talk:$3|Thó-lūn]]).',
-'editcomment' => "Siu-kái phêng-lūn sī: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "Siu-kái phêng-lūn sī: \"''\$1''\".",
# Protect
'protectedarticle' => 'pó-hō͘ "[[$1]]"',
@@ -681,13 +679,15 @@ Template:Khu-pia̍t-ia̍h',
# Contributions
'contributions' => 'Iōng-chiá ê kòng-hiàn',
'mycontris' => 'Góa ê kòng-hiàn',
-'nocontribs' => 'Chhōe bô tiâu-kiāⁿ ū-tùi ê hāng-bo̍k.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Chhōe bô tiâu-kiāⁿ ū-tùi ê hāng-bo̍k.',
'uctop' => '(siōng téng ê)',
'month' => 'Kàu tó 1 kó͘ goe̍h ûi-chí:',
'year' => 'Kàu tó 1 nî ûi-chí:',
'sp-contributions-newbies' => 'Kan-taⁿ hián-sī sin kháu-chō ê kòng-kiàn',
'sp-contributions-newbies-sub' => 'Sin lâi--ê',
+'sp-contributions-deleted' => 'Hō͘ lâng thâi tiāu ê kòng-hiàn',
+'sp-contributions-talk' => 'thó-lūn',
'sp-contributions-search' => 'Chhoē chhut kòng-kiàn',
'sp-contributions-username' => 'IP Chū-chí a̍h iōng-chiá miâ:',
'sp-contributions-submit' => 'Chhoē',
@@ -755,13 +755,11 @@ Liâu--lo̍h-khì chìn-chêng, chhiáⁿ seng khak-tēng lí ū liáu-kái chia
'exportcuronly' => 'Hān hiān-chhú-sî ê siu-téng-pún, mài pau-koat kui-ê le̍k-sú',
# Namespace 8 related
-'allmessages' => 'Hē-thóng sìn-sit',
-'allmessagesname' => 'Miâ',
-'allmessagesdefault' => 'Siat piān ê bûn-jī',
-'allmessagescurrent' => 'Bo̍k-chêng ê bûn-jī',
-'allmessagestext' => 'Chia lia̍t chhut só·-ū tī MediaWiki: miâ-khong-kan ê hē-thóng sìn-sit.',
-'allmessagesfilter' => 'Thai sìn-sek ê tiâu-ba̍k:',
-'allmessagesmodified' => 'Kan-taⁿ hián-sī kái--kòe ê',
+'allmessages' => 'Hē-thóng sìn-sit',
+'allmessagesname' => 'Miâ',
+'allmessagesdefault' => 'Siat piān ê bûn-jī',
+'allmessagescurrent' => 'Bo̍k-chêng ê bûn-jī',
+'allmessagestext' => 'Chia lia̍t chhut só·-ū tī MediaWiki: miâ-khong-kan ê hē-thóng sìn-sit.',
# Thumbnails
'thumbnail-more' => 'Hòng-tōa',
@@ -861,7 +859,7 @@ Nā-chún *m̄-sī* lí, chhiáⁿ mài tòe liân-kiat khì. Chit tiuⁿ phoe
'watchlistedit-normal-done' => 'Í-keng ū $1 ia̍h ùi lí ê kám-sī-toaⁿ soá cháu:',
# Special:Version
-'version' => 'Pán-pún', # Not used as normal message but as header for the special page itself
+'version' => 'Pán-pún',
# Special:FilePath
'filepath' => 'Tóng-àn ê soàⁿ-lō·',
diff --git a/languages/messages/MessagesNap.php b/languages/messages/MessagesNap.php
index 72f0ed66..d8318d7d 100644
--- a/languages/messages/MessagesNap.php
+++ b/languages/messages/MessagesNap.php
@@ -128,22 +128,21 @@ $messages = array(
'category_header' => 'Paggene rìnt\'a categurìa "$1"',
'subcategories' => 'Categurìe secunnarie',
-'about' => 'Nfromma',
-'article' => 'Articulo',
-'newwindow' => "(s'arape n'ata fenèsta)",
-'cancel' => 'Scancèlla',
+'about' => 'Nfromma',
+'article' => 'Articulo',
+'newwindow' => "(s'arape n'ata fenèsta)",
+'cancel' => 'Scancèlla',
+'mypage' => "'A paggena mia",
+'mytalk' => "'E mmie chiacchieriàte",
+'anontalk' => 'Chiacchierate pe chisto IP',
+
+# Cologne Blue skin
'qbfind' => 'Truòva',
'qbedit' => 'Càgna',
'qbpageoptions' => 'Chesta paggena',
'qbpageinfo' => "Nfrummazzione ncopp'â paggena",
'qbmyoptions' => "'E ppaggene mie",
'qbspecialpages' => 'Pàggene speciàle',
-'mypage' => "'A paggena mia",
-'mytalk' => "'E mmie chiacchieriàte",
-'anontalk' => 'Chiacchierate pe chisto IP',
-
-# Metadata in edit box
-'metadata_help' => 'Metadate:',
'errorpagetitle' => 'Sbaglio',
'returnto' => 'Torna a $1.',
@@ -173,7 +172,7 @@ $messages = array(
'imagepage' => 'Paggena fiùra',
'otherlanguages' => 'Ate léngue',
'redirectedfrom' => "(Redirect 'a $1)",
-'lastmodifiedat' => "Urdema cagnamiénto pe' a paggena: $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Urdema cagnamiénto pe' a paggena: $2, $1.",
'viewcount' => 'Chesta paggena è stata lètta {{PLURAL:$1|una vòta|$1 vòte}}.',
'jumpto' => 'Vaje a:',
'jumptonavigation' => 'navigazione',
@@ -236,8 +235,6 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'createaccount' => 'Cria nu cunto nuovo',
'gotaccount' => "Tiene già nu cunto? '''$1'''.",
'gotaccountlink' => 'Tràse',
-'username' => 'Nomme utente',
-'yourlanguage' => 'Lengua:',
'loginerror' => "Probblema 'e accièsso",
'loginsuccesstitle' => 'Acciesso affettuato',
'nosuchusershort' => 'Nun ce stanno utente cu o nòmme "<nowiki>$1</nowiki>". Cuntrolla si scrivìste buòno.',
@@ -272,7 +269,6 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
# History pages
'currentrev' => "Verzione 'e mmo",
-'deletedrev' => '[scancellata]',
# Revision deletion
'rev-delundel' => 'faje vedé/annascunne',
@@ -280,7 +276,6 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
# Search results
'searchresults' => "Risultato d''a recerca",
'searchresulttext' => "Pe sapé de cchiù ncopp'â comme ascia 'a {{SITENAME}}, vere [[{{MediaWiki:Helppage}}|Ricerca in {{SITENAME}}]].",
-'noexactmatch' => "''''A paggena \"\$1\" nun asiste.''' Se pô [[:\$1|criala mmo]].",
'notitlematches' => "Voce addemannata nun truvata dint' 'e titule 'e articulo",
'notextmatches' => "Voce addemannata nun truvata dint' 'e teste 'e articulo",
'searchhelp-url' => 'Help:Ajùto',
@@ -293,6 +288,8 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'prefs-watchlist' => 'Asservate speciale',
'columns' => 'Culonne:',
'timezoneregion-africa' => 'Afreca',
+'username' => 'Nomme utente',
+'yourlanguage' => 'Lengua:',
# User rights log
'rightsnone' => '(nisciuno)',
@@ -313,20 +310,21 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'rc_categories_any' => 'Qualònca',
# Recent changes linked
-'recentchangeslinked' => 'Cagnamiénte cullegate',
+'recentchangeslinked' => 'Cagnamiénte cullegate',
+'recentchangeslinked-feed' => 'Cagnamiénte cullegate',
+'recentchangeslinked-toolbox' => 'Cagnamiénte cullegate',
# Upload
-'upload' => 'Careca file',
-'fileexists-thumb' => "<center>'''Immagine esistente'''</center>",
-'uploadedimage' => 'ha carecato "[[$1]]"',
+'upload' => 'Careca file',
+'uploadedimage' => 'ha carecato "[[$1]]"',
# Special:ListFiles
'listfiles_name' => 'Nomme',
# File description page
+'file-anchor-link' => 'Fiura',
'filehist-user' => 'Utente',
'imagelinks' => 'Jonte ê ffiure',
-'noimage-linktext' => 'carrecarlo mmo',
# Random page
'randompage' => 'Na paggena qualsiase',
@@ -383,11 +381,11 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
# Rollback
'rollback' => "Ausa na revizione 'e primma",
-'revertpage' => "Cangiaje 'e cagnamiénte 'e [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), cu â verzione 'e pprimma 'e [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => "Cangiaje 'e cagnamiénte 'e [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), cu â verzione 'e pprimma 'e [[User:$1|$1]]",
# Protect
'prot_1movedto2' => 'ha spustato [[$1]] a [[$2]]',
-'protect-expiry-options' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite',
# Undelete
'viewdeletedpage' => "Vìre 'e ppàggine scancellate",
@@ -399,6 +397,8 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'contributions' => 'Contribbute utente',
'mycontris' => 'Mie contribbute',
+'sp-contributions-talk' => 'Chiàcchiera',
+
# What links here
'whatlinkshere' => 'Paggene ca cullegano a chesta',
'whatlinkshere-title' => 'Paggene ca cullegano a $1',
@@ -407,7 +407,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
# Block/unblock
'blockip' => 'Ferma utelizzatóre',
'ipadressorusername' => 'Nnerizzo IP o nomme utente',
-'ipboptions' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite',
'blockipsuccesssub' => 'Blocco aseguito',
'blocklistline' => '$1, $2 ha fermato $3 ($4)',
'blocklink' => 'ferma',
@@ -431,11 +431,9 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'export' => "Spurta 'e ppaggene",
# Namespace 8 related
-'allmessages' => "'Mmasciate d''o sistema",
-'allmessagesname' => 'Nomme',
-'allmessagescurrent' => "Testo 'e mo",
-'allmessagesfilter' => "Lammecca ncopp' 'e mmasciate:",
-'allmessagesmodified' => 'Faje vedé solo chille cagnate',
+'allmessages' => "'Mmasciate d''o sistema",
+'allmessagesname' => 'Nomme',
+'allmessagescurrent' => "Testo 'e mo",
# Special:Import
'import' => 'Mpurta paggene',
diff --git a/languages/messages/MessagesNb.php b/languages/messages/MessagesNb.php
index 949e8c43..749ac7c3 100644
--- a/languages/messages/MessagesNb.php
+++ b/languages/messages/MessagesNb.php
@@ -1,6 +1,9 @@
<?php
/** Norwegian Bokmål (‪Norsk (bokmål)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment Correct code, but for historical reasons this started as 'no'. Falls back to 'no'. May be reversed some day.
diff --git a/languages/messages/MessagesNds.php b/languages/messages/MessagesNds.php
index 0491b30d..818fbcd5 100644
--- a/languages/messages/MessagesNds.php
+++ b/languages/messages/MessagesNds.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Purodha
* @author Slomox
* @author The Evil IP address
* @author Urhixidur
@@ -51,35 +52,33 @@ $namespaceAliases = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#redirect', '#wiederleiden' ),
- 'notoc' => array( '0', '__NOTOC__', '__KEENINHOLTVERTEKEN__' ),
- 'forcetoc' => array( '0', '__FORCETOC__', '__WIESINHOLTVERTEKEN__' ),
- 'toc' => array( '0', '__TOC__', '__INHOLTVERTEKEN__' ),
- 'noeditsection' => array( '0', '__NOEDITSECTION__', '__KEENÄNNERNLINK__' ),
- 'currentmonth' => array( '1', 'CURRENTMONTH', 'AKTMAAND' ),
- 'currentmonthname' => array( '1', 'CURRENTMONTHNAME', 'AKTMAANDNAAM' ),
- 'currentmonthnamegen' => array( '1', 'CURRENTMONTHNAMEGEN', 'AKTMAANDNAAMGEN' ),
- 'currentday' => array( '1', 'CURRENTDAY', 'AKTDAG' ),
- 'currentdayname' => array( '1', 'CURRENTDAYNAME', 'AKTDAGNAAM' ),
- 'currentyear' => array( '1', 'CURRENTYEAR', 'AKTJOHR' ),
- 'currenttime' => array( '1', 'CURRENTTIME', 'AKTTIED' ),
- 'numberofarticles' => array( '1', 'NUMBEROFARTICLES', 'ARTIKELTALL' ),
- 'pagename' => array( '1', 'PAGENAME', 'SIETNAAM' ),
- 'pagenamee' => array( '1', 'PAGENAMEE', 'SIETNAAME' ),
- 'namespace' => array( '1', 'NAMESPACE', 'NAAMRUUM' ),
- 'img_thumbnail' => array( '1', 'thumbnail', 'thumb', 'duum' ),
- 'img_right' => array( '1', 'right', 'rechts' ),
- 'img_left' => array( '1', 'left', 'links' ),
- 'img_none' => array( '1', 'none', 'keen' ),
- 'img_width' => array( '1', '$1px', '$1px' ),
- 'img_center' => array( '1', 'center', 'centre', 'merrn' ),
- 'img_framed' => array( '1', 'framed', 'enframed', 'frame', 'rahmt' ),
- 'sitename' => array( '1', 'SITENAME', 'STEEDNAAM' ),
- 'ns' => array( '0', 'NS:', 'NR:' ),
- 'localurl' => array( '0', 'LOCALURL:', 'STEEDURL:' ),
- 'localurle' => array( '0', 'LOCALURLE:', 'STEEDURLE:' ),
- 'server' => array( '0', 'SERVER', 'SERVER' ),
- 'grammar' => array( '0', 'GRAMMAR:', 'GRAMMATIK:' ),
+ 'redirect' => array( '0', '#wiederleiden', '#WEITERLEITUNG', '#REDIRECT' ),
+ 'notoc' => array( '0', '__KEENINHOLTVERTEKEN__', '__KEIN_INHALTSVERZEICHNIS__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__WIESINHOLTVERTEKEN__', '__INHALTSVERZEICHNIS_ERZWINGEN__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__INHOLTVERTEKEN__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__KEENÄNNERNLINK__', '__ABSCHNITTE_NICHT_BEARBEITEN__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'AKTMAAND', 'JETZIGER_MONAT', 'JETZIGER_MONAT_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'AKTMAANDNAAM', 'JETZIGER_MONATSNAME', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'AKTMAANDNAAMGEN', 'JETZIGER_MONATSNAME_GENITIV', 'CURRENTMONTHNAMEGEN' ),
+ 'currentday' => array( '1', 'AKTDAG', 'JETZIGER_KALENDERTAG', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'AKTDAGNAAM', 'JETZIGER_WOCHENTAG', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'AKTJOHR', 'JETZIGES_JAHR', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'AKTTIED', 'JETZIGE_UHRZEIT', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'ARTIKELTALL', 'ARTIKELANZAHL', 'NUMBEROFARTICLES' ),
+ 'pagename' => array( '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ),
+ 'img_thumbnail' => array( '1', 'duum', 'miniatur', 'thumbnail', 'thumb' ),
+ 'img_right' => array( '1', 'rechts', 'right' ),
+ 'img_left' => array( '1', 'links', 'left' ),
+ 'img_none' => array( '1', 'keen', 'ohne', 'none' ),
+ 'img_center' => array( '1', 'merrn', 'zentriert', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'rahmt', 'gerahmt', 'framed', 'enframed', 'frame' ),
+ 'sitename' => array( '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ),
+ 'ns' => array( '0', 'NR:', 'NS:' ),
+ 'localurl' => array( '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'STEEDURLE:', 'LOCALURLE:' ),
+ 'grammar' => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
);
@@ -323,7 +322,7 @@ $messages = array(
'category-media-header' => 'Mediendatein in de Kategorie „$1“',
'category-empty' => "''In disse Kategorie sünd aktuell kene Sieden.''",
'hidden-categories' => '{{PLURAL:$1|Verstekene Kategorie|Verstekene Kategorien}}',
-'hidden-category-category' => 'Verstekene Kategorien', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verstekene Kategorien',
'category-subcat-count' => '{{PLURAL:$2|De Kategorie hett disse Ünnerkategorie:|De Kategorie hett disse Ünnerkategorie{{PLURAL:$1||n}}, vun $2 Ünnerkategorien alltohoop:}}',
'category-subcat-count-limited' => 'De Kategorie hett disse {{PLURAL:$1|Ünnerkategorie|$1 Ünnerkategorien}}:',
'category-article-count' => '{{PLURAL:$2|De Kategorie bargt disse Siet:|De Kategorie bargt disse {{PLURAL:$1|Siet|Sieden}}, vun $2 Sieden alltohoop:}}',
@@ -336,10 +335,18 @@ $messages = array(
'mainpagedocfooter' => 'Kiek de [http://meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentatschoon för dat Anpassen vun de Brukerböversiet]
un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook] för Hülp to de Bruuk un Konfiguratschoon.',
-'about' => 'Över',
-'article' => 'Artikel',
-'newwindow' => '(apent sik in en nieg Finster)',
-'cancel' => 'Afbreken',
+'about' => 'Över',
+'article' => 'Artikel',
+'newwindow' => '(apent sik in en nieg Finster)',
+'cancel' => 'Afbreken',
+'moredotdotdot' => 'Mehr...',
+'mypage' => 'Mien Siet',
+'mytalk' => 'Mien Diskuschoon',
+'anontalk' => 'Diskuschoonssiet vun disse IP',
+'navigation' => 'Navigatschoon',
+'and' => '&#32;un',
+
+# Cologne Blue skin
'qbfind' => 'Finnen',
'qbbrowse' => 'Blädern',
'qbedit' => 'Ännern',
@@ -347,15 +354,32 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'qbpageinfo' => 'Sietendaten',
'qbmyoptions' => 'Instellen',
'qbspecialpages' => 'Spezialsieten',
-'moredotdotdot' => 'Mehr...',
-'mypage' => 'Mien Siet',
-'mytalk' => 'Mien Diskuschoon',
-'anontalk' => 'Diskuschoonssiet vun disse IP',
-'navigation' => 'Navigatschoon',
-'and' => '&#32;un',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaten:',
+'faq' => 'Faken stellte Fragen',
+'faqpage' => 'Project:Faken stellte Fragen',
+
+# Vector skin
+'vector-action-addsection' => 'Thema tofögen',
+'vector-action-delete' => 'Wegdoon',
+'vector-action-move' => 'Schuven',
+'vector-action-protect' => 'Schulen',
+'vector-action-undelete' => 'Wedderhalen',
+'vector-action-unprotect' => 'Freegeven',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hülpsied',
+'vector-namespace-image' => 'Datei',
+'vector-namespace-main' => 'Sied',
+'vector-namespace-media' => 'Mediensied',
+'vector-namespace-mediawiki' => 'Naricht',
+'vector-namespace-project' => 'Projektsied',
+'vector-namespace-special' => 'Spezialsied',
+'vector-namespace-talk' => 'Diskuschoon',
+'vector-namespace-template' => 'Vörlaag',
+'vector-namespace-user' => 'Brukersied',
+'vector-view-create' => 'Opstellen',
+'vector-view-edit' => 'Ännern',
+'vector-view-history' => 'Historie bekieken',
+'vector-view-view' => 'Lesen',
+'vector-view-viewsource' => 'Borntext bekieken',
'errorpagetitle' => 'Fehler',
'returnto' => 'Trüch to $1.',
@@ -405,7 +429,7 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'otherlanguages' => 'Annere Spraken',
'redirectedfrom' => '(wiederwiest vun $1)',
'redirectpagesub' => 'Redirectsiet',
-'lastmodifiedat' => 'Disse Siet is toletzt üm $2, $1 ännert worrn.', # $1 date, $2 time
+'lastmodifiedat' => 'Disse Siet is toletzt üm $2, $1 ännert worrn.',
'viewcount' => 'Disse Siet is {{PLURAL:$1|een|$1}} Maal opropen worrn.',
'protectedpage' => 'Schuulte Sieden',
'jumpto' => 'Wesseln na:',
@@ -416,7 +440,6 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'aboutsite' => 'Över {{SITENAME}}',
'aboutpage' => 'Project:Över_{{SITENAME}}',
'copyright' => 'Inholt is verfögbor ünner de $1.',
-'copyrightpagename' => '{{SITENAME}} Copyright',
'copyrightpage' => '{{ns:project}}:Lizenz',
'currentevents' => 'Aktuell Schehn',
'currentevents-url' => 'Project:Aktuell Schehn',
@@ -424,8 +447,6 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Bearbeidenshülp',
'edithelppage' => 'Help:Ännern',
-'faq' => 'Faken stellte Fragen',
-'faqpage' => 'Project:Faken stellte Fragen',
'helppage' => 'Help:Hülp',
'mainpage' => 'Hööftsiet',
'mainpage-description' => 'Hööftsiet',
@@ -502,10 +523,6 @@ MySQL mell den Fehler <tt>$3: $4</tt>.',
'dberrortextcl' => 'Dor weer en Syntaxfehler in de Datenbankaffraag.
De letzte Datenbankaffraag weer: $1 ut de Funktschoon <tt>$2</tt>.
MySQL mell den Fehler: <tt>$3: $4</tt>.',
-'noconnect' => 'Dat Wiki hett Malesch mit de Technik un de Software kunn keen Verbinnen to de Datenbank opnehmen.<br />
-$1',
-'nodb' => 'De Software kunn de Datenbank $1 nich utwählen',
-'cachederror' => "Disse Siet is en Kopie ut'n Cache un is mööglicherwies nich aktuell.",
'laggedslavemode' => 'Wohrschau: Disse Siet is villicht nich mehr op den ne’esten Stand.',
'readonly' => 'Datenbank is sparrt',
'enterlockreason' => 'Giff den Grund an, worüm de Datenbank sparrt warrn schall un taxeer, wo lang de Sparr duert',
@@ -565,7 +582,6 @@ As Grund is angeven: ''$2''.",
'virus-unknownscanner' => 'Unbekannten Virenscanner:',
# Login and logout pages
-'logouttitle' => 'Bruker-Afmellen',
'logouttext' => "'''Du büst nu afmellt.'''
Du kannst {{SITENAME}} nu anonym wiederbruken oder di ünner dissen oder en annern Brukernaam wedder [[Special:UserLogin|anmellen]].
@@ -573,7 +589,6 @@ Denk dor an, dat welk Sieden ünner Ümstänn noch jümmer so wiest warrn köön
'welcomecreation' => '== Willkamen, $1! ==
Dien Brukerkonto is nu inricht.
Vergeet nich, de Sied för di persönlich [[Special:Preferences|intostellen]].',
-'loginpagetitle' => 'Bruker-Anmellen',
'yourname' => 'Dien Brukernaam',
'yourpassword' => 'Dien Passwoort',
'yourpasswordagain' => 'Passwoort nochmal ingeven',
@@ -595,26 +610,7 @@ Vergeet nich, de Sied för di persönlich [[Special:Preferences|intostellen]].',
'createaccountmail' => 'över E-Mail',
'badretype' => 'De beiden Passwöör stimmt nich övereen.',
'userexists' => 'Disse Brukernaam is al weg. Bitte söök di en annern ut.',
-'youremail' => 'Dien E-Mail (kene Plicht) *',
-'username' => 'Brukernaam:',
-'uid' => 'Bruker-ID:',
-'prefs-memberingroups' => 'Liddmaten vun de {{PLURAL:$1|Grupp|Gruppen}}:',
-'yourrealname' => 'Dien echten Naam (kene Plicht)',
-'yourlanguage' => 'Snittstellenspraak',
-'yourvariant' => 'Dien Spraak',
-'yournick' => 'Dien Ökelnaam (för dat Ünnerschrieven)',
-'badsig' => 'De Signatur is nich korrekt, kiek nochmal na de HTML-Tags.',
-'badsiglength' => 'Diene Ünnerschrift is to lang; de schall weniger as $1 {{PLURAL:$1|Teken|Tekens}} hebben.',
-'yourgender' => 'Geslecht:',
-'gender-unknown' => 'Nich angeven',
-'gender-male' => 'Mann',
-'gender-female' => 'Fro',
-'prefs-help-gender' => 'Mutt nich angeven warrn: Warrt bruukt, dat di de Software korrekt ansnacken kann. Disse Informatschoon is vör annere Brukers sichtbor.',
-'email' => 'Nettbreef',
-'prefs-help-realname' => 'De echte Naam mutt nich angeven warrn. Wenn du em angiffst, warrt de Naam bruukt, dat diene Arbeit di torekent warrn kann.',
'loginerror' => 'Fehler bi dat Anmellen',
-'prefs-help-email' => 'De E-Mail-Adress mutt nich angeven warrn. Aver so köönt annere Brukers di över E-Mail schrieven, ahn dat du dien Identität priesgiffst, un du kannst di ok en nee Passwoord toschicken laten, wenn du dien oold vergeten hest.',
-'prefs-help-email-required' => 'E-Mail-Adress nödig.',
'nocookiesnew' => 'De Brukertogang is anleggt, aver du büst nich inloggt. {{SITENAME}} bruukt för disse Funktschoon Cookies, aktiveer de Cookies un logg di denn mit dien nieg Brukernaam un den Password in.',
'nocookieslogin' => '{{SITENAME}} bruukt Cookies för dat Inloggen vun de Bruker. Du hest Cookies deaktiveert, aktiveer de Cookies un versöök dat noch eenmal.',
'noname' => 'Du muttst en Brukernaam angeven.',
@@ -666,17 +662,12 @@ Wenn du dat Brukerkonto gor nich hebben wullst, denn is disse Naricht egaal för
'retypenew' => 'Nee Passwoort (nochmal)',
'resetpass_submit' => 'Passwoort instellen un inloggen',
'resetpass_success' => 'Dien Passwoort is mit Spood ännert worrn. Warrst nu anmellt …',
-'resetpass_bad_temporary' => 'Passwoort op Tiet gellt nich mehr. Du hest al mit Spood dien Passwoort ännert oder en neet Passwoort op Tiet kregen.',
'resetpass_forbidden' => 'Passwöör köönt nich ännert warrn.',
'resetpass-no-info' => 'Du musst anmellt wesen, dat du disse Sied direkt opropen kannst.',
'resetpass-submit-loggedin' => 'Passwoord ännern',
'resetpass-wrong-oldpass' => 'Dat Passwoord (temporär oder aktuell) gellt nich.
Villicht hest du dien Passwoord al ännert oder noch wedder en nee temporär Passwoord anfeddert.',
'resetpass-temp-password' => 'Temporär Passwoord:',
-'resetpass-log' => 'Passwoord-Trüchsett-Logbook',
-'resetpass-logtext' => 'Ünnen warrt en Logbook mit de Brukers wiest, bi de dat Passwoord von en Administrater trüchsett worrn is.',
-'resetpass-logentry' => 'hett dat Passwoord för $1 ännert',
-'resetpass-comment' => 'Grund för dat Passwoord-Trüchsetten:',
# Edit page toolbar
'bold_sample' => 'Fetten Text',
@@ -749,7 +740,6 @@ Wenn du över de Sperr snacken wist, denn mell di bi $1 oder een vun de [[{{Medi
'blockededitsource' => "De Text vun '''diene Ännern''' an '''$1''':",
'whitelistedittitle' => 'de Sied to ännern is dat nödig, anmellt to wesen',
'whitelistedittext' => 'Du musst di $1, dat du Sieden ännern kannst.',
-'confirmedittitle' => 'E-Mail-Adress mutt bestätigt wesen, dat du wat ännern kannst',
'confirmedittext' => 'Du musst dien E-Mail-Adress bestätigen, dat du wat ännern kannst. Stell dien E-Mail-Adress in de [[Special:Preferences|{{int:preferences}}]] in un bestätig ehr.',
'nosuchsectiontitle' => 'Dissen Afsnitt gifft dat nich',
'nosuchsectiontext' => 'Du hest versöcht den Afsnitt „$1“ to ännern, den dat nich gifft. Du kannst blot Afsneed ännern, de al dor sünd.',
@@ -770,7 +760,8 @@ Wenn du en anonymen Bruker büst un meenst, dat disse Kommentaren nich an di ric
oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse Sied ännern]</span>.',
'userpage-userdoesnotexist' => 'Dat Brukerkonto „$1“ gifft dat noch nich. Överlegg, wat du disse Siet würklich nee opstellen/ännern wullt.',
'clearyourcache' => "'''Denk doran:''' No den Spiekern muttst du dien Browser noch seggen, de niege Version to laden: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''IE:''' ''Strg-F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
-'usercssjsyoucanpreview' => "'''Tipp:''' Bruuk den Vörschau-Knoop, üm dien nieg CSS/JS vör dat Spiekern to testen.",
+'usercssyoucanpreview' => "'''Tipp:''' Bruuk den Vörschau-Knoop, üm dien nieg CSS vör dat Spiekern to testen.",
+'userjsyoucanpreview' => "'''Tipp:''' Bruuk den Vörschau-Knoop, üm dien nieg JS vör dat Spiekern to testen.",
'usercsspreview' => "'''Denk doran, dat du blots en Vörschau vun dien CSS ankickst, dat is noch nich spiekert!'''",
'userjspreview' => "'''Denk doran, dat du blots en Vörschau vun dien JS ankiekst, dat is noch nich spiekert!'''",
'userinvalidcssjstitle' => "'''Wohrschau:''' Dat gifft keen Skin „$1“. Denk dor an, dat .css- un .js-Sieden för Brukers mit en lütten Bookstaven anfangen mööt, to’n Bispeel ''{{ns:user}}:Brukernaam/monobook.css'' un nich ''{{ns:user}}:Brukernaam/Monobook.css''.",
@@ -836,12 +827,12 @@ Bruker mit Sysop-Rechten doran arbeiden könnt.'''",
'permissionserrors' => 'Fehlers mit de Rechten',
'permissionserrorstext' => 'Du hest keen Verlööf, dat to doon. De {{PLURAL:$1|Grund is|Grünn sünd}}:',
'permissionserrorstext-withaction' => 'Du hest nich de Rechten $2. Dat hett {{PLURAL:$1|dissen Grund|disse Grünn}}:',
-'recreate-deleted-warn' => "'''Wohrschau: Du stellst jüst en Siet wedder nee op, de vördem al mal wegsmeten worrn is.'''
+'recreate-moveddeleted-warn' => "'''Wohrschau: Du stellst jüst en Sied wedder nee op, de vördem al mal wegsmeten worrn is.'''
-Överlegg genau, wat du würklich de Siet nee opstellen wist.
-Dat du bescheed weetst, worüm de Siet vörher wegsmeten worrn is, hier nu de Uttog ut dat Lösch-Logbook:",
-'deleted-notice' => 'De Sied is wegdaan worrn. Wat nu kummt, is en Deel ut dat Lösch-Logbook för disse Sied.',
-'deletelog-fulllog' => 'Kumplett Logbook ankieken',
+Överlegg genau, wat du würklich de Sied nee opstellen wist.
+Dat du bescheed weetst, worüm de Sied vörher wegsmeten worrn is, hier nu en Deel ut dat Lösch-Logbook:",
+'moveddeleted-notice' => 'De Sied is wegdaan worrn. Wat nu kummt, is en Deel ut dat Lösch-Logbook för disse Sied.',
+'log-fulllog' => 'Vull Logbook ankieken',
'edit-hook-aborted' => 'Ännern is ahn angeven Grund vun en Hook afbraken worrn.',
'edit-gone-missing' => 'De Sied kunn nich aktuell maakt warrn.
Schient so, as wenn se wegdaan worrn is.',
@@ -881,7 +872,7 @@ De Grund weer: ''$2''",
'revisionasof' => 'Version vun $1',
'revision-info' => '<div id="viewingold-warning" style="background: #ffbdbd; border: 1px solid #BB7979; font-weight: bold; padding: .5em 1em;">
Dit is en ole Version vun disse Siet, so as $2 de $1 ännert hett. De Version kann temlich stark vun de <a href="{{FULLURL:{{FULLPAGENAME}}}}" title="{{FULLPAGENAME}}">aktuelle Version</a> afwieken.
-</div>', # Additionally available: $3: revision id
+</div>',
'previousrevision' => 'Nächstöllere Version→',
'nextrevision' => 'Ne’ere Version →',
'currentrevisionlink' => 'aktuelle Version',
@@ -897,7 +888,6 @@ Legende:
(Letzte) = Ünnerscheed to de vörige Version,
L = Lütte Ännern",
'history-fieldset-title' => 'Versionsgeschicht dörkieken',
-'deletedrev' => '[wegsmeten]',
'histfirst' => 'Öllste',
'histlast' => 'Ne’este',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
@@ -906,71 +896,75 @@ L = Lütte Ännern",
# Revision feed
'history-feed-title' => 'Versionsgeschicht',
'history-feed-description' => 'Versionsgeschicht för disse Siet',
-'history-feed-item-nocomment' => '$1 üm $2', # user at time
+'history-feed-item-nocomment' => '$1 üm $2',
'history-feed-empty' => 'De angevene Siet gifft dat nich.
Villicht is se löscht worrn oder hett en annern Naam kregen.
Versöök [[Special:Search|dat Söken]] na annere relevante Sieden.',
# Revision deletion
-'rev-deleted-comment' => '(Kommentar rutnahmen)',
-'rev-deleted-user' => '(Brukernaam rutnahmen)',
-'rev-deleted-event' => '(Logbook-Indrag rutnahmen)',
-'rev-deleted-text-permission' => 'Disse Version is nu wegdaan un is nich mehr apen in’t Archiv to sehn.
-Details dorto staht in dat [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbook].',
-'rev-deleted-text-view' => 'Disse Version is wegsmeten worrn un is nich mehr apen in’t Archiv to sehn.
+'rev-deleted-comment' => '(Kommentar rutnahmen)',
+'rev-deleted-user' => '(Brukernaam rutnahmen)',
+'rev-deleted-event' => '(Logbook-Indrag rutnahmen)',
+'rev-deleted-text-permission' => 'Disse Version is nu wegdaan un is nich mehr apen in’t Archiv to sehn.
+Details dorto staht in dat [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbook].',
+'rev-deleted-text-unhide' => 'Disse Version is nu wegdaan un is nich mehr apen in’t Archiv to sehn.
+Details dorto staht in dat [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbook].
+As Administrator kannst du de Version [$1 över dissen Lenk] ankieken.',
+'rev-deleted-text-view' => 'Disse Version is wegsmeten worrn un is nich mehr apen in’t Archiv to sehn.
As Administrater op {{SITENAME}} kannst du ehr aver noch jümmer sehn.
-Mehr över dat Wegsmieten is in dat [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbook] to finnen.',
-'rev-deleted-no-diff' => 'Du kannst dissen Ünnerscheed nich ankieken. Een von de Versionen is nich mehr apen in’t Archiv to sehn.
-Mehr dorto steiht in dat [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Wegsmiet-Logbook].',
-'rev-deleted-unhide-diff' => 'Een vun de Versionen vun dissen Ünnerscheed is nich mehr apen in’t Archiv to sehn.
-Details staht in’t [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Wegsmiet-Logbook].
+Mehr över dat Wegsmieten is in dat [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Lösch-Logbook] to finnen.',
+'rev-deleted-no-diff' => 'Du kannst dissen Ünnerscheed nich ankieken. Een von de Versionen is nich mehr apen in’t Archiv to sehn.
+Mehr dorto steiht in dat [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Wegsmiet-Logbook].',
+'rev-deleted-unhide-diff' => 'Een vun de Versionen vun dissen Ünnerscheed is nich mehr apen in’t Archiv to sehn.
+Details staht in’t [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Wegsmiet-Logbook].
As Administrater kannst du [$1 mit dissen Lenk] den Ünnerscheed ankieken.',
-'rev-delundel' => 'wiesen/versteken',
-'revisiondelete' => 'Versionen wegsmieten/wedderhalen',
-'revdelete-nooldid-title' => 'kene Versionen dor, de passt',
-'revdelete-nooldid-text' => 'Du hest keen Version för disse Akschoon angeven, de utwählte Version gifft dat nich oder du versöchst, de ne’este Version wegtodoon.',
-'revdelete-nologtype-title' => 'Keen Logbooktyp angeven',
-'revdelete-nologtype-text' => 'Du hest keen Logtyp för disse Akschoon angeven.',
-'revdelete-toomanytargets-title' => 'To veel Telen',
-'revdelete-toomanytargets-text' => 'Du hest to veel Logtypen för disse Akschoon angeven.',
-'revdelete-nologid-title' => 'Ungüllig Logindrag',
-'revdelete-nologid-text' => 'Is keen Logtyp utwählt oder den utwählten Logtyp gifft dat nich.',
-'revdelete-selected' => "'''{{PLURAL:$2|Wählte Version|Wählte Versionen}} vun [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Wählt Logbook-Indrag|Wählte Logbook-Indrääg}}:'''",
-'revdelete-text' => "'''Wegsmetene Versionen un Akschonen staht noch jümmer in de Versionsgeschicht un Logböker, sünd aver nich mehr apen intosehn.'''
-
-{{SITENAME}}-Administraters köönt de Sieden noch jümmer sehn un ok wedderhalen, solang dat nich extra fastleggt is, dat ok Administraters dat nich mehr mehr dröfft.
-Segg also to, dat du dat ok würklich wullt, dat du de Konsequenzen versteist un dat dat mit de [[{{MediaWiki:Policy-url}}|Richtlienen]] övereen geit.",
-'revdelete-suppress-text' => "Ünnerdrücken schull '''blot''' bi disse Fäll bruukt warrn:
+'rev-delundel' => 'wiesen/versteken',
+'revisiondelete' => 'Versionen wegsmieten/wedderhalen',
+'revdelete-nooldid-title' => 'kene Versionen dor, de passt',
+'revdelete-nooldid-text' => 'Du hest keen Version för disse Akschoon angeven, de utwählte Version gifft dat nich oder du versöchst, de ne’este Version wegtodoon.',
+'revdelete-nologtype-title' => 'Keen Logbooktyp angeven',
+'revdelete-nologtype-text' => 'Du hest keen Logtyp för disse Akschoon angeven.',
+'revdelete-nologid-title' => 'Ungüllig Logindrag',
+'revdelete-nologid-text' => 'Is keen Logtyp utwählt oder den utwählten Logtyp gifft dat nich.',
+'revdelete-no-file' => 'De angeven Datei gifft dat nich.',
+'revdelete-show-file-submit' => 'Jo',
+'revdelete-selected' => "'''{{PLURAL:$2|Wählte Version|Wählte Versionen}} vun [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Wählt Logbook-Indrag|Wählte Logbook-Indrääg}}:'''",
+'revdelete-text' => "'''Wegsmetene Versionen un Akschonen staht noch jümmer in de Versionsgeschicht un Logböker, sünd aver nich mehr apen intosehn.'''
+{{SITENAME}}-Administraters köönt de Sieden noch jümmer sehn un ok wedderhalen, solang dat nich extra fastleggt is, dat ok Administraters dat nich mehr mehr dröfft.",
+'revdelete-suppress-text' => "Ünnerdrücken schull '''blot''' bi disse Fäll bruukt warrn:
* Nich passliche persönliche Information
*: ''Adressen, Telefonnummern, Sozialversekerungsnummern etc.''",
-'revdelete-legend' => 'Inschränkungen för de Sichtborkeit setten',
-'revdelete-hide-text' => 'Versiontext versteken',
-'revdelete-hide-name' => 'Akschoon un Teel versteken',
-'revdelete-hide-comment' => 'Kommentar versteken',
-'revdelete-hide-user' => 'Brukernaam/IP vun’n Schriever versteken',
-'revdelete-hide-restricted' => 'Ok för Administraters versteken',
-'revdelete-suppress' => 'Grund för dat Wegsmieten ok för Administraters versteken',
-'revdelete-hide-image' => 'Dateiinholt versteken',
-'revdelete-unsuppress' => 'Inschränkungen för wedderhaalte Versionen wegdoon',
-'revdelete-log' => 'Grund:',
-'revdelete-submit' => 'Op utwählte Version anwennen',
-'revdelete-logentry' => 'Sichtborkeit vun Version för [[$1]] ännert',
-'logdelete-logentry' => 'Sichtborkeit vun Begeevnis för [[$1]] ännert',
-'revdelete-success' => "'''Sichtborkeit vun Version mit Spood ännert.'''",
-'logdelete-success' => "'''Sichtborkeit in Logbook mit Spood ännert.'''",
-'revdel-restore' => 'Sichtborkeit ännern',
-'pagehist' => 'Versionshistorie',
-'deletedhist' => 'wegsmetene Versionen',
-'revdelete-content' => 'Inholt',
-'revdelete-summary' => 'Tosamenfaten',
-'revdelete-uname' => 'Brukernaam',
-'revdelete-restricted' => 'Inschränkungen för Administraters instellt',
-'revdelete-unrestricted' => 'Inschränkungen för Administraters rutnahmen',
-'revdelete-hid' => 'hett $1 versteken',
-'revdelete-unhid' => 'hett $1 wedder sichtbor maakt',
-'revdelete-log-message' => '$1 för $2 {{PLURAL:$2|Version|Versionen}}',
-'logdelete-log-message' => '$1 för $2 {{PLURAL:$2|Logbook-Indrag|Logbook-Indrääg}}',
+'revdelete-legend' => 'Inschränkungen för de Sichtborkeit setten',
+'revdelete-hide-text' => 'Versiontext versteken',
+'revdelete-hide-image' => 'Dateiinholt versteken',
+'revdelete-hide-name' => 'Akschoon un Teel versteken',
+'revdelete-hide-comment' => 'Kommentar versteken',
+'revdelete-hide-user' => 'Brukernaam/IP vun’n Schriever versteken',
+'revdelete-hide-restricted' => 'Ok för Administraters versteken',
+'revdelete-suppress' => 'Grund för dat Wegsmieten ok för Administraters versteken',
+'revdelete-unsuppress' => 'Inschränkungen för wedderhaalte Versionen wegdoon',
+'revdelete-log' => 'Grund:',
+'revdelete-submit' => 'Op utwählte Version anwennen',
+'revdelete-logentry' => 'Sichtborkeit vun Version för [[$1]] ännert',
+'logdelete-logentry' => 'Sichtborkeit vun Begeevnis för [[$1]] ännert',
+'revdelete-success' => "'''Sichtborkeit vun Version mit Spood ännert.'''",
+'revdelete-failure' => "'''Sichtborkeit vun de Version kunn nich ännert warrn.'''
+$1",
+'logdelete-success' => "'''Sichtborkeit in Logbook mit Spood ännert.'''",
+'revdel-restore' => 'Sichtborkeit ännern',
+'pagehist' => 'Versionshistorie',
+'deletedhist' => 'wegsmetene Versionen',
+'revdelete-content' => 'Inholt',
+'revdelete-summary' => 'Tosamenfaten',
+'revdelete-uname' => 'Brukernaam',
+'revdelete-restricted' => 'Inschränkungen för Administraters instellt',
+'revdelete-unrestricted' => 'Inschränkungen för Administraters rutnahmen',
+'revdelete-hid' => 'hett $1 versteken',
+'revdelete-unhid' => 'hett $1 wedder sichtbor maakt',
+'revdelete-log-message' => '$1 för $2 {{PLURAL:$2|Version|Versionen}}',
+'logdelete-log-message' => '$1 för $2 {{PLURAL:$2|Logbook-Indrag|Logbook-Indrääg}}',
+'revdelete-edit-reasonlist' => 'Grünn för’t Wegsmieten ännern',
# Suppression log
'suppressionlog' => 'Oversight-Logbook',
@@ -1007,67 +1001,13 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
'mergelogpagetext' => 'Dit is dat Logbook över de tohoopföhrten Versionshistorien.',
# Diffs
-'history-title' => 'Versionshistorie vun „$1“',
-'difference' => '(Ünnerscheed twischen de Versionen)',
-'lineno' => 'Reeg $1:',
-'compareselectedversions' => 'Ünnerscheed twischen den utwählten Versionen wiesen',
-'visualcomparison' => 'Visuell Vergliek',
-'wikicodecomparison' => 'Wikitext-Vergliek',
-'editundo' => 'rutnehmen',
-'diff-multi' => '(Twischen de beiden Versionen {{PLURAL:$1|liggt noch ene Twischenversion|doot noch $1 Twischenversionen liggen}}.)',
-'diff-movedto' => 'schaven na $1',
-'diff-styleadded' => '$1-Stil toföögt',
-'diff-added' => '$1 toföögt',
-'diff-changedto' => 'ännert na $1',
-'diff-movedoutof' => 'schaven ut $1',
-'diff-styleremoved' => '$1-Stil rutnahmen',
-'diff-removed' => '$1 rutnahmen',
-'diff-changedfrom' => 'ännert vun $1',
-'diff-src' => 'Born',
-'diff-withdestination' => 'mit Teel $1',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;un $1 $2',
-'diff-width' => 'Breed',
-'diff-height' => 'Hööchd',
-'diff-p' => "en '''Afsatz'''",
-'diff-blockquote' => "en '''Block'''",
-'diff-h1' => "en '''Överschrift (Level 1)'''",
-'diff-h2' => "en '''Överschrift (Level 2)'''",
-'diff-h3' => "en '''Överschrift (Level 3)'''",
-'diff-h4' => "en '''Överschrift (Level 4)'''",
-'diff-h5' => "en '''Överschrift (Level 5)'''",
-'diff-pre' => "en '''vörformateerten Block'''",
-'diff-div' => "en '''Blockelement'''",
-'diff-ul' => "en '''List ahn Nummern'''",
-'diff-ol' => "en '''List mit Nummern'''",
-'diff-li' => "en '''Listenindrag'''",
-'diff-table' => "en '''Tabell'''",
-'diff-tbody' => "en '''Tabelleninholt'''",
-'diff-tr' => "en '''Reeg'''",
-'diff-td' => "en '''Zell'''",
-'diff-th' => "en '''Kopp-Indrag'''",
-'diff-br' => "en '''ne’e Reeg'''",
-'diff-hr' => "en '''waagrecht Lien'''",
-'diff-code' => "en '''Koodblock'''",
-'diff-dl' => "en '''List vun Definitschonen'''",
-'diff-dt' => "en '''Utdruck, de defineert warrt'''",
-'diff-dd' => "en '''Definitschoon'''",
-'diff-input' => "en '''Formularfeld'''",
-'diff-form' => "en '''Formular'''",
-'diff-img' => "en '''Bild'''",
-'diff-span' => "en '''Span'''",
-'diff-a' => "en '''Lenk'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''fett'''",
-'diff-strong' => "'''ruthoven'''",
-'diff-em' => "'''Nadruck'''",
-'diff-font' => "'''Schriftoort'''",
-'diff-big' => "'''groot'''",
-'diff-del' => "'''wegdaan'''",
-'diff-tt' => "'''faste Breed'''",
-'diff-sub' => "'''deepstellt'''",
-'diff-sup' => "'''hoochstellt'''",
-'diff-strike' => "'''dörstreken'''",
+'history-title' => 'Versionshistorie vun „$1“',
+'difference' => '(Ünnerscheed twischen de Versionen)',
+'lineno' => 'Reeg $1:',
+'compareselectedversions' => 'Ünnerscheed twischen den utwählten Versionen wiesen',
+'showhideselectedversions' => 'Utwählt Versionen wiesen/versteken',
+'editundo' => 'rutnehmen',
+'diff-multi' => '(Twischen de beiden Versionen {{PLURAL:$1|liggt noch ene Twischenversion|doot noch $1 Twischenversionen liggen}}.)',
# Search results
'searchresults' => 'Söökresultaten',
@@ -1075,27 +1015,24 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
'searchresulttext' => 'För mehr Informatschonen över {{SITENAME}}, kiek [[{{MediaWiki:Helppage}}|{{SITENAME}} dörsöken]].',
'searchsubtitle' => 'Du hest na „[[:$1]]“ söcht ([[Special:Prefixindex/$1|all Sieden, de mit „$1“ anfangt]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Sieden, de na „$1“ wiest]])',
'searchsubtitleinvalid' => 'För de Söökanfraag „$1“',
-'noexactmatch' => 'Gifft kene Siet mit dissen Naam. Bruuk de Vulltextsöök oder legg de Siet [[:$1|nee]] an.',
-'noexactmatch-nocreate' => "'''Gifft kene Siet mit’n Titel „$1“.'''",
'toomanymatches' => 'To veel Sieden funnen för de Söök, versöök en annere Affraag.',
'titlematches' => 'Övereenstimmen mit Överschriften',
'notitlematches' => 'Kene Övereenstimmen',
'textmatches' => 'Övereenstimmen mit Texten',
'notextmatches' => 'Kene Övereenstimmen',
-'prevn' => 'vörige $1',
-'nextn' => 'tokamen $1',
+'prevn' => 'vörige {{PLURAL:$1|$1}}',
+'nextn' => 'tokamen {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Vörig Resultat|Vörige $1 Resultaten}}',
'nextn-title' => 'Tokamen {{PLURAL:$1|Resultat|$1 Resultaten}}',
'shown-title' => 'Wies $1 {{PLURAL:$1|Resultat|Resultaten}} per Sied',
-'viewprevnext' => 'Wies ($1) ($2) ($3).',
+'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Söökoptionen',
'searchmenu-exists' => "* Sied '''[[$1]]'''",
'searchmenu-new' => "'''Stell de Sied „[[:$1]]“ in dit Wiki nee op!'''",
'searchhelp-url' => 'Help:Hülp',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies Sieden, de mit disse Bookstaven anfangt]]',
-'searchprofile-articles' => 'Inholtsieden',
-'searchprofile-articles-and-proj' => 'Inholt- un Projektsieden',
-'searchprofile-project' => 'Projektsieden',
+'searchprofile-articles' => 'Inholdsieden',
+'searchprofile-project' => 'Hülp- un Projektsieden',
'searchprofile-images' => 'Datein',
'searchprofile-everything' => 'Allens',
'searchprofile-advanced' => 'Verwiedert',
@@ -1104,8 +1041,6 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
'searchprofile-images-tooltip' => 'Na Datein söken',
'searchprofile-everything-tooltip' => 'Allen Inholt dörsöken (inklusiv Diskuschoonssieden)',
'searchprofile-advanced-tooltip' => 'Söök in angevene Naamrüüm',
-'prefs-search-nsdefault' => 'Standard-Naamrüüm:',
-'prefs-search-nscustom' => 'Söök in angevene Naamrüüm:',
'search-result-size' => '$1 ({{PLURAL:$2|een Woort|$2 Wöör}})',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Redirect $1)',
@@ -1118,11 +1053,12 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
'search-mwsuggest-disabled' => 'kene Vörslääg',
'search-relatedarticle' => 'Verwandt',
'mwsuggest-disable' => 'Vörslääg per Ajax utstellen',
+'searcheverything-enable' => 'In all Naamrüüm söken',
'searchrelated' => 'verwandt',
'searchall' => 'all',
'showingresults' => "Hier {{PLURAL:$1|is een Resultat|sünd '''$1''' Resultaten}}, anfungen mit #'''$2'''.",
'showingresultsnum' => "Hier {{PLURAL:$3|is een Resultat|sünd '''$3''' Resultaten}}, anfungen mit #'''$2'''.",
-'showingresultstotal' => "Dit {{PLURAL:$4|is de Fundstell '''$1''' vun '''$3'''|sünd de Fundstellen '''$1–$2''' vun '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' vun '''$3'''|Resultaten '''$1 - $2''' vun '''$3'''}} för '''$4'''",
'nonefound' => "'''Henwies''': Na de Standardinstellung warrt blot en poor Naamrüüm dörsöcht.
Du kannst dat Woord ''all:'' vör dien Söökwoord setten, dat all Naamrüüm (ok Diskuschoonssieden, Vörlagen usw.) dörsöcht warrt. Dat sülve geit mit de Naams vun de enkelten Naamrüüm.",
'search-nonefound' => 'För de Söökanfraag geev dat keen Resultaten.',
@@ -1131,94 +1067,121 @@ Du kannst dat Woord ''all:'' vör dien Söökwoord setten, dat all Naamrüüm (o
'powersearch-ns' => 'Söök in Naamrüüm:',
'powersearch-redir' => 'Redirects wiesen',
'powersearch-field' => 'Söök na:',
+'powersearch-toggleall' => 'All',
+'powersearch-togglenone' => 'Keen',
'search-external' => 'Externe Söök',
'searchdisabled' => '<p>De Vulltextsöök is wegen Överlast en Stoot deaktiveert. In disse Tied kannst du disse Google-Söök verwennen,
de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
+# Quickbar
+'qbsettings' => 'Siedenliest',
+'qbsettings-none' => 'Keen',
+'qbsettings-fixedleft' => 'Links, fast',
+'qbsettings-fixedright' => 'Rechts, fast',
+'qbsettings-floatingleft' => 'Links, sweven',
+'qbsettings-floatingright' => 'Rechts, sweven',
+
# Preferences page
-'preferences' => 'Instellen',
-'mypreferences' => 'För mi Instellen',
-'prefs-edits' => 'Wo faken du in dit Wiki Sieden ännert hest:',
-'prefsnologin' => 'Nich anmellt',
-'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} anmellt]</span> wesen, dat du dien Instellen ännern kannst.',
-'prefsreset' => 'Instellen sünd op Standard trüchsett.',
-'qbsettings' => 'Siedenliest',
-'qbsettings-none' => 'Keen',
-'qbsettings-fixedleft' => 'Links, fast',
-'qbsettings-fixedright' => 'Rechts, fast',
-'qbsettings-floatingleft' => 'Links, sweven',
-'qbsettings-floatingright' => 'Rechts, sweven',
-'changepassword' => 'Passwoort ännern',
-'skin' => 'Utsehn vun de Steed',
-'skin-preview' => 'Vörschau',
-'math' => 'TeX',
-'dateformat' => 'Datumsformat',
-'datedefault' => 'Standard',
-'datetime' => 'Datum un Tiet',
-'math_failure' => 'Parser-Fehler',
-'math_unknown_error' => 'Unbekannten Fehler',
-'math_unknown_function' => 'Unbekannte Funktschoon',
-'math_lexing_error' => "'Lexing'-Fehler",
-'math_syntax_error' => 'Syntaxfehler',
-'math_image_error' => 'dat Konverteren na PNG harr keen Spood.',
-'math_bad_tmpdir' => 'Kann dat Temporärverteken för mathematsche Formeln nich anleggen oder beschrieven.',
-'math_bad_output' => 'Kann dat Teelverteken för mathematsche Formeln nich anleggen oder beschrieven.',
-'math_notexvc' => 'Dat texvc-Programm kann nich funnen warrn. Kiek ok math/README.',
-'prefs-personal' => 'Brukerdaten',
-'prefs-rc' => 'Letzte Ännern un Wiesen vun kotte Sieten',
-'prefs-watchlist' => 'Oppasslist',
-'prefs-watchlist-days' => 'Maximumtall Daag, de in de Oppasslist wiest warrt:',
-'prefs-watchlist-days-max' => '(Maximal 7 Daag)',
-'prefs-watchlist-edits' => 'Maximumtall Daag, de in de verwiederte Oppasslist wiest warrt:',
-'prefs-watchlist-edits-max' => '(Maximaltall: 1000)',
-'prefs-misc' => 'Verscheden Kraam',
-'prefs-resetpass' => 'Passwoord ännern',
-'saveprefs' => 'Spiekern',
-'resetprefs' => 'Trüchsetten',
-'restoreprefs' => 'All Standardinstellungen wedderhalen',
-'textboxsize' => 'Grött vun’t Textfeld',
-'prefs-edit-boxsize' => 'Grött vun dat Finster för Ännern.',
-'rows' => 'Regen',
-'columns' => 'Spalten',
-'searchresultshead' => 'Söökresultaten',
-'resultsperpage' => 'Treffer pro Siet',
-'contextlines' => 'Lienen pro Treffer',
-'contextchars' => 'Teken je Reeg',
-'stub-threshold' => 'Grött ünner de Lenken op <a href="#" class="stub">Stubbens un lütte Sieden</a> farvlich kenntekent warrn schöölt (in Bytes):',
-'recentchangesdays' => 'Daag, de de List vun de „Ne’esten Ännern“ wiesen schall:',
-'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Dag|Daag}})',
-'recentchangescount' => 'Antall Ännern, de bi Letzte Ännern, in Versionsgeschichten un in Logböker wiest warrt:',
-'savedprefs' => 'Allens spiekert.',
-'timezonelegend' => 'Tiedrebeed:',
-'timezonetext' => 'Giff de Antall vun de Stünnen an, de twüschen dien Tiedrebeet un UTC liggen.',
-'localtime' => 'Oortstied:',
-'timezoneselect' => 'Tiedzoon:',
-'timezoneuseserverdefault' => 'Tied op’n Server bruken',
-'timezoneuseoffset' => 'Anners (Ünnerscheed angeven)',
-'timezoneoffset' => 'Ünnerscheed¹:',
-'servertime' => 'Tied op den Server:',
-'guesstimezone' => 'Ut den Browser övernehmen',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlantisch Ozean',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indisch Ozean',
-'timezoneregion-pacific' => 'Pazifisch Ozean',
-'allowemail' => 'Nettbreven vun annere Brukers annehmen',
-'prefs-searchoptions' => 'Söökopschonen',
-'prefs-namespaces' => 'Naamrüüm',
-'defaultns' => 'In disse Naamrüüm schall standardmatig söökt warrn:',
-'default' => 'Standard',
-'files' => 'Datein',
-'prefs-custom-css' => 'Anpasst CSS',
-'prefs-custom-js' => 'Anpasst JS',
+'preferences' => 'Instellen',
+'mypreferences' => 'För mi Instellen',
+'prefs-edits' => 'Wo faken du in dit Wiki Sieden ännert hest:',
+'prefsnologin' => 'Nich anmellt',
+'prefsnologintext' => 'Du musst <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmellt]</span> wesen, dat du dien Instellen ännern kannst.',
+'changepassword' => 'Passwoort ännern',
+'prefs-skin' => 'Utsehn vun de Steed',
+'skin-preview' => 'Vörschau',
+'prefs-math' => 'TeX',
+'datedefault' => 'Standard',
+'prefs-datetime' => 'Datum un Tiet',
+'prefs-personal' => 'Brukerdaten',
+'prefs-rc' => 'Letzte Ännern un Wiesen vun kotte Sieten',
+'prefs-watchlist' => 'Oppasslist',
+'prefs-watchlist-days' => 'Maximumtall Daag, de in de Oppasslist wiest warrt:',
+'prefs-watchlist-days-max' => '(Maximal 7 Daag)',
+'prefs-watchlist-edits' => 'Maximumtall Daag, de in de verwiederte Oppasslist wiest warrt:',
+'prefs-watchlist-edits-max' => '(Maximaltall: 1000)',
+'prefs-misc' => 'Verscheden Kraam',
+'prefs-resetpass' => 'Passwoord ännern',
+'prefs-email' => 'E-Mail-Instellungen',
+'prefs-rendering' => 'Utsehn vun de Sied',
+'saveprefs' => 'Spiekern',
+'resetprefs' => 'Trüchsetten',
+'restoreprefs' => 'All Standardinstellungen wedderhalen',
+'prefs-editing' => 'Grött vun’t Textfeld',
+'prefs-edit-boxsize' => 'Grött vun dat Finster för Ännern.',
+'rows' => 'Regen',
+'columns' => 'Spalten',
+'searchresultshead' => 'Söökresultaten',
+'resultsperpage' => 'Treffer pro Siet',
+'contextlines' => 'Lienen pro Treffer',
+'contextchars' => 'Teken je Reeg',
+'stub-threshold' => 'Grött ünner de Lenken op <a href="#" class="stub">Stubbens un lütte Sieden</a> farvlich kenntekent warrn schöölt (in Bytes):',
+'recentchangesdays' => 'Daag, de de List vun de „Ne’esten Ännern“ wiesen schall:',
+'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Dag|Daag}})',
+'recentchangescount' => 'Antall Ännern, de bi Letzte Ännern, in Versionsgeschichten un in Logböker wiest warrt:',
+'savedprefs' => 'Allens spiekert.',
+'timezonelegend' => 'Tiedrebeed:',
+'localtime' => 'Oortstied:',
+'timezoneuseserverdefault' => 'Tied op’n Server bruken',
+'timezoneuseoffset' => 'Anners (Ünnerscheed angeven)',
+'timezoneoffset' => 'Ünnerscheed¹:',
+'servertime' => 'Tied op den Server:',
+'guesstimezone' => 'Ut den Browser övernehmen',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlantisch Ozean',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indisch Ozean',
+'timezoneregion-pacific' => 'Pazifisch Ozean',
+'allowemail' => 'Nettbreven vun annere Brukers annehmen',
+'prefs-searchoptions' => 'Söökopschonen',
+'prefs-namespaces' => 'Naamrüüm',
+'defaultns' => 'In disse Naamrüüm schall standardmatig söökt warrn:',
+'default' => 'Standard',
+'prefs-files' => 'Datein',
+'prefs-custom-css' => 'Anpasst CSS',
+'prefs-custom-js' => 'Anpasst JS',
+'prefs-reset-intro' => 'Du kannst disse Sied bruken, dien Instellungen al op de Standardinstellung trüchtosetten.
+Dat kann nich wedder ungeschehn maakt warrn.',
+'prefs-emailconfirm-label' => 'E-Mail-Bestätigung:',
+'prefs-textboxsize' => 'Grött vun dat Änner-Finster',
+'youremail' => 'Dien E-Mail (kene Plicht) *',
+'username' => 'Brukernaam:',
+'uid' => 'Bruker-ID:',
+'prefs-memberingroups' => 'Liddmaten vun de {{PLURAL:$1|Grupp|Gruppen}}:',
+'prefs-registration' => 'Tied vun dat Anmellen:',
+'yourrealname' => 'Dien echten Naam (kene Plicht)',
+'yourlanguage' => 'Snittstellenspraak',
+'yourvariant' => 'Dien Spraak',
+'yournick' => 'Dien Ökelnaam (för dat Ünnerschrieven)',
+'badsig' => 'De Signatur is nich korrekt, kiek nochmal na de HTML-Tags.',
+'badsiglength' => 'Diene Ünnerschrift is to lang; de schall weniger as $1 {{PLURAL:$1|Teken|Tekens}} hebben.',
+'yourgender' => 'Geslecht:',
+'gender-unknown' => 'Nich angeven',
+'gender-male' => 'Mann',
+'gender-female' => 'Fro',
+'prefs-help-gender' => 'Mutt nich angeven warrn: Warrt bruukt, dat di de Software korrekt ansnacken kann. Disse Informatschoon is vör annere Brukers sichtbor.',
+'email' => 'Nettbreef',
+'prefs-help-realname' => 'De echte Naam mutt nich angeven warrn. Wenn du em angiffst, warrt de Naam bruukt, dat diene Arbeit di torekent warrn kann.',
+'prefs-help-email' => 'De E-Mail-Adress mutt nich angeven warrn. Aver so köönt annere Brukers di över E-Mail schrieven, ahn dat du dien Identität priesgiffst, un du kannst di ok en nee Passwoord toschicken laten, wenn du dien oold vergeten hest.',
+'prefs-help-email-required' => 'E-Mail-Adress nödig.',
+'prefs-info' => 'Basisinformatschoon',
+'prefs-i18n' => 'Spraakinstellungen',
+'prefs-signature' => 'Ünnerschrift',
+'prefs-dateformat' => 'Datumsformat',
+'prefs-advancedediting' => 'Anner Instellungen',
+'prefs-advancedrc' => 'Anner Instellungen',
+'prefs-advancedrendering' => 'Anner Instellungen',
+'prefs-advancedsearchoptions' => 'Anner Instellungen',
+'prefs-advancedwatchlist' => 'Anner Instellungen',
+'prefs-diffs' => 'Ünnerscheed',
# User rights
-'userrights' => 'Brukerrechten inrichten', # Not used as normal message but as header for the special page itself
+'userrights' => 'Brukerrechten inrichten',
'userrights-lookup-user' => 'Brukergruppen verwalten',
'userrights-user-editname' => 'Brukernaam ingeven:',
'editusergroup' => 'Brukergruppen ännern',
@@ -1301,6 +1264,8 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
'right-editprotected' => 'Schuulte Sieden ännern (ahn Kaskadensperr)',
'right-editinterface' => 'Systemnarichten ännern',
'right-editusercssjs' => 'Anner Lüüd ehr CSS- un JS-Datein ännern',
+'right-editusercss' => 'Anner Lüüd ehr CSS-Datein ännern',
+'right-edituserjs' => 'Anner Lüüd ehr JS-Datein ännern',
'right-rollback' => 'Sieden gau trüchdreihn',
'right-markbotedits' => 'Trüchdreihte Ännern as Bot-Ännern marken',
'right-noratelimit' => 'Tempolimit nich ünnerworpen',
@@ -1392,6 +1357,8 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
# Recent changes linked
'recentchangeslinked' => 'Ännern an lenkte Sieden',
+'recentchangeslinked-feed' => 'Ännern an lenkte Sieden',
+'recentchangeslinked-toolbox' => 'Ännern an lenkte Sieden',
'recentchangeslinked-title' => 'Ännern an Sieden, de vun „$1“ ut lenkt sünd',
'recentchangeslinked-noresult' => 'In disse Tiet hett nüms de lenkten Sieden ännert.',
'recentchangeslinked-summary' => "Disse List wiest de letzten Ännern an de Sieden, de vun en bestimmte Siet ut verlenkt oder in en bestimmte Kategorie in sünd. Sieden, de op diene [[Special:Watchlist|Oppasslist]] staht, sünd '''fett''' schreven.",
@@ -1401,7 +1368,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
# Upload
'upload' => 'Hoochladen',
'uploadbtn' => 'Datei hoochladen',
-'reupload' => 'Nee hoochladen',
'reuploaddesc' => 'Trüch to de Hoochladen-Siet.',
'uploadnologin' => 'Nich anmellt',
'uploadnologintext' => 'Du musst [[Special:UserLogin|anmellt wesen]], dat du Datein hoochladen kannst.',
@@ -1449,7 +1415,6 @@ Kiek bi de [[Special:NewFiles|Galerie vun ne’e Datein]] för en Översicht mit
* Naam vun diene Datei: '''<tt>[[:$1]]</tt>'''
* Naam vun de Datei, de al dor is: '''<tt>[[:$2]]</tt>'''
Blot dat Ennen vun de Datei is bi dat Groot-/Lütt-Schrieven anners. Kiek na, wat de Datein villicht desülven sünd.",
-'fileexists-thumb' => "<center>'''Vörhannene Datei'''</center>",
'fileexists-thumbnail-yes' => "De Datei schient en Bild to wesen, dat lütter maakt is ''(thumbnail)''. [[$1|thumb]]
Kiek di de Datei '''<tt>[[:$1]]</tt>''' an.
Wenn dat dat Bild in vulle Grött is, denn bruukst du keen extra Vörschaubild hoochladen.",
@@ -1469,7 +1434,6 @@ Wenn du ehr liekers hoochladen wullt, gah trüch un laad de Datei ünner en anne
'uploaddisabledtext' => 'Dat Hoochladen vun Datein is utschalt.',
'php-uploaddisabledtext' => 'Dat Hoochladen vun Datein is in PHP utstellt. Kiek de file_uploads-Instellungen na.',
'uploadscripted' => 'In disse Datei steiht HTML- oder Skriptkood in, de vun welk Browsers verkehrt dorstellt oder utföhrt warrn kann.',
-'uploadcorrupt' => 'De Datei is korrupt oder hett en falsch Ennen. Datei pröven un nieg hoochladen.',
'uploadvirus' => 'In de Datei stickt en Virus! Mehr: $1',
'sourcefilename' => 'Dateinaam op dien Reekner:',
'destfilename' => 'Dateinaam, so as dat hier spiekert warrn schall:',
@@ -1498,6 +1462,7 @@ Kiek na, wat de Siet ok online is, tööv en Stoot un versöök dat denn noch we
Kann angahn, dat dat beter geiht, wenn du dat to en Tiet versöchst, to de op de Siet nich ganz so veel los is.',
'license' => 'Lizenz:',
+'license-header' => 'Lizenz:',
'nolicense' => 'nix utwählt',
'license-nopreview' => '(Vörschau nich mööglich)',
'upload_source_url' => ' (gellen, apen togängliche URL)',
@@ -1516,6 +1481,7 @@ Kann angahn, dat dat beter geiht, wenn du dat to en Tiet versöchst, to de op de
'listfiles_count' => 'Versionen',
# File description page
+'file-anchor-link' => 'Bild',
'filehist' => 'Datei-Historie',
'filehist-help' => 'Klick op de Tiet, dat du de Datei ankieken kannst, so as se do utseeg.',
'filehist-deleteall' => 'all wegsmieten',
@@ -1530,6 +1496,7 @@ Kann angahn, dat dat beter geiht, wenn du dat to en Tiet versöchst, to de op de
'filehist-dimensions' => 'Grött',
'filehist-filesize' => 'Dateigrött',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Datei fehlt',
'imagelinks' => 'Dateiverwiesen',
'linkstoimage' => 'Disse {{PLURAL:$1|Sied|Sieden}} bruukt dit Bild:',
'linkstoimage-more' => 'Mehr as {{PLURAL:$1|ene Sied|$1 Sieden}} wiest na disse Datei.
@@ -1539,15 +1506,16 @@ En [[Special:WhatLinksHere/$2|kumplette List]] gifft dat ok.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mehr Verwiesen]] för disse Datei.',
'redirectstofile' => 'Disse {{PLURAL:$1|Datei is|Datein sünd}} en Redirect op disse Datei:',
'duplicatesoffile' => 'Disse {{PLURAL:$1|Datei is|Datein sünd}} jüst de {{PLURAL:$1|glieke|glieken}} as disse Datei hier ([[Special:FileDuplicateSearch/$2|mehr Infos]]):',
-'sharedupload' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Kiek bi $1 för mehr Informatschoon.',
-'shareduploadwiki-desc' => 'Wat nu kummt is de Text vun de $1 dor.',
-'shareduploadwiki-linktext' => 'Sied to de Datei',
-'noimage' => 'Ene Datei mit dissen Naam gifft dat nich, du kannst ehr $1.',
-'noimage-linktext' => 'hoochladen',
+'sharedupload' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.',
+'sharedupload-desc-there' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.
+Kiek op de [$2 Bildsied dor] för mehr Infos.',
+'sharedupload-desc-here' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.
+De [$2 Bildsied vun dor] warrt ünnen wiest.',
+'filepage-nofile' => 'Gifft keen Datei mit dissen Naam.',
+'filepage-nofile-link' => 'Dat gifft keen Datei mit dissen Naam, aver du kannst een [$1 hoochladen].',
'uploadnewversion-linktext' => 'Ne’e Version vun disse Datei hoochladen',
-'shared-repo-from' => 'ut $1', # $1 is the repository name
-'shared-repo' => 'en tohoop bruukt Medienarchiv', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'ut $1',
+'shared-repo' => 'en tohoop bruukt Medienarchiv',
# File reversion
'filerevert' => '„$1“ Trüchsetten',
@@ -1637,8 +1605,8 @@ to den vun den tweeten Wiederleiden wiest warrt, un to den de eerste Wiederleide
'brokenredirects' => 'Kaputte Wiederleiden',
'brokenredirectstext' => 'Disse Redirects wiest na Sieden, de dat nich gifft.',
-'brokenredirects-edit' => '(ännern)',
-'brokenredirects-delete' => '(wegsmieten)',
+'brokenredirects-edit' => 'ännern',
+'brokenredirects-delete' => 'wegsmieten',
'withoutinterwiki' => 'Sieden ahn Spraaklenken',
'withoutinterwiki-summary' => 'Disse Sieden hebbt keen Lenken na annere Spraakversionen:',
@@ -1752,8 +1720,9 @@ Kiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].',
'special-categories-sort-abc' => 'alphabeetsch sorteren',
# Special:DeletedContributions
-'deletedcontributions' => 'Wegsmetene Bidrääg vun’n Bruker',
-'deletedcontributions-title' => 'Wegsmetene Bidrääg vun’n Bruker',
+'deletedcontributions' => 'Wegsmetene Bidrääg vun’n Bruker',
+'deletedcontributions-title' => 'Wegsmetene Bidrääg vun’n Bruker',
+'sp-deletedcontributions-contribs' => 'Bidrääg',
# Special:LinkSearch
'linksearch' => 'Weblenken söken',
@@ -1779,17 +1748,21 @@ Kiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].',
'newuserlog-autocreate-entry' => 'Brukerkonto automaatsch opstellt',
# Special:ListGroupRights
-'listgrouprights' => 'Brukergruppen-Rechten',
-'listgrouprights-summary' => 'Dit is en List vun de Brukergruppen, de in dit Wiki defineert sünd, un de Rechten, de dor mit verbunnen sünd.
+'listgrouprights' => 'Brukergruppen-Rechten',
+'listgrouprights-summary' => 'Dit is en List vun de Brukergruppen, de in dit Wiki defineert sünd, un de Rechten, de dor mit verbunnen sünd.
Mehr Informatschonen över enkelte Rechten staht ünner [[{{MediaWiki:Listgrouprights-helppage}}]].',
-'listgrouprights-group' => 'Grupp',
-'listgrouprights-rights' => 'Rechten',
-'listgrouprights-helppage' => 'Help:Gruppenrechten',
-'listgrouprights-members' => '(Matenlist)',
-'listgrouprights-addgroup' => 'Kann Brukers to {{PLURAL:$2|disse Grupp|disse Gruppen}} tofögen: $1',
-'listgrouprights-removegroup' => 'Kann Brukers ut {{PLURAL:$2|disse Grupp|disse Gruppen}} rutnehmen: $1',
-'listgrouprights-addgroup-all' => 'Kann all Gruppen tofögen',
-'listgrouprights-removegroup-all' => 'Kann all Gruppen wegnehmen',
+'listgrouprights-group' => 'Grupp',
+'listgrouprights-rights' => 'Rechten',
+'listgrouprights-helppage' => 'Help:Gruppenrechten',
+'listgrouprights-members' => '(Matenlist)',
+'listgrouprights-addgroup' => 'Kann Brukers to {{PLURAL:$2|disse Grupp|disse Gruppen}} tofögen: $1',
+'listgrouprights-removegroup' => 'Kann Brukers ut {{PLURAL:$2|disse Grupp|disse Gruppen}} rutnehmen: $1',
+'listgrouprights-addgroup-all' => 'Kann all Gruppen tofögen',
+'listgrouprights-removegroup-all' => 'Kann all Gruppen wegnehmen',
+'listgrouprights-addgroup-self' => 'Kann {{PLURAL:$2|Grupp|Gruppen}} bi dat egen Brukerkonto tofögen: $1',
+'listgrouprights-removegroup-self' => 'Kann {{PLURAL:$2|Grupp|Gruppen}} bi dat egen Brukerkonto rutnehmen: $1',
+'listgrouprights-addgroup-self-all' => 'Kann all Gruppen to’t egen Brukerkonto tofögen',
+'listgrouprights-removegroup-self-all' => 'Kann all Gruppen vun’t egen Brukerkonto wegdoon',
# E-mail user
'mailnologin' => 'Du büst nich anmellt.',
@@ -1894,6 +1867,7 @@ De Instellungen vun dien Oppasslist to ännern, gah na: {{fullurl:Special:Watchl
'confirmdeletetext' => 'Du büst dorbi, en Siet oder en Bild un alle ölleren Versionen duersam ut de Datenbank to löschen.
Segg to, dat du över de Folgen Bescheed weetst un dat du in Övereenstimmen mit uns [[{{MediaWiki:Policy-url}}|Leidlienen]] hannelst.',
'actioncomplete' => 'Akschoon trech',
+'actionfailed' => 'Akschoon fehlslaan',
'deletedtext' => 'De Artikel „<nowiki>$1</nowiki>“ is nu wegsmeten. Op $2 gifft dat en Logbook vun de letzten Löschakschonen.',
'deletedarticle' => '„$1“ wegsmeten',
'suppressedarticle' => 'hett „[[$1]]“ versteken',
@@ -1921,8 +1895,8 @@ Segg to, dat du över de Folgen Bescheed weetst un dat du in Övereenstimmen mit
'alreadyrolled' => 'Dat Trüchnehmen vun de Ännern an de Siet [[:$1]] vun [[User:$2|$2]] ([[User talk:$2|Diskuschoonssiet]]{{int:pipe-separator}}[[Special:Contributions/$2|Bidrääg]]) is nich mööglich, vun wegen dat dor en annere Ännern oder Trüchnahm wesen is.
De letzte Ännern is vun [[User:$3|$3]] ([[User talk:$3|Diskuschoon]]{{int:pipe-separator}}[[Special:Contributions/$3|Bidrääg]]).',
-'editcomment' => "De Ännerkommentar weer: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Ännern vun [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskuschoon]]) rut un de Version vun [[User:$1]] wedderhaalt', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "De Ännerkommentar weer: „''$1''“.",
+'revertpage' => 'Ännern vun [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskuschoon]]) rut un de Version vun [[User:$1]] wedderhaalt',
'rollback-success' => 'Ännern vun $1 trüchsett op letzte Version vun $2.',
'sessionfailure' => 'Dor weer en Problem mit diene Brukersitzung.
Disse Akschoon is nu ut Sekerheitsgrünn afbraken, dat de Ännern nich verkehrt en annern Bruker toornt warrt.
@@ -1942,7 +1916,6 @@ Gah een Sied trüch un versöök dat noch wedder.',
'protectexpiry' => 'Löppt ut:',
'protect_expiry_invalid' => 'Utlooptiet ungüllig',
'protect_expiry_old' => 'Utlooptiet al vörbi.',
-'protect-unchain' => 'Schuul vör dat Schuven ännern',
'protect-text' => "Hier kannst du den Schuulstatus för de Siet '''<nowiki>$1</nowiki>''' ankieken un ännern.",
'protect-locked-blocked' => "Du kannst den Schuulstatus vun de Sied nich ännern, du büst sperrt. Hier sünd de aktuellen Schuulstatus-Instellungen för de Siet '''„$1“:'''",
'protect-locked-dblock' => "De Datenbank is sperrt un de Schuulstatus vun de Sied kann nich ännert warrn. Dit sünd de aktuellen Schuul-Instellungen för de Sied '''„$1“:'''",
@@ -1969,7 +1942,7 @@ Gah een Sied trüch un versöök dat noch wedder.',
** veel bruukt Vörlaag
** Sied mit temlich veel Besökers',
'protect-edit-reasonlist' => 'Grünn för de Sperr ännern',
-'protect-expiry-options' => '1 Stünn:1 hour,1 Dag:1 day,1 Week:1 week,2 Weken:2 weeks,1 Maand:1 month,3 Maand:3 months,6 Maand:6 months,1 Johr:1 year,ahn Enn:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Stünn:1 hour,1 Dag:1 day,1 Week:1 week,2 Weken:2 weeks,1 Maand:1 month,3 Maand:3 months,6 Maand:6 months,1 Johr:1 year,ahn Enn:infinite',
'restriction-type' => 'Schuulstatus',
'restriction-level' => 'Schuulhööchd',
'minimum-size' => 'Minimumgrött',
@@ -2011,6 +1984,7 @@ Den Text vun de wegsmetene Sied köönt blot Administraters sehn.',
'undelete-nodiff' => 'Gifft kene öllere Version.',
'undeletebtn' => 'Wedderhalen!',
'undeletelink' => 'ankieken/wedderhalen',
+'undeleteviewlink' => 'bekieken',
'undeletereset' => 'Afbreken',
'undeleteinvert' => 'Utwahl ümkehrn',
'undeletecomment' => 'Grund:',
@@ -2048,7 +2022,7 @@ $1',
'contributions-title' => 'Brukerbidrääg vun „$1“',
'mycontris' => 'Mien Arbeid',
'contribsub2' => 'För $1 ($2)',
-'nocontribs' => 'Kene Ännern för disse Kriterien funnen.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Kene Ännern för disse Kriterien funnen.',
'uctop' => ' (aktuell)',
'month' => 'bet Maand:',
'year' => 'Bet Johr:',
@@ -2057,7 +2031,10 @@ $1',
'sp-contributions-newbies-sub' => 'För ne’e Kontos',
'sp-contributions-newbies-title' => 'Brukerbidrääg vun ne’e Brukers',
'sp-contributions-blocklog' => 'Sparr-Logbook',
+'sp-contributions-deleted' => 'Wegsmetene Bidrääg vun’n Bruker',
'sp-contributions-logs' => 'Logböker',
+'sp-contributions-talk' => 'Diskuschoon',
+'sp-contributions-userrights' => 'Brukerrechten inrichten',
'sp-contributions-search' => 'Na Brukerbidrääg söken',
'sp-contributions-username' => 'IP-Adress oder Brukernaam:',
'sp-contributions-submit' => 'Söken',
@@ -2104,7 +2081,7 @@ Ok den Grund för dat Blocken indregen.',
'ipbenableautoblock' => 'Sperr de aktuell vun dissen Bruker bruukte IP-Adress un automaatsch all de annern, vun de ut he Sieden ännern oder Brukers anleggen will',
'ipbsubmit' => 'Adress blocken',
'ipbother' => 'Annere Tiet:',
-'ipboptions' => '2 Stünnen:2 hours,1 Dag:1 day,3 Daag:3 days,1 Week:1 week,2 Weken:2 weeks,1 Maand:1 month,3 Maand:3 months,6 Maand:6 months,1 Johr:1 year,ahn Enn:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stünnen:2 hours,1 Dag:1 day,3 Daag:3 days,1 Week:1 week,2 Weken:2 weeks,1 Maand:1 month,3 Maand:3 months,6 Maand:6 months,1 Johr:1 year,ahn Enn:infinite',
'ipbotheroption' => 'Annere Duer',
'ipbotherreason' => 'Annern Grund:',
'ipbhidename' => 'Brukernaam narms mehr wiesen',
@@ -2135,7 +2112,7 @@ Op de [[Special:IPBlockList|IP-Blocklist]] is en List vun alle Blocks to finnen.
'ipblocklist-submit' => 'Söken',
'blocklistline' => '$1, $2 hett $3 blockt ($4)',
'infiniteblock' => 'unbegrenzt',
-'expiringblock' => 'löppt $1 af',
+'expiringblock' => 'löppt $1 $2 af',
'anononlyblock' => 'blot Anonyme',
'noautoblockblock' => 'Autoblock afstellt',
'createaccountblock' => 'Brukerkonten opstellen sperrt',
@@ -2149,7 +2126,6 @@ Op de [[Special:IPBlockList|IP-Blocklist]] is en List vun alle Blocks to finnen.
'contribslink' => 'Bidrääg',
'autoblocker' => 'Automatisch Block, vun wegen dat du en IP-Adress bruukst mit „$1“. Grund: „$2“.',
'blocklogpage' => 'Brukerblock-Logbook',
-'blocklog-fulllog' => 'Kumplett Sperr-Logbook',
'blocklogentry' => 'block [[$1]] för en Tiedruum vun: $2 $3',
'reblock-logentry' => 'hett de Sperr för „[[$1]]“ op de Tied $2 $3 ännert',
'blocklogtext' => 'Dit is en Logbook över Blocks un Freegaven vun Brukern. Automatisch blockte IP-Adressen sünd nich opföhrt.
@@ -2235,7 +2211,7 @@ In disse Fäll musst du de Siet, wenn du dat willst, vun Hand schuven.",
'move-watch' => 'Op disse Siet oppassen',
'movepagebtn' => 'Siet schuven',
'pagemovedsub' => 'Schuven hett Spood',
-'movepage-moved' => "'''De Sied „$1“ is na „$2“ schaven worrn.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''De Sied „$1“ is na „$2“ schaven worrn.'''",
'movepage-moved-redirect' => 'Redirect opstellt.',
'movepage-moved-noredirect' => 'Dat Opstellen vun en Redirect is ünnerdrückt worrn.',
'articleexists' => 'Ünner dissen Naam gifft dat al ene Siet.
@@ -2306,8 +2282,6 @@ Wenn du blot de aktuelle hebben wist, kannst du ok en Lenk bruken, to’n Bispee
'allmessagescurrent' => 'Text nu',
'allmessagestext' => 'Dit is de List vun de Systemnarichten, de dat in den MediaWiki-Naamruum gifft.',
'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages is nich ünnerstütt, vun wegen dat wgUseDatabaseMessages utstellt is.',
-'allmessagesfilter' => 'Narichtennaamfilter:',
-'allmessagesmodified' => 'Blot ännerte wiesen',
# Thumbnails
'thumbnail-more' => 'grötter maken',
@@ -2317,6 +2291,9 @@ Wenn du blot de aktuelle hebben wist, kannst du ok en Lenk bruken, to’n Bispee
'djvu_no_xml' => 'kunn de XML-Daten för de DjVu-Datei nich afropen',
'thumbnail_invalid_params' => 'Duumnagelbild-Parameter passt nich',
'thumbnail_dest_directory' => 'Kann Zielorner nich anleggen',
+'thumbnail_image-type' => 'Bildtyp nich ünnerstütt',
+'thumbnail_gd-library' => 'Unvullstännige Instellungen vun de GD-Bibliothek: Funkschoon $1 fehlt',
+'thumbnail_image-missing' => 'Süht ut as wenn de Datei fehlt: $1',
# Special:Import
'import' => 'Import vun Sieden',
@@ -2438,7 +2415,7 @@ All Transwiki-Import-Akschonen staht later ok in dat [[Special:Log/import|Import
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym Bruker|Anonyme Brukers}} vun {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Bruker $1',
-'lastmodifiedatby' => 'Disse Siet weer dat letzte Maal $2, $1 vun $3 ännert.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Disse Siet weer dat letzte Maal $2, $1 vun $3 ännert.',
'othercontribs' => 'Grünnt op Arbeid vun $1.',
'others' => 'annere',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Bruker|Brukers}} $1',
@@ -2475,6 +2452,17 @@ All Transwiki-Import-Akschonen staht later ok in dat [[Special:Log/import|Import
'mw_math_modern' => 'Anratenswert för moderne Browser',
'mw_math_mathml' => 'MathML (experimentell)',
+# Math errors
+'math_failure' => 'Parser-Fehler',
+'math_unknown_error' => 'Unbekannten Fehler',
+'math_unknown_function' => 'Unbekannte Funktschoon',
+'math_lexing_error' => "'Lexing'-Fehler",
+'math_syntax_error' => 'Syntaxfehler',
+'math_image_error' => 'dat Konverteren na PNG harr keen Spood.',
+'math_bad_tmpdir' => 'Kann dat Temporärverteken för mathematsche Formeln nich anleggen oder beschrieven.',
+'math_bad_output' => 'Kann dat Teelverteken för mathematsche Formeln nich anleggen oder beschrieven.',
+'math_notexvc' => 'Dat texvc-Programm kann nich funnen warrn. Kiek ok math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'As nakeken marken',
'markaspatrolledtext' => 'Disse Siet as nakeken marken',
@@ -2509,12 +2497,9 @@ $1',
'previousdiff' => '← Gah to den vörigen Ünnerscheed',
'nextdiff' => 'Gah to den tokamen Ünnerscheed →',
-# Visual comparison
-'visual-comparison' => 'Visuell Vergliek',
-
# Media information
'mediawarning' => "'''Wohrschau:''' Disse Soort Datein kann bööswilligen Programmkood bargen. Dör dat Rünnerladen un Opmaken vun de Datei kann dien Reekner Schaden nehmen.",
-'imagemaxsize' => 'Biller op de Bildbeschrievensiet begrenzen op:',
+'imagemaxsize' => 'Biller op de Bildsied begrenzen op:',
'thumbsize' => 'Grött vun dat Duumnagel-Bild:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|Ene Siet|$3 Sieden}}',
'file-info' => '(Grött: $1, MIME-Typ: $2)',
@@ -2554,7 +2539,7 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breed',
@@ -2681,14 +2666,14 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-unknowndate' => 'Unbekannt Datum',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'waagrecht kippt', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° dreiht', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikal kippt', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° gegen de Klock dreiht un vertikal kippt', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° mit de Klock dreiht', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° mit de Klock dreiht un vertikal kippt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° gegen de Klock dreiht', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'waagrecht kippt',
+'exif-orientation-3' => '180° dreiht',
+'exif-orientation-4' => 'Vertikal kippt',
+'exif-orientation-5' => '90° gegen de Klock dreiht un vertikal kippt',
+'exif-orientation-6' => '90° mit de Klock dreiht',
+'exif-orientation-7' => '90° mit de Klock dreiht un vertikal kippt',
+'exif-orientation-8' => '90° gegen de Klock dreiht',
'exif-planarconfiguration-1' => 'Groffformat',
'exif-planarconfiguration-2' => 'Planarformat',
@@ -2810,7 +2795,7 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-gpsmeasuremode-2' => '2-dimensional meet',
'exif-gpsmeasuremode-3' => '3-dimensional meet',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometers in’e Stünn',
'exif-gpsspeed-m' => 'Mielen in’e Stünn',
'exif-gpsspeed-n' => 'Knoten',
@@ -2949,7 +2934,7 @@ Du kannst ok de [[Special:Watchlist/edit|normale Sied to’n Ännern]] bruken.',
'duplicate-defaultsort' => 'Wohrschau: De DEFAULTSORTKEY „$2“ överschrifft den vörher bruukten Slötel „$1“.',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installeerte Extensions',
'version-specialpages' => 'Spezialsieden',
'version-parserhooks' => 'Parser-Hooks',
@@ -2963,7 +2948,7 @@ Du kannst ok de [[Special:Watchlist/edit|normale Sied to’n Ännern]] bruken.',
'version-skin-extension-functions' => 'Skin-Extension-Funkschonen',
'version-hook-name' => 'Hook-Naam',
'version-hook-subscribedby' => 'Opropen vun',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
'version-software' => 'Installeerte Software',
'version-software-product' => 'Produkt',
@@ -3044,4 +3029,14 @@ Geev den Dateinaam ahn dat Präfix „{{ns:file}}:“ in.',
'dberr-outofdate' => 'Wees gewohr, dat de Söökindex, de se vun uns Inhold hebbt, oold wesen kann.',
'dberr-cachederror' => 'Dit is en Kopie ut’n Cache vun de opropen Sied un is villicht nich de ne’este Version.',
+# HTML forms
+'htmlform-invalid-input' => 'Mit welk vun de angeven Weerten gifft dat Problemen',
+'htmlform-select-badoption' => 'De angeven Weert is nich güllig.',
+'htmlform-int-invalid' => 'De angeven Tall is keen ganze Tall.',
+'htmlform-int-toolow' => 'De angeven Weert liggt ünner dat Minimum vun $1',
+'htmlform-int-toohigh' => 'De angeven Weert liggt över dat Maximum vun $1',
+'htmlform-submit' => 'Afspiekern',
+'htmlform-reset' => 'Ännern trüchsetten',
+'htmlform-selectorother-other' => 'Annere',
+
);
diff --git a/languages/messages/MessagesNds_nl.php b/languages/messages/MessagesNds_nl.php
index cfeb64ac..c59944b1 100644
--- a/languages/messages/MessagesNds_nl.php
+++ b/languages/messages/MessagesNds_nl.php
@@ -10,6 +10,7 @@
* @author Erwin
* @author Erwin85
* @author Jens Frank
+ * @author Purodha
* @author Servien
* @author Slomox
* @author Urhixidur
@@ -72,7 +73,8 @@ $magicWords = array(
'forcetoc' => array( '0', '__FORCEERONDERWARPEN__', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
'toc' => array( '0', '__ONDERWARPEN__', '__INHOUD__', '__TOC__' ),
'noeditsection' => array( '0', '__GIENBEWARKSECTIE__', '__NIETBEWERKBARESECTIE__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'DISSEMAOND', 'HUIDIGEMAAND', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__GIENKOPJEN__', '__GEENKOP__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'DISSEMAOND', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'DISSEMAONDNAAM', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'DISSEMAONDGEN', 'HUIDIGEMAANDGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'DISSEMAONDOFK', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
@@ -82,13 +84,14 @@ $magicWords = array(
'currentyear' => array( '1', 'DITJAOR', 'HUIDIGJAAR', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'DISSETIED', 'HUIDIGETIJD', 'CURRENTTIME' ),
'currenthour' => array( '1', 'DITURE', 'HUIDIGUUR', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'LOKALEMAOND', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'LOKALEMAOND', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOKALEMAAND2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALEMAOND1', 'LOKALEMAAND1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'LOKALEMAONDNAAM', 'PLAATSELIJKEMAANDNAAM', 'LOKALEMAANDNAAM', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'LOKALEMAONDNAAMGEN', 'PLAATSELIJKEMAANDNAAMGEN', 'LOKALEMAANDNAAMGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'LOKALEMAONDOFK', 'PLAATSELIJKEMAANDAFK', 'LOKALEMAANDAFK', 'LOCALMONTHABBREV' ),
- 'localday' => array( '1', 'LOKALEDAG', 'PLAATSELIJKEDAG', 'LOKALEDAG', 'LOCALDAY' ),
- 'localday2' => array( '1', 'LOKALEDAG2', 'PLAATSELIJKEDAG2', 'LOKALEDAG2', 'LOCALDAY2' ),
- 'localdayname' => array( '1', 'LOKALEDAGNAAM', 'PLAATSELIJKEDAGNAAM', 'LOKALEDAGNAAM', 'LOCALDAYNAME' ),
+ 'localday' => array( '1', 'LOKALEDAG', 'PLAATSELIJKEDAG', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'LOKALEDAG2', 'PLAATSELIJKEDAG2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'LOKALEDAGNAAM', 'PLAATSELIJKEDAGNAAM', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'LOKAALJAOR', 'PLAATSELIJKJAAR', 'LOKAALJAAR', 'LOCALYEAR' ),
'localtime' => array( '1', 'LOKALETIED', 'PLAATSELIJKETIJD', 'LOKALETIJD', 'LOCALTIME' ),
'localhour' => array( '1', 'LOKAALURE', 'PLAATSELIJKUUR', 'LOKAALUUR', 'LOCALHOUR' ),
@@ -96,9 +99,11 @@ $magicWords = array(
'numberofarticles' => array( '1', 'ANTALARTIKELS', 'AANTALARTIKELEN', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'ANTALBESTANDEN', 'AANTALBESTANDEN', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'ANTALGEBRUKERS', 'AANTALGEBRUIKERS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'ANTALACTIEVEGEBRUKERS', 'AANTALACTIEVEGEBRUIKERS', 'ACTIEVEGEBRUIKERS', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'ANTALBEWARKINGEN', 'AANTALBEWERKINGEN', 'NUMBEROFEDITS' ),
- 'pagename' => array( '1', 'PAGINANAAM', 'PAGINANAAM', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'PAGINANAAME', 'PAGINANAAME', 'PAGENAMEE' ),
+ 'numberofviews' => array( '1', 'ANTALKERENBEKEKEN', 'AANTALKERENBEKEKEN', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'PAGINANAAM', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'PAGINANAAME', 'PAGENAMEE' ),
'namespace' => array( '1', 'NAAMRUUMTE', 'NAAMRUIMTE', 'NAMESPACE' ),
'namespacee' => array( '1', 'NAAMRUUMTEE', 'NAAMRUIMTEE', 'NAMESPACEE' ),
'talkspace' => array( '1', 'OVERLEGRUUMTE', 'OVERLEGRUIMTE', 'TALKSPACE' ),
@@ -107,86 +112,92 @@ $magicWords = array(
'subjectspacee' => array( '1', 'ONDERWARPRUUMTEE', 'ARTIKELRUUMTEE', 'ONDERWERPRUIMTEE', 'ARTIKELRUIMTEE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
'fullpagename' => array( '1', 'HELEPAGINANAAM', 'VOLLEDIGEPAGINANAAM', 'FULLPAGENAME' ),
'fullpagenamee' => array( '1', 'HELEPAGINANAAME', 'VOLLEDIGEPAGINANAAME', 'FULLPAGENAMEE' ),
- 'subpagename' => array( '1', 'DEELPAGINANAAM', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
- 'subpagenamee' => array( '1', 'DEELPAGINANAAME', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
+ 'subpagename' => array( '1', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
'basepagename' => array( '1', 'BAOSISPAGINANAAM', 'BASISPAGINANAAM', 'BASEPAGENAME' ),
'basepagenamee' => array( '1', 'BAOSISPAGINANAAME', 'BASISPAGINANAAME', 'BASEPAGENAMEE' ),
- 'talkpagename' => array( '1', 'OVERLEGPAGINANAAM', 'OVERLEGPAGINANAAM', 'TALKPAGENAME' ),
- 'talkpagenamee' => array( '1', 'OVERLEGPAGINANAAME', 'OVERLEGPAGINANAAME', 'TALKPAGENAMEE' ),
- 'subjectpagename' => array( '1', 'ONDERWARPPAGINANAAM', 'ARTIKELPAGINANAAM', 'ONDERWERPPAGINANAAM', 'ARTIKELPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
- 'subjectpagenamee' => array( '1', 'ONDERWARPPAGINANAAME', 'ARTIKELPAGINANAAME', 'ONDERWERPPAGINANAAME', 'ARTIKELPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'OVERLEGPAGINANAAM', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'OVERLEGPAGINANAAME', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'ONDERWARPPAGINANAAM', 'ARTIKELPAGINANAAM', 'ONDERWERPPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'ONDERWARPPAGINANAAME', 'ARTIKELPAGINANAAME', 'ONDERWERPPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'msg' => array( '0', 'BERICH:', 'BERICHT:', 'MSG:' ),
'subst' => array( '0', 'VERVANG:', 'VERV:', 'SUBST:' ),
'msgnw' => array( '0', 'BERICHNW', 'BERICHTNW', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'duumnegel', 'doemnaegel', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'duumnegel=$1', 'doemnegel=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_thumbnail' => array( '1', 'duumnegel', 'doemnaegel', 'miniatuur', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'duumnegel=$1', 'doemnegel=$1', 'miniatuur=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'rechs', 'rechts', 'right' ),
- 'img_left' => array( '1', 'links', 'links', 'left' ),
+ 'img_left' => array( '1', 'links', 'left' ),
'img_none' => array( '1', 'gien', 'geen', 'none' ),
'img_center' => array( '1', 'ecentreerd', 'gecentreerd', 'center', 'centre' ),
'img_framed' => array( '1', 'umraand', 'omkaderd', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'kaoderloos', 'kaderloos', 'frameless' ),
- 'img_page' => array( '1', 'pagina=$1', 'pagina $1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
+ 'img_page' => array( '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
'img_upright' => array( '1', 'rechop', 'rechop=$1', 'rechop $1', 'rechtop', 'rechtop=$1', 'rechtop$1', 'upright', 'upright=$1', 'upright $1' ),
'img_border' => array( '1', 'raand', 'rand', 'border' ),
'img_baseline' => array( '1', 'grondliende', 'grondlijn', 'baseline' ),
- 'img_top' => array( '1', 'boven', 'boven', 'top' ),
+ 'img_top' => array( '1', 'boven', 'top' ),
'img_text_top' => array( '1', 'tekse-boven', 'tekst-boven', 'text-top' ),
- 'img_middle' => array( '1', 'midden', 'midden', 'middle' ),
+ 'img_middle' => array( '1', 'midden', 'middle' ),
'img_bottom' => array( '1', 'benejen', 'beneden', 'bottom' ),
'img_text_bottom' => array( '1', 'tekse-benejen', 'tekst-beneden', 'text-bottom' ),
+ 'img_link' => array( '1', 'verwiezing=$', 'verwijzing=$1', 'link=$1' ),
'sitename' => array( '1', 'WEBSTEENAAM', 'SITENAAM', 'SITENAME' ),
- 'ns' => array( '0', 'NR:', 'NR:', 'NS:' ),
- 'localurl' => array( '0', 'LOKALEURL', 'LOKALEURL', 'LOCALURL:' ),
- 'localurle' => array( '0', 'LOKALEURLE', 'LOKALEURLE', 'LOCALURLE:' ),
- 'servername' => array( '0', 'SERVERNAAM', 'SERVERNAAM', 'SERVERNAME' ),
- 'scriptpath' => array( '0', 'SCRIPTPAD', 'SCRIPTPAD', 'SCRIPTPATH' ),
- 'grammar' => array( '0', 'GRAMMATICA:', 'GRAMMATICA:', 'GRAMMAR:' ),
- 'notitleconvert' => array( '0', '__GIENTITELCONVERSIE__', '__GIENTC__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'ns' => array( '0', 'NR:', 'NS:' ),
+ 'localurl' => array( '0', 'LOKALEURL', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'LOKALEURLE', 'LOCALURLE:' ),
+ 'servername' => array( '0', 'SERVERNAAM', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'SCRIPTPAD', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'GRAMMATICA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GESLACH:', 'GESLACHT:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__GIENTITELCONVERSIE__', '__GIENTC__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__GEENPAGINANAAMCONVERSIE__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__GIENINHOUDCONVERSIE__', '__GIENIC__', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'DISSEWEKE', 'HUIDIGEWEEK', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'DISSEDVDW', 'HUIDIGEDVDW', 'CURRENTDOW' ),
'localweek' => array( '1', 'LOKALEWEKE', 'PLAATSELIJKEWEEK', 'LOKALEWEEK', 'LOCALWEEK' ),
- 'localdow' => array( '1', 'LOKALEDVDW', 'PLAATSELIJKEDVDW', 'LOKALEDVDW', 'LOCALDOW' ),
+ 'localdow' => array( '1', 'LOKALEDVDW', 'PLAATSELIJKEDVDW', 'LOCALDOW' ),
'revisionid' => array( '1', 'REVISIEID', 'REVISIE-ID', 'VERSIEID', 'REVISIONID' ),
'revisionday' => array( '1', 'REVISIEDAG', 'VERSIEDAG', 'REVISIONDAY' ),
'revisionday2' => array( '1', 'REVISIEDAG2', 'VERSIEDAG2', 'REVISIONDAY2' ),
'revisionmonth' => array( '1', 'REVISIEMAOND', 'VERSIEMAAND', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'REVISIEJAOR', 'VERSIEJAAR', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'REVISIETIEDSTEMPEL', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
- 'plural' => array( '0', 'MEERVOUD:', 'MEERVOUD:', 'PLURAL:' ),
+ 'revisionuser' => array( '1', 'VERSIEGEBRUKER', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'MEERVOUD:', 'PLURAL:' ),
'fullurl' => array( '0', 'HELEURL', 'VOLLEDIGEURL', 'FULLURL:' ),
'fullurle' => array( '0', 'HELEURLE', 'VOLLEDIGEURLE', 'FULLURLE:' ),
'lcfirst' => array( '0', 'HLEERSTE:', 'KLEERSTE:', 'LCFIRST:' ),
- 'ucfirst' => array( '0', 'KLEERSTE:', 'GLEERSTE:', 'UCFIRST:' ),
- 'lc' => array( '0', 'KL:', 'KL:', 'LC:' ),
- 'uc' => array( '0', 'HL:', 'HL:', 'UC:' ),
- 'raw' => array( '0', 'RAUW:', 'RAUW:', 'RUW:', 'RAW:' ),
+ 'ucfirst' => array( '0', 'GLEERSTE:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'KL:', 'LC:' ),
+ 'uc' => array( '0', 'HL:', 'UC:' ),
+ 'raw' => array( '0', 'RAUW:', 'RUW:', 'RAW:' ),
'displaytitle' => array( '1', 'TEUNTITEL', 'TOONTITEL', 'TITELTONEN', 'DISPLAYTITLE' ),
'newsectionlink' => array( '1', '__NIEJESECTIEVERWIEZING__', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__GIENNIEJKOPJENVERWIEZING__', '__GEENNIEUWKOPJEVERWIJZING__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'DISSEVERSIE', 'HUIDIGEVERSIE', 'CURRENTVERSION' ),
- 'urlencode' => array( '0', 'CODEERURL', 'URLCODEREN', 'CODEERURL', 'URLENCODE:' ),
- 'anchorencode' => array( '0', 'CODEERANKER', 'ANKERCODEREN', 'CODEERANKER', 'ANCHORENCODE' ),
+ 'urlencode' => array( '0', 'CODEERURL', 'URLCODEREN', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'CODEERANKER', 'ANKERCODEREN', 'ANCHORENCODE' ),
'currenttimestamp' => array( '1', 'DISSETIEDSTEMPEL', 'HUIDIGETIJDSTEMPEL', 'CURRENTTIMESTAMP' ),
'localtimestamp' => array( '1', 'LOKALETIEDSTEMPEL', 'PLAATSELIJKETIJDSTEMPEL', 'LOKALETIJDSTEMPEL', 'LOCALTIMESTAMP' ),
- 'directionmark' => array( '1', 'RICHTINGMARKERING', 'RICHTINGSMARKERING', 'RICHTINGMARKERING', 'RICHTINGSMARKERING', 'DIRECTIONMARK', 'DIRMARK' ),
- 'language' => array( '0', '#TAAL:', '#TAAL:', '#LANGUAGE:' ),
- 'contentlanguage' => array( '1', 'INHOUDSTAAL', 'INHOUDSTAAL', 'INHOUDTAAL', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'directionmark' => array( '1', 'RICHTINGMARKERING', 'RICHTINGSMARKERING', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#TAAL:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'INHOUDSTAAL', 'INHOUDTAAL', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
'pagesinnamespace' => array( '1', 'PAGINASINNAAMRUUMTE', 'PAGINA’SINNAAMRUUMTE', 'PAGINA\'SINNAAMRUUMTE', 'PAGINASINNAAMRUIMTE', 'PAGINA’SINNAAMRUIMTE', 'PAGINA\'SINNAAMRUIMTE', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'ANTALBEHEERDERS', 'AANTALBEHEERDERS', 'AANTALADMINS', 'NUMBEROFADMINS' ),
- 'formatnum' => array( '0', 'FORMATTEERNUM', 'FORMATTEERNUM', 'NUMFORMATTEREN', 'FORMATNUM' ),
- 'padleft' => array( '0', 'LINKSOPVULLEN', 'LINKSOPVULLEN', 'PADLEFT' ),
+ 'formatnum' => array( '0', 'FORMATTEERNUM', 'NUMFORMATTEREN', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'LINKSOPVULLEN', 'PADLEFT' ),
'padright' => array( '0', 'RECHSOPVULLEN', 'RECHTSOPVULLEN', 'PADRIGHT' ),
- 'special' => array( '0', 'speciaal', 'speciaal', 'special' ),
+ 'special' => array( '0', 'speciaal', 'special' ),
'defaultsort' => array( '1', 'STANDARDSORTERING:', 'STANDAARDSORTERING:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'BESTANSPAD:', 'BESTANDSPAD:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'etiket', 'label', 'tag' ),
'hiddencat' => array( '1', '__VERBÖRGENKAT__', '__VERBORGENCAT__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'PAGINASINKATTEGERIE', 'PAGINASINKAT', 'PAGINASINCATEGORIE', 'PAGINASINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
- 'pagesize' => array( '1', 'PAGINAGROOTTE', 'PAGINAGROOTTE', 'PAGESIZE' ),
+ 'pagesize' => array( '1', 'PAGINAGROOTTE', 'PAGESIZE' ),
'noindex' => array( '1', '__GIENINDEX__', '__GEENINDEX__', '__NOINDEX__' ),
'numberingroup' => array( '1', 'ANTALINGROEP', 'AANTALINGROEP', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__STAOTISCHEDEURVERWIEZING__', '__STATISCHEDOORVERWIJZING__', '__STATISCHEREDIRECT__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'BEVEILIGINGSNIVO', 'BEVEILIGINGSNIVEAU', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'daotumopmaak', 'datumopmaak', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
@@ -199,7 +210,7 @@ $specialPageAliases = array(
'Preferences' => array( 'Veurkeuren' ),
'Watchlist' => array( 'Volglieste' ),
'Recentchanges' => array( 'Leste_wiezigingen' ),
- 'Upload' => array( 'Bestanden_toevoegen' ),
+ 'Upload' => array( 'Bestanen_toevoegen' ),
'Listfiles' => array( 'Ofbeeldingenlieste' ),
'Newimages' => array( 'Nieje_ofbeeldingen' ),
'Listusers' => array( 'Gebrukerslieste' ),
@@ -210,16 +221,16 @@ $specialPageAliases = array(
'Uncategorizedpages' => array( 'Pagina\'s_zonder_kattegerie' ),
'Uncategorizedcategories' => array( 'Kattergieën_zonder_kattegerie' ),
'Uncategorizedimages' => array( 'Ofbeeldingen_zonder_kattegerie' ),
- 'Uncategorizedtemplates' => array( 'Sjablonen_zonder_kattegerie' ),
+ 'Uncategorizedtemplates' => array( 'Mallen_zonder_kattegerie' ),
'Unusedcategories' => array( 'Ongebruken_kattegerieën' ),
'Unusedimages' => array( 'Ongebruken_ofbeeldingen' ),
'Wantedpages' => array( 'Gewunste_pagina\'s' ),
'Wantedcategories' => array( 'Gewunste_kattegerieën' ),
- 'Wantedfiles' => array( 'Gewunste_bestanden' ),
- 'Wantedtemplates' => array( 'Gewunste_sjablonen' ),
+ 'Wantedfiles' => array( 'Gewunste_bestanen' ),
+ 'Wantedtemplates' => array( 'Gewunste_mallen' ),
'Mostlinked' => array( 'Meest_naor_verwezen_pagina\'s' ),
'Mostlinkedcategories' => array( 'Meestgebruken_kattegerieën' ),
- 'Mostlinkedtemplates' => array( 'Meest_naor_verwezen_sjablonen' ),
+ 'Mostlinkedtemplates' => array( 'Meest_naor_verwezen_mallen' ),
'Mostimages' => array( 'Meeste_ofbeeldingen' ),
'Mostcategories' => array( 'Meeste_kattegerieën' ),
'Mostrevisions' => array( 'Meeste_bewarkingen' ),
@@ -255,27 +266,28 @@ $specialPageAliases = array(
'Unlockdb' => array( 'Databanke_vriegeven' ),
'Userrights' => array( 'Gebrukersrechen' ),
'MIMEsearch' => array( 'MIME-zeuken' ),
- 'FileDuplicateSearch' => array( 'Dubbele_bestanden_zeuken' ),
+ 'FileDuplicateSearch' => array( 'Dubbele_bestanen_zeuken' ),
'Unwatchedpages' => array( 'Neet-evolgen_pagina\'s' ),
'Listredirects' => array( 'Deurverwiezingslieste' ),
'Revisiondelete' => array( 'Versie_vortdoon' ),
- 'Unusedtemplates' => array( 'Ongebruken_sjablonen' ),
+ 'Unusedtemplates' => array( 'Ongebruken_mallen' ),
'Randomredirect' => array( 'Willekeurige_deurverwiezing' ),
'Mypage' => array( 'Mien_gebrukerspagina' ),
'Mytalk' => array( 'Mien_overleg' ),
'Mycontributions' => array( 'Mien_biedragen' ),
'Listadmins' => array( 'Beheerderslieste' ),
'Listbots' => array( 'Botlieste' ),
- 'Popularpages' => array( 'Populaire_artikels' ),
+ 'Popularpages' => array( 'Popelaire_artikels' ),
'Search' => array( 'Zeuken' ),
'Resetpass' => array( 'Wachwoord_wiezigen' ),
'Withoutinterwiki' => array( 'Gien_interwiki' ),
'MergeHistory' => array( 'Geschiedenisse_bie_mekaar_doon' ),
- 'Filepath' => array( 'Bestanslokasie' ),
+ 'Filepath' => array( 'Bestaanslokasie' ),
'Invalidateemail' => array( 'E-mail_annuleren' ),
'Blankpage' => array( 'Lege_pagina' ),
'LinkSearch' => array( 'Verwiezingen_zeuken' ),
- 'DeletedContributions' => array( 'Vort-ehaolen gebrukersbiedragen' ),
+ 'DeletedContributions' => array( 'Vort-ehaolen_gebrukersbiedragen' ),
+ 'Activeusers' => array( 'Actieve_gebrukers' ),
);
$linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu';
@@ -311,6 +323,7 @@ $messages = array(
'tog-enotifminoredits' => 'Stuur mien oek een berichjen bie kleine bewarkingen',
'tog-enotifrevealaddr' => 'Mien netposadres weergeven in netpostiejigen',
'tog-shownumberswatching' => "'t Antal gebrukers bekieken dee disse pagina volg",
+'tog-oldsig' => 'Bestaonde haandtekening naokieken:',
'tog-fancysig' => 'Ondertekening zien as wikitekse (zonder autematische verwiezing)',
'tog-externaleditor' => 'Gebruuk standard een externe teksbewarker',
'tog-externaldiff' => 'Gebruuk standard een extern vergeliekingspregramma',
@@ -334,6 +347,13 @@ $messages = array(
'underline-never' => 'Nooit',
'underline-default' => 'Standardinstelling',
+# Font style option in Special:Preferences
+'editfont-style' => "Lettertype veur de tekse 't bewarkingsveld:",
+'editfont-default' => 'Standardwebkieker',
+'editfont-monospace' => 'Lettertype mit een vas tekenbreedte',
+'editfont-sansserif' => 'Sans-seriflettertype',
+'editfont-serif' => 'Seriflettertype',
+
# Dates
'sunday' => 'zundag',
'monday' => 'maondag',
@@ -393,7 +413,7 @@ $messages = array(
'category-media-header' => 'Media in kattegerie "$1"',
'category-empty' => "''Disse kattegerie bevat op 't mement nog gien artikels of media.''",
'hidden-categories' => 'Verbörgen {{PLURAL:$1|kattegerie|kattegerieën}}',
-'hidden-category-category' => 'Verbörgen kattegerieën', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verbörgen kattegerieën',
'category-subcat-count' => '{{PLURAL:$2|Disse kattegerie hef de volgende subkattegerie.|Disse kattegerie hef de volgende {{PLURAL:$1|subkattegerie|$1 subkattegerieën}}, van een totaal van $2.}}',
'category-subcat-count-limited' => 'Disse kattegerie hef de volgende {{PLURAL:$1|subkattegerie|$1 subkattegerieën}}.',
'category-article-count' => "{{PLURAL:$2|Disse kattegerie bevat de volgende pagina.|Disse kattegerie bevat de volgende {{PLURAL:$1|pagina|$1 pagina's}}, van in totaal $2.}}",
@@ -401,6 +421,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Disse kattegerie bevat 't volgende bestaand.|Disse kattegerie bevat {{PLURAL:$1|'t volgende bestaand|de volgende $1 bestanen}}, van in totaal $2.}}",
'category-file-count-limited' => "Disse kattegerie bevat {{PLURAL:$1|'t volgende bestaand|de volgende $1 bestanen}}.",
'listingcontinuesabbrev' => '(vervolg)',
+'index-category' => "Pagina's dee eïndexeerd bin",
+'noindex-category' => "Pagina's dee neet eïndexeerd bin",
'mainpagetext' => "'''’t Installeren van de MediaWiki pregrammetuur is succesvol.'''",
'mainpagedocfooter' => "Bekiek de [http://meta.wikimedia.org/wiki/Help:Contents haandleiding] veur infermasie over 't gebruuk van de wikipregrammetuur.
@@ -410,10 +432,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Help:FAQ MediaWiki-vragen dee vake esteld wönnen]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-poslieste veur nieje versies]",
-'about' => 'Infermasie',
-'article' => 'Artikel',
-'newwindow' => '(niej vienster)',
-'cancel' => 'Ofbreken',
+'about' => 'Infermasie',
+'article' => 'Artikel',
+'newwindow' => '(niej vienster)',
+'cancel' => 'Ofbreken',
+'moredotdotdot' => 'Meer...',
+'mypage' => 'Mien gebrukerspagina',
+'mytalk' => 'Mien overleg',
+'anontalk' => 'Overlegpagina veur dit IP-adres',
+'navigation' => 'Navigasie',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Zeuken',
'qbbrowse' => 'Blaojen',
'qbedit' => 'Bewark',
@@ -421,15 +451,35 @@ $messages = array(
'qbpageinfo' => 'Pagina-infermasie',
'qbmyoptions' => 'Veurkeuren',
'qbspecialpages' => "Speciale pagina's",
-'moredotdotdot' => 'Meer...',
-'mypage' => 'Mien gebrukerspagina',
-'mytalk' => 'Mien overleg',
-'anontalk' => 'Overlegpagina veur dit IP-adres',
-'navigation' => 'Navigasie',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Vragen dee vake esteld wönnen',
+'faqpage' => 'Project:Vragen dee vake esteld wönnen',
+
+# Vector skin
+'vector-action-addsection' => 'Niej onderwarp',
+'vector-action-delete' => 'Vortdoon',
+'vector-action-move' => 'Herneumen',
+'vector-action-protect' => 'Beveiligen',
+'vector-action-undelete' => 'Weerummeplaosen',
+'vector-action-unprotect' => 'Vriegeven',
+'vector-namespace-category' => 'Kattegerie',
+'vector-namespace-help' => 'Hulppagina',
+'vector-namespace-image' => 'Bestaand',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'Mediapagina',
+'vector-namespace-mediawiki' => 'Tiejige',
+'vector-namespace-project' => 'Prejekpagina',
+'vector-namespace-special' => 'Speciale pagina',
+'vector-namespace-talk' => 'Overleg',
+'vector-namespace-template' => 'Mal',
+'vector-namespace-user' => 'Gebrukerspagina',
+'vector-view-create' => 'Anmaken',
+'vector-view-edit' => 'Bewarken',
+'vector-view-history' => 'Geschiedenisse bekieken',
+'vector-view-view' => 'Lezen',
+'vector-view-viewsource' => 'Brontekse bekieken',
+'actions' => 'Haandeling',
+'namespaces' => 'Naamruumtes',
+'variants' => 'Variaanten',
'errorpagetitle' => 'Foutmelding',
'returnto' => 'Weerumme naor $1.',
@@ -479,18 +529,22 @@ $messages = array(
'otherlanguages' => 'Aandere talen',
'redirectedfrom' => '(deur-estuurd vanof "$1")',
'redirectpagesub' => 'Deurstuurpagina',
-'lastmodifiedat' => "Disse pagina is 't les ewiezig op $1 um $2.", # $1 date, $2 time
+'lastmodifiedat' => "Disse pagina is 't les ewiezig op $1 um $2.",
'viewcount' => 'Disse pagina is $1 {{PLURAL:$1|keer|keer}} bekeken.',
'protectedpage' => 'Beveiligen pagina',
'jumpto' => 'Gao naor:',
'jumptonavigation' => 'navigasie',
'jumptosearch' => 'zeuk',
+'view-pool-error' => 'De servers bin op hejen overbelas.
+Te veul volk prebeert disse pagina te bekieken.
+Wach even veurda-j opniej toegang preberen te kriegen tot disse pagina.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Over {{SITENAME}}',
'aboutpage' => 'Project:Info',
'copyright' => 'De inhoud is beschikbaor onder de $1.',
-'copyrightpagename' => '{{SITENAME}}-auteursrechen',
'copyrightpage' => '{{ns:project}}:Auteursrechen',
'currentevents' => "In 't niejs",
'currentevents-url' => "Project:In 't niejs",
@@ -498,8 +552,6 @@ $messages = array(
'disclaimerpage' => 'Project:Veurbehoud',
'edithelp' => 'Hulpe mit bewarken',
'edithelppage' => 'Help:Uutleg',
-'faq' => 'Vragen dee vake esteld wönnen',
-'faqpage' => 'Project:Vragen dee vake esteld wönnen',
'helppage' => 'Help:Inhoud',
'mainpage' => 'Veurblad',
'mainpage-description' => 'Veurblad',
@@ -581,10 +633,6 @@ De databanke gaf de volgende foutmelding "<tt>$3: $4</tt>".',
"$1"
vanuut de functie "$2"
De databanke gaf de volgende foutmelding: "$3: $4"',
-'noconnect' => 'De wiki hef technische preblemen en kan de databanke neet bereiken.<br />
-$1',
-'nodb' => 'Selectie van databanke $1 is neet meugelijk.',
-'cachederror' => 'Hieronder wonnen een versie uut de kas weer-egeven. Dit is meschien neet de leste versie.',
'laggedslavemode' => "<strong>Waorschuwing:</strong> 't is meugelijk dat leste wiezigingen in de tekse van dit artikel nog neet verwark bin.",
'readonly' => 'De databanke is beveilig',
'enterlockreason' => 'Waorumme en veur ho lange is e eblokkeerd?',
@@ -600,6 +648,8 @@ Meld \'t dan effen bie een [[Special:ListUsers/sysop|systeembeheerder]] van {{SI
'readonly_lag' => 'De databanke is autematisch beveilig, zodat de onder-eschikken servers zich kunnen synchroniseren mit de centrale server.',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
+'fileappenderrorread' => '"$1" kon neet elezen wönnen tiejens \'t toevoegen.',
+'fileappenderror' => 'Kon "$1" neet bie "$2" doon.',
'filecopyerror' => 'Kon bestaand "$1" neet naor "$2" kopiëren.',
'filerenameerror' => 'Bestaansnaamwieziging "$1" naor "$2" neet meugelijk.',
'filedeleteerror' => 'Kon bestaand "$1" neet vortdoon.',
@@ -609,7 +659,8 @@ Meld \'t dan effen bie een [[Special:ListUsers/sysop|systeembeheerder]] van {{SI
'unexpected' => 'Onverwachen weerde: "$1"="$2".',
'formerror' => 'Fout: kon formelier neet versturen',
'badarticleerror' => 'Disse haandeling kan op disse pagina neet uut-evoerd wönnen.',
-'cannotdelete' => 'Kon de pagina of ofbeelding neet vort-edaon wonnen.',
+'cannotdelete' => 'De pagina of \'t bestaand "$1" kon neet vort-edaon wönnen.
+\'t Kan ween dat een aander \'t al vort-edaon hef.',
'badtitle' => 'Ongeldige naam',
'badtitletext' => 'De naam van de op-evreugen pagina is neet geldig, leeg, of een interwiki-verwiezing naor een onbekende of ongeldige wiki.',
'perfcached' => "Disse gegevens kwammen uut 't tussengeheugen en bin werschienlijk neet actueel:",
@@ -641,7 +692,6 @@ De op-egeven reden is ''$2''.",
'virus-unknownscanner' => 'onbekend antiviruspregramma:',
# Login and logout pages
-'logouttitle' => 'Ofmelden gebruker',
'logouttext' => "'''Je bin noen of-emeld.'''
Je kunnen {{SITENAME}} noen anneniem gebruken of je eigen [[Special:UserLogin|opniej anmelden]] onder disse of een aandere gebrukersnaam.
@@ -649,7 +699,6 @@ Je kunnen {{SITENAME}} noen anneniem gebruken of je eigen [[Special:UserLogin|op
'welcomecreation' => '== Welkom, $1! ==
Joew gebrukersnaam is an-emaak.
Vergeet neet joew [[Special:Preferences|veurkeuren veur {{SITENAME}}]] in te stellen.',
-'loginpagetitle' => 'Gebrukersnaam',
'yourname' => 'Gebrukersnaam',
'yourpassword' => 'Wachwoord',
'yourpasswordagain' => 'Opniej invoeren',
@@ -660,6 +709,7 @@ Vergeet neet joew [[Special:Preferences|veurkeuren veur {{SITENAME}}]] in te ste
'nav-login-createaccount' => 'Anmelden',
'loginprompt' => 'Je mutten cookies an hemmen staon um an te kunnen melden bie {{SITENAME}}.',
'userlogin' => 'Anmelden / inschrieven',
+'userloginnocreate' => 'Anmelden',
'logout' => 'Ofmelden',
'userlogout' => 'Ofmelden',
'notloggedin' => 'Neet an-emeld',
@@ -672,29 +722,8 @@ Vergeet neet joew [[Special:Preferences|veurkeuren veur {{SITENAME}}]] in te ste
'badretype' => 'De wachwoorden dee-j in-etik hemmen bin neet liekeleens.',
'userexists' => 'Disse gebrukersnaam is al gebruuk.
Kies een aandere naam.',
-'youremail' => 'Netposadres (neet verplich) *',
-'username' => 'Gebrukersnaam:',
-'uid' => 'Gebrukersnummer:',
-'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepen}}:',
-'yourrealname' => 'Echte naam (neet verplich)',
-'yourlanguage' => 'Taal veur systeemteksen',
-'yourvariant' => 'Gewunste taal:',
-'yournick' => 'Alias veur ondertekeningen',
-'badsig' => 'Ongeldige haandtekening; HTML naokieken.',
-'badsiglength' => "Joew haandtekening is te lang.
-'t Mut minder as {{PLURAL:$1|letter|letters}} hemmen.",
-'yourgender' => 'Geslachte:',
-'gender-unknown' => 'Neet an-egeven',
-'gender-male' => 'Keel',
-'gender-female' => 'Deerne',
-'prefs-help-gender' => 'Optioneel: dit gebruken wie um gebrukers op een juuste meniere an te spreken in de pregrammetuur.
-Disse infermasie is zichbaor veur aandere gebrukers.',
-'email' => 'Privéberichen',
-'prefs-help-realname' => '* Echte naam (neet verplich): a-j disse optie invullen zu-w joew echte naam gebruken um erkenning te geven veur joew warkzaamheen.',
'loginerror' => 'Anmeldingsfout',
-'prefs-help-email' => "Een netposadres is neet verplich, mar zo ku-w wel joew wachwoord toesturen veur a-j 't vergeten bin.
-Je kunnen oek aandere luui in staot stellen um per netpos kontak mit joe op te nemen via de verwiezing op joew gebrukers- en overlegpagina, zonder da-j joew identiteit priesgeven.",
-'prefs-help-email-required' => 'Hier he-w een netposadres veur neudig.',
+'createaccounterror' => 'Kon de gebrukersnaam neet anmaken: $1',
'nocookiesnew' => 'De gebrukersnaam is an-emaak, mar je bin neet an-emeld.
{{SITENAME}} gebruuk cookies um gebrukers an te melden.
Je hemmen cookies uut-eschakeld.
@@ -708,10 +737,12 @@ Gebrukersnamen bin heuflettergeveulig.
Kiek de schriefwieze effen nao of [[Special:UserLogin/signup|maak een nieje gebruker an]].',
'nosuchusershort' => 'Der is gien gebruker mit de naam "$1". Kiek de spelling nao.',
'nouserspecified' => 'Vul asjeblief een naam in',
+'login-userblocked' => 'Disse gebruker is eblokkeerd.
+Je kunnen neet anmelden.',
'wrongpassword' => "verkeerd wachwoord, prebeer 't opniej.",
'wrongpasswordempty' => "Gien wachwoord in-evoerd. Prebeer 't opniej.",
-'passwordtooshort' => "Wachwoord is te kort.
-'t Mut uut minstens $1 {{PLURAL:$1|teken|tekens}} bestaon.",
+'passwordtooshort' => 'Wachwoorden mutten uut teminsen {{PLURAL:$1|$1 teken|$1 tekens}} bestaon.',
+'password-name-match' => 'Joew wachwoord en gebrukersnaam maggen neet liekeleens ween.',
'mailmypassword' => 'Niej wachwoord opsturen',
'passwordremindertitle' => 'Niej tiedelijk wachwoord veur {{SITENAME}}',
'passwordremindertext' => 'Der hef der ene evreugen, vanof \'t IP-adres $1 (werschienlijk jie zelf),
@@ -724,6 +755,7 @@ A-j dit verzeuk neet zelf edaon hemmen of a-j \'t wachwoord weer weten
en \'t neet meer wiezigen willen, negeer dit berich dan
en blief joew bestaonde wachwoord gebruken.',
'noemail' => 'Gien netposadres eregistreerd veur "$1".',
+'noemailcreate' => 'Je mutten een geldig netposadres opgeven',
'passwordsent' => 'Der is een niej wachwoord verstuurd naor \'t netposadres van gebruker "$1". Meld an, a-j \'t wachwoord ontvangen.',
'blocked-mailpassword' => 'Dit IP-adres is eblokkeerd. Dit betekent da-j neet bewarken kunnen en dat {{SITENAME}} joew wachwoord neet weerummehaolen kan, dit wonnen edaon um misbruuk tegen te gaon.',
'eauthentsent' => "Der is een bevestigingsberich naor 't op-egeven netposadres verstuurd. Veurdat der veerdere berichen naor dit netposadres verstuurd kunnen wonnen, mu-j de instructies volgen in 't toe-esturen berich, um te bevestigen da-j joe eigen daodwarkelijk an-emeld hemmen.",
@@ -744,9 +776,11 @@ Voer de juuste opmaak van 't adres in of laot 't veld leeg.",
Meld je noen an en wiezig \'t wachwoord.
Negeer dit berich as disse gebruker zonder joew toestemming an-emaak is.',
+'usernamehasherror' => 'In een gebrukersnaam ma-j gien hekjen gebruken.',
'login-throttled' => "Je hemmen lestens te vake eprebeerd um an te melden mit een verkeerd wachwoord.
Je mutten effen wachen veurda-j 't opniej preberen kunnen.",
'loginlanguagelabel' => 'Taal: $1',
+'suspicious-userlogout' => "Joew verzeuk um of te melden is of-ewezen umdat 't dernaor uutziet dat 't verstuurd is deur een kepotte webkieker of tussenopslagbuffer",
# Password reset dialog
'resetpass' => 'Wachwoord wiezigen',
@@ -758,17 +792,13 @@ Je mutten effen wachen veurda-j 't opniej preberen kunnen.",
'retypenew' => 'Niej wachwoord (opniej)',
'resetpass_submit' => "Voer 't wachwoord in en meld je an",
'resetpass_success' => 'Joew wachwoord is succesvol ewiezig. Je wönnen noen an-emeld...',
-'resetpass_bad_temporary' => 'Ongeldig tiedelijk wachwoord. Je hemmen joew wachwoord al ewiezig of een niej tiedelijk wachwoord an-evreugen.',
'resetpass_forbidden' => 'Wachwoorden kunnen neet ewiezig wönnen',
'resetpass-no-info' => 'Je mutten an-emeld ween veurda-j disse pagina gebruken kunnen.',
'resetpass-submit-loggedin' => 'Wachwoord wiezigen',
+'resetpass-submit-cancel' => 'Ofbreken',
'resetpass-wrong-oldpass' => "'t Veurlopige wachwoord of 't wachwoord da-j noen hemmen is ongeldig.
Meschien he-j 't wachwoord al ewiezig of een niej veurlopig wachwoord an-evreugen.",
'resetpass-temp-password' => 'Veurlopig wachwoord:',
-'resetpass-log' => 'Wachwoordherstellogboek',
-'resetpass-logtext' => "Disse pagina bevat een logboek mit gebrukers waovan 't wachwoord opniej in-esteld is deur een beheerder.",
-'resetpass-logentry' => "hef 't wachwoord van $1 ewiezig",
-'resetpass-comment' => "Rejen veur 't opniej instellen van 't wachwoord",
# Edit page toolbar
'bold_sample' => 'Vet-edrokken tekse',
@@ -844,7 +874,6 @@ Geef disse nummers deur a-j kontak mit ene opnemen over de blokkering.',
'blockededitsource' => "De tekse van '''joew eigen bewarkingen''' an '''$1''' wonnen hieronder weer-egeven:",
'whitelistedittitle' => 'Um disse pagina te bewarken, mu-j je anmelden',
'whitelistedittext' => "Um pagina's te kunnen wiezigen, mu-j $1 ween",
-'confirmedittitle' => 'Berichbevestiging is neudig um te bewarken.',
'confirmedittext' => "Je mutten je posadres bevestigen veurda-j bewarken kunnen. Vul je adres in en bevestig 't via [[Special:Preferences|mien veurkeuren]].",
'nosuchsectiontitle' => 'Disse sectie besteet neet',
'nosuchsectiontext' => "Je preberen een sectie te bewarken dat neet besteet.
@@ -865,9 +894,16 @@ A-j hier per ongelok terechtekeumen bin gebruuk dan de knoppe ''veurige'' um wee
Je kunnen [[Special:Search/{{PAGENAME}}|de titel opzeuken]] in aandere pagina\'s,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zeuken in de logboeken],
of [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse pagina bewarken]</span>.',
+'noarticletext-nopermission' => 'Disse pagina bevat gien tekse.
+Je kunnen [[Special:Search/{{PAGENAME}}|zeuken naor disse term]] in aandere pagina\'s of
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken deurzeuken]</span>.',
'userpage-userdoesnotexist' => 'Je bewarken een gebrukerspagina van een gebruker dee neet besteet (gebruker "$1"). Kiek effen nao o-j disse pagina wel anmaken/bewarken willen.',
+'userpage-userdoesnotexist-view' => 'Gebruker "$1" steet hier neet in-eschreven',
+'blocked-notice-logextract' => "Disse gebruker is op 't mement eblokkeerd.
+De leste regel uut 't blokkeerlogboek steet hieronder as rifferentie:",
'clearyourcache' => "'''NB:''' naodat de wiezigingen op-esleugen bin, mut 't tussengeheugen van de webkieker nog leeg-emaak wönnen um 't te kunnen zien. '''Mozilla / Firefox / Safari:''' drok op ''Shift'' + ''Pagina verniejen,'' of ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' op een Macintosh-computer); '''Konqueror: '''klik op ''verniejen'' of drok op ''F5;'' '''Opera:''' leeg 't tussengeheugen in ''Extra → Voorkeuren;'' '''Internet Explorer:''' hou ''Ctrl'' in-edrok terwiel je op ''Pagina verniejen'' klikken of ''Ctrl-F5'' gebruken.",
-'usercssjsyoucanpreview' => "'''Tip:''' gebruuk de knoppe 'Pagina naokieken' um joew nieje css/js nao te kieken veurda-j 't opslaon.",
+'usercssyoucanpreview' => "'''Tip:''' gebruuk de knoppe \"{{int:showpreview}}\" um joew nieje css/js nao te kieken veurda-j 't opslaon.",
+'userjsyoucanpreview' => "'''Tip:''' gebruuk de knoppe \"{{int:showpreview}}\" um joew nieje css/js nao te kieken veurda-j 't opslaon.",
'usercsspreview' => "'''Dit is allinnig een controle van joew persoonlijke CSS.'''
''''t Is nog neet op-esleugen!'''",
'userjspreview' => "'''Denk deran da-j joew persoonlijke JavaScript allinnig nog mar an 't bekieken bin, 't is nog neet op-esleugen!'''",
@@ -913,13 +949,16 @@ Deur op \"Pagina opslaon\" te klikken beleuf je ons da-j disse tekse zelf eschre
Je kunnen de tekse 't beste op de computer opslaon en laoter opniej preberen de pagina te bewarken.'''
As grund is angeven: $1",
-'protectedpagewarning' => "'''Waorschuwing! Disse pagina is beveilig zodat allinnig beheerders 't kunnen wiezigen.'''",
-'semiprotectedpagewarning' => "'''Let op:''' disse pagina ku-j allinnig bewarken a-j tenminsen vier dagen in-eschreven staon.",
+'protectedpagewarning' => "'''Waorschuwing: disse pagina is beveilig zodat allinnig beheerders 't kunnen wiezigen.'''
+De leste logboekregel steet hieronder:",
+'semiprotectedpagewarning' => "'''Let op:''' disse pagina is beveilig en ku-j allinnig bewarken a-j een eregistreren gebruker bin.
+De leste logboekregel steet hieronder:",
'cascadeprotectedwarning' => "'''Waorschuwing:''' disse pagina is beveilig zodat allinnig beheerders disse pagina kunnen bewarken, dit wonnen edaon umdat disse pagina veurkump in de volgende {{PLURAL:$1|cascade-beveiligen pagina|cascade-beveiligen pagina's}}:",
-'titleprotectedwarning' => "'''Waorschuwing: disse pagina is beveilig. Je hemmen [[Special:ListGroupRights|bepaolde rechen]] neudig um 't an te kunnen maken.'''",
-'templatesused' => 'Mallen dee op disse pagina gebruuk bin:',
-'templatesusedpreview' => 'Mallen dee in disse bewarking gebruuk wonnen:',
-'templatesusedsection' => 'Mallen dee in disse sectie gebruuk wonnen:',
+'titleprotectedwarning' => "'''Waorschuwing: disse pagina is beveilig. Je hemmen [[Special:ListGroupRights|bepaolde rechen]] neudig um 't an te kunnen maken.'''
+De leste logboekregel steet hieronder:",
+'templatesused' => '{{PLURAL:$1|Mal|Mallen}} dee op disse pagina gebruuk wönnen:',
+'templatesusedpreview' => '{{PLURAL:$1|Mal|Mallen}} dee in disse bewarking gebruuk wönnen:',
+'templatesusedsection' => '{{PLURAL:$1|Mal|Mallen}} dee in dit subkopjen gebruuk wönnen:',
'template-protected' => '(beveilig)',
'template-semiprotected' => '(semibeveilig)',
'hiddencategories' => 'Disse pagina vuilt in de volgende verbörgen {{PLURAL:$1|kattegerie|kattegerieën}}:',
@@ -927,16 +966,18 @@ As grund is angeven: $1",
'nocreatetitle' => "'t Anmaken van pagina's is beteund",
'nocreatetext' => "Disse webstee hef de meugelijkheid um nieje pagina's an te maken beteund. Je kunnen pagina's dee al bestaon wiezigen of je kunnen je [[Special:UserLogin|anmelden of een gebrukerspagina anmaken]].",
'nocreate-loggedin' => "Je hemmen gien toestemming um nieje pagina's an te maken.",
+'sectioneditnotsupported-title' => "'t Bewarken van secties wönnen neet ondersteund",
+'sectioneditnotsupported-text' => 'Je kunnen op disse pagina gien secties bewarken.',
'permissionserrors' => 'Fouten mit de rechen',
'permissionserrorstext' => 'Je maggen of kunnen dit neet doon. De {{PLURAL:$1|reden|redens}} daorveur {{PLURAL:$1|is|bin}}:',
'permissionserrorstext-withaction' => 'Je hemmen gien rech um $2, mit de volgende {{PLURAL:$1|reden|redens}}:',
-'recreate-deleted-warn' => "'''Waorschuwing: je maken een pagina an dee eerder al vort-edaon is.'''
+'recreate-moveddeleted-warn' => "'''Waorschuwing: je maken een pagina an dee eerder al vort-edaon is.'''
Bedenk eers of 't neudig is um disse pagina veerder te bewarken.
-'t Logboek mit de rejen(s) waorumme as disse pagina vort-edaon is, wonnen veur de dudelijkheid eteund:",
-'deleted-notice' => "Disse pagina is vort-edaon.
-Hieronder steet de infermasie uut 't logboek vort-edaone pagina's.",
-'deletelog-fulllog' => "'t Hele logboek bekieken",
+Veur de dudelijkheid steet hieronder 't vortdologboek en 't herneumlogboek veur disse pagina:",
+'moveddeleted-notice' => "Disse pagina is vort-edaon.
+Hieronder steet de infermasie uut 't vortdologboek en 't herneumlogboek.",
+'log-fulllog' => "'t Hele logboek bekieken",
'edit-hook-aborted' => 'De bewarking is of-ebreuken deur een hook.
Der is gien reden op-egeven.',
'edit-gone-missing' => "De pagina kon neet bie-ewörken wonnen.
@@ -958,6 +999,7 @@ Sommigen mallen wönnen neet in-evoeg.',
'post-expand-template-argument-category' => "Pagina's mit ontbrekende malelementen",
'parser-template-loop-warning' => 'Der is een kringloop in mallen waor-eneumen: [[$1]]',
'parser-template-recursion-depth-warning' => 'Der is over de recursiediepte veur mallen is hinne gaon ($1)',
+'language-converter-depth-warning' => "Je bin over 't dieptelimiet veur de taalumzetter hinne ($1)",
# "Undo" feature
'undo-success' => 'De bewarking kan weerummedreid wonnen. Kiek de vergelieking hieronder nao um der wisse van de ween dat alles goed is, en slao de de pagina op um de bewarking weerumme te dreien.',
@@ -977,7 +1019,7 @@ De deur $3 op-egeven reden is ''$2''",
'currentrev' => 'Leste versie',
'currentrev-asof' => 'Leste versie van $1',
'revisionasof' => 'Versie op $1',
-'revision-info' => 'Versie op $1 van $2', # Additionally available: $3: revision id
+'revision-info' => 'Versie op $1 van $2',
'previousrevision' => '&larr; eerdere versie',
'nextrevision' => 'niejere versie &rarr;',
'currentrevisionlink' => "versie zoas 't noen is",
@@ -988,7 +1030,7 @@ De deur $3 op-egeven reden is ''$2''",
'page_last' => 'leste',
'histlegend' => 'Verklaoring ofkortingen: (noen) = verschil mit de op-esleugen versie, (veurige) = verschil mit de veurige versie, K = kleine wieziging',
'history-fieldset-title' => 'Deur de geschiedenisse blaojen',
-'deletedrev' => '[vort-edaon]',
+'history-show-deleted' => 'Allinnig vort-edaon',
'histfirst' => 'Eerste',
'histlast' => 'Leste',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -997,69 +1039,112 @@ De deur $3 op-egeven reden is ''$2''",
# Revision feed
'history-feed-title' => 'Wiezigingsoverzichte',
'history-feed-description' => 'Wiezigingsoverzichte veur disse pagina op de wiki',
-'history-feed-item-nocomment' => '$1 op $2', # user at time
+'history-feed-item-nocomment' => '$1 op $2',
'history-feed-empty' => "De op-evreugen pagina besteet neet. 't Kan ween dat disse pagina vort-edaon is of dat 't herneumd is. Prebeer te [[Special:Search|zeuken]] naor soortgelieke nieje pagina's.",
# Revision deletion
-'rev-deleted-comment' => '(opmarking vort-edaon)',
-'rev-deleted-user' => '(gebrukersnaam vort-edaon)',
-'rev-deleted-event' => '(antekening vort-edaon)',
-'rev-deleted-text-permission' => "Disse bewarking is uut de peblieke archieven ewis.
-As der meer infermasie is, ku-j dat vienen in 't [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} logboek vort-edaone pagina's].",
-'rev-deleted-text-view' => "Disse bewarking is uut de peblieke archieven ewis.
-As beheerder van disse wiki ku-j 't wel zien;
-as der meer infermasie is, ku-j dat vienen in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} logboek vort-edaone pagina's].",
-'rev-deleted-no-diff' => "Je kunnen de verschillen neet bekieken umdat één van de versies uut 't peblieke archief vort-edaon is.
-De achtergronden ku-j meugelijk vienen in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} logboek mit vort-edaone pagina's].",
-'rev-deleted-unhide-diff' => "Eén van de bewarkingen van disse vergeliekingen is uut de peblieke archieven ewis.
-Achtergronden ku-j meugelijk vienen in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} logboek vort-edaone pagina's].
+'rev-deleted-comment' => '(opmarking vort-edaon)',
+'rev-deleted-user' => '(gebrukersnaam vort-edaon)',
+'rev-deleted-event' => '(antekening vort-edaon)',
+'rev-deleted-user-contribs' => '[gebrukersnaam of IP-adres vort-edaon - bewarking verbörgen in biedragen]',
+'rev-deleted-text-permission' => "Disse bewarking is '''vort-edaon'''.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} vortdologboek].",
+'rev-deleted-text-unhide' => "Disse bewarking is '''vort-edaon'''.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} vortdologboek].
+As beheerder ku-j [$1 disse versie bekieken] a-j willen.",
+'rev-suppressed-text-unhide' => "Disse bewarking is '''onderdrok'''.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} logboek mit onderdrokken infermasie].
+As beheerder ku-j [$1 disse versie bekieken] a-j willen.",
+'rev-deleted-text-view' => "Disse bewarking is '''vort-edaon'''.
+As beheerder van disse wiki ku-j 't wel zien; as der meer infermasie is, ku-j dat vienen in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} vortdologboek].",
+'rev-suppressed-text-view' => "Disse bewarking is '''onderdrok'''.
+As beheerder van disse wiki ku-j 't wè zien; as der meer infermasie is, ku-j dat vienen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek mit onderdrokken versies].",
+'rev-deleted-no-diff' => "Je kunnen de verschillen neet bekieken umdat één van de versies '''vort-edaon''' is.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} vortdologboek].",
+'rev-suppressed-no-diff' => "Je kunnen de verschillen neet bekieken umdat één van de versies '''vort-edaon''' is.",
+'rev-deleted-unhide-diff' => "Eén van de bewarkingen in disse vergeliekingen is '''vort-edaon'''.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} vortdologboek].
+As beheerder ku-j [$1 de verschillen bekieken] a-j willen.",
+'rev-suppressed-unhide-diff' => "Eén van de bewarkingen in disse vergeliekingen is '''vort-edaon'''.
+As der meer infermasie is, ku-j 't vienen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} logboek mit onderdrokken infermasie].
As beheerder ku-j [$1 de verschillen bekieken] a-j willen.",
-'rev-delundel' => 'bekiek/verbarg',
-'revisiondelete' => 'Wiezigingen vortdoon/herstellen',
-'revdelete-nooldid-title' => 'Gien doelversie',
-'revdelete-nooldid-text' => 'Je hemmen gien versie an-egeven waor disse actie op uut-evoerd mut wönnen.',
-'revdelete-nologtype-title' => 'Der is gien logboektype op-egeven',
-'revdelete-nologtype-text' => 'Je hemmen gien logboektype op-egeven um disse haandeling op uut te voeren.',
-'revdelete-toomanytargets-title' => 'Te veul doelen',
-'revdelete-toomanytargets-text' => 'Je hemmen te veul doelen egeven um disse haandeling op uut te voeren.',
-'revdelete-nologid-title' => 'Ongeldige logboekregel',
-'revdelete-nologid-text' => 'Of je hemmen gien doellogboekregel op-egeven of de an-egeven logboekregel besteet neet.',
-'revdelete-selected' => "'''{{PLURAL:$2|Ekeuzen bewarking|Ekeuzen bewarkingen}} van '''[[:$1]]''':'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Ekeuzen logboekboekactie|Ekeuzen logboekacties}}:'''",
-'revdelete-text' => "'''Vort-edaone bewarkingen staon nog altied in de geschiedenisse en in logboeken, mar neet iederene kan de inhoud zomar bekieken.'''
-
-Beheerders van {{SITENAME}} kunnen de verbörgen inhoud bekieken en 't weerummeplaosen deur dit scharm te gebruken, behalven as der aandere beparkingen in-esteld bin.
-Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit doon in overeenstemming mit [[{{MediaWiki:Policy-url}}|'t beleid]] van disse wiki.",
-'revdelete-suppress-text' => "Onderdrokken ma-j '''allinnig''' gebruken in de volgende gevallen:
+'rev-deleted-diff-view' => "Een van de bewarkingen veur de verschillen dee-j op-evreugen hemmen '''vort-edaon'''.
+As beheerder ku-j disse verschillen bekieken. Meschien steet der meer over in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} vortdologboek].",
+'rev-suppressed-diff-view' => "Een van de bewarkingen veur de verschillen dee-j op-evreugen hemmen is '''onderdrok'''.
+As beheerder ku-j disse verschillen bekieken. Meschien steet der over in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek mit onderdrokken versies].",
+'rev-delundel' => 'bekiek/verbarg',
+'rev-showdeleted' => 'bekiek',
+'revisiondelete' => 'Wiezigingen vortdoon/herstellen',
+'revdelete-nooldid-title' => 'Gien doelversie',
+'revdelete-nooldid-text' => 'Je hemmen gien versie an-egeven waor disse actie op uut-evoerd mut wönnen.',
+'revdelete-nologtype-title' => 'Der is gien logboektype op-egeven',
+'revdelete-nologtype-text' => 'Je hemmen gien logboektype op-egeven um disse haandeling op uut te voeren.',
+'revdelete-nologid-title' => 'Ongeldige logboekregel',
+'revdelete-nologid-text' => 'Of je hemmen gien doellogboekregel op-egeven of de an-egeven logboekregel besteet neet.',
+'revdelete-no-file' => "'t Op-egeven bestaand besteet neet.",
+'revdelete-show-file-confirm' => 'Bi-j der wisse van da-j de vort-edaone versie van \'t bestaand "<nowiki>$1</nowiki>" van $2 um $3 bekieken willen?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Ekeuzen bewarking|Ekeuzen bewarkingen}} van '''[[:$1]]''':'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Ekeuzen logboekboekactie|Ekeuzen logboekacties}}:'''",
+'revdelete-text' => "'''Vort-edaone bewarkingen staon nog altied in de geschiedenisse en in logboeken, mar neet iederene kan de inhoud zomar bekieken.'''
+Beheerders van {{SITENAME}} kunnen de verbörgen inhoud bekieken en 't weerummeplaosen deur dit scharm te gebruken, behalven as der aandere beparkingen in-esteld bin.",
+'revdelete-confirm' => "Bevestig da-j dit doon wollen, da-j de gevolgen dervan begriepen en da-j 't doon in overeenstemming mit 't geldende [[{{MediaWiki:Policy-url}}|beleid]].",
+'revdelete-suppress-text' => "Onderdrokken ma-j '''allinnig''' gebruken in de volgende gevallen:
* Ongepassen persoonlijke infermasie
*: ''adressen en tillefoonnummers, burgerservicenummers, en gao zo mar deur.''",
-'revdelete-legend' => 'Stel versiebeparkingen in:',
-'revdelete-hide-text' => 'Verbarg de bewarken tekse',
-'revdelete-hide-name' => 'Verbarg logboekactie',
-'revdelete-hide-comment' => 'Verbarg bewarkingssamenvatting',
-'revdelete-hide-user' => 'Verbarg gebrukersnamen en IP-adressen van aandere luui.',
-'revdelete-hide-restricted' => 'Gegevens veur beheerders en aander volk onderdrokken',
-'revdelete-suppress' => 'Gegevens veur beheerders en aander volk onderdrokken',
-'revdelete-hide-image' => 'Verbarg bestaansinhoud',
-'revdelete-unsuppress' => 'Beparkingen veur weerummezetten versies vortdoon',
-'revdelete-log' => 'Reden:',
-'revdelete-submit' => 'De esillecteren versie toepassen',
-'revdelete-logentry' => 'zichbaorheid van bewarkingen is ewiezig veur [[$1]]',
-'logdelete-logentry' => 'wiezigen zichbaorheid van gebeurtenisse [[$1]]',
-'revdelete-success' => "'''De zichbaorheid van de wieziging is bie-ewörken.'''",
-'logdelete-success' => "'''Zichbaorheid van de gebeurtenisse is succesvol in-esteld.'''",
-'revdel-restore' => 'Zichbaorheid wiezigen',
-'pagehist' => 'Paginageschiedenisse',
-'deletedhist' => 'Geschiedenisse dee vort-ehaold is',
-'revdelete-content' => 'inhoud',
-'revdelete-summary' => 'samenvatting bewarken',
-'revdelete-uname' => 'gebrukersnaam',
-'revdelete-restricted' => 'hef beparkingen an beheerders op-eleg',
-'revdelete-unrestricted' => 'hef beparkingen veur beheerders derof ehaold',
-'revdelete-hid' => 'hef $1 verbörgen',
-'revdelete-unhid' => 'hef $1 zichbaor emaak',
-'revdelete-log-message' => '$1 veur $2 {{PLURAL:$2|versie|versies}}',
-'logdelete-log-message' => '$1 veur $2 {{PLURAL:$2|logboekregel|logboekregels}}',
+'revdelete-legend' => 'Stel versiebeparkingen in:',
+'revdelete-hide-text' => 'Verbarg de bewarken tekse',
+'revdelete-hide-image' => 'Verbarg bestaansinhoud',
+'revdelete-hide-name' => 'Verbarg logboekactie',
+'revdelete-hide-comment' => 'Verbarg bewarkingssamenvatting',
+'revdelete-hide-user' => 'Verbarg gebrukersnamen en IP-adressen van aandere luui.',
+'revdelete-hide-restricted' => 'Gegevens veur beheerders en aander volk onderdrokken',
+'revdelete-radio-same' => '(neet wiezigen)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nee',
+'revdelete-suppress' => 'Gegevens veur beheerders en aander volk onderdrokken',
+'revdelete-unsuppress' => 'Beparkingen veur weerummezetten versies vortdoon',
+'revdelete-log' => 'Reden:',
+'revdelete-submit' => 'Toepassen op de ekeuzen {{PLURAL:$1|bewarking|bewarkingen}}',
+'revdelete-logentry' => 'zichbaorheid van bewarkingen is ewiezig veur [[$1]]',
+'logdelete-logentry' => 'wiezigen zichbaorheid van gebeurtenisse [[$1]]',
+'revdelete-success' => "'''De zichbaorheid van de wieziging is bie-ewörken.'''",
+'revdelete-failure' => "'''De zichbaorheid veur de wieziging kon neet bie-ewörken wönnen:'''
+$1",
+'logdelete-success' => "'''Zichbaorheid van de gebeurtenisse is succesvol in-esteld.'''",
+'logdelete-failure' => "'''De zichbaorheid van de logboekregel kon neet in-esteld wonnen:'''
+$1",
+'revdel-restore' => 'Zichbaorheid wiezigen',
+'pagehist' => 'Paginageschiedenisse',
+'deletedhist' => 'Geschiedenisse dee vort-ehaold is',
+'revdelete-content' => 'inhoud',
+'revdelete-summary' => 'samenvatting bewarken',
+'revdelete-uname' => 'gebrukersnaam',
+'revdelete-restricted' => 'hef beparkingen an beheerders op-eleg',
+'revdelete-unrestricted' => 'hef beparkingen veur beheerders derof ehaold',
+'revdelete-hid' => 'hef $1 verbörgen',
+'revdelete-unhid' => 'hef $1 zichbaor emaak',
+'revdelete-log-message' => '$1 veur $2 {{PLURAL:$2|versie|versies}}',
+'logdelete-log-message' => '$1 veur $2 {{PLURAL:$2|logboekregel|logboekregels}}',
+'revdelete-hide-current' => "Fout bie 't verbargen van 't objek van $1 um $2 uur: dit is de versie van noen.
+Disse versie kan neet verbörgen wonnen.",
+'revdelete-show-no-access' => 'Fout bie \'t weergeven van \'t objek van $1 um $2 uur: dit objek is emarkeerd as "beveilig".
+Je hemmen gien toegang tot dit objek.',
+'revdelete-modify-no-access' => 'Fout bie \'t wiezigen van \'t objek van $1 um $2 uur: dit objek is emarkeerd as "beveilig".
+Je hemmen gien toegang tot dit objek.',
+'revdelete-modify-missing' => "Fout bie 't wiezigen van versienummer $1: 't kump neet veur in de databanke!",
+'revdelete-no-change' => "'''Waorschuwing:''' 't objek van $1 um $2 uur had al de an-egeven zichbaorheidsinstellingen.",
+'revdelete-concurrent-change' => "Fout bie 't wiezigen van 't objek van $1 um $2 uur: de staotus is inmiddels ewiezig deur een aander.
+Kiek de logboeken nao.",
+'revdelete-only-restricted' => "Der is een fout op-etrejen bie 't verbargen van 't objek van $1, $2: je kunnen gien objekken onderdrokken uut 't zich van beheerders zonder oek een van de aandere zichbaorheidsopties te sillecteren.",
+'revdelete-reason-dropdown' => "*Veulveurkoemde redens veur 't vortdoon
+** Schenden van de auteursrechen
+** Ongeschikte persoonlijke infermasie
+** Meugelijk lasterlijke infermasie",
+'revdelete-otherreason' => 'Aandere reden:',
+'revdelete-reasonotherlist' => 'Aandere reden',
+'revdelete-edit-reasonlist' => "Redens veur 't vortdoon bewarken",
+'revdelete-offender' => 'Auteur versie:',
# Suppression log
'suppressionlog' => 'Verbargingslogboek',
@@ -1094,67 +1179,13 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'mergelogpagetext' => 'Hieronder zie-j een lieste van de leste samenvoegingen van een paginageschiedenisse naor een aandere.',
# Diffs
-'history-title' => 'Geschiedenisse van "$1"',
-'difference' => '(Verschil tussen bewarkingen)',
-'lineno' => 'Regel $1:',
-'compareselectedversions' => 'Vergeliek de ekeuzen versies',
-'visualcomparison' => 'Visuele vergelieking',
-'wikicodecomparison' => 'Vergelieking wikitekse',
-'editundo' => 'weerummedreien',
-'diff-multi' => '(Hier {{PLURAL:$1|zit nog 1 versie|zitten nog $1 versies tussen}}.)',
-'diff-movedto' => 'herneumd naor $1',
-'diff-styleadded' => 'stiel $1 derbie edaon',
-'diff-added' => '$1 der edaon',
-'diff-changedto' => 'ewiezig in $1',
-'diff-movedoutof' => 'herneumd buten $1',
-'diff-styleremoved' => 'stiel $1 vort-edaon',
-'diff-removed' => '$1 vort-edaon',
-'diff-changedfrom' => 'ewiezig van $1',
-'diff-src' => 'bron',
-'diff-withdestination' => 'mit bestemming $1',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;en $1 $2',
-'diff-width' => 'breedte',
-'diff-height' => 'heugte',
-'diff-p' => "een '''parregraaf'''",
-'diff-blockquote' => "een '''haakjen'''",
-'diff-h1' => "een '''kopjen (nivo 1)'''",
-'diff-h2' => "een '''kopjen (nivo 2)'''",
-'diff-h3' => "een '''kopjen (nivo 3)'''",
-'diff-h4' => "een '''kopjen (nivo 4)'''",
-'diff-h5' => "een '''kopjen (nivo 5)'''",
-'diff-pre' => "een '''veur-eformeteren teksblokke'''",
-'diff-div' => "een '''deling'''",
-'diff-ul' => "een '''lieste zonder nummers'''",
-'diff-ol' => "een '''lieste mit nummers'''",
-'diff-li' => "een '''liestenonderwarp'''",
-'diff-table' => "een '''tebel'''",
-'diff-tbody' => "'''tebelinhoud'''",
-'diff-tr' => "een '''rie'''",
-'diff-td' => "een '''cel'''",
-'diff-th' => "een '''kelomkop'''",
-'diff-br' => "een '''nieje regel'''",
-'diff-hr' => "een '''horizontale liende'''",
-'diff-code' => "een '''teksblokke mit pregrammacode'''",
-'diff-dl' => "een '''lieste van defenisies'''",
-'diff-dt' => "een '''uutdrokking, dee edefenieerd wonnen'''",
-'diff-dd' => "een '''defenisie'''",
-'diff-input' => "een '''formelierveld'''",
-'diff-form' => "een '''formelier'''",
-'diff-img' => "een '''ofbeelding'''",
-'diff-span' => "een '''span'''",
-'diff-a' => "een '''verwiezing'''",
-'diff-i' => "'''schunedrok'''",
-'diff-b' => "'''vet-edrok'''",
-'diff-strong' => "'''stark'''",
-'diff-em' => "'''naodrok'''",
-'diff-font' => "'''lettertype'''",
-'diff-big' => "'''groot'''",
-'diff-del' => "'''vort-edaon'''",
-'diff-tt' => "'''vaste breedte'''",
-'diff-sub' => "'''lege tekse'''",
-'diff-sup' => "'''hoge tekse'''",
-'diff-strike' => "'''deurstrepen'''",
+'history-title' => 'Geschiedenisse van "$1"',
+'difference' => '(Verschil tussen bewarkingen)',
+'lineno' => 'Regel $1:',
+'compareselectedversions' => 'Vergeliek de ekeuzen versies',
+'showhideselectedversions' => 'Ekeuzen versies weergeven/verbargen',
+'editundo' => 'weerummedreien',
+'diff-multi' => '(Hier {{PLURAL:$1|zit nog 1 versie|zitten nog $1 versies tussen}}.)',
# Search results
'searchresults' => 'Zeukrisseltaoten',
@@ -1162,28 +1193,25 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'searchresulttext' => 'Veur meer infermasie over zeuken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Je zochen naor \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle pagina\'s dee beginnen mit "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle pagina\'s dee verwiezen naor "$1"]])',
'searchsubtitleinvalid' => 'Veur zeukopdrach "$1"',
-'noexactmatch' => "'''Der besteet gien artikel mit de naam $1.''' Je kunnen disse pagina [[:$1|anmaken]].",
-'noexactmatch-nocreate' => "'''Der besteet gien pagina mit de naam \"\$1\".'''",
'toomanymatches' => 'Der wanen te veul risseltaoten. Prebeer een aandere zeukopdrach.',
'titlematches' => "Overeenkoms mit 't onderwarp",
'notitlematches' => 'Gien overeenstemming',
'textmatches' => 'Overeenkoms mit teksen',
'notextmatches' => 'Gien overeenstemming',
-'prevn' => 'veurige $1',
-'nextn' => 'volgende $1',
+'prevn' => 'veurige {{PLURAL:$1|$1}}',
+'nextn' => 'volgende {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Veurig risseltaot|Veurige $1 risseltaoten}}',
'nextn-title' => '{{PLURAL:$1|Volgend risseltaot|Volgende $1 risseltaoten}}',
'shown-title' => '$1 {{PLURAL:$1|risseltaot|risseltaoten}} per pagina weergeven',
-'viewprevnext' => '($1) ($2) ($3)',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Zeukopties',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
'searchmenu-new' => "'''De pagina \"[[:\$1]]\" op disse wiki anmaken!'''",
'searchhelp-url' => 'Help:Inhold',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanamen mit dit veurvoegsel laoten zien]]',
-'searchprofile-articles' => "Inhouwelijke pagina's",
-'searchprofile-articles-and-proj' => "Inhouwelijke en prejekpagina's",
-'searchprofile-project' => "Prejekpagina's",
-'searchprofile-images' => 'Bestanden',
+'searchprofile-articles' => 'Artikels',
+'searchprofile-project' => "Hulp- en prejekpagina's",
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Uut-ebreid',
'searchprofile-articles-tooltip' => 'Zeuken in $1',
@@ -1191,8 +1219,6 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'searchprofile-images-tooltip' => 'Zeuken naor bestanen',
'searchprofile-everything-tooltip' => "Alle inhoud deurzeuken (oek overlegpagina's)",
'searchprofile-advanced-tooltip' => 'Zeuken in de an-egeven naamruumtes',
-'prefs-search-nsdefault' => 'Zeuken mit standardinstellingen:',
-'prefs-search-nscustom' => 'Zeuken in an-egeven naamruumtes:',
'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woorden}})',
'search-result-score' => 'Rillevantie: $1%',
'search-redirect' => '(deurverwiezing $1)',
@@ -1205,11 +1231,12 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'search-mwsuggest-disabled' => 'gien anbevelingen',
'search-relatedarticle' => 'Verwant',
'mwsuggest-disable' => 'Anbevelingen via AJAX uutschakelen',
+'searcheverything-enable' => 'In alle naamruumten zeuken',
'searchrelated' => 'verwant',
'searchall' => 'alles',
'showingresults' => "Hieronder {{PLURAL:$1|steet '''1''' risseltaot|staon '''$1''' risseltaoten}} <b>$1</b> vanof nummer <b>$2</b>.",
'showingresultsnum' => "Hieronder {{PLURAL:$3|steet '''1''' risseltaot|staon '''$3''' risseltaoten}} vanof nummer '''$2'''.",
-'showingresultstotal' => "Hieronder {{PLURAL:$4|wordt et risseltaot '''$1''' van '''$3''' weer-egeven|wonnen de risseltaoten '''$1 tot $2''' van '''$3''' weer-egeven}}",
+'showingresultsheader' => "{{PLURAL:$5|Risseltaot '''$1''' van '''$3'''|Risseltaoten '''$1 - $2''' van '''$3'''}} veur '''$4'''",
'nonefound' => "<strong>Let wel:</strong> standard wönnen neet alle naamruumtes deurzoch. A-j in zeukopdrach as veurvoegsel \"''all:'' gebruken wönnen alle pagina's deurzoch (oek overlegpagina's, mallen en gao zo mar deur). Je kunnen oek een naamruumte as veurvoegsel gebruken.",
'search-nonefound' => 'Der bin gien risseltaoten veur de zeukopdrach.',
'powersearch' => 'Zeuk',
@@ -1217,111 +1244,151 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'powersearch-ns' => 'Zeuken in naamruumten:',
'powersearch-redir' => 'Deurverwiezingen bekieken',
'powersearch-field' => 'Zeuken naor',
+'powersearch-togglelabel' => 'Sillecteren:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Gien',
'search-external' => 'Extern zeuken',
'searchdisabled' => 'Zeuken in {{SITENAME}} is neet meugelijk. Je kunnen gebruukmaken van Google. De gegevens over {{SITENAME}} bin meschien neet bie-ewörken.',
+# Quickbar
+'qbsettings' => 'Paginalieste',
+'qbsettings-none' => 'Gien',
+'qbsettings-fixedleft' => 'Links, vaste',
+'qbsettings-fixedright' => 'Rechs, vaste',
+'qbsettings-floatingleft' => 'Links, zweven',
+'qbsettings-floatingright' => 'Rechs, zweven',
+
# Preferences page
-'preferences' => 'Veurkeuren',
-'mypreferences' => 'Mien veurkeuren',
-'prefs-edits' => 'Antal bewarkingen:',
-'prefsnologin' => 'Neet an-meld',
-'prefsnologintext' => 'Je mutten <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} an-emeld]</span> ween um joew veurkeuren in te kunnen stellen.',
-'prefsreset' => 'Standardveurkeuren hersteld.',
-'qbsettings' => 'Paginalieste',
-'qbsettings-none' => 'Gien',
-'qbsettings-fixedleft' => 'Links, vaste',
-'qbsettings-fixedright' => 'Rechs, vaste',
-'qbsettings-floatingleft' => 'Links, zweven',
-'qbsettings-floatingright' => 'Rechs, zweven',
-'changepassword' => 'Wachwoord wiezigen',
-'skin' => '{{SITENAME}}-uterlijk',
-'skin-preview' => 'bekieken',
-'math' => 'Wiskundige formules',
-'dateformat' => 'Daotumweergave',
-'datedefault' => 'Gien veurkeur',
-'datetime' => 'Daotum en tied',
-'math_failure' => 'Wiskundige formule neet begriepelijk',
-'math_unknown_error' => 'Onbekende fout in formule',
-'math_unknown_function' => 'Onbekende functie in formule',
-'math_lexing_error' => 'Lexicografische fout in formule',
-'math_syntax_error' => 'Syntactische fout in formule',
-'math_image_error' => "'t Overzetten naor PNG is mislok.",
-'math_bad_tmpdir' => 'De map veur tiejelijke bestanen veur wiskundige formules besteet neet of is kan neet an-emaak wönnen.',
-'math_bad_output' => 'De map veur wiskundebestanen besteet neet of is neet an te maken.',
-'math_notexvc' => "Kan 't pregramma texvc neet vienen; configureer volgens de beschrieving in math/README.",
-'prefs-personal' => 'Gebrukersgegevens',
-'prefs-rc' => 'Leste wiezigingen',
-'prefs-watchlist' => 'Volglieste',
-'prefs-watchlist-days' => 'Antal dagen weergeven:',
-'prefs-watchlist-days-max' => '(maximaal 7 dagen)',
-'prefs-watchlist-edits' => 'Antal wiezigingen in de uut-ebreien volglieste:',
-'prefs-watchlist-edits-max' => '(maximale antal: 1.000)',
-'prefs-misc' => 'Overig',
-'prefs-resetpass' => 'Wachwoord wiezigen',
-'saveprefs' => 'Veurkeuren opslaon',
-'resetprefs' => 'Standardveurkeuren herstellen',
-'restoreprefs' => 'Alle standardinstellingen weerummezetten',
-'textboxsize' => 'Bewarkingsveld',
-'prefs-edit-boxsize' => "Ofmetingen van 't bewarkingsvienster.",
-'rows' => 'Regels',
-'columns' => 'Kolommen',
-'searchresultshead' => 'Zeukrisseltaoten',
-'resultsperpage' => 'Antal zeukrisseltaoten per pagina',
-'contextlines' => 'Antal regels per evunnen pagina',
-'contextchars' => 'Antal tekens per pagina',
-'stub-threshold' => 'Verwiezingsformettering van <a href="#" class="stub">beginnetjes</a>:',
-'recentchangesdays' => 'Antal dagen dee de lieste "leste wiezigingen" laot zien:',
-'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|dag|dagen}})',
-'recentchangescount' => "Antal wiezigingen in leste wiezigingen, geschiedenisse en logboekpagina's:",
-'savedprefs' => 'Veurkeuren bin op-esleugen.',
-'timezonelegend' => 'Tiedzone:',
-'timezonetext' => "Geef 't antal uren an, dee tussen joew tiedgebied en UTC liggen.",
-'localtime' => 'Plaoselijke tied:',
-'timezoneselect' => 'Tiedzone:',
-'timezoneuseserverdefault' => 'Tied van de server gebruken',
-'timezoneuseoffset' => 'Aanders (tiedverschil angeven)',
-'timezoneoffset' => 'Tiedverschil¹:',
-'servertime' => 'Tied op de server:',
-'guesstimezone' => 'Vanuut webkieker overnemen',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctis',
-'timezoneregion-asia' => 'Azië',
-'timezoneregion-atlantic' => 'Atlantische Oceaan',
-'timezoneregion-australia' => 'Australië',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indische Oceaan',
-'timezoneregion-pacific' => 'Stille Oceaan',
-'allowemail' => 'Berichen van aandere gebrukers toelaoten',
-'prefs-searchoptions' => 'Zeukinstellingen',
-'prefs-namespaces' => 'Naamruumtes',
-'defaultns' => 'Naamruumtes um in te zeuken:',
-'default' => 'standard',
-'files' => 'Bestanden',
-'prefs-custom-css' => 'Persoonlijke CSS',
-'prefs-custom-js' => 'Persoonlijke JS',
+'preferences' => 'Veurkeuren',
+'mypreferences' => 'Mien veurkeuren',
+'prefs-edits' => 'Antal bewarkingen:',
+'prefsnologin' => 'Neet an-meld',
+'prefsnologintext' => 'Je mutten <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} an-emeld]</span> ween um joew veurkeuren in te kunnen stellen.',
+'changepassword' => 'Wachwoord wiezigen',
+'prefs-skin' => '{{SITENAME}}-uterlijk',
+'skin-preview' => 'bekieken',
+'prefs-math' => 'Wiskundige formules',
+'datedefault' => 'Gien veurkeur',
+'prefs-datetime' => 'Daotum en tied',
+'prefs-personal' => 'Gebrukersgegevens',
+'prefs-rc' => 'Leste wiezigingen',
+'prefs-watchlist' => 'Volglieste',
+'prefs-watchlist-days' => 'Antal dagen weergeven:',
+'prefs-watchlist-days-max' => '(maximaal 7 dagen)',
+'prefs-watchlist-edits' => 'Antal wiezigingen in de uut-ebreien volglieste:',
+'prefs-watchlist-edits-max' => '(maximale antal: 1.000)',
+'prefs-watchlist-token' => 'Volgliestesleutel',
+'prefs-misc' => 'Overig',
+'prefs-resetpass' => 'Wachwoord wiezigen',
+'prefs-email' => 'Instellingen veur netpos',
+'prefs-rendering' => 'Paginaweergave',
+'saveprefs' => 'Veurkeuren opslaon',
+'resetprefs' => 'Standardveurkeuren herstellen',
+'restoreprefs' => 'Alle standardinstellingen weerummezetten',
+'prefs-editing' => 'Bewarkingsveld',
+'prefs-edit-boxsize' => "Ofmetingen van 't bewarkingsvienster.",
+'rows' => 'Regels',
+'columns' => 'Kolommen',
+'searchresultshead' => 'Zeukrisseltaoten',
+'resultsperpage' => 'Antal zeukrisseltaoten per pagina',
+'contextlines' => 'Antal regels per evunnen pagina',
+'contextchars' => 'Antal tekens per pagina',
+'stub-threshold' => 'Verwiezingsformettering van <a href="#" class="stub">beginnetjes</a>:',
+'recentchangesdays' => 'Antal dagen dee de lieste "leste wiezigingen" laot zien:',
+'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|dag|dagen}})',
+'recentchangescount' => 'Standard antal bewarkingen um te laoten zien:',
+'prefs-help-recentchangescount' => "Dit geldt veur leste wiezigingen, paginageschiedenisse en logboekpagina's",
+'prefs-help-watchlist-token' => "A-j in dit veld een geheime code invullen, dan maak 't een RSS-feed an veur joew volglieste.
+Iederene dee disse code weet kan joew volglieste bekieken, kies dus een veilige code.
+Je kunnen oek disse egenereren standardcode gebruken: $1",
+'savedprefs' => 'Veurkeuren bin op-esleugen.',
+'timezonelegend' => 'Tiedzone:',
+'localtime' => 'Plaoselijke tied:',
+'timezoneuseserverdefault' => 'Tied van de server gebruken',
+'timezoneuseoffset' => 'Aanders (tiedverschil angeven)',
+'timezoneoffset' => 'Tiedverschil¹:',
+'servertime' => 'Tied op de server:',
+'guesstimezone' => 'Vanuut webkieker overnemen',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctis',
+'timezoneregion-asia' => 'Azië',
+'timezoneregion-atlantic' => 'Atlantische Oceaan',
+'timezoneregion-australia' => 'Australië',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indische Oceaan',
+'timezoneregion-pacific' => 'Stille Oceaan',
+'allowemail' => 'Berichen van aandere gebrukers toelaoten',
+'prefs-searchoptions' => 'Zeukinstellingen',
+'prefs-namespaces' => 'Naamruumtes',
+'defaultns' => 'Aanders in de volgende naamruumten zeuken:',
+'default' => 'standard',
+'prefs-files' => 'Bestanen',
+'prefs-custom-css' => 'Persoonlijke CSS',
+'prefs-custom-js' => 'Persoonlijke JS',
+'prefs-reset-intro' => 'Je kunnen disse pagina gebruken um joew veurkeuren naor de standardinstellingen weerumme te zetten.
+Disse haandeling kan neet ongedaon-emaak wonnen.',
+'prefs-emailconfirm-label' => 'Netposbevestiging:',
+'prefs-textboxsize' => 'Ofmetingen bewarkingsscharm',
+'youremail' => 'Netposadres (neet verplich) *',
+'username' => 'Gebrukersnaam:',
+'uid' => 'Gebrukersnummer:',
+'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepen}}:',
+'prefs-registration' => 'Registrasiedaotum:',
+'yourrealname' => 'Echte naam (neet verplich)',
+'yourlanguage' => 'Taal veur systeemteksen',
+'yourvariant' => 'Gewunste taal:',
+'yournick' => 'Alias veur ondertekeningen',
+'prefs-help-signature' => 'Reacties op de overlegpagina\'s mutten ondertekend wonnen mit "<nowiki>~~~~</nowiki>", dit wonnen dan ummezet in joew ondertekening mit daorbie de daotum en tied van de bewarking.',
+'badsig' => 'Ongeldige haandtekening; HTML naokieken.',
+'badsiglength' => "Joew haandtekening is te lang.
+'t Mut minder as {{PLURAL:$1|letter|letters}} hemmen.",
+'yourgender' => 'Geslachte:',
+'gender-unknown' => 'Neet an-egeven',
+'gender-male' => 'Keel',
+'gender-female' => 'Deerne',
+'prefs-help-gender' => 'Optioneel: dit gebruken wie um gebrukers op een juuste meniere an te spreken in de pregrammetuur.
+Disse infermasie is zichbaor veur aandere gebrukers.',
+'email' => 'Privéberichen',
+'prefs-help-realname' => '* Echte naam (neet verplich): a-j disse optie invullen zu-w joew echte naam gebruken um erkenning te geven veur joew warkzaamheen.',
+'prefs-help-email' => "Een netposadres is neet verplich, mar zo ku-w wel joew wachwoord toesturen veur a-j 't vergeten bin.
+Je kunnen oek aandere luui in staot stellen um per netpos kontak mit joe op te nemen via de verwiezing op joew gebrukers- en overlegpagina, zonder da-j joew identiteit priesgeven.",
+'prefs-help-email-required' => 'Hier he-w een netposadres veur neudig.',
+'prefs-info' => 'Baosisinfermasie',
+'prefs-i18n' => 'Taalinstellingen',
+'prefs-signature' => 'Ondertekening',
+'prefs-dateformat' => 'Daotumopmaak:',
+'prefs-timeoffset' => 'Tiedsverschil',
+'prefs-advancedediting' => 'Aandere instellingen',
+'prefs-advancedrc' => 'Aandere instellingen',
+'prefs-advancedrendering' => 'Aandere instellingen',
+'prefs-advancedsearchoptions' => 'Aandere instellingen',
+'prefs-advancedwatchlist' => 'Aandere instellingen',
+'prefs-display' => 'Weergave-instellingen',
+'prefs-diffs' => 'Verschillen',
# User rights
-'userrights' => 'Gebrukersrechenbeheer', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Beheer gebrukersgroepen',
-'userrights-user-editname' => 'Vul een gebrukersnaam in:',
-'editusergroup' => 'Bewark gebrukersgroepen',
-'editinguser' => "Doonde mit 't wiezigen van de gebrukersrechen van '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Bewark gebrukersgroep',
-'saveusergroups' => 'Gebrukergroepen opslaon',
-'userrights-groupsmember' => 'Lid van:',
-'userrights-groups-help' => 'Je kunnen de groepen wiezigen waor as de gebruker lid van is.
+'userrights' => 'Gebrukersrechenbeheer',
+'userrights-lookup-user' => 'Beheer gebrukersgroepen',
+'userrights-user-editname' => 'Vul een gebrukersnaam in:',
+'editusergroup' => 'Bewark gebrukersgroepen',
+'editinguser' => "Doonde mit 't wiezigen van de gebrukersrechen van '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Bewark gebrukersgroep',
+'saveusergroups' => 'Gebrukergroepen opslaon',
+'userrights-groupsmember' => 'Lid van:',
+'userrights-groupsmember-auto' => 'Lid van:',
+'userrights-groups-help' => 'Je kunnen de groepen wiezigen waor as de gebruker lid van is.
* Een an-evink vakjen betekent dat de gebruker lid is van de groep.
* Een neet an-evink vakjen betekent dat de gebruker gien lid is van de groep.
* Een "*" betekent da-j een gebruker neet uut een groep vort kunnen haolen naodat e deran toe-evoeg is, of aandersumme.',
-'userrights-reason' => 'Reden:',
-'userrights-no-interwiki' => "Je hemmen gien rechen um gebrukersrechen op aandere wiki's te wiezigen.",
-'userrights-nodatabase' => 'Databanke $1 besteet neet of is gien plaoselijke databanke.',
-'userrights-nologin' => 'Je mutten [[Special:UserLogin|an-emeld]] ween en as gebruker de juuste rechen hemmen um gebrukersrechen toe te kunnen wiezen.',
-'userrights-notallowed' => 'Je hemmen gien rechen um gebrukersrechen toe te kunnen wiezen.',
-'userrights-changeable-col' => 'Groepen dee-j beheren kunnen',
-'userrights-unchangeable-col' => 'Groepen dee-j neet beheren kunnen',
+'userrights-reason' => 'Reden:',
+'userrights-no-interwiki' => "Je hemmen gien rechen um gebrukersrechen op aandere wiki's te wiezigen.",
+'userrights-nodatabase' => 'Databanke $1 besteet neet of is gien plaoselijke databanke.',
+'userrights-nologin' => 'Je mutten [[Special:UserLogin|an-emeld]] ween en as gebruker de juuste rechen hemmen um gebrukersrechen toe te kunnen wiezen.',
+'userrights-notallowed' => 'Je hemmen gien rechen um gebrukersrechen toe te kunnen wiezen.',
+'userrights-changeable-col' => 'Groepen dee-j beheren kunnen',
+'userrights-unchangeable-col' => 'Groepen dee-j neet beheren kunnen',
# Groups
'group' => 'Groep:',
@@ -1374,6 +1441,7 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'right-bigdelete' => "Pagina's mit een grote geschiedenisse vortdoon",
'right-deleterevision' => "Versies van pagina's verbargen",
'right-deletedhistory' => 'Vort-edaone versies bekieken, zonder te kunnen zien wat der vort-edaon is',
+'right-deletedtext' => 'Bekiek vort-edaone tekse en wiezigingen tussen vort-edaone versies',
'right-browsearchive' => "Vort-edaone pagina's bekieken",
'right-undelete' => "Vort-edaone pagina's weerummeplaosen",
'right-suppressrevision' => 'Verbörgen versies bekieken en weerummeplaosen',
@@ -1387,6 +1455,8 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'right-editprotected' => "Beveiligen pagina's bewarken",
'right-editinterface' => "'t {{SITENAME}}-uterlijk bewarken",
'right-editusercssjs' => 'De CSS- en JS-bestanen van aandere gebrukers bewarken',
+'right-editusercss' => 'De CSS-bestanen van aandere gebrukers bewarken',
+'right-edituserjs' => 'De JS-bestanen van aandere gebrukers bewarken',
'right-rollback' => 'Gauw de leste bewarking(en) van een gebruker an een pagina weerummedreien',
'right-markbotedits' => 'Weerummedreien bewarkingen markeren as botbewarkingen',
'right-noratelimit' => 'Hef gien tiedsofhankelijke beparkingen',
@@ -1403,6 +1473,8 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'right-siteadmin' => 'De databanke blokkeren en weer vriegeven',
'right-reset-passwords' => 'Wachwoorden van aandere gebrukers opniej instellen',
'right-override-export-depth' => "Pagina's uutvoeren, oek de pagina's waor naor verwezen wonnen, tot een diepte van 5",
+'right-versiondetail' => 'Uut-ebreide versieinfermasie van de pregrammetuur laoten zien',
+'right-sendemail' => 'Berich versturen naor aandere gebrukers',
# User rights log
'rightslog' => 'Gebrukersrechenlogboek',
@@ -1452,6 +1524,15 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'recentchanges-legend' => 'Opties veur leste wiezigingen',
'recentchangestext' => 'Op disse pagina ku-j de leste wiezigingen van disse wiki bekieken.',
'recentchanges-feed-description' => 'Zeuk naor de alderleste wiezingen op disse wiki in disse feed.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nieje pagina',
+'recentchanges-label-newpage' => 'Mit disse bewarking is een nieje pagina an-emaak',
+'recentchanges-legend-minor' => '$1 - kleine wieziging',
+'recentchanges-label-minor' => 'Dit is een kleine wieziging',
+'recentchanges-legend-bot' => '$1 - botbewarking',
+'recentchanges-label-bot' => 'Disse bewarking is uut-evoerd deur een bot',
+'recentchanges-legend-unpatrolled' => '$1 - bewarking is neet nao-ekeken',
+'recentchanges-label-unpatrolled' => 'Disse bewarking is nog neet nao-ekeken',
'rcnote' => "Hieronder {{PLURAL:$1|steet de leste bewarking|staon de leste '''$1''' bewarkingen}} van de of-eleupen {{PLURAL:$2|dag|'''$2''' dagen}} (stand: $5, $4).",
'rcnotefrom' => 'Dit bin de wiezigingen sins <b>$2</b> (maximum van <b>$1</b> wiezigingen).',
'rclistfrom' => 'Bekiek wiezigingen vanof $1',
@@ -1469,6 +1550,7 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
'minoreditletter' => 'K',
'newpageletter' => 'N',
'boteditletter' => ' (bot)',
+'unpatrolledletter' => '!',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|keer|keer}} op een volglieste]',
'rc_categories' => 'Beparking tot kattegerieën (scheien mit "|")',
'rc_categories_any' => 'alles',
@@ -1478,6 +1560,8 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
# Recent changes linked
'recentchangeslinked' => 'Volg verwiezigingen',
+'recentchangeslinked-feed' => 'Volg verwiezigingen',
+'recentchangeslinked-toolbox' => 'Volg verwiezigingen',
'recentchangeslinked-title' => 'Wiezigingen verwant an $1',
'recentchangeslinked-noresult' => 'Gien wiezigingen of pagina waornaor verwezen wönnen in disse periode.',
'recentchangeslinked-summary' => "Op disse speciale pagina steet een lieste mit de leste wieziginen op pagina's waornaor verwezen wönnen. Pagina's op [[Special:Watchlist|joew volglieste]] staon '''vet-edrok'''.",
@@ -1487,8 +1571,8 @@ Bevestig dat dit de bedoeling is, da-j de gevolgen dervan begriepen en da-j dit
# Upload
'upload' => 'Bestaand toevoegen',
'uploadbtn' => 'Bestaand toevoegen',
-'reupload' => 'Opniej toevoegen',
'reuploaddesc' => 'Weerumme naor bestaandtoevoegingsformelier.',
+'upload-tryagain' => 'Bestaansbeschrieving biewarken',
'uploadnologin' => 'Neet an-emeld',
'uploadnologintext' => 'Je mutten [[Special:UserLogin|an-emeld]] ween um bestanen toe te kunnen voegen.',
'upload_directory_missing' => 'De bestaanstoevoegingsmap ($1) is vort en kon neet an-emaak wönnen deur de webserver.',
@@ -1521,6 +1605,7 @@ Zie de [[Special:NewFiles|uutstalling mit media]] veur een overzichte.',
'minlength1' => 'Bestaansnamen mutten uut tenminsen één letter bestaon.',
'illegalfilename' => 'De bestaansnaam "$1" bevat kerakters dee neet in namen van artikels veur maggen koemen. Geef \'t bestaand een aandere naam, en prebeer \'t dan opniej toe te voegen.',
'badfilename' => 'De naam van \'t bestaand is ewiezig naor "$1".',
+'filetype-mime-mismatch' => "De bestaansextensie heurt neet bie 't MIME-type.",
'filetype-badmime' => 'Bestanen mit \'t MIME-type "$1" maggen hier neet toe-evoeg wonnen.',
'filetype-bad-ie-mime' => 'Dit bestaand kan neet toe-evoeg wonnen umdat Internet Explorer \'t zol herkennen as "$1", een neet toe-estaone bestaanstype dee schao an kan richen.',
'filetype-unwanted-type' => "'''\".\$1\"''' is een ongewunst bestaanstype. An-ewezen {{PLURAL:\$3|bestaanstype is|bestaanstypes bin}} \$2.",
@@ -1540,7 +1625,6 @@ Bewark de pagina haandmaotig um joew beschrieving daor weer te geven.
* Naam van 't bestaand da-j derbie zetten wollen: '''<tt>[[:$1]]</tt>'''
* Naam van 't bestaonde bestaand: '''<tt>[[:$2]]</tt>'''
Kies een aandere naam.",
-'fileexists-thumb' => "'''<center>Bestaonde ofbeelding</center>'''",
'fileexists-thumbnail-yes' => "Dit bestaand is een ofbeelding waorvan de grootte verkleind is ''(ofbeeldingsoverzichte)''. [[$1|thumb]]
Kiek 't bestaand nao <strong><tt>[[:$1]]</tt></strong>.
As de ofbeelding dee-j krek nao-ekeken hemmen dezelfde grootte hef, dan is 't neet neudig um 't opniej toe te voegen.",
@@ -1558,6 +1642,7 @@ A-j 't bestaand asnog toevoegen willen, gao dan weerumme en kies een aandere naa
Bekiek 't vortdologboek veurda-j veurdan gaon.",
'successfulupload' => 'Bestaanstoevoeging was succesvol',
'uploadwarning' => 'Waorschuwing',
+'uploadwarning-text' => "Pas de bestaansbeschrieving hieronder an en prebeer 't opniej",
'savefile' => 'Bestaand opslaon',
'uploadedimage' => 'Toe-evoeg: [[$1]]',
'overwroteimage' => 'Nieje versie van "[[$1]]" toe-evoeg',
@@ -1565,12 +1650,14 @@ Bekiek 't vortdologboek veurda-j veurdan gaon.",
'uploaddisabledtext' => 'Bestaanstoevoegingen bin uut-eschakeld.',
'php-uploaddisabledtext' => "'t Toevoegen van PHP-bestanen is uut-eschakeld. Kiek de instellingen veur 't toevoegen van bestanen effen nao.",
'uploadscripted' => 'Dit bestaand bevat HTML- of scriptcode dee verkeerd elezen kan wönnen deur de webkieker.',
-'uploadcorrupt' => "'t Bestaand is korrup of hef een verkeerde extensie.
-Kiek 't bestaand nao en voeg 't bestaand opniej toe.",
'uploadvirus' => "'t Bestaand bevat een virus! Gegevens: $1",
+'upload-source' => 'Bronbestaand',
'sourcefilename' => 'Bestaansnaam op de hardeschieve:',
+'sourceurl' => 'Bronwebadres:',
'destfilename' => 'Opslaon as (optioneel)',
'upload-maxfilesize' => 'Maximale bestaansgrootte: $1',
+'upload-description' => 'Bestaansbeschrieving',
+'upload-options' => "Instellingen veur 't toevoegen van bestanen",
'watchthisupload' => 'Volg dit bestaand',
'filewasdeleted' => "Een bestaand mit disse naam is al eerder vort-edaon. Kiek 't $1 nao veurda-j 't opniej toevoegen.",
'upload-wasdeleted' => "'''Waorschuwing: je bin een bestaand an 't toevoegen dee eerder al vort-edaon is.'''
@@ -1579,12 +1666,43 @@ Bedenk eers of 't inderdaod de bedoeling is dat dit bestaand toe-evoeg wönnen.
't Logboek mit alle vort-edaone infermasie ku-j hier vienen:",
'filename-bad-prefix' => "De naam van 't bestaand da-j toevoegen, begint mit '''\"\$1\"''', dit is een neet-beschrievende naam dee meestentieds autematisch deur een digitale camera egeven wonnen. Kies een dudelijke naam veur 't bestaand.",
-'upload-proto-error' => 'Verkeerd protecol',
-'upload-proto-error-text' => 'Um op disse meniere bestanen toe te voegen mutten webadressen beginnen mit <code>http://</code> of <code>ftp://</code>.',
-'upload-file-error' => 'Interne fout',
-'upload-file-error-text' => 'Bie ons gung der effen wat fout to een tiedelijk bestaand op de server an-emaak wönnen. Neem kontak op mit een [[Special:ListUsers/sysop|systeembeheerder]].',
-'upload-misc-error' => "Onbekende fout bie 't toevoegen van joew bestaand",
-'upload-misc-error-text' => "Der is bie 't toevoegen van 't bestaand een onbekende fout op-etrejen. Kiek effen nao of de verwiezing 't wel dut en prebeer 't opniej. As 't prebleem anhuilt, neem dan kontak op mit één van de systeembeheerders.",
+'upload-proto-error' => 'Verkeerd protecol',
+'upload-proto-error-text' => 'Um op disse meniere bestanen toe te voegen mutten webadressen beginnen mit <code>http://</code> of <code>ftp://</code>.',
+'upload-file-error' => 'Interne fout',
+'upload-file-error-text' => 'Bie ons gung der effen wat fout to een tiedelijk bestaand op de server an-emaak wönnen. Neem kontak op mit een [[Special:ListUsers/sysop|systeembeheerder]].',
+'upload-misc-error' => "Onbekende fout bie 't toevoegen van joew bestaand",
+'upload-misc-error-text' => "Der is bie 't toevoegen van 't bestaand een onbekende fout op-etrejen. Kiek effen nao of de verwiezing 't wel dut en prebeer 't opniej. As 't prebleem anhuilt, neem dan kontak op mit één van de systeembeheerders.",
+'upload-too-many-redirects' => 'Der zatten te veul deurverwiezingen in de URL.',
+'upload-unknown-size' => 'Onbekende grootte',
+'upload-http-error' => 'Der is een HTTP-fout op-etrejen: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Toegang eweigerd',
+'img-auth-nopathinfo' => 'PATH_INFO onbreek.
+Joew server is neet in-esteld um disse infermasie deur te geven.
+Meschien gebruuk disse CGI, en dan wonnen img_auth neet ondersteund.
+Zie http://www.mediawiki.org/wiki/Manual:Image_Authorization veur meer infermasie',
+'img-auth-notindir' => "'t Op-evreugen pad is neet de in-estelde bestaanstoevoegingsmap",
+'img-auth-badtitle' => 'Kon gien geldige paginanaam maken van "$1".',
+'img-auth-nologinnWL' => 'Je bin neet an-emeld en "$1" steet neet op de witte lieste.',
+'img-auth-nofile' => 'Bestaand "$1" besteet neet.',
+'img-auth-isdir' => 'Je preberen de map "$1" binnen te koemen.
+Allinnig toegang tot bestanen is toe-estaon.',
+'img-auth-streaming' => 'Bezig mit \'t streumen van "$1".',
+'img-auth-public' => "'t Doel van img_auth.php is de uutvoer van bestanen van een besleuten wiki.
+Disse wiki is in-esteld as peblieke wiki.
+Um beveiligingsredens is img_auth.php uut-eschakeld.",
+'img-auth-noread' => 'De gebruker hef gien leestoegang tot "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Ongeldig webadres: $1',
+'http-invalid-scheme' => 'Webadressen mit de opmaak "$1" wönnen neet ondersteund.',
+'http-request-error' => "Fout bie 't verzenden van 't verzeuk.",
+'http-read-error' => "Fout bie 't lezen van HTTP",
+'http-timed-out' => "Wachtied bie 't HTTP verzeuk",
+'http-curl-error' => "Fout bie 't ophaolen van 't webadres: $1",
+'http-host-unreachable' => 'Kon webadres neet bereiken.',
+'http-bad-status' => "Der is een prebleem mit 't HTTP-verzeuk: $1 $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kon webadres neet bereiken',
@@ -1593,6 +1711,7 @@ Bedenk eers of 't inderdaod de bedoeling is dat dit bestaand toe-evoeg wönnen.
'upload-curl-error28-text' => "'t Duren te lange veurdat de webstee reageren. Kiek effen nao of de webstee bereikbaor is, wach effen en prebeer 't daornao weer. Prebeer 't aanders as 't wat rustiger is.",
'license' => 'Licentie',
+'license-header' => 'Licentie',
'nolicense' => 'Gien licentie ekeuzen',
'license-nopreview' => '(Naokieken is neet meugelijk)',
'upload_source_url' => ' (een geldig, pebliek toegankelijk webadres)',
@@ -1613,6 +1732,7 @@ Klikken op een kelomkop veraandert de sortering.',
'listfiles_count' => 'Versies',
# File description page
+'file-anchor-link' => 'Ofbeelding',
'filehist' => 'Bestaansgeschiedenisse',
'filehist-help' => "Klik op een daotum/tied um 't bestaand te zien zoas 't to was.",
'filehist-deleteall' => 'alles vortdoon',
@@ -1627,6 +1747,7 @@ Klikken op een kelomkop veraandert de sortering.',
'filehist-dimensions' => 'Grootte',
'filehist-filesize' => 'Bestaansgrootte',
'filehist-comment' => 'Opmarkingen',
+'filehist-missing' => 'Bestaand ontbreek',
'imagelinks' => 'Verwiezingen naor dit bestaand',
'linkstoimage' => "Disse ofbeelding wönnen gebruuk op de volgende {{PLURAL:$1|pagina|$1 pagina's}}:",
'linkstoimage-more' => 'Der {{PLURAL:$2|is|bin}} meer as $1 {{PLURAL:$1|verwiezing|verwiezingen}} naor dit bestaand.
@@ -1636,15 +1757,14 @@ De [[Special:WhatLinksHere/$2|hele lieste]] is oek beschikbaor.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meer verwiezingen]] naor dit bestaand bekieken.',
'redirectstofile' => "{{PLURAL:$1|'t Volgende bestaand verwies|De volgende $1 bestanen verwiezen}} deur naor dit bestaand:",
'duplicatesoffile' => "{{PLURAL:$1|'t Volgende bestaand is|De volgende $1 bestanen bin}} liekeleens as dit bestaand ([[Special:FileDuplicateSearch/$2|meer infermasie]]):",
-'sharedupload' => 'Dit is een edeeld bestaand op $1 en ku-j oek gebruken veur aandere prejekken.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Zie $1 veur veerdere infermasie.',
-'shareduploadwiki-desc' => 'De beschrieving van de $1 vie-j hieronder.',
-'shareduploadwiki-linktext' => 'bestandbeschrievingspagina',
-'noimage' => "Der besteet gien bestand mit disse naam, je kunnen 't $1.",
-'noimage-linktext' => 'toevoegen',
+'sharedupload' => 'Dit is een edeeld bestaand op $1 en ku-j oek gebruken veur aandere prejekken.',
+'sharedupload-desc-there' => "Dit is een edeeld bestaand op $1 en ku-j oek gebruken veur aandere prejekken. Bekiek de [$2 beschrieving van 't bestaand] veur meer infermasie.",
+'sharedupload-desc-here' => "Dit is een edeeld bestaand op $1 en ku-j oek gebruken veur aandere prejekken. De [$2 beschrieving van 't bestaand] derginse, steet hieronder.",
+'filepage-nofile' => 'Der besteet gien bestaand mit disse naam.',
+'filepage-nofile-link' => "Der besteet gien bestaand mit disse naam, mar je kunnen 't [$1 toevoegen].",
'uploadnewversion-linktext' => 'Een niejere versie van dit bestaand toevoegen.',
-'shared-repo-from' => 'uut $1', # $1 is the repository name
-'shared-repo' => 'een edeelde mediadatabanke', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'uut $1',
+'shared-repo' => 'een edeelde mediadatabanke',
# File reversion
'filerevert' => '$1 weerummedreien',
@@ -1673,6 +1793,7 @@ De [[Special:WhatLinksHere/$2|hele lieste]] is oek beschikbaor.',
** Auteursrechenschending
** Dit bestaand he-w dubbel",
'filedelete-edit-reasonlist' => "Reden veur 't vortdoon bewarken",
+'filedelete-maintenance' => "'t Vortdoon en weerummeplaosen kan noen effen neet umda-w bezig bin mit onderhoud.",
# MIME search
'mimesearch' => 'Zeuken op MIME-type',
@@ -1694,7 +1815,7 @@ Vergeet neet de verwiezingen nao te kieken veurda-j de mal vortdoon.',
# Random page
'randompage' => 'Willekeurig artikel',
-'randompage-nopages' => 'Der staon gien pagina\'s in de naamruumte "$1".',
+'randompage-nopages' => "Der staon gien pagina's in de {{PLURAL:$2|naamruumte|naamruumtes}}: $1.",
# Random redirect
'randomredirect' => 'Willekeurige deurverwiezing',
@@ -1706,6 +1827,7 @@ Vergeet neet de verwiezingen nao te kieken veurda-j de mal vortdoon.',
'statistics-header-edits' => 'Bewarkingsstaotestieken',
'statistics-header-views' => 'Staotestieken bekieken',
'statistics-header-users' => 'Gebrukerstaotestieken',
+'statistics-header-hooks' => 'Overige staotestieken',
'statistics-articles' => "Inhouwelijke pagina's",
'statistics-pages' => "Pagina's",
'statistics-pages-desc' => "Alle pagina's in de wiki, oek overlegpagina's, deurverwiezingen, en gao zo mar deur.",
@@ -1735,8 +1857,8 @@ Meestentieds is leste pagina de gewunste doelpagina, waor oek de eerste pagina h
'brokenredirects' => 'Ebreuken deurverwiezingen',
'brokenredirectstext' => 'Disse deurverwiezingen verwiezen naor een neet-bestaonde pagina.',
-'brokenredirects-edit' => '(bewark)',
-'brokenredirects-delete' => '(vortdoon)',
+'brokenredirects-edit' => 'bewark',
+'brokenredirects-delete' => 'vortdoon',
'withoutinterwiki' => "Pagina's zonder verwiezingen naor aandere talen",
'withoutinterwiki-summary' => "De volgende pagina's verwiezen neet naor versies in een aandere taal.",
@@ -1846,9 +1968,7 @@ Je kunnen oek kiezen veur bepaolde logboeken en filteren op gebruker (heufletter
# Special:Categories
'categories' => 'Kattegerieën',
-'categoriespagetext' => "De volgende kattegerieën bin anwezig in {{SITENAME}}.
-
-De volgende kattegerieën bevatten pagina's of media.
+'categoriespagetext' => "De volgende {{PLURAL:$1|kattegerie bevat|kattegerieën bevatten}} pagina's of mediabestanen.
[[Special:UnusedCategories|ongebruken kattegerieën]] zie-j hier neet.
Zie oek [[Special:WantedCategories|gewunste kattegerieën]].",
'categoriesfrom' => 'Kattegerieën weergeven vanof:',
@@ -1856,8 +1976,9 @@ Zie oek [[Special:WantedCategories|gewunste kattegerieën]].",
'special-categories-sort-abc' => 'alfebetisch sorteren',
# Special:DeletedContributions
-'deletedcontributions' => 'Vort-edaone gebrukersbiedragen',
-'deletedcontributions-title' => 'Vort-edaone gebrukersbiedragen',
+'deletedcontributions' => 'Vort-edaone gebrukersbiedragen',
+'deletedcontributions-title' => 'Vort-edaone gebrukersbiedragen',
+'sp-deletedcontributions-contribs' => 'biedragen',
# Special:LinkSearch
'linksearch' => 'Uutgaonde verwiezingen',
@@ -1873,6 +1994,16 @@ Ondersteunde protecollen: <tt>$1</tt>',
'listusersfrom' => 'Gebrukers bekieken vanof:',
'listusers-submit' => 'Bekiek',
'listusers-noresult' => 'Gien gebrukers evunnen. Zeuk oek naor variaanten mit kleine letters of heufletters.',
+'listusers-blocked' => '(eblokkeerd)',
+
+# Special:ActiveUsers
+'activeusers' => 'Actieve gebrukers',
+'activeusers-intro' => 'Dit is een lieste van gebrukers dee de of-eleupen $1 {{PLURAL:$1|dag|dagen}} enigszins actief ewes bin.',
+'activeusers-count' => '$1 leste {{PLURAL:$1|bewarking|bewarkingen}} in de of-eleupen {{PLURAL:$3|dag|$3 dagen}}',
+'activeusers-from' => 'Gebrukers weergeven vanof:',
+'activeusers-hidebots' => 'Bots verbargen',
+'activeusers-hidesysops' => 'Beheerders verbargen',
+'activeusers-noresult' => 'Gien actieve gebrukers evunnen.',
# Special:Log/newusers
'newuserlogpage' => 'Logboek mit anwas',
@@ -1883,17 +2014,23 @@ Ondersteunde protecollen: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Gebruker autematisch an-emaak',
# Special:ListGroupRights
-'listgrouprights' => 'Rechen van gebrukersgroepen',
-'listgrouprights-summary' => 'Op disse pagina staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechen.
+'listgrouprights' => 'Rechen van gebrukersgroepen',
+'listgrouprights-summary' => 'Op disse pagina staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechen.
Meer infermasie over de rechen ku-j [[{{MediaWiki:Listgrouprights-helppage}}|hier vienen]].',
-'listgrouprights-group' => 'Groep',
-'listgrouprights-rights' => 'Rechen',
-'listgrouprights-helppage' => 'Help:Gebrukersrechen',
-'listgrouprights-members' => '(lejenlieste)',
-'listgrouprights-addgroup' => 'Kan gebrukers bie disse {{PLURAL:$2|groep|groepen}} zetten: $1',
-'listgrouprights-removegroup' => 'Kan gebrukers uut disse {{PLURAL:$2|groep|groepen}} haolen: $1',
-'listgrouprights-addgroup-all' => 'Kan gebrukers bie alle groepen zetten',
-'listgrouprights-removegroup-all' => 'Kan gebrukers uut alle groepen haolen',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Rech toe-ewezen</span>
+* <span class="listgrouprights-revoked">Rech in-etrökken</span>',
+'listgrouprights-group' => 'Groep',
+'listgrouprights-rights' => 'Rechen',
+'listgrouprights-helppage' => 'Help:Gebrukersrechen',
+'listgrouprights-members' => '(lejenlieste)',
+'listgrouprights-addgroup' => 'Kan gebrukers bie disse {{PLURAL:$2|groep|groepen}} zetten: $1',
+'listgrouprights-removegroup' => 'Kan gebrukers uut disse {{PLURAL:$2|groep|groepen}} haolen: $1',
+'listgrouprights-addgroup-all' => 'Kan gebrukers bie alle groepen zetten',
+'listgrouprights-removegroup-all' => 'Kan gebrukers uut alle groepen haolen',
+'listgrouprights-addgroup-self' => 'Kan {{PLURAL:$2|groep|groepen}} toevoegen an eigen gebruker: $1',
+'listgrouprights-removegroup-self' => 'Kan {{PLURAL:$2|groep|groepen}} vortdoon van eigen gebruker: $1',
+'listgrouprights-addgroup-self-all' => 'Kan alle groepen toevoegen an eigen gebruker',
+'listgrouprights-removegroup-self-all' => 'Kan alle groepen vortdoon van eigen gebruker',
# E-mail user
'mailnologin' => 'Neet an-emeld.',
@@ -1966,7 +2103,7 @@ Toekomstige wiezigingen op disse pagina en de overlegpagina zullen hier vermeld
'enotif_lastvisited' => 'Zie $1 veur alle wiezigingen sins joew leste bezeuk.',
'enotif_lastdiff' => 'Zie $1 um disse wieziging te bekieken.',
'enotif_anon_editor' => 'annenieme gebruker $1',
-'enotif_body' => 'Beste $WATCHINGUSERNAME,
+'enotif_body' => 'Huj $WATCHINGUSERNAME,
De pagina $PAGETITLE op {{SITENAME}} is $CHANGEDORCREATED op $PAGEEDITDATE deur $PAGEEDITOR, zie $PAGETITLE_URL veur de leste versie.
@@ -1978,14 +2115,18 @@ Kontakgevevens van de auteur:
Netpos: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Je kriegen veerder gien berichen, behalve a-j disse pagina bezeuken. Op joew volglieste ku-j veur alle pagina\'s dee-j volgen de waorschuwingsinstellingen derof haolen.
+Je kriegen veerder gien berichen, behalve a-j disse pagina bezeuken.
+Op joew volglieste ku-j veur alle pagina\'s dee-j volgen de waorschuwingsinstellingen derof haolen.
- Groeten van \'t {{SITENAME}}-waorschuwingssysteem.
+Groeten van \'t {{SITENAME}}-waorschuwingssysteem.
--
Je kunnen de instellingen van joew volglieste wiezigen op:
{{fullurl:Special:Watchlist/edit}}
+Je kunnen de pagina van joew volglieste ofhaolen deur op de volgende verwiezing te klikken:
+$UNWATCHURL
+
Opmarkingen en veerdere hulpe:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1998,10 +2139,11 @@ Opmarkingen en veerdere hulpe:
'exblank' => 'Pagina was leeg',
'delete-confirm' => '"$1" vortdoon',
'delete-legend' => 'Vortdoon',
-'historywarning' => 'Waorschuwing: disse pagina hef een veurgeschiedenisse. Kiek effen nao of je neet een ouwere versie van disse pagina herstellen kunnen.',
+'historywarning' => "'''Waorschuwing''': de pagina dee-j vortdoon, hef $1 {{PLURAL:$1|versie|versies}}:",
'confirmdeletetext' => "Je staon op 't punt een pagina en de geschiedenisse dervan vort te doon.
Bevestig hieronder dat dit inderdaod de bedoeling is, da-j de gevolgen begriepen en dat 't akkerdeert mit 't [[{{MediaWiki:Policy-url}}|beleid]].",
'actioncomplete' => 'Uut-evoerd',
+'actionfailed' => 'De haandeling is mislok.',
'deletedtext' => '\'t Artikel "$1" is vort-edaon. Zie de "$2" veur een lieste van pagina\'s dee as les vort-edaon bin.',
'deletedarticle' => '"$1" vort-edaon',
'suppressedarticle' => 'hef "[[$1]]" verbörgen',
@@ -2024,19 +2166,20 @@ Woart je: 't vortdoon van disse pagina kan de warking van de databanke van {{SIT
Wees veurzichtig",
# Rollback
-'rollback' => 'Wiezigingen herstellen',
-'rollback_short' => 'Weerummedreien',
-'rollbacklink' => 'Weerummedreien',
-'rollbackfailed' => 'Wieziging herstellen is mislok',
-'cantrollback' => 'De wiezigingen konnen neet hersteld wonnen; der is mar 1 auteur.',
-'alreadyrolled' => 'Kan de leste wieziging van de pagina [[$1]] deur [[User:$2|$2]] ([[User talk:$2|Overleg]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neet weerummedreien.
+'rollback' => 'Wiezigingen herstellen',
+'rollback_short' => 'Weerummedreien',
+'rollbacklink' => 'Weerummedreien',
+'rollbackfailed' => 'Wieziging herstellen is mislok',
+'cantrollback' => 'De wiezigingen konnen neet hersteld wonnen; der is mar 1 auteur.',
+'alreadyrolled' => 'Kan de leste wieziging van de pagina [[$1]] deur [[User:$2|$2]] ([[User talk:$2|Overleg]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neet weerummedreien.
Een aander hef disse pagina al bewark of hersteld naor een eerdere versie.
De leste bewarking op disse pagina is edaon deur [[User:$3|$3]] ([[User talk:$3|Overleg]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "De bewarkingssamenvatting was: ''$1''.", # only shown if there is an edit comment
-'revertpage' => 'Wiezigingen deur [[Special:Contributions/$2|$2]] hersteld tot de versie nao de leste wieziging deur $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Wiezigingen van $1; weerummedreid naor de leste versie van $2.',
-'sessionfailure' => 'Der is een prebleem mit joew anmeldsessie. De actie is stop-ezet uut veurzörg tegen een beveiligingsrisico (dat besteet uut \'t meugelijke "kraken" van disse sessie). Gao weerumme naor de veurige pagina, laoj disse pagina opniej en prebeer \'t nog es.',
+'editcomment' => "De bewarkingssamenvatting was: ''$1''.",
+'revertpage' => 'Wiezigingen deur [[Special:Contributions/$2|$2]] hersteld tot de versie nao de leste wieziging deur $1',
+'revertpage-nouser' => 'Wiezigingen deur (gebrukersnaam vort-edaon) weerummedreid naor de leste versie deur [[User:$1|$1]]',
+'rollback-success' => 'Wiezigingen van $1; weerummedreid naor de leste versie van $2.',
+'sessionfailure' => 'Der is een prebleem mit joew anmeldsessie. De actie is stop-ezet uut veurzörg tegen een beveiligingsrisico (dat besteet uut \'t meugelijke "kraken" van disse sessie). Gao weerumme naor de veurige pagina, laoj disse pagina opniej en prebeer \'t nog es.',
# Protect
'protectlogpage' => 'Beveiligingslogboek',
@@ -2052,7 +2195,7 @@ De leste bewarking op disse pagina is edaon deur [[User:$3|$3]] ([[User talk:$3|
'protectexpiry' => 'Duur',
'protect_expiry_invalid' => 'Verlooptied is ongeldig.',
'protect_expiry_old' => 'De verlooptied is al veurbie.',
-'protect-unchain' => 'Ontkoppel de naamwiezigingsrechen',
+'protect-unchain-permissions' => 'Overige beveiligingsinstellingen beschikbaor maken',
'protect-text' => "Hier ku-j 't beveiligingsnivo veur de pagina '''$1''' instellen.",
'protect-locked-blocked' => "Je kunnen beveiligingsnivo's neet wiezigen terwiel je eblokkeerd bin. Hier bin de instellingen zoas ze noen bin veur de pagina '''$1''':",
'protect-locked-dblock' => "Beveiligingsnivo's kunnen effen neet ewiezig wönnen umdat de databanke noen beveilig is.
@@ -2080,7 +2223,7 @@ Hier staon de instellingen zoas ze noen bin veur de pagina '''$1''':",
** Bewarkingsoorlog
** Pagina mit veul bezeukers',
'protect-edit-reasonlist' => 'Redens veur beveiliging bewarken',
-'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 weke:1 week,2 weken:2 weeks,1 maond:1 month,3 maonden:3 months,6 maonden:6 months,1 jaor:1 year,onbepark:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 weke:1 week,2 weken:2 weeks,1 maond:1 month,3 maonden:3 months,6 maonden:6 months,1 jaor:1 year,onbepark:infinite',
'restriction-type' => 'Toegang',
'restriction-level' => 'Beveiligingsnivo',
'minimum-size' => 'Minimumgrootte (bytes)',
@@ -2120,6 +2263,7 @@ In dat geval mu-j de leste versie as zichbaor instellen.",
'undelete-nodiff' => 'Gien eerdere versie evunnen.',
'undeletebtn' => 'Weerummeplaosen',
'undeletelink' => 'bekiek/weerummeplaosen',
+'undeleteviewlink' => 'bekieken',
'undeletereset' => 'Herstel',
'undeleteinvert' => 'Selectie ummekeren',
'undeletecomment' => 'Reden:',
@@ -2158,19 +2302,24 @@ $1",
'contributions-title' => 'Biedragen van $1',
'mycontris' => 'Mien biedragen',
'contribsub2' => 'Veur $1 ($2)',
-'nocontribs' => 'Gien wiezigingen evunnen dee an de estelde criteria voldoon.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Gien wiezigingen evunnen dee an de estelde criteria voldoon.',
'uctop' => ' (leste wieziging)',
'month' => 'Maond:',
'year' => 'Jaor:',
-'sp-contributions-newbies' => 'Allinnig biedragen van anwas bekieken',
-'sp-contributions-newbies-sub' => 'Veur anwas',
-'sp-contributions-newbies-title' => 'Biedragen van anwas',
-'sp-contributions-blocklog' => 'blokkeerlogboek',
-'sp-contributions-logs' => 'logboeken',
-'sp-contributions-search' => 'Zeuken naor biedragen',
-'sp-contributions-username' => 'IP-adres of gebrukersnaam:',
-'sp-contributions-submit' => 'Zeuk',
+'sp-contributions-newbies' => 'Allinnig biedragen van anwas bekieken',
+'sp-contributions-newbies-sub' => 'Veur anwas',
+'sp-contributions-newbies-title' => 'Biedragen van anwas',
+'sp-contributions-blocklog' => 'blokkeerlogboek',
+'sp-contributions-deleted' => 'vort-edaone gebrukersbiedragen',
+'sp-contributions-logs' => 'logboeken',
+'sp-contributions-talk' => 'overleg',
+'sp-contributions-userrights' => 'gebrukersrechenbeheer',
+'sp-contributions-blocked-notice' => "Disse gebruker is op 't mement eblokkeerd.
+De leste regel uut 't blokkeerlogboek steet hieronder as rifferentie:",
+'sp-contributions-search' => 'Zeuken naor biedragen',
+'sp-contributions-username' => 'IP-adres of gebrukersnaam:',
+'sp-contributions-submit' => 'Zeuk',
# What links here
'whatlinkshere' => 'Verwiezingen naor disse pagina',
@@ -2193,6 +2342,7 @@ $1",
# Block/unblock
'blockip' => 'Gebruker blokkeren',
+'blockip-title' => 'Gebruker blokkeren',
'blockip-legend' => 'Een gebruker of IP-adres blokkeren',
'blockiptext' => "Gebruuk dit formelier um een IP-adres of gebrukersnaam te blokkeren. 't Is bedoeld um vandelisme te veurkoemen en mit in akkerderen mit 't [[{{MediaWiki:Policy-url}}|beleid]]. Geef hieronder een reden op (bieveurbeeld op welke pagina's de vandelisme epleeg is)",
'ipaddress' => 'IP-adres:',
@@ -2214,7 +2364,7 @@ $1",
'ipbenableautoblock' => 'De IP-adressen van disse gebruker vanzelf blokkeren',
'ipbsubmit' => 'adres blokkeren',
'ipbother' => 'Aandere tied',
-'ipboptions' => '2 uren:2 hours,1 dag:1 day,3 dagen:3 days,1 weke:1 week,2 weken:2 weeks,1 maond:1 month,3 maonden:3 months,6 maonden:6 months,1 jaor:1 year,onbepark:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uren:2 hours,1 dag:1 day,3 dagen:3 days,1 weke:1 week,2 weken:2 weeks,1 maond:1 month,3 maonden:3 months,6 maonden:6 months,1 jaor:1 year,onbepark:infinite',
'ipbotheroption' => 'aanders',
'ipbotherreason' => 'Aandere/extra reden:',
'ipbhidename' => 'Verbarg de gebrukersnaam in bewarkingen en liesten',
@@ -2243,9 +2393,11 @@ Op de [[Special:IPBlockList|IP-blokkeerlieste]] steet een lieste mit alle blokke
'ipblocklist-sh-tempblocks' => 'tiedelijke blokkeringen $1',
'ipblocklist-sh-addressblocks' => 'enkele IP-blokkeringen $1',
'ipblocklist-submit' => 'Zeuk',
+'ipblocklist-localblock' => 'Lokale blokkering',
+'ipblocklist-otherblocks' => 'Aandere {{PLURAL:$1|blokkering|blokkeringen}}',
'blocklistline' => 'Op $1 (vervuilt op $4) blokkeren $2: $3',
'infiniteblock' => 'onbepark',
-'expiringblock' => '$1',
+'expiringblock' => 'löp of op $1 um $2',
'anononlyblock' => 'allinnig anneniemen',
'noautoblockblock' => 'autoblok neet actief',
'createaccountblock' => 'anmaken van een gebrukersprefiel is eblokkeerd',
@@ -2259,7 +2411,10 @@ Op de [[Special:IPBlockList|IP-blokkeerlieste]] steet een lieste mit alle blokke
'contribslink' => 'biedragen',
'autoblocker' => 'Vanzelf eblokkeerd umdat \'t IP-adres overenekump mit \'t IP-adres van [[User:$1|$1]], dee eblokkeerd is mit as reden: "$2"',
'blocklogpage' => 'Blokkeerlogboek',
-'blocklog-fulllog' => "'t Complete blokkeerlogboek",
+'blocklog-showlog' => "Disse gebruker is al eerder eblokkeerd.
+'t Blokkeerlogboek steet hieronder as rifferentie:",
+'blocklog-showsuppresslog' => "Disse gebruker is al eerder eblokkeerd en wele bewarkingen van disse gebruker bin verbörgen.
+'t Logboek mit onderdrokken versies steet hieronder as rifferentie:",
'blocklogentry' => 'blokkeren "[[$1]]" veur $2 $3',
'reblock-logentry' => "hef de instellingen veur de blokkering van [[$1]] ewiezig. 't Löp noen of over $2 $3",
'blocklogtext' => "Hier zie-j een lieste van de leste blokkeringen en deblokkeringen. Autematische blokkeringen en deblokkeringen koemen neet in 't logboek te staon. Zie de [[Special:IPBlockList|IP-blokkeerlieste]] veur de lieste van adressen dee noen eblokkeerd bin.",
@@ -2279,10 +2434,12 @@ Op de [[Special:IPBlockList|IP-blokkeerlieste]] steet een lieste mit alle blokke
'ipb-needreblock' => '== Disse gebruker is al eblokkeerd ==
$1 is al eblokkeerd.
Wi-j de instellingen wiezigen?',
+'ipb-otherblocks-header' => 'Aandere {{PLURAL:$1|blokkering|blokkeringen}}',
'ipb_cant_unblock' => "Foutmelding: blokkade ID $1 neet evunnen, 't is meschien al edeblokkeerd.",
'ipb_blocked_as_range' => "Fout: 't IP-adres $1 is neet drek eblokkeerd en de blokkering kan neet op-eheven wönnen.
De blokkering is onderdeel van de reeks $2, waorvan de blokkering wel op-eheven kan wönnen.",
'ip_range_invalid' => 'Ongeldige IP-reeks',
+'ip_range_toolarge' => 'Groeps-IP-adressen dee groter bin as /$1, bin neet toe-estaon.',
'blockme' => 'Mien blokkeren',
'proxyblocker' => 'Proxyblokker',
'proxyblocker-disabled' => 'Disse functie is uut-eschakeld.',
@@ -2292,6 +2449,8 @@ De blokkering is onderdeel van de reeks $2, waorvan de blokkering wel op-eheven
'sorbs_create_account_reason' => 'Joew IP-adres is op-eneumen as open proxyserver in de zwarte lieste van DNS, dee-w veur {{SITENAME}} gebruken.
Je kunnen gien gebrukerspagina anmaken.',
'cant-block-while-blocked' => 'Je kunnen aandere gebrukers neet blokkeren a-j zelf oek eblokkeerd bin.',
+'cant-see-hidden-user' => 'De gebruker dee-j preberen te blokkeren is al eblokkeerd en verbörgen.
+Umda-j gien rech hemmen um gebrukers te verbargen, ku-j de blokkering van de gebruker neet bekieken of bewarken.',
# Developer tools
'lockdb' => 'Databanke blokkeren',
@@ -2332,6 +2491,7 @@ Zörg derveur da-j de gevolgen overzien veurda-j veerder gaon.",
* As der al een neet-lege overlegpagina besteet onder de aandere naam
* A-j 't onderstaonde vinkjen vorthaolen",
'movearticle' => 'Herneum',
+'moveuserpage-warning' => "'''Waorschuwing:''' Je staon op 't punt um een gebrukerspagina te herneumen. Allinnig disse pagina zal herneumd wönnen, '''neet''' de gebruker.",
'movenologin' => 'Neet an-emeld.',
'movenologintext' => 'Je mutten [[Special:UserLogin|an-emeld]] ween um de naam van een pagina te wiezigen.',
'movenotallowed' => "Je hemmen gien rechen um pagina's te herneumen.",
@@ -2342,7 +2502,7 @@ Zörg derveur da-j de gevolgen overzien veurda-j veerder gaon.",
'move-watch' => 'volg disse pagina',
'movepagebtn' => 'Herneum',
'pagemovedsub' => 'Naamwieziging succesvol',
-'movepage-moved' => '\'\'\'"$1" is ewiezig naor "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" is ewiezig naor "$2"\'\'\'',
'movepage-moved-redirect' => 'Der is een deurverwiezing an-emaak.',
'movepage-moved-noredirect' => 'Der is gien deurverwiezing an-emaak.',
'articleexists' => 'Onder disse naam besteet al een pagina. Kies een aandere naam.',
@@ -2383,6 +2543,13 @@ De overige pagina's wonnen neet autematisch herneumd.",
'imageinvalidfilename' => 'De nieje bestaansnaam is ongeldig',
'fix-double-redirects' => 'Alle deurverwiezingen dee naor de ouwe titel verwiezen, herneumen naor de nieje titel',
'move-leave-redirect' => 'Een deurverwiezing achterlaoten',
+'protectedpagemovewarning' => "'''Waorschuwing:''' disse pagina kan allinnig deur beheerders herneumd wönnen.",
+'semiprotectedpagemovewarning' => "'''Waorschuwing:''' disse pagina kan allinnig deur eregistreren gebrukers herneumd wönnen.
+De leste logboekregel steet hieronder:",
+'move-over-sharedrepo' => "== 't Bestaand besteet al ==
+[[:$1]] besteet al in de edelen mediadatabanke. A-j een bestaand naor disse titel herneumen, dan ku-j 't edelen bestaand neet gebruken.",
+'file-exists-sharedrepo' => 'Disse bestaansnaam besteet al in de edelen mediadatabanke.
+Kies een aandere bestaansnaam.',
# Export
'export' => "Pagina's uutvoeren",
@@ -2404,15 +2571,21 @@ A-j dat leste doon willen dan ku-j oek een verwiezing gebruken, bieveurbeeld [[{
'export-pagelinks' => "Pagina's waor naor verwezen wonnen opnemen tot:",
# Namespace 8 related
-'allmessages' => 'Alle systeemteksten',
-'allmessagesname' => 'Naam',
-'allmessagesdefault' => 'Standardtekse',
-'allmessagescurrent' => 'De leste versie',
-'allmessagestext' => 'Hieronder steet een lieste mit alle systeemteksen in de MediaWiki-naamruumte.
+'allmessages' => 'Alle systeemteksten',
+'allmessagesname' => 'Naam',
+'allmessagesdefault' => 'Standardtekse',
+'allmessagescurrent' => 'De leste versie',
+'allmessagestext' => 'Hieronder steet een lieste mit alle systeemteksen in de MediaWiki-naamruumte.
Kiek oek effen bie [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [http://translatewiki.net translatewiki.net] a-j biedragen willen an de algemene vertaling veur MediaWiki.',
-'allmessagesnotsupportedDB' => "Disse pagina kan neet gebruuk wonnen umdat '''\$wgUseDatabaseMessages''' uut-eschakeld is.",
-'allmessagesfilter' => 'Berichnaamfilter:',
-'allmessagesmodified' => 'Allinnig teksen dee ewiezig bin',
+'allmessagesnotsupportedDB' => "Disse pagina kan neet gebruuk wonnen umdat '''\$wgUseDatabaseMessages''' uut-eschakeld is.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filtreer op wiezigingen:',
+'allmessages-filter-unmodified' => 'neet ewiezig',
+'allmessages-filter-all' => 'alles',
+'allmessages-filter-modified' => 'ewiezig',
+'allmessages-prefix' => 'Filtreer op veurvoegsel:',
+'allmessages-language' => 'Taal:',
+'allmessages-filter-submit' => 'zeuk',
# Thumbnails
'thumbnail-more' => 'vergroten',
@@ -2422,6 +2595,9 @@ Kiek oek effen bie [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalis
'djvu_no_xml' => "Kon de XML-gegevens veur 't DjVu-bestaand neet oproepen",
'thumbnail_invalid_params' => "Ongeldige parameters veur 't ofbeeldingsoverzichte",
'thumbnail_dest_directory' => 'De bestemmingsmap kon neet an-emaak wönnen.',
+'thumbnail_image-type' => 'Dit bestaanstype wonnen neet ondersteund',
+'thumbnail_gd-library' => 'De instellingen veur de GD-biebeltheek bin neet compleet. De functie $1 ontbreek',
+'thumbnail_image-missing' => "'t Lik derop dat 't bestaand vort is: $1",
# Special:Import
'import' => "Pagina's invoeren",
@@ -2488,6 +2664,7 @@ De tiedelijke map is neet anwezig.",
'tooltip-ca-viewsource' => 'Disse bladziede is beveiligd teagn veraandern. Iej könt wal kiekn noar de bladziede',
'tooltip-ca-history' => 'Oaldere versies van disse bladziede',
'tooltip-ca-protect' => 'Beveilig disse bladziede teagn veraandern',
+'tooltip-ca-unprotect' => 'Disse pagina vriegeven',
'tooltip-ca-delete' => 'Smiet disse bladziede vort',
'tooltip-ca-undelete' => 'Haal n inhoald van disse bladziede oet n emmer',
'tooltip-ca-move' => 'Gef disse bladziede nen aandern titel',
@@ -2498,6 +2675,7 @@ De tiedelijke map is neet anwezig.",
'tooltip-search-fulltext' => "De pagina's vuur disse tekst zeukn",
'tooltip-p-logo' => 'Vuurziede',
'tooltip-n-mainpage' => 'Goa noar de vuurziede',
+'tooltip-n-mainpage-description' => "Gao naor 't veurblad",
'tooltip-n-portal' => 'Informoasie oaver t projekt: wel, wat, hoo en woarum',
'tooltip-n-currentevents' => 'Achtergroondinformoasie oaver dinge in t niejs',
'tooltip-n-recentchanges' => 'Lieste van pas verrichte veraanderingn',
@@ -2543,10 +2721,12 @@ Je kunnen in de bewarkingssamenvatting een reden opgeven.',
# Attribution
'anonymous' => 'Annenieme {{PLURAL:$1|gebruker|gebrukers}} van {{SITENAME}}',
'siteuser' => '{{SITENAME}}-gebruker $1',
-'lastmodifiedatby' => "Disse pagina is 't les ewiezig op $2, $1 deur $3.", # $1 date, $2 time, $3 user
+'anonuser' => 'Annenieme {{SITENAME}}-gebruker $1',
+'lastmodifiedatby' => "Disse pagina is 't les ewiezig op $2, $1 deur $3.",
'othercontribs' => 'Ebaseerd op wark van $1.',
'others' => 'aandere',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|gebruker|gebrukers}} $1',
+'anonusers' => 'Annenieme {{SITENAME}}-{{PLURAL:$2|gebruker|gebrukers}} $1',
'creditspage' => 'Pagina-auteurs',
'nocredits' => 'Der is gien auteursinfermasie beschikbaor veur disse pagina.',
@@ -2585,11 +2765,22 @@ Meestentieds kump dit deur een uutgaonde verwiezing dee op de zwarte lieste stee
'mw_math_modern' => 'Anbeveulen methode veur niejere webkiekers',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Wiskundige formule neet begriepelijk',
+'math_unknown_error' => 'Onbekende fout in formule',
+'math_unknown_function' => 'Onbekende functie in formule',
+'math_lexing_error' => 'Lexicografische fout in formule',
+'math_syntax_error' => 'Syntactische fout in formule',
+'math_image_error' => "'t Overzetten naor PNG is mislok.",
+'math_bad_tmpdir' => 'De map veur tiejelijke bestanen veur wiskundige formules besteet neet of is kan neet an-emaak wönnen.',
+'math_bad_output' => 'De map veur wiskundebestanen besteet neet of is neet an te maken.',
+'math_notexvc' => "Kan 't pregramma texvc neet vienen; configureer volgens de beschrieving in math/README.",
+
# Patrolling
'markaspatrolleddiff' => 'Markeer as econtreleerd',
'markaspatrolledtext' => 'Disse pagina is emarkeerd as econtreleerd',
'markedaspatrolled' => 'Emarkeerd as econtreleerd',
-'markedaspatrolledtext' => 'De ekeuzen versie is emarkeerd as econtreleerd.',
+'markedaspatrolledtext' => 'De ekeuzen versie van [[:$1]] is emarkeerd as econtreleerd.',
'rcpatroldisabled' => 'De controlemeugelijkheid op leste wiezigingen is uut-eschakeld.',
'rcpatroldisabledtext' => 'De meugelijkheid um de leste wiezigingen as econtreleerd te markeren is op hejen uut-eschakeld.',
'markedaspatrollederror' => 'De bewarking kon neet of-evink wönnen.',
@@ -2619,12 +2810,9 @@ $1",
'previousdiff' => '← veurige wieziging',
'nextdiff' => 'volgende wieziging →',
-# Visual comparison
-'visual-comparison' => 'Visuele vergelieking',
-
# Media information
'mediawarning' => "'''Waorschuwing:''' dit bestaand bevat meschien codering dee slich is veur 't systeem.",
-'imagemaxsize' => 'Maximumgrootte van ofbeeldingen op de beschrievingspagina:',
+'imagemaxsize' => 'Grootte van ofbeeldingen beteunen:',
'thumbsize' => "Grootte van 't ofbeeldingsoverzichte (thumbnail):",
'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
'file-info' => 'Bestaansgrootte: $1, MIME-type: $2',
@@ -2633,6 +2821,8 @@ $1",
'svg-long-desc' => '(SVG-bestaand, uutgangsgrootte $1 × $2 beeldpunten, bestaansgrootte: $3)',
'show-big-image' => 'Ofbeelding wat groter',
'show-big-image-thumb' => '<small>Grootte van disse weergave: $1 × $2 beeldpunten</small>',
+'file-info-gif-looped' => 'herhaolend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|beeld|beelden}}',
# Special:NewFiles
'newimages' => 'Nieje ofbeeldingen',
@@ -2665,7 +2855,7 @@ Alle volgende verwiezingen dee op dezelfde regel staon, wonnen behaandeld as uut
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Wiejte',
@@ -2792,14 +2982,14 @@ Alle volgende verwiezingen dee op dezelfde regel staon, wonnen behaandeld as uut
'exif-unknowndate' => 'Onbekende daotum',
-'exif-orientation-1' => 'Normaal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'horizontaal espegeld', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° edreid', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'verticaal edreid', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'espegeld um as linksboven-rechsonder', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° rechsummedreid', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° linksummedreid', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° linksummedreid', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaal',
+'exif-orientation-2' => 'horizontaal espegeld',
+'exif-orientation-3' => '180° edreid',
+'exif-orientation-4' => 'verticaal edreid',
+'exif-orientation-5' => 'espegeld um as linksboven-rechsonder',
+'exif-orientation-6' => '90° rechsummedreid',
+'exif-orientation-7' => '90° linksummedreid',
+'exif-orientation-8' => '90° linksummedreid',
'exif-planarconfiguration-1' => 'Grof gegevensfermaot',
'exif-planarconfiguration-2' => 'planar gegevensfermaot',
@@ -2921,7 +3111,7 @@ Alle volgende verwiezingen dee op dezelfde regel staon, wonnen behaandeld as uut
'exif-gpsmeasuremode-2' => '2-dimensionale meting',
'exif-gpsmeasuremode-3' => '3-dimensionale meting',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilemeter per uur',
'exif-gpsspeed-m' => 'Miel per ure',
'exif-gpsspeed-n' => 'Knopen',
@@ -2940,6 +3130,7 @@ Alle volgende verwiezingen dee op dezelfde regel staon, wonnen behaandeld as uut
'watchlistall2' => 'alles',
'namespacesall' => 'alles',
'monthsall' => 'alles',
+'limitall' => 'alles',
# E-mail address confirmation
'confirmemail' => 'Bevestig netposadres',
@@ -3062,7 +3253,7 @@ Je kunnen oek [[Special:Watchlist/edit|'t standardbewarkingsscharm gebruken]].",
'duplicate-defaultsort' => 'Waorschuwing: De standardsortering "$2" krig veurrang veur de sortering "$1".',
# Special:Version
-'version' => 'Versie', # Not used as normal message but as header for the special page itself
+'version' => 'Versie',
'version-extensions' => 'Uutbreidingen dee eïnstelleerd bin',
'version-specialpages' => "Speciale pagina's",
'version-parserhooks' => 'Parserhooks',
@@ -3076,7 +3267,7 @@ Je kunnen oek [[Special:Watchlist/edit|'t standardbewarkingsscharm gebruken]].",
'version-skin-extension-functions' => 'Vormgevingsuutbreidingsfuncties',
'version-hook-name' => 'Hooknaam',
'version-hook-subscribedby' => 'In-eschreven deur',
-'version-version' => 'Versie',
+'version-version' => '(Versie $1)',
'version-license' => 'Licentie',
'version-software' => 'Pregrammetuur dee eïnstalleerd is',
'version-software-product' => 'Preduk',
@@ -3156,4 +3347,15 @@ Voer de bestaansnaam in zonder \'t veurvoegsel "{{ns:file}}:".',
'dberr-outofdate' => "Let op: indexen de zee hemmen van onze pagina's bin meschien neet actueel.",
'dberr-cachederror' => "Disse pagina is een kopie uut 't tussengeheugen en is meschien neet actueel.",
+# HTML forms
+'htmlform-invalid-input' => 'Der bin preblemen mit een paor in-egeven weerden',
+'htmlform-select-badoption' => 'De in-egeven weerde is ongeldig.',
+'htmlform-int-invalid' => 'De in-egeven weerde is gien geheel getal.',
+'htmlform-float-invalid' => 'De weerde dee-j op-egeven hemmen is gien getal.',
+'htmlform-int-toolow' => 'De in-egeven weerde lig onder de minimumweerde van $1',
+'htmlform-int-toohigh' => 'De in-egeven weerde lig boven de maximumweerde van $1',
+'htmlform-submit' => 'Opslaon',
+'htmlform-reset' => 'Wiezigingen ongedaonmaken',
+'htmlform-selectorother-other' => 'Aanders',
+
);
diff --git a/languages/messages/MessagesNe.php b/languages/messages/MessagesNe.php
index 60a0b912..fac19801 100644
--- a/languages/messages/MessagesNe.php
+++ b/languages/messages/MessagesNe.php
@@ -55,6 +55,7 @@ $messages = array(
'tog-enotifminoredits' => 'पृष्ठहरुको सामान्य सम्पादनको लागि पनि मलाई ई-मेल गर्ने',
'tog-enotifrevealaddr' => 'जानकारी इ-मेलहरुमा मेरो इ-मेल खुलाउने',
'tog-shownumberswatching' => 'निगरानी गरिरहेका प्रयोगकर्ताहरुको संख्या देखाउने',
+'tog-oldsig' => 'हालको दस्तखतको पूर्वारूप :',
'tog-fancysig' => 'मेरो दस्तखतलाई विकि पाठको रुपमा लिने(स्वत सम्वन्ध बिना)',
'tog-externaleditor' => 'पूर्वनिर्धारित रुपमा बाह्य सम्पादक प्रयोग गर्नुहोस्(विज्ञहरुको लागि मात्र,तपाईको कम्प्युटरमा विशेष अनुकुलता आवश्यक हुन्छ )',
'tog-externaldiff' => 'पूर्वनिर्धारित रुपमा बाह्य diff प्रयोग गर्नुहोस (विज्ञ प्रयोगकर्ताहरुको लागि मात्र, तपाईंको कम्प्युटरमा विशेष अनुकुलता आवश्यक हुन्छ)',
@@ -78,6 +79,13 @@ $messages = array(
'underline-never' => 'कहिल्यै',
'underline-default' => 'ब्राउजर पूर्वस्थिती',
+# Font style option in Special:Preferences
+'editfont-style' => 'फन्ट प्रकार क्षेत्र सम्पादन गर्नुहोस् :',
+'editfont-default' => 'ब्राउजर पूर्वस्थिती',
+'editfont-monospace' => 'मोनोस्पेस्ड फन्ट',
+'editfont-sansserif' => 'सान्स-सेरिफ फन्ट',
+'editfont-serif' => 'सेरिफ फन्ट',
+
# Dates
'sunday' => 'आईतबार',
'monday' => 'सोमबार',
@@ -137,7 +145,7 @@ $messages = array(
'category-media-header' => '"$1" श्रेणीमा रहेका मिडियाहरू',
'category-empty' => "''यो श्रेणीमा हाल कुनै पृष्ठ या मिडियाहरु रहेका छैनन् ।''",
'hidden-categories' => '{{PLURAL:$1|लुकाइएको श्रेणी|लुकाइएका श्रेणीहरु}}',
-'hidden-category-category' => 'लुकाइएका श्रेणीहरु', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'लुकाइएका श्रेणीहरु',
'category-subcat-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न उपश्रेणीहरु मात्र छन्।|यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}}, $2 कुल मध्ये श्रेणीहरु छन् ।}}',
'category-subcat-count-limited' => 'यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}} छ।',
'category-article-count' => '{{PLURAL:$2|यो श्रेणीमा एक मात्र पृष्ठरहेको छ।|यो श्रेणीमा {{PLURAL:$1|पृष्ठ|$1 पृष्ठहरु}} , कुल $2 मध्ये रहेका छन् । }}',
@@ -154,10 +162,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'बारेमा',
-'article' => 'मुख्य-लेख पृष्ठ',
-'newwindow' => '(नयाँ विन्डोमा खुल्छ)',
-'cancel' => 'रद्द',
+'about' => 'बारेमा',
+'article' => 'मुख्य-लेख पृष्ठ',
+'newwindow' => '(नयाँ विन्डोमा खुल्छ)',
+'cancel' => 'रद्द',
+'moredotdotdot' => 'थप...',
+'mypage' => 'मेरो पृष्ठ',
+'mytalk' => 'मेरो कुरा',
+'anontalk' => 'यस् IP को वारेमा वार्तालाप गर्नुहोस्',
+'navigation' => 'अन्वेषण',
+'and' => '&#32;र',
+
+# Cologne Blue skin
'qbfind' => 'पत्ता लगाउनु',
'qbbrowse' => 'खोज',
'qbedit' => 'परिवर्तन्',
@@ -165,15 +181,35 @@ $messages = array(
'qbpageinfo' => 'सन्दर्भ',
'qbmyoptions' => 'मेरो पेज',
'qbspecialpages' => 'विशेष पृष्ठहरु',
-'moredotdotdot' => 'थप...',
-'mypage' => 'मेरो पृष्ठ',
-'mytalk' => 'मेरो कुरा',
-'anontalk' => 'यस् IP को वारेमा वार्तालाप गर्नुहोस्',
-'navigation' => 'अन्वेषण',
-'and' => '&#32;र',
-
-# Metadata in edit box
-'metadata_help' => 'मेटाडेटा:',
+'faq' => 'धैरै सोधिएका प्रश्नहरु',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'पाठ थप्नुहोस',
+'vector-action-delete' => 'हटाउने',
+'vector-action-move' => 'सार्ने',
+'vector-action-protect' => 'सुरक्षितगर्ने',
+'vector-action-undelete' => 'हटाएको रद्द गर्ने',
+'vector-action-unprotect' => 'सुरक्षित गरिएको रद्द गर्ने',
+'vector-namespace-category' => 'प्रकार',
+'vector-namespace-help' => 'सहायता पृष्ठ',
+'vector-namespace-image' => 'फाइल',
+'vector-namespace-main' => 'पृष्ठ',
+'vector-namespace-media' => 'मिडिया पृष्ठ',
+'vector-namespace-mediawiki' => 'सन्देश',
+'vector-namespace-project' => 'प्रोजेक्ट पृष्ठ',
+'vector-namespace-special' => 'विशेष पृष्ठ',
+'vector-namespace-talk' => 'छलफल',
+'vector-namespace-template' => 'टेम्पलेट',
+'vector-namespace-user' => 'प्रयोगकर्ता पृष्ठ',
+'vector-view-create' => 'शृजना गर्ने',
+'vector-view-edit' => 'सम्पादन',
+'vector-view-history' => 'इतिहास हेर्ने',
+'vector-view-view' => 'पढ्ने',
+'vector-view-viewsource' => 'स्रोत हेर्ने',
+'actions' => 'कृयाकलापहरु',
+'namespaces' => 'नेमस्पेस',
+'variants' => 'बहुरुपहरु',
'errorpagetitle' => 'त्रुटि',
'returnto' => '$1 मा फर्कनुहोस् ।',
@@ -223,18 +259,22 @@ $messages = array(
'otherlanguages' => 'अरु भाषामा',
'redirectedfrom' => '($1 बाट पठाईएको)',
'redirectpagesub' => 'रिडाइरेक्ट पृष्ठ',
-'lastmodifiedat' => 'यो पृष्ठलाई अन्तिमपटक $2, $1 मा परिवर्तन गरिएको थियो।', # $1 date, $2 time
+'lastmodifiedat' => 'यो पृष्ठलाई अन्तिमपटक $2, $1 मा परिवर्तन गरिएको थियो।',
'viewcount' => 'यो पृष्ठ हेरिएको थियो {{PLURAL:$1|एकपटक|$1 पटक}}',
'protectedpage' => 'सुरक्षित गरिएका पृष्ठहरू',
'jumpto' => 'यसमा जानुहोस्:',
'jumptonavigation' => 'अन्वेषण',
'jumptosearch' => 'खोज',
+'view-pool-error' => 'माफ गर्नुहोस् , यस समयमा सर्भरहरुमा कार्यभार उच्च रहेको छ।
+अति धेरै प्रयोगकर्ताहरु यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।
+कृपया यो पृष्ठ पुन: हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} बारेमा',
'aboutpage' => 'Project:बारेमा',
'copyright' => 'लेखका सामाग्री $1 अनुसार उपलब्ध छ।',
-'copyrightpagename' => 'प्रतिलिपी अधिकार {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:प्रतिलिपी अधिकारहरु',
'currentevents' => 'हालैका घटनाहरु',
'currentevents-url' => 'Project:हालैका घटनाहरु',
@@ -242,8 +282,6 @@ $messages = array(
'disclaimerpage' => 'Project:साधारण अस्विकारोक्ति',
'edithelp' => 'सम्पादन सहायता',
'edithelppage' => 'Help:सम्पादन',
-'faq' => 'धैरै सोधिएका प्रश्नहरु',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:विषयवस्तुहरू',
'mainpage' => 'मुख्य पृष्ठ',
'mainpage-description' => 'मुख्य पृष्ठ',
@@ -331,6 +369,7 @@ $messages = array(
'missingarticle-diff' => '(डिफ diff: $1, $2)',
'internalerror' => 'आन्तरिक त्रुटि',
'internalerror_info' => 'आन्तरिक त्रुटि: $1',
+'fileappenderror' => ' "$2".लाई"$1" मा जोडन सकिएन ।',
'filecopyerror' => 'फाइल "$1" लाई "$2" मा प्रतिलिपी गर्न सकिएन ।',
'filerenameerror' => 'फाइल "$1" को नाम "$2" मा परिवर्तन गर्न सकिएन ।',
'filedeleteerror' => 'फाइल "$1" मेट्न सकिएन ।',
@@ -340,6 +379,8 @@ $messages = array(
'unexpected' => 'अप्रत्यासित मान :"$1"="$2" ।',
'formerror' => 'त्रुटी : फर्म बुझाउन सकिएन',
'badarticleerror' => 'यो कार्य यस पृष्ठमा गर्न मिल्दैन।',
+'cannotdelete' => 'खुलाइएको फाइल वा पृष्ठ मेट्न सकिएन ।
+यो पहिले नै अरु कसै द्वारा मेटाइएको हुन सक्छ ।',
'badtitle' => 'गलत शिर्षक',
'badtitletext' => 'अनुरोध गरेको पृष्ठ शिर्षक अमान्य, खाली वा गलत रुपमा अन्तर भाषा वा अन्तर विकी सम्बन्ध गरिएको थियो। यसमा शिर्षकमा प्रयोग गर्न नमिल्ने एक वा बढी अक्षरहरू रहेका हुनसक्छन ।',
'perfcached' => 'तलको डाटाहरु क्याचमा रहेका कुराहरु हुन्। अपटुडेट नहुनपनि सक्छन्।',
@@ -372,7 +413,6 @@ $messages = array(
# Login and logout pages
'welcomecreation' => '== स्वागतम् , $1! ==
तपाँईको खाता खोलिएको छ। [[Special:Preferences|{{SITENAME}} preferences]]मा आफ्ना अभिरुचिहरू परिवर्तन गर्न नबिर्सिनुहोला।',
-'loginpagetitle' => 'प्रयोगकर्ता प्रवेश',
'yourname' => 'प्रयोगकर्ता-नाम',
'yourpassword' => 'पासवर्ड',
'yourpasswordagain' => 'पासवर्ड फेरी टाईप गर्नुहोस्',
@@ -394,31 +434,7 @@ $messages = array(
'badretype' => 'तपाईंले दिनुभएको पासवर्ड मिल्दैन।',
'userexists' => 'तपाईले प्रविष्ट गर्नुभएको प्रयोगकर्ताको नाम पहिले देखिनै प्रयोगमा छ ।
कृपया फरक नाम छान्नुहोला ।',
-'youremail' => 'ईमेल',
-'username' => 'प्रयोगकर्ता :',
-'uid' => 'प्रोगकर्ता आइडी:',
-'prefs-memberingroups' => 'निम्न {{PLURAL:$1|समूह | समूहहरू}}को सदस्य :',
-'yourrealname' => 'वास्तविक नाम:',
-'yourlanguage' => 'भाषा:',
-'yourvariant' => 'परिवर्तित प्रकार',
-'yournick' => 'उपनाम (निकनेम):',
-'badsig' => 'अमान्य कच्चा दस्तखत।
-HTML ट्यागहरु जाँच्नुहोस् ।',
-'badsiglength' => 'तपाईको दस्तखत धेरै लामो छ।
-यो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुदैन ।',
-'yourgender' => 'लिङ्ग:',
-'gender-unknown' => 'नखुलेको',
-'gender-male' => 'पुरूष',
-'gender-female' => 'महिला',
-'prefs-help-gender' => 'ऐच्छिक: सफ्टवेयरले लिङगानुसार सम्बोधन गर्नको लागि प्रयोग गरिन्छ ।
-यो जानकारी सार्वजनिक हुनेछ ।',
-'email' => 'ईमेल',
-'prefs-help-realname' => 'वास्तविक नाम ऐच्छिक हो ।
-तपाईले यो खुलाउनु भएको खण्डमा तपाईँको कामको श्रेय दिनको लागि प्रयोग गरिने छ।',
'loginerror' => 'प्रवेश त्रुटी',
-'prefs-help-email' => 'इमेल ठेगाना ऐच्छिक हो , तर तपाईँले आफ्नो प्रवेशशव्द भुल्नु भएमा तपाईँ नयाँ प्रवेशशव्द इमेल गराइ पाउन सक्नुहुन्छ।
-तपाईले आफ्नो वास्ताविक परिचय नखुलाइकन वार्तालाप पृष्ठ प्रयोग गरेर अरुले तपाईँसँग सम्पर्क गर्न पाउने गर्न सक्नुहुन्छ ।',
-'prefs-help-email-required' => 'इमेल ठेगामा चाहिन्छ ।',
'nocookiesnew' => 'तपाईँको खाता बनाइयो, तर तपाईँ प्रवेश गर्नुभएको छैन ।
{{SITENAME}} ले प्रयोगकर्ता प्रवेश गराउन कुकीहरू प्रयोग गर्छ ।
तपाईँको कुकीहरू निस्क्रिय गरिएको छ।
@@ -435,6 +451,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'nouserspecified' => 'तपाँईले प्रयोगकर्तानाम (युजरनेम) जनाउनुपर्छ।',
'wrongpassword' => 'पासवर्ड गलत हालियो । कृपया फेरी प्रयास गर्नुहोला ।',
'wrongpasswordempty' => 'तपाइले हालेको पासवर्ड खालि थियो । कृपया फेरी प्रयास गर्नुहोला ।',
+'passwordtooshort' => 'तपाईको प्रवेशशव्द धेरै छोटो थियो ।
+यो कम्तिमा{{PLURAL:$1|१ अक्षर |$1 अक्षरहरु }}को हुनुपर्छ ।',
+'password-name-match' => 'तपाईँको प्रवेशशव्द प्रयोगकर्ता नाम भन्दा फरक हुनुपर्छ ।',
'mailmypassword' => 'नयाँ प्रवेशशव्द इमेल गर्ने',
'passwordremindertitle' => 'नयाँ अस्थाइ प्रवेशशव्द {{SITENAME}} को लागि ।',
'passwordremindertext' => 'कसैले (सायद तपाईँ, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नयाँ प्रवेशशव्द अनुरोध गर्नुभएको छ । प्रयोगकर्ता "$2" को लागि नयाँ अस्थाई प्रवेशशव्द "$3"तयार पारिएको छ। यदि यो तपाईको इच्छामा भएको भए अहिले तपाईले तपाईँले प्रवेशगरी नयाँ प्रवेशशव्द छान्नु पर्ने हुन्छ।
@@ -533,7 +552,6 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'blockededitsource' => "'''$1'''को '''तपाईँको सम्पादन'''को पाठ तल देखाइएको छ:",
'whitelistedittitle' => 'सम्पादन गर्नको लागि प्रवेश (लग इन) आवश्यक छ',
'whitelistedittext' => 'पाना सम्पादन गर्न तपाँईले $1 गर्नु पर्दछ।',
-'confirmedittitle' => 'सम्पादन गर्न इमेल पुष्टि गर्नु आवस्यक छ',
'nosuchsectiontitle' => 'त्यस्तो खण्ड छैन',
'loginreqtitle' => 'प्रवेशगर्नु जरुरी छ।',
'loginreqlink' => 'प्रवेश (लग ईन)',
@@ -548,6 +566,8 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
यहाँ त्यत्तिकै आइपुग्नु भएको हो भने , ब्राउजरको '''back''' बटन थिच्नुहोस ।",
'userpage-userdoesnotexist' => 'प्रयोगकर्ताको खाता "$1" दर्ता गरिएको छैन ।
तपाईँले पृष्ठ निर्माण/सम्पादन गर्न चाहनु भएको भए जाँच गर्नुहोस् ।',
+'usercssyoucanpreview' => "'''काइदा:''' 'पूर्वावलोकन देखाउनुहोस् ' थिची तपाईँको नयाँ CSS सङ्ग्रहगर्नु अगि जाँच्नुहोस् ।",
+'userjsyoucanpreview' => "'''काइदा:''' 'पूर्वावलोकन देखाउनुहोस् ' थिची तपाईँको नयाँ JS सङ्ग्रहगर्नु अगि जाँच्नुहोस् ।",
'usercsspreview' => "'''याद राख्नुहोस तपाईँले आफ्नो प्रयोगकर्ता CSSको पूर्वावलोकन मात्र हेरिरहनु भएको छ। '''
'''अहिले सम्म संग्रह गरिएको छैन!'''",
'userjspreview' => "'''याद राख्नुहोस तपाईँले आफ्नो प्रयोगकर्ता JavaScript को पूर्वावलोकन मात्र हेरिरहनु भएको छ। '''
@@ -564,6 +584,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'yourdiff' => 'भिन्नताहरु',
'semiprotectedpagewarning' => "'''सुचना:''' यो पृष्ठमा ताल्चा मारिएको छ त्यसैले दर्ता भएका प्रयोगकर्ताहरुले मात्र यसलाई सम्पादन गर्ने सक्छन् ।",
'titleprotectedwarning' => "'''चेतावनी: यो पृष्ठमा ताल्चा मारिएको छ र यसलाई शृजना गर्न [[Special:ListGroupRights|विशेष अधिकारहरु]] चाहिन्छ ।'''",
+'templatesused' => 'यस पृष्ठमा प्रयोग भएको टेम्प्लेट(नमूना):',
+'templatesusedpreview' => 'यो पूर्वावलोकनमा प्रयोग भएका टेम्प्लेट(नमूना) हरु:',
+'templatesusedsection' => 'यो खण्डमा प्रयोग गरिएको टेम्प्लेटहरु :',
'template-protected' => '(सुरक्षित)',
'template-semiprotected' => '(अर्ध-सुरक्षित)',
'hiddencategories' => 'यो पृष्ठ निम्न {{PLURAL:$1|1 लुकाइएको श्रेणी|$1 लुकाइएका श्रेणीहरु}}को सदस्य हो :',
@@ -574,6 +597,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'permissionserrors' => 'अनुमति त्रुटीहरु',
'permissionserrorstext' => 'तपाईँलाई यसको लागि अनुमति छैन ,निम्न {{PLURAL:$1|कारण|कारणहरु}}ले गर्दा:',
'permissionserrorstext-withaction' => '$2 को लागि तपाईँलाई अनुमति छैन , निम्न {{PLURAL:$1|कारण|कारणहरुले}} गर्दा :',
+'moveddeleted-notice' => 'पृष्ठ मेटिएको छ।
+मेटिएका तथा सारिएका पृष्ठहरुको सूची तल सन्दर्भको लागि दिइएको छ।',
+'log-fulllog' => 'पूरा लग हेर्नुहोस्',
'edit-hook-aborted' => 'हुकले सम्पादन बन्द गरिदियो ।
यसले कुनै कारण दिएन ।',
'edit-gone-missing' => 'पृष्ठ अध्यावधि गर्न सकिएन
@@ -607,6 +633,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'viewpagelogs' => 'यस पृष्ठका लगहरू हेर्नुहोस्',
'nohistory' => 'यस पृष्ठको लागी कुनै सम्पादन इतिहास छैन।',
'currentrev' => 'हालको संस्करण',
+'currentrev-asof' => '$1को रुपमा हालको पुनरावलोकनहरु',
+'revisionasof' => '$1 जस्तै गरी पुनरावलोकन',
+'revision-info' => ' $2द्वारा $1को रुपमा पुनरावलोकन गर्ने',
'previousrevision' => '← पुरानो संशोधन',
'nextrevision' => 'नयाँ संशोधन →',
'currentrevisionlink' => 'हालको पुनरावलोकन',
@@ -622,48 +651,60 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'historyempty' => '(खाली)',
# Revision feed
-'history-feed-title' => 'पुनरावलोकन इतिहास',
-'history-feed-description' => 'विकीमा यो पृष्ठको पुनरावलोकन इतिहास',
+'history-feed-title' => 'पुनरावलोकन इतिहास',
+'history-feed-description' => 'विकीमा यो पृष्ठको पुनरावलोकन इतिहास',
+'history-feed-item-nocomment' => '$1 $2मा',
# Revision deletion
-'rev-deleted-comment' => '(टिप्पणी हटाइयो)',
-'rev-deleted-user' => '(प्रयोगकर्ता नाम हटाइयो)',
-'rev-deleted-event' => '(लग कार्य हटाइयो)',
-'rev-delundel' => 'देखाउने/छुपाउने',
-'revisiondelete' => 'मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरु',
-'revdelete-nooldid-title' => 'अमान्य पुनरावलोकन लक्ष',
-'revdelete-nologtype-title' => 'कुनै पनि लग प्रकार खुलाइएन',
-'revdelete-nologtype-text' => 'यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन ।',
-'revdelete-nologid-title' => 'अमान्य लग प्रविष्टि',
-'revdelete-nologid-text' => 'या यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन या खुलाइएको लग अस्तित्वमा छैन ।',
-'revdelete-selected' => "'''[[:$1]]को {{PLURAL:$2|छानिएको संस्करण|छानिएका संस्करणहरु}} :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|छानिएको लग घटना|छानिएका लग घटनाहरु}}:'''",
-'revdelete-legend' => 'दृष्टि बन्देज मिलाउने',
-'revdelete-hide-text' => 'पुनरावलोकन पाठ लुकाउने',
-'revdelete-hide-name' => 'कार्य र गन्तब्य लुकाउने',
-'revdelete-hide-comment' => 'सम्पादन टिप्पणी लुकाउने',
-'revdelete-hide-user' => 'सम्पादकको प्रयोगकर्ता नाम/IP लुकाउने',
-'revdelete-hide-restricted' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
-'revdelete-suppress' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
-'revdelete-hide-image' => 'फाइल कमेन्ट लुकाउने',
-'revdelete-unsuppress' => 'पुनर्सथापित पुनरावलोकनबाट बन्देज हटाउने',
-'revdelete-log' => 'कारण :',
-'revdelete-logentry' => '[[$1]] को पुनरावलोकन दृष्टि परिवर्तन गरियो',
-'logdelete-logentry' => '[[$1]] को पुनरावलोकन घटना दृष्टि परिवर्तन गरियो',
-'revdelete-success' => "'''पुनरावलोकन दृष्टि सफलतापूर्वक मिलाइयो ।'''",
-'logdelete-success' => "'''लग दृष्टि सफलतापूर्वक मिलाइयो ।'''",
-'revdel-restore' => 'दृष्टि परिवर्तन गर्ने',
-'pagehist' => 'पृष्ठको इतिहास',
-'deletedhist' => 'मेटाएका इतिहास',
-'revdelete-content' => 'सामग्री',
-'revdelete-summary' => 'सम्पादन सारांश',
-'revdelete-uname' => 'प्रयोगकर्ताको नाम',
-'revdelete-restricted' => 'प्रशासकहरुलाई सिमितता दिइयो',
-'revdelete-unrestricted' => 'प्रवन्धककोलागि निषेधहरु हटाइयो ।',
-'revdelete-hid' => ' $1 लुकाउने',
-'revdelete-unhid' => ' $1 नलुकाउने',
-'revdelete-log-message' => '$1 $2 को लागि{{PLURAL:$2|पुनरावलोकन|पुनरावलोकनहरु}}',
-'logdelete-log-message' => '$1 $2को लागि {{PLURAL:$2|घटना|घटनाहरु}}',
+'rev-deleted-comment' => '(टिप्पणी हटाइयो)',
+'rev-deleted-user' => '(प्रयोगकर्ता नाम हटाइयो)',
+'rev-deleted-event' => '(लग कार्य हटाइयो)',
+'rev-delundel' => 'देखाउने/छुपाउने',
+'revisiondelete' => 'मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरु',
+'revdelete-nooldid-title' => 'अमान्य पुनरावलोकन लक्ष',
+'revdelete-nologtype-title' => 'कुनै पनि लग प्रकार खुलाइएन',
+'revdelete-nologtype-text' => 'यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन ।',
+'revdelete-nologid-title' => 'अमान्य लग प्रविष्टि',
+'revdelete-nologid-text' => 'या यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन या खुलाइएको लग अस्तित्वमा छैन ।',
+'revdelete-no-file' => 'खुलाइएको पृष्ठ अस्तित्वमा छैन',
+'revdelete-show-file-confirm' => 'तपाईँ $2 बाट $3 मा मेटिएको फाइल "<nowiki>$1</nowiki>" को पुनरावलोकन हेर्न चाहनुहुन्छ भन्ने कुरामा निश्चित हुनुहुन्छ ?',
+'revdelete-show-file-submit' => 'हो',
+'revdelete-selected' => "'''[[:$1]]को {{PLURAL:$2|छानिएको संस्करण|छानिएका संस्करणहरु}} :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|छानिएको लग घटना|छानिएका लग घटनाहरु}}:'''",
+'revdelete-legend' => 'दृष्टि बन्देज मिलाउने',
+'revdelete-hide-text' => 'पुनरावलोकन पाठ लुकाउने',
+'revdelete-hide-image' => 'फाइल कमेन्ट लुकाउने',
+'revdelete-hide-name' => 'कार्य र गन्तब्य लुकाउने',
+'revdelete-hide-comment' => 'सम्पादन टिप्पणी लुकाउने',
+'revdelete-hide-user' => 'सम्पादकको प्रयोगकर्ता नाम/IP लुकाउने',
+'revdelete-hide-restricted' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
+'revdelete-suppress' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
+'revdelete-unsuppress' => 'पुनर्सथापित पुनरावलोकनबाट बन्देज हटाउने',
+'revdelete-log' => 'कारण :',
+'revdelete-submit' => 'छानिएको पुनरावलोकन प्रयोग गर्ने',
+'revdelete-logentry' => '[[$1]] को पुनरावलोकन दृष्टि परिवर्तन गरियो',
+'logdelete-logentry' => '[[$1]] को पुनरावलोकन घटना दृष्टि परिवर्तन गरियो',
+'revdelete-success' => "'''पुनरावलोकन दृष्टि सफलतापूर्वक मिलाइयो ।'''",
+'revdelete-failure' => "'''पुनरावलोक दृष्टि मिलाउन सकिएन:'''
+$1",
+'logdelete-success' => "'''लग दृष्टि सफलतापूर्वक मिलाइयो ।'''",
+'logdelete-failure' => "'''लग दृष्टि मिलाउन सकिएन :'''
+$1",
+'revdel-restore' => 'दृष्टि परिवर्तन गर्ने',
+'pagehist' => 'पृष्ठको इतिहास',
+'deletedhist' => 'मेटाएका इतिहास',
+'revdelete-content' => 'सामग्री',
+'revdelete-summary' => 'सम्पादन सारांश',
+'revdelete-uname' => 'प्रयोगकर्ताको नाम',
+'revdelete-restricted' => 'प्रशासकहरुलाई सिमितता दिइयो',
+'revdelete-unrestricted' => 'प्रवन्धककोलागि निषेधहरु हटाइयो ।',
+'revdelete-hid' => ' $1 लुकाउने',
+'revdelete-unhid' => ' $1 नलुकाउने',
+'revdelete-log-message' => '$1 $2 को लागि{{PLURAL:$2|पुनरावलोकन|पुनरावलोकनहरु}}',
+'logdelete-log-message' => '$1 $2को लागि {{PLURAL:$2|घटना|घटनाहरु}}',
+'revdelete-hide-current' => '$2, $1: मिति गरिएका वस्तुहरु लुकाउन मिलेन यो नै सबैभन्दा नयाँ संस्करण हो ।
+यसलाई लुकाउन मिल्दैन ।',
+'revdelete-edit-reasonlist' => 'मेट्नको लागि अनुक्रमणिका',
# Suppression log
'suppressionlog' => 'कमगरेको लग',
@@ -692,67 +733,13 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'revertmerge' => 'नजोड्ने',
# Diffs
-'history-title' => '"$1" को पुनरावलोकन इतिहास',
-'difference' => '(पुनरावलोकनहरुको बीचमा भिन्नता)',
-'lineno' => 'पंक्ति $1:',
-'compareselectedversions' => 'छानिएका संस्करणहरू दाँज्नुहोस्',
-'visualcomparison' => 'दृश्य तुलना',
-'wikicodecomparison' => 'विकीपाठ तुलना',
-'editundo' => 'रद्द गर्ने',
-'diff-multi' => '({{PLURAL:$1|एक मध्य पुनरावलोकन|$1 मध्य पुनरावलोकनहरू}} नदेखाइएको)',
-'diff-movedto' => '$1 मा सारिएको',
-'diff-styleadded' => '$1 ढाँचा थपिएको',
-'diff-added' => '$1 थपिएको',
-'diff-changedto' => '$1 मा परिवर्तन गरिएको',
-'diff-movedoutof' => '$1 बाट बाहिर सारिएको',
-'diff-styleremoved' => '$1 ढाँचा हटाइएको',
-'diff-removed' => '$1 हटाइएको',
-'diff-changedfrom' => '$1 बाट परिवर्तन गरिएको',
-'diff-src' => 'स्रोत',
-'diff-withdestination' => 'गन्तब्य $1 मा',
-'diff-with' => '&#32;साथमा $1 $2',
-'diff-with-final' => '&#32;र $1 $2',
-'diff-width' => 'चौडाई',
-'diff-height' => 'उचाई',
-'diff-p' => "एक '''अनुच्छेद'''",
-'diff-blockquote' => "एक '''कथन'''",
-'diff-h1' => "एक '''शिर्ष पंक्ति स्तर १'''",
-'diff-h2' => "एक '''शिर्ष पंक्ति स्तर २'''",
-'diff-h3' => "एक '''शिर्ष पंक्ति स्तर ३'''",
-'diff-h4' => "एक ''' शिर्ष पंक्ति स्तर ४'''",
-'diff-h5' => "एक '''शिर्ष पंक्ति स्तर ५'''",
-'diff-pre' => "एक '''पूर्व ढाँचाबद्ध ब्लक'''",
-'diff-div' => "एक '''बिभाजन'''",
-'diff-ul' => "एक '''क्रम रहित सूची'''",
-'diff-ol' => "एक '''क्रमबद्ध सूची'''",
-'diff-li' => "एक '''सूची वस्तु'''",
-'diff-table' => "एक '''टेबल'''",
-'diff-tbody' => " '''टेबुलको सामग्री'''",
-'diff-tr' => "एक '''हरफ'''",
-'diff-td' => "एक '''सेल'''",
-'diff-th' => "एक '''हेडर'''",
-'diff-br' => "एक'''ब्रेक'''",
-'diff-hr' => "एक '''क्षितिजीय मापक'''",
-'diff-code' => "एक '''कम्प्युटर कोड ब्लक'''",
-'diff-dl' => "एक '''व्याख्या सूची'''",
-'diff-dt' => "एक'''व्याख्या पद'''",
-'diff-dd' => "एक '''व्याख्या'''",
-'diff-input' => "एक '''प्रविष्ठी'''",
-'diff-form' => "एक '''फारम'''",
-'diff-img' => "एक '''तस्बिर'''",
-'diff-span' => "एक '''स्प्यान'''",
-'diff-a' => "एक '''लिंक'''",
-'diff-i' => "'''इटालिक'''",
-'diff-b' => "'''मोटो'''",
-'diff-strong' => "'''कडा'''",
-'diff-em' => "'''जोड'''",
-'diff-font' => "'''फन्ट'''",
-'diff-big' => "'''ठूलो'''",
-'diff-del' => "'''मेटिएको'''",
-'diff-tt' => "'''निश्चित चौडाइ'''",
-'diff-sub' => "'''निम्नाक्षर'''",
-'diff-sup' => "'''उर्ध्वाक्षर'''",
-'diff-strike' => "'''स्ट्राइकथ्रू'''",
+'history-title' => '"$1" को पुनरावलोकन इतिहास',
+'difference' => '(पुनरावलोकनहरुको बीचमा भिन्नता)',
+'lineno' => 'पंक्ति $1:',
+'compareselectedversions' => 'छानिएका संस्करणहरू दाँज्नुहोस्',
+'showhideselectedversions' => 'छानिएका पुनरावलोकनहरु देखाउने/लुकाउने',
+'editundo' => 'रद्द गर्ने',
+'diff-multi' => '({{PLURAL:$1|एक मध्य पुनरावलोकन|$1 मध्य पुनरावलोकनहरू}} नदेखाइएको)',
# Search results
'searchresults' => 'खोज नतिजाहरू',
@@ -760,24 +747,25 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'searchresulttext' => ' {{SITENAME}}मा खोज्ने बारे थप जानकारीको लागि,[[{{MediaWiki:Helppage}}|{{int:help}}]] मा हेर्नुहोस् ।',
'searchsubtitle' => 'तपाईँले \'\'\'[[:$1]]\'\'\' खोज्नु भएको थियो ([[Special:Prefixindex/$1| "$1"बाट सुरु हुने पृष्ठ ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" मा जोडिने पृष्ठ]])',
'searchsubtitleinvalid' => "तपाईँले '''$1''' खोज्नुभएको थियो",
-'noexactmatch' => "'''\"\$1\" शिर्षक भएको पृष्ठ छैन ।'''
-तपाई [[:\$1|यस पृष्ठ निर्माण गर्न सक्नुहुन्छ ]]।",
-'noexactmatch-nocreate' => "''' \"\$1\" शिर्षक भएको पृष्ठ छैन।'''",
'toomanymatches' => 'अति धेरै मिल्ने नतिजाहरु भेटियो , कृपया फरक क्वेरी प्रयोग गर्नुहोस',
'titlematches' => 'पृष्ठ शिर्षक मिल्छ',
'notitlematches' => 'कुनैपनि पृष्ठको शिर्षक संग मिल्दैन',
'textmatches' => 'पृष्ठ पाठ मिल्छ',
'notextmatches' => 'अक्षरस् पेज भेटिएन',
-'nextn' => 'अर्को $1',
+'prevn' => 'पहिलेको {{PLURAL:$1|$1}}',
+'nextn' => 'अर्को {{PLURAL:$1|$1}}',
'prevn-title' => 'पहिलेको $1 {{PLURAL:$1|नतिजा|नतिजाहरु}}',
'nextn-title' => 'यस पछिको $1 {{PLURAL:$1|नतिजा |नतिजाहरु}}',
'shown-title' => 'देखाउने $1 {{PLURAL:$1|नतिजा|नतिजाहरु}} प्रति पृष्ठ',
-'viewprevnext' => 'हेर्नुहोस् ($1) ($2) ($3)',
+'viewprevnext' => 'हेर्नुहोस् ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'खोज विकल्प',
'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ यो विकीमा रहेको छ'''",
'searchmenu-new' => "'''यो विकिमा \"[[:\$1]]\" पृष्ठ शृजना गर्नुहोस् !'''",
'searchhelp-url' => 'Help:सामग्री',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|पृष्ठहरु प्रिफिक्सले हेर्नुहोस् ]]',
+'searchprofile-articles' => 'सामग्री पृष्ठहरु',
+'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
+'searchprofile-images' => 'मल्टिमिडिया(श्रव्य दृश्य)',
'searchprofile-everything' => 'सब थोक',
'searchprofile-advanced' => 'उन्नत',
'searchprofile-articles-tooltip' => '$1 मा खोज्ने',
@@ -797,11 +785,12 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'search-mwsuggest-disabled' => 'सुझाव बाहेकको',
'search-relatedarticle' => 'सम्बन्धित',
'mwsuggest-disable' => 'AJAX सुझाव निस्क्रिय पार्नुहोस्',
+'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
'searchrelated' => 'सम्बन्धित',
'searchall' => 'सबै',
'showingresults' => "देखाउदै {{PLURAL:$1|'''१''' नतिजा|'''$1''' नतिजाहरु }} , #'''$2''' बाट सुरुहुने ।",
'showingresultsnum' => "तल देखाउदै {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
-'showingresultstotal' => "तल देखाउदै {{PLURAL:$4|नतिजा '''$1''' को '''$3'''|नतिजाहरू '''$1 - $2''' को '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}} ,'''$4''' को लागि",
'nonefound' => "'''द्रष्टव्य''': पूर्वनिर्धारित रुपमा केहीमात्र नेमस्पेसेजहरू खोजिन्छ ।त
तपाईँको क्वेरीलाई ''all:'' राखी सवै(वार्रतालाप , टेम्लेट सहित, इत्यादी)सामग्री खोज्ने गरी मिलाउनुहोस् , ‍नत्र चाहेको नेमस्पेसलाई अगाडि जोड्नुहोस् ।",
'search-nonefound' => 'तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्',
@@ -810,78 +799,136 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'powersearch-ns' => 'नेमस्पेसेजहरुमा खोज्ने :',
'powersearch-redir' => 'रिडाइरेक्टहरू सूचीकृत गर्ने',
'powersearch-field' => 'को लागि खोज्ने',
+'powersearch-togglelabel' => 'जाँच्ने :',
+'powersearch-toggleall' => 'सबै',
+'powersearch-togglenone' => 'कुनैपनि होइन',
'search-external' => 'बाह्य खोज',
'searchdisabled' => '{{SITENAME}} खोज निस्कृय पारिएको छ ।
यस समयमा तपाईले Google द्वारा खोज्न सक्नुहुन्छ ।
याद गर्नुहोस् उनीहरुको {{SITENAME}}को सूची सामग्री पुरानो पनि हुनसक्छ ।',
+# Quickbar
+'qbsettings' => 'क्विकबार',
+'qbsettings-none' => 'कुनैपनि होइन',
+'qbsettings-fixedleft' => 'देब्रे निश्चित गरिएको',
+'qbsettings-fixedright' => 'दाहिने निश्चित गरिएको',
+'qbsettings-floatingleft' => 'देब्रे तैरने',
+'qbsettings-floatingright' => 'दाहिने तैरने',
+
# Preferences page
-'preferences' => 'रोजाईहरू',
-'mypreferences' => 'मेरा अभिरुचिहरू',
-'prefs-edits' => 'सम्पादन संख्या:',
-'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
-'qbsettings' => 'क्विकबार',
-'qbsettings-none' => 'कुनैपनि होइन',
-'qbsettings-fixedleft' => 'देब्रे निश्चित गरिएको',
-'qbsettings-fixedright' => 'दाहिने निश्चित गरिएको',
-'qbsettings-floatingleft' => 'देब्रे तैरने',
-'qbsettings-floatingright' => 'दाहिने तैरने',
-'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
-'skin-preview' => 'पूर्वालोकन',
-'math' => 'गणित',
-'datedefault' => 'कुनै अभिरुचि छैन',
-'datetime' => 'मिति र समय',
-'math_failure' => 'पढ्न सकिएन',
-'math_unknown_error' => 'अज्ञात समस्या',
-'math_unknown_function' => 'अज्ञात निर्देशन',
-'math_lexing_error' => 'वर्ण(lexing) त्रुटी',
-'math_syntax_error' => 'सुत्र(syntax) त्रुटी',
-'prefs-personal' => 'प्रयोगकर्ताको विवरण',
-'prefs-rc' => 'नयाँ परिवर्तनहरु',
-'prefs-watchlist' => 'अवलोकन पृष्ठ',
-'prefs-watchlist-days' => 'निगरानी सूचीमा देखाउन दिनहरु:',
-'prefs-watchlist-edits' => 'उच्चतम परिवर्तन संख्या बढाइएको निगरानी सूचीमा देखाउनको लागि :',
-'prefs-misc' => 'साधारण',
-'prefs-resetpass' => 'प्रवेशशव्द परिवर्रतन',
-'saveprefs' => 'संग्रह',
-'resetprefs' => 'संग्रह नगरिएका परिवर्तनहरु सफागर्ने',
-'restoreprefs' => 'सबै पूर्वनिर्धारित स्थिती कायम गर्ने',
-'prefs-edit-boxsize' => 'सम्पादन झ्यालको आकार',
-'rows' => 'हरफहरु :',
-'columns' => 'स्तम्भहरु :',
-'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पृष्ठ खोज मेल(hits):',
-'contextlines' => 'प्रति पंक्ति मेल :',
-'contextchars' => 'प्रति पंक्ति सन्दर्भ :',
-'recentchangesdays' => 'हालको परिवर्तनमा देखाउने दिनहरु:',
-'recentchangescount' => 'नयाँ परिवर्तित शिर्षकहरु',
-'savedprefs' => 'तपाँईका अभिरुचिहरू सङ्ग्रहित भयो।',
-'timezonelegend' => 'समय क्षेत्र :',
-'localtime' => 'स्थानिय समय:',
-'timezoneuseserverdefault' => 'सर्भर पूर्वनिर्धारित प्रयोग गर्नुहोस',
-'timezoneuseoffset' => 'अरु नै(अफसेट खुलाउनुहोस्)',
-'timezoneoffset' => 'अफसेट¹:',
-'servertime' => 'सर्भर समय:',
-'guesstimezone' => 'ब्राउजरबाट भराउनुहोस्',
-'timezoneregion-africa' => 'अफ्रिका',
-'timezoneregion-america' => 'अमेरिका',
-'timezoneregion-antarctica' => 'एन्टार्टिका',
-'timezoneregion-arctic' => 'आर्टिक',
-'timezoneregion-asia' => 'एसिया',
-'timezoneregion-atlantic' => 'एट्लान्टिक महासागर',
-'timezoneregion-australia' => 'अष्ट्रेलिया',
-'timezoneregion-europe' => 'युरोप',
-'timezoneregion-indian' => 'हिन्द महासागर',
-'timezoneregion-pacific' => 'प्राशान्त महासागर',
-'allowemail' => 'अरु प्रयोगकर्ताहरुबाट प्राप्त हुने ईमेल enable गर्नुहोस् ।',
-'prefs-searchoptions' => 'खोज विकल्पहरु',
-'prefs-namespaces' => 'नेमस्पेसेज',
-'default' => 'पूर्वनिर्धारित',
-'prefs-custom-css' => 'अनुकुलित CSS',
-'prefs-custom-js' => 'अनुकुलित JS',
+'preferences' => 'रोजाईहरू',
+'mypreferences' => 'मेरा अभिरुचिहरू',
+'prefs-edits' => 'सम्पादन संख्या:',
+'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
+'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
+'prefs-skin' => 'काँचुली',
+'skin-preview' => 'पूर्वालोकन',
+'prefs-math' => 'गणित',
+'datedefault' => 'कुनै अभिरुचि छैन',
+'prefs-datetime' => 'मिति र समय',
+'prefs-personal' => 'प्रयोगकर्ताको विवरण',
+'prefs-rc' => 'नयाँ परिवर्तनहरु',
+'prefs-watchlist' => 'अवलोकन पृष्ठ',
+'prefs-watchlist-days' => 'निगरानी सूचीमा देखाउन दिनहरु:',
+'prefs-watchlist-days-max' => 'धेरैमा ७ दिनहरु',
+'prefs-watchlist-edits' => 'उच्चतम परिवर्तन संख्या बढाइएको निगरानी सूचीमा देखाउनको लागि :',
+'prefs-watchlist-edits-max' => 'उच्चतम संख्या : १०००',
+'prefs-watchlist-token' => 'निगरानी सूची टोकन',
+'prefs-misc' => 'साधारण',
+'prefs-resetpass' => 'प्रवेशशव्द परिवर्रतन',
+'prefs-email' => 'इमेल विकल्पहरु',
+'prefs-rendering' => 'स्वरुप',
+'saveprefs' => 'संग्रह',
+'resetprefs' => 'संग्रह नगरिएका परिवर्तनहरु सफागर्ने',
+'restoreprefs' => 'सबै पूर्वनिर्धारित स्थिती कायम गर्ने',
+'prefs-editing' => 'सम्पादन',
+'prefs-edit-boxsize' => 'सम्पादन झ्यालको आकार',
+'rows' => 'हरफहरु :',
+'columns' => 'स्तम्भहरु :',
+'searchresultshead' => 'खोज',
+'resultsperpage' => 'प्रति पृष्ठ खोज मेल(hits):',
+'contextlines' => 'प्रति पंक्ति मेल :',
+'contextchars' => 'प्रति पंक्ति सन्दर्भ :',
+'recentchangesdays' => 'हालको परिवर्तनमा देखाउने दिनहरु:',
+'recentchangesdays-max' => 'उच्चतम $1 {{PLURAL:$1|दिन|दिनहरु}}',
+'recentchangescount' => 'पूर्व निर्धारितरुपमा देखाउनुपर्ने सम्पादनहरू :',
+'prefs-help-recentchangescount' => 'यसमा हालका परिवर्रनहरु , पृष्ठ इतिहासहरु , र सुचीहरू समाविष्ठ छन् ।',
+'prefs-help-watchlist-token' => 'यो विधामा गोप्य संकेत राख्नाले तपाईँको निगरानीसूचीको RSS फिड शृजन हुने छ ।
+संकेत थाहपाउने जो कसैले तपाईको निगरानी सूची पढ्न सक्ने भएकोले , सुरक्षित मान छान्नुहोला ।
+यहाँ जथाभावीरुपमा-शृजना गरिएको तपाईले प्रयोग गर्ने सक्नुहुने मान छ : $1',
+'savedprefs' => 'तपाँईका अभिरुचिहरू सङ्ग्रहित भयो।',
+'timezonelegend' => 'समय क्षेत्र :',
+'localtime' => 'स्थानिय समय:',
+'timezoneuseserverdefault' => 'सर्भर पूर्वनिर्धारित प्रयोग गर्नुहोस',
+'timezoneuseoffset' => 'अरु नै(अफसेट खुलाउनुहोस्)',
+'timezoneoffset' => 'अफसेट¹:',
+'servertime' => 'सर्भर समय:',
+'guesstimezone' => 'ब्राउजरबाट भराउनुहोस्',
+'timezoneregion-africa' => 'अफ्रिका',
+'timezoneregion-america' => 'अमेरिका',
+'timezoneregion-antarctica' => 'एन्टार्टिका',
+'timezoneregion-arctic' => 'आर्टिक',
+'timezoneregion-asia' => 'एसिया',
+'timezoneregion-atlantic' => 'एट्लान्टिक महासागर',
+'timezoneregion-australia' => 'अष्ट्रेलिया',
+'timezoneregion-europe' => 'युरोप',
+'timezoneregion-indian' => 'हिन्द महासागर',
+'timezoneregion-pacific' => 'प्राशान्त महासागर',
+'allowemail' => 'अरु प्रयोगकर्ताहरुबाट प्राप्त हुने ईमेल enable गर्नुहोस् ।',
+'prefs-searchoptions' => 'खोज विकल्पहरु',
+'prefs-namespaces' => 'नेमस्पेसेज',
+'defaultns' => 'अन्यथा यी नेमस्पेसेजमा खोज्ने :',
+'default' => 'पूर्वनिर्धारित',
+'prefs-files' => 'फाइलहरु',
+'prefs-custom-css' => 'अनुकुलित CSS',
+'prefs-custom-js' => 'अनुकुलित JS',
+'prefs-reset-intro' => 'तपाईले यो पृष्ठ आफ्नो अभिरुचीहरू साइट पूर्वावस्थामा फर्काउन प्रयोग गर्न सक्नुहुन्छ ।
+यो रद्द गर्न सक्नुहुन्छ ।',
+'prefs-emailconfirm-label' => 'इ-मेल एकिन प्रक्रिया :',
+'prefs-textboxsize' => 'सम्पादन विन्डोको आकार',
+'youremail' => 'ईमेल',
+'username' => 'प्रयोगकर्ता :',
+'uid' => 'प्रोगकर्ता आइडी:',
+'prefs-memberingroups' => 'निम्न {{PLURAL:$1|समूह | समूहहरू}}को सदस्य :',
+'prefs-memberingroups-type' => '$1',
+'prefs-registration' => 'दर्ता समय:',
+'prefs-registration-date-time' => '$1',
+'yourrealname' => 'वास्तविक नाम:',
+'yourlanguage' => 'भाषा:',
+'yourvariant' => 'परिवर्तित प्रकार',
+'yournick' => 'उपनाम (निकनेम):',
+'prefs-help-signature' => 'वार्तालाप पृष्ठका टिप्पणीहरु "<nowiki>~~~~</nowiki>" द्वारा दस्तखत गरिनुपर्छ ,जुन पछि तपाईँको दस्तखत र समयरेखामा रुपान्तरित हुनेछ ।',
+'badsig' => 'अमान्य कच्चा दस्तखत।
+HTML ट्यागहरु जाँच्नुहोस् ।',
+'badsiglength' => 'तपाईको दस्तखत धेरै लामो छ।
+यो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुदैन ।',
+'yourgender' => 'लिङ्ग:',
+'gender-unknown' => 'नखुलेको',
+'gender-male' => 'पुरूष',
+'gender-female' => 'महिला',
+'prefs-help-gender' => 'ऐच्छिक: सफ्टवेयरले लिङगानुसार सम्बोधन गर्नको लागि प्रयोग गरिन्छ ।
+यो जानकारी सार्वजनिक हुनेछ ।',
+'email' => 'ईमेल',
+'prefs-help-realname' => 'वास्तविक नाम ऐच्छिक हो ।
+तपाईले यो खुलाउनु भएको खण्डमा तपाईँको कामको श्रेय दिनको लागि प्रयोग गरिने छ।',
+'prefs-help-email' => 'इमेल ठेगाना ऐच्छिक हो , तर तपाईँले आफ्नो प्रवेशशव्द भुल्नु भएमा तपाईँ नयाँ प्रवेशशव्द इमेल गराइ पाउन सक्नुहुन्छ।
+तपाईले आफ्नो वास्ताविक परिचय नखुलाइकन वार्तालाप पृष्ठ प्रयोग गरेर अरुले तपाईँसँग सम्पर्क गर्न पाउने गर्न सक्नुहुन्छ ।',
+'prefs-help-email-required' => 'इमेल ठेगामा चाहिन्छ ।',
+'prefs-info' => 'साधारण जानकारी',
+'prefs-i18n' => 'अन्तर्राष्ट्रियकरण',
+'prefs-signature' => 'दस्तखत',
+'prefs-dateformat' => 'मिति ढाँचा',
+'prefs-timeoffset' => 'समय अफसेट',
+'prefs-advancedediting' => 'विशिष्ट विकल्प',
+'prefs-advancedrc' => 'उन्नत विकल्पहरू',
+'prefs-advancedrendering' => 'उन्नत विकल्पहरु',
+'prefs-advancedsearchoptions' => 'उन्नत विकल्पहरू',
+'prefs-advancedwatchlist' => 'उन्नत विकल्पहरू',
+'prefs-display' => 'प्रदर्शन विकल्पहरू',
+'prefs-diffs' => 'diffs(भिन्नता)',
# User rights
-'userrights' => 'प्रयोगकर्ता अधिकार व्यवस्थापन', # Not used as normal message but as header for the special page itself
+'userrights' => 'प्रयोगकर्ता अधिकार व्यवस्थापन',
'userrights-lookup-user' => 'प्रयोगकर्ता समूह व्यवस्थापन गर्नुहोस',
'userrights-user-editname' => 'प्रयोगरकर्ता नाम प्रविष्ठ गर्नुहोस :',
'editusergroup' => 'प्रयोगकर्ता समूह सम्पादन गर्नुहोस्',
@@ -955,6 +1002,8 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'right-editprotected' => 'जोगाइएका पृष्ठहरु सम्पादन गर्ने(क्यासकेडिङ्ग सुरक्षा नभएका)',
'right-editinterface' => 'प्रयोगकर्ता अन्तरमोहडा सम्पादन गर्ने',
'right-editusercssjs' => 'प्रयोगकर्ताको CSS र JS फाइलहरु सम्पादन गर्ने',
+'right-editusercss' => 'प्रयोगकर्ताको CSS फाइलहरु सम्पादन गर्ने',
+'right-edituserjs' => 'प्रयोकर्ताको JS फाइलहरु सम्पादनगर्ने',
'right-rollback' => 'पछिल्लो प्रयोगकर्ताको सम्पादनहरुको छरितो रुपमा पछाडि पर्काउने',
'right-markbotedits' => 'पछाडि फर्काउने सम्पादनहरुलाई बोट सम्पादनकारुपमा चिनो लगाउने',
'right-noratelimit' => 'दर सिमाले असर नपार्ने',
@@ -971,6 +1020,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'right-siteadmin' => 'डेटाबेसको ताल्चामार्ने र ताल्चाखोल्ने',
'right-reset-passwords' => 'अरु प्रयोगकर्ताको प्रवेशशव्द पुनर्प्रविष्ठीगर्ने',
'right-override-export-depth' => 'गहिराइ ५ सम्मको लिंकगरिएका पृष्ठहरु सहित निर्यात गर्ने',
+'right-versiondetail' => 'विस्तारित सफ्टवेयर संस्करण जानकारी देखाउने',
# User rights log
'rightslog' => 'प्रयोगकर्ता अधिकार लग',
@@ -1009,32 +1059,42 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'action-siteadmin' => 'dpkg वस्तुस्थिति डेटावेश ताल्चा फुकाउन अक्षम',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
-'recentchanges' => 'नयाँ परिवर्तनहरु',
-'recentchanges-legend' => 'हालैको परिवर्रन विकल्पहरु',
-'recentchanges-feed-description' => 'यो फिडमा रहेको विकीको सवैभन्दा अन्तिम परिवर्तनहरुको जानकारी राख्नुहोस्',
-'rclistfrom' => '$1 देखिका नयाँ परिवर्तनहरू देखाउनु',
-'rcshowhideminor' => '$1 सामान्य सम्पादन',
-'rcshowhidebots' => '$1 बोटहरू',
-'rcshowhideliu' => '$1 प्रवेश गरेका प्रयोगकर्ताहरु',
-'rcshowhideanons' => '$1 अज्ञात प्रयोगकर्ता',
-'rcshowhidepatr' => '$1 पट्रोल गरिएका सम्पादनहरु',
-'rcshowhidemine' => '$1 मेरो सम्पादनहरु',
-'rclinks' => 'पछिल्ला $1 परिवर्तनहरु पछिल्ला $2 दिनहरुमा<br />$3',
-'diff' => 'भिन्न',
-'hist' => 'इतिहास',
-'hide' => 'लुकाउनुहोस्',
-'show' => 'देखाउनुहोस्',
-'minoreditletter' => 'सा',
-'newpageletter' => 'न',
-'boteditletter' => 'बो',
-'rc_categories_any' => 'कुनै',
-'newsectionsummary' => '/* $1 */ नयाँ खण्ड',
-'rc-enhanced-expand' => 'जानकारी देखाउने( जाभा स्क्रिप्ट चाहिने)',
-'rc-enhanced-hide' => 'जानकारी लुकाउने',
+'nchanges' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
+'recentchanges' => 'नयाँ परिवर्तनहरु',
+'recentchanges-legend' => 'हालैको परिवर्रन विकल्पहरु',
+'recentchanges-feed-description' => 'यो फिडमा रहेको विकीको सवैभन्दा अन्तिम परिवर्तनहरुको जानकारी राख्नुहोस्',
+'recentchanges-legend-newpage' => '$1 - नयाँ पृष्ठ',
+'recentchanges-label-newpage' => 'यो सम्पादनले नयाँ पृष्ठ निर्माण गरेको छ',
+'recentchanges-legend-minor' => 'साधारण सम्पादन -$1',
+'recentchanges-label-minor' => 'यो साधारण सम्पादन हो',
+'recentchanges-legend-bot' => 'बोट सम्पादन -$1',
+'recentchanges-label-bot' => 'यो सम्पादन बोट द्वारा गरिएको थियो',
+'recentchanges-legend-unpatrolled' => 'पट्रोल नरिएको सम्पादन -$1',
+'recentchanges-label-unpatrolled' => 'यो सम्पादन अहिले सम्म पट्रोल गरिएको छैन',
+'rclistfrom' => '$1 देखिका नयाँ परिवर्तनहरू देखाउनु',
+'rcshowhideminor' => '$1 सामान्य सम्पादन',
+'rcshowhidebots' => '$1 बोटहरू',
+'rcshowhideliu' => '$1 प्रवेश गरेका प्रयोगकर्ताहरु',
+'rcshowhideanons' => '$1 अज्ञात प्रयोगकर्ता',
+'rcshowhidepatr' => '$1 पट्रोल गरिएका सम्पादनहरु',
+'rcshowhidemine' => '$1 मेरो सम्पादनहरु',
+'rclinks' => 'पछिल्ला $1 परिवर्तनहरु पछिल्ला $2 दिनहरुमा<br />$3',
+'diff' => 'भिन्न',
+'hist' => 'इतिहास',
+'hide' => 'लुकाउनुहोस्',
+'show' => 'देखाउनुहोस्',
+'minoreditletter' => 'सा',
+'newpageletter' => 'न',
+'boteditletter' => 'बो',
+'rc_categories_any' => 'कुनै',
+'newsectionsummary' => '/* $1 */ नयाँ खण्ड',
+'rc-enhanced-expand' => 'जानकारी देखाउने( जाभा स्क्रिप्ट चाहिने)',
+'rc-enhanced-hide' => 'जानकारी लुकाउने',
# Recent changes linked
'recentchangeslinked' => 'संबन्धित परिवर्तनहरु',
+'recentchangeslinked-feed' => 'संबन्धित परिवर्तनहरु',
+'recentchangeslinked-toolbox' => 'संबन्धित परिवर्तनहरु',
'recentchangeslinked-title' => '"$1"सम्वन्धित परिवर्तनसँग',
'recentchangeslinked-summary' => "यो खुलाईएको पृष्ठसँग जोडिएका पृष्ठहरुमा गरिएको परिवर्तनहरुको सुची हो(या खुलाइएको श्रेणी )[[Special:Watchlist|तपाईँको निगरानी सूची]] का पृष्ठहरु '''बोल्ड'''.",
'recentchangeslinked-page' => 'पृष्ठ नाम:',
@@ -1043,7 +1103,6 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
# Upload
'upload' => 'फाइल अपलोड',
'uploadbtn' => 'फाइल अपलोड गर्नु',
-'reupload' => 'पुन:अपलोड गर्ने',
'uploadnologin' => 'प्रवेश (लग ईन) नगरिएको',
'uploaderror' => 'त्रुटि सङ्कुचन',
'upload-permitted' => 'डेटा प्रकारहरूको विश्लेषण',
@@ -1059,7 +1118,6 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'filesource' => 'स्रोत:',
'uploadedfiles' => 'प्याकेज फाइलहरू:',
'ignorewarnings' => 'कुनै पनि कुञ्जी थिचाई',
-'fileexists-thumb' => 'अवस्थित फाइलमा थप्नुहोस्',
'successfulupload' => 'सफलतापूर्वक... पूरा भयो',
'uploadwarning' => 'प्रमाणिकरण चेतावनी अधिलेखन भयो ।',
'savefile' => 'फाइल बचत गर्नुहोस्',
@@ -1073,9 +1131,11 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'upload-maxfilesize' => 'अधिकतम फाइल आकार : $1',
'watchthisupload' => 'यो पृष्ठ निगरानी गर्नुहोस्',
-'upload-proto-error' => 'दूषित प्रोटोकल',
-'upload-file-error' => 'आन्तरिक त्रुटी',
-'upload-misc-error' => 'अज्ञात अपलोड त्रुटि',
+'upload-proto-error' => 'दूषित प्रोटोकल',
+'upload-file-error' => 'आन्तरिक त्रुटी',
+'upload-misc-error' => 'अज्ञात अपलोड त्रुटि',
+'upload-unknown-size' => 'अज्ञात आकार',
+'upload-http-error' => 'एक HTTP त्रुटी : $1',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URLमा पुग्न सकिएन',
@@ -1097,6 +1157,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'listfiles_count' => 'संस्करणहरु',
# File description page
+'file-anchor-link' => 'फाईल',
'filehist' => 'फाइल इतिहास',
'filehist-help' => 'मिति/समय मा क्लिक गरेर त्यससमयमा यो फाइल कस्तो थियो भनेर हेर्न सकिन्छ ।',
'filehist-deleteall' => 'सबै मेट्ने',
@@ -1105,20 +1166,21 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'filehist-current' => 'हालको',
'filehist-datetime' => 'मिति/समय',
'filehist-thumb' => 'थम्बनेल',
+'filehist-thumbtext' => 'थम्बनेल $1 सस्करणको रुपमा',
'filehist-nothumb' => 'थम्बनेल नभएको',
'filehist-user' => 'प्रयोगकर्ता',
'filehist-dimensions' => 'आकारहरू',
'filehist-filesize' => 'फाइल आकार',
'filehist-comment' => 'टिप्पणी',
+'filehist-missing' => 'फाइल हराइरहेको छ',
'imagelinks' => 'फाइल लिंकहरू',
'linkstoimage' => 'यस फाइलमा निम्न{{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरु जोडिन्छन}}:',
'nolinkstoimage' => 'यो फाईलसंग लिंकभएको कुनै पृष्ठ छैन.',
'morelinkstoimage' => 'हेर्नुहोस् [[Special:WhatLinksHere/$1|थप लिंकहरु]] यो फाइलको।',
'redirectstofile' => 'यहाँ निम्न {{PLURAL:$1|फाइल|$1 फाइलहरु}} रिडाइरेक्ट हुन्छ:',
-'noimage-linktext' => 'अपलोड गर्नुहोस्',
'uploadnewversion-linktext' => 'यो फाइलको नयाँ संस्करण उर्ध्वभरण गर्नुहोस् ।',
-'shared-repo-from' => ' $1 बाट', # $1 is the repository name
-'shared-repo' => 'एल साझा भण्डार', # used when shared-repo-NAME does not exist
+'shared-repo-from' => ' $1 बाट',
+'shared-repo' => 'एल साझा भण्डार',
# File reversion
'filerevert' => 'पूर्वस्थिती $1मा फर्काउने',
@@ -1165,6 +1227,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'statistics-header-edits' => 'तथ्याङ्क सङ्कलन गर्नुहोस्',
'statistics-header-views' => 'तथ्याङ्क सङ्कलन गर्नुहोस्',
'statistics-header-users' => 'तथ्याङ्क सङ्कलन गर्नुहोस्',
+'statistics-header-hooks' => 'तथ्याङ्क सङ्कलन गर्नुहोस्',
'statistics-articles' => 'सामग्री पृष्ठहरु',
'statistics-pages' => 'पृष्ठहरु',
'statistics-pages-desc' => 'विकिका सबै पृष्ठहरु , वार्तापका पृष्ठहरु समेत , रिडाइरेक्ट , इत्यादि ।',
@@ -1183,8 +1246,10 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'doubleredirects' => 'दोब्बर साइज',
-'brokenredirects' => 'टुटेका रिडाइरेक्टहरू',
-'brokenredirectstext' => 'तलका लिङ्कहरु ले हुदै नभएका पृष्ठहररसँग जोडिन्छन्:',
+'brokenredirects' => 'टुटेका रिडाइरेक्टहरू',
+'brokenredirectstext' => 'तलका लिङ्कहरु ले हुदै नभएका पृष्ठहररसँग जोडिन्छन्:',
+'brokenredirects-edit' => 'सम्पादन',
+'brokenredirects-delete' => 'मेट्ने',
'withoutinterwiki' => 'भाषा नभएको पृष्ठहरु',
'withoutinterwiki-summary' => 'यी पानाहरूले अन्य भाषाका संस्करणहरूमा संबन्ध राखेका छैनन्:',
@@ -1299,6 +1364,11 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'listusers-submit' => 'देखाउनुहोस्',
'listusers-noresult' => 'क्र्याश लग फेला परेन',
+# Special:ActiveUsers
+'activeusers' => 'पोडकास्ट URLs सूची',
+'activeusers-from' => 'पृष्ठको माथी पानीचिन्ह प्रदर्शन गर्न',
+'activeusers-noresult' => 'क्र्याश लग फेला परेन',
+
# Special:Log/newusers
'newuserlogpage' => 'प्रयोगकर्ता श्रृजना लग',
'newuserlog-create-entry' => 'नयाँ प्रयोगकर्ता',
@@ -1372,6 +1442,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'delete-legend' => 'मेट्नुहोस्',
'historywarning' => 'खबरदारी: तपाईंले मेटाउन लाग्नुभएको पृष्ठको इतिहास छ:',
'actioncomplete' => 'काम सकियो',
+'actionfailed' => 'कार्य असफल',
'deletedtext' => '"<nowiki>$1</nowiki>" मेटिएको छ।
हालै हटाइएको सूची $2 मा हेर्नुहोस् ।',
'deletedarticle' => '"[[$1]]" मेटियो',
@@ -1388,7 +1459,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'rollback_short' => 'रोलब्याक',
'rollbacklink' => 'पहिलेको रुपमा फर्काउने',
'rollbackfailed' => 'रोलब्याक असफल',
-'editcomment' => "सम्पादन सारांश : \"''\$1''\" ।", # only shown if there is an edit comment
+'editcomment' => "सम्पादन सारांश : \"''\$1''\" ।",
# Protect
'protectlogpage' => 'सुरक्षण लग',
@@ -1400,7 +1471,6 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'protectexpiry' => 'सकिने:',
'protect_expiry_invalid' => 'सकिने समयावधि अमान्य ।',
'protect_expiry_old' => 'सकिने समय बिगतमा छ ।',
-'protect-unchain' => 'सार्ने अनुमतिलाई खोल्ने',
'protect-text' => "तपाईँ यो पृष्ठको यहाँ'''<nowiki>$1</nowiki>''' सुरक्षा स्तर परिवर्तन गर्न र हेर्न सक्नुहुन्छ ।",
'protect-locked-access' => "तपाईँको खातालाई पृष्ठको सुरक्ष स्तरहरू परिवर्तन गर्ने अनुमति छैन ।
'''$1''पृष्ठको हालको स्थिती निम्न छ :",
@@ -1440,6 +1510,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'undelete-nodiff' => 'कुनै पनि पुरानो पुनरावलोकनहरु भेटिएन ।',
'undeletebtn' => 'पूर्वावस्थामा ल्याउनुहोस्',
'undeletelink' => 'हेर्ने/पूर्वरुपमा फर्काउने',
+'undeleteviewlink' => 'अवलोकन',
'undeletereset' => 'रिसेट गर्नुहोस्',
'undeleteinvert' => ' चयन उल्ट्याउने',
'undeletecomment' => 'टिप्पणी:',
@@ -1468,7 +1539,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'sp-contributions-newbies' => 'नयाँ खाताको लागि मात्र योगदानहरु देखाउने',
'sp-contributions-newbies-sub' => 'नयाँ खाताहरुको लागि',
'sp-contributions-blocklog' => 'रोकावट लग',
+'sp-contributions-deleted' => 'प्रयोगकर्ताका योगदानहरु मेटाइयो',
'sp-contributions-logs' => 'लगहरु',
+'sp-contributions-userrights' => 'प्रयोगकर्ता अधिकार व्यवस्थापन',
'sp-contributions-search' => 'योगदानहरु खोज्नुहोस्',
'sp-contributions-username' => 'IP ठेगाना वा प्रयोगकर्ता नाम :',
'sp-contributions-submit' => 'खोज',
@@ -1500,7 +1573,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'ipbcreateaccount' => 'खाता सिर्जना रोक्नुहोस',
'ipbsubmit' => 'यो प्रयोगकर्तालाई रोक्नुहोस',
'ipbother' => 'अरु समय:',
-'ipboptions' => '२ घण्टाहरु:2 hours,१ दिन :1 day,३ दिनहरु:3 days,१ हप्ता:1 week,२ हप्ताहरु:2 weeks,१ महिना:1 month,३ महिनाहरु:3 months,६ महिनाहरु:6 months,१ वर्ष:1 year,अनगिन्ती:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '२ घण्टाहरु:2 hours,१ दिन :1 day,३ दिनहरु:3 days,१ हप्ता:1 week,२ हप्ताहरु:2 weeks,१ महिना:1 month,३ महिनाहरु:3 months,६ महिनाहरु:6 months,१ वर्ष:1 year,अनगिन्ती:infinite',
'ipbotheroption' => 'अन्य',
'ipbotherreason' => 'अन्य / थप कारणहरु:',
'ipbhidename' => 'प्रयोगकर्ताको नाम सम्पादनबाट र सूचीबाट हटाउने',
@@ -1530,6 +1603,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'ipblocklist-submit' => 'खोज्नुहोस्',
'blocklistline' => '$1, $2 द्वारा रोकियो $3 ($4)',
'infiniteblock' => 'अनगिन्ती',
+'expiringblock' => ' सकिने $1 ,$2 मा',
'anononlyblock' => 'anon. हरु मात्र',
'noautoblockblock' => 'स्वत: निषेध निस्क्रिय गरिएको',
'createaccountblock' => 'खाता खोल्न बन्देज गरिएको',
@@ -1544,7 +1618,6 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
'autoblocker' => 'स्वत: बन्देज गरिएको किनकी IP ठेगाना "[[User:$1|$1]]" द्वारा प्रयोग गरिएकोले .
$1को बन्देजको कारण : "$2" हो',
'blocklogpage' => 'निषेध सूची',
-'blocklog-fulllog' => 'पूर्ण बन्देज सूची',
'blocklogentry' => ' [[$1]]लाई $2 $3 समयसम्म को लागि निषेध गरिएको छ',
'reblock-logentry' => '$2 $3 मा सकिने गरि [[$1]] को निषेध स्थिती परिवर्तन गरिएको छ ।',
'unblocklogentry' => 'अनिषेधित गरियो $1',
@@ -1585,7 +1658,7 @@ $1को बन्देजको कारण : "$2" हो',
'move-watch' => 'यो पृष्ठ निगरानीमा राख्नुहोस्',
'movepagebtn' => 'पृष्ठ सार्नुहोस्',
'pagemovedsub' => 'सार्ने काम सफल भयो',
-'movepage-moved' => '\'\'\'"$1" लाई "$2"मा सारिएको छ\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" लाई "$2"मा सारिएको छ\'\'\'',
'movepage-moved-redirect' => 'रिडाइरेक्ट पृष्ठ शृजना गरियो',
'movepage-moved-noredirect' => 'रिडाइरेक्ट पृष',
'articleexists' => 'यस नामको पृष्ठ पहिले देखि नै रहेको ,या तपाईँले छान्नु भएको नाम अमान्य छ।
@@ -1619,12 +1692,17 @@ $1को बन्देजको कारण : "$2" हो',
'export-templates' => 'प्याकेजबाट टेम्प्लेट उद्धरण गर्दैछ: %d%%',
# Namespace 8 related
-'allmessages' => 'सिस्टम सन्देशहरू',
-'allmessagesname' => 'नाम',
-'allmessagesdefault' => 'पाठ पूर्वनिर्धारित रङ',
-'allmessagescurrent' => 'उपशीर्षक पाठ सङ्केतन',
-'allmessagestext' => 'यो मिडियाविकि नेमस्पेसमा पाइने सिस्टम सन्देशहरूको सूची हो।',
-'allmessagesmodified' => 'परिवर्तित मात्र देखाउनुहोस्',
+'allmessages' => 'सिस्टम सन्देशहरू',
+'allmessagesname' => 'नाम',
+'allmessagesdefault' => 'पाठ पूर्वनिर्धारित रङ',
+'allmessagescurrent' => 'उपशीर्षक पाठ सङ्केतन',
+'allmessagestext' => 'यो मिडियाविकि नेमस्पेसमा पाइने सिस्टम सन्देशहरूको सूची हो।',
+'allmessages-filter-legend' => 'भिडियो फिल्टर',
+'allmessages-filter-all' => 'सबै',
+'allmessages-filter-modified' => 'परिमार्जन गरिएको',
+'allmessages-prefix' => 'कक्ष प्रकार्य उपसर्ग:',
+'allmessages-language' => 'भाषा:',
+'allmessages-filter-submit' => 'जानुहोस्',
# Thumbnails
'thumbnail-more' => 'ठूलो बनाउने',
@@ -1632,6 +1710,8 @@ $1को बन्देजको कारण : "$2" हो',
'thumbnail_error' => 'डाटावेस सिर्जना गर्दा त्रुटि: %s',
'thumbnail_invalid_params' => "नोड <parameters> हराइरहेछ: '%s'",
'thumbnail_dest_directory' => '%s सिर्जना गर्दै ... डाइरेक्टरी सिर्जना गर्न असफल',
+'thumbnail_image-type' => "अनुक्रमणिका फाइल प्रकार '%s' समर्थित छैन",
+'thumbnail_image-missing' => 'डाटाबेस फाइलमा डाटाबेसको नाम प्रयोग गर्नका लागि',
# Special:Import
'import' => 'पृष्ठहरु आयात गर्नुहोस्',
@@ -1689,6 +1769,7 @@ $1को बन्देजको कारण : "$2" हो',
'tooltip-ca-viewsource' => 'यो पृष्ठ सुरक्षित गरिएको छ। यसको श्रोत हेर्न सक्नुहुन्छ।',
'tooltip-ca-history' => 'यस पृष्ठको पहिलेका पुनरावलोकनहरु',
'tooltip-ca-protect' => 'यो पृष्ठलाई संरक्षित गर्नुहोस्',
+'tooltip-ca-unprotect' => 'पृष्ठ हेडर थप्नुहोस्',
'tooltip-ca-delete' => 'यो पृष्ठ मेटाउनुहोस्',
'tooltip-ca-undelete' => 'मेटिपको भए पनि यो पृष्ठको सम्पादनहरु पुन:प्राप्त गर्नुहोस्',
'tooltip-ca-move' => 'यो पृष्ठलाई सार्नुहोस्',
@@ -1699,6 +1780,7 @@ $1को बन्देजको कारण : "$2" हो',
'tooltip-search-fulltext' => 'यो पाठको लागि पृष्ठहरु खोज्नुहोस्',
'tooltip-p-logo' => 'मुख्य पृष्ठ',
'tooltip-n-mainpage' => 'मुख्य पृष्ठमा जानुहोस्',
+'tooltip-n-mainpage-description' => 'मूख पृष्ठमा जानुहोस',
'tooltip-n-portal' => 'आयोजनाका बारेमा , तपाईँ के गर्न सक्नुहुन्छ , सामग्री कहाँ भेट्टाउने',
'tooltip-n-currentevents' => 'हालैको घटनाको बारेमा पृष्ठभूमि जानकारी पत्तालगाउनुहोस्',
'tooltip-n-recentchanges' => 'विकीमा गरिएका हालैका परिवर्तनहरुको सूची',
@@ -1738,7 +1820,7 @@ $1को बन्देजको कारण : "$2" हो',
# Attribution
'siteuser' => 'अवैधानिक प्रयोगकर्ता %s',
-'lastmodifiedatby' => 'यो पृष्ठ अन्तिमपटक $3द्वारा $2, $1 मा परिवर्तन गरिएको थियो।', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'यो पृष्ठ अन्तिमपटक $3द्वारा $2, $1 मा परिवर्तन गरिएको थियो।',
'othercontribs' => '$1 को कामको आधारमा',
'others' => 'अन्य',
'creditspage' => 'पृष्ठ श्रेयहरु',
@@ -1764,6 +1846,13 @@ $1को बन्देजको कारण : "$2" हो',
'mw_math_source' => 'यसलाई TeX को रुपमा छोड्ने(पाठ प्रदर्शको लागि)',
'mw_math_modern' => 'आधुनिक ब्राउजरको लागि सिफारिस गरिएको',
+# Math errors
+'math_failure' => 'पढ्न सकिएन',
+'math_unknown_error' => 'अज्ञात समस्या',
+'math_unknown_function' => 'अज्ञात निर्देशन',
+'math_lexing_error' => 'वर्ण(lexing) त्रुटी',
+'math_syntax_error' => 'सुत्र(syntax) त्रुटी',
+
# Patrolling
'markaspatrolleddiff' => 'गस्ती गरिएको(patrolled) को रुपमा चिनो लगाउने',
'markaspatrolledtext' => 'यस पृष्ठलाई गस्ती गरिएको(patrolled) को रुपमा चिनो लगाउने',
@@ -1786,9 +1875,6 @@ $1को बन्देजको कारण : "$2" हो',
'previousdiff' => '← पहिलेको सम्पादन',
'nextdiff' => 'नयाँ सम्पादन →',
-# Visual comparison
-'visual-comparison' => 'डाइरेक्टरी तुलना',
-
# Media information
'thumbsize' => 'दोब्बर साइज',
'widthheightpage' => 'पृष्ठहरूको सूचीमा पृष्ठको स्थिति',
@@ -1798,6 +1884,7 @@ $1को बन्देजको कारण : "$2" हो',
'svg-long-desc' => '(SVG फाइल,साधारण $1 × $2 पिक्सेलहरु, फाइल आकार: $3)',
'show-big-image' => 'पूरा रिजोल्युशन',
'show-big-image-thumb' => '<small>यस पूर्वावलोकनको आकार : $1 × $2 pixels</small>',
+'file-info-gif-frames' => 'I र P बिचमा B फ्रेम',
# Special:NewFiles
'newimages' => 'स्वत: पत्ता उपशीर्षक फाइल',
@@ -1907,10 +1994,10 @@ $1को बन्देजको कारण : "$2" हो',
'exif-unknowndate' => 'अज्ञात मिति ढाँचा',
-'exif-orientation-1' => 'सामान्य', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'तेर्सो तरिकाले फ्लिप गर्नुहोस्', # 0th row: top; 0th column: right
-'exif-orientation-4' => 'ठाडो तरिकाले फ्लिप गर्नुहोस्', # 0th row: bottom; 0th column: left
-'exif-orientation-6' => '90° CW घुमाइएको', # 0th row: right; 0th column: top
+'exif-orientation-1' => 'सामान्य',
+'exif-orientation-2' => 'तेर्सो तरिकाले फ्लिप गर्नुहोस्',
+'exif-orientation-4' => 'ठाडो तरिकाले फ्लिप गर्नुहोस्',
+'exif-orientation-6' => '90° CW घुमाइएको',
'exif-planarconfiguration-1' => 'पङ्क्ति ढाँचा',
'exif-planarconfiguration-2' => 'पङ्क्ति ढाँचा',
@@ -2010,7 +2097,7 @@ $1को बन्देजको कारण : "$2" हो',
'exif-gpsstatus-a' => 'नापकार्य अगि बढिरहेको छ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'किलोमिटर प्रति घण्टा',
'exif-gpsspeed-m' => 'माइल प्रति घण्टा',
@@ -2092,7 +2179,7 @@ $1को बन्देजको कारण : "$2" हो',
'unknown_extension_tag' => 'अज्ञात एक्सटेन्सन ट्याग "$1"',
# Special:Version
-'version' => 'संस्करण', # Not used as normal message but as header for the special page itself
+'version' => 'संस्करण',
'version-extensions' => 'स्थापना गरिएका एक्सटेन्सनहरु',
'version-specialpages' => 'विशेष पृष्ठहरू',
'version-parserhooks' => 'पार्सर हुकहरु',
@@ -2105,6 +2192,7 @@ $1को बन्देजको कारण : "$2" हो',
'version-skin-extension-functions' => 'काचुली विस्तार फङ्सनहरु(functions)',
'version-hook-name' => 'हुक नाम',
'version-hook-subscribedby' => 'ग्राह्यता गर्ने',
+'version-version' => '(संस्करण $1)',
'version-license' => 'इजाजतपत्र',
'version-software' => 'स्थापना गरिएको सफ्टवेयर',
'version-software-version' => 'संस्करण',
@@ -2147,4 +2235,8 @@ $1को बन्देजको कारण : "$2" हो',
# Database error messages
'dberr-header' => 'यो विकिमा समस्या छ',
+# HTML forms
+'htmlform-reset' => 'परिवर्तनहरू परित्याग गर्नुहोस्',
+'htmlform-selectorother-other' => 'अन्य',
+
);
diff --git a/languages/messages/MessagesNew.php b/languages/messages/MessagesNew.php
index d51ff14d..64012157 100644
--- a/languages/messages/MessagesNew.php
+++ b/languages/messages/MessagesNew.php
@@ -14,11 +14,9 @@
$namespaceNames = array(
NS_MEDIA => 'माध्यम',
NS_SPECIAL => 'विशेष',
- NS_MAIN => '',
NS_TALK => 'खँलाबँला',
NS_USER => 'छ्येलेमि',
NS_USER_TALK => 'छ्येलेमि_खँलाबँला',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_खँलाबँला',
NS_FILE => 'किपा',
NS_FILE_TALK => 'किपा_खँलाबँला',
@@ -27,7 +25,7 @@ $namespaceNames = array(
NS_HELP => 'ग्वाहालि',
NS_HELP_TALK => 'ग्वाहालि_खँलाबँला',
NS_CATEGORY => 'पुचः',
- NS_CATEGORY_TALK => 'पुचः_खँलाबँला'
+ NS_CATEGORY_TALK => 'पुचः_खँलाबँला',
);
$digitTransformTable = array(
@@ -152,7 +150,7 @@ $messages = array(
'category-media-header' => 'पुचः "$1"य् दुगु मिडिया',
'category-empty' => "''थ्व पुचले आःईले पौ वा मिदिया मदु।''",
'hidden-categories' => '{{PLURAL:$1|गुप्त पुचः|गुप्त पुचःतः}}',
-'hidden-category-category' => 'गुप्त पुचःतः', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'गुप्त पुचःतः',
'category-subcat-count' => '{{PLURAL:$2|थ्व पुचले बियातःगु उपपुचः जक्क दु।|थ्व पुचले $2 सकलय् बियातःगु {{PLURAL:$1|उपपुचः|$1 उपपुचःतः}} दु।}}',
'category-subcat-count-limited' => 'थ्व पुचले बियातःगु {{PLURAL:$1|उपपुचः|$1 उपपुचःत}} दु।',
'category-article-count' => '{{PLURAL:$2|थ्व पुचले क्वे बियातःगु पौ दु।|$2 सकलय् थ्व बियातःगु {{PLURAL:$1|पौ|$1 पौस}} थ्व पुचले दु।}}',
@@ -161,8 +159,6 @@ $messages = array(
'about' => 'विषयक',
'article' => 'कण्टेण्ट पौ',
-'qbfind' => 'मालादिसँ',
-'qbedit' => 'सम्पादन',
'moredotdotdot' => 'अप्व॰॰॰',
'mypage' => 'जिगु पौ',
'mytalk' => 'जिगु खं',
@@ -170,8 +166,11 @@ $messages = array(
'navigation' => 'परिवहन',
'and' => '&#32;व',
-# Metadata in edit box
-'metadata_help' => 'मेटाडेटा:',
+# Cologne Blue skin
+'qbfind' => 'मालादिसँ',
+'qbedit' => 'सम्पादन',
+'faq' => 'आपालं न्यनिगु न्ह्यसः (FAQ)',
+'faqpage' => 'Project:आपालं न्यनिगु न्ह्यसःत (FAQ)',
'returnto' => '$1य् लिहाँझासँ।',
'tagline' => '{{SITENAME}}नं',
@@ -203,7 +202,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}}या बारेय्',
'aboutpage' => 'Project:बारेय्',
'copyright' => 'कण्टेण्ट $1 कथं उपलब्ध दु।',
-'copyrightpagename' => '{{SITENAME}} लेखाधिकार',
'copyrightpage' => '{{ns:project}}:लेखाधिकार',
'currentevents' => 'जुयाच्वँगु घटना',
'currentevents-url' => 'Project:जुयाच्वँगु घटना',
@@ -211,8 +209,6 @@ $messages = array(
'disclaimerpage' => 'Project:साधारण डिस्क्लेमर्स',
'edithelp' => 'सम्पादन ग्वहालि',
'edithelppage' => 'Help:सम्पादन',
-'faq' => 'आपालं न्यनिगु न्ह्यसः (FAQ)',
-'faqpage' => 'Project:आपालं न्यनिगु न्ह्यसःत (FAQ)',
'helppage' => 'Help:धलःपौ',
'mainpage' => 'मू पौ',
'mainpage-description' => 'मू पौ',
@@ -267,10 +263,6 @@ $messages = array(
"<tt>$2</tt>" फंक्सनया
<blockquote><tt>$1</tt></blockquote> ख।
MySQL नं इरर "<tt>$3: $4</tt>" क्यंगु दु।',
-'noconnect' => 'माफ यानादिसँ! थ्व विकिइ छुं प्राविधिक कठिनाइ वयाच्वँगु दु व डेटाबेस सर्भरयात स्वापू तये मफयाच्वँगु दु।<br />
-$1',
-'nodb' => 'डेटाबेस $1यात ल्यये मफुत।',
-'cachederror' => 'थ्व पौ अनुरोधित पौया क्यासे कपि ख व अप-टु-डेट मजुइफु।',
'laggedslavemode' => 'चेतावनी: पतिइ न्हुगु अपदेत मदेफु ।',
'readonly' => 'देताबेस संरक्षित',
'enterlockreason' => 'पौ कुनातयेगुया निंतिं कारण बियादिसँ, नापं पौ गब्ले चायेकिगु जुइफु उकिया अनुमान नं बियादिसँ',
@@ -284,7 +276,6 @@ $1',
'welcomecreation' => '== लसकुस, $1! ==
छिगु खाता चायेके धुंकल।
छिगु [[Special:Preferences|{{SITENAME}} प्राथमिकता]] हिलिगु लुमंकादिसँ।',
-'loginpagetitle' => 'छ्य्‌लामि दुहां झासँ',
'yourname' => 'छ्य्‌लामि नां:',
'yourpassword' => 'दुथखँग्वः (पासवर्द):',
'yourpasswordagain' => 'दुथखँग्वः हानं तियादिसँ:',
@@ -297,11 +288,6 @@ $1',
'nologinlink' => 'खाता न्ह्यथनादिसँ',
'createaccount' => 'खाता चायेकादिसँ',
'gotaccountlink' => 'दुहां झासँ',
-'youremail' => 'इ-मेल:',
-'username' => 'छ्य्‌लामि नां:',
-'yourrealname' => 'वास्तविक नां:',
-'yourlanguage' => 'भाषा:',
-'email' => 'इ-मेल',
'loginsuccesstitle' => 'लग इन सफल जुल',
'accountcreated' => 'खाता न्ह्येथन',
'loginlanguagelabel' => 'भाषा: $1',
@@ -322,11 +308,6 @@ $1',
'revisionasof' => '$1 तक्कया संस्करण',
'previousrevision' => '←पुलांगु संस्करण',
-# Diffs
-'diff-i' => "'''ब्यक्वःगु'''",
-'diff-b' => "'''गाढा'''",
-'diff-strong' => "'''कडा'''",
-
# Search results
'searchhelp-url' => 'Help:धलःपौ',
'searchrelated' => 'स्वापू दुःगु',
@@ -336,11 +317,16 @@ $1',
# Preferences page
'mypreferences' => 'जिगु प्राथमिकता',
'changepassword' => 'पासवर्द हिलादिसँ',
-'math' => 'गणित',
-'datetime' => 'दिं व ई',
+'prefs-math' => 'गणित',
+'prefs-datetime' => 'दिं व ई',
'prefs-personal' => 'छ्य्‌लामि प्रोफाइल',
'prefs-rc' => 'न्हुगु हिलेज्या',
'saveprefs' => 'स्वथनादिसँ',
+'youremail' => 'इ-मेल:',
+'username' => 'छ्य्‌लामि नां:',
+'yourrealname' => 'वास्तविक नां:',
+'yourlanguage' => 'भाषा:',
+'email' => 'इ-मेल',
# User rights
'userrights-user-editname' => 'छपू छ्य्‌लामि नां तयादिसँ:',
@@ -357,7 +343,8 @@ $1',
'upload' => 'संचिका चढ़ाएँ',
# File description page
-'filehist-user' => 'छ्य्‌लामि',
+'file-anchor-link' => 'फाइल',
+'filehist-user' => 'छ्य्‌लामि',
# Random page
'randompage' => 'छगु च्वसुइ येंकादिसं',
@@ -392,6 +379,8 @@ $1',
# Contributions
'mycontris' => 'जिगु योगदान',
+'sp-contributions-talk' => 'खँल्हाबँल्हा',
+
# What links here
'whatlinkshere' => 'थन छु स्वाई',
diff --git a/languages/messages/MessagesNiu.php b/languages/messages/MessagesNiu.php
index cbaab53c..607d2e00 100644
--- a/languages/messages/MessagesNiu.php
+++ b/languages/messages/MessagesNiu.php
@@ -47,12 +47,14 @@ $messages = array(
'december-gen' => 'Tesemo',
'may' => 'Me',
-'article' => 'Tohi Tala',
-'cancel' => 'Tiaki',
+'article' => 'Tohi Tala',
+'cancel' => 'Tiaki',
+'mytalk' => 'Haaku tutala',
+'navigation' => 'Navikati',
+
+# Cologne Blue skin
'qbedit' => 'Fakahakohako',
'qbspecialpages' => 'Tau Lau Mahuiga',
-'mytalk' => 'Haaku tutala',
-'navigation' => 'Navikati',
'help' => 'Lagomatai',
'search' => 'Kumi',
@@ -108,9 +110,6 @@ Ua nimo ke hiki e haau tau manako {{SITENAME}}.',
'notloggedin' => 'Ai la hu ki loto',
'createaccount' => 'Talaga e poko',
'gotaccountlink' => 'Hu ki loto',
-'youremail' => 'Meli hila:',
-'username' => 'Matahigoa he tagata:',
-'email' => 'Meli hila',
# Edit pages
'summary' => 'Fakakatoakatoa:',
@@ -131,13 +130,18 @@ Ua nimo ke hiki e haau tau manako {{SITENAME}}.',
'prefsnologin' => 'Ai la hu ki loto',
'prefs-rc' => 'Hikihikiaga mogoia',
'searchresultshead' => 'Kumi',
+'youremail' => 'Meli hila:',
+'username' => 'Matahigoa he tagata:',
+'email' => 'Meli hila',
# Recent changes
'recentchanges' => 'Hikihikiaga mogoia',
'hist' => 'Liu onoono atu ki tua',
# Recent changes linked
-'recentchangeslinked' => 'Falu hikihiki',
+'recentchangeslinked' => 'Falu hikihiki',
+'recentchangeslinked-feed' => 'Falu hikihiki',
+'recentchangeslinked-toolbox' => 'Falu hikihiki',
# Upload
'upload' => 'Fakafano e faila',
@@ -156,8 +160,8 @@ Ua nimo ke hiki e haau tau manako {{SITENAME}}.',
# Random page
'randompage' => 'Lau fifili',
-'brokenredirects-edit' => '(fakahakohako)',
-'brokenredirects-delete' => '(tamate)',
+'brokenredirects-edit' => 'fakahakohako',
+'brokenredirects-delete' => 'tamate',
# Miscellaneous special pages
'newpages-username' => 'Matahigoa he tagata:',
diff --git a/languages/messages/MessagesNl.php b/languages/messages/MessagesNl.php
index 2034c336..df8fe388 100644
--- a/languages/messages/MessagesNl.php
+++ b/languages/messages/MessagesNl.php
@@ -16,10 +16,12 @@
* @author Galwaygirl
* @author GerardM
* @author Hamaryns
+ * @author Jens Liebenau
* @author Krinkle
* @author McDutchie
* @author Multichill
* @author Mwpnl
+ * @author Naudefj
* @author Niels
* @author SPQRobin
* @author Servien
@@ -84,7 +86,8 @@ $magicWords = array(
'toc' => array( '0', '__INHOUD__', '__TOC__' ),
'noeditsection' => array( '0', '__NIETBEWERKBARESECTIE__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__GEENKOP__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'HUIDIGEMAAND', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'HUIDIGEMAAND1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'HUIDIGEMAANDGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
@@ -94,7 +97,8 @@ $magicWords = array(
'currentyear' => array( '1', 'HUIDIGJAAR', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'HUIDIGETIJD', 'CURRENTTIME' ),
'currenthour' => array( '1', 'HUIDIGUUR', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOKALEMAAND2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALEMAAND1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'PLAATSELIJKEMAANDNAAM', 'LOKALEMAANDNAAM', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'PLAATSELIJKEMAANDNAAMGEN', 'LOKALEMAANDNAAMGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'PLAATSELIJKEMAANDAFK', 'LOKALEMAANDAFK', 'LOCALMONTHABBREV' ),
@@ -132,6 +136,8 @@ $magicWords = array(
'msg' => array( '0', 'BERICHT:', 'MSG:' ),
'subst' => array( '0', 'VERV:', 'SUBST:' ),
'msgnw' => array( '0', 'BERICHTNW', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'miniatuur', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'miniatuur=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'rechts', 'right' ),
'img_left' => array( '1', 'links', 'left' ),
'img_none' => array( '1', 'geen', 'none' ),
@@ -147,15 +153,17 @@ $magicWords = array(
'img_middle' => array( '1', 'midden', 'middle' ),
'img_bottom' => array( '1', 'beneden', 'bottom' ),
'img_text_bottom' => array( '1', 'tekst-beneden', 'text-bottom' ),
+ 'img_link' => array( '1', 'verwijzing=$1', 'link=$1' ),
'sitename' => array( '1', 'SITENAAM', 'SITENAME' ),
'ns' => array( '0', 'NR:', 'NS:' ),
'localurl' => array( '0', 'LOKALEURL', 'LOCALURL:' ),
'localurle' => array( '0', 'LOKALEURLE', 'LOCALURLE:' ),
'servername' => array( '0', 'SERVERNAAM', 'SERVERNAME' ),
'scriptpath' => array( '0', 'SCRIPTPAD', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'STIJLPAD', 'STYLEPATH' ),
'grammar' => array( '0', 'GRAMMATICA:', 'GRAMMAR:' ),
'gender' => array( '0', 'GESLACHT:', 'GENDER:' ),
- 'notitleconvert' => array( '0', '__GEENTITELCONVERSIE__', '__GEENTC__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'notitleconvert' => array( '0', '__GEENPAGINANAAMCONVERSIE__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'HUIDIGEWEEK', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'HUIDIGEDVDW', 'CURRENTDOW' ),
@@ -167,6 +175,7 @@ $magicWords = array(
'revisionmonth' => array( '1', 'VERSIEMAAND', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'VERSIEJAAR', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
'plural' => array( '0', 'MEERVOUD:', 'PLURAL:' ),
'fullurl' => array( '0', 'VOLLEDIGEURL', 'FULLURL:' ),
'fullurle' => array( '0', 'VOLLEDIGEURLE', 'FULLURLE:' ),
@@ -176,7 +185,9 @@ $magicWords = array(
'uc' => array( '0', 'HL:', 'UC:' ),
'raw' => array( '0', 'RAUW:', 'RUW:', 'RAW:' ),
'displaytitle' => array( '1', 'TOONTITEL', 'TITELTONEN', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'V', 'R' ),
'newsectionlink' => array( '1', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__GEENNIEUWKOPJEVERWIJZING__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'HUIDIGEVERSIE', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'URLCODEREN', 'CODEERURL', 'URLENCODE:' ),
'anchorencode' => array( '0', 'ANKERCODEREN', 'CODEERANKER', 'ANCHORENCODE' ),
@@ -201,6 +212,7 @@ $magicWords = array(
'numberingroup' => array( '1', 'AANTALINGROEP', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__STATISCHEDOORVERWIJZING__', '__STATISCHEREDIRECT__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'BEVEILIGINGSNIVEAU', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'datumopmaak', 'formatdate', 'dateformat' ),
);
$specialPageAliases = array(
@@ -291,6 +303,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'VerwijzingenZoeken', 'LinksZoeken' ),
'DeletedContributions' => array( 'VerwijderdeBijdragen' ),
'Tags' => array( 'Labels' ),
+ 'Activeusers' => array( 'ActieveGebruikers' ),
);
$linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu';
@@ -326,6 +339,7 @@ $messages = array(
'tog-enotifminoredits' => 'Mij e-mailen bij kleine bewerkingen van pagina’s op mijn volglijst',
'tog-enotifrevealaddr' => 'Mijn e-mailadres weergeven in e-mailberichten',
'tog-shownumberswatching' => 'Het aantal gebruikers weergeven dat deze pagina volgt',
+'tog-oldsig' => 'Voorvertoning van de bestaande ondertekening:',
'tog-fancysig' => 'Als wikitekst behandelen (zonder automatische verwijzing)',
'tog-externaleditor' => 'Standaard een externe tekstbewerker gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig)',
'tog-externaldiff' => 'Standaard een extern vergelijkingsprogramma gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig)',
@@ -349,6 +363,13 @@ $messages = array(
'underline-never' => 'Nooit',
'underline-default' => 'Webbrowser-standaard',
+# Font style option in Special:Preferences
+'editfont-style' => 'Lettertypestijl bewerkingsvenster:',
+'editfont-default' => 'Webbrowser-standaard',
+'editfont-monospace' => 'Monospaced lettertype',
+'editfont-sansserif' => 'Sans-serif lettertype',
+'editfont-serif' => 'Serif lettertype',
+
# Dates
'sunday' => 'zondag',
'monday' => 'maandag',
@@ -408,7 +429,7 @@ $messages = array(
'category-media-header' => 'Media in categorie “$1”',
'category-empty' => "''Deze categorie bevat geen pagina’s of media.''",
'hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}}',
-'hidden-category-category' => 'Verborgen categorieën', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verborgen categorieën',
'category-subcat-count' => '{{PLURAL:$2|Deze categorie bevat de volgende ondercategorie.|Deze categorie bevat de volgende {{PLURAL:$1|ondercategorie|$1 ondercategorieën}}, van een totaal van $2.}}',
'category-subcat-count-limited' => 'Deze categorie bevat de volgende {{PLURAL:$1|ondercategorie|$1 ondercategorieën}}.',
'category-article-count' => '{{PLURAL:$2|Deze categorie bevat de volgende pagina.|Deze categorie bevat de volgende {{PLURAL:$1|pagina|$1 pagina’s}}, van in totaal $2.}}',
@@ -416,6 +437,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Deze categorie bevat het volgende bestand.|Deze categorie bevat {{PLURAL:$1|het volgende bestand|de volgende $1 bestanden}}, van in totaal $2.}}',
'category-file-count-limited' => 'Deze categorie bevat {{PLURAL:$1|het volgende bestand|de volgende $1 bestanden}}.',
'listingcontinuesabbrev' => 'meer',
+'index-category' => "Te indexeren pagina's",
+'noindex-category' => "Niet te indexeren pagina's",
'mainpagetext' => "'''De installatie van MediaWiki is geslaagd.'''",
'mainpagedocfooter' => 'Raadpleeg de [http://meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handleiding] voor informatie over het gebruik van de wikisoftware.
@@ -426,10 +449,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Veelgestelde vragen (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]',
-'about' => 'Info',
-'article' => 'Pagina',
-'newwindow' => '(opent in een nieuw venster)',
-'cancel' => 'Annuleren',
+'about' => 'Info',
+'article' => 'Pagina',
+'newwindow' => '(opent in een nieuw venster)',
+'cancel' => 'Annuleren',
+'moredotdotdot' => 'Meer…',
+'mypage' => 'Mijn gebruikerspagina',
+'mytalk' => 'Mijn overleg',
+'anontalk' => 'Overlegpagina voor dit IP-adres',
+'navigation' => 'Navigatie',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Zoeken',
'qbbrowse' => 'Bladeren',
'qbedit' => 'Bewerken',
@@ -437,15 +468,35 @@ $messages = array(
'qbpageinfo' => 'Pagina-informatie',
'qbmyoptions' => "Mijn pagina's",
'qbspecialpages' => 'Speciale pagina’s',
-'moredotdotdot' => 'Meer…',
-'mypage' => 'Mijn gebruikerspagina',
-'mytalk' => 'Mijn overleg',
-'anontalk' => 'Overlegpagina voor dit IP-adres',
-'navigation' => 'Navigatie',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (veelgestelde vragen)',
+'faqpage' => 'Project:Veelgestelde vragen',
+
+# Vector skin
+'vector-action-addsection' => 'Kopje toevoegen',
+'vector-action-delete' => 'Verwijderen',
+'vector-action-move' => 'Hernoemen',
+'vector-action-protect' => 'Beveiligen',
+'vector-action-undelete' => 'Terugplaatsen',
+'vector-action-unprotect' => 'Beveiliging opheffen',
+'vector-namespace-category' => 'Categorie',
+'vector-namespace-help' => 'Hulppagina',
+'vector-namespace-image' => 'Bestand',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'Mediapagina',
+'vector-namespace-mediawiki' => 'Bericht',
+'vector-namespace-project' => 'Projectpagina',
+'vector-namespace-special' => 'Speciale pagina',
+'vector-namespace-talk' => 'Overleg',
+'vector-namespace-template' => 'Sjabloon',
+'vector-namespace-user' => 'Gebruikerspagina',
+'vector-view-create' => 'Aanmaken',
+'vector-view-edit' => 'Bewerken',
+'vector-view-history' => 'Geschiedenis bekijken',
+'vector-view-view' => 'Lezen',
+'vector-view-viewsource' => 'Brontekst bekijken',
+'actions' => 'Handelingen',
+'namespaces' => 'Naamruimten',
+'variants' => 'Varianten',
'errorpagetitle' => 'Fout',
'returnto' => 'Ga naar $1.',
@@ -495,18 +546,22 @@ $messages = array(
'otherlanguages' => 'In andere talen',
'redirectedfrom' => '(Doorverwezen vanaf $1)',
'redirectpagesub' => 'Doorverwijspagina',
-'lastmodifiedat' => 'Deze pagina is het laatst bewerkt op $1 om $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Deze pagina is het laatst bewerkt op $1 om $2.',
'viewcount' => 'Deze pagina is {{PLURAL:$1|1 maal|$1 maal}} bekeken.',
'protectedpage' => 'Beveiligde pagina',
'jumpto' => 'Ga naar:',
'jumptonavigation' => 'navigatie',
'jumptosearch' => 'zoeken',
+'view-pool-error' => 'Sorry, de servers zijn op het moment overbelast.
+Te veel gebruikers proberen deze pagina te bekijken.
+Wacht alstublieft even voordat u opnieuw toegang probeert te krijgen tot deze pagina.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Over {{SITENAME}}',
'aboutpage' => 'Project:Info',
'copyright' => 'De inhoud is beschikbaar onder de $1.',
-'copyrightpagename' => 'Auteursrechten {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Auteursrechten',
'currentevents' => 'In het nieuws',
'currentevents-url' => 'Project:In het nieuws',
@@ -514,8 +569,6 @@ $messages = array(
'disclaimerpage' => 'Project:Algemeen voorbehoud',
'edithelp' => 'Hulp bij bewerken',
'edithelppage' => 'Help:Bewerken',
-'faq' => 'FAQ (veelgestelde vragen)',
-'faqpage' => 'Project:Veelgestelde vragen',
'helppage' => 'Help:Inhoud',
'mainpage' => 'Hoofdpagina',
'mainpage-description' => 'Hoofdpagina',
@@ -596,10 +649,6 @@ Het laatste verzoek aan de database was:
“$1”
vanuit de functie “$2”.
De database gaf de volgende foutmelding: “$3: $4”',
-'noconnect' => 'De wiki ondervindt technische moeilijkheden en kan de database niet bereiken.<br />
-$1',
-'nodb' => 'Kon database $1 niet selecteren',
-'cachederror' => 'Deze pagina is een kopie uit de cache en kan verouderd zijn.',
'laggedslavemode' => 'Waarschuwing: de pagina zou verouderd kunnen zijn.',
'readonly' => 'Database geblokkeerd',
'enterlockreason' => 'Geef een reden op voor de blokkade en geef op wanneer die waarschijnlijk wordt opgeheven',
@@ -618,6 +667,8 @@ Maak hiervan melding bij een [[Special:ListUsers/sysop|systeembeheerder]] van {{
'readonly_lag' => 'De database is automatisch vergrendeld terwijl de ondergeschikte databaseservers synchroniseren met de hoofdserver.',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
+'fileappenderrorread' => '"$1" kon niet gelezen worden tijdens het toevoegen.',
+'fileappenderror' => 'Het was niet mogelijk "$1" toe te voegen aan "$2".',
'filecopyerror' => 'Bestand “$1” kon niet naar “$2” gekopieerd worden.',
'filerenameerror' => '“$1” kon niet tot “$2” hernoemd worden.',
'filedeleteerror' => 'Bestand “$1” kon niet verwijderd worden.',
@@ -627,7 +678,7 @@ Maak hiervan melding bij een [[Special:ListUsers/sysop|systeembeheerder]] van {{
'unexpected' => 'Onverwachte waarde: "$1"="$2".',
'formerror' => 'Fout: formulier kon niet verzonden worden',
'badarticleerror' => 'Deze handeling kan niet op deze pagina worden uitgevoerd.',
-'cannotdelete' => 'De pagina of het bestand kon niet verwijderd worden.
+'cannotdelete' => 'De pagina of het bestand "$1" kon niet verwijderd worden.
Mogelijk is deze al door iemand anders verwijderd.',
'badtitle' => 'Ongeldige paginanaam',
'badtitletext' => 'De naam van de opgevraagde pagina was ongeldig, leeg of bevatte een verkeerde intertaal- of interwikinaamverwijzing.
@@ -667,7 +718,6 @@ De gegeven reden is ''$2''.",
'virus-unknownscanner' => 'onbekend antivirus:',
# Login and logout pages
-'logouttitle' => 'Gebruiker afmelden',
'logouttext' => "'''U bent nu afgemeld.'''
U kunt {{SITENAME}} nu anoniem gebruiken of weer [[Special:UserLogin|aanmelden]] als dezelfde of een andere gebruiker.
@@ -675,7 +725,6 @@ Mogelijk worden nog een aantal pagina's weergegeven alsof u aangemeld bent totda
'welcomecreation' => '== Welkom, $1! ==
Uw gebruiker is geregistreerd.
Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te passen.',
-'loginpagetitle' => 'Gebruikersnaam',
'yourname' => 'Gebruikersnaam:',
'yourpassword' => 'Wachtwoord:',
'yourpasswordagain' => 'Geef uw wachtwoord opnieuw in:',
@@ -686,6 +735,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
'nav-login-createaccount' => 'Aanmelden / registreren',
'loginprompt' => 'U moet cookies ingeschakeld hebben om u te kunnen aanmelden bij {{SITENAME}}.',
'userlogin' => 'Aanmelden / registreren',
+'userloginnocreate' => 'Aanmelden',
'logout' => 'Afmelden',
'userlogout' => 'Afmelden',
'notloggedin' => 'Niet aangemeld',
@@ -698,29 +748,8 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
'badretype' => 'De ingevoerde wachtwoorden verschillen van elkaar.',
'userexists' => 'De gekozen gebruikersnaam is al in gebruik.
Kies een andere naam.',
-'youremail' => 'Uw e-mailadres:',
-'username' => 'Gebruikersnaam:',
-'uid' => 'Gebruikersnummer:',
-'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepen}}:',
-'yourrealname' => 'Uw echte naam:',
-'yourlanguage' => 'Taal:',
-'yourvariant' => 'Taalvariant:',
-'yournick' => 'Tekst voor ondertekening:',
-'badsig' => 'Ongeldige ondertekening; controleer de HTML-tags.',
-'badsiglength' => 'Uw ondertekening is te lang.
-Deze moet minder dan $1 {{PLURAL:$1|karakters|karakters}} bevatten.',
-'yourgender' => 'Geslacht:',
-'gender-unknown' => 'Niet aangegeven',
-'gender-male' => 'Man',
-'gender-female' => 'Vrouw',
-'prefs-help-gender' => 'Optioneel: dit wordt gebruikt om gebruikers correct aan te spreken in de software.
-Deze informatie is zichtbaar voor andere gebruikers.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Echte naam is optioneel, als u deze opgeeft kan deze naam gebruikt worden om u erkenning te geven voor uw werk.',
'loginerror' => 'Aanmeldfout',
-'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om u uw wachtwoord te e-mailen als u het bent vergeten.
-U kunt ook anderen in staat stellen per e-mail contact met u op te nemen via een verwijzing op uw gebruikers- en overlegpagina zonder dat u uw identiteit prijsgeeft.',
-'prefs-help-email-required' => 'Hiervoor is een e-mailadres nodig.',
+'createaccounterror' => 'Het was niet mogelijk de gebruiker aan te maken: $1',
'nocookiesnew' => 'De gebruiker is geregistreerd, maar niet aangemeld.
{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.
Schakel die in en meld daarna aan met uw nieuwe gebruikersnaam en wachtwoord.',
@@ -736,12 +765,14 @@ Controleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuwe gebruik
'nosuchusershort' => 'De gebruiker "<nowiki>$1</nowiki>" bestaat niet.
Controleer de schrijfwijze.',
'nouserspecified' => 'U dient een gebruikersnaam op te geven.',
+'login-userblocked' => 'Deze gebruiker is geblokkeerd.
+Aanmelden is niet mogelijk.',
'wrongpassword' => 'Het ingegeven wachtwoord is onjuist.
Probeer het opnieuw.',
'wrongpasswordempty' => 'Het opgegeven wachtwoord was leeg.
Probeer het opnieuw.',
-'passwordtooshort' => 'Uw wachtwoord is te kort.
-Het dient minstens uit {{PLURAL:$1|1 teken|$1 tekens}} bestaan.',
+'passwordtooshort' => 'Wachtwoorden moeten uit minstens {{PLURAL:$1|$1 teken|$1 tekens}} bestaan.',
+'password-name-match' => 'Uw wachtwoord en uw gebruikersnaam mogen niet overeenkomen.',
'mailmypassword' => 'Nieuw wachtwoord e-mailen',
'passwordremindertitle' => 'Nieuw tijdelijk wachtwoord voor {{SITENAME}}',
'passwordremindertext' => 'Iemand, waarschijnlijk u, heeft vanaf IP-adres $1 een verzoek
@@ -755,6 +786,7 @@ Als iemand anders dan u dit verzoek heeft gedaan of als u zich inmiddels het
wachtwoord herinnert en het niet langer wilt wijzigen, negeer dit bericht
dan en blijf uw bestaande wachtwoord gebruiken.',
'noemail' => 'Er is geen e-mailadres bekend voor gebruiker "$1".',
+'noemailcreate' => 'U moet een geldig e-mailadres opgeven',
'passwordsent' => 'Het wachtwoord is verzonden naar het e-mailadres voor "$1".
Meld u aan nadat u het hebt ontvangen.',
'blocked-mailpassword' => 'Uw IP-adres is geblokkeerd voor het maken van wijzigingen.
@@ -782,9 +814,11 @@ Het wachtwoord voor "$2" is "$3".
Meld u aan en wijzig uw wachtwoord.
Negeer dit bericht als deze gebruiker zonder uw medeweten is aangemaakt.',
+'usernamehasherror' => 'Een gebruikersnaam mag het karakter hekje ("#") niet bevatten.',
'login-throttled' => 'U hebt recentelijk te vaak geprobeerd aan te melden met een onjuist wachtwoord.
Wacht even voordat u het opnieuw probeert.',
'loginlanguagelabel' => 'Taal: $1',
+'suspicious-userlogout' => 'Uw verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.',
# Password reset dialog
'resetpass' => 'Wachtwoord wijzigen',
@@ -798,18 +832,13 @@ Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
'resetpass_submit' => 'Wachtwoord instellen en aanmelden',
'resetpass_success' => 'Uw wachtwoord is gewijzigd.
Bezig met aanmelden…',
-'resetpass_bad_temporary' => 'Ongeldig tijdelijk wachtwoord.
-U hebt uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.',
'resetpass_forbidden' => 'Wachtwoorden kunnen niet gewijzigd worden',
'resetpass-no-info' => 'U dient aangemeld zijn voordat u deze pagina kunt gebruiken.',
'resetpass-submit-loggedin' => 'Wachtwoord wijzigen',
+'resetpass-submit-cancel' => 'Annuleren',
'resetpass-wrong-oldpass' => 'Het huidige of tijdelijke wachtwoord is ongeldig.
Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.',
'resetpass-temp-password' => 'Tijdelijk wachtwoord:',
-'resetpass-log' => 'Wachtwoordherinstellingenlogboek',
-'resetpass-logtext' => 'Deze pagina bevat een logboek met gebruikers waarvan het wachtwoord opnieuw is ingesteld door een beheerder.',
-'resetpass-logentry' => 'heeft het wachtwoord voor $1 gewijzigd',
-'resetpass-comment' => 'Reden voor opnieuw instellen van het wachtwoord',
# Edit page toolbar
'bold_sample' => 'Vetgedrukte tekst',
@@ -886,7 +915,6 @@ Vermeld alle bovenstaande gegevens als u ergens op deze blokkade reageert.',
'blockededitsource' => "Hieronder staat de tekst van '''uw bewerkingen''' aan '''$1''':",
'whitelistedittitle' => 'Voor bewerken is aanmelden verplicht',
'whitelistedittext' => "U moet $1 om pagina's te bewerken.",
-'confirmedittitle' => 'E-mailbevestiging is verplicht voordat u kunt bewerken',
'confirmedittext' => 'U moet uw e-mailadres bevestigen voor u kunt bewerken.
Voer uw e-mailadres in en bevestig het via [[Special:Preferences|uw voorkeuren]].',
'nosuchsectiontitle' => 'Deze subkop bestaat niet',
@@ -910,12 +938,19 @@ Mogelijk ontvangt u hier berichten die niet voor u bedoeld zijn.
Als u dat wilt voorkomen, [[Special:UserLogin/signup|registreer u]] of [[Special:UserLogin|meld u aan]] om verwarring met andere anonieme gebruikers te voorkomen.''",
'noarticletext' => 'Deze pagina bevat geen tekst.
U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken] of [{{fullurl:{{FULLPAGENAME}}|action=edit}} deze pagina bewerken]</span>.',
+'noarticletext-nopermission' => 'Deze pagina bevat geen tekst.
+U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s of
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>.',
'userpage-userdoesnotexist' => 'U bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "$1").
Controleer of u deze pagina wel wilt aanmaken/bewerken.',
+'userpage-userdoesnotexist-view' => 'De gebruiker "$1" is niet geregistreerd.',
+'blocked-notice-logextract' => 'Deze gebruiker is op het moment geblokkeerd.
+De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:',
'clearyourcache' => "'''Let op! Nadat u de wijzigingen hebt opgeslagen is het wellicht nodig uw browsercache te legen.'''
'''Mozilla / Firefox / Safari:''' houd ''Shift'' ingedrukt terwijl u op ''Huidige pagina vernieuwen'' klikt of typ ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' op eenMacintosh); '''Konqueror: '''klik ''Reload'' of typ ''F5;'' '''Opera:''' leeg uw cache in ''Extra → Voorkeuren;'' '''Internet Explorer:''' houd ''Ctrl'' ingedrukt terwijl u op ''Vernieuwen'' klikt of type ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tip:''' Gebruik de knop 'Bewerking ter controle bekijken' om uw nieuwe CSS/JS te testen alvorens op te slaan.",
+'usercssyoucanpreview' => "'''Tip:''' Gebruik de knop \"{{int:showpreview}}\" om uw nieuwe CSS te testen alvorens op te slaan.",
+'userjsyoucanpreview' => "'''Tip:''' Gebruik de knop \"{{int:showpreview}}\" om uw nieuwe JavaScript te testen alvorens op te slaan.",
'usercsspreview' => "'''Dit is alleen een voorvertoning van uw persoonlijke CSS.
Deze is nog niet opgeslagen!'''",
'userjspreview' => "'''Let op: u test nu uw persoonlijke JavaScript.'''
@@ -971,13 +1006,16 @@ Opslaan is niet mogelijk.'''",
Het is misschien verstandig om uw tekst tijdelijk in een tekstbestand op te slaan om dit te bewaren voor wanneer de blokkering van de database opgeheven is.'''
Een beheerder heeft de database geblokkeerd om de volgende reden: $1",
-'protectedpagewarning' => "'''WAARSCHUWING! Deze beveiligde pagina kan alleen door gebruikers met beheerdersrechten bewerkt worden.'''",
-'semiprotectedpagewarning' => "'''Let op:''' deze pagina is beveiligd en kan alleen door geregistreerde gebruikers bewerkt worden.",
+'protectedpagewarning' => "'''Waarschuwing: deze beveiligde pagina kan alleen door gebruikers met beheerdersrechten bewerkt worden.'''
+De laatste logboekregel staat hieronder:",
+'semiprotectedpagewarning' => "'''Let op:''' deze pagina is beveiligd en kan alleen door geregistreerde gebruikers bewerkt worden.
+De laatste logboekregel staat hieronder:",
'cascadeprotectedwarning' => "'''Waarschuwing:''' Deze pagina is beveiligd en kan alleen door beheerders bewerkt worden, omdat deze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:",
-'titleprotectedwarning' => "'''WAARSCHUWING: Deze pagina is beveiligd. Er zijn [[Special:ListGroupRights|speciale rechten]] nodig om de pagina aan te kunnen maken.'''",
-'templatesused' => 'Op deze pagina gebruikte sjablonen:',
-'templatesusedpreview' => 'Sjablonen gebruikt in deze voorvertoning:',
-'templatesusedsection' => 'Sjablonen die gebruikt worden in deze subkop:',
+'titleprotectedwarning' => "'''Waarschuwing: Deze pagina is beveiligd. Er zijn [[Special:ListGroupRights|speciale rechten]] nodig om de pagina aan te kunnen maken.'''
+De laatste logboekregel staat hieronder:",
+'templatesused' => 'Op deze pagina {{PLURAL:$1|gebruikt sjabloon|gebruikte sjablonen}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Sjabloon|Sjablonen}} gebruikt in deze voorvertoning:',
+'templatesusedsection' => 'In dit subkopje {{PLURAL:$1|wordt het volgende sjabloon|worden de volgende sjablonen}} gebruikt:',
'template-protected' => '(beveiligd)',
'template-semiprotected' => '(semibeveiligd)',
'hiddencategories' => 'Deze pagina valt in de volgende verborgen {{PLURAL:$1|categorie|categorieën}}:',
@@ -986,16 +1024,18 @@ Een beheerder heeft de database geblokkeerd om de volgende reden: $1",
'nocreatetext' => "{{SITENAME}} heeft de mogelijkheid om nieuwe pagina's te maken beperkt.
U kunt reeds bestaande pagina's wijzigen of u kunt [[Special:UserLogin|zich aanmelden of registreren]].",
'nocreate-loggedin' => "U hebt geen rechten om nieuwe pagina's te maken.",
+'sectioneditnotsupported-title' => 'Het is niet mogelijk om paragrafen te bewerken',
+'sectioneditnotsupported-text' => 'Het is op deze pagina niet mogelijk om paragrafen te bewerken.',
'permissionserrors' => 'Fouten in rechten',
'permissionserrorstext' => 'U hebt geen rechten om dit te doen om de volgende {{PLURAL:$1|reden|redenen}}:',
'permissionserrorstext-withaction' => 'U hebt geen rechten om $2 om de volgende {{PLURAL:$1|reden|redenen}}:',
-'recreate-deleted-warn' => "'''Waarschuwing: u bent bezig met het aanmaken van een pagina die in het verleden verwijderd is.'''
+'recreate-moveddeleted-warn' => "'''Waarschuwing: u bent bezig met het aanmaken van een pagina die in het verleden verwijderd is.'''
Overweeg of het terecht is dat u verder werkt aan deze pagina.
-Voor uw gemak staat hieronder het verwijderingslogboek voor deze pagina:",
-'deleted-notice' => 'Deze pagina is verwijderd.
-Ter informatie wordt het verwijderingslogboek van deze pagina hieronder weergegeven.',
-'deletelog-fulllog' => 'Volledige logboek bekijken',
+Voor uw gemak staan hieronder het verwijderingslogboek en het hernoemingslogboek voor deze pagina:",
+'moveddeleted-notice' => 'Deze pagina is verwijderd.
+Ter informatie worden het verwijderingslogboek en het hernoemingslogboek van deze pagina hieronder weergegeven.',
+'log-fulllog' => 'Het volledige logboek bekijken',
'edit-hook-aborted' => 'De bewerking is afgebroken door een hook.
Er is geen toelichting beschikbaar.',
'edit-gone-missing' => 'De pagina is niet bijgewerkt.
@@ -1018,6 +1058,7 @@ Deze parameters zijn weggelaten.',
'post-expand-template-argument-category' => "Pagina's die missende sjabloonelementen bevatten",
'parser-template-loop-warning' => 'Er is een kringloop in sjablonen geconstateerd: [[$1]]',
'parser-template-recursion-depth-warning' => 'De recursiediepte voor sjablonen is overschreden ($1)',
+'language-converter-depth-warning' => 'De dieptelimiet voor de taalconvertor is overschreden ($1)',
# "Undo" feature
'undo-success' => 'Hieronder staat de tekst waarin de wijziging ongedaan is gemaakt.
@@ -1036,9 +1077,9 @@ De door $3 opgegeven reden is ''$2''",
'viewpagelogs' => 'Logboek voor deze pagina bekijken',
'nohistory' => 'Deze pagina is niet bewerkt.',
'currentrev' => 'Huidige versie',
-'currentrev-asof' => 'Huidige versie per $1',
-'revisionasof' => 'Versie op $1',
-'revision-info' => 'Versie op $1 van $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Huidige versie van $2 om $3',
+'revisionasof' => 'Versie van $2 om $3',
+'revision-info' => 'Versie door $2 op $4 om $5',
'previousrevision' => '← Oudere versie',
'nextrevision' => 'Nieuwere versie →',
'currentrevisionlink' => 'Huidige versie',
@@ -1050,7 +1091,7 @@ De door $3 opgegeven reden is ''$2''",
'histlegend' => 'Selectie voor verschillen: selecteer de te vergelijken versies en toets ENTER of de knop onderaan.<br />
Verklaring afkortingen: (huidig) = verschil met huidige versie, (vorige) = verschil met voorgaande versie, k = kleine wijziging',
'history-fieldset-title' => 'Door geschiedenis bladeren',
-'deletedrev' => '[verwijderd]',
+'history-show-deleted' => 'Alleen verwijderd',
'histfirst' => 'Oudste',
'histlast' => 'Nieuwste',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -1059,71 +1100,116 @@ Verklaring afkortingen: (huidig) = verschil met huidige versie, (vorige) = versc
# Revision feed
'history-feed-title' => 'Bewerkingsoverzicht',
'history-feed-description' => 'Bewerkingsoverzicht voor deze pagina op de wiki',
-'history-feed-item-nocomment' => '$1 op $2', # user at time
+'history-feed-item-nocomment' => '$1 op $3 om $4',
'history-feed-empty' => "De gevraagde pagina bestaat niet.
Wellicht is die verwijderd of hernoemd.
[[Special:Search|Doorzoek de wiki]] voor relevante pagina's.",
# Revision deletion
-'rev-deleted-comment' => '(reden verwijderd)',
-'rev-deleted-user' => '(gebruikersnaam verwijderd)',
-'rev-deleted-event' => '(logboekregel verwijderd)',
-'rev-deleted-text-permission' => "Deze bewerking is '''verwijderd'''.
-Er kunnen details aanwezig zijn in het [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
-'rev-deleted-text-view' => "Deze bewerking is '''verwijderd'''.
+'rev-deleted-comment' => '(reden verwijderd)',
+'rev-deleted-user' => '(gebruikersnaam verwijderd)',
+'rev-deleted-event' => '(logboekregel verwijderd)',
+'rev-deleted-user-contribs' => '[gebruikersnaam of IP-adres verwijderd - bewerking verborgen in bijdragen]',
+'rev-deleted-text-permission' => "Deze bewerking is '''verwijderd'''.
+Er kunnen details aanwezig zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
+'rev-deleted-text-unhide' => "Deze versie van de pagina is '''verwijderd'''.
+Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
+Als beheerder kunt u [$1 deze versie bekijken] als u wilt.",
+'rev-suppressed-text-unhide' => "Deze paginaversie is '''onderdrukt'''.
+Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].
+Als beheerder kunt u [$1 de verschillen bekijken] als u wilt.",
+'rev-deleted-text-view' => "Deze bewerking is '''verwijderd'''.
Als beheerder kunt u deze zien;
-er kunnen details aanwezig zijn in het [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
-'rev-deleted-no-diff' => "U kunt de verschillen niet bekijken omdat een van de versies is '''verwijderd'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwijderlogboek].",
-'rev-deleted-unhide-diff' => "Een van de bewerkingen voor de verschillen die u hebt opgevraagd is '''verwijderd'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwijderlogboek].
+er kunnen details aanwezig zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
+'rev-suppressed-text-view' => "Deze paginaversie is '''onderdrukt'''.
+Als beheerder kunt u deze bekijken;
+achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].",
+'rev-deleted-no-diff' => "U kunt de verschillen niet bekijken, omdat een van de versies is '''verwijderd'''.
+Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
+'rev-suppressed-no-diff' => "U kunt de verschillen niet bekijken, omdat een van de versies is '''verwijderd'''.",
+'rev-deleted-unhide-diff' => "Een van de bewerkingen voor de verschillen die u hebt opgevraagd is '''verwijderd'''.
+Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
Als beheerder kunt u [$1 de verschillen bekijken] als u wilt.",
-'rev-delundel' => 'weergeven/verbergen',
-'revisiondelete' => 'Versies verwijderen/terugplaatsen',
-'revdelete-nooldid-title' => 'Ongeldige doelversie',
-'revdelete-nooldid-text' => 'U hebt geen doelversie(s) voor deze handeling opgegeven, de aangegeven versie bestaat niet of u probeert de laatste versie te verbergen.',
-'revdelete-nologtype-title' => 'Er is geen logboektype opgegeven',
-'revdelete-nologtype-text' => 'U hebt geen logboektype opgegeven om deze handeling op uit te voeren.',
-'revdelete-toomanytargets-title' => 'Te veel doelen',
-'revdelete-toomanytargets-text' => 'U hebt te veel doelen gegeven om deze handeling op uit te voeren.',
-'revdelete-nologid-title' => 'Ongeldige logboekregel',
-'revdelete-nologid-text' => 'U hebt ofwel geen doellogboekregel opgegeven of de aangegeven logboekregel bestaat niet.',
-'revdelete-selected' => "'''Geselecteerde {{PLURAL:$2|bewerking|bewerkingen}} van [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Geselecteerde logboekhandeling|Geselecteerde logboekhandelingen}}:'''",
-'revdelete-text' => "'''Verwijderde bewerkingen zijn zichtbaar in de geschiedenis en logboeken, maar delen van de inhoud zijn niet langer publiek toegankelijk.'''
-
-Andere beheerders van {{SITENAME}} kunnen de verborgen inhoud benaderen en de verwijdering ongedaan maken met behulp van dit scherm, tenzij er aanvullende beperkingen gelden die zijn ingesteld door de systeembeheerder.
-Bevestig dat u dit wilde doen, dat u de consequenties begrijpt en dat u dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].",
-'revdelete-suppress-text' => "Versies verbergen dient '''alleen''' gebruikt te worden in de volgende gevallen:
+'rev-suppressed-unhide-diff' => "Een van de versies in deze verschillen is '''onderdrukt'''.
+Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].
+Als beheerder kunt u [$1 deze versie bekijken] als u wilt.",
+'rev-deleted-diff-view' => "Een van de bewerkingen voor de verschillen die u hebt opgevraagd, is '''verwijderd'''.
+Als beheerder kunt u deze verschillen bekijken. Mogelijk zijn details zichtbaar in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderlogboek].",
+'rev-suppressed-diff-view' => "Een van de bewerkingen voor de verschillen die u hebt opgevraagd, is '''onderdrukt'''.
+Als beheerder kunt u deze verschillen bekijken. Mogelijk zijn details zichtbaar in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].",
+'rev-delundel' => 'weergeven/verbergen',
+'rev-showdeleted' => 'weergeven',
+'revisiondelete' => 'Versies verwijderen/terugplaatsen',
+'revdelete-nooldid-title' => 'Ongeldige doelversie',
+'revdelete-nooldid-text' => 'U hebt geen doelversie(s) voor deze handeling opgegeven, de aangegeven versie bestaat niet of u probeert de laatste versie te verbergen.',
+'revdelete-nologtype-title' => 'Er is geen logboektype opgegeven',
+'revdelete-nologtype-text' => 'U hebt geen logboektype opgegeven om deze handeling op uit te voeren.',
+'revdelete-nologid-title' => 'Ongeldige logboekregel',
+'revdelete-nologid-text' => 'U hebt ofwel geen doellogboekregel opgegeven of de aangegeven logboekregel bestaat niet.',
+'revdelete-no-file' => 'Het aangegeven bestand bestaat niet.',
+'revdelete-show-file-confirm' => 'Weet u zeker dat u de verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''Geselecteerde {{PLURAL:$2|bewerking|bewerkingen}} van [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Geselecteerde logboekhandeling|Geselecteerde logboekhandelingen}}:'''",
+'revdelete-text' => "'''Verwijderde bewerkingen zijn zichtbaar in de geschiedenis en logboeken, maar delen van de inhoud zijn niet langer publiek toegankelijk.'''
+Andere beheerders van {{SITENAME}} kunnen de verborgen inhoud benaderen en de verwijdering ongedaan maken met behulp van dit formulier, tenzij er aanvullende beperkingen gelden die zijn ingesteld door de systeembeheerder.",
+'revdelete-confirm' => 'Bevestig dat u dit wilde doen, dat u de consequenties begrijpt en dat u dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].',
+'revdelete-suppress-text' => "Versies verbergen dient '''alleen''' gebruikt te worden in de volgende gevallen:
* Ongepaste persoonlijke informatie
*: ''woonadres, telefoonnummers, Burger Service Nummers, enzovoort.''",
-'revdelete-legend' => 'Zichtbaarheidsbeperkingen instellen',
-'revdelete-hide-text' => 'Bewerkte tekst verbergen',
-'revdelete-hide-name' => 'Actie en doel verbergen',
-'revdelete-hide-comment' => 'Bewerkingssamenvatting verbergen',
-'revdelete-hide-user' => 'Gebruikersnaam/IP-adres van de gebruiker verbergen',
-'revdelete-hide-restricted' => 'Deze beperkingen ook op beheerders toepassen',
-'revdelete-suppress' => 'Gegevens voor zowel beheerders als anderen onderdrukken',
-'revdelete-hide-image' => 'Bestandsinhoud verbergen',
-'revdelete-unsuppress' => 'Beperkingen op teruggezette wijzigingen verwijderen',
-'revdelete-log' => 'Reden:',
-'revdelete-submit' => 'Toepassen op de geselecteerde bewerking',
-'revdelete-logentry' => 'zichtbaarheid van bewerkingen is gewijzigd voor [[$1]]',
-'logdelete-logentry' => 'wijzigde zichtbaarheid van gebeurtenis [[$1]]',
-'revdelete-success' => "'''De zichtbaarheid van de wijziging is bijgewerkt.'''",
-'logdelete-success' => "'''Zichtbaarheid van de gebeurtenis succesvol ingesteld.'''",
-'revdel-restore' => 'Zichtbaarheid wijzigen',
-'pagehist' => 'paginageschiedenis',
-'deletedhist' => 'verwijderde geschiedenis',
-'revdelete-content' => 'inhoud',
-'revdelete-summary' => 'bewerkingssamenvatting',
-'revdelete-uname' => 'gebruikersnaam',
-'revdelete-restricted' => 'heeft beperkingen aan beheerders opgelegd',
-'revdelete-unrestricted' => 'heeft beperkingen voor beheerders opgeheven',
-'revdelete-hid' => 'heeft $1 verborgen',
-'revdelete-unhid' => 'heeft $1 zichtbaar gemaakt',
-'revdelete-log-message' => '$1 voor $2 {{PLURAL:$2|versie|versies}}',
-'logdelete-log-message' => '$1 voor $2 {{PLURAL:$2|logboekregel|logboekregels}}',
+'revdelete-legend' => 'Zichtbaarheidsbeperkingen instellen',
+'revdelete-hide-text' => 'Bewerkte tekst verbergen',
+'revdelete-hide-image' => 'Bestandsinhoud verbergen',
+'revdelete-hide-name' => 'Actie en doel verbergen',
+'revdelete-hide-comment' => 'Bewerkingssamenvatting verbergen',
+'revdelete-hide-user' => 'Gebruikersnaam/IP-adres van de gebruiker verbergen',
+'revdelete-hide-restricted' => 'Deze beperkingen ook op beheerders toepassen',
+'revdelete-radio-same' => '(niet wijzigen)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nee',
+'revdelete-suppress' => 'Gegevens voor zowel beheerders als anderen onderdrukken',
+'revdelete-unsuppress' => 'Beperkingen op teruggezette wijzigingen verwijderen',
+'revdelete-log' => 'Reden:',
+'revdelete-submit' => 'Toepassen op de geselecteerde {{PLURAL:$1|bewerking|bewerkingen}}',
+'revdelete-logentry' => 'zichtbaarheid van bewerkingen is gewijzigd voor [[$1]]',
+'logdelete-logentry' => 'wijzigde zichtbaarheid van gebeurtenis [[$1]]',
+'revdelete-success' => "'''De zichtbaarheid van de wijziging is bijgewerkt.'''",
+'revdelete-failure' => "'''De zichtbaarheid van de wijziging kon niet bijgewerkt worden:'''
+$1",
+'logdelete-success' => "'''Zichtbaarheid van de gebeurtenis succesvol ingesteld.'''",
+'logdelete-failure' => "'''De zichtbaarheid van de logboekregel kon niet ingesteld worden:'''
+$1",
+'revdel-restore' => 'Zichtbaarheid wijzigen',
+'pagehist' => 'paginageschiedenis',
+'deletedhist' => 'verwijderde geschiedenis',
+'revdelete-content' => 'inhoud',
+'revdelete-summary' => 'bewerkingssamenvatting',
+'revdelete-uname' => 'gebruikersnaam',
+'revdelete-restricted' => 'heeft beperkingen aan beheerders opgelegd',
+'revdelete-unrestricted' => 'heeft beperkingen voor beheerders opgeheven',
+'revdelete-hid' => 'heeft $1 verborgen',
+'revdelete-unhid' => 'heeft $1 zichtbaar gemaakt',
+'revdelete-log-message' => '$1 voor $2 {{PLURAL:$2|versie|versies}}',
+'logdelete-log-message' => '$1 voor $2 {{PLURAL:$2|logboekregel|logboekregels}}',
+'revdelete-hide-current' => 'Er is een fout opgetreden bij het verbergen van het object van $1 om $2 uur: dit is de huidige versie.
+Deze versie kan niet verborgen worden.',
+'revdelete-show-no-access' => 'Er is een fout opgetreden bij het weergeven van het object van $1 om $2 uur: dit object is gemarkeerd als "beschermd".
+U hebt geen toegang tot dit object.',
+'revdelete-modify-no-access' => 'Er is een fout opgetreden bij het wijzigen van het object van $1 om $2 uur: dit object is gemarkeerd als "beschermd".
+U hebt geen toegang tot dit object.',
+'revdelete-modify-missing' => 'Er is een fout opgetreden bij het wijzigen van versienummer $1: het komt niet voor in de database!',
+'revdelete-no-change' => "'''Waarschuwing:''' het object van $1 om $2 uur had al de aangegeven zichtbaarheidsinstellingen.",
+'revdelete-concurrent-change' => 'Er is een fout opgetreden bij het wijzigen van het object van $1 om $2 uur: de status is inmiddels gewijzigd door iemand anders.
+Controleer de logboeken.',
+'revdelete-only-restricted' => 'Er is een fout opgetreden bij het verbergen van het item van $1, $2: u kunt geen items onderdrukken uit het zicht van beheerders zonder ook een van de andere zichtbaarheidsopties te selecteren.',
+'revdelete-reason-dropdown' => '* Veel voorkomende redenen voor verwijderen
+** Auteursrechtenschending
+** Onbetamelijke persoonlijke informatie
+** Potentieel lasterlijke informatie',
+'revdelete-otherreason' => 'Andere reden:',
+'revdelete-reasonotherlist' => 'Andere reden',
+'revdelete-edit-reasonlist' => 'Redenen voor verwijderen bewerken',
+'revdelete-offender' => 'Auteur versie:',
# Suppression log
'suppressionlog' => 'Verbergingslogboek',
@@ -1162,67 +1248,13 @@ Let op dat het gebruiken van de navigatieverwijzingen deze kolom opnieuw instelt
'mergelogpagetext' => 'Hieronder ziet u een lijst van recente samenvoegingen van een paginageschiedenis naar een andere.',
# Diffs
-'history-title' => 'Geschiedenis van "$1"',
-'difference' => '(Verschil tussen bewerkingen)',
-'lineno' => 'Regel $1:',
-'compareselectedversions' => 'Aangevinkte versies vergelijken',
-'visualcomparison' => 'Visuele vergelijking',
-'wikicodecomparison' => 'Wikitekstvergelijking',
-'editundo' => 'ongedaan maken',
-'diff-multi' => '({{PLURAL:$1|Eén tussenliggende versie wordt|$1 tussenliggende versies worden}} niet weergegeven)',
-'diff-movedto' => 'Verplaatst naar $1',
-'diff-styleadded' => 'stijl $1 toegevoegd',
-'diff-added' => '$1 toegevoegd',
-'diff-changedto' => 'gewijzigd in $1',
-'diff-movedoutof' => 'verplaatst buiten $1',
-'diff-styleremoved' => 'stijl $1 verwijderd',
-'diff-removed' => '$1 verwijderd',
-'diff-changedfrom' => 'gewijzigd van $1',
-'diff-src' => 'bron',
-'diff-withdestination' => 'met bestemming $1',
-'diff-with' => '&#32;met $1 $2',
-'diff-with-final' => '&#32;en $1 $2',
-'diff-width' => 'breedte',
-'diff-height' => 'hoogte',
-'diff-p' => "een '''paragraaf'''",
-'diff-blockquote' => "een '''haakje'''",
-'diff-h1' => "een '''kopje (niveau 1)'''",
-'diff-h2' => "een '''kopje (niveau 2)'''",
-'diff-h3' => "een '''kopje (niveau 3)'''",
-'diff-h4' => "een '''kopje (niveau 4)'''",
-'diff-h5' => "een '''kopje (niveau 5)'''",
-'diff-pre' => "een '''voorgeformatteerd tekstblok'''",
-'diff-div' => "een '''deling'''",
-'diff-ul' => "een '''ongenummerde lijst'''",
-'diff-ol' => "een '''genummerde lijst'''",
-'diff-li' => "een '''lijstitem'''",
-'diff-table' => "een '''tabel'''",
-'diff-tbody' => "'''tabelinhoud'''",
-'diff-tr' => "een '''rij'''",
-'diff-td' => "een '''cel'''",
-'diff-th' => "een '''kolomkop'''",
-'diff-br' => "een '''nieuwe regel'''",
-'diff-hr' => "een '''horizontale lijn'''",
-'diff-code' => "een '''tekstblok met programmacode'''",
-'diff-dl' => "een '''definitie'''",
-'diff-dt' => "een '''te definiëren term'''",
-'diff-dd' => "een '''definitie'''",
-'diff-input' => "een '''input'''",
-'diff-form' => "een '''formulier'''",
-'diff-img' => "een '''afbeelding'''",
-'diff-span' => "een '''span'''",
-'diff-a' => "een '''verwijzing'''",
-'diff-i' => "'''cursief'''",
-'diff-b' => "'''vet'''",
-'diff-strong' => "'''sterk'''",
-'diff-em' => "'''nadruk'''",
-'diff-font' => "'''lettertype'''",
-'diff-big' => "'''groot'''",
-'diff-del' => "'''verwijderd'''",
-'diff-tt' => "'''vaste breedte'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''doorhaling'''",
+'history-title' => 'Geschiedenis van "$1"',
+'difference' => '(Verschil tussen bewerkingen)',
+'lineno' => 'Regel $1:',
+'compareselectedversions' => 'Aangevinkte versies vergelijken',
+'showhideselectedversions' => 'Geselecteerde versies weergeven/verbergen',
+'editundo' => 'ongedaan maken',
+'diff-multi' => '({{PLURAL:$1|Eén tussenliggende versie wordt|$1 tussenliggende versies worden}} niet weergegeven)',
# Search results
'searchresults' => 'Zoekresultaten',
@@ -1230,29 +1262,26 @@ Let op dat het gebruiken van de navigatieverwijzingen deze kolom opnieuw instelt
'searchresulttext' => 'Voor meer informatie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'U zocht naar \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginnen met "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwijzen naar "$1"]])',
'searchsubtitleinvalid' => 'Voor zoekopdracht "$1"',
-'noexactmatch' => "'''Er bestaat geen pagina met de naam \"\$1\".''' U kunt deze [[:\$1|aanmaken]].",
-'noexactmatch-nocreate' => "'''De pagina \"\$1\" bestaat niet.'''",
'toomanymatches' => 'Er waren te veel resultaten.
Probeer een andere zoekopdracht.',
'titlematches' => 'Overeenkomst met onderwerp',
'notitlematches' => 'Geen resultaten gevonden',
'textmatches' => 'Overeenkomst met inhoud',
'notextmatches' => "Geen pagina's gevonden",
-'prevn' => 'vorige $1',
-'nextn' => 'volgende $1',
+'prevn' => 'vorige {{PLURAL:$1|$1}}',
+'nextn' => 'volgende {{PLURAL:$1|$1}}',
'prevn-title' => 'Vorige {{PLURAL:$1|resultaat|$1 resultaten}}',
'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultaten}}',
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultaten}} per pagina weergeven',
-'viewprevnext' => '($1) ($2) ($3) bekijken.',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekijken.',
'searchmenu-legend' => 'Zoekopties',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmaken op deze wiki'''",
'searchhelp-url' => 'Help:Inhoud',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanamen met dit voorvoegsel weergeven]]',
'searchprofile-articles' => "Inhoudelijke pagina's",
-'searchprofile-articles-and-proj' => "Inhoudelijke en projectpagina's",
-'searchprofile-project' => "Projectpagina's",
-'searchprofile-images' => 'Bestanden',
+'searchprofile-project' => "Hulp- en projectpagina's",
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alles',
'searchprofile-advanced' => 'Uitgebreid',
'searchprofile-articles-tooltip' => 'Zoeken in $1',
@@ -1260,8 +1289,6 @@ Probeer een andere zoekopdracht.',
'searchprofile-images-tooltip' => 'Zoeken naar bestanden',
'searchprofile-everything-tooltip' => "Alle inhoud doorzoeken (inclusief overlegpagina's)",
'searchprofile-advanced-tooltip' => 'Zoeken in aangegeven naamruimten',
-'prefs-search-nsdefault' => 'Zoeken met standaardinstellingen:',
-'prefs-search-nscustom' => 'Zoeken in aangegeven naamruimten:',
'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woorden}})',
'search-result-score' => 'Relevantie: $1%',
'search-redirect' => '(doorverwijzing $1)',
@@ -1274,11 +1301,12 @@ Probeer een andere zoekopdracht.',
'search-mwsuggest-disabled' => 'geen suggesties',
'search-relatedarticle' => 'Gerelateerd',
'mwsuggest-disable' => 'Suggesties via AJAX uitschakelen',
+'searcheverything-enable' => 'In alle naamruimten zoeken',
'searchrelated' => 'gerelateerd',
'searchall' => 'alle',
'showingresults' => "Hieronder {{PLURAL:$1|staat '''1''' resultaat|staan '''$1''' resultaten}} vanaf #'''$2'''.",
'showingresultsnum' => "Hieronder {{PLURAL:$3|staat '''1''' resultaat|staan '''$3''' resultaten}} vanaf #'''$2'''.",
-'showingresultstotal' => "Hieronder {{PLURAL:$4|wordt resultaat '''$1'''|worden resultaten '''$1 tot $2'''}} van '''$3''' weergegeven",
+'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultaten '''$1 - $2''' van '''$3'''}} voor '''$4'''",
'nonefound' => "'''Opmerking''': standaard worden niet alle naamruimten doorzocht.
Als u in uw zoekopdracht als voorvoegsel \"''all:''\" gebruikt worden alle pagina's doorzocht (inclusief overlegpagina's, sjablonen, enzovoort).
U kunt ook een naamruimte als voorvoegsel gebruiken.",
@@ -1288,114 +1316,154 @@ U kunt ook een naamruimte als voorvoegsel gebruiken.",
'powersearch-ns' => 'Zoeken in naamruimten:',
'powersearch-redir' => 'Doorverwijzingen weergeven',
'powersearch-field' => 'Zoeken naar',
+'powersearch-togglelabel' => 'Selecteren:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Geen',
'search-external' => 'Extern zoeken',
'searchdisabled' => 'Zoeken in {{SITENAME}} is niet mogelijk.
U kunt gebruik maken van Google.
De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
+# Quickbar
+'qbsettings' => 'Menubalk',
+'qbsettings-none' => 'Uitgeschakeld',
+'qbsettings-fixedleft' => 'Links vast',
+'qbsettings-fixedright' => 'Rechts vast',
+'qbsettings-floatingleft' => 'Links zwevend',
+'qbsettings-floatingright' => 'Rechts zwevend',
+
# Preferences page
-'preferences' => 'Voorkeuren',
-'mypreferences' => 'Mijn voorkeuren',
-'prefs-edits' => 'Aantal bewerkingen:',
-'prefsnologin' => 'Niet aangemeld',
-'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} aangemeld]</span> zijn om uw voorkeuren te kunnen instellen.',
-'prefsreset' => 'Standaardvoorkeuren zijn hersteld.',
-'qbsettings' => 'Menubalk',
-'qbsettings-none' => 'Uitgeschakeld',
-'qbsettings-fixedleft' => 'Links vast',
-'qbsettings-fixedright' => 'Rechts vast',
-'qbsettings-floatingleft' => 'Links zwevend',
-'qbsettings-floatingright' => 'Rechts zwevend',
-'changepassword' => 'Wachtwoord wijzigen',
-'skin' => 'Vormgeving',
-'skin-preview' => 'Voorvertoning',
-'math' => 'Formules',
-'dateformat' => 'Datumopmaak',
-'datedefault' => 'Geen voorkeur',
-'datetime' => 'Datum en tijd',
-'math_failure' => 'Parsen mislukt',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende functie',
-'math_lexing_error' => 'lexicografische fout',
-'math_syntax_error' => 'syntactische fout',
-'math_image_error' => 'PNG-omzetting is mislukt.
-Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
-'math_bad_tmpdir' => 'De map voor tijdelijke bestanden voor wiskundige formules bestaat niet of kan niet gemaakt worden',
-'math_bad_output' => 'De map voor bestanden met wiskundige formules bestaat niet of kan niet gemaakt worden.',
-'math_notexvc' => 'Kan het programma texvc niet vinden; stel alles in volgens de beschrijving in math/README.',
-'prefs-personal' => 'Gebruikersprofiel',
-'prefs-rc' => 'Recente wijzigingen',
-'prefs-watchlist' => 'Volglijst',
-'prefs-watchlist-days' => 'Dagen weer te geven in de volglijst:',
-'prefs-watchlist-days-max' => '(maximaal 7 dagen)',
-'prefs-watchlist-edits' => 'Maximaal aantal bewerkingen in de uitgebreide volglijst:',
-'prefs-watchlist-edits-max' => '(maximale aantal: 1000)',
-'prefs-misc' => 'Diversen',
-'prefs-resetpass' => 'Wachtwoord wijzigen',
-'saveprefs' => 'Opslaan',
-'resetprefs' => 'Niet opgeslagen wijzigingen herstellen',
-'restoreprefs' => 'Voorkeuren herstellen',
-'textboxsize' => 'Bewerken',
-'prefs-edit-boxsize' => 'Afmetingen van het bewerkingsvenster.',
-'rows' => 'Regels:',
-'columns' => 'Kolommen:',
-'searchresultshead' => 'Zoekresultaten',
-'resultsperpage' => 'Resultaten per pagina:',
-'contextlines' => 'Regels per resultaat:',
-'contextchars' => 'Context per regel:',
-'stub-threshold' => 'Drempel voor markering als <a href="#" class="stub">beginnetje</a>:',
-'recentchangesdays' => 'Aantal dagen weer te geven in de recente wijzigingen:',
-'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|dag|dagen}})',
-'recentchangescount' => "Standaard aantal bewerkingen in recente wijzigingen, paginageschiedenis en logboekpagina's:",
-'savedprefs' => 'Uw voorkeuren zijn opgeslagen.',
-'timezonelegend' => 'Tijdzone:',
-'timezonetext' => '¹Het aantal uren dat uw plaatselijke tijd afwijkt van de servertijd (UTC).',
-'localtime' => 'Plaatselijke tijd:',
-'timezoneselect' => 'Tijdzone:',
-'timezoneuseserverdefault' => 'Servertijd gebruiken',
-'timezoneuseoffset' => 'Anders (tijdverschil aangeven)',
-'timezoneoffset' => 'Tijdsverschil¹:',
-'servertime' => 'Servertijd:',
-'guesstimezone' => 'Vanuit de browser toevoegen',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctisch',
-'timezoneregion-asia' => 'Azië',
-'timezoneregion-atlantic' => 'Atlantische Oceaan',
-'timezoneregion-australia' => 'Australië',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indische Oceaan',
-'timezoneregion-pacific' => 'Stille Oceaan',
-'allowemail' => 'E-mail van andere gebruikers toestaan',
-'prefs-searchoptions' => 'Zoekinstellingen',
-'prefs-namespaces' => 'Naamruimten',
-'defaultns' => 'Standaard in deze naamruimten zoeken:',
-'default' => 'standaard',
-'files' => 'Bestanden',
-'prefs-custom-css' => 'persoonlijke CSS',
-'prefs-custom-js' => 'persoonlijke JS',
+'preferences' => 'Voorkeuren',
+'mypreferences' => 'Mijn voorkeuren',
+'prefs-edits' => 'Aantal bewerkingen:',
+'prefsnologin' => 'Niet aangemeld',
+'prefsnologintext' => 'U moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aangemeld]</span> zijn om uw voorkeuren te kunnen instellen.',
+'changepassword' => 'Wachtwoord wijzigen',
+'prefs-skin' => 'Vormgeving',
+'skin-preview' => 'Voorvertoning',
+'prefs-math' => 'Formules',
+'datedefault' => 'Geen voorkeur',
+'prefs-datetime' => 'Datum en tijd',
+'prefs-personal' => 'Gebruikersprofiel',
+'prefs-rc' => 'Recente wijzigingen',
+'prefs-watchlist' => 'Volglijst',
+'prefs-watchlist-days' => 'Dagen weer te geven in de volglijst:',
+'prefs-watchlist-days-max' => '(maximaal 7 dagen)',
+'prefs-watchlist-edits' => 'Maximaal aantal bewerkingen in de uitgebreide volglijst:',
+'prefs-watchlist-edits-max' => '(maximale aantal: 1000)',
+'prefs-watchlist-token' => 'Volglijstsleutel:',
+'prefs-misc' => 'Diversen',
+'prefs-resetpass' => 'Wachtwoord wijzigen',
+'prefs-email' => 'E-mail',
+'prefs-rendering' => 'Uiterlijk',
+'saveprefs' => 'Opslaan',
+'resetprefs' => 'Niet opgeslagen wijzigingen herstellen',
+'restoreprefs' => 'Voorkeuren herstellen',
+'prefs-editing' => 'Bewerken',
+'prefs-edit-boxsize' => 'Afmetingen van het bewerkingsvenster.',
+'rows' => 'Regels:',
+'columns' => 'Kolommen:',
+'searchresultshead' => 'Zoekresultaten',
+'resultsperpage' => 'Resultaten per pagina:',
+'contextlines' => 'Regels per resultaat:',
+'contextchars' => 'Context per regel:',
+'stub-threshold' => 'Drempel voor markering als <a href="#" class="stub">beginnetje</a>:',
+'recentchangesdays' => 'Aantal dagen weer te geven in de recente wijzigingen:',
+'recentchangesdays-max' => '(maximaal $1 {{PLURAL:$1|dag|dagen}})',
+'recentchangescount' => 'Standaard aantal weer te geven bewerkingen:',
+'prefs-help-recentchangescount' => "Dit geldt voor recente wijzigingen, paginageschiedenis en logboekpagina's.",
+'prefs-help-watchlist-token' => 'Door hier een geheime sleutel in te vullen wordt een RSS-feed voor uw volglijst aangemaakt.
+Iedereen die deze sleutel kent kan uw volglijst lezen, dus kies een veilige sleutel.
+Hier volgt een willekeurig gegenereerde waarde die u kunt gebruiken: $1',
+'savedprefs' => 'Uw voorkeuren zijn opgeslagen.',
+'timezonelegend' => 'Tijdzone:',
+'localtime' => 'Plaatselijke tijd:',
+'timezoneuseserverdefault' => 'Servertijd gebruiken',
+'timezoneuseoffset' => 'Anders (tijdverschil aangeven)',
+'timezoneoffset' => 'Tijdsverschil¹:',
+'servertime' => 'Servertijd:',
+'guesstimezone' => 'Vanuit de browser toevoegen',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctisch',
+'timezoneregion-asia' => 'Azië',
+'timezoneregion-atlantic' => 'Atlantische Oceaan',
+'timezoneregion-australia' => 'Australië',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indische Oceaan',
+'timezoneregion-pacific' => 'Stille Oceaan',
+'allowemail' => 'E-mail van andere gebruikers toestaan',
+'prefs-searchoptions' => 'Zoekinstellingen',
+'prefs-namespaces' => 'Naamruimten',
+'defaultns' => 'Anders in de volgende naamruimten zoeken:',
+'default' => 'standaard',
+'prefs-files' => 'Bestanden',
+'prefs-custom-css' => 'persoonlijke CSS',
+'prefs-custom-js' => 'persoonlijke JS',
+'prefs-reset-intro' => 'Gebruik deze functie om uw voorkeuren te herstellen naar de standaardinstellingen.
+Deze handeling kan niet ongedaan gemaakt worden.',
+'prefs-emailconfirm-label' => 'E-mailbevestiging:',
+'prefs-textboxsize' => 'Afmetingen bewerkingsscherm',
+'youremail' => 'Uw e-mailadres:',
+'username' => 'Gebruikersnaam:',
+'uid' => 'Gebruikersnummer:',
+'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepen}}:',
+'prefs-registration' => 'Registratiedatum:',
+'yourrealname' => 'Uw echte naam:',
+'yourlanguage' => 'Taal:',
+'yourvariant' => 'Taalvariant:',
+'yournick' => 'Tekst voor ondertekening:',
+'prefs-help-signature' => 'Reacties op de overlegpagina\'s worden meestal ondertekend met "<nowiki>~~~~</nowiki>".
+De tildes worden omgezet in uw ondertekening en een datum en tijd van de bewerking.',
+'badsig' => 'Ongeldige ondertekening; controleer de HTML-tags.',
+'badsiglength' => 'Uw ondertekening is te lang.
+Deze moet minder dan $1 {{PLURAL:$1|karakters|karakters}} bevatten.',
+'yourgender' => 'Geslacht:',
+'gender-unknown' => 'Niet aangegeven',
+'gender-male' => 'Man',
+'gender-female' => 'Vrouw',
+'prefs-help-gender' => 'Optioneel: dit wordt gebruikt om gebruikers correct aan te spreken in de software.
+Deze informatie is zichtbaar voor andere gebruikers.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Echte naam is optioneel, als u deze opgeeft kan deze naam gebruikt worden om u erkenning te geven voor uw werk.',
+'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om u uw wachtwoord te e-mailen als u het bent vergeten.
+U kunt ook anderen in staat stellen per e-mail contact met u op te nemen via een verwijzing op uw gebruikers- en overlegpagina zonder dat u uw identiteit prijsgeeft.',
+'prefs-help-email-required' => 'Hiervoor is een e-mailadres nodig.',
+'prefs-info' => 'Basisinformatie',
+'prefs-i18n' => 'Taalinstellingen',
+'prefs-signature' => 'Ondertekening',
+'prefs-dateformat' => 'Datumopmaak:',
+'prefs-timeoffset' => 'Tijdverschil',
+'prefs-advancedediting' => 'Gevorderde instellingen',
+'prefs-advancedrc' => 'Gevorderde instellingen',
+'prefs-advancedrendering' => 'Gevorderde instellingen',
+'prefs-advancedsearchoptions' => 'Gevorderde instellingen',
+'prefs-advancedwatchlist' => 'Gevorderde instellingen',
+'prefs-display' => 'Weergaveinstellingen',
+'prefs-diffs' => 'Verschillen',
# User rights
-'userrights' => 'Gebruikersrechtenbeheer', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gebruikersgroepen beheren',
-'userrights-user-editname' => 'Voer een gebruikersnaam in:',
-'editusergroup' => 'Gebruikersgroepen wijzigen',
-'editinguser' => "Bezig met wijzigen van de gebruikersrechten van gebruiker '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Gebruikersgroepen wijzigen',
-'saveusergroups' => 'Gebruikersgroepen opslaan',
-'userrights-groupsmember' => 'Lid van:',
-'userrights-groups-help' => 'U kunt de groepen wijzigen waar deze gebruiker lid van is.
+'userrights' => 'Gebruikersrechtenbeheer',
+'userrights-lookup-user' => 'Gebruikersgroepen beheren',
+'userrights-user-editname' => 'Voer een gebruikersnaam in:',
+'editusergroup' => 'Gebruikersgroepen wijzigen',
+'editinguser' => "Bezig met wijzigen van de gebruikersrechten van gebruiker '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Gebruikersgroepen wijzigen',
+'saveusergroups' => 'Gebruikersgroepen opslaan',
+'userrights-groupsmember' => 'Lid van:',
+'userrights-groupsmember-auto' => 'Impliciet lid van:',
+'userrights-groups-help' => 'U kunt de groepen wijzigen waar deze gebruiker lid van is.
* Een aangekruist vakje betekent dat de gebruiker lid is van de groep.
* Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.
* Een "*" betekent dat u een gebruiker niet uit een groep kunt verwijderen nadat u die hebt toegevoegd of vice versa.',
-'userrights-reason' => 'Reden:',
-'userrights-no-interwiki' => "U hebt geen rechten om gebruikersrechten op andere wiki's te wijzigen.",
-'userrights-nodatabase' => 'Database $1 bestaat niet of is geen plaatselijke database.',
-'userrights-nologin' => 'U moet zich [[Special:UserLogin|aanmelden]] met een gebruiker met de juiste rechten om gebruikersrechten toe te wijzen.',
-'userrights-notallowed' => 'U hebt geen rechten om gebruikersrechten toe te wijzen.',
-'userrights-changeable-col' => 'Groepen die u kunt beheren',
-'userrights-unchangeable-col' => 'Groepen die u niet kunt beheren',
+'userrights-reason' => 'Reden:',
+'userrights-no-interwiki' => "U hebt geen rechten om gebruikersrechten op andere wiki's te wijzigen.",
+'userrights-nodatabase' => 'Database $1 bestaat niet of is geen plaatselijke database.',
+'userrights-nologin' => 'U moet zich [[Special:UserLogin|aanmelden]] met een gebruiker met de juiste rechten om gebruikersrechten toe te wijzen.',
+'userrights-notallowed' => 'U hebt geen rechten om gebruikersrechten toe te wijzen.',
+'userrights-changeable-col' => 'Groepen die u kunt beheren',
+'userrights-unchangeable-col' => 'Groepen die u niet kunt beheren',
# Groups
'group' => 'Groep:',
@@ -1448,6 +1516,7 @@ Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
'right-bigdelete' => "Pagina's met een grote geschiedenis verwijderen",
'right-deleterevision' => "Versies van pagina's verbergen",
'right-deletedhistory' => 'Verwijderde versies bekijken, zonder te kunnen zien wat verwijderd is',
+'right-deletedtext' => 'Verwijderde tekst en wijzigingen tussen verwijderde versies bekijken',
'right-browsearchive' => "Verwijderde pagina's bekijken",
'right-undelete' => "Verwijderde pagina's terugplaatsen",
'right-suppressrevision' => 'Verborgen versies bekijken en terugplaatsen',
@@ -1461,6 +1530,8 @@ Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
'right-editprotected' => "Beveiligde pagina's bewerken",
'right-editinterface' => 'De gebruikersinterface bewerken',
'right-editusercssjs' => 'De CSS- en JS-bestanden van andere gebruikers bewerken',
+'right-editusercss' => 'De CSS-bestanden van andere gebruikers bewerken',
+'right-edituserjs' => 'De JS-bestanden van andere gebruikers bewerken',
'right-rollback' => 'Snel de laatste bewerking(en) van een gebruiker van een pagina terugdraaien',
'right-markbotedits' => 'Teruggedraaide bewerkingen markeren als botbewerkingen',
'right-noratelimit' => 'Tijdsafhankelijke beperkingen negeren',
@@ -1477,6 +1548,8 @@ Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
'right-siteadmin' => 'De database blokkeren en weer vrijgeven',
'right-reset-passwords' => 'Wachtwoorden van andere gebruikers opnieuw instellen',
'right-override-export-depth' => "Pagina's exporteren inclusief pagina's waarnaar verwezen wordt tot een diepte van vijf",
+'right-versiondetail' => 'Uitgebreide versieinformatie van de software weergeven',
+'right-sendemail' => 'E-mail versturen aan andere gebruikers',
# User rights log
'rightslog' => 'Gebruikersrechtenlogboek',
@@ -1526,6 +1599,15 @@ Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
'recentchanges-legend' => 'Opties voor recente wijzigingen',
'recentchangestext' => 'Op deze pagina kunt u de recentste wijzigingen in deze wiki bekijken.',
'recentchanges-feed-description' => 'Met deze feed kunt u de recentste wijzigingen in deze wiki bekijken.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nieuwe pagina',
+'recentchanges-label-newpage' => 'Met deze bewerking is een nieuwe pagina aangemaakt',
+'recentchanges-legend-minor' => '$1 - kleine wijziging',
+'recentchanges-label-minor' => 'Dit is een kleine bewerking',
+'recentchanges-legend-bot' => '$1 - botbewerking',
+'recentchanges-label-bot' => 'Deze bewerking is uitgevoerd door een bot',
+'recentchanges-legend-unpatrolled' => '$1 - ongecontroleerde bewerking',
+'recentchanges-label-unpatrolled' => 'Deze bewerking is nog niet gecontroleerd',
'rcnote' => "Hieronder {{PLURAL:$1|staat de laatste bewerking|staan de laatste '''$1''' bewerkingen}} in de laatste {{PLURAL:$2|dag|'''$2''' dagen}}, op $4 om $5.",
'rcnotefrom' => "Wijzigingen sinds '''$2''' (met een maximum van '''$1''' wijzigingen).",
'rclistfrom' => 'Wijzigingen bekijken vanaf $1',
@@ -1552,6 +1634,8 @@ Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
# Recent changes linked
'recentchangeslinked' => 'Verwante wijzigingen',
+'recentchangeslinked-feed' => 'Verwante wijzigingen',
+'recentchangeslinked-toolbox' => 'Verwante wijzigingen',
'recentchangeslinked-title' => 'Wijzigingen verwant aan "$1"',
'recentchangeslinked-noresult' => "Er zijn in de opgegeven periode geen bewerkingen geweest op de pagina's waarheen vanaf hier verwezen wordt.",
'recentchangeslinked-summary' => "Deze speciale pagina geeft de laatste bewerkingen weer op pagina's waarheen verwezen wordt vanaf een aangegeven pagina of vanuit pagina's in een aangegeven pagina een categorie.
@@ -1562,8 +1646,8 @@ Pagina's die op [[Special:Watchlist|uw volglijst]] staan worden '''vet''' weerge
# Upload
'upload' => 'Bestand uploaden',
'uploadbtn' => 'Bestand uploaden',
-'reupload' => 'Opnieuw uploaden',
'reuploaddesc' => 'Upload annuleren en terugkeren naar het uploadformulier',
+'upload-tryagain' => 'Bestandsbeschrijving bijwerken',
'uploadnologin' => 'Niet aangemeld',
'uploadnologintext' => 'U moet [[Special:UserLogin|aangemeld]] zijn
om bestanden te uploaden.',
@@ -1601,6 +1685,7 @@ Zie de [[Special:NewFiles|galerij met nieuwe bestanden]] voor een visueler overz
'illegalfilename' => 'De bestandsnaam "$1" bevat ongeldige karakters.
Geef het bestand een andere naam, en probeer het dan opnieuw te uploaden.',
'badfilename' => 'De naam van het bestand is gewijzigd in "$1".',
+'filetype-mime-mismatch' => 'De bestandsextensie hoort niet bij het MIME-type.',
'filetype-badmime' => 'Het is niet toegestaan om bestanden van MIME-type "$1" te uploaden.',
'filetype-bad-ie-mime' => 'Dit bestand kan niet toegevoegd worden, omdat Internet Explorer het zou indentificeren als "$1", een niet toegelaten bestandstype dat potentieel schadelijk is.',
'filetype-unwanted-type' => "'''\".\$1\"''' is een ongewenst bestandstype.
@@ -1623,7 +1708,6 @@ Bewerk de pagina handmatig om uw beschrijving daar weer te geven. [[$1|miniatuur
* Naam van het geüploade bestand: '''<tt>[[:$1]]</tt>'''
* Naam van het bestaande bestand: '''<tt>[[:$2]]</tt>'''
Kies een andere naam.",
-'fileexists-thumb' => "<center>'''Bestaande afbeelding'''</center>",
'fileexists-thumbnail-yes' => "Het bestand lijkt een verkleinde versie te zijn ''(miniatuurafbeelding)''. [[$1|thumb]]
Controleer het bestand '''<tt>[[:$1]]</tt>'''.
Als het gecontroleerde bestand dezelfde afbeelding van oorspronkelijke grootte is, is het niet noodzakelijk een extra miniatuurafbeelding te uploaden.",
@@ -1642,6 +1726,7 @@ Als u het bestand alsnog wilt uploaden, ga dan terug en kies een andere naam.
Raadpleeg het verwijderingslogboek voordat u verder gaat.',
'successfulupload' => 'Het bestand is toegevoegd',
'uploadwarning' => 'Uploadwaarschuwing',
+'uploadwarning-text' => 'Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.',
'savefile' => 'Bestand opslaan',
'uploadedimage' => 'heeft "[[$1]]" geüpload',
'overwroteimage' => 'heeft een nieuwe versie van "[[$1]]" toegevoegd',
@@ -1649,12 +1734,14 @@ Raadpleeg het verwijderingslogboek voordat u verder gaat.',
'uploaddisabledtext' => 'Het uploaden van bestanden is uitgeschakeld.',
'php-uploaddisabledtext' => 'PHP-bestanduploads zijn uitgeschakeld. Controleer a.u.b. de file_uploads-instelling.',
'uploadscripted' => 'Dit bestand bevat HTML- of scriptcode die foutief door uw browser kan worden weergegeven.',
-'uploadcorrupt' => 'Het bestand is corrupt of heeft een onjuiste extensie.
-Controleer het bestand en upload het opnieuw.',
'uploadvirus' => 'Het bestand bevat een virus! Details: $1',
+'upload-source' => 'Bronbestand',
'sourcefilename' => 'Oorspronkelijke bestandsnaam:',
+'sourceurl' => 'Bron-URL:',
'destfilename' => 'Opslaan als:',
'upload-maxfilesize' => 'Maximale bestandsgrootte: $1',
+'upload-description' => 'Bestandsbeschrijving',
+'upload-options' => 'Uploadinstellingen',
'watchthisupload' => 'Dit bestand volgen',
'filewasdeleted' => 'Er is eerder een bestand met deze naam verwijderd.
Raadpleeg het $1 voordat u het opnieuw toevoegt.',
@@ -1679,15 +1766,46 @@ MGP # Pentax
PICT # overig
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'Verkeerd protocol',
-'upload-proto-error-text' => "Uploads via deze methode vereisen URL's die beginnen met <code>http://</code> of <code>ftp://</code>.",
-'upload-file-error' => 'Interne fout',
-'upload-file-error-text' => 'Een interne fout vond plaats toen een tijdelijk bestand op de server werd aangemaakt.
+'upload-proto-error' => 'Verkeerd protocol',
+'upload-proto-error-text' => "Uploads via deze methode vereisen URL's die beginnen met <code>http://</code> of <code>ftp://</code>.",
+'upload-file-error' => 'Interne fout',
+'upload-file-error-text' => 'Een interne fout vond plaats toen een tijdelijk bestand op de server werd aangemaakt.
Neem aub contact op met een [[Special:ListUsers/sysop|systeembeheerder]].',
-'upload-misc-error' => 'Onbekende uploadfout',
-'upload-misc-error-text' => 'Er is tijdens het uploaden een onbekende fout opgetreden.
+'upload-misc-error' => 'Onbekende uploadfout',
+'upload-misc-error-text' => 'Er is tijdens het uploaden een onbekende fout opgetreden.
Controleer of de URL correct en beschikbaar is en probeer het opnieuw.
Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop|systeembeheerder]].',
+'upload-too-many-redirects' => 'De URL bevatte te veel doorverwijzingen',
+'upload-unknown-size' => 'Onbekende grootte',
+'upload-http-error' => 'Er is een HTTP-fout opgetreden: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Toegang geweigerd',
+'img-auth-nopathinfo' => 'PATH_INFO mist.
+Uw server is niet ingesteld om deze informatie door te geven.
+Misschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.
+Zie http://www.mediawiki.org/wiki/Manual:Image_Authorization voor meer informatie.',
+'img-auth-notindir' => 'Het opgevraagde pad is niet de ingestelde uploadmap.',
+'img-auth-badtitle' => 'Het was niet mogelijk een geldige paginanaam te maken van "$1".',
+'img-auth-nologinnWL' => 'U bent niet aangemeld en "$1" staat niet op de witte lijst.',
+'img-auth-nofile' => 'Bestand "$1" bestaat niet.',
+'img-auth-isdir' => 'U probeert de map "$1" te benaderen.
+Alleen toegang tot bestanden is toegestaan.',
+'img-auth-streaming' => 'Bezig met het streamen van "$1".',
+'img-auth-public' => 'Het doel van img_auth.php is de uitvoer van bestanden van een besloten wiki.
+Deze wiki is ingesteld als publieke wiki.
+Om beveiligingsreden is img_auth.php uitgeschakeld.',
+'img-auth-noread' => 'De gebruiker heeft geen leestoegang tot "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Ongeldige URL: $1',
+'http-invalid-scheme' => 'URL\'s met de opmaak "$1" worden niet ondersteund',
+'http-request-error' => 'Fout bij het verzenden van het verzoek.',
+'http-read-error' => 'Fout bij het lezen van HTTP.',
+'http-timed-out' => 'Timeout bij het HTTP-verzoek.',
+'http-curl-error' => 'Fout bij het ophalen van URL: $1',
+'http-host-unreachable' => 'De URL is niet bereikbaar.',
+'http-bad-status' => 'Er is een probleem opgetreden bij het HTTP-verzoek: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kon de URL niet bereiken',
@@ -1699,6 +1817,7 @@ Controleer of de website beschikbaar is, wacht even en probeer het dan opnieuw.
U kunt het misschien proberen als het minder druk is.',
'license' => 'Licentie:',
+'license-header' => 'Licentie',
'nolicense' => 'Maak een keuze',
'license-nopreview' => '(Voorvertoning niet beschikbaar)',
'upload_source_url' => ' (een geldige, publiek toegankelijke URL)',
@@ -1719,38 +1838,42 @@ Klikken op een kolomkop verandert de sortering.',
'listfiles_count' => 'Versies',
# File description page
-'filehist' => 'Bestandsgeschiedenis',
-'filehist-help' => 'Klik op een datum/tijd om het bestand te zien zoals het destijds was.',
-'filehist-deleteall' => 'alle versies verwijderen',
-'filehist-deleteone' => 'verwijderen',
-'filehist-revert' => 'terugdraaien',
-'filehist-current' => 'huidige versie',
-'filehist-datetime' => 'Datum/tijd',
-'filehist-thumb' => 'Miniatuurafbeelding',
-'filehist-thumbtext' => 'Miniatuurafbeelding voor versie per $1',
-'filehist-nothumb' => 'Geen miniatuurafbeelding',
-'filehist-user' => 'Gebruiker',
-'filehist-dimensions' => 'Afmetingen',
-'filehist-filesize' => 'Bestandsgrootte',
-'filehist-comment' => 'Opmerking',
-'imagelinks' => 'Bestandsverwijzingen',
-'linkstoimage' => "Dit bestand wordt op de volgende {{PLURAL:$1|pagina|$1 pagina's}} gebruikt:",
-'linkstoimage-more' => 'Er {{PLURAL:$2|is|zijn}} meer dan $1 {{PLURAL:$1|verwijzing|verwijzingen}} naar dit bestand.
+'file-anchor-link' => 'Bestand',
+'filehist' => 'Bestandsgeschiedenis',
+'filehist-help' => 'Klik op een datum/tijd om het bestand te zien zoals het destijds was.',
+'filehist-deleteall' => 'alle versies verwijderen',
+'filehist-deleteone' => 'verwijderen',
+'filehist-revert' => 'terugdraaien',
+'filehist-current' => 'huidige versie',
+'filehist-datetime' => 'Datum/tijd',
+'filehist-thumb' => 'Miniatuurafbeelding',
+'filehist-thumbtext' => 'Miniatuurafbeelding voor de versie van $2 om $3',
+'filehist-nothumb' => 'Geen miniatuurafbeelding',
+'filehist-user' => 'Gebruiker',
+'filehist-dimensions' => 'Afmetingen',
+'filehist-filesize' => 'Bestandsgrootte',
+'filehist-comment' => 'Opmerking',
+'filehist-missing' => 'Het bestand is niet aangetroffen',
+'imagelinks' => 'Bestandsverwijzingen',
+'linkstoimage' => "Dit bestand wordt op de volgende {{PLURAL:$1|pagina|$1 pagina's}} gebruikt:",
+'linkstoimage-more' => 'Er {{PLURAL:$2|is|zijn}} meer dan $1 {{PLURAL:$1|verwijzing|verwijzingen}} naar dit bestand.
De volgende lijst geeft alleen de eerste {{PLURAL:$1|verwijzing|$1 verwijzingen}} naar dit bestand weer.
Er is ook een [[Special:WhatLinksHere/$2|volledige lijst]].',
-'nolinkstoimage' => 'Geen enkele pagina gebruikt dit bestand.',
-'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meer verwijzingen]] naar dit bestand bekijken.',
-'redirectstofile' => '{{PLURAL:$1|Het volgende bestand verwijst|De volgende $1 bestanden verwijzen}} door naar dit bestand:',
-'duplicatesoffile' => '{{PLURAL:$1|Het volgende bestand is|De volgende $1 bestanden zijn}} identiek aan dit bestand ([[Special:FileDuplicateSearch/$2|meer details]]):',
-'sharedupload' => 'Dit bestand komt van $1 en kan ook door andere projecten gebruikt worden.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Zie de $1 voor verdere informatie.',
-'shareduploadwiki-desc' => 'De beschijving in de $1 wordt hieronder weergegeven.',
-'shareduploadwiki-linktext' => 'bestandsbeschrijving',
-'noimage' => 'Er bestaat geen bestand met deze naam, maar u kunt het $1.',
-'noimage-linktext' => 'uploaden',
-'uploadnewversion-linktext' => 'Een nieuwe versie van dit bestand uploaden',
-'shared-repo-from' => 'van $1', # $1 is the repository name
-'shared-repo' => 'een gedeelde mediadatabank', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Geen enkele pagina gebruikt dit bestand.',
+'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meer verwijzingen]] naar dit bestand bekijken.',
+'redirectstofile' => '{{PLURAL:$1|Het volgende bestand verwijst|De volgende $1 bestanden verwijzen}} door naar dit bestand:',
+'duplicatesoffile' => '{{PLURAL:$1|Het volgende bestand is|De volgende $1 bestanden zijn}} identiek aan dit bestand ([[Special:FileDuplicateSearch/$2|meer details]]):',
+'sharedupload' => 'Dit bestand komt van $1 en kan ook door andere projecten gebruikt worden.',
+'sharedupload-desc-there' => 'Dit bestand komt van $1 en kan ook in andere projecten gebruikt worden.
+Zie de [$2 pagina met de bestandsbeschrijving] voor meer informatie.',
+'sharedupload-desc-here' => 'Dit bestand komt van $1 en kan ook in andere projecten gebruikt worden.
+De [$2 pagina met de bestandsbeschrijving] wordt hieronder weergegeven.',
+'filepage-nofile' => 'Er bestaat geen bestand met deze naam.',
+'filepage-nofile-link' => 'Er bestaat geen bestand met deze naam, maar u kunt het [$1 uploaden].',
+'uploadnewversion-linktext' => 'Een nieuwe versie van dit bestand uploaden',
+'shared-repo-from' => 'van $1',
+'shared-repo' => 'een gedeelde mediadatabank',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
# File reversion
'filerevert' => '$1 terugdraaien',
@@ -1779,6 +1902,7 @@ Er is ook een [[Special:WhatLinksHere/$2|volledige lijst]].',
** Auteursrechtenschending
** Duplicaatbestand',
'filedelete-edit-reasonlist' => 'Redenen voor verwijderen bewerken',
+'filedelete-maintenance' => 'Het verwijderen en terugplaatsen is tijdelijk niet mogelijk wegens onderhoudswerkzaamheden.',
# MIME search
'mimesearch' => 'Zoeken op MIME-type',
@@ -1801,7 +1925,7 @@ Vergeet niet de "Verwijzingen naar deze pagina" te controleren alvorens dit sjab
# Random page
'randompage' => 'Willekeurige pagina',
-'randompage-nopages' => 'Er zijn geen pagina\'s in de naamruimte "$1".',
+'randompage-nopages' => "Er zijn geen pagina's in de volgende {{PLURAL:$2|naamruimte|naamruimten}}: $1.",
# Random redirect
'randomredirect' => 'Willekeurige doorverwijzing',
@@ -1813,6 +1937,7 @@ Vergeet niet de "Verwijzingen naar deze pagina" te controleren alvorens dit sjab
'statistics-header-edits' => 'Bewerkingsstatistieken',
'statistics-header-views' => 'Paginaweergavestatistieken',
'statistics-header-users' => 'Gebruikerstatistieken',
+'statistics-header-hooks' => 'Overige statistieken',
'statistics-articles' => "Inhoudelijke pagina's",
'statistics-pages' => "Pagina's",
'statistics-pages-desc' => "Alle pagina's in de wiki, inclusief overlegpagina's, doorverwijzingen, enzovoort.",
@@ -1843,8 +1968,8 @@ Meestal is de laatste pagina het eigenlijke doel, waar de eerste pagina naar zou
'brokenredirects' => 'Defecte doorverwijzingen',
'brokenredirectstext' => "De onderstaande doorverwijzigingen verwijzen naar niet-bestaande pagina's.",
-'brokenredirects-edit' => '(bewerken)',
-'brokenredirects-delete' => '(verwijderen)',
+'brokenredirects-edit' => 'bewerken',
+'brokenredirects-delete' => 'verwijderen',
'withoutinterwiki' => "Pagina's zonder taalverwijzingen",
'withoutinterwiki-summary' => "De volgende pagina's verwijzen niet naar versies in een andere taal.",
@@ -1955,7 +2080,7 @@ Mogelijk bevatte de naam karakters die niet gebruikt mogen worden in paginanamen
# Special:Categories
'categories' => 'Categorieën',
-'categoriespagetext' => "De volgende categorieën bevatten pagina's of mediabestanden.
+'categoriespagetext' => "De volgende {{PLURAL:$1|categorie bevat|categorieën bevatten}} pagina's of mediabestanden.
[[Special:UnusedCategories|Ongebruikte categorieën]] worden hier niet weergegeven.
Zie ook [[Special:WantedCategories|niet-bestaande categorieën met verwijzingen]].",
'categoriesfrom' => 'Categorieën weergeven vanaf:',
@@ -1963,8 +2088,9 @@ Zie ook [[Special:WantedCategories|niet-bestaande categorieën met verwijzingen]
'special-categories-sort-abc' => 'alfabetisch sorteren',
# Special:DeletedContributions
-'deletedcontributions' => 'Verwijderde bijdragen',
-'deletedcontributions-title' => 'Verwijderde gebruikersbijdragen',
+'deletedcontributions' => 'Verwijderde bijdragen',
+'deletedcontributions-title' => 'Verwijderde gebruikersbijdragen',
+'sp-deletedcontributions-contribs' => 'bijdragen',
# Special:LinkSearch
'linksearch' => 'Externe verwijzingen',
@@ -1980,6 +2106,16 @@ Ondersteunde protocollen: <tt>$1</tt>',
'listusersfrom' => 'Gebruikers bekijken vanaf:',
'listusers-submit' => 'Weergeven',
'listusers-noresult' => 'Geen gebruiker gevonden.',
+'listusers-blocked' => '(geblokkeerd)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aanwezige gebruikers',
+'activeusers-intro' => 'Dit is een lijst met gebruikers die enige activiteit hebben laten zien in de afgelopen {{PLURAL:$1|dag|$1 dagen}}.',
+'activeusers-count' => '$1 recente {{PLURAL:$1|bewerking|bewerkingen}} in de {{PLURAL:$3|afgelopen dag|laatste $3 dagen}}',
+'activeusers-from' => 'Gebruikers worden weergegeven vanaf:',
+'activeusers-hidebots' => 'Bots verbergen',
+'activeusers-hidesysops' => 'Beheerders verbergen',
+'activeusers-noresult' => 'Geen actieve gebruikers gevonden.',
# Special:Log/newusers
'newuserlogpage' => 'Logboek nieuwe gebruikers',
@@ -1990,17 +2126,23 @@ Ondersteunde protocollen: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Gebruiker automatisch aangemaakt',
# Special:ListGroupRights
-'listgrouprights' => 'Rechten van gebruikersgroepen',
-'listgrouprights-summary' => 'Op deze pagina staan de gebruikersgroepen in deze wiki beschreven, met hun bijbehorende rechten.
+'listgrouprights' => 'Rechten van gebruikersgroepen',
+'listgrouprights-summary' => 'Op deze pagina staan de gebruikersgroepen in deze wiki beschreven, met hun bijbehorende rechten.
Er kan [[{{MediaWiki:Listgrouprights-helppage}}|extra informatie]] over individuele rechten aanwezig zijn.',
-'listgrouprights-group' => 'Groep',
-'listgrouprights-rights' => 'Rechten',
-'listgrouprights-helppage' => 'Help:Gebruikersrechten',
-'listgrouprights-members' => '(ledenlijst)',
-'listgrouprights-addgroup' => 'Gebruikers aan de volgende {{PLURAL:$2|groep|groepen}} toevoegen: $1',
-'listgrouprights-removegroup' => 'Gebruikers uit de volgende {{PLURAL:$2|groep|groepen}} verwijderen: $1',
-'listgrouprights-addgroup-all' => 'Gebruikers aan alle groepen toevoegen',
-'listgrouprights-removegroup-all' => 'Gebruikers uit alle groepen verwijderen',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Toewezen recht</span>
+* <span class="listgrouprights-revoked">Ingetrokken recht</span>',
+'listgrouprights-group' => 'Groep',
+'listgrouprights-rights' => 'Rechten',
+'listgrouprights-helppage' => 'Help:Gebruikersrechten',
+'listgrouprights-members' => '(ledenlijst)',
+'listgrouprights-addgroup' => 'Gebruikers aan de volgende {{PLURAL:$2|groep|groepen}} toevoegen: $1',
+'listgrouprights-removegroup' => 'Gebruikers uit de volgende {{PLURAL:$2|groep|groepen}} verwijderen: $1',
+'listgrouprights-addgroup-all' => 'Gebruikers aan alle groepen toevoegen',
+'listgrouprights-removegroup-all' => 'Gebruikers uit alle groepen verwijderen',
+'listgrouprights-addgroup-self' => 'De volgende {{PLURAL:$2|groep|groepen}} toevoegen aan eigen gebruiker: $1',
+'listgrouprights-removegroup-self' => 'De volgende {{PLURAL:$2|groep|groepen}} verwijderen van eigen gebruiker: $1',
+'listgrouprights-addgroup-self-all' => 'Alle groepen toevoegen aan eigen gebruiker',
+'listgrouprights-removegroup-self-all' => 'Alle groepen verwijderen van eigen gebruiker',
# E-mail user
'mailnologin' => 'Geen verzendadres beschikbaar',
@@ -2093,6 +2235,9 @@ Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Op uw volglijst k
U kunt uw volglijstinstellingen wijzigen op:
{{fullurl:Special:Watchlist/edit}}
+U kunt de pagina van uw volglijst verwijderen via de volgende verwijzing:
+$UNWATCHURL
+
Feedback en andere assistentie:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -2105,10 +2250,11 @@ Feedback en andere assistentie:
'exblank' => 'pagina was leeg',
'delete-confirm' => '"$1" verwijderen',
'delete-legend' => 'Verwijderen',
-'historywarning' => 'Waarschuwing: de pagina die u wilt verwijderen heeft meerdere versies:',
+'historywarning' => "'''Waarschuwing:''' de pagina die u wilt verwijderen heeft ongeveer $1 {{PLURAL:$1|versie|versies}}:",
'confirmdeletetext' => 'U staat op het punt een pagina te verwijderen, inclusief de geschiedenis.
Bevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt en dat de verwijdering overeenstemt met het [[{{MediaWiki:Policy-url}}|beleid]].',
'actioncomplete' => 'Handeling voltooid',
+'actionfailed' => 'De handeling is mislukt.',
'deletedtext' => '"<nowiki>$1</nowiki>" is verwijderd.
Zie het $2 voor een overzicht van recente verwijderingen.',
'deletedarticle' => 'verwijderde "[[$1]]"',
@@ -2132,20 +2278,21 @@ Het verwijderen van deze pagina kan de werking van de database van {{SITENAME}}
Wees voorzichtig.',
# Rollback
-'rollback' => 'Wijzigingen ongedaan maken',
-'rollback_short' => 'Terugdraaien',
-'rollbacklink' => 'terugdraaien',
-'rollbackfailed' => 'Ongedaan maken van wijzigingen mislukt.',
-'cantrollback' => 'Ongedaan maken van wijzigingen onmogelijk: deze pagina heeft slechts 1 auteur.',
-'alreadyrolled' => 'Het is niet mogelijk om de bewerking van de pagina [[:$1]] door [[User:$2|$2]] ([[User talk:$2|overleg]]{{int:pipe-separator}}[[Special:Contributions/$2|bijdragen]]) ongedaan te maken.
+'rollback' => 'Wijzigingen ongedaan maken',
+'rollback_short' => 'Terugdraaien',
+'rollbacklink' => 'terugdraaien',
+'rollbackfailed' => 'Ongedaan maken van wijzigingen mislukt.',
+'cantrollback' => 'Ongedaan maken van wijzigingen onmogelijk: deze pagina heeft slechts 1 auteur.',
+'alreadyrolled' => 'Het is niet mogelijk om de bewerking van de pagina [[:$1]] door [[User:$2|$2]] ([[User talk:$2|overleg]]{{int:pipe-separator}}[[Special:Contributions/$2|bijdragen]]) ongedaan te maken.
Iemand anders heeft deze pagina al bewerkt of hersteld naar een eerdere versie.
De meest recente bewerking is gemaakt door [[User:$3|$3]] ([[User talk:$3|overleg]]{{int:pipe-separator}}[[Special:Contributions/$3|bijdragen]]).',
-'editcomment' => "De bewerkingssamenvatting was: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Wijzigingen door [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) hersteld tot de laatste versie door [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'De wijzigingen door $1 zijn teruggedraaid.
+'editcomment' => "De bewerkingssamenvatting was: \"''\$1''\".",
+'revertpage' => 'Wijzigingen door [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) hersteld tot de laatste versie door [[User:$1|$1]]',
+'revertpage-nouser' => 'Wijzigingen door (gebruikersnaam verwijderd) teruggedraaid naar de laatste versie door [[User:$1|$1]]',
+'rollback-success' => 'De wijzigingen door $1 zijn teruggedraaid.
De laatste versie van $2 is hersteld.',
-'sessionfailure' => 'Er lijkt een probleem te zijn met uw aanmeldsessie.
+'sessionfailure' => 'Er lijkt een probleem te zijn met uw aanmeldsessie.
Uw handeling is gestopt uit voorzorg tegen een beveiligingsrisico (dat bestaat uit mogelijke "hijacking" van deze sessie).
Ga een pagina terug, laad die pagina opnieuw en probeer het nog eens.',
@@ -2164,7 +2311,7 @@ Zie de [[Special:ProtectedPages|lijst met beveiligde pagina's]] voor alle beveil
'protectexpiry' => 'Duur:',
'protect_expiry_invalid' => 'De aangegeven duur is ongeldig.',
'protect_expiry_old' => 'Vervaldatum is in het verleden.',
-'protect-unchain' => 'Hernoemen mogelijk maken',
+'protect-unchain-permissions' => 'Overige beveiligingsinstellingen beschikbaar maken',
'protect-text' => "Hier kunt u het beveiligingsniveau voor de pagina '''<nowiki>$1</nowiki>''' bekijken en wijzigen.",
'protect-locked-blocked' => "U kunt het beveiligingsniveau niet wijzigen terwijl u geblokkeerd bent.
Hier zijn de huidige instellingen voor de pagina '''$1''':",
@@ -2194,7 +2341,7 @@ Het beveiligingsniveau wijzigen heeft geen enkel effect.",
** Bewerkingsoorlog
** Preventieve beveiliging veelbezochte pagina',
'protect-edit-reasonlist' => 'Redenen voor beveiliging bewerken',
-'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 week:1 week,2 weken:2 weeks,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year,onbeperkt:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 uur:1 hour,1 dag:1 day,1 week:1 week,2 weken:2 weeks,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year,onbeperkt:infinite',
'restriction-type' => 'Rechten:',
'restriction-level' => 'Beperkingsniveau:',
'minimum-size' => 'Min. grootte',
@@ -2236,6 +2383,7 @@ Mogelijk hebt u een verkeerde verwijzing of is de versie hersteld of verwijderd
'undelete-nodiff' => 'Geen eerdere versie gevonden.',
'undeletebtn' => 'Terugplaatsen',
'undeletelink' => 'bekijken/terugplaatsen',
+'undeleteviewlink' => 'bekijken',
'undeletereset' => 'Fomulier wissen',
'undeleteinvert' => 'Omgekeerde selectie',
'undeletecomment' => 'Reden:',
@@ -2275,19 +2423,24 @@ $1',
'contributions-title' => 'Bijdragen van $1',
'mycontris' => 'Mijn bijdragen',
'contribsub2' => 'Voor $1 ($2)',
-'nocontribs' => 'Geen wijzigingen gevonden die aan de gestelde criteria voldoen.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Geen wijzigingen gevonden die aan de gestelde criteria voldoen.',
'uctop' => '(laatste wijziging)',
'month' => 'Van maand (en eerder):',
'year' => 'Van jaar (en eerder):',
-'sp-contributions-newbies' => 'Alleen de bijdragen van nieuwe gebruikers bekijken',
-'sp-contributions-newbies-sub' => 'Voor nieuwelingen',
-'sp-contributions-newbies-title' => 'Bijdragen van nieuwe gebruikers',
-'sp-contributions-blocklog' => 'blokkeerlogboek',
-'sp-contributions-logs' => 'logboeken',
-'sp-contributions-search' => 'Zoeken naar bijdragen',
-'sp-contributions-username' => 'IP-adres of gebruikersnaam:',
-'sp-contributions-submit' => 'Bekijken',
+'sp-contributions-newbies' => 'Alleen de bijdragen van nieuwe gebruikers bekijken',
+'sp-contributions-newbies-sub' => 'Voor nieuwelingen',
+'sp-contributions-newbies-title' => 'Bijdragen van nieuwe gebruikers',
+'sp-contributions-blocklog' => 'blokkeerlogboek',
+'sp-contributions-deleted' => 'verwijderde bijdragen',
+'sp-contributions-logs' => 'logboeken',
+'sp-contributions-talk' => 'overleg',
+'sp-contributions-userrights' => 'gebruikersrechtenbeheer',
+'sp-contributions-blocked-notice' => 'Deze gebruiker is op het moment geblokkeerd.
+De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:',
+'sp-contributions-search' => 'Zoeken naar bijdragen',
+'sp-contributions-username' => 'IP-adres of gebruikersnaam:',
+'sp-contributions-submit' => 'Bekijken',
# What links here
'whatlinkshere' => 'Verwijzingen naar deze pagina',
@@ -2310,6 +2463,7 @@ $1',
# Block/unblock
'blockip' => 'Gebruiker blokkeren',
+'blockip-title' => 'Gebruiker blokkeren',
'blockip-legend' => 'Een gebruiker of IP-adres blokkeren',
'blockiptext' => "Gebruik het onderstaande formulier om schrijftoegang voor een gebruiker of IP-adres in te trekken.
Doe dit alleen als bescherming tegen vandalisme en in overeenstemming met het [[{{MediaWiki:Policy-url}}|beleid]].
@@ -2333,7 +2487,7 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
'ipbenableautoblock' => 'Automatisch de IP-adressen van deze gebruiker blokkeren',
'ipbsubmit' => 'Deze gebruiker blokkeren',
'ipbother' => 'Andere duur:',
-'ipboptions' => '2 uur:2 hours,1 dag:1 day,3 dagen:3 days,1 week:1 week,2 weken:2 weeks,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year,onbepaald:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uur:2 hours,1 dag:1 day,3 dagen:3 days,1 week:1 week,2 weken:2 weeks,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year,onbepaald:infinite',
'ipbotheroption' => 'ander verval',
'ipbotherreason' => 'Andere/extra reden:',
'ipbhidename' => 'Gebruiker in bewerkingen en lijsten verbergen',
@@ -2362,9 +2516,11 @@ Zie de [[Special:IPBlockList|Lijst van geblokkeerde IP-adressen]] voor recente b
'ipblocklist-sh-tempblocks' => 'tijdelijke blokkades $1',
'ipblocklist-sh-addressblocks' => 'enkele IP-blokkades $1',
'ipblocklist-submit' => 'Zoeken',
+'ipblocklist-localblock' => 'Lokale blokkade',
+'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|blokkade|blokkades}}',
'blocklistline' => 'Op $1 blokkeerde $2: $3 ($4)',
'infiniteblock' => 'onbeperkt',
-'expiringblock' => 'vervalt op $1',
+'expiringblock' => 'vervalt op $1 om $2',
'anononlyblock' => 'alleen anoniemen',
'noautoblockblock' => 'autoblok uitgeschakeld',
'createaccountblock' => 'registreren gebruikers geblokkeerd',
@@ -2378,7 +2534,10 @@ Zie de [[Special:IPBlockList|Lijst van geblokkeerde IP-adressen]] voor recente b
'contribslink' => 'bijdragen',
'autoblocker' => "Automatisch geblokkeerd omdat het IP-adres overeenkomt met dat van [[User:\$1|\$1]], die geblokkeerd is om de volgende reden: \"'''\$2'''\"",
'blocklogpage' => 'Blokkeerlogboek',
-'blocklog-fulllog' => 'Volledige blokkeerlogboek',
+'blocklog-showlog' => 'Deze gebruiker is voorheen geblokkeerd geweest.
+Het blokkeerlogboek wordt hieronder ter referentie weergegeven:',
+'blocklog-showsuppresslog' => 'Deze gebruiker is voorheen geblokkeerd geweest en er zijn (delen van) bewerkingen van deze gebruiker verborgen.
+Het verbergingslogboek wordt hieronder ter referentie weergegeven:',
'blocklogentry' => 'blokkeerde "[[$1]]" voor de duur van $2 $3',
'reblock-logentry' => 'heeft de instellingen voor de blokkade voor [[$1]] gewijzigd. Deze vervalt nu op $2 om $3',
'blocklogtext' => 'Hier ziet u een lijst van de recente blokkeringen en deblokkeringen.
@@ -2400,11 +2559,13 @@ Zie ook [[Special:IPBlockList|Geblokkeerde IP-adressen en gebruikers]].',
'ipb-needreblock' => '== Deze gebruiker is al geblokkeerd ==
$1 is al geblokkeerd.
Wilt u de instellingen wijzigen?',
+'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|blokkade|blokkades}}',
'ipb_cant_unblock' => 'Fout: blokkadenummer $1 niet gevonden.
Misschien is de blokkade al opgeheven.',
'ipb_blocked_as_range' => 'Fout: het IP-adres $1 is niet direct geblokkeerd en de blokkade kan niet opgeheven worden.
De blokkade is onderdeel van de reeks $2, waarvan de blokkade wel opgeheven kan worden.',
'ip_range_invalid' => 'Ongeldige IP-reeks',
+'ip_range_toolarge' => 'Reeksblokkades groter dan /$1 zijn niet toegestaan.',
'blockme' => 'Mij blokkeren',
'proxyblocker' => 'Proxyblocker',
'proxyblocker-disabled' => 'Deze functie is uitgeschakeld.',
@@ -2415,6 +2576,8 @@ Neem contact op met uw Internet-provider of uw helpdesk en stel die op de hoogte
'sorbs_create_account_reason' => 'Uw IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.
U kunt geen gebruiker registreren.',
'cant-block-while-blocked' => 'U kunt andere gebruikers niet blokkeren terwijl u zelf geblokkeerd bent.',
+'cant-see-hidden-user' => "De gebruiker die u probeert te blokken is al geblokkeerd en verborgen.
+Omdat u het recht 'hideuser' niet hebt, kunt u de blokkade van de gebruiker niet bekijken of bewerken.",
# Developer tools
'lockdb' => 'Database blokkeren',
@@ -2458,6 +2621,8 @@ Zorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
* De overlegpagina onder de nieuwe naam al bestaat;
* U het onderstaande vinkje deselecteert.",
'movearticle' => 'Te hernoemen pagina:',
+'moveuserpage-warning' => "'''Waarschuwing:''' U gaat een gebruikerspagina hernoemen.
+Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.",
'movenologin' => 'Niet aangemeld',
'movenologintext' => 'U moet [[Special:UserLogin|aangemeld]] zijn om een pagina te hernoemen.',
'movenotallowed' => "U hebt geen rechten om pagina's te hernoemen.",
@@ -2468,7 +2633,7 @@ Zorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
'move-watch' => 'Deze pagina volgen',
'movepagebtn' => 'Pagina hernoemen',
'pagemovedsub' => 'De pagina is hernoemd',
-'movepage-moved' => '\'\'\'"$1" is hernoemd naar "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" is hernoemd naar "$2"\'\'\'',
'movepage-moved-redirect' => 'Er is een doorverwijzing aangemaakt.',
'movepage-moved-noredirect' => 'Er is geen doorverwijzing aangemaakt.',
'articleexists' => 'De pagina bestaat al of de paginanaam is ongeldig.
@@ -2512,6 +2677,15 @@ Wilt u deze verwijderen om plaats te maken voor de te hernoemen pagina?',
'imageinvalidfilename' => 'De nieuwe bestandsnaam is ongeldig',
'fix-double-redirects' => 'Alle doorverwijzingen bijwerken die verwijzen naar de originele paginanaam',
'move-leave-redirect' => 'Een doorverwijzing achterlaten',
+'protectedpagemovewarning' => "'''Waarschuwing:''' Deze pagina kan alleen door beheerders hernoemd worden.
+De laatste logboekregel staat hieronder:",
+'semiprotectedpagemovewarning' => "'''Let op:''' Deze pagina kan alleen door geregistreerde gebruikers hernoemd worden.
+De laatste logboekregel staat hieronder:",
+'move-over-sharedrepo' => '== Het bestand bestaat al ==
+[[:$1]] bestaat al in een gedeelde mediadatabank.
+Door een bestand te hernoemen naar deze naam, is het bestand uit de gedeelde mediadatabank niet langer te gebruiken.',
+'file-exists-sharedrepo' => 'Deze bestandsnaam bestaat al in een gedeelde mediadatabank.
+Kies een andere bestandsnaam.',
# Export
'export' => 'Exporteren',
@@ -2534,15 +2708,21 @@ In het laatste geval kunt u ook een verwijzing gebruiken, bijvoorbeeld [[{{#Spec
'export-pagelinks' => "Pagina's waarnaar verwezen wordt toevoegen tot een diepte van:",
# Namespace 8 related
-'allmessages' => 'Systeemteksten',
-'allmessagesname' => 'Naam',
-'allmessagesdefault' => 'Standaardinhoud',
-'allmessagescurrent' => 'Huidige inhoud',
-'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
+'allmessages' => 'Systeemteksten',
+'allmessagesname' => 'Naam',
+'allmessagesdefault' => 'Standaardinhoud',
+'allmessagescurrent' => 'Huidige inhoud',
+'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
Ga naar [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [http://translatewiki.net translatewiki.net] als u wilt bijdragen aan de algemene vertaling voor MediaWiki.',
-'allmessagesnotsupportedDB' => "Deze pagina kan niet gebruikt worden, omdat '''\$wgUseDatabaseMessages''' is uitgeschakeld.",
-'allmessagesfilter' => 'Bericht naamfilter:',
-'allmessagesmodified' => 'Alleen gewijzigde systeemteksten bekijken',
+'allmessagesnotsupportedDB' => "Deze pagina kan niet gebruikt worden, omdat '''\$wgUseDatabaseMessages''' is uitgeschakeld.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filteren op aangepast:',
+'allmessages-filter-unmodified' => 'Ongewijzigd',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Gewijzigd',
+'allmessages-prefix' => 'Filteren op voorvoegsel:',
+'allmessages-language' => 'Taal:',
+'allmessages-filter-submit' => 'OK',
# Thumbnails
'thumbnail-more' => 'Vergroten',
@@ -2552,6 +2732,9 @@ Ga naar [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [h
'djvu_no_xml' => 'De XML voor het DjVu-bestand kon niet opgehaald worden',
'thumbnail_invalid_params' => 'Onjuiste parameters voor miniatuurafbeelding',
'thumbnail_dest_directory' => 'Niet in staat doelmap aan te maken',
+'thumbnail_image-type' => 'Dit bestandstype wordt niet ondersteund',
+'thumbnail_gd-library' => 'De instellingen voor de GD-bibliotheek zijn incompleet. De functie $1 mist',
+'thumbnail_image-missing' => 'Het bestand lijkt niet aanwezig te zijn: $1',
# Special:Import
'import' => "Pagina's importeren",
@@ -2620,6 +2803,7 @@ Gebruik de voorbeeldweergaveknop alvorens te bewaren.',
U kunt wel de broncode bekijken.',
'tooltip-ca-history' => 'Eerdere versies van deze pagina',
'tooltip-ca-protect' => 'Deze pagina beveiligen',
+'tooltip-ca-unprotect' => 'De beveiliging voor deze pagina opheffen',
'tooltip-ca-delete' => 'Deze pagina verwijderen',
'tooltip-ca-undelete' => 'Verwijderde bewerkingen van deze pagina terugplaatsen',
'tooltip-ca-move' => 'Deze pagina hernoemen',
@@ -2630,6 +2814,7 @@ U kunt wel de broncode bekijken.',
'tooltip-search-fulltext' => "De pagina's voor deze tekst zoeken",
'tooltip-p-logo' => 'Hoofdpaginalogo',
'tooltip-n-mainpage' => 'Ga naar de Hoofdpagina',
+'tooltip-n-mainpage-description' => 'Ga naar de Hoofdpagina',
'tooltip-n-portal' => 'Informatie over het project: wie, wat, hoe en waarom',
'tooltip-n-currentevents' => 'Achtergrondinformatie over actuele zaken',
'tooltip-n-recentchanges' => 'De lijst van recente wijzigingen in deze wiki.',
@@ -2700,10 +2885,12 @@ U kunt in de bewerkingssamenvatting een reden opgeven.',
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}',
'siteuser' => '{{SITENAME}}-gebruiker $1',
-'lastmodifiedatby' => 'Deze pagina is het laatst bewerkt op $1 om $2 door $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Anonieme {{SITENAME}}-gebruiker $1',
+'lastmodifiedatby' => 'Deze pagina is het laatst bewerkt op $1 om $2 door $3.',
'othercontribs' => 'Gebaseerd op werk van $1.',
'others' => 'anderen',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1',
+'anonusers' => 'Anonieme {{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1',
'creditspage' => 'Auteurspagina',
'nocredits' => 'Er is geen auteursinformatie beschikbaar voor deze pagina.',
@@ -2742,11 +2929,23 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
'mw_math_modern' => 'Aanbevolen methode voor recente browsers',
'mw_math_mathml' => 'MathML als mogelijk (experimenteel)',
+# Math errors
+'math_failure' => 'Parsen mislukt',
+'math_unknown_error' => 'onbekende fout',
+'math_unknown_function' => 'onbekende functie',
+'math_lexing_error' => 'lexicografische fout',
+'math_syntax_error' => 'syntactische fout',
+'math_image_error' => 'PNG-omzetting is mislukt.
+Ga na of latex, dvips en gs correct geïnstalleerd zijn en zet om',
+'math_bad_tmpdir' => 'De map voor tijdelijke bestanden voor wiskundige formules bestaat niet of kan niet gemaakt worden',
+'math_bad_output' => 'De map voor bestanden met wiskundige formules bestaat niet of kan niet gemaakt worden.',
+'math_notexvc' => 'Kan het programma texvc niet vinden; stel alles in volgens de beschrijving in math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Markeren als gecontroleerd',
'markaspatrolledtext' => 'Deze pagina als gecontroleerd markeren',
'markedaspatrolled' => 'Gemarkeerd als gecontroleerd',
-'markedaspatrolledtext' => 'De gekozen versie is gemarkeerd als gecontroleerd.',
+'markedaspatrolledtext' => 'De geselecteerde versie van [[:$1]] is gemarkeerd als gecontroleerd.',
'rcpatroldisabled' => 'De controlemogelijkheid op recente wijzigingen is uitgeschakeld.',
'rcpatroldisabledtext' => 'De mogelijkheid om recente wijzigingen als gecontroleerd aan te merken is op dit ogenblik uitgeschakeld.',
'markedaspatrollederror' => 'Kan niet als gecontroleerd worden aangemerkt',
@@ -2776,12 +2975,10 @@ $1',
'previousdiff' => '← Oudere bewerking',
'nextdiff' => 'Nieuwere bewerking →',
-# Visual comparison
-'visual-comparison' => 'Visuele vergelijking',
-
# Media information
'mediawarning' => "'''Waarschuwing''': dit bestandstype bevat mogelijk programmacode die uw systeem schade kan berokkenen.",
-'imagemaxsize' => 'Maximale grootte van afbeeldingen op de beschrijvingspagina:',
+'imagemaxsize' => "Maximale afmetingen van afbeeldingen:<br />
+''(voor op de beschrijvingspagina)''",
'thumbsize' => 'Grootte miniatuurafbeelding:',
'widthheight' => '$1x$2',
'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
@@ -2791,6 +2988,8 @@ $1',
'svg-long-desc' => '(SVG-bestand, nominaal $1 × $2 pixels, bestandsgrootte: $3)',
'show-big-image' => 'Volledige resolutie',
'show-big-image-thumb' => '<small>Afmetingen van deze weergave: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'herhalend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Nieuwe bestanden',
@@ -2828,7 +3027,7 @@ Andere velden worden verborgen.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breedte',
@@ -2955,14 +3154,14 @@ Andere velden worden verborgen.
'exif-unknowndate' => 'Datum onbekend',
-'exif-orientation-1' => 'Normaal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontaal gespiegeld', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° gedraaid', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Verticaal gespiegeld', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Gespiegeld om as linksboven-rechtsonder', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° rechtsom gedraaid', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Gespiegeld om as linksonder-rechtsboven', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° linksom gedraaid', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normaal',
+'exif-orientation-2' => 'Horizontaal gespiegeld',
+'exif-orientation-3' => '180° gedraaid',
+'exif-orientation-4' => 'Verticaal gespiegeld',
+'exif-orientation-5' => 'Gespiegeld om as linksboven-rechtsonder',
+'exif-orientation-6' => '90° rechtsom gedraaid',
+'exif-orientation-7' => 'Gespiegeld om as linksonder-rechtsboven',
+'exif-orientation-8' => '90° linksom gedraaid',
'exif-planarconfiguration-1' => 'chunky gegevensformaat',
'exif-planarconfiguration-2' => 'planar gegevensformaat',
@@ -3086,7 +3285,7 @@ Andere velden worden verborgen.
'exif-gpsmeasuremode-2' => '2-dimensionale meting',
'exif-gpsmeasuremode-3' => '3-dimensionale meting',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer per uur',
'exif-gpsspeed-m' => 'Mijl per uur',
'exif-gpsspeed-n' => 'Knopen',
@@ -3105,6 +3304,7 @@ Andere velden worden verborgen.
'watchlistall2' => 'alles',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-mailadres bevestigen',
@@ -3131,9 +3331,10 @@ U kunt zich nu [[Special:UserLogin|aanmelden]] en {{SITENAME}} gebruiken.',
'confirmemail_loggedin' => 'Uw e-mailadres is nu bevestigd.',
'confirmemail_error' => 'Er is iets verkeerd gegaan tijdens het opslaan van uw bevestiging.',
'confirmemail_subject' => 'Bevestiging e-mailadres voor {{SITENAME}}',
-'confirmemail_body' => 'Iemand, waarschijnlijk u, met het IP-adres $1, heeft zich met dit e-mailadres geregistreerd als gebruiker "$2" op {{SITENAME}}.
+'confirmemail_body' => 'Iemand, waarschijnlijk u, met het IP-adres $1,
+heeft zich met dit e-mailadres geregistreerd als gebruiker "$2" op {{SITENAME}}.
-Open de volgende verwijzing om te bevestigen dat u deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} te activeren:
+Open de volgende verwijzing in uw webbrowser om te bevestigen dat u deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} te activeren:
$3
@@ -3254,7 +3455,7 @@ U kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].'
'duplicate-defaultsort' => 'Waarschuwing: De standaardsortering "$2" krijgt voorrang voor de sortering "$1".',
# Special:Version
-'version' => 'Softwareversie', # Not used as normal message but as header for the special page itself
+'version' => 'Softwareversie',
'version-extensions' => 'Geïnstalleerde uitbreidingen',
'version-specialpages' => "Speciale pagina's",
'version-parserhooks' => 'Parserhooks',
@@ -3268,7 +3469,7 @@ U kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].'
'version-skin-extension-functions' => 'Vormgevingsuitbreidingsfuncties',
'version-hook-name' => 'Hooknaam',
'version-hook-subscribedby' => 'Geabonneerd door',
-'version-version' => 'Versie',
+'version-version' => '(Versie $1)',
'version-license' => 'Licentie',
'version-software' => 'Geïnstalleerde software',
'version-software-product' => 'Product',
@@ -3350,4 +3551,15 @@ Voer de bestandsnaam in zonder het voorvoegsel "{{ns:file}}:".',
'dberr-outofdate' => "Let op: hun indexen van onze pagina's zijn wellicht niet recent.",
'dberr-cachederror' => 'Deze pagina is een kopie uit de cache en is wellicht niet de meest recente versie.',
+# HTML forms
+'htmlform-invalid-input' => 'Er zijn problemen met enkele ingegeven waarden',
+'htmlform-select-badoption' => 'De ingegeven waarde is ongeldig.',
+'htmlform-int-invalid' => 'De ingegeven waarde is geen geheel getal.',
+'htmlform-float-invalid' => 'De waarde die u hebt opgegeven is geen getal.',
+'htmlform-int-toolow' => 'De ingegeven waarde ligt onder de minimumwaarde van $1',
+'htmlform-int-toohigh' => 'De ingegeven waarde ligt boven de maximumwaarde van $1',
+'htmlform-submit' => 'Opslaan',
+'htmlform-reset' => 'Wijzigingen ongedaan maken',
+'htmlform-selectorother-other' => 'Anders',
+
);
diff --git a/languages/messages/MessagesNn.php b/languages/messages/MessagesNn.php
index 5071dc94..d26b1176 100644
--- a/languages/messages/MessagesNn.php
+++ b/languages/messages/MessagesNn.php
@@ -99,7 +99,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__ALLTIDINNHALDSLISTE__', '__ALLTIDINNHOLDSLISTE__', '__FORCETOC__' ),
'toc' => array( '0', '__INNHALDSLISTE__', '__INNHOLDSLISTE__', '__TOC__' ),
'noeditsection' => array( '0', '__INGABOLKENDRING__', '__INGABOLKREDIGERING__', '__INGENDELENDRING__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'MÅNADNO', 'MÅNEDNÅ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'MÅNADNO', 'MÅNEDNÅ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'MÅNADNONAMN', 'MÅNEDNÅNAVN', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', 'MÅNADNOKORT', 'MÅNEDNÅKORT', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'DAGNO', 'DAGNÅ', 'CURRENTDAY' ),
@@ -147,7 +147,7 @@ $magicWords = array(
'numberofadmins' => array( '1', 'ADMINTAL', 'ADMINISTRATORTAL', 'NUMBEROFADMINS' ),
'filepath' => array( '0', 'FILSTIG', 'FILEPATH:' ),
'hiddencat' => array( '1', '__GØYMDKAT__', '__LØYNDKAT__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', '__SIDERIKAT__', '__SIDERIKATEGORI__', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesincategory' => array( '1', 'SIDERIKAT', 'SIDERIKATEGORI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'protectionlevel' => array( '1', 'VERNENIVÅ', 'PROTECTIONLEVEL' ),
);
@@ -184,6 +184,7 @@ $specialPageAliases = array(
'Listfiles' => array( 'Filliste' ),
'Newimages' => array( 'Nye filer' ),
'Listusers' => array( 'Brukarliste' ),
+ 'Listgrouprights' => array( 'Grupperettar' ),
'Statistics' => array( 'Statistikk' ),
'Randompage' => array( 'Tilfeldig side' ),
'Lonelypages' => array( 'Foreldrelause sider' ),
@@ -296,6 +297,7 @@ $messages = array(
'tog-enotifminoredits' => 'Send e-post også for småplukk',
'tog-enotifrevealaddr' => 'Vis e-postadressa mi i endrings-e-post',
'tog-shownumberswatching' => 'Vis kor mange som overvakar sida',
+'tog-oldsig' => 'Førehandsvisning av noverande signatur:',
'tog-fancysig' => 'Handsam signaturar som wikitekst (utan automatisk lenking)',
'tog-externaleditor' => 'Eksternt handsamingsprogram som standard',
'tog-externaldiff' => 'Eksternt skilnadprogram som standard',
@@ -319,6 +321,13 @@ $messages = array(
'underline-never' => 'Aldri',
'underline-default' => 'Nettlesarstandard',
+# Font style option in Special:Preferences
+'editfont-style' => 'Endre stilen for skrifttypen i området:',
+'editfont-default' => 'Nettlesar i utgangspunktet',
+'editfont-monospace' => 'Skrift med fast breidde',
+'editfont-sansserif' => 'Skrifttype utan seriffar',
+'editfont-serif' => 'Skrifttype med seriffar',
+
# Dates
'sunday' => 'søndag',
'monday' => 'måndag',
@@ -378,7 +387,7 @@ $messages = array(
'category-media-header' => 'Media i kategorien «$1»',
'category-empty' => "''Denne kategorien inneheld for tida ingen sider eller mediefiler.''",
'hidden-categories' => '{{PLURAL:$1|Gøymd kategori|Gøymde kategoriar}}',
-'hidden-category-category' => 'Gøymde kategoriar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Gøymde kategoriar',
'category-subcat-count' => '{{PLURAL:$2|Denne kategorien har berre den følgjande underkategorien.|Denne kategorien har {{PLURAL:$1|den følgjande underkategorien|dei følgjande $1 underkategoriane}}, av totalt $2.}}',
'category-subcat-count-limited' => 'Denne kategorien har {{PLURAL:$1|den følgjande underkategorien|dei følgjande $1 underkategoriane}}.',
'category-article-count' => '{{PLURAL:$2|Denne kategorien inneheld berre den følgjande sida.|Følgjande {{PLURAL:$1|side|$1 sider}} er i denne kategorien, av totalt $2.}}',
@@ -386,6 +395,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Denne kategorien inneheld berre den følgjande fila.|Følgjande {{PLURAL:$1|fil|$1 filer}} er i denne kategorien, av totalt $2.}}',
'category-file-count-limited' => 'Følgjande {{PLURAL:$1|fil|$1 filer}} er i denne kategorien.',
'listingcontinuesabbrev' => 'vidare',
+'index-category' => 'Indekserte sider',
+'noindex-category' => 'Ikkje-indekserte sider',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''MediaWiki er no installert.'''",
@@ -396,10 +407,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Spørsmål og svar om MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postliste med informasjon om nye MediaWiki-versjonar]',
-'about' => 'Om',
-'article' => 'Innhaldsside',
-'newwindow' => '(vert opna i eit nytt vindauge)',
-'cancel' => 'Avbryt',
+'about' => 'Om',
+'article' => 'Innhaldsside',
+'newwindow' => '(vert opna i eit nytt vindauge)',
+'cancel' => 'Avbryt',
+'moredotdotdot' => 'Meir …',
+'mypage' => 'Sida mi',
+'mytalk' => 'Diskusjonssida mi',
+'anontalk' => 'Diskusjonside for denne IP-adressa',
+'navigation' => 'Navigering',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Finn',
'qbbrowse' => 'Bla gjennom',
'qbedit' => 'Endre',
@@ -407,15 +426,35 @@ $messages = array(
'qbpageinfo' => 'Samanheng',
'qbmyoptions' => 'Sidene mine',
'qbspecialpages' => 'Spesialsider',
-'moredotdotdot' => 'Meir …',
-'mypage' => 'Sida mi',
-'mytalk' => 'Diskusjonssida mi',
-'anontalk' => 'Diskusjonside for denne IP-adressa',
-'navigation' => 'Navigering',
-'and' => '&#32;og',
-
-# Metadata in edit box
-'metadata_help' => 'Utvida informasjon:',
+'faq' => 'OSS',
+'faqpage' => 'Project:OSS',
+
+# Vector skin
+'vector-action-addsection' => 'Nytt emne',
+'vector-action-delete' => 'Slett',
+'vector-action-move' => 'Flytt',
+'vector-action-protect' => 'Vern',
+'vector-action-undelete' => 'Gjenopprett',
+'vector-action-unprotect' => 'Opphev vern',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Hjelpeside',
+'vector-namespace-image' => 'Fil',
+'vector-namespace-main' => 'Side',
+'vector-namespace-media' => 'Mediaside',
+'vector-namespace-mediawiki' => 'Melding',
+'vector-namespace-project' => 'Prosjektside',
+'vector-namespace-special' => 'Spesialside',
+'vector-namespace-talk' => 'Diskusjon',
+'vector-namespace-template' => 'Mal',
+'vector-namespace-user' => 'Brukarside',
+'vector-view-create' => 'Opprett',
+'vector-view-edit' => 'Endre',
+'vector-view-history' => 'Syn historikk',
+'vector-view-view' => 'Les',
+'vector-view-viewsource' => 'Syn kjelda',
+'actions' => 'Handlingar',
+'namespaces' => 'Namnerom',
+'variants' => 'Variantar',
'errorpagetitle' => 'Feil',
'returnto' => 'Attende til $1.',
@@ -465,18 +504,22 @@ $messages = array(
'otherlanguages' => 'På andre språk',
'redirectedfrom' => '(Omdirigert frå $1)',
'redirectpagesub' => 'Omdirigeringsside',
-'lastmodifiedat' => 'Sida vart sist endra $1 kl. $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Sida vart sist endra $1 kl. $2.',
'viewcount' => 'Sida er vist {{PLURAL:$1|éin gong|$1 gonger}}.',
'protectedpage' => 'Verna side',
'jumpto' => 'Gå til:',
'jumptonavigation' => 'navigering',
'jumptosearch' => 'søk',
+'view-pool-error' => 'Diverre er filtenarane nett no opptekne.
+For mange brukarar prøver å sjå denne sida.
+Vent ei lita stund, før du prøver å sjå på sida.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Om {{SITENAME}}',
'aboutpage' => 'Project:Om',
'copyright' => 'Innhaldet er utgjeve under $1.',
-'copyrightpagename' => '{{SITENAME}} opphavsrett',
'copyrightpage' => '{{ns:project}}:Opphavsrett',
'currentevents' => 'Aktuelt',
'currentevents-url' => 'Project:Aktuelt',
@@ -484,8 +527,6 @@ $messages = array(
'disclaimerpage' => 'Project:Vilkår',
'edithelp' => 'Hjelp til endring',
'edithelppage' => 'Help:Endring',
-'faq' => 'OSS',
-'faqpage' => 'Project:OSS',
'helppage' => 'Help:Innhald',
'mainpage' => 'Hovudside',
'mainpage-description' => 'Hovudside',
@@ -556,10 +597,6 @@ Dette kan òg skuldast ein feil i programvara som er nytta av {{SITENAME}}.',
'dberrortextcl' => 'Det oppstod ein syntaksfeil i databaseførespurnaden.
Den sist prøvde førespurnaden var: «$1» frå funksjonen «$2».
Databasen returnerte feilen «$3: $4».',
-'noconnect' => 'Beklagar! Wikien har tekniske problem og kunne ikkje kople til databasen.<br />
-$1',
-'nodb' => 'Klarte ikkje velje databasen $1',
-'cachederror' => 'Det følgjande er ein lagra kopi av den ønskte sida, og er ikkje nødvendigvis oppdatert.',
'laggedslavemode' => 'Åtvaring: Det er mogleg at sida ikkje er heilt oppdatert.',
'readonly' => 'Databasen er skriveverna',
'enterlockreason' => 'Skriv ein grunn for vernet, inkludert eit overslag for kva tid det vil bli oppheva',
@@ -577,6 +614,7 @@ Meld gjerne problemet til ein [[Special:ListUsers/sysop|administrator]] og oppgj
'readonly_lag' => 'Databasen er mellombels skriveverna for at databasetenarane skal kunna synkronisere seg mot kvarandre',
'internalerror' => 'Intern feil',
'internalerror_info' => 'Intern feil: $1',
+'fileappenderror' => 'Kunne ikkje leggja "$1" til "$2".',
'filecopyerror' => 'Kunne ikkje kopiere fila frå «$1» til «$2».',
'filerenameerror' => 'Kunne ikkje døype om fila frå «$1» til «$2».',
'filedeleteerror' => 'Kunne ikkje slette fila «$1».',
@@ -586,7 +624,8 @@ Meld gjerne problemet til ein [[Special:ListUsers/sysop|administrator]] og oppgj
'unexpected' => 'Uventa verdi: «$1»=«$2».',
'formerror' => 'Feil: Kunne ikkje sende skjema',
'badarticleerror' => 'Handlinga kan ikkje utførast på denne sida.',
-'cannotdelete' => 'Kunne ikkje slette fila. (Ho kan vera sletta av andre.)',
+'cannotdelete' => 'Kunne ikkje slette sida eller fila «$1».
+Ho kan allereie vere sletta av andre.',
'badtitle' => 'Feil i tittelen',
'badtitletext' => 'Den ønskte tittelen var ulovleg, tom eller feillenkja frå ein annan wiki. Kanskje inneheld han eitt eller fleire teikn som ikkje kan brukast i sidetitlar.',
'perfcached' => 'Det følgjande er frå mellomlageret åt tenaren og er ikkje nødvendigvis oppdatert.',
@@ -616,7 +655,6 @@ Grunnen som er gjeven er: ''$2''.",
'virus-unknownscanner' => 'ukjend antivirusprogram:',
# Login and logout pages
-'logouttitle' => 'Logg ut',
'logouttext' => "'''Du er no utlogga.'''
Du kan no halde fram og bruke {{SITENAME}} anonymt, eller du kan [[Special:UserLogin|logge inn att]] med same kontoen eller ein annan brukar kan logge inn.
@@ -624,7 +662,6 @@ Ver merksam på at nokre sider kan halde fram med å verte viste som om du er in
'welcomecreation' => '== Hjarteleg velkommen til {{SITENAME}}, $1! ==
Brukarkontoen din er vorten oppretta.
Ikkje gløym å endre på [[Special:Preferences|innstillingane]] dine.',
-'loginpagetitle' => 'Logg inn',
'yourname' => 'Brukarnamn:',
'yourpassword' => 'Passord:',
'yourpasswordagain' => 'Skriv opp att passordet',
@@ -635,6 +672,7 @@ Ikkje gløym å endre på [[Special:Preferences|innstillingane]] dine.',
'nav-login-createaccount' => 'Lag brukarkonto / logg inn',
'loginprompt' => 'Nettlesaren din må godta informasjonskapslar for at du skal kunna logge inn.',
'userlogin' => 'Lag brukarkonto / logg inn',
+'userloginnocreate' => 'Logg inn',
'logout' => 'Logg ut',
'userlogout' => 'Logg ut',
'notloggedin' => 'Ikkje innlogga',
@@ -646,27 +684,8 @@ Ikkje gløym å endre på [[Special:Preferences|innstillingane]] dine.',
'createaccountmail' => 'over e-post',
'badretype' => 'Passorda du skreiv inn er ikkje like.',
'userexists' => 'Brukarnamnet er alt i bruk. Vel eit anna.',
-'youremail' => 'E-post:',
-'username' => 'Brukarnamn:',
-'uid' => 'Brukar-ID:',
-'prefs-memberingroups' => 'Medlem av {{PLURAL:$1|denne gruppa|desse gruppene}}:',
-'yourrealname' => 'Verkeleg namn:',
-'yourlanguage' => 'Språk:',
-'yourvariant' => 'Språkvariant',
-'yournick' => 'Signatur:',
-'badsig' => 'Ugyldig råsignatur, sjekk HTML-kodinga.',
-'badsiglength' => 'Signaturen din er for lang. Han må vere under {{PLURAL:$1|eitt teikn|$1 teikn}}.',
-'yourgender' => 'Kjønn:',
-'gender-unknown' => 'Ikkje oppgjeve',
-'gender-male' => 'Mann',
-'gender-female' => 'Kvinna',
-'prefs-help-gender' => 'Valfritt: nytta for kjønnskorrekt referering frå mjukvara. Denne informasjonen vil vera offentleg.',
-'email' => 'E-post',
-'prefs-help-realname' => '* Namn (valfritt): Om du vel å fylle ut dette feltet, vil informasjonen bli brukt til å godskrive arbeid du har gjort.',
'loginerror' => 'Innloggingsfeil',
-'prefs-help-email' => 'Å oppgje e-postadresse er valfritt, men lar deg ta i mot nytt passord om du gløymer det gamle.
-Du kan òg velje å la andre brukarar kontakte deg på e-post via brukarsida di utan å røpe identiteten din.',
-'prefs-help-email-required' => 'E-postadresse må oppgjevast.',
+'createaccounterror' => 'Kunne ikkje oppretta kontoen: $1',
'nocookiesnew' => 'Brukarkontoen vart oppretta, men du er ikkje innlogga. {{SITENAME}} bruker informasjonskapslar for å logge inn brukarar,
nettlesaren din er innstilt for ikkje å godta desse. Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar, kan du logge inn med det nye brukarnamnet og passordet ditt.',
'nocookieslogin' => '{{SITENAME}} bruker informasjonskapslar for å logge inn brukarar, nettlesaren din er innstilt for ikkje å godta desse.
@@ -678,10 +697,11 @@ Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskaps
Brukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet rett eller [[Special:UserLogin/signup|opprett ein ny konto]].',
'nosuchusershort' => 'Det finst ikkje nokon brukar med brukarnamnet «<nowiki>$1</nowiki>». Sjekk at du har skrive rett.',
'nouserspecified' => 'Du må oppgje eit brukarnamn.',
+'login-userblocked' => 'Denne brukaren er blokkert. Innlogging er ikkje tillate.',
'wrongpassword' => 'Du har oppgjeve eit ugyldig passord. Prøv om att.',
'wrongpasswordempty' => 'Du oppgav ikkje noko passord. Ver venleg og prøv igjen.',
-'passwordtooshort' => 'Passordet er ugyldig eller for kort.
-Det må vera minst {{PLURAL:$1|eitt teikn|$1 teikn}} langt og noko anna enn brukarnamnet ditt.',
+'passwordtooshort' => 'Passord må innehalda minst {{PLURAL:$1|eitt teikn|$1 teikn}}.',
+'password-name-match' => 'Passordet ditt lyt vera noko anna enn brukarnamnet ditt.',
'mailmypassword' => 'Send nytt passord',
'passwordremindertitle' => 'Nytt passord til {{SITENAME}}',
'passwordremindertext' => 'Nokon (truleg du, frå IP-adressa $1) bad oss sende deg eit nytt passord til {{SITENAME}} ($4). Eit mellombels passord for «$2» er oppretta, og er sett til «$3». Om det var det du ville, må du logge inn
@@ -690,6 +710,7 @@ Mellombelspassordet ditt vil slutte å fungere om {{PLURAL:$5|éin dag|$5 dagar}
Dersom denne førespurnaden blei utført av nokon andre, eller om du kom på passordet og ikkje lenger ønsker å endre det, kan du ignorere denne meldinga og halde fram med å bruke det gamle passordet.',
'noemail' => 'Det er ikkje registrert noka e-postadresse åt brukaren «$1».',
+'noemailcreate' => 'Du må oppgje ei gyldig e-postadresse',
'passwordsent' => 'Eit nytt passord er sendt åt e-postadressa registrert på brukaren «$1».',
'blocked-mailpassword' => 'IP-adressa di er blokkert frå å endre sider, og du kan difor heller ikkje få nytt passord. Dette er for å hindre misbruk.',
'eauthentsent' => 'Ein stadfestings-e-post er sendt til den oppgjevne e-postadressa. For at adressa skal kunna brukast, må du følgje instruksjonane i e-posten for å stadfeste at ho faktisk tilhøyrer deg.',
@@ -708,6 +729,7 @@ Grunna dette vil ikkje vitjande som nyttar denne IP-adressa kunna oppretta nye k
'createaccount-text' => 'Nokon oppretta ein brukarkonto for $2 på {{SITENAME}} ($4). Passordet til «$2» er «$3». Du bør logge inn og endre passordet ditt med ein gong.
Du kan sjå bort frå denne meldinga dersom kontoen vart oppretta med eit uhell.',
+'usernamehasherror' => 'Brukarnamn kan ikkje innehalda nummerteikn.',
'login-throttled' => 'Du har prøvd å logge inn for mange gonger. Ver venleg og vent før du prøver igjen.',
'loginlanguagelabel' => 'Språk: $1',
@@ -721,17 +743,13 @@ Du kan sjå bort frå denne meldinga dersom kontoen vart oppretta med eit uhell.
'retypenew' => 'Nytt passord om att',
'resetpass_submit' => 'Oppgje passord og logg inn',
'resetpass_success' => 'Passordet ditt er no nullstilt! Loggar inn...',
-'resetpass_bad_temporary' => 'Ugyldig mellombels passord. Du kan allereie ha endra det, eller bede om eit nytt.',
'resetpass_forbidden' => 'Passord kan ikkje endrast',
'resetpass-no-info' => 'Du må vera innlogga for å få direktetilgang til denne sida.',
'resetpass-submit-loggedin' => 'Endra passord',
+'resetpass-submit-cancel' => 'Avbryt',
'resetpass-wrong-oldpass' => 'Feil mellombels eller noverande passord.
Du kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.',
'resetpass-temp-password' => 'Mellombels passord:',
-'resetpass-log' => 'Loggføring over attendestilling av passord',
-'resetpass-logtext' => 'Nedanfor finst ei loggføring over brukarar som har fått passorda sine stilt attende av ein administrator.',
-'resetpass-logentry' => 'endra passordet for $1',
-'resetpass-comment' => 'Grunn til attendestilling av passordet:',
# Edit page toolbar
'bold_sample' => 'Halvfeit skrift',
@@ -800,7 +818,6 @@ Ver venleg og opplyse dette ved eventuelle førespurnader.",
'blockededitsource' => "Teksten i '''endringane dine''' på '''$1''' er vist nedanfor:",
'whitelistedittitle' => 'Du lyt logge inn for å gjera endringar',
'whitelistedittext' => 'Du lyt $1 for å endre sider.',
-'confirmedittitle' => 'Du må stadfeste e-postadressa di før du kan endre noko',
'confirmedittext' => 'Du må stadfeste e-postadressa di før du kan endre sidene. Ver venleg og legg inn og stadfest e-postadressa di i [[Special:Preferences|innstillingane dine]].',
'nosuchsectiontitle' => 'Kan ikkje finna bolk',
'nosuchsectiontext' => 'Du prøvde å endre ein bolk som ikkje finst.
@@ -823,9 +840,16 @@ Vi er difor nøydde til å bruke den numeriske IP-adressa til å identifisere br
'noarticletext' => 'Det finst på noverande tidspunkt ikkje noko tekst på denne sida.
Du kan [[Special:Search/{{PAGENAME}}|søkja etter denne sidetittelen]] i andre sider, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søkja i dei relaterte loggane]
eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} endra denne sida]</span>.',
+'noarticletext-nopermission' => 'Der er i augenblinken ikkje noko tekst på denne sida.
+Du kan [[Special:Search/{{PAGENAME}}|søkja etter tittelen på denne sida]] på andre sider,
+eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sjå loggføringar med tilknytting]</span>.',
'userpage-userdoesnotexist' => 'Brukarkontoen «$1» finst ikkje. Vil du verkeleg opprette/endre denne sida?',
+'userpage-userdoesnotexist-view' => 'Brukarkontoen "$1" er ikkje oppretta.',
+'blocked-notice-logextract' => 'Denne brukaren er for tida blokkert.
+Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
'clearyourcache' => "'''Merk: Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.''' '''Firefox og Safari:''' Hald ''Shift'' nede medan du trykkjer anten ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på Mac). '''Konqueror:''' Trykk ''Oppdater'' eller på ''F5''. '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''. '''Internet Explorer:''' Hald nede ''Ctrl'' medan du trykkjer ''Oppdater'', eler trykk ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tips:''' Bruk «Førehandsvis»-knappen for å teste den nye CSS- eller JS-koden din før du lagrar.",
+'usercssyoucanpreview' => "'''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
+'userjsyoucanpreview' => "''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
'usercsspreview' => "'''Hugs at dette berre er ei førehandsvising av din eigen CSS og at han ikkje er lagra enno!'''",
'userjspreview' => "'''Hugs at du berre testar ditt eige JavaScript, det har ikkje vorte lagra enno!!'''",
'userinvalidcssjstitle' => "'''Åtvaring:''' Det finst ikkje noka sidedrakt som heiter «$1». Hugs på at vanlege .css- og .js-sider brukar titlar med små bokstavar, til dømes {{ns:user}}:Døme/monobook.css, og ikkje {{ns:user}}:Døme/Monobook.css.",
@@ -865,13 +889,16 @@ lang, altså lenger enn $2 kilobyte som er maksimum. Han kan difor ikkje lagrast
'readonlywarning' => "'''ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.'''
Systemadministratoren som låste databasen gav følgjande årsak: $1",
-'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endre ho.'''",
-'semiprotectedpagewarning' => "'''NB:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.",
+'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endre ho.'''
+Det siste loggelementet er oppgjeve under som referanse:",
+'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.
+Det siste loggelementet er oppgjeve under som referanse:",
'cascadeprotectedwarning' => "'''Åtvaring:''' Denne sida er verna så berre brukarar med administratortilgang kan endre henne. Dette er fordi ho er inkludert i {{PLURAL:$1|denne djupverna sida|desse djupverna sidene}}:",
-'titleprotectedwarning' => "'''Åtvaring: Denne sida er verna, så berre [[Special:ListGroupRights|nokre brukarar]] kan opprette henne.'''",
-'templatesused' => 'Malar som er brukte på denne sida:',
-'templatesusedpreview' => 'Malar som er brukte i denne førehandsvisinga:',
-'templatesusedsection' => 'Malar som er brukte i denne bolken:',
+'titleprotectedwarning' => "'''Åtvaring: Denne sida er verna, så berre [[Special:ListGroupRights|nokre brukarar]] kan opprette henne.'''
+Det siste loggelementet er oppgjeve under som referanse:",
+'templatesused' => '{{PLURAL:$1|Mal|Malar}} som er brukte på denne sida:',
+'templatesusedpreview' => '{{PLURAL:$1|Mal|Malar}} som er brukte i denne førehandsvisinga:',
+'templatesusedsection' => '{{PLURAL:$1|Mal|Malar}} som er brukte i denne bolken:',
'template-protected' => '(verna)',
'template-semiprotected' => '(delvis verna)',
'hiddencategories' => 'Denne sida er med i {{PLURAL:$1|éin gøymd kategori|$1 gøymde kategoriar}}:',
@@ -880,15 +907,17 @@ Systemadministratoren som låste databasen gav følgjande årsak: $1",
'nocreatetext' => '{{SITENAME}} har avgrensa tilgang til å opprette nye sider.
Du kan gå attende og endre ei eksisterande side, [[Special:UserLogin|logge inn eller opprette ein brukarkonto]].',
'nocreate-loggedin' => 'Du har ikkje tilgang til å opprette nye sider.',
+'sectioneditnotsupported-title' => 'Endring av bolkar er ikkje støtta',
+'sectioneditnotsupported-text' => 'Endring av bolkar er ikkje støtta på denne sida.',
'permissionserrors' => 'Tilgangsfeil',
'permissionserrorstext' => 'Du har ikkje tilgang til å gjere dette, {{PLURAL:$1|grunnen|grunnane}} til det finn du her:',
'permissionserrorstext-withaction' => 'Du har ikkje løyve til å $2 {{PLURAL:$1|på grunn av|av desse grunnane}}:',
-'recreate-deleted-warn' => "'''Åtvaring: Du nyopprettar ei side som tidlegare har vorte sletta.'''
+'recreate-moveddeleted-warn' => "'''Åtvaring: Du attopprettar ei side som tidlegare har vorte sletta.'''
-Du bør tenkje over om det er lurt å halde fram med å endre denne sida.
+Du bør tenkje over om det er høveleg å halde fram med å endre denne sida.
Sletteloggen for sida finn du her:",
-'deleted-notice' => 'Denne sida har blitt sletta. Sletteloggen er vist nedanfor.',
-'deletelog-fulllog' => 'Vis full logg',
+'moveddeleted-notice' => 'Denne sida har blitt sletta. Sletteloggen og flytteloggen er vist nedanfor for referanse.',
+'log-fulllog' => 'Sjå full loggføring',
'edit-hook-aborted' => 'Endring avbroten av ein funksjon, utan forklaring.',
'edit-gone-missing' => 'Kunne ikkje oppdatere sida.
Det ser ut til at ho er sletta.',
@@ -928,7 +957,7 @@ Grunnen som vart gjeven av $3 er ''$2''",
'currentrev' => 'Noverande versjon',
'currentrev-asof' => 'Noverande versjon frå $1',
'revisionasof' => 'Versjonen frå $1',
-'revision-info' => 'Versjonen frå $1 av $2', # Additionally available: $3: revision id
+'revision-info' => 'Versjonen frå $1 av $2',
'previousrevision' => '←Eldre versjon',
'nextrevision' => 'Nyare versjon→',
'currentrevisionlink' => 'Noverande versjon',
@@ -939,7 +968,7 @@ Grunnen som vart gjeven av $3 er ''$2''",
'page_last' => 'siste',
'histlegend' => 'Merk av for dei versjonane du vil samanlikne og trykk [Enter] eller klikk på knappen nedst på sida.<br />Forklaring: (no) = skilnad frå den noverande versjonen, (førre) = skilnad frå den førre versjonen, <b>s</b> = småplukk',
'history-fieldset-title' => 'Finn dato',
-'deletedrev' => '[sletta]',
+'history-show-deleted' => 'Berre sletta',
'histfirst' => 'Første',
'histlast' => 'Siste',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -948,66 +977,112 @@ Grunnen som vart gjeven av $3 er ''$2''",
# Revision feed
'history-feed-title' => 'Endringshistorikk',
'history-feed-description' => 'Endringshistorikk for denne sida på wikien',
-'history-feed-item-nocomment' => '$1 på $2', # user at time
+'history-feed-item-nocomment' => '$1 på $2',
'history-feed-empty' => 'Den etterspurde sida finst ikkje. Ho kan vere sletta frå wikien, eller vere flytta. Prøv å [[Special:Search|søke på wikien]] for relevante nye sider.',
# Revision deletion
-'rev-deleted-comment' => '(samandraget er fjerna)',
-'rev-deleted-user' => '(brukarnamnet er fjerna)',
-'rev-deleted-event' => '(fjerna loggoppføring)',
-'rev-deleted-text-permission' => "Denne sideversjonen er vorten '''sletta'''. Det finst kan henda detaljar om dette i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-text-view' => "Denne sideversjonen er vorten '''sletta'''.
-Som administrator kan du sjå han; det finst kan henda detaljar i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-no-diff' => "Du kan ikkje sjå denne skilnaden av di ein av versjonane er vorten '''sletta'''.
-Det finst kan henda detaljar i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-unhide-diff' => "Éin av versjonane i denne skilnaden er vorten '''sletta'''.
-Det finst kan henda detaljar i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].
-Som ein administrator kan du enno [$1 sjå skilnaden] om du ynskjer å halda fram.",
-'rev-delundel' => 'vis/gøym',
-'revisiondelete' => 'Slett/attopprett versjonar',
-'revdelete-nooldid-title' => 'Ugyldig målversjon',
-'revdelete-nooldid-text' => 'Du har ikkje oppgjeve kva for versjon(ar) du vil utføre denne handlinga på, versjonen eksisterer ikkje, eller du prøver å gøyme den noverande versjonen.',
-'revdelete-nologtype-title' => 'Ingen loggtype oppgjeven',
-'revdelete-nologtype-text' => 'Du har ikkje oppgjeve ein loggtype som denne handlinga skal verta utførd på.',
-'revdelete-toomanytargets-title' => 'For mange mål',
-'revdelete-toomanytargets-text' => 'Du har oppgjeve for mange måltypar som denne handlinga skal verta utførd på.',
-'revdelete-nologid-title' => 'Ugyldig loggelement',
-'revdelete-nologid-text' => 'Du har anten ikkje oppgjeve eit loggelement som denne funksjonen skal nytta, eller det oppgjeve loggelementet finst ikkje.',
-'revdelete-selected' => "'''{{PLURAL:$2|Vald versjon|Valde versjonar}} av [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Vald loggoppføring|Valde loggoppføringar}}:'''",
-'revdelete-text' => "Sletta versjonar og oppføringar vert framleis synlege i sidehistorikken og loggane, men delar av innhaldet deira vert ikkje lenger offentleggjort.'''
-
-Andre administratorar på {{SITENAME}} kan framleis sjå det gøymde innhaldet og attopprette det, med mindre fleire avgrensingar vert lagde inn av sideoperatørane. Ver venleg å stadfesta at du meiner å gjera dette, og at du skjønar fylgjene, og at du gjer dette i samsvar med [[{{MediaWiki:Policy-url}}|MediaWiki sine retningsliner]].",
-'revdelete-suppress-text' => "Løyning av sideversjonar bør '''berre''' verta nytta i dei fylgjande tilfella:
+'rev-deleted-comment' => '(samandraget er fjerna)',
+'rev-deleted-user' => '(brukarnamnet er fjerna)',
+'rev-deleted-event' => '(fjerna loggoppføring)',
+'rev-deleted-user-contribs' => 'brukarnamn eller IP-adresse er fjerna - endringa er skjult i bidraga',
+'rev-deleted-text-permission' => "Denne sideversjonen er vorten '''sletta'''.
+Det kan vere detaljar i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-deleted-text-unhide' => "Denne sideversjonen er vorten '''sletta'''.
+Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].
+Som administrator kan du framleis [$1 sjå denne versjonen] om du ynskjer å halde fram.",
+'rev-suppressed-text-unhide' => "Denne versjonen har vorten '''utelatt'''.
+Det finst kanskje meir informasjon i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} utelatingsloggen].
+Som administrator kan du framleis [$1 sjå versjonen] om du ynskjer å halde fram.",
+'rev-deleted-text-view' => "Denne sideversjonen er vorten '''sletta'''.
+Som administrator kan du sjå han. Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-text-view' => "Denne sideversjonen har vorten '''utelatt'''.
+Som administrator kan du sjå han. Det finst kanskje meir informasjon i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} utelatingsloggen].",
+'rev-deleted-no-diff' => "Du kan ikkje vise denne skilnaden fordi ein av versjonane er vorten '''sletta'''.
+Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-no-diff' => "Du kan ikkje sjå denne skilnaden av di ein av versjonane er vorten '''sletta'''.",
+'rev-deleted-unhide-diff' => "Éin av versjonane i denne skilnaden er vorten '''sletta'''.
+Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
+Som administrator kan du framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-suppressed-unhide-diff' => "Ei av sideversjonane i denne lista over versjonar har vorte '''skjult'''.
+Det kan vera detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
+Som administrator kan du framleis [$1 sjå versjonen] om du ynskjer det.",
+'rev-deleted-diff-view' => "Ei av endringaen i dette oversynet har vorte '''sletta'''.
+Som administrator kan du sjå oversynet; det kan vera detaljar i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-diff-view' => "En av endringaen i dette oversynet har vorte '''skjult'''.
+Som administrator kan du sjå dette oversynet; det kan vera detaljar i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} skjulingsloggen].",
+'rev-delundel' => 'vis/gøym',
+'rev-showdeleted' => 'syn',
+'revisiondelete' => 'Slett/attopprett versjonar',
+'revdelete-nooldid-title' => 'Ugyldig målversjon',
+'revdelete-nooldid-text' => 'Du har ikkje oppgjeve kva for versjon(ar) du vil utføre denne handlinga på, versjonen eksisterer ikkje, eller du prøver å gøyme den noverande versjonen.',
+'revdelete-nologtype-title' => 'Ingen loggtype oppgjeven',
+'revdelete-nologtype-text' => 'Du har ikkje oppgjeve ein loggtype som denne handlinga skal verta utførd på.',
+'revdelete-nologid-title' => 'Ugyldig loggelement',
+'revdelete-nologid-text' => 'Du har anten ikkje oppgjeve eit loggelement som denne funksjonen skal nytta, eller det oppgjeve loggelementet finst ikkje.',
+'revdelete-no-file' => 'Fila som vart synt til finst ikkje.',
+'revdelete-show-file-confirm' => 'Er du viss på at du ynskjer å sjå ein sletta versjon av fila "<nowiki>$1</nowiki>" frå $2 ved $3?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Vald versjon|Valde versjonar}} av [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Vald loggoppføring|Valde loggoppføringar}}:'''",
+'revdelete-text' => "Sletta versjonar og oppføringar vert framleis synlege i sidehistorikken og loggane, men delar av innhaldet deira vert ikkje lenger offentleggjort.'''
+Andre administratorar på {{SITENAME}} kan framleis sjå det gøymde innhaldet og attopprette det, med mindre fleire avgrensingar vert lagde inn av sideoperatørane.",
+'revdelete-confirm' => 'Stadfest at du ynskjer å gjera dette, at du skjønar konsekvensane, og at du gjer det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinene]].',
+'revdelete-suppress-text' => "Løyning av sideversjonar bør '''berre''' verta nytta i dei fylgjande tilfella:
* Upassanda personleg informasjon
*: ''heimeadresser og -telefonnummer, personnummer, osb.''",
-'revdelete-legend' => 'Vel avgrensing for synlegdom',
-'revdelete-hide-text' => 'Gøym endringssamandraga',
-'revdelete-hide-name' => 'Gøym handling og sidenamn',
-'revdelete-hide-comment' => 'Gøym endringssamandraga',
-'revdelete-hide-user' => 'Gøym brukarnamn/IP-adresse',
-'revdelete-hide-restricted' => 'Løyn data frå administratorar slik som med andre brukarar',
-'revdelete-suppress' => 'Fjern informasjon frå administratorar også',
-'revdelete-hide-image' => 'Skjul filinnhald',
-'revdelete-unsuppress' => 'Fjern avgrensingane på dei attoppretta versjonane',
-'revdelete-log' => 'Årsak:',
-'revdelete-submit' => 'Utfør på vald versjon',
-'revdelete-logentry' => 'endra versjonsvisinga til [[$1]]',
-'logdelete-logentry' => 'endra visinga av loggoppføringane til [[$1]]',
-'revdelete-success' => "'''Endringa av versjonsvisinga var vellukka.'''",
-'logdelete-success' => "'''Visinga av loggoppføringar er endra.'''",
-'revdel-restore' => 'endra synlegheita',
-'pagehist' => 'Sidehistorikk',
-'deletedhist' => 'Sletta historikk',
-'revdelete-content' => 'innhald',
-'revdelete-summary' => 'Samandrag',
-'revdelete-uname' => 'brukarnamn',
-'revdelete-restricted' => 'la til avgrensingar for administratorar',
-'revdelete-unrestricted' => 'fjerna avgrensingar for administratorar',
-'revdelete-hid' => 'løynde $1',
-'revdelete-unhid' => 'gjorde $1 synleg',
-'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|versjon|versjonar}}',
-'logdelete-log-message' => '$1 for {{PLURAL:$2|eitt element|$2 element}}',
+'revdelete-legend' => 'Vel avgrensing for synlegdom',
+'revdelete-hide-text' => 'Gøym endringssamandraga',
+'revdelete-hide-image' => 'Skjul filinnhald',
+'revdelete-hide-name' => 'Gøym handling og sidenamn',
+'revdelete-hide-comment' => 'Gøym endringssamandraga',
+'revdelete-hide-user' => 'Gøym brukarnamn/IP-adresse',
+'revdelete-hide-restricted' => 'Løyn data frå administratorar slik som med andre brukarar',
+'revdelete-radio-same' => '(ikkje endra)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nei',
+'revdelete-suppress' => 'Fjern informasjon frå administratorar også',
+'revdelete-unsuppress' => 'Fjern avgrensingane på dei attoppretta versjonane',
+'revdelete-log' => 'Årsak:',
+'revdelete-submit' => 'Bruk på {{PLURAL:$1|den valde versjonen|dei valde versjonane}}',
+'revdelete-logentry' => 'endra versjonsvisinga til [[$1]]',
+'logdelete-logentry' => 'endra visinga av loggoppføringane til [[$1]]',
+'revdelete-success' => "'''Endringa av versjonsvisinga var vellukka.'''",
+'revdelete-failure' => "'''Kunne ikkje oppatera korleis versjonen vert synt:'''
+$1",
+'logdelete-success' => "'''Visinga av loggoppføringar er endra.'''",
+'logdelete-failure' => "'''Korleis loggen skal vera synleg kunne ikkje verta stilt inn:'''
+$1",
+'revdel-restore' => 'endra synlegheita',
+'pagehist' => 'Sidehistorikk',
+'deletedhist' => 'Sletta historikk',
+'revdelete-content' => 'innhald',
+'revdelete-summary' => 'Samandrag',
+'revdelete-uname' => 'brukarnamn',
+'revdelete-restricted' => 'la til avgrensingar for administratorar',
+'revdelete-unrestricted' => 'fjerna avgrensingar for administratorar',
+'revdelete-hid' => 'løynde $1',
+'revdelete-unhid' => 'gjorde $1 synleg',
+'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|versjon|versjonar}}',
+'logdelete-log-message' => '$1 for {{PLURAL:$2|eitt element|$2 element}}',
+'revdelete-hide-current' => 'Feil under skjuling av objektet datert $2, $1: dette er den gjeldande revisjonen.
+Han kan ikkje skjulast.',
+'revdelete-show-no-access' => 'Feil under vising av objekt datert $2, $1: dette objektet har vorte markert "avgrensa".
+Du har ikkje tilgjenge til det.',
+'revdelete-modify-no-access' => 'Feil ved endringa av eininga datert $2, $1: denne eininga har vorte markert som "avgrensa".
+Du har ikkje tilgang til henne.',
+'revdelete-modify-missing' => 'Feil ved endring av eininga med ID $1: ho finst ikkje i databasen!',
+'revdelete-no-change' => "'''Åtvaring:''' objektet datert $2, $1 hadde allereie etterspurt innstillingar for korleis eininga skal vera synleg.",
+'revdelete-concurrent-change' => 'Feil ved endring av eininga datert $2, $1: statusen ser ut til å ha vorte endra av einkvan annan medan du prøvde å endre ho.
+Sjekk gjerne loggføringa.',
+'revdelete-only-restricted' => 'Feil under gøyming av objektet datert $2 $1: du kan ikkje gøyma objekt for administratorar utan å i tillegg velja eit av dei andre visingsvala.',
+'revdelete-reason-dropdown' => '*Vanlege grunnar til sletting
+** Brot på opphavsrettar
+** Ikkje høveleg personleg informasjon
+** Mogleg falskt sladder',
+'revdelete-otherreason' => 'Annan årsak, eller tilleggsårsak:',
+'revdelete-reasonotherlist' => 'Annan grunn',
+'revdelete-edit-reasonlist' => 'Endre grunnar til sletting',
+'revdelete-offender' => 'Forfattar av denne versjonen:',
# Suppression log
'suppressionlog' => 'Logg over historikkfjerningar',
@@ -1044,67 +1119,13 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
'mergelogpagetext' => 'Nedanfor finn du ei liste over dei siste flettingane av ein sidehistorikk til ein annan.',
# Diffs
-'history-title' => 'Historikken til «$1»',
-'difference' => '(Skilnad mellom versjonar)',
-'lineno' => 'Line $1:',
-'compareselectedversions' => 'Samanlikn valde versjonar',
-'visualcomparison' => 'Visuell samanlikning',
-'wikicodecomparison' => 'Wikitekstsamanlikning',
-'editundo' => 'angre',
-'diff-multi' => '({{PLURAL:$1|Éin versjon mellom desse er ikkje vist|$1 versjonar mellom desse er ikkje viste}}.)',
-'diff-movedto' => 'flytta til $1',
-'diff-styleadded' => '$1 stil lagt til',
-'diff-added' => '$1 lagt til',
-'diff-changedto' => 'endra til $1',
-'diff-movedoutof' => 'flytta ut av $1',
-'diff-styleremoved' => '$1 stil fjerna',
-'diff-removed' => '$1 fjerna',
-'diff-changedfrom' => 'endra frå $1',
-'diff-src' => 'kjelde',
-'diff-withdestination' => 'med mål $1',
-'diff-with' => '&#32;med $1 $2',
-'diff-with-final' => '&#32;og $1 $2',
-'diff-width' => 'breidde',
-'diff-height' => 'høgd',
-'diff-p' => "eit '''avsnitt'''",
-'diff-blockquote' => "eit '''sitat'''",
-'diff-h1' => "ei '''overskrift (nivå 1)'''",
-'diff-h2' => "ei '''overskrift (nivå 2)'''",
-'diff-h3' => "ei '''overskrift (nivå 3)'''",
-'diff-h4' => "ei '''overskrift (nivå 4)'''",
-'diff-h5' => "ei '''overskrift (nivå 5)'''",
-'diff-pre' => "eit '''førhandsformatert avsnitt'''",
-'diff-div' => "ei '''inndeling'''",
-'diff-ul' => "ei '''usortert liste'''",
-'diff-ol' => "ei '''sortert liste'''",
-'diff-li' => "eit '''listeelement'''",
-'diff-table' => "ein '''tabell'''",
-'diff-tbody' => "'''innhaldet i ein tabell'''",
-'diff-tr' => "ei '''rad'''",
-'diff-td' => "ei '''celle'''",
-'diff-th' => "ei '''overskrift'''",
-'diff-br' => "eit '''linjeskift'''",
-'diff-hr' => "ei '''horisontal linje'''",
-'diff-code' => "eit '''kjeldekodeavsnitt'''",
-'diff-dl' => "ei '''definisjonsliste'''",
-'diff-dt' => "eit '''definisjonsuttrykk'''",
-'diff-dd' => "ein '''definisjon'''",
-'diff-input' => "eit '''innlegg'''",
-'diff-form' => "eit '''skjema'''",
-'diff-img' => "eit '''bilete'''",
-'diff-span' => "ei '''variasjonsbreidde'''",
-'diff-a' => "ei '''lenkje'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''halvfeit'''",
-'diff-strong' => "'''feit'''",
-'diff-em' => "'''markering'''",
-'diff-font' => "'''skrifttype'''",
-'diff-big' => "'''stor'''",
-'diff-del' => "'''sletta'''",
-'diff-tt' => "'''fast breidde'''",
-'diff-sub' => "'''senka'''",
-'diff-sup' => "'''opphøgd'''",
-'diff-strike' => "'''gjennomstreka'''",
+'history-title' => 'Historikken til «$1»',
+'difference' => '(Skilnad mellom versjonar)',
+'lineno' => 'Line $1:',
+'compareselectedversions' => 'Samanlikn valde versjonar',
+'showhideselectedversions' => 'Syn/skjul valde versjonar',
+'editundo' => 'angre',
+'diff-multi' => '({{PLURAL:$1|Éin versjon mellom desse er ikkje vist|$1 versjonar mellom desse er ikkje viste}}.)',
# Search results
'searchresults' => 'Søkjeresultat',
@@ -1112,30 +1133,25 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
'searchresulttext' => 'For meir info om søkjefunksjonen i {{SITENAME}}, sjå [[{{MediaWiki:Helppage}}|Hjelp]].',
'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som byrjar med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenkjer til «$1»]])",
'searchsubtitleinvalid' => 'Du søkte etter «$1»',
-'noexactmatch' => "* '''{{SITENAME}} har ikkje noka side med [[:$1|dette namnet]].'''
-* <big>'''Du kan [[:$1|opprette ho no]]'''</big>.<br />
-(Men du bør søkje etter andre namnevariasjonar først, slik at du ikkje lagar ei side som allereie finst under eit anna namn!)",
-'noexactmatch-nocreate' => "'''Inga side har tittelen «$1».'''",
'toomanymatches' => 'Søket gav for mange treff, prøv ei anna spørjing',
'titlematches' => 'Sidetitlar med treff på førespurnaden',
'notitlematches' => 'Ingen sidetitlar hadde treff på førespurnaden',
'textmatches' => 'Sider med treff på førespurnaden',
'notextmatches' => 'Ingen sider hadde treff på førespurnaden',
-'prevn' => 'førre $1',
-'nextn' => 'neste $1',
+'prevn' => 'førre {{PLURAL:$1|$1}}',
+'nextn' => 'neste {{PLURAL:$1|$1}}',
'prevn-title' => 'Førre $1 {{PLURAL:$1|resultat|resultat}}',
'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultat}}',
'shown-title' => 'Syn $1 {{PLURAL:$1|resultat|resultat}} for kvar side',
-'viewprevnext' => 'Vis ($1) ($2) ($3).',
+'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Søkjeval',
'searchmenu-exists' => "* Sida '''[[$1]]'''",
'searchmenu-new' => "'''Opprett sida «[[:$1|$1]]» på denne wikien.'''",
'searchhelp-url' => 'Help:Innhald',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sjå gjennom alle sider med denne forstavinga]]',
'searchprofile-articles' => 'Innhaldssider',
-'searchprofile-articles-and-proj' => 'Innhalds- og prosjektsider',
-'searchprofile-project' => 'Prosjektsider',
-'searchprofile-images' => 'Filer',
+'searchprofile-project' => 'Hjelp- og prosjektsider',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alt',
'searchprofile-advanced' => 'Avansert',
'searchprofile-articles-tooltip' => 'Søk i $1',
@@ -1143,8 +1159,6 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
'searchprofile-images-tooltip' => 'Søk etter filer',
'searchprofile-everything-tooltip' => 'Søk i alt innhald (inkludert diskusjonssider)',
'searchprofile-advanced-tooltip' => 'Søk i visse namnerom',
-'prefs-search-nsdefault' => 'Søk med standardverdiar:',
-'prefs-search-nscustom' => 'Søk i valde namnerom:',
'search-result-size' => '$1 ({{PLURAL:$2|eitt|$2}} ord)',
'search-result-score' => 'Relevans: $1&nbsp;%',
'search-redirect' => '(omdirigering $1)',
@@ -1157,11 +1171,12 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
'search-mwsuggest-disabled' => 'ingen forslag',
'search-relatedarticle' => 'Relatert',
'mwsuggest-disable' => 'Slå av AJAX-forslag',
+'searcheverything-enable' => 'Søk i alle namneroma',
'searchrelated' => 'relatert',
'searchall' => 'alle',
'showingresults' => "Nedanfor er opp til {{PLURAL:$1|'''eitt''' resultat|'''$1''' resultat}} som byrjar med nummer '''$2''' vist{{PLURAL:$1||e}}.",
'showingresultsnum' => "Nedanfor er {{PLURAL:$3|'''eitt''' resultat|'''$3''' resultat}} som byrjar med nummer '''$2''' vist.",
-'showingresultstotal' => "Syner resultat {{PLURAL:$4|'''$1''' av '''$3'''|'''$1&ndash;$2''' av '''$3'''}} nedanfor",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
'nonefound' => "'''Merk:''' Som standard blir det berre søkt i enkelte namnerom.
For å søkja i alle, bruk prefikset ''all:'' (det inkluderer diskusjonssider, malar etc.), eller bruk det ønskte namnerommet som prefiks.",
'search-nonefound' => 'Ingen resultat svarte til førespurnaden.',
@@ -1170,95 +1185,132 @@ For å søkja i alle, bruk prefikset ''all:'' (det inkluderer diskusjonssider, m
'powersearch-ns' => 'Søk i namnerom:',
'powersearch-redir' => 'Vis omdirigeringar',
'powersearch-field' => 'Søk etter',
+'powersearch-togglelabel' => 'Merk:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Ingen',
'search-external' => 'Eksternt søk',
'searchdisabled' => 'Søkjefunksjonen på {{SITENAME}} er slått av akkurat no.
I mellomtida kan du søkje gjennom Google.
Ver merksam på at registra deira kan vera utdaterte.',
+# Quickbar
+'qbsettings' => 'Snøggmeny',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Venstre',
+'qbsettings-fixedright' => 'Høgre',
+'qbsettings-floatingleft' => 'Flytande venstre',
+'qbsettings-floatingright' => 'Flytande høgre',
+
# Preferences page
-'preferences' => 'Innstillingar',
-'mypreferences' => 'Innstillingane mine',
-'prefs-edits' => 'Tal på endringar:',
-'prefsnologin' => 'Ikkje innlogga',
-'prefsnologintext' => 'Du må vere <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logga inn]</span> for å endre brukarinnstillingane.',
-'prefsreset' => 'Innstillingane er tilbakestilte til siste lagra versjon.',
-'qbsettings' => 'Snøggmeny',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Venstre',
-'qbsettings-fixedright' => 'Høgre',
-'qbsettings-floatingleft' => 'Flytande venstre',
-'qbsettings-floatingright' => 'Flytande høgre',
-'changepassword' => 'Skift passord',
-'skin' => 'Drakt',
-'skin-preview' => 'førehandsvis',
-'math' => 'Matematiske formlar',
-'dateformat' => 'Datoformat',
-'datedefault' => 'Standard',
-'datetime' => 'Dato og klokkeslett',
-'math_failure' => 'Klarte ikkje å tolke formelen',
-'math_unknown_error' => 'ukjend feil',
-'math_unknown_function' => 'ukjend funksjon',
-'math_lexing_error' => 'lexerfeil',
-'math_syntax_error' => 'syntaksfeil',
-'math_image_error' => 'PNG-konverteringa var mislukka; sjekk at latex, dvips, gs, og convert er rett installerte',
-'math_bad_tmpdir' => 'Kan ikkje skrive til eller laga mellombels mattemappe',
-'math_bad_output' => 'Kan ikkje skrive til eller laga mattemappe',
-'math_notexvc' => 'Manglar texvc-program; sjå math/README for konfigurasjon.',
-'prefs-personal' => 'Brukaropplysningar',
-'prefs-rc' => 'Siste endringar',
-'prefs-watchlist' => 'Overvakingsliste',
-'prefs-watchlist-days' => 'Tal på dagar som viser i overvakingslista:',
-'prefs-watchlist-days-max' => '(høgst sju dagar)',
-'prefs-watchlist-edits' => 'Talet på endringar som viser i den utvida overvakingslista:',
-'prefs-watchlist-edits-max' => '(høgst 1000)',
-'prefs-misc' => 'Andre',
-'prefs-resetpass' => 'Endra passord',
-'saveprefs' => 'Lagre',
-'resetprefs' => 'Rull attende',
-'restoreprefs' => 'Hent attende alle standardinnstillingane',
-'textboxsize' => 'Endring',
-'prefs-edit-boxsize' => 'Storleiken på redigeringsvindauget.',
-'rows' => 'Rekkjer',
-'columns' => 'Kolonnar',
-'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultat per side',
-'contextlines' => 'Liner per resultat',
-'contextchars' => 'Teikn per line i resultatet',
-'stub-threshold' => 'Grense (i byte) for at frø/spirer skal formaterast <a href="#" class="stub">slik</a>:',
-'recentchangesdays' => 'Tal på dagar som viser på siste endringar:',
-'recentchangesdays-max' => '(høgst $1 {{PLURAL:$1|dag|dagar}})',
-'recentchangescount' => 'Tal på endringar som skal verta viste i «siste endringar», sidehistorikkar og i loggar som standard:',
-'savedprefs' => 'Brukarinnstillingane er lagra.',
-'timezonelegend' => 'Tidssone:',
-'timezonetext' => 'Tal timar lokal tid skil seg frå tenaren si tid.',
-'localtime' => 'Lokaltid:',
-'timezoneselect' => 'Tidssona:',
-'timezoneuseserverdefault' => 'Nytt standardinnstillinga til tenaren',
-'timezoneuseoffset' => 'Anna (oppgje skilnad)',
-'timezoneoffset' => 'Skilnad¹:',
-'servertime' => 'Tenartid:',
-'guesstimezone' => 'Hent tidssone frå nettlesaren',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlanterhavet',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiahavet',
-'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillat e-post frå andre brukarar',
-'prefs-searchoptions' => 'Søkjealternativ',
-'prefs-namespaces' => 'Namnerom',
-'defaultns' => 'Søk som standard i desse namneromma:',
-'default' => 'standard',
-'files' => 'Filer',
-'prefs-custom-css' => 'Eigendefinert CSS',
-'prefs-custom-js' => 'Eigendefinert JavaScript',
+'preferences' => 'Innstillingar',
+'mypreferences' => 'Innstillingane mine',
+'prefs-edits' => 'Tal på endringar:',
+'prefsnologin' => 'Ikkje innlogga',
+'prefsnologintext' => 'Du må vere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logga inn]</span> for å endre brukarinnstillingane.',
+'changepassword' => 'Skift passord',
+'prefs-skin' => 'Drakt',
+'skin-preview' => 'førehandsvis',
+'prefs-math' => 'Matematiske formlar',
+'datedefault' => 'Standard',
+'prefs-datetime' => 'Dato og klokkeslett',
+'prefs-personal' => 'Brukaropplysningar',
+'prefs-rc' => 'Siste endringar',
+'prefs-watchlist' => 'Overvakingsliste',
+'prefs-watchlist-days' => 'Tal på dagar som viser i overvakingslista:',
+'prefs-watchlist-days-max' => '(høgst sju dagar)',
+'prefs-watchlist-edits' => 'Talet på endringar som viser i den utvida overvakingslista:',
+'prefs-watchlist-edits-max' => '(høgst 1000)',
+'prefs-watchlist-token' => 'Emne på overvakingslista:',
+'prefs-misc' => 'Andre',
+'prefs-resetpass' => 'Endra passord',
+'prefs-email' => 'Val for e-post',
+'prefs-rendering' => 'Utsjånad',
+'saveprefs' => 'Lagre',
+'resetprefs' => 'Rull attende',
+'restoreprefs' => 'Hent attende alle standardinnstillingane',
+'prefs-editing' => 'Endring',
+'prefs-edit-boxsize' => 'Storleiken på redigeringsvindauget.',
+'rows' => 'Rekkjer',
+'columns' => 'Kolonnar',
+'searchresultshead' => 'Søk',
+'resultsperpage' => 'Resultat per side',
+'contextlines' => 'Liner per resultat',
+'contextchars' => 'Teikn per line i resultatet',
+'stub-threshold' => 'Grense (i byte) for at frø/spirer skal formaterast <a href="#" class="stub">slik</a>:',
+'recentchangesdays' => 'Tal på dagar som viser på siste endringar:',
+'recentchangesdays-max' => '(høgst $1 {{PLURAL:$1|dag|dagar}})',
+'recentchangescount' => 'Tal på endringar som viser som standard:',
+'prefs-help-recentchangescount' => 'Dette inkluderer nylege endringar, sidehistorikk og loggar.',
+'prefs-help-watchlist-token' => 'Om du fyller ut dette feltet med eit hemmeleg tal, vil det opprettast ei RSS opplisting for overvakingslista di.
+Alle som veit det rette talet vil vera i stand til å lesa overvakingslista di, så vél gjerne ein trygg verdi.
+Her er det framlegg til eit tal som kan nyttast, tilfelleleg henta fram: $1',
+'savedprefs' => 'Brukarinnstillingane er lagra.',
+'timezonelegend' => 'Tidssone:',
+'localtime' => 'Lokaltid:',
+'timezoneuseserverdefault' => 'Nytt standardinnstillinga til tenaren',
+'timezoneuseoffset' => 'Anna (oppgje skilnad)',
+'timezoneoffset' => 'Skilnad¹:',
+'servertime' => 'Tenartid:',
+'guesstimezone' => 'Hent tidssone frå nettlesaren',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlanterhavet',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiahavet',
+'timezoneregion-pacific' => 'Stillehavet',
+'allowemail' => 'Tillat e-post frå andre brukarar',
+'prefs-searchoptions' => 'Søkjealternativ',
+'prefs-namespaces' => 'Namnerom',
+'defaultns' => 'Søk elles i desse namneromma:',
+'default' => 'standard',
+'prefs-files' => 'Filer',
+'prefs-custom-css' => 'Eigendefinert CSS',
+'prefs-custom-js' => 'Eigendefinert JavaScript',
+'prefs-reset-intro' => 'Du kan nytta denne sida til å tilbakestilla innstillingane dine til standardinnstillingane.
+Dette kan ikke tilbakestillast.',
+'prefs-emailconfirm-label' => 'Stadfesting av e-post:',
+'prefs-textboxsize' => 'Storleiken til redigeringsvindauga',
+'youremail' => 'E-post:',
+'username' => 'Brukarnamn:',
+'uid' => 'Brukar-ID:',
+'prefs-memberingroups' => 'Medlem av {{PLURAL:$1|denne gruppa|desse gruppene}}:',
+'prefs-registration' => 'Registreringstid:',
+'yourrealname' => 'Verkeleg namn:',
+'yourlanguage' => 'Språk:',
+'yourvariant' => 'Språkvariant',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Kommentarar på diskusjonssider bør alltid signerast med «<nowiki>~~~~</nowiki>», som vil konverterast til signaturen din med tidspunkt.',
+'badsig' => 'Ugyldig råsignatur, sjekk HTML-kodinga.',
+'badsiglength' => 'Signaturen din er for lang. Han må vere under {{PLURAL:$1|eitt teikn|$1 teikn}}.',
+'yourgender' => 'Kjønn:',
+'gender-unknown' => 'Ikkje oppgjeve',
+'gender-male' => 'Mann',
+'gender-female' => 'Kvinna',
+'prefs-help-gender' => 'Valfritt: nytta for kjønnskorrekt referering frå mjukvara. Denne informasjonen vil vera offentleg.',
+'email' => 'E-post',
+'prefs-help-realname' => '* Namn (valfritt): Om du vel å fylle ut dette feltet, vil informasjonen bli brukt til å godskrive arbeid du har gjort.',
+'prefs-help-email' => 'Å oppgje e-postadresse er valfritt, men lar deg ta i mot nytt passord om du gløymer det gamle.
+Du kan òg velje å la andre brukarar kontakte deg på e-post via brukarsida di utan å røpe identiteten din.',
+'prefs-help-email-required' => 'E-postadresse må oppgjevast.',
+'prefs-info' => 'Grunnleggjande informasjon',
+'prefs-i18n' => 'Internasjonalisering',
+'prefs-signature' => 'Signatur',
+'prefs-dateformat' => 'Datoformat',
+'prefs-timeoffset' => 'Tidsforskuving',
+'prefs-advancedediting' => 'Avanserte val',
+'prefs-advancedrc' => 'Avanserte val',
+'prefs-advancedrendering' => 'Avanserte val',
+'prefs-advancedsearchoptions' => 'Avanserte val',
+'prefs-advancedwatchlist' => 'Avanserte val',
+'prefs-display' => 'Val for vising',
+'prefs-diffs' => 'Skilnader',
# User rights
-'userrights' => 'Administrering av brukartilgang', # Not used as normal message but as header for the special page itself
+'userrights' => 'Administrering av brukartilgang',
'userrights-lookup-user' => 'Administrer brukargrupper',
'userrights-user-editname' => 'Skriv inn brukarnamn:',
'editusergroup' => 'Endre brukargrupper',
@@ -1329,6 +1381,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
'right-bigdelete' => 'Slette sider med lange historikkar',
'right-deleterevision' => 'Slette og gjenopprette enkeltendringar av sider',
'right-deletedhistory' => 'Sjå sletta sidehistorikk utan tilhøyrande sidetekst',
+'right-deletedtext' => 'Sjå sletta tekst og endringar i høve til sletta versjonar',
'right-browsearchive' => 'Søk i sletta sider',
'right-undelete' => 'Attopprett sider',
'right-suppressrevision' => 'Sjå og gjenopprett skjulte siderevisjonar',
@@ -1342,6 +1395,8 @@ Ver merksam på at registra deira kan vera utdaterte.',
'right-editprotected' => 'Endre verna sider',
'right-editinterface' => 'Redigere brukargrensesnittet',
'right-editusercssjs' => 'Endre andre brukarar sine CSS- og JS-filer',
+'right-editusercss' => 'Endre andre brukarar sine CSS-filer',
+'right-edituserjs' => 'Endre andre brukarar sine JS-filer',
'right-rollback' => 'Raskt tilbakestille den siste brukaren som har endra ei viss side',
'right-markbotedits' => 'Markere tilbakerullingar som robotendringar',
'right-noratelimit' => 'Vert ikkje påverka av snøggleiksgrenser',
@@ -1358,6 +1413,8 @@ Ver merksam på at registra deira kan vera utdaterte.',
'right-siteadmin' => 'Låse og låse opp databasen',
'right-reset-passwords' => 'Nullstilla passorda til andre brukarar',
'right-override-export-depth' => 'Eksporter sider inkludert lenkte sider til ei djupn på 5',
+'right-versiondetail' => 'Syn utvida informasjon om versjonen av programvara',
+'right-sendemail' => 'Senda e-post til andre brukarar',
# User rights log
'rightslog' => 'Brukartilgangslogg',
@@ -1407,6 +1464,15 @@ Ver merksam på at registra deira kan vera utdaterte.',
'recentchanges-legend' => 'Alternativ for siste endringar',
'recentchangestext' => 'På denne sida ser du dei sist endra sidene i {{SITENAME}}.',
'recentchanges-feed-description' => 'Fylg med på dei siste endringane på denne wikien med dette abonnementet.',
+'recentchanges-label-legend' => 'Forklaring: $1.',
+'recentchanges-legend-newpage' => '$1 – ny side',
+'recentchanges-label-newpage' => 'Denne redigeringa oppretta ei ny side',
+'recentchanges-legend-minor' => '$1 – mindre endring',
+'recentchanges-label-minor' => 'Dette er ei mindre endring',
+'recentchanges-legend-bot' => '$1 – botendring',
+'recentchanges-label-bot' => 'Denne endringa vart gjort av ein bot',
+'recentchanges-legend-unpatrolled' => '$1 – upatruljert endring',
+'recentchanges-label-unpatrolled' => 'Denne endringa er ikkje patruljert enno',
'rcnote' => "Nedanfor er {{PLURAL:$1|den siste endringa|dei siste '''$1''' endringane}} gjort {{PLURAL:$2|den siste dagen|dei siste '''$2''' dagane}}, sidan $4, kl. $5.",
'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan ''' $2''' viste.",
'rclistfrom' => 'Vis nye endringar sidan $1',
@@ -1433,6 +1499,8 @@ Ver merksam på at registra deira kan vera utdaterte.',
# Recent changes linked
'recentchangeslinked' => 'Relaterte endringar',
+'recentchangeslinked-feed' => 'Relaterte endringar',
+'recentchangeslinked-toolbox' => 'Relaterte endringar',
'recentchangeslinked-title' => 'Endringar relaterte til «$1»',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Det er ikkje gjort endringar på sidene som var lenkja hit i den oppgjevne perioden.',
@@ -1443,8 +1511,8 @@ Ver merksam på at registra deira kan vera utdaterte.',
# Upload
'upload' => 'Last opp fil',
'uploadbtn' => 'Last opp fil',
-'reupload' => 'Nytt forsøk',
'reuploaddesc' => 'Attende til opplastingsskjemaet.',
+'upload-tryagain' => 'Send inn endra filskildring',
'uploadnologin' => 'Ikkje innlogga',
'uploadnologintext' => 'Du lyt vera [[Special:UserLogin|innlogga]] for å kunna laste opp filer.',
'upload_directory_missing' => 'Opplastingsmappa ($1) manglar og kunne ikkje opprettast av tenaren.',
@@ -1475,6 +1543,7 @@ For å bruke ei fil på ei side, bruk ei slik lenkje:
'minlength1' => 'Filnamn må ha minst eitt teikn.',
'illegalfilename' => 'Filnamnet «$1» inneheld teikn som ikkje er tillatne i sidetitlar. Skift namn på fila og prøv på nytt.',
'badfilename' => 'Namnet på fila har vorte endra til «$1».',
+'filetype-mime-mismatch' => 'Filendinga samsvarar ikkje med ein MIME-type.',
'filetype-badmime' => 'Filer av MIME-typen «$1» kan ikkje lastast opp.',
'filetype-bad-ie-mime' => 'Kan ikkje lasta opp fila då Internet Explorer ville merka ho som "$1", ein ikkje-tillate og potensielt farleg filtype.',
'filetype-unwanted-type' => "«'''.$1'''» er ein uynskt filtype.
@@ -1493,7 +1562,6 @@ For å bruke ei fil på ei side, bruk ei slik lenkje:
* Namnet på fila du lastar opp: '''<tt>[[:$1]]</tt>'''
* Namnet på den eksisterande fila: '''<tt>[[:$2]]</tt>'''
Ver venleg og vel eit anna namn.",
-'fileexists-thumb' => "<center>'''Den eksisterande fila'''</center>",
'fileexists-thumbnail-yes' => "Fila ser ut til å vere eit bilete med redusert storleik. [[$1|thumb]]
Ver venleg og sjekk fila '''<tt>[[:$1]]</tt>'''.
Dersom denne er det same biletet i original storleik, er det ikkje nødvendig å laste opp ein mindre versjon.",
@@ -1508,6 +1576,7 @@ Om du framleis ønskjer å laste opp fila, gå tilbake og last ho opp med eit an
'file-deleted-duplicate' => 'Ei identisk fil ([[$1]]) har tidlegare blitt sletta. Du bør sjekka slettehistorikken til denne før du held fram med å lasta ho opp på nytt.',
'successfulupload' => 'Opplastinga er ferdig',
'uploadwarning' => 'Opplastingsåtvaring',
+'uploadwarning-text' => 'Ver venleg og endra filskildringa nedanfor og prøv på nytt',
'savefile' => 'Lagre fil',
'uploadedimage' => 'Lasta opp «[[$1]]»',
'overwroteimage' => 'lasta opp ein ny versjon av «[[$1]]»',
@@ -1515,11 +1584,14 @@ Om du framleis ønskjer å laste opp fila, gå tilbake og last ho opp med eit an
'uploaddisabledtext' => 'Filopplasting er slått av.',
'php-uploaddisabledtext' => 'PHP-filopplasting er deaktivert. Sjå innstillinga for file_uploads.',
'uploadscripted' => 'Fila inneheld HTML- eller skriptkode som feilaktig kan bli tolka og køyrd av nettlesarar.',
-'uploadcorrupt' => 'Fila er øydelagd eller har feil etternamn. Sjekk fila og prøv på nytt.',
'uploadvirus' => 'Fila innheld virus! Detaljar: $1',
+'upload-source' => 'Kjeldefil',
'sourcefilename' => 'Filsti:',
+'sourceurl' => 'URL til kjelda:',
'destfilename' => 'Målfilnamn:',
'upload-maxfilesize' => 'Maksimal filstorleik: $1',
+'upload-description' => 'Filskildring',
+'upload-options' => 'Val for opplasting',
'watchthisupload' => 'Overvak denne fila',
'filewasdeleted' => 'Ei fil med dette namnet har tidlegare vore lasta opp og sletta. Du bør sjekke $1 før du prøvar å laste henne opp att.',
'upload-wasdeleted' => "'''Åtvaring: Du nyopplastar ei fil som tidlegare har vorte sletta.'''
@@ -1542,12 +1614,43 @@ MGP # Pentax
PICT # div.
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'Feil protokoll',
-'upload-proto-error-text' => 'Fjernopplasting krev nettadresser som byrjar med <code>http://</code> eller <code>ftp://</code>.',
-'upload-file-error' => 'Intern feil',
-'upload-file-error-text' => 'Ein intern feil oppstod under forsøk på å lage ei mellombels fil på tenaren. Ver venleg og ta kontakt med ein [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Ukjend feil ved opplastinga',
-'upload-misc-error-text' => 'Ein ukjend feil oppstod under opplastinga. Ver venleg og stadfest at nettadressa er gyldig og tilgjengeleg, og prøv ein gong til. Dersom problemet held fram, ta kontakt med ein [[Special:ListUsers/sysop|administrator]].',
+'upload-proto-error' => 'Feil protokoll',
+'upload-proto-error-text' => 'Fjernopplasting krev nettadresser som byrjar med <code>http://</code> eller <code>ftp://</code>.',
+'upload-file-error' => 'Intern feil',
+'upload-file-error-text' => 'Ein intern feil oppstod under forsøk på å lage ei mellombels fil på tenaren. Ver venleg og ta kontakt med ein [[Special:ListUsers/sysop|administrator]].',
+'upload-misc-error' => 'Ukjend feil ved opplastinga',
+'upload-misc-error-text' => 'Ein ukjend feil oppstod under opplastinga. Ver venleg og stadfest at nettadressa er gyldig og tilgjengeleg, og prøv ein gong til. Dersom problemet held fram, ta kontakt med ein [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'URL-en inneheldt for mange omdirigeringar',
+'upload-unknown-size' => 'Ukjend storleik',
+'upload-http-error' => 'Ein HTTP-feil oppstod: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Tilgjenge avslått',
+'img-auth-nopathinfo' => 'PATH_INFO manglar.
+Filtenaren din er ikkje sett opp for å gje denne informasjonen.
+Han kan vera CGI-basert og stør ikkje img_auth.
+Sjå http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Den ynskte filstien er ikkje i den oppsette opplastingskatalogen',
+'img-auth-badtitle' => 'Kan ikkje laga ein gyldig ttitel ut frå "$1".',
+'img-auth-nologinnWL' => 'Du er ikkje logga inn, og "$1" er ikkje på kvitlista.',
+'img-auth-nofile' => 'Fila "$1" finst ikkje',
+'img-auth-isdir' => 'Du prøver å få tilgjenge til katalogen "$1".
+Berre tilgjenge til filer er tillete.',
+'img-auth-streaming' => 'Sendar "$1".',
+'img-auth-public' => 'Funksjonen til img_auth.php er å laga filer frå ein privat wiki.
+Denne wikien er sett opp som ein ålmennt tilgjengeleg wiki.
+For best tryggleik, er img_auth.php sett ut av funksjon.',
+'img-auth-noread' => 'Brukaren har ikkje rettar til å lesa «$1».',
+
+# HTTP errors
+'http-invalid-url' => 'Ugyldig URL: $1',
+'http-invalid-scheme' => 'URL-ar med «$1»-førestavinga er ikkje støtta.',
+'http-request-error' => 'HTTP-førespurnaden feila grunna ein ukjend feil.',
+'http-read-error' => 'HTTP-lesefeil.',
+'http-timed-out' => 'Tidsavbrot på HTTP-førespurnad.',
+'http-curl-error' => 'Feil under henting av nettadressa: $1',
+'http-host-unreachable' => 'Kunne ikkje nå nettadressa',
+'http-bad-status' => 'Det var eit problem under HTTP-førespurnaden: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kunne ikkje nå nettadressa',
@@ -1556,6 +1659,7 @@ PICT # div.
'upload-curl-error28-text' => 'Sida brukte for lang tid på å svare. Ver venleg og sjekk om sida fungerer, vent litt og prøv ein gong til. Det kan også vere lurt å prøve på ei tid med mindre nettrafikk.',
'license' => 'Lisensiering:',
+'license-header' => 'Lisensiering:',
'nolicense' => 'Ingen lisens er vald',
'license-nopreview' => '(Førehandsvising er ikkje tilgjengeleg)',
'upload_source_url' => ' (ei gyldig, offentleg tilgjengeleg nettadresse)',
@@ -1574,6 +1678,7 @@ PICT # div.
'listfiles_count' => 'Versjonar',
# File description page
+'file-anchor-link' => 'Fil',
'filehist' => 'Filhistorikk',
'filehist-help' => 'Klikk på dato/klokkeslett for å sjå fila slik ho var på det tidspunktet.',
'filehist-deleteall' => 'slett alle',
@@ -1588,6 +1693,7 @@ PICT # div.
'filehist-dimensions' => 'Oppløysing',
'filehist-filesize' => 'Filstorleik',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Fila manglar',
'imagelinks' => 'Fillenkjer',
'linkstoimage' => '{{PLURAL:$1|Den følgjande sida|Dei følgjande $1 sidene}} har lenkjer til denne fila:',
'linkstoimage-more' => 'Meir enn $1 {{PLURAL:$1|side|sider}} lenkjer til denne fila.
@@ -1597,15 +1703,16 @@ Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
'morelinkstoimage' => 'Vis [[Special:WhatLinksHere/$1|fleire lenkjer]] til denne fila.',
'redirectstofile' => 'Følgjande {{PLURAL:$1|fil er ei omdirigering|filer er omdirigeringar}} til denne fila:',
'duplicatesoffile' => 'Følgjande {{PLURAL:$1|fil er ein dublett|filer er dublettar}} av denne fila ([[Special:FileDuplicateSearch/$2|fleire detaljar]]):',
-'sharedupload' => 'Denne fila er frå $1 og kan verta brukt av andre prosjekt.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Sjå $1 for meir informasjon.',
-'shareduploadwiki-desc' => 'Skildringa på $1 i det delte lageret er vist nedanfor.',
-'shareduploadwiki-linktext' => 'filskildringssida',
-'noimage' => 'Det finst inga fil med dette namnet, men du kan $1.',
-'noimage-linktext' => 'laste opp eitt',
+'sharedupload' => 'Denne fila er frå $1 og kan verta brukt av andre prosjekt.',
+'sharedupload-desc-there' => 'Denne fila er frå $1 og kan verta nytta av andre prosjekt.
+Sjå [$2 filskildringssida] for meir informasjon.',
+'sharedupload-desc-here' => 'Denne fila er frå $1 og kan verta nytta av andre prosjekt.
+Skildringa frå [$2 filskildringssida] der er vist nedanfor.',
+'filepage-nofile' => 'Det finst ikkje noka fil med dette namnet.',
+'filepage-nofile-link' => 'Inga fil med dette namnet finst, men du kan [$1 lasta ho opp].',
'uploadnewversion-linktext' => 'Last opp ny versjon av denne fila',
-'shared-repo-from' => 'frå $1', # $1 is the repository name
-'shared-repo' => 'eit sams fillager', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'frå $1',
+'shared-repo' => 'eit sams fillager',
# File reversion
'filerevert' => 'Rull attende $1',
@@ -1634,6 +1741,7 @@ Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
** Brot på opphavsretten
** Ligg dobbelt',
'filedelete-edit-reasonlist' => 'Endre grunnar til sletting',
+'filedelete-maintenance' => 'Sletting og attoppretting af filer er mellombels ikkje mogleg på grunn av vedlikehald.',
# MIME search
'mimesearch' => 'MIME-søk',
@@ -1654,7 +1762,7 @@ Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
# Random page
'randompage' => 'Tilfeldig side',
-'randompage-nopages' => 'Det finst ingen sider i namnerommet «$1».',
+'randompage-nopages' => 'Det finst ingen sider i {{PLURAL:$2|det fylgjande namneromet|dei fylgjande namneroma}}: $1.',
# Random redirect
'randomredirect' => 'Tilfeldig omdirigering',
@@ -1666,6 +1774,7 @@ Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
'statistics-header-edits' => 'Endringsstatistikk',
'statistics-header-views' => 'Visingsstatistikk',
'statistics-header-users' => 'Brukarstatistikk',
+'statistics-header-hooks' => 'Anna statistikk',
'statistics-articles' => 'Innhaldssider',
'statistics-pages' => 'Sider',
'statistics-pages-desc' => 'Alle sider på wikien, inkludert diskusjonssider, omdirigeringar o.l.',
@@ -1691,8 +1800,8 @@ Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
'brokenredirects' => 'Blindvegsomdirigeringar',
'brokenredirectstext' => 'Dei følgjande omdirigeringane viser til ei side som ikkje finst:',
-'brokenredirects-edit' => '(endre)',
-'brokenredirects-delete' => '(slett)',
+'brokenredirects-edit' => 'endre',
+'brokenredirects-delete' => 'slett',
'withoutinterwiki' => 'Sider utan lenkjer til andre språk',
'withoutinterwiki-summary' => 'Desse sidene manglar lenkjer til sider på andre språk:',
@@ -1798,7 +1907,7 @@ Merk at andre internettsider kan ha direkte lenkjer til filer, og difor kan file
# Special:Categories
'categories' => 'Kategoriar',
-'categoriespagetext' => 'Følgjande kategoriar inneheld sider eller media.
+'categoriespagetext' => 'Følgjande {{PLURAL:$1|category contains|kategoriar inneheld}} sider eller media.
[[Special:UnusedCategories|Unytta kategoriar]] vert ikkje vist her.
Sjå òg [[Special:WantedCategories|ønska kategoriar]].',
'categoriesfrom' => 'Vis kategoriar frå og med:',
@@ -1806,8 +1915,9 @@ Sjå òg [[Special:WantedCategories|ønska kategoriar]].',
'special-categories-sort-abc' => 'sorter alfabetisk',
# Special:DeletedContributions
-'deletedcontributions' => 'Sletta brukarbidrag',
-'deletedcontributions-title' => 'Sletta brukarbidrag',
+'deletedcontributions' => 'Sletta brukarbidrag',
+'deletedcontributions-title' => 'Sletta brukarbidrag',
+'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
'linksearch' => 'Eksterne lenkjer',
@@ -1822,6 +1932,16 @@ Sjå òg [[Special:WantedCategories|ønska kategoriar]].',
'listusersfrom' => 'Vis brukarnamna frå og med:',
'listusers-submit' => 'Vis',
'listusers-noresult' => 'Ingen brukarnamn vart funne.',
+'listusers-blocked' => '(konto blokkert)',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brukarar',
+'activeusers-intro' => 'Dette er ei liste over brukarar som har hatt ei eller anna form for aktivitet innanfor {{PLURAL:$1|den siste dagen|dei siste dagane}}.',
+'activeusers-count' => '{{PLURAL:$1|Éi endring|$1 endringar}} {{PLURAL:$3|det siste døgeret|dei siste $3 døgra}}',
+'activeusers-from' => 'Vis brukarar frå og med:',
+'activeusers-hidebots' => 'Skjul botar',
+'activeusers-hidesysops' => 'Skjul administratorar',
+'activeusers-noresult' => 'Ingen brukarar funne.',
# Special:Log/newusers
'newuserlogpage' => 'Brukaropprettingslogg',
@@ -1832,16 +1952,22 @@ Sjå òg [[Special:WantedCategories|ønska kategoriar]].',
'newuserlog-autocreate-entry' => 'Konto oppretta automatisk',
# Special:ListGroupRights
-'listgrouprights' => 'Rettar for brukargrupper',
-'listgrouprights-summary' => 'Følgjande liste viser brukargruppene som er definert på denne wikien, og kvar rettar dei har. Meir informasjon om dei ulike rettane ein kan ha finn ein [[{{MediaWiki:Listgrouprights-helppage}}|her]].',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Tilgangar',
-'listgrouprights-helppage' => 'Help:Gruppetilgangar',
-'listgrouprights-members' => '(liste over medlemmer)',
-'listgrouprights-addgroup' => 'Kan leggje til {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-addgroup-all' => 'Kan leggje til alle grupper',
-'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights' => 'Rettar for brukargrupper',
+'listgrouprights-summary' => 'Følgjande liste viser brukargruppene som er definert på denne wikien, og kvar rettar dei har. Meir informasjon om dei ulike rettane ein kan ha finn ein [[{{MediaWiki:Listgrouprights-helppage}}|her]].',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Innvilga rettar</span>
+* <span class="listgrouprights-granted">Tilbaketrukne rettar</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Tilgangar',
+'listgrouprights-helppage' => 'Help:Gruppetilgangar',
+'listgrouprights-members' => '(liste over medlemmer)',
+'listgrouprights-addgroup' => 'Kan leggje til {{PLURAL:$2|gruppa|gruppene}}: $1',
+'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppa|gruppene}}: $1',
+'listgrouprights-addgroup-all' => 'Kan leggje til alle grupper',
+'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights-addgroup-self' => 'Kan leggja til {{PLURAL:$2|gruppa|gruppene}} til eigen konto: $1',
+'listgrouprights-removegroup-self' => 'Kan ta vekk {{PLURAL:$2|gruppe|grupper}} frå eigen konto: $1',
+'listgrouprights-addgroup-self-all' => 'Kan leggja til alle gruppene til sin eigen konto',
+'listgrouprights-removegroup-self-all' => 'Kan ta vekk alle gruppene frå sin eigen konto',
# E-mail user
'mailnologin' => 'Inga avsendaradresse',
@@ -1914,28 +2040,33 @@ Om du seinare vil fjerne sida frå overvakingslista, klikk på «Fjern overvakin
'enotif_lastvisited' => 'Sjå $1 for alle endringane sidan siste vitjing.',
'enotif_lastdiff' => 'Sjå $1 for å sjå denne endringa.',
'enotif_anon_editor' => 'anonym brukar $1',
-'enotif_body' => 'Hei $WATCHINGUSERNAME,
+'enotif_body' => 'Kjære $WATCHINGUSERNAME,
-{{SITENAME}}-sida $PAGETITLE har vorte $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR, sjå $PAGETITLE_URL for den gjeldande versjonen.
+
+{{SITENAME}}-sida $PAGETITLE er vorten $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR, sjå $PAGETITLE_URL for den gjeldande versjonen.
$NEWPAGE
-Bidragytaren sitt endringssamandrag: $PAGESUMMARY $PAGEMINOREDIT
+Bidragsytaren sitt endringssamandrag: $PAGESUMMARY $PAGEMINOREDIT
Du kan kontakte bidragsytaren gjennom:
e-post: $PAGEEDITOR_EMAIL , eller
wiki: $PAGEEDITOR_WIKI
-Du får ikkje fleire endringsmeldingar om denne sida før du har vitja henne på nytt. Du kan også tilbakestille endringsmeldingsstatus for alle sidene på overvakingslista di.
+Du får ikkje fleire endringsmeldingar om denne sida før du har vitja henne på nytt.
+Du kan også tilbakestille endringsmeldingsstatus for alle sidene på overvakingslista di.
- Helsing din overvakande {{SITENAME}}-endringsmeldingssystemven
+ Helsing det venlege {{SITENAME}}-meldingssystemet ditt
--
For å endre innstillingane for overvakingslista di, gå til
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
For hjelp og meir informasjon:
-{{fullurl:Hjelp:Overvaking}}',
+$UNWATCHURL
+
+Tilbakemeldingar og anna hjelp:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Slett sida',
@@ -1946,9 +2077,10 @@ For hjelp og meir informasjon:
'exblank' => 'sida var tom',
'delete-confirm' => 'Slett «$1»',
'delete-legend' => 'Slett',
-'historywarning' => 'Åtvaring: Sida du held på å slette har ein historikk:',
+'historywarning' => "'''Åtvaring:''' Sida du held på å slette har ein historikk med om lag $1 {{PLURAL:$1|versjon|versjonar}}:",
'confirmdeletetext' => 'Du held på å varig slette ei side eller eit bilete saman med heile den tilhøyrande historikken frå databasen. Stadfest at du verkeleg vil gjere dette, at du skjønar konsekvensane, og at du gjer dette i tråd med [[{{MediaWiki:Policy-url}}|retningslinene]].',
'actioncomplete' => 'Ferdig',
+'actionfailed' => 'Handlinga kunne ikkje verta utførd',
'deletedtext' => '«<nowiki>$1</nowiki>» er sletta. Sjå $2 for eit oversyn over dei siste slettingane.',
'deletedarticle' => 'sletta «[[$1]]»',
'suppressedarticle' => 'gøymde «[[$1]]»',
@@ -1968,18 +2100,19 @@ For hjelp og meir informasjon:
'delete-warning-toobig' => 'Denne sida har ein lang endringshistorikk, med meir enn {{PLURAL:$1|$1&nbsp;endring|$1&nbsp;endringar}}. Dersom du slettar henne kan det forstyrre handlingar i databasen til {{SITENAME}}, ver varsam.',
# Rollback
-'rollback' => 'Rull attende endringar',
-'rollback_short' => 'Rull attende',
-'rollbacklink' => 'rull attende',
-'rollbackfailed' => 'Kunne ikkje rulle attende',
-'cantrollback' => 'Kan ikkje rulle attende fordi den siste brukaren er den einaste forfattaren.',
-'alreadyrolled' => 'Kan ikkje rulle attende den siste endringa av [[$1]] gjort av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) fordi nokon andre alt har endra sida att eller fjerna endringa.
+'rollback' => 'Rull attende endringar',
+'rollback_short' => 'Rull attende',
+'rollbacklink' => 'rull attende',
+'rollbackfailed' => 'Kunne ikkje rulle attende',
+'cantrollback' => 'Kan ikkje rulle attende fordi den siste brukaren er den einaste forfattaren.',
+'alreadyrolled' => 'Kan ikkje rulle attende den siste endringa av [[$1]] gjort av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) fordi nokon andre alt har endra sida att eller fjerna endringa.
Den siste endringa vart gjort av [[User:$3|$3]] ([[User talk:$3|brukardiskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Samandraget for endringa var: «''$1''».", # only shown if there is an edit comment
-'revertpage' => 'Attenderulla endring gjort av [[Special:Contributions/$2|$2]] til tidlegare versjon endra av [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Rulla attende endringane av $1, tilbake til siste versjon av $2.',
-'sessionfailure' => 'Det ser ut til å vera eit problem med innloggingsøkta di. Handlinga er vorten avbroten for å vera føre var mot kidnapping av økta. Bruk attendeknappen i nettlesaren din og prøv om att.',
+'editcomment' => "Samandraget for endringa var: «''$1''».",
+'revertpage' => 'Attenderulla endring gjort av [[Special:Contributions/$2|$2]] til tidlegare versjon endra av [[User:$1|$1]]',
+'revertpage-nouser' => 'Tilbakestilte endringar av (brukarnamn fjerna) til den siste versjonen av [[User:$1|$1]]',
+'rollback-success' => 'Rulla attende endringane av $1, tilbake til siste versjon av $2.',
+'sessionfailure' => 'Det ser ut til å vera eit problem med innloggingsøkta di. Handlinga er vorten avbroten for å vera føre var mot kidnapping av økta. Bruk attendeknappen i nettlesaren din og prøv om att.',
# Protect
'protectlogpage' => 'Vernelogg',
@@ -1995,7 +2128,7 @@ Den siste endringa vart gjort av [[User:$3|$3]] ([[User talk:$3|brukardiskusjon]
'protectexpiry' => 'Endar:',
'protect_expiry_invalid' => 'Utløpstida er ugyldig.',
'protect_expiry_old' => 'Utløpstida har allereie vore.',
-'protect-unchain' => 'Tillat flytting',
+'protect-unchain-permissions' => 'Lås opp fleire alternativ for vern',
'protect-text' => "Her kan du kan sjå og endre på graden av vern for sida '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Du kan ikkje endre nivå på vern medan du er blokkert. Dette er dei noverande innstillingane for sida '''$1''':",
'protect-locked-dblock' => "Du kan ikkje endre nivå på vern fordi databasen er låst akkurat no. Dette er dei noverande innstillingane for sida '''$1''':",
@@ -2022,7 +2155,7 @@ Her er dei noverande innstillingane for sida '''$1''':",
** Endringskrig
** Side med mange vitjande',
'protect-edit-reasonlist' => 'Endrar verneårsaker',
-'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 veke:1 week,2 veker:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,endelaus:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 veke:1 week,2 veker:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,endelaus:infinite',
'restriction-type' => 'Tilgang:',
'restriction-level' => 'Avgrensingsnivå:',
'minimum-size' => 'Minimumstorleik',
@@ -2061,6 +2194,7 @@ Innhaldet i dei sletta versjonane er berre tilgjengeleg for administratorar.',
'undelete-nodiff' => 'Fann ingen eldre versjonar.',
'undeletebtn' => 'Attopprett',
'undeletelink' => 'syn/attopprett',
+'undeleteviewlink' => 'syn',
'undeletereset' => 'Nullstill',
'undeleteinvert' => 'Inverter val',
'undeletecomment' => 'Årsak:',
@@ -2098,19 +2232,23 @@ $1',
'contributions-title' => 'Bidrag av $1',
'mycontris' => 'Eigne bidrag',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Det vart ikkje funne nokon endringar gjorde av denne brukaren.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Det vart ikkje funne nokon endringar gjorde av denne brukaren.',
'uctop' => ' (øvst)',
'month' => 'Månad:',
'year' => 'År:',
-'sp-contributions-newbies' => 'Vis berre bidrag frå nye brukarar',
-'sp-contributions-newbies-sub' => 'Frå nye brukarkontoar',
-'sp-contributions-newbies-title' => 'Brukarbidrag av nye brukarar',
-'sp-contributions-blocklog' => 'Blokkeringslogg',
-'sp-contributions-logs' => 'loggar',
-'sp-contributions-search' => 'Søk etter bidrag',
-'sp-contributions-username' => 'IP-adresse eller brukarnamn:',
-'sp-contributions-submit' => 'Søk',
+'sp-contributions-newbies' => 'Vis berre bidrag frå nye brukarar',
+'sp-contributions-newbies-sub' => 'Frå nye brukarkontoar',
+'sp-contributions-newbies-title' => 'Brukarbidrag av nye brukarar',
+'sp-contributions-blocklog' => 'Blokkeringslogg',
+'sp-contributions-deleted' => 'sletta brukarbidrag',
+'sp-contributions-logs' => 'loggar',
+'sp-contributions-talk' => 'diskusjon',
+'sp-contributions-userrights' => 'administrering av brukartilgang',
+'sp-contributions-blocked-notice' => 'Brukaren er i for tida blokkert. Loggen over den siste blokkeringa kan sjåast nedanfor:',
+'sp-contributions-search' => 'Søk etter bidrag',
+'sp-contributions-username' => 'IP-adresse eller brukarnamn:',
+'sp-contributions-submit' => 'Søk',
# What links here
'whatlinkshere' => 'Lenkjer hit',
@@ -2133,6 +2271,7 @@ $1',
# Block/unblock
'blockip' => 'Blokker brukar',
+'blockip-title' => 'Blokker brukar',
'blockip-legend' => 'Blokker brukar',
'blockiptext' => 'Bruk skjemaet nedanfor for å blokkere skrivetilgangen frå ei spesifikk IP-adresse eller brukarnamn. Dette bør berre gjerast for å hindre hærverk, og i samsvar med [[{{MediaWiki:Policy-url}}|retningslinene]].',
'ipaddress' => 'IP-adresse',
@@ -2153,7 +2292,7 @@ $1',
'ipbenableautoblock' => 'Blokker den førre IP-adressa som vart brukt av denne brukaren automatisk, og alle andre IP-adresser brukaren prøvar å endre sider med i framtida',
'ipbsubmit' => 'Blokker denne brukaren',
'ipbother' => 'Anna tid',
-'ipboptions' => '2 timar:2 hours,1 dag:1 day,3 dagar:3 days,1 veke:1 week,2 veker:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,endelaus:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 timar:2 hours,1 dag:1 day,3 dagar:3 days,1 veke:1 week,2 veker:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,endelaus:infinite',
'ipbotheroption' => 'anna tid',
'ipbotherreason' => 'Annan grunn/tilleggsgrunn:',
'ipbhidename' => 'Gøym brukarnamnet frå endringar og lister',
@@ -2182,9 +2321,11 @@ Sjå [[Special:IPBlockList|blokkeringslista]] for alle blokkeringar.',
'ipblocklist-sh-tempblocks' => '$1 mellombelse blokkeringar',
'ipblocklist-sh-addressblocks' => '$1 blokkeringar av individuelle IP-adresser',
'ipblocklist-submit' => 'Søk',
+'ipblocklist-localblock' => 'Lokal blokkering',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Anna blokkering|Andre blokkeringar}}',
'blocklistline' => '$1, $2 blokkerte $3 ($4)',
'infiniteblock' => 'uendeleg opphøyrstid',
-'expiringblock' => 'endar $1',
+'expiringblock' => 'endar den $1 ved $2',
'anononlyblock' => 'berre anonyme',
'noautoblockblock' => 'automatisk blokkering slått av',
'createaccountblock' => 'kontooppretting blokkert',
@@ -2198,7 +2339,10 @@ Sjå [[Special:IPBlockList|blokkeringslista]] for alle blokkeringar.',
'contribslink' => 'bidrag',
'autoblocker' => 'Automatisk blokkert fordi du deler IP-adresse med [[User:$1|$1]]. Grunngjeving gjeve for blokkeringa av $1 var: «$2».',
'blocklogpage' => 'Blokkeringslogg',
-'blocklog-fulllog' => 'Fullstendig blokkeringslogg',
+'blocklog-showlog' => 'Denne brukaren har tidlegare vorte blokkert.
+Blokkeringsloggen er sett opp nedanfor, som referanse.',
+'blocklog-showsuppresslog' => 'Denne brukaren har tidlegare vorte blokkert og skjult.
+Loggføringa er synt nedanfor som referanse:',
'blocklogentry' => 'Blokkerte «[[$1]]» med opphøyrstid $2 $3',
'reblock-logentry' => 'endra blokkeringsinnstillingar for [[$1]] med tida $2 $3',
'blocklogtext' => 'Dette er ein logg over blokkeringar og oppheving av blokkeringar gjorde.
@@ -2218,9 +2362,11 @@ IP-adresser som blir automatisk blokkerte er ikkje lista her. Sjå [[Special:IPB
'ipb_already_blocked' => '«$1» er allereie blokkert',
'ipb-needreblock' => '== Alt blokkert ==
$1 er alt blokkert. Vil du endre innstillingane?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Anna blokkering|Andre blokkeringar}}',
'ipb_cant_unblock' => 'Feil: Fann ikkje blokkeringsnummeret $1. Blokkeringa kan vere oppheva allereie.',
'ipb_blocked_as_range' => 'Feil: IP-en $1 er ikkje direkte blokkert og kan ikkje opphevast. Adressa er blokkert som ein del av blokkeringa av IP-intervallet $2. Denne blokkeringa kan opphevast.',
'ip_range_invalid' => 'Ugyldig IP-adresseserie.',
+'ip_range_toolarge' => 'Blokkering av IP-seriar større enn /$1 er ikkje tillate.',
'blockme' => 'Blokker meg',
'proxyblocker' => 'Proxy-blokkerar',
'proxyblocker-disabled' => 'Denne funksjonen er slått av.',
@@ -2229,6 +2375,7 @@ $1 er alt blokkert. Vil du endre innstillingane?',
'sorbsreason' => 'IP-adressa di er lista som ein open mellomtenar i DNSBL.',
'sorbs_create_account_reason' => 'IP-adressa di er lista som ein open mellomtenar i DNSBL, og difor får du ikkje registrert deg.',
'cant-block-while-blocked' => 'Du kan ikkje blokkere andre medan du sjølv er blokkert.',
+'cant-see-hidden-user' => 'Brukaren du prøver å blokkera har allereie vorte blokkert og skjult. Sidan du ikkje har rett til å skjula brukarar, kan du ikkje sjå eller endra blokkeringa til brukaren.',
# Developer tools
'lockdb' => 'Skrivevern (lock) database',
@@ -2261,6 +2408,7 @@ Merk at sida '''ikkje''' kan flyttast dersom det allereie finst ei side med den
I desse falla lyt du flytte eller flette saman sida manuelt.",
'movearticle' => 'Flytt side:',
+'moveuserpage-warning' => "'''Åtvaring:''' Du er i ferd med å flytta ei brukarside. Merk at berre sida vil verta flytt og at brukarnamnet '''ikkje''' vert endra.",
'movenologin' => 'Ikkje innlogga',
'movenologintext' => 'Du lyt vera registrert brukar og vera [[Special:UserLogin|innlogga]] for å flytte ei side.',
'movenotallowed' => 'Du har ikkje tilgang til å flytte sider.',
@@ -2271,7 +2419,7 @@ I desse falla lyt du flytte eller flette saman sida manuelt.",
'move-watch' => 'Overvak denne sida',
'movepagebtn' => 'Flytt side',
'pagemovedsub' => 'Flyttinga er gjennomført',
-'movepage-moved' => "'''«$1» er flytt til «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» er flytt til «$2»'''",
'movepage-moved-redirect' => 'Ei omdirigering er vorten oppretta.',
'movepage-moved-noredirect' => 'Det vart ikkje oppretta ei omdirigering.',
'articleexists' => 'Ei side med det namnet finst allereie, eller det namnet du har valt er ikkje gyldig. Vel eit anna namn.',
@@ -2312,6 +2460,14 @@ Målsida «[[:$1]]» finst allereie. Vil du slette ho for å gje rom for flyttin
'imageinvalidfilename' => 'Målnamnet er ugyldig',
'fix-double-redirects' => 'Oppdater omdirigeringar som viser til den gamle tittelen',
'move-leave-redirect' => 'La det vere att ei omdirigering',
+'protectedpagemovewarning' => "'''ÅTVARING:''' Denne sida er verna, slik at berre brukarar med administratorrettar kan flytta henne.
+Det siste loggelementet er oppgjeve under som referanse:",
+'semiprotectedpagemovewarning' => "'''Merk:''' Denne sida er verna, slik at berre registrerte brukarar kan flytta henne.
+Det siste loggelementet er oppgjeve under som referanse:",
+'move-over-sharedrepo' => '== Fila finnst ==
+[[:$1]] finst på ei delt kjelde. Om du flyttar ei fil til dette namnet, vil du overstyra den delte fila.',
+'file-exists-sharedrepo' => 'Det valde filnamnet er allereie i bruk på ei delt kjelde.
+Ver venleg og velg eit anna namn.',
# Export
'export' => 'Eksporter sider',
@@ -2334,15 +2490,21 @@ Dersom du berre vil ha noverande versjon, kan du også bruke ei lenkje, til døm
'export-pagelinks' => 'Inkluder lenkja sider med ei djupn på:',
# Namespace 8 related
-'allmessages' => 'Systemmeldingar',
-'allmessagesname' => 'Namn',
-'allmessagesdefault' => 'Standardtekst',
-'allmessagescurrent' => 'Noverande tekst',
-'allmessagestext' => 'Dette er ei liste over systemmeldingar i MediaWiki-namnerommet.
+'allmessages' => 'Systemmeldingar',
+'allmessagesname' => 'Namn',
+'allmessagesdefault' => 'Standardtekst',
+'allmessagescurrent' => 'Noverande tekst',
+'allmessagestext' => 'Dette er ei liste over systemmeldingar i MediaWiki-namnerommet.
Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [http://translatewiki.net translatewiki.net] om du ynskjer å bidra til den generelle omsetjinga av MediaWiki.',
-'allmessagesnotsupportedDB' => "Denne sida er ikkje brukande fordi \"'''\$wgUseDatabaseMessages'''\" er slått av.",
-'allmessagesfilter' => 'Meldingsfilter:',
-'allmessagesmodified' => 'Vis berre endra',
+'allmessagesnotsupportedDB' => "Denne sida er ikkje brukande fordi \"'''\$wgUseDatabaseMessages'''\" er slått av.",
+'allmessages-filter-legend' => 'Filtrér',
+'allmessages-filter' => 'Filtrér etter tilpassingsgrad:',
+'allmessages-filter-unmodified' => 'Ikkje endra',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Endra',
+'allmessages-prefix' => 'Filtrér etter prefiks:',
+'allmessages-language' => 'Språk:',
+'allmessages-filter-submit' => 'Gå',
# Thumbnails
'thumbnail-more' => 'Forstørr',
@@ -2352,6 +2514,9 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'djvu_no_xml' => 'Klarte ikkje hente inn XML for DjVu-fila',
'thumbnail_invalid_params' => 'Ugyldige miniatyrparameterar',
'thumbnail_dest_directory' => 'Klarte ikkje å opprette målmappe',
+'thumbnail_image-type' => 'Bilettypen er ikkje stødd',
+'thumbnail_gd-library' => 'Ufullstendig oppsett av GD library: manglar funksjonen $1',
+'thumbnail_image-missing' => 'Fila ser ut til å saknast: $1',
# Special:Import
'import' => 'Importer sider',
@@ -2413,6 +2578,7 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'tooltip-ca-viewsource' => 'Denne sida er verna, men du kan sjå kjeldeteksten.',
'tooltip-ca-history' => 'Eldre versjonar av denne sida',
'tooltip-ca-protect' => 'Vern denne sida',
+'tooltip-ca-unprotect' => 'Ta vekk skrivevernet for denne sida',
'tooltip-ca-delete' => 'Slett denne sida',
'tooltip-ca-undelete' => 'Attopprett denne sida',
'tooltip-ca-move' => 'Flytt denne sida',
@@ -2423,6 +2589,7 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'tooltip-search-fulltext' => 'Søk etter sider som inneheld denne teksten',
'tooltip-p-logo' => 'Hovudside',
'tooltip-n-mainpage' => 'Gå til hovudsida',
+'tooltip-n-mainpage-description' => 'Gå til hovudsida',
'tooltip-n-portal' => 'Om prosjektet, kva du kan gjera, kvar du finn saker og ting',
'tooltip-n-currentevents' => 'Aktuelt',
'tooltip-n-recentchanges' => 'Liste over dei siste endringane som er gjort på wikien.',
@@ -2491,10 +2658,12 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
# Attribution
'anonymous' => '{{PLURAL:$1|anonym brukar|anonyme brukarar}} av {{SITENAME}}',
'siteuser' => '{{SITENAME}}-brukaren $1',
-'lastmodifiedatby' => 'Sida vart sist endra den $1 kl. $2 av $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonym brukar $1',
+'lastmodifiedatby' => 'Sida vart sist endra den $1 kl. $2 av $3.',
'othercontribs' => 'Basert på arbeid av $1.',
'others' => 'andre',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|brukaren|brukarane}} $1',
+'anonusers' => '{{PLURAL:$2|den anonyme brukaren|dei anonyme brukararane}} $1 på {{SITENAME}}',
'creditspage' => 'Sidegodskriving',
'nocredits' => 'Det finst ikkje ikkje nokon godskrivingsinformasjon for denne sida.',
@@ -2532,11 +2701,22 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'mw_math_modern' => 'Tilrådd for moderne nettlesarar',
'mw_math_mathml' => 'MathML dersom mogleg (eksperimentell)',
+# Math errors
+'math_failure' => 'Klarte ikkje å tolke formelen',
+'math_unknown_error' => 'ukjend feil',
+'math_unknown_function' => 'ukjend funksjon',
+'math_lexing_error' => 'lexerfeil',
+'math_syntax_error' => 'syntaksfeil',
+'math_image_error' => 'PNG-konverteringa var mislukka; sjekk at latex, dvips, gs, og convert er rett installerte',
+'math_bad_tmpdir' => 'Kan ikkje skrive til eller laga mellombels mattemappe',
+'math_bad_output' => 'Kan ikkje skrive til eller laga mattemappe',
+'math_notexvc' => 'Manglar texvc-program; sjå math/README for konfigurasjon.',
+
# Patrolling
'markaspatrolleddiff' => 'Merk som patruljert',
'markaspatrolledtext' => 'Merk denne innhaldssida som patruljert',
'markedaspatrolled' => 'Merk som patruljert',
-'markedaspatrolledtext' => 'Den valde versjonen er vorten merkt som patruljert.',
+'markedaspatrolledtext' => 'Den valde versjonen av [[:$1]] er vorten merkt som patruljert.',
'rcpatroldisabled' => 'Siste-endringar-patruljering er deaktivert',
'rcpatroldisabledtext' => 'Patruljeringsfunksjonen er deaktivert.',
'markedaspatrollederror' => 'Kan ikkje merke sida som patruljert',
@@ -2566,12 +2746,9 @@ $1',
'previousdiff' => '← Eldre endring',
'nextdiff' => 'Nyare endring →',
-# Visual comparison
-'visual-comparison' => 'Visuell samanlikning',
-
# Media information
'mediawarning' => "'''Åtvaring''': Denne fila kan innehalda skadeleg programkode, ved å køyra programmet kan systemet ditt ta skade.",
-'imagemaxsize' => 'Avgrens bilete på filsider til (pikslar):',
+'imagemaxsize' => "Avgrens storleiken for bilete:<br />''(for sider som skildrar filer)''",
'thumbsize' => 'Miniatyrstørrelse:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|éi side|$3 sider}}',
'file-info' => '(filstorleik: $1, MIME-type: $2)',
@@ -2580,6 +2757,8 @@ $1',
'svg-long-desc' => '(SVG-fil, standardoppløysing: $1 × $2 pikslar, filstorleik: $3)',
'show-big-image' => 'Full oppløysing',
'show-big-image-thumb' => '<small>Storleiken på denne førehandsvisinga: $1 × $2 pikslar</small>',
+'file-info-gif-looped' => 'gjentatt',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|rame|ramer}}',
# Special:NewFiles
'newimages' => 'Filgalleri',
@@ -2614,7 +2793,7 @@ Dei andre felta er gøymde som standard.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Breidd',
@@ -2741,14 +2920,14 @@ Dei andre felta er gøymde som standard.
'exif-unknowndate' => 'Ukjend dato',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Spegla vassrett', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotert 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Spegla loddrett', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotert 90° motsols og spegla vassrett', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotert 90° medsols', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotert 90° medsols og spegla loddrett', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotert 90° motsols', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Spegla vassrett',
+'exif-orientation-3' => 'Rotert 180°',
+'exif-orientation-4' => 'Spegla loddrett',
+'exif-orientation-5' => 'Rotert 90° motsols og spegla vassrett',
+'exif-orientation-6' => 'Rotert 90° medsols',
+'exif-orientation-7' => 'Rotert 90° medsols og spegla loddrett',
+'exif-orientation-8' => 'Rotert 90° motsols',
'exif-planarconfiguration-1' => 'grovformat',
'exif-planarconfiguration-2' => 'planærformat',
@@ -2870,7 +3049,7 @@ Dei andre felta er gøymde som standard.
'exif-gpsmeasuremode-2' => 'todimensjonalt målt',
'exif-gpsmeasuremode-3' => 'tredimensjonalt målt',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer per time',
'exif-gpsspeed-m' => 'Engelsk mil per time',
'exif-gpsspeed-n' => 'Knop',
@@ -2889,6 +3068,7 @@ Dei andre felta er gøymde som standard.
'watchlistall2' => 'alle',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Stadfest e-postadresse',
@@ -3017,7 +3197,7 @@ Du kan òg [[Special:Watchlist/edit|nytte standardverktøyet]].',
'duplicate-defaultsort' => 'Åtvaring: Standarsorteringa «$2» tar over for den tidlegare sorteringa «$1».',
# Special:Version
-'version' => 'Versjon', # Not used as normal message but as header for the special page itself
+'version' => 'Versjon',
'version-extensions' => 'Installerte utvidingar',
'version-specialpages' => 'Spesialsider',
'version-parserhooks' => 'Parsertillegg',
@@ -3031,7 +3211,7 @@ Du kan òg [[Special:Watchlist/edit|nytte standardverktøyet]].',
'version-skin-extension-functions' => 'Draktutvidingsfunksjonar',
'version-hook-name' => 'Namn på tillegg',
'version-hook-subscribedby' => 'Brukt av',
-'version-version' => 'versjon',
+'version-version' => '(versjon $1)',
'version-license' => 'Lisens',
'version-software' => 'Installert programvare',
'version-software-product' => 'Produkt',
@@ -3111,4 +3291,15 @@ Skriv inn filnamn utan «{{ns:file}}:»-prefikset.',
'dberr-outofdate' => 'Merk at versjonane deira av innhaldet vårt kan vera forelda.',
'dberr-cachederror' => 'Fylgjande er ein mellomlagra kopi av den etterspurde sida, og er, kan henda, ikkje den siste versjonen av ho.',
+# HTML forms
+'htmlform-invalid-input' => 'Det finst problem med innskrivinga di',
+'htmlform-select-badoption' => 'Verdien du valde er ikkje eit gyldig alternativ.',
+'htmlform-int-invalid' => 'Verdien du valde er ikkje eit heiltal.',
+'htmlform-float-invalid' => 'Verdien du valde er ikkje eit tal.',
+'htmlform-int-toolow' => 'Verdien du valde er under minstetalet på $1',
+'htmlform-int-toohigh' => 'Verdien du valde er over høgste moglege tal $1',
+'htmlform-submit' => 'Lagre',
+'htmlform-reset' => 'Gjer om endringar',
+'htmlform-selectorother-other' => 'Andre',
+
);
diff --git a/languages/messages/MessagesNo.php b/languages/messages/MessagesNo.php
index 2c0b6205..5265b118 100644
--- a/languages/messages/MessagesNo.php
+++ b/languages/messages/MessagesNo.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Audun
* @author Boivie
* @author Byrial
* @author Eirik
@@ -23,6 +24,7 @@
* @author Najami
* @author Nghtwlkr
* @author Nsaa
+ * @author Purodha
* @author Qaqqalik
* @author Samuelsen
* @author Simny
@@ -108,6 +110,7 @@ $specialPageAliases = array(
'Wantedpages' => array( 'Ønskede sider' ),
'Wantedcategories' => array( 'Ønskede kategorier' ),
'Wantedfiles' => array( 'Ønskede filer' ),
+ 'Wantedtemplates' => array( 'Ønskede maler' ),
'Mostlinked' => array( 'Mest lenkede sider', 'Mest lenka sider' ),
'Mostlinkedcategories' => array( 'Største kategorier' ),
'Mostlinkedtemplates' => array( 'Mest brukte maler' ),
@@ -168,6 +171,59 @@ $specialPageAliases = array(
'LinkSearch' => array( 'Lenkesøk' ),
'DeletedContributions' => array( 'Slettede bidrag' ),
'Tags' => array( 'Tagger' ),
+ 'Activeusers' => array( 'Aktive brukere' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#OMDIRIGERING', '#REDIRECT' ),
+ 'numberofpages' => array( '1', 'ANTALLSIDER', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ANTALLARTIKLER', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ANTALLFILER', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ANTALLBRUKERE', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'ANTALLAKTIVEBRUKERE', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'ANTALLREDIGERINGER', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'ANTALLVISNINGER', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'SIDENAVN', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'SIDENAVNE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'NAVNEROM', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'NAVNEROME', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'DISKUSJONSROM', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'DISKUSJONSROME', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'SUBJEKTROM', 'ARTIKKELROM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'SUBJEKTROME', 'ARTIKKELROME', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'FULLTSIDENAVN', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'FULLTSIDENAVNE', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'UNDERSIDENAVN', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'UNDERSIDENAVNE', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'GRUNNSIDENAVN', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'GRUNNSIDENAVNE', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'DISKUSJONSSIDENAVN', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'DISKUSJONSSIDENAVNE', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'SUBJEKTSIDENAVN', 'ARTIKKELSIDENAVN', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'SUBJEKTSIDENAVNE', 'ARTIKKELSIDENAVNE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'img_thumbnail' => array( '1', 'miniatyr', 'mini', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'miniatyr=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'høyre', 'right' ),
+ 'img_left' => array( '1', 'venstre', 'left' ),
+ 'img_none' => array( '1', 'ingen', 'none' ),
+ 'img_center' => array( '1', 'sentrer', 'senter', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'ramme', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'ingenramme', 'frameless' ),
+ 'img_page' => array( '1', 'side=$1', 'side $1', 'page=$1', 'page $1' ),
+ 'img_top' => array( '1', 'topp', 'top' ),
+ 'img_middle' => array( '1', 'midt', 'middle' ),
+ 'img_bottom' => array( '1', 'bunn', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'tekst-bunn', 'text-bottom' ),
+ 'img_link' => array( '1', 'lenke=$1', 'link=$1' ),
+ 'ns' => array( '0', 'NR:', 'NS:' ),
+ 'localurl' => array( '0', 'LOKALURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'LOKALURLE:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'TJENER', 'SERVER' ),
+ 'servername' => array( '0', 'TJENERNAVN', 'SERVERNAME' ),
+ 'grammar' => array( '0', 'GRAMMATIKK:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'KJØNN:', 'GENDER:' ),
+ 'special' => array( '0', 'spesial', 'special' ),
+ 'filepath' => array( '0', 'FILSTI:', 'FILEPATH:' ),
);
$messages = array(
@@ -201,6 +257,7 @@ $messages = array(
'tog-enotifminoredits' => 'Send meg en e-post også ved mindre sideendringer',
'tog-enotifrevealaddr' => 'Vis min e-postadresse i utgående meldinger',
'tog-shownumberswatching' => 'Vis antall overvåkende brukere',
+'tog-oldsig' => 'Forhåndsvisning av nåværende signatur:',
'tog-fancysig' => 'Signatur som wikitekst uten automatisk lenke',
'tog-externaleditor' => 'Bruk ekstern behandler som standard (kun for viderekomne, krever spesielle innstillinger på din datamaskin)',
'tog-externaldiff' => 'Bruk ekstern differanse som standard (kun for viderekomne, krever spesielle innstillinger på din datamaskin)',
@@ -223,6 +280,13 @@ $messages = array(
'underline-never' => 'Aldri',
'underline-default' => 'Bruk nettleserstandard',
+# Font style option in Special:Preferences
+'editfont-style' => 'Endre stilen for skrifttypen i området:',
+'editfont-default' => 'Nettleserstandard',
+'editfont-monospace' => 'Skrift med fast bredde',
+'editfont-sansserif' => 'Sans-serif',
+'editfont-serif' => 'Serif',
+
# Dates
'sunday' => 'søndag',
'monday' => 'mandag',
@@ -282,7 +346,7 @@ $messages = array(
'category-media-header' => 'Filer i kategorien «$1»',
'category-empty' => "''Denne kategorien inneholder for tiden ingen artikler eller filer.''",
'hidden-categories' => '{{PLURAL:$1|Skjult kategori|Skjulte kategorier}}',
-'hidden-category-category' => 'Skjulte kategorier', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skjulte kategorier',
'category-subcat-count' => '{{PLURAL:$2|Denne kategorien har kun den følgende underkategorien.|Denne kategorien har følgende {{PLURAL:$1|underkategori|$1 underkategorier}}, av totalt $2.}}',
'category-subcat-count-limited' => 'Kategorien har følgende {{PLURAL:$1|underkategori|$1 underkategorier}}.',
'category-article-count' => '{{PLURAL:$2|Denne kategorien inneholder kun den følgende siden.|Følgende {{PLURAL:$1|side|$1 sider}} er i denne kategorien, av totalt $2.}}',
@@ -290,6 +354,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Denne kategorien inneholder kun den følgende filen.|Følgende {{PLURAL:$1|fil|$1 filer}} er i denne kategorien, av totalt $2.}}',
'category-file-count-limited' => 'Følgende {{PLURAL:$1|fil|$1 filer}} er i denne kategorien.',
'listingcontinuesabbrev' => ' forts.',
+'index-category' => 'Indekserte sider',
+'noindex-category' => 'Ikke-indekserte sider',
'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
'mainpagedocfooter' => 'Se [http://meta.wikimedia.org/wiki/Help:Contents brukerveiledningen] for informasjon om hvordan du bruker wiki-programvaren.
@@ -299,10 +365,18 @@ $messages = array(
*[http://www.mediawiki.org/wiki/Manual:FAQ Ofte stilte spørsmål]
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]',
-'about' => 'Om',
-'article' => 'Innholdsside',
-'newwindow' => '(åpnes i et nytt vindu)',
-'cancel' => 'Avbryt',
+'about' => 'Om',
+'article' => 'Innholdsside',
+'newwindow' => '(åpnes i et nytt vindu)',
+'cancel' => 'Avbryt',
+'moredotdotdot' => 'Mer …',
+'mypage' => 'Min side',
+'mytalk' => 'Min diskusjonsside',
+'anontalk' => 'Brukerdiskusjon for denne IP-adressen',
+'navigation' => 'Navigasjon',
+'and' => '&#32;og',
+
+# Cologne Blue skin
'qbfind' => 'Finn',
'qbbrowse' => 'Bla gjennom',
'qbedit' => 'Rediger',
@@ -310,15 +384,35 @@ $messages = array(
'qbpageinfo' => 'Sideinformasjon',
'qbmyoptions' => 'Egne innstillinger',
'qbspecialpages' => 'Spesialsider',
-'moredotdotdot' => 'Mer …',
-'mypage' => 'Min side',
-'mytalk' => 'Min diskusjonsside',
-'anontalk' => 'Brukerdiskusjon for denne IP-adressen',
-'navigation' => 'Navigasjon',
-'and' => '&#32;og',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Ofte stilte spørsmål',
+'faqpage' => 'Project:Ofte stilte spørsmål',
+
+# Vector skin
+'vector-action-addsection' => 'Nytt emne',
+'vector-action-delete' => 'Slett',
+'vector-action-move' => 'Flytt',
+'vector-action-protect' => 'Beskytt',
+'vector-action-undelete' => 'Gjenopprett',
+'vector-action-unprotect' => 'Opphev beskyttelse',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Hjelpeside',
+'vector-namespace-image' => 'Fil',
+'vector-namespace-main' => 'Side',
+'vector-namespace-media' => 'Mediaside',
+'vector-namespace-mediawiki' => 'Melding',
+'vector-namespace-project' => 'Prosjektside',
+'vector-namespace-special' => 'Spesialside',
+'vector-namespace-talk' => 'Diskusjon',
+'vector-namespace-template' => 'Mal',
+'vector-namespace-user' => 'Brukerside',
+'vector-view-create' => 'Opprett',
+'vector-view-edit' => 'Rediger',
+'vector-view-history' => 'Vis historikk',
+'vector-view-view' => 'Les',
+'vector-view-viewsource' => 'Vis kilden',
+'actions' => 'Handlinger',
+'namespaces' => 'Navnerom',
+'variants' => 'Varianter',
'errorpagetitle' => 'Feil',
'returnto' => 'Tilbake til $1.',
@@ -368,18 +462,22 @@ $messages = array(
'otherlanguages' => 'På andre språk',
'redirectedfrom' => '(Omdirigert fra $1)',
'redirectpagesub' => 'Omdirigeringsside',
-'lastmodifiedat' => 'Denne siden ble sist endret $1 kl. $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Denne siden ble sist endret $1 kl. $2.',
'viewcount' => 'Denne siden er vist $1 {{PLURAL:$1|gang|ganger}}.',
'protectedpage' => 'Låst side',
'jumpto' => 'Gå til:',
'jumptonavigation' => 'navigasjon',
'jumptosearch' => 'søk',
+'view-pool-error' => 'Beklager, serverne er overbelastet for øyeblikket.
+For mange brukere forsøker å se denne siden.
+Vennligst vent en stund før du prøver å besøke denne siden på nytt.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Om {{SITENAME}}',
'aboutpage' => 'Project:Om',
'copyright' => 'Innholdet er tilgjengelig under $1.',
-'copyrightpagename' => 'Opphavsrett',
'copyrightpage' => '{{ns:project}}:Opphavsrett',
'currentevents' => 'Aktuelt',
'currentevents-url' => 'Project:Aktuelt',
@@ -387,8 +485,6 @@ $messages = array(
'disclaimerpage' => 'Project:Generelle forbehold',
'edithelp' => 'Redigeringshjelp',
'edithelppage' => 'Help:Redigering',
-'faq' => 'Ofte stilte spørsmål',
-'faqpage' => 'Project:Ofte stilte spørsmål',
'helppage' => 'Help:Innhold',
'mainpage' => 'Hovedside',
'mainpage-description' => 'Hovedside',
@@ -466,10 +562,6 @@ Forrige databaseforespørsel var:
«$1»
fra funksjonen «$2».
Databasen returnerte feilen «$3: $4».',
-'noconnect' => 'Beklager! Wikien har tekniske problemer, og kan ikke kontakte databasetjeneren.
-<br />$1',
-'nodb' => 'Klarte ikke å velge databasen $1',
-'cachederror' => 'Det følgende er en lagret kopi av den ønskede siden, og er ikke nødvendigvis oppdatert.',
'laggedslavemode' => 'Advarsel: Dette kan være en eldre versjon av siden.',
'readonly' => 'Databasen er skrivebeskyttet',
'enterlockreason' => 'Skriv en begrunnelse for skrivebeskyttelsen, inkludert et estimat for når den blir opphevet',
@@ -487,6 +579,8 @@ Vennligst rapporter dette til en [[Special:ListUsers/sysop|administrator]], oppg
'readonly_lag' => 'Databasen er automatisk skrivebeskyttet så slavetjenerne kan ta igjen mestertjeneren',
'internalerror' => 'Intern feil',
'internalerror_info' => 'Intern feil: $1',
+'fileappenderrorread' => 'Klarte ikke å lese «$1» når data skulle tilføyes.',
+'fileappenderror' => 'Kunne ikke legge "$1" til "$2".',
'filecopyerror' => 'Klarte ikke å kopiere filen «$1» til «$2».',
'filerenameerror' => 'Klarte ikke å døpe om filen «$1» til «$2».',
'filedeleteerror' => 'Klarte ikke å slette filen «$1».',
@@ -496,7 +590,7 @@ Vennligst rapporter dette til en [[Special:ListUsers/sysop|administrator]], oppg
'unexpected' => 'Uventet verdi: «$1»=«$2».',
'formerror' => 'Feil: klarte ikke å sende skjema',
'badarticleerror' => 'Handlingen kan ikke utføres på denne siden.',
-'cannotdelete' => 'Kunne ikke slette filen (den kan være slettet av noen andre).',
+'cannotdelete' => 'Kunne ikke slette fila «$1». Den kan ha blitt slettet av noen andre.',
'badtitle' => 'Ugyldig tittel',
'badtitletext' => 'Den ønskede tittelen var ugyldig, tom eller feilaktig lenket fra en annen wiki.
Det kan inneholder en eller flere tegn som ikke kan brukes i titler.',
@@ -529,7 +623,6 @@ Den angitte grunnen er ''$2''.",
'virus-unknownscanner' => 'ukjent antivirusprogram:',
# Login and logout pages
-'logouttitle' => 'Logg ut',
'logouttext' => "'''Du er nå logget ut.'''
Du kan fortsette å bruke {{SITENAME}} anonymt, eller [[Special:UserLogin|logge inn igjen]] som samme eller annen bruker.
@@ -537,7 +630,6 @@ Merk at noen sider kan vise at du fortsatt er logget inn fram til du tømmer mel
'welcomecreation' => '==Velkommen, $1!==
Brukerkontoen din har blitt opprettet.
Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
-'loginpagetitle' => 'Logg inn',
'yourname' => 'Brukernavn:',
'yourpassword' => 'Passord:',
'yourpasswordagain' => 'Gjenta passord',
@@ -548,6 +640,7 @@ Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
'nav-login-createaccount' => 'Logg inn eller opprett en konto',
'loginprompt' => 'Du må ha slått på informasjonskapsler for å logge in på {{SITENAME}}.',
'userlogin' => 'Logg inn eller opprett en konto',
+'userloginnocreate' => 'Logg inn',
'logout' => 'Logg ut',
'userlogout' => 'Logg ut',
'notloggedin' => 'Ikke logget inn',
@@ -559,27 +652,8 @@ Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
'createaccountmail' => 'per e-post',
'badretype' => 'Passordene samsvarte ikke.',
'userexists' => 'Brukernavnet er allerede i bruk. Velg et nytt.',
-'youremail' => 'E-post:',
-'username' => 'Brukernavn:',
-'uid' => 'Bruker-ID:',
-'prefs-memberingroups' => 'Medlem i følgende {{PLURAL:$1|gruppe|grupper}}:',
-'yourrealname' => 'Virkelig navn:',
-'yourlanguage' => 'Språk:',
-'yournick' => 'Signatur:',
-'badsig' => 'Ugyldig råsignatur; sjekk HTML-elementer.',
-'badsiglength' => 'Signaturen er for lang.
-Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
-'yourgender' => 'Kjønn:',
-'gender-unknown' => 'Uspesifisert',
-'gender-male' => 'Mann',
-'gender-female' => 'Kvinne',
-'prefs-help-gender' => 'Valgfritt: brukes for kjønnskorrekt tekst av programvaren. Denne informasjonen vil være offentlig.',
-'email' => 'E-post',
-'prefs-help-realname' => '* Virkelig navn (valgfritt): dersom du velger å oppgi navnet, vil det bli brukt til å kreditere deg for ditt arbeid.',
'loginerror' => 'Innloggingsfeil',
-'prefs-help-email' => 'Å angi e-postadresse er valgfritt, men lar det motta nytt passord om du glemmer det gamle.
-Du kan også la velge å la andre brukere kontakte deg via brukersiden din uten å røpe identiteten din.',
-'prefs-help-email-required' => 'E-postadresse er påkrevd.',
+'createaccounterror' => 'Kunne ikke opprette konto: $1',
'nocookiesnew' => 'Din brukerkonto er nå opprettet, men du har ikke logget på. {{SITENAME}} bruker informasjonskapsler («cookies») for å logge brukere på. Du har slått dem av. Slå dem p åfor å kunne logge på med ditt nye brukernavn og passord.',
'nocookieslogin' => '{{SITENAME}} bruker informasjonskapsler («cookies») for å logge brukere på. Du har slått dem av. Slå dem på og prøv igjen.',
'noname' => 'Du har ikke oppgitt et gyldig brukernavn.',
@@ -590,10 +664,11 @@ Husk at det er forskjell på store og små bokstaver.
Sjekk stavemåten eller [[Special:UserLogin/signup|opprett en ny konto]].',
'nosuchusershort' => 'Det finnes ingen bruker ved navn «<nowiki>$1</nowiki>». Kontroller stavemåten.',
'nouserspecified' => 'Du må oppgi et brukernavn.',
+'login-userblocked' => 'Brukeren er blokkert. Innlogging er ikke tillatt.',
'wrongpassword' => 'Du har oppgitt et ugyldig passord. Prøv igjen.',
'wrongpasswordempty' => 'Du oppga ikke noe passord. Prøv igjen.',
-'passwordtooshort' => 'Passordet ditt er ugyldig eller for kort.
-Det må ha minst {{PLURAL:$1|ett tegn|$1 tegn}} og kan ikke være det samme som brukernavnet ditt.',
+'passwordtooshort' => 'Passord må ha minst {{PLURAL:$1|ett tegn|$1 tegn}}.',
+'password-name-match' => 'Passordet ditt må være anderledes enn brukernavnet.',
'mailmypassword' => 'Send nytt passord',
'passwordremindertitle' => 'Nytt midlertidig passord fra {{SITENAME}}',
'passwordremindertext' => 'Noen (antagelig deg, fra IP-adressen $1) ba oss sende deg et nytt
@@ -605,6 +680,7 @@ Dersom denne forespørselen ble utført av noen andre, eller om du kom på passo
og ikke lenger ønsker å endre det, kan du ignorere denne beskjeden
og fortsette å bruke det gamle passordet.',
'noemail' => 'Det er ikke registrert noen e-postadresse for brukeren «$1».',
+'noemailcreate' => 'De må oppgi en gyldig e-postadresse.',
'passwordsent' => 'Et nytt passord har blitt sendt til e-postadressen registrert på bruker «$1». Logg inn når du har mottatt det nye passordet.',
'blocked-mailpassword' => 'IP-adressen din er blokkert fra å redigere, og for å forhindre misbruk kan du heller ikke bruke funksjonen som gir deg nytt passord.',
'eauthentsent' => 'En bekreftelsesmelding ble sendt til gitte e-postadresse. Før andre e-poster kan sendes til kontoen må du følge instruksjonene i e-posten for å bekrefte at kontoen faktisk er din.',
@@ -625,8 +701,10 @@ Skriv inn en fungerende e-postadresse eller tøm feltet.',
'createaccount-text' => 'Noen opprettet en konto for din e-postadresse på {{SITENAME}} ($4) med navnet «$2», med «$3» som passord. Du burde logge inn og endre passordet nå.
Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
+'usernamehasherror' => 'Brukernavn kan ikke inneholde nummertegn.',
'login-throttled' => 'Du har prøvd å logge inn med denne kontoen for mange ganger. Vent før du prøver igjen.',
'loginlanguagelabel' => 'Språk: $1',
+'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
# Password reset dialog
'resetpass' => 'Endre passord',
@@ -638,17 +716,13 @@ Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
'retypenew' => 'Gjenta nytt passord:',
'resetpass_submit' => 'Angi passord og logg inn',
'resetpass_success' => 'Passordet ditt ble endret! Logger inn&nbsp;…',
-'resetpass_bad_temporary' => 'Ugyldig midlertidig passord. Du kan allerede ha endret passordet, eller bedt om et nytt midlertidig passord.',
'resetpass_forbidden' => 'Passord kan ikke endres',
'resetpass-no-info' => 'Du må være logget inn for å gå til denne siden direkte',
'resetpass-submit-loggedin' => 'Endre passord',
+'resetpass-submit-cancel' => 'Avbryt',
'resetpass-wrong-oldpass' => 'Feil midlertidig eller nåværende passord.
Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.',
'resetpass-temp-password' => 'Midlertidig passord:',
-'resetpass-log' => 'Logg for passordnullstilling',
-'resetpass-logtext' => 'Nedenfor er en logg over brukere som har fått deres passord endret av en administrator.',
-'resetpass-logentry' => 'endret passordet for $1',
-'resetpass-comment' => 'Grunn for nullstilling av passord:',
# Edit page toolbar
'bold_sample' => 'Fet tekst',
@@ -723,7 +797,6 @@ Vennligst ta med all denne informasjonen ved henvendelser.",
'blockededitsource' => "Kildekoden '''dine endringer''' på '''$1''' vises nedenfor:",
'whitelistedittitle' => 'Du må logge inn for å redigere',
'whitelistedittext' => 'Du må $1 for å redigere artikler.',
-'confirmedittitle' => 'E-postbekreftelse nødvendig før du kan redigere',
'confirmedittext' => 'Du må bekrefte e-postadressen din før du kan redigere sider. Vennligst oppgi og bekreft e-postadressen din via [[Special:Preferences|innstillingene dine]].',
'nosuchsectiontitle' => 'Finner ikke avsnittet',
'nosuchsectiontext' => 'Du prøvde å redigere et avsnitt som ikke eksisterer.
@@ -748,9 +821,15 @@ Hvis du er en uregistrert bruker og synes at du har fått irrelevante kommentare
Du kan [[Special:Search/{{PAGENAME}}|søke etter denne sidetittelen]] på andre sider,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relaterte logger],
eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} opprette siden]</span>.',
+'noarticletext-nopermission' => 'Det er ingen tekst på denne siden.
+Du kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] i andre sider, eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>.',
'userpage-userdoesnotexist' => 'Brukerkontoen «$1» er ikke registrert. Sjekk om du ønsker å opprette/redigere denne siden.',
+'userpage-userdoesnotexist-view' => 'Kontoen «$1» er ikke registrert.',
+'blocked-notice-logextract' => 'Denne brukeren er for tiden blokkert.
+Siste blokkeringsloggelement kan sees nedenfor.',
'clearyourcache' => "'''Merk:''' Etter lagring vil det kanskje være nødvendig at nettleseren sletter mellomlageret sitt for at endringene skal tre i kraft. '''Mozilla og Firefox:''' trykk ''Ctrl-Shift-R'', '''Internet Explorer:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-Shift-R'' i engelskspråklig versjon, ''Cmd-Alt-E'' i norskspråklig versjon, '''Konqueror og Opera:''' ''F5''.",
-'usercssjsyoucanpreview' => "'''Tips:''' Bruk «Forhåndsvisning»-knappen for å teste din nye CSS/JS før du lagrer.",
+'usercssyoucanpreview' => "'''Tips:''' Bruk '{{int:showpreview}}'-knappen for å teste din nye CSS før du lagrer.",
+'userjsyoucanpreview' => "'''Tips:''' Bruk '{{int:showpreview}}'-knappen for å teste ditt nye JS før du lagrer.",
'usercsspreview' => "'''Husk at dette bare er en forhåndsvisning av din bruker-CSS og at den ikke er lagret!'''",
'userjspreview' => "'''Husk at dette bare er en test eller forhåndsvisning av ditt bruker-JavaScript, og det ikke er lagret!'''",
'userinvalidcssjstitle' => "'''Advarsel:''' Det finnes ikke noe utseende ved navn «$1». Husk at .css- og .js-sider bruker titler i små bokstaver, for eksempel {{ns:user}}:Eksempel/monobook.css, ikke {{ns:user}}:Eksempel/Monobook.css",
@@ -795,13 +874,16 @@ så du kan ikke lagre dine endringer akkurat nå. Det kan være en god idé å
kopiere teksten din til en tekstfil, så du kan lagre den til senere.'''
Systemadministratoren som låste databasen oppga følgende årsak: $1",
-'protectedpagewarning' => "'''ADVARSEL: Denne siden er låst, slik at kun brukere med administratorrettigheter kan redigere den.'''",
-'semiprotectedpagewarning' => "'''Merk:''' Denne siden har blitt låst slik at kun registrerte brukere kan endre den. Nyopprettede og uregistrerte brukere kan ikke redigere.",
+'protectedpagewarning' => "'''Advarsel: Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan redigere den.'''
+Det siste loggelementet er oppgitt under som referanse:",
+'semiprotectedpagewarning' => "'''Merk:''' Denne siden har blitt låst slik at kun registrerte brukere kan endre den.
+Det siste loggelementet er oppgitt under som referanse:",
'cascadeprotectedwarning' => "'''Advarsel:''' Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan redigere den, fordi den inkluderes på følgende dypbeskyttede sider:<!--{{PLURAL:$1}}-->",
-'titleprotectedwarning' => "'''ADVARSEL: Denne siden har blitt låst slik at kun [[Special:ListGroupRights|visse brukere]] kan opprette den.'''",
-'templatesused' => 'Maler i bruk på denne siden:',
-'templatesusedpreview' => 'Maler som brukes i denne forhåndsvisningen:',
-'templatesusedsection' => 'Maler brukt i denne seksjonen:',
+'titleprotectedwarning' => "'''Advarsel: Denne siden har blitt låst slik at [[Special:ListGroupRights|spesielle rettigheter]] kreves for å opprette den.'''
+Det siste loggelementet er oppgitt under som referanse:",
+'templatesused' => '{{PLURAL:$1|Mal|Maler}} som brukes på denne siden:',
+'templatesusedpreview' => '{{PLURAL:$1|Mal|Maler}} brukt i denne forhåndsvisningen:',
+'templatesusedsection' => '{{PLURAL:$1|Mal|Maler}} brukt i denne seksjonen:',
'template-protected' => '(beskyttet)',
'template-semiprotected' => '(halvbeskyttet)',
'hiddencategories' => 'Denne siden er medlem av {{PLURAL:$1|1 skjult kategori|$1 skjulte kategorier}}:',
@@ -809,14 +891,18 @@ Systemadministratoren som låste databasen oppga følgende årsak: $1",
'nocreatetitle' => 'Sideoppretting er begrenset',
'nocreatetext' => '{{SITENAME}} har begrensede muligheter for oppretting av nye sider. Du kan gå tilbake og redigere en eksisterende side, eller [[Special:UserLogin|logge inn eller opprette en ny konto]].',
'nocreate-loggedin' => 'Du har ikke tillatelse til å opprette sider.',
+'sectioneditnotsupported-title' => 'Seksjonsredigering støttes ikke',
+'sectioneditnotsupported-text' => 'Seksjonsredigering støttes ikke på denne siden.',
'permissionserrors' => 'Tilgangsfeil',
'permissionserrorstext' => 'Du har ikke tillatelse til å utføre dette, av følgende {{PLURAL:$1|grunn|grunner}}:',
'permissionserrorstext-withaction' => 'Du har ikke tillatelse til å $2 {{PLURAL:$1|på grunn av|av følgende grunner}}:',
-'recreate-deleted-warn' => "'''Advarsel: Du gjenskaper en side som tidligere har blitt slettet.'''
+'recreate-moveddeleted-warn' => "Advarsel: Du gjenskaper en side som tidligere har blitt slettet.'''
-Du burde vurdere hvorvidt det er passende å fortsette å redigere denne siden. Slettingsloggen for denne siden gjengis her:",
-'deleted-notice' => 'Denne siden har blitt slettet. Slettingsloggen vises nedenfor.',
-'deletelog-fulllog' => 'Vis full logg',
+Du burde vurdere hvorvidt det er passende å fortsette å redigere denne siden.
+Slette- og flytteloggen for denne siden gjengis her:",
+'moveddeleted-notice' => 'Denne siden har blitt slettet.
+Slette- og flytteloggen vises nedenfor.',
+'log-fulllog' => 'Vis fullstendig logg',
'edit-hook-aborted' => 'Redigering avbrutt av en funksjon, uten forklaring.',
'edit-gone-missing' => 'Kunne ikke oppdatere siden fordi den har blitt slettet.',
'edit-conflict' => 'Redigeringskonflikt.',
@@ -836,6 +922,7 @@ Disse parameterne har blitt utelatt.',
'post-expand-template-argument-category' => 'Sider med utelatte malparametere',
'parser-template-loop-warning' => 'Mal-loop oppdaget: [[$1]]',
'parser-template-recursion-depth-warning' => 'Mal er brukt for mange ganger ($1)',
+'language-converter-depth-warning' => 'Dybdegrense for språkkonvertering overskredet ($1)',
# "Undo" feature
'undo-success' => 'Redigeringen kan omgjøres. Sjekk sammenligningen under for å bekrefte at du vil gjøre dette, og lagre endringene for å fullføre omgjøringen.',
@@ -854,8 +941,8 @@ Grunnen som ble oppgitt av $3 er ''$2''",
'nohistory' => 'Denne siden har ingen historikk.',
'currentrev' => 'Nåværende versjon',
'currentrev-asof' => 'Nåværende revisjon fra $1',
-'revisionasof' => 'Versjonen fra $1',
-'revision-info' => 'Revisjon per $1 av $2', # Additionally available: $3: revision id
+'revisionasof' => 'Revisjonen fra $1',
+'revision-info' => 'Revisjon per $1 av $2',
'previousrevision' => '← Eldre revisjon',
'nextrevision' => 'Nyere revisjon →',
'currentrevisionlink' => 'Nåværende revisjon',
@@ -867,7 +954,7 @@ Grunnen som ble oppgitt av $3 er ''$2''",
'histlegend' => "Valg av diff: merk i radioboksene de revisjonene du ønsker å sammenligne og trykk linjeskift eller knappen nederst på siden.<br />
Forklaring: '''({{int:cur}})''' = forskjell fra nåværende revisjon, '''({{int:last}})''' = forskjell fra foregående revisjon, '''{{int:minoreditletter}}''' = mindre endring.",
'history-fieldset-title' => 'Bla i historikken',
-'deletedrev' => '[slettet]',
+'history-show-deleted' => 'Kun slettede',
'histfirst' => 'Første',
'histlast' => 'Siste',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -876,68 +963,112 @@ Forklaring: '''({{int:cur}})''' = forskjell fra nåværende revisjon, '''({{int:
# Revision feed
'history-feed-title' => 'Revisjonshistorikk',
'history-feed-description' => 'Revisjonshistorikk for denne siden',
-'history-feed-item-nocomment' => '$1 på $2', # user at time
+'history-feed-item-nocomment' => '$1 på $2',
'history-feed-empty' => 'Den etterspurte siden finnes ikke. Den kan ha blitt slettet fra wikien, eller fått et nytt navn. Prøv å [[Special:Search|søke]] etter beslektede sider.',
# Revision deletion
-'rev-deleted-comment' => '(kommentar fjernet)',
-'rev-deleted-user' => '(brukernavn fjernet)',
-'rev-deleted-event' => '(fjernet loggoppføring)',
-'rev-deleted-text-permission' => "Denne revisjonen har blitt '''slettet'''.
-Det kan være detaljer i [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} slettingsloggen].",
-'rev-deleted-text-view' => "Denne sideversjonen har blitt '''slettet'''.
-Som administrator kan du se den. Det kan finnes flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-deleted-no-diff' => "Du kan ikke vise forskjellen fordi en av versjonene har blitt '''slettet'''.
-Det kan finnes flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}}sletteloggen].",
-'rev-deleted-unhide-diff' => "Én av versjonene i denne forskjellen har blitt '''slettet'''.
-Det kan finnes flere detaljer i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} sletteloggen].
+'rev-deleted-comment' => '(kommentar fjernet)',
+'rev-deleted-user' => '(brukernavn fjernet)',
+'rev-deleted-event' => '(fjernet loggoppføring)',
+'rev-deleted-user-contribs' => '[brukernavn eller IP-adresse fjernet – redigeringen vises ikke blant bidragene]',
+'rev-deleted-text-permission' => "Denne revisjonen har blitt '''slettet'''.
+Det kan være detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].",
+'rev-deleted-text-unhide' => "Denne sideversjonen har blitt '''slettet'''.
+Det kan være detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].
+Som administrator kan du fortsatt [$1 se revisjonen] om du ønsker å fortsette.",
+'rev-suppressed-text-unhide' => "Denne revisjonen har blitt '''unndratt'''.
+Det kan være mer informasjon i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unndragelseslogg].
+Som administrator kan du fortsatt [$1 se revisjonen] om du ønsker å fortsette.",
+'rev-deleted-text-view' => "Denne sideversjonen har blitt '''slettet'''.
+Som administrator kan du se den. Det kan finnes flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].",
+'rev-suppressed-text-view' => "Denne revisjonen har blitt '''unndratt'''.
+Som administrator kan du se den; det kan være mer informasjon i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unndragelsesloggen].",
+'rev-deleted-no-diff' => "Du kan ikke vise forskjellen fordi en av versjonene har blitt '''slettet'''.
+Det kan finnes flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].",
+'rev-suppressed-no-diff' => "Du kanne ikke se revisjonsforskjellen fordi en av revisjonene har blitt '''slettet'''.",
+'rev-deleted-unhide-diff' => "Én av versjonene i denne forskjellen har blitt '''slettet'''.
+Det kan finnes flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].
Som administrator kan du fortsatt [$1 se forskjellen] om du ønsker å fortsette.",
-'rev-delundel' => 'vis/skjul',
-'revisiondelete' => 'Slett/gjenopprett revisjoner',
-'revdelete-nooldid-title' => 'Ugyldig målversjon',
-'revdelete-nooldid-text' => 'Du har ikke angitt en målversjon for denne funksjonen, den angitte versjonen finnes ikke, eller du forsøker å skjule den nåværende versjonen.',
-'revdelete-nologtype-title' => 'Ingen loggtype spesifisert',
-'revdelete-nologtype-text' => 'Du har ikke spesifisert en loggtype å utføre denne handlingen på.',
-'revdelete-toomanytargets-title' => 'For mange mål',
-'revdelete-toomanytargets-text' => 'Du har spesifisert for mange måltyper å utføre denne handlingen på.',
-'revdelete-nologid-title' => 'Ugyldig loggelement',
-'revdelete-nologid-text' => 'Du har enten ikke spesifisert ett loggelement å utføre på denne funksjonen, eller spesifisert element finnes ikke.',
-'revdelete-selected' => "'''{{PLURAL:$2|Valgt revisjon|Valgte revisjoner}} av [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valgt loggoppføring|Valgte loggoppføringer}}:'''",
-'revdelete-text' => "'''Slettede versjoner og oppføringer vil fortsatt vises i sidehistorikken og loggene, men deler av innholdet vil ikke lenger bli offentliggjort.'''
-
-Andre administratorer på {{SITENAME}} vil fortsatt kunne se det skjulte innholdet, og kan gjenopprette det, med mindre videre begrensninger blir gitt av sideoperatørene.
-Vennligst bekreft at du vil gjøre dette, og at du skjønner følgene, og at du gjør dette i henhold til [[{{MediaWiki:Policy-url}}|MediaWiki sine retningslinjer]].",
-'revdelete-suppress-text' => "Utelatelse bør '''kun''' brukes i følgende tilfeller:
+'rev-suppressed-unhide-diff' => "En av sideversjonene i denne diffen har blitt '''skjul'''.
+Det kan være detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
+Som administrator kan du fortsatt [$1 se diffen] om du ønsker det.",
+'rev-deleted-diff-view' => "En av revisjonene i denne diffen har blitt '''slettet'''.
+Som administrator kan du se diffen; det kan være detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-diff-view' => "En av revisjonene i denne diffen har blitt '''skjult'''.
+Som administrator kan du se denne diffen; det kan være detaljer i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} skjulingsloggen].",
+'rev-delundel' => 'vis/skjul',
+'rev-showdeleted' => 'vis',
+'revisiondelete' => 'Slett/gjenopprett revisjoner',
+'revdelete-nooldid-title' => 'Ugyldig målversjon',
+'revdelete-nooldid-text' => 'Du har ikke angitt en målversjon for denne funksjonen, den angitte versjonen finnes ikke, eller du forsøker å skjule den nåværende versjonen.',
+'revdelete-nologtype-title' => 'Ingen loggtype spesifisert',
+'revdelete-nologtype-text' => 'Du har ikke spesifisert en loggtype å utføre denne handlingen på.',
+'revdelete-nologid-title' => 'Ugyldig loggelement',
+'revdelete-nologid-text' => 'Du har enten ikke spesifisert ett loggelement å utføre på denne funksjonen, eller spesifisert element finnes ikke.',
+'revdelete-no-file' => 'Den spesifiserte filen finnes ikke.',
+'revdelete-show-file-confirm' => 'Er du sikker på at du ønsker å vise en slettet versjon av filen «<nowiki>$1</nowiki>» fra den $2 klokken $3?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Valgt revisjon|Valgte revisjoner}} av [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Valgt loggoppføring|Valgte loggoppføringer}}:'''",
+'revdelete-text' => "'''Slettede versjoner og oppføringer vil fortsatt vises i sidehistorikken og loggene, men deler av innholdet vil ikke lenger bli offentliggjort.'''
+Andre administratorer på {{SITENAME}} vil fortsatt kunne se det skjulte innholdet, og kan gjenopprette det, med mindre videre begrensninger blir gitt av sideoperatørene.",
+'revdelete-confirm' => 'Bekreft at du ønsker å gjøre dette, at du forstår konsekvensene, og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].',
+'revdelete-suppress-text' => "Utelatelse bør '''kun''' brukes i følgende tilfeller:
* Upassende personlige opplysninger
*: ''hjemmeadresser og -telefonnummer, personnummer og lignende''",
-'revdelete-legend' => 'Fastsett synlighetsbegrensninger',
-'revdelete-hide-text' => 'Skjul revisjonstekst',
-'revdelete-hide-name' => 'Skjul handling og mål',
-'revdelete-hide-comment' => 'Skjul redigeringsforklaring',
-'revdelete-hide-user' => 'Skjul bidragsyters brukernavn eller IP',
-'revdelete-hide-restricted' => 'La disse begrensningene gjelde for administratorer også, og steng dette grensesnittet',
-'revdelete-suppress' => 'Fjern informasjon også fra administratorer',
-'revdelete-hide-image' => 'Skjul filinnhold',
-'revdelete-unsuppress' => 'Fjern betingelser på gjenopprettede revisjoner',
-'revdelete-log' => 'Årsak:',
-'revdelete-submit' => 'Utfør for valgte revisjoner',
-'revdelete-logentry' => 'endre revisjonssynlighet for [[$1]]',
-'logdelete-logentry' => 'endre hendelsessynlighet for [[$1]]',
-'revdelete-success' => "'''Versjonssynlighet vellykket oppdatert.'''",
-'logdelete-success' => "'''Hendelsessynlighet satt.'''",
-'revdel-restore' => 'endre synlighet',
-'pagehist' => 'Sidehistorikk',
-'deletedhist' => 'Slettet historikk',
-'revdelete-content' => 'innhold',
-'revdelete-summary' => 'redigeringssammendrag',
-'revdelete-uname' => 'brukernavn',
-'revdelete-restricted' => 'begrensninger gjelder også administratorer',
-'revdelete-unrestricted' => 'fjernet begrensninger for administratorer',
-'revdelete-hid' => 'skjulte $1',
-'revdelete-unhid' => 'synliggjorde $1',
-'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|revisjon|revisjoner}}',
-'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|element|elementer}}',
+'revdelete-legend' => 'Fastsett synlighetsbegrensninger',
+'revdelete-hide-text' => 'Skjul revisjonstekst',
+'revdelete-hide-image' => 'Skjul filinnhold',
+'revdelete-hide-name' => 'Skjul handling og mål',
+'revdelete-hide-comment' => 'Skjul redigeringsforklaring',
+'revdelete-hide-user' => 'Skjul bidragsyters brukernavn eller IP',
+'revdelete-hide-restricted' => 'La disse begrensningene gjelde for administratorer også, og steng dette grensesnittet',
+'revdelete-radio-same' => '(ikke endre)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nei',
+'revdelete-suppress' => 'Fjern informasjon også fra administratorer',
+'revdelete-unsuppress' => 'Fjern betingelser på gjenopprettede revisjoner',
+'revdelete-log' => 'Årsak:',
+'revdelete-submit' => 'Utfør på {{PLURAL:$1|valgt revisjon|valgte revisjoner}}',
+'revdelete-logentry' => 'endre revisjonssynlighet for [[$1]]',
+'logdelete-logentry' => 'endre hendelsessynlighet for [[$1]]',
+'revdelete-success' => "'''Versjonssynlighet vellykket oppdatert.'''",
+'revdelete-failure' => "'''Kunne ikke endre versjonssynligheten:'''
+$1",
+'logdelete-success' => "'''Hendelsessynlighet satt.'''",
+'logdelete-failure' => "'''Loggens synlighet kunne ikke bli stilt inn:'''
+$1",
+'revdel-restore' => 'endre synlighet',
+'pagehist' => 'Sidehistorikk',
+'deletedhist' => 'Slettet historikk',
+'revdelete-content' => 'innhold',
+'revdelete-summary' => 'redigeringssammendrag',
+'revdelete-uname' => 'brukernavn',
+'revdelete-restricted' => 'begrensninger gjelder også administratorer',
+'revdelete-unrestricted' => 'fjernet begrensninger for administratorer',
+'revdelete-hid' => 'skjulte $1',
+'revdelete-unhid' => 'synliggjorde $1',
+'revdelete-log-message' => '$1 for $2 {{PLURAL:$2|revisjon|revisjoner}}',
+'logdelete-log-message' => '$1 for $2 {{PLURAL:$2|element|elementer}}',
+'revdelete-hide-current' => 'Feil under skjuling av objektet datert $2, $1: dette er den gjeldende revisjonen.
+Den kan ikke skjules.',
+'revdelete-show-no-access' => 'Feil under visning av objekt datert $2, $1: dette objektet har blitt markert "begrenset".
+Du har ikke tilgang til det.',
+'revdelete-modify-no-access' => 'Feil under endring av objekt datert $2, $1: dette objektet har blitt markert "begrenset".
+Du har ikke tilgang til det.',
+'revdelete-modify-missing' => 'Feil under endring av objekt ID $1: det mangler i databasen!',
+'revdelete-no-change' => "'''Advarsel:''' objektet datert $2, $1 hadde allerede etterspurt synlighetsinnstillinger.",
+'revdelete-concurrent-change' => 'Feil under endring av objektet datert $2, $1: dets status ser ut til å ha blitt endret av noen andre mens du prøvde å endre det.
+Vennligst sjekk loggen.',
+'revdelete-only-restricted' => 'Feil ved gjemming av objekt datert $2, $1: du kan ikke skjule objekt fra å vises for administratorer uten også å velge en av de andre visningsalternativene.',
+'revdelete-reason-dropdown' => '*Vanlige slettingsgrunner
+** Opphavsrettsbrudd
+** Upassende personopplysninger
+** Mulig falskt sladder',
+'revdelete-otherreason' => 'Annen/ytterligere årsak:',
+'revdelete-reasonotherlist' => 'Annen årsak',
+'revdelete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
+'revdelete-offender' => 'Forfatter av denne versjonen:',
# Suppression log
'suppressionlog' => 'Sidefjerningslogg',
@@ -974,67 +1105,13 @@ Forsikre deg om at denne endringen vil opprettholde historisk sidekontinuitet.',
'mergelogpagetext' => 'Nedenfor er en liste over de nyligste flettingene av sidehistorikker.',
# Diffs
-'history-title' => 'Revisjonshistorikk for «$1»',
-'difference' => '(Forskjell mellom revisjoner)',
-'lineno' => 'Linje $1:',
-'compareselectedversions' => 'Sammenlign valgte revisjoner',
-'visualcomparison' => 'Visuell sammenligning',
-'wikicodecomparison' => 'Wikitekstsammenligning',
-'editundo' => 'angre',
-'diff-multi' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} ikke vist.)',
-'diff-movedto' => 'flyttet til $1',
-'diff-styleadded' => '$1 stil lagt til',
-'diff-added' => '$1 lagt til',
-'diff-changedto' => 'endret til $1',
-'diff-movedoutof' => 'flyttet ut av $1',
-'diff-styleremoved' => '$1 stil fjernet',
-'diff-removed' => '$1 fjernet',
-'diff-changedfrom' => 'endret fra $1',
-'diff-src' => 'kilde',
-'diff-withdestination' => 'med mål $1',
-'diff-with' => '&#32;med $1 $2',
-'diff-with-final' => '&#32;og $1 $2',
-'diff-width' => 'bredde',
-'diff-height' => 'høyde',
-'diff-p' => "et '''avsnitt'''",
-'diff-blockquote' => "et '''sitat'''",
-'diff-h1' => "en '''overskrift (nivå 1)'''",
-'diff-h2' => "en '''overskrift (nivå 2)'''",
-'diff-h3' => "en '''overskrift (nivå 3)'''",
-'diff-h4' => "en '''overskrift (nivå 4)'''",
-'diff-h5' => "en '''overskrift (nivå 5)'''",
-'diff-pre' => "et '''forhåndsformatert avsnitt'''",
-'diff-div' => "en '''inndeling'''",
-'diff-ul' => "en '''uordnet liste'''",
-'diff-ol' => "en '''ordet liste'''",
-'diff-li' => "et '''listeelement'''",
-'diff-table' => "en '''tabell'''",
-'diff-tbody' => "en '''tabells innhold'''",
-'diff-tr' => "en '''rad'''",
-'diff-td' => "en '''celle'''",
-'diff-th' => "en '''overskrift'''",
-'diff-br' => "et '''linjeskift'''",
-'diff-hr' => "en '''horisontal linje'''",
-'diff-code' => "et '''kildekodeavsnitt'''",
-'diff-dl' => "en '''definisjonsliste'''",
-'diff-dt' => "en '''definisjonsterm'''",
-'diff-dd' => "en '''definisjon'''",
-'diff-input' => "et '''innlegg'''",
-'diff-form' => "et '''skjema'''",
-'diff-img' => "et '''bilde'''",
-'diff-span' => "en '''''span'''''",
-'diff-a' => "en '''lenke'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''halvfet'''",
-'diff-strong' => "'''fet'''",
-'diff-em' => "'''markering'''",
-'diff-font' => "'''skrifttype'''",
-'diff-big' => "'''stor'''",
-'diff-del' => "'''slettet'''",
-'diff-tt' => "'''fast bredde'''",
-'diff-sub' => "'''senket'''",
-'diff-sup' => "'''opphøyd'''",
-'diff-strike' => "'''gjennomstreket'''",
+'history-title' => 'Revisjonshistorikk for «$1»',
+'difference' => '(Forskjell mellom revisjoner)',
+'lineno' => 'Linje $1:',
+'compareselectedversions' => 'Sammenlign valgte revisjoner',
+'showhideselectedversions' => 'Vis/skjul valgte versjoner',
+'editundo' => 'angre',
+'diff-multi' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} ikke vist.)',
# Search results
'searchresults' => 'Søkeresultat',
@@ -1042,28 +1119,25 @@ Forsikre deg om at denne endringen vil opprettholde historisk sidekontinuitet.',
'searchresulttext' => 'For mer informasjon om søking i {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som begynner med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenker til «$1»]])",
'searchsubtitleinvalid' => "Du søkte etter '''$1'''",
-'noexactmatch' => "'''Det er ingen side med tittelen «$1».''' Du kan [[:$1|opprette siden]].",
-'noexactmatch-nocreate' => "'''Det er ingen side med tittelen «$1».'''",
'toomanymatches' => 'For mange mulige svar, prøv med en annen spørring',
'titlematches' => 'Artikkeltitler med treff på forespørselen',
'notitlematches' => 'Ingen sidetitler samsvarte med søket',
'textmatches' => 'Artikkeltekster med treff på forespørselen',
'notextmatches' => 'Inden sidetekst samsvarte med søket',
-'prevn' => 'forrige $1',
-'nextn' => 'neste $1',
+'prevn' => 'forrige {{PLURAL:$1|$1}}',
+'nextn' => 'neste {{PLURAL:$1|$1}}',
'prevn-title' => 'Forrige $1 {{PLURAL:$1|resultat|resultater}}',
'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultater}}',
'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
-'viewprevnext' => 'Vis ($1) ($2) ($3).',
+'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Søkeinnstillinger',
'searchmenu-exists' => "* Siden '''[[$1]]'''",
'searchmenu-new' => "'''Opprett siden ''[[:$1]]'' på denne wikien.'''",
'searchhelp-url' => 'Help:Hjelp',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynner med dette]]',
'searchprofile-articles' => 'Innholdssider',
-'searchprofile-articles-and-proj' => 'Innholds- og prosjektsider',
-'searchprofile-project' => 'Prosjektsider',
-'searchprofile-images' => 'Filer',
+'searchprofile-project' => 'Hjelp- og prosjektsider',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Alt',
'searchprofile-advanced' => 'Avansert',
'searchprofile-articles-tooltip' => 'Søk i $1',
@@ -1071,8 +1145,6 @@ Forsikre deg om at denne endringen vil opprettholde historisk sidekontinuitet.',
'searchprofile-images-tooltip' => 'Søk etter filer',
'searchprofile-everything-tooltip' => 'Søk i alt innhold (inkldert diskusjonssider)',
'searchprofile-advanced-tooltip' => 'Søk i visse navnerom',
-'prefs-search-nsdefault' => 'Søk med standardverdier:',
-'prefs-search-nscustom' => 'Søk i valgte navnerom:',
'search-result-size' => '$1 ({{PLURAL:$2|ett|$2}} ord)',
'search-result-score' => 'Relevans: $1&nbsp;%',
'search-redirect' => '(omdirigering $1)',
@@ -1085,11 +1157,12 @@ Forsikre deg om at denne endringen vil opprettholde historisk sidekontinuitet.',
'search-mwsuggest-disabled' => 'ingen forslag',
'search-relatedarticle' => 'Relatert',
'mwsuggest-disable' => 'Slå av AJAX-forslag',
+'searcheverything-enable' => 'Søk i alle navnerom',
'searchrelated' => 'relatert',
'searchall' => 'alle',
'showingresults' => "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
'showingresultsnum' => "Nedenfor vises {{PLURAL:$3|'''ett''' resultat|'''$3''' resultater}} fra og med nummer '''$2'''.",
-'showingresultstotal' => "Viser resultat {{PLURAL:$4|'''$1''' av '''$3'''|'''$1&ndash;$2''' av '''$3'''}} nedenfor",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
'nonefound' => "'''Merk''': Som standard søkes det kun i enkelte navnerom.
For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler, osv), eller bruk det ønskede navnerommet som prefiks.",
'search-nonefound' => 'Det var ingen resultater som passet til søket.',
@@ -1098,94 +1171,130 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
'powersearch-ns' => 'Søk i navnerom:',
'powersearch-redir' => 'Vis omdirigeringer',
'powersearch-field' => 'Søk etter',
+'powersearch-togglelabel' => 'Merk:',
+'powersearch-toggleall' => 'Alle',
+'powersearch-togglenone' => 'Ingen',
'search-external' => 'Eksternt søk',
'searchdisabled' => 'Søkefunksjonen er slått av. Du kan søke via Google i mellomtiden. Merk at Googles indeksering av {{SITENAME}} muligens er utdatert.',
+# Quickbar
+'qbsettings' => 'Brukerinnstillinger for hurtigmeny.',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Fast venstre',
+'qbsettings-fixedright' => 'Fast høyre',
+'qbsettings-floatingleft' => 'Flytende venstre',
+'qbsettings-floatingright' => 'Flytende til høyre',
+
# Preferences page
-'preferences' => 'Innstillinger',
-'mypreferences' => 'Innstillinger',
-'prefs-edits' => 'Antall redigeringer:',
-'prefsnologin' => 'Ikke logget inn',
-'prefsnologintext' => 'Du må være <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} logget inn]</span> for å endre brukerinnstillingene.',
-'prefsreset' => 'Brukerinnstillingene er tilbakestilt.',
-'qbsettings' => 'Brukerinnstillinger for hurtigmeny.',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast høyre',
-'qbsettings-floatingleft' => 'Flytende venstre',
-'qbsettings-floatingright' => 'Flytende til høyre',
-'changepassword' => 'Endre passord',
-'skin' => 'Utseende',
-'skin-preview' => 'Forhåndsvisning',
-'math' => 'Matteformler',
-'dateformat' => 'Datoformat',
-'datedefault' => 'Ingen foretrukket',
-'datetime' => 'Dato og tid',
-'math_failure' => 'Feil i matematikken',
-'math_unknown_error' => 'ukjent feil',
-'math_unknown_function' => 'ukjent funksjon',
-'math_lexing_error' => 'lexerfeil',
-'math_syntax_error' => 'syntaksfeil',
-'math_image_error' => 'PNG-konversjon mislyktes',
-'math_bad_tmpdir' => 'Kan ikke skrive til eller opprette midlertidig mappe',
-'math_bad_output' => 'Kan ikke skrive til eller opprette resultatmappe',
-'math_notexvc' => 'Mangler kjørbar texvc;
-se math/README for oppsett.',
-'prefs-personal' => 'Brukerdata',
-'prefs-rc' => 'Siste endringer',
-'prefs-watchlist' => 'Overvåkningsliste',
-'prefs-watchlist-days' => 'Dager som skal vises i overvåkningslisten:',
-'prefs-watchlist-days-max' => '(maskimum 7 dager)',
-'prefs-watchlist-edits' => 'Antall redigeringer som skal vises i utvidet overvåkningsliste:',
-'prefs-watchlist-edits-max' => '(maksimum antall: 1000)',
-'prefs-misc' => 'Diverse',
-'prefs-resetpass' => 'Endre passord',
-'saveprefs' => 'Lagre',
-'resetprefs' => 'Tilbakestill ulagrede endringer',
-'restoreprefs' => 'Tilbakestill til standardinnstillinger overalt',
-'textboxsize' => 'Redigering',
-'prefs-edit-boxsize' => 'Størrelse på redigeringsvinduet.',
-'rows' => 'Rader:',
-'columns' => 'Kolonner',
-'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultater per side:',
-'contextlines' => 'Linjer per resultat',
-'contextchars' => 'Tegn per linje i resultatet',
-'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
-'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dag|dager}})',
-'recentchangescount' => 'Antall redigeringer som skal vises i «Siste endringer», historikker og logger som standard:',
-'savedprefs' => 'Innstillingene ble lagret.',
-'timezonelegend' => 'Tidssone:',
-'timezonetext' => '¹Tast inn antall timer lokaltid differerer fra tjenertiden (UTC).',
-'localtime' => 'Lokaltid:',
-'timezoneselect' => 'Tidssone:',
-'timezoneuseserverdefault' => 'Bruk serverens standardinnstillinger',
-'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
-'timezoneoffset' => 'Forskjell¹:',
-'servertime' => 'Serverens tid er nå:',
-'guesstimezone' => 'Hent tidssone fra nettleseren',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlanterhavet',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Det indiske hav',
-'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillat andre å sende meg e-post',
-'prefs-searchoptions' => 'Søkealternativ',
-'prefs-namespaces' => 'Navnerom',
-'defaultns' => 'Søk i disse navnerommene som standard:',
-'default' => 'standard',
-'files' => 'Filer',
-'prefs-custom-css' => 'Personlig CSS',
-'prefs-custom-js' => 'Personlig Javascript',
+'preferences' => 'Innstillinger',
+'mypreferences' => 'Innstillinger',
+'prefs-edits' => 'Antall redigeringer:',
+'prefsnologin' => 'Ikke logget inn',
+'prefsnologintext' => 'Du må være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget inn]</span> for å endre brukerinnstillingene.',
+'changepassword' => 'Endre passord',
+'prefs-skin' => 'Utseende',
+'skin-preview' => 'Forhåndsvisning',
+'prefs-math' => 'Matteformler',
+'datedefault' => 'Ingen foretrukket',
+'prefs-datetime' => 'Dato og tid',
+'prefs-personal' => 'Brukerdata',
+'prefs-rc' => 'Siste endringer',
+'prefs-watchlist' => 'Overvåkningsliste',
+'prefs-watchlist-days' => 'Dager som skal vises i overvåkningslisten:',
+'prefs-watchlist-days-max' => '(maskimum 7 dager)',
+'prefs-watchlist-edits' => 'Antall redigeringer som skal vises i utvidet overvåkningsliste:',
+'prefs-watchlist-edits-max' => '(maksimum antall: 1000)',
+'prefs-watchlist-token' => 'Nøkkel for overvåkningsliste',
+'prefs-misc' => 'Diverse',
+'prefs-resetpass' => 'Endre passord',
+'prefs-email' => 'Alternativer for e-post',
+'prefs-rendering' => 'Utseende',
+'saveprefs' => 'Lagre',
+'resetprefs' => 'Tilbakestill ulagrede endringer',
+'restoreprefs' => 'Tilbakestill til standardinnstillinger overalt',
+'prefs-editing' => 'Redigering',
+'prefs-edit-boxsize' => 'Størrelse på redigeringsvinduet.',
+'rows' => 'Rader:',
+'columns' => 'Kolonner',
+'searchresultshead' => 'Søk',
+'resultsperpage' => 'Resultater per side:',
+'contextlines' => 'Linjer per resultat',
+'contextchars' => 'Tegn per linje i resultatet',
+'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
+'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dag|dager}})',
+'recentchangescount' => 'Antall redigeringer som skal vises som standard:',
+'prefs-help-recentchangescount' => 'Dette inkluderer nylige endringer, sidehistorikk og logger.',
+'prefs-help-watchlist-token' => 'Om du fyller ut dette feltet med et hemmelig tall vil lage en RSS-liste for overvåkingslista di.
+Alle som vet det rette tallet vil være i stand til å lese overvåkingslista di, så velg en sikker verdi.
+Her er et tilfeldig tall du kan bruke: $1',
+'savedprefs' => 'Innstillingene ble lagret.',
+'timezonelegend' => 'Tidssone:',
+'localtime' => 'Lokaltid:',
+'timezoneuseserverdefault' => 'Bruk serverens standardinnstillinger',
+'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
+'timezoneoffset' => 'Forskjell¹:',
+'servertime' => 'Serverens tid er nå:',
+'guesstimezone' => 'Hent tidssone fra nettleseren',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlanterhavet',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Det indiske hav',
+'timezoneregion-pacific' => 'Stillehavet',
+'allowemail' => 'Tillat andre å sende meg e-post',
+'prefs-searchoptions' => 'Søkealternativ',
+'prefs-namespaces' => 'Navnerom',
+'defaultns' => 'Søk ellers i disse navnerommene:',
+'default' => 'standard',
+'prefs-files' => 'Filer',
+'prefs-custom-css' => 'Personlig CSS',
+'prefs-custom-js' => 'Personlig Javascript',
+'prefs-reset-intro' => 'Du kan bruke denne siden til å tilbakestille innstillingene dine til standardinnstillingene.
+Dette kan ikke tilbakestilles.',
+'prefs-emailconfirm-label' => 'E-postbekreftelse:',
+'prefs-textboxsize' => 'Størrelse på redigeringsvindu',
+'youremail' => 'E-post:',
+'username' => 'Brukernavn:',
+'uid' => 'Bruker-ID:',
+'prefs-memberingroups' => 'Medlem i følgende {{PLURAL:$1|gruppe|grupper}}:',
+'prefs-registration' => 'Registreringstid:',
+'yourrealname' => 'Virkelig navn:',
+'yourlanguage' => 'Språk:',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Kommentarer på diskusjonssider bør alltid signeres med «<nowiki>~~~~</nowiki>», som vil bli konvertert til din signatur med tidspunkt.',
+'badsig' => 'Ugyldig råsignatur; sjekk HTML-elementer.',
+'badsiglength' => 'Signaturen er for lang.
+Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
+'yourgender' => 'Kjønn:',
+'gender-unknown' => 'Uspesifisert',
+'gender-male' => 'Mann',
+'gender-female' => 'Kvinne',
+'prefs-help-gender' => 'Valgfritt: brukes for kjønnskorrekt tekst av programvaren. Denne informasjonen vil være offentlig.',
+'email' => 'E-post',
+'prefs-help-realname' => '* Virkelig navn (valgfritt): dersom du velger å oppgi navnet, vil det bli brukt til å kreditere deg for ditt arbeid.',
+'prefs-help-email' => 'Å angi e-postadresse er valgfritt, men lar det motta nytt passord om du glemmer det gamle.
+Du kan også la velge å la andre brukere kontakte deg via brukersiden din uten å røpe identiteten din.',
+'prefs-help-email-required' => 'E-postadresse er påkrevd.',
+'prefs-info' => 'Grunnleggende informasjon',
+'prefs-i18n' => 'Internasjonalisering',
+'prefs-signature' => 'Signatur',
+'prefs-dateformat' => 'Datoformat',
+'prefs-timeoffset' => 'Tidsforskyvning',
+'prefs-advancedediting' => 'Avanserte alternativ',
+'prefs-advancedrc' => 'Avanserte alternativ',
+'prefs-advancedrendering' => 'Avanserte alternativ',
+'prefs-advancedsearchoptions' => 'Avanserte alternativ',
+'prefs-advancedwatchlist' => 'Avanserte alternativ',
+'prefs-display' => 'Visningsalternativ',
+'prefs-diffs' => 'Forskjeller',
# User rights
-'userrights' => 'Brukerrettighetskontroll', # Not used as normal message but as header for the special page itself
+'userrights' => 'Brukerrettighetskontroll',
'userrights-lookup-user' => 'Ordne brukergrupper',
'userrights-user-editname' => 'Skriv inn et brukernavn:',
'editusergroup' => 'Endre brukergrupper',
@@ -1193,6 +1302,7 @@ se math/README for oppsett.',
'userrights-editusergroup' => 'Rediger brukergrupper',
'saveusergroups' => 'Lagre brukergrupper',
'userrights-groupsmember' => 'Medlem av:',
+'userrights-groupsmember-auto' => 'Implisitt medlem av:',
'userrights-groups-help' => 'Du kan endre hvilke grupper denne brukeren er medlem av.
* En avkrysset boks betyr at brukeren er medlem av gruppen.
* En uavkrysset boks betyr at brukeren ikke er medlem av gruppen.
@@ -1257,6 +1367,7 @@ se math/README for oppsett.',
'right-bigdelete' => 'Slette sider med stor historikk',
'right-deleterevision' => 'Slette og gjenopprette enkeltrevisjoner av sider',
'right-deletedhistory' => 'Se slettet sidehistorikk uten tilhørende sidetekst',
+'right-deletedtext' => 'Vis slettet tekst og endringer mellom slettede versjoner',
'right-browsearchive' => 'Søke i slettede sider',
'right-undelete' => 'Gjenopprette sider',
'right-suppressrevision' => 'Se og gjenopprette skjulte siderevisjoner',
@@ -1270,6 +1381,8 @@ se math/README for oppsett.',
'right-editprotected' => 'Redigere beskyttede sider',
'right-editinterface' => 'Redigere brukergrensesnittet',
'right-editusercssjs' => 'Redigere andre brukeres CSS- og JS-filer',
+'right-editusercss' => 'Redigere andre brukeres CSS-filer',
+'right-edituserjs' => 'Redigere andre brukeres JS-filer',
'right-rollback' => 'Raskt tilbakestille den siste brukeren som har redigert en gitt side',
'right-markbotedits' => 'Markere tilbakestillinger som robotredigeringer',
'right-noratelimit' => 'Påvirkes ikke av hastighetsgrenser',
@@ -1286,6 +1399,8 @@ se math/README for oppsett.',
'right-siteadmin' => 'Låse og låse opp databasen',
'right-reset-passwords' => 'Nullstille andre brukeres passord',
'right-override-export-depth' => 'Eksporter sider inkludert lenkede sider til en dypde på 5',
+'right-versiondetail' => 'Vis utvidet informasjon om programvareversjon',
+'right-sendemail' => 'Send e-post til andre brukere',
# User rights log
'rightslog' => 'Brukerrettighetslogg',
@@ -1335,6 +1450,15 @@ se math/README for oppsett.',
'recentchanges-legend' => 'Alternativ for siste endringer',
'recentchangestext' => 'Vis de siste endringene til denne siden',
'recentchanges-feed-description' => 'Følg med på siste endringer i denne wikien med denne matingen.',
+'recentchanges-label-legend' => 'Forklaring: $1.',
+'recentchanges-legend-newpage' => '$1 – ny side',
+'recentchanges-label-newpage' => 'Denne redigeringen opprettet en ny side',
+'recentchanges-legend-minor' => '$1 – mindre endring',
+'recentchanges-label-minor' => 'Dette er en mindre endring',
+'recentchanges-legend-bot' => '$1 – botendring',
+'recentchanges-label-bot' => 'Denne redigeringen ble gjort av en bot',
+'recentchanges-legend-unpatrolled' => '$1 – upatruljert endring',
+'recentchanges-label-unpatrolled' => 'Denne redigeringen har ikke blitt patruljert ennå',
'rcnote' => "Nedenfor vises {{PLURAL:$1|'''1''' endring|de siste '''$1''' endringene}} fra {{PLURAL:$2|det siste døgnet|de siste '''$2''' døgnene}}, per $5 $4.",
'rcnotefrom' => "Nedenfor er endringene fra '''$2''' (opp til '''$1''' vises).",
'rclistfrom' => 'Vis nye endringer med start fra $1',
@@ -1361,6 +1485,8 @@ se math/README for oppsett.',
# Recent changes linked
'recentchangeslinked' => 'Relaterte endringer',
+'recentchangeslinked-feed' => 'Relaterte endringer',
+'recentchangeslinked-toolbox' => 'Relaterte endringer',
'recentchangeslinked-title' => 'Endringer relatert til «$1»',
'recentchangeslinked-noresult' => 'Ingen endringer på lenkede sider i den gitte perioden.',
'recentchangeslinked-summary' => "Dette er en liste over de siste endringene på sidene lenket fra en spesifisert side (eller til meldlemmer av en spesifisert kategori).
@@ -1371,8 +1497,8 @@ Sider på [[Special:Watchlist|overvåkningslisten din]] er i '''fet skrift'''.",
# Upload
'upload' => 'Last opp fil',
'uploadbtn' => 'Last opp fil',
-'reupload' => 'Last opp fil igjen',
'reuploaddesc' => 'Avbryt opplasting og gå tilbake til opplastingsskjemaet',
+'upload-tryagain' => 'Send inn endret filbeskrivelse',
'uploadnologin' => 'Ikke logget inn',
'uploadnologintext' => 'Du må være [[Special:UserLogin|logget inn]] for å kunne laste opp filer.',
'upload_directory_missing' => 'Oppplastingsmappen ($1) mangler og kunne ikke opprettes av tjeneren.',
@@ -1404,6 +1530,7 @@ Se [[Special:NewFiles|galleriet over nye filer]] for en mer visuell visning',
'minlength1' => 'Filnavn må være på minst én bokstav.',
'illegalfilename' => 'Filnavnet «$1» inneholder ugyldige tegn; gi fila et nytt navn og prøv igjen.',
'badfilename' => 'Navnet på filen er blitt endret til «$1».',
+'filetype-mime-mismatch' => 'Filendelsen samsvarer ikke med noen MIME-type.',
'filetype-badmime' => 'Filer av typen «$1» kan ikke lastes opp.',
'filetype-bad-ie-mime' => 'Kan ikke laste opp denne filen fordi Internet Explorer ville detektert denne som «$1», noe som er ikke er tillatt, og en potensielt farlig filtype.',
'filetype-unwanted-type' => "'''«.$1»''' er en uønsket filtype.
@@ -1423,7 +1550,6 @@ Sjekk '''<tt>[[:$1]]</tt>''' hvis du ikke er sikker på at du vil forandre den.
* Navnet på din fil: '''<tt>[[:$1]]</tt>'''
* Navn på eksisterende fil: '''<tt>[[:$2]]</tt>'''
Velg et annet filnavn.",
-'fileexists-thumb' => "<center>'''Eksisterende fil'''</center>",
'fileexists-thumbnail-yes' => "Filen ser ut til å være et bilde av redusert størrelse. [[$1|thumb]]
Vennligst sjekk filen '''<tt>[[:$1]]</tt>'''.
Om filen du sjekket er det samme bildet, men i opprinnelig størrelse, er det ikke nødvendig å laste opp en ekstra fil.",
@@ -1438,6 +1564,7 @@ Om du fortsatt ønsker å laste opp fila, gå tilbake og last den opp under et n
'file-deleted-duplicate' => 'En fil identisk med denne filen ([[$1]]) har tidligere blitt slettet. Du bør sjekke denne filens slettehistorikk før du prøver å laste den opp på nytt.',
'successfulupload' => 'Opplastingen er gjennomført',
'uploadwarning' => 'Opplastingsadvarsel',
+'uploadwarning-text' => 'Vennligst endre filbeskrivelsen nedenfor og prøv igjen.',
'savefile' => 'Lagre fil',
'uploadedimage' => 'lastet opp «[[$1]]»',
'overwroteimage' => 'last opp en ny versjon av «[[$1]]»',
@@ -1445,11 +1572,14 @@ Om du fortsatt ønsker å laste opp fila, gå tilbake og last den opp under et n
'uploaddisabledtext' => 'Opplasting er slått av.',
'php-uploaddisabledtext' => 'PHP-filopplasting er deaktivert. Sjekk innstillingen for file_uploads.',
'uploadscripted' => 'Denne fila inneholder HTML eller skripting som kan feiltolkes av en nettleser.',
-'uploadcorrupt' => 'Denne fila er ødelagt eller er en ugyldig filtype. Sjekk fila og last den opp på nytt.',
'uploadvirus' => 'Denne fila inneholder virus! Detaljer: $1',
+'upload-source' => 'Kildefil',
'sourcefilename' => 'Velg en fil:',
+'sourceurl' => 'Kildens URL:',
'destfilename' => 'Ønsket filnavn:',
'upload-maxfilesize' => 'Maksimal filstørrelse: $1',
+'upload-description' => 'Filbeskrivelse',
+'upload-options' => 'Opplastingsvalg',
'watchthisupload' => 'Overvåk denne filen',
'filewasdeleted' => 'Ei fil ved dette navnet har blitt lastet opp tidligere, og så slettet. Sjekk $1 før du forsøker å laste det opp igjen.',
'upload-wasdeleted' => "'''Advarsel: Du laster opp en fil som tidligere har blitt slettet.'''
@@ -1471,14 +1601,45 @@ MGP # Pentax
PICT # div.
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'Gal protokoll',
-'upload-proto-error-text' => 'Fjernopplasting behøver adresser som begynner med <code>http://</code> eller <code>ftp://</code>.',
-'upload-file-error' => 'Intern feil',
-'upload-file-error-text' => 'En intern feil oppsto under forsøk på å lage en midlertidig fil på tjeneren. Vennligst kontakt en [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Ukjent opplastingsfeil',
-'upload-misc-error-text' => 'En ukjent feil forekom under opplastingen.
+'upload-proto-error' => 'Gal protokoll',
+'upload-proto-error-text' => 'Fjernopplasting behøver adresser som begynner med <code>http://</code> eller <code>ftp://</code>.',
+'upload-file-error' => 'Intern feil',
+'upload-file-error-text' => 'En intern feil oppsto under forsøk på å lage en midlertidig fil på tjeneren. Vennligst kontakt en [[Special:ListUsers/sysop|administrator]].',
+'upload-misc-error' => 'Ukjent opplastingsfeil',
+'upload-misc-error-text' => 'En ukjent feil forekom under opplastingen.
Bekreft at adressen er gyldig og tilgjengelig, og prøv igjen.
Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'URLen inneholdt for mange omdirigeringer',
+'upload-unknown-size' => 'Ukjent størrelse',
+'upload-http-error' => 'En HTTP-feil oppstod: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Ingen tilgang',
+'img-auth-nopathinfo' => 'PATH_INFO mangler.
+Tjeneren din er ikke satt opp til å gi denne informasjonen.
+Den er kanskje CGI-basert og støtter ikke img_auth.
+Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Den ønskede stien finnes ikke i den oppsatte opplastingsmappa.',
+'img-auth-badtitle' => 'Kunne ikke lage en gyldig tittel ut fra «$1».',
+'img-auth-nologinnWL' => 'Du er ikke logget inn, og «$1» er ikke på hvitelista.',
+'img-auth-nofile' => 'Filen «$1» finnes ikke.',
+'img-auth-isdir' => 'Du prøver å få tilgang til mappa «$1».
+Kun filtilgang tillates.',
+'img-auth-streaming' => 'Sender «$1».',
+'img-auth-public' => 'Funksjonen til img_auth.php er å lage filer fra en privat wiki.
+Denne wikien er satt opp som en offentlig wiki.
+For best mulig sikkerhet er img_auth.php slått av.',
+'img-auth-noread' => 'Brukeren har ikke tilgang til å lese «$1».',
+
+# HTTP errors
+'http-invalid-url' => 'Ugyldig internettadresse: $1',
+'http-invalid-scheme' => 'Internettadresser med «$1»-formen støttes ikke',
+'http-request-error' => 'HTTP-forespørselen feilet på grunn av en ukjent feil.',
+'http-read-error' => 'HTTP-lesefeil.',
+'http-timed-out' => 'Tidsavbrudd på HTTP-forespørsel.',
+'http-curl-error' => 'Feil under henting av adresse: $1',
+'http-host-unreachable' => 'Kunne ikke nå adressen.',
+'http-bad-status' => 'Det var et problem under HTTP-forespørselen: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kunne ikke nå adressen',
@@ -1487,6 +1648,7 @@ Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
'upload-curl-error28-text' => 'Siden brukte for lang tid på å reagere. Vennligst sjekk at siden er oppe, og vent en kort stund for du prøver igjen. Vurder å prøve på en mindre hektisk tid.',
'license' => 'Lisens:',
+'license-header' => 'Lisensiering',
'nolicense' => 'Ingen spesifisert',
'license-nopreview' => '(Forhåndsvisning ikke tilgjengelig)',
'upload_source_url' => ' (en gyldig, offentlig tilgjengelig adresse)',
@@ -1505,6 +1667,7 @@ Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
'listfiles_count' => 'Versjoner',
# File description page
+'file-anchor-link' => 'Fil',
'filehist' => 'Filhistorikk',
'filehist-help' => 'Klikk på en dato/klokkeslett for å se filen slik den var da.',
'filehist-deleteall' => 'slett alt',
@@ -1519,6 +1682,7 @@ Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
'filehist-dimensions' => 'Dimensjoner',
'filehist-filesize' => 'Filstørrelse',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Fil mangler',
'imagelinks' => 'Fillenker',
'linkstoimage' => 'Følgende {{PLURAL:$1|side|$1 sider}} har lenker til denne filen:',
'linkstoimage-more' => 'Mer enn $1 {{PLURAL:$1|side|sider}} lenker til denne fila.
@@ -1528,15 +1692,16 @@ En [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengelig.',
'morelinkstoimage' => 'Vis [[Special:WhatLinksHere/$1|flere lenker]] til denne filen.',
'redirectstofile' => 'Følgende {{PLURAL:$1|fil er en omdirigering|filer er omdirigeringer}} til denne filen:',
'duplicatesoffile' => 'Følgende {{PLURAL:$1|fil er en dublett|filer er dubletter}} av denne filen ([[Special:FileDuplicateSearch/$2|fler detaljer]]):',
-'sharedupload' => 'Denne filen er fra $1 og kan bli brukt av andre prosjekter.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Se $1 for mer informasjon.',
-'shareduploadwiki-desc' => 'Beskrivelsen som vist på dens $1 vises nedenfor.',
-'shareduploadwiki-linktext' => 'filbeskrivelsesside',
-'noimage' => 'Ingen fil ved dette navnet finnes, men du kan $1.',
-'noimage-linktext' => 'laste opp ett',
+'sharedupload' => 'Denne filen er fra $1 og kan bli brukt av andre prosjekter.',
+'sharedupload-desc-there' => 'Denne fila er fra $1 og kan brukes på andre prosjekter.
+Se [$2 filbeskrivelsessida] for mer informasjon.',
+'sharedupload-desc-here' => 'Denne fila er fra $1 og kan brukes av andre prosjekter.
+Beskrivelsen fra [$2 filbeskrivelsessida] vises nedenfor.',
+'filepage-nofile' => 'Det finnes ingen fil med dette navnet.',
+'filepage-nofile-link' => 'Ingen fil med dette navnet eksisterer, men du kan [$1 laste den opp].',
'uploadnewversion-linktext' => 'Last opp en ny versjon av denne filen',
-'shared-repo-from' => 'fra $1', # $1 is the repository name
-'shared-repo' => 'et delt fillager', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'fra $1',
+'shared-repo' => 'et delt fillager',
# File reversion
'filerevert' => 'Tilbakestill $1',
@@ -1565,6 +1730,7 @@ En [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengelig.',
** Opphavsrettsbrudd
** Duplikatfil',
'filedelete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
+'filedelete-maintenance' => 'Sletting og gjenoppretting av filer er midlertidig slått av på grunn av vedlikehold.',
# MIME search
'mimesearch' => 'MIME-søk',
@@ -1585,7 +1751,7 @@ En [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengelig.',
# Random page
'randompage' => 'Tilfeldig side',
-'randompage-nopages' => 'Det er ingen sider i navnerommet $1.',
+'randompage-nopages' => 'Det er ingen sider i {{PLURAL:$2|det følgende navnrommet|de følgende navnrommene}}: $1.',
# Random redirect
'randomredirect' => 'Tilfeldig omdirigering',
@@ -1597,6 +1763,7 @@ En [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengelig.',
'statistics-header-edits' => 'Redigeringsstatistikk',
'statistics-header-views' => 'Visningsstatistikk',
'statistics-header-users' => 'Brukerstatistikk',
+'statistics-header-hooks' => 'Øvrig statistikk',
'statistics-articles' => 'Innholdssider',
'statistics-pages' => 'Sider',
'statistics-pages-desc' => 'Alle sider på wikien, inkludert diskusjonssider, omdirigeringer o.l.',
@@ -1626,8 +1793,8 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
'brokenredirects' => 'Brutte omdirigeringer',
'brokenredirectstext' => 'Følgende omdirigeringer peker til ikkeeksisterende sider:',
-'brokenredirects-edit' => '(rediger)',
-'brokenredirects-delete' => '(slett)',
+'brokenredirects-edit' => 'rediger',
+'brokenredirects-delete' => 'slett',
'withoutinterwiki' => 'Sider uten lenker til andre språk',
'withoutinterwiki-summary' => 'Følgende sider lenker ikke til andre språkversjoner:',
@@ -1734,7 +1901,7 @@ Du kan minske antallet resultater ved å velge loggtype, brukernavn eller den si
# Special:Categories
'categories' => 'Kategorier',
-'categoriespagetext' => 'Følgende kategorier inneholder sider eller media.
+'categoriespagetext' => 'Følgende {{PLURAL:$1|kategori|kategorier}} inneholder sider eller media.
[[Special:UnusedCategories|Ubrukte kategorier]] vises ikke her.
Se også [[Special:WantedCategories|ønskede kategorier]].',
'categoriesfrom' => 'Vis kategorier fra og med:',
@@ -1742,8 +1909,9 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'special-categories-sort-abc' => 'sorter alfabetisk',
# Special:DeletedContributions
-'deletedcontributions' => 'Slettede brukerbidrag',
-'deletedcontributions-title' => 'Slettede brukerbidrag',
+'deletedcontributions' => 'Slettede brukerbidrag',
+'deletedcontributions-title' => 'Slettede brukerbidrag',
+'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
'linksearch' => 'Eksterne lenker',
@@ -1758,6 +1926,16 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'listusersfrom' => 'Vis brukere fra og med:',
'listusers-submit' => 'Vis',
'listusers-noresult' => 'Ingen bruker funnet.',
+'listusers-blocked' => '(konto blokkert)',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brukere',
+'activeusers-intro' => 'Dette er en liste over brukere som har hatt en eller annen form for aktivitet innenfor {{PLURAL:$1|den siste dagen|de siste dagene}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|endring|endringer}} {{PLURAL:$3|det siste døgnet|de siste $3 dagene}}',
+'activeusers-from' => 'Vis brukere fra og med:',
+'activeusers-hidebots' => 'Skjul roboter',
+'activeusers-hidesysops' => 'Skjul administratorer',
+'activeusers-noresult' => 'Ingen brukere funnet.',
# Special:Log/newusers
'newuserlogpage' => 'Brukeropprettelseslogg',
@@ -1768,17 +1946,23 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'newuserlog-autocreate-entry' => 'Konto opprettet automatisk',
# Special:ListGroupRights
-'listgrouprights' => 'Rettigheter for brukergrupper',
-'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
+'listgrouprights' => 'Rettigheter for brukergrupper',
+'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
Mer informasjon om de enkelte rettighetstypene kan finnes [[{{MediaWiki:Listgrouprights-helppage}}|her]].',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Rettigheter',
-'listgrouprights-helppage' => 'Help:Grupperettigheter',
-'listgrouprights-members' => '(liste over medlemmer)',
-'listgrouprights-addgroup' => 'Kan legge til {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-addgroup-all' => 'Kan legge til alle grupper',
-'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Innvilget rettighet</span>
+* <span class="listgrouprights-granted">Tilbaketrukket rettighet</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Rettigheter',
+'listgrouprights-helppage' => 'Help:Grupperettigheter',
+'listgrouprights-members' => '(liste over medlemmer)',
+'listgrouprights-addgroup' => 'Kan legge til {{PLURAL:$2|gruppa|gruppene}}: $1',
+'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppa|gruppene}}: $1',
+'listgrouprights-addgroup-all' => 'Kan legge til alle grupper',
+'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
+'listgrouprights-addgroup-self' => 'Kan legge til {{PLURAL:$2|gruppe|gruppene}} til egen konto: $1',
+'listgrouprights-removegroup-self' => 'Kan ta vekk {{PLURAL:$2|gruppe|grupper}} fra egen konto: $1',
+'listgrouprights-addgroup-self-all' => 'Kan legge til alle grupper til egen konto',
+'listgrouprights-removegroup-self-all' => 'Kan ta bort alle grupper fra egen konto',
# E-mail user
'mailnologin' => 'Ingen avsenderadresse',
@@ -1850,9 +2034,9 @@ Fremtidige endringer til denne siden og den tilhørende diskusjonssiden blir lis
'enotif_lastvisited' => 'Se $1 for alle endringer siden ditt forrige besøk.',
'enotif_lastdiff' => 'Se $1 for å se denne endringen.',
'enotif_anon_editor' => 'anonym bruker $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Kjære $WATCHINGUSERNAME,
-{{SITENAME}}-siden $PAGETITLE har blitt $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR, se $PAGETITLE_URL for den nåværende versjonen.
+{{SITENAME}}-siden $PAGETITLE har blitt $CHANGEDORCREATED den $PAGEEDITDATE av $PAGEEDITOR, se $PAGETITLE_URL for den nåværende revisjonen.
$NEWPAGE
@@ -1862,16 +2046,21 @@ Kontakt brukeren:
e-post: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Det vil ikke komme flere påminnelser om endringer på denne siden med mindre du besøker den. Du kan også fjerne påminnelsesflagg for alle sider i overvåkningslisten din.
+Det vil ikke komme flere påminnelser om endringer på denne siden med mindre du besøker den.
+Du kan også fjerne påminnelsesflagg for alle sider i overvåkningslisten din.
Med vennlig hilsen,
{{SITENAME}}s påminnelsessystem
--
-For å endre innstillingene i overvåkningslisten din, besøk {{fullurl:Special:Watchlist/edit}}
+For å endre innstillingene i overvåkningslisten din, besøk
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+For å slette siden fra overvåkningslisten din, besøk
+$UNWATCHURL
Tilbakemeldinger og videre assistanse:
-{{fullurl:Project:Hjelp}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Slett side',
@@ -1882,10 +2071,11 @@ Tilbakemeldinger og videre assistanse:
'exblank' => 'siden var tom',
'delete-confirm' => 'Slett «$1»',
'delete-legend' => 'Slett',
-'historywarning' => 'Advarsel: Siden du er i ferd med å slette har en historikk:',
+'historywarning' => 'Advarsel: Siden du er i ferd med å slette har en historikk med omtrent {{PLURAL:$1|én revisjon|$1 revisjoner}}:',
'confirmdeletetext' => 'Du holder på å slette en side sammen med historikken.
Bekreft at du virkelig vil slette denne siden, at du forstår konsekvensene og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].',
'actioncomplete' => 'Gjennomført',
+'actionfailed' => 'Handling mislyktes',
'deletedtext' => '«<nowiki>$1</nowiki>» er slettet.
Se $2 for en oversikt over de siste slettingene.',
'deletedarticle' => 'slettet «[[$1]]»',
@@ -1906,18 +2096,19 @@ Se $2 for en oversikt over de siste slettingene.',
'delete-warning-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.',
# Rollback
-'rollback' => 'Fjern redigeringer',
-'rollback_short' => 'Tilbakestill',
-'rollbacklink' => 'tilbakestill',
-'rollbackfailed' => 'Kunne ikke tilbakestille',
-'cantrollback' => 'Kan ikke fjerne redigering; den siste brukeren er den eneste forfatteren.',
-'alreadyrolled' => 'Kan ikke fjerne den siste redigeringen på [[$1]] av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); en annen har allerede redigert siden eller fjernet redigeringen.
+'rollback' => 'Fjern redigeringer',
+'rollback_short' => 'Tilbakestill',
+'rollbacklink' => 'tilbakestill',
+'rollbackfailed' => 'Kunne ikke tilbakestille',
+'cantrollback' => 'Kan ikke fjerne redigering; den siste brukeren er den eneste forfatteren.',
+'alreadyrolled' => 'Kan ikke fjerne den siste redigeringen på [[$1]] av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); en annen har allerede redigert siden eller fjernet redigeringen.
Den siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redigeringskommentaren var: «''$1''»", # only shown if there is an edit comment
-'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
-'sessionfailure' => "Det ser ut til å være et problem med innloggingen din, og den ble avbrutt av sikkerhetshensyn. Trykk ''Tilbake'' i nettleseren din, oppdater siden og prøv igjen.",
+'editcomment' => "Redigeringskommentaren var: «''$1''»",
+'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]',
+'revertpage-nouser' => 'Tilbakestilte endringer av (fjernet brukernavn) til siste versjon av [[User:$1|$1]]',
+'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
+'sessionfailure' => "Det ser ut til å være et problem med innloggingen din, og den ble avbrutt av sikkerhetshensyn. Trykk ''Tilbake'' i nettleseren din, oppdater siden og prøv igjen.",
# Protect
'protectlogpage' => 'Beskyttelseslogg',
@@ -1933,7 +2124,7 @@ Den siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]
'protectexpiry' => 'Utløper:',
'protect_expiry_invalid' => 'Utløpstiden er ugyldig.',
'protect_expiry_old' => 'Utløpstiden har allerede vært.',
-'protect-unchain' => 'Spesielle flyttingstillatelser',
+'protect-unchain-permissions' => 'Lås opp flere beskyttelsesinnstillinger',
'protect-text' => "Du kan se og endre beskyttelsesnivået for siden '''<nowiki>$1</nowiki>''' her.",
'protect-locked-blocked' => "Du kan ikke endre beskyttelsesnivåer mens du er blokkert. Dette er de nåværende innstillingene for siden '''$1''':",
'protect-locked-dblock' => "Beskyttelsesnivåer kan ikke endres under en aktiv databasebeskyttelse. Dette er de nåværende innstillingene for siden '''$1''':",
@@ -1961,7 +2152,7 @@ Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen
** Redigeringskrig
** Side med mange besøkende',
'protect-edit-reasonlist' => 'Rediger låsingsgrunner',
-'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite',
'restriction-type' => 'Tillatelse:',
'restriction-level' => 'Restriksjonsnivå:',
'minimum-size' => 'Minimumstørrelse',
@@ -1999,6 +2190,7 @@ Dersom en ny side ved samme navn har blitt oprettet etter slettingen, vil de gje
'undelete-nodiff' => 'Ingen tidligere revisjoner funnet.',
'undeletebtn' => 'Gjenopprett',
'undeletelink' => 'vis/gjenopprett',
+'undeleteviewlink' => 'vis',
'undeletereset' => 'Nullstill',
'undeleteinvert' => 'Inverter valg',
'undeletecomment' => 'Årsak:',
@@ -2036,19 +2228,24 @@ $1',
'contributions-title' => 'Brukerbidrag av $1',
'mycontris' => 'Egne bidrag',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Ingen endringer er funnet som passer disse kriteriene.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ingen endringer er funnet som passer disse kriteriene.',
'uctop' => '(siste)',
'month' => 'Fra måned (og tidligere):',
'year' => 'Fra år (og tidligere):',
-'sp-contributions-newbies' => 'Vis kun bidrag fra nye kontoer',
-'sp-contributions-newbies-sub' => 'For nybegynnere',
-'sp-contributions-newbies-title' => 'Bidrag av nye kontoer',
-'sp-contributions-blocklog' => 'blokkeringslogg',
-'sp-contributions-logs' => 'logger',
-'sp-contributions-search' => 'Søk etter bidrag',
-'sp-contributions-username' => 'IP-adresse eller brukernavn:',
-'sp-contributions-submit' => 'Søk',
+'sp-contributions-newbies' => 'Vis kun bidrag fra nye kontoer',
+'sp-contributions-newbies-sub' => 'For nybegynnere',
+'sp-contributions-newbies-title' => 'Bidrag av nye kontoer',
+'sp-contributions-blocklog' => 'blokkeringslogg',
+'sp-contributions-deleted' => 'slettede brukerbidrag',
+'sp-contributions-logs' => 'logger',
+'sp-contributions-talk' => 'diskusjon',
+'sp-contributions-userrights' => 'brukerrettighetskontroll',
+'sp-contributions-blocked-notice' => 'Denne brukeren er for tiden blokkert.
+Siste blokkeringsloggelement kan sees nedenfor.',
+'sp-contributions-search' => 'Søk etter bidrag',
+'sp-contributions-username' => 'IP-adresse eller brukernavn:',
+'sp-contributions-submit' => 'Søk',
# What links here
'whatlinkshere' => 'Lenker hit',
@@ -2071,6 +2268,7 @@ $1',
# Block/unblock
'blockip' => 'Blokker bruker',
+'blockip-title' => 'Blokker bruker',
'blockip-legend' => 'Blokker bruker',
'blockiptext' => 'Bruk skjemaet under for å blokkere en IP-adresses tilgang til å redigere artikler. Dette må kun gjøres for å forhindre hærverk, og i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjene]]. Fyll ut en spesiell begrunnelse under.',
'ipaddress' => 'IP-adresse',
@@ -2092,7 +2290,7 @@ $1',
'ipbenableautoblock' => 'Blokker forrige IP-adresse brukt av denne brukeren automatisk, samt alle IP-adresser brukeren forsøker å redigere med i framtiden',
'ipbsubmit' => 'Blokker denne brukeren',
'ipbother' => 'Annen tid',
-'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dager:3 days,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dager:3 days,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite',
'ipbotheroption' => 'annet',
'ipbotherreason' => 'Annen/utdypende grunn:',
'ipbhidename' => 'Skjul brukernavn fra endringer og lister',
@@ -2121,9 +2319,11 @@ Se [[Special:IPBlockList|blokkeringslisten]] for alle blokkeringer.',
'ipblocklist-sh-tempblocks' => '$1 midlertidige blokkeringer',
'ipblocklist-sh-addressblocks' => '$1 blokkeringer av individuelle IP-adresser',
'ipblocklist-submit' => 'Søk',
+'ipblocklist-localblock' => 'Lokal blokkering',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
'blocklistline' => '$1, $2 blokkerte $3 ($4)',
'infiniteblock' => 'uendelig',
-'expiringblock' => 'utgår $1',
+'expiringblock' => 'utgår den $1 kl $2',
'anononlyblock' => 'kun uregistrerte',
'noautoblockblock' => 'autoblokkering slått av',
'createaccountblock' => 'kontooppretting blokkert',
@@ -2137,7 +2337,10 @@ Se [[Special:IPBlockList|blokkeringslisten]] for alle blokkeringer.',
'contribslink' => 'bidrag',
'autoblocker' => 'Du ble automatisk blokkert fordi du deler IP-adresse med «[[User:$1|$1]]». Grunnen som ble gitt til at «$1» ble blokkert var: «$2».',
'blocklogpage' => 'Blokkeringslogg',
-'blocklog-fulllog' => 'Fullstendig blokkeringslogg',
+'blocklog-showlog' => 'Denne brukeren har blitt blokkert før.
+Blokkeringsloggen vises nedenfor.',
+'blocklog-showsuppresslog' => 'Denne brukeren har tidligere blitt blokkert og skjult.
+Skjulingsloggen vises nedenfor.',
'blocklogentry' => 'blokkerte [[$1]] med en varighet på $2 $3',
'reblock-logentry' => 'endret blokkeringsinnstillinger for [[$1]] med en varighet på $2 $3',
'blocklogtext' => 'Dette er en logg som viser hvilke brukere som har blitt blokkert og avblokkert. Automatisk blokkerte IP-adresser vises ikke. Se [[Special:IPBlockList|blokkeringslisten]] for en liste over IP-adresser som er blokkert akkurat nå.',
@@ -2156,9 +2359,11 @@ Se [[Special:IPBlockList|blokkeringslisten]] for alle blokkeringer.',
'ipb_already_blocked' => '«$1» er allerede blokkert',
'ipb-needreblock' => '== Allerede blokkert ==
$1 er blokkert fra før. Vil du endre innstillingene?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
'ipb_cant_unblock' => 'Feil: Blokk-ID $1 ikke funnet. Kan ha blitt avblokkert allerede.',
'ipb_blocked_as_range' => 'Feil: IP-en $1 er ikke blokkert direkte, og kan ikke avblokkeres. Den er imidlertid blokkert som del av blokkeringa av IP-rangen $2, som kan avblokkeres.',
'ip_range_invalid' => 'Ugyldig IP-rad.',
+'ip_range_toolarge' => 'Blokkering av IP-serier større enn /$1 er ikke tillatt.',
'blockme' => 'Blokker meg',
'proxyblocker' => 'Proxyblokker',
'proxyblocker-disabled' => 'Denne funksjonen er slått av.',
@@ -2167,6 +2372,7 @@ $1 er blokkert fra før. Vil du endre innstillingene?',
'sorbsreason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}.',
'sorbs_create_account_reason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}. Du kan ikke opprette en konto',
'cant-block-while-blocked' => 'Du kan ikke blokkere andre mens du selv er blokkert.',
+'cant-see-hidden-user' => 'Brukeren du prøver å blokkere har allerede blitt blokkert og skjult. Ettersom du ikke har rett til å skjule brukere (hideuser), kan du ikke se eller endre brukerens blokkering.',
# Developer tools
'lockdb' => 'Lås database',
@@ -2213,6 +2419,7 @@ vær sikker på at du forstår konsekvensene av dette før du fortsetter.",
I disse tilfellene er du nødt til å flytte eller flette siden manuelt, om ønskelig.",
'movearticle' => 'Flytt side:',
+'moveuserpage-warning' => "'''Advarsel:''' Du er i ferd med å flytte en brukerside. Merk at kun siden vil bli flyttet; brukernavnet vil ''ikke'' bli endret.",
'movenologin' => 'Ikke logget inn',
'movenologintext' => 'Du må være registrert bruker og være [[Special:UserLogin|logget på]] for å flytte en side.',
'movenotallowed' => 'Du har ikke tillatelse til å flytte sider.',
@@ -2223,7 +2430,7 @@ I disse tilfellene er du nødt til å flytte eller flette siden manuelt, om øns
'move-watch' => 'Overvåk kilde- og målsiden',
'movepagebtn' => 'Flytt side',
'pagemovedsub' => 'Flytting gjennomført',
-'movepage-moved' => "'''«$1» ble flyttet til «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» ble flyttet til «$2»'''",
'movepage-moved-redirect' => 'En omdirigering har blitt opprettet.',
'movepage-moved-noredirect' => 'Det ble ikke opprettet en omdirigering.',
'articleexists' => 'En side med det navnet finnes allerede eller det valgte navn er ugyldig.
@@ -2265,6 +2472,14 @@ Målsiden «[[:$1]]» finnes allerede. Vil du slette den så denne siden kan fly
'imageinvalidfilename' => 'Målnavnet er ugyldig',
'fix-double-redirects' => 'Oppdater omdirigeringer som fører til den gamle tittelen',
'move-leave-redirect' => 'La det være igjen en omdirigering',
+'protectedpagemovewarning' => "'''Advarsel:''' Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan flytte den.
+Det siste loggelementet er oppgitt under som referanse:",
+'semiprotectedpagemovewarning' => "'''Merk:''' Denne siden har blitt låst slik at kun registrerte brukere kan flytte den.
+Det siste loggelementet er oppgitt under som referanse:",
+'move-over-sharedrepo' => '== Filen finnes ==
+[[:$1]] finnes på en delt kilde. Dersom du flytter en fil til dette navnet, vil du overstyre den delte filen.',
+'file-exists-sharedrepo' => 'Det valgte filnavnet er allerede i bruk på en delt kilde.
+Vennligst velg et annet navn.',
# Export
'export' => 'Eksporter sider',
@@ -2287,15 +2502,21 @@ Dersom du bare vil ha nåværende versjon, kan du også bruke en lenke, for ekse
'export-pagelinks' => 'Inkluder lenkede sider med en dybde på:',
# Namespace 8 related
-'allmessages' => 'Systemmeldinger',
-'allmessagesname' => 'Navn',
-'allmessagesdefault' => 'Standardtekst',
-'allmessagescurrent' => 'Nåværende tekst',
-'allmessagestext' => 'Dette er en liste over tilgjengelige systemmeldinger i MediaWiki-navnerommet.
+'allmessages' => 'Systemmeldinger',
+'allmessagesname' => 'Navn',
+'allmessagesdefault' => 'Standardtekst',
+'allmessagescurrent' => 'Nåværende tekst',
+'allmessagestext' => 'Dette er en liste over tilgjengelige systemmeldinger i MediaWiki-navnerommet.
Besøk [http://translatewiki.net translatewiki.net] om du ønsker å bidra med oversettelse av MediaWiki.',
-'allmessagesnotsupportedDB' => "''{{ns:special}}:Allmessages'' kan ikke brukes fordi '''\$wgUseDatabaseMessages''' er slått av.",
-'allmessagesfilter' => 'Filter:',
-'allmessagesmodified' => 'Vis kun endrede',
+'allmessagesnotsupportedDB' => "''{{ns:special}}:Allmessages'' kan ikke brukes fordi '''\$wgUseDatabaseMessages''' er slått av.",
+'allmessages-filter-legend' => 'Filtrér',
+'allmessages-filter' => 'Filtrér etter tilpassningsgrad',
+'allmessages-filter-unmodified' => 'Uendret',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Endret',
+'allmessages-prefix' => 'Filtrer etter prefiks:',
+'allmessages-language' => 'Språk:',
+'allmessages-filter-submit' => 'Gå',
# Thumbnails
'thumbnail-more' => 'Forstørr',
@@ -2305,6 +2526,9 @@ Besøk [http://translatewiki.net translatewiki.net] om du ønsker å bidra med o
'djvu_no_xml' => 'Klarte ikke å hente XML for DjVu-fil',
'thumbnail_invalid_params' => 'Ugyldige miniatyrparametere, eller PNG-fil med flere piksler enn 12,5 millioner.',
'thumbnail_dest_directory' => 'Klarte ikke å opprette målmappe',
+'thumbnail_image-type' => 'Bildetypen støttes ikke',
+'thumbnail_gd-library' => 'Ufullstendig konfigurering av GD library: mangler funksjonen $1',
+'thumbnail_image-missing' => 'Fila ser ut til å mangle: $1',
# Special:Import
'import' => 'Importer sider',
@@ -2367,6 +2591,7 @@ Besøk [http://translatewiki.net translatewiki.net] om du ønsker å bidra med o
Du kan se på kildeteksten',
'tooltip-ca-history' => 'Tidligere revisjoner av denne siden',
'tooltip-ca-protect' => 'Beskytt denne siden',
+'tooltip-ca-unprotect' => 'Fjern sidebeskyttelsen',
'tooltip-ca-delete' => 'Slett denne siden',
'tooltip-ca-undelete' => 'Gjenopprett redigerenge som ble gjort på denne siden før den ble slettet.',
'tooltip-ca-move' => 'Flytt denne siden',
@@ -2377,6 +2602,7 @@ Du kan se på kildeteksten',
'tooltip-search-fulltext' => 'Søk etter sider som innholder denne teksten',
'tooltip-p-logo' => 'Hovedside',
'tooltip-n-mainpage' => 'Gå til hovedsiden',
+'tooltip-n-mainpage-description' => 'Gå til hovedsiden',
'tooltip-n-portal' => 'Om prosjektet, hva du kan gjøre, hvor du kan finne ting',
'tooltip-n-currentevents' => 'Finn bakgrunnsinformasjon om aktuelle hendelser',
'tooltip-n-recentchanges' => 'Liste over siste endringer på wikien.',
@@ -2443,10 +2669,12 @@ Du kan se på kildeteksten',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym bruker|Anonyme brukere}} av {{SITENAME}}',
'siteuser' => '{{SITENAME}}-bruker $1',
-'lastmodifiedatby' => 'Denne siden ble sist redigert $1 kl. $2 av $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}s anonyme bruker $1',
+'lastmodifiedatby' => 'Denne siden ble sist redigert $1 kl. $2 av $3.',
'othercontribs' => 'Basert på arbeid av $1.',
'others' => 'andre',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|bruker|brukere}} $1',
+'anonusers' => '{{SITENAME}}s {{PLURAL:$2|anonyme bruker|anonyme brukere}} $1',
'creditspage' => 'Sidekrediteringer',
'nocredits' => 'Ingen krediteringer er tilgjengelig for denne siden.',
@@ -2484,11 +2712,23 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
'mw_math_modern' => 'Anbefalt for moderne nettlesere',
'mw_math_mathml' => 'MathML hvis mulig',
+# Math errors
+'math_failure' => 'Feil i matematikken',
+'math_unknown_error' => 'ukjent feil',
+'math_unknown_function' => 'ukjent funksjon',
+'math_lexing_error' => 'lexerfeil',
+'math_syntax_error' => 'syntaksfeil',
+'math_image_error' => 'PNG-konversjon mislyktes',
+'math_bad_tmpdir' => 'Kan ikke skrive til eller opprette midlertidig mappe',
+'math_bad_output' => 'Kan ikke skrive til eller opprette resultatmappe',
+'math_notexvc' => 'Mangler kjørbar texvc;
+se math/README for oppsett.',
+
# Patrolling
'markaspatrolleddiff' => 'Godkjenn endringen',
'markaspatrolledtext' => 'Godkjenn denne siden',
'markedaspatrolled' => 'Merket som godkjent',
-'markedaspatrolledtext' => 'Endringen er merket som godkjent.',
+'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt markert som patruljert.',
'rcpatroldisabled' => 'Siste endringer-patruljering er slått av',
'rcpatroldisabledtext' => 'Siste endringer-patruljeringsfunksjonen er slått av.',
'markedaspatrollederror' => 'Kan ikke merke som godkjent',
@@ -2518,13 +2758,10 @@ $1',
'previousdiff' => '← Eldre endring',
'nextdiff' => 'Nyere endring →',
-# Visual comparison
-'visual-comparison' => 'Visuell sammenligning',
-
# Media information
'mediawarning' => "'''Advarsel''': Denne fila kan inneholde farlig kode.
Ved å åpne den kan systemet ditt kompromitteres.",
-'imagemaxsize' => 'Begrens bilder på filbeskrivelsessider til:',
+'imagemaxsize' => "Bildestørrelsesgrense:<br />''(for filbeskrivelsessider)''",
'thumbsize' => 'Miniatyrbildestørrelse:',
'widthheightpage' => '$1×$2, {{PLURAL:$3|én side|$3 sider}}',
'file-info' => '(filstørrelse: $1, MIME-type: $2)',
@@ -2533,6 +2770,8 @@ Ved å åpne den kan systemet ditt kompromitteres.",
'svg-long-desc' => '(SVG-fil, standardoppløsning $1 × $2 piksler, filstørrelse: $3)',
'show-big-image' => 'Full oppløsning',
'show-big-image-thumb' => '<small>Størrelse på denne forhåndsvisningen: $1 × $2 piksler</small>',
+'file-info-gif-looped' => 'gjentas',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ramme|rammer}}',
# Special:NewFiles
'newimages' => 'Galleri over nye filer',
@@ -2570,7 +2809,7 @@ Andre vil skjules som standard.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Bredde',
@@ -2697,16 +2936,16 @@ Andre vil skjules som standard.
'exif-unknowndate' => 'Ukjent dato',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Snudd horisontalt', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotert 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Snudd vertikalt', # 0th row: bottom; 0th column: left
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Snudd horisontalt',
+'exif-orientation-3' => 'Rotert 180°',
+'exif-orientation-4' => 'Snudd vertikalt',
'exif-orientation-5' => 'Rotated 90° CCW and flipped vertically
-Rotert 90° mot klokka og vridd vertikalt', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotert 90° med klokka', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotert 90° med klokka og vridd vertikalt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotert 90° mot klokka', # 0th row: left; 0th column: bottom
+Rotert 90° mot klokka og vridd vertikalt',
+'exif-orientation-6' => 'Rotert 90° med klokka',
+'exif-orientation-7' => 'Rotert 90° med klokka og vridd vertikalt',
+'exif-orientation-8' => 'Rotert 90° mot klokka',
'exif-planarconfiguration-1' => 'chunkformat',
'exif-planarconfiguration-2' => 'planærformat',
@@ -2828,7 +3067,7 @@ Rotert 90° mot klokka og vridd vertikalt', # 0th row: left; 0th column: top
'exif-gpsmeasuremode-2' => 'todimensjonell måling',
'exif-gpsmeasuremode-3' => 'tredimensjonell måling',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer per time',
'exif-gpsspeed-m' => 'Miles per time',
'exif-gpsspeed-n' => 'Knop',
@@ -2847,6 +3086,7 @@ Rotert 90° mot klokka og vridd vertikalt', # 0th row: left; 0th column: top
'watchlistall2' => 'alle',
'namespacesall' => 'alle',
'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bekreft e-postadresse',
@@ -2998,7 +3238,7 @@ Du kan også [[Special:Watchlist/edit|bruke standardverktøyet]].',
'duplicate-defaultsort' => 'Advarsel: Standardsorteringen «$2» tar over for den tidligere sorteringen «$1».',
# Special:Version
-'version' => 'Versjon', # Not used as normal message but as header for the special page itself
+'version' => 'Versjon',
'version-extensions' => 'Installerte utvidelser',
'version-specialpages' => 'Spesialsider',
'version-parserhooks' => 'Parsertillegg',
@@ -3012,7 +3252,7 @@ Du kan også [[Special:Watchlist/edit|bruke standardverktøyet]].',
'version-skin-extension-functions' => 'Skalltilleggsfunksjoner',
'version-hook-name' => 'Navn',
'version-hook-subscribedby' => 'Brukes av',
-'version-version' => 'versjon',
+'version-version' => '(versjon $1)',
'version-license' => 'Lisens',
'version-software' => 'Installert programvare',
'version-software-product' => 'Produkt',
@@ -3091,4 +3331,15 @@ Skriv inn filnavn uten «{{ns:file}}:»-prefikset.',
'dberr-outofdate' => 'Merk at deres indeks over våre sider kan være utdatert.',
'dberr-cachederror' => 'Følgende er en mellomlagret kopi av den etterspurte siden, og kan være foreldet.',
+# HTML forms
+'htmlform-invalid-input' => 'Det er problemer med noen av inndatene dine',
+'htmlform-select-badoption' => 'Verdien du valgte er ikke et gyldig alternativ.',
+'htmlform-int-invalid' => 'Verdien du valgte er ikke et heltall.',
+'htmlform-float-invalid' => 'Verdien du valgte er ikke et tall.',
+'htmlform-int-toolow' => 'Verdien du valgte er mindre enn minimum på $1',
+'htmlform-int-toohigh' => 'Verdien du valgte er over det mulige $1',
+'htmlform-submit' => 'Lagre',
+'htmlform-reset' => 'Omgjør endringer',
+'htmlform-selectorother-other' => 'Andre',
+
);
diff --git a/languages/messages/MessagesNov.php b/languages/messages/MessagesNov.php
index bd3cc137..831440c1 100644
--- a/languages/messages/MessagesNov.php
+++ b/languages/messages/MessagesNov.php
@@ -72,21 +72,23 @@ $messages = array(
'category_header' => 'Artikles in kategorie "$1"',
'subcategories' => 'Subkategories',
-'about' => 'Pri',
-'article' => 'Pagine de kontenaje',
-'newwindow' => '(aperta in novi fenestre)',
-'cancel' => 'Nihilisa',
+'about' => 'Pri',
+'article' => 'Pagine de kontenaje',
+'newwindow' => '(aperta in novi fenestre)',
+'cancel' => 'Nihilisa',
+'moredotdotdot' => 'Plu...',
+'mypage' => 'Men pagine',
+'mytalk' => 'Men parla-pagine',
+'anontalk' => 'Parlo por disi IP',
+'navigation' => 'Navigatione',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Trova',
'qbedit' => 'Modifika',
'qbpageoptions' => 'Disi pagine',
'qbmyoptions' => 'Men pagines',
'qbspecialpages' => 'Spesial pagines',
-'moredotdotdot' => 'Plu...',
-'mypage' => 'Men pagine',
-'mytalk' => 'Men parla-pagine',
-'anontalk' => 'Parlo por disi IP',
-'navigation' => 'Navigatione',
-'and' => '&#32;e',
'returnto' => 'Rivada a $1.',
'tagline' => 'Fro {{SITENAME}}',
@@ -120,7 +122,7 @@ $messages = array(
'templatepage' => 'Vida shablonal pagine',
'categorypage' => 'Regarda kategorial pagine',
'otherlanguages' => 'Altri lingues',
-'lastmodifiedat' => 'Disi pagine blid lastim modifika: $2 ye $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Disi pagine blid lastim modifika: $2 ye $1.',
'jumptonavigation' => 'navigatione',
'jumptosearch' => 'sercha',
@@ -163,11 +165,9 @@ $messages = array(
'badtitletext' => 'Li pregati pagine esed non-valid, vakui, o non-korektim linkat inter-lingue o inter-wiki title. Lu povud kontena un o plusi karakteres kel on non pove usa in titles.',
# Login and logout pages
-'logouttitle' => 'Useren eksignato',
'logouttext' => "'''Vu es nun eksignatat.'''
Vu pove kontinua usa {{SITENAME}} anonimim, o vu pove riensignata kom li sami o altri usere.",
-'loginpagetitle' => 'Useren ensignato',
'yourname' => 'Usere-nome:',
'yourpassword' => 'Pasa-vorde:',
'remembermypassword' => 'Memora men pasa-vorde (kun kuke)',
@@ -228,9 +228,9 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
'searchresulttext' => 'Por plu multi informatione pri sercho {{SITENAME}}, vida [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Vu serchad '''[[:$1]]'''",
'searchsubtitleinvalid' => "Vu serchad '''$1'''",
-'prevn' => 'lasti $1',
-'nextn' => 'sekuenti $1',
-'viewprevnext' => 'Vida ($1) ($2) ($3).',
+'prevn' => 'lasti {{PLURAL:$1|$1}}',
+'nextn' => 'sekuenti {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vida ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Kontenaje',
'search-result-size' => '$1 ({{PLURAL:$2|1 vorde|$2 vordes}})',
'showingresults' => "Montrant subu {{PLURAL:$1|'''1''' resulte|'''$1''' resultes}} amaxim komensant fro #'''$2'''.",
@@ -261,7 +261,9 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
'newpageletter' => 'N',
# Recent changes linked
-'recentchangeslinked' => 'Afini chanjos',
+'recentchangeslinked' => 'Afini chanjos',
+'recentchangeslinked-feed' => 'Afini chanjos',
+'recentchangeslinked-toolbox' => 'Afini chanjos',
# Upload
'upload' => 'Enporta',
@@ -286,7 +288,7 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
'brokenredirects' => 'Rupteti ri-adresos',
'brokenredirectstext' => 'Li sekuenti ri-adresos linka a non-existanti pagines:',
-'brokenredirects-edit' => '(editja)',
+'brokenredirects-edit' => 'editja',
'fewestrevisions' => 'Artikles kun minim multi revisiones',
@@ -365,7 +367,7 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'deletecomment' => 'Resone:',
# Rollback
-'revertpage' => 'Riverted modifikos da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]); restaurad lasti versione da [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'Riverted modifikos da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]); restaurad lasti versione da [[User:$1|$1]]',
# Protect
'prot_1movedto2' => '[[$1]] movat a [[$2]]',
@@ -380,6 +382,7 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'mycontris' => 'Men kontributiones',
'sp-contributions-newbies' => 'Montra kontributiones nur de novi useres',
+'sp-contributions-talk' => 'Diskusione',
'sp-contributions-search' => 'Sercha kontributiones',
'sp-contributions-submit' => 'Sercha',
@@ -406,12 +409,11 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'delete_and_move_reason' => 'Ekartat por fa spatie por movo',
# Namespace 8 related
-'allmessages' => 'Sisteme mesajes',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Non-spesifikati texte',
-'allmessagescurrent' => 'Nuni texte',
-'allmessagestext' => 'Dise es liste de sistemen mesajes obtenabli in li MediaWiki nomal spatie.',
-'allmessagesmodified' => 'Montra nur modifikates',
+'allmessages' => 'Sisteme mesajes',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Non-spesifikati texte',
+'allmessagescurrent' => 'Nuni texte',
+'allmessagestext' => 'Dise es liste de sistemen mesajes obtenabli in li MediaWiki nomal spatie.',
# Tooltip help for the actions
'tooltip-pt-mytalk' => 'Vun parla-pagine',
@@ -441,7 +443,7 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'autosumm-new' => 'Novi pagine: $1',
# Special:Version
-'version' => 'Versione', # Not used as normal message but as header for the special page itself
+'version' => 'Versione',
'version-specialpages' => 'Spesial pagines',
'version-software-version' => 'Versione',
diff --git a/languages/messages/MessagesNso.php b/languages/messages/MessagesNso.php
index a0c9e313..ba9c701f 100644
--- a/languages/messages/MessagesNso.php
+++ b/languages/messages/MessagesNso.php
@@ -31,7 +31,7 @@ $namespaceNames = array(
);
$magicWords = array(
- 'currentmonth' => array( '1', 'KGWEDI_BJALE', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'KGWEDI_BJALE', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'LEINA_KGWEDI_BJALE', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'LEHONO_LETSATSI', 'CURRENTDAY' ),
'currentday2' => array( '1', 'LEHONO_LETSATSI2', 'CURRENTDAY2' ),
@@ -136,21 +136,23 @@ $messages = array(
'category-empty' => "''Sehlopha se, ga se na matlakala goba difaele.''",
'listingcontinuesabbrev' => 'tšweletša',
-'about' => 'Mabapi',
-'article' => 'Letlakala la mateng',
-'newwindow' => '(e bula lefastere le lempsha)',
-'cancel' => 'Khansela',
+'about' => 'Mabapi',
+'article' => 'Letlakala la mateng',
+'newwindow' => '(e bula lefastere le lempsha)',
+'cancel' => 'Khansela',
+'moredotdotdot' => 'Tše dingwe...',
+'mypage' => 'Letlakala la ka',
+'mytalk' => 'Dipolelo tša ka',
+'anontalk' => 'Poledišano ya IP ye',
+'navigation' => 'Tšwelotšo',
+'and' => '&#32;le',
+
+# Cologne Blue skin
'qbfind' => 'Humana',
'qbedit' => 'Fetola',
'qbpageoptions' => 'Letlakala le',
'qbmyoptions' => 'Matlakala a ka',
'qbspecialpages' => 'Matlakala a itšego',
-'moredotdotdot' => 'Tše dingwe...',
-'mypage' => 'Letlakala la ka',
-'mytalk' => 'Dipolelo tša ka',
-'anontalk' => 'Poledišano ya IP ye',
-'navigation' => 'Tšwelotšo',
-'and' => '&#32;le',
'errorpagetitle' => 'Phošo',
'returnto' => 'Boela go $1.',
@@ -198,7 +200,7 @@ $messages = array(
'otherlanguages' => 'Ka dipolelo tše dingwe',
'redirectedfrom' => "(''Redirect'' go tšwa $1)",
'redirectpagesub' => "''Redirect'' letlakala",
-'lastmodifiedat' => 'Letlakala le fetotšwe la mafelelo ka $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Letlakala le fetotšwe la mafelelo ka $2, $1.',
'viewcount' => 'Letlakala le le butšwe ga {{PLURAL:$1|tee|$1}}.',
'protectedpage' => 'Letlakala la go lotiwa',
'jumpto' => 'Taboga go:',
@@ -209,7 +211,6 @@ $messages = array(
'aboutsite' => 'Mabapi le {{SITENAME}}',
'aboutpage' => 'Project:Mabapi',
'copyright' => 'Mateng a hwetšagala tlase ga $1.',
-'copyrightpagename' => '{{SITENAME}} tumello ya bangwadi',
'copyrightpage' => '{{ns:project}}:Tomello ya Mongwadi',
'currentevents' => 'Ditirago tša bjale',
'currentevents-url' => 'Project:Ditiragalo tša bjale',
@@ -269,8 +270,6 @@ $messages = array(
# General errors
'error' => 'Phošo',
'databaseerror' => 'Phošo ya Database',
-'noconnect' => "Re maswabi! Wiki e nale mathata a sethekniki, ka goo gare kgone go boledišana le ''database''. <br />
-$1",
'readonly' => "''Database'' e notletšwe",
'enterlockreason' => 'Fana la lebaka la go notlela, o fana le tekanyetšo yage senotlolo se tlogo tlošwa',
'internalerror' => 'Phošo ya ka gare',
@@ -310,16 +309,6 @@ Tšhupaleloko (''account'') ya gago e tlhodilwe. O seke wa lebala go fetola [[Sp
'gotaccountlink' => 'Tsena',
'createaccountmail' => 'ka e-mail',
'badretype' => 'Ditlhaka-tša-siphiri tše o di šomišitšego ga di swane.',
-'username' => 'Mošomiši:',
-'uid' => 'Nomoro ya mošomiši:',
-'prefs-memberingroups' => 'Leloko la {{PLURAL:$1|ya sehlopha|ya dihlopha}}:',
-'yourrealname' => 'Leina la mmakgonthe:',
-'yourlanguage' => 'Polelo:',
-'yournick' => 'Tshaeno:',
-'badsiglength' => 'Leina la boreelo le letelele kudu.
-Le swanela goba fase ga $1 {{PLURAL:$1|ya tlhaka|ya ditlhaka}}',
-'prefs-help-realname' => 'Leina la nnete gale gapeletšwe, efela ge o kgetha go fana ka lona, le tla šomišwa go bontšha diabe mešomong ya gago.',
-'prefs-help-email-required' => 'E-mail atrese eya nyakega.',
'noname' => 'Gawa fana ka leina la mošomiši la go loka.',
'loginsuccesstitle' => 'O tsene ka katlego',
'loginsuccess' => "'''Bjale o tsene go {{SITENAME}} bjalo ka \"\$1\".'''",
@@ -391,18 +380,18 @@ Ga wa dumelwa go tlhoma tše dingwe.',
'hr_tip' => 'Mothalo wago ya faase/papamela (šomiša ka hloko)',
# Edit pages
-'summary' => 'Kakaretšo:',
-'subject' => 'Tabataba/Hlogo ya taba:',
-'minoredit' => 'Ye ke phetogo ye nnyenyane',
-'watchthis' => 'Tlhapetša letlakala le',
-'savearticle' => 'Boloka letlakala',
-'preview' => 'Lebelela',
-'showpreview' => 'Laetša sebopego sa letlaka',
-'showdiff' => 'Laetša diphetogo',
-'anoneditwarning' => "'''Temošo''' Gawa ''tsena'', IP ya gago e tla šumišwa go histori ya diphetogo tša letlakala",
-'summary-preview' => 'Lebelela kakaretšo:',
-'blockedtitle' => 'Mošomiši o thibilwe',
-'blockedtext' => "'''Leina la gago la mošomiši goba IP atrese e thibilwe.'''
+'summary' => 'Kakaretšo:',
+'subject' => 'Tabataba/Hlogo ya taba:',
+'minoredit' => 'Ye ke phetogo ye nnyenyane',
+'watchthis' => 'Tlhapetša letlakala le',
+'savearticle' => 'Boloka letlakala',
+'preview' => 'Lebelela',
+'showpreview' => 'Laetša sebopego sa letlaka',
+'showdiff' => 'Laetša diphetogo',
+'anoneditwarning' => "'''Temošo''' Gawa ''tsena'', IP ya gago e tla šumišwa go histori ya diphetogo tša letlakala",
+'summary-preview' => 'Lebelela kakaretšo:',
+'blockedtitle' => 'Mošomiši o thibilwe',
+'blockedtext' => "'''Leina la gago la mošomiši goba IP atrese e thibilwe.'''
O thibilwe ke $1. Makaba a go thiba ke ''$2''.
@@ -414,51 +403,50 @@ O ka leka go boledišana le $1 goba [[{{MediaWiki:Grouppage-sysop}}|molaudi]] ka
O ka se kgone go šumiša thulusu ya 'romela mošomiši molaetša' ka ntle gage o loketše e-mail ya gago go
[[Special:Preferences|dikgatlhegelo]] gape ge o sa thibelwa go e šomiša.
IP atrese ya gago ke $3, ge ID ya go thiba ele #$5. Ka kgopelo šumiša ID le IP go dipoledišano ka moka tšeo dilego mabapi le go go thiba.",
-'blockednoreason' => 'gago lebaka leo le filwego',
-'blockedoriginalsource' => "Mothopo wa '''$1''' oa botšhwa tlase:",
-'whitelistedittitle' => 'O swanela ke go tsena go fetola',
-'whitelistedittext' => 'O swanela ke go $1 go fetola matlakala.',
-'confirmedittitle' => 'E-mail e swanetše ke go tiišetšwa pele ge o ka fetola',
-'confirmedittext' => 'E-mail e swanetše ke go tiišetšwa pele ge o ka fetola matlakala. Ka kgopelo, tiišetša e-mail atrese ya gago go [[Special:Preferences|dikgatlhego tša mošomiši]].',
-'nosuchsectiontitle' => 'Gago sekgao seo',
-'nosuchsectiontext' => 'O lekile go fetola sekgao seo se sego gona. Ka ge se sekgao sa $1, gago mowe re ka bolokago diphetogo tša gago.',
-'loginreqtitle' => 'Go tsena goa hlokega',
-'loginreqlink' => 'tsena',
-'loginreqpagetext' => 'O swanela ke go $1 go nyakorela matlakala a mangwe.',
-'accmailtitle' => 'Ditlhaka tša siphiri di rometšwe.',
-'accmailtext' => 'Ditlhaka-tša-siphiri tša "$1" di rometšwe go $2.',
-'newarticle' => '(mpsha)',
-'newarticletext' => "O latetše hlomaganyo go letlakala leo le sego gona ka se sebaka.
+'blockednoreason' => 'gago lebaka leo le filwego',
+'blockedoriginalsource' => "Mothopo wa '''$1''' oa botšhwa tlase:",
+'whitelistedittitle' => 'O swanela ke go tsena go fetola',
+'whitelistedittext' => 'O swanela ke go $1 go fetola matlakala.',
+'confirmedittext' => 'E-mail e swanetše ke go tiišetšwa pele ge o ka fetola matlakala. Ka kgopelo, tiišetša e-mail atrese ya gago go [[Special:Preferences|dikgatlhego tša mošomiši]].',
+'nosuchsectiontitle' => 'Gago sekgao seo',
+'nosuchsectiontext' => 'O lekile go fetola sekgao seo se sego gona. Ka ge se sekgao sa $1, gago mowe re ka bolokago diphetogo tša gago.',
+'loginreqtitle' => 'Go tsena goa hlokega',
+'loginreqlink' => 'tsena',
+'loginreqpagetext' => 'O swanela ke go $1 go nyakorela matlakala a mangwe.',
+'accmailtitle' => 'Ditlhaka tša siphiri di rometšwe.',
+'accmailtext' => 'Ditlhaka-tša-siphiri tša "$1" di rometšwe go $2.',
+'newarticle' => '(mpsha)',
+'newarticletext' => "O latetše hlomaganyo go letlakala leo le sego gona ka se sebaka.
Go tlhola letlakala, thoma go ngwalo lepokising le letelago
(lebelela [[{{MediaWiki:Helppage}}|letlakala la thušo]] go hwetša šedi).
Ga eba o le fa ka phošo, o ka boela morago ka go šumiša konopo ya '''back''' go ''browser'' ya gago.",
-'noarticletext' => 'Ga gona ditlhaka letlakaleng le, oka [[Special:Search/{{PAGENAME}}|fetleka liena la letlakala]] matlakaleng a mangwe goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le].',
-'note' => "'''Ela hloko:'''",
-'previewnote' => "'''Ye ke Taetšo ya sebopego sa letlakala fela; diphetogo ga di ya bolokwa!'''",
-'editing' => 'O fetola $1',
-'editingsection' => 'Phetolo ya $1 (sekgoba)',
-'editingcomment' => 'O fetola $1 (sekgao se sempsha)',
-'editconflict' => 'Tholano ya diphetogo: $1',
-'yourtext' => 'Mongwalo wa gago',
-'storedversion' => 'Version yeo e bolokilwego',
-'yourdiff' => 'Diphapang',
-'copyrightwarning' => "Diabe kamoka go {{SITENAME}} di akanywa go ngwadiwa tlase ga $2 (lebelela $1 go hwetša taba ka bophara). Ge o sa nyake gore mengwalo ya gago e fetolwe ntle le kgaugelo goba e phatlalatšwe ntle le tumello ya gago, o seke wa fana ka mengwalo mo.<br />
+'noarticletext' => 'Ga gona ditlhaka letlakaleng le, oka [[Special:Search/{{PAGENAME}}|fetleka liena la letlakala]] matlakaleng a mangwe goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le].',
+'note' => "'''Ela hloko:'''",
+'previewnote' => "'''Ye ke Taetšo ya sebopego sa letlakala fela; diphetogo ga di ya bolokwa!'''",
+'editing' => 'O fetola $1',
+'editingsection' => 'Phetolo ya $1 (sekgoba)',
+'editingcomment' => 'O fetola $1 (sekgao se sempsha)',
+'editconflict' => 'Tholano ya diphetogo: $1',
+'yourtext' => 'Mongwalo wa gago',
+'storedversion' => 'Version yeo e bolokilwego',
+'yourdiff' => 'Diphapang',
+'copyrightwarning' => "Diabe kamoka go {{SITENAME}} di akanywa go ngwadiwa tlase ga $2 (lebelela $1 go hwetša taba ka bophara). Ge o sa nyake gore mengwalo ya gago e fetolwe ntle le kgaugelo goba e phatlalatšwe ntle le tumello ya gago, o seke wa fana ka mengwalo mo.<br />
Gape o re holofetša gore mengwalo ye e ngwadile ke wena, goba o e kopiša mothapong wa pepeneneng goba ke mahala.
'''O SE TSENYE MEŠOMO YA BATHO BA BANGWE NTLE LE TUMELLO YA BONA!'''",
-'longpagewarning' => "'''TEMOŠO: Letlakala le le $1 kilobytes ka botelele;
+'longpagewarning' => "'''TEMOŠO: Letlakala le le $1 kilobytes ka botelele;
di-''browser'' tše dingwe dika ba le bothata go fetola matlakala a golena goba gofeta 32 kb.
Ka kgopela akanya ka go roba letlakala le goba le dikgaoe tše nnyenyane.'''",
-'templatesused' => "''Templates'' tšeo di šomišitšwego letlakaleng le:",
-'templatesusedpreview' => "''Templates'' tšeo di šomišitšwego go taetšo ya sebopego sa letlakala:",
-'template-protected' => '(e lotilwe)',
-'template-semiprotected' => '(lota-ka-seripa)',
-'nocreatetext' => '{{SITENAME}} e nale dithibelo tše itšego go tlholeng ga matlakala a maphsa.
+'templatesused' => "''Templates'' tšeo di šomišitšwego letlakaleng le:",
+'templatesusedpreview' => "''Templates'' tšeo di šomišitšwego go taetšo ya sebopego sa letlakala:",
+'template-protected' => '(e lotilwe)',
+'template-semiprotected' => '(lota-ka-seripa)',
+'nocreatetext' => '{{SITENAME}} e nale dithibelo tše itšego go tlholeng ga matlakala a maphsa.
O ka boela morago wa felola matlakala a lego gona, goba o [[Special:UserLogin|tsene]].',
-'nocreate-loggedin' => 'Ga ona tumello ya go tlhola matlakala a mampsha.',
-'permissionserrors' => 'Phošo ya ditumello',
-'permissionserrorstext' => 'Gawa dumelwa go pheta seo,ka {{PLURAL:$1|lebaka|mabaka}} a latelago:',
-'recreate-deleted-warn' => "'''Temošo: O leka go tlhoma letlakala le gape, ka ge le ile la phumulwa.'''
+'nocreate-loggedin' => 'Ga ona tumello ya go tlhola matlakala a mampsha.',
+'permissionserrors' => 'Phošo ya ditumello',
+'permissionserrorstext' => 'Gawa dumelwa go pheta seo,ka {{PLURAL:$1|lebaka|mabaka}} a latelago:',
+'recreate-moveddeleted-warn' => "'''Temošo: O leka go tlhoma letlakala le gape, ka ge le ile la phumulwa.'''
Sekaseka gore letlakala le lephumutšwe ka mabaka afe pele o leka go le fetola.
Sedi ya phumulo ya letlakala e re:",
@@ -467,7 +455,7 @@ Sedi ya phumulo ya letlakala e re:",
'viewpagelogs' => "Nyakoretša di-''log'' tša letlakala le",
'currentrev' => 'Poeletšo tša bjale',
'revisionasof' => 'Thumeletšo go tloga ka $1',
-'revision-info' => 'Poeletšo go tloga $1 ka $2', # Additionally available: $3: revision id
+'revision-info' => 'Poeletšo go tloga $1 ka $2',
'previousrevision' => '←Poeletšo tša kgalenyana',
'nextrevision' => 'Peletšo tše dimphsanyana→',
'currentrevisionlink' => 'Poeletšo ya bjale',
@@ -479,7 +467,6 @@ Sedi ya phumulo ya letlakala e re:",
'histlegend' => "Tlhaolo ya diphapano: swaya lepokisi la phetogo go bapetša ke moka o thwanye ''enter'' tlase-tlase<br />
Nane: (bjale) = phapang le diphetogo tša bjale,
(mafelelo) = phapang le diphetogo tša pele, M = diphetogo tše nyenyane.",
-'deletedrev' => '[phumutšwe]',
'histfirst' => 'Pelepele',
'histlast' => 'Ntshwantshwa',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -487,7 +474,7 @@ Nane: (bjale) = phapang le diphetogo tša bjale,
# Revision feed
'history-feed-title' => 'Histori ya poeletšo',
'history-feed-description' => 'History ya poeletšo ya letlakala le go wiki',
-'history-feed-item-nocomment' => '$1 go $2', # user at time
+'history-feed-item-nocomment' => '$1 go $2',
'history-feed-empty' => 'Letlakala lewe ga le gona.
Mohlomongwe le phumutšwe go wiki, goba le fetotšwe leina.
Leka [[Special:Search|go fetleka wikii]] go humana matlakala a mapsha.',
@@ -512,33 +499,39 @@ Leka [[Special:Search|go fetleka wikii]] go humana matlakala a mapsha.',
# Search results
'searchresults' => 'Sephetho sa go fetleka',
'searchsubtitleinvalid' => "O fetlekile o nyaka '''$1'''",
-'noexactmatch' => "'''Ga go letlaka leo le bitšwago \"\$1\".''' O ka tlhola [[:\$1|letlakala le]].",
-'noexactmatch-nocreate' => "'''Gago matlakala a thaetlele ya \"\$1\".'''",
-'prevn' => 'gofeta $1',
-'nextn' => 'latela $1',
-'viewprevnext' => 'Lebelela ($1) ($2) ($3)',
+'prevn' => 'gofeta {{PLURAL:$1|$1}}',
+'nextn' => 'latela {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Lebelela ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Mateng',
'searchall' => 'tšohle',
'powersearch' => 'Fetleka ka tlhoko',
# Preferences page
-'preferences' => 'Dikgatlhegelo',
-'mypreferences' => 'Dikgatlhegelo tša ka',
-'prefs-edits' => 'Palo ya diphetogo:',
-'prefsnologin' => 'Ga wa tsena',
-'changepassword' => 'Fetola ditlhaka-tša-siphiri',
-'skin-preview' => 'Ponopele',
-'datetime' => 'Tšatšikgwedi le nako',
-'math_unknown_error' => 'Phošo ya gose tsebege',
-'math_syntax_error' => 'phošo ya popafoko',
-'prefs-rc' => 'Diphetogo tša bjale',
-'prefs-watchlist' => 'Lenano la tlhapetšo',
-'saveprefs' => 'Boloka',
-'textboxsize' => 'Fetola',
-'searchresultshead' => 'Fetleka',
-'savedprefs' => 'Dikgatlhegelo tša gago di bolokilwe.',
-'allowemail' => 'Dumella melaetša ya e-mail go tšwa go bašomiši ba bangwe',
-'files' => 'Difaele',
+'preferences' => 'Dikgatlhegelo',
+'mypreferences' => 'Dikgatlhegelo tša ka',
+'prefs-edits' => 'Palo ya diphetogo:',
+'prefsnologin' => 'Ga wa tsena',
+'changepassword' => 'Fetola ditlhaka-tša-siphiri',
+'skin-preview' => 'Ponopele',
+'prefs-datetime' => 'Tšatšikgwedi le nako',
+'prefs-rc' => 'Diphetogo tša bjale',
+'prefs-watchlist' => 'Lenano la tlhapetšo',
+'saveprefs' => 'Boloka',
+'prefs-editing' => 'Fetola',
+'searchresultshead' => 'Fetleka',
+'savedprefs' => 'Dikgatlhegelo tša gago di bolokilwe.',
+'allowemail' => 'Dumella melaetša ya e-mail go tšwa go bašomiši ba bangwe',
+'prefs-files' => 'Difaele',
+'username' => 'Mošomiši:',
+'uid' => 'Nomoro ya mošomiši:',
+'prefs-memberingroups' => 'Leloko la {{PLURAL:$1|ya sehlopha|ya dihlopha}}:',
+'yourrealname' => 'Leina la mmakgonthe:',
+'yourlanguage' => 'Polelo:',
+'yournick' => 'Tshaeno:',
+'badsiglength' => 'Leina la boreelo le letelele kudu.
+Le swanela goba fase ga $1 {{PLURAL:$1|ya tlhaka|ya ditlhaka}}',
+'prefs-help-realname' => 'Leina la nnete gale gapeletšwe, efela ge o kgetha go fana ka lona, le tla šomišwa go bontšha diabe mešomong ya gago.',
+'prefs-help-email-required' => 'E-mail atrese eya nyakega.',
# User rights
'editusergroup' => 'Fetola sehlopha sa bašomiši',
@@ -588,6 +581,8 @@ Leka [[Special:Search|go fetleka wikii]] go humana matlakala a mapsha.',
# Recent changes linked
'recentchangeslinked' => 'Diphetogo tša go tswalana',
+'recentchangeslinked-feed' => 'Diphetogo tša go tswalana',
+'recentchangeslinked-toolbox' => 'Diphetogo tša go tswalana',
'recentchangeslinked-title' => 'Diphetogo tša go tswalana le "$1"',
'recentchangeslinked-noresult' => 'Gago na diphetogo go matlakala a hlomaganya ka sebaka/sekga seo o se kgethilego.',
'recentchangeslinked-summary' => "Letlakala le le laetša diphetogo tša bjale matlakaleng a go hlomaganya.
@@ -616,6 +611,7 @@ Matlakala ago ba [[Special:Watchlist|lenanong la gago la matlakala ditlhapetšo]
'listfiles_size' => 'Bogolo',
# File description page
+'file-anchor-link' => 'Faele',
'filehist' => 'Histori ya faele',
'filehist-help' => 'Pinyeletša go letšatšikgwedi/nako go bona faela ka tsela yeo ebego e le ka gona nakong yeo.',
'filehist-deleteall' => 'phumula ka moka',
@@ -629,9 +625,7 @@ Matlakala ago ba [[Special:Watchlist|lenanong la gago la matlakala ditlhapetšo]
'imagelinks' => 'Hlamaganyago',
'linkstoimage' => '{{PLURAL:$1|Letlakala le ke |$1 ya matlakala a}} latelago a hlomaganya go faele ye:',
'nolinkstoimage' => 'Gago matlakala a hlomaganyago faeleng ye.',
-'sharedupload' => 'Faele ye e hlakanetšwe ka fao e kabe e šumišwa ke ditirotherwa tše dingwe.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Ga gona faele ya leina le, efela o ka $1.',
-'noimage-linktext' => 'Lokele ye tee',
+'sharedupload' => 'Faele ye e hlakanetšwe ka fao e kabe e šumišwa ke ditirotherwa tše dingwe.',
'uploadnewversion-linktext' => 'Lokela peoletšo ye mphsa ya faele',
# File reversion
@@ -674,8 +668,8 @@ Matlakala ago ba [[Special:Watchlist|lenanong la gago la matlakala ditlhapetšo]
'doubleredirects' => "Di''redirect'' goya go ''redirect''",
'brokenredirects' => "''redirect'' tša go robega",
-'brokenredirects-edit' => '(fetola)',
-'brokenredirects-delete' => '(phumula)',
+'brokenredirects-edit' => 'fetola',
+'brokenredirects-delete' => 'phumula',
'withoutinterwiki' => 'Matlakala a senago dihlomaganyo tša dipolelo',
'withoutinterwiki-submit' => 'Bontšha',
@@ -810,7 +804,7 @@ Lebelela $2 go hweetša sedi ka diphulo tša bjale.',
# Rollback
'rollbacklink' => 'bošetša morago',
-'editcomment' => "Ahlaahlo ya phetogo ke : \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "Ahlaahlo ya phetogo ke : \"''\$1''\".",
# Protect
'protectlogpage' => "''Log'' yago lota",
@@ -821,7 +815,6 @@ Lebelela $2 go hweetša sedi ka diphulo tša bjale.',
'protectexpiry' => 'Fetatšatši:',
'protect_expiry_invalid' => 'Fetatšatši, nako ye ga ya dumelwa.',
'protect_expiry_old' => 'Fetatšatši ke ya nako yeo e fetilego.',
-'protect-unchain' => 'Dumella (tloša senotlolo) tumello ya go huduga',
'protect-text' => "O ka lebelela lego fetola seemo sa go lota sa letlakala '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Tšhupaleloko ya gago ga ena tumello ya go fetola seemo sago lota ga letlakala.
Seemo sa go lota ga letlakala '''$1''':",
@@ -834,7 +827,7 @@ Seemo sa go lota ga letlakala '''$1''':",
'protect-expiring' => 'fetatšatši ke $1 (UTC)',
'protect-cascade' => 'Lota matlakala, akaretša le letlakala le (go lota ka kakaretšo)',
'protect-cantedit' => 'Ga o kgone go fetola tekano ya bolotego letlakaleng le, ka ge o sena tumello yago bofetola.',
-'protect-expiry-options' => '2 diiri:2 hours,1 letšatši:1 day,3 matšatši:3 days,1 beke:1 week,2 dibeke:2 weeks,1 kgwedi:1 month,3 digkwedi:3 months,6 dikgwedi:6 months,1 ngwaga:1 year,ga efele:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 diiri:2 hours,1 letšatši:1 day,3 matšatši:3 days,1 beke:1 week,2 dibeke:2 weeks,1 kgwedi:1 month,3 digkwedi:3 months,6 dikgwedi:6 months,1 ngwaga:1 year,ga efele:infinite',
'restriction-type' => 'Tumello:',
'restriction-level' => 'Seemo sago Lota:',
@@ -866,6 +859,8 @@ Seemo sa go lota ga letlakala '''$1''':",
'sp-contributions-newbies-sub' => 'Tša tšhupaleloko tše mphsa',
'sp-contributions-blocklog' => "''Log'' yago thiba",
+'sp-contributions-deleted' => 'Diabe tša mošomiši tšeo di phumutšwego',
+'sp-contributions-talk' => 'Bolela',
'sp-contributions-search' => 'Fetleka diabe',
'sp-contributions-username' => 'IP Atrese goba leina la mošomiši:',
'sp-contributions-submit' => 'Fetleka',
@@ -890,7 +885,7 @@ Seemo sa go lota ga letlakala '''$1''':",
'ipbreasonotherlist' => 'Lebaka le lengwe',
'ipbsubmit' => 'Thiba mošomiši yo',
'ipbother' => 'Nako yengwe:',
-'ipboptions' => '2 diiri:2 hours,1 letšatši:1 day,3 matšatši:3 days,1 beke:1 week,2 dibeke:2 weeks,1 kgwedi:1 month,3 digkwedi:3 months,6 dikgwedi:6 months,1 ngwaga:1 year,ga efele:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 diiri:2 hours,1 letšatši:1 day,3 matšatši:3 days,1 beke:1 week,2 dibeke:2 weeks,1 kgwedi:1 month,3 digkwedi:3 months,6 dikgwedi:6 months,1 ngwaga:1 year,ga efele:infinite',
'ipbotheroption' => 'yengwe',
'ipblocklist' => "Lenano la IP le bašumiši bao bathibilwego(''blocked'')",
'ipblocklist-submit' => 'Fetleka',
@@ -929,7 +924,7 @@ Ge go le bjalo,o tla swanela ke go huduša goba go kopanya matlakala ka bowena."
'move-watch' => 'Tlhapetša letlakala le',
'movepagebtn' => 'Huduša letlakala',
'pagemovedsub' => 'Hudugile ka katlego',
-'movepage-moved' => '\'\'\'"$1" e hudušitšwe go "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" e hudušitšwe go "$2"\'\'\'',
'articleexists' => 'Letlakala la goba le leina le legona, goba
leina leo o le kgethilego ga la dumelega.
Ka kgopelo, kgetha leina le lengwe.',
@@ -1006,7 +1001,7 @@ Ka kgopelo, kgetha leina le lengwe.',
# Attribution
'siteuser' => '{{SITENAME}} mošumiši $1',
-'lastmodifiedatby' => 'Letlakala le fetotšwe la mafelelo ka $2, $1 ke $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Letlakala le fetotšwe la mafelelo ka $2, $1 ke $3.',
'others' => 'tše dingwe',
'siteusers' => '{{SITENAME}} mošumiši/bašumiši $1',
@@ -1014,6 +1009,10 @@ Ka kgopelo, kgetha leina le lengwe.',
'numedits' => 'Palo ya diphetogo (letlakala): $1',
'numwatchers' => 'Palo ya batlhapedi: $1',
+# Math errors
+'math_unknown_error' => 'Phošo ya gose tsebege',
+'math_syntax_error' => 'phošo ya popafoko',
+
# Image deletion
'filedeleteerror-short' => 'Phošo go phumuleng faele: $1',
'filedeleteerror-long' => 'Diphošo di hlagile ge go phumulwa faele:
@@ -1058,7 +1057,7 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Bophara',
@@ -1109,7 +1108,7 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
'watchlisttools-raw' => "Fetola lenano le letala (''raw'') la ditlhapetšo",
# Special:Version
-'version' => "''Version''", # Not used as normal message but as header for the special page itself
+'version' => "''Version''",
# Special:FileDuplicateSearch
'fileduplicatesearch-submit' => 'Fetleka',
diff --git a/languages/messages/MessagesNv.php b/languages/messages/MessagesNv.php
index d2e94032..dab18812 100644
--- a/languages/messages/MessagesNv.php
+++ b/languages/messages/MessagesNv.php
@@ -14,22 +14,20 @@
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_MAIN => '',
- NS_TALK => 'Naaltsoos_baa_yinísht\'į́',
- NS_USER => 'Choinish\'įįhí',
- NS_USER_TALK => 'Choinish\'įįhí_baa_yinísht\'į́',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_baa_yinísht\'į́',
- NS_FILE => 'E\'elyaaígíí',
- NS_FILE_TALK => 'E\'elyaaígíí_baa_yinísht\'į́',
+ NS_TALK => 'Naaltsoos_baa_yáshtiʼ',
+ NS_USER => 'Choyoołʼįįhí',
+ NS_USER_TALK => 'Choyoołʼįįhí_bichʼįʼ_yáshtiʼ',
+ NS_PROJECT_TALK => '$1_baa_yáshtiʼ',
+ NS_FILE => 'Eʼelyaaígíí',
+ NS_FILE_TALK => 'Eʼelyaaígíí_baa_yáshtiʼ',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_baa_yinísht\'į́',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Template_talk',
- NS_HELP => 'Aná\'álwo\'',
- NS_HELP_TALK => 'Aná\'álwo\'_baa_yinísht\'į́',
- NS_CATEGORY => 'T\'ááłáhági_át\'éego',
- NS_CATEGORY_TALK => 'T\'ááłáhági_át\'éego_baa_yinísht\'į́'
+ NS_MEDIAWIKI_TALK => 'MediaWiki_baa_yáshtiʼ',
+ NS_TEMPLATE => 'Bee_álnééhí',
+ NS_TEMPLATE_TALK => 'Bee_álnééhí_baa_yáshtiʼ',
+ NS_HELP => 'Anáʼálwoʼ',
+ NS_HELP_TALK => 'Anáʼálwoʼ_baa_yáshtiʼ',
+ NS_CATEGORY => 'Tʼááłáhági_átʼéego',
+ NS_CATEGORY_TALK => 'Tʼááłáhági_átʼéego_baa_yáshtiʼ',
);
$datePreferences = false;
@@ -119,7 +117,7 @@ $messages = array(
'otherlanguages' => 'saad',
'redirectedfrom' => '("$1"dę́ę́ʼ)',
'redirectpagesub' => 'dah astsihígíí',
-'lastmodifiedat' => 'Díí naaltsoos $1/$2 łahgo ályaa.', # $1 date, $2 time
+'lastmodifiedat' => 'Díí naaltsoos $1/$2 łahgo ályaa.',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} baa haneʼ',
@@ -186,6 +184,8 @@ $messages = array(
'previewnote' => "'''Díí kweʼé éí \"dooleełígíí\" tʼéiyá átʼé!'''
::<small>'''(This is only a preview.)'''</small>",
'editing' => '"$1" łahgo áshłééh...',
+'templatesused' => '"bee álnééhé" naaltsoos bikáaʼgi hólǫ́:',
+'templatesusedpreview' => '"bee álnééhé" naaltsoos bikáaʼgi dooleełígíí:',
'template-protected' => '(administratorsígíí tʼéiyá)',
'template-semiprotected' => '(chodayoołʼįįhí doo ééhozinii díí naaltsoos doo łahgo ádayóleʼ átʼée da)',
'hiddencategories' => 'Díí kweʼé naaltsoos éí {{PLURAL:$1|1 Naaltsoos biiʼ sinilí (doo yitʼínii)|$1 Naaltsoos biiʼ sinilí (doo yitʼínii)}} yiiʼ siʼą́:',
@@ -193,6 +193,8 @@ $messages = array(
# History pages
'viewpagelogs' => 'logsígíí yishʼį́ nisin',
'nohistory' => '"łahgo ályaaígíí" doo hólǫ́ǫ da/ádin.',
+'currentrev-asof' => 'kʼadígíí ($1)',
+'revisionasof' => '$1 yę́ędą́ą́ʼ',
'currentrevisionlink' => 'kʼadígíí',
'cur' => 'kʼadígíí',
'histfirst' => 'bee hodeeshzhiizh',
@@ -209,8 +211,6 @@ $messages = array(
'searchresulttext' => '{{SITENAME}} bikáaʼgi haʼnitáhígíí bíhoołʼaahgo biniiyé [[{{MediaWiki:Helppage}}|{{int:help}}]] yidíiłtah.',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' hanínítą́ą́ʼ ([[Special:Prefixindex/$1|naaltsoos "$1" wolyéhígíí tʼáá ałtso]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" baa atiinígíí tʼáá ałtso]])',
'searchsubtitleinvalid' => "'''$1''' hanínítą́ą́ʼ",
-'noexactmatch' => '\'\'\'Naaltssos "$1" wolyéhígíí ádin.\'\'\' Naaltsoos "$1" yaa halneʼígíí [[:$1|ánílééh]] nínízinísh?',
-'noexactmatch-nocreate' => "'''Naaltssos \"\$1\" wolyéhígíí ádin.'''",
'notitlematches' => 'naaltsoos ádin',
'viewprevnext' => '($1) ($2) ($3) shinááł',
'search-result-size' => '$1 ({{PLURAL:$2|1 saad bikáaʼgi hólǫ́|$2 saad bikáaʼgi dahólǫ́}})',
@@ -257,12 +257,13 @@ $3',
'filehist' => 'łahgo ályaaígíí',
'filehist-current' => 'kʼadígíí',
'filehist-thumb' => 'thumbnailígíí',
+'filehist-thumbtext' => 'thumbnailígíí ($1)',
'filehist-user' => 'Choyoołʼįįhí',
'filehist-dimensions' => 'naaniigo/náásee',
'filehist-comment' => 'haneʼ',
'imagelinks' => 'naaltsoos díí kweʼé eʼelyaaígíí chodayoołʼįįhígíí',
'linkstoimage' => '{{PLURAL:$1|1 naaltsoos díí eʼelyaaígíí choyoołʼįįh|$1 naaltsoos díí eʼelyaaígíí chodayoołʼįįh}}:',
-'sharedupload' => 'Díí kweʼé eʼelyaaígíí $1 bitsʼą́ą́dę́ę́ʼ.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Díí kweʼé eʼelyaaígíí $1 bitsʼą́ą́dę́ę́ʼ.',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte átʼé|bytes átʼé}}',
@@ -354,7 +355,7 @@ $3',
'newtitle' => 'naaltsoos bizhiʼ ániidí:',
'move-watch' => 'shinááł',
'movepagebtn' => '✔ bee lą́ ashłeeh',
-'movepage-moved' => '\'\'\'"$1" kʼad "$2" wolyé\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" kʼad "$2" wolyé\'\'\'',
'1movedto2' => 'naaltsoos "[[$1]]" → "[[$2]]"-góó yidiyiznááʼ',
'1movedto2_redir' => 'naaltsoos "[[$1]]" → "[[$2]]"-góó yidiyiznááʼ (dah astsihí ńtʼę́ę́ʼ)',
'revertmove' => 'ńdíídleeł!',
diff --git a/languages/messages/MessagesOc.php b/languages/messages/MessagesOc.php
index 5da68b67..0201c861 100644
--- a/languages/messages/MessagesOc.php
+++ b/languages/messages/MessagesOc.php
@@ -26,8 +26,8 @@ $namespaceNames = array(
NS_USER => 'Utilizaire',
NS_USER_TALK => 'Discussion_Utilizaire',
NS_PROJECT_TALK => 'Discussion_$1',
- NS_FILE => 'Imatge',
- NS_FILE_TALK => 'Discussion_Imatge',
+ NS_FILE => 'Fichièr',
+ NS_FILE_TALK => 'Discussion_Fichièr',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
NS_TEMPLATE => 'Modèl',
@@ -49,6 +49,8 @@ $namespaceAliases = array(
'Discutida_Modèl' => NS_TEMPLATE_TALK,
'Discutida_Ajuda' => NS_HELP_TALK,
'Discutida_Categoria' => NS_CATEGORY_TALK,
+ 'Imatge' => NS_FILE,
+ 'Discussion_Imatge' => NS_FILE_TALK,
);
$specialPageAliases = array(
@@ -59,7 +61,7 @@ $specialPageAliases = array(
'Userlogout' => array( 'Desconnexion' ),
'CreateAccount' => array( 'Crear un compte', 'CrearUnCompte', 'CrearCompte' ),
'Preferences' => array( 'Preferéncias' ),
- 'Watchlist' => array( 'Lista de seguit', 'ListraDe Seguit', 'Seguit' ),
+ 'Watchlist' => array( 'Lista de seguit', 'ListraDeSeguit', 'Seguit', 'Lista de seguiment', 'ListraDeSeguiment', 'Seguiment' ),
'Recentchanges' => array( 'Darrièrs cambiaments', 'DarrièrsCambiaments', 'Darrièras Modificacions' ),
'Upload' => array( 'Telecargament', 'Telecargaments' ),
'Listfiles' => array( 'Lista dels imatges', 'ListaDelsImatges' ),
@@ -137,26 +139,28 @@ $specialPageAliases = array(
'Blankpage' => array( 'Pagina blanca', 'PaginaBlanca' ),
'LinkSearch' => array( 'Recèrca de ligams', 'RecèrcaDeLigams' ),
'DeletedContributions' => array( 'Contribucions escafadas', 'ContribucionsEscafadas' ),
+ 'Tags' => array( 'Balisas' ),
);
$magicWords = array(
'redirect' => array( '0', '#REDIRECCION', '#REDIRECT' ),
- 'notoc' => array( '0', '__CAPDETAULA__', '__NOTOC__' ),
- 'nogallery' => array( '0', '__CAPDEGALARIÁ__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__FORÇARTAULA__', '__FORCETOC__' ),
- 'toc' => array( '0', '__TAULA__', '__TOC__' ),
+ 'notoc' => array( '0', '__CAPDETAULA__', '__PASCAPDESOMARI__', '__PASCAPDETDM__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__CAPDEGALARIÁ__', '__CAPDEGALARIA__', '__PASCAPDEDEGALARIÁ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORÇARTAULA__', '__FORÇARSOMARI__', '__FORÇARTDM__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__TAULA__', '__SOMARI__', '__TDM__', '__TOC__' ),
'noeditsection' => array( '0', '__SECCIONNONEDITABLA__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'MESCORRENT', 'CURRENTMONTH' ),
- 'currentmonthname' => array( '1', 'NOMMESCORRENT', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'NOMGENMESCORRENT', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'ABREVMESCORRENT', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'JORNCORRENT', 'CURRENTDAY' ),
- 'currentday2' => array( '1', 'JORNCORRENT2', 'CURRENTDAY2' ),
- 'currentdayname' => array( '1', 'NOMJORNCORRENT', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'ANNADACORRENTA', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'DATACORRENTA', 'CURRENTTIME' ),
- 'currenthour' => array( '1', 'ORACORRENTA', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH' ),
+ 'noheader' => array( '0', '__PASCAPDENTÈSTA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MESCORRENT', 'MESACTUAL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'NOMMESCORRENT', 'NOMMESACTUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NOMGENMESCORRENT', 'NOMGENMESACTUAL', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ABREVMESCORRENT', 'ABREVMESACTUAL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'JORNCORRENT', 'JORNACTUAL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'JORNCORRENT2', 'JORNACTUAL2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOMJORNCORRENT', 'NOMJORNACTUAL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ANNADACORRENTA', 'ANNADAACTUALA', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'DATACORRENTA', 'DATAACTUALA', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ORACORRENTA', 'ORAACTUALA', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'NOMMESLOCAL', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'NOMGENMESLOCAL', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'ABREVMESLOCAL', 'LOCALMONTHABBREV' ),
@@ -170,14 +174,17 @@ $magicWords = array(
'numberofarticles' => array( '1', 'NOMBREARTICLES', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'NOMBREFICHIÈRS', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'NOMBREUTILIZAIRES', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( '1', 'NOMBREEDICIONS', 'NUMBEROFEDITS' ),
+ 'numberofactiveusers' => array( '1', 'NOMBREUTILIZAIRESACTIUS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NOMBREEDICIONS', 'NOMBREMODIFS', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NOMBREVISTAS', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'NOMPAGINA', 'PAGENAME' ),
'pagenamee' => array( '1', 'NOMPAGINAX', 'PAGENAMEE' ),
'namespace' => array( '1', 'ESPACINOMENATGE', 'NAMESPACE' ),
'namespacee' => array( '1', 'ESPACINOMENATGEX', 'NAMESPACEE' ),
'talkspace' => array( '1', 'ESPACIDISCUSSION', 'TALKSPACE' ),
- 'subjectspace' => array( '1', 'ESPACISUBJECTE', 'ESPACIARTICLE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
- 'subjectspacee' => array( '1', 'ESPACISUBJECTEX', 'ESPACIARTICLEX', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'talkspacee' => array( '1', 'ESPACIDISCUSSIONX', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ESPACISUBJECTE', 'ESPACISUBJÈCTE', 'ESPACIARTICLE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ESPACISUBJECTEX', 'ESPACISUBJÈCTEX', 'ESPACIARTICLEX', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
'fullpagename' => array( '1', 'NOMPAGINACOMPLET', 'FULLPAGENAME' ),
'fullpagenamee' => array( '1', 'NOMPAGINACOMPLETX', 'FULLPAGENAMEE' ),
'subpagename' => array( '1', 'NOMSOSPAGINA', 'SUBPAGENAME' ),
@@ -186,27 +193,36 @@ $magicWords = array(
'basepagenamee' => array( '1', 'NOMBASADEPAGINAX', 'BASEPAGENAMEE' ),
'talkpagename' => array( '1', 'NOMPAGINADISCUSSION', 'TALKPAGENAME' ),
'talkpagenamee' => array( '1', 'NOMPAGINADISCUSSIONX', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NOMPAGINASUBJECTE', 'NOMPAGINASUBJÈCTE', 'NOMPAGINAARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NOMPAGINASUBJECTEX', 'NOMPAGINASUBJÈCTEX', 'NOMPAGINAARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'img_thumbnail' => array( '1', 'vinheta', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'vinheta=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'drecha', 'dreta', 'right' ),
'img_left' => array( '1', 'esquèrra', 'senèstra', 'gaucha', 'left' ),
'img_none' => array( '1', 'neant', 'nonrés', 'none' ),
'img_center' => array( '1', 'centrat', 'center', 'centre' ),
'img_framed' => array( '1', 'quadre', 'enquagrat', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( '1', 'sens_quadre', 'frameless' ),
+ 'img_frameless' => array( '1', 'sens_quadre', 'sens quadre', 'frameless' ),
+ 'img_upright' => array( '1', 'redreça', 'redreça$1', 'redreça $1', 'upright', 'upright=$1', 'upright $1' ),
'img_border' => array( '1', 'bordadura', 'border' ),
'img_baseline' => array( '1', 'linha de basa', 'baseline' ),
'img_sub' => array( '1', 'indici', 'ind', 'sub' ),
'img_super' => array( '1', 'exp', 'super', 'sup' ),
'img_top' => array( '1', 'naut', 'top' ),
+ 'img_text_top' => array( '1', 'naut-tèxte', 'naut-txt', 'text-top' ),
'img_middle' => array( '1', 'mitan', 'middle' ),
'img_bottom' => array( '1', 'bas', 'bottom' ),
- 'sitename' => array( '1', 'NOMSIT', 'SITENAME' ),
+ 'img_text_bottom' => array( '1', 'bas-tèxte', 'bas-txt', 'text-bottom' ),
+ 'img_link' => array( '1', 'ligam=$1', 'link=$1' ),
+ 'sitename' => array( '1', 'NOMSIT', 'NOMSITE NOMSITI', 'SITENAME' ),
+ 'ns' => array( '0', 'ESPACEN:', 'NS:' ),
'localurl' => array( '0', 'URLLOCALA:', 'LOCALURL:' ),
'localurle' => array( '0', 'URLLOCALAX:', 'LOCALURLE:' ),
'server' => array( '0', 'SERVIDOR', 'SERVER' ),
'servername' => array( '0', 'NOMSERVIDOR', 'SERVERNAME' ),
'scriptpath' => array( '0', 'CAMINESCRIPT', 'SCRIPTPATH' ),
'grammar' => array( '0', 'GRAMATICA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GENRE:', 'GENDER:' ),
'currentweek' => array( '1', 'SETMANACORRENTA', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'JDSCORRENT', 'CURRENTDOW' ),
'localweek' => array( '1', 'SETMANALOCALA', 'LOCALWEEK' ),
@@ -215,41 +231,56 @@ $magicWords = array(
'revisionday' => array( '1', 'DATAVERSION', 'REVISIONDAY' ),
'revisionday2' => array( '1', 'DATAVERSION2', 'REVISIONDAY2' ),
'revisionmonth' => array( '1', 'MESREVISION', 'REVISIONMONTH' ),
- 'revisionyear' => array( '1', 'ANNADAREVISION', 'REVISIONYEAR' ),
+ 'revisionyear' => array( '1', 'ANNADAREVISION', 'ANREVISION', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'ORAREVISION', 'REVISIONTIMESTAMP' ),
'fullurl' => array( '0', 'URLCOMPLETA:', 'FULLURL:' ),
'fullurle' => array( '0', 'URLCOMPLETAX:', 'FULLURLE:' ),
'lcfirst' => array( '0', 'INITMINUS:', 'LCFIRST:' ),
'ucfirst' => array( '0', 'INITMAJUS:', 'UCFIRST:' ),
- 'raw' => array( '0', 'LINHA:', 'RAW:' ),
+ 'lc' => array( '0', 'MINUS:', 'LC:' ),
+ 'uc' => array( '0', 'MAJUS:', 'CAPIT:', 'UC:' ),
+ 'raw' => array( '0', 'LINHA:', 'BRUT:', 'RAW:' ),
'displaytitle' => array( '1', 'AFICHARTÍTOL', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'BRUT', 'B', 'R' ),
'newsectionlink' => array( '1', '__LIGAMSECCIONNOVÈLA__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__PASCAPDELIGAMSECCIONNOVÈLA__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'VERSIONACTUALA', 'CURRENTVERSION' ),
- 'currenttimestamp' => array( '1', 'ORAACTUALA', 'CURRENTTIMESTAMP' ),
- 'localtimestamp' => array( '1', 'ORALOCALA', 'LOCALTIMESTAMP' ),
+ 'urlencode' => array( '0', 'ENCÒDAURL:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'ENCÒDAANCÒRA', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'INSTANTACTUAL', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'INSTANTLOCAL', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'MARCADIRECCION', 'MARCADIR', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#LENGA:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'LENGACONTENGUT', 'LENGCONTENGUT', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'PAGINASDINSESPACI:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'NOMBREADMINS', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'FORMATNOMBRE', 'FORMATNUM' ),
- 'defaultsort' => array( '1', 'ORDENA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'padleft' => array( '0', 'BORRATGEESQUÈRRA', 'PADLEFT' ),
+ 'padright' => array( '0', 'BORRATGEDRECHA', 'PADRIGHT' ),
+ 'special' => array( '0', 'especial', 'special' ),
+ 'defaultsort' => array( '1', 'ORDENA:', 'CLAUDETRIADA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'CAMIN:', 'FILEPATH:' ),
'tag' => array( '0', 'balisa', 'tag' ),
'hiddencat' => array( '1', '__CATAMAGADA__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'PAGINASDINSCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'TALHAPAGINA', 'PAGESIZE' ),
+ 'noindex' => array( '1', '__PASCAPDINDÈX__', '__NOINDEX__' ),
+ 'staticredirect' => array( '1', '__REDIRECCIONESTATICA__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVÈLDEPROTECCION', 'PROTECTIONLEVEL' ),
);
-$dateFormats = array(
- 'mdy time' => 'H:i',
- 'mdy date' => 'M j, Y',
- 'mdy both' => 'M j, Y "a" H:i',
+$datePreferences = array(
+ 'default',
+ 'oc normal',
+ 'ISO 8601',
+);
- 'dmy time' => 'H:i',
- 'dmy date' => 'j M Y',
- 'dmy both' => 'j M Y "a" H:i',
+$defaultDateFormat = 'oc normal';
- 'ymd time' => 'H:i',
- 'ymd date' => 'Y M j',
- 'ymd both' => 'Y M j "a" H:i',
+$dateFormats = array(
+ 'oc normal time' => 'H.i',
+ 'oc normal date' => 'j F "de" Y',
+ 'oc normal both' => 'j F "de" Y "a" H.i',
);
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
@@ -287,6 +318,7 @@ $messages = array(
'tog-enotifminoredits' => 'M’avertir per corrièr electronic quitament en cas de modificacions menoras',
'tog-enotifrevealaddr' => 'Afichar mon adreça electronica dins la los corrièrs electronics d’avertiment',
'tog-shownumberswatching' => "Afichar lo nombre d'utilizaires que seguisson aquesta pagina",
+'tog-oldsig' => 'Apercebut de la signatura existenta :',
'tog-fancysig' => 'Tractar la signatura coma de wikitèxte (sens ligam automatic)',
'tog-externaleditor' => 'Utilizar un editor extèrne per defaut (pels utilizaires avançats, necessita una configuracion especiala sus vòstre ordenador)',
'tog-externaldiff' => 'Utilizar un comparator extèrne per defaut (pels utilizaires avançats, necessita una configuracion especiala sus vòstre ordenador)',
@@ -310,6 +342,13 @@ $messages = array(
'underline-never' => 'Pas jamai',
'underline-default' => 'Segon lo navigador',
+# Font style option in Special:Preferences
+'editfont-style' => "Estil de poliça de la zòna d'edicion :",
+'editfont-default' => 'Lo del navigador per defaut',
+'editfont-monospace' => 'Poliça monoespaçada',
+'editfont-sansserif' => 'Poliça sens empatament',
+'editfont-serif' => 'Poliça amb empataments',
+
# Dates
'sunday' => 'dimenge',
'monday' => 'diluns',
@@ -369,7 +408,7 @@ $messages = array(
'category-media-header' => 'Fichièrs multimèdia dins la categoria « $1 »',
'category-empty' => "''Actualament, aquesta categoria conten pas cap d'articles, de soscategoria o de fichièr multimèdia.''",
'hidden-categories' => '{{PLURAL:$1|Categoria amagada|Categorias amagadas}}',
-'hidden-category-category' => 'Categorias amagadas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias amagadas',
'category-subcat-count' => '{{PLURAL:$2|Aquesta categoria dispausa pas que de la soscategoria seguenta.|Aquesta categoria dispausa de {{PLURAL:$1|soscategoria|$1 soscategorias}}, sus un total de $2.}}',
'category-subcat-count-limited' => 'Aquesta categoria dispausa {{PLURAL:$1|d’una soscategoria|de $1 soscategorias}}.',
'category-article-count' => '{{PLURAL:$2|Aquesta categoria conten unicament la pagina seguenta.|{{PLURAL:$1|La pagina seguenta figura|Las $1 paginas seguentas figuran}} dins aquesta categoria, sus un total de $2.}}',
@@ -377,6 +416,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Aquesta categoria conten unicament lo fichièr seguent.|{{PLURAL:$1|Lo fichièr seguent figura|Los $1 fichièrs seguents figuran}} dins aquesta categoria, sus una soma de $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Lo fichièr seguent figura|Los $1 fichièrs seguents figuran}} dins la presenta categoria.',
'listingcontinuesabbrev' => '(seguida)',
+'index-category' => 'Paginas indexadas',
+'noindex-category' => 'Paginas pas indexadas',
'mainpagetext' => "'''MediaWiki es estat installat amb succès.'''",
'mainpagedocfooter' => "Consultatz lo [http://meta.wikimedia.org/wiki/Ajuda:Contengut Guida de l'utilizaire] per mai d'entresenhas sus l'utilizacion d'aqueste logicial.
@@ -387,10 +428,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussions de las parucions de MediaWiki]",
-'about' => 'A prepaus',
-'article' => 'Article',
-'newwindow' => '(dobrís una fenèstra novèla)',
-'cancel' => 'Anullar',
+'about' => 'A prepaus',
+'article' => 'Article',
+'newwindow' => '(dobrís una fenèstra novèla)',
+'cancel' => 'Anullar',
+'moredotdotdot' => 'E mai...',
+'mypage' => 'Ma pagina',
+'mytalk' => 'Ma pagina de discussion',
+'anontalk' => 'Discussion amb aquesta adreça IP',
+'navigation' => 'Navigacion',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Recercar',
'qbbrowse' => 'Far desfilar',
'qbedit' => 'Modificar',
@@ -398,15 +447,35 @@ $messages = array(
'qbpageinfo' => 'Pagina d’entresenhas',
'qbmyoptions' => 'Mas opcions',
'qbspecialpages' => 'Paginas especialas',
-'moredotdotdot' => 'E mai...',
-'mypage' => 'Ma pagina',
-'mytalk' => 'Ma pagina de discussion',
-'anontalk' => 'Discussion amb aquesta adreça IP',
-'navigation' => 'Navigacion',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadonadas :',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Apondre un subjècte',
+'vector-action-delete' => 'Suprimir',
+'vector-action-move' => 'Tornar nomenar',
+'vector-action-protect' => 'Protegir',
+'vector-action-undelete' => 'Restablir',
+'vector-action-unprotect' => 'Desprotegir',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => "Pagina d'ajuda",
+'vector-namespace-image' => 'Fichièr',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'Pagina de Mèdia',
+'vector-namespace-mediawiki' => 'Messatge',
+'vector-namespace-project' => 'Pagina de projècte',
+'vector-namespace-special' => 'Pagina especiala',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Modèl',
+'vector-namespace-user' => "Pagina d'utilizaire",
+'vector-view-create' => 'Crear',
+'vector-view-edit' => 'Modificar',
+'vector-view-history' => "Veire l'istoric",
+'vector-view-view' => 'Legir',
+'vector-view-viewsource' => 'Veire la font',
+'actions' => 'Accions',
+'namespaces' => 'Espacis de noms',
+'variants' => 'Variantas',
'errorpagetitle' => 'Error de títol',
'returnto' => 'Tornar a la pagina $1.',
@@ -456,18 +525,22 @@ $messages = array(
'otherlanguages' => 'Autras lengas',
'redirectedfrom' => '(Redirigit dempuèi $1)',
'redirectpagesub' => 'Pagina de redireccion',
-'lastmodifiedat' => "Darrièr cambiament d'aquesta pagina lo $1, a $2.", # $1 date, $2 time
+'lastmodifiedat' => "Darrièr cambiament d'aquesta pagina lo $1, a $2.",
'viewcount' => 'Aquesta pagina es estada consultada {{PLURAL:$1|un còp|$1 còps}}.',
'protectedpage' => 'Pagina protegida',
'jumpto' => 'Anar a :',
'jumptonavigation' => 'navigacion',
'jumptosearch' => 'Recercar',
+'view-pool-error' => "O planhèm, los servidors son subrecargats pel moment.
+Tròp d’utilizaires cercan a accedir a aquesta pagina.
+Esperatz un moment abans d'ensajar d’accedir a aquesta pagina.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A prepaus de {{SITENAME}}',
'aboutpage' => 'Project:A prepaus',
'copyright' => 'Lo contengut es disponible segon los tèrmes de la licéncia $1.',
-'copyrightpagename' => '{{SITENAME}}, totes los dreches reservats',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Actualitats',
'currentevents-url' => 'Project:Actualitats',
@@ -475,8 +548,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avertiments generals',
'edithelp' => 'Ajuda',
'edithelppage' => 'Help:Cossí modificar una pagina',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Acuèlh',
'mainpage' => 'Acuèlh',
'mainpage-description' => 'Acuèlh',
@@ -556,10 +627,6 @@ La darrièra requèsta emesa èra :
« $1 »
dins la foncion « $2 ».
La banca de donadas a renviat l’error « $3 : $4 ».',
-'noconnect' => 'Lo wiki rencontra actualament qualques dificultats tecnicas, e se pòt pas connectar al servidor de la banca de donadas. <br />
-$1',
-'nodb' => 'Impossible de seleccionar la banca de donadas $1',
-'cachederror' => 'Aquò es una còpia de la pagina demandada (version en amagatal) e poiriá èsser pas mesa a jorn.',
'laggedslavemode' => 'Atencion : Aquesta pagina pòt conténer pas totes los darrièrs cambiaments efectuats.',
'readonly' => 'Mesas a jorn blocadas sus la banca de donadas',
'enterlockreason' => 'Indicatz la rason del blocatge, e mai una estimacion de sa durada',
@@ -577,6 +644,8 @@ Informatz-ne un [[Special:ListUsers/sysop|administrator]] aprèp aver notada l
'readonly_lag' => 'La banca de donadas es estada automaticament clavada pendent que los servidors segondaris ratrapan lor retard sul servidor principal.',
'internalerror' => 'Error intèrna',
'internalerror_info' => 'Error intèrna: $1',
+'fileappenderrorread' => 'Impossible de legir « $1 » al moment de l’insercion',
+'fileappenderror' => "Impossible d'apondre « $1 » a « $2 ».",
'filecopyerror' => 'Impossible de copiar lo fichièr « $1 » cap a « $2 ».',
'filerenameerror' => 'Impossible de tornar nomenar lo fichièr « $1 » en « $2 ».',
'filedeleteerror' => 'Impossible de suprimir lo fichièr « $1 ».',
@@ -586,7 +655,8 @@ Informatz-ne un [[Special:ListUsers/sysop|administrator]] aprèp aver notada l
'unexpected' => 'Valor imprevista : « $1 » = « $2 ».',
'formerror' => 'Error: Impossible de sometre lo formulari',
'badarticleerror' => 'Aquesta accion pòt pas èsser efectuada sus aquesta pagina.',
-'cannotdelete' => 'Impossible de suprimir la pagina o lo fichièr indicat. (Benlèu la supression ja es estada efectuada per qualqu’un d’autre.)',
+'cannotdelete' => 'Impossible de suprimir la pagina o lo fichièr « $1 ».
+Benlèu la supression ja es estada efectuada per qualqu’un mai.',
'badtitle' => 'Títol marrit',
'badtitletext' => 'Lo títol de la pagina demandada es invalid, void o s’agís d’un títol interlenga o interprojècte mal ligat. Benlèu conten un o maites caractèrs que pòdon pas èsser utilizats dins los títols.',
'perfcached' => 'Aquò es una version en amagatal e benlèu es pas a jorn.',
@@ -618,7 +688,6 @@ Lo motiu avançat es « ''$2'' ».",
'virus-unknownscanner' => 'antivirús desconegut :',
# Login and logout pages
-'logouttitle' => 'Desconnexion',
'logouttext' => "'''Ara, sètz desconnect{{GENDER:||at|ada}}..'''
Podètz contunhar d'utilizar {{SITENAME}} anonimament, o vos podètz [[Special:UserLogin|tornar connectar]] jol meteis nom o amb un autre nom.
@@ -626,7 +695,6 @@ Notatz que d'unas paginas pòdon èsser encara afichadas coma s'eratz encara con
'welcomecreation' => "== Benvenguda, $1 ! ==
Vòstre compte d'utilizaire es estat creat.
Doblidetz pas de personalizar vòstras [[Special:Preferences|{{SITENAME}} preferéncias]].",
-'loginpagetitle' => "S'enregistrar/Entrar",
'yourname' => "Vòstre nom d'utilizaire :",
'yourpassword' => 'Vòstre senhal :',
'yourpasswordagain' => 'Picatz vòstre senhal tornarmai :',
@@ -637,6 +705,7 @@ Doblidetz pas de personalizar vòstras [[Special:Preferences|{{SITENAME}} prefer
'nav-login-createaccount' => 'Crear un compte o se connectar',
'loginprompt' => 'Vos cal activar los cookies per vos connectar a {{SITENAME}}.',
'userlogin' => 'Crear un compte o se connectar',
+'userloginnocreate' => 'Connexion',
'logout' => 'Se desconnectar',
'userlogout' => 'Desconnexion',
'notloggedin' => 'Vos sètz pas identificat(ada)',
@@ -649,28 +718,8 @@ Doblidetz pas de personalizar vòstras [[Special:Preferences|{{SITENAME}} prefer
'badretype' => "Los senhals qu'avètz picats son pas identics.",
'userexists' => "Lo nom d'utilizaire qu'avètz picat ja es utilizat.
Causissètz-ne un autre.",
-'youremail' => 'Adreça de corrièr electronic :',
-'username' => "Nom de l'utilizaire :",
-'uid' => 'Numèro de l’utilizaire :',
-'prefs-memberingroups' => 'Membre {{PLURAL:$1|del grop|dels gropes}} :',
-'yourrealname' => 'Nom vertadièr :',
-'yourlanguage' => "Lenga de l'interfàcia :",
-'yourvariant' => 'Varianta lingüistica :',
-'yournick' => 'Signatura per las discussions :',
-'badsig' => 'Signatura bruta incorrècta, verificatz vòstras balisas HTML.',
-'badsiglength' => 'Vòstra signatura es tròp longa.
-Deu aver, al maximum $1 caractèr{{PLURAL:$1||s}}.',
-'yourgender' => 'Sèxe :',
-'gender-unknown' => 'Pas entresenhat',
-'gender-male' => 'Masculin',
-'gender-female' => 'Femenin',
-'prefs-help-gender' => "Opcional : utilizat pels acòrdis dins l'interfàcia del logicial. Aquesta informacion serà publica.",
-'email' => 'Corrièr electronic',
-'prefs-help-realname' => "(facultatiu) : se l'especificatz, serà utilizat per vos atribuir vòstras contribucions.",
'loginerror' => "Error d'identificacion",
-'prefs-help-email' => "L’adreça de corrièr electronic es facultativa mas permet de vos far adreçar vòstre senhal s'o doblidatz.
-Tanben podètz causir de permetre a d’autres de vos contactar amb l'ajuda de vòstra pagina d’utilizaire principala o la de discussion sens aver besonh de revelar vòstra idenditat.",
-'prefs-help-email-required' => 'Una adreça de corrièr electronic es requesa.',
+'createaccounterror' => 'Impossible de crear lo compte : $1',
'nocookiesnew' => "Lo compte d'utilizaire es estat creat, mas sètz pas connectat. {{SITENAME}} utiliza de cookies per la connexion mas los avètz desactivats. Activatz-los e reconnectatz-vos amb lo meteis nom e lo meteis senhal.",
'nocookieslogin' => '{{SITENAME}} utiliza de cookies per la connexion mas avètz los cookies desactivats. Activatz-los e reconnectatz-vos.',
'noname' => "Avètz pas picat de nom d'utilizaire valid.",
@@ -681,10 +730,11 @@ Lo nom d'utilizaire es sensible a la cassa.
Verificatz qu'avètz plan ortografiat lo nom, o [[Special:UserLogin/signup|creatz-vos un compte novèl]].",
'nosuchusershort' => 'I a pas de contributor amb lo nom « <nowiki>$1</nowiki> ». Verificatz l’ortografia.',
'nouserspecified' => "Vos cal especificar vòstre nom d'utilizaire.",
+'login-userblocked' => 'Aqueste utilizaire es blocat. Connexion pas autorizada.',
'wrongpassword' => 'Lo senhal es incorrècte. Ensajatz tornarmai.',
'wrongpasswordempty' => 'Lo senhal picat èra void. Se vos plai, ensajatz tornarmai.',
-'passwordtooshort' => 'Vòstre senhal es tròp cort.
-Deu conténer almens $1 caractèr{{PLURAL:$1||s}} e èsser diferent de vòstre nom d’utilizaire.',
+'passwordtooshort' => 'Vòstre senhal deu conténer al mens {{PLURAL:$1|1 caractèr|$1 caractèrs}}.',
+'password-name-match' => 'Vòstre senhal deu èsser diferent de vòstre nom d’utilizaire.',
'mailmypassword' => 'Mandar un senhal novèl per corrièr electronic',
'passwordremindertitle' => 'Senhal temporari novèl sus {{SITENAME}}',
'passwordremindertext' => "Qualqu'un (probablament vos, amb l'adreça IP $1) a demandat un senhal novèl
@@ -697,6 +747,7 @@ Se sètz pas l’autor d'aquesta demanda, o se vos remembratz ara
de vòstre senhal ancian e que desiratz pas mai ne cambiar,
podètz ignorar aqueste messatge e contunhar d'utilizar vòstre senhal ancian.",
'noemail' => "Cap d'adreça electronica es pas estada enregistrada per l'utilizaire « $1 ».",
+'noemailcreate' => 'Vos cal provesir una adreça de corrièl valida',
'passwordsent' => "Un senhal novèl es estat mandat a l'adreça electronica de l'utilizaire « $1 ».
Identificatz-vos tre que l'aurètz recebut.",
'blocked-mailpassword' => 'Vòstra adreça IP es blocada en edicion, la foncion de rapèl del senhal es doncas desactivada per evitar los abuses.',
@@ -718,9 +769,11 @@ Picatz una adreça plan formatada o daissatz aqueste camp void.",
'createaccount-text' => "Qualqu'un a creat un compte per vòstra adreça de corrièr electronic sus {{SITENAME}} ($4) intitolat « $2 », amb per senhal « $3 ». Deuriaz dobrir una sessilha e cambiar, tre ara, aqueste senhal.
Ignoratz aqueste messatge se aqueste compte es estat creat per error.",
+'usernamehasherror' => "Lo nom d'utilizaire pòt pas conténer de caractèrs de hachage",
'login-throttled' => 'Avètz ensajat tròp de temptativas de connexion darrièrament.
Esperatz abans d’ensajar tornamai.',
'loginlanguagelabel' => 'Lenga: $1',
+'suspicious-userlogout' => 'Vòstra demanda de desconnexion es estada refusada perque sembla qu’es estada mandada per un navigador copat o la mesa en amagatal d’un proxy.',
# Password reset dialog
'resetpass' => 'Cambiar lo senhal del compte',
@@ -732,17 +785,13 @@ Esperatz abans d’ensajar tornamai.',
'retypenew' => 'Confirmar lo senhal novèl :',
'resetpass_submit' => 'Cambiar lo senhal e s’enregistrar',
'resetpass_success' => 'Vòstre senhal es estat cambiat amb succès ! Enregistrament en cors...',
-'resetpass_bad_temporary' => 'Senhal temporari invalid. Benlèu que ja avètz cambiat vòstre senhal amb succès, o demandat un senhal temporari novèl.',
'resetpass_forbidden' => 'Los senhals pòdon pas èsser cambiats',
'resetpass-no-info' => 'Vos cal èsser connectat per aver accès a aquesta pagina.',
'resetpass-submit-loggedin' => 'Modificar lo senhal',
+'resetpass-submit-cancel' => 'Anullar',
'resetpass-wrong-oldpass' => 'Senhal actual o temporari invalid.
Benlèu ja avètz modificat vòstre senhal o demandat un senhal temporari novèl.',
'resetpass-temp-password' => 'Senhal temporari :',
-'resetpass-log' => 'Istoric de las reïnicializacions dels senhals',
-'resetpass-logtext' => "Çaijós se tròba la lista dels utilizaires qu'an agut lor senhal reïnicializat per un administrator.",
-'resetpass-logentry' => 'cambiat lo senhal de $1',
-'resetpass-comment' => 'Rason per la reïnicializacion del senhal :',
# Edit page toolbar
'bold_sample' => 'Tèxte en gras',
@@ -817,7 +866,6 @@ Precisatz aquestas indicacions dins totas las requèstas que faretz.',
'blockededitsource' => "Lo contengut de '''vòstras modificacions''' aportadas a '''$1''' es indicat çaijós :",
'whitelistedittitle' => 'Connexion necessària per modificar lo contengut',
'whitelistedittext' => 'Vos cal èsser $1 per modificar las paginas.',
-'confirmedittitle' => "Validacion de l'adreça de corrièr electronic necessària per modificar lo contengut",
'confirmedittext' => "Vos cal confirmar vòstra adreça electronica abans de modificar l'enciclopèdia. Picatz e validatz vòstra adreça electronica amb l'ajuda de la pagina [[Special:Preferences|preferéncias]].",
'nosuchsectiontitle' => 'Impossible de trobar la seccion',
'nosuchsectiontext' => "Avètz ensajat de modificar una seccion qu’existís pas.
@@ -838,9 +886,16 @@ Per aquesta rason, devèm utilizar son adreça IP per l'identificar. Una adreça
podètz [[Special:Search/{{PAGENAME}}|aviar una recèrca sul títol d\'aqueste títol de pagina]] dins las autras pagina,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} recercar dins las operacions ligadas]
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear aquesta pagina]</span>.',
+'noarticletext-nopermission' => 'Actualament i a pas cap de tèxte dins aquesta pagina.
+Podètz [[Special:Search/{{PAGENAME}}|far una recèrca sul títol de la pagina]] dins las autras paginas,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} recercar dins los jornals associats]</span>.',
'userpage-userdoesnotexist' => "Lo compte d'utilizaire « $1 » es pas enregistrat. Indicatz se volètz crear o editar aquesta pagina.",
+'userpage-userdoesnotexist-view' => "Lo compte d'utilizaire « $1 » es pas enregistrat.",
+'blocked-notice-logextract' => 'Aqueste utilizaire es actualament blocat.
+La darrièra entrada del jornal dels blocatges es indicada çaijós a títol d’informacion :',
'clearyourcache' => "'''Nòta :''' Aprèp aver publicat la pagina, vos cal forçar son recargament complet tot ignorant lo contengut actual de l'amagatal de vòstre navigador per veire los cambiaments : '''Mozilla / Firefox / Konqueror / Safari :''' mantenètz la tòca ''Majuscula'' (''Shift'') en clicant lo boton ''Actualizar'' (''Reload,'') o quichatz ''Maj-Ctrl-R'' (''Maj-Cmd-R'' sus Apple Mac) ; '''Internet Explorer / Opera :''' mantenètz la tòca ''Ctrl'' en clicant lo boton ''Actualizar'' o quichatz ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh novèl css/js abans de l'enregistrar.",
+'usercssyoucanpreview' => "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh novèl css/js abans de l'enregistrar.",
+'userjsyoucanpreview' => "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh novèl css/js abans de l'enregistrar.",
'usercsspreview' => "'''Remembratz-vos que sètz a previsualizar vòstre pròpri fuèlh CSS !'''
'''Es pas estada encara enregistrada !'''",
'userjspreview' => "'''Remembratz-vos que sètz a visualizar o testar vòstre còde JavaScript e qu’es pas encara estat enregistrat !'''",
@@ -882,15 +937,14 @@ De delà de 32 ko, es preferible per d'unes navigadors de devesir aquesta pagina
Podètz copiar lo tèxte dins un fichièr de tèxte e lo salvar per mai tard.'''
L’administrator qu'a varrolhat la banca de donadas a balhat l’explicacion seguenta : $1",
-'protectedpagewarning' => "'''AVERTIMENT : Aquesta pagina es protegida.
-Sols los utilizaires amb l'estatut d'administrator la pòdon modificar. Asseguratz-vos que seguissètz las directivas concernent las paginas protegidas.'''",
-'semiprotectedpagewarning' => "'''Nòta:''' Aquesta pagina es estada blocada, pòt pas èsser editada que pels utilizaires enregistats.",
+'protectedpagewarning' => "'''AVERTIMENT : Aquesta pagina es protegida. Sols los utilizaires qu'an l'estatut d'administrator la p�don modificar. ''' La darri�ra entrada del jornal es afichada �aij�s per refer�ncia :",
+'semiprotectedpagewarning' => "'''N�ta:''' Aquesta pagina es estada protegida d'un tal biais que sols los contributors enregistrats la p�scan modificar. La darri�ra entrada del jornal es afichada �aij�s per refer�ncia :",
'cascadeprotectedwarning' => "'''ATENCION :''' Aquesta pagina es estada protegida de biais que sols los administrators pòscan l’editar.
Aquesta proteccion es estada facha perque aquesta pagina es inclusa dins {{PLURAL:$1|una pagina protegida|de paginas protegidas}} amb la « proteccion en cascada » activada.",
-'titleprotectedwarning' => "'''ATENCION : Aquesta pagina es estada protegida de tal biais que de [[Special:ListGroupRights|dreches especifics]] son requerits per la poder crear.'''",
-'templatesused' => 'Modèls utilizats sus aquesta pagina :',
-'templatesusedpreview' => 'Modèls utilizats dins aquesta previsualizacion :',
-'templatesusedsection' => 'Modèls utilizats dins aquesta seccion :',
+'titleprotectedwarning' => "'''ATENCION : Aquesta pagina es estada protegida de tal biais que de [[Special:ListGroupRights|dreches especifics]] son requesits per la poder crear.''' La darri�ra entrada del jornal es afichada �aij�s per refer�ncia :",
+'templatesused' => '{{PLURAL:$1|Modèl utilizat|Modèls utilizats}} sus aquesta pagina :',
+'templatesusedpreview' => '{{PLURAL:$1|Modèl utilizat|Modèls utilizats}} dins aquesta previsualizacion :',
+'templatesusedsection' => '{{PLURAL:$1|Modèl utilizat|Modèls utilizats}} dins aquesta seccion :',
'template-protected' => '(protegit)',
'template-semiprotected' => '(semiprotegit)',
'hiddencategories' => "{{PLURAL:$1|Categoria amagada|Categorias amagadas}} qu'aquesta pagina ne fa partida :",
@@ -899,15 +953,18 @@ Aquesta proteccion es estada facha perque aquesta pagina es inclusa dins {{PLURA
'nocreatetext' => '{{SITENAME}} a restrencha la possibilitat de crear de paginas novèlas.
Podètz tonar en rèire e modificar una pagina existenta, [[Special:UserLogin|vos connectar o crear un compte]].',
'nocreate-loggedin' => 'Avètz pas la permission de crear de paginas novèlas.',
+'sectioneditnotsupported-title' => 'Modificacion de seccion pas presa en carga',
+'sectioneditnotsupported-text' => "La modificacion d'una seccion es pas suportada dins aquesta pagina de modificacion.",
'permissionserrors' => 'Error de permissions',
'permissionserrorstext' => 'Avètz pas la permission d’efectuar l’operacion demandada per {{PLURAL:$1|la rason seguenta|las rasons seguentas}} :',
'permissionserrorstext-withaction' => 'Sètz pas autorizat(ada) a $2, per {{PLURAL:$1|la rason seguenta|las rasons seguentas}} :',
-'recreate-deleted-warn' => "'''Atencion : sètz a tornar crear una pagina qu'es estada suprimida precedentament.'''
+'recreate-moveddeleted-warn' => "'''Atencion : sètz a tornar crear una pagina qu'es estada suprimida precedentament.'''
-Demandatz-vos se es vertadièrament apropriat de la tornar crear en vos referissent al jornal de las supressions afichat çaijós :",
-'deleted-notice' => "Aquesta pagina es estat suprimida.
-L'istoric de las supressions es afichat çaijós coma referéncia.",
-'deletelog-fulllog' => "Veire l'istoric complet",
+Demandatz-vos s'es vertadièrament apropriat de contunhar de l’editar.
+L’istoric de las supressions e dels cambiaments de nom es afichat çaijós :",
+'moveddeleted-notice' => "Aquesta pagina es estat suprimida.
+L'istoric de las supressions e dels cambiaments de nom es afichat çaijós coma referéncia.",
+'log-fulllog' => 'Veire lo jornal complet',
'edit-hook-aborted' => "Modificacion fracassada per croquet.
Cap d'explicacion pas balhada.",
'edit-gone-missing' => 'A pas pogut metre a jorn la pagina.
@@ -929,6 +986,7 @@ D'unas inclusions seràn pas efectuadas.",
'post-expand-template-argument-category' => 'Paginas que contenon al mens un paramètre de modèl pas evaluat',
'parser-template-loop-warning' => 'Modèl en bocla detectat : [[$1]]',
'parser-template-recursion-depth-warning' => 'Limit de longor de la recursion del modèl depassat ($1)',
+'language-converter-depth-warning' => 'Limit de prigondor del convertissor de lenga depassada ($1)',
# "Undo" feature
'undo-success' => "Aquesta modificacion va èsser desfacha. Confirmatz los cambiaments (visibles en bas d'aquesta pagina), puèi salvatz se sètz d’acòrdi. Mercés de motivar l’anullacion dins la bóstia de resumit.",
@@ -948,7 +1006,7 @@ La rason balhada per $3 èra ''$2''.",
'currentrev' => 'Version actuala',
'currentrev-asof' => 'Version actuala en data del $1',
'revisionasof' => 'Version del $1',
-'revision-info' => 'Version del $1 per $2', # Additionally available: $3: revision id
+'revision-info' => 'Version del $1 per $2',
'previousrevision' => '← Version precedenta',
'nextrevision' => 'Version seguenta →',
'currentrevisionlink' => 'vejatz la version correnta',
@@ -960,7 +1018,7 @@ La rason balhada per $3 èra ''$2''.",
'histlegend' => 'Legenda : ({{MediaWiki:Cur}}) = diferéncia amb la version actuala ,
({{MediaWiki:Last}}) = diferéncia amb la version precedenta, <b>m</b> = cambiament menor',
'history-fieldset-title' => "Percórrer l'istoric",
-'deletedrev' => '[suprimit]',
+'history-show-deleted' => 'Suprimits solament',
'histfirst' => 'Primièras contribucions',
'histlast' => 'Darrièras contribucions',
'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
@@ -969,71 +1027,113 @@ La rason balhada per $3 èra ''$2''.",
# Revision feed
'history-feed-title' => 'Istoric de las versions',
'history-feed-description' => 'Istoric per aquesta pagina sul wiki',
-'history-feed-item-nocomment' => '$1 lo $2', # user at time
+'history-feed-item-nocomment' => '$1 lo $2',
'history-feed-empty' => 'La pagina demandada existís pas.
Benlèu es estada escafada o renomenada.
Ensajatz de [[Special:Search|recercar sul wiki]] per trobar de paginas en rapòrt.',
# Revision deletion
-'rev-deleted-comment' => '(comentari suprimit)',
-'rev-deleted-user' => '(nom d’utilizaire suprimit)',
-'rev-deleted-event' => '(entrada suprimida)',
-'rev-deleted-text-permission' => "Aquesta version de la pagina es estada '''suprimida'''.
-I pòt aver de detalhs dins l'[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} istoric de las supressions].",
-'rev-deleted-text-view' => "Aquesta version de la pagina es estada '''suprimida'''.
-En tant qu’administrator, la podètz visualizar ; i pòt aver de detalhs dins lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
-'rev-deleted-no-diff' => "Podètz pas veire aquesta dif per que una de las versions es estada '''suprimida'''.
-I pòt aver mai de detalhs dins lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
-'rev-deleted-unhide-diff' => "Una de las revisions d'aquesta diferéncia es estada '''suprimida'''.
-I pòt aver mai de detalhs dins lo [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].
-En tant qu'administrator, podètz encara [$1 veire aquesta diferéncia] se o volètz.",
-'rev-delundel' => 'afichar/amagar',
-'revisiondelete' => 'Suprimir/Restablir de versions',
-'revdelete-nooldid-title' => 'Cibla per la revision invalida',
-'revdelete-nooldid-text' => "Avètz pas precisat la o las revision(s) cibla(s) per utilizar aquesta foncion, la revision cibla existís pas, o alara la revision cibla es la qu'es en cors.",
-'revdelete-nologtype-title' => 'Cap de tipe de jornal pas balhat',
-'revdelete-nologtype-text' => 'Avètz pas especificat un tipe de jornal sul qual aquesta accion deu èsser realizada.',
-'revdelete-toomanytargets-title' => 'Tròp de ciblas',
-'revdelete-toomanytargets-text' => 'Avètz especificat tròp de tipes de ciblas diferentas sus las qualas aquesta accion deu èsser realizada.',
-'revdelete-nologid-title' => 'Entrada del jornal invalida',
-'revdelete-nologid-text' => 'Siá avètz pas especificat un eveniment del jornal sul qual aquesta accion se deu realizar, siá existís pas.',
-'revdelete-selected' => "'''{{PLURAL:$2|Version seleccionada|Versions seleccionadas}} de [[:$1]] :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Eveniment d'istoric seleccionat|Eveniments d'istoric seleccionats}} :'''",
-'revdelete-text' => "'''Las revisions e eveniments suprimits apareisseràn encara dins l’istoric e los jornals de la pagina, mas lor contengut textual serà inaccessible al public.'''
-
-D’autres administrators sus {{SITENAME}} poiràn totjorn accedir al contengut amagat e lo restablir tornarmai a travèrs d'aquesta meteissa interfàcia, a mens qu’una restriccion suplementària siá mesa en plaça pels operators del sit.
-
-Confirmatz qu'aquò es plan çò que voliatz far, que comprenètz las consequéncias, e qu'o fasètz en acòrd amb las [[{{MediaWiki:Policy-url}}|règlas]].",
-'revdelete-suppress-text' => "La supression deu èsser utilizada '''sonque''' dins los cases seguents :
+'rev-deleted-comment' => '(comentari suprimit)',
+'rev-deleted-user' => '(nom d’utilizaire suprimit)',
+'rev-deleted-event' => '(entrada suprimida)',
+'rev-deleted-user-contribs' => "[nom d'utilizaire o adreça IP suprimida - modificacion amagada sus las contribucions]",
+'rev-deleted-text-permission' => "Aquesta version de la pagina es estada '''escafada'''.
+I pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
+'rev-deleted-text-unhide' => "Aquesta version de la pagina es estada '''escafada'''.
+I pòt aver mai de detalhs dins [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lo jornal dels escafaments].
+Coma administrator, podètz encara [$1 veire aquesta version] s'o volètz.",
+'rev-suppressed-text-unhide' => "Aquesta version de la pagina es estada '''suprimida'''.
+I pòt aver mai de detalhs dins [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lo jornal de las supressions].
+Coma administrator, podètz encara [$1 veire aquesta version] s'o volètz.",
+'rev-deleted-text-view' => "Aquesta version de la pagina es estada '''escafada'''.
+En tant qu’administrator, la podètz visualizar ; i pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
+'rev-suppressed-text-view' => "Aquesta version de la pagina es estada '''suprimida'''.
+En tant qu’administrator, la podètz visualizar ; i pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
+'rev-deleted-no-diff' => "Podètz pas veire aquesta dif per que una de las versions es estada '''escafada'''.
+I pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
+'rev-suppressed-no-diff' => "Pod�tz pas veire aquesta difer�ncia perque una de las revisions es estada '''suprimida'''.",
+'rev-deleted-unhide-diff' => "Una de las revisions d'aquesta diferéncia es estada '''escafada'''.
+I pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].
+En tant qu'administrator, podètz encara [$1 veire aquesta diferéncia] se volètz.",
+'rev-suppressed-unhide-diff' => "Una de las revisions d'aqueste diff es estada '''suprimida'''.
+I pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].
+En tant qu'administrator, podètz totjorn [$1 veire aqueste diff] se volètz contunhar.",
+'rev-deleted-diff-view' => "Una de las revisions d'aquesta diff es estada '''suprimida'''.
+En tant qu'administrator podètz veire aquesta diff ; i pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
+'rev-suppressed-diff-view' => "Una de las revisions d'aquesta diff es estada '''escafada'''.
+En tant qu'administrator podètz veire aquesta diff ; i pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
+'rev-delundel' => 'afichar/amagar',
+'rev-showdeleted' => 'afichar',
+'revisiondelete' => 'Suprimir/Restablir de versions',
+'revdelete-nooldid-title' => 'Cibla per la revision invalida',
+'revdelete-nooldid-text' => "Avètz pas precisat la o las revision(s) cibla(s) per utilizar aquesta foncion, la revision cibla existís pas, o alara la revision cibla es la qu'es en cors.",
+'revdelete-nologtype-title' => 'Cap de tipe de jornal pas balhat',
+'revdelete-nologtype-text' => 'Avètz pas especificat un tipe de jornal sul qual aquesta accion deu èsser realizada.',
+'revdelete-nologid-title' => 'Entrada del jornal invalida',
+'revdelete-nologid-text' => 'Siá avètz pas especificat un eveniment del jornal sul qual aquesta accion se deu realizar, siá existís pas.',
+'revdelete-no-file' => 'Lo fichièr especificat existís pas.',
+'revdelete-show-file-confirm' => 'Sètz segur(a) que volètz veire la revision suprimida del fichièr « <nowiki>$1</nowiki> » datant del $2 a $3?',
+'revdelete-show-file-submit' => 'Òc',
+'revdelete-selected' => "'''{{PLURAL:$2|Version seleccionada|Versions seleccionadas}} de [[:$1]] :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Eveniment d'istoric seleccionat|Eveniments d'istoric seleccionats}} :'''",
+'revdelete-text' => "'''Las revisions e eveniments suprimits apareisseràn encara dins l’istoric e los jornals de la pagina, mas lor contengut textual serà inaccessible al public.'''
+D’autres administrators sus {{SITENAME}} poiràn totjorn accedir al contengut amagat e lo restablir tornamai a travèrs d'aquesta meteissa interfàcia, a mens qu’una restriccion suplementària siá mesa en plaça pels operators del site.",
+'revdelete-confirm' => "Confirmatz que volètz efectuar aquesta accion, que ne comprenètz las consequéncias, e qu'o fasètz en acòrd amb [[{{MediaWiki:Policy-url}}|las règlas]].",
+'revdelete-suppress-text' => "La supression deu èsser utilizada '''sonque''' dins los cases seguents :
* Informacions personalas inapropriadas
*: ''adreça, numèro de telefòn, numèro de seguretat sociala, ...''",
-'revdelete-legend' => 'Metre en plaça de restriccions de version :',
-'revdelete-hide-text' => 'Amagar lo tèxte de la version',
-'revdelete-hide-name' => 'Amagar l’accion e la cibla',
-'revdelete-hide-comment' => 'Amagar lo comentari de modificacion',
-'revdelete-hide-user' => 'Amagar lo pseudonim o l’adreça IP del contributor.',
-'revdelete-hide-restricted' => 'Suprimir aquestas donadas als administrators e mai als autres',
-'revdelete-suppress' => 'Suprimir las donadas dels administrators e tanben dels autres utilizaires',
-'revdelete-hide-image' => 'Amagar lo contengut del fichièr',
-'revdelete-unsuppress' => 'Levar las restriccions sus las versions restablidas',
-'revdelete-log' => 'Motiu :',
-'revdelete-submit' => 'Aplicar a la version seleccionada',
-'revdelete-logentry' => 'La visibilitat de la version es estada modificada per [[$1]]',
-'logdelete-logentry' => 'La visibilitat de l’eveniment es estada modificada per [[$1]]',
-'revdelete-success' => "'''Visibilitat de las versions mesas a jorn amb succès.'''",
-'logdelete-success' => "'''Jornal de las visibilitat parametrat amb succès.'''",
-'revdel-restore' => 'Modificar la visibilitat',
-'pagehist' => 'Istoric de la pagina',
-'deletedhist' => 'Istoric de las supressions',
-'revdelete-content' => 'contengut',
-'revdelete-summary' => 'modificar lo somari',
-'revdelete-uname' => 'nom d’utilizaire',
-'revdelete-restricted' => 'aplicar las restriccions als administrators',
-'revdelete-unrestricted' => 'restriccions levadas pels administrators',
-'revdelete-hid' => 'amagar $1',
-'revdelete-unhid' => 'afichar $1',
-'revdelete-log-message' => '$1 per $2 {{PLURAL:$2|revision|revisions}}',
-'logdelete-log-message' => '$1 sus $2 {{PLURAL:$2|eveniment|eveniments}}',
+'revdelete-legend' => 'Metre en plaça de restriccions de version :',
+'revdelete-hide-text' => 'Amagar lo tèxte de la version',
+'revdelete-hide-image' => 'Amagar lo contengut del fichièr',
+'revdelete-hide-name' => 'Amagar l’accion e la cibla',
+'revdelete-hide-comment' => 'Amagar lo comentari de modificacion',
+'revdelete-hide-user' => 'Amagar lo pseudonim o l’adreça IP del contributor.',
+'revdelete-hide-restricted' => 'Suprimir aquestas donadas als administrators e mai als autres',
+'revdelete-radio-same' => '(cambiar pas)',
+'revdelete-radio-set' => 'Òc',
+'revdelete-radio-unset' => 'Non',
+'revdelete-suppress' => 'Suprimir las donadas dels administrators e tanben dels autres utilizaires',
+'revdelete-unsuppress' => 'Levar las restriccions sus las versions restablidas',
+'revdelete-log' => 'Motiu :',
+'revdelete-submit' => 'Aplicar {{PLURAL:$1|a la version seleccionada|a las versions seleccionadas}}',
+'revdelete-logentry' => 'La visibilitat de la version es estada modificada per [[$1]]',
+'logdelete-logentry' => 'La visibilitat de l’eveniment es estada modificada per [[$1]]',
+'revdelete-success' => "'''Visibilitat de las versions mesas a jorn amb succès.'''",
+'revdelete-failure' => "'''La visibilitat de la revision a pas pogut èsser mesa a jorn :'''
+$1",
+'logdelete-success' => "'''Jornal de las visibilitat parametrat amb succès.'''",
+'logdelete-failure' => "'''La visibilitat del jornal a pas pogut èsser definida :'''
+$1",
+'revdel-restore' => 'Modificar la visibilitat',
+'pagehist' => 'Istoric de la pagina',
+'deletedhist' => 'Istoric de las supressions',
+'revdelete-content' => 'contengut',
+'revdelete-summary' => 'modificar lo somari',
+'revdelete-uname' => 'nom d’utilizaire',
+'revdelete-restricted' => 'aplicar las restriccions als administrators',
+'revdelete-unrestricted' => 'restriccions levadas pels administrators',
+'revdelete-hid' => 'amagar $1',
+'revdelete-unhid' => 'afichar $1',
+'revdelete-log-message' => '$1 per $2 {{PLURAL:$2|revision|revisions}}',
+'logdelete-log-message' => '$1 sus $2 {{PLURAL:$2|eveniment|eveniments}}',
+'revdelete-hide-current' => "Error al moment de la supression de l'element datat del $1 e $2 : es la revision correnta.
+Pòt pas èsser suprimit.",
+'revdelete-show-no-access' => "Error al moment de l'afichatge de l'element datat del $1 e $2 : es marcat coma « restrench ».
+I avètz pas accès.",
+'revdelete-modify-no-access' => "Error al moment de la modificacion de l'element datat del $1 a $2 : es marcat coma « restrench ».
+I avètz pas accès.",
+'revdelete-modify-missing' => "Error al moment de la modificacion de l'element amb l'ID $1 : es mancant dins la banca de donadas !",
+'revdelete-no-change' => "'''Atencion :''' l'element datat del $1 a $2 ja a los paramètres de visibilitat demandats.",
+'revdelete-concurrent-change' => "Error al moment de la modificacion de l'element datat del $1 a $2 : son estatut es estat cambiat per qualqu'un mai pendent qu'o modificatz.
+Verificatz los jornals.",
+'revdelete-only-restricted' => "Error al moment de la supression de l'entrada datada del $1 a $2 : podètz pas suprimir aqueles elements als administrators sens seleccionar tanben d'opcions de supression mai.",
+'revdelete-reason-dropdown' => "* Rasons correntas de supression
+** Violacion dels dreches d'autors
+** Entresenhas personalas inapropriadas",
+'revdelete-otherreason' => 'Autra rason / rason suplementària :',
+'revdelete-reasonotherlist' => 'Autra rason',
+'revdelete-edit-reasonlist' => 'Modifica los motius de la supression',
+'revdelete-offender' => 'Autor de la revision :',
# Suppression log
'suppressionlog' => 'Jornal de las supressions',
@@ -1069,67 +1169,13 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
'mergelogpagetext' => "Vaquí, çaijós, la lista de las fusions las mai recentas de l'istoric d'una pagina amb una autra.",
# Diffs
-'history-title' => 'Istoric de las versions de « $1 »',
-'difference' => '(Diferéncias entre las versions)',
-'lineno' => 'Linha $1 :',
-'compareselectedversions' => 'Comparar las versions seleccionadas',
-'visualcomparison' => 'Comparason visuala',
-'wikicodecomparison' => 'Comparason del wikitèxt',
-'editundo' => 'desfar',
-'diff-multi' => '({{PLURAL:$1|Una revision intermediària amagada|$1 revisions intermediàrias amagadas}})',
-'diff-movedto' => 'desplaçat cap a $1',
-'diff-styleadded' => 'estil $1 apondut',
-'diff-added' => '$1 apondut',
-'diff-changedto' => 'cambiat cap a $1',
-'diff-movedoutof' => 'desplaçat en defòra de $1',
-'diff-styleremoved' => 'estil $1 levat',
-'diff-removed' => '$1 levat',
-'diff-changedfrom' => 'cambiat dempuèi $1',
-'diff-src' => 'font',
-'diff-withdestination' => 'amb la destinacion $1',
-'diff-with' => '&#32;amb $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'largor',
-'diff-height' => 'nautor',
-'diff-p' => "un '''paragraf'''",
-'diff-blockquote' => "una '''citacion'''",
-'diff-h1' => "una '''entèsta (nivèl 1)'''",
-'diff-h2' => "una '''entèsta (nivèl 2)'''",
-'diff-h3' => "una '''entèsta (nivèl 3)'''",
-'diff-h4' => "una '''entèsta (nivèl 4)'''",
-'diff-h5' => "una '''entèsta (nivèl 5)'''",
-'diff-pre' => "un '''blòt preformatat'''",
-'diff-div' => "una '''division'''",
-'diff-ul' => "una '''tièra pas ordenada'''",
-'diff-ol' => "una '''tièra ordenada'''",
-'diff-li' => "una '''tièra d’articles'''",
-'diff-table' => "un '''tablèu'''",
-'diff-tbody' => "un '''contengut d’un tablèu'''",
-'diff-tr' => "una '''linha'''",
-'diff-td' => "una '''cellula'''",
-'diff-th' => "una '''entèsta'''",
-'diff-br' => "una '''rompedura'''",
-'diff-hr' => "una '''règla orizontala'''",
-'diff-code' => "un '''blòt de còde d’ordenador'''",
-'diff-dl' => "una '''tièra de definicion'''",
-'diff-dt' => "un '''tèrme de definicion'''",
-'diff-dd' => "una '''definicion'''",
-'diff-input' => "una '''entrada'''",
-'diff-form' => "un '''formulari'''",
-'diff-img' => "un '''imatge'''",
-'diff-span' => "una '''portada'''",
-'diff-a' => "un '''ligam'''",
-'diff-i' => "'''italica'''",
-'diff-b' => "'''gras'''",
-'diff-strong' => "'''fòrt'''",
-'diff-em' => "'''emfasi'''",
-'diff-font' => "'''poliça'''",
-'diff-big' => "'''grand'''",
-'diff-del' => "'''suprimit'''",
-'diff-tt' => "'''largor fixada'''",
-'diff-sub' => "'''sosescripte'''",
-'diff-sup' => "'''susescripte'''",
-'diff-strike' => "'''barrat al travèrs'''",
+'history-title' => 'Istoric de las versions de « $1 »',
+'difference' => '(Diferéncias entre las versions)',
+'lineno' => 'Linha $1 :',
+'compareselectedversions' => 'Comparar las versions seleccionadas',
+'showhideselectedversions' => 'Afichar/amagar las versions seleccionadas',
+'editundo' => 'desfar',
+'diff-multi' => '({{PLURAL:$1|Una revision intermediària amagada|$1 revisions intermediàrias amagadas}})',
# Search results
'searchresults' => 'Resultats de la recèrca',
@@ -1137,29 +1183,25 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
'searchresulttext' => "Per mai d'informacions sus la recèrca dins {{SITENAME}}, vejatz [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => "Avètz recercat « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totas las paginas que començan per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totas las paginas qu'an un ligam cap a « $1 »]])",
'searchsubtitleinvalid' => 'Avètz recercat « $1 »',
-'noexactmatch' => "'''Cap de pagina amb lo títol « $1 » existís pas.
-''' Podètz [[:$1|crear aqueste article]].",
-'noexactmatch-nocreate' => "'''I a pas de pagina intitolada « $1 ».'''",
'toomanymatches' => 'Tròp d’ocuréncias son estadas trobadas, sètz pregat de sometre una requèsta diferenta.',
'titlematches' => "Correspondéncias dins los títols d'articles",
'notitlematches' => "Cap de títol d'article correspond pas a la recèrca.",
'textmatches' => "Correspondéncias dins los tèxtes d'articles",
'notextmatches' => "Cap de tèxte d'article correspond pas a la recèrca",
-'prevn' => '$1 precedents',
-'nextn' => '$1 seguents',
+'prevn' => '{{PLURAL:$1|precedenta|$1 precedentas}}',
+'nextn' => '{{PLURAL:$1|seguenta|$1 seguentas}}',
'prevn-title' => '$1 {{PLURAL:$1|resultat precedent|resultats precedents}}',
'nextn-title' => '$1 {{PLURAL:$1|resultat seguent|resultats seguents}}',
'shown-title' => 'Afichar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
-'viewprevnext' => 'Veire ($1) ($2) ($3).',
+'viewprevnext' => 'Veire ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opcions de recèrca',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
'searchmenu-new' => "'''Crear la pagina ''[[:$1|$1]]'' sus aqueste wiki !'''",
'searchhelp-url' => 'Help:Acuèlh',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Recercar las paginas amb aqueste prefix]]',
'searchprofile-articles' => 'Paginas de contengut',
-'searchprofile-articles-and-proj' => 'Paginas de contengut e projècte',
-'searchprofile-project' => 'Paginas del projècte',
-'searchprofile-images' => 'Fichièrs',
+'searchprofile-project' => "Paginas d'ajuda e del projècte",
+'searchprofile-images' => 'Multimèdia',
'searchprofile-everything' => 'Tot',
'searchprofile-advanced' => 'Avançat',
'searchprofile-articles-tooltip' => 'Recercar dins $1',
@@ -1167,8 +1209,6 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
'searchprofile-images-tooltip' => 'Recercar de fichièrs',
'searchprofile-everything-tooltip' => 'Recercar dins tot lo contengut (tot incluissent las paginas de discussion)',
'searchprofile-advanced-tooltip' => "Recercar dins d'espacis de noms personalizats",
-'prefs-search-nsdefault' => 'Recèrca en utilizant los espacis de noms per defaut :',
-'prefs-search-nscustom' => 'Recercar en utilizant los espacis de noms personalizats :',
'search-result-size' => '$1 ({{PLURAL:$2|1 mot|$2 mots}})',
'search-result-score' => 'Pertinéncia : $1%',
'search-redirect' => '(redireccion cap a $1)',
@@ -1181,11 +1221,12 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
'search-mwsuggest-disabled' => 'sens suggestion',
'search-relatedarticle' => 'Relatat',
'mwsuggest-disable' => 'Desactivar las suggestions AJAX',
+'searcheverything-enable' => 'Recercar dins totes los espacis de noms',
'searchrelated' => 'relatat',
'searchall' => 'Totes',
'showingresults' => "Afichatge {{PLURAL:$1|d''''1''' resultat|de '''$1''' resultats}} a partir del #'''$2'''.",
'showingresultsnum' => "Afichatge {{PLURAL:$3|d''''1''' resultat|de '''$3''' resultats}} a partir del #'''$2'''.",
-'showingresultstotal' => "Visionament çaijós {{PLURAL:$4|del resultat '''$1''' de '''$3'''|dels resultats de '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1'''|Resultats '''$1 - $2'''}} de '''$3''' per '''$4'''",
'nonefound' => "<strong>Nòta</strong>: Sonque qualques espacis de noms son recercats per defaut
Ensajatz en utilizant lo prefix ''all:'' per recercar tot lo contengut (tot incluent las paginas de discussion, los modèls, etc), o utilizatz l'espaci de nom coma prefix.",
'search-nonefound' => 'I a pas cap de resultat correspondent a la requèsta.',
@@ -1194,113 +1235,151 @@ Ensajatz en utilizant lo prefix ''all:'' per recercar tot lo contengut (tot incl
'powersearch-ns' => 'Recercar dins los espacis de nom :',
'powersearch-redir' => 'Lista de las redireccions',
'powersearch-field' => 'Recercar',
+'powersearch-togglelabel' => 'Marcar :',
+'powersearch-toggleall' => 'Tot',
+'powersearch-togglenone' => 'Pas cap',
'search-external' => 'Recèrca extèrna',
'searchdisabled' => 'La recèrca sus {{SITENAME}} es desactivada.
En esperant la reactivacion, podètz efectuar una recèrca via Google.
Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
+# Quickbar
+'qbsettings' => "Barra d'espleches",
+'qbsettings-none' => 'Cap',
+'qbsettings-fixedleft' => 'Esquèrra',
+'qbsettings-fixedright' => 'Drecha',
+'qbsettings-floatingleft' => 'Flotanta a esquèrra',
+'qbsettings-floatingright' => 'Flotanta a drecha',
+
# Preferences page
-'preferences' => 'Preferéncias',
-'mypreferences' => 'Mas preferéncias',
-'prefs-edits' => 'Nombre d’edicions :',
-'prefsnologin' => 'Vos sètz pas identificat(ada)',
-'prefsnologintext' => 'Vos cal èsser <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} connectat(ada)]</span> per modificar vòstras preferéncias d’utilizaire.',
-'prefsreset' => 'Las preferéncias son estadas restablidas a partir de la version enregistrada.',
-'qbsettings' => "Barra d'espleches",
-'qbsettings-none' => 'Cap',
-'qbsettings-fixedleft' => 'Esquèrra',
-'qbsettings-fixedright' => 'Drecha',
-'qbsettings-floatingleft' => 'Flotanta a esquèrra',
-'qbsettings-floatingright' => 'Flotanta a drecha',
-'changepassword' => 'Modificacion del senhal',
-'skin' => 'Aparéncia',
-'skin-preview' => 'Previsualizar',
-'math' => 'Rendut de las matas',
-'dateformat' => 'Format de data',
-'datedefault' => 'Cap de preferéncia',
-'datetime' => 'Data e ora',
-'math_failure' => 'Error matas',
-'math_unknown_error' => 'error indeterminada',
-'math_unknown_function' => 'foncion desconeguda',
-'math_lexing_error' => 'error lexicala',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => 'La conversion en PNG a pas capitat ; verificatz l’installacion de Latex, dvips, gs e convert',
-'math_bad_tmpdir' => 'Impossible de crear o d’escriure dins lo repertòri math temporari',
-'math_bad_output' => 'Impossible de crear o d’escriure dins lo repertòri math de sortida',
-'math_notexvc' => 'L’executable « texvc » es introbable. Legissètz math/README per lo configurar.',
-'prefs-personal' => 'Entresenhas personalas',
-'prefs-rc' => 'Darrièrs cambiaments',
-'prefs-watchlist' => 'Lista de seguiment',
-'prefs-watchlist-days' => "Nombre de jorns d'afichar dins la lista de seguiment :",
-'prefs-watchlist-days-max' => '(maximum 7 jorns)',
-'prefs-watchlist-edits' => "Nombre de modificacions d'afichar dins la lista de seguiment espandida :",
-'prefs-watchlist-edits-max' => '(nombre maximum : 1000)',
-'prefs-misc' => 'Preferéncias divèrsas',
-'prefs-resetpass' => 'Modificar lo senhal',
-'saveprefs' => 'Enregistrar las preferéncias',
-'resetprefs' => 'Restablir las preferéncias',
-'restoreprefs' => 'Restablir totas las valors per defaut',
-'textboxsize' => 'Fenèstra de modificacion',
-'prefs-edit-boxsize' => 'Talha de la fenèstra de modificacion.',
-'rows' => 'Rengadas :',
-'columns' => 'Colomnas :',
-'searchresultshead' => 'Recèrca',
-'resultsperpage' => 'Nombre de responsas per pagina :',
-'contextlines' => 'Nombre de linhas per responsa :',
-'contextchars' => 'Nombre de caractèrs de contèxte per linha :',
-'stub-threshold' => 'Limit superior pels <a href="#" class="stub">ligams cap als esbòsses</a> (octets) :',
-'recentchangesdays' => "Nombre de jorns d'afichar dins los darrièrs cambiaments :",
-'recentchangesdays-max' => '(maximum $1 {{PLURAL:$1|jorn|jorns}})',
-'recentchangescount' => "Nombre de modificacions d'afichar dins los darrièrs cambiaments, paginas d'istorics e d'operacions, per defaut :",
-'savedprefs' => 'Las preferéncias son estadas salvadas.',
-'timezonelegend' => 'Fus orari :',
-'timezonetext' => '¹Nombre d’oras de decalatge entre vòstra ora locala e l’ora del servidor (UTC).',
-'localtime' => 'Ora locala :',
-'timezoneselect' => 'Zòna orària :',
-'timezoneuseserverdefault' => 'Utilizar la valor del servidor',
-'timezoneuseoffset' => 'Autre (especificar lo descalatge)',
-'timezoneoffset' => 'Decalatge orari¹ :',
-'servertime' => 'Ora del servidor :',
-'guesstimezone' => 'Utilizar la valor del navigador',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antartica',
-'timezoneregion-arctic' => 'Artic',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ocean Atlantic',
-'timezoneregion-australia' => 'Austràlia',
-'timezoneregion-europe' => 'Euròpa',
-'timezoneregion-indian' => 'Ocean Indian',
-'timezoneregion-pacific' => 'Ocean Pacific',
-'allowemail' => 'Autorizar lo mandadís de corrièr electronic venent d’autres utilizaires',
-'prefs-searchoptions' => 'Opcions de recèrca',
-'prefs-namespaces' => 'Noms d’espacis',
-'defaultns' => 'Per defaut, recercar dins aquestes espacis :',
-'default' => 'defaut',
-'files' => 'Fichièrs',
-'prefs-custom-css' => 'CSS personalizat',
-'prefs-custom-js' => 'JS personalizat',
+'preferences' => 'Preferéncias',
+'mypreferences' => 'Mas preferéncias',
+'prefs-edits' => 'Nombre d’edicions :',
+'prefsnologin' => 'Vos sètz pas identificat(ada)',
+'prefsnologintext' => 'Vos cal èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} connectat(ada)]</span> per modificar vòstras preferéncias d’utilizaire.',
+'changepassword' => 'Modificacion del senhal',
+'prefs-skin' => 'Aparéncia',
+'skin-preview' => 'Previsualizar',
+'prefs-math' => 'Rendut de las matas',
+'datedefault' => 'Cap de preferéncia',
+'prefs-datetime' => 'Data e ora',
+'prefs-personal' => 'Entresenhas personalas',
+'prefs-rc' => 'Darrièrs cambiaments',
+'prefs-watchlist' => 'Lista de seguiment',
+'prefs-watchlist-days' => "Nombre de jorns d'afichar dins la lista de seguiment :",
+'prefs-watchlist-days-max' => '(maximum 7 jorns)',
+'prefs-watchlist-edits' => "Nombre de modificacions d'afichar dins la lista de seguiment espandida :",
+'prefs-watchlist-edits-max' => '(nombre maximum : 1000)',
+'prefs-watchlist-token' => 'Geton per la lista de seguiment :',
+'prefs-misc' => 'Preferéncias divèrsas',
+'prefs-resetpass' => 'Modificar lo senhal',
+'prefs-email' => 'Opcions del corrièr electronic',
+'prefs-rendering' => 'Aparéncia',
+'saveprefs' => 'Enregistrar las preferéncias',
+'resetprefs' => 'Restablir las preferéncias',
+'restoreprefs' => 'Restablir totas las valors per defaut',
+'prefs-editing' => 'Fenèstra de modificacion',
+'prefs-edit-boxsize' => 'Talha de la fenèstra de modificacion.',
+'rows' => 'Rengadas :',
+'columns' => 'Colomnas :',
+'searchresultshead' => 'Recèrca',
+'resultsperpage' => 'Nombre de responsas per pagina :',
+'contextlines' => 'Nombre de linhas per responsa :',
+'contextchars' => 'Nombre de caractèrs de contèxte per linha :',
+'stub-threshold' => 'Limit superior pels <a href="#" class="stub">ligams cap als esbòsses</a> (octets) :',
+'recentchangesdays' => "Nombre de jorns d'afichar dins los darrièrs cambiaments :",
+'recentchangesdays-max' => '(maximum $1 {{PLURAL:$1|jorn|jorns}})',
+'recentchangescount' => "Nombre de modificacions d'afichar per defaut :",
+'prefs-help-recentchangescount' => 'Aquò inclutz las modificacions recentas, las paginas d’istorics e los jornals.',
+'prefs-help-watchlist-token' => 'Emplenar aquò amb una valor secreta generarà un flux RSS per vòstra lista de seguiment.
+Tota persona que coneis aqueste geton poirà legir vòstra lista de seguiment, causissètz doncas una valor securizada.
+Vaquí una valor generada aleatòriament que podètz utilizar : $1',
+'savedprefs' => 'Las preferéncias son estadas salvadas.',
+'timezonelegend' => 'Fus orari :',
+'localtime' => 'Ora locala :',
+'timezoneuseserverdefault' => 'Utilizar la valor del servidor',
+'timezoneuseoffset' => 'Autre (especificar lo descalatge)',
+'timezoneoffset' => 'Decalatge orari¹ :',
+'servertime' => 'Ora del servidor :',
+'guesstimezone' => 'Utilizar la valor del navigador',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antartica',
+'timezoneregion-arctic' => 'Artic',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Ocean Atlantic',
+'timezoneregion-australia' => 'Austràlia',
+'timezoneregion-europe' => 'Euròpa',
+'timezoneregion-indian' => 'Ocean Indian',
+'timezoneregion-pacific' => 'Ocean Pacific',
+'allowemail' => 'Autorizar lo mandadís de corrièr electronic venent d’autres utilizaires',
+'prefs-searchoptions' => 'Opcions de recèrca',
+'prefs-namespaces' => 'Noms d’espacis',
+'defaultns' => 'Autrament recercar dins aquestes espacis de noms :',
+'default' => 'defaut',
+'prefs-files' => 'Fichièrs',
+'prefs-custom-css' => 'CSS personalizat',
+'prefs-custom-js' => 'JS personalizat',
+'prefs-reset-intro' => 'Podètz utilizar aquesta pagina per restablir vòstras preferéncias a las valors per defaut del site. Aquò pòt pas èsser desfach.',
+'prefs-emailconfirm-label' => 'Confirmacion del corrièr electronic :',
+'prefs-textboxsize' => 'Talha de la fenèstra de modificacion',
+'youremail' => 'Adreça de corrièr electronic :',
+'username' => "Nom de l'utilizaire :",
+'uid' => 'Numèro de l’utilizaire :',
+'prefs-memberingroups' => 'Membre {{PLURAL:$1|del grop|dels gropes}} :',
+'prefs-registration' => 'Data de creacion del compte :',
+'yourrealname' => 'Nom vertadièr :',
+'yourlanguage' => "Lenga de l'interfàcia :",
+'yourvariant' => 'Varianta lingüistica :',
+'yournick' => 'Signatura per las discussions :',
+'prefs-help-signature' => 'Los comentaris sus las paginas de discussion devon èsser signats amb « <nowiki>~~~~</nowiki> », que serà convertit en vòstra signatura e un orodatament.',
+'badsig' => 'Signatura bruta incorrècta, verificatz vòstras balisas HTML.',
+'badsiglength' => 'Vòstra signatura es tròp longa.
+Deu aver, al maximum $1 caractèr{{PLURAL:$1||s}}.',
+'yourgender' => 'Sèxe :',
+'gender-unknown' => 'Pas entresenhat',
+'gender-male' => 'Masculin',
+'gender-female' => 'Femenin',
+'prefs-help-gender' => "Opcional : utilizat pels acòrdis dins l'interfàcia del logicial. Aquesta informacion serà publica.",
+'email' => 'Corrièr electronic',
+'prefs-help-realname' => "(facultatiu) : se l'especificatz, serà utilizat per vos atribuir vòstras contribucions.",
+'prefs-help-email' => "L’adreça de corrièr electronic es facultativa mas permet de vos far adreçar vòstre senhal s'o doblidatz.
+Tanben podètz causir de permetre a d’autres de vos contactar amb l'ajuda de vòstra pagina d’utilizaire principala o la de discussion sens aver besonh de revelar vòstra idenditat.",
+'prefs-help-email-required' => 'Una adreça de corrièr electronic es requesa.',
+'prefs-info' => 'Informacion de basa',
+'prefs-i18n' => 'Internationalizacion',
+'prefs-signature' => 'Signatura',
+'prefs-dateformat' => 'Format de las datas',
+'prefs-timeoffset' => 'Descalatge orari',
+'prefs-advancedediting' => 'Opcions avançadas',
+'prefs-advancedrc' => 'Opcions avançadas',
+'prefs-advancedrendering' => 'Opcions avançadas',
+'prefs-advancedsearchoptions' => 'Opcions avançadas',
+'prefs-advancedwatchlist' => 'Opcions avançadas',
+'prefs-display' => "Opcions d'afichatge",
+'prefs-diffs' => 'Diferéncias',
# User rights
-'userrights' => "Gestion dels dreches d'utilizaire", # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => "Gestion dels dreches d'utilizaire",
-'userrights-user-editname' => 'Entrar un nom d’utilizaire :',
-'editusergroup' => "Modificacion dels gropes d'utilizaires",
-'editinguser' => "Cambiament dels dreches de l'utilizaire '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modificar los gropes de l’utilizaire',
-'saveusergroups' => "Salvar los gropes d'utilizaires",
-'userrights-groupsmember' => 'Membre de :',
-'userrights-groups-help' => "Podètz modificar los gropes alsquals aparten aqueste utilizaire.
+'userrights' => "Gestion dels dreches d'utilizaire",
+'userrights-lookup-user' => "Gestion dels dreches d'utilizaire",
+'userrights-user-editname' => 'Entrar un nom d’utilizaire :',
+'editusergroup' => "Modificacion dels gropes d'utilizaires",
+'editinguser' => "Cambiament dels dreches de l'utilizaire '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modificar los gropes de l’utilizaire',
+'saveusergroups' => "Salvar los gropes d'utilizaires",
+'userrights-groupsmember' => 'Membre de :',
+'userrights-groupsmember-auto' => 'Membre implicit de :',
+'userrights-groups-help' => "Podètz modificar los gropes alsquals aparten aqueste utilizaire.
* Una casa marcada significa que l'utilizaire se tròba dins aqueste grop.
* Una casa pas marcada significa, al contrari, que s’i tròba pas.
* Una * indica que podretz pas levar aqueste grop un còp que l'auretz apondut e vice-versa.",
-'userrights-reason' => 'Motiu :',
-'userrights-no-interwiki' => "Sètz pas abilitat per modificar los dreches dels utilizaires sus d'autres wikis.",
-'userrights-nodatabase' => 'La banca de donadas « $1 » existís pas o es pas en local.',
-'userrights-nologin' => "Vos cal [[Special:UserLogin|vos connectar]] amb un compte d'administrator per balhar los dreches d'utilizaire.",
-'userrights-notallowed' => "Vòstre compte es pas abilitat per modificar de dreches d'utilizaire.",
-'userrights-changeable-col' => 'Los gropes que podètz cambiar',
-'userrights-unchangeable-col' => 'Los gropes que podètz pas cambiar',
+'userrights-reason' => 'Motiu :',
+'userrights-no-interwiki' => "Sètz pas abilitat per modificar los dreches dels utilizaires sus d'autres wikis.",
+'userrights-nodatabase' => 'La banca de donadas « $1 » existís pas o es pas en local.',
+'userrights-nologin' => "Vos cal [[Special:UserLogin|vos connectar]] amb un compte d'administrator per balhar los dreches d'utilizaire.",
+'userrights-notallowed' => "Vòstre compte es pas abilitat per modificar de dreches d'utilizaire.",
+'userrights-changeable-col' => 'Los gropes que podètz cambiar',
+'userrights-unchangeable-col' => 'Los gropes que podètz pas cambiar',
# Groups
'group' => 'Grop :',
@@ -1353,6 +1432,7 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'right-bigdelete' => "Suprimir de paginas amb d'istorics grands",
'right-deleterevision' => "Suprimir e restablir una revision especifica d'una pagina",
'right-deletedhistory' => 'Veire las entradas dels istorics suprimits mas sens lor tèxte',
+'right-deletedtext' => 'Veire lo tèxte suprimit e las diferéncias entre las versions suprimidas',
'right-browsearchive' => 'Recercar de paginas suprimidas',
'right-undelete' => 'Restablir una pagina',
'right-suppressrevision' => 'Examinar e restablir las revisions amagadas als administrators',
@@ -1366,6 +1446,8 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'right-editprotected' => 'Modificar las paginas protegidas (sens proteccion en cascada)',
'right-editinterface' => "Modificar l'interfàcia d'utilizaire",
'right-editusercssjs' => "Modificar los fichièrs CSS e JS d'autres utilizaires",
+'right-editusercss' => "Modificar los fichièrs CSS d'autres utilizaires",
+'right-edituserjs' => "Modificar los fichièrs JS d'autres utilizaires",
'right-rollback' => "Revocacion rapida del darrièr utilizaire qu'a modificat una pagina particulara",
'right-markbotedits' => 'Marcar los cambiaments revocats coma de cambiaments que son estats fachs per de robòts',
'right-noratelimit' => 'Pas afectat pels limits de taus',
@@ -1382,6 +1464,8 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'right-siteadmin' => 'Varrolhar e desvarrolhar la banca de donadas',
'right-reset-passwords' => "Cambiar lo senhal d'autres utilizaires",
'right-override-export-depth' => 'Exportar las paginas en incluent las paginas ligadas fins a una prigondor de 5 nivèls',
+'right-versiondetail' => 'Vejatz las entresenhas espandidas sus las versions dels logicials',
+'right-sendemail' => 'Mandar un corrièl als autres utilizaires',
# User rights log
'rightslog' => "Istoric de las modificacions d'estatut",
@@ -1431,6 +1515,15 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'recentchanges-legend' => 'Opcions dels darrièrs cambiaments',
'recentchangestext' => 'Vaquí sus aquesta pagina, los darrièrs cambiaments de {{SITENAME}}.',
'recentchanges-feed-description' => "Seguissètz los darrièrs cambiaments d'aqueste wiki dins un flux.",
+'recentchanges-label-legend' => 'Legenda : $1.',
+'recentchanges-legend-newpage' => '$1 - pagina novèla',
+'recentchanges-label-newpage' => 'Aquesta modificacion a creat una pagina novèla',
+'recentchanges-legend-minor' => '$1 - cambiament menor',
+'recentchanges-label-minor' => 'Aqueste cambiament es menor',
+'recentchanges-legend-bot' => '$1 - cambiament fach per un robòt',
+'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
+'recentchanges-legend-unpatrolled' => '$1 - modificacion pas patrolhada',
+'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
'rcnote' => 'Vaquí {{PLURAL:$1|lo darrièr cambiament|los $1 darrièrs cambiaments}} dempuèi {{PLURAL:$2|lo darrièr jorn|los <b>$2</b> darrièrs jorns}}, determinat{{PLURAL:$1||s}} lo $4, a $5.',
'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
@@ -1457,6 +1550,8 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
# Recent changes linked
'recentchangeslinked' => 'Seguit dels ligams',
+'recentchangeslinked-feed' => 'Seguit dels ligams',
+'recentchangeslinked-toolbox' => 'Seguit dels ligams',
'recentchangeslinked-title' => 'Seguit dels ligams associats a "$1"',
'recentchangeslinked-noresult' => 'Cap de cambiament sus las paginas ligadas pendent lo periòde causit.',
'recentchangeslinked-summary' => "Aquesta pagina especiala fa veire los darrièrs cambiaments sus las paginas que son ligadas. Las paginas de [[Special:Watchlist|vòstra tièra de seguit]] son '''en gras'''.",
@@ -1466,8 +1561,8 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
# Upload
'upload' => 'Importar un fichièr',
'uploadbtn' => 'Importar un fichièr',
-'reupload' => 'Importar tornarmai',
'reuploaddesc' => 'Anullar lo cargament e tornar al formulari.',
+'upload-tryagain' => 'Mandar la descripcion del fichièr modificada',
'uploadnologin' => 'Vos sètz pas identificat(ada)',
'uploadnologintext' => 'Vos cal èsser [[Special:UserLogin|connectat(ada)]]
per copiar de fichièrs sul servidor.',
@@ -1500,6 +1595,7 @@ Vejatz la [[Special:NewFiles|galariá dels imatges novèls]] per una presentacio
'minlength1' => 'Los noms de fichièrs devon comprendre almens una letra.',
'illegalfilename' => 'Lo nom de fichièr « $1 » conten de caractèrs interdiches dins los títols de paginas. Mercé de lo tornar nomenar e de lo copiar tornarmai.',
'badfilename' => "L'imatge es estat renomenat « $1 ».",
+'filetype-mime-mismatch' => 'L’extension del fichier correspond pas al tipe MIME.',
'filetype-badmime' => 'Los fichièrs del tipe MIME « $1 » pòdon pas èsser importats.',
'filetype-bad-ie-mime' => 'Lo fichièr pòt pas èsser importat perque serià detectat coma « $1 » per Internet Explorer, tipe de fichièr interdich perque potencialament dangierós.',
'filetype-unwanted-type' => "«.$1»''' es un format de fichièr pas desirat.
@@ -1520,7 +1616,6 @@ Per o far, vos caldrà modificar la pagina manualament. [[$1|vinheta]]",
* Nom del fichièr d'importar : '''<tt>[[:$1]]</tt>'''
* Nom del fichièr existent : '''<tt>[[:$2]]</tt>'''
Causissètz-ne un autre.",
-'fileexists-thumb' => "<center>'''Imatge existent'''</center>",
'fileexists-thumbnail-yes' => "Lo fichièr sembla èsser un imatge en talha reducha ''(thumbnail)''. [[$1|thumb]]
Verificatz lo fichièr '''<tt>[[:$1]]</tt>'''.
Se lo fichièr verificat es lo meteis imatge (dins una resolucion melhora), es pas de besonh d’importar una version reducha.",
@@ -1535,6 +1630,7 @@ S'o volètz importar tornamai, tornatz en rèire e importatz-lo jos un autre nom
'file-deleted-duplicate' => "Un fichièr identic a aqueste ([[$1]]) ja es estat suprimit. Vos caldriá verificar lo jornal de las supressions d'aqueste fichièr abans de la tornar telecargar.",
'successfulupload' => 'Importacion capitada',
'uploadwarning' => 'Atencion !',
+'uploadwarning-text' => 'Modificatz la descripcion del fichièr e ensajatz tornarmai.',
'savefile' => 'Salvar lo fichièr',
'uploadedimage' => '«[[$1]]» copiat sul servidor',
'overwroteimage' => 'a importat una version novèla de « [[$1]] »',
@@ -1542,11 +1638,14 @@ S'o volètz importar tornamai, tornatz en rèire e importatz-lo jos un autre nom
'uploaddisabledtext' => "L'impòrt de fichièrs cap al servidor es desactivat.",
'php-uploaddisabledtext' => "Lo telecargament de fichièrs es estat desactivat dins PHP. Verificatz l'opcion de configuracion file_uploads.",
'uploadscripted' => "Aqueste fichièr conten de còde HTML o un escript que poiriá èsser interpretat d'un biais incorrècte per un navigador Internet.",
-'uploadcorrupt' => 'Aqueste fichièr es corromput, a una talha nulla o a una extension invalida. Verificatz lo fichièr.',
'uploadvirus' => 'Aqueste fichièr conten un virús ! Per mai de detalhs, consultatz : $1',
+'upload-source' => 'Fichièr font',
'sourcefilename' => 'Nom del fichièr font :',
+'sourceurl' => 'URL font :',
'destfilename' => 'Nom jolqual lo fichièr serà enregistrat&nbsp;:',
'upload-maxfilesize' => 'Talha maximala del fichièr : $1',
+'upload-description' => 'Descripcion del fichièr',
+'upload-options' => 'Opcions de telecargament',
'watchthisupload' => 'Seguir aqueste fichièr',
'filewasdeleted' => 'Un fichièr amb aqueste nom ja es estat copiat, puèi suprimit. Vos caldriá verificar lo $1 abans de procedir a una còpia novèla.',
'upload-wasdeleted' => "'''Atencion : Sètz a importar un fichièr que ja es estat suprimit deperabans.'''
@@ -1568,14 +1667,45 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- daissatz aquesta linha coma es -->',
-'upload-proto-error' => 'Protocòl incorrècte',
-'upload-proto-error-text' => "L’impòrt requerís d'URLs començant per <code>http://</code> o <code>ftp://</code>.",
-'upload-file-error' => 'Error intèrna',
-'upload-file-error-text' => "Una error intèrna s'es producha en volent crear un fichièr temporari sul servidor. Contactatz un [[Special:ListUsers/sysop|administrator del sistèma]].",
-'upload-misc-error' => 'Error d’impòrt desconeguda',
-'upload-misc-error-text' => "Una error desconeguda s'es producha pendent l’impòrt.
+'upload-proto-error' => 'Protocòl incorrècte',
+'upload-proto-error-text' => "L’impòrt requerís d'URLs començant per <code>http://</code> o <code>ftp://</code>.",
+'upload-file-error' => 'Error intèrna',
+'upload-file-error-text' => "Una error intèrna s'es producha en volent crear un fichièr temporari sul servidor. Contactatz un [[Special:ListUsers/sysop|administrator del sistèma]].",
+'upload-misc-error' => 'Error d’impòrt desconeguda',
+'upload-misc-error-text' => "Una error desconeguda s'es producha pendent l’impòrt.
Verificatz que l’URL es valida e accessibla, puèi ensajatz tornamai.
Se lo problèma persistís, contactatz un [[Special:ListUsers/sysop|administrator del sistèma]].",
+'upload-too-many-redirects' => "L'URL conten tròp de redireccions",
+'upload-unknown-size' => 'Talha desconeguda',
+'upload-http-error' => 'Una error HTTP es intervenguda : $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accès refusat',
+'img-auth-nopathinfo' => 'PATH_INFO mancant.
+Vòstre servidor es pas parametrat per passar aquesta informacion.
+Benlèu que fonciona en CGI e supòrta pas img_atuh.
+Consultatz http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Lo camin demandat es pas lo repertòri de telecargament configurat.',
+'img-auth-badtitle' => 'Impossible de construire un títol valid a partir de « $1 ».',
+'img-auth-nologinnWL' => 'Sètz pas connectat e « $1 » es pas dins la lista blanca.',
+'img-auth-nofile' => 'Lo fichièr « $1 » existís pas.',
+'img-auth-isdir' => "Ensajatz d'accedir al repertòri « $1 ».
+Sol l'accès als fichièrs es permesa.",
+'img-auth-streaming' => 'Lectura en continú de « $1 ».',
+'img-auth-public' => "La foncion d'img_auth.php es d'afichar de fichièrs d'un wiki privat.
+Aqueste wiki es configurat coma un wiki public.
+Per una seguretat optimala, img_auth.php es desactivat.",
+'img-auth-noread' => "L'utilizaire a pas lo drech en lectura sus « $1 ».",
+
+# HTTP errors
+'http-invalid-url' => 'URL incorrècta : $1',
+'http-invalid-scheme' => 'Las URLs amb l"esquèma « $1 » son pas suportadas',
+'http-request-error' => 'Error desconeguda al moment del mandadís de la requèsta.',
+'http-read-error' => 'HTTP Error de lectura.',
+'http-timed-out' => 'HTTP request timed out.',
+'http-curl-error' => "Error al moment de la recuperacion de l'URL : $1",
+'http-host-unreachable' => "Impossible d'aténher l'URL",
+'http-bad-status' => 'I a agut un problèma al moment de la requèsta HTTP : $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Pòt pas aténher l’URL',
@@ -1584,6 +1714,7 @@ Se lo problèma persistís, contactatz un [[Special:ListUsers/sysop|administrato
'upload-curl-error28-text' => "Lo site a pres tròp de temps per respondre. Verificatz que lo site es en linha, esperatz un pauc e ensajatz tornarmai. Tanben podètz ensajar a una ora d'afluéncia mendra.",
'license' => 'Licéncia&nbsp;:',
+'license-header' => 'Publicat jos licéncia(s)',
'nolicense' => 'Cap de licéncia seleccionada',
'license-nopreview' => '(Previsualizacion impossibla)',
'upload_source_url' => ' (una URL valida e accessibla publicament)',
@@ -1604,6 +1735,7 @@ Un clic en tèsta de colomna càmbia l’òrdre d’afichatge.',
'listfiles_count' => 'Versions',
# File description page
+'file-anchor-link' => 'Fichièr',
'filehist' => 'Istoric del fichièr',
'filehist-help' => 'Clicar sus una data e una ora per veire lo fichièr tal coma èra a aqueste moment',
'filehist-deleteall' => 'suprimir tot',
@@ -1618,6 +1750,7 @@ Un clic en tèsta de colomna càmbia l’òrdre d’afichatge.',
'filehist-dimensions' => 'Dimensions',
'filehist-filesize' => 'Talha del fichièr',
'filehist-comment' => 'Comentari',
+'filehist-missing' => 'Fichièr mancant',
'imagelinks' => 'Paginas que contenon lo fichièr',
'linkstoimage' => '{{PLURAL:$1|La pagina çaijós compòrta|Las paginas çaijós compòrtan}} aqueste imatge :',
'linkstoimage-more' => 'Mai {{PLURAL:$1|d’un ligam de pagina|de $1 ligams de paginas}} cap a aqueste fichièr.
@@ -1627,15 +1760,14 @@ Una [[Special:WhatLinksHere/$2|tièra completa]] es disponibla.',
'morelinkstoimage' => 'Vejatz [[Special:WhatLinksHere/$1|mai de ligams]] cap a aqueste imatge.',
'redirectstofile' => '{{PLURAL:$1|Lo fichièr seguent redirigís|Los fichièrs seguents redirigisson}} cap a aqueste fichièr :',
'duplicatesoffile' => "{{PLURAL:$1|Lo fichièr seguent es un duplicata|Los fichièrs seguents son de duplicatas}} d'aqueste fichièr ([[Special:FileDuplicateSearch/$2|mai de detalhs]]):",
-'sharedupload' => 'Aqueste fichièr proven de $1 e pòt èsser utilizat per d’autres projèctes.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Reportatz-vos a la $1 per mai d’informacion.',
-'shareduploadwiki-desc' => 'La descripcion afichada çaijós es eissida de sa $1 dins lo depaus partejat.',
-'shareduploadwiki-linktext' => 'pagina de descripcion del fichièr',
-'noimage' => 'Cap de fichièr amb aqueste nom existís pas, mas podètz $1.',
-'noimage-linktext' => "n'importar un",
+'sharedupload' => 'Aqueste fichièr proven de $1 e pòt èsser utilizat per d’autres projèctes.',
+'sharedupload-desc-there' => "Aqueste fichièr proven de $1 e pòt èsser utilizat per d'autres projèctes. Vejatz [$2 sa pagina de descripcion] per mai d'entresenhas.",
+'sharedupload-desc-here' => "Aqueste fichièr proven de $1 e pòt èsser utilizat per d'autres projèctes. La descripcion de [$2 sa pagina de descripcion] es afichada çaijós.",
+'filepage-nofile' => 'Cap de fichièr amb aqueste nom existís pas.',
+'filepage-nofile-link' => 'Cap de fichièr amb aqueste nom existís pas, mas ne podètz [$1 telecargar un].',
'uploadnewversion-linktext' => "Importar una version novèla d'aqueste fichièr",
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'un depaus partejat', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'un depaus partejat',
# File reversion
'filerevert' => 'Revocar $1',
@@ -1664,6 +1796,7 @@ Una [[Special:WhatLinksHere/$2|tièra completa]] es disponibla.',
** Violacion de drech d’autor
** Fichièr duplicat',
'filedelete-edit-reasonlist' => 'Modifica los motius de la supression',
+'filedelete-maintenance' => 'La supression e lo restabliment de fichièrs es temporàriament desactivada pendent la mantenença.',
# MIME search
'mimesearch' => 'Recèrca per tipe MIME',
@@ -1685,7 +1818,7 @@ Doblidetz pas de verificar se i a pas d’autre ligam cap als modèls abans de l
# Random page
'randompage' => "Una pagina a l'azard",
-'randompage-nopages' => "I a pas cap de pagina dins l'espaci de nom « $1 ».",
+'randompage-nopages' => "I a pas cap de pagina dins {{PLURAL:$2|l'espaci de nom|los espacis de noms}} : $1.",
# Random redirect
'randomredirect' => "Una pagina de redireccion a l'azard",
@@ -1697,6 +1830,7 @@ Doblidetz pas de verificar se i a pas d’autre ligam cap als modèls abans de l
'statistics-header-edits' => 'Estatisticas sus las edicions',
'statistics-header-views' => 'Estatisticas sus las visitas',
'statistics-header-users' => "Estatisticas d'utilizaire",
+'statistics-header-hooks' => 'Autras estatisticas',
'statistics-articles' => 'Paginas de contengut',
'statistics-pages' => 'Paginas',
'statistics-pages-desc' => 'Totas las paginas del wiki, enclusas las paginas de discussion, las redireccions, ...',
@@ -1726,8 +1860,8 @@ Las entradas <s>barradas</s> son estadas resolgudas.',
'brokenredirects' => 'Redireccions copadas',
'brokenredirectstext' => "Aquestas redireccions mènan cap a de paginas qu'existisson pas :",
-'brokenredirects-edit' => '(modificar)',
-'brokenredirects-delete' => '(suprimir)',
+'brokenredirects-edit' => 'modificar',
+'brokenredirects-delete' => 'suprimir',
'withoutinterwiki' => 'Paginas sens ligams interlengas',
'withoutinterwiki-summary' => "Las paginas seguentas an pas de ligams cap a las versions dins d'autras lengas.",
@@ -1835,7 +1969,7 @@ Podètz restrénher la vista en seleccionant un tipe de jornal, un nom d’utili
# Special:Categories
'categories' => 'Categorias',
-'categoriespagetext' => 'Las categorias seguentas contenon de paginas o de fichièrs.
+'categoriespagetext' => '{{PLURAL:$1|La categoria seguenta es utilizada|Las categorias seguentas son utilizadas}} per de paginas o de fichièrs.
[[Special:UnusedCategories|Las categorias inutilizadas]] son pas afichadas aicí.
Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
'categoriesfrom' => 'Afichar las categorias que començan a :',
@@ -1843,8 +1977,9 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
'special-categories-sort-abc' => 'triada alfabetica',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribucions suprimidas d’un utilizaire',
-'deletedcontributions-title' => 'Contribucions suprimidas d’un utilizaire',
+'deletedcontributions' => 'Contribucions suprimidas d’un utilizaire',
+'deletedcontributions-title' => 'Contribucions suprimidas d’un utilizaire',
+'sp-deletedcontributions-contribs' => 'contribucions',
# Special:LinkSearch
'linksearch' => 'Ligams extèrnes',
@@ -1859,6 +1994,16 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
'listusersfrom' => 'Afichar los utilizaires a partir de :',
'listusers-submit' => 'Mostrar',
'listusers-noresult' => "S'es pas trobat de noms d'utilizaires correspondents. Cercatz tanben amb de majusculas e minusculas.",
+'listusers-blocked' => '(blocat)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista dels utilizaires actius',
+'activeusers-intro' => "Aquò es una lista dels utilizaires qu'an exerçat una activitat quina que siá al cors {{PLURAL:$1|de la darrièra jornada|dels $1 darrièrs jorns}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|modificacion recenta|modificacions recentas}} dins {{PLURAL:$3|lo darrièr jorn|los $3 darrièrs jorns}}',
+'activeusers-from' => 'Afichar los utilizaires dempuèi :',
+'activeusers-hidebots' => 'Amagar los robòts',
+'activeusers-hidesysops' => 'Amagar los administrators',
+'activeusers-noresult' => "Cap d'utilizaire pas trobat.",
# Special:Log/newusers
'newuserlogpage' => 'Istoric de las creacions de comptes',
@@ -1869,17 +2014,23 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
'newuserlog-autocreate-entry' => 'Compte creat automaticament',
# Special:ListGroupRights
-'listgrouprights' => "Dreches dels gropes d'utilizaires",
-'listgrouprights-summary' => "Aquesta pagina conten una tièra de gropes definits sus aqueste wiki e mai los dreches d'accès qu'i son associats.
+'listgrouprights' => "Dreches dels gropes d'utilizaires",
+'listgrouprights-summary' => "Aquesta pagina conten una tièra de gropes definits sus aqueste wiki e mai los dreches d'accès qu'i son associats.
I pòt aver [[{{MediaWiki:Listgrouprights-helppage}}|d'entresenhas complementàrias]] a prepaus dels dreches.",
-'listgrouprights-group' => 'Grop',
-'listgrouprights-rights' => 'Dreches associats',
-'listgrouprights-helppage' => 'Help:Dreches dels gropes',
-'listgrouprights-members' => '(lista dels membres)',
-'listgrouprights-addgroup' => 'Pòt apondre $2 {{PLURAL:$2|grop|gropes}} : $1',
-'listgrouprights-removegroup' => 'Pòt levar $2 {{PLURAL:$2|gropa|gropes}} : $1',
-'listgrouprights-addgroup-all' => 'Pòt apondre totes los gropes',
-'listgrouprights-removegroup-all' => 'Pòt levar totes los gropes',
+'listgrouprights-key' => '*<span class="listgrouprights-granted">Drech autrejat</span>
+*<span class="listgrouprights-revoked">Drech revocat</span>',
+'listgrouprights-group' => 'Grop',
+'listgrouprights-rights' => 'Dreches associats',
+'listgrouprights-helppage' => 'Help:Dreches dels gropes',
+'listgrouprights-members' => '(lista dels membres)',
+'listgrouprights-addgroup' => 'Pòt apondre $2 {{PLURAL:$2|grop|gropes}} : $1',
+'listgrouprights-removegroup' => 'Pòt levar $2 {{PLURAL:$2|gropa|gropes}} : $1',
+'listgrouprights-addgroup-all' => 'Pòt apondre totes los gropes',
+'listgrouprights-removegroup-all' => 'Pòt levar totes los gropes',
+'listgrouprights-addgroup-self' => 'Se pòt apondre {{PLURAL:$2|lo grop|los gropes}} a son compte pròpri : $1',
+'listgrouprights-removegroup-self' => 'Se pòt levar {{PLURAL:$2|lo grop|los gropes}} de son compte pròpri : $1',
+'listgrouprights-addgroup-self-all' => 'Se pòt apondre totes los gropes a son compte pròpri',
+'listgrouprights-removegroup-self-all' => 'Se pòt levar totes los gropes de son compte pròpri',
# E-mail user
'mailnologin' => "Pas d'adreça",
@@ -1954,25 +2105,29 @@ Las modificacions venentas d\'aquesta pagina e de la pagina de discussion associ
'enotif_lastvisited' => 'Consultatz $1 per totes los cambiaments dempuèi vòstra darrièra visita.',
'enotif_lastdiff' => 'Consultatz $1 per veire aquesta modificacion.',
'enotif_anon_editor' => 'utilizaire anonim $1',
-'enotif_body' => 'Car $WATCHINGUSERNAME,
+'enotif_body' => 'Car(a) $WATCHINGUSERNAME,
-la pagina de {{SITENAME}} $PAGETITLE es estada $CHANGEDORCREATED lo $PAGEEDITDATE per $PAGEEDITOR, vejatz $PAGETITLE_URL per la version actuala.
+La pagina « $PAGETITLE » de {{SITENAME}} es estada $CHANGEDORCREATED lo $PAGEEDITDATE per « $PAGEEDITOR », visitatz $PAGETITLE_URL per visualizar la version actuala.
$NEWPAGE
-Resumit de l’editor : $PAGESUMMARY $PAGEMINOREDIT
+Resumit del contributor : $PAGESUMMARY $PAGEMINOREDIT
-Contactatz l’editor :
-corrièr electronic : $PAGEEDITOR_EMAIL
+Contactatz aqueste contributor :
+corrièl : $PAGEEDITOR_EMAIL
wiki : $PAGEEDITOR_WIKI
-I aurà pas de notificacions novèlas en cas d’autras modificacions a mens que visitetz aquesta pagina. Podètz tanben remetre a zèro lo notificator per totas las paginas de vòstra lista de seguit.
+I aurà pas d’autras notificacions en cas de cambiaments ulteriors, levat se visitatz aquela pagina.
+Podètz tanben reïnicializar las bandièras de notificacion per totas las paginas de vòstra lista de seguiment.
- Vòstre {{SITENAME}} sistèma de notificacion
+ Vòstre sistèma de notificacion de {{SITENAME}}
--
-Per modificar los paramètres de vòstra lista de seguit, visitatz
-{{fullurl:Special:Watchlist/edit}}
+Per modificar los paramètres de vòstra lista de seguiment, visitatz
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Per suprimir la pagina de vòstra lista de seguiment, visitatz
+$UNWATCHURL
Retorn e assisténcia :
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1986,10 +2141,11 @@ Retorn e assisténcia :
'exblank' => 'pagina voida',
'delete-confirm' => 'Escafar «$1»',
'delete-legend' => 'Escafar',
-'historywarning' => 'Atencion : La pagina que sètz a mand de suprimir a un istoric :',
+'historywarning' => "'''Atencion :''' La pagina que s�tz a mand de suprimir a un istoric que conten aproximadament $1 {{PLURAL:$1|revision|revisions}} :",
'confirmdeletetext' => "Sètz a mand de suprimir una pagina o un fichièr, e mai totas sas versions anterioras istorizadas.
Confirmatz qu'es plan çò que volètz far, que ne comprenètz las consequéncias e que fasètz aquò en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].",
'actioncomplete' => 'Accion efectuada',
+'actionfailed' => 'L’accion a fracassat',
'deletedtext' => '"<nowiki>$1</nowiki>" es estat suprimit.
Vejatz $2 per una lista de las supressions recentas.',
'deletedarticle' => 'a escafat «[[$1]]»',
@@ -2013,19 +2169,20 @@ La suprimir pòt perturbar lo foncionament de la banca de donada de {{SITENAME}}
D'efectuar amb prudéncia.",
# Rollback
-'rollback' => 'Anullar las modificacions',
-'rollback_short' => 'Anullar',
-'rollbacklink' => 'anullar',
-'rollbackfailed' => "L'anullacion a pas capitat",
-'cantrollback' => "Impossible d'anullar : l'autor es la sola persona a aver efectuat de modificacions sus aqueste article",
-'alreadyrolled' => "Impossible d'anullar la darrièra modificacion de l'article « [[:$1]] » efectuada per [[User:$2|$2]] ([[User talk:$2|Discutir]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+'rollback' => 'Anullar las modificacions',
+'rollback_short' => 'Anullar',
+'rollbacklink' => 'anullar',
+'rollbackfailed' => "L'anullacion a pas capitat",
+'cantrollback' => "Impossible d'anullar : l'autor es la sola persona a aver efectuat de modificacions sus aqueste article",
+'alreadyrolled' => "Impossible d'anullar la darrièra modificacion de l'article « [[:$1]] » efectuada per [[User:$2|$2]] ([[User talk:$2|Discutir]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
qualqu’un mai ja a modificat o revocat la pagina.
La darrièra modificacion es estada efectuada per [[User:$3|$3]] ([[User talk:$3|Discutir]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "Lo resumit de la modificacion èra : « ''$1'' ».", # only shown if there is an edit comment
-'revertpage' => 'Anullacion de las modificacions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) cap a la darrièra version de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Anullacion de las modificacions de $1 ; retorn a la version de $2.',
-'sessionfailure' => 'Vòstra sesilha de connexion sembla aver de problèmas ;
+'editcomment' => "Lo resumit de la modificacion èra : « ''$1'' ».",
+'revertpage' => 'Anullacion de las modificacions de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]]) cap a la darrièra version de [[User:$1|$1]]',
+'revertpage-nouser' => 'Revocacion de las modificacions per (nom d’utilizaire suprimit) a la darrièra version per [[User:$1|$1]]',
+'rollback-success' => 'Anullacion de las modificacions de $1 ; retorn a la version de $2.',
+'sessionfailure' => 'Vòstra sesilha de connexion sembla aver de problèmas ;
aquesta accion es estada anullada en prevencion d’un piratatge de sesilha.
Clicatz sus « Precedent » e tornatz cargar la pagina d’ont venètz, puèi ensajatz tornarmai.',
@@ -2043,7 +2200,7 @@ Clicatz sus « Precedent » e tornatz cargar la pagina d’ont venètz, puèi en
'protectexpiry' => 'Expiracion (expira pas per defaut)',
'protect_expiry_invalid' => 'Lo temps d’expiracion es invalid',
'protect_expiry_old' => 'Lo temps d’expiracion ja es passat.',
-'protect-unchain' => 'Desblocar las permissions de cambiament de nom',
+'protect-unchain-permissions' => "Desvarrolhar ancara mai d'opcions de proteccion",
'protect-text' => "Podètz consultar e modificar lo nivèl de proteccion de la pagina '''<nowiki>$1</nowiki>'''. Asseguratz-vos que seguissètz las règlas intèrnas.",
'protect-locked-blocked' => "Podètz pas modificar lo nivèl de proteccion tant que sètz blocat. Vaquí los reglatges actuals de la pagina '''$1''' :",
'protect-locked-dblock' => "Lo nivèl de proteccion pòt pas èsser modificat perque la banca de donadas es blocada. Vaquí los reglatges actuals de la pagina '''$1''' :",
@@ -2069,7 +2226,7 @@ Clicatz sus « Precedent » e tornatz cargar la pagina d’ont venètz, puèi en
** Guèrra d'edicion
** Pagina de trafic fòrt",
'protect-edit-reasonlist' => 'Modificar las rasons de proteccion',
-'protect-expiry-options' => '1 ora:1 hour,1 jorn:1 day,1 setmana:1 week,2 setmanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year,indefinidament:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 jorn:1 day,1 setmana:1 week,2 setmanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year,indefinidament:infinite',
'restriction-type' => 'Permission :',
'restriction-level' => 'Nivèl de restriccion :',
'minimum-size' => 'Talha minimoma',
@@ -2109,6 +2266,7 @@ S'una pagina novèla amb lo meteis nom es estada creada dempuèi la supression,
'undelete-nodiff' => 'Cap de revision precedenta pas trobada.',
'undeletebtn' => 'Restablir',
'undeletelink' => 'veire/restablir',
+'undeleteviewlink' => 'veire',
'undeletereset' => 'Reïnicializar',
'undeleteinvert' => 'Inversar la seleccion',
'undeletecomment' => 'Comentari :',
@@ -2146,19 +2304,23 @@ $1",
'contributions-title' => 'Tièra de las contribucions de l’utilizaire $1',
'mycontris' => 'Mas contribucions',
'contribsub2' => 'Lista de las contribucions de $1 ($2). Las paginas que son estadas escafadas son pas afichadas.',
-'nocontribs' => 'Cap de modificacion correspondenta a aquestes critèris es pas estada trobada.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Cap de modificacion correspondenta a aquestes critèris es pas estada trobada.',
'uctop' => '(darrièra)',
'month' => 'A partir del mes (e precedents) :',
'year' => 'A partir de l’annada (e precedentas) :',
-'sp-contributions-newbies' => 'Far veire sonque las contribucions dels utilizaires novèls',
-'sp-contributions-newbies-sub' => 'Lista de las contribucions dels utilizaires novèls. Las paginas que son estadas suprimidas son pas afichadas.',
-'sp-contributions-newbies-title' => 'Las contribucions de l’utilizaire pels comptes novèls',
-'sp-contributions-blocklog' => 'Istoric dels blocatges',
-'sp-contributions-logs' => 'jornals',
-'sp-contributions-search' => 'Cercar las contribucions',
-'sp-contributions-username' => 'Adreça IP o nom d’utilizaire :',
-'sp-contributions-submit' => 'Cercar',
+'sp-contributions-newbies' => 'Far veire sonque las contribucions dels utilizaires novèls',
+'sp-contributions-newbies-sub' => 'Lista de las contribucions dels utilizaires novèls. Las paginas que son estadas suprimidas son pas afichadas.',
+'sp-contributions-newbies-title' => 'Las contribucions de l’utilizaire pels comptes novèls',
+'sp-contributions-blocklog' => 'Istoric dels blocatges',
+'sp-contributions-deleted' => 'contribucions suprimidas',
+'sp-contributions-logs' => 'jornals',
+'sp-contributions-talk' => 'Discutir',
+'sp-contributions-userrights' => 'gerir los dreches',
+'sp-contributions-blocked-notice' => 'Aqueste utilizaire es actualament blocat. La darrièra entrada del jornal dels blocatges es indicada çaijós a títol d’informacion :',
+'sp-contributions-search' => 'Cercar las contribucions',
+'sp-contributions-username' => 'Adreça IP o nom d’utilizaire :',
+'sp-contributions-submit' => 'Cercar',
# What links here
'whatlinkshere' => 'Paginas ligadas a aquesta',
@@ -2181,6 +2343,7 @@ $1",
# Block/unblock
'blockip' => 'Blocar en escritura',
+'blockip-title' => 'Blocar l’utilizaire',
'blockip-legend' => 'Blocar en escritura',
'blockiptext' => "Utilizatz lo formulari çaijós per blocar l'accès a las modificacions a partir d'una adreça IP especifica o d'un nom d'utilizaire.
Una tala mesura deu pas èsser presa pas que per empachar lo vandalisme e en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].
@@ -2205,7 +2368,7 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
'ipbenableautoblock' => 'Blocar automaticament las adreças IP utilizadas per aqueste utilizaire',
'ipbsubmit' => 'Blocar aqueste utilizaire',
'ipbother' => 'Autra durada',
-'ipboptions' => '2 oras:2 hours,1 jorn:1 day,3 jorns:3 days,1 setmana:1 week,2 setmanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year,indefinidament:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 jorn:1 day,3 jorns:3 days,1 setmana:1 week,2 setmanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year,indefinidament:infinite',
'ipbotheroption' => 'autre',
'ipbotherreason' => 'Motiu diferent o suplementari',
'ipbhidename' => 'Amagar lo nom d’utilizaire de las modificacions e de las listas',
@@ -2235,9 +2398,11 @@ a partir d'una adreça IP precedentament blocada.",
'ipblocklist-sh-tempblocks' => '$1 los blocatges temporaris',
'ipblocklist-sh-addressblocks' => "$1 los blocatges d'una sola adreça IP",
'ipblocklist-submit' => 'Recercar',
+'ipblocklist-localblock' => 'Blocatge local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Autre blocatge|Autres blocatges}}',
'blocklistline' => '$1, $2 a blocat $3 ($4)',
'infiniteblock' => 'permanent',
-'expiringblock' => 'expira lo $1',
+'expiringblock' => 'expira lo $1 a $2',
'anononlyblock' => 'utilizaire anonim unicament',
'noautoblockblock' => 'blocatge automatic desactivat',
'createaccountblock' => 'La creacion de compte es blocada.',
@@ -2252,7 +2417,8 @@ a partir d'una adreça IP precedentament blocada.",
'autoblocker' => 'Sètz estat autoblocat perque partejatz una adreça IP amb "[[User:$1|$1]]".
La rason balhada per $1 es : « $2 ».',
'blocklogpage' => 'Istoric dels blocatges',
-'blocklog-fulllog' => 'Jornal complet dels blocatges',
+'blocklog-showlog' => 'Aqueste utilizaire es estat blocat precedentament. Lo jornal dels blocatges es disponible çaijós :',
+'blocklog-showsuppresslog' => 'Aqueste utilizaire es estat blocat e amagat precedentament. Lo jornal de las supressions es disponible çaijós :',
'blocklogentry' => 'a blocat « [[$1]] » - durada : $2 $3',
'reblock-logentry' => 'a modificat los parametratge de blocatge per [[$1]] amb una durada d’expiracion de $2 $3',
'blocklogtext' => "Aquò es l'istoric dels blocatges e desblocatges dels utilizaires. Las adreças IP automaticament blocadas son pas listadas. Consultatz la [[Special:IPBlockList|lista dels utilizaires blocats]] per veire qui es actualament efectivament blocat.",
@@ -2271,9 +2437,11 @@ La rason balhada per $1 es : « $2 ».',
'ipb_already_blocked' => '« $1 » ja es blocat',
'ipb-needreblock' => '== Ja blocat ==
$1 ja es blocat. Volètz modificar los paramètres ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocatge|Autres blocatges}}',
'ipb_cant_unblock' => 'Error : Lo blocatge d’ID $1 existís pas. Es possible qu’un desblocatge ja siá estat efectuat.',
'ipb_blocked_as_range' => "Error : L'adreça IP $1 es pas estada blocada dirèctament e doncas pòt pas èsser deblocada. Çaquelà, es estada blocada per la plaja $2 la quala pòt èsser deblocada.",
'ip_range_invalid' => 'Plaja IP incorrècta.',
+'ip_range_toolarge' => 'Los blocatges de plajas mai grandas que /$1 son pas autorizadas.',
'blockme' => 'Blocatz-me',
'proxyblocker' => 'Blocaire de mandatari (proxy)',
'proxyblocker-disabled' => 'Aquesta foncion es desactivada.',
@@ -2283,6 +2451,7 @@ $1 ja es blocat. Volètz modificar los paramètres ?',
'sorbs_create_account_reason' => 'Vòstra adreça IP es listada en tant que mandatari (proxy) dobèrt DNSBL per {{SITENAME}}.
Podètz pas crear un compte',
'cant-block-while-blocked' => "Podètz pas blocar d'autres utilizaires pendent que sètz blocat(ada).",
+'cant-see-hidden-user' => "L'utilizaire qu'ensajatz de blocar es ja estat blocat e amagat. Sens lo drech hideuser, podètz pas veire o modificar lo blocatge de l'utilizaire.",
# Developer tools
'lockdb' => 'Varrolhar la banca',
@@ -2320,6 +2489,7 @@ Avètz la responsabilitat de vos assegurar que los ligams contunhen de puntar ca
Dins aqueste cas, vos caldrà desplaçar o fusionar la pagina manualament se o volètz.",
'movearticle' => "Tornar nomenar l'article",
+'moveuserpage-warning' => "'''Atencion :''' Sètz a mand de tornar nomenar una pagina d’utilizaire. Notatz que sola la pagina serà renomenada e que l’utilizaire '''ne''' serà '''pas''' renomenat.",
'movenologin' => 'Vos sètz pas identificat(ada)',
'movenologintext' => "Per poder tornar nomenar un article, vos cal èsser [[Special:UserLogin|connectat(ada)]]
en tant qu'utilizaire enregistrat.",
@@ -2331,7 +2501,7 @@ en tant qu'utilizaire enregistrat.",
'move-watch' => 'Seguir aquesta pagina',
'movepagebtn' => "Tornar nomenar l'article",
'pagemovedsub' => 'Cambiament de nom capitat',
-'movepage-moved' => 'La pagina « $1 » es estada renomenada en « $2 ».', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'La pagina « $1 » es estada renomenada en « $2 ».',
'movepage-moved-redirect' => 'Una redireccion es estada creada.',
'movepage-moved-noredirect' => 'La creacion de la redireccion es estada suprimida.',
'articleexists' => "Existís ja un article que pòrta aqueste títol, o lo títol qu'avètz causit es pas valid.
@@ -2375,6 +2545,12 @@ Lo volètz suprimir per permetre lo cambiament de nom ?',
'imageinvalidfilename' => 'Lo nom del fichièr cibla es incorrècte',
'fix-double-redirects' => 'Metre a jorn las redireccions que puntant cap al títol ancian',
'move-leave-redirect' => 'Daissar una redireccion darrièr',
+'protectedpagemovewarning' => "'''ATENCION:''' Aquesta pagina es estada protegida per que sonque los utilizaires qu'an los dreches d'administrators la pòscan tornar nomenar. La darrièra entrada del jornal es afichada çaijós per referéncia :",
+'semiprotectedpagemovewarning' => "'''Nòta :''' Aquesta pagina es estada blocada per que sonque los utilizaires enregistrats la pòscan tornar nomenar. La darrièra entrada del jornal es afichada çaijós per referéncia :",
+'move-over-sharedrepo' => '== Lo fichièr existís ==
+[[:$1]] existís ja sus un depaus partejat. Tornar nomenar aqueste fichièr farà lo fichièr sul depaus partatge inaccessible.',
+'file-exists-sharedrepo' => 'Lo nom causit es ja utilizat per un fichièr sus un depaus partejat.
+Causissètz un autre nom.',
# Export
'export' => 'Exportar de paginas',
@@ -2396,15 +2572,21 @@ Dins aqueste darrièr cas, podètz tanben utilizar un ligam, coma [[{{#Special:E
'export-pagelinks' => 'Enclure las paginas ligadas a una prigondor de :',
# Namespace 8 related
-'allmessages' => 'Lista dels messatges del sistèma',
-'allmessagesname' => 'Nom del camp',
-'allmessagesdefault' => 'Messatge per defaut',
-'allmessagescurrent' => 'Messatge actual',
-'allmessagestext' => 'Aquò es la lista de totes los messatges disponibles dins l’espaci MediaWiki.
+'allmessages' => 'Lista dels messatges del sistèma',
+'allmessagesname' => 'Nom del camp',
+'allmessagesdefault' => 'Messatge per defaut',
+'allmessagescurrent' => 'Messatge actual',
+'allmessagestext' => 'Aquò es la lista de totes los messatges disponibles dins l’espaci MediaWiki.
Visitatz la [http://www.mediawiki.org/wiki/Localisation Localizacion MediaWiki] e [http://translatewiki.net translatewiki.net] se desiratz contribuir a la localizacion MediaWiki generica.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' es pas disponible perque '''\$wgUseDatabaseMessages''' es desactivat.",
-'allmessagesfilter' => 'Filtre d’expression racionala :',
-'allmessagesmodified' => 'Afichar pas que las modificacions',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' es pas disponible perque '''\$wgUseDatabaseMessages''' es desactivat.",
+'allmessages-filter-legend' => 'Filtre',
+'allmessages-filter' => 'Filtrar per estat de modificacion :',
+'allmessages-filter-unmodified' => 'Pas modificat',
+'allmessages-filter-all' => 'Totes',
+'allmessages-filter-modified' => 'Modificat',
+'allmessages-prefix' => 'Filtrar per prefix :',
+'allmessages-language' => 'Lenga :',
+'allmessages-filter-submit' => 'Aplicar',
# Thumbnails
'thumbnail-more' => 'Agrandir',
@@ -2414,6 +2596,9 @@ Visitatz la [http://www.mediawiki.org/wiki/Localisation Localizacion MediaWiki]
'djvu_no_xml' => "Impossible d’obténer l'XML pel fichièr DjVu",
'thumbnail_invalid_params' => 'Paramètres de la miniatura invalids',
'thumbnail_dest_directory' => 'Impossible de crear lo repertòri de destinacion',
+'thumbnail_image-type' => 'Tipe d’imatge pas suportat',
+'thumbnail_gd-library' => 'Configuracion incompleta de la bibliotèca GD : foncion $1 introbabla',
+'thumbnail_image-missing' => 'Lo fichièr seguent es introbable : $1',
# Special:Import
'import' => 'Importar de paginas',
@@ -2477,6 +2662,7 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
'tooltip-ca-viewsource' => 'Aquesta pagina es protegida. Çaquelà, ne podètz veire lo contengut.',
'tooltip-ca-history' => "Los autors e versions precedentas d'aquesta pagina.",
'tooltip-ca-protect' => 'Protegir aquesta pagina',
+'tooltip-ca-unprotect' => 'Desprotegir aquesta pagina',
'tooltip-ca-delete' => 'Suprimir aquesta pagina',
'tooltip-ca-undelete' => 'Restablir aquesta pagina',
'tooltip-ca-move' => 'Tornar nomenar aquesta pagina',
@@ -2487,6 +2673,7 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
'tooltip-search-fulltext' => 'Recercar las paginas que compòrtan aqueste tèxte.',
'tooltip-p-logo' => 'Pagina principala',
'tooltip-n-mainpage' => 'Visitatz la pagina principala',
+'tooltip-n-mainpage-description' => 'Anar a l’acuèlh',
'tooltip-n-portal' => 'A prepaus del projècte',
'tooltip-n-currentevents' => "Trobar d'entresenhas suls eveniments actuals",
'tooltip-n-recentchanges' => 'Lista dels darrièrs cambiaments sul wiki.',
@@ -2533,6 +2720,7 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
'chick.css' => '/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Chick */',
'simple.css' => '/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Simple */',
'modern.css' => '/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Modern */',
+'vector.css' => '/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Vector */',
'print.css' => '/* Lo CSS plaçat aicí afectarà las impressions */',
'handheld.css' => '/* Lo CSS plaçat aicí afectarà los aparelhs mobils en foncion de l\'abilhatge configurat $wgHandheldStyle */',
@@ -2546,6 +2734,7 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
'chick.js' => '/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Chick unicament. */',
'simple.js' => '/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Simple unicament. */',
'modern.js' => '/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Modern unicament. */',
+'vector.js' => '/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Vector unicament. */',
# Metadata
'nodublincore' => 'Las metadonadas « Dublin Core RDF » son desactivadas sus aqueste servidor.',
@@ -2555,10 +2744,12 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizaire anonim|Utilizaires anonims}} de {{SITENAME}}',
'siteuser' => 'Utilizaire $1 de {{SITENAME}}',
-'lastmodifiedatby' => 'Aquesta pagina es estada modificada pel darrièr còp lo $1 a $2 per $3.', # $1 date, $2 time, $3 user
+'anonuser' => "l'utilizaire anonim $1 de {{SITENAME}}",
+'lastmodifiedatby' => 'Aquesta pagina es estada modificada pel darrièr còp lo $1 a $2 per $3.',
'othercontribs' => 'Basat sul trabalh de $1.',
'others' => 'autres',
'siteusers' => '{{PLURAL:$2|utilizaire|utilizaires}} $1 de {{SITENAME}}',
+'anonusers' => "{{PLURAL:$2|l'utilizaire anonim|los utilizaires anonims}} $1 de {{SITENAME}}",
'creditspage' => 'Pagina de crèdits',
'nocredits' => 'I a pas d’entresenhas d’atribucion disponiblas per aquesta pagina.',
@@ -2597,11 +2788,22 @@ Aquò es probablament causat per un ligam sus lista negra que punta cap a un sit
'mw_math_modern' => 'Pels navigadors modèrnes',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Error matas',
+'math_unknown_error' => 'error indeterminada',
+'math_unknown_function' => 'foncion desconeguda',
+'math_lexing_error' => 'error lexicala',
+'math_syntax_error' => 'error de sintaxi',
+'math_image_error' => 'La conversion en PNG a pas capitat ; verificatz l’installacion de Latex, dvips, gs e convert',
+'math_bad_tmpdir' => 'Impossible de crear o d’escriure dins lo repertòri math temporari',
+'math_bad_output' => 'Impossible de crear o d’escriure dins lo repertòri math de sortida',
+'math_notexvc' => 'L’executable « texvc » es introbable. Legissètz math/README per lo configurar.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar coma essent pas un vandalisme',
'markaspatrolledtext' => 'Marcar aqueste article coma pas vandalizat',
'markedaspatrolled' => 'Marcat coma pas vandalizat',
-'markedaspatrolledtext' => 'La version seleccionada es estada marcada coma pas vandalizada.',
+'markedaspatrolledtext' => 'La revision seleccionada de [[:$1]] es estada coma patrolhada.',
'rcpatroldisabled' => 'La foncion de patrolha dels darrièrs cambiaments es pas activada.',
'rcpatroldisabledtext' => 'La foncionalitat de susvelhança dels darrièrs cambiaments es pas activada.',
'markedaspatrollederror' => 'Pòt pas èsser marcat coma pas vandalizat',
@@ -2631,13 +2833,10 @@ $1",
'previousdiff' => '← Cambiament precedent',
'nextdiff' => 'Cambiament seguent →',
-# Visual comparison
-'visual-comparison' => 'Comparason visuala',
-
# Media information
'mediawarning' => "'''Atencion :''' Aqueste fichièr pòt conténer de còde malvolent.
Se l'executatz, vòstre sistèma pòt èsser compromés.",
-'imagemaxsize' => 'Format maximal pels imatges dins las paginas de descripcion d’imatges :',
+'imagemaxsize' => "Format maximal dels imatges :<br />''(per las paginas de descripcion d’imatges)''",
'thumbsize' => 'Talha de la miniatura :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginas}}',
'file-info' => 'Talha del fichièr: $1, tipe MIME: $2',
@@ -2646,6 +2845,8 @@ Se l'executatz, vòstre sistèma pòt èsser compromés.",
'svg-long-desc' => '(Fichièr SVG, resolucion de $1 × $2 pixèls, talha : $3)',
'show-big-image' => 'Imatge en resolucion mai nauta',
'show-big-image-thumb' => "<small>Talha d'aqueste apercebut : $1 × $2 pixèls</small>",
+'file-info-gif-looped' => 'en bocla',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|imatge|imatges}}',
# Special:NewFiles
'newimages' => 'Galariá dels fichièrs novèls',
@@ -2683,7 +2884,7 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largor',
@@ -2810,14 +3011,14 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-unknowndate' => 'Data desconeguda',
-'exif-orientation-1' => 'Normala', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Inversada orizontalament', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Virada de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Inversada verticalament', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Virada de 90° dins lo sens antiorari e inversada verticalament', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Virada de 90° dins lo sens orari', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Virada de 90° dins lo sens orari e inversada verticalament', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Virada de 90° dins lo sens antiorari', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normala',
+'exif-orientation-2' => 'Inversada orizontalament',
+'exif-orientation-3' => 'Virada de 180°',
+'exif-orientation-4' => 'Inversada verticalament',
+'exif-orientation-5' => 'Virada de 90° dins lo sens antiorari e inversada verticalament',
+'exif-orientation-6' => 'Virada de 90° dins lo sens orari',
+'exif-orientation-7' => 'Virada de 90° dins lo sens orari e inversada verticalament',
+'exif-orientation-8' => 'Virada de 90° dins lo sens antiorari',
'exif-planarconfiguration-1' => 'Donadas atenentas',
'exif-planarconfiguration-2' => 'Donadas separadas',
@@ -2944,7 +3145,7 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-gpsmeasuremode-2' => 'Mesura de 2 dimensions',
'exif-gpsmeasuremode-3' => 'Mesura de 3 dimensions',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilomètres per ora',
'exif-gpsspeed-m' => 'Miles per ora',
'exif-gpsspeed-n' => 'Noses',
@@ -2963,6 +3164,7 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'watchlistall2' => 'tot',
'namespacesall' => 'Totes',
'monthsall' => 'totes',
+'limitall' => 'totes',
# E-mail address confirmation
'confirmemail' => "Confirmar l'adreça de corrièr electronic",
@@ -2983,13 +3185,13 @@ Retorn del programa de corrièr : $1',
'confirmemail_loggedin' => 'Ara, vòstra adreça es confirmada',
'confirmemail_error' => "Un problèma s'es produch en volent enregistrar vòstra confirmacion.",
'confirmemail_subject' => 'Confirmacion d’adreça de corrièr electronic per {{SITENAME}}',
-'confirmemail_body' => "Qualqu’un, probablament vos amb l’adreça IP $1, a enregistrat un compte « $2 » amb aquesta adreça de corrièr electronic sul sit {{SITENAME}}.
+'confirmemail_body' => "Qualqu’un, probablament vos,e amb l’adreça IP $1, a enregistrat un compte « $2 » amb aquesta adreça de corrièr electronic sul site {{SITENAME}}.
Per confirmar qu'aqueste compte vos aparten vertadièrament e activar las foncions de messatjariá sus {{SITENAME}}, seguissètz lo ligam çaijós dins vòstre navigador :
$3
-Se s’agís pas de vos, dobrissetz pas lo ligam.
+Se s’agís pas de vos, dobriscatz pas lo ligam.
Aqueste còde de confirmacion expirarà lo $4, seguissètz l’autre ligam çaijós dins vòstre navigador :
$5
@@ -3025,7 +3227,6 @@ Confirmatz que desiratz tornar crear aqueste article.",
# Separators for various lists, etc.
'colon-separator' => '&nbsp;:&#32;',
'autocomment-prefix' => '-',
-'pipe-separator' => '&#32;•&#32;',
# Multipage image navigation
'imgmultipageprev' => '← pagina precedenta',
@@ -3095,7 +3296,7 @@ Ensajatz la previsualizacion normala.',
'duplicate-defaultsort' => 'Atencion : La clau de triada per defaut « $2 » espotís la mai recenta « $1 ».',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Extensions installadas',
'version-specialpages' => 'Paginas especialas',
'version-parserhooks' => 'Extensions del parser',
@@ -3109,7 +3310,7 @@ Ensajatz la previsualizacion normala.',
'version-skin-extension-functions' => "Foncions d'extension de l'interfàcia",
'version-hook-name' => 'Nom del croquet',
'version-hook-subscribedby' => 'Definit per',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licéncia',
'version-software' => 'Logicial installat',
'version-software-product' => 'Produch',
@@ -3189,4 +3390,15 @@ Picatz lo nom del fichièr sens lo prefix « {{ns:file}}: ».',
'dberr-outofdate' => 'Notatz que lors indèxes de nòstre contengut pòdon èsser depassats.',
'dberr-cachederror' => 'Aquò es una còpia amagada de la pagina demandada e pòt èsser depassada.',
+# HTML forms
+'htmlform-invalid-input' => "De problèmas son arribats amb d'unas valors",
+'htmlform-select-badoption' => "La valor qu'avètz especificada es pas una opcion valida.",
+'htmlform-int-invalid' => "La valor qu'avètz especificada es pas un nombre entièr.",
+'htmlform-float-invalid' => "La valor qu'avètz especificada es pas un nombre.",
+'htmlform-int-toolow' => "La valor qu'avètz especificada es en dejós del minimum de $1",
+'htmlform-int-toohigh' => "La valor qu'avètz especificada es en dessús del minimum de $1",
+'htmlform-submit' => 'Sometre',
+'htmlform-reset' => 'Desfar las modificacions',
+'htmlform-selectorother-other' => 'Autre',
+
);
diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php
index 2b3358cb..f03e8300 100644
--- a/languages/messages/MessagesOr.php
+++ b/languages/messages/MessagesOr.php
@@ -55,7 +55,9 @@ $messages = array(
'searchresultshead' => 'ସନ୍ଧାନ',
# Recent changes linked
-'recentchangeslinked' => 'ସମ୍ବଧ୍ହିତ ପରିବର୍ତନ',
+'recentchangeslinked' => 'ସମ୍ବଧ୍ହିତ ପରିବର୍ତନ',
+'recentchangeslinked-feed' => 'ସମ୍ବଧ୍ହିତ ପରିବର୍ତନ',
+'recentchangeslinked-toolbox' => 'ସମ୍ବଧ୍ହିତ ପରିବର୍ତନ',
# Upload
'filedesc' => 'ସାରକଥା',
diff --git a/languages/messages/MessagesOs.php b/languages/messages/MessagesOs.php
index a0a61df7..8c6dec5a 100644
--- a/languages/messages/MessagesOs.php
+++ b/languages/messages/MessagesOs.php
@@ -8,6 +8,7 @@
* @file
*
* @author Amikeco
+ * @author Bouron
* @author HalanTul
* @author לערי ריינהארט
*/
@@ -15,13 +16,11 @@
$fallback = 'ru';
$namespaceNames = array(
- NS_MEDIA => 'Media', //чтоб не писать "Мультимедия"
+ NS_MEDIA => 'Media',
NS_SPECIAL => 'Сæрмагонд',
- NS_MAIN => '',
NS_TALK => 'Дискусси',
NS_USER => 'Архайæг',
NS_USER_TALK => 'Архайæджы_дискусси',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Дискусси_$1',
NS_FILE => 'Ныв',
NS_FILE_TALK => 'Нывы_тыххæй_дискусси',
@@ -35,6 +34,12 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Категорийы_тыххæй_дискусси',
);
+$magicWords = array(
+ 'redirect' => array( '0', '#РАРВЫСТ', '#перенаправление', '#перенапр', '#REDIRECT' ),
+ 'img_right' => array( '1', 'рахиз', 'справа', 'right' ),
+ 'img_left' => array( '1', 'галиу', 'слева', 'left' ),
+);
+
$linkTrail = '/^((?:[a-z]|а|æ|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|“|»)+)(.*)$/sDu';
$fallback8bitEncoding = 'windows-1251';
@@ -72,6 +77,9 @@ $messages = array(
'underline-never' => 'Никуы',
'underline-default' => 'Браузеры куыд у',
+# Font style option in Special:Preferences
+'editfont-default' => 'Браузеры куыд у',
+
# Dates
'sunday' => 'Хуыцаубон',
'monday' => 'Къуырисæр',
@@ -131,7 +139,7 @@ $messages = array(
'category-media-header' => 'Категори «$1»-ы файлтæ',
'category-empty' => "''Ацы категори афтид ма у.''",
'hidden-categories' => 'Æмбæхст {{PLURAL:$1|категори|категоритæ}}',
-'hidden-category-category' => 'Æмбæхст категоритæ', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Æмбæхст категоритæ',
'category-subcat-count' => '{{PLURAL:$2|Ацы категорийы мидæг æрмæст иу дæлкатегори и.|{{PLURAL:$1|$1 дæлкатегори æвдыст у|$1 дæлкатегорийы æвдыст сты}}, æдæппæт $2.}}',
'category-subcat-count-limited' => 'Ацы категорийы мидæг ис {{PLURAL:$1|$1 дæлкатегори|$1 дæлкатегорийы}}.',
'category-article-count-limited' => 'Ацы категорийы мидæг {{PLURAL:$1|$1 фарс|$1 фарсы}} ис.',
@@ -140,10 +148,18 @@ $messages = array(
'mainpagetext' => "'''Вики-скрипт «MediaWiki» æнтыстджынæй æвæрд æрцыд.'''",
-'about' => 'Афыст',
-'article' => 'Статья',
-'newwindow' => '(ног рудзынджы)',
-'cancel' => 'Фæстæмæ',
+'about' => 'Афыст',
+'article' => 'Статья',
+'newwindow' => '(ног рудзынджы)',
+'cancel' => 'Фæстæмæ',
+'moredotdotdot' => 'Фылдæр…',
+'mypage' => 'Дæхи фарс',
+'mytalk' => 'Дæумæ цы дзурынц',
+'anontalk' => 'Ацы IP-адрисы дискусси',
+'navigation' => 'хъæугæ æрвитæнтæ',
+'and' => '&#32;æмæ',
+
+# Cologne Blue skin
'qbfind' => 'Агур',
'qbbrowse' => 'Фен',
'qbedit' => 'Баив æй',
@@ -151,12 +167,19 @@ $messages = array(
'qbpageinfo' => 'Фарсы контекст',
'qbmyoptions' => 'Мæ фæрстæ',
'qbspecialpages' => 'Сæрмагонд фæрстæ',
-'moredotdotdot' => 'Фылдæр…',
-'mypage' => 'Дæхи фарс',
-'mytalk' => 'Дæумæ цы дзурынц',
-'anontalk' => 'Ацы IP-адрисы дискусси',
-'navigation' => 'хъæугæ æрвитæнтæ',
-'and' => '&#32;æмæ',
+
+# Vector skin
+'vector-namespace-category' => 'Категори',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Фарс',
+'vector-namespace-project' => 'Проекты фарс',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Архайæджы фарс',
+'vector-view-create' => 'Скæн æй',
+'vector-view-edit' => 'Фен æй',
+'vector-view-history' => 'Истори',
+'vector-view-view' => 'Кæс',
+'vector-view-viewsource' => 'Йæ код фен',
'errorpagetitle' => 'Рæдыд',
'returnto' => '$1 фарсмæ раздæх.',
@@ -204,7 +227,7 @@ $messages = array(
'otherlanguages' => 'Æндæр æвзæгтыл',
'redirectedfrom' => '(Рарвыстæуыд ацы статьяйæ: «$1»)',
'redirectpagesub' => 'Рарвысты фарс',
-'lastmodifiedat' => 'Ацы фарс фæстаг хатт ивд æрцыд: $1, $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ацы фарс фæстаг хатт ивд æрцыд: $1, $2.',
'protectedpage' => 'Æхгæд фарс',
'jumpto' => 'Тагъд æрвитæнтæ:',
'jumptonavigation' => 'навигаци',
@@ -271,7 +294,6 @@ $messages = array(
# General errors
'error' => 'Рæдыд',
'databaseerror' => 'Бæрæггæнæнты базæйы рæдыд',
-'nodb' => 'Бæрæггæнæнты базæ $1 равзæрын нæ фæрæстмæ',
'readonly' => 'Бæрæггæнæнты базæ фыссынæн æхгæд у',
'missingarticle-rev' => '(верси № $1)',
'missingarticle-diff' => '(хъауджы: $1, $2)',
@@ -283,7 +305,7 @@ $messages = array(
'filenotfound' => 'Нæй ссарæн файл «$1».',
'unexpected' => 'Æнæмбæлон æмиасад: «$1»=«$2».',
'formerror' => 'Рæдыд: формæ арвитæн нæй',
-'cannotdelete' => 'Нæй аппарæн амынд файл кæнæ фарс.
+'cannotdelete' => 'Нæй аппарæн файл кæнæ фарс "$1".
Æндæр исчи йæ аппæрста мыййаг.',
'badtitle' => 'Æнæмбæлон сæргонд',
'viewsource' => 'Йæ код фен',
@@ -296,44 +318,30 @@ $messages = array(
'virus-unknownscanner' => 'æнæзонгæ антивирус:',
# Login and logout pages
-'logouttitle' => 'Номсусæг суын',
-'welcomecreation' => '<h2>Æгас цу, $1!</h2><p>Регистрацигонд æрцыдтæ.',
-'loginpagetitle' => 'Дæхи бацамон системæйæн',
-'yourname' => 'Архайæджы ном:',
-'yourpassword' => 'Пароль:',
-'yourpasswordagain' => 'Дæ пароль иу хатт ма:',
-'remembermypassword' => 'Системæ бахъуыды кæнæд мæ пароль ацы компьютерыл',
-'yourdomainname' => 'Дæ домен:',
-'login' => 'Дæхи бавдис системæйæн',
-'nav-login-createaccount' => 'Системæйæн дæхи бавдис',
-'userlogin' => 'Системæйæн дæхи бавдис',
-'logout' => 'Номсусæг суын',
-'userlogout' => 'Номсусæг су',
-'notloggedin' => 'Системæйæн дæхи нæ бацамыдтай',
-'nologin' => "Регистрацигонд нæма дæ? '''$1'''.",
-'nologinlink' => 'Регистраци',
-'createaccountmail' => 'адрисмæ гæсгæ',
-'badretype' => 'Дыууæ хатты иу пароль хъуамæ ныффыстаис',
-'youremail' => 'Дæ электронон посты адрис',
-'username' => 'Регистрацигонд ном:',
-'yourrealname' => 'Дæ æцæг ном*',
-'yourlanguage' => 'Техникон фыстыты æвзаг:',
-'yourvariant' => 'Æвзаджы вариант:',
-'yournick' => 'Фæсномыг (къухæрфыстытæм):',
-'badsiglength' => 'Æгæр даргъ къухæрфыст, хъуамæ {{PLURAL:$1|дамгъæйæ|дамгъæйæ}} къаддæр уа.',
-'yourgender' => 'Æрд:',
-'gender-male' => 'нæлгоймаг',
-'gender-female' => 'сылгоймаг',
-'email' => 'Эл. посты адрис',
-'prefs-help-email-required' => 'Электронон посты адрис хъæуы.',
-'loginsuccess' => 'Ныр та Википедийы архайыс $1, зæгъгæ, ахæм номæй.',
-'nouserspecified' => 'Дæхи бацамонын хъæуы: дæ архайæджы ном цы у.',
-'wrongpasswordempty' => 'Пароль афтид уыд. Афтæ нæ баззы, ныффыс-ма исты пароль.',
-'mailmypassword' => 'Рарвит мæм ног пароль',
-'noemail' => 'Архайæг $1 йæ электрон посты адрис нæ ныууагъта.',
-'mailerror' => 'Фыстæг арвитыны рæдыд: $1',
-'emailconfirmlink' => 'Дæ электронон посты адрис сфидар кæн',
-'loginlanguagelabel' => 'Æвзаг: $1',
+'welcomecreation' => '<h2>Æгас цу, $1!</h2><p>Регистрацигонд æрцыдтæ.',
+'yourname' => 'Архайæджы ном:',
+'yourpassword' => 'Пароль:',
+'yourpasswordagain' => 'Дæ пароль иу хатт ма:',
+'remembermypassword' => 'Системæ бахъуыды кæнæд мæ пароль ацы компьютерыл',
+'yourdomainname' => 'Дæ домен:',
+'login' => 'Дæхи бавдис системæйæн',
+'nav-login-createaccount' => 'Системæйæн дæхи бавдис',
+'userlogin' => 'Системæйæн дæхи бавдис',
+'logout' => 'Номсусæг суын',
+'userlogout' => 'Номсусæг су',
+'notloggedin' => 'Системæйæн дæхи нæ бацамыдтай',
+'nologin' => "Регистрацигонд нæма дæ? '''$1'''.",
+'nologinlink' => 'Регистраци',
+'createaccountmail' => 'адрисмæ гæсгæ',
+'badretype' => 'Дыууæ хатты иу пароль хъуамæ ныффыстаис',
+'loginsuccess' => 'Ныр та Википедийы архайыс $1, зæгъгæ, ахæм номæй.',
+'nouserspecified' => 'Дæхи бацамонын хъæуы: дæ архайæджы ном цы у.',
+'wrongpasswordempty' => 'Пароль афтид уыд. Афтæ нæ баззы, ныффыс-ма исты пароль.',
+'mailmypassword' => 'Рарвит мæм ног пароль',
+'noemail' => 'Архайæг $1 йæ электрон посты адрис нæ ныууагъта.',
+'mailerror' => 'Фыстæг арвитыны рæдыд: $1',
+'emailconfirmlink' => 'Дæ электронон посты адрис сфидар кæн',
+'loginlanguagelabel' => 'Æвзаг: $1',
# Password reset dialog
'resetpass_text' => '<!-- Бахæсс дæ текст ам -->',
@@ -342,8 +350,6 @@ $messages = array(
'resetpass_forbidden' => 'Пароль баивæн нæй',
'resetpass-submit-loggedin' => 'Пароль баив',
'resetpass-temp-password' => 'Рæстæгмæ пароль:',
-'resetpass-log' => 'Парольтæ аппарыны лог',
-'resetpass-comment' => 'Пароль аппарын цæмæн бахъуыд:',
# Edit page toolbar
'bold_sample' => 'Ацы текст бæзджын суыдзæн',
@@ -382,10 +388,9 @@ $messages = array(
'longpagewarning' => "'''РАГФÆДЗАХСТ: Ацы фарсы бæрцуат у $1 килобайты.
Сæ бæрцуат 32 килобайтæй фылдæр кæмæн у, ахæм фæрстæ иуæй-иу браузерты раст нæ зынынц.
Кæд ахæм вариант и, уæд ацы фарсæй цалдæр фарсы скæн.'''",
-'templatesused' => 'Ацы фарсы шаблонтæ:',
+'templatesused' => 'Ацы фарсы ис {{PLURAL:$1|шаблон|шаблоны}}:',
'template-protected' => '(æхгæд)',
'template-semiprotected' => '(æрдæг-æхгæд)',
-'deletelog-fulllog' => 'Æппæт лог фен',
'edit-conflict' => 'Иввдзинæдты конфликт.',
'edit-already-exists' => 'Ног фарс скæнæн нæй. Ахæм фарс ис.',
@@ -393,6 +398,9 @@ $messages = array(
'viewpagelogs' => 'Ацы фарсæн йæ логтæ равдис',
'nohistory' => 'Ацы фарсæн иввдзинæдты истори нæй.',
'currentrev' => 'Нырыккон верси',
+'currentrev-asof' => 'Нырыккон верси $1',
+'revisionasof' => 'Верси $1',
+'revision-info' => 'Верси $1; $2',
'previousrevision' => '← Раздæры',
'nextrevision' => 'Ногдæр верси →',
'currentrevisionlink' => 'Нырыккон верси',
@@ -403,7 +411,6 @@ $messages = array(
'page_last' => 'фæстаг',
'histlegend' => 'Куыд æй æмбарын: (нырыккон) = нырыккон версийæ хъауджыдæрдзинад, (раздæры) = раздæры версийæ хъауджыдæрдзинад, Ч = чысыл ивддзинад.',
'history-fieldset-title' => 'Истори фен',
-'deletedrev' => '[аппæрст]',
'histfirst' => 'раздæр',
'histlast' => 'фæстæдæр',
'historysize' => '({{PLURAL:$1|1 байт|$1 байты}})',
@@ -411,7 +418,7 @@ $messages = array(
# Revision feed
'history-feed-title' => 'Ивддзинæдты истори',
-'history-feed-item-nocomment' => '$1 $2', # user at time
+'history-feed-item-nocomment' => '$1 $2',
# Revision deletion
'rev-deleted-comment' => '(комментарий аппæрст у)',
@@ -427,22 +434,18 @@ $messages = array(
'mergehistory-reason' => 'Аххос:',
# Diffs
-'difference' => '(Дыууæ верситы ’хсæн хъауджы)',
-'lineno' => 'Рæнхъ $1:',
-'diff-width' => 'уæрх',
-'diff-height' => 'бæрзæнд',
+'difference' => '(Дыууæ верситы ’хсæн хъауджы)',
+'lineno' => 'Рæнхъ $1:',
# Search results
'searchresults' => 'Цы ссардæуы',
'searchresults-title' => 'Агуырды фæстиуæг: «$1»',
-'noexactmatch' => "'''Бæлвырд уыцы дзырд йæ сæргонды кæмæн уаид, ахæм статья нæй.''' [[:$1|Скæн æй]].",
-'noexactmatch-nocreate' => "'''«$1», зæгъгæ, бæлвырд уыцы дзырд йæ сæргонды кæмæн уаид, ахæм статья нæй.'''",
'titlematches' => 'Статьяты сæргæндты æмцаутæ',
'notitlematches' => 'Фæрсты сæргæндты нæй',
'textmatches' => 'Статьяты æмцаутæ',
-'prevn' => '$1 фæстæмæ',
-'nextn' => '$1 размæ',
-'viewprevnext' => 'Фен ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} фæстæмæ',
+'nextn' => '{{PLURAL:$1|$1}} размæ',
+'viewprevnext' => 'Фен ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|$2 дзырд|$2 дзырды}})',
'search-redirect' => '(рарвыст ардыгæй: $1)',
'search-section' => '(хай $1)',
@@ -452,32 +455,29 @@ $messages = array(
'search-mwsuggest-enabled' => 'æмбарынгæнæнтимæ',
'search-mwsuggest-disabled' => 'æнæ æмбарынгæнæнтæ',
'searchall' => 'æппæт',
-'showingresultstotal' => "Дæлæ дæ агуырды {{PLURAL:$4|'''$1''' фæстиуæг, æдæппæт сты '''$3'''|фæстиуджытæ '''$1 — $2''', æдæппæт сты '''$3'''}}",
'powersearch' => 'Сæрмагонд агуырд',
'powersearch-legend' => 'Сæрмагонд агуырд',
'powersearch-redir' => 'Рарвыстытæ дæр æвдис',
+# Quickbar
+'qbsettings' => 'Навигацион таг',
+'qbsettings-none' => 'Ма равдис',
+'qbsettings-fixedleft' => 'Галиуырдыгæй',
+'qbsettings-fixedright' => 'Рахизырдыгæй',
+'qbsettings-floatingleft' => 'Рахизырдыгæй ленккæнгæ',
+
# Preferences page
'mypreferences' => 'Æрмадз',
'prefsnologin' => 'Системæйæн дæхи нæ бацамыдтай',
-'qbsettings' => 'Навигацион таг',
-'qbsettings-none' => 'Ма равдис',
-'qbsettings-fixedleft' => 'Галиуырдыгæй',
-'qbsettings-fixedright' => 'Рахизырдыгæй',
-'qbsettings-floatingleft' => 'Рахизырдыгæй ленккæнгæ',
'changepassword' => 'Пароль баив',
'skin-preview' => 'Разæркаст',
-'dateformat' => 'Датæйы формат',
-'datetime' => 'Датæ æмæ рæстæг',
-'math_unknown_function' => 'нæзонгæ функци',
-'math_syntax_error' => 'синтаксисы рæдыд',
+'prefs-datetime' => 'Датæ æмæ рæстæг',
'prefs-watchlist' => 'Дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъд',
'prefs-watchlist-days' => 'Цал боны ивддзинæдтæ æвдисын:',
'saveprefs' => 'Афтæ уæд',
'rows' => 'Рæнхътæ:',
'timezonelegend' => 'Сахаты таг:',
'localtime' => 'Бынæттон рæстæг:',
-'timezoneselect' => 'Сахатон таг:',
'timezoneoffset' => 'Хъауджыдæрдзинад',
'servertime' => 'Серверы рæстæг:',
'timezoneregion-africa' => 'Африкæ',
@@ -488,6 +488,18 @@ $messages = array(
'timezoneregion-australia' => 'Австрали',
'timezoneregion-europe' => 'Европæ',
'timezoneregion-indian' => 'Индийы фурд',
+'youremail' => 'Дæ электронон посты адрис',
+'username' => 'Регистрацигонд ном:',
+'yourrealname' => 'Дæ æцæг ном*',
+'yourlanguage' => 'Техникон фыстыты æвзаг:',
+'yourvariant' => 'Æвзаджы вариант:',
+'yournick' => 'Фæсномыг (къухæрфыстытæм):',
+'badsiglength' => 'Æгæр даргъ къухæрфыст, хъуамæ {{PLURAL:$1|дамгъæйæ|дамгъæйæ}} къаддæр уа.',
+'yourgender' => 'Æрд:',
+'gender-male' => 'нæлгоймаг',
+'gender-female' => 'сылгоймаг',
+'email' => 'Эл. посты адрис',
+'prefs-help-email-required' => 'Электронон посты адрис хъæуы.',
# User rights
'userrights-nodatabase' => 'Бæрæггæнæнты базæ $1 нæй кæнæ уый у бынæттон базæ.',
@@ -553,8 +565,10 @@ $3',
'rc-enhanced-hide' => 'Лыстæгдзинæдтæ бамбæхс',
# Recent changes linked
-'recentchangeslinked' => 'Баст ивддзинæдтæ',
-'recentchangeslinked-page' => 'Фарсы ном:',
+'recentchangeslinked' => 'Баст ивддзинæдтæ',
+'recentchangeslinked-feed' => 'Баст ивддзинæдтæ',
+'recentchangeslinked-toolbox' => 'Баст ивддзинæдтæ',
+'recentchangeslinked-page' => 'Фарсы ном:',
# Upload
'upload' => 'Ног файл сæвæр',
@@ -563,7 +577,6 @@ $3',
'uploaderror' => 'Файл сæвæрыны рæдыд',
'filename' => 'Файлы ном',
'minlength1' => 'Файлы номы хъуамæ æппынкъаддæр иу дамгъæ уа.',
-'fileexists-thumb' => "<center>'''Ис ахæм файл'''</center>",
'successfulupload' => 'Файлы сæвæрд фæрæстмæ',
'savefile' => 'Бавæр æй',
'uploadvirus' => 'Файлы разынд вирус! Кæс $1',
@@ -575,15 +588,15 @@ $3',
'listfiles' => 'Нывты номхыгъд',
# File description page
-'filehist' => 'Файлы истори',
-'filehist-current' => 'нырыккон',
-'filehist-datetime' => 'Датæ/рæстæг',
-'filehist-user' => 'Архайæг',
-'filehist-filesize' => 'Файлы бæрцуат',
-'filehist-comment' => 'Фиппаинаг',
-'imagelinks' => 'Æрвитæнтæ файлмæ',
-'linkstoimage' => 'Ацы нывæй пайда {{PLURAL:$1|кæны иу фарс|кæнынц ахæм фæрстæ}}:',
-'shareduploadwiki-linktext' => 'файлы сфысты фарсы',
+'file-anchor-link' => 'Ныв',
+'filehist' => 'Файлы истори',
+'filehist-current' => 'нырыккон',
+'filehist-datetime' => 'Датæ/рæстæг',
+'filehist-user' => 'Архайæг',
+'filehist-filesize' => 'Файлы бæрцуат',
+'filehist-comment' => 'Фиппаинаг',
+'imagelinks' => 'Æрвитæнтæ файлмæ',
+'linkstoimage' => 'Ацы нывæй пайда {{PLURAL:$1|кæны иу фарс|кæнынц ахæм фæрстæ}}:',
# File deletion
'filedelete-submit' => 'Аппар',
@@ -603,8 +616,8 @@ $3',
'statistics' => 'Статистикæ',
'statistics-header-users' => 'Архайджыты статистикæ',
-'brokenredirects-edit' => '(баив æй)',
-'brokenredirects-delete' => '(аппар)',
+'brokenredirects-edit' => 'баив æй',
+'brokenredirects-delete' => 'аппар',
'withoutinterwiki-submit' => 'Равдис',
@@ -733,6 +746,7 @@ $3',
'uctop' => '(уæле баззад)',
'sp-contributions-blocklog' => 'Хъодыты лог',
+'sp-contributions-talk' => 'Ныхас',
# What links here
'whatlinkshere' => 'Цавæр æрвитæнтæ цæуынц ардæм',
@@ -788,44 +802,45 @@ $3',
'importuploaderrortemp' => 'Импорты файл æрвитын нæ фæрæстмæ. Нæй рæстæгмæ файлдон.',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Мæхи фарс (дæу тыххæй ам ныффысс)',
-'tooltip-pt-mytalk' => 'Æндæр ахрхайджытæ мын цы дзурынц',
-'tooltip-pt-preferences' => 'Википеди куыд кусы, уый срæвдз кæн дæ хъæуындзинæдтæм гæсгæ',
-'tooltip-pt-watchlist' => 'Дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъд',
-'tooltip-pt-mycontris' => 'Цы у мæ бавæрд',
-'tooltip-pt-login' => 'Системæмæ дæхи бацамонай, кæд æцæг дæ хæс нæу, уæддæр',
-'tooltip-pt-logout' => 'Регистрацигонд сеансæй рацу',
-'tooltip-ca-talk' => 'Фарсыл цы фыст у, уый тыххæй дискусси',
-'tooltip-ca-edit' => 'Ацы фарс дæ бон у ивын. Дæ хорзæхæй, «Фен уал æй» джыбыйæ пайда кæн',
-'tooltip-ca-viewsource' => 'Ацы фарс ивынæй æхгæд у, фæлæ йæ код фенæн и',
-'tooltip-ca-history' => 'Ацы фарсæн йæ раздæры верситæ (ивыны лог)',
-'tooltip-ca-protect' => 'Ацы фарс ивддзинæдтæй сæхгæн',
-'tooltip-ca-delete' => 'Аппар ацы фарс',
-'tooltip-ca-move' => 'Ацы статьяйы ном баив',
-'tooltip-ca-watch' => 'Дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъдмæ бафтау',
-'tooltip-search' => 'Ацы дзырд агур',
-'tooltip-search-go' => 'Кæд ахæм ном исты статьямæ и, уыцы статья равдис',
-'tooltip-search-fulltext' => 'Ацы текст цы фæрсты и, уыдон бацагур',
-'tooltip-n-mainpage' => 'Сæйраг фарсмæ рацу',
-'tooltip-n-portal' => 'Проекты тыххæй æмæ, дæу цы бон у, уый тыххæй дæр',
-'tooltip-n-recentchanges' => 'Чи æмæ цавæр статьяты баивта',
-'tooltip-n-randompage' => 'Æнæбары æвзæрст фарс фен',
-'tooltip-n-help' => 'Кæд цыдæртæ нæ бамбæрстай',
-'tooltip-t-whatlinkshere' => 'Ацы фарсмæ чи ’рвитынц, ахæм фæрсты номхыгъд',
-'tooltip-t-recentchangeslinked' => 'Ацы фарс кæмæ æрвиты, уыцы фæрсты фæстаг ивддзинæдтæ',
-'tooltip-t-contributions' => 'Ацы архайæг цы фæрстæ ивта, уый номхыгъд фен',
-'tooltip-t-upload' => 'Нывтæ кæнæ мультимедиа-файлтæ бавæр',
-'tooltip-t-specialpages' => 'Сæрмагонд фæрсты номхыгъд',
-'tooltip-t-print' => 'Ацы фарс мыхуырмæ цæттæ форматы',
-'tooltip-t-permalink' => 'Фарсы ацы версимæ æрвитæн (фæрстæ ивынц, ацы верси — никуы)',
-'tooltip-ca-nstab-user' => 'Архайæджы фарс фен',
-'tooltip-ca-nstab-project' => 'Проекты фарс',
-'tooltip-ca-nstab-image' => 'Нывы фарс',
-'tooltip-ca-nstab-category' => 'Категорийы фарс',
-'tooltip-minoredit' => 'Чысыл ивддзинад у',
-'tooltip-save' => 'Цы ивддзинæдтæ бахастай, уыдон бавæр',
-'tooltip-diff' => 'Раздæры версимæ абаргæйæ цы ивддзинæдтæ хæссыс текстмæ, уый фен',
-'tooltip-watch' => 'Ацы фарс, дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъдмæ бафтау',
+'tooltip-pt-userpage' => 'Мæхи фарс (дæу тыххæй ам ныффысс)',
+'tooltip-pt-mytalk' => 'Æндæр ахрхайджытæ мын цы дзурынц',
+'tooltip-pt-preferences' => 'Википеди куыд кусы, уый срæвдз кæн дæ хъæуындзинæдтæм гæсгæ',
+'tooltip-pt-watchlist' => 'Дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъд',
+'tooltip-pt-mycontris' => 'Цы у мæ бавæрд',
+'tooltip-pt-login' => 'Системæмæ дæхи бацамонай, кæд æцæг дæ хæс нæу, уæддæр',
+'tooltip-pt-logout' => 'Регистрацигонд сеансæй рацу',
+'tooltip-ca-talk' => 'Фарсыл цы фыст у, уый тыххæй дискусси',
+'tooltip-ca-edit' => 'Ацы фарс дæ бон у ивын. Дæ хорзæхæй, «Фен уал æй» джыбыйæ пайда кæн',
+'tooltip-ca-viewsource' => 'Ацы фарс ивынæй æхгæд у, фæлæ йæ код фенæн и',
+'tooltip-ca-history' => 'Ацы фарсæн йæ раздæры верситæ (ивыны лог)',
+'tooltip-ca-protect' => 'Ацы фарс ивддзинæдтæй сæхгæн',
+'tooltip-ca-delete' => 'Аппар ацы фарс',
+'tooltip-ca-move' => 'Ацы статьяйы ном баив',
+'tooltip-ca-watch' => 'Дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъдмæ бафтау',
+'tooltip-search' => 'Ацы дзырд агур',
+'tooltip-search-go' => 'Кæд ахæм ном исты статьямæ и, уыцы статья равдис',
+'tooltip-search-fulltext' => 'Ацы текст цы фæрсты и, уыдон бацагур',
+'tooltip-n-mainpage' => 'Сæйраг фарсмæ рацу',
+'tooltip-n-mainpage-description' => 'Сæйраг фарсмæ',
+'tooltip-n-portal' => 'Проекты тыххæй æмæ, дæу цы бон у, уый тыххæй дæр',
+'tooltip-n-recentchanges' => 'Чи æмæ цавæр статьяты баивта',
+'tooltip-n-randompage' => 'Æнæбары æвзæрст фарс фен',
+'tooltip-n-help' => 'Кæд цыдæртæ нæ бамбæрстай',
+'tooltip-t-whatlinkshere' => 'Ацы фарсмæ чи ’рвитынц, ахæм фæрсты номхыгъд',
+'tooltip-t-recentchangeslinked' => 'Ацы фарс кæмæ æрвиты, уыцы фæрсты фæстаг ивддзинæдтæ',
+'tooltip-t-contributions' => 'Ацы архайæг цы фæрстæ ивта, уый номхыгъд фен',
+'tooltip-t-upload' => 'Нывтæ кæнæ мультимедиа-файлтæ бавæр',
+'tooltip-t-specialpages' => 'Сæрмагонд фæрсты номхыгъд',
+'tooltip-t-print' => 'Ацы фарс мыхуырмæ цæттæ форматы',
+'tooltip-t-permalink' => 'Фарсы ацы версимæ æрвитæн (фæрстæ ивынц, ацы верси — никуы)',
+'tooltip-ca-nstab-user' => 'Архайæджы фарс фен',
+'tooltip-ca-nstab-project' => 'Проекты фарс',
+'tooltip-ca-nstab-image' => 'Нывы фарс',
+'tooltip-ca-nstab-category' => 'Категорийы фарс',
+'tooltip-minoredit' => 'Чысыл ивддзинад у',
+'tooltip-save' => 'Цы ивддзинæдтæ бахастай, уыдон бавæр',
+'tooltip-diff' => 'Раздæры версимæ абаргæйæ цы ивддзинæдтæ хæссыс текстмæ, уый фен',
+'tooltip-watch' => 'Ацы фарс, дæ цæст кæмæ дарыс, уыцы фæрсты номхыгъдмæ бафтау',
# Attribution
'others' => 'æндæртæ',
@@ -841,6 +856,10 @@ $3',
'skinname-myskin' => 'Мæхи',
'skinname-chick' => 'Карк',
+# Math errors
+'math_unknown_function' => 'нæзонгæ функци',
+'math_syntax_error' => 'синтаксисы рæдыд',
+
# Browsing diffs
'previousdiff' => '← Раздæры ивддзинад',
'nextdiff' => 'Фæстæдæр ивддзинад →',
@@ -904,8 +923,8 @@ $3',
'watchlisttools-edit' => 'Номхыгъд фен/баив',
# Special:Version
-'version' => 'MediaWiki-йы верси', # Not used as normal message but as header for the special page itself
-'version-version' => 'Верси',
+'version' => 'MediaWiki-йы верси',
+'version-version' => '(Верси $1)',
'version-software-version' => 'Верси',
# Special:SpecialPages
diff --git a/languages/messages/MessagesPa.php b/languages/messages/MessagesPa.php
index a412af73..c12e5b28 100644
--- a/languages/messages/MessagesPa.php
+++ b/languages/messages/MessagesPa.php
@@ -15,24 +15,22 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'ਮੀਡੀਆ',
- NS_SPECIAL => 'ਖਾਸ',
- NS_MAIN => '',
- NS_TALK => 'ਚਰਚਾ',
- NS_USER => 'ਮੈਂਬਰ',
- NS_USER_TALK => 'ਮੈਂਬਰ_ਚਰਚਾ',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_ਚਰਚਾ',
- NS_FILE => 'ਤਸਵੀਰ',
- NS_FILE_TALK => 'ਤਸਵੀਰ_ਚਰਚਾ',
- NS_MEDIAWIKI => 'ਮੀਡੀਆਵਿਕਿ',
- NS_MEDIAWIKI_TALK => 'ਮੀਡੀਆਵਿਕਿ_ਚਰਚਾ',
- NS_TEMPLATE => 'ਨਮੂਨਾ',
- NS_TEMPLATE_TALK => 'ਨਮੂਨਾ_ਚਰਚਾ',
- NS_HELP => 'ਮਦਦ',
- NS_HELP_TALK => 'ਮਦਦ_ਚਰਚਾ',
- NS_CATEGORY => 'ਸ਼੍ਰੇਣੀ',
- NS_CATEGORY_TALK => 'ਸ਼੍ਰੇਣੀ_ਚਰਚਾ'
+ NS_MEDIA => 'ਮੀਡੀਆ',
+ NS_SPECIAL => 'ਖਾਸ',
+ NS_TALK => 'ਚਰਚਾ',
+ NS_USER => 'ਮੈਂਬਰ',
+ NS_USER_TALK => 'ਮੈਂਬਰ_ਚਰਚਾ',
+ NS_PROJECT_TALK => '$1_ਚਰਚਾ',
+ NS_FILE => 'ਤਸਵੀਰ',
+ NS_FILE_TALK => 'ਤਸਵੀਰ_ਚਰਚਾ',
+ NS_MEDIAWIKI => 'ਮੀਡੀਆਵਿਕਿ',
+ NS_MEDIAWIKI_TALK => 'ਮੀਡੀਆਵਿਕਿ_ਚਰਚਾ',
+ NS_TEMPLATE => 'ਨਮੂਨਾ',
+ NS_TEMPLATE_TALK => 'ਨਮੂਨਾ_ਚਰਚਾ',
+ NS_HELP => 'ਮਦਦ',
+ NS_HELP_TALK => 'ਮਦਦ_ਚਰਚਾ',
+ NS_CATEGORY => 'ਸ਼੍ਰੇਣੀ',
+ NS_CATEGORY_TALK => 'ਸ਼੍ਰੇਣੀ_ਚਰਚਾ',
);
$digitTransformTable = array(
@@ -132,10 +130,18 @@ $messages = array(
'mainpagetext' => "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰ੍ਹਾਂ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''",
-'about' => 'ਇਸ ਬਾਰੇ',
-'article' => 'ਸਮੱਗਰੀ ਪੇਜ',
-'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ)',
-'cancel' => 'ਰੱਦ ਕਰੋ',
+'about' => 'ਇਸ ਬਾਰੇ',
+'article' => 'ਸਮੱਗਰੀ ਪੇਜ',
+'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ)',
+'cancel' => 'ਰੱਦ ਕਰੋ',
+'moredotdotdot' => 'ਹੋਰ...',
+'mypage' => 'ਮੇਰਾ ਪੇਜ',
+'mytalk' => 'ਮੇਰੀ ਗੱਲਬਾਤ',
+'anontalk' => 'ਇਹ IP ਲਈ ਗੱਲਬਾਤ',
+'navigation' => 'ਨੇਵੀਗੇਸ਼ਨ',
+'and' => '&#32;ਅਤੇ',
+
+# Cologne Blue skin
'qbfind' => 'ਖੋਜ',
'qbbrowse' => 'ਬਰਾਊਜ਼',
'qbedit' => 'ਸੋਧ',
@@ -143,12 +149,8 @@ $messages = array(
'qbpageinfo' => 'ਭਾਗ',
'qbmyoptions' => 'ਮੇਰੇ ਪੇਜ',
'qbspecialpages' => 'ਖਾਸ ਪੇਜ',
-'moredotdotdot' => 'ਹੋਰ...',
-'mypage' => 'ਮੇਰਾ ਪੇਜ',
-'mytalk' => 'ਮੇਰੀ ਗੱਲਬਾਤ',
-'anontalk' => 'ਇਹ IP ਲਈ ਗੱਲਬਾਤ',
-'navigation' => 'ਨੇਵੀਗੇਸ਼ਨ',
-'and' => '&#32;ਅਤੇ',
+'faq' => 'ਸਵਾਲ-ਜਵਾਬ',
+'faqpage' => 'Project:ਸਵਾਲ-ਜਵਾਬ',
'errorpagetitle' => 'ਗਲਤੀ',
'returnto' => '$1 ਤੇ ਵਾਪਸ ਜਾਓ',
@@ -196,7 +198,7 @@ $messages = array(
'otherlanguages' => 'ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ',
'redirectedfrom' => '($1 ਤੋਂ ਰੀ-ਡਿਰੈਕਟ)',
'redirectpagesub' => 'ਰੀ-ਡਿਰੈਕਟ ਪੇਜ',
-'lastmodifiedat' => 'ਇਹ ਪੇਜ ਆਖਰੀ ਵਾਰ $2, $1 ਨੂੰ ਸੋਧਿਆ ਗਿਆ ਸੀ।', # $1 date, $2 time
+'lastmodifiedat' => 'ਇਹ ਪੇਜ ਆਖਰੀ ਵਾਰ $2, $1 ਨੂੰ ਸੋਧਿਆ ਗਿਆ ਸੀ।',
'viewcount' => 'ਇਹ ਪੇਜ ਅਸੈੱਸ ਕੀਤਾ ਗਿਆ {{PLURAL:$1|ਇੱਕਵਾਰ|$1 ਵਾਰ}}.',
'protectedpage' => 'ਸੁਰੱਖਿਅਤ ਪੇਜ',
'jumpto' => 'ਜੰਪ ਕਰੋ:',
@@ -207,7 +209,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} ਬਾਰੇ',
'aboutpage' => 'Project:ਬਾਰੇ',
'copyright' => 'ਸਮੱਗਰੀ $1 ਹੇਠ ਉਪਲੱਬਧ ਹੈ।',
-'copyrightpagename' => '{{SITENAME}} ਕਾਪੀਰਾਈਟ',
'copyrightpage' => '{{ns:project}}:ਕਾਪੀਰਾਈਟ',
'currentevents' => 'ਮੌਜੂਦਾ ਇਵੈਂਟ',
'currentevents-url' => 'Project:ਮੌਜੂਦਾ ਈਵੈਂਟ',
@@ -215,8 +216,6 @@ $messages = array(
'disclaimerpage' => 'Project:ਆਮ ਡਿਕਲੇਅਮਰ',
'edithelp' => 'ਮੱਦਦ ਐਡੀਟਿੰਗ',
'edithelppage' => 'Help:ਐਡਟਿੰਗ',
-'faq' => 'ਸਵਾਲ-ਜਵਾਬ',
-'faqpage' => 'Project:ਸਵਾਲ-ਜਵਾਬ',
'helppage' => 'Help:ਸਮੱਗਰੀ',
'mainpage' => 'ਮੁੱਖ ਪੇਜ',
'mainpage-description' => 'ਮੁੱਖ ਪੇਜ',
@@ -269,7 +268,6 @@ A list of valid special pages can be found at [[Special:SpecialPages]].',
# General errors
'error' => 'ਗਲਤੀ',
'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
-'nodb' => 'ਡਾਟਾਬੇਸ $1 ਚੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ',
'readonly' => 'ਡਾਟਾਬੇਸ ਲਾਕ ਹੈ',
'internalerror' => 'ਅੰਦਰੂਨੀ ਗਲਤੀ',
'internalerror_info' => 'ਅੰਦਰੂਨੀ ਗਲਤੀ: $1',
@@ -278,7 +276,6 @@ A list of valid special pages can be found at [[Special:SpecialPages]].',
'viewsourcefor' => '$1 ਲਈ',
# Login and logout pages
-'logouttitle' => 'ਯੂਜ਼ਰ ਲਾਗਆਉਟ',
'logouttext' => "'''ਹੁਣ ਤੁਸੀਂ ਲਾਗਆਉਟ ਹੋ ਗਏ ਹੋ।'''
You can continue to use {{SITENAME}} anonymously, or you can log in again as the same or as a different user.
@@ -286,7 +283,6 @@ Note that some pages may continue to be displayed as if you were still logged in
'welcomecreation' => "== ਜੀ ਆਇਆਂ ਨੂੰ, $1! ==
Your account has been created. Don't forget to change your {{SITENAME}} preferences.",
-'loginpagetitle' => 'ਯੂਜ਼ਰ ਲਾਗਇਨ',
'yourname' => 'ਯੂਜ਼ਰ ਨਾਂ:',
'yourpassword' => 'ਪਾਸਵਰਡ:',
'yourpasswordagain' => 'ਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ:',
@@ -307,17 +303,7 @@ Your account has been created. Don't forget to change your {{SITENAME}} preferen
'createaccountmail' => 'ਈਮੇਲ ਨਾਲ',
'badretype' => 'ਤੁਹਾਡੇ ਵਲੋਂ ਦਿੱਤੇ ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।',
'userexists' => 'ਯੂਜ਼ਰ, ਜੋ ਦਿੱਤਾ ਹੈ, ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਇੱਕ ਵੱਖਰਾ ਨਾਂ ਚੁਣੋ ਜੀ।',
-'youremail' => 'ਈਮੇਲ:',
-'username' => 'ਯੂਜ਼ਰ ਨਾਂ:',
-'uid' => 'ਯੂਜ਼ਰ ID:',
-'yourrealname' => 'ਅਸਲੀ ਨਾਂ:',
-'yourlanguage' => 'ਭਾਸ਼ਾ:',
-'yournick' => 'ਛੋਟਾ ਨਾਂ:',
-'badsiglength' => 'ਛੋਟਾ ਨਾਂ (Nickname) ਬਹੁਤ ਲੰਮਾ ਹੋ ਗਿਆ ਹੈ, ਇਹ $1 ਅੱਖਰਾਂ ਤੋਂ ਘੱਟ ਚਾਹੀਦਾ ਹੈ।',
-'email' => 'ਈਮੇਲ',
-'prefs-help-realname' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
'loginerror' => 'ਲਾਗਇਨ ਗਲਤੀ',
-'prefs-help-email' => 'ਈਮੇਲ ਐਡਰੈੱਸ ਚੋਣਵਾਂ ਹੈ, ਪਰ ਇਹ ਤੁਹਾਨੂੰ ਹੋਰਾਂ ਵਲੋਂ ਤੁਹਾਡੇ ਨਾਲ ਤੁਹਾਡੇ ਯੂਜ਼ਰ ਜਾਂ ਯੂਜ਼ਰ_ਗੱਲਬਾਤ ਰਾਹੀਂ ਬਿਨਾਂ ਤੁਹਾਡੇ ਪਛਾਣ ਦੇ ਸੰਪਰਕ ਲਈ ਮੱਦਦ ਦਿੰਦਾ ਹੈ।',
'nocookiesnew' => 'ਯੂਜ਼ਰ ਅਕਾਊਂਟ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਪਰ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਹੈ।{{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.',
'nocookieslogin' => '{{SITENAME}} ਯੂਜ਼ਰਾਂ ਨੂੰ ਲਾਗਇਨ ਕਰਨ ਲਈ ਕੂਕੀਜ਼ ਵਰਤਦੀ ਹੈ। ਤੁਹਾਡੇ ਕੂਕੀਜ਼ ਆਯੋਗ ਕੀਤੇ ਹੋਏ ਹਨ। ਉਨ੍ਹਾਂ ਨੂੰ ਯੋਗ ਕਰਕੇ ਮੁੜ ਟਰਾਈ ਕਰੋ।',
'noname' => 'ਤੁਸੀਂ ਇੱਕ ਵੈਧ ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।',
@@ -356,16 +342,15 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'loginlanguagelabel' => 'ਭਾਸ਼ਾ: $1',
# Password reset dialog
-'resetpass' => 'ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਕਰੋ',
-'resetpass_announce' => 'ਤੁਸੀਂ ਇੱਕ ਆਰਜ਼ੀ ਈ-ਮੇਲ ਕੀਤੇ ਕੋਡ ਨਾਲ ਲਾਗਇਨ ਕੀਤਾ ਹੈ। ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਥੇ ਨਵਾਂ ਪਾਸਵਰਡ ਦੇਣਾ ਪਵੇਗਾ:',
-'resetpass_header' => 'ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਕਰੋ',
-'oldpassword' => 'ਪੁਰਾਣਾ ਪਾਸਵਰਡ:',
-'newpassword' => 'ਨਵਾਂ ਪਾਸਵਰਡ:',
-'retypenew' => 'ਨਵਾਂ ਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ:',
-'resetpass_submit' => 'ਪਾਸਵਰਡ ਸੈੱਟ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ',
-'resetpass_success' => 'ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਠੀਕ ਤਰਾਂ ਬਦਲਿਆ ਗਿਆ ਹੈ! ਹੁਣ ਤੁਸੀਂ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ...',
-'resetpass_bad_temporary' => 'ਗਲਤ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਹੈ। ਤੁਸੀਂ ਸ਼ਾਇਦ ਪਹਿਲਾਂ ਹੀ ਆਪਣਾ ਪਾਸਵਰਡ ਬਦਲ ਚੁੱਕੇ ਹੋ ਜਾਂ ਇੱਕ ਨਵੇਂ ਆਰਜ਼ੀ ਪਾਸਵਰਡ ਦੀ ਮੰਗ ਭੇਜੀ ਹੈ।',
-'resetpass_forbidden' => 'ਇਹ ਵਿਕਿ ਲਈ ਪਾਸਵਰਡ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।',
+'resetpass' => 'ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਕਰੋ',
+'resetpass_announce' => 'ਤੁਸੀਂ ਇੱਕ ਆਰਜ਼ੀ ਈ-ਮੇਲ ਕੀਤੇ ਕੋਡ ਨਾਲ ਲਾਗਇਨ ਕੀਤਾ ਹੈ। ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਥੇ ਨਵਾਂ ਪਾਸਵਰਡ ਦੇਣਾ ਪਵੇਗਾ:',
+'resetpass_header' => 'ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਕਰੋ',
+'oldpassword' => 'ਪੁਰਾਣਾ ਪਾਸਵਰਡ:',
+'newpassword' => 'ਨਵਾਂ ਪਾਸਵਰਡ:',
+'retypenew' => 'ਨਵਾਂ ਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ:',
+'resetpass_submit' => 'ਪਾਸਵਰਡ ਸੈੱਟ ਕਰੋ ਅਤੇ ਲਾਗਇਨ ਕਰੋ',
+'resetpass_success' => 'ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਠੀਕ ਤਰਾਂ ਬਦਲਿਆ ਗਿਆ ਹੈ! ਹੁਣ ਤੁਸੀਂ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ...',
+'resetpass_forbidden' => 'ਇਹ ਵਿਕਿ ਲਈ ਪਾਸਵਰਡ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।',
# Edit page toolbar
'bold_sample' => 'ਬੋਲਡ ਟੈਕਸਟ',
@@ -398,7 +383,6 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'blockedtitle' => 'ਯੂਜ਼ਰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ',
'whitelistedittitle' => 'ਸੋਧਣ ਲਈ ਲਾਗਇਨ ਕਰਨਾ ਪਵੇਗਾ',
'whitelistedittext' => 'ਪੇਜ ਸੋਧਣ ਲਈ ਤੁਹਾਨੂੰ $1 ਕਰਨਾ ਪਵੇਗਾ।',
-'confirmedittitle' => 'ਐਡੀਟ ਕਰਨ ਲਈ ਈਮੇਲ ਕਨਫਰਮੇਸ਼ਨ ਦੀ ਲੋੜ ਹੈ',
'nosuchsectiontitle' => 'ਇੰਝ ਦਾ ਕੋਈ ਸ਼ੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।',
'loginreqtitle' => 'ਲਾਗਇਨ ਚਾਹੀਦਾ ਹੈ',
'loginreqlink' => 'ਲਾਗਇਨ',
@@ -439,7 +423,6 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'last' => 'ਆਖਰੀ',
'page_first' => 'ਪਹਿਲਾਂ',
'page_last' => 'ਆਖਰੀ',
-'deletedrev' => '[ਹਟਾਇਆ]',
'histfirst' => 'ਸਭ ਤੋਂ ਪਹਿਲਾਂ',
'histlast' => 'ਸਭ ਤੋਂ ਨਵਾਂ',
'historysize' => '($1 ਬਾਈਟ)',
@@ -456,8 +439,8 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'revdelete-nooldid-title' => 'ਕੋਈ ਟਾਰਗੇਟ ਰੀਵਿਜ਼ਨ ਨਹੀਂ',
'revdelete-legend' => 'ਪਾਬੰਦੀਆਂ ਸੈੱਟ ਕਰੋ:',
'revdelete-hide-text' => 'ਰੀਵਿਜ਼ਨ ਟੈਕਸਟ ਓਹਲੇ',
-'revdelete-hide-name' => 'ਐਕਸ਼ਨ ਅਤੇ ਟਾਰਗੇਟ ਓਹਲੇ',
'revdelete-hide-image' => 'ਫਾਇਲ ਸਮੱਗਰੀ ਓਹਲੇ',
+'revdelete-hide-name' => 'ਐਕਸ਼ਨ ਅਤੇ ਟਾਰਗੇਟ ਓਹਲੇ',
'revdelete-log' => 'ਕਾਰਨ:',
'revdelete-submit' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਉੱਤੇ ਲਾਗੂ ਕਰੋ',
'pagehist' => 'ਪੇਜ ਦਾ ਅਤੀਤ',
@@ -468,66 +451,68 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'lineno' => 'ਲਾਈਨ $1:',
'compareselectedversions' => 'ਚੁਣੇ ਵਰਜਨਾਂ ਦੀ ਤੁਲਨਾ',
'editundo' => 'ਵਾਪਸ(undo)',
-'diff-width' => 'ਚੌੜਾਈ',
-'diff-height' => 'ਉਚਾਈ',
# Search results
'searchresults' => 'ਖੋਜ ਨਤੀਜੇ',
'searchresulttext' => '{{SITENAME}} ਖੋਜ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਵੋ, ਵੇਖੋ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "ਤੁਸੀਂ '''[[:$1]]''' ਲਈ ਖੋਜ ਕੀਤੀ।",
'searchsubtitleinvalid' => "ਤੁਸੀਂ'''$1''' ਲਈ ਖੋਜ ਕੀਤੀ।",
-'noexactmatch' => "'''\"\$1\"''' ਟਾਇਟਲ ਨਾਲ ਦਾ ਕੋਈ ਪੇਜ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ [[:\$1|ਇਹ ਪੇਜ]] ਬਣਾ ਸਕਦੇ ਹੋ।",
'titlematches' => 'ਆਰਟੀਕਲ ਟੈਕਸਟ ਮਿਲਦਾ',
'notitlematches' => 'ਕੋਈ ਪੇਜ ਟਾਇਟਲ ਨਹੀਂ ਮਿਲਦਾ',
'textmatches' => 'ਪੇਜ ਟੈਕਸਟ ਮਿਲਦਾ',
'notextmatches' => 'ਕੋਈ ਪੇਜ ਟੈਕਸਟ ਨਹੀਂ ਮਿਲਦਾ',
-'prevn' => 'ਪਿੱਛੇ $1',
-'nextn' => 'ਅੱਗੇ $1',
-'viewprevnext' => 'ਵੇਖੋ ($1) ($2) ($3)',
+'prevn' => 'ਪਿੱਛੇ {{PLURAL:$1|$1}}',
+'nextn' => 'ਅੱਗੇ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ਵੇਖੋ ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:ਸਮੱਗਰੀ',
'searchall' => 'ਸਭ',
'powersearch' => 'ਖੋਜ',
+# Quickbar
+'qbsettings' => 'ਤੁਰੰਤ ਬਾਰ',
+'qbsettings-none' => 'ਕੋਈ ਨਹੀਂ',
+
# Preferences page
-'preferences' => 'ਮੇਰੀ ਪਸੰਦ',
-'mypreferences' => 'ਮੇਰੀ ਪਸੰਦ',
-'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
-'prefsnologin' => 'ਲਾਗਇਨ ਨਹੀਂ',
-'prefsnologintext' => 'ਯੂਜ਼ਰ ਪਸੰਦ ਸੈੱਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ [[Special:UserLogin|logged in]] ਕਰਨਾ ਪਵੇਗਾ।',
-'prefsreset' => 'ਪਸੰਦੀ ਸਟੋਰੇਜ਼ ਤੋਂ ਮੁੜ-ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ।',
-'qbsettings' => 'ਤੁਰੰਤ ਬਾਰ',
-'qbsettings-none' => 'ਕੋਈ ਨਹੀਂ',
-'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
-'skin' => 'ਸਕਿਨ',
-'skin-preview' => 'ਝਲਕ',
-'math' => 'ਗਣਿਤ',
-'dateformat' => 'ਮਿਤੀ ਫਾਰਮੈਟ',
-'datedefault' => 'ਕੋਈ ਪਸੰਦ ਨਹੀਂ',
-'datetime' => 'ਮਿਤੀ ਅਤੇ ਸਮਾਂ',
-'math_failure' => 'ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ',
-'math_unknown_error' => 'ਅਣਜਾਣ ਗਲਤੀ',
-'math_unknown_function' => 'ਅਣਜਾਣ ਫੰਕਸ਼ਨ',
-'math_lexing_error' => 'lexing ਗਲਤੀ',
-'math_syntax_error' => 'ਸੰਟੈਕਸ ਗਲਤੀ',
-'prefs-personal' => 'ਯੂਜ਼ਰ ਪਰੋਫਾਇਲ',
-'prefs-rc' => 'ਤਾਜ਼ਾ ਬਦਲਾਅ',
-'prefs-watchlist' => 'ਵਾਚ-ਲਿਸਟ',
-'prefs-misc' => 'ਫੁਟਕਲ',
-'saveprefs' => 'ਸੰਭਾਲੋ',
-'resetprefs' => 'ਰੀ-ਸੈੱਟ',
-'textboxsize' => 'ਸੰਪਾਦਨ',
-'rows' => 'ਕਤਾਰਾਂ:',
-'columns' => 'ਕਾਲਮ:',
-'searchresultshead' => 'ਖੋਜ',
-'resultsperpage' => 'ਪ੍ਰਤੀ ਪੇਜ ਹਿੱਟ:',
-'savedprefs' => 'ਤੁਹਾਡੀ ਪਸੰਦ ਸੰਭਾਲੀ ਗਈ ਹੈ।',
-'timezonelegend' => 'ਟਾਈਮ ਜ਼ੋਨ',
-'localtime' => 'ਲੋਕਲ ਟਾਈਮ',
-'servertime' => 'ਸਰਵਰ ਟਾਈਮ',
-'guesstimezone' => 'ਬਰਾਊਜ਼ਰ ਤੋਂ ਭਰੋ',
-'allowemail' => 'ਹੋਰ ਯੂਜ਼ਰਾਂ ਤੋਂ ਈਮੇਲ ਯੋਗ ਕਰੋ',
-'default' => 'ਡਿਫਾਲਟ',
-'files' => 'ਫਾਇਲਾਂ',
+'preferences' => 'ਮੇਰੀ ਪਸੰਦ',
+'mypreferences' => 'ਮੇਰੀ ਪਸੰਦ',
+'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
+'prefsnologin' => 'ਲਾਗਇਨ ਨਹੀਂ',
+'prefsnologintext' => 'ਯੂਜ਼ਰ ਪਸੰਦ ਸੈੱਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ [[Special:UserLogin|logged in]] ਕਰਨਾ ਪਵੇਗਾ।',
+'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
+'prefs-skin' => 'ਸਕਿਨ',
+'skin-preview' => 'ਝਲਕ',
+'prefs-math' => 'ਗਣਿਤ',
+'datedefault' => 'ਕੋਈ ਪਸੰਦ ਨਹੀਂ',
+'prefs-datetime' => 'ਮਿਤੀ ਅਤੇ ਸਮਾਂ',
+'prefs-personal' => 'ਯੂਜ਼ਰ ਪਰੋਫਾਇਲ',
+'prefs-rc' => 'ਤਾਜ਼ਾ ਬਦਲਾਅ',
+'prefs-watchlist' => 'ਵਾਚ-ਲਿਸਟ',
+'prefs-misc' => 'ਫੁਟਕਲ',
+'saveprefs' => 'ਸੰਭਾਲੋ',
+'resetprefs' => 'ਰੀ-ਸੈੱਟ',
+'prefs-editing' => 'ਸੰਪਾਦਨ',
+'rows' => 'ਕਤਾਰਾਂ:',
+'columns' => 'ਕਾਲਮ:',
+'searchresultshead' => 'ਖੋਜ',
+'resultsperpage' => 'ਪ੍ਰਤੀ ਪੇਜ ਹਿੱਟ:',
+'savedprefs' => 'ਤੁਹਾਡੀ ਪਸੰਦ ਸੰਭਾਲੀ ਗਈ ਹੈ।',
+'timezonelegend' => 'ਟਾਈਮ ਜ਼ੋਨ',
+'localtime' => 'ਲੋਕਲ ਟਾਈਮ',
+'servertime' => 'ਸਰਵਰ ਟਾਈਮ',
+'guesstimezone' => 'ਬਰਾਊਜ਼ਰ ਤੋਂ ਭਰੋ',
+'allowemail' => 'ਹੋਰ ਯੂਜ਼ਰਾਂ ਤੋਂ ਈਮੇਲ ਯੋਗ ਕਰੋ',
+'default' => 'ਡਿਫਾਲਟ',
+'prefs-files' => 'ਫਾਇਲਾਂ',
+'youremail' => 'ਈਮੇਲ:',
+'username' => 'ਯੂਜ਼ਰ ਨਾਂ:',
+'uid' => 'ਯੂਜ਼ਰ ID:',
+'yourrealname' => 'ਅਸਲੀ ਨਾਂ:',
+'yourlanguage' => 'ਭਾਸ਼ਾ:',
+'yournick' => 'ਛੋਟਾ ਨਾਂ:',
+'badsiglength' => 'ਛੋਟਾ ਨਾਂ (Nickname) ਬਹੁਤ ਲੰਮਾ ਹੋ ਗਿਆ ਹੈ, ਇਹ $1 ਅੱਖਰਾਂ ਤੋਂ ਘੱਟ ਚਾਹੀਦਾ ਹੈ।',
+'email' => 'ਈਮੇਲ',
+'prefs-help-realname' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
+'prefs-help-email' => 'ਈਮੇਲ ਐਡਰੈੱਸ ਚੋਣਵਾਂ ਹੈ, ਪਰ ਇਹ ਤੁਹਾਨੂੰ ਹੋਰਾਂ ਵਲੋਂ ਤੁਹਾਡੇ ਨਾਲ ਤੁਹਾਡੇ ਯੂਜ਼ਰ ਜਾਂ ਯੂਜ਼ਰ_ਗੱਲਬਾਤ ਰਾਹੀਂ ਬਿਨਾਂ ਤੁਹਾਡੇ ਪਛਾਣ ਦੇ ਸੰਪਰਕ ਲਈ ਮੱਦਦ ਦਿੰਦਾ ਹੈ।',
# User rights
'userrights-lookup-user' => 'ਯੂਜ਼ਰ ਗਰੁੱਪ ਦੇਖਭਾਲ',
@@ -560,12 +545,13 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
'rc_categories_any' => 'ਕੋਈ ਵੀ',
# Recent changes linked
-'recentchangeslinked' => 'ਸਬੰਧਿਤ ਬਦਲਾਅ',
+'recentchangeslinked' => 'ਸਬੰਧਿਤ ਬਦਲਾਅ',
+'recentchangeslinked-feed' => 'ਸਬੰਧਿਤ ਬਦਲਾਅ',
+'recentchangeslinked-toolbox' => 'ਸਬੰਧਿਤ ਬਦਲਾਅ',
# Upload
'upload' => 'ਫਾਇਲ ਅੱਪਲੋਡ ਕਰੋ',
'uploadbtn' => 'ਫਾਇਲ ਅੱਪਲੋਡ ਕਰੋ',
-'reupload' => 'ਰੀ-ਅੱਪਲੋਡ',
'reuploaddesc' => 'ਅੱਪਲੋਡ ਫਾਰਮ ਉੱਤੇ ਜਾਓ।',
'uploadnologin' => 'ਲਾਗਇਨ ਨਹੀਂ ਹੋ',
'uploadnologintext' => 'ਤੁਹਾਨੂੰ[[Special:UserLogin|logged in] ਕਰਨਾ ਪਵੇਗਾ]
@@ -588,7 +574,6 @@ to upload files.',
* ਅੱਪਲੋਡ ਕੀਤੀ ਫਾਇਲ ਦਾ ਨਾਂ: '''<tt>[[:$1]]</tt>'''
* ਮੌਜੂਦ ਫਾਇਲ ਦਾ ਨਾਂ: '''<tt>[[:$2]]</tt>'''
ਇੱਕ ਵੱਖਰਾ ਨਾਂ ਚੁਣੋ ਜੀ",
-'fileexists-thumb' => "<center>'''ਮੌਜੂਦ ਚਿੱਤਰ'''</center>",
'successfulupload' => 'ਠੀਕ ਤਰ੍ਹਾਂ ਅੱਪਲੋਡ',
'uploadwarning' => 'ਅੱਪਲੋਡ ਚੇਤਾਵਨੀ',
'savefile' => 'ਫਾਇਲ ਸੰਭਾਲੋ',
@@ -605,6 +590,7 @@ to upload files.',
'upload-curl-error28' => 'ਅੱਪਲੋਡ ਟਾਈਮ-ਆਉਟ',
'license' => 'ਲਾਈਸੈਂਸਿੰਗ:',
+'license-header' => 'ਲਾਈਸੈਂਸਿੰਗ:',
'nolicense' => 'ਕੁਝ ਵੀ ਚੁਣਿਆ',
'license-nopreview' => '(ਝਲਕ ਉਪਲੱਬਧ ਨਹੀਂ)',
'upload_source_file' => ' (ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਇੱਕ ਫਾਇਲ)',
@@ -619,6 +605,7 @@ to upload files.',
'listfiles_description' => 'ਵੇਰਵਾ',
# File description page
+'file-anchor-link' => 'ਫਾਇਲ',
'filehist' => 'ਫਾਇਲ ਅਤੀਤ',
'filehist-deleteall' => 'ਸਭ ਹਟਾਓ',
'filehist-deleteone' => 'ਇਹ ਹਟਾਓ',
@@ -630,7 +617,6 @@ to upload files.',
'filehist-filesize' => 'ਫਾਇਲ ਆਕਾਰ',
'filehist-comment' => 'ਟਿੱਪਣੀ',
'imagelinks' => 'ਲਿੰਕ',
-'noimage-linktext' => 'ਇਹ ਅੱਪਲੋਡ',
'uploadnewversion-linktext' => 'ਇਸ ਫਾਇਲ ਦਾ ਇੱਕ ਨਵਾਂ ਵਰਜਨ ਅੱਪਲੋਡ ਕਰੋ',
# File reversion
@@ -656,8 +642,8 @@ to upload files.',
'statistics-header-users' => 'ਯੂਜ਼ਰ ਅੰਕੜੇ',
'statistics-mostpopular' => 'ਸਭ ਤੋਂ ਵੱਧ ਵੇਖੇ ਪੇਜ',
-'brokenredirects-edit' => '(ਸੋਧ)',
-'brokenredirects-delete' => '(ਹਟਾਓ)',
+'brokenredirects-edit' => 'ਸੋਧ',
+'brokenredirects-delete' => 'ਹਟਾਓ',
# Miscellaneous special pages
'unusedcategories' => 'ਅਣਵਰਤੀਆਂ ਕੈਟਾਗਰੀਆਂ',
@@ -783,6 +769,7 @@ to upload files.',
'contribsub2' => '$1 ($2) ਲਈ',
'sp-contributions-newbies-sub' => 'ਨਵੇਂ ਅਕਾਊਂਟਾਂ ਲਈ',
+'sp-contributions-talk' => 'ਗੱਲਬਾਤ',
'sp-contributions-username' => 'IP ਐਡਰੈੱਸ ਜਾਂ ਯੂਜ਼ਰ ਨਾਂ:',
'sp-contributions-submit' => 'ਖੋਜ',
@@ -809,7 +796,7 @@ to upload files.',
'ipblocklist-submit' => 'ਖੋਜ',
'blocklistline' => '$1, $2 ਬਲਾਕ $3 ($4)',
'infiniteblock' => 'ਬੇਅੰਤ',
-'expiringblock' => '$1 ਮਿਆਦ ਖਤਮ',
+'expiringblock' => '$1 $2 ਮਿਆਦ ਖਤਮ',
'anononlyblock' => 'anon. ਹੀ',
'emailblock' => 'ਈਮੇਲ ਬਲਾਕ ਹੈ',
'blocklink' => 'ਬਲਾਕ',
@@ -909,6 +896,13 @@ to upload files.',
'skinname-chick' => 'ਚੀਚਕ',
'skinname-simple' => 'ਸੈਂਪਲ',
+# Math errors
+'math_failure' => 'ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ',
+'math_unknown_error' => 'ਅਣਜਾਣ ਗਲਤੀ',
+'math_unknown_function' => 'ਅਣਜਾਣ ਫੰਕਸ਼ਨ',
+'math_lexing_error' => 'lexing ਗਲਤੀ',
+'math_syntax_error' => 'ਸੰਟੈਕਸ ਗਲਤੀ',
+
# Patrol log
'patrol-log-auto' => '(ਆਟੋਮੈਟਿਕ)',
@@ -968,7 +962,7 @@ to upload files.',
'exif-subjectdistancerange-1' => 'ਮਾਈਕਰੋ',
'exif-subjectdistancerange-2' => 'ਝਲਕ ਬੰਦ ਕਰੋ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ਕਿਲੋਮੀਟਰ ਪ੍ਰਤੀ ਘੰਟਾ',
'exif-gpsspeed-m' => 'ਮੀਲ ਪ੍ਰਤੀ ਘੰਟਾ',
@@ -1028,7 +1022,7 @@ to upload files.',
'watchlistedit-raw-removed' => '{{PLURAL:$1|1 title was|$1 titles were}} ਹਟਾਓ:',
# Special:Version
-'version' => 'ਵਰਜਨ', # Not used as normal message but as header for the special page itself
+'version' => 'ਵਰਜਨ',
# Special:SpecialPages
'specialpages' => 'ਖਾਸ ਪੇਜ',
diff --git a/languages/messages/MessagesPag.php b/languages/messages/MessagesPag.php
index c8805103..96987e01 100644
--- a/languages/messages/MessagesPag.php
+++ b/languages/messages/MessagesPag.php
@@ -21,15 +21,17 @@ $messages = array(
# Categories related messages
'category_header' => 'Saray artikulo ed category ya "$1"',
-'about' => 'Nipakar ed',
-'article' => 'Bolong na laman',
-'cancel' => 'I-tonda',
+'about' => 'Nipakar ed',
+'article' => 'Bolong na laman',
+'cancel' => 'I-tonda',
+'mypage' => 'Say bolong ko',
+'mytalk' => 'Say tongtongan ko',
+'anontalk' => 'Tongtongan para ed sayan IP',
+'and' => '&#32;san',
+
+# Cologne Blue skin
'qbpageoptions' => 'Ayan bolong',
'qbspecialpages' => 'Niduma ran Bolobolong',
-'mypage' => 'Say bolong ko',
-'mytalk' => 'Say tongtongan ko',
-'anontalk' => 'Tongtongan para ed sayan IP',
-'and' => '&#32;san',
'returnto' => 'Impawel ed $1.',
'help' => 'Tolong',
@@ -59,7 +61,7 @@ $messages = array(
'categorypage' => 'Nengnengen so bolong na saray category',
'viewtalkpage' => 'Nengnengen so tongtongan',
'otherlanguages' => 'Diad arom ran salita',
-'lastmodifiedat' => 'Say ayan bolong: otet ya binalo nen $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Say ayan bolong: otet ya binalo nen $2, $1.',
'protectedpage' => 'Iyayagel yan bolong',
'jumptosearch' => 'anapen',
@@ -88,7 +90,6 @@ $messages = array(
'nstab-mediawiki' => 'Pakabat',
# General errors
-'nodb' => 'Aga napili so database ya $1',
'badarticleerror' => 'Aga sarag ya gaween so ayan action ed sayan bolong.',
'cannotdelete' => 'Aga nabural so nibagan bolong o file. (Sarag ton abural la na arom.)',
'badtitle' => 'Aga sarag ya titulo',
@@ -104,8 +105,6 @@ $messages = array(
'createaccount' => 'Mangawa na account',
'gotaccountlink' => 'Onloob',
'badretype' => 'Aga parehas so en-type mo ran password.',
-'yourrealname' => 'Tuwan ngaran:',
-'badsiglength' => 'Andukey ya maong so nickname. Say dukey to dapat mas daiset en say $1 ya character.',
'acct_creation_throttle_hit' => 'Sorry, nangawala ka la na $1 account. Agka la makapangawa na account.',
'accountcreated' => 'Agawa so account',
'accountcreatedtext' => 'Agawa la so user account para $1.',
@@ -128,7 +127,6 @@ $messages = array(
'blockededitsource' => "Wadyad leksab so text na '''saray binalom''' anggag '''$1''':",
'whitelistedittitle' => 'Nakaukulan ya onloob umpian makapanbalo',
'whitelistedittext' => 'Nakaukulan mo ya $1 umpian nabalo o nadagdagan ray bolobolong.',
-'confirmedittitle' => 'Nakaukulan na e-mail confirmation para makapan-edit',
'loginreqtitle' => 'Nakaukulan kan Onloob',
'loginreqlink' => 'onloob',
'loginreqpagetext' => 'Nakaukulan kan $1 umpian nanengneng so arom ran bolobolong.',
@@ -159,17 +157,20 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
'searchhelp-url' => 'Help:Saray Laman',
'powersearch' => 'Anapen',
+# Quickbar
+'qbsettings-none' => 'Anggapo',
+
# Preferences page
-'mypreferences' => 'Saray preference ko',
-'qbsettings-none' => 'Anggapo',
-'changepassword' => 'Salatan so password',
-'datedefault' => 'Anggapoy preference',
-'datetime' => 'Bilang na agew san oras',
-'math_unknown_error' => 'aga-antan error',
-'prefs-rc' => 'Sampot ran binalo',
-'prefs-watchlist' => 'Listaan na babantayan',
-'textboxsize' => 'Babaloen',
-'searchresultshead' => 'Anapen',
+'mypreferences' => 'Saray preference ko',
+'changepassword' => 'Salatan so password',
+'datedefault' => 'Anggapoy preference',
+'prefs-datetime' => 'Bilang na agew san oras',
+'prefs-rc' => 'Sampot ran binalo',
+'prefs-watchlist' => 'Listaan na babantayan',
+'prefs-editing' => 'Babaloen',
+'searchresultshead' => 'Anapen',
+'yourrealname' => 'Tuwan ngaran:',
+'badsiglength' => 'Andukey ya maong so nickname. Say dukey to dapat mas daiset en say $1 ya character.',
# User rights
'userrights-user-editname' => 'Isulat so username:',
@@ -180,7 +181,9 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
'show' => 'Ipanengneng',
# Recent changes linked
-'recentchangeslinked' => 'Kabiangan ran binalo',
+'recentchangeslinked' => 'Kabiangan ran binalo',
+'recentchangeslinked-feed' => 'Kabiangan ran binalo',
+'recentchangeslinked-toolbox' => 'Kabiangan ran binalo',
# Upload
'upload' => 'Mangisigep na file',
@@ -195,8 +198,7 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
'listfiles_name' => 'Ngaran',
# File description page
-'imagelinks' => 'Saray Gawing',
-'noimage-linktext' => 'I-segep ya',
+'imagelinks' => 'Saray Gawing',
# MIME search
'download' => 'mangileksab (download)',
@@ -319,7 +321,7 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
'ipusubmit' => 'Aga la isebel so ayan address',
'ipblocklist' => 'Listaan na saray sebel ran IP address san username',
'ipblocklist-submit' => 'Anapen',
-'expiringblock' => 'nabalang no $1',
+'expiringblock' => 'nabalang no $1 $2',
'blocklink' => 'isara',
'contribslink' => 'saray entolong to',
@@ -339,10 +341,9 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
'export-addcat' => 'Iyarom',
# Namespace 8 related
-'allmessages' => 'Saray pakabat na oksoy',
-'allmessagesname' => 'Ngaran',
-'allmessagestext' => 'Aya so listaan na amin ya pakabat na oksoy ya naanap ed MediaWiki namespace.',
-'allmessagesmodified' => 'Ipanengneng labat so abalo',
+'allmessages' => 'Saray pakabat na oksoy',
+'allmessagesname' => 'Ngaran',
+'allmessagestext' => 'Aya so listaan na amin ya pakabat na oksoy ya naanap ed MediaWiki namespace.',
# Thumbnails
'filemissing' => 'Nababalang so file',
@@ -362,7 +363,10 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
'tooltip-ca-nstab-mediawiki' => 'Nengnengen so pakabat na oksoy',
# Attribution
-'lastmodifiedatby' => 'Sampot ya binalo yan bolong nen agew ya $2, $1 nen $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Sampot ya binalo yan bolong nen agew ya $2, $1 nen $3.',
+
+# Math errors
+'math_unknown_error' => 'aga-antan error',
# Special:NewFiles
'ilsubmit' => 'Anapen',
diff --git a/languages/messages/MessagesPam.php b/languages/messages/MessagesPam.php
index 8b5e32e5..08c784cf 100644
--- a/languages/messages/MessagesPam.php
+++ b/languages/messages/MessagesPam.php
@@ -44,6 +44,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'tog-enotifminoredits' => 'E-mail mu ku kareng mangalating alili da reng bulung',
'tog-enotifrevealaddr' => 'Ipakit me ing kanakung e-mail address kareng pamanabisang sulat',
'tog-shownumberswatching' => 'Ipakit la reng bilang da reng magbanteng talagamit',
+'tog-oldsig' => 'I-preview ya ing salukuyan a pirma',
'tog-fancysig' => 'Ituring yang wikitext ing pirma (alang automatic link o tambing a suglung)',
'tog-externaleditor' => 'Gumamit a pangkilual a editor kapamilatan ning kabud',
'tog-externaldiff' => 'Tambing kang gumamit aliwa (diff) ibat a panglual',
@@ -122,7 +123,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'category-media-header' => 'Media king kategoriyang "$1"',
'category-empty' => "''Ala yang bulung o media ngening salukuyan ining kategoriya.''",
'hidden-categories' => '{{PLURAL:$1|Makasalikut a kategoriya|Makasalikut a kategoriya}}',
-'hidden-category-category' => 'Pakasalikut a categoria', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Pakasalikut a categoria',
'category-subcat-count' => '{{PLURAL:$2|Bukud mung ing makatuking subkategoriya ing atyu kaniting kategoriya.|Deng makatuking subkategoriya ing kayabe kaniting kategoriya {{PLURAL:$1|subkategoriya|$1 subkategoriya}}, ibat king $2 kabilugan.}}',
'category-subcat-count-limited' => 'Ining kategoriya bibilugan de reng makatuking {{PLURAL:$1|subkategoriya|$1 subkategoriya}}.',
'category-article-count' => '{{PLURAL:$2|Bukud mung ing makatuking bulung ing kayabe king kategoriyang iti.| {{PLURAL:$1|bulung ing kayabe|$1 bulung ding kayabe}} king kategoriyang iti, ibat king $2 pangkabilugan.}}',
@@ -139,10 +140,18 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Tungkul',
-'article' => 'Kalamnan ning bulung',
-'newwindow' => '(mibusni ya king bayung awang)',
-'cancel' => 'E taglus',
+'about' => 'Tungkul',
+'article' => 'Kalamnan ning bulung',
+'newwindow' => '(mibusni ya king bayung awang)',
+'cancel' => 'E taglus',
+'moredotdotdot' => 'Dakal pa...',
+'mypage' => 'Ing kakung bulung',
+'mytalk' => 'Makisabi kaku',
+'anontalk' => 'Pamakisabi para keng IPing ini',
+'navigation' => 'Pamaglibut',
+'and' => '&#32;ampo',
+
+# Cologne Blue skin
'qbfind' => 'Maintun',
'qbbrowse' => 'Bation (browse)',
'qbedit' => 'Mag-edit',
@@ -150,12 +159,20 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'qbpageinfo' => 'Kontekstu/kabilian',
'qbmyoptions' => 'Deng kakung bulung',
'qbspecialpages' => 'Bulung a makabukud',
-'moredotdotdot' => 'Dakal pa...',
-'mypage' => 'Ing kakung bulung',
-'mytalk' => 'Makisabi kaku',
-'anontalk' => 'Pamakisabi para keng IPing ini',
-'navigation' => 'Pamaglibut',
-'and' => '&#32;ampo',
+'faq' => 'Maralas a Kukutang (MAK)',
+'faqpage' => 'Project:MAK',
+
+# Vector skin
+'vector-action-move' => 'Iyalis',
+'vector-action-protect' => 'Protectan/kambilan',
+'vector-action-undelete' => 'Isubli/iurung ya pangabura',
+'vector-action-unprotect' => 'Idayu ya panga-protecta',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Bulung ning saup',
+'vector-namespace-image' => "Simpan (''file'')",
+'vector-namespace-main' => 'Bulung',
+'vector-namespace-media' => 'Bulung media',
+'vector-namespace-project' => 'Bulung a pang-proyectu',
'errorpagetitle' => 'Mali',
'returnto' => 'Magbalik king $1.',
@@ -205,7 +222,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'otherlanguages' => 'Kareng aliwang amanu',
'redirectedfrom' => '(Miyalis direksiun manibat king $1)',
'redirectpagesub' => 'Bulung ning pamanaliling direksiun (redirect)',
-'lastmodifiedat' => 'Tauli yang miyalilan ining bulung anyang $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Tauli yang miyalilan ining bulung anyang $2, $1.',
'viewcount' => 'Ining bulung linawe da neng {{PLURAL:$1|misan|$1 besis/ukdu}}.',
'protectedpage' => 'Bulung a protektadu/makakambil',
'jumpto' => 'Lundag ka king:',
@@ -216,7 +233,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'aboutsite' => 'Tungkul {{SITENAME}}',
'aboutpage' => 'Project:tungkul',
'copyright' => 'Mipaintulutan ing laman na niti lalam ning $1.',
-'copyrightpagename' => 'Copyright (katulirang mangopia) ning {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Deng Copyright',
'currentevents' => 'Kasalungsungan a mengapalyari',
'currentevents-url' => 'Project:Kasalungsungan a malilyari',
@@ -224,8 +240,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'disclaimerpage' => 'Project:Pangkabilugan a pamananggi',
'edithelp' => 'Saup pamanalili',
'edithelppage' => 'Help:Pamag-edit',
-'faq' => 'Maralas a Kukutang (MAK)',
-'faqpage' => 'Project:MAK',
'helppage' => 'Help:Kalamnan',
'mainpage' => 'Pun Bulung',
'mainpage-description' => 'Pun Bulung',
@@ -303,10 +317,6 @@ Ing tauling kutang king database yapin iti:
"$1"
manibat king kilub ning function "$2".
Ini ing pamagkamaling linto king MySQL - "$3: $4"',
-'noconnect' => 'Pasensia na ka! Mikaka-prublema yang teknikal ing wiki, at e ne ayaus ing database server.<br />
-$1',
-'nodb' => 'E ne apili ing database $1',
-'cachederror' => 'Ing makatuki copia neng misimpan (cached copy) ning bulung a adwan mu, at mapalyaring e ne bayu o makapanaun.',
'laggedslavemode' => 'Kapiadian: Mapaliaring ala lu king bulung deng pekatauling mibayu.',
'readonly' => 'Makasara ya ing database',
'enterlockreason' => 'Ibie me ing sangkan ning pamaniara, pati ing tantia nung kapilan ya milako iti',
@@ -363,7 +373,6 @@ Ala kang paintulut a i-edit ya ing bulung a ini, uling atin yang personal settin
Iti ing binie nang sangkan: ''$2''.",
# Login and logout pages
-'logouttitle' => 'Talagamit isulat-lumual (logout)',
'logouttext' => "'''Maka logout na ka.'''
Malyari mung isundu ing pamangamit mu king {{SITENAME}} a e ka papakilala, o malyari kang mag login pasibayu anting pareu o aliwang talagamit.
@@ -371,7 +380,6 @@ Apansingan mung mapalyaring makalto la pa murin deng aliwang bulung a bala mu ma
'welcomecreation' => '== Malaus ka, $1! ==
Melalang ne ing kekang account. E mo kakalingwan alilan deng kekang piniling {{SITENAME}}',
-'loginpagetitle' => 'Talagamit login',
'yourname' => 'Lagyung talagamit (Username):',
'yourpassword' => 'Kekang password:',
'yourpasswordagain' => 'Pakisulat meng pasibayu ing password:',
@@ -394,20 +402,7 @@ Melalang ne ing kekang account. E mo kakalingwan alilan deng kekang piniling {{S
'badretype' => 'Ding password a linub mu ela mibabage.',
'userexists' => 'Atin nang gagamit king lagyung talagamit (username) a misulat.
Mamili kang aliwang lagyu.',
-'youremail' => 'Ing kekang e-mail:',
-'username' => 'Talagamitlagyu:',
-'uid' => 'Ing kekang user ID:',
-'yourrealname' => 'Tutung lagyu:',
-'yourlanguage' => 'Amanu:',
-'yournick' => 'Pirma (Signature):',
-'badsig' => 'E ustu ing simpling pirma (raw signature); lon mo reng HTML tag.',
-'badsiglength' => 'Masiadu yang makaba ing kekang pirma (signature). Kailangan, mas makuyad ya kesa king $1 kulit (characters).',
-'email' => 'Kekang e-mail',
-'prefs-help-realname' => 'Ika ing bala nung buri meng ibie ing tutu mung lagyu.
-Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
'loginerror' => 'E ustu ing pamag-login',
-'prefs-help-email' => "E kailangang ibye ing kekang e-mail address, oneng masanting nung abie me, ba rakang ayabut kapamilata'ning kekang user o user_talk page a e me sasabian ing kekang tutung lagyu.",
-'prefs-help-email-required' => 'Kailangan ya ing e-mail address.',
'nocookiesnew' => 'Melalang ya ing account ning talagamit (user account), oneng e ka makalogin.
Ing {{SITENAME}} mangailangan yang cookie ba lang makalogin deng talagamit.
Makapatda la reng kekang cookie.
@@ -462,18 +457,16 @@ Malyari meng e pansinan ining mensahi, nung pamagkamali ing pamaglalang na nitin
'loginlanguagelabel' => 'Amanu: $1',
# Password reset dialog
-'resetpass' => 'Alilan ya ing account password',
-'resetpass_announce' => 'Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.
+'resetpass' => 'Alilan ya ing account password',
+'resetpass_announce' => 'Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.
Bang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password keni:',
-'resetpass_header' => 'Alilan ya ing password',
-'oldpassword' => 'Sadiang/lumang password:',
-'newpassword' => 'Bayung password:',
-'retypenew' => 'Sulat meng pasibayu ing bayung password:',
-'resetpass_submit' => 'Mangibili kang password at maglogin ka',
-'resetpass_success' => 'Melaus ing pamanalili mung password! Ngeni mila-login naka...',
-'resetpass_bad_temporary' => 'E matatanggap ing kekang pansamantalang password.
-Mapaliaring melaus na ing pamanalili mung password, o mekapaniad na kang bayung pansamantalang password.',
-'resetpass_forbidden' => 'E la malyaring alilan deng password keng wiking ini',
+'resetpass_header' => 'Alilan ya ing password',
+'oldpassword' => 'Sadiang/lumang password:',
+'newpassword' => 'Bayung password:',
+'retypenew' => 'Sulat meng pasibayu ing bayung password:',
+'resetpass_submit' => 'Mangibili kang password at maglogin ka',
+'resetpass_success' => 'Melaus ing pamanalili mung password! Ngeni mila-login naka...',
+'resetpass_forbidden' => 'E la malyaring alilan deng password keng wiking ini',
# Edit page toolbar
'bold_sample' => 'Makapasalang kulitan',
@@ -544,7 +537,6 @@ Pakibanggit me iting ID neng atin kang pamangutang.',
'blockededitsource' => "Atyu king lalam ing makasulat ketang '''ding kekang in-edit''' king '''$1''' ('''your edits''' to '''$1'''):",
'whitelistedittitle' => 'Kailangang mag-login bang makapag-edit',
'whitelistedittext' => 'Kailangan mung $1 bayu ka makapag-edit bulung.',
-'confirmedittitle' => 'Kaylangan yang patutwan ing kekang e-mail ba kang makapag-edit o makapanalili.',
'confirmedittext' => "Kailangan meng kumpirman ing kekang e-mail address bayo mo a-edit deting bulung.
Pakisulat me at patutuan ing kekang e-mail address kapamilata'ning [[Special:Preferences|pinili ning talagamit]] (user preferences).",
'nosuchsectiontitle' => 'Alang makanian a dake (seksiyon)',
@@ -565,7 +557,8 @@ Maliari meng [[Special:Search/{{PAGENAME}}|paintunan ining bansag ning bulung]]
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} i-edit ing bulung a ini]</span>.',
'userpage-userdoesnotexist' => 'E makarehistru ing account ning talagamit (user account) a "$1". Pakilawe mu nung buri meng lalangan o i-edit ing bulung a ini.',
'clearyourcache' => "'''Kapabaluan:''' Kaibat mung mig-save, maliari meng lakton ing simpan (cache) ning kekang browser ba mong akit deng miyalilan. '''Mozilla / Firefox / Safari:''' timid me ing ''Shift'' kabang ki-click me ing ''Reload'', o timid me ing ''Ctrl-Shift-R'' (''Cmd-Shift-R'' king Apple Mac); '''IE:''' timid me ing ''Ctrl'' kabang ki-click me ing ''Refresh'', o timid me ing ''Ctrl-F5''; '''Konqueror:''': i-click me mu ing ''Reload'' button, o timid me ing ''F5''; deng talagamit ning '''Opera''', mapaliaring kailangan deng laganas a linisan (i-clear) ing karelang simpan (cache) king ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Gamitan me ing button a 'Pakit ya ing preview' ('Show preview') ba yang subukan ing kekang bayung CSS/JS bayu ka mag-save.",
+'usercssyoucanpreview' => "'''Tip:''' Gamitan me ing button a 'Pakit ya ing preview' ('Show preview') ba yang subukan ing kekang bayung CSS bayu ka mag-save.",
+'userjsyoucanpreview' => "'''Tip:''' Gamitan me ing button a 'Pakit ya ing preview' ('Show preview') ba yang subukan ing kekang bayung JS bayu ka mag-save.",
'usercsspreview' => "'''Tandanan mung pi-preview me mu ing kekang user CSS, e ya pa me-save!'''",
'userjspreview' => "'''Tandanan mung susubukan/pi-preview me pamu ing kekang user JavaScript, e ya pa me-save iti!'''",
'userinvalidcssjstitle' => "'''Kapiadian:''' Alang pabalat (skin) a \"\$1\".
@@ -621,8 +614,8 @@ Maliari meng i-\"cut-n-paste\" ing sinulat mu king metung a text file, at i-save
'semiprotectedpagewarning' => "'''Babala:''' Misara ya ing bulung a ini, ania den mung talagamit a makarehistru ing makapag-edit kaniti.",
'cascadeprotectedwarning' => "'''Babala:''' Misara ya ing bulung a ini. Deta mung talagamit a maki upayang sysop ing makapag-edit kaniti, uling kayabe ya kareng makatuking bulung a maki proteksiun a mituki-tuki (cascade protected) {{PLURAL:$1|bulung|bulung}}:",
'titleprotectedwarning' => "'''BABALA: Misara ya ing bulung a ini, ania den mung aliwang talagamit ing makapaglalang kaniti.'''",
-'templatesused' => 'Deng template a magagamit king bulung a ini:',
-'templatesusedpreview' => 'Deng modelung (template) megamit kening preview:',
+'templatesused' => '{{PLURAL:$1|Template|Deng template}} a magagamit king bulung a ini:',
+'templatesusedpreview' => '{{PLURAL:$1|Ing template|Deng template}} a megamit kening pasinag/preview:',
'templatesusedsection' => 'Deng modelung (template) magagamit king seksiyon a ini:',
'template-protected' => '(protektadu)',
'template-semiprotected' => '(maki dakeng protektadu)',
@@ -634,10 +627,12 @@ Malyari kang magbalik at mag-edit king bulung a atyu na, o makapag[[Special:User
'permissionserrors' => 'Pamagkamali king Pamaniad Paintulut',
'permissionserrorstext' => 'Ala kang paintulut bang gawan ita, uling kareng makatuking {{PLURAL:$1|sangkan|sangkan}}:',
'permissionserrorstext-withaction' => 'Ala kang paintulut a $2, uling kareng makatuking {{PLURAL:$1|sangkan|sangkan}}:',
-'recreate-deleted-warn' => "'''Babala: Maglalang kang pasibayu king bulung a mebura na.'''
+'recreate-moveddeleted-warn' => "'''Babala: Maglalang kang pasibayu king bulung a mebura na.'''
Pakaisipan mu sana nung karapatdapat yang isundu ing pamag-edit kaniti.
Atiyu keni ing tala ding mebura (deletion log) kaniting bulung ba meng malaguang asuri:",
+'moveddeleted-notice' => "Mebura ya ing bulung a ini.
+Ibie la para king kekang beluan deng kasulatan ning pamagbura ampong pamanalis (''deletion and move log'') para king impormasion.",
# Parser/template warnings
'expensive-parserfunction-warning' => 'Babala: Masiadu yang dakal mangamal a parser function call ining bulung.
@@ -661,8 +656,9 @@ Ini ing sangkan a binie nang $3: ''$2''",
'viewpagelogs' => 'Lon la reng log para king bulung a ini',
'nohistory' => 'Alang amlat ning pamag-edit (edit history) para king bulung a ini.',
'currentrev' => 'Kasalungsungan a pangayalili',
+'currentrev-asof' => 'Ing kasalungsungan a pamagbayu aniang $1',
'revisionasof' => 'Ing mibayu aniang $1',
-'revision-info' => 'Deng miyalilan aniang $1 ibat kang $2', # Additionally available: $3: revision id
+'revision-info' => 'Deng miyalilan aniang $1 ibat kang $2',
'previousrevision' => '←Minunang pamagbayu',
'nextrevision' => 'Mas tauling pamagbayu→',
'currentrevisionlink' => 'Kasalungsungan a pamagbayu',
@@ -675,7 +671,6 @@ Ini ing sangkan a binie nang $3: ''$2''",
Kabaldugan: (ngeni)=pamiyaliwa king salukuyan a bersion (bersion ngeni),
(tauli)=pamiyaliwa ketang sadyang (tauling) bersion, M = malating edit.',
'history-fieldset-title' => 'Amlat da reng pamaglawe',
-'deletedrev' => '[milako]',
'histfirst' => 'Minunang dili',
'histlast' => 'Pekabayu',
'historysize' => '({{PLURAL:$1|1 a byte|byte}})',
@@ -684,7 +679,7 @@ Kabaldugan: (ngeni)=pamiyaliwa king salukuyan a bersion (bersion ngeni),
# Revision feed
'history-feed-title' => 'Amlat ning pamanalili',
'history-feed-description' => 'Amlat ning pamagbayu/pamanalili ning bulu a ini king wiki',
-'history-feed-item-nocomment' => '$1 king $2', # user at time
+'history-feed-item-nocomment' => '$1 king $2',
'history-feed-empty' => 'Ala yu ing bulung a paintunan mu.
Malyaring mebura ya king wiki, o miyalilan ya lagyu.
Subukan me ing [[Special:Search|searching on the wiki]] para kareng bayung bulung a kawangis na niti.',
@@ -694,10 +689,10 @@ Subukan me ing [[Special:Search|searching on the wiki]] para kareng bayung bulun
'rev-deleted-user' => '(talagamit lagyu milako ya)',
'rev-deleted-event' => '(ing gawang pamaglog milako ya)',
'rev-deleted-text-permission' => 'Milako ya king simpanan a pangmalda (public archives) ining pamanalili king bulung.
-Mapaliaring ating detalle king [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} tala ding mebura (deletion log)].',
+Mapaliaring ating detalle king [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ding mebura (deletion log)].',
'rev-deleted-text-view' => 'Milako ya king simpanan malda (public archives) ining pamanaliling bulung.
Anting talapanibala ning {{SITENAME}}, maliari meng akit;
-mapaliaring maki detalle king [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} tala ding mebura (deletion log)].',
+mapaliaring maki detalle king [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ding mebura (deletion log)].',
'rev-delundel' => 'pakit/salikot',
'revisiondelete' => 'Ilako/e-ilako ing pamanalili',
'revdelete-nooldid-title' => 'E ustung pamanaliling target',
@@ -709,12 +704,12 @@ mapaliaring maki detalle king [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE
Abusni da pa murin deng aliwang talapanibala (admin) king {{SITENAME}} itang laman a makasalikut, at aurung da ing pangabura na niti kapamilatan na mismu niting interface, puera namu nung ating bayung pamag-limita o pamanyabat a miyutus.",
'revdelete-legend' => 'Mitakdang angganan/limitasiun kareng maliaring akit',
'revdelete-hide-text' => 'Isalikut ya ing meyaliling kulitan',
+'revdelete-hide-image' => 'Isalikut ya ing laman ning simpan',
'revdelete-hide-name' => 'Isalikut ya ing dapat (action) ampo ing balak (target)',
'revdelete-hide-comment' => 'Isalikut ya ing komentu ketang me-edit',
'revdelete-hide-user' => 'Isalikut ya ing lagyungtalagamit/IP ning mag-edit',
'revdelete-hide-restricted' => 'Ipairal la rening pamagbawal kareng Sysop at isara ya ining interface',
'revdelete-suppress' => 'Isalikut ing data kareng Sysop ampo kareng aliwa',
-'revdelete-hide-image' => 'Isalikut ya ing laman ning simpan',
'revdelete-unsuppress' => 'Ilako ing pamagbawal kareng pamanaliling misubli',
'revdelete-log' => 'Sangkan:',
'revdelete-submit' => 'Ipairal ya kareng mepiling pamanalili (selected revision)',
@@ -734,6 +729,7 @@ Abusni da pa murin deng aliwang talapanibala (admin) king {{SITENAME}} itang lam
'revdelete-unhid' => 'ipakit $1',
'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|pamanalili|pamanalili}}',
'logdelete-log-message' => '$1 para $2 {{PLURAL:$2|miliari|miliari}}',
+'revdelete-edit-reasonlist' => 'I-edit la reng sangkan king pamamura',
# Suppression log
'suppressionlog' => 'Tala da reng mibawal (suppression log)',
@@ -783,17 +779,14 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
'searchresulttext' => 'Nung bisa kang karagdagang impormasiun tungkul king pamanintun king {{SITENAME}}, lon me ing [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Penintun me ing \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|deng anggang bulung a magumpisa king "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Deng anggang bulung a makasuglung king "$1"]])',
'searchsubtitleinvalid' => "Penintunan me ing '''$1'''",
-'noexactmatch' => "'''Alang bulung a maki bansag a \"\$1\".'''
-Malyari meng [[:\$1|lalangan ing bulung a iti]].",
-'noexactmatch-nocreate' => "'''Alang bulung a mikipamansag a \"\$1\".'''",
'toomanymatches' => 'Masiadu lang dakal deng tinud (matches); subukan meng alilan ing kekang kutang (query)',
'titlematches' => 'Deng tinud/mipareu kareng bansag bulung (page title matches)',
'notitlematches' => 'Ala yang kapareu kareng bansag da ring bulung (page title)',
'textmatches' => 'Deng kapareu na king kasulatan (text) da reng bulung',
'notextmatches' => 'Alang tinud/pareu kareng bansag bulung (no page title matches)',
-'prevn' => 'minunang $1',
-'nextn' => 'tutuking $1',
-'viewprevnext' => 'Lon ($1) ($2) ($3)',
+'prevn' => 'minunang {{PLURAL:$1|$1}}',
+'nextn' => 'tutuking {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Kalamnan',
'search-result-size' => '$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})',
'search-result-score' => 'Kaugnayan (relevance): $1%',
@@ -811,7 +804,6 @@ Malyari meng [[:\$1|lalangan ing bulung a iti]].",
'searchall' => 'eganagana',
'showingresults' => "Ing/ding {{PLURAL:$1|'''1''' a resulta|'''$1''' resulta}} manibatan king #'''$2'''.",
'showingresultsnum' => "Ing/ding {{PLURAL:$3|'''1''' a resulta|'''$3''' resulta}} manibatan king #'''$2'''.",
-'showingresultstotal' => "Makabili la king lalam deng linual/resulta '''$1 - $2''' ning '''$3'''",
'nonefound' => "'''Kapabaluan''': Den mung aliwang pirinan lagiu (namespace) ing tambing a masisiasat o masusuri. Subukan meng umpisan king ''eganagana:'' (''all:'') ing kekang kutang ba kang makapanintun king sablang laman (kayabe no reng pamisabi-sabi o talk pages, modelu o template, atlwp.), o gamitan me ing pirinan lagiung buri mu antimong mumunang paniapi (prefix) o mumunang/magumpisang lagiu.",
'powersearch' => 'Espesial a pamanintun',
'powersearch-legend' => 'Espesial a pamanintun',
@@ -823,66 +815,67 @@ Malyari meng [[:\$1|lalangan ing bulung a iti]].",
Samantala, maliari kang maintun kapamilatan ning Google.
Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ning {{SITENAME}}.',
-# Preferences page
-'preferences' => 'Pinili',
-'mypreferences' => 'Deng pinili ku',
-'prefs-edits' => 'Bilang da reng edit:',
-'prefsnologin' => 'ekamaka log',
-'prefsnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba mong apagana deng pinili ning talagamit (user preferences).',
-'prefsreset' => 'Misubli king sadia manibat ketang makasimpan (storage) deng pinili/preferences.',
+# Quickbar
'qbsettings-none' => 'Ala',
'qbsettings-fixedleft' => 'Makapirmi ya ing kaili',
'qbsettings-fixedright' => 'Makapirmi ya ing wanan',
'qbsettings-floatingleft' => 'Kikimut ya ing kaili',
'qbsettings-floatingright' => 'Kikimut ya ing wanan',
-'changepassword' => 'Alilan ya ing password',
-'skin' => 'Balat',
-'skin-preview' => 'I-preview',
-'dateformat' => 'Ayus ning petsa',
-'datedefault' => 'Alang mepili',
-'datetime' => 'Petsa ampong oras',
-'math_failure' => 'E melaus ing pamag-parse',
-'math_unknown_error' => 'e makikilalang pamagkamali',
-'math_unknown_function' => 'e makikilalang gamit (unknown function)',
-'math_lexing_error' => 'pamagkamali king lexing',
-'math_syntax_error' => 'pamagkamali king pamituki-tuki (syntax error)',
-'math_image_error' => 'E melaus ing pamanalis king PNG;
-siguraduan mu ing ustung pamag-install king latex, dvips, gs, at kaibat iyalis (i-convert) me',
-'math_bad_tmpdir' => 'E makasulat king o makapaglalang piyakitan (directory) a math temp',
-'math_bad_output' => 'E makasulat king o makapaglalang piyakitan (directory) a math output',
-'math_notexvc' => 'Mawawala ya ing texvc executable;
-pakilawe me ing math/README ba meng i-configure.',
-'prefs-personal' => 'Impormasiun tungkul king talagamit (user profile)',
-'prefs-rc' => 'Bayung miyalilan',
-'prefs-watchlist' => 'Talangbabanten',
-'prefs-watchlist-days' => 'Aldong lunto king tala da reng babanten (watchlist):',
-'prefs-watchlist-edits' => 'Pekamaragul a bilang da reng miyalilan a lunto king miragdagan a tala da reng babanten (expanded watchlist):',
-'prefs-misc' => 'Alwp',
-'saveprefs' => 'I-save',
-'resetprefs' => 'Buran la retang miyalilan a e me-save',
-'textboxsize' => 'Mag-edit',
-'rows' => 'Dane (rows):',
-'columns' => 'Ding asias:',
-'searchresultshead' => 'Maintun',
-'resultsperpage' => 'Tinud (hits) balang bulung:',
-'contextlines' => 'Gulis balang tinud:',
-'contextchars' => 'Kontekstu (patulug) balang gulis:',
-'stub-threshold' => 'Angganan ning <a href="#" class="stub">stub link</a> formatting (byte):',
-'recentchangesdays' => 'Deng aldong ipalto king bayung mengayalili:',
-'recentchangescount' => 'Bilang da reng me-edit a ipalto king bayung mengayalili:',
-'savedprefs' => 'Me-save la reng kekang pinili.',
-'timezonelegend' => 'Oras zona',
-'timezonetext' => '¹Nung pilan yang oras aliwa ing kekang lokal a oras ketang server time (UTC).',
-'localtime' => 'Lokal a oras',
-'servertime' => 'Oras king server (server time)',
-'guesstimezone' => 'Pakibatan ya manibat king browser',
-'allowemail' => 'Pabustan ya ing e-mail ibat karing aliwang talagamit',
-'defaultns' => 'Paintunan ya karening pirinan lagyu (namespaces) nung alang mepili:',
-'default' => 'alang mepili',
-'files' => 'Simpan (files)',
+
+# Preferences page
+'preferences' => 'Pinili',
+'mypreferences' => 'Deng pinili ku',
+'prefs-edits' => 'Bilang da reng edit:',
+'prefsnologin' => 'ekamaka log',
+'prefsnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba mong apagana deng pinili ning talagamit (user preferences).',
+'changepassword' => 'Alilan ya ing password',
+'prefs-skin' => 'Balat',
+'skin-preview' => 'I-preview',
+'datedefault' => 'Alang mepili',
+'prefs-datetime' => 'Petsa ampong oras',
+'prefs-personal' => 'Impormasiun tungkul king talagamit (user profile)',
+'prefs-rc' => 'Bayung miyalilan',
+'prefs-watchlist' => 'Talangbabanten',
+'prefs-watchlist-days' => 'Aldong lunto king tala da reng babanten (watchlist):',
+'prefs-watchlist-edits' => 'Pekamaragul a bilang da reng miyalilan a lunto king miragdagan a tala da reng babanten (expanded watchlist):',
+'prefs-misc' => 'Alwp',
+'saveprefs' => 'I-save',
+'resetprefs' => 'Buran la retang miyalilan a e me-save',
+'prefs-editing' => 'Mag-edit',
+'rows' => 'Dane (rows):',
+'columns' => 'Ding asias:',
+'searchresultshead' => 'Maintun',
+'resultsperpage' => 'Tinud (hits) balang bulung:',
+'contextlines' => 'Gulis balang tinud:',
+'contextchars' => 'Kontekstu (patulug) balang gulis:',
+'stub-threshold' => 'Angganan ning <a href="#" class="stub">stub link</a> formatting (byte):',
+'recentchangesdays' => 'Deng aldong ipalto king bayung mengayalili:',
+'recentchangescount' => 'Bilang da reng me-edit a ipalto king bayung mengayalili:',
+'savedprefs' => 'Me-save la reng kekang pinili.',
+'timezonelegend' => 'Oras zona',
+'localtime' => 'Lokal a oras',
+'servertime' => 'Oras king server (server time)',
+'guesstimezone' => 'Pakibatan ya manibat king browser',
+'allowemail' => 'Pabustan ya ing e-mail ibat karing aliwang talagamit',
+'defaultns' => 'Paintunan ya karening pirinan lagyu (namespaces) nung alang mepili:',
+'default' => 'alang mepili',
+'prefs-files' => 'Simpan (files)',
+'youremail' => 'Ing kekang e-mail:',
+'username' => 'Talagamitlagyu:',
+'uid' => 'Ing kekang user ID:',
+'yourrealname' => 'Tutung lagyu:',
+'yourlanguage' => 'Amanu:',
+'yournick' => 'Pirma (Signature):',
+'badsig' => 'E ustu ing simpling pirma (raw signature); lon mo reng HTML tag.',
+'badsiglength' => 'Masiadu yang makaba ing kekang pirma (signature). Kailangan, mas makuyad ya kesa king $1 kulit (characters).',
+'email' => 'Kekang e-mail',
+'prefs-help-realname' => 'Ika ing bala nung buri meng ibie ing tutu mung lagyu.
+Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
+'prefs-help-email' => "E kailangang ibye ing kekang e-mail address, oneng masanting nung abie me, ba rakang ayabut kapamilata'ning kekang user o user_talk page a e me sasabian ing kekang tutung lagyu.",
+'prefs-help-email-required' => 'Kailangan ya ing e-mail address.',
# User rights
-'userrights' => 'Pamanibala king katuliran da reng talagamit (user rights management)', # Not used as normal message but as header for the special page itself
+'userrights' => 'Pamanibala king katuliran da reng talagamit (user rights management)',
'userrights-lookup-user' => 'Panibalan la reng grupung talagamit',
'userrights-user-editname' => 'Mangibili kang lagyungtalagamit (username):',
'editusergroup' => 'I-edit ya ing Grupung Talagamit',
@@ -962,6 +955,8 @@ pakilawe me ing math/README ba meng i-configure.',
'right-editprotected' => 'I-edit la reng bulung a protektadu/makakambil (alang proteksiun a tuki-tuki o cascading protection)',
'right-editinterface' => 'I-edit ya ing user interface',
'right-editusercssjs' => 'I-edit la reng simpan (file) dang CSS ampong JS deng aliwang talagamit',
+'right-editusercss' => 'I-edit la reng simpan (file) dang CSS deng aliwang talagamit',
+'right-edituserjs' => 'I-edit la reng simpan (file) dang JS deng aliwang talagamit',
'right-rollback' => 'Gad yang iurung (revert) ing tauling talagamit a mig-edit king partikular a bulung',
'right-markbotedits' => 'Tatakan la reng edit a miurung (reverted edits) antimong bot edit',
'right-import' => 'Maglub (import) bulung manibat kareng aliwang wiki',
@@ -1017,6 +1012,8 @@ pakilawe me ing math/README ba meng i-configure.',
# Recent changes linked
'recentchangeslinked' => 'Miyalilan a makaugne',
+'recentchangeslinked-feed' => 'Miyalilan a makaugne',
+'recentchangeslinked-toolbox' => 'Miyalilan a makaugne',
'recentchangeslinked-title' => 'Deng miyalilan a maki kaugnayan king "$1"',
'recentchangeslinked-noresult' => 'Alang miyalilan kareng bulung a pakasuglung ketang mebanggit a panaun.',
'recentchangeslinked-summary' => "Makalista la king bulung a iti deng tauling mengayalilan kareng
@@ -1028,7 +1025,6 @@ king kekang watchlist (tala da reng babanten).",
# Upload
'upload' => 'Maglulan simpan/file',
'uploadbtn' => 'Maglulan simpan (upload file)',
-'reupload' => 'Ilulan yang pasibayu',
'reuploaddesc' => 'Iurung ya ing pamaglulan at isubli ya king upload form',
'uploadnologin' => 'E maka-login',
'uploadnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba kang makapaglulan simpan (upload files).',
@@ -1075,7 +1071,6 @@ Ba yang lunto karin ing kekang sampulung, kailangan me pamung i-edit",
* Lagyu ning simpan a milululan: '''<tt>[[:$1]]</tt>'''
* Lagyu ning salukuyan a simpan: '''<tt>[[:$2]]</tt>'''
Mamili kang aliwang lagyu.",
-'fileexists-thumb' => "<center>'''Salukuyan a simpan (file)'''</center>",
'fileexists-thumbnail-yes' => "Lupa yang larawan a pepalati ing simpan ''(thumbnail)''. [[$1|thumb]]
Pakilawe me ing simpan '''<tt>[[:$1]]</tt>'''.
Nung ya naman ketang minunang maki orihinal a dagul ing simpan a maka-check, e na kailangang maglulan karagdagan a thumbnail.",
@@ -1094,8 +1089,6 @@ mibalik ka at ilulan (upload) me king lalam ning bayung lagyu. [[File:$1|thumb|c
'uploaddisabled' => 'Makapatda ing pamag-upload',
'uploaddisabledtext' => 'Makapatda ing pamag-upload king {{SITENAME}}.',
'uploadscripted' => 'Atin yang HTML o script code ing simpan a ini, at maliaring magkamali ya ing web browser king pamamasa kaniti.',
-'uploadcorrupt' => 'Sira (corrupt) ya ing simpan a ini, o atin yang extension a e ustu.
-Pakilawe me ing simpan a ilulan (upload) meng pasibayu.',
'uploadvirus' => 'Atin yang virus ing simpan (file) a ini! Detalle: $1',
'sourcefilename' => 'Lagyungsimpan (filename) ning pikuanan:',
'destfilename' => 'Lagyungsimpan (filename) ning puntalan:',
@@ -1130,6 +1123,7 @@ Pakilawe mu nung makasalangi ya iti, manaya ka saguli, at subukan mung pasibayu.
Mapaliaring mas masanting yang subukan nung mas ditak la reng gagamit.',
'license' => 'Pamamie lisensia:',
+'license-header' => 'Pamamie lisensia:',
'nolicense' => 'Alang mepili',
'license-nopreview' => '(Alang preview maliaring lon)',
'upload_source_url' => ' (metung a URL a matatanggap at aluban ding malda)',
@@ -1149,6 +1143,7 @@ Miyalilan ing pamanayus nung i-click ya ing pamagat ning kolum (column header).'
'listfiles_description' => 'Pamilarawan (description)',
# File description page
+'file-anchor-link' => 'Simpan (File)',
'filehist' => 'Amlat ning simpan (File history)',
'filehist-help' => 'Mag-click kang petsa/oras ba meng akit ing itsura ning simpan aniang panaun a ita.',
'filehist-deleteall' => 'buran ing eganagana',
@@ -1156,6 +1151,7 @@ Miyalilan ing pamanayus nung i-click ya ing pamagat ning kolum (column header).'
'filehist-revert' => 'isubli',
'filehist-current' => 'salukuyan',
'filehist-datetime' => 'Petsa/Oras',
+'filehist-thumbtext' => 'Thumbnail para king bersion aniang $1',
'filehist-user' => 'Talagamit',
'filehist-dimensions' => 'Sukad',
'filehist-filesize' => 'Dagul ning simpan (file size)',
@@ -1163,12 +1159,7 @@ Miyalilan ing pamanayus nung i-click ya ing pamagat ning kolum (column header).'
'imagelinks' => "Suglung kareng simpan (''file links'')",
'linkstoimage' => "Ing tutuking {{PLURAL:$1|page links|$1 pages link}} kaniting simpan (''file''):",
'nolinkstoimage' => 'Alang bulung a pakasuglung king simpan (file) a ini.',
-'sharedupload' => "Ibat ya king $1 ining simpan (''file'') at maliari yang gamitan kareng aliwang proyectu.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Pakilawe me ing $1 para king karagdagang impormasiun.',
-'shareduploadwiki-desc' => 'Makabili ya king lalam ing pamilarawan (description) ketang kayang $1.',
-'shareduploadwiki-linktext' => 'bulung ning pamilarawan simpan (file description page)',
-'noimage' => 'Alang simpan a anti kaniyan lagyu; malyari kang $1.',
-'noimage-linktext' => 'ilulan ya',
+'sharedupload' => "Ibat ya king $1 ining simpan (''file'') at maliari yang gamitan kareng aliwang proyectu.",
'uploadnewversion-linktext' => 'Maglulan bayung bersion na niting simpan',
# File reversion
@@ -1241,8 +1232,8 @@ Tuturing yang bulung pamipalino ing metung a bulung nung gagamit yang modelung (
'brokenredirects' => 'Meputut a pamanaliling direksiun',
'brokenredirectstext' => 'Makasuglung la kareng bulung a ala naman deng makatuking pamanalis direksiun (redirects):',
-'brokenredirects-edit' => '(alilan)',
-'brokenredirects-delete' => '(buran)',
+'brokenredirects-edit' => 'alilan',
+'brokenredirects-delete' => 'buran',
'withoutinterwiki' => 'Bulung a yalang suglung kareng aliwang amanu',
'withoutinterwiki-summary' => 'E la makasuglung kareng bersion king aliwang amanu deng makatuking bulung:',
@@ -1453,7 +1444,7 @@ Maliari mo muring isubli king sadia (reset) deng markang pamipabalu (notificatio
Ing talabie kapabaluan ning {{SITENAME}} a magmalasakit keka
--
Ba mong ayalilan deng pakatuldu king kekang tala ring babanten (watchlist settings), munta ka king
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Keni ka magparalang puna/komentu at maniad karagdagang saup:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1503,9 +1494,9 @@ pakakalale ka.',
a gewa nang [[User:$2|$2]] ([[User talk:$2|Talk]]); atin nang aliwang menalili o minyubli ketang bulung.
I [[User:$3|$3]] ([[User talk:$3|Talk]]) ing tawling menalili.',
-'editcomment' => "Ini ing komentu king edit: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "Ini ing komentu king edit: \"''\$1''\".",
'revertpage' => 'Miurung la reng in-edit nang [[Special:Contributions/$2|$2]] ([[User talk:$2|Pamisabi-sabi]]);
-binalik neng [[User:$1|$1]] king tauling bersion', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+binalik neng [[User:$1|$1]] king tauling bersion',
'rollback-success' => 'Deng edit nang $1 a miurung;
binalik nong $2 king sadiang bersion.',
'sessionfailure' => 'Balamu ating prublema king kekang login session;
@@ -1526,7 +1517,6 @@ Lon me ing [[Special:ProtectedPages|tala ring bulung a protektadu/makakambil]] p
'protectexpiry' => 'Mayari ya keng:',
'protect_expiry_invalid' => 'E matatanggap ing panaun nung kapilan ya mayari.',
'protect_expiry_old' => 'Keta ya pang milabas ing panaun a miyari ya.',
-'protect-unchain' => 'Lako la pangakandadu deng paintulut king pamanalis',
'protect-text' => "Malyari meng lon at alilan ing sikan ning proteksiun (protection level) para king bulung keti '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "E mo maliaring alilan deng sikan/lebel ning proteksiun kabang makasabat ka.
Deni reng kasalungsungan a makatuldu (settings) para king bulung '''$1''':",
@@ -1542,7 +1532,7 @@ Deni reng kasalungsungan a setting para king bulung '''$1''':",
'protect-expiring' => 'mayari ya keng $1 (UTC)',
'protect-cascade' => 'Protektan/kambilan la reng bulung a kayabe kening bulung a ini (tuki-tuking proteksiun o cascading protection)',
'protect-cantedit' => 'E mo malyaring alilan deng sikan ning proteksiun (protection levels) king bulung a ini, uling ala kang paintulut a i-edit ya.',
-'protect-expiry-options' => '2 oras:2 hours,metung a yaldo:1 day,3ng aldo:3 days,paruminggu:1 week,2ng duminggu:2 weeks,pabulan:1 month,3ng bulan:3 months,6 a bulan:6 months,pabanua:1 year,alang kapupusan:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 oras:2 hours,metung a yaldo:1 day,3ng aldo:3 days,paruminggu:1 week,2ng duminggu:2 weeks,pabulan:1 month,3ng bulan:3 months,6 a bulan:6 months,pabanua:1 year,alang kapupusan:infinite',
'restriction-type' => 'Paintulut:',
'restriction-level' => 'Lebel ning pamag-limita:',
'minimum-size' => 'Pekamalati',
@@ -1618,7 +1608,7 @@ $1',
'contributions-title' => 'Deng ambag da reng talagamit para king $1',
'mycontris' => 'Deng kakung ambag',
'contribsub2' => 'Para $1 ($2)',
-'nocontribs' => 'Alang pamagbayung pareu/tutud kareng kundisiung deti.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Alang pamagbayung pareu/tutud kareng kundisiung deti.',
'uctop' => '(babo)',
'month' => 'Manibat king bulan a (at minuna pa):',
'year' => 'Manibat banuang (at minuna pa):',
@@ -1626,6 +1616,9 @@ $1',
'sp-contributions-newbies' => 'Den mung ambag da reng bayung account ing palto',
'sp-contributions-newbies-sub' => 'Para kareng bayung account',
'sp-contributions-blocklog' => 'Sabatan ya ing tala',
+'sp-contributions-deleted' => 'Deng ambag da reng talagamit a mebura',
+'sp-contributions-talk' => 'Pisasabian',
+'sp-contributions-userrights' => 'Pamanibala king katuliran da reng talagamit (user rights management)',
'sp-contributions-search' => 'Maintun ambag',
'sp-contributions-username' => 'IP Address o lagyungtalagamit (username):',
'sp-contributions-submit' => 'Maintun',
@@ -1675,7 +1668,7 @@ mu nung sanu retang bulung a sinira da).',
'ipbenableautoblock' => 'Tambing yang sabatan ing tauling IP address a ginamit ning talagamit a ini, at deng IP nung nu na pa subukang mag-edit',
'ipbsubmit' => 'Sabatan ya ing talagamit a ini',
'ipbother' => 'Keng tutuki',
-'ipboptions' => '2 oras:2 hours,metung a yaldo:1 day,3ng aldo:3 days,paruminggu:1 week,2ng duminggu:2 weeks,pabulan:1 month,3ng bulan:3 months,6 a bulan:6 months,pabanua:1 year,alang kapupusan:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,metung a yaldo:1 day,3ng aldo:3 days,paruminggu:1 week,2ng duminggu:2 weeks,pabulan:1 month,3ng bulan:3 months,6 a bulan:6 months,pabanua:1 year,alang kapupusan:infinite',
'ipbotheroption' => 'aliwa',
'ipbotherreason' => 'Karagdagang/aliuang sangkan:',
'ipbhidename' => 'Isalikut ya ing lagyungtalagamit (username) king tala ring mesabat (block log), tala ring makasabat (active block list), ampong tala ring talagamit (user list)',
@@ -1699,7 +1692,7 @@ mu nung sanu retang bulung a sinira da).',
'ipblocklist-submit' => 'Manintun',
'blocklistline' => '$1, $2 mesabat $3 ($4)',
'infiniteblock' => 'alang kapupusan',
-'expiringblock' => 'mayari ya keng $1',
+'expiringblock' => 'mayari ya keng $1 $2',
'anononlyblock' => 'anon. bukud tangi',
'noautoblockblock' => 'makapatda ing tambing a pamaniabat (autoblock disabled)',
'createaccountblock' => 'makasabat ing pamaglalang account',
@@ -1785,7 +1778,7 @@ Nung makanyan pin ing milyari, kailangan meng iyalis o isanib (merge) ing bulung
'move-watch' => 'Banten ya ing bulung a ini',
'movepagebtn' => 'Iyalis ya ing bulung',
'pagemovedsub' => 'Merapat ing pamanalis',
-'movepage-moved' => '\'\'\'Ing "$1" miyalis ya king "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Ing "$1" miyalis ya king "$2"\'\'\'',
'articleexists' => 'Ing bulung a yan atinang miki lagyu, okaya
ing lagyu ginamit mu e malyari.
Gumamit na kang aliwang lagyu.',
@@ -1834,8 +1827,6 @@ Ketang tauling kasu, makagamit ka muring suglung (link), alimbawa, ing [[{{#Spec
'allmessagescurrent' => 'Kasalungsungan a kulitan',
'allmessagestext' => 'Deng makatuki ila reng system message a atyu king pirinan lagyu (namespace) ning MediaWiki.',
'allmessagesnotsupportedDB' => "E maliaring gamitan ing bulung a ini uling ing '''\$wgUseDatabaseMessages''' makapatda ya.",
-'allmessagesfilter' => 'Mányalak kareng lagyu:',
-'allmessagesmodified' => 'Ipakit la retang miyalilan',
# Thumbnails
'thumbnail-more' => 'Paragulan',
@@ -1912,6 +1903,7 @@ Maka-login la reng eganaganang pamaglub a transwiki (transwiki import actions) k
'tooltip-search-fulltext' => 'Maintun kareng bulung para king sulat a ini',
'tooltip-p-logo' => 'Pun Bulung',
'tooltip-n-mainpage' => 'Munta king Pun Bulung',
+'tooltip-n-mainpage-description' => 'Munta ka king pun bulung',
'tooltip-n-portal' => 'Tungkul keng proyektu, nanung agawa mu, nung nu ka makapanintun king kailangan mu',
'tooltip-n-currentevents' => 'Maintun kang impormasiun a maki kaugnayan kareng mibabalitang kasulungsungan a malilyari',
'tooltip-n-recentchanges' => 'Ing tala da reng bayung mengayalili king wiki.',
@@ -1964,7 +1956,7 @@ Paintulutan na ing pamandagdag king sangkan king sampulung (''summary'').",
# Attribution
'anonymous' => 'Ing/Deng gagamit king {{SITENAME}} a e pepakilala.',
'siteuser' => 'talagamit ning {{SITENAME}} $1',
-'lastmodifiedatby' => 'Ining bulung tauli neng elilan $3 aniang $2, $1.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ining bulung tauli neng elilan $3 aniang $2, $1.',
'othercontribs' => 'Agpang basi king obra nang $1.',
'others' => 'aliwa',
'siteusers' => '{{SITENAME}} user(s) $1
@@ -1997,6 +1989,19 @@ Mapaliaring ing sangkan metung yang suglung king karinan king kilual (link to an
'mw_math_modern' => 'Rerekomenda de kareng makabayung browser',
'mw_math_mathml' => 'MathML nung maliari (susubukan da pamu [experimental])',
+# Math errors
+'math_failure' => 'E melaus ing pamag-parse',
+'math_unknown_error' => 'e makikilalang pamagkamali',
+'math_unknown_function' => 'e makikilalang gamit (unknown function)',
+'math_lexing_error' => 'pamagkamali king lexing',
+'math_syntax_error' => 'pamagkamali king pamituki-tuki (syntax error)',
+'math_image_error' => 'E melaus ing pamanalis king PNG;
+siguraduan mu ing ustung pamag-install king latex, dvips, gs, at kaibat iyalis (i-convert) me',
+'math_bad_tmpdir' => 'E makasulat king o makapaglalang piyakitan (directory) a math temp',
+'math_bad_output' => 'E makasulat king o makapaglalang piyakitan (directory) a math output',
+'math_notexvc' => 'Mawawala ya ing texvc executable;
+pakilawe me ing math/README ba meng i-configure.',
+
# Patrolling
'markaspatrolleddiff' => 'Tatakan yang babanten (patrolled)',
'markaspatrolledtext' => 'Tatakan yang babanten da (patrolled) ing bulung a ini',
@@ -2070,7 +2075,7 @@ Detang aliwa tambing (by default) lang makasalikut.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lapad',
@@ -2165,14 +2170,14 @@ Detang aliwa tambing (by default) lang makasalikut.
'exif-unknowndate' => 'E makabili ing petsa',
-'exif-orientation-1' => 'Karaniwan', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Mitumbalik yang pakera (horizontally)', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Pepadurut yang 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Mitumbalik yang patikdo (vertically)', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Dinurut yang 90° pa-kaili at mitumbalik yang patikdo (vertically)', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Pepadurut yang 90° a pa-wanan', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Dinurut yang 90° pa-wanan at mitumbalik patikdo (vertically)', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Pepadurut yang 90° a pa-kaili', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Karaniwan',
+'exif-orientation-2' => 'Mitumbalik yang pakera (horizontally)',
+'exif-orientation-3' => 'Pepadurut yang 180°',
+'exif-orientation-4' => 'Mitumbalik yang patikdo (vertically)',
+'exif-orientation-5' => 'Dinurut yang 90° pa-kaili at mitumbalik yang patikdo (vertically)',
+'exif-orientation-6' => 'Pepadurut yang 90° a pa-wanan',
+'exif-orientation-7' => 'Dinurut yang 90° pa-wanan at mitumbalik patikdo (vertically)',
+'exif-orientation-8' => 'Pepadurut yang 90° a pa-kaili',
'exif-planarconfiguration-1' => 'ayus a bikual-bikual (chunky format)',
'exif-planarconfiguration-2' => 'ayus a patag (planar format)',
@@ -2252,7 +2257,7 @@ Detang aliwa tambing (by default) lang makasalikut.
'exif-gpsmeasuremode-2' => 'Pamaniukad a 2-dimensional',
'exif-gpsmeasuremode-3' => 'Pamaniukad a 3-dimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometru balang oras',
'exif-gpsspeed-m' => 'Milla balang oras',
@@ -2369,10 +2374,10 @@ Mayari/mapasu ya ining confirmation code keng $4.',
'watchlisttools-raw' => 'I-edit ya ing e pa metagin a tala ding babanten (raw watchlist)',
# Special:Version
-'version' => 'Bersion', # Not used as normal message but as header for the special page itself
+'version' => 'Bersion',
'version-specialpages' => 'Bulung a makabukud',
'version-other' => 'Aliwa',
-'version-version' => 'Bersion',
+'version-version' => '(Bersion $1)',
'version-license' => 'Lisensia',
'version-software-product' => 'Produktu',
'version-software-version' => 'Bersion',
diff --git a/languages/messages/MessagesPap.php b/languages/messages/MessagesPap.php
index 5f7453bf..5883a87a 100644
--- a/languages/messages/MessagesPap.php
+++ b/languages/messages/MessagesPap.php
@@ -63,6 +63,10 @@ $messages = array(
'navigation' => 'Nabegashon',
'and' => '&#32;i',
+# Cologne Blue skin
+'faq' => 'Preguntanan mas Puntrá',
+'faqpage' => 'Project:Preguntanan mas Puntrá',
+
'errorpagetitle' => 'Eror',
'returnto' => 'Bai bèk $1.',
'tagline' => 'Di {{SITENAME}}',
@@ -96,7 +100,7 @@ $messages = array(
'otherlanguages' => 'Na otro idioma',
'redirectedfrom' => '(Bo a yega akinan pa via di e página $1)',
'redirectpagesub' => 'Página ku ta sirbi komo portal',
-'lastmodifiedat' => 'E páginá aki a wòrdu kambiá ultimo biaha riba $1, ora $2.', # $1 date, $2 time
+'lastmodifiedat' => 'E páginá aki a wòrdu kambiá ultimo biaha riba $1, ora $2.',
'viewcount' => 'E paginá aki a wòrdu mirá {{PLURAL:$1|biaha|$1 biaha}}.',
'protectedpage' => 'Página Protehá',
'jumpto' => 'Bai na:',
@@ -107,7 +111,6 @@ $messages = array(
'aboutsite' => 'Tokante {{SITENAME}}',
'aboutpage' => 'Project:Info',
'copyright' => 'E kontenido ta disponibel bou di $1.',
-'copyrightpagename' => '{{SITENAME}} derecho di outor',
'copyrightpage' => '{{ns:project}}:Derechinan di outor',
'currentevents' => 'Eventonan aktual',
'currentevents-url' => 'Project:Eventonan aktual',
@@ -115,8 +118,6 @@ $messages = array(
'disclaimerpage' => 'Project:Deklarashon di Liberashon for di Responsabilidat General',
'edithelp' => 'Ayudo ku editamentu',
'edithelppage' => 'Help:Kon pa editá artíkulo',
-'faq' => 'Preguntanan mas Puntrá',
-'faqpage' => 'Project:Preguntanan mas Puntrá',
'helppage' => 'Help:Kontenido',
'mainpage' => 'Página Prinsipal',
'mainpage-description' => 'Página Prinsipal',
@@ -174,14 +175,6 @@ No lubidá di kambia bo [[Special:Preferences|{{SITENAME}} preferensianan]].',
'userlogin' => 'Traha un kuenta nobo òf outentiká',
'userlogout' => 'Terminá sesion',
'badretype' => 'E kontraseñanan hinká no ta kuadra.',
-'youremail' => 'E-mail:',
-'username' => 'Nòmber di uzadó:',
-'uid' => 'ID di uzadó:',
-'yourrealname' => 'Nòmber berdadero:',
-'yourlanguage' => 'Idioma:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Nòmber di kariño:',
-'badsig' => 'Firma inválido; kontrolá e HTML uzá.',
'wrongpassword' => 'Kontraseña no ta korekto. Por fabor purba atrobe.',
'wrongpasswordempty' => 'Kontraseña tabata bashí. Por fabor purba atrobe.',
'acct_creation_throttle_hit' => 'Bishitantenan na uzando bo IP adrès a traha $1 kuenta den e último 24 ora, lokual ta e máksimo permití den e periodo aki. Esaki ta nifiká ku hendenan uzando e IP adrès aki no por traha mas kuenta na e momentu aki.',
@@ -197,7 +190,6 @@ No lubidá di kambia bo [[Special:Preferences|{{SITENAME}} preferensianan]].',
Bo por kambia página libremente, pero tene kuenta ku lo nota bo IP adrès den e historia di kambionan hasí na e página aki.',
'blockedtitle' => 'Uzadó ta blokiá',
'whitelistedittitle' => 'Mester outentiká promé pa editá',
-'confirmedittitle' => 'Konfirmashon di e-mail eksigí pa editá',
'confirmedittext' => 'Bo mester konfirmá bo e-mail adrès promé ku bo editá página. Por fabor duna i validá bo e-mail adrès via bo [[Special:Preferences|preferensianan]].',
'accmailtitle' => 'Kontraseña mandá.',
'accmailtext' => "E kontraseña pa '$1' tabata mandá pa $2.",
@@ -218,7 +210,7 @@ Bo por kambia página libremente, pero tene kuenta ku lo nota bo IP adrès den e
'histlast' => 'Último',
# Search results
-'nextn' => 'siguiente $1',
+'nextn' => 'siguiente {{PLURAL:$1|$1}}',
'searchhelp-url' => 'Help:Kontenido',
# Preferences page
@@ -227,6 +219,14 @@ Bo por kambia página libremente, pero tene kuenta ku lo nota bo IP adrès den e
'changepassword' => 'Kambia kontraseña',
'timezonelegend' => 'Zona di tempu',
'allowemail' => 'Akseptá e-mail di otro uzadó',
+'youremail' => 'E-mail:',
+'username' => 'Nòmber di uzadó:',
+'uid' => 'ID di uzadó:',
+'yourrealname' => 'Nòmber berdadero:',
+'yourlanguage' => 'Idioma:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Nòmber di kariño:',
+'badsig' => 'Firma inválido; kontrolá e HTML uzá.',
# Recent changes
'recentchanges' => 'Kambionan resien',
@@ -239,6 +239,9 @@ Bo por kambia página libremente, pero tene kuenta ku lo nota bo IP adrès den e
'hide' => 'Skonde',
'show' => 'Mustra',
+# File description page
+'file-anchor-link' => 'Imagen',
+
# Unwatched pages
'unwatchedpages' => 'Páginanan no observá',
@@ -354,13 +357,11 @@ Por fabor skohe un otro título.',
'1movedto2_redir' => '[[$1]] mové pa [[$2]] riba redirect',
# Namespace 8 related
-'allmessages' => 'Mensahenan di sistema',
-'allmessagesname' => 'Nòmber',
-'allmessagesdefault' => 'Teksto predeterminá',
-'allmessagescurrent' => 'Teksto aktual',
-'allmessagestext' => 'Esaki ta un lista di mensahe di sistema disponibel den e dominio di MediaWiki.',
-'allmessagesfilter' => 'Filter pa nòmber di mensahe:',
-'allmessagesmodified' => 'Mustra solamente esnan modifiká',
+'allmessages' => 'Mensahenan di sistema',
+'allmessagesname' => 'Nòmber',
+'allmessagesdefault' => 'Teksto predeterminá',
+'allmessagescurrent' => 'Teksto aktual',
+'allmessagestext' => 'Esaki ta un lista di mensahe di sistema disponibel den e dominio di MediaWiki.',
# Attribution
'anonymous' => 'Uzadó(nan) anonimo di {{SITENAME}}',
diff --git a/languages/messages/MessagesPcd.php b/languages/messages/MessagesPcd.php
new file mode 100644
index 00000000..46b31001
--- /dev/null
+++ b/languages/messages/MessagesPcd.php
@@ -0,0 +1,856 @@
+<?php
+/** Picard (Picard)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Geoleplubo
+ */
+
+$fallback = 'fr';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Loïens soulinés:',
+'tog-justify' => 'Aligner ches paragrafes',
+'tog-hideminor' => 'Muche ches tiots edits din ches nouvieus cangemints',
+'tog-hidepatrolled' => 'Mucher chés wardés canjemints din chés nouvieus canjemints',
+'tog-newpageshidepatrolled' => 'Muche ches paches pormenées del lisse ed ches nouvèles paches',
+'tog-extendwatchlist' => "Étènne l'lisse pou vir tortous ches cangemints, poin seulemint ches nouvieus",
+'tog-numberheadings' => 'liméro automatique ed ches intétes',
+'tog-showtoolbar' => "Afiquer chés otis pou l'édichon (i feut JavaScript)",
+'tog-editondblclick' => 'Éditer ches paches aveuc un doube buke (i feut JavaScript)',
+'tog-editsection' => "Pérmet l'édichion del sekchion via [edit] loïens",
+'tog-editsectiononrightclick' => "Pérmet l'édichion del sekchion par un droé buke su ch'tite del sekchion (i feut JavaScript)",
+'tog-showtoc' => "Aficher l'tabe ed ches étnus (pou ches paches aveuc plu ed 3 intétes)",
+'tog-rememberpassword' => "Warder min lodjine su chl'ordinateu-lo.",
+'tog-editwidth' => "Alatcher l'boéte d'édichon pou rimplir tout ch'cassi",
+'tog-watchcreations' => "Ajouter ches paches qu'éj crée su em lisse",
+'tog-watchdefault' => "Ajouter ches paches qu'éj édite su em lisse.",
+'tog-watchmoves' => "Ajouter ches paches qu'éj déplache su m'lisse.",
+'tog-watchdeletion' => "Ajouter ches paches qu'éj déface su m'lisse.",
+'tog-previewontop' => "Aficher l'prévue édvint el bouéte édite",
+'tog-previewonfirst' => "Aficher l'prévue au preumié édite.",
+'tog-enotifwatchlistpages' => "Éspédier din m'boéte un imèle quante eune pache su m'lisse est candgée",
+'tog-enotifusertalkpages' => 'Éspédier un imèle su em bouéte quante m\'pache "Dvise Uzeu" est candgée.',
+'tog-enotifminoredits' => 'Éspédier à mi étous un imèle pou ches tiots édites éd ches paches',
+'tog-shownumberswatching' => "Aficher ch'nombe ed gins qu'ont vu.",
+'tog-watchlisthideown' => 'Muche mes édites su el lisse',
+'tog-watchlisthidebots' => 'Muche ches robots édites su el lisse',
+'tog-watchlisthideminor' => 'Muche ches tiots édites su el lisse.',
+'tog-watchlisthideliu' => 'Muche ches édites ed ches lodjés gins su el lisse.',
+'tog-watchlisthideanons' => 'Muche ches édites ed ches gins annonimes su el lisse.',
+'tog-watchlisthidepatrolled' => 'Muche ches édites pormenés su el lisse.',
+'tog-ccmeonemails' => "Éspédier din m'bouéte ches copies ed ches imèles éq j'éspédie à ches autes uzeus",
+'tog-diffonly' => "N'poin aficher chl'étnu del pache édsou diffs",
+'tog-showhiddencats' => 'Foaire vir chés muchées catégories',
+
+'underline-always' => 'Toudis',
+'underline-never' => 'Janmoais',
+
+# Dates
+'sunday' => 'Diminche',
+'monday' => 'Lindi',
+'tuesday' => 'Mardi',
+'wednesday' => 'Mérkédi',
+'thursday' => 'Judi',
+'friday' => 'Verdi',
+'saturday' => 'Sinmedi',
+'sun' => 'Dim',
+'mon' => 'Lin',
+'tue' => 'Mar',
+'wed' => 'Mér',
+'thu' => 'Jud',
+'fri' => 'Ver',
+'sat' => 'Sin',
+'january' => 'ed Janvié',
+'february' => 'ed Févrié',
+'march' => 'ed Marche',
+'april' => "d'Avri",
+'may_long' => 'ed Moai',
+'june' => 'ed Join',
+'july' => 'ed Juillet',
+'august' => "d'Aout",
+'september' => 'ed Sétimbe',
+'october' => "d'Octobe",
+'november' => 'ed Novimbe',
+'december' => 'ed Déchimbe',
+'january-gen' => 'Janvié',
+'february-gen' => 'Févrié',
+'march-gen' => 'Marche',
+'april-gen' => 'Avri',
+'may-gen' => 'Moai',
+'june-gen' => 'Join',
+'july-gen' => 'Juillet',
+'august-gen' => 'Aout',
+'september-gen' => 'Sétimbe',
+'october-gen' => 'Octobe',
+'november-gen' => 'Novimbe',
+'december-gen' => 'Déchimbe',
+'jan' => 'Jan',
+'feb' => 'Fév',
+'mar' => 'Mar',
+'apr' => 'Avr',
+'may' => 'Moa',
+'jun' => 'Joi',
+'jul' => 'Jui',
+'aug' => 'Aou',
+'sep' => 'Sét',
+'oct' => 'Oct',
+'nov' => 'Nov',
+'dec' => 'Déc',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Catégorie|Catégories}}',
+'category_header' => 'Paches in catégorie "$1"',
+'subcategories' => 'Dsoucatégories',
+'category-media-header' => 'Média in catégorie "$1"',
+'category-empty' => "''Din l'catégorie-lo, i n'y o poin d'paches ou d'média.''",
+'hidden-categories' => '{{PLURAL:$1|Catégorie muchée|Catégories muchées}}',
+'hidden-category-category' => 'Catégouries muchées',
+'category-subcat-count' => "{{PLURAL:$2|Chol catégorie o seulemint el sou-catégorie-lo.|Chol catégorie o {{PLURAL:$1|l'sou-catégorie-lo|$1 sou-catégories}}, pou un total éd $2.}}",
+'category-article-count' => "{{PLURAL:$2|Chol catégorie o seulemint chol pache-lo.|{{PLURAL:$1|El pache-lo est|$1 Chés paches-lo sont}} din l'catégorie-lo, pou un total éd $2 .}}",
+'listingcontinuesabbrev' => 'cont.',
+
+'mainpagetext' => "'''MediaWiki o té instalé aveuc victoère.'''",
+
+'about' => 'À pérpos',
+'article' => 'Étnu del pache',
+'newwindow' => '(ouvrir din eune nouvèle fernéte)',
+'cancel' => 'Canchler',
+'moredotdotdot' => 'Plu...',
+'mypage' => 'Em pache',
+'mytalk' => 'Mi bavouér',
+'anontalk' => "Bavouér pou chl'IP-lo",
+'navigation' => 'Navigachon',
+'and' => '&#32;pi',
+
+# Cologne Blue skin
+'qbfind' => 'Trouvoèr',
+'qbbrowse' => 'Trifouille',
+'qbedit' => 'Editer',
+'qbpageoptions' => 'Chol pache-lo',
+'qbmyoptions' => 'Mes paches',
+'qbspecialpages' => 'Espéciales paches',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-delete' => 'Défacer',
+'vector-action-move' => "Canger ch'nom",
+'vector-namespace-help' => "Pache d'aïude",
+'vector-namespace-image' => 'Fichié',
+'vector-namespace-main' => 'Pache',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-special' => 'Pache éspéchiale',
+'vector-namespace-talk' => 'Pérlache',
+'vector-namespace-template' => 'Modéle',
+'vector-namespace-user' => 'Pache dechl uzeu',
+'vector-view-create' => 'Créer',
+'vector-view-edit' => 'Éditer',
+'vector-view-history' => "Vir l'histoère",
+'vector-view-view' => 'Lire',
+'vector-view-viewsource' => "Vir l'source",
+
+'errorpagetitle' => 'Bérlure',
+'returnto' => 'Értrouve $1.',
+'tagline' => 'Cha vient éd {{SITENAME}}',
+'help' => 'Aïude',
+'search' => 'Tracher',
+'searchbutton' => 'Tracher',
+'go' => 'Aller',
+'searcharticle' => 'Aller',
+'history' => 'Pache historique',
+'history_short' => 'Histoère',
+'info_short' => 'Informachion',
+'printableversion' => 'Imprimabe vérchon',
+'permalink' => 'Loïen pérmanint',
+'print' => 'Imprimer',
+'edit' => 'Éditer',
+'create' => 'Créer',
+'editthispage' => "Éditer chl'pache-lo",
+'create-this-page' => "Créer chl'pache lo",
+'delete' => 'Défacer',
+'deletethispage' => "Défacer chl'pache lo",
+'undelete_short' => 'Déface poin {{PLURAL:$1|un édite|$1 édites}}',
+'protect' => 'Garantir',
+'protect_change' => 'canger',
+'protectthispage' => "Défènner l'pache",
+'unprotect' => 'Mie défènné',
+'unprotectthispage' => "N'poin garantir chol pache",
+'newpage' => 'Nouvèle pache',
+'talkpage' => "Alédjer l'pache-lo",
+'talkpagelinktext' => 'Dviser',
+'specialpage' => 'Pache éspéchiale',
+'personaltools' => 'Otis dech uzeu',
+'postcomment' => 'Nouvèle sekchion',
+'articlepage' => 'Vir el pache ed ches étnus',
+'talk' => 'distchuter',
+'views' => 'Vues',
+'toolbox' => 'Boéte à otis',
+'userpage' => 'Vir el pache dech uzeu',
+'projectpage' => "Vir l'pache dech prodjé",
+'imagepage' => 'Vir el pache dech fichié',
+'mediawikipage' => 'Vir messache pache',
+'templatepage' => 'Vir el pache dech modéle',
+'viewhelppage' => 'Vir aïude pache',
+'categorypage' => "Vir l'pache éd chés catégories",
+'viewtalkpage' => 'Vir distchussion',
+'otherlanguages' => "Din d'eutes langaches",
+'redirectedfrom' => '(Érdirection édpis $1)',
+'redirectpagesub' => 'Pache érdérivée',
+'lastmodifiedat' => "L'pache-lo ale o té modifiée l'fouos darin l' $1, à $2.",
+'protectedpage' => 'Pache défènnée',
+'jumpto' => 'Aler à:',
+'jumptonavigation' => 'navigachon',
+'jumptosearch' => 'tracher',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'à pérpos éd {{SITENAME}}',
+'aboutpage' => 'Project:à pérpos',
+'copyright' => "Ch'contnu, il est disponipe dsou $1.",
+'copyrightpage' => '{{ns:project}}:Copyrights',
+'disclaimers' => 'Démintis',
+'disclaimerpage' => 'Project:Déminti général',
+'edithelp' => 'Éditer el aiyude',
+'edithelppage' => 'Help:Édichion',
+'helppage' => 'Help:Étnus',
+'mainpage' => 'Moaite Pache',
+'mainpage-description' => 'Moaite Pache',
+'portal' => 'Portal del conmeunauté',
+'privacy' => "Politique d'éscrè",
+'privacypage' => "Project:Politique d'éscrè",
+
+'badaccess' => 'Bérlure éd pérmission',
+
+'ok' => 'OK',
+'retrievedfrom' => 'Érprind din "$1"',
+'youhavenewmessages' => 'Os avez $1 ($2).',
+'newmessageslink' => 'nouvieus messaches',
+'newmessagesdifflink' => 'darin cangemint',
+'youhavenewmessagesmulti' => 'Os avez des nouvieus messaches su $1',
+'editsection' => 'éditer',
+'editold' => 'éditer',
+'viewsourceold' => "vir l'source",
+'editlink' => 'édite',
+'viewsourcelink' => 'vir el source',
+'editsectionhint' => 'Éditer el sekchon: $1',
+'toc' => 'Étnus',
+'showtoc' => 'Aficher',
+'hidetoc' => 'muche',
+'thisisdeleted' => 'Vir ou érfoaire $1?',
+'viewdeleted' => 'Vir $1?',
+'restorelink' => '{{PLURAL:$1|eune édition défacée|$1 chés éditions défacées}}',
+'feedlinks' => 'Pipe:',
+'feed-unavailable' => "I n'y o poin ed sindicachion ed ches pipes",
+'site-rss-feed' => '$1 RSS Fil',
+'site-atom-feed' => '$1 Atom Fil',
+'page-rss-feed' => '"$1" RSS Fil',
+'page-atom-feed' => '"$1" Atom Fil',
+'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
+'red-link-title' => "$1 (el pache, ale n'écsiste mie)",
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Pache',
+'nstab-user' => 'Pache dech uzeu',
+'nstab-media' => 'Média pache',
+'nstab-special' => 'Pache éspéchiale',
+'nstab-project' => 'Pache éd prodjé',
+'nstab-image' => 'Fichié',
+'nstab-mediawiki' => 'Messache',
+'nstab-template' => 'Modéle',
+'nstab-help' => "Pache d'aiyude",
+'nstab-category' => 'Catégorie',
+
+# Main script and global functions
+'nosuchspecialpage' => "I n'y o poin chot éspéchiale pache-lo",
+
+# General errors
+'error' => 'Bérlurache',
+'databaseerror' => "Bérlurache din l'database",
+'laggedslavemode' => "'''Afute:''' Pététe éq l'pache-lo n'o poin chés darins canjemints.",
+'missing-article' => "El base éd dounées n'o poin treuvé ech teske d'eune pache éq ale d'vroait treuver, aveuc ch'nom \"\$1\" \$2. <br /> Généralemint, ch'est pasqué in o sui eune anthieusse diff o bin un histourique érlié aveuc eune pache défachée.
+
+Si s'n'est poin ch'cas-lo, pététe éq ch'est un bogue din ch'businkillache. <br /> I feut signaler ch'probléme-lo à un [[Special:ListUsers/sysop|administrateu]], aveuc l'URL.",
+'missingarticle-rev' => '(révision#: $1)',
+'missingarticle-diff' => '(Diff: $1, $2)',
+'internalerror' => 'Bérlurache intérne',
+'internalerror_info' => 'Bérlurache intérne: $1',
+'filecopyerror' => 'Éj pux poin copier ch\'fichié "$1" su "$2".',
+'filerenameerror' => 'Éj pux poin canger ch\'nom dech fichié "$1" su "$2".',
+'filedeleteerror' => 'Éj pux poin défacer ch\'fichié "$1".',
+'directorycreateerror' => 'Éj pux poin créer ch\'répértoère "$1".',
+'filenotfound' => 'Éj pux poin trouvoér ch\'fichié "$1".',
+'fileexistserror' => 'Éj pux poin écrire su ch\'fichié "$1": ech fichié écsiste',
+'unexpected' => 'Valeur poin prévue: "$1"="$2".',
+'badarticleerror' => "Os n'povez poin foaire cha su l'pache-lo.",
+'badtitle' => 'Méchant tite',
+'badtitletext' => "Ch'tite del pache écmindée n'est poin valabe, est vide, ou bin ch'est un tite inter-langue ou inter-proujé aveuc des méchands loïens. Pététe qu'il y o un ou des caractére(s) éq i feut poin mette din chés tites.",
+'viewsource' => "Vir l'source",
+'viewsourcefor' => 'pou $1',
+'protectedpagetext' => "L'pache-lo ale o té garantie pou impétcher chés canjemints.",
+'sqlhidden' => "(l'édminde SQL est muchée)",
+'ns-specialprotected' => "Ches paches éspéchiales, is n'peute poin éte éditées.",
+
+# Virus scanner
+'virus-unknownscanner' => 'intivirus poin connu:',
+
+# Login and logout pages
+'yourname' => "nom d'uzeu:",
+'yourpassword' => "Mot d'passe:",
+'yourpasswordagain' => "Intrer à nouvieu ch'mot d'passe:",
+'remembermypassword' => "Inrégistrer m'loguine su echl ordinateu-lo",
+'yourdomainname' => 'Vote donmène:',
+'login' => 'Intrer',
+'nav-login-createaccount' => 'Intrer / créer vote conpte',
+'loginprompt' => 'I feut avoèr dés coukies pou pouvoèr intrer din {{SITENAME}}.',
+'userlogin' => 'Intrer / créer vote conpte',
+'logout' => 'Sortir',
+'userlogout' => 'Sortir',
+'notloggedin' => 'Poin connékté',
+'nologin' => "os n'avez mie un conpte? '''$1'''.",
+'nologinlink' => 'Créer un conpte',
+'createaccount' => 'Créer un conpte',
+'gotaccount' => "Jou qu'os avez piécha un conpte? '''$1'''.",
+'gotaccountlink' => 'Intrer',
+'createaccountmail' => 'par imèle',
+'badretype' => "Chés mots d'passe intrés, is sont poin bon.",
+'userexists' => "ch'nom d'uzeu intré, il est piécha donné.
+
+j'm'escuse mais i feut prinde un aute nom.",
+'loginerror' => 'Bérlurache del intrée',
+'noname' => "Os n'avez poin donné un nom d'uzeu valabe.",
+'loginsuccess' => "'''Achteur os ètes intré{{GENDER:||e|(e)}} din {{SITENAME}} conme \"\$1\".'''",
+'nouserspecified' => "Os dvez intrer un nom d'uzeu.",
+'mailmypassword' => "Imèle un nouvieu mot d'passe",
+'passwordremindertitle' => "Nouvieu mot d'passe tanporoère pou {{SITENAME}}",
+'noemail' => "I n'y o poin d'adél pou echl' uzeu « $1 ».",
+'accountcreated' => "Ch'conpte est créé",
+'accountcreatedtext' => "Ech conpte d'uzeu pou $1 o té créé.",
+'loginlanguagelabel' => 'Langache: $1',
+
+# Password reset dialog
+'resetpass' => "Canger ch'mot d'passe",
+'resetpass_header' => "Canger ch'mot d'passe dech conpte",
+'oldpassword' => "Anthiu mot d'passe:",
+'newpassword' => "Nouvieu mot d'passe:",
+'resetpass_forbidden' => "Chés mots d'passe is n'peu'te poin ète cangés",
+'resetpass-submit-loggedin' => "Canger ch'mot d'passe",
+
+# Edit page toolbar
+'bold_sample' => 'Cros teske',
+'bold_tip' => 'Cros teske',
+'italic_sample' => 'Teske italique',
+'italic_tip' => 'Teske italique',
+'link_sample' => 'Tite dech loïen',
+'link_tip' => 'Loïen intérne',
+'extlink_sample' => 'http://www.example.com tite dech loïen',
+'extlink_tip' => "Éstérne loïen ( n'obliez mie ech préfix http:// )",
+'headline_sample' => 'Teske dechl in-téte',
+'headline_tip' => 'In-téte nivieu 2',
+'math_sample' => "Mètte l'formule ichi",
+'math_tip' => 'Formule matématike (LaTeX)',
+'nowiki_sample' => "Placher ch'teske non-formaté ichi",
+'nowiki_tip' => "Poin d'format wiki",
+'image_tip' => 'fichié incorporé',
+'media_tip' => 'Loïen dech fichié',
+'sig_tip' => "Vo pataraf aveuc l'date",
+'hr_tip' => 'line orizontale (imploéïer aveuc modérachon)',
+
+# Edit pages
+'summary' => 'Résumè:',
+'subject' => 'Sujet/in-téte:',
+'minoredit' => "Ch'est eune tiote édition",
+'watchthis' => "Suire l'pache-lo",
+'savearticle' => "Seuver l'pache",
+'preview' => 'Prévir',
+'showpreview' => "Fouaire vir l'prévue",
+'showdiff' => 'Montrer chés cangemints',
+'anoneditwarning' => "'''Wàrte ! :''' Vos n'ètes poin lodjé.
+
+Vote adrèche IP, ale sro inrégistrée din l'historique éd chol pache.",
+'summary-preview' => 'Prévue dech résumè :',
+'newarticle' => '(nouvieu)',
+'newarticletext' => "Os avez sui un loïen vers eune pache qui n’essiste poin coère ou qu' o té [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} défacée].
+Pou créer chol pache, intrez vote teske din l'boéte édsou (vir [[{{MediaWiki:Helppage}}|l'pache d’aïude]] ). <br />
+Si vos ètes ichi par bérlure, bukez su l'bouton '''értour''' du navigateu.",
+'noarticletext' => 'Achteure i n’y o nu teske su l\'pache-lo.
+Os povez [[Special:Search/{{PAGENAME}}|foaire eune érchérche du tite del pache]] din chés eutes paches,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} érchércher din chés érliées opéracions]
+ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer chol pache]</span>.',
+'previewnote' => "'''Afute! ch'teske-lo ch'est seulemint eune prévue.'''
+
+Vos cangemints, is sont poin coèr inrégistrés!",
+'editing' => 'Éditer $1',
+'editingsection' => '$1 éditée (sekchon)',
+'yourtext' => 'Vote teske',
+'copyrightwarning' => "Toutes chés contérbuchons su {{SITENAME}} ont érbéyées conme publiées dsou chés térmes del $2 (vir $1 pou pus d'détals). Si vos n'volez poin éq vos écrivures euchette canjés pi départis à volontè, mérci éd n'poin les soumétte ichi.<br />
+Os prométtez auchi éq vos avez écrit ch'teske vous-méme, ou éq vos l’avez ércopié d’eune source din ch'donmène public, ou d’eune libe érsource.<br /> '''N’IMPLOÉYEZ POIN D'TRAVAUX ÉDSOU DROÉ D’AUTEU SINS ACOR ÉSPRÉSSE !'''",
+'templatesused' => '{{PLURAL:$1|Modéle imploïé|Modéles imploïés}} pou chol pache:',
+'templatesusedpreview' => '{{PLURAL:$1|Modéle imploïé|Modéles imploïés}} din chol prévue-lo:',
+'template-protected' => '(garanti)',
+'template-semiprotected' => '(semi-garanti)',
+'hiddencategories' => '{{PLURAL:$1|Catégorie muchée|Catégories muchées}} pou chol pache:',
+'permissionserrorstext-withaction' => "Vos n’avez poin l'pérmichon éd $2, pou {{PLURAL:$1|ch'motif suivant|chés motifs suivants}}:",
+
+# History pages
+'viewpagelogs' => 'Vir chés gasètes del pache-lo',
+'currentrev-asof' => 'Coursaule vérchon in date du $1',
+'revisionasof' => 'Ércordé conme $1',
+'previousrevision' => '← érvue dvant',
+'nextrevision' => 'Cangemint pu nouvieu →',
+'currentrevisionlink' => 'Érvision éd qhére',
+'cur' => 'cour',
+'last' => 'dvant',
+'page_first' => 'preumié',
+'page_last' => 'darin',
+'histlegend' => "Diff séléccion: buke chés boétes d'chés canjemints à comparète pi détriquer intrer ou ch'bouton édsou.<br />
+Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-chi, ({{MediaWiki:Last}}) = différinches aveuc el vérchon édvant, <b>m</b> = tiot canjemint.",
+'history-fieldset-title' => "S'déplacher din l'historique",
+'histfirst' => 'preumières paches',
+'histlast' => 'Darin',
+
+# Revision deletion
+'rev-delundel' => 'montrer/mucher',
+'revdel-restore' => 'cange écmint vir',
+'pagehist' => 'Histoère del pache',
+
+# Merge log
+'revertmerge' => "N'poin mélinger",
+
+# Diffs
+'history-title' => 'Histoère des cangemints éd "$1"',
+'difference' => '(Diférinche intre chés érvisions)',
+'lineno' => 'Line $1:',
+'compareselectedversions' => 'Compérer chés couésies contérbuchons',
+'editundo' => "n'poin foaire",
+
+# Search results
+'searchresults' => 'Tracher chés résultats',
+'searchresults-title' => 'Tracher chés résultats pou "$1"',
+'searchresulttext' => "Pou pus d'informachons quant qu'vos trachez {{SITENAME}}, vir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
+'searchsubtitle' => "Vos trachez « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes chés paches aroutant pèr « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes chés paches qu'ont un loïen dsus « $1 »]])",
+'searchsubtitleinvalid' => "vos trachez apreu '''$1'''",
+'notitlematches' => "Éj déniche mie d'pache aveuc ch'tite-lo",
+'textmatches' => 'Teske del pache déniché',
+'notextmatches' => "I n'y o poin d'pache aveuc ch'teske-lo",
+'prevn' => 'dvant {{PLURAL:$1|$1}}',
+'nextn' => 'apreu {{PLURAL:$1|$1}}',
+'prevn-title' => 'Dvant $1 {{PLURAL:$1|résultat|résultats}}',
+'viewprevnext' => 'Vir ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 mot|$2 mots}})',
+'search-redirect' => '(érdirection $1)',
+'search-section' => '(sekchon $1)',
+'search-suggest' => 'Cha vo ti dire: $1',
+'search-interwiki-caption' => 'Proujé analocq',
+'search-interwiki-default' => '$1 résultats:',
+'search-interwiki-more' => '(pus)',
+'search-mwsuggest-enabled' => 'aveuc avanches',
+'search-mwsuggest-disabled' => "mie d'avanches",
+'nonefound' => "'''Note''': il y o tasseulemint quéques éspaces éd noms éq sont trachés pèr défeut. <br /> Pou tracher din tous chés contnus (paches éd pérlache, modéles, etc... comprins) insséyer in imploéyant ch'préfixe ''all:'' o bin imploéyer echl éspace éd noms édmindé conme préfixe.",
+'powersearch' => 'Érvue avanchée',
+'powersearch-legend' => 'Érvue avanchée',
+'powersearch-ns' => 'Tracher din chés éspaches éd chés noms:',
+'powersearch-redir' => "Lisse d'chés érdirécchons",
+'powersearch-field' => 'Tracher pou',
+
+# Preferences page
+'preferences' => 'Préférinches',
+'mypreferences' => 'Mes préférinches',
+'timezoneregion-europe' => 'Urope',
+'youremail' => 'Imèle:',
+'username' => "Nom d'uzeu:",
+'uid' => 'ID dech uzeu:',
+'prefs-memberingroups' => 'Mimbe éd {{PLURAL:$1|groupe|groupes}}:',
+'yourrealname' => 'Vrai nom:',
+'yourlanguage' => 'Langache:',
+'badsiglength' => 'Vote signature est gramint longue.
+Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
+'gender-male' => 'Marle',
+'gender-female' => 'Femelle',
+'email' => 'Imèle',
+'prefs-help-email-required' => 'I feut eune iméle adérche',
+
+# User rights
+'userrights-groupsmember' => 'Mimbe éd:',
+
+# Groups
+'group-sysop' => 'Aménistrateus',
+'group-bureaucrat' => 'Buroécrates',
+
+'group-sysop-member' => 'Aménistrateu',
+'group-bureaucrat-member' => 'Buroécrate',
+
+'grouppage-sysop' => '{{ns:project}}:Aménistrateus',
+
+# User rights log
+'rightslog' => "Jornal d'chés droés dechl uzeu",
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => "Vir l'pache-lo",
+'action-edit' => "édite l'pache-lo",
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|cange|canges}}',
+'recentchanges' => 'Darins canjemints',
+'recentchanges-legend' => 'Opchons éd chés nouvieus canjemints',
+'recentchanges-feed-description' => 'Tracher chés pus darins cangemints du wiki din chol alimintachon.',
+'rcnote' => "Vlo {{PLURAL:$1|ech darin canjemint foait|chés $1 darins canjemints foaits}} din {{PLURAL:$2|l'darinne jornèe|chés <b>$2</b> darins jours}} dusque l' $4 à $5.",
+'rclistfrom' => "Montrer chés nouvieus cangemints d'puis $1",
+'rcshowhideminor' => '$1 tiotes éditions',
+'rcshowhidebots' => '$1 bots',
+'rcshowhideliu' => '$1 lodjés uzeus',
+'rcshowhideanons' => '$1 uzeus anonimes',
+'rcshowhidemine' => '$1 ems éditions',
+'rclinks' => 'Afiqher chés $1 darins canjemints din chés $2 darins jours<br />$3',
+'diff' => 'dif',
+'hist' => 'hist',
+'hide' => 'Mucher',
+'show' => 'Montrer',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Montrer chés détals (i feut avoér JavaScript)',
+'rc-enhanced-hide' => 'Mucher chés détals',
+
+# Recent changes linked
+'recentchangeslinked' => 'Darins canjemints érliés',
+'recentchangeslinked-title' => 'Cangemints à pérpos éd "$1"',
+'recentchangeslinked-summary' => "Ch'est eune lisse d'chés darins canjemints su chés paches qu'ont un loïen aveuc l'pache-lo. Chés paches din vote [[Special:Watchlist|''lisse à suire'']] il sont in '''cros'''.",
+'recentchangeslinked-page' => 'Nom del pache:',
+'recentchangeslinked-to' => "Vir putot chés canjemints d'chés paches aveuc un loïen su l'pache-lo",
+
+# Upload
+'upload' => 'Quértcher chés fichiés',
+'uploadlogpage' => 'Jornal éd chés quértchémints',
+'uploadedimage' => '"[[$1]]" quértchée',
+
+# File description page
+'filehist' => 'Histoère dech fichié',
+'filehist-help' => "Buke su eune date/heure pou vir ch'fichié conme il étoait ach momint-lo.",
+'filehist-current' => 'courant',
+'filehist-datetime' => 'Date/Tans',
+'filehist-thumb' => 'Tiote image',
+'filehist-thumbtext' => "Image pou l'vérchon éd $1",
+'filehist-user' => 'Uzeu',
+'filehist-dimensions' => 'Diminsions',
+'filehist-comment' => 'Fichié éd chés conmints',
+'imagelinks' => 'Loïens dech fichié',
+'linkstoimage' => "{{PLURAL:$1|L'pache d'apreu est liée|Chés $1 paches d'apreu sont liées}} à ch'fichié-lo :",
+'sharedupload' => "Cht'fichié vient éd $1 pi i put ète imploïé par d'eutes proujés.",
+'uploadnewversion-linktext' => 'Quértcher eune novèle vérchion del pache-lo',
+
+# Random page
+'randompage' => "Pache à l'bérlure",
+
+# Statistics
+'statistics' => 'Éstatistikes',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|octé|octés}}',
+'nmembers' => '$1 {{PLURAL:$1|mimbe|mimbes}}',
+'prefixindex' => 'Tertous chés paches aveuc préfix',
+'newpages' => 'Novèles paches',
+'move' => 'Déplacher',
+'movethispage' => "Déplacher l'pache-lo",
+'pager-newer-n' => '{{PLURAL:$1|pu nouvieu 1|pu nouvieus $1}}',
+'pager-older-n' => '{{PLURAL:$1|pus viu 1|pus vius $1}}',
+
+# Book sources
+'booksources' => 'Sources dech live',
+'booksources-search-legend' => "Tracher chés référinches d'chés lives",
+'booksources-go' => 'Aler',
+
+# Special:Log
+'log' => 'Gasètes',
+
+# Special:AllPages
+'allpages' => 'Tertous chés paches',
+'alphaindexline' => '$1 à $2',
+'prevpage' => 'Pache édvant ($1)',
+'allpagesfrom' => 'Afiquer chés paches éq partent à:',
+'allpagesto' => "Foaire vir chés paches qui s'términette à:",
+'allarticles' => 'Tertous chés artikes',
+'allinnamespace' => 'Tertous chés paches ($1 namespace)',
+'allnotinnamespace' => 'Tertous chés paches (mie din $1 namespace)',
+'allpagesprev' => "D'vant",
+'allpagesnext' => "D'apreu",
+'allpagessubmit' => 'Aler',
+'allpagesprefix' => "Foaire vir chés paches aveuc ch'préfix:",
+
+# Special:LinkSearch
+'linksearch' => 'Loïens éstérieurs',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Jornal del créachon pou echl uzeu',
+'newuserlog-create-entry' => "Nouvieu conpte d'uzeu",
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(lisse éd chés mimbes)',
+
+# E-mail user
+'emailuser' => "Imèle echl'uzeu-lo",
+'emailpage' => 'Imèle dech uzeu',
+
+# Watchlist
+'watchlist' => 'Em lisse à suire',
+'mywatchlist' => "M'lisse à suire",
+'watchlistfor' => "(pou '''$1''')",
+'addedwatch' => "Rajouté su l'lisse à suire",
+'addedwatchtext' => "L' pache « [[:$1]] » o té rajoutée à vote [[Special:Watchlist|lisse à suire]].<br /> Chés canjemints à vnir del pache-lo pi del page éd pérlache sront mis din l'lisse. L'pache sro '''in cros''' din el [[Special:RecentChanges|lisse d'chés darins canjemints]] pou les értreuver fachilmint. Pou értirer chol pache del ''lisse à suire'', bukez su « {{MediaWiki:Unwatch}} ».",
+'removedwatch' => 'Értiré del lisse à suire',
+'removedwatchtext' => "L'pache « [[:$1]] » o té értirée éd vote [[Special:Watchlist|lisse à suire]].",
+'watch' => 'Suire',
+'watchthispage' => "Suire l'pache-lo",
+'unwatch' => "N'poin suire",
+'watchlist-details' => "{{PLURAL:$1|$1 pache|$1 paches}} din vote lisse à suire, chés paches éd disqhuchon n'sont poin conptées.",
+'wlshowlast' => 'Montrer darin $1 eûres $2 jours $3',
+'watchlist-options' => 'Opchons del lisse à suire',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Suire…',
+'unwatching' => "n'poin suire…",
+
+# Delete
+'deletepage' => "Défacer l'pache",
+'confirmdeletetext' => "Vos alez défacer eune pache ou un fichié aveuc toutes chés antieusses vérchons.<br /> Confreumer éq ch'est cho éq vos voulez foaire, éq vos conprindez chés consécanches et pi éq ch'est bin s'lon el [[{{MediaWiki:Policy-url}}|politique éd MédiaWiki]].",
+'actioncomplete' => 'Plònne acchon',
+'deletedtext' => "« <nowiki>$1</nowiki> » o té défacé.
+Vir $2 pou eune lisse d'chés darinnes défachons.",
+'deletedarticle' => 'défacé "[[$1]]"',
+'dellogpage' => 'jornal éd chés défacions',
+'deletecomment' => 'Motif:',
+'deleteotherreason' => 'Motif eute/suplémintère :',
+'deletereasonotherlist' => 'Eute motif',
+
+# Rollback
+'rollbacklink' => 'èrtour',
+'rollbackfailed' => 'Értour loupé',
+'cantrollback' => "éj peus mie invérser l'édition;
+ch'darin contérbucheu, ch'est ch'seu auteur del pache-lo.",
+'alreadyrolled' => "éj pus mie invérser el darin édition éd [[:$1]] par [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+queuque-un il o édité ou invérsé l'pache déjo.
+
+L' passèie édition del pache étoait par [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+
+# Protect
+'protectlogpage' => 'Gasète éd chés protéccions',
+'protectedarticle' => '"[[$1]]" est garanti',
+'modifiedarticleprotection' => 'canger ch\'nivieu d\'protékchon pou "[[$1]]"',
+'protectcomment' => 'Motif:',
+'protectexpiry' => "Date d'éspirachon:",
+'protect_expiry_invalid' => "L'date d'éspirachon ale n'est mie possibe.",
+'protect_expiry_old' => "L'date d'éspirachon ale est déjo érpassée.",
+'protect-text' => "Os pouvez vir pi canger ech nivieu d'protécchon ichi pou l'pache-lo '''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Vos n’avez poin chés droés pou canger chés nivieus d'protécchon des paches.<br />
+Vlo chés réglages del pache '''$1''' à ch'momint-chi:",
+'protect-cascadeon' => "L'pache-lo ale est garantie ker ale est incluse din {{PLURAL:$1|eune pache qu'o té garantie|des paches éq ont té garanties}} aveuc l'option « protécchon in cascate» écanillée. <br /> Os povez canger ch'nivieu d'garantie del pache mais el garantie in cascate n'sro poin cangée.",
+'protect-default' => 'Por tertous chés uzeus',
+'protect-fallback' => 'I feut avoèr l\'pérmission "$1"',
+'protect-level-autoconfirmed' => 'Blotcher nouvieus pi mie-inrégistrés uzeus',
+'protect-level-sysop' => 'Aménistrateus seulemint',
+'protect-summary-cascade' => 'cascates',
+'protect-expiring' => "éspire l'$1 (UTC)",
+'protect-cascade' => "Défènne étou chés paches éq sont din l'pache-lo (protécchon in cascate)",
+'protect-cantedit' => "Vos n'pouvez poin canjer chés nivieus d'protécchon del pache-lo aladon vos n’avez poin l'pérmichon éd foaire des modificachons.",
+'restriction-type' => 'Pérmission',
+'restriction-level' => 'Nivieu éd réstricchon:',
+
+# Undelete
+'undeletelink' => 'vir/érfoaire',
+'undeletedarticle' => 'érfoaire "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Éspace du nom:',
+'invert' => 'Invérser el sélékchon',
+'blanknamespace' => '(Moaite)',
+
+# Contributions
+'contributions' => 'Contérbuchons dechl uzeu',
+'contributions-title' => 'Contérbuchons dechl uzeu à pérpos éd $1',
+'mycontris' => 'Ems contérbuchons',
+'contribsub2' => 'Pou $1 ($2)',
+'uctop' => '(darin)',
+'month' => "Dpuis ch'moés (pi édvant)",
+'year' => 'Del innée (pi avint)',
+
+'sp-contributions-newbies' => 'Montrer chés contérbuchons éd chés nouvieus conptes seulemint',
+'sp-contributions-blocklog' => 'jornal éd chés blotcåjhes',
+'sp-contributions-search' => 'Tracher pou chés contérbuchons',
+'sp-contributions-username' => "Adérche IP ou nom d'uzeu",
+'sp-contributions-submit' => 'Tracher',
+
+# What links here
+'whatlinkshere' => 'Cha lie quoé ichi',
+'whatlinkshere-title' => 'Paches qu\'il ont des loïens aveuc "$1"',
+'whatlinkshere-page' => 'Pache:',
+'linkshere' => "Chés paches-lo il sont érliées à '''[[:$1]]''':",
+'isredirect' => 'pache érdirigée',
+'istemplate' => 'transclusion',
+'isimage' => "Loïen aveuc l'imache",
+'whatlinkshere-prev' => '{{PLURAL:$1|édvant|édvants $1}}',
+'whatlinkshere-next' => "{{PLURAL:$1|d'apreu|d'apreu $1}}",
+'whatlinkshere-links' => '← loïens',
+'whatlinkshere-hideredirs' => '$1 érdireccions',
+'whatlinkshere-hidetrans' => 'transclusions éd $1',
+'whatlinkshere-hidelinks' => '$1 loïens',
+'whatlinkshere-filters' => 'Filtes',
+
+# Block/unblock
+'blockip' => 'uzeu blotché',
+'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 ésminne:1 week,2 ésminnes:2 weeks,1 moés:1 month,3 moés:3 months,6 moés:6 months,1 an:1 year,infini:infinite',
+'ipblocklist' => "Adréches IP pi noms d'uzeu blotchés",
+'blocklink' => 'blotcher',
+'unblocklink' => 'déblotcher',
+'change-blocklink' => 'cange ech block',
+'contribslink' => 'contérbuchons',
+'blocklogpage' => 'jornal éd chés paches blotchées',
+'blocklogentry' => '[[$1]] est blotché aveuc eune durèe éd $2 $3',
+'unblocklogentry' => '$1 est déblotché',
+'block-log-flags-nocreate' => "créhachon d'conpte intérdite",
+
+# Move page
+'movepagetext' => "Implouéyez ch'formuloére édsou pou érlonmer éne pache, in déplachant tout sin histoérique vers ch'nouvieu nom. Echl’anthiu tite i varo eune pache éd érdirécchon vers ch'nouvieu tite. Os povez métte à jour oùtonmatiquemint chés érdirécchons à ch'momint-chi qu' pointette vers ch'tite original. <br /> Si os couésiyez éd n'poin l'foaire, os d'vez vérifier toute [[Special:DoubleRedirects|doube érdirécchon]] ou [[Special:BrokenRedirects|bérsiée érdirécchon]].<br /> Vos avez el résponsabilité d'vérifier éq chés loïens continuette éd pointer vers leu déstinnachon prévue.
+
+Notez éq l'pache n'éro '''poin''' déplachée s’il essiste déjo eune pache aveuc ch'nouvieu tite, sauf si l'pache o un histoérique éd canjemints vièrge , vide ou est éne simpe érdiréctchn. Cha pérmet d'érlonmer eune pache vers esn posicion d’origine si ch'déplachemint est éne berlure.
+
+'''AFUTE !'''<br />
+Cha put provoquer un canjemint radical pi imprévu pou eune pache souvint arbéyée ; vos dvez vos asseurer d’avoér conpérte chés consécanches dvint d'continuer.",
+'movepagetalktext' => "L'pache éd pérlache achochonnèe sro oùtonmatiquemint érlonmée aveuc l'pache-lo ''' hormis si: ''' <br />
+*eune pache éd pérlache aveuc un teske essiste aveuc ch'nom-lo piécha, ou
+*os débiffez el casse édzou.
+
+Din chés cas-lo, I feut érlonmer ou ratatouiller l'pache aveuc l'main.",
+'movearticle' => "Déplacer l'pache",
+'newtitle' => 'Pou un nouvieu tite:',
+'move-watch' => "Suire l'pache-lo",
+'movepagebtn' => "Déplacer l'pache",
+'pagemovedsub' => 'Déplachemint réussi',
+'movepage-moved' => '\'\'\'"$1" o té déplaché su "$2"\'\'\'',
+'articleexists' => "Il y o eune pache aveuc ch'nom-lo dja, ou bin ch'tite couési n'est poin valabe. <br /> I feut in prinde un eute",
+'talkexists' => "'''L'pache ale o té déplachée mais l'pache d'pérlache n'put poin éte déplachée ker il y o pécho eune pache d'pérlache aveuc ch'nouvieu nom. <br /> I feut foaire un touillache al main.'''",
+'movedto' => 'Déplaché dsus',
+'movetalk' => "Canjer ch'nom del pache d'pérlache apparièe",
+'1movedto2' => 'déplacher [[$1]] dsus [[$2]]',
+'1movedto2_redir' => "il o déplaché [[$1]] su [[$2]] in écatant l'érsin",
+'movelogpage' => "Déplacher ch'jornal",
+'movereason' => 'Motif:',
+'revertmove' => 'invérser',
+
+# Export
+'export' => 'Ésporter chés paches',
+
+# Thumbnails
+'thumbnail-more' => 'Pu grand',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Vote pache éd uzeu',
+'tooltip-pt-mytalk' => "Vote pache d'pérlache",
+'tooltip-pt-preferences' => 'Vos préférinches',
+'tooltip-pt-watchlist' => "El lisse d'chés paches éq vos suivez chés canjemints",
+'tooltip-pt-mycontris' => 'Lisse éd vos contérbuchons',
+'tooltip-pt-login' => "vos ètes incoradjé éd vos lodjé; portanne ch'est mie oblidjé",
+'tooltip-pt-logout' => 'Sortir',
+'tooltip-ca-talk' => 'Distchussion à pérpos del pache-lo',
+'tooltip-ca-edit' => 'Os pouvez éditer l\'pache-lo.
+Mérci d\'imploéyer ch\'bouton "vir" édvant éd "warder"',
+'tooltip-ca-addsection' => 'Débuter eune novèle sekchon',
+'tooltip-ca-viewsource' => "Cht' pache-lo ale est garantie.
+
+Os pouvez vir l'source",
+'tooltip-ca-history' => 'Antieus canjemints éd chol pache-lo',
+'tooltip-ca-protect' => "Garantir l'pache-lo",
+'tooltip-ca-delete' => "Défacer l'pache-lo",
+'tooltip-ca-move' => "Déplacher l'pache",
+'tooltip-ca-watch' => "Ajouter l'pache-lo à vo lisse à suire",
+'tooltip-ca-unwatch' => "Értirer l'pache-lo d'vote lisse à suire",
+'tooltip-search' => 'Tracher {{SITENAME}}',
+'tooltip-search-go' => "Aler à l'pache aveuc ech meume jusse nom s'il y in o eune",
+'tooltip-search-fulltext' => "Tracher chés paches aveuc ch'teske-lo",
+'tooltip-p-logo' => "Aler vir l'moaite pache",
+'tooltip-n-mainpage' => "Vir l'pache princhipale",
+'tooltip-n-mainpage-description' => "Vir l'moaite pache",
+'tooltip-n-portal' => "à pérpos dech proujé, quô qu'vos pouvez foaire, d'ou trouvoér des coses",
+'tooltip-n-currentevents' => "Trouvoér des informachons d'base su l’darinneté dech momint-lo",
+'tooltip-n-recentchanges' => "Lisse éd chés darins canjemints din ch'wiki",
+'tooltip-n-randompage' => 'Quértcher eune aléatoère pache',
+'tooltip-n-help' => "L'plache à trouvoér",
+'tooltip-t-whatlinkshere' => "Lisser tertous ches paches wiki qu'sont liées ichi",
+'tooltip-t-recentchangeslinked' => "Nouvieus cangemints din chés paches érliées aveuc l'pache-lo",
+'tooltip-feed-rss' => "RSS pipe pou l'pache-lo",
+'tooltip-feed-atom' => 'Fil Atom pou chol pache',
+'tooltip-t-contributions' => "Vir l'lisse éd chés contérbuchons dech uzeu-lo",
+'tooltip-t-emailuser' => "Éspédier un imèle à cht'uzeu-lo",
+'tooltip-t-upload' => 'Quértcher chés fichiés',
+'tooltip-t-specialpages' => 'Lisse éd tous chés paches éspéchiales',
+'tooltip-t-print' => 'Imprimabe vérchon del pache-lo',
+'tooltip-t-permalink' => "Loïen définitive aveuc cht'canjemint del pache",
+'tooltip-ca-nstab-main' => "Vir echl'étnu del pache",
+'tooltip-ca-nstab-user' => 'Vir el pache dech uzeu',
+'tooltip-ca-nstab-special' => "Ch'est eune pache éspéchiale, os n'pouvez poin éditer l'pache-lo",
+'tooltip-ca-nstab-project' => "Vir l'pache dech proujé",
+'tooltip-ca-nstab-image' => "Vir ch'fichié del pache",
+'tooltip-ca-nstab-template' => "Vir ch'modèle",
+'tooltip-ca-nstab-category' => 'Vir el pache del catégorie',
+'tooltip-minoredit' => 'Mértcher cho conme eune tiote édition',
+'tooltip-save' => 'Seuver vos cangemints',
+'tooltip-preview' => "Prévir vos cangemints, uzer cha édvant d'inr'gister mérci!",
+'tooltip-diff' => "Montrer chés cangemints éq'vos avez foait din ch'teske-lo",
+'tooltip-compareselectedversions' => 'Vir chés diférinches intre chés deus couésies vérchons del pache-lo',
+'tooltip-watch' => 'Ajouter chol pache-lo à vo lisse à suire',
+'tooltip-rollback' => '« Racacher » cancéle aveuc un clic el (ou chés) modificachon(s) del pache-lo pèr sin darin contérbucheu.',
+'tooltip-undo' => "« Undo » ( ''démangler'' ) értire ch'canjemint-lo pi ouvre l' fénéte d'édichon din ch'mode ''prévir''. <br /> In put mette un motif din ch'résumé.",
+
+# Browsing diffs
+'previousdiff' => '← Pu vieille édition',
+'nextdiff' => 'Nouvèle édichon →',
+
+# Media information
+'file-info-size' => '($1 × $2 picséls, diminchon dech fichié: $3, MIME tipe: $4)',
+'file-nohires' => '<small>Poin éd pu grande résoluchon possibe.</small>',
+'svg-long-desc' => '(Fichié SVG, résoluchon éd $1 × $2 picsels, diminchon: $3)',
+'show-big-image' => 'Plinne résoluchon',
+'show-big-image-thumb' => '<small>Diminchon del intérvue-lo : $1 × $2 picséls</small>',
+
+# Bad image list
+'bad_image_list' => "Ch'format ch'est:
+
+In érbéye seulemint chés lisses éd limérachon (aveuc * al copéte). <br /> Ech preumié loïen d'eune line i doét éte échti d'eune méchante image. <br /> Chés eutes loïens su el méme line s'ront érbéyés conme des éssékcions, pèr eximpe des paches où l'image put aparoète.",
+
+# Metadata
+'metadata' => 'Metadata',
+'metadata-help' => "Ech fichié-lo i conprinte des informacions métadatas éq ils sont suremint rajoutées par echl’apàrèl foto limérique ou ech éscanère utilisé pou l' créer.<br /> Si ch' fichié o té canjé dpui sin étot avoyé, quéques détals peute n'poin corésponne à l’imache modifiée.",
+'metadata-expand' => 'Montrer chés métadatas del imache',
+'metadata-collapse' => 'Mucher chés métadatas del imache',
+'metadata-fields' => "Chés cans d'chés métadonnées EXIF afiqués din ch'messache-lo is s'ront mis din l'pache d'édvisse éd l'image quant el tabe d'chés métadonnées ale s'ro rapetichée.<br />
+Chés eutes cans is s'ront muchés pèr défeut.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength",
+
+# External editor support
+'edit-externally' => "Éditer ch'fichié-lo aveuc eune éstérne aplicachon",
+'edit-externally-help' => '(Vir [http://www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tertous',
+'namespacesall' => 'tous',
+'monthsall' => 'tertous',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Vir chés consécants cangemints',
+'watchlisttools-edit' => "Vir pi éditer l'lisse à suire",
+'watchlisttools-raw' => 'Éditer eune brute lisse à suire',
+
+# Special:SpecialPages
+'specialpages' => 'Paches éspéchiales',
+
+);
diff --git a/languages/messages/MessagesPdc.php b/languages/messages/MessagesPdc.php
index b52b6082..2940df61 100644
--- a/languages/messages/MessagesPdc.php
+++ b/languages/messages/MessagesPdc.php
@@ -87,24 +87,41 @@ $messages = array(
'category-file-count-limited' => '{{PLURAL:$1|Sell Feil iss|Selle $1 Feils sin}} in daer Abdeeling drin:',
'listingcontinuesabbrev' => '(weider)',
-'about' => 'Iwwer',
-'article' => 'Blatt',
-'newwindow' => '(in em nei Fenschder)',
-'cancel' => 'Zerick',
+'about' => 'Iwwer',
+'article' => 'Blatt',
+'newwindow' => '(in em nei Fenschder)',
+'cancel' => 'Zerick',
+'moredotdotdot' => 'Mehner…',
+'mypage' => 'Mei Blatt',
+'mytalk' => 'Mei Gschwetz-Blatt',
+'anontalk' => 'Gschwetz-Blatt fer die IP',
+'navigation' => 'Faahre-Gnepp',
+'and' => '&#32;unn',
+
+# Cologne Blue skin
'qbfind' => 'Finne',
'qbedit' => 'Ennere',
'qbpageoptions' => 'Des Blatt',
'qbmyoptions' => 'Mei Bledder',
'qbspecialpages' => 'Besunnere Bledder',
-'moredotdotdot' => 'Mehner…',
-'mypage' => 'Mei Blatt',
-'mytalk' => 'Mei Gschwetz-Blatt',
-'anontalk' => 'Gschwetz-Blatt fer die IP',
-'navigation' => 'Faahre-Gnepp',
-'and' => '&#32;unn',
-
-# Metadata in edit box
-'metadata_help' => 'Metadaade:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-delete' => 'Lösche',
+'vector-action-move' => 'Ziehe',
+'vector-action-protect' => 'Schitze',
+'vector-namespace-category' => 'Abdeeling',
+'vector-namespace-help' => 'Hilfblatt',
+'vector-namespace-image' => 'Feil',
+'vector-namespace-main' => 'Blatt',
+'vector-namespace-special' => 'Besunneres Blatt',
+'vector-namespace-talk' => 'Gschwetz',
+'vector-namespace-template' => 'Moddel',
+'vector-namespace-user' => 'Yuuser-Blatt',
+'vector-view-edit' => 'Ennere',
+'vector-view-view' => 'Lese',
+'namespaces' => 'Blatznaame',
'errorpagetitle' => 'Mischteek',
'returnto' => 'Zerick zum Blatt $1.',
@@ -143,7 +160,7 @@ $messages = array(
'otherlanguages' => 'Annere Schprooche',
'redirectedfrom' => '(Weiterleitung vun $1)',
'redirectpagesub' => 'Weiderleiding',
-'lastmodifiedat' => 'Des Blatt iss letscht gennert am $1 um $2 Uhr.', # $1 date, $2 time
+'lastmodifiedat' => 'Des Blatt iss letscht gennert am $1 um $2 Uhr.',
'protectedpage' => 'Blatt mit Schutz',
'jumpto' => 'Gang nooch:',
'jumptonavigation' => 'Faahre-Gnepp',
@@ -156,8 +173,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'Hilf zum Ennere',
'edithelppage' => 'Help:Tscheensche',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Hilf',
'mainpage' => 'Haaptblatt',
'mainpage-description' => 'Haaptblatt',
@@ -220,18 +235,11 @@ Guck aach [[Special:Version|Versionsblatt]]',
'login' => 'Kumm nei',
'nav-login-createaccount' => 'Kumm nei',
'userlogin' => 'Kumm nei',
+'userloginnocreate' => 'Kumm nei',
'logout' => 'Geh naus',
'userlogout' => 'Geh naus',
'gotaccountlink' => 'Kumm nei',
'createaccountmail' => 'iwwer E-Mail',
-'youremail' => 'E-Poschde:',
-'username' => 'Yuuser-Naame:',
-'uid' => 'Yuuser-ID:',
-'prefs-memberingroups' => 'Mitglied vun de {{PLURAL:$1|Yuuser-Druppe|Yuuser-Druppe}}:',
-'yourlanguage' => 'Schprooch:',
-'yourgender' => 'Geschlecht:',
-'gender-female' => 'Weiblich',
-'email' => 'E-Poschde',
'noemail' => 'Yuuser „$1“ hot ken E-Mail aagewwe.',
'loginlanguagelabel' => 'Schprooch: $1',
@@ -264,57 +272,50 @@ Guck aach [[Special:Version|Versionsblatt]]',
'editingcomment' => 'Ennere vun $1 (Neier Abschnitt)',
'editconflict' => 'Druwwel beim Ennere: $1',
'yourdiff' => 'Unnerschidde',
-'templatesused' => 'Moddle gyuused uff dem Blatt:',
'template-protected' => '(geschitzt)',
'template-semiprotected' => '(geschitzt fer neie Yuuser)',
# History pages
+'revisionasof' => 'Version vum $2, $3 Uhr',
'previousrevision' => '← letscht Version',
'next' => 'Neegscht',
'last' => 'Letscht',
'page_first' => 'Aafang',
'page_last' => 'End',
-'deletedrev' => '[gelöscht]',
'histlast' => 'Letscht',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
'historyempty' => '(leer)',
-# Revision feed
-'history-feed-item-nocomment' => '$1 om $2', # user at time
-
# Revision deletion
-'rev-deleted-user' => '(Yuuser-Naame gelöscht)',
-'rev-delundel' => 'zeig/verschwinne losse',
-'revdelete-hide-text' => 'Text vun de Version verschwinne losse',
-'pagehist' => 'Gschicht',
-'revdelete-uname' => 'Yuuser-Naame',
-'revdelete-log-message' => '$1 fer $2 {{PLURAL:$2|Version|Versione}}',
+'rev-deleted-user' => '(Yuuser-Naame gelöscht)',
+'rev-delundel' => 'zeig/verschwinne losse',
+'rev-showdeleted' => 'zeig',
+'revdelete-no-file' => 'Sell Feil gebt es net.',
+'revdelete-show-file-submit' => 'Ya',
+'revdelete-hide-text' => 'Text vun de Version verschwinne losse',
+'revdelete-radio-set' => 'Ya',
+'revdelete-radio-unset' => 'Nee',
+'pagehist' => 'Gschicht',
+'revdelete-uname' => 'Yuuser-Naame',
+'revdelete-log-message' => '$1 fer $2 {{PLURAL:$2|Version|Versione}}',
+'revdelete-otherreason' => 'Annere Grind dezu:',
+'revdelete-reasonotherlist' => 'Annere Grind',
+'revdelete-edit-reasonlist' => "Grind fer's Loesche ennere",
+'revdelete-offender' => 'Schreiwer fun daer Version:',
# History merging
'mergehistory-reason' => 'Grund:',
# Diffs
-'difference' => '(Unnerschidd zwische Versione)',
-'lineno' => 'Lein $1:',
-'editundo' => 'zerick',
-'diff-styleadded' => '$1-Style dezu geduh',
-'diff-added' => '$1 dezu geduh',
-'diff-changedto' => 'tscheenscht zu $1',
-'diff-styleremoved' => '$1-Style gelöscht',
-'diff-with' => '&#32;mit $1 $2',
-'diff-with-final' => '&#32;unn $1 $2',
-'diff-height' => 'Heeh',
-'diff-table' => "en '''Tabell'''",
-'diff-img' => "en '''Bild'''",
-'diff-a' => "en '''Gleecher'''",
-'diff-b' => "'''fett'''",
+'difference' => '(Unnerschidd zwische Versione)',
+'lineno' => 'Lein $1:',
+'editundo' => 'zerick',
# Search results
-'prevn' => 'Letscht $1',
-'nextn' => 'neegschte $1',
-'viewprevnext' => 'Zeige ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|letscht|letscht $1}}',
+'nextn' => 'neegschte {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Hilf',
-'searchprofile-images' => 'Feils',
'searchprofile-articles-tooltip' => 'Uffgucke in $1',
'searchprofile-project-tooltip' => 'Uffgucke in $1',
'searchprofile-images-tooltip' => 'Nooch Feils uffgucke',
@@ -331,26 +332,40 @@ Guck aach [[Special:Version|Versionsblatt]]',
'powersearch-ns' => 'Guck uff in Blatznaame:',
'powersearch-redir' => 'Lischt vun Weiterleidinge',
'powersearch-field' => 'Such fer',
+'powersearch-toggleall' => 'All',
+'powersearch-togglenone' => 'Ken',
'search-external' => 'Guck im Gewebb',
+# Quickbar
+'qbsettings-none' => 'Ken',
+
# Preferences page
'preferences' => 'paerseenlich Profil',
'mypreferences' => 'Mei Uffschtelling',
-'qbsettings-none' => 'Ken',
'changepassword' => 'Paesswatt ennere',
'prefs-personal' => 'Yuuser Profile',
'prefs-watchlist' => 'Watsch-Lischt',
'prefs-watchlist-days' => 'Daage in de Watsch-Lischt:',
-'prefs-watchlist-days-max' => '(max. 7 Daag)',
'prefs-resetpass' => 'Paesswatt ennere',
-'textboxsize' => 'Ennere',
+'prefs-editing' => 'Ennere',
'searchresultshead' => 'Guck uff',
+'recentchangesdays-max' => 'Max. $1 {{PLURAL:$1|Daag|Daag}}',
'timezoneregion-africa' => 'Afrikaa',
'timezoneregion-america' => 'Amerikaa',
'timezoneregion-asia' => 'Asie',
'timezoneregion-australia' => 'Australie',
'timezoneregion-europe' => 'Eiropaa',
'prefs-namespaces' => 'Blatznaame',
+'prefs-files' => 'Feils',
+'youremail' => 'E-Poschde:',
+'username' => 'Yuuser-Naame:',
+'uid' => 'Yuuser-ID:',
+'prefs-memberingroups' => 'Mitglied vun de {{PLURAL:$1|Yuuser-Druppe|Yuuser-Druppe}}:',
+'yourlanguage' => 'Schprooch:',
+'yourgender' => 'Geschlecht:',
+'gender-female' => 'Weiblich',
+'email' => 'E-Poschde',
+'prefs-diffs' => 'Unnerschidd vun Versione',
# User rights
'userrights-editusergroup' => 'Mitgliedschaft vun Yuuser ennere',
@@ -393,22 +408,27 @@ Guck aach [[Special:Version|Versionsblatt]]',
'action-delete' => 'des Blatt zu lösche',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|Ennering|Enneringe}}',
-'recentchanges' => 'Was mer letscht geduh henn',
-'rcshowhideminor' => 'Gleene Enneringe $1',
-'rcshowhidebots' => 'Bots $1',
-'rcshowhideanons' => 'IP-Yuuser $1',
-'rcshowhidemine' => 'Mei Ardickele $1',
-'rclinks' => 'Zeig die letscht $1 Enneringe vun de letscht $2 Daag.<br />$3',
-'diff' => 'Unnerschidd',
-'hist' => 'Gschicht',
-'hide' => 'verschwinne losse',
-'show' => 'zeige',
-'minoreditletter' => 'g',
-'newpageletter' => 'N',
-'boteditletter' => 'W',
-'rc_categories_any' => 'All',
-'newsectionsummary' => 'Neier Abschnitt /* $1 */',
+'nchanges' => '$1 {{PLURAL:$1|Ennering|Enneringe}}',
+'recentchanges' => 'Was mer letscht geduh henn',
+'recentchanges-legend-newpage' => '$1 - neies Blatt',
+'recentchanges-legend-minor' => '$1 - gleene Ennering',
+'recentchanges-label-minor' => 'Gleene Ennering',
+'recentchanges-legend-bot' => '$1 - Ennering vun em Waddefresser',
+'recentchanges-label-bot' => 'Ennering vun em Waddefresser',
+'rcshowhideminor' => 'Gleene Enneringe $1',
+'rcshowhidebots' => 'Bots $1',
+'rcshowhideanons' => 'IP-Yuuser $1',
+'rcshowhidemine' => 'Mei Ardickele $1',
+'rclinks' => 'Zeig die letscht $1 Enneringe vun de letscht $2 Daag.<br />$3',
+'diff' => 'Unnerschidd',
+'hist' => 'Gschicht',
+'hide' => 'verschwinne losse',
+'show' => 'zeige',
+'minoreditletter' => 'g',
+'newpageletter' => 'N',
+'boteditletter' => 'W',
+'rc_categories_any' => 'All',
+'newsectionsummary' => 'Neier Abschnitt /* $1 */',
# Recent changes linked
'recentchangeslinked-page' => 'Blatt:',
@@ -424,6 +444,12 @@ Guck aach [[Special:Version|Versionsblatt]]',
'uploaddisabledtext' => 'Es Ufflaade vun Feils iss verbodde.',
'watchthisupload' => 'Watsch des Blatt',
+'upload-unknown-size' => 'Unbekannte Grees',
+'upload-http-error' => 'En HTTP-Fehler iss kumme: $1',
+
+# img_auth script messages
+'img-auth-nofile' => 'Feil „$1“ gebt es net.',
+
'upload_source_file' => ' (e Feil uff deim Waddefresser)',
# Special:ListFiles
@@ -435,6 +461,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'listfiles_count' => 'Versione',
# File description page
+'file-anchor-link' => 'Feil',
'filehist' => 'Versione vun Feils',
'filehist-deleteall' => 'All Versione lösche',
'filehist-deleteone' => 'Sell Version lösche',
@@ -445,7 +472,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'filehist-filesize' => 'Grees vum Feil',
'filehist-comment' => 'Anmaerricking',
'imagelinks' => 'Gleecher fer es Feil',
-'shared-repo-from' => 'vun $1', # $1 is the repository name
+'shared-repo-from' => 'vun $1',
# File reversion
'filerevert-comment' => 'Grund:',
@@ -481,8 +508,9 @@ Guck aach [[Special:Version|Versionsblatt]]',
'doubleredirects' => 'Zweefache Weiderleidinge',
'double-redirect-fixer' => 'Xqbot',
-'brokenredirects' => 'Kaputte Weiderleidinge',
-'brokenredirects-edit' => '(ennere)',
+'brokenredirects' => 'Kaputte Weiderleidinge',
+'brokenredirects-edit' => 'ennere',
+'brokenredirects-delete' => 'lösche',
'withoutinterwiki-submit' => 'Zeig',
@@ -533,6 +561,10 @@ Guck aach [[Special:Version|Versionsblatt]]',
'listusers-submit' => 'Zeig',
'listusers-noresult' => 'Ken Yuuser gfunne.',
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Waddefresser verschwinne losse',
+'activeusers-hidesysops' => 'Verwalter verschwinne losse',
+
# Special:ListGroupRights
'listgrouprights' => 'Rechte vun Yuuser-Druppe',
'listgrouprights-group' => 'Druppe',
@@ -589,7 +621,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'protect-othertime-op' => 'annre Zeit',
'protect-otherreason' => 'Annerer Grund:',
'protect-otherreason-op' => 'Annerer Grund',
-'protect-expiry-options' => '1 Schtund:1 hour,1 Daag:1 day,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Munede:6 months,1 Yaar:1 year,Fer immer:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Schtund:1 hour,1 Daag:1 day,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Munede:6 months,1 Yaar:1 year,Fer immer:infinite',
'minimum-size' => 'Min. Grees',
'maximum-size' => 'Max. Grees:',
'pagesize' => '(Bytes)',
@@ -617,6 +649,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'month' => 'unn Munet:',
'year' => 'bis Yaahr:',
+'sp-contributions-talk' => 'Gschwetz',
'sp-contributions-search' => 'Guck fer Ardickel',
'sp-contributions-username' => 'IP-Adress odder Yuusernaame:',
'sp-contributions-submit' => 'Guck uff',
@@ -637,7 +670,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'ipbreason' => 'Grund:',
'ipbreasonotherlist' => 'Annerer Grund',
'ipbother' => 'Annre Zeit (englisch):',
-'ipboptions' => '2 Schtund:2 hours,1 Daag:1 day,3 Daag:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Monate:6 months,1 Yaar:1 year,Fer immer:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Schtund:2 hours,1 Daag:1 day,3 Daag:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Monate:6 months,1 Yaar:1 year,Fer immer:infinite',
'ipbotheroption' => 'Anneres',
'ipblocklist-submit' => 'Guck uff',
'infiniteblock' => 'fer immer',
@@ -650,7 +683,7 @@ Guck aach [[Special:Version|Versionsblatt]]',
'movearticle' => 'Blatt ziehe:',
'move-watch' => 'watsch des Blatt',
'movepagebtn' => 'Blatt ziehe',
-'movepage-moved' => "'''Es Blatt „$1“ iss gezoge warre uff „$2“'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Es Blatt „$1“ iss gezoge warre uff „$2“'''",
'movedto' => 'gezoge uff',
'1movedto2' => 'hot „[[$1]]“ nooch „[[$2]]“ gezoge',
'movereason' => 'Grund:',
@@ -662,7 +695,12 @@ Guck aach [[Special:Version|Versionsblatt]]',
'export-addns' => 'Dezu duh',
# Namespace 8 related
-'allmessagesname' => 'Naame',
+'allmessagesname' => 'Naame',
+'allmessages-filter-unmodified' => 'Net gennert',
+'allmessages-filter-all' => 'All',
+'allmessages-filter-modified' => 'Gennert',
+'allmessages-language' => 'Schprooch:',
+'allmessages-filter-submit' => 'Los',
# Thumbnails
'thumbnail-more' => 'greeser mache',
@@ -677,31 +715,32 @@ Guck aach [[Special:Version|Versionsblatt]]',
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|Version|Versione}} vun $2',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Dei Yuuser-Blatt',
-'tooltip-pt-mytalk' => 'Dei Gschwetz-Blatt',
-'tooltip-pt-preferences' => 'Mei Uffschtelling',
-'tooltip-pt-mycontris' => 'Lischt vun deine Ardickel',
-'tooltip-pt-logout' => 'Geh naus',
-'tooltip-ca-talk' => 'Gschetz iwwers Blatt',
-'tooltip-ca-protect' => 'Des Blatt schitze',
-'tooltip-ca-delete' => 'Des Blatt lösche',
-'tooltip-ca-move' => 'Des Blatt ziehe',
-'tooltip-search' => 'Guck uff {{SITENAME}}',
-'tooltip-search-go' => 'Geh zu dem Blatt mit genaa dem Naame, wenns es gebbt.',
-'tooltip-search-fulltext' => 'Guck nooch Bledder mit denne Wadde',
-'tooltip-p-logo' => 'Haaptblatt',
-'tooltip-n-mainpage' => 'Zum Haaptblatt geh',
-'tooltip-n-randompage' => 'Ennich Ardickel',
-'tooltip-t-whatlinkshere' => 'Lischt vun all die Bledder, wu do her zeige',
-'tooltip-feed-rss' => 'RSS-Feed fer des Blatt',
-'tooltip-feed-atom' => 'Atom-Feed fer des Blatt',
-'tooltip-t-contributions' => 'Lischt von Ardickele vun dem Yuuser zeige',
-'tooltip-t-upload' => 'Feils ufflaade',
-'tooltip-t-specialpages' => 'Lischt vun alle besunnere Bledder',
-'tooltip-t-print' => 'Des Blatt fer zum Drucke',
-'tooltip-ca-nstab-user' => 'Yuuserblatt zeige',
-'tooltip-ca-nstab-special' => 'Sell iss en besunneres Blatt. Du kannscht es Blatt net ennere.',
-'tooltip-ca-nstab-image' => 'Feil zeige',
+'tooltip-pt-userpage' => 'Dei Yuuser-Blatt',
+'tooltip-pt-mytalk' => 'Dei Gschwetz-Blatt',
+'tooltip-pt-preferences' => 'Mei Uffschtelling',
+'tooltip-pt-mycontris' => 'Lischt vun deine Ardickel',
+'tooltip-pt-logout' => 'Geh naus',
+'tooltip-ca-talk' => 'Gschetz iwwers Blatt',
+'tooltip-ca-protect' => 'Des Blatt schitze',
+'tooltip-ca-delete' => 'Des Blatt lösche',
+'tooltip-ca-move' => 'Des Blatt ziehe',
+'tooltip-search' => 'Guck uff {{SITENAME}}',
+'tooltip-search-go' => 'Geh zu dem Blatt mit genaa dem Naame, wenns es gebbt.',
+'tooltip-search-fulltext' => 'Guck nooch Bledder mit denne Wadde',
+'tooltip-p-logo' => 'Haaptblatt',
+'tooltip-n-mainpage' => 'Zum Haaptblatt geh',
+'tooltip-n-mainpage-description' => 'Haaptblatt bsuche',
+'tooltip-n-randompage' => 'Ennich Ardickel',
+'tooltip-t-whatlinkshere' => 'Lischt vun all die Bledder, wu do her zeige',
+'tooltip-feed-rss' => 'RSS-Feed fer des Blatt',
+'tooltip-feed-atom' => 'Atom-Feed fer des Blatt',
+'tooltip-t-contributions' => 'Lischt von Ardickele vun dem Yuuser zeige',
+'tooltip-t-upload' => 'Feils ufflaade',
+'tooltip-t-specialpages' => 'Lischt vun alle besunnere Bledder',
+'tooltip-t-print' => 'Des Blatt fer zum Drucke',
+'tooltip-ca-nstab-user' => 'Yuuserblatt zeige',
+'tooltip-ca-nstab-special' => 'Sell iss en besunneres Blatt. Du kannscht es Blatt net ennere.',
+'tooltip-ca-nstab-image' => 'Feil zeige',
# Attribution
'siteuser' => '{{SITENAME}}-Yuuser $1',
@@ -776,9 +815,10 @@ Guck aach [[Special:Version|Versionsblatt]]',
'watchlistedit-normal-title' => 'Watsch-Lischt ennere',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-specialpages' => 'Besunnere Bledder',
'version-other' => 'Anneres',
+'version-version' => '(Version $1)',
'version-software-version' => 'Version',
# Special:FilePath
@@ -804,4 +844,8 @@ Guck aach [[Special:Version|Versionsblatt]]',
'tags-edit' => 'ennere',
'tags-hitcount' => '$1 {{PLURAL:$1|Ennering|Enneringe}}',
+# HTML forms
+'htmlform-reset' => 'Enneringe zerick nemme',
+'htmlform-selectorother-other' => 'Annere',
+
);
diff --git a/languages/messages/MessagesPdt.php b/languages/messages/MessagesPdt.php
index c5befe32..f2be994c 100644
--- a/languages/messages/MessagesPdt.php
+++ b/languages/messages/MessagesPdt.php
@@ -7,10 +7,13 @@
* @ingroup Language
* @file
*
+ * @author Purodha
* @author Slomox
* @author Wikipeeta
*/
+$fallback = 'de';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Links unjastritje:',
@@ -89,22 +92,24 @@ $messages = array(
'category_header' => 'Siede in Kategorie "$1"',
'category-media-header' => 'Bilda in Kategorie "$1"',
'hidden-categories' => "{{PLURAL:$1|Fe'stoakne Kategorie|Fe'stoakne Kategorien}}",
-'hidden-category-category' => "Fe'stoakne Kategorien", # Name of the category where hidden categories will be listed
-
-'about' => 'Äwa',
-'newwindow' => '(got in en nie Fensta op)',
-'cancel' => 'Aufbräakje',
+'hidden-category-category' => "Fe'stoakne Kategorien",
+
+'about' => 'Äwa',
+'newwindow' => '(got in en nie Fensta op)',
+'cancel' => 'Aufbräakje',
+'moredotdotdot' => 'Mea...',
+'mypage' => 'Miene Sied',
+'mytalk' => 'Miene Beredsied',
+'anontalk' => 'Beredsied fe dise IP',
+'navigation' => 'Navigatioon',
+'and' => '&#32;onn',
+
+# Cologne Blue skin
'qbfind' => 'finje',
'qbedit' => 'Endre',
'qbpageoptions' => 'Dise Sied',
'qbmyoptions' => 'Miene Siede',
'qbspecialpages' => "Opp'poate Siede",
-'moredotdotdot' => 'Mea...',
-'mypage' => 'Miene Sied',
-'mytalk' => 'Miene Beredsied',
-'anontalk' => 'Beredsied fe dise IP',
-'navigation' => 'Navigatioon',
-'and' => '&#32;onn',
'errorpagetitle' => 'Fäla',
'returnto' => 'Trigj no $1.',
@@ -148,7 +153,7 @@ $messages = array(
'otherlanguages' => 'In aundre Sproake',
'redirectedfrom' => '(wieda jeleidt von $1)',
'redirectpagesub' => 'Sied tom Wiedaleide',
-'lastmodifiedat' => "Dise Sied word aum $1, klock $2 daut latzte Mol je'endat.", # $1 date, $2 time
+'lastmodifiedat' => "Dise Sied word aum $1, klock $2 daut latzte Mol je'endat.",
'protectedpage' => 'Sied mett besondrem Schutz',
'jumpto' => 'Sprinj no:',
'jumptonavigation' => 'Navigatioon',
@@ -229,10 +234,6 @@ Daut latzte Opproope vonne Dotebank we:
<blockquote><tt>$1</tt></blockquote>
ute Funktioon "<tt>$2</tt>".
MySQL mald dem Fehla "<tt>$3: $4</tt>".',
-'noconnect' => 'Sorry! Daut jefft technische Schwierichtjeite, tjeen Kontakt es meajlich mette Dotebank opp <br />
-$1',
-'nodb' => 'Kunn Dotebank $1 nich utwehle',
-'cachederror' => 'Waut hia tjemmt es eene Kopie utem Cache en es vleicht nich meea aktuell.',
'laggedslavemode' => 'Oppjepausst: Dee jewesne Sied es nich onbedinjt dee latzte Versioon.',
'readonly' => 'Dotebank es jeschlote',
'enterlockreason' => 'Nan bitte een Grunt doafea, wurom dee Dotebank jeschlote saul en saj, woolang daut onjefea diere saul',
@@ -263,12 +264,6 @@ Bitte schriew eene Notiz aun [[Special:ListUsers/sysop|administrator]], en lot d
'badretype' => 'Dee beid Pauswed stemme nich ewaeen.',
'userexists' => 'Dem Bruckanome haft aul wea.
Bitte nemm eenen aundren.',
-'youremail' => 'Email:',
-'username' => 'Bruckanome:',
-'uid' => 'Brucka-ID:',
-'prefs-memberingroups' => 'Mettjliet von {{PLURAL:$1|group|groups}}:',
-'yourrealname' => 'Ajchta Nome:',
-'yourlanguage' => 'Sproak:',
'loginlanguagelabel' => 'Sproak: $1',
# Edit page toolbar
@@ -295,13 +290,15 @@ Bitte nemm eenen aundren.',
'template-protected' => "(be'schutst)",
# History pages
-'cur' => 'dise',
-'last' => 'latste',
-'page_first' => 'easchte',
-'page_last' => 'latste',
+'revisionasof' => 'Versioon von $1',
+'revision-info' => 'Versioon von $1 von $2',
+'cur' => 'dise',
+'last' => 'latste',
+'page_first' => 'easchte',
+'page_last' => 'latste',
# Revision feed
-'history-feed-item-nocomment' => '$1 omm $2', # user at time
+'history-feed-item-nocomment' => '$1 omm $2',
# Revision deletion
'rev-delundel' => 'wies/vestopp',
@@ -314,9 +311,9 @@ Bitte nemm eenen aundren.',
'searchresults' => 'Setj Resultaute',
'searchresults-title' => 'Setj Resultaute fe "$1"',
'searchsubtitle' => 'Du sochst \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'prevn' => '$1 ferhäa',
-'nextn' => 'näakjste $1',
-'viewprevnext' => 'Tjitj ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} ferhäa',
+'nextn' => 'näakjste {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Tjitj ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Enhault',
'search-result-size' => '$1 ({{PLURAL:$2|1 Wot|$2 Wed}})',
'search-mwsuggest-enabled' => 'mett Veaschlag',
@@ -326,8 +323,14 @@ Bitte nemm eenen aundren.',
'powersearch-field' => 'Setj no',
# Preferences page
-'preferences' => 'Ennstalinje',
-'mypreferences' => 'Miene Ennstalinje',
+'preferences' => 'Ennstalinje',
+'mypreferences' => 'Miene Ennstalinje',
+'youremail' => 'Email:',
+'username' => 'Bruckanome:',
+'uid' => 'Brucka-ID:',
+'prefs-memberingroups' => 'Mettjliet von {{PLURAL:$1|group|groups}}:',
+'yourrealname' => 'Ajchta Nome:',
+'yourlanguage' => 'Sproak:',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|Endaniss|Endanisse}}',
@@ -346,6 +349,8 @@ Bitte nemm eenen aundren.',
# Recent changes linked
'recentchangeslinked' => 'Endarunge aun velinkte Siede',
+'recentchangeslinked-feed' => 'Endarunge aun velinkte Siede',
+'recentchangeslinked-toolbox' => 'Endarunge aun velinkte Siede',
'recentchangeslinked-title' => 'Endarunge aun Siede, woone von "$1" velinkt send',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Em utjesochten Tietrum es aun dee velinkte Siede nuscht aundasch jemoakt worde.',
@@ -367,6 +372,7 @@ Bitte nemm eenen aundren.',
'listfiles_user' => 'Brucker',
# File description page
+'file-anchor-link' => 'Datei',
'filehist' => 'Dokument-Jeschicht',
'filehist-datetime' => 'Tiet',
'filehist-user' => 'Brucker',
@@ -432,7 +438,7 @@ Bitte nemm eenen aundren.',
# Protect
'protectexpiry' => 'Ütgontiet:',
-'protect-expiry-options' => '2 Stunde:2 hours,1 Dach:1 day,1 Wäakj:1 week,2 Wäakje:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joa:1 year,one Enj:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 Stunde:2 hours,1 Dach:1 day,1 Wäakj:1 week,2 Wäakje:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joa:1 year,one Enj:infinite',
'restriction-type' => "Er'laubniss:",
# Namespace form on various pages
@@ -445,6 +451,8 @@ Bitte nemm eenen aundren.',
'month' => 'Fonn Moonat (onn ferdäm):',
'year' => 'Fonn Joa (onn ferdäm):',
+'sp-contributions-talk' => 'Beredsied',
+
# What links here
'whatlinkshere' => 'Links opp dise Sied',
'whatlinkshere-title' => 'Siede, woone opp "$1" eenen Link habe',
@@ -459,7 +467,7 @@ Bitte nemm eenen aundren.',
'whatlinkshere-links' => '← Links',
# Block/unblock
-'ipboptions' => '2 Stunde:2 hours,1 Dach:1 day,3 Doag:3 days,1 Wäakj:1 week,2 Wäakje:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joa:1 year,one Enj:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stunde:2 hours,1 Dach:1 day,3 Doag:3 days,1 Wäakj:1 week,2 Wäakje:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joa:1 year,one Enj:infinite',
'blocklink' => 'blocke',
'unblocklink' => 'frie jewe',
'change-blocklink' => 'Daut Blocke endre',
@@ -467,7 +475,6 @@ Bitte nemm eenen aundren.',
'autoblocker' => 'Automatisch jeblockt, wiels diene IP-Adras soo es aus bie "[[User:$1|$1]]".
Dee Grunt es: "$2"',
'blocklogpage' => 'Block-Logbok',
-'blocklog-fulllog' => 'Vollstendjet Block-Logbok',
'blocklogentry' => 'haft [[$1]] jeblockt fe dee Tiet $2 $3',
'reblock-logentry' => "haft dee Block-Enstalinj fe [[$1]] je'endat fe dee Tiet $2 $3",
@@ -507,6 +514,7 @@ Dee Grunt es: "$2"',
'tooltip-search-go' => 'Go opp dee Sied, woone jenau disem Nome haft',
'tooltip-search-fulltext' => 'Setj no Siede mett soonem Tatjst',
'tooltip-n-mainpage' => 'Besäkj de Hauptsied',
+'tooltip-n-mainpage-description' => 'Besetj dee Hauptsied',
'tooltip-n-portal' => 'Ewa daut Portal, waut du doone kaunst, woo waut to finje es',
'tooltip-n-currentevents' => 'Hinjagruntinformatioone ewa aktuelle Sache finje',
'tooltip-n-recentchanges' => 'List mette latste Endanisse em Wiki.',
@@ -574,7 +582,7 @@ Dee Grunt es: "$2"',
# Attribution
'anonymous' => 'Onbekaunda Brucka {{PLURAL:$1|user|users}} von {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Brucka $1',
-'lastmodifiedatby' => "Dise Sied word daut latste Mol aum $1, Klock $2 von $3 je'endat.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Dise Sied word daut latste Mol aum $1, Klock $2 von $3 je'endat.",
'othercontribs' => 'Oppe Gruntloag vonne Oabeit von $1.',
'others' => 'aundre',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|user|users}} $1',
diff --git a/languages/messages/MessagesPfl.php b/languages/messages/MessagesPfl.php
index 2c1a1463..85782a81 100644
--- a/languages/messages/MessagesPfl.php
+++ b/languages/messages/MessagesPfl.php
@@ -11,6 +11,8 @@
* @author SPS
*/
+$fallback = 'de';
+
$messages = array(
'underline-always' => 'Immer',
'underline-never' => 'Garnet',
@@ -66,10 +68,12 @@ $messages = array(
'about' => 'Iwwer',
'newwindow' => '(werd im e naie Fenschter uffgmacht)',
'cancel' => 'Abbreche',
-'qbfind' => 'Finne',
'mytalk' => 'Gebabbel mit dir.',
'navigation' => 'Navigation',
+# Cologne Blue skin
+'qbfind' => 'Finne',
+
'errorpagetitle' => 'Fehler',
'returnto' => 'Zrick zu $1.',
'tagline' => 'Vun {{SITENAME}}',
@@ -101,7 +105,7 @@ $messages = array(
'otherlanguages' => 'In annere Sproche',
'redirectedfrom' => '(Wairrerglaidet vun $1)',
'redirectpagesub' => 'Wairerlaidungssaid',
-'lastmodifiedat' => 'Die Said isch zum ledschde Mol gänneret woore am $1, am $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Die Said isch zum ledschde Mol gänneret woore am $1, am $2.',
'viewcount' => 'Die Seid isch bis jetzerd {{PLURAL:$1|$1|$1}} mol uffgerufe worre.',
'jumpto' => 'Spring zu:',
'jumptonavigation' => 'Navigation',
@@ -226,13 +230,13 @@ Dai Ännerunge sinn no nid gspaichert worre!",
Wenn du nit willhsct, dass deswu du gschriwwe hoscht, gänneret un kopiert werre kann, dann duu s do nit naischraiwe.<br />
du gebbscht do au zu, dass Du des selwerscht gschriwwe hoscht orrer vun ere effentliche, fraie Quell ('''public domain''')orrer vun ere ähnliche fraie Quell her hoscht.
'''SCHRAIB DO NIX NAI, WAS URHEWERRECHTKLICH GSCHITZT ISCH!'''",
-'templatesused' => 'Vorlache wu uff derre Said gebraucht werre:',
-'templatesusedpreview' => 'Vorlache wu in derre Vorschau gebraucht werre:',
+'templatesused' => '{{PLURAL:$1|Vorlach wu uff derre Said gebraucht werd|Vorlache wu uff derre Said gebraucht werre}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Vorlach wu in derre Vorschau gebraucht werd|Vorlache wu in derre Vorschau gebraucht werre}}:',
'template-protected' => '(gschitzt)',
'template-semiprotected' => '(halb-gschitzt)',
'hiddencategories' => 'Die Said ghert zu {{PLURAL:$1|1 versteckelte Kategorie|$1 versteckelte Kategorie}}:',
'permissionserrorstext-withaction' => 'Du därfscht nid $2, aus {{PLURAL:$1|dem Grund|denne Grind}}:',
-'deleted-notice' => 'Die Said isch glescht worre.
+'moveddeleted-notice' => 'Die Said isch glescht worre.
De Leschaidrach fer die Said isch do unne aagewwe als Quell.',
# History pages
@@ -272,14 +276,11 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
'searchresulttext' => 'Fer mehr Informatione iwwer d Such in {{SITENAME}}, guck emol uff [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Du hoscht no \'\'\'[[:$1]]\'\'\' gesucht ([[Special:Prefixindex/$1|alle Saire wo mit "$1" aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Saire wo uf "$1" verlinkt sin]])',
'searchsubtitleinvalid' => "Du hoscht '''$1''' gsucht",
-'noexactmatch' => "'''S gebbd ke Said, wu \"\$1\" hääßt.'''
-Du kannscht awwer [[:\$1|die Said aaleche]].",
-'noexactmatch-nocreate' => "'''S gebbt ke Said, wu \"\$1\" hääßt.'''",
'notitlematches' => 'Ken Sairetitel gfunne',
'notextmatches' => 'Ken Iwwerainstimmunge mit Inhalte',
-'prevn' => 'voriche $1',
-'nextn' => 'negschte $1',
-'viewprevnext' => 'Gugg ($1) ($2) ($3)',
+'prevn' => 'voriche {{PLURAL:$1|$1}}',
+'nextn' => 'negschte {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Gugg ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 Word|$2 Wärder}})',
'search-redirect' => '(Wairerlaitung $1)',
'search-section' => '(Abschnitt $1)',
@@ -289,7 +290,6 @@ Du kannscht awwer [[:\$1|die Said aaleche]].",
'search-interwiki-more' => '(meh)',
'search-mwsuggest-enabled' => 'mid Vorschläch',
'search-mwsuggest-disabled' => 'ke Vorschläch',
-'showingresultstotal' => "Do {{PLURAL:$4|folcht s Suchergebnis '''$1''' vun '''$3:'''|folche d Suchergebniss '''$1–$2''' vun '''$3:'''}}",
'nonefound' => "'''Hiiwais:''' S werre standardmäßich numme e Dail Namensraim durchsucht. Setz ''all:'' vor Dai Suchbegriff zum alle Saire (mit Dischbediersaire, Vorlache usw.) durchsuche orrer direkt de Name vum Namensraum, wu durchsucht werre sell.",
'powersearch' => 'Erwaiterte Such',
'powersearch-legend' => 'Erwaiterte Such',
@@ -348,6 +348,8 @@ Du kannscht awwer [[:\$1|die Said aaleche]].",
# Recent changes linked
'recentchangeslinked' => 'Was on verlinkde Seide gemacht worre isch',
+'recentchangeslinked-feed' => 'Was on verlinkde Seide gemacht worre isch',
+'recentchangeslinked-toolbox' => 'Was on verlinkde Seide gemacht worre isch',
'recentchangeslinked-title' => 'Ännerunge an Saire, wu „$1“ druf verlinkt',
'recentchangeslinked-summary' => "Des isch e Lischt vun Ännerunge, wu erscht gmacht worre sin an Saire, die wu vun ere bstimmte Said verlinkt sin (orrer die wu zu ere bstimmte Kategorie ghere).
Saire uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
@@ -357,12 +359,12 @@ Saire uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
# Upload
'upload' => 'Hochlade',
'uploadbtn' => 'Datei hochlade',
-'reupload' => 'Widder hochlade',
'uploadlogpage' => 'Dateie-Logbuch',
'savefile' => 'Datei schbeichere',
'uploadedimage' => 'hot "[[$1]]" hochglare',
# File description page
+'file-anchor-link' => 'Datei',
'filehist' => 'Dateigschicht',
'filehist-help' => 'Drick uff e Zaidpunkt zum aazääche, wie s dort ausgsähne hot.',
'filehist-current' => 'aktuell',
@@ -374,9 +376,7 @@ Saire uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
'filehist-comment' => 'Kommentar',
'imagelinks' => 'Dateilinks',
'linkstoimage' => 'Die {{PLURAL:$1|Said verwaist|$1 Saire verwaise}} uff die Datei:',
-'sharedupload' => 'Die Datei isch vun $1 un s kann sai, dass se ach vun annere Projekt gebraucht werd.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => 'Do unne hot s d Bschraiwung vun $1.',
-'shareduploadwiki-linktext' => 'Datei-Bschraiwungssaid',
+'sharedupload' => 'Die Datei isch vun $1 un s kann sai, dass se ach vun annere Projekt gebraucht werd.',
'uploadnewversion-linktext' => 'E naiere Version vun derre Datei hochlare',
# Random page
@@ -473,7 +473,6 @@ Guck $2 fer e Lischt vun de letschte Leschunge.',
'protectexpiry' => 'Bis:',
'protect_expiry_invalid' => 'Zaidraum isch nid gildich.',
'protect_expiry_old' => 'Zaidraum licht in de Vergangehääd.',
-'protect-unchain' => 'Verschiebschutz ännere',
'protect-text' => "Du kannscht de Schutzstatus vun de Said '''<nowiki>$1</nowiki>''' aagucke un ännere.",
'protect-locked-access' => "Dai Benutzerkonto hot ken Recht zum de Schutzstatus vun ener Said ze ännere.
Do hot s di aktuelle Aistellunge vun de Said '''$1''':",
@@ -513,6 +512,7 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot ken Aifluss uff
'sp-contributions-newbies' => 'Zaich numme Baidräch vun naie Benutzerkonte',
'sp-contributions-blocklog' => 'Sperrlogbuch',
+'sp-contributions-talk' => 'Dischbediere',
'sp-contributions-search' => 'No Baidräch suche',
'sp-contributions-username' => 'IP-Adress orrer Benutzername:',
'sp-contributions-submit' => 'Suche',
@@ -536,7 +536,7 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot ken Aifluss uff
# Block/unblock
'blockip' => 'Benutzer bloggiere',
'ipbsubmit' => 'Benutzer bloggiere',
-'ipboptions' => '2 Stunne:2 hours,1 Dach:1 day,3 Dache:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fer immer:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Stunne:2 hours,1 Dach:1 day,3 Dache:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fer immer:infinite',
'ipusubmit' => 'Die Adreß freigewwe',
'ipblocklist' => 'Gsperrte IP-Adresse un Benutzername',
'blocklink' => 'sperre',
@@ -576,7 +576,7 @@ In denne Fäll misst mer d Dischbediersaid vun Hand kopiere.",
'move-watch' => 'Die Said beowachde',
'movepagebtn' => 'Seid verschiewe',
'pagemovedsub' => 'Verschiewung hot geklappt',
-'movepage-moved' => '\'\'\'"$1" isch verschowe worre uff "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" isch verschowe worre uff "$2"\'\'\'',
'articleexists' => 'E Said mid dem Name gebbt s schun, orrer de Name, wu du gewählt hoscht, isch nid gildich.
Bitte nemm e annere Name.',
'talkexists' => "'''Die Said selwerschd, isch verschowe worre, awwer d Dischbediersaid hot nid kenne verschowe werre, wail s schun enni gebbt mid dem Name.
@@ -624,6 +624,7 @@ Du kannscht awwer de Quelltext aagucke',
'tooltip-search-go' => 'Geh zu ere Said mit genää dem Namme, wenn s se gebbt',
'tooltip-search-fulltext' => 'Such in de Saire noch dem Text',
'tooltip-n-mainpage' => 'Uff d Hääptsaid geh',
+'tooltip-n-mainpage-description' => 'Hauptseide angucke',
'tooltip-n-portal' => 'Iwwer s Projekt, was de duu kannscht, wo de ebbes finnscht',
'tooltip-n-currentevents' => 'hinnergundsinformatione finne iwwer naie Eraichnis',
'tooltip-n-recentchanges' => 'D Lischt vun de letschte Ännerunge in dem Wiki',
@@ -691,7 +692,7 @@ Annere Metadate sinn standardmäßig versteckelt.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Die Datei bearwaide mit ener externe Aawendung',
diff --git a/languages/messages/MessagesPih.php b/languages/messages/MessagesPih.php
index 209d3d97..bfbff4ec 100644
--- a/languages/messages/MessagesPih.php
+++ b/languages/messages/MessagesPih.php
@@ -57,7 +57,9 @@ $messages = array(
'recentchanges' => 'Dem Riisent Chayng',
# Recent changes linked
-'recentchangeslinked' => 'Dem Riilated Chayng',
+'recentchangeslinked' => 'Dem Riilated Chayng',
+'recentchangeslinked-feed' => 'Dem Riilated Chayng',
+'recentchangeslinked-toolbox' => 'Dem Riilated Chayng',
# Upload
'upload' => 'Upload Faail',
diff --git a/languages/messages/MessagesPl.php b/languages/messages/MessagesPl.php
index 4684d820..99ccee6d 100644
--- a/languages/messages/MessagesPl.php
+++ b/languages/messages/MessagesPl.php
@@ -143,7 +143,7 @@ $specialPageAliases = array(
'Undelete' => array( 'Odtwórz' ),
'Lockdb' => array( 'Zablokuj bazę' ),
'Unlockdb' => array( 'Odblokuj bazę' ),
- 'Userrights' => array( 'Prawa użytkowników' ),
+ 'Userrights' => array( 'Uprawnienia użytkowników', 'Prawa użytkowników' ),
'MIMEsearch' => array( 'Wyszukiwanie MIME' ),
'FileDuplicateSearch' => array( 'Szukaj duplikatu pliku' ),
'Unwatchedpages' => array( 'Nieobserwowane strony' ),
@@ -167,6 +167,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'Wyszukiwarka linków' ),
'DeletedContributions' => array( 'Usunięty wkład' ),
'Tags' => array( 'Znaczniki' ),
+ 'Activeusers' => array( 'Aktywni użytkownicy' ),
);
$magicWords = array(
@@ -176,7 +177,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__ZESPISEM__', '__FORCETOC__' ),
'toc' => array( '0', '__SPIS__', '__TOC__' ),
'noeditsection' => array( '0', '__BEZEDYCJISEKCJI__', '__NOEDITSECTION__' ),
- 'localmonth' => array( '1', 'MIESIĄC', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'MIESIĄC', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'MIESIĄCNAZWA', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'MIESIĄCNAZWAD', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'MIESIĄCNAZWASKR', 'LOCALMONTHABBREV' ),
@@ -254,6 +255,7 @@ $messages = array(
'tog-enotifminoredits' => 'Wyślij e‐mail także w przypadku drobnych zmian na stronach',
'tog-enotifrevealaddr' => 'Nie ukrywaj mojego adresu e‐mail w powiadomieniach',
'tog-shownumberswatching' => 'Pokaż liczbę użytkowników obserwujących stronę',
+'tog-oldsig' => 'Obecny wygląd Twojego podpisu',
'tog-fancysig' => 'Traktuj podpis jako wikikod (nie linkuj automatycznie całości)',
'tog-externaleditor' => 'Domyślnie używaj zewnętrznego edytora (dla użytkowników zaawansowanych; wymaga specjalnych ustawień dla komputera)',
'tog-externaldiff' => 'Domyślnie używaj zewnętrznego programu pokazującego zmiany (dla użytkowników zaawansowanych; wymaga specjalnych ustawień dla komputera)',
@@ -277,6 +279,13 @@ $messages = array(
'underline-never' => 'nigdy',
'underline-default' => 'według ustawień przeglądarki',
+# Font style option in Special:Preferences
+'editfont-style' => 'Styl czcionki w polu edycyjnym',
+'editfont-default' => 'domyślny przeglądarki',
+'editfont-monospace' => 'czcionka o stałej szerokości',
+'editfont-sansserif' => 'czcionka bezszeryfowa',
+'editfont-serif' => 'czcionka szeryfowa',
+
# Dates
'sunday' => 'niedziela',
'monday' => 'poniedziałek',
@@ -336,7 +345,7 @@ $messages = array(
'category-media-header' => 'Pliki w kategorii „$1”',
'category-empty' => "''Obecnie w tej kategorii brak stron oraz plików.''",
'hidden-categories' => '{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie}}',
-'hidden-category-category' => 'Ukryte kategorie', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ukryte kategorie',
'category-subcat-count' => '{{PLURAL:$2|Ta kategoria ma tylko jedną podkategorię.|Poniżej wyświetlono $1 spośród wszystkich $2 podkategorii tej kategorii.}}',
'category-subcat-count-limited' => 'Ta kategoria ma {{PLURAL:$1|1 podkategorię|$1 podkategorie|$1 podkategorii}}.',
'category-article-count' => '{{PLURAL:$2|W tej kategorii jest tylko jedna strona.|Poniżej wyświetlono $1 spośród wszystkich $2 stron tej kategorii.}}',
@@ -344,6 +353,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|W tej kategorii znajduje się tylko jeden plik.|W tej kategorii {{PLURAL:$1|jest 1 plik|są $1 pliki|jest $1 plików}} z ogólnej liczby $2 plików.}}',
'category-file-count-limited' => 'W tej kategorii {{PLURAL:$1|jest 1 plik|są $1 pliki|jest $1 plików}}.',
'listingcontinuesabbrev' => 'cd.',
+'index-category' => 'Strony indeksowane',
+'noindex-category' => 'Strony nieindeksowane',
'mainpagetext' => "'''Instalacja MediaWiki powiodła się.'''",
'mainpagedocfooter' => 'Zobacz [http://meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] w celu uzyskania informacji o działaniu oprogramowania wiki.
@@ -353,10 +364,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki]',
-'about' => 'O {{GRAMMAR:MS.lp|{{SITENAME}}}}',
-'article' => 'artykuł',
-'newwindow' => '(otwiera się w nowym oknie)',
-'cancel' => 'Anuluj',
+'about' => 'O {{GRAMMAR:MS.lp|{{SITENAME}}}}',
+'article' => 'artykuł',
+'newwindow' => '(otwiera się w nowym oknie)',
+'cancel' => 'Anuluj',
+'moredotdotdot' => 'Więcej...',
+'mypage' => 'Moja strona',
+'mytalk' => 'Moja dyskusja',
+'anontalk' => 'Dyskusja tego IP',
+'navigation' => 'Nawigacja',
+'and' => '&#32;oraz',
+
+# Cologne Blue skin
'qbfind' => 'Znajdź',
'qbbrowse' => 'Przeglądanie',
'qbedit' => 'Edycja',
@@ -364,15 +383,35 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Moje strony',
'qbspecialpages' => 'strony specjalne',
-'moredotdotdot' => 'Więcej...',
-'mypage' => 'Moja strona',
-'mytalk' => 'Moja dyskusja',
-'anontalk' => 'Dyskusja tego IP',
-'navigation' => 'Nawigacja',
-'and' => '&#32;oraz',
-
-# Metadata in edit box
-'metadata_help' => 'Metadane:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Dodaj temat',
+'vector-action-delete' => 'Usuń',
+'vector-action-move' => 'Przenieś',
+'vector-action-protect' => 'Zabezpiecz',
+'vector-action-undelete' => 'Odtwórz',
+'vector-action-unprotect' => 'Odbezpiecz',
+'vector-namespace-category' => 'Kategoria',
+'vector-namespace-help' => 'Strona pomocy',
+'vector-namespace-image' => 'Plik',
+'vector-namespace-main' => 'Strona',
+'vector-namespace-media' => 'Strona pliku',
+'vector-namespace-mediawiki' => 'Komunikat',
+'vector-namespace-project' => 'Strona projektu',
+'vector-namespace-special' => 'Strona specjalna',
+'vector-namespace-talk' => 'Dyskusja',
+'vector-namespace-template' => 'Szablon',
+'vector-namespace-user' => 'Strona użytkownika',
+'vector-view-create' => 'Utwórz',
+'vector-view-edit' => 'Edytuj',
+'vector-view-history' => 'Wyświetl historię',
+'vector-view-view' => 'Czytaj',
+'vector-view-viewsource' => 'Tekst źródłowy',
+'actions' => 'Działania',
+'namespaces' => 'Przestrzenie nazw',
+'variants' => 'Warianty',
'errorpagetitle' => 'Błąd',
'returnto' => 'Wróć do strony $1.',
@@ -422,18 +461,22 @@ $messages = array(
'otherlanguages' => 'W innych językach',
'redirectedfrom' => '(Przekierowano z $1)',
'redirectpagesub' => 'Strona przekierowująca',
-'lastmodifiedat' => 'Tę stronę ostatnio zmodyfikowano $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Tę stronę ostatnio zmodyfikowano $2, $1.',
'viewcount' => 'Tę stronę obejrzano {{PLURAL:$1|tylko raz|$1 razy}}.',
'protectedpage' => 'Strona zabezpieczona',
'jumpto' => 'Skocz do:',
'jumptonavigation' => 'nawigacji',
'jumptosearch' => 'wyszukiwania',
+'view-pool-error' => 'Niestety w chwili obecnej serwery są przeciążone.
+Zbyt wielu użytkowników próbuje wyświetlić tę stronę.
+Poczekaj chwilę przed ponowną próbą dostępu do tej strony.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'aboutpage' => 'Project:O {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'copyright' => 'Treść udostępniana na licencji $1.',
-'copyrightpagename' => 'prawami autorskimi {{GRAMMAR:D.lp|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Prawa_autorskie',
'currentevents' => 'Bieżące wydarzenia',
'currentevents-url' => 'Project:Aktualności',
@@ -441,8 +484,6 @@ $messages = array(
'disclaimerpage' => 'Project:Informacje prawne',
'edithelp' => 'Pomoc w edycji',
'edithelppage' => 'Help:Jak edytować stronę',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Spis treści',
'mainpage' => 'Strona główna',
'mainpage-description' => 'Strona główna',
@@ -522,10 +563,6 @@ Ostatnie, nieudane zapytanie to:
„$1”
wywołane zostało przez funkcję „$2”.
Baza danych zgłosiła błąd „$3: $4”',
-'noconnect' => 'UWAGA! Projekt {{SITENAME}} ma chwilowe problemy techniczne. Brak połączenia z serwerem bazy danych.<br />
-$1',
-'nodb' => 'Nie można odnaleźć bazy danych $1',
-'cachederror' => 'Poniższy tekst strony jest kopią znajdującą się w pamięci podręcznej i może być już nieaktualny.',
'laggedslavemode' => 'Uwaga! Ta strona może nie zawierać najnowszych aktualizacji.',
'readonly' => 'Baza danych jest zablokowana',
'enterlockreason' => 'Podaj powód zablokowania bazy oraz szacunkowy termin jej odblokowania',
@@ -543,6 +580,8 @@ Można zgłosić ten fakt [[Special:ListUsers/sysop|administratorowi]], podając
'readonly_lag' => 'Baza danych została automatycznie zablokowana na czas potrzebny do wykonania synchronizacji zmian między serwerem głównym i serwerami pośredniczącymi.',
'internalerror' => 'Błąd wewnętrzny',
'internalerror_info' => 'Błąd wewnętrzny – $1',
+'fileappenderrorread' => 'Błąd odczytu „$1” w trakcie dołączania.',
+'fileappenderror' => 'Nie udało się dołączyć „$1” do „$2”.',
'filecopyerror' => 'Nie można skopiować pliku „$1” do „$2”.',
'filerenameerror' => 'Nie można zmienić nazwy pliku „$1” na „$2”.',
'filedeleteerror' => 'Nie można usunąć pliku „$1”.',
@@ -552,7 +591,7 @@ Można zgłosić ten fakt [[Special:ListUsers/sysop|administratorowi]], podając
'unexpected' => 'Nieoczekiwana wartość „$1”=„$2”.',
'formerror' => 'Błąd – nie można wysłać formularza',
'badarticleerror' => 'Dla tej strony ta operacja nie może być wykonana.',
-'cannotdelete' => 'Nie można usunąć podanej strony lub grafiki.
+'cannotdelete' => 'Strona lub plik „$1” nie mogą zostać usunięte.
Możliwe, że zostały już usunięte przez kogoś innego.',
'badtitle' => 'Niepoprawny tytuł',
'badtitletext' => 'Podano niepoprawny tytuł strony. Prawdopodobnie jest pusty lub zawiera znaki, których użycie jest zabronione.',
@@ -587,7 +626,6 @@ Uzasadnienie blokady: ''$2''.",
'virus-unknownscanner' => 'nieznany program antywirusowy',
# Login and logout pages
-'logouttitle' => 'Wylogowanie użytkownika',
'logouttext' => "'''Nie jesteś już zalogowany.'''
Możesz kontynuować pracę w {{GRAMMAR:MS.lp|{{SITENAME}}}} jako niezarejestrowany użytkownik albo [[Special:UserLogin|zalogować się ponownie]] jako ten sam lub inny użytkownik.
@@ -595,7 +633,6 @@ Zauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektó
'welcomecreation' => '== Witaj, $1! ==
Twoje konto zostało utworzone.
Nie zapomnij dostosować [[Special:Preferences|preferencji dla {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Logowanie',
'yourname' => 'Nazwa {{GENDER:|użytkownika|użytkowniczki}}',
'yourpassword' => 'Hasło',
'yourpasswordagain' => 'Powtórz hasło',
@@ -606,6 +643,7 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji dla {{GRAMMAR:D.lp|{{
'nav-login-createaccount' => 'Logowanie i rejestracja',
'loginprompt' => 'Musisz mieć włączoną w przeglądarce obsługę ciasteczek, by móc się zalogować do {{GRAMMAR:D.lp|{{SITENAME}}}}.',
'userlogin' => 'Logowanie i rejestracja',
+'userloginnocreate' => 'Zaloguj się',
'logout' => 'Wyloguj',
'userlogout' => 'Wyloguj',
'notloggedin' => 'Nie jesteś zalogowany',
@@ -618,28 +656,8 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji dla {{GRAMMAR:D.lp|{{
'badretype' => 'Wprowadzone hasła różnią się między sobą.',
'userexists' => 'Wybrana przez Ciebie nazwa użytkownika jest już zajęta.
Wybierz inną nazwę użytkownika.',
-'youremail' => 'Twój adres e‐mail',
-'username' => 'Nazwa użytkownika',
-'uid' => 'ID użytkownika',
-'prefs-memberingroups' => 'Należy do {{PLURAL:$1|grupy|grup:}}',
-'yourrealname' => 'Imię i nazwisko',
-'yourlanguage' => 'Język interfejsu',
-'yourvariant' => 'Wariant',
-'yournick' => 'Twój podpis',
-'badsig' => 'Nieprawidłowy podpis, sprawdź znaczniki HTML.',
-'badsiglength' => 'Twój podpis jest zbyt długi.
-Dopuszczalna długość to $1 {{PLURAL:$1|znak|znaki|znaków}}.',
-'yourgender' => 'Płeć',
-'gender-unknown' => 'nie określono',
-'gender-male' => 'mężczyzna',
-'gender-female' => 'kobieta',
-'prefs-help-gender' => 'Podanie płci nie jest obowiązkowe. Jeśli zdecydujesz się ją określić, oprogramowanie dostosuje do niej interfejs. Informacja o Twojej płci będzie widoczna dla wszystkich.',
-'email' => 'E‐mail',
-'prefs-help-realname' => 'Wpisanie imienia i nazwiska nie jest obowiązkowe.
-Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.',
'loginerror' => 'Błąd zalogowania',
-'prefs-help-email' => "Podanie adresu e‐mail nie jest obowiązkowe, lecz pozwoli innym użytkownikom skontaktować się z Tobą poprzez odpowiedni formularz (bez ujawniania Twojego adresu). Będziesz także mógł poprosić o przysłanie Ci nowego hasła. '''Twój adres nie zostanie nikomu udostępniony.'''",
-'prefs-help-email-required' => 'Wymagany jest adres e‐mail.',
+'createaccounterror' => 'Nie można utworzyć konta $1',
'nocookiesnew' => 'Konto użytkownika zostało utworzone, ale nie jesteś zalogowany.
{{SITENAME}} używa ciasteczek do przechowywania informacji o zalogowaniu się.
Masz obecnie w przeglądarce wyłączoną obsługę ciasteczek.
@@ -656,10 +674,11 @@ Sprawdź pisownię lub [[Special:UserLogin/signup|utwórz nowe konto]].',
'nosuchusershort' => 'Brak użytkownika o nazwie „<nowiki>$1</nowiki>”.
Sprawdź poprawność pisowni.',
'nouserspecified' => 'Musisz podać nazwę użytkownika.',
+'login-userblocked' => 'Ten użytkownik jest zablokowany. Zalogowanie się jest niemożliwe.',
'wrongpassword' => 'Podane hasło jest nieprawidłowe. Spróbuj jeszcze raz.',
'wrongpasswordempty' => 'Wprowadzone hasło jest puste. Spróbuj ponownie.',
-'passwordtooshort' => 'Twoje hasło jest błędne lub za krótkie.
-Musi mieć co najmniej $1 {{PLURAL:$1|znak|znaki|znaków}} i być inne, niż Twoja nazwa użytkownika.',
+'passwordtooshort' => 'Hasło musi mieć co najmniej $1 {{PLURAL:$1|znak|znaki|znaków}}.',
+'password-name-match' => 'Hasło musi być inne niż nazwa użytkownika.',
'mailmypassword' => 'Wyślij mi nowe hasło poprzez e‐mail',
'passwordremindertitle' => 'Nowe tymczasowe hasło do {{GRAMMAR:D.lp|{{SITENAME}}}}',
'passwordremindertext' => 'Ktoś (prawdopodobnie Ty, spod adresu IP $1)
@@ -670,6 +689,7 @@ Tymczasowe hasło wygaśnie za {{PLURAL:$5|1 dzień|$5 dni}}.
Jeśli to nie Ty prosiłeś o przesłanie hasła lub przypomniałeś sobie hasło i nie chcesz go zmieniać, wystarczy, że zignorujesz tę wiadomość i dalej będziesz się posługiwać swoim dotychczasowym hasłem.',
'noemail' => 'Brak zdefiniowanego adresu e‐mail dla użytkownika „$1”.',
+'noemailcreate' => 'Musisz podać prawidłowy adres e‐mail',
'passwordsent' => 'Nowe hasło zostało wysłane na adres e‐mail użytkownika „$1”.
Po otrzymaniu go zaloguj się ponownie.',
'blocked-mailpassword' => 'Twój adres IP został zablokowany i nie możesz używać funkcji odzyskiwania hasła z powodu możliwości jej nadużywania.',
@@ -694,9 +714,11 @@ Wpisz poprawny adres e‐mail lub wyczyść pole.',
Zaloguj się teraz i je zmień.
Możesz zignorować tę wiadomość, jeśli konto zostało utworzone przez pomyłkę.',
+'usernamehasherror' => 'Nazwa użytkownika nie może zawierać znaków kratki „#”',
'login-throttled' => 'Zbyt wiele razy próbowałeś zalogować się na to konto.
Odczekaj chwilę zanim ponowisz próbę.',
'loginlanguagelabel' => 'Język: $1',
+'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
# Password reset dialog
'resetpass' => 'Zmień hasło',
@@ -709,18 +731,13 @@ Aby zakończyć proces logowania, musisz ustawić nowe hasło:',
'retypenew' => 'Powtórz nowe hasło',
'resetpass_submit' => 'Ustaw hasło i zaloguj się',
'resetpass_success' => 'Twoje hasło zostało pomyślnie zmienione! Trwa logowanie...',
-'resetpass_bad_temporary' => 'Nieprawidłowe hasło tymczasowe.
-Być może zakończyłeś już proces zmiany hasła lub poprosiłeś o nowe hasło tymczasowe.',
'resetpass_forbidden' => 'Hasła nie mogą zostać zmienione',
'resetpass-no-info' => 'Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.',
'resetpass-submit-loggedin' => 'Zmień hasło',
+'resetpass-submit-cancel' => 'Anuluj',
'resetpass-wrong-oldpass' => 'Nieprawidłowe tymczasowe lub aktualne hasło.
Być może właśnie zmienił{{GENDER:|eś|aś|eś(‐aś)}} swoje hasło lub poprosił{{GENDER:|eś|aś|eś(‐aś)}} o nowe tymczasowe hasło.',
'resetpass-temp-password' => 'Tymczasowe hasło:',
-'resetpass-log' => 'Rejestr zerowania haseł',
-'resetpass-logtext' => 'Rejestr użytkowników których hasła zerowali administratorzy.',
-'resetpass-logentry' => 'zmienił hasło $1',
-'resetpass-comment' => 'Powód wyzerowania hasła',
# Edit page toolbar
'bold_sample' => 'Tekst tłustą czcionką',
@@ -797,7 +814,6 @@ Prosimy o podanie obu tych numerów przy wyjaśnianiu blokady.",
'blockededitsource' => "Tekst '''Twoich edycji''' na '''$1''' został pokazany poniżej:",
'whitelistedittitle' => 'Przed edycją musisz się zalogować',
'whitelistedittext' => 'Musisz $1, by edytować strony.',
-'confirmedittitle' => 'Edytowanie jest możliwe dopiero po zweryfikowaniu adresu e‐mail',
'confirmedittext' => 'Edytowanie jest możliwe dopiero po zweryfikowaniu adresu e‐mail.
Podaj adres e‐mail i potwierdź go w swoich [[Special:Preferences|ustawieniach użytkownika]].',
'nosuchsectiontitle' => 'Nie można znaleźć sekcji',
@@ -821,14 +837,21 @@ Jeśli jesteś anonimowym użytkownikiem i uważasz, że zamieszczone tu komenta
'noarticletext' => 'Brak strony o tym tytule.
Możesz [[Special:Search/{{PAGENAME}}|poszukać „{{PAGENAME}}” na innych stronach]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przeszukać log] lub [{{fullurl:{{FULLPAGENAME}}|action=edit}} utworzyć tę stronę]</span>.',
+'noarticletext-nopermission' => 'Na tej stronie nie ma jeszcze artykułu.
+Możesz [[Special:Search/{{PAGENAME}}|wyszukać ten tytuł]] w treści innych stron
+lub <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przeszukać powiązane logi].</span>',
'userpage-userdoesnotexist' => 'Użytkownik „$1” nie jest zarejestrowany.
Upewnij się, czy na pewno zamierza{{GENDER:|łeś|łaś|sz}} utworzyć lub zmodyfikować właśnie tę stronę.',
+'userpage-userdoesnotexist-view' => 'Konto użytkownika „$1” nie jest zarejestrowane.',
+'blocked-notice-logextract' => '{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} jest obecnie {{GENDER:$1|zablokowany|zablokowana}}.
+Ostatni wpis rejestru blokad jest pokazany poniżej.',
'clearyourcache' => "'''Uwaga:''' Zmiany po zapisaniu nowych ustawień mogą nie być widoczne. Należy wyczyścić zawartość pamięci podręcznej przeglądarki internetowej.
*'''Mozilla, Firefox lub Safari –''' przytrzymaj wciśnięty ''Shift'' i kliknij na ''Odśwież'' lub wciśnij ''Ctrl‐F5'' lub ''Ctrl‐R'' (''Cmd‐Shift‐R'' na Macintoshu)
*'''Konqueror –''' kliknij przycisk ''Odśwież'' lub wciśnij ''F5''
*'''Opera –''' wyczyść pamięć podręczną w menu ''Narzędzia → Preferencje''
*'''Internet Explorer –''' przytrzymaj ''Ctrl'' i kliknij na ''Odśwież'' lub wciśnij ''Ctrl‐F5''",
-'usercssjsyoucanpreview' => "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy arkusz stylów CSS lub kod JavaScript przed jego zapisaniem.",
+'usercssyoucanpreview' => "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy arkusz stylów CSS przed jego zapisaniem.",
+'userjsyoucanpreview' => "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy kod JavaScript przed jego zapisaniem.",
'usercsspreview' => "'''Pamiętaj, że to tylko podgląd arkusza stylów CSS – nic jeszcze nie zostało zapisane!'''",
'userjspreview' => "'''Pamiętaj, że to tylko podgląd Twojego kodu JavaScript – nic jeszcze nie zostało zapisane!'''",
'userinvalidcssjstitle' => "'''Uwaga:''' Brak skórki o nazwie „$1”.
@@ -877,13 +900,16 @@ Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub p
'readonlywarning' => "'''Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Zapisz jej treść do pliku, używając wytnij i wklej, aby zachować na później.'''
Administrator, który zablokował bazę, podał następujące wyjaśnienie: $1",
-'protectedpagewarning' => "'''Uwaga! Możliwość modyfikacja tej strony została zablokowana. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''",
-'semiprotectedpagewarning' => "'''Uwaga!''' Ta strona została zabezpieczona i tylko zarejestrowani użytkownicy mogą ją edytować.",
+'protectedpagewarning' => "'''Uwaga! Możliwość modyfikacja tej strony została zabezpieczona. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''
+Ostatni wpis z rejestru jest pokazany poniżej.",
+'semiprotectedpagewarning' => "'''Uwaga!''' Ta strona została zabezpieczona i tylko zarejestrowani użytkownicy mogą ją edytować.
+Ostatni wpis z rejestru jest pokazany poniżej.",
'cascadeprotectedwarning' => "'''Uwaga!''' Ta strona została zabezpieczona i tylko użytkownicy z uprawnieniami administratora mogą ją edytować. Strona ta jest zawarta na {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
-'titleprotectedwarning' => "'''Uwaga! Utworzenie strony o tej nazwie zostało zablokowane. Do jej utworzenia wymagane są [[Special:ListGroupRights|specyficzne uprawnienia]].'''",
-'templatesused' => 'Szablony użyte w tym artykule:',
-'templatesusedpreview' => 'Szablony użyte w tym podglądzie:',
-'templatesusedsection' => 'Szablony użyte w tej sekcji:',
+'titleprotectedwarning' => "'''Uwaga! Utworzenie strony o tej nazwie zostało zabezpieczone. Do jej utworzenia wymagane są [[Special:ListGroupRights|specyficzne uprawnienia]].'''
+Ostatni wpis z rejestru jest pokazany poniżej.",
+'templatesused' => '{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym artykule:',
+'templatesusedpreview' => '{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym podglądzie:',
+'templatesusedsection' => '{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tej sekcji:',
'template-protected' => '(zabezpieczony)',
'template-semiprotected' => '(częściowo zabezpieczony)',
'hiddencategories' => 'Ta strona jest w {{PLURAL:$1|jednej ukrytej kategorii|$1 ukrytych kategoriach}}:',
@@ -892,15 +918,18 @@ Administrator, który zablokował bazę, podał następujące wyjaśnienie: $1",
'nocreatetext' => 'W {{GRAMMAR:MS.lp|{{SITENAME}}}} ograniczono możliwość tworzenia nowych stron.
Możesz edytować istniejące strony bądź też [[Special:UserLogin|zalogować się lub utworzyć konto]].',
'nocreate-loggedin' => 'Nie masz uprawnień do tworzenia nowych stron.',
+'sectioneditnotsupported-title' => 'Edycja sekcji nie jest obsługiwana',
+'sectioneditnotsupported-text' => 'Edycja sekcji na tej stronie nie jest obsługiwana.',
'permissionserrors' => 'Błędy uprawnień',
'permissionserrorstext' => 'Nie masz uprawnień do tego działania z {{PLURAL:$1|następującej przyczyny|następujących przyczyn}}:',
'permissionserrorstext-withaction' => 'Nie masz uprawnień do $2, z {{PLURAL:$1|następującego powodu|następujących powodów}}:',
-'recreate-deleted-warn' => "'''Uwaga! Zamierzasz utworzyć stronę, która została wcześniej usunięta.'''
+'recreate-moveddeleted-warn' => "'''Uwaga! Zamierzasz utworzyć stronę, która została wcześniej usunięta.'''
Upewnij się, czy ponowne utworzenie tej strony jest uzasadnione.
-Poniżej znajduje się rejestr usunięć tej strony:",
-'deleted-notice' => 'Ta strona została usunięta. Rejestr usunięć tej strony jest pokazany poniżej.',
-'deletelog-fulllog' => 'Zobacz cały rejestr',
+Poniżej znajduje się rejestr usunięć i zmian nazwy tej strony:",
+'moveddeleted-notice' => 'Ta strona została usunięta.
+Rejestr usunięć i zmian nazwy tej strony jest pokazany poniżej.',
+'log-fulllog' => 'Pokaż cały rejestr',
'edit-hook-aborted' => 'Edycja zatrzymana z powodu haka.
Wystąpił z nieokreślonej przyczyny.',
'edit-gone-missing' => 'Nie udało się zaktualizować strony.
@@ -923,6 +952,7 @@ Argument ten będzie pominięty.',
'post-expand-template-argument-category' => 'Strony, w których użyto szablon z pominięciem argumentów',
'parser-template-loop-warning' => 'Wykryto pętlę w szablonie [[$1]]',
'parser-template-recursion-depth-warning' => 'Przekroczno limit głębokości rekurencji szablonu ($1)',
+'language-converter-depth-warning' => 'Przekroczono ograniczenie ($1) głębokości zagnieżdżenia konwersji językowej',
# "Undo" feature
'undo-success' => 'Edycja może zostać wycofana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.',
@@ -942,7 +972,7 @@ Podany przez $3 powód to ''$2''",
'currentrev' => 'Aktualna wersja',
'currentrev-asof' => 'Aktualna wersja na dzień $1',
'revisionasof' => 'Wersja z $1',
-'revision-info' => 'Wersja $2 z dnia $1', # Additionally available: $3: revision id
+'revision-info' => 'Wersja $2 z dnia $1',
'previousrevision' => '← poprzednia wersja',
'nextrevision' => 'następna wersja →',
'currentrevisionlink' => 'przejdź do aktualnej wersji',
@@ -955,7 +985,7 @@ Podany przez $3 powód to ''$2''",
Legenda: (bież.) – pokaż zmiany od tej wersji do bieżącej,
(poprz.) – pokaż zmiany od wersji poprzedzającej, m – mała (drobna) zmiana",
'history-fieldset-title' => 'Przeglądaj historię',
-'deletedrev' => '[usunięto]',
+'history-show-deleted' => 'Tylko usunięte',
'histfirst' => 'od początku',
'histlast' => 'od końca',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajty|$1 bajtów}})',
@@ -964,72 +994,111 @@ Legenda: (bież.) – pokaż zmiany od tej wersji do bieżącej,
# Revision feed
'history-feed-title' => 'Historia wersji',
'history-feed-description' => 'Historia wersji tej strony wiki',
-'history-feed-item-nocomment' => '$1 o $2', # user at time
+'history-feed-item-nocomment' => '$1 o $2',
'history-feed-empty' => 'Wybrana strona nie istnieje.
Mogła zostać usunięta lub jej nazwa została zmieniona.
Spróbuj [[Special:Search|poszukać]] tej strony.',
# Revision deletion
-'rev-deleted-comment' => '(komentarz usunięty)',
-'rev-deleted-user' => '(nazwa użytkownika usunięta)',
-'rev-deleted-event' => '(wpis usunięty)',
-'rev-deleted-text-permission' => "Ta wersja strony została '''usunięta'''.
-Szczegółowe informacje mogą znajdować się w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
-'rev-deleted-text-view' => "Ta wersja strony została '''usunięta'''.
-Jednak jako administrator możesz ją obejrzeć. Szczegółowe informacje mogą znajdować się w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
-'rev-deleted-no-diff' => "Nie możesz zobaczyć różnic pomiędzy wersjami, ponieważ jedna z tych wersji została '''usunięta'''.
-Szczegółowe informacje mogą znajdować się w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
-'rev-deleted-unhide-diff' => "Jedna z wersji tej strony została '''usunięta'''.
-Szczegółowe informacje mogą znajdować się w [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].
-Jako administrator {{GRAMMAR:D.lp|{{SITENAME}}}} możesz [$1 obejrzeć porównanie wersji].",
-'rev-delundel' => 'pokaż/ukryj',
-'revisiondelete' => 'Usuń/przywróć wersje',
-'revdelete-nooldid-title' => 'Nieprawidłowa wersja do przeprowadzenia operacji',
-'revdelete-nooldid-text' => 'Nie wybrano wersji, na których ma zostać wykonana ta operacja,
+'rev-deleted-comment' => '(komentarz usunięty)',
+'rev-deleted-user' => '(nazwa użytkownika usunięta)',
+'rev-deleted-event' => '(wpis usunięty)',
+'rev-deleted-user-contribs' => '[nazwa użytkownika lub adres IP usunięte – edycja ukryta we wkładzie]',
+'rev-deleted-text-permission' => "Ta wersja strony została '''usunięta'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
+'rev-deleted-text-unhide' => "Ta wersja strony została '''usunięta'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].
+Jako administrator możesz [$1 obejrzeć tę wersję].",
+'rev-suppressed-text-unhide' => "Ta wersja strony została '''utajniona'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejestrze utajniania].
+Jako administrator możesz [$1 obejrzeć tę wersję].",
+'rev-deleted-text-view' => "Ta wersja strony została '''usunięta'''.
+Jako administrator możesz ją obejrzeć. Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
+'rev-suppressed-text-view' => "Ta wersja strony została '''utajniona'''.
+Jako administrator możesz ją obejrzeć. Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejestrze utajniania].",
+'rev-deleted-no-diff' => "Nie możesz zobaczyć porównania wersji, ponieważ jedna z nich została '''usunięta'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
+'rev-suppressed-no-diff' => "Nie można wyświetlić różnic, ponieważ jedna z wersji została '''usunięta'''.",
+'rev-deleted-unhide-diff' => "Jedna z wersji tej strony została '''usunięta'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].
+Jako administrator możesz [$1 obejrzeć porównanie wersji].",
+'rev-suppressed-unhide-diff' => "Jedna z porównywanych wersji została '''ukryta'''.
+Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejestrze ukrywania].
+Ponieważ jesteś administratorem możesz [$1 obejrzeć to porównanie wersji].",
+'rev-deleted-diff-view' => "Jedna z wersji użytych w porównaniu została '''usunięta'''.
+Jako administrator możesz zobaczyć porównanie. Szczegóły mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
+'rev-suppressed-diff-view' => "Jedna z wersji użytych w porównaniu została '''ukryta'''.
+Jako administrator możesz zobaczyć porównanie. Szczegóły mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze ukrywania].",
+'rev-delundel' => 'pokaż/ukryj',
+'rev-showdeleted' => 'pokaż',
+'revisiondelete' => 'Usuń/przywróć wersje',
+'revdelete-nooldid-title' => 'Nieprawidłowa wersja do przeprowadzenia operacji',
+'revdelete-nooldid-text' => 'Nie wybrano wersji, na których ma zostać wykonana ta operacja,
wybrana wersja nie istnieje lub próbowano ukryć wersję bieżącą.',
-'revdelete-nologtype-title' => 'Brak typu rejestru',
-'revdelete-nologtype-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} rodzaju rejestru do przeprowadzenia tej operacji.',
-'revdelete-toomanytargets-title' => 'Zbyt wiele obiektów',
-'revdelete-toomanytargets-text' => 'Wskazałeś zbyt wiele rodzajów obiektów aby przeprowadzić tę operację.',
-'revdelete-nologid-title' => 'Nieprawidłowy wpis w rejestrze',
-'revdelete-nologid-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} wpisu w rejestrze do przeprowadzenia operacji albo wybrany wpis nie istnieje.',
-'revdelete-selected' => "'''{{PLURAL:$2|Zaznaczona wersja|Zaznaczone wersje}} strony [[:$1]]:'''",
-'logdelete-selected' => "'''Zaznaczone {{PLURAL:$1|zdarzenie|zdarzenia}} z rejestru:'''",
-'revdelete-text' => "'''Usunięte wersje i czynności będą nadal widoczne w historii strony i rejestrach, ale ich treść nie będzie publicznie dostępna.'''
-
-Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do ukrytych treści oraz będą mogli je odtworzyć używając standardowych mechanizmów, chyba że operator serwisu nałożył dodatkowe ograniczenia.
-
-Potwierdź, że jesteś pewien tego co robisz, rozumiesz konsekwencje oraz, że działasz zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]].",
-'revdelete-suppress-text' => "Ukrywanie powinno być używane '''wyłącznie''' w sytuacji:
+'revdelete-nologtype-title' => 'Brak typu rejestru',
+'revdelete-nologtype-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} rodzaju rejestru do przeprowadzenia tej operacji.',
+'revdelete-nologid-title' => 'Nieprawidłowy wpis w rejestrze',
+'revdelete-nologid-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} wpisu w rejestrze do przeprowadzenia operacji albo wybrany wpis nie istnieje.',
+'revdelete-no-file' => 'Wybrany plik nie istnieje.',
+'revdelete-show-file-confirm' => 'Czy jesteś pewien, że chcesz zobaczyć usuniętą wersję pliku „<nowiki>$1</nowiki>” z $2 o $3?',
+'revdelete-show-file-submit' => 'Tak',
+'revdelete-selected' => "'''{{PLURAL:$2|Zaznaczona wersja|Zaznaczone wersje}} strony [[:$1]]:'''",
+'logdelete-selected' => "'''Zaznaczone {{PLURAL:$1|zdarzenie|zdarzenia}} z rejestru:'''",
+'revdelete-text' => "'''Usunięte wersje i czynności będą nadal widoczne w historii strony i rejestrach, ale ich treść nie będzie publicznie dostępna.'''
+Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do ukrytych treści oraz będą mogli je odtworzyć używając standardowych mechanizmów, chyba że nałożono dodatkowe ograniczenia.",
+'revdelete-confirm' => 'Potwierdzić, że chcesz to zrobić, rozumiesz konsekwencje oraz że robisz to zgodnie z [[{{MediaWiki:Policy-url}}|zasadami]].',
+'revdelete-suppress-text' => "Ukrywanie powinno być używane '''wyłącznie''' w sytuacji:
* Ujawnienie danych osobowych
*: ''adres domowy, numer telefonu, numer PESEL itp''",
-'revdelete-legend' => 'Ustaw ograniczenia widoczności',
-'revdelete-hide-text' => 'Ukryj tekst wersji',
-'revdelete-hide-name' => 'Ukryj akcję i cel',
-'revdelete-hide-comment' => 'Ukryj komentarz edycji',
-'revdelete-hide-user' => 'Ukryj nazwę użytkownika/adres IP',
-'revdelete-hide-restricted' => 'Ukryj informacje przed administratorami tak samo jak przed innymi',
-'revdelete-suppress' => 'Utajnij informacje przed administratorami, tak samo jak przed innymi',
-'revdelete-hide-image' => 'Ukryj zawartość pliku',
-'revdelete-unsuppress' => 'Wyłącz utajnianie dla odtwarzanej historii zmian',
-'revdelete-log' => 'Powód',
-'revdelete-submit' => 'Zaakceptuj dla wybranych wersji',
-'revdelete-logentry' => 'zmienił widoczność wersji w [[$1]]',
-'logdelete-logentry' => 'zmienił widoczność zdarzenia dla [[$1]]',
-'revdelete-success' => "'''Uaktualniono widoczność wersji.'''",
-'logdelete-success' => "'''Zmieniono widoczność zdarzeń.'''",
-'revdel-restore' => 'zmień widoczność',
-'pagehist' => 'Historia edycji strony',
-'deletedhist' => 'Usunięta historia edycji',
-'revdelete-content' => 'zawartość',
-'revdelete-summary' => 'opis zmian',
-'revdelete-uname' => 'nazwę użytkownika',
-'revdelete-restricted' => 'ustaw ograniczenia dla administratorów',
-'revdelete-unrestricted' => 'usuń ograniczenia dla administratorów',
-'revdelete-hid' => 'ukryj $1',
-'revdelete-unhid' => 'nie ukrywaj $1',
-'revdelete-log-message' => '$1 – $2 {{PLURAL:$2|wersja|wersje|wersji}}',
-'logdelete-log-message' => '$1 – $2 {{PLURAL:$2|zdarzenie|zdarzenia|zdarzeń}}',
+'revdelete-legend' => 'Ustaw ograniczenia widoczności',
+'revdelete-hide-text' => 'Ukryj tekst wersji',
+'revdelete-hide-image' => 'Ukryj zawartość pliku',
+'revdelete-hide-name' => 'Ukryj akcję i cel',
+'revdelete-hide-comment' => 'Ukryj komentarz edycji',
+'revdelete-hide-user' => 'Ukryj nazwę użytkownika/adres IP',
+'revdelete-hide-restricted' => 'Ukryj informacje przed administratorami tak samo jak przed innymi',
+'revdelete-radio-same' => '(bez zmian)',
+'revdelete-radio-set' => 'Tak',
+'revdelete-radio-unset' => 'Nie',
+'revdelete-suppress' => 'Utajnij informacje przed administratorami, tak samo jak przed innymi',
+'revdelete-unsuppress' => 'Wyłącz utajnianie dla odtwarzanej historii zmian',
+'revdelete-log' => 'Powód',
+'revdelete-submit' => 'Zaakceptuj dla {{PLURAL:$1|wybranej|wybranych}} wersji',
+'revdelete-logentry' => 'zmienił widoczność wersji w [[$1]]',
+'logdelete-logentry' => 'zmienił widoczność zdarzenia dla [[$1]]',
+'revdelete-success' => "'''Uaktualniono widoczność wersji.'''",
+'revdelete-failure' => "'''Widoczność wersji nie może zostać uaktualniona – '''
+$1",
+'logdelete-success' => "'''Zmieniono widoczność zdarzeń.'''",
+'logdelete-failure' => "'''Widoczność rejestru nie może zostać ustawiona – '''
+$1",
+'revdel-restore' => 'zmień widoczność',
+'pagehist' => 'Historia edycji strony',
+'deletedhist' => 'Usunięta historia edycji',
+'revdelete-content' => 'zawartość',
+'revdelete-summary' => 'opis zmian',
+'revdelete-uname' => 'nazwę użytkownika',
+'revdelete-restricted' => 'ustaw ograniczenia dla administratorów',
+'revdelete-unrestricted' => 'usuń ograniczenia dla administratorów',
+'revdelete-hid' => 'ukryj $1',
+'revdelete-unhid' => 'nie ukrywaj $1',
+'revdelete-log-message' => '$1 – $2 {{PLURAL:$2|wersja|wersje|wersji}}',
+'logdelete-log-message' => '$1 – $2 {{PLURAL:$2|zdarzenie|zdarzenia|zdarzeń}}',
+'revdelete-hide-current' => 'Wystąpił błąd przy ukrywaniu wersji datowanej na $2, $1. To jest najnowsza wersja strony, która nie może zostać ukryta.',
+'revdelete-show-no-access' => 'Wystąpił błąd przy próbie wyświetlenia elementu datowanego na $2, $1. Widoczność tego elementu została ograniczona – nie masz prawa dostępu do niego.',
+'revdelete-modify-no-access' => 'Wystąpił błąd przy próbie modyfikacji elementu datowanego na $2, $1. Widoczność tego elementu została ograniczona – nie masz prawa dostępu do niego.',
+'revdelete-modify-missing' => 'Wystąpił błąd przy próbie modyfikacji elementu o ID $1 – brakuje go w bazie danych!',
+'revdelete-no-change' => "'''Uwaga:''' element datowany na $2, $1 posiada już wskazane ustawienia widoczności.",
+'revdelete-concurrent-change' => 'Wystąpił błąd przy próbie modyfikacji elementu datowanego na $2, $1. Prawdopodobnie w międzyczasie ktoś zdążył zmienić ustawienia widoczności tego elementu.
+Proszę sprawdzić rejestr operacji.',
+'revdelete-only-restricted' => 'Nie można ukryć elementu z $2, $1 przed administratorami bez określenia jednej z pozostałych opcji ukrywania.',
+'revdelete-reason-dropdown' => '* Najczęstsze powody usunięcia
+** Naruszenie praw autorskich
+** Informacja naruszająca prywatność',
+'revdelete-otherreason' => 'Inny lub dodatkowy powód:',
+'revdelete-reasonotherlist' => 'Inny powód',
+'revdelete-edit-reasonlist' => 'Edycja listy powodów usunięcia pliku',
+'revdelete-offender' => 'Autor wersji',
# Suppression log
'suppressionlog' => 'Rejestr utajniania',
@@ -1068,67 +1137,13 @@ Użycie linków nawigacyjnych kasuje wybór w kolumnie.',
'mergelogpagetext' => 'Poniżej znajduje się lista ostatnich scaleń historii zmian stron.',
# Diffs
-'history-title' => 'Historia edycji „$1”',
-'difference' => '(Różnice między wersjami)',
-'lineno' => 'Linia $1:',
-'compareselectedversions' => 'porównaj wybrane wersje',
-'visualcomparison' => 'Porównanie treści',
-'wikicodecomparison' => 'Porównanie wikitekstu',
-'editundo' => 'anuluj edycję',
-'diff-multi' => '(Nie pokazano $1 {{PLURAL:$1|wersji|wersji}} pomiędzy niniejszymi.)',
-'diff-movedto' => 'przeniesiono do $1',
-'diff-styleadded' => 'dodano styl: $1',
-'diff-added' => 'dodano $1',
-'diff-changedto' => 'zmieniono na $1',
-'diff-movedoutof' => 'przeniesione z $1',
-'diff-styleremoved' => 'usunięto styl: $1',
-'diff-removed' => 'usunięto $1',
-'diff-changedfrom' => 'zmieniono z $1',
-'diff-src' => 'źródło',
-'diff-withdestination' => 'z przeznaczeniem $1',
-'diff-with' => '&#32;z $1 $2',
-'diff-with-final' => '&#32;oraz $1 $2',
-'diff-width' => 'szerokość',
-'diff-height' => 'wysokość',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''cytat'''",
-'diff-h1' => "'''nagłówek (poziom 1)'''",
-'diff-h2' => "'''nagłówek (poziom 2)'''",
-'diff-h3' => "'''nagłówek (poziom 3)'''",
-'diff-h4' => "'''nagłówek (poziom 4)'''",
-'diff-h5' => "'''nagłówek (poziom 5)'''",
-'diff-pre' => "'''tekst preformatowany'''",
-'diff-div' => "'''element „div”'''",
-'diff-ul' => "'''lista nieuporządkowana'''",
-'diff-ol' => "'''lista uporządkowana'''",
-'diff-li' => "'''element listy'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''zawartość tabeli'''",
-'diff-tr' => "'''wiersz'''",
-'diff-td' => "'''komórka'''",
-'diff-th' => "'''nagłówek'''",
-'diff-br' => "'''złamanie wiersza'''",
-'diff-hr' => "'''linia pozioma'''",
-'diff-code' => "'''blok kodu'''",
-'diff-dl' => "'''lista definicji'''",
-'diff-dt' => "'''termin w definicji'''",
-'diff-dd' => "'''definicja'''",
-'diff-input' => "'''pole formularza'''",
-'diff-form' => "'''formularz'''",
-'diff-img' => "'''grafika'''",
-'diff-span' => "'''element „span”'''",
-'diff-a' => "'''link'''",
-'diff-i' => "'''kursywa'''",
-'diff-b' => "'''pogrubienie'''",
-'diff-strong' => "'''silne wyróżnienie'''",
-'diff-em' => "'''wyróżnienie (emfaza)'''",
-'diff-font' => "'''czcionka'''",
-'diff-big' => "'''pogrubienie'''",
-'diff-del' => "'''usunięcie tekstu'''",
-'diff-tt' => "'''czcionka maszynowa'''",
-'diff-sub' => "'''indeks dolny'''",
-'diff-sup' => "'''indeks górny'''",
-'diff-strike' => "'''przekreślenie'''",
+'history-title' => 'Historia edycji „$1”',
+'difference' => '(Różnice między wersjami)',
+'lineno' => 'Linia $1:',
+'compareselectedversions' => 'porównaj wybrane wersje',
+'showhideselectedversions' => 'Pokaż lub ukryj zaznaczone wersje',
+'editundo' => 'anuluj edycję',
+'diff-multi' => '(Nie pokazano $1 {{PLURAL:$1|wersji|wersji}} pomiędzy niniejszymi.)',
# Search results
'searchresults' => 'Wyniki wyszukiwania',
@@ -1136,9 +1151,6 @@ Użycie linków nawigacyjnych kasuje wybór w kolumnie.',
'searchresulttext' => 'Więcej informacji o przeszukiwaniu {{GRAMMAR:D.lp|{{SITENAME}}}} odnajdziesz na [[{{MediaWiki:Helppage}}|stronach pomocy]].',
'searchsubtitle' => "Wyniki dla zapytania '''[[:$1]]''' ([[Special:Prefixindex/$1|strony zaczynające się od „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|strony, które linkują do „$1”]])",
'searchsubtitleinvalid' => "Dla zapytania '''$1'''",
-'noexactmatch' => "'''Brak strony zatytułowanej „$1”.'''
-Możesz [[:$1|utworzyć tę stronę]].",
-'noexactmatch-nocreate' => "'''Brak strony „$1”.'''",
'toomanymatches' => 'Zbyt wiele elementów pasujących do wzorca, spróbuj innego zapytania',
'titlematches' => 'Znaleziono w tytułach',
'notitlematches' => 'Nie znaleziono w tytułach',
@@ -1149,16 +1161,15 @@ Możesz [[:$1|utworzyć tę stronę]].",
'prevn-title' => '{{PLURAL:$1|Poprzedni|Poprzednie}} $1 {{PLURAL:$1|wynik|wyniki|wyników}}',
'nextn-title' => '{{PLURAL:$1|Następny|Następne}} $1 {{PLURAL:$1|wynik|wyniki|wyników}}',
'shown-title' => 'Pokaż po $1 {{PLURAL:$1|wyniku|wyniki|wyników}} na stronę',
-'viewprevnext' => 'Zobacz ($1) ($2) ($3)',
+'viewprevnext' => 'Zobacz ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opcje wyszukiwania',
'searchmenu-exists' => "* Strona '''[[$1]]'''",
'searchmenu-new' => "'''Utwórz stronę „[[:$1|$1]]” na tej wiki.'''",
'searchhelp-url' => 'Help:Spis treści',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglądaj strony zaczynające się od tego przedrostka]]',
'searchprofile-articles' => 'Strony',
-'searchprofile-articles-and-proj' => 'Wszystkie strony projektu',
-'searchprofile-project' => 'Strony spoza głównej przestrzeni nazw',
-'searchprofile-images' => 'Pliki',
+'searchprofile-project' => 'Strony pomocy i projektu',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Wszystko',
'searchprofile-advanced' => 'Zaawansowane',
'searchprofile-articles-tooltip' => 'Szukanie w przestrzeni nazw $1',
@@ -1166,8 +1177,6 @@ Możesz [[:$1|utworzyć tę stronę]].",
'searchprofile-images-tooltip' => 'Szukanie plików',
'searchprofile-everything-tooltip' => 'Szukanie w całej zawartości (także strony dyskusji)',
'searchprofile-advanced-tooltip' => 'Szukanie w wybranych przestrzeniach nazw',
-'prefs-search-nsdefault' => 'Domyślnie przeszukuj w przestrzeniach nazw:',
-'prefs-search-nscustom' => 'Przeszukuj w wybranych przestrzeniach nazw:',
'search-result-size' => '$1 ({{PLURAL:$2|1 słowo|$2 słowa|$2 słów}})',
'search-result-score' => 'Trafność: $1%',
'search-redirect' => '(przekierowanie $1)',
@@ -1180,11 +1189,12 @@ Możesz [[:$1|utworzyć tę stronę]].",
'search-mwsuggest-disabled' => 'bez dynamicznych propozycji',
'search-relatedarticle' => 'Pokrewne',
'mwsuggest-disable' => 'Wyłącz dynamiczne podpowiedzi',
+'searcheverything-enable' => 'Szukaj we wszystkich przestrzeniach nazw',
'searchrelated' => 'pokrewne',
'searchall' => 'wszystkie',
'showingresults' => "Poniżej znajduje się lista {{PLURAL:$1|z '''1''' wynikiem|'''$1''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
'showingresultsnum' => "Poniżej znajduje się lista {{PLURAL:$3|z '''1''' wynikiem|'''$3''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
-'showingresultstotal' => "Poniżej {{PLURAL:$4|znajduje się wynik wyszukania numer '''$1''' z '''$3'''|znajdują się wyniki wyszukiwania '''$1 – $2''', z ogólnej liczby '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Wynik '''$1''' z '''$3'''|Wyniki '''$1 – $2''' z '''$3'''}} dla '''$4'''",
'nonefound' => "'''Uwaga''': Domyślnie przeszukiwane są wyłącznie niektóre przestrzenie nazw. Spróbuj poprzedzić wyszukiwaną frazę przedrostkiem ''all:'', co spowoduje przeszukanie całej zawartości {{GRAMMAR:D.lp|{{SITENAME}}}} (włącznie ze stronami dyskusji, szablonami itp) lub spróbuj użyć jako przedrostka wybranej, jednej przestrzeni nazw.",
'search-nonefound' => 'Brak wyników spełniających kryteria podane w zapytaniu.',
'powersearch' => 'Szukaj',
@@ -1192,115 +1202,152 @@ Możesz [[:$1|utworzyć tę stronę]].",
'powersearch-ns' => 'Przeszukaj przestrzenie nazw:',
'powersearch-redir' => 'Pokaż przekierowania',
'powersearch-field' => 'Szukaj',
+'powersearch-togglelabel' => 'Zaznacz',
+'powersearch-toggleall' => 'wszystko',
+'powersearch-togglenone' => 'nic',
'search-external' => 'Wyszukiwanie zewnętrzne',
'searchdisabled' => 'Wyszukiwanie w {{GRAMMAR:MS.lp|{{SITENAME}}}} zostało wyłączone.
W międzyczasie możesz skorzystać z wyszukiwania Google.
Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google nieaktualne.',
+# Quickbar
+'qbsettings' => 'Pasek szybkiego dostępu',
+'qbsettings-none' => 'Brak',
+'qbsettings-fixedleft' => 'Stały, z lewej',
+'qbsettings-fixedright' => 'Stały, z prawej',
+'qbsettings-floatingleft' => 'Unoszący się, z lewej',
+'qbsettings-floatingright' => 'Unoszący się, z prawej',
+
# Preferences page
-'preferences' => 'Preferencje',
-'mypreferences' => 'Preferencje',
-'prefs-edits' => 'Liczba edycji',
-'prefsnologin' => 'Nie jesteś zalogowany',
-'prefsnologintext' => 'Musisz się <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} zalogować]</span> przed zmianą swoich preferencji.',
-'prefsreset' => 'Preferencje domyślne zostały odtworzone.',
-'qbsettings' => 'Pasek szybkiego dostępu',
-'qbsettings-none' => 'Brak',
-'qbsettings-fixedleft' => 'Stały, z lewej',
-'qbsettings-fixedright' => 'Stały, z prawej',
-'qbsettings-floatingleft' => 'Unoszący się, z lewej',
-'qbsettings-floatingright' => 'Unoszący się, z prawej',
-'changepassword' => 'Zmiana hasła',
-'skin' => 'Skórka',
-'skin-preview' => 'podgląd',
-'math' => 'Wzory',
-'dateformat' => 'Format daty',
-'datedefault' => 'Domyślny',
-'datetime' => 'Data i czas',
-'math_failure' => 'Parser nie mógł rozpoznać',
-'math_unknown_error' => 'nieznany błąd',
-'math_unknown_function' => 'nieznana funkcja',
-'math_lexing_error' => 'błędna nazwa',
-'math_syntax_error' => 'błąd składni',
-'math_image_error' => 'Konwersja do formatu PNG nie powiodła się.
-Sprawdź, czy poprawnie zainstalowane są latex, dvips, gs i convert.',
-'math_bad_tmpdir' => 'Nie można utworzyć lub zapisywać w tymczasowym katalogu dla wzorów matematycznych',
-'math_bad_output' => 'Nie można utworzyć lub zapisywać w wyjściowym katalogu dla wzorów matematycznych',
-'math_notexvc' => 'Brak programu texvc.
-Zapoznaj się z math/README w celu konfiguracji.',
-'prefs-personal' => 'Dane użytkownika',
-'prefs-rc' => 'Ostatnie zmiany',
-'prefs-watchlist' => 'Obserwowane',
-'prefs-watchlist-days' => 'Liczba dni widocznych na liście obserwowanych',
-'prefs-watchlist-days-max' => '(maksimum 7 dni)',
-'prefs-watchlist-edits' => 'Liczba edycji pokazywanych w rozszerzonej liście obserwowanych',
-'prefs-watchlist-edits-max' => '(maksymalna liczba: 1000)',
-'prefs-misc' => 'Ustawienia różne',
-'prefs-resetpass' => 'Zmień hasło',
-'saveprefs' => 'Zapisz',
-'resetprefs' => 'Cofnij niezapisane zmiany',
-'restoreprefs' => 'Przywróć wszystkie domyślne preferencje',
-'textboxsize' => 'Edytowanie',
-'prefs-edit-boxsize' => 'Rozmiar okna edycji.',
-'rows' => 'Wiersze',
-'columns' => 'Kolumny',
-'searchresultshead' => 'Wyszukiwanie',
-'resultsperpage' => 'Liczba wyników na stronie',
-'contextlines' => 'Pierwsze wiersze stron',
-'contextchars' => 'Litery kontekstu w linijce',
-'stub-threshold' => 'Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href="#" class="stub">zalążek (stub)</a>',
-'recentchangesdays' => 'Liczba dni prezentowanych w ostatnich zmianach',
-'recentchangesdays-max' => '(maksymalnie $1 {{PLURAL:$1|dzień|dni}})',
-'recentchangescount' => 'Domyślna liczba pozycji wyświetlanych na liście ostatnich zmian, w historii stron i na stronach rejestrów',
-'savedprefs' => 'Twoje preferencje zostały zapisane.',
-'timezonelegend' => 'Strefa czasowa',
-'timezonetext' => '¹Liczba godzin różnicy między Twoim czasem lokalnym, a czasem uniwersalnym (UTC).',
-'localtime' => 'Czas lokalny',
-'timezoneselect' => 'Strefa czasowa',
-'timezoneuseserverdefault' => 'Użyj domyślnego czasu serwera',
-'timezoneuseoffset' => 'Inna (określ różnicę czasu)',
-'timezoneoffset' => 'Różnica¹',
-'servertime' => 'Czas serwera',
-'guesstimezone' => 'Pobierz z przeglądarki',
-'timezoneregion-africa' => 'Afryka',
-'timezoneregion-america' => 'Ameryka',
-'timezoneregion-antarctica' => 'Antarktyda',
-'timezoneregion-arctic' => 'Arktyka',
-'timezoneregion-asia' => 'Azja',
-'timezoneregion-atlantic' => 'Ocean Atlantycki',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ocean Indyjski',
-'timezoneregion-pacific' => 'Ocean Spokojny',
-'allowemail' => 'Zgadzam się, by inni użytkownicy mogli przesyłać do mnie e‐maile',
-'prefs-searchoptions' => 'Opcje wyszukiwania',
-'prefs-namespaces' => 'Przestrzenie nazw',
-'defaultns' => 'Domyślnie przeszukuj przestrzenie nazw',
-'default' => 'domyślnie',
-'files' => 'Pliki',
-'prefs-custom-css' => 'własny CSS',
-'prefs-custom-js' => 'własny JavaScript',
+'preferences' => 'Preferencje',
+'mypreferences' => 'Preferencje',
+'prefs-edits' => 'Liczba edycji',
+'prefsnologin' => 'Nie jesteś zalogowany',
+'prefsnologintext' => 'Musisz się <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalogować]</span> przed zmianą swoich preferencji.',
+'changepassword' => 'Zmiana hasła',
+'prefs-skin' => 'Skórka',
+'skin-preview' => 'podgląd',
+'prefs-math' => 'Wzory',
+'datedefault' => 'Domyślny',
+'prefs-datetime' => 'Data i czas',
+'prefs-personal' => 'Dane użytkownika',
+'prefs-rc' => 'Ostatnie zmiany',
+'prefs-watchlist' => 'Obserwowane',
+'prefs-watchlist-days' => 'Liczba dni widocznych na liście obserwowanych',
+'prefs-watchlist-days-max' => '(maksimum 7 dni)',
+'prefs-watchlist-edits' => 'Liczba edycji pokazywanych w rozszerzonej liście obserwowanych',
+'prefs-watchlist-edits-max' => '(maksymalna liczba: 1000)',
+'prefs-watchlist-token' => 'Identyfikator listy obserwowanych',
+'prefs-misc' => 'Ustawienia różne',
+'prefs-resetpass' => 'Zmień hasło',
+'prefs-email' => 'E‐mail',
+'prefs-rendering' => 'Wygląd',
+'saveprefs' => 'Zapisz',
+'resetprefs' => 'Cofnij niezapisane zmiany',
+'restoreprefs' => 'Przywróć wszystkie domyślne preferencje',
+'prefs-editing' => 'Edycja',
+'prefs-edit-boxsize' => 'Rozmiar okna edycji.',
+'rows' => 'Wiersze',
+'columns' => 'Kolumny',
+'searchresultshead' => 'Wyszukiwanie',
+'resultsperpage' => 'Liczba wyników na stronie',
+'contextlines' => 'Pierwsze wiersze stron',
+'contextchars' => 'Litery kontekstu w linijce',
+'stub-threshold' => 'Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href="#" class="stub">zalążek (stub)</a>',
+'recentchangesdays' => 'Liczba dni prezentowanych w ostatnich zmianach',
+'recentchangesdays-max' => '(maksymalnie $1 {{PLURAL:$1|dzień|dni}})',
+'recentchangescount' => 'Domyślna liczba wyświetlanych edycji',
+'prefs-help-recentchangescount' => 'Uwzględnia ostatnie zmiany, historię stron i rejestry.',
+'prefs-help-watchlist-token' => 'Wypełnianie tego pola tajnym kluczem spowoduje wygenerowanie RSS dla Twojej listy obserwowanych.
+Każdy znający ten klucz będzie mógł zobaczyć listę obserwowanych, należy więc wybrać bezpieczną wartość.
+Wygenerowany losowo klucz, którego możesz użyć to $1',
+'savedprefs' => 'Twoje preferencje zostały zapisane.',
+'timezonelegend' => 'Strefa czasowa',
+'localtime' => 'Czas lokalny',
+'timezoneuseserverdefault' => 'Użyj domyślnego czasu serwera',
+'timezoneuseoffset' => 'Inna (określ różnicę czasu)',
+'timezoneoffset' => 'Różnica¹',
+'servertime' => 'Czas serwera',
+'guesstimezone' => 'Pobierz z przeglądarki',
+'timezoneregion-africa' => 'Afryka',
+'timezoneregion-america' => 'Ameryka',
+'timezoneregion-antarctica' => 'Antarktyda',
+'timezoneregion-arctic' => 'Arktyka',
+'timezoneregion-asia' => 'Azja',
+'timezoneregion-atlantic' => 'Ocean Atlantycki',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Ocean Indyjski',
+'timezoneregion-pacific' => 'Ocean Spokojny',
+'allowemail' => 'Zgadzam się, by inni użytkownicy mogli przesyłać do mnie e‐maile',
+'prefs-searchoptions' => 'Opcje wyszukiwania',
+'prefs-namespaces' => 'Przestrzenie nazw',
+'defaultns' => 'Albo przeszukuj przestrzenie nazw:',
+'default' => 'domyślnie',
+'prefs-files' => 'Pliki',
+'prefs-custom-css' => 'własny CSS',
+'prefs-custom-js' => 'własny JavaScript',
+'prefs-reset-intro' => 'Na tej stronie można przywrócić domyślne ustawienia preferencji dla tej witryny.
+Tej operacji nie można później cofnąć.',
+'prefs-emailconfirm-label' => 'Potwierdzenie adresu e‐mail –',
+'prefs-textboxsize' => 'Rozmiar okna edycji',
+'youremail' => 'Twój adres e‐mail',
+'username' => 'Nazwa użytkownika',
+'uid' => 'ID użytkownika',
+'prefs-memberingroups' => 'Należy do {{PLURAL:$1|grupy|grup:}}',
+'prefs-registration' => 'Moment rejestracji',
+'yourrealname' => 'Imię i nazwisko',
+'yourlanguage' => 'Język interfejsu',
+'yourvariant' => 'Wariant',
+'yournick' => 'Twój podpis',
+'prefs-help-signature' => 'Wypowiedzi na stronach dyskusji powinny być podpisywane za pomocą „<nowiki>~~~~</nowiki>”, dzięki temu automatycznie wstawiany jest Twój podpis wraz z bieżącą datą.',
+'badsig' => 'Nieprawidłowy podpis, sprawdź znaczniki HTML.',
+'badsiglength' => 'Twój podpis jest zbyt długi.
+Dopuszczalna długość to $1 {{PLURAL:$1|znak|znaki|znaków}}.',
+'yourgender' => 'Płeć',
+'gender-unknown' => 'nie określono',
+'gender-male' => 'mężczyzna',
+'gender-female' => 'kobieta',
+'prefs-help-gender' => 'Podanie płci nie jest obowiązkowe. Jeśli zdecydujesz się ją określić, oprogramowanie dostosuje do niej interfejs. Informacja o Twojej płci będzie widoczna dla wszystkich.',
+'email' => 'E‐mail',
+'prefs-help-realname' => 'Wpisanie imienia i nazwiska nie jest obowiązkowe.
+Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.',
+'prefs-help-email' => "Podanie adresu e‐mail nie jest obowiązkowe, lecz pozwoli innym użytkownikom skontaktować się z Tobą poprzez odpowiedni formularz (bez ujawniania Twojego adresu). Będziesz także mógł poprosić o przysłanie Ci nowego hasła. '''Twój adres nie zostanie nikomu udostępniony.'''",
+'prefs-help-email-required' => 'Wymagany jest adres e‐mail.',
+'prefs-info' => 'Podstawowe informacje',
+'prefs-i18n' => 'Międzynarodowość',
+'prefs-signature' => 'Podpis',
+'prefs-dateformat' => 'Format daty',
+'prefs-timeoffset' => 'Różnica czasu',
+'prefs-advancedediting' => 'Zaawansowane',
+'prefs-advancedrc' => 'Zaawansowane',
+'prefs-advancedrendering' => 'Zaawansowane',
+'prefs-advancedsearchoptions' => 'Zaawansowane',
+'prefs-advancedwatchlist' => 'Zaawansowane',
+'prefs-display' => 'Opcje wyświetlania',
+'prefs-diffs' => 'Zmiany',
# User rights
-'userrights' => 'Zarządzaj uprawnieniami użytkowników', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Zarządzaj grupami użytkownika',
-'userrights-user-editname' => 'Wprowadź nazwę użytkownika',
-'editusergroup' => 'Edytuj grupy użytkownika',
-'editinguser' => "Zmiana uprawnień użytkownika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Edytuj grupy użytkownika',
-'saveusergroups' => 'Zapisz',
-'userrights-groupsmember' => 'Należy do:',
-'userrights-groups-help' => 'Możesz zmienić przynależność tego użytkownika do podanych grup.
+'userrights' => 'Zarządzaj uprawnieniami użytkowników',
+'userrights-lookup-user' => 'Zarządzaj grupami użytkownika',
+'userrights-user-editname' => 'Wprowadź nazwę użytkownika',
+'editusergroup' => 'Edytuj grupy użytkownika',
+'editinguser' => "Zmiana uprawnień użytkownika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Edytuj grupy użytkownika',
+'saveusergroups' => 'Zapisz',
+'userrights-groupsmember' => 'Należy do:',
+'userrights-groupsmember-auto' => 'Na stałe należy do:',
+'userrights-groups-help' => 'Możesz zmienić przynależność tego użytkownika do podanych grup.
* Zaznaczone pole oznacza przynależność użytkownika do danej grupy.
* Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.
* Gwiazdka * informuje, że nie możesz usunąć z grupy po dodaniu do niej lub dodać po usunięciu z grupy.',
-'userrights-reason' => 'Powód',
-'userrights-no-interwiki' => 'Nie masz dostępu do edycji uprawnień na innych wiki.',
-'userrights-nodatabase' => 'Baza danych $1 nie istnieje lub nie jest lokalna.',
-'userrights-nologin' => 'Musisz [[Special:UserLogin|zalogować się]] na konto administratora, by nadawać uprawnienia użytkownikom.',
-'userrights-notallowed' => 'Nie masz dostępu do nadawania uprawnień użytkownikom.',
-'userrights-changeable-col' => 'Grupy, które możesz wybrać',
-'userrights-unchangeable-col' => 'Grupy, których nie możesz wybrać',
+'userrights-reason' => 'Powód',
+'userrights-no-interwiki' => 'Nie masz dostępu do edycji uprawnień na innych wiki.',
+'userrights-nodatabase' => 'Baza danych $1 nie istnieje lub nie jest lokalna.',
+'userrights-nologin' => 'Musisz [[Special:UserLogin|zalogować się]] na konto administratora, by nadawać uprawnienia użytkownikom.',
+'userrights-notallowed' => 'Nie masz dostępu do nadawania uprawnień użytkownikom.',
+'userrights-changeable-col' => 'Grupy, które możesz wybrać',
+'userrights-unchangeable-col' => 'Grupy, których nie możesz wybrać',
# Groups
'group' => 'Grupa',
@@ -1353,6 +1400,7 @@ Zapoznaj się z math/README w celu konfiguracji.',
'right-bigdelete' => 'Usuwanie stron z długą historią edycji',
'right-deleterevision' => 'Usuwanie i odtwarzanie określonej wersji strony',
'right-deletedhistory' => 'Podgląd usuniętych wersji, bez przypisanego im tekstu',
+'right-deletedtext' => 'Podgląd usuniętego tekstu i zmian pomiędzy usuniętymi wersjami',
'right-browsearchive' => 'Przeszukiwanie usuniętych stron',
'right-undelete' => 'Odtwarzanie usuniętych stron',
'right-suppressrevision' => 'Podgląd i odtwarzanie wersji ukrytych przed Administratorami',
@@ -1366,6 +1414,8 @@ Zapoznaj się z math/README w celu konfiguracji.',
'right-editprotected' => 'Dostęp do edycji zabezpieczonych stron (bez zabezpieczenia dziedziczonego)',
'right-editinterface' => 'Edycja interfejsu użytkownika',
'right-editusercssjs' => 'Edycja plików CSS i JS innych użytkowników',
+'right-editusercss' => 'Edycja plików CSS innych użytkowników',
+'right-edituserjs' => 'Edycja plików JS innych użytkowników',
'right-rollback' => 'Szybkie cofnięcie edycji użytkownika, który jako ostatni edytował jakąś stronę',
'right-markbotedits' => 'Oznaczanie rewertu jako edycji bota',
'right-noratelimit' => 'Brak ograniczeń przepustowości',
@@ -1382,6 +1432,8 @@ Zapoznaj się z math/README w celu konfiguracji.',
'right-siteadmin' => 'Blokowanie i odblokowywanie bazy danych',
'right-reset-passwords' => 'Zerowanie haseł innych użytkowników',
'right-override-export-depth' => 'Eksport stron wraz z linkowanymi do głębokości 5 linków',
+'right-versiondetail' => 'Podgląd szczegółowych informacji o wersji oprogramowania',
+'right-sendemail' => 'Wysyłać e‐maile do innych użytkowników',
# User rights log
'rightslog' => 'Uprawnienia',
@@ -1431,6 +1483,15 @@ Zapoznaj się z math/README w celu konfiguracji.',
'recentchanges-legend' => 'Opcje ostatnich zmian',
'recentchangestext' => 'Ta strona przedstawia historię ostatnich zmian w tej wiki.',
'recentchanges-feed-description' => 'Obserwuj najświeższe zmiany w tej wiki.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 – nowa strona',
+'recentchanges-label-newpage' => 'W tej edycji utworzono nową stronę',
+'recentchanges-legend-minor' => '$1 – drobna zmiana',
+'recentchanges-label-minor' => 'W tej edycji dokonano drobnych zmian',
+'recentchanges-legend-bot' => '$1 – edycja bota',
+'recentchanges-label-bot' => 'Ta edycja została wykonana przez bota',
+'recentchanges-legend-unpatrolled' => '$1 – niesprawdzona edycja',
+'recentchanges-label-unpatrolled' => 'Ta edycja nie została jeszcze sprawdzona',
'rcnote' => "Poniżej {{PLURAL:$1|znajduje się '''1''' ostatnia zmiana wykonana|znajdują się ostatnie '''$1''' zmiany wykonane|znajduje się ostatnich '''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniego dnia|ostatnich '''$2''' dni}}, licząc od $5 dnia $4.",
'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
'rclistfrom' => 'Pokaż nowe zmiany od $1',
@@ -1457,6 +1518,8 @@ Zapoznaj się z math/README w celu konfiguracji.',
# Recent changes linked
'recentchangeslinked' => 'Zmiany w dolinkowanych',
+'recentchangeslinked-feed' => 'Zmiany w dolinkowanych',
+'recentchangeslinked-toolbox' => 'Zmiany w dolinkowanych',
'recentchangeslinked-title' => 'Zmiany w linkowanych z „$1”',
'recentchangeslinked-noresult' => 'Nie było żadnych zmian na (zależnie od ustawień) linkowanych lub linkujących stronach w wybranym okresie.',
'recentchangeslinked-summary' => "Poniżej znajduje się lista ostatnich zmian na stronach linkowanych z podanej strony (lub we wszystkich stronach należących do podanej kategorii).
@@ -1467,8 +1530,8 @@ Strony z [[Special:Watchlist|listy obserwowanych]] są '''wytłuszczone'''.",
# Upload
'upload' => 'Prześlij plik',
'uploadbtn' => 'Prześlij plik',
-'reupload' => 'Prześlij ponownie',
'reuploaddesc' => 'Przerwij wysyłanie i wróć do formularza wysyłki',
+'upload-tryagain' => 'Zapisz zmieniony opis pliku',
'uploadnologin' => 'Nie jesteś zalogowany',
'uploadnologintext' => 'Musisz się [[Special:UserLogin|zalogować]] przed przesłaniem plików.',
'upload_directory_missing' => 'Katalog dla przesyłanych plików ($1) nie istnieje i nie może zostać utworzony przez serwer WWW.',
@@ -1501,6 +1564,7 @@ Przejdź na stronę [[Special:NewFiles|galerii nowych plików]], by zobaczyć pl
'illegalfilename' => 'Nazwa pliku „$1” zawiera znaki niedozwolone w tytułach stron.
Zmień nazwę pliku i prześlij go ponownie.',
'badfilename' => 'Nazwa pliku została zmieniona na „$1”.',
+'filetype-mime-mismatch' => 'Rozszerzenie pliku nie pasuje do typu MIME.',
'filetype-badmime' => 'Przesyłanie plików z typem MIME „$1” jest niedozwolone.',
'filetype-bad-ie-mime' => 'Nie można załadować tego pliku, ponieważ Internet Explorer wykryje go jako „$1”, a taki typ pliku jest zabronioniony jako potencjalnie niebezpieczny.',
'filetype-unwanted-type' => "'''„.$1”''' nie jest zalecanym typem pliku. Pożądane są pliki w {{PLURAL:$3|formacie|formatach}} $2.",
@@ -1522,7 +1586,6 @@ Jeśli chcesz, by się tam pojawiły, musisz później, ręcznie przeredagować
* Nazwa przesyłanego pliku: '''<tt>[[:$1]]</tt>'''
* Nazwa istniejącego pliku: '''<tt>[[:$2]]</tt>'''
Wybierz inną nazwę.",
-'fileexists-thumb' => "<center>'''Istniejący plik'''</center>",
'fileexists-thumbnail-yes' => "Plik wydaje się być pomniejszoną grafiką ''(miniaturką)''. [[$1|thumb]]
Sprawdź plik '''<tt>[[:$1]]</tt>'''.
Jeśli wybrany plik jest tą samą grafiką co ta w rozmiarze pierwotnym, nie musisz przesyłać dodatkowej miniaturki.",
@@ -1537,6 +1600,7 @@ Cofnij się i załaduj plik pod inną nazwą. [[File:$1|thumb|center|$1]]',
'file-deleted-duplicate' => 'Identyczny do tego plik ([[$1]]) został wcześniej usunięty. Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
'successfulupload' => 'Przesłanie pliku powiodło się',
'uploadwarning' => 'Ostrzeżenie o przesyłaniu',
+'uploadwarning-text' => 'Zmień poniższy opis pliku i spróbuj ponownie.',
'savefile' => 'Zapisz plik',
'uploadedimage' => 'przesłał [[$1]]',
'overwroteimage' => 'przesłano nową wersję pliku „[[$1]]“',
@@ -1544,12 +1608,14 @@ Cofnij się i załaduj plik pod inną nazwą. [[File:$1|thumb|center|$1]]',
'uploaddisabledtext' => 'Możliwość przesyłania plików została wyłączona.',
'php-uploaddisabledtext' => 'Przesyłanie plików PHP zostało zablokowane. Sprawdź ustawienie „file_uploads”.',
'uploadscripted' => 'Plik zawiera kod HTML lub skrypt, który może zostać błędnie zinterpretowany przez przeglądarkę internetową.',
-'uploadcorrupt' => 'Plik jest uszkodzony lub ma nieprawidłowe rozszerzenie.
-Sprawdź plik i załaduj poprawną wersję.',
'uploadvirus' => 'W pliku jest wirus! Szczegóły: $1',
+'upload-source' => 'Plik źródłowy',
'sourcefilename' => 'Nazwa pierwotna',
+'sourceurl' => 'Źródłowy adres URL',
'destfilename' => 'Nazwa docelowa',
'upload-maxfilesize' => 'Wielkość pliku ograniczona jest do $1',
+'upload-description' => 'Opis pliku',
+'upload-options' => 'Opcje przesyłania',
'watchthisupload' => 'Obserwuj ten plik',
'filewasdeleted' => 'Plik o tej nazwie istniał, ale został usunięty.
Zanim załadujesz go ponownie, sprawdź $1.',
@@ -1574,15 +1640,45 @@ MGP # Pentax
PICT # wiele różnych
#</pre> <!-- nie modyfikuj tej linii -->',
-'upload-proto-error' => 'Nieprawidłowy protokół',
-'upload-proto-error-text' => 'Zdalne przesyłanie plików wymaga podania adresu URL zaczynającego się od <code>http://</code> lub <code>ftp://</code>.',
-'upload-file-error' => 'Błąd wewnętrzny',
-'upload-file-error-text' => 'Wystąpił błąd wewnętrzny podczas próby utworzenia tymczasowego pliku na serwerze.
+'upload-proto-error' => 'Nieprawidłowy protokół',
+'upload-proto-error-text' => 'Zdalne przesyłanie plików wymaga podania adresu URL zaczynającego się od <code>http://</code> lub <code>ftp://</code>.',
+'upload-file-error' => 'Błąd wewnętrzny',
+'upload-file-error-text' => 'Wystąpił błąd wewnętrzny podczas próby utworzenia tymczasowego pliku na serwerze.
Skontaktuj się z [[Special:ListUsers/sysop|administratorem systemu]].',
-'upload-misc-error' => 'Nieznany błąd przesyłania',
-'upload-misc-error-text' => 'Wystąpił nieznany błąd podczas przesyłania.
+'upload-misc-error' => 'Nieznany błąd przesyłania',
+'upload-misc-error-text' => 'Wystąpił nieznany błąd podczas przesyłania.
Sprawdź, czy podany adres URL jest poprawny i dostępny, a następnie spróbuj ponownie.
Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sysop|administratorem systemu]].',
+'upload-too-many-redirects' => 'URL zawiera zbyt wiele przekierowań',
+'upload-unknown-size' => 'Nieznany rozmiar',
+'upload-http-error' => 'Wystąpił błąd protokołu HTTP – $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Odmowa dostępu',
+'img-auth-nopathinfo' => 'Brak PATH_INFO.
+Serwer nie został skonfigurowany, tak aby przekazywał tę informację.
+Możliwe, że jest oparty na CGI i nie może obsługiwać img_auth.
+Zobacz http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Żądana ścieżka nie jest w obrębie katalogu skonfigurowanego do przesyłania plików.',
+'img-auth-badtitle' => 'Nie można wygenerować prawidłowego tytuł z „$1”.',
+'img-auth-nologinnWL' => 'Nie jesteś zalogowany, a „$1” nie jest na białej liście.',
+'img-auth-nofile' => 'Brak pliku „$1”.',
+'img-auth-isdir' => 'Próbujesz uzyskać dostęp do katalogu „$1”.
+Dozwolony jest wyłącznie dostęp do plików.',
+'img-auth-streaming' => 'Strumieniowanie „$1”.',
+'img-auth-public' => 'Funkcja img_auth.php służy do pobierania plików z prywatnej wiki.
+Ponieważ ta wiki została skonfigurowana jako publiczna dla zapewnienia optymalnego bezpieczeństwa img_auth.php została wyłączona.',
+'img-auth-noread' => 'Użytkownik nie ma dostępu do odczytu „$1”.',
+
+# HTTP errors
+'http-invalid-url' => 'Niepoprawny adres URL: $1',
+'http-invalid-scheme' => 'Adresy „$1“ nie są obsługiwane.',
+'http-request-error' => 'Nieudane żądanie HTTP ze względu na nieznany błąd.',
+'http-read-error' => 'Błąd odczytu HTTP.',
+'http-timed-out' => 'Przekroczony czas żądania HTTP.',
+'http-curl-error' => 'Błąd pobierania z adresu $1',
+'http-host-unreachable' => 'Adres jest nieosiągalny.',
+'http-bad-status' => 'Wystąpił problem z realizacją żądania HTTP $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Adres URL jest nieosiągalny',
@@ -1593,6 +1689,7 @@ Sprawdź, czy strona działa, odczekaj kilka minut i spróbuj ponownie.
Możesz także spróbować w czasie mniejszego obciążenia serwera.',
'license' => 'Licencja',
+'license-header' => 'Licencja',
'nolicense' => 'Nie wybrano',
'license-nopreview' => '(Podgląd niedostępny)',
'upload_source_url' => ' (poprawny, publicznie dostępny adres URL)',
@@ -1613,6 +1710,7 @@ Kliknięcie w nagłówek kolumny zmienia sposób sortowania.',
'listfiles_count' => 'Wersje',
# File description page
+'file-anchor-link' => 'Plik',
'filehist' => 'Historia pliku',
'filehist-help' => 'Kliknij na datę/czas, aby zobaczyć, jak plik wyglądał w tym czasie.',
'filehist-deleteall' => 'usuń wszystkie',
@@ -1627,6 +1725,7 @@ Kliknięcie w nagłówek kolumny zmienia sposób sortowania.',
'filehist-dimensions' => 'Wymiary',
'filehist-filesize' => 'Rozmiar pliku',
'filehist-comment' => 'Opis',
+'filehist-missing' => 'Brak pliku',
'imagelinks' => 'Odnośniki do pliku',
'linkstoimage' => '{{PLURAL:$1|Poniższa strona odwołuje|Następujące strony odwołują}} się do tego pliku:',
'linkstoimage-more' => 'Więcej niż $1 {{PLURAL:$1|strona linkuje|strony linkują|stron linkuje}} do tego pliku.
@@ -1636,15 +1735,16 @@ Dostępna jest też [[Special:WhatLinksHere/$2|pełna lista]].',
'morelinkstoimage' => 'Pokaż [[Special:WhatLinksHere/$1|więcej odnośników]] do tego pliku.',
'redirectstofile' => '{{PLURAL:$1|Następujący plik przekierowuje|Następujące pliki przekierowują}} do tego pliku:',
'duplicatesoffile' => '{{PLURAL:$1|Następujący plik jest kopią|Następujące pliki są kopiami}} pliku ([[Special:FileDuplicateSearch/$2|więcej informacji]]):',
-'sharedupload' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Więcej informacji odnajdziesz na $1.',
-'shareduploadwiki-desc' => 'Opis znajdujący się na $1 we współdzielonych zasobach możesz zobaczyć poniżej.',
-'shareduploadwiki-linktext' => 'stronie opisu pliku',
-'noimage' => 'Nie istnieje plik o tej nazwie. Możesz go $1.',
-'noimage-linktext' => 'przesłać',
+'sharedupload' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.',
+'sharedupload-desc-there' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.
+Więcej informacji odnajdziesz na [$2 stronie opisu pliku].',
+'sharedupload-desc-here' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.
+Poniżej znajdują się informacje ze [$2 strony opisu] tego pliku.',
+'filepage-nofile' => 'Plik tej nazwie nie istnieje.',
+'filepage-nofile-link' => 'Plik o tej nazwie nie istnieje, ale możesz go [$1 przesłać].',
'uploadnewversion-linktext' => 'Załaduj nowszą wersję tego pliku',
-'shared-repo-from' => 'z $1', # $1 is the repository name
-'shared-repo' => 'współdzielone zasoby', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'z $1',
+'shared-repo' => 'współdzielone zasoby',
# File reversion
'filerevert' => 'Przywracanie $1',
@@ -1673,6 +1773,7 @@ Dostępna jest też [[Special:WhatLinksHere/$2|pełna lista]].',
** Naruszenie praw autorskich
** Kopia już istniejącego pliku',
'filedelete-edit-reasonlist' => 'Edycja listy powodów usunięcia pliku',
+'filedelete-maintenance' => 'Usuwanie i odtwarzanie plików zostało tymczasowo wyłączone z powodu konserwacji.',
# MIME search
'mimesearch' => 'Wyszukiwanie MIME',
@@ -1695,7 +1796,7 @@ Sprawdź inne linki do szablonów, zanim usuniesz tę stronę.',
# Random page
'randompage' => 'Losowa strona',
-'randompage-nopages' => 'Brak jakichkolwiek stron w przestrzeni nazw „$1”.',
+'randompage-nopages' => 'Brak stron w {{PLURAL:$2|przestrzeni nazw|przestrzeniach nazw:}} $1.',
# Random redirect
'randomredirect' => 'Losowe przekierowanie',
@@ -1707,6 +1808,7 @@ Sprawdź inne linki do szablonów, zanim usuniesz tę stronę.',
'statistics-header-edits' => 'Statystyka edycji',
'statistics-header-views' => 'Statystyka odwiedzin',
'statistics-header-users' => 'Statystyka użytkowników',
+'statistics-header-hooks' => 'Inne statystyki',
'statistics-articles' => 'Strony',
'statistics-pages' => 'Strony',
'statistics-pages-desc' => 'Wszystkie strony na wiki, w tym strony dyskusji, przekierowania, itd.',
@@ -1736,8 +1838,8 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
'brokenredirects' => 'Zerwane przekierowania',
'brokenredirectstext' => 'Poniższe przekierowania wskazują na nieistniejące strony.',
-'brokenredirects-edit' => '(edytuj)',
-'brokenredirects-delete' => '(usuń)',
+'brokenredirects-edit' => 'edytuj',
+'brokenredirects-delete' => 'usuń',
'withoutinterwiki' => 'Strony bez odnośników do projektów w innych językach',
'withoutinterwiki-summary' => 'Poniższe strony nie odwołują się do innych wersji językowych.',
@@ -1844,16 +1946,17 @@ Możesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytko
# Special:Categories
'categories' => 'Kategorie',
-'categoriespagetext' => 'Strona przedstawia listę kategorii zawierających strony i pliki.
-[[Special:UnusedCategories|Nieużywane kategorie]] nie zostały tutaj pokazane.
-Zobacz też [[Special:WantedCategories|brakujące kategorie]].',
+'categoriespagetext' => 'Strona przedstawia {{PLURAL:$1|kategorię zawierającą|listę kategorii zawierających}} strony lub pliki.
+[[Special:UnusedCategories|Nieużywane kategorie]] zostały ukryte.
+Zobacz również [[Special:WantedCategories|brakujące kategorie]].',
'categoriesfrom' => 'Wyświetl kategorie, zaczynając od',
'special-categories-sort-count' => 'sortowanie według liczby',
'special-categories-sort-abc' => 'sortowanie alfabetyczne',
# Special:DeletedContributions
-'deletedcontributions' => 'Usunięty wkład użytkownika',
-'deletedcontributions-title' => 'Usunięty wkład użytkownika',
+'deletedcontributions' => 'Usunięty wkład użytkownika',
+'deletedcontributions-title' => 'Usunięty wkład użytkownika',
+'sp-deletedcontributions-contribs' => 'wkład',
# Special:LinkSearch
'linksearch' => 'Linki zewnętrzne',
@@ -1869,6 +1972,16 @@ Obsługiwane protokoły: <tt>$1</tt>',
'listusersfrom' => 'Pokaż użytkowników zaczynając od',
'listusers-submit' => 'Pokaż',
'listusers-noresult' => 'Nie znaleziono żadnego użytkownika.',
+'listusers-blocked' => '({{GENDER:$1|zablokowany|zablokowana|zablokowany}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista aktywnych użytkowników',
+'activeusers-intro' => 'Poniżej znajduje się lista użytkowników, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.',
+'activeusers-count' => 'w ciągu {{PLURAL:$3|ostatniego dnia|ostatnich $3 dni}} {{GENDER:$2|wykonał|wykonała|wykonał}} $1 {{PLURAL:$1|edycję|edycje|edycji}}',
+'activeusers-from' => 'Pokaż użytkowników zaczynając od',
+'activeusers-hidebots' => 'Ukryj boty',
+'activeusers-hidesysops' => 'Ukryj administratorów',
+'activeusers-noresult' => 'Nie odnaleziono żadnego użytkownika.',
# Special:Log/newusers
'newuserlogpage' => 'Nowi użytkownicy',
@@ -1879,17 +1992,23 @@ Obsługiwane protokoły: <tt>$1</tt>',
'newuserlog-autocreate-entry' => '– konto utworzone automatycznie',
# Special:ListGroupRights
-'listgrouprights' => 'Uprawnienia grup użytkowników',
-'listgrouprights-summary' => 'Poniżej znajduje się spis zdefiniowanych na tej wiki grup użytkowników, z wyszczególnieniem przydzielonych im uprawnień.
+'listgrouprights' => 'Uprawnienia grup użytkowników',
+'listgrouprights-summary' => 'Poniżej znajduje się spis zdefiniowanych na tej wiki grup użytkowników, z wyszczególnieniem przydzielonych im uprawnień.
Sprawdź stronę z [[{{MediaWiki:Listgrouprights-helppage}}|dodatkowymi informacjami]] o uprawnieniach.',
-'listgrouprights-group' => 'Grupa',
-'listgrouprights-rights' => 'Uprawnienia',
-'listgrouprights-helppage' => 'Help:Uprawnienia grup użytkowników',
-'listgrouprights-members' => '(lista członków grupy)',
-'listgrouprights-addgroup' => 'Możliwość dodawania do {{PLURAL:$2|grupy|grup:}} $1',
-'listgrouprights-removegroup' => 'Możliwość usuwania z {{PLURAL:$2|grupy|grup:}} $1',
-'listgrouprights-addgroup-all' => 'Możliwość dodania użytkownika do każdej grupy',
-'listgrouprights-removegroup-all' => 'Możliwość usunięcia użytkownika z każdej grupy',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Przyznane uprawnienie</span>
+* <span class="listgrouprights-revoked">Odebrane uprawnienie</span>',
+'listgrouprights-group' => 'Grupa',
+'listgrouprights-rights' => 'Uprawnienia',
+'listgrouprights-helppage' => 'Help:Uprawnienia grup użytkowników',
+'listgrouprights-members' => '(lista członków grupy)',
+'listgrouprights-addgroup' => 'Możliwość dodawania do {{PLURAL:$2|grupy|grup:}} $1',
+'listgrouprights-removegroup' => 'Możliwość usuwania z {{PLURAL:$2|grupy|grup:}} $1',
+'listgrouprights-addgroup-all' => 'Możliwość dodania użytkownika do każdej grupy',
+'listgrouprights-removegroup-all' => 'Możliwość usunięcia użytkownika z każdej grupy',
+'listgrouprights-addgroup-self' => 'Może dodać własne konto do {{PLURAL:$2|grupy|grup:}} $1',
+'listgrouprights-removegroup-self' => 'Możliwość usunięcia własnego konta z {{PLURAL:$2|grupy|grup:}} $1',
+'listgrouprights-addgroup-self-all' => 'Może dodać własne konto do wszystkich grup',
+'listgrouprights-removegroup-self-all' => 'Może usunąć własne konto ze wszystkich grup',
# E-mail user
'mailnologin' => 'Brak adresu',
@@ -1961,7 +2080,7 @@ Każda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie
'enotif_lastvisited' => 'Zobacz na stronie $1 wszystkie zmiany od Twojej ostatniej wizyty.',
'enotif_lastdiff' => 'Zobacz na stronie $1 tę zmianę.',
'enotif_anon_editor' => 'użytkownik anonimowy $1',
-'enotif_body' => 'Drogi (droga) $WATCHINGUSERNAME,
+'enotif_body' => 'Szanowny $WATCHINGUSERNAME,
strona $PAGETITLE w {{GRAMMAR:MS.lp|{{SITENAME}}}} została $CHANGEDORCREATED $PAGEEDITDATE przez użytkownika $PAGEEDITOR. Zobacz na stronie $PAGETITLE_URL aktualną wersję.
@@ -1969,20 +2088,25 @@ $NEWPAGE
Opis zmiany: $PAGESUMMARY $PAGEMINOREDIT
-Skontaktuj się z autorem:
-mail: $PAGEEDITOR_EMAIL
-wiki: $PAGEEDITOR_WIKI
+Kontakt do autora:
+mail – $PAGEEDITOR_EMAIL
+wiki – $PAGEEDITOR_WIKI
W przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony.
Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.
- Wiadomość systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}
+$NEWPAGE
+
+ Wiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}
--
W celu zmiany ustawień swojej listy obserwowanych odwiedź
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Usunięcie strony z listy obserwowanych możliwe jest na stronie
+$UNWATCHURL
-Pomoc:
+Pomoc
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1994,10 +2118,11 @@ Pomoc:
'exblank' => 'Strona była pusta',
'delete-confirm' => 'Usuwanie „$1”',
'delete-legend' => 'Usuń',
-'historywarning' => 'Uwaga! Strona, którą chcesz usunąć, ma starsze wersje:',
+'historywarning' => "'''Uwaga!''' Strona, którą chcesz usunąć, ma w przybliżeniu {{PLURAL:$1|starszą wersję|$1 starsze wersje|$1 starszych wersji}}:",
'confirmdeletetext' => 'Zamierzasz usunąć stronę razem z całą dotyczącą jej historią.
Upewnij się, czy na pewno chcesz to zrobić, że rozumiesz konsekwencje i że robisz to w zgodzie z [[{{MediaWiki:Policy-url}}|zasadami]].',
'actioncomplete' => 'Operacja wykonana',
+'actionfailed' => 'Działanie nie powiodło się',
'deletedtext' => 'Usunięto „<nowiki>$1</nowiki>”.
Zobacz na stronie $2 rejestr ostatnio wykonanych usunięć.',
'deletedarticle' => 'usunął [[$1]]',
@@ -2020,20 +2145,21 @@ Usunięcie jej mogłoby spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENA
Bądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.',
# Rollback
-'rollback' => 'Cofnij edycję',
-'rollback_short' => 'Cofnij',
-'rollbacklink' => 'cofnij',
-'rollbackfailed' => 'Nie udało się cofnąć zmiany',
-'cantrollback' => 'Nie można cofnąć edycji, ponieważ jest tylko jedna wersja tej strony.',
-'alreadyrolled' => 'Nie można dla strony [[:$1|$1]] cofnąć ostatniej zmiany, którą wykonał [[User:$2|$2]] ([[User talk:$2|dyskusja]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).
+'rollback' => 'Cofnij edycję',
+'rollback_short' => 'Cofnij',
+'rollbacklink' => 'cofnij',
+'rollbackfailed' => 'Nie udało się cofnąć zmiany',
+'cantrollback' => 'Nie można cofnąć edycji, ponieważ jest tylko jedna wersja tej strony.',
+'alreadyrolled' => 'Nie można dla strony [[:$1|$1]] cofnąć ostatniej zmiany, którą wykonał [[User:$2|$2]] ([[User talk:$2|dyskusja]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).
Ktoś inny zdążył już to zrobić lub wprowadził własne poprawki do treści strony.
Autorem ostatniej zmiany jest teraz [[User:$3|$3]] ([[User talk:$3|dyskusja]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Edycję opisał „''$1''”.", # only shown if there is an edit comment
-'revertpage' => 'Wycofano edycje użytkownika [[Special:Contributions/$2|$2]] ([[User talk:$2|dyskusja]]). Autor przywróconej wersji to [[User:$1|$1]].', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Wycofano edycje użytkownika $1.
+'editcomment' => "Edycję opisał „''$1''”.",
+'revertpage' => 'Wycofano edycje użytkownika [[Special:Contributions/$2|$2]] ([[User talk:$2|dyskusja]]). Autor przywróconej wersji to [[User:$1|$1]].',
+'revertpage-nouser' => 'Wycofano edycje (nazwa użytkownika usunięta). Autor przywróconej wersji to [[User:$1|$1]].',
+'rollback-success' => 'Wycofano edycje użytkownika $1.
Przywrócono ostatnią wersję autorstwa $2.',
-'sessionfailure' => 'Wystąpił problem z weryfikacją zalogowania.
+'sessionfailure' => 'Wystąpił problem z weryfikacją zalogowania.
Polecenie zostało anulowane, aby uniknąć przechwycenia sesji.
Naciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wydaj polecenie.',
@@ -2052,7 +2178,7 @@ Aby przejrzeć listę obecnie działających zabezpieczeń, przejdź na stronę
'protectexpiry' => 'Czas wygaśnięcia',
'protect_expiry_invalid' => 'Podany czas automatycznego odbezpieczenia jest nieprawidłowy.',
'protect_expiry_old' => 'Podany czas automatycznego odblokowania znajduje się w przeszłości.',
-'protect-unchain' => 'Odblokowanie możliwości przenoszenia strony',
+'protect-unchain-permissions' => 'Odblokuj dodatkowe opcje zabezpieczania',
'protect-text' => "Możesz tu sprawdzić i zmienić poziom zabezpieczenia strony '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nie możesz zmienić poziomów zabezpieczenia, ponieważ jesteś zablokowany.
Obecne ustawienia dla strony '''$1''' to:",
@@ -2079,7 +2205,7 @@ Obecne ustawienia dla strony '''$1''' to:",
** Wojna edycyjna
** Wygłupy',
'protect-edit-reasonlist' => 'Edytuj listę przyczyn zabezpieczenia',
-'protect-expiry-options' => '1 godzina:1 hour,1 dzień:1 day,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 godzina:1 hour,1 dzień:1 day,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite',
'restriction-type' => 'Ograniczenia',
'restriction-level' => 'Poziom',
'minimum-size' => 'Minimalny rozmiar',
@@ -2122,6 +2248,7 @@ Możesz mieć zły link lub wersja mogła zostać odtworzona lub usunięta z arc
'undelete-nodiff' => 'Nie znaleziono poprzednich wersji.',
'undeletebtn' => 'Odtwórz',
'undeletelink' => 'pokaż lub odtwórz',
+'undeleteviewlink' => 'pokaż',
'undeletereset' => 'Wyczyść',
'undeleteinvert' => 'Odwróć zaznaczenie',
'undeletecomment' => 'Powód',
@@ -2161,19 +2288,23 @@ $1',
'contributions-title' => 'Wkład {{GENDER:$1|użytkownika|użytkowniczki}} $1',
'mycontris' => 'Moje edycje',
'contribsub2' => 'Dla użytkownika $1 ($2)',
-'nocontribs' => 'Brak zmian odpowiadających tym kryteriom.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Brak zmian odpowiadających tym kryteriom.',
'uctop' => ' (jako ostatnia)',
'month' => 'Przed miesiącem (włącznie)',
'year' => 'Przed rokiem (włącznie)',
-'sp-contributions-newbies' => 'Pokaż wyłącznie wkład nowych użytkowników',
-'sp-contributions-newbies-sub' => 'Dla nowych użytkowników',
-'sp-contributions-newbies-title' => 'Wkład nowych użytkowników',
-'sp-contributions-blocklog' => 'blokady',
-'sp-contributions-logs' => 'rejestry',
-'sp-contributions-search' => 'Szukaj wkładu',
-'sp-contributions-username' => 'Adres IP lub nazwa użytkownika',
-'sp-contributions-submit' => 'Szukaj',
+'sp-contributions-newbies' => 'Pokaż wyłącznie wkład nowych użytkowników',
+'sp-contributions-newbies-sub' => 'Dla nowych użytkowników',
+'sp-contributions-newbies-title' => 'Wkład nowych użytkowników',
+'sp-contributions-blocklog' => 'blokady',
+'sp-contributions-deleted' => 'usunięty wkład użytkownika',
+'sp-contributions-logs' => 'rejestry',
+'sp-contributions-talk' => 'dyskusja',
+'sp-contributions-userrights' => 'zarządzanie uprawnieniami użytkownika',
+'sp-contributions-blocked-notice' => 'To konto użytkownika jest obecnie zablokowane. Ostatni wpis rejestru blokad jest pokazany poniżej.',
+'sp-contributions-search' => 'Szukaj wkładu',
+'sp-contributions-username' => 'Adres IP lub nazwa użytkownika',
+'sp-contributions-submit' => 'Szukaj',
# What links here
'whatlinkshere' => 'Linkujące',
@@ -2196,6 +2327,7 @@ $1',
# Block/unblock
'blockip' => 'Zablokuj użytkownika',
+'blockip-title' => 'Zablokowanie użytkownika',
'blockip-legend' => 'Zablokuj użytkownika',
'blockiptext' => 'Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.
Blokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].
@@ -2221,7 +2353,7 @@ Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandal
'ipbenableautoblock' => 'Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których będzie próbował edytować',
'ipbsubmit' => 'Zablokuj użytkownika',
'ipbother' => 'Inny okres',
-'ipboptions' => '2 godziny:2 hours,1 dzień:1 day,3 dni:3 days,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 godziny:2 hours,1 dzień:1 day,3 dni:3 days,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite',
'ipbotheroption' => 'inny okres',
'ipbotherreason' => 'Inne lub dodatkowy powód',
'ipbhidename' => 'Ukryj nazwę użytkownika w edycjach i listach',
@@ -2250,9 +2382,11 @@ Przejdź do [[Special:IPBlockList|listy zablokowanych adresów IP]], by przejrze
'ipblocklist-sh-tempblocks' => '$1 tymczasowe blokady',
'ipblocklist-sh-addressblocks' => '$1 blokady pojedynczych adresów IP',
'ipblocklist-submit' => 'Szukaj',
+'ipblocklist-localblock' => 'Lokalna blokada',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
'blocklistline' => '$1, $2 zablokował $3 ($4)',
'infiniteblock' => 'na zawsze',
-'expiringblock' => 'wygasa $1',
+'expiringblock' => 'wygasa $1 o $2',
'anononlyblock' => 'tylko niezalogowani',
'noautoblockblock' => 'automatyczne blokowanie wyłączone',
'createaccountblock' => 'blokada tworzenia kont',
@@ -2267,7 +2401,8 @@ Przejdź do [[Special:IPBlockList|listy zablokowanych adresów IP]], by przejrze
'autoblocker' => 'Zablokowano Cię automatycznie, ponieważ używasz tego samego adresu IP, co użytkownik „[[User:$1|$1]]”.
Przyczyna blokady $1 to: „$2”',
'blocklogpage' => 'Historia blokad',
-'blocklog-fulllog' => 'Pełny rejestr blokad',
+'blocklog-showlog' => '{{GENDER:$1|Ten użytkownik był|Ta użytkowniczka była}} już wcześniej {{GENDER:$1|blokowany|blokowana}}. Poniżej znajduje się rejestr blokad:',
+'blocklog-showsuppresslog' => '{{GENDER:$1|Ten użytkownik był|Ta użytkowniczka była}} już wcześniej {{GENDER:$1|blokowany oraz ukrywany|blokowana oraz ukrywana}}. Poniżej znajduje się rejestr ukrywania:',
'blocklogentry' => 'zablokował [[$1]], czas blokady: $2 $3',
'reblock-logentry' => 'zmienił ustawienia blokady dla [[$1]], czas blokady: $2 $3',
'blocklogtext' => 'Poniżej znajduje się lista blokad założonych i zdjętych z poszczególnych adresów IP.
@@ -2288,10 +2423,12 @@ By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:IPB
'ipb_already_blocked' => '„$1” jest już zablokowany',
'ipb-needreblock' => '== Istniejąca blokada ==
$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
'ipb_cant_unblock' => 'Błąd: Blokada o ID $1 nie została znaleziona. Mogła ona zostać zdjęta wcześniej.',
'ipb_blocked_as_range' => 'Błąd – adres IP $1 nie został zablokowany bezpośrednio i nie może zostać odblokowany.
Należy on do zablokowanego zakresu adresów $2. Odblokować można tylko cały zakres.',
'ip_range_invalid' => 'Niepoprawny zakres adresów IP.',
+'ip_range_toolarge' => 'Zakresy IP większe niż /$1 są niedozwolone.',
'blockme' => 'Zablokuj mnie',
'proxyblocker' => 'Blokowanie proxy',
'proxyblocker-disabled' => 'Ta funkcja jest wyłączona.',
@@ -2302,6 +2439,7 @@ O tym poważnym problemie dotyczącym bezpieczeństwa należy poinformować dost
'sorbs_create_account_reason' => 'Twój adres IP znajduje się na liście serwerów open proxy w DNSBL, używanej przez {{GRAMMAR:B.lp|{{SITENAME}}}}.
Nie możesz utworzyć konta',
'cant-block-while-blocked' => 'Nie możesz zablokować innych użytkowników, kiedy sam jesteś zablokowany.',
+'cant-see-hidden-user' => 'Konto użytkownika, które próbujesz zablokować, zostało już zablokowane oraz ukryte. Bez uprawnienia do ukrywania kont nie możesz zobaczyć oraz modyfikować blokady tego użytkownika.',
# Developer tools
'lockdb' => 'Zablokuj bazę danych',
@@ -2344,6 +2482,7 @@ Upewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
W takich przypadkach treść dyskusji można przenieść tylko ręcznie.',
'movearticle' => 'Przeniesienie strony',
+'moveuserpage-warning' => "'''Uwaga!''' Masz zamiar przenieść stronę użytkownika. Miej na uwadze, że zostanie przeniesiona tylko strona, a '''nazwa użytkownika pozostanie niezmieniona'''.",
'movenologin' => 'Nie jesteś zalogowany',
'movenologintext' => 'Przenoszenie stron jest możliwe dopiero po zarejestrowaniu się i [[Special:UserLogin|zalogowaniu]].',
'movenotallowed' => 'Nie masz uprawnień do przenoszenia stron.',
@@ -2354,7 +2493,7 @@ W takich przypadkach treść dyskusji można przenieść tylko ręcznie.',
'move-watch' => 'Obserwuj',
'movepagebtn' => 'Przenieś stronę',
'pagemovedsub' => 'Przeniesienie powiodło się',
-'movepage-moved' => "'''„$1” została przeniesiona do „$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''„$1” została przeniesiona do „$2”'''",
'movepage-moved-redirect' => 'Zostało utworzone przekierowanie.',
'movepage-moved-noredirect' => 'Nie zostało utworzone przekierowanie.',
'articleexists' => 'Strona o podanej nazwie już istnieje albo wybrana przez Ciebie nazwa nie jest poprawna.
@@ -2397,6 +2536,14 @@ Strony nie można przenieść na nią samą.',
'imageinvalidfilename' => 'Nazwa pliku docelowego jest nieprawidłowa',
'fix-double-redirects' => 'Zaktualizuj wszystkie przekierowania wskazujące na stary tytuł',
'move-leave-redirect' => 'Pozostaw przekierowanie pod dotychczasowym tytułem',
+'protectedpagemovewarning' => "'''UWAGA!''' Ponieważ strona została zabezpieczona, tylko użytkownicy z uprawnieniami administratora mogą zmienić jej nazwę.
+Ostatni wpis z rejestru jest pokazany poniżej.",
+'semiprotectedpagemovewarning' => "'''Uwaga!''' Ponieważ strona została zabezpieczona, tylko zarejestrowani użytkownicy mogą zmienić jej nazwę.
+Ostatni wpis z rejestru jest pokazany poniżej.",
+'move-over-sharedrepo' => '== Plik istnieje ==
+[[:$1]] istnieje we wspólnym repozytorium. Zmiana nazwy pliku na tę spowoduje przesłonięcie współdzielonego pliku.',
+'file-exists-sharedrepo' => 'Plik o wybranej nazwie istnieje we wspólnym repozytorium.
+Wybierz inną nazwę.',
# Export
'export' => 'Eksport stron',
@@ -2419,15 +2566,21 @@ Możesz również użyć linku, np. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}
'export-pagelinks' => 'Dołącz linkowane strony na głębokości:',
# Namespace 8 related
-'allmessages' => 'Komunikaty systemowe',
-'allmessagesname' => 'Nazwa',
-'allmessagesdefault' => 'Tekst domyślny',
-'allmessagescurrent' => 'Tekst obecny',
-'allmessagestext' => 'Lista wszystkich komunikatów systemowych dostępnych w przestrzeni nazw MediaWiki.
+'allmessages' => 'Komunikaty systemowe',
+'allmessagesname' => 'Nazwa',
+'allmessagesdefault' => 'Tekst domyślny',
+'allmessagescurrent' => 'Tekst obecny',
+'allmessagestext' => 'Lista wszystkich komunikatów systemowych dostępnych w przestrzeni nazw MediaWiki.
Odwiedź [http://www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] oraz [http://translatewiki.net translatewiki.net], jeśli chcesz uczestniczyć w tłumaczeniu oprogramowania MediaWiki.',
-'allmessagesnotsupportedDB' => "Ta strona nie może być użyta, ponieważ zmienna '''\$wgUseDatabaseMessages''' jest wyłączona.",
-'allmessagesfilter' => 'Filtr nazw komunikatów',
-'allmessagesmodified' => 'Pokaż tylko zmodyfikowane',
+'allmessagesnotsupportedDB' => "Ta strona nie może być użyta, ponieważ zmienna '''\$wgUseDatabaseMessages''' jest wyłączona.",
+'allmessages-filter-legend' => 'Filtr',
+'allmessages-filter' => 'Filtrowanie według stanu modyfikacji:',
+'allmessages-filter-unmodified' => 'Niezmodyfikowane',
+'allmessages-filter-all' => 'Wszystkie',
+'allmessages-filter-modified' => 'Zmodyfikowane',
+'allmessages-prefix' => 'Tytuły rozpoczynające się od',
+'allmessages-language' => 'Język',
+'allmessages-filter-submit' => 'Pokaż',
# Thumbnails
'thumbnail-more' => 'Powiększ',
@@ -2437,6 +2590,9 @@ Odwiedź [http://www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] ora
'djvu_no_xml' => 'Nie można pobrać danych w formacie XML dla pliku DjVu',
'thumbnail_invalid_params' => 'Nieprawidłowe parametry miniatury',
'thumbnail_dest_directory' => 'Nie można utworzyć katalogu docelowego',
+'thumbnail_image-type' => 'Grafika tego typu nie jest obsługiwana',
+'thumbnail_gd-library' => 'Niekompletna konfiguracja biblioteki GD – brak funkcji $1',
+'thumbnail_image-missing' => 'Chyba brakuje pliku $1',
# Special:Import
'import' => 'Import stron',
@@ -2501,6 +2657,7 @@ Brak katalogu dla plików tymczasowych.',
'tooltip-ca-viewsource' => 'Ta strona jest zabezpieczona. Możesz zobaczyć tekst źródłowy.',
'tooltip-ca-history' => 'Starsze wersje tej strony.',
'tooltip-ca-protect' => 'Zabezpiecz tę stronę.',
+'tooltip-ca-unprotect' => 'Odbezpiecz tę stronę',
'tooltip-ca-delete' => 'Usuń tę stronę',
'tooltip-ca-undelete' => 'Przywróć wersję tej strony sprzed usunięcia',
'tooltip-ca-move' => 'Przenieś tę stronę.',
@@ -2511,6 +2668,7 @@ Brak katalogu dla plików tymczasowych.',
'tooltip-search-fulltext' => 'Szukaj wprowadzonego tekstu w treści stron',
'tooltip-p-logo' => 'Strona główna',
'tooltip-n-mainpage' => 'Zobacz stronę główną',
+'tooltip-n-mainpage-description' => 'Przejdź na stronę główną',
'tooltip-n-portal' => 'O projekcie, co możesz zrobić, gdzie możesz znaleźć informacje',
'tooltip-n-currentevents' => 'Informacje o aktualnych wydarzeniach',
'tooltip-n-recentchanges' => 'Lista ostatnich zmian na {{GRAMMAR:D.lp|{{SITENAME}}}}.',
@@ -2558,6 +2716,7 @@ Pozwala na wpisanie powodu w opisie zmian.',
'chick.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Kurczaczek */',
'simple.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Prosta */',
'modern.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Nowoczesna */',
+'vector.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */',
'print.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd wydruku */',
'handheld.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd na urządzeniach kieszonkowych skórki ustawionej w zmiennej $wgHandheldStyle */',
@@ -2571,6 +2730,7 @@ Pozwala na wpisanie powodu w opisie zmian.',
'chick.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Kurczaczek */',
'simple.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Prosta */',
'modern.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Nowoczesna */',
+'vector.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */',
# Metadata
'nodublincore' => 'Metadane zgodne z Dublin Core RDF zostały wyłączone dla tego serwera.',
@@ -2580,10 +2740,12 @@ Pozwala na wpisanie powodu w opisie zmian.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonimowy użytkownik|Anonimowi użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}',
'siteuser' => 'użytkownik {{GRAMMAR:D.lp|{{SITENAME}}}} – $1',
-'lastmodifiedatby' => 'Ostatnia edycja tej strony: $2, $1 (autor zmian: $3)', # $1 date, $2 time, $3 user
+'anonuser' => 'niezalogowany użytkownik {{GRAMMAR:D.lp|{{SITENAME}}}} – $1',
+'lastmodifiedatby' => 'Ostatnia edycja tej strony: $2, $1 (autor zmian: $3)',
'othercontribs' => 'Inni autorzy: $1.',
'others' => 'inni',
'siteusers' => '{{PLURAL:$2|użytkownik|użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}{{PLURAL:$2||:}} $1',
+'anonusers' => '{{PLURAL:$2|niezalogowany użytkownik|niezalogowani użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}{{PLURAL:$2||:}} $1',
'creditspage' => 'Autorzy',
'nocredits' => 'Brak informacji o autorach tej strony.',
@@ -2613,6 +2775,7 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
'skinname-chick' => 'Kurczaczek',
'skinname-simple' => 'Prosta',
'skinname-modern' => 'Nowoczesna',
+'skinname-vector' => 'Wektor',
# Math options
'mw_math_png' => 'Zawsze generuj grafikę PNG',
@@ -2622,11 +2785,24 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
'mw_math_modern' => 'HTML – zalecane dla nowych przeglądarek',
'mw_math_mathml' => 'MathML jeśli dostępny (eksperymentalne)',
+# Math errors
+'math_failure' => 'Parser nie mógł rozpoznać',
+'math_unknown_error' => 'nieznany błąd',
+'math_unknown_function' => 'nieznana funkcja',
+'math_lexing_error' => 'błędna nazwa',
+'math_syntax_error' => 'błąd składni',
+'math_image_error' => 'Konwersja do formatu PNG nie powiodła się.
+Sprawdź, czy poprawnie zainstalowane są latex, dvips, gs i convert.',
+'math_bad_tmpdir' => 'Nie można utworzyć lub zapisywać w tymczasowym katalogu dla wzorów matematycznych',
+'math_bad_output' => 'Nie można utworzyć lub zapisywać w wyjściowym katalogu dla wzorów matematycznych',
+'math_notexvc' => 'Brak programu texvc.
+Zapoznaj się z math/README w celu konfiguracji.',
+
# Patrolling
'markaspatrolleddiff' => 'oznacz edycję jako „sprawdzoną”',
'markaspatrolledtext' => 'Oznacz tę stronę jako „sprawdzoną”',
'markedaspatrolled' => 'Sprawdzone',
-'markedaspatrolledtext' => 'Ta wersja została oznaczona jako „sprawdzona”.',
+'markedaspatrolledtext' => 'Wybrana wersja [[:$1]] została oznaczona jako „sprawdzona”.',
'rcpatroldisabled' => 'Wyłączono funkcję patrolowania na stronie ostatnich zmian',
'rcpatroldisabledtext' => 'Patrolowanie ostatnich zmian jest obecnie wyłączone.',
'markedaspatrollederror' => 'Nie można oznaczyć jako „sprawdzone”',
@@ -2656,13 +2832,10 @@ $1',
'previousdiff' => '← poprzednia edycja',
'nextdiff' => 'następna edycja →',
-# Visual comparison
-'visual-comparison' => 'Porównanie treści',
-
# Media information
'mediawarning' => "'''Uwaga!''' Plik w tym formacie może zawierać złośliwy kod.
Jeśli go otworzysz, możesz zarazić swój system.",
-'imagemaxsize' => 'Na stronach opisu plików ogranicz rozmiar obrazków do:',
+'imagemaxsize' => "Ograniczenie wielkości obrazków<br />''(na stronach opisu plików)''",
'thumbsize' => 'Rozmiar miniaturki',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|strony|stron}}',
'file-info' => '(rozmiar pliku: $1, typ MIME: $2)',
@@ -2671,6 +2844,8 @@ Jeśli go otworzysz, możesz zarazić swój system.",
'svg-long-desc' => '(Plik SVG, nominalnie $1 × $2 pikseli, rozmiar pliku: $3)',
'show-big-image' => 'Pełna rozdzielczość',
'show-big-image-thumb' => '<small>Rozmiar podglądu: $1 × $2 pikseli</small>',
+'file-info-gif-looped' => 'zapętlony',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|klatka|klatki|klatek}}',
# Special:NewFiles
'newimages' => 'Najnowsze pliki',
@@ -2710,7 +2885,7 @@ Pozostałe pola zostaną domyślnie ukryte.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Szerokość',
@@ -2839,14 +3014,14 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-unknowndate' => 'nieznana data',
-'exif-orientation-1' => 'normalna', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'odbicie lustrzane w poziomie', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'obraz obrócony o 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'odbicie lustrzane w pionie', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'obraz obrócony o 90° przeciwnie do ruchu wskazówek zegara i odbicie lustrzane w pionie', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'obraz obrócony o 90° zgodnie z ruchem wskazówek zegara', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'obrót o 90° zgodnie ze wskazówkami zegara i odbicie lustrzane w pionie', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'obrót o 90° przeciwnie do wskazówek zegara', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'normalna',
+'exif-orientation-2' => 'odbicie lustrzane w poziomie',
+'exif-orientation-3' => 'obraz obrócony o 180°',
+'exif-orientation-4' => 'odbicie lustrzane w pionie',
+'exif-orientation-5' => 'obraz obrócony o 90° przeciwnie do ruchu wskazówek zegara i odbicie lustrzane w pionie',
+'exif-orientation-6' => 'obraz obrócony o 90° zgodnie z ruchem wskazówek zegara',
+'exif-orientation-7' => 'obrót o 90° zgodnie ze wskazówkami zegara i odbicie lustrzane w pionie',
+'exif-orientation-8' => 'obrót o 90° przeciwnie do wskazówek zegara',
'exif-planarconfiguration-1' => 'format masywny',
'exif-planarconfiguration-2' => 'format powierzchniowy',
@@ -2971,7 +3146,7 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-gpsmeasuremode-2' => 'dwuwymiarowy',
'exif-gpsmeasuremode-3' => 'trójwymiarowy',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'kilometrów na godzinę',
'exif-gpsspeed-m' => 'mil na godzinę',
'exif-gpsspeed-n' => 'węzłów',
@@ -2990,6 +3165,7 @@ Pozostałe pola zostaną domyślnie ukryte.
'watchlistall2' => 'wszystkie',
'namespacesall' => 'wszystkie',
'monthsall' => 'wszystkie',
+'limitall' => 'wszystkie',
# E-mail address confirmation
'confirmemail' => 'Potwierdzanie adresu e‐mail',
@@ -3018,13 +3194,13 @@ Możesz [[Special:UserLogin|zalogować się]] i korzystać z szerszego wachlarza
'confirmemail_body' => 'Ktoś łącząc się z komputera o adresie IP $1
zarejestrował w {{GRAMMAR:MS.lp|{{SITENAME}}}} konto „$2” podając niniejszy adres e‐mail.
-Aby potwierdzić, że to Ty zarejestrowałeś to konto oraz, aby włączyć
+Aby potwierdzić, że to Ty {{GENDER:|zarejestrowałeś|zarejestrowałaś}} to konto oraz, aby włączyć
wszystkie funkcje korzystające z poczty elektronicznej, otwórz w swojej
przeglądarce ten link:
$3
-Jeśli to *nie* Ty zarejestrowałeś konto, otwórz w swojej przeglądarce
+Jeśli to *nie* Ty {{GENDER:|zarejestrowałeś|zarejestrowałaś}} konto, otwórz w swojej przeglądarce
poniższy link, aby anulować potwierdzenie adresu e‐mail:
$5
@@ -3170,7 +3346,7 @@ Możesz także użyć [[Special:Watchlist/edit|standardowego edytora obserwowany
'duplicate-defaultsort' => 'Uwaga: Domyślnym kluczem sortowania będzie „$2” i zastąpi on wcześniej wykorzystywany klucz „$1”.',
# Special:Version
-'version' => 'Wersja oprogramowania', # Not used as normal message but as header for the special page itself
+'version' => 'Wersja oprogramowania',
'version-extensions' => 'Zainstalowane rozszerzenia',
'version-specialpages' => 'Strony specjalne',
'version-parserhooks' => 'Haki analizatora składni (ang. parser hooks)',
@@ -3184,7 +3360,7 @@ Możesz także użyć [[Special:Watchlist/edit|standardowego edytora obserwowany
'version-skin-extension-functions' => 'Funkcje rozszerzeń skórek',
'version-hook-name' => 'Nazwa haka (ang. hook name)',
'version-hook-subscribedby' => 'Zapotrzebowany przez',
-'version-version' => 'Wersja',
+'version-version' => '(Wersja $1)',
'version-license' => 'Licencja',
'version-software' => 'Zainstalowane oprogramowanie',
'version-software-product' => 'Nazwa',
@@ -3265,4 +3441,15 @@ Wpisz nazwę pliku z pominięciem prefiksu „{{ns:file}}:”.',
'dberr-outofdate' => 'Uwaga – indeksy zawartości serwisu mogą być nieaktualne.',
'dberr-cachederror' => 'Strona została pobrana z pamięci podręcznej i może być nieaktualna.',
+# HTML forms
+'htmlform-invalid-input' => 'Wystąpił problem z wprowadzonymi danymi',
+'htmlform-select-badoption' => 'Podano nieprawidłową wartość.',
+'htmlform-int-invalid' => 'Podano wartość, która nie jest liczbą całkowitą.',
+'htmlform-float-invalid' => 'Podana wartość nie jest liczbą.',
+'htmlform-int-toolow' => 'Podana wartość jest poniżej dopuszczalnego minimum $1',
+'htmlform-int-toohigh' => 'Podana wartość jest powyżej dopuszczalnego maximum $1',
+'htmlform-submit' => 'Zapisz',
+'htmlform-reset' => 'Cofnij zmiany',
+'htmlform-selectorother-other' => 'Inne',
+
);
diff --git a/languages/messages/MessagesPms.php b/languages/messages/MessagesPms.php
index 6d41db99..fbd2e200 100644
--- a/languages/messages/MessagesPms.php
+++ b/languages/messages/MessagesPms.php
@@ -21,11 +21,9 @@ $fallback = 'it';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_MAIN => '',
NS_TALK => 'Discussion',
NS_USER => 'Utent',
NS_USER_TALK => 'Ciaciarade',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Discussion_ant_sla_$1',
NS_FILE => 'Figura',
NS_FILE_TALK => 'Discussion_dla_figura',
@@ -36,7 +34,7 @@ $namespaceNames = array(
NS_HELP => 'Agiut',
NS_HELP_TALK => 'Discussion_ant_sl\'agiut',
NS_CATEGORY => 'Categorìa',
- NS_CATEGORY_TALK => 'Discussion_ant_sla_categorìa'
+ NS_CATEGORY_TALK => 'Discussion_ant_sla_categorìa',
);
$messages = array(
@@ -71,6 +69,7 @@ dj'artìcoj ancó pa scrit",
'tog-enotifminoredits' => 'Mand-me un messagi an pòsta eletrònica bele che për le modìfiche cite',
'tog-enotifrevealaddr' => 'Lassa che a së s-ciàira mia adrëssa ëd pòsta eletrònica ant ij messagi ëd notìfica',
'tog-shownumberswatching' => "Smon ël nùmer d'utent che as ten-o la pàgina sot euj",
+'tog-oldsig' => 'Anteprima dla firma esistenta:',
'tog-fancysig' => "Trata la firma com test wiki (sensa n'anliura automàtica)",
'tog-externaleditor' => "Dovré coma stàndard n'editor estern (mach për espert, a-i é dabzògn d'ampostassion speciaj dzora a sò ordinator)",
'tog-externaldiff' => "Dovré për stàndard un programa comparator estern (mach për espert, a-i é dabzògn d'ampostassion speciaj ansima a sò ordinator)",
@@ -94,6 +93,13 @@ dj'artìcoj ancó pa scrit",
'underline-never' => 'Mai',
'underline-default' => 'Deuvra lë stàndard dël programma ëd navigassion (browser)',
+# Font style option in Special:Preferences
+'editfont-style' => "Stil dël font ëd l'àrea ëd modìfica:",
+'editfont-default' => 'Stàndard dël navigator',
+'editfont-monospace' => 'Font mono-spassià',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Dumìnica',
'monday' => 'Lùn-es',
@@ -153,7 +159,7 @@ dj'artìcoj ancó pa scrit",
'category-media-header' => 'Archivi ant la categorìa "$1"',
'category-empty' => "''Al dì d'ancheuj la categorìa a l'ha pa andrinta nì 'd pàgine, nì d'archivi multimojen.''",
'hidden-categories' => '{{PLURAL:$1|Categorìa stërmà|Categorìe stërmà}}',
-'hidden-category-category' => 'Categorìe stërmà', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorìe stërmà',
'category-subcat-count' => "{{PLURAL:$2|Sta categorìa-sì a l'ha mach na sot-categorìa, listà ambelessì sota.|Sta categorìa-sì a l'ha {{PLURAL:$1|na sot-categorìa|$1 sot-categorìe}}, ëd $2 ch'a-i në j'é an total.}}",
'category-subcat-count-limited' => "Sta categorìa-sì a l'ha {{PLURAL:$1|la sot-categorìa|le $1 sot-categorìe}} sì-dapress.",
'category-article-count' => "{{PLURAL:$2|Sta categorìa-sì a l'ha mach sta pàgina.|Ant sta categorìa-sì a-i {{PLURAL:$1|intra mach sta pàgina|intro $1 pàgine}} ëd $2 ch'a-i në j'é an total.}}",
@@ -161,6 +167,8 @@ dj'artìcoj ancó pa scrit",
'category-file-count' => "{{PLURAL:$2|Sta categorìa-sì a l'ha nomach st'archivi.|Sta categorìa-sì a l'ha {{PLURAL:$1|n'|$1}} archivi, ëd $2 ch'a-i në j'é an total.}}",
'category-file-count-limited' => "Ant sta categorìa-sì a-i {{PLURAL:$1|intra mach st'|intro $1}} archivi.",
'listingcontinuesabbrev' => ' anans',
+'index-category' => 'Pàgine indicisà',
+'noindex-category' => 'Pàgine pa indicisà',
'mainpagetext' => "'''MediaWiki a l'é staita anstalà a la përfession.'''",
'mainpagedocfooter' => "Che a varda la [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] për avèj dj'anformassion ant sël coma dovré ël programa dla wiki.
@@ -170,10 +178,18 @@ dj'artìcoj ancó pa scrit",
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Chestion frequente]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista ëd discussion an sla distribussion ëd MediaWiki]",
-'about' => 'A propòsit ëd',
-'article' => 'Pàgina ëd contnù',
-'newwindow' => '(as deurb ant na fnestra neuva)',
-'cancel' => 'Scancela',
+'about' => 'A propòsit ëd',
+'article' => 'Pàgina ëd contnù',
+'newwindow' => '(as deurb ant na fnestra neuva)',
+'cancel' => 'Scancela',
+'moredotdotdot' => 'Dë pì...',
+'mypage' => 'Mia pàgina',
+'mytalk' => 'Mie ciaciarade',
+'anontalk' => "Ciaciarade për st'adrëssa IP-sì",
+'navigation' => 'Navigassion',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Treuva',
'qbbrowse' => 'Sfeuja',
'qbedit' => 'Modìfica',
@@ -181,15 +197,35 @@ dj'artìcoj ancó pa scrit",
'qbpageinfo' => 'Anformassion rësguard a la pàgina',
'qbmyoptions' => 'Mie opsion',
'qbspecialpages' => 'Pàgine speciaj',
-'moredotdotdot' => 'Dë pì...',
-'mypage' => 'Mia pàgina',
-'mytalk' => 'Mie ciaciarade',
-'anontalk' => "Ciaciarade për st'adrëssa IP-sì",
-'navigation' => 'Navigassion',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadat:',
+'faq' => 'Chestion frequente',
+'faqpage' => 'Project:Soèns An Ciamo',
+
+# Vector skin
+'vector-action-addsection' => 'Gionta argoment',
+'vector-action-delete' => 'Scancela',
+'vector-action-move' => 'Tramuda',
+'vector-action-protect' => 'Protegg',
+'vector-action-undelete' => 'Arcùpera',
+'vector-action-unprotect' => 'Sprotegg',
+'vector-namespace-category' => 'Categorìa',
+'vector-namespace-help' => "Pàgina d'agiut",
+'vector-namespace-image' => 'Archivi',
+'vector-namespace-main' => 'Pàgina',
+'vector-namespace-media' => 'Pàgina con mojen',
+'vector-namespace-mediawiki' => 'Mëssagi',
+'vector-namespace-project' => 'Pàgina ëd proget',
+'vector-namespace-special' => 'Pàgina special',
+'vector-namespace-talk' => 'Discussion',
+'vector-namespace-template' => 'Stamp',
+'vector-namespace-user' => 'Pàgina utent',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Modìfica',
+'vector-view-history' => 'Varda stòria',
+'vector-view-view' => 'Les',
+'vector-view-viewsource' => 'Varda sorgiss',
+'actions' => 'Assion',
+'namespaces' => 'Spassi nominaj',
+'variants' => 'Variant',
'errorpagetitle' => 'Eror',
'returnto' => 'Torna andré a $1.',
@@ -239,18 +275,22 @@ dj'artìcoj ancó pa scrit",
'otherlanguages' => 'Àutre lenghe',
'redirectedfrom' => '(Ridiression da $1)',
'redirectpagesub' => 'Pàgina ëd ridiression',
-'lastmodifiedat' => "Modificà l'ùltima vira al $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Modificà l'ùltima vira al $2, $1.",
'viewcount' => "St'artìcol-sì a l'é stàit lesù {{PLURAL:$1|na vira|$1 vire}}.",
'protectedpage' => 'Pàgina proteta',
'jumpto' => 'Va a:',
'jumptonavigation' => 'navigassion',
'jumptosearch' => 'arserca',
+'view-pool-error' => "An dëspias, ij servent a son motobin carià al moment.
+Tròpi utent a son an camin ch'a preuvo a lese sta pàgina-sì.
+Për piasì, speta un pòch prima ëd prové torna a vardé sta pàgina-sì.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'A propòsit ëd {{SITENAME}}',
'aboutpage' => 'Project:A propòsit',
'copyright' => 'Ël contnù a resta disponìbil sota a na licensa $1.',
-'copyrightpagename' => "Drit d'autor ëd {{SITENAME}}",
'copyrightpage' => "{{ns:project}}:Drit d'autor",
'currentevents' => 'Neuve',
'currentevents-url' => 'Project:Neuve',
@@ -258,8 +298,6 @@ dj'artìcoj ancó pa scrit",
'disclaimerpage' => 'Project:Avertense generaj',
'edithelp' => 'Manual dë spiegassion',
'edithelppage' => "Help:Coma scrive n'artìcol",
-'faq' => 'Chestion frequente',
-'faqpage' => 'Project:Soèns An Ciamo',
'helppage' => 'Help:Agiut',
'mainpage' => 'Intrada',
'mainpage-description' => 'Intrada',
@@ -339,10 +377,6 @@ L\'ùltima anterogassion a l\'é stàita:
"$1"
da andrinta a la funsion "$2".
La base dat a l\'ha dane n\'eror "$3: $4"',
-'noconnect' => "An dëspias! La wiki a l'ha dle dificoltà técniche, e a peul nen contaté ël DB server.<br />
-$1",
-'nodb' => 'Selession da la base dat $1 falìa',
-'cachederror' => "Costa a l'é mach na còpia memorisà dla pàgina che a l'ha ciamà, donca a podrìa ëdcò nen esse agiornà.",
'laggedslavemode' => 'Avis: la pàgina a podrìa ëdcò nen mostré tute soe modìfiche.',
'readonly' => 'Acess a la base dat sërà për chèich temp.',
'enterlockreason' => 'Che a buta na rason për ël blocagi, con andrinta data e ora ëd quand che a stima che a sarà gavà.',
@@ -360,6 +394,8 @@ Për piasì, fa rapòrt a n'[[Special:ListUsers/sysop|aministrator]], pijand nò
'readonly_lag' => "La base dat a l'é staita blocà n'automàtich antramentr che le màchine dël sircùit secondari (slave) as buto an pari con cole dël prinsipal (master)",
'internalerror' => 'Eror intern',
'internalerror_info' => 'Eror antern: $1',
+'fileappenderrorread' => 'As peul pa les-se "$1" durant dla gionta.',
+'fileappenderror' => 'As peul pa pendse "$1" a "$2".',
'filecopyerror' => 'A l\'é pa stàit possibil copié l\'archivi "$1" coma "$2".',
'filerenameerror' => 'A l\'é pa podusse cangeje nòm a l\'archivi "$1" an "$2".',
'filedeleteerror' => 'A l\'é pa podusse scancelé l\'archivi "$1".',
@@ -369,7 +405,8 @@ Për piasì, fa rapòrt a n'[[Special:ListUsers/sysop|aministrator]], pijand nò
'unexpected' => 'Valor che i së spitavo pa: "$1"="$2".',
'formerror' => "Eror: la domanda a l'é stàita mandà mal",
'badarticleerror' => "N'operassion parèj as peul pa fesse ansima a sta pàgina-sì.",
-'cannotdelete' => "As peul pa scancelesse la pàgina, l'archivi ò la figura che a veul scancelé.",
+'cannotdelete' => "La pàgina o l'archivi \"\$1\" a peul pa esse scancelà.
+Peul desse ch'a l'é già stàit ëscancelà da cheidun d'àutr.",
'badtitle' => 'Tìtol nen giust',
'badtitletext' => "La pàgina che a l'ha ciamà a peul pa esse mostrà. A podrìa tratesse ëd na pàgina nen bon-a, veujda, ò pura a podrìa ëdcò esse n'eror ant n'anliura antra lenghe diferente ò tra diferente version ëd {{SITENAME}}.",
'perfcached' => "Sòn a l'é stait memorisà an local e podrìa ëdcò nen esse agiornà:",
@@ -400,7 +437,6 @@ Coma rason a l'ha butà: ''$2''.",
'virus-unknownscanner' => 'antivìrus nen conossù:',
# Login and logout pages
-'logouttitle' => "Seurte da 'nt ël sistema",
'logouttext' => "'''A l'é sortù da 'nt ël sistema.'''
A peul tiré anans a dovré {{SITENAME}} coma Utent anonim, ò pura a peul [[Special:UserLogin|rintré torna ant ël sistema]] con l'istess stranòm che a dovrava prima, ò con un diferent.
@@ -408,7 +444,6 @@ Ch'a nòta che chèich pàgine a peulo continué a esse visualisà com s'a fussa
'welcomecreation' => '==Bin ëvnù, $1!==
Sò cont a l\'é stàit creà.
Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENAME}}]].',
-'loginpagetitle' => 'rintré ant ël sistema',
'yourname' => 'Sò stranòm',
'yourpassword' => 'Soa ciav',
'yourpasswordagain' => 'Che a bata torna soa ciav',
@@ -419,6 +454,7 @@ Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENA
'nav-login-createaccount' => 'rintré ant ël sistema',
'loginprompt' => 'Che a varda mach che a venta avèj ij cookies abilità për podèj rintré an {{SITENAME}}.',
'userlogin' => 'rintré ant ël sistema',
+'userloginnocreate' => 'Intra',
'logout' => "Seurte da 'nt ël sistema",
'userlogout' => 'seurte dal sistema',
'notloggedin' => "a l'é pa ant ël sistema",
@@ -431,29 +467,8 @@ Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENA
'badretype' => "Le doe ciav che a l'ha scrivù a resto diferente antra lor, e a venta che a sio mideme.",
'userexists' => "Lë stranòm anserì a l'é già dovrà.
Për piasì, sern në stranòm diferent.",
-'youremail' => 'Soa adrëssa ëd pòsta eletrònica:',
-'username' => 'Stranòm:',
-'uid' => "ID dl'utent:",
-'prefs-memberingroups' => 'Mèmber {{PLURAL:$1|dla partìa|dle partìe}}:',
-'yourrealname' => 'Nòm vèir:',
-'yourlanguage' => 'Lenga:',
-'yourvariant' => 'Variant:',
-'yournick' => 'Sò stranòm (për firmé)',
-'badsig' => "Soa firma a l'é nen giusta, che a controla j'istrussion HTML.",
-'badsiglength' => "Sò stranòm a l'é tròp longh.
-A deuv nen esse pì longh che $1 {{PLURAL:$1|caràter|caràter}}.",
-'yourgender' => 'Sess:',
-'gender-unknown' => 'Nen spessificà',
-'gender-male' => 'Òm',
-'gender-female' => 'Fomna',
-'prefs-help-gender' => "Opsional: a l'é dovrà për adaté ël programa al géner.
-Costa anformassion a sarà pùblica.",
-'email' => 'Pòsta eletrònica',
-'prefs-help-realname' => '* Nòm vèir (opsional): se i sërne da butelo ambelessì a sarà dovrà për deve mérit ëd vòstr travaj.',
'loginerror' => 'Eror ën rintrand ant ël sistema',
-'prefs-help-email' => "L'adrëssa ëd pòsta eletrònica a l'é opsional: ma a lassa che na neuva ciav a sia spedìa se a dësmentia soa ciav.
-A peul ëdcò serne ëd lassé che j'àutri a lo contato an soa pàgina d'utent o ëd ciaciarade sensa dabzògn ëd rivelé soa identità.",
-'prefs-help-email-required' => "A-i va l'adrëssa ëd pòsta eletrònica.",
+'createaccounterror' => 'As peul pa creesse ël cont: $1',
'nocookiesnew' => "Sò cont a l'é duvèrt, ma chiel (ò chila) a l'ha nen podù rintré ant ël sistema.
{{SITENAME}} a deuvra ij cookies për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij cookies abilità.
Për piasì, che as j'abìlita e peuj che a preuva torna a rintré con sò stranòm e soa ciav.",
@@ -466,10 +481,11 @@ Ij nòm ëd j\'utent a son sensìbij a le majùscole.
Controla ël nòm che it l\'has batù, o [[Special:UserLogin/signup|fà un neuv cont]].',
'nosuchusershort' => 'A-i é pa gnun utent che as ciama "<nowiki>$1</nowiki>". Për piasì, che a contròla se a l\'ha scrit tut giust.',
'nouserspecified' => 'A venta che a specìfica në stranòm utent',
+'login-userblocked' => "St'utent-sì a l'é blocà. A peul pa intré ant ël sistema.",
'wrongpassword' => "La ciav batùa a l'é pa giusta.<br /><br />Che a preuva torna, për piasì.",
'wrongpasswordempty' => "A l'ha butà na ciav veujda. Për piasì, che a preuva torna.",
-'passwordtooshort' => "Soa ciav a l'é pa assé longa.
-A la dev avej almanch $1 caràter.",
+'passwordtooshort' => 'Le ciav a devo avèj almanch {{PLURAL:$1|1 caràter|$1 caràter}}.',
+'password-name-match' => 'Toa ciav a deuv esse diferenta da tò stranòm.',
'mailmypassword' => 'Mandme na neuva ciav për pòsta eletrònica',
'passwordremindertitle' => 'Servissi për visé la paròla ciav ëd {{SITENAME}}',
'passwordremindertext' => "Cheidun (a l'é belfé che a sia stàit pròpe chiel, da 'nt l'adrëssa IP \$1) a l'ha ciamà che i-j mandèisso
@@ -481,6 +497,7 @@ Soa ciav a temp a scad an {{PLURAL:\$5|un di|\$5 di}}.
Se cheidun d'àutr a l'ha fàit costa arcesta, o se chiel a l'é arcordasse dla ciav,
e a veul pì nen cambiela, che a fasa finta ëd gnente e ch'a continua a dovré soa ciav veja.",
'noemail' => 'An arzulta pa gnun-a casela ëd pòsta eletrònica për l\'Utent "$1".',
+'noemailcreate' => "It deve dé n'adrëssa ëd pòsta eletrònica bon-a",
'passwordsent' => "Na neuva paròla ciav a l'é stàita mandà a l'adrëssa eletrònica registrà për l'Utent \"\$1\".
Për piasì, che a la deuvra sùbit për rintré ant ël sistema pen-a che a l'arsèiv.",
'blocked-mailpassword' => "Për evité dj'assion nen corete as peul pa dovresse la funsion \"Mand-me na ciav neuva\" da 'nt n'adrëssa IP ëd cole blocà.",
@@ -503,9 +520,11 @@ Për piasì che a buta n'adrëssa scrita giusta ò che a lassa ël camp veujd.",
'createaccount-text' => 'Cheidun a l\'ha dorbù un cont për st\'adrëssa ëd pòsta eletrònica-sì ansima a {{SITENAME}} ($4) butand da stranòm "$2" e da ciav "$3". A dovrìa rintré ant ël sistema e cambiesse soa ciav pì ampressa ch\'a peul.
Se sòn a l\'é rivà për eror, a peul lassé sté e fe gnente sensa problema.',
+'usernamehasherror' => "Un nòm utent a peul pa conten-e caràter ciapulà (''hash'')",
'login-throttled' => "It l'has fàit tròpi tentativ recent d'intré.
Për piasì speta prima ëd prové torna.",
'loginlanguagelabel' => 'Lenga: $1',
+'suspicious-userlogout' => "Soa arcesta ëd seurte dal sistema a l'é stàita arfudà përchè a smija com s'a fussa stàita mandà da 'n navigador scolegà o da l'archiviassion an local d'un proxy.",
# Password reset dialog
'resetpass' => 'Cambia la ciav',
@@ -517,17 +536,13 @@ Për piasì speta prima ëd prové torna.",
'retypenew' => 'Che a scriva torna soa neuva ciav',
'resetpass_submit' => 'Registra la ciav e rintra ant ël sistema',
'resetpass_success' => "Soa ciav a l'é stàita registrà sensa problema. I soma dapress a rintré ant ël sistema...",
-'resetpass_bad_temporary' => "Ciav provisòria nen bon-a. A peul esse che a l'abia già cambiasse soa ciav, ò pura che a l'abia ciamà na ciav provisòria neuva.",
'resetpass_forbidden' => 'Le ciav as peulo pa cambiesse',
'resetpass-no-info' => 'It deve esse intrà për andé diretament a sta pàgina.',
'resetpass-submit-loggedin' => 'Cambia ciav',
+'resetpass-submit-cancel' => 'Scancela',
'resetpass-wrong-oldpass' => "Ciav a temp o corenta nen bon-a.
Miraco it l'has già cambià la ciav o it l'has ciamà na neuva ciav a temp.",
'resetpass-temp-password' => 'Ciav a temp:',
-'resetpass-log' => 'Registr dij cambiament ëd ciav',
-'resetpass-logtext' => "Sota a-i é un registr dj'utent che a l'han avù la ciav cambià da n'aministrador.",
-'resetpass-logentry' => "a l'ha cambià la ciav ëd $1",
-'resetpass-comment' => 'Motivassion për avèj cambià la ciav:',
# Edit page toolbar
'bold_sample' => 'Test an grassèt',
@@ -601,7 +616,6 @@ Për piasì, ch'a buta sempe tùit ij detaj an tute le comunicassion andova ch'a
'blockededitsource' => "Ël test ëd le '''soe modìfiche''' a '''$1''' a së s-ciàira ambelessì sota:",
'whitelistedittitle' => 'Sòn as peul pa fesse nen rintrand ant ël sistema',
'whitelistedittext' => 'A venta $1 për podèj fé dle modìfiche.',
-'confirmedittitle' => "Confermé l'adrëssa postal për podej fé dle modìfiche",
'confirmedittext' => 'A dev confermé soa adrëssa ëd pòsta eletrònica, anans che modifiché dle pàgine. Për piasì, che a convàlida soa adrëssa ën dovrand la pàgina [[Special:Preferences|mè gust]].',
'nosuchsectiontitle' => 'As peul pa trovesse la session',
'nosuchsectiontext' => "A l'ha provasse a modifiché na session ch'a-i é pa.
@@ -621,13 +635,20 @@ S'it ses sì për eror, sgnaca ël boton '''andaré''' ëd tò navigador.",
'noarticletext' => 'Al moment costa pàgina a l\'é veuida.
It peule [[Special:Search/{{PAGENAME}}|sërché costa vos]] andrinta a d\'àutre pàgine, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché ant ij registr colegà],
o purament [{{fullurl:{{FULLPAGENAME}}|action=edit}} modìfiché la pàgina adess]</span>.',
+'noarticletext-nopermission' => 'Al moment a-i é pa gnun test an sta pàgina-sì.
+It peule [[Special:Search/{{PAGENAME}}|sërché sto tìtol ëd pàgina-sì]] an d\'àutre pàgine,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché j\'argistrassion colegà]</span>.',
'userpage-userdoesnotexist' => 'Lë stranòm "$1" a l\'é pa registrà. Për piasì ch\'a varda se da bon a veul creé/modifiché sta pàgina.',
+'userpage-userdoesnotexist-view' => 'Ël cont utent "$1" a l\'é pa registrà.',
+'blocked-notice-logextract' => "S'utent a l'é al moment blocà.
+'Me arferiment, sì-sota a-i é la dariera anotassion da l'argistr dij blocagi.",
'clearyourcache' => "'''Nòta:''' na vira che a l'ha salvà, a peul esse che a-j fasa da manca da passé via la memorisassion (cache) dël sò programa ëd navigassion (browser) për podèj ës-ciairé le modìfiche.
*'''Mozilla / Firefox / Safari:''' Che a ten-a sgnacà ''Shift'' antramentr che a sgnaca col rat ansima a ''Reload'', ò pura che a sgnaca tut ansema ''Ctrl-Shift-R'' (''Cmd-Shift-R'' ansima a j'Apple Mac);
*'''IE:''' che a ten-a sgnacà ''Ctrl'' antramentr che a sgnaca col rat ansima a ''Refresh'', ò pura che a sgnaca tut ansema ''Ctrl-F5'';
*'''Konqueror:''': a basta mach sgnaché ël boton ''Reload'', ò pura sgnaché ''F5'';
*'''Opera''' j'utent a peulo avèj da manca dë vujdé 'd continuo soa memorisassion (cache) andrinta a ''Tools&rarr;Preferences''.",
-'usercssjsyoucanpreview' => "'''Drita:''' che a dòvra ël boton 'Mostra na preuva' për controlé l'efet ëd sò còdes CSS/JS anans che salvelo.",
+'usercssyoucanpreview' => "'''Drita:''' che a deuvra ël boton \"{{int:showpreview}}\" për controlé l'efet ëd sò còdes CSS dnans ëd salvelo.",
+'userjsyoucanpreview' => "'''Drita:''' che a deuvra ël boton «{{int:showpreview}}» për controlé l'efet ëd sò còdes JS dnans ëd salvelo.",
'usercsspreview' => "'''Che a varda che lòn che a s-ciàira a l'é nomach na preuva ëd sò CSS.'''
'''A l'é ancó nen stàit salvà!'''",
'userjspreview' => "'''Che as visa che a l'é mach antramentr che as fa na preuva ëd sò Javascript, che a l'é ancó pa stàit salvà!'''",
@@ -678,13 +699,16 @@ pàgine diferente për rintré ant ij lìmit técnich.'''",
A peul esse che a-j ven-a còmod copiesse via sò test e butesslo da na part për salvelo peuj.
L'aministrator che a l'ha fàit ël blocagi a l'ha dàit costa spiegassion: $1",
-'protectedpagewarning' => "'''AVIS: costa pàgina-sì a l'é staita blocà an manera che mach j'utent con la qualìfica da aministrator a peulo feje dle modìfiche.'''",
-'semiprotectedpagewarning' => "'''Nòta:'''costa pàgina-sì a l'é staita protegiùa an manera che mach j'utent registrà a peulo modifichela.",
+'protectedpagewarning' => "'''Avis: costa pàgina-sì a l'é stàita blocà an manera che mach j'utent con la qualìfica da aministrator a peulo feje dle modìfiche.'''
+L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
+'semiprotectedpagewarning' => "'''Nòta:''' Costa pàgina-sì a l'é stàita blocà an manera che mach j'utent registrà a peulo modifichela.
+L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
'cascadeprotectedwarning' => "'''Tension:''' sta pàgina-sì a l'é stàita blocà an manera che mach j'utent con la qualìfica da aministrator a peulo modifichela, për via che {{PLURAL:\$1|a l'é proteta|a-i intra ant le pàgine protete}} col sistema \"a cascada\":",
-'titleprotectedwarning' => "'''Atension: sta pàgina-sì a l'é stàita blocà an manera che a-i é dabzògn ëd [[Special:ListGroupRights|drit specìfich]] për creela.'''",
-'templatesused' => 'Stamp dovrà dzora a sta pàgina-sì:',
-'templatesusedpreview' => 'Stamp dovrà ant sta preuva-sì:',
-'templatesusedsection' => 'Stamp dovrà ant sta session-sì:',
+'titleprotectedwarning' => "'''Avis: sta pàgina-sì a l'é stàita blocà an manera che a-i é dabzògn ëd [[Special:ListGroupRights|drit specìfich]] për creela.'''
+L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
+'templatesused' => '{{PLURAL:$1|Stamp|Stamp}} dovrà dzora a sta pàgina-sì:',
+'templatesusedpreview' => '{{PLURAL:$1|Stamp|Stamp}} dovrà ant sta preuva-sì:',
+'templatesusedsection' => '{{PLURAL:$1|Stamp|Stamp}} dovrà ant sta session-sì:',
'template-protected' => '(protet)',
'template-semiprotected' => '(mes-protet)',
'hiddencategories' => 'Sta pàgina-sì a fa part ëd {{PLURAL:$1|na categorìa|$1 categorìe}} stërmà:',
@@ -693,16 +717,18 @@ L'aministrator che a l'ha fàit ël blocagi a l'ha dàit costa spiegassion: $1",
'nocreatetext' => "Cost sit-sì a l'ha limità la possibilità ëd creé dle pàgine neuve.
A peul torné andaré e modifiché na pàgina che a-i é già, ò pura [[Special:UserLogin|rintré ant ël sistema ò deurb-se un cont]].",
'nocreate-loggedin' => "A l'ha pa ij përmess për creé dle pàgine neuve.",
+'sectioneditnotsupported-title' => "La modìfica dla session a l'é nen prevëdùa",
+'sectioneditnotsupported-text' => "La modìfica dla session a l'é nen prevëdùa an costa pàgina ëd modìfica.",
'permissionserrors' => 'Eror ant ij përmess',
'permissionserrorstext' => "A l'ha pa ij përmess dont a fa da manca për {{PLURAL:$1|via che|via che}}:",
'permissionserrorstext-withaction' => "It l'has nen ij përmess për $2, për {{PLURAL:$1|cost motiv|costi motiv}}:",
-'recreate-deleted-warn' => "'''Ch'a fasa atension: a l'é an brova d'arcreé na pàgina ch'a l'era staita scancelà.'''
+'recreate-moveddeleted-warn' => "A l'é an camin ch'a crea torna na pàgina ch'a l'era stàita scancelà.'''
-Ch'a varda d'esse sigur ch'a vala la pen-a dë travajé ant sna pàgina parej.
+Ch'a varda d'esse sigur ch'a vala la pen-a ëd travajé an sna pàgina parèj.
Për soa comodità i-j mostroma la lista djë scancelament ch'a toco sta pàgina-sì:",
-'deleted-notice' => "Costa pàgina a l'é stàita scancelà.
-Ël registr ëd le scancelassion a l'é arportà sota për arferiment.",
-'deletelog-fulllog' => 'Varda ël registr ànter.',
+'moveddeleted-notice' => "Sta pàgina-sì a l'é stàita scancelà.
+Ël registr ëd le scancelassion e dij tramud a l'é arportà sota për arferiment.",
+'log-fulllog' => 'Varda tut ël registr',
'edit-hook-aborted' => "Modìfica anulà da n'estension.
A-i é pa gnun-e spiegassion.",
'edit-gone-missing' => 'As peul nen modifiché la pàgina.
@@ -725,6 +751,7 @@ Costi paràmeter a son stàit lassà fòra.",
'post-expand-template-argument-category' => 'Pàgine contenente stamp con paràmeter mancant',
'parser-template-loop-warning' => 'Trovà na liassa dlë stamp: [[$1]]',
'parser-template-recursion-depth-warning' => 'Passà ël lìmit ëd ricorsion dlë stamp ($1)',
+'language-converter-depth-warning' => 'Passà lìmit ëd profondità dël convertidor ëd lenghe ($1)',
# "Undo" feature
'undo-success' => "Sta modìfica-sì as peul scancelesse. Për piasì, ch'a contròla ambelessì sota për esse sigur che a l'é pro lòn che a veul fé, e peuj ch'as salva lòn ch'a l'ha butà chiel/chila për finì dë scancelé la modìfica ch'a-i era.",
@@ -742,9 +769,9 @@ La rason butà da $3 për ël blocagi a l'é stàita: ''$2''",
'viewpagelogs' => 'Smon ij registr dë sta pàgina-sì',
'nohistory' => "La stòria dle version dë sta pàgina-sì a l'é pa trovasse.",
'currentrev' => "Version dël dì d'ancheuj",
-'currentrev-asof' => 'Vërsion corenta dle $1',
+'currentrev-asof' => 'Version corenta dij $1',
'revisionasof' => 'Revision $1',
-'revision-info' => 'Revision al $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revision al $1; $2',
'previousrevision' => '←Version pì veja',
'nextrevision' => 'Revision pì neuva →',
'currentrevisionlink' => 'Vardé la version corenta',
@@ -757,7 +784,7 @@ La rason butà da $3 për ël blocagi a l'é stàita: ''$2''",
Legenda: (cor) = diferense con la version corenta,
(prim) = diferense con la version prima, c = modìfica cita',
'history-fieldset-title' => 'Varda la cronologìa',
-'deletedrev' => '[scancelà]',
+'history-show-deleted' => 'Mach ëscancelà',
'histfirst' => 'Prima',
'histlast' => 'Ùltima',
'historysize' => '({{PLURAL:$1|1|$1}} byte)',
@@ -766,73 +793,111 @@ Legenda: (cor) = diferense con la version corenta,
# Revision feed
'history-feed-title' => 'Stòria',
'history-feed-description' => 'Stòria dla pàgina ansima a sto sit-sì',
-'history-feed-item-nocomment' => '$1 al $2', # user at time
+'history-feed-item-nocomment' => '$1 al $2',
'history-feed-empty' => "La pàgina che a l'ha ciamà a-i é pa; a podrìa esse stàita scancelà da 'nt ël sit, ò pura tramudà a n'àutr nòm.
Che a verìfica con la [[Special:Search|pàgina d'arserca]] se a-i fusso mai dj'àutre pàgine che a podèisso andeje bin.",
# Revision deletion
-'rev-deleted-comment' => '(coment gavà)',
-'rev-deleted-user' => '(stranòm gavà)',
-'rev-deleted-event' => '(assion dël registr gavà)',
-'rev-deleted-text-permission' => "Costa revision dla pàgina-sì a l'é staita gavà via da 'nt j'archivi pùblich.
-A peul esse che a sio restajne chèich marca ant ël [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} Registr ëd jë scancelament].",
-'rev-deleted-text-view' => "Costa revision dla pàgina-sì a l'é staita gavà via da 'nt j'archivi pùblich.
-Coma aministrator d'ës sit-sì chiel a peul ës-ciairela;
-a peul esse che a sio restajne chèich marca ant ël [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Registr ëd jë scancelament].",
-'rev-deleted-no-diff' => "It peule pa vëdde sta diferensa-sì përchè un-a dle revision a l'é stàita '''scanselà'''.
-A peul essejne trassa ant ël [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registr dle scanselassion].",
-'rev-deleted-unhide-diff' => "Un-a dle revision dë sta diferensa-sì a l'é stàita '''scanselà'''.
-A peul essejne trassa ant ël [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registr dle scanselassion].
-Com aministrador it peule ancó [$1 vëdde sta diferensa-sì] se it veule.",
-'rev-delundel' => 'mostra/stërma',
-'revisiondelete' => 'Scancela/disdëscancela revision',
-'revdelete-nooldid-title' => 'Version nen spessificà',
-'revdelete-nooldid-text' => "A l'ha nen spessificà na version ëd la pàgina për aplicheje costa fonsion, la version spessificà a esist pa, o a preuva a stërmé la version corenta.",
-'revdelete-nologtype-title' => "Gnun-a sòrt d'argistr spessificà",
-'revdelete-nologtype-text' => "A l'ha nen spessificà na sòrt ëd registr për fé costa assion.",
-'revdelete-toomanytargets-title' => 'Tròpi target',
-'revdelete-toomanytargets-text' => "It l'has spessificà tròpe rase ëd target da feje costa assion.",
-'revdelete-nologid-title' => 'Intrada dël registr pa giusta',
-'revdelete-nologid-text' => "A l'ha pa spessificà n'event dël registr bërsaj andoa apliché costa fonsion o l'intrada spessificà a esist nen.",
-'revdelete-selected' => "'''{{PLURAL:$2|Revision|Revision}} selessionà për [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Event|Event}} dël registr selessionà:'''",
-'revdelete-text' => "'''Le version scancelà a së s-ciaireran sempe ant la stòria dla pàgina,
-ma sò test al pùblich a-j andran pì nen.'''
-
-J'àutri aministrator ëd sta wiki-sì a saran ancó sempe bon a s-ciairé ël contnù stërmà
-e a podran disdëscancelelo andré con la midema antërfacia, sempe che a sia nen staita butà
-na restrission adissional da j'operator dël sit.",
-'revdelete-suppress-text' => "La scancelassion a dovrìa '''mach''' esse dovrà për cost cas:
+'rev-deleted-comment' => '(coment gavà)',
+'rev-deleted-user' => '(stranòm gavà)',
+'rev-deleted-event' => '(assion dël registr gavà)',
+'rev-deleted-user-contribs' => '[nòm utent o adrëssa IP gavà - modìfica stërmà ai contributor]',
+'rev-deleted-text-permission' => "Sta revision-sì dla pàgina a l'é staita '''scancelà'''.
+A-i peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
+'rev-deleted-text-unhide' => "Sta version-sì dla pàgina a l'é stàita '''scancelà'''.
+A peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd la scancelassion].
+Com aministrator a peul ancó [$1 vardé sta version-sì] se a veul.",
+'rev-suppressed-text-unhide' => "Sta version-sì dla pàgina a l'é stàita '''gavà via'''.
+A peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd le scancelassion]. Com aministrator a peul ancó [$1 vëdde le diferense] se a n'ha damanca.",
+'rev-deleted-text-view' => "Costa revision dla pàgina-sì a l'é staita '''scancelà'''.
+Coma aministrator chiel a peul ës-ciairela; a peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
+'rev-suppressed-text-view' => "Costa revision dla pàgina-sì a l'é stàita '''gavà via'''.
+Coma aministrator chiel a peul ës-ciairela; a peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
+'rev-deleted-no-diff' => "A peul pa vëdde coste diferense përchè un-a dle revision a l'é stàita '''scancelà'''.
+A peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
+'rev-suppressed-no-diff' => "It peule pa vëdde sta diferensa-sì përchè un-a dle revision a l'é stàita '''scanselà'''.",
+'rev-deleted-unhide-diff' => "Un-a dle revision ëd coste diferense a l'é stàita '''scancelà'''.
+A peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd le scancelassion].
+Com aministrator it peule ancó [$1 vëdde le diferense] se a fà dbzògn.",
+'rev-suppressed-unhide-diff' => "Un-a dle revision dë sta diferensa-sì a l'é stàita '''scancelà'''.
+A peulo essnje dij detaj ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd le scancelassion].
+Com aministrator a peul ancò [$1 vëdde sta diferensa-sì] s'a veul.",
+'rev-deleted-diff-view' => "Un-a dle revision dë sta diferensa-sì a l'é stàita '''scancelà'''.
+Com aministrator it peule ancó vëdde sta diferensa-sì; a peulo ess-ie dij detaj ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd le scancelassion].",
+'rev-suppressed-diff-view' => "Un-a dle revision ëd costa diferensa-sì a l'é stàita '''eliminà'''.
+Tanme aministrator, a peul ancora s-ciairé costa diferensa; a peulo essje pì 'd detaj ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd j'eliminassion].",
+'rev-delundel' => 'mostra/stërma',
+'rev-showdeleted' => 'Mostra',
+'revisiondelete' => 'Scancela/disdëscancela revision',
+'revdelete-nooldid-title' => 'Version nen spessificà',
+'revdelete-nooldid-text' => "A l'ha nen spessificà na version ëd la pàgina për aplicheje costa fonsion, la version spessificà a esist pa, o a preuva a stërmé la version corenta.",
+'revdelete-nologtype-title' => "Gnun-a sòrt d'argistr spessificà",
+'revdelete-nologtype-text' => "A l'ha nen spessificà na sòrt ëd registr për fé costa assion.",
+'revdelete-nologid-title' => 'Intrada dël registr pa giusta',
+'revdelete-nologid-text' => "A l'ha pa spessificà n'event dël registr bërsaj andoa apliché costa fonsion o l'intrada spessificà a esist nen.",
+'revdelete-no-file' => "L'archivi sërcà a-i é pa.",
+'revdelete-show-file-confirm' => 'É-lo sigur ëd vorèj vëdde na vërsion scancelà dl\'archivi "<nowiki>$1</nowiki>" da $2 a $3?',
+'revdelete-show-file-submit' => 'Bò!',
+'revdelete-selected' => "'''{{PLURAL:$2|Revision|Revision}} selessionà për [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Event|Event}} dël registr selessionà:'''",
+'revdelete-text' => "Le version scancelà e j'event a së s-ciaireran sempe ant la stòria dla pàgina e ant ij registr, ma sò test al pùblich a j'andrà pì nen.'''
+J'àutri aministrator dzora a {{SITENAME}} a saran ancó sempe bon a s-ciairé ël contnù stërmà e a podran disdëscancelelo andré con la midema antërfacia, sempe che a sia nen stàita butà na restrission adissional.",
+'revdelete-confirm' => "Për piasì, ch'a confema ch'a veul fé sòn, ch'as rend cont dle conseguense, e ch'a lo fa an acòrd con [[{{MediaWiki:Policy-url}}|le régole]].",
+'revdelete-suppress-text' => "La scancelassion a dovrìa '''mach''' esse dovrà për cost cas:
* Anformassion përsonaj nen aproprià
*: ''adrësse ëd ca e nùmer ëd teléfon, còdes fiscaj, e via fòrt''",
-'revdelete-legend' => 'But-je coste limitassion-sì a le version scancelà:',
-'revdelete-hide-text' => 'Stërma ël test dla revision',
-'revdelete-hide-name' => 'Stërma assion e oget',
-'revdelete-hide-comment' => 'Stërma ël coment a la modìfica',
-'revdelete-hide-user' => "Stërma lë stranòm ò l'adrëssa IP dël contributor",
-'revdelete-hide-restricted' => "Stërmé j'anformassion a j'aministrator tan-me a j'àutri",
-'revdelete-suppress' => "Smon-je pa ij dat gnanca a j'aministrator",
-'revdelete-hide-image' => "Stërma ël contnù dl'archivi",
-'revdelete-unsuppress' => "Gava le limitassion da 'nt le version ciapà andaré",
-'revdelete-log' => 'Rason:',
-'revdelete-submit' => 'But-jlo a la version selessionà',
-'revdelete-logentry' => 'visibilità dla revision cangià për [[$1]]',
-'logdelete-logentry' => "a l'ha cangiaje visibilità a l'event [[$1]]",
-'revdelete-success' => "'''Visibilità dla revision modificà com ch'as dev.'''",
-'logdelete-success' => "'''Visibilità dla revision butà coma ch'as dev.'''",
-'revdel-restore' => 'cambia visibilità',
-'pagehist' => 'Stòria dla pàgina',
-'deletedhist' => 'Stòria scancelà',
-'revdelete-content' => 'contnù',
-'revdelete-summary' => 'resumé dla modìfica',
-'revdelete-uname' => 'stranòm',
-'revdelete-restricted' => "a l'ha aplicà le restrission a j'aministrator",
-'revdelete-unrestricted' => "restrission për j'aministrator gavà",
-'revdelete-hid' => 'stërma $1',
-'revdelete-unhid' => 'dëscoata $1',
-'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|revision|revision}}',
-'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|event|event}}',
+'revdelete-legend' => 'But-je coste limitassion-sì a le version scancelà:',
+'revdelete-hide-text' => 'Stërma ël test dla revision',
+'revdelete-hide-image' => "Stërma ël contnù dl'archivi",
+'revdelete-hide-name' => 'Stërma assion e oget',
+'revdelete-hide-comment' => 'Stërma ël coment a la modìfica',
+'revdelete-hide-user' => "Stërma lë stranòm ò l'adrëssa IP dël contributor",
+'revdelete-hide-restricted' => "Stërmé j'anformassion a j'aministrator tan-me a j'àutri",
+'revdelete-radio-same' => '(cambia pa)',
+'revdelete-radio-set' => 'É!',
+'revdelete-radio-unset' => 'Nò',
+'revdelete-suppress' => "Smon-je pa ij dat gnanca a j'aministrator",
+'revdelete-unsuppress' => "Gava le limitassion da 'nt le version ciapà andaré",
+'revdelete-log' => 'Rason:',
+'revdelete-submit' => 'Bùtejlo a {{PLURAL:$1|la version|le version}} selessionà',
+'revdelete-logentry' => 'visibilità dla revision cangià për [[$1]]',
+'logdelete-logentry' => "a l'ha cangiaje visibilità a l'event [[$1]]",
+'revdelete-success' => "'''Visibilità dla revision modificà com ch'as dev.'''",
+'revdelete-failure' => "'''La visibilità dla version a peul pa esse modificà:'''
+$1",
+'logdelete-success' => "'''Visibilità dla revision butà coma ch'as dev.'''",
+'logdelete-failure' => "'''La visibilità dël registr a peul pa esse ampostà:'''
+$1",
+'revdel-restore' => 'cambia visibilità',
+'pagehist' => 'Stòria dla pàgina',
+'deletedhist' => 'Stòria scancelà',
+'revdelete-content' => 'contnù',
+'revdelete-summary' => 'resumé dla modìfica',
+'revdelete-uname' => 'stranòm',
+'revdelete-restricted' => "a l'ha aplicà le restrission a j'aministrator",
+'revdelete-unrestricted' => "restrission për j'aministrator gavà",
+'revdelete-hid' => 'stërma $1',
+'revdelete-unhid' => 'dëscoata $1',
+'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|revision|revision}}',
+'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|event|event}}',
+'revdelete-hide-current' => "Eror an stërmand l'element datà $2, $1: costa-sì a l'é la version corenta.
+A peul pa esse stërmà.",
+'revdelete-show-no-access' => 'Eror an mostrand l\'element datà $2, $1: st\'element-sì a l\'é stàit marcà "riservà".
+It peule pa vëddlo.',
+'revdelete-modify-no-access' => 'Eror an modificand l\'element datà $2, $1: st\'element-sì a l\'é stàit marcà "riservà".
+It peule pa vëddlo.',
+'revdelete-modify-missing' => "Eror an modificand l'element con ID $1: a-i é pa ant la base ëd dàit!",
+'revdelete-no-change' => "'''Atension:''' l'element datà $2, $1 a l'ha già j'ampostassion ëd visibilità ciamà.",
+'revdelete-concurrent-change' => "Eror an modificand l'element $2, $1: sò stat a smija che a sia stàit cambià da cheidun d'àutri antramentre che chiel a provava a modifichelo. Për piasì, ch'a contròla ij registr.",
+'revdelete-only-restricted' => "Eror an stërmand l'element datà $2, $1: it peule pa vieté la vista d'element a j'aministrator sensa ëdcò selessioné un-a dj'àutre opsion ëd visibilità.",
+'revdelete-reason-dropdown' => "*Rason sòlite dë scancelassion
+** Violassion dël drit d'autor
+** Anformassion përsonaj pa aproprià",
+'revdelete-otherreason' => 'Àutra rason o adissional:',
+'revdelete-reasonotherlist' => 'Àutra rason',
+'revdelete-edit-reasonlist' => 'Modifiché la rason ëd lë scancelament',
+'revdelete-offender' => 'Autor ëd la revision:',
# Suppression log
'suppressionlog' => 'Registr ëd le scancelassion',
@@ -869,67 +934,13 @@ Ch'a varda mach che a-i ven-a nen fòra un rabel ant la continuità stòrica.",
'mergelogpagetext' => "Ambelessì sota a-i é na lista dj'ùltime vire che la stòria ëd na pàgina a l'é stàita butà ansema a cola 'd n'àutra.",
# Diffs
-'history-title' => 'Cronologìa dle modìfiche ëd "$1"',
-'difference' => '(Diferense antra revision)',
-'lineno' => 'Riga $1:',
-'compareselectedversions' => 'Paragon-a le version selessionà',
-'visualcomparison' => 'Conparassion visiva',
-'wikicodecomparison' => 'Comparassion dël wikitext',
-'editundo' => "buta 'me ch'a l'era",
-'diff-multi' => '({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} pa mostrà.)',
-'diff-movedto' => 'Spostà a $1',
-'diff-styleadded' => 'giontà lë stil $1',
-'diff-added' => 'giontà $1',
-'diff-changedto' => 'cambià a $1',
-'diff-movedoutof' => 'spostà fòra da $1',
-'diff-styleremoved' => 'stil $1 gavà',
-'diff-removed' => '$1 gavà',
-'diff-changedfrom' => 'cambià da $1',
-'diff-src' => 'sorziss',
-'diff-withdestination' => 'con destinassion $1',
-'diff-with' => '&#32;con $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'larghëssa',
-'diff-height' => 'autëssa',
-'diff-p' => "un '''paràgraf''",
-'diff-blockquote' => "na '''sitassion'''",
-'diff-h1' => "n''''antestassion (livel 1)'''",
-'diff-h2' => "n''''antestassion (livel 2)'''",
-'diff-h3' => "n''''antestassion (livel 3)'''",
-'diff-h4' => "n''''antestassion (livel 4)'''",
-'diff-h5' => "n''''antestassion (livel 5)'''",
-'diff-pre' => "un '''bloch preformatà'''",
-'diff-div' => "na '''division'''",
-'diff-ul' => "na '''lista pa ordinà'''",
-'diff-ol' => "na '''lista ordinà'''",
-'diff-li' => "n''''element ëd lista'''",
-'diff-table' => "na '''tàula'''",
-'diff-tbody' => "un '''contnù ëd tàula'''",
-'diff-tr' => "na '''riga'''",
-'diff-td' => "na '''sela'''",
-'diff-th' => "n''''antestassion'''",
-'diff-br' => "na '''rotura'''",
-'diff-hr' => "na '''linia orisontal'''",
-'diff-code' => "un '''blòch ëd còdes dël computer'''",
-'diff-dl' => "na '''lista ëd definission'''",
-'diff-dt' => "un '''termo ëd definission'''",
-'diff-dd' => "na '''definission'''",
-'diff-input' => "n''''input'''",
-'diff-form' => "na '''forma'''",
-'diff-img' => "na '''figura'''",
-'diff-span' => "në '''span'''",
-'diff-a' => "n''''anliura'''",
-'diff-i' => "'''corsiv'''",
-'diff-b' => "'''neiret'''",
-'diff-strong' => "'''neiret'''",
-'diff-em' => "'''emphasis'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''gròss'''",
-'diff-del' => "'''scancelà'''",
-'diff-tt' => "'''grandëssa fissa'''",
-'diff-sub' => "'''al pé'''",
-'diff-sup' => "'''an testa'''",
-'diff-strike' => "'''barà'''",
+'history-title' => 'Cronologìa dle modìfiche ëd "$1"',
+'difference' => '(Diferense antra revision)',
+'lineno' => 'Riga $1:',
+'compareselectedversions' => 'Paragon-a le version selessionà',
+'showhideselectedversions' => 'Smon-e/stërmé le version selessionà',
+'editundo' => "buta 'me ch'a l'era",
+'diff-multi' => '({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} pa mostrà.)',
# Search results
'searchresults' => "Arzultà dl'arserca",
@@ -937,28 +948,25 @@ Ch'a varda mach che a-i ven-a nen fòra un rabel ant la continuità stòrica.",
'searchresulttext' => "Për avèj pì d'anformassion ant sl'arserca interna ëd {{SITENAME}}, che a varda [[{{MediaWiki:Helppage}}|Arserca ant la {{SITENAME}}]].",
'searchsubtitle' => 'A l\'ha sërcà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute le pàgine che a ancamin-o con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute le pàgine che a men-o a "$1"]])',
'searchsubtitleinvalid' => 'Domanda "$1"',
-'noexactmatch' => "'''La pàgina \"\$1\" a-i é pa.''' As peul [[:\$1|creéla d'amblé]].",
-'noexactmatch-nocreate' => "'''A-i é pa gnun-a pàgina ciamà \"\$1\".'''",
'toomanymatches' => "Parèj a-i ven fòra tròpa ròba, për piasì, ch'a preuva n'arserca diferenta.",
'titlematches' => "Ant ij tìtoj dj'artìcoj",
'notitlematches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj tìtoj dj'articoj",
'textmatches' => "Ant ël test ëd j'artìcoj",
'notextmatches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj test dj'artìcoj",
-'prevn' => 'ij $1 prima',
-'nextn' => 'ij $1 peuj',
+'prevn' => 'ij {{PLURAL:$1|$1}} prima',
+'nextn' => 'ij {{PLURAL:$1|$1}} peuj',
'prevn-title' => '$1 {{PLURAL:$1|arzultà|arzultà}} prima',
'nextn-title' => '$1 {{PLURAL:$1|arzultà|arzultà}} apress',
'shown-title' => 'Smon-e $1 {{PLURAL:$1|arzultà|arzultà}} për pàgina',
-'viewprevnext' => 'Che a varda ($1) ($2) ($3).',
+'viewprevnext' => 'Che a varda ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => "Opsion d'arserca",
'searchmenu-exists' => "'''A-i é na pàgina ciamà \"[[:\$1]]\" dzora a costa wiki'''",
'searchmenu-new' => "'''Creé la pàgina «[[:$1]]» ansima a sta wiki-sì!'''",
'searchhelp-url' => 'Help:Contnù',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualisé le pàgine con sto prefiss-sì]]',
-'searchprofile-articles' => 'Pàgine dij contnù',
-'searchprofile-articles-and-proj' => 'Contnù & pàgine ëd proget',
-'searchprofile-project' => 'Pàgine dël proget',
-'searchprofile-images' => 'File',
+'searchprofile-articles' => 'Pàgine ëd contnù',
+'searchprofile-project' => "Pàgine d'agiut e ëd proget",
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tut',
'searchprofile-advanced' => 'Avansà',
'searchprofile-articles-tooltip' => 'Sërché an $1',
@@ -966,8 +974,6 @@ Ch'a varda mach che a-i ven-a nen fòra un rabel ant la continuità stòrica.",
'searchprofile-images-tooltip' => "Sërché dj'archivi",
'searchprofile-everything-tooltip' => 'Sërché daspërtut (ëdcò ant le pàgine ëd discussion)',
'searchprofile-advanced-tooltip' => 'Sërché ant jë spassi nominaj përsonalisà',
-'prefs-search-nsdefault' => 'Serca an dovrand ij default:',
-'prefs-search-nscustom' => 'Serca ant ij namespace përsonalisà:',
'search-result-size' => '$1 ({{PLURAL:$2|un|$2}} mòt)',
'search-result-score' => 'Arlevansa: $1%',
'search-redirect' => '(ridiression $1)',
@@ -980,11 +986,12 @@ Ch'a varda mach che a-i ven-a nen fòra un rabel ant la continuità stòrica.",
'search-mwsuggest-disabled' => 'gnun sugeriment',
'search-relatedarticle' => 'Corelà',
'mwsuggest-disable' => 'Disabilité ij sugeriment AJAX',
+'searcheverything-enable' => 'Sërché ant tùit jë spassi nominaj',
'searchrelated' => 'corelà',
'searchall' => 'tuti',
'showingresults' => "Ambelessì-sota a treuva fin a {{PLURAL:$1|'''1'''|'''$1'''}} arzultà, a parte dal nùmer #'''$2'''.",
'showingresultsnum' => "Ambelessì-sota a treuva {{PLURAL:$3|'''1'''|'''$3'''}} arzultà a parte da #'''$2'''.",
-'showingresultstotal' => "Ambelessì sota a së s-ciàiro j'{{PLURAL:$4|arzultà '''$1''' ëd '''$3'''|arzultà '''$1 - $2''' ëd '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Arzultà '''$1''' ëd '''$3'''|Arzultà '''$1 - $2''' ëd '''$3'''}} për '''$4'''",
'nonefound' => "'''Nòta''': për stàndard a s'arserca mach an chèich ëspassi nominal.
Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an tùit jë spassi nominaj (comprèis le discussion, jë stamp, e via fòrt), o ch'a deuvra lë spassi nominal vorsù com prefiss.",
'search-nonefound' => "A-i é gnun arzultà për l'arserca.",
@@ -993,94 +1000,134 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
'powersearch-ns' => 'Sërché ant jë spassi nominaj:',
'powersearch-redir' => 'Smon-e le ridiression',
'powersearch-field' => 'Sërché',
+'powersearch-togglelabel' => 'Buté na marca:',
+'powersearch-toggleall' => 'Tùit',
+'powersearch-togglenone' => 'Gnun',
'search-external' => 'Arserca esterna',
'searchdisabled' => "L'arserca anterna ëd {{SITENAME}} a l'é nen abilità; për adess a peul prové a dovré un motor d'arserca estern coma Google. (Però che a ten-a da ment che ij contnù ëd {{SITENAME}} listà ant ij motor pùblich a podrìo ëdcò esse nen d'autut agiornà)",
+# Quickbar
+'qbsettings' => 'Regolassion dla bara dij menù',
+'qbsettings-none' => 'Gnun',
+'qbsettings-fixedleft' => 'Fissà a la man ësnista',
+'qbsettings-fixedright' => 'Fissà a la man drita',
+'qbsettings-floatingleft' => 'Flotant a la man ësnista',
+'qbsettings-floatingright' => 'Flotant a la man drita',
+
# Preferences page
-'preferences' => 'Mè gust',
-'mypreferences' => 'mè gust',
-'prefs-edits' => 'Nùmer ëd modìfiche fàite:',
-'prefsnologin' => "A l'é ancó pa rintrà ant ël sistema",
-'prefsnologintext' => 'A dev [[Special:UserLogin|rintré ant ël sistema]]
-për podej specifiché ij sò gust.',
-'prefsreset' => 'Ij "sò gust" a son stait pijait andré da \'nt la memòria dël server ëd {{SITENAME}}.',
-'qbsettings' => 'Regolassion dla bara dij menù',
-'qbsettings-none' => 'Gnun',
-'qbsettings-fixedleft' => 'Fissà a la man ësnista',
-'qbsettings-fixedright' => 'Fissà a la man drita',
-'qbsettings-floatingleft' => 'Flotant a la man ësnista',
-'qbsettings-floatingright' => 'Flotant a la man drita',
-'changepassword' => 'Cangé la ciav',
-'skin' => 'Facia',
-'skin-preview' => 'Preuva',
-'math' => 'Fòrmule ëd matemàtica',
-'dateformat' => 'Forma dla data',
-'datedefault' => "Franch l'istess",
-'datetime' => 'Data e ora',
-'math_failure' => 'Parsificassion falà',
-'math_unknown_error' => 'Eror nen conossù',
-'math_unknown_function' => 'funsion che as sa pa lòn che a la sia',
-'math_lexing_error' => 'eror ëd léssich',
-'math_syntax_error' => 'eror ëd sintassi',
-'math_image_error' => 'Conversion a PNG falà; che a contròla che latex, dvips, gs, e convert a sio instalà giust',
-'math_bad_tmpdir' => "Ël sistema a-i la fa pa a creé la diretriss '''math temp''', ò pura a-i la fa nen a scriv-je andrinta",
-'math_bad_output' => "Ël sistema a-i la fa pa a creé la diretriss '''math output''', ò pura a-i la fa nen a scriv-je andrinta",
-'math_notexvc' => 'Pa gnun texvc executable; për piasì, che a contròla math/README për la configurassion.',
-'prefs-personal' => "Profil dl'utent",
-'prefs-rc' => 'Ùltime modìfiche',
-'prefs-watchlist' => 'Ròba che as ten sot euj',
-'prefs-watchlist-days' => 'Vàire dì che a veul ës-ciairé an soa lista ëd lòn che as ten sot euj:',
-'prefs-watchlist-days-max' => '(al pì 7 di)',
-'prefs-watchlist-edits' => 'Vàire modìfiche che a veul ës-ciairé con le funsion avansà:',
-'prefs-watchlist-edits-max' => '(al pì: 1000)',
-'prefs-misc' => 'Sòn e lòn',
-'prefs-resetpass' => 'Cangé la ciav',
-'saveprefs' => 'Salvé ij sò gust',
-'resetprefs' => 'Buté torna ij "mè gust" coma a-i ero al prinsipi',
-'restoreprefs' => "Buté torna j'ampostassion dë stàndard",
-'textboxsize' => 'Amzure dël quàder ëd modìfica dël test',
-'prefs-edit-boxsize' => 'Dimension ëd la fnesta ëd modìfica.',
-'rows' => 'Righe:',
-'columns' => 'Colòne:',
-'searchresultshead' => "Specifiché soe preferense d'arserca",
-'resultsperpage' => 'Arzultà da mostré për vira pàgina:',
-'contextlines' => 'Righe ëd test për minca arzultà:',
-'contextchars' => 'Caràter për riga:',
-'stub-threshold' => 'Valor mìnim për j\'<a href="#" class="stub">anliure a jë sbòss</a>:',
-'recentchangesdays' => "Vàire dì smon-e ant j'ùltime modìfiche:",
-'recentchangesdays-max' => '(al pì $1 {{PLURAL:$1|di|di}})',
-'recentchangescount' => "Nùmer ëd tìtoj ant j'ùltime modìfiche",
-'savedprefs' => 'Ij sò gust a son ëstàit salvà.',
-'timezonelegend' => 'Fus orari:',
-'timezonetext' => "Che a buta ël nùmer d'ore ëd diferensa antra soa ora local e l'ora dël server (UTC).",
-'localtime' => 'Ora local:',
-'timezoneselect' => 'Fus orari:',
-'timezoneuseserverdefault' => 'Dovré lë stàndard dël servent',
-'timezoneuseoffset' => 'Àutr (spessifiché la diferensa)',
-'timezoneoffset' => 'Diferensa oraria¹:',
-'servertime' => 'Ora dël servent:',
-'guesstimezone' => "Ciapa sù l'ora da 'nt ël mè programa ëd navigassion (browser)",
-'timezoneregion-africa' => 'Àfrica',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antàrtid',
-'timezoneregion-arctic' => 'Àrtich',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Océan Atlàntich',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Euròpa',
-'timezoneregion-indian' => 'Océan Indian',
-'timezoneregion-pacific' => 'Océan Passìfich',
-'allowemail' => "Lassa che j'àutri utent am mando ëd mëssagi ëd pòsta eletrònica",
-'prefs-searchoptions' => "Opsion d'arserca",
-'prefs-namespaces' => 'Spassi nominaj',
-'defaultns' => 'Se as dis nen divers, as sërca ant costi spassi nominaj-sì:',
-'default' => 'stàndard',
-'files' => 'Archivi',
-'prefs-custom-css' => 'CSS përsonaj',
-'prefs-custom-js' => 'JS përsonaj',
+'preferences' => 'Mè gust',
+'mypreferences' => 'mè gust',
+'prefs-edits' => 'Nùmer ëd modìfiche fàite:',
+'prefsnologin' => "A l'é ancó pa rintrà ant ël sistema",
+'prefsnologintext' => 'A deuv esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intrà ant ël sistema]</span> për amposté ij sò gust.',
+'changepassword' => 'Cangé la ciav',
+'prefs-skin' => 'Facia',
+'skin-preview' => 'Preuva',
+'prefs-math' => 'Fòrmule ëd matemàtica',
+'datedefault' => "Franch l'istess",
+'prefs-datetime' => 'Data e ora',
+'prefs-personal' => "Profil dl'utent",
+'prefs-rc' => 'Ùltime modìfiche',
+'prefs-watchlist' => 'Ròba che as ten sot euj',
+'prefs-watchlist-days' => 'Vàire dì che a veul ës-ciairé an soa lista ëd lòn che as ten sot euj:',
+'prefs-watchlist-days-max' => 'Al pì 7 di',
+'prefs-watchlist-edits' => 'Vàire modìfiche che a veul ës-ciairé con le funsion avansà:',
+'prefs-watchlist-edits-max' => 'Nùmer màssim: 1000',
+'prefs-watchlist-token' => 'Geton ëd lòn che as ten sot euj:',
+'prefs-misc' => 'Sòn e lòn',
+'prefs-resetpass' => 'Cangé la ciav',
+'prefs-email' => 'Opsion ëd pòsta eletrònica',
+'prefs-rendering' => 'Sembiansa',
+'saveprefs' => 'Salvé ij sò gust',
+'resetprefs' => 'Buté torna ij "mè gust" coma a-i ero al prinsipi',
+'restoreprefs' => "Buté torna j'ampostassion dë stàndard",
+'prefs-editing' => 'Quàder ëd modìfica dël test',
+'prefs-edit-boxsize' => 'Dimension ëd la fnesta ëd modìfica.',
+'rows' => 'Righe:',
+'columns' => 'Colòne:',
+'searchresultshead' => "Specifiché soe preferense d'arserca",
+'resultsperpage' => 'Arzultà da mostré për vira pàgina:',
+'contextlines' => 'Righe ëd test për minca arzultà:',
+'contextchars' => 'Caràter për riga:',
+'stub-threshold' => 'Valor mìnim për j\'<a href="#" class="stub">anliure a jë sbòss</a>:',
+'recentchangesdays' => "Vàire dì smon-e ant j'ùltime modìfiche:",
+'recentchangesdays-max' => '(al pì $1 {{PLURAL:$1|di|di}})',
+'recentchangescount' => 'Nùmer ëd modìfiche da smon-e për stàndard:',
+'prefs-help-recentchangescount' => "Sòn a comprend j'ùltime modìfiche, le stòrie dle pàgine e ij registr.",
+'prefs-help-watchlist-token' => "An ampinend sto camp-sì con na ciav segreta as genererà un fluss RSS për la ròba che as ten sot euj.
+Chicassìa che a conossa la ciav an sto camp-sì a podrà lese la ròba ch'a ten sot euj, parèj ch'a serna un valor sigur.
+Ambelessì a-i é un valor generà a asar che a peul dovré: $1",
+'savedprefs' => 'Ij sò gust a son ëstàit salvà.',
+'timezonelegend' => 'Fus orari:',
+'localtime' => 'Ora local:',
+'timezoneuseserverdefault' => 'Dovré lë stàndard dël servent',
+'timezoneuseoffset' => 'Àutr (spessifiché la diferensa)',
+'timezoneoffset' => 'Diferensa oraria¹:',
+'servertime' => 'Ora dël servent:',
+'guesstimezone' => "Ciapa sù l'ora da 'nt ël mè programa ëd navigassion (browser)",
+'timezoneregion-africa' => 'Àfrica',
+'timezoneregion-america' => 'América',
+'timezoneregion-antarctica' => 'Antàrtid',
+'timezoneregion-arctic' => 'Àrtich',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Océan Atlàntich',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Euròpa',
+'timezoneregion-indian' => 'Océan Indian',
+'timezoneregion-pacific' => 'Océan Passìfich',
+'allowemail' => "Lassa che j'àutri utent am mando ëd mëssagi ëd pòsta eletrònica",
+'prefs-searchoptions' => "Opsion d'arserca",
+'prefs-namespaces' => 'Spassi nominaj',
+'defaultns' => 'Dësnò, sërché an costi spassi nominaj-sì:',
+'default' => 'stàndard',
+'prefs-files' => 'Archivi',
+'prefs-custom-css' => 'CSS përsonaj',
+'prefs-custom-js' => 'JS përsonaj',
+'prefs-reset-intro' => 'A peul dovré costa pàgina për amposté torna ij sò gust a coj dë stàndard.
+Sòn a peul pa esse anulà.',
+'prefs-emailconfirm-label' => "Conferma dl'adrëssa ëd pòsta eletrònica:",
+'prefs-textboxsize' => 'Dimension ëd la fnestra ëd modìfica',
+'youremail' => 'Soa adrëssa ëd pòsta eletrònica:',
+'username' => 'Stranòm:',
+'uid' => "ID dl'utent:",
+'prefs-memberingroups' => 'Mèmber {{PLURAL:$1|dla partìa|dle partìe}}:',
+'prefs-memberingroups-type' => '$1',
+'prefs-registration' => 'Data ëd registrassion:',
+'prefs-registration-date-time' => '$1',
+'yourrealname' => 'Nòm vèir:',
+'yourlanguage' => 'Lenga:',
+'yourvariant' => 'Variant:',
+'yournick' => 'Sò stranòm (për firmé):',
+'prefs-help-signature' => 'Ij coment an sle pàgine ëd discussion a dovrìo esse firmà con "<nowiki>~~~~</nowiki>" che a sarà convertì ant soa firma e orari.',
+'badsig' => "Soa firma a l'é nen giusta, che a controla j'istrussion HTML.",
+'badsiglength' => "Sò stranòm a l'é tròp longh.
+A deuv nen esse pì longh che $1 {{PLURAL:$1|caràter|caràter}}.",
+'yourgender' => 'Sess:',
+'gender-unknown' => 'Nen spessificà',
+'gender-male' => 'Òm',
+'gender-female' => 'Fomna',
+'prefs-help-gender' => "Opsional: a l'é dovrà për adaté ël programa al géner.
+Costa anformassion a sarà pùblica.",
+'email' => 'Pòsta eletrònica',
+'prefs-help-realname' => '* Nòm vèir (opsional): se i sërne da butelo ambelessì a sarà dovrà për deve mérit ëd vòstr travaj.',
+'prefs-help-email' => "L'adrëssa ëd pòsta eletrònica a l'é opsional: ma a lassa che na neuva ciav a sia spedìa se a dësmentia soa ciav.
+A peul ëdcò serne ëd lassé che j'àutri a lo contato an soa pàgina d'utent o ëd ciaciarade sensa dabzògn ëd rivelé soa identità.",
+'prefs-help-email-required' => "A-i va l'adrëssa ëd pòsta eletrònica.",
+'prefs-info' => 'Anformassion ëd base',
+'prefs-i18n' => 'Antërnassionalisassion',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Formà dla data',
+'prefs-timeoffset' => "Diferensa d'ora",
+'prefs-advancedediting' => 'Opsion avansà',
+'prefs-advancedrc' => 'Opsion avansà',
+'prefs-advancedrendering' => 'Opsion avansà',
+'prefs-advancedsearchoptions' => 'Opsion avansà',
+'prefs-advancedwatchlist' => 'Opsion avansà',
+'prefs-display' => 'Opsion ëd visualisassion',
+'prefs-diffs' => 'Diferense',
# User rights
-'userrights' => "Gestion dij drit dj'utent", # Not used as normal message but as header for the special page itself
+'userrights' => "Gestion dij drit dj'utent",
'userrights-lookup-user' => "Gestion dle partìe d'utent",
'userrights-user-editname' => 'Che a buta në stranòm:',
'editusergroup' => "Modifiché le partìe d'utent",
@@ -1088,6 +1135,7 @@ për podej specifiché ij sò gust.',
'userrights-editusergroup' => "Modifiché le partìe dl'utent",
'saveusergroups' => "Salvé le partìe d'utent",
'userrights-groupsmember' => "A l'é andrinta a:",
+'userrights-groupsmember-auto' => 'Mèmber amplìssit ëd:',
'userrights-groups-help' => "A peul cambié le partìe anté ch'a l'é st'utent-sì:
* Na casela marcà a veul dì che l'utent a l'é an cola partìa.
* Na casela nen marcà a veul dì che l'utent a l'é pa an cola partìa.
@@ -1152,6 +1200,7 @@ për podej specifiché ij sò gust.',
'right-bigdelete' => 'Scancelé dle pàgine con na stòria longa',
'right-deleterevision' => 'Scancelé e disdëscancelé na version ëspessìfica ëd na pàgina',
'right-deletedhistory' => 'Vardé le revision ëscancelà ëd la stòria, sensa sò test',
+'right-deletedtext' => 'Vëdde ël test ëscancelà e le modìfiche antra le revision ëscancelà',
'right-browsearchive' => 'Sërché dle pàgine scancelà',
'right-undelete' => 'Arcuperé na pàgina',
'right-suppressrevision' => "Esaminé e arcuperé le revision stërmà da j'aministrator",
@@ -1165,6 +1214,8 @@ për podej specifiché ij sò gust.',
'right-editprotected' => 'Modifiché le pàgine protegiùe (sensa protession a cascada)',
'right-editinterface' => "Modifiché l'antërfacia utent",
'right-editusercssjs' => "Modifiché j'archivi CSS e JavaScript d'àutri utent",
+'right-editusercss' => "Modifiché j'archivi CSS d'àutri utent",
+'right-edituserjs' => "Modifiché j'archivi JavaScript d'àutri utent",
'right-rollback' => "Gavé an pressa le modìfiche ëd l'ùltim utent che a l'ha modificà na pàgina particolar",
'right-markbotedits' => "Marché le modìfiche tirà andré com modìfiche d'un trigomiro",
'right-noratelimit' => "Nen esse tocà dal lìmit d'assion",
@@ -1181,6 +1232,8 @@ për podej specifiché ij sò gust.',
'right-siteadmin' => 'Bloché e dësbloché la base ëd dàit',
'right-reset-passwords' => "Modifiché le ciav d'àutri utent",
'right-override-export-depth' => 'Esporté le pàgine ancludend le pàgine colegà fin-a a na profondeur ëd 5',
+'right-versiondetail' => "Mosta j'anformassion estèise dla vërsion dël software",
+'right-sendemail' => "Mandé un mëssagi an pòsta eletrònica a j'àutri utent",
# User rights log
'rightslog' => "Argistr dij drit ëd j'utent",
@@ -1230,6 +1283,15 @@ për podej specifiché ij sò gust.',
'recentchanges-legend' => "Opsion dj'ùltime modìfiche",
'recentchangestext' => 'An costa pàgina as ten cont dle modìfiche pì recente a la wiki.',
'recentchanges-feed-description' => 'Trassé le modìfiche dla wiki pì davzin-e ant ël temp an cost fluss.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - pàgina neuva',
+'recentchanges-label-newpage' => "Sta modìfica-sì a l'ha creà na neuva pàgina",
+'recentchanges-legend-minor' => '$1 - modìfica cita',
+'recentchanges-label-minor' => "Costa a l'é na modìfica cita",
+'recentchanges-legend-bot' => '$1 - modìfica ëd trigomiro',
+'recentchanges-label-bot' => "Sa modìfica a l'é stàita fàita da un trigomiro",
+'recentchanges-legend-unpatrolled' => '$1 - modìfica nen verificà',
+'recentchanges-label-unpatrolled' => "Sta modìfica-sì a l'é pa ancó stàita verificà",
'rcnote' => "Ambelessì sota a-i {{PLURAL:$1|é '''1''' modìfica|son j'ùltime '''$1''' modìfiche}} ant j'ùltim {{PLURAL:$2|di|'''$2''' di}}, a parte da $5 dël $4.",
'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
'rclistfrom' => 'Mostré le modìfiche a parte da $1',
@@ -1256,6 +1318,8 @@ për podej specifiché ij sò gust.',
# Recent changes linked
'recentchangeslinked' => 'Modìfiche colegà',
+'recentchangeslinked-feed' => 'Modìfiche colegà',
+'recentchangeslinked-toolbox' => 'Modìfiche colegà',
'recentchangeslinked-title' => 'Modìfiche ch\'a-i intro con "$1"',
'recentchangeslinked-noresult' => "Ant ël moment dont ës parla a-i é pa staie gnun-a modìfica a le pàgine con dj'anliure ch'a men-o ambelessì.",
'recentchangeslinked-summary' => "Costa a l'é na lista ëd modìfiche fàite da pòch a pàgine colegà a cola spessifià (o a mèmber ëd na categorìa spessifià).
@@ -1266,8 +1330,8 @@ Jë pàgine an dzora a [[Special:Watchlist|la lista ch'it ten-e sot euj]] a rest
# Upload
'upload' => 'Carié',
'uploadbtn' => 'Carié',
-'reupload' => 'Caria torna',
'reuploaddesc' => 'Torné al mòdulo ëd domanda për carié archivi',
+'upload-tryagain' => 'Anseriss la descrission dël file modificà',
'uploadnologin' => 'Pa an drinta al sistema',
'uploadnologintext' => "A dev [[Special:UserLogin|rintré ant ël sistema]]
për podej carié dj'archivi.",
@@ -1300,6 +1364,7 @@ Varda l'[[Special:NewFiles|elench dij file neuv]] për na presentassion pì visu
'minlength1' => "Ël nòm dl'archivi a dev esse longh almanch un caràter.",
'illegalfilename' => 'Ël nòm d\'archivi "$1" a l\'ha andrinta dij caràter che as peulo pa dovresse ant ij tìtoj dle pàgine. Për piasì che a-j cangia nòm e peui che a torna a carielo.',
'badfilename' => 'Ël nòm dl\'archivi a l\'é stait cambià an "$1".',
+'filetype-mime-mismatch' => "L'estension dl'archivi a rispeta pa la sòrt ëd MIME.",
'filetype-badmime' => 'J\'archivi dla sòrt MIME "$1" as peulo nen carié.',
'filetype-bad-ie-mime' => 'As peul pa carié sto file-sì përchè Internet Explorer a podrìa considerelo com "$1", che a l\'é na rasa ëd file vietà e potensialment pericolos.',
'filetype-unwanted-type' => "'''\".\$1\"''' a l'é na sòrt d'archivi ch'as pija nen ëd bon-a veuja.
@@ -1322,7 +1387,6 @@ Për podej buté sò somari a l'ha da modifichesse la pàgina a man.
* Nòm dl'archivi ch'as carìa: '''<tt>[[:$1]]</tt>'''
* Nòm dl'archivi ch'a-i é già: '''<tt>[[:$2]]</tt>'''
Për piasì, ch'a serna un nòm diferent.",
-'fileexists-thumb' => "<center>'''Figura ch'a-i é'''</center>",
'fileexists-thumbnail-yes' => "L'archivi a-j ëmsija a na ''figurin-a''. [[$1|thumb]]
Për piasì, ch'a contròla l'archivi '''<tt>[[:$1]]</tt>'''.
S'a l'é la midema figura a amzura pijn-a, a veul dì ch'a fa nen dë manca dë carié na figurin-a.",
@@ -1338,6 +1402,7 @@ Se it veule ancó carié tò file, për piasì torna andré e dòvra un nòm dif
A dovrìa controlé la stòria djë scancelament ëd l'archivi prima ëd carielo torna.",
'successfulupload' => 'Carià complet',
'uploadwarning' => 'Avis che i soma dapress a carié',
+'uploadwarning-text' => 'Për piasì modìfica la descrission dël file sota e preuva torna.',
'savefile' => "Salva l'archivi",
'uploadedimage' => 'a l\'ha carià "[[$1]]"',
'overwroteimage' => 'a l\'ha carìa na version neuva ëd "[[$1]]"',
@@ -1346,11 +1411,14 @@ A dovrìa controlé la stòria djë scancelament ëd l'archivi prima ëd carielo
'php-uploaddisabledtext' => "Ël caricament ëd file a l'é disabilità an PHP.
Për piasì controla l'ampostassion file_uploads.",
'uploadscripted' => "St'archivi-sì a l'ha andrinta chèich-còs (dël còdes HTML ò pura dlë script) che a podrìe esse travajà mal da chèich programa ëd navigassion (browser).",
-'uploadcorrupt' => "St'archivi-sì ò che a l'é falà ò che a l'ha n'estension cioca. Për piasì, che as contròla l'archivi e peuj che a preuva torna a carielo.",
'uploadvirus' => "St'archivi-sì a l'han andrinta un '''vìrus!''' Detaj: $1",
+'upload-source' => 'Archivi sorgiss',
'sourcefilename' => "Nòm dl'archivi sorgiss:",
+'sourceurl' => 'URL sorgiss',
'destfilename' => "Nòm dl'archivi ëd destinassion:",
'upload-maxfilesize' => 'Dimension massima dël file: $1.',
+'upload-description' => "Descrission dl'archivi",
+'upload-options' => 'Opsion për carié',
'watchthisupload' => "Ten d'euj sto file-sì.",
'filewasdeleted' => "N'archivi con ës nòm-sì a l'é gia stait caria e peui scancelà. Për piasì, che a verìfica $1 anans che carielo n'àutra vira.",
'upload-wasdeleted' => "'''Dosman: a l'é antramentr ch'a carìa torna n'archivi ch'a l'era dëscancelasse.'''
@@ -1373,15 +1441,46 @@ MGP # Pentax
PICT # vàire marche diferente
#</pre> <!-- ch'a lassa sta riga-sì tanme ch'a l'é -->",
-'upload-proto-error' => 'Protocòl cioch',
-'upload-proto-error-text' => "Për carié da dij servent lontan a venta buté dj'anliure ch'as anandio për <code>http://</code> ò pura <code>ftp://</code>.",
-'upload-file-error' => 'Eror antern',
-'upload-file-error-text' => "A l'é rivaie n'eror antern dëmentrè che as fasìa n'archivi provisòri ant sël servent.
+'upload-proto-error' => 'Protocòl cioch',
+'upload-proto-error-text' => "Për carié da dij servent lontan a venta buté dj'anliure ch'as anandio për <code>http://</code> ò pura <code>ftp://</code>.",
+'upload-file-error' => 'Eror antern',
+'upload-file-error-text' => "A l'é rivaie n'eror antern dëmentrè che as fasìa n'archivi provisòri ant sël servent.
Për piasì, ch'as butà an comunicassion con n'[[Special:ListUsers/sysop|aministrador]].",
-'upload-misc-error' => "Eror nen identificà antramentr ch'as cariava",
-'upload-misc-error-text' => "A l'é staie n'eror nen identificà dëmentrè ch'as cariava chèich-còs.
+'upload-misc-error' => "Eror nen identificà antramentr ch'as cariava",
+'upload-misc-error-text' => "A l'é staie n'eror nen identificà dëmentrè ch'as cariava chèich-còs.
Për piasì, ch'a varda che soa anliura a sia bon-a e che a l'arsponda e peuj ch'a preuva torna.
Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:ListUsers/sysop|aministrador]].",
+'upload-too-many-redirects' => "L'URT a l'avìa tròpe rediression",
+'upload-unknown-size' => 'Dimension pa conossùa',
+'upload-http-error' => "A l'é stàit-ie n'eror HTTP: $1.",
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acess negà',
+'img-auth-nopathinfo' => "PATH_INFO mancant.
+Tò server a l'é pa ampostà për passé sta anformassion-sì.
+A peul esse basà an sij CGI e a peul pa apogé img_auth.
+Varda http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "Ël path ciamà a l'é pa ant la directory configurà për carié.",
+'img-auth-badtitle' => 'As peul pa fesse un tìtol bon për "$1".',
+'img-auth-nologinnWL' => 'It ses pa intrà e "$1" a l\'é pa ant la whitelist.',
+'img-auth-nofile' => 'Ël file "$1" a esist pa.',
+'img-auth-isdir' => 'It ses an mente ch\'it preuve a andé ant na directory "$1".
+As peul mach acede ai file.',
+'img-auth-streaming' => 'Streaming "$1".',
+'img-auth-public' => "La funsion d'img_auth.php a l'é ëd dé an output file da na wiki privà.
+Sta wiki-sì a l'é configurà com na wiki pùblica.
+Për na sicurëssa otimal, img_auth.php a l'é disabilità.",
+'img-auth-noread' => 'L\'utent a l\'ha pa ij privilegi për lese "$1".',
+
+# HTTP errors
+'http-invalid-url' => "Adrëssa dl'aragnà pa bon-a: $1.",
+'http-invalid-scheme' => 'J\'adrësse dl\'aragnà con lë schema "$1" a son pa sostnùe',
+'http-request-error' => "Arcesta Http falìa për n'eror pa conossù.",
+'http-read-error' => 'Eror ëd letura HTTP.',
+'http-timed-out' => "L'arcesta HTTP a l'ha finì ël temp.",
+'http-curl-error' => "Eror an sërcand l'URL: $1.",
+'http-host-unreachable' => "L'anliura a l'arspond pa",
+'http-bad-status' => "A l'é staje un problema durant l'arcesta HTTP: $1 $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "L'anliura a l'arspond pa",
@@ -1390,6 +1489,7 @@ Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:Li
'upload-curl-error28-text' => "Ël sit a-i buta tròp temp a arspònde. Për piasì, ch'a contròla che a funsion-a, ch'a speta na minuta e peuj che a torna a prové. A peul esse che a-j ven-a a taj serne un moment che ës sit a sia nen tant crarià ëd tràfich.",
'license' => 'Licensa:',
+'license-header' => 'Licensa',
'nolicense' => 'Pa gnun-a selession faita',
'license-nopreview' => "(Gnun-a preuva ch'as peula smon-se)",
'upload_source_url' => " (n'anliura bon-a e che as peula dovresse)",
@@ -1410,38 +1510,42 @@ Ch'a-i bata 'n colp col rat ansima a j'antestassion dle colòne për cangé órd
'listfiles_count' => 'Vërsion',
# File description page
-'filehist' => "Stòria dl'archivi",
-'filehist-help' => "Ch'a-i daga un colp col rat ant sna cobia data/ora për ës-ciairé coma restèissa l'archivi ant col moment-là.",
-'filehist-deleteall' => 'dëscancelé tut',
-'filehist-deleteone' => 'scansela',
-'filehist-revert' => "buté torna 'me ch'a lera",
-'filehist-current' => "dël dì d'ancheuj",
-'filehist-datetime' => 'Data e Ora',
-'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => 'Figurin-a dla vërsion dle $1',
-'filehist-nothumb' => 'Gnun-e miniature',
-'filehist-user' => 'Utent',
-'filehist-dimensions' => 'Amzure',
-'filehist-filesize' => "Amzure dl'archivi",
-'filehist-comment' => 'Oget',
-'imagelinks' => 'Anliure al file',
-'linkstoimage' => "{{PLURAL:$1|La pàgina sì sota a l'ha |$1 Le pàgine sì sota a l'han }} andrinta dj'anliure a cost file-sì:",
-'linkstoimage-more' => "Pì che $1 {{PLURAL:$1|pàgina a colega|pàgine a colego}} sto file-sì.
+'file-anchor-link' => 'Figura',
+'filehist' => "Stòria dl'archivi",
+'filehist-help' => "Ch'a-i daga un colp col rat ant sna cobia data/ora për ës-ciairé coma restèissa l'archivi ant col moment-là.",
+'filehist-deleteall' => 'dëscancelé tut',
+'filehist-deleteone' => 'scansela',
+'filehist-revert' => "buté torna 'me ch'a lera",
+'filehist-current' => "dël dì d'ancheuj",
+'filehist-datetime' => 'Data e Ora',
+'filehist-thumb' => 'Miniatura',
+'filehist-thumbtext' => 'Miniatura dla vërsion dle $1',
+'filehist-nothumb' => 'Gnun-e miniature',
+'filehist-user' => 'Utent',
+'filehist-dimensions' => 'Amzure',
+'filehist-filesize' => "Amzure dl'archivi",
+'filehist-comment' => 'Oget',
+'filehist-missing' => 'File mancant',
+'imagelinks' => 'Anliure al file',
+'linkstoimage' => "{{PLURAL:$1|La pàgina sì sota a l'ha |$1 Le pàgine sì sota a l'han }} andrinta dj'anliure a cost file-sì:",
+'linkstoimage-more' => "Pì che $1 {{PLURAL:$1|pàgina a colega|pàgine a colego}} sto file-sì.
La lista sota a mosta mach {{PLURAL:$1|la prima pàgina ch'a colega|le prime $1 pàgine ch'acolego}} sto file-sì.
A-i é n'[[Special:WhatLinksHere/$2|elench complet]].",
-'nolinkstoimage' => "Pa gnun-a pàgina che a l'abia n'anliura a sta figura-sì.",
-'morelinkstoimage' => 'Varda [[Special:WhatLinksHere/$1|àutri colegament]] a sto file sì.',
-'redirectstofile' => 'Sota a-i {{PLURAL:$1|é un|son $1}} redirect a sto file-sì:',
-'duplicatesoffile' => 'Sota a-i {{PLURAL:$1|é un|son $1}} duplicà dë sto file-sì ([[Special:FileDuplicateSearch/$2|pì ëd detaj]]):',
-'sharedupload' => "St'archivi-sì a ven da $1 e a peul esse dovrà da d'àutri proget.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Che as varda $1 për savejne dë pì.',
-'shareduploadwiki-desc' => "La descrission ch'a-i resta ansima a $1 (an sl'archivi condivis) as ës-ciàira ambelessì sota.",
-'shareduploadwiki-linktext' => "pàgina dë spiegon dl'archivi",
-'noimage' => 'A-i é pa gnun archivi che as ciama parej, a peul esse $1.',
-'noimage-linktext' => 'carijne un',
-'uploadnewversion-linktext' => "Carié na version neuva dë st'archivi-sì",
-'shared-repo-from' => 'da $1', # $1 is the repository name
-'shared-repo' => "n'archivi condivis", # used when shared-repo-NAME does not exist
+'nolinkstoimage' => "Pa gnun-a pàgina che a l'abia n'anliura a sta figura-sì.",
+'morelinkstoimage' => 'Varda [[Special:WhatLinksHere/$1|àutri colegament]] a sto file sì.',
+'redirectstofile' => 'Sota a-i {{PLURAL:$1|é un|son $1}} redirect a sto file-sì:',
+'duplicatesoffile' => 'Sota a-i {{PLURAL:$1|é un|son $1}} duplicà dë sto file-sì ([[Special:FileDuplicateSearch/$2|pì ëd detaj]]):',
+'sharedupload' => "St'archivi-sì a ven da $1 e a peul esse dovrà da d'àutri proget.",
+'sharedupload-desc-there' => "Sto file sì a riva da $1 e a peul esse dovrà da dj'àutri proget.
+Për piasì varda la [$2 pàgina ëd descrission dël file] per d'àutre anformassion.",
+'sharedupload-desc-here' => "Sto file-sì a riva da $1 e a peul esse dovrà për dj'àutri proget.
+La descrission an sla soa [$2 pàgina ëd dëscrission dël file] a l'é mostà sota.",
+'filepage-nofile' => 'Un file con sto nòm-sì a esist pa.',
+'filepage-nofile-link' => 'Un file con sto nòm-sì a esist pa, ma it peule [$1 carielo].',
+'uploadnewversion-linktext' => "Carié na version neuva dë st'archivi-sì",
+'shared-repo-from' => 'da $1',
+'shared-repo' => "n'archivi condivis",
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
# File reversion
'filerevert' => "Buta torna $1 tanme ch'a l'era",
@@ -1470,6 +1574,7 @@ A-i é n'[[Special:WhatLinksHere/$2|elench complet]].",
** violassion dij drit d'autor
** duplicassion (visadì ch'a-i era già)",
'filedelete-edit-reasonlist' => 'Modifiché la rason ëd lë scancelament',
+'filedelete-maintenance' => 'Scanselassion e restaur ëd file disabilità temporaneament an mente dla manutension.',
# MIME search
'mimesearch' => 'Arsërca për sòrt MIME',
@@ -1491,7 +1596,7 @@ Arcòrda ëd verifiché che në stamp a-j serva nen a dj'àutri stamp anans che
# Random page
'randompage' => 'Na pàgina qualsëssìa',
-'randompage-nopages' => 'A-i é pa gnun-a pàgina an stë spassi nominal-sì.',
+'randompage-nopages' => 'A-i é pa gnun-a pàgina ant {{PLURAL:$2|lë spassi nominal|jë spassi nominaj}}: lë spassi nominal "$1"',
# Random redirect
'randomredirect' => 'Na ridiression qualsëssìa',
@@ -1503,6 +1608,7 @@ Arcòrda ëd verifiché che në stamp a-j serva nen a dj'àutri stamp anans che
'statistics-header-edits' => 'Statìstiche dle modìfiche',
'statistics-header-views' => 'Statìstiche dle visualisassion',
'statistics-header-users' => 'Statìstiche ëd {{SITENAME}}',
+'statistics-header-hooks' => 'Àutre statìstiche',
'statistics-articles' => 'Pàgine ëd contnù',
'statistics-pages' => 'Pàgine',
'statistics-pages-desc' => 'Tute le pàgine ant la wiki, comprèise le pàgine ëd discussion, le rediression, etc...',
@@ -1532,8 +1638,8 @@ Adess a l'é na rediression a [[$2]].",
'brokenredirects' => 'Ridiression nen giuste',
'brokenredirectstext' => "Coste ridiression-sì a men-o a dj'articoj ancó pa creà:",
-'brokenredirects-edit' => '(modìfica)',
-'brokenredirects-delete' => '(scancela)',
+'brokenredirects-edit' => 'modìfica',
+'brokenredirects-delete' => 'scancela',
'withoutinterwiki' => "Pàgine ch'a l'han gnun-a anliura interwiki",
'withoutinterwiki-summary' => "Le pàgine ambelessì sota a l'han gnun-a anliura a dj'àotre lenghe:",
@@ -1640,14 +1746,17 @@ It peule strenze la visualisassion an selessionand la sòrt ëd registr, ël nò
# Special:Categories
'categories' => 'Categorìe',
-'categoriespagetext' => "Coste categorìe-sì a l'han andrinta dle pàgine ò dj'archivi.",
+'categoriespagetext' => "{{PLURAL:$1|Costa categorìa a conten|Coste categorìe a conten-o}} dle pàgine ò dj'archivi.
+[[Special:UnusedCategories|Le categorìe non dovrà]] A son pa mostà ambelessì.
+Varda ëdcò [[Special:WantedCategories|Categorìe ciamà]].",
'categoriesfrom' => 'Mosta le categorìe an partend da:',
'special-categories-sort-count' => 'ordiné për nùmer',
'special-categories-sort-abc' => 'òrdiné për alfabétich',
# Special:DeletedContributions
-'deletedcontributions' => 'Modìfiche faite da utent scancelà',
-'deletedcontributions-title' => 'Modìfiche faite da utent scancelà',
+'deletedcontributions' => 'Modìfiche faite da utent scancelà',
+'deletedcontributions-title' => 'Modìfiche faite da utent scancelà',
+'sp-deletedcontributions-contribs' => 'contribussion',
# Special:LinkSearch
'linksearch' => 'Anliure an sla Ragnà',
@@ -1662,6 +1771,16 @@ It peule strenze la visualisassion an selessionand la sòrt ëd registr, ël nò
'listusersfrom' => "Smon-me j'utent a parte da:",
'listusers-submit' => 'Smon',
'listusers-noresult' => 'Pa gnun utent parej.',
+'listusers-blocked' => '(blocà)',
+
+# Special:ActiveUsers
+'activeusers' => "Lista dj'utent ativ",
+'activeusers-intro' => "Costa a l'é na lista d'utent ch'a l'han avù n'atività qualsëssìa ant j'ùltim $1 {{PLURAL:$1|di|di}}.",
+'activeusers-count' => "$1 {{PLURAL:$1|modìfica neuva|modìfiche neuve}} ant {{PLURAL:$3|l'ùltim di|j'ùltim $3 di}}",
+'activeusers-from' => "Mosta j'utent a parte da:",
+'activeusers-hidebots' => 'Stërma trigomiro',
+'activeusers-hidesysops' => "Stërma j'aministrator",
+'activeusers-noresult' => 'Pa gnun utent trovà.',
# Special:Log/newusers
'newuserlogpage' => "Registr dla creassion dj'utent",
@@ -1672,17 +1791,23 @@ It peule strenze la visualisassion an selessionand la sòrt ëd registr, ël nò
'newuserlog-autocreate-entry' => 'Cont creà automaticament',
# Special:ListGroupRights
-'listgrouprights' => "Drit dël grup d'utent",
-'listgrouprights-summary' => "Ambelessì a-i é na lista dij grup utent definì an dzora a sta wiki-sì, con ij sò drit d'acess assocssià.
+'listgrouprights' => "Drit dël grup d'utent",
+'listgrouprights-summary' => "Ambelessì a-i é na lista dij grup utent definì an dzora a sta wiki-sì, con ij sò drit d'acess assocssià.
A peulo ess-ie [[{{MediaWiki:Listgrouprights-helppage}}|anformassion adissionaj]] an dzora a dij drit individuaj.",
-'listgrouprights-group' => 'Grup',
-'listgrouprights-rights' => 'Drit',
-'listgrouprights-helppage' => 'Help:Drit dël grup',
-'listgrouprights-members' => '(Lista dij mèmber)',
-'listgrouprights-addgroup' => 'Gionta {{PLURAL:$2|dla partìa|djë partìe}}: $1',
-'listgrouprights-removegroup' => 'Gava {{PLURAL:$2|dla partìa|djë partìe}}: $1',
-'listgrouprights-addgroup-all' => 'Gionta tute le partìe',
-'listgrouprights-removegroup-all' => 'Gava tute le partìe',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Drit asignà</span>
+* <span class="listgrouprights-revoked">Drit revocà</span>',
+'listgrouprights-group' => 'Grup',
+'listgrouprights-rights' => 'Drit',
+'listgrouprights-helppage' => 'Help:Drit dël grup',
+'listgrouprights-members' => '(Lista dij mèmber)',
+'listgrouprights-addgroup' => 'Gionta {{PLURAL:$2|dla partìa|djë partìe}}: $1',
+'listgrouprights-removegroup' => 'Gava {{PLURAL:$2|dla partìa|djë partìe}}: $1',
+'listgrouprights-addgroup-all' => 'Gionta tute le partìe',
+'listgrouprights-removegroup-all' => 'Gava tute le partìe',
+'listgrouprights-addgroup-self' => 'Gionta {{PLURAL:$2|la partìa|le partìe}} al tò cont: $1',
+'listgrouprights-removegroup-self' => 'Gava {{PLURAL:$2|la partìa|le partìe}} da tò cont: $1',
+'listgrouprights-addgroup-self-all' => 'Gionta tute le partìe a tò cont',
+'listgrouprights-removegroup-self-all' => 'Gava tute le partìe da tò cont',
# E-mail user
'mailnologin' => 'A-i é pa gnun-a adrëssa për mandé ël messagi',
@@ -1756,28 +1881,31 @@ Le modìfiche che a-i vniran ant costa pàgina-sì e ant soa pàgina ëd discuss
'enotif_lastvisited' => "Che as varda $1 për ës-ciaré tute le modìfiche da 'nt l'ùltima vira che a l'é passà.",
'enotif_lastdiff' => "Ch'a varda $1 për visioné sta modìfica.",
'enotif_anon_editor' => 'utent anònim $1',
-'enotif_body' => 'A l\'atension ëd $WATCHINGUSERNAME,
+'enotif_body' => 'Car $WATCHINGUSERNAME,
-La pàgina $PAGETITLE dël sit {{SITENAME}} a l\'é staita $CHANGEDORCREATED al $PAGEEDITDATE da $PAGEEDITOR, che a varda $PAGETITLE_URL për la version corenta.
+La pàgina $PAGETITLE dël sit {{SITENAME}} a l\'é stàita $CHANGEDORCREATED al $PAGEEDITDATE da $PAGEEDITOR, che a varda $PAGETITLE_URL për la version corenta.
$NEWPAGE
-Somari dl\'editor: $PAGESUMMARY $PAGEMINOREDIT
+Resumé dl\'editor: $PAGESUMMARY $PAGEMINOREDIT
Për contaté l\'editor:
Pòsta eletrònica: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Se chiel (chila) a visitèissa nen la pàgina modificà për contròl a-i sarìa pì gnun-a notìfica ëd modìfiche che a podèisso riveje dapress a costa.
-Che as visa che a peul cangeje ij setagi dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba da ten-e sot euj.
+A-i sarà pì gnun-a notìfica ëd modìfiche se chiel a vìsita nen costa pàgina.
+Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba da ten-e sot euj.
Comunicassion dël sistema ëd notìfica da {{SITENAME}}
--
-Për cangé ij setagi ëd lòn che as ten sot euj che a vada ansima a
-{{fullurl:Special:Watchlist/edit}}
+Për cangé la configurassion ëd lòn che as ten sot euj che a vada ansima a
+{{fullurl:{{#special:Watchlist}}/edit}}
-Për fé dle comunicassion ëd servissi e avej pì d\'agiut:
+Për scancelé la pàgina da lòn ch\'a ten sot euj, ch\'a vìsita
+$UNWATCHURL
+
+Për fé dle comunicassion ëd servissi e avèj pì d\'agiut:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1789,10 +1917,11 @@ Për fé dle comunicassion ëd servissi e avej pì d\'agiut:
'exblank' => "La pàgina a l'era veujda",
'delete-confirm' => 'Scancela "$1"',
'delete-legend' => 'Scancela',
-'historywarning' => "Avis: la pàgina che a l'é antramentr che a scancela a l'ha na stòria:",
+'historywarning' => "'''Avis:''' La pàgina che a l'é antramentr che a scancela a l'ha na stòria con pi o men $1 {{PLURAL:$1|revision|revision}}:",
'confirmdeletetext' => "A sta për scancelé d'autut da 'nt la base dat na pàgina ò pura na figura, ansema a tuta soa cronologìa.<p>
Për piasì, che an conferma che sòn a l'é da bon sò but, che a as rend cont ëd le conseguense ëd lòn che a fa, e che sòn a resta an pien an régola con lòn che a l'é stabilì ant la [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Travaj fait e finì',
+'actionfailed' => 'Assion falìa',
'deletedtext' => 'La pàgina "<nowiki>$1</nowiki>" a l\'é staita scancelà.
Che a varda $2 për na lista dle pàgine scancelà ant j\'ùltim temp.',
'deletedarticle' => 'Scancelà "$1"',
@@ -1817,19 +1946,20 @@ A scancelela as peul fesse darmagi a j'operassion dla base dat ëd {{SITENAME}};
ch'a fasa euj a lòn ch'a fa.",
# Rollback
-'rollback' => 'Dòvra na revision pì veja',
-'rollback_short' => 'Ripristinè',
-'rollbacklink' => "ripristiné j'archivi",
-'rollbackfailed' => "A l'é pa podusse ripristiné",
-'cantrollback' => "As peul pa tornesse a na version pì veja: l'ùltima modìfica a l'ha fala l'ùnich utent che a l'abia travajà a cost artìcol-sì.",
-'alreadyrolled' => "As peulo pa anulé j'ultime modìfiche ëd [[:$1]] faite da [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Dòvra na revision pì veja',
+'rollback_short' => 'Ripristinè',
+'rollbacklink' => "ripristiné j'archivi",
+'rollbackfailed' => "A l'é pa podusse ripristiné",
+'cantrollback' => "As peul pa tornesse a na version pì veja: l'ùltima modìfica a l'ha fala l'ùnich utent che a l'abia travajà a cost artìcol-sì.",
+'alreadyrolled' => "As peulo pa anulé j'ultime modìfiche ëd [[:$1]] faite da [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
cheidun d'àutr a l'ha già modificà ò pura anulà le modìfiche a sta pàgina-sì.
L'ùltima modìfica a la pàgina a l'é staita faita da [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "Ël coment dla modìfica a l'era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Gavà via le modìfiche ëd [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]); ël contnù a l'é stait tirà andarè a l'ùltima version dl'utent [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Modìfiche anulà da $1; tirà andré a l'ùltima version da $2.",
-'sessionfailure' => "A-i son ëstaje dle gran-e con la session che a identìfica sò acess; ël sistema a l'ha nen eseguì l'ordin che a l'ha daje për precaussion. Che a torna andaré a la pàgina prima con ël boton \"andaré\" ëd sò programa ëd navigassion (browser), peuj che as carìa n'àutra vira costa pàgina-sì e che a preuva torna a fé lòn che vorìa fé.",
+'editcomment' => "Ël coment dla modìfica a l'era: \"''\$1''\".",
+'revertpage' => "Gavà via le modìfiche ëd [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]); ël contnù a l'é stait tirà andarè a l'ùltima version dl'utent [[User:$1|$1]]",
+'revertpage-nouser' => "Scanselà le modìfiche dë (stranòm gavà) a l'ùltima vërsion ëd [[User:$1|$1]]",
+'rollback-success' => "Modìfiche anulà da $1; tirà andré a l'ùltima version da $2.",
+'sessionfailure' => "A-i son ëstaje dle gran-e con la session che a identìfica sò acess; ël sistema a l'ha nen eseguì l'ordin che a l'ha daje për precaussion. Che a torna andaré a la pàgina prima con ël boton \"andaré\" ëd sò programa ëd navigassion (browser), peuj che as carìa n'àutra vira costa pàgina-sì e che a preuva torna a fé lòn che vorìa fé.",
# Protect
'protectlogpage' => 'Registr dle protession',
@@ -1846,7 +1976,7 @@ Ch'a varda la [[Special:ProtectedPages|Lista dle pàgine protegiùe]] për ës-c
'protectexpiry' => 'Scadensa:',
'protect_expiry_invalid' => 'Scadensa pa bon-a.',
'protect_expiry_old' => 'Scadensa già passà.',
-'protect-unchain' => 'Dësbloché ij permess ëd tramudé dla ròba',
+'protect-unchain-permissions' => 'Sblòca àutre opsion ëd protession',
'protect-text' => "Ambelessì a peul vardé e cangé ël livel ëd protession dla pàgina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Un a peul pa modifiché ij livel ëd protession antramentr ch'a l'é blocà chiel. Ambelessì a-i son le regolassion corente për la pàgina '''$1''':",
'protect-locked-dblock' => "Ij livej ëd protession as peulo nen cambiesse antramentr che la base dat a l'é blocà.
@@ -1874,7 +2004,7 @@ Ambelessì a-i son le regolassion corente për la pàgina '''$1''':",
** Edit war nen produtiv
** Pàgina con motobin ëd tràfich',
'protect-edit-reasonlist' => 'Rason ëd la protession da le modìfiche',
-'protect-expiry-options' => '1 ora:1 hour,1 di:1 day,1 sman-a:1 week,2 sman-e:2 weeks,1 meis:1 month,3 meis:3 months,6 meis:6 months,1 ann:1 year,për sempe:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 di:1 day,1 sman-a:1 week,2 sman-e:2 weeks,1 meis:1 month,3 meis:3 months,6 meis:6 months,1 ann:1 year,për sempe:infinite',
'restriction-type' => 'Përmess',
'restriction-level' => 'Livel ëd restrission',
'minimum-size' => 'Amzura mìnima',
@@ -1916,6 +2046,7 @@ l'avìa travaje ansima anans che a la scancelèisso.
'undelete-nodiff' => 'Pa gnun-a revision anans ëd costa.',
'undeletebtn' => 'Ripristiné',
'undeletelink' => 'varda/buta andré',
+'undeleteviewlink' => 'varda',
'undeletereset' => 'Gava tute le selession',
'undeleteinvert' => 'Anvert la selession',
'undeletecomment' => 'Rason:',
@@ -1953,19 +2084,23 @@ $1",
'contributions-title' => 'Contribussion ëd $1',
'mycontris' => 'Mie contribussion',
'contribsub2' => 'Për $1 ($2)',
-'nocontribs' => "A l'é pa trovasse gnun-a modìfica che a fussa conforma a costi criteri-sì", # Optional parameter: $1 is the user name
+'nocontribs' => "A l'é pa trovasse gnun-a modìfica che a fussa conforma a costi criteri-sì",
'uctop' => ' (ùltima dla pàgina)',
'month' => 'Mèis:',
'year' => 'Ann:',
-'sp-contributions-newbies' => 'Smon mach ël travaj dij cont neuv',
-'sp-contributions-newbies-sub' => "Për j'utent neuv",
-'sp-contributions-newbies-title' => "Contribussion ëd j'utent për ij neuv cont",
-'sp-contributions-blocklog' => "Fërma l'agiornament dij registr",
-'sp-contributions-logs' => 'registr',
-'sp-contributions-search' => 'Arsërca contribussion',
-'sp-contributions-username' => 'Adrëssa IP ò nòm utent:',
-'sp-contributions-submit' => 'Arsërca',
+'sp-contributions-newbies' => 'Smon mach ël travaj dij cont neuv',
+'sp-contributions-newbies-sub' => "Për j'utent neuv",
+'sp-contributions-newbies-title' => "Contribussion ëd j'utent për ij neuv cont",
+'sp-contributions-blocklog' => "Fërma l'agiornament dij registr",
+'sp-contributions-deleted' => "Modìfiche d'utent scancelà",
+'sp-contributions-logs' => 'registr',
+'sp-contributions-talk' => 'discussion',
+'sp-contributions-userrights' => 'gestion dij drit utent',
+'sp-contributions-blocked-notice' => "St'utent-sì a l'é blocà al moment. L'ùltima intrada dël registr dij blòch a l'é butà sì sota për arferiment:",
+'sp-contributions-search' => 'Arsërca contribussion',
+'sp-contributions-username' => 'Adrëssa IP ò nòm utent:',
+'sp-contributions-submit' => 'Arsërca',
# What links here
'whatlinkshere' => "Pàgine con dj'anliure che a men-o a costa-sì",
@@ -1988,6 +2123,7 @@ $1",
# Block/unblock
'blockip' => "Blochè n'adrëssa IP",
+'blockip-title' => "Bloché l'utent",
'blockip-legend' => "Bloché l'utent",
'blockiptext' => "Che a dòvra ël mòdulo ëd domanda 'd blocagi ambelessì sota për bloché l'acess con drit dë scritura da na chèich adrëssa IP.<br />
Ës blocagi-sì as dev dovresse MACH për evité dij comportament vandàlich, ën strèita osservansa ëd tùit ij prinsipi dla [[{{MediaWiki:Policy-url}}|polìtica ëd {{SITENAME}}]].<br />
@@ -2013,7 +2149,7 @@ Che a scriva codì che st'adrëssa IP-sì a dev second chiel (chila) esse blocà
'ipbenableautoblock' => "Blòca an automàtich la dariera adrëssa IP dovrà da l'utent e tute cole dont peuj cheidun as preuva a fé dle modìfiche",
'ipbsubmit' => "Bloca st'adrëssa IP-sì",
'ipbother' => "N'àutra durà",
-'ipboptions' => "2 ore:2 hours,1 di:1 day,3 di:3 days,na sman-a:1 week,2 sman-e:2 weeks,1 mèis:1 month,3 mèis:3 months,6 mèis:6 months,n'ann:1 year,për sempe:infinite", # display1:time1,display2:time2,...
+'ipboptions' => "2 ore:2 hours,1 di:1 day,3 di:3 days,na sman-a:1 week,2 sman-e:2 weeks,1 mèis:1 month,3 mèis:3 months,6 mèis:6 months,n'ann:1 year,për sempe:infinite",
'ipbotheroption' => "d'àutr",
'ipbotherreason' => 'Àotri motiv/spiegon',
'ipbhidename' => "Stërma lë stranòm da 'nt le modìfiche e da 'nt j'elench.",
@@ -2042,9 +2178,11 @@ Varda [[Special:IPBlockList|lista dj'IP blocà]] Për rivëdde ij blòch.",
'ipblocklist-sh-tempblocks' => '$1 blòch a temp',
'ipblocklist-sh-addressblocks' => "$1 blòch ëd j'IP",
'ipblocklist-submit' => 'Arsërca',
+'ipblocklist-localblock' => 'Blocagi local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Àutr blocagi|Àutri blocagi}}',
'blocklistline' => "$1, $2 a l'ha blocà $3 ($4)",
'infiniteblock' => 'për sempe',
-'expiringblock' => 'fin-a al $1',
+'expiringblock' => 'a finiss ël $1 a $2',
'anononlyblock' => "mach j'utent anònim",
'noautoblockblock' => 'blòch automàtich nen ativ',
'createaccountblock' => 'creassion dij cont blocà',
@@ -2058,7 +2196,8 @@ Varda [[Special:IPBlockList|lista dj'IP blocà]] Për rivëdde ij blòch.",
'contribslink' => 'contribussion',
'autoblocker' => "A l'é scataje un blocagi përchè soa adrëssa IP a l'é staita dovrà ant j'ùltim temp da l'Utent \"[[User:\$1|\$1]]\". Ël motiv për bloché \$1 a l'é stait: \"'''\$2'''\"",
'blocklogpage' => 'Registr dij blocagi',
-'blocklog-fulllog' => 'Registr antregh dij blòch',
+'blocklog-showlog' => "St'utent-sì a l'é già stàit blocà. Ël registr dij blòch a l'é dàit sì sota për arferiment:",
+'blocklog-showsuppresslog' => "St'utent-sì a l'é già stàit blocà e stërmà. Ël registr stërmà a l'é dàit sì sota për arferiment:",
'blocklogentry' => '"[[$1]]" a l\'é stait blocà për $2 $3',
'reblock-logentry' => 'cambià le ampostassion dël blòch për [[$1]] con un temp ëd fin ëd $2 $3',
'blocklogtext' => "Sossì a l'é ël registr dij blocagi e dësblocagi dj'Utent. J'adrësse che
@@ -2081,9 +2220,11 @@ coj che sio ij blocagi ativ al dì d'ancheuj.",
'ipb-needreblock' => "== Già blocà ==
$1 a l'é già blocà.
It veule cambié le ampostassion?",
+'ipb-otherblocks-header' => '{{PLURAL:$1|Àutr|Àutri}} blocagi',
'ipb_cant_unblock' => 'Eror: As treuva nen ël blòch con identificativ $1. A peul esse che a sia un blòch già gavà via.',
'ipb_blocked_as_range' => "Eror: L'adrëssa IP $1 a l'ha gnun blòch diret ansima e donca a peul pa esse dësblocà. A resta blocà mach për via ch'a l'é ciapà andrinta al ragg $2, e lolì as peul pa dësblochesse.",
'ip_range_invalid' => 'Nùmer IP nen bon.',
+'ip_range_toolarge' => "N'antërval ëd blòch pi largh ëd /$1 a l'é pa përmëttù.",
'blockme' => 'Blòch-me',
'proxyblocker' => "Bloché j'arpetitor (Proxy) doèrt",
'proxyblocker-disabled' => "Sta funsion-sì a l'é pa abilità.",
@@ -2092,6 +2233,7 @@ It veule cambié le ampostassion?",
'sorbsreason' => "Soa adrëssa IP a l'é listà coma arpetitor doèrt (open proxy) ansima al DNSBL dovrà da {{SITENAME}}.",
'sorbs_create_account_reason' => "Soa adrëssa IP a l'é listà coma arpetitor doèrt (open proxy) ansima al DNSBL dovrà da {{SITENAME}}. A peul nen creésse un cont.",
'cant-block-while-blocked' => 'It peule pa bloché àutri utent an mente it ses blocà.',
+'cant-see-hidden-user' => "L'utent che të stas provand a bloché a l'é già stàit blocà e stërmà. Da già ch'it l'has pa ël drit hideuser, it peule pa vëdde o modifiché ël blòch ëd l'utent.",
# Developer tools
'lockdb' => 'Blòca la base dat',
@@ -2134,6 +2276,7 @@ Che a varda mach dë esse pì che sigur d'avej presente le conseguense, prima ch
*a l'ha deselessionà ël quadrèt ëd conferma ambelessì sota.
Ant costi cas-sì, se a chërd dë felo, a-j farà da manca dë tramudesse la pàgina ëd discussion daspërchiel, a man.",
'movearticle' => "Cang-je nòm a l'artìcol",
+'moveuserpage-warning' => "'''Atension:''' A sta për tramudé na pàgina d'utent. Për piasì ch'a nòta che a sarà tramudà mach la pàgina e che l'utent a sarà \"pa\" arnominà.",
'movenologin' => "Che a varda che chiel (chila) a l'è pa rintrà ant ël sistema",
'movenologintext' => "A venta esse n'Utent registrà e esse [[Special:UserLogin|rintrà ant ël sistema]]
për podej tramudé na pàgina.",
@@ -2145,7 +2288,7 @@ për podej tramudé na pàgina.",
'move-watch' => 'Ten sot euj sta pàgina-sì',
'movepagebtn' => 'Tramuda sta pàgina-sì',
'pagemovedsub' => 'San Martin bele finì!',
-'movepage-moved' => "'''\"\$1\" a l'é stàit spostà a \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" a l'é stàit spostà a \"\$2\"'''",
'movepage-moved-redirect' => "A l'é stàita creà na rediression.",
'movepage-moved-noredirect' => "La creassion ëd na ridiression a l'é stàita scancelà.",
'articleexists' => "Na pàgina che as ciama parej a-i é già, ò pura ël nòm che a l'ha sërnù a va nen bin.<br />
@@ -2187,6 +2330,14 @@ L\'artìcol ëd destinassion "[[:$1]]" a-i é già. Veul-lo scancelelo për avej
'imageinvalidfilename' => "Ël nòm dël file pontà a l'é pa vàlid",
'fix-double-redirects' => 'Modìfica minca rediression che a ponta al tìtol original',
'move-leave-redirect' => 'Lassa na rediression',
+'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach utent con drit d'aministrator a peulo tramudela.
+L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
+'semiprotectedpagemovewarning' => "'''Nòta:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent argistrà a peulo tramudela.
+L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
+'move-over-sharedrepo' => "== L'archivi a esist ==
+[[:$1]] a esist già dzora a un depòsit partagià. Tramudé n'archivi a cost tìtol-sì a coaterà l'archivi partagià.",
+'file-exists-sharedrepo' => "Ël nòm dël file sërnù a l'é già dovrà ant ël depòsit condivis.
+Për piasì sern n'àutr nòm.",
# Export
'export' => 'Esporté dle pàgine',
@@ -2212,15 +2363,21 @@ Se costa ùltima possibilità a fussa lòn che a-j serv, a podrìa ëdcò dovré
'export-pagelinks' => 'Anseriss pàgine colegà a na përfondità ëd:',
# Namespace 8 related
-'allmessages' => 'Messagi ëd sistema',
-'allmessagesname' => 'Nòm',
-'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
-'allmessagescurrent' => 'Test corent',
-'allmessagestext' => "Costa-sì a l'é na lista ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
+'allmessages' => 'Messagi ëd sistema',
+'allmessagesname' => 'Nòm',
+'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
+'allmessagescurrent' => 'Test corent',
+'allmessagestext' => "Costa-sì a l'é na lista ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
Për piasì vìsita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [http://translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
-'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
-'allmessagesfilter' => 'Seletor dël nòm dël messagi:',
-'allmessagesmodified' => "Most-me mach lòn che a l'é modificasse",
+'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
+'allmessages-filter-legend' => 'Filtr',
+'allmessages-filter' => 'Filtra për stat ëd përsonalisassion:',
+'allmessages-filter-unmodified' => 'Pa modificà',
+'allmessages-filter-all' => 'Tùit',
+'allmessages-filter-modified' => 'Modificà',
+'allmessages-prefix' => 'Filtra për prefiss:',
+'allmessages-language' => 'Lenga:',
+'allmessages-filter-submit' => 'Và',
# Thumbnails
'thumbnail-more' => 'Slarga',
@@ -2230,6 +2387,9 @@ Për piasì vìsita [http://www.mediawiki.org/wiki/Localisation MediaWiki Locali
'djvu_no_xml' => "As rièss pa a carié l'XML për l'archivi DjVu",
'thumbnail_invalid_params' => 'Paràmetro dla figurin-a pa giust',
'thumbnail_dest_directory' => 'As peul pa fesse ël dossié ëd destinassion',
+'thumbnail_image-type' => 'Sòrt ëd figura nen gestì',
+'thumbnail_gd-library' => 'Configurassion pa finìa dla librerìa GD: Fonsion $1 mancanta',
+'thumbnail_image-missing' => 'Ël file a smija esse mancant: $1',
# Special:Import
'import' => 'Amportassion ëd pàgine',
@@ -2294,6 +2454,7 @@ Për piasì preuva torna.',
'tooltip-ca-viewsource' => 'Sta pàgina-sì a l',
'tooltip-ca-history' => 'Veje version dla pàgina.',
'tooltip-ca-protect' => 'Për protege sta pàgina-sì.',
+'tooltip-ca-unprotect' => 'Sprotegg sta pàgina-sì',
'tooltip-ca-delete' => 'Scancelé sta pàgina-sì',
'tooltip-ca-undelete' => 'Pijé andré le modìfiche faite a sta pàgina-sì, anans che a fussa scancelà.',
'tooltip-ca-move' => 'Tramudé sta pàgina, visadì cangeje tìtol.',
@@ -2304,6 +2465,7 @@ Për piasì preuva torna.',
'tooltip-search-fulltext' => 'Sërché ës test-sì antra le pàgine dël sit',
'tooltip-p-logo' => 'Pàgina prinsipal.',
'tooltip-n-mainpage' => 'Visité la pàgina prinsipal.',
+'tooltip-n-mainpage-description' => 'Vìsita la pàgina prinsipal',
'tooltip-n-portal' => 'Rësguard al proget, lòn che a peul fé, andoa trové còsa.',
'tooltip-n-currentevents' => 'Informassion ansima a lòn che a-i riva.',
'tooltip-n-recentchanges' => 'Lista dj',
@@ -2357,10 +2519,12 @@ At lassa gionté na spiegassion ëd la modìfica.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utent|Utent}} anònim ëd {{SITENAME}}',
'siteuser' => '$1, utent ëd {{SITENAME}}',
-'lastmodifiedatby' => "Sta pàgina-sì a l'é staita modificà l'ùltima vira al $2, $1 da $3.", # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} utent anònim $1',
+'lastmodifiedatby' => "Sta pàgina-sì a l'é staita modificà l'ùltima vira al $2, $1 da $3.",
'othercontribs' => 'Basà ant sëj travaj ëd $1.',
'others' => 'àutri',
'siteusers' => '$1, {{PLURAL:$2|utent|utent}} ëd {{SITENAME}}',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|utent|utent}} anònim $1',
'creditspage' => 'Credit dla pàgina',
'nocredits' => 'A-i é pa gnun crédit për sta pagina-sì.',
@@ -2389,11 +2553,22 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
'mw_math_modern' => 'As racomanda për ij programa ëd navigassion pì modern',
'mw_math_mathml' => 'But-lo an MathML se as peul (sperimental)',
+# Math errors
+'math_failure' => 'Parsificassion falà',
+'math_unknown_error' => 'Eror nen conossù',
+'math_unknown_function' => 'funsion che as sa pa lòn che a la sia',
+'math_lexing_error' => 'eror ëd léssich',
+'math_syntax_error' => 'eror ëd sintassi',
+'math_image_error' => 'Conversion a PNG falà; che a contròla che latex, dvips, gs, e convert a sio instalà giust',
+'math_bad_tmpdir' => "Ël sistema a-i la fa pa a creé la diretriss '''math temp''', ò pura a-i la fa nen a scriv-je andrinta",
+'math_bad_output' => "Ël sistema a-i la fa pa a creé la diretriss '''math output''', ò pura a-i la fa nen a scriv-je andrinta",
+'math_notexvc' => 'Pa gnun texvc executable; për piasì, che a contròla math/README për la configurassion.',
+
# Patrolling
'markaspatrolleddiff' => 'Marca coma verificà',
'markaspatrolledtext' => "Marca st'artìcol-sì coma verificà",
'markedaspatrolled' => 'Marca dla verìfica butà',
-'markedaspatrolledtext' => "La version selessionà a l'é staita marcà coma verificà.",
+'markedaspatrolledtext' => "La version selessionà ëd [[:$1]] a l'é staita marcà coma verificà.",
'rcpatroldisabled' => "Verìfica dj'ùltime modìfiche disabilità",
'rcpatroldisabledtext' => "La possibilità ëd verifichè j'ùltime modìfiche a l'é disabilità.",
'markedaspatrollederror' => 'As peul pa marchè verificà',
@@ -2423,13 +2598,10 @@ $1",
'previousdiff' => '← Diferensa pì veja',
'nextdiff' => 'Modìfica pì neuva →',
-# Visual comparison
-'visual-comparison' => 'Comparassion visual',
-
# Media information
'mediawarning' => "'''Atension!''': st'archivi-sì a podrìa avèj andrinta dël còdes butà-lì da cheidun për fé ëd darmagi.
An fasend-lo travajé ansima a sò ordinator chiel a podrìa porteje ëd dann a sò sistema.",
-'imagemaxsize' => 'Ten le figure andrinta a le pàgine ëd descrission dle figure ant ël lìmit ëd:',
+'imagemaxsize' => "Lìmit ëd la dimension ëd la figura:<br /> ''(për pàgine ëd descrission dij file)''",
'thumbsize' => 'Amzura dle figurin-e:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgine}}',
'file-info' => "(amzura dl'archivi: $1, sòrt MIME: $2)",
@@ -2438,6 +2610,8 @@ An fasend-lo travajé ansima a sò ordinator chiel a podrìa porteje ëd dann a
'svg-long-desc' => "(archivi an forma SVG, amzure nominaj $1 × $2 pixel, amzura dl'archivi: $3)",
'show-big-image' => 'Version a amzura pijn-a',
'show-big-image-thumb' => '<small>Amzure dë sta figurin-a: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'ciclà',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fnesta|fneste}}',
# Special:NewFiles
'newimages' => 'Galerìa ëd figure e son neuv',
@@ -2469,7 +2643,7 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Larghëssa',
@@ -2596,14 +2770,14 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-unknowndate' => 'Data nen conossùa',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Specolar', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Arvirà ëd 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Arvirà dzorsuta', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Arvirà dzorsota e ëd 90° contramostra', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Arvirà ëd 90° ant ël sens dla mostra', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Arvirà dzorsota e ëd 90° ant ël sens dla mostra', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Arvirà ëd 90° contramostra', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Specolar',
+'exif-orientation-3' => 'Arvirà ëd 180°',
+'exif-orientation-4' => 'Arvirà dzorsuta',
+'exif-orientation-5' => 'Arvirà dzorsota e ëd 90° contramostra',
+'exif-orientation-6' => 'Arvirà ëd 90° ant ël sens dla mostra',
+'exif-orientation-7' => 'Arvirà dzorsota e ëd 90° ant ël sens dla mostra',
+'exif-orientation-8' => 'Arvirà ëd 90° contramostra',
'exif-planarconfiguration-1' => 'për blòch (chunky)',
'exif-planarconfiguration-2' => 'an planar',
@@ -2734,7 +2908,7 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-gpsmeasuremode-2' => 'amzura bidimensional',
'exif-gpsmeasuremode-3' => 'amzura tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Km/h',
'exif-gpsspeed-m' => 'mija/h',
'exif-gpsspeed-n' => 'Grop (marin)',
@@ -2753,6 +2927,7 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'watchlistall2' => 'tute',
'namespacesall' => 'tùit',
'monthsall' => 'tuti',
+'limitall' => 'tùit',
# E-mail address confirmation
'confirmemail' => "Confermé l'adrëssa postal",
@@ -2779,18 +2954,16 @@ Che a controla l'adrëssa che a l'ha dane, mai che a-i fusso dij caràter nen v
'confirmemail_loggedin' => "Motobin mersì. Soa adrëssa ëd pòsta eletrònica adess a l'é confermà.",
'confirmemail_error' => "Cheich-còs a l'é andà mal ën salvand soa conferma.",
'confirmemail_subject' => "Conferma dl'adrëssa postal da 'nt la {{SITENAME}}",
-'confirmemail_body' => "Cheidun, a l'é belfé che a sia stait pròpe chiel (ò chila)
-da 'nt l'adrëssa IP \$1, a l'ha doertà un cont utent \"\$2\"
-ansima a {{SITENAME}}, lassand-ne st'adrëssa ëd pòsta eletrònica-sì.
+'confirmemail_body' => "Cheidun, a l'é belfé che a sia stait pròpe chiel (ò chila), da 'nt l'adrëssa IP \$1,
+a l'ha doertà un cont utent \"\$2\" ansima a {{SITENAME}}, lassand-ne st'adrëssa ëd pòsta eletrònica-sì.
-Për confermé che ës cont a l'é da bon sò e për ativé le possibilità
-corelà a la pòsta eletrònica ansima a {{SITENAME}}, che a deurba
-st'adrëssa-sì andrinta a sò programa ëd navigassion (browser)
+Për confermé che ës cont a l'é da bon sò e për ativé
+le possibilità corelà a la pòsta eletrònica ansima a {{SITENAME}}, che a deurba st'adrëssa-sì andrinta a sò programa ëd navigassion (browser):
\$3
-Se a fussa *nen* stait chiel a deurbe ël cont, anlora che a fasa gnente.
-Follow this link to cancel the e-mail address confirmation:
+Se a fussa *nen* stait chiel a deurbe ël cont, anlora che a vada daré a sto colegament-sì
+për scanselé la conferma ëd l'adrëssa e-mail:
\$5
@@ -2907,7 +3080,7 @@ As peul ëdcò [[Special:Watchlist/edit|dovré l'editor sòlit]].",
'duplicate-defaultsort' => "'''Atension:''' La ciav d'ordinament ëd default \"\$2\" a ven al pòst ëd cola ëd prima \"\$1\"",
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Estension anstalà',
'version-specialpages' => 'Pàgine speciaj',
'version-parserhooks' => 'Gancio dlë scompositor',
@@ -2921,7 +3094,7 @@ As peul ëdcò [[Special:Watchlist/edit|dovré l'editor sòlit]].",
'version-skin-extension-functions' => "Fonsion për j'estension dle facie",
'version-hook-name' => 'Nòm dël gancio',
'version-hook-subscribedby' => 'A son scrivusse',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licensa',
'version-software' => 'Programa anstalà',
'version-software-product' => 'Prodot',
@@ -3002,4 +3175,15 @@ Ch'a bata 'l nòm dl'archivi sensa pa bute-ie 'l prefiss \"{{ns:file}}:\".",
'dberr-outofdate' => 'Nòta che la soa indicisassion dij nòst contnù a podrìa nen esse agiornà.',
'dberr-cachederror' => 'Sta sì a l\'ìé na còpia an "cache" ëd la pàgina ciamà, e a peul esse pa agiornà.',
+# HTML forms
+'htmlform-invalid-input' => 'A-i son dij problema con cheidun dij tò input',
+'htmlform-select-badoption' => "Ël valor che it l'has spessificà a l'é n'opsion pa vàlida.",
+'htmlform-int-invalid' => "Ël valor ch'it l'has spessificà a l'é pa n'antregh.",
+'htmlform-float-invalid' => "Ël valor ch'it l'has spessificà a l'é pa un nùmer.",
+'htmlform-int-toolow' => "Ël valor ch'it l'has spessificà a l'é sota al mìnim ëd $1.",
+'htmlform-int-toohigh' => "Ël valor ch'it l'has spessificà a l'é dzora dël màssim ëd $1.",
+'htmlform-submit' => 'Spediss',
+'htmlform-reset' => 'Scansela ij cambiament',
+'htmlform-selectorother-other' => 'Àutr',
+
);
diff --git a/languages/messages/MessagesPnb.php b/languages/messages/MessagesPnb.php
index 76685435..825c9ebe 100644
--- a/languages/messages/MessagesPnb.php
+++ b/languages/messages/MessagesPnb.php
@@ -12,8 +12,17 @@
* @author ZaDiak
*/
+$linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
+$rtl = true;
+$defaultUserOptionOverrides = array(
+ # Swap sidebar to right side by default
+ 'quickbar' => 2,
+ # Underlines seriously harm legibility. Force off:
+ 'underline' => 0,
+);
+
$messages = array(
# User preference toggles
'tog-justify' => 'پیراگراف ثابت کرو',
@@ -28,6 +37,7 @@ $messages = array(
'tog-enotifminoredits' => 'صفحیاں چ چھوٹیاں موٹیاں تبدیلیاں تے وی مینوں ای میل کر دیو',
'tog-enotifrevealaddr' => 'میرے ای میل دے پتے نوں سندیسے آلی ای میل دے وچ وکھاؤ۔',
'tog-shownumberswatching' => 'ویکھن آلے لوکاں دی گنتی وکھاؤ۔',
+'tog-oldsig' => 'ہلے آلے دستخط وکھاؤ۔',
'tog-fancysig' => 'دستخط نوں وکی ٹیکسڈ ونگوں؎ ورتو(without an automatic link)',
'tog-watchlisthideown' => 'میری اپنی لکھائی نوں اکھ تھلیوں لکاؤ',
'tog-watchlisthidebots' => 'بوٹ دی لکھائی اکھ تھلیوں لکاؤ',
@@ -98,15 +108,22 @@ $messages = array(
'category-media-header' => 'اس "$1" کیٹاگری وچ میڈيا',
'category-empty' => "''اس کیٹاگری وچ کوئی صفحہ یا میڈیا موجود نہیں۔''",
'hidden-categories' => '{{PLURAL:$1|چھپی گٹھ|چھپی گٹھیاں}}',
-'hidden-category-category' => 'لکائیاں ٹولیاں', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'لکائیاں ٹولیاں',
'category-subcat-count' => '{{PLURAL:$2|اس گٹھ دی صرف اکو تھلے آلی نکی گٹھ اے|اس گٹھ دیاں $2 چوں {{PLURAL:$1|نکی گٹھ|$1 نکی گٹھیاں}}}} نیں۔',
'category-article-count' => '{{PLURAL:$2|اس گٹھ چ اکو تھلے آلا صفحہ اے۔|تھلے {{PLURAL:$1|آلا صفحہ|آلے صفحے}} $2 چوں اس گٹھ دے صفحے نیں۔}}',
'listingcontinuesabbrev' => 'جاری',
-'about' => 'بارے چ',
-'article' => 'مضمون آلا صفحہ',
-'newwindow' => '(نئی ونڈو چ کھولو)',
-'cancel' => 'ختم',
+'about' => 'بارے چ',
+'article' => 'مضمون آلا صفحہ',
+'newwindow' => '(نئی ونڈو چ کھولو)',
+'cancel' => 'ختم',
+'moredotdotdot' => 'مزید۔۔۔۔',
+'mypage' => 'میرا صفحہ',
+'mytalk' => 'میریاں گلاں',
+'anontalk' => 'اس آئی پی آسطے گل کرو',
+'navigation' => 'تلاش',
+
+# Cologne Blue skin
'qbfind' => 'کھوج',
'qbbrowse' => 'لبو',
'qbedit' => 'لکھو',
@@ -114,14 +131,16 @@ $messages = array(
'qbpageinfo' => 'ماحول',
'qbmyoptions' => 'میرے صفحے',
'qbspecialpages' => 'خاص صفحے',
-'moredotdotdot' => 'مزید۔۔۔۔',
-'mypage' => 'میرا صفحہ',
-'mytalk' => 'میریاں گلاں',
-'anontalk' => 'اس آئی پی آسطے گل کرو',
-'navigation' => 'تلاش',
-# Metadata in edit box
-'metadata_help' => 'میٹا ڈیٹا:',
+# Vector skin
+'vector-action-delete' => 'مکاؤ',
+'vector-action-move' => 'ٹرو',
+'vector-action-protect' => 'بچاؤ',
+'vector-namespace-category' => 'ونڈ',
+'vector-namespace-help' => 'مدد آلا ورقا',
+'vector-namespace-main' => 'ورقہ',
+'vector-namespace-media' => ' میڈیا آلا ورقہ',
+'vector-namespace-project' => 'بجایا ورقہ',
'errorpagetitle' => 'مسئلہ',
'returnto' => 'واپس $1 چلو',
@@ -170,7 +189,7 @@ $messages = array(
'redirectedfrom' => '(لیایا گیا $1)',
'redirectpagesub' => 'صفحہ ریڈائریکٹ کرو',
'lastmodifiedat' => 'This page was last modified on $1, at $2.
-اس صفحے نوں آخری آری $1 تریخ نوں $2 وجے بدلیا گیا۔', # $1 date, $2 time
+اس صفحے نوں آخری آری $1 تریخ نوں $2 وجے بدلیا گیا۔',
'protectedpage' => 'بجایا صفحہ',
'jumpto' => 'جاو:',
'jumptonavigation' => 'مدد',
@@ -255,63 +274,52 @@ $messages = array(
'virus-unknownscanner' => 'اندیکھا اینٹیوائرس:',
# Login and logout pages
-'logouttitle' => 'ورتن آلے توں لاگ آوٹ ہو جاؤ',
-'loginpagetitle' => 'لاگن ان',
-'yourname' => 'ورتن والہ:',
-'yourpassword' => 'کنجی:',
-'yourpasswordagain' => 'کنجی دوبارہ لکھو:',
-'remembermypassword' => 'اس کمپیوٹر تے میرا لاگن یاد رکھو',
-'yourdomainname' => 'تواڈا علاقہ:',
-'login' => 'اندر آؤ جی',
-'nav-login-createaccount' => 'اندر آؤ / کھاتہ کھولو',
-'loginprompt' => 'اندر آنے آستے تواڈیاں کوکیز آن ہونیاں چائیدیاں نے {{SITENAME}}.',
-'userlogin' => 'اندر آؤ / کھاتہ کھولو',
-'logout' => 'لاگ توں باہر',
-'userlogout' => 'باہر آؤ',
-'notloggedin' => 'لاگ ان نئیں ہوۓ او',
-'nologin' => "تواڈا کھاتہ نہیں اے؟ '''$1'''۔",
-'nologinlink' => 'کھاتہ بناؤ',
-'createaccount' => 'کھاتہ بناؤ',
-'gotaccount' => "تواڈا پہلے توں کھاتہ ہے؟ '''$1'''",
-'gotaccountlink' => 'اندر آؤ',
-'createaccountmail' => 'ای میل دے نال',
-'badretype' => 'تواڈی کنجی صحیح نئیں۔',
-'youremail' => 'ای میل:',
-'username' => 'ورتن آلے دا ناں:',
-'yourrealname' => 'اصلی ناں:',
-'yourlanguage' => 'بولی:',
-'yournick' => 'دسخط:',
-'email' => 'ای میل',
-'prefs-help-realname' => 'اصل ناں تواڈی مرزی تے اے۔<br />
-اگر تسی اینو دے دیو گۓ تے اے تواڈا کم اس ناں نال لکھیا جاۓ گا۔',
-'loginerror' => 'لاگ ان چ مسئلا اے',
-'prefs-help-email-required' => 'ای میل پتہ چائیدا اے۔',
-'noname' => 'تسی کوئی پکا ورتن آلا ناں نئیں رکھ رۓ۔',
-'loginsuccesstitle' => 'تسی لاگن ہوگۓ او',
-'loginsuccess' => "'''ہن تسی {{SITENAME}} تے \"\$1\" دے ناں توں لاگ ان او'''",
-'nosuchuser' => 'اس $1 ناں نال کوئی ورتن آلا نہیں۔
+'yourname' => 'ورتن والہ:',
+'yourpassword' => 'کنجی:',
+'yourpasswordagain' => 'کنجی دوبارہ لکھو:',
+'remembermypassword' => 'اس کمپیوٹر تے میرا لاگن یاد رکھو',
+'yourdomainname' => 'تواڈا علاقہ:',
+'login' => 'اندر آؤ جی',
+'nav-login-createaccount' => 'اندر آؤ / کھاتہ کھولو',
+'loginprompt' => 'اندر آنے آستے تواڈیاں کوکیز آن ہونیاں چائیدیاں نے {{SITENAME}}.',
+'userlogin' => 'اندر آؤ / کھاتہ کھولو',
+'logout' => 'لاگ توں باہر',
+'userlogout' => 'باہر آؤ',
+'notloggedin' => 'لاگ ان نئیں ہوۓ او',
+'nologin' => "تواڈا کھاتہ نہیں اے؟ '''$1'''۔",
+'nologinlink' => 'کھاتہ بناؤ',
+'createaccount' => 'کھاتہ بناؤ',
+'gotaccount' => "تواڈا پہلے توں کھاتہ ہے؟ '''$1'''",
+'gotaccountlink' => 'اندر آؤ',
+'createaccountmail' => 'ای میل دے نال',
+'badretype' => 'تواڈی کنجی صحیح نئیں۔',
+'loginerror' => 'لاگ ان چ مسئلا اے',
+'noname' => 'تسی کوئی پکا ورتن آلا ناں نئیں رکھ رۓ۔',
+'loginsuccesstitle' => 'تسی لاگن ہوگۓ او',
+'loginsuccess' => "'''ہن تسی {{SITENAME}} تے \"\$1\" دے ناں توں لاگ ان او'''",
+'nosuchuser' => 'اس $1 ناں نال کوئی ورتن آلا نہیں۔
اپنی لکھائی درست کرو یا نیا [[Special:UserLogin/signup|کھاتہ بناؤ]]۔',
-'nosuchusershort' => 'اس "<nowiki>$1</nowiki>" ناں دا کوئی ورتن آلا نہيں اے۔
+'nosuchusershort' => 'اس "<nowiki>$1</nowiki>" ناں دا کوئی ورتن آلا نہيں اے۔
اپنی الف، بے چیک کرو۔',
-'nouserspecified' => 'توانوں اپنا ورتن آلا ناں دسنا ہوۓ گا۔',
-'wrongpassword' => 'تواڈی کنجی سہی نہیں۔<br />
+'nouserspecified' => 'توانوں اپنا ورتن آلا ناں دسنا ہوۓ گا۔',
+'wrongpassword' => 'تواڈی کنجی سہی نہیں۔<br />
فیر سہی ٹرائی مارو۔',
-'wrongpasswordempty' => 'تواڈی کنجی کم نہیں کر رہی۔<br />
+'wrongpasswordempty' => 'تواڈی کنجی کم نہیں کر رہی۔<br />
فیر ٹرائی مارو۔',
-'passwordtooshort' => 'تواڈی کنجی ٹھیک نہیں یا بہت جھوٹی اے۔
+'passwordtooshort' => 'تواڈی کنجی ٹھیک نہیں یا بہت جھوٹی اے۔
ایدے چ کم از کم {{PLURAL:$1|$1|اک ھندسہ}} تے کنجی تواڈے ورتن آلے ناں تو مختلف ہونی چائیدی اے۔',
-'mailmypassword' => 'نئی کنجی ای میل کرو',
-'passwordremindertitle' => '{{SITENAME}} لئی نوی عارضی کنجی',
-'passwordremindertext' => 'کسے نے (غالبن تسی $1 آئی پی پتے توں) نوی کنجی ($4){{SITENAME}} واسطے منگی۔ اک عارضی کنجی ورتن والے "$2" دے لئی بنائی گئی سی تے "$3" تے سیٹ کر دتی گئی سی۔ اگر اے تواڈا کم اے تے توانوں اندر آکے اک نوی $5 کنجی چننی پۓ گی۔
+'mailmypassword' => 'نئی کنجی ای میل کرو',
+'passwordremindertitle' => '{{SITENAME}} لئی نوی عارضی کنجی',
+'passwordremindertext' => 'کسے نے (غالبن تسی $1 آئی پی پتے توں) نوی کنجی ($4){{SITENAME}} واسطے منگی۔ اک عارضی کنجی ورتن والے "$2" دے لئی بنائی گئی سی تے "$3" تے سیٹ کر دتی گئی سی۔ اگر اے تواڈا کم اے تے توانوں اندر آکے اک نوی $5 کنجی چننی پۓ گی۔
اگر کسے ہور نے اے درخواست کیتی اے یا تسی اپنی پرانی کنجی لب لئی اے تے تسی اینوں بدلنا نئیں چاندے تے تسی اس سنعے نوں چھڈو تے پرانی کنجی استعمال کرو۔',
-'noemail' => 'اس ورتن والے "$1" دا کوئی ای میل پتہ نئیں ہے گا۔',
-'passwordsent' => 'اک نوی کنجی اس ای میل "$1" تے پیجی جاچکی اے۔<br />
+'noemail' => 'اس ورتن والے "$1" دا کوئی ای میل پتہ نئیں ہے گا۔',
+'passwordsent' => 'اک نوی کنجی اس ای میل "$1" تے پیجی جاچکی اے۔<br />
جدوں توانوں اے ملے تسی دوبارہ لاگن ہو۔',
-'eauthentsent' => 'اک کنفرمیشن ای میل دتے گۓ ای میل پتے تے پیج دتی گئی اے۔ اس توں پہلاں کہ کوئی دوجی ای میل کھاتے تے پیجی جاۓ، توانوں ای میل چ دتیاں ہدایات تے عمل کرنا ہوۓ گا، تا کے اے پکا ہو سکے کہ اے کھاتہ تواڈا ہی اے۔',
-'accountcreated' => 'کھاتہ کھل گیا',
-'loginlanguagelabel' => 'بولی: $1',
+'eauthentsent' => 'اک کنفرمیشن ای میل دتے گۓ ای میل پتے تے پیج دتی گئی اے۔ اس توں پہلاں کہ کوئی دوجی ای میل کھاتے تے پیجی جاۓ، توانوں ای میل چ دتیاں ہدایات تے عمل کرنا ہوۓ گا، تا کے اے پکا ہو سکے کہ اے کھاتہ تواڈا ہی اے۔',
+'accountcreated' => 'کھاتہ کھل گیا',
+'loginlanguagelabel' => 'بولی: $1',
# Password reset dialog
'resetpass_header' => 'کھاتے دی کنجی بدلو',
@@ -392,8 +400,8 @@ $messages = array(
'''ایتھے او کم بغیر اجازت توں نا لکھو جیدے حق راکھویں نے '''",
'longpagewarning' => "'''ہوشیار: اے صفحہ $1 کلوبائیٹ لمبا اے؛ کچھ کھوجیاں نو 32 کلوبائیٹ توں لمبے صفحے لکھنا یا پہنچنا مسئلہ ہوندا اے۔ <br />
اس صفحہ نوں چھوٹے ٹوٹیاں چ تقسیم کرن دے بارے چ سوچ لو۔'''",
-'templatesused' => 'اس صفحے تے استعمال کیتے گۓ سانچے:',
-'templatesusedpreview' => 'اس کچے کم تے استعمال ہوۓ سانچے:',
+'templatesused' => 'اس صفحے تے ورتے گۓ {{PLURAL:$1|سانچے|سانچہ}}:',
+'templatesusedpreview' => 'اس کچے کم تے ورتے گئے {{PLURAL:$1|سانچے|سانچہ}} :',
'templatesusedsection' => 'اس ٹوٹے چ استعمال کیتے گۓ سچے:',
'template-protected' => '(بچایا گیا)',
'template-semiprotected' => '(کج بچایا ہویا)',
@@ -404,10 +412,12 @@ $messages = array(
'nocreate-loggedin' => 'توانوں نواں صفحہ بنانے دی اجازت نئیں۔',
'permissionserrors' => 'توانوں اجازت چ کوئی مسئلا اے',
'permissionserrorstext-withaction' => 'تواڈے کول $2 کرن دی اجازت نئیں اے۔ اس دی {{PLURAL:$1|وجہ|وجوہات}} نیں۔',
-'recreate-deleted-warn' => "'''خبردار: تسی اک پہلاں توں مٹایا ہویا صفحہ دوبارا لکھ رہے او۔'''
+'recreate-moveddeleted-warn' => "'''خبردار: تسی اک پہلاں توں مٹایا ہویا صفحہ دوبارا لکھ رہے او۔'''
توانوں اے گل سوچنی چائیدی اے کہ اینو لکھنا کوئی عقلمنداں دا کم اے۔<div/>
تواڈی سہولت آسطے مٹان دا لاگ ایتھے موجود اے۔",
+'moveddeleted-notice' => 'اس صفحے نوں مٹا دتا گیا اے۔
+مٹان دا لاگ تھلے دتا گیا اے۔',
# Account creation failure
'cantcreateaccounttitle' => 'کھاتہ نئیں کھول سکدے',
@@ -418,7 +428,7 @@ $messages = array(
'currentrev' => 'ہن آلی تبدیلی',
'currentrev-asof' => '$1 ویلے دا صفحہ',
'revisionasof' => 'دی تبدیلیاں $1',
-'revision-info' => '$2 نے $1 تے اے لکھیا', # Additionally available: $3: revision id
+'revision-info' => '$2 نے $1 تے اے لکھیا',
'previousrevision' => '← اوس توں پچھلا کم',
'nextrevision' => 'نویں تبدیلی →',
'currentrevisionlink' => 'موجودہ حالت',
@@ -431,30 +441,30 @@ $messages = array(
لیجنڈ: (موجودہ) = موجودہ تبدیلی نال مقابلہ،
(آخری) = پچھلی تبدیلی توں فرق، M = تھوڑی تبدیلی',
'history-fieldset-title' => 'ریکارڈ ویکھو',
-'deletedrev' => '[مٹایا جا چکیا اے]',
'histfirst' => 'سب توں پہلا',
'histlast' => 'سب توں نواں',
'historyempty' => '(خالی)',
# Revision feed
-'history-feed-item-nocomment' => '$2 نوں $1', # user at time
+'history-feed-item-nocomment' => '$2 نوں $1',
# Revision deletion
-'rev-deleted-comment' => '(صلاع مٹ گئی)',
-'rev-deleted-user' => '(ورتن آلا ناں مٹ گیا)',
-'rev-delundel' => 'وکھاؤ/لکاؤ',
-'revisiondelete' => 'ریوژن مٹاؤ یا واپس کرو',
-'revdelete-hide-text' => 'ریوژن ٹیکسٹ لکاؤ',
-'revdelete-hide-name' => 'کم تے نشانہ چھپاؤ',
-'revdelete-hide-comment' => 'لکھن دے بارے چ صلاع لکاؤ',
-'revdelete-hide-user' => 'لکھن آلے دا ناں/آئی پی پتہ لکاؤ',
-'revdelete-hide-image' => 'فائل دا مواد لکاؤ',
-'revdel-restore' => 'وکھالا بدلو',
-'pagehist' => 'صفحے دی تاریخ',
-'deletedhist' => 'مٹائی گئی تاریخ',
-'revdelete-content' => 'مواد',
-'revdelete-summary' => 'لکھائی دا خلاصہ',
-'revdelete-uname' => 'ورتن آلے دا ناں',
+'rev-deleted-comment' => '(صلاع مٹ گئی)',
+'rev-deleted-user' => '(ورتن آلا ناں مٹ گیا)',
+'rev-delundel' => 'وکھاؤ/لکاؤ',
+'revisiondelete' => 'ریوژن مٹاؤ یا واپس کرو',
+'revdelete-hide-text' => 'ریوژن ٹیکسٹ لکاؤ',
+'revdelete-hide-image' => 'فائل دا مواد لکاؤ',
+'revdelete-hide-name' => 'کم تے نشانہ چھپاؤ',
+'revdelete-hide-comment' => 'لکھن دے بارے چ صلاع لکاؤ',
+'revdelete-hide-user' => 'لکھن آلے دا ناں/آئی پی پتہ لکاؤ',
+'revdel-restore' => 'وکھالا بدلو',
+'pagehist' => 'صفحے دی تاریخ',
+'deletedhist' => 'مٹائی گئی تاریخ',
+'revdelete-content' => 'مواد',
+'revdelete-summary' => 'لکھائی دا خلاصہ',
+'revdelete-uname' => 'ورتن آلے دا ناں',
+'revdelete-edit-reasonlist' => 'مٹانے دی وجہ لکھو',
# History merging
'mergehistory-from' => 'ذریعے آلا صفحہ:',
@@ -477,14 +487,11 @@ $messages = array(
'searchresulttext' => 'وکیپیڈیا چ کھوجن دے بارے چ ہور معلومات آستے کھوجن دا صفحہ ویکھو',
'searchsubtitle' => "تواڈی لفظ '''[[:$1]] آستے کھوج",
'searchsubtitleinvalid' => "'''$1''' آستے کھوج کیتی",
-'noexactmatch' => "'''اس \"\$1\" ناں دا کوئی صفحہ نہیں۔'''
-تسی اے [[:\$1|صفحہ لکھ سکدے او]]۔",
-'noexactmatch-nocreate' => "'''\"\$1\" ناں دا کوئی صفحہ نئیں اے۔'''",
'notitlematches' => 'اے لفظ کسی صفحے دے ناں چ نئیں اے۔',
'notextmatches' => 'کوئی صفح نئیں لبیا',
-'prevn' => 'پہلا $1',
-'nextn' => 'اگلا $1',
-'viewprevnext' => 'ویکھو ($1) ($2) ($3)',
+'prevn' => 'پہلا {{PLURAL:$1|$1}}',
+'nextn' => 'اگلا {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ویکھو ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:فہرست',
'search-result-size' => '$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})',
'search-redirect' => '($1 ریڈائریکٹ)',
@@ -498,7 +505,6 @@ $messages = array(
'search-relatedarticle' => 'جڑیاں',
'searchrelated' => 'جڑیا',
'searchall' => 'سارے',
-'showingresultstotal' => 'اس صفحے تے $1 توں $2 تک نتارے وکھاۓ جارۓ نیں۔ جدوں کہ $4 وچوں $3 نتارے تھلے نیں۔',
'nonefound' => "'''صفحیاں دے ناں ڈیفالٹ تے کھوجے جاندے نیں'''
اپنے لفظ توں پہلاں ''all:'' لا کے کھوجو۔ اس نال گلاں باتاں آلے صفحے، سچے وغیرہ سب چ تواڈا لفظ کھوجیا جاۓ گل۔",
'powersearch' => 'ودیا کھوج',
@@ -508,30 +514,38 @@ $messages = array(
'powersearch-field' => 'لئی کھوج',
'search-external' => 'باہر دی کھوج',
+# Quickbar
+'qbsettings-none' => 'کوئی نئیں',
+
# Preferences page
-'preferences' => 'تانگاں',
-'mypreferences' => 'میریاں تانگاں',
-'prefs-edits' => 'تبدیلیاں دی گنتی:',
-'prefsnologin' => 'لاگ ان نئیں او',
-'qbsettings-none' => 'کوئی نئیں',
-'changepassword' => 'کنجی بدلو',
-'skin' => 'کھل',
-'math' => 'حساب کتاب',
-'datetime' => 'تاریخ تے ویلہ',
-'math_unknown_error' => 'انجان مسئلہ',
-'math_unknown_function' => 'انجان کم',
-'prefs-personal' => 'ورتن آلے دا پروفائل',
-'prefs-rc' => 'نویاں تبدیلیاں',
-'prefs-watchlist' => 'نظر تھلے صفحے',
-'saveprefs' => 'بچاؤ',
-'textboxsize' => 'لکھائی',
-'rows' => 'قطار:',
-'columns' => 'کالم:',
-'searchresultshead' => 'کھوج',
-'timezonelegend' => 'ویلے دا علاقہ',
-'localtime' => 'مقامی ویلا:',
-'timezoneselect' => 'ویلیاں دے علاقے:',
-'files' => 'فائلاں',
+'preferences' => 'تانگاں',
+'mypreferences' => 'میریاں تانگاں',
+'prefs-edits' => 'تبدیلیاں دی گنتی:',
+'prefsnologin' => 'لاگ ان نئیں او',
+'changepassword' => 'کنجی بدلو',
+'prefs-skin' => 'کھل',
+'prefs-math' => 'حساب کتاب',
+'prefs-datetime' => 'تاریخ تے ویلہ',
+'prefs-personal' => 'ورتن آلے دا پروفائل',
+'prefs-rc' => 'نویاں تبدیلیاں',
+'prefs-watchlist' => 'نظر تھلے صفحے',
+'saveprefs' => 'بچاؤ',
+'prefs-editing' => 'لکھائی',
+'rows' => 'قطار:',
+'columns' => 'کالم:',
+'searchresultshead' => 'کھوج',
+'timezonelegend' => 'ویلے دا علاقہ',
+'localtime' => 'مقامی ویلا:',
+'prefs-files' => 'فائلاں',
+'youremail' => 'ای میل:',
+'username' => 'ورتن آلے دا ناں:',
+'yourrealname' => 'اصلی ناں:',
+'yourlanguage' => 'بولی:',
+'yournick' => 'دسخط:',
+'email' => 'ای میل',
+'prefs-help-realname' => 'اصل ناں تواڈی مرزی تے اے۔<br />
+اگر تسی اینو دے دیو گۓ تے اے تواڈا کم اس ناں نال لکھیا جاۓ گا۔',
+'prefs-help-email-required' => 'ای میل پتہ چائیدا اے۔',
# User rights
'userrights-groupsmember' => 'سنگی اے:',
@@ -615,6 +629,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'ملدیاں جلدیاں تبدیلیاں',
+'recentchangeslinked-feed' => 'ملدیاں جلدیاں تبدیلیاں',
+'recentchangeslinked-toolbox' => 'ملدیاں جلدیاں تبدیلیاں',
'recentchangeslinked-title' => '"$1" نال تعلق آلیاں تبدیلیاں',
'recentchangeslinked-noresult' => 'جڑیاں صفحیاں چ دتے ہوۓ ویلے چ کوئی تبدیلیاں نہیں۔',
'recentchangeslinked-summary' => "اے اوناں تبدیلیاں دی لسٹ اے جیڑیاں تھوڑا چر پہلاں بنائیاں گئیاں اوناں صفحیاں تے جیڑے خاص صفحے تے جڑدے نے یا کسی خاص کیٹاگری دے ممبراں نوں۔<br />
@@ -625,7 +641,6 @@ $messages = array(
# Upload
'upload' => 'فائل چڑھاؤ',
'uploadbtn' => 'فائل چڑھاؤ',
-'reupload' => 'دوبارہ چڑھاؤ',
'reuploaddesc' => 'فائل چڑانا چھڑو تے فائل چڑانے آلے فارم تے واپس ٹرو',
'uploadnologin' => 'لاگ ان نئیں ہوۓ',
'uploaderror' => 'فائل چڑاندیاں مسئلا ہویا اے',
@@ -668,6 +683,7 @@ $messages = array(
'listfiles_description' => 'تفصیل',
# File description page
+'file-anchor-link' => 'فائل',
'filehist' => 'پچھلی حالت',
'filehist-help' => 'فائل نو اس ویلے دی حالت وچ ویکھن واسطے تاریخ/ویلے تے کلک کرو۔',
'filehist-deleteall' => 'سب نوں مٹاؤ',
@@ -684,9 +700,7 @@ $messages = array(
'imagelinks' => 'کتھے کتھے جوڑ اے',
'linkstoimage' => 'تھلے دتے گۓ {{PLURAL:$1|$1 صفحے}} اس فائل نال جڑدے نے',
'nolinkstoimage' => 'اس فائل نال جڑیا کوئی صفحہ نہیں۔',
-'sharedupload' => 'اے فائل $1 مشترکہ اپلوڈ اے تے اے دوجے منصوبے وی استعمال کر سکدے نے۔', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'اس ناں دی کوئی فائل نہيں، مگر تسی $1 بنا سکدے او۔',
-'noimage-linktext' => 'اک چڑھاؤ',
+'sharedupload' => 'اے فائل $1 مشترکہ اپلوڈ اے تے اے دوجے منصوبے وی استعمال کر سکدے نے۔',
'uploadnewversion-linktext' => 'اس فائل دا نوا ورژن چھڑھاؤ',
# File reversion
@@ -734,8 +748,8 @@ $messages = array(
'doubleredirects' => 'دوہری ریڈیرکٹس',
'brokenredirects' => 'ٹٹے ہوۓ ریڈائریکٹس',
-'brokenredirects-edit' => '(لکھو)',
-'brokenredirects-delete' => '(مٹاؤ)',
+'brokenredirects-edit' => 'لکھو',
+'brokenredirects-delete' => 'مٹاؤ',
'withoutinterwiki' => 'او صفحہ جناں دا دوجی بولیاں نال جوڑ نہیں',
'withoutinterwiki-submit' => 'وکھاو',
@@ -892,7 +906,6 @@ $messages = array(
'protectexpiry' => 'انت ہوندا اے:',
'protect_expiry_invalid' => 'اکسپائری ٹیم غلط اے۔',
'protect_expiry_old' => 'ایدا اکسپائری ٹائم گزر چکیا اے۔',
-'protect-unchain' => 'لے جانے دی اجازتاں دیو',
'protect-text' => "تسی اس صفحے دے حفاظتی درجے نوں تک تے تبدیل کر سکدے او'''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "تواڈا کھاتہ اجازت نہیں دیندا کہ تسی صفحے دے حفاظتی درجے نوں تبدیل کرو۔<br />
ایتھے صفحے آسطے موجودہ ترتیب نے '''$1''':",
@@ -954,6 +967,7 @@ $messages = array(
'sp-contributions-newbies' => 'صرف نویں ورتن والیاں دے کم وکھاؤ',
'sp-contributions-newbies-sub' => 'نویں کھاتیاں آستے',
'sp-contributions-blocklog' => 'لاگ روکو',
+'sp-contributions-talk' => 'گل بات',
'sp-contributions-search' => 'حصے پان آلیاں دی تلاش',
'sp-contributions-username' => 'آئی پی پتہ یا ورتن آلا ناں:',
'sp-contributions-submit' => 'کھوجو',
@@ -988,7 +1002,7 @@ $messages = array(
'ipbemailban' => 'ورتن آلے نوں ای میل پیجن توں روکو',
'ipbsubmit' => 'اس ورتن آلے نوں روکو',
'ipbother' => 'دوجے ویلے:',
-'ipboptions' => 'دو کینٹے:2 hours,1 دن:1 day,3 دن:3 days,1 ہفتہ:1 week,2 ہفتے:2 weeks,1 مہینہ:1 month,3 مہینے:3 months,6 مہینے:6 months,1 سال:1 year,بے انت:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'دو کینٹے:2 hours,1 دن:1 day,3 دن:3 days,1 ہفتہ:1 week,2 ہفتے:2 weeks,1 مہینہ:1 month,3 مہینے:3 months,6 مہینے:6 months,1 سال:1 year,بے انت:infinite',
'ipbotheroption' => 'دوجا',
'ipbotherreason' => 'دوجیاں ہور وجہ:',
'badipaddress' => 'آئی پی پتہ ٹھیک نئیں',
@@ -1049,7 +1063,7 @@ $messages = array(
'move-watch' => 'صفحے اکھ تھلے رکھو',
'movepagebtn' => 'صفحہ لے جاؤ',
'pagemovedsub' => 'لے جانا کامیاب ریا',
-'movepage-moved' => '\'\'\'"$1" نوں "$2" لے جایا گیا اے\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" نوں "$2" لے جایا گیا اے\'\'\'',
'articleexists' => 'اس ناں دا صفحہ یا تے پہلاں توں ہی موجود اے یا فیر جیڑا ناں تسی چنیا اے درست نہیں۔<br />
کوئی دوجا ناں چنو۔',
'talkexists' => "'''اے صفحہ کامیابی دے نال ے جایا گیا مگر ایدا گلاں باتاں آلا صفحہ رنہیں لے جایا جا سکدا کیونکہ اک نیا اسی ناں نال موجود اے۔ ایناں نوں ہتھ نال ملا دیو۔'''",
@@ -1122,6 +1136,7 @@ $messages = array(
'tooltip-search-fulltext' => 'اس لفظ نوں صفحیاں چ لبو',
'tooltip-p-logo' => 'پہلا صفہ',
'tooltip-n-mainpage' => 'پہلے صفحے دی سیر',
+'tooltip-n-mainpage-description' => 'پہلے ورقے تے جاؤ',
'tooltip-n-portal' => 'منصوبے دے بارے وچ، توسی کی کر سکدے او تے کنج کھوج سکدے او',
'tooltip-n-currentevents' => 'موجودہ حالات تے پچھلیاں معلومات دیکھو',
'tooltip-n-recentchanges' => 'وکی تے نویاں تبدیلیاں۔',
@@ -1165,6 +1180,10 @@ $messages = array(
'numedits' => 'لکھائی دی گنتی (صفحہ): $1',
'numwatchers' => 'ویکھنے آلیاں دی گنتی: $1',
+# Math errors
+'math_unknown_error' => 'انجان مسئلہ',
+'math_unknown_function' => 'انجان کم',
+
# Browsing diffs
'previousdiff' => '← پرانی لکھائی',
'nextdiff' => 'نویں لکھائی →',
@@ -1200,7 +1219,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'چوڑائی',
@@ -1229,7 +1248,7 @@ $messages = array(
'exif-unknowndate' => 'انجان تاریخ',
-'exif-orientation-1' => 'عام', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'عام',
'exif-exposureprogram-0' => 'بیان نئیں کیتا گیا',
'exif-exposureprogram-1' => 'طریقہ',
@@ -1277,7 +1296,7 @@ $messages = array(
'exif-subjectdistancerange-2' => 'نیڑے دا منظر',
'exif-subjectdistancerange-3' => 'دور دا منظر',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'کلومیٹر فی کینٹہ',
'exif-gpsspeed-m' => 'میل فی کینٹہ',
'exif-gpsspeed-n' => 'ناٹ',
@@ -1323,7 +1342,7 @@ $messages = array(
'watchlisttools-raw' => 'کچی اکھ تھلے رکھی ہوئی نو تبدیل کرو',
# Special:Version
-'version' => 'ورژن', # Not used as normal message but as header for the special page itself
+'version' => 'ورژن',
# Special:SpecialPages
'specialpages' => 'خاص صفحے',
diff --git a/languages/messages/MessagesPnt.php b/languages/messages/MessagesPnt.php
index c9713bd9..ca1b69c1 100644
--- a/languages/messages/MessagesPnt.php
+++ b/languages/messages/MessagesPnt.php
@@ -16,22 +16,27 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Μέσον',
- NS_SPECIAL => 'Ειδικόν',
- NS_TALK => 'Καλάτσεμαν',
- NS_USER => 'Χρήστες',
- NS_USER_TALK => 'Καλάτσεμαν_χρήστε',
- NS_PROJECT_TALK => '$1_καλάτσεμαν',
- NS_FILE => 'Εικόναν',
- NS_FILE_TALK => 'Καλάτσεμαν_εικόνας',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
- NS_TEMPLATE => 'Πρότυπον',
- NS_TEMPLATE_TALK => 'Καλάτσεμαν_πρότυπι',
- NS_HELP => 'Βοήθειαν',
- NS_HELP_TALK => 'Καλάτσεμαν_βοήθειας',
- NS_CATEGORY => 'Κατηγορίαν',
- NS_CATEGORY_TALK => 'Καλάτσεμαν_κατηγορίας',
+ NS_MEDIA => 'Μέσον',
+ NS_SPECIAL => 'Ειδικόν',
+ NS_TALK => 'Καλάτσεμαν',
+ NS_USER => 'Χρήστες',
+ NS_USER_TALK => 'Καλάτσεμαν_χρήστε',
+ NS_PROJECT_TALK => '$1_καλάτσεμαν',
+ NS_FILE => 'Αρχείον',
+ NS_FILE_TALK => 'Καλάτσεμαν_αρχείονος',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Πρότυπον',
+ NS_TEMPLATE_TALK => 'Καλάτσεμαν_πρότυπι',
+ NS_HELP => 'Βοήθειαν',
+ NS_HELP_TALK => 'Καλάτσεμαν_βοήθειας',
+ NS_CATEGORY => 'Κατηγορίαν',
+ NS_CATEGORY_TALK => 'Καλάτσεμαν_κατηγορίας',
+);
+
+$namespaceAliases = array(
+ 'Εικόναν' => NS_FILE,
+ 'Καλάτσεμαν_εικόνας' => NS_FILE_TALK,
);
$datePreferences = array(
@@ -63,6 +68,10 @@ $messages = array(
'underline-always' => 'Πάντα',
'underline-never' => 'Καμίαν',
+# Font style option in Special:Preferences
+'editfont-sansserif' => 'Γραμματοσειρά σαν-σερίφ',
+'editfont-serif' => 'Γραμματοσειράν σερίφ',
+
# Dates
'sunday' => 'Κερεκήν',
'monday' => 'Δευτέραν',
@@ -122,7 +131,7 @@ $messages = array(
'category-media-header' => 'Τα μέσα σην κατηγορίαν "$1" απές',
'category-empty' => "''Αβούτη κατηγορίαν πα 'κ εχ' νέ σελίδας νέ μέσα.''",
'hidden-categories' => '{{PLURAL:$1|Κρυμμένον κατηγορίαν|Κρυμμένα κατηγορίας}}',
-'hidden-category-category' => 'Κρυμμέν κατηγορίας', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Κρυμμέν κατηγορίας',
'category-subcat-count' => "{{PLURAL:$2|Αβούτη κατηγορίαν έχ' τ' αφκά την υποκατηγορίαν μαναχόν.|Αβούτη κατηγορίαν έχ' απές τ' αφκά {{PLURAL:$1|την υποκατηγορίαν|$1 τα υποκατηγορίας}}. Ούλ εντάμαν είν $2.}}",
'category-subcat-count-limited' => "Η κατηγορίαν ατή έχ' αφκά καικά {{PLURAL:$1|την υποκατηγορίαν|$1 τα υποκατηγορίας}}.",
'category-article-count' => "{{PLURAL:$2|Αβούτη κατηγορίαν έχ' τ' αφκά τη σελίδαν μαναχόν.|Τ' αφκά {{PLURAL:$1|η σελίδαν εν|$1 τα σελίδας είν}} απές σ' αβούτην την κατηγορίαν. Ούλ εντάμαν είν $2.}}",
@@ -130,13 +139,23 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Αβούτη κατηγορίαν έχ' τ' αφκά τ' αρχείον μαναχόν.| Τ' αφκά {{PLURAL:$1|το αρχείον εν|$1 τα αρχεία είν}} απές σ' αβούτην την κατηγορίαν. Ούλ εντάμαν είν $2.}}",
'category-file-count-limited' => "{{PLURAL:$1|Τ' αρχείον|$1 Τ' αρχεία}} αφκά καικά είν' σην κατηγορίαν.",
'listingcontinuesabbrev' => 'συνεχίζεται...',
+'index-category' => 'Συντεταγμένα σελίδας',
+'noindex-category' => 'Ασύντακτα σελίδας',
'mainpagetext' => "'''To λογισμικόν MediaWiki εθέκεν.'''",
-'about' => 'Περί',
-'article' => 'Σελίδαν',
-'newwindow' => "(ανοίγ' σ' άλλον παραθύρ)",
-'cancel' => 'Χάτεμαν',
+'about' => 'Περί',
+'article' => 'Σελίδαν',
+'newwindow' => "(ανοίγ' σ' άλλον παραθύρ)",
+'cancel' => 'Χάτεμαν',
+'moredotdotdot' => 'Πλέα...',
+'mypage' => "Τ' εμόν η σελίδαν",
+'mytalk' => "Τ' εμόν το καλάτσεμαν",
+'anontalk' => "Καλάτσεμα για τ'ατό το IP",
+'navigation' => 'Πορπάτεμαν',
+'and' => '&#32;και',
+
+# Cologne Blue skin
'qbfind' => 'Εύρον',
'qbbrowse' => 'Πλοήγησην',
'qbedit' => 'Άλλαξον',
@@ -144,15 +163,34 @@ $messages = array(
'qbpageinfo' => 'Συμφραζόμενα',
'qbmyoptions' => "Τ' εμά τα σελίδας",
'qbspecialpages' => 'Ειδικά σελίδας',
-'moredotdotdot' => 'Πλέα...',
-'mypage' => "Τ' εμόν η σελίδαν",
-'mytalk' => "Τ' εμόν το καλάτσεμαν",
-'anontalk' => "Καλάτσεμα για τ'ατό το IP",
-'navigation' => 'Πορπάτεμαν',
-'and' => '&#32;και',
-
-# Metadata in edit box
-'metadata_help' => 'Μεταδογμένα:',
+'faq' => 'Πολλά ερωτήσεις (FAQ)',
+'faqpage' => 'Project:Πολλά ερωτήσεις (FAQ)',
+
+# Vector skin
+'vector-action-delete' => 'Σβήσον',
+'vector-action-move' => 'Ετεροχλάεμαν',
+'vector-action-protect' => 'Ασπάλιγμαν',
+'vector-action-undelete' => 'Κλώσιμον',
+'vector-action-unprotect' => 'Άνοιγμαν',
+'vector-namespace-category' => 'Κατηγορίαν',
+'vector-namespace-help' => 'Σελίδα βοήθειας',
+'vector-namespace-image' => 'Αρχείον',
+'vector-namespace-main' => 'Σελίδαν',
+'vector-namespace-media' => 'Σελίδα μεσίων',
+'vector-namespace-mediawiki' => 'Μένεμαν',
+'vector-namespace-project' => 'Σχετικά με',
+'vector-namespace-special' => 'Ειδικόν σελίδαν',
+'vector-namespace-talk' => 'Καλάτσεμαν',
+'vector-namespace-template' => 'Πρότυπον',
+'vector-namespace-user' => 'Σελίδαν χρήστε',
+'vector-view-create' => 'Ποίσον',
+'vector-view-edit' => 'Άλλαξον',
+'vector-view-history' => 'Τερέστεν ιστορίαν',
+'vector-view-view' => 'Δεάβασον',
+'vector-view-viewsource' => 'Τερέστεν κωδικόν',
+'actions' => 'Ενέργειας',
+'namespaces' => 'Περιοχάς',
+'variants' => 'Παραλλαγάς',
'errorpagetitle' => 'Λάθος',
'returnto' => 'Επιστροφήν σο $1.',
@@ -202,7 +240,7 @@ $messages = array(
'otherlanguages' => "Σ' άλλα γλώσσας",
'redirectedfrom' => '(Έρτεν ασό $1)',
'redirectpagesub' => 'Σελίδαν διπλού σύνδεσμονος',
-'lastmodifiedat' => 'Αούτη σελίδα επεξεράστεν σα $1, $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Αούτη σελίδα επεξεράστεν σα $1, $2.',
'protectedpage' => 'Ασπαλιζμένον σελίδαν',
'jumpto' => 'Δέβα σο:',
'jumptonavigation' => 'Πορπάτεμαν',
@@ -212,7 +250,6 @@ $messages = array(
'aboutsite' => 'Περί {{SITENAME}}',
'aboutpage' => 'Project:Σχετικά',
'copyright' => 'Το περιεχόμενον εν άμον ντο λεει η $1.',
-'copyrightpagename' => '{{SITENAME}} δικαιώματα πνευματί',
'copyrightpage' => '{{ns:project}}:Δικαιώματα πνευματί',
'currentevents' => 'Ατωριζνά γεγονότα',
'currentevents-url' => 'Project:Ατωριζνά γεγονότα',
@@ -220,8 +257,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ιμπρέσουμ',
'edithelp' => "Βοήθεια για τ' αλλαγμαν",
'edithelppage' => 'Help:Άλλαγμαν',
-'faq' => 'Πολλά ερωτήσεις (FAQ)',
-'faqpage' => 'Project:Πολλά ερωτήσεις (FAQ)',
'helppage' => 'Help:Περιεχόμενα',
'mainpage' => 'Αρχικόν σελίδα',
'mainpage-description' => 'Αρχικόν σελίδα',
@@ -299,6 +334,8 @@ $messages = array(
'fileexistserror' => 'Τ\' αρχείον "$1" \'κ εγράφτεν: τ\' αρχείον υπάρχει',
'unexpected' => 'Άχρηστον αξία: "$1"="$2".',
'badarticleerror' => "Αβούτη η ενέργειαν 'κ επορεί να ίνεται σ'αβούτεν τη σελίδαν.",
+'cannotdelete' => 'Ατό ("$1") να σβύεται \'κ ίνεται.
+Γιαμ ενεσβύεν ασ\'άλλτς;',
'badtitle' => 'Άχρηστον τίτλος',
'badtitletext' => "Το ψαλαφεμένον ο τίτλος τη σελίδας εν άκυρον, γιά εύκαιρον γιά τσακωμένον διαγλωσσικόν σύνδεσμος.
Τερέστεν αν έχ' έναν γιά πολλά γράμματα που 'κ ίνεται να κουλανεύκουνταν απές σε τίτλον.",
@@ -315,11 +352,9 @@ $messages = array(
'virus-unknownscanner' => 'αναγνώριμον αντιικόν:',
# Login and logout pages
-'logouttitle' => 'Εξέβεμαν χρήστονος',
'welcomecreation' => "== Καλώς έρθετεν, $1! ==
Η λογαρίαν εσουν εγέντον.
Τ' άλλαγμαν τη [[Special:Preferences|{{SITENAME}} προτιμησίων]] εσουν μη νεσπάλετε.",
-'loginpagetitle' => 'Εσέβεμαν χρήστε',
'yourname' => 'Όνεμαν χρήστε:',
'yourpassword' => 'Σημάδι:',
'yourpasswordagain' => "Ξαν' γράψτεν το σημάδι:",
@@ -329,6 +364,7 @@ $messages = array(
'nav-login-createaccount' => 'Εμπάτεν / ποισέστεν λογαρίαν',
'loginprompt' => "Πρέπ' ν' άφτετε τα cookies για εμπείτε σο {{SITENAME}}.",
'userlogin' => 'Εμπάτεν / ποισέστεν λογαρίαν',
+'userloginnocreate' => 'Εμπάτεν',
'logout' => 'οξουκά',
'userlogout' => 'Οξουκά',
'notloggedin' => 'Ευρίσκεζνε οξουκά ασή Βικιπαίδειαν',
@@ -341,23 +377,7 @@ $messages = array(
'badretype' => "Τα σημάδε ντ' εγράψετεν 'κ ταιριάζνε.",
'userexists' => "Τ' όνεμαν έχ' ατό άλλος χρήστες.
Βαλέστε άλλον όνεμαν.",
-'youremail' => 'Ελεκτρονικόν μένεμαν:',
-'username' => 'Όνεμα χρήστε:',
-'uid' => 'ID Χρήστε:',
-'yourrealname' => 'Πραματικόν όνεμαν:',
-'yourlanguage' => "Τ' εσόν η γλώσσαν:",
-'yournick' => 'Υπογραφή:',
-'badsiglength' => "Το σημάδινεσουν εν πολλά τρανόν.
-Πρέπ' να εχ' λιγότερα ασά $1 {{PLURAL:$1|γράμμαν|γράμματα}}.",
-'yourgender' => 'Φύλον:',
-'gender-unknown' => 'Aναγνώριμον',
-'gender-male' => 'Αρσενικόν',
-'gender-female' => 'Θελκόν',
-'email' => 'Ελεκτρονικόν μένεμαν',
-'prefs-help-realname' => "'Κ επρέπ' να βάλετεν το τεσέτερον το πραματικόν τ' όνεμαν.
-Άμα αν εβάλετεν ατό, αμπορεί πα ν' αναγνωρίζκεται το τεσέτερον η δουλείαν.",
'loginerror' => 'Σφάλμα εγγραφής',
-'prefs-help-email-required' => 'Χρειάσκεται το ηλεκτρονικόν η διεύθυνση.',
'noname' => "'Κ έβαλατε καλόν όνεμαν χρήστε.",
'loginsuccesstitle' => "Έντον τ' εσέβεμαν",
'loginsuccess' => "'''Εσήβετεν σο {{SITENAME}} με τ'όνεμαν \"\$1\".'''",
@@ -367,12 +387,13 @@ $messages = array(
'nosuchusershort' => "Αδαπές 'κ εχ' χρήστεν με τ' όνομαν \"<nowiki>\$1</nowiki>\".
Τ'όνομαν γραφέστεν ατο τογρία.",
'nouserspecified' => "Πρέπ' να ψιλίζετε έναν όνεμαν.",
+'login-userblocked' => "Το χρήστεν έδεξαν ατον. Να εμπαίν 'κ ίνεται.",
'wrongpassword' => "Το σημάδιν 'κ εν σωστόν.
Ποισέστεν άλλο γράσεμαν.",
'wrongpasswordempty' => 'Το σημάδιν έτον εύκαιρον.
Ποισέστεν άλλο γράσεμαν.',
-'passwordtooshort' => "Το σημάδινεσουν εν πολλά μικρόν.
-Πρέπ' να εχ' {{PLURAL:$1|1 γράμμαν|$1 γράμματα}} κιαν και πρέπ' να εν αλλέτερον ασόν όνομαν τη χρήστε.",
+'passwordtooshort' => "Το σημάδινεσουν πρέπ' να εχ' {{PLURAL:$1|1 γράμμαν|$1 γράμματα}}.",
+'password-name-match' => "Τ'όνομαν και το σημάδιν 'κ ίνεται να είναι έναν. Αλλέικον πράγμαν εν το ένα ασ' άλλον.",
'mailmypassword' => 'Στείλον καινούρεον σημάδιν',
'passwordremindertitle' => 'Καινούρεον προσωρνόν σημάδιν για {{SITENAME}}',
'passwordremindertext' => 'Κάποιος (Γιαμ\' εσείστουν, ασήν διεύθυνσην IP $1)
@@ -406,6 +427,7 @@ $messages = array(
'resetpass_forbidden' => "Τα σημάδια για να εμπάτεν 'κ επορούν ν'αλλάζνε",
'resetpass-no-info' => "Επρέπ να ελάτεν απές για ν'ελέπετε αούτον τη σελίδαν κιάλλο τογρία.",
'resetpass-submit-loggedin' => 'Άλλαξον σημάδιν',
+'resetpass-submit-cancel' => 'Χάσονα',
'resetpass-wrong-oldpass' => "'Κ εγράφτεν τογρία το προσωρνόν ή κανονικόν σημάδιν.
Γιαμ' εποίκατε καινούρεον σημάδιν ή εποίκατε ψαλαφίον για καινούρεον προσωρνόν σημάδιν;",
'resetpass-temp-password' => "Προσωρινόν σημάδ':",
@@ -505,20 +527,20 @@ $messages = array(
Καμίαν κι ανασπάλλετε: Αδακά 'κ εν ο τόπον για να θέκουμε γράψιμον ντ' έγραψαν αλλ. Βαλέστε άρθρα όνταν κατέχετε τα δικαιώματα πνευματί μαναχόν.
'''ΚΑΜΙΑΝ 'Κ ΘΕΚΕΤΕ ΓΡΑΨΙΜΟΝ ΑΔΑΚΑ ΟΝΤΕΣ 'Κ ΕΧΕΤΕ ΤΑ ΔΙΚΑΙΩΜΑΤΑ ΠΝΕΥΜΑΤΙ!'''",
'longpagewarning' => "'''ΩΡΙΑ: Αβούτεν η σελίδαν έχ' μέγεθος $1 kb. Μερικά browser 'κ επορούν ν' επεξεργάσκουνταν σελίδας ντ' έχνε 32 kb κιαν. Επορείτε να λύετε το πρόβλημαν αν εφτάτεν ατέναν μικρά κομμάται.'''",
-'templatesused' => "Πρότυπα το μεταχειρίσκουνταν σ' αβούτεν την σελίδαν:",
-'templatesusedpreview' => "Πρότυπα σ' αβούτον το πρώτον τέρεμαν:",
+'templatesused' => "{{PLURAL:$1|Πρότυπον|Πρότυπα}} το μεταχειρίσκουνταν σ' αβούτεν την σελίδαν:",
+'templatesusedpreview' => "{{PLURAL:$1|Πρότυπον|Πρότυπα}} σ' αβούτον το πρώτον τέρεμαν:",
'template-protected' => '(ασπαλιγμένον)',
'template-semiprotected' => '(ημψά-ασπαλιγμένον)',
'hiddencategories' => "Αούτο η σελίδαν ανήκ' σα {{PLURAL:$1|1 κρυμμένον κατηγορία|$1 κρυμμένα κατηγορίας}}:",
'nocreatetext' => "Σο {{SITENAME}} περιορίσκουτον το ποίσεμα σελιδίων.
'Πορείτε να κλώσκεστε οπίς και ν' αλλάζετε έναν παλαιόν σελίδαν ή να [[Special:UserLogin|εμπάτε ή να εφτάτε λογαρίαν]].",
'permissionserrorstext-withaction' => "'Κ έχετε την άδειαν για $2, για {{PLURAL:$1|τ'αφκά το λόγον|τ'αφκά τοι λόγους}}:",
-'recreate-deleted-warn' => "'''Ωρία: Εφτάτε αξάν μίαν σελίδαν ντο νεβζινέθεν οψεκές.'''
+'recreate-moveddeleted-warn' => "'''Ωρία: Εφτάτε αξάν μίαν σελίδαν ντ' ενεσβύεν οψεκές.'''
Ίσως εν καλλίον να μην εφτάτε τη σελίδαν.
-Τερέστεν για βοήθειαν και σ' αρχείον την αιτίαν για το σβήσιμον:",
-'deleted-notice' => 'Αούτο η σελίδαν εβζινέθεν.
-Αφκά ευρίεται έναν γράψιμον ασο αρχείον για το σβήσεμαν τη σελίδας.',
+Τερέστεν για βοήθειαν σ' αρχείον σβησεματίων και ετεροχλαεματίων για την αιτίαν για το σβήσιμον:",
+'moveddeleted-notice' => 'Αούτο η σελίδαν εβζινέθεν.
+Αφκά ευρίεται έναν γράψιμον ασο αρχείον σβησεματίων και ετεροχλαεματίων τη σελίδας.',
# Account creation failure
'cantcreateaccounttitle' => "Το ποίσιμον τη λογαρίας 'κ έντον",
@@ -529,7 +551,7 @@ $messages = array(
'currentrev' => 'Ατωριζνόν μορφήν',
'currentrev-asof' => 'Ατωριζνόν μορφήν τη $1',
'revisionasof' => 'Μορφήν τη $1',
-'revision-info' => 'Έκδοση σα $1 ασόν/ασήν $2', # Additionally available: $3: revision id
+'revision-info' => 'Έκδοση σα $1 ασόν/ασήν $2',
'previousrevision' => '←Παλαιόν μορφήν',
'nextrevision' => 'Κι άλλο καινούρεον μορφήν→',
'currentrevisionlink' => 'Ατωριζνόν μορφήν',
@@ -542,25 +564,27 @@ $messages = array(
Πληροφορία: (ατωριζνόν) = διαφοράς με τ\' ατωριζνόν τη μορφήν,
(υστερνόν) = διαφοράς με τ\' υστερνόν τη μορφήν, μ = μικρά διαφοράς.',
'history-fieldset-title' => 'Εύρον σο ιστορικόν',
-'deletedrev' => '[εσβήεν]',
+'history-show-deleted' => "Ατά ντ'ενεσβύαν μαναχόν",
'histfirst' => "Ασ' όλεα παλαιόν",
'histlast' => "Ασ' όλεα καινούρ'",
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
'historyempty' => '(εύκαιρον)',
# Revision feed
-'history-feed-item-nocomment' => '$1 σο $2', # user at time
+'history-feed-item-nocomment' => '$1 σο $2',
# Revision deletion
-'rev-delundel' => 'δείξον/κρύψον',
-'revdel-restore' => 'Ἀλλαγμαν ορατότητας',
-'pagehist' => 'Ιστορίαν σελίδας',
-'deletedhist' => 'Σβηγμένον ιστορίαν',
-'revdelete-content' => 'περιεχόμενον',
-'revdelete-summary' => 'σύνοψην',
-'revdelete-uname' => "όνεμαν χρήστ'",
-'revdelete-hid' => 'κρυφόν $1',
-'revdelete-unhid' => 'όχι κρυφόν $1',
+'rev-delundel' => 'δείξον/κρύψον',
+'rev-showdeleted' => 'δείξον',
+'revdelete-show-file-submit' => 'Ναι',
+'revdel-restore' => 'Ἀλλαγμαν ορατότητας',
+'pagehist' => 'Ιστορίαν σελίδας',
+'deletedhist' => 'Σβηγμένον ιστορίαν',
+'revdelete-content' => 'περιεχόμενον',
+'revdelete-summary' => 'σύνοψην',
+'revdelete-uname' => "όνεμαν χρήστ'",
+'revdelete-hid' => 'κρυφόν $1',
+'revdelete-unhid' => 'όχι κρυφόν $1',
# History merging
'mergehistory-from' => 'Σελίδα πηγή:',
@@ -576,16 +600,6 @@ $messages = array(
'compareselectedversions' => 'Γαρσουλαεύτε...',
'editundo' => 'αναίρεση',
'diff-multi' => "({{PLURAL:$1|Μίαν αλλαγήν|$1 αλλαγάς}} 'κ δεκνίζκουνταν.)",
-'diff-src' => 'πηγήν',
-'diff-with' => '&#32;με $1 $2',
-'diff-with-final' => '&#32;και $1 $2',
-'diff-width' => 'πλάτος',
-'diff-height' => 'ύψος',
-'diff-td' => "'''κελλίον'''",
-'diff-dt' => "'''όρον ορισμού'''",
-'diff-font' => "'''γραμματοσειράν'''",
-'diff-big' => "'''τρανόν'''",
-'diff-strike' => "'''εγκάρσιον σβήσεμαν'''",
# Search results
'searchresults' => 'Εύρον αποτελέσματα',
@@ -593,16 +607,13 @@ $messages = array(
'searchresulttext' => "Κι άλλο πολλά πληροφορίας για τ'αράεμαν σο {{SITENAME}} ευρίσκουνταν σο [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Αραέβετε \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ούλα τα σελίδας ντ\'αρχίζνε με "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ούλα τα σελίδας ντο δεκνίζνε σο "$1"]])',
'searchsubtitleinvalid' => "Αράεψες το '''$1'''",
-'noexactmatch' => "'''Η Βικιπαίδειαν 'κ εχ' σελίδαν με τ' όνεμαν \"\$1\".'''
-Εμπορείτε να [[:\$1|εφτάτε ατέναν]].",
-'noexactmatch-nocreate' => "''''Κ έχ' σελίδαν με τ'όνομαν \"\$1\".'''",
'notitlematches' => "Κανέναν όνομαν σελίδας 'κ ταιριάζ",
'notextmatches' => "Κανέναν γράψιμον 'κ ταιριάζ",
-'prevn' => '$1 προηγουμένων',
-'nextn' => '$1 επομένων',
-'viewprevnext' => 'Τέρεν ($1) ($2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
+'nextn' => '{{PLURAL:$1|$1}} επομένων',
+'viewprevnext' => 'Τέρεν ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Περιεχόμενα',
-'searchprofile-images' => 'Αρχεία',
+'searchprofile-images' => 'Πολυμέσα',
'searchprofile-everything' => 'Όλεα',
'search-result-size' => '$1 ({{PLURAL:$2|1 λέξη|$2 λέξεις}})',
'search-redirect' => '(το διπλόν ο σύνδεσμον $1)',
@@ -614,28 +625,27 @@ $messages = array(
'search-mwsuggest-enabled' => 'με οδηγίας',
'search-mwsuggest-disabled' => 'θίχως οδηγίας',
'searchall' => 'ούλαι',
-'showingresultstotal' => "Αδά επουκά επορείτε να ελέπετε {{PLURAL:$4|τ'αποτέλεσμαν '''$1''' ασα '''$3'''|τ'αποτελέσματα '''$1 - $2''' ασα '''$3'''}}",
'nonefound' => "'''Σημείωση:''' Κανονικά ολίγα περιοχάς ονοματίων αραεύκουνταν μαναχόν. Βαλέστεν ''all:'' ασην λέξην εμπροστά για ίνεται το αράεμαν σ'όλεα τα σελίδας (και σελίδας καλατσεματί, πρότυπα κλπ.) ή βαλέστεν ους πρόθεμαν την περιοχήν ονοματίων π'θέλετε για να αραεύετε εκαικά.",
'powersearch' => 'Αναλυτικόν αράεμαν',
'powersearch-legend' => 'Αναλυτικόν αράεμαν',
'powersearch-ns' => "Αράεμαν σα τόπε τ' ονοματίων:",
'powersearch-redir' => 'Κατάλογον με διπλά συνδέσμ',
'powersearch-field' => 'Αράεμαν τη',
+'powersearch-toggleall' => 'Όλια',
+'powersearch-togglenone' => 'Τιδέν',
'search-external' => 'Εύρον σα εξ μερέαν',
+# Quickbar
+'qbsettings-none' => 'Τιδέν',
+
# Preferences page
'preferences' => 'Αγαπεμένα',
'mypreferences' => "Τ' εμά τ' αγαπεμένα",
-'qbsettings-none' => 'Τιδέν',
'changepassword' => 'Άλλαξον σημάδιν',
-'skin' => 'Όψην',
+'prefs-skin' => 'Όψην',
'skin-preview' => 'Πρώτον τέρεμαν',
-'math' => 'Απόδοσην μαθηματικίων',
-'dateformat' => 'Μορφή ημερομηνίας',
-'datetime' => 'Ημερομηνίαν και ώραν',
-'math_unknown_function' => 'άγνωρος συνάρτησην',
-'math_lexing_error' => 'σφάλμαν λεξικής ανάλυσης',
-'math_syntax_error' => 'σφάλμαν σύνταξης',
+'prefs-math' => 'Απόδοσην μαθηματικίων',
+'prefs-datetime' => 'Ημερομηνίαν και ώραν',
'prefs-rc' => 'Υστερνά αλλαγάς',
'prefs-watchlist' => 'Κατάλογον ωριαγματί',
'prefs-misc' => 'Διαφ',
@@ -655,7 +665,25 @@ $messages = array(
'timezoneregion-indian' => 'Ινδικόν Ωκεανός',
'timezoneregion-pacific' => 'Ειρηνικόν Ωκεανός',
'default' => 'προεπιλογήν',
-'files' => 'Αρχεία',
+'prefs-files' => 'Αρχεία',
+'youremail' => 'Ελεκτρονικόν μένεμαν:',
+'username' => 'Όνεμα χρήστε:',
+'uid' => 'ID Χρήστε:',
+'yourrealname' => 'Πραματικόν όνεμαν:',
+'yourlanguage' => "Τ' εσόν η γλώσσαν:",
+'yournick' => 'Υπογραφή:',
+'badsiglength' => "Το σημάδινεσουν εν πολλά τρανόν.
+Πρέπ' να εχ' λιγότερα ασά $1 {{PLURAL:$1|γράμμαν|γράμματα}}.",
+'yourgender' => 'Φύλον:',
+'gender-unknown' => 'Aναγνώριμον',
+'gender-male' => 'Αρσενικόν',
+'gender-female' => 'Θελκόν',
+'email' => 'Ελεκτρονικόν μένεμαν',
+'prefs-help-realname' => "'Κ επρέπ' να βάλετεν το τεσέτερον το πραματικόν τ' όνεμαν.
+Άμα αν εβάλετεν ατό, αμπορεί πα ν' αναγνωρίζκεται το τεσέτερον η δουλείαν.",
+'prefs-help-email-required' => 'Χρειάσκεται το ηλεκτρονικόν η διεύθυνση.',
+'prefs-signature' => 'Υπογραφή',
+'prefs-diffs' => 'Διαφοράς',
# User rights
'userrights-groupsmember' => 'Μέλος τη:',
@@ -739,6 +767,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'Σχετικά αλλαγάς',
+'recentchangeslinked-feed' => 'Σχετικά αλλαγάς',
+'recentchangeslinked-toolbox' => 'Σχετικά αλλαγάς',
'recentchangeslinked-title' => 'Αλλαγάς τη "$1"',
'recentchangeslinked-noresult' => "Σ' αβούτα τα σελίδας 'κ εγένταν αλλαγάς.",
'recentchangeslinked-summary' => "Αβούτος εν κατάλογον με τ' υστερνά τ' αλλαγάς σελιδίων με σύνδεσμον ασ' έναν συγκεκριμένον σελίδαν (για σε σελίδας συγκεκριμένου κατηγορίας).
@@ -749,7 +779,6 @@ $messages = array(
# Upload
'upload' => 'Φόρτωσον αρχείον',
'uploadbtn' => 'Φόρτωσον αρχείον',
-'reupload' => 'Φόρτωσον αξάν',
'reuploaddesc' => 'Στα! Μην εφτάς το φόρτεμαν! Δέβα οπίς ση σελίδαν φωρτεματί!',
'uploadnologin' => "'Κ είστουν απές. Εμπάτε σην λογαρίανεσουν.",
'uploadnologintext' => "Πρεπ' σην σελίδαν [[Special:UserLogin|απές]] να είσνε (log in) για πορείτε να φορτώνετε αρχεία.",
@@ -783,6 +812,7 @@ $messages = array(
'listfiles_count' => 'Εκδόσεις',
# File description page
+'file-anchor-link' => 'Εικόνα',
'filehist' => "Ιστορικόν τ' αρχείου",
'filehist-help' => "Εφτάτε κλικ σ' έναν ημερομηνίαν/ώραν απάν αέτς για να τερείτε πως έτον τ' αρχείον σ' εκείνεν την ώραν.",
'filehist-deleteone' => 'σβήσεμαν',
@@ -799,13 +829,15 @@ $messages = array(
'imagelinks' => 'Συνδέσμ αρχείων',
'linkstoimage' => "Ατά τα {{PLURAL:$1|σελίδαν δεκνίζ'|$1 σελίδας δεκνίζ'νε}} σην εικόναν:",
'nolinkstoimage' => "'Κ εχ σελίδας ντο δεκνίζνε σ' αβούτεν εικόναν.",
-'sharedupload' => "Αούτον τ' αρχείον εφορτώθεν ασό $1 κι επορούν και κουλανεύν'ατο σ' άλλα έργα.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => "Το γράψιμον αση $1 ευρίκετε ατο κι αλλ' αφκά.",
-'shareduploadwiki-linktext' => "σελίδα ντ'εξηγίζ' τ'αρχείον",
-'noimage' => "Αρχείον με αΐκον όνεμαν 'κ έχ', άμα επορείς να $1.",
-'noimage-linktext' => "σκώσ' έναν",
+'sharedupload' => "Αούτον τ' αρχείον εφορτώθεν ασό $1 κι επορούν και κουλανεύν'ατο σ' άλλα έργα.",
+'sharedupload-desc-there' => "Αούτον τ' αρχείον εφορτώθεν ασό $1. Κι άλλα έργα επορούν και κουλανέυν'ατο.
+Δεαβάστεν τη [$2 file description page] αέτς για να μαθάνετε πολλά για τ'ατό.",
+'sharedupload-desc-here' => "Αούτον τ' αρχείον εφορτώθεν ασό $1 κι επορούν και κουλανεύν'ατο σ' άλλα έργα.
+Το γράψιμον κιαλλ'αφκά αση [$2 file description page] ατ' εν κι εξηγίζ'ατο.",
+'filepage-nofile' => "Αΐκον αρχείον αδαπές 'κ εχ.",
+'filepage-nofile-link' => "Αρχείον μ' αΐκον τ'όνεμαν 'κ έχ', άμα επορείς να [$1 σκώντ'ς ατο].",
'uploadnewversion-linktext' => "Σκώσον καινούρεον έκδοση τ'ατουνού τ' αρχείου",
-'shared-repo-from' => 'ασό $1', # $1 is the repository name
+'shared-repo-from' => 'ασό $1',
# File reversion
'filerevert' => 'Κλώσιμον $1',
@@ -845,7 +877,8 @@ $messages = array(
'doubleredirects' => 'Περισσά διπλά συνδέσμ',
'brokenredirects' => 'Τσακωμένα διπλά συνδέσμ',
-'brokenredirects-delete' => '(σβήσεμαν)',
+'brokenredirects-edit' => 'άλλαγμαν',
+'brokenredirects-delete' => 'σβήσεμαν',
'withoutinterwiki' => "Σελίδας ντο κ' έχνε συνδέσμ",
'withoutinterwiki-legend' => 'Προθέκεμαν',
@@ -915,9 +948,12 @@ $messages = array(
# Special:Categories
'categories' => 'Κατηγορίας',
-'categoriespagetext' => "Τ' αφκά τα κατηγορίας έχνε απές σελίδας και μέσα. [[Special:UnusedCategories|Κατηγορίας που 'κ εμεταχειρίσκουνταν]] 'κ επορείτε να ελέπετε τα αδακά.
+'categoriespagetext' => "{{PLURAL:$1|Η αφκά κατηγορίαν εχ|Τ' αφκά τα κατηγορίας έχνε}} απές σελίδας και μέσα. [[Special:UnusedCategories|Κατηγορίας που 'κ εμεταχειρίσκουνταν]] 'κ επορείτε να ελέπετε τα αδακά.
Τερέστεν και τα [[Special:WantedCategories|κατηγορίας που χρειάσκουνταν]].",
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => "δουλείας ντ' εποίκε",
+
# Special:LinkSearch
'linksearch' => 'Συνδέσμαι',
'linksearch-ns' => 'Περιοχή ονοματίων:',
@@ -1002,7 +1038,6 @@ $messages = array(
'protectexpiry' => 'Τελείται:',
'protect_expiry_invalid' => "Ο χρόνον τελεματί 'κ εν σωστόν.",
'protect_expiry_old' => 'Ο χρόνον τελεματί πέρνιξον.',
-'protect-unchain' => 'Άνοιξον τα δικαιώματα ετεροχλάεματι',
'protect-text' => "Αδά επορείτε να τερείτε και ν' αλλάζετε τ' επίπεδον τη προστασίας για τη σελίδαν '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Η λογαρίανεσουν 'κ έχ' το δικαίωμαν να αλλάζ' τ' ασπάλιγμαν τη σελίδας.
Αδά έχ' τ' ατωριζνά τα νομς για τη σελίδαν '''$1''':",
@@ -1016,7 +1051,7 @@ $messages = array(
'protect-expiry-indefinite' => 'αόριστον',
'protect-cascade' => "Ασπάλιγμαν σελιδίων ντ' είν απές σ' αβούτεν σελίδαν (διαδοχικόν προστασίαν)",
'protect-cantedit' => "'Κι έχετε δικαίωμαν ν' αλλάζετε τ' επίπεδον ασπάλιγματι τ' ατεινές σελίδας.",
-'protect-expiry-options' => '1 ώραν:1 hour,1 ημέραν:1 day,1 εβδομάδαν:1 week,2 εβδομάδας:2 weeks,1 μήναν:1 month,3 μήνας:3 months,6 μήνας:6 months,1 χρόνον:1 year,αόριστα:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ώραν:1 hour,1 ημέραν:1 day,1 εβδομάδαν:1 week,2 εβδομάδας:2 weeks,1 μήναν:1 month,3 μήνας:3 months,6 μήνας:6 months,1 χρόνον:1 year,αόριστα:infinite',
'restriction-type' => 'Δικαίωμαν:',
'restriction-level' => 'Επίπεδον περιορισμού:',
'pagesize' => '(bytes)',
@@ -1030,6 +1065,7 @@ $messages = array(
# Undelete
'undeletebtn' => 'Ποίσον ξαν',
'undeletelink' => 'τέρεμαν/επαναφορά',
+'undeleteviewlink' => 'τέρεμα',
'undeletecomment' => 'Σχόλιον:',
'undeletedarticle' => 'επαναφορά τη "[[$1]]"',
'undelete-search-box' => "Αράεμαν σελιδίων ντ'ενεσβύαν",
@@ -1054,6 +1090,7 @@ $messages = array(
'sp-contributions-newbies-sub' => 'Για τα καινούρεα τοι λογαρίας',
'sp-contributions-blocklog' => 'Αρχείον ασπαλιγματίων',
'sp-contributions-logs' => 'αρχεία',
+'sp-contributions-talk' => 'καλάτσεμαν',
'sp-contributions-search' => 'Εύρον συνεισφοράντας',
'sp-contributions-username' => 'Διεύθυνσην IP γιά όνεμαν χρήστε:',
'sp-contributions-submit' => 'Αράεμαν',
@@ -1085,7 +1122,7 @@ $messages = array(
'ipbanononly' => "Ασπάλισον τ'ανώνυμους τη χρήστες μαναχόν",
'ipbsubmit' => 'Ασπάλισον τον χρήστεν',
'ipbother' => 'Άλλον ώρα:',
-'ipboptions' => '2 ώρας:2 hours,1 ημέρα:1 day,3 ημέρας:3 days,1 εβδομάδα:1 week,2 εβδομάδας:2 weeks,1 μήνα:1 month,3 μήνας:3 months,6 μήνας:6 months,1 χρόνο:1 year,αόριστα:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ώρας:2 hours,1 ημέρα:1 day,3 ημέρας:3 days,1 εβδομάδα:1 week,2 εβδομάδας:2 weeks,1 μήνα:1 month,3 μήνας:3 months,6 μήνας:6 months,1 χρόνο:1 year,αόριστα:infinite',
'ipbotheroption' => "άλλ'",
'ipbotherreason' => 'Άλλον/κιάλλον αιτία:',
'badipaddress' => 'Άχρηστον IP',
@@ -1144,7 +1181,7 @@ $messages = array(
'move-watch' => 'Ωρίαγμαν τη σελίδας',
'movepagebtn' => 'Ετεροχλάεμαν σελίδας',
'pagemovedsub' => 'Ετερχλαεύτεν',
-'movepage-moved' => '\'\'\'"$1" επήγεν σο "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" επήγεν σο "$2"\'\'\'',
'articleexists' => 'Σελίδαν με αΐκον όνεμαν υπάρχει.
Βαλέστεν άλλο όνεμαν.',
'cantmove-titleprotected' => "'Κ επορείτε ν' εφτάτε σελίδαν με τ' αβούτον τ' όνεμαν επειδή εσπάλισανατο.",
@@ -1167,8 +1204,10 @@ $messages = array(
'export-download' => 'Αποθήκεμαν άμον αρχείον',
# Namespace 8 related
-'allmessages' => 'Μενέματα συστηματί',
-'allmessagesname' => 'Όνεμαν',
+'allmessages' => 'Μενέματα συστηματί',
+'allmessagesname' => 'Όνεμαν',
+'allmessages-filter-legend' => 'Φίλτρον',
+'allmessages-language' => 'Λαλίαν:',
# Thumbnails
'thumbnail-more' => 'Ποίσον κι άλλο τρανόν',
@@ -1209,6 +1248,7 @@ $messages = array(
'tooltip-search-fulltext' => 'Εύρον αούτον το κείμενον',
'tooltip-p-logo' => "Δεβάτεν σ'αρχικόν τη σελίδαν",
'tooltip-n-mainpage' => 'Τερέστεν το αρχικόν τη σελίδαν',
+'tooltip-n-mainpage-description' => 'Τερέστεν το αρχικόν τη σελίδαν',
'tooltip-n-portal' => 'Σχετικά με το Wiκi - πώς μπορείτε να εφτάτε γιαρτήμ, πού θα ευρίετε πράγματα',
'tooltip-n-currentevents' => "Εύρον άλλα πληροφορίας για τ' ατά ντ'εγένταν οψεκές.",
'tooltip-n-recentchanges' => "Κατάλογον με τ' υστερνά αλλαγάς σο wiki.",
@@ -1250,6 +1290,11 @@ $messages = array(
# Spam protection
'spamprotectiontitle' => 'Φίλτρον προστασίας ασό σπαμ',
+# Math errors
+'math_unknown_function' => 'άγνωρος συνάρτησην',
+'math_lexing_error' => 'σφάλμαν λεξικής ανάλυσης',
+'math_syntax_error' => 'σφάλμαν σύνταξης',
+
# Patrol log
'patrol-log-auto' => '(αυτόματον)',
@@ -1293,7 +1338,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -1325,7 +1370,7 @@ $messages = array(
'exif-gpsaltitude' => 'Υψόμετρον',
'exif-gpsspeedref' => 'Μονάδα ταχύτητας',
-'exif-orientation-1' => 'Νορμάλ', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Νορμάλ',
'exif-subjectdistance-value' => '$1 μέτρα',
@@ -1343,7 +1388,7 @@ $messages = array(
'exif-gpsstatus-v' => 'Διαλειτουργικότητα μετρησίων',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-m' => 'Μίλιαν την ώραν',
'exif-gpsspeed-n' => 'Κορδίλαι',
@@ -1394,7 +1439,7 @@ $messages = array(
'watchlisttools-raw' => 'Επεξεργαστείτε την πρωτογενή τη λίσταν ωριαγματί',
# Special:Version
-'version' => 'Έκδοση', # Not used as normal message but as header for the special page itself
+'version' => 'Έκδοση',
'version-extensions' => "Επεκτάσεις ντ'εθέκαν",
'version-specialpages' => 'Ειδικά σελίδας',
'version-variables' => 'Μεταβλητάς',
@@ -1429,4 +1474,9 @@ $messages = array(
'tags-edit' => 'άλλαγμαν',
'tags-hitcount' => '$1 {{PLURAL:$1|αλλαγή|αλλαγάς}}',
+# HTML forms
+'htmlform-submit' => 'Στείλον',
+'htmlform-reset' => "Κλώσον τ'αλλαγάς",
+'htmlform-selectorother-other' => 'Άλλον',
+
);
diff --git a/languages/messages/MessagesPrg.php b/languages/messages/MessagesPrg.php
new file mode 100644
index 00000000..2f49b56d
--- /dev/null
+++ b/languages/messages/MessagesPrg.php
@@ -0,0 +1,2846 @@
+<?php
+/** Prussian (Prūsiskan)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Nertiks
+ * @author Peteris
+ */
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Autengīnsenin paglaubasnā',
+'tog-highlightbroken' => 'Ebzentlis <a href="" class="new">tīt</a> autengīnsenins prei nisātauwintins pāusans (alternatīwai: <a href="" class="internal">?</a>).',
+'tog-justify' => 'Izlīginais tekstan prei abbans pāusans',
+'tog-hideminor' => 'Kliptinais malkans tikrīsnans en panzdaumamans kitawīdisnans',
+'tog-hidepatrolled' => 'Kliptinais izbandātans redigīsenins en panzdaumamans kitawīdinsnans',
+'tog-newpageshidepatrolled' => 'Kliptinais izbandātans pāusans iz listin stēisan nāunan pāusan',
+'tog-extendwatchlist' => 'Waidinnais en listin stēisan nadirītan wissans, ni tēr panzdaumans kitawīdinsnans',
+'tog-usenewrc' => 'Tērpaus plattinsenin stēisan panzdauman kitawīdinsnan (izkīnina JavaScript)',
+'tog-numberheadings' => 'Autōmatiska sirzdatītelin nummerinsna',
+'tog-showtoolbar' => 'Waidinnais sawīnzlin stēisan pagaptin (JavaScript)',
+'tog-editondblclick' => 'Redigīs pāusans pra dwiguban pellis gnesnan (JavaScript)',
+'tog-editsection' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra "[redigīs]" autengīnsenin',
+'tog-editsectiononrightclick' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra tikrōman pellis knuppas gnesnan na tenesses tītelin',
+'tog-showtoc' => 'Waidinnais ēnturas listin (en pāusamans sen tūls nikāi 3 sirzdatītelins)',
+'tog-rememberpassword' => 'Paminnais enēisenes infōrmaciōnins en šismu kōmputerin',
+'tog-editwidth' => 'Paplattinais redigīsnas laūkan en pastippan ekrānas plattu',
+'tog-watchcreations' => 'Preidāis pāusans kawīdans as teīke prei majjan listin stēisan nadirītan',
+'tog-watchdefault' => 'Preidāis pāusans kawīdans as redigijja prei majjan listin stēisan nadirītan',
+'tog-watchmoves' => 'Preidāis pāusans, kawīdans as praskajjina prei majjan listin stēisan nadirītan',
+'tog-watchdeletion' => 'Preidāis pāusans kawīdans as āupausina prei majjan listin stēisan nadirītan',
+'tog-minordefault' => 'Ebzentlis auprestaminai wissans kitawidīnsnans kāigi mālkans',
+'tog-previewontop' => 'Waidinnais pirmādiran pirzdau redigīsnas laūkan',
+'tog-previewonfirst' => 'Waidinnais pirmādiran prei pirman redigīsenin',
+'tog-nocache' => 'Izklaūjais rānkas minīsnan',
+'tog-enotifwatchlistpages' => 'Tenginnais mi e-mail, ik pāusan iz majjan listin stēisan nadirītan ast kitawīdintan',
+'tog-enotifusertalkpages' => 'Iztenginnais mi e-mail, ik majjan diskusiōnis pāusan wīrst būwun kitawīdintan',
+'tog-enotifminoredits' => 'Tenginnais mi e-mail dīgi kaddan kitawīdinsnas as mālkan',
+'tog-enotifrevealaddr' => 'Ni kliptinais majjan e-mail adressin en pawakīsenins',
+'tog-shownumberswatching' => 'Waidinnais gīrbin stēisan nadirīntin tērpautajan',
+'tog-oldsig' => 'Twājs tēntiskas papeisāsenis',
+'tog-fancysig' => 'Laikāis papeisāsenin per wikitekstan (šlāit autōmatiskan sēisnan)',
+'tog-externaleditor' => 'Auprestaminai tērpaus izwinandan editōran (tēr per ekspertans, izkīnina speciālins ensadīnsenins en kōmputeŗu)',
+'tog-externaldiff' => 'Auprestaminai tērpaus izwinandan prōgraman waidinnantin šlatīntans (tēr per ekspertans, izkīnina speciālins ensadīnsenins en kōmputeŗu)',
+'tog-showjumplinks' => 'Enklaūjais autengīnsenins "sākais en"',
+'tog-uselivepreview' => 'Tērpaus dināmiskan pirmādiran (JavaScript) (eksperimentālin)',
+'tog-forceeditsummary' => 'Pawakēis mi nierpilninsenin stesse ebpeisāsenin stēisan kitawīdisnan',
+'tog-watchlisthideown' => 'Kliptinais majjans redigīsenins en listei stēisan nadirītan',
+'tog-watchlisthidebots' => 'Kliptinais redigīsenins stēisan bōtan en listei stēisan nadirītan',
+'tog-watchlisthideminor' => 'Kliptinais mālkans redigīsenins en listei stēisan nadirītan',
+'tog-watchlisthideliu' => 'Kiliptinais redigīsenins stēisan engūbin tērpautajan en listei stēisan nadirītan',
+'tog-watchlisthideanons' => 'Kliptinais redigīsenins stēisan anōniman tērpautajan en listei stēisan nadirītan',
+'tog-watchlisthidepatrolled' => 'Kliptinais izbandātans redigīsenins en līstei stēisan nadirītan',
+'tog-ccmeonemails' => 'Tenginnais mi kōpijans stēisan waīstin tengīntan pra min kitēimans tērpautajans',
+'tog-diffonly' => 'Ni waidinnais ēnturan stēisan pāusan pa palīginsenins stēisan kitawīdisnan',
+'tog-showhiddencats' => 'Waidinnais kliptans kategōrijans',
+
+'underline-always' => 'wisaddan',
+'underline-never' => 'nikwēigi',
+'underline-default' => 'Pa lasātlas ensadīndenins',
+
+# Font style option in Special:Preferences
+'editfont-default' => 'Lasātlas auprestaminan',
+
+# Dates
+'sunday' => 'nadīli',
+'monday' => 'panadīli',
+'tuesday' => 'wisasīdis',
+'wednesday' => 'pussisawaiti',
+'thursday' => 'ketwirtiks',
+'friday' => 'pēntniks',
+'saturday' => 'sabattika',
+'sun' => 'Nad',
+'mon' => 'Pan',
+'tue' => 'Wis',
+'wed' => 'Pus',
+'thu' => 'Ket',
+'fri' => 'Pēn',
+'sat' => 'Sab',
+'january' => 'rags',
+'february' => 'wassarins',
+'march' => 'pūlis',
+'april' => 'sakkis',
+'may_long' => 'zallaws',
+'june' => 'sīmenis',
+'july' => 'līpa',
+'august' => 'daggis',
+'september' => 'sillins',
+'october' => 'spallins',
+'november' => 'lapkrūtis',
+'december' => 'sallaws',
+'january-gen' => 'raggas',
+'february-gen' => 'wassarinas',
+'march-gen' => 'pūlas',
+'april-gen' => 'sakkes',
+'may-gen' => 'zallawas',
+'june-gen' => 'sīmenes',
+'july-gen' => 'līpas',
+'august-gen' => 'dagges',
+'september-gen' => 'sillinas',
+'october-gen' => 'spallinas',
+'november-gen' => 'lapkrūtes',
+'december-gen' => 'sallawas',
+'jan' => 'rag',
+'feb' => 'was',
+'mar' => 'pūl',
+'apr' => 'sak',
+'may' => 'zal',
+'jun' => 'sīm',
+'jul' => 'līp',
+'aug' => 'dag',
+'sep' => 'sil',
+'oct' => 'spa',
+'nov' => 'lap',
+'dec' => 'sal',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategōrija|Kategōrijas}}',
+'category_header' => '
+Pāusai en kategōrijai "$1"',
+'subcategories' => 'Pōkategōrijas',
+'category-media-header' => 'Zūrbrukei en kategōrijai "$1"',
+'category-empty' => "''Ši kategōrija teinū ni turri ēn sin pāusans be zūrbrukins.''",
+'hidden-categories' => '{{PLURAL:$1|Klipta kategōrija|Kliptas kategōrijas}}',
+'hidden-category-category' => 'Kliptas kategōrijas',
+'category-subcat-count' => '{{PLURAL:$2|Šī kategōrija turri tēr aīnan pōkategōrijan.|Zemmais waidinnā di $1 iz wissans $2 pōkategōrijans šisses kategōrijan.}}',
+'category-subcat-count-limited' => 'Šī kategōrija turri {{PLURAL:$1|1 pōkategōrijan|$1 pōkategōrijans}}.',
+'category-article-count' => '{{PLURAL:$2|En šissei kategōrijan ast tēr aīnan pāusan.|Zemmais waidinnā di $1 iz wissans $2 pāusans šisses kategōrijan.}}',
+'category-article-count-limited' => 'En šissei kategōrijan {{PLURAL:$1|ast 1 pāusan|ast $1 pāusai}}.',
+'category-file-count' => '{{PLURAL:$2|En šissei kategōrijan ast tēr aīns zūrbrukis.|En šissei kategōrijan {{PLURAL:$1|ast aīns zūrbrukis|ast $1 zūrbrukei}} iz empirīniskan gīrbin stēisan $2 zūrbrukin.}}',
+'category-file-count-limited' => 'En šissei kategōrijan ast {{PLURAL:$1|1 zūrbrukis|ast $1 zūrbrukei}}.',
+'listingcontinuesabbrev' => 'ē.s.',
+'index-category' => 'Indeksīntai pāusai',
+'noindex-category' => 'Niindeksīntai pāusai',
+
+'mainpagetext' => "'''MediaWiki's instalaciōni izpalla.'''",
+'mainpagedocfooter' => 'Wīdais [http://meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] kāi gaūlai informaciōnei ezze wiki prōgramijas tērpausnan.
+
+== En pagaūseņu ==
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
+
+'about' => 'Ezze',
+'article' => 'Pāusas ēnturs',
+'newwindow' => '(etwerre si en nāunai langstan)',
+'cancel' => 'Naīkinais',
+'moredotdotdot' => 'Tūls...',
+'mypage' => 'Majjan pāusan',
+'mytalk' => 'Majā diskusiōni',
+'anontalk' => 'Diskusiōni di IP',
+'navigation' => 'Nawigaciōni',
+'and' => '&#32;be',
+
+# Cologne Blue skin
+'qbfind' => 'Aupallais',
+'qbbrowse' => 'Pradirēis',
+'qbedit' => 'Redigīs',
+'qbpageoptions' => 'Šin pāusan',
+'qbpageinfo' => 'Kōnteksts',
+'qbmyoptions' => 'Majāi pāusai',
+'qbspecialpages' => 'Speciālai pāusai',
+'faq' => 'Ukadeznai prasīsenei',
+'faqpage' => 'Project:Ukadeznai prasīsenei',
+
+# Vector skin
+'vector-action-delete' => 'Āupausinais',
+'vector-action-move' => 'Prapīdais',
+'vector-action-protect' => 'Kūnsteis',
+'vector-action-unprotect' => 'Etkūnteis',
+'vector-namespace-category' => 'Kategōrija',
+'vector-namespace-help' => 'Pagalbas pāusan',
+'vector-namespace-image' => 'Zūrbrukis',
+'vector-namespace-main' => 'Pāusan',
+'vector-namespace-media' => 'Median pāusan',
+'vector-namespace-mediawiki' => 'Waīstis',
+'vector-namespace-project' => 'Prōjaktas pāusan',
+'vector-namespace-special' => 'Speciālin pāusan',
+'vector-namespace-talk' => 'Diskusiōni',
+'vector-namespace-template' => 'Šablōni',
+'vector-namespace-user' => 'Tērpautajas pāusan',
+'vector-view-create' => 'Teīkeis',
+'vector-view-edit' => 'Redigīs',
+'vector-view-history' => 'Enwaidinnais istōrijan',
+'vector-view-view' => 'Skaitāis',
+'vector-view-viewsource' => 'Enwaidinnais appun',
+'actions' => 'Dīlasenei',
+'namespaces' => 'Tītelin plattibis',
+'variants' => 'Warjāntai',
+
+'errorpagetitle' => 'Blānda',
+'returnto' => 'Etwartinnais si en pāusan $1.',
+'tagline' => 'Iz {{SITENAME}}',
+'help' => 'Pagalba',
+'search' => 'Laukīs',
+'searchbutton' => 'Laukīs',
+'go' => 'Jaīs',
+'searcharticle' => 'Prajaīs',
+'history' => 'Pāusas istōrija',
+'history_short' => 'Istōrija',
+'updatedmarker' => 'Kitawīdintan ezze panzdaumasmu kāimalukisenin',
+'info_short' => 'Infōrmaciōni',
+'printableversion' => 'Drukkaumina wersiōni',
+'permalink' => 'Ainatīngis autengīnsenis',
+'print' => 'Drukkaus',
+'edit' => 'Redigīs',
+'create' => 'Teīkeis',
+'editthispage' => 'Redigīs šin pāusan',
+'create-this-page' => 'Teīkeis stan pāusan',
+'delete' => 'Āupausinais',
+'deletethispage' => 'Āupausinais šin pāusan',
+'undelete_short' => 'Etgaūneis {{PLURAL:$1|1 wersiōnin|$1 wersiōnins}}',
+'protect' => 'Pakūnteis',
+'protect_change' => 'kitawīdinais',
+'protectthispage' => 'Pakūnteis šin pāusan',
+'unprotect' => 'Etkūnteis',
+'unprotectthispage' => 'Etkūnteis šin pāusan',
+'newpage' => 'Nāunan pāusan',
+'talkpage' => 'Diskusiōni',
+'talkpagelinktext' => 'Diskusiōni',
+'specialpage' => 'Speciālin pāusan',
+'personaltools' => 'Persōniskas pagaptis',
+'postcomment' => 'Nāuna sekciōni',
+'articlepage' => 'Wīdais ēnturas pāusan',
+'talk' => 'Diskusiōni',
+'views' => 'Pawīda',
+'toolbox' => 'Pagaptis',
+'userpage' => 'Tērpautajas pāusan',
+'projectpage' => 'Prōjaktas pāusan',
+'imagepage' => 'Zūrbrukes pāusan',
+'mediawikipage' => 'Wīdais waīstis pāusan',
+'templatepage' => 'Šablōnis pāusan',
+'viewhelppage' => 'Pagalbas pāusan',
+'categorypage' => 'Kategōrijas pāusan',
+'viewtalkpage' => 'Diskusiōnis pāusan',
+'otherlanguages' => 'En kitēimans billins',
+'redirectedfrom' => '(Prawestan iz $1)',
+'redirectpagesub' => 'Prawesnas pāusan',
+'lastmodifiedat' => 'Šin pāusan bēi panzdaumai kitawīdintan $2, $1',
+'viewcount' => 'Šin pāusan bēi dirītan {{PLURAL:$1|tylko ainawārst|$1 wārst}}',
+'protectedpage' => 'Pakūnstan pāusan',
+'jumpto' => 'Sākais en:',
+'jumptonavigation' => 'nawigaciōni',
+'jumptosearch' => 'laukīsna',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Ezze {{SITENAME}}',
+'aboutpage' => 'Project:Ezze',
+'copyright' => 'Ēnturs preiēiminan pa $1 licēncin.',
+'copyrightpage' => '{{ns:project}}:Autōras tikrōmis',
+'currentevents' => 'Bigāntei audāsenei',
+'currentevents-url' => 'Project: Bīgantai audāsenei',
+'disclaimers' => 'Etrāwingiskwas arāikinsenei',
+'disclaimerpage' => 'Project:Etrāwingiskwas arāikinsenei',
+'edithelp' => 'Redigīsnas pagalba',
+'edithelppage' => 'Help:Redigīsna',
+'helppage' => 'Help:Ēnturs',
+'mainpage' => 'Galwas pāusan',
+'mainpage-description' => 'Galwas pāusan',
+'policy-url' => 'Project:Pōlitiki',
+'portal' => 'Perōnis pōrtals',
+'portal-url' => 'Project:Perōnis pōrtals',
+'privacy' => 'Priwātiskwas kūnsnas pōlitiki',
+'privacypage' => 'Project:Priwātiskwas kūnsnas pōlitiki',
+
+'badaccess' => 'Preiwērpsenes blānda',
+'badaccess-group0' => 'Ni assei enwarīntan kāi izpilninlai šin dīlasenin.',
+'badaccess-groups' => 'Šisses dīlasenes izpilninsna ast arāikintan prei tērpautajans en {{PLURAL:$2|gruppei|ainassei iz gruppins}}: $1.',
+
+'versionrequired' => 'Izkīninta Mediawikis $1 wersiōni: $1.',
+'versionrequiredtext' => 'Mediawīkis $1 wersiōni ast izkīnintan, kāi tērpaulai šin pāusan. Widāis [[Special:Version|wersiōni]]',
+
+'ok' => 'Labbai',
+'retrievedfrom' => 'Aps: "$1"',
+'youhavenewmessages' => 'Tu turri $1 ($2)',
+'newmessageslink' => 'nāunans waīstins',
+'newmessagesdifflink' => 'Šlaitīntan ezze panzdaumai wersiōnin',
+'youhavenewmessagesmulti' => 'Tū turri nāunans waīstins ēn $1',
+'editsection' => 'redigīs',
+'editold' => 'redigīs',
+'viewsourceold' => 'Waidinnais appun',
+'editlink' => 'redigīs',
+'viewsourcelink' => 'appus kōdan',
+'editsectionhint' => 'Redigīs sekciōnin: $1',
+'toc' => 'Ēnturs',
+'showtoc' => 'waidinnais',
+'hidetoc' => 'kliptinais',
+'thisisdeleted' => 'Waidīntun anga etwārtai wartīntun $1?',
+'viewdeleted' => 'Wīdais $1',
+'restorelink' => '$1 {{PLURAL:$1|āupausintan wersiōnin|āupausintans wersiōnins}}',
+'feedlinks' => 'Aps:',
+'feed-invalid' => 'Nitikrōmiskas appus tīps.',
+'feed-unavailable' => 'Appus ni preiēiminan',
+'site-rss-feed' => '$1 RSS Aps',
+'site-atom-feed' => '$1 Atom Aps',
+'page-rss-feed' => '"$1" RSS Aps',
+'page-atom-feed' => '"$1" Atom Aps',
+'red-link-title' => '$1 (ni ast šin pāusan)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Pāusan',
+'nstab-user' => 'Tērpautajas pāusan',
+'nstab-media' => 'Zūrbrukei',
+'nstab-special' => 'Speciālin pāusan',
+'nstab-project' => 'Prōjaktas pāusan',
+'nstab-image' => 'Zūrbrukis',
+'nstab-mediawiki' => 'Waīstis',
+'nstab-template' => 'Šablōni',
+'nstab-help' => 'Pagalbas pāusan',
+'nstab-category' => 'Kategōrija',
+
+# Main script and global functions
+'nosuchaction' => 'Ni ast stawīds dīlasenis',
+'nosuchactiontext' => 'Dīlasenis en URL adressei ast nitikrōmiskan.
+Mazīngi brewīnsli ast blānda en adressei, nitikrōmiskas autengīnsenis.
+Sta mazzi būtwei dīgi blānda en prōgraminimans stesse {{SITENAME}}.',
+'nosuchspecialpage' => 'Ni ast stawīdan speciālin pāusan',
+'nospecialpagetext' => '<strong>Ni ast stawīdan speciālin pāusan.</strong>
+
+Listi stēisan preiēiminan speciālin pāusan aupalla si [[Special:SpecialPages|stwi]].',
+
+# General errors
+'error' => 'Blānda',
+'databaseerror' => 'Dātanbazis blānda',
+'dberrortext' => 'Sīntaksis blānda tikka en prasīseņu stessei dātanbazin.
+Sta mazzi būtwei blānda en prōgramijai.
+Panzdaums, niizpalts prasīsenis ast:
+<blockquote><tt>$1</tt></blockquote>
+tengīntan pra funkciōnin „<tt>$2</tt>”.
+Dātanbazi etwārtai wartinna blāndan "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'Sīntaksis blānda tikka en prasīseņu stessei dātanbazin.
+Panzdaums, niizpalts prasīsenis ast:
+"$1"
+<blockquote><tt>$1</tt></blockquote>
+izwakītan iz funkciōnin „$2”.
+Dātanbazi etwārtai wartinna blāndan "$3: $4".',
+'laggedslavemode' => 'Nōda: Šin pāusan mazzi ni turritun ēn sen ukanāunaisins ernaunīnsenins.',
+'readonly' => 'Dātanbazi ast auklaūtan',
+'enterlockreason' => 'Dāis brewīnslin stesse dātanbazis auklaūsenin be enkaīnintan etklaūsenes kērdan',
+'readonlytext' => 'Dātanbazi ast tēntiskai izklaūtan - ni mazīngi enwestun nāunans neggi kitawīdintun ekzistīntins infōrmaciōnins. Druwīminai, brewīnsli ast perwaldīsnas dīlasenei. Kaddan tenēi wīrst wanginnusis si, dātanbazi wīrst dīlawusi nōrmalai.
+
+Perwaldītajs, kas ast izklaūwuns dātanbazin, ast dāwuns ripīntin eīskinsnan: $1',
+'missing-article' => 'Ni aupallā di en dātanbazei pāusas tekstan "$1" $2.
+
+Sta ast jāuku dīlintan pra niaktuālin šlaitīntan anga istōrijan autenginnantin prei pāusan, kawīdan pastāi āupausintan.
+
+Ik sta ni ast brewīnsli, mazīngi tū aupalla blāndan en prōgraminimans.
+Madli pawakēis di [[Special:ListUsers/sysop|perwaldītaju]], preidāntei URL.',
+'missingarticle-rev' => '(wersiōni#: $1)',
+'missingarticle-diff' => '(šlaitīntan: $1, $2)',
+'internalerror' => 'Ēntrewingi blānda',
+'internalerror_info' => 'Ēntrewingi blānda: $1',
+'filecopyerror' => 'Ni bēi mazīngi kōpitun zūrbrukin $1$ en $2$.',
+'filerenameerror' => 'Ni bēi mazīngi kitawīdintun zūrbrukes pabilīsnan "$1" na "$2"',
+'filedeleteerror' => 'Ni mazīngi āupausintun zūrbrukin "$1"',
+'directorycreateerror' => 'Ni mazīngi teīktun fōlderan "$1"',
+'filenotfound' => 'Ni mazīngi aupaltun zūrbrukin "$1"',
+'fileexistserror' => 'Ni mazīngi enpeisātun en zūrbrukin "$1" beggi stawīds zūrbrukis jāu ast',
+'unexpected' => 'Nigēista wērtibi: "$1"="$2".',
+'formerror' => 'Blānda: ni mazīngi tērpautun fōrmularan',
+'badarticleerror' => 'Dīlasenis ni mazzi būtwei izpilnintan nō šin pāusan.',
+'cannotdelete' => 'Ni bēi mazīngi āupausintun etrīnktan pāusan anga grafīkin "$1".
+Mazīngi, kāi pastāi jāu āupausintan pra ainuntan kittan.',
+'badtitle' => 'Nitikrōmiskas tītels',
+'badtitletext' => 'Padāts pāusas tītels ni ast tikrōmiskan. Druwīminai ast pāustan anga turri ēn sen zentlins, kawīdan tērpausna ast drēuditan.',
+'perfcached' => 'Šin dātan ast rānkas mīnisnas kōpija be mazzi būtwei niaktuālin.',
+'perfcachedts' => 'Šin dātan ast rānkas minīsnas kōpija. Panzdaums ernaunīnsenis bēi en $1.',
+'querypage-no-updates' => 'Šisse pāusan etnāuninsna tēntiskai ast izklāutan. Sēnti stwi dātan ni wīrst pastāwun etnāunintan.',
+'wrong_wfQuery_params' => 'Nitikrōmiskai parāmetrei perlaīstan wfQuery()<br />
+Funkciōni: $1<br />
+Prasīsenis: $2',
+'viewsource' => 'Wīdais appun',
+'viewsourcefor' => 'per $1',
+'actionthrottled' => 'Dīlasenis stalīntan',
+'protectedpagetext' => 'Redīgisnas mazīngisku per šin pāusan pastāi izklāutan.',
+'viewsourcetext' => 'Mazīngi widātun be kōpitun šisse pāusan appun:',
+'protectedinterface' => 'Šin pāusan turri ēn sen prōgraminin interfācas tekstan, stesse paggan tenesses redigīsnas mazīngisku pastāi blōkitan.',
+'editinginterface' => "'''Ēmpirssergīsenis:''' Tu redigīja pāusan, kawīdan turri en sen prōgraminin interfācas tekstan.
+Kitawīdinsnas en šismu pāusan wīrts kitawīdinušas interfācas pawīdan per kittans tērpautajans.
+Per tulkausnans, madli endirēis tērpautun [http://translatewiki.net/wiki/Main_Page?setlang=prg translatewiki.net], - MediaWiki tulkausnan prōjaktan.",
+'sqlhidden' => '(SQL prasīsenis kliptintan)',
+'cascadeprotected' => 'Šin pāusan ast pakūnstan ezze redigīsnan, beggi ast ebīmtan en {{PLURAL:$1|ripīntsmu pāusan, kawīdan|ripīntimans pāusans, kawīdai}} turri mazīngiskwan "pakūnsnas weldīsnan" enklaūtan:
+$2',
+'namespaceprotected' => "Tū ni assei preiwērptan, kāi redigīlai pāusans en '''$1''' tītelin plattibei.",
+'customcssjsprotected' => 'Tū ni mazzi redigītun šin pāusan, beggi tennan turri ēn sen persōniskans ensadīnsenins kitse tērpautajan.',
+'ns-specialprotected' => 'Speciālai pāusai ni mazzi būtwei redigītan.',
+'titleprotected' => 'Šis tītels pastāi drēuditan pra [[User:$1|$1]].
+Drēudisnas pagrintinsna: "$2".',
+
+# Virus scanner
+'virus-badscanner' => 'Wārga kōnfiguraciōni: niwaīsts antiwīrusas skanītajs: "$1"',
+'virus-scanfailed' => 'skanīsna niizpaltan (blānda $1)',
+'virus-unknownscanner' => 'niwaīsts antiwīruss:',
+
+# Login and logout pages
+'logouttext' => "'''Tū assei teinū izgūbun.'''
+
+Tū mazzi ēmpirsin sadīntun tērpautun {{SITENAME}} kāigi niengūbuns tērpautajs, anga [[Special:UserLogin|enēitwei etkūmps]] kāigi šis sūbs anga kits tērpautajs.
+Endirēis, kāi ainuntai pāusai mazzi būtwei waidīntan ikāigi tū būlai ainatīngi engūbun, ērgi tū wīrst skistinnuns lasātlas rānkas minīsnan.",
+'welcomecreation' => '== Kaīls, $1! ==
+Twājs rekkens pastāi teīktan.
+Ni izmīrstais kitawīdintun Twajjans [[Special:Preferences|pirminiskwans per {{SITENAME}}]].',
+'yourname' => 'Twajā tērpautajas pabilisnā:',
+'yourpassword' => 'Twājs kliptaswīrds:',
+'yourpasswordagain' => 'Āntrinais kliptaswīrdan',
+'remembermypassword' => 'Paminnais majjans enēisnas infōrmaciōnins en šismu kōmputerin',
+'yourdomainname' => 'Twajā dōmeni:',
+'externaldberror' => 'Tikka izwinandas autentikāntin dātanbazin blānda, anga ni assei enwarīntan kāi etnāuninlai twajjan izwinandan rekkenan.',
+'login' => 'Enjaīs',
+'nav-login-createaccount' => 'Enjaīs / teīkeis rekkenan',
+'loginprompt' => 'Tu turri turītun <i>cookies</i> enklaūtan, kāi enēilai en {{SITENAME}}.',
+'userlogin' => 'Enjaīs / teīkeis rekkenan',
+'userloginnocreate' => 'Enjaīs',
+'logout' => 'Izjaīs',
+'userlogout' => 'Izjaīs',
+'notloggedin' => 'Ni assei engūbun',
+'nologin' => "Ni turri tū rekkenan? '''$1'''.",
+'nologinlink' => 'Registrīs si',
+'createaccount' => 'Teīkeis nāunan rekkenan',
+'gotaccount' => "Turri tū jāu rekkenan? '''$1'''!",
+'gotaccountlink' => 'Enjaīs',
+'createaccountmail' => 'Tenginnais e-mail',
+'badretype' => 'Enwestai kliptaswīrdai šlaitinna si.',
+'userexists' => 'Etrīnkta tērpautajas pabilisnā jāu ekzistijja.
+Etrīnkais kittan tērpautajas pabilīsnan.',
+'loginerror' => 'Enēisnas blānda',
+'createaccounterror' => 'Ni mazīngi teīktun rekkenan: $1',
+'nocookiesnew' => 'Tērpautajs rekkens pastāi teīktan, anga tū ni assei engūbun.
+{{SITENAME}} tērpaui <i>cookies</i> kāi karwinlai informaciōnin en tērpautajas enēisnas prōcesu.
+Twajā lasātla turri teinū izklaūtans <i>cookies</i>.
+Madli enklaūjais tennans be bāndais etkūmps.',
+'nocookieslogin' => '{{SITENAME}} tērpaui <i>cookies</i> kāi karwinlai informaciōnin en tērpautajas enēisnas prōcesu.
+Twajā lasātla turri teinū izklaūtans <i>cookies</i>.
+Madli enklaūjais tennans be bāndais etkūmps.',
+'noname' => 'Sta ni ast tikrōmiska tērpautajas pabilisnā.',
+'loginsuccesstitle' => 'Enēisenis izpalla',
+'loginsuccess' => "'''Assei teinū engūbun {{SITENAME}} kāigi \"\$1\".'''",
+'nosuchuser' => 'Ni ast tērpautajs sen pabilīsnan "$1".
+Zentlin debban en tērpautajas pabilīsnai ast zentlawingi.
+Izbandais peisāsnan anga [[Special:UserLogin/signup|teīkeis nāunan rekkenan]].',
+'nosuchusershort' => 'Ni ast tērpautajs sen pabilīsnan "<nowiki>$1</nowiki>".
+Izbandais peisāsnan.',
+'nouserspecified' => 'Tu turri enpeisātun tērpautajas pabilīsnan.',
+'wrongpassword' => 'Nitikrōmiskas kliptaswīrds. Bāndais dabber rēizan.',
+'wrongpasswordempty' => 'Enpeisāts kliptaswīrds ast pāustan. Bāndais etkūmps.',
+'passwordtooshort' => 'Twājs kliptawīrds ast per īnsan.
+Tāns turri turītun ukamazzais {{PLURAL:$1|zentlin|zentlai}}.',
+'password-name-match' => 'Twājs kliptawīrds turri kitawīdintun si ezze twajasmu tērpautajas emnin.',
+'mailmypassword' => 'Tenginnais mi nāunan kliptaswīrdan pra e-mail',
+'passwordremindertitle' => 'Nāuns kīsmingiskas kliptaswīrds per {{SITENAME}}',
+'passwordremindertext' => 'Ainunts (drūwiminai tū, iz IP adressin $1) ast madlīwuns ezze nāunas kliptaswīrdas prei {{SITENAME}}($4) tengīnsnan.
+Per tērpautajan "$2" pastāi generītan kīsmingiskas kliptaswīrds: "$3".
+Ik tu skatta din segītun, tebbei prawerru enēitwei be enpeisātun nāunan kliptaswīrdan.
+Šisse autōmatiskai generītas kliptaswīrdas swarewīngisku wīrst wanginnusi si pa {{PLURAL:$5|aīnan dēinan|$5 dēinans}}.
+
+Ik ainunts kits ast tenginnuns šan madlin, anga assei etminītun si kliptaswīrdan be tū ni kwaitēi din kitawīdintun, tu mazzi ignōritun šan waīstin be tālis tērpautun wūran kliptaswīrdan.',
+'noemail' => 'Ni ast e-mail adressi enpeisātan per tērpautajan "$1".',
+'noemailcreate' => 'Tebbei prawerru enwestun tikrōmiskan e-mail adressin',
+'passwordsent' => 'Nāuns kliptaswīrds pastāi tengīntan en e-mail adressin stesse tērpautajan" $1".
+Panzdau gaūsenin, enjaīs etkūmps.',
+'blocked-mailpassword' => 'Twajā IP adressi ast blōkitan ezze redigīsnai be stesse paggan ni assei enwarīntan tērpautun kliptaswīrdas etgaūsnas funkciōnin, kāi pakūnlai ezze wargaitērpausnai.',
+'eauthentsent' => 'Padrūktinsenis pastāi tengīntan na e-mail adressin.
+Ēmpirzdan ainuntkawīdas kittas waīstis wīrst būwušas tengīntan na šan adressin, prawerru izpilnintun instrukciōnins papeisātans en e-mailu. Tīt tu wīrst padrūktiwuns(si), kāi šī e-mail adressi perlānke prei tin.',
+'throttled-mailpassword' => 'Kliptaswīrdas preiminīsenis ast jāu tengīntan en {{PLURAL:$1|panzdauman stūndin|panzdaumans $1 stūndins}}.
+Kāi pakūnlai ezze wargaitērpausnai, tēr aīns kliptaswīrdas preiminīsenis ast tengīntan en {{PLURAL:$1|stūndin|$1 stūndins}}.',
+'mailerror' => 'Prei e-mail pustis tengīnsnan, tikka blānda $1',
+'acct_creation_throttle_hit' => 'Iz IP adressin, kawīdan tū tērpaui teīkē di jāu šandēinan {{PLURAL:$1|rekkenan|rekkenans}}, ka ast maksimāls preiwērpts gīrbis en šin kērdan.
+Stesse paggan, tērpawintei šan adressin ni mazīngi teinū segītun ripīntin rekkenan.',
+'emailauthenticated' => 'Twajā e-mail adressi pastāi padrūktintan en $2 zūrgi $3.',
+'emailnotauthenticated' => 'Twajā e-mail adressi ni pastāi padrūktintan.
+Zemmaisis pustis funkciōnis di dīlai.',
+'noemailprefs' => 'Padāis e-mail adressin en pirminiskwans, kāi tērpautun šans funkciōnins.',
+'emailconfirmlink' => 'Padrūktinais swajjan e-mail.',
+'invalidemailaddress' => 'E-mail adressi perwaidinna būtwei nitikrōmiskan be ni mazzi būtwei enīmtan.
+Epeisāis tikrōmiskan e-mail adressin anga skistinnais laūkan.',
+'accountcreated' => 'Rekkens pastāi teīktan',
+'accountcreatedtext' => 'Rekkens per $1 pastāi teīktan.',
+'createaccount-title' => 'Rekkenas teiksnā en {{SITENAME}}',
+'createaccount-text' => 'Ainunts ast teīkuns rekkenan "$2" per twajjan e-mail adressin en {{SITENAME}} ($4). Bigānts kliptaswīrds ast "$3".
+Enēis teinū be kitawīdinais kliptaswīrdan.
+
+Tu mazzi ignōritun šin waīstin, ik rekkens pastāi teīktan blāndas paggan.',
+'login-throttled' => 'Per deznimai tū bandāi enēitwei ēn šin rekkenan.
+Gēideis biskin, pirzdau tu wīrst bandāwuns etkūmps.',
+'loginlanguagelabel' => 'Bilā: $1',
+
+# Password reset dialog
+'resetpass' => 'Kitawīdinais kliptaswīrdan',
+'resetpass_announce' => 'Tū assei engūbuns(si) sen kīsmingiskan kliptaswīrdan gaūtan pra e-mail. Kāi wangīnlai enēisenes prōcesan, ensadinnais nāunan kliptaswīrdan stwi:',
+'resetpass_header' => 'Kitawīdinais kliptaswīrdan per swajjan rekkenan',
+'oldpassword' => 'Wūrs kliptaswīrds',
+'newpassword' => 'Nāuns kliptaswīrds',
+'retypenew' => 'Āntrinais nāunan kliptaswīrdan',
+'resetpass_submit' => 'Ensadinnais kliptaswīrdan be enjaīs',
+'resetpass_success' => 'Twājs kliptaswīrds pastāi izpalewīngi kitawīdintan! Enēisna wēraui...',
+'resetpass_forbidden' => 'Kliptaswīrdai ni mazzi būtwei kitawīdintan',
+'resetpass-no-info' => 'Tū turri būtwei engūbun, kāi turīlai entikriskan preiēisenin prei šin pāusan.',
+'resetpass-submit-loggedin' => 'Kitawīdinais kliptaswīrdan',
+'resetpass-wrong-oldpass' => 'Nitikrōmiskas kīsmingiskas anga aktuāls kliptaswīrds.
+Mazzingi tū assei ka tēr kitawīdinuns swajjan kliptaswīrdan anga assei madlīwuns per nāunan kīsmingiskan kliptaswīrdan.',
+'resetpass-temp-password' => 'Kīsmingiskas kliptaswīrds:',
+
+# Edit page toolbar
+'bold_sample' => 'Pastarīnts teksts',
+'bold_tip' => 'Pastarīnts teksts',
+'italic_sample' => 'Itālikis',
+'italic_tip' => 'Itālikis',
+'link_sample' => 'Autengīnsenes tītels',
+'link_tip' => 'Ēntrewingis autengīnsenis',
+'extlink_sample' => 'http://www.example.com autengīnsenes tītels',
+'extlink_tip' => 'Izwinandas autengīnsenis (paminnais ezze prefiksan http:// )',
+'headline_sample' => 'Sirzdatītelas teksts',
+'headline_tip' => 'Āntras līgmenes sirzdatītelis',
+'math_sample' => 'Enpeisāis matemātiskan izbilīsenin stwi',
+'math_tip' => 'Matemātiskas izbilīsenis (LaTeX)',
+'nowiki_sample' => 'Stwi enpeisāis nifōrmatitan tekstan',
+'nowiki_tip' => 'Ignōris wiki fōrmatisnan',
+'image_tip' => 'Grafīki anga kits endīts en pāusu zūrbrukis',
+'media_tip' => 'Autengīnsenis prei zūrbrukin',
+'sig_tip' => 'Twājs papeisāsenis sen dātan be kērdan',
+'hr_tip' => 'Uricōntali (tērpaus taupīngi)',
+
+# Edit pages
+'summary' => 'Kitawīdinsnan ebpeisāsenis:',
+'subject' => 'Tītels:',
+'minoredit' => 'Sta ast malkā tikrinsnā.',
+'watchthis' => 'Nadirēis šin pāusan',
+'savearticle' => 'Enpeisāis pāusan',
+'preview' => 'Pirmādira',
+'showpreview' => 'Waidinnais pirmādiran',
+'showlivepreview' => 'Dināmiska pirmādira',
+'showdiff' => 'Waidinnais kitawīdinsnans',
+'anoneditwarning' => "'''Nōda:''' Tū ni assei engūbun. Twajā IP adressi wīrst būwusi enpeisātan en šisse pāusas redigīsnas istōrijan.",
+'missingsummary' => "'''Nōda:''' Ni assei enwedduns ebpeisāsenin stēisan kitawīdisnan.
+Ik tū ni kwaitēi din enwestun, gnetteis etkūmps knuppan \"Enpeisāis\".",
+'missingcommenttext' => 'Madli, enpeisāis kōmentaran zemmais.',
+'missingcommentheader' => "'''Nōda:''' Kumentāras tītels ast pāustan.
+Kaddan tū wīrst gnettuns(si) \"Enpeisāis\" etkūmps, twājs kumentārs wīrst būwuns enpeisātan šlāit tītelin.",
+'summary-preview' => 'Ebpeisāsenes pirmādira:',
+'subject-preview' => 'Tītelas pirmādira:',
+'blockedtitle' => 'Tērpautajs ast blōkitan',
+'blockedtext' => '\'\'Twajā tērpautajas pabilisnā anga IP adressi pastāi blōkitan.\'\'\'
+
+Blōkisenis pastāi segītan pra $1.
+Brewīnsli ast \'\'$2\'\'.
+
+*Blōkisenes pagaūsenis: $8
+*Blōkisenes wangā: $6
+*Pastāi blōkitan: $7
+
+Tū mazzi kōntaktitwei si sen $1 anga kittan [[{{MediaWiki:Grouppage-sysop}}|perwaldītajan]] kāi diskutītwei blōkisenin.
+Tū ni mazzi tērpautun "tenginnais e-mailin tērpautaju" mazīngiskwan, ik tikrōmiska e-mail adressi ni ast padātan en twajāmans [[Special:Preferences|rekkenas pirminiskwans]] anga ik šī mazīngisku ast blōkitan.
+Twajā bigānta IP adressi ast $3 be blōkisenes ID nummeri ast #$5.
+Madli ebimmais wissans šins malkans en wisēimans prasīsenins ezze blōkisenin.',
+'autoblockedtext' => '<big>\'\'Twajā tērpautajas pabilisnā anga IP adressi pastāi blōkitan.\'\'\'</big>
+
+Blōkisenis pastāi segītan pra $1.
+Brewīnsli ast \'\'$2\'\'.
+
+*Blōkisenes pagaūsenis: $8
+*Blōkisenes wangā: $6
+*Pastāi blōkitan: $7
+
+Tū mazzi kōntaktitwei si sen $1 anga kittan [[{{MediaWiki:Grouppage-sysop}}|perwaldītajan]] kāi diskutītwei blōkisenin.
+Tū ni mazzi tērpautun "tenginnais e-mailin tērpautaju" mazīngiskwan, ik tikrōmiska e-mail adressi ni ast padātan en twajāmans [[Special:Preferences|rekkenas pirminiskwans]] anga ik šī mazīngisku ast blōkitan.
+Twajā bigānta IP adressi ast $3 be blōkisenes ID nummeri ast #$5.
+Madli ebimmais wissans šins malkans en wisēimans prasīsenins ezze blōkisenin.',
+'blockednoreason' => 'ni padāi di tikslin',
+'blockedoriginalsource' => "Appun stesse '''$1''' ast waidīntan zemmais:",
+'blockededitsource' => "Tekst stēisan '''Twajāi redigīsenei''' en '''$1''' ast waidīntan zemmais:",
+'whitelistedittitle' => 'Enēisenis ast izkīnintan, kāi redigīlai',
+'whitelistedittext' => 'Tu turri $1, kāi redigīlai pāusans.',
+'confirmedittext' => 'Redigīsna ast mazīngi tēr pa e-mailas padrūktinsnan.
+Padāis e-mail adressi be padrūktinais din en swajāmans [[Special:Preferences|tērpautajas pirminiskwans]].',
+'nosuchsectiontitle' => 'Ni ast stawīda sekciōni',
+'nosuchsectiontext' => 'Tū bandāi redigītun sekciōnin, kawīda ni ekzistijja.',
+'loginreqtitle' => 'Enēisenis izkīnintan',
+'loginreqlink' => 'enēitwei',
+'loginreqpagetext' => 'Tū turri $1, kāi widālai kittans pāusans.',
+'accmailtitle' => 'Kliptaswīrds tengīntan.',
+'newarticle' => '(Nāuns)',
+'newarticletext' => 'Tu assei autengīntan pra autengīnsenin en dabber niekzistīntin pāusan.
+Kāi teīklai šin pāusan, pagaūneis enpeisātun en zemmaišasmu lāukan (wīdais [[{{MediaWiki:Helppage}}|help page]] per tūls infōrmaciōnis).
+Ik tū ni kwaitīwuns(si) teīktun nāunan pāusan, gnetteis "Etwārtai" knuppan en twajjai lasātlin.',
+'anontalkpagetext' => "----''Sta ast anōnimas tērpautajas diskusiōnis pāusan - stawīdan, kawīds ni turri dabber swajjan rekkenan anga ni tērpaui din.
+Kāi identificīlai tennan, tērpauimai IP adressins.
+Adder IP adressi mazzi būtwei dallautan pra tūlin tērpautajans.
+Ik tu assei anōnims tērpautajs be tu mīri, kāi kumentārai stwi ni ast wartīntan prei tin, [[Special:UserLogin/signup|teīkeis rekkenan]] anga [[Special:UserLogin|enēis]] kāi aulānktun perejīngiskans kurtīsenins sen kittans anōnimans tērpautajs.''",
+'noarticletext' => 'Tēnti šin pāusan ni turri ēn sen tekstan.
+Tu mazzi [[Special:Search/{{PAGENAME}}|laukītun šisse pāusas tītelin]] en kitēimans pāusans,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pralaukītun registerin],
+anga [{{fullurl:{{FULLPAGENAME}}|action=edit}} redigītun šin pāusan]</span>.',
+'userpage-userdoesnotexist' => 'Tērpautajs "$1" ni ast registrītan.
+Izbāndais, anga tū perarwi kwaitīwuns teīktun/redigītun šin pāusan.',
+'userpage-userdoesnotexist-view' => 'Tērpautajas rekkens "$1" ni ast registrītan.',
+'clearyourcache' => "'''Nōda: Kitawīdisnas pa enpeisāsnan stēisan nāunan ensadīnsenin mazzi ni būtwei widāminan. Prawerru skīstintun lasāltas rānkas minīsnan.'''
+*'''Mozilla, Firefox anga Safari - ''' zabāis \"Shift\" gnestan ne gnetteis \"Etnāunais\" anga gnetteis \"Ctrl-F5\" anga \"Ctrl-R\" (\"Command-R\" en Macintoshu);
+*'''Konqueror:''' gnetteis '''Etwārtai kraūneis\" anga \"F5\";
+'''Opera:''' skīstinais rānkas minīsnan en \"Ēnrankis-Pirminiskwas\";
+'''Internet Explorer:''' zabāis \"Ctrl\" gnettintei \"Etnāuninais\" anga gnetteis \"Ctrl-F5\".",
+'usercsspreview' => "'''Paminnais, kāi sta ast tēr twāise CSS pirmādira - nika dabber ni pastāi enpeisātan!'''",
+'userjspreview' => "'''Paminnais, kāi sta ast tēr twāise JS kōdas pirmādira - nika dabber ni pastāi enpeisātan!'''",
+'userinvalidcssjstitle' => "'''Ēmpirssergīsenis:''' Ni ast prusna \"\$1\".
+Paminnais kāi tērpautajas .css be .js pāusai turri pagaūtun si sen līkutan litteran, p. e.g. {{ns:user}}:Foo/monobook.css, ni {{ns:user}}:Foo/Monobook.css.",
+'updated' => '(Ernaunīntan)',
+'note' => "'''Endirīsenis:'''",
+'previewnote' => "'''Sta ast tēr pirmādira.'''
+Kitawīdinsnas dabber ni pastāi enpeisātan!\"",
+'previewconflict' => 'Pirmādira waidinna tekstan iz aūktan redigīsnas laūkan. Tīt pawaidīnlai pāusan, ik tū prestlai din enpeisātun.',
+'session_fail_preview' => "'''Etwīnuis! Mes ni mazēimai karwintun twajjan redigīsenin, sesiōnis dātas izmāitinsnas paggan.'''
+Madli bandāis etkūmps.
+Ik sta aīnat ni dīlilai, bāndais [[Special:UserLogout|izēitwei]] be etwārtai enēitwei.",
+'session_fail_preview_html' => "'''Etwīnuis! Mes ni mazēimai karwintun twajjan redigīsenin, sesiōnis dātas izmāitinsnas paggan.'''
+
+'' Beggi {{SITENAME}} turri \"jāls HTML\" enklaūtan, pirmādira ast kliptintan, kai pakūnslai si ezze JavaScript atakkimans.''
+
+'''Ik sta ast tikrōmiskas redigīsenes bandāsenis, madli bāndais etkūmps.'''
+Ik sta aīnat ni dīlilai, bāndais [[Special:UserLogout|izēitwei]] be etkūmps enēitwei.",
+'editing' => 'Tū redigijja $1',
+'editingsection' => 'Tū redigijja $1 (sekciōni)',
+'editingcomment' => 'Tū redigijja $1 (nāuna sekciōni)',
+'editconflict' => 'Redigīsenin kōnfliktan: $1',
+'explainconflict' => "Ainunts kits ast kitawīdinuns šin pāusan ezkērdai tū pagaūwa redigītun din.
+Tekstas laūks aūktais turri ēn sen pāusas tekstan, kawīds bigāntei ekzistijja.
+Twajjas kitawīdinsnas ast waidīntan en zemmaišasmu tekstas laūkan.
+Tebbei prawerru wīrstwei senlaīwuns(si) twajjans kitawīdinsnans sen ekzistīntin tekstan.
+'''Tēr''' teksts en aūktaišasmu tekstas laūkan wīrst būwuns enpeisātan, kaddan tu wīrst gnettuns \"Enpeisāis pāusan\".",
+'yourtext' => 'Twājs teksts',
+'storedversion' => 'Enpeisāta wersiōni',
+'nonunicodebrowser' => '"Empirssergīsenis: Twajā lasātla ni erzinna tikrōmiskai UTF-8 kōdisnan (Unicode).
+Stesse paggan wisāi zentlai pastāi mainātan sen tenēisan ušnadesimtiskan kōdan.',
+'editingold' => "'''Ēmpirssergīsenis: Tū redigijja niaktuālin šisse pāusas wersiōnin.'''
+Ik tū enpeisālai di, wissas kitawīdisnas segītas ezze šissei wersiōnin wīrst būwušas naīkintan.",
+'yourdiff' => 'Šlaitīntai',
+'copyrightwarning' => "Ēndija en {{SITENAME}} ast preiēiminintan šlāit arāikinsenins pa licēncin \$2 (widāis malkans en \$1).
+Ik tū ni kwaitēi, kāi twājs teksts būlai ebwīrpai kitawīdintan, be paplattintan pra eraīnan, ni endīs din stwi.
+Tū dīgi pataūkina, kāi tū peisāi din subs, anga kōpi iz \"public domain\" anga kittan pawīrpan appun.
+'''Ni endīs materiālin kūnstan pra autōras tikrōmin šlāit waldītajas preiwērpsenin!'''",
+'copyrightwarning2' => "Ēndija en {{SITENAME}} mazzi būtwei redigītan, kitawīdintan anga āupausintan pra kittans tērpautajans.
+Ik tū ni kwaitēi, kāi twājs teksts būlai ebwīrpai kitawīdintan, be paplattintan pra eraīnan, ni endīs din stwi.
+Tū dīgi pataūkina, kāi tū peisāi din subs, anga kōpi iz \"public domain\" anga kittan pawīrpan appun (wīdais dīgi \$1).
+'''Ni endīs materiālin kūnstan sen autōras tikrōmin šlāit waldītajas preiwērpsenin!'''",
+'longpagewarning' => "'''Empirssergīsenis:''' Šin pāusan ast $1 kilōbaitan ilgan;
+ainuntas lasātlas mazzi turītun prōblamans redigīntei pāusans tāuwu, anga ilgaisins nikāi 32kb.
+Ik sta būlai mazīngi, spēllais pāusan en mazzaisins delīkans.",
+'longpageerror' => "'''Blānda!''' Teksts enwests prō tin turri {{PLURAL:$1|1 kilōbaitan|$1 kilōbaitans}}, ka ast ilgaisin nikāi preiwērptai {{PLURAL:$2|1 kilōbaits|$2 kilōbaitai}}.
+Teksts ni mazzi būtwei enpeisātan.",
+'protectedpagewarning' => "'''Ēmpirssergīsenis: Šin pāusan pastāi pakūnstan. Tēr tērpautajai sen perwaldītajas enwarīnsenin mazzi din redigītun.'''",
+'semiprotectedpagewarning' => "Ēmpirssergīsenis: Šin pāusan pastāi pakūnstan. Tēr engūbusis tērpautajai mazzi din redigītun.'''",
+'cascadeprotectedwarning' => "'''Ēmpirssergīsenis:''' Šin pāusan pastāi pakūnstan. Tēr tērpautajai sen perwaldītajas enwarīnsenin mazzi din redigītun. Šin pāusan weldēi pakūnsenin pa {{PLURAL:$1|ripīntin pakūnstan pāusan|ripīntins pakūnstans pāusans}}:",
+'titleprotectedwarning' => "'''Ēmpirssergīsenis: Šin pāusan pastāi pakūnstan be [[Special:ListGroupRights|swajīngei enwarīnsenei]] ast izkīnintan kāi teīklai din.'''",
+'templatesused' => '{{PLURAL:$1|Template|Šablōnis}} tērpautas en šismu pāusan:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Šablōnis}} tērpautas en šissei pirzdiran:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Šablōnis}} tērpautas en šissei sekciōnin:',
+'template-protected' => '(pakūnstan)',
+'template-semiprotected' => '(delīkiskai pakūnstan)',
+'hiddencategories' => 'Šin pāusan ast en {{PLURAL:$1|ainassei kliptan kategōrijan|$1 kliptan kategōrijan}}:',
+'nocreatetitle' => 'Kānkē di mazīngiskwan stesses segīsnan stēisan nāunan pāusan',
+'nocreatetext' => 'Nāunan pāusan teīksnas mazīngisku en {{SITENAME}} pastāi arāikintan.
+Tū mazzi redigītun ekzistīntins pāusans anga [[Special:UserLogin|enēitwei anga teīktun nāunan rekkenan]].',
+'nocreate-loggedin' => 'Tū ni turri preiwērpsenin, kāi teīklai nāunans pāusans.',
+'permissionserrors' => 'Preiwērpsenin blānda',
+'permissionserrorstext' => 'Tū ni turri preiwērpsenin, kāi segīlai stan, {{PLURAL:$1|stawīdses brewīnslis|stawīdan brewīnslin}} paggan:',
+'permissionserrorstext-withaction' => 'Tū ni turri preiwērpsenin prei $2, {{PLURAL:$1|stawīdses brewīnslis|stawīdan brewīnslin}} paggan:',
+'log-fulllog' => 'Wīdais pilnan registerin',
+'edit-hook-aborted' => 'Redigīsna autēnsta ānsas paggan.
+Tāns tikka niwaīstan paggan.',
+'edit-gone-missing' => 'Ni bēi mazīngi etnāunintun pāusan.
+Perwaidinnā di, kāi tennan pastāi āupausintan.',
+'edit-conflict' => 'Redigīsenin kōnfliktan.',
+'edit-no-change' => 'Twājs redigīsenis pastāi ignōritan, beggi tāns ni kitawīdina nika en tekstu.',
+'edit-already-exists' => 'Ni mazēi di teīktun nāunan pāusan.
+Pāusan jāu ekzistijja.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => 'Nōda! Šin pāusan turri ēn sen per tūlin izwakīsenins stēisan brendun parseras funkciōnin.
+
+Prawerru būtwei mazzan nikāi $2 {{PLURAL:$2|izwakīsenis|izwakīsenei}}, adder tēnti ast {{PLURAL:$1|izwakīsenis|izwakīsenei}}.',
+'expensive-parserfunction-category' => 'Pāusai turrintei ēn sin per tūlin izwakīsenins stēisan brendun parseras funkciōnin',
+'post-expand-template-inclusion-warning' => 'Nōda: Tērpautan šablōnin debban ast per debīkan.
+Ainuntas šablōnis ni wīrst pastāwuns tērpautan.',
+'post-expand-template-inclusion-category' => 'Pāusai, kwei tērpautas šablōnis debban ast kīrsa pratreptan',
+'parser-template-loop-warning' => 'Serrīpē di kalpenin en šablōnei: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Šablōnis rekursiōni arāikinsenis kīrsa pratreptan ($1)',
+
+# "Undo" feature
+'undo-success' => 'Redigīsenis mazzi būtwei etwartīntan. Palīginais waidīntans šlaitīntans sirzdau wersiōnins be enpeisāis kitawīdisnans.',
+'undo-failure' => 'Ni mazīngi etwārtai wartīntun redigīsenin, kōnfliktas sen persirzdausnas wersiōnins paggan.',
+'undo-norev' => 'Redigīsenis ni mazzi būtwei etwārtai wartīntan, beggi ni ekzistijja anga pastāi āupausintan.',
+'undo-summary' => 'Etwārtai wartīnsna stēisan wersiōnin $1 teīktan pra [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusiōni]])',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Ni mazīngi teīktun rekkenan',
+'cantcreateaccount-text' => 'Rekkenas teīksenis iz šan IP adressin ("$1") pastāi drēuditan pra [[User:$3|$3]].
+
+Brewīnsli dātan pra $3 ast "$2"',
+
+# History pages
+'viewpagelogs' => 'Wīdais šisse pāusas regīsterins',
+'nohistory' => 'Ni ast redigīsnas istōrija per šin pāusan.',
+'currentrev' => 'Bigānta wersiōni',
+'currentrev-asof' => 'Bigānta wersiōni iz $1',
+'revisionasof' => 'Wersiōni iz $1',
+'revision-info' => 'Wersiōni stesse(s) $2 iz $1',
+'previousrevision' => '← Ānkstaisi wersiōni',
+'nextrevision' => 'Nāunaisi wersiōni →',
+'currentrevisionlink' => 'Bigānta wersiōni',
+'cur' => 'big.',
+'next' => 'ripīntan',
+'last' => 'pirzd.',
+'page_first' => 'pagaūsenis',
+'page_last' => 'wangā',
+'histlegend' => "Palīginsnas etrīnksna: pazentlis sen punktans dwāi wersiōnins per palīginsnan be gnetteis \"enter\" anga \"Palīginais etrīnktans wersiōnins\" knuppan. <br />
+Lagendi: '''({{int:cur}})''' = šlaitīntan ezze bigāntin wersiōnin, '''({{int:last}})''' = šlaitīntan ezze pirzdauman wersiōnin, '''{{int:minoreditletter}}''' = malkā tikrinsnā.",
+'history-fieldset-title' => 'Pradirēis istōrijan',
+'history-show-deleted' => 'Ter āupausintai',
+'histfirst' => 'Ezze pagaūseņu',
+'histlast' => 'Ezze wāngai',
+'historysize' => '({{PLURAL:$1|1 bāits|$1 bāitai}})',
+'historyempty' => '(pāustan)',
+
+# Revision feed
+'history-feed-title' => 'Wersiōnin istōrija',
+'history-feed-description' => 'Wersiōnin istōrija šisses wiki pāusan',
+'history-feed-item-nocomment' => '$1 $2',
+'history-feed-empty' => 'Etrīnktan pāusan ni ekzistijja.
+Tennan mazēi pastātwei āupausintan anga tenesse tītels kitawīdintan.
+Bāndais [[Special:Search|laukītun]] sirzdau nāunans pāusans en wiki',
+
+# Revision deletion
+'rev-deleted-comment' => '(kumentārs āupausintan)',
+'rev-deleted-user' => '(tērpautajas pabilisnā āupausintan)',
+'rev-deleted-event' => '(registeres enpeisāsenis āupausintan)',
+'rev-delundel' => 'waidinnais/kliptinais',
+'rev-showdeleted' => 'waidinnais',
+'revisiondelete' => 'Āupausinais/etgaūneis wersiōnins',
+'revdelete-nooldid-title' => 'Nitikrōmiska wersiōni, kāi izpilninlai šin dīlasenin',
+'revdelete-nooldid-text' => 'Ni etrīnkā di wersiōnins, na kawīdans šis dīlasenis turīlai būtwei izpilnintan, etrīnkta wersiōni ni ekzistijja, anga bandāi di kliptintun bigāntin wersiōnin.',
+'revdelete-nologtype-title' => 'Registeres tīps nisātaui',
+'revdelete-nologtype-text' => 'Ni assei etrīnkuns registeres tīpan kāi izpilninlai šin dīlasenin.',
+'revdelete-nologid-title' => 'Nitikrōmiskas enpeisāsenis en registerin',
+'revdelete-no-file' => 'Etrīnkts zūrbrukis ni ekzistijja.',
+'revdelete-show-file-submit' => 'Jā',
+'revdelete-selected' => "{{PLURAL:$2|Pazentlita pāusas [[:$1]] wersiōni|Pazentlitas pāusas [[:$1]] wersiōnis}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Pazentlits registeres audāsenis|Pazentlitai redigisenes audāsenei}}:'''",
+'revdelete-suppress-text' => 'Klipsnan prawerru tērpautun tēr prei:
+* Persōniskas dātas etkesnā
+*: "buttiska adressi, telapōnas nummeri, sociāla nummeri be t.t."',
+'revdelete-legend' => 'Ensadinnais widāminiskwas arāikinsenins:',
+'revdelete-hide-text' => 'Kliptas wersiōnis tekstan',
+'revdelete-hide-image' => 'Kliptinais zūrbrukes ēnturan',
+'revdelete-hide-name' => 'Kliptinnais dīlasenin be kakīnslin',
+'revdelete-hide-comment' => 'Kliptinais redigīsenes kumentāran',
+'revdelete-hide-user' => 'Kliptinais tērpautajas pabilīsnan/IP adressin',
+'revdelete-hide-restricted' => 'Kliptinais infōrmaciōnins ezze perwaldītajamans tīt kāigi ezze kitēimans',
+'revdelete-radio-same' => '(ni kitawīdinais)',
+'revdelete-radio-set' => 'Jā',
+'revdelete-radio-unset' => 'Ni',
+'revdelete-suppress' => 'Kliptinais infōrmaciōnins ezze perwaldītajamans tīt kāigi ezze kitēimans',
+'revdelete-unsuppress' => 'Āupausinais arāikinsenins per etwārtai wartīntans wersiōnins',
+'revdelete-log' => 'Brewīnsli:',
+'revdelete-submit' => 'Pertērpaus prei {{PLURAL:$1|etrīnktan wersiōnin|etrīnktans wersiōnins}}',
+'revdelete-logentry' => 'ast kitawīdinuns(si) wersiōnis widāminiskwan en [[$1]]',
+'logdelete-logentry' => 'ast kitawīdinuns(si) audāsenes widāminiskwan en [[$1]]',
+'revdelete-success' => "'''Wersiōnin widāminisku pastāi izpalawīngi kitawīdintan.'''",
+'logdelete-success' => "'''Registeres widāminisku izpalewīngi ensadīntan.'''",
+'revdel-restore' => 'kitawīdinais widāminiskwan',
+'pagehist' => 'Pāusas istōrija',
+'deletedhist' => 'Āupausinta istōrija',
+'revdelete-content' => 'ēnturs',
+'revdelete-summary' => 'kitawīdisnan ebpeisāsenis',
+'revdelete-uname' => 'tērpautajas pabilisnā',
+'revdelete-restricted' => 'ensadinnais arāikinsenins per perwaldītajans',
+'revdelete-unrestricted' => 'āupausinais arāikinsenins per perwaldītajans',
+'revdelete-hid' => 'kliptinais $1',
+'revdelete-unhid' => 'ni kliptinais $1',
+'revdelete-log-message' => '$1 - $2 {{PLURAL:$2|wersiōni|wersiōnis}}',
+'logdelete-log-message' => '$1 – $2 {{PLURAL:$2|preipalsenis|preipalsenei}}',
+'revdelete-otherreason' => 'Kitā/papilnimina brewīnsli:',
+'revdelete-reasonotherlist' => 'Kitā brewīnsli',
+'revdelete-edit-reasonlist' => 'Redigīs āupausinsenes brewīnslins',
+'revdelete-offender' => 'Wersiōnis autōrs:',
+
+# Suppression log
+'suppressionlog' => 'Klipsnas registerin',
+'suppressionlogtext' => 'Zemmais ast listi stēisan āupausinsenin be blōkisenin kliptan ezze perwaldītajamans.
+Wīdais [[Special:IPBlockList|IP adressin blōkisenin listin]], ik Tū kwaitēi izbandātwei bigāntins drēudisenins be blōkisenins.',
+
+# History merging
+'mergehistory' => 'Senlajjais istōrijans stēisan pāusan',
+'mergehistory-header' => 'Šin pāusan preiwērpja ti senlaītun aīnasse appus pāusas wersiōnins en nāunan pāusan.
+Seīs aušaudīwingi, kāi kitawīdisnas wīrst erlaikāwušas pāusas istōriskan nistanīntiskwan.',
+'mergehistory-box' => 'Senlajjais dwejjan pāusan istōrijans stēisan kitawīdinsnan:',
+'mergehistory-from' => 'Appus pāusan',
+'mergehistory-into' => 'Kakīnslis pāusan',
+'mergehistory-list' => 'Senlaīmina kitawīdisnan istōrija',
+'mergehistory-merge' => 'Ripīntas [[:$1]] wersiōnis mazzi pastātwei senlaītan en [[:$2]].
+Ebzentlis sen punktan en kōlunei, kawīda kitawīdisna turri būtwei senlaītan sen ānkstaisins.
+Nawigaciōnis autengīsenin tērpausna naīkina etrīnksenin en kōlunei.',
+'mergehistory-go' => 'Waidinnais senlaīminans kitawīdinsnans',
+'mergehistory-submit' => 'Senlajjais istōrijans stēisan kitawīdinsnan',
+'mergehistory-empty' => 'Ni ast wersiōnis, kawīdas mazīlai būtwei senlaītan.',
+'mergehistory-success' => '$3 {{PLURAL:$3|kitawīdinsna|kitawīdinsnas}} en [[:$1]] pastāi senlaītan sen [[:$2]].',
+'mergehistory-fail' => 'Nimazīngi senlaītun istōrijans stēisan kitawīdinsnan. Kitawīdinais ensadīnsenins stēisan parāmetrin.',
+'mergehistory-no-source' => 'Appus pāusan $1 ni ekzistijja',
+'mergehistory-no-destination' => 'Kakīnslis pāusan $1 ni ekzistijja.',
+'mergehistory-invalid-source' => 'Appus pāusan turri turītun tikrōmiskan tītelin.',
+'mergehistory-invalid-destination' => 'Kakīnslis pāusan turri turītun tikrōmiskan tītelin.',
+'mergehistory-autocomment' => 'Istōrija [[:$1]] senlaītan sen [[:$2]]',
+'mergehistory-comment' => 'Istōrija [[:$1]] senlaītan sen [[:$2]]: $3',
+'mergehistory-same-destination' => 'Kakīnslis be appus pāusan ni mazzi būtwei ainawīdan',
+'mergehistory-reason' => 'Brewīnsli:',
+
+# Merge log
+'mergelog' => 'Senlaītan istōrija',
+'pagemerge-logentry' => 'senlīja [[$1]] sen [[$2]] (kitawīdinsnan istōrija ērgi $3)',
+'revertmerge' => 'Etwārtai padelīs',
+'mergelogpagetext' => 'Zemmais ast listi stēisan panzdauman senlaīsenin stēisan kitawīdinsnan istōrijan.',
+
+# Diffs
+'history-title' => 'Redigīsnas istōrija stesse "$1"',
+'difference' => '(Šlaitīntai sirzdau wersiōnins)',
+'lineno' => 'Rindā $1:',
+'compareselectedversions' => 'Paligīnais etrīnktans wersiōnins',
+'editundo' => 'Naīkinais redigīsenin',
+'diff-multi' => '(Ni pawaidinnā di $1{{PLURAL:$1|wersiōnin|wersiōnins}} sirzdau šans)',
+
+# Search results
+'searchresults' => 'Laukīsnas rezultātai',
+'searchresults-title' => 'Laukīsnas rezultātai per "$1"',
+'searchresulttext' => 'Tūls infōrmaciōnis ezze laukīsnan en {{SITENAME}} tū mazzi aupaltun en [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => "Rezultātai per prasīsenin '''[[:$1]]''' ([[Special:Prefixindex/$1|pāusai, kawīdai pagaūne si sen „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pāusai, kawīdai autenginna prei „$1”]])",
+'searchsubtitleinvalid' => "Per prasīsenin '''$1'''",
+'toomanymatches' => 'Per tūlin etrāsenei gaūtan, bāndais kittan prasīsenin',
+'titlematches' => 'Aupalā di en tītelimans',
+'notitlematches' => 'Ni aupalā di en tītelimans',
+'textmatches' => 'Aupalā di en pāusan ēnturu',
+'notextmatches' => 'Ni aupalā di en pāusan ēnturu',
+'prevn' => '{{PLURAL:$1|pirzdaums|pirzdaumai $1}}',
+'nextn' => '{{PLURAL:$1|ripīnts|ripīntei $1}}',
+'prevn-title' => '{{PLURAL:$1|Pirzdauman|Pirzdaumai}} $1 {{PLURAL:$1|rezultātan|rezultātai}}',
+'nextn-title' => '{{PLURAL:$1|Ripīntin $1 rezultātan|Ripīntei $1 rezultātai}}',
+'shown-title' => 'Waidinnais $1 {{PLURAL:$1|rezultātan|rezultātai}} en pāusu',
+'viewprevnext' => 'Wīdais ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'Laukīsnas mazīngiskwas',
+'searchmenu-exists' => "'''Ast pāusan \"[[:\$1]]\" en šissei wikkin''",
+'searchmenu-new' => "'''Teīkeis pāusan \"[[:\$1|\$1]]\" en šissei wikki!'''",
+'searchhelp-url' => 'Help:Ēnturs',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pradirēis pāusans sen šin prefiksan]]',
+'searchprofile-project' => 'Pagalbas be prōjaktas pāusai',
+'searchprofile-everything' => 'Wiss',
+'searchprofile-advanced' => 'Ēmpirsin treppun',
+'searchprofile-articles-tooltip' => 'Laukīs en tītelin plattibei $1',
+'searchprofile-project-tooltip' => 'Laukīs en tītelin plattibimans $1',
+'searchprofile-images-tooltip' => 'Laukīs zūrbrukins',
+'searchprofile-everything-tooltip' => 'Laukīs en pastippai ēnturan (dīgi en diskusiōnis pāusamans)',
+'searchprofile-advanced-tooltip' => 'Laukīs en etrīnktamans tītelin plattibins',
+'search-result-size' => '$1 ({{PLURAL:$2|1 wīrds|$2 wīrdai}})',
+'search-result-score' => 'Ebtikewīngisku $1%',
+'search-redirect' => '(prawessenis $1)',
+'search-section' => '(sekciōni $1)',
+'search-suggest' => 'Mirīwuns(si) tū ezze: $1',
+'search-interwiki-caption' => 'Palīgwai prōjaktai',
+'search-interwiki-default' => 'Rezultātai per $1:',
+'search-interwiki-more' => '(tūls)',
+'search-mwsuggest-enabled' => 'sen nadāsnans',
+'search-mwsuggest-disabled' => 'šlāit nadāsnans',
+'search-relatedarticle' => 'Rīstan',
+'mwsuggest-disable' => 'Izklaūjais AJAX nadāsnans',
+'searcheverything-enable' => 'Laukīs en wisēimans tītelin plattibins',
+'searchrelated' => 'gintawai',
+'searchall' => 'wisāi',
+'showingresults' => "Zemmais ast listi {{PLURAL:$1|sen '''1''' rezultātan|stēisan '''$1''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
+'showingresultsnum' => "Zemmais ast listi {{PLURAL:$3|sen '''1''' rezultātan|stēisan '''$3''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
+'nonefound' => "'''Nōda''': Auprestaminai pralaukītan ast tēr ainuntas tītelin plattibis.
+Bāndais pagaūtun laukītan frāzin sen prefiksan \"all:\", kāi pralaukīlai pastippan ēnturan stesse {{SITENAME}} (ēmpiri sen diskusiōnis pāusans, šablōnins, be t.t.), anga tērpaus palaipsītan tītelin plattibin kāigi prefiksan.",
+'search-nonefound' => 'Nisātausna stēisan rezultātan izpilnintan prasīsenes kritērijans.',
+'powersearch' => 'Paplattinta laukīsna',
+'powersearch-legend' => 'Paplattinta laukīsna',
+'powersearch-ns' => 'Laukīs en tītelin plattibimans:',
+'powersearch-redir' => 'Waidinnais prawessenins',
+'powersearch-field' => 'Laukīs',
+'powersearch-toggleall' => 'Wisāi',
+'powersearch-togglenone' => 'Nika',
+'search-external' => 'Izwinandauma laukīsna',
+'searchdisabled' => 'Laukīsna en {{SITENAME}} pastāi izklaūtan.
+En šissei kērdan tu mazzi laukītun sen Google.
+Paminnais, kāi tenēisan indeksai mazzi ni būtwei aktuālin.',
+
+# Quickbar
+'qbsettings' => 'Dīwas preiēisenes sawīnzli',
+'qbsettings-none' => 'Nisatausnā',
+'qbsettings-fixedleft' => 'Preidrūktintan prei kāirai',
+'qbsettings-fixedright' => 'Preidrūktintan prei tikrai',
+'qbsettings-floatingleft' => 'Plūwints prei kāirai',
+'qbsettings-floatingright' => 'Plūwints prei tikrai',
+
+# Preferences page
+'preferences' => 'Pirminiskwas',
+'mypreferences' => 'Majjas pirminiskwas',
+'prefs-edits' => 'Kitawīdinsnan gīrbis:',
+'prefsnologin' => 'Ni assei engūbun',
+'changepassword' => 'Kitawīdinais kliptaswīrdan',
+'prefs-skin' => 'Prusna',
+'skin-preview' => 'Pirmādira',
+'prefs-math' => 'Matemātiki',
+'datedefault' => 'Auprestaminan',
+'prefs-datetime' => 'Dātan be kerdā',
+'prefs-personal' => 'Tērpautajas dātan',
+'prefs-rc' => 'Panzdaumas kitawīdinsnas',
+'prefs-watchlist' => 'Nadirītan listi',
+'prefs-watchlist-days' => 'Gīrbis stēisan deīnan widātan en listei stēisan nadirītan :',
+'prefs-watchlist-days-max' => 'Maksimālai 7 dēinas',
+'prefs-watchlist-edits' => 'Gīrbis stēisan redigīsenin waidīntan en paplattintai listin stēisan nadirīntan:',
+'prefs-watchlist-edits-max' => 'Maksimāls gīrbis: 1000',
+'prefs-misc' => 'Šlaitawīdai ensadīnsenei',
+'prefs-resetpass' => 'Kitawīdinais kliptaswīrdan',
+'prefs-email' => 'E-mailas mazīngiskwas',
+'prefs-rendering' => 'Prusna',
+'saveprefs' => 'Enpeisāis',
+'resetprefs' => 'Ausadinnais nienpeisātans kitawīdinsnans',
+'restoreprefs' => 'Etwārtai wartinnais wissans auprestaminans pirminiskwans',
+'prefs-edit-boxsize' => 'Redigīsnas lāngstas debban.',
+'rows' => 'Rīndas:',
+'columns' => 'Kōlunis:',
+'searchresultshead' => 'Laukīs',
+'resultsperpage' => 'Rezultātan gīrbis en pāusu',
+'contextlines' => 'Pirmas rīndas stēisan pāusan',
+'contextchars' => 'Kōntekstas litteran gīrbis en ainassei rīndan:',
+'stub-threshold' => 'Maksimālin debban stesse pāusan ebzentlitan kāigi <a href="#" class="stub">daīgan (stub)</a>',
+'recentchangesdays' => 'Dēinan gīrbis, waidīnts en panzdaumamans kitawīdinsnans:',
+'recentchangesdays-max' => 'Maksimālai $1 {{PLURAL:$1|deinā|dēinas}}',
+'recentchangescount' => 'Gīrbis stēisan redigīsenin waidīntan auprestaminai:',
+'savedprefs' => 'Twajjas pirminiskwas pastāi enpeisātan.',
+'timezonelegend' => 'Kērdas zōni:',
+'localtime' => 'Lōkala kerdā:',
+'timezoneuseserverdefault' => 'Tērpaus auprestaminan sērwerin kērdan',
+'timezoneuseoffset' => 'Kitā (patikrinais šlaitīntan)',
+'timezoneoffset' => 'Šlaitīntan:',
+'servertime' => 'Sērweres kerdā:',
+'guesstimezone' => 'Paimmais iz lasātlin',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amērika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Āzija',
+'timezoneregion-atlantic' => 'Atlāntis ōceans',
+'timezoneregion-australia' => 'Austrālija',
+'timezoneregion-europe' => 'Eurōpa',
+'timezoneregion-indian' => 'Īndijas ōceans',
+'timezoneregion-pacific' => 'Pacīfiks',
+'allowemail' => 'As wērpja kitēimans tērpautajans tengīntun mi e-mailins',
+'prefs-searchoptions' => 'Laukīsnas mazīngiskwas',
+'prefs-namespaces' => 'Tītelin plattibis',
+'default' => 'Auprestaminai',
+'prefs-files' => 'Zūrbrukei',
+'prefs-custom-css' => 'swājs CSS',
+'prefs-custom-js' => 'swājs JavaScript',
+'prefs-emailconfirm-label' => 'E-mailas padruktinsna:',
+'prefs-textboxsize' => 'Redigīsnas lāngstas debban',
+'youremail' => 'Twajā e-mail adressi:',
+'username' => 'Tērpautajas pabilisnā:',
+'uid' => 'Tērpautajas ID:',
+'prefs-memberingroups' => 'Perlānke prei {{PLURAL:$1|gruppin|gruppins:}}',
+'prefs-registration' => 'Registraciōnis kerdā:',
+'yourrealname' => 'Arwis emmens:',
+'yourlanguage' => 'Bilā:',
+'yournick' => 'Nāuns papeisāsenis:',
+'badsig' => "Nitikrōmiskas papeisāsenis, izbāndais HTML'as zentlīntajans.",
+'badsiglength' => 'Twajs papeisāsenis ast per ilgan.
+Preiwērptan ilgan ast $1 {{PLURAL:$1|zentlin|zentlai}}.',
+'yourgender' => 'Twajjan gīmtan:',
+'gender-unknown' => 'Ni patikrinā di',
+'gender-male' => 'Wīrs',
+'gender-female' => 'Genā',
+'prefs-help-gender' => 'Gīmtas dasnā ni ast būtewingi. Ik tū prestlai din zentlitun, prōgrams wīrst senkalsīwuns si prei din.
+Informaciōni ezze gīmtan wīrst būwusi widātan pra wissans.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Arwis emmens ni ast būtewingi.
+Ik tū prestlai din dātun, tāns wīrst tērpautan kāi papeisātun Twajjan dīlin.',
+'prefs-help-email' => 'Ni ast izkīnintan dātun e-mail adressin, adder sta dāst tengīntun ti nāunan kliptaswīrdan ik tū izmīrstlai din.
+Tū mazzi dīgi etrīnktun dātun kitēimans drāugautwei sen tin pra tērpautajas anga waiţasenes pāusan ni etkeddantei twajjan adressin.',
+'prefs-help-email-required' => 'E-mail adressi ast būtewingi.',
+'prefs-i18n' => 'Internaciōnalizaciōni',
+'prefs-signature' => 'Papeisāsenis',
+'prefs-dateformat' => 'Dātas fōrmatan',
+'prefs-timeoffset' => 'Kērdas šlaitīntan',
+'prefs-advancedediting' => 'Ēmpirsin treppušas opciōnis',
+'prefs-advancedrc' => 'Ēmpirsin treppušas opciōnis',
+'prefs-advancedrendering' => 'Ēmpirsin treppušas opciōnis',
+'prefs-advancedsearchoptions' => 'Ēmpirsin treppušas opciōnis',
+'prefs-advancedwatchlist' => 'Ēmpirsin treppušas opciōnis',
+'prefs-display' => 'Waidīnsnas opciōnis',
+
+# User rights
+'userrights' => 'Perwāldais enwarīnsenins stēisan tērpautajan',
+'userrights-lookup-user' => 'Perwāldais tērpautajas gruppins',
+'userrights-user-editname' => 'Enweddais tērpautajas pabilīsnan:',
+'editusergroup' => 'Redigīs tērpautajas gruppins',
+'editinguser' => "Kitawīdisna stēisan tērpautajas '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) enwarīnsenin",
+'userrights-editusergroup' => 'Redigīs tērpautajas gruppins',
+'saveusergroups' => 'Enpeisāis tērpautajas gruppins',
+'userrights-groupsmember' => 'perlānke prei:',
+'userrights-groups-help' => 'Tu mazzi kitawīdintun gruppins, prei kawīdans šis tērpautajs perlānke:
+*Ebzentlints laūks zentli, kāi tērpautajs perlānke prei šan gruppin
+*Niebzentlints laūks zentli, kāi tērpautajs ni perlānke prei šan gruppin
+*Lāuksna * zentli, kāi ni mazīngi āupausintun tērpautajan iz gruppin pa preidāsenin anga preidātun pa āupausinsenin.',
+'userrights-reason' => 'Brewīnsli:',
+'userrights-no-interwiki' => 'Ni assei enwarīntan kāi kitawīdinlai stēisan enwarīnsenin en kitēimans wiki.',
+'userrights-nodatabase' => 'Dātanbazi $1 ni ekzistijja anga ni ast lōkalin.',
+'userrights-nologin' => 'Tū turri [[Special:UserLogin|enēitwei]] kāigi perwaldītajs, kāi dātun tērpautajamans enwarīnsenins.',
+'userrights-notallowed' => 'Tū ni assei enwarīntan, kāi dālai tērpautajans enwarīnsenins.',
+'userrights-changeable-col' => 'Gruppis, kawīdans tu mazzi kitawīdintun',
+'userrights-unchangeable-col' => 'Gruppis, kawīdans tu ni mazzi kitawīdintun',
+
+# Groups
+'group' => 'Gruppi:',
+'group-user' => 'Tērpautajai',
+'group-autoconfirmed' => 'Autōmatiskai padrūktintai tērpautajai',
+'group-bot' => 'Bōtai',
+'group-sysop' => 'Perwaldītajai',
+'group-all' => '(wisāi)',
+
+'group-user-member' => 'Tērpautajs',
+'group-autoconfirmed-member' => 'Autōmatiskai padrūktints tērpautajs',
+'group-bot-member' => 'Bōts',
+'group-sysop-member' => 'Perwaldītajs',
+
+'grouppage-user' => '{{ns:project}}:Tērpautajai',
+'grouppage-autoconfirmed' => '{{ns:project}}:Autōmatiskai padrūktintai tērpautajai',
+'grouppage-bot' => '{{ns:project}}:Bōtai',
+'grouppage-sysop' => '{{ns:project}}:Perwaldītajai',
+
+# Rights
+'right-read' => 'Skaitāis pāusans',
+'right-edit' => 'Redigīs pāusans',
+'right-createpage' => 'Teīkeis pāusans (ni sēntins diskusiōnis pāusans)',
+'right-createtalk' => 'Teīkeis diskusiōnis pāusans',
+'right-createaccount' => 'Tērpautajan rekkenan teiksnā',
+'right-minoredit' => 'Ebzentlinais redigīsenins kāigi malkans',
+'right-move' => 'Praskajjinais pāusans',
+'right-move-subpages' => 'Praskajjinais pāusans ēmpiri sen tenēisan pōpausans',
+'right-move-rootuserpages' => 'Praskajjinais tērpautajan pāusans',
+'right-movefile' => 'Praskajjinais zūrbrukins',
+'right-suppressredirect' => 'Pāusan praskajjinsna šlāit prawessenes teīksnan en deīktu wūras tītelas',
+'right-upload' => 'Enkraūneis zūrbrukins na sērwerin',
+'right-reupload' => 'Kirsāi peisāis ekzistīntin zūrbrukin',
+'right-reupload-own' => 'Kirsāi peisāis ekzistīntins, ankstāis enkraūtans zūrbrukins',
+'right-reupload-shared' => 'Lōkalai kirsāi peisāis zūrbrukins en dallautasmu repōzitōrijan',
+'right-upload_by_url' => 'Enkraūneis zūrbrukins iz URL adressin',
+'right-purge' => 'Skistinnais pāusas rānkas minīsnan šlāit prasīsenin ezze padrūktinsenin',
+'right-autoconfirmed' => 'Redigīs delīkiskai pakūnstans pāusans',
+'right-bot' => 'Ebzentlinais redigīsenins, kāigi segītans autōmatiskai',
+'right-nominornewtalk' => 'Malkas kitawīdisnas en tērpautajan diskusiōnis pāusamans ni dīlina pawakīsenin ezze nāunan waīstin',
+'right-apihighlimits' => 'Tērpaus mūisesan līmitan en API prasīsenimans',
+'right-writeapi' => 'Enpeisāis pra API interfācan',
+'right-delete' => 'Āupausinais pāusans',
+'right-bigdelete' => 'Āupausinais pāusans sen ilgan redigīsnas istōrijan',
+'right-deleterevision' => 'Patikrintas pāusas wersiōnis āupausinsna be etgaūsna',
+'right-deletedhistory' => 'Wīdais āupausintans wersiōnins, šlāit tenēimans preipeisātan tekstan',
+'right-deletedtext' => 'Wīdais āupausintan tekstan be šlaitīntans sirzdau āupasintans wersiōnins',
+'right-browsearchive' => 'Laukīs āupausintan pāusan',
+'right-undelete' => 'Etgaūneis āupausintan pāusan',
+'right-suppressrevision' => 'Pirmādira be etwārtai wartinsnā stēisan wersiōnin kliptintan ezze perwaldītajan',
+'right-suppressionlog' => 'Wīdais priwātans registerins',
+'right-block' => 'Drēudeis tērpautajamans redigītun',
+'right-blockemail' => 'Drēudeis tērpuatajamans e-mailan tengīntun',
+'right-hideuser' => 'Tērpautajas blōkisna, niwidāminan perōnewingi',
+'right-ipblock-exempt' => 'Ebjaīs blōkisenins, autōmatiskans blōkisenins be blōkisenins stēisan IP adressin ebīmtan',
+'right-proxyunbannable' => 'Ebjaīs autōmatiskans proxy blōkisnans',
+'right-protect' => 'Pakūnsnas klādas kitawīdisna be preiēisenis prei redigīsnan stēisan pakūnstan pāusan',
+'right-editprotected' => 'Redigīs pakūnstans pāusans (šlāit weldītan pakūnsenin)',
+'right-editinterface' => 'Redigīs tērpautajas interfācan',
+'right-editusercssjs' => 'Redigīs CSS be JavaScript zūrbrukins kitēisan tērpautajan',
+'right-editusercss' => 'Redigīs CSS zūrbrukins kitēisan tērpautajan',
+'right-edituserjs' => 'Redigīs JS zūrbrukins kitēisan tērpautajan',
+'right-rollback' => 'Dīwai etwārtai wartinnais redigīsenin stesse tērpautajan, kawīds redigijja ainuntan pāusan kāigi panzdaums',
+'right-markbotedits' => 'Ebzentlis naīkintans redigīsenins kāigi bōtas redigīsenins',
+'right-import' => 'Impōrtis pāusans iz kittans wiki',
+'right-importupload' => 'Impōrtis pāusans tenginnantei zūrbrukins',
+'right-patrol' => 'Ebzentlis kitēisan redigīsenins per izbandātans',
+'right-autopatrol' => 'Swajāi redigīsenei autōmatiskai ebzentlitan per izbandātans',
+'right-patrolmarks' => 'Wīdais izbandāsnas zentlitajans stēisan panzdauman kitawīdinsnan',
+'right-unwatchedpages' => 'Widāis listin stēisan ninadirītan pāusan',
+'right-trackback' => 'Tenginnais "trackback"',
+'right-mergehistory' => 'Senlajjais istōrijans stēisan pāusan',
+'right-userrights' => 'Redigīs enwarīnsenins wisēisan tērpautajan',
+'right-userrights-interwiki' => 'Redigīs enwarīnsenins stēisan tērpautajan en kitēimans wiki',
+'right-siteadmin' => 'Dātanbazin auklaūsna be etklaūsna',
+'right-reset-passwords' => 'Etkraūneis kliptaswīrdans kitēisan tērpautajan',
+'right-override-export-depth' => 'Ekspōrtis pāusans ēmpiri sen pāusans prei kawīdans tenēi autenginna, ērgi gilluwan stēisan 5 autengīnsenin',
+'right-sendemail' => 'Tenginnais e-mailin kitēimans tērpautajans',
+
+# User rights log
+'rightslog' => 'Registerin stēisan tērpautajan enwarīnsenin',
+'rightslogtext' => 'Sta ast registerin stēisan tērpautajan ewarīnsenin kitawīdisnan.',
+'rightslogentry' => 'ast kitawīdinuns(si) $1 perlānksnan prei gruppins ($2 → $3)',
+'rightsnone' => '(nisātausna)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'skaitātun šin pāusan',
+'action-edit' => 'redigītun šin pāusan',
+'action-createpage' => 'teīktun pāusans',
+'action-createtalk' => 'teīktun discusiōnis pāusans',
+'action-createaccount' => 'teīktun šin tērpautajas rekkenan',
+'action-minoredit' => 'ebzentlitun šin redigīsenin per mālkan',
+'action-move' => 'praskajjintun šin pāusan',
+'action-move-subpages' => 'praskajjintun šin pāusan be tenesse pōpausans',
+'action-move-rootuserpages' => 'praskajjintun pāusans stēisan tērpautajan (šlāit pōpausans)',
+'action-movefile' => 'praskajjintun šin zūrbrukin',
+'action-upload' => 'enkraūtun šin zūrbrukin',
+'action-reupload' => 'kīrsai peisāis šin ekzistīntin zūrbrukin',
+'action-reupload-shared' => 'kirsāis peisāis šin zūrbrukin en dallautasmu repozitōrijan',
+'action-upload_by_url' => 'enkraūtun šin zūrbrukin iz URL adressin',
+'action-writeapi' => 'enpeisātun pra API interfācan',
+'action-delete' => 'āupausintun šin pāusan',
+'action-deleterevision' => 'āupausintun šan wersiōnin',
+'action-deletedhistory' => 'widātun istōrijan stēisan āupausinsnan šisse pāusan',
+'action-browsearchive' => 'laukītun āupausintans pāusans',
+'action-undelete' => 'etgaūtun šin pāusan',
+'action-suppressrevision' => 'pirmadirītun be etwārtai wartīntun kliptintan wersiōnin',
+'action-suppressionlog' => 'widātun šin priwātan registerin',
+'action-block' => 'drēuditun šismu tērpautajan redigītun',
+'action-protect' => 'kitawīdintun šisse pāusan pakūnsnas kladan',
+'action-import' => 'impōrtitun šin pāusan iz kittan wiki',
+'action-importupload' => 'impōrtitun šin pāusan pra zūrbrukes enkraūsnan',
+'action-patrol' => 'ebzentlitun kitēisan redigīsenin per zbandātan',
+'action-autopatrol' => 'ebzentlitun swajjan redigīsenin per izbandātan',
+'action-unwatchedpages' => 'widātun listin stēisan ninadirītan pāusan',
+'action-trackback' => 'tengīntun "traceback"',
+'action-mergehistory' => 'Senlajjais šisse pāusas istōrijan',
+'action-userrights' => 'redigītun enwarīnsenins wisēisan tērpautajan',
+'action-userrights-interwiki' => 'redigītun enwarīnsnans stēisan tērpautajan en kitēimans wiki',
+'action-siteadmin' => 'auklaūtun anga izklaūtun dātanbazin',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|kitawīdisna|kitawīdisnas}}',
+'recentchanges' => 'Panzdaumas kitawīdinsnas',
+'recentchanges-legend' => 'Panzdauman kitawīdinsnan mazīngiskwas',
+'recentchangestext' => 'Šin pāusan waidinna listin stēisan panzdauman kitawīdinsnan en šissei wiki.',
+'recentchanges-feed-description' => 'Nadirēis ukanāunaisins kitawīdisnans en šissei wiki.',
+'recentchanges-legend-newpage' => '$1 - nāunan pāusan',
+'recentchanges-label-newpage' => 'Šis redigīsenis ast teīkuns nāunan pāusan',
+'recentchanges-legend-minor' => '$1 - malks redigīsenis',
+'recentchanges-label-minor' => 'Sta ast malks redigīsenis',
+'recentchanges-legend-bot' => '$1 - bōtas redigīsenis',
+'recentchanges-label-bot' => 'Sta ast redigīsenis segītan pra bōtan',
+'recentchanges-legend-unpatrolled' => '$1 - niizbandāts redigīsenis',
+'recentchanges-label-unpatrolled' => 'Šis redigīsenis ni ast dabber izbandātan',
+'rcnote' => "Zemmais ast {{PLURAL:$1|'''1''' kitawīdinsna segīta|panzdaumas '''$1''' kitawīdinsnas segītas}} en panzdaumamans {{PLURAL:$2|dēinan|'''$2''' dēinans}}, gīrbawintei ezze $5, $4.",
+'rcnotefrom' => "Zemmais ast kitawīdisnas ezze '''$2''' (ērgi '''$1''' waidīntan).",
+'rclistfrom' => 'Waidinnais nāunans kitawīdinsnans pagaūwintei ezze $1',
+'rcshowhideminor' => '$1 malkas kitawīdisnas',
+'rcshowhidebots' => '$1 bōtai',
+'rcshowhideliu' => '$1 engūbusis tērpautajai',
+'rcshowhideanons' => '$1 anōnimai tērpautajai',
+'rcshowhidepatr' => '$1 izbandātai redigīsenei',
+'rcshowhidemine' => '$1 majāi redigīsenei',
+'rclinks' => 'Waidinnais panzdaumans $1 kitawīdinsnans en panzdaumamans $2 dēinans.<br />$3',
+'diff' => 'šlaitīn.',
+'hist' => 'ist.',
+'hide' => 'Kliptinais',
+'show' => 'Waidinnais',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|nadirīnts tērpautajs|nadirīntei tērpautajai}}]',
+'rc_categories' => 'Arāikinais prei kategōrijan (izsklaitinnais sen "|")',
+'rc_categories_any' => 'Wisāi',
+'newsectionsummary' => '/* $1 */ nāuna sekciōni',
+'rc-enhanced-expand' => 'Waidinnais malkans (izkīnina JavaScript)',
+'rc-enhanced-hide' => 'Kliptinais malkans',
+
+# Recent changes linked
+'recentchangeslinked' => 'Kitawīdinsnas en preirīstamans',
+'recentchangeslinked-title' => 'Kitawīdinsnas en pāusans, prei kawīdans "$1" autenginna',
+'recentchangeslinked-noresult' => 'Ni bēi niainas kitawīdinsnas en preirīstamans anga autenginnantimans pāusans en etrīnktan kērdasetrapan.',
+'recentchangeslinked-summary' => 'Zemmais ast listi stēisan panzdauman kitawīdinsnan en pāusamans prei kawīdans autenginna dātan pāusan (anga en wisēimans pāusans perlānkintimans prei dātan kategōrijan).
+Pāusai iz [[Special:Watchlist|nadirītan listin]] ast pastarīntan.',
+'recentchangeslinked-page' => 'Pāusas tītels',
+'recentchangeslinked-to' => 'Waidinnais kitawīdinsnans en pāusamans autenginnantins prei dātan pāusan, ni en pāusamans prei kawīdans pāusan autenginna',
+
+# Upload
+'upload' => 'Enkraūneis zūrbrukin',
+'uploadbtn' => 'Enkraūneis zūrbrukin',
+'reuploaddesc' => 'Naikinnais enkraūsenin be etwartinnais si en enkraūsenes fōrmularan.',
+'upload-tryagain' => 'Tenginnais kitawīdintan zūrbrukes ebpeisāsenin',
+'uploadnologin' => 'Ni assei engūbun',
+'uploadnologintext' => 'Tu turri [[Special:UserLogin|enēitwei]] pirzdau tū wīrst tenginnuns(si) zūrbrukins.',
+'upload_directory_missing' => 'Fōlderis per enkraūtans zūrbrukins ($1) ni ekzistijja be ni mazzi būtwei teīktan pra WWW sērwerin.',
+'upload_directory_read_only' => 'Sērweris ni mazzi enpeisātun en fōlderin ($1), palīkitan per enkraūtans zūrbrukins.',
+'uploaderror' => 'Enkraūsnas blānda',
+'uploadtext' => "Tērpaus ripīntin fōrmularan kāi enkraūlai zūrbrukin.
+Kāi widālai anga laukīlai ankstāis enkraūtans zūrbrukins jaīs en [[Special:FileList|listin stēisan enkraūtan zūrbrukin]]. Enkraūsenei ast enpeisātan en [[Special:Log/upload|enkraūsnas registeŗu]], āupausinsenei en [[Special:Log/delete|āupausinsnas registeŗu]].
+
+Zūrbrukis wīrst tikkuns en pāusu, ik tū wīrst tērpauwuns(si) aīnan iz izbilīsenins:
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' kāi tērpaulai pilnan zūrbrukes wersiōnin
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|papeisāsenis]]</nowiki></tt>''' kāi tērpaulai 200-pikselin miniatūrin sen \"papeisāsenis\" papeisāsenin
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' kāi entikriskai autengīnlai šlāit zūrbrukes waidīnsnan",
+'upload-permitted' => 'Preiwērptai zūrbrukin fōrmatai: $1.',
+'upload-preferred' => 'Pirminiskai zūrbrukin fōrmatai: $1.',
+'upload-prohibited' => 'Drēuditai zūrbrukin fōrmatai: $1.',
+'uploadlog' => 'zūrbrukin enkraūsnas registerin',
+'uploadlogpage' => 'Zūrbrukin enkraūsnas registerin',
+'uploadlogpagetext' => 'Listi stēisan panzdaumai enkraūtan zūrbrukin.
+Jaīs en pāusan [[Special:NewFiles|Nāunan zūrbrukin galērija]], kāi widātun dins kāigi līkutans bildins.',
+'filename' => 'Zūrbrukes pabilisnā',
+'filedesc' => 'Ebpeisāsenis',
+'fileuploadsummary' => 'Ebpeisāsenis',
+'filereuploadsummary' => 'Kitawīdinsnas en zūrbruķu:',
+'filestatus' => 'Autōran tikrōmis stāsus:',
+'filesource' => 'Aps:',
+'uploadedfiles' => 'Enkraūtai zūrbrukei',
+'ignorewarning' => 'Ignōris ēmpirssergīsenins be kīninais zūrbrukes enpeisāsenin.',
+'ignorewarnings' => 'Ignōris wissans ēmpirssergīsnans',
+'minlength1' => 'Zūrbrukes pabilisnā turri turītun ukamazzan aīnan litteran.',
+'illegalfilename' => 'Zūrbrukes pabilisnā "$1" turri ēn sen zentlins drēuditan en pāusan tītelimans.
+Madli kitawīdinais zūrbrukes pabilīsnan be enkraūneis din etkūmps.',
+'badfilename' => 'Zūrbrukes pabilisnā pastāi kitawīdintan na "$1".',
+'filetype-badmime' => 'Tengīnsna stēisan zūrbrukin stesse MIME tīpas "$1" ni ast prewērptan.',
+'filetype-bad-ie-mime' => 'Ni mazīngi enkraūtun šin zūrbrukin, beggi Internet Explorer wīrst serrīpuns din kāigi "$1". Stawīds zūrbrukes tīps ast drēudintan kāigi pōtencialai wārgingis.',
+'filetype-unwanted-type' => "'''\".\$1\"''' ni ast palaipsīts zūrbrukes tīps. {{PLURAL:\$3|pakwaitīts zūrbrukes tīps|pakwaitītai zūrbrukes tīpai}} ast \$2.",
+'filetype-banned-type' => "'''\".\$1\"''' ast nipreiwērtpts zūrbrukes tīps. {{PLURAL:\$3|Preiwērpts zūrbrukes tīps|Preiwērptai zūrbrukes tīpai}} ast \$2.",
+'filetype-missing' => 'Zūrbrukis ni turri plattinsenin (perw. ".jpg").',
+'large-file' => 'Rāditan ast, kāi zūrbrukes debban ni būlai mūisesan nikāi $1; šisse zūrbrukes debban ast $2.',
+'largefileserver' => 'Zūrbrukes debban ast mūisesan, nikāi maksimālan preiwērptan.',
+'emptyfile' => 'Enkraūts zūrbrukis perwaidinna būtwei pāustan. Sta mazzi būtwei litteras blāndas en zūrbrukes pabilīsnai paggan. Madli izbāndais anga zūrbrukes pabilisnā ast tikrōmiskan.',
+'fileexists' => "Zūrbrukis sen šin pabilīsnan jāu ekzistijja. Izbāndais '''<tt>[[:$1]]</tt>''', ik ni assei aušaudīwingi kāi tū kwaitēi din kitawīdintun.
+[[$1|thumb]]",
+'filepageexists' => "Šisse zūrbrukes ebpeisāsenes pāusan ast jāu teīktan: '''<tt>[[:$1]]</tt>''', adder tēntiskai niains zūrbrukis sen šan pabilīsnan ni ekzistijja.
+Informaciōnis ezze zūrbrukin, kawīdans tū assei enweddus, ni wīrst tikkušas en ebpeisāsenes pāusu.
+Ik tū kwaitēi, kāi tennas pastālai waidīntan, tū turri redigītun tennans rānkiskai.
+[[$1|thumb]]",
+'fileexists-extension' => "Zūrbrukis sen palīgun pabilīsnan ekzistijja: [[$2|thumb]]
+*Enkraūtas zūrbrukes pabilisnā: '''<tt>[[:$1]]</tt>'''
+*Ekzistīntes zūrbrukes pabilisnā: '''<tt>[[:$2]]</tt>'''
+Etrīnkais kittan pabilīsnan.",
+'fileexists-thumbnail-yes' => "Zūrbrukis perwaidinna būtwei mazzinta grafīki \"(miniatūri)\".[[\$1|thumb]]
+Izbāndais zūrbrukin '''<tt>[[:\$1]]</tt>'''.
+Ik etrīnkauts zūrbrukis ast šī subā grafīki, kawīda en ōrginalu debban, tū ni turri enkraūtun papilniminan miniatūrin.",
+'file-thumbnail-no' => "Zūrbrukes pabilisnā pagaūne si sen '''<tt>\$1</tt>'''.
+Perwaidinna di, kāi sta ast mazzinta grafīki \"(thumbnail)\".
+Ik turri tū šan grafīkin en pilnasmu debban, enkraūneis din. Ik tū kwaitēi enkraūtun šan, kitawīdinais zūrbrukes pabilīsnan.",
+'fileexists-forbidden' => 'Zūrbrukis sen stawīdan pabilīsnan jāu ekzistijja be ni mazzi būtwei kirsāi peisātan.
+Ik tū kwaitēi enkraūtun zūrbrukin, ettreppais be enkraūneis tennan etkūmps sen kittan pabilīsnan. [[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Zūrbrukis sen šin emnin jau ekzistijja en dallautan repōzitōrijan stēisan zūrbrukin.
+Ik tū ainatīngi kwaitēi enkraūtun šin zūrbrukin, ettreppais be tērpaus nāunan emnin.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Šis zūrbrukis ast kōpija {{PLURAL:$1|šisse zūrbrukin|šēisan zūrbrukin}}:',
+'file-deleted-duplicate' => 'Zūrbrukis idēntiskas sen šin zūrbrukin ([[$1]]) pastāi ankstāis āupausintan.
+Pirzdau tālis ēisnan, tebbei prawerru izbandātun šisse zūrbrukes āupausinsenin istōrijan.',
+'successfulupload' => 'Zūrbrukes enkraūsenis izpalla',
+'uploadwarning' => 'Ēmpirssergīsenis ezze enkraūsnan',
+'uploadwarning-text' => 'Madli kitawīdinais zūrbukes ebpeisāsenis be bandais etkūmps',
+'savefile' => 'Enpeisāis zūrbrukin',
+'uploadedimage' => 'ast enkraūwuns(si) "[[$1]]"',
+'overwroteimage' => 'ast enkraūwuns(si) nāunan wersiōnin stesse "[[$1]]"',
+'uploaddisabled' => 'Zūrbrukin enkraūsna izklaūtan',
+'uploaddisabledtext' => 'Zūrbrukin enkraūsna pastāi izklaūtan.',
+'php-uploaddisabledtext' => 'Zūrbrukin enkraūsna ast drēuditan en PHP.
+Izbāndais ensadīnsenin „file_uploads”.',
+'uploadscripted' => 'Zūrbrukis turri ēn sen HTML anga skrīptan kōdan, kawīds mazzi būtwei blāndewingi skaitātan pra lasātlin.',
+'uploadvirus' => 'Šis zūrbrukis turri ēn sen wīrusan! Malkai: $1',
+'upload-source' => 'Appus zūrbrukis',
+'sourcefilename' => 'Wurā zūrbrukes pabilīsna:',
+'sourceurl' => 'Appus URL:',
+'destfilename' => 'Nāuna zūrbrukes pabilisnā:',
+'upload-maxfilesize' => 'Maksimālin zūrbrukes debban: $1',
+'upload-description' => 'Zūrbrukes ebpeisāsenis',
+'upload-options' => 'Enkraūsnas opciōnis',
+'watchthisupload' => 'Nadirēis šin zūrbrukin',
+'filewasdeleted' => 'Zūrbrukis sen šan pabilīsnan ekzistīwuns, adder pastāi āupausintan.
+Pirzdau tū wīrst din etkūmps enkraūwuns(si), izbāndais $1.',
+'upload-wasdeleted' => "'''Ēmpirssergīsenis:''' Tu enkraūne zūrbrukin, kawīds bēi jāu āupausintan.'''
+
+Tebbei prawerru prestun, anga ast tikrōmiskan ēmpirsin sadīntun enkraūtun šin zūrbrukin.
+Šisse zūrbrukes āupausisnas registerin ast waidīntan zemmais.",
+'filename-bad-prefix' => "Enkraūtas zūrbrukes pabilisnā pagaūne si sen '''\"\$1\"'''. Sta ast nidekskriptīwa pabilisnā kawīda ast preipeisātan autōmatiskai pra digitālins kāmerans.
+Madli etrīnkais swajasmu zūrbrukin spārtais deskriptīwan pabilīsnan.",
+
+'upload-proto-error' => 'Nitikrōmiskan prōtokulin',
+'upload-proto-error-text' => 'Iztāliska enkraūsna izkinina, kāi URL adressi pagaūlai si sen <code>http://</code> anga <code>ftp://</code>.',
+'upload-file-error' => 'Ēntrewingi blānda',
+'upload-file-error-text' => 'Ēntrewingi blānda tikka prēi kīsmingiskas zūrbrukes teīksenes izbāndasnan en sērweŗu.
+Drāugaus sen [[Special:ListUsers/sysop|sīstemas perwaldītajan]].',
+'upload-misc-error' => 'Niwaīsta enkraūsnas blānda',
+'upload-misc-error-text' => 'Tikka niwaīsta blānda enkērdas enkraūsenes.
+Izbandāis, anga padāta URL adressi ast tikrōmiskan be preiēiminan be bandāis etkūmps.
+Ik prōblaman wīrst āntrinus, drāugaus sen [[Special:ListUsers/sysop|sīstemas perwaldītajan]].',
+'upload-unknown-size' => 'Niwaīstan debban',
+'upload-http-error' => 'HTTP blānda tikka: $1',
+
+# img_auth script messages
+'img-auth-nofile' => 'Zūrbrukis "$1" ni ekzistijja.',
+'img-auth-noread' => 'Tērpautajs ni turri preiēisenin kāi skaitālai "$1".',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL adressi ni kakīnaminan',
+'upload-curl-error6-text' => 'Padāta URL adressi ni ast kakīnaminan. Izbāndais anga padāta URL adressi ast tikrōminan be anga padātan pāusan ast preiēiminan.',
+'upload-curl-error28' => 'Per ilgs enkraūsenis',
+'upload-curl-error28-text' => 'Per ilgā sērweres etrāsenes kerdā.
+Izbāndais anga pāusan dīla, gēides delli minūtins be izbāndais etkūmps.
+Tu mazzi dīgi izbandātun kaddan sērweris ast mazzais ensegītan.',
+
+'license' => 'Licēnci:',
+'license-header' => 'Licēnci:',
+'nolicense' => 'Ni etrīnkā di',
+'license-nopreview' => '(Pirmadirā ni preiēiminan)',
+'upload_source_url' => '(tikrōmiska, perōnewingi preiēimina URL adressi)',
+'upload_source_file' => ' (zurbrūkis en twāise kōmputeŗu)',
+
+# Special:ListFiles
+'listfiles-summary' => 'Šin speciālin pāusan waidinna wissans enkraūtans zūrbrukins.
+Auprestaminai panzdaumai enkraūtai zūrbrukei ast waidīntan en listis pagaūseņu.
+Gnessenin na kōlunis tītelin kitawīdina rīkan.',
+'listfiles_search_for' => 'Laukīs zurbrūkin sen pabilīsnan:',
+'imgfile' => 'zurbrūkis',
+'listfiles' => 'Zūrbrukin listi',
+'listfiles_date' => 'Dātan',
+'listfiles_name' => 'Emmens',
+'listfiles_user' => 'Tērpautajs',
+'listfiles_size' => 'Debban',
+'listfiles_description' => 'Ebpeisāsenis',
+'listfiles_count' => 'Wersiōnis',
+
+# File description page
+'file-anchor-link' => 'Zūrbrukis',
+'filehist' => 'Zūrbrukes istōrija',
+'filehist-help' => 'Gnetteis na dātan/kērdan kāi widālai, kāigi zūrbrukis pawaidinna en šissei kērdan.',
+'filehist-deleteall' => 'āupausinais wissans',
+'filehist-deleteone' => 'āupausinais',
+'filehist-revert' => 'etwārtai wartinnais',
+'filehist-current' => 'bigānts',
+'filehist-datetime' => 'Dātan/Kerdā',
+'filehist-thumb' => 'Miniatūri',
+'filehist-thumbtext' => 'Wersiōnis iz $1 miniatūri',
+'filehist-nothumb' => 'Nist miniatūri',
+'filehist-user' => 'Tērpautajs',
+'filehist-dimensions' => 'Ermattausnas',
+'filehist-filesize' => 'Zūrbrukes debban',
+'filehist-comment' => 'Kumentārs',
+'filehist-missing' => 'Zūrbrukis nisātaui',
+'imagelinks' => 'Autengīnsenei prei zūrbrukin',
+'linkstoimage' => '{{PLURAL:$1|Šin pāusan|Šāi pāusai}} autenginna prēi šin zūrbrukin:',
+'linkstoimage-more' => 'Tūls nikāi $1 {{PLURAL:$1|pāusan|pāusai}} autenginna prei šin zūrbrukin.
+Zemmaisi listi waidinna tēr {{PLURAL:$1|pirman autengīnsenin|pirmans $1 autengīnsenins}} prei šin zūrbrukin.
+Preiēiminan ast dīgi [[Special:WhatLinksHere/$2|pilna listi]].',
+'nolinkstoimage' => 'Nist pāusai autengīntai prei šin zūrbrukin.',
+'morelinkstoimage' => 'Waidinnais [[Special:WhatLinksHere/$1|tūls autengīnsenins]] prēi šin zūrbrukin.',
+'redirectstofile' => '{{PLURAL:$1|Šis zūrbrukis|Šai zūrbrukei}} prawedda prei šin zūrbrukin:',
+'duplicatesoffile' => '{{PLURAL:$1|Šis zūrbrukis ast kōpija|Šai zūrbrukei ast kōpijas}} stesse zūrbrukin ([[Special:FileDuplicateSearch/$2|tūls informaciōnis]]):',
+'sharedupload' => 'Šis zūrbrukis ast en $1 be mazzi būtwei tērpautan en kitēimans prōjaktans.',
+'filepage-nofile' => 'Zūrbrukis sen stawīdan pabilīsnan ni ekzistijja.',
+'filepage-nofile-link' => 'Zūrbrukis sen stawīdan pabilīsnan ni ekzistijja, adder tu mazzi [$1 enkraūtun din].',
+'uploadnewversion-linktext' => 'Enkraūneis nāunaisin šisse zūrbrukes wersiōnin',
+'shared-repo-from' => 'iz $1',
+'shared-repo' => 'dallautan repōzitōrijan',
+
+# File reversion
+'filerevert' => 'Etwārtai wartinnais $1',
+'filerevert-legend' => 'Etwārtai wartinnais pirzdauman zūrbrukes wersiōnin',
+'filerevert-intro' => "Tu skatta etwārtai wartīntun zūrbrukin '''[[Media:$1|$1]]''' prei [$4 wersiōnin iz $3, $2].",
+'filerevert-comment' => 'Kumentārs',
+'filerevert-defaultcomment' => 'Etwārtai wartinnā di wersiōnin iz $2, $1',
+'filerevert-submit' => 'Etwārtai wartinnais',
+'filerevert-success' => "Zurbrūkis '''[[Media:$1|$1]]''' pastāi etwārtai wartīntan prei [$4 wersiōnin iz $3, $2].",
+'filerevert-badversion' => 'Nist pirzdauma lōkala wersiōni šisse zūrbrukin sen padātan dātan.',
+
+# File deletion
+'filedelete' => 'Āupausinais $1',
+'filedelete-legend' => 'Āupausinais zūrbrukin',
+'filedelete-intro' => "Tu skatta āupausintun zūrbrukin '''[[Media:$1|$1]]''' ēmpiri sen pastippan tenesse istōrijan.",
+'filedelete-intro-old' => "Tū āupausina zurbrūkes '''[[Media:$1|$1]]''' wersiōnin iz [$4 $3, $2].",
+'filedelete-comment' => 'Brewīnsli:',
+'filedelete-submit' => 'Āupausinais',
+'filedelete-success' => "'''$1''' ast āupausintan.",
+'filedelete-success-old' => "Zūrbrukes '''[[Media:$1|$1]]''' wersiōni iz $3, $2 ast āupausintan.",
+'filedelete-nofile' => "'''$1''' ni ekzistijja",
+'filedelete-nofile-old' => "Ni ast arkīwita wersiōni stesse '''$1''' sen padātans attributans.",
+'filedelete-otherreason' => 'Kitā (papilnimina) brewīnsli:',
+'filedelete-reason-otherlist' => 'Kitā brewīnsli',
+'filedelete-reason-dropdown' => '*Ukadeznas brewīnslis stesses āupausinsnan
+** Autōras tikrōmis pratrepsenis
+** Dwigubbints zūrbrukis',
+'filedelete-edit-reasonlist' => 'Redigīs listin stēisan zūrbrukes āupausinsenes brewīnslin',
+
+# MIME search
+'mimesearch' => 'MIME laukīsna',
+'mimesearch-summary' => 'Šin pāusan wērpja laukīsnan stēisan zurbrūkin pa tenēisan MIME tīpan.
+Tērpausna: ēnturas_tīps/pōtips, perw. <tt>image/jpeg</tt>.',
+'mimetype' => 'MIME tīps',
+'download' => 'kraūneis',
+
+# Unwatched pages
+'unwatchedpages' => 'Ninadirītai pāusai',
+
+# List redirects
+'listredirects' => 'Prawessenin listi',
+
+# Unused templates
+'unusedtemplates' => 'Nitērpautai šablōnai',
+'unusedtemplatestext' => 'Zemmais ast listi wisēisan pāusan en {{ns:template}} tītelin plattibei, kawīdai ni ast tērpautan pra kittans pāusans. Izbāndais kittans autengīnsenins prei šablōnins, pirzdau tū wīrst āupausinuns šin pāusan',
+'unusedtemplateswlh' => 'kitāi autengīnsenei',
+
+# Random page
+'randompage' => 'Prēipalingi pāusan',
+'randompage-nopages' => 'Ni ast pāusai en {{PLURAL:$2|ripīntei tītelin plattibin|ripīntimans tītelin plattibins}}: $1',
+
+# Random redirect
+'randomredirect' => 'Prēipalingis prawessenis',
+'randomredirect-nopages' => 'Ni ast prawessenei en tītelin plattibei "$1".',
+
+# Statistics
+'statistics' => 'Statistiki',
+'statistics-header-pages' => 'Pāusan statistiki',
+'statistics-header-edits' => 'Redigīsenin statistiki',
+'statistics-header-views' => 'Kāimalukisenin statistiki',
+'statistics-header-users' => 'Tērpautajan statistiki',
+'statistics-header-hooks' => 'Kitā statistiki',
+'statistics-articles' => 'Ēnturas pāusai',
+'statistics-pages' => 'Pāusai',
+'statistics-pages-desc' => 'Wisāi pāusai en wiki, ebimmantei diskusiōnis pāusai, prawessenei, be t.t.',
+'statistics-files' => 'Enkraūtai zūrbrukei',
+'statistics-edits' => 'Pāusas redigīsnas ezze tikseņu stesse {{SITENAME}}',
+'statistics-edits-average' => 'Sirzds gīrbis stēisan redigīsenin per pāusan',
+'statistics-views-total' => 'Gīrbis wisēisan kāimalukisenei:',
+'statistics-views-peredit' => 'Gīrbis stēisan kāimalukisenin per redigīsenin',
+'statistics-jobqueue' => '[http://www.mediawiki.org/wiki/Manual:Job_queue endāsnan rīkas] ilgan',
+'statistics-users' => 'Registrītai [[Special:ListUsers|tērpautajai]]',
+'statistics-users-active' => 'Aktīwai tērpautajai',
+'statistics-users-active-desc' => 'Tērpautajai sēntei aktīwai en {{PLURAL:$1|panzdauman dēinan|panzdaumans dēinans}}',
+'statistics-mostpopular' => 'Ukadeznimai kāimalukitai pāusai',
+
+'disambiguations' => 'Ainapreslinsnas pāusai',
+'disambiguationspage' => 'Template:Ainapreslinsna',
+'disambiguations-text' => "Zemmaišai pāusai autenginna prei '''ainapreslinsnas pāusan'''.
+Tenēimans prawerru autengīntun entikriskai prei pāusas ēnturan. </br>
+Pāusan ast laikātan per ainapreslinsnan pāusan ik tennan tērpaui šablōnin prei kawīdan autenginna [[MediaWiki:Disambiguationspage]]",
+
+'doubleredirects' => 'Dwiggubai prawessenei',
+'doubleredirectstext' => 'Zemmais ast listi wisēisan pāusan sen prawessenins en pāusans, kawīdai prawedda en kittan pāusan.
+Erainā rindā turri ēn sen autengīnsenins en pirman be āntran prawessenin, tīt dīgi autengīnsenin kwēi wedda āntars prawessenis. Jāuku panzdaums autengīnsenin wedda en pāusan, en kawīdan prawerru prawestun pirmasmu pāusan.
+<s>Praglaubātai</s> prawessenei ast reparītan.',
+'double-redirect-fixed-move' => 'pāusan [[$1]] pastāi praskajjintan.
+Teinū tennan prawedda prei [[$2]].',
+'double-redirect-fixer' => 'Prawessenin tikrintajs',
+
+'brokenredirects' => 'autēnstai prawessenei',
+'brokenredirectstext' => 'Ripīntei prawessenei wedda prei niekzistīntins pāusans.',
+'brokenredirects-edit' => 'redigīs',
+'brokenredirects-delete' => 'āupausinais',
+
+'withoutinterwiki' => 'Pāusai šlāit autengīnsenins prei prōjaktans en kitēimans billins',
+'withoutinterwiki-summary' => 'Zemmaišai pāusai ni autenginna prei wersiōnins en kitēimans billins.',
+'withoutinterwiki-legend' => 'Prefiksan',
+'withoutinterwiki-submit' => 'Waidinnais',
+
+'fewestrevisions' => 'Pāusai sen ukamazzan gīrbin stēisan wersīonin',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bāits|bāitai}}',
+'ncategories' => '$1 {{PLURAL:$1|kategōrija|kategōrijas}}',
+'nlinks' => '$1 {{PLURAL:$1|autengīnsenis|autengīnsenei}}',
+'nmembers' => '$1 {{PLURAL:$1|streīpstus|streīpstai}}',
+'nrevisions' => '$1 {{PLURAL:$1|wersiōni|wersiōnis}}',
+'nviews' => '$1 {{PLURAL:$1|kāimalukisenis|kāimalukisenei}}',
+'specialpage-empty' => 'Ni ast rezultātai per šin repōrtan.',
+'lonelypages' => 'Ainaseīlingis pāusai',
+'lonelypagestext' => 'Prēi zemaisins pāusans ni autenginna niaīnan kittan pāusan anga tenēi ni autenginna prei niaīnan kittan pāusan en {{SITENAME}}.',
+'uncategorizedpages' => 'Nikategōrizitai pāusai',
+'uncategorizedcategories' => 'Nikategōrizitas kategōrijas',
+'uncategorizedimages' => 'Nikategōrizitai zūrbrukei',
+'uncategorizedtemplates' => 'Nikategōrizitas šablōnis',
+'unusedcategories' => 'Nitērpautas kategōrijas',
+'unusedimages' => 'Nitērpautai zūrbrukei',
+'popularpages' => 'Ukapōpularai pāusai',
+'wantedcategories' => 'Palaipsītas kategōrijas',
+'wantedpages' => 'Palaipsītai pāusai',
+'wantedpages-badtitle' => 'Nitikrōmiskas tītels sirzdau rezultātans: $1',
+'wantedfiles' => 'Palaipsītai zūrbrukei',
+'wantedtemplates' => 'Palaipsītas šablōnis',
+'mostlinked' => 'Pāusai, prēi kans ukadeznimai autenginna di',
+'mostlinkedcategories' => 'Kategōrijas, prēi kans ukadeznimai autenginna di',
+'mostlinkedtemplates' => 'Šablōnis, prēi kans ukadeznimai autenginna di',
+'mostcategories' => 'Pāusai sen ukadebban gīrbin stēisan tērpautajan',
+'mostimages' => 'Zūrbrukei prei kawīdans ukadeznimai autenginna di',
+'mostrevisions' => 'Pāusai sen ukadebban gīrbin stēisan wersiōnin',
+'prefixindex' => 'Wisāi pāusai sen prefiksan',
+'shortpages' => 'īnsai pāusai',
+'longpages' => 'Ilgai pāusai',
+'deadendpages' => 'Pāusai šlāit ēntrewingins autengīnsenins',
+'deadendpagestext' => 'Zemmaišai pāusai ni autenginna prei kittans pāusans en {{SITENAME}}.',
+'protectedpages' => 'Pakūnstai pāusai',
+'protectedpages-indef' => 'Tēr pāusai pakūnstai per wisaddan',
+'protectedpages-cascade' => 'Tēr pāusai sen weldītan pakūnsenin.',
+'protectedpagestext' => 'Šāi pāusai ast pakūnstan prīki praskajjinsnan anga redigīsnan.',
+'protectedpagesempty' => 'Ni ast tēnti pāusai pakūnstan sen padātans parāmetrins.',
+'protectedtitles' => 'Pakūstai pāusan tītelai',
+'protectedtitlestext' => 'Ripīntei pāusan tītelai ast pakūnstan prīki teīksnan',
+'protectedtitlesempty' => 'Niaīnai tītelai ast tēntiskai pakūnstan sen šins parāmeterins.',
+'listusers' => 'Tērpautajan listi',
+'listusers-editsonly' => 'Waidinnais tēr tērpautajans sen redigīsenins',
+'listusers-creationsort' => 'Rikaūjais pa teīksnas dātan',
+'usereditcount' => '$1 {{PLURAL:$1|redigīsenis|redigīsenei}}',
+'usercreated' => 'Teīktan $1, $2',
+'newpages' => 'Nāunai pāusai',
+'newpages-username' => 'Tērpautajas pabilisnā:',
+'ancientpages' => 'Ukawūraišai pāusai',
+'move' => 'Praskajjinais',
+'movethispage' => 'Praskajjinais šin pāusan',
+'unusedimagestext' => 'Ripīntei zūrbrukei ekzistijja, adder ni ast tērpautan en niainasmu pāusan.
+Kitāi pāusai mazzi autengīntun prei šins zūrbrukins pra entikriskans URL adressins be stesse paggan en šissei listin mazzi būtwei zūrbrukei, kawīdai ast tērpautan.',
+'unusedcategoriestext' => 'Zemmaišai kategōrijai ekzistijja, prōpaus niaīnai pāusai anga kategōrijas tērpaui tennans.',
+'notargettitle' => 'Ōbjaktan ni ekzistijja',
+'notargettext' => 'Ni padāi di pāusan anga tērpautajan, nō kan dīlalai šis dīlasenis.',
+'nopagetitle' => 'Ni ast pāusan sen stawīdan adressin',
+'nopagetext' => 'Padāta adressi ni ekzistijja.',
+'pager-newer-n' => '{{PLURAL:$1|nāunaisis 1|nāunaišai $1}}',
+'pager-older-n' => '{{PLURAL:$1|wūraisis 1|wūraišai $1}}',
+
+# Book sources
+'booksources' => 'Lāiskai',
+'booksources-search-legend' => 'Laukīs lāiskiskans appuns',
+'booksources-go' => 'Waidinnais',
+'booksources-text' => 'Zemmais ast listi stēisan autengīnsenin prei kittans pāusans, kawīdai perdāst nāunans be tērpautans lāiskans be mazzi turītun talāišins informaciōnins ezze lāiskan laukītan pra tin:',
+'booksources-invalid-isbn' => 'Padāta ISBN nummeri ast erzinātan kāigi nitikrōmiska. Izbāndais, anga padāta nummeri preitāra prei nummerin īmtan iz appun.',
+
+# Special:Log
+'specialloguserlabel' => 'Tērpautajs:',
+'speciallogtitlelabel' => 'Tītels:',
+'log' => 'Registerei',
+'all-logs-page' => 'Wisāi perōniskai preiēiminai registerei',
+'alllogstext' => 'Drāugan registerin per wissans dīlasenins en {{SITENAME}}.
+Tu mazzi anzitun rezultātans etrīnkantei registeres tīpan, tērpautajas pabilīsnan anga pāusas tītelin.',
+'logempty' => 'Ni ast passauwintai registeres elāmentai.',
+'log-title-wildcard' => 'Laukīs tītelins pagauwīntins sen šin tekstan',
+
+# Special:AllPages
+'allpages' => 'Wisāi pāusai',
+'alphaindexline' => 'ezze $1 ērgi $2',
+'nextpage' => 'Ripīntan pāusan ($1)',
+'prevpage' => 'Pirzdauman pāusan ($1)',
+'allpagesfrom' => 'Waidinnais pāusans pagaūwintins si sen:',
+'allpagesto' => 'Waidinnais pāusans wangīntans sen:',
+'allarticles' => 'Wisāi pāusai',
+'allinnamespace' => 'Wisāi pāusai (en tītelin plattibei: $1)',
+'allnotinnamespace' => 'Wisāi pāusai (šlāit dins en tītelin plattibei: $1)',
+'allpagesprev' => 'Panzdauman',
+'allpagesnext' => 'Ripīntin',
+'allpagessubmit' => 'Waidinnais',
+'allpagesprefix' => 'Waidinnais pāusans sen tītelins pagaūwintins sen:',
+'allpagesbadtitle' => 'Padāts tītels ast nitikrōmiskan, turri ēn sen sirzdauprōjaktiskan anga sirzdaubilliskan prefiksan. Tennan mazzi dīgi turritun ēn sen aīnan anga tūls zentlins, kawīdan tērpausenis en tītelimans ni ast preiwērptan.',
+'allpages-bad-ns' => 'En {{SITENAME}} ni ast tītelin plattibi "$1".',
+
+# Special:Categories
+'categories' => 'Kategōrijas',
+'categoriesfrom' => 'Waidinnais kategōrijans pagaūwintins sen:',
+'special-categories-sort-count' => 'rikaūjais pa gīrbin',
+'special-categories-sort-abc' => 'rikaūjais pa alfabētan',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Āupausinta tērpautajas ēndija',
+'deletedcontributions-title' => 'Āupausinta tērpautajas ēndija',
+'sp-deletedcontributions-contribs' => 'ēndija',
+
+# Special:LinkSearch
+'linksearch' => 'Izwinandai autengīnsenei',
+'linksearch-pat' => 'Laukīsnas šablōni:',
+'linksearch-ns' => 'Emninplattibi:',
+'linksearch-ok' => 'Laukīs',
+'linksearch-text' => 'Mazīngi tērpautun tulapresliskan simbōlin "*" - perwaidīnsnai „*.wikipedia.org”<br />
+Ebšlūzitai prōtokulai: <tt>$1</tt>',
+'linksearch-line' => 'Prei $1 autenginna $2',
+'linksearch-error' => 'Mazīngi tērpautun tulapresliskan simbōlin "*" tēr en hostas pabilīsnas pagaūseņu.',
+
+# Special:ListUsers
+'listusersfrom' => 'Waidinnais tērpautajans pagaūwintei ezze:',
+'listusers-submit' => 'Waidinnais',
+'listusers-noresult' => 'Ni aupalā di niaīnan tērpautajan.',
+'listusers-blocked' => '(blōkitan)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktīwan tērpautajan listi',
+'activeusers-count' => '$1 {{PLURAL:$1|redigīsenis|redigīsenei}} en {{PLURAL:$3|panzdauman dēinan|$3 panzdaumans dēinans}}',
+'activeusers-from' => 'Waidinnais tērpautajans pagaūwintins sen:',
+'activeusers-hidebots' => 'Kliptinais bōtans',
+'activeusers-hidesysops' => 'Kliptinais perwaldītajans',
+'activeusers-noresult' => 'Ni aupalā di tērpautajans',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Nāunai tērpautajai',
+'newuserlogpagetext' => 'Sta ast registerin stēisan nāunai teīkatan rekkenan stēisan tērpautajan',
+'newuserlog-byemail' => 'kliptaswīrds tengīntan pra e-mail',
+'newuserlog-create-entry' => 'nāunas tērpautajas rekkens',
+'newuserlog-create2-entry' => 'ast teīkuns(si) rekkenan $1',
+'newuserlog-autocreate-entry' => 'Rekkens teīktan autōmatiskai',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Tērpautajan gruppin enwarīnsenei',
+'listgrouprights-summary' => 'Zemmais ast listi stēisan tērpautajan gruppin definītan en šissei wiki sen enwarīnsenins preipeisātan tenēimans.
+Izbāndais pāausan sen [[{{MediaWiki:Listgrouprights-helppage}}|papilniminans informaciōnins]] ezze enwarīnsenins.',
+'listgrouprights-group' => 'Gruppi',
+'listgrouprights-rights' => 'Enwarīnsenei',
+'listgrouprights-helppage' => 'Help:Enwarīnsenei stēisan gruppin',
+'listgrouprights-members' => '(gruppis streīpstan listi)',
+'listgrouprights-addgroup' => 'Mazīngi preidātun prei {{PLURAL:$2|gruppin|gruppins:}} $1',
+'listgrouprights-removegroup' => 'Mazīngi āupausintun iz {{PLURAL:$2|gruppin|gruppins:}} $1',
+'listgrouprights-addgroup-all' => 'Mazīngi preidātun prei eraīnan gruppin',
+'listgrouprights-removegroup-all' => 'Mazīngi āupausintun iz eraīnan gruppin',
+'listgrouprights-addgroup-self' => 'Preidāis {{PLURAL:$2|gruppin|gruppins}} prei swajjan rekkenan: $1',
+'listgrouprights-removegroup-self' => 'Āupausinais {{PLURAL:$2|gruppin|gruppins}} iz swajjan rekkenan: $1',
+'listgrouprights-addgroup-self-all' => 'Preidāis wissans gruppins prei swajjan rekkenan',
+'listgrouprights-removegroup-self-all' => 'Āupausinais wissans gruppins iz swajjan rekkenan',
+
+# E-mail user
+'mailnologin' => 'Ni ast adressi',
+'mailnologintext' => 'Tu turri [[Special:UserLogin|enēitwei]] be turītun aktuālin e-mail adressin en twajamans [[Special:Preferences|pirminiskwans]] kāi tengīnlai e-mailins kitēimans tērpautajans.',
+'emailuser' => 'Tenginnais e-mailin šismu tērpautajan',
+'emailpage' => 'Tenginnais e-mailin tērpautaju',
+'emailpagetext' => 'Tu mazzi tērpautun zemmaisin fōrmularan kāi tengīntun e-mail waīstin šismu tērpautaju.
+E-mail adressi kawīdan tū enpeisāi en [[Special:Preferences|twajjans pirminiskwans]] wīrst tikkusi en "Ezze" lāuku be gauwiks wīrst mazīwuns ti etrātwei entikriskai.',
+'usermailererror' => 'Pustis ōbjaktan ast etwārtai wartinnun blāndan:',
+'defemailsubject' => 'e-mail waīstis ezze {{SITENAME}}',
+'noemailtitle' => 'Ni ast e-mail adressi',
+'noemailtext' => 'Šis tērpautajs ni ast dāwuns tikrōmiskan e-mail adressin.',
+'nowikiemailtitle' => 'E-mailan gaūsna ni preiwērptan',
+'nowikiemailtext' => 'Šis tērpautajs ni kwaitēi gaūtun e-mail waīstins ezze kitēimans tērpautajans.',
+'email-legend' => 'Tenginnails e-mailin kitsmu {{SITENAME}} tērpautajan',
+'emailfrom' => 'Ezze:',
+'emailto' => 'Stesmu:',
+'emailsubject' => 'Tēman:',
+'emailmessage' => 'Waīstis:',
+'emailsend' => 'Tenginnais',
+'emailccme' => 'Tenginnais mi šisses waīstis kōpijan.',
+'emailccsubject' => 'Twājase waīstis stesmu $1 kōpija : $2',
+'emailsent' => 'Waīštis pastāi tengīntan',
+'emailsenttext' => 'Twajā waīstis pastāi tengīntan.',
+'emailuserfooter' => 'Šī e-mail waīstis pastāi tengīntan stesmu $2 pra $1 tērpawintei funkciōnin "Tenginnais e-mail waīstin šismu tērpautajan" en {{SITENAME}}.',
+
+# Watchlist
+'watchlist' => 'Listi stēisan nadirītan',
+'mywatchlist' => 'Listi stēisan nadirītan',
+'watchlistfor' => "(per '''$1''')",
+'nowatchlist' => 'Twajā listi stēisan nadirītan pāusan ast pāustan.',
+'watchlistanontext' => 'Madli $1, kāi widālai elāmentans stesse listin stēisan nadirītan.',
+'watchnologin' => 'Ni assei engūbun',
+'watchnologintext' => 'Tū turri būtwei[[Special:UserLogin|engūbun]], kāi kitawīdintun listin stēisan nadirītan.',
+'addedwatch' => 'Preidātan prei listin stēisan nadirītan',
+'addedwatchtext' => "Pāusan \"[[:\$1]]\" pastāi preidātan prei twajjan [[Special:Watchlist|nadirītan listin]].
+Eraīna šisse pāusas ēnturas kitawīdinsna anga diskusiōnis pāusas sēitan sen tennan kitawīdinsna wīrst būwusi enpeisātan en šissei listin. Pāusas tītels wīrst būwuns '''pastarīntan''' en [[Special:RecentChanges|listei stēisan panzdauman kitawīdinsnan]], kāi lānginlai ti endirītun kitawīdinsnan.",
+'removedwatch' => 'Āupausintan iz listin stēisan nadirītan',
+'removedwatchtext' => 'Pāusan "[[:$1]]" pastāi āupausintan iz [[Special:Watchlist|twajjan listin stēisan āupausintan]].',
+'watch' => 'Nadirēis',
+'watchthispage' => 'Nadirēis šin pāusan',
+'unwatch' => 'Ni nadirēis',
+'unwatchthispage' => 'Wanginnais nadirītun',
+'notanarticle' => 'Sta ni ast artīkels',
+'notvisiblerev' => 'Wersiōni pastāi āupausintan',
+'watchnochange' => 'Niaīnan iz nadirītans pāusans ni bēi redigītan en padātan kērdasetrapan.',
+'watchlist-details' => 'Ast {{PLURAL:$1|$1 pāusan|$1 pāusai}} en twajjai listin stēisan nadirītan, ni gīrbawintei diskusiōnis pāusans.',
+'wlheader-enotif' => '* E-mail pawakīsenei ast enklaūtan.',
+'wlheader-showupdated' => "* Pastāi '''pastarīntan''' pāusai, kawīdai bēi kitawīdintan ezze Twajjai panzdauman tenēisan kāimalukisnan..",
+'watchmethod-recent' => 'Izbandasnā stēisan panzdauman kitawīdisnan sirzdau nadirītans pāusans',
+'watchmethod-list' => 'Izbandasnā stēisan nadirītan pāusan laukīntei panzdaumans kitawīdisnans',
+'watchlistcontains' => 'En twajjai listin stēisan nadirītan ast $1 {{PLURAL:$1|pāusan|pāusai}}.',
+'iteminvalidname' => 'Prōblamans sen elāmentan "$1", nitikrōmiska pabilisnā...',
+'wlnote' => "Zemmais pawaidinnā di {{PLURAL:$1|panzdauman kitawīdisnan|panzdaumans '''$1''' kitawidisnans}} en {{PLURAL:$2|panzdauman stundin|'''$2''' panzdaumans stundins}}.",
+'wlshowlast' => 'Waidinnais panzdaumans $1 stundins, $2 dēinans ($3)',
+'watchlist-options' => 'Nadirītan listis mazīngiskwas',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'As nadirēi...',
+'unwatching' => 'As wanginna nadirītwei...',
+
+'enotif_mailer' => 'Pawakīsenis iz {{SITENAME}}',
+'enotif_reset' => 'Ebzentlinnais wissans pāusans per kāimalukitans',
+'enotif_newpagetext' => 'Sta ast nāunan pāusan.',
+'enotif_impersonal_salutation' => 'tērpautajs stesse {{SITENAME}}',
+'changed' => 'kitawīdintan',
+'created' => 'teīktan',
+'enotif_subject' => 'Pāusan $PAGETITLE en {{SITENAME}} pastāi $CHANGEDORCREATED pra $PAGEEDITOR',
+'enotif_lastvisited' => 'Wīdais en $1 wissans kitawīdinsnans ezze Twajjai panzdauman kāimalukisenin.',
+'enotif_lastdiff' => 'Wīdais en $1 šan kitawīdisnan.',
+'enotif_anon_editor' => 'anōnims tērpautajs $1',
+
+# Delete
+'deletepage' => 'Āupausinais pāusan',
+'confirm' => 'Padrūktinais',
+'excontent' => 'pāusas ēnturs bēi: "$1"',
+'excontentauthor' => 'pāusas ēnturs bēi: "$1" (ainagimmusis autōrs: [[Special:Contributions/$2|$2]])',
+'exbeforeblank' => ' Tēntiskai pāustas pāusas pirzdaums ēnturs: "$1"',
+'exblank' => 'pāusan bēi pāustan',
+'delete-confirm' => 'Āupausinais "$1"',
+'delete-legend' => 'Āupausinais',
+'historywarning' => "'''Nōda:''' Pāusan, kawīdan tū skatta āupausintun, turri {{PLURAL:$1|wūraisin wersiōnin|$1 wūraisins wersiōnins}}:",
+'confirmdeletetext' => 'Tū skatta āupausintun pāusan ēmpiri sen pastippan tenesses istōrijan.
+Izbāndais, anga perarwi kwaitēi tu stan segītun, kāi tū izpresta rīplins, adder ka tū segēi ast preitarīngi sen [[{{MediaWiki:Policy-url}}pōlitikin]].',
+'actioncomplete' => 'Dīlasenis izpilnintan',
+'actionfailed' => 'Dīlasenis ni izpalla',
+'deletedtext' => 'Āupausinā di "<nowiki>$1</nowiki>"
+Wīdais en $2 listin stēisan panzdauman āupausinsenin.',
+'deletedarticle' => 'ast āupausinuns(si) "[[$1]]"',
+'suppressedarticle' => 'ast enkliptinuns(si) "[[$1]]"',
+'dellogpage' => 'Regīsterin stēisan āupausinsenin',
+'dellogpagetext' => 'Zemmais ast panzdauman āupausinsenin listi.',
+'deletionlog' => 'regīsterin stēisan āupausinsenin',
+'reverted' => 'Etwārtai wartinnā di pirzdauman wersiōnin',
+'deletecomment' => 'Brewīnsli:',
+'deleteotherreason' => 'Kitā/papilnimina brewīnsli:',
+'deletereasonotherlist' => 'Kitā brewīnsli',
+'deletereason-dropdown' => 'Ukadeznas āupausinsenes brewīnslis:
+** Autōras mādla
+** Autōran tikrōmin perptrepsenis
+** Wandalizmus',
+'delete-edit-reasonlist' => 'Redigīs āupausinsenes brewīnslins',
+'delete-toobig' => 'Šin pāusan turri spārtai ilgan istōrijan stēisan redigīsenin, kīrsa $1 {{PLURAL:$1|kitawīdisnan|kitawīdisnans}}.
+Tenesse āupausinsenins mazīlai dīlintun ārdisenins en dīlasnan stesse {{SITENAME}} be pastāi arāikintan.',
+
+# Rollback
+'rollback' => 'Etwārtai wartinnais redigīsenin',
+'rollback_short' => 'Etwārtai wartinnais',
+'rollbacklink' => 'etwārtai wartinnais',
+'rollbackfailed' => 'Kitawīdisnas etwārtai wartīnsna ni izpalla',
+'cantrollback' => 'Ni mazīngi etwārtai wartīntun redigīsenin, beggi ast tēr aīna šisse pāusas wersiōni.',
+'editcomment' => "Redigīsenes kumentārs: \"''\$1''\".",
+'revertpage' => 'Etwārtai wartinnā di redigīsenins stesse tērpautajan [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusiōni]]). Etwārtai wartīntas wersiōnis autōrs ast [[User:$1|$1]]',
+'rollback-success' => 'Naīkinā di redigīsenins stesse(s) $1.
+Etwārtai wartinnā di panzdauman wersiōnin, kawīdse autōrs ast $2.',
+
+# Protect
+'protectlogpage' => 'Pakūnstai',
+'protectlogtext' => 'Zemmais ast listi stēisan pakūnsenin ne etkūnsenin stēisan pāusan.
+Kāi widālai listin stēisan tēntiskai pakūnstan pāusan, jaīs en [[Special:ProtectedPages|listin stēisan pakūnstan pāusan]].',
+'protectedarticle' => 'ast pakūntuns(si) "[[$1]]"',
+'modifiedarticleprotection' => 'ast kitawīdinuns(si) pakūnsnas līgmenin per [[$1]]',
+'unprotectedarticle' => 'ast etkūntuns(si) "[[$1]]"',
+'movedarticleprotection' => 'ast praskajjinuns(si) ensadīnsenins stēisan pakūnsenin iz "[[$2]]" en "[[$1]]"',
+'protect-title' => 'Kitawīdinais pakūnsnas līgmenin per "$1"',
+'prot_1movedto2' => '[[$1]] praskajjintan en [[$2]]',
+'protect-legend' => 'Padrūktinais pakūnsnan',
+'protectcomment' => 'Brewīnsli:',
+'protectexpiry' => 'Wangīnsnas kerdā:',
+'protect_expiry_invalid' => 'Wangīnsnas kerdā ast nitikrōmiskan.',
+'protect_expiry_old' => 'Wangīnsnas kerdā ast en pragūbiniskwai.',
+'protect-text' => "Stwi tu mazzi izbandātwei be kitawīdintun pāusas '''<nowiki>$1</nowiki>''' pakūnsnas līgmenin.",
+'protect-locked-blocked' => "Tu ni mazzi kitawīdintun pakūnsnas līgmenin, beggi assei blōkitan.
+Tēntiskas ensadīnsenei per pāusan '''$1''':",
+'protect-locked-dblock' => "Ni mazīngi kitawīdintun pakūnsnas līgmenin, dīlantis dātanbazis blōkisnas paggan.
+Stwi ast bigāntei ensadīnsenei per pāusan '''$1''':",
+'protect-locked-access' => "Twāis rekkens ni turri preiwērpsenin kāi kitawīdinlai pakūnsnas līgmenins per pāusans.
+Stwi ast bigāntei ensadīnsenei per pāusan '''$1''':",
+'protect-cascadeon' => 'Šin pāusan ast tēntiskai pakūnstan beggi ast tērpautan pra {{PLURAL:$1|pāusan sen|pāusans sen}} weldītan pakūnsenin enklaūtan.
+Tu mazzi kitawīdintun šisse pāusas pakūnsnas līgmenin, adder sta ni wīrst endīlinuns na weldītan pakūnsenin.',
+'protect-default' => 'Preiwērpsenis per wissans tērpautajans',
+'protect-fallback' => 'Izkīnina "$1" preiwērpsenin',
+'protect-level-autoconfirmed' => 'Blōkis nāunans be niregistrītans tērpautajans',
+'protect-level-sysop' => 'tēr perwaldītajai',
+'protect-summary-cascade' => 'weldisnā',
+'protect-expiring' => 'wanginna si $1 (UTC)',
+'protect-expiry-indefinite' => 'Per wisaddan',
+'protect-cascade' => 'Pakūnsenes wēldinsna - pakūnteis wissans pāusans ebīmtans en šismu pāusan.',
+'protect-cantedit' => 'Tū ni mazzi kitawīdintun pakūnsnas līgmenin per šin pāusan, beggi tū ni assei enwarīntan kāi tennan redigītun.',
+'protect-othertime' => 'Kitā kerdā:',
+'protect-othertime-op' => 'kitā kerdā',
+'protect-existing-expiry' => 'Tēntiska wangīnsnas kerdā: $3, $2',
+'protect-otherreason' => 'Kitā/papilnimina brewīnsli:',
+'protect-otherreason-op' => 'kitā/papilnimina brewīnsli:',
+'protect-edit-reasonlist' => 'Redigīs pakūnsenin līgmenin',
+'protect-expiry-options' => '1 stūndi:1 hour, 1 deinā:1 day,1 sawaīti:1 week,2 sawaītis:2 weeks,1 mīnss:1 month,3 mīnsai:3 months,6 mīnsai:6 months,1 mettan:1 year,bewāngiskai:infinite',
+'restriction-type' => 'Preiwērpsenis:',
+'restriction-level' => 'Arāikinsnas līgmens:',
+'minimum-size' => 'Min. debban',
+'maximum-size' => 'Maks. debban',
+'pagesize' => '(bāitai)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Redigīs',
+'restriction-move' => 'Praskajjinais',
+'restriction-create' => 'Teīkeis',
+'restriction-upload' => 'Enkraūneis',
+
+# Restriction levels
+'restriction-level-sysop' => 'pastippai pakūnstan',
+'restriction-level-autoconfirmed' => 'delīkiskai pakūnstai',
+'restriction-level-all' => 'ebwīrps līgmens',
+
+# Undelete
+'undelete' => 'Wīdais āupausintans pāusans',
+'undeletepage' => 'Wīdais be etwārai wartinnais āupausintans pāusans',
+'undeletepagetitle' => "'''Zemmais ast āupausintas wersiōnis stesse pāusan [[:$1]]'''.",
+'viewdeletedpage' => 'Wīdais āupausintans wersiōnins',
+'undeletepagetext' => '{{PLURAL:$1|Ripīntin pāusan|$1 Ripīntei pāusai}} pastāi āupausintan, adder aīnat ast en arkīwu be mazzi būtwei etwārtai wartīntun.
+Arkīwan ast periōdiskai skistīntan.',
+'undelete-fieldset-title' => 'Etwārtai wartinnais wersiōnins',
+'undeleteextrahelp' => "Kāi etwārtai wartīnlai pastippan pāusas istōrijan, palikkais wissans pazentlisnans ni etrīnktan be gnetteis '''''Etwārtai wartinnais'''''.
+Kāi delīkiskai etwārtai wartīnlai, pazentlis pazentlisenins prei wersiōnins kawīdans skatta tu etwārtai wartīntun be gnetteis '''''Etwārtai wartinnais'''''.
+Gnettintei '''''Etkraūneis''''' tu wīrst skīstinuns/si kumentāras laūkan be wissans pazentlisenins.",
+'undeleterevisions' => '$1 {{PLURAL:$1|wersiōni|wersiōnis}} arkīwitan',
+'undeletehistory' => 'Kaddan tū etwārtai wartinna pāusan, wissas wersiōnis ast etwārtai wartīntan en istōrijan.
+Ik nāunan pāusan sen stan subban emnin ast būwus teīktan ezze āupausinseņu, etwārtai wartīntas wersiōnis wīrst waidinnušas si en tenesses istōrijan, adder tēntiska wersiōni wīrst palikkusi nikitawīdintan.',
+'undeleterevdel' => 'Etteīksna ni wīrst būwusi izplinintan ik sta dīlinlai āupausinsenin stesse auktuālin pāusan anga zūrbrukin.
+En stawīsmu prēipalin prawerru etzentlitun anga etwārtai wartīntun widāminiskwan stesses ukanāunaisin āupausintan wersiōnin.',
+'undeletehistorynoadmin' => 'Šin pāusan pastāi āupausintan.
+Āupausinsnas brewīnsli ast waidīntan en sentēnsnan zemmais, ēmpiri sen dātan stesse tērpautajan, kawīds redigijja pāusan pirzdau āupausinsenin.
+Āupausintan wersiōnin teksts ast preiēiminan tēr perwaldītajamans.',
+'undelete-revision' => 'Āupausinā di wersiōnin $1 (iz $5, $4) (autōrs $3):',
+'undeleterevision-missing' => 'Nitikrōmiska anga nisātawinta wersiōni.
+Tu mazzi turītun wārgan autengīnsnan anga wersiōni pastāi etwārtai wartīntan anga āupausintan iz arkīwan.',
+'undelete-nodiff' => 'Ni aupalā di pirzdaumans wersiōnins.',
+'undeletebtn' => 'Etwārtai wartinnais',
+'undeletelink' => 'wīdais/etwārtai wartinnais',
+'undeleteviewlink' => 'wīdais',
+'undeletereset' => 'Etkraūneis',
+'undeleteinvert' => 'Etwartinnais pazentlisenin',
+'undeletecomment' => 'Kumentārs:',
+'undeletedarticle' => 'etwārtai wartinna "[[$1]]"',
+'undeletedrevisions' => '{{PLURAL:$1|1 wersiōni|$1 wersiōnis}} etwārtai wartīntan',
+'undeletedrevisions-files' => 'etteīkē di {{PLURAL:$1|1 wersiōnin|$1 wersiōnins}} be {{PLURAL:$2|1 zūrbrukin|$2 zūrbrukins}}',
+'undeletedfiles' => 'ast etteīkuns {{PLURAL:$1|1 zūrbrukin|$1 zūrbrukins}}',
+'cannotundelete' => 'Etgaūsenis ni izpalla;
+Ainunts kits ast jāu etgaūwuns šin pāusan.',
+'undeletedpage' => "'''$1 pastāi etwārtai wartīntan'''
+
+Jaīs en [[Special:Log/delete|āupausinsenin regīsterin]], kāi widālai panzdaumans āupausinsenins be etteīksenins.",
+'undelete-header' => 'Jaīs en [[Special:Log/delete|āupausinsenin regīsterin]], kāi widālai panzdaumai āupausintans pāusans.',
+'undelete-search-box' => 'Laukīs āupausintans pāusans',
+'undelete-search-prefix' => 'Laukīs pāusans pagaūwintins sen:',
+'undelete-search-submit' => 'Laukīs',
+'undelete-no-results' => 'Ni ast preistalīwingei pāusai en āupausisenin arkīwu.',
+'undelete-filename-mismatch' => 'Ni mazīngi etteīktun zūrbrukes wersiōnin sen dātan $1: zūrbrukes pabilīsnas nisandīnga',
+'undelete-bad-store-key' => 'Ni mazīngi etteīktun zūrbrukes wersiōnin sen dātan $1: zūrbrukis nisātau pirzdau āupausinsenin.',
+'undelete-cleanup-error' => 'Tikka blānda prei āupausinsnas stesse nitērpautas arkīwas zūrbrukin "$1".',
+'undelete-missing-filearchive' => 'Ni mazīngi etwārtai wartīntun zūrbrukin sen arkīwas ID $1, beggi tāns ni ast en dātanbazei.
+Mazīngi tāns ast jāu etgaūtan.',
+'undelete-error-short' => 'Tikka blānda prei etwārtai wartīnsnan stesse zūrbrukin: $1',
+'undelete-error-long' => 'Tikka blāndas prei zūrbrukes etwārtai wartīnsnan:
+
+$1',
+'undelete-show-file-confirm' => 'Assei aušaudīwingi, kāi tū kwaitēi widātun āupasintan wersiōnin stesse zūrbrukin "<nowiki>$1</nowiki>" iz $2 $3?',
+'undelete-show-file-submit' => 'Tīt',
+
+# Namespace form on various pages
+'namespace' => 'Emninplattibi:',
+'invert' => 'Etwartinnais etrīnksenin',
+'blanknamespace' => '(Galwas)',
+
+# Contributions
+'contributions' => 'Tērpautajas endīja',
+'contributions-title' => 'Tērpautajas endīja per $1',
+'mycontris' => 'Majā endīja',
+'contribsub2' => 'Per tērpautajan $1 ($2)',
+'nocontribs' => 'Ni aupallā di wersiōnins izpilnintins šins kritērijans.',
+'uctop' => '(panzdauma kitawīdinsna)',
+'month' => 'Pirzdau mīnsan (be ankstāis):',
+'year' => 'Pirzdau mettan (be ankstāis):',
+
+'sp-contributions-newbies' => 'Waidinnais tēr endījan stēisan nāunan tērpautajan',
+'sp-contributions-newbies-sub' => 'Per nāunans tērpautajans',
+'sp-contributions-newbies-title' => 'Nāunan tērpautajan endīja',
+'sp-contributions-blocklog' => 'blōkisnas registerin',
+'sp-contributions-deleted' => 'āupausinta tērpautajas ēndija',
+'sp-contributions-logs' => 'registerei',
+'sp-contributions-talk' => 'diskusiōni',
+'sp-contributions-userrights' => 'Tērpautajan tikrōmin perwaldisnā',
+'sp-contributions-search' => 'Laukīs endījan',
+'sp-contributions-username' => 'IP adressi anga tērpautajas pabilisnā:',
+'sp-contributions-submit' => 'Laukīs',
+
+# What links here
+'whatlinkshere' => 'Ka autenginna stwi',
+'whatlinkshere-title' => 'Pāusan autenginnantei prei "$1"',
+'whatlinkshere-page' => 'Pāusan:',
+'linkshere' => "Ripīntei pāusai autenginna prei '''[[:$1]]''':",
+'nolinkshere' => "Niainan pāusan ni autenginna prei '''[[:$1]]'''.",
+'nolinkshere-ns' => "Niaīnan pāusan ni autenginna prei '''[[:$1]]''' en etrīnktai tītelin plattibin.",
+'isredirect' => 'prawesnas pāusan',
+'istemplate' => 'entensīsenis',
+'isimage' => 'autengīnsenis prei bildin',
+'whatlinkshere-prev' => '{{PLURAL:$1|pirzdauman|pirzdaumai $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|ripīntin|ripīntei $1}}',
+'whatlinkshere-links' => '← autenginna',
+'whatlinkshere-hideredirs' => '$1 prawessenei',
+'whatlinkshere-hidetrans' => '$1 entensīsenei',
+'whatlinkshere-hidelinks' => '$1 autengīnsenei',
+'whatlinkshere-hideimages' => '$1 autengīnsenei prei bildins',
+'whatlinkshere-filters' => 'Filtrai',
+
+# Block/unblock
+'blockip' => 'Blōkis tērpautajan',
+'blockip-title' => 'Blōkis tērpautajan',
+'blockip-legend' => 'Blōkis tērpautajan',
+'blockiptext' => 'Tērpaus zemmaisin fōrmularan, kāi blōkilai enpeisāsenes mazīngiskwan iz kōnkretai IP adressin anga kōnkretasmu tērpautajan.
+Blōkitun prawerru tēr kāi ebsergītun ezze wandalisman be preitarīngi sen [[{{MediaWiki:Policy-url}}|pōlitikin]].
+Padāis brewīnslin zemmais (p. endījanei tītelins stēisan wandalizītan pāusan).',
+'ipaddress' => 'IP adressi:',
+'ipadressorusername' => 'IP adressi anga tērpautajas pabilisnā:',
+'ipbexpiry' => 'Blōkisenis wanginna:',
+'ipbreason' => 'Brewīnsli:',
+'ipbreasonotherlist' => 'Kitā brewīnsli',
+'ipbanononly' => 'Blōkis tēr anōnimans tērpautajans',
+'ipbcreateaccount' => 'Ebsergēis ezze rekkenas teīkseņu',
+'ipbemailban' => 'Ebsergēis ezze e-mailas tengīnsnas mazīngiskwai',
+'ipbenableautoblock' => 'Blōkis panzdauman šisse tērpautajas IP adressin be autōmatiskai wissans ripīntins, iz kawīdans tāns wīrst bandāwuns redigītun',
+'ipbsubmit' => 'Blōkis šin tērpautajan',
+'ipbother' => 'Kitā kerdā',
+'ipboptions' => '2 stūndis:2 hours, 1 deinā:1 day,3 dēinas:3 days,1 sawaīti:1 week,2 sawaītis:2 weeks,1 mīnss:1 month,3 mīnsai:3 months,6 mīnsai:6 months,1 mettan:1 year,bewāngiskai:infinite',
+'ipbotheroption' => 'kits',
+'ipbotherreason' => 'Kitā/papilnimina brewīnsli:',
+'ipbhidename' => 'Kliptinais tērpautajas pabilīsnan en redigīsenimans be listimans',
+'ipbwatchuser' => 'Nadirēis šisse tērpautajas persōniskan pāusan be diskusiōnis pāusan',
+'ipballowusertalk' => 'Preiwērpjais šismu tērpautajan redigītun swajjan diskusiōnis pāusan, kaddan ast blōkitan',
+'ipb-change-block' => 'Kitawīdinais blōkisenes ensadīnsenins',
+'badipaddress' => 'Nitikrōmiska IP adressi',
+'blockipsuccesssub' => 'Blōkisenis izpalla',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] pastāi blōkitan.<br />
+Jaīs en [[Special:IPBlockList|listin stēisan IP adressin]] kai widālai blōkisenins.',
+'ipb-edit-dropdown' => 'Redigīs blōkisenes brewīnslins',
+'ipb-unblock-addr' => 'Etblōkis $1',
+'ipb-unblock' => 'Etblōkis tērpautajas pabilīsnan anga IP adressin',
+'ipb-blocklist-addr' => 'Ekzistīntei $1 blōkisenei',
+'ipb-blocklist' => 'Wīdais ekzistīntins blōkisenins',
+'ipb-blocklist-contribs' => '$1 endīja',
+'unblockip' => 'Etblōkis tērpautajan',
+'unblockiptext' => 'Tērpaus zemmaisin fōrmularan, kāi etwārtai wartīnlai redigīsnas mazīngiskwan iz ankstāis blōkitan IP adressin anga blōkitasmu tērpautajan.',
+'ipusubmit' => 'Etblōkis šan adressin',
+'unblocked' => '[[User:$1|$1]] pastāi etblōkitan',
+'unblocked-id' => 'Blōkisenis $1 pastāi izklaūtan',
+'ipblocklist' => 'Listi stēisan blōkitan IP adressin be tērpautajan pabilīsnan',
+'ipblocklist-legend' => 'Aupallais blōkitan tērpautajan',
+'ipblocklist-username' => 'Tērpautajas pabilisnā anga IP adressi:',
+'ipblocklist-sh-userblocks' => '$1 rekkenan blōkisenei',
+'ipblocklist-sh-tempblocks' => '$1 kīsmingiskai blōkisenei',
+'ipblocklist-sh-addressblocks' => '$1 aīnasses IP adressis blōkisenei',
+'ipblocklist-submit' => 'Laukīs',
+'ipblocklist-localblock' => 'Lōkals blōkisenis',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Kits blōkisenis|Kitāi blōkisenei}}',
+'blocklistline' => '$1, $2 blōki $3 (blōkisenes kērda: $4)',
+'infiniteblock' => 'bewangiskai',
+'expiringblock' => 'wanginna si $1 $2',
+'anononlyblock' => 'tēr anōnimai',
+'noautoblockblock' => 'autōmatiska blōkisna izklaūtan',
+'createaccountblock' => 'rekkenas teīksnas blōkisenis',
+'emailblock' => 'e-mail blōkitan',
+'blocklist-nousertalk' => 'ni mazzi redigītun swajjans diskusiōnis pāusans',
+'ipblocklist-empty' => 'Blōkisenin listi ast pāustan',
+'ipblocklist-no-results' => 'Padāta IP adressi anga tērpautajs ni ast blōkitan.',
+'blocklink' => 'blōkis',
+'unblocklink' => 'etblōkis',
+'change-blocklink' => 'kitawīdinais blōkisenin',
+'contribslink' => 'endīja',
+'autoblocker' => 'Assei autōmatiskai blōkitan, beggi ši IP adressi bēi panzdaumai tērpautan pra "[[User:$1|$1]]".
+Tērpautajas $1 blōkisenes brewīnsli ast: "$2"',
+'blocklogpage' => 'Blōkisnas registerin',
+'blocklogentry' => 'ast blōkiwuns(si) [[$1]] sen blōkisnas kērdan: $2 $3',
+'reblock-logentry' => 'ast kitawīdinuns blōkisenes ensadīnsnas stesse(s) [[$1]] sen blōkisnas kērdan: $2 $3',
+'blocklogtext' => 'Sta ast regīsterin stēisan blōkisenin be etblōkisenin stēisan tērpautajan anga IP adressin.
+Autōmatiskai blōkitas IP adressis ni ast waidīntan.
+Jaīs en [[Special:IPBlockList|IP blōkisenin listin]] ki widālai wissans tēnti aktīwans blōkisenins.',
+'unblocklogentry' => 'ast etblōkiwuns(si) $1',
+'block-log-flags-anononly' => 'tēr anōnimai tērpautajai',
+'block-log-flags-nocreate' => 'rekkenas teīksna izklaūtan',
+'block-log-flags-noautoblock' => 'autōmatiska blōkisna izklaūtan',
+'block-log-flags-noemail' => 'e-mail blōkitan',
+'block-log-flags-nousertalk' => 'ni mazzi redigītun swajjan diskusiōnis pāusan',
+'block-log-flags-angry-autoblock' => 'paplattinta autōmatiska blōkisna enklaūtan',
+'block-log-flags-hiddenname' => 'tērpautajas pabilisnā ast kliptintan',
+'range_block_disabled' => 'Perwaldītajas mazīngisku, kāi blōkitun ebīmtans stēisan IP adressin pastāi izklaūtan.',
+'ipb_expiry_invalid' => 'Nitikrōmiskas wangīsnas kerdā.',
+'ipb_expiry_temp' => 'Kliptas tērpautajas pabilīsnas blōkisenis turri būtwei ainatīngi.',
+'ipb_hide_invalid' => 'Ni mazīngi kliptintun šisse tērpautajas rekkenan, drūwiminai tāns ast segīwuns per tūlin redigīsenins.',
+'ipb_already_blocked' => '"$1" ast jāu blōkitan',
+'ipb-needreblock' => '== Jāu blōkitan ==
+$1 ast jāu blōkitan. Kwāitu kitawīdintun blōkisenes ensadīnsenins?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Kits blōkisenis|Kitāi blōkisenei}}',
+'ipb_cant_unblock' => 'Blānda: Blōkisenes ID $1 ni pastāi aupaltan. Mazīngi tāns pastāi ankstāis izklaūtan.',
+'ipb_blocked_as_range' => 'Blānda: IP adressi $1 ni ast blōkitan entikriskai be ni mazzi būtwei etblōkitan.
+Sta ast, šlāit, blōkitan kāigi delīks stesse $2 ebīmtan, kawīdan mazzi būtwei etblōkitan.',
+'ip_range_invalid' => 'Nitikrōmiskas IP ebīmtan.',
+'ip_range_toolarge' => 'Ebīmtas blōkisenei mūiseisan nikāi /$1 ni ast preiēminan.',
+'blockme' => 'Blōkis min',
+'proxyblocker' => 'Proxy blōkisna',
+'proxyblocker-disabled' => 'Šī funkciōni ast izklaūtan.',
+'proxyblocksuccess' => 'Segītan.',
+'sorbsreason' => 'Twajā IP adressi ast en listei stēisan open proxy sērwerin en DBSBL, tērpautan pra {{SITENAME}}.',
+'sorbs_create_account_reason' => 'Twajā IP adressi ast en listei stēisan open proxy sērwerin en DBSBL, tērpautan pra {{SITENAME}}.
+Tū ni mazzi teīktun rekkenan',
+'cant-block-while-blocked' => 'Tū ni mazzi blōkitun kittan tērpautajans, kaddan subs assei blōkitan.',
+
+# Developer tools
+'lockdb' => 'Izklaūjais dātanbazin',
+'unlockdb' => 'Etklaūjais dātanbazin',
+'lockconfirm' => 'Tīt, as perarwi kwaitēi auklaūtun dātanbazin.',
+'unlockconfirm' => 'Tīt, as perarwi kwaitēi etkaūtun dātanbazin.',
+'lockbtn' => 'Auklaūjais dātanbazin',
+'unlockbtn' => 'Etklaūjais dātanbazin',
+'locknoconfirm' => 'Ni assei pazentliwuns(si) padrūktinsenin.',
+'lockdbsuccesssub' => 'Dātanbazis auklaūsenis izpalla',
+'unlockdbsuccesssub' => 'Dātanbazi etklaūtan',
+'lockdbsuccesstext' => 'Dātanbazi pastāi auklaūtan. <br />
+Paminnais [[Special:UnlockDB|etklaūtun]] dātanbazin, kaddan tu wīrst wanginnuns(si) perwaldīsnas dīlasenins.',
+'unlockdbsuccesstext' => 'Dātanbazin pastāi etklaūtan.',
+'lockfilenotwritable' => 'Ni mazīngi peisātun en dātanbazis blōkisenes zūrbrukin.
+Dātanbazis auklaūsenis be etklaūsenis izkīnina, kāi zūrbrukis būlai enpeisāminan pra web sērwerin.',
+'databasenotlocked' => 'Dātanbazi ni ast auklaūtan.',
+
+# Move page
+'move-page' => 'Praskajjinais $1',
+'move-page-legend' => 'Praskajjinais pāusan',
+'movepagetext' => "Tērpawintei šin fōrmularan mazīngi kitawīdintun pāusas tītelin, praskajjinantei ainakīsmingiskai tenesse istōrijan en nāunan tītelin.
+Wūrs tītelis wīrst pastāwuns pāusan praweddantin en nāunan tītelin.
+Tū mazzi autōmatiskai aktualizītun prawessenins, kawīdai prawedda en wūran tītelin.
+Ik tū etrīnklai ni segītun stan autōmatiskai, paminnais izbandātun [[Special:DoubleRedirects|dwigubans]] anga [[Special:BrokenRedirects|autēnstans prawessenins]].
+Twajā etrawīngisku ast izbandātwei, kāi autengīnsenei autenginna prei deīktans, kwēi tenēimans prawerru autengīntun.
+
+Waīdais, kāi pāusan '''ni''' wīrst būwusi praskajjintan, ik ekzistijja jāu kittan pāusan sen nāunan tītelin be ni ast pāustan anga ni ast prawessenis be ni turri istōrijan stēisan redigīsenin.
+Sta zentli, kāi tū mazzi kitawīdintun etwārtai pāusas tītelin ik assei segīwuns(si) stan blāndas paggan be kāi tu ni mazzi kirsāi peisātun ekzistīntin pāusan.
+
+'''Ēmpirssergīsenis!'''
+Sta mazzi būtwei drāstiska be niggeista kitawīdisna per pōpularin pāusan;
+madli seīs aušaudīwingi, kāi tū izpresta rīplins pirzdau tū ēilai tālis.",
+'movepagetalktext' => 'Sēitan diskusiōnis pāusan wīrst būwun autōmatiskai praskajjintan, ik tēr:
+*nipāustan diskusiōnis pāusan dabber ni ekzistijja sen nāunan tītelin
+*zemmaisis etrīnksnas laūks ast pazentlitan
+
+En kitēimans prēipalins tū mazzi praskajjintun anga senlaītun pāusan ter rānkiskai.',
+'movearticle' => 'Praskajjinais pāusan:',
+'movenologin' => 'Ni assei engūbun',
+'movenologintext' => 'Tu turri būtwei registrītan be [[Special:UserLogin|engūbun]] kāi praskajjinlai pāusan.',
+'movenotallowed' => 'Tū ni assei enwarīntan, kāi praskajjinlai pāusans.',
+'movenotallowedfile' => 'Tū ni assei enwarīntan, kāi praskajjinlai zūrbrukins.',
+'cant-move-user-page' => 'Tū ni assei enwarīntan kāi praskajjinlai tērpautajan pāusans (izimmantei pōpausans).',
+'cant-move-to-user-page' => 'Tū ni assei enwarīntan, kāi praskajjinlai pāusan en tērpautajas pāusan (izimmantei tērpautajas pōpausan).',
+'newtitle' => 'Nāuns tītels:',
+'move-watch' => 'Nadirēis šin pāusan',
+'movepagebtn' => 'Praskajjinais pāusan',
+'pagemovedsub' => 'Praskajjinsenis izpalla',
+'movepage-moved' => "'''„$1” pastāi praskajjintan en „$2”'''",
+'movepage-moved-redirect' => 'Prawessenis pastāi teīktan.',
+'movepage-moved-noredirect' => 'Prawessenis ni pastāi teīktan.',
+'articleexists' => 'Pāusan sēn šin tītelin jāu ast, anga etrīnkts tītels ni ast tikrōmiskan.
+Madli etrīnkais kittan tītelin.',
+'cantmove-titleprotected' => 'Tū ni mazi praskajjintun pāusan, beggi nāuns pāusas tītels pastāi pakūnstan ezze teīksnan',
+'talkexists' => "'''Pāusan pastāi praskajjintan izpalawīngi, adder diskusiōnis pāusan ni mazēi būtwei praskajjintan, beggi diskusiōnis pāusan sen stawīdan tītelin jāu ekzistijja.
+Madli senlajjais tennans rānkiskai.'''",
+'movedto' => 'praskajjintan en',
+'movetalk' => 'Praskajjinais dīgi diskusiōnis pāusan',
+'move-subpages' => 'Praskajjinais pōpausans (ni tūls nikāi $1)',
+'move-talk-subpages' => 'Praskajjinais diskusiōnis pāusas pōpausans (ni tūls nikāi $1)',
+'movepage-page-exists' => 'Pāusan $1 jāu ast be ni mazzi būtwei autōmatiskai kirsāi peisātan.',
+'movepage-page-moved' => 'Pāusan $1 pastāi praskajjintan en $2.',
+'movepage-page-unmoved' => 'Pāusan $1 ni mazzi būtwei praskajjintan en $2.',
+'movepage-max-pages' => 'Pastāi praskajjintan $1 {{PLURAL:$1|pāusan|pāusai}}. Tūls ni mazzi būtwei praskajjintan autōmatiskai.',
+'1movedto2' => 'ast praskajjinuns(si) [[$1]] en [[$2]]',
+'1movedto2_redir' => 'ast praskajjinuns(si) [[$1]] en [[$2]] kīrsa prawessenin',
+'move-redirect-suppressed' => 'Ni teīkē di prawessenin en wūrasmu tītelin',
+'movelogpage' => 'Registerin stēisan praskajjintan',
+'movelogpagetext' => 'Zemmais ast listi wisēisan praskajjinsenin stēisan pāusan.',
+'movesubpage' => '{{PLURAL:$1|Pōpausan|Pōpausai}}',
+'movesubpagetext' => 'Šin pāusan turri $1 {{PLURAL:$1|pōpausan|pōpausans}} waidīntans zemmais.',
+'movenosubpage' => 'Šin pāusan ni turri pōpausans.',
+'movereason' => 'Brewīnsli:',
+'revertmove' => 'etwārtai wartinnais',
+'delete_and_move' => 'Āupausinais be praskajjinais',
+'delete_and_move_text' => '== Praskajjinsenis izkīnina āupausenin ==
+Kakīnslis pāusan "[[:$1]]" ekzistijja.
+Kwāitu āupausintun din, kāi segīlai deīktan per praskajjintan pāusan?',
+'delete_and_move_confirm' => 'Jā, āupausinais pāusan',
+'delete_and_move_reason' => 'Āupausinā di, kāi segītun deīktan per praskajjintan pāusan',
+'selfmove' => 'Aps be kakīnsli ast stan subban;
+Ni mazīngi praskajjintun pāusan en din subban.',
+'immobile-source-namespace' => 'Ni mazīngi praskajjintun pāusans en tītelin plattibei "$1"',
+'immobile-target-namespace' => 'Ni mazīngi praskajjintun pāusans en tītelin plattibei "$1"',
+'immobile-target-namespace-iw' => 'Interwiki autengīnsenis ni ast tikrōmiskas tītels en kawīdsmu mazīngi praskajjintun pāusans.',
+'immobile-source-page' => 'Ni mazīngi praskajjintun šin pāusan.',
+'immobile-target-page' => 'Ni mazīngi praskajjintun en šin kakīnslis zūrbrukin.',
+'imagenocrossnamespace' => 'Ni mazīngi praskajjintun zūrbrukin en tītelin plattibin ni per zūrbrukins',
+'imagetypemismatch' => 'Nāuns plattinsenis ni prēitara prei tenesse tīpan',
+'imageinvalidfilename' => 'Kakīnslis zūrbrukes pabilisnā ast nitikrōmiskan',
+'fix-double-redirects' => 'Etnāunais wissans prawessenins prei wūran tītelin',
+'move-leave-redirect' => 'Palaīdeis prawessenin sen bigāntin tītelin',
+
+# Export
+'export' => 'Ekspōrtis pāusans',
+'exportcuronly' => 'Tēr bigānta wersiōni, šlāit istōrijan',
+'export-submit' => 'Ekspōrtis',
+'export-addcattext' => 'Preidāis pāusans iz kategōrijan:',
+'export-addcat' => 'Preidāis',
+'export-addnstext' => 'Preidāis pāusans iz tītelin plattibin:',
+'export-addns' => 'Preidāis',
+'export-download' => 'Enpeisāis en zūrbrukin',
+'export-templates' => 'Ebimmais šablōnins',
+'export-pagelinks' => 'Ebimmais pāusans prei kawīdans šin pāusan autenginna ērgi gilluwan:',
+
+# Namespace 8 related
+'allmessages' => 'Sīstemas pawakīsenei',
+'allmessagesname' => 'Emmens',
+'allmessagesdefault' => 'Auprestamins teksts',
+'allmessagescurrent' => 'Bigānts teksts',
+'allmessagestext' => 'Sta ast listi wisēisan waīstin preiēiminan en MediaWikis tītelin plattibin.
+Madli kāimalukeis [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] be [http://translatewiki.net translatewiki.net] ik tu kwaitēi delīkan īmtun en MediaWikis prōgraminin tulkausnai.',
+'allmessagesnotsupportedDB' => "Šī pāusan ni mazzi būtwei tērpautan, beggi wariābli '''\$wgUseDatabaseMessages''' ast izklaūtan.",
+'allmessages-filter-legend' => 'Filtrīs',
+'allmessages-filter' => 'Filtrīs pa būsenin:',
+'allmessages-filter-unmodified' => 'Nikitawīdintan',
+'allmessages-filter-all' => 'Wisāi',
+'allmessages-filter-modified' => 'Kitawīdintan',
+'allmessages-prefix' => 'Filtrīs pa prefiksan:',
+'allmessages-language' => 'Bilā:',
+'allmessages-filter-submit' => 'Jaīs',
+
+# Thumbnails
+'thumbnail-more' => 'Mūisesinais',
+'filemissing' => 'Zūrbrukis nisātaui',
+'thumbnail_error' => 'Miniatūris teīksnas blānda: $1',
+'djvu_page_error' => 'DjVu pāusan per ebīmtan',
+'djvu_no_xml' => 'Ni mazīngi kraūtun XML dātan per DjVu zūrbrukin',
+'thumbnail_invalid_params' => 'Nitikrōmiskai miniatūris parāmetrei',
+'thumbnail_dest_directory' => 'Ni mazīngi teīktun kakīnslis fōlderin',
+'thumbnail_image-missing' => 'Zūrbrukis perwaidinna si nisātautwei: $1',
+
+# Special:Import
+'import' => 'Impōrtis pāusans',
+'importinterwiki' => 'Transwiki impōrts',
+'import-interwiki-text' => 'Etrīnkais wiki be pāusas tītelin per impōrtisnan.
+Weriōnin dātai be autōras pabilīsnas wīrst būwušas erlaikātan.
+Wisāi transwikis impōrtas dīlasenei ast enpeisātan en [[Special:Log/import|impōrtas registeŗu]].',
+'import-interwiki-source' => 'Aps šisses wiki/pāusan:',
+'import-interwiki-history' => 'Kōpis wissans šisse pāusas redigīsnas istōrijan',
+'import-interwiki-templates' => 'Ebimmais wissans šablōnins',
+'import-interwiki-submit' => 'Impōrtis',
+'import-interwiki-namespace' => 'Kakīnslis tītelin plattibi:',
+'import-upload-filename' => 'Zūrbrukes pabilisnā:',
+'import-comment' => 'Kumentārs:',
+'importtext' => 'Ekspōrt zūrbrukin iz appus wiki tērpawintei [[Special:Export|Ekspōrtas pagabtin]]. Enpeisāis din en twajjan kōmputeran be enkraūneis din stwi.',
+'importstart' => 'Impōrtisna stēisan pāusan wēraui...',
+'import-revision-count' => '$1 {{PLURAL:$1|wersiōni|wersiōnis}}',
+'importnopages' => 'Ni ast pāusai kāi impōrtilai dins.',
+'importfailed' => 'Impōrts ni izpalla: <nowiki>$1</nowiki>',
+'importunknownsource' => 'Niwaīstan fōrmatan stēisan impōrtitan pāusan',
+'importcantopen' => 'Ni mazīngi etwertun impōrtitan zūrbrukin',
+'importbadinterwiki' => 'Wārgs interwiki autengīnsenis',
+'importnotext' => 'Pāustan anga šlāit tekstan',
+'importsuccess' => 'Impōrts wangīntan!',
+'importhistoryconflict' => 'Ast wersiōnis kōnfliktan (šin pāusan mazēi būtwei impōrtitan jāu ankstāis)',
+'importnosources' => 'Entikriskas istōrijas impōrtas mazīngisku pastāi izklaūtan, beggi aps ni ast definītan.',
+'importnofile' => 'Impōrtits zūrbrukis ni pastāi enkraūtan.',
+'importuploaderrorsize' => 'Impōrtitas zūrbrukes impōrtisna ni izpalla.
+Ast mūisesan nikāi enkraūtan zūrbrukin preiēiminan debban.',
+'importuploaderrorpartial' => 'Zūrbrukes enkraūsenis ni izpalla.
+Tāns pastāi enkraūtan ter delīkiskai.',
+'importuploaderrortemp' => 'Impōrtitas zūrbrukes enkraūsna ni izpalla.
+Ni ast fōlderis per kīsmingiskans zūrbrukins.',
+'import-parse-failure' => 'Impōrtitas zūrbrukis XML sīntaksi ni skaitāminan.',
+'import-noarticle' => 'Ni ast pāusai, kāi impōrtilai dins!',
+'import-nonewrevisions' => 'Wisāi wersiōnis pastāi jāu ankstāis impōrtitan.',
+'xml-error-string' => '$1 en līnijai $2, kōl. $3 (bāits $4): $5',
+'import-upload' => 'Enkraūneis XML dātan',
+'import-token-mismatch' => 'Izmāitinā di sesiōnis dātan.
+Madli bāndais etkūmps.',
+'import-invalid-interwiki' => 'Ni mazīngi impōritun iz padātan wiki.',
+
+# Import log
+'importlogpage' => 'Impōrtas registerin',
+'importlogpagetext' => 'Perwaldīwingei impōrtai stēisan pāusan sen redigīsnas istōrijan iz kittans wikins.',
+'import-logentry-upload' => 'ast impōrtiwuns(si) [[$1]] pra zūrbrukes enkraūsenin',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|wersiōni|wersiōnis}}',
+'import-logentry-interwiki' => '$1 impōrtitan pra transwiki',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|wersiōni|wersiōnis}} iz $2',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Majjan persōniskan pāusan',
+'tooltip-pt-anonuserpage' => 'Tērpautajas pāusan per IP adressin, iz kawīdan tū redigijja',
+'tooltip-pt-mytalk' => 'Twajjan diskusiōnis pāusan',
+'tooltip-pt-anontalk' => 'Diskusiōni ezze redigīsnan iz šan IP adressin',
+'tooltip-pt-preferences' => 'Majjas pirminiskwas',
+'tooltip-pt-watchlist' => 'Listi stēisan pāusan nadirītan prō tin',
+'tooltip-pt-mycontris' => 'Listi twajāsan ēndijan',
+'tooltip-pt-login' => 'Rēidimai, kai tū enēilai, šlāit sta ni ast izkīnintan',
+'tooltip-pt-anonlogin' => 'Rēidimai kāi enēilai, adder sta ni ast izkīnintan',
+'tooltip-pt-logout' => 'Izjaīs',
+'tooltip-ca-talk' => 'Diskusiōni ezze šisse pāusas ēnturan',
+'tooltip-ca-edit' => 'Tū mazzi redigītun šin pāusan.
+Pirzdau enpeisāsnan, tērpaus pirmādiras knuppan.',
+'tooltip-ca-addsection' => 'Pagaūneis nāunan sekciōnin',
+'tooltip-ca-viewsource' => 'Šin pāusan ast pakūnstan. Tū mazzi widātun tenesse appun.',
+'tooltip-ca-history' => 'Ānkstaisis šisse pāusas wersiōnis.',
+'tooltip-ca-protect' => 'Pakūnteis šin pāusan',
+'tooltip-ca-unprotect' => 'Etkūnteis šin pāusan',
+'tooltip-ca-delete' => 'Āupausinais šin pāusan',
+'tooltip-ca-undelete' => 'Etwārtai wartinnais šisse pāusas redigīsenins segītan pirzdau tennan pastāi āupausintan',
+'tooltip-ca-move' => 'Praskajjinais šin pāusan',
+'tooltip-ca-watch' => 'Preidāis šin pāusan prei listin stēisan nadirītan',
+'tooltip-ca-unwatch' => 'Āupausinais pāusan iz listin stēisan nadirītan',
+'tooltip-search' => 'Laukīs en {{SITENAME}}',
+'tooltip-search-go' => 'Jaīs en pāusan sen akrāts stawīdan tītelin ik ekzistijja',
+'tooltip-search-fulltext' => 'Laukīs šin tekstan en pāusamans',
+'tooltip-p-logo' => 'Galwas pāusan',
+'tooltip-n-mainpage' => 'Wīdais galwas pāusan',
+'tooltip-n-mainpage-description' => 'Jaīs en galwas pāusan',
+'tooltip-n-portal' => 'Ezze prōjaktan, ka Tu mazzi segītun, kwēi Tu mazzi aupaltun informaciōnins',
+'tooltip-n-currentevents' => 'Infōrmaciōnis ezze aktuālins audāsenins',
+'tooltip-n-recentchanges' => 'Listi stēisan panzdauman kitawīdisnan en šissei wiki',
+'tooltip-n-randompage' => 'Enkraūneis prēipalingin pāusan',
+'tooltip-n-help' => 'Stwi tu mazzi tūlin erzinātun.',
+'tooltip-t-whatlinkshere' => 'Listi wisēisan wikis pāusan, kawīdai autenginna prei šin pāusan',
+'tooltip-t-recentchangeslinked' => 'Panzdaumas kitawīdinsnas en pāusamans, prei kawīdans šin pāusan autenginna',
+'tooltip-feed-rss' => 'RSS aps per šin pāusan',
+'tooltip-feed-atom' => 'Atom aps per šin pāusan',
+'tooltip-t-contributions' => 'Wīdais šisse tērpautajas ēndijas listin',
+'tooltip-t-emailuser' => 'Tenginnais e-mail šismu tērpautajan',
+'tooltip-t-upload' => 'Enkraūneis zūrbrukins',
+'tooltip-t-specialpages' => 'Listi wisēisan speciālin pāusan',
+'tooltip-t-print' => 'Drukkaumina pāusas wersiōni',
+'tooltip-t-permalink' => 'Ainatīngis autengīnsenis prei šin pāusas wersiōnin',
+'tooltip-ca-nstab-main' => 'Wīdais pāusas ēnturan',
+'tooltip-ca-nstab-user' => 'Wīdais tērpautajas persōniskan pāusan',
+'tooltip-ca-nstab-media' => 'Wīdais zūrbrukes pāusan',
+'tooltip-ca-nstab-special' => 'Sta ast speciālin pāusan. Tū ni mazzi redigītun din.',
+'tooltip-ca-nstab-project' => 'Wīdais prōjaktas pāusan',
+'tooltip-ca-nstab-image' => 'Wīdais zūrbrukes pāusan',
+'tooltip-ca-nstab-mediawiki' => 'Wīdais sīstemas waīstin',
+'tooltip-ca-nstab-template' => 'Wīdais šablōnin',
+'tooltip-ca-nstab-help' => 'Wīdais pagalbas pāusan',
+'tooltip-ca-nstab-category' => 'Wīdais kategōrijas pāusan',
+'tooltip-minoredit' => 'Ebzentlis kitawīdisnan kāigi malkan',
+'tooltip-save' => 'Enpeisāis kitawīdisnans',
+'tooltip-preview' => 'Pradirēis swajjans kitawīdisnans pirzdau tenēisan enpeisāsnan!',
+'tooltip-diff' => 'Pawaidinnais kitawīdisnans enwestans en tekstan.',
+'tooltip-compareselectedversions' => 'Wīdais šlaitīntans sirzdau dwāi etrīnktans šisse pāusas wersiōnins',
+'tooltip-watch' => 'Preidāis šin pāusan prei listin stēisan nadirītan',
+'tooltip-recreate' => 'Teīkeis pāusan prōpaus tennan bēi jāu āupausintan',
+'tooltip-upload' => 'Pagaūneis enkraūsnan',
+'tooltip-rollback' => '"Etwārtai wartinnais" sen ainan gnessenin etwartinna wissans šisse pāusas kitawīdisnans segītans pra panzdauman redigīntin.',
+'tooltip-undo' => '"Naīkinais redigīsenin" etwārtai wartinna šin redigīsenin be etwerre redigīsenes lāngstan en pirmādiras wīdu.
+Sta preiwērpja enpeisātun brewīnslin en kitawīdisnan ebpeisāseņu.',
+
+# Metadata
+'nodublincore' => 'Metadātan preitarīngi prei Dublin Core RDF pastāi izklaūtan per šin sērwerin.',
+'nocreativecommons' => 'Metadātan preitarīngi prei Creative Commons RDF pastāi izklaūtan per šin sērwerin.',
+'notacceptable' => 'Wiki sērwerin ni mazzi preistatīntun dātan en fōrmatu palaīpsitasmu pra twajjan lasātlin.',
+
+# Attribution
+'anonymous' => '{{PLURAL:$1|Anōnims tērpautajs|Anōnimai tērpautajai}} stesse {{SITENAME}}',
+'siteuser' => 'Tērpautajs stesse {{SITENAME}} - $1',
+'anonuser' => '{{SITENAME}} anōnims tērpautajs $1',
+'lastmodifiedatby' => 'Šin pāusan bēi panzdaumai kitawīdintan en $2, $1, pra $3.',
+'othercontribs' => 'Kitāi autōrai: $1.',
+'others' => 'kitāi',
+'siteusers' => '$2 {{PLURAL:$2|tērpautajs|tērpautajai}} stesse {{SITENAME}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anōnims tērpautajs|anōnimai tērpautajai}} $1',
+'creditspage' => 'Autōrai',
+'nocredits' => 'Ni ast infōrmaciōni ezze šisse pāusas autōrans.',
+
+# Spam protection
+'spamprotectiontitle' => 'Spamas filteris',
+'spamprotectiontext' => 'Pāusan, kawīdan tū kwaitēi enpeisātun pastāi blōkitan pra spamas filterin.
+Sta ast drūwiminai dīlintan pra autengīnsenin prēi izwinandan pāusan iz kīrsnan listin.',
+'spamprotectionmatch' => 'Ripīnts teksts ast enskattinuns spamas filterin: $1',
+'spambot_username' => 'MediaWiki - spamas skīstinsna',
+'spam_reverting' => 'Etwārtai wartīnsna stesses panzdauman wersiōnin, ni turrintes ēn sin autengīnsenins prei $1',
+'spam_blanking' => 'Wissas wesiōnis turēi en sin autengīnsenins prei $1. Pāusas skistīnsna.',
+
+# Info page
+'infosubtitle' => 'Infōrmaciōni ezze pāusan',
+'numedits' => 'Redigīsenin gīrbis (pāusan): $1',
+'numtalkedits' => 'Redigīsenin gīrbis (diskusiōnis pāusan): $1',
+'numwatchers' => 'Nadirīntin gīrbis: $1',
+'numauthors' => 'Autōran gīrbis (pāusan): $1',
+'numtalkauthors' => 'Autōran gīrbis (diskusiōnis pāusan): $1',
+
+# Math options
+'mw_math_png' => 'Wisaddan teīkeis PNG grāfikin',
+'mw_math_simple' => 'HTML ik spārtai prastan, ik ni - PNG',
+'mw_math_html' => 'HTML ik mazīngi, ik ni - PNG',
+'mw_math_source' => 'Palaīdeis en TeX-as fōrmatu (per tekstas lasātlins)',
+'mw_math_modern' => 'HTML - radītan per nāunans lasātlins',
+'mw_math_mathml' => 'MathML ik mazīngi (eksperimentālai)',
+
+# Math errors
+'math_failure' => 'Parsers ni mazēi skaitātun',
+'math_unknown_error' => 'niwaīsta blānda',
+'math_unknown_function' => 'niwaīsta funkciōni',
+'math_lexing_error' => 'laksisis blānda',
+'math_syntax_error' => 'sīntaksis blānda',
+'math_image_error' => 'Maināsna en PNG ni izpalla.
+Izbāndais, anga latex, dvips, gs be convert ast instalītan tikrōmiskai',
+'math_bad_tmpdir' => 'Ni mazīngi teīktun anga enpeisātun en kīsmingiskasmu matemātiskan fōlderin',
+'math_bad_output' => 'Ni mazīngi teīktun anga enpeisātun en izēiseniskasmu matemātiskan fōlderin',
+'math_notexvc' => 'Ni ast texvc prōgraman.
+Wīdais math/README kāi kōnfigurilai.',
+
+# Patrolling
+'markaspatrolleddiff' => 'Pazentlis kāigi "izbandātan"',
+'markaspatrolledtext' => 'Pazentlis šin pāusan kāigi "izbandātan"',
+'markedaspatrolled' => 'Pazentlitan kāigi "izbandātan"',
+'markedaspatrolledtext' => 'Etrīnkta wersiōni stesse(s) [[:$1]] pastāi pazentlitan kāigi "izbandātan".',
+'rcpatroldisabled' => 'Panzdauman Kitawīdisnan izbandāsenei izklaūtan',
+'rcpatroldisabledtext' => 'Panzdauman Kitawīdisnan izbandāsenei ast tēntiskai izklaūtan.',
+'markedaspatrollederror' => 'Nimazīngi pazentlitun kāigi "izbandātan"',
+'markedaspatrollederrortext' => 'Tebbei prawerru etrīnktun wersiōnin, kāi pazentlilai din kāigi "izbandātan".',
+'markedaspatrollederror-noautopatrol' => 'Ni assei enwarīntan, kāi pazentlitun swajjans kitawīdinsnans kāigi "izbandātans".',
+
+# Patrol log
+'patrol-log-page' => 'Izbandāsnas registerin',
+'patrol-log-header' => 'Sta ast izbandātan wersiōnin regīsterin.',
+'patrol-log-line' => 'ast pazentliwuns(si) $1 wersiōnin stesse $2 pāusan kāigi "izbandātan" $3',
+'patrol-log-auto' => '(autōmatiskai)',
+'patrol-log-diff' => 'wersiōni $1',
+'log-show-hide-patrol' => '$1 izbandāsnas registerin',
+
+# Image deletion
+'deletedrevision' => 'Āupausinā di panzdaumans wersiōnins stesse $1',
+'filedeleteerror-short' => 'Blānda prei zūrbrukes $1 āupausinsnan',
+'filedeleteerror-long' => 'Blāndas tikka prei zūrbrukes āupausinsnan:
+
+$1',
+'filedelete-missing' => 'Zūrbrukis "$1" ni mazzi būtwei āupausintan, beggi ni ekzistijja',
+'filedelete-old-unregistered' => 'Ni ast palaīpsinta zūrbrukes "$1" wersiōni en dātanbazei.',
+'filedelete-current-unregistered' => 'Ni ast palaīpsints zūrbrukis "$1" en dātanbazei.',
+'filedelete-archive-read-only' => 'Fōlderis sen arkīwans "$1" ni ast enpeisāminan pra WWW sērwerin.',
+
+# Browsing diffs
+'previousdiff' => '← Ānkstaisis redigīsenis',
+'nextdiff' => 'Nāunaisis redigīsenis →',
+
+# Media information
+'mediawarning' => "'''Ēmpirssergīsenis:''' Šis zūrbrukes tīps mazzi turītun ēn sin wārgingiskan kōdan.
+Enskattintei din, tū mazzi ārditun twajjan sistēman.",
+'imagemaxsize' => "Arāikinais bildin debban:<br />''(per zūrbrukes ebpeisāsenes pāusans)''",
+'thumbsize' => 'Miniatūris debban:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pāusan|pāusai}}',
+'file-info' => '(zūrbrukes debban: $1, MIME tīps: $2)',
+'file-info-size' => '($1 × $2 pikselai, zūrbrukes debban: $3, MIME tīps: $4)',
+'file-nohires' => '<small>Mūisesa rezōluciōni ni ast preiēiminan.</small>',
+'svg-long-desc' => '(SVG zūrbrukis, nōminalai $1 × $2 pikselai, debban: $3)',
+'show-big-image' => 'Pilnā rezōluciōni',
+'show-big-image-thumb' => '<small>Pirmādiras debban: $1 × $2 pikselai</small>',
+'file-info-gif-looped' => 'kalpenintan',
+
+# Special:NewFiles
+'newimages' => 'Ukanāunaišai zūrbrukei',
+'imagelisttext' => "En zemmaišai listin ast '''$1''' {{PLURAL:$1|zūrbrukis rikaūts|zūrbrukei rikaūtai}} $2.",
+'newimages-summary' => 'Šin speciālin pāusan waidinna panzdaumai enkraūtans zūrbrukins.',
+'newimages-legend' => 'Filteris',
+'newimages-label' => 'Zūrbrukis pabilisnā (anga tenesses delīks):',
+'showhidebots' => '($1 bōtai)',
+'noimages' => 'Nika per waidīnsnan.',
+'ilsubmit' => 'Laukīs',
+'bydate' => 'pa dātan',
+'sp-newimages-showfrom' => 'Waidinnai nāunans zūrbrukins pagaūwintei ezze $2, $1',
+
+# Bad image list
+'bad_image_list' => 'Fōrmatan ast stawīdan:
+
+Tēr listis elāmentai (rīndas pagaūwintas si sen *) ast endirītan.
+Pirmas autengīnsenis en rīndai turri būtwei autengīnsenis prei drēuditan zūrbrukin.
+Ripīntei autengīnsenei en rīndai ast laikātan per izīmsenins, s.z. pāusans en kawīdamans drēudits zūrbrukis mazzi būtwei tērpautan.',
+
+# Metadata
+'metadata' => 'Metadātan',
+'metadata-help' => 'Šis zūrbrukis turri ēn sen papilniminans infōrmaciōnins, drūwiminai preidātan pra digitālin kāmeran anga skanītajan teīkun šin zūrbrukin.
+Ik zūrbrukis bēi kitawīdintan, dātan mazzi delīkiskai būtwei nipreitarīngi sen kitawīdintas zūrbrukes parāmetrins.',
+'metadata-expand' => 'Waidinnais malkans',
+'metadata-collapse' => 'Kliptinais malkans',
+'metadata-fields' => 'Zemmaišai EXIF metadātas laūkai wīrst būwusis waidīntan en grāfikis pāusu.
+Kitāi wīrst būwusis kliptan auprestaminai.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'Plattu',
+'exif-imagelength' => 'Aūktan',
+'exif-bitspersample' => 'Bittai per izimlin',
+'exif-compression' => 'Kōmpresiōnis wīds',
+'exif-photometricinterpretation' => 'Pikselas struktūri',
+'exif-orientation' => 'Ōrientaciōni',
+'exif-samplesperpixel' => 'Izimlis per pikselin',
+'exif-ycbcrsubsampling' => 'Y en C pōizimlinsnā',
+'exif-ycbcrpositioning' => 'Y be C poziciōni',
+'exif-xresolution' => 'Uricōntala rezoluciōni',
+'exif-yresolution' => 'Wertikāla rezoluciōni',
+'exif-resolutionunit' => 'X be Y rezōluciōnis aīnibi',
+'exif-stripoffsets' => 'Bildis dātas deīktan',
+'exif-rowsperstrip' => 'Rīndas gīrbis per bildes sawīnzlin',
+'exif-stripbytecounts' => 'Bāitas gīrbis per bildis sawīnzlin',
+'exif-jpeginterchangeformat' => 'Pirmas JPEG SOI bāitas poziciōni',
+'exif-jpeginterchangeformatlength' => 'JPEG dātas bāitan gīrbis',
+'exif-transferfunction' => 'Prawesnas funkciōni',
+'exif-whitepoint' => 'Gaīliskwas punkts',
+'exif-primarychromaticities' => 'Trīs galwas bārwis',
+'exif-ycbcrcoefficients' => 'Bārwin plattibis iz RGB en YCbCr prawartīnsenes matrica',
+'exif-referenceblackwhite' => 'Kīrsnas be gaīlas autengīnsnas wērtibin pūran',
+'exif-datetime' => 'Zūrbrukes kitawīdinsnas dātan be kerdā',
+'exif-imagedescription' => 'Bildes tītelis',
+'exif-make' => 'Kāmeras tikīntajs',
+'exif-model' => 'Kāmeras mōdeli',
+'exif-software' => 'Tērpautas prōgraminis',
+'exif-artist' => 'Autōrs',
+'exif-copyright' => 'Autōras tikrōmin waldītajs',
+'exif-exifversion' => 'Exif wersiōni',
+'exif-flashpixversion' => 'Ebšlūzita Flashpix wersiōni',
+'exif-colorspace' => 'Bārwis plattibi',
+'exif-componentsconfiguration' => 'Kōmpunēntin zentlisnā',
+'exif-compressedbitsperpixel' => 'Bildes kōmpresiōnis wīds',
+'exif-pixelydimension' => 'Tikrōmiskan bildes plattu',
+'exif-pixelxdimension' => 'Tikrōmiskan bildes aūktan',
+'exif-makernote' => 'Tikīntajas endirīsenei',
+'exif-usercomment' => 'Tērpautajas kumentārai',
+'exif-relatedsoundfile' => 'Sēitan audiō zūrbrukis',
+'exif-datetimeoriginal' => 'Ōriginālas teīksnas dātan be kerdā',
+'exif-datetimedigitized' => 'Digitālas dātas teikāsnas dātan be kerdā',
+'exif-subsectime' => 'Dātan be kerdā - sekūndis aulamlis',
+'exif-subsectimeoriginal' => 'Teīksenes dātan be kerdā - sekūndis aulamlis',
+'exif-subsectimedigitized' => 'Digitālas dātas teikāsnas dātan be kerdā - sekūndis aulamlis',
+'exif-exposuretime' => 'Izlaikāsnas kerdā',
+'exif-exposuretime-format' => '$1 sek. ($2)',
+'exif-fnumber' => 'F gīrbis',
+'exif-exposureprogram' => 'Izlaikāsnas prōgraman',
+'exif-spectralsensitivity' => 'Spektrāla seīlawingisku',
+'exif-isospeedratings' => 'Dīwan en ISO aīnibimans',
+'exif-brightnessvalue' => 'Lāukisku',
+'exif-subjectdistance' => 'Etālisku ezze ōbjaktu',
+'exif-meteringmode' => 'Mattausnas wīds',
+'exif-lightsource' => 'Swāikstas aps',
+'exif-flash' => 'Bliccis',
+'exif-focallength' => 'Pellanas etālisku',
+'exif-subjectarea' => 'Ōbjaktas areālin',
+'exif-flashenergy' => 'Blicces energīja',
+'exif-spatialfrequencyresponse' => 'Plattibiskas deznes etrāsenis',
+'exif-focalplanexresolution' => 'Pellanas plassas X rezōluciōni',
+'exif-focalplaneyresolution' => 'Pellanas plassas Y rezōluciōni',
+'exif-focalplaneresolutionunit' => 'Pellanas plassas rezōluciōnis aīnibi',
+'exif-subjectlocation' => 'Ōbjaktas deīktan',
+'exif-sensingmethod' => 'Mattausnas metōdi',
+'exif-filesource' => 'Zūrbrukes aps',
+'exif-scenetype' => 'Widāklis tīps',
+'exif-cfapattern' => 'CFA šablōni',
+'exif-whitebalance' => 'Gaīliskwas balanss',
+'exif-digitalzoomratio' => 'Digitālas mūisesinsenes kōeficiēnts',
+'exif-focallengthin35mmfilm' => 'Pellanas etālisku per 35 mm filman',
+'exif-scenecapturetype' => 'Widāklis gabsnas tīps',
+'exif-gaincontrol' => 'Widāklis kontrōli',
+'exif-contrast' => 'Kōntrasts',
+'exif-saturation' => 'Sātwinisku',
+'exif-sharpness' => 'Astran',
+'exif-devicesettingdescription' => 'Ēnrankis ensadīnsnan ebpeisāsenis',
+'exif-subjectdistancerange' => 'Ōbjaktas etāliskwas ebīmtan',
+'exif-imageuniqueid' => 'Unikāla bildes ID nummeri',
+'exif-gpsversionid' => 'GPS wersiōni',
+'exif-gpslatituderef' => 'Zēimiskan anga pussideiniskan plattu',
+'exif-gpslatitude' => 'Geōgrafiskan plattu',
+'exif-gpslongituderef' => 'Dēiniskan anga wakkariskan ilgan',
+'exif-gpslongitude' => 'Geōgrafiska plattu',
+'exif-gpsaltituderef' => 'Aūktan kīrsa jūŗes līgmenin',
+'exif-gpsaltitude' => 'Aūktan kīrsa jūŗes līgmenin',
+'exif-gpstimestamp' => 'GPS kerdā (atōmiskas zēgeris)',
+'exif-gpssatellites' => 'Satellitai tērpautai per mattausnan',
+'exif-gpsstatus' => 'Gauwikas būsenis',
+'exif-gpsmeasuremode' => 'Mattausnas wīds',
+'exif-gpsdop' => 'Mattausnas tikrisku',
+'exif-gpsspeedref' => 'Dīwas aīnibi',
+'exif-gpsspeed' => 'GPS gauwikas dīwan',
+'exif-gpstrackref' => 'Skattisnas līnkes autengīnsna',
+'exif-gpstrack' => 'Skatīsnas līnkis',
+'exif-gpsimgdirectionref' => 'Bildes līnkes autengīnsna',
+'exif-gpsimgdirection' => 'Auīmsenes līnkis',
+'exif-gpsdestlatituderef' => 'Kakīnslis geōgrafiskan plattu (autengīnsna)',
+'exif-gpsdestlatitude' => 'Kakīnslis geōgrafiskan plattu',
+'exif-gpsdestlongituderef' => 'Kakīnslis geōgrafiskan ilgan (autengīnsna)',
+'exif-gpsdestlongitude' => 'Kakīnslis geōgrafiskan plattu',
+'exif-gpsdestdistanceref' => 'Etāliskwas ezze kakīnslai autengīnsna',
+'exif-gpsdestdistance' => 'Etālisku ezze kakīnslin',
+'exif-gpsareainformation' => 'GPS areālas pabilisnā',
+'exif-gpsdatestamp' => 'GPS dātan',
+
+# EXIF attributes
+'exif-compression-1' => 'Nikōmpresitan',
+
+'exif-unknowndate' => 'Niwaīstan dātan',
+
+'exif-orientation-1' => 'Nōrmala',
+'exif-orientation-2' => 'Etswāikstintan uricōntalai',
+'exif-orientation-3' => 'Ebgrēnztan 180°',
+'exif-orientation-4' => 'Etswāikstintan wertikālai',
+'exif-orientation-5' => 'Ebgrēnztan 90° prīki zēgerin be wertikālai etswāikstintan',
+'exif-orientation-6' => 'Ebgrēnztan 90° pa zēgerin',
+'exif-orientation-7' => 'Ebgrēnztan 90° pa zēgerin be wertikālai etswāikstintan',
+'exif-orientation-8' => 'Ebgrēnztan 90° prīki zēgerin',
+
+'exif-planarconfiguration-1' => 'stāran fōrmatan',
+'exif-planarconfiguration-2' => 'wīrsawiskwas fōrmatan',
+
+'exif-componentsconfiguration-0' => 'ni ekzistijja',
+
+'exif-exposureprogram-0' => 'Nidefinītan',
+'exif-exposureprogram-1' => 'Rānkiskai',
+'exif-exposureprogram-2' => 'Nōrmalin prōgraman',
+'exif-exposureprogram-5' => 'Kreatīwan prōgraman (debīka astras giluwā)',
+'exif-exposureprogram-7' => 'Pōrtretas prōgraman (auīmsenei iz taūwan sen niastran rīkisnasgruntan)',
+'exif-exposureprogram-8' => 'Tautāspawidas prōgraman (per auīmsenins segīntans iz tālin sen astran rīkisnasgruntan)',
+
+'exif-subjectdistance-value' => '$1 mētrai',
+
+'exif-meteringmode-0' => 'Niwaīsts',
+'exif-meteringmode-1' => 'Sīrzda',
+'exif-meteringmode-2' => 'Swērtan sirdan',
+'exif-meteringmode-3' => 'Punktiskas',
+'exif-meteringmode-4' => 'Tulapunktiskas',
+'exif-meteringmode-5' => 'Izimlinsnā',
+'exif-meteringmode-6' => 'Delīkiskas',
+'exif-meteringmode-255' => 'Kits',
+
+'exif-lightsource-0' => 'Niwaīsts',
+'exif-lightsource-1' => 'Dēinas swāikstan',
+'exif-lightsource-2' => 'Fluōrescenciskan',
+'exif-lightsource-3' => 'Wōlframas (kāitas lāmpi)',
+'exif-lightsource-4' => 'Bliccis',
+'exif-lightsource-9' => 'Labs wins',
+'exif-lightsource-10' => 'Uppiskas wins',
+'exif-lightsource-11' => 'Tīmens',
+'exif-lightsource-12' => 'Dēinas swāikstas fluōrescenciskan (D 5700 – 7100K)',
+'exif-lightsource-13' => 'Dēinas gaīlibis fluōrescenciskan (N 4600 - 5400K)',
+'exif-lightsource-14' => 'Saltas gaīlibis fluōrescenciskan (W 3900 - 4500K)',
+'exif-lightsource-15' => 'Gaīlin fluōrescenciskan (WW 3200-3700K)',
+'exif-lightsource-17' => 'Jāuku swāikstan A',
+'exif-lightsource-18' => 'Jāuku swāikstan B',
+'exif-lightsource-19' => 'Jāuku swāikstan C',
+'exif-lightsource-24' => 'ISO studijas wōlframas',
+'exif-lightsource-255' => 'Kits swāikstas aps',
+
+# Flash modes
+'exif-flash-fired-0' => 'Šlait bliccin',
+'exif-flash-fired-1' => 'Sen bliccin',
+'exif-flash-return-0' => 'šlāit etswāikstintas swāikstas serrīpsnas funkciōnin',
+'exif-flash-return-2' => 'etswāikstintan swāikstan ni serrīptan',
+'exif-flash-return-3' => 'etswāikstintan swāikstan serrīptan',
+'exif-flash-mode-1' => 'Preispārtints bliccis',
+'exif-flash-mode-2' => 'Preispārtinta blicces nisatausnā',
+'exif-flash-mode-3' => 'autōmatiskan prōgraman',
+'exif-flash-function-1' => 'Ni ast blicces funkciōni',
+'exif-flash-redeye-1' => 'Wūrmin akkin redukciōnis prōgraman',
+
+'exif-focalplaneresolutionunit-2' => 'cullai',
+
+'exif-sensingmethod-1' => 'Nidefinītan',
+'exif-sensingmethod-7' => 'Trilinīskas sensōrs',
+
+'exif-scenetype-1' => 'Entikriskai tikīnts auīmsenis',
+
+'exif-customrendered-0' => 'stāndartan',
+'exif-customrendered-1' => 'definītan pra tērpautajan',
+
+'exif-exposuremode-0' => 'Autōmatiska erswaikstinsnā',
+
+'exif-whitebalance-0' => 'autōmatiskas',
+'exif-whitebalance-1' => 'rānkiskas',
+
+'exif-scenecapturetype-0' => 'Jāukus',
+'exif-scenecapturetype-1' => 'Tautāspawida',
+'exif-scenecapturetype-2' => 'Pōrtretan',
+'exif-scenecapturetype-3' => 'Naktis widākli',
+
+'exif-gaincontrol-0' => 'Nika',
+'exif-gaincontrol-1' => 'Zemā spartinsnā',
+'exif-gaincontrol-2' => 'Auktā spartinsnā',
+'exif-gaincontrol-3' => 'Zemā laustinginsnā',
+'exif-gaincontrol-4' => 'Auktā laustinginsnā',
+
+'exif-contrast-0' => 'Nōrmals',
+'exif-contrast-1' => 'Līkuts',
+'exif-contrast-2' => 'Debīks',
+
+'exif-saturation-0' => 'Nōrmals',
+'exif-saturation-1' => 'Zemā sātwinisku',
+'exif-saturation-2' => 'Auktā sātwinisku',
+
+'exif-sharpness-0' => 'Nōrmals',
+'exif-sharpness-1' => 'Līkuts',
+'exif-sharpness-2' => 'Debīks',
+
+'exif-subjectdistancerange-0' => 'Niwaīsts',
+'exif-subjectdistancerange-1' => 'Makrō',
+'exif-subjectdistancerange-2' => 'Taūwa pawīda',
+'exif-subjectdistancerange-3' => 'Talā pawīda',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Zēimiskan plattu',
+'exif-gpslatitude-s' => 'Pussideiniskan plattu',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Dēiniskan plattu',
+'exif-gpslongitude-w' => 'Wakkariskan plattu',
+
+'exif-gpsstatus-a' => 'Mattausenis wēraui',
+'exif-gpsstatus-v' => 'Izrēizan preiēiminai mattausenes rezultātai',
+
+'exif-gpsmeasuremode-2' => '2-ermattawingis mattausenis',
+'exif-gpsmeasuremode-3' => '3-ermattawingis mattausenis',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'Kilōmetrai per stūndin',
+'exif-gpsspeed-m' => 'Mīlis per stūndin',
+'exif-gpsspeed-n' => 'Winzalai',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Arwis līnkis',
+'exif-gpsdirection-m' => 'Magnetiskas līnkis',
+
+# External editor support
+'edit-externally' => 'Redigīs šin pāusan tērpawintei izwinandan prōgraman',
+'edit-externally-help' => '(Skaitāis [http://www.mediawiki.org/wiki/Manual:External_editors instrukciōnins], kāi gaūlai tūls infōrmaciōnins).',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'wisāi',
+'imagelistall' => 'wisāi',
+'watchlistall2' => 'wisāi',
+'namespacesall' => 'wisāi',
+'monthsall' => 'wisāi',
+'limitall' => 'wisāi',
+
+# E-mail address confirmation
+'confirmemail' => 'Padrūktinais e-mail adressin',
+'confirmemail_noemail' => 'Tū ni turri tukrōmiskan e-mail adressin ensadīntan en [[Special:Preferences|pirminiskwamans]].',
+'confirmemail_text' => '{{SITENAME}} izkīnina e-mailas adressis izbandāsnan pirzdau e-mailas funkciōnis tērpausnan.
+Gnetteis knuppan zemmais, kāi tengīnlai en swajjan adressin padrūktinantin pēismenin.
+Pēismen wīrst turīwuns en sen auntengīnsenin prei pāusan sen identificīsnas kōdan;
+Etwereis šin autengīnsenin en lasātlai, ka wīrst padrūktiwus, kāi tū assei šisses adressis tērpautajs.',
+'confirmemail_pending' => 'Padrūktinsnas kōdan jāu pastāi tengīntan ti.
+Ik tū panzdaumai assei teīkuns(si) rekkenan, gēideis delli minūtins pirzdau ripīntin madlin ezze kōdas tengīnsnan.',
+'confirmemail_send' => 'Tenginnais padrūktinsnas kōdan',
+'confirmemail_sent' => 'Padrūktinsnas e-mail tengīntan.',
+'confirmemail_oncreate' => 'Padrūktinsas kōdan pastāi tengīntan en twajjan e-mail adressin.
+Šin kōdan ni ast izkinintan kāi enēilai, adder tebbei prawerru aktiwītun din (etwerrintei gaūtan autengīnsenin en lasātlai) pirzdau ainuntan e-mailas mazīngiskwan en wiki enklaūsnan.',
+'confirmemail_sendfailed' => '{{SITENAME}} ni mazēi tengīntun ti padrūktinsnas e-mail pēismenin.
+Madli izbāndais swajjan e-mail adressin, ana ni turri ēn sen blāndan.
+
+Pustis sistēman ast etwārtai wartīwus pawakīsenin: $1',
+'confirmemail_invalid' => 'Titikrōmiskan padrūktinsnas kōdan.
+Kōdan mazzi būtwei jāu ni aktuālin.',
+'confirmemail_needlogin' => 'Tu turri $1 kāi padrūktinlai swajjan e-mail adressin.',
+'confirmemail_success' => 'Twajā e-mail adressi pastāi padrūktintan.
+Tu mazzi jāu [[Special:UserLogin|enēitwei]] be tuldītun si sen wiki.',
+'confirmemail_loggedin' => 'Twajā e-mail adressi pastāi padrūktintan.',
+'confirmemail_error' => 'Tikka blāndas prei twāise padrūktinsenes enpeisāsnan.',
+'confirmemail_subject' => '{{SITENAME}} e-mail adressis',
+'confirmemail_invalidated' => 'E-mailas adressis padrūktinsna naīkintan',
+'invalidateemail' => 'Naīkinais e-mail padrūktinsnan',
+
+# Scary transclusion
+'scarytranscludedisabled' => '[Interwiki entensīsna ast izklaūtan]',
+'scarytranscludefailed' => '[Šablōnis augaūsna iz $1 ni izpalla]',
+'scarytranscludetoolong' => '[per ilgā URL adressi]',
+
+# Trackbacks
+'trackbackbox' => 'Šisse pāusas "traceback" pawakīsenei:<br />
+$1',
+'trackbackremove' => '([$1 Āupausinais])',
+'trackbacklink' => 'Entensīsenis',
+'trackbackdeleteok' => 'Trackback pastāi āupausintan.',
+
+# Delete conflict
+'deletedwhileediting' => "'''Ēmpirssergīsenis''': Šin pāusan pastāi āupausintan panzdau tū pagaūwa redigītun!",
+'confirmrecreate' => 'Tērpautajs [[User:$1|$1]] ([[User talk:$1|diskusiōni]]) ast aupausīnuns(si) šin pāusan, enkērdai tū pagaūwa redigītun din sen brewīnslin:
+: "$2"
+Madli padrūktinais, anga tū perarwi kwaitēi etteīktun šin pāusan.',
+'recreate' => 'Etteīkeis',
+
+# action=purge
+'confirm_purge_button' => 'Skīstinais',
+'confirm-purge-top' => 'Skīstintun šisse pāusan rānkas minīsnan?',
+'confirm-purge-bottom' => 'Pāusas etnāuninsna skīstina pāusas rānkas minīsnan be kīnina ukaaktuālin wersiōnin waidīnsnan.',
+
+# Multipage image navigation
+'imgmultipageprev' => '← ankstāisin pāusan',
+'imgmultipagenext' => 'ripīntin pāusan →',
+'imgmultigo' => 'Ēis!',
+'imgmultigoto' => 'Ēis en pāusan $1',
+
+# Table pager
+'ascending_abbrev' => 'unzai ēntei',
+'descending_abbrev' => 'zemmai ēntei',
+'table_pager_next' => 'Ripīntin pāusan',
+'table_pager_prev' => 'Ankstāisin pāusan',
+'table_pager_first' => 'Pirman pāusan',
+'table_pager_last' => 'Panzdauman pāusan',
+'table_pager_limit' => 'Waidinnais $1 enpeisāsenins en pāusu',
+'table_pager_limit_submit' => 'Waidinnais',
+'table_pager_empty' => 'Ni ast rezultātai',
+
+# Auto-summaries
+'autosumm-blank' => 'Pāusas skīstintan',
+'autoredircomment' => 'Prawessenis en [[$1]]',
+'autosumm-new' => 'Ast teīkuns(si) nāunan pāusan "$1"',
+
+# Live preview
+'livepreview-loading' => 'Kraūsna...',
+'livepreview-ready' => 'Kraūsna...Gattawan!',
+'livepreview-failed' => 'Dināmiska pirmādira ni dīlai! Bāndais jāukun pirmādiran.',
+'livepreview-error' => 'Sēisna ni izpalla: $1, "$2".
+Bāndais jāukun pirmādiran.',
+
+# Friendlier slave lag warnings
+'lag-warn-normal' => 'Kitawīdinsnas nāunaisis nikāi $1{{PLURAL:$1|sekūndi|sekūndis}} mazzi ni būtwei waidīntan en listei.',
+'lag-warn-high' => 'Dātanbazis sērweres debīkas wīlausnas paggan, kitawīdinsnas nāunaisis nikāi $1{{PLURAL:$1|sekūndi|sekūndis}} mazzi ni būtwei waidīntan en listei.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'Twajā nadirītan listi turri ēn sin {{PLURAL:$1|1 tītelin|$1 tītelins}}, izīmtun diskusiōnis pāusans.',
+'watchlistedit-noitems' => 'Twajā nadirītan listi ni turri ēn sin tītelins.',
+'watchlistedit-normal-title' => 'Redigīs listin stēisan nadirītan',
+'watchlistedit-normal-legend' => 'Āupausinais tītelins iz listin stēisan nadirītan',
+'watchlistedit-normal-explain' => 'Zemmais ast listi stēisan pāusan nadirītan prō tin.
+Kai āupausinlai nadirītan pāusan iz listin, ebzentlis laūkan pagār prei tītelin be gnetteis "Āupausinais ebzentlitans".
+Tū mazzi dīgi tērpautun [[Special:Watchlist/raw|nadirītan listis tekstiskan pagaptin]].',
+'watchlistedit-normal-submit' => 'Āupausinais tītelins',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 tītels|$1 tītelai}} pastāi āupausintan iz twajjan listin stēisan nadirītan:',
+'watchlistedit-raw-title' => 'Redigīs listis appun sen tekstas ēnrankin',
+'watchlistedit-raw-legend' => 'Redigīs listis appun sen tekstas ēnrankin',
+'watchlistedit-raw-explain' => 'Zemmais ast waidīntan tītelai en twajjan nadirītan listin. Listi mazzi būtwei redigītan preidāntei be āupausintei tītelins;
+aīnan tītelin per rīndan.
+Wanginnantei, gnetteis "Etnāuneis listin".
+Tu mazzi dīgi [[Special:Watchlist/edit|tērpautun stāndardiskan editōran]].',
+'watchlistedit-raw-titles' => 'Nadirītai pāusai',
+'watchlistedit-raw-submit' => 'Etnāuninais listin stēisan nadirītan',
+'watchlistedit-raw-done' => 'Twajā nadirītan listi pastāi etnāunintan.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 tītels|$1 tītelai}} pastāi preidātan:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 tītels|$1 tītelai}} pastāi āupausintan:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Waidinnais kitawīdinsnans en listin stēisan nadirītan',
+'watchlisttools-edit' => 'Wīdais be redigīs listin stēisan nadirītan',
+'watchlisttools-raw' => 'Redigīs listis appun sen tekstas ēnrankin',
+
+# Core parser functions
+'unknown_extension_tag' => 'NIwaīsts plattinsenes zentlitajs "$1"',
+
+# Special:Version
+'version' => 'Wersiōni',
+'version-extensions' => 'Instalītai plattinsenei',
+'version-specialpages' => 'Speciālai pāusai',
+'version-parserhooks' => 'Parseras ānsai',
+'version-variables' => 'Wariāblis',
+'version-other' => 'Kitāi',
+'version-hooks' => 'Ānsai',
+'version-extension-functions' => 'Plattinsenes funkciōnis',
+'version-parser-extensiontags' => 'Parseras plattinsenes zentlitajai',
+'version-parser-function-hooks' => 'Parseras funkciōnis ānsai',
+'version-skin-extension-functions' => 'Prusnas plattinsenes funkciōnis',
+'version-hook-name' => 'Ānsas pabilisnā',
+'version-version' => '(Wersiōni $1)',
+'version-license' => 'Licēnci',
+'version-software' => 'Instalītas prōgraminis',
+'version-software-version' => 'Wersiōni',
+
+# Special:FilePath
+'filepath' => 'Lunki en zūrbrukin',
+'filepath-page' => 'Zūrbrukis:',
+'filepath-submit' => 'Lunki',
+'filepath-summary' => 'Šin speciālin pāusan wartinna pastippan lunkin prei zūrbrukin.
+Bildei ast waīdintan en pilnan rezōluciōnin, kitāi zūrbrukin tīpai ast etwertan en prōgramu preirīstasmu prei tennans.
+
+Enpeisāis zūrbrukes pabilīsnan šlāit "{{ns:file}}:" prefiksan.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Laukīs dwigubbintans zūrbrukins',
+'fileduplicatesearch-summary' => 'Laukīs dwigubbintans zūrbrukins pa tenēisan kōntrōlingin summin.
+
+Enpeisāis zūrbrukes pabilīsnan šlāit "{{ns:file}}:" prefiksan.',
+'fileduplicatesearch-legend' => 'Laukīs dwigubbintans zūrbrukins',
+'fileduplicatesearch-filename' => 'Zūrbrukes pabilīsna:',
+'fileduplicatesearch-submit' => 'Laukīs',
+'fileduplicatesearch-info' => '$1 × $2 pikselai<br />Zūrbrukis debban: $3<br />MIME tīps: $4',
+'fileduplicatesearch-result-1' => 'Zūrbrukis "$1" ni turri idēntiskan kōpijan.',
+'fileduplicatesearch-result-n' => 'Zūrbrukis "$1" turri {{PLURAL:$2|1 idēntiskan kōpijan|$2 idēntiskans kōpijans}}.',
+
+# Special:SpecialPages
+'specialpages' => 'Speciālai pāusai',
+'specialpages-note' => '----
+* Nōrmalai speciālai pāusai.
+* <strong class="mw-specialpagerestricted">Speciālai pāusai sen arāikintan preiēisenin.</strong>',
+'specialpages-group-maintenance' => 'Kōnserwaciōnis repōrtai',
+'specialpages-group-other' => 'Kitāi speciālai pāusai',
+'specialpages-group-login' => 'Enēis / registrīs si',
+'specialpages-group-changes' => 'Panzdaumas kitawīdinsnas be registerei',
+'specialpages-group-media' => 'Zūrbrukin repōrtai be enkraūsenei',
+'specialpages-group-users' => 'Tērpautajai be enwarīnsenei',
+'specialpages-group-highuse' => 'Deznimai tērpautas listis',
+'specialpages-group-pages' => 'Pāusan listis',
+'specialpages-group-pagetools' => 'Pāusas pagabtis',
+'specialpages-group-wiki' => 'Wiki dātan be pagabtis',
+'specialpages-group-redirects' => 'Speciālai praweddintei pāusai',
+'specialpages-group-spam' => 'Spamas pagaptis',
+
+# Special:BlankPage
+'blankpage' => 'Pāustan pāusan',
+'intentionallyblankpage' => 'Šin pāusan ast aumenewīngi palaīstan pāustan.',
+
+# External image whitelist
+'external_image_whitelist' => ' #Palaīdeis šan rīndan akrāts kāigi ast.<pre>
+#Enpeisāis zemmais fragmentans stēisan regulāran izbilīsenin (tēr ka ēit sirzdau //)
+#Tenēi wīrst būwusis senkalsītan prei ULRans stēisan izwinandan bildins.
+# Šāi kawīdai passaui wīrst būwusis waidīntan kāigi bildei, kitawīdai tēr autengīnsenin wīrst būwuns waidīntan
+# Līnijas pagaūwintis si sen # ast laikātan per kumentārans
+# En enpeisāsenimans litteran debban ast zentlawingi.
+
+# Enpeisāis wissans izbilīsenins zemmais. Ni kitawīdinais šan līnijan</pre>',
+
+# Special:Tags
+'tags' => 'Izbāndais kitawīdisnans pa tagans',
+'tag-filter' => '[[Special:Tags|Tagan]] filteris:',
+'tag-filter-submit' => 'Filteris',
+'tags-title' => 'Tagai',
+'tags-intro' => 'En šismu pāusan ast listi stēisan tagan, sen kawīdans prōgraminis mazzi pazentlitun redigīsenins be tenēisan zentlisnan.',
+'tags-tag' => 'Tagas pabilīsna',
+'tags-display-header' => 'Tiksenei en listimans stēisan kitawīdisnan',
+'tags-description-header' => 'Pilns zentlisnas ebpeisāsenis',
+'tags-hitcount-header' => 'Pazentlitas kitawīdinsnas',
+'tags-edit' => 'redigīs',
+'tags-hitcount' => '$1 {{PLURAL:$1|kitawīdisna|kitawīdisnas}}',
+
+# Database error messages
+'dberr-header' => 'Šī wīki ni dīlai tikrōmiskai',
+'dberr-again' => 'Bāndais etkūmps kraūtun šin pāusan pa delli minūtins.',
+'dberr-info' => '(Ni mazīngi sēitun si sen dātanbazis sērwerin: $1)',
+'dberr-usegoogle' => 'En šissei kērdan tu mazzi laukītun sen Google.',
+'dberr-outofdate' => 'Waīdais, kāi tenēi mazzi turītun niaktuālins nūsas ēnturas indeksans.',
+'dberr-cachederror' => 'Šin pāusan ast kitse pāusas kōpija iz rānkas minīsnan be mazzi būtwei niaktuālin.',
+
+# HTML forms
+'htmlform-invalid-input' => 'Ast prōblamai sen wērtibins enwestans prō tin',
+'htmlform-select-badoption' => 'Enwesta wērtibi ni ast tikrōmiskan.',
+'htmlform-int-invalid' => 'Enwesta wērtibi ni ast kaīls gīrbis.',
+'htmlform-float-invalid' => 'Enwesta wērtibi ni ast gīrbis.',
+'htmlform-int-toolow' => 'Enwesta wērtibi ast mazzan nikāi minimum per $1',
+'htmlform-int-toohigh' => 'Enwesta wērtibi ast aūktaisin nikāi maksimum per $1',
+'htmlform-selectorother-other' => 'Kitā',
+
+);
diff --git a/languages/messages/MessagesPs.php b/languages/messages/MessagesPs.php
index d36bfa77..78bb6142 100644
--- a/languages/messages/MessagesPs.php
+++ b/languages/messages/MessagesPs.php
@@ -14,8 +14,8 @@ $namespaceNames = array(
NS_MEDIA => 'رسنۍ',
NS_SPECIAL => 'ځانګړی',
NS_TALK => 'خبرې_اترې',
- NS_USER => 'کارونکی',
- NS_USER_TALK => 'د_کارونکي_خبرې_اترې',
+ NS_USER => 'کارن',
+ NS_USER_TALK => 'د_کارن_خبرې_اترې',
NS_PROJECT_TALK => 'د_$1_خبرې_اترې',
NS_FILE => 'دوتنه',
NS_FILE_TALK => 'د_دوتنې_خبرې_اترې',
@@ -30,6 +30,8 @@ $namespaceNames = array(
);
$namespaceAliases = array(
+ 'کارونکی' => NS_USER,
+ 'د_کارونکي_خبرې_اترې' => NS_USER_TALK,
'انځور' => NS_FILE,
'د_انځور_خبرې_اترې' => NS_FILE_TALK,
);
@@ -47,8 +49,15 @@ $specialPageAliases = array(
'Listusers' => array( 'د کارونکو لړليک' ),
'Randompage' => array( 'ناټاکلی، ناټاکلی مخ' ),
'Lonelypages' => array( 'يتيم مخونه' ),
+ 'Uncategorizedpages' => array( 'ناوېشلي مخونه' ),
+ 'Uncategorizedcategories' => array( 'ناوېشلې وېشنيزې' ),
+ 'Uncategorizedimages' => array( 'ناوېشلي انځورونه، ناوېشلې دوتنې' ),
+ 'Uncategorizedtemplates' => array( 'ناوېشلې کينډۍ' ),
'Unusedcategories' => array( 'ناکارېدلي وېشنيزې' ),
'Unusedimages' => array( 'ناکارېدلې دوتنې' ),
+ 'Wantedcategories' => array( 'غوښتلې وېشنيزې' ),
+ 'Wantedfiles' => array( 'غوښتلې دوتنې' ),
+ 'Wantedtemplates' => array( 'غوښتلې کينډۍ' ),
'Shortpages' => array( 'لنډ مخونه' ),
'Longpages' => array( 'اوږده مخونه' ),
'Newpages' => array( 'نوي مخونه' ),
@@ -84,7 +93,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__نيوليکداره__', '__FORCETOC__' ),
'toc' => array( '0', '__نيوليک__', '__TOC__' ),
'noeditsection' => array( '0', '__بی‌برخې__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'روانه_مياشت', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'روانه_مياشت', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'دروانې_مياشت_نوم', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', 'دروانې_مياشت_لنډون', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'نن', 'CURRENTDAY' ),
@@ -93,7 +102,7 @@ $magicWords = array(
'currentyear' => array( '1', 'سږکال', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'داوخت', 'CURRENTTIME' ),
'currenthour' => array( '1', 'دم_ګړۍ', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'سيمه_يزه_مياشت', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'سيمه_يزه_مياشت', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'دسيمه_يزې_مياشت_نوم', 'LOCALMONTHNAME' ),
'localmonthabbrev' => array( '1', 'دسيمه_يزې_مياشت_لنډون', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'سيمه_يزه_ورځ', 'LOCALDAY' ),
@@ -180,6 +189,12 @@ $messages = array(
'underline-never' => 'هېڅکله',
'underline-default' => 'د کتنمل تلواليزې چارې',
+# Font style option in Special:Preferences
+'editfont-default' => 'د کتنمل تلواليزې چارې',
+'editfont-monospace' => 'يو واټنيزه ليکبڼه',
+'editfont-sansserif' => 'سان سېرېف ليکبڼه',
+'editfont-serif' => 'سېرېف ليکبڼه',
+
# Dates
'sunday' => 'اتوار',
'monday' => 'ګل',
@@ -239,13 +254,15 @@ $messages = array(
'category-media-header' => '"$1" رسنۍ په وېشنيزه کې',
'category-empty' => "''تر اوسه پورې همدا وېشنيزه هېڅ کوم مخ يا کومه رسنيزه دوتنه نلري.''",
'hidden-categories' => '{{PLURAL:$1|پټه وېشنيزه|پټې وېشنيزې}}',
-'hidden-category-category' => 'پټې وېشنيزې', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'پټې وېشنيزې',
'category-subcat-count' => '{{PLURAL:$2|په دې وېشنيزه کې دا لاندې وړه وېشنيزه ده.|په دې وېشنيزه کې له ټولټال $2 نه {{PLURAL:$1|وړه وېشنيزه ده|$1 وړې وېشنيزې دي}}.}}',
'category-subcat-count-limited' => 'دا وېشنيزه دا لاندې {{PLURAL:$1|يوه څېرمه وېشنيزه|$1 څېرمه وېشنيزې}} لري.',
'category-article-count' => '{{PLURAL:$2|په همدې وېشنيزه کې يواځې دغه لاندينی مخ شته.|دا {{PLURAL:$1|لاندينی مخ|$1 لانديني مخونه}}، له ټولټال $2 مخونو نه په دې وېشنيزه کې شته.}}',
'category-article-count-limited' => 'په دې وېشنيزه کې {{PLURAL:$1|يوه دوتنه ده|$1 دوتنې دي}}.',
'category-file-count-limited' => 'په اوسنۍ وېشنيزه کې {{PLURAL:$1|يوه دوتنه ده|$1 دوتنې دي}}.',
'listingcontinuesabbrev' => 'پرله پسې',
+'index-category' => 'ليکلړلرونکي مخونه',
+'noindex-category' => 'بې ليکلړه مخونه',
'mainpagetext' => "'''MediaWiki په برياليتوب سره نصب شو.'''",
'mainpagedocfooter' => "Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
@@ -255,10 +272,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ د ميډياويکي ډېرځليزې پوښتنې]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'په اړه',
-'article' => 'د منځپانګې مخ',
-'newwindow' => '(په نوې کړکۍ کې پرانيستل کېږي)',
-'cancel' => 'ناګارل',
+'about' => 'په اړه',
+'article' => 'د منځپانګې مخ',
+'newwindow' => '(په نوې کړکۍ کې پرانيستل کېږي)',
+'cancel' => 'ناګارل',
+'moredotdotdot' => 'نور ...',
+'mypage' => 'زما پاڼه',
+'mytalk' => 'زما خبرې اترې',
+'anontalk' => 'ددې IP لپاره خبرې اترې',
+'navigation' => 'ګرځښت',
+'and' => '&#32;او',
+
+# Cologne Blue skin
'qbfind' => 'موندل',
'qbbrowse' => 'سپړل',
'qbedit' => 'سمول',
@@ -266,15 +291,34 @@ $messages = array(
'qbpageinfo' => 'متن',
'qbmyoptions' => 'زما پاڼې',
'qbspecialpages' => 'ځانګړي مخونه',
-'moredotdotdot' => 'نور ...',
-'mypage' => 'زما پاڼه',
-'mytalk' => 'زما خبرې اترې',
-'anontalk' => 'ددې IP لپاره خبرې اترې',
-'navigation' => 'ګرځښت',
-'and' => '&#32;او',
-
-# Metadata in edit box
-'metadata_help' => 'مېټاډاټا:',
+'faq' => 'ډ-ځ-پ',
+'faqpage' => 'Project:ډ-ځ-پ',
+
+# Vector skin
+'vector-action-addsection' => 'سرليکونه ورګډول',
+'vector-action-delete' => 'ړنګول',
+'vector-action-move' => 'لېږدول',
+'vector-action-protect' => 'پروژه',
+'vector-action-undelete' => 'ناړنګول',
+'vector-action-unprotect' => 'ناژغورل',
+'vector-namespace-category' => 'وېشنيزه',
+'vector-namespace-help' => 'لارښود مخ',
+'vector-namespace-image' => 'دوتنه',
+'vector-namespace-main' => 'مخ',
+'vector-namespace-media' => 'د رسنۍ مخ',
+'vector-namespace-mediawiki' => 'پيغام',
+'vector-namespace-project' => 'د پروژې مخ',
+'vector-namespace-special' => 'ځانګړی مخ',
+'vector-namespace-talk' => 'خبرې اترې',
+'vector-namespace-template' => 'کينډۍ',
+'vector-namespace-user' => 'کارن مخ',
+'vector-view-create' => 'جوړول',
+'vector-view-edit' => 'سمول',
+'vector-view-history' => 'پېښليک کتل',
+'vector-view-view' => 'لوستل',
+'vector-view-viewsource' => 'سرچينه کتل',
+'actions' => 'کړنې',
+'namespaces' => 'نوم-تشيالونه',
'errorpagetitle' => 'تېروتنه',
'returnto' => 'بېرته $1 ته وګرځه.',
@@ -324,18 +368,22 @@ $messages = array(
'otherlanguages' => 'په نورو ژبو کې',
'redirectedfrom' => '(له $1 نه مخ ګرځېدلی)',
'redirectpagesub' => 'د مخ ګرځونې مخ',
-'lastmodifiedat' => 'دا مخ وروستی ځل په $2، $1 بدلون موندلی.', # $1 date, $2 time
+'lastmodifiedat' => 'دا مخ وروستی ځل په $2، $1 بدلون موندلی.',
'viewcount' => 'همدا مخ {{PLURAL:$1|يو وار|$1 واره}} کتل شوی.',
'protectedpage' => 'ژغورلی مخ',
'jumpto' => 'ورټوپ کړه:',
'jumptonavigation' => 'ګرځښت',
'jumptosearch' => 'پلټل',
+'view-pool-error' => 'اوبخښۍ، دم ګړۍ پالنګران د ډېر بارېدو ستونزې سره مخامخ شوي.
+ډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.
+لطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'د {{SITENAME}} په اړه',
'aboutpage' => 'Project:په اړه',
'copyright' => 'دا مېنځپانګه د $1 اجازتليک له مخې ستاسې لاسرسي ته پرته ده.',
-'copyrightpagename' => 'د {{SITENAME}} رښتې',
'copyrightpage' => '{{ns:project}}:رښتې',
'currentevents' => 'اوسنۍ پېښې',
'currentevents-url' => 'Project:تازه پېښې',
@@ -343,14 +391,12 @@ $messages = array(
'disclaimerpage' => 'Project:ټولګړی ردادعاليک',
'edithelp' => 'د لارښود سمون',
'edithelppage' => 'Help:سمونه',
-'faq' => 'ډ-ځ-پ',
-'faqpage' => 'Project:ډ-ځ-پ',
'helppage' => 'Help:نيوليک',
'mainpage' => 'لومړی مخ',
'mainpage-description' => 'لومړی مخ',
'policy-url' => 'Project:تګلاره',
'portal' => 'د ټولنې تانبه',
-'portal-url' => 'Project:د ټولنې ورټک',
+'portal-url' => 'Project:د ټولنې تانبه',
'privacy' => 'د محرميت تګلاره',
'privacypage' => 'Project:د محرميت_تګلاره',
@@ -425,7 +471,8 @@ $messages = array(
'filenotfound' => '"$1" په نوم دوتنه مو و نه شوه موندلای.',
'fileexistserror' => 'د "$1" په نامه دوتنه نه ليکل کېږي: دوتنه د پخوا نه دلته شته',
'badarticleerror' => 'دا کړنه پدې مخ نه شي ترسره کېدلای.',
-'cannotdelete' => 'د اړونده مخ يا دوتنې ړنګېدنه ترسره نه شوه. (کېدای شي چې دا د بل چا لخوا نه پخوا ړنګه شوې وي.)',
+'cannotdelete' => 'د "$1" مخ يا دوتنې ړنګېدنه ترسره نه شوه.
+کېدای شي چې وار دمخې دا کوم بل چا ړنګه کړې وي.',
'badtitle' => 'ناسم سرليک',
'badtitletext' => 'ستاسې د غوښتل شوي مخ سرليک سم نه وو، يا مو د سرليک ځای تش وو او يا هم د ژبو خپلمنځي تړنې څخه يا د ويکي ګانو خپلمنځي سرليکونو څخه يو ناسم توری مو پکې کارولی وي.
کېدای شي چې ستاسې په ورکړ شوي سرليک کې يو يا څو داسې توري وي چې د سرليک په توګه بايد و نه کارېږي.',
@@ -444,7 +491,6 @@ $messages = array(
'virus-unknownscanner' => 'ناڅرګند ضدويروس:',
# Login and logout pages
-'logouttitle' => 'کارن-حساب نه وتنه',
'logouttext' => "'''تاسې اوس د غونډال نه ووتلی.'''
تاسې کولای شی چې د کارن-نوم نه پرته په ورکنومي توګه {{SITENAME}} وکاروی، او يا هم په همدې او يا کوم بل کارن-نوم، يو ځل [[Special:UserLogin|بيا غونډال ته ورننوځۍ]].
@@ -452,7 +498,6 @@ $messages = array(
'welcomecreation' => '==$1 ښه راغلاست! ==
ستاسې کارن-حساب جوړ شو. لطفاً د [[Special:Preferences|{{SITENAME}} غوره توبونو]] ټاکل مو مه هېروی.',
-'loginpagetitle' => 'کارن-حساب ته ننوتنه',
'yourname' => 'کارن-نوم:',
'yourpassword' => 'پټنوم:',
'yourpasswordagain' => 'پټنوم بيا وليکه',
@@ -462,6 +507,7 @@ $messages = array(
'nav-login-createaccount' => 'ننوتل / کارن-حساب جوړول',
'loginprompt' => 'ددې لپاره چې {{SITENAME}} کې ننوځۍ نو بايد ستاسې د کمپيوټر کوکيز چارن وي.',
'userlogin' => 'ننوتل / کارن-حساب جوړول',
+'userloginnocreate' => 'ننوتل',
'logout' => 'وتل',
'userlogout' => 'وتل',
'notloggedin' => 'غونډال کې نه ياست ننوتي',
@@ -474,25 +520,8 @@ $messages = array(
'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
'userexists' => 'کوم کارن نوم چې تاسې ورکړ هغه بل چا کارولی.
لطفاً يو بل نوم وټاکۍ.',
-'youremail' => 'برېښليک *',
-'username' => 'کارن-نوم:',
-'uid' => 'د کارن پېژندنه:',
-'prefs-memberingroups' => 'د {{PLURAL:$1|ډلې|ډلو}} غړی:',
-'yourrealname' => 'اصلي نوم:',
-'yourlanguage' => 'ژبه:',
-'yournick' => 'کورنی نوم:',
-'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
-بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
-'yourgender' => 'جنس:',
-'gender-unknown' => 'ناڅرګنده',
-'gender-male' => 'نارينه',
-'gender-female' => 'ښځه',
-'email' => 'برېښليک',
-'prefs-help-realname' => 'د اصلي نوم ليکل ستاسو په خوښه دی خو که تاسو خپل اصلي نوم وټاکۍ پدې سره به ستاسو ټول کارونه او ونډې ستاسو د نوم په اړوندولو کې وکارېږي.',
'loginerror' => 'د ننوتنې ستونزه',
-'prefs-help-email' => 'د برېښليک ليکل ستاسې په خوښه دی، خو په ورکړې سره به يې د يوه نوي پټنوم درلېږلو چار آسانه کړي هغه هم کله چې تاسې نه خپل پټنوم هېر شوی وي.
-دا هم ستاسې خپله خوښه ده چې نورو کارنانو ته اجازه ورکړی چې تاسې سره د کارن-نوم او يا هم د کارن د خبرې اترو لخوا، پرته له دې چې ستاسې پېژندنه وشي، اړيکې ټينګې کړي.',
-'prefs-help-email-required' => 'ستاسو د برېښليک پته پکار ده.',
+'createaccounterror' => 'کارن-حساب مو جوړ نه شو: $1',
'nocookiesnew' => 'ستاسې کارن-حساب جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
{{SITENAME}} کې د ننوتلو لپاره کوکيز کارېږي.
او ستاسې د کتنمل کوکيز ناچارن دي.
@@ -510,8 +539,8 @@ $messages = array(
'nouserspecified' => 'تاسې ځان ته کوم کارن نوم نه دی ځانګړی کړی.',
'wrongpassword' => 'ناسم پټنوم مو ليکلی. لطفاً يو ځل بيا يې وليکۍ.',
'wrongpasswordempty' => 'تاسې پټنوم نه دی ليکلی. لطفاً سر له نوي يې وليکۍ.',
-'passwordtooshort' => 'ستاسو پټنوم ناسم دی او يا هم ډېر لنډ دی.
-بايد چې پټنوم مو لږ تر لږه {{PLURAL:$1|1 توری|$1 توري}} ولري او پکار ده چې د پټنوم او کارن-نوم ترمېنځ مو هم توپير وي.',
+'passwordtooshort' => 'بايد چې پټنوم مو لږ تر لږه {{PLURAL:$1|1 توری|$1 توري}} وي.',
+'password-name-match' => 'ستاسې پټنوم بايد ستاسې د کارن-نوم سره توپير ولري.',
'mailmypassword' => 'نوی پټنوم برېښليک کول',
'passwordremindertitle' => 'د {{SITENAME}} لپاره نوی لنډمهاله پټنوم',
'passwordremindertext' => 'يو چا (کېدای شي چې تاسې پخپله، د $1 IP پتې نه)
@@ -522,6 +551,7 @@ $messages = array(
که چېرته تاسې نه پرته کوم بل چا دغه غوښتنه کړې وي او يا هم تاسې ته خپل پټنوم در پزړه شوی وي او تاسې خپل اصلي پټنوم بدلول نه غواړۍ، نو تاسې همدا پيغام بابېزه وګڼۍ او د پخوا په څېر خپل اصلي پټنوم وکاروی.',
'noemail' => 'د "$1" کارن لپاره هېڅ کومه برېښليک پته نه ده ثبته شوې.',
+'noemailcreate' => 'تاسې ته پکار ده چې يوه سمه برېښليک پته وليکۍ',
'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د هغه/هغې د برېښليک پتې ته ولېږل شو.
لطفاً کله چې پټنوم مو ترلاسه کړ نو بيا غونډال ته ننوځۍ.',
'blocked-mailpassword' => 'ستاسې په IP پتې بنديز لګېدلی او تاسې نه شی کولای چې ليکنې وکړی، په همدې توګه تاسې نه شی کولای چې د پټنوم د پرځای کولو کړنې وکاروی دا ددې لپاره چې د وراني مخنيوی وشي.',
@@ -548,12 +578,11 @@ $messages = array(
'resetpass_submit' => 'پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ',
'resetpass_success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
اوس غونډال کې د ورننوتلو په حال کې يو ...',
-'resetpass_bad_temporary' => 'لنډمهالی پټنوم مو سم نه دی. کېدای شي تاسو وار دمخې خپل پټنوم برياليتوب سره بدل کړی وي او يا هم د نوي لنډمهالي پټنوم غوښتنه مو کړې وي.',
'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
'resetpass-no-info' => 'همدې مخ ته د لاسرسي موندلو پخاطر تاسې ته پکار ده چې لومړی غونډال ته ورننوځۍ.',
'resetpass-submit-loggedin' => 'پټنوم بدلول',
+'resetpass-submit-cancel' => 'ناګارل',
'resetpass-temp-password' => 'لنډمهالی پټنوم:',
-'resetpass-logentry' => 'د $1 لپاره پټنوم بدل شو',
# Edit page toolbar
'bold_sample' => 'روڼ ليک',
@@ -605,12 +634,10 @@ $messages = array(
'blockedoriginalsource' => "د '''$1''' سرچينې لاندې ښودل شوي:",
'whitelistedittitle' => 'که د سمادولو تکل لری نو بايد غونډال ته ورننوځۍ.',
'whitelistedittext' => 'ددې لپاره چې سمادول ترسره کړی تاسو بايد $1.',
-'confirmedittitle' => 'د سمونې د کړنو لپاره د برېښليک تاييد وکړی',
'loginreqtitle' => 'غونډال کې ننوتنه پکار ده',
'loginreqlink' => 'ننوتل',
'loginreqpagetext' => 'د نورو مخونو د کتلو لپاره تاسو بايد $1 وکړۍ.',
'accmailtitle' => 'پټنوم ولېږل شو.',
-'accmailtext' => 'د "$1" لپاره پټنوم $2 ته ولېږل شو.',
'newarticle' => '(نوی)',
'newarticletext' => "تاسې د يوې داسې تړنې څارنه کړې چې لا تر اوسه پورې نه شته.
که همدا مخ ليکل غواړۍ، نو په لانديني چوکاټ کې خپل متن وټاپۍ (د لا نورو مالوماتو لپاره د [[{{MediaWiki:Helppage}}|لارښود مخ]] وګورۍ).
@@ -622,6 +649,7 @@ $messages = array(
او يا [{{fullurl:{{FULLPAGENAME}}|action=edit}} همدا مخ سم کړی]</span>.',
'userpage-userdoesnotexist' => 'د "$1" کارن حساب نه دی ثبت شوی.
لطفاً ځان ډاډه کړۍ چې آيا تاسې په رښتيا همدا مخ جوړول که سمول غواړۍ.',
+'userpage-userdoesnotexist-view' => 'د "$1" کارن-حساب نه دی ثبت شوی.',
'clearyourcache' => "'''يادونه:''' د غوره توبونو د خوندي کولو وروسته، ددې لپاره چې تاسو خپل سر ته رسولي ونجونه وګورۍ نو پکار ده چې د خپل بروزر ساتل شوې حافظه تازه کړی. د '''Mozilla / Firefox / Safari:''' لپاره د ''Shift'' تڼۍ نيولې وساتی کله مو چې په ''Reload''، ټک واهه، او يا هم ''Ctrl-Shift-R'' تڼۍ کېښکاږۍ (په Apple Mac کمپيوټر باندې ''Cmd-Shift-R'' کېښکاږۍ); '''IE:''' د ''Ctrl'' تڼۍ کېښکاږۍ کله مو چې په ''Refresh'' ټک واهه، او يا هم د ''Ctrl-F5'' تڼۍ کېښکاږۍ; '''Konqueror:''' بروزر کې يواځې ''Reload'' ته ټک ورکړۍ، او يا په ''F5''; د '''Opera''' کارونکو ته پکار ده چې په بشپړه توګه د خپل کمپيوټر ساتل شوې حافظه تازه کړي چې پدې توګه کېږي ''Tools→Preferences''.",
'updated' => '(تازه)',
'note' => "'''يادونه:'''",
@@ -637,12 +665,16 @@ $messages = array(
لطفاً د مخ په لنډولو او په وړو برخو وېشلو باندې غور وکړی.'''",
'longpageerror' => "'''ستونزه: کوم متن چې دلته تاسو ليکلی، $1 کيلوبايټه اوږد دی او دا د همدې مخ د لوړترين ټاکلي بريده، $2 کيلوبايټه، څخه اوږد دی.
ستاسو متن نه شي خوندي کېدلای.'''",
-'semiprotectedpagewarning' => "'''يادونه:''' همدا مخ تړل شوی دی او يواځې ثبت شوي کارونکي کولای شي چې په دې مخ کې بدلونونه راولي.",
+'protectedpagewarning' => "'''ګواښنه: همدا مخ تړل شوی او يوازې هغه کارنان په دې مخ کې بدلونونه راوستلای شي چې د پازوالۍ د آسانتياوو نه برخمن دي.'''
+ستاسې د مالوماتو لپاره د وروستني يادښت متن دلته په دې توګه راوړل شوی:",
+'semiprotectedpagewarning' => "'''پاملرنه:''' دا مخ تړل شوی او يواځې ثبت شوي کارنان کولای شي چې په دې مخ کې بدلونونه راولي.
+ستاسې د مالوماتو لپاره د وروستني يادښت متن دلته په دې توګه راوړل شوی:",
'cascadeprotectedwarning' => "'''ګواښنه:''' همدا مخ تړل شوی دی او يوازې هغه کارنان په دې مخ کې بدلونونه راوستلای شي چې د پازوالۍ د آسانتياوو نه برخمن دي، دا په دې خاطر چې همدا مخ د {{PLURAL:$1|لانديني مخ|لاندينيو مخونو}} په ځوړاوبيزې ژغورنې کې ورګډ دی:",
-'titleprotectedwarning' => "'''ګواښنه: همدا مخ تړل شوی دی او د دې د جوړولو لپاره تاسې ته د [[Special:ListGroupRights|ځانګړو رښتو]] د ترلاسه کولو اړتيا ده.'''",
-'templatesused' => 'په دې مخ کارېدلې کينډۍ:',
-'templatesusedpreview' => 'په دې مخکتنه کې کارېدلې کينډۍ:',
-'templatesusedsection' => 'په دې برخه کارېدلي کينډۍ:',
+'titleprotectedwarning' => "'''ګواښنه: همدا مخ تړل شوی دی او د دې د جوړولو لپاره تاسې ته د [[Special:ListGroupRights|ځانګړو رښتو]] د ترلاسه کولو اړتيا ده.'''
+ستاسې د مالوماتو لپاره د وروستني يادښت متن دلته په دې توګه راوړل شوی:",
+'templatesused' => 'په دې مخ کارېدلې {{PLURAL:$1|کينډۍ|کينډۍ}}:',
+'templatesusedpreview' => 'يه دې مخليدنه کارېدلې {{PLURAL:$1|کينډۍ|کينډۍ}}:',
+'templatesusedsection' => 'په دې برخه کې کارېدلي {{PLURAL:$1|کينډۍ|کينډۍ}}:',
'template-protected' => '(ژغورلی)',
'template-semiprotected' => '(نيم-ژغورلی)',
'hiddencategories' => 'دا مخ د {{PLURAL:$1|1 پټې وېشنيزې|$1 پټو وېشنيزو}} يو غړی دی:',
@@ -652,10 +684,11 @@ $messages = array(
'nocreate-loggedin' => 'تاسو د نوو مخونو د جوړولو اجازه نه لری.',
'permissionserrors' => 'د اجازې ستونزې',
'permissionserrorstext-withaction' => 'تاسې د $2 اجازه نه لری، دا د {{PLURAL:$1|دغه سبب|دغو سببونو}} پخاطر:',
-'recreate-deleted-warn' => "'''ګواښنه: تاسو د يو داسې مخ بياجوړونه کوی کوم چې يو ځل پخوا ړنګ شوی وو.'''
+'recreate-moveddeleted-warn' => "'''ګواښنه: تاسې د يوه داسې مخ بياجوړونه کوۍ کوم چې يو ځل پخوا ړنګ شوی وو.'''
-پکار ده چې تاسو په دې ځان پوه کړی چې ايا دا تاسو ته وړ ده چې د همدې مخ سمونه په پرله پسې توګه وکړی.
-ستاسو د اسانتياوو لپاره د همدې مخ د ړنګېدلو يادښت هم ورکړ شوی:",
+پکار ده چې تاسې په دې ځان پوه کړۍ چې ايا دا تاسې ته وړ ده چې د همدې مخ جوړول په پرله پسې توګه وکړۍ.
+ستاسې د اسانتياوو لپاره د همدې مخ د ړنګېدلو يادښت هم ورکړ شوی:",
+'log-fulllog' => 'بشپړ يادښت کتل',
'edit-conflict' => 'د سمولو خنډ',
'edit-already-exists' => 'په دې نوم يو نوی مخ جوړ نه شو.
پدې نوم د پخوا نه يو مخ شته.',
@@ -667,8 +700,9 @@ $messages = array(
'viewpagelogs' => 'د دې مخ يادښتونه کتل',
'nohistory' => 'ددې مخ لپاره د سمادېدنې هېڅ کوم پېښليک نه شته.',
'currentrev' => 'اوسنۍ بڼه',
-'revisionasof' => 'د $1 پورې شته مخليدنه',
-'revision-info' => 'د $1 پورې شته مخليدنه، د $2 لخوا ترسره شوې', # Additionally available: $3: revision id
+'currentrev-asof' => 'د $1 پورې تازه بڼه',
+'revisionasof' => 'د $1 بڼه',
+'revision-info' => 'د $1 پورې شته مخليدنه، د $2 لخوا ترسره شوې',
'previousrevision' => '← زړه بڼه',
'nextrevision' => '← نوې بڼه',
'currentrevisionlink' => 'اوسنۍ بڼه',
@@ -681,7 +715,7 @@ $messages = array(
لنډيز: (اوس) = د اوسنۍ بڼې سره توپير،
(وروست) = د وروستۍ بڼې سره توپير، و = وړه سمونه.',
'history-fieldset-title' => 'پېښليک سپړل',
-'deletedrev' => '[ړنګ شو]',
+'history-show-deleted' => 'يواځې ړنګ شوي',
'histfirst' => 'پخواني',
'histlast' => 'تازه',
'historysize' => '({{PLURAL:$1|1 بايټ|$1 بايټونه}})',
@@ -689,20 +723,33 @@ $messages = array(
# Revision feed
'history-feed-title' => 'د مخکتنو پېښليک',
-'history-feed-item-nocomment' => '$1 په $2', # user at time
+'history-feed-item-nocomment' => '$1 په $2',
# Revision deletion
-'rev-delundel' => 'ښکاره کول/ پټول',
-'revisiondelete' => 'د ړنګولو/ناړنګولو مخکتنې',
-'revdelete-log' => 'سبب:',
-'revdel-restore' => 'ښکارېدنه بدلول',
-'pagehist' => 'د مخ پېښليک',
-'deletedhist' => 'د ړنګولو پېښليک',
-'revdelete-content' => 'مېنځپانګه',
-'revdelete-summary' => 'لنډيز سمول',
-'revdelete-uname' => 'کارن-نوم',
-'revdelete-hid' => '$1 پټول',
-'revdelete-unhid' => '$1 ښکاره کول',
+'rev-delundel' => 'ښکاره کول/ پټول',
+'rev-showdeleted' => 'ښکاره کول',
+'revisiondelete' => 'د ړنګولو/ناړنګولو مخکتنې',
+'revdelete-show-file-submit' => 'هو',
+'revdelete-radio-same' => '(مه بدلوه)',
+'revdelete-radio-set' => 'هو',
+'revdelete-radio-unset' => 'نه',
+'revdelete-log' => 'سبب:',
+'revdel-restore' => 'ښکارېدنه بدلول',
+'pagehist' => 'د مخ پېښليک',
+'deletedhist' => 'د ړنګولو پېښليک',
+'revdelete-content' => 'مېنځپانګه',
+'revdelete-summary' => 'لنډيز سمول',
+'revdelete-uname' => 'کارن-نوم',
+'revdelete-hid' => '$1 پټول',
+'revdelete-unhid' => '$1 ښکاره کول',
+'revdelete-reason-dropdown' => '*د ړنګولو ټولګړي سببونه
+** د خپرېدو د رښتو سرغړونه
+** ناسم شخصي مالومات
+** Potentially libelous information',
+'revdelete-otherreason' => 'بل/اضافي سبب:',
+'revdelete-reasonotherlist' => 'بل سبب',
+'revdelete-edit-reasonlist' => 'د ړنګولو سببونه سمول',
+'revdelete-offender' => 'د مخکتنې ليکوال:',
# History merging
'mergehistory-from' => 'د سرچينې مخ:',
@@ -719,12 +766,6 @@ $messages = array(
'compareselectedversions' => 'ټاکلې بڼې سره پرتلل',
'editundo' => 'ناکړ',
'diff-multi' => '({{PLURAL:$1|يوه منځګړې مخليدنه نه ده ښکاره شوې|$1 منځګړې مخليدنې نه دي ښکاره شوي}}.)',
-'diff-movedto' => '$1 ته ولېږدېده',
-'diff-changedto' => '$1 ته بدل شو',
-'diff-src' => 'سرچينه',
-'diff-table' => "يو '''لښتليک'''",
-'diff-img' => "يو '''انځور'''",
-'diff-font' => "'''ليکبڼه'''",
# Search results
'searchresults' => 'د پلټنې پايلې',
@@ -732,21 +773,21 @@ $messages = array(
'searchresulttext' => 'په {{SITENAME}} کې د لټون د نورو مالوماتو لپاره، [[{{MediaWiki:Helppage}}|{{int:لارښود}}]] وګورۍ.',
'searchsubtitle' => 'تاسې د \'\'\'[[:$1]]\'\'\' لپاره پلټنه کړې ([[Special:Prefixindex/$1|ټول هغه مخونه چې په "$1" پېلېږي]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ټول هغه مخونه چې "$1" سره تړنې لري]])',
'searchsubtitleinvalid' => "تاسې د '''$1''' لټون کړی",
-'noexactmatch' => "'''تر اوسه پورې د \"\$1\" په نوم هېڅ کوم مخ نشته.''' تاسو کولای شی چې [[:\$1|همدا مخ جوړ کړی]].",
-'noexactmatch-nocreate' => "'''د \"\$1\" په سرليک هېڅ کوم مخ نشته.'''",
'titlematches' => 'د مخ سرليک ورسره ورته دی',
'notitlematches' => 'د هېڅ يوه مخ سرليک ورسره ورته نه دی',
'textmatches' => 'د مخ متن ورسره ورته دی',
'notextmatches' => 'د هېڅ کوم مخ متن ورسره سمون نه خوري',
-'prevn' => 'تېر $1',
-'nextn' => 'راتلونکي $1',
+'prevn' => 'تېر {{PLURAL:$1|$1}}',
+'nextn' => 'راتلونکي {{PLURAL:$1|$1}}',
'prevn-title' => 'تېر $1 {{PLURAL:$1|پايله|پايلې}}',
'nextn-title' => 'راتلونکې $1 {{PLURAL:$1|پايله|پايلې}}',
'shown-title' => 'په هر مخ $1 {{PLURAL:$1|پايله|پايلې}} ښکاره کول',
-'viewprevnext' => '($1) ($2) ($3) کتل',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) کتل',
'searchmenu-legend' => 'د پلټلو خوښنې',
'searchhelp-url' => 'Help:لړليک',
-'searchprofile-images' => 'دوتنې',
+'searchprofile-articles' => 'مېنځپانګيز مخونه',
+'searchprofile-project' => 'د لارښود او پروژې مخونه',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'هرڅه',
'searchprofile-advanced' => 'پرمختللی',
'searchprofile-articles-tooltip' => 'په $1 کې پلټل',
@@ -765,8 +806,10 @@ $messages = array(
'search-mwsuggest-disabled' => 'له وړانديزونو نه پرته',
'search-relatedarticle' => 'اړونده',
'mwsuggest-disable' => 'د AJAX وړانديزونه ناچارن کول',
+'searcheverything-enable' => 'په ټولو نوم-تشيالونو کې پلټل',
'searchrelated' => 'اړونده',
'searchall' => 'ټول',
+'showingresultsheader' => "د «'''$4'''» لپاره {{PLURAL:$5|له '''$1''' نه تر '''$3''' پايله|له '''$1 نه تر $2''' پايلې، ټولې پايلې '''$3''' }}",
'nonefound' => "'''يادښت''': يوازې يو څو نوم-تشيالونو په تلواليزه توګه پلټل کېږي.
د ''ټول:'' مختاړي په کارولو سره به ستاسې د پلټنې لپاره، په ټوله مېنځپانګه کې پلټنه وشي (د خبرواترو، کينډۍ او نورو مخونو په ګډون), او يا هم د خپلې خوښې نوم-تشيال د مختاړي په توګه وکاروۍ.",
'powersearch' => 'ژوره پلټنه',
@@ -774,62 +817,96 @@ $messages = array(
'powersearch-ns' => 'په نوم-تشيالونو کې پلټنه:',
'powersearch-redir' => 'مخ ګرځونې په لړليک کې اوډل',
'powersearch-field' => 'پلټنه د',
+'powersearch-togglelabel' => 'کره کتل:',
+'powersearch-toggleall' => 'ټول',
+'powersearch-togglenone' => 'هېڅ',
'search-external' => 'باندنۍ پلټنه',
+# Quickbar
+'qbsettings-none' => 'هېڅ',
+
# Preferences page
-'preferences' => 'غوره توبونه',
-'mypreferences' => 'زما غوره توبونه',
-'prefs-edits' => 'د سمادونو شمېر:',
-'prefsnologin' => 'غونډال کې نه ياست ننوتي',
-'prefsnologintext' => 'د دې لپاره چې خپل غوره توبونه مو وټاکی، نو پکار ده چې لومړی تاسو غونډال کې <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ننوځی]</span>.',
-'qbsettings-none' => 'هېڅ',
-'changepassword' => 'پټنوم بدلول',
-'skin' => 'بڼه',
-'skin-preview' => 'مخکتنه',
-'math' => 'شمېرپوهنه',
-'dateformat' => 'د نېټې بڼه',
-'datedefault' => 'هېڅ نه ټاکل',
-'datetime' => 'نېټه او وخت',
-'math_unknown_error' => 'ناجوته ستونزه',
-'math_unknown_function' => 'ناجوته کړنه',
-'prefs-personal' => 'د کارن پېژنليک',
-'prefs-rc' => 'وروستي بدلونونه',
-'prefs-watchlist' => 'کتنلړ',
-'prefs-watchlist-days' => 'د ورځو شمېر چې په کتلي لړليک کې به ښکاري:',
-'prefs-misc' => 'بېلابېل',
-'prefs-resetpass' => 'پټنوم بدلول',
-'saveprefs' => 'خوندي کول',
-'resetprefs' => 'بيا سمول',
-'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
-'textboxsize' => 'سمادېدنه',
-'prefs-edit-boxsize' => 'د سمون کړکۍ کچه.',
-'rows' => 'ليکې:',
-'columns' => 'ستنې:',
-'searchresultshead' => 'پلټل',
-'recentchangesdays' => 'د هغو ورځو شمېر وټاکی چې په وروستي بدلونو کې يې ليدل غواړی:',
-'recentchangescount' => 'د هغو سمادونو شمېر چې په وروستي بدلونو کې يې ليدل غواړی:',
-'savedprefs' => 'ستاسو غوره توبونه خوندي شوه.',
-'timezonelegend' => 'د وخت سيمه:',
-'localtime' => 'سيمه ايز وخت:',
-'timezoneselect' => 'د وخت سيمه:',
-'servertime' => 'د پالنګر وخت:',
-'guesstimezone' => 'له کتنمل نه ډکول',
-'timezoneregion-africa' => 'افريقا',
-'timezoneregion-america' => 'امريکا',
-'timezoneregion-antarctica' => 'انټارکټيکا',
-'timezoneregion-arctic' => 'آرکټيک',
-'timezoneregion-asia' => 'آسيا',
-'timezoneregion-atlantic' => 'د اطلس سمندر',
-'timezoneregion-australia' => 'آسټراليا',
-'timezoneregion-europe' => 'اروپا',
-'timezoneregion-indian' => 'هندی سمندر',
-'timezoneregion-pacific' => 'آرام سمندر',
-'allowemail' => 'د نورو کارونکو لخوا د برېښليک رالېږل چارن کړه',
-'prefs-searchoptions' => 'د پلټلو خوښنې',
-'prefs-namespaces' => 'نوم-تشيالونه',
-'defaultns' => 'په دغو نوم-تشيالونو کې د ټاکل شوو سمونونو له مخې لټون وکړی:',
-'default' => 'تلواليز',
-'files' => 'دوتنې',
+'preferences' => 'غوره توبونه',
+'mypreferences' => 'زما غوره توبونه',
+'prefs-edits' => 'د سمادونو شمېر:',
+'prefsnologin' => 'غونډال کې نه ياست ننوتي',
+'prefsnologintext' => 'د دې لپاره چې خپل غوره توبونه مو وټاکی، نو پکار ده چې لومړی تاسو غونډال کې <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ننوځی]</span>.',
+'changepassword' => 'پټنوم بدلول',
+'prefs-skin' => 'بڼه',
+'skin-preview' => 'مخکتنه',
+'prefs-math' => 'شمېرپوهنه',
+'datedefault' => 'هېڅ نه ټاکل',
+'prefs-datetime' => 'نېټه او وخت',
+'prefs-personal' => 'د کارن پېژنليک',
+'prefs-rc' => 'وروستي بدلونونه',
+'prefs-watchlist' => 'کتنلړ',
+'prefs-watchlist-days' => 'د ورځو شمېر چې په کتلي لړليک کې به ښکاري:',
+'prefs-misc' => 'بېلابېل',
+'prefs-resetpass' => 'پټنوم بدلول',
+'prefs-email' => 'د برېښليک خوښنې',
+'prefs-rendering' => 'ښکارېدنه',
+'saveprefs' => 'خوندي کول',
+'resetprefs' => 'بيا سمول',
+'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
+'prefs-editing' => 'د سمولو په حال کې',
+'prefs-edit-boxsize' => 'د سمون کړکۍ کچه.',
+'rows' => 'ليکې:',
+'columns' => 'ستنې:',
+'searchresultshead' => 'پلټل',
+'recentchangesdays' => 'د هغو ورځو شمېر وټاکی چې په وروستي بدلونو کې يې ليدل غواړی:',
+'recentchangescount' => 'د هغو سمونو شمېر چې په تلواليزه بڼه ښکاره بايد شي:',
+'savedprefs' => 'ستاسو غوره توبونه خوندي شوه.',
+'timezonelegend' => 'د وخت سيمه:',
+'localtime' => 'سيمه ايز وخت:',
+'servertime' => 'د پالنګر وخت:',
+'guesstimezone' => 'له کتنمل نه ډکول',
+'timezoneregion-africa' => 'افريقا',
+'timezoneregion-america' => 'امريکا',
+'timezoneregion-antarctica' => 'انټارکټيکا',
+'timezoneregion-arctic' => 'آرکټيک',
+'timezoneregion-asia' => 'آسيا',
+'timezoneregion-atlantic' => 'د اطلس سمندر',
+'timezoneregion-australia' => 'آسټراليا',
+'timezoneregion-europe' => 'اروپا',
+'timezoneregion-indian' => 'هندی سمندر',
+'timezoneregion-pacific' => 'آرام سمندر',
+'allowemail' => 'د نورو کارونکو لخوا د برېښليک رالېږل چارن کړه',
+'prefs-searchoptions' => 'د پلټلو خوښنې',
+'prefs-namespaces' => 'نوم-تشيالونه',
+'defaultns' => 'او يا هم په دغو نوم-تشيالونو کې پلټل:',
+'default' => 'تلواليز',
+'prefs-files' => 'دوتنې',
+'prefs-textboxsize' => 'د سمون کړکۍ کچه',
+'youremail' => 'برېښليک *',
+'username' => 'کارن-نوم:',
+'uid' => 'د کارن پېژندنه:',
+'prefs-memberingroups' => 'د {{PLURAL:$1|ډلې|ډلو}} غړی:',
+'prefs-registration' => 'د نومليکنې وخت:',
+'yourrealname' => 'اصلي نوم:',
+'yourlanguage' => 'ژبه:',
+'yournick' => 'کورنی نوم:',
+'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
+بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
+'yourgender' => 'جنس:',
+'gender-unknown' => 'ناڅرګنده',
+'gender-male' => 'نارينه',
+'gender-female' => 'ښځه',
+'email' => 'برېښليک',
+'prefs-help-realname' => 'د اصلي نوم ليکل ستاسو په خوښه دی خو که تاسو خپل اصلي نوم وټاکۍ پدې سره به ستاسو ټول کارونه او ونډې ستاسو د نوم په اړوندولو کې وکارېږي.',
+'prefs-help-email' => 'د برېښليک ليکل ستاسې په خوښه دی، خو په ورکړې سره به يې د يوه نوي پټنوم درلېږلو چار آسانه کړي هغه هم کله چې تاسې نه خپل پټنوم هېر شوی وي.
+دا هم ستاسې خپله خوښه ده چې نورو کارنانو ته اجازه ورکړی چې تاسې سره د کارن-نوم او يا هم د کارن د خبرې اترو لخوا، پرته له دې چې ستاسې پېژندنه وشي، اړيکې ټينګې کړي.',
+'prefs-help-email-required' => 'ستاسو د برېښليک پته پکار ده.',
+'prefs-info' => 'بنسټيزه مالومات',
+'prefs-i18n' => 'نړېوالتوب',
+'prefs-signature' => 'لاسليک',
+'prefs-dateformat' => 'د نېټې بڼه',
+'prefs-advancedediting' => 'پرمختللې خوښنې',
+'prefs-advancedrc' => 'پرمختللې خوښنې',
+'prefs-advancedrendering' => 'پرمختللې خوښنې',
+'prefs-advancedsearchoptions' => 'پرمختللې خوښنې',
+'prefs-advancedwatchlist' => 'پرمختللې خوښنې',
+'prefs-display' => 'د ښکارېدنې خوښنې',
+'prefs-diffs' => 'توپيرونه',
# User rights
'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
@@ -892,6 +969,11 @@ $messages = array(
'recentchanges-legend' => 'د ورستي بدلونو خوښنې',
'recentchangestext' => 'په همدې مخ باندې د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ.',
'recentchanges-feed-description' => 'همدلته د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ او وګورۍ چې څه پېښ شوي.',
+'recentchanges-label-legend' => 'څرګندونې: $1.',
+'recentchanges-legend-newpage' => '$1 - نوی مخ',
+'recentchanges-legend-minor' => '$1 - وړوکی سمون',
+'recentchanges-label-minor' => 'دا يوه وړه سمونه ده',
+'recentchanges-legend-bot' => '$1 - د روباټ سمون',
'rcnote' => "دلته لاندې {{PLURAL:$1|وروستی '''1''' بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2| يوې ورځ|'''$2''' ورځو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
'rcnotefrom' => "په همدې ځای کې لاندې هغه بدلونونه دي چې د '''$2''' نه راپدېخوا پېښ شوي (تر '''$1''' پورې ښکاره شوي).",
'rclistfrom' => 'هغه بدلونونه ښکاره کړی چې له $1 نه پيلېږي',
@@ -916,6 +998,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'اړونده بدلونونه',
+'recentchangeslinked-feed' => 'اړونده بدلونونه',
+'recentchangeslinked-toolbox' => 'اړونده بدلونونه',
'recentchangeslinked-title' => '"$1" ته اړونده بدلونونه',
'recentchangeslinked-noresult' => 'په دې موده، په تړل شويو مخونو کې هېڅ کوم بدلونونه نه دي راپېښ شوي.',
'recentchangeslinked-summary' => "دا د هغه بدلونونو لړليک دی چې وروستۍ ځل په تړن لرونکيو مخونو کې د يوه ځانګړي مخ (او يا هم د يوې ځانګړې وېشنيزې غړو) نه رامېنځ ته شوي.
@@ -926,7 +1010,6 @@ $messages = array(
# Upload
'upload' => 'دوتنه پورته کول',
'uploadbtn' => 'دوتنه پورته کول',
-'reupload' => 'بيا پورته کول',
'uploadnologin' => 'غونډال کې نه ياست ننوتي',
'uploadnologintext' => 'ددې لپاره چې دوتنې پورته کړای شۍ، تاسو ته پکار ده چې لومړی غونډال کې [[Special:UserLogin|ننوتنه]] ترسره کړی.',
'uploaderror' => 'د پورته کولو ستونزه',
@@ -965,8 +1048,12 @@ $messages = array(
'uploadedimage' => '"[[$1]]" پورته شوه',
'uploaddisabled' => 'پورته کول ناچارن شوي',
'uploadvirus' => 'دا دوتنه ويروس لري! تفصيل: $1',
+'upload-source' => 'سرچينيزه دوتنه',
'sourcefilename' => 'د سرچينيزې دوتنې نوم:',
+'sourceurl' => 'د URL سرچينه:',
'upload-maxfilesize' => 'د دوتنې تر ټولو لويه کچه: $1',
+'upload-description' => 'د دوتنې څرګندونې',
+'upload-options' => 'د پورته کولو خوښنې',
'watchthisupload' => 'همدا دوتنه کتل',
'upload-file-error' => 'کورنۍ ستونزه',
@@ -986,6 +1073,7 @@ $messages = array(
'listfiles_count' => 'بڼې',
# File description page
+'file-anchor-link' => 'دوتنه',
'filehist' => 'د دوتنې پېښليک',
'filehist-help' => 'په يوې نېټې/يوه وخت وټوکۍ چې د هماغه وخت او نېټې دوتنه چې په هماغه وخت کې څنګه ښکارېده هماغسې درښکاره شي.',
'filehist-deleteall' => 'ټول ړنګول',
@@ -994,6 +1082,7 @@ $messages = array(
'filehist-current' => 'اوسنی',
'filehist-datetime' => 'نېټه/وخت',
'filehist-thumb' => 'بټنوک',
+'filehist-thumbtext' => 'د $1 پورې د بټنوک بڼه',
'filehist-user' => 'کارن',
'filehist-dimensions' => 'ډډې',
'filehist-filesize' => 'د دوتنې کچه',
@@ -1002,11 +1091,7 @@ $messages = array(
'linkstoimage' => 'دا {{PLURAL:$1|لاندينی مخ|$1 لانديني مخونه}} د همدې دوتنې سره تړنې لري:',
'nolinkstoimage' => 'داسې هېڅ کوم مخ نه شته چې د دغې دوتنې سره تړنې ولري.',
'duplicatesoffile' => 'دا لاندينۍ {{PLURAL:$1| دوتنه د همدې دوتنې غبرګونې لمېسه ده|$1 دوتنې د همدې دوتنې غبرګونې لمېسې دي}} ([[Special:FileDuplicateSearch/$2|نور تفصيل]]):',
-'sharedupload' => 'دا دوتنه د $1 لخوا نه ده او کېدای شي چې نورې پروژې به يې هم کاروي.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'لطفاً د لا نورو مالوماتو لپاره $1 وګورۍ.',
-'shareduploadwiki-linktext' => 'د دوتنې د څرګندونې مخ',
-'noimage' => 'په دې نوم هېڅ کومه دوتنه نه شته، خو تاسو کولای شی چې $1.',
-'noimage-linktext' => 'يوه دوتنه پورته کول',
+'sharedupload' => 'دا دوتنه د $1 لخوا نه ده او کېدای شي چې نورې پروژې به يې هم کاروي.',
'uploadnewversion-linktext' => 'د همدغې دوتنې نوې بڼه پورته کول',
# File reversion
@@ -1043,7 +1128,7 @@ $messages = array(
# Random page
'randompage' => 'ناټاکلی مخ',
-'randompage-nopages' => 'د "$1" په نوم-تشيال کې هېڅ کوم مخ نشته.',
+'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
# Random redirect
'randomredirect' => 'ناټاکلی ورګرځېدنه',
@@ -1054,6 +1139,7 @@ $messages = array(
'statistics-header-edits' => 'د سمونو شمار',
'statistics-header-views' => 'د کتنو شمار',
'statistics-header-users' => 'د کارنانو شمار',
+'statistics-header-hooks' => 'بل شمار',
'statistics-pages' => 'مخونه',
'statistics-files' => 'پورته شوې دوتنې',
'statistics-views-total' => 'ټولټال کتنې',
@@ -1065,8 +1151,8 @@ $messages = array(
'doubleredirects' => 'دوه ځلي ورګرځېدنې',
'brokenredirects' => 'ماتې ورګرځېدنې',
-'brokenredirects-edit' => '(سمول)',
-'brokenredirects-delete' => '(ړنګول)',
+'brokenredirects-edit' => 'سمول',
+'brokenredirects-delete' => 'ړنګول',
'withoutinterwiki' => 'د ژبې د تړنو بې برخې مخونه',
'withoutinterwiki-legend' => 'مختاړی',
@@ -1150,16 +1236,17 @@ $messages = array(
# Special:Categories
'categories' => 'وېشنيزې',
-'categoriespagetext' => 'لاندينۍ وېشنيزې مخونه يا رسنيزې دوتنې لري.
-همدلته [[Special:UnusedCategories|ناکارېدلې وېشنيزې]] ښودل شوي.
+'categoriespagetext' => 'دا لاندينۍ {{PLURAL:$1|وېشنيزه|وېشنيزې}} مخونه يا رسنيزې دوتنې لري.
+دلته [[Special:UnusedCategories|ناکارېدلې وېشنيزې]] نه دي ښکاره شوي.
[[Special:WantedCategories|غوښتلې وېشنيزې]] هم وګورۍ.',
'categoriesfrom' => 'هغه وېشنيزې دې ښکاره شي چې پېلېږي په:',
'special-categories-sort-count' => 'د شمېر له مخې اوډل',
'special-categories-sort-abc' => 'د ابېڅو له مخې اوډل',
# Special:DeletedContributions
-'deletedcontributions' => 'د کارونکي ونډې ړنګې شوې',
-'deletedcontributions-title' => 'د کارونکي ونډې ړنګې شوې',
+'deletedcontributions' => 'د کارونکي ونډې ړنګې شوې',
+'deletedcontributions-title' => 'د کارونکي ونډې ړنګې شوې',
+'sp-deletedcontributions-contribs' => 'ونډې',
# Special:LinkSearch
'linksearch' => 'باندنۍ تړنې',
@@ -1172,6 +1259,12 @@ $messages = array(
'listusersfrom' => 'هغه کارونکي ښکاره کړه چې نومونه يې پېلېږي په:',
'listusers-submit' => 'ښکاره کول',
'listusers-noresult' => 'هېڅ کوم کارن و نه موندل شو.',
+'listusers-blocked' => '(بنديز لګېدلی)',
+
+# Special:ActiveUsers
+'activeusers' => 'د فعالو کارنانو لړليک',
+'activeusers-hidesysops' => 'پازوالان پټول',
+'activeusers-noresult' => 'کارن و نه موندل شو.',
# Special:Log/newusers
'newuserlogpage' => 'د کارن-نوم د جوړېدو يادښت',
@@ -1249,7 +1342,7 @@ $messages = array(
'exblank' => 'دا مخ تش وه',
'delete-confirm' => '"$1" ړنګوول',
'delete-legend' => 'ړنګول',
-'historywarning' => 'پاملرنه: کومه پاڼه چې تاسو يې د ړنګولو هڅه کوی يو پېښليک لري:',
+'historywarning' => "ګواښنه:''' تاسې چې د کوم مخ د ړنګېدو تکل لری، هغه د نژدې $1 {{PLURAL:$1|بڼې|بڼو}} يو پېښليک لري:",
'confirmdeletetext' => 'تاسې د تل لپار يو مخ يا انځور د هغه ټول پېښليک سره د دغه توکبنسټ نه ړنګوۍ. که چېرته تاسې ددې کړنې په پايله پوه ياست او يا ستاسو همدا کړنه د دې پاڼې د [[{{MediaWiki:Policy-url}}|تګلارې]] سره سمون خوري نو لطفاً د دې تاييد وکړی.',
'actioncomplete' => 'بشپړه کړنه',
'deletedtext' => '"<nowiki>$1</nowiki>" ړنګ شوی.
@@ -1281,7 +1374,6 @@ $messages = array(
'protectexpiry' => 'د پای نېټه:',
'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
'protect_expiry_old' => 'د پای وخت په تېرمهال کې دی.',
-'protect-unchain' => 'د لېږدون اجازې ناتړل',
'protect-text' => "تاسې کولای شی چې د '''<nowiki>$1</nowiki>''' مخ لپاره د ژغورلو کچه همدلته وګورۍ او بدلون پکې راولی.",
'protect-locked-access' => "ستاسې کارن-حساب دا اجازه نه لري چې د پاڼو د ژغورنې په کچه کې بدلون راولي.
دلته د '''$1''' مخ لپاره اوسني شته امستنې دي:",
@@ -1305,7 +1397,7 @@ $messages = array(
** ډېره زياته سپام خپرونه
** بې ګټې سمونې او خپرونې
** ډېر لوستونکی مخ',
-'protect-expiry-options' => '1 ساعت:1 hour,1 ورځ:1 day,1 اوونۍ:1 week,2 اوونۍ:2 weeks,1 مياشت:1 month,3 مياشتې:3 months,6 مياشتې:6 months,1 کال:1 year,لامحدوده:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ساعت:1 hour,1 ورځ:1 day,1 اوونۍ:1 week,2 اوونۍ:2 weeks,1 مياشت:1 month,3 مياشتې:3 months,6 مياشتې:6 months,1 کال:1 year,لامحدوده:infinite',
'restriction-type' => 'اجازه:',
'restriction-level' => 'د بنديز کچه:',
'minimum-size' => 'وړه کچه',
@@ -1327,6 +1419,7 @@ $messages = array(
'viewdeletedpage' => 'ړنګ شوي مخونه کتل',
'undeletebtn' => 'بېرته پرځای کول',
'undeletelink' => 'کتل/بيا پر ځای کول',
+'undeleteviewlink' => 'کتل',
'undeletereset' => 'بياايښودل',
'undeletecomment' => 'سبب:',
'undeletedarticle' => '"[[$1]]" بېرته پرځای شو',
@@ -1352,7 +1445,9 @@ $messages = array(
'sp-contributions-newbies' => 'د نوو کارن-حسابونو ونډې ښکاره کول',
'sp-contributions-newbies-sub' => 'د نوو کارن-حسابونو لپاره',
'sp-contributions-blocklog' => 'د بنديز يادښت',
+'sp-contributions-deleted' => 'د کارن ونډې ړنګې شوې',
'sp-contributions-logs' => 'يادښتونه',
+'sp-contributions-talk' => 'خبرې اترې',
'sp-contributions-search' => 'د ونډو لټون',
'sp-contributions-username' => 'IP پته يا کارن-نوم:',
'sp-contributions-submit' => 'پلټل',
@@ -1377,6 +1472,7 @@ $messages = array(
# Block/unblock
'blockip' => 'په کارن بنديز لګول',
+'blockip-title' => 'په کارن بنديز لګول',
'blockip-legend' => 'په کارن بنديز لګول',
'ipaddress' => 'IP پته',
'ipadressorusername' => 'IP پته يا کارن نوم',
@@ -1393,7 +1489,7 @@ $messages = array(
** نه مننونکی کارن-نوم کارول',
'ipbsubmit' => 'پدې کارن بنديز لګول',
'ipbother' => 'بل وخت:',
-'ipboptions' => '2 ساعتونه:2 hours,1 ورځ:1 day,3 ورځې:3 days,1 اوونۍ:1 week,2 اوونۍ:2 weeks,1 مياشت:1 month,3 مياشتې:3 months,6 مياشتې:6 months,1 کال:1 year,لامحدوده:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ساعتونه:2 hours,1 ورځ:1 day,3 ورځې:3 days,1 اوونۍ:1 week,2 اوونۍ:2 weeks,1 مياشت:1 month,3 مياشتې:3 months,6 مياشتې:6 months,1 کال:1 year,لامحدوده:infinite',
'ipbotheroption' => 'نور',
'ipbotherreason' => 'بل/اضافه سبب:',
'badipaddress' => 'ناسمه IP پته',
@@ -1410,6 +1506,8 @@ $messages = array(
'ipblocklist-sh-userblocks' => 'د کارن-حساب بنديزونه $1',
'ipblocklist-sh-tempblocks' => 'لنډمهاله بنديزونه $1',
'ipblocklist-submit' => 'پلټل',
+'ipblocklist-localblock' => 'سيمه ايز بنديز',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|بل بنديز|نور بنديزونه}}',
'infiniteblock' => 'لامحدوده',
'anononlyblock' => 'يواځې ورکنومی',
'emailblock' => 'پر برېښليک بنديز ولګېد',
@@ -1425,6 +1523,7 @@ $messages = array(
'block-log-flags-nocreate' => 'د کارن-حساب جوړول ناچارن شوې',
'block-log-flags-noemail' => 'ددې برېښليک مخه نيول شوی',
'ipb_already_blocked' => 'پر "$1" د پخوا نه بنديز دی',
+'ipb-otherblocks-header' => '{{PLURAL:$1|بل بنديز|نور بنديزونه}}',
'blockme' => 'پر ما بنديز لګول',
'proxyblocksuccess' => 'ترسره شو.',
@@ -1460,7 +1559,7 @@ $messages = array(
'move-watch' => 'همدا مخ کتل',
'movepagebtn' => 'مخ لېږدول',
'pagemovedsub' => 'لېږدول په برياليتوب سره ترسره شوه',
-'movepage-moved' => '\'\'\'د "$1" په نامه دوتنه، "$2" ته ولېږدېده\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'د "$1" په نامه دوتنه، "$2" ته ولېږدېده\'\'\'',
'articleexists' => 'په همدې نوم يوه بله پاڼه د پخوا نه شته او يا خو دا نوم چې تاسې ټاکلی سم نه دی. لطفاً يو بل نوم وټاکۍ.',
'talkexists' => "'''همدا مخ په برياليتوب سره نوي سرليک ته ولېږدېده، خو د خبرواترو مخ يې و نه لېږدول شو دا ځکه چې نوی سرليک له پخوا نه ځانته د خبرواترو يو مخ لري.
لطفاُ د خبرواترو دا دواړه مخونه په لاسي توګه سره يو ځای کړی.'''",
@@ -1479,6 +1578,8 @@ $messages = array(
'immobile-source-page' => 'دا مخ نه لېږدېدنونکی دی',
'imageinvalidfilename' => 'د موخنې دوتنې نوم سم نه دی',
'move-leave-redirect' => 'يو ورګرځونکی مخ پر ځای پرېښودل',
+'move-over-sharedrepo' => '== دوتنه شته ==
+د [[:$1]] دوتنه په يوه ګډ زېرمتون کې شته. دې نوم ته د يوې دوتنې لېږدون به د ګډې دوتنې د باطلېدلو سبب شي.',
# Export
'export' => 'مخونه صادرول',
@@ -1489,15 +1590,20 @@ $messages = array(
'export-download' => 'د دوتنې په بڼه خوندي کول',
# Namespace 8 related
-'allmessages' => 'د غونډال پيغامونه',
-'allmessagesname' => 'نوم',
-'allmessagesdefault' => 'ټاکل شوی متن',
-'allmessagescurrent' => 'اوسنی متن',
-'allmessagestext' => 'دا د مېډياويکي په نوم-تشيال کې د غونډال د پيغامونو لړليک دی.
+'allmessages' => 'د غونډال پيغامونه',
+'allmessagesname' => 'نوم',
+'allmessagesdefault' => 'ټاکل شوی متن',
+'allmessagescurrent' => 'اوسنی متن',
+'allmessagestext' => 'دا د مېډياويکي په نوم-تشيال کې د غونډال د پيغامونو لړليک دی.
که چېرته تاسو د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [http://www.mediawiki.org/wiki/Localisation د ويډياويکي ځايتابه] او [http://translatewiki.net translatewiki.net] نه ليدنه وکړۍ.',
-'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترېنه کار نه اخيستل کېږي ځکه چې '''\$wgUseDatabaseMessages''' مړ دی.",
-'allmessagesfilter' => 'د پيغامونو د نوم فلتر:',
-'allmessagesmodified' => 'يواځې بدلون خوړلي توکي ښکاره کول',
+'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترېنه کار نه اخيستل کېږي ځکه چې '''\$wgUseDatabaseMessages''' مړ دی.",
+'allmessages-filter-legend' => 'چاڼګر',
+'allmessages-filter-unmodified' => 'نابدلېدلي',
+'allmessages-filter-all' => 'ټول',
+'allmessages-filter-modified' => 'بدلېدلي',
+'allmessages-prefix' => 'د مختاړي پر بنسټ اړونده چاڼګر:',
+'allmessages-language' => 'ژبه:',
+'allmessages-filter-submit' => 'ورځه',
# Thumbnails
'thumbnail-more' => 'لويول',
@@ -1528,6 +1634,7 @@ $messages = array(
'tooltip-ca-viewsource' => 'دا مخ ژغورل شوی. تاسې کولای شی چې د دې مخ سرجينه وګورۍ.',
'tooltip-ca-history' => 'د دې مخ پخوانۍ بڼې',
'tooltip-ca-protect' => 'دا مخ ژغورل',
+'tooltip-ca-unprotect' => 'همدا مخ ناژغورل',
'tooltip-ca-delete' => 'دا مخ ړنګول',
'tooltip-ca-move' => 'همدا مخ لېږدول',
'tooltip-ca-watch' => 'دا مخ په خپل کتنلړکې ګډول',
@@ -1537,6 +1644,7 @@ $messages = array(
'tooltip-search-fulltext' => 'په مخونو کې دا متن وپلټه',
'tooltip-p-logo' => 'لومړی مخ',
'tooltip-n-mainpage' => 'لومړي مخ ته ورتلل',
+'tooltip-n-mainpage-description' => 'آرنی مخ کتل',
'tooltip-n-portal' => 'د پروژې په اړه، تاسې څه شيان او چېرته کولای شی چې وې مومۍ',
'tooltip-n-currentevents' => 'د اوسنيو پېښو اړونده د هغوی د شاليد مالومات موندل',
'tooltip-n-recentchanges' => 'په ويکي کې د وروستي بدلونو لړليک.',
@@ -1574,7 +1682,7 @@ $messages = array(
# Attribution
'siteuser' => 'د {{SITENAME}} کارن $1',
-'lastmodifiedatby' => 'دا مخ وروستی ځل د $3 لخوا په $2، $1 بدلون موندلی.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'دا مخ وروستی ځل د $3 لخوا په $2، $1 بدلون موندلی.',
'others' => 'نور',
'siteusers' => 'د {{SITENAME}} {{PLURAL:$2|کارن|کارنان}} $1',
@@ -1591,6 +1699,10 @@ $messages = array(
'skinname-simple' => 'ساده',
'skinname-modern' => 'نوی',
+# Math errors
+'math_unknown_error' => 'ناجوته ستونزه',
+'math_unknown_function' => 'ناجوته کړنه',
+
# Patrol log
'patrol-log-auto' => '(خپلسر)',
'patrol-log-diff' => 'بڼه $1',
@@ -1645,7 +1757,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'سوروالی',
@@ -1668,7 +1780,7 @@ $messages = array(
'exif-unknowndate' => 'نامالومه نېټه',
-'exif-orientation-1' => 'نورمال', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'نورمال',
'exif-componentsconfiguration-0' => 'نشته دی',
@@ -1703,7 +1815,7 @@ $messages = array(
'exif-subjectdistancerange-0' => 'ناجوت',
'exif-subjectdistancerange-1' => 'ماکرو',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'کيلومتره په يوه ساعت کې',
'exif-gpsspeed-m' => 'مايل په ساعت کې',
'exif-gpsspeed-n' => 'غوټې',
@@ -1722,6 +1834,7 @@ $messages = array(
'watchlistall2' => 'ټول',
'namespacesall' => 'ټول',
'monthsall' => 'ټول',
+'limitall' => 'ټول',
# E-mail address confirmation
'confirmemail' => 'د برېښليک پتې پخلی وکړی',
@@ -1731,6 +1844,18 @@ $messages = array(
'confirmemail_needlogin' => 'ددې لپاره چې ستاسې د برېښليک پتې پخلی وشي، تاسې ته پکار ده چې $1.',
'confirmemail_loggedin' => 'اوس ستاسې د برېښناليک پتې پخلی وشو.',
'confirmemail_error' => 'ستاسې د برېښليک پتې د تاييد په خوندي کولو کې يوه ستونزه رامېنڅ ته شوه.',
+'confirmemail_body' => 'يو چا او يا هم کيدای شي چې تاسې پخپله، د $1 IP پتې نه،
+د "$2" په نامه يو کارن-حساب په همدې بريښليک پتې د {{SITENAME}} په وېبځي کې ثبت کړی.
+
+دا چې موږ د دې پخلی وکړو چې آيا همدا کارن-حساب په رښتيا ستاسې دی او د دې لپاره چې د همدې برېښليک لپاره په {{SITENAME}} وېبځي کې کړنې فعاله کړو، نو پخپل کتنمل کې لاندينۍ تړنه پرانيزۍ:
+
+$3
+
+که چېرته تاسې همدا کارن-حساب *نه وي ثبت کړی*، نو د برېښليک پتې د پخلي د لغوه کولو لپاره همدا لاندې تړنه وڅارۍ:
+
+$5
+
+همدا تاييدي شفر به په $4 پای ته ورسېږي او تر همدې مودې وروسته به نور و نه چلېږي.',
# Scary transclusion
'scarytranscludetoolong' => '[URL مو ډېر اوږد دی]',
@@ -1802,9 +1927,10 @@ $messages = array(
'iranian-calendar-m12' => 'کب',
# Special:Version
-'version' => 'بڼه', # Not used as normal message but as header for the special page itself
+'version' => 'بڼه',
'version-specialpages' => 'ځانګړي مخونه',
'version-other' => 'بل',
+'version-version' => '(بڼه $1)',
'version-license' => 'اجازتليک',
'version-software' => 'نصب شوی ساوتری',
'version-software-version' => 'بڼه',
@@ -1844,4 +1970,12 @@ $messages = array(
'dberr-problems' => 'اوبخښۍ!
دم مهال دا وېبپاڼه د تخنيکي ستونزو سره مخامخ شوې.',
+# HTML forms
+'htmlform-select-badoption' => 'کوم څه چې تاسو ځانګړي کړي هغه د منلو وړ خوښه نه ده.',
+'htmlform-int-invalid' => 'کوم څه چې تاسو ځانګړي کړي هغه يوه سمه شمېره نه ده.',
+'htmlform-float-invalid' => 'کوم څه چې تاسو ځانګړي کړي هغه يوه شمېره نه ده.',
+'htmlform-submit' => 'سپارل',
+'htmlform-reset' => 'بدلونونه ناکړل',
+'htmlform-selectorother-other' => 'بل',
+
);
diff --git a/languages/messages/MessagesPt.php b/languages/messages/MessagesPt.php
index 0d241584..ce1be4b5 100644
--- a/languages/messages/MessagesPt.php
+++ b/languages/messages/MessagesPt.php
@@ -13,11 +13,14 @@
* @author Giro720
* @author Hamilton Abreu
* @author Heldergeovane
+ * @author Indech
+ * @author Jens Liebenau
* @author Jorge Morais
* @author Leonardo.stabile
* @author Lijealso
* @author Lugusto
* @author MCruz
+ * @author MF-Warburg
* @author Malafaya
* @author Manuel Menezes de Sequeira
* @author McDutchie
@@ -40,11 +43,11 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
+ NS_MEDIA => 'Multimédia',
NS_SPECIAL => 'Especial',
NS_TALK => 'Discussão',
- NS_USER => 'Usuário',
- NS_USER_TALK => 'Usuário_Discussão',
+ NS_USER => 'Utilizador',
+ NS_USER_TALK => 'Utilizador_Discussão',
NS_PROJECT_TALK => '$1_Discussão',
NS_FILE => 'Ficheiro',
NS_FILE_TALK => 'Ficheiro_Discussão',
@@ -59,113 +62,224 @@ $namespaceNames = array(
);
$namespaceAliases = array(
- 'Imagem' => NS_FILE,
- 'Imagem_Discussão' => NS_FILE_TALK,
- 'Arquivo' => NS_FILE,
+ 'Usuário' => NS_USER,
+ 'Usuário_Discussão' => NS_USER_TALK,
+ 'Imagem' => NS_FILE,
+ 'Imagem_Discussão' => NS_FILE_TALK,
+ 'Arquivo' => NS_FILE,
'Arquivo_Discussão' => NS_FILE_TALK,
);
-
$defaultDateFormat = 'dmy';
$dateFormats = array(
-
'dmy time' => 'H\hi\m\i\n',
'dmy date' => 'j \d\e F \d\e Y',
'dmy both' => 'H\hi\m\i\n \d\e j \d\e F \d\e Y',
-
);
$separatorTransformTable = array(',' => ' ', '.' => ',' );
-#$linkTrail = '/^([a-z]+)(.*)$/sD';# ignore list
+$linkTrail = '/^([áâãàéêçíóôõúüa-z]+)(.*)$/sDu'; # Bug 21168
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redireccionamentos duplos', 'Redirecionamentos duplos' ),
- 'BrokenRedirects' => array( 'Redireccionamentos quebrados', 'Redirecionamentos quebrados' ),
- 'Disambiguations' => array( 'Páginas de desambiguação', 'Desambiguar', 'Desambiguações' ),
+ 'DoubleRedirects' => array( 'Redireccionamentos duplos' ),
+ 'BrokenRedirects' => array( 'Redireccionamentos quebrados' ),
+ 'Disambiguations' => array( 'Desambiguações' ),
'Userlogin' => array( 'Entrar', 'Login' ),
'Userlogout' => array( 'Sair', 'Logout' ),
'CreateAccount' => array( 'Criar conta' ),
'Preferences' => array( 'Preferências' ),
- 'Watchlist' => array( 'Páginas vigiadas', 'Artigos vigiados', 'Vigiados' ),
+ 'Watchlist' => array( 'Páginas vigiadas' ),
'Recentchanges' => array( 'Mudanças recentes' ),
- 'Upload' => array( 'Carregar imagem', 'Carregar ficheiro', 'Carregar arquivo', 'Enviar' ),
- 'Listfiles' => array( 'Lista de imagens', 'Lista de ficheiros', 'Lista de arquivos' ),
- 'Newimages' => array( 'Imagens novas', 'Ficheiros novos', 'Arquivos novos' ),
- 'Listusers' => array( 'Lista de utilizadores', 'Lista de usuários' ),
+ 'Upload' => array( 'Carregar ficheiro' ),
+ 'Listfiles' => array( 'Lista de ficheiros' ),
+ 'Newimages' => array( 'Ficheiros novos', 'Imagens novas' ),
+ 'Listusers' => array( 'Lista de utilizadores' ),
'Listgrouprights' => array( 'Listar privilégios de grupos' ),
'Statistics' => array( 'Estatísticas' ),
- 'Randompage' => array( 'Aleatória', 'Aleatório', 'Página aleatória', 'Artigo aleatório' ),
- 'Lonelypages' => array( 'Páginas órfãs', 'Artigos órfãos', 'Páginas sem afluentes', 'Artigos sem afluentes' ),
- 'Uncategorizedpages' => array( 'Páginas sem categorias', 'Artigos sem categorias' ),
+ 'Randompage' => array( 'Página aleatória' ),
+ 'Lonelypages' => array( 'Páginas órfãs', 'Páginas sem afluentes' ),
+ 'Uncategorizedpages' => array( 'Páginas sem categorias' ),
'Uncategorizedcategories' => array( 'Categorias sem categorias' ),
- 'Uncategorizedimages' => array( 'Imagens sem categorias', 'Ficheiros sem categorias', 'Arquivos sem categorias' ),
- 'Uncategorizedtemplates' => array( 'Predefinições não categorizadas', 'Predefinições sem categorias' ),
- 'Unusedcategories' => array( 'Categorias não utilizadas', 'Categorias sem uso' ),
- 'Unusedimages' => array( 'Imagens sem uso', 'Imagens não utilizadas', 'Ficheiros sem uso', 'Ficheiros não utilizados', 'Arquivos sem uso', 'Arquivos não utilizados' ),
- 'Wantedpages' => array( 'Páginas em falta', 'Artigos em falta', 'Páginas pedidas', 'Artigos pedidos' ),
- 'Wantedcategories' => array( 'Categorias em falta', 'Categorias inexistentes' ),
- 'Wantedfiles' => array( 'Ficheiros em falta', 'Arquivos em falta', 'Imagens em falta' ),
- 'Wantedtemplates' => array( 'Predefinições em falta' ),
- 'Mostlinked' => array( 'Páginas com mais afluentes', 'Artigos com mais afluentes' ),
+ 'Uncategorizedimages' => array( 'Ficheiros sem categorias', 'Imagens sem categorias' ),
+ 'Uncategorizedtemplates' => array( 'Predefinições não categorizadas' ),
+ 'Unusedcategories' => array( 'Categorias não utilizadas' ),
+ 'Unusedimages' => array( 'Ficheiros não utilizados' ),
+ 'Wantedpages' => array( 'Páginas desejadas' ),
+ 'Wantedcategories' => array( 'Categorias desejadas' ),
+ 'Wantedfiles' => array( 'Ficheiros desejados' ),
+ 'Wantedtemplates' => array( 'Predefinições desejadas' ),
+ 'Mostlinked' => array( 'Páginas com mais afluentes' ),
'Mostlinkedcategories' => array( 'Categorias com mais afluentes' ),
'Mostlinkedtemplates' => array( 'Predefinições com mais afluentes' ),
- 'Mostimages' => array( 'Imagens com mais afluentes', 'Ficheiros com mais afluentes', 'Arquivos com mais afluentes' ),
- 'Mostcategories' => array( 'Páginas com mais categorias', 'Artigos com mais categorias' ),
- 'Mostrevisions' => array( 'Páginas com mais edições', 'Artigos com mais edições' ),
- 'Fewestrevisions' => array( 'Páginas com menos edições', 'Artigos com menos edições', 'Artigos menos editados' ),
- 'Shortpages' => array( 'Páginas curtas', 'Artigos curtos' ),
- 'Longpages' => array( 'Páginas longas', 'Artigos extensos' ),
- 'Newpages' => array( 'Páginas novas', 'Artigos novos' ),
- 'Ancientpages' => array( 'Páginas inativas', 'Artigos inativos' ),
- 'Deadendpages' => array( 'Páginas sem saída', 'Artigos sem saída' ),
- 'Protectedpages' => array( 'Páginas protegidas', 'Artigos protegidos' ),
+ 'Mostimages' => array( 'Ficheiros com mais afluentes', 'Imagens com mais afluentes' ),
+ 'Mostcategories' => array( 'Páginas com mais categorias' ),
+ 'Mostrevisions' => array( 'Páginas com mais revisões' ),
+ 'Fewestrevisions' => array( 'Páginas com menos revisões' ),
+ 'Shortpages' => array( 'Páginas curtas' ),
+ 'Longpages' => array( 'Páginas longas' ),
+ 'Newpages' => array( 'Páginas novas' ),
+ 'Ancientpages' => array( 'Página mais antigas' ),
+ 'Deadendpages' => array( 'Páginas sem saída' ),
+ 'Protectedpages' => array( 'Páginas protegidas' ),
'Protectedtitles' => array( 'Títulos protegidos' ),
- 'Allpages' => array( 'Todas as páginas', 'Todos os artigos', 'Todas páginas', 'Todos artigos' ),
- 'Prefixindex' => array( 'Índice de prefixo', 'Índice por prefixo' ),
- 'Ipblocklist' => array( 'Registo de bloqueios', 'Registro de bloqueios', 'IPs bloqueados', 'Utilizadores bloqueados', 'Usuários bloqueados' ),
+ 'Allpages' => array( 'Todas as páginas' ),
+ 'Prefixindex' => array( 'Índice de prefixo' ),
+ 'Ipblocklist' => array( 'Registo de bloqueios' ),
'Specialpages' => array( 'Páginas especiais' ),
'Contributions' => array( 'Contribuições' ),
- 'Emailuser' => array( 'Contactar utilizador', 'Contactar usuário', 'Contatar usuário' ),
- 'Confirmemail' => array( 'Confirmar e-mail', 'Confirmar email' ),
- 'Whatlinkshere' => array( 'Páginas afluentes', 'Artigos afluentes' ),
- 'Recentchangeslinked' => array( 'Novidades relacionadas', 'Mudanças relacionadas' ),
- 'Movepage' => array( 'Mover', 'Mover página', 'Mover artigo' ),
- 'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
+ 'Emailuser' => array( 'Contactar utilizador' ),
+ 'Confirmemail' => array( 'Confirmar correio electrónico' ),
+ 'Whatlinkshere' => array( 'Páginas afluentes' ),
+ 'Recentchangeslinked' => array( 'Alterações relacionadas' ),
+ 'Movepage' => array( 'Mover página' ),
+ 'Blockme' => array( 'Auto-bloqueio' ),
'Booksources' => array( 'Fontes de livros' ),
'Categories' => array( 'Categorias' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versão', 'Sobre' ),
- 'Allmessages' => array( 'Todas as mensagens', 'Todas mensagens' ),
- 'Log' => array( 'Registo', 'Registro', 'Registos', 'Registros' ),
- 'Blockip' => array( 'Bloquear', 'Bloquear IP', 'Bloquear utilizador', 'Bloquear usuário' ),
- 'Undelete' => array( 'Restaurar', 'Restaurar páginas eliminadas', 'Restaurar artigos eliminados' ),
+ 'Export' => array( 'Exportação de páginas' ),
+ 'Version' => array( 'Versão' ),
+ 'Allmessages' => array( 'Todas as mensagens' ),
+ 'Log' => array( 'Registos' ),
+ 'Blockip' => array( 'Bloquear utilizador' ),
+ 'Undelete' => array( 'Restaurar páginas eliminadas' ),
'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'Bloquear a base de dados', 'Bloquear banco de dados' ),
- 'Unlockdb' => array( 'Desbloquear a base de dados', 'Desbloquear banco de dados' ),
- 'Userrights' => array( 'Privilégios', 'Direitos', 'Estatutos' ),
+ 'Lockdb' => array( 'Bloquear base de dados' ),
+ 'Unlockdb' => array( 'Desbloquear base de dados' ),
+ 'Userrights' => array( 'Privilégios' ),
'MIMEsearch' => array( 'Busca MIME' ),
- 'FileDuplicateSearch' => array( 'Busca de ficheiros duplicados', 'Busca de arquivos duplicados' ),
- 'Unwatchedpages' => array( 'Páginas não-vigiadas', 'Páginas não vigiadas', 'Artigos não-vigiados', 'Artigos não vigiados' ),
- 'Listredirects' => array( 'Redireccionamentos', 'Redirecionamentos', 'Lista de redireccionamentos', 'Lista de redirecionamentos' ),
- 'Revisiondelete' => array( 'Eliminar edição', 'Eliminar revisão', 'Apagar edição', 'Apagar revisão' ),
- 'Unusedtemplates' => array( 'Predefinições sem uso', 'Predefinições não utilizadas' ),
- 'Randomredirect' => array( 'Redireccionamento aleatório', 'Redirecionamento aleatório' ),
+ 'FileDuplicateSearch' => array( 'Ficheiros duplicados' ),
+ 'Unwatchedpages' => array( 'Páginas não vigiadas' ),
+ 'Listredirects' => array( 'Redireccionamentos' ),
+ 'Revisiondelete' => array( 'Eliminar revisão' ),
+ 'Unusedtemplates' => array( 'Predefinições não utilizadas' ),
+ 'Randomredirect' => array( 'Redireccionamento aleatório' ),
'Mypage' => array( 'Minha página' ),
'Mytalk' => array( 'Minha discussão' ),
- 'Mycontributions' => array( 'Minhas contribuições', 'Minhas edições', 'Minhas constribuições' ),
- 'Listadmins' => array( 'Administradores', 'Admins', 'Lista de administradores', 'Lista de admins' ),
- 'Listbots' => array( 'Bots', 'Lista de bots' ),
- 'Popularpages' => array( 'Páginas populares', 'Artigos populares' ),
- 'Search' => array( 'Busca', 'Buscar', 'Procurar', 'Pesquisar', 'Pesquisa' ),
- 'Resetpass' => array( 'Repor senha', 'Zerar senha' ),
- 'Withoutinterwiki' => array( 'Páginas sem interwikis', 'Artigos sem interwikis' ),
- 'MergeHistory' => array( 'Fundir históricos', 'Fundir edições' ),
- 'Filepath' => array( 'Diretório de ficheiro', 'Diretório de arquivo' ),
- 'Invalidateemail' => array( 'Invalidar e-mail' ),
+ 'Mycontributions' => array( 'Minhas contribuições' ),
+ 'Listadmins' => array( 'Administradores' ),
+ 'Listbots' => array( 'Robôs' ),
+ 'Popularpages' => array( 'Páginas populares' ),
+ 'Search' => array( 'Pesquisa' ),
+ 'Resetpass' => array( 'Alterar palavra-chave' ),
+ 'Withoutinterwiki' => array( 'Páginas sem interwikis' ),
+ 'MergeHistory' => array( 'Fundir históricos' ),
+ 'Filepath' => array( 'Endereço de ficheiro' ),
+ 'Invalidateemail' => array( 'Invalidar correio electrónico' ),
'Blankpage' => array( 'Página em branco' ),
- 'LinkSearch' => array( 'Pesquisar links' ),
- 'DeletedContributions' => array( 'Contribuições eliminadas', 'Edições eliminadas' ),
+ 'LinkSearch' => array( 'Pesquisar ligações' ),
+ 'DeletedContributions' => array( 'Contribuições eliminadas' ),
+ 'Activeusers' => array( 'Utilizadores activos' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#REDIRECIONAMENTO', '#REDIRECT' ),
+ 'notoc' => array( '0', '__SEMTDC__', '__SEMSUMÁRIO__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__SEMGALERIA__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORCARTDC__', '__FORCARSUMARIO__', '__FORÇARTDC__', '__FORÇARSUMÁRIO__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__TDC__', '__SUMÁRIO__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__NÃOEDITARSEÇÃO__', '__SEMEDITARSEÇÃO__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__SEMCABECALHO__', '__SEMCABEÇALHO__', '__SEMTITULO__', '__SEMTÍTULO__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MESATUAL1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NOMEDOMESATUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', 'MESATUALABREV', 'MESATUALABREVIADO', 'ABREVIATURADOMESATUAL', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'DIAATUAL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'DIAATUAL2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NOMEDODIAATUAL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ANOATUAL', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'HORARIOATUAL', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'HORAATUAL', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MESLOCAL1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'NOMEDOMESLOCAL', 'LOCALMONTHNAME' ),
+ 'localmonthabbrev' => array( '1', 'MESLOCALABREV', 'MESLOCALABREVIADO', 'ABREVIATURADOMESLOCAL', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'DIALOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'DIALOCAL2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NOMEDODIALOCAL', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ANOLOCAL', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'HORARIOLOCAL', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'HORALOCAL', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'NUMERODEPAGINAS', 'NÚMERODEPÁGINAS', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NUMERODEARTIGOS', 'NÚMERODEARTIGOS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NUMERODEARQUIVOS', 'NÚMERODEARQUIVOS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NUMERODEUSUARIOS', 'NÚMERODEUSUÁRIOS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NUMERODEUSUARIOSATIVOS', 'NÚMERODEUSUÁRIOSATIVOS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NUMERODEEDICOES', 'NÚMERODEEDIÇÕES', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NUMERODEEXIBICOES', 'NÚMERODEEXIBIÇÕES', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NOMEDAPAGINA', 'NOMEDAPÁGINA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NOMEDAPAGINAC', 'NOMEDAPÁGINAC', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'DOMINIO', 'DOMÍNIO', 'ESPACONOMINAL', 'ESPAÇONOMINAL', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'DOMINIOC', 'DOMÍNIOC', 'ESPACONOMINALC', 'ESPAÇONOMINALC', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'PAGINADEDISCUSSAO', 'PÁGINADEDISCUSSÃO', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'PAGINADEDISCUSSAOC', 'PÁGINADEDISCUSSÃOC', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'PAGINADECONTEUDO', 'PAGINADECONTEÚDO', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'PAGINADECONTEUDOC', 'PAGINADECONTEÚDOC', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NOMECOMPLETODAPAGINA', 'NOMECOMPLETODAPÁGINA', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NOMECOMPLETODAPAGINAC', 'NOMECOMPLETODAPÁGINAC', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NOMEDASUBPAGINA', 'NOMEDASUBPÁGINA', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NOMEDASUBPAGINAC', 'NOMEDASUBPÁGINAC', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NOMEDAPAGINABASEC', 'NOMEDAPÁGINABASEC', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NOMEDAPAGINADEDISCUSSAOC', 'NOMEDAPÁGINADEDISCUSSÃOC', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NOMEDAPAGINADECONTEUDOC', 'NOMEDAPÁGINADECONTEÚDOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'img_right' => array( '1', 'direita', 'right' ),
+ 'img_left' => array( '1', 'esquerda', 'left' ),
+ 'img_none' => array( '1', 'nenhum', 'none' ),
+ 'img_center' => array( '1', 'centro', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'comborda', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'semborda', 'frameless' ),
+ 'img_page' => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'borda', 'border' ),
+ 'img_top' => array( '1', 'acima', 'top' ),
+ 'img_middle' => array( '1', 'meio', 'middle' ),
+ 'img_bottom' => array( '1', 'abaixo', 'bottom' ),
+ 'img_link' => array( '1', 'ligação=$1', 'link=$1' ),
+ 'sitename' => array( '1', 'NOMEDOSITE', 'NOMEDOSÍTIO', 'NOMEDOSITIO', 'SITENAME' ),
+ 'server' => array( '0', 'SERVIDOR', 'SERVER' ),
+ 'servername' => array( '0', 'NOMEDOSERVIDOR', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'CAMINHODOSCRIPT', 'SCRIPTPATH' ),
+ 'gender' => array( '0', 'GENERO', 'GÊNERO', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__SEMCONVERTERTITULO__', '__SEMCONVERTERTÍTULO__', '__SEMCT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__SEMCONVERTERCONTEUDO__', '__SEMCONVERTERCONTEÚDO__', '__SEMCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEMANAATUAL', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'DIADASEMANAATUAL', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'SEMANALOCAL', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'DIADASEMANALOCAL', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'IDDAREVISAO', 'IDDAREVISÃO', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'DIADAREVISAO', 'DIADAREVISÃO', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'DIADAREVISAO2', 'DIADAREVISÃO2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MESDAREVISAO', 'MÊSDAREVISÃO', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ANODAREVISAO', 'ANODAREVISÃO', 'REVISIONYEAR' ),
+ 'revisionuser' => array( '1', 'USUARIODAREVISAO', 'USUÁRIODAREVISÃO', 'REVISIONUSER' ),
+ 'fullurl' => array( '0', 'URLCOMPLETO:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URLCOMPLETOC:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'PRIMEIRAMINUSCULA:', 'PRIMEIRAMINÚSCULA:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'PRIMEIRAMAIUSCULA:', 'PRIMEIRAMAIÚSCULA:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'MINUSCULA', 'MINÚSCULA', 'MINUSCULAS', 'MINÚSCULAS', 'LC:' ),
+ 'uc' => array( '0', 'MAIUSCULA', 'MAIÚSCULA', 'MAIUSCULAS', 'MAIÚSCULAS', 'UC:' ),
+ 'displaytitle' => array( '1', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__LINKDENOVASECAO__', '__LINKDENOVASEÇÃO__', '__LIGACAODENOVASECAO__', '__LIGAÇÃODENOVASEÇÃO__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__SEMLINKDENOVASECAO__', '__SEMLINKDENOVASEÇÃO__', '__SEMLIGACAODENOVASECAO__', '__SEMLIGAÇÃODENOVASEÇÃO__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'REVISAOATUAL', 'REVISÃOATUAL', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'CODIFICAURL:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'CODIFICAANCORA:', 'CODIFICAÂNCORA:', 'ANCHORENCODE' ),
+ 'language' => array( '0', '#IDIOMA:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'IDIOMADOCONTEUDO', 'IDIOMADOCONTEÚDO', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'PAGINASNOESPACONOMINAL', 'PÁGINASNOESPAÇONOMINAL', 'PAGINASNODOMINIO', 'PÁGINASNODOMÍNIO', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'NUMERODEADMINISTRADORES', 'NÚMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
+ 'defaultsort' => array( '1', 'ORDENACAOPADRAO', 'ORDENAÇÃOPADRÃO', 'ORDEMPADRAO', 'ORDEMPADRÃO', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'CAMINHODOARQUIVO', 'FILEPATH:' ),
+ 'hiddencat' => array( '1', '__CATEGORIAOCULTA__', '__CATOCULTA__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'PAGINASNACATEGORIA', 'PÁGINASNACATEGORIA', 'PAGINASNACAT', 'PÁGINASNACAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEXAR__', '__INDEX__' ),
+ 'noindex' => array( '1', '__NAOINDEXAR__', '__NÃOINDEXAR__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NUMERONOGRUPO', 'NÚMERONOGRUPO', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVELDEPROTECAO', 'NÍVELDEPROTEÇÃO', 'PROTECTIONLEVEL' ),
);
$messages = array(
@@ -199,6 +313,7 @@ $messages = array(
'tog-enotifminoredits' => 'Notificar-me por correio electrónico também quando as edições forem menores',
'tog-enotifrevealaddr' => 'Revelar o meu endereço de correio electrónico nas notificações',
'tog-shownumberswatching' => 'Mostrar o número de utilizadores a vigiar',
+'tog-oldsig' => 'Antevisão da assinatura:',
'tog-fancysig' => 'Tratar assinatura como texto wiki (sem link automático)',
'tog-externaleditor' => 'Por omissão, utilizar um editor externo (só para utilizadores avançados, exige configurações adicionais no seu computador)',
'tog-externaldiff' => 'Por omissão, utilizar diferenças externas (só para utilizadores avançados, exige configurações adicionais no seu computador)',
@@ -222,6 +337,13 @@ $messages = array(
'underline-never' => 'Nunca',
'underline-default' => 'Usar a configuração do browser',
+# Font style option in Special:Preferences
+'editfont-style' => 'Fonte de edição:',
+'editfont-default' => 'Fonte por omissão, do browser',
+'editfont-monospace' => 'Fonte monoespaçada',
+'editfont-sansserif' => 'Fonte sans-serif',
+'editfont-serif' => 'Fonte serifada',
+
# Dates
'sunday' => 'Domingo',
'monday' => 'Segunda-feira',
@@ -281,7 +403,7 @@ $messages = array(
'category-media-header' => 'Multimédia na categoria "$1"',
'category-empty' => "''Esta categoria não contém actualmente nenhuma página ou ficheiro multimédia.''",
'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}}',
-'hidden-category-category' => 'Categorias ocultas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias ocultas',
'category-subcat-count' => '{{PLURAL:$2|Esta categoria só contém a seguinte subcategoria.|Esta categoria contém {{PLURAL:$1|a seguinte subcategoria|as seguintes $1 subcategorias}} (de um total de $2).}}',
'category-subcat-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte subcategoria|as $1 subcategorias a seguir}}.',
'category-article-count' => '{{PLURAL:$2|Esta categoria só contém a seguinte página.|Esta categoria contém {{PLURAL:$1|a seguinte página|as seguintes $1 páginas}} (de um total de $2).}}',
@@ -289,6 +411,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Esta categoria só contém o seguinte ficheiro.|Esta categoria contém {{PLURAL:$1|o seguinte ficheiro|os seguintes $1 ficheiros}} (de um total de $2).}}',
'category-file-count-limited' => 'Nesta categoria há {{PLURAL:$1|um ficheiro|$1 ficheiros}}.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Páginas indexadas',
+'noindex-category' => 'Páginas não indexadas',
'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
'mainpagedocfooter' => 'Consulte o [http://meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.
@@ -299,10 +423,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]',
-'about' => 'Sobre',
-'article' => 'Página de conteúdo',
-'newwindow' => '(abre numa janela nova)',
-'cancel' => 'Cancelar',
+'about' => 'Sobre',
+'article' => 'Página de conteúdo',
+'newwindow' => '(abre numa janela nova)',
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Mais...',
+'mypage' => 'Utilizador',
+'mytalk' => 'Discussão',
+'anontalk' => 'Discussão para este IP',
+'navigation' => 'Navegação',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Procurar',
'qbbrowse' => 'Navegar',
'qbedit' => 'Editar',
@@ -310,15 +442,35 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'Minhas páginas',
'qbspecialpages' => 'Páginas especiais',
-'moredotdotdot' => 'Mais...',
-'mypage' => 'Utilizador',
-'mytalk' => 'Discussão',
-'anontalk' => 'Discussão para este IP',
-'navigation' => 'Navegação',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadados:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Adicionar&nbsp;tópico',
+'vector-action-delete' => 'Eliminar',
+'vector-action-move' => 'Mover',
+'vector-action-protect' => 'Proteger',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Desproteger',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Página de ajuda',
+'vector-namespace-image' => 'Ficheiro',
+'vector-namespace-main' => 'Página',
+'vector-namespace-media' => 'Página de multimédia',
+'vector-namespace-mediawiki' => 'Mensagem',
+'vector-namespace-project' => 'Página de projecto',
+'vector-namespace-special' => 'Página especial',
+'vector-namespace-talk' => 'Discussão',
+'vector-namespace-template' => 'Predefinição',
+'vector-namespace-user' => 'Página de utilizador',
+'vector-view-create' => 'Criar',
+'vector-view-edit' => 'Editar',
+'vector-view-history' => 'Ver histórico',
+'vector-view-view' => 'Ler',
+'vector-view-viewsource' => 'Ver fonte',
+'actions' => 'Acções',
+'namespaces' => 'Espaços nominais',
+'variants' => 'Variantes',
'errorpagetitle' => 'Erro',
'returnto' => 'Voltar para $1.',
@@ -368,18 +520,22 @@ $messages = array(
'otherlanguages' => 'Noutras línguas',
'redirectedfrom' => '(Redireccionado de $1)',
'redirectpagesub' => 'Página de redireccionamento',
-'lastmodifiedat' => 'Esta página foi modificada pela última vez às $2 de $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Esta página foi modificada pela última vez às $2 de $1.',
'viewcount' => 'Esta página foi acedida {{PLURAL:$1|uma vez|$1 vezes}}.',
'protectedpage' => 'Página protegida',
'jumpto' => 'Ir para:',
'jumptonavigation' => 'navegação',
'jumptosearch' => 'pesquisa',
+'view-pool-error' => 'Desculpe, mas de momento os servidores estão sobrecarregados.
+Há demasiados utilizadores a tentar visionar esta página.
+Espere um pouco antes de tentar aceder à página novamente, por favor.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Sobre a {{SITENAME}}',
'aboutpage' => 'Project:Sobre',
'copyright' => 'Conteúdo disponibilizado nos termos da $1.',
-'copyrightpagename' => 'Direitos de autor de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Direitos_de_autor',
'currentevents' => 'Notícias',
'currentevents-url' => 'Project:Notícias',
@@ -387,8 +543,6 @@ $messages = array(
'disclaimerpage' => 'Project:Aviso_geral',
'edithelp' => 'Ajuda de edição',
'edithelppage' => 'Help:Editar',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Conteúdos',
'mainpage' => 'Página principal',
'mainpage-description' => 'Página principal',
@@ -469,10 +623,6 @@ A última tentativa de consulta à base de dados foi:
"$1"
na função "$2".
A base de dados devolveu o erro "$3: $4"',
-'noconnect' => 'Desculpe! O wiki está a experimentar algumas dificuldades técnicas e não pode contactar o servidor da base de dados.<br />
-$1',
-'nodb' => 'Não foi possível seleccionar a base de dados $1',
-'cachederror' => 'A página apresentada é uma cópia em cache da página requisitada e pode não estar actualizada.',
'laggedslavemode' => "'''Aviso:''' A página pode não conter as actualizações mais recentes.",
'readonly' => 'Base de dados bloqueada (limitada a leituras)',
'enterlockreason' => 'Introduza um motivo para bloquear, incluindo uma estimativa de quando será desbloqueada',
@@ -490,6 +640,8 @@ Anote a URL e reporte este incidente a um [[Special:ListUsers/sysop|administrado
'readonly_lag' => 'A base de dados foi automaticamente bloqueada enquanto os servidores secundários se sincronizam com o primário',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
+'fileappenderrorread' => 'Não foi possível ler "$1" durante a anexação.',
+'fileappenderror' => 'Não foi possível adicionar "$1" a "$2".',
'filecopyerror' => 'Não foi possível copiar o ficheiro "$1" para "$2".',
'filerenameerror' => 'Não foi possível alterar o nome do ficheiro "$1" para "$2".',
'filedeleteerror' => 'Não foi possível eliminar o ficheiro "$1".',
@@ -499,7 +651,8 @@ Anote a URL e reporte este incidente a um [[Special:ListUsers/sysop|administrado
'unexpected' => 'Valor não esperado: "$1"="$2".',
'formerror' => 'Erro: Não foi possível enviar o formulário',
'badarticleerror' => 'Esta operação não pode ser realizada nesta página.',
-'cannotdelete' => 'Não foi possível eliminar a página ou ficheiro especificado (provavelmente por já ter sido eliminada por outra pessoa.)',
+'cannotdelete' => 'Não foi possível eliminar a página ou ficheiro "$1".
+Pode já ter sido eliminado por outro utilizador.',
'badtitle' => 'Título inválido',
'badtitletext' => 'O título de página solicitado era inválido, vazio, ou um link interlínguas ou interwikis incorrecto.
Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
@@ -533,7 +686,6 @@ A justificação foi "\'\'$2\'\'".',
'virus-unknownscanner' => 'antivírus desconhecido:',
# Login and logout pages
-'logouttitle' => 'Desautenticar do sistema',
'logouttext' => "'''Já não está autenticado.'''
Pode continuar a utilizar a {{SITENAME}} anonimamente, ou pode [[Special:UserLogin|autenticar-se novamente]] com o mesmo nome de utilizador ou com um nome de utilizador diferente.
@@ -541,7 +693,6 @@ Tenha em atenção que algumas páginas poderão continuar a ser apresentadas co
'welcomecreation' => '== Bem-vindo, $1! ==
A sua conta foi criada.
Não se esqueça de personalizar as suas [[Special:Preferences|preferências na {{SITENAME}}]].',
-'loginpagetitle' => 'Autenticação de utilizador',
'yourname' => 'Nome de utilizador:',
'yourpassword' => 'Palavra-chave:',
'yourpasswordagain' => 'Repita a palavra-chave:',
@@ -552,6 +703,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'nav-login-createaccount' => 'Entrar / criar conta',
'loginprompt' => "É necessário ter os ''cookies'' activados no seu browser para poder autenticar-se na {{SITENAME}}.",
'userlogin' => 'Criar uma conta ou entrar',
+'userloginnocreate' => 'Autenticação',
'logout' => 'Sair',
'userlogout' => 'Sair',
'notloggedin' => 'Não autenticado',
@@ -564,29 +716,8 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'badretype' => 'As palavras-chave que introduziu não são iguais.',
'userexists' => 'O nome de utilizador que introduziu já existe.
Escolha um nome diferente.',
-'youremail' => 'Correio electrónico:',
-'username' => 'Nome de utilizador:',
-'uid' => 'Número de identificação:',
-'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
-'yourrealname' => 'Nome verdadeiro:',
-'yourlanguage' => 'Língua:',
-'yourvariant' => 'Variante',
-'yournick' => 'Assinatura:',
-'badsig' => 'Assinatura inválida; verifique o código HTML utilizado.',
-'badsiglength' => 'A sua assinatura é demasiado longa.
-Não deverá conter mais de $1 {{PLURAL:$1|carácter|caracteres}}.',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'Não especificado',
-'gender-male' => 'Masculino',
-'gender-female' => 'Feminino',
-'prefs-help-gender' => 'Opcional: usado pelo programa para ajuste das mensagens ao género do utilizador.
-Esta informação será pública.',
-'email' => 'Correio electrónico',
-'prefs-help-realname' => 'Opcional: se optar por revelar o seu nome verdadeiro, este será utilizado para atribuir-lhe crédito pelo seu trabalho.',
'loginerror' => 'Erro de autenticação',
-'prefs-help-email' => 'Opcional: o endereço de correio electrónico é opcional, mas permite-nos enviar-lhe uma nova palavra-chave caso esqueça a antiga.
-Também permite que outros entrem em contacto consigo através da sua página de utilizador ou de discussão sem lhes revelar a sua identidade.',
-'prefs-help-email-required' => 'O endereço de correio electrónico é requerido.',
+'createaccounterror' => 'Não foi possível criar a conta: $1',
'nocookiesnew' => "A conta de utilizador foi criada, mas neste momento não está autenticado.
A {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.
Os ''cookies'' estão desactivados no seu browser.
@@ -602,10 +733,11 @@ Os nomes de utilizador são sensíveis à capitalização.
Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
'nosuchusershort' => 'Não existe um utilizador com o nome "<nowiki>$1</nowiki>". Verifique o nome que introduziu.',
'nouserspecified' => 'Precisa de especificar um nome de utilizador.',
+'login-userblocked' => 'Este utilizador está bloqueado. Não é permitido o acesso.',
'wrongpassword' => 'A palavra-chave que introduziu é inválida. Tente novamente, por favor.',
'wrongpasswordempty' => 'A palavra-chave não foi introduzida. Introduza-a, por favor.',
-'passwordtooshort' => 'A sua palavra-chave é inválida ou demasiado curta.
-Deve de ter no mínimo {{PLURAL:$1|1 caracter|$1 caracteres}} e ser diferente do seu nome de utilizador.',
+'passwordtooshort' => 'A palavra-chave deve ter no mínimo $1 {{PLURAL:$1|carácter|caracteres}}.',
+'password-name-match' => 'A sua palavra-chave tem de ser diferente do seu nome de utilizador.',
'mailmypassword' => 'Enviar uma palavra-chave nova por correio electrónico',
'passwordremindertitle' => 'Nova palavra-chave temporária na {{SITENAME}}',
'passwordremindertext' => 'Alguém (provavelmente você, a partir do endereço IP $1) solicitou uma palavra-chave nova para a sua conta na {{SITENAME}} ($4).
@@ -615,6 +747,7 @@ A palavra-chave temporária expira após {{PLURAL:$5|um dia|$5 dias}}.
Caso outra pessoa tenha feito o pedido, ou se entretanto se recordou da sua palavra-chave e já não deseja alterá-la, ignore esta mensagem e continue a utilizar a palavra-chave antiga.',
'noemail' => 'Não foi registado um endereço de correio electrónico para o utilizador "$1".',
+'noemailcreate' => 'Precisa de fornecer um endereço de correio electrónico válido',
'passwordsent' => 'Foi enviada uma palavra-chave nova para o endereço de correio electrónico do utilizador "$1".
Volte a autenticar-se após recebê-la, por favor.',
'blocked-mailpassword' => 'O seu endereço IP foi bloqueado e, portanto, não será possível utilizar a função de recuperação da palavra-chave, para prevenir o uso abusivo.',
@@ -639,9 +772,11 @@ Introduza um endereço formatado correctamente ou deixe o campo vazio.',
Deve agora autenticar-se e alterar a sua palavra-chave.
Se a conta foi criada por engano, pode ignorar esta mensagem.',
+'usernamehasherror' => 'O nome de utilizador não pode conter o símbolo de cardinal (#).',
'login-throttled' => 'Realizou demasiadas tentativas de autenticação com esta conta.
Aguarde antes de tentar novamente, por favor.',
'loginlanguagelabel' => 'Língua: $1',
+'suspicious-userlogout' => 'O seu pedido para sair foi negado porque parece ter sido enviado por um browser danificado ou por um proxy com cache.',
# Password reset dialog
'resetpass' => 'Alterar palavra-chave',
@@ -654,17 +789,13 @@ Para prosseguir, será necessário definir uma nova palavra-chave.',
'retypenew' => 'Repita a palavra-chave nova:',
'resetpass_submit' => 'Definir palavra-chave e entrar',
'resetpass_success' => 'Sua palavra-chave foi alterada com sucesso! Autenticando-se...',
-'resetpass_bad_temporary' => 'Palavra-chave temporária incorrecta. Pode ser que você já tenha conseguido alterar a sua palavra-chave ou pedido que uma nova temporária fosse gerada.',
'resetpass_forbidden' => 'Não é possível alterar palavras-chave',
'resetpass-no-info' => 'Precisa estar autenticado para aceder directamente a esta página.',
'resetpass-submit-loggedin' => 'Alterar palavra-chave',
+'resetpass-submit-cancel' => 'Cancelar',
'resetpass-wrong-oldpass' => 'Palavra-chave temporária ou actual inválida.
Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova palavra-chave temporária.',
'resetpass-temp-password' => 'Palavra-chave temporária:',
-'resetpass-log' => 'Registo de reposições de palavra-chave',
-'resetpass-logtext' => 'Abaixo encontra-se um registo dos utilizadores que tiveram a sua palavra-chave reposta por um administrador.',
-'resetpass-logentry' => 'alterou a palavra-chave de $1',
-'resetpass-comment' => 'Motivo da reposição de palavra-chave:',
# Edit page toolbar
'bold_sample' => 'Texto a negrito',
@@ -742,7 +873,6 @@ Inclua todos os detalhes acima em quaisquer contactos relacionados com este bloq
'blockededitsource' => "O texto das '''suas edições''' em '''$1''' é mostrado abaixo:",
'whitelistedittitle' => 'É necessário autenticar-se para editar páginas',
'whitelistedittext' => 'Precisa de se $1 para poder editar páginas.',
-'confirmedittitle' => 'Confirmação de e-mail requerida para editar',
'confirmedittext' => 'Precisa de confirmar o seu endereço de correio electrónico antes de começar a editar páginas.
Introduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.',
'nosuchsectiontitle' => 'Não foi possível encontrar a secção',
@@ -766,14 +896,21 @@ Se é um utilizador anónimo e sente que lhe foram direccionados comentários ir
Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]
ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
+'noarticletext-nopermission' => 'Ainda não existe texto nesta página.
+Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas
+ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]</span>.',
'userpage-userdoesnotexist' => 'A conta "$1" não se encontra registada.
Verifique se deseja realmente criar ou editar esta página, por favor.',
+'userpage-userdoesnotexist-view' => 'A conta de utilizador "$1" não está registada.',
+'blocked-notice-logextract' => 'Este utilizador encontra-se actualmente bloqueado.
+Para referência, o último registo de bloqueio é apresentado abaixo:',
'clearyourcache' => "'''Nota:''' Após gravar, terá de limpar a ''cache'' do seu browser para ver as alterações.'''
'''Mozilla / Firefox / Safari:''' pressione ''Shift'' enquanto clica ''Recarregar'', ou pressione ''Ctrl-F5'' ou ''Ctrl-R'' (''Command-R'' num Macintosh);
'''Konqueror:''': clique no botão ''Recarregar'' ou pressione ''F5'';
'''Opera:''' limpe a ''cache'' em ''Ferramentas → Preferências'' (''Tools → Preferences'');
'''Internet Explorer:''' pressione ''Ctrl'' enquanto clica em ''Recarregar'' ou pressione ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Dica:''' Use o botão {{int:showpreview}} para testar o seu CSS/JS novo antes de gravar.",
+'usercssyoucanpreview' => "'''Dica:''' Use o botão \"{{int:showpreview}}\" para testar o seu novo CSS antes de gravar.",
+'userjsyoucanpreview' => "'''Dica:''' Use o botão \"{{int:showpreview}}\" para testar o seu novo JavaScript antes de gravar.",
'usercsspreview' => "'''Lembre-se de que está apenas a antever o seu CSS particular.
Este ainda não foi gravado!'''",
'userjspreview' => "'''Lembre-se que está apenas a testar ou antever o seu JavaScript particular.'''
@@ -827,13 +964,16 @@ A página não pode ser gravada.'''",
Pode, no entanto, copiar o seu texto para um editor externo e guardá-lo para posterior submissão.
O administrador que bloqueou a base de dados forneceu a seguinte explicação: $1",
-'protectedpagewarning' => "'''AVISO: Esta página foi protegida e poderá ser editada apenas por utilizadores com privilégios sysop (administradores).'''",
-'semiprotectedpagewarning' => "'''Nota:''' Esta página foi protegida de modo a que apenas utilizadores registados a possam editar.",
+'protectedpagewarning' => "'''Aviso: Esta página foi protegida para só poder ser editada por administradores.'''
+O último registo é apresentado abaixo para referência:",
+'semiprotectedpagewarning' => "'''Nota:''' Esta página foi protegida de modo a que apenas utilizadores registados a possam editar.
+A última entrada no histórico é fornecida abaixo como referência.",
'cascadeprotectedwarning' => "'''Aviso:''' Esta página está protegida de forma que apenas os administradores possam editá-la, porque se encontra incluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} em cascata:",
-'titleprotectedwarning' => "'''ATENÇÃO: Esta página foi protegida por forma a que [[Special:ListGroupRights|privilégios específicos]] sejam necessários para criá-la.'''",
-'templatesused' => 'Predefinições utilizadas nesta página:',
-'templatesusedpreview' => 'Predefinições utilizadas nesta previsão:',
-'templatesusedsection' => 'Predefinições utilizadas nesta secção:',
+'titleprotectedwarning' => "'''ATENÇÃO: Esta página foi protegida por forma a que [[Special:ListGroupRights|privilégios específicos]] sejam necessários para criá-la.'''
+O último registo é apresentado abaixo para referência:",
+'templatesused' => '{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta página:',
+'templatesusedpreview' => '{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta antevisão:',
+'templatesusedsection' => '{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta secção:',
'template-protected' => '(protegida)',
'template-semiprotected' => '(semi-protegida)',
'hiddencategories' => 'Esta página pertence a {{PLURAL:$1|uma categoria oculta|$1 categorias ocultas}}:',
@@ -842,15 +982,18 @@ O administrador que bloqueou a base de dados forneceu a seguinte explicação: $
'nocreatetext' => 'A {{SITENAME}} restringe a criação de novas páginas por utilizadores anónimos.
Pode voltar atrás e editar uma página já existente, ou [[Special:UserLogin|autenticar-se ou criar uma conta]].',
'nocreate-loggedin' => 'Não possui permissão para criar novas páginas.',
+'sectioneditnotsupported-title' => 'Edição de secções não é suportada',
+'sectioneditnotsupported-text' => 'A edição de secções não é suportada nesta página de edição.',
'permissionserrors' => 'Erros de permissões',
'permissionserrorstext' => 'Não possui permissão para fazer isso, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:',
'permissionserrorstext-withaction' => 'Não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:',
-'recreate-deleted-warn' => "'''Atenção: Você está criando novamente uma página já eliminada em outra ocasião.'''
+'recreate-moveddeleted-warn' => "'''Aviso: Está a recriar uma página anteriormente eliminada.'''
-Certifique-se de que seja adequado prosseguir editando esta página.
-O registo de eliminação desta página é exibido a seguir, para sua comodidade:",
-'deleted-notice' => 'Esta página foi eliminada. Disponibiliza-se abaixo o registo de eliminações para esta página, para referência.',
-'deletelog-fulllog' => 'Ver registo completo',
+Verifique se é apropriado continuar a editar esta página.
+Para sua conveniência, é apresentado de seguida o registo de eliminação e de movimento da página:",
+'moveddeleted-notice' => 'Esta página foi eliminada.
+Disponibiliza-se abaixo o registo de eliminações e de movimento para esta página, para referência.',
+'log-fulllog' => 'Ver registo detalhado',
'edit-hook-aborted' => 'Edição abortada por hook.
Ele não deu nenhuma explicação.',
'edit-gone-missing' => 'Não foi possível actualizar a página.
@@ -872,6 +1015,7 @@ Estes argumentos foram omitidos.',
'post-expand-template-argument-category' => 'Páginas com omissão de argumentos para predefinições',
'parser-template-loop-warning' => 'Ciclo de predefinições detectado: [[$1]]',
'parser-template-recursion-depth-warning' => 'Atingido o limite de profundidade de recursividade de predefinição ($1)',
+'language-converter-depth-warning' => 'O limite de profundidade do conversor de línguas excedeu a ($1)',
# "Undo" feature
'undo-success' => 'A edição pode ser desfeita.
@@ -890,9 +1034,9 @@ O motivo apresentado por $3 foi ''$2''",
'viewpagelogs' => 'Ver registos para esta página',
'nohistory' => 'Não há histórico de edições para esta página.',
'currentrev' => 'Revisão actual',
-'currentrev-asof' => 'Edição actual tal como $1',
-'revisionasof' => 'Edição tal como às $1',
-'revision-info' => 'Revisão de $1; $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Edição actual desde as $1',
+'revisionasof' => 'Revisão das $1',
+'revision-info' => 'Revisão das $1 por $2',
'previousrevision' => '← Revisão anterior',
'nextrevision' => 'Revisão seguinte →',
'currentrevisionlink' => 'Revisão actual',
@@ -907,7 +1051,7 @@ Legenda: '''({{int:cur}})''' = diferenças para a versão actual,
'''({{int:last}})''' = diferenças para a versão anterior,
'''{{int:minoreditletter}}''' = edição menor",
'history-fieldset-title' => 'Navegar pelo histórico',
-'deletedrev' => '[eliminada]',
+'history-show-deleted' => 'Somente eliminados',
'histfirst' => 'Mais antigas',
'histlast' => 'Mais recentes',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -916,71 +1060,115 @@ Legenda: '''({{int:cur}})''' = diferenças para a versão actual,
# Revision feed
'history-feed-title' => 'História de revisão',
'history-feed-description' => 'Histórico de edições para esta página nesta wiki',
-'history-feed-item-nocomment' => '$1 em $2', # user at time
+'history-feed-item-nocomment' => '$1 em $2',
'history-feed-empty' => 'A página solicitada não existe.
Pode ter sido eliminada da wiki ou o nome sido alterado.
Tente [[Special:Search|pesquisar na wiki]] novas páginas relevantes.',
# Revision deletion
-'rev-deleted-comment' => '(comentário removido)',
-'rev-deleted-user' => '(nome de utilizador removido)',
-'rev-deleted-event' => '(entrada removida)',
-'rev-deleted-text-permission' => "Esta edição desta página foi '''eliminada'''.
-Poderão existir detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registo de eliminação].",
-'rev-deleted-text-view' => "Esta edição desta página foi '''eliminada'''.
-Por ser um administrador, você pode vê-la; poderão existir detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registo de eliminação].",
-'rev-deleted-no-diff' => "Você não pode ver estas diferenças porque uma das revisões foi '''eliminada'''.
-Poderá haver detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
-'rev-deleted-unhide-diff' => "Uma das revisões destas diferenças foi '''eliminada'''.
-Poderá haver detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].
-Por ser um administrador, você pode mesmo assim [$1 ver estas diferenças], se desejar prosseguir.",
-'rev-delundel' => 'mostrar/esconder',
-'revisiondelete' => 'Eliminar/restaurar edições',
-'revdelete-nooldid-title' => 'Edição de destino inválida',
-'revdelete-nooldid-text' => 'Ocorreu uma das seguintes: não especificou a revisão (ou revisões) de destino para realizar esta função, a revisão que especificou não existe, ou está tentando ocultar a revisão actual.',
-'revdelete-nologtype-title' => 'Tipo de registo não especificado',
-'revdelete-nologtype-text' => 'Não especificou um tipo de registo sobre o qual será executada esta operação.',
-'revdelete-toomanytargets-title' => 'Demasiados alvos',
-'revdelete-toomanytargets-text' => 'Você especificou demasiados tipos de alvos sobre os quais executar esta ação.',
-'revdelete-nologid-title' => 'Entrada de registo inválida',
-'revdelete-nologid-text' => 'Ou não especificou um evento do registo sobre o qual executar esta função, ou a entrada que especificou não existe.',
-'revdelete-selected' => "'''{{PLURAL:$2|Edição seleccionada|Edições seleccionadas}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Evento do registo seleccionado|Eventos do registo seleccionados}}:'''",
-'revdelete-text' => "'''Edições e eventos eliminados continuarão a aparecer no histórico e registos da página, mas partes do seu conteúdo estarão inacessíveis ao público.'''
-
-Outros administradores em {{SITENAME}} continuarão a poder aceder ao conteúdo escondido e podem restaurá-lo novamente através desta mesma interface, a menos que restrições adicionais sejam definidas.
-Por favor, confirme que pretende fazer isto, que compreende as consequências, e que vai fazê-lo em concordância com [[{{MediaWiki:Policy-url}}|a política]].",
-'revdelete-suppress-text' => "A supressão '''só''' deverá ser usada nos seguintes casos:
+'rev-deleted-comment' => '(comentário removido)',
+'rev-deleted-user' => '(nome de utilizador removido)',
+'rev-deleted-event' => '(entrada removida)',
+'rev-deleted-user-contribs' => '[nome de utilizador ou IP removido - edição ocultada das contribuições]',
+'rev-deleted-text-permission' => "Esta revisão de página foi '''eliminada'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
+'rev-deleted-text-unhide' => "Esta revisão de página foi '''eliminada'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].
+Como administrador, pode mesmo assim [$1 ver esta edição] se deseja prosseguir.",
+'rev-suppressed-text-unhide' => "Esta revisão de página foi '''suprimida'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].
+Como administrador, pode mesmo assim [$1 ver esta revisão] se deseja prosseguir.",
+'rev-deleted-text-view' => "Esta revisão de página foi '''eliminada'''.
+Como administrador, pode vê-la; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
+'rev-suppressed-text-view' => "Esta revisão de página foi '''suprimida'''.
+Como administrador, pode vê-la; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].",
+'rev-deleted-no-diff' => "Não pode ver esta diferença entre revisões porque uma das revisões foi '''eliminada'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
+'rev-suppressed-no-diff' => "Não pode visionar esta diferença entre versões porque uma das revisões foi '''eliminada'''.",
+'rev-deleted-unhide-diff' => "Uma das revisões desta diferença entre revisões foi '''eliminada'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].
+Como administrador, pode mesmo assim [$1 ver estas diferenças] se deseja prosseguir.",
+'rev-suppressed-unhide-diff' => "Uma das revisões desta diferença entre revisões foi '''suprimida'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].
+Como administrador, pode mesmo assim [$1 ver estas diferenças] se deseja prosseguir.",
+'rev-deleted-diff-view' => "Uma das revisões desta diferença entre revisões foi '''eliminada'''.
+Como administrador, pode ver a diferença entre revisões; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
+'rev-suppressed-diff-view' => "Uma das revisões desta diferença entre revisões foi '''suprimida'''.
+Como administrador, pode ver a diferença entre revisões; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].",
+'rev-delundel' => 'mostrar/esconder',
+'rev-showdeleted' => 'mostrar',
+'revisiondelete' => 'Eliminar/restaurar edições',
+'revdelete-nooldid-title' => 'Edição de destino inválida',
+'revdelete-nooldid-text' => 'Ocorreu uma das seguintes: não especificou a revisão (ou revisões) de destino para realizar esta função, a revisão que especificou não existe, ou está tentando ocultar a revisão actual.',
+'revdelete-nologtype-title' => 'Tipo de registo não especificado',
+'revdelete-nologtype-text' => 'Não especificou um tipo de registo sobre o qual será executada esta operação.',
+'revdelete-nologid-title' => 'Entrada de registo inválida',
+'revdelete-nologid-text' => 'Ou não especificou um evento do registo sobre o qual executar esta função, ou a entrada que especificou não existe.',
+'revdelete-no-file' => 'O ficheiro especificado não existe.',
+'revdelete-show-file-confirm' => 'Tem a certeza de que quer ver uma revisão eliminada do ficheiro "<nowiki>$1</nowiki>" de $2 às $3?',
+'revdelete-show-file-submit' => 'Sim',
+'revdelete-selected' => "'''{{PLURAL:$2|Edição seleccionada|Edições seleccionadas}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evento do registo seleccionado|Eventos do registo seleccionados}}:'''",
+'revdelete-text' => "'''Edições e eventos eliminados continuarão a aparecer no histórico e registos da página, mas partes do seu conteúdo estarão inacessíveis ao público.'''
+Outros administradores da {{SITENAME}} continuarão a poder aceder ao conteúdo escondido e podem restaurá-lo novamente através desta mesma interface, a menos que restrições adicionais sejam definidas.",
+'revdelete-confirm' => 'Por favor confirme que pretende executar esta operação, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].',
+'revdelete-suppress-text' => "A supressão '''só''' deverá ser usada nos seguintes casos:
* Informação potencialmente caluniosa, difamatória ou injuriosa
* Informação pessoal imprópria
*: ''endereços de domicílio e números de telefone, números da segurança social, etc''",
-'revdelete-legend' => 'Definir restrições de visibilidade',
-'revdelete-hide-text' => 'Ocultar texto da edição',
-'revdelete-hide-name' => 'Ocultar operação e destino',
-'revdelete-hide-comment' => 'Ocultar resumo da edição',
-'revdelete-hide-user' => 'Ocultar nome de utilizador/IP',
-'revdelete-hide-restricted' => 'Ocultar dados dos administradores e de todos os outros',
-'revdelete-suppress' => 'Ocultar dados dos administradores e de todos os outros',
-'revdelete-hide-image' => 'Ocultar conteúdo do ficheiro',
-'revdelete-unsuppress' => 'Remover restrições das revisões restauradas',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Aplicar à edição seleccionada',
-'revdelete-logentry' => 'alterou a visibilidade das revisões de "[[$1]]"',
-'logdelete-logentry' => 'alterou a visibilidade dos eventos de "[[$1]]"',
-'revdelete-success' => "'''A visibilidade da revisão foi actualizada com sucesso.'''",
-'logdelete-success' => "'''Visibilidade de evento definida com sucesso.'''",
-'revdel-restore' => 'Alterar visibilidade',
-'pagehist' => 'Histórico da página',
-'deletedhist' => 'Histórico de eliminações',
-'revdelete-content' => 'conteúdo',
-'revdelete-summary' => 'resumo da edição',
-'revdelete-uname' => 'nome de utilizador',
-'revdelete-restricted' => 'restrições a administradores aplicadas',
-'revdelete-unrestricted' => 'restrições a administradores removidas',
-'revdelete-hid' => 'ocultou $1',
-'revdelete-unhid' => 'desocultou $1',
-'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisão|revisões}}',
-'logdelete-log-message' => '$1 para $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-legend' => 'Definir restrições de visibilidade',
+'revdelete-hide-text' => 'Ocultar texto da edição',
+'revdelete-hide-image' => 'Ocultar conteúdo do ficheiro',
+'revdelete-hide-name' => 'Ocultar operação e destino',
+'revdelete-hide-comment' => 'Ocultar resumo da edição',
+'revdelete-hide-user' => 'Ocultar nome de utilizador/IP',
+'revdelete-hide-restricted' => 'Ocultar dados dos administradores e de todos os outros',
+'revdelete-radio-same' => '(manter)',
+'revdelete-radio-set' => 'Sim',
+'revdelete-radio-unset' => 'Não',
+'revdelete-suppress' => 'Ocultar dados dos administradores e de todos os outros',
+'revdelete-unsuppress' => 'Remover restrições das revisões restauradas',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Aplicar {{PLURAL:$1|à revisão seleccionada|às revisões seleccionadas}}',
+'revdelete-logentry' => 'alterou a visibilidade das revisões de "[[$1]]"',
+'logdelete-logentry' => 'alterou a visibilidade dos eventos de "[[$1]]"',
+'revdelete-success' => "'''A visibilidade da revisão foi actualizada com sucesso.'''",
+'revdelete-failure' => "'''A visibilidade da revisão não foi actualizada:'''
+$1",
+'logdelete-success' => "'''Visibilidade de evento definida com sucesso.'''",
+'logdelete-failure' => "'''Não foi possível definir a visibilidade do registo:'''
+$1",
+'revdel-restore' => 'Alterar visibilidade',
+'pagehist' => 'Histórico da página',
+'deletedhist' => 'Histórico de eliminações',
+'revdelete-content' => 'conteúdo',
+'revdelete-summary' => 'resumo da edição',
+'revdelete-uname' => 'nome de utilizador',
+'revdelete-restricted' => 'restrições a administradores aplicadas',
+'revdelete-unrestricted' => 'restrições a administradores removidas',
+'revdelete-hid' => 'ocultou $1',
+'revdelete-unhid' => 'desocultou $1',
+'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisão|revisões}}',
+'logdelete-log-message' => '$1 para $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-hide-current' => 'Erro ao ocultar o item datado de $2, $1: esta é a revisão actual.
+Não pode ser ocultada.',
+'revdelete-show-no-access' => 'Erro ao mostrar o item datado de $2, $1: este item foi marcado como "restrito".
+Não tem acesso.',
+'revdelete-modify-no-access' => 'Erro ao modificar o item datado de $2, $1: este item foi marcado como "restrito".
+Não tem acesso.',
+'revdelete-modify-missing' => 'Erro ao modificar o item ID $1: não existe na base de dados!',
+'revdelete-no-change' => "'''Aviso:''' o item datado de $2, $1 já possui as configurações de visibilidade solicitadas.",
+'revdelete-concurrent-change' => 'Erro ao modificar o item com data/hora $2, $1: o seu estado parece ter sido alterado por outra pessoa enquanto você tentava modificá-lo.
+Verifique os registos, por favor.',
+'revdelete-only-restricted' => 'Erro ao ocultar o item de $2 às $1: não pode impedir que os itens sejam vistos pelos administradores sem seleccionar também uma das outras opções de visibilidade.',
+'revdelete-reason-dropdown' => '*Razões comuns para eliminação
+** Violação de direitos de autor
+** Informações pessoais inapropriadas
+** Informações potencialmente difamatórias',
+'revdelete-otherreason' => 'Outro/motivo adicional:',
+'revdelete-reasonotherlist' => 'Outro motivo',
+'revdelete-edit-reasonlist' => 'Editar motivos de eliminação',
+'revdelete-offender' => 'Autor da revisão:',
# Suppression log
'suppressionlog' => 'Registo de supressões',
@@ -1019,67 +1207,13 @@ Note que, se usar os links de navegação, os botões de opção voltarão aos v
'mergelogpagetext' => 'Segue-se um registo das mais recentes fusões de históricos de páginas.',
# Diffs
-'history-title' => 'Histórico de edições de "$1"',
-'difference' => '(Diferença entre edições)',
-'lineno' => 'Linha $1:',
-'compareselectedversions' => 'Compare as versões seleccionadas',
-'visualcomparison' => 'Comparação visual',
-'wikicodecomparison' => 'Comparação de texto wiki',
-'editundo' => 'desfazer',
-'diff-multi' => '({{PLURAL:$1|uma edição intermédia não apresentada|$1 edições intermédias não apresentadas}})',
-'diff-movedto' => 'movido para $1',
-'diff-styleadded' => 'estilo $1 adicionado',
-'diff-added' => '$1 adicionado',
-'diff-changedto' => 'alterado para $1',
-'diff-movedoutof' => 'movido para fora de $1',
-'diff-styleremoved' => 'estilo $1 removido',
-'diff-removed' => '$1 removido',
-'diff-changedfrom' => 'alterado de $1',
-'diff-src' => 'fonte',
-'diff-withdestination' => 'com destino $1',
-'diff-with' => '&#32;com $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'largura',
-'diff-height' => 'altura',
-'diff-p' => "um '''parágrafo'''",
-'diff-blockquote' => "uma '''citação'''",
-'diff-h1' => "um '''cabeçalho (de nível 1)'''",
-'diff-h2' => "um '''cabeçalho (de nível 2)'''",
-'diff-h3' => "um '''cabeçalho (de nível 3)'''",
-'diff-h4' => "um '''cabeçalho (de nível 4)'''",
-'diff-h5' => "um '''cabeçalho (de nível 5)'''",
-'diff-pre' => "um '''bloco pré-formatado'''",
-'diff-div' => "uma '''divisão'''",
-'diff-ul' => "uma '''lista sem ordenação'''",
-'diff-ol' => "uma '''lista ordenada'''",
-'diff-li' => "um '''item de lista'''",
-'diff-table' => "uma '''tabela'''",
-'diff-tbody' => "o '''conteúdo de uma tabela'''",
-'diff-tr' => "uma '''linha'''",
-'diff-td' => "uma '''célula'''",
-'diff-th' => "um '''cabeçalho'''",
-'diff-br' => "uma '''quebra de linha'''",
-'diff-hr' => "uma '''linha horizontal'''",
-'diff-code' => "um '''bloco de código computacional'''",
-'diff-dl' => "uma '''lista de definições'''",
-'diff-dt' => "uma '''definição do termo'''",
-'diff-dd' => "uma '''definição'''",
-'diff-input' => "uma '''entrada de dados'''",
-'diff-form' => "um '''formulário'''",
-'diff-img' => "uma '''imagem'''",
-'diff-span' => "um '''span'''",
-'diff-a' => "uma '''ligação'''",
-'diff-i' => "'''itálico'''",
-'diff-b' => "'''negrito'''",
-'diff-strong' => "'''forte'''",
-'diff-em' => "'''ênfase'''",
-'diff-font' => "'''tipo de letra'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''apagado'''",
-'diff-tt' => "'''largura fixa'''",
-'diff-sub' => "'''sub script'''",
-'diff-sup' => "'''super script'''",
-'diff-strike' => "'''paralizado através de'''",
+'history-title' => 'Histórico de edições de "$1"',
+'difference' => '(Diferença entre edições)',
+'lineno' => 'Linha $1:',
+'compareselectedversions' => 'Compare as versões seleccionadas',
+'showhideselectedversions' => 'Mostrar/ocultar versões selecionadas',
+'editundo' => 'desfazer',
+'diff-multi' => '({{PLURAL:$1|uma edição intermédia não apresentada|$1 edições intermédias não apresentadas}})',
# Search results
'searchresults' => 'Resultados da pesquisa',
@@ -1087,28 +1221,25 @@ Note que, se usar os links de navegação, os botões de opção voltarão aos v
'searchresulttext' => 'Para mais informações sobre pesquisas na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Pesquisou \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
'searchsubtitleinvalid' => 'Pesquisou "$1"',
-'noexactmatch' => "'''Não existe uma página com o título \"\$1\".''' Você pode [[:\$1|criar tal página]].",
-'noexactmatch-nocreate' => "'''Não há uma página intitulada como \"\$1\".'''",
'toomanymatches' => 'Foram devolvidos demasiados resultados; tente outro termo de pesquisa, por favor',
'titlematches' => 'Resultados no título das páginas',
'notitlematches' => 'Nenhum título de página coincide com o termo pesquisado',
'textmatches' => 'Resultados no conteúdo das páginas',
'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
-'prevn' => 'anteriores $1',
-'nextn' => 'próximos $1',
+'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
+'nextn' => '{{PLURAL:$1|posterior|$1 posteriores}}',
'prevn-title' => '$1 {{PLURAL:$1|resultado anterior|resultados anteriores}}',
'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
-'viewprevnext' => 'Ver ($1) ($2) ($3).',
+'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opções de pesquisa',
'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
'searchmenu-new' => "'''Crie a página \"[[:\$1]]\" nesta wiki!'''",
'searchhelp-url' => 'Help:Conteúdos',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegar as páginas com este prefixo]]',
'searchprofile-articles' => 'Páginas de conteúdo',
-'searchprofile-articles-and-proj' => 'Páginas de conteúdo e de projecto',
-'searchprofile-project' => 'Páginas de projecto',
-'searchprofile-images' => 'Ficheiros',
+'searchprofile-project' => 'Páginas de Ajuda e de Projecto',
+'searchprofile-images' => 'Multimédia',
'searchprofile-everything' => 'Todas',
'searchprofile-advanced' => 'Personalizar',
'searchprofile-articles-tooltip' => 'Pesquisar em $1',
@@ -1116,8 +1247,6 @@ Note que, se usar os links de navegação, os botões de opção voltarão aos v
'searchprofile-images-tooltip' => 'Pesquisar ficheiros',
'searchprofile-everything-tooltip' => 'Pesquisar em todo o conteúdo (incluindo páginas de discussão)',
'searchprofile-advanced-tooltip' => 'Personalizar os espaços nominais onde pesquisar',
-'prefs-search-nsdefault' => 'Pesquisar usando as definições padrão:',
-'prefs-search-nscustom' => 'Pesquisar domínios personalizados:',
'search-result-size' => '$1 ({{PLURAL:$2|1 palavra|$2 palavras}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redirecionamento de $1)',
@@ -1130,11 +1259,12 @@ Note que, se usar os links de navegação, os botões de opção voltarão aos v
'search-mwsuggest-disabled' => 'sem sugestões',
'search-relatedarticle' => 'Relacionado',
'mwsuggest-disable' => 'Desactivar sugestões AJAX',
+'searcheverything-enable' => 'Pesquisar em todos os espaços nominais',
'searchrelated' => 'relacionados',
'searchall' => 'todos',
'showingresults' => "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.",
'showingresultsnum' => "{{PLURAL:$3|É apresentado '''um''' resultado|São apresentados '''$3''' resultados}} abaixo{{PLURAL:$3||, começando pelo '''$2'''º}}.",
-'showingresultstotal' => "Exibindo {{PLURAL:$4|o resultado '''$1''' de '''$3'''|os resultados '''$1 a $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1–$2''' de '''$3'''}} para '''$4'''",
'nonefound' => "'''Nota''': Por omissão, só alguns dos espaços nominais são pesquisados.
Tente usar o prefixo ''all:'' para pesquisar todo o conteúdo (incluindo páginas de discussão, predefinições, etc.), ou use como prefixo o espaço nominal desejado.",
'search-nonefound' => 'A pesquisa não produziu quaisquer resultados.',
@@ -1143,113 +1273,154 @@ Tente usar o prefixo ''all:'' para pesquisar todo o conteúdo (incluindo página
'powersearch-ns' => 'Pesquisar nos espaços nominais:',
'powersearch-redir' => 'Listar redireccionamentos',
'powersearch-field' => 'Pesquisar',
+'powersearch-togglelabel' => 'Marcar:',
+'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'Nenhum',
'search-external' => 'Pesquisa externa',
'searchdisabled' => 'Foi impossibilitada a realização de pesquisas na {{SITENAME}}.
Entretanto, pode realizar pesquisas através do Google.
Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode estar desactualizada.',
+# Quickbar
+'qbsettings' => 'Barra Rápida',
+'qbsettings-none' => 'Nenhuma',
+'qbsettings-fixedleft' => 'Fixo à esquerda',
+'qbsettings-fixedright' => 'Fixo à direita',
+'qbsettings-floatingleft' => 'Flutuando à esquerda',
+'qbsettings-floatingright' => 'Flutuando à direita',
+
# Preferences page
-'preferences' => 'Preferências',
-'mypreferences' => 'Preferências',
-'prefs-edits' => 'Número de edições:',
-'prefsnologin' => 'Não autenticado',
-'prefsnologintext' => 'Precisa de estar <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} autenticado]</span> para definir as suas preferências.',
-'prefsreset' => 'As preferências foram restauradas tal como se encontravam na base de dados.',
-'qbsettings' => 'Barra Rápida',
-'qbsettings-none' => 'Nenhuma',
-'qbsettings-fixedleft' => 'Fixo à esquerda',
-'qbsettings-fixedright' => 'Fixo à direita',
-'qbsettings-floatingleft' => 'Flutuando à esquerda',
-'qbsettings-floatingright' => 'Flutuando à direita',
-'changepassword' => 'Alterar palavra-chave',
-'skin' => 'Tema',
-'skin-preview' => 'Antever tema',
-'math' => 'Matemática',
-'dateformat' => 'Formato da data',
-'datedefault' => 'Sem preferência',
-'datetime' => 'Data e hora',
-'math_failure' => 'Falhou ao verificar gramática',
-'math_unknown_error' => 'Erro desconhecido',
-'math_unknown_function' => 'Função desconhecida',
-'math_lexing_error' => 'Erro léxico',
-'math_syntax_error' => 'Erro de sintaxe',
-'math_image_error' => 'Falha na conversão para PNG. Verifique a instalação do latex, dvips, gs e convert',
-'math_bad_tmpdir' => "Não foi possível criar o directório temporário ''math'' ou, se já existe, escrever nele",
-'math_bad_output' => "Não foi possível criar o directório de resultados ''math'' ou, se já existe, escrever nele",
-'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
-'prefs-personal' => 'Perfil de utilizador',
-'prefs-rc' => 'Mudanças recentes',
-'prefs-watchlist' => 'Páginas vigiadas',
-'prefs-watchlist-days' => 'Dias a mostrar nas mudanças às páginas vigiadas:',
-'prefs-watchlist-days-max' => '(máximo: 7 dias)',
-'prefs-watchlist-edits' => 'Número de edições a mostrar na listagem expandida:',
-'prefs-watchlist-edits-max' => '(máximo: 1000)',
-'prefs-misc' => 'Diversos',
-'prefs-resetpass' => 'Alterar palavra-chave',
-'saveprefs' => 'Gravar',
-'resetprefs' => 'Eliminar as alterações que não foram gravadas',
-'restoreprefs' => 'Repor todas as configurações padrão',
-'textboxsize' => 'Opções de edição',
-'prefs-edit-boxsize' => 'Dimensões da janela de edição.',
-'rows' => 'Linhas:',
-'columns' => 'Colunas:',
-'searchresultshead' => 'Pesquisa',
-'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Linhas por resultado:',
-'contextchars' => 'Contexto por linha:',
-'stub-threshold' => 'Links para páginas provisórias \'\'(stubs)\'\' terão <a href="#" class="stub">este formato</a> se elas ocuparem menos de (bytes):',
-'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
-'recentchangesdays-max' => '(máximo: $1 {{PLURAL:$1|dia|dias}})',
-'recentchangescount' => 'Número de edições a serem exibidas nas mudanças recentes, históricos de páginas e páginas de registos, por defeito:',
-'savedprefs' => 'As suas preferências foram gravadas.',
-'timezonelegend' => 'Fuso horário:',
-'timezonetext' => '¹Número de horas que o seu horário local difere do horário do servidor (UTC).',
-'localtime' => 'Hora local:',
-'timezoneselect' => 'Fuso horário:',
-'timezoneuseserverdefault' => 'Usar padrão do servidor',
-'timezoneuseoffset' => 'Outro (especificar diferença)',
-'timezoneoffset' => 'Diferença horária¹:',
-'servertime' => 'Hora do servidor:',
-'guesstimezone' => 'Preencher a partir do browser',
-'timezoneregion-africa' => 'África',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antártida',
-'timezoneregion-arctic' => 'Ártico',
-'timezoneregion-asia' => 'Ásia',
-'timezoneregion-atlantic' => 'Oceano Atlântico',
-'timezoneregion-australia' => 'Austrália',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceano Índico',
-'timezoneregion-pacific' => 'Oceano Pacífico',
-'allowemail' => 'Aceitar correio electrónico de outros utilizadores',
-'prefs-searchoptions' => 'Pesquisa',
-'prefs-namespaces' => 'Espaços nominais',
-'defaultns' => 'Pesquisar por defeito nestes espaços nominais:',
-'default' => 'padrão',
-'files' => 'Ficheiros',
-'prefs-custom-css' => 'CSS personalizada',
-'prefs-custom-js' => 'JS personalizado',
+'preferences' => 'Preferências',
+'mypreferences' => 'Preferências',
+'prefs-edits' => 'Número de edições:',
+'prefsnologin' => 'Não autenticado',
+'prefsnologintext' => 'Precisa de estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
+'changepassword' => 'Alterar palavra-chave',
+'prefs-skin' => 'Tema',
+'skin-preview' => 'Antever tema',
+'prefs-math' => 'Matemática',
+'datedefault' => 'Sem preferência',
+'prefs-datetime' => 'Data e hora',
+'prefs-personal' => 'Perfil de utilizador',
+'prefs-rc' => 'Mudanças recentes',
+'prefs-watchlist' => 'Páginas vigiadas',
+'prefs-watchlist-days' => 'Dias a mostrar nas mudanças às páginas vigiadas:',
+'prefs-watchlist-days-max' => '(máximo: 7 dias)',
+'prefs-watchlist-edits' => 'Número de edições a mostrar na listagem expandida:',
+'prefs-watchlist-edits-max' => '(máximo: 1000)',
+'prefs-watchlist-token' => 'Senha secreta da lista de {{lc:{{int:watchlist}}}}:',
+'prefs-misc' => 'Diversos',
+'prefs-resetpass' => 'Alterar palavra-chave',
+'prefs-email' => 'Opções do correio electrónico',
+'prefs-rendering' => 'Aparência',
+'saveprefs' => 'Gravar',
+'resetprefs' => 'Eliminar as alterações que não foram gravadas',
+'restoreprefs' => 'Repor todas as configurações padrão',
+'prefs-editing' => 'Edição',
+'prefs-edit-boxsize' => 'Dimensões da janela de edição.',
+'rows' => 'Linhas:',
+'columns' => 'Colunas:',
+'searchresultshead' => 'Pesquisa',
+'resultsperpage' => 'Resultados por página:',
+'contextlines' => 'Linhas por resultado:',
+'contextchars' => 'Contexto por linha:',
+'stub-threshold' => 'Links para páginas provisórias \'\'(stubs)\'\' terão <a href="#" class="stub">este formato</a> se elas ocuparem menos de (bytes):',
+'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
+'recentchangesdays-max' => '(máximo: $1 {{PLURAL:$1|dia|dias}})',
+'recentchangescount' => 'Número de edições a apresentar por omissão:',
+'prefs-help-recentchangescount' => 'Inclui mudanças recentes, histórico de páginas e registos.',
+'prefs-help-watchlist-token' => "Preencher este campo com uma senha secreta gera um ''feed'' RSS para a sua lista de páginas vigiadas.
+Qualquer pessoa que conheça esta senha será capaz de ler a sua lista de páginas vigiadas, por isso escolha um valor seguro.
+Eis um valor gerado aleatoriamente, que pode usar: $1",
+'savedprefs' => 'As suas preferências foram gravadas.',
+'timezonelegend' => 'Fuso horário:',
+'localtime' => 'Hora local:',
+'timezoneuseserverdefault' => 'Usar padrão do servidor',
+'timezoneuseoffset' => 'Outro (especificar diferença)',
+'timezoneoffset' => 'Diferença horária¹:',
+'servertime' => 'Hora do servidor:',
+'guesstimezone' => 'Preencher a partir do browser',
+'timezoneregion-africa' => 'África',
+'timezoneregion-america' => 'América',
+'timezoneregion-antarctica' => 'Antártida',
+'timezoneregion-arctic' => 'Ártico',
+'timezoneregion-asia' => 'Ásia',
+'timezoneregion-atlantic' => 'Oceano Atlântico',
+'timezoneregion-australia' => 'Austrália',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceano Índico',
+'timezoneregion-pacific' => 'Oceano Pacífico',
+'allowemail' => 'Aceitar correio electrónico de outros utilizadores',
+'prefs-searchoptions' => 'Pesquisa',
+'prefs-namespaces' => 'Espaços nominais',
+'defaultns' => 'Por omissão, pesquisar nestes espaços nominais:',
+'default' => 'padrão',
+'prefs-files' => 'Ficheiros',
+'prefs-custom-css' => 'CSS personalizada',
+'prefs-custom-js' => 'JS personalizado',
+'prefs-reset-intro' => 'Pode usar esta página para repor as configurações padrão das preferências.
+As suas preferências serão modificadas para os valores predefinidos do site.
+Esta operação não pode ser desfeita.',
+'prefs-emailconfirm-label' => 'Confirmação do endereço:',
+'prefs-textboxsize' => 'Tamanho da janela de edição',
+'youremail' => 'Correio electrónico:',
+'username' => 'Nome de utilizador:',
+'uid' => 'Número de identificação:',
+'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
+'prefs-registration' => 'Hora de registo:',
+'yourrealname' => 'Nome verdadeiro:',
+'yourlanguage' => 'Língua:',
+'yourvariant' => 'Variante',
+'yournick' => 'Assinatura:',
+'prefs-help-signature' => 'Ao inserir comentários em páginas de discussão, assine-os colocando quatro tiles "<nowiki>~~~~</nowiki>" no fim dos comentários. Ao gravar, estes serão convertidos na sua assinatura mais a data e a hora da edição.',
+'badsig' => 'Assinatura inválida; verifique o código HTML utilizado.',
+'badsiglength' => 'A sua assinatura é demasiado longa.
+Não deverá conter mais de $1 {{PLURAL:$1|carácter|caracteres}}.',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Não especificado',
+'gender-male' => 'Masculino',
+'gender-female' => 'Feminino',
+'prefs-help-gender' => 'Opcional: usado pelo programa para ajuste das mensagens ao género do utilizador.
+Esta informação será pública.',
+'email' => 'Correio electrónico',
+'prefs-help-realname' => 'Opcional: se optar por revelar o seu nome verdadeiro, este será utilizado para atribuir-lhe crédito pelo seu trabalho.',
+'prefs-help-email' => 'Opcional: o endereço de correio electrónico é opcional, mas permite-nos enviar-lhe uma nova palavra-chave caso esqueça a antiga.
+Também permite que outros entrem em contacto consigo através da sua página de utilizador ou de discussão sem lhes revelar a sua identidade.',
+'prefs-help-email-required' => 'O endereço de correio electrónico é requerido.',
+'prefs-info' => 'Informações básicas',
+'prefs-i18n' => 'Internacionalização',
+'prefs-signature' => 'Assinatura',
+'prefs-dateformat' => 'Formato de data',
+'prefs-timeoffset' => 'Desvio horário',
+'prefs-advancedediting' => 'Opções avançadas',
+'prefs-advancedrc' => 'Opções avançadas',
+'prefs-advancedrendering' => 'Opções avançadas',
+'prefs-advancedsearchoptions' => 'Opções avançadas',
+'prefs-advancedwatchlist' => 'Opções avançadas',
+'prefs-display' => 'Opções de visionamento',
+'prefs-diffs' => 'Diferenças',
# User rights
-'userrights' => 'Privilégios dos utilizadores', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gerir grupos do utilizador',
-'userrights-user-editname' => 'Introduza um nome de utilizador:',
-'editusergroup' => 'Editar grupos do utilizador',
-'editinguser' => "A modificar os privilégios do utilizador '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Editar grupos do utilizador',
-'saveusergroups' => 'Gravar grupos do utilizador',
-'userrights-groupsmember' => 'Membro de:',
-'userrights-groups-help' => 'É possível alterar os grupos a que este utilizador pertence:
+'userrights' => 'Privilégios dos utilizadores',
+'userrights-lookup-user' => 'Gerir grupos do utilizador',
+'userrights-user-editname' => 'Introduza um nome de utilizador:',
+'editusergroup' => 'Editar grupos do utilizador',
+'editinguser' => "A modificar os privilégios do utilizador '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Editar grupos do utilizador',
+'saveusergroups' => 'Gravar grupos do utilizador',
+'userrights-groupsmember' => 'Membro de:',
+'userrights-groupsmember-auto' => 'Membro implícito de:',
+'userrights-groups-help' => 'É possível alterar os grupos a que este utilizador pertence:
* Uma caixa de selecção marcada significa que o utilizador se encontra no grupo.
* Uma caixa de selecção desmarcada significa que o utilizador não se encontra no grupo.
* Um asterisco (*) indica que não pode remover o grupo depois de o adicionar, ou vice-versa.',
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'Não possui permissão de alterar os privilégios de utilizadores noutras wikis.',
-'userrights-nodatabase' => 'A base de dados $1 não existe ou não é uma base de dados local.',
-'userrights-nologin' => 'Precisa [[Special:UserLogin|autenticar-se]] com uma conta de administrador para atribuir privilégios aos utilizadores.',
-'userrights-notallowed' => 'A sua conta não possui permissão para conceder privilégios a utilizadores.',
-'userrights-changeable-col' => 'Grupos que pode alterar',
-'userrights-unchangeable-col' => 'Grupos que não pode alterar',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'Não possui permissão de alterar os privilégios de utilizadores noutras wikis.',
+'userrights-nodatabase' => 'A base de dados $1 não existe ou não é uma base de dados local.',
+'userrights-nologin' => 'Precisa [[Special:UserLogin|autenticar-se]] com uma conta de administrador para atribuir privilégios aos utilizadores.',
+'userrights-notallowed' => 'A sua conta não possui permissão para conceder privilégios a utilizadores.',
+'userrights-changeable-col' => 'Grupos que pode alterar',
+'userrights-unchangeable-col' => 'Grupos que não pode alterar',
# Groups
'group' => 'Grupo:',
@@ -1302,6 +1473,7 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'right-bigdelete' => 'Eliminar páginas com histórico grande',
'right-deleterevision' => 'Eliminar e restaurar edições específicas de páginas',
'right-deletedhistory' => 'Ver entradas de histórico eliminadas, sem o texto associado',
+'right-deletedtext' => 'Ver texto eliminado e mudanças entre revisões eliminadas',
'right-browsearchive' => 'Pesquisar páginas eliminadas',
'right-undelete' => 'Restaurar uma página',
'right-suppressrevision' => 'Rever e restaurar revisões ocultadas dos administradores',
@@ -1315,6 +1487,8 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'right-editprotected' => 'Editar páginas protegidas (sem protecção em cascata)',
'right-editinterface' => 'Editar a interface de utilizador',
'right-editusercssjs' => 'Editar os ficheiros CSS e JS de outros utilizadores',
+'right-editusercss' => 'Editar os ficheiros CSS de outros utilizadores',
+'right-edituserjs' => 'Editar os ficheiros JS de outros utilizadores',
'right-rollback' => 'Reverter rapidamente as edições do último utilizador que editou uma página em particular',
'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
'right-noratelimit' => 'Não ser afectado pelos limites de velocidade de operação',
@@ -1331,6 +1505,8 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'right-siteadmin' => 'Bloquear e desbloquear a base de dados',
'right-reset-passwords' => 'Repor a palavra-chave de outros utilizadores',
'right-override-export-depth' => 'Exportar páginas incluindo páginas ligadas até uma profundidade de 5',
+'right-versiondetail' => 'Mostrar informações completas da versão de software',
+'right-sendemail' => 'Enviar correio electrónico a outros utilizadores',
# User rights log
'rightslog' => 'Registo de privilégios de utilizador',
@@ -1380,6 +1556,15 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'recentchanges-legend' => 'Opções das mudanças recentes',
'recentchangestext' => 'Acompanhe nesta página as mudanças mais recentes da wiki.',
'recentchanges-feed-description' => "Acompanhe neste ''feed'' as mudanças mais recentes da wiki.",
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - página nova',
+'recentchanges-label-newpage' => 'Esta edição criou uma página nova',
+'recentchanges-legend-minor' => '$1 - edição menor',
+'recentchanges-label-minor' => 'Esta é uma edição menor',
+'recentchanges-legend-bot' => '$1 - edição de robô',
+'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
+'recentchanges-legend-unpatrolled' => '$1 - edição não patrulhada',
+'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
@@ -1406,6 +1591,8 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
# Recent changes linked
'recentchangeslinked' => 'Alterações relacionadas',
+'recentchangeslinked-feed' => 'Alterações relacionadas',
+'recentchangeslinked-toolbox' => 'Alterações relacionadas',
'recentchangeslinked-title' => 'Alterações relacionadas com "$1"',
'recentchangeslinked-noresult' => 'Não ocorreram alterações em páginas para as quais a página fornecida contém links, no intervalo de tempo escolhido.',
'recentchangeslinked-summary' => "Lista das mudanças recentes a todas as páginas para as quais a página fornecida contém links (ou de todas as que pertencem à categoria fornecida).
@@ -1416,8 +1603,8 @@ As suas [[Special:Watchlist|páginas vigiadas]] aparecem a '''negrito'''.",
# Upload
'upload' => 'Carregar ficheiro',
'uploadbtn' => 'Carregar ficheiro',
-'reupload' => 'Re-enviar',
'reuploaddesc' => 'Cancelar o envio e voltar ao formulário de carregamento',
+'upload-tryagain' => 'Submeta a descrição do ficheiro modificado',
'uploadnologin' => 'Não autenticado',
'uploadnologintext' => 'Tem de estar [[Special:UserLogin|autenticado]] para enviar ficheiros.',
'upload_directory_missing' => 'O directório de carregamento de ficheiros ($1) não existe e o servidor de internet não conseguiu criá-lo.',
@@ -1451,6 +1638,7 @@ Consulte a [[Special:NewFiles|galeria de novos ficheiros]] para visioná-los.',
'illegalfilename' => 'O nome do ficheiro "$1" contém caracteres que não são permitidos no título das páginas.
Altere o nome do ficheiro e tente enviá-lo novamente, por favor.',
'badfilename' => 'O nome do ficheiro foi alterado para "$1".',
+'filetype-mime-mismatch' => 'A extensão do ficheiro não corresponde ao tipo MIME.',
'filetype-badmime' => 'Não é permitido carregar ficheiros do tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Não é possível carregar este ficheiro porque o Internet Explorer o detectaria como "$1", que é um tipo de ficheiro não permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' não é um tipo de ficheiro desejado.
@@ -1475,7 +1663,6 @@ Para fazê-lo aparecer, terá de editar a página manualmente.
* Nome do ficheiro que está sendo carregado: '''<tt>[[:$1]]</tt>'''
* Nome do ficheiro existente: '''<tt>[[:$2]]</tt>'''
Escolha um nome diferente, por favor.",
-'fileexists-thumb' => "<center>'''Ficheiro existente'''</center>",
'fileexists-thumbnail-yes' => "O ficheiro aparenta ser uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail)''. [[$1|thumb]]
Verifique o ficheiro '''<tt>[[:$1]]</tt>''', por favor.
Se este ficheiro é a mesma imagem mas no tamanho original, não é necessário carregar uma miniatura.",
@@ -1491,6 +1678,7 @@ Caso deseje, mesmo assim, carregar o seu ficheiro, volte atrás e envie-o com um
Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envio.',
'successfulupload' => 'Envio efectuado com sucesso',
'uploadwarning' => 'Aviso de envio',
+'uploadwarning-text' => 'Modifique a descrição do ficheiro abaixo e tente novamente, por favor.',
'savefile' => 'Gravar ficheiro',
'uploadedimage' => 'carregou "[[$1]]"',
'overwroteimage' => 'foi enviada uma nova versão de "[[$1]]"',
@@ -1499,12 +1687,14 @@ Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envi
'php-uploaddisabledtext' => 'O carregamento de ficheiros está impossibilitado no PHP.
Verifique a configuração file_uploads, por favor.',
'uploadscripted' => 'Este ficheiro contém HTML ou código que pode ser erradamente interpretado por um browser.',
-'uploadcorrupt' => 'O ficheiro está corrompido ou a extensão indicada no nome não corresponde ao tipo de ficheiro.
-Por favor, verifique o ficheiro e a extensão e tente carregá-lo novamente.',
'uploadvirus' => 'O ficheiro contém um vírus! Detalhes: $1',
+'upload-source' => 'Ficheiro de origem',
'sourcefilename' => 'Nome do ficheiro de origem:',
+'sourceurl' => 'URL fonte:',
'destfilename' => 'Nome do ficheiro de destino:',
'upload-maxfilesize' => 'Tamanho máximo do ficheiro: $1',
+'upload-description' => 'Descrição do ficheiro',
+'upload-options' => 'Opções de carregamento',
'watchthisupload' => 'Vigiar este ficheiro',
'filewasdeleted' => 'Um ficheiro com este nome foi carregado anteriormente e subsequentemente eliminado.
Deverá verificar o $1 antes de voltar a enviá-lo.',
@@ -1528,15 +1718,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- deixe esta linha exactamente como está -->',
-'upload-proto-error' => 'Protocolo incorrecto',
-'upload-proto-error-text' => 'O carregamento remoto de ficheiros requer endereços URL começados por <code>http://</code> ou <code>ftp://</code>.',
-'upload-file-error' => 'Erro interno',
-'upload-file-error-text' => 'Ocorreu um erro interno ao tentar criar um ficheiro temporário no servidor.
+'upload-proto-error' => 'Protocolo incorrecto',
+'upload-proto-error-text' => 'O carregamento remoto de ficheiros requer endereços URL começados por <code>http://</code> ou <code>ftp://</code>.',
+'upload-file-error' => 'Erro interno',
+'upload-file-error-text' => 'Ocorreu um erro interno ao tentar criar um ficheiro temporário no servidor.
Contacte um [[Special:ListUsers/sysop|administrador]], por favor.',
-'upload-misc-error' => 'Erro de carregamento desconhecido',
-'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio.
+'upload-misc-error' => 'Erro de carregamento desconhecido',
+'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio.
Verifique se o endereço (URL) é válido e acessível e tente novamente.
Caso o problema persista, contacte um [[Special:ListUsers/sysop|administrador]].',
+'upload-too-many-redirects' => 'A URL continha demasiados redireccionamentos',
+'upload-unknown-size' => 'Tamanho desconhecido',
+'upload-http-error' => 'Ocorreu um erro HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acesso negado',
+'img-auth-nopathinfo' => 'Falta PATH_INFO.
+O seu servidor não está configurado para passar esta informação.
+Pode ser baseado em CGI e não consegue suportar img_auth.
+Consulte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'O endereço especificado não conduz ao directório de carregamento de ficheiros configurado.',
+'img-auth-badtitle' => 'Não é possível construir um título válido a partir de "$1".',
+'img-auth-nologinnWL' => 'Não está autenticado e o ficheiro "$1" não está na lista branca.',
+'img-auth-nofile' => 'O ficheiro "$1" não existe.',
+'img-auth-isdir' => 'Está tentando aceder ao directório "$1".
+Só é permitido o acesso a ficheiros.',
+'img-auth-streaming' => "A fazer o ''streaming'' de \"\$1\".",
+'img-auth-public' => 'A função do img_auth.php é produzir ficheiros a partir de uma wiki privada.
+Esta wiki está configurada como uma wiki pública.
+Para optimizar a segurança, o img_auth.php está impossibilitado de executar.',
+'img-auth-noread' => 'O utilizador não tem acesso de leitura ao ficheiro "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL inválida: $1',
+'http-invalid-scheme' => 'URLs iniciadas pelo prefixo "$1" não são aceites.',
+'http-request-error' => 'O pedido HTTP falhou devido a um erro desconhecido.',
+'http-read-error' => 'Erro de leitura HTTP.',
+'http-timed-out' => 'O pedido HTTP expirou.',
+'http-curl-error' => 'Ocorreu um erro ao aceder à URL: $1',
+'http-host-unreachable' => 'Não foi possível aceder à URL',
+'http-bad-status' => 'Ocorreu um problema durante o pedido HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Não foi possível aceder à URL',
@@ -1546,6 +1767,7 @@ Verifique se o endereço está correcto e o site disponível, por favor.',
'upload-curl-error28-text' => 'O site demorou muito tempo a responder. Verifique que o site está disponível, aguarde alguns momentos e tente novamente, por favor. Talvez queira tentar num horário menos congestionado.',
'license' => 'Licença:',
+'license-header' => 'Licenciamento',
'nolicense' => 'Nenhuma seleccionada',
'license-nopreview' => '(Antevisão não disponível)',
'upload_source_url' => ' (uma URL válida, publicamente acessível)',
@@ -1566,6 +1788,7 @@ Clique um cabeçalho de coluna para alterar a ordenação.',
'listfiles_count' => 'Versões',
# File description page
+'file-anchor-link' => 'Ficheiro',
'filehist' => 'Histórico do ficheiro',
'filehist-help' => 'Clique numa data/hora para ver o ficheiro tal como se encontrava nesse momento.',
'filehist-deleteall' => 'eliminar todas',
@@ -1574,12 +1797,13 @@ Clique um cabeçalho de coluna para alterar a ordenação.',
'filehist-current' => 'actual',
'filehist-datetime' => 'Data/Hora',
'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => 'Miniatura da versão das $1',
+'filehist-thumbtext' => "Miniatura ''(thumbnail)'' da versão das $1",
'filehist-nothumb' => 'Miniatura indisponível',
'filehist-user' => 'Utilizador',
'filehist-dimensions' => 'Dimensões',
'filehist-filesize' => 'Tamanho do ficheiro',
'filehist-comment' => 'Comentário',
+'filehist-missing' => 'Ficheiro em falta',
'imagelinks' => 'Links para este ficheiro',
'linkstoimage' => '{{PLURAL:$1|A seguinte página contém|As seguintes $1 páginas contêm}} links para este ficheiro:',
'linkstoimage-more' => 'Mais de {{PLURAL:$1|uma página contém|$1 páginas contêm}} links para este ficheiro.
@@ -1589,15 +1813,16 @@ Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
'morelinkstoimage' => 'Ver a [[Special:WhatLinksHere/$1|lista completa]] de páginas que contêm links para este ficheiro.',
'redirectstofile' => '{{PLURAL:$1|O seguinte ficheiro redirecciona|Os seguintes ficheiros redireccionam}} para este ficheiro:',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte ficheiro é duplicado|Os seguintes $1 ficheiros são duplicados}} deste ficheiro ([[Special:FileDuplicateSearch/$2|mais detalhes]]):',
-'sharedupload' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Por favor, consulte a $1 para mais informações.',
-'shareduploadwiki-desc' => 'A descrição lá na sua $1 é mostrada abaixo.',
-'shareduploadwiki-linktext' => 'página de descrição de ficheiro',
-'noimage' => 'Não existe nenhum ficheiro com este nome, mas pode $1.',
-'noimage-linktext' => 'carregá-lo',
+'sharedupload' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.',
+'sharedupload-desc-there' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.
+Consulte a [$2 página de descrição do ficheiro] para mais informações, por favor.',
+'sharedupload-desc-here' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.
+A descrição na [$2 página de descrição] é mostrada abaixo.',
+'filepage-nofile' => 'Não existe nenhum ficheiro com este nome.',
+'filepage-nofile-link' => 'Não existe nenhum ficheiro com este nome, mas pode [$1 carregá-lo].',
'uploadnewversion-linktext' => 'Carregar uma nova versão deste ficheiro',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'um repositório partilhado', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'um repositório partilhado',
# File reversion
'filerevert' => 'Reverter $1',
@@ -1626,6 +1851,7 @@ Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
** Violação de direitos de autor
** Ficheiro duplicado',
'filedelete-edit-reasonlist' => 'Editar motivos de eliminação',
+'filedelete-maintenance' => 'Eliminação e restauro de ficheiros foram temporariamente impossibilitadas durante a manutenção.',
# MIME search
'mimesearch' => 'Pesquisa MIME',
@@ -1646,7 +1872,7 @@ Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
# Random page
'randompage' => 'Página aleatória',
-'randompage-nopages' => 'Não há páginas no espaço nominal "$1".',
+'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
# Random redirect
'randomredirect' => 'Redireccionamento aleatório',
@@ -1658,6 +1884,7 @@ Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
'statistics-header-edits' => 'Estatísticas de edições',
'statistics-header-views' => 'Ver estatísticas',
'statistics-header-users' => 'Estatísticas de utilizadores',
+'statistics-header-hooks' => 'Outras estatísticas',
'statistics-articles' => 'Páginas de conteúdo',
'statistics-pages' => 'Páginas',
'statistics-pages-desc' => 'Todas as páginas da wiki, incluindo páginas de discussão, redireccionamentos, etc.',
@@ -1687,8 +1914,8 @@ Cada linha contém links para o primeiro e segundo redireccionamentos, bem como
'brokenredirects' => 'Redireccionamentos quebrados',
'brokenredirectstext' => 'Os seguintes redireccionamentos ligam para páginas inexistentes:',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(eliminar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'eliminar',
'withoutinterwiki' => 'Páginas sem links interlínguas',
'withoutinterwiki-summary' => 'As seguintes páginas não possuem links para versões noutras línguas.',
@@ -1796,16 +2023,17 @@ Talvez contenha um ou mais caracteres que não podem ser usados nos títulos.',
# Special:Categories
'categories' => 'Categorias',
-'categoriespagetext' => 'As seguintes categorias contêm páginas ou multimédia.
-As [[Special:UnusedCategories|categorias não utilizadas]] não são exibidas nesta listagem.
-Veja também as [[Special:WantedCategories|categorias em falta]].',
+'categoriespagetext' => '{{PLURAL:$1|A seguinte categoria contém páginas ou ficheiros multimédia|As seguintes categorias contêm páginas ou ficheiros multimédia}}.
+As [[Special:UnusedCategories|categorias não utilizadas]] não são apresentadas nesta lista.
+Veja também as [[Special:WantedCategories|categorias desejadas]].',
'categoriesfrom' => 'Listar categorias começando por:',
'special-categories-sort-count' => 'ordenar por contagem',
'special-categories-sort-abc' => 'ordenar alfabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Edições eliminadas',
-'deletedcontributions-title' => 'Edições eliminadas',
+'deletedcontributions' => 'Edições eliminadas',
+'deletedcontributions-title' => 'Edições eliminadas',
+'sp-deletedcontributions-contribs' => 'contribuições',
# Special:LinkSearch
'linksearch' => 'Links externos',
@@ -1820,6 +2048,16 @@ Veja também as [[Special:WantedCategories|categorias em falta]].',
'listusersfrom' => 'Mostrar utilizadores começando por:',
'listusers-submit' => 'Mostrar',
'listusers-noresult' => 'Não foram encontrados utilizadores.',
+'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Utilizadores activos',
+'activeusers-intro' => 'Esta é uma lista dos utilizadores com qualquer tipo de actividade {{PLURAL:$1|no último dia|nos últimos $1 dias}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|edição recente|edições recentes}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
+'activeusers-from' => 'Mostrar utilizadores começando por:',
+'activeusers-hidebots' => 'Esconder robôs',
+'activeusers-hidesysops' => 'Esconder administradores',
+'activeusers-noresult' => 'Nenhum utilizador encontrado.',
# Special:Log/newusers
'newuserlogpage' => 'Registo de criação de utilizadores',
@@ -1830,17 +2068,23 @@ Veja também as [[Special:WantedCategories|categorias em falta]].',
'newuserlog-autocreate-entry' => 'Conta criada automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Privilégios dos grupos de utilizadores',
-'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
+'listgrouprights' => 'Privilégios dos grupos de utilizadores',
+'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
Encontram-se disponíveis [[{{MediaWiki:Listgrouprights-helppage}}|informações adicionais]] sobre privilégios individuais.',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Privilégios',
-'listgrouprights-helppage' => 'Help:Privilégios de grupo',
-'listgrouprights-members' => '(lista de membros)',
-'listgrouprights-addgroup' => 'Adicionar utilizadores {{PLURAL:$2|ao grupo|aos grupos}}: $1',
-'listgrouprights-removegroup' => 'Remover utilizadores {{PLURAL:$2|do grupo|dos grupos}}: $1',
-'listgrouprights-addgroup-all' => 'Adicionar utilizadores a todos os grupos',
-'listgrouprights-removegroup-all' => 'Remover utilizadores de todos os grupos',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Privilégio concedido</span>
+* <span class="listgrouprights-revoked">Privilégio revogado</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Privilégios',
+'listgrouprights-helppage' => 'Help:Privilégios de grupo',
+'listgrouprights-members' => '(lista de membros)',
+'listgrouprights-addgroup' => 'Adicionar utilizadores {{PLURAL:$2|ao grupo|aos grupos}}: $1',
+'listgrouprights-removegroup' => 'Remover utilizadores {{PLURAL:$2|do grupo|dos grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Adicionar utilizadores a todos os grupos',
+'listgrouprights-removegroup-all' => 'Remover utilizadores de todos os grupos',
+'listgrouprights-addgroup-self' => 'Adicionar a própria conta {{PLURAL:$2|ao grupo|aos grupos}}: $1',
+'listgrouprights-removegroup-self' => 'Remover a própria conta {{PLURAL:$2|do grupo|dos grupos}}: $1',
+'listgrouprights-addgroup-self-all' => 'Adicionar a própria conta a todos os grupos',
+'listgrouprights-removegroup-self-all' => 'Remover a própria conta de todos os grupos',
# E-mail user
'mailnologin' => 'Nenhum endereço de envio',
@@ -1913,26 +2157,30 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
'enotif_lastvisited' => 'Consulte $1 para todas as alterações efectuadas desde a sua última visita.',
'enotif_lastdiff' => 'Consulte $1 para ver esta alteração.',
'enotif_anon_editor' => 'utilizador anónimo $1',
-'enotif_body' => 'Caro $WATCHINGUSERNAME,
+'enotif_body' => 'Caro(a) $WATCHINGUSERNAME,
A página $PAGETITLE na {{SITENAME}} foi $CHANGEDORCREATED a $PAGEEDITDATE por $PAGEEDITOR; consulte $PAGETITLE_URL para a versão actual.
$NEWPAGE
-Sumário de edição: $PAGESUMMARY $PAGEMINOREDIT
+Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
Contacte o editor:
-e-mail: $PAGEEDITOR_EMAIL
+correio electrónico: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Não haverá mais notificações no caso de futuras alterações a não ser que visite esta página. Poderá também restaurar as bandeiras de notificação para todas as suas páginas vigiadas na sua lista de vigiados.
+Até que visite esta página, não haverá lugar a mais notificações no caso de alterações futuras.
+Pode também reactivar as notificações para todas as suas páginas vigiadas na sua lista de páginas vigiadas.
- O seu amigável sistema de notificação da {{SITENAME}}
+ O seu sistema de notificação amigável da {{SITENAME}}
--
-Para alterar as suas preferências da lista de vigiados, visite
-{{fullurl:Special:Watchlist/edit}}
+Para alterar as suas preferências da lista de páginas vigiadas, visite
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Para retirar a página da sua lista de páginas vigiadas, visite
+$UNWATCHURL
Contacto e assistência:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1946,10 +2194,11 @@ Contacto e assistência:
'exblank' => 'página esvaziada',
'delete-confirm' => 'Eliminar "$1"',
'delete-legend' => 'Eliminar',
-'historywarning' => 'Aviso: A página que está prestes a eliminar possui um histórico:',
+'historywarning' => "'''Aviso:''' A página que está prestes a eliminar tem um histórico com aproximadamente $1 {{PLURAL:$1|revisão|revisões}}:",
'confirmdeletetext' => 'Está prestes a eliminar permanentemente uma página ou uma imagem e todo o seu histórico.
Confirme que é realmente esta a sua intenção, que compreende as consequências e que o faz de acordo com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]] do projecto, por favor.',
'actioncomplete' => 'Operação executada',
+'actionfailed' => 'Operação falhou',
'deletedtext' => '"<nowiki>$1</nowiki>" foi eliminada.
Consulte $2 para um registo de eliminações recentes.',
'deletedarticle' => 'eliminou "[[$1]]"',
@@ -1973,19 +2222,20 @@ Eliminá-la poderá causar problemas na base de dados da {{SITENAME}};
prossiga com precaução.',
# Rollback
-'rollback' => 'Reverter edições',
-'rollback_short' => 'Voltar',
-'rollbacklink' => 'voltar',
-'rollbackfailed' => 'A reversão falhou',
-'cantrollback' => 'Não foi possível reverter a edição; o último contribuidor é o único autor desta página',
-'alreadyrolled' => 'Não foi possível reverter as edições de [[:$1]] por [[User:$2|$2]] ([[User talk:$2|discussão]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Reverter edições',
+'rollback_short' => 'Voltar',
+'rollbacklink' => 'voltar',
+'rollbackfailed' => 'A reversão falhou',
+'cantrollback' => 'Não foi possível reverter a edição; o último contribuidor é o único autor desta página',
+'alreadyrolled' => 'Não foi possível reverter as edições de [[:$1]] por [[User:$2|$2]] ([[User talk:$2|discussão]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
alguém editou ou já reverteu a página.
A última edição foi de [[User:$3|$3]] ([[User talk:$3|discussão]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "O resumo da edição era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
-'sessionfailure' => 'Foram detectados problemas com a sua sessão;
+'editcomment' => "O resumo da edição era: \"''\$1''\".",
+'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]',
+'revertpage-nouser' => 'Revertidas as edições de (nome de utilizador removido) para a última revisão por [[User:$1|$1]]',
+'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
+'sessionfailure' => 'Foram detectados problemas com a sua sessão;
esta operação foi cancelada como medida de protecção contra a intercepção de sessões.
Clique o botão "Voltar" e recarregue a página de onde veio, depois tente novamente.',
@@ -2004,7 +2254,7 @@ Consulte a [[Special:ProtectedPages|lista de páginas protegidas]] para ver as p
'protectexpiry' => 'Expiração:',
'protect_expiry_invalid' => 'O tempo de expiração fornecido é inválido.',
'protect_expiry_old' => 'O tempo de expiração fornecido situa-se no passado.',
-'protect-unchain' => 'Desbloquear permissões de moção',
+'protect-unchain-permissions' => 'Desbloquear outras opções de protecção',
'protect-text' => "Pode ver e alterar aqui o nível de protecção da página '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Não pode alterar níveis de protecção enquanto estiver bloqueado.
Esta é a configuração presente para a página '''$1''':",
@@ -2034,7 +2284,7 @@ Pode alterar o nível de protecção desta página, mas isso não afectará a pr
** Guerra de edições improdutiva
** Página muito visitada",
'protect-edit-reasonlist' => 'Editar motivos de protecção',
-'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
'restriction-type' => 'Permissão:',
'restriction-level' => 'Nível de restrição:',
'minimum-size' => 'Tamanho mín.',
@@ -2074,6 +2324,7 @@ Pode ter usado um link incorrecto ou talvez a revisão tenha sido restaurada ou
'undelete-nodiff' => 'Não foram encontradas edições anteriores.',
'undeletebtn' => 'Restaurar',
'undeletelink' => 'ver/restaurar',
+'undeleteviewlink' => 'ver',
'undeletereset' => 'Limpar',
'undeleteinvert' => 'Inverter selecção',
'undeletecomment' => 'Motivo:',
@@ -2111,19 +2362,24 @@ $1',
'contributions-title' => 'Contribuições {{GENDER:$1|do utilizador|da utilizadora}} $1',
'mycontris' => 'Contribuições',
'contribsub2' => 'Para $1 ($2)',
-'nocontribs' => 'Não foram encontradas alterações com este critério.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Não foram encontradas alterações com este critério.',
'uctop' => ' (edição actual)',
'month' => 'Até ao mês:',
'year' => 'Até ao ano:',
-'sp-contributions-newbies' => 'Mostrar só as contribuições das contas recentes',
-'sp-contributions-newbies-sub' => 'Para contas novas',
-'sp-contributions-newbies-title' => 'Contribuições de contas novas',
-'sp-contributions-blocklog' => 'registo de bloqueios',
-'sp-contributions-logs' => 'registos',
-'sp-contributions-search' => 'Pesquisar contribuições',
-'sp-contributions-username' => 'Endereço IP ou utilizador:',
-'sp-contributions-submit' => 'Pesquisar',
+'sp-contributions-newbies' => 'Mostrar só as contribuições das contas recentes',
+'sp-contributions-newbies-sub' => 'Para contas novas',
+'sp-contributions-newbies-title' => 'Contribuições de contas novas',
+'sp-contributions-blocklog' => 'registo de bloqueios',
+'sp-contributions-deleted' => 'contribuições eliminadas',
+'sp-contributions-logs' => 'registos',
+'sp-contributions-talk' => 'discussão',
+'sp-contributions-userrights' => 'gestão de privilégios de utilizador',
+'sp-contributions-blocked-notice' => 'Este utilizador encontra-se actualmente bloqueado.
+Para referência, o último registo de bloqueio é apresentado abaixo:',
+'sp-contributions-search' => 'Pesquisar contribuições',
+'sp-contributions-username' => 'Endereço IP ou utilizador:',
+'sp-contributions-submit' => 'Pesquisar',
# What links here
'whatlinkshere' => 'Páginas afluentes',
@@ -2146,6 +2402,7 @@ $1',
# Block/unblock
'blockip' => 'Bloquear utilizador',
+'blockip-title' => 'Bloquear utilizador',
'blockip-legend' => 'Bloquear utilizador',
'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador.
Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).',
@@ -2168,7 +2425,7 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
'ipbenableautoblock' => 'Bloquear automaticamente o endereço IP mais recente deste utilizador e todos os endereços IP subsequentes a partir dos quais ele tente editar',
'ipbsubmit' => 'Bloquear este utilizador',
'ipbother' => 'Outro período:',
-'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
'ipbotheroption' => 'outro',
'ipbotherreason' => 'Outro motivo/motivo adicional:',
'ipbhidename' => 'Ocultar nome de utilizador nas edições e listas',
@@ -2197,9 +2454,11 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'ipblocklist-sh-tempblocks' => '$1 bloqueios temporários',
'ipblocklist-sh-addressblocks' => '$1 bloqueios de IP único',
'ipblocklist-submit' => 'Pesquisar',
+'ipblocklist-localblock' => 'Bloqueio local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
'blocklistline' => '$1, $2 bloqueou $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'expira em $1',
+'expiringblock' => 'expira em $1 às $2',
'anononlyblock' => 'apenas anón.',
'noautoblockblock' => 'bloqueio automático impossibilitado',
'createaccountblock' => 'criação de conta bloqueada',
@@ -2213,7 +2472,10 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'contribslink' => 'contribs',
'autoblocker' => 'Foi automaticamente bloqueado, pois o seu endereço IP foi recentemente usado por "[[User:$1|$1]]". O motivo apresentado para o bloqueio de $1 foi: "$2".',
'blocklogpage' => 'Registo de bloqueio',
-'blocklog-fulllog' => 'Registo completo de bloqueios',
+'blocklog-showlog' => 'Este utilizador foi já bloqueado anteriormente.
+O registo de bloqueios é fornecido abaixo para referência:',
+'blocklog-showsuppresslog' => 'Este utilizador foi bloqueado e ocultado anteriomente.
+O registo de supressão é fornecido abaixo para referência:',
'blocklogentry' => 'bloqueou "[[$1]]" com expiração em $2 $3',
'reblock-logentry' => 'modificou parâmetros de bloqueio de [[$1]] com expiração em $2 $3',
'blocklogtext' => 'Este é um registo de acções de bloqueio e desbloqueio.
@@ -2234,9 +2496,11 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de
'ipb_already_blocked' => '"$1" já se encontra bloqueado',
'ipb-needreblock' => '== Já se encontra bloqueado ==
$1 já se encontra bloqueado. Deseja alterar as configurações?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
'ipb_cant_unblock' => 'Erro: O bloqueio com ID $1 não foi encontrado. Pode já ter sido desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O IP $1 não se encontra bloqueado de forma directa e não pode ser desbloqueado deste modo. No entanto, está bloqueado como parte da gama $2, a qual pode ser desbloqueada.',
'ip_range_invalid' => 'Gama de IPs inválida.',
+'ip_range_toolarge' => 'Não são permitidas gamas de IPs maiores do que /$1.',
'blockme' => 'Bloquear-me',
'proxyblocker' => 'Bloqueador de proxies',
'proxyblocker-disabled' => 'Esta função foi impossibilitada.',
@@ -2246,6 +2510,7 @@ Contacte o seu fornecedor de internet ou o serviço de apoio técnico e informe-
'sorbsreason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}.",
'sorbs_create_account_reason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}. Não pode criar uma conta",
'cant-block-while-blocked' => 'Não pode bloquear outros utilizadores enquanto estiver bloqueado.',
+'cant-see-hidden-user' => "O utilizador que está tentando bloquear já está bloqueado e oculto. Como não possui privilégio de bloquear utilizadores ''(hideuser)'', não pode ver ou editar o bloqueio deste utilizador.",
# Developer tools
'lockdb' => 'Bloquear a base de dados',
@@ -2288,6 +2553,7 @@ certifique-se de que compreende as consequências da mudança antes de prossegui
Nestes casos, terá de mover a página de discussão manualmente, ou fundi-la com a existente, se assim desejar.",
'movearticle' => 'Mover página',
+'moveuserpage-warning' => "'''Aviso:''' Está prestes a mover uma página de utilizador. Note que a página será apenas movida, ''sem'' alterar o nome do utilizador.",
'movenologin' => 'Não autenticado',
'movenologintext' => 'Precisa de ser um utilizador registado e [[Special:UserLogin|autenticado]] para poder mover uma página.',
'movenotallowed' => 'Não possui permissão para mover páginas.',
@@ -2298,7 +2564,7 @@ Nestes casos, terá de mover a página de discussão manualmente, ou fundi-la co
'move-watch' => 'Vigiar esta página',
'movepagebtn' => 'Mover página',
'pagemovedsub' => 'Página movida com sucesso',
-'movepage-moved' => '\'\'\'"$1" foi movida para "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" foi movida para "$2"\'\'\'',
'movepage-moved-redirect' => 'Foi criado um redireccionamento.',
'movepage-moved-noredirect' => 'A criação de um redirecionamento foi suprimida.',
'articleexists' => 'Uma página com este nome já existe, ou o nome que escolheu é inválido.
@@ -2341,6 +2607,14 @@ não é possível mover uma página para ela mesma.',
'imageinvalidfilename' => 'O nome do ficheiro alvo é inválido',
'fix-double-redirects' => 'Actualizar todos os redireccionamentos que apontem para o título original',
'move-leave-redirect' => 'Criar um redireccionamento',
+'protectedpagemovewarning' => "'''Aviso:''' Esta página foi protegida de maneira a que apenas utilizadores com privilégio de administrador possam movê-la.
+O último registo é apresentado abaixo para referência:",
+'semiprotectedpagemovewarning' => "'''Nota:''' Esta página protegida de maneira a que apenas utilizadores registados possam movê-la.
+O último registo é apresentado abaixo para referência:",
+'move-over-sharedrepo' => '== O ficheiro existe ==
+[[:$1]] já existe num repositório partilhado. Mover um ficheiro para o título [[:$1]] irá sobrepô-lo ao ficheiro partilhado.',
+'file-exists-sharedrepo' => 'O nome de ficheiro que escolheu já é utilizado num repositório partilhado.
+Escolha outro nome, por favor.',
# Export
'export' => 'Exportação de páginas',
@@ -2362,15 +2636,21 @@ Se desejar, pode utilizar um link (por exemplo, [[{{#Special:Export}}/{{MediaWik
'export-pagelinks' => 'Incluir páginas ligadas, até uma profundidade de:',
# Namespace 8 related
-'allmessages' => 'Mensagens de sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Texto padrão',
-'allmessagescurrent' => 'Texto actual',
-'allmessagestext' => 'Esta é uma lista das mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
+'allmessages' => 'Mensagens de sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Texto padrão',
+'allmessagescurrent' => 'Texto actual',
+'allmessagestext' => 'Esta é uma lista das mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
Por favor, visite [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se deseja participar na localização do MediaWiki.',
-'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
-'allmessagesfilter' => 'Filtro de nome de mensagem:',
-'allmessagesmodified' => 'Mostrar apenas modificados',
+'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar pelo estado de personalização:',
+'allmessages-filter-unmodified' => 'Não modificadas',
+'allmessages-filter-all' => 'Todas',
+'allmessages-filter-modified' => 'Modificadas',
+'allmessages-prefix' => 'Filtrar pelos caracteres iniciais:',
+'allmessages-language' => 'Língua:',
+'allmessages-filter-submit' => 'Filtrar',
# Thumbnails
'thumbnail-more' => 'Ampliar',
@@ -2380,6 +2660,9 @@ Por favor, visite [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisa
'djvu_no_xml' => 'Não foi possível aceder ao XML para o ficheiro DjVU',
'thumbnail_invalid_params' => 'Parâmetros de miniatura inválidos',
'thumbnail_dest_directory' => 'Não foi possível criar o directório de destino',
+'thumbnail_image-type' => 'Tipo de imagem não suportado',
+'thumbnail_gd-library' => 'Configuração da biblioteca GD incompleta: função $1 em falta',
+'thumbnail_image-missing' => 'Ficheiro em falta: $1',
# Special:Import
'import' => 'Importar páginas',
@@ -2448,6 +2731,7 @@ Utilize o botão "Antever resultado" antes de gravar, por favor.',
'tooltip-ca-viewsource' => 'Esta página está protegida; só pode ver o conteúdo.',
'tooltip-ca-history' => 'Edições anteriores desta página.',
'tooltip-ca-protect' => 'Proteger esta página',
+'tooltip-ca-unprotect' => 'Desproteger esta página',
'tooltip-ca-delete' => 'Apagar esta página',
'tooltip-ca-undelete' => 'Restaurar edições feitas a esta página antes da eliminação',
'tooltip-ca-move' => 'Mover esta página',
@@ -2458,6 +2742,7 @@ Utilize o botão "Antever resultado" antes de gravar, por favor.',
'tooltip-search-fulltext' => 'Procurar páginas que contêm este texto',
'tooltip-p-logo' => 'Visite a página principal',
'tooltip-n-mainpage' => 'Visitar a página principal',
+'tooltip-n-mainpage-description' => 'Visitar a página principal',
'tooltip-n-portal' => 'Sobre o projecto',
'tooltip-n-currentevents' => 'Informação temática sobre acontecimentos actuais',
'tooltip-n-recentchanges' => 'A lista de mudanças recentes nesta wiki.',
@@ -2505,6 +2790,7 @@ Permite colocar uma justificação no resumo da edição.',
'chick.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Chique */',
'simple.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Simples */',
'modern.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Moderno */',
+'vector.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Vector */',
'print.css' => '/* Código CSS colocado aqui afectará as impressões */',
'handheld.css' => '/* Código CSS colocado aqui afectará dispositivos móveis baseados no tema configurado em $wgHandheldStyle */',
@@ -2518,6 +2804,7 @@ Permite colocar uma justificação no resumo da edição.',
'chick.js' => '/* Código Javascript colocado aqui será carregado para utilizadores do tema Chick */',
'simple.js' => '/* Código Javascript colocado aqui será carregado para utilizadores do tema Simples */',
'modern.js' => '/* Código Javascript colocado aqui será carregado para utilizadores do tema Moderno */',
+'vector.js' => '/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */',
# Metadata
'nodublincore' => 'Os metadados RDF para Dublin Core foram impossibilitados neste servidor.',
@@ -2527,10 +2814,12 @@ Permite colocar uma justificação no resumo da edição.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizador anónimo|Utilizadores anónimos}} da {{SITENAME}}',
'siteuser' => '{{GENDER:$2|um utilizador|uma utilizadora|um utilizador}} da {{SITENAME}} ($1)',
-'lastmodifiedatby' => 'Esta página foi modificada pela última vez às $2 de $1 por $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'utilizador anónimo $1 da {{SITENAME}}',
+'lastmodifiedatby' => 'Esta página foi modificada pela última vez às $2 de $1 por $3.',
'othercontribs' => 'Baseado no trabalho de $1.',
'others' => 'outros',
'siteusers' => '{{PLURAL:$2|um utilizador|$2 utilizadores}} da {{SITENAME}} ($1)',
+'anonusers' => '{{PLURAL:$2|utilizador anónimo|utilizadores anónimos}} da {{SITENAME}} ($1)',
'creditspage' => 'Créditos da página',
'nocredits' => 'Não há informação disponível sobre os créditos desta página.',
@@ -2560,6 +2849,7 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
'skinname-chick' => 'Chique',
'skinname-simple' => 'Simples',
'skinname-modern' => 'Moderno',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Gerar sempre como PNG',
@@ -2569,11 +2859,22 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
'mw_math_modern' => 'Recomendado para browsers modernos',
'mw_math_mathml' => 'MathML se possível (experimental)',
+# Math errors
+'math_failure' => 'Falhou ao verificar gramática',
+'math_unknown_error' => 'Erro desconhecido',
+'math_unknown_function' => 'Função desconhecida',
+'math_lexing_error' => 'Erro léxico',
+'math_syntax_error' => 'Erro de sintaxe',
+'math_image_error' => 'Falha na conversão para PNG. Verifique a instalação do latex, dvips, gs e convert',
+'math_bad_tmpdir' => "Não foi possível criar o directório temporário ''math'' ou, se já existe, escrever nele",
+'math_bad_output' => "Não foi possível criar o directório de resultados ''math'' ou, se já existe, escrever nele",
+'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como patrulhada',
'markaspatrolledtext' => 'Marcar esta página como patrulhada',
'markedaspatrolled' => 'Marcada como patrulhada',
-'markedaspatrolledtext' => 'A edição seleccionada foi marcada como patrulhada.',
+'markedaspatrolledtext' => 'A edição seleccionada de [[:$1]] foi marcada como patrulhada.',
'rcpatroldisabled' => 'Edições patrulhadas nas Mudanças Recentes desactivadas',
'rcpatroldisabledtext' => 'A funcionalidade de edições patrulhadas nas Mudanças Recentes está actualmente desactivada.',
'markedaspatrollederror' => 'Não é possível marcar como patrulhada',
@@ -2603,13 +2904,10 @@ $1',
'previousdiff' => '← Edição anterior',
'nextdiff' => 'Edição posterior →',
-# Visual comparison
-'visual-comparison' => 'Comparação visual',
-
# Media information
'mediawarning' => "'''Aviso''': Este tipo de ficheiro pode conter código malicioso.
Executá-lo poderá comprometer a segurança do seu sistema.",
-'imagemaxsize' => 'Limitar imagens nas páginas de descrição a:',
+'imagemaxsize' => "Limite de tamanho de imagens:<br />''(para páginas de descrição)''",
'thumbsize' => 'Tamanho de miniaturas:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
'file-info' => '(tamanho: $1, tipo MIME: $2)',
@@ -2618,6 +2916,8 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
'svg-long-desc' => '(ficheiro SVG, de $1 × $2 pixels, tamanho: $3)',
'show-big-image' => 'Resolução completa',
'show-big-image-thumb' => '<small>Dimensões desta antevisão: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'cíclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
# Special:NewFiles
'newimages' => 'Galeria de novos ficheiros',
@@ -2651,7 +2951,7 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largura',
@@ -2778,14 +3078,14 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-unknowndate' => 'Data desconhecida',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Espelhamento horizontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rodado 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Invertido na vertical', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rodado 90º no sentido anti-horário e invertido na vertical', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rodado 90° no sentido horário', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rodado 90° no sentido horário e invertido na vertical', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rodado 90° no sentido anti-horário', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Espelhamento horizontal',
+'exif-orientation-3' => 'Rodado 180°',
+'exif-orientation-4' => 'Invertido na vertical',
+'exif-orientation-5' => 'Rodado 90º no sentido anti-horário e invertido na vertical',
+'exif-orientation-6' => 'Rodado 90° no sentido horário',
+'exif-orientation-7' => 'Rodado 90° no sentido horário e invertido na vertical',
+'exif-orientation-8' => 'Rodado 90° no sentido anti-horário',
'exif-planarconfiguration-1' => 'formato irregular',
'exif-planarconfiguration-2' => 'formato plano',
@@ -2907,7 +3207,7 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-gpsmeasuremode-2' => 'Medição bidimensional',
'exif-gpsmeasuremode-3' => 'Medição tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilómetros por hora',
'exif-gpsspeed-m' => 'Milhas por hora',
'exif-gpsspeed-n' => 'Nós',
@@ -2926,6 +3226,7 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'watchlistall2' => 'todas',
'namespacesall' => 'todos',
'monthsall' => 'todos',
+'limitall' => 'tudo',
# E-mail address confirmation
'confirmemail' => 'Confirmar endereço de correio electrónico',
@@ -2951,17 +3252,17 @@ Pode agora [[Special:UserLogin|autenticar-se]] e disfrutar da wiki.',
'confirmemail_loggedin' => 'O seu endereço de correio electrónico foi confirmado.',
'confirmemail_error' => 'Alguma coisa correu mal ao gravar a sua confirmação.',
'confirmemail_subject' => 'Confirmação de endereço de correio electrónico da {{SITENAME}}',
-'confirmemail_body' => 'Alguém, provavelmente você com o endereço de IP $1,
-registou uma conta "$2" com este endereço de e-mail em {{SITENAME}}.
+'confirmemail_body' => 'Alguém, provavelmente você com o endereço IP $1,
+registou uma conta "$2" com este endereço de correio electrónico na {{SITENAME}}.
-Para confirmar que esta conta realmente é sua, e para activar
-as funcionalidades de e-mail em {{SITENAME}},
-abra o seguinte endereço no seu navegador:
+Para confirmar que esta conta é realmente sua e activar
+as funcionalidades de correio electrónico na {{SITENAME}},
+abra o seguinte link no seu browser:
$3
-Caso este *não* seja você, siga o seguinte endereço
-para cancelar a confirmação do endereço de e-mail:
+Caso este *não* seja você, siga o seguinte link
+para cancelar a confirmação do endereço de correio electrónico:
$5
@@ -3060,7 +3361,7 @@ Também pode [[Special:Watchlist/edit|editar a lista da maneira convencional]].'
'duplicate-defaultsort' => 'Aviso: A chave de ordenação padrão "$2" sobrepõe-se à anterior chave de ordenação padrão "$1".',
# Special:Version
-'version' => 'Versão', # Not used as normal message but as header for the special page itself
+'version' => 'Versão',
'version-extensions' => 'Extensões instaladas',
'version-specialpages' => 'Páginas especiais',
'version-parserhooks' => "''Hooks'' do analisador sintáctico",
@@ -3074,7 +3375,7 @@ Também pode [[Special:Watchlist/edit|editar a lista da maneira convencional]].'
'version-skin-extension-functions' => 'Funções para extensão de temas',
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => 'Versão',
+'version-version' => '(Versão $1)',
'version-license' => 'Licença',
'version-software' => 'Software instalado',
'version-software-product' => 'Produto',
@@ -3156,4 +3457,15 @@ Introduza o nome do ficheiro sem o prefixo \"{{ns:file}}:\".",
'dberr-outofdate' => 'Note que os seus índices relativos ao nosso conteúdo podem estar desactualizados.',
'dberr-cachederror' => 'A seguinte página é uma cópia em cache da página pedida e pode não estar actualizada.',
+# HTML forms
+'htmlform-invalid-input' => 'Existem problemas com alguns dos dados introduzidos',
+'htmlform-select-badoption' => 'O valor que especificou não é uma opção válida.',
+'htmlform-int-invalid' => 'O valor que especificou não é um inteiro.',
+'htmlform-float-invalid' => 'O valor que especificou não é um número.',
+'htmlform-int-toolow' => 'O valor que especificou é inferior ao mínimo de $1',
+'htmlform-int-toohigh' => 'O valor que especificou é superior ao máximo de $1',
+'htmlform-submit' => 'Enviar',
+'htmlform-reset' => 'Desfazer alterações',
+'htmlform-selectorother-other' => 'Outros',
+
);
diff --git a/languages/messages/MessagesPt_br.php b/languages/messages/MessagesPt_br.php
index 1ee0d3eb..4b4b8302 100644
--- a/languages/messages/MessagesPt_br.php
+++ b/languages/messages/MessagesPt_br.php
@@ -8,11 +8,13 @@
* @file
*
* @author Bani
+ * @author BrunaaAa
* @author Brunoy Anastasiya Seryozhenko
* @author Capmo
* @author Carla404
* @author Crazymadlover
* @author Daemorris
+ * @author Danielsouzat
* @author Diego Queiroz
* @author Eduardo.mps
* @author GKnedo
@@ -29,6 +31,7 @@
* @author McDutchie
* @author Rodrigo Calanca Nishino
* @author Urhixidur
+ * @author Vuln
* @author Waldir
* @author Yves Marques Junqueira
* @author לערי ריינהארט
@@ -68,27 +71,27 @@ $defaultDateFormat = 'dmy';
$dateFormats = array(
- 'dmy time' => 'H\hi\m\i\n',
- 'dmy date' => 'j \d\e F \d\e Y',
- 'dmy both' => 'H\hi\m\i\n \d\e j \d\e F \d\e Y',
+ 'dmy time' => 'H"h"i"min"',
+ 'dmy date' => 'j "de" F "de" Y',
+ 'dmy both' => 'H"h"i"min" "de" j "de" F "de" Y',
);
$separatorTransformTable = array(',' => ' ', '.' => ',' );
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirecionamentos duplos', 'Redireccionamentos duplos' ),
- 'BrokenRedirects' => array( 'Redirecionamentos quebrados', 'Redireccionamentos quebrados' ),
+ 'DoubleRedirects' => array( 'Redirecionamentos duplos' ),
+ 'BrokenRedirects' => array( 'Redirecionamentos quebrados' ),
'Disambiguations' => array( 'Páginas de desambiguação', 'Desambiguar', 'Desambiguações' ),
- 'Userlogin' => array( 'Entrar', 'Login' ),
+ 'Userlogin' => array( 'Autenticar-se', 'Entrar', 'Login' ),
'Userlogout' => array( 'Sair', 'Logout' ),
'CreateAccount' => array( 'Criar conta' ),
'Preferences' => array( 'Preferências' ),
'Watchlist' => array( 'Páginas vigiadas', 'Artigos vigiados', 'Vigiados' ),
'Recentchanges' => array( 'Mudanças recentes', 'Recentes' ),
- 'Upload' => array( 'Carregar imagem', 'Carregar ficheiro', 'Carregar arquivo', 'Enviar' ),
- 'Listfiles' => array( 'Lista de imagens', 'Lista de ficheiros', 'Lista de arquivos' ),
- 'Newimages' => array( 'Imagens novas', 'Ficheiros novos', 'Arquivos novos' ),
+ 'Upload' => array( 'Carregar arquivo', 'Carregar imagem', 'Carregar ficheiro', 'Enviar' ),
+ 'Listfiles' => array( 'Lista de arquivos', 'Lista de imagens', 'Lista de ficheiros' ),
+ 'Newimages' => array( 'Arquivos novos', 'Imagens novas', 'Ficheiros novos' ),
'Listusers' => array( 'Lista de usuários', 'Lista de utilizadores' ),
'Listgrouprights' => array( 'Listar privilégios de grupos' ),
'Statistics' => array( 'Estatísticas' ),
@@ -96,14 +99,14 @@ $specialPageAliases = array(
'Lonelypages' => array( 'Páginas órfãs', 'Artigos órfãos', 'Páginas sem afluentes', 'Artigos sem afluentes' ),
'Uncategorizedpages' => array( 'Páginas sem categorias', 'Artigos sem categorias' ),
'Uncategorizedcategories' => array( 'Categorias sem categorias' ),
- 'Uncategorizedimages' => array( 'Imagens sem categorias', 'Ficheiros sem categorias', 'Arquivos sem categorias' ),
+ 'Uncategorizedimages' => array( 'Arquivos sem categorias', 'Imagens sem categorias', 'Ficheiros sem categorias' ),
'Uncategorizedtemplates' => array( 'Predefinições não categorizadas', 'Predefinições sem categorias' ),
'Unusedcategories' => array( 'Categorias não utilizadas', 'Categorias sem uso' ),
- 'Unusedimages' => array( 'Imagens sem uso', 'Imagens não utilizadas', 'Ficheiros sem uso', 'Ficheiros não utilizados', 'Arquivos sem uso', 'Arquivos não utilizados' ),
- 'Wantedpages' => array( 'Páginas em falta', 'Artigos em falta', 'Páginas pedidas', 'Artigos pedidos' ),
- 'Wantedcategories' => array( 'Categorias em falta', 'Categorias inexistentes' ),
- 'Wantedfiles' => array( 'Arquivos em falta', 'Ficheiros em falta', 'Imagens em falta' ),
- 'Wantedtemplates' => array( 'Predefinições em falta' ),
+ 'Unusedimages' => array( 'Arquivos sem uso', 'Arquivos não utilizados', 'Imagens sem uso', 'Imagens não utilizadas', 'Ficheiros sem uso', 'Ficheiros não utilizados' ),
+ 'Wantedpages' => array( 'Páginas pedidas', 'Páginas em falta', 'Artigos em falta', 'Artigos pedidos' ),
+ 'Wantedcategories' => array( 'Categorias pedidas', 'Categorias em falta', 'Categorias inexistentes' ),
+ 'Wantedfiles' => array( 'Arquivos pedidos', 'Arquivos em falta', 'Ficheiros em falta', 'Imagens em falta' ),
+ 'Wantedtemplates' => array( 'Predefinições pedidas', 'Predefinições em falta' ),
'Mostlinked' => array( 'Páginas com mais afluentes', 'Artigos com mais afluentes' ),
'Mostlinkedcategories' => array( 'Categorias com mais afluentes' ),
'Mostlinkedtemplates' => array( 'Predefinições com mais afluentes' ),
@@ -123,11 +126,11 @@ $specialPageAliases = array(
'Ipblocklist' => array( 'Registro de bloqueios', 'IPs bloqueados', 'Utilizadores bloqueados', 'Usuários bloqueados', 'Registo de bloqueios' ),
'Specialpages' => array( 'Páginas especiais' ),
'Contributions' => array( 'Contribuições' ),
- 'Emailuser' => array( 'Contactar usuário', 'Contactar utilizador', 'Contatar usuário' ),
+ 'Emailuser' => array( 'Contatar usuário', 'Contactar usuário', 'Contactar utilizador' ),
'Confirmemail' => array( 'Confirmar e-mail', 'Confirmar email' ),
'Whatlinkshere' => array( 'Páginas afluentes', 'Artigos afluentes' ),
- 'Recentchangeslinked' => array( 'Novidades relacionadas', 'Mudanças relacionadas' ),
- 'Movepage' => array( 'Mover', 'Mover página', 'Mover artigo' ),
+ 'Recentchangeslinked' => array( 'Mudanças relacionadas', 'Novidades relacionadas' ),
+ 'Movepage' => array( 'Mover página', 'Mover', 'Mover artigo' ),
'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
'Booksources' => array( 'Fontes de livros' ),
'Categories' => array( 'Categorias' ),
@@ -144,15 +147,15 @@ $specialPageAliases = array(
'MIMEsearch' => array( 'Busca MIME' ),
'FileDuplicateSearch' => array( 'Busca de arquivos duplicados', 'Busca de ficheiros duplicados' ),
'Unwatchedpages' => array( 'Páginas não-vigiadas', 'Páginas não vigiadas', 'Artigos não-vigiados', 'Artigos não vigiados' ),
- 'Listredirects' => array( 'Redirecionamentos', 'Lista de redireccionamentos', 'Lista de redirecionamentos', 'Redireccionamentos' ),
+ 'Listredirects' => array( 'Lista de redirecionamentos', 'Redirecionamentos' ),
'Revisiondelete' => array( 'Eliminar edição', 'Eliminar revisão', 'Apagar edição', 'Apagar revisão' ),
'Unusedtemplates' => array( 'Predefinições sem uso', 'Predefinições não utilizadas' ),
- 'Randomredirect' => array( 'Redirecionamento aleatório', 'Redireccionamento aleatório' ),
+ 'Randomredirect' => array( 'Redirecionamento aleatório' ),
'Mypage' => array( 'Minha página' ),
'Mytalk' => array( 'Minha discussão' ),
'Mycontributions' => array( 'Minhas contribuições', 'Minhas edições' ),
- 'Listadmins' => array( 'Administradores', 'Admins', 'Lista de administradores', 'Lista de admins' ),
- 'Listbots' => array( 'Bots', 'Lista de bots' ),
+ 'Listadmins' => array( 'Lista de administradores', 'Administradores', 'Admins', 'Lista de admins' ),
+ 'Listbots' => array( 'Lista de robôs', 'Bots', 'Lista de bots' ),
'Popularpages' => array( 'Páginas populares', 'Artigos populares' ),
'Search' => array( 'Busca', 'Buscar', 'Procurar', 'Pesquisar', 'Pesquisa' ),
'Resetpass' => array( 'Zerar senha', 'Repor senha' ),
@@ -163,34 +166,118 @@ $specialPageAliases = array(
'Blankpage' => array( 'Página em branco' ),
'LinkSearch' => array( 'Pesquisar links' ),
'DeletedContributions' => array( 'Contribuições eliminadas', 'Edições eliminadas' ),
+ 'Activeusers' => array( 'Usuários ativos' ),
);
$magicWords = array(
'redirect' => array( '0', '#REDIRECIONAMENTO', '#REDIRECT' ),
- 'currentmonth' => array( '1', 'MESATUAL', 'CURRENTMONTH' ),
+ 'notoc' => array( '0', '__SEMTDC__', '__SEMSUMÁRIO__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__SEMGALERIA__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORCARTDC__', '__FORCARSUMARIO__', '__FORÇARTDC__', '__FORÇARSUMÁRIO__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__TDC__', '__SUMARIO__', '__SUMÁRIO__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__NAOEDITARSECAO__', '__NÃOEDITARSEÇÃO__', '__SEMEDITARSEÇÃO__', '__SEMEDITARSECAO__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__SEMCABECALHO__', '__SEMCABEÇALHO__', '__SEMTITULO__', '__SEMTÍTULO__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MESATUAL1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'NOMEDOMESATUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', 'MESATUALABREV', 'MESATUALABREVIADO', 'ABREVIATURADOMESATUAL', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'DIAATUAL', 'CURRENTDAY' ),
'currentday2' => array( '1', 'DIAATUAL2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'NOMEDODIAATUAL', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', 'ANOATUAL', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'HORARIOATUAL', 'CURRENTTIME' ),
'currenthour' => array( '1', 'HORAATUAL', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'MESLOCAL1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'NOMEDOMESLOCAL', 'LOCALMONTHNAME' ),
+ 'localmonthabbrev' => array( '1', 'MESLOCALABREV', 'MESLOCALABREVIADO', 'ABREVIATURADOMESLOCAL', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'DIALOCAL', 'LOCALDAY' ),
'localday2' => array( '1', 'DIALOCAL2', 'LOCALDAY2' ),
'localdayname' => array( '1', 'NOMEDODIALOCAL', 'LOCALDAYNAME' ),
'localyear' => array( '1', 'ANOLOCAL', 'LOCALYEAR' ),
'localtime' => array( '1', 'HORARIOLOCAL', 'LOCALTIME' ),
'localhour' => array( '1', 'HORALOCAL', 'LOCALHOUR' ),
- 'numberofpages' => array( '1', 'NUMERODEPAGINAS', 'NUMBEROFPAGES' ),
- 'numberofarticles' => array( '1', 'NUMERODEARTIGOS', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'NUMERODEARQUIVOS', 'NUMBEROFFILES' ),
- 'numberofusers' => array( '1', 'NUMERODEUSUARIOS', 'NUMBEROFUSERS' ),
- 'numberofedits' => array( '1', 'NUMERODEEDICOES', 'NUMBEROFEDITS' ),
- 'numberofviews' => array( '1', 'NUMERODEEXIBICOES', 'NUMBEROFVIEWS' ),
- 'pagename' => array( '1', 'NOMEDAPAGINA', 'PAGENAME' ),
- 'namespace' => array( '1', 'DOMINIO', 'NAMESPACE' ),
+ 'numberofpages' => array( '1', 'NUMERODEPAGINAS', 'NÚMERODEPÁGINAS', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'NUMERODEARTIGOS', 'NÚMERODEARTIGOS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NUMERODEARQUIVOS', 'NÚMERODEARQUIVOS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NUMERODEUSUARIOS', 'NÚMERODEUSUÁRIOS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NUMERODEUSUARIOSATIVOS', 'NÚMERODEUSUÁRIOSATIVOS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NUMERODEEDICOES', 'NÚMERODEEDIÇÕES', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NUMERODEEXIBICOES', 'NÚMERODEEXIBIÇÕES', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NOMEDAPAGINA', 'NOMEDAPÁGINA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NOMEDAPAGINAC', 'NOMEDAPÁGINAC', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'DOMINIO', 'DOMÍNIO', 'ESPACONOMINAL', 'ESPAÇONOMINAL', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'DOMINIOC', 'DOMÍNIOC', 'ESPACONOMINALC', 'ESPAÇONOMINALC', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'PAGINADEDISCUSSAO', 'PÁGINADEDISCUSSÃO', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'PAGINADEDISCUSSAOC', 'PÁGINADEDISCUSSÃOC', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'PAGINADECONTEUDO', 'PAGINADECONTEÚDO', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'PAGINADECONTEUDOC', 'PAGINADECONTEÚDOC', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NOMECOMPLETODAPAGINA', 'NOMECOMPLETODAPÁGINA', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NOMECOMPLETODAPAGINAC', 'NOMECOMPLETODAPÁGINAC', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NOMEDASUBPAGINA', 'NOMEDASUBPÁGINA', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NOMEDASUBPAGINAC', 'NOMEDASUBPÁGINAC', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NOMEDAPAGINABASEC', 'NOMEDAPÁGINABASEC', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NOMEDAPAGINADEDISCUSSAOC', 'NOMEDAPÁGINADEDISCUSSÃOC', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NOMEDAPAGINADECONTEUDOC', 'NOMEDAPÁGINADECONTEÚDOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'img_right' => array( '1', 'direita', 'right' ),
+ 'img_left' => array( '1', 'esquerda', 'left' ),
+ 'img_none' => array( '1', 'nenhum', 'none' ),
+ 'img_center' => array( '1', 'centro', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'comborda', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'semborda', 'frameless' ),
+ 'img_page' => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'borda', 'border' ),
+ 'img_top' => array( '1', 'acima', 'top' ),
+ 'img_middle' => array( '1', 'meio', 'middle' ),
+ 'img_bottom' => array( '1', 'abaixo', 'bottom' ),
+ 'img_link' => array( '1', 'ligação=$1', 'link=$1' ),
+ 'sitename' => array( '1', 'NOMEDOSITE', 'NOMEDOSÍTIO', 'NOMEDOSITIO', 'SITENAME' ),
+ 'server' => array( '0', 'SERVIDOR', 'SERVER' ),
+ 'servername' => array( '0', 'NOMEDOSERVIDOR', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'CAMINHODOSCRIPT', 'SCRIPTPATH' ),
+ 'gender' => array( '0', 'GENERO', 'GÊNERO', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__SEMCONVERTERTITULO__', '__SEMCONVERTERTÍTULO__', '__SEMCT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__SEMCONVERTERCONTEUDO__', '__SEMCONVERTERCONTEÚDO__', '__SEMCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SEMANAATUAL', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'DIADASEMANAATUAL', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'SEMANALOCAL', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'DIADASEMANALOCAL', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'IDDAREVISAO', 'IDDAREVISÃO', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'DIADAREVISAO', 'DIADAREVISÃO', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'DIADAREVISAO2', 'DIADAREVISÃO2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MESDAREVISAO', 'MÊSDAREVISÃO', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ANODAREVISAO', 'ANODAREVISÃO', 'REVISIONYEAR' ),
+ 'revisionuser' => array( '1', 'USUARIODAREVISAO', 'USUÁRIODAREVISÃO', 'REVISIONUSER' ),
+ 'fullurl' => array( '0', 'URLCOMPLETO:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URLCOMPLETOC:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'PRIMEIRAMINUSCULA:', 'PRIMEIRAMINÚSCULA:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'PRIMEIRAMAIUSCULA:', 'PRIMEIRAMAIÚSCULA:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'MINUSCULA', 'MINÚSCULA', 'MINUSCULAS', 'MINÚSCULAS', 'LC:' ),
+ 'uc' => array( '0', 'MAIUSCULA', 'MAIÚSCULA', 'MAIUSCULAS', 'MAIÚSCULAS', 'UC:' ),
+ 'displaytitle' => array( '1', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__LINKDENOVASECAO__', '__LINKDENOVASEÇÃO__', '__LIGACAODENOVASECAO__', '__LIGAÇÃODENOVASEÇÃO__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__SEMLINKDENOVASECAO__', '__SEMLINKDENOVASEÇÃO__', '__SEMLIGACAODENOVASECAO__', '__SEMLIGAÇÃODENOVASEÇÃO__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'REVISAOATUAL', 'REVISÃOATUAL', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'CODIFICAURL:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'CODIFICAANCORA:', 'CODIFICAÂNCORA:', 'ANCHORENCODE' ),
+ 'language' => array( '0', '#IDIOMA:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'IDIOMADOCONTEUDO', 'IDIOMADOCONTEÚDO', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'PAGINASNOESPACONOMINAL', 'PÁGINASNOESPAÇONOMINAL', 'PAGINASNODOMINIO', 'PÁGINASNODOMÍNIO', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'NUMERODEADMINISTRADORES', 'NÚMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
+ 'defaultsort' => array( '1', 'ORDENACAOPADRAO', 'ORDENAÇÃOPADRÃO', 'ORDEMPADRAO', 'ORDEMPADRÃO', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'CAMINHODOARQUIVO', 'FILEPATH:' ),
+ 'hiddencat' => array( '1', '__CATEGORIAOCULTA__', '__CATOCULTA__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'PAGINASNACATEGORIA', 'PÁGINASNACATEGORIA', 'PAGINASNACAT', 'PÁGINASNACAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEXAR__', '__INDEX__' ),
+ 'noindex' => array( '1', '__NAOINDEXAR__', '__NÃOINDEXAR__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NUMERONOGRUPO', 'NÚMERONOGRUPO', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVELDEPROTECAO', 'NÍVELDEPROTEÇÃO', 'PROTECTIONLEVEL' ),
);
$messages = array(
@@ -224,6 +311,7 @@ $messages = array(
'tog-enotifminoredits' => 'Enviar-me um email também quando forem edições menores',
'tog-enotifrevealaddr' => 'Revelar o meu endereço de email nas notificações',
'tog-shownumberswatching' => 'Mostrar o número de usuários que estão vigiando',
+'tog-oldsig' => 'Previsão da assinatura existente:',
'tog-fancysig' => 'Tratar assinatura como wikitexto (sem link automático)',
'tog-externaleditor' => 'Utilizar editor externo por padrão (apenas para usuários avançados, já que serão necessárias configurações adicionais em seus computadores)',
'tog-externaldiff' => 'Utilizar diferenças externas por padrão (apenas para usuários avançados, já que serão necessárias configurações adicionais em seus computadores)',
@@ -247,6 +335,13 @@ $messages = array(
'underline-never' => 'Nunca',
'underline-default' => 'Padrão do navegador',
+# Font style option in Special:Preferences
+'editfont-style' => 'Estilo da fonte para a região de edição:',
+'editfont-default' => 'Padrão do navegador',
+'editfont-monospace' => 'Fonte mono-espaçada',
+'editfont-sansserif' => 'Fonte sem serifa',
+'editfont-serif' => 'Serifada',
+
# Dates
'sunday' => 'domingo',
'monday' => 'segunda-feira',
@@ -306,7 +401,7 @@ $messages = array(
'category-media-header' => 'Multimídia na categoria "$1"',
'category-empty' => "''No momento esta categoria não possui nenhuma página ou arquivo multimídia.''",
'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}}',
-'hidden-category-category' => 'Categorias ocultas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias ocultas',
'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a subcategoria a seguir.|Há, nesta categoria {{PLURAL:$1|uma subcategoria|$1 subcategorias}} (dentre um total de $2).}}',
'category-subcat-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte sub-categoria|as $1 sub-categorias a seguir}}.',
'category-article-count' => '{{PLURAL:$2|Esta categoria possui apenas a página a seguir.|Há, nesta categoria, {{PLURAL:$1|a página a seguir|as $1 páginas a seguir}} (dentre um total de $2).}}',
@@ -314,6 +409,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Esta categoria possui apenas o arquivo a seguir.|Há, nesta categoria, {{PLURAL:$1|o arquivo a seguir|os $1 seguintes arquivos}} (dentre um total de $2.)}}',
'category-file-count-limited' => 'Nesta categoria há {{PLURAL:$1|um arquivo|$1 arquivos}}.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Páginas indexadas',
+'noindex-category' => 'Páginas não indexadas',
'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
'mainpagedocfooter' => 'Consulte o [http://meta.wikimedia.org/wiki/Help:Contents Manual de Usuário] para informações de como usar o software wiki.
@@ -324,10 +421,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ do MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]',
-'about' => 'Sobre',
-'article' => 'Página de conteúdo',
-'newwindow' => '(abre em uma nova janela)',
-'cancel' => 'Cancelar',
+'about' => 'Sobre',
+'article' => 'Página de conteúdo',
+'newwindow' => '(abre em uma nova janela)',
+'cancel' => 'Cancelar',
+'moredotdotdot' => 'Mais...',
+'mypage' => 'Minha página',
+'mytalk' => 'Minha discussão',
+'anontalk' => 'Discussão para este IP',
+'navigation' => 'Navegação',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Procurar',
'qbbrowse' => 'Navegar',
'qbedit' => 'Editar',
@@ -335,15 +440,35 @@ $messages = array(
'qbpageinfo' => 'Contexto',
'qbmyoptions' => 'Minhas páginas',
'qbspecialpages' => 'Páginas especiais',
-'moredotdotdot' => 'Mais...',
-'mypage' => 'Minha página',
-'mytalk' => 'Minha discussão',
-'anontalk' => 'Discussão para este IP',
-'navigation' => 'Navegação',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadados:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Adicionar tópico',
+'vector-action-delete' => 'Eliminar',
+'vector-action-move' => 'Mover',
+'vector-action-protect' => 'Proteger',
+'vector-action-undelete' => 'Restaurar',
+'vector-action-unprotect' => 'Desproteger',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Página de ajuda',
+'vector-namespace-image' => 'Arquivo',
+'vector-namespace-main' => 'Página',
+'vector-namespace-media' => 'Página de mídia',
+'vector-namespace-mediawiki' => 'Mensagem',
+'vector-namespace-project' => 'Página de projeto',
+'vector-namespace-special' => 'Página especial',
+'vector-namespace-talk' => 'Discussão',
+'vector-namespace-template' => 'Predefinição',
+'vector-namespace-user' => 'Página de usuário',
+'vector-view-create' => 'Criar',
+'vector-view-edit' => 'Editar',
+'vector-view-history' => 'Ver histórico',
+'vector-view-view' => 'Ler',
+'vector-view-viewsource' => 'Ver código-fonte',
+'actions' => 'Ações',
+'namespaces' => 'Espaços nominais',
+'variants' => 'Variantes',
'errorpagetitle' => 'Erro',
'returnto' => 'Retornar para $1.',
@@ -393,18 +518,22 @@ $messages = array(
'otherlanguages' => 'Outras línguas',
'redirectedfrom' => '(Redirecionado de <b>$1</b>)',
'redirectpagesub' => 'Página de redirecionamento',
-'lastmodifiedat' => 'Esta página foi modificada pela última vez às $2 de $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Esta página foi modificada pela última vez às $2 de $1.',
'viewcount' => 'Esta página foi acessada {{PLURAL:$1|uma vez|$1 vezes}}.',
'protectedpage' => 'Página protegida',
'jumpto' => 'Ir para:',
'jumptonavigation' => 'navegação',
'jumptosearch' => 'pesquisa',
+'view-pool-error' => 'Desculpe-nos, os servidores estão sobrecarregados neste momento.
+Muitos usuários estão tentando ver esta página.
+Aguarde um instante antes de tentar acessar esta página novamente.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Sobre {{SITENAME}}',
'aboutpage' => 'Project:Sobre',
'copyright' => 'Conteúdo disponível sob $1.',
-'copyrightpagename' => 'Direitos de autor de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Direitos_de_autor',
'currentevents' => 'Eventos atuais',
'currentevents-url' => 'Project:Eventos atuais',
@@ -412,8 +541,6 @@ $messages = array(
'disclaimerpage' => 'Project:Aviso_geral',
'edithelp' => 'Ajuda de edição',
'edithelppage' => 'Help:Editar',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Conteúdos',
'mainpage' => 'Página principal',
'mainpage-description' => 'Página principal',
@@ -494,10 +621,6 @@ A última tentativa de busca no banco de dados foi:
"$1"
na função "$2".
O banco de dados retornou o erro "$3: $4".',
-'noconnect' => 'Desculpe-nos! {{SITENAME}} está passando por algumas dificuldades técnicas e não pode contatar o servidor de banco de dados. <br />
-$1',
-'nodb' => 'Não foi possível selecionar o banco de dados $1',
-'cachederror' => 'O que se segue é uma cópia em cache da página solicitada podendo, por isso mesmo, estar com os dados defasados.',
'laggedslavemode' => 'Aviso: a página poderá não conter atualizações recentes.',
'readonly' => 'Banco de dados disponível no modo "somente leitura"',
'enterlockreason' => 'Entre com um motivo para trancá-lo, incluindo uma estimativa de quando poderá novamente ser destrancado',
@@ -515,6 +638,8 @@ Por favor, reporte este fato a um administrador, fazendo notar a URL.',
'readonly_lag' => 'O banco de dados foi automaticamente bloqueado enquanto os servidores secundários se sincronizam com o principal',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
+'fileappenderrorread' => 'Não foi possível ler "$1" durante a anexação.',
+'fileappenderror' => 'Não foi possível adicionar "$1" a "$2".',
'filecopyerror' => 'Não foi possível copiar o arquivo "$1" para "$2".',
'filerenameerror' => 'Não foi possível renomear o arquivo "$1" para "$2".',
'filedeleteerror' => 'Não foi possível eliminar o arquivo "$1".',
@@ -524,7 +649,8 @@ Por favor, reporte este fato a um administrador, fazendo notar a URL.',
'unexpected' => 'Valor não esperado: "$1"="$2".',
'formerror' => 'Erro: Não foi possível enviar o formulário',
'badarticleerror' => 'Esta ação não pode ser realizada nesta página.',
-'cannotdelete' => 'Não foi possível eliminar a página ou arquivo especificado (provavelmente por já ter sido eliminada por outra pessoa.)',
+'cannotdelete' => 'Não foi possível eliminar a página ou arquivo $1.
+É possível que ele já tenha sido eliminado por outra pessoa.',
'badtitle' => 'Título inválido',
'badtitletext' => 'O título de página solicitado era inválido, vazio, ou um link interlínguas ou interwikis incorreto.
Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
@@ -558,7 +684,6 @@ Quem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
'virus-unknownscanner' => 'antivírus desconhecido:',
# Login and logout pages
-'logouttitle' => 'Desautenticar do sistema',
'logouttext' => "'''Agora você encontra-se desautenticado.'''
É possível continuar usando {{SITENAME}} anonimamente ou [[Special:UserLogin|autenticar-se novamente]] com o mesmo nome de usuário ou com um nome diferente.
@@ -566,7 +691,6 @@ Note que algumas páginas podem continuar sendo exibidas como se você ainda est
'welcomecreation' => '== Bem-vindo, $1! ==
A sua conta foi criada.
Não se esqueça de personalizar as suas [[Special:Preferences|preferências na {{SITENAME}}]].',
-'loginpagetitle' => 'Autenticação de usuário',
'yourname' => 'Nome de usuário:',
'yourpassword' => 'Senha:',
'yourpasswordagain' => 'Redigite sua senha',
@@ -577,6 +701,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'nav-login-createaccount' => 'Criar uma conta ou entrar',
'loginprompt' => 'É necessário estar com os <i>cookies</i> ativados para poder autenticar-se na {{SITENAME}}.',
'userlogin' => 'Criar uma conta ou entrar',
+'userloginnocreate' => 'Autenticar-se',
'logout' => 'Sair',
'userlogout' => 'Sair',
'notloggedin' => 'Não autenticado',
@@ -589,27 +714,8 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'badretype' => 'As senhas que você digitou não são iguais.',
'userexists' => 'O nome de usuário que você digitou já existe.
Escolha um nome diferente.',
-'youremail' => 'Seu e-mail:',
-'username' => 'Nome de usuário:',
-'uid' => 'Número de identificação:',
-'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
-'yourrealname' => 'Nome verdadeiro:',
-'yourlanguage' => 'Idioma:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Assinatura:',
-'badsig' => 'Assinatura inválida; verifique o código HTML utilizado.',
-'badsiglength' => 'A sua assinatura é muito longa.
-Ela deve ter menos de $1 {{PLURAL:$1|caractere|caracteres}}.',
-'yourgender' => 'Sexo:',
-'gender-unknown' => 'Não especificado',
-'gender-male' => 'Masculino',
-'gender-female' => 'Feminino',
-'prefs-help-gender' => 'Opcional: usado para endereçamento correto pelo software baseado no sexo. Esta informação será pública.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'O fornecimento de seu Nome verdadeiro é opcional, mas, caso decida o revelar, este será utilizado para lhe dar crédito pelo seu trabalho.',
'loginerror' => 'Erro de autenticação',
-'prefs-help-email' => "O fornecimento de um endereço de ''e-mail'' é opcional, mas permite que uma nova senha lhe seja enviada caso você esqueça sua senha. Você pode ainda preferir deixar que os usuários entrem em contato consigo através de sua página de usuário ou discussão sem ter de revelar sua identidade.",
-'prefs-help-email-required' => 'O endereço de e-mail é requerido.',
+'createaccounterror' => 'Não foi possível criar a conta: $1',
'nocookiesnew' => "A conta do usuário foi criada, mas você não foi autenticado.
{{SITENAME}} utiliza ''cookies'' para autenticar os usuários.
Você tem os ''cookies'' desativados no seu navegador.
@@ -623,10 +729,11 @@ Os nomes de usuário são sensíveis à capitalização.
Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
'nosuchusershort' => 'Não existe um usuário com o nome "<nowiki>$1</nowiki>". Verifique o nome que introduziu.',
'nouserspecified' => 'Você precisa especificar um nome de usuário.',
+'login-userblocked' => 'Este usuário está bloqueado. Entrada proibida.',
'wrongpassword' => 'A senha que introduziu é inválida. Por favor, tente novamente.',
'wrongpasswordempty' => 'A senha introduzida está em branco. Por favor, tente novamente.',
-'passwordtooshort' => 'A sua senha é inválida ou muito curta.
-Deve de ter no mínimo {{PLURAL:$1|1 caracter|$1 caracteres}} e ser diferente do seu nome de usuário.',
+'passwordtooshort' => 'As senhas devem ter no mínimo {{PLURAL:$1|1 caractere|$1 caracteres}}.',
+'password-name-match' => 'A sua senha deve ser diferente do seu nome de usuário.',
'mailmypassword' => 'Enviar uma nova senha por e-mail',
'passwordremindertitle' => 'Nova senha temporária em {{SITENAME}}',
'passwordremindertext' => 'Alguém (provavelmente você, a partir do endereço de IP $1) solicitou uma nova senha para {{SITENAME}} ($4). Foi criada uma senha temporária para o usuário "$2", sendo ela "$3". Se esta era sua intenção, você precisará se autenticar e escolher uma nova senha agora.
@@ -634,6 +741,7 @@ A sua senha temporária expirará em {{PLURAL:$5|um dia|$5 dias}}.
Se foi outra pessoa quem fez este pedido, ou se você já lembrou a sua senha, e não quer mais alterá-la, você pode ignorar esta mensagem e continuar utilizando sua senha antiga.',
'noemail' => 'Não há um endereço de e-mail associado ao usuário "$1".',
+'noemailcreate' => 'Você precisa fornecer um endereço de e-mail válido',
'passwordsent' => 'Uma nova senha está sendo enviada para o endereço de e-mail registrado para "$1".
Por favor, reconecte-se ao recebê-lo.',
'blocked-mailpassword' => 'O seu endereço de IP foi bloqueado de editar e, portanto, não será possível utilizar o lembrete de senha (para serem evitados envios abusivos a outras pessoas).',
@@ -655,9 +763,11 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
+'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
'login-throttled' => 'Você fez tentativas demais de se autenticar com esta conta recentemente.
Por favor aguarde antes de tentar novamente.',
'loginlanguagelabel' => 'Idioma: $1',
+'suspicious-userlogout' => 'Sua solicitação para sair foi negada porque aparentemente foi enviada por um navegador danificado ou por um servidor proxy com cache.',
# Password reset dialog
'resetpass' => 'Alterar senha',
@@ -669,17 +779,13 @@ Por favor aguarde antes de tentar novamente.',
'retypenew' => 'Reintroduza a nova senha',
'resetpass_submit' => 'Definir senha e entrar',
'resetpass_success' => 'Sua senha foi alterada com sucesso! Autenticando-se...',
-'resetpass_bad_temporary' => 'Senha temporária incorreta. Pode ser que você já tenha conseguido alterar a sua senha ou pedido que uma nova senha temporária fosse gerada.',
'resetpass_forbidden' => 'As senhas não podem ser alteradas',
'resetpass-no-info' => 'Você precisa estar autenticado para acessar esta página diretamente.',
'resetpass-submit-loggedin' => 'Alterar senha',
+'resetpass-submit-cancel' => 'Cancelar',
'resetpass-wrong-oldpass' => 'Senha temporária ou atual inválida.
Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senha temporária.',
'resetpass-temp-password' => 'Senha temporária:',
-'resetpass-log' => 'Registro de redefinições de senha',
-'resetpass-logtext' => 'Abaixo encontra-se uma lista de usuários que tiveram sua senha redefinida por um administrador.',
-'resetpass-logentry' => 'alterou a senha de $1',
-'resetpass-comment' => 'Motivo da redefinição de senha:',
# Edit page toolbar
'bold_sample' => 'Texto em negrito',
@@ -754,7 +860,6 @@ Por favor, inclua tais dados em qualquer tentativa de esclarecimentos que for re
'blockededitsource' => "O texto das '''suas edições''' em '''$1''' é mostrado abaixo:",
'whitelistedittitle' => 'É necessário autenticar-se para editar páginas',
'whitelistedittext' => 'Você precisa $1 para poder editar páginas.',
-'confirmedittitle' => 'Confirmação de e-mail requerida para editar',
'confirmedittext' => 'Você precisa confirmar o seu endereço de e-mail antes de começar a editar páginas.
Por favor, introduza um e valide-o através das suas [[Special:Preferences|preferências de usuário]].',
'nosuchsectiontitle' => 'Não foi possível encontrar a seção',
@@ -776,14 +881,21 @@ Se você chegou aqui por engano, apenas clique no botão '''voltar''' do seu nav
'noarticletext' => 'Atualmente não existe texto nesta página.
Você pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] em outras páginas <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar nos registros relacionados],
ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página]</span>.',
+'noarticletext-nopermission' => 'Não há actualmente texto nesta página.
+Você pode [[Special:Search/{{PAGENAME}}|procurar este título de página]] em outras páginas,
+ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar os registos relacionados] </span>.',
'userpage-userdoesnotexist' => 'A conta "$1" não se encontra registrada.
Verifique se deseja mesmo criar/editar esta página.',
+'userpage-userdoesnotexist-view' => 'A conta de usuário "$1" não está registrada.',
+'blocked-notice-logextract' => 'Este usuário está atualmente bloqueado.
+O registro de bloqueio mais recente é fornecido abaixo, para referência:',
'clearyourcache' => "'''Nota - Depois de salvar, você terá de limpar a ''cache'' do seu navegador para ver as alterações.'''
'''Mozilla / Firefox / Safari:''' pressione ''Shift'' enquanto clica em ''Recarregar'', ou pressione ''Ctrl-F5'' ou ''Ctrl-R'' (''Command-R'' para Macintosh);
'''Konqueror:''' clique no botão ''Recarregar'' ou pressione ''F5'';
'''Opera:''' limpe a ''cache'' em ''Ferramentas → Preferências'' (''Tools → Preferences'');
'''Internet Explorer:''' pressione ''Ctrl'' enquanto clica em ''Recarregar'' ou pressione ''Ctrl-F5'';",
-'usercssjsyoucanpreview' => "'''Dica:''' Utilize o botão \"Mostrar previsão\" para testar seu novo CSS/JS antes de salvar.",
+'usercssyoucanpreview' => "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo CSS antes de salvar.",
+'userjsyoucanpreview' => "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo JavaScript antes de salvar.",
'usercsspreview' => "'''Lembre-se que está apenas prevendo o seu CSS particular.'''
'''Ele ainda não foi salvo!'''",
'userjspreview' => "'''Lembre-se que está apenas testando/prevendo o seu JavaScript particular e que ele ainda não foi salvo!'''",
@@ -833,13 +945,16 @@ Por gentileza, considere quebrar a página em sessões menores.'''",
Pode, no entanto, copiar o seu texto num editor externo e guardá-lo para posterior envio.
Quem bloqueou o banco de dados forneceu a seguinte justificativa: $1",
-'protectedpagewarning' => "'''CUIDADO: Apenas os usuários com privilégios de sysop (Administradores) podem editar esta página pois ela foi bloqueada.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.",
+'protectedpagewarning' => "'''Atenção: Esta página foi protegida para que apenas usuários com privilégios de administrado possam editá-la.'''
+A última entrada no histórico é fornecida abaixo como referência:",
+'semiprotectedpagewarning' => "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.
+A última entrada no histórico é fornecida abaixo para referência:",
'cascadeprotectedwarning' => "'''Atenção:''' Esta página se encontra protegida; apenas {{int:group-sysop}} podem editá-la, uma vez que se encontra incluída {{PLURAL:\$1|na seguinte página protegida|nas seguintes páginas protegidas}} com a \"proteção progressiva\":",
-'titleprotectedwarning' => "'''ATENÇÃO: Esta página foi protegida, [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la",
-'templatesused' => 'Predefinições utilizadas nesta página:',
-'templatesusedpreview' => 'Predefinições utilizadas nesta previsão:',
-'templatesusedsection' => 'Predefinições utilizadas nesta seção:',
+'titleprotectedwarning' => "'''Atenção: esta página foi protegida; [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la.'''
+A última entrada no histórico é fornecida abaixo como referência:",
+'templatesused' => '{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta página:',
+'templatesusedpreview' => '{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta previsão:',
+'templatesusedsection' => '{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta seção:',
'template-protected' => '(protegida)',
'template-semiprotected' => '(semi-protegida)',
'hiddencategories' => 'Esta página integra {{PLURAL:$1|uma categoria oculta|$1 categorias ocultas}}:',
@@ -848,15 +963,18 @@ Quem bloqueou o banco de dados forneceu a seguinte justificativa: $1",
'nocreatetext' => '{{SITENAME}} tem restringida a habilidade de criar novas páginas.
Volte à tela anterior e edite uma página já existente, ou [[Special:UserLogin|autentique-se ou crie uma conta]].',
'nocreate-loggedin' => 'Você não possui permissão para criar novas páginas.',
+'sectioneditnotsupported-title' => 'Edição por seções não suportada',
+'sectioneditnotsupported-text' => 'Edição por seções não suportada nesta página.',
'permissionserrors' => 'Erros de permissões',
'permissionserrorstext' => 'Você não possui permissão de fazer isso, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:',
'permissionserrorstext-withaction' => 'Você não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos motivos a seguir}}:',
-'recreate-deleted-warn' => "'''Atenção: Você está recriando uma página já eliminada em outra ocasião.'''
+'recreate-moveddeleted-warn' => "Atenção: Você está recriando uma página já eliminada em outra ocasião.'''
-Certifique-se de que seja adequado prosseguir editando esta página.
-O registro de eliminação desta página é exibido a seguir, para sua comodidade:",
-'deleted-notice' => 'Esta página foi eliminada. O registro de eliminações para esta página é disponibilizado abaixo, para referência.',
-'deletelog-fulllog' => 'Ver registro completo',
+Você deve considerar se é realmente adequado continuar editando esta página.
+Os registros de eliminação e de movimentação desta página são exibidos a seguir, para sua comodidade:",
+'moveddeleted-notice' => 'Esta página foi eliminada.
+Os registros de eliminação e de movimentação para esta página estão disponibilizados abaixo, para referência.',
+'log-fulllog' => 'Ver registro detalhado',
'edit-hook-aborted' => "Edição abortada por ''hook''.
Ele não deu nenhuma explicação.",
'edit-gone-missing' => 'Não foi possível atualizar a página.
@@ -878,6 +996,7 @@ Estes argumentos foram omitidos.',
'post-expand-template-argument-category' => 'Páginas com omissões de argumentos em predefinições',
'parser-template-loop-warning' => 'Ciclo de predefinições detectado: [[$1]]',
'parser-template-recursion-depth-warning' => 'O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)',
+'language-converter-depth-warning' => 'O limite de profundidade do conversor de línguas excedeu a ($1)',
# "Undo" feature
'undo-success' => 'A edição pôde ser desfeita. Por gentileza, verifique o comparativo a seguir para se certificar de que é isto que deseja fazer, salvando as alterações após ter terminado de revisá-las.',
@@ -897,7 +1016,7 @@ A justificativa apresentada por $3 foi ''$2''",
'currentrev' => 'Revisão atual',
'currentrev-asof' => 'Edição atual tal como $1',
'revisionasof' => 'Edição de $1',
-'revision-info' => 'Edição feita às $1 por $2', # Additionally available: $3: revision id
+'revision-info' => 'Edição feita às $1 por $2',
'previousrevision' => '← Versão anterior',
'nextrevision' => 'Versão posterior →',
'currentrevisionlink' => 'ver versão atual',
@@ -910,7 +1029,7 @@ A justificativa apresentada por $3 foi ''$2''",
Legenda: ''({{int:cur}})''' = diferença com relação a versão atual,
'''({{int:last}})''' = diferença com relação a versão anterior, '''{{int:minoreditletter}}''' = edição menor.",
'history-fieldset-title' => 'Navegar pelo histórico',
-'deletedrev' => '[eliminada]',
+'history-show-deleted' => 'Somente eliminados',
'histfirst' => 'Mais antigas',
'histlast' => 'Mais recentes',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -919,71 +1038,114 @@ Legenda: ''({{int:cur}})''' = diferença com relação a versão atual,
# Revision feed
'history-feed-title' => 'Histórico de revisão',
'history-feed-description' => 'Histórico de revisões para esta página nesta wiki',
-'history-feed-item-nocomment' => '$1 em $2', # user at time
+'history-feed-item-nocomment' => '$1 em $2',
'history-feed-empty' => 'A página requisitada não existe.
Poderá ter sido eliminada da wiki ou renomeada.
Tente [[Special:Search|pesquisar na wiki]] por páginas relevantes.',
# Revision deletion
-'rev-deleted-comment' => '(comentário removido)',
-'rev-deleted-user' => '(nome de usuário removido)',
-'rev-deleted-event' => '(entrada removida)',
-'rev-deleted-text-permission' => "Esta revisão desta página foi '''removida'''.
-Poderão existir detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
-'rev-deleted-text-view' => "A revisão desta página foi '''removida'''.
-Como administrador desta wiki você pode visualizá-la;
-mais detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
-'rev-deleted-no-diff' => "Você não pode ver esta modificação porque uma das revisões foi '''removida'''.
-Podem haver detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
-'rev-deleted-unhide-diff' => "Uma das revisões destas diferenças foi '''removida dos arquivos públicos'''.
-Poderá haver detalhes no [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].
-Como administrador, você pode mesmo assim [$1 ver estas diferenças], se desejar prosseguir.",
-'rev-delundel' => 'mostrar/esconder',
-'revisiondelete' => 'Eliminar/restaurar edições',
-'revdelete-nooldid-title' => 'Nenhuma revisão selecionada',
-'revdelete-nooldid-text' => 'Você ou não especificou uma(s) edição(ões) de destino, a edição especificada não existe ou, ainda, você está tentando ocultar a edição atual.',
-'revdelete-nologtype-title' => 'Tipo de registro não especificado',
-'revdelete-nologtype-text' => 'Você não especificou um tipo de registro sobre o qual executar esta ação.',
-'revdelete-toomanytargets-title' => 'Demasiados alvos',
-'revdelete-toomanytargets-text' => 'Você especificou demasiados tipos de alvos sobre os quais executar esta ação.',
-'revdelete-nologid-title' => 'Entrada de registro inválida',
-'revdelete-nologid-text' => 'Você não especificou um evento de registro alvo para executar esta função ou a entrada especificada não existe.',
-'revdelete-selected' => "'''{{PLURAL:$2|Edição selecionada|Edições selecionadas}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Evento de registro selecionado|Eventos de registro selecionados}}:'''",
-'revdelete-text' => "'''Revisões eliminadas e eventos continuarão aparecendo no histórico da página e nos registros, apesar de o seu conteúdo textual estar inacessível ao público.'''
-
-Outros administradores no {{SITENAME}} continuarão podendo acessar ao conteúdo escondido e restaurá-lo através desta mesma ''interface'', a menos que uma restrição adicional seja definida.
-Por favor confirme que deseja fazê-lo, que entende as consequências e que está fazendo isto de acordo com [[{{MediaWiki:Policy-url}}|a política]].",
-'revdelete-suppress-text' => "A supressão deverá ser usada '''apenas''' para os seguintes casos:
+'rev-deleted-comment' => '(comentário removido)',
+'rev-deleted-user' => '(nome de usuário removido)',
+'rev-deleted-event' => '(entrada removida)',
+'rev-deleted-user-contribs' => '[nome de usuário ou endereço de IP eliminado - edição ocultada das contribuições]',
+'rev-deleted-text-permission' => "Esta revisão desta página foi '''eliminada'''.
+Poderá haver detalhes no [{{fullurl:{{#Especial:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
+'rev-deleted-text-unhide' => "Esta revisão desta página foi '''removida'''.
+Poderá haver detalhes no [{{fullurl:{{#Especial:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].
+Como administrador, você ainda pode [$1 ver esta revisão] se desejar continuar.",
+'rev-suppressed-text-unhide' => "Esta revisão desta página foi '''removida'''.
+Poderá haver detalhes no [{{fullurl:{{#Especial:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de eliminação].
+Como administrador, você ainda pode [$1 ver esta revisão] se desejar continuar.",
+'rev-deleted-text-view' => "A revisão desta página foi '''eliminada'''.
+Como administrador, você pode visualizá-la; poderá haver detalhes no [{{fullurl:{{#Especial:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
+'rev-suppressed-text-view' => "A revisão desta página foi '''eliminada'''.
+Como administrador, você pode visualizá-la; poderá haver detalhes no [{{fullurl:{{#Especial:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de eliminação].",
+'rev-deleted-no-diff' => "Você não pode ver estas diferenças porque uma das revisões foi '''eliminada'''.
+Poderá haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
+'rev-suppressed-no-diff' => "Você não pode ver esta comparação porque uma das revisões foi '''eliminada'''.",
+'rev-deleted-unhide-diff' => "Uma das revisões destas diferenças foi '''eliminada'''.
+Poderá haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de supressão].
+Por ser um administrador, você ainda pode [$1 ver estas diferenças], se desejar prosseguir.",
+'rev-suppressed-unhide-diff' => "Uma das revisões deste diferencial foi '''suprimido'''.
+Podem haver detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressão].
+Como administrador você pode ainda [$1 pode ver o diferencial] se desejar prosseguir.",
+'rev-deleted-diff-view' => "Uma das revisões desta comparação foi '''removida'''.
+Como administrador você ainda pode ver esta comparação; detalhes podem ser contrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de remoção].",
+'rev-suppressed-diff-view' => "Uma das revisões desta comparação foi '''suprimida''''.
+Como administrador você pode ver esta comparação; detalhes podem ser encontradas no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supressão].",
+'rev-delundel' => 'mostrar/esconder',
+'rev-showdeleted' => 'exibir',
+'revisiondelete' => 'Eliminar/restaurar edições',
+'revdelete-nooldid-title' => 'Nenhuma revisão selecionada',
+'revdelete-nooldid-text' => 'Você ou não especificou uma(s) edição(ões) de destino, a edição especificada não existe ou, ainda, você está tentando ocultar a edição atual.',
+'revdelete-nologtype-title' => 'Tipo de registro não especificado',
+'revdelete-nologtype-text' => 'Você não especificou um tipo de registro sobre o qual executar esta ação.',
+'revdelete-nologid-title' => 'Entrada de registro inválida',
+'revdelete-nologid-text' => 'Você não especificou um evento de registro alvo para executar esta função ou a entrada especificada não existe.',
+'revdelete-no-file' => 'O arquivo especificado não existe.',
+'revdelete-show-file-confirm' => 'Tem a certeza de que quer visualizar uma revisão eliminada do arquivo "<nowiki>$1</nowiki>" de $2 em $3?',
+'revdelete-show-file-submit' => 'Sim',
+'revdelete-selected' => "'''{{PLURAL:$2|Edição selecionada|Edições selecionadas}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evento de registro selecionado|Eventos de registro selecionados}}:'''",
+'revdelete-text' => "'''Revisões eliminadas e eventos continuarão aparecendo no histórico da página e nos registros, apesar de o seu conteúdo textual estar inacessível ao público.'''
+Outros administradores no {{SITENAME}} continuarão podendo acessar ao conteúdo escondido e restaurá-lo através desta mesma ''interface'', a menos que uma restrição adicional seja definida.",
+'revdelete-confirm' => 'Por favor confirme que pretende executar esta acção, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].',
+'revdelete-suppress-text' => "A supressão deverá ser usada '''apenas''' para os seguintes casos:
* Informação pessoal inapropriada
*: ''endereços de domicílio e números de telefone, números da segurança social, etc''",
-'revdelete-legend' => 'Definir restrições de visualização',
-'revdelete-hide-text' => 'Ocultar texto da edição',
-'revdelete-hide-name' => 'Ocultar ação e alvo',
-'revdelete-hide-comment' => 'Esconder comentário de edição',
-'revdelete-hide-user' => 'Esconder nome de usuário/IP do editor',
-'revdelete-hide-restricted' => 'Suprimir dados de administradores assim como de outros',
-'revdelete-suppress' => 'Suprimir dados de administradores, bem como de outros',
-'revdelete-hide-image' => 'Ocultar conteúdos do arquivo',
-'revdelete-unsuppress' => 'Remover restrições das edições restauradas',
-'revdelete-log' => 'Motivo:',
-'revdelete-submit' => 'Aplicar à edição selecionada',
-'revdelete-logentry' => 'alterou a visibilidade das revisões de "[[$1]]"',
-'logdelete-logentry' => 'alterou a visibilidade dos eventos de "[[$1]]"',
-'revdelete-success' => "'''A visibilidade da revisão foi definida com sucesso.'''",
-'logdelete-success' => "'''Visibilidade de evento definida com sucesso.'''",
-'revdel-restore' => 'Alterar visibilidade',
-'pagehist' => 'Histórico da página',
-'deletedhist' => 'Histórico de eliminações',
-'revdelete-content' => 'conteúdo',
-'revdelete-summary' => 'sumário de edição',
-'revdelete-uname' => 'nome do usuário',
-'revdelete-restricted' => 'restrições a administradores aplicadas',
-'revdelete-unrestricted' => 'restrições a administradores removidas',
-'revdelete-hid' => 'ocultado $1',
-'revdelete-unhid' => 'desocultado $1',
-'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisão|revisões}}',
-'logdelete-log-message' => '$1 para $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-legend' => 'Definir restrições de visualização',
+'revdelete-hide-text' => 'Ocultar texto da edição',
+'revdelete-hide-image' => 'Ocultar conteúdos do arquivo',
+'revdelete-hide-name' => 'Ocultar ação e alvo',
+'revdelete-hide-comment' => 'Esconder comentário de edição',
+'revdelete-hide-user' => 'Esconder nome de usuário/IP do editor',
+'revdelete-hide-restricted' => 'Suprimir dados de administradores assim como de outros',
+'revdelete-radio-same' => '(não altere)',
+'revdelete-radio-set' => 'Sim',
+'revdelete-radio-unset' => 'Não',
+'revdelete-suppress' => 'Suprimir dados de administradores, bem como de outros',
+'revdelete-unsuppress' => 'Remover restrições das edições restauradas',
+'revdelete-log' => 'Motivo:',
+'revdelete-submit' => 'Aplicar {{PLURAL:$1|à revisão selecionada|à revisões selecionadas}}',
+'revdelete-logentry' => 'alterou a visibilidade das revisões de "[[$1]]"',
+'logdelete-logentry' => 'alterou a visibilidade dos eventos de "[[$1]]"',
+'revdelete-success' => "'''A visibilidade da revisão foi definida com sucesso.'''",
+'revdelete-failure' => "'''A visibilidade da revisão não foi atualizada:'''
+$1",
+'logdelete-success' => "'''Visibilidade de evento definida com sucesso.'''",
+'logdelete-failure' => "'''A visibilidade do registro não pôde ser estabelecida:'''
+$1",
+'revdel-restore' => 'Alterar visibilidade',
+'pagehist' => 'Histórico da página',
+'deletedhist' => 'Histórico de eliminações',
+'revdelete-content' => 'conteúdo',
+'revdelete-summary' => 'sumário de edição',
+'revdelete-uname' => 'nome do usuário',
+'revdelete-restricted' => 'restrições a administradores aplicadas',
+'revdelete-unrestricted' => 'restrições a administradores removidas',
+'revdelete-hid' => 'ocultado $1',
+'revdelete-unhid' => 'desocultado $1',
+'revdelete-log-message' => '$1 para $2 {{PLURAL:$2|revisão|revisões}}',
+'logdelete-log-message' => '$1 para $2 {{PLURAL:$2|evento|eventos}}',
+'revdelete-hide-current' => 'Erro ao ocultar o item datado de $2, $1: esta é a revisão atual.
+Não pode ser ocultada.',
+'revdelete-show-no-access' => 'Erro ao mostrar o item datado de $2, $1: este item foi marcado como "restrito".
+Você não tem acesso a ele.',
+'revdelete-modify-no-access' => 'Erro ao modificar o item datado de $2, $1: este item foi marcado como "restrito".
+Você não tem acesso a ele.',
+'revdelete-modify-missing' => 'Erro ao modificar o item ID $1: está faltando na base de dados!',
+'revdelete-no-change' => "'''Aviso:''' o item datado de $2, $1 já possui as configurações de visualização requeridas.",
+'revdelete-concurrent-change' => 'Erro ao modificar o item datado de $2, $1: o seu estado parece ter sido alterado por outra pessoa enquanto você tentava modificá-lo.
+Por favor, verifique os registos.',
+'revdelete-only-restricted' => 'Erro ao ocultar o item de $2 às $1: você não pode impedir que itens sejam visualizados por administradores sem também selecionar uma das outras opções de visibilidade.',
+'revdelete-reason-dropdown' => '*Motivos comuns para eliminação
+** Violação de direitos autorais
+** Informação pessoal inapropriada
+** Informação potencialmente difamatória',
+'revdelete-otherreason' => 'Outro motivo/motivo adicional:',
+'revdelete-reasonotherlist' => 'Outro motivo',
+'revdelete-edit-reasonlist' => 'Editar motivos de eliminação',
+'revdelete-offender' => 'Autor da revisão:',
# Suppression log
'suppressionlog' => 'Registro de supressões',
@@ -1020,67 +1182,13 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
'mergelogpagetext' => 'Segue-se um registro das mais recentes fusões de históricos de páginas.',
# Diffs
-'history-title' => 'Histórico de edições de "$1"',
-'difference' => '(Diferença entre revisões)',
-'lineno' => 'Linha $1:',
-'compareselectedversions' => 'Compare as versões selecionadas',
-'visualcomparison' => 'Comparação visual',
-'wikicodecomparison' => 'Comparação de wikitexto',
-'editundo' => 'desfazer',
-'diff-multi' => '({{PLURAL:$1|uma edição intermediária não está sendo exibida|$1 edições intermediárias não estão sendo exibidas}}.)',
-'diff-movedto' => 'movido para $1',
-'diff-styleadded' => 'estilo $1 adicionado',
-'diff-added' => '$1 adicionado',
-'diff-changedto' => 'alterado para $1',
-'diff-movedoutof' => 'movido para fora de $1',
-'diff-styleremoved' => 'estilo $1 removido',
-'diff-removed' => '$1 removido',
-'diff-changedfrom' => 'alterado de $1',
-'diff-src' => 'fonte',
-'diff-withdestination' => 'com destino $1',
-'diff-with' => '&#32;com $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'largura',
-'diff-height' => 'altura',
-'diff-p' => "um '''parágrafo'''",
-'diff-blockquote' => "uma '''citação'''",
-'diff-h1' => "um '''cabeçalho (de nível 1)'''",
-'diff-h2' => "um '''cabeçalho (de nível 2)'''",
-'diff-h3' => "um '''cabeçalho (de nível 3)'''",
-'diff-h4' => "um '''cabeçalho (de nível 4)'''",
-'diff-h5' => "um '''cabeçalho (de nível 5)'''",
-'diff-pre' => "um '''bloco pré-formatado'''",
-'diff-div' => "uma '''divisão'''",
-'diff-ul' => "uma '''lista sem ordenação'''",
-'diff-ol' => "uma '''lista ordenada'''",
-'diff-li' => "um '''item de lista'''",
-'diff-table' => "uma '''tabela'''",
-'diff-tbody' => "um '''conteúdo de tabela'''",
-'diff-tr' => "uma '''linha'''",
-'diff-td' => "uma '''célula'''",
-'diff-th' => "um '''cabeçalho'''",
-'diff-br' => "uma '''quebra de linha'''",
-'diff-hr' => "uma '''linha horizontal'''",
-'diff-code' => "um '''bloco de código computacional'''",
-'diff-dl' => "uma '''lista de definições'''",
-'diff-dt' => "uma '''definição do termo'''",
-'diff-dd' => "uma '''definição'''",
-'diff-input' => "uma '''entrada de dados'''",
-'diff-form' => "um '''formulário'''",
-'diff-img' => "uma '''imagem'''",
-'diff-span' => "um '''''span'''''",
-'diff-a' => "uma '''ligação'''",
-'diff-i' => "'''itálico'''",
-'diff-b' => "'''negrito'''",
-'diff-strong' => "'''forte'''",
-'diff-em' => "'''ênfase'''",
-'diff-font' => "'''fonte'''",
-'diff-big' => "'''grande'''",
-'diff-del' => "'''apagado'''",
-'diff-tt' => "'''largura fixa'''",
-'diff-sub' => "'''subscrito'''",
-'diff-sup' => "'''sobrescrito'''",
-'diff-strike' => "'''riscado'''",
+'history-title' => 'Histórico de edições de "$1"',
+'difference' => '(Diferença entre revisões)',
+'lineno' => 'Linha $1:',
+'compareselectedversions' => 'Compare as versões selecionadas',
+'showhideselectedversions' => 'Mostrar/esconder versões selecionadas',
+'editundo' => 'desfazer',
+'diff-multi' => '({{PLURAL:$1|uma edição intermediária não está sendo exibida|$1 edições intermediárias não estão sendo exibidas}}.)',
# Search results
'searchresults' => 'Resultados de pesquisa',
@@ -1088,28 +1196,25 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
'searchresulttext' => 'Para mais informações de como pesquisar na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Você pesquisou por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
'searchsubtitleinvalid' => 'Você pesquisou por "$1"',
-'noexactmatch' => "'''Não existe uma página com o título \"\$1\".''' Você pode [[:\$1|criar tal página]].",
-'noexactmatch-nocreate' => "'''Não há uma página intitulada como \"\$1\".'''",
'toomanymatches' => 'Foram retornados muitos resultados. Por favor, tente um filtro de pesquisa diferente',
'titlematches' => 'Resultados nos títulos das páginas',
'notitlematches' => 'Nenhum título de página coincide',
'textmatches' => 'Resultados nos textos das páginas',
'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
-'prevn' => 'anteriores $1',
-'nextn' => 'próximos $1',
+'prevn' => 'anteriores {{PLURAL:$1|$1}}',
+'nextn' => 'próximos {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|resultado anterior|resultados anteriores}}',
'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
-'viewprevnext' => 'Ver ($1) ($2) ($3).',
+'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opções de pesquisa',
'searchmenu-exists' => "*'''Há uma página chamada \"[[\$1]]\" nesta wiki'''",
'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" nesta wiki!'''",
'searchhelp-url' => 'Help:Conteúdos',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue pelas páginas com este prefixo]]',
'searchprofile-articles' => 'Páginas de conteúdo',
-'searchprofile-articles-and-proj' => 'Páginas de conteúdo e do projeto',
-'searchprofile-project' => 'Páginas do projeto',
-'searchprofile-images' => 'Arquivos',
+'searchprofile-project' => 'Ajuda e páginas do Projeto',
+'searchprofile-images' => 'Multimídia',
'searchprofile-everything' => 'Tudo',
'searchprofile-advanced' => 'Avançado',
'searchprofile-articles-tooltip' => 'Pesquisar em $1',
@@ -1117,8 +1222,6 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
'searchprofile-images-tooltip' => 'Pesquisar arquivos',
'searchprofile-everything-tooltip' => 'Pesquisar em todo o conteúdo (incluindo páginas de discussão)',
'searchprofile-advanced-tooltip' => 'Pesquisar nos espaços nominais personalizados',
-'prefs-search-nsdefault' => 'Pesquisar usando as definições padrão:',
-'prefs-search-nscustom' => 'Pesquisar domínios personalizados:',
'search-result-size' => '$1 ({{PLURAL:$2|1 palavra|$2 palavras}})',
'search-result-score' => 'Relevância: $1%',
'search-redirect' => '(redirecionamento de $1)',
@@ -1131,11 +1234,12 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
'search-mwsuggest-disabled' => 'sem sugestões',
'search-relatedarticle' => 'Relacionado',
'mwsuggest-disable' => 'Desativar sugestões AJAX',
+'searcheverything-enable' => 'Procurar em todos os espaços nominais',
'searchrelated' => 'relacionados',
'searchall' => 'todos',
'showingresults' => "A seguir {{PLURAL:$1|é mostrado '''um''' resultado|são mostrados até '''$1''' resultados}}, iniciando no '''$2'''º.",
'showingresultsnum' => "A seguir {{PLURAL:$3|é mostrado '''um''' resultado|são mostrados '''$3''' resultados}}, iniciando com o '''$2'''º.",
-'showingresultstotal' => "Exibindo {{PLURAL:$4|o resultado '''$1''' de '''$3'''|os resultados '''$1 a $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resulado '''$1''' de '''$3'''|Resultados '''$1 - $2''' de '''$3'''}} para '''$4'''",
'nonefound' => "'''Nota''': apenas alguns espaços nominais são pesquisados por padrão. Tente utilizar o prefixo ''all:'' em sua busca, para pesquisar por todos os conteúdos desta wiki (inclusive páginas de discussão, predefinições etc), ou mesmo, utilizando o espaço nominal desejado como prefixo.",
'search-nonefound' => 'Não houve resultados para a pesquisa.',
'powersearch' => 'Pesquisa avançada',
@@ -1143,113 +1247,151 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
'powersearch-ns' => 'Pesquisar nos espaços nominais:',
'powersearch-redir' => 'Listar redirecionamentos',
'powersearch-field' => 'Pesquisar',
+'powersearch-togglelabel' => 'Selecionar:',
+'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'Nenhum',
'search-external' => 'Pesquisa externa',
'searchdisabled' => 'A busca em {{SITENAME}} se encontra desativada.
Você poderá pesquisar através do Google enquanto isso.
Note que os índices do sistema de busca externo poderão conter referências desatualizadas a {{SITENAME}}.',
+# Quickbar
+'qbsettings' => 'Configurações da Barra Rápida',
+'qbsettings-none' => 'Nenhuma',
+'qbsettings-fixedleft' => 'Fixo à esquerda',
+'qbsettings-fixedright' => 'Fixo à direita',
+'qbsettings-floatingleft' => 'Flutuando à esquerda',
+'qbsettings-floatingright' => 'Flutuando à direita',
+
# Preferences page
-'preferences' => 'Preferências',
-'mypreferences' => 'Minhas preferências',
-'prefs-edits' => 'Número de edições:',
-'prefsnologin' => 'Não autenticado',
-'prefsnologintext' => 'É necessário estar <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} autenticado]</span> para definir as suas preferências.',
-'prefsreset' => 'As preferências foram restauradas tal como se encontravam no banco de dados.',
-'qbsettings' => 'Configurações da Barra Rápida',
-'qbsettings-none' => 'Nenhuma',
-'qbsettings-fixedleft' => 'Fixo à esquerda',
-'qbsettings-fixedright' => 'Fixo à direita',
-'qbsettings-floatingleft' => 'Flutuando à esquerda',
-'qbsettings-floatingright' => 'Flutuando à direita',
-'changepassword' => 'Alterar senha',
-'skin' => 'Tema',
-'skin-preview' => 'Previsão',
-'math' => 'Matemática',
-'dateformat' => 'Formato da data',
-'datedefault' => 'Sem preferência',
-'datetime' => 'Data e hora',
-'math_failure' => 'Falhou ao verificar gramática',
-'math_unknown_error' => 'Erro desconhecido',
-'math_unknown_function' => 'Função desconhecida',
-'math_lexing_error' => 'Erro léxico',
-'math_syntax_error' => 'Erro de sintaxe',
-'math_image_error' => 'Falha na conversão para PNG. Verifique a instalação do latex, dvips, gs e convert',
-'math_bad_tmpdir' => 'Ocorreram problemas na criação ou escrita no diretório temporário math',
-'math_bad_output' => 'Ocorreram problemas na criação ou escrita no diretório de resultados math',
-'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
-'prefs-personal' => 'Perfil de usuário',
-'prefs-rc' => 'Mudanças recentes',
-'prefs-watchlist' => 'Lista de páginas vigiadas',
-'prefs-watchlist-days' => 'Dias a mostrar na lista de páginas vigiadas:',
-'prefs-watchlist-days-max' => '(no máximo 7 dias)',
-'prefs-watchlist-edits' => 'Número de edições mostradas na lista de páginas vigiadas expandida:',
-'prefs-watchlist-edits-max' => '(número máximo: 1000)',
-'prefs-misc' => 'Diversos',
-'prefs-resetpass' => 'Alterar senha',
-'saveprefs' => 'Salvar',
-'resetprefs' => 'Eliminar as alterações não-salvas',
-'restoreprefs' => 'Restaurar todas as configurações padrão',
-'textboxsize' => 'Opções de edição',
-'prefs-edit-boxsize' => 'Tamanho da janela de edição.',
-'rows' => 'Linhas:',
-'columns' => 'Colunas:',
-'searchresultshead' => 'Pesquisa',
-'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Linhas por resultado:',
-'contextchars' => 'Contexto por linha:',
-'stub-threshold' => 'Links para páginas de conteúdo aparecerão <a href="#" class="stub">desta forma</a> se elas possuírem menos de (bytes):',
-'recentchangesdays' => 'Dias a serem exibidos nas Mudanças recentes:',
-'recentchangesdays-max' => '(máximo: $1 {{PLURAL:$1|dia|dias}})',
-'recentchangescount' => 'Número de edições a serem exibidas nas mudanças recentes, históricos de páginas e páginas de registos, por padrão:',
-'savedprefs' => 'As suas preferências foram salvas.',
-'timezonelegend' => 'Fuso horário:',
-'timezonetext' => '¹Número de horas que o seu horário local difere do horário do servidor (UTC).',
-'localtime' => 'Horário local:',
-'timezoneselect' => 'Fuso horário:',
-'timezoneuseserverdefault' => 'Usa padrão do servidor',
-'timezoneuseoffset' => 'Outro (especifique diferença horária)',
-'timezoneoffset' => 'Diferença horária¹',
-'servertime' => 'Horário do servidor:',
-'guesstimezone' => 'Preencher a partir do navegador',
-'timezoneregion-africa' => 'África',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antártida',
-'timezoneregion-arctic' => 'Ártico',
-'timezoneregion-asia' => 'Ásia',
-'timezoneregion-atlantic' => 'Oceano Atlântico',
-'timezoneregion-australia' => 'Austrália',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceano Índico',
-'timezoneregion-pacific' => 'Oceano Pacífico',
-'allowemail' => 'Permitir email de outros usuários',
-'prefs-searchoptions' => 'Opções de busca',
-'prefs-namespaces' => 'Espaços nominais',
-'defaultns' => 'Pesquisar por padrão nestes espaços nominais:',
-'default' => 'padrão',
-'files' => 'Arquivos',
-'prefs-custom-css' => 'CSS personalizada',
-'prefs-custom-js' => 'JS personalizado',
+'preferences' => 'Preferências',
+'mypreferences' => 'Minhas preferências',
+'prefs-edits' => 'Número de edições:',
+'prefsnologin' => 'Não autenticado',
+'prefsnologintext' => 'É necessário estar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autenticado]</span> para definir as suas preferências.',
+'changepassword' => 'Alterar senha',
+'prefs-skin' => 'Tema',
+'skin-preview' => 'Previsão',
+'prefs-math' => 'Matemática',
+'datedefault' => 'Sem preferência',
+'prefs-datetime' => 'Data e hora',
+'prefs-personal' => 'Perfil de usuário',
+'prefs-rc' => 'Mudanças recentes',
+'prefs-watchlist' => 'Lista de páginas vigiadas',
+'prefs-watchlist-days' => 'Dias a mostrar na lista de páginas vigiadas:',
+'prefs-watchlist-days-max' => '(no máximo 7 dias)',
+'prefs-watchlist-edits' => 'Número de edições mostradas na lista de páginas vigiadas expandida:',
+'prefs-watchlist-edits-max' => '(número máximo: 1000)',
+'prefs-watchlist-token' => 'Senha para a lista de páginas vigiadas:',
+'prefs-misc' => 'Diversos',
+'prefs-resetpass' => 'Alterar senha',
+'prefs-email' => 'Opções de email',
+'prefs-rendering' => 'Layout',
+'saveprefs' => 'Salvar',
+'resetprefs' => 'Eliminar as alterações não-salvas',
+'restoreprefs' => 'Restaurar todas as configurações padrão',
+'prefs-editing' => 'Opções de edição',
+'prefs-edit-boxsize' => 'Tamanho da janela de edição.',
+'rows' => 'Linhas:',
+'columns' => 'Colunas:',
+'searchresultshead' => 'Pesquisa',
+'resultsperpage' => 'Resultados por página:',
+'contextlines' => 'Linhas por resultado:',
+'contextchars' => 'Contexto por linha:',
+'stub-threshold' => 'Links para páginas de conteúdo aparecerão <a href="#" class="stub">desta forma</a> se elas possuírem menos de (bytes):',
+'recentchangesdays' => 'Dias a serem exibidos nas Mudanças recentes:',
+'recentchangesdays-max' => '(máximo: $1 {{PLURAL:$1|dia|dias}})',
+'recentchangescount' => 'Número de edições a serem exibidas por padrão:',
+'prefs-help-recentchangescount' => 'Isto inclui mudanças recentes, histórico de páginas e registos.',
+'prefs-help-watchlist-token' => "O preenchimento deste campo com uma senha secreta irá gerar um ''feed'' RSS para a sua lista de páginas vigiadas.
+Qualquer um que conheça a senha deste campo será capaz de ler sua lista de páginas vigiadas, então escolha um valor seguro.
+Eis um valor gerado aleatoriamente que você pode usar: $1",
+'savedprefs' => 'As suas preferências foram salvas.',
+'timezonelegend' => 'Fuso horário:',
+'localtime' => 'Horário local:',
+'timezoneuseserverdefault' => 'Usa padrão do servidor',
+'timezoneuseoffset' => 'Outro (especifique diferença horária)',
+'timezoneoffset' => 'Diferença horária¹',
+'servertime' => 'Horário do servidor:',
+'guesstimezone' => 'Preencher a partir do navegador',
+'timezoneregion-africa' => 'África',
+'timezoneregion-america' => 'América',
+'timezoneregion-antarctica' => 'Antártida',
+'timezoneregion-arctic' => 'Ártico',
+'timezoneregion-asia' => 'Ásia',
+'timezoneregion-atlantic' => 'Oceano Atlântico',
+'timezoneregion-australia' => 'Austrália',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceano Índico',
+'timezoneregion-pacific' => 'Oceano Pacífico',
+'allowemail' => 'Permitir email de outros usuários',
+'prefs-searchoptions' => 'Opções de busca',
+'prefs-namespaces' => 'Espaços nominais',
+'defaultns' => 'Caso contrário pesquisar nestes espaços nominais:',
+'default' => 'padrão',
+'prefs-files' => 'Arquivos',
+'prefs-custom-css' => 'CSS personalizada',
+'prefs-custom-js' => 'JS personalizado',
+'prefs-reset-intro' => 'Você pode usar esta página para restaurar as suas preferências para os valores predefinidos do sítio.
+Esta ação não pode ser desfeita.',
+'prefs-emailconfirm-label' => 'Confirmação do e-mail:',
+'prefs-textboxsize' => 'Tamanho da janela de edição',
+'youremail' => 'Seu e-mail:',
+'username' => 'Nome de usuário:',
+'uid' => 'Número de identificação:',
+'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
+'prefs-registration' => 'Hora de registro:',
+'yourrealname' => 'Nome verdadeiro:',
+'yourlanguage' => 'Idioma:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Assinatura:',
+'prefs-help-signature' => 'Ao inserir comentários em páginas de discussão, assine-os colocando quatro tiles (<nowiki>~~~~</nowiki>) no fim dos comentários. Ao salvar, estes serão convertidos na sua assinatura mais a data e a hora da edição.',
+'badsig' => 'Assinatura inválida; verifique o código HTML utilizado.',
+'badsiglength' => 'A sua assinatura é muito longa.
+Ela deve ter menos de $1 {{PLURAL:$1|caractere|caracteres}}.',
+'yourgender' => 'Sexo:',
+'gender-unknown' => 'Não especificado',
+'gender-male' => 'Masculino',
+'gender-female' => 'Feminino',
+'prefs-help-gender' => 'Opcional: usado para endereçamento correto pelo software baseado no sexo. Esta informação será pública.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'O fornecimento de seu Nome verdadeiro é opcional, mas, caso decida o revelar, este será utilizado para lhe dar crédito pelo seu trabalho.',
+'prefs-help-email' => "O fornecimento de um endereço de ''e-mail'' é opcional, mas permite que uma nova senha lhe seja enviada caso você esqueça sua senha. Você pode ainda preferir deixar que os usuários entrem em contato consigo através de sua página de usuário ou discussão sem ter de revelar sua identidade.",
+'prefs-help-email-required' => 'O endereço de e-mail é requerido.',
+'prefs-info' => 'Informação básica',
+'prefs-i18n' => 'Internacionalização',
+'prefs-signature' => 'Assinatura',
+'prefs-dateformat' => 'Formato de data',
+'prefs-timeoffset' => 'Desvio horário',
+'prefs-advancedediting' => 'Opções avançadas',
+'prefs-advancedrc' => 'Opções avançadas',
+'prefs-advancedrendering' => 'Opções avançadas',
+'prefs-advancedsearchoptions' => 'Opções avançadas',
+'prefs-advancedwatchlist' => 'Opções avançadas',
+'prefs-display' => 'Opções de exibição',
+'prefs-diffs' => 'Diferenças',
# User rights
-'userrights' => 'Gestão de privilégios de usuários', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administrar grupos de usuários',
-'userrights-user-editname' => 'Forneça um nome de usuário:',
-'editusergroup' => 'Editar grupos de usuários',
-'editinguser' => "Modificando privilégios do usuário '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Editar grupos do usuário',
-'saveusergroups' => 'Salvar grupos do usuário',
-'userrights-groupsmember' => 'Membro de:',
-'userrights-groups-help' => 'É possível alterar os grupos em que este usuário se encontra:
+'userrights' => 'Gestão de privilégios de usuários',
+'userrights-lookup-user' => 'Administrar grupos de usuários',
+'userrights-user-editname' => 'Forneça um nome de usuário:',
+'editusergroup' => 'Editar grupos de usuários',
+'editinguser' => "Modificando privilégios do usuário '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Editar grupos do usuário',
+'saveusergroups' => 'Salvar grupos do usuário',
+'userrights-groupsmember' => 'Membro de:',
+'userrights-groupsmember-auto' => 'Membro implícito de:',
+'userrights-groups-help' => 'É possível alterar os grupos em que este usuário se encontra:
* Uma caixa de seleção selecionada significa que o usuário se encontra no grupo.
* Uma caixa de seleção desselecionada significa que o usuário não se encontra no grupo.
* Um * indica que não pode remover o grupo depois de o adicionar, ou vice-versa.',
-'userrights-reason' => 'Motivo:',
-'userrights-no-interwiki' => 'Você não tem permissão de alterar privilégios de usuários em outras wikis.',
-'userrights-nodatabase' => 'O banco de dados $1 não existe ou não é um banco de dados local.',
-'userrights-nologin' => 'Você precisa [[Special:UserLogin|autenticar-se]] como um administrador para especificar os privilégios de usuário.',
-'userrights-notallowed' => 'Sua conta não possui permissão para conceder privilégios a usuários.',
-'userrights-changeable-col' => 'Grupos que pode alterar',
-'userrights-unchangeable-col' => 'Grupos que não pode alterar',
+'userrights-reason' => 'Motivo:',
+'userrights-no-interwiki' => 'Você não tem permissão de alterar privilégios de usuários em outras wikis.',
+'userrights-nodatabase' => 'O banco de dados $1 não existe ou não é um banco de dados local.',
+'userrights-nologin' => 'Você precisa [[Special:UserLogin|autenticar-se]] como um administrador para especificar os privilégios de usuário.',
+'userrights-notallowed' => 'Sua conta não possui permissão para conceder privilégios a usuários.',
+'userrights-changeable-col' => 'Grupos que pode alterar',
+'userrights-unchangeable-col' => 'Grupos que não pode alterar',
# Groups
'group' => 'Grupo:',
@@ -1302,6 +1444,7 @@ Note que os índices do sistema de busca externo poderão conter referências de
'right-bigdelete' => 'Eliminar páginas com histórico grande',
'right-deleterevision' => 'Eliminar e restaurar revisões específicas de páginas',
'right-deletedhistory' => 'Ver entradas de histórico eliminadas, sem o texto associado',
+'right-deletedtext' => 'Ver texto removido e alterado entre revisões removidas',
'right-browsearchive' => 'Buscar páginas eliminadas',
'right-undelete' => 'Restaurar uma página',
'right-suppressrevision' => 'Rever e restaurar revisões ocultadas dos Sysops',
@@ -1315,6 +1458,8 @@ Note que os índices do sistema de busca externo poderão conter referências de
'right-editprotected' => 'Editar páginas protegidas (sem proteção em cascata)',
'right-editinterface' => 'Editar a interface de usuário',
'right-editusercssjs' => 'Editar os arquivos CSS e JS de outros usuários',
+'right-editusercss' => 'Editar os arquivos CSS de outros usuários',
+'right-edituserjs' => 'Editar os arquivos JS de outros usuários',
'right-rollback' => 'Reverter rapidamente o último usuário que editou uma página em particular',
'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
'right-noratelimit' => 'Não afetado pelos limites de velocidade de operação',
@@ -1331,6 +1476,8 @@ Note que os índices do sistema de busca externo poderão conter referências de
'right-siteadmin' => 'Bloquear e desbloquear o banco de dados',
'right-reset-passwords' => 'Redefinir a senha de outros usuários',
'right-override-export-depth' => 'Exportar páginas incluindo páginas ligadas até uma profundidade de 5',
+'right-versiondetail' => "Mostrar informação ampliada sobre a versão do ''software''.",
+'right-sendemail' => 'Enviar email a outros usuários',
# User rights log
'rightslog' => 'Registro de privilégios de usuário',
@@ -1380,6 +1527,15 @@ Note que os índices do sistema de busca externo poderão conter referências de
'recentchanges-legend' => 'Opções das mudanças recentes',
'recentchangestext' => 'Veja as mais novas mudanças na {{SITENAME}} nesta página.',
'recentchanges-feed-description' => 'Acompanhe as Mudanças recentes deste wiki por este feed.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova página',
+'recentchanges-label-newpage' => 'Esta edição criou uma nova página',
+'recentchanges-legend-minor' => '$1 - edição menor',
+'recentchanges-label-minor' => 'Esta é uma edição menor',
+'recentchanges-legend-bot' => '$1 - edição de robô',
+'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
+'recentchanges-legend-unpatrolled' => '$1 - edição não patrulhada',
+'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
@@ -1406,6 +1562,8 @@ Note que os índices do sistema de busca externo poderão conter referências de
# Recent changes linked
'recentchangeslinked' => 'Alterações relacionadas',
+'recentchangeslinked-feed' => 'Alterações relacionadas',
+'recentchangeslinked-toolbox' => 'Alterações relacionadas',
'recentchangeslinked-title' => 'Alterações relacionadas com "$1"',
'recentchangeslinked-noresult' => 'Não ocorreram alterações em páginas relacionadas no intervalo de tempo fornecido.',
'recentchangeslinked-summary' => "Esta página especial lista as alterações mais recentes de páginas que possuam um link a outra (ou de membros de uma categoria especificada).
@@ -1416,8 +1574,8 @@ Páginas que estejam em [[Special:Watchlist|sua lista de páginas vigiadas]] sã
# Upload
'upload' => 'Enviar arquivo',
'uploadbtn' => 'Enviar arquivo',
-'reupload' => 'Re-enviar',
'reuploaddesc' => 'Cancelar o envio e retornar ao formulário de upload',
+'upload-tryagain' => 'Enviar descrição modificada de arquivo',
'uploadnologin' => 'Não autenticado',
'uploadnologintext' => 'Você necessita estar [[Special:UserLogin|autenticado]] para enviar arquivos.',
'upload_directory_missing' => 'O diretório de upload ($1) não existe e não pôde ser criado pelo servidor.',
@@ -1449,6 +1607,7 @@ A [[Special:NewFiles|galeria de arquivos novos]] oferece uma listagem mais visua
'minlength1' => 'Os nomes de arquivos devem de ter pelo menos uma letra.',
'illegalfilename' => 'O arquivo "$1" possui caracteres que não são permitidos no título de uma página. Por favor, altere o nome do arquivo e tente carregar novamente.',
'badfilename' => 'O nome do arquivo foi alterado para "$1".',
+'filetype-mime-mismatch' => 'A extensão do arquivo não corresponde ao tipo MIME.',
'filetype-badmime' => 'Arquivos de tipo MIME "$1" não são permitidos de serem enviados.',
'filetype-bad-ie-mime' => 'Este arquivo não pode ser carregado porque o Internet Explorer o detectaria como "$1", que é um tipo de arquivo não permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' é um tipo de arquivo não desejado.
@@ -1470,7 +1629,6 @@ Para fazer com que ele apareça lá, você precisará que editá-lo manualmente.
* Nome do arquivo que está sendo enviado: '''<tt>[[:$1]]</tt>'''
* Nome do arquivo existente: '''<tt>[[:$2]]</tt>'''
Por gentileza, escolha um nome diferente.",
-'fileexists-thumb' => "<center>'''arquivo existente'''</center>",
'fileexists-thumbnail-yes' => "O arquivo aparenta ser uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail''). [[$1|thumb]]
Por gentileza, verifique o arquivo '''<tt>[[:$1]]</tt>'''.
Se o arquivo enviado é o mesmo do de tamanho original, não é necessário enviar uma versão de miniatura adicional.",
@@ -1484,6 +1642,7 @@ Se você ainda quer carregar o seu arquivo, por favor volte e use um novo nome.
'file-deleted-duplicate' => 'Um arquivo idêntico a este ([[$1]]) foi eliminado anteriormente. Verifique o motivo da eliminação de tal arquivo antes de prosseguir com o re-envio.',
'successfulupload' => 'Envio efetuado com sucesso',
'uploadwarning' => 'Aviso',
+'uploadwarning-text' => 'Por favor modifique a descrição do arquivo abaixo e tente novamente',
'savefile' => 'Salvar arquivo',
'uploadedimage' => 'enviou "[[$1]]"',
'overwroteimage' => 'foi enviada uma nova versão de "[[$1]]"',
@@ -1491,11 +1650,14 @@ Se você ainda quer carregar o seu arquivo, por favor volte e use um novo nome.
'uploaddisabledtext' => 'O envio de arquivos encontra-se desativado.',
'php-uploaddisabledtext' => 'O carregamento de arquivos via PHP está desativado. Por favor, verifique a configuração file_uploads.',
'uploadscripted' => 'Este arquivo contém HTML ou código que pode ser erradamente interpretado por um navegador web.',
-'uploadcorrupt' => 'O arquivo encontra-se corrompido ou tem uma extensão incorreta. Por gentileza, verifique o ocorrido e tente novamente.',
'uploadvirus' => 'O arquivo contém vírus! Detalhes: $1',
+'upload-source' => 'Arquivo de origem',
'sourcefilename' => 'Nome do arquivo de origem:',
+'sourceurl' => 'URL de origem:',
'destfilename' => 'Nome do arquivo de destino:',
'upload-maxfilesize' => 'Tamanho máximo do arquivo: $1',
+'upload-description' => 'Descrição do arquivo',
+'upload-options' => 'Opções de envio',
'watchthisupload' => 'Vigiar este arquivo',
'filewasdeleted' => 'Um arquivo com este nome foi carregado anteriormente e subsequentemente eliminado. Você precisa verificar o $1 antes de proceder ao carregamento novamente.',
'upload-wasdeleted' => "'''Atenção: Você está enviando um arquivo eliminado anteriormente.'''
@@ -1518,13 +1680,44 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- deixe esta linha exatamente como está -->',
-'upload-proto-error' => 'Protocolo incorreto',
-'upload-proto-error-text' => 'O envio de arquivos remotos requer endereços (URLs) que iniciem com <code>http://</code> ou <code>ftp://</code>.',
-'upload-file-error' => 'Erro interno',
-'upload-file-error-text' => 'Ocorreu um erro interno ao tentar criar um arquivo temporário no servidor.
+'upload-proto-error' => 'Protocolo incorreto',
+'upload-proto-error-text' => 'O envio de arquivos remotos requer endereços (URLs) que iniciem com <code>http://</code> ou <code>ftp://</code>.',
+'upload-file-error' => 'Erro interno',
+'upload-file-error-text' => 'Ocorreu um erro interno ao tentar criar um arquivo temporário no servidor.
Por gentileza, entre em contato com um [[Special:ListUsers/sysop|administrador]].',
-'upload-misc-error' => 'Erro desconhecido de envio',
-'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio. Por gentileza, verifique se o endereço (URL) é válido e acessível e tente novamente. Caso o problema persista, contacte um administrador de sistema.',
+'upload-misc-error' => 'Erro desconhecido de envio',
+'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio. Por gentileza, verifique se o endereço (URL) é válido e acessível e tente novamente. Caso o problema persista, contacte um administrador de sistema.',
+'upload-too-many-redirects' => 'A URL contém redirecionamentos demais',
+'upload-unknown-size' => 'Tamanho desconhecido',
+'upload-http-error' => 'Ocorreu um erro HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acesso negado',
+'img-auth-nopathinfo' => 'Falta PATH_INFO
+Seu servidor não está configurado para passar essa informação.
+Pode ser baseado em CGI e não suportar img_auth.
+Veja http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'O caminho requerido não está no directório de carregamento configurado.',
+'img-auth-badtitle' => 'Não é possível criar um título válido a partir de "$1".',
+'img-auth-nologinnWL' => 'Você não está logado e "$1" não está na lista branca.',
+'img-auth-nofile' => 'Arquivo "$1" não existe.',
+'img-auth-isdir' => 'Você está tentando acessar o diretório "$1".
+Somente acesso ao arquivo é permitido.',
+'img-auth-streaming' => "Realizando ''streaming'' de \"\$1\".",
+'img-auth-public' => 'A img_auth.php produz arquivos a partir de uma wiki privada.
+Esta wiki está configurada como uma wiki pública.
+Para melhor segurança, o img_auth.php está desativado.',
+'img-auth-noread' => 'Usuário não tem acesso para ler "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL inválida: $1',
+'http-invalid-scheme' => 'URLs que iniciam com o prefixo "$1" não são aceitas.',
+'http-request-error' => 'A requisição HTTP falhou devido a um erro desconhecido.',
+'http-read-error' => 'Erro de leitura HTTP.',
+'http-timed-out' => 'Esgotado o tempo de espera da requisição HTTP.',
+'http-curl-error' => 'Erro ao requisitar a URL: $1',
+'http-host-unreachable' => 'Não foi possível atingir a URL.',
+'http-bad-status' => 'Ocorreu um problema durante a requisição HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Não foi possível acessar a URL',
@@ -1533,6 +1726,7 @@ Por gentileza, entre em contato com um [[Special:ListUsers/sysop|administrador]]
'upload-curl-error28-text' => 'O site demorou muito tempo para responder. Por gentileza, verifique se o site está acessível, aguarde alguns momentos e tente novamente. Talvez você deseje fazer nova tentativa em um horário menos congestionado.',
'license' => 'Licença:',
+'license-header' => 'Licenciamento',
'nolicense' => 'Nenhuma selecionada',
'license-nopreview' => '(Previsão não disponível)',
'upload_source_url' => ' (um URL válido, publicamente acessível)',
@@ -1553,6 +1747,7 @@ Um clique sobre um cabeçalho de coluna altera a ordenação.',
'listfiles_count' => 'Versões',
# File description page
+'file-anchor-link' => 'Arquivo',
'filehist' => 'Histórico do arquivo',
'filehist-help' => 'Clique em uma data/horário para ver o arquivo tal como ele se encontrava em tal momento.',
'filehist-deleteall' => 'eliminar todas',
@@ -1567,6 +1762,7 @@ Um clique sobre um cabeçalho de coluna altera a ordenação.',
'filehist-dimensions' => 'Dimensões',
'filehist-filesize' => 'Tamanho do arquivo',
'filehist-comment' => 'Comentário',
+'filehist-missing' => 'Arquivo faltando',
'imagelinks' => 'Links para este arquivo',
'linkstoimage' => '{{PLURAL:$1|A página|As $1 páginas}} a seguir tem link para este arquivo:',
'linkstoimage-more' => 'Mais de $1 {{PLURAL:$1|página|páginas}} tem algum link para este arquivo.
@@ -1576,15 +1772,16 @@ Uma [[Special:WhatLinksHere/$2|listagem completa]] está disponível.',
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|mais links]] para este arquivo.',
'redirectstofile' => '{{PLURAL:$1|O seguinte arquivo redireciona|Os seguintes arquivos redirecionam}} para este arquivo:',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte arquivo é duplicado|Os seguintes arquivos são duplicados}} deste arquivo ([[Special:FileDuplicateSearch/$2|mais detalhes]]):',
-'sharedupload' => 'Este arquivo é do $1 e pode ser usado por outros projetos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Por favor, consulte a $1 para mais informações.',
-'shareduploadwiki-desc' => 'A descrição na sua $1 é mostrada abaixo.',
-'shareduploadwiki-linktext' => 'página de descrição de arquivo',
-'noimage' => 'Não existe nenhum arquivo com este nome, mas você pode $1.',
-'noimage-linktext' => 'carregar um',
+'sharedupload' => 'Este arquivo é do $1 e pode ser usado por outros projetos.',
+'sharedupload-desc-there' => 'Este arquivo é do $1 e pode ser utilizado por outros projetos.
+Por favor veja a [$2 página de descrição do arquivo] para mais informações.',
+'sharedupload-desc-here' => 'Este arquivo é do $1 e pode ser utilizado por outros projetos.
+A descrição na sua [$2 página de descrição de arquivo] é exibida abaixo.',
+'filepage-nofile' => 'Não existe nenhum arquivo com esse nome.',
+'filepage-nofile-link' => 'Não existe nenhum arquivo com este nome, mas você pode [$1 carregá-lo].',
'uploadnewversion-linktext' => 'Enviar uma nova versão deste arquivo',
-'shared-repo-from' => 'de $1', # $1 is the repository name
-'shared-repo' => 'um repositório compartilhado', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de $1',
+'shared-repo' => 'um repositório compartilhado',
# File reversion
'filerevert' => 'Reverter $1',
@@ -1613,6 +1810,7 @@ Uma [[Special:WhatLinksHere/$2|listagem completa]] está disponível.',
** Violação de direitos de autor
** Arquivo duplicado',
'filedelete-edit-reasonlist' => 'Editar motivos de eliminação',
+'filedelete-maintenance' => 'Eliminação e restauro de arquivos estão temporariamente desativados durante manutenção.',
# MIME search
'mimesearch' => 'Pesquisa MIME',
@@ -1633,7 +1831,7 @@ Uma [[Special:WhatLinksHere/$2|listagem completa]] está disponível.',
# Random page
'randompage' => 'Página aleatória',
-'randompage-nopages' => 'Não há páginas no espaço nominal "$1".',
+'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
# Random redirect
'randomredirect' => 'Redirecionamento aleatório',
@@ -1645,6 +1843,7 @@ Uma [[Special:WhatLinksHere/$2|listagem completa]] está disponível.',
'statistics-header-edits' => 'Estatísticas de edições',
'statistics-header-views' => 'Ver estatísticas',
'statistics-header-users' => 'Estatísticas dos usuários',
+'statistics-header-hooks' => 'Outras estatísticas',
'statistics-articles' => 'Páginas de conteúdo',
'statistics-pages' => 'Páginas',
'statistics-pages-desc' => 'Todas as páginas na wiki, incluindo páginas de discussão, redirecionamentos, etc.',
@@ -1673,8 +1872,8 @@ Entradas <s>riscadas</s> foram resolvidas.',
'brokenredirects' => 'Redirecionamentos quebrados',
'brokenredirectstext' => 'Os seguintes redirecionamentos ligam para páginas inexistentes:',
-'brokenredirects-edit' => '(editar)',
-'brokenredirects-delete' => '(eliminar)',
+'brokenredirects-edit' => 'editar',
+'brokenredirects-delete' => 'eliminar',
'withoutinterwiki' => 'Páginas sem interwikis de idiomas',
'withoutinterwiki-summary' => 'As seguintes páginas não possuem links para versões em outros idiomas:',
@@ -1781,16 +1980,17 @@ Você pode diminuir a lista escolhendo um tipo de registro, um nome de usuário
# Special:Categories
'categories' => 'Categorias',
-'categoriespagetext' => 'As seguintes categorias contém páginas ou multimédia.
-As [[Special:UnusedCategories|categorias não utilizadas]] não são exibidas nesta listagem.
-Veja também as [[Special:WantedCategories|categorias em falta]].',
+'categoriespagetext' => '{{PLURAL:$1|A seguinte categoria contém|As seguintes contém}} páginas ou mídia.
+[[Special:UnusedCategories|Categorias não utilizadas]] não são mostradas aqui.
+Veja também [[Special:WantedCategories|categorias pedidas]].',
'categoriesfrom' => 'Listar categorias começando por:',
'special-categories-sort-count' => 'ordenar por contagem',
'special-categories-sort-abc' => 'ordenar alfabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribuições de usuário eliminadas',
-'deletedcontributions-title' => 'Contribuições de usuário eliminadas',
+'deletedcontributions' => 'Contribuições de usuário eliminadas',
+'deletedcontributions-title' => 'Contribuições de usuário eliminadas',
+'sp-deletedcontributions-contribs' => 'contribuições',
# Special:LinkSearch
'linksearch' => 'Ligações externas',
@@ -1806,6 +2006,16 @@ Protocolos suportados: <tt>$1</tt>',
'listusersfrom' => 'Mostrar usuários começando em:',
'listusers-submit' => 'Exibir',
'listusers-noresult' => 'Não foram encontrados usuários para a forma pesquisada.',
+'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuários ativos',
+'activeusers-intro' => 'Esta é uma lista de usuários com algum tipo de atividade nos últimos $1 {{PLURAL:$1|dia|dias}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|edição|edições}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
+'activeusers-from' => 'Mostrar usuários começando em:',
+'activeusers-hidebots' => 'Esconder robôs',
+'activeusers-hidesysops' => 'Esconder administradores',
+'activeusers-noresult' => 'Nenhum usuário encontrado.',
# Special:Log/newusers
'newuserlogpage' => 'Registro de criação de usuários',
@@ -1816,17 +2026,23 @@ Protocolos suportados: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Conta criada automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Privilégios de grupo de usuários',
-'listgrouprights-summary' => 'O que segue é uma lista dos grupos de usuários definidos nesta wiki, com os seus privilégios de acessos associados.
+'listgrouprights' => 'Privilégios de grupo de usuários',
+'listgrouprights-summary' => 'O que segue é uma lista dos grupos de usuários definidos nesta wiki, com os seus privilégios de acessos associados.
Pode haver [[{{MediaWiki:Listgrouprights-helppage}}|informações adicionais]] sobre privilégios individuais.',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Privilégios',
-'listgrouprights-helppage' => 'Help:Privilégios de grupo',
-'listgrouprights-members' => '(lista de membros)',
-'listgrouprights-addgroup' => 'Podem adicionar {{PLURAL:$2|grupo|grupos}}: $1',
-'listgrouprights-removegroup' => 'Podem remover {{PLURAL:$2|grupo|grupos}}: $1',
-'listgrouprights-addgroup-all' => 'Podem adicionar todos os grupos',
-'listgrouprights-removegroup-all' => 'Podem remover todos os grupos',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Privilégio concedido</span>
+* <span class="listgrouprights-revoked">Privilégio revogado</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Privilégios',
+'listgrouprights-helppage' => 'Help:Privilégios de grupo',
+'listgrouprights-members' => '(lista de membros)',
+'listgrouprights-addgroup' => 'Podem adicionar {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-removegroup' => 'Podem remover {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Podem adicionar todos os grupos',
+'listgrouprights-removegroup-all' => 'Podem remover todos os grupos',
+'listgrouprights-addgroup-self' => 'Pode adicionar {{PLURAL:$2|grupo|grupos}} à própria conta: $1',
+'listgrouprights-removegroup-self' => 'Pode remover {{PLURAL:$2|grupo|grupos}} da própria conta: $1',
+'listgrouprights-addgroup-self-all' => 'Pode adicionar todos os grupos à própria conta',
+'listgrouprights-removegroup-self-all' => 'Pode remover todos os grupos da própria conta',
# E-mail user
'mailnologin' => 'Nenhum endereço de envio',
@@ -1898,7 +2114,7 @@ Modificações futuras em tal página e páginas de discussão a ela associadas
'enotif_lastvisited' => 'Consulte $1 para todas as alterações efetuadas desde a sua última visita.',
'enotif_lastdiff' => 'Acesse $1 para ver esta alteração.',
'enotif_anon_editor' => 'usuário anônimo $1',
-'enotif_body' => 'Caro $WATCHINGUSERNAME,
+'enotif_body' => 'Caro(a) $WATCHINGUSERNAME,
A página $PAGETITLE na {{SITENAME}} foi $CHANGEDORCREATED a $PAGEEDITDATE por $PAGEEDITOR; consulte $PAGETITLE_URL para a versão atual.
@@ -1911,15 +2127,19 @@ Contate o editor:
e-mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Não haverá mais notificações no caso de futuras alterações a não ser que visite esta página. Poderá também restaurar as bandeiras de notificação para todas as suas páginas vigiadas na sua lista de páginas vigiadas.
+Não haverá mais notificações no caso de futuras alterações a não ser que visite esta página.
+Você pode também reativar as notificações para todas as suas páginas vigiadas na sua lista de páginas vigiadas.
- O seu amigável sistema de notificação da {{SITENAME}}
+ O seu sistema de notificação amigável da {{SITENAME}}
--
-Para alterar as suas preferências da lista de páginas vigiados, visite
+Para alterar as configurações de sua lista de páginas vigiadas, visite
{{fullurl:Special:Watchlist/edit}}
-Contato e assistência
+Para retirar esta página de sua lista de páginas vigiadas, visite
+$UNWATCHURL
+
+Comentários e assistência:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1931,10 +2151,11 @@ Contato e assistência
'exblank' => 'página esvaziada',
'delete-confirm' => 'Eliminar "$1"',
'delete-legend' => 'Eliminar',
-'historywarning' => 'Aviso: A página que está prestes a eliminar possui um histórico:',
+'historywarning' => "'''Atenção:''' A página que você está prestes a eliminar possui um histórico com aproximadamente $1 {{PLURAL:$1|revisão|revisões}}:",
'confirmdeletetext' => 'Encontra-se prestes a eliminar permanentemente uma página ou uma imagem e todo o seu histórico.
Por favor, confirme que possui a intenção de fazer isto, que compreende as consequências e que encontra-se a fazer isto de acordo com as [[{{MediaWiki:Policy-url}}|políticas]] do projeto.',
'actioncomplete' => 'Ação completada',
+'actionfailed' => 'A ação falhou',
'deletedtext' => '"<nowiki>$1</nowiki>" foi eliminada.
Consulte $2 para um registro de eliminações recentes.',
'deletedarticle' => 'apagou "[[$1]]"',
@@ -1958,19 +2179,20 @@ Eliminá-la poderá causar problemas na base de dados de {{SITENAME}};
prossiga com cuidado.',
# Rollback
-'rollback' => 'Reverter edições',
-'rollback_short' => 'Reverter',
-'rollbacklink' => 'voltar',
-'rollbackfailed' => 'A reversão falhou',
-'cantrollback' => 'Não foi possível reverter a edição; o último contribuidor é o único autor desta página',
-'alreadyrolled' => 'Não foi possível reverter a última edição de [[:$1]] por [[User:$2|$2]] ([[User talk:$2|discussão]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Reverter edições',
+'rollback_short' => 'Reverter',
+'rollbacklink' => 'voltar',
+'rollbackfailed' => 'A reversão falhou',
+'cantrollback' => 'Não foi possível reverter a edição; o último contribuidor é o único autor desta página',
+'alreadyrolled' => 'Não foi possível reverter a última edição de [[:$1]] por [[User:$2|$2]] ([[User talk:$2|discussão]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
alguém já editou ou reverteu a página.
A última edição da página foi feita por [[User:$3|$3]] ([[User talk:$3|discussão]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "O sumário de edição era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
-'sessionfailure' => 'Foram detetados problemas com a sua sessão;
+'editcomment' => "O sumário de edição era: \"''\$1''\".",
+'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]',
+'revertpage-nouser' => 'Revertidas as edições de (nome de usuário removido) para a última revisão por [[User:$1|$1]]',
+'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
+'sessionfailure' => 'Foram detetados problemas com a sua sessão;
Esta ação foi cancelada como medida de proteção contra a intercepção de sessões.
Experimente usar o botão "Voltar" e atualizar a página de onde veio e tente novamente.',
@@ -1989,7 +2211,7 @@ Veja a [[Special:ProtectedPages|lista de páginas protegidas]] para uma listagem
'protectexpiry' => 'Expiração',
'protect_expiry_invalid' => 'O tempo de expiração fornecido é inválido.',
'protect_expiry_old' => 'O tempo de expiração fornecido se situa no passado.',
-'protect-unchain' => 'Desbloquear permissões de moção',
+'protect-unchain-permissions' => 'Desbloquear opções adicionais de proteção',
'protect-text' => "Você pode, nesta página, alterar o nível de proteção para '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Você não poderá alterar os níveis de proteção enquanto estiver bloqueado. Esta é a configuração atual para a página '''$1''':",
'protect-locked-dblock' => "Não é possível alterar os níveis de proteção, uma vez que a base de dados se encontra trancada.
@@ -2017,7 +2239,7 @@ Esta é a configuração atual para a página '''$1''':",
** Guerra de edições improdutiva
** Página bastante acessada",
'protect-edit-reasonlist' => 'Editar motivos de proteções',
-'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
'restriction-type' => 'Permissão:',
'restriction-level' => 'Nível de restrição:',
'minimum-size' => 'Tam. mínimo',
@@ -2057,6 +2279,7 @@ Em tais casos, deverá desselecionar ou reverter a ocultação da versão apagad
'undelete-nodiff' => 'Não foram encontradas edições anteriores.',
'undeletebtn' => 'Restaurar',
'undeletelink' => 'ver/restaurar',
+'undeleteviewlink' => 'visualizar',
'undeletereset' => 'Limpar',
'undeleteinvert' => 'Inverter seleção',
'undeletecomment' => 'Motivo:',
@@ -2094,19 +2317,23 @@ $1',
'contributions-title' => 'Contribuições do usuário $1',
'mycontris' => 'Minhas contribuições',
'contribsub2' => 'Para $1 ($2)',
-'nocontribs' => 'Não foram encontradas mudanças com este critério.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Não foram encontradas mudanças com este critério.',
'uctop' => ' (revisão atual)',
'month' => 'Mês (inclusive anteriores):',
'year' => 'Ano (inclusive anteriores):',
-'sp-contributions-newbies' => 'Mostrar só as contribuições das contas recentes',
-'sp-contributions-newbies-sub' => 'Para contas novas',
-'sp-contributions-newbies-title' => 'Contribuições de contas novas',
-'sp-contributions-blocklog' => 'Registro de bloqueios',
-'sp-contributions-logs' => 'registros',
-'sp-contributions-search' => 'Pesquisar contribuições',
-'sp-contributions-username' => 'Endereço de IP ou usuário:',
-'sp-contributions-submit' => 'Pesquisar',
+'sp-contributions-newbies' => 'Mostrar só as contribuições das contas recentes',
+'sp-contributions-newbies-sub' => 'Para contas novas',
+'sp-contributions-newbies-title' => 'Contribuições de contas novas',
+'sp-contributions-blocklog' => 'Registro de bloqueios',
+'sp-contributions-deleted' => 'contribuições eliminadas',
+'sp-contributions-logs' => 'registros',
+'sp-contributions-talk' => 'disc',
+'sp-contributions-userrights' => 'gerenciamento de privilégios de usuários',
+'sp-contributions-blocked-notice' => 'Este usuário atualmente está bloqueado. O registro de bloqueio mais recente é fornecido abaixo para referência:',
+'sp-contributions-search' => 'Pesquisar contribuições',
+'sp-contributions-username' => 'Endereço de IP ou usuário:',
+'sp-contributions-submit' => 'Pesquisar',
# What links here
'whatlinkshere' => 'Páginas afluentes',
@@ -2129,6 +2356,7 @@ $1',
# Block/unblock
'blockip' => 'Bloquear usuário',
+'blockip-title' => 'Bloquear usuário',
'blockip-legend' => 'Bloquear usuário',
'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso à escrita de um endereço específico de IP ou nome de usuário.
Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Preencha com um motivo específico a seguir (por exemplo, citando páginas que sofreram vandalismo).',
@@ -2151,7 +2379,7 @@ Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWik
'ipbenableautoblock' => 'Bloquear automaticamente o endereço de IP mais recente usado por este usuário e todos os IPs subseqüentes dos quais ele tentar editar',
'ipbsubmit' => 'Bloquear este usuário',
'ipbother' => 'Outro período:',
-'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
'ipbotheroption' => 'outro',
'ipbotherreason' => 'Outro motivo/motivo adicional:',
'ipbhidename' => 'Ocultar nome de usuário em edições e listas',
@@ -2180,9 +2408,11 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'ipblocklist-sh-tempblocks' => '$1 bloqueios temporários',
'ipblocklist-sh-addressblocks' => '$1 bloqueios de IP único',
'ipblocklist-submit' => 'Pesquisar',
+'ipblocklist-localblock' => 'Bloqueio local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
'blocklistline' => '$1, $2 bloqueou $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'expira em $1',
+'expiringblock' => 'expira em $1 às $2',
'anononlyblock' => 'anôn. apenas',
'noautoblockblock' => 'bloqueio automático desabilitado',
'createaccountblock' => 'criação de conta de usuário bloqueada',
@@ -2196,7 +2426,10 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'contribslink' => 'contribs',
'autoblocker' => 'Você foi automaticamente bloqueado, pois partilha um endereço de IP com "[[User:$1|$1]]". O motivo apresentado foi: "$2".',
'blocklogpage' => 'Registro de bloqueio',
-'blocklog-fulllog' => 'Registro completo de bloqueios',
+'blocklog-showlog' => 'Este usuário já foi bloqueado anteriormente.
+O registro de bloqueio é fornecido abaixo, para referência:',
+'blocklog-showsuppresslog' => 'O usuário foi bloqueado e ocultado anteriormente.
+O registro de supressão é fornecido abaixo para referência:',
'blocklogentry' => '"[[$1]]" foi bloqueado com um tempo de expiração de $2 $3',
'reblock-logentry' => 'modificou parâmetros de bloqueio para [[$1]] com um tempo de expiração de $2 $3',
'blocklogtext' => 'Este é um registro de ações de bloqueio e desbloqueio.
@@ -2217,9 +2450,11 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de
'ipb_already_blocked' => '"$1" já se encontra bloqueado',
'ipb-needreblock' => '== Já se encontra bloqueado ==
$1 já se encontra bloqueado. Deseja alterar as configurações?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
'ipb_cant_unblock' => 'Erro: Bloqueio com ID $1 não encontrado. Poderá já ter sido desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O IP $1 não se encontra bloqueado de forma direta, não podendo ser desbloqueado deste modo. Se encontra bloqueado como parte do "range" $2, o qual pode ser desbloqueado.',
'ip_range_invalid' => 'Gama de IPs inválida.',
+'ip_range_toolarge' => 'Intervalos de bloqueio maiores do que /$1 não são permitidos',
'blockme' => 'Bloquear-me',
'proxyblocker' => 'Bloqueador de proxy',
'proxyblocker-disabled' => 'Esta função está desabilitada.',
@@ -2228,6 +2463,7 @@ $1 já se encontra bloqueado. Deseja alterar as configurações?',
'sorbsreason' => 'O seu endereço IP encontra-se listado como proxy aberto pela DNSBL utilizada por {{SITENAME}}.',
'sorbs_create_account_reason' => 'O seu endereço de IP encontra-se listado como proxy aberto na DNSBL utilizada por {{SITENAME}}. Você não pode criar uma conta',
'cant-block-while-blocked' => 'Você não pode bloquear outros usuários enquanto estiver bloqueado.',
+'cant-see-hidden-user' => 'O usuário que você está tentando bloquear já está bloqueado ou oculto. Como você não possui privilégio de ocultar usuários, você não pode ver ou editar o bloqueio desse usuário.',
# Developer tools
'lockdb' => 'Trancar banco de dados',
@@ -2266,6 +2502,7 @@ Isto pode ser uma mudança drástica e inesperada para uma página popular; por
Nestes casos, você terá que mover ou mesclar a página manualmente, se assim desejar.",
'movearticle' => 'Mover página',
+'moveuserpage-warning' => "'''Aviso:''' Você irá mover uma página de usuário. Note que apenas a página será movida, ''sem'' alterar o nome do usuário.",
'movenologin' => 'Não autenticado',
'movenologintext' => 'Você precisa ser um usuário registrado e [[Special:UserLogin|autenticado]] para poder mover uma página.',
'movenotallowed' => 'Você não possui permissão para mover páginas.',
@@ -2276,7 +2513,7 @@ Nestes casos, você terá que mover ou mesclar a página manualmente, se assim d
'move-watch' => 'Vigiar esta página',
'movepagebtn' => 'Mover página',
'pagemovedsub' => 'Página movida com sucesso',
-'movepage-moved' => '\'\'\'"$1" foi movida para "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" foi movida para "$2"\'\'\'',
'movepage-moved-redirect' => 'Um redirecionamento foi criado.',
'movepage-moved-noredirect' => 'A criação de um redirecionamento foi suprimida.',
'articleexists' => 'Uma página com este título já existe, ou o título que escolheu é inválido.
@@ -2317,6 +2554,14 @@ A página de destino ("[[:$1]]") já existe. Deseja eliminá-la de modo a poder
'imageinvalidfilename' => 'O nome do arquivo alvo é inválido',
'fix-double-redirects' => 'Atualizar todos os redirecionamentos que apontem para o título original',
'move-leave-redirect' => 'Criar um redirecionamento',
+'protectedpagemovewarning' => "'''Atenção:''' Esta página foi protegida de modo que apenas usuários com privilégio de administrador possam movê-la.
+A última entrada no histórico é fornecida abaixo para referência:",
+'semiprotectedpagemovewarning' => "''Nota:''' Esta página foi protegida de modo que apenas usuários registrados possam movê-la.
+A última entrada no histórico é fornecida abaixo para referência:",
+'move-over-sharedrepo' => '=== Arquivo existente ===
+[[:$1]] existe em um repositório compartilhado. Mover um arquivo para este título irá sobrescrever o arquivo compartilhado.',
+'file-exists-sharedrepo' => 'O nome de arquivo escolhido já está em uso em um repositório compartilhado.
+Por favor, escolha outro nome.',
# Export
'export' => 'Exportação de páginas',
@@ -2338,15 +2583,21 @@ Se desejar, pode utilizar uma ligação (por exemplo, [[{{#Special:Export}}/{{Me
'export-pagelinks' => 'Incluir páginas ligadas até uma profundidade de:',
# Namespace 8 related
-'allmessages' => 'Todas as mensagens de sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Texto padrão',
-'allmessagescurrent' => 'Texto atual',
-'allmessagestext' => 'Esta é uma lista de todas as mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
+'allmessages' => 'Todas as mensagens de sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Texto padrão',
+'allmessagescurrent' => 'Texto atual',
+'allmessagestext' => 'Esta é uma lista de todas as mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
Acesse [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] caso deseje contribuir para traduções do MediaWiki feitas para uso geral.',
-'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
-'allmessagesfilter' => 'Filtro de nome de mensagem:',
-'allmessagesmodified' => 'Mostrar apenas modificados',
+'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtrar por estado de personalização:',
+'allmessages-filter-unmodified' => 'Não modificadas',
+'allmessages-filter-all' => 'Todas',
+'allmessages-filter-modified' => 'Modificadas',
+'allmessages-prefix' => 'Filtrar por prefixo:',
+'allmessages-language' => 'Idioma:',
+'allmessages-filter-submit' => 'Ir',
# Thumbnails
'thumbnail-more' => 'Ampliar',
@@ -2356,6 +2607,9 @@ Acesse [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'djvu_no_xml' => 'Não foi possível acessar o XML do arquivo DjVU',
'thumbnail_invalid_params' => 'Parâmetros de miniatura inválidos',
'thumbnail_dest_directory' => 'Não foi possível criar o diretório de destino',
+'thumbnail_image-type' => 'Tipo de imagem não suportado',
+'thumbnail_gd-library' => 'Configuração da biblioteca GD incompleta: função $1 não encontrada',
+'thumbnail_image-missing' => 'Arquivo aparentemente inexistente: $1',
# Special:Import
'import' => 'Importar páginas',
@@ -2419,6 +2673,7 @@ Todas as acções de importação transwiki são registradas no [[Special:Log/im
'tooltip-ca-viewsource' => 'Esta página está protegida; você pode exibir seu código, no entanto.',
'tooltip-ca-history' => 'Edições anteriores desta página.',
'tooltip-ca-protect' => 'Proteger esta página',
+'tooltip-ca-unprotect' => 'Desproteger esta página',
'tooltip-ca-delete' => 'Apagar esta página',
'tooltip-ca-undelete' => 'Restaurar edições feitas a esta página antes da eliminação',
'tooltip-ca-move' => 'Mover esta página',
@@ -2429,6 +2684,7 @@ Todas as acções de importação transwiki são registradas no [[Special:Log/im
'tooltip-search-fulltext' => 'Procurar por páginas contendo este texto',
'tooltip-p-logo' => 'Página principal',
'tooltip-n-mainpage' => 'Visitar a página principal',
+'tooltip-n-mainpage-description' => 'Visitar a página principal',
'tooltip-n-portal' => 'Sobre o projeto',
'tooltip-n-currentevents' => 'Informação temática sobre eventos atuais',
'tooltip-n-recentchanges' => 'A lista de mudanças recentes nesta wiki.',
@@ -2479,6 +2735,7 @@ Todas as acções de importação transwiki são registradas no [[Special:Log/im
'chick.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Chique */',
'simple.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Simples */',
'modern.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Moderno */',
+'vector.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */',
# Metadata
'nodublincore' => 'Os metadados RDF para Dublin Core estão desabilitados neste servidor.',
@@ -2488,10 +2745,12 @@ Todas as acções de importação transwiki são registradas no [[Special:Log/im
# Attribution
'anonymous' => '{{PLURAL:$1|Usuário anônimo|Usuários anônimos}} da {{SITENAME}}',
'siteuser' => '{{GENDER:$2|um utilizador|uma utilizadora|um utilizador}} da {{SITENAME}} ($1)',
-'lastmodifiedatby' => 'Esta página foi modificada pela última vez às $2 de $1 por $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'usuário anônimo $1 da {{SITENAME}}',
+'lastmodifiedatby' => 'Esta página foi modificada pela última vez às $2 de $1 por $3.',
'othercontribs' => 'Baseado no trabalho de $1.',
'others' => 'outros',
'siteusers' => '{{PLURAL:$2|um usuário|$2 usuários}} da {{SITENAME}} ($1)',
+'anonusers' => '{{PLURAL:$2|usuário anônimo|usuários anônimos}} da {{SITENAME}} ($1)',
'creditspage' => 'Créditos da página',
'nocredits' => 'Não há informações disponíveis sobre os créditos desta página.',
@@ -2530,11 +2789,22 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
'mw_math_modern' => 'Recomendado para navegadores modernos',
'mw_math_mathml' => 'MathML se possível (experimental)',
+# Math errors
+'math_failure' => 'Falhou ao verificar gramática',
+'math_unknown_error' => 'Erro desconhecido',
+'math_unknown_function' => 'Função desconhecida',
+'math_lexing_error' => 'Erro léxico',
+'math_syntax_error' => 'Erro de sintaxe',
+'math_image_error' => 'Falha na conversão para PNG. Verifique a instalação do latex, dvips, gs e convert',
+'math_bad_tmpdir' => 'Ocorreram problemas na criação ou escrita no diretório temporário math',
+'math_bad_output' => 'Ocorreram problemas na criação ou escrita no diretório de resultados math',
+'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
+
# Patrolling
'markaspatrolleddiff' => 'Marcar como verificado',
'markaspatrolledtext' => 'Marcar esta página como verificada',
'markedaspatrolled' => 'Marcado como verificado',
-'markedaspatrolledtext' => 'A revisão selecionada foi marcada como verificada.',
+'markedaspatrolledtext' => 'A revisão selecionada de [[:$1]] foi marcada como patrulhada.',
'rcpatroldisabled' => 'Edições verificadas nas Mudanças Recentes desativadas',
'rcpatroldisabledtext' => 'A funcionalidade de Edições verificadas nas Mudanças Recentes está atualmente desativada.',
'markedaspatrollederror' => 'Não é possível marcar como verificado',
@@ -2564,13 +2834,10 @@ $1',
'previousdiff' => '← Edição anterior',
'nextdiff' => 'Edição posterior →',
-# Visual comparison
-'visual-comparison' => 'Comparação visual',
-
# Media information
'mediawarning' => "'''Aviso''': Este tipo de arquivo pode conter código malicioso.
Executá-lo poderá comprometer a segurança do seu sistema.",
-'imagemaxsize' => 'Limitar imagens nas páginas de descrição a:',
+'imagemaxsize' => "Limite de tamanho de imagem:<br />''(para páginas de descrição de arquivos)''",
'thumbsize' => 'Tamanho de miniaturas:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
'file-info' => '(tamanho: $1, tipo MIME: $2)',
@@ -2579,6 +2846,8 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
'svg-long-desc' => '(arquivo SVG, de $1 × $2 pixels, tamanho: $3)',
'show-big-image' => 'Resolução completa',
'show-big-image-thumb' => '<small>Tamanho desta previsão: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'cíclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
# Special:NewFiles
'newimages' => 'Galeria de novos arquivos',
@@ -2612,7 +2881,7 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Largura',
@@ -2739,14 +3008,14 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-unknowndate' => 'Data desconhecida',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Espelhamento horizontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotacionado em 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Espelhamento vertical', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotacionado em 90º em sentido anti-horário e espelhado verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotacionado em 90° no sentido horário', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotacionado em 90° no sentido horário e espelhado verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotacionado 90° no sentido anti-horário', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Espelhamento horizontal',
+'exif-orientation-3' => 'Rotacionado em 180°',
+'exif-orientation-4' => 'Espelhamento vertical',
+'exif-orientation-5' => 'Rotacionado em 90º em sentido anti-horário e espelhado verticalmente',
+'exif-orientation-6' => 'Rotacionado em 90° no sentido horário',
+'exif-orientation-7' => 'Rotacionado em 90° no sentido horário e espelhado verticalmente',
+'exif-orientation-8' => 'Rotacionado 90° no sentido anti-horário',
'exif-planarconfiguration-1' => 'formato irregular',
'exif-planarconfiguration-2' => 'formato plano',
@@ -2868,7 +3137,7 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-gpsmeasuremode-2' => 'Medição bidimensional',
'exif-gpsmeasuremode-3' => 'Medição tridimensional',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Quilómetros por hora',
'exif-gpsspeed-m' => 'Milhas por hora',
'exif-gpsspeed-n' => 'Nós',
@@ -2887,6 +3156,7 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'watchlistall2' => 'todas',
'namespacesall' => 'todas',
'monthsall' => 'todos',
+'limitall' => 'todas',
# E-mail address confirmation
'confirmemail' => 'Confirmar endereço de E-mail',
@@ -2907,21 +3177,21 @@ O mailer retornou: $1',
'confirmemail_loggedin' => 'O seu endereço de e-mail foi agora confirmado.',
'confirmemail_error' => 'Alguma coisa correu mal ao guardar a sua confirmação.',
'confirmemail_subject' => '{{SITENAME}} confirmação de endereço de e-mail',
-'confirmemail_body' => 'Alguém, provavelmente você com o endereço de IP $1,
+'confirmemail_body' => 'Alguém, provavelmente você, com o endereço de IP $1,
registrou uma conta "$2" com este endereço de e-mail em {{SITENAME}}.
-Para confirmar que esta conta realmente é sua, e para activar
+Para confirmar que esta conta realmente é sua, e para ativar
as funcionalidades de e-mail em {{SITENAME}},
abra o seguinte endereço no seu navegador:
$3
-Caso este *não* seja você, siga o seguinte endereço
+Se você *não* registrou a conta, siga a seguinte ligação
para cancelar a confirmação do endereço de e-mail:
$5
-Este código de confirmação irá expirar a $4.',
+Este código de confirmação irá expirar em $4.',
'confirmemail_invalidated' => 'Confirmação de endereço de e-mail cancelada',
'invalidateemail' => 'Cancelar confirmação de e-mail',
@@ -3015,7 +3285,7 @@ Você também pode [[Special:Watchlist/edit|editar a lista da maneira convencion
'duplicate-defaultsort' => 'Aviso: A chave de ordenação padrão "$2" sobrepõe-se à anterior chave de ordenação padrão "$1".',
# Special:Version
-'version' => 'Versão', # Not used as normal message but as header for the special page itself
+'version' => 'Versão',
'version-extensions' => 'Extensões instaladas',
'version-specialpages' => 'Páginas especiais',
'version-parserhooks' => 'Hooks do analisador (parser)',
@@ -3029,7 +3299,7 @@ Você também pode [[Special:Watchlist/edit|editar a lista da maneira convencion
'version-skin-extension-functions' => 'Funções de extensão de skins',
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => 'Versão',
+'version-version' => '(Versão $1)',
'version-license' => 'Licença',
'version-software' => 'Software instalado',
'version-software-product' => 'Produto',
@@ -3109,4 +3379,15 @@ Entre com o nome de arquivo sem fornecer o prefixo "{{ns:file}}:".',
'dberr-outofdate' => 'Note que os seus índices relativos ao nosso conteúdo podem estar desatualizados.',
'dberr-cachederror' => 'A seguinte página é uma cópia em cache da página pedida e pode não ser atual.',
+# HTML forms
+'htmlform-invalid-input' => 'Existem problemas com alguns dos dados introduzidos',
+'htmlform-select-badoption' => 'O valor que você especificou não é uma opção válida.',
+'htmlform-int-invalid' => 'O valor que você especificou não é um inteiro.',
+'htmlform-float-invalid' => 'O valor que você especificou não é um número.',
+'htmlform-int-toolow' => 'O valor que você especificou está abaixo do mínimo de $1',
+'htmlform-int-toohigh' => 'O valor que você especificou está acima do máximo de $1',
+'htmlform-submit' => 'Enviar',
+'htmlform-reset' => 'Desfazer alterações',
+'htmlform-selectorother-other' => 'Outros',
+
);
diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php
index fb002065..4263d1bc 100644
--- a/languages/messages/MessagesQqq.php
+++ b/languages/messages/MessagesQqq.php
@@ -51,6 +51,7 @@
* @author McDutchie
* @author Meno25
* @author MichaelFrey
+ * @author Mihai
* @author Mormegil
* @author Mpradeep
* @author Najami
@@ -65,6 +66,7 @@
* @author Prima klasy4na
* @author Purodha
* @author Raymond
+ * @author Ryan Schmidt
* @author SPQRobin
* @author Sanbec
* @author Sborsody
@@ -125,6 +127,7 @@ This is the toolbar: [[Image:Toolbar.png]]",
'tog-enotifminoredits' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
'tog-enotifrevealaddr' => 'Toggle option used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
'tog-shownumberswatching' => 'Toggle option used in [[Special:Preferences]], in the section for recent changes. When this option is activated, the entries in recent changes includes the number of users who watch pages.',
+'tog-oldsig' => 'Used in [[Special:Preferences]], tab User profile.',
'tog-fancysig' => 'In user preferences under the signature box',
'tog-externaleditor' => "[[Special:Preferences]], tab 'Edit'. Offers user to use an external editor by default.",
'tog-externaldiff' => "[[Special:Preferences]], tab 'Edit'. Offers user to use an external diff program by default.",
@@ -156,6 +159,15 @@ This is the toolbar: [[Image:Toolbar.png]]",
{{Identical|Browser default}}',
+# Font style option in Special:Preferences
+'editfont-style' => 'Used in [[Special:Preferences]], tab Editing.',
+'editfont-default' => 'Option used in [[Special:Preferences]], tab Editing.
+
+{{identical|Browser default}}',
+'editfont-monospace' => 'Option used in [[Special:Preferences]], tab Editing.',
+'editfont-sansserif' => 'Option used in [[Special:Preferences]], tab Editing.',
+'editfont-serif' => 'Option used in [[Special:Preferences]], tab Editing.',
+
# Dates
'sunday' => 'Name of the day of the week.',
'monday' => 'Name of the day of the week.',
@@ -212,7 +224,7 @@ This is the toolbar: [[Image:Toolbar.png]]",
'category_header' => 'In category description page',
'category-media-header' => 'In category description page',
'category-empty' => 'The text displayed in category page when that category is empty',
-'hidden-category-category' => 'Name of the category where hidden categories will be listed.', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Name of the category where hidden categories will be listed.',
'category-subcat-count' => 'This message is displayed at the top of a category page showing the number of pages in the category.
* $1: number of subcategories shown
@@ -236,39 +248,91 @@ This is the toolbar: [[Image:Toolbar.png]]",
* $1: number of files shown',
'listingcontinuesabbrev' => 'Shown in contiuation of each first letter group.
See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.',
+'index-category' => 'Name of the category where pages with the <nowiki>__INDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [http://www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
+'noindex-category' => 'Name of the category where pages with the <nowiki>__NOINDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [http://www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
'linkprefix' => '{{optional}}',
'mainpagetext' => 'Along with {{msg|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.',
'mainpagedocfooter' => 'Along with {{msg|mainpagetext}}, the text you will see on the Main Page when your wiki is installed.
This might be a good place to put information about <nowiki>{{GRAMMAR:}}</nowiki>. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/fi]] for an example. For languages having grammatical distinctions and not having an appropriate <nowiki>{{GRAMMAR:}}</nowiki> software available, a suggestion to check and possibly amend the messages having <nowiki>{{SITENAME}}</nowiki> may be valuable. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/ksh]] for an example.',
-'about' => '{{Identical|About}}',
-'article' => "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+'about' => '{{Identical|About}}',
+'article' => "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
{{Identical|Content page}}",
-'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
-'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
+'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
+'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
{{Identical|Cancel}}',
+'moredotdotdot' => '{{Identical|More...}}',
+'mytalk' => 'In the personal urls page section - right upper corner.',
+'anontalk' => 'Link to the talk page appearing in [[mw:Help:Navigation#User_Links|user links]] for each anonymous users when [[mw:Manual:$wgShowIPinHeader|$wgShowIPinHeader]] is true.',
+'navigation' => '{{Identical|Navigation}}',
+'and' => 'The translation for "and" appears in the [[Special:Version]] page, between the last two items of a list. If a comma is needed, add it at the beginning without a gap between it and the "&". <nowiki>&#32;</nowiki> is a blank space, one character long. Please leave it as it is.
+
+This can also appear in the credits page if the credits feature is enabled,for example [http://translatewiki.net/wiki/Support&action=credits the credits of the support page]. (To view any credits page type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar.)
+
+{{Identical|And}}',
+
+# Cologne Blue skin
'qbfind' => 'Alternative for "search" as used in Cologne Blue skin.
{{Identical|Find}}',
'qbedit' => '{{Identical|Edit}}',
'qbmyoptions' => '{{Identical|My pages}}',
'qbspecialpages' => '{{Identical|Special pages}}',
-'moredotdotdot' => '{{Identical|More...}}',
-'mytalk' => 'In the personal urls page section - right upper corner.',
-'anontalk' => 'Link to the talk page appearing in [[mw:Help:Navigation#User_Links|user links]] for each anonymous users when [[mw:Manual:$wgShowIPinHeader|$wgShowIPinHeader]] is true.',
-'navigation' => '{{Identical|Navigation}}',
-'and' => 'The translation for "and" appears in the [[Special:Version]] page, between the last two items of a list. If a comma is needed, add it at the beginning without a gap between it and the "&". <nowiki>&#32;</nowiki> is a blank space, one character long. Please leave it as it is.
+'faqpage' => "FAQ is short for ''frequently asked questions''. This page is only linked on some of the old skins, not in Monobook or Modern.
-This can also appear in the credits page if the credits feature is enabled,for example [http://translatewiki.net/wiki/Support&action=credits the credits of the support page]. (To view any credits page type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar.)
+{{doc-important|Do not translate <tt>Project:</tt> part.}}",
-{{Identical|And}}',
+# Vector skin
+'vector-action-addsection' => 'Used in the Vector skin. See for example http://translatewiki.net/wiki/Talk:Main_Page?useskin=vector',
+'vector-action-delete' => 'Used in the Vector skin, as the name of a tab at the top of the page. See for example http://translatewiki.net/wiki/Main_Page?useskin=vector
+
+{{Identical|Delete}}',
+'vector-action-move' => 'Used in the Vector skin, on the tabs at the top of the page. See for example http://translatewiki.net/wiki/Talk:Main_Page?useskin=vector
+
+{{Identical|Move}}',
+'vector-action-protect' => 'Tab at top of page, in vector skin
+
+{{Identical|Protect}}',
+'vector-action-undelete' => 'Tab at top of page, in vector skin.
+{{Identical|Undelete}}',
+'vector-action-unprotect' => 'Tab at top of page, in vector skin.
-# Metadata in edit box
-'metadata_help' => '{{Identical|Metadata}}',
+{{Identical|Unprotect}}',
+'vector-namespace-category' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Category:Translatewiki.net?useskin=vector
+
+{{Identical|Category}}',
+'vector-namespace-help' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Help:Rollback?useskin=vector',
+'vector-namespace-image' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/File:Tournesol.png?useskin=vector
+
+{{Identical|File}}',
+'vector-namespace-main' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Main_Page?useskin=vector
+{{Identical|Page}}',
+'vector-namespace-mediawiki' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/MediaWiki:Vector-namespace-mediawiki?useskin=vector
+{{Identical|Message}}',
+'vector-namespace-project' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Project:About?useskin=vector',
+'vector-namespace-special' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Special:SpecialPages?useskin=vector',
+'vector-namespace-talk' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Talk:Main_Page?useskin=vector
+{{Identical|Discussion}}',
+'vector-namespace-template' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Template:Identical?useskin=vector
+{{Identical|Template}}',
+'vector-namespace-user' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/User:FuzzyBot?useskin=vector
+{{Identical|User page}}',
+'vector-view-create' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Foo?useskin=vector
+{{Identical|Create}}',
+'vector-view-edit' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Main_Page?useskin=vector
+{{Identical|Edit}}',
+'vector-view-history' => 'Tab label in the Vector skin. See for example http://translatewiki.net/wiki/Main_Page?useskin=vector
+{{Identical|View history}}',
+'vector-view-view' => 'Tab label in the Vector skin (verb). See for example http://translatewiki.net/w/i.php?title=Main_Page&useskin=vector',
+'vector-view-viewsource' => 'Tab label in the Vector skin.
+{{Identical|View source}}',
+'actions' => '{{Identical|Action}}',
+'namespaces' => '{{Identical|Namespace}}',
+'variants' => 'Used by the Vector skin.',
'errorpagetitle' => 'Message shown in browser title bar when encountering error operation.
@@ -346,7 +410,7 @@ Also used as title of [[Special:Search]] page in [[Special:SpecialPages]].
* $1: date
* $2: time
-See also [[MediaWiki:Lastmodifiedatby/{{SUBPAGENAME}}]].', # $1 date, $2 time
+See also [[MediaWiki:Lastmodifiedatby/{{SUBPAGENAME}}]].',
'jumpto' => '"Jump to" navigation links. Hidden by default in monobook skin. The format is: {{int:jumpto}} [[MediaWiki:Jumptonavigation/{{SUBPAGENAME}}|{{int:jumptonavigation}}]], [[MediaWiki:Jumptosearch/{{SUBPAGENAME}}|{{int:jumptosearch}}]].',
'jumptonavigation' => 'Part of the "jump to" navigation links. Hidden by default in monobook skin. The format is: [[MediaWiki:Jumpto/{{SUBPAGENAME}}|{{int:jumpto}}]] {{int:jumptonavigation}}, [[MediaWiki:Jumptosearch/{{SUBPAGENAME}}|{{int:jumptosearch}}]].
@@ -366,7 +430,6 @@ See also [[MediaWiki:Lastmodifiedatby/{{SUBPAGENAME}}]].', # $1 date, $2 time
'aboutpage' => 'Used as the target of the link that appears at the footer of every page on the wiki (in most of the skins) and leads to the page that contains the site description. Therefore the content should be the same with the page name of the site description page. Only the message in the [[mw:Manual:$wgLanguageCode|site language]] ([[MediaWiki:Aboutpage]]) is used. The link label is {{msg-mw|aboutsite}}.
{{doc-important|Do not translate "Project:" part, for this is the namespace prefix.}}',
-'copyrightpagename' => '{{doc-important|Do not change <nowiki>{{SITENAME}}</nowiki>}}',
'copyrightpage' => '{{doc-important|Do not change <nowiki>{{ns:project}}</nowiki>}}
{{Identical|Copyright}}',
@@ -379,9 +442,6 @@ See also [[MediaWiki:Lastmodifiedatby/{{SUBPAGENAME}}]].', # $1 date, $2 time
'edithelp' => 'This is the text that appears on the editing help link that is near the bottom of the editing page',
'edithelppage' => 'The help page displayed when a user clicks on editing help link which is present on the right of Show changes button.
{{doc-important|Do not change <tt>Help:</tt> part.}}',
-'faqpage' => "FAQ is short for ''frequently asked questions''. This page is only linked on some of the old skins, not in Monobook or Modern.
-
-{{doc-important|Do not translate <tt>Project:</tt> part.}}",
'helppage' => 'The link destination used by default in the sidebar, and in {{msg|noarticletext}}.
{{doc-important|Do not change <tt>Help:</tt> part.}}
{{Identical|HelpContent}}',
@@ -530,6 +590,9 @@ HTML markup cannot be used.
[http://translatewiki.net/w/i.php?title=Translating:Tasks&diff=372398&oldid=371789000 Click here] to see an example of such an error message.',
'readonly_lag' => 'Error message displayed when the database is locked.',
'internalerror' => '{{Identical|Internal error}}',
+'fileappenderrorread' => '"Append" is a computer procedure, explained on [http://en.wikipedia.org/wiki/Append Wikipedia].
+
+$1 is a filename, I think.',
'badtitle' => 'The page title when a user requested a page with invalid page name. The content will be {{msg-mw|badtitletext}}.',
'badtitletext' => 'The message shown when a user requested a page with invalid page name. The page title will be {{msg-mw|badtitle}}.',
'perfcachedts' => 'Used on pages that list page lists for which the displayed data is cached. Parameters:
@@ -577,6 +640,9 @@ HTML markup cannot be used.
'loginprompt' => 'A small notice in the log in form.',
'userlogin' => 'Name of special page [[Special:UserLogin]] where a user can log in or click to create a user account.
{{Identical|Log in / create account}}',
+'userloginnocreate' => 'A variant of {{msg-mw|Userlogin}} when the user is not allowed to create a new account.
+
+{{Identical|Log in}}',
'logout' => '{{Identical|Log out}}',
'userlogout' => '{{Identical|Log out}}',
'notloggedin' => 'This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.
@@ -591,33 +657,8 @@ HTML markup cannot be used.
{{Identical|Log in}}',
'createaccountmail' => 'Button text for creating a new account and sending the new password to the specified e-mail address directly, as used on [[Special:UserLogin/signup]] if creating accounts by e-mail is allowed.',
-'youremail' => 'Label of the e-mail text box of the "E-mail options" section of "Special:Preferences".
-
-{{Identical|E-mail}}',
-'username' => '{{Identical|Username}}',
-'uid' => '{{Identical|User ID}}',
-'prefs-memberingroups' => 'This message is shown on [[Special:Preferences]], first tab. See also {{msg-mw|prefs-memberingroups-type}}.',
-'yourrealname' => 'Used in [[Special:Preferences]], first tab.
-{{Identical|Real name}}',
-'yourlanguage' => 'Used in [[Special:Preferences]], first tab.
-{{Identical|Language}}',
-'yourvariant' => 'Used in [[Special:Preferences]], first tab, when the wiki content language has variants only.
-{{optional}}',
-'yournick' => 'Used in [[Special:Preferences]], first tab.
-
-{{Identical|Signature}}',
-'badsig' => 'Error message displayed when entering invalid signature in user preferences',
-'badsiglength' => 'Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that is too long. Parameter $1 is the maximum number of characters that is allowed in a signature (multi-byte characters are counted as one character).',
-'yourgender' => 'Used in [[Special:Preferences]], first tab.
-{{Identical|Gender}}',
-'gender-unknown' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name is not to be made public, or cannot be determined, or matches none of the other choices preset in the select.',
-'gender-male' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "male" for those languages having a "normal" male grammatical gender.
-{{Identical|Male}}',
-'gender-female' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "female" for those languages having a "normal" female grammatical gender.
-{{Identical|Female}}',
-'email' => '{{Identical|E-mail}}',
-'prefs-help-realname' => 'In user preferences.',
-'prefs-help-email' => 'Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
+'createaccounterror' => 'Parameters:
+* $1 is an error message',
'nocookiesnew' => "This message is displayed when a new account was successfully created, but the browser doesn't accept cookies.",
'nocookieslogin' => "This message is displayed when someone tried to login, but the browser doesn't accept cookies.",
'loginsuccesstitle' => 'The title of the page saying that you are logged in. The content of the page is the message "[[MediaWiki:Loginsuccess/{{SUBPAGENAME}}]]".',
@@ -626,6 +667,7 @@ HTML markup cannot be used.
<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
'nosuchuser' => 'Displayed when trying to log in with an unexisting username. When you are not allowed to create an account, the message {{msg|nosuchusershort}} is displayed.',
'nosuchusershort' => "Displayed when trying to log in with an unexisting username. This message is only shown when you can't create an account, otherwise the message {{msg|nosuchusershort}} is displayed.",
+'login-userblocked' => 'This message supports GENDER, username is available in $1.',
'wrongpasswordempty' => 'Error message displayed when entering a blank password',
'passwordtooshort' => 'This message is shown at
@@ -679,10 +721,11 @@ Parameters:
'resetpass-submit-loggedin' => 'Button on [[Special:ResetPass]] to submit new password.
{{Identical|Change password}}',
+'resetpass-submit-cancel' => '{{Identical|Cancel}}
+
+Used on [[Special:ResetPass]]',
'resetpass-wrong-oldpass' => 'Error message shown on [[Special:Resetpass]] when the old password is not valid.',
'resetpass-temp-password' => 'The label of the input box for the temporary password (received by e-mail) on the form displayed after logging in with a temporary password.',
-'resetpass-logentry' => 'Log entry.
-* $1 is a link to a user page.',
# Edit page toolbar
'bold_sample' => 'This is the sample text that you get when you press the first button on the left on the edit toolbar.
@@ -784,9 +827,14 @@ Parameters:
'noarticletext' => 'This is the message that you get if you search for a term that has not yet got any entries on the wiki.
See also {{msg-mw|Noarticletext-nopermission}}.',
+'noarticletext-nopermission' => 'See also {{msg-mw|Noarticletext}}.',
'userpage-userdoesnotexist' => 'Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki',
+'userpage-userdoesnotexist-view' => 'Shown in user pages of non existing users. See for example [http://translatewiki.net/wiki/User:Foo User:Foo].',
+'blocked-notice-logextract' => 'Parameters:
+* $1 is the name of the blocked user (optional). Can be used for GENDER.',
'clearyourcache' => 'Text at the top of .js/.css pages',
-'usercssjsyoucanpreview' => "Text displayed on every css/js page. The 'Show preview' part should be the same as {{msg-mw|showpreview}} (or you can use <nowiki>{{int:showpreview}}</nowiki>).",
+'usercssyoucanpreview' => "Text displayed on every css page. The 'Show preview' part should be the same as {{msg-mw|showpreview}} (or you can use <nowiki>{{int:showpreview}}</nowiki>).",
+'userjsyoucanpreview' => 'Text displayed on every js page.',
'updated' => '{{Identical|Updated}}',
'previewnote' => 'Note displayed when clicking on Show preview',
'editing' => "Shown as page title when editing a page. \$1 is the name of the page that is being edited. Example: \"''Editing Main Page''\".",
@@ -797,6 +845,8 @@ See also {{msg-mw|Noarticletext-nopermission}}.',
'copyrightwarning' => 'Copyright warning displayed under the edit box in editor',
'longpagewarning' => 'Warning displayed when trying to edit a long page',
'longpageerror' => 'Warning displayed when trying to save a text larger than the maximum size allowed',
+'protectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
+'semiprotectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected aginst creation.',
'templatesused' => 'Displayed below the page when editing it. It indicates a list of templates which are used on that page.',
'templatesusedpreview' => 'Used in editor when displaying a preview.',
@@ -805,12 +855,14 @@ See also {{msg-mw|Noarticletext-nopermission}}.',
'template-semiprotected' => 'Used on [[Special:ProtectedPages]]. Appears in brackets after listed page titles which are semi-protected.',
'hiddencategories' => "This message is shown below the edit form, like you have a section ''\"Templates used on this page\"''.",
'edittools' => 'This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a javascript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
+'sectioneditnotsupported-title' => 'Page title of special page, which presumably appears when someone tries to edit a section, and section editing is disabled. Explanation of section editing on [http://meta.wikimedia.org/wiki/Help:Section_editing#Section_editing meta].',
+'sectioneditnotsupported-text' => 'I think this is the text of an error message, which presumably appears when someone tries to edit a section, and section editing is disabled. Explanation of section editing on [http://meta.wikimedia.org/wiki/Help:Section_editing#Section_editing meta].',
'permissionserrorstext-withaction' => '* $1 is the number of reasons that were found why the action cannot be performed.
* $2 is one of the action-* messages (for example {{msg|action-edit}}).
Please report at [[Support]] if you are unable to properly translate this message. Also see [[bugzilla:14246]]',
-'recreate-deleted-warn' => 'Warning shown when creating a page which has already been deleted. See for example [[Test]].',
-'deleted-notice' => 'Shown on top of a deleted page in normal view modus ([http://translatewiki.net/wiki/Test example]).',
+'recreate-moveddeleted-warn' => 'Warning shown when creating a page which has already been deleted. See for example [[Test]].',
+'moveddeleted-notice' => 'Shown on top of a deleted page in normal view modus ([http://translatewiki.net/wiki/Test example]).',
# Parser/template warnings
'expensive-parserfunction-warning' => 'On some (expensive) [[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. <code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times it may be used. This is an error message shown when the limit is exceeded.
@@ -819,6 +871,9 @@ Please report at [[Support]] if you are unable to properly translate this messag
* $2 is the allowed number of parser function calls.',
'expensive-parserfunction-category' => 'This message is used as a category name for a category where pages are placed automatically if they contain too many calls to expensive parser functions.',
'post-expand-template-inclusion-category' => 'When templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.',
+'language-converter-depth-warning' => 'Error message shown when a page uses too deeply nested language conversion syntax
+
+* <tt>$1</tt> is the value of the depth limit',
# "Undo" feature
'undo-success' => 'Text on special page to confirm edit revert. You arrive on this page by clicking on the "undo" link on a revision history special page.
@@ -835,13 +890,22 @@ Please report at [[Support]] if you are unable to properly translate this messag
# History pages
'viewpagelogs' => 'Link displayed in history of pages',
'currentrev' => '{{Identical|Current revision}}',
-'currentrev-asof' => 'The text appears at the right side when comparing 2 different edits of the same page. For example: [http://translatewiki.net/w/i.php?title=FreeCol%3AIntegerAboveZero%2Fca&diff=788645&oldid=788644]',
-'revisionasof' => "Used on a difference page when comparing different versions of a page or when viewing an non-current version of a page. \$1 is the date/time at which the revision was created. Example: \"''Revision as of 14:44, 24 January 2008''\".",
+'currentrev-asof' => 'Used on a difference page when comparing the current versions of a page with each other. See {{msg-mw|Revisionasof}} for the message for non-current version.
+* $1 is a date and time
+* $2 is a date (optional)
+* $3 is a time (optional)',
+'revisionasof' => 'Used on a difference page when comparing different versions of a page or when viewing an non-current version of a page. See {{msg-mw|Currentrev-asof}} for the message for the current version.
+* $1 is the date/time at which the revision was created. Example: "\'\'Revision as of 14:44, 24 January 2008\'\'".
+* $2 is the date at which the revision was created.
+* $3 is the time at which the revision was created.',
'revision-info' => 'Appears just below the page title when an old version of the page is being viewed.
-* $1 indicates the date and time of that revision
-* $2 the author of the revision
-* (optional) $3 is the revision ID', # Additionally available: $3: revision id
+* $1: date and time of revision
+* $2: a series of links: to author of the revision, his talk page, etc.
+* (optional) $3: revision ID
+* (optional) $4: date of revision
+* (optional) $5: time of revision
+* (optional) $6: author of revision, for GENDER use',
'currentrevisionlink' => '{{Identical|Current revision}}',
'cur' => 'Link in page history',
'next' => 'Link in page history
@@ -856,9 +920,6 @@ Please report at [[Support]] if you are unable to properly translate this messag
{{Identical|Last}}",
'histlegend' => 'Text in history page. Refers to {{msg-mw|cur}}, {{msg-mw|last}}, and {{msg-mw|minoreditletter}}.',
'history-fieldset-title' => 'Fieldset label in the edit history pages.',
-'deletedrev' => 'When comparing deleted revisions for sysops
-
-{{Identical|Deleted}}',
'histfirst' => 'Used in page history.',
'histlast' => 'Used in page history.',
'historyempty' => 'Text in page history for empty page revisions
@@ -867,87 +928,159 @@ Please report at [[Support]] if you are unable to properly translate this messag
# Revision feed
'history-feed-item-nocomment' => "Title for each revision when viewing the RSS/Atom feed for a page history:
-
-'''$1''' - user name
-
-'''$2''' - date/time", # user at time
+* '''$1''' - user name,
+* '''$2''' - date/time,
+* '''$3''' - date,
+* '''$4''' - time.",
# Revision deletion
-'rev-delundel' => 'Link in page history for oversight (see also {{msg-mw|rev-showdeleted}})',
-'revisiondelete' => '{{RevisionDelete}}
+'rev-deleted-text-unhide' => 'This message is very similar to {{msg-mw|rev-suppressed-unhide-diff}}. Parameters:
+* $1 is a HTML link to the diff',
+'rev-suppressed-unhide-diff' => 'This message is very similar to {{msg-mw|rev-deleted-unhide-diff}} and to {{msg-mw|rev-suppressed-text-unhide}}. Parameters:
+* $1 is a HTML link to the diff',
+'rev-delundel' => 'Link in page history for oversight (see also {{msg-mw|rev-showdeleted}})',
+'rev-showdeleted' => 'Link in page history for oversight (see also {{msg-mw|rev-delundel}})
+{{Identical|Show}}',
+'revisiondelete' => '{{RevisionDelete}}
It is the page title of [[Special:RevisionDelete]].',
-'revdelete-nooldid-title' => '{{RevisionDelete}}',
-'revdelete-nooldid-text' => '{{RevisionDelete}}',
-'revdelete-selected' => '{{RevisionDelete}}
+'revdelete-nooldid-title' => '{{RevisionDelete}}',
+'revdelete-nooldid-text' => '{{RevisionDelete}}',
+'revdelete-show-file-confirm' => 'A confirmation message shown on Special:Revisiondelete when the request does not contain a valid token (e.g. when a user clicks a link received in mail).
+
+* <code>$1</code> is a file name
+* <code>$2</code> is a date
+* <code>$3</code> is a time
+
+{{identical|Are you sure you want to view the deleted revision of the file...}}',
+'revdelete-show-file-submit' => 'Reply to {{msg-mw|Revdelete-show-file-confirm}}.
+
+{{Identical|Yes}}',
+'revdelete-selected' => '{{RevisionDelete}}
[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'logdelete-selected' => '{{RevisionDelete}}',
-'revdelete-text' => '{{RevisionDelete}}
+'logdelete-selected' => '{{RevisionDelete}}',
+'revdelete-text' => '{{RevisionDelete}}
This is the introduction explaining the feature.',
-'revdelete-legend' => '{{RevisionDelete}}
+'revdelete-confirm' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature.
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
+'revdelete-legend' => '{{RevisionDelete}}
[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-text' => 'Option for oversight. This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature.
+'revdelete-hide-text' => 'Option for oversight. This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature.
[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-name' => 'Option for oversight',
-'revdelete-hide-comment' => 'Option for oversight. {{RevisionDelete}}
+'revdelete-hide-image' => 'Option for <del>oversight</del> [[:mw:RevisionDelete|RevisionDelete]] feature.',
+'revdelete-hide-name' => 'Option for oversight',
+'revdelete-hide-comment' => 'Option for oversight. {{RevisionDelete}}
[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-user' => 'Option for oversight. {{RevisionDelete}}
+'revdelete-hide-user' => 'Option for oversight. {{RevisionDelete}}
[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-restricted' => 'Option for oversight.',
-'revdelete-suppress' => 'Option for oversight',
-'revdelete-hide-image' => 'Option for <del>oversight</del> [[:mw:RevisionDelete|RevisionDelete]] feature.',
-'revdelete-unsuppress' => '{{RevisionDelete}}',
-'revdelete-log' => '{{Identical|Reason}}
+'revdelete-hide-restricted' => 'Option for oversight.',
+'revdelete-radio-same' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.',
+'revdelete-radio-set' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.
+
+{{Identical|Yes}}',
+'revdelete-radio-unset' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.
+
+{{Identical|No}}',
+'revdelete-suppress' => 'Option for oversight',
+'revdelete-unsuppress' => '{{RevisionDelete}}',
+'revdelete-log' => '{{Identical|Reason}}
Log comment text for oversight. {{RevisionDelete}}
[[File:RevDelete Special-RevisionDelete (r60428).png|thumb|331px||Screenshot of the interface]]',
-'revdelete-submit' => '{{RevisionDelete}}
-This is the submit button on [[Special:RevisionDelete]].',
-'revdelete-logentry' => '{{RevisionDelete}}
+'revdelete-submit' => '{{RevisionDelete}}
+This is the submit button on [[Special:RevisionDelete]].
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
+'revdelete-logentry' => '{{RevisionDelete}}
This is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for page revisions. It is followed by the message {{msg|revdelete-log-message}} in brackets.
The parameter $1 is the page name.
The name of the user doing this task appears before this message.',
-'logdelete-logentry' => '{{RevisionDelete}}
+'logdelete-logentry' => '{{RevisionDelete}}
This is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for log events. It is followed by the message {{msg|logdelete-log-message}} in brackets.
The parameter $1 is the log name in brackets.
The name of the user who did this task appears before this message.',
-'revdelete-success' => "{{RevisionDelete}}
+'revdelete-success' => "{{RevisionDelete}}
Possible alternative text - 'Restrictions on the revision visibility were successfully changed.'",
-'logdelete-success' => "{{RevisionDelete}}
+'revdelete-failure' => "{{RevisionDelete}}
+
+Possible alternative text - 'Restrictions on the revision visibility could not be changed'",
+'logdelete-success' => "{{RevisionDelete}}
Possible alternative message - 'Restrictions on log entry visibility successfully set.'",
-'revdel-restore' => '{{RevisionDelete}}',
-'pagehist' => 'Links to page history at Special:RevisionDelete header together with links to the logs and Special:Undelete.',
-'deletedhist' => 'Links to Special:Undelete at Special:RevisionDelete header together with links to the logs and page history.',
-'revdelete-content' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the content of a revision or event.
+'logdelete-failure' => "{{RevisionDelete}}
+
+Possible alternative message - 'Restrictions could not be set on the visibility of the log entry.'",
+'revdel-restore' => '{{RevisionDelete}}',
+'pagehist' => 'Links to page history at Special:RevisionDelete header together with links to the logs and Special:Undelete.',
+'deletedhist' => 'Links to Special:Undelete at Special:RevisionDelete header together with links to the logs and page history.',
+'revdelete-content' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the content of a revision or event.
{{Identical|Content}}',
-'revdelete-summary' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the edit summary of a revision or event.',
-'revdelete-uname' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the username for a revision or event.
+'revdelete-summary' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the edit summary of a revision or event.',
+'revdelete-uname' => 'This message is used as parameter $1 in {{msg|revdelete-hid}} and {{msg|revdelete-unhid}} when hiding or unhiding the username for a revision or event.
{{Identical|Username}}',
-'revdelete-restricted' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when setting visibility restrictions for administrators.',
-'revdelete-unrestricted' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when removing visibility restrictions for administrators.',
-'revdelete-hid' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when hiding revisions, and {{msg|logdelete-log-message}} when hiding information in the log entry about hiding revisions.
+'revdelete-restricted' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when setting visibility restrictions for administrators.',
+'revdelete-unrestricted' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when removing visibility restrictions for administrators.',
+'revdelete-hid' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when hiding revisions, and {{msg|logdelete-log-message}} when hiding information in the log entry about hiding revisions.
Parameter $1 is either {{msg|revdelete-content}} (when hiding the page content), {{msg|revdelete-summary}} (when hiding the edit summary), {{msg|revdelete-uname}} (when hiding the user name), or a combination of these three messages.',
-'revdelete-unhid' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when unhiding revisions, and {{msg|logdelete-log-message}} when unhiding information in the log entry about unhiding revisions.
+'revdelete-unhid' => 'This message is used as parameter $1 in {{msg|revdelete-log-message}} when unhiding revisions, and {{msg|logdelete-log-message}} when unhiding information in the log entry about unhiding revisions.
Parameter $1 is either {{msg|revdelete-content}} (when unhiding the page content), {{msg|revdelete-summary}} (when unhiding the edit summary), {{msg|revdelete-uname}} (when unhiding the user name), or a combination of these three messages.',
-'revdelete-log-message' => 'This log message is used together with {{msg|revdelete-logentry}} in the deletion or suppression logs when changing visibility restrictions for page revisions.
+'revdelete-log-message' => 'This log message is used together with {{msg|revdelete-logentry}} in the deletion or suppression logs when changing visibility restrictions for page revisions.
*Parameter $1 is either {{msg|revdelete-hid}} (when hiding data), {{msg|revdelete-unhid}} (when unhiding data), {{msg|revdelete-restricted}} (when applying restrictions for sysops), {{msg|revdelete-unrestricted}} (when removing restrictions for sysops), or a combination of those messages.
*Parameter $2 is the number of revisions for which the restrictions are changed.
Please note that the parameters in a log entry will appear in the log only in the default language of the wiki. View [[Special:Log]] for examples on translatewiki.net with English default language.',
-'logdelete-log-message' => 'This log message appears in brackets after the message {{msg|logdelete-logentry}} in the deletion or suppression logs when changing the visibility of a log entry for events. For a brief description of the process of changing the visibility of events and their log entries see this [http://www.mediawiki.org/wiki/RevisionDelete mediawiki explanation].
+'logdelete-log-message' => 'This log message appears in brackets after the message {{msg|logdelete-logentry}} in the deletion or suppression logs when changing the visibility of a log entry for events. For a brief description of the process of changing the visibility of events and their log entries see this [http://www.mediawiki.org/wiki/RevisionDelete mediawiki explanation].
*Parameter $1 is either {{msg|revdelete-hid}} (when hiding data), {{msg|revdelete-unhid}} (when unhiding data), {{msg|revdelete-restricted}} (when applying restrictions for sysops), {{msg|revdelete-unrestricted}} (when removing restrictions for sysops), or a combination of those messages.
*Parameter $2 is the number of events for which the restrictions are changed.
Please note that the parameters in a log entry will appear in the log only in the default language of the wiki. View [[Special:Log]] for examples on translatewiki.net with English default language.',
+'revdelete-hide-current' => 'Parameters:
+* $1 is a date
+* $2 is a time',
+'revdelete-show-no-access' => '{{RevisionDelete}}
+Parameters:
+* $1 is a date
+* $2 is a time',
+'revdelete-modify-no-access' => '{{RevisionDelete}}
+Parameters:
+* $1 is a date
+* $2 is a time',
+'revdelete-modify-missing' => '{{RevisionDelete}}
+* $1 is a revision ID',
+'revdelete-no-change' => '{{RevisionDelete}}
+Parameters:
+* $1 is a date
+* $2 is a time',
+'revdelete-concurrent-change' => '{{RevisionDelete}}
+Parameters:
+* $1 is a date
+* $2 is a time',
+'revdelete-only-restricted' => '{{RevisionDelete}}
+Parameters:
+*$1 - date
+*$2 - time',
+'revdelete-otherreason' => '{{Identical|Other/additional reason}}
+{{RevisionDelete}}
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
+'revdelete-reasonotherlist' => '{{Identical|Other reason}}
+{{RevisionDelete}}
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
+'revdelete-edit-reasonlist' => '{{Identical|Edit delete reasons}}
+{{RevisionDelete}}
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
# Suppression log
'suppressionlog' => 'Title of the suppression log. Shown in the drop down menu at [[Special:log]] and as header of [[Special:log/suppress]].',
@@ -980,187 +1113,232 @@ Please note that the parameters in a log entry will appear in the log only in th
'mergelogpagetext' => 'Description of the [http://translatewiki.net/w/i.php?title=Special%3ALog&type=merge&user=&page=&year=&month=-1 merge log], on the log. The associated [[Special:MergeHistory|Merge]] special page is not enabled by default.',
# Diffs
-'history-title' => 'Displayed as page title when you click on the "history" tab. The parameter $1 is the normal page title.',
-'difference' => 'Displayed under the title when viewing the difference between two or more edits.',
-'lineno' => 'Message used when comparing different versions of a page (diff). $1 is a line number.',
-'compareselectedversions' => 'Used as button in history pages.',
-'visualcomparison' => '{{Identical|Visual comparison}}',
-'editundo' => 'Undo link when viewing diffs
+'history-title' => 'Displayed as page title when you click on the "history" tab. The parameter $1 is the normal page title.',
+'difference' => 'Displayed under the title when viewing the difference between two or more edits.',
+'lineno' => 'Message used when comparing different versions of a page (diff). $1 is a line number.',
+'compareselectedversions' => 'Used as button in history pages.',
+'showhideselectedversions' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu.',
+'editundo' => 'Undo link when viewing diffs
{{Identical|Undo}}',
-'diff-multi' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive.",
-'diff-src' => '{{Identical|Source}}',
-'diff-with' => '* "<code><nowiki>&amp;#32;</nowiki></code>" is a forced space; leave it in if your language uses spaces
-* $1 is a name of a HTML attribute (for example <code>style</code> or <code>class</code>)
-* $2 is the value of the attribute (for example <code>background:red;</code> in <code>style="background:red;"</code>)
-Used in conjunction with {{msg-mw|diff-with-additional}} and {{msg-mw|diff-with-final}} in the head position before a {{msg-mw|comma-separator}} separated list.',
-'diff-with-additional' => '{{optional}}
-
-* $1 is a name of a HTML attribute (for example <code>style</code> or <code>class</code>)
-* $2 is the value of the attribute (for example <code>background:red;</code> in <code>style="background:red;"</code>)
-Used, possibly repeatedly, in a {{msg-mw|comma-separator}} separated list after {{msg-mw|diff-with}} and before {{msg-mw|diff-with-final}}.',
-'diff-with-final' => '* "<code><nowiki>&amp;#32;</nowiki></code>" is a forced space; leave it in if your language uses spaces
-* $1 is a name of a HTML attribute (for example <code>style</code> or <code>class</code>)
-* $2 is the value of the attribute (for example <code>background:red;</code> in <code>style="background:red;"</code>)
-Used in the final position of a {{msg-mw|comma-separator}} separated list headed by {{msg-mw|diff-with}} followed by zero or more repetitions of {{msg-mw|diff-with-additional}}.',
-'diff-width' => '{{Identical|Width}}',
-'diff-height' => '{{Identical|Height}}',
-'diff-dt' => 'I guess that this refers to HTML, as described in the article [http://en.wikipedia.org/wiki/HTML_elements#Lists HTML elements] on Wikipedia.',
-'diff-img' => '{{Identical|Image}}',
-'diff-i' => '{{Identical|Italic}}',
-'diff-b' => '{{Identical|Bold}}',
-'diff-font' => '{{Identical|Font}}',
+'diff-multi' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive.",
# Search results
-'searchresults-title' => 'Appears as page title in the html header of the search result special page.',
-'noexactmatch' => 'This is the message that you get if you follow a link to a page or article that does not exist.',
-'notitlematches' => 'Header of results page after a search for a title for which no page exists',
-'textmatches' => 'When displaying search results',
-'notextmatches' => 'Error message when there are no results',
-'prevn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the first argument of {{msg-mw|Viewprevnext}}.
+'searchresults-title' => 'Appears as page title in the html header of the search result special page.',
+'notitlematches' => 'Header of results page after a search for a title for which no page exists',
+'textmatches' => 'When displaying search results',
+'notextmatches' => 'Error message when there are no results',
+'prevn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the first argument of {{msg-mw|Viewprevnext}}.
It is also used by Category pages (which do ''not'' use {{msg-mw|Viewprevnext}}).
-$1 is the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.
+{{PLURAL:$1|$1}} is the number of items shown per page. It is not used when {{PLURAL:$1|$1}} is zero; not sure what happens when {{PLURAL:$1|$1}} is one.
[[Special:WhatLinksHere|Whatlinkshere]] pages use {{msg-mw|Whatlinkshere-prev}} instead (still as an argument to {{msg-mw|Viewprevnext}}).
{{Identical|Previous}}",
-'nextn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the second argument of {{msg-mw|Viewprevnext}}.
+'nextn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the second argument of {{msg-mw|Viewprevnext}}.
It is also used by Category pages (which do ''not'' use {{msg-mw|Viewprevnext}}).
$1 is the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.
[[Special:WhatLinksHere|Whatlinkshere]] pages use {{msg-mw|Whatlinkshere-next}} instead (still as an argument to {{msg-mw|Viewprevnext}}).
{{Identical|Next $1}}",
-'viewprevnext' => 'This is part of the navigation message on the top and bottom of Special pages which are lists of things, e.g. the User\'s contributions page (in date order) or the list of all categories (in alphabetical order). ($1) and ($2) are either {{msg-mw|Pager-older-n}} and {{msg-mw|Pager-newer-n}} (for date order) or {{msg-mw|Prevn}} and {{msg-mw|Nextn}} (for alphabetical order).
+'viewprevnext' => 'This is part of the navigation message on the top and bottom of Special pages which are lists of things, e.g. the User\'s contributions page (in date order) or the list of all categories (in alphabetical order). ($1) and ($2) are either {{msg-mw|Pager-older-n}} and {{msg-mw|Pager-newer-n}} (for date order) or {{msg-mw|Prevn}} and {{msg-mw|Nextn}} (for alphabetical order).
+
It is also used by [[Special:WhatLinksHere|Whatlinkshere]] pages, where ($1) and ($2) are {{msg-mw|Whatlinkshere-prev}} and {{msg-mw|Whatlinkshere-next}}.
($3) is made up in all cases of the various proposed numbers of results per page, e.g. "(20 | 50 | 100 | 250 | 500)".
For Special pages, the navigation bar is prefixed by "({{msg-mw|Page_first}} | {{msg-mw|Page_last}})" (alphabetical order) or "({{msg-mw|Histfirst}} | {{msg-mw|Histlast}})" (date order).
+
Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|Showingresultsnum}} message (for Special pages) or by the {{msg-mw|Linkshere}} message (for Whatlinkshere pages).',
-'searchmenu-legend' => '{{Identical|Search options}}',
-'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).',
-'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).',
-'searchhelp-url' => '{{Identical|HelpContent}}
+'searchmenu-legend' => '{{Identical|Search options}}',
+'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).',
+'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).',
+'searchhelp-url' => '{{Identical|HelpContent}}
Description: The URL of the search help page.
{{doc-important|Do not change "Help:" part.}}',
-'searchprofile-articles' => 'A quick link in the advanced search box on [[Special:Search]]. Clicking on this link starts a search in the content pages of the wiki.
+'searchprofile-articles' => "A quick link in the advanced search box on [[Special:Search]]. Clicking on this link starts a search in the content pages of the wiki.
+
+A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+
+Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
-{{Identical|Content page}}',
-'searchprofile-articles-and-proj' => '{{Identical|Content page}}',
-'searchprofile-project' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:search] page.',
-'searchprofile-images' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:search] page.',
-'searchprofile-everything' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:search] page.',
-'searchprofile-advanced' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:Search] page.
+{{Identical|Content page}}",
+'searchprofile-project' => 'An option in the [[Special:Search]] page.',
+'searchprofile-images' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:search] page.',
+'searchprofile-everything' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:search] page.',
+'searchprofile-advanced' => 'An option in the [http://translatewiki.net/wiki/Special:Search Special:Search] page.
{{Identical|Advanced}}',
-'searchprofile-articles-tooltip' => '{{Identical|Search in $1}}',
-'searchprofile-project-tooltip' => '{{Identical|Search in $1}}',
-'search-result-size' => 'Shown per line of a [[Special:Search|search result]]
+'searchprofile-articles-tooltip' => '{{Identical|Search in $1}}',
+'searchprofile-project-tooltip' => '{{Identical|Search in $1}}',
+'search-result-size' => 'Shown per line of a [[Special:Search|search result]]
* $1 is the size of the page in bytes, but no need to add "byte" or similar as the unit is added by special function.
* $2 is the sum of all words in this page.',
-'search-result-score' => 'Shown per line of a [[Special:Search|search result]].
+'search-result-score' => 'Shown per line of a [[Special:Search|search result]].
$1 is the relevance of this result in per cent.
{{Identical|Relevance: $1%}}',
-'search-redirect' => "\$1 is a link to the redirect to the page (so, \$1 is the page that the search result is redirected '''from'''). \"Redirect\" is a noun here, not a verb.",
-'search-section' => 'This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that section is more relevant than the rest of the page. $1 is a section title.',
-'search-interwiki-default' => '* $1 is the hostname of the remote wiki from where the additional results listed below are returned',
-'search-interwiki-more' => '{{Identical|More}}',
-'search-relatedarticle' => '{{Identical|Related}}
+'search-redirect' => "\$1 is a link to the redirect to the page (so, \$1 is the page that the search result is redirected '''from'''). \"Redirect\" is a noun here, not a verb.",
+'search-section' => 'This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that section is more relevant than the rest of the page. $1 is a section title.',
+'search-interwiki-default' => '* $1 is the hostname of the remote wiki from where the additional results listed below are returned',
+'search-interwiki-more' => '{{Identical|More}}',
+'search-relatedarticle' => '{{Identical|Related}}
This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]',
-'mwsuggest-disable' => "The text of an option on the 'search options' tab of a user's Preferences.",
-'searchrelated' => '{{Identical|Related}}
+'mwsuggest-disable' => "The text of an option on the 'search options' tab of a user's Preferences.",
+'searcheverything-enable' => 'Used in [[Special:Preferences]], tab “Search”.',
+'searchrelated' => '{{Identical|Related}}
This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]',
-'searchall' => '{{Identical|All}}',
-'showingresults' => "This message is used on some special pages such as 'Wanted categories'. $1 is the total number of results in the batch shown and $2 is the number of the first item listed.",
-'showingresultsnum' => '$3 is the number of results on the page and $2 is the first number in the batch of results.',
-'showingresultstotal' => 'Text above list of search results on special page of search results.
-* $1–$2 is the range of results shown on the page
-* $3 is the total number of results from the search
-* $4 is the number of results shown on the page (equal to the size of the $1–$2 interval)',
-'nonefound' => 'This message appears on the search results page if no results are found.
+'searchall' => '{{Identical|All}}',
+'showingresults' => "This message is used on some special pages such as 'Wanted categories'. $1 is the total number of results in the batch shown and $2 is the number of the first item listed.",
+'showingresultsnum' => '$3 is the number of results on the page and $2 is the first number in the batch of results.',
+'showingresultsheader' => 'Used in search results of [[Special:Search]].',
+'nonefound' => 'This message appears on the search results page if no results are found.
{{doc-important|Do not translate "all:".}}',
-'search-nonefound' => 'Message shown when a search returned no results (when using the default MediaWiki search engine).',
-'powersearch' => 'Verb. Text of search button at the bottom of [[Special:Search]], for searching in selected namespaces.
+'search-nonefound' => 'Message shown when a search returned no results (when using the default MediaWiki search engine).',
+'powersearch' => 'Verb. Text of search button at the bottom of [[Special:Search]], for searching in selected namespaces.
{{Identical|Advanced search}}',
-'powersearch-legend' => 'Advanced search
+'powersearch-legend' => 'Advanced search
{{Identical|Advanced search}}',
-'powersearch-ns' => 'Used in the extended search form at [[Special:Search]]',
-'powersearch-redir' => 'Used in the extended search form at [[Special:Search]]',
-'powersearch-field' => 'Used in the extended search form at [[Special:Search]]',
-'search-external' => 'Legend of the fieldset for the input form when the internal search is disabled. Inside the fieldset [[MediaWiki:Searchdisabled]] and [[MediaWiki:Googlesearch]] is shown.',
-'searchdisabled' => 'Shown on [[Special:Search]] when the internal search is disabled.',
+'powersearch-ns' => 'Used in the extended search form at [[Special:Search]]',
+'powersearch-redir' => 'Used in the extended search form at [[Special:Search]]',
+'powersearch-field' => 'Used in the extended search form at [[Special:Search]]',
+'powersearch-togglelabel' => 'Used in [http://translatewiki.net/w/i.php?title=Special:Search&advanced=1 Advanced search]. Synomym: "select" as verb.',
+'powersearch-toggleall' => '"All" refers to namespaces. It is used in Advanced search: http://translatewiki.net/w/i.php?title=Special:Search&advanced=1
+{{Identical|All}}',
+'powersearch-togglenone' => '"None" refers to namespaces. It is used in Advanced search: http://translatewiki.net/w/i.php?title=Special:Search&advanced=1
+{{Identical|None}}',
+'search-external' => 'Legend of the fieldset for the input form when the internal search is disabled. Inside the fieldset [[MediaWiki:Searchdisabled]] and [[MediaWiki:Googlesearch]] is shown.',
+'searchdisabled' => 'Shown on [[Special:Search]] when the internal search is disabled.',
+
+# Quickbar
+'qbsettings' => 'The title of the section in [[Special:Preferences]], only shown when using the skins "Standard/Classic" or "Cologne Blue". The quicbar is the same as the sidebar.',
+'qbsettings-none' => '{{Identical|None}}',
# Preferences page
-'preferences' => 'Title of the Special:Preferences page.
+'preferences' => 'Title of the Special:Preferences page.
{{Identical|Preferences}}',
-'mypreferences' => 'Action link label that leads to Special:Preferences; appears in the top menu (e.g. "Username My talk My preferences My watchlist My contributions Log out").
+'mypreferences' => 'Action link label that leads to Special:Preferences; appears in the top menu (e.g. "Username My talk My preferences My watchlist My contributions Log out").
{{Identical|My preferences}}',
-'prefs-edits' => 'In user preferences.',
-'prefsnologin' => '{{Identical|Not logged in}}',
-'qbsettings' => 'The title of the section in [[Special:Preferences]], only shown when using the skins "Standard/Classic" or "Cologne Blue". The quicbar is the same as the sidebar.',
-'qbsettings-none' => '{{Identical|None}}',
-'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
+'prefs-edits' => 'In user preferences.',
+'prefsnologin' => '{{Identical|Not logged in}}',
+'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
{{Identical|Change password}}",
-'skin' => 'Used in user preferences.',
-'skin-preview' => 'The link beside each skin name in [[Special:Preferences|your user preferences]], tab "skin".
+'prefs-skin' => 'Used in user preferences.',
+'skin-preview' => 'The link beside each skin name in [[Special:Preferences|your user preferences]], tab "skin".
{{Identical|Preview}}',
-'math' => 'Used in user preferences.',
-'dateformat' => "Header for the box containing the options for showing dates, displayed on the 'date and time' tab of the [[Special:Preferences|user preferences]] special page.",
-'datetime' => '{{Identical|Date}}',
-'math_syntax_error' => '{{Identical|Syntax error}}',
-'prefs-personal' => 'Title of a tab in [[Special:Preferences]].',
-'prefs-rc' => 'Used in user preferences.
+'prefs-math' => 'Used in user preferences.',
+'prefs-datetime' => '{{Identical|Date}}',
+'prefs-personal' => 'Title of a tab in [[Special:Preferences]].',
+'prefs-rc' => 'Used in user preferences.
{{Identical|Recent changes}}',
-'prefs-watchlist' => 'Used in user preferences.',
-'prefs-watchlist-days' => 'Used in [[Special:Preferences]], tab "Watchlist".',
-'prefs-watchlist-days-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
-'prefs-watchlist-edits' => 'Used in [[Special:Preferences]], tab "Watchlist".',
-'prefs-watchlist-edits-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
-'prefs-misc' => 'Tab used on the [[Special:Preferences|user preferences]] special page.',
-'prefs-resetpass' => 'Button on user data tab in user preferences. When you click the button you go to the special page [[Special:ResetPass]].
+'prefs-watchlist' => 'Used in user preferences.',
+'prefs-watchlist-days' => 'Used in [[Special:Preferences]], tab "Watchlist".',
+'prefs-watchlist-days-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
+'prefs-watchlist-edits' => 'Used in [[Special:Preferences]], tab "Watchlist".',
+'prefs-watchlist-edits-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
+'prefs-watchlist-token' => 'Used in [[Special:Preferences]], tab Watchlist.',
+'prefs-misc' => 'Tab used on the [[Special:Preferences|user preferences]] special page.',
+'prefs-resetpass' => 'Button on user data tab in user preferences. When you click the button you go to the special page [[Special:ResetPass]].
{{Identical|Change password}}',
-'saveprefs' => 'Button for saving changes in the preferences page.
+'prefs-rendering' => 'Title of tab in [[Special:Preferences]].',
+'saveprefs' => 'Button for saving changes in the preferences page.
{{Identical|Save}}',
-'resetprefs' => 'Button for resetting changes in the preferences page.',
-'restoreprefs' => 'Used in [[Special:Preferences]]',
-'textboxsize' => 'Title of a tab in [[Special:Preferences]].',
-'rows' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
-'columns' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
-'searchresultshead' => 'This is the label of the tab in [[Special:Preferences|my preferences]] which contains options for searching the wiki.
+'resetprefs' => 'Button for resetting changes in the preferences page.',
+'restoreprefs' => 'Used in [[Special:Preferences]]',
+'prefs-editing' => 'Title of a tab in [[Special:Preferences]].',
+'rows' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
+'columns' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
+'searchresultshead' => 'This is the label of the tab in [[Special:Preferences|my preferences]] which contains options for searching the wiki.
{{Identical|Search}}',
-'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
-'contextlines' => "Option on the 'Search options' tab of [[Special:Preferences]]",
-'contextchars' => 'Used in Preferences/Search tab',
-'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
-'recentchangesdays' => 'Used in [[Special:Preferences]], tab "Recent changes".',
-'recentchangesdays-max' => 'Shown as hint in [[Special:Preferences]], tab "Recent changes"',
-'recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
-'savedprefs' => 'This message appears after saving changes to your user preferences.',
-'timezonelegend' => '{{Identical|Time zone}}',
-'timezonetext' => "Additional explanation given in [[Special:Preferences]], tab 'date and time' with the preference in message ''timezoneoffset''",
-'timezoneselect' => '{{Identical|Time zone}}',
-'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
-'allowemail' => 'Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
-'prefs-searchoptions' => '{{Identical|Search options}}',
-'prefs-namespaces' => "{{Identical|Namespaces}}
+'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
+'contextlines' => "Option on the 'Search options' tab of [[Special:Preferences]]",
+'contextchars' => 'Used in Preferences/Search tab',
+'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
+'recentchangesdays' => 'Used in [[Special:Preferences]], tab "Recent changes".',
+'recentchangesdays-max' => 'Shown as hint in [[Special:Preferences]], tab "Recent changes"',
+'recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
+'prefs-help-recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
+'prefs-help-watchlist-token' => 'Used in [[Special:Preferences]], tab Watchlist.',
+'savedprefs' => 'This message appears after saving changes to your user preferences.',
+'timezonelegend' => '{{Identical|Time zone}}',
+'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
+'allowemail' => 'Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
+'prefs-searchoptions' => '{{Identical|Search options}}',
+'prefs-namespaces' => "{{Identical|Namespaces}}
Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]",
-'defaultns' => 'Used in [[Special:Preferences]], tab "Search".',
-'default' => '{{Identical|Default}}',
-'files' => 'Title of a tab in [[Special:Preferences]].',
-'prefs-custom-css' => 'visible on [[Special:Preferences]] -[Skins].',
-'prefs-custom-js' => 'visible on [[Special:Preferences]] -[Skins].',
+'defaultns' => 'Used in [[Special:Preferences]], tab "Search".',
+'default' => '{{Identical|Default}}',
+'prefs-files' => 'Title of a tab in [[Special:Preferences]].',
+'prefs-custom-css' => 'visible on [[Special:Preferences]] -[Skins].',
+'prefs-custom-js' => 'visible on [[Special:Preferences]] -[Skins].',
+'prefs-reset-intro' => 'Used in [[Special:Preferences/reset]].',
+'prefs-emailconfirm-label' => 'Sub-heading in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
+'prefs-textboxsize' => "Header for the box specifying the size of the editing window, displayed on the 'editing' tab of the [[Special:Preferences|user preferences]] special page.",
+'youremail' => 'Label of the e-mail text box of the "E-mail options" section of "Special:Preferences".
+
+{{Identical|E-mail}}',
+'username' => '{{Identical|Username}}',
+'uid' => '{{Identical|User ID}}',
+'prefs-memberingroups' => 'This message is shown on [[Special:Preferences]], first tab. See also {{msg-mw|prefs-memberingroups-type}}.',
+'prefs-memberingroups-type' => '{{optional}}
+$1 is list of group names, $2 is list of group member names. Label for these is {{msg-mw|prefs-memberingroups}}.',
+'prefs-registration' => 'Used in [[Special:Preferences]].',
+'prefs-registration-date-time' => '{{optional}}
+Used in [[Special:Preferences]]. Parameters are:
+* $1 date and time of registration
+* $2 date of registration
+* $3 time of registration',
+'yourrealname' => 'Used in [[Special:Preferences]], first tab.
+{{Identical|Real name}}',
+'yourlanguage' => 'Used in [[Special:Preferences]], first tab.
+{{Identical|Language}}',
+'yourvariant' => 'Used in [[Special:Preferences]], first tab, when the wiki content language has variants only.
+{{optional}}',
+'yournick' => 'Used in [[Special:Preferences]], first tab.
+
+{{Identical|Signature}}',
+'prefs-help-signature' => 'Used in [[Special:Preferences]], tab User profile.',
+'badsig' => 'Error message displayed when entering invalid signature in user preferences',
+'badsiglength' => 'Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that is too long. Parameter $1 is the maximum number of characters that is allowed in a signature (multi-byte characters are counted as one character).',
+'yourgender' => 'Used in [[Special:Preferences]], first tab.
+{{Identical|Gender}}',
+'gender-unknown' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name is not to be made public, or cannot be determined, or matches none of the other choices preset in the select.',
+'gender-male' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "male" for those languages having a "normal" male grammatical gender.
+{{Identical|Male}}',
+'gender-female' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "female" for those languages having a "normal" female grammatical gender.
+{{Identical|Female}}',
+'email' => '{{Identical|E-mail}}',
+'prefs-help-realname' => 'In user preferences.',
+'prefs-help-email' => 'Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
+'prefs-info' => "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.",
+'prefs-signature' => '{{Identical|Signature}}',
+'prefs-dateformat' => 'Used in [[Special:Preferences]], tab "Date and time".',
+'prefs-timeoffset' => 'Used in [[Special:Preferences]], tab "Date and time".',
+'prefs-advancedediting' => 'Used in [[Special:Preferences]], tab "Editing".
+{{Identical|Advanced options}}',
+'prefs-advancedrc' => 'Used in [[Special:Preferences]], tab "Recent changes".
+{{Identical|Advanced options}}',
+'prefs-advancedrendering' => 'Used in [[Special:Preferences]], tab "Appearence".
+{{Identical|Advanced options}}',
+'prefs-advancedsearchoptions' => 'Used in [[Special:Preferences]], tab "Search options".
+{{Identical|Advanced options}}',
+'prefs-advancedwatchlist' => 'Used in [[Special:Preferences]], tab "Watchlist".
+{{Identical|Advanced options}}',
+'prefs-display' => '"Display" is a noun that specifies the kind of "options". So translate as "options about display", not as "display the options".
+
+Used in [[Special:Preferences]], tab "Recent changes".',
+'prefs-diffs' => 'Used in [[Special:Preferences]], tab "Misc".',
# User rights
-'userrights' => 'Page title of [[Special:UserRights]].', # Not used as normal message but as header for the special page itself
+'userrights' => 'Page title of [[Special:UserRights]].',
'userrights-lookup-user' => 'Label text when managing user rights ([[Special:UserRights]])',
'userrights-user-editname' => 'Displayed on [[Special:UserRights]].',
'editusergroup' => 'Button name, in page [[Special:Userrights]] (only available to administrators), in the section named {{MediaWiki:userrights-lookup-user}}.
@@ -1170,6 +1348,7 @@ Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferen
'userrights-editusergroup' => '{{Identical|Edit user groups}}',
'saveusergroups' => 'Button text when editing user groups',
'userrights-groupsmember' => 'When editing user groups',
+'userrights-groupsmember-auto' => 'Implicit is for groups that are automatically added to the user (such as "autoconfirmed"); cf. {{msg-mw|userrights-groupsmember}}',
'userrights-groups-help' => 'Instructions displayed on [[Special:UserRights]].',
'userrights-reason' => 'Text beside log field when editing user groups
@@ -1265,6 +1444,7 @@ See also
* {{msg|right-hideuser|pl=yes}}
* {{msg|right-suppressrevision|pl=yes}}',
'right-deletedhistory' => '{{doc-right|deletedhistory}}',
+'right-deletedtext' => '{{doc-right|deletedcontent}}',
'right-browsearchive' => '{{doc-right|browsearchive}}',
'right-undelete' => '{{doc-right|undelete}}',
'right-suppressrevision' => 'This is a user right that is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
@@ -1297,6 +1477,8 @@ bypasses IP blocks, auto-blocks and range blocks - so I presume - but I am uncer
'right-editprotected' => '{{doc-right|editprotected}}',
'right-editinterface' => '{{doc-right|editinterface}}',
'right-editusercssjs' => '{{doc-right|editusercssjs}}',
+'right-editusercss' => '{{doc-right|editusercss}}',
+'right-edituserjs' => '{{doc-right|edituserjs}}',
'right-rollback' => '{{Identical|Rollback}}',
'right-markbotedits' => '{{doc-right}}
A user with this right can mark a roll-back edit as a bot edit by adding <tt>&bot=1</tt> to the URL (not by default).',
@@ -1319,6 +1501,10 @@ An alternative wording for translators could be \'Get the wiki to accept a track
'right-siteadmin' => '{{doc-right|siteadmin}}',
'right-reset-passwords' => '{{doc-right}}',
'right-override-export-depth' => '{{doc-right|override-export-depth}}',
+'right-versiondetail' => '{{doc-right|versiondetail}}
+
+Users having this right receive more detailed information on [[Special:Version]].',
+'right-sendemail' => '{{doc-right}}',
# User rights log
'rightslog' => 'In [[Special:Log]]',
@@ -1376,13 +1562,22 @@ This action allows editing of all of the "user rights", not just the rights of t
'action-siteadmin' => '{{Doc-action}}',
# Recent changes
-'nchanges' => 'Appears on the [[Special:RecentChanges]] special page in brackets after pages having more than one change on that date. $1 is the number of changes on that day.',
-'recentchanges' => 'The text of the link in sidebar going to the special page [[Special:RecentChanges]]. Also the page title of that special page.
+'nchanges' => 'Appears on the [[Special:RecentChanges]] special page in brackets after pages having more than one change on that date. $1 is the number of changes on that day.',
+'recentchanges' => 'The text of the link in sidebar going to the special page [[Special:RecentChanges]]. Also the page title of that special page.
{{Identical|Recent changes}}',
-'recentchanges-legend' => 'Legend of the fieldset of [[Special:RecentChanges]]',
-'recentchangestext' => 'Text in recent changes',
-'rcnote' => 'Used on [[Special:RecentChanges]].
+'recentchanges-legend' => 'Legend of the fieldset of [[Special:RecentChanges]]',
+'recentchangestext' => 'Text in recent changes',
+'recentchanges-label-legend' => 'Used at [[Special:RecentChanges]] and [[Special:Watchlist]].',
+'recentchanges-legend-newpage' => '* $1 - message {{msg-mw|newpageletter}} ({{int:newpageletter}})',
+'recentchanges-label-newpage' => 'Tooltip for {{msg-mw|newpageletter}}',
+'recentchanges-legend-minor' => '* $1 - message {{msg-mw|minoreditletter}} ({{int:minoreditletter}})',
+'recentchanges-label-minor' => 'Tooltip for {{msg-mw|newpageletter}}',
+'recentchanges-legend-bot' => '* $1 - message {{msg-mw|boteditletter}} ({{int:boteditletter}})',
+'recentchanges-label-bot' => 'Tooltip for {{msg-mw|boteditletter}}',
+'recentchanges-legend-unpatrolled' => '* $1 - message {{msg-mw|unpatrolledletter}} ({{int:unpatrolledletter}})',
+'recentchanges-label-unpatrolled' => 'Tooltip for {{msg-mw|unpatrolledletter}}',
+'rcnote' => 'Used on [[Special:RecentChanges]].
* $1 is the number of changes shown,
* $2 is the number of days for which the changes are shown,
* $3 is a date and time (deprecated),
@@ -1391,46 +1586,53 @@ This action allows editing of all of the "user rights", not just the rights of t
<!--Example: "\'\'Below are the last 50 changes in the last 7 days, as of 14:48, 24 January 2008.\'\'"-->
Example: "\'\'{{int:rcnote/en|50|7||24 January 2008|14:48}}\'\'"',
-'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
+'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time. The corrosponding message is {{msg-mw|Rclistfrom}} (without split of date and time, [[bugzilla:19104|Bug 19104]]).
Parameter $1 is the maximum number of changes that are displayed.
-Parameter $2 is a date and time.',
-'rclistfrom' => 'Used on [[Special:RecentChanges]]. Parameter $1 is a link to the revision of a specific date and time. The date and the time are the link description (without split of date and time, [[bugzilla:19104|Bug 19104]]). The corrosponding message is {{msg-mw|Rcnotefrom}}.',
-'rcshowhideminor' => 'Option text in [[Special:RecentChanges]]',
-'rcshowhidebots' => "Option text in [[Special:RecentChanges]]. $1 is the 'show/hide' command, with the text taken from either [[Mediawiki:Show]] or [[Mediawiki:Hide]].
+Parameter $2 is a date and time.
+Parameter $3 is a date.
+Parameter $4 is a time.',
+'rclistfrom' => 'Used on [[Special:RecentChanges]]. Parameter $1 is a link to the revision of a specific date and time. The date and the time are the link description (without split of date and time, [[bugzilla:19104|Bug 19104]]). The corrosponding message is {{msg-mw|Rcnotefrom}}.',
+'rcshowhideminor' => 'Option text in [[Special:RecentChanges]]',
+'rcshowhidebots' => "Option text in [[Special:RecentChanges]]. $1 is the 'show/hide' command, with the text taken from either [[Mediawiki:Show]] or [[Mediawiki:Hide]].
{{Identical|$1 bots}}",
-'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]',
-'rcshowhideanons' => "Option text in [[Special:RecentChanges]]
+'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]',
+'rcshowhideanons' => "Option text in [[Special:RecentChanges]]
* $1 is 'hide' or 'show'",
-'rcshowhidepatr' => "Option text in [[Special:RecentChanges]]. $1 is the 'show/hide' command, with the text taken from either [[Mediawiki:Show]] or [[Mediawiki:Hide]].",
-'rcshowhidemine' => 'Parameters:
+'rcshowhidepatr' => "Option text in [[Special:RecentChanges]]. $1 is the 'show/hide' command, with the text taken from either [[Mediawiki:Show]] or [[Mediawiki:Hide]].",
+'rcshowhidemine' => 'Parameters:
* $1 can be "show" or "hide"',
-'rclinks' => "Used on [[Special:RecentChanges]].
+'rclinks' => "Used on [[Special:RecentChanges]].
* '''\$1''' is a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".
* '''\$2''' is a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".
* '''\$3''' is a block of text that consists of other messages.<br />&nbsp;Example: \"''Hide minor edits{{int:pipe-separator}}Show bots{{int:pipe-separator}}Hide anonymous users{{int:pipe-separator}}Hide logged-in users{{int:pipe-separator}}Hide patrolled edits{{int:pipe-separator}}Hide my edits''\"
List elements are separated by {{msg-mw|pipe-separator}} each. Each list element is, or contains, a link.",
-'diff' => 'Short form of "differences". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
-'hist' => 'Short form of "history". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
-'hide' => 'Option text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]]
+'diff' => 'Short form of "differences". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
+'hist' => 'Short form of "history". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
+'hide' => 'Option text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]]
{{Identical|Hide}}',
-'show' => '{{Identical|Show}}',
-'minoreditletter' => "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
-'newpageletter' => "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
-'boteditletter' => 'Abbreviation of "bot". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].',
-'sectionlink' => '{{optional}}',
-'rc_categories' => "Probably to do with 'recent changes' special page, either in a particular skin, or for a particular user group.
+'show' => '{{Identical|Show}}',
+'minoreditletter' => "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
+'newpageletter' => "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
+'boteditletter' => 'Abbreviation of "bot". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].',
+'unpatrolledletter' => '{{optional}}
+
+Used in {{msg-mw|Recentchanges-label-legend}}, meaning "unpatrolled".',
+'sectionlink' => '{{optional}}',
+'rc_categories' => "Probably to do with 'recent changes' special page, either in a particular skin, or for a particular user group.
I guess that this should appear before an input box where you can specify that recent changes should be shown for pages belonging to certain categories only. You name the categories in the input box, and separate them by a pipe character. If this is right, then you should be able to use 'restrict' instead of 'limit', or even 'show pages in the following categories only'.",
-'rc-change-size' => '{{optional}}
+'rc-change-size' => '{{optional}}
Does not work under $wgMiserMode ([[mwr:48986|r48986]]).',
-'newsectionsummary' => 'Default summary when adding a new section to a page.',
+'newsectionsummary' => 'Default summary when adding a new section to a page.',
# Recent changes linked
'recentchangeslinked' => 'Title of [[Special:RecentChangesLinked]] and display name of page on [[Special:SpecialPages]].',
+'recentchangeslinked-feed' => 'Title of [[Special:RecentChangesLinked]] and display name of page on [[Special:SpecialPages]].',
+'recentchangeslinked-toolbox' => 'Title of [[Special:RecentChangesLinked]] and display name of page on [[Special:SpecialPages]].',
'recentchangeslinked-title' => 'Message used as title and page header on [[Special:RecentChangesLinked]] (needs an argument like "/Main Page"). Related changes are all recent change to pages that are linked from \'\'this page\'\'. "$1" is the name of the page for which related changes as show.',
'recentchangeslinked-backlink' => '{{optional}}',
'recentchangeslinked-summary' => 'Summary of [[Special:RecentChangesLinked]].',
@@ -1485,11 +1687,15 @@ Error message at [[Special:Upload]]",
'uploaddisabledtext' => 'This message can have parameter $1, which contains the name of the target file. See r22243 and [https://bugzilla.wikimedia.org/show_bug.cgi?id=8818 bug 8818].',
'php-uploaddisabledtext' => 'This means that file uploading is disabled in PHP, not upload of PHP-files.',
'uploadvirus' => 'Note displayed when uploaded file contains a virus',
+'upload-source' => 'Caption above a section of the [[Special:Upload]] page',
'sourcefilename' => 'In [[Special:Upload]]',
+'sourceurl' => 'Caption for the upload-by-url feature at [[Special:Upload]]',
'destfilename' => 'In [[Special:Upload]]',
'upload-maxfilesize' => 'Shows at [[Special:Upload]] the maximum file size that can be uploaded.
$1 is the value in KB/MB/GB',
+'upload-description' => 'Caption above a section of the [[Special:Upload]] page',
+'upload-options' => 'Caption above a section of the [[Special:Upload]] page',
'watchthisupload' => 'In [[Special:Upload]]',
'filewasdeleted' => 'This warning is shown when trying to upload a file that does not exist, but has previously been deleted.
Parameters:
@@ -1505,6 +1711,30 @@ Extensions making use of it:
{{Identical|Internal error}}',
+# img_auth script messages
+'img-auth-accessdenied' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Access Denied',
+'img-auth-nopathinfo' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Missing PATH_INFO - see english description',
+'img-auth-notindir' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: When the specified path is not in upload directory.',
+'img-auth-badtitle' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Bad title, $1 is the invalid title',
+'img-auth-nologinnWL' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Logged in and file not whitelisted. $1 is the file not in whitelist.',
+'img-auth-nofile' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Non existent file, $1 is the file that does not exist.',
+'img-auth-isdir' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Trying to access a directory instead of a file, $1 is the directory.',
+'img-auth-streaming' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Is now streaming file specified by $1.',
+'img-auth-public' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: An error message when the admin has configured the wiki to be a public wiki, but is using img_auth script - normally this is a configuration error, except when special restriction extensions are used',
+'img-auth-noread' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: User does not have access to read file, $1 is the file',
+
+# HTTP errors
+'http-invalid-scheme' => 'The message appears in the Mediawiki code as follows:
+
+ if ( $this->parsedUrl[\'scheme\'] != \'http\' ) {
+ $this->status->fatal( \'http-invalid-scheme\', $this->parsedUrl[\'scheme\'] );
+ }
+
+Siebrand think this has to do with allowing MediaWiki to fetch remote URLs, and in that not allowing anything but "http://" request. So if this for example is "irc://" or "https://", $1 would be "irc" or "https" respectively.
+
+If \'scheme\' is difficult to translate, then you could use \'prefix\' instead.',
+'http-bad-status' => '$1 is an HTTP error code (e.g. 404), $2 is the HTTP error message (e.g. File Not Found)',
+
'license' => 'This appears in the upload form for the license drop-down. The header in the file description page is now at {{msg-mw|License-header}}.',
'nolicense' => '{{Identical|None selected}}',
'license-nopreview' => 'Error message when a certain license does not exist',
@@ -1528,73 +1758,79 @@ Extensions making use of it:
'listfiles_count' => 'One of the table column headers in [[Special:Listfiles]] denoting the amount of saved versions of that file.',
# File description page
-'filehist' => 'Text shown on a media description page. Heads the section where the different versions of the file are displayed.',
-'filehist-help' => 'In file description page',
-'filehist-deleteall' => 'Link in image description page for admins.',
-'filehist-deleteone' => 'Link description on file description page to delete an earlier version of a file.
+'file-anchor-link' => '{{Identical|File}}',
+'filehist' => 'Text shown on a media description page. Heads the section where the different versions of the file are displayed.',
+'filehist-help' => 'In file description page',
+'filehist-deleteall' => 'Link in image description page for admins.',
+'filehist-deleteone' => 'Link description on file description page to delete an earlier version of a file.
{{Identical|Delete}}',
-'filehist-revert' => 'Link in image description page.
+'filehist-revert' => 'Link in image description page.
{{Identical|Revert}}',
-'filehist-current' => 'Link in file description page.
+'filehist-current' => 'Link in file description page.
{{Identical|Current}}',
-'filehist-datetime' => 'Used on image descriptions, see for example [[:File:Yes.png#filehistory]].
+'filehist-datetime' => 'Used on image descriptions, see for example [[:File:Yes.png#filehistory]].
{{Identical|Date}}',
-'filehist-thumb' => 'Shown in the file history list of a file description page.
+'filehist-thumb' => 'Shown in the file history list of a file description page.
Example: [[:Image:Addon-icn.png]]',
-'filehist-thumbtext' => "Shown in the file history list of a file description page. '''$1''' is a time followed by a date, e.g. ''10:23, 18 april 2007''.
+'filehist-thumbtext' => "Shown in the file history list of a file description page.
+* '''$1''' is a time followed by a date, e.g. ''10:23, 18 april 2007''.
+* '''$2''' is the date,
+* '''$3''' is the time.
Example: [[wikipedia:Image:Madeleine close2.jpg]]",
-'filehist-nothumb' => 'Shown if no thumbnail is available in the file history list of a file desription page.
+'filehist-nothumb' => 'Shown if no thumbnail is available in the file history list of a file desription page.
Example: [[:Image:Addon-icn.png]]',
-'filehist-user' => 'In image description page.
+'filehist-user' => 'In image description page.
{{Identical|User}}',
-'filehist-dimensions' => 'In file description page',
-'filehist-filesize' => 'In image description page',
-'filehist-comment' => 'In file description page
+'filehist-dimensions' => 'In file description page',
+'filehist-filesize' => 'In image description page',
+'filehist-comment' => 'In file description page
{{Identical|Comment}}',
-'imagelinks' => 'In top header of the image description page, see for example [[:Image:Yes.png]].',
-'linkstoimage' => 'Used on image description, see for example [[:Image:Yes.png#filelinks]].
+'imagelinks' => 'In top header of the image description page, see for example [[:Image:Yes.png]].',
+'linkstoimage' => 'Used on image description, see for example [[:Image:Yes.png#filelinks]].
* Parameter $1 is the number of pages that link to the file/image.',
-'linkstoimage-more' => 'Shown on an image description page when a file is used/linked more than 100 times on other pages.
+'linkstoimage-more' => 'Shown on an image description page when a file is used/linked more than 100 times on other pages.
* $1: limit. At the moment hardcoded at 100
* $2: filename',
-'nolinkstoimage' => 'Displayed on image description pages, see for exampe [[:Image:Tournesol.png#filelinks]].',
-'redirectstofile' => 'Used on file description pages after the list of pages which used this file',
-'duplicatesoffile' => 'Shown on file description pages when a file is duplicated
+'nolinkstoimage' => 'Displayed on image description pages, see for exampe [[:Image:Tournesol.png#filelinks]].',
+'redirectstofile' => 'Used on file description pages after the list of pages which used this file',
+'duplicatesoffile' => 'Shown on file description pages when a file is duplicated
* $1: Number of identical files
* $2: Name of the shown file to link to the special page "FileDuplicateSearch"',
-'sharedupload' => 'Shown on an image description page when it is used in a central repository (i.e. [http://commons.wikimedia.org/ Commons] for Wikimedia wikis).
+'sharedupload' => 'Shown on an image description page when it is used in a central repository (i.e. [http://commons.wikimedia.org/ Commons] for Wikimedia wikis).
* $1 is the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|shared-repo-name-shared}}. The default value for $1 is {{msg-mw|shared-repo}}.
-{{doc-important|Do not customise this message. Just translate it.|Customisation should be done by local wikis.}}', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'The variable $1 is {{msg|shareduploadwiki-linktext}}',
-'shareduploadwiki-desc' => "This message appears after {{msg-mw|Sharedupload}}. \$1 is a link to the file description page on the shared repository with {{msg-mw|Shareduploadwiki-linktext}} as displayed anchor text.
+{{doc-important|Do not customise this message. Just translate it.|Customisation should be done by local wikis.}}',
+'sharedupload-desc-there' => ':See also: {{msg-mw|Sharedupload}}',
+'sharedupload-desc-here' => ':See also: {{msg-mw|Sharedupload}}',
+'filepage-nofile' => "This message appears when visiting a File page for which there's no file, if the user cannot upload files, or file uploads are disabled. (Otherwise, see {{msg-mw|Filepage-nofile-link}})
+
+Filepage-nofile and Filepage-nofile-link message deprecate {{msg-mw|Noimage}}",
+'filepage-nofile-link' => "This message appears when visiting a File page for which there's no file, if the user can upload files, and file uploads are enabled. (Otherwise, see {{msg-mw|Filepage-nofile}})
-Example:
-* \"''The description on its <u>file description page</u> there is shown below.''\"
-* See [[:File:Xrubik 4x4x4 with odd permutation of edges.png|live example]]",
-'shareduploadwiki-linktext' => 'This message is used as variable $1 in {{msg-mw|Shareduploadwiki}} and in {{msg-mw|Shareduploadwiki-desc}}.',
-'noimage' => 'In image description page when there is no file by that name. The variable $1 comes from {{msg|noimage-linktext}}, which is only substituted in this message.',
-'noimage-linktext' => 'This message is used as a variable in {{msg|noimage}}, and will not be used anywhere else.',
-'uploadnewversion-linktext' => 'Used on pages in the "File" namespace to update the file version.',
-'shared-repo-from' => 'This message is shown on an image description page when a duplicate of the image exists on a shared repository such as Wikimedia Commons.
+$1 - URL of upload page for this file.
+
+Filepage-nofile and Filepage-nofile-link message deprecate {{msg-mw|Noimage}}",
+'uploadnewversion-linktext' => 'Used on pages in the "File" namespace to update the file version.',
+'shared-repo-from' => 'This message is shown on an image description page when a duplicate of the image exists on a shared repository such as Wikimedia Commons.
Example: http://test.wikipedia.org/wiki/File:Wiki.png#filelinks
-$1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shared-repo-name-shared}}. The default value for $1 is {{msg-mw|shared-repo}}.', # $1 is the repository name
-'shared-repo' => 'This message can be used as parameter $1 in the following messages:
+$1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shared-repo-name-shared}}. The default value for $1 is {{msg-mw|shared-repo}}.',
+'shared-repo' => 'This message can be used as parameter $1 in the following messages:
* {{msg-mw|shared-repo-from}}
-* {{msg-mw|sharedupload}}, {{msg-mw|sharedupload-desc-here}}, {{msg-mw|sharedupload-desc-there}}', # used when shared-repo-NAME does not exist
+* {{msg-mw|sharedupload}}, {{msg-mw|sharedupload-desc-here}}, {{msg-mw|sharedupload-desc-there}}',
+'shared-repo-name-wikimediacommons' => '{{optional}}',
# File reversion
'filerevert' => '{{Identical|Revert}}',
@@ -1677,6 +1913,7 @@ $1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shar
'statistics-header-edits' => 'Used in [[Special:Statistics]]',
'statistics-header-views' => 'Used in [[Special:Statistics]]',
'statistics-header-users' => 'Used in [[Special:Statistics]]',
+'statistics-header-hooks' => 'Header of a section on [[Special:Statistics]] containing data provided by MediaWiki extensions',
'statistics-articles' => "Used in [[Special:Statistics]].
A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
@@ -1853,12 +2090,13 @@ $1 is a page title",
'special-categories-sort-count' => 'This message is used on [[Special:Categories]] to sort the list by the number of members in the categories.',
# Special:DeletedContributions
-'deletedcontributions' => 'The message is shown as a link on user contributions page (like [[Special:Contributions/User]]) to the corresponding [[Special:DeletedContributions]] page.
+'deletedcontributions' => 'The message is shown as a link on user contributions page (like [[Special:Contributions/User]]) to the corresponding [[Special:DeletedContributions]] page.
{{Identical|Deleted user contributions}}',
-'deletedcontributions-title' => 'Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.
+'deletedcontributions-title' => 'Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.
{{Identical|Deleted user contributions}}',
+'sp-deletedcontributions-contribs' => 'Link to user’s contributions on [[Special:DeletedContributions]]',
# Special:LinkSearch
'linksearch' => 'Title of [[Special:LinkSearch|special page]] and legend of fieldset on that page.
@@ -1886,6 +2124,17 @@ $1 is a list of internet protocols.',
{{Identical|Go}}
{{Identical|Show}}',
'listusers-noresult' => 'identical with {{msg-mw|activeusers-noresult}}',
+'listusers-blocked' => 'Used on [[Special:ActiveUsers]] when a user has been blocked.
+* $1 is a user name for use with GENDER (optional)',
+
+# Special:ActiveUsers
+'activeusers' => 'Title of [[Special:ActiveUsers]]',
+'activeusers-count' => "Used in [[Special:ActiveUsers]] to show the active user's recent edit count in brackets ([]).
+* $1 is the number of recent edits
+* $2 is the user's name for use with GENDER (optional)
+* $3 is the maximum number of days of the RecentChangesList",
+'activeusers-from' => 'identical with {{msg-mw|listusersfrom}}',
+'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
# Special:Log/newusers
'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in the recent changes.',
@@ -1897,26 +2146,38 @@ $1 is a list of internet protocols.',
'newuserlog-autocreate-entry' => 'This message is used in the [[:mw:Extension:Newuserlog|new user log]] to mark an account that was created by MediaWiki as part of a [[:mw:Extension:CentralAuth|CentralAuth]] global account.',
# Special:ListGroupRights
-'listgrouprights' => 'The name of the special page [[Special:ListGroupRights]].',
-'listgrouprights-summary' => 'The description used on [[Special:ListGroupRights]].',
-'listgrouprights-group' => "The title of the column in the table, about user groups (like you are in the ''translator'' group).
+'listgrouprights' => 'The name of the special page [[Special:ListGroupRights]].',
+'listgrouprights-summary' => 'The description used on [[Special:ListGroupRights]].',
+'listgrouprights-key' => 'Footer note for the [[Special:ListGroupRights]] page',
+'listgrouprights-group' => "The title of the column in the table, about user groups (like you are in the ''translator'' group).
{{Identical|Group}}",
-'listgrouprights-rights' => "The title of the column in the table, about user rights (like you can ''edit'' this page).
+'listgrouprights-rights' => "The title of the column in the table, about user rights (like you can ''edit'' this page).
{{Identical|Right}}",
-'listgrouprights-helppage' => "The link used on [[Special:ListGroupRights]]. Just translate \"Group rights\", and '''leave the \"Help:\" namespace exactly as it is'''.",
-'listgrouprights-members' => 'Used on [[Special:ListGroupRights]] and [[Special:Statistics]] as a link to [[Special:ListUsers|Special:ListUsers/"group"]], a list of members in that group.',
-'listgrouprights-right-display' => '{{optional}}',
-'listgrouprights-addgroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
+'listgrouprights-helppage' => "The link used on [[Special:ListGroupRights]]. Just translate \"Group rights\", and '''leave the \"Help:\" namespace exactly as it is'''.",
+'listgrouprights-members' => 'Used on [[Special:ListGroupRights]] and [[Special:Statistics]] as a link to [[Special:ListUsers|Special:ListUsers/"group"]], a list of members in that group.',
+'listgrouprights-right-display' => "{{optional}}
+* $1 is the text from the 'right-...' messages, i.e. [[MediaWiki:right-edit]] = {{int:right-edit}}
+* $2 is the codename of this right",
+'listgrouprights-right-revoked' => "{{optional}}
+* $1 is the text from the 'right-...' messages, i.e. [[MediaWiki:right-edit]] = {{int:right-edit}}
+* $2 is the codename of this right",
+'listgrouprights-addgroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
* $1 is an enumeration of group names.
* $2 is the number of group names in $1.
See also {{msg|listgrouprights-removegroup}}.',
-'listgrouprights-removegroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
+'listgrouprights-removegroup' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
* $1 is an enumeration of group names.
* $2 is the number of group names in $1.
See also {{msg|listgrouprights-addgroup}}.',
-'listgrouprights-addgroup-all' => '{{doc-right}}',
-'listgrouprights-removegroup-all' => '{{doc-right}}',
+'listgrouprights-addgroup-all' => '{{doc-right}}',
+'listgrouprights-removegroup-all' => '{{doc-right}}',
+'listgrouprights-addgroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
+* $1 are the group names.
+* $2 is the number of group names in $1.',
+'listgrouprights-removegroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
+* $1 are the group names.
+* $2 is the number of group names in $1.',
# E-mail user
'emailuser' => 'Link in the sidebar',
@@ -1982,7 +2243,9 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
'changed' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
'created' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
'enotif_subject' => '$CHANGEDORCREATED can be one of {{msg|changed}} and {{msg|created}}.',
-'enotif_body' => '$CHANGEDORCREATED can be one of {{msg|changed}} and {{msg|created}}.',
+'enotif_body' => 'Text of a notification e-mail sent when a watched page has been edited or deleted.
+
+* <tt>$CHANGEDORCREATED</tt> can be one of {{msg-mw|changed}}, {{msg-mw|created}}, or {{msg-mw|deleted}}.',
# Delete
'confirm' => 'Submit button text for protection confirmation
@@ -1996,7 +2259,8 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
$1 = the name of the page',
'delete-backlink' => '{{optional}}',
'delete-legend' => '{{Identical|Delete}}',
-'historywarning' => 'Warning when about to delete a page that has history.',
+'historywarning' => 'Warning when about to delete a page that has history.
+$1 is the <b>approximate</b> number of revisions that the page has, the message should not claim to give an exact count.',
'confirmdeletetext' => 'Introduction shown when deleting a page.',
'actioncomplete' => 'Used in several situations, for example when a page has been deleted.',
'deletedtext' => 'Parameters:
@@ -2035,70 +2299,71 @@ $1 = the name of the page',
* $3: the editor that cause collision
{{Identical|Rollback}}",
-'editcomment' => 'Only shown if there is an edit comment', # only shown if there is an edit comment
+'editcomment' => 'Only shown if there is an edit comment',
'revertpage' => '{{Identical|Revert}}
Additionally available:
* $3: revid of the revision reverted to,
* $4: timestamp of the revision reverted to,
* $5: revid of the revision reverted from,
-* $6: timestamp of the revision reverted from', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+* $6: timestamp of the revision reverted from',
'rollback-success' => 'This message shows up on screen after successful revert (generally visible only to admins). $1 describes user whose changes have been reverted, $2 describes user which produced version, which replaces reverted version.
{{Identical|Revert}}
{{Identical|Rollback}}',
# Protect
-'protectlogpage' => 'Title of [[Special:Log/protect]].',
-'protectlogtext' => 'Text in [[Special:Log/protect]].',
-'protectedarticle' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
-'modifiedarticleprotection' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
-'protect-title' => 'Title for the protection form. $1 is the title of the page to be (un)protected.',
-'prot_1movedto2' => 'Message description: [[mw:Manual:Interface/1movedto2]]',
-'protect-backlink' => '{{optional|Translate it only if you have to change it, i.e. for RTL wikis}}
+'protectlogpage' => 'Title of [[Special:Log/protect]].',
+'protectlogtext' => 'Text in [[Special:Log/protect]].',
+'protectedarticle' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
+'modifiedarticleprotection' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
+'protect-title' => 'Title for the protection form. $1 is the title of the page to be (un)protected.',
+'prot_1movedto2' => 'Message description: [[mw:Manual:Interface/1movedto2]]',
+'protect-backlink' => '{{optional|Translate it only if you have to change it, i.e. for RTL wikis}}
Shown as subtitle of the protection form. $1 is the title of the page to be (un)protected.',
-'protect-legend' => 'Legend of the fieldset around the input form of the protection form.',
-'protectcomment' => '{{Identical|Reason}}',
-'protectexpiry' => '{{Identical|Expires}}',
-'protect-unchain' => 'Used for a checkbox to be able to change move permissions. See [[meta:Protect]] for more information.',
-'protect-text' => 'Intro of the protection interface. See [[meta:Protect]] for more information.',
-'protect-default' => '{{Identical|Default}}',
-'protect-fallback' => 'This message is used as an option in the protection form on wikis were extra protection levels have been configured.',
-'protect-summary-cascade' => 'Used in edit summary when cascade protecting a page.',
-'protect-expiring' => 'Used in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.
+'protect-legend' => 'Legend of the fieldset around the input form of the protection form.',
+'protectcomment' => '{{Identical|Reason}}',
+'protectexpiry' => '{{Identical|Expires}}',
+'protect-unchain-permissions' => 'This message is a label for a checkbox displayed in the "protect" form just below the first selector (generally the "edit" protection). If the checkbox is checked (default) other selectors will be locked and have the same value as the first selector, otherwise other selectors are editable by the user.
+This message was something like "unlock move protection" in the past.',
+'protect-text' => 'Intro of the protection interface. See [[meta:Protect]] for more information.',
+'protect-default' => '{{Identical|Default}}',
+'protect-fallback' => 'This message is used as an option in the protection form on wikis were extra protection levels have been configured.',
+'protect-summary-cascade' => 'Used in edit summary when cascade protecting a page.',
+'protect-expiring' => 'Used in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.
* $1 is a date and time
* $2 is a date (optional)
* $3 is a time (optional)
{{Identical|Expires $1 (UTC)}}',
-'protect-cascade' => 'See [[meta:Protect]] for more information.',
-'protect-othertime' => 'Used on the page protection form as label for the following input field (text)
+'protect-cascade' => 'See [[meta:Protect]] for more information.',
+'protect-othertime' => 'Used on the page protection form as label for the following input field (text)
{{Identical|Other time}}',
-'protect-othertime-op' => 'Used on the page protection form in the drop down menu
+'protect-othertime-op' => 'Used on the page protection form in the drop down menu
{{Identical|Other time}}',
-'protect-existing-expiry' => 'Shows the existing expiry time in the drop down menu of the protection form ([http://translatewiki.net/w/i.php?title=User:Raymond/test&action=unprotect example])
+'protect-existing-expiry' => 'Shows the existing expiry time in the drop down menu of the protection form ([http://translatewiki.net/w/i.php?title=User:Raymond/test&action=unprotect example])
* $1: date and time of the existing expiry time (kept for backward compatibility purposes)
* $2: date of the existing expiry time
* $3: time of the existing expiry time',
-'protect-otherreason' => 'Shown on the page protection form as label for the following input field (text)
+'protect-otherreason' => 'Shown on the page protection form as label for the following input field (text)
{{Identical|Other/additional reason}}',
-'protect-otherreason-op' => 'Shown on the page protection form in the drop down menu
+'protect-otherreason-op' => 'Shown on the page protection form in the drop down menu
{{Identical|Other reason}}',
-'protect-dropdown' => 'Shown on the page protection form as drop down menu for protection reasons.
+'protect-dropdown' => 'Shown on the page protection form as drop down menu for protection reasons.
<tt><nowiki>* Groupname</nowiki></tt> - defines a new group<br />
<tt><nowiki>** Reason</nowiki></tt> - defines a reason in this group',
-'protect-edit-reasonlist' => 'Shown beneath the page protection form on the right side. It is a link to [[MediaWiki:Protect-dropdown]]. See also {{msg|Delete-edit-reasonlist}} and {{msg|Ipb-edit-dropdown}}.',
-'protect-expiry-options' => "* Description: Options for the duration of the page protection.
+'protect-edit-reasonlist' => 'Shown beneath the page protection form on the right side. It is a link to [[MediaWiki:Protect-dropdown]]. See also {{msg|Delete-edit-reasonlist}} and {{msg|Ipb-edit-dropdown}}.',
+'protect-expiry-options' => "* Description: Options for the duration of the page protection.
* <font color=\"red\">Be careful:</font> '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.
* Example: See e.g. [[MediaWiki:Protect-expiry-options/nl]] if you still don't know how to do it.
-{{Identical|Infinite}}", # display1:time1,display2:time2,...
-'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
-'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
-'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
-'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
-'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
+{{Identical|Infinite}}",
+'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
+'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
+'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
+'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
+'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
# Restrictions (nouns)
'restriction-edit' => "Used on [[Special:ProtectedPages]]. Option in the 'permission' drop-down box.
@@ -2138,6 +2403,7 @@ Shown as subtitle of the protection form. $1 is the title of the page to be (un)
{{Identical|View}}
{{Identical|Restore}}',
+'undeleteviewlink' => 'First part of {{msg-mw|undeletelink}}',
'undeletereset' => 'Shown on [[Special:Undelete]] as button caption.
{{Identical|Reset}}',
'undeleteinvert' => '{{Identical|Invert selection}}',
@@ -2162,22 +2428,29 @@ Shown as subtitle of the protection form. $1 is the title of the page to be (un)
'contributions' => "Display name for the 'User contributions', shown in the sidebar menu of all user pages and user talk pages. Also the page name of the target page. The target page shows an overview of the most recent contributions by a user.",
'contributions-title' => 'The page title in your browser bar, but not the page title. See also {{msg|contributions}}. Parameter $1 is the username.',
'mycontris' => 'In the personal urls page section - right upper corner.',
-'nocontribs' => 'Optional parameter: $1 is the user name', # Optional parameter: $1 is the user name
+'nocontribs' => 'Optional parameter: $1 is the user name',
'uctop' => 'This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagename‎ (edit summary) (top)',
'month' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg|year}}.',
'year' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a inputbox to select a specific year to view the edits made in that year, and the earlier years. See also {{msg|month}}.',
-'sp-contributions-newbies' => 'Text of radio button on special page [[Special:Contributions]].',
-'sp-contributions-newbies-sub' => "Note at the top of the page of results for a search on [[Special:Contributions]] where 'Show contributions for new accounts only' has been selected.",
-'sp-contributions-newbies-title' => 'The page title in your browser bar, but not the page title. See also {{msg|sp-contributions-newbies-sub}}.',
-'sp-contributions-blocklog' => 'Used as a display name for a link to the block log on for example [[Special:Contributions/Mediawiki default]]
+'sp-contributions-newbies' => 'Text of radio button on special page [[Special:Contributions]].',
+'sp-contributions-newbies-sub' => "Note at the top of the page of results for a search on [[Special:Contributions]] where 'Show contributions for new accounts only' has been selected.",
+'sp-contributions-newbies-title' => 'The page title in your browser bar, but not the page title. See also {{msg|sp-contributions-newbies-sub}}.',
+'sp-contributions-blocklog' => 'Used as a display name for a link to the block log on for example [[Special:Contributions/Mediawiki default]]
{{Identical|Block log}}',
-'sp-contributions-logs' => "Appears as an action link in the header of the Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").",
-'sp-contributions-username' => 'This message appears whenever someone requests [[Special:Contributions]].
+'sp-contributions-deleted' => "This is a link anchor used in [[Special:Contributions]]/''name'', when user viewing the page has the right to delete pages, or to restore deleted pages.",
+'sp-contributions-logs' => "Appears as an action link in the header of the Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").",
+'sp-contributions-talk' => "This is a link anchor used in the [[Special:Contributions]]/''usernamename'' pages.
+The link appears in a list of similar ones separated by {{msg-mw|pipe-separator}}, e.g. like this:<br />
+( talk | block log | logs | deleted contributions | rights management )",
+'sp-contributions-userrights' => "This is a link anchor used in [[Special:Contributions]]/''name'', if the user viewing the page has the right to set or alter user rights.",
+'sp-contributions-blocked-notice' => 'Shown on top of contributions special page of currently blocked users. Parameters:
+* $1 is the blocked user. Can be used for GENDER (optional)',
+'sp-contributions-username' => 'This message appears whenever someone requests [[Special:Contributions]].
{{Identical/IP address or username}}',
-'sp-contributions-submit' => '{{Identical|Search}}',
+'sp-contributions-submit' => '{{Identical|Search}}',
# What links here
'whatlinkshere' => 'The text of the link in the toolbox (on the left, below the search menu) going to [[Special:WhatLinksHere]].',
@@ -2221,6 +2494,7 @@ Parameter $1 is the message "[[MediaWiki:Hide/{{SUBPAGENAME}}|hide]]" or "[[Medi
'blockip' => 'The title of the special page [[Special:BlockIP]].
{{Identical|Block user}}',
+'blockip-title' => '{{Identical|Block user}}',
'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:BlockIP]].
{{Identical|Block user}}',
@@ -2241,7 +2515,7 @@ Parameter $1 is the message "[[MediaWiki:Hide/{{SUBPAGENAME}}|hide]]" or "[[Medi
* <font color=\"red\">Be careful:</font> '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.
* Example: See e.g. [[MediaWiki:Ipboptions/nl]] if you still don't know how to do it.
-{{Identical|Infinite}}", # display1:time1,display2:time2,...
+{{Identical|Infinite}}",
'ipbotheroption' => '{{Identical|Other}}',
'ipbotherreason' => '{{Identical|Other/additional reason}}',
'ipbhidename' => 'This is the label for a checkbox in the user block form on [[Special:Block]].',
@@ -2267,6 +2541,10 @@ Parameter $1 is the message "[[MediaWiki:Hide/{{SUBPAGENAME}}|hide]]" or "[[Medi
* $1 - word "{{msg|Hide}}" or "{{msg|Show}}"',
'ipblocklist-submit' => '{{Identical|Search}}',
+'ipblocklist-localblock' => '[[File:Special IPBlockList new.png|thumb|Example]]
+Used on [[Special:IPBlockList]] as header when global blocks exists too.',
+'ipblocklist-otherblocks' => '[[File:Special IPBlockList new.png|thumb|Example]]
+Used on [[Special:IPBlockList]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks.',
'blocklistline' => 'This is the text of an entry in the [[Special:BlockList]].
* $1 is the hour and date of the block.
* $2 is the sysop.
@@ -2280,6 +2558,14 @@ See also {{msg-mw|Blocklogentry}}.',
*See also {{msg-mw|Expiringblock}}
{{Identical|Infinite}}",
+'expiringblock' => 'Parameters:
+* $1 is a date
+* $2 is a time
+
+Usage:
+* Substituted as $4 in in {{msg-mw|Blocklistline|notext=1}}
+* Substituted as $4 in in {{msg-mw|Globalblocking-blocked|notext=1}}
+* See also {{msg-mw|Infiniteblock}}',
'anononlyblock' => 'Part of the log entry of user block.
{{Identical|Anon only}}',
@@ -2292,7 +2578,10 @@ See also {{msg-mw|Blocklogentry}}.',
'blocklogpage' => "The page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").
{{Identical|Block log}}",
-'blocklog-fulllog' => 'Shown at Special:BlockIP at the end of the block log if there are more than 10 entries for this user, see [[Special:BlockIP/Raymond]] as example (visible for sysops only).',
+'blocklog-showlog' => 'Parameters:
+* $1 is the blocked user. Can be used for GENDER (optional)',
+'blocklog-showsuppresslog' => 'Parameters:
+* $1 is the blocked user. Can be used for GENDER (optional)',
'blocklogentry' => 'This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:
* $1 is the blocked user or IP (with link to contributions and talk)
* $2 is the duration of the block (hours, days etc.) or the specified expiry date
@@ -2312,8 +2601,11 @@ See also {{msg-mw|Blocklistline}}.',
'block-log-flags-nousertalk' => 'Used in [[Special:Log/block]] when "Allow this user to edit own talk page while blocked" option hasn\'t been flagged. See also {{msg-mw|Blocklist-nousertalk}}.',
'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
+'ipb-otherblocks-header' => '[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]
+Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks',
'blockme' => 'The page title of [[Special:Blockme]], a feature which is disabled by default.',
'sorbs' => '{{optional}}',
+'cant-see-hidden-user' => 'Used as (red) error message on Special:Block when you try to change (as sysop w/o the hideuser right) the block of a hidden user.',
# Developer tools
'lockdb' => 'The title of the special page [[Special:LockDB]].
@@ -2357,7 +2649,7 @@ Special pages mentioned: {{msg-mw|Doubleredirects}}, {{msg-mw|Brokenredirects}}'
* $1 is the source page as a link with display name
* $2 is the target page as a link with display name
* $3 (optional) is the source page name without a link
-* $4 (optional) is the target page name without a link', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+* $4 (optional) is the target page name without a link',
'movepage-moved-noredirect' => 'The message is shown after pagemove if checkbox "{{int:move-leave-redirect}}" was unselected before moving.',
'movetalk' => 'The text of the checkbox to watch the associated talk page to the page you are moving. This only appears when the talk page is not empty.',
'move-subpages' => 'The text of an option on the special page [[Special:MovePage|MovePage]]. If this option is ticked, any subpages will be moved with the main page to a new title.',
@@ -2380,6 +2672,10 @@ Parameters:
'Destination' can be used instead of 'target' in this message.",
'fix-double-redirects' => 'This is a checkbox in [[Special:MovePage]] which allows to move all redirects from the old title to the new title.',
+'protectedpagemovewarning' => 'Related message: [[MediaWiki:protectedpagewarning/{{#titleparts:{{PAGENAME}}|1|2}}]]
+{{Related|Semiprotectedpagewarning}}',
+'semiprotectedpagemovewarning' => 'Related message: [[MediaWiki:Semiprotectedpagewarning/{{#titleparts:{{PAGENAME}}|1|2}}]]
+{{Related|Semiprotectedpagewarning}}',
# Export
'export' => 'Page title of [[Special:Export]], a page where a user can export pages from a wiki to a file.',
@@ -2395,21 +2691,39 @@ Parameters:
'export-pagelinks' => 'This is an input in [[Special:Export]]',
# Namespace 8 related
-'allmessages' => 'The title of the special page [[Special:AllMessages]].',
-'allmessagesname' => 'Used on [[Special:Allmessages]] meaning "the name of the message".
+'allmessages' => 'The title of the special page [[Special:AllMessages]].',
+'allmessagesname' => 'Used on [[Special:Allmessages]] meaning "the name of the message".
{{Identical|Name}}',
-'allmessagesdefault' => 'The header for the lower row of each column in the table of [[Special:AllMessages]].',
-'allmessagescurrent' => 'The header for the upper row of each column in the table of [[Special:AllMessages]].',
-'allmessagestext' => 'Summary displayed at the top of [[Special:AllMessages]].',
-'allmessagesnotsupportedDB' => 'This message is displayed on [[Special:AllMessages]] on wikis were the configuration variable $wgUseDatabaseMessages is disabled. It means that the MediaWiki namespace is not used.',
-'allmessagesfilter' => 'Label for the input box of message name filter in [[Special:Allmessages]].',
-'allmessagesmodified' => 'It is used as a label on the button in [[Special:Allmessages]], and it switches the display from showing all messages to only the ones different between the default and the local, and vice versa.',
+'allmessagesdefault' => 'The header for the lower row of each column in the table of [[Special:AllMessages]].',
+'allmessagescurrent' => 'The header for the upper row of each column in the table of [[Special:AllMessages]].',
+'allmessagestext' => 'Summary displayed at the top of [[Special:AllMessages]].',
+'allmessagesnotsupportedDB' => 'This message is displayed on [[Special:AllMessages]] on wikis were the configuration variable $wgUseDatabaseMessages is disabled. It means that the MediaWiki namespace is not used.',
+'allmessages-filter-legend' => 'Used in [[Special:AllMessages]].
+
+{{Identical|Filter}}',
+'allmessages-filter' => 'Option used in [[Special:AllMessages]].',
+'allmessages-filter-unmodified' => 'Used in [[Special:AllMessages]].',
+'allmessages-filter-all' => 'Used in [[Special:AllMessages]].
+{{Identical|All}}',
+'allmessages-filter-modified' => 'Used in [[Special:AllMessages]].',
+'allmessages-prefix' => 'Used in [[Special:AllMessages]].',
+'allmessages-language' => 'Used on [[Special:Allmessages]].
+
+{{Identical|Language}}',
+'allmessages-filter-submit' => 'Used on [[Special:Allmessages]].
+
+{{Identical|Go}}',
# Thumbnails
-'thumbnail-more' => '[[Image:Yes.png|thumb|This:]]
+'thumbnail-more' => '[[Image:Yes.png|thumb|This:]]
Tooltip shown when hovering over a little sign of a thumb image, to go to the image page (where it is bigger). For example, see the image at the right:',
-'thumbnail_error' => 'Message shown in a thumbnail frame when creation of the thumbnail fails.
+'thumbnail_error' => 'Message shown in a thumbnail frame when creation of the thumbnail fails.
* $1 is the reason',
+'thumbnail_image-type' => 'This is the parameter 1 of the message {{msg-mw|thumbnail error}}',
+'thumbnail_gd-library' => 'This is the parameter 1 of the message {{msg-mw|thumbnail error}}.
+*$1 is a function name of the GD library',
+'thumbnail_image-missing' => 'This is the parameter 1 of the message {{msg-mw|thumbnail error}}.
+*$1 is the path incl. filename of the missing image',
# Special:Import
'import' => 'The title of the special page [[Special:Import]];',
@@ -2455,6 +2769,7 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
'tooltip-ca-addsection' => 'Tooltip shown when hovering over the "addsection" tab (shown on talk pages).',
'tooltip-ca-viewsource' => 'Tooltip displayed when hovering over the {{msg|viewsource}} tab.',
'tooltip-ca-protect' => '{{Identical|Protect this page}}',
+'tooltip-ca-unprotect' => '{{Identical|Unprotect this page}}',
'tooltip-ca-delete' => 'Tooltip shown when hovering over the "[[MediaWiki:Delete/{{SUBPAGENAME}}|{{int:delete}}]]" tab.
{{Identical|Delete this page}}',
@@ -2468,6 +2783,7 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
{{Identical|Visit the main page}}',
'tooltip-n-mainpage' => 'Tool tip shown when hovering the mouse over the link to [[{{MediaWiki:Mainpage}}]].
{{Identical|Visit the main page}}',
+'tooltip-n-mainpage-description' => '{{Identical|Visit the main page}}',
'tooltip-n-portal' => "Tooltip shown when hovering over the link to 'Community portal' shown in the side bar menu on all pages.",
'tooltip-n-currentevents' => 'Tooltip shown when hovering over {{msg|currentevents}} in the sidebar.',
'tooltip-n-recentchanges' => 'The tooltip when hovering over the "[[MediaWiki:Recentchanges/{{SUBPAGENAME}}|{{int:recentchanges}}]]" link in the sidebar going to the special page [[Special:RecentChanges]].',
@@ -2520,13 +2836,18 @@ This message appears at the very end of the list of names in the message [[Media
Parameters:
* $1 is a link to a user page with the user name as link text
* $2 is a user name for use with GENDER (optional)",
+'anonuser' => "This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
+
+This message is the variable $3 in the message {{msg-mw|lastmodifiedatby}}. This message only appears if the user is anonymous. The variable $1 in this message is a link to the user's contributions.
+
+See also {{msg-mw|Anonusers}} and {{msg-mw|Siteuser}}.",
'lastmodifiedatby' => "This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
* $1: date
* $2: time
* $3: if the user has entered his 'real name' in his preferences then this variable is his 'real name'. If the user has not entered his 'real name' in his preferences then this variable is the message [[Mediawiki:siteuser/{{SUBPAGENAME}}]], which includes his username.
* $4: username in plain text. Can be used for GENDER
-See also [[MediaWiki:Lastmodifiedat/{{SUBPAGENAME}}]].", # $1 date, $2 time, $3 user
+See also [[MediaWiki:Lastmodifiedat/{{SUBPAGENAME}}]].",
'othercontribs' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net - to use type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar).
* $1: the list of author(s) of the revisions preceding the current revision. It appears after the message [[Mediawiki:lastmodifiedatby/{{SUBPAGENAME}}]]. If there are no previous authors this message does not appear at all. If needed the messages [[Mediawiki:siteusers/{{SUBPAGENAME}}]], [[Mediawiki:anonymous/{{SUBPAGENAME}}]] and [[Mediawiki:and/{{SUBPAGENAME}}]] are part of the list of names.
* $2: optional, the count of names in $1',
@@ -2542,6 +2863,15 @@ It should be in a form that fits with [[MediaWiki:Othercontribs/{{SUBPAGENAME}}|
If there is more than one user in the list then the message {{msg-mw|and}} appears before the last name. If $2 is NIL then this message does not appear at all.
See also {{msg-mw|Siteuser}}.',
+'anonusers' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Support|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
+It should be in a form that fits with [[MediaWiki:Othercontribs/{{SUBPAGENAME}}|othercontribs]].
+
+* $1 is a list of IP addresses
+* $2 is the number of IP addresses in $1
+
+If there is more than one user in the list then the message {{msg-mw|and}} appears before the last name. If $2 is NIL then this message does not appear at all.
+
+See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
'creditspage' => "This message is the ''contentSub'' (the grey subtitle) shown when viewing credits of a page (example: {{fullurl:Project:News|action=credits}}). Note that the credits action is disabled by default (currently enabled on translatewiki.net).",
'nocredits' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}) but when there are no credits available. Note that the credits action is disabled by default (currently enabled on translatewiki.net).',
@@ -2566,6 +2896,12 @@ See also {{msg-mw|Siteuser}}.',
'mw_math_modern' => 'In user preferences (math)',
'mw_math_mathml' => 'In user preferences.',
+# Math errors
+'math_syntax_error' => '{{Identical|Syntax error}}',
+
+# Patrolling
+'markedaspatrolledtext' => '{{Identical|Markedaspatrolled}}',
+
# Patrol log
'patrol-log-page' => 'Name of log.',
'patrol-log-header' => 'Text that appears above the log entries on the [[Special:log|patrol log]].',
@@ -2582,9 +2918,6 @@ The message appears after the name of the patroller.',
'previousdiff' => 'Used when viewing the difference between edits. See also {{msg|nextdiff}}.',
'nextdiff' => 'Used when viewing the difference between edits. See also {{msg|previousdiff}}.',
-# Visual comparison
-'visual-comparison' => '{{Identical|Visual comparison}}',
-
# Media information
'mediawarning' => 'Shows up on file description pages if the file type is not listed in [[mw:Manual:$wgTrustedMediaFormats|Manual:$wgTrustedMediaFormats]].',
'imagemaxsize' => 'This is used in Special:Preferences, under Files.',
@@ -2596,6 +2929,8 @@ The message appears after the name of the patroller.',
'svg-long-desc' => 'Displayed under an SVG image at the image description page. Note that argument 3 is a string that includes the file size unit symbol. See for example [[:Image:Wiki.svg]].',
'show-big-image' => 'Displayed under an image at the image description page, when it is displayed smaller there than it was uploaded.',
'show-big-image-thumb' => 'File info displayed on file description page.',
+'file-info-gif-looped' => 'Part of the information provided about a [http://en.wikipedia.org/wiki/Gif .gif file] on its file description page. Looped means repeating in the context of an animated gif. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop. For example of message in use see [[:File:Mouse10.gif]].',
+'file-info-gif-frames' => 'Part of the information provided about a [http://en.wikipedia.org/wiki/Gif .gif file] on its file description page.',
# Special:NewFiles
'newimages' => 'Page title of [[Special:NewImages]].',
@@ -2700,7 +3035,7 @@ Variant option for wikis with variants conversion enabled.',
'metadata-collapse' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link "[[MediaWiki:Metadata-expand/{{SUBPAGENAME}}|{{int:metadata-expand}}]]", you can see more data and information. This message is for the link to hide back the less important data.',
'metadata-fields' => "'''Warning:''' Do not translate list items, only translate the text! So leave \"<tt>* make</tt>\" and the other items exactly as they are.
-The sentences are for explanation only and are not shown to the user.", # Do not translate list items
+The sentences are for explanation only and are not shown to the user.",
# EXIF tags
'exif-imagewidth' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
@@ -2863,14 +3198,14 @@ See also Wikipedia on [http://en.wikipedia.org/wiki/Focal_length#In_photography
'exif-photometricinterpretation-2' => '{{optional}}',
'exif-orientation-1' => '{{Identical|Normal}}
-0th row: top; 0th column: left', # 0th row: top; 0th column: left
-'exif-orientation-2' => '0th row: top; 0th column: right', # 0th row: top; 0th column: right
-'exif-orientation-3' => '0th row: bottom; 0th column: right', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '0th row: bottom; 0th column: left', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '0th row: left; 0th column: top', # 0th row: left; 0th column: top
-'exif-orientation-6' => '0th row: right; 0th column: top', # 0th row: right; 0th column: top
-'exif-orientation-7' => '0th row: right; 0th column: bottom', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '0th row: left; 0th column: bottom', # 0th row: left; 0th column: bottom
+0th row: top; 0th column: left',
+'exif-orientation-2' => '0th row: top; 0th column: right',
+'exif-orientation-3' => '0th row: bottom; 0th column: right',
+'exif-orientation-4' => '0th row: bottom; 0th column: left',
+'exif-orientation-5' => '0th row: left; 0th column: top',
+'exif-orientation-6' => '0th row: right; 0th column: top',
+'exif-orientation-7' => '0th row: right; 0th column: bottom',
+'exif-orientation-8' => '0th row: left; 0th column: bottom',
'exif-componentsconfiguration-1' => '{{optional}}',
'exif-componentsconfiguration-2' => '{{optional}}',
@@ -2955,7 +3290,7 @@ See also Wikipedia on [http://en.wikipedia.org/wiki/Focal_length#In_photography
Macro view is close-up photography. See [http://en.wikipedia.org/wiki/Macro_photography Wikipedia].',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => "Knots: ''Knot'' is a unit of speed on water used for ships, etc., equal to one nautical mile per hour.",
# External editor support
@@ -2976,6 +3311,9 @@ Please leave the link http://www.mediawiki.org/wiki/Manual:External_editors exac
'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also [[MediaWiki:Month/{{SUBPAGENAME}}]].
{{Identical|All}}',
+'limitall' => 'Used on [[Special:AllMessages]] (and potentially other TablePager based tables) to display "all" the messages.
+
+{{Identical|All}}',
# E-mail address confirmation
'confirmemail' => 'Title of [[Special:ConfirmEmail]] page.',
@@ -2992,12 +3330,13 @@ $1 is a message from the e-mail delivery system.',
'confirmemail_loggedin' => 'Explanation on [[Special:ConfirmEmail]] on completion of confirmation.',
'confirmemail_subject' => 'Text in subject box of e-mail sent to user during e-mail address confirmation',
'confirmemail_body' => 'This message is sent as an e-mail to users when they add or change their e-mail adress in [[Special:Preferences]].
-
-*$1 is the IP adress of the user that changed the e-mail adress
+*$1 is the IP address of the user that changed the e-mail address
*$2 is the name of the user
*$3 is a URL to [[Special:ConfirmEmail]]
-*$4 is a time and date
-*$5 is a URL to [[Special:InvalidateEmail]]',
+*$4 is a time and date (duplicated by $6 and $7)
+*$5 is a URL to [[Special:InvalidateEmail]]
+*$6 is a date
+*$7 is a time',
'confirmemail_invalidated' => 'This is the text of the special page [[Special:InvalidateEmail|InvalidateEmail]] (with the title in {{msg-mw|Invalidateemail}}) where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.',
'invalidateemail' => "This is the '''name of the special page''' where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.",
@@ -3041,6 +3380,7 @@ Most languages use a space, but some Asian languages, such as Thai and Chinese,
{{optional}}',
'percent' => '{{optional}}',
+'parentheses' => '{{optional}}',
# Multipage image navigation
'imgmultipageprev' => '{{Identical|Previous page}}',
@@ -3167,7 +3507,7 @@ Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
# Special:Version
'version' => 'Name of special page displayed in [[Special:SpecialPages]]
-{{Identical|Version}}', # Not used as normal message but as header for the special page itself
+{{Identical|Version}}',
'version-extensions' => 'Header on [[Special:Version]].',
'version-specialpages' => 'Part of [[Special:Version]].
@@ -3184,6 +3524,9 @@ There are no such extensions here, so look at [[wikipedia:Special:Version]] for
'version-hook-name' => 'Shown in [[Special:Version]]',
'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
'version-version' => '{{Identical|Version}}',
+'version-svn-revision' => 'This is being used in [[Special:Version]], preceeding the subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345")
+
+{{Identical|Revision}}',
'version-license' => '{{Identical|License}}',
'version-software-product' => 'Shown in [[Special:Version]]',
'version-software-version' => '{{Identical|Version}}',
@@ -3272,4 +3615,13 @@ Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a
'dberr-usegoogle' => 'This message does not allow any wiki nor html markup.',
'dberr-outofdate' => "In this sentence, '''their''' indexes refers to '''Google's''' indexes. This message does not allow any wiki nor html markup.",
+# HTML forms
+'htmlform-submit' => '{{Identical|Submit}}',
+'htmlform-reset' => '{{Identical|Undo}}',
+'htmlform-selectorother-other' => 'Used in drop-down boxes in [[Special:Preferences]] as follows:
+* selection of timezone (date and time tab)
+* stub threshold (appearance tab)
+
+{{Identical|Other}}',
+
);
diff --git a/languages/messages/MessagesQu.php b/languages/messages/MessagesQu.php
index 4b0e3b77..7e79848e 100644
--- a/languages/messages/MessagesQu.php
+++ b/languages/messages/MessagesQu.php
@@ -15,22 +15,22 @@
$fallback = 'es';
$namespaceNames = array(
- NS_MEDIA => 'Midya',
- NS_SPECIAL => 'Sapaq',
- NS_TALK => 'Rimanakuy',
- NS_USER => 'Ruraq',
- NS_USER_TALK => 'Ruraq_rimanakuy',
- NS_PROJECT_TALK => '$1_rimanakuy',
- NS_FILE => 'Rikcha',
- NS_FILE_TALK => 'Rikcha_rimanakuy',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_rimanakuy',
- NS_TEMPLATE => 'Plantilla',
- NS_TEMPLATE_TALK => 'Plantilla_rimanakuy',
- NS_HELP => 'Yanapa',
- NS_HELP_TALK => 'Yanapa_rimanakuy',
- NS_CATEGORY => 'Katiguriya',
- NS_CATEGORY_TALK => 'Katiguriya_rimanakuy',
+ NS_MEDIA => 'Midya',
+ NS_SPECIAL => 'Sapaq',
+ NS_TALK => 'Rimanakuy',
+ NS_USER => 'Ruraq',
+ NS_USER_TALK => 'Ruraq_rimanakuy',
+ NS_PROJECT_TALK => '$1_rimanakuy',
+ NS_FILE => 'Rikcha',
+ NS_FILE_TALK => 'Rikcha_rimanakuy',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_rimanakuy',
+ NS_TEMPLATE => 'Plantilla',
+ NS_TEMPLATE_TALK => 'Plantilla_rimanakuy',
+ NS_HELP => 'Yanapa',
+ NS_HELP_TALK => 'Yanapa_rimanakuy',
+ NS_CATEGORY => 'Katiguriya',
+ NS_CATEGORY_TALK => 'Katiguriya_rimanakuy',
);
$specialPageAliases = array(
@@ -122,6 +122,142 @@ $specialPageAliases = array(
'DeletedContributions' => array( 'QullusqaRurasqa', 'QullusqaLlamkapusqa' ),
);
+$magicWords = array(
+ 'redirect' => array( '0', '#PUSAPUNA', '#REDIRECCIÓN', '#REDIRECT' ),
+ 'notoc' => array( '0', '__YUYARINANNAQ__', '__NOTDC__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__RIKCHASUYUNNAQ__', '__NOGALERÍA__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__YUYARINATAATIPACHIY__', '__FORZARTDC__', '__FORZARTOC__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__YUYARINA__', '__TDC__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__AMARAKITAHUKCHAYCHU__', '__NOEDITARSECCIÓN__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__UMANNAQ__', '__NOTÍTULO__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'KUNANKILLA', 'MESACTUAL', 'MES ACTUAL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'KUNANKILLASUTI', 'NOMBREMESACTUAL', 'NOMBRE MES ACTUAL', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'KUNANKILLASUTIP', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'KUNANKILLAPISI', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'KUNANPUNCHAW', 'DÍAACTUAL', 'DIAACTUAL', 'DÍA ACTUAL', 'DIA ACTUAL', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'KUNANPUNCHAW2', 'DÍAACTUAL2', 'DIAACTUAL2', 'DÍA ACTUAL2', 'DIA ACTUAL2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'KUNANPUNCHAWSUTI', 'NOMBREDÍAACTUAL', 'NOMBREDIAACTUAL', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'KUNANWATA', 'AÑOACTUAL', 'AÑO ACTUAL', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'KUNANPACHA', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'KUNANURA', 'HORA ACTUAL', 'HORAACTUAL', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'KAYPIKILLA', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonthname' => array( '1', 'KAYPIKILLASUTI', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'KAYPIKILLASUTIP', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'KAYPIKILLAPISI', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'KAYPIPUNCHAW', 'DÍALOCAL', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'KAYPIPUNCHAW2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'KAYPIPUNCHAWSUTI', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'KAYPIWATA', 'AÑOLOCAL', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'KAYPIPACHA', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'KAYPIURA', 'HORALOCAL', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'HAYKAPANQA', 'NÚMERODEPÁGINAS', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'HAYKAQILLQA', 'NÚMERODEARTÍCULOS', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'HAYKAWILLANIQI', 'NÚMERODEARCHIVOS', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'HAYKARURAQ', 'NÚMERODEUSUARIOS', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'HAYKARURACHKAQ', 'NÚMERODEUSUARIOSACTIVOS', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'HAYKALLAMKAPUSQA', 'NÚMERODEEDICIONES', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'HAYKAQHAWASQA', 'HAYKAQAWASQA', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'PANQASUTI', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'PANQASUTIE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'SUTIKITI', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'SUTIKITIE', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'RIMANAKUYKITI', 'RIMAYKITI', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'RIMANAKUYKITIE', 'RIMAYKITIE', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'QILLQAKITI', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'QILLQAKITIE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'HUNTAPANQASUTI', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'HUNTAPANQASUTIE', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'URINPANQASUTI', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'URINPANQASUTIE', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'TIKSIPANQASUTI', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'TIKSIPANQASUTIE', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'RIMANAKUYPANQASUTI', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'RIMANAKUYPANQASUTIE', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'QILLQAPANQASUTI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'QILLQAPANQASUTIE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'WILLA:', 'MSG:' ),
+ 'subst' => array( '0', 'WAKCHAY:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'WILLAMUSUQ:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'rikchacha', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'rikchacha=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'paña', 'alliq', 'derecha', 'dcha', 'der', 'right' ),
+ 'img_left' => array( '1', 'lluqi', 'ichuq', 'izquierda', 'izda', 'izq', 'left' ),
+ 'img_none' => array( '1', 'manaima', 'mana', 'ninguna', 'nada', 'no', 'ninguno', 'none' ),
+ 'img_center' => array( '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'inchunnaq', 'sinmarco', 'sin embarcar', 'sinenmarcar', 'sin enmarcar', 'frameless' ),
+ 'img_page' => array( '1', 'panqa=$1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'saywa', 'borde', 'border' ),
+ 'img_baseline' => array( '1', 'tiksisiqi', 'baseline' ),
+ 'img_sub' => array( '1', 'uran', 'sub' ),
+ 'img_super' => array( '1', 'hanan', 'super', 'sup' ),
+ 'img_top' => array( '1', 'hawa', 'top' ),
+ 'img_text_top' => array( '1', 'qillqahawa', 'text-top' ),
+ 'img_middle' => array( '1', 'ukhupi', 'middle' ),
+ 'img_bottom' => array( '1', 'sikipi', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'qillqasiki', 'text-bottom' ),
+ 'img_link' => array( '1', 'tinki=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'wak=$1', 'alt=$1' ),
+ 'int' => array( '0', 'WILLAY:', 'INT:' ),
+ 'sitename' => array( '1', 'TIYAYSUTI', 'SITENAME' ),
+ 'ns' => array( '0', 'SKITI:', 'NS:' ),
+ 'localurl' => array( '0', 'KAYLLAURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'KAYLLAURLE:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'SIRWIQ', 'SERVIDOR', 'SERVER' ),
+ 'servername' => array( '0', 'SIRWIQSUTI', 'NOMBRESERVIDOR', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'QILLQAÑAN', 'QILLQANAN', 'RUTASCRIPT', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'SIMIKAMACHIY:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'QHARIWARMI:', 'QARIWARMI:', 'GÉNERO:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__AMASUTITAHUKCHAYCHU__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__AMASAMIQTAHUKCHAYCHU__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'KUNANSIMANA', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'KUNANSIMANAPUNCHAW', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'KAYLLASIMANA', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'KAYLLASIMANAPUNCHAW', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'MUSUQCHASQAID', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'MUSUQCHASQAPUNCHAW', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'MUSUQCHASQAPUNCHAW2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MUSUQCHASQAKILLA', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'MUSUQCHASQAWATA', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'MUSUQCHASQAPACHAQILLPA', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'MUSUQCHASQARURAQ', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'ACHKA:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'HUNTAURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'HUNTAURLE:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'UCHUYÑAWPAQ:', 'UCHUYNAWPAQ:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'HATUNÑAWPAQ:', 'HATUNNAWPAQ:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'UCHUY:', 'LC:' ),
+ 'uc' => array( '0', 'HATUN:', 'UC:' ),
+ 'raw' => array( '0', 'CHAWA:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'SUTITARIKUCHIY', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ),
+ 'currentversion' => array( '1', 'KUNANMUSUQCHASQA', 'REVISIÓNACTUAL', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'URLLLAWICHAY', 'URL-LLAWICHAY', 'CODIFICAR', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'WATANALLAWICHAY', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'KUNANPACHAQILLPA', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'KAYLLAPACHAQILLPA', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'PURIRIYSANANCHA', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#RIMAY:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'SAMIQRIMAY', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'SUTIKITIPIPANQAKUNA:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'HAYKAKAMACHIQ', 'NÚMEROADMINISITRADORES', 'NÚMEROADMINS', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'YUPAYRIKCHAKUY', 'FORMATONÚMERO', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'PADLLUQI', 'PADICHUQ', 'PADLEFT' ),
+ 'padright' => array( '0', 'PADPAÑA', 'PADALLIQ', 'PADRIGHT' ),
+ 'special' => array( '0', 'sapaq', 'special' ),
+ 'defaultsort' => array( '1', 'ALLINCHAY', 'SIQINCHAY', 'ORDENAR', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'WILLAÑIQIÑAN', 'WILLANIQINAN', 'RUTAARCHIVO', 'RUTARCHIVO', 'FILEPATH:' ),
+ 'tag' => array( '0', 'unanchacha', 'UNANCHACHA', 'etiqueta', 'ETIQUETA', 'tag' ),
+ 'hiddencat' => array( '1', '__PAKASQAKATIGURIYA__', '__CATEGORÍAOCULTA__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'KATIGURIYAPIPANQAKUNA', 'PÁGINASENCATEGORÍA', 'PÁGINASENCAT', 'PAGSENCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'PANQACHHIKAN', 'PANQACHIKAN', 'PANQACHIKA', 'TAMAÑOPÁGINA', 'PAGESIZE' ),
+ 'index' => array( '1', '__UNANCHAY__', '__INDEXAR__', '__INDEX__' ),
+ 'noindex' => array( '1', '__AMAUNANCHAYCHU__', '__NOINDEXAR__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'HUÑUPIYUPAY', 'HUNUPIYUPAY', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__TIYAQLLAPUSAPUNA__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'HAYKAAMACHAY', 'IMASINCHIAMACHAY', 'NIVELDEPROTECCIÓN', 'PROTECTIONLEVEL' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => "T'inkikunata uranpi sikwiy",
@@ -153,6 +289,7 @@ $messages = array(
'tog-enotifminoredits' => "P'anqapi uchuy hukchasqamantapas willawaspa e-chaskita kachamuway",
'tog-enotifrevealaddr' => 'E-chaski imamaytayta rikuchiy willamuwanayki e-chaskikunapi',
'tog-shownumberswatching' => "Rikuchiy hayk'a watiqaq ruraqkuna",
+'tog-oldsig' => "Kachkaqña silq'uyta ñawpaqta qhawallay:",
'tog-fancysig' => "Silq'uyta wiki qillqa hinata llamk'achiy (mana kikinmanta t'inkichaq silq'uy)",
'tog-externaleditor' => "Kikinmanta hawa llamk'apunata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi)",
'tog-externaldiff' => "Kikinmanta hawa ''diff'' (wakin kay) nisqata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi)",
@@ -176,6 +313,13 @@ $messages = array(
'underline-never' => "Mana hayk'appas",
'underline-default' => "Wamp'unap kikinmanta chanin",
+# Font style option in Special:Preferences
+'editfont-style' => "Llamk'apuy k'itichapi sanampa rik'chakuynin:",
+'editfont-default' => "Wamp'unapaq kikinmanta:",
+'editfont-monospace' => "Ch'ulla chhika sanampa",
+'editfont-sansserif' => "Siq'ichannaq sanampa",
+'editfont-serif' => "Siq'ichayuq sanampa",
+
# Dates
'sunday' => 'Intichaw',
'monday' => 'Killachaw',
@@ -235,7 +379,7 @@ $messages = array(
'category-media-header' => '"$1" sutiyuq katiguriyapi multimidya willañiqikuna',
'category-empty' => "''Kay katiguriyaqa ch'usaqmi.''",
'hidden-categories' => '{{PLURAL:$1|Pakasqa katiguriya|Pakasqa katiguriyakuna}}',
-'hidden-category-category' => 'Pakasqa katiguriyakuna', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Pakasqa katiguriyakuna',
'category-subcat-count' => '{{PLURAL:$2|Kay katiguriyapiqa kay qatiq huklla urin katiguriyam.|Kay katiguriyapiqa kay qatiq {{PLURAL:$1|urin katiguriyam|$1 urin katiguriyakunam}}, $2-pura.}}',
'category-subcat-count-limited' => 'Kay katiguriyapiqa kay qatiq {{PLURAL:$1|urin katiguriyam|$1 urin katiguriyakunam}}.',
'category-article-count' => "{{PLURAL:$2|Kay katiguriyapiqa kay qatiq huklla p'anqam.|Kay katiguriyapiqa kay qatiq {{PLURAL:$1|p'anqam|$1 p'anqakunam}}, $2-pura.}}",
@@ -243,6 +387,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kay katiguriyapiqa kay qatiq huklla willañiqim.|Kay katiguriyapiqa kay qatiq {{PLURAL:$1|willañiqim|$1 willañiqikunam}}, $2-pura.}}',
'category-file-count-limited' => 'Kay katiguriyapiqa kay qatiq {{PLURAL:$1|willañiqim|$1 willañiqikunam}}.',
'listingcontinuesabbrev' => 'qatiy',
+'index-category' => "Yuyarinachasqa p'anqakuna",
+'noindex-category' => "Mana yuyarinachasqa p'anqakuna",
'mainpagetext' => "'''MediaWiki nisqa llamp'u kaqqa aypaylla takyachisqañam.'''",
'mainpagedocfooter' => "Wiki llamp'u kaqmanta willasunaykipaqqa [http://meta.wikimedia.org/wiki/Help:Contents Ruraqpaq yanapana] ''(User's Guide)'' sutiyuq p'anqata qhaway.
@@ -253,10 +399,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => "P'anqamanta",
-'article' => 'Qillqa',
-'newwindow' => '(Musuq wintanam kichakun)',
-'cancel' => 'Ama niy',
+'about' => "P'anqamanta",
+'article' => 'Qillqa',
+'newwindow' => '(Musuq wintanam kichakun)',
+'cancel' => 'Ama niy',
+'moredotdotdot' => 'Aswan...',
+'mypage' => "P'anqay",
+'mytalk' => 'Rimachinay',
+'anontalk' => 'Kay IP huchhapaq rimanakuy',
+'navigation' => "Wamp'una",
+'and' => '&#32;-wan',
+
+# Cologne Blue skin
'qbfind' => 'Maskay',
'qbbrowse' => 'Maskapuy',
'qbedit' => "Llamk'apuy",
@@ -264,15 +418,35 @@ $messages = array(
'qbpageinfo' => "P'anqamanta willay",
'qbmyoptions' => 'Akllanaykuna',
'qbspecialpages' => "Sapaq p'anqakuna",
-'moredotdotdot' => 'Aswan...',
-'mypage' => "P'anqay",
-'mytalk' => 'Rimachinay',
-'anontalk' => 'Kay IP huchhapaq rimanakuy',
-'navigation' => "Wamp'una",
-'and' => '&#32;-wan',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Pasaq tapuykuna',
+'faqpage' => 'Project:Pasaq tapuykuna',
+
+# Vector skin
+'vector-action-addsection' => 'Allwiyta yapay',
+'vector-action-delete' => 'Qulluy',
+'vector-action-move' => 'Astay',
+'vector-action-protect' => 'Amachay',
+'vector-action-undelete' => 'Qullusqata paqarichiy',
+'vector-action-unprotect' => 'Amaña amachaychu',
+'vector-namespace-category' => 'Katiguriya',
+'vector-namespace-help' => "Yanapana p'anqa",
+'vector-namespace-image' => 'Willañiqi',
+'vector-namespace-main' => "P'anqa",
+'vector-namespace-media' => "Midya p'anqa",
+'vector-namespace-mediawiki' => 'Willay',
+'vector-namespace-project' => "Ruraykamay p'anqa",
+'vector-namespace-special' => "Sapaq p'anqa",
+'vector-namespace-talk' => 'Rimanakuy',
+'vector-namespace-template' => 'Plantilla',
+'vector-namespace-user' => "Ruraqpa p'anqan",
+'vector-view-create' => 'Kamariy',
+'vector-view-edit' => "Llamk'apuy",
+'vector-view-history' => 'Wiñay kawsayta qhaway',
+'vector-view-view' => 'Ñawiriy',
+'vector-view-viewsource' => 'Pukyu qillqata qhaway',
+'actions' => 'Ruraykuna',
+'namespaces' => "Suti k'itikuna",
+'variants' => "Ñawra rikch'akuykuna",
'errorpagetitle' => 'Pantasqa',
'returnto' => '$1-man kutimuy.',
@@ -322,18 +496,22 @@ $messages = array(
'otherlanguages' => 'Huk simikunapi',
'redirectedfrom' => '($1-manta pusampusqa)',
'redirectpagesub' => "Pusampusqa p'anqa",
-'lastmodifiedat' => "Kay p'anqaqa $2, $1 qhipaq kutitam hukchasqa karqan.", # $1 date, $2 time
+'lastmodifiedat' => "Kay p'anqaqa $2, $1 qhipaq kutitam hukchasqa karqan.",
'viewcount' => "Kay p'anqaqa {{PLURAL:$1|huk kuti|$1 kuti}} watukusqañam.",
'protectedpage' => "Amachasqa p'anqa",
'jumpto' => 'Kayman riy:',
'jumptonavigation' => "wamp'una",
'jumptosearch' => 'maskana',
+'view-pool-error' => "Achachaw, sirwiqkunaqa nisyu sasachakuyniyuqmi kachkan.
+Nisyu ruraqkunam kay p'anqataqa qhawayta munachkan.
+Ama hina kaspa, ratullata suyay kay p'anqata manaraq musuqmanta qhawaykachaspa.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}manta',
'aboutpage' => 'Project:{{SITENAME}}manta',
'copyright' => "Ch'aqtasqakunataqa llamk'achinkiman <i>$1</i> nisqap ruraq hayñinkama",
-'copyrightpagename' => "{{SITENAME}} p'anqayuq ruraqpa iskaychay hayñin",
'copyrightpage' => '{{ns:project}}:Ruraqpa hayñin',
'currentevents' => 'Kunan pacha',
'currentevents-url' => 'Project:Kunan pacha',
@@ -341,8 +519,6 @@ $messages = array(
'disclaimerpage' => 'Project:Sapsilla saywachasqa paqtachiy',
'edithelp' => "Llamk'ana yanapay",
'edithelppage' => 'Help:Qillqa yanapay',
-'faq' => 'Pasaq tapuykuna',
-'faqpage' => 'Project:Pasaq tapuykuna',
'helppage' => 'Help:Yanapana',
'mainpage' => "Qhapaq p'anqa",
'mainpage-description' => "Qhapaq p'anqa",
@@ -419,10 +595,6 @@ Qayna willañiqimanta mañakusqaqa karqan kaymi:
"$1"
kay ruraymantam: "$2".
MySQL-pa kutichisqan pantasqaqa karqan "$3: $4".',
-'noconnect' => "Achachaw, wiki sasachakuyniyuq kaspam willañiqintinwanqa manam t'inkiyta atinchu. <br />
-$1",
-'nodb' => 'Manam atinichu $1 willañiqintinta akllayta',
-'cachederror' => "Kayqa mañakusqayki p'anqamanta iskaychasqam, manachá kunan kachkaq p'anqa hinachu.",
'laggedslavemode' => "'''Paqtataq''': Kay p'anqapiqa manaraqchá kachkanchu aswan qayna musuqchasqakuna.",
'readonly' => "Willañiqintinqa hark'asqam",
'enterlockreason' => "Qillqamuy imarayku hark'asqa karqan, hayk'appas manañachá hark'asqachu kanqa",
@@ -440,6 +612,8 @@ Ama hina kaspa, huk [[Special:ListUsers/sysop|kamachiqman]] willariy, URL nisqa
'readonly_lag' => "Willañiqintinqa mit'alla hark'asqam, sirwiqkuna kikinpachachastin.",
'internalerror' => 'Ukhu pantasqa',
'internalerror_info' => 'Ukhu pantasqa: $1',
+'fileappenderrorread' => 'Manam atinichu "$1"-ta ñawiriyta chupanchachkaspa.',
+'fileappenderror' => 'Manam atinichu "$1"-ta "$2"-man yapayta.',
'filecopyerror' => 'Manam atinichu willañiqita "$1"-manta "$2"-man iskaychayta.',
'filerenameerror' => 'Manam atinichu willañiqip sutinta "$1"-manta "$2"-man hukchayta.',
'filedeleteerror' => 'Manam atinichu "$1" sutiyuq willañiqita qulluyta.',
@@ -449,7 +623,8 @@ Ama hina kaspa, huk [[Special:ListUsers/sysop|kamachiqman]] willariy, URL nisqa
'unexpected' => 'Mana suyaykusqa chani: "$1"="$2".',
'formerror' => "Pantasqa: manam atinichu hunt'ana p'anqata kachayta",
'badarticleerror' => "Kay p'anqapiqa manam saqillanchu kay hina rurayta.",
-'cannotdelete' => "Manam atinichu sananchasqay p'anqata icha willañiqita qulluyta. (P'anqaqa qullusqañachá)",
+'cannotdelete' => 'Manam atinichu "$1" sutiyuq p\'anqata icha willañiqita qulluyta.
+P\'anqaqa pipapas qullusqanñachá.',
'badtitle' => "P'anqap sutinqa manam allinchu",
'badtitletext' => "Kay p'anqap sutinqa manam allinchu, mana allin interwiki t'inkichá icha ch'usaqchá, p'anqa sutipaq mana saqillasqa sananchayuqchá.",
'perfcached' => "Kay willakunaqa ''cache'' nisqa pakasqa hallch'apim kachkan, chayrayku manañachá musuqchasqachu:",
@@ -481,14 +656,12 @@ $2",
'virus-unknownscanner' => 'mana riqsisqa añaw qulluna (antivirus):',
# Login and logout pages
-'logouttitle' => "Llamk'apuy tiyaypa puchukaynin",
'logouttext' => "'''Llamk'apuy tiyayniykiqa puchukasqañam.'''
Sutinnaq kaspaykipas {{SITENAME}}pi wamp'uytam atinki. Mana hinataq munaspaykiqa, [[Special:UserLogin|musuqmanta yaykuy]] ñawpaq icha huk sutiwan. Huk p'anqakunaqa kaqllam rikch'akunqa, ''cache'' nisqa pakasqa hallch'ata mana ch'usaqchaptiykiqa.",
'welcomecreation' => '== Allinmi hamusqayki $1! ==
Rakiqunaykiqa kicharisqañam.
Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinchayta.',
-'loginpagetitle' => 'Yaykuy',
'yourname' => 'Ruraq sutiyki',
'yourpassword' => 'Yaykuna rimayki',
'yourpasswordagain' => 'Yaykuna rimaykita kutipayay',
@@ -499,6 +672,7 @@ Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinch
'nav-login-createaccount' => 'Yaykuy',
'loginprompt' => "{{SITENAME}}man yaykunaykipaqqa wamp'unaykipi <i>cookies</i> nisqakunaman ari ninaykim tiyan.",
'userlogin' => 'Yaykuy / rakiqunata kamariy',
+'userloginnocreate' => 'Yaykuy',
'logout' => 'Lluqsiy',
'userlogout' => 'Lluqsiy',
'notloggedin' => 'Manam yaykurqankichu',
@@ -510,28 +684,8 @@ Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinch
'createaccountmail' => 'chaskipaq',
'badretype' => 'Qusqayki yaykuna rimakunaqa manam kaqllachu.',
'userexists' => 'Munasqayki ruraqpa sutiykiqa kachkanñam. Ama hina kaspa, huk ruraqpa sutiykita qillqamuy.',
-'youremail' => 'E-chaski imamaytayki',
-'username' => 'Ruraqpa sutin:',
-'uid' => 'Ruraqpa ID-nin:',
-'prefs-memberingroups' => 'Kay {{PLURAL:$1|huñuman|huñukunaman}} kapuq:',
-'yourrealname' => 'Chiqap sutiyki*',
-'yourlanguage' => 'Rimay',
-'yourvariant' => "Rimaypa rikch'aynin",
-'yournick' => 'Chutu sutiyki (ruruchinapaq)',
-'badsig' => "Chawa silq'usqaykiqa manam allinchu; HTML sananchakunata llanchiy.",
-'badsiglength' => 'Chutu sutiykiqa nisyu sunim.
-$1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
-'yourgender' => 'Qhari icha warmi:',
-'gender-unknown' => 'Mana riqsisqa',
-'gender-male' => 'Qhari',
-'gender-female' => 'Warmi',
-'prefs-help-gender' => "Munaspaykiqa: llamp'u kaqpa allinlla warmi icha qhari nispa napaykusunaykipaq. Kay willayqa sapsim kanqa.",
-'email' => 'E-chaski',
-'prefs-help-realname' => "* Chiqap sutiyki (munaspaqa): quwaptiykiqa, llamk'apusqaykikunam paywan sananchasqa kanqa.",
'loginerror' => "Pantasqa llamk'apuy tiyaypa qallarisqan",
-'prefs-help-email' => "E-chaskita munaspayki akllayta atinki. Arí nispaykiqa, yaykuna rimata qunqaspayki musuq yaykuna rimata e-chaski imamaytaykiman kachachikamuyta atinki.
-Huk ruraqkunata ruraqpa p'anqaykimanta icha rimachinaykimanta qamman qillqamusunaykiwan atichin qampa sutiykita mana rikuchispa.",
-'prefs-help-email-required' => 'E-chaski imamaytaykitam willaway.',
+'createaccounterror' => 'Manam atinichu rakiqunata kamariyta: $1',
'nocookiesnew' => "Ruraqpa rakiqunaykiqa kichasqañam, ichataq manaraqmi yaykurqankichu. {{SITENAME}}qa <em>kuki</em> nisqakunatam llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita yaykuykachay.",
'nocookieslogin' => "{{SITENAME}} <em>kuki</em> nisqakunata llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita ruraykachay.",
'noname' => 'Manam niwarqankichu ruraqpa allin sutinta.',
@@ -543,9 +697,11 @@ Allin qillqasqaykita llanchiriy, ichataq urapi kaq hunt\'ana p\'anqata llamk\'ac
'nosuchusershort' => 'Nisqayki "<nowiki>$1</nowiki>" sutiyuq ruraqqa manam kanchu.
Allin qillqasqaykita llanchiriy.',
'nouserspecified' => 'Ruraqpa sutiykitam qunayki.',
+'login-userblocked' => "Kay ruraqqa hark'asqam. Manam yaykuyta atinchu.",
'wrongpassword' => 'Qillqamusqayki yaykuna rimaqa manam allinchu. Huk kutita ruraykachay.',
'wrongpasswordempty' => 'Yaykuna rimaykita qillqamuyta qunqarqunkim, huk kutita ruraykachay.',
-'passwordtooshort' => 'Yaykuna rimaykiqa nisyu pisillam icha mana allinmi. {{PLURAL:$1|1 icha aswan sanampayuq|$1 icha aswan sanampayuq}}, ruraqpa sutiykiman mana kaqllapas kananmi.',
+'passwordtooshort' => 'Yaykuna rimayqa {{PLURAL:$1|1 icha aswan sanampayuq|$1 icha aswan sanampayuq}} kananmi.',
+'password-name-match' => 'Yaykuna rimaykiqa ruraqpa sutiykiman mana kaqlla kananmi.',
'mailmypassword' => 'Musuq yaykuna rimata e-chaskiwan kachamuway',
'passwordremindertitle' => "{{SITENAME}}paq musuq mit'alla yaykuna rima",
'passwordremindertext' => 'Pipas (qamchiki, $1 IP huchhayuq tiyaymanta) mañakuwarqan {{SITENAME}}paq musuq yaykuna rimatam e-chaski imamaytaykiman kachayta ($4).
@@ -554,6 +710,7 @@ Mit\'alla yaykuna rimaykiqa kunanmanta {{PLURAL:$5|huk p\'unchawpi|$5 p\'unchawk
Huk runa kay willayta mañakurqaptinqa icha yaykuna rimaykita hukchayta manaña munaspayki, kay willayta qhawarparispa ñawpaq yaykuna rimaykita llamk\'arayachiytam atinki.',
'noemail' => 'Manam kanchu "$1" sutiyuq ruraqpa e-chaski imamaytan.',
+'noemailcreate' => 'Chaniyuq e-chaski imamaytatam willanayki tiyan',
'passwordsent' => 'Musuq yaykuna rimaqa kachasqañam "$1" sutiyuq ruraqpa e-chaski imamaytanman.
Ama hina kaspa, chaskispaykiqa ruraqpa sutiykita nispa musuqmanta yaykuy.',
'blocked-mailpassword' => "IP tiyayniykiqa hark'asqam, chayrayku manam saqillanchu yaykuna rimata musuqmanta chaskiyta, millay rurayta hark'anapaq.",
@@ -572,8 +729,10 @@ Ama hina kaspa, chaskispaykiqa ruraqpa sutiykita nispa musuqmanta yaykuy.',
'createaccount-text' => 'Pipas e-chaski imamaytaykipaq {{SITENAME}}pi ($4) "$2" sutiyuq rakiqunatam kicharqan, "$3" nisqa yaykuna rimayuq. Yaykuspayki yaykuna rimaykita hukchanaykim tiyanman.
Kay willay pantasqa kaptinqa, qhawarparillay.',
+'usernamehasherror' => 'Ruraqpa sutinqa ama iskaychakana (<nowiki>#</nowiki>) sananchayuqchu kachun',
'login-throttled' => 'Nisyu kutitachá kay rakiqunapaq yaykuna rimawan ñaqha yaykuykachanki. Ama hina kaspa, suyariy manaraq musuqmanta yaykuykachaspa.',
'loginlanguagelabel' => 'Rimay: $1',
+'suspicious-userlogout' => "Lluqsiy mañakuyniykiqa mananchasqam karqan, waqllisqa wamp'unamanta icha pakaq proksimanta kachasqa kaspanchá.",
# Password reset dialog
'resetpass' => 'Ruraqpa yaykuna rimanta hukchay',
@@ -585,17 +744,13 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
'retypenew' => 'Musuq yaykuna rimaykita takyachiy:',
'resetpass_submit' => 'Yaykuna rimata hukchaspa yaykuy',
'resetpass_success' => 'Yaykuna rimaykiqa hukchasqañam. Yaykamuchkankim...',
-'resetpass_bad_temporary' => "Mit'alla yaykuna rimaqa manam allinchu. Yaykuna rimaykiqa hukchasqañachá ichataq musuqtach mañakurqanki.",
'resetpass_forbidden' => 'Manam saqillanchu yaykuna rimata hukchayta',
'resetpass-no-info' => "Yaykunaykim tiyan kay p'anqata chiqalla aypanaykipaq.",
'resetpass-submit-loggedin' => 'Yaykuna rimata hukchay',
+'resetpass-submit-cancel' => 'Tatiy',
'resetpass-wrong-oldpass' => "Mit'alla icha kunan yaykuna rimaqa manam allinchu.
Yaykuna rimaykitaqa aypalla hukcharqunkiñachá icha huk mit'alla yaykuna rimata mañakurqunkiñachá.",
'resetpass-temp-password' => "Mit'alla yaykuna rima:",
-'resetpass-log' => "Yaykuna rima kutichiy hallch'a",
-'resetpass-logtext' => 'Kay qatiqpi rikunalla ruraqkunaqa yaykuna rimanta kamachiqwanmi kutichikuchirqan.',
-'resetpass-logentry' => '$1-paq yaykuna rimata hukcharqan',
-'resetpass-comment' => 'Kayrayku yaykuna rima kutichisqa:',
# Edit page toolbar
'bold_sample' => 'Yanasapa qillqa',
@@ -663,7 +818,6 @@ Kunan IP huchhaykiqa $3 nisqam, hark'ay huchhataq #$5 nisqam. Mañakuspaykiqa ka
'blockededitsource' => "'''$1'''-pi '''llamk'apusqaykikuna''' nisqapi qillqasqaqa kaymi:",
'whitelistedittitle' => "Yaykuspallaykim llamk'apuyta atinki.",
'whitelistedittext' => "$1ta ruranaykim tiyan qillqakunata llamk'apunaykipaq.",
-'confirmedittitle' => "E-chaski imamaytaykita takyachiy llamk'apunaykipaq",
'confirmedittext' => "P'anqakunata llamk'apunaykipaqqa e-chaski imamaytaykita takyachinaykim tiyan. Ama hina kaspa, e-chaski imamaytata kicharispa takyachiy [[Special:Preferences|allinkachinaykikunapi]].",
'nosuchsectiontitle' => 'Manam tarinichu chay rakita',
'nosuchsectiontext' => 'Allichaykacharqunki mana kachkaq rakitam.
@@ -679,10 +833,17 @@ Yaykurqaspaqa ''[[Special:ChangePassword|yaykuna rima hukchana]]'' p'anqapi kay
'newarticletext' => "Manaraq kachkaq p'anqatam llamk'apuchkanki. Musuq p'anqata kamariyta munaspaykiqa, qillqarillay. Astawan ñawiriyta munaspaykiqa, [[{{MediaWiki:Helppage}}|yanapana p'anqata]] qhaway. Mana munaspaykitaq, ñawpaq p'anqaman ripuy.",
'anontalkpagetext' => "---- ''Kayqa huk sutinnaq icha mana sutinta llamk'achiq ruraqpa rimanakuyninmi. IP huchhantam hallch'asunchik payta sutinchanapaq. Achka ruraqkunam huklla IP huchhanta llamk'achiyta atin. Sutinnaq ruraq kaspaykiqa, mana qampa rurasqaykimanta willamusqakunata rikuspaykiqa, ama hina kaspa [[Special:UserLogin/signup|rakiqunaykita kamariy]] icha [[Special:UserLogin|yaykuy]] huk sutinnaq ruraqkunawan ama pantasqa kanaykipaq.''",
'noarticletext' => "Kunanqa kay p'anqa ch'usaqmi. Kaytam rurayta atinkiman: kay p'anqap sutinta [[Special:Search/{{PAGENAME}}|huk p'anqakunapi maskay]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hallch'ankunapi maskay] icha [{{fullurl:{{FULLPAGENAME}}|action=edit}} kay p'anqata llamk'apuy].",
+'noarticletext-nopermission' => "Kay p'anqaqa ch'usaqmi.
+Kay p'anqap sutintaqa [[Special:Search/{{PAGENAME}}|huk p'anqakunapi maskaytam atinki]],
+icha payman kapuq <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hallch'akunapi maskaykiman]</span>.",
'userpage-userdoesnotexist' => '"$1" sutiyuq ruraqpa rakiqunanqa manam kanchu. Ama hina kaspa, llanchikuy kay p\'anqata kamarinaykimanta.',
+'userpage-userdoesnotexist-view' => '"$1" sutiyuq rakiqunaqa manam hallch\'asqachu.',
+'blocked-notice-logextract' => "Kay ruraqqa hark'asqam kachkan.
+Hark'ay hallch'api qhipaq hak'asqataqa kaypim rikunki willasunaykipaq:",
'clearyourcache' => "'''Paqtataq''': Willañiqita waqaycharquspaykiqa, wamp'unaykip ''cache'' nisqa pakasqa waqaychananta ch'usaqchanaykichá tiyanman hukchasqaykikunata rikunaykipaq:
'''Mozilla / Firefox / Safari:''' ''Shift'' yatachkaspa ''Reload'' ñit'iy, ichataq ''Ctrl-F5'' icha ''Ctrl-R'' yatay (''Command-R'' Macintosh nisqapi); '''Konqueror: '''''Reload'' ñit'iy icha ''F5'' yatay; '''Opera:''' ''cache'' nisqata ch'usaqchay kaypi: ''Tools → Preferences;'' '''Internet Explorer:''' ''Ctrl'' yatachkaspa ''Refresh'' ñit'iy, icha ''Ctrl-F5'' yatay.",
-'usercssjsyoucanpreview' => "'''Kunay:''' «Ñawpaqta qhawallay» nisqa ñit'inata llamk'achiy musuq css/js qhawanaykipaq, manaraq waqaychaspa.",
+'usercssyoucanpreview' => "'''Kunay:''' \"{{int:showpreview}}\" nisqa ñit'inata llamk'achiy musuq css nisqata qhawanaykipaq, manaraq waqaychaspa.",
+'userjsyoucanpreview' => "'''Kunay:''' \"{{int:showpreview}}\" nisqa ñit'inata llamk'achiy musuq JavaScript nisqata qhawanaykipaq, manaraq waqaychaspa.",
'usercsspreview' => "Yuyariy, qhawarillachkankim ruraqpa CSS-niykita, manaraqmi waqaychasqachu!'''",
'userjspreview' => "'''Yuyariy, qhawarillachkankim ruraqpa JavaScript-niykita, manaraqmi waqaychasqachu!'''",
'userinvalidcssjstitle' => "'''Paqtataq:''' Manam kanchu \"\$1\" qara. Yuyariy, kikinpa .css, .js p'anqankunaqa uchuy sanampa umalliyuqmi, ahinataq {{ns:user}}:Foo/monobook.css manataq {{ns:user}}:Foo/Monobook.css nisqachu.",
@@ -725,28 +886,34 @@ Ama hina kaspa, hamut'ariy kay p'anqata rakiyta.'''",
Qillqasqaykita iskaychaspa antañiqiqniykipi willañiqiman llut'amuspa chaypi waqaychariy. Kunanmanta huk pachallapi musuqmanta waqaychaykachay.'''
Hark'aq kamachiqqa kaytam nirqan: $1, kayraykum nispa.",
-'protectedpagewarning' => "'''PAQTATAQ: Kay p'anqaqa llamk'apuymanta amachasqam kamachiqkunallap hukchananpaq.'''",
-'semiprotectedpagewarning' => "'''Musyay:''' Kay p'anqaqa amachasqam rakiqunayuq ruraqkunallap hukchananpaq.",
+'protectedpagewarning' => "'''Paqtataq: Kay p'anqaqa llamk'apuymanta amachasqam kamachiqkunallap hukchananpaq.'''
+Hallch'api qhipaq kaq yaykuchisqataqa kay qatiqpim rikunki willasunaykipaq:",
+'semiprotectedpagewarning' => "'''Musyay:''' Kay p'anqaqa amachasqam rakiqunayuq ruraqkunallap hukchananpaq.
+Hallch'api qhipaq kaq yaykuchisqataqa kay qatiqpim rikunki willasunaykipaq:",
'cascadeprotectedwarning' => "'''Paqtataq:''' Kay p'anqaqa amachasqam, kamachiqkunallam llamk'apuyta atin, ''phaqcha'' nisqa kamachiwan amachasqa kay {{PLURAL:$1|p'anqapim|p'anqakunapim}} ch'aqtasqa kaspanmi:",
-'titleprotectedwarning' => "'''PAQTATAQ: Kay p'anqaqa hark'asqam, chayrayku [[Special:ListGroupRights|sapaq hayñiyuqlla ruraqkunam]] kamariyta atin.'''",
-'templatesused' => "Kay p'anqapi llamk'achisqa plantillakuna:",
-'templatesusedpreview' => "Kay qhawariypi llamk'achisqa plantillakuna:",
-'templatesusedsection' => "Kay p'anqa rakipi llamk'achisqa plantillakuna:",
+'titleprotectedwarning' => "'''Paqtataq: Kay p'anqaqa hark'asqam, chayrayku [[Special:ListGroupRights|sapaq hayñiyuqlla ruraqkunam]] kamariyta atin.'''
+Hallch'api qhipaq kaq yaykuchisqataqa kay qatiqpim rikunki willasunaykipaq:",
+'templatesused' => "Kay p'anqapi llamk'achisqa {{PLURAL:$1|plantilla|plantillakuna}}:",
+'templatesusedpreview' => "Kay qhawariypi llamk'achisqa {{PLURAL:$1|plantilla|plantillakuna}}:",
+'templatesusedsection' => "Kay p'anqa rakipi llamk'achisqa {{PLURAL:$1|plantilla|plantillakuna}}:",
'template-protected' => '(amachasqa)',
'template-semiprotected' => '(rakilla amachasqa)',
'hiddencategories' => "Kay p'anqaqa {{PLURAL:$1|1 pakasqa katiguriya|$1 pakasqa katiguriyakuna}}manmi kapun:",
'nocreatetitle' => "P'anqa kamariyqa saywachasqam",
'nocreatetext' => "{{SITENAME}}piqa saywachasqam musuq p'anqakunata kamariy. Ñawpaqman kutiytam atinkiman kachkaqña p'anqata llamk'apuspa. Astawantaq, [[Special:UserLogin|yaykuy icha musuq rakiqunata kichariy]].",
'nocreate-loggedin' => "Manam saqillasunkichu musuq p'anqakunata kamariyta.",
+'sectioneditnotsupported-title' => "Raki allichayqa manam q'imisqachu",
+'sectioneditnotsupported-text' => "Raki allichayqa kay p'anqapi manam q'imisqachu.",
'permissionserrors' => 'Saqillay pantasqakuna',
'permissionserrorstext' => 'Manam saqillasunkichu, {{PLURAL:$1|kayraykum|kayraykum}}:',
'permissionserrorstext-withaction' => 'Manam saqillasunkichu $2-ta, {{PLURAL:$1|kayraykum|kayraykum}}:',
-'recreate-deleted-warn' => "'''Paqtataq: Ñawpaqta qullusqaña p'anqatam musuqmanta kamarichkanki.'''
+'recreate-moveddeleted-warn' => "'''Paqtataq: Ñawpaqta qullusqaña p'anqatam musuqmanta kamarichkanki.'''
Hamut'arillay, chayaqillachu manallachu kay p'anqata kamariy.
-Kaymi kay p'anqamanta qulluy hallch'a:",
-'deleted-notice' => "Kay p'anqaqa qullusqam. Kay qatiq qulluy hallch'apim qullusqamanta rikunki.",
-'deletelog-fulllog' => "Hunt'a hallch'asqata qhaway",
+Kaymi kay p'anqamanta qulluy hallch'a, astay hallch'apas, yanapasunaykipaq:",
+'moveddeleted-notice' => "Kay p'anqaqa qullusqam.
+Kaymi kay p'anqamanta qulluy hallch'a, astay hallch'apas, willasunaykipaq:",
+'log-fulllog' => "Hunt'a hallch'ata qhaway",
'edit-hook-aborted' => "Ch'iwinam llamk'apuyta t'ipirqan.
Manam nirqanchu imarayku.",
'edit-gone-missing' => "Manam atirqanichu p'anqata musuqchayta.
@@ -769,6 +936,7 @@ Chay niykunaqa manam chaninchasqachu.",
'post-expand-template-argument-category' => "Mana chaninchasqa plantilla niyniyuq p'anqakuna",
'parser-template-loop-warning' => 'Muyurikuq pusapunam tarisqa: [[$1]]',
'parser-template-recursion-depth-warning' => 'Pusapunap muyurikuy saywanmi yallisqa ($1)',
+'language-converter-depth-warning' => "Rimay t'ikranap ukhu kayninpa saywanqa yallisqam ($1)",
# "Undo" feature
'undo-success' => 'Rurasqata kutichiyta atinkim. Manaraq kutichispaykiqa, kay qatiq wakichayta qhawariy rikunaykipaq chiqapta munasqaykichu manallachu, chaymantataq waqaychay kutichinapaq.',
@@ -788,7 +956,7 @@ $3-qa nirqan kayraykum: ''$2''",
'currentrev' => 'Kunan hukchasqa',
'currentrev-asof' => 'Kunan musuqchasqa, $1 pacha',
'revisionasof' => "$1-pa llamk'apusqan",
-'revision-info' => "Kayqa p'anqap mawk'a llamk'apusqa kasqanmi, $1 p'unchawpi $2-pa rurasqan", # Additionally available: $3: revision id
+'revision-info' => "Kayqa p'anqap mawk'a llamk'apusqa kasqanmi, $1 p'unchawpi $2-pa rurasqan",
'previousrevision' => '← ñawpaq hukchasqa',
'nextrevision' => 'Qatiq hukchasqa →',
'currentrevisionlink' => 'Kunan hukchasqata qhaway',
@@ -800,7 +968,7 @@ $3-qa nirqan kayraykum: ''$2''",
'histlegend' => "Sut'ichana: (kunan) = p'anqap kunan kachkayninwan huk kaykuna,
(ñawpaq) = ñawpaq kachkasqanwan huk kaykuna, a = aslla hukchasqa",
'history-fieldset-title' => 'Wiñay kawsaypi maskay',
-'deletedrev' => '[qullusqa]',
+'history-show-deleted' => 'Qullusqalla',
'histfirst' => 'Ñawpaqkuna',
'histlast' => 'Qhipaqkuna',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -809,71 +977,116 @@ $3-qa nirqan kayraykum: ''$2''",
# Revision feed
'history-feed-title' => 'Hukchasqakunap wiñay kawsaynin',
'history-feed-description' => "Kay p'anqata hukchasqakunap wiñay kawsaynin",
-'history-feed-item-nocomment' => '$1, $2-pi', # user at time
+'history-feed-item-nocomment' => '$1, $2-pi',
'history-feed-empty' => "Mañakusqayki p'anqaqa manam kanchu.
Wikimanta qullusqachá icha astasqachá.
Musuq chaniyuq p'anqakunata [[Special:Search|wikipi maskaykachay]].",
# Revision deletion
-'rev-deleted-comment' => '(qullusqa rimapuy)',
-'rev-deleted-user' => '(qullusqa ruraqpa sutin)',
-'rev-deleted-event' => "(qullusqa hallch'a)",
-'rev-deleted-text-permission' => "P'anqamanta kay llamk'apusqaqa '''qullusqam'''.
-Astawan rikunki [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
-'rev-deleted-text-view' => "P'anqamanta kay llamk'apusqaqa '''qullusqam'''.
-Kay wikipi kamachiq kaspaykim rikuyta atinkim;
-astawan rikunki [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
-'rev-deleted-no-diff' => "Kay hukchasqataqa manam rikuyta atinkichu, huk musuqchasqa '''qullusqa''' kaptinmi.
-Imaymanacha yuyaykunataqa [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apim] rikunkiman.",
-'rev-deleted-unhide-diff' => "Kay wakin kaypaqqa huk musuqchasqa '''qullusqam'''.
-Imaymanacha yuyaykunataqa [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apim] rikunkiman.
+'rev-deleted-comment' => '(qullusqa rimapuy)',
+'rev-deleted-user' => '(qullusqa ruraqpa sutin)',
+'rev-deleted-event' => "(qullusqa hallch'a)",
+'rev-deleted-user-contribs' => "[ruraqpa sutinqa icha IP tiyayqa qichusqam - musuqchasqaqa llamk'apusqakunamanta pakasqam]",
+'rev-deleted-text-permission' => "P'anqamanta kay llamk'apusqaqa '''qullusqam'''.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
+'rev-deleted-text-unhide' => "P'anqamanta kay llamk'apusqaqa '''qullusqam'''.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].
+Kamachiq kaspayki kunanraqpas munaspaykiqa, [$1 kay wakin kayta qhawayta] atinkiraqmi.",
+'rev-suppressed-text-unhide' => "P'anqamanta kay llamk'apusqaqa '''ñit'ipasqam'''.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ñit'ipay hallch'apichá].
+Kamachiq kaspayki kunanraqpas munaspaykiqa, [$1 kay wakin kayta qhawayta] atinkiraqmi.",
+'rev-deleted-text-view' => "P'anqamanta kay llamk'apusqaqa '''qullusqam'''.
+Kamachiq kaspaykiqa rikuyta atinkim;
+astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
+'rev-suppressed-text-view' => "P'anqamanta kay llamk'apusqaqa '''ñit'ipasqam'''.
+Kamachiq kaspayki kunanraqpas munaspaykiqa, qhawayta atinkiraqmi.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ñit'ipay hallch'apichá].",
+'rev-deleted-no-diff' => "Kay hukchasqataqa manam rikuyta atinkichu, huk musuqchasqa '''qullusqa''' kaptinmi.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
+'rev-suppressed-no-diff' => "Kay wakin kaytaqa manam rikuyta atinkichu, huk musuqchasqa '''qullusqa''' kaptinmi.",
+'rev-deleted-unhide-diff' => "Kay wakin kaypaqqa huk musuqchasqa '''qullusqam'''.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].
+Kamachiq kaspayki kunanraqpas munaspaykiqa, [$1 kay wakin kayta qhawayta] atinkiraqmi.",
+'rev-suppressed-unhide-diff' => "Kay wakin kaypaq huk musuqchasqaqa '''ñit'ipasqam'''.
+Astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ñit'ipay hallch'apichá].
Kamachiq kaspayki kunanraqpas munaspaykiqa, [$1 kay wakin kayta qhawayta] atinkiraqmi.",
-'rev-delundel' => 'rikuchiy/pakay',
-'revisiondelete' => "Mawk'a llamk'apusqakunata qulluy/paqarichiy",
-'revdelete-nooldid-title' => "Taripana llamk'apusqaqa manam allinchu",
-'revdelete-nooldid-text' => "Manam taripana llamk'apusqata akllarqunkichu imawanchus kay ruranata aknachanaykipaq, icha akllasqa llamk'apusqaqa manam kanchu, icha kachkaq llamk'apusqata pakaykachachkanki.",
-'revdelete-nologtype-title' => "Mana ima qusqa hallch'a layapas",
-'revdelete-nologtype-text' => "Manam ima hallch'a layatapas qurqankichu kay rurayta qallarinaykipaq.",
-'revdelete-toomanytargets-title' => 'Nisyu taripanakuna',
-'revdelete-toomanytargets-text' => 'Nisyu taripana layakunatam churarqanki kay rurayta qallarinaykipaq.',
-'revdelete-nologid-title' => "Hallch'asqa willayqa manam allinchu",
-'revdelete-nologid-text' => "Manam taripana hallch'a rurayta churarqankichu kay ruranata qallarinaykipaq, icha churasqayki willayqa manam kanchu.",
-'revdelete-selected' => "'''{{PLURAL:$2|Akllasqa llamk'apusqa|Akllasqa llamk'apusqakuna}} [[:$1]]-manta:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Akllasqa tukusqa|Akllasqa tukusqakuna}} hallch'api:'''",
-'revdelete-text' => "'''Qullusqa llamk'apusqakunaqa p'anqap wiñay kawsayninpi hallch'ankunapipas paqarinqaraqmi, samiqninpa rakinkunataq manam uyanalla qhawanapaqchu.'''
-{{SITENAME}}pi huk kamachiqkunaqa p'anqap pakasqa samiqninta qhawaspa qullusqa kaymanta kutichiyta atinkuraqmi kay kaqlla uyapuratam llamk'achispa, kay wikip kamariqninkuna mana huk saywachanakunata tiyachiptinqa.
-
-Ama hina kaspa, ruraykachanaykita takyachiy, saqinakunata riqsispayki, [[{{MediaWiki:Policy-url}}|rurana tiksikama]] ruraspayki.",
-'revdelete-suppress-text' => "Pakay ruranata '''kaylla kaptin''' llamk'achiy:
+'rev-deleted-diff-view' => "Kay wakin kaypaq huk musuqchasqaqa '''qullusqam'''.
+Kamachiq kaspayki kay wakin kayta qhawayta atinkim; astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy hallch'apichá].",
+'rev-suppressed-diff-view' => "Kay wakin kaypaq huk musuqchasqaqa '''ñit'ipasqam'''.
+Kamachiq kaspayki kay wakin kayta qhawayta atinkim; astawanchá rikunkiman [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ñit'ipay hallch'apichá].",
+'rev-delundel' => 'rikuchiy/pakay',
+'rev-showdeleted' => 'rikuchiy',
+'revisiondelete' => "Mawk'a llamk'apusqakunata qulluy/paqarichiy",
+'revdelete-nooldid-title' => "Taripana llamk'apusqaqa manam allinchu",
+'revdelete-nooldid-text' => "Manam taripana llamk'apusqata akllarqunkichu imawanchus kay ruranata aknachanaykipaq, icha akllasqa llamk'apusqaqa manam kanchu, icha kachkaq llamk'apusqata pakaykachachkanki.",
+'revdelete-nologtype-title' => "Mana ima qusqa hallch'a layapas",
+'revdelete-nologtype-text' => "Manam ima hallch'a layatapas qurqankichu kay rurayta qallarinaykipaq.",
+'revdelete-nologid-title' => "Hallch'asqa willayqa manam allinchu",
+'revdelete-nologid-text' => "Manam taripana hallch'a rurayta churarqankichu kay ruranata qallarinaykipaq, icha churasqayki willayqa manam kanchu.",
+'revdelete-no-file' => 'Sapaqchasqa willañiqiqa manam kanchu.',
+'revdelete-show-file-confirm' => 'Allinta yachankichu "<nowiki>$1</nowiki>" willañiqimanta qullusqa $2-manta $3-pi musuqchasqata qhawayta munaspayki?',
+'revdelete-show-file-submit' => 'Arí',
+'revdelete-selected' => "'''{{PLURAL:$2|Akllasqa llamk'apusqa|Akllasqa llamk'apusqakuna}} [[:$1]]-manta:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Akllasqa tukusqa|Akllasqa tukusqakuna}} hallch'api:'''",
+'revdelete-text' => "'''Qullusqa llamk'apusqakunaqa p'anqap wiñay kawsayninpi hallch'ankunapipas paqarinqaraqmi, samiqninpa rakinkunataq manam uyanalla qhawanapaqchu.'''
+{{SITENAME}}pi huk kamachiqkunaqa p'anqap pakasqa samiqninta qhawaspa qullusqa kaymanta kutichiyta atinkuraqmi kay kaqlla uyapuratam llamk'achispa, kay wikip kamariqninkuna mana huk saywachanakunata tiyachiptinqa.",
+'revdelete-confirm' => 'Ama hina kaspa, takyachiy munayniykita, qatiqninkunata riqsiyniykita, [[{{MediaWiki:Policy-url}}|kawpaykama]] rurayniykitapas.',
+'revdelete-suppress-text' => "Pakay ruranata '''kaylla kaptin''' llamk'achiy:
* Runamanta mana allin willakuna
*: ''wasi tiyay imamaytakuna, karu rimay huchhakuna, allin kawsay tarikuq wasimanta huchhakuna, chay hinakunapas.''",
-'revdelete-legend' => 'Rikunapaq saywachanakunata tiyachiy',
-'revdelete-hide-text' => 'Qhawana qillqata pakay',
-'revdelete-hide-name' => 'Rurayta paqtaytapas pakay',
-'revdelete-hide-comment' => "Llamk'apuymanta willapuyta pakay",
-'revdelete-hide-user' => 'Ruraqpa sutinta/IP huchhanta pakay',
-'revdelete-hide-restricted' => "Kamachiqkunamanta willakunata huk ruraqkunamanta hina hark'ay",
-'revdelete-suppress' => 'Kamachiqkunamantapas willakunata huk ruraqkunamanta hina raqpay',
-'revdelete-hide-image' => 'Willañiqip samiqninta pakay',
-'revdelete-unsuppress' => "Qullusqamanta paqarisqa llamk'apusqakunapaq saywachanakunata raqpay",
-'revdelete-log' => 'Kayrayku:',
-'revdelete-submit' => "Akllasqa llamk'apusqapaq llamk'achiy",
-'revdelete-logentry' => "hukchasqa [[$1]]-paq llamk'apusqap rikunalla kaynin",
-'logdelete-logentry' => 'hukchasqa [[$1]]-paq tukusqap rikunalla kaynin',
-'revdelete-success' => "'''Llamk'apusqap rikunalla kayninqa aypalla musuqchasqañam.'''",
-'logdelete-success' => "'''Tukusqap rikunalla kayninqa aypalla hukchasqañam.'''",
-'revdel-restore' => 'Rikunalla kayta hukchay',
-'pagehist' => "P'anqap wiñay kawsaynin",
-'deletedhist' => 'Qullusqa wiñay kawsay',
-'revdelete-content' => 'samiq',
-'revdelete-summary' => "yuyarinata llamk'apuy",
-'revdelete-uname' => 'ruraqpa sutin',
-'revdelete-restricted' => "kamachiqkunaman llamk'achisqa saywachanakuna",
-'revdelete-unrestricted' => 'kamachiqkunamanta qichusqa saywachanakuna',
-'revdelete-hid' => 'pakasqa $1',
-'revdelete-unhid' => 'rikuchisqa $1',
-'revdelete-log-message' => '$1, $2 {{PLURAL:$2|musuqchasqa|musuqchasqakuna}}paq',
-'logdelete-log-message' => '$1, $2 {{PLURAL:$2|tukusqa|tukusqakuna}}paq',
+'revdelete-legend' => 'Rikunapaq saywachanakunata tiyachiy',
+'revdelete-hide-text' => 'Qhawana qillqata pakay',
+'revdelete-hide-image' => 'Willañiqip samiqninta pakay',
+'revdelete-hide-name' => 'Rurayta paqtaytapas pakay',
+'revdelete-hide-comment' => "Llamk'apuymanta willapuyta pakay",
+'revdelete-hide-user' => 'Ruraqpa sutinta/IP huchhanta pakay',
+'revdelete-hide-restricted' => "Kamachiqkunamanta willakunata huk ruraqkunamanta hina hark'ay",
+'revdelete-radio-same' => '(ama hukchaychu)',
+'revdelete-radio-set' => 'Arí',
+'revdelete-radio-unset' => 'Ama kachunchu',
+'revdelete-suppress' => 'Kamachiqkunamantapas willakunata huk ruraqkunamanta hina raqpay',
+'revdelete-unsuppress' => "Qullusqamanta paqarisqa llamk'apusqakunapaq saywachanakunata raqpay",
+'revdelete-log' => 'Kayrayku:',
+'revdelete-submit' => "Akllasqa {{PLURAL:$1|llamk'apusqapaq|llamk'apusqakunapaq}} llamk'achiy",
+'revdelete-logentry' => "hukchasqa [[$1]]-paq llamk'apusqap rikunalla kaynin",
+'logdelete-logentry' => 'hukchasqa [[$1]]-paq tukusqap rikunalla kaynin',
+'revdelete-success' => "'''Llamk'apusqap rikunalla kayninqa aypalla musuqchasqañam.'''",
+'revdelete-failure' => "'''Manam atinichu musuqchasqakunap rikunalla kayninta musuqchayta:'''
+$1",
+'logdelete-success' => "'''Tukusqap rikunalla kayninqa aypalla hukchasqañam.'''",
+'logdelete-failure' => "'''Manam atinichu hallch'ap rikunalla kayninta churayta:'''
+$1",
+'revdel-restore' => 'Rikunalla kayta hukchay',
+'pagehist' => "P'anqap wiñay kawsaynin",
+'deletedhist' => 'Qullusqa wiñay kawsay',
+'revdelete-content' => 'samiq',
+'revdelete-summary' => "yuyarinata llamk'apuy",
+'revdelete-uname' => 'ruraqpa sutin',
+'revdelete-restricted' => "kamachiqkunaman llamk'achisqa saywachanakuna",
+'revdelete-unrestricted' => 'kamachiqkunamanta qichusqa saywachanakuna',
+'revdelete-hid' => 'pakasqa $1',
+'revdelete-unhid' => 'rikuchisqa $1',
+'revdelete-log-message' => '$1, $2 {{PLURAL:$2|musuqchasqa|musuqchasqakuna}}paq',
+'logdelete-log-message' => '$1, $2 {{PLURAL:$2|tukusqa|tukusqakuna}}paq',
+'revdelete-hide-current' => "Pantasqa, imatapas pakaspa $2 pacha, $1 p'unchawmanta: kayqa kunan kachkaq musuqchasqam.
+Manam pakanallachu.",
+'revdelete-show-no-access' => 'Pantasqa, imatapas rikuchispa $2 pacha, $1 p\'unchawmanta: kayqa "manam tukuykunapaqchu" nispa sananchasqam.
+Manam aypayta atinkichu.',
+'revdelete-modify-no-access' => 'Pantasqa, imatapas hukchaspa $2 pacha, $1 p\'unchawmanta: kayqa "manam tukuykunapaqchu" nispa sananchasqam.
+Manam aypayta atinkichu.',
+'revdelete-modify-missing' => 'Pantasqa, ID $1 sutiyuqta hukchaspa: manam kanchu willañiqintinpi!',
+'revdelete-no-change' => "'''Paqtataq:''' $2 pacha, $1 p'unchawmanta kaqqa munasqa rikunalla kayniyuqñam.",
+'revdelete-concurrent-change' => "Pantasqa, imatapas hukchaspa $2 pacha, $1 p'unchawmanta: pipas rikunalla kaynintaqa hukcharqunñam qam hukchaykachachkaptiyki.
+Ama hina kaspa, hallch'akunapi qhaway.",
+'revdelete-only-restricted' => "Pantasqa tukurqan $2 p'unchawmanta $1 pachamanta ilimintuta pakaykachaptiyki: Manam atinkichu ilimintukunata kamachiqkunamanta pakayta mana wakin pakay akllanatapas akllaspa.",
+'revdelete-reason-dropdown' => "*Qulluypaq sapsi raykukuna
+** Ruraqpa hayñinta k'irisqa
+** Runamanta mana allin willaykuna
+** Runata k'amiqchá willaykuna",
+'revdelete-otherreason' => 'Huk/aswan rayku:',
+'revdelete-reasonotherlist' => 'Huk rayku',
+'revdelete-edit-reasonlist' => "Qulluypaq raykukunata llamk'apuy",
+'revdelete-offender' => 'Musuqchaq ruraq:',
# Suppression log
'suppressionlog' => "Ñit'ipay hallch'asqa",
@@ -909,67 +1122,13 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'mergelogpagetext' => "Kay qatiqpiqa aswan ñaqha huk p'anqa wiñay kawsaymanta huk p'anqa wiñay kawsayman huñusqakunatam rikunki.",
# Diffs
-'history-title' => '"$1" p\'anqata hukchasqakunap wiñay kawsaynin',
-'difference' => '(Hukchasqapura wak kaynin)',
-'lineno' => "Siq'i $1:",
-'compareselectedversions' => "Akllasqa llamk'apusqakunata wakichay",
-'visualcomparison' => 'Rikuspa tupanachiy',
-'wikicodecomparison' => 'Wiki qillqawan tupanachiy',
-'editundo' => 'kutichiy',
-'diff-multi' => "({{PLURAL:$1|Chawpipi huk llamk'apusqaqa manam rikuchisqachu|Chawpipi $1 llamk'apusqaqa manam rikuchisqachu}}.)",
-'diff-movedto' => '$1-man astasqa',
-'diff-styleadded' => '$1 allin rikuchina yapasqa',
-'diff-added' => '$1 yapasqa',
-'diff-changedto' => '$1-man hukchasqa',
-'diff-movedoutof' => '$1-manta astasqa',
-'diff-styleremoved' => '$1 allin rikuchina qichusqa',
-'diff-removed' => '$1 qichusqa',
-'diff-changedfrom' => '$1-manta hukchasqa',
-'diff-src' => 'pukyu qillqa',
-'diff-withdestination' => '$1 chayamunawan',
-'diff-with' => '&#32;kaywan: $1 $2',
-'diff-with-final' => '&#32;-wan $1 $2',
-'diff-width' => 'kinraynin',
-'diff-height' => 'sayaynin',
-'diff-p' => "'''rakiri'''",
-'diff-blockquote' => "'''nisqa'''",
-'diff-h1' => "'''uma sinru (1 ñiqin hanaq)'''",
-'diff-h2' => "'''uma sinru (2 ñiqin hanaq)'''",
-'diff-h3' => "'''uma sinru (3 ñiqin hanaq)'''",
-'diff-h4' => "'''uma sinru (4 ñiqin hanaq)'''",
-'diff-h5' => "'''uma sinru (5 ñiqin hanaq)'''",
-'diff-pre' => "'''ñawpaqta allinchasqa raki'''",
-'diff-div' => "'''rakisqa'''",
-'diff-ul' => "'''mana ñiqinchasqa sutisuyu'''",
-'diff-ol' => "'''ñiqinchasqa sutisuyu'''",
-'diff-li' => "'''sutisuyuchana'''",
-'diff-table' => "'''wachuchasqa'''",
-'diff-tbody' => "'''wachuchasqap samiqnin'''",
-'diff-tr' => "'''sinru'''",
-'diff-td' => "'''wachu ukhu'''",
-'diff-th' => "'''wachu uma'''",
-'diff-br' => "'''kutichina'''",
-'diff-hr' => "'''siriq suniyaq'''",
-'diff-code' => "'''antañiqiqpaq qillqa raki'''",
-'diff-dl' => "'''ch'uyanchana sutisuyu'''",
-'diff-dt' => "'''ch'uyanchana tallqi'''",
-'diff-dd' => "'''ch'uyanchaku'''",
-'diff-input' => "'''yaykuchina'''",
-'diff-form' => "'''hunt'ana p'anqa'''",
-'diff-img' => "'''rikcha'''",
-'diff-span' => "'''paqtama'''",
-'diff-a' => "'''t'inki'''",
-'diff-i' => "'''wiksu qillqa'''",
-'diff-b' => "'''yanasapa qillqa'''",
-'diff-strong' => "'''sinchi'''",
-'diff-em' => "'''sapaqchasqa'''",
-'diff-font' => "'''qillqa rikch'aq'''",
-'diff-big' => "'''hatun'''",
-'diff-del' => "'''qullusqa'''",
-'diff-tt' => "'''kakuqlla kinraynin'''",
-'diff-sub' => "'''uranpi'''",
-'diff-sup' => "'''hananpi'''",
-'diff-strike' => "'''siq'ichasqa qillqa'''",
+'history-title' => '"$1" p\'anqata hukchasqakunap wiñay kawsaynin',
+'difference' => '(Hukchasqapura wak kaynin)',
+'lineno' => "Siq'i $1:",
+'compareselectedversions' => "Akllasqa llamk'apusqakunata wakichay",
+'showhideselectedversions' => 'Akllasqa musuqchasqakunata rikuchiy/pakay',
+'editundo' => 'kutichiy',
+'diff-multi' => "({{PLURAL:$1|Chawpipi huk llamk'apusqaqa manam rikuchisqachu|Chawpipi $1 llamk'apusqaqa manam rikuchisqachu}}.)",
# Search results
'searchresults' => 'Maskaymanta tarisqakuna',
@@ -977,28 +1136,25 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'searchresulttext' => '{{SITENAME}}pi maskaymanta astawan ñawirinaykipaqqa, [[{{MediaWiki:Helppage}}|{{int:help}}]] nisqapi qhaway.',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' nisqatam maskanki ([[Special:Prefixindex/$1|tukuy "$1" nisqawan qallariq p\'anqakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" nisqaman t\'inkimuq p\'anqakuna]])',
'searchsubtitleinvalid' => '"$1" nisqatam maskanki',
-'noexactmatch' => "'''Manam kanchu \"\$1\" sutiyuq p'anqa.''' Munaspaykiqa [[:\$1|kamarillay]].",
-'noexactmatch-nocreate' => "'''\"\$1\" sutiyuq p'anqaqa manam kanchu.'''",
'toomanymatches' => 'Nisyu taripasqakunam kutisqa, ama hina kaspa, huk taripanawan ruraykachay',
'titlematches' => "P'anqakunap sutinkunapi tarisqa",
'notitlematches' => "Manam ima p'anqakunap sutinkunapipas tarisqachu",
'textmatches' => "P'anqakunap qillqankunapi tarisqa",
'notextmatches' => "Manam ima p'anqakunap qillqankunapipas tarisqachu",
-'prevn' => '$1 ñawpaq',
-'nextn' => '$1 qatiq',
+'prevn' => '{{PLURAL:$1|$1}} ñawpaq',
+'nextn' => '{{PLURAL:$1|$1}} qatiq',
'prevn-title' => 'Ñawpaq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}',
'nextn-title' => 'Qatiq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}',
'shown-title' => "Huk p'anqapi $1 {{PLURAL:$1|taripasqata|taripasqakunata}} rikuchiy",
-'viewprevnext' => 'Qhaway ($1) ($2) ($3).',
+'viewprevnext' => 'Qhaway ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Maskaypaq akllanakuna',
'searchmenu-exists' => "'''Kay wikipiqa «[[$1]]» sutiyuq p'anqam kachkan'''",
'searchmenu-new' => "'''Kay wikipi \"[[:\$1]]\" sutiyuq p'anqata kamariy!'''",
'searchhelp-url' => 'Help:Yanapana',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Kay ñawpa k'askaqchayuq huk p'anqakunata maskay]]",
'searchprofile-articles' => "Samiq p'anqakuna",
-'searchprofile-articles-and-proj' => "Samiqpas ruraykamaypaqpas p'anqakuna",
-'searchprofile-project' => "Ruraykamaypaq p'anqakuna",
-'searchprofile-images' => 'Willañiqikuna',
+'searchprofile-project' => "Yanapanapaq ruraykamaypaqpas p'anqakuna",
+'searchprofile-images' => 'Multimidya',
'searchprofile-everything' => 'Tukuy',
'searchprofile-advanced' => 'Ñawparikusqa',
'searchprofile-articles-tooltip' => '$1 nisqapi maskay',
@@ -1006,8 +1162,6 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'searchprofile-images-tooltip' => 'Willañiqikunata maskay',
'searchprofile-everything-tooltip' => "Tukuy samiqninpi maskay (rimanakuy p'anqakunapipas)",
'searchprofile-advanced-tooltip' => "Akllasqa suti k'itikunapi maskay",
-'prefs-search-nsdefault' => "Ñawpaqta sut'ichasqa chanikunata llamk'apuspa maskay:",
-'prefs-search-nscustom' => "Kay akllasqa suti k'itikunapi maskay:",
'search-result-size' => '$1 ({{PLURAL:$2|1 rima|$2 rimakuna}})',
'search-result-score' => 'Chaniyuq kaynin: $1%',
'search-redirect' => '(pusapuna $1)',
@@ -1020,11 +1174,12 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'search-mwsuggest-disabled' => 'mana rimapusqakunawanchu',
'search-relatedarticle' => 'Apanakuq',
'mwsuggest-disable' => 'AJAX rimapuykunaman ama niy',
+'searcheverything-enable' => "Tukuy suti k'itikunapi maskay",
'searchrelated' => 'apanakuq',
'searchall' => 'tukuy',
'showingresults' => "Qhipanpiqa rikuchkanki {{PLURAL:$1|'''1''' tarisqatam|'''$1'''-kama tarisqakunatam}}, '''$2''' huchhawan qallarispa.",
'showingresultsnum' => "Qhipanpiqa rikuchkanki {{PLURAL:$3|'''1''' tarisqatam|'''$3''' tarisqakunatam}}, '''$2''' yupaywan qallarispa.",
-'showingresultstotal' => "Kay qatiqpi {{PLURAL:$4||taripasqa '''$1''', '''$3'''-pura|taripasqakuna '''$1 - $2''', '''$3'''-pura}}",
+'showingresultsheader' => "{{PLURAL:$5|Taripasqa: '''$1''', '''$3'''-manta|Taripasqa: '''$1 - $2''', '''$3'''-manta}}, '''$4'''-paq",
'nonefound' => "'''Musyay''': Kikinmantaqa huk suti k'itikunallapim maskanki, manataqmi tukuykunapichu. Ñawpaqninpi ''all:'' nisqata qillqaspaykiqa, tukuy suti k'itikunapim maskanki (rimachinakunapipas, plantillakunapipas). Huk sapaq suti k'itipi maskayta munaspaykiqa, chay k'itip sutinta k'askaq hina ñawpaqninpi qillqamuy.",
'search-nonefound' => 'Maskaypaq kay hina kachun nisqakamaqa manam kanchu taripasqakuna.',
'powersearch' => 'Maskay',
@@ -1032,111 +1187,149 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'powersearch-ns' => "Kay suti k'itikunapi maskay:",
'powersearch-redir' => 'Pusapunakunata rikuchiy',
'powersearch-field' => 'Kayta maskay:',
+'powersearch-togglelabel' => 'Llanchiy:',
+'powersearch-toggleall' => 'Tukuy',
+'powersearch-togglenone' => 'Mana imapas',
'search-external' => 'Hawapi maskay',
'searchdisabled' => "{{SITENAME}} nisqapi maskaymanqa ama nisqam. Hinachkaptinqa, maskariy google nisqawan icha huk hawa maskanakunawan, ichataq yuyariy, {{SITENAME}}manta hallch'asqankunaqa manañachá musuqllachu.",
+# Quickbar
+'qbsettings' => 'Utqaytawna ("Quickbar") allinkachinakuna',
+'qbsettings-none' => 'Mana imapas',
+'qbsettings-fixedleft' => "Lluq'iman watay",
+'qbsettings-fixedright' => 'Pañaman watay',
+'qbsettings-floatingleft' => "Lluq'iman tuytuy",
+'qbsettings-floatingright' => 'Pañaman tuytuy',
+
# Preferences page
-'preferences' => 'Allinkachinakuna',
-'mypreferences' => 'Allinkachinaykuna',
-'prefs-edits' => 'Hukchasqakunap yupaynin:',
-'prefsnologin' => 'Manam yaykurqankichu',
-'prefsnologintext' => '<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} Yaykunaykim]</span> tiyan allinkachinaykikunata hukchanaykipaq.',
-'prefsreset' => 'Allinkachinakunaqa qallariy kachkaykunaman kutisqañam.',
-'qbsettings' => 'Utqaytawna ("Quickbar") allinkachinakuna',
-'qbsettings-none' => 'Mana imapas',
-'qbsettings-fixedleft' => "Lluq'iman watay",
-'qbsettings-fixedright' => 'Pañaman watay',
-'qbsettings-floatingleft' => "Lluq'iman tuytuy",
-'qbsettings-floatingright' => 'Pañaman tuytuy',
-'changepassword' => 'Yaykuna rimata hukchay',
-'skin' => 'Qara',
-'skin-preview' => 'Ñawpaqta qhaway',
-'math' => 'Minuywa',
-'dateformat' => "P'unchaw pacha chanta",
-'datedefault' => 'Kikinmanta allinkachina',
-'datetime' => "P'unchaw, pacha",
-'math_failure' => "Manam hap'inichu",
-'math_unknown_error' => 'mana riqsisqa pantasqa',
-'math_unknown_function' => 'mana riqsisqa rurana',
-'math_lexing_error' => 'rima pantasqa',
-'math_syntax_error' => 'rimay ukhunpuray pantasqa',
-'math_image_error' => "Manam atinichu PNG-man t'ikrayta; latex, dvips, gs, convert nisqakunap tiyachisqa kayninta llanchiy",
-'math_bad_tmpdir' => "Manam atinichu <em>math</em> nisqapaq mit'alla willañiqi churanata kamayta icha qillqayta",
-'math_bad_output' => 'Manam atinichu <em>math</em> nisqapaq lluqsichina willañiqi churanata kamayta icha qillqayta',
-'math_notexvc' => 'Manam kanchu ruranalla <strong>texvc</strong>. Ama hina kaspa, <em>math/README</em> nisqata ñawiriy allinkachinaykipaq.',
-'prefs-personal' => 'Kikinpa willankuna',
-'prefs-rc' => 'Ñaqha hukchasqakuna',
-'prefs-watchlist' => "Watiqasqa p'anqakuna",
-'prefs-watchlist-days' => "Hayk'a p'unchawkunata watiqana sutisuyupi rikuchiy:",
-'prefs-watchlist-days-max' => "(ama qanchismanta aswan p'unchaw kachunchu)",
-'prefs-watchlist-edits' => "Hayk'a hukchasqakunata hatunchasqa watiqana sutisuyupi rikuchiy:",
-'prefs-watchlist-edits-max' => '(ama waranqamanta aswan kachunchu)',
-'prefs-misc' => 'Ñawra',
-'prefs-resetpass' => 'Yaykuna rimata hukchay',
-'saveprefs' => 'Allinkachinakunata waqaychay',
-'resetprefs' => 'Mana waqaychasqa hukchasqakunaman ama niy',
-'restoreprefs' => 'Tukuy kikinmanta allinkachinakunata kutichimuy',
-'textboxsize' => "Llamk'apusqa",
-'prefs-edit-boxsize' => "Llamk'apuna wintanap chhikan.",
-'rows' => 'Sinrukuna:',
-'columns' => 'Wachukuna:',
-'searchresultshead' => 'Maskay',
-'resultsperpage' => "Huk p'anqapi hayk'a tarinakuna:",
-'contextlines' => "Siq'ikuna taripasqaman:",
-'contextchars' => "Ukhunpuray sananchakuna siq'iman:",
-'stub-threshold' => 'Kay hatun kaykamam <a href="#" class="stub">t\'una qillqasqa t\'inki</a> nisqa kachun (byte):',
-'recentchangesdays' => "Ñaqha hukchasqakunapi rikuchina p'unchawkuna:",
-'recentchangesdays-max' => "(ama $1-manta aswan {{PLURAL:$1|p'unchaw|p'unchaw}} kachunchu)",
-'recentchangescount' => "Ñaqha hukchasqakunapi, wiñay kawsaykunapi, hallch'asqakunapipas p'anqa sutikunap yupaynin, kikinmanta:",
-'savedprefs' => "Allinkachinaykikunaqa hallch'asqañam.",
-'timezonelegend' => "Pacha t'urpi:",
-'timezonetext' => "¹Hayk'a urataq qampa tiyayllaykip pachan sirwiqpa pachanmanta (UTC).",
-'localtime' => 'Tiyaylla pacha:',
-'timezoneselect' => 'Pacha suyu:',
-'timezoneuseserverdefault' => 'Sirwiqpa kikinmanta',
-'timezoneuseoffset' => 'Huk pacha (pachap wakin kayninta willay)',
-'timezoneoffset' => 'Huk kay¹:',
-'servertime' => 'Sirwiqpa pachan:',
-'guesstimezone' => 'Pacha suyuta chaskimuy',
-'timezoneregion-africa' => 'Aphrika',
-'timezoneregion-america' => 'Awya Yala',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Artiku',
-'timezoneregion-asia' => 'Asya',
-'timezoneregion-atlantic' => 'Atlantiku mama qucha',
-'timezoneregion-australia' => 'Awstralya',
-'timezoneregion-europe' => 'Iwrupa',
-'timezoneregion-indian' => 'Indiku mama qucha',
-'timezoneregion-pacific' => 'Pasiphiku mama qucha',
-'allowemail' => 'Huk ruraqkunamanta e-chaskita saqillay',
-'prefs-searchoptions' => 'Akllanakunata maskay',
-'prefs-namespaces' => "Suti k'itikuna",
-'defaultns' => "Kay suti k'itikunapi kikinmanta maskay:",
-'default' => 'kikinmanta',
-'files' => 'Willañiqikuna',
-'prefs-custom-css' => 'Munakusqa CSS',
-'prefs-custom-js' => 'Munakusqa JS',
+'preferences' => 'Allinkachinakuna',
+'mypreferences' => 'Allinkachinaykuna',
+'prefs-edits' => 'Hukchasqakunap yupaynin:',
+'prefsnologin' => 'Manam yaykurqankichu',
+'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Yaykunaykim]</span> tiyan allinkachinaykikunata hukchanaykipaq.',
+'changepassword' => 'Yaykuna rimata hukchay',
+'prefs-skin' => 'Qara',
+'skin-preview' => 'Ñawpaqta qhaway',
+'prefs-math' => 'Minuywa',
+'datedefault' => 'Kikinmanta allinkachina',
+'prefs-datetime' => "P'unchaw, pacha",
+'prefs-personal' => 'Kikinpa willankuna',
+'prefs-rc' => 'Ñaqha hukchasqakuna',
+'prefs-watchlist' => "Watiqasqa p'anqakuna",
+'prefs-watchlist-days' => "Hayk'a p'unchawkunata watiqana sutisuyupi rikuchiy:",
+'prefs-watchlist-days-max' => "(ama qanchismanta aswan p'unchaw kachunchu)",
+'prefs-watchlist-edits' => "Hayk'a hukchasqakunata hatunchasqa watiqana sutisuyupi rikuchiy:",
+'prefs-watchlist-edits-max' => '(ama waranqamanta aswan kachunchu)',
+'prefs-watchlist-token' => 'Watiqay sutisuyu sanancha:',
+'prefs-misc' => 'Ñawra',
+'prefs-resetpass' => 'Yaykuna rimata hukchay',
+'prefs-email' => 'E-chaskipaq akllanakuna',
+'prefs-rendering' => "Rikch'akuynin",
+'saveprefs' => 'Allinkachinakunata waqaychay',
+'resetprefs' => 'Mana waqaychasqa hukchasqakunaman ama niy',
+'restoreprefs' => 'Tukuy kikinmanta allinkachinakunata kutichimuy',
+'prefs-editing' => "Llamk'apusqa",
+'prefs-edit-boxsize' => "Llamk'apuna wintanap chhikan.",
+'rows' => 'Sinrukuna:',
+'columns' => 'Wachukuna:',
+'searchresultshead' => 'Maskay',
+'resultsperpage' => "Huk p'anqapi hayk'a tarinakuna:",
+'contextlines' => "Siq'ikuna taripasqaman:",
+'contextchars' => "Ukhunpuray sananchakuna siq'iman:",
+'stub-threshold' => 'Kay hatun kaykamam <a href="#" class="stub">t\'una qillqasqa t\'inki</a> nisqa kachun (byte):',
+'recentchangesdays' => "Ñaqha hukchasqakunapi rikuchina p'unchawkuna:",
+'recentchangesdays-max' => "(ama $1-manta aswan {{PLURAL:$1|p'unchaw|p'unchaw}} kachunchu)",
+'recentchangescount' => 'Rikuchina hukchasqakunap yupaynin, kikinmanta:',
+'prefs-help-recentchangescount' => "Kaypiqa ñaqha hukchasqakunam, p'anqap wiñay kawsayninkunam, hallch'akunapas.",
+'prefs-help-watchlist-token' => "Kay k'itichata pakasqa llawiwan hunt'aspaykiqa, watiqasqaykikunapaq RSS mikhuchinatam kamarinki.
+Pi kay k'itichapi llawiykita riqsiqpas watiqasqaykikunata ñawiriytam atinqa. Chayrayku takyaq chanita akllay. Kaypiqa kikinmanta kamarisqa akllanallayki chanitam rikunki: $1",
+'savedprefs' => "Allinkachinaykikunaqa hallch'asqañam.",
+'timezonelegend' => "Pacha t'urpi:",
+'localtime' => 'Tiyaylla pacha:',
+'timezoneuseserverdefault' => 'Sirwiqpa kikinmanta',
+'timezoneuseoffset' => 'Huk pacha (pachap wakin kayninta willay)',
+'timezoneoffset' => 'Huk kay¹:',
+'servertime' => 'Sirwiqpa pachan:',
+'guesstimezone' => 'Pacha suyuta chaskimuy',
+'timezoneregion-africa' => 'Aphrika',
+'timezoneregion-america' => 'Awya Yala',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Artiku',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Atlantiku mama qucha',
+'timezoneregion-australia' => 'Awstralya',
+'timezoneregion-europe' => 'Iwrupa',
+'timezoneregion-indian' => 'Indiku mama qucha',
+'timezoneregion-pacific' => 'Pasiphiku mama qucha',
+'allowemail' => 'Huk ruraqkunamanta e-chaskita saqillay',
+'prefs-searchoptions' => 'Akllanakunata maskay',
+'prefs-namespaces' => "Suti k'itikuna",
+'defaultns' => "Mana hinaptintaq kay suti k'itikunapi maskay:",
+'default' => 'kikinmanta',
+'prefs-files' => 'Willañiqikuna',
+'prefs-custom-css' => 'Munakusqa CSS',
+'prefs-custom-js' => 'Munakusqa JS',
+'prefs-reset-intro' => "Kay p'anqataqa llamk'achiyta atinki allinkachinaykikunata kikinmanta kasqaman kutichinaykipaq.
+Chaytataq manam kutichiyta atinkichu.",
+'prefs-emailconfirm-label' => 'E-chaskita takyachiy:',
+'prefs-textboxsize' => "Llamk'apuna wintanap chhikan kaynin",
+'youremail' => 'E-chaski imamaytayki',
+'username' => 'Ruraqpa sutin:',
+'uid' => 'Ruraqpa ID-nin:',
+'prefs-memberingroups' => 'Kay {{PLURAL:$1|huñuman|huñukunaman}} kapuq:',
+'prefs-registration' => "Hallch'ay pacha:",
+'yourrealname' => 'Chiqap sutiyki*',
+'yourlanguage' => 'Rimay',
+'yourvariant' => "Rimaypa rikch'aynin",
+'yournick' => 'Chutu sutiyki (ruruchinapaq)',
+'prefs-help-signature' => "Rimanakuy p'anqakunapi qillqamuspaykiqa, \"<nowiki>~~~~</nowiki>\" sananchakunawanmi silq'unkiman. Chay sananchakunaqa silq'uyniykiyuq, pachayuq, p'unchawniyuq qillqamanmi tukukunqa.",
+'badsig' => "Chawa silq'usqaykiqa manam allinchu; HTML sananchakunata llanchiy.",
+'badsiglength' => 'Chutu sutiykiqa nisyu sunim.
+$1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
+'yourgender' => 'Qhari icha warmi:',
+'gender-unknown' => 'Mana riqsisqa',
+'gender-male' => 'Qhari',
+'gender-female' => 'Warmi',
+'prefs-help-gender' => "Munaspaykiqa: llamp'u kaqpa allinlla warmi icha qhari nispa napaykusunaykipaq. Kay willayqa sapsim kanqa.",
+'email' => 'E-chaski',
+'prefs-help-realname' => "* Chiqap sutiyki (munaspaqa): quwaptiykiqa, llamk'apusqaykikunam paywan sananchasqa kanqa.",
+'prefs-help-email' => "E-chaskita munaspayki akllayta atinki. Arí nispaykiqa, yaykuna rimata qunqaspayki musuq yaykuna rimata e-chaski imamaytaykiman kachachikamuyta atinki.
+Huk ruraqkunata ruraqpa p'anqaykimanta icha rimachinaykimanta qamman qillqamusunaykiwan atichin qampa sutiykita mana rikuchispa.",
+'prefs-help-email-required' => 'E-chaski imamaytaykitam willaway.',
+'prefs-info' => 'Tiksi willaykuna',
+'prefs-i18n' => 'Mamallaqtapurapaq',
+'prefs-signature' => "Silq'uy",
+'prefs-dateformat' => "P'unchaw rikch'ay",
+'prefs-timeoffset' => 'Pacha wakinyay',
+'prefs-advancedediting' => 'Ñawparikusqa akllanakuna',
+'prefs-advancedrc' => 'Ñawparikusqa akllanakuna',
+'prefs-advancedrendering' => 'Ñawparikusqa akllanakuna',
+'prefs-advancedsearchoptions' => 'Ñawparikusqa akllanakuna',
+'prefs-advancedwatchlist' => 'Ñawparikusqa akllanakuna',
+'prefs-display' => 'Akllanakunata rikuchiy',
+'prefs-diffs' => 'Wakin kaykuna',
# User rights
-'userrights' => 'Ruraqkunata saqillanap allinkachinan', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Ruraqkunap huñunkunata allinkachiy',
-'userrights-user-editname' => 'Ruraqpa sutinta qillqamuy:',
-'editusergroup' => 'Ruraqkunap huñunkunata hukchay',
-'editinguser' => "Kay ruraqpa hayñinkunata hukchaspa: '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Ruraqkunap huñunkunata hukchay',
-'saveusergroups' => 'Ruraq huñukunata waqaychay',
-'userrights-groupsmember' => 'Kayman kapuq:',
-'userrights-groups-help' => 'Ima huñukunapichus kay ruraq kachkan, chaytam hukchayta atinki.
+'userrights' => 'Ruraqkunata saqillanap allinkachinan',
+'userrights-lookup-user' => 'Ruraqkunap huñunkunata allinkachiy',
+'userrights-user-editname' => 'Ruraqpa sutinta qillqamuy:',
+'editusergroup' => 'Ruraqkunap huñunkunata hukchay',
+'editinguser' => "Kay ruraqpa hayñinkunata hukchaspa: '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Ruraqkunap huñunkunata hukchay',
+'saveusergroups' => 'Ruraq huñukunata waqaychay',
+'userrights-groupsmember' => 'Kayman kapuq:',
+'userrights-groupsmember-auto' => "Ch'aqtasqalla wankurisqa kaypi:",
+'userrights-groups-help' => 'Ima huñukunapichus kay ruraq kachkan, chaytam hukchayta atinki.
* Sananchasqa kahacha niyta munan, ruraqqa kay huñupim kachkan, nispa.
* Mana sananchasqa kahachataq niyta munan, ruraqqa manam kay huñupichu kachkan, nispa.
* <nowiki>*</nowiki> quyllurchataq niyta munan, yaparqaspaykiqa manam atinkichu huñuta qichuyta, qichurqaspaykitaq manam atinkichu yapayta, nispa.',
-'userrights-reason' => 'Kayrayku:',
-'userrights-no-interwiki' => 'Manam saqillasunkichu huk wikikunapi ruraqkunap hayñinkunata hukchayta.',
-'userrights-nodatabase' => '$1 sutiyuq willañiqintinqa manam kanchu icha manam kayllapichu.',
-'userrights-nologin' => 'Kamachiqpa rakiqunaykiwan [[Special:UserLogin|yaykunaykim]] tiyan ruraqkunap hayñinkunata rurapunaykipaq.',
-'userrights-notallowed' => 'Qampa rakiqunaykiwanqa manam ruraqkunap hayñinkunata rurapuyta atinkichu.',
-'userrights-changeable-col' => 'Hukchanayki huñukuna',
-'userrights-unchangeable-col' => 'Mana hukchanayki huñukuna',
+'userrights-reason' => 'Kayrayku:',
+'userrights-no-interwiki' => 'Manam saqillasunkichu huk wikikunapi ruraqkunap hayñinkunata hukchayta.',
+'userrights-nodatabase' => '$1 sutiyuq willañiqintinqa manam kanchu icha manam kayllapichu.',
+'userrights-nologin' => 'Kamachiqpa rakiqunaykiwan [[Special:UserLogin|yaykunaykim]] tiyan ruraqkunap hayñinkunata rurapunaykipaq.',
+'userrights-notallowed' => 'Qampa rakiqunaykiwanqa manam ruraqkunap hayñinkunata rurapuyta atinkichu.',
+'userrights-changeable-col' => 'Hukchanayki huñukuna',
+'userrights-unchangeable-col' => 'Mana hukchanayki huñukuna',
# Groups
'group' => 'Huñu:',
@@ -1189,6 +1382,7 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'right-bigdelete' => "Wiñay kawsaysapa p'anqakunatapas qulluy",
'right-deleterevision' => "P'anqakunapaq sapaq musuqchasqankunata qulluy paqarichiy ima",
'right-deletedhistory' => 'Wiñay kawsaymanta qullusqa musuqchasqakunapaq pisichaykunata qhaway, manataq kapuq qillqakunatachu',
+'right-deletedtext' => 'Qullusqa musuqchasqapura qullusqa qillqata hukchasqakunatapas qhaway',
'right-browsearchive' => "Qullusqa p'anqakunata maskay",
'right-undelete' => "Qullusqa p'anqata paqarichiy",
'right-suppressrevision' => 'Kamachiqkunamanta pakasqa musuqchasqakunata qhawaspa paqarichiy',
@@ -1202,6 +1396,8 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'right-editprotected' => "Amachasqa p'anqakunata llamk'apuy (mana phaqcha amachasqa)",
'right-editinterface' => "Ruraqpaq uyapurata llamk'apuy",
'right-editusercssjs' => "Huk ruraqkunap CSS, JS willañiqinkunata llamk'apuy",
+'right-editusercss' => "Huk ruraqkunap CSS willañiqinkunata llamk'apuy",
+'right-edituserjs' => "Huk ruraqkunap JS willañiqinkunata llamk'apuy",
'right-rollback' => "Huk p'anqapi qhipaq llamk'apuqpa hukchasqankunata utqaylla kutichiy",
'right-markbotedits' => "Kutichisqa llamk'apusqakunata rurana antachap llamk'apusqankunata hina sananchay",
'right-noratelimit' => 'Achura saywakunap manam chayachisqanchu',
@@ -1218,6 +1414,8 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'right-siteadmin' => "Willañiqintinta hark'ay, paskaypas",
'right-reset-passwords' => 'Huk ruraqkunap yaykuna rimanta kutichiy',
'right-override-export-depth' => "P'anqakunata hawaman quy, t'inkisqa p'anqakunatapas pichqa ñiqin t'inkipayasqakama",
+'right-versiondetail' => "Mast'arisqa llamp'u kaqpaq musuqchasqamanta willaykunata rikuchiy",
+'right-sendemail' => 'Huk ruraqkunaman e-chaskita kachay',
# User rights log
'rightslog' => 'Ruraqpa hayñinkunap hukyasqankuna',
@@ -1267,6 +1465,15 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'recentchanges-legend' => 'Ñaqha hukchasqapaq allinkachinakuna',
'recentchangestext' => "Kay p'anqapiqa aswan qhipaq ñaqha hukchasqakunam.",
'recentchanges-feed-description' => 'Kay mikhuchinapi wikipi qhipaq ñaqha hukchasqakunata qatiy.',
+'recentchanges-label-legend' => "Ch'uyanchana: $1.",
+'recentchanges-legend-newpage' => "$1 - musuq p'anqa",
+'recentchanges-label-newpage' => "Kayta llamk'apuptiykim musuq p'anqam tukukurqun",
+'recentchanges-legend-minor' => "$1 - aslla llamk'apuy",
+'recentchanges-label-minor' => "Kayqa aslla llamk'apuymi",
+'recentchanges-legend-bot' => "$1 - rurana antachap llamk'apuynin",
+'recentchanges-label-bot' => "Kayqa rurana antachap llamk'apusqanmi",
+'recentchanges-legend-unpatrolled' => "$1 - mana patrullasqa llamk'apuy",
+'recentchanges-label-unpatrolled' => "Kay llamk'apusqaqa manaraqmi patrullasqachu",
'rcnote' => "Kay qatiqpiqa qhipaq {{PLURAL:$1|'''1''' hukchasqam|'''$1''' hukchasqakunam}} qhipaq {{PLURAL:$2|p'unchawpi|'''$2''' p'unchawkunapi}}, musuqchasqa $5, $4.",
'rcnotefrom' => "Kay qatiqpiqa '''$2'''-mantapacha ('''$1'''-kama) hukchasqakunatam rikunki.",
'rclistfrom' => '$1-manta musuq hukchasqakunata rikuchiy',
@@ -1293,6 +1500,8 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
# Recent changes linked
'recentchangeslinked' => "Hukchasqa t'inkimuq",
+'recentchangeslinked-feed' => "T'inkisqapi hukchasqakuna",
+'recentchangeslinked-toolbox' => "T'inkisqapi hukchasqakuna",
'recentchangeslinked-title' => '"$1"-wan t\'inkisqa hukchasqa',
'recentchangeslinked-noresult' => "Nisqa mit'apiqa manam hukchasqa t'inkimuqkuna kanchu.",
'recentchangeslinked-summary' => "Kay sapaq p'anqaqa t'inkisqa p'anqakunapi ñaqha hukchasqakunatam rikuchin. Watiqasqayki p'anqakunaqa '''yanasapa qillqasqam'''.",
@@ -1302,8 +1511,8 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
# Upload
'upload' => 'Willañiqita churkuy',
'uploadbtn' => 'Willañiqita churkuy',
-'reupload' => 'Huk kutita churkuy',
'reuploaddesc' => "Churkuna hunt'ana p'anqaman kutimuy.",
+'upload-tryagain' => 'Hukchasqa willañiqimanta willaykunata kachay',
'uploadnologin' => 'Manaraqmi yaykurqunkichu',
'uploadnologintext' => '[[Special:UserLogin|Yaykunaykim]] tiyan willañiqikunata churkunaykipaq.',
'upload_directory_missing' => 'Churkuna willañiqi churanaqa ($1) manam kanchu. Llika sirwiqpas manam atinchu churkuna willañiqi churanata kamariyta.',
@@ -1334,6 +1543,7 @@ Rikchata huk p'anqaman ch'aqtanaykipaqqa kay hunt'ana p'anqapi t'inkita llamk'ac
'minlength1' => 'Willañiqip sutinqa huk icha aswan sanampayuq kachun.',
'illegalfilename' => "«$1» nisqa williñiqip sutinqa p'anqa umallipaq mana allin sananchayuqmi. Ama hina kaspa, williñiqita sutincharaspa musuqmanta churkuykachay.",
'badfilename' => 'Rikchap sutinqa "$1"-man hukchasqam.',
+'filetype-mime-mismatch' => "Willañiqip chupanqa manam MIME rikch'aqchu.",
'filetype-badmime' => '"$1" MIME layayuq willañiqikunata churkuyqa manam saqillasqachu.',
'filetype-bad-ie-mime' => 'Manam atinichu willañiqita churkuyta, Internet Explorer "$1" hina riqsiptinman, mana saqillasqa willañiqi layam, chikim kanman.',
'filetype-unwanted-type' => "'''\".\$1\"''' nisqaqa manam munasqachu willañiqi laya. Astawan munasqa willañiqi {{PLURAL:\$3|layaqa|layakunaqa}} kaymi: \$2.",
@@ -1351,7 +1561,6 @@ Ama hina kaspa, '''<tt>[[:$1]]</tt>''' nisqata llanchiy, huknachanaykimanta mana
* Churkunayasqayki willañiqip sutin: '''<tt>[[:$1]]</tt>'''
* Kachkaqña willañiqip sutin: '''<tt>[[:$2]]</tt>'''
Ama hina kaspa, huk sutita akllay.",
-'fileexists-thumb' => "<center>'''Kachkaq rikcha'''</center>",
'fileexists-thumbnail-yes' => "Willañiqiqa ancha uchuylla rikchamanmi rikch'akun ''(thumbnail)''. [[$1|thumb]]
Ama hina kaspa, '''<tt>[[:$1]]</tt>''' nisqa willañiqita llanchiy.
Llanchisqa willañiqi qallariy chhikan kikin rikchaman kaqlla kaptinqa, huk rikchachata churkunaykiqa manam tiyanchu.",
@@ -1363,6 +1572,7 @@ Kay churkunayki rikcha hunt'a chhikan kayniyuq kaptinqa, chay hunt'atam churkuy,
'file-deleted-duplicate' => 'Kay hinalla ([[$1]]) willañiqiña qullusqam karqa. Qhawariy imarayku qullusqa karqa, manaraq musuqmanta churkuykachaspa.',
'successfulupload' => 'Aypalla churkusqañam',
'uploadwarning' => 'Willañiqi churkuymanta paqtataq niy',
+'uploadwarning-text' => 'Ama hina kaspa, kay qatiqpi kaq willañiqimanta willaykunata hukchaspa musuqmanta ruraykachay.',
'savefile' => 'Willañiqita waqaychay',
'uploadedimage' => '«[[$1]]» churkusqa.',
'overwroteimage' => '"[[$1]]" musuqmanta churkusqa',
@@ -1370,11 +1580,14 @@ Kay churkunayki rikcha hunt'a chhikan kayniyuq kaptinqa, chay hunt'atam churkuy,
'uploaddisabledtext' => 'Willañiqi churkuyqa manam saqillasqachu.',
'php-uploaddisabledtext' => "PHP-wan willañiqi churkuyqa hark'asqam. Ama hina kaspa, willañiqi churkuy allinkachinakunata llanchiy.",
'uploadscripted' => "Kay willañiqiqa wakichi icha HTML qillqayuqmi, llika wamp'unaqa pantalla unanchanmanchá.",
-'uploadcorrupt' => 'Kay willañiqiqa waqllisqam icha chupanqa manam allinchu. Ama hina kaspa, willañiqita llanchispa musuqmanta churkuy.',
'uploadvirus' => 'Willañiqipiqa añawmi! Yuyay: $1',
+'upload-source' => 'Pukyu willañiqi',
'sourcefilename' => 'Qallariy willañiqip sutin:',
+'sourceurl' => 'Pukyu URL:',
'destfilename' => 'Tukuna willañiqip sutin:',
'upload-maxfilesize' => 'Lliwmanta aswan willañiqi chhikan kay: $1',
+'upload-description' => 'Willañiqimanta willaykuna',
+'upload-options' => 'Churkuy akllanakuna',
'watchthisupload' => 'Kay willañiqita watiqay',
'filewasdeleted' => 'Kay sutiyuq willañiqi huk kutiña churkusqa karqaspa chaymanta qullusqam karqan. $1-ta llanchinaykim tiyanman manaraq musuqmanta churkuspayki.',
'upload-wasdeleted' => "'''Paqtataq: Huk kutiña qullusqa willañiqitam churkuykachachkanki.'''
@@ -1383,12 +1596,43 @@ Hamut'arinaykim tiyanman, kay willañiqita musuqmanta churkuyqa allinchu mana al
Kay qatiqpiqa willañiqimanta qulluy hallch'atam rikunki:",
'filename-bad-prefix' => "Churkunayasqayki willañiqip sutinqa '''\"\$1\"''' nisqawanmi qallarin. Chay sutinqa iliktruniku rikcha hap'inap kamasqanmanmi rikch'akun. Ama hina kaspa, willañiqiykita astawan t'iktuq sutinta akllay.",
-'upload-proto-error' => 'Tantari qillqaqa manam allinchu',
-'upload-proto-error-text' => "Huk p'anqamanta willañiqita churkunapaqqa URL tiyaypa <code>http://</code> icha <code>ftp://</code> nisqawan qallarinanmi.",
-'upload-file-error' => 'Ukhu pantasqa',
-'upload-file-error-text' => "Ukhu pantasqam tukurqan sirwiqpi mit'alla willañiqita kamariykachaptiyki. Ama hina kaspa, llika [[Special:ListUsers/sysop|kamachiqta]] tapuy.",
-'upload-misc-error' => 'Mana riqsisqa churkuy pantasqa',
-'upload-misc-error-text' => 'Churkuchkaptiyki mana riqsisqa pantasqam tukurqan. Ama hina kaspa, URL tiyay allinchu chayanallachu chaymanta llanchispa musuqmanta ruraykachay. Mana allinyaptinqa, llika [[Special:ListUsers/sysop|kamachiqta]] tapuy.',
+'upload-proto-error' => 'Tantari qillqaqa manam allinchu',
+'upload-proto-error-text' => "Huk p'anqamanta willañiqita churkunapaqqa URL tiyaypa <code>http://</code> icha <code>ftp://</code> nisqawan qallarinanmi.",
+'upload-file-error' => 'Ukhu pantasqa',
+'upload-file-error-text' => "Ukhu pantasqam tukurqan sirwiqpi mit'alla willañiqita kamariykachaptiyki. Ama hina kaspa, llika [[Special:ListUsers/sysop|kamachiqta]] tapuy.",
+'upload-misc-error' => 'Mana riqsisqa churkuy pantasqa',
+'upload-misc-error-text' => 'Churkuchkaptiyki mana riqsisqa pantasqam tukurqan. Ama hina kaspa, URL tiyay allinchu chayanallachu chaymanta llanchispa musuqmanta ruraykachay. Mana allinyaptinqa, llika [[Special:ListUsers/sysop|kamachiqta]] tapuy.',
+'upload-too-many-redirects' => 'URL tiyayqa nisyu pusapunayuqmi',
+'upload-unknown-size' => 'Mana riqsisqa chhikan',
+'upload-http-error' => 'HTTP pantasqam tukusqa: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Manam chayman saqisqachu',
+'img-auth-nopathinfo' => "Manam kanchu PATH_INFO.
+Sirwiqniykiqa manam churasqachu kaymanta willananpaq.
+CGI nisqawanchá tiksichasqa, chayrayku manachá img_auth nisqata q'imiyta atinchu.
+Qhaway http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => 'Mañakusqa ñanqa manam churaykusqa churkuna churanapi kachkanchu.',
+'img-auth-badtitle' => 'Manam atinichu "$1" nisqamanta chaniyuq sutita rurayta.',
+'img-auth-nologinnWL' => 'Manam yaykusqa kachkankichu, "$1" nisqataq manam yuraq sutisuyupi kachkanchu.',
+'img-auth-nofile' => '"$1" sutiyuq willañiqiqa manam kanchu.',
+'img-auth-isdir' => '"$1" nisqa churanatam aypaykachachkanki.
+Willañiqilla aypayllam saqillasqa.',
+'img-auth-streaming' => '"$1" nisqata purichispa.',
+'img-auth-public' => 'img_auth.php nisqap rurananqa akuna wikimanta willañiqikunata lluqsichinam.
+Kay wikiqa sapsi wiki hinam churaykusqa.
+Lliwmanta aswan alliku kanapaqqa, img_auth.php manam atinchu.',
+'img-auth-noread' => 'Ruraqqa "$1" nisqata ñawiriyta manam saqillasqachu.',
+
+# HTTP errors
+'http-invalid-url' => 'URL tiyayqa manam allinchu: $1',
+'http-invalid-scheme' => '"$1" iskimayuq URL tiyaykunaqa manam q\'imisqachu',
+'http-request-error' => 'HTTP mañakuyqa manam ayparqanchu mana riqsisqa pantasqarayku:',
+'http-read-error' => 'HTTP ñawiriy pantasqa.',
+'http-timed-out' => "HTTP mañakuypa mit'anqa lluqsikusqañam.",
+'http-curl-error' => 'URL apamuypi pantasqa: $1',
+'http-host-unreachable' => 'Manam aypanichu URL-ta.',
+'http-bad-status' => 'HTTP mañakuypi sasachakuymi tukukurqan: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Manam taripanichu URL tiyayta',
@@ -1397,6 +1641,7 @@ Kay qatiqpiqa willañiqimanta qulluy hallch'atam rikunki:",
'upload-curl-error28-text' => "Llika tiyayqa mana kutichispa nisyutam suyachiwarqanchik. Ama hina kaspa, sirwiq llamk'achkanchu chaymanta llanchispa asllatapas suyaspa musuqmanta ruraykachay. Ruraykachankimanpas huk kuti aswan pisi ruraqkuna yaykuchkaptin.",
'license' => 'Saqillay:',
+'license-header' => 'Saqillaspa',
'nolicense' => 'Manam imapas akllasqachu',
'license-nopreview' => '(Ama qhawarichunkuchu)',
'upload_source_url' => ' (allin, sapsi chayanalla URL tiyay)',
@@ -1417,6 +1662,7 @@ Wachup umanpi ñit'ispaqa allichaytam hukchanki.",
'listfiles_count' => 'Musuqchasqakuna',
# File description page
+'file-anchor-link' => 'Rikcha',
'filehist' => 'Willañiqip wiñay kawsaynin',
'filehist-help' => "P'unchaw/pacha nisqapi ñit'iy chaypacha willañiqi kachkasqata qhawanaykipaq.",
'filehist-deleteall' => 'tukuyta qulluy',
@@ -1431,6 +1677,7 @@ Wachup umanpi ñit'ispaqa allichaytam hukchanki.",
'filehist-dimensions' => 'Chhikanyachikuqkuna',
'filehist-filesize' => 'Willañiqip chhikan kaynin',
'filehist-comment' => 'Willapuy',
+'filehist-missing' => 'Mana kaq willañiqi',
'imagelinks' => "Willañiqiman t'inkimuq",
'linkstoimage' => "Kay rikchamanqa kay qatiq {{PLURAL:$1|p'anqam|$1 p'anqakunam}} t'inkimun:",
'linkstoimage-more' => "$1-manta aswan {{PLURAL:$1|p'anqam|p'anqakunam}} kay willañiqiman t'inkimun.
@@ -1440,15 +1687,16 @@ Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
'morelinkstoimage' => "Kay willañiqiman [[Special:WhatLinksHere/$1|aswan t'inkimuqkunata]] qhaway.",
'redirectstofile' => "Kay qatiq {{PLURAL:$1|p'anqam|$1 p'anqakunam}} kay willañiqiman pusampun:",
'duplicatesoffile' => 'Kay willañiqimanta iskaychasqa {{PLURAL:$1|willañiqim|$1 willañiqikunam}} kay qatiqpi ([[Special:FileDuplicateSearch/$2|astawan willachikuy]]):',
-'sharedupload' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '$1-ta qhaway astawan willasunaykipaq.',
-'shareduploadwiki-desc' => "$1-ninpi kaq sut'ichanataqa kay qatiqpim rikunki.",
-'shareduploadwiki-linktext' => "willañiqimanta t'iktuna p'anqa",
-'noimage' => 'Manam kanchu kay sutiyuq willañiqi, ichataq $1ta atinki.',
-'noimage-linktext' => 'hukta churkuy',
+'sharedupload' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.",
+'sharedupload-desc-there' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.
+Ama hina kaspa, [$2 willañiqi ch'uyanchana p'anqata] qhaway astawan willachikunaykipaq.",
+'sharedupload-desc-here' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.
+[$2 Willañiqi ch'uyanchana p'anqanpi] ch'uyanchaytaqa kay qatiqpim rikunki.",
+'filepage-nofile' => 'Manam kanchu kay sutiyuq willañiqi.',
+'filepage-nofile-link' => 'Manam kanchu kay sutiyuq willañiqi, ichataq [$1 churkuytam] atinki.',
'uploadnewversion-linktext' => 'Kay willañiqi ñaqha musuqchasqata churkuy',
-'shared-repo-from' => '$1-manta', # $1 is the repository name
-'shared-repo' => 'rakinakusqa qullqa', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1-manta',
+'shared-repo' => 'rakinakusqa qullqa',
# File reversion
'filerevert' => '$1-ta kutichiy',
@@ -1477,6 +1725,7 @@ Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
** K'irisqa ruraqpa hayñin
** Iskaychasqa willañiqi",
'filedelete-edit-reasonlist' => "Qullusqapaq raykukunata llamk'apuy",
+'filedelete-maintenance' => "Willañiqi qulluypas paqarichiypas mit'alla hark'asqam, hatallichkaptinku.",
# MIME search
'mimesearch' => 'MIME maskay',
@@ -1497,7 +1746,7 @@ Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
# Random page
'randompage' => "Mayninpi p'anqa",
-'randompage-nopages' => 'Manam kanchu "$1" nisqa suti k\'itipi p\'anqakuna.',
+'randompage-nopages' => "Manam ima p'anqapas kanchu kay suti {{PLURAL:$2|k'itipi|k'itikunapi}}: $1.",
# Random redirect
'randomredirect' => "Mayninpi pusapuna p'anqa",
@@ -1509,6 +1758,7 @@ Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
'statistics-header-edits' => "Llamk'apuymanta ranuy (kanchachani)",
'statistics-header-views' => 'Qhawaymanta ranuy (kanchachani)',
'statistics-header-users' => 'Ruraqmanta ranuy',
+'statistics-header-hooks' => 'Wakin ranuy (kanchachani)',
'statistics-articles' => "Samiq p'anqakuna",
'statistics-pages' => "P'anqakuna",
'statistics-pages-desc' => "Wikipi tukuy p'anqakuna, rimanakuykunapas pusapunapas hukkunapas",
@@ -1535,8 +1785,8 @@ Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
'brokenredirects' => 'Panta pusapunakuna',
'brokenredirectstext' => "Kay pusapuna p'anqakunaqa mana kachkaq p'anqakunamanmi pusapuchkan:",
-'brokenredirects-edit' => "(llamk'apuy)",
-'brokenredirects-delete' => '(qulluy)',
+'brokenredirects-edit' => "llamk'apuy",
+'brokenredirects-delete' => 'qulluy',
'withoutinterwiki' => "Interwiki t'inkinnaq p'anqakuna",
'withoutinterwiki-summary' => "Kay p'anqakunaqa manam huk rimaykunapi p'anqakunaman t'inkinchu:",
@@ -1643,7 +1893,7 @@ Rikuyniykitaqa k'ullkuchaytam atinki hallch'a layata, ruraqpa sutinta (uchuy ich
# Special:Categories
'categories' => 'Katiguriyakuna',
-'categoriespagetext' => "Kay qatiq katiguriyakunaqa p'anqayuqmi icha midyayuqmi.
+'categoriespagetext' => "Kay qatiq {{PLURAL:$1|katiguriyaqa|katiguriyakunaqa}} p'anqayuqmi icha midyayuqmi.
[[Special:UnusedCategories|Ch'usaq katiguriyakunataqa]] kaypi manam rikunkichu.
[[Special:WantedCategories|Muchusqa katiguriyakunatapas]] qhaway.",
'categoriesfrom' => 'Katiguriyakunata rikuchiy kaywan qallarispa:',
@@ -1651,8 +1901,9 @@ Rikuyniykitaqa k'ullkuchaytam atinki hallch'a layata, ruraqpa sutinta (uchuy ich
'special-categories-sort-abc' => 'qallarina sanampakama allichay',
# Special:DeletedContributions
-'deletedcontributions' => 'Qullusqa ruraqpa hukchasqankuna',
-'deletedcontributions-title' => 'Qullusqa ruraqpa hukchasqankuna',
+'deletedcontributions' => 'Qullusqa ruraqpa hukchasqankuna',
+'deletedcontributions-title' => 'Qullusqa ruraqpa hukchasqankuna',
+'sp-deletedcontributions-contribs' => "llamk'apusqakuna",
# Special:LinkSearch
'linksearch' => "Hawa t'inkikuna",
@@ -1667,6 +1918,16 @@ Rikuyniykitaqa k'ullkuchaytam atinki hallch'a layata, ruraqpa sutinta (uchuy ich
'listusersfrom' => 'Kaywan qallariq ruraqkunata rikuchiy:',
'listusers-submit' => 'Rikuchiy',
'listusers-noresult' => 'Ruraqqa manam tarisqachu.',
+'listusers-blocked' => "(hark'asqa)",
+
+# Special:ActiveUsers
+'activeusers' => "Llamk'achkaq ruraqkuna",
+'activeusers-intro' => "Kay qatiqpiqa ruraqkunatam rikunki, qhipaq $1 {{PLURAL:$1|p'unchawpi|p'unchawkunapi}} kay wikipi imatapas ruraq.",
+'activeusers-count' => "$1 {{PLURAL:$1|llamk'apusqa|llamk'apusqakuna}} ñaqha {{PLURAL:$3|p'unchawpi|$3 p'unchawkunapi}}",
+'activeusers-from' => 'Ruraqkunata rikuchiy, kaywan qallarispa:',
+'activeusers-hidebots' => 'Rurana antachakunata pakay',
+'activeusers-hidesysops' => 'Kamachiqkunata pakay',
+'activeusers-noresult' => 'Ruraqkunataqa manam tarinichu.',
# Special:Log/newusers
'newuserlogpage' => "Rakiquna kamariy hallch'a",
@@ -1677,17 +1938,23 @@ Rikuyniykitaqa k'ullkuchaytam atinki hallch'a layata, ruraqpa sutinta (uchuy ich
'newuserlog-autocreate-entry' => 'Kikinmanta kamarisqa rakiquna',
# Special:ListGroupRights
-'listgrouprights' => 'Ruraq huñup hayñinkuna',
-'listgrouprights-summary' => "Kay qatiq sutisuyupiqa kay wikipi sut'ichasqa ruraq huñukunatam, kikinpa chayamuna hayñinkunatawan rikunki.
+'listgrouprights' => 'Ruraq huñup hayñinkuna',
+'listgrouprights-summary' => "Kay qatiq sutisuyupiqa kay wikipi sut'ichasqa ruraq huñukunatam, kikinpa chayamuna hayñinkunatawan rikunki.
Chay kikinkunap hayñinkunamanta astawan ñawirinaykipaqqa [[{{MediaWiki:Listgrouprights-helppage}}|kaypi qhaway]].",
-'listgrouprights-group' => 'Huñu',
-'listgrouprights-rights' => 'Hayñikuna',
-'listgrouprights-helppage' => 'Help:Ruraq huñup hayñinkuna',
-'listgrouprights-members' => '(wankurisqakunap sutisuyun)',
-'listgrouprights-addgroup' => 'Kay {{PLURAL:$2|huñutam|huñukunatam}} yapayta atini: $1',
-'listgrouprights-removegroup' => 'Kay {{PLURAL:$2|huñutam|huñukunatam}} qichuyta atini: $1',
-'listgrouprights-addgroup-all' => 'Tukuy huñukunatam yapayta atini',
-'listgrouprights-removegroup-all' => 'Tukuy huñukunatam qichuyta atini',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Qusqa hayñi</span>
+* <span class="listgrouprights-revoked">Qichusqa hayñi</span>',
+'listgrouprights-group' => 'Huñu',
+'listgrouprights-rights' => 'Hayñikuna',
+'listgrouprights-helppage' => 'Help:Ruraq huñup hayñinkuna',
+'listgrouprights-members' => '(wankurisqakunap sutisuyun)',
+'listgrouprights-addgroup' => 'Kay {{PLURAL:$2|huñutam|huñukunatam}} yapayta atini: $1',
+'listgrouprights-removegroup' => 'Kay {{PLURAL:$2|huñutam|huñukunatam}} qichuyta atini: $1',
+'listgrouprights-addgroup-all' => 'Tukuy huñukunatam yapayta atini',
+'listgrouprights-removegroup-all' => 'Tukuy huñukunatam qichuyta atini',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|Huñu|Huñukuna}}tam yapayta atin kikinpa raqiqunanman: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|Huñu|Huñukuna}}tam qichuyta atin kikinpa raqiqunanmanta: $1',
+'listgrouprights-addgroup-self-all' => 'Tukuy huñukunatam yapayta atin kikinpa raqiqunanman',
+'listgrouprights-removegroup-self-all' => 'Tukuy huñukunatam qichuyta atin kikinpa raqiqunanmanta',
# E-mail user
'mailnologin' => 'Imamaytataqa ama kachaychu',
@@ -1760,7 +2027,7 @@ Qampa [[Special:Preferences|allinkachinaykikunapi]] qillqakamachisqayki imamayta
'enotif_anon_editor' => 'sutinnaq ruraq $1',
'enotif_body' => 'Munakusqa $WATCHINGUSERNAME,
-{{SITENAME}}pi $PAGETITLE sutiyuq p\'anqataqa $PAGEEDITOR-m $CHANGEDORCREATED $PAGEEDITDATE pachapi, $PAGETITLE_URL-ta qhaway kunan hukchasqata rikunaykipaq.
+{{SITENAME}}pi $PAGETITLE sutiyuq p\'anqataqa $PAGEEDITOR sutiyuq ruraqmi $CHANGEDORCREATED $PAGEEDITDATE pachapi, $PAGETITLE_URL sutiyuq p\'anqata qhaway kunan hukchasqata rikunaykipaq.
$NEWPAGE
@@ -1776,7 +2043,10 @@ Kay p\'anqata mana musuqmanta watukamuptiykiqa, manam huk hukchasqakunamanta wil
--
Watiqana sutisuyuykipaq allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+P\'anqata watiqana sutisuyuykimanta qichunaykipaqqa kay p\'anqatam qhaway:
+$UNWATCHURL
Yanapasunaykipaq:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1790,10 +2060,11 @@ Yanapasunaykipaq:
'exblank' => "p'anqaqa ch'usaqmi karqan",
'delete-confirm' => '"$1"-ta qulluy',
'delete-legend' => 'Qulluy',
-'historywarning' => "Paqtataq: Kay qulluna p'anqaqa wiñay kawsasqayuqmi:",
+'historywarning' => "'''Paqtataq''': Kay qulluykachasqayki p'anqaqa wiñay kawsasqayuqmi, $1 {{PLURAL:$1|musuqchasqayuqchá|musuqchasqayuqchá}}:",
'confirmdeletetext' => "Qullunayachkanki p'anqatam icha rikchatam, wiñay kawsasqantapas.
Ama hina kaspa, takyachiy munayniykita, qatiqninkunata riqsiyniykita, [[{{MediaWiki:Policy-url}}|kawpaykama]] rurayniykitapas.",
'actioncomplete' => 'Rurasqañam',
+'actionfailed' => 'Manam atinchu',
'deletedtext' => '"<nowiki>$1</nowiki>" qullusqañam.
$2 nisqa p\'anqata qhaway ñaqha qullusqakunata rikunaykipaq.',
'deletedarticle' => 'qullusqa "$1"',
@@ -1814,18 +2085,19 @@ $2 nisqa p\'anqata qhaway ñaqha qullusqakunata rikunaykipaq.',
'delete-warning-toobig' => "Kay p'anqaqa ancha wiñay kawsaysapa, $1-manta aswan {{PLURAL:$1|musuqchasqayuq|musuqchasqayuq}}. Kay hina p'anqata qulluspaykiqa, {{SITENAME}}ta waqllinkimanchá. Kay ruraymanta anchata yuyaychakuspa hamut'ay.",
# Rollback
-'rollback' => 'Hukchasqakunata kutichiy',
-'rollback_short' => 'Kutichiy',
-'rollbacklink' => 'Kutichiy',
-'rollbackfailed' => 'Manam kutichiyta atinchu',
-'cantrollback' => "Manam atinichu llamk'apusqata kutichiyta; qhipaq kaq llamk'apuqqa kay p'anqap hukllam ruraqnin.",
-'alreadyrolled' => "Manam atinichu [[User:$2|$2]]-pa ([[User talk:$2|rimanakuy]]) [[$1]] nisqa qhipaq llamk'apusqanta kutichiyta; pipas kay p'anqataqa llamk'apurqunñam icha kutichirqunñam.
+'rollback' => 'Hukchasqakunata kutichiy',
+'rollback_short' => 'Kutichiy',
+'rollbacklink' => 'Kutichiy',
+'rollbackfailed' => 'Manam kutichiyta atinchu',
+'cantrollback' => "Manam atinichu llamk'apusqata kutichiyta; qhipaq kaq llamk'apuqqa kay p'anqap hukllam ruraqnin.",
+'alreadyrolled' => "Manam atinichu [[User:$2|$2]]-pa ([[User talk:$2|rimanakuy]]) [[$1]] nisqa qhipaq llamk'apusqanta kutichiyta; pipas kay p'anqataqa llamk'apurqunñam icha kutichirqunñam.
Qhipaq kaq llamk'apusqaqa [[User:$3|$3]]-pa ([[User talk:$3|rimanakuy]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) rurasqanmi.",
-'editcomment' => "Llamk'apusqakunamanta pisichasqaqa kay hinam: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|rimachina]]) sutiyuq ruraqpa hukchasqankunaqa kutichisqam [[User:$1|$1]]-pa ñawpaq hukchasqanman', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "$1-pa hukchasqankunaqa kutichisqañam $2-pa ñawpaq llamk'apusqanta paqarichispa.",
-'sessionfailure' => "Lamk'apuy tiyayniykiwanqa sasachakuymi rikch'akun;
+'editcomment' => "Llamk'apusqakunamanta pisichasqaqa kay hinam: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|rimachina]]) sutiyuq ruraqpa hukchasqankunaqa kutichisqam [[User:$1|$1]]-pa ñawpaq hukchasqanman',
+'revertpage-nouser' => "Ruraqpa hukchasqankunaqa (sutinqa qichusqam) kutichisqañam [[User:$1|$1]]-pa ñawpaq llamk'apusqanta paqarichispa",
+'rollback-success' => "$1-pa hukchasqankunaqa kutichisqañam $2-pa ñawpaq llamk'apusqanta paqarichispa.",
+'sessionfailure' => "Lamk'apuy tiyayniykiwanqa sasachakuymi rikch'akun;
kay rurayqa t'ipisqam karqan millay runap llullaspa yaykunanta hark'anapaq.
Ama hina kaspa, llika wamp'unaykipi \"Ñawpaqman\" (\"Back\") ñit'ispa ñawpaq p'anqata musuqmanta chaqnamuspa huk kutita yaykuykachay.",
@@ -1843,7 +2115,7 @@ Ama hina kaspa, llika wamp'unaykipi \"Ñawpaqman\" (\"Back\") ñit'ispa ñawpaq
'protectexpiry' => 'Amachaypa puchukaynin',
'protect_expiry_invalid' => 'Amachaypa puchukay pachanqa manam allinchu.',
'protect_expiry_old' => 'Amachaypa puchukay pachanqa ñawpa pachapim.',
-'protect-unchain' => "Astana saqillaykunata llamk'apuy chaylla",
+'protect-unchain-permissions' => 'Yapa amachana akllanakunata paskay',
'protect-text' => "'''<nowiki>$1</nowiki>''' sutiyuq p'anqap amachasqa kachkaynintaqa kaypim qhawayta hukchaytapas atinki.",
'protect-locked-blocked' => "Hark'asqa kaspayki manam atinkichu amachasqa kachkayninta hukchayta. Kay qatiqpiqa '''$1''' sutiyuq p'anqap kunan allinkachinankunatam rikunki:",
'protect-locked-dblock' => "Willañiqintin hark'asqa kachkaptinmi, manam atinkichu amachaypa kachkayninkunata hukchayta.
@@ -1871,7 +2143,7 @@ Kay qatiqpiqa '''$1''' sutiyuq p'anqap kunan allinkachinankunatam rikunki:",
** Mana ruruchiq llamk'apuy awqanakuy
** Ancha qhawasqa p'anqa",
'protect-edit-reasonlist' => 'Kayrayku amachasqa nisqata hukchay',
-'protect-expiry-options' => "1 ura:1 hour,1 p'unchaw:1 day,1 simana:1 week,2 simana:2 weeks,1 killa:1 month,3 killa:3 months,6 killa:6 months,1 wata:1 year,wiñaypaq:infinite", # display1:time1,display2:time2,...
+'protect-expiry-options' => "1 ura:1 hour,1 p'unchaw:1 day,1 simana:1 week,2 simana:2 weeks,1 killa:1 month,3 killa:3 months,6 killa:6 months,1 wata:1 year,wiñaypaq:infinite",
'restriction-type' => 'Saqillay:',
'restriction-level' => 'Amachay hanan kay:',
'minimum-size' => 'Kaymanta aswan hatun',
@@ -1908,6 +2180,7 @@ Huklla llamk'apusqakunata paqarichinaykipaqqa, munasqayki llamk'apusqakunata akl
'undelete-nodiff' => "Manam tarinichu ñawpaq llamk'apusqata.",
'undeletebtn' => 'Paqarichiy!',
'undeletelink' => 'qhaway/paqarichiy',
+'undeleteviewlink' => 'qhaway',
'undeletereset' => 'Mana imapas',
'undeleteinvert' => "Akllasqata t'ikray",
'undeletecomment' => 'Kayrayku:',
@@ -1945,19 +2218,23 @@ $1',
'contributions-title' => "$1 sutiyuq ruraqpa llamk'apusqankuna",
'mycontris' => "Llamk'apusqaykuna",
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Manam kay hina hukchasqakuna kanchu.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Manam kay hina hukchasqakuna kanchu.',
'uctop' => ' (qhipaq hukchasqa)',
'month' => 'Kay killamanta (ñawpaqmantapas):',
'year' => 'Kay watamanta (ñawpaqmantapas):',
-'sp-contributions-newbies' => "Musuq ruraqkunallap llamk'apusqankunata rikuchiy",
-'sp-contributions-newbies-sub' => 'Musuqkunapaq',
-'sp-contributions-newbies-title' => "Musuq ruraqkunap llamk'apusqankuna",
-'sp-contributions-blocklog' => "Hark'ay hallch'asqakuna",
-'sp-contributions-logs' => "hallch'akuna",
-'sp-contributions-search' => "Llamk'apusqakunata maskay",
-'sp-contributions-username' => 'IP huchha icha ruraqpa sutin:',
-'sp-contributions-submit' => 'Maskay',
+'sp-contributions-newbies' => "Musuq ruraqkunallap llamk'apusqankunata rikuchiy",
+'sp-contributions-newbies-sub' => 'Musuqkunapaq',
+'sp-contributions-newbies-title' => "Musuq ruraqkunap llamk'apusqankuna",
+'sp-contributions-blocklog' => "Hark'ay hallch'asqakuna",
+'sp-contributions-deleted' => 'qullusqa ruraqpa hukchasqankuna',
+'sp-contributions-logs' => "hallch'akuna",
+'sp-contributions-talk' => 'rimanakuy',
+'sp-contributions-userrights' => 'ruraqkunata saqillanap allinkachinan',
+'sp-contributions-blocked-notice' => "Kay ruraqqa hark'asqam kachkan. Hark'ay hallch'api qhipaq hak'asqataqa kaypim rikunki willasunaykipaq:",
+'sp-contributions-search' => "Llamk'apusqakunata maskay",
+'sp-contributions-username' => 'IP huchha icha ruraqpa sutin:',
+'sp-contributions-submit' => 'Maskay',
# What links here
'whatlinkshere' => "Kayman t'inkimuq",
@@ -1980,6 +2257,7 @@ $1',
# Block/unblock
'blockip' => "Ruraqta hark'ay",
+'blockip-title' => "Ruraqta hark'ay",
'blockip-legend' => "Ruraqta hark'ay",
'blockiptext' => "Kay qatiq hunt'ana p'anqata llamk'achiy huk sapaq IP huchhamanta icha ruraqpa rakiqunanmanta qillqay atiyta hark'anapaq.
Kayqa rurasqa kachun wandalismullatam hark'anapaq, [[{{MediaWiki:Policy-url}}|{{SITENAME}}pa kawpayninkamallam]].
@@ -2003,7 +2281,7 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'ipbenableautoblock' => "Kay ruraqpa llamk'achisqan IP huchhata kikinmanta hark'ay, hinallataq ima qatiqlla llamk'achisqan IP huchhatapas",
'ipbsubmit' => "Kay ruraqta hark'ay",
'ipbother' => 'Huk puchukana pacha:',
-'ipboptions' => "2 ura:2 hours,1 p'unchaw:1 day,3 p'unchaw:3 days,1 simana:1 week,2 simana:2 weeks,1 killa:1 month,3 killa:3 months,6 killa:6 months,1 wata:1 year,Wiña-wiñaypaq:infinite", # display1:time1,display2:time2,...
+'ipboptions' => "2 ura:2 hours,1 p'unchaw:1 day,3 p'unchaw:3 days,1 simana:1 week,2 simana:2 weeks,1 killa:1 month,3 killa:3 months,6 killa:6 months,1 wata:1 year,Wiña-wiñaypaq:infinite",
'ipbotheroption' => 'huk',
'ipbotherreason' => 'Huk/aswan rayku:',
'ipbhidename' => "Ruraqpa sutinta llamk'apusqakunamanta, sutisuyukunamantapas pakay",
@@ -2031,9 +2309,11 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'ipblocklist-sh-tempblocks' => "$1 mit'alla hark'asqakuna",
'ipblocklist-sh-addressblocks' => "$1 sapaq IP-paq hark'asqakuna",
'ipblocklist-submit' => 'Maskay',
+'ipblocklist-localblock' => "Kayllapi hark'ay",
+'ipblocklist-otherblocks' => "Huk {{PLURAL:$1|hark'ay|hark'aykuna}}",
'blocklistline' => "$1, $2 hark'an kay ruraqtam: $3 ($4)",
'infiniteblock' => 'wiñaypaq',
-'expiringblock' => 'kay pachakama: $1',
+'expiringblock' => "$1 p'unchawpi $2 pachapi puchukanqa",
'anononlyblock' => 'sutinnaqlla',
'noautoblockblock' => "kikinmanta hark'ayqa ama kachunchu",
'createaccountblock' => "rakiqunata kichariyqa hark'asqam",
@@ -2047,7 +2327,8 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'contribslink' => "llamk'apusqakuna",
'autoblocker' => 'Kikinmanta hark\'asqam kanki, "[[User:$1|$1]]" sutiyuq ruraq IP huchhaykita ñaqha llamk\'arquptinmi. Hark\'aqqa "[[User:$1|$1]]"-ta hark\'aspa kaytam nirqan, kayrayku: "$2".',
'blocklogpage' => "Ruraq hark'asqakuna",
-'blocklog-fulllog' => "Hunt'a hark'ay hallch'asqata rikuy",
+'blocklog-showlog' => "Kay ruraqqa ñawpaqta hark'asqam. Hark'ay hallch'ataqa kaypim rikunki willasunaykipaq:",
+'blocklog-showsuppresslog' => "Kay ruraqqa ñawpaqta hark'asqam pakasqapas. Ñit'ipay hallch'ataqa kaypim rikunki willasunaykipaq:",
'blocklogentry' => "hark'an [[$1]]-ta kay pachakama: $2 $3",
'reblock-logentry' => "hukchan [[$1]]-paq hark'ana allinchanakunata kay pachakama hark'aspa: $2 $3",
'blocklogtext' => "Kayqa ruraqta hark'asqakunap qispichisqakunappas hallch'anmi. Kikinmanta hark'asqa tiyaykunataqa manam kaypi rikunkichu. [[Special:IPBlockList|Hark'asqakunamanta p'anqata]] qhaway kunan hark'asqakunata rikunaykipaq.",
@@ -2066,9 +2347,11 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'ipb_already_blocked' => '"$1" sutiyuqqa hark\'asqañam kachkan.',
'ipb-needreblock' => "== Hark'asqaña ==
$1 sutiyuqqa hark'asqañam. Allinchanakunata hukchayta munankichu?",
+'ipb-otherblocks-header' => "Huk {{PLURAL:$1|hark'ay|hark'aykuna}}",
'ipb_cant_unblock' => "'''Pantasqa''': Manam tarinichu ID $1 hark'ay huchhata. Qispisqañachá.",
'ipb_blocked_as_range' => "Pantasqa: IP $1 huchhaqa manam chiqallachu hark'asqa kaptinmi manam paskanallachu. Chaywanpas, $2 patayayku kaspataq hark'asqam kachkan. Chay patayaykuqa hark'asqamanta paskanallam.",
'ip_range_invalid' => "IP huchha k'itiqa manam chanichkanchu.",
+'ip_range_toolarge' => "/$1-manta aswan hatun k'iti hark'aykunaqa manam saqillasqachu.",
'blockme' => "Hark'away",
'proxyblocker' => "Proxy hark'aq",
'proxyblocker-disabled' => 'Kay ruranamanqa ama nisqam.',
@@ -2077,6 +2360,7 @@ $1 sutiyuqqa hark'asqañam. Allinchanakunata hukchayta munankichu?",
'sorbsreason' => 'IP huchhaykiqa kichasqa proxy nispa {{SITENAME}}pi DNSBL nisqapi qillqasqam.',
'sorbs_create_account_reason' => 'IP huchhaykiqa kichasqa proxy nispa {{SITENAME}}pi DNSBL nisqapi qillqasqam. Manam atinkichu rakiqunata kichayta',
'cant-block-while-blocked' => "Kikiyki hark'asqa kaspaykiqa, manam huk ruraqkunata hark'ayta atinkichu.",
+'cant-see-hidden-user' => "Hark'aykachasqayki ruraqqa pipapas hark'asqanñam pakasqanñapas. Ruraqta pakay hayñiyuq mana kaspaykim, manam atinkichu ruraqpaq hark'ay hallch'asqata rikuyta icha hukchasqayta.",
# Developer tools
'lockdb' => "Willañiqintinta hark'ay",
@@ -2116,6 +2400,7 @@ ama hina kaspa, yuyarillay imachus kay astanaykita saqispa tukunata atinman.",
Hinaptinqa, kay rimachina p'anqap samiqninta makiykiwan astanaykim tiyanqa.",
'movearticle' => "P'anqata astay",
+'moveuserpage-warning' => "'''Paqtataq:''' Ruraqpa p'anqantam astaykachachkanki. Qhawariy, p'anqallam astasqa kanqa, ruraqpa sutintaq '''manam''' wakinchasqachu kanqa.",
'movenologin' => "Manam qallarisqachu llamk'apuy tiyayniyki",
'movenologintext' => "P'anqata astanaykipaqqa hallch'asqa ruraqmi kanayki [[Special:UserLogin|llamk'apuy tiyay qallarinaykipas]] tiyan.",
'movenotallowed' => "Manam saqillasunkichu p'anqata astayta.",
@@ -2126,7 +2411,7 @@ Hinaptinqa, kay rimachina p'anqap samiqninta makiykiwan astanaykim tiyanqa.",
'move-watch' => "Kay p'anqata watiqay",
'movepagebtn' => "P'anqata astay",
'pagemovedsub' => "P'anqaqa astasqañam",
-'movepage-moved' => "'''\"\$1\" sutiyuq p'anqaqa kaymanmi astasqa: \"\$2\".'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" sutiyuq p'anqaqa kaymanmi astasqa: \"\$2\".'''",
'movepage-moved-redirect' => 'Pusapunam kamarisqaña.',
'movepage-moved-noredirect' => "Pusapuna kamariyqa hark'asqam.",
'articleexists' => "Kay sutiyuq p'anqaqa kachkanñam icha akllasqayki sutiqa manam allinchu. Ama hina kaspa, huk sutita akllay.",
@@ -2167,6 +2452,14 @@ Tukuna p\'anqaqa ("[[:$1]]") kachkañam. Astanapaq qulluyta munankichu?',
'imageinvalidfilename' => 'Taripana willañiqip sutinqa manam allinchu',
'fix-double-redirects' => 'Qallariy sutiman astamuq tukuy pusapunakunata musuqchay',
'move-leave-redirect' => 'Pusapunata qhipaqpi saqispa puchuchiy',
+'protectedpagemovewarning' => "'''Paqtataq:''' Kay p'anqaqa amachasqam, kamachiqkunap hayñinniyuq ruraqkunallap astananpaq.
+Hallch'api qhipaq kaq yaykuchisqataqa kay qatiqpim rikunki willasunaykipaq:",
+'semiprotectedpagemovewarning' => "'''Paqtataq:''' Kay p'anqaqa amachasqam, rakiqunayuq ruraqkunallap astananpaq.
+Hallch'api qhipaq kaq yaykuchisqataqa kay qatiqpim rikunki willasunaykipaq:",
+'move-over-sharedrepo' => '== Willañiqiqa kachkañam ==
+[[:$1]] nisqaqa kachkañam rakinakusqa qullqapi. Ima willañiqipas kay sutiman astasqa kaptinqa, rakinakusqa willañiqi huknachasqanwan qullusqam kanqa.',
+'file-exists-sharedrepo' => 'Akllasqay willañiqi sutiqa kachkañam rakinakusqa qullqapi.
+Ama hina kaspa, huk sutita akllay.',
# Export
'export' => "P'anqakunata hawaman quy",
@@ -2188,15 +2481,21 @@ Qhipaqta munaspaykiqa, t'inkitapas llamk'achiyta atinki, ahinataq [[{{#Special:E
'export-pagelinks' => "T'inkisqa p'anqakunata ch'aqtay kay t'inkipayay yupaykama:",
# Namespace 8 related
-'allmessages' => 'MediaWiki-p tukuy willayninkuna',
-'allmessagesname' => 'Suti',
-'allmessagesdefault' => 'Ñawpaq qillqa',
-'allmessagescurrent' => 'Kunan kachkaq qillqa',
-'allmessagestext' => "Kayqa MediaWiki suti k'itipi llamk'achinalla willaykunayuq sutisuyum.
+'allmessages' => 'MediaWiki-p tukuy willayninkuna',
+'allmessagesname' => 'Suti',
+'allmessagesdefault' => 'Ñawpaq qillqa',
+'allmessagescurrent' => 'Kunan kachkaq qillqa',
+'allmessagestext' => "Kayqa MediaWiki suti k'itipi llamk'achinalla willaykunayuq sutisuyum.
Ama hina kaspa, [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] nisqata, [http://translatewiki.net translatewiki.net] nisqatapas watukuy, MediaWiki nisqata t'ikraywan yanapayta munaspaykiqa.",
-'allmessagesnotsupportedDB' => "Kay p'anqaqa manam llamk'achinallachu, '''\$wgUseDatabaseMessages''' nisqaman ama nisqa kaptinmi.",
-'allmessagesfilter' => "Willaypa sutinkama ch'illchiy:",
-'allmessagesmodified' => 'Hukchasqallata rikuchiy',
+'allmessagesnotsupportedDB' => "Kay p'anqaqa manam llamk'achinallachu, '''\$wgUseDatabaseMessages''' nisqaman ama nisqa kaptinmi.",
+'allmessages-filter-legend' => "Ch'illchina",
+'allmessages-filter' => "Ch'illchina, allinchasqa kachkaykama:",
+'allmessages-filter-unmodified' => 'Mana hukchasqa',
+'allmessages-filter-all' => 'Tukuy',
+'allmessages-filter-modified' => 'Hukchasqa',
+'allmessages-prefix' => "Ch'illchina, ñawpaq k'askaqkama:",
+'allmessages-language' => 'Rimay:',
+'allmessages-filter-submit' => 'Riy',
# Thumbnails
'thumbnail-more' => 'Hatunchay',
@@ -2206,6 +2505,9 @@ Ama hina kaspa, [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisati
'djvu_no_xml' => 'Manam atinichu XML-ta apamuy DjVu willañiqipaq',
'thumbnail_invalid_params' => 'Rikchachap kuskanachina tupunkunaqa manam allinchu',
'thumbnail_dest_directory' => 'Manam atinichu taripana willañiqi churanata kamayta',
+'thumbnail_image-type' => "Rikch'a layaqa manam llamk'achikusqachu",
+'thumbnail_gd-library' => 'Mana tukuchisqa GD churana allinchana: $1 nisqa ruranaqa manam kanchu',
+'thumbnail_image-missing' => 'Willañiqiqa manachá kanchu: $1',
# Special:Import
'import' => "P'anqakunata hawamanta chaskiy",
@@ -2269,6 +2571,7 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
'tooltip-ca-viewsource' => "Kay p'anqaqa amachasqam. Qallariy qillqataqa qhawallaytam atinki, mana hukchaspa.",
'tooltip-ca-history' => "Kay p'anqapaq ñawpaq llamk'apusqakuna llamk'apuqkunapas",
'tooltip-ca-protect' => "Kay p'anqata amachay",
+'tooltip-ca-unprotect' => "Kay p'anqata amaña amachaychu",
'tooltip-ca-delete' => "Kay p'anqata qulluy",
'tooltip-ca-undelete' => "Kay p'anqap qullusqa kasqankama llamk'apusqakunata paqarichiy",
'tooltip-ca-move' => "Kay p'anqata astay musuq sutinta quspa",
@@ -2279,6 +2582,7 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
'tooltip-search-fulltext' => "Kay qillqasqayuq p'anqakunata maskay",
'tooltip-p-logo' => "Qhapaq p'anqa",
'tooltip-n-mainpage' => "Qhapaq p'anqata watukuy",
+'tooltip-n-mainpage-description' => "Qhapaq p'anqaman riy",
'tooltip-n-portal' => 'Ruraykamaymanta, imatachus rurayta atinki, maypichus imatapas tariy',
'tooltip-n-currentevents' => 'Kunan pacha tukusqakunamanta ukhunpuray willaykuna',
'tooltip-n-recentchanges' => 'Kay wikipi ñaqha hukchasqakuna',
@@ -2347,10 +2651,12 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
# Attribution
'anonymous' => '{{SITENAME}}pi sutinnaq {{PLURAL:$1|ruraq|ruraqkuna}}',
'siteuser' => '{{SITENAME}}-pa $1 sutiyuq ruraqnin',
-'lastmodifiedatby' => "Kay p'anqaqa $2, $1 qhipaq kutitam $3-pa hukchasqan karqan.", # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} rakiqunannaq ruraq $1',
+'lastmodifiedatby' => "Kay p'anqaqa $2, $1 qhipaq kutitam $3-pa hukchasqan karqan.",
'othercontribs' => '$1-pa rurasqanmanta paqariq.',
'others' => 'hukkuna',
'siteusers' => '{{SITENAME}}-pa $1 sutiyuq {{PLURAL:$2|ruraqnin|ruraqninkuna}}',
+'anonusers' => '{{SITENAME}} rakiqunannaq {{PLURAL:$2|ruraq|ruraqkuna}} $1',
'creditspage' => "P'anqap manuyninkuna",
'nocredits' => "Manam ima willasqapas kay p'anqap manuyninkunamantachu.",
@@ -2378,11 +2684,22 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
'mw_math_modern' => "Musuq wamp'unakunapaq kamallisqa",
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => "Manam hap'inichu",
+'math_unknown_error' => 'mana riqsisqa pantasqa',
+'math_unknown_function' => 'mana riqsisqa rurana',
+'math_lexing_error' => 'rima pantasqa',
+'math_syntax_error' => 'rimay ukhunpuray pantasqa',
+'math_image_error' => "Manam atinichu PNG-man t'ikrayta; latex, dvips, gs, convert nisqakunap tiyachisqa kayninta llanchiy",
+'math_bad_tmpdir' => "Manam atinichu <em>math</em> nisqapaq mit'alla willañiqi churanata kamayta icha qillqayta",
+'math_bad_output' => 'Manam atinichu <em>math</em> nisqapaq lluqsichina willañiqi churanata kamayta icha qillqayta',
+'math_notexvc' => 'Manam kanchu ruranalla <strong>texvc</strong>. Ama hina kaspa, <em>math/README</em> nisqata ñawiriy allinkachinaykipaq.',
+
# Patrolling
'markaspatrolleddiff' => 'Qhawakipasqaman sananchay',
'markaspatrolledtext' => "Kay p'anqata qhawakipasqam nispa sananchay",
'markedaspatrolled' => 'Qhawakipasqaman sananchasqa',
-'markedaspatrolledtext' => "Akllasqa llamk'apusqaqa qhawakipasqaman sananchasqam.",
+'markedaspatrolledtext' => "Akllasqa [[:$1]]-paq llamk'apusqaqa qhawakipasqaman sananchasqam.",
'rcpatroldisabled' => 'Ñaqha hukchasqakunata qhawakipaymanqa ama nisqam',
'rcpatroldisabledtext' => 'Ñaqha hukchasqakunata qhawakipaymanqa kunan ama nisqam kachkan.',
'markedaspatrollederror' => 'Manam atinichu qhawakipasqaman sananchayta',
@@ -2412,13 +2729,10 @@ $1",
'previousdiff' => "← ñawpaq llamk'apusqa",
'nextdiff' => "Qatiq llamk'apusqa →",
-# Visual comparison
-'visual-comparison' => 'Rikuspa tupanachiy',
-
# Media information
'mediawarning' => "'''Paqtataq''': Kay willañiqiqa millay wakichi qillqayuqchá.
Payta rurachiyqa antañiqiqniykita llikaykitapas waqllinqachá.",
-'imagemaxsize' => "Willana p'anqakunapi rikchakunata kaykama saywachay:",
+'imagemaxsize' => "Rikchap chhikan kayninta kaykama saywachay:<br />''(willañiqi ch'uyanchana p'anqakunapaq)''",
'thumbsize' => "Ch'iñicha rikchachap chhikan kaynin:",
'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|p'anqa|p'anqakuna}}",
'file-info' => '(willañiqip chhikan kaynin: $1; MIME laya: $2)',
@@ -2427,6 +2741,8 @@ Payta rurachiyqa antañiqiqniykita llikaykitapas waqllinqachá.",
'svg-long-desc' => '(SVG willañiqi, rimasqakama $1 × $2 iñuyuq, willañiqip chhikan kaynin: $3)',
'show-big-image' => 'Qallariy huyaku',
'show-big-image-thumb' => '<small>Kay ñawpaq qhawariypa chhikan kaynin: $1 × $2 iñu</small>',
+'file-info-gif-looped' => 'muyupayachisqa',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|inchu|inchukuna}}',
# Special:NewFiles
'newimages' => 'Musuq rikchakunap suyu-suyun',
@@ -2458,7 +2774,7 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Suni kay',
@@ -2585,14 +2901,14 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-unknowndate' => "Mana riqsisqa p'unchaw",
-'exif-orientation-1' => 'Sapsi', # 0th row: top; 0th column: left
-'exif-orientation-2' => "Siriqlla t'ikrasqa", # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° muyusqa', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => "Sayaqlla t'ikrasqa", # 0th row: bottom; 0th column: left
-'exif-orientation-5' => "90° pacha tupunaman hayu muyusqa, sayaqlla t'ikrasqa", # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° pacha tupunawan muyusqa', # 0th row: right; 0th column: top
-'exif-orientation-7' => "90° pacha tupunawan muyusqa, sayaqlla t'ikrasqa", # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° pacha tupunaman hayu muyusqa', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Sapsi',
+'exif-orientation-2' => "Siriqlla t'ikrasqa",
+'exif-orientation-3' => '180° muyusqa',
+'exif-orientation-4' => "Sayaqlla t'ikrasqa",
+'exif-orientation-5' => "90° pacha tupunaman hayu muyusqa, sayaqlla t'ikrasqa",
+'exif-orientation-6' => '90° pacha tupunawan muyusqa',
+'exif-orientation-7' => "90° pacha tupunawan muyusqa, sayaqlla t'ikrasqa",
+'exif-orientation-8' => '90° pacha tupunaman hayu muyusqa',
'exif-planarconfiguration-1' => 'muyuqhawa chanta',
'exif-planarconfiguration-2' => "p'allta chanta",
@@ -2714,7 +3030,7 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-gpsmeasuremode-2' => 'Iskaynintin chhikanyachiy tupuy',
'exif-gpsmeasuremode-3' => 'Kimsantin chhikanyachiy tupuy',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilumitru uraman',
'exif-gpsspeed-m' => 'Milla uraman',
'exif-gpsspeed-n' => 'Muqukuna',
@@ -2733,6 +3049,7 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'watchlistall2' => 'lliw',
'namespacesall' => 'tukuy',
'monthsall' => '(tukuy)',
+'limitall' => 'tukuy',
# E-mail address confirmation
'confirmemail' => 'E-chaski imamaytaykita takyachiy',
@@ -2852,7 +3169,7 @@ Sapsilla ñawpaq qhawariyta tukuykachay.',
'duplicate-defaultsort' => 'Paqtataq: Kikinmanta allinchana llawi «$2» ñawpaq kikinmanta allinchana llawitam «$1» huknachan.',
# Special:Version
-'version' => 'Musuqchasqa', # Not used as normal message but as header for the special page itself
+'version' => 'Musuqchasqa',
'version-extensions' => "Tiyachisqa mast'arinakuna",
'version-specialpages' => "Sapaq p'anqakuna",
'version-parserhooks' => "T'ikrana ch'iwinakuna",
@@ -2866,7 +3183,7 @@ Sapsilla ñawpaq qhawariyta tukuykachay.',
'version-skin-extension-functions' => "Qara mast'arina ruranakuna",
'version-hook-name' => "Ch'iwinap sutin",
'version-hook-subscribedby' => 'Kay runap mañaykusqan:',
-'version-version' => 'Musuqchasqa',
+'version-version' => '(Musuqchasqa $1)',
'version-license' => 'Saqillay',
'version-software' => "Tiyachisqa llamp'u kaq",
'version-software-product' => 'Ruruchisqa',
@@ -2947,4 +3264,15 @@ Mana “{{ns:file}}:” k'askaqniyuq willañiqip sutinta yaykuchiy.",
'dberr-outofdate' => "Musyariy, ñuqaykup samiqniykumanta yuyarisqankunaqa mawk'ayasqañachá.",
'dberr-cachederror' => "Kay qatiqpiqa mañakusqa p'anqamanta hallch'asqa iskaychasqam, mawk'ayasqañachá.",
+# HTML forms
+'htmlform-invalid-input' => 'Yaykuchisqaykiwanqa sasachakuykunam kachkan',
+'htmlform-select-badoption' => 'Sapaqchasqayki chaniqa manam allin akllanachu.',
+'htmlform-int-invalid' => "Sapaqchasqayki chaniqa manam hunt'a yupaychu.",
+'htmlform-float-invalid' => 'Qusqayki chaniqa manam yupaychu.',
+'htmlform-int-toolow' => 'Sapaqchasqayki chaniqa pisi saywa kaq $1-manta aswan pisim.',
+'htmlform-int-toohigh' => 'Sapaqchasqayki chaniqa achka saywa kaq $1-manta aswan achkam.',
+'htmlform-submit' => 'Kachay',
+'htmlform-reset' => 'Hukchasqakunata kutichiy',
+'htmlform-selectorother-other' => 'Wakin',
+
);
diff --git a/languages/messages/MessagesRgn.php b/languages/messages/MessagesRgn.php
new file mode 100644
index 00000000..741a5a0d
--- /dev/null
+++ b/languages/messages/MessagesRgn.php
@@ -0,0 +1,683 @@
+<?php
+/** Romagnol (Rumagnôl)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Sentruper
+ */
+
+$fallback = 'it';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Link cun la sotliniadura',
+'tog-highlightbroken' => 'Fa avdé i link sbajé <a href="" class="new">scrètt acsè</a> (alternativa: scrètt acsè<a href="" class="internal">?</a>)',
+'tog-justify' => 'Paràgraf: giustifiché',
+'tog-hideminor' => 'Nascond al mudefghi znini int la pàgina "Ultum mudèfghi"',
+'tog-hidepatrolled' => "Nascònd j cambiamént verifichèdi int'aglj ultum mudèfigh",
+'tog-newpageshidepatrolled' => 'Nascònd al pàgin verifichèdi da la lèsta dal pàgin növi',
+'tog-extendwatchlist' => "Slèrga la funziòn \"tènn sot occ\" d'mod ch'us pòsa avdé toti al mudefchi, no sol l'ultma.",
+'tog-usenewrc' => "Drova agl'j ultmi mudèfchi avanzëdi (u j vô JavaScript)",
+'tog-numberheadings' => "Titul d'un paràgraf ch'l'à un nòmar daparlò",
+'tog-showtoolbar' => "Fam avdé la bara d'j strumént (u j vó JavaScript)",
+'tog-editondblclick' => 'Mudèfiga al pàgin scjazènd do volt (u j vò JavaScript)',
+'tog-editsection' => "S't'vù l'abilitaziòn ad'cambié al seziòn cum e' link [mudèfica]",
+'tog-editsectiononrightclick' => "S't'vù l'abilitaziòn ad cambié al seziòn <br />scjazénd e tast a dèstra sora e titul (u j vò JavaScript)",
+'tog-showtoc' => "Fam avdé l'indiz (sol par al pàgin cun piò d'3 seziòn)",
+'tog-rememberpassword' => "Arcurdam la parola d'ordin, par piasé",
+'tog-watchcreations' => "Mett insèn al pàgin ch't'e' fat adès, intla lèsta da tní sot'occ",
+'tog-watchdefault' => "Mett insèn al pàgin ch'a j ò lavurè sora int la lèsta dal pàgin da tnì sot'òcc",
+'tog-watchmoves' => "Mett insèn al pàgin ch'a j ò spustè int la lèsta dal pàgin da tnì sot'òcc",
+'tog-watchdeletion' => "Mett insèn al pàgin ch'a j ò scanzlè int la lèsta dal pàgin da tnì d'occ",
+'tog-minordefault' => 'Ségna tot al mudèfic coma "zníni" s\'l\'utent làsa la casèla vuta',
+'tog-previewontop' => "Fam avdé l'anteprèma sora casèla d'mudèfica invezi che dciotta",
+'tog-previewonfirst' => "Fa' avdé l'anteprèma dop c'u's fa la prèma mudèfica",
+'tog-nocache' => "T'an stêga a tní in memoria al pàgin",
+'tog-enotifwatchlistpages' => "Fam' save' par e-mail quènd una pàgina dal mij l'è steda modifichèda",
+'tog-enotifusertalkpages' => "Fam' save' par e-mail quènd la mi pàgina dal discusiòn l'è steda modifichèda",
+'tog-enotifminoredits' => "Fam' save' par e-mail tòt al mudefchi, neca al znini",
+'tog-enotifrevealaddr' => "Lasa avdè e' mi indirèzi d'posta eletrònica int'j mesàg d'nutèfica",
+'tog-shownumberswatching' => "Fam' avdè e' nòmar d'j utent ch'j tèn sta pàgina sot occ",
+'tog-oldsig' => 'Anteprèma dla fírma bona',
+'tog-fancysig' => "Tràta la firma cumpagna e' test int'la wiki (senza nissön ligam automatich)",
+'tog-externaleditor' => "Drova sempar un prugràma d'scritura esteran (editor testuale)",
+'tog-externaldiff' => 'Drova sempar un prugràma comparator esteran (sol par j utent espert)',
+'tog-showjumplinks' => "Fa' funzionè j leghèm d'acesibilitè tipo \"Va' a\"",
+'tog-uselivepreview' => 'Drova la funziòn "Anteprèma dal viv" (u j vo Javascript; sperimentêl)',
+'tog-forceeditsummary' => "Dam la vos quènd l'ugèt dla mudèfica l'è vut",
+'tog-watchlisthideown' => "Nascond al mi mudèfic dala lèsta dal pàgin da tnì d'occ",
+
+# Dates
+'january' => 'Znèr',
+'february' => 'Febrér',
+'march' => 'Mêrz',
+'april' => 'Abril',
+'may_long' => 'Maz',
+'june' => 'Zógn',
+'july' => 'Lój',
+'august' => 'Agòst',
+'september' => 'Setémbar',
+'october' => 'Utóbar',
+'november' => 'Nuvèmbar',
+'december' => 'Dizèmbar',
+'january-gen' => 'Znèr',
+'february-gen' => 'Fevrer',
+'march-gen' => 'Mèrz',
+'april-gen' => 'Abril',
+'may-gen' => 'Maz',
+'june-gen' => 'Zògn',
+'july-gen' => 'Lòj',
+'august-gen' => 'Agòst',
+'september-gen' => 'Setèmbar',
+'october-gen' => 'Utobar',
+'november-gen' => 'Nuvèmbar',
+'december-gen' => 'Dizèmbar',
+'jan' => 'znèr',
+'feb' => 'feb',
+'mar' => 'mêrz',
+'apr' => 'abr',
+'may' => 'maz',
+'jun' => 'zógn',
+'jul' => 'lój',
+'aug' => 'ago',
+'sep' => 'set',
+'oct' => 'utob',
+'nov' => 'nuv',
+'dec' => 'diz',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Categurèja|Categurei}}',
+'category_header' => 'Articul int la categurèja "$1"',
+'subcategories' => 'Sòtacategurèja',
+'hidden-categories' => '{{PLURAL:$1|Categurèja ardupèda|Categurèi ardupèdi}}',
+'category-subcat-count' => "{{PLURAL:$2|Sta categurèja l'à sol òna sota-categurèja|Sta categurèja l'à {{PLURAL:$1|sota-categurèja|$1 sot-categuréj}}, sora $2 ch'l'è é tutel.}}",
+'category-article-count' => "{{PLURAL:$2|Sta categuréja l'à sol sta pàgina què|In sta categuréja u j sta {{PLURAL:$1|sta pàgina|$1 pàgin}} sora $2, ch'l'è e' tutel.}}",
+'listingcontinuesabbrev' => 'inênz',
+
+'newwindow' => "(la s'avèra int'una fnèstra nova)",
+'cancel' => 'Làsa perdar',
+'mytalk' => 'Al mi cunversaziòn',
+'navigation' => 'Navgaziòn',
+
+# Cologne Blue skin
+'qbfind' => 'Tróva',
+
+'errorpagetitle' => "Oci! T'ê fat una capèla",
+'returnto' => 'Torna indrì a $1.',
+'tagline' => 'Da {{SITENAME}}',
+'help' => "Êt absogn d'una man?",
+'search' => 'Zerca',
+'searchbutton' => 'Zerca',
+'searcharticle' => 'Và pù',
+'history' => "Stória d'la pàgina",
+'history_short' => 'Stória',
+'printableversion' => 'Versiòn bona da stampè',
+'permalink' => 'Culegament fèss',
+'edit' => 'Mudèfica',
+'create' => 'Fa nov/a',
+'editthispage' => 'Mudèfica sta pàgina',
+'delete' => 'Scanzèla',
+'protect' => 'Metti-j una pruteziòn',
+'protect_change' => 'chèmbia',
+'newpage' => 'Pàgina nova',
+'talkpage' => 'Cunversaziòn',
+'talkpagelinktext' => 'Cunversaziòn',
+'personaltools' => 'Strumént persunèl',
+'talk' => 'Cunversaziòn',
+'views' => 'Chi èl pasé da que',
+'toolbox' => 'Strumént',
+'otherlanguages' => 'Ètri lènguv',
+'redirectedfrom' => '(Ri-direziòn da <b>$1</b>)',
+'redirectpagesub' => "Pàgina d're-indirezzament",
+'lastmodifiedat' => "L'ultum c'l'à lavurè atoran a 'sta pàgina da $2, a $1.",
+'jumpto' => 'Sbèlza a què:',
+'jumptonavigation' => 'navgaziòn',
+'jumptosearch' => 'zerca',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'A prupòsit de {{SITENAME}}',
+'aboutpage' => 'Project: A pruposit',
+'copyright' => "Oci! T'an fèga e' patàca. Sora 'ste scrètt u j è e' brevet $1.",
+'copyrightpage' => "{{ns:project}}:Brevèt d'l'autor",
+'disclaimers' => 'Infurmaziòn legêli',
+'disclaimerpage' => 'Project: Avìs generèl',
+'edithelp' => 'Livar dal spiegaziòn',
+'edithelppage' => 'Help: Scrivar un artècul',
+'helppage' => 'Help:Tòt j argumént',
+'mainpage' => 'Prèma Pagina',
+'privacy' => 'Léz sora agli infurmaziòn persunèli',
+'privacypage' => 'Project: Léz sora agli infurmaziòn persunèli',
+
+'badaccess' => 'Parméss non sufizént',
+
+'retrievedfrom' => 'Tiré fora da "$1"',
+'youhavenewmessages' => "A j ò fët ch't'epa $1 ($2).",
+'newmessageslink' => 'mesàz nuv',
+'newmessagesdifflink' => "U j è una quèlca diferenza cun l'ultma versiòn",
+'editsection' => 'Mudèfica',
+'editold' => 'mudèfica',
+'editlink' => 'mudèfiga',
+'viewsourcelink' => "guèrda e' codiz surgént",
+'editsectionhint' => 'Mudèfica la seziòn: $1',
+'toc' => 'Indice',
+'showtoc' => "fam'avdé",
+'hidetoc' => 'ardòpa',
+'site-rss-feed' => 'Emissiòn RSS $1',
+'site-atom-feed' => 'Emissiòn Atom $1',
+'page-rss-feed' => 'Canël RSS par "$1"',
+'page-atom-feed' => 'Canël Atom par "$1"',
+'red-link-title' => "Ciò! $1 (sta pàgina la n'esèst incora)",
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Artécul',
+'nstab-user' => 'Pàgina persunèla',
+'nstab-special' => 'Pàgina particulèra',
+'nstab-project' => "Pàgina dagl'infurmaziòn",
+'nstab-image' => 'File',
+'nstab-template' => 'Mudel',
+'nstab-category' => 'Categurèja',
+
+# General errors
+'missing-article' => "E' database u n'à brisa truvé e'scret d'una pàgina ch'la avrebb duvu truvè sot e' nom di \"\$1\" \$2.
+
+Quest é suzed d'solit in te méntr d'un cuntrol d'do version vèci intla storia d'una pàgina. E' pò esar suzest parchè l'è stè cjamé un culegamént a una pàgina scanzleda o parchè l'è stè cjamé un cunfront d'dò versiòn ch'j n'esést piò.
+
+S' u n'è brisa acsè, t'é scvert par chès un bug int'é software.
+Par piasé, fa raport a un [[Special:ListUsers/sysop|aministrador]] cun la nota de l'indirezzi dla pàgina.",
+'missingarticle-rev' => '(revision n°: $1)',
+'badtitletext' => "La pàgina ch' t'ê cmandè, l'è vuda, sbaglieda o ta l'ê scrètta cun dal lettar particulèri. Oppure, ê pò dès ch'u j sèja un eror inter-lèngua o inter-wiki. Guèrda ben cus t'e scrètt: êt druvè dal lettar cu n' s pò druvè in t'j nom dal pàgin?",
+'viewsource' => "Guèrda e' codiz surgént",
+
+# Login and logout pages
+'yourname' => 'Soranòm:',
+'yourpassword' => 'Paróla segreta:',
+'remembermypassword' => "Regèstra la mi parola d'ordin sora ste computer",
+'login' => 'Va dentar',
+'nav-login-createaccount' => 'Va dentar / Èla la prèma volta?',
+'userlogin' => 'Vèn dentar/A sit nov?',
+'logout' => 'Va fora',
+'userlogout' => 'Và fora',
+'nologinlink' => 'Iscrivat adès',
+'mailmypassword' => "Mènda una nova parola d'ordin cun l'e-mail",
+
+# Edit page toolbar
+'bold_sample' => "Pàroli in '''gros'''",
+'bold_tip' => 'Gros',
+'italic_sample' => 'Pàroli in cursiv',
+'italic_tip' => 'Pàroli in cursìv',
+'link_sample' => "Nòm d'e' culegamént",
+'link_tip' => 'Culegamént intéran',
+'extlink_sample' => "http://www.esempi.com Nòm d'e' culegamént",
+'extlink_tip' => 'Culegamént esteran (arcordat d\'scrivar dadnénz "http://")',
+'headline_sample' => 'Intestaziòn',
+'headline_tip' => "Intestaziòn d'e' sgond livèl",
+'math_sample' => 'Mèt aquè dentar una formula',
+'math_tip' => 'Formula metemètica (LaTeX)',
+'nowiki_sample' => 'Mèt dentar i tu scrètt sìnza furmataziòn',
+'nowiki_tip' => 'Làsa perdar la furmataziòn wiki',
+'image_tip' => "Figura ch'la sta insèn a e' scrètt",
+'media_tip' => 'Culegamént a un file multimediél',
+'sig_tip' => 'Mèt aquè la firma, cun dèda e ora',
+'hr_tip' => "Riga urizuntèla (t'an fèga e' patàca: t'an esègera)",
+
+# Edit pages
+'summary' => "Mutiv d'e' cambiamént:",
+'subject' => 'Argumént (intestaziòn):',
+'minoredit' => "Quèsta l'è una mudèfiga znina (z)",
+'watchthis' => "Tèn d'öcc 'sta pàgina què",
+'savearticle' => "Regèstra e' tu scrètt",
+'preview' => 'Guèrda prèma',
+'showpreview' => 'Fam avdé prèma',
+'showdiff' => 'Fam avdé i cambiamént',
+'anoneditwarning' => "'''Oci!''' T'an sì miga intrè! T'an fèga e' patàca: a t'registrèn cun e' tu indirèzzi IP e a l' mitèn int la storia d'sta pàgina.",
+'summary-preview' => "Prova a vdé l'uget:",
+'newarticle' => '(Növ)',
+'newarticletext' => "T'cì arìv int'una una pàgina ch'la n'esèst incora.
+S't'vu fèla te, tàca scrivar int'e' spazi a què sotta (guèrda la [[{{MediaWiki:Helppage}}|pàgina d'servezi]] s't'vu saven piò).
+S'cì arìv a que par sbaj, sciàza e butòn \"Indrì\" e t'ci a post.",
+'noarticletext' => "In 'ste mumént un gn'è gnito in sta pàgina: l'è vuta.
+Magari t'pù provè a [[Special:Search/{{PAGENAME}}|zirchè ste nòm]] in t'j ètar pàgin, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchè i regèstr relativ], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} scrivj indentar adès].",
+'previewnote' => "'''Òci! Lezz prèma cus t'e' fat; e' tu scrètt U N' è stè ancora registrè!'''",
+'editing' => 'Cambiamént de $1',
+'editingsection' => 'Mudèfiga $1 (seziòn)',
+'copyrightwarning' => "Avìs: tot al contribuziòn sora {{SITENAME}} j è stimé coma sòta la \$2 (guèrda \$1 par i particulé).
+S't'an vu che i tu scrètt j pòsa èsar cambié a piasé da ch'jetar, t'an perda témp a scrivar sora a què.
+A e' stes mod, s't'vu carghé ste scrètt, ta t'e' da tü la respunsabilitè che l'è e' tü, uriginél, o ch'ta l'e' cupié d'un sit indov tot j po lezar, o t'l'è truvè da un'ètra font lèbra.
+\"T'AN PRUVA GNÂNC A CARGHÈ DI SCRÈTT BREVÉTÉ, SÂNZA CMANDÉ E' PARMESS!\"",
+'templatesused' => '{{PLURAL:$1|Mudel|Mudell}} druvé sora sta pàgina:',
+'templatesusedpreview' => '{{PLURAL:$1|Mudel|Mudell}} druvè in sta prova què',
+'template-protected' => '(prutèt)',
+'template-semiprotected' => '(mèz-prutet)',
+'hiddencategories' => "Sta pàgina què la fa pèrt d'{{PLURAL:$1|una categureja nascosta|$1 categurej nascosti}}.",
+'permissionserrorstext-withaction' => "Tan' ê e' parmess par $2, par {{PLURAL:$1|e' mutiv|i mutiv}} adqvè sotta:",
+
+# History pages
+'viewpagelogs' => "Guèrda i regestar d'sta pàgina",
+'currentrev-asof' => 'Versiòn agiurnèda de $1',
+'revisionasof' => 'Revisiòn dal $1',
+'previousrevision' => '← Versiòn prèma ed questa',
+'nextrevision' => 'Versiòn piò nova →',
+'currentrevisionlink' => "Guèrda la versiòn d'adès",
+'cur' => 'att',
+'last' => 'prez',
+'histlegend' => "Cunfront tra'l versiòn d'un artècul: strésa cun e' maus sora al versiòn ch't'vu te e pu sciàza e' butòn \"Partès\" o e' butòn in bas.<br />
+Lezenda: '''({{int:cur}})''' = difarenzi cun la versiòn d'adès; '''({{int:last}})''' = difarenzi cun la versiòn d'prèma; ''m''' = mudèfica znina",
+'history-fieldset-title' => "Guèrda i cambiamént d'e' prèm a l'ultum",
+'histfirst' => 'Piò vecia',
+'histlast' => 'Piò rezent',
+
+# Revision deletion
+'rev-delundel' => 'fam avdé/ardópa',
+'revdel-restore' => 'chèmbia visiòn',
+
+# Merge log
+'revertmerge' => "Scanzèla l'uniòn",
+
+# Diffs
+'history-title' => 'Elench d\'j cambiamént sora "$1"',
+'difference' => "(Difarénza fra'l versiòn)",
+'lineno' => 'Riga $1:',
+'compareselectedversions' => "Fa e' paragon tra 'l versiòn seleziunèdi",
+'editundo' => 'Scanzèla',
+
+# Search results
+'searchresults' => 'I tu risulté',
+'searchresults-title' => 'I tu risulté par "$1"',
+'searchresulttext' => "A vut una mân par zarchè dagl'infurmaziòn sora {{SITENAME}}? Và a vdé [[{{MediaWiki:Helppage}}|zerca int é {{SITENAME}}]].",
+'searchsubtitle' => 'T\'e\' zarchè \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toti al pàgin chj cminzèpia cun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toti al pàgin chj è atachedi a "$1"]])',
+'searchsubtitleinvalid' => "T'ë zarchè '''$1'''",
+'notitlematches' => "T'é zarchè un'artècul, ma guèrda che u'gn'è brisa 'ste nom. Si't sicur t'épa scrètt ben?",
+'notextmatches' => "T'e' zarché un quel ch'u'n à purté a gninto. U'n's trova gninto int'j parol dal pàgin.",
+'prevn' => "{{PLURAL:quel prèma|i $1 prèma}} d'sti què",
+'nextn' => "{{PLURAL:quél dòp|i $1 dòp}} d'sti què",
+'viewprevnext' => 'Guèrda ($1 {{int:pipe-separator}} $2) ($3).',
+'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 paróli}})',
+'search-redirect' => '(ri-direziòn $1)',
+'search-section' => '(seziòn $1)',
+'search-suggest' => "V'levat di': $1",
+'search-interwiki-caption' => 'I prugèt fradel',
+'search-interwiki-default' => 'Arsultèd da $1:',
+'search-interwiki-more' => '(ad piò)',
+'search-mwsuggest-enabled' => 'cun j sugeriment',
+'search-mwsuggest-disabled' => "'nciòn sugeriment",
+'nonefound' => "'''Oci''': la rizerca l'a vèn fata in automatico sol in zert spàzi di nòm. S't'vù zirchè fra tot al pàgin (cumpresi al pàgin d'cunversaziòn, i template, ecc) próva a metar \"all:\", in inglés, dadnenz a é nòm ch't'é scrètt, piotòst scriv é spàzi di nòm, s't'al sé, e pu é nòm.",
+'powersearch' => 'Scandaja a fònd',
+'powersearch-legend' => 'Scandaja a fònd',
+'powersearch-ns' => "Zerca int'j spàzi d'nom:",
+'powersearch-redir' => "Fà una lèsta d'al ri-direziòn",
+'powersearch-field' => 'Zerca par',
+
+# Preferences page
+'preferences' => 'I mì gost',
+'mypreferences' => 'I mi gòst',
+
+# Groups
+'group-sysop' => 'Aministradór',
+
+'grouppage-sysop' => '{{ns:project}}:Aministradór',
+
+# User rights log
+'rightslog' => "Dirètt d'j navigador",
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Mudèfica sta pàgina',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|mudèfica|mudèfich}}',
+'recentchanges' => 'I ultum cambiamént',
+'recentchanges-legend' => "Upziòn d'j ultum cambiamént",
+'recentchanges-feed-description' => "Ste canël e' fa avdè i cambiamént piò rezent aj artècul d'sta wiki.",
+'rcnote' => "A què sota t'pù truvé {{PLURAL:$1|l'ultum cambiamént|j ultum '''$1''' cambiamént in st'artècul}} int j ultum {{PLURAL:$2|dè|'''$2''' dè}}; agl'infurmaziòn j è agiurnèdi a e' $4 al $5.",
+'rclistfrom' => 'Fam avdè i cambiamént növ a cminzipiè da $1',
+'rcshowhideminor' => '$1 al mudèfghi znini',
+'rcshowhidebots' => '$1 i bot',
+'rcshowhideliu' => '$1 i patàca registrè',
+'rcshowhideanons' => '$1 navigador anònim',
+'rcshowhidemine' => '$1 völt a j ò scrètt',
+'rclinks' => "Fam avdè la lèsta d'j $1 cambiamént int j ultum $2 dé<br />$3",
+'diff' => 'dif.',
+'hist' => 'cron',
+'hide' => 'Ardòpa',
+'show' => 'Fam avdé',
+'minoreditletter' => 'z',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Guèrda i particulèr (u j vó JavaScript)',
+'rc-enhanced-hide' => 'Arscònd i particulèr',
+
+# Recent changes linked
+'recentchangeslinked' => "Cambiament ch'j va impèt a sta pàgina",
+'recentchangeslinked-title' => 'Cambiamént ch\'j va impèt a "$1"',
+'recentchangeslinked-summary' => "Questa ch't'é sott' aj occ l'è una lista d'j ultum cambiamént fât a piò pàgin atachèdi a una pàgina (o a elemént d'una categurèja).
+Al pàgin int'la lèsta dal [[Special:Watchlist|pàgin tnudi sot occ]] l' è scrètti in '''gros'''.",
+'recentchangeslinked-page' => "Nom d'la pàgina:",
+'recentchangeslinked-to' => "Fam avdé sol i cambiamént al pàgin ch'j va impèt a quèla ch'la m'interèsa a me.",
+
+# Upload
+'upload' => 'Carga so un file',
+'uploadlogpage' => "Regèstar d'j file carghé",
+'uploadedimage' => 'l\'à carghé "[[$1]]"',
+
+# File description page
+'filehist' => "Stória d'e' file",
+'filehist-help' => "Fà clic sora un gròp dèda/ora par avdé cun cl'éra e' file in ch'ë mumént.",
+'filehist-current' => "d'adès",
+'filehist-datetime' => 'Dèda/Ora',
+'filehist-thumb' => 'Visiòn znina',
+'filehist-thumbtext' => 'Visiòn znina dla versiòn dal $1',
+'filehist-user' => 'Utent',
+'filehist-dimensions' => 'Amsür',
+'filehist-comment' => "Ch'roba è'l",
+'imagelinks' => 'I culegamént a ste file',
+'linkstoimage' => "{{PLURAL:$1|La pàgina a què sòta l'è tachéda|Al $1 pàgin a què sòta j è tachédi}} a 'ste file:",
+'sharedupload' => "Ste file e' ven da $1 e u s' pò druvè neca sora d'j ètri prugèt wiki.",
+'uploadnewversion-linktext' => "Chèrga so una versiòn nova d'ste file",
+
+# Statistics
+'statistics' => 'Statistich',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
+'nmembers' => 'Lumbaart (lmo)
+$1 {{PLURAL:$1|elemént|elemént}}',
+'prefixindex' => "Tòti al pàgin cun e' prefess",
+'newpages' => 'Pàgin növi',
+'move' => 'Chèmbia nòm',
+'movethispage' => 'Sposta sta pàgina',
+'pager-newer-n' => '{{PLURAL:$1|é piò rezent|i $1 piò rezent}}',
+'pager-older-n' => '{{PLURAL:$1|é piò vëc|i $1 piò vècc}}',
+
+# Book sources
+'booksources' => 'Va a truvè dj libar',
+'booksources-search-legend' => 'A vut zarchè int j livar?',
+'booksources-go' => 'Và pu',
+
+# Special:Log
+'log' => 'Regèstar',
+
+# Special:AllPages
+'allpages' => 'Tot al pàgin',
+'alphaindexline' => 'Da $1 a $2',
+'prevpage' => "Pàgina prèma d'questa ($1)",
+'allpagesfrom' => 'Fam avdè al pàgin cminzipiènd da:',
+'allpagesto' => 'Fam avdé al pàgin infèn a:',
+'allarticles' => 'Toti al pàgin',
+'allpagessubmit' => 'Va mò',
+
+# Special:LinkSearch
+'linksearch' => 'Ghènz int ê web',
+
+# Special:Log/newusers
+'newuserlogpage' => "Regèstar d'j nov",
+'newuserlog-create-entry' => "L'è arivé un patàca nov",
+
+# Special:ListGroupRights
+'listgrouprights-members' => "(Lèsta d'j mèmbar)",
+
+# E-mail user
+'emailuser' => 'Manda un scrètt a ste patàca',
+
+# Watchlist
+'watchlist' => "Pàgin ch'a ten d'öcc",
+'mywatchlist' => "Pàgin ch'a ten d'öcc",
+'watchlistfor' => "(da '''$1''')",
+'addedwatch' => "Mett insem a la lèsta d'pàgin sot öcc",
+'addedwatchtext' => "La pàgina \"[[:\$1]]\" adès l'è int la lèsta dal [[Special:Watchlist|pàgin da tnì d'öcc]]. D'ôra inenz t'pù avdé tòt al mudèfic a sta pàgina e a la pàgina d'cunversaziòn int la [[Special:RecentChanges|lèsta d'j cambiamént rezent]], in '''gros''', acsè j 's'pò guardè mej.
+Se in un sgond temp t'vu cavé la pàgina dala lèsta da tnì d'öcc, s-cjaza un'ètra volta sora e' butòn \"ten d'öcc\".",
+'removedwatch' => 'Cavé dala lèsta dal pàgin da tnì sot öcc',
+'removedwatchtext' => 'La pàgina "[[:$1]]" l\'è stëda scanzlèda dala lèsta dal [[Special:Watchlist|pàgin da tnì sot öcc]].',
+'watch' => "Tèn d'öcc",
+'watchthispage' => "Ten d'öcc sta pagina",
+'unwatch' => "T'an stèga piò a t'nì d'öcc",
+'watchlist-details' => "J è, int la lèsta dal pàgin da tnì d'öcc, {{PLURAL:$1|$1 pàgina|$1 pàgin}}, senza cuntê al pàgin d'cunversaziòn.",
+'wlshowlast' => "Fam avdé agl'ultum $1 ör $2 dè $3",
+'watchlist-options' => "Scielt int la lèsta d'pàgin da tnì d'öcc",
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => "Mêt insèn al pàgin da t'nì d'öcc...",
+'unwatching' => "Scanzèla dal pàgin da t'nì d'öcc...",
+
+# Delete
+'deletepage' => 'Scanzela la pàgina',
+'confirmdeletetext' => "Oci! T'ste par scanzlè una pàgina cun tòta la storia d'j su cambiamént.
+Par piasé, cunferma ch't'ê propri l'intenziòn d'fël, ch'at capèss al su conseguenzi e quel ch't fë adès l'è in regola cun al [[{{MediaWiki:Policy-url}}]].",
+'actioncomplete' => 'Lavor fät e finì',
+'deletedtext' => 'La pàgina "<nowiki>$1</nowiki>" l\'è stëda scanzlèda.
+Guèrda $2 par avdé la lèsta daglj ultum scanzeladür.',
+'deletedarticle' => 'l\'à scanzlé "[[$1]]"',
+'dellogpage' => 'Regèstar dal scanzladùr',
+'deletecomment' => 'Rasòn:',
+'deleteotherreason' => 'Ètar mutiv:',
+'deletereasonotherlist' => 'Ètar mutiv',
+
+# Rollback
+'rollbacklink' => "armèt sta pàgina cun cl'era prèma",
+
+# Protect
+'protectlogpage' => 'Pruteziòn',
+'protectedarticle' => '"[[$1]]" l\'è prutèt',
+'modifiedarticleprotection' => 'l\'à cambié e\' livèl d\'pruteziòn par "[[$1]]"',
+'protectcomment' => 'Rasòn:',
+'protectexpiry' => 'Scadenza:',
+'protect_expiry_invalid' => "La scadenza la n'è piò bona.",
+'protect_expiry_old' => "T'cì ariv tèrd! La dèda d'scadenza l'è zà pasëda.",
+'protect-text' => "Cun ste mudèl u s'pò guardè e u s'pò cambié ê livèl d'pruteziòn dla pàgina '''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Oci! Ta n'ê miga i parmess par cambié i livel d'pruteziòn dla pàgina.
+S't'vù vdë in dô ch'j è i parmess, guèrda '''$1''':",
+'protect-cascadeon' => "Sta pàgina pr'adès l'è bluchëda parchè l'è stra l'{{PLURAL:$1|la pàgina aquè sota, ch'l'à|al pàgin aquè sota, ch'j'à}} la pruteziòn ricursiva.
+T'pù cambié ê livel d'pruteziòn d'sta pàgina, mo la pruteziòn ricursiva la resta a lè.",
+'protect-default' => 'Dà ê parmess a tòt j navigadur',
+'protect-fallback' => 'A què u j vô ê parmess "$1"',
+'protect-level-autoconfirmed' => "Bloca i navigador nov e quij ch'j n' s'è miga registrè",
+'protect-level-sysop' => 'Sol par j aministradôr',
+'protect-summary-cascade' => 'ricursiv',
+'protect-expiring' => 'ê schëd: $1 (UTC)',
+'protect-cascade' => "Prutezz al pàgin ch'j fa pèrt d'questa (pruteziòn ricursiva)",
+'protect-cantedit' => "Oci! T'an pù miga cambié i livel d'pruteziòn dla pàgina, parchè t'an ê incora i parmess par cambié la pàgina.",
+'restriction-type' => 'Parmess:',
+'restriction-level' => "Livel d'restriziòn:",
+
+# Undelete
+'undeletelink' => 'Guèrda/Torna indrì',
+'undeletedarticle' => 'l\'à artruvè "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => "Spàzi d'é nom:",
+'invert' => 'Torna indrì cun la seleziòn',
+'blanknamespace' => '(Prèma)',
+
+# Contributions
+'contributions' => 'I mì lavor sora Vichipedia',
+'contributions-title' => "Tòt quel ch'l'à scrètt $1",
+'mycontris' => "Quél ch'a j ò scrètt me",
+'contribsub2' => 'Par $1 ($2)',
+'uctop' => '(va sò)',
+'month' => "A cminzipiè d'e' mës (è d'j mës prezedént)",
+'year' => "A cminzipié d'l'àn (e d'j èn prezedent)",
+
+'sp-contributions-newbies' => "Fam avdé sol i lavòr d'j utent nuv",
+'sp-contributions-blocklog' => "Regèstar d'j bloc",
+'sp-contributions-search' => 'Zerca j lavór',
+'sp-contributions-username' => 'Indirèzz IP o soranòm',
+'sp-contributions-submit' => 'Zerca',
+
+# What links here
+'whatlinkshere' => "Pagin ch'j è atachedi a questa",
+'whatlinkshere-title' => 'Pagin atachédi a "$1"',
+'whatlinkshere-page' => 'Pàgina:',
+'linkshere' => "Sti pàgin a què al cuntèn di culegamént a '''[[:$1]]''':",
+'isredirect' => 'Re-indirèzza',
+'istemplate' => 'inclusiòn',
+'isimage' => 'culegamént a una figura',
+'whatlinkshere-prev' => '{{PLURAL:$1|quel prèma|i $1 prèma}}',
+'whatlinkshere-next' => '{{PLURAL:$1|quel dòp|i $1 dòp}}',
+'whatlinkshere-links' => '← culegamént',
+'whatlinkshere-hideredirs' => "$1 u t' rmanda",
+'whatlinkshere-hidetrans' => '$1 inclusiòn',
+'whatlinkshere-hidelinks' => '$1 culegamént',
+'whatlinkshere-filters' => 'Filtar',
+
+# Block/unblock
+'blockip' => 'Indirèzz IP bluché',
+'ipboptions' => '2 ór:2 hours,2 dè:1 day,3 dè:3 days,1 smana:1 week,2 smani:2 weeks,1 mês:1 month,3 mis:3 months,6 mîs:6 months,1 àn:1 year,par sempar:infinite',
+'ipblocklist' => 'Soranom e indirezz IP bluché',
+'blocklink' => 'Met-j é carnaz',
+'unblocklink' => "chèva e' carnàz",
+'change-blocklink' => 'Chèmbia carnàz',
+'contribslink' => "Ch'l'un ch'l'à scrét",
+'blocklogpage' => "Regèstar d'j blocch",
+'blocklogentry' => '"[[$1]]" l\'è sté bluché par $2 $3',
+'unblocklogentry' => "l'à sbluchè $1",
+'block-log-flags-nocreate' => "Un' s'pò brisa registrès un'étra volta",
+
+# Move page
+'movepagetext' => "Cun st'uperaziòn t'pù cambiè e' nom a una pàgina. Tòti al versiòn prezedenti j và drì a la pàgina nova.
+E' nom vec, nec quel, u t' pórta a la pàgina nova.
+E adès, a l' set cus ch't' pù fè? T'pù andé a zarchè i nom vec e meti-j a post tot cun e' nom nov. S't'a n'e' brisa voja, l'è listéss, parò va a cuntrulè prèma s'j è di [[Special:DoubleRedirects|doppii]] ó [[Special:BrokenRedirects|ghènz scuvert]].
+T'ci responsabil d'cuntrulé che tot i ghenz j seja a post.
+
+Oci! La pàgina la '''n'srà''' mòsa s'u j è za una pàgina cun e' stès nom. T'an pù scrivar sora una pàgina ch'la j è za.
+Parò, se la pàgina l'è vuta o l'è sol un reindirizament.
+
+'''STA ATENTI!'''
+Questa l'è un'uperaziòn delichèta. A sit sicur? Mo propri? T'an féga de casèn.
+Un cunsej? Pensa al conseguenzi de tu att prèma d's-cjazè e' butòn.",
+'movepagetalktext' => "La pàgina d'cunversaziòn atachèda a st'artècul la sta insèm a l'artècul, '''fòra ch'in 'sti chès''':
+*quènd ch'u s' sposta la pàgina tra spazi d'e' nom difarent;
+*quènd una pàgina d'cunversaziòn la j è za cun e stes nom (e la n'è vuta)
+*e' quadret d'cunferma aquè sota un è piò spuntè.
+
+In tot sti chès, s'et pazienzia, t'pù spustè a man tot quel c'u j è scrètt intla pàgina d'cunversaziòn.",
+'movearticle' => 'Chèmbia nom a la pàgina:',
+'newtitle' => 'Titul nóv:',
+'move-watch' => "Ten sot'öcc sta pàgina",
+'movepagebtn' => 'Sposta la pàgina',
+'pagemovedsub' => "T'cì ste brev! T'a j é fata.",
+'movepage-moved' => "'''\"\$1\" l'à cambié post a \"\$2\"'''",
+'articleexists' => "La j è za una pàgina ch'la s-cjama acsè. O e nom ch'ta j e dë un va brisa ben.
+Par piaser, daij un ètar nom.",
+'talkexists' => "'''La pàgina l'è stëda spusteda ben, invezi la pàgina d'cunversaziòn l'è andëda a cuzè cun òna ch'l'à ê stes nom. Csa fasègna?
+Par piasé, met insem al du pàgin te, fasend copia e incola.",
+'movedto' => 'Spusté vers:',
+'movetalk' => "Sposta ènca la pàgina d'cunversaziòn",
+'1movedto2' => "[[$1]] l'è stê mòs a [[$2]]",
+'1movedto2_redir' => "[[$1]] l'è stè moss in [[$2]] par redireziòn",
+'movelogpage' => "Regéstar d'j muvimént",
+'movereason' => 'Rasòn:',
+'revertmove' => 'Métla cum era prèma',
+
+# Export
+'export' => 'Espórta dal pàgin',
+
+# Thumbnails
+'thumbnail-more' => 'Fal piò lèrg',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'La tu pàgina persunèla',
+'tooltip-pt-mytalk' => "La tu pàgina d'cunversaziòn cun ch'jetar",
+'tooltip-pt-preferences' => 'I tu gòst',
+'tooltip-pt-watchlist' => "Lèsta dal pàgin ch'te ténn sot öcc",
+'tooltip-pt-mycontris' => "Lèsta d'quel ch'a j ò scrètt mè",
+'tooltip-pt-login' => "E' srevv mej registrét, énch s't' antcé ublighè a fèl",
+'tooltip-pt-logout' => "Va fora, t'é finì",
+'tooltip-ca-talk' => 'Guèrda al discussion sora sta pagina',
+'tooltip-ca-edit' => "Te t' po' cambiè 'sta pagina. Par piasè, arcoldat, guèrda prèma cu'ste fat, e pu dòp sèlva e' tu lavor.",
+'tooltip-ca-addsection' => 'Taca una nova seziòn',
+'tooltip-ca-viewsource' => "Sta pàgina què l'à e' carnaz, ma t'pù avdé e' su codiz surgent.",
+'tooltip-ca-history' => "A vut avdé cun cl'era prèma sta pagina?",
+'tooltip-ca-protect' => 'Mett una pruteziòn a sta pàgina',
+'tooltip-ca-delete' => 'Scanzèla sta pàgina',
+'tooltip-ca-move' => 'Chèmbia nòm a sta pàgina',
+'tooltip-ca-watch' => "Vut t'nì drì a sta pàgina?",
+'tooltip-ca-unwatch' => "Chèva sta pàgina d'la lista dj pàgin da tnì öcc",
+'tooltip-search' => 'Zerca dentar {{SITENAME}}',
+'tooltip-search-go' => "Va a zirché una pàgina c'l'as cjèma acsè, s'la j è",
+'tooltip-search-fulltext' => "Zerca e' scrètt in tal pàgin",
+'tooltip-n-mainpage' => "Va a v'dé la Prèma Pagina",
+'tooltip-n-mainpage-description' => "Va a v'dé la prèma pagina",
+'tooltip-n-portal' => "A't spieghen nicosa sora e' purtèl, cosa t'pu fè a què e indov'ej al robi",
+'tooltip-n-currentevents' => "Zerca dagli infurmaziòn sora i fät d'incù dè",
+'tooltip-n-recentchanges' => "Lèsta d'j ultum cambiamént int'e' sit",
+'tooltip-n-randompage' => 'Fam avdé la pagina ch’ u t’ pé',
+'tooltip-n-help' => "E't absogn d'spiegazion?",
+'tooltip-t-whatlinkshere' => "Lèsta d'tott al pagin ch'aglj è atachedi a questa",
+'tooltip-t-recentchangeslinked' => "Lèsta d'j ultum cambiament al pàgin atachédi a questa",
+'tooltip-feed-rss' => 'Canël RSS par sta pàgina',
+'tooltip-feed-atom' => 'Canël Atom par sta pàgina',
+'tooltip-t-contributions' => "Guèrda la lèsta d'tot i lavor ch'l'à fat ste patàca",
+'tooltip-t-emailuser' => 'Manda un scrètt a ste patàca',
+'tooltip-t-upload' => "Carga d'j file multimediél",
+'tooltip-t-specialpages' => 'Lèsta ad toti al pàgin particulèri',
+'tooltip-t-print' => 'Versiòn bona da stampè sta pagina',
+'tooltip-t-permalink' => "Culegament fèss a 'sta version d'la pagina",
+'tooltip-ca-nstab-main' => "Guèrda st'ètra pagina",
+'tooltip-ca-nstab-user' => 'Guèrda la pàgina persunëla',
+'tooltip-ca-nstab-special' => "Csa fet ? Questa l'è una pàgina particulèra; t'an pu brisa scrivar sora",
+'tooltip-ca-nstab-project' => "Guèrda la pàgina dagl'infurmaziòn",
+'tooltip-ca-nstab-image' => "Guèrda la pàgina d'e' file",
+'tooltip-ca-nstab-template' => "Guèrda e' mudel",
+'tooltip-ca-nstab-category' => 'Guèrda la pàgina dla categurèja',
+'tooltip-minoredit' => "Segna sta mudèfga ch'l'è znina",
+'tooltip-save' => 'Regèstra i tü cambiamént',
+'tooltip-preview' => "Guèrda ste fat un bèl lavor, l'è sèmpar mej fè'l, prèma d'registrè!",
+'tooltip-diff' => "Fa m'avdé i cambiamént ch'a j ò fat me",
+'tooltip-compareselectedversions' => "Guèrda al diferénzi tra 'l du versiòn seleziunèdi d'sta pàgina",
+'tooltip-watch' => 'Mett sta pagina insèm aglj ètri da tnì sot öcc',
+'tooltip-rollback' => "E butòn \"armèt cum'era prèma\" sérv par scanzlè quel ch'l'à fät ch'l'un ch'à lavurè par ultum in sta pàgina",
+'tooltip-undo' => "\"Torna indrì\" e' serv par scanzlè 'sta mudèfica, l'avèrr la fnestra d'mudèfica in manira d'guardé prèma. Quènd t'e' fat, t'pù mètar in bas la spiegaziòn dla tu mudèfica.",
+
+# Browsing diffs
+'previousdiff' => "← Difarénza prèma d'questa",
+'nextdiff' => 'Mudèfica piò nova →',
+
+# Media information
+'file-info-size' => "($1 × $2 pixel, amsùra d'e' file: $3, tipo MIME: $4)",
+'file-nohires' => "<small>U n' è pusèbil d'avdé cun òna risoluziòn piò élta. </small>",
+'svg-long-desc' => "(file d'taja SVG, dimensiòn numinèli $1 × $2 pixel, dimensiòn d'e' file: $3)",
+'show-big-image' => 'Versiòn ad amsura pina',
+'show-big-image-thumb' => "<small>Amsùra d'sta versiòn: $1 × $2 pixel</small>",
+
+# Bad image list
+'bad_image_list' => "E' quèdar l'è quest'aquè:
+
+As t'nèn bon sol j elemént dal lèsti (al righ chj cmènza par *)
+E' prèm culegamént d'una riga l'à da èsar un culegamént a un file c'un gn'entra gninto
+Tot i culegamént ch'j ven dop, sora la stèsa riga, j conta cumpagna d'j eceziòn (e' vò dì, pàgin indov e' file u's pò infilè nurmalment)",
+
+# Metadata
+'metadata' => 'Dèd sora i dèd',
+'metadata-help' => "Ste file l'à d'l'infurmaziòn in piò. Forsi parchè al figur j è stedi cjapèdi con la machina digitèla o cun e' scàner.
+Se parò un qvelcadon à lavurè sora sta figura, zerti infurmaziòn j n' curespòn piò cun l'uriginel.",
+'metadata-expand' => 'Fam avdé i particulèr',
+'metadata-collapse' => 'Nascond i particulèr',
+'metadata-fields' => "I chêmp d'j metadata EXIF elenché in ste mesàg, j t' ven presenté int'la pàgina d'la figura, quènd la tabèla d'j metadata l'è ardòta znina. J ètar chèmp j srà nascost.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength",
+
+# External editor support
+'edit-externally' => 'Mudèfica ste file cun un prugrama esteran',
+'edit-externally-help' => "(Guèrda e' [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] par avé d'j ètri infurmaziòn) (l'è in inglés)",
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tòt',
+'namespacesall' => 'töt',
+'monthsall' => 'tòt',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Fam avdè al mudèfich impurtènti',
+'watchlisttools-edit' => "Guèrda e mudèfica la lèsta d'pàgin da tnì d'öcc",
+'watchlisttools-raw' => "Mudèfiga la lèsta - scrètta - dal pàgin da tnì d'öcc",
+
+# Special:SpecialPages
+'specialpages' => 'Pàgin particulèri',
+
+);
diff --git a/languages/messages/MessagesRif.php b/languages/messages/MessagesRif.php
index b7ca1601..a18f39d5 100644
--- a/languages/messages/MessagesRif.php
+++ b/languages/messages/MessagesRif.php
@@ -67,14 +67,20 @@ $messages = array(
'category-empty' => "''Taggayt a war dags bu ca n Tasna niɣ ca n umedia.''",
'listingcontinuesabbrev' => 'arni-d.',
-'about' => 'Xef',
-'newwindow' => '(Areẓm di tburjet d-tamaynut)',
-'cancel' => 'Sbdd',
+'about' => 'Xef',
+'newwindow' => '(Areẓm di tburjet d-tamaynut)',
+'cancel' => 'Sbdd',
+'mytalk' => 'Amsawal inu',
+'navigation' => 'Tagriwa',
+
+# Cologne Blue skin
'qbfind' => 'Af',
'qbedit' => 'Ẓṛeg',
'qbspecialpages' => 'Tudmawin Special',
-'mytalk' => 'Amsawal inu',
-'navigation' => 'Tagriwa',
+
+# Vector skin
+'vector-namespace-main' => 'Tasna',
+'vector-namespace-mediawiki' => 'Tabrat',
'errorpagetitle' => 'Anezri',
'returnto' => 'Dwl ghar $1.',
@@ -173,9 +179,6 @@ teqqad ad yilli days ca n usekkil war itwagg deg isem .',
'createaccount' => 'Egg amiḍan',
'gotaccount' => "ɣark amiḍan? '''$1'''.",
'gotaccountlink' => 'Adeff',
-'yourrealname' => 'isem n deṣṣaḥ :',
-'prefs-help-realname' => 'isem inec n deṣṣaḥ mala txesad waha .
-mala tucit-id, ataf Lxdant inec a tetwassan ila inec.',
'loginsuccesstitle' => 'Adaf icna',
'loginsuccess' => "'''Qac tudeffed di {{SITENAME}} s \"\$1\".'''",
'nosuchuser' => 'War illi ca n useqdac s isem a"$1".
@@ -225,18 +228,18 @@ zzat ma ca n e-mail nniḍen ma ad itwasekk ɣar umiḍan , ixessa ad tegged man
'hr_tip' => 'Acariḍ aglawan',
# Edit pages
-'summary' => 'Tagḍwit:',
-'subject' => 'Abatu/izwl:',
-'minoredit' => 'Ta d taẓrigt d-tamẓeyant',
-'watchthis' => 'Ḥḍa tasna ya',
-'savearticle' => 'Xmml tasna',
-'preview' => 'Azar-ascan',
-'showpreview' => 'Ẓar Azar-ascan',
-'showdiff' => 'Ẓar mayn teẓṛegd.',
-'anoneditwarning' => "'''ɣark:''' war tudifd ca s isem inec.
+'summary' => 'Tagḍwit:',
+'subject' => 'Abatu/izwl:',
+'minoredit' => 'Ta d taẓrigt d-tamẓeyant',
+'watchthis' => 'Ḥḍa tasna ya',
+'savearticle' => 'Xmml tasna',
+'preview' => 'Azar-ascan',
+'showpreview' => 'Ẓar Azar-ascan',
+'showdiff' => 'Ẓar mayn teẓṛegd.',
+'anoneditwarning' => "'''ɣark:''' war tudifd ca s isem inec.
Tansa n IP inac ad-teqqim deg umezruy n teẓṛigin n Tasna ya .",
-'summary-preview' => 'Azar-ascan n Tegḍwit:',
-'blockedtext' => "'''Isem useqdac niɣ tansa IP inecc tewabluca .'''
+'summary-preview' => 'Azar-ascan n Tegḍwit:',
+'blockedtext' => "'''Isem useqdac niɣ tansa IP inecc tewabluca .'''
iblocat $1.
Maynzi ''$2''.
@@ -249,33 +252,33 @@ Tzemred ad temsawaded ag $1 niɣ [[{{MediaWiki:Grouppage-sysop}}|administrator]]
war tzemred ca ad ad tesxedmed 'e-mail this user' ɣar mala ca n e-mail illa ɣark di [[Special:Preferences|Isemyifiyen n umiḍan]] u war twabluki ca usexdem ines.
Tansa IP inecc n ruxa d $3, u ID icecc iteblukan d #$5.
maṛṛa manaya deg ujenna eggit di tabrat i ɣ-ad tsekked.",
-'newarticle' => '(Amaynu)',
-'newarticletext' => "Tdefar-d tazdayt n Tasna εad war telli .
+'newarticle' => '(Amaynu)',
+'newarticletext' => "Tdefar-d tazdayt n Tasna εad war telli .
bac ad tegged , arri di taflwit a swadday (xemm i [[{{MediaWiki:Helppage}}| Tasna n Tallalt]] i ineɣmisen ifruryen).
mala qacek da s ɣalaṭ waha, tecca di tbutunt n '''deffar''' di (browser) inec .",
-'noarticletext' => 'Rxxu ur din llint ca tira di tasna ya.
+'noarticletext' => 'Rxxu ur din llint ca tira di tasna ya.
Tzmmard [[Special:Search/{{PAGENAME}}|rzu xf yizwl n tasna ya]] di tasniwin nnḍni,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
nigh [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.',
-'previewnote' => "'''Wa d Azar-ascan waha;
+'previewnote' => "'''Wa d Azar-ascan waha;
tiẓṛigin εad war twaḥḍent!'''",
-'editing' => 'Aẓṛag di $1',
-'editingsection' => 'Aẓrag di $1 (tigezmi)',
-'copyrightwarning' => "Maṛṛa tirra di {{SITENAME}} twaggent swadday i $2 (ẓar da $1).
+'editing' => 'Aẓṛag di $1',
+'editingsection' => 'Aẓrag di $1 (tigezmi)',
+'copyrightwarning' => "Maṛṛa tirra di {{SITENAME}} twaggent swadday i $2 (ẓar da $1).
mala war texsed tirra inac ad twaẓṛegent , ad twamsebḍant .
Ur ten-teg ca da.<br />
tjadjid-anɣ Ɛawt ila qa d cekk ig yuran manaya, niɣ tesneɣlet-id zi ca n uɣbal nniḍn d alelli.
'''UR SADDAF CA TIRRA ƔARSENT COPYRIGHTE BLA MA AD-IXES BAB-INES !'''",
-'longpagewarning' => "'''WARNING: Tasna ya dag-s $1 kilobyte ;
+'longpagewarning' => "'''WARNING: Tasna ya dag-s $1 kilobyte ;
ca n imsuṭṭuyen(browsers) war zemren ca ad ẓṛegen tasniwin dag-sent 32 kb niɣ ktar.
ixessa ad ten tebḍid ɣar tigezmin(sections) d timeẓyanin.'''",
-'templatesused' => 'Timudmiwin itwaggen di Tasna ya:',
-'templatesusedpreview' => 'Timudmiwin igg itwasxdemen dg uzar-ascan a :',
-'template-protected' => '(twaḥḍa)',
-'template-semiprotected' => '(semi-protected)',
-'nocreatetext' => '{{SITENAME}} war iqqim ca itejja iwdan ad ggen Tasniwin timaynutin.
+'templatesused' => 'Timudmiwin itwaggen di Tasna ya:',
+'templatesusedpreview' => 'Timudmiwin igg itwasxdemen dg uzar-ascan a :',
+'template-protected' => '(twaḥḍa)',
+'template-semiprotected' => '(semi-protected)',
+'nocreatetext' => '{{SITENAME}} war iqqim ca itejja iwdan ad ggen Tasniwin timaynutin.
tzemred addewred ɣar deffar, niɣ [[Special:UserLogin|Adeff niɣ egg amiḍan]].',
-'recreate-deleted-warn' => "'''Ɣark: qac tegged Tasna ig itwaksen zzat uya.'''
+'recreate-moveddeleted-warn' => "'''Ɣark: qac tegged Tasna ig itwaksen zzat uya.'''
Ẓar aɣmis n umzruy n usfad n Tasna ya bac ad tsenad ma mliḥ ad tkemled aẓṛag.",
@@ -283,7 +286,7 @@ tzemred addewred ɣar deffar, niɣ [[Special:UserLogin|Adeff niɣ egg amiḍan]]
'viewpagelogs' => 'Ẓar aɣmis n Tasna ya',
'currentrev' => 'Afegged n ruxa',
'revisionasof' => 'Affegged am $1',
-'revision-info' => 'Afegged am $1 s $2', # Additionally available: $3: revision id
+'revision-info' => 'Afegged am $1 s $2',
'previousrevision' => '←Affegged n zik/zic',
'nextrevision' => 'Afegged d amaynu→',
'currentrevisionlink' => 'Afegged n rux',
@@ -299,7 +302,7 @@ Tasarut: (cur) = imṣebḍiyen ag tunɣilt n ruxa,
'histlast' => 'Anggaru n marra',
# Revision feed
-'history-feed-item-nocomment' => '$1 ɣar $2', # user at time
+'history-feed-item-nocomment' => '$1 ɣar $2',
# Revision deletion
'rev-delundel' => 'sken/ffer',
@@ -316,11 +319,9 @@ Tasarut: (cur) = imṣebḍiyen ag tunɣilt n ruxa,
'searchresults' => 'Tifellawin n tarezzut',
'searchresults-title' => 'Tifellawin n tarezzut xef "$1"',
'searchsubtitle' => 'Trezzud xef \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|marra tasniwin issentan s "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|marra tasniwin iteqqnen ghar "$1"]])',
-'noexactmatch' => "'''war telli ca n Tasna qarn-as \"\$1\".'''
-tzemred ad [[:\$1|tarnid cek]].",
-'prevn' => 'zzat $1',
-'nextn' => 'deffar $1',
-'viewprevnext' => 'Ẓar ($1) ($2) ($3)',
+'prevn' => 'Amzray {{PLURAL:$1|$1}}',
+'nextn' => 'wn d-itasn {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 tawalt|$2 tiwalin}})',
'search-suggest' => 'Ttugha txsd a tinid: $1',
'search-interwiki-caption' => 'Awmatn n usnfar',
@@ -332,9 +333,12 @@ tzemred ad [[:\$1|tarnid cek]].",
'powersearch-legend' => 'Tarzzut tanmhazt',
# Preferences page
-'preferences' => 'Ismyifiyn',
-'mypreferences' => 'Isemyifiyen inu',
-'searchresultshead' => 'Tarzzut',
+'preferences' => 'Ismyifiyn',
+'mypreferences' => 'Isemyifiyen inu',
+'searchresultshead' => 'Tarzzut',
+'yourrealname' => 'isem n deṣṣaḥ :',
+'prefs-help-realname' => 'isem inec n deṣṣaḥ mala txesad waha .
+mala tucit-id, ataf Lxdant inec a tetwassan ila inec.',
# Groups
'group-sysop' => 'Indbaln',
@@ -369,6 +373,8 @@ tzemred ad [[:\$1|tarnid cek]].",
# Recent changes linked
'recentchangeslinked' => 'Isenfilen i yudsen wa',
+'recentchangeslinked-feed' => 'Tiẓṛigin ag ta',
+'recentchangeslinked-toolbox' => 'Tiẓṛigin ag ta',
'recentchangeslinked-title' => 'Tiẓṛigin ssaɣant-id ɣar "$1"',
'recentchangeslinked-noresult' => 'War llint ca n tiẓṛigin di Tasna ya di lwaqt id-tucid .',
'recentchangeslinked-summary' => "Ta d tabdart n isnfiln itwaggn drus zggwami di tasniwin id-iqqnen zg ict tasna nniḍn (nigh iqqnen ghar iwdan zi ca n taggayt).
@@ -388,6 +394,7 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
'listfiles' => 'Tabdart n ifayluten',
# File description page
+'file-anchor-link' => 'Afaylu',
'filehist' => 'Amzruy n usatul',
'filehist-help' => 'Tka di date/time bac ad tẓerd afaylu mamec ja d-itban di Lwaqt a .',
'filehist-deleteone' => 'sfaḍ',
@@ -400,9 +407,7 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
'imagelinks' => 'Tizdayin',
'linkstoimage' => '{{PLURAL:$1|Tasna ya teqn-ad|$1 Tasniwin a qnent-id}} ɣa ufaylu ya :',
'nolinkstoimage' => 'war telli ca n Tasna teqqen-d ɣa ufaylu ya.',
-'sharedupload' => 'Wa d ijj ufaylu itwacrec jar aṭṭas n isenfaren(projects).', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'war illi ca n ufaylu s isem a , tzemred ad $1.',
-'noimage-linktext' => 'Zdem d ijj',
+'sharedupload' => 'Wa d ijj ufaylu itwacrec jar aṭṭas n isenfaren(projects).',
'uploadnewversion-linktext' => 'Zdem-d tunɣilt d-tamaynut n ufaylu a',
# File deletion
@@ -431,8 +436,8 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
'doubleredirects' => '(redirects) ɛɛawdent',
'brokenredirects' => '(redirects) arẓent',
-'brokenredirects-edit' => '(arri)',
-'brokenredirects-delete' => '(sfaḍ)',
+'brokenredirects-edit' => 'arri',
+'brokenredirects-delete' => 'sfaḍ',
'withoutinterwiki' => 'Tasna bla tiẓdayin n tutlayt',
'withoutinterwiki-submit' => 'Smmrad',
@@ -546,7 +551,6 @@ Xemm $2 i tikkas timaynutin.',
'protectexpiry' => 'Itsala:',
'protect_expiry_invalid' => 'Akud n usali ur illi nican.',
'protect_expiry_old' => 'Akud usali izri, idwl d amzruy.',
-'protect-unchain' => 'Arzem turagin n usnaqel',
'protect-text' => "tzemred ad teẓṛed u atbedeld aswir n uḥeṭṭu n Tasna ya da '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Amiḍan inecc war ɣars turagt bac ad ibeddel aswir n uḥeṭṭu n Tasna .
Aqa (settings) n Tasna '''$1''':",
@@ -560,7 +564,7 @@ Tezemred ad tbedeld aswir n uḥeṭṭu n Tasna ya, maca war itegg walu i uḥe
'protect-expiring' => 'itsala deg $1 (UTC)',
'protect-cascade' => 'Ḥḍa Tasniwin i yudfen di Tasna ya (cascading protection)',
'protect-cantedit' => 'war tezemred ca ad tbedeld iswiren n uḥeṭṭu n Tasna ya, mayenzi war ɣark turagt bac ad tẓṛegd.',
-'protect-expiry-options' => '2 tasεεat:2 hours,1 ass:1 day,3 ussan:3 days,1 amalass:1 week,2 imallasen:2 weeks,1 ayur:1 month,3 iyuren:3 months,6 iyuren:6 months,1 asggas:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 tasεεat:2 hours,1 ass:1 day,3 ussan:3 days,1 amalass:1 week,2 imallasen:2 weeks,1 ayur:1 month,3 iyuren:3 months,6 iyuren:6 months,1 asggas:1 year,infinite:infinite',
'restriction-type' => 'Turagt:',
'restriction-level' => 'Aswir uskref:',
@@ -587,6 +591,7 @@ Tezemred ad tbedeld aswir n uḥeṭṭu n Tasna ya, maca war itegg walu i uḥe
'sp-contributions-newbies' => 'Ẓar Tabdart n tiggawin n useqdac a deg umiḍan amaynu waha',
'sp-contributions-newbies-sub' => 'i imiḍan imaynuten',
'sp-contributions-blocklog' => 'sbdd tabdart n talghut',
+'sp-contributions-talk' => 'Awal',
'sp-contributions-search' => 'Arzu x tiggawin',
'sp-contributions-username' => 'Tansa IP d isem useqdac:',
'sp-contributions-submit' => 'Tarzzut',
@@ -607,7 +612,7 @@ Tezemred ad tbedeld aswir n uḥeṭṭu n Tasna ya, maca war itegg walu i uḥe
# Block/unblock
'blockip' => 'Sbdd asqdac a',
-'ipboptions' => '2 n timirin:2 hours,1 n wass:1 day,3 n wussan:3 days,1 imalass:1 week,2 imallassn:2 weeks,1 wayur:1 month,3 wayurn:3 months,6 wayurn:6 months,1 asggwas:1 year,tartalla:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 n timirin:2 hours,1 n wass:1 day,3 n wussan:3 days,1 imalass:1 week,2 imallassn:2 weeks,1 wayur:1 month,3 wayurn:3 months,6 wayurn:6 months,1 asggwas:1 year,tartalla:infinite',
'ipblocklist' => 'Tabdart n tansiwin IP d isemawen n iseqdacen ig iteblukan',
'ipblocklist-submit' => 'Tarzzut',
'blocklink' => 'Sbedd',
@@ -639,7 +644,7 @@ mala amya, itxessa cekk ad tesnaqled s ufus mala txisd.",
'move-watch' => 'Ẓar Tasna ya',
'movepagebtn' => 'Snaqel Tasna',
'pagemovedsub' => 'Asmutti itwagg',
-'movepage-moved' => '\'\'\'"$1" twanql ɣar "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" twanql ɣar "$2"\'\'\'',
'articleexists' => 'Tasna s isem a tella da, niɣ isem itucid war icni.
ixdar isem nniḍn.',
'talkexists' => "'''Tasna twanql , maca Tasna n usiwl ins war twanqel ca maymmi qaddin ict nninḍ.
@@ -688,6 +693,7 @@ Bbeẓ x ufeskar n uzar-timeẓṛi zzat i gha txemmled min turid',
'tooltip-search-fulltext' => 'Rzu di tasniwin x waḍṛis a',
'tooltip-p-logo' => 'Tasbtirt Tamzwarut',
'tooltip-n-mainpage' => 'Adef ghar tasna tamezwarut',
+'tooltip-n-mainpage-description' => 'Adef ghar tasna tamezwarut',
'tooltip-n-portal' => 'Xf usenfar, mayn tzemmared a tegged, mani gha tafed tighawsiwin',
'tooltip-n-currentevents' => 'Af tilgha n ugilal xf tmsarin titurawin',
'tooltip-n-recentchanges' => 'Tabdart n isenfilen imaynuten di Wiki.',
@@ -750,7 +756,7 @@ Innḍni ad twaffrn dg umzwar.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Ẓṛeg afaylu a s usnas zi baṛṛa',
@@ -775,7 +781,7 @@ Innḍni ad twaffrn dg umzwar.
'watchlisttools-raw' => 'Ẓṛeg Tabdart uḥṭṭu tamenzut',
# Special:Version
-'version' => 'Tunɣilt', # Not used as normal message but as header for the special page itself
+'version' => 'Tunɣilt',
'version-specialpages' => 'Tudmawin Special',
# Special:FileDuplicateSearch
diff --git a/languages/messages/MessagesRm.php b/languages/messages/MessagesRm.php
index a3fada1b..7ce3e964 100644
--- a/languages/messages/MessagesRm.php
+++ b/languages/messages/MessagesRm.php
@@ -36,6 +36,7 @@ $messages = array(
'tog-enotifwatchlistpages' => "Trametta in e-mail sch'ina pagina sin mia glista d'observaziun vegn midada",
'tog-enotifusertalkpages' => "Trametta in e-mail sch'i ha dà midadas sin mia pagina da discussiun.",
'tog-enotifminoredits' => 'Trametta era in e-mail tar pitschnas midadas da las paginas',
+'tog-oldsig' => 'Prevista da la signatura actuala:',
'tog-fancysig' => "Suttascripziun senza link automatic tar la pagina da l'utilisader.",
'tog-showjumplinks' => 'Activar las colliaziuns "seglir a"',
'tog-watchlisthideown' => "Zuppa mias modificaziuns en la glista d'observaziun",
@@ -108,15 +109,23 @@ $messages = array(
'category-media-header' => 'Datotecas en la categoria "$1"',
'category-empty' => "''Questa categoria cuntegna actualmain nagins artitgels e naginas datotecas.''",
'hidden-categories' => '{{PLURAL:$1|Categoria zuppentada|Categorias zuppentadas}}',
-'hidden-category-category' => 'Zuppa categorias', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Zuppa categorias',
'category-subcat-count' => '{{PLURAL:$2|Questa categoria cuntegna be suandanta sutcategoria.|Questa categoria cuntegna {{PLURAL:$1|la suandanta sutcategoria|las $1 suandantas sutcategorias}} da totalmain $2 sutcategoria.}}',
'category-article-count' => '{{PLURAL:$2|Questa categoria cuntegna be la suandanta pagina.|{{PLURAL:$1|La suandanta pagina è|Las $1 suandantas paginas èn}} en questa categoria che cuntegna totalmain $2 paginas.}}',
'listingcontinuesabbrev' => 'cuntinuaziun',
-'about' => 'Surda',
-'article' => 'artitgel',
-'newwindow' => '(avra ina nova fanestra)',
-'cancel' => 'refusar las midadas',
+'about' => 'Surda',
+'article' => 'artitgel',
+'newwindow' => '(avra ina nova fanestra)',
+'cancel' => 'refusar las midadas',
+'moredotdotdot' => 'Dapli...',
+'mypage' => 'mia pagina',
+'mytalk' => 'Mia pagina da discussiun',
+'anontalk' => 'Pagina da discussiun da questa IP',
+'navigation' => 'Navigaziun',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Chattar',
'qbbrowse' => 'Sfegliar',
'qbedit' => 'Editar',
@@ -124,15 +133,35 @@ $messages = array(
'qbpageinfo' => 'Context',
'qbmyoptions' => 'Mia pagina',
'qbspecialpages' => 'paginas spezialas',
-'moredotdotdot' => 'Dapli...',
-'mypage' => 'mia pagina',
-'mytalk' => 'Mia pagina da discussiun',
-'anontalk' => 'Pagina da discussiun da questa IP',
-'navigation' => 'Navigaziun',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Datas da meta:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Agiuntar chapitel',
+'vector-action-delete' => 'Stizzar',
+'vector-action-move' => 'Spustar',
+'vector-action-protect' => 'Bloccar',
+'vector-action-undelete' => 'Restituir',
+'vector-action-unprotect' => 'Debloccar',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => "Pagina d'agid",
+'vector-namespace-image' => 'Datoteca',
+'vector-namespace-main' => 'Pagina',
+'vector-namespace-media' => 'Pagina da medias',
+'vector-namespace-mediawiki' => 'Communicaziun dal sistem MediaWiki',
+'vector-namespace-project' => 'Pagina da project',
+'vector-namespace-special' => 'Pagina speziala',
+'vector-namespace-talk' => 'Discussiun',
+'vector-namespace-template' => 'Model',
+'vector-namespace-user' => "Pagina d'utilisader",
+'vector-view-create' => 'Crear',
+'vector-view-edit' => 'Modifitgar',
+'vector-view-history' => 'Cronologia',
+'vector-view-view' => 'Leger',
+'vector-view-viewsource' => 'Contemplar il code da funtauna',
+'actions' => 'Acziuns',
+'namespaces' => 'Tip da pagina',
+'variants' => 'Variantas',
'errorpagetitle' => 'Errur',
'returnto' => 'Enavos tar $1.',
@@ -182,7 +211,7 @@ $messages = array(
'otherlanguages' => 'En auteras linguas',
'redirectedfrom' => '(renvià da $1)',
'redirectpagesub' => "questa pagina renviescha tar in'auter artitgel",
-'lastmodifiedat' => "L'ultima modificaziun da questa pagina: ils $1 a las $2.", # $1 date, $2 time
+'lastmodifiedat' => "L'ultima modificaziun da questa pagina: ils $1 a las $2.",
'viewcount' => 'Questa pagina è vegnida guardada {{PLURAL:$1|ina giada|$1 giadas}}.',
'protectedpage' => 'Pagina protegida',
'jumpto' => 'Midar tar:',
@@ -193,7 +222,6 @@ $messages = array(
'aboutsite' => 'Davart {{SITENAME}}',
'aboutpage' => 'Project:Davart',
'copyright' => 'Cuntegn disponibel sut $1.',
-'copyrightpagename' => '{{ns:project}}:Resguardar_dretgs_d_autur',
'copyrightpage' => '{{ns:project}}:Resguardar_dretgs_d_autur',
'currentevents' => 'Events actuals',
'currentevents-url' => 'Project:Events actuals',
@@ -201,8 +229,6 @@ $messages = array(
'disclaimerpage' => 'Project:Impressum',
'edithelp' => 'agid per editar',
'edithelppage' => 'Help:Prims pass',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Cuntegn',
'mainpage' => 'Pagina principala',
'mainpage-description' => 'Pagina principala',
@@ -305,7 +331,6 @@ El po cuntegnair in u plirs segns che na pon betg vegnir utilisads en titels.',
'namespaceprotected' => "Ti n'has betg la lubientscha da modifitgar paginas dal tip da pagina '''$1'''.",
# Login and logout pages
-'logouttitle' => "Log-out d'utilisaders",
'logouttext' => "'''Sortì cun success.'''
Ti pos cuntinuar cun utilisar {{SITENAME}} anonimamain, u che ti pos [[Special:UserLogin|t'annunziar]] sco medem u in'auter utilisader. Resguarda che entginas paginas pon anc vesair or tuttina sco sche ti eras annunzià enfin che ti has stizzà il cache da tes browser.",
@@ -313,7 +338,6 @@ Ti pos cuntinuar cun utilisar {{SITENAME}} anonimamain, u che ti pos [[Special:U
Tes conto è vegni creà.
Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].',
-'loginpagetitle' => 'Log-in per utilisaders',
'yourname' => "Num d'utilisader",
'yourpassword' => 'pled-clav',
'yourpasswordagain' => 'repeter pled-clav',
@@ -323,6 +347,7 @@ Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].'
'nav-login-createaccount' => "T'annunziar / registrar",
'loginprompt' => "Ti stos avair '''activà ils cookies''' per pudair t'annunziar tar {{SITENAME}}.",
'userlogin' => "T'annunziar / registrar",
+'userloginnocreate' => "T'annunziar",
'logout' => 'Sortir',
'userlogout' => 'Sortir',
'notloggedin' => "Betg s'annunzià",
@@ -334,23 +359,8 @@ Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].'
'createaccountmail' => 'per email',
'badretype' => 'Ils dus pleds-clav na corrispundan betg.',
'userexists' => "Quest num d'utilisader vegn gia duvrà. Tscherna per plaschair in'auter.",
-'youremail' => 'Email *',
-'username' => "Num d'utilisader:",
-'uid' => 'ID dal utilisader:',
-'prefs-memberingroups' => 'Commember {{PLURAL:$1|da la gruppa|da las gruppas}}:',
-'yourrealname' => 'Voss num endretg (nagin duair):',
-'yourlanguage' => 'linguatg:',
-'yourvariant' => 'varianta',
-'yournick' => 'Signatura:',
-'yourgender' => 'Schlattaina',
-'gender-unknown' => 'Betg inditgà',
-'gender-male' => 'Masculin',
-'gender-female' => 'Feminin',
-'email' => 'E-mail',
-'prefs-help-realname' => "Opziun: Qua pos inditgar in surnum che vegn inditga empè da tes num d'utilisader en tias suttascripziuns cun '''<nowiki>--~~~~</nowiki>'''.",
'loginerror' => "Sbagl cun t'annunziar",
-'prefs-help-email' => "L'adressa d'email è opziunala, pussibilitescha dentant da trametter in nov pled-clav en cass da sperdita. Plinavant pussibilitescha ella ad auters utilisaders da contactar tai per email senza che ti stos publitgar tia identitad.",
-'prefs-help-email-required' => "Inditgar in'adressa d'email è obligatoric.",
+'createaccounterror' => 'Betg pussaivel da crear in conto: $1',
'nocookieslogin' => "{{SITENAME}} utilisescha cookies per ch'utilisaders pon s'annunziar.
Ti has deactivà tes cookies.
Activescha per plaschair ils cookis en tes navigatur ed emprova danovamain.",
@@ -364,14 +374,15 @@ Curregia ti\'endataziun.',
'nouserspecified' => "Inditgescha per plaschair in num d'utilisader.",
'wrongpassword' => "Quai n'era betg il pled-clav correct. Prova anc ina giada.",
'wrongpasswordempty' => 'Ti as emblidà da scriver tes pled-clav. Prova anc ina giada.',
-'passwordtooshort' => "Tes pled-clav n'è betg valaivels u memia curts.
-El sto cuntegnair almain {{PLURAL:$1|in bustab|$1 bustabs}} e na po betg correspunder tes num d'utilisader.",
+'passwordtooshort' => 'Tes pled-clav sto cuntegnair almain {{PLURAL:$1|in bustab|$1 bustabs}}.',
+'password-name-match' => "Il pled-clav na dastga betg esser il medem sco il num d'utilisader.",
'mailmypassword' => 'Trametter in nov pled-clav per email',
'passwordremindertitle' => 'Nov pled-clav temporar per {{SITENAME}}',
'passwordremindertext' => 'Insatgi (probablamain ti, cun l\'adressa d\'IP $1) ha dumandà in nov pled-clav per {{SITENAME}} ($4). Il pled-clav temporar "$3" per l\'utilisader "$2" è vegnì creà. Sche quai era tes intent, ti al dovras per t\'annunziar e tscherner lura in nov pled-clav. Quest pled-clav temporar vegn a scrudar en {{PLURAL:$5|in di|$5 dis}}.
Sch\'insatgi auter ha fatg questa dumonda, ni sch\'il pled-clav è vegnì endament e ti na vuls betg pli midar el, pos ti simplamain ignorar quest messadi e cuntinuar la lavur cun tes pled-clav vegl.',
'noemail' => 'L\'utilisader "$1" n\'ha inditgà nagina adressa d\'e-mail.',
+'noemailcreate' => "Ti stos endatar in'adressa d'e-mail valaivla",
'passwordsent' => "In nov pled-clav è vegnì tramess a l'adressa d'e-mail ch'è registrada per l'utilisader \"\$1\".
T'annunzia per plaschair sche ti has retschavì el.",
'eauthentsent' => "In e-mail da confermaziun è vegnì tramess a l'adressa d'e-mail numnada.
@@ -448,7 +459,6 @@ Ti'adressa d'IP actuala è $3, ed la block ID è #$5.
Integrescha per plaschair tut las indicaziuns survart sche ti contacteschas insatgi.",
'blockednoreason' => 'inditgà nagina raschun',
'whitelistedittitle' => "t'annunzia per editar",
-'confirmedittitle' => 'Per editar è la confermaziun da la adressa dad email necessaria',
'confirmedittext' => 'Ti stos confermar tia adressa dad email avant che editar paginas. Inditgescha e conferma per plaschair tia adressa dad email en tias [[Special:Preferences|preferenzas]].',
'loginreqtitle' => 'Annunzia necessari',
'loginreqlink' => "t'annunziar",
@@ -469,6 +479,7 @@ Ti pos [[Special:Search/{{PAGENAME}}|tschertgar il term]] sin in\'autra pagina,
u [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear questa pagina]</span>.',
'userpage-userdoesnotexist' => 'Il conto d\'utilisader "$1" n\'èxista betg.
Controllescha sch ti vuls propi crear/modiftgar questa pagina.',
+'userpage-userdoesnotexist-view' => 'Il conto d\'utilisader "$1" n\'exista betg.',
'clearyourcache' => "'''Remartga''' Svida il chache da tes browser suenter avair memorisà, per vesair las midadas.
'''Mozilla / Firefox / Safari:''' tegnair ''Shift'' durant cliccar ''chargiar danovamain'', u smatgar ''Ctrl-F5'' u ''Ctrl-R'' (''Command-R'' sin in Macintosh);
'''Konqueror: '''clicca ''Reload'' u smatga ''F5'';
@@ -488,20 +499,21 @@ Ti garanteschas che ti has scrit tez quai u copià dad ina funtauna ch'è 'publi
han forsa problems cun editar artitgels da la grondezza 32 kb u pli grond.
Ponderai per plaschair da divider quest artitgel en pli pitschnas parts. '''",
'longpageerror' => "'''SBAGL: Il text che ti has tramess è $1 kilobytes gronds. Quei ei pli grond ch'il maximum da $2 kilobytes. Il text na sa betg vegnir memorisà. '''",
-'protectedpagewarning' => "'''ATTENZIUN: Questa pagina è vegnida bloccada, uschè che be utilisaders cun dretgs dad administraturs pon editar ella. '''",
-'templatesused' => 'Templates utilisads sin questa pagina:',
-'templatesusedpreview' => 'Templates utilisads en questa prevista:',
+'protectedpagewarning' => "'''ATTENZIUN: Questa pagina è vegnida bloccada, uschè che be utilisaders cun dretgs dad administraturs pon editar ella. '''
+Sco infurmaziun vegn mussada sutvart l'ultima endataziun dal cudesch da log:",
+'templatesused' => '{{PLURAL:$1|In model utilisà|Models utilisads}} sin questa pagina:',
+'templatesusedpreview' => '{{PLURAL:$1|In model utilisà|Models utilisads}} per questa prevista:',
+'templatesusedsection' => '{{PLURAL:$1|In model|Models}} utilisads en quest chapitel:',
'template-protected' => '(bloccà)',
'template-semiprotected' => '(mez protegidas)',
'hiddencategories' => 'Quest artitgel è commember da {{PLURAL:$1|1 categoria zuppentada|$1 categorias zuppentadas}}:',
-'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
'nocreatetext' => "{{SITENAME}} ha restrinschì las pussaivladas da crear novas paginas.
Ti pos ir anavos ed editar ina pagina existenta, u [[Special:UserLogin|t'annunziar u registrar]].",
'permissionserrorstext-withaction' => 'Ti na dastgas betg $2. Quai ord {{PLURAL:$1|il suandant motiv|ils suandants motivs}}:',
-'recreate-deleted-warn' => "'''Attenziun: Ti recreeschas in artitgel ch'è vegni stidà pli baud.'''
+'recreate-moveddeleted-warn' => "'''Attenziun: Ti recreeschas in artitgel ch'è vegni stizzà pli baud.'''
Esi propi adattà da puspè crear questa pagina?
-En il ''log da stidar'' che suonda pos ti guardar daco che la pagina è vegnida stidada.",
+Qua pos guardar il log da stizzar e spustar da la pagina:",
# Parser/template warnings
'post-expand-template-inclusion-warning' => "'''Attenziun:''' La grondezza dals models integrads è memia gronda.
@@ -519,8 +531,9 @@ Quests arguments vegnan ignorads.",
# History pages
'viewpagelogs' => 'Guardar ils logs da questa pagina',
'currentrev' => 'Versiun actuala',
+'currentrev-asof' => 'Versiun actuala dals $2, las $3 uras',
'revisionasof' => 'Versiun dals $1',
-'revision-info' => "Quai è ina versiun veglia. Temp da la midada ''$1'' da ''$2''", # Additionally available: $3: revision id
+'revision-info' => "Quai è ina versiun veglia. Temp da la midada ''$1'' da ''$2''",
'previousrevision' => '← versiun pli veglia',
'nextrevision' => 'versiun pli nova →',
'currentrevisionlink' => 'Guardar la versiun actuala',
@@ -534,7 +547,7 @@ Quests arguments vegnan ignorads.",
* (davosa) = differenza cun la versiun precedenta
* M = Midà be bagatellas',
'history-fieldset-title' => 'tschertgar en la cronica',
-'deletedrev' => '[stidà]',
+'history-show-deleted' => 'be versiuns stizzadas',
'histfirst' => 'pli veglia',
'histlast' => 'pli nova',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -543,17 +556,21 @@ Quests arguments vegnan ignorads.",
# Revision feed
'history-feed-title' => 'Cronologia da las versiuns',
'history-feed-description' => 'Cronologia da versiuns per questa pagina sin questa vichi',
-'history-feed-item-nocomment' => '$1 las $2', # user at time
+'history-feed-item-nocomment' => '$1 las $2',
# Revision deletion
-'rev-deleted-comment' => '(eliminà commentari)',
-'rev-deleted-user' => "(stidà num d'utilisader)",
-'rev-deleted-event' => '(stidà acziun dal log)',
-'rev-delundel' => 'mussar/zuppar',
-'revdel-restore' => 'midar la visibilitad',
-'revdelete-content' => 'Cuntegn',
-'revdelete-summary' => 'resumaziun da la midada',
-'revdelete-uname' => "num d'utilisader",
+'rev-deleted-comment' => '(eliminà commentari)',
+'rev-deleted-user' => "(stidà num d'utilisader)",
+'rev-deleted-event' => '(stidà acziun dal log)',
+'rev-delundel' => 'mussar/zuppar',
+'rev-showdeleted' => 'mussar',
+'revdelete-show-file-submit' => 'Gea',
+'revdel-restore' => 'midar la visibilitad',
+'revdelete-content' => 'Cuntegn',
+'revdelete-summary' => 'resumaziun da la midada',
+'revdelete-uname' => "num d'utilisader",
+'revdelete-otherreason' => 'Auter/ulteriur motiv:',
+'revdelete-reasonotherlist' => 'Auter motiv',
# Merge log
'revertmerge' => 'Revocar la fusiun',
@@ -572,19 +589,21 @@ Quests arguments vegnan ignorads.",
'searchresulttext' => "Per dapli infurmaziuns davart il tschertgar sin {{SITENAME}}, guarda l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Ti has tschertgà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tut las paginas che entschevan cun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|colliaziuns a "$1"]])',
'searchsubtitleinvalid' => "Ti has tschertgà '''$1'''",
-'noexactmatch-nocreate' => "'''I n'exista nagina pagina cun il titel \"\$1\".'''",
'notitlematches' => 'Nagin titel correspunda',
'notextmatches' => 'Nagin text correspunda',
-'prevn' => 'davos $1',
-'nextn' => 'proxims $1',
+'prevn' => 'davos {{PLURAL:$1|$1}}',
+'nextn' => 'proxims {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Ultim resultat|Ultims resultats}}',
'nextn-title' => '{{PLURAL:$1|Proxim resultat|Proxims resultats}}',
'shown-title' => 'Mussar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
-'viewprevnext' => 'Mussar ($1) ($2) ($3).',
+'viewprevnext' => 'Mussar ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opziuns da tschertgar',
'searchmenu-exists' => "'''Igl exista ina pagina cun il num \"[[:\$1]] sin questa vichi\"'''",
'searchmenu-new' => "'''Crear la pagina \"[[:\$1]]\" sin questa vichi!'''",
'searchhelp-url' => 'Help:Cuntegn',
+'searchprofile-articles' => 'Paginas da cuntegn',
+'searchprofile-project' => 'Agid e paginas dal project',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tut',
'searchprofile-advanced' => 'Avanzà',
'searchprofile-articles-tooltip' => 'Tschertgar en $1',
@@ -602,9 +621,11 @@ Quests arguments vegnan ignorads.",
'search-interwiki-more' => '(dapli)',
'search-mwsuggest-enabled' => 'cun propostas',
'search-mwsuggest-disabled' => 'naginas propostas',
+'searcheverything-enable' => 'Tschertgar en tut ils tips da pagina',
'searchall' => 'tuts',
'showingresults' => "Sutvart èn enfin {{PLURAL:$1|'''in''' resultat|'''$1''' resultats}} cumenzond cun il numer '''$2'''.",
'showingresultsnum' => "Qua èn {{PLURAL:$3|'''1''' resultat|'''$3''' resultats}}, cumenzond cun il number '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' da '''$3'''|Resultats '''$1-$2''' da '''$3'''}} per '''$4'''",
'nonefound' => "'''Remartga''': Sco standard vegn be tschertga en tscherts tips da pagina.
Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar en tut las paginas (incl. discussiuns, models etc.) u scriva directamain il prefix dal spazi da num en il qual ti vuls tschertgar.",
'search-nonefound' => 'Per il term tschertga èn nagins resultats vegnids chattads.',
@@ -613,67 +634,106 @@ Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar e
'powersearch-ns' => 'Tschertgar en tips da pagina:',
'powersearch-redir' => 'Mussar sviaments',
'powersearch-field' => 'Tschertgar',
+'powersearch-toggleall' => 'tuts',
+'powersearch-togglenone' => 'Nagins',
+
+# Quickbar
+'qbsettings' => 'Glista laterala',
+'qbsettings-none' => 'Nagins',
+'qbsettings-fixedleft' => 'Sanester, fixà',
+'qbsettings-fixedright' => 'Dretg, fixà',
+'qbsettings-floatingleft' => 'Sanester, flottand',
+'qbsettings-floatingright' => 'Dretg, flottand',
# Preferences page
-'preferences' => 'Preferenzas',
-'mypreferences' => 'Mias preferenzas',
-'prefs-edits' => 'Dumber da las modificaziuns:',
-'prefsnologin' => "Betg t'annunzià",
-'prefsnologintext' => 'Ti stos esser <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} annunzià]</span> per midar tias preferenzas.',
-'prefsreset' => 'Preferenzas da standard ein vegnì reconstruidas.',
-'qbsettings' => 'Glista laterala',
-'qbsettings-none' => 'Nagins',
-'qbsettings-fixedleft' => 'Sanester, fixà',
-'qbsettings-fixedright' => 'Dretg, fixà',
-'qbsettings-floatingleft' => 'Sanester, flottand',
-'qbsettings-floatingright' => 'Dretg, flottand',
-'changepassword' => 'Midar pled-clav',
-'skin-preview' => 'Prevista',
-'dateformat' => 'format da las datas',
-'datedefault' => 'Nagina preferenza',
-'datetime' => 'Data e temp',
-'prefs-personal' => 'datas dal utilisader',
-'prefs-rc' => 'Mussar ultimas midadas',
-'prefs-watchlist' => "glista d'observaziun",
-'prefs-watchlist-days' => "Dumber dals dis che vegnan inditgads sin la glista d'observaziun:",
-'prefs-watchlist-edits' => 'Dumber da las midadas mussadas en la glista dad observaziun extendida:',
-'prefs-misc' => 'Different',
-'prefs-resetpass' => 'Midar il pled clav',
-'saveprefs' => 'memorisar',
-'resetprefs' => 'remetter las preferenzas (reset)',
-'restoreprefs' => 'Restituir tut las preferenzas da standard',
-'prefs-edit-boxsize' => 'Grondezza da la fanestra da modifitgar',
-'rows' => 'Lingias:',
-'columns' => 'Colonnas:',
-'searchresultshead' => 'Tschertga',
-'resultsperpage' => 'resultats per pagina:',
-'contextlines' => 'Lingia per resultat:',
-'contextchars' => 'Segns per lingia:',
-'savedprefs' => 'Tias preferenzas èn vegnidas memorisadas.',
-'timezonelegend' => "Zona d'urari:",
-'timezonetext' => 'Inditgescha la differenza tranter voss temp local e quel dal server (UTC).',
-'localtime' => 'Temp local:',
-'timezoneoffset' => 'Differenza¹:',
-'servertime' => 'Temp dal server:',
-'guesstimezone' => 'Emplenescha dal browser',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctica',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ocean atlantic',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ocean Indic',
-'timezoneregion-pacific' => 'Ocean pacific',
-'allowemail' => 'retschaiver emails dad auters utilisaders',
-'prefs-searchoptions' => 'Opziuns da tschertgar',
-'prefs-namespaces' => 'Tips da pagina',
-'defaultns' => 'En quests tips da pagina duai vegnir tschertga sco standard:',
-'default' => 'Standard',
+'preferences' => 'Preferenzas',
+'mypreferences' => 'Mias preferenzas',
+'prefs-edits' => 'Dumber da las modificaziuns:',
+'prefsnologin' => "Betg t'annunzià",
+'prefsnologintext' => 'Ti stos esser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} t\'annunzià]</span> per midar tias preferenzas.',
+'changepassword' => 'Midar pled-clav',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Prevista',
+'prefs-math' => 'TeX',
+'datedefault' => 'Nagina preferenza',
+'prefs-datetime' => 'Data e temp',
+'prefs-personal' => 'datas dal utilisader',
+'prefs-rc' => 'Mussar ultimas midadas',
+'prefs-watchlist' => "glista d'observaziun",
+'prefs-watchlist-days' => "Dumber dals dis che vegnan inditgads sin la glista d'observaziun:",
+'prefs-watchlist-days-max' => 'Maximalmain 7 dis',
+'prefs-watchlist-edits' => 'Dumber da las midadas mussadas en la glista dad observaziun extendida:',
+'prefs-misc' => 'Different',
+'prefs-resetpass' => 'Midar il pled clav',
+'prefs-email' => "Opziuns d'e-mail",
+'prefs-rendering' => 'Cumparsa',
+'saveprefs' => 'memorisar',
+'resetprefs' => 'remetter las preferenzas (reset)',
+'restoreprefs' => 'Restituir tut las preferenzas da standard',
+'prefs-editing' => 'Modifitgar',
+'prefs-edit-boxsize' => 'Grondezza da la fanestra da modifitgar',
+'rows' => 'Lingias:',
+'columns' => 'Colonnas:',
+'searchresultshead' => 'Tschertga',
+'resultsperpage' => 'resultats per pagina:',
+'contextlines' => 'Lingia per resultat:',
+'contextchars' => 'Segns per lingia:',
+'savedprefs' => 'Tias preferenzas èn vegnidas memorisadas.',
+'timezonelegend' => "Zona d'urari:",
+'localtime' => 'Temp local:',
+'timezoneoffset' => 'Differenza¹:',
+'servertime' => 'Temp dal server:',
+'guesstimezone' => 'Emplenescha dal browser',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Arctica',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Ocean atlantic',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Ocean Indic',
+'timezoneregion-pacific' => 'Ocean pacific',
+'allowemail' => 'retschaiver emails dad auters utilisaders',
+'prefs-searchoptions' => 'Opziuns da tschertgar',
+'prefs-namespaces' => 'Tips da pagina',
+'defaultns' => 'Uschiglio tschertgar en quests tips da pagina:',
+'default' => 'Standard',
+'prefs-files' => 'Datotecas',
+'prefs-emailconfirm-label' => 'Confirmaziun per e-mail:',
+'prefs-textboxsize' => 'Grondezza da la fanestra da modifitgar',
+'youremail' => 'Email *',
+'username' => "Num d'utilisader:",
+'uid' => 'ID dal utilisader:',
+'prefs-memberingroups' => 'Commember {{PLURAL:$1|da la gruppa|da las gruppas}}:',
+'prefs-registration' => 'Temp da registraziun:',
+'yourrealname' => 'Voss num endretg (nagin duair):',
+'yourlanguage' => 'linguatg:',
+'yourvariant' => 'varianta',
+'yournick' => 'Signatura:',
+'yourgender' => 'Schlattaina',
+'gender-unknown' => 'Betg inditgà',
+'gender-male' => 'Masculin',
+'gender-female' => 'Feminin',
+'email' => 'E-mail',
+'prefs-help-realname' => "Opziun: Qua pos inditgar in surnum che vegn inditga empè da tes num d'utilisader en tias suttascripziuns cun '''<nowiki>--~~~~</nowiki>'''.",
+'prefs-help-email' => "L'adressa d'email è opziunala, pussibilitescha dentant da trametter in nov pled-clav en cass da sperdita. Plinavant pussibilitescha ella ad auters utilisaders da contactar tai per email senza che ti stos publitgar tia identitad.",
+'prefs-help-email-required' => "Inditgar in'adressa d'email è obligatoric.",
+'prefs-info' => 'Infurmaziuns da basa',
+'prefs-i18n' => 'Internaziunalisaziun',
+'prefs-signature' => 'Signatura',
+'prefs-dateformat' => 'Format da la data',
+'prefs-timeoffset' => 'Differenza da temp',
+'prefs-advancedediting' => 'Opziuns avanzadas',
+'prefs-advancedrc' => 'Opziuns avanzadas',
+'prefs-advancedrendering' => 'Opziuns avanzadas',
+'prefs-advancedsearchoptions' => 'Opziuns avanzadas',
+'prefs-advancedwatchlist' => 'Opziuns avanzadas',
+'prefs-display' => 'Opziuns da visualisar',
+'prefs-diffs' => 'Cumparegliaziun da versiuns',
# User rights
-'userrights' => "Administraziun da dretgs d'utilisaders", # Not used as normal message but as header for the special page itself
+'userrights' => "Administraziun da dretgs d'utilisaders",
'userrights-lookup-user' => "Administrar gruppas d'utilisaders",
'userrights-user-editname' => "Inditgescha in num d'utilisader:",
'userrights-groupsmember' => 'Commember da:',
@@ -735,6 +795,13 @@ Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar e
'recentchanges-legend' => 'Opziuns per las ultimas midadas',
'recentchangestext' => "Sin questa pagina pos ti suandar las ultimas midadas sin '''{{SITENAME}}'''.",
'recentchanges-feed-description' => 'Suonda las ultimas midadas en la wiki cun quet feed.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova pagina',
+'recentchanges-label-newpage' => 'Questa modificaziun ha creà ina nova pagina',
+'recentchanges-legend-minor' => '$1 - pitschna midada',
+'recentchanges-label-minor' => 'Quai è ina pitschna modificaziun',
+'recentchanges-legend-bot' => '$1 - midada da bot',
+'recentchanges-label-bot' => 'Questa modificaziun è vegnida exequida dad in bot',
'rcnote' => "Sutvart {{PLURAL:$1|è '''ina''' midada|èn las ultimas '''$1''' midadass}} {{PLURAL:$2|da l'ultim di|dals ultims '''$2''' dis}}, versiun dals $4 $5.",
'rcnotefrom' => "Midadas dapi '''$2''' (maximalmain '''$1''' vegnan mussads).",
'rclistfrom' => 'Mussar las novas midadas entschavend cun $1',
@@ -761,6 +828,8 @@ Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar e
# Recent changes linked
'recentchangeslinked' => 'midadas sin paginas cun links',
+'recentchangeslinked-feed' => 'midadas sin paginas cun links',
+'recentchangeslinked-toolbox' => 'midadas sin paginas cun links',
'recentchangeslinked-title' => 'Midadas en artitgels ch\'èn colliads cun "$1"',
'recentchangeslinked-noresult' => 'Naginas midadas sin artitgels collads durant la perioda endatada.',
'recentchangeslinked-summary' => "Quest è ina glista da las midadas ch'èn vegnidas fatgas da curt en artitgels ch'èn colliads cun ina pagina specifica (ni en commembers d'ina categoria specifica).
@@ -771,7 +840,6 @@ Paginas sin [[Special:Watchlist|tia glista d'observaziun]] èn '''grassas'''.",
# Upload
'upload' => 'Chargiar si in file',
'uploadbtn' => 'Chargiar si il file',
-'reupload' => 'chargiar si danovamain',
'reuploaddesc' => 'Anavos tar la pagina da chargiar si.',
'uploadnologin' => "Betg t'annunzià",
'uploadnologintext' => "Ti stos [[Special:UserLogin|t'annunziar]] per chargiar si files.",
@@ -811,10 +879,20 @@ Sche la datoteca menziunada survart è il medem maletg en grondezza originala n'
Controllescha sche ti has era il maletg en grondezza originala e chargia si quel sut il num original.",
'uploadedimage' => '"[[$1]]" è vengì chargià si',
'uploadvirus' => 'La datoteca cuntegna in virus! Detagls: $1',
+'upload-source' => 'Datoteca da funtauna',
'sourcefilename' => 'file sin tes computer:',
+'sourceurl' => 'URL da funtauna:',
'destfilename' => 'num dal file sin il server:',
'upload-maxfilesize' => 'Grondezza da datoteca maximala: $1',
+'upload-too-many-redirects' => 'La URL ha cuntegnì memia blers renviaments',
+'upload-unknown-size' => 'Grondezza nunenconuschenta',
+'upload-http-error' => 'In sbagl da HTTP è capità: $1',
+
+# img_auth script messages
+'img-auth-nologinnWL' => 'Ti n\'ès betg t\'annunzia ed "$1" n\'è betg sin la glista alva.',
+'img-auth-nofile' => 'Datoteca "$1" n\'exista betg.',
+
# Special:ListFiles
'imgfile' => 'datoteca',
'listfiles' => 'Glista dals maletgs',
@@ -826,6 +904,7 @@ Controllescha sche ti has era il maletg en grondezza originala e chargia si quel
'listfiles_count' => 'Versiuns',
# File description page
+'file-anchor-link' => 'Datoteca',
'filehist' => 'Istorgia da las versiuns',
'filehist-help' => 'Clicca sin ina data/temps per vesair la versiun da lura.',
'filehist-deleteall' => 'Stidar tut las versiuns',
@@ -834,6 +913,7 @@ Controllescha sche ti has era il maletg en grondezza originala e chargia si quel
'filehist-current' => 'actual',
'filehist-datetime' => 'data/temp',
'filehist-thumb' => 'Maletg da prevista',
+'filehist-thumbtext' => 'Maletg da prevista per la versiun dals $2 las $3 uras',
'filehist-nothumb' => 'Nagin maletg da prevista',
'filehist-user' => 'Utilisader',
'filehist-dimensions' => 'dimensiuns',
@@ -843,9 +923,7 @@ Controllescha sche ti has era il maletg en grondezza originala e chargia si quel
'linkstoimage' => '{{PLURAL:$1|La suandanta pagina è colliada|Las suandantas $1 paginas èn colliadas}} cun questa datoteca:',
'nolinkstoimage' => 'Naginas paginas mussan sin questa datoteca.',
'redirectstofile' => '{{PLURAL:$1|Suandanta datoteca renviescha|Suandantas $1 datotecas renvieschan}} a questa datoteca:',
-'sharedupload' => 'Quai è ina datoteca da $1 e vegn eventualmain utilisada dad auters projects.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => "Ina datoteca cun quest num n'exista betg, ti pos dentant $1.",
-'noimage-linktext' => 'chargiar sin in',
+'sharedupload' => 'Quai è ina datoteca da $1 e vegn eventualmain utilisada dad auters projects.',
'uploadnewversion-linktext' => 'Chargiar si ina nova versiun da questa datoteca',
# MIME search
@@ -862,7 +940,8 @@ Betg emblida da controllar sche autras colliaziuns mainan als models avant ch'al
'unusedtemplateswlh' => 'Autras colliaziuns',
# Random page
-'randompage' => 'Artitgel casual',
+'randompage' => 'Artitgel casual',
+'randompage-nopages' => 'I na dat naginas paginas da {{PLURAL:$2|quest tip da pagina|quests tips da pagina}}: $1',
# Random redirect
'randomredirect' => 'Renviament casual',
@@ -886,8 +965,10 @@ Elements <s>stritgads</s> èn gia eliminads.",
I renviescha uss a [[$2]].',
'double-redirect-fixer' => 'Bot da renviaments',
-'brokenredirects' => 'Renviaments defects',
-'brokenredirectstext' => 'Ils suandants renviaments mainan a paginas betg existentas:',
+'brokenredirects' => 'Renviaments defects',
+'brokenredirectstext' => 'Ils suandants renviaments mainan a paginas betg existentas:',
+'brokenredirects-edit' => 'modifitgar',
+'brokenredirects-delete' => 'stizzar',
'withoutinterwiki' => 'Artitgels senza colliaziuns ad autras linguas',
@@ -1032,7 +1113,7 @@ Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan
# Delete
'deletepage' => 'Stizzar la pagina',
'confirm' => 'Confermar',
-'historywarning' => "Attenziun: L'artitgel che ti vuls stidar ha in'istorgia (pliras versiuns):",
+'historywarning' => "'''Attenziun:''' L'artitgel che ti vuls stizzar ha ina cronologia cun circa {{PLURAL:$1|ina versiun|$1 versiuns}}:",
'confirmdeletetext' => 'Ti es vidlonder da stizzar permanentamain in artitgel u in maletg e tut las versiuns pli veglias ord la datoteca. <br />
Conferma per plaschair che ti ta es conscient da las consequenzas e che ti ageschas tenor las [[{{MediaWiki:Policy-url}}|directivas da {{SITENAME}}]].',
'actioncomplete' => "L' acziun è terminada.",
@@ -1061,7 +1142,6 @@ L'ultima modificaziun vid questa pagina è da [[User:$3|$3]] ([[User talk:$3|tal
'protectexpiry' => 'Pretegì enfin:',
'protect_expiry_invalid' => "Il temp endatà n'è betg valaivel.",
'protect_expiry_old' => 'Il temp da proteger giascha en il passà.',
-'protect-unchain' => 'Midar la protecziun per spustar',
'protect-text' => "Qua pos ti contemplar ed midar il livel da protecziun per l'artitgel '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Tes conto d'utilisader n'ha betg il dretg da midar ils livels da protecziun.
Qua èn las reglas actualas per l'artitgel '''$1''':",
@@ -1107,6 +1187,7 @@ Ti pos midar il livel da protecziun da quest\'artitgel, quai na vegn dentant bet
'sp-contributions-newbies' => 'Be mussar contribuziuns da contos novs',
'sp-contributions-newbies-sub' => "Per novs contos d'utilisader",
'sp-contributions-blocklog' => 'Log dal bloccar',
+'sp-contributions-talk' => 'Discussiun',
'sp-contributions-search' => "Tschertgar contribuziuns d'utilisaders",
'sp-contributions-username' => "Adressa d'IP u num d'utilisader:",
'sp-contributions-submit' => 'Tschertga',
@@ -1134,7 +1215,7 @@ Ti pos midar il livel da protecziun da quest\'artitgel, quai na vegn dentant bet
'ipaddress' => "Adressa d'IP:",
'ipadressorusername' => "Adressa d'IP u num d'utilisader:",
'ipbexpiry' => 'Temp da bloccaziun:',
-'ipboptions' => '2 uras:2 hours,1 di:1 day,3 dis:3 days,1 emna:1 week,2 emnas:2 weeks,1 mais:1 month,3 mais:3 months,6 mais:6 months,1 onn:1 year,infinit:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uras:2 hours,1 di:1 day,3 dis:3 days,1 emna:1 week,2 emnas:2 weeks,1 mais:1 month,3 mais:3 months,6 mais:6 months,1 onn:1 year,infinit:infinite',
'badipaddress' => "l'adressa-IP è nunvalida",
'ipblocklist' => "Glista da las adressas da'IP e dals nums d'utilisader bloccads",
'ipblocklist-submit' => 'Tschertgar',
@@ -1177,7 +1258,7 @@ En quests cas as ti da spustar u colliar manualmain las paginas, sche giavischà
'move-watch' => 'Observar questa pagina',
'movepagebtn' => 'Spustar la pagina',
'pagemovedsub' => 'Spustà cun success',
-'movepage-moved' => '\'\'\'"$1" è vegnì spustà a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" è vegnì spustà a "$2"\'\'\'',
'movepage-moved-redirect' => 'In renviament è vegnì creà.',
'movepage-moved-noredirect' => 'I è vegnì impedì da crear in renviament.',
'articleexists' => 'I exista gia in artitgel cun quai num. Tscherni per plaschair in auter.',
@@ -1215,14 +1296,16 @@ L\'artitgel da destinaziun "[[:$1]]" exista gia. Vul ti stizzar el per far plaz
'allmessagestext' => 'Quai è ina glista da tut las communicaziuns dals differents tips da paginas da MediaWiki che vegnan utilisadas da la software da MediaWiki.
Fai ina visita sin [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] sche ti vuls gidar da translatar la software da MediaWiki.',
'allmessagesnotsupportedDB' => "Questa pagina na po betg vegnir mussada, perquai che '''\$wgUseDatabaseMessages''' è vegnì deactivà.",
-'allmessagesfilter' => 'filter dals nums da las novitads:',
-'allmessagesmodified' => 'Be mussar modifitgads',
+'allmessages-language' => 'Lingua:',
# Thumbnails
'thumbnail-more' => 'Mussar pli grond',
'thumbnail_error' => 'Sbagl cun crear il maletg da prevista: $1',
'thumbnail_invalid_params' => 'Parameters nunvalids dal maletg da prevista',
'thumbnail_dest_directory' => "Betg pussaivel da crear l'ordinatur da destinaziun.",
+'thumbnail_image-type' => 'Quest tip da maletg na vegn betg sustegnì',
+'thumbnail_gd-library' => 'Configuraziun betg cumpletta da la biblioteca da GD: Funcziun mancanta $1',
+'thumbnail_image-missing' => 'Datoteca para da mancar: $1',
# Special:Import
'import' => 'Impurtar paginas',
@@ -1257,6 +1340,7 @@ Ti pos vesair il code-fundamental.',
'tooltip-search-go' => "Mussar la pagina cun exact quest num (sch'ella exista)",
'tooltip-search-fulltext' => 'Tschertgar en tut las paginas quest text',
'tooltip-n-mainpage' => 'Ir a la pagina principala',
+'tooltip-n-mainpage-description' => 'Visitar la pagina principala',
'tooltip-n-portal' => 'Infurmaziuns davart il project, tge che ti pos far, nua che ti chassas infurmaziuns',
'tooltip-n-currentevents' => 'Chattar infurmaziuns davart occurrenzas actualas',
'tooltip-n-recentchanges' => 'La glista da las ultimas midadas en la wiki.',
@@ -1301,7 +1385,8 @@ Ti pos vesair il code-fundamental.',
# Attribution
'anonymous' => '{{PLURAL:$1|In utilisader anonim|Utilisaders anonims}} da {{SITENAME}}',
'siteuser' => 'utilisader $1 da {{SITENAME}}',
-'lastmodifiedatby' => 'Questa pagina è vegnida modifitgada la davosa giada ils $1 las $2 da $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Utilisader anonim $1 da {{SITENAME}}',
+'lastmodifiedatby' => 'Questa pagina è vegnida modifitgada la davosa giada ils $1 las $2 da $3.',
'othercontribs' => 'Basescha sin la lavur da $1.',
'others' => 'auters',
'creditspage' => 'Statistica da la pagina',
@@ -1329,7 +1414,7 @@ Ti pos vesair il code-fundamental.',
'nextdiff' => 'versiun pli nova →',
# Media information
-'imagemaxsize' => 'Grondezza maximala per maletgs sin paginas da descripziun',
+'imagemaxsize' => "Grondezza maximala da maletgs:<br />''(per paginas da descripziun da datotecas)''",
'thumbsize' => 'grondezza dals maletgs da prevista:',
'file-info-size' => '($1 × $2 pixels, grondezza da datoteca: $3, tip da MIME: $4)',
'file-nohires' => '<small>Nagina resuluziun pli auta disponibla.</small>',
@@ -1362,7 +1447,7 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ladezza',
@@ -1387,6 +1472,7 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'watchlistall2' => 'tut',
'namespacesall' => 'tuts',
'monthsall' => 'tuts',
+'limitall' => 'tuts',
# E-mail address confirmation
'confirmemail' => "Confermar l'adressa dad email",
@@ -1448,7 +1534,7 @@ Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
'watchlisttools-raw' => 'Editar il format da la glista (import/export)',
# Special:Version
-'version' => 'Versiun', # Not used as normal message but as header for the special page itself
+'version' => 'Versiun',
'version-extensions' => 'Extensiuns installadas',
'version-specialpages' => 'Paginas spezialas',
@@ -1473,4 +1559,8 @@ Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
'dberr-problems' => 'Stgisa!
Questa pagina ha actualmain difficultads tecnicas.',
+# HTML forms
+'htmlform-submit' => 'Trametter',
+'htmlform-selectorother-other' => 'Auters',
+
);
diff --git a/languages/messages/MessagesRmy.php b/languages/messages/MessagesRmy.php
index f437e1bb..9dfc8d5e 100644
--- a/languages/messages/MessagesRmy.php
+++ b/languages/messages/MessagesRmy.php
@@ -14,24 +14,22 @@
$fallback = 'ro';
$namespaceNames = array(
- NS_MEDIA => 'Mediya',
- NS_SPECIAL => 'Uzalutno',
- NS_MAIN => '',
- NS_TALK => 'Vakyarimata',
- NS_USER => 'Jeno',
- NS_USER_TALK => 'Jeno_vakyarimata',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '{{grammar:genitive-pl|$1}}_vakyarimata',
- NS_FILE => 'Chitro',
- NS_FILE_TALK => 'Chitro_vakyarimata',
- NS_MEDIAWIKI => 'MediyaViki',
- NS_MEDIAWIKI_TALK => 'MediyaViki_vakyarimata',
- NS_TEMPLATE => 'Sikavno',
- NS_TEMPLATE_TALK => 'Sikavno_vakyarimata',
- NS_HELP => 'Zhutipen',
- NS_HELP_TALK => 'Zhutipen_vakyarimata',
- NS_CATEGORY => 'Shopni',
- NS_CATEGORY_TALK => 'Shopni_vakyarimata'
+ NS_MEDIA => 'Mediya',
+ NS_SPECIAL => 'Uzalutno',
+ NS_TALK => 'Vakyarimata',
+ NS_USER => 'Jeno',
+ NS_USER_TALK => 'Jeno_vakyarimata',
+ NS_PROJECT_TALK => '{{grammar:genitive-pl|$1}}_vakyarimata',
+ NS_FILE => 'Chitro',
+ NS_FILE_TALK => 'Chitro_vakyarimata',
+ NS_MEDIAWIKI => 'MediyaViki',
+ NS_MEDIAWIKI_TALK => 'MediyaViki_vakyarimata',
+ NS_TEMPLATE => 'Sikavno',
+ NS_TEMPLATE_TALK => 'Sikavno_vakyarimata',
+ NS_HELP => 'Zhutipen',
+ NS_HELP_TALK => 'Zhutipen_vakyarimata',
+ NS_CATEGORY => 'Shopni',
+ NS_CATEGORY_TALK => 'Shopni_vakyarimata',
);
$messages = array(
@@ -75,17 +73,19 @@ $messages = array(
# Categories related messages
'subcategories' => 'Telekategoriye',
-'about' => 'Andar',
-'article' => 'Lekh',
-'newwindow' => '(inklel aver filiyastra)',
-'cancel' => 'Mekh la',
+'about' => 'Andar',
+'article' => 'Lekh',
+'newwindow' => '(inklel aver filiyastra)',
+'cancel' => 'Mekh la',
+'mypage' => 'Miri patrin',
+'mytalk' => 'Mire vakyarimata',
+'navigation' => 'Phiripen',
+'and' => '&#32;thai',
+
+# Cologne Blue skin
'qbedit' => 'Editisar',
'qbpageinfo' => 'Patrinyake janglimata',
'qbspecialpages' => 'Uzalutne patrya',
-'mypage' => 'Miri patrin',
-'mytalk' => 'Mire vakyarimata',
-'navigation' => 'Phiripen',
-'and' => '&#32;thai',
'errorpagetitle' => 'Dosh',
'returnto' => 'Ja palpale kai $1.',
@@ -115,7 +115,7 @@ $messages = array(
'userpage' => 'Dikh i jeneski patrin',
'viewtalkpage' => 'Dikh i diskucia',
'otherlanguages' => 'Avre ćhibande',
-'lastmodifiedat' => 'O palutno paruvipen $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'O palutno paruvipen $2, $1.',
'viewcount' => 'Kadaya patrin dikhlilyas {{PLURAL:$1|one time|$1var}}.',
'jumpto' => 'Ja kai:',
'jumptonavigation' => 'phiripen',
@@ -166,14 +166,12 @@ $messages = array(
'viewsource' => 'Dikh i sursa',
# Login and logout pages
-'logouttitle' => 'San avri akana',
'logouttext' => "'''Akana san avryal i {{SITENAME}}.'''
Shai te labyares {{SITENAME}} sar ekh bijanglo jeno vai shai te prinjares tut palem sar o jeno le kadale navesa vai le aver navesa.",
'welcomecreation' => '== Mishto avilyan, $1! ==
Akana si tuke ekh akont. Te na bistares te paruves, kana trebul tuke, tire kamimata kai {{SITENAME}}.',
-'loginpagetitle' => 'Jenesko prinjaripen',
'yourname' => 'Tiro anav',
'yourpassword' => 'O nakhavipnasko lav',
'yourpasswordagain' => 'O nakhavipnasko lav de nevo',
@@ -189,11 +187,6 @@ Akana si tuke ekh akont. Te na bistares te paruves, kana trebul tuke, tire kamim
'gotaccountlink' => 'De andre',
'createaccountmail' => 'palal o e-mail',
'badretype' => 'Le nakhavipnaske lava so lekhavdyan nai myazutne.',
-'youremail' => 'Emailesko adress (kana kames)*',
-'yourrealname' => 'Tiro chacho anav*',
-'yourlanguage' => 'Ćhib:',
-'yournick' => 'I xarni versyunya, le semnaturenge',
-'badsig' => 'Bilachhi semnatura; dikh le tagurya HTML.',
'loginerror' => 'Prinjaripnaski dosh',
'nocookiesnew' => "O tiro akont sas kerdo, pale tu nai prinjardo/i. {{SITENAME}} labyarel ''cookies'' te astarel le manusha prinjarde. O tiro browser na astarel le cookies. Si mishto te das les drom te astarel le ''cookies'' thai, palal kodya, te zumaves vi ekh var, labyarindoi o nav thai o nakhavipnaso lav.",
'nocookieslogin' => "{{SITENAME}} labyarel ''cookies'' te prinjaren le manusha so aven kathe. O tiro browser chi astarel len. Si mishto te das les drom te astarel le ''cookies'' thai, palal kodya, te zumaves vi ekh var.",
@@ -255,7 +248,6 @@ Kana avilyan kathe doshatar, ja palpale.',
'last' => 'purani',
'histlegend' => 'Xalyaripen: (akanutni) = ververimata mamui i akanutni versiya,
(purani) = ververimata mamui i puraneder versiya, T = tikno editisaripen',
-'deletedrev' => '[khoslo]',
'histfirst' => 'O mai purano',
'histlast' => 'O mai nevo',
@@ -266,40 +258,39 @@ Kana avilyan kathe doshatar, ja palpale.',
'compareselectedversions' => 'Dikh ververimata mashkar alosarde versiye',
# Search results
-'prevn' => 'mai neve $1',
-'nextn' => 'mai purane $1',
-'viewprevnext' => 'Dikh ($1) ($2) ($3).',
+'prevn' => 'mai neve {{PLURAL:$1|$1}}',
+'nextn' => 'mai purane {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Dikh ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Zhutipen',
'showingresults' => 'Tele si <b>$1</b> rezultaturya shirdindoi le ginestar <b>$2</b>.',
'showingresultsnum' => 'Tele si <b>$3</b> rezultaturya shirdindoi le ginestar <b>$2</b>.',
'powersearch' => 'Rod',
# Preferences page
-'preferences' => 'Kamimata',
-'changepassword' => 'Paruv o nakhavipnasko lav',
-'skin' => 'Dikhimos',
-'math' => 'Matematika',
-'dateformat' => 'Datengi forma',
-'datedefault' => 'Ni ekh kamipen',
-'datetime' => 'Dives thai chaso',
-'math_unknown_error' => 'bijangli dosh',
-'math_unknown_function' => 'bijangli funkciya',
-'math_syntax_error' => 'sintaksaki dosh',
-'math_bad_output' => 'Nashti te kerel pes vai te lekhavel po matematikano direktoro kai del pes avri.',
-'math_notexvc' => 'Nai o kerditori (eksekutabilo) texvc; dikh math/README te labyares les.',
-'prefs-rc' => 'Neve paruvimata',
-'saveprefs' => 'Uxtav le kamimata',
-'resetprefs' => 'Thov le kamimata sar ko shirdipen',
-'columns' => 'Uche vortorina:',
-'contextlines' => 'Vortorinyango gin pe avimos:',
-'contextchars' => 'Grafemengo gin pe ekh vortorin:',
-'localtime' => 'Thanutno vaxt',
-'timezoneoffset' => 'Ververipen',
-'guesstimezone' => 'Le les katar o browser',
-'allowemail' => 'De drom te aven e-mailurya katar aver jene',
-'defaultns' => 'Rod savaxt vi kai kadale riga:',
-'default' => 'acharuno',
-'files' => 'Failurya',
+'preferences' => 'Kamimata',
+'changepassword' => 'Paruv o nakhavipnasko lav',
+'prefs-skin' => 'Dikhimos',
+'prefs-math' => 'Matematika',
+'datedefault' => 'Ni ekh kamipen',
+'prefs-datetime' => 'Dives thai chaso',
+'prefs-rc' => 'Neve paruvimata',
+'saveprefs' => 'Uxtav le kamimata',
+'resetprefs' => 'Thov le kamimata sar ko shirdipen',
+'columns' => 'Uche vortorina:',
+'contextlines' => 'Vortorinyango gin pe avimos:',
+'contextchars' => 'Grafemengo gin pe ekh vortorin:',
+'localtime' => 'Thanutno vaxt',
+'timezoneoffset' => 'Ververipen',
+'guesstimezone' => 'Le les katar o browser',
+'allowemail' => 'De drom te aven e-mailurya katar aver jene',
+'defaultns' => 'Rod savaxt vi kai kadale riga:',
+'default' => 'acharuno',
+'prefs-files' => 'Failurya',
+'youremail' => 'Emailesko adress (kana kames)*',
+'yourrealname' => 'Tiro chacho anav*',
+'yourlanguage' => 'Ćhib:',
+'yournick' => 'I xarni versyunya, le semnaturenge',
+'badsig' => 'Bilachhi semnatura; dikh le tagurya HTML.',
# User rights
'editinguser' => "Editisaripen '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -341,12 +332,13 @@ Kana avilyan kathe doshatar, ja palpale.',
'rc_categories_any' => 'Savegodi',
# Recent changes linked
-'recentchangeslinked' => 'Pashvipnaske paruvimata',
+'recentchangeslinked' => 'Pashvipnaske paruvimata',
+'recentchangeslinked-feed' => 'Pashvipnaske paruvimata',
+'recentchangeslinked-toolbox' => 'Pashvipnaske paruvimata',
# Upload
'upload' => 'Bichhal file',
'uploadbtn' => 'Bichhal file',
-'reupload' => 'Pale bichhal',
'filedesc' => 'Xarno xalyaripen',
'badfilename' => 'O chitrosko anav sas paruvdo; o nevo anav si "$1".',
'savefile' => 'Uxtav file',
@@ -355,7 +347,8 @@ Kana avilyan kathe doshatar, ja palpale.',
'listfiles' => 'Patrinipen le chitrengo',
# File description page
-'imagelinks' => 'Chitroske phandimata',
+'file-anchor-link' => 'Chitro',
+'imagelinks' => 'Chitroske phandimata',
# Unused templates
'unusedtemplates' => 'Bilabyarde sikavne',
@@ -524,10 +517,17 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
# Attribution
'anonymous' => 'Bijangle labyarne kai {{SITENAME}}',
'siteuser' => 'Jeno kai {{SITENAME}} $1',
-'lastmodifiedatby' => 'Kadaya patrin sas paruvdi agoreste $2, $1 katar $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Kadaya patrin sas paruvdi agoreste $2, $1 katar $3.',
'others' => 'aver',
'siteusers' => 'Jeno/e kai {{SITENAME}} $1',
+# Math errors
+'math_unknown_error' => 'bijangli dosh',
+'math_unknown_function' => 'bijangli funkciya',
+'math_syntax_error' => 'sintaksaki dosh',
+'math_bad_output' => 'Nashti te kerel pes vai te lekhavel po matematikano direktoro kai del pes avri.',
+'math_notexvc' => 'Nai o kerditori (eksekutabilo) texvc; dikh math/README te labyares les.',
+
# Image deletion
'deletedrevision' => 'Khoslo o purano paruvipen $1',
@@ -555,7 +555,7 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
'confirm_purge_button' => 'Va',
# Special:Version
-'version' => 'Versiya', # Not used as normal message but as header for the special page itself
+'version' => 'Versiya',
# Special:SpecialPages
'specialpages' => 'Uzalutne patrya',
diff --git a/languages/messages/MessagesRo.php b/languages/messages/MessagesRo.php
index b2cbebaf..d865e231 100644
--- a/languages/messages/MessagesRo.php
+++ b/languages/messages/MessagesRo.php
@@ -19,6 +19,7 @@
* @author Misterr
* @author SCriBu
* @author Silviubogan
+ * @author Stelistcristi
* @author Urhixidur
* @author לערי ריינהארט
*/
@@ -32,17 +33,58 @@ $magicWords = array(
'forcetoc' => array( '0', '__FORTEAZACUPRINS__', '__FORCETOC__' ),
'toc' => array( '0', '__CUPRINS__', '__TOC__' ),
'noeditsection' => array( '0', '__FARAEDITSECTIUNE__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'NUMARLUNACURENTA', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__FARAANTET__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'NUMARLUNACURENTA', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'LUNACURENTA1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'NUMELUNACURENTA', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'NUMELUNACURENTAGEN', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'NUMARLUNACURENTAABREV', 'CURRENTMONTHABBREV' ),
+ 'currentmonthabbrev' => array( '1', 'LUNACURENTAABREV', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'NUMARZIUACURENTA', 'CURRENTDAY' ),
'currentday2' => array( '1', 'NUMARZIUACURENTA2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'NUMEZIUACURENTA', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', 'ANULCURENT', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'ORACURENTA', 'CURRENTTIME' ),
+ 'currenttime' => array( '1', 'TIMPULCURENT', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ORACURENTA', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'LUNALOCALA', 'LUNALOCALA2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LUNALOCALA1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'NUMELUNALOCALA', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'NUMELUNALOCALAGEN', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'LUNALOCALAABREV', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'ZIUALOCALA', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ZIUALOCALA2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'NUMEZIUALOCALA', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ANULLOCAL', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'TIMPULLOCAL', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ORALOCALA', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'NUMARDEPAGINI', 'NUMBEROFPAGES' ),
'numberofarticles' => array( '1', 'NUMARDEARTICOLE', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'NUMARDEFISIERE', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'NUMARDEUTILIZATORI', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'NUMARDEUTILIZATORIACTIVI', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'NUMARDEMODIFICARI', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'NUMARDEVIZUALIZARI', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'NUMEPAGINA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NUMEEPAGINA', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'SPATIUDENUME', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'SPATIUUDENUME', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'SPATIUDEDISCUTIE', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'SPATIUUDEDISCUTIE', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'SPATIUSUBIECT', 'SPATIUARTICOL', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'SPATIUUSUBIECT', 'SPATIUUARTICOL', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'NUMEPAGINACOMPLET', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NUMEEPAGINACOMPLET', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'NUMESUBPAGINA', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'NUMEESUBPAGINA', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'NUMEDEBAZAPAGINA', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'NUMEEDEBAZAPAGINA', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'NUMEPAGINADEDISCUTIE', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'NUMEEPAGINADEDISCUTIE', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'NUMEPAGINASUBIECT', 'NUMEPAGINAARTICOL', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'NUMEEPAGINASUBIECT', 'NUMEEPAGINAARTICOL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'MSJ:', 'MSG:' ),
'msgnw' => array( '0', 'MSJNOU:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'miniatura', 'mini', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'miniatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'dreapta', 'right' ),
'img_left' => array( '1', 'stanga', 'left' ),
'img_none' => array( '1', 'nu', 'none' ),
@@ -50,45 +92,100 @@ $magicWords = array(
'img_framed' => array( '1', 'cadru', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'faracadru', 'frameless' ),
'img_page' => array( '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'dreaptasus', 'dreaptasus=$1', 'dreaptasus $1', 'upright', 'upright=$1', 'upright $1' ),
'img_border' => array( '1', 'chenar', 'border' ),
+ 'img_baseline' => array( '1', 'linia de bază', 'baseline' ),
'img_sub' => array( '1', 'indice', 'sub' ),
'img_super' => array( '1', 'exponent', 'super', 'sup' ),
'img_top' => array( '1', 'sus', 'top' ),
+ 'img_text_top' => array( '1', 'text-sus', 'text-top' ),
'img_middle' => array( '1', 'mijloc', 'middle' ),
'img_bottom' => array( '1', 'jos', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'text-jos', 'text-bottom' ),
+ 'img_link' => array( '1', 'legătură=$1', 'link=$1' ),
'sitename' => array( '1', 'NUMESITE', 'SITENAME' ),
'ns' => array( '0', 'SN:', 'NS:' ),
'localurl' => array( '0', 'URLLOCAL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URLLOCALE:', 'LOCALURLE:' ),
+ 'servername' => array( '0', 'NUMESERVER', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'CALESCRIPT', 'SCRIPTPATH' ),
'grammar' => array( '0', 'GRAMATICA:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'GEN:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__FARACONVERTIRETITLU__', '__FCT__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__FARACONVERTIRECONTINUT__', '__FCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'SAPTAMANACURENTA', 'CURRENTWEEK' ),
+ 'localweek' => array( '1', 'SAPTAMANALOCALA', 'LOCALWEEK' ),
+ 'revisionid' => array( '1', 'IDREVIZIE', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'ZIREVIZIE', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'ZIREVIZIE2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'LUNAREVIZIE', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'ANREVIZIE', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'STAMPILATIMPREVIZIE', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'UTILIZATORREVIZIE', 'REVISIONUSER' ),
'fullurl' => array( '0', 'URLCOMPLET:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'URLCOMPLETE:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'MINUSCULAPRIMA:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'MAJUSCULAPRIMA:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'MINUSCULA:', 'LC:' ),
+ 'uc' => array( '0', 'MAJUSCULA:', 'UC:' ),
+ 'raw' => array( '0', 'BRUT:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'ARATATITLU', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__LEGATURASECTIUNENOUA__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__FARALEGATURASECTIUNENOUA__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'VERSIUNECURENTA', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'CODIFICAREURL:', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'CODIFICAREANCORA', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'STAMPILATIMPCURENT', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'STAMPILATIMPLOCAL', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'SEMNDIRECTIE', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'language' => array( '0', '#LIMBA:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'LIMBACONTINUT', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'PANIGIINSPATIULDENUME:', 'PAGINIINSN:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'NUMARADMINI', 'NUMBEROFADMINS' ),
+ 'defaultsort' => array( '1', 'SORTAREIMPLICITA:', 'CHEIESORTAREIMPLICITA:', 'CATEGORIESORTAREIMPLICITA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'CALEAFISIERULUI:', 'FILEPATH:' ),
'tag' => array( '0', 'eticheta', 'tag' ),
'hiddencat' => array( '1', '__ASCUNDECAT__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'PAGINIINCATEGORIE', 'PAGINIINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'MARIMEPAGINA', 'PAGESIZE' ),
+ 'noindex' => array( '1', '__FARAINDEX__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NUMARINGRUP', 'NUMINGRUP', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__REDIRECTIONARESTATICA__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'NIVELPROTECTIE', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formatdata', 'dataformat', 'formatdate', 'dateformat' ),
);
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_TALK => 'Discuţie',
+ NS_TALK => 'Discuție',
NS_USER => 'Utilizator',
- NS_USER_TALK => 'Discuţie_Utilizator',
- NS_PROJECT_TALK => 'Discuţie_$1',
- NS_FILE => 'Fişier',
- NS_FILE_TALK => 'Discuţie_Fişier',
+ NS_USER_TALK => 'Discuție_Utilizator',
+ NS_PROJECT_TALK => 'Discuție_$1',
+ NS_FILE => 'Fișier',
+ NS_FILE_TALK => 'Discuție_Fișier',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Discuţie_MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discuție_MediaWiki',
NS_TEMPLATE => 'Format',
- NS_TEMPLATE_TALK => 'Discuţie_Format',
+ NS_TEMPLATE_TALK => 'Discuție_Format',
NS_HELP => 'Ajutor',
- NS_HELP_TALK => 'Discuţie_Ajutor',
+ NS_HELP_TALK => 'Discuție_Ajutor',
NS_CATEGORY => 'Categorie',
- NS_CATEGORY_TALK => 'Discuţie_Categorie',
+ NS_CATEGORY_TALK => 'Discuție_Categorie',
);
$namespaceAliases = array(
- 'Imagine' => NS_FILE,
- 'Discuţie_Imagine' => NS_FILE_TALK,
+ 'Discuţie' => NS_TALK,
+ 'Discuţie_Utilizator' => NS_USER_TALK,
+ 'Discuţie_$1' => NS_PROJECT_TALK,
+ 'Imagine' => NS_FILE,
+ 'Discuţie_Imagine' => NS_FILE_TALK,
+ 'Fişier' => NS_FILE,
+ 'Discuţie_Fişier' => NS_FILE_TALK,
+ 'Discuţie_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Discuţie_Format' => NS_TEMPLATE_TALK,
+ 'Discuţie_Ajutor' => NS_HELP_TALK,
+ 'Discuţie_Categorie' => NS_CATEGORY_TALK,
);
$specialPageAliases = array(
@@ -176,7 +273,10 @@ $specialPageAliases = array(
'Filepath' => array( 'Cale fişier' ),
'Invalidateemail' => array( 'Invalidează email' ),
'Blankpage' => array( 'Pagină goală' ),
+ 'LinkSearch' => array( 'Căutare legături' ),
'DeletedContributions' => array( 'Contibuţii şterse' ),
+ 'Tags' => array( 'Etichete' ),
+ 'Activeusers' => array( 'Utilizatori activi' ),
);
$datePreferences = false;
@@ -189,6 +289,8 @@ $dateFormats = array(
$fallback8bitEncoding = 'iso8859-2';
+$linkTrail = '/^([a-zăâîşţșțĂÂÎŞŢȘȚ]+)(.*)$/sDu';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Subliniază legăturile',
@@ -221,6 +323,7 @@ pe titlul secțiunii (JavaScript)',
'tog-enotifminoredits' => 'Trimite-mi un email de asemenea pentru modificările minore ale paginilor',
'tog-enotifrevealaddr' => 'Descoperă-mi adresa email în mesajele de notificare',
'tog-shownumberswatching' => 'Arată numărul utilizatorilor care urmăresc',
+'tog-oldsig' => 'Previzualizarea semnăturii actuale:',
'tog-fancysig' => 'Tratează semnătura ca wikitext (fără o legătură automată)',
'tog-externaleditor' => 'Utilizează, în mod implicit, un editor extern (doar pentru experți, necesită setări speciale pe calculatorul dumneavoastră)',
'tog-externaldiff' => 'Utilizează diferențele externe ca standard',
@@ -244,6 +347,13 @@ pe titlul secțiunii (JavaScript)',
'underline-never' => 'Niciodată',
'underline-default' => 'Standardul navigatorului',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stilul fontului din zona de modificare:',
+'editfont-default' => 'Standardul navigatorului',
+'editfont-monospace' => 'Font monospațiat',
+'editfont-sansserif' => 'Font fără serife',
+'editfont-serif' => 'Font cu serife',
+
# Dates
'sunday' => 'duminică',
'monday' => 'luni',
@@ -303,7 +413,7 @@ pe titlul secțiunii (JavaScript)',
'category-media-header' => 'Fișiere media din categoria „$1”',
'category-empty' => "''Această categorie nu conține articole sau fișiere media.''",
'hidden-categories' => '{{PLURAL:$1|categorie ascunsă|categorii ascunse}}',
-'hidden-category-category' => 'Categorii ascunse', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorii ascunse',
'category-subcat-count' => '{{PLURAL:$2|Această categorie conține doar următoarea subcategorie.|Această categorie conține {{PLURAL:$1|următoarea subcategorie|următoarele $1 subcategorii}}, dintr-un total de $2.}}',
'category-subcat-count-limited' => 'Această categorie conține {{PLURAL:$1|următoarea subcategorie|următoarele $1 subcategorii}}.',
'category-article-count' => '{{PLURAL:$2|Această categorie conține doar următoarea pagină.|{{PLURAL:$1|Următoarea pagină|Următoarele $1 pagini}} se află în această categorie, dintr-un total de $2.}}',
@@ -311,6 +421,8 @@ pe titlul secțiunii (JavaScript)',
'category-file-count' => '{{PLURAL:$2|Această categorie conține doar următorul fișier.|{{PLURAL:$1|Următorul fișier|Următoarele $1 fișiere}} se află în această categorie, dintr-un total de $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Următorul fișier|Următoarele $1 fișiere}} se află în categoria curentă.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pagini indexate',
+'noindex-category' => 'Pagini neindexate',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''Programul Wiki a fost instalat cu succes.'''",
@@ -321,10 +433,18 @@ pe titlul secțiunii (JavaScript)',
* [http://www.mediawiki.org/wiki/Manual:FAQ Întrebări frecvente despre MediaWiki (en)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Listă discuții MediaWiki (en)]',
-'about' => 'Despre',
-'article' => 'Articol',
-'newwindow' => '(se deschide într-o fereastră nouă)',
-'cancel' => 'Renunţă',
+'about' => 'Despre',
+'article' => 'Articol',
+'newwindow' => '(se deschide într-o fereastră nouă)',
+'cancel' => 'Renunţă',
+'moredotdotdot' => 'Mai mult…',
+'mypage' => 'Pagina mea',
+'mytalk' => 'Discuții',
+'anontalk' => 'Discuția pentru această adresă IP',
+'navigation' => 'Navigare',
+'and' => '&#32;și',
+
+# Cologne Blue skin
'qbfind' => 'Găsește',
'qbbrowse' => 'Răsfoiește',
'qbedit' => 'Modifică',
@@ -332,15 +452,35 @@ pe titlul secțiunii (JavaScript)',
'qbpageinfo' => 'Informații ale paginii',
'qbmyoptions' => 'Paginile mele',
'qbspecialpages' => 'Pagini speciale',
-'moredotdotdot' => 'Mai mult…',
-'mypage' => 'Pagina mea',
-'mytalk' => 'Discuții',
-'anontalk' => 'Discuția pentru această adresă IP',
-'navigation' => 'Navigare',
-'and' => '&#32;și',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Întrebări frecvente',
+'faqpage' => 'Project:Întrebări frecvente',
+
+# Vector skin
+'vector-action-addsection' => 'Adaugă subiect',
+'vector-action-delete' => 'Șterge',
+'vector-action-move' => 'Redenumește',
+'vector-action-protect' => 'Protejează',
+'vector-action-undelete' => 'Recuperare',
+'vector-action-unprotect' => 'Deprotejează',
+'vector-namespace-category' => 'Categorie',
+'vector-namespace-help' => 'Pagină de ajutor',
+'vector-namespace-image' => 'Fișier',
+'vector-namespace-main' => 'Articol',
+'vector-namespace-media' => 'Pagină media',
+'vector-namespace-mediawiki' => 'Mesaj',
+'vector-namespace-project' => 'Pagină de proiect',
+'vector-namespace-special' => 'Pagină specială',
+'vector-namespace-talk' => 'Discuție',
+'vector-namespace-template' => 'Format',
+'vector-namespace-user' => 'Pagină de utilizator',
+'vector-view-create' => 'Creează',
+'vector-view-edit' => 'Modifică',
+'vector-view-history' => 'Istoric',
+'vector-view-view' => 'Citește',
+'vector-view-viewsource' => 'Vezi sursă',
+'actions' => 'Acțiuni',
+'namespaces' => 'Spații de nume',
+'variants' => 'Variante',
'errorpagetitle' => 'Eroare',
'returnto' => 'Înapoi la $1.',
@@ -390,18 +530,22 @@ pe titlul secțiunii (JavaScript)',
'otherlanguages' => 'În alte limbi',
'redirectedfrom' => '(Redirecționat de la $1)',
'redirectpagesub' => 'Pagină de redirecționare',
-'lastmodifiedat' => 'Ultima modificare $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultima modificare $2, $1.',
'viewcount' => 'Pagina a fost vizitată {{PLURAL:$1|odată|de $1 ori}}.',
'protectedpage' => 'Pagină protejată',
'jumpto' => 'Salt la:',
'jumptonavigation' => 'navigare',
'jumptosearch' => 'căutare',
+'view-pool-error' => 'Ne pare rău, dar serverele sunt supraîncărcare în acest moment.
+Prea multi utilizatori încearcă să vizualizeze această pagină.
+Vă rugăm să așteptați un moment înainte să încercați să accesați pagina din nou.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Despre {{SITENAME}}',
'aboutpage' => 'Project:Despre',
'copyright' => 'Conținutul este disponibil sub $1.',
-'copyrightpagename' => 'Drepturi de autor în {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Drepturi de autor',
'currentevents' => 'Discută la cafenea',
'currentevents-url' => 'Project:Cafenea',
@@ -409,8 +553,6 @@ pe titlul secțiunii (JavaScript)',
'disclaimerpage' => 'Project:Termeni',
'edithelp' => 'Ajutor pentru modificare',
'edithelppage' => 'Help:Cum să modifici o pagină',
-'faq' => 'Întrebări frecvente',
-'faqpage' => 'Project:Întrebări frecvente',
'helppage' => 'Help:Ajutor',
'mainpage' => 'Pagina principală',
'mainpage-description' => 'Pagina principală',
@@ -488,9 +630,6 @@ Ultima interogare încercată a fost:
„$1”
din funcția „$2”.
Baza de date a returnat eroarea „$3: $4”',
-'noconnect' => 'Nu s-a putut conecta baza de date pe $1',
-'nodb' => 'Nu s-a putut selecta baza de date $1',
-'cachederror' => 'Aceasta este o versiune din cache a paginii cerute și este posibil să nu fie ultima variantă a acesteia.',
'laggedslavemode' => 'Atenție: S-ar putea ca pagina să nu conțină ultimele actualizări.',
'readonly' => 'Baza de date este blocată la scriere',
'enterlockreason' => 'Precizează motivul pentru blocare, incluzând o estimare a termenului de deblocare a bazei de date',
@@ -508,6 +647,8 @@ Te rog anunță acest aspect unui [[Special:ListUsers/sysop|administrator]], ind
'readonly_lag' => 'Baza de date a fost închisă automatic în timp ce serverele secundare ale bazei de date îl urmează pe cel principal.',
'internalerror' => 'Eroare internă',
'internalerror_info' => 'Eroare internă: $1',
+'fileappenderrorread' => 'Citirea fișierului „$1” nu a putut fi executată în timpul adăugării.',
+'fileappenderror' => 'Nu se poate adăuga "$1" în "$2".',
'filecopyerror' => 'Fișierul "$1" nu a putut fi copiat la "$2".',
'filerenameerror' => 'Fișierul "$1" nu a putut fi mutat la "$2".',
'filedeleteerror' => 'Fișierul "$1" nu a putut fi șters.',
@@ -517,7 +658,8 @@ Te rog anunță acest aspect unui [[Special:ListUsers/sysop|administrator]], ind
'unexpected' => 'Valoare neașteptată: "$1"="$2".',
'formerror' => 'Eroare: datele nu au putut fi trimise',
'badarticleerror' => 'Această acțiune nu poate fi efectuată pe această pagină.',
-'cannotdelete' => 'Comanda de ştergere nu s-a putut executa! Probabil că ştergerea a fost operată între timp.',
+'cannotdelete' => 'Pagina sau fișierul „$1” nu a putut fi șters.
+S-ar putea ca acesta să fi fost deja șters de altcineva.',
'badtitle' => 'Titlu incorect',
'badtitletext' => 'Titlul căutat a fost invalid, gol sau o legătură invalidă inter-linguală sau inter-wiki.
@@ -552,12 +694,10 @@ Motivul invocat este ''$2''.",
'virus-unknownscanner' => 'antivirus necunoscut:',
# Login and logout pages
-'logouttitle' => 'Sesiune închisă',
'logouttext' => 'Sesiunea ta în {{SITENAME}} a fost încheiată. Poți continua să folosești {{SITENAME}} anonim, sau poți să te [[Special:UserLogin|reautentifici]] ca același sau ca alt utilizator.',
'welcomecreation' => '==Bun venit, $1!==
Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:Preferences|preferințele]] în {{SITENAME}}.',
-'loginpagetitle' => 'Autentificare utilizator',
'yourname' => 'Nume de utilizator:',
'yourpassword' => 'Parolă:',
'yourpasswordagain' => 'Repetă parola',
@@ -568,6 +708,7 @@ Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:P
'nav-login-createaccount' => 'Creare cont / Autentificare',
'loginprompt' => 'Trebuie să ai modulele cookie activate pentru a te autentifica la {{SITENAME}}.',
'userlogin' => 'Creare cont / Autentificare',
+'userloginnocreate' => 'Autentificare',
'logout' => 'Închide sesiunea',
'userlogout' => 'Închide sesiunea',
'notloggedin' => 'Nu sunteți autentificat',
@@ -579,27 +720,8 @@ Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:P
'createaccountmail' => 'după e-mail',
'badretype' => 'Parolele pe care le-ai introdus diferă.',
'userexists' => 'Numele de utilizator pe care l-ați introdus există deja. Încercați cu un alt nume.',
-'youremail' => 'E-mail',
-'username' => 'Nume de utilizator:',
-'uid' => 'ID utilizator:',
-'prefs-memberingroups' => 'Membru în {{PLURAL:$1|grupul|grupurile}}:',
-'yourrealname' => 'Nume real:',
-'yourlanguage' => 'Limbă:',
-'yourvariant' => 'Varianta:',
-'yournick' => 'Semnătură:',
-'badsig' => 'Semnătură brută incorectă; verificați tag-urile HTML.',
-'badsiglength' => 'Semnătura este prea lungă.
-Dimensiunea trebuie să fie mai mică de $1 {{PLURAL:$1|caracter|caractere}}.',
-'yourgender' => 'Gen:',
-'gender-unknown' => 'Nespecificat',
-'gender-male' => 'Bărbat',
-'gender-female' => 'Femeie',
-'prefs-help-gender' => 'Opțional - sexul utilizatorului: folosit pentru adresarea corectă de către software. Această informație va fi publică.',
-'email' => 'E-mail',
-'prefs-help-realname' => '* Numele dumneavoastră real (opțional): Dacă decideți introducerea numelui real aici, acesta va fi folosit pentru a vă atribui munca.<br />',
'loginerror' => 'Eroare de autentificare',
-'prefs-help-email' => '*Adresa de e-mail (opțional): Permite altor utilizatori să vă contacteze prin e-mail via {{SITENAME}}, fără a vă divulga identitatea. De asemenea, permite recuperarea parolei în cazul în care o uitați.',
-'prefs-help-email-required' => 'Adresa de e-mail este necesară.',
+'createaccounterror' => 'Nu pot crea contul: $1',
'nocookiesnew' => 'Contul a fost creat, dar dvs. nu sunteți autentificat(ă). {{SITENAME}} folosește cookie-uri pentru a reține utilizatorii autentificați. Browser-ul dvs. are modulele cookie dezactivate (disabled). Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
'nocookieslogin' => '{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.',
'noname' => 'Numele de utilizator pe care l-ai specificat este invalid.',
@@ -610,10 +732,11 @@ Numele de utilizatori sunt sensibile la majuscule.
Verifică dacă ai scris corect sau [[Special:UserLogin/signup|creează un nou cont de utilizator]].',
'nosuchusershort' => 'Nu este nici un utilizator cu numele „<nowiki>$1</nowiki>”. Verificați dacă ați scris corect.',
'nouserspecified' => 'Trebuie să specificați un nume de utilizator.',
+'login-userblocked' => 'Acest utilizator este blocat. Autentificarea nu este permisă.',
'wrongpassword' => 'Parola pe care ai introdus-o este greșită. Te rugăm să încerci din nou.',
'wrongpasswordempty' => 'Spațiul pentru introducerea parolei nu a fost completat. Vă rugăm să încercați din nou.',
-'passwordtooshort' => 'Parola dumneavoastră este invalidă sau prea scurtă.
-Trebuie să aibă cel puţin {{PLURAL:$1|1 caracter|$1 caractere}} şi să fie diferită de numele de utilizator.',
+'passwordtooshort' => 'Parola trebuie să aibă cel puțin {{PLURAL:$1|1 caracter|$1 caractere}}.',
+'password-name-match' => 'Parola dumneavoastră trebuie să fie diferită de numele de utilizator.',
'mailmypassword' => 'Trimite-mi parola pe e-mail!',
'passwordremindertitle' => 'Noua parolă temporară la {{SITENAME}}',
'passwordremindertext' => 'Cineva (probabil dumneavoastră, de la adresa $1)
@@ -625,6 +748,7 @@ Dacă această cerere a fost efectuată de altcineva sau dacă v-ați amintit
parola și nu doriți să o schimbați, ignorați acest mesaj și continuați
să folosiți vechea parolă.',
'noemail' => 'Nu este nici o adresă de e-mail înregistrată pentru utilizatorul „$1”.',
+'noemailcreate' => 'Trebuie oferită o adresă e e-mail validă.',
'passwordsent' => 'O nouă parolă a fost trimisă la adresa de e-mail a utilizatorului "$1". Te rugăm să te autentifici pe {{SITENAME}} după ce o primești.',
'blocked-mailpassword' => 'Această adresă IP este blocată la editare, și deci nu este permisă utilizarea funcției de recuperare a parolei pentru a preveni abuzul.',
'eauthentsent' => 'Un email de confirmare a fost trimis adresei nominalizate. Înainte de a fi trimis orice alt email acestui cont, trebuie să urmați intrucțiunile din email, pentru a confirma că acest cont este într-adevăr al dvs.',
@@ -644,9 +768,11 @@ Prin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi
Este de dorit să vă autentificați și să schimbați parola cât mai repede.
Ignorați acest mesaj dacă crearea contului s-a produs în urma unei greșeli.',
+'usernamehasherror' => 'Numele de utilizator nu poate conține caractere diez (#)',
'login-throttled' => 'Ați avut prea multe încercări de a vă autentifica.
Vă rugăm să așteptați până să mai încercați.',
'loginlanguagelabel' => 'Limba: $1',
+'suspicious-userlogout' => 'Cererea dumneavoastră de a închide sesiunea a fost refuzată întrucât pare că a fost trimisă printr-o eroare a navigatorului sau de un proxy memorat în cache.',
# Password reset dialog
'resetpass' => 'Modifică parola',
@@ -658,17 +784,13 @@ Vă rugăm să așteptați până să mai încercați.',
'retypenew' => 'Repetă parola nouă',
'resetpass_submit' => 'Setează parola și autentifică',
'resetpass_success' => 'Parola a fost schimbată cu succes! Autentificare în curs...',
-'resetpass_bad_temporary' => 'Parola temporară nu este validă. Este posibil să vă fi schimbat deja parola cu succes sau să fi cerut o nouă parolă temporară.',
'resetpass_forbidden' => 'Parolele nu pot fi schimbate.',
'resetpass-no-info' => 'Trebuie să fiți autentificat pentru a accesa această pagină direct.',
'resetpass-submit-loggedin' => 'Modifică parola',
+'resetpass-submit-cancel' => 'Revocare',
'resetpass-wrong-oldpass' => 'Parolă curentă sau temporară incorectă.
Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă temporară nouă.',
'resetpass-temp-password' => 'Parolă temporară:',
-'resetpass-log' => 'Jurnalul resetărilor parolei',
-'resetpass-logtext' => 'Mai jos este jurnalul utilizatorilor care au avut parola resetată de un administrator.',
-'resetpass-logentry' => 'a fost schimbată parola pentru $1',
-'resetpass-comment' => 'Motivul pentru resetarea parolei:',
# Edit page toolbar
'bold_sample' => 'Text aldin',
@@ -741,7 +863,6 @@ Vă rugăm să includeți detaliile de mai sus în orice interogări pe care le
'blockededitsource' => "Textul '''modificărilor dumneavoastră''' la '''$1''' este redat mai jos:",
'whitelistedittitle' => 'Este necesară autentificarea pentru a putea modifica',
'whitelistedittext' => 'Trebuie să $1 pentru a edita articole.',
-'confirmedittitle' => 'Pentru a edita e necesară confirmarea adresei de e-mail',
'confirmedittext' => 'Trebuie să vă confirmați adresa de e-mail înainte de a edita pagini. Vă rugăm să vă setați și să vă validați adresa de e-mail cu ajutorul [[Special:Preferences|preferințelor utilizatorului]].',
'nosuchsectiontitle' => 'Secțiunea nu poate fi găsită',
'nosuchsectiontext' => 'Ați încercat să modificați o secțiune care nu există.
@@ -762,9 +883,16 @@ Dacă sunteți un astfel de utilizator și credeți că vă sunt adresate mesaje
'noarticletext' => 'În acest moment nu este niciun text în această pagină.
Puteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale], sau [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea această pagină]</span>.',
+'noarticletext-nopermission' => 'Nu este niciun text în această pagină.
+Puteți [[Special:Search/{{PAGENAME}}|căuta titlul paginii]] în alte pagini,
+sau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} să căutați în jurnale]</span>.',
'userpage-userdoesnotexist' => 'Contul de utilizator "$1" nu este înregistrat. Verificați dacă doriți să creați/modificați această pagină.',
+'userpage-userdoesnotexist-view' => 'Contul de utilizator "$1" nu este înregistrat.',
+'blocked-notice-logextract' => 'Acest utilizator este momentan blocat.
+Ultima intrare în jurnalul blocărilor este afișată mai jos pentru referință:',
'clearyourcache' => "'''Notă:''' După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările. '''Mozilla/Safari/Konqueror:''' țineți apăsat ''Shift'' în timp ce apăsați ''Reload'' (sau apăsați ''Ctrl-Shift-R''), '''IE:''' apăsați ''Ctrl-F5'', '''Opera:''' apăsați ''F5''.",
-'usercssjsyoucanpreview' => "'''Sfat:''' Folosește butonul 'Arată previzualizare' pentru a testa noul tău css/js înainte de a salva.",
+'usercssyoucanpreview' => "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul CSS înainte de a-l salva.",
+'userjsyoucanpreview' => "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul JavaScript înainte de a-l salva.",
'usercsspreview' => "'''Reține că urmărești doar o previzualizare a css-ului tău de utilizator, acesta nu este încă salvat!'''",
'userjspreview' => "'''Reține că urmărești doar un test/o previzualizare a javascript-ului tău de utilizator, acesta nu este încă salvat!'''",
'userinvalidcssjstitle' => '<b>Avertizare:</b> Nu există skin "$1". Amintește-ți că paginile .css and .js specifice utilizatorilor au titluri care încep cu literă mică, de exemplu {{ns:user}}:Foo/monobook.css în comparație cu {{ns:user}}:Foo/Monobook.css.',
@@ -811,13 +939,16 @@ ceea ce înseamnă mai mult decât maximum de $2 kilobytes. Salvarea nu este pos
'readonlywarning' => "'''ATENŢIE: Baza de date a fost blocată pentru întreținere, deci nu veți putea salva modificările în acest moment. Puteți copia textul într-un fișier text local pentru a-l salva când va fi posibil.'''
Administratorul care a efectuat blocarea a oferit următoarea explicație: $1",
-'protectedpagewarning' => "'''ATENŢIE! Această pagină a fost protejată la scriere şi numai utilizatorii cu privilegii de administrator o pot modifica.'''",
-'semiprotectedpagewarning' => "'''Atenţie:''' Această pagină poate fi modificată numai de utilizatorii înregistraţi.",
+'protectedpagewarning' => "'''Atenție: această pagină a fost protejată astfel încât poate fi modificată doar de către administratori.'''
+Ultima intrare în jurnal este afișată mai jos pentru referință:",
+'semiprotectedpagewarning' => "'''Observație: această pagină a fost protejată și poate fi modificată doar de către utilizatorii înregistrați.'''
+Ultima intrare în jurnal este afișată mai jos pentru referință:",
'cascadeprotectedwarning' => "'''Atenție:''' Această pagină a fost blocată astfel încât numai administratorii o pot modifica, deoarece este inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
-'titleprotectedwarning' => "'''ATENŢIE: Această pagină a fost protejată, doar anumiţi [[Special:ListGroupRights|utilizatori]] o pot crea.'''",
-'templatesused' => 'Formate folosite în această pagină:',
-'templatesusedpreview' => 'Formate utilizate în această previzualizare:',
-'templatesusedsection' => 'Formate utilizate în această secţiune:',
+'titleprotectedwarning' => "'''Atenție: această pagină a fost protejată astfel încât doar anumiți [[Special:ListGroupRights|utilizatori]] o pot crea.'''
+Ultima intrare în jurnal este afișată mai jos pentru referință:",
+'templatesused' => '{{PLURAL:$1|Format folosit|Formate folosite}} în această pagină:',
+'templatesusedpreview' => '{{PLURAL:$1|Format folosit|Formate folosite}} în această previzualizare:',
+'templatesusedsection' => '{{PLURAL:$1|Format utilizat|Formate utilizate}} în această secțiune:',
'template-protected' => '(protejat)',
'template-semiprotected' => '(semiprotejat)',
'hiddencategories' => 'Această pagină este membrul {{PLURAL:$1|unei categorii ascunse|a $1 categorii ascunse}}:',
@@ -826,16 +957,18 @@ Administratorul care a efectuat blocarea a oferit următoarea explicație: $1",
'nocreatetext' => '{{SITENAME}} a restricționat abilitatea de a crea pagini noi.
Puteți edita o pagină deja existentă sau puteți să vă [[Special:UserLogin|autentificați/creați]] un cont de utilizator.',
'nocreate-loggedin' => 'Nu ai permisiunea să creezi pagini noi.',
+'sectioneditnotsupported-title' => 'Modificarea secțiunilor nu este suportată',
+'sectioneditnotsupported-text' => 'Modificarea secțiunilor nu este suportată în această pagină.',
'permissionserrors' => 'Erori de permisiune',
'permissionserrorstext' => 'Nu aveți permisiune pentru a face acest lucru, din următoarele {{PLURAL:$1|motiv|motive}}:',
'permissionserrorstext-withaction' => 'Nu aveți permisiunea să $2, din {{PLURAL:$1|următorul motivul|următoarele motive}}:',
-'recreate-deleted-warn' => "'''Atenţie: Recreaţi o pagină care a fost ştearsă anterior.'''
-
+'recreate-moveddeleted-warn' => "'''Atenție: Recreați o pagină care a fost ștearsă anterior.'''
-Pentru a verifica dacă recrearea paginii este într-adevăr oportună, iată aici jurnalul ştergerilor:",
-'deleted-notice' => 'Această pagină a fost ştearsă.
-Pentru detalii puteţi vedea jurnalul ştergerilor de mai jos.',
-'deletelog-fulllog' => 'Vizualizează întreg jurnalul',
+Asigurați-vă că este oportună recrearea acestei pagini.
+Jurnalul ștergerilor și al mutărilor pentru această pagină este disponibil:",
+'moveddeleted-notice' => 'Această pagină a fost ștearsă.
+Jurnalul ștergerilor și al mutărilor este disponibil mai jos.',
+'log-fulllog' => 'Vezi tot jurnalul',
'edit-hook-aborted' => 'Modificarea a fost abandonată din cauza unui hook.
Fără nicio explicație.',
'edit-gone-missing' => 'Pagina nu s-a putut actualiza.
@@ -858,6 +991,7 @@ Acsete argumente au fost omise.',
'post-expand-template-argument-category' => 'Pagini care conțin formate cu argumente omise',
'parser-template-loop-warning' => 'Buclă de formate detectată: [[$1]]',
'parser-template-recursion-depth-warning' => 'Limită de adâncime a recursiei depășită ($1)',
+'language-converter-depth-warning' => 'Limita adâncimii convertorului de limbă a fost depășită ($1)',
# "Undo" feature
'undo-success' => 'Modificarea poate fi anulată. Verificați diferența de dedesupt și apoi salvați pentru a termina anularea modificării.',
@@ -877,7 +1011,7 @@ Motivul invocat de $3 este ''$2''",
'currentrev' => 'Versiunea curentă',
'currentrev-asof' => 'Versiunea curentă din $1',
'revisionasof' => 'Versiunea de la data $1',
-'revision-info' => 'Revizia pentru $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revizia pentru $1; $2',
'previousrevision' => '←Versiunea anterioară',
'nextrevision' => 'Versiunea următoare →',
'currentrevisionlink' => 'afișează versiunea curentă',
@@ -889,7 +1023,7 @@ Motivul invocat de $3 este ''$2''",
'histlegend' => 'Legendă: (actuală) = diferențe față de versiunea curentă,
(prec) = diferențe față de versiunea precedentă, M = modificare minoră',
'history-fieldset-title' => 'Răsfoire istoric',
-'deletedrev' => '[șters]',
+'history-show-deleted' => 'Doar șterse',
'histfirst' => 'Primele',
'histlast' => 'Ultimele',
'historysize' => '({{PLURAL:$1|1 octet|$1 octeți}})',
@@ -898,70 +1032,113 @@ Motivul invocat de $3 este ''$2''",
# Revision feed
'history-feed-title' => 'Revizia istoricului',
'history-feed-description' => 'Revizia istoricului pentru această pagină de pe wiki',
-'history-feed-item-nocomment' => '$1 la $2', # user at time
+'history-feed-item-nocomment' => '$1 la $2',
'history-feed-empty' => 'Pagina solicitată nu există.
E posibil să fi fost ștearsă sau redenumită.
Încearcă să [[Special:Search|cauți]] pe wiki pentru pagini noi semnificative.',
# Revision deletion
-'rev-deleted-comment' => '(comentariu șters)',
-'rev-deleted-user' => '(nume de utilizator șters)',
-'rev-deleted-event' => '(intrare ștearsă)',
-'rev-deleted-text-permission' => "Revizia acestei pagini a fost '''ştearsă'''.
-Mai multe detalii în [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jurnalul de ştergeri].",
-'rev-deleted-text-view' => "Revizia acestei pagini a fost '''ştearsă'''.
-Ca administrator la acest site poţi să o vezi; s-ar putea să găseşti mai multe detalii la [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jurnalul de ştergeri].",
-'rev-deleted-no-diff' => "Nu poţi vedea acestă diferenţă deoarece una dintre revizii a fost '''ştearsă'''.
-Pot exista mai multe detalii [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jurnalul ştergerilor].",
-'rev-deleted-unhide-diff' => "Una din reviziile acestui istoric a fost '''ştearsă'''.
-Pot exista detalii în [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jurnalul ştergerilor].
-Ca administrator poţi [$1 vedea acest istoric] dacă doreşti.",
-'rev-delundel' => 'arată/ascunde',
-'revisiondelete' => 'Șterge/recuperează revizii',
-'revdelete-nooldid-title' => 'Versiune invalidă',
-'revdelete-nooldid-text' => 'Nu ai specificat revizie pentru a efectua această
+'rev-deleted-comment' => '(comentariu șters)',
+'rev-deleted-user' => '(nume de utilizator șters)',
+'rev-deleted-event' => '(intrare ștearsă)',
+'rev-deleted-user-contribs' => '[nume de utilizator sau adresă IP ștearsă - modificare ascunsă din contribuții]',
+'rev-deleted-text-permission' => "Această revizie a paginii a fost '''ștearsă'''.
+Mai multe detalii în [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
+'rev-deleted-text-unhide' => "Această revizie a paginii a fost '''ștearsă'''.
+Pot exista detalii în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].
+Ca administrator puteți [$1 vedea această revizie] în continuare, dacă doriți acest lucru.",
+'rev-suppressed-text-unhide' => "Această revizie a paginii a fost '''suprimată'''.
+Pot exista detalii în [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jurnalul suprimărilor].
+Ca administrator puteți [$1 vedea această revizie] în continuare, dacă doriți acest lucru.",
+'rev-deleted-text-view' => "Această revizie a paginii a fost '''ștearsă'''.
+Ca administrator puteți să o vedeți; s-ar putea să găsiți mai multe detalii în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
+'rev-suppressed-text-view' => "Această revizie a paginii a fost '''suprimată'''.
+Ca administrator puteți să o vedeți; s-ar putea să găsiți mai multe detalii în [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jurnalul suprimărilor].",
+'rev-deleted-no-diff' => "Nu poți vedea acestă diferență deoarece una dintre revizii a fost '''ștearsă'''.
+Pot exista mai multe detalii în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
+'rev-suppressed-no-diff' => "Nu puteți vizualiza această diferență între versiuni deoarece una dintre versiuni a fost '''ștearsă'''.",
+'rev-deleted-unhide-diff' => "Una din reviziile acestui istoric a fost '''ștearsă'''.
+Pot exista detalii în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].
+Ca administrator puteți [$1 vedea diferența] în continuare, dacă doriți acest lucru.",
+'rev-suppressed-unhide-diff' => "Una dintre reviziile acestui diff a fost '''suprimată'''.
+Ar putea fi detalii în [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jurnalul suprimărilor].
+Ca administrator puteți [$1 vedea diferența] în continuare, dacă doriți acest lucru.",
+'rev-deleted-diff-view' => "Una dintre reviziile acestui diff a fost '''ștearsă'''.
+Ca administrator puteți vedea în continuare acest diff; s-ar putea să existe detalii în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
+'rev-suppressed-diff-view' => "Una dintre reviziile acestui diff a fost '''suprimată'''.
+Ca administrator puteți vedea în continuare acest diff; s-ar putea să existe detalii în [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jurnalul suprimărilor].",
+'rev-delundel' => 'arată/ascunde',
+'rev-showdeleted' => 'arată',
+'revisiondelete' => 'Șterge/recuperează revizii',
+'revdelete-nooldid-title' => 'Versiune invalidă',
+'revdelete-nooldid-text' => 'Nu ai specificat revizie pentru a efectua această
funcție, revizia specificată nu există, sau ești pe cale să ascunzi revizia curentă.',
-'revdelete-nologtype-title' => 'Niciun tip de jurnal specificat',
-'revdelete-nologtype-text' => 'Nu ai specificat niciun tip de jurnal pentru a putea efectua această acțiune.',
-'revdelete-toomanytargets-title' => 'Prea multe ținte',
-'revdelete-toomanytargets-text' => 'Ați specificat prea multe tipuri de obiective pentru a putea efectua această acțiune.',
-'revdelete-nologid-title' => 'Intrare în jurnal invalidă',
-'revdelete-nologid-text' => 'Ori nu nu ai specificat o țintă pentru jurnal pentru a efectua această funcție sau intrarea specificată nu există.',
-'revdelete-selected' => "'''{{PLURAL:$2|Revizia aleasă|Reviziile alese}} pentru [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Revizia aleasă|Reviziile alese}}:'''",
-'revdelete-text' => "'''Reviziile şterse vor apărea în istoricul paginii, dar conţinutul lor nu va fi accesibil publicului.'''
-
-Alţi administratori {{SITENAME}} vor putea accesa conţinutul ascuns şi îl pot recupera prin aceeaşi interfaţă, dacă nu este impusă altă restricţie de către operatorii sitului. Confirmă că doreşti să finalizezi acţiunea, că înţelegi consecinţele şi că faci acest lucru în concordanţă cu [[{{MediaWiki:Policy-url}}|politica sitului]].",
-'revdelete-suppress-text' => "Suprimarea trebuie folosită '''doar''' în următoarele cazuri:
+'revdelete-nologtype-title' => 'Niciun tip de jurnal specificat',
+'revdelete-nologtype-text' => 'Nu ai specificat niciun tip de jurnal pentru a putea efectua această acțiune.',
+'revdelete-nologid-title' => 'Intrare în jurnal invalidă',
+'revdelete-nologid-text' => 'Ori nu nu ai specificat o țintă pentru jurnal pentru a efectua această funcție sau intrarea specificată nu există.',
+'revdelete-no-file' => 'Fișierul specificat nu există.',
+'revdelete-show-file-confirm' => 'Ești sigur că dorești să vezi o revizie ștearsă a fișierului "<nowiki>$1</nowiki>" din $2 la $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Revizia aleasă|Reviziile alese}} pentru [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Revizia aleasă|Reviziile alese}}:'''",
+'revdelete-text' => "'''Reviziile șterse vor apărea în istoricul paginii, dar conținutul lor nu va fi accesibil publicului.'''
+Alți administratori {{SITENAME}} vor putea accesa conținutul ascuns și îl pot recupera prin aceeași interfață, dacă nu este impusă altă restricție de către operatorii sitului.",
+'revdelete-confirm' => 'Vă rugăm să confirmați că intenționați să faceți acest lucru, că înțelegeți consecințele și că faceți asta în conformitate cu [[{{MediaWiki:Policy-url}}|politica]].',
+'revdelete-suppress-text' => "Suprimarea trebuie folosită '''doar''' în următoarele cazuri:
* Informații personale inadecvate
*: ''adrese și numere de telefon personale, CNP, numere de securitate socială, etc.''",
-'revdelete-legend' => 'Setează restricții pentru vizualizare',
-'revdelete-hide-text' => 'Ascunde textul reviziei',
-'revdelete-hide-name' => 'Ascunde acțiunea și destinația',
-'revdelete-hide-comment' => 'Ascunde descrierea modificării',
-'revdelete-hide-user' => 'Ascunde numele de utilizator/IP-ul editorului',
-'revdelete-hide-restricted' => 'Ascunde informațiile față de administratori și față de alți utilizatori',
-'revdelete-suppress' => 'Ascunde de asemenea reviziile față de administratori',
-'revdelete-hide-image' => 'Ascunde conținutul fișierului',
-'revdelete-unsuppress' => 'Elimină restricțiile în reviziile restaurate',
-'revdelete-log' => 'Motiv:',
-'revdelete-submit' => 'Aplică reviziilor selectate',
-'revdelete-logentry' => 'vizibilitatea reviziei pentru [[$1]] a fost modificată',
-'logdelete-logentry' => 'a fost modificată vizibilitatea evenimentului [[$1]]',
-'revdelete-success' => "'''Vizibilitatea reviziilor a fost schimbată cu succes.'''",
-'logdelete-success' => "'''Jurnalul vizibilității a fost configurat cu succes.'''",
-'revdel-restore' => 'Schimbă vizibilitatea',
-'pagehist' => 'Istoricul paginii',
-'deletedhist' => 'Istoric șters',
-'revdelete-content' => 'conținut',
-'revdelete-summary' => 'sumarul modificărilor',
-'revdelete-uname' => 'nume de utilizator',
-'revdelete-restricted' => 'restricții aplicate administratorilor',
-'revdelete-unrestricted' => 'restricții eliminate pentru administratori',
-'revdelete-hid' => 'ascuns $1',
-'revdelete-unhid' => 'arată $1',
-'revdelete-log-message' => '$1 pentru $2 {{PLURAL:$2|versiune|versiuni}}',
-'logdelete-log-message' => '$1 pentru $2 {{PLURAL:$2|eveniment|evenimente}}',
+'revdelete-legend' => 'Setează restricții pentru vizualizare',
+'revdelete-hide-text' => 'Ascunde textul reviziei',
+'revdelete-hide-image' => 'Ascunde conținutul fișierului',
+'revdelete-hide-name' => 'Ascunde acțiunea și destinația',
+'revdelete-hide-comment' => 'Ascunde descrierea modificării',
+'revdelete-hide-user' => 'Ascunde numele de utilizator/IP-ul editorului',
+'revdelete-hide-restricted' => 'Ascunde informațiile față de administratori și față de alți utilizatori',
+'revdelete-radio-same' => '(nu schimba)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Nu',
+'revdelete-suppress' => 'Ascunde de asemenea reviziile față de administratori',
+'revdelete-unsuppress' => 'Elimină restricțiile în reviziile restaurate',
+'revdelete-log' => 'Motiv:',
+'revdelete-submit' => 'Aplică {{PLURAL:$1|reviziei selectate|reviziilor selectate}}',
+'revdelete-logentry' => 'vizibilitatea reviziei pentru [[$1]] a fost modificată',
+'logdelete-logentry' => 'a fost modificată vizibilitatea evenimentului [[$1]]',
+'revdelete-success' => "'''Vizibilitatea reviziilor a fost schimbată cu succes.'''",
+'revdelete-failure' => "'''Vizibilitatea reviziei nu poate fi actualizată:'''
+$1",
+'logdelete-success' => "'''Jurnalul vizibilității a fost configurat cu succes.'''",
+'logdelete-failure' => "'''Vizibilitatea jurnalului nu poate fi definită:'''
+$1",
+'revdel-restore' => 'Schimbă vizibilitatea',
+'pagehist' => 'Istoricul paginii',
+'deletedhist' => 'Istoric șters',
+'revdelete-content' => 'conținut',
+'revdelete-summary' => 'sumarul modificărilor',
+'revdelete-uname' => 'nume de utilizator',
+'revdelete-restricted' => 'restricții aplicate administratorilor',
+'revdelete-unrestricted' => 'restricții eliminate pentru administratori',
+'revdelete-hid' => 'ascuns $1',
+'revdelete-unhid' => 'arată $1',
+'revdelete-log-message' => '$1 pentru $2 {{PLURAL:$2|versiune|versiuni}}',
+'logdelete-log-message' => '$1 pentru $2 {{PLURAL:$2|eveniment|evenimente}}',
+'revdelete-hide-current' => 'Eroare la ascunderea elementului datat $2, $1: reprezintă revizia curentă.
+Nu poate fi ascuns.',
+'revdelete-show-no-access' => 'Eroare la afișarea elementului datat $2, $1: elementul a fost marcat ca "restricționat".
+Nu ai acces la acest element.',
+'revdelete-modify-no-access' => 'Eroare la modificarea elementului datat $2, $1: acest element a fost marcat "restricționat".
+Nu ai acces asupra lui.',
+'revdelete-modify-missing' => 'Eroare la modificarea elementului ID $1: lipsește din baza de date!',
+'revdelete-no-change' => "'''Atenție:''' elementul datat $2, $1 are deja aplicată vizibilitatea cerută.",
+'revdelete-concurrent-change' => 'Eroare la modificarea elementului datat $2, $1: statutul său a fost modificat de altcineva în timpul acestei modificări.',
+'revdelete-only-restricted' => 'Eroare în timpul suprimării elementului datat $1, $2: nu puteți suprima elemente la vizualizarea de către administratori fără a marca una din celelalte opțiuni de suprimare.',
+'revdelete-reason-dropdown' => '*Motive de ștergere
+** Violare drepturi de autor
+** Informații personale inadecvate',
+'revdelete-otherreason' => 'Motiv diferit/adițional',
+'revdelete-reasonotherlist' => 'Alt motiv',
+'revdelete-edit-reasonlist' => 'Modifică motivele ștergerii',
+'revdelete-offender' => 'Autorul reviziei:',
# Suppression log
'suppressionlog' => 'Înlătură jurnalul',
@@ -1000,68 +1177,13 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'mergelogpagetext' => 'Mai jos este o listă a celor mai recente combinări ale istoricului unei pagini cu al alteia.',
# Diffs
-'history-title' => 'Istoria reviziilor pentru "$1"',
-'difference' => '(Diferența dintre versiuni)',
-'lineno' => 'Linia $1:',
-'compareselectedversions' => 'Compară versiunile marcate',
-'visualcomparison' => 'Comparare vizuală',
-'wikicodecomparison' => 'Comparare a wikitext-ului',
-'editundo' => 'anulează',
-'diff-multi' => '({{PLURAL:$1|O revizie intermediară neafișată|$1 revizii intermediare neafișate}})',
-'diff-movedto' => 'mutat la $1',
-'diff-styleadded' => 'stilul $1 a fost adăugat',
-'diff-added' => '$1 a fost adăugat',
-'diff-changedto' => 'schimbat în $1',
-'diff-movedoutof' => 'mutat din $1',
-'diff-styleremoved' => 'stilul $1 a fost șters',
-'diff-removed' => '$1 a fost șters',
-'diff-changedfrom' => 'schimbat din $1',
-'diff-src' => 'sursă',
-'diff-withdestination' => 'cu destinația $1',
-'diff-with' => '&#32;cu $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;și $1 $2',
-'diff-width' => 'lățime',
-'diff-height' => 'înălțime',
-'diff-p' => "un '''paragraf'''",
-'diff-blockquote' => "un '''citat'''",
-'diff-h1' => "un '''antet (nivel 1)'''",
-'diff-h2' => "un '''antet (nivel 2)'''",
-'diff-h3' => "un '''antet (nivel 3)'''",
-'diff-h4' => "un '''antet (nivel 4)'''",
-'diff-h5' => "un '''antet (nivel 5)'''",
-'diff-pre' => "un '''bloc preformatat'''",
-'diff-div' => "o '''diviziune'''",
-'diff-ul' => "o '''listă neordonată'''",
-'diff-ol' => "o '''listă ordonată'''",
-'diff-li' => "un '''element de listă'''",
-'diff-table' => "un '''tabel'''",
-'diff-tbody' => "un '''conținut al tabelului'''",
-'diff-tr' => "un '''rând'''",
-'diff-td' => "o '''celulă'''",
-'diff-th' => "un '''antet'''",
-'diff-br' => "o '''rupere de rând'''",
-'diff-hr' => "o '''bară orizontală'''",
-'diff-code' => "un '''bloc de cod de calculator'''",
-'diff-dl' => "o '''listă de definiții'''",
-'diff-dt' => "un '''termen de definiție'''",
-'diff-dd' => "o '''definiție'''",
-'diff-input' => "o '''introducere'''",
-'diff-form' => "un '''formular'''",
-'diff-img' => "o '''imagine'''",
-'diff-span' => "o '''parte'''",
-'diff-a' => "o '''legătură'''",
-'diff-i' => "'''cursiv'''",
-'diff-b' => "'''aldin'''",
-'diff-strong' => "'''îngroșat'''",
-'diff-em' => "'''accentuat'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''mare'''",
-'diff-del' => "'''șters'''",
-'diff-tt' => "'''lățime fixă'''",
-'diff-sub' => "'''indice inferior'''",
-'diff-sup' => "'''indice superior'''",
-'diff-strike' => "'''tăiat'''",
+'history-title' => 'Istoria reviziilor pentru "$1"',
+'difference' => '(Diferența dintre versiuni)',
+'lineno' => 'Linia $1:',
+'compareselectedversions' => 'Compară versiunile marcate',
+'showhideselectedversions' => 'Arată/ascunde reviziile marcate',
+'editundo' => 'anulează',
+'diff-multi' => '({{PLURAL:$1|O revizie intermediară neafișată|$1 revizii intermediare neafișate}})',
# Search results
'searchresults' => 'Rezultatele căutării',
@@ -1069,28 +1191,25 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'searchresulttext' => 'Pentru mai multe detalii despre căutarea în {{SITENAME}}, vezi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ai căutat \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toate paginile care încep cu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toate paginile care se leagă de "$1"]])',
'searchsubtitleinvalid' => 'Pentru căutarea "$1"',
-'noexactmatch' => "'''Pagina cu titlul \"\$1\" nu există.''' Poți [[:\$1|crea această pagină]].",
-'noexactmatch-nocreate' => "'''Nu există nici o pagină cu titlul „$1”.'''",
'toomanymatches' => 'Prea multe rezultate au fost întoarse, încercă o căutare diferită',
'titlematches' => 'Rezultate în titlurile articolelor',
'notitlematches' => 'Nici un rezultat în titlurile articolelor',
'textmatches' => 'Rezultate în textele articolelor',
'notextmatches' => 'Nici un rezultat în textele articolelor',
-'prevn' => 'anterioarele $1',
-'nextn' => 'următoarele $1',
+'prevn' => 'anterioarele {{PLURAL:$1|$1}}',
+'nextn' => 'următoarele {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|anteriorul|anterioarele}} $1 {{PLURAL:$1|rezultat|rezultate}}',
'nextn-title' => '{{PLURAL:$1|următorul|următoarele}} $1 {{PLURAL:$1|rezultat|rezultate}}',
'shown-title' => 'Arată $1 {{PLURAL:$1|rezultat|rezultate}} pe pagină',
-'viewprevnext' => 'Vedeți ($1) ($2) ($3).',
+'viewprevnext' => 'Vezi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opțiuni căutare',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
'searchmenu-new' => "'''Creează pagina \"[[:\$1]]\" pe acest wiki!'''",
'searchhelp-url' => 'Help:Ajutor',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Răsfoiește paginile cu acest prefix]]',
-'searchprofile-articles' => 'Pagini',
-'searchprofile-articles-and-proj' => 'Articole & pagini',
-'searchprofile-project' => 'Proiect',
-'searchprofile-images' => 'Fişiere',
+'searchprofile-articles' => 'Pagini cu conținut',
+'searchprofile-project' => 'Pagini Proiect și de Ajutor',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Totul',
'searchprofile-advanced' => 'Avansat',
'searchprofile-articles-tooltip' => 'Caută în $1',
@@ -1098,8 +1217,6 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'searchprofile-images-tooltip' => 'Caută fișiere',
'searchprofile-everything-tooltip' => 'Caută în tot conținutul (incluzând paginile de discuție)',
'searchprofile-advanced-tooltip' => 'Caută în namespace-uri personalizate',
-'prefs-search-nsdefault' => 'Caută utilizând standardul:',
-'prefs-search-nscustom' => 'Caută în namespace-uri personalizate:',
'search-result-size' => '$1 ({{PLURAL:$2|1 cuvânt|$2 cuvinte}})',
'search-result-score' => 'Relevanță: $1%',
'search-redirect' => '(redirecționare către $1)',
@@ -1112,11 +1229,12 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'search-mwsuggest-disabled' => 'fără sugestii',
'search-relatedarticle' => 'Relaționat',
'mwsuggest-disable' => 'Dezactivează sugestiile AJAX',
+'searcheverything-enable' => 'Caută în toate spațiile de nume',
'searchrelated' => 'relaționat',
'searchall' => 'toate',
'showingresults' => "Mai jos {{PLURAL:$1|apare '''1''' rezultat|apar '''$1''' rezultate}} începând cu #<b>$2</b>.",
'showingresultsnum' => "Mai jos {{PLURAL:$3|apare '''1''' rezultat|apar '''$3''' rezultate}} cu #<b>$2</b>.",
-'showingresultstotal' => "Arată {{PLURAL:$4|rezultatul '''$1''' din '''$3'''|rezultatele '''$1 - $2''' din '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1'''|Resultate '''$1 - $2'''}} ale '''$3''' pentru '''$4'''",
'nonefound' => "'''Notă''': Numai unele spații de nume sunt căutate implicit.
Încercați să puneți ca și prefix al căutării ''all:'' pentru a căuta în tot conținutul (incluzând și paginile de discuții, formate, etc), sau folosiți spațiul de nume dorit ca și prefix.",
'search-nonefound' => 'Nu sunt rezultate conforme interogării.',
@@ -1125,111 +1243,149 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'powersearch-ns' => 'Căutare în spațiile de nume:',
'powersearch-redir' => 'Afișează redirectările',
'powersearch-field' => 'Caută după',
+'powersearch-togglelabel' => 'Marchează:',
+'powersearch-toggleall' => 'Tot',
+'powersearch-togglenone' => 'Nimic',
'search-external' => 'Căutare externă',
'searchdisabled' => '<p>Ne pare rău! Căutarea după text a fost dezactivată temporar, din motive de performanță. Între timp puteți folosi căutarea prin Google mai jos, însă aceasta poate să dea rezultate învechite.</p>',
+# Quickbar
+'qbsettings' => 'Setări pentru bara rapidă',
+'qbsettings-none' => 'Fără',
+'qbsettings-fixedleft' => 'Fixă, în stânga',
+'qbsettings-fixedright' => 'Fixă, în dreapta',
+'qbsettings-floatingleft' => 'Liberă',
+'qbsettings-floatingright' => 'Plutire la dreapta',
+
# Preferences page
-'preferences' => 'Preferințe',
-'mypreferences' => 'Preferințe',
-'prefs-edits' => 'Număr de modificări:',
-'prefsnologin' => 'Neautentificat',
-'prefsnologintext' => 'Trebuie să fiţi <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} autentificat]</span> pentru a vă putea salva preferinţele.',
-'prefsreset' => 'Preferințele au fost resetate.',
-'qbsettings' => 'Setări pentru bara rapidă',
-'qbsettings-none' => 'Fără',
-'qbsettings-fixedleft' => 'Fixă, în stânga',
-'qbsettings-fixedright' => 'Fixă, în dreapta',
-'qbsettings-floatingleft' => 'Liberă',
-'qbsettings-floatingright' => 'Plutire la dreapta',
-'changepassword' => 'Schimbă parola',
-'skin' => 'Aspect',
-'skin-preview' => 'Previzualizare',
-'math' => 'Aspect formule',
-'dateformat' => 'Formatul datelor',
-'datedefault' => 'Nici o preferință',
-'datetime' => 'Data şi ora',
-'math_failure' => 'Nu s-a putut interpreta',
-'math_unknown_error' => 'eroare necunoscută',
-'math_unknown_function' => 'funcție necunoscută',
-'math_lexing_error' => 'eroare lexicală',
-'math_syntax_error' => 'eroare de sintaxă',
-'math_image_error' => 'Conversiune în PNG eșuată',
-'math_bad_tmpdir' => 'Nu se poate crea sau nu se poate scrie în directorul temporar pentru formule matematice',
-'math_bad_output' => 'Nu se poate crea sau nu se poate scrie în directorul de ieșire pentru formule matematice',
-'math_notexvc' => 'Lipsește executabilul texvc; vezi math/README pentru configurare.',
-'prefs-personal' => 'Date de utilizator',
-'prefs-rc' => 'Schimbări recente',
-'prefs-watchlist' => 'Listă de urmărire',
-'prefs-watchlist-days' => 'Numărul de zile care apar în lista paginilor urmărite:',
-'prefs-watchlist-days-max' => '(maxim 7 zile)',
-'prefs-watchlist-edits' => 'Numărul de editări care apar în lista extinsă a paginilor urmărite:',
-'prefs-watchlist-edits-max' => '(număr maxim: 1000)',
-'prefs-misc' => 'Parametri diverși',
-'prefs-resetpass' => 'Modifică parola',
-'saveprefs' => 'Salvează preferințele',
-'resetprefs' => 'Resetează preferințele',
-'restoreprefs' => 'Restaurează toate valorile implicite',
-'textboxsize' => 'Dimensiunile casetei de text',
-'prefs-edit-boxsize' => 'Mărimea ferestrei de modificare.',
-'rows' => 'Rânduri:',
-'columns' => 'Coloane',
-'searchresultshead' => 'Parametri căutare',
-'resultsperpage' => 'Numărul de rezultate per pagină',
-'contextlines' => 'Numărul de linii per rezultat',
-'contextchars' => 'Numărul de caractere per linie',
-'stub-threshold' => 'Valoarea minimă pentru un <a href="#" class="stub">ciot</a> (octeți):',
-'recentchangesdays' => 'Numărul de zile afișate în schimbări recente:',
-'recentchangesdays-max' => '(maxim {{PLURAL:$1|o zi|$1 zile}})',
-'recentchangescount' => 'Numărul de modificări arătate în schimbările recente, istoricul paginii, şi în jurnale, implicit:',
-'savedprefs' => 'Preferințele dumneavoastră au fost salvate.',
-'timezonelegend' => 'Fus orar:',
-'timezonetext' => '¹Introduceți numărul de ore diferență între ora Dv. locală și ora serverului (UTC, timp universal).',
-'localtime' => 'Ora locală:',
-'timezoneselect' => 'Fus orar:',
-'timezoneuseserverdefault' => 'Folosește ora server-ului',
-'timezoneuseoffset' => 'Altul (specifică diferența)',
-'timezoneoffset' => 'Diferența¹:',
-'servertime' => 'Ora serverului:',
-'guesstimezone' => 'Încearcă determinarea automată a diferenței',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Oceanul Arctic',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceanul Atlantic',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceanul Indian',
-'timezoneregion-pacific' => 'Oceanul Pacific',
-'allowemail' => 'Activează email de la alți utilizatori',
-'prefs-searchoptions' => 'Opțiuni de căutare',
-'prefs-namespaces' => 'Spații de nume',
-'defaultns' => 'Caută în aceste secţiuni implicit:',
-'default' => 'standard',
-'files' => 'Fişiere',
-'prefs-custom-css' => 'CSS personalizat',
-'prefs-custom-js' => 'JS personalizat',
+'preferences' => 'Preferințe',
+'mypreferences' => 'Preferințe',
+'prefs-edits' => 'Număr de modificări:',
+'prefsnologin' => 'Neautentificat',
+'prefsnologintext' => 'Trebuie să fiți <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} autentificat]</span> pentru a vă putea salva preferințele.',
+'changepassword' => 'Schimbă parola',
+'prefs-skin' => 'Aspect',
+'skin-preview' => 'Previzualizare',
+'prefs-math' => 'Aspect formule',
+'datedefault' => 'Nici o preferință',
+'prefs-datetime' => 'Data și ora',
+'prefs-personal' => 'Date de utilizator',
+'prefs-rc' => 'Schimbări recente',
+'prefs-watchlist' => 'Listă de urmărire',
+'prefs-watchlist-days' => 'Numărul de zile care apar în lista paginilor urmărite:',
+'prefs-watchlist-days-max' => '(maxim 7 zile)',
+'prefs-watchlist-edits' => 'Numărul de editări care apar în lista extinsă a paginilor urmărite:',
+'prefs-watchlist-edits-max' => '(număr maxim: 1000)',
+'prefs-watchlist-token' => 'Jeton pentru lista de urmărire:',
+'prefs-misc' => 'Parametri diverși',
+'prefs-resetpass' => 'Modifică parola',
+'prefs-email' => 'Opțiuni e-mail',
+'prefs-rendering' => 'Aspect',
+'saveprefs' => 'Salvează preferințele',
+'resetprefs' => 'Resetează preferințele',
+'restoreprefs' => 'Restaurează toate valorile implicite',
+'prefs-editing' => 'Modificare',
+'prefs-edit-boxsize' => 'Mărimea ferestrei de modificare.',
+'rows' => 'Rânduri:',
+'columns' => 'Coloane',
+'searchresultshead' => 'Parametri căutare',
+'resultsperpage' => 'Numărul de rezultate per pagină',
+'contextlines' => 'Numărul de linii per rezultat',
+'contextchars' => 'Numărul de caractere per linie',
+'stub-threshold' => 'Valoarea minimă pentru un <a href="#" class="stub">ciot</a> (octeți):',
+'recentchangesdays' => 'Numărul de zile afișate în schimbări recente:',
+'recentchangesdays-max' => '(maxim {{PLURAL:$1|o zi|$1 zile}})',
+'recentchangescount' => 'Numărul modificărilor arătate implicit:',
+'prefs-help-recentchangescount' => 'Sunt incluse schimbările recente, istoricul paginilor și jurnalele.',
+'prefs-help-watchlist-token' => 'Completând această căsuță cu o cheie secretă va genera un flux RSS pentru lista dumneavoastră de urmărire.
+Oricine vă știe cheia din această căsuță va fi capabil să citească lista dumneavoastră de urmărire, deci alegeți o valoare sigură.
+Aici este o valoare generată întâmplător pe care o puteți folosi: $1',
+'savedprefs' => 'Preferințele dumneavoastră au fost salvate.',
+'timezonelegend' => 'Fus orar:',
+'localtime' => 'Ora locală:',
+'timezoneuseserverdefault' => 'Folosește ora server-ului',
+'timezoneuseoffset' => 'Altul (specifică diferența)',
+'timezoneoffset' => 'Diferența¹:',
+'servertime' => 'Ora serverului:',
+'guesstimezone' => 'Încearcă determinarea automată a diferenței',
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antarctica',
+'timezoneregion-arctic' => 'Oceanul Arctic',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceanul Atlantic',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceanul Indian',
+'timezoneregion-pacific' => 'Oceanul Pacific',
+'allowemail' => 'Activează email de la alți utilizatori',
+'prefs-searchoptions' => 'Opțiuni de căutare',
+'prefs-namespaces' => 'Spații de nume',
+'defaultns' => 'Altfel, caută în aceste spații de nume:',
+'default' => 'standard',
+'prefs-files' => 'Fișiere',
+'prefs-custom-css' => 'CSS personalizat',
+'prefs-custom-js' => 'JS personalizat',
+'prefs-reset-intro' => 'Poți folosi această pagină pentru a reseta preferințele la valorile implicite.
+Acțiunea nu este reversibilă.',
+'prefs-emailconfirm-label' => 'Confirmare e-mail:',
+'prefs-textboxsize' => 'Mărimea căsuței de modificare',
+'youremail' => 'E-mail',
+'username' => 'Nume de utilizator:',
+'uid' => 'ID utilizator:',
+'prefs-memberingroups' => 'Membru în {{PLURAL:$1|grupul|grupurile}}:',
+'prefs-registration' => 'Data înregistrării:',
+'yourrealname' => 'Nume real:',
+'yourlanguage' => 'Limbă:',
+'yourvariant' => 'Varianta:',
+'yournick' => 'Semnătură:',
+'prefs-help-signature' => 'Comentariile de pe paginile de discuții trebuie să fie semnate cu "<nowiki>~~~~</nowiki>" care va fi transformat în semnătura dumneavoastră urmată de ora la care ați introdus comentariul.',
+'badsig' => 'Semnătură brută incorectă; verificați tag-urile HTML.',
+'badsiglength' => 'Semnătura este prea lungă.
+Dimensiunea trebuie să fie mai mică de $1 {{PLURAL:$1|caracter|caractere}}.',
+'yourgender' => 'Gen:',
+'gender-unknown' => 'Nespecificat',
+'gender-male' => 'Bărbat',
+'gender-female' => 'Femeie',
+'prefs-help-gender' => 'Opțional - sexul utilizatorului: folosit pentru adresarea corectă de către software. Această informație va fi publică.',
+'email' => 'E-mail',
+'prefs-help-realname' => '* Numele dumneavoastră real (opțional): Dacă decideți introducerea numelui real aici, acesta va fi folosit pentru a vă atribui munca.<br />',
+'prefs-help-email' => '*Adresa de e-mail (opțional): Permite altor utilizatori să vă contacteze prin e-mail via {{SITENAME}}, fără a vă divulga identitatea. De asemenea, permite recuperarea parolei în cazul în care o uitați.',
+'prefs-help-email-required' => 'Adresa de e-mail este necesară.',
+'prefs-info' => 'Informații de bază',
+'prefs-i18n' => 'Internaționalizare',
+'prefs-signature' => 'Semnătură',
+'prefs-dateformat' => 'Format dată',
+'prefs-timeoffset' => 'Decalaj orar:',
+'prefs-advancedediting' => 'Opțiuni avansate',
+'prefs-advancedrc' => 'Opțiuni avansate',
+'prefs-advancedrendering' => 'Opțiuni avansate',
+'prefs-advancedsearchoptions' => 'Opțiuni avansate',
+'prefs-advancedwatchlist' => 'Opțiuni avansate',
+'prefs-display' => 'Opțiuni afișare',
+'prefs-diffs' => 'Diferențe',
# User rights
-'userrights' => 'Administrarea permisiunilor de utilizator', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Administrare grupuri de utilizatori',
-'userrights-user-editname' => 'Introdu un nume de utilizator:',
-'editusergroup' => 'Modificare grup de utilizatori',
-'editinguser' => "modificare permisiuni de utilizator ale utilizatorului '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modifică grupul de utilizatori',
-'saveusergroups' => 'Salvează grupul de utilizatori',
-'userrights-groupsmember' => 'Membru al:',
-'userrights-groups-help' => 'Puteți schimba grupul căruia îi aparține utilizatorul:
+'userrights' => 'Administrarea permisiunilor de utilizator',
+'userrights-lookup-user' => 'Administrare grupuri de utilizatori',
+'userrights-user-editname' => 'Introdu un nume de utilizator:',
+'editusergroup' => 'Modificare grup de utilizatori',
+'editinguser' => "modificare permisiuni de utilizator ale utilizatorului '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modifică grupul de utilizatori',
+'saveusergroups' => 'Salvează grupul de utilizatori',
+'userrights-groupsmember' => 'Membru al:',
+'userrights-groupsmember-auto' => 'Membru, implicit, al:',
+'userrights-groups-help' => 'Puteți schimba grupul căruia îi aparține utilizatorul:
*Căsuța bifată înseamnă că utilizatorul este în acel grup.
*Căsuța nebifată înseamnă că utilizatorul nu este în acel grup.
*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers',
-'userrights-reason' => 'Motiv:',
-'userrights-no-interwiki' => 'Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.',
-'userrights-nodatabase' => 'Baza de date $1 nu există sau nu este locală.',
-'userrights-nologin' => 'Trebuie să te [[Special:UserLogin|autentifici]] cu un cont de administrator pentru a atribui permisiuni utilizatorilor.',
-'userrights-notallowed' => 'Contul dumneavoastră nu are permisiunea de a acorda permisiuni utilizatorilor.',
-'userrights-changeable-col' => 'Grupuri pe care le puteți schimba',
-'userrights-unchangeable-col' => 'Grupuri pe care nu le puteți schimba',
+'userrights-reason' => 'Motiv:',
+'userrights-no-interwiki' => 'Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.',
+'userrights-nodatabase' => 'Baza de date $1 nu există sau nu este locală.',
+'userrights-nologin' => 'Trebuie să te [[Special:UserLogin|autentifici]] cu un cont de administrator pentru a atribui permisiuni utilizatorilor.',
+'userrights-notallowed' => 'Contul dumneavoastră nu are permisiunea de a acorda permisiuni utilizatorilor.',
+'userrights-changeable-col' => 'Grupuri pe care le puteți schimba',
+'userrights-unchangeable-col' => 'Grupuri pe care nu le puteți schimba',
# Groups
'group' => 'Grup:',
@@ -1282,6 +1438,7 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'right-bigdelete' => 'Şterge pagini cu istoric lung',
'right-deleterevision' => 'Şterge și recuperează versiuni specifice ale paginilor',
'right-deletedhistory' => 'Vezi intrările șterse din istoric, fără textul asociat',
+'right-deletedtext' => 'Vizializați textul șters și modificările dintre versiunile șterse',
'right-browsearchive' => 'Caută pagini șterse',
'right-undelete' => 'Recuperează pagini',
'right-suppressrevision' => 'Examinează și restaurează reviziile ascunse față de administratori',
@@ -1295,6 +1452,8 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'right-editprotected' => 'Modificare pagini protejate (fără protejare în cascadă)',
'right-editinterface' => 'Modificare interfața cu utilizatorul',
'right-editusercssjs' => 'Modifică fișierele CSS și JS ale altor utilizatori',
+'right-editusercss' => 'Modifică fișierele CSS ale altor utilizatori',
+'right-edituserjs' => 'Modifică fișierele JS ale altor utilizatori',
'right-rollback' => 'Revocarea rapidă a editărilor ultimului utilizator care a modificat o pagină particulară',
'right-markbotedits' => 'Marchează revenirea ca modificare efectuată de robot',
'right-noratelimit' => 'Neafectat de limitele raportului',
@@ -1311,6 +1470,8 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'right-siteadmin' => 'Blochează și deblochează baza de date',
'right-reset-passwords' => 'Resetarea parolelor altor utilizatori',
'right-override-export-depth' => 'Exportă inclusiv paginile legate până la o adâncime de 5',
+'right-versiondetail' => 'Arată informații extise despre versiunea programului',
+'right-sendemail' => 'Trimite e-mail altor utilizatori',
# User rights log
'rightslog' => 'Jurnal permisiuni de utilizator',
@@ -1360,8 +1521,17 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'recentchanges-legend' => 'Opțiuni schimbări recente',
'recentchangestext' => 'Schimbări recente ... (Log)',
'recentchanges-feed-description' => 'Urmărește cele mai recente schimbări folosind acest flux.',
+'recentchanges-label-legend' => 'Legendă: $1.',
+'recentchanges-legend-newpage' => '$1 - pagină nouă',
+'recentchanges-label-newpage' => 'Această modificare a creat o pagină nouă',
+'recentchanges-legend-minor' => '$1 - modificare minoră',
+'recentchanges-label-minor' => 'Aceasta este o modificare minoră',
+'recentchanges-legend-bot' => '$1 - modificare efectuată de un robot',
+'recentchanges-label-bot' => 'Această modificare a fost efectuată de un robot',
+'recentchanges-legend-unpatrolled' => '$1 - modificare nepatrulată',
+'recentchanges-label-unpatrolled' => 'Această modificare nu a fost patrulată încă',
'rcnote' => "Mai jos se află {{PLURAL:$|ultima modificare|ultimele '''$1''' modificări}} din {{PLURAL:$2|ultima zi|ultimele '''$2''' zile}}, începând cu $5, $4.",
-'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afişate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
+'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afișate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
'rclistfrom' => 'Arată modificările începând de la $1',
'rcshowhideminor' => '$1 modificările minore',
'rcshowhidebots' => '$1 roboți',
@@ -1378,6 +1548,7 @@ $3',
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
+'unpatrolledletter' => '!',
'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|utilizator|utilizatori}} care urmăresc]',
'rc_categories' => 'Limitează la categoriile (separate prin "|")',
@@ -1389,6 +1560,8 @@ $3',
# Recent changes linked
'recentchangeslinked' => 'Modificări corelate',
+'recentchangeslinked-feed' => 'Modificări corelate',
+'recentchangeslinked-toolbox' => 'Modificări corelate',
'recentchangeslinked-title' => 'Modificări legate de „$1”',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Nici o schimbare la paginile legate în perioada dată.',
@@ -1400,8 +1573,8 @@ Paginile pe care le [[Special:Watchlist|urmăriți]] apar în '''aldine'''.",
# Upload
'upload' => 'Încarcă fișier',
'uploadbtn' => 'Încarcă fișier',
-'reupload' => 'Re-trimite',
'reuploaddesc' => 'Revocare încărcare și întoarcere la formularul de trimitere.',
+'upload-tryagain' => 'Trimiteți descrierea fișierului modificată',
'uploadnologin' => 'Nu sunteți autentificat',
'uploadnologintext' => 'Trebuie să fiți [[Special:UserLogin|autentificat]] pentru a putea trimite fișiere.',
'upload_directory_missing' => 'Directorul în care sunt încărcate fișierele ($1) lipsește și nu poate fi creat de serverul web.',
@@ -1433,6 +1606,7 @@ Vezi [[Special:NewFiles|galeria fișierelor noi]] pentru o mai bună vizualizare
'minlength1' => 'Numele fișierelor trebuie să fie cel puțin o literă.',
'illegalfilename' => 'Numele fișierului "$1" conține caractere care nu sunt permise în titlurile paginilor. Vă rugăm redenumiți fișierul și încercați să îl încărcați din nou.',
'badfilename' => 'Numele fișierului a fost schimbat în „$1”.',
+'filetype-mime-mismatch' => 'Extensia nu se potrivește cu tipul MIME.',
'filetype-badmime' => 'Nu este permisă încărcarea de fișiere de tipul MIME "$1".',
'filetype-bad-ie-mime' => 'Nu puteți încărca acest fișier deoarece Internet Explorer îl va detecta ca și "$1", care este nepermis și poate fi un format periculos.',
'filetype-unwanted-type' => "'''\".\$1\"''' este un tip de fișier nedorit.
@@ -1453,7 +1627,6 @@ Pentru ca sumarul tău să apară, va trebui să îl adaugi manual.
* Numele fișierului de încărcat: '''<tt>[[:$1]]</tt>'''
* Numele fișierului existent: '''<tt>[[:$2]]</tt>'''
Te rog alege alt nume.",
-'fileexists-thumb' => "<center>'''Imagine existentă'''</center>",
'fileexists-thumbnail-yes' => "Fișierul pare a fi o imagine cu o rezoluție scăzută ''(thumbnail)''. [[$1|thumb]]
Verifică fișierul'''<tt>[[:$1]]</tt>'''.
Dacă fișierul verificat este identic cu imaginea originală nu este necesară încărcarea altui thumbnail.",
@@ -1467,6 +1640,7 @@ Mergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb
'file-deleted-duplicate' => 'Un fișier identic cu acesta ([[$1]]) a fost șters anterior. Verificați istoricul ștergerilor fișierului înainte de a-l reîncărca.',
'successfulupload' => 'Fișierul a fost trimis',
'uploadwarning' => 'Avertizare la trimiterea fișierului',
+'uploadwarning-text' => 'Vă rugăm să modificați descrierea fișierului mai jos și să încercați din nou.',
'savefile' => 'Salvează fișierul',
'uploadedimage' => 'a trimis [[$1]]',
'overwroteimage' => 'încărcat o versiune nouă a fișierului "[[$1]]"',
@@ -1475,11 +1649,14 @@ Mergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb
'php-uploaddisabledtext' => 'Încărcarea de fișiere este dezactivată în PHP.
Vă rugăm să verificați setările din file_uploads.',
'uploadscripted' => 'Fișierul conține HTML sau cod script care poate fi interpretat în mod eronat de un browser.',
-'uploadcorrupt' => 'Fișierul este corupt sau are o extensie incorectă. Verifică fișierul și trimite-l din nou.',
'uploadvirus' => 'Fișierul conține un virus! Detalii: $1',
+'upload-source' => 'Fișier sursă',
'sourcefilename' => 'Nume fișier sursă:',
+'sourceurl' => 'URL sursă:',
'destfilename' => 'Numele fișierului de destinație:',
'upload-maxfilesize' => 'Mărimea maximă a unui fișier: $1',
+'upload-description' => 'Descrierea fișierului',
+'upload-options' => 'Opțiuni de încărcare',
'watchthisupload' => 'Urmărește acest fișier',
'filewasdeleted' => 'Un fișier cu acest nume a fost anterior încărcat și apoi șters. Ar trebui să verificați $1 înainte să îl încărcați din nou.',
'upload-wasdeleted' => "'''Atenție: Sunteți pe cale să încarcați un fișier șters anterior.'''
@@ -1489,15 +1666,46 @@ Jurnalul pentru această ștergere este disponibil aici:",
'filename-bad-prefix' => "Numele fișierului pe care îl încărcați începe cu '''\"\$1\"''', care este un nume non-descriptiv alocat automat în general de camerele digitale.
Vă rugăm, alegeți un nume mai descriptiv pentru fișerul dumneavoastră.",
-'upload-proto-error' => 'Protocol incorect',
-'upload-proto-error-text' => 'Importul de la distanță necesită adrese URL care încep cu <code>http://</code> sau <code>ftp://</code>.',
-'upload-file-error' => 'Eroare internă',
-'upload-file-error-text' => 'A apărut o eroare internă la crearea unui fișier temporar pe server.
+'upload-proto-error' => 'Protocol incorect',
+'upload-proto-error-text' => 'Importul de la distanță necesită adrese URL care încep cu <code>http://</code> sau <code>ftp://</code>.',
+'upload-file-error' => 'Eroare internă',
+'upload-file-error-text' => 'A apărut o eroare internă la crearea unui fișier temporar pe server.
Vă rugăm să contactați un [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Eroare de încărcare necunoscută',
-'upload-misc-error-text' => 'A apărut o eroare necunoscută în timpul încărcării.
+'upload-misc-error' => 'Eroare de încărcare necunoscută',
+'upload-misc-error-text' => 'A apărut o eroare necunoscută în timpul încărcării.
Vă rugăm să verificați dacă adresa URL este validă și accesibilă și încercați din nou.
Dacă problema persistă, contactați un [[Special:ListUsers/sysop|administrator]].',
+'upload-too-many-redirects' => 'URL-ul conținea prea multe redirecționări',
+'upload-unknown-size' => 'Mărime necunoscută',
+'upload-http-error' => 'A avut loc o eroare HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acces interzis',
+'img-auth-nopathinfo' => 'PATH_INFO lipsește.
+Serverul dumneavoastră nu a fost setat pentru a trece aceste informații.
+S-ar putea să fie bazat pe CGI și să nu suporte img_auth.
+Vedeți http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Adresa cerută nu este în directorul pentru încărcări configurat.',
+'img-auth-badtitle' => 'Nu s-a putut construi un titlu valid din "$1".',
+'img-auth-nologinnWL' => 'Nu sunteți autentificat și "$1" nu este pe lista albă.',
+'img-auth-nofile' => 'Fișierul "$1" nu există.',
+'img-auth-isdir' => 'Încercați să accesați directorul "$1".
+Numai accesul la fișiere este permis.',
+'img-auth-streaming' => 'Derularea continuă a "$1".',
+'img-auth-public' => 'Funcția img_auth.php este pentru a exporta fișiere de pe un wiki privat.
+Acest wiki este configurat ca unul public.
+Pentru securitate optimă, img_auth.php este dezactivat.',
+'img-auth-noread' => 'Acest utilizator nu are acces să citească "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL invalid: $1',
+'http-invalid-scheme' => 'Adresele URL cu schema „$1” nu sunt acceptate.',
+'http-request-error' => 'Cererea HTTP a eșuat din cauza unei erori necunoscute.',
+'http-read-error' => 'S-a produs o eroare în timpul citirii HTTP.',
+'http-timed-out' => 'Cererea HTTP a expirat.',
+'http-curl-error' => 'Eroare la preluarea adresei URL: $1',
+'http-host-unreachable' => 'Adresa URL nu a putut fi accesată.',
+'http-bad-status' => 'A apărut o problemă în timpul solicitării HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Nu pot găsi adresa URL',
@@ -1509,6 +1717,7 @@ Te rog verifică dacă situl este activ, așteaptă puțin și încearcă apoi.
Poate dorești să încerci la o oră mai puțin ocupată.',
'license' => 'Licențiere:',
+'license-header' => 'Licențiere',
'nolicense' => 'Nici una selectată',
'license-nopreview' => '(Previzualizare indisponibilă)',
'upload_source_url' => ' (un URL valid, accesibil public)',
@@ -1529,6 +1738,7 @@ O apăsare pe antetul coloanei schimbă sortarea.',
'listfiles_count' => 'Versiuni',
# File description page
+'file-anchor-link' => 'Fișier',
'filehist' => 'Istoricul fișierului',
'filehist-help' => "Apăsați pe '''Data și ora''' pentru a vedea versiunea trimisă atunci.",
'filehist-deleteall' => 'șterge tot',
@@ -1543,6 +1753,7 @@ O apăsare pe antetul coloanei schimbă sortarea.',
'filehist-dimensions' => 'Dimensiuni',
'filehist-filesize' => 'Mărimea fișierului',
'filehist-comment' => 'Comentariu',
+'filehist-missing' => 'Fișier lipsă',
'imagelinks' => 'Legături',
'linkstoimage' => '{{PLURAL:$1|Următoarea pagină trimite spre|Următoarele $1 pagini trimit spre}} această imagine:',
'linkstoimage-more' => 'Mai mult de $1 {{PLURAL:$1|pagină este legată|pagini sunt legate}} de acest fișier.
@@ -1553,15 +1764,16 @@ O [[Special:WhatLinksHere/$2|listă completă]] este disponibilă.',
'redirectstofile' => 'The following {{PLURAL:$1|file redirects|$1 files redirect}} to this file:
{{PLURAL:$1|Fișierul următor|Următoarele $1 fișiere}} redirectează la acest fișier:',
'duplicatesoffile' => '{{PLURAL:$1|Fișierul următor este duplicat|Următoarele $1 fișiere sunt duplicate}} ale acestui fișier ([[Special:FileDuplicateSearch/$2|mai multe detalii]]):',
-'sharedupload' => 'Acest fișier provine de la $1 și poate fi folosit și de alte proiecte.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Vă rugăm citiți [$1 pagina de descriere a fișierului] pentru alte informații.',
-'shareduploadwiki-desc' => 'Descrierea din pagina $1 este disponibilă mai jos.',
-'shareduploadwiki-linktext' => 'pagina descriptivă a fișierului',
-'noimage' => 'Nu există nici un fișier cu acest nume, puteți să îl $1.',
-'noimage-linktext' => 'trimiteți',
+'sharedupload' => 'Acest fișier provine de la $1 și poate fi folosit și de alte proiecte.',
+'sharedupload-desc-there' => 'Fișierul acesta este de la $1 și poate fi folosit de alte proiecte.
+Vezi [$2 pagina de descriere a fișierului] pentru mai multe detalii.',
+'sharedupload-desc-here' => 'Fișierul acesta este de la $1 și poate fi folosit de alte proiecte.
+Descrierea de mai jos poate fi consultată la [$2 pagina de descriere a fișierului].',
+'filepage-nofile' => 'Nu există niciun fișier cu acest nume.',
+'filepage-nofile-link' => 'Nu există niciun fișier cu acest nume, dar îl poți [$1 încărca].',
'uploadnewversion-linktext' => 'Încarcă o versiune nouă a acestui fișier',
-'shared-repo-from' => 'de la $1', # $1 is the repository name
-'shared-repo' => 'un depozit partajat', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'de la $1',
+'shared-repo' => 'un depozit partajat',
# File reversion
'filerevert' => 'Revenire $1',
@@ -1590,6 +1802,7 @@ O [[Special:WhatLinksHere/$2|listă completă]] este disponibilă.',
** Încălcare drepturi de autor
** Fișier duplicat',
'filedelete-edit-reasonlist' => 'Modifică motivele ștergerii',
+'filedelete-maintenance' => 'Ştergerea sau restaurarea fișierelor este temporar dezactivată pe timpul lucrărilor de mentenanță.',
# MIME search
'mimesearch' => 'Căutare MIME',
@@ -1623,7 +1836,7 @@ Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.w
# Random page
'randompage' => 'Pagină aleatorie',
-'randompage-nopages' => 'Nu există pagini în spaţiul de nume "$1".',
+'randompage-nopages' => 'Nu există pagini în {{PLURAL:$2|spațiul|spațiile}} de nume: $1.',
# Random redirect
'randomredirect' => 'Redirecționare aleatorie',
@@ -1635,6 +1848,7 @@ Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.w
'statistics-header-edits' => 'Editează statisticile',
'statistics-header-views' => 'Vizualizează statisticile',
'statistics-header-users' => 'Statistici legate de utilizatori',
+'statistics-header-hooks' => 'Alte statistici',
'statistics-articles' => 'Articole',
'statistics-pages' => 'Pagini',
'statistics-pages-desc' => 'Toate paginile din wiki, inclusiv pagini de discuție, redirectări etc.',
@@ -1664,8 +1878,8 @@ Intrările <s>tăiate</s> au fost rezolvate.',
'brokenredirects' => 'Redirecționări greșite',
'brokenredirectstext' => 'Următoarele redirecționări conduc spre articole inexistente:',
-'brokenredirects-edit' => '(modifică)',
-'brokenredirects-delete' => '(şterge)',
+'brokenredirects-edit' => 'modifică',
+'brokenredirects-delete' => 'șterge',
'withoutinterwiki' => 'Pagini fără legături interwiki',
'withoutinterwiki-summary' => 'Următoarele pagini nu se leagă la versiuni ale lor în alte limbi:',
@@ -1772,16 +1986,17 @@ Puteți limita vizualizarea selectând tipul jurnalului, numele de utilizator sa
# Special:Categories
'categories' => 'Categorii',
-'categoriespagetext' => 'Următoarele categorii conţin pagini sau fişiere.
+'categoriespagetext' => '{{PLURAL:$1|Următoarea categorie conține|Următoarele categorii conțin}} pagini sau fișiere.
[[Special:UnusedCategories|Categoriile neutilizate]] nu apar aici.
-Vedeţi şi [[Special:WantedCategories|categoriile dorite]].',
+Vedeți și [[Special:WantedCategories|categoriile dorite]].',
'categoriesfrom' => 'Arată categoriile pornind de la:',
'special-categories-sort-count' => 'ordonează după număr',
'special-categories-sort-abc' => 'sortează alfabetic',
# Special:DeletedContributions
-'deletedcontributions' => 'Contribuții șterse',
-'deletedcontributions-title' => 'Contribuții șterse',
+'deletedcontributions' => 'Contribuții șterse',
+'deletedcontributions-title' => 'Contribuții șterse',
+'sp-deletedcontributions-contribs' => 'contribuții',
# Special:LinkSearch
'linksearch' => 'Legături externe',
@@ -1797,6 +2012,16 @@ Protocoale suportate: <tt>$1</tt>',
'listusersfrom' => 'Afișează utilizatori începând cu:',
'listusers-submit' => 'Arată',
'listusers-noresult' => 'Nici un utilizator găsit.',
+'listusers-blocked' => '(blocat{{GENDER:$1||ă|}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista de utilizatori activi',
+'activeusers-intro' => 'Aceasta este o listă cu utilizatorii care au avut un fel de activitate în {{PLURAL:$1|ultima zi|ultimele $1 zile}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|modificare recentă|modificări recente}} în {{PLURAL:$3|ultima zi|ultimele $3 zile}}',
+'activeusers-from' => 'Afișează utilizatori începând cu:',
+'activeusers-hidebots' => 'Ascunde roboții',
+'activeusers-hidesysops' => 'Ascunde administratorii',
+'activeusers-noresult' => 'Niciun utilizator găsit.',
# Special:Log/newusers
'newuserlogpage' => 'Jurnal utilizatori noi',
@@ -1807,17 +2032,23 @@ Protocoale suportate: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Cont creat automat',
# Special:ListGroupRights
-'listgrouprights' => 'Permisiunile grupurilor de utilizatori',
-'listgrouprights-summary' => 'Mai jos este afișată o listă a grupurilor de utilizatori definită în această wiki, împreună cu permisiunile de acces asociate.
+'listgrouprights' => 'Permisiunile grupurilor de utilizatori',
+'listgrouprights-summary' => 'Mai jos este afișată o listă a grupurilor de utilizatori definită în această wiki, împreună cu permisiunile de acces asociate.
Pot exista [[{{MediaWiki:Listgrouprights-helppage}}|informații adiționale]] despre permisiunile individuale.',
-'listgrouprights-group' => 'Grup',
-'listgrouprights-rights' => 'Permisiuni',
-'listgrouprights-helppage' => 'Help:Group rights',
-'listgrouprights-members' => '(listă de membri)',
-'listgrouprights-addgroup' => 'Poți adăuga {{PLURAL:$2|grupul|grupurile}}: $1',
-'listgrouprights-removegroup' => 'Poți elimina {{PLURAL:$2|grupul|grupurile}}: $1',
-'listgrouprights-addgroup-all' => 'Pot fi adăugate toate grupurile',
-'listgrouprights-removegroup-all' => 'Pot fi eliminate toate grupurile',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Drept acordat</span>
+* <span class="listgrouprights-revoked">Drept revocat</span>',
+'listgrouprights-group' => 'Grup',
+'listgrouprights-rights' => 'Permisiuni',
+'listgrouprights-helppage' => 'Help:Group rights',
+'listgrouprights-members' => '(listă de membri)',
+'listgrouprights-addgroup' => 'Poți adăuga {{PLURAL:$2|grupul|grupurile}}: $1',
+'listgrouprights-removegroup' => 'Poți elimina {{PLURAL:$2|grupul|grupurile}}: $1',
+'listgrouprights-addgroup-all' => 'Pot fi adăugate toate grupurile',
+'listgrouprights-removegroup-all' => 'Pot fi eliminate toate grupurile',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|Poate fi adăugat grupul|Pot fi adăugate grupurile}} pentru contul propriu: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|Poate fi șters grupul|Pot fi șterse grupurile}} pentru contul propriu: $1',
+'listgrouprights-addgroup-self-all' => 'Pot fi adăugate toate grupurile contului propriu',
+'listgrouprights-removegroup-self-all' => 'Pot fi șterse toate grupurile din contul propriu',
# E-mail user
'mailnologin' => 'Nu există adresă de trimitere',
@@ -1892,25 +2123,28 @@ Dacă doriți să eliminați această pagină din lista dv. de pagini urmărite
'enotif_anon_editor' => 'utilizator anonim $1',
'enotif_body' => 'Domnule/Doamnă $WATCHINGUSERNAME,
-pagina $PAGETITLE de la {{SITENAME}} a fost $CHANGEDORCREATED în $PAGEEDITDATE de $PAGEEDITOR, vedeţi la $PAGETITLE_URL versiunea curentă.
+Pagina $PAGETITLE de la {{SITENAME}} a fost $CHANGEDORCREATED la $PAGEEDITDATE de către $PAGEEDITOR. Vedeți la $PAGETITLE_URL versiunea curentă.
$NEWPAGE
-Sumarul utilizatorului: $PAGESUMMARY $PAGEMINOREDIT
+Descrierea lăsată de utilizator: $PAGESUMMARY $PAGEMINOREDIT
-Contactaţi utilizatorul:
-email: $PAGEEDITOR_EMAIL
+Puteți contacta utilizatorul:
+e-mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Nu vor mai fi alte notificări în cazul unor viitoare modificări în afara cazului în care vizitaţi pagina. Puteţi de asemenea reseta notificările pentru alte pagini urmărite.
+Nu veți mai primi notificări în cazul unor viitoare modificări în afara cazului în care vizitați pagina. Puteți de asemenea reseta notificările pentru alte pagini urmărite.
- Al dvs. amic, sistemul de notificare {{SITENAME}}
+ Al dvs. amic, sistemul de notificare de la {{SITENAME}}
--
-Pentru a modifica preferinţele listei de urmărire, vizitaţi
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Pentru a modifica preferințele listei de urmărire vizitați
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Pentru a nu mai urmări pagina vizitați
+$UNWATCHURL
-Asistenţă şi suport:
+Asistență și suport:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1922,9 +2156,10 @@ Asistenţă şi suport:
'exblank' => 'pagina era goală',
'delete-confirm' => 'Şterge "$1"',
'delete-legend' => 'Şterge',
-'historywarning' => 'Atenţie! Pagina pe care o ştergi are istorie:',
+'historywarning' => "'''Atenție:''' istoricul paginii pe care o ștergeți conține aproximativ $1 {{PLURAL:$1|versiune|versiuni}}:",
'confirmdeletetext' => 'Sunteți pe cale să ștergeți permanent o pagină sau imagine din baza de date, împreună cu istoria asociată acesteia. Vă rugăm să confirmați alegerea făcută de dvs., faptul că înțelegeți consecințele acestei acțiuni și faptul că o faceți în conformitate cu [[{{MediaWiki:Policy-url}}|Politica oficială]].',
'actioncomplete' => 'Acțiune completă',
+'actionfailed' => 'Acțiunea a eșuat',
'deletedtext' => 'Pagina "<nowiki>$1</nowiki>" a fost ștearsă. Vedeți $2 pentru o listă a elementelor șterse recent.',
'deletedarticle' => 'a șters "[[$1]]"',
'suppressedarticle' => 'eliminate "[[$1]]"',
@@ -1947,19 +2182,20 @@ Asistenţă şi suport:
continuă cu atenție.',
# Rollback
-'rollback' => 'Editări de revenire',
-'rollback_short' => 'Revenire',
-'rollbacklink' => 'revenire',
-'rollbackfailed' => 'Revenirea nu s-a putut face',
-'cantrollback' => 'Nu se poate reveni; ultimul contribuitor este autorul acestui articol.',
-'alreadyrolled' => 'Nu se poate reveni peste ultima modificare a articolului [[:$1]] făcută de către [[User:$2|$2]] ([[User talk:$2|discuție]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); altcineva a modificat articolul sau a revenit deja.
+'rollback' => 'Editări de revenire',
+'rollback_short' => 'Revenire',
+'rollbacklink' => 'revenire',
+'rollbackfailed' => 'Revenirea nu s-a putut face',
+'cantrollback' => 'Nu se poate reveni; ultimul contribuitor este autorul acestui articol.',
+'alreadyrolled' => 'Nu se poate reveni peste ultima modificare a articolului [[:$1]] făcută de către [[User:$2|$2]] ([[User talk:$2|discuție]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); altcineva a modificat articolul sau a revenit deja.
Ultima editare a fost făcută de către [[User:$3|$3]] ([[User talk:$3|discuție]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Descrierea modificărilor a fost: „''$1''”.", # only shown if there is an edit comment
-'revertpage' => 'Anularea modificărilor efectuate de către [[Special:Contributions/$2|$2]] ([[User talk:$2|discuție]]) și revenire la ultima versiune de către [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Anularea modificărilor făcute de $1;
+'editcomment' => "Descrierea modificărilor a fost: „''$1''”.",
+'revertpage' => 'Anularea modificărilor efectuate de către [[Special:Contributions/$2|$2]] ([[User talk:$2|discuție]]) și revenire la ultima versiune de către [[User:$1|$1]]',
+'revertpage-nouser' => 'Anularea modificărilor efectuate de (nume de utilizator șters) și revenirea la ultima modificare de către [[User:$1|$1]]',
+'rollback-success' => 'Anularea modificărilor făcute de $1;
revenire la ultima versiune de $2.',
-'sessionfailure' => 'Se pare că este o problemă cu sesiunea de autentificare; această acțiune a fost oprită ca o precauție împotriva hijack. Apăsați "back" și reîncărcați pagina de unde ați venit, apoi reîncercați.',
+'sessionfailure' => 'Se pare că este o problemă cu sesiunea de autentificare; această acțiune a fost oprită ca o precauție împotriva hijack. Apăsați "back" și reîncărcați pagina de unde ați venit, apoi reîncercați.',
# Protect
'protectlogpage' => 'Jurnal protecții',
@@ -1975,7 +2211,7 @@ revenire la ultima versiune de $2.',
'protectexpiry' => 'Expiră:',
'protect_expiry_invalid' => 'Timpul de expirare nu este valid.',
'protect_expiry_old' => 'Timpul de expirare este în trecut.',
-'protect-unchain' => 'Deblochează permisiunile de mutare',
+'protect-unchain-permissions' => 'Deblochează mai multe opțiuni de protejare',
'protect-text' => "Poți vizualiza sau modifica nivelul de protecție pentru pagina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nu poți schimba nivelurile de protecție fiind blocat.
Iată configurația curentă a paginii '''$1''':",
@@ -2005,7 +2241,7 @@ Puteți schimba nivelul de protejare al acestei pagini, dar asta nu va afecta pr
** Modificări neproductive
** Pagină cu trafic mare',
'protect-edit-reasonlist' => 'Modifică motivele protejării',
-'protect-expiry-options' => '1 oră:1 hour,1 zi:1 day,1 săptămână:1 week,2 săptămâni:2 weeks,1 lună:1 month,3 luni:3 months,6 luni:6 months,1 an:1 year,infinit:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 oră:1 hour,1 zi:1 day,1 săptămână:1 week,2 săptămâni:2 weeks,1 lună:1 month,3 luni:3 months,6 luni:6 months,1 an:1 year,infinit:infinite',
'restriction-type' => 'Permisiune:',
'restriction-level' => 'Nivel de restricție:',
'minimum-size' => 'Mărime minimă',
@@ -2042,6 +2278,7 @@ S-ar putea ca această legătură să fie greșită, sau revizia a fost restaura
'undelete-nodiff' => 'Nu s-a găsit vreo revizie anterioară.',
'undeletebtn' => 'Recuperează',
'undeletelink' => 'vezi/recuperează',
+'undeleteviewlink' => 'vezi',
'undeletereset' => 'Resetează',
'undeleteinvert' => 'Exclude spațiul',
'undeletecomment' => 'Motiv:',
@@ -2080,19 +2317,24 @@ $1',
'contributions-title' => 'Contribuțiile utilizatorului pentru $1',
'mycontris' => 'Contribuții',
'contribsub2' => 'Pentru $1 ($2)',
-'nocontribs' => 'Nu a fost găsită nici o modificare care să satisfacă acest criteriu.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nu a fost găsită nici o modificare care să satisfacă acest criteriu.',
'uctop' => '(sus)',
'month' => 'Din luna (și dinainte):',
'year' => 'Începând cu anul (și precedenții):',
-'sp-contributions-newbies' => 'Arată doar contribuțiile conturilor noi',
-'sp-contributions-newbies-sub' => 'Pentru începători',
-'sp-contributions-newbies-title' => 'Contribuțiile utilizatorului pentru conturile noi',
-'sp-contributions-blocklog' => 'jurnal blocări',
-'sp-contributions-logs' => 'jurnale',
-'sp-contributions-search' => 'Caută contribuții',
-'sp-contributions-username' => 'Adresă IP sau nume de utilizator:',
-'sp-contributions-submit' => 'Caută',
+'sp-contributions-newbies' => 'Arată doar contribuțiile conturilor noi',
+'sp-contributions-newbies-sub' => 'Pentru începători',
+'sp-contributions-newbies-title' => 'Contribuțiile utilizatorului pentru conturile noi',
+'sp-contributions-blocklog' => 'jurnal blocări',
+'sp-contributions-deleted' => 'contribuțiile șterse ale utilizatorului',
+'sp-contributions-logs' => 'jurnale',
+'sp-contributions-talk' => 'discuție',
+'sp-contributions-userrights' => 'administrarea permisiunilor de utilizator',
+'sp-contributions-blocked-notice' => 'Acest utilizator este momentan blocat.
+Ultima blocare este indicată mai jos pentru informare:',
+'sp-contributions-search' => 'Caută contribuții',
+'sp-contributions-username' => 'Adresă IP sau nume de utilizator:',
+'sp-contributions-submit' => 'Caută',
# What links here
'whatlinkshere' => 'Ce trimite aici',
@@ -2115,6 +2357,7 @@ $1',
# Block/unblock
'blockip' => 'Blochează utilizator / IP',
+'blockip-title' => 'Blochează utilizator',
'blockip-legend' => 'Blochează utilizator / IP',
'blockiptext' => "Pentru a bloca un utilizator completați rubricile de mai jos.<br />
'''Respectați [[{{MediaWiki:Policy-url}}|politica de blocare]].'''<br />
@@ -2138,7 +2381,7 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
'ipbenableautoblock' => 'Blochează automat ultima adresă IP folosită de acest utilizator și toate adresele de la care încearcă să editeze în viitor',
'ipbsubmit' => 'Blochează acest utilizator',
'ipbother' => 'Alt termen:',
-'ipboptions' => '2 ore:2 hours,1 zi:1 day,3 zile:3 days,1 săptămână:1 week,2 săptămâni:2 weeks,1 lună:1 month,3 luni:3 months,6 luni:6 months,1 an:1 year,infinit:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ore:2 hours,1 zi:1 day,3 zile:3 days,1 săptămână:1 week,2 săptămâni:2 weeks,1 lună:1 month,3 luni:3 months,6 luni:6 months,1 an:1 year,infinit:infinite',
'ipbotheroption' => 'altul',
'ipbotherreason' => 'Motiv diferit/adițional:',
'ipbhidename' => 'Ascunde numele de utilizator la editare și afișare',
@@ -2167,9 +2410,11 @@ Vezi [[Special:IPBlockList|lista de adrese IP și conturi blocate]] pentru a rev
'ipblocklist-sh-tempblocks' => '$1 blocări temporare',
'ipblocklist-sh-addressblocks' => '$1 blocări de adrese IP',
'ipblocklist-submit' => 'Caută',
+'ipblocklist-localblock' => 'Blocare locală',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Altă blocare|Alte $1 blocări}}',
'blocklistline' => '$1, $2 a blocat $3 ($4)',
'infiniteblock' => 'termen nelimitat',
-'expiringblock' => 'expiră la $1',
+'expiringblock' => 'expiră în $1 la $2',
'anononlyblock' => 'doar anonimi',
'noautoblockblock' => 'autoblocare dezactivată',
'createaccountblock' => 'crearea de conturi blocată',
@@ -2184,7 +2429,10 @@ Vezi [[Special:IPBlockList|lista de adrese IP și conturi blocate]] pentru a rev
'autoblocker' => 'Autoblocat fiindcă folosiți aceeași adresă IP ca și „[[User:$1|$1]]”.
Motivul blocării utilizatorului $1 este: „$2”',
'blocklogpage' => 'Jurnal blocări',
-'blocklog-fulllog' => 'Întregul jurnal al blocărilor',
+'blocklog-showlog' => 'Acest utilizator a fost blocat în trecut.
+Jurnalul blocărilor este indicat mai jos:',
+'blocklog-showsuppresslog' => 'Acest utilizator a fost blocat și suprimat în trecut.
+Jurnalul suprimărilor este indicat mai jos:',
'blocklogentry' => 'a blocat "[[$1]]" pe o perioadă de $2 $3',
'reblock-logentry' => 'a fost schimbată blocarea pentru [[$1]] cu data expirării la $2 $3',
'blocklogtext' => 'Acest jurnal cuprinde acțiunile de blocare și deblocare. Adresele IP blocate automat nu sunt afișate. Vizitați [[Special:IPBlockList|lista de adrese blocate]] pentru o listă explicită a adreselor blocate în acest moment.',
@@ -2203,10 +2451,12 @@ Motivul blocării utilizatorului $1 este: „$2”',
'ipb_already_blocked' => '"$1" este deja blocat',
'ipb-needreblock' => '== Deja blocat ==
$1 este deja blocat. Vrei să schimbi parametrii?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Altă blocare|Alte blocări}}',
'ipb_cant_unblock' => 'Eroare: nu găsesc identificatorul $1. Probabil a fost deja deblocat.',
'ipb_blocked_as_range' => 'Eroare: Adresa IP $1 nu este blocată direct deci nu poate fi deblocată.
Face parte din area de blocare $2, care nu poate fi deblocată.',
'ip_range_invalid' => 'Serie IP invalidă.',
+'ip_range_toolarge' => 'Blocările mai mari de /$1 nu sunt permise.',
'blockme' => 'Blochează-mă',
'proxyblocker' => 'Blocaj de proxy',
'proxyblocker-disabled' => 'Această funcție este dezactivată.',
@@ -2215,6 +2465,7 @@ Face parte din area de blocare $2, care nu poate fi deblocată.',
'sorbsreason' => 'Adresa dumneavoastră IP este listată ca un proxy deschis în DNSBL.',
'sorbs_create_account_reason' => 'Adresa dvs. IP este listată la un proxy deschis în lista neagră DNS. Nu vă puteți crea un cont',
'cant-block-while-blocked' => 'Nu poți bloca alți utilizatori cât timp și tu ești blocat.',
+'cant-see-hidden-user' => 'Utilizatorul pe care încercați să îl blocați este deja blocat și ascuns. Atata timp cât nu aveți drept de hideuser, nu puteți vedea sau modifica blocarea acestuia.',
# Developer tools
'lockdb' => 'Blochează baza de date',
@@ -2266,6 +2517,7 @@ automat odată cu aceasta '''afară de cazul că''':
În oricare din cazurile de mai sus va trebui să muți sau să unifici
manual paginile de discuții, dacă dorești acest lucru.",
'movearticle' => 'Mută pagina',
+'moveuserpage-warning' => "'''Atenție''': sunteți pe cale să redenumiți o pagină de utilizator. Vă rugăm să rețineți că singura redenumită va fi pagina, nu și utilizatorul.",
'movenologin' => 'Nu ești autentificat',
'movenologintext' => 'Trebuie să fii un utilizator înregistrat și să te [[Special:UserLogin|autentifici]] pentru a muta o pagină.',
'movenotallowed' => 'Nu ai permisiunea să muți pagini.',
@@ -2276,7 +2528,7 @@ manual paginile de discuții, dacă dorești acest lucru.",
'move-watch' => 'Urmărește această pagină',
'movepagebtn' => 'Mută pagina',
'pagemovedsub' => 'Pagina a fost mutată',
-'movepage-moved' => '\'\'\'Pagina "$1" a fost mutată la pagina "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Pagina "$1" a fost mutată la pagina "$2"\'\'\'',
'movepage-moved-redirect' => 'O redirecționare a fost creată.',
'movepage-moved-noredirect' => 'Crearea redirecționărilor a fost suprimată.',
'articleexists' => 'O pagină cu același nume există deja, sau numele pe care l-ați ales este invalid. Sunteți rugat să alegeți un alt nume.',
@@ -2318,6 +2570,14 @@ Articolul de destinație "[[:$1]]" există deja. Doriți să îl ștergeți pent
'imageinvalidfilename' => 'Numele fișierului destinație este invalid',
'fix-double-redirects' => 'Actualizează toate redirecționările care trimit la titlul original',
'move-leave-redirect' => 'Lasă în urmă o redirecționare',
+'protectedpagemovewarning' => "'''Atenție:''' această pagină a fost protejată astfel încât poate fi redenumită doar de către administratori.
+Ultima intrare în jurnal este afișată mai jos pentru referință:",
+'semiprotectedpagemovewarning' => "'''Observație: această pagină a fost protejată, putând fi redenumiră doar de către utilizatorii înregistrați.'''
+Ultima intrare în jurnal este afișată mai jos pentru referință:",
+'move-over-sharedrepo' => '== Fișierul există ==
+[[:$1]] există deja într-un depozit împărțit. Mutând un fișier la acest titlu va suprapune fișierul împărțit și îl va face inaccesibil.',
+'file-exists-sharedrepo' => 'Numele ales al fișierului este deja în utilizare într-un depozit împărțit.
+Alegeți un alt nume.',
# Export
'export' => 'Exportă pagini',
@@ -2339,15 +2599,21 @@ Pentru a exporta, introduceți titlurile în căsuța de mai jos, unul pe linie,
'export-pagelinks' => 'Includere pagini legate de la o adâncime de:',
# Namespace 8 related
-'allmessages' => 'Toate mesajele',
-'allmessagesname' => 'Nume',
-'allmessagesdefault' => 'Textul standard',
-'allmessagescurrent' => 'Textul curent',
-'allmessagestext' => 'Aceasta este lista completă a mesajelor disponibile în domeniul MediaWiki.
+'allmessages' => 'Toate mesajele',
+'allmessagesname' => 'Nume',
+'allmessagesdefault' => 'Textul standard',
+'allmessagescurrent' => 'Textul curent',
+'allmessagestext' => 'Aceasta este lista completă a mesajelor disponibile în domeniul MediaWiki.
Vă rugăm să vizitați [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] și [http://translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.",
-'allmessagesfilter' => 'Filtrare în funcție de titlul mesajului:',
-'allmessagesmodified' => 'Arată doar mesajele modificate',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.",
+'allmessages-filter-legend' => 'Filtru',
+'allmessages-filter' => 'Filtru după statutul de modificare:',
+'allmessages-filter-unmodified' => 'Nemodificat',
+'allmessages-filter-all' => 'Toți',
+'allmessages-filter-modified' => 'Modificat',
+'allmessages-prefix' => 'Filtru după prefix:',
+'allmessages-language' => 'Limbă:',
+'allmessages-filter-submit' => 'Du-te',
# Thumbnails
'thumbnail-more' => 'Extinde',
@@ -2357,6 +2623,9 @@ Vă rugăm să vizitați [http://www.mediawiki.org/wiki/Localisation MediaWiki L
'djvu_no_xml' => 'Imposibil de obținut XML-ul pentru fișierul DjVu',
'thumbnail_invalid_params' => 'Parametrii invalizi ai imaginii miniatură',
'thumbnail_dest_directory' => 'Nu poate fi creat directorul destinație',
+'thumbnail_image-type' => 'Acest tip de imagine nu este suportat',
+'thumbnail_gd-library' => 'Configurație incompletă a bibliotecii GD: lipsește funcția $1',
+'thumbnail_image-missing' => 'Fișierul următor nu poate fi găsit: $1',
# Special:Import
'import' => 'Importă pagini',
@@ -2422,6 +2691,7 @@ Un dosar temporar lipsește.',
'tooltip-ca-viewsource' => 'Această pagină este protejată. Puteți vizualiza doar codul sursă',
'tooltip-ca-history' => 'Versiunile anterioare ale paginii și autorii lor.',
'tooltip-ca-protect' => 'Protejează această pagină.',
+'tooltip-ca-unprotect' => 'Deprotejează această pagină',
'tooltip-ca-delete' => 'Șterge această pagină.',
'tooltip-ca-undelete' => 'Restaureaza editările făcute acestui document, înainte să fi fost șters.',
'tooltip-ca-move' => 'Redenumește această pagină.',
@@ -2432,6 +2702,7 @@ Un dosar temporar lipsește.',
'tooltip-search-fulltext' => 'Caută paginile pentru acest text',
'tooltip-p-logo' => 'Pagina principală',
'tooltip-n-mainpage' => 'Vedeți pagina principală',
+'tooltip-n-mainpage-description' => 'Vizitați pagina principală',
'tooltip-n-portal' => 'Despre proiect, ce puteți face, unde găsiți soluții.',
'tooltip-n-currentevents' => 'Informații despre evenimentele curente',
'tooltip-n-recentchanges' => 'Lista ultimelor schimbări realizate în acest wiki.',
@@ -2479,6 +2750,7 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'chick.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Chick */',
'simple.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Simple */',
'modern.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Modern */',
+'vector.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Vector */',
'print.css' => '/* CSS plasate aici vor afecta modul în care paginile vor fi imprimate */',
# Metadata
@@ -2489,10 +2761,12 @@ Permite adăugarea unui motiv în descrierea modificărilor',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizator anonim|Utilizatori anonimi}} ai {{SITENAME}}',
'siteuser' => 'Utilizator {{SITENAME}} $1',
-'lastmodifiedatby' => 'Pagina a fost modificată în $1, la $2 de către $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'utlizator anonim $1 al {{SITENAME}}',
+'lastmodifiedatby' => 'Pagina a fost modificată în $1, la $2 de către $3.',
'othercontribs' => 'Bazat pe munca lui $1.',
'others' => 'alții',
'siteusers' => '{{PLURAL:$2|Utilizator|Utilizatori}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|utilizator anonim|utilizatori anonimi}} $1 {{PLURAL:$2|al|ai}} {{SITENAME}}',
'creditspage' => 'Credențiale',
'nocredits' => 'Nu există credențiale disponibile pentru această pagină.',
@@ -2521,6 +2795,7 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'skinname-chick' => 'Şic',
'skinname-simple' => 'Simplu',
'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Întodeauna afișează PNG',
@@ -2530,11 +2805,22 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'mw_math_modern' => 'Recomandat pentru browser-ele moderne',
'mw_math_mathml' => 'MathML dacă este posibil (experimental)',
+# Math errors
+'math_failure' => 'Nu s-a putut interpreta',
+'math_unknown_error' => 'eroare necunoscută',
+'math_unknown_function' => 'funcție necunoscută',
+'math_lexing_error' => 'eroare lexicală',
+'math_syntax_error' => 'eroare de sintaxă',
+'math_image_error' => 'Conversiune în PNG eșuată',
+'math_bad_tmpdir' => 'Nu se poate crea sau nu se poate scrie în directorul temporar pentru formule matematice',
+'math_bad_output' => 'Nu se poate crea sau nu se poate scrie în directorul de ieșire pentru formule matematice',
+'math_notexvc' => 'Lipsește executabilul texvc; vezi math/README pentru configurare.',
+
# Patrolling
'markaspatrolleddiff' => 'Marchează ca patrulat',
'markaspatrolledtext' => 'Marchează acest articol ca patrulat',
'markedaspatrolled' => 'A fost marcat ca patrulat',
-'markedaspatrolledtext' => 'Modificarea selectată a fost marcată ca patrulată.',
+'markedaspatrolledtext' => 'Modificarea selectată a [[:$1]] a fost marcată ca patrulată.',
'rcpatroldisabled' => 'Opțiunea de patrulare a modificărilor recente este dezactivată',
'rcpatroldisabledtext' => 'Patrularea modificărilor recente este în prezent dezactivată.',
'markedaspatrollederror' => 'Nu se poate marca ca patrulat',
@@ -2564,13 +2850,10 @@ $1',
'previousdiff' => '← Diferența anterioară',
'nextdiff' => 'Diferența următoare →',
-# Visual comparison
-'visual-comparison' => 'Comparare vizuală',
-
# Media information
'mediawarning' => "'''Atenție''': Acest tip de fișier poate conține cod periculos.
Executându-l, sistemul dvs. poate fi compromis.",
-'imagemaxsize' => 'Limitează dimensiunea imaginilor, pe paginile de descriere, la:',
+'imagemaxsize' => "Limita mărimii imaginilor:<br />''(pentru paginile de descriere)''",
'thumbsize' => 'Dimensiunea miniaturii:',
'widthheight' => '$1x$2',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagină|pagini}}',
@@ -2580,6 +2863,8 @@ Executându-l, sistemul dvs. poate fi compromis.",
'svg-long-desc' => '(fișier SVG, cu dimensiunea nominală de $1 × $2 pixeli, mărime fișier: $3)',
'show-big-image' => 'Mărește rezoluția imaginii',
'show-big-image-thumb' => '<small>Mărimea acestei previzualizări: $1 × $2 pixeli</small>',
+'file-info-gif-looped' => 'în buclă',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|imagine|imagini}}',
# Special:NewFiles
'newimages' => 'Galeria de imagini noi',
@@ -2616,7 +2901,7 @@ Altele vor fi ascunse implicit.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lățime',
@@ -2743,14 +3028,14 @@ Altele vor fi ascunse implicit.
'exif-unknowndate' => 'Dată necunoscută',
-'exif-orientation-1' => 'Normală', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Oglindită orizontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotită cu 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Oglindită vertical', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotită 90° în sens opus acelor de ceasornic și oglindită vertical', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotită 90° în sensul acelor de ceasornic', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotită 90° în sensul acelor de ceasornic și oglindită vertical', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotită 90° în sens opus acelor de ceasornic', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normală',
+'exif-orientation-2' => 'Oglindită orizontal',
+'exif-orientation-3' => 'Rotită cu 180°',
+'exif-orientation-4' => 'Oglindită vertical',
+'exif-orientation-5' => 'Rotită 90° în sens opus acelor de ceasornic și oglindită vertical',
+'exif-orientation-6' => 'Rotită 90° în sensul acelor de ceasornic',
+'exif-orientation-7' => 'Rotită 90° în sensul acelor de ceasornic și oglindită vertical',
+'exif-orientation-8' => 'Rotită 90° în sens opus acelor de ceasornic',
'exif-planarconfiguration-1' => 'format compact',
'exif-planarconfiguration-2' => 'format plat',
@@ -2872,7 +3157,7 @@ Altele vor fi ascunse implicit.
'exif-gpsmeasuremode-2' => 'măsurătoare bidimensională',
'exif-gpsmeasuremode-3' => 'măsurătoare tridimensională',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometri pe oră',
'exif-gpsspeed-m' => 'Mile pe oră',
'exif-gpsspeed-n' => 'Noduri',
@@ -2891,6 +3176,7 @@ Altele vor fi ascunse implicit.
'watchlistall2' => 'toate',
'namespacesall' => 'toate',
'monthsall' => 'toate',
+'limitall' => 'toate',
# E-mail address confirmation
'confirmemail' => 'Confirmă adresa de email',
@@ -2914,17 +3200,17 @@ Serverul de mail a returnat: $1',
'confirmemail_loggedin' => 'Adresa de email a fost confirmată.',
'confirmemail_error' => 'Ceva nu a funcționat la salvarea confirmării.',
'confirmemail_subject' => 'Confirmare adresă email la {{SITENAME}}',
-'confirmemail_body' => 'Cineva, probabil dumneavoastră de la adresa IP $1, şi-a înregistrat un cont "$2" cu această adresă de email la {{SITENAME}}.
+'confirmemail_body' => 'Cineva, probabil dumneavoastră de la adresa IP $1, și-a înregistrat la {{SITENAME}} contul „$2” cu această adresă de e-mail.
-Pentru a confirma că acest cont aparţine într-adevăr dumneavoastră şi să vă activaţi funcţionalităţile email la {{SITENAME}}, deschideţi această legătură în browser:
+Pentru a confirma că acest cont vă aparține într-adevăr și pentru a vă activa funcțiile de e-mail de la {{SITENAME}}, accesați pagina:
$3
-Dacă *nu* sunteţi dumneavoastră, deschideţi această legătură în browser:
+Dacă însă NU e contul dumneavoastră, accesați pagina:
$5
-Codul de confirmare va expira la $4.',
+Acest cod de confirmare va expira la $4.',
'confirmemail_invalidated' => 'Confirmarea adresei de e-mail a fost anulată',
'invalidateemail' => 'Anulează confirmarea adresei de e-mail',
@@ -3017,7 +3303,7 @@ Puteți folosi în schimb [[Special:Watchlist/edit|editorul standard]].',
'duplicate-defaultsort' => '\'\'\'Atenție:\'\'\' Cheia de sortare implicită "$2" o înlocuiește pe precedenta "$1".',
# Special:Version
-'version' => 'Versiune', # Not used as normal message but as header for the special page itself
+'version' => 'Versiune',
'version-extensions' => 'Extensii instalate',
'version-specialpages' => 'Pagini speciale',
'version-parserhooks' => 'Hook-uri parser',
@@ -3031,7 +3317,7 @@ Puteți folosi în schimb [[Special:Watchlist/edit|editorul standard]].',
'version-skin-extension-functions' => 'Funcțiile extensiei interfeței',
'version-hook-name' => 'Nume hook',
'version-hook-subscribedby' => 'Subscris de',
-'version-version' => 'Versiune',
+'version-version' => '(Versiune $1)',
'version-license' => 'Licență',
'version-software' => 'Software instalat',
'version-software-product' => 'Produs',
@@ -3112,4 +3398,15 @@ Introdu numele fișierului fără prefixul "{{ns:file}}:".',
'dberr-outofdate' => 'De reținut ca indexarea conținutului nostru de către ei poate să nu fie actualizată.',
'dberr-cachederror' => 'Următoarea pagină este o copie în cache a paginii cerute, s-ar putea să nu fie actualizată.',
+# HTML forms
+'htmlform-invalid-input' => 'Există probleme la valorile introduse',
+'htmlform-select-badoption' => 'Valoarea specificată nu este o opțiune validă.',
+'htmlform-int-invalid' => 'Valoarea specificată nu este un întreg.',
+'htmlform-float-invalid' => 'Valoarea specificată nu este un număr.',
+'htmlform-int-toolow' => 'Valoarea specificată este sub maximul $1',
+'htmlform-int-toohigh' => 'Valoarea specificată este peste maximul $1',
+'htmlform-submit' => 'Trimite',
+'htmlform-reset' => 'Anulează modificările',
+'htmlform-selectorother-other' => 'Altul',
+
);
diff --git a/languages/messages/MessagesRoa_rup.php b/languages/messages/MessagesRoa_rup.php
index 2bef34ff..7c35a06c 100644
--- a/languages/messages/MessagesRoa_rup.php
+++ b/languages/messages/MessagesRoa_rup.php
@@ -45,12 +45,14 @@ $messages = array(
'november-gen' => 'Brumar',
'december-gen' => 'Andreulu',
-'article' => 'Articlu',
-'cancel' => 'Alasã',
+'article' => 'Articlu',
+'cancel' => 'Alasã',
+'mytalk' => 'Zburare-a mea',
+'navigation' => 'Navigatsia',
+
+# Cologne Blue skin
'qbedit' => 'Alãxiri',
'qbspecialpages' => 'Frãndzã spetsiale',
-'mytalk' => 'Zburare-a mea',
-'navigation' => 'Navigatsia',
'help' => 'Agiutor',
'search' => 'Caftã',
@@ -105,8 +107,6 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
'notloggedin' => 'Nu hits ligats',
'createaccount' => 'Fãtsets Isape',
'gotaccountlink' => 'Ligats-vã',
-'youremail' => 'E-mail:',
-'username' => 'Numa di ufilizitor:',
# Edit pages
'summary' => 'Rezime:',
@@ -126,12 +126,16 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
'mypreferences' => 'Alidzerle-a meale',
'prefsnologin' => 'Nu hits ligats',
'searchresultshead' => 'Caftã',
+'youremail' => 'E-mail:',
+'username' => 'Numa di ufilizitor:',
# Recent changes
'recentchanges' => 'Alãxiri',
# Recent changes linked
-'recentchangeslinked' => 'Alãxiri ligate',
+'recentchangeslinked' => 'Alãxiri ligate',
+'recentchangeslinked-feed' => 'Alãxiri ligate',
+'recentchangeslinked-toolbox' => 'Alãxiri ligate',
# Upload
'upload' => 'Pitritsets file',
@@ -143,8 +147,8 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
# Random page
'randompage' => 'Frãndzã di nipandicã',
-'brokenredirects-edit' => '(Alãxiri)',
-'brokenredirects-delete' => '(Ashcirdzire)',
+'brokenredirects-edit' => 'Alãxiri',
+'brokenredirects-delete' => 'Ashcirdzire',
# Miscellaneous special pages
'newpages-username' => 'Numa di ufilizitor:',
diff --git a/languages/messages/MessagesRoa_tara.php b/languages/messages/MessagesRoa_tara.php
index 78558c2b..ff81814e 100644
--- a/languages/messages/MessagesRoa_tara.php
+++ b/languages/messages/MessagesRoa_tara.php
@@ -8,6 +8,7 @@
* @file
*
* @author Joetaras
+ * @author McDutchie
*/
$specialPageAliases = array(
@@ -51,6 +52,7 @@ $messages = array(
'tog-enotifminoredits' => "Manneme 'na mail quanne onne state fatte cangiaminde stuèdeche sus 'a pàgene",
'tog-enotifrevealaddr' => "Fa vedè l'indirizze e-mail jndr'à le e-mail de notifiche",
'tog-shownumberswatching' => "Fa vedè 'u numere de le utinde ca uardene",
+'tog-oldsig' => "Andeprime d'a firme esistende:",
'tog-fancysig' => "Firma grezze cumme a 'nu teste de Uicchi (senza collegamende automatiche)",
'tog-externaleditor' => "Ause n'editore esterne pe default (sulamende pe l'esperte, abbesogne de 'na configurazione speciele sus a 'u combiuter tue)",
'tog-externaldiff' => "Ause na differenze esterne pe default (sulamende pe l'esperte, abbesogne de 'na configuraziona speciele sus a 'u computer tue)",
@@ -72,6 +74,13 @@ $messages = array(
'underline-never' => 'Maje',
'underline-default' => "Valore de default d'u browser",
+# Font style option in Special:Preferences
+'editfont-style' => "Stile d'u carattere jndr'à l'area de le cangiaminde:",
+'editfont-default' => "Valore de default d'u browser",
+'editfont-monospace' => 'Carattere Monospaced',
+'editfont-sansserif' => 'Carattere Sans-serif',
+'editfont-serif' => 'Carattere Serif',
+
# Dates
'sunday' => 'Dumèneche',
'monday' => 'Lunedìe',
@@ -131,7 +140,7 @@ $messages = array(
'category-media-header' => 'Media jndr\'à categorie "$1"',
'category-empty' => "''Sta categorije pe mò non ge tène manghe 'na pàgene e manghe 'nu media.''",
'hidden-categories' => '{{PLURAL:$1|categorije scunnute|categorije scunnute}}',
-'hidden-category-category' => 'Categorije scunnute', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorije scunnute',
'category-subcat-count' => "{{PLURAL:$2|Sta categorije tène sulamende 'na sottecategorije.|Sta categorije tène {{PLURAL:$1|'na sottecategorije|$1 sottecategorije}}, sus a 'nu totele de $2.}}",
'category-subcat-count-limited' => 'Sta categorije tène {{PLURAL:$1|sottecategorije|le seguende $1 sottecategorije}}.',
'category-article-count' => "{{PLURAL:$2|Sta categorije condiene sulamende 'a seguenda pàgene.|{{PLURAL:$1|'A seguende pàgene jè|le seguende $1 pàggene sonde }} condenute jndr'à sta categorije, sus a $2 totele.}}",
@@ -139,6 +148,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Sta categorije condene sulamende 'u seguende file.|{{PLURAL:$1|'U seguende file stè |le seguende $1 files stonne}} jndr'à sta categorije, sus a $2 totele.}}",
'category-file-count-limited' => "{{PLURAL:$1|'U seguende file jè|$1 Le seguende file sonde}} jndr'à categorije corrende.",
'listingcontinuesabbrev' => 'cond.',
+'index-category' => 'Pàggene indicizzate',
+'noindex-category' => 'Pàggene none indicizzate',
'mainpagetext' => "'''MediaUicchi ha state 'nstallete.'''",
'mainpagedocfooter' => "Vè vide [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] pe l'mbormaziune sus a cumme s'ause 'u softuer wiki.
@@ -148,10 +159,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste d'a poste de MediaWiki]",
-'about' => 'Sus a',
-'article' => 'Pàgene de le condenute',
-'newwindow' => "(iapre jndr'à 'na fenestra nova)",
-'cancel' => 'Scangìlle',
+'about' => 'Sus a',
+'article' => 'Pàgene de le condenute',
+'newwindow' => "(iapre jndr'à 'na fenestra nova)",
+'cancel' => 'Scangìlle',
+'moredotdotdot' => 'De cchiù...',
+'mypage' => "'A pàgene meje",
+'mytalk' => 'Ngazzaminde mie',
+'anontalk' => "'Ngazzaminde pe quiste IP",
+'navigation' => 'Naveghesce',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Cirche',
'qbbrowse' => 'Sfoglie',
'qbedit' => 'Cange',
@@ -159,15 +178,35 @@ $messages = array(
'qbpageinfo' => 'Condeste',
'qbmyoptions' => 'Pàggene mije',
'qbspecialpages' => 'Pàggene speciale',
-'moredotdotdot' => 'De cchiù...',
-'mypage' => "'A pàgene meje",
-'mytalk' => 'Ngazzaminde mie',
-'anontalk' => "'Ngazzaminde pe quiste IP",
-'navigation' => 'Naveghesce',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => "Aggiunge 'na discussiona",
+'vector-action-delete' => 'Scangille',
+'vector-action-move' => 'Spuèste',
+'vector-action-protect' => 'Protegge',
+'vector-action-undelete' => 'Repristine',
+'vector-action-unprotect' => 'Sprotegge',
+'vector-namespace-category' => 'Categorije',
+'vector-namespace-help' => "Pàgene d'aijute",
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pàgene',
+'vector-namespace-media' => 'Pàgene de le media',
+'vector-namespace-mediawiki' => 'Messagge',
+'vector-namespace-project' => 'Pàgene de pruggette',
+'vector-namespace-special' => 'Pàgena speciale',
+'vector-namespace-talk' => "'Ngazzamende",
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => "Pàgena de l'utende",
+'vector-view-create' => 'Ccreje',
+'vector-view-edit' => 'Cange',
+'vector-view-history' => "Vide 'u cunde",
+'vector-view-view' => 'Ligge',
+'vector-view-viewsource' => "Vide 'u sorgende",
+'actions' => 'Aziune',
+'namespaces' => 'Namespace',
+'variants' => 'Variande',
'errorpagetitle' => 'Errore',
'returnto' => 'Tuerne a $1.',
@@ -217,18 +256,22 @@ $messages = array(
'otherlanguages' => "Jndr'à l'otre lènghe",
'redirectedfrom' => '(Riderette da $1)',
'redirectpagesub' => 'Pàgene de redirezione',
-'lastmodifiedat' => "Sta pàgene a state cangete l'urtema vote da $1, alle $2.", # $1 date, $2 time
+'lastmodifiedat' => "Sta pàgene a state cangete l'urtema vote da $1, alle $2.",
'viewcount' => "Sta pàggene ha state viste {{PLURAL:$1|'na vote|$1 vote}}.",
'protectedpage' => 'Pàgene prutette',
'jumpto' => 'Zumbe a:',
'jumptonavigation' => 'navighesce',
'jumptosearch' => 'cirche',
+'view-pool-error' => "Ne dispiace, le server stonne sovraccarecate jndr'à stu mumende.
+Troppe utinde stonne a provene a vedè sta pàgene.
+Pe piacere aspitte 'nu picche e pò pruève 'n'otra vote a trasè jndr'à sta pàgene.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Sus a {{SITENAME}}',
'aboutpage' => 'Project:Sus a',
'copyright' => "'U condenute jè disponibile sotte a $1.",
-'copyrightpagename' => '{{SITENAME}} copyright',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Fatte de osce a die',
'currentevents-url' => 'Project:Fatte de osce a die',
@@ -236,8 +279,6 @@ $messages = array(
'disclaimerpage' => 'Project:Scareca uarrile',
'edithelp' => "Cangianne l'ajute",
'edithelppage' => 'Help:Cangiaminde',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Condenute',
'mainpage' => 'Pàgene Prengepàle',
'mainpage-description' => 'Pàgene Prengepàle',
@@ -321,10 +362,6 @@ L\'urteme tendative de inderrogazione sus a \'u database ha state:
"$1"
ausanne \'a funzione "$2".
\'U database ha returnate l\'errore "$3: $4"',
-'noconnect' => "Sime dispiaciute! Sus 'a Uicchipedie stè quacche probbleme tecniche e non ge putime condattà 'u server d'u database.<br />
-$1",
-'nodb' => "Non ge pozze scacchià l'archivie $1",
-'cachederror' => "Quedda ca ste vide jè 'na copie presende in memorie d'a pàgene ca è richieste, vo ccu dice ca non g'à puè cangià.",
'laggedslavemode' => "Attenzione: 'A pàgene no ge tène cangiaminde recente.",
'readonly' => 'Archivie blocchete',
'enterlockreason' => "Mitte 'na raggione p'u blocche, 'ncludenne 'na stime de quanne 'u blocche avène luate.",
@@ -342,6 +379,8 @@ Pe piacere manne 'na comunicazzione a 'n'[[Special:ListUsers/sysop|amministrator
'readonly_lag' => "'U database ha state automaticamende blocchete purcè le server de le database ca depennene da 'u master onne sciute in eccezzione",
'internalerror' => 'Errore inderne',
'internalerror_info' => 'Errore inderne: $1',
+'fileappenderrorread' => 'Non ge se pò leggere "$1" mendre ca appende.',
+'fileappenderror' => 'Non ge se pò \'nzeccà "$1" a "$2".',
'filecopyerror' => 'Non ge pozze cupià \'u fail "$1" jndr\'à "$2".',
'filerenameerror' => 'Non ge pozze cangià \'u nome d\'u fail "$1" jndr\'à "$2".',
'filedeleteerror' => 'Non ge pozze scangillà \'u fail "$1".',
@@ -351,8 +390,8 @@ Pe piacere manne 'na comunicazzione a 'n'[[Special:ListUsers/sysop|amministrator
'unexpected' => 'Valore inattese: "$1"="$2".',
'formerror' => "Errore: non ge riesche a reggistrà 'u form",
'badarticleerror' => "Quest'azione non ge pò essere fatte sus 'a sta pàgene.",
-'cannotdelete' => "Non ge puè scangellà 'a pàgene o 'u file specifichete.
-Pò essere ca ggià ha state scangellete da quacche otre.",
+'cannotdelete' => '\'A pàgene o \'u file "$1" non ge pò essere scangellate.
+Pò essere ca ggià ha state scangellete da quacche otre.',
'badtitle' => 'Titele sbagliete',
'badtitletext' => "'A pàgene ca è cerchete tène 'nu titele errete, vacande, o jè 'nu collegamende inter-lènghe o inter-uicchi errete.
Pò essere ca tène une o cchiù carattere ca non ge ponne essere ausete jndr'à le titele.",
@@ -389,7 +428,6 @@ $2',
'virus-unknownscanner' => 'antivirus scanusciute:',
# Login and logout pages
-'logouttitle' => 'Utende assute',
'logouttext' => "'''Tu tè scolleghete.'''
Tu puè condinuà a ausà {{SITENAME}} in mode anonime, o tu puè [[Special:UserLogin|collegarte 'n'otra vote]] cumme 'u stesse utende o cumme 'n'otre utende.
@@ -397,7 +435,6 @@ Note Bbuene ca certe pàggene ponne condinuà a essere viste cumme ce tu ste ang
'welcomecreation' => "== Bovegne, $1! ==
'U cunde tue ha state ccrejete.
No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze tue]].",
-'loginpagetitle' => "Nome de l'utende",
'yourname' => 'Nome utende:',
'yourpassword' => 'Passuord:',
'yourpasswordagain' => "Scrive 'a passuord notra vote:",
@@ -408,6 +445,7 @@ No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze
'nav-login-createaccount' => 'Tràse / Reggistrete',
'loginprompt' => "Tu a tenè le cookies abilitate pe tràse jndr'à {{SITENAME}}.",
'userlogin' => 'Tràse / Reggistrete',
+'userloginnocreate' => 'Tràse',
'logout' => 'Isse',
'userlogout' => 'Isse',
'notloggedin' => 'Non ge sì colleghete',
@@ -420,29 +458,8 @@ No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze
'badretype' => 'Le passuord ca è scritte non ge sonde uguale.',
'userexists' => "'U nome de l'utende ca è scritte jè già ausete.
Mittene n'otre.",
-'youremail' => 'Poste:',
-'username' => "Nome de l'utende:",
-'uid' => 'ID Utende:',
-'prefs-memberingroups' => "Membre {{PLURAL:$1|d'u gruppe|de le gruppe}}:",
-'yourrealname' => 'Nome vere:',
-'yourlanguage' => 'Lènga:',
-'yournick' => 'Firma toje:',
-'badsig' => "'A firme grezze jè sbagliete.
-Condrolle le tag HTML.",
-'badsiglength' => "'A firme jè troppe longhe.
-Addà essere assaje assaje sotte a $1 {{PLURAL:$1|carattere|carattere}}.",
-'yourgender' => 'Sesso:',
-'gender-unknown' => 'No specificate',
-'gender-male' => 'Maschele',
-'gender-female' => 'Femmene',
-'prefs-help-gender' => "Opzionale: ausete pe l'indirizzamende corrette d'u sesse jndr'à 'u software. Sta 'mbormazione jè pubbliche.",
-'email' => 'Poste',
-'prefs-help-realname' => "'U nome vere (quidde d'u munne reale) jè facoltative.
-Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
'loginerror' => 'Errore de collegamende',
-'prefs-help-email' => "L'indirizze e-mail jè facoltative ma te dè 'a possibbilità de mannarte 'na password nova nove ce tu te scuèrde quedde ca tenive.
-Tu puè pure scacchià de lassà otre condatte ausanne l'utende tue o le pàggene de le 'ngazzaminde senza ca abbesogne de fa canoscere l'idendità toje.",
-'prefs-help-email-required' => "L'indirizze e-mail jè obbligatorie.",
+'createaccounterror' => "Non ge puè ccrejà 'u cunde utende: $1",
'nocookiesnew' => "'U cunde utende ha state ccrejete ma angore non g'è trasute jndr'à {{SITENAME}}.
{{SITENAME}} ause le cookie pe fà collegà l'utinde.
@@ -461,12 +478,13 @@ Vide bbuene a cumme l'è scritte, o [[Special:UserLogin/signup|ccreje n'utende n
'nosuchusershort' => 'Non ge ste nisciune utende cu \'u nome "<nowiki>$1</nowiki>".
Condrolle accume l\'è scritte.',
'nouserspecified' => "A scrivere pe forze 'u nome de l'utende.",
+'login-userblocked' => 'Stu utende jè bloccate. Non ge puè trasè.',
'wrongpassword' => "E mise 'na passuor sbagliete.
Prueve n'otra vote.",
'wrongpasswordempty' => "'A passuord 'nzerite jè vianghe.
Mitta n'otra vota.",
-'passwordtooshort' => "'A passuord ca è mise o non g'è valida o jè troppe piccenne.
-Tu a mettere almene {{PLURAL:$1|1 carattere|$1 carattere}} e adda essere diverse da 'u nome utende.",
+'passwordtooshort' => 'Le password onne a essere almene {{PLURAL:$1|1 carattere|$1 carattere}}.',
+'password-name-match' => "'A password toje adda essere diverse da 'u nome utende tue.",
'mailmypassword' => 'Passuord nova pe e-mail',
'passwordremindertitle' => 'Passuord temboranea nova pe {{SITENAME}}',
'passwordremindertext' => "Quacchedune (pò essere tu, da quiste indirizze IP \$1) ha cerchete 'na nova password pe {{SITENAME}} (\$4).
@@ -476,6 +494,7 @@ Ce quiste ere quidde ca vulive, mo vide ce te colleghe e te scacchie 'na passwor
Ce quacche otre 'nvece ha fatte sta rechieste, o ce tu t'è recurdate 'a password, e non g'à vuè cu cangè cchiù, allore no sce penzanne a 'stu messagge e continue a ausà 'a vecchia password.",
'noemail' => 'Non ge stonne email reggistrete pe l\'utende "$1".',
+'noemailcreate' => "Tu ha mèttere 'n'indirizze e-mail valide",
'passwordsent' => "'Na nova passuord ha state mannete a l'indirizze e-mail reggistrete pe \"\$1\".
Pe piacere, colleghete n'otra vota quanne l'è ricevute.",
'blocked-mailpassword' => "L'indirizze IP tue jè blocchete pe le cangiaminde e accussì tu non ge puè ausà 'a funzione de recupere d'a password pe prevenìe l'abbuse.",
@@ -500,9 +519,11 @@ Pe piacere mitte l'indirizze a cumme criste cumanne, ce nò no 'u scè mettènne
Tu, mò, t\'avisse a collegà e cangià \'a password toje.
Tu puè pure cacà stu messagge, ce stu cunde utende ha state ccrejete pe errore.',
+'usernamehasherror' => "'U nome utende non ge pò tenè carattere hash",
'login-throttled' => "Urtemamende tu è pruvate troppe vote a trasè jndr'à Uicchipèdie
Pe piacere vide c'aspitte 'nu picche de timbe apprime de pruvà 'n'otra vote.",
'loginlanguagelabel' => 'Lénga: $1',
+'suspicious-userlogout' => "'A richiesta toje de assè ha state bloccate purcè pare ca ha state mannate da 'nu browser scuasciate o da 'a cache de 'nu proxy.",
# Password reset dialog
'resetpass' => "Cange 'a password",
@@ -515,18 +536,13 @@ Pe spiccià 'a procedure de collegamende, tu a 'mbostà 'na password nove aqquà
'retypenew' => "Scrive n'otra vota 'a passuord nova:",
'resetpass_submit' => "'Mboste 'a passuord e colleghete",
'resetpass_success' => "'A password toje ha state cangete cu successe! Mò te puè collegà...",
-'resetpass_bad_temporary' => "'A password temboranea jè invalide.
-Pò essere ca tu è già chieste 'na password temboranea nove oppure è già cangete 'a password cu quedda definitive.",
'resetpass_forbidden' => 'Le Password non ge ponne cangià',
'resetpass-no-info' => 'Tu a essere colleghete pe accedere a sta pàgene direttamende.',
'resetpass-submit-loggedin' => "Cange 'a password",
+'resetpass-submit-cancel' => 'Annulle',
'resetpass-wrong-oldpass' => "'A password temboranea o quedda corrende jè invalide.
Pò essere ca tu è già cangete 'a password toje o è richieste una temboranea nove.",
'resetpass-temp-password' => 'Password temboranea:',
-'resetpass-log' => 'Archivije de le azzeraminde de le password',
-'resetpass-logtext' => "Sotte stè 'n'archivije de utinde ca onne avute 'a password lore azzerate da 'n'amministratore.",
-'resetpass-logentry' => "cangete 'a password pe $1",
-'resetpass-comment' => "Mutive pe l'azzeramende d'a password:",
# Edit page toolbar
'bold_sample' => 'Teste grascette',
@@ -604,7 +620,6 @@ Pe piacere mitte tutte le dettaglie ca ponne essere utile pe le richieste tue.",
'blockededitsource' => "'U teste de le '''cangiaminde tue''' sus a '''$1''' ìu stè vide aqquà sotte:",
'whitelistedittitle' => "Pe fa le cangiaminde t'a collegà",
'whitelistedittext' => 'Tu ha $1 pàggene da cangià.',
-'confirmedittitle' => "Ce vuè cu fece le cangiaminde a confermà cu l'email",
'confirmedittext' => "Tu a confermà l'indirizze e-mail tue apprime de cangià le pàggene.
Pe piacere mitte e validesce l'indirizze e-mail tue ausanne le [[Special:Preferences|preferenze de l'utende]].",
'nosuchsectiontitle' => "Non ge pozze acchià 'a sezione",
@@ -627,14 +642,21 @@ E' normale ca essende 'n'indirizze IP pò essere ausete pure da otre utinde ca '
Ce tu non ge si 'n'utende anonime e pinze ca le commende ca so revolte a te sonde studecarije, pe piacere [[Special:UserLogin/signup|ccreje 'nu cunde utende]] o [[Special:UserLogin|tràse]] pe no fà confusione jndr'à 'u future cu otre utinde anoneme.''",
'noarticletext' => 'Non ge stè scritte ninde jndr\'à sta pàgene.
Tu puè [[Special:Search/{{PAGENAME}}|cercà pe quiste titele]] jndr\'à otre pàggene, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] oppure [{{fullurl:{{FULLPAGENAME}}|action=edit}} cange sta pàgene]</span>.',
+'noarticletext-nopermission' => "Pe mò non ge stè teste jndr'à sta pàgene.
+Tu puè [[Special:Search/{{PAGENAME}}|cercà pe stu titele]] jndr'à otre pàggene,
+o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cirche jndr'à l'archivije cullegate]</span>.",
'userpage-userdoesnotexist' => '\'U cunde utende "$1" non g\'è reggistrete.
Pe piacere, condrolle ce tu vuè cu ccreje/cange sta pàgene.',
+'userpage-userdoesnotexist-view' => '\'U cunde utende "$1" non g\'è reggistrate.',
+'blocked-notice-logextract' => "Stu utende jè correndemende bloccate.<br />
+L'urteme archivije de le bloccaminde se iacche aqquà sotte pe referimende:",
'clearyourcache' => "'''Vide Bbuene - Apprisse 'a reggistrazione, tu puè zumbà 'a cache d'u browser tue pe vedè le cangiaminde.'''
*'''Mozilla / Firefox / Safari:''' cazze 'u ''Shift'' e condemboranemende cazze 'u buttone ''Aggiorna'', o cazze 'nzieme ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' sus a 'nu Macintosh);
*'''Konqueror: '''cazze ''Aggiorna'' o cazze ''F5'';
*'''Opera:''' pulizze 'a cache da ''Tools → Preferences'' (in inglese) (Struminde - Preferenze in tagliàne);
*'''Internet Explorer:''' cazze ''Ctrl'' e condemboraneamende cazze ''Aggiorna,'' o cazze ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Conziglie:''' Ause 'u buttone 'Vide l'andeprime' pe condrollà 'u CSS/JS nuève apprime de reggistrà.",
+'usercssyoucanpreview' => "'''Conziglie:''' Ause 'u buttone \"{{int:showpreview}}\" pe condrollà 'u CSS nuève apprime de reggistrà.",
+'userjsyoucanpreview' => "'''Conziglie:''' Ause 'u buttone \"{{int:showpreview}}\" pe condrollà 'u JavaScript nuève apprime de reggistrà.",
'usercsspreview' => "'''Arrecuerdete ca tu ste vide sulamende in andeprime 'u CSS tue.'''
'''Non g'à state angore reggistrete ninde!'''",
'userjspreview' => "'''Arrecuerdete ca tu ste vide/teste sulamende in andeprime 'u JavaScript tue.'''
@@ -691,13 +713,16 @@ Non ge puè reggistrà sta pàggene.",
Tu puè fa 'na bella cose, tagghie e 'nzicche le cangiaminde jndr'à 'nu file de teste sus a 'u combiuter tue e pò cchiù tarde le reggistre sus 'a Uicchi.
L'amministratore ca ha bloccate 'u database ha scritte stu mutive: $1",
-'protectedpagewarning' => "'''ATTENZIO': Sta pàgene ha state blocchete e allore sulamende le utinde cu le privilegge de ''sysop'' ponne cangiarle.'''",
-'semiprotectedpagewarning' => "'''Fà attenzione:''' Sta pàgene ha state blocchete accussì sulamende l'utinde reggistrete ponne fà cangiaminde.",
+'protectedpagewarning' => "'''ATTENZIO': Sta pàgene ha state bloccate e allore sulamende le utinde cu le privilegge de ''sysop'' ponne cangiarle.'''
+L'urteme archivie de le trasute ha state previste aqquà sotte pe referimende:",
+'semiprotectedpagewarning' => "'''Fà attenzione:''' Sta pàgene ha state bloccate accussì sulamende l'utinde reggistrete ponne fà cangiaminde.
+L'urteme archivije de le trasute ha state previste aqquà sotte pe referimende:",
'cascadeprotectedwarning' => "'''FA ATTENZIO':''' Sta pàgene ha state blocchete accussì sulamende l'utinde ca tènene le deritte de amministratore a ponne cangià, purcè inglude {{PLURAL:$1|pàgene|pàggrnr}} prutette a cascate:",
-'titleprotectedwarning' => "'''ATTENZIONE: Sta pàgene ha state blocchete accussì sulamende [[Special:ListGroupRights|specifice diritte]] a ponne ccrejà.'''",
-'templatesused' => "Template ausete sus 'a sta pàgene:",
-'templatesusedpreview' => "Template ausete jndr'à sta andeprime:",
-'templatesusedsection' => "Jndr'à sta sezione sonde ausete chiste template:",
+'titleprotectedwarning' => "'''ATTENZIONE: Sta pàgene ha state bloccate accussì sulamende [[Special:ListGroupRights|specifice diritte]] a ponne ccrejà.'''
+L'urteme archivije de le trasute jè provviste sotte pe referimende:",
+'templatesused' => "{{PLURAL:$1|Template|Template}} ausate sus 'a sta pàgene:",
+'templatesusedpreview' => "{{PLURAL:$1|Template|Template}} ausate jndr'à sta andeprime:",
+'templatesusedsection' => "{{PLURAL:$1|Template|Template}} ausate jndr'à sta sezione:",
'template-protected' => '(prutette)',
'template-semiprotected' => '(mmienze protette)',
'hiddencategories' => 'Sta pàgene jè membre de {{PLURAL:$1|1 categorja|$1 categorije}} scunnute:',
@@ -705,15 +730,18 @@ L'amministratore ca ha bloccate 'u database ha scritte stu mutive: $1",
'nocreatetext' => "{{SITENAME}} ha restritte l'abilità de ccrejà pàggene nuéve.
Tu puè turnà rrete e cangià 'na pàgene ca già esiste, oppure puè [[Special:UserLogin|trasè o ccrejà n'utende nuéve]].",
'nocreate-loggedin' => 'Non ge tine le permesse pe ccreja pàggene nuève.',
+'sectioneditnotsupported-title' => 'Sezione de le cangiaminde none supportate',
+'sectioneditnotsupported-text' => "Sezione de le cangiaminde non g'è supportate sus a sta pàgene de cangiaminde.",
'permissionserrors' => 'Errore de permesse',
'permissionserrorstext' => "Tu non ge tine 'u permesse pe fà ste cose, pe {{PLURAL:$1|stu mutive|ste mutive}}:",
'permissionserrorstext-withaction' => "Tu non ge tine 'u permesse pe $2, pe {{PLURAL:$1|stu mutive|ste mutive}}:",
-'recreate-deleted-warn' => "'''Fa Attenziò: Ste ccreje 'na pàgene ca avère state scangillete apprime.'''
+'recreate-moveddeleted-warn' => "'''Fa Attenziò: Ste ccreje 'na pàgene ca avère state scangillete apprime.'''
-Vide bbuene ce l'ha ccrejà sta pàgene, ce non ge sinde sicure vide l'archivie de le scangellaziune:",
-'deleted-notice' => "Sta pàgene ha state scangellete.
-L'archivije de le scangellaminde pe sta pàgene 'u puè vedè aqquà sotte pe riferimende.",
-'deletelog-fulllog' => "Vide l'archivie comblete",
+Vide bbuene ce l'ha ccrejà sta pàgene.
+Sinde a me, vide l'archivie de le scangellaminde e de le spustaminde accussì sì secure de quidde cà fà:",
+'moveddeleted-notice' => "Sta pàgene ha state scangellate.
+L'archivije de le scangellaminde e de le spustaminde pe sta pàgene 'u puè vedè aqquà sotte pe riferimende.",
+'log-fulllog' => "Vide l'arichivije comblete",
'edit-hook-aborted' => "Cangiamende annullete da 'nu ''hook''.
Non g'à date nisciune mutive.",
'edit-gone-missing' => "Non ge puè cangià sta pàgene.
@@ -735,6 +763,7 @@ Ste argumende onne state luete.",
'post-expand-template-argument-category' => 'Pàggene ca condenene template cu quacche argomende zumbete',
'parser-template-loop-warning' => "Amme acchiete 'nu cicle de template: [[$1]]",
'parser-template-recursion-depth-warning' => "Ha state supranete 'u limite di ricorsione de le template ($1)",
+'language-converter-depth-warning' => "'U convertitore de lènghe ha subranate 'u limite de profonnetà ($1)",
# "Undo" feature
'undo-success' => "'U cangiamende pò essere annullate.
@@ -755,7 +784,7 @@ Pe piacere verifichesce 'u combronde sotte pe condrollà ca quiste ca tu vuè cc
'currentrev' => 'Versione de osce a die',
'currentrev-asof' => 'Revisiona corrende de $1',
'revisionasof' => 'Versione de $1',
-'revision-info' => "Versione scritte jndr'à $1 da $2", # Additionally available: $3: revision id
+'revision-info' => "Versione scritte jndr'à $1 da $2",
'previousrevision' => '← Versione Vecchje',
'nextrevision' => 'Versione cchiù nova →',
'currentrevisionlink' => 'Versione de mò',
@@ -768,7 +797,7 @@ Pe piacere verifichesce 'u combronde sotte pe condrollà ca quiste ca tu vuè cc
Leggenda: (cur) = differenze cu 'a versiona corrende,
(last) = differenze ca 'a versione precedende, M = cangiaminde stuédeche.",
'history-fieldset-title' => "Sfogghje 'a storie",
-'deletedrev' => '[scangellete]',
+'history-show-deleted' => 'Sule le scangellate',
'histfirst' => 'Prime',
'histlast' => 'Urteme',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -777,71 +806,114 @@ Leggenda: (cur) = differenze cu 'a versiona corrende,
# Revision feed
'history-feed-title' => 'Storie de le revisiune',
'history-feed-description' => "Storie de le revisiune oe sta pàgene sus 'a le Uicchipèdie",
-'history-feed-item-nocomment' => '$1 a $2', # user at time
+'history-feed-item-nocomment' => '$1 a $2',
'history-feed-empty' => "'A vosce ca è cerchete non g'esiste.
Pò essere ca ha state scangellete da Uicchi o ha state renomenate..
Pruève a [[Special:Search|cercò sus a Uicchi]] 'mbrà le vosce cchiù rilevande.",
# Revision deletion
-'rev-deleted-comment' => '(commende scangillete)',
-'rev-deleted-user' => '(nome utende scangillete)',
-'rev-deleted-event' => "(azione de l'archivie scangillete)",
-'rev-deleted-text-permission' => "Sta revisione d'a pàgene ha state '''scangellate'''.
-Puè acchijà cchiù 'mbormaziune sus a [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} l'archivije de le scangallaminde].",
-'rev-deleted-text-view' => "Sta revisione d'a pàgene ha state '''scangellate'''.
-Cumme a 'n'amministratore tu a puè vedè angore; stonne cchiù 'mbormaziune jndr'à l'[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} archiviè de le scangellaminde].",
-'rev-deleted-no-diff' => "Tu non ge puè vedè 'a differenze purcè une de le revisiune ha state '''scangellate'''.<br />
-Pò essere ca jacchie quacche dettaglie jndr'à l'[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} archiviè de le scangellaminde].",
-'rev-deleted-unhide-diff' => "Une de le revisiune de sta differenza ha state '''scangellate'''.
-Pò essere ca iacchije quacche dettaglie jndr'à l'[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} archivie de le scangellaminde].
+'rev-deleted-comment' => '(commende scangillete)',
+'rev-deleted-user' => '(nome utende scangillete)',
+'rev-deleted-event' => "(azione de l'archivie scangillete)",
+'rev-deleted-user-contribs' => '[nome utende o indirizze IP luate - cangiamende scunnute da le condrebbute]',
+'rev-deleted-text-permission' => "Sta revisione d'a pàgene ha state '''scangellate'''.
+Puè acchijà cchiù 'mbormaziune sus a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} l'archivije de le scangellaminde].",
+'rev-deleted-text-unhide' => "Sta revisione d'a pàgene ha state '''scangellate'''.
+Puè acchijà cchiù 'mbormaziune sus a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} l'archivije de le scangellaminde].
+Cumme a 'n'amministratore tu puè angore [$1 vedè sta revisiona] ce tu avveramende a vuè ccù vide.",
+'rev-suppressed-text-unhide' => "Sta revisione d'a pàgene ha state '''soppresse'''.
+Puè acchijà cchiù 'mbormaziune sus a [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} l'archivije de le soppressiune].
+Cumme a 'n'amministratore tu puè angore [$1 vedè sta revisiona] ce tu avveramende a vuè ccù vide.",
+'rev-deleted-text-view' => "Sta revisione d'a pàgene ha state '''scangellate'''.
+Cumme a 'n'amministratore tu a puè vedè angore; stonne cchiù 'mbormaziune jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} archiviè de le scangellaminde].",
+'rev-suppressed-text-view' => "Sta revisione d'a pàgene ha state '''soppresse'''.
+Cumme a 'n'amministratore tu puè vedè; puè acchijà cchiù 'mbormaziune sus a [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} l'archivije de le soppressiune].",
+'rev-deleted-no-diff' => "Tu non ge piè vedè sta differenze purcè une de le revisiune ha state '''scangellate'''.
+Pò essere ca jacchie quacche dettaglie jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} archiviè de le scangellaminde].",
+'rev-suppressed-no-diff' => "Tu non ge puè vedè sta differenze purcé une de le revisiune ha state '''scangellate'''.",
+'rev-deleted-unhide-diff' => "Une de le revisiune de sta differenza ha state '''scangellate'''.
+Pò essere ca iacchije quacche dettaglie jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} archiviè de le scangellaminde]..
Cumme a 'n'amministratore tu puè angore [$1 vedè sta differenze] ce tu proprie si inderessate.",
-'rev-delundel' => 'fa vedè/scunne',
-'revisiondelete' => 'Scangille/Repristine revisiune',
-'revdelete-nooldid-title' => 'Revisione de destinazione invalida',
-'revdelete-nooldid-text' => "Tu non g'è specificate 'na revisione da arrivà pe abbilità sta funzione. 'A specifica revisione non g'esiste oppure tu stè pruève a scunnè 'a revisona corrende.",
-'revdelete-nologtype-title' => 'Nisciune tipe de archivije ha state specifichete',
-'revdelete-nologtype-text' => "Tu non g'è specificate 'u tipe de l'archivije pe eseguì st'aziona.",
-'revdelete-toomanytargets-title' => 'Troppe destinaziune',
-'revdelete-toomanytargets-text' => "Tu è specificate assaije tipe de destinaziune pe eseguì st'aziona.",
-'revdelete-nologid-title' => "Richieste jndr'à l'archivije invalide",
-'revdelete-nologid-text' => "Tu non g'è specificate l'archivije de destinazione de l'evende pe eseguì sta funzione o 'a specifiche entrate non g'esiste.",
-'revdelete-selected' => "'''{{PLURAL:$2|Revisiona selezionete|Revisiune selezionete}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Fatte de l'archivije selezionete|Fatte de l'archivije selezionete}}:'''",
-'revdelete-text' => "'''Le revisiune scangellete e le evende iessene angore jndr'à storie d'a pàgene e jndr'à l'archivije, ma stuezze d'u condenute lore pò essere inaccessibbele a 'u pubbleche.'''
-
-Otre amministrature sus a {{SITENAME}}ponne angore trasè jndr'à 'u condenute scunnute e 'u ponne scangellà 'n'otra vote ausanne st'inderfacce, senze 'mbostà otre restriziune.
-Pe piacere conferme ca tu vuè ccu face sta cose, ca tu è capite le conseguenze, e ca tu ste face sta cose tenènne cunde de [[{{MediaWiki:Policy-url}}|le regole]].",
-'revdelete-suppress-text' => "'A soppressione adda essere ausate '''sulamende''' jndr'à le case seguende:
+'rev-suppressed-unhide-diff' => "Une de le revisiune de sta differenze ha state '''soppresse'''.
+Pò essere ca stonne cchiù 'mbormaziune jndr'à l'[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} archivie de le soppressiune].
+Cumme 'n'amministratore tu puè angore [$1 vedè sta differenze] ce te inderesse avveramende.",
+'rev-deleted-diff-view' => "Une de le revisiune de sta differenze ha state '''scangellate'''.
+Cumme 'n'amministratore tu puè vedè ste differenze; pò essere ca stonne cchiù 'mbormaziune jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} archivie de le scangellaminde].",
+'rev-suppressed-diff-view' => "Une de le revisiune de sta differenze ha state '''soppresse'''.
+Cumme 'n'amministratore tu puè vedè ste differenze; pò essere ca stonne cchiù 'mbormaziune jndr'à l'[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} archivie de le soppressiune].",
+'rev-delundel' => 'fa vedè/scunne',
+'rev-showdeleted' => 'fà vedè',
+'revisiondelete' => 'Scangille/Repristine revisiune',
+'revdelete-nooldid-title' => 'Revisione de destinazione invalida',
+'revdelete-nooldid-text' => "Tu non g'è specificate 'na revisione da arrivà pe abbilità sta funzione. 'A specifica revisione non g'esiste oppure tu stè pruève a scunnè 'a revisona corrende.",
+'revdelete-nologtype-title' => 'Nisciune tipe de archivije ha state specifichete',
+'revdelete-nologtype-text' => "Tu non g'è specificate 'u tipe de l'archivije pe eseguì st'aziona.",
+'revdelete-nologid-title' => "Richieste jndr'à l'archivije invalide",
+'revdelete-nologid-text' => "Tu non g'è specificate l'archivije de destinazione de l'evende pe eseguì sta funzione o 'a specifiche entrate non g'esiste.",
+'revdelete-no-file' => "'U file specificate non g'esiste.",
+'revdelete-show-file-confirm' => 'Si secure ca vuè ccu vide \'a revisione scangellate d\'u file "<nowiki>$1</nowiki>" \'u $2 a le $3?',
+'revdelete-show-file-submit' => 'Sìne',
+'revdelete-selected' => "'''{{PLURAL:$2|Revisiona selezionete|Revisiune selezionete}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Fatte de l'archivije selezionete|Fatte de l'archivije selezionete}}:'''",
+'revdelete-text' => "'''Le revisiune scangellete e le evende iessene angore jndr'à storie d'a pàgene e jndr'à l'archivije, ma stuezze d'u condenute lore pò essere inaccessibbele a 'u pubbleche.'''
+Otre amministrature sus a {{SITENAME}}ponne angore trasè jndr'à 'u condenute scunnute e 'u ponne scangellà 'n'otra vote ausanne st'inderfacce, senze 'mbostà otre restriziune.",
+'revdelete-confirm' => 'Pe piacere conferme ca tu vuè ccu face sta cose, ce tu è capite le conseguenze e ce quidde ca ste face jè in accorde cu le [[{{MediaWiki:Policy-url}}|reghele]] de Uicchipèdie.',
+'revdelete-suppress-text' => "'A soppressione adda essere ausate '''sulamende''' jndr'à le case seguende:
* Date personale inopportune
*: ''indirizze, numere de telefono, codice fiscale, ecc.''",
-'revdelete-legend' => "'Mboste le restriziune sus 'a visibbilità",
-'revdelete-hide-text' => "Scunne 'u teste d'a revisione",
-'revdelete-hide-name' => 'Scunne azione e obbiettive',
-'revdelete-hide-comment' => 'Scunne le commende de le cangiaminde',
-'revdelete-hide-user' => "Scunne 'u nome utende/IP de quidde ca ha fatte 'u cangiamende",
-'revdelete-hide-restricted' => "Live le date da l'amministratore cumme pe l'otre utinde",
-'revdelete-suppress' => "Live le date da l'amministrature cumme pe l'otre",
-'revdelete-hide-image' => "Scunne 'u codenute d'u fail",
-'revdelete-unsuppress' => 'Live le restriziune sus a le revisiune repristinate',
-'revdelete-log' => 'Mutive:',
-'revdelete-submit' => 'Applichesce a le revisiune selezionete',
-'revdelete-logentry' => "ha state cangete 'a visibbilità d'a revisione de [[$1]]",
-'logdelete-logentry' => "ha state cangete 'a visibbilità de l'evende de [[$1]]",
-'revdelete-success' => "'''Visibbilità de le revisiune aggiornate correttamende.'''",
-'logdelete-success' => "'''Log visibility successfully set.'''
+'revdelete-legend' => "'Mboste le restriziune sus 'a visibbilità",
+'revdelete-hide-text' => "Scunne 'u teste d'a revisione",
+'revdelete-hide-image' => "Scunne 'u codenute d'u fail",
+'revdelete-hide-name' => 'Scunne azione e obbiettive',
+'revdelete-hide-comment' => 'Scunne le commende de le cangiaminde',
+'revdelete-hide-user' => "Scunne 'u nome utende/IP de quidde ca ha fatte 'u cangiamende",
+'revdelete-hide-restricted' => "Live le date da l'amministratore cumme pe l'otre utinde",
+'revdelete-radio-same' => '(non scè cangianne)',
+'revdelete-radio-set' => 'Sine',
+'revdelete-radio-unset' => 'None',
+'revdelete-suppress' => "Live le date da l'amministrature cumme pe l'otre",
+'revdelete-unsuppress' => 'Live le restriziune sus a le revisiune repristinate',
+'revdelete-log' => 'Mutive:',
+'revdelete-submit' => "Applichesce a {{PLURAL:$1|'a revisione|le revisiune}} selezionate",
+'revdelete-logentry' => "ha state cangete 'a visibbilità d'a revisione de [[$1]]",
+'logdelete-logentry' => "ha state cangete 'a visibbilità de l'evende de [[$1]]",
+'revdelete-success' => "'''Visibbilità de le revisiune aggiornate correttamende.'''",
+'revdelete-failure' => "''' 'A visibbilità de le revisiune non ge pò essere aggiornate:'''
+$1",
+'logdelete-success' => "'''Log visibility successfully set.'''
'''Visibbilità de l'archivije 'mbostate correttamende.'''",
-'revdel-restore' => "Cange 'a visibilità",
-'pagehist' => "Storie d'a vôsce",
-'deletedhist' => "Storie d'u scangellamende",
-'revdelete-content' => 'condenute',
-'revdelete-summary' => "cange 'u riepileghe",
-'revdelete-uname' => "nome de l'utende",
-'revdelete-restricted' => 'appliche le restriziune a le SysOps',
-'revdelete-unrestricted' => 'live le restriziune a le SysOps',
-'revdelete-hid' => 'scunne $1',
-'revdelete-unhid' => 'fa vedè $1',
-'revdelete-log-message' => '$1 pe $2 {{PLURAL:$2|revisione|revisione}}',
-'logdelete-log-message' => '$1 pe $2 {{PLURAL:$2|fatte|fatte}}',
+'logdelete-failure' => "'''L'archivije d'a visibbilità non ge pò essere 'mbostate:'''
+$1",
+'revdel-restore' => "Cange 'a visibilità",
+'pagehist' => "Storie d'a vôsce",
+'deletedhist' => "Storie d'u scangellamende",
+'revdelete-content' => 'condenute',
+'revdelete-summary' => "cange 'u riepileghe",
+'revdelete-uname' => "nome de l'utende",
+'revdelete-restricted' => 'appliche le restriziune a le SysOps',
+'revdelete-unrestricted' => 'live le restriziune a le SysOps',
+'revdelete-hid' => 'scunne $1',
+'revdelete-unhid' => 'fa vedè $1',
+'revdelete-log-message' => '$1 pe $2 {{PLURAL:$2|revisione|revisione}}',
+'logdelete-log-message' => '$1 pe $2 {{PLURAL:$2|fatte|fatte}}',
+'revdelete-hide-current' => "Errore scunnènne le artichele datate $2, $1: queste ète 'a versiona corrende.
+Non ge pò essere scunnute.",
+'revdelete-show-no-access' => 'Errore facenne vedè le artichele datate $2, $1: quiste artichele ha state signate "ristrette".
+Tu non ge tìne l\'accesse.',
+'revdelete-modify-no-access' => 'Errore cangianne le artichele datate $2, $1: quiste artichele ha state signate "ristrette".
+Tu non ge tìne l\'accesse.',
+'revdelete-modify-missing' => "Errore cangianne l'artichele cu l'ID $1: non ge se iacchie jndr'à 'u database!",
+'revdelete-no-change' => "'''Attenziò:''' l'artchele datate $2, $1 già tenève l'imbostaziune de visibbilità richieste.",
+'revdelete-concurrent-change' => "Errore cangianne le artichele datate $2, $1: 'u state ca combare ha state cangiate da quacchedune otre mendre ca tu stè pruvave a cangiarle.
+Pe piacere condrolle l'archivije.",
+'revdelete-only-restricted' => "Errore scunnènne l'artichele datate $2, $1: tu non ge puè sopprimere l'artichele da 'a viste de le amministrature senze ca scacchie pure une de le otre opziune de soppressione.",
+'revdelete-reason-dropdown' => "*Mutive comune pa scangellazzione
+** Violazione d'u copyright
+** 'Mbormaziune personale inappropriate",
+'revdelete-otherreason' => 'Otre/addizionale mutive:',
+'revdelete-reasonotherlist' => 'Otre mutive',
+'revdelete-edit-reasonlist' => "Mutive d'a scangellazione d'u cangiamende",
+'revdelete-offender' => "Autore d'a revisione:",
# Suppression log
'suppressionlog' => 'Archivie de le soppressiune',
@@ -880,68 +952,13 @@ Vide Bbuene ca ausanne le collegaminde de navigazzione sta culonne avène azzera
'mergelogpagetext' => "Stte stè 'na liste de le cchiù recende scuagghiaminde de le cunde de le vosce jndr'à 'n'otre.",
# Diffs
-'history-title' => 'Liste de le versiune de "$1"',
-'difference' => "(Differenze 'mbrà versiune)",
-'lineno' => 'Linea $1:',
-'compareselectedversions' => 'Combronde le versiune selezionete',
-'visualcomparison' => 'Combronde visuele',
-'wikicodecomparison' => 'Combronde de Uicchi teste',
-'editundo' => 'annulle',
-'diff-multi' => "({{PLURAL:$1|'na versione de mmienze|$1 cchiù versiune de mmienze}} non ge se vèdene.)",
-'diff-movedto' => "spustete jndr'à $1",
-'diff-styleadded' => '$1 stile aggiunde',
-'diff-added' => '$1 aggiunde',
-'diff-changedto' => 'cangete cu $1',
-'diff-movedoutof' => 'spustate fore de $1',
-'diff-styleremoved' => '$1 stile scangellete',
-'diff-removed' => '$1 scangellete',
-'diff-changedfrom' => 'cangiete da $1',
-'diff-src' => 'sorgende',
-'diff-withdestination' => 'cu destinazione $1',
-'diff-with' => '&#32;cu $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'larghezze',
-'diff-height' => 'altezze',
-'diff-p' => "'nu '''paragrafe'''",
-'diff-blockquote' => "'na '''citazione'''",
-'diff-h1' => "'na '''testete (levèlle 1)'''",
-'diff-h2' => "'na '''testete (levèlle 2)'''",
-'diff-h3' => "'na '''testete (levèlle 3)'''",
-'diff-h4' => "'na '''testete (levèlle 4)'''",
-'diff-h5' => "'na '''testete (levèlle 5)'''",
-'diff-pre' => "'nu '''blocche pre-formattete'''",
-'diff-div' => "'na '''divisione'''",
-'diff-ul' => "'na '''liste non arrengàte'''",
-'diff-ol' => "'na '''liste arrengàte'''",
-'diff-li' => "'n''''elemende d'a liste'''",
-'diff-table' => "'na '''tagelle'''",
-'diff-tbody' => "'na '''tagelle de condenute'''",
-'diff-tr' => "'na '''riga'''",
-'diff-td' => "'na '''celle'''",
-'diff-th' => "'na '''testete'''",
-'diff-br' => "'n''''inderruzione'''",
-'diff-hr' => "'na '''horizontal rule'''",
-'diff-code' => "'nu '''computer code block'''",
-'diff-dl' => "'na '''definition list'''",
-'diff-dt' => "'nu '''definition term'''",
-'diff-dd' => "'na '''definition'''",
-'diff-input' => "'n''''input'''",
-'diff-form' => "'nu '''form'''",
-'diff-img' => "'n''''image'''",
-'diff-span' => "'nu '''span'''",
-'diff-a' => "'nu '''link'''",
-'diff-i' => "'''italics'''",
-'diff-b' => "'''bold'''",
-'diff-strong' => "'''strong'''",
-'diff-em' => "'''emphasis'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''big'''",
-'diff-del' => "'''deleted'''",
-'diff-tt' => "'''fixed width'''",
-'diff-sub' => "'''subscript'''",
-'diff-sup' => "'''superscript'''",
-'diff-strike' => "'''strikethrough'''",
+'history-title' => 'Liste de le versiune de "$1"',
+'difference' => "(Differenze 'mbrà versiune)",
+'lineno' => 'Linea $1:',
+'compareselectedversions' => 'Combronde le versiune selezionete',
+'showhideselectedversions' => 'Fà vedè/scunne le revisiune selezionate',
+'editundo' => 'annulle',
+'diff-multi' => "({{PLURAL:$1|'na versione de mmienze|$1 cchiù versiune de mmienze}} non ge se vèdene.)",
# Search results
'searchresults' => "Resultete d'a ricerche",
@@ -949,29 +966,25 @@ Vide Bbuene ca ausanne le collegaminde de navigazzione sta culonne avène azzera
'searchresulttext' => "Pe cchiù 'mbormaziune sus 'a recerche de {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].",
'searchsubtitle' => 'Tu è cerchete pe \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pàggene ca accumenzene cu "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|tutte le pàggene ca appondene a "$1"]])',
'searchsubtitleinvalid' => "Tu è cerchete pe '''$1'''",
-'noexactmatch' => "'''Non g'esiste 'na pàgene ca se chiama \"\$1\".'''
-Tu puè [[:\$1|ccrejà sta pàgene]].",
-'noexactmatch-nocreate' => "'''Non ge stè 'na vosce ca se nnomene \"\$1\".'''",
'toomanymatches' => "Troppe combronde sciute bbuene onne state returnete, pe piacere prueve cu 'n'otra inderrogazione",
'titlematches' => "'U titele d'a pàgene se iacchje",
'notitlematches' => "Nisciune titele de pàgene s'accocchie cu 'a recerche",
'textmatches' => "'U teste d'a pàgene combacie",
'notextmatches' => "Nisciune teste de pàgene s'accocchie cu 'a recerche",
-'prevn' => 'rrede $1',
-'nextn' => 'nnande $1',
+'prevn' => 'rrede {{PLURAL:$1|$1}}',
+'nextn' => 'nnande {{PLURAL:$1|$1}}',
'prevn-title' => 'Precedende $1 {{PLURAL:$1|resultete|resultete}}',
'nextn-title' => 'Successive $1 {{PLURAL:$1|resultete|resultete}}',
'shown-title' => 'Fà vedè le $1 {{PLURAL:$1|resultete|resultete}} pe pàgene',
-'viewprevnext' => 'Vide ($1) ($2) ($3)',
+'viewprevnext' => 'Vide ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opzione de ricerche',
'searchmenu-exists' => "'''Stè 'na pàgene nnumenete \"[[\$1]]\" sus 'a sta Uicchipèdie'''",
'searchmenu-new' => "'''[[:\$1|Ccreje]] 'a pàgene \"[[:\$1|\$1]]\" sus 'a sta Uicchipèdie!'''",
'searchhelp-url' => 'Help:Condenute',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sfogghije le pàggene cu stu prefisse]]',
-'searchprofile-articles' => 'Pàggene de condenute',
-'searchprofile-articles-and-proj' => 'Pàggene de condenute & de pruggette',
-'searchprofile-project' => "Pàggene d'u pruggette",
-'searchprofile-images' => 'Le fail',
+'searchprofile-articles' => 'Vôsce',
+'searchprofile-project' => 'Pàggene de ajiute e de pruggette',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tutte',
'searchprofile-advanced' => 'Avanzete',
'searchprofile-articles-tooltip' => "Cirche jndr'à $1",
@@ -979,8 +992,6 @@ Tu puè [[:\$1|ccrejà sta pàgene]].",
'searchprofile-images-tooltip' => 'Cirche pe le fail',
'searchprofile-everything-tooltip' => "Cirche jndr'à tutte le vosce (combrese le vosce de le 'ngazzaminde)",
'searchprofile-advanced-tooltip' => "Cirche jndr'à le namespace personalizzete",
-'prefs-search-nsdefault' => 'Cirche ausanne le default:',
-'prefs-search-nscustom' => 'Cirche le namespace personalizzete:',
'search-result-size' => '$1 ({{PLURAL:$2|1 parole|$2 parole}})',
'search-result-score' => "'Mbortanze: $1%",
'search-redirect' => '(Redirette $1)',
@@ -993,11 +1004,12 @@ Tu puè [[:\$1|ccrejà sta pàgene]].",
'search-mwsuggest-disabled' => 'senza consiglie',
'search-relatedarticle' => 'Colleghete',
'mwsuggest-disable' => 'Disabbilete le conziglie in AJAX',
+'searcheverything-enable' => "Cirche jndr'à tutte le namespace",
'searchrelated' => 'colleghete',
'searchall' => 'tutte',
'showingresults' => "Stoche a fazze vedè aqquà sotte {{PLURAL:$1|'''1''' resultete|'''$1''' resultete}} ca accumenzene cu #'''$2'''.",
'showingresultsnum' => "Stoche a fazze vedè {{PLURAL:$3|'''1''' resultete|'''$3''' resultete}} ca accumenzene cu #'''$2'''.",
-'showingresultstotal' => "Ste vide aqquà sotte {{PLURAL:$4|resultete '''$1''' de '''$3'''|resultete '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultate '''$1 - $2''' de '''$3'''}} pe '''$4'''",
'nonefound' => "'''Vide bbuene''': Sulamende sus a certe namespace avène fatte 'a ricerche pe default.
Prueve mettènne nnande a l'inderrogaziona toje 'u prefisse '''all:''' pe cercà jndr'à tutte le namespace (ingludenne le pàggene de le 'ngazzaminde, le template, etc), o ause 'u namespace addò vuliva fa 'a ricerche cumme prefisse.",
'search-nonefound' => "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
@@ -1006,97 +1018,134 @@ Prueve mettènne nnande a l'inderrogaziona toje 'u prefisse '''all:''' pe cercà
'powersearch-ns' => "Cirche jndr'à le namespace:",
'powersearch-redir' => 'Liste de le ridirezionaminde',
'powersearch-field' => 'Cirche pe',
+'powersearch-togglelabel' => 'Verifiche:',
+'powersearch-toggleall' => 'Tutte',
+'powersearch-togglenone' => 'Ninde',
'search-external' => 'Ricerche esterne',
'searchdisabled' => "'A ricerche sus a {{SITENAME}} ha state disabbilitete.
Tu puè cercà ausanne Google.
Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàggene ca non ge sonde aggiornate.",
+# Quickbar
+'qbsettings' => 'Barra veloce',
+'qbsettings-none' => 'Ninde',
+'qbsettings-fixedleft' => 'Fissete a sinistre (Fixed left)',
+'qbsettings-fixedright' => 'Fissete a destre (Fixed right)',
+'qbsettings-floatingleft' => 'Volanne a sinistre (Floating left)',
+'qbsettings-floatingright' => 'Volanne a destre (Floating right)',
+
# Preferences page
-'preferences' => 'Me piece accussì',
-'mypreferences' => 'Me piece accussì',
-'prefs-edits' => 'Numere de cangiaminde:',
-'prefsnologin' => 'Non ge sinde colleghete',
-'prefsnologintext' => 'Tu a essere <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} colleghete]</span> pe \'mbostà le preferenze de l\'utinde.',
-'prefsreset' => "Le preferenze onne state azzerate da 'u stipamende.",
-'qbsettings' => 'Barra veloce',
-'qbsettings-none' => 'Ninde',
-'qbsettings-fixedleft' => 'Fissete a sinistre (Fixed left)',
-'qbsettings-fixedright' => 'Fissete a destre (Fixed right)',
-'qbsettings-floatingleft' => 'Volanne a sinistre (Floating left)',
-'qbsettings-floatingright' => 'Volanne a destre (Floating right)',
-'changepassword' => "Cange 'a password",
-'skin' => 'Skin',
-'skin-preview' => 'Andeprime',
-'math' => 'Math',
-'dateformat' => "Formete d'a date",
-'datedefault' => 'Nisciuna preferenze',
-'datetime' => 'Date e ore',
-'math_failure' => 'Analisi fallite',
-'math_unknown_error' => 'errore scanusciute',
-'math_unknown_function' => 'funziona scanusciute',
-'math_lexing_error' => 'errore de lessiche',
-'math_syntax_error' => 'errore de sintassi',
-'math_image_error' => "'A conversione d'u PNG ha fallite;
-condrolle ce l'installazione de latex, dvips, gs e convertitore jè corrette",
-'math_bad_tmpdir' => "Non ge puè scrivere o ccrejà 'na cartelle temboranea de math",
-'math_bad_output' => "Non ge puè scrivere o ccrejà 'na cartelle de destinazzione de math",
-'math_notexvc' => 'texvc eseguibbele perdute;
-pe piacere vide math/README pe configurà.',
-'prefs-personal' => "Profile de l'utende",
-'prefs-rc' => 'Cangiaminde recende',
-'prefs-watchlist' => 'Pàggene condrollete',
-'prefs-watchlist-days' => "Giurne da fà vedè jndr'à liste de le pàggene condrollete:",
-'prefs-watchlist-days-max' => '(massime 7 sciurne)',
-'prefs-watchlist-edits' => "Numere massime de cangiaminde ca se ponne fa vedè jndr'à liste de le pàggene condrollete spannute:",
-'prefs-watchlist-edits-max' => '(numere massime: 1000)',
-'prefs-misc' => 'Misc',
-'prefs-resetpass' => "Cange a 'password",
-'saveprefs' => 'Reggistre',
-'resetprefs' => "Pulizze le cangiaminde ca non g'è reggistrete",
-'restoreprefs' => "Repristene tutte le 'mbostaziune origginale",
-'textboxsize' => 'Cangiaminde...',
-'prefs-edit-boxsize' => "Dimenzione d'a pàgene de cangiamende.",
-'rows' => 'Righe:',
-'columns' => 'Culonne:',
-'searchresultshead' => 'Cirche',
-'resultsperpage' => 'Trasute pe pàgene:',
-'contextlines' => 'Linne pe collegamende:',
-'contextchars' => 'Condeste pe linee:',
-'stub-threshold' => 'Soglie pe <a href="#" class="stub">collegamende stub</a> de formattazione (byte):',
-'recentchangesdays' => "Sciurne da fà vedè jndr'à le cangiaminde recende:",
-'recentchangesdays-max' => '(massime $1 {{PLURAL:$1|sciurne|sciurne}})',
-'recentchangescount' => "Numere de cangiaminde da fà vedè jndr'à le urteme cangiaminde, storie de le pàggene e jndr'à l'archivije, pe default:",
-'savedprefs' => 'Le preferenze tue onne state aggiornete.',
-'timezonelegend' => "Orarie d'a zone:",
-'timezonetext' => "¹'U numere de le ore de l'orarie locale tue è differende da quidde d'u server (UTC).",
-'localtime' => 'Orarie lochele:',
-'timezoneselect' => "Orarie de l'area:",
-'timezoneuseserverdefault' => "Ause 'u valore de default d'u server",
-'timezoneuseoffset' => "Otre (specifiche 'a distanze)",
-'timezoneoffset' => 'Distanze¹:',
-'servertime' => "Orarie d'u server:",
-'guesstimezone' => "Jnghie da 'u browser",
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceane Atlandiche',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Oceano Indiane',
-'timezoneregion-pacific' => 'Oceano Pacifiche',
-'allowemail' => "Abbilite l'e-mail da l'otre utinde",
-'prefs-searchoptions' => 'Opzione de ricerche',
-'prefs-namespaces' => 'Namespaces',
-'defaultns' => "Cirche jndr'à chiste namespace pe default:",
-'default' => 'defolt',
-'files' => 'Fails',
-'prefs-custom-css' => 'CSS Personalizzete',
-'prefs-custom-js' => 'JS Personalizzete',
+'preferences' => 'Me piece accussì',
+'mypreferences' => 'Me piece accussì',
+'prefs-edits' => 'Numere de cangiaminde:',
+'prefsnologin' => 'Non ge sinde colleghete',
+'prefsnologintext' => 'Tu a essere <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} colleghete]</span> pe \'mbostà le preferenze de l\'utinde.',
+'changepassword' => "Cange 'a password",
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Andeprime',
+'prefs-math' => 'Math',
+'datedefault' => 'Nisciuna preferenze',
+'prefs-datetime' => 'Date e ore',
+'prefs-personal' => "Profile de l'utende",
+'prefs-rc' => 'Cangiaminde recende',
+'prefs-watchlist' => 'Pàggene condrollete',
+'prefs-watchlist-days' => "Giurne da fà vedè jndr'à liste de le pàggene condrollete:",
+'prefs-watchlist-days-max' => '(massime 7 sciurne)',
+'prefs-watchlist-edits' => "Numere massime de cangiaminde ca se ponne fa vedè jndr'à liste de le pàggene condrollete spannute:",
+'prefs-watchlist-edits-max' => '(numere massime: 1000)',
+'prefs-watchlist-token' => 'Token de le pàggene condrollate:',
+'prefs-misc' => 'Misc',
+'prefs-resetpass' => "Cange a 'password",
+'prefs-email' => "Opziune de l'e-mail",
+'prefs-rendering' => 'Aspette',
+'saveprefs' => 'Reggistre',
+'resetprefs' => "Pulizze le cangiaminde ca non g'è reggistrete",
+'restoreprefs' => "Repristene tutte le 'mbostaziune origginale",
+'prefs-editing' => 'Cangiaminde...',
+'prefs-edit-boxsize' => "Dimenzione d'a pàgene de cangiamende.",
+'rows' => 'Righe:',
+'columns' => 'Culonne:',
+'searchresultshead' => 'Cirche',
+'resultsperpage' => 'Trasute pe pàgene:',
+'contextlines' => 'Linne pe collegamende:',
+'contextchars' => 'Condeste pe linee:',
+'stub-threshold' => 'Soglie pe <a href="#" class="stub">collegamende stub</a> de formattazione (byte):',
+'recentchangesdays' => "Sciurne da fà vedè jndr'à le cangiaminde recende:",
+'recentchangesdays-max' => '(massime $1 {{PLURAL:$1|sciurne|sciurne}})',
+'recentchangescount' => 'Numere de cangiaminde da fà vedè pe default:',
+'prefs-help-recentchangescount' => "Quiste 'nglude le urteme cangiaminde, le storie de le pàggene e le archivije.",
+'prefs-help-watchlist-token' => "Anghienne stu cambe cu le chiave segrete avène generate 'nu RSS feed pa liste de le pàggene condrollate.<br />
+Ogneune ca canosce 'a chiave de stu cambe se pò leggere 'a liste de le pàggene condrollate tue, accussì scacchie 'nu valore secure.<br />
+Aqquà ste 'nu valore generate a uecchije ca tu puè ausà: $1",
+'savedprefs' => 'Le preferenze tue onne state aggiornete.',
+'timezonelegend' => "Orarie d'a zone:",
+'localtime' => 'Orarie lochele:',
+'timezoneuseserverdefault' => "Ause 'u valore de default d'u server",
+'timezoneuseoffset' => "Otre (specifiche 'a distanze)",
+'timezoneoffset' => 'Distanze¹:',
+'servertime' => "Orarie d'u server:",
+'guesstimezone' => "Jnghie da 'u browser",
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antartide',
+'timezoneregion-arctic' => 'Artide',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceane Atlandiche',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Oceano Indiane',
+'timezoneregion-pacific' => 'Oceano Pacifiche',
+'allowemail' => "Abbilite l'e-mail da l'otre utinde",
+'prefs-searchoptions' => 'Opzione de ricerche',
+'prefs-namespaces' => 'Namespaces',
+'defaultns' => "Cirche jndr'à chiste namespace:",
+'default' => 'defolt',
+'prefs-files' => 'Fails',
+'prefs-custom-css' => 'CSS Personalizzete',
+'prefs-custom-js' => 'JS Personalizzete',
+'prefs-reset-intro' => "Tu puè ausà sta pàgene pe azzerà le preferenze tue a quidde de default d'u site.
+Quiste non ge pò essere annullate.",
+'prefs-emailconfirm-label' => "Conferme de l'e-mail:",
+'prefs-textboxsize' => "Dimenzione d'a finestre de le cangiaminde",
+'youremail' => 'Poste:',
+'username' => "Nome de l'utende:",
+'uid' => 'ID Utende:',
+'prefs-memberingroups' => "Membre {{PLURAL:$1|d'u gruppe|de le gruppe}}:",
+'prefs-registration' => 'Orarie de reggistrazzione:',
+'yourrealname' => 'Nome vere:',
+'yourlanguage' => 'Lènga:',
+'yournick' => 'Firma toje:',
+'prefs-help-signature' => "Le commende sus a le pàggene de le 'ngazzaminde avessere a essere sgnate cu \"<nowiki>~~~~</nowiki>\" ca pò avène convertite cu 'a firma toje e l'orarie.",
+'badsig' => "'A firme grezze jè sbagliete.
+Condrolle le tag HTML.",
+'badsiglength' => "'A firme jè troppe longhe.
+Addà essere assaje assaje sotte a $1 {{PLURAL:$1|carattere|carattere}}.",
+'yourgender' => 'Sesso:',
+'gender-unknown' => 'No specificate',
+'gender-male' => 'Maschele',
+'gender-female' => 'Femmene',
+'prefs-help-gender' => "Opzionale: ausete pe l'indirizzamende corrette d'u sesse jndr'à 'u software. Sta 'mbormazione jè pubbliche.",
+'email' => 'Poste',
+'prefs-help-realname' => "'U nome vere (quidde d'u munne reale) jè facoltative.
+Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
+'prefs-help-email' => "L'indirizze e-mail jè facoltative ma te dè 'a possibbilità de mannarte 'na password nova nove ce tu te scuèrde quedde ca tenive.
+Tu puè pure scacchià de lassà otre condatte ausanne l'utende tue o le pàggene de le 'ngazzaminde senza ca abbesogne de fa canoscere l'idendità toje.",
+'prefs-help-email-required' => "L'indirizze e-mail jè obbligatorie.",
+'prefs-info' => "'Mbormaziune nderra-nderre",
+'prefs-i18n' => 'Indernazzionalizzazzione',
+'prefs-signature' => 'Firme',
+'prefs-dateformat' => "Formate d'a data",
+'prefs-timeoffset' => "Differenze d'orarie",
+'prefs-advancedediting' => 'Opzione avanzate',
+'prefs-advancedrc' => 'Opzione avanzate',
+'prefs-advancedrendering' => 'Opzione avanzate',
+'prefs-advancedsearchoptions' => 'Opzione avanzate',
+'prefs-advancedwatchlist' => 'Opzione avanzate',
+'prefs-display' => "Fà vedè l'opzione",
+'prefs-diffs' => 'Diff',
# User rights
-'userrights' => 'Gestione de le deritte utende', # Not used as normal message but as header for the special page itself
+'userrights' => 'Gestione de le deritte utende',
'userrights-lookup-user' => "Gestisce le gruppe de l'utinde",
'userrights-user-editname' => "Mitte 'nu nome utende:",
'editusergroup' => 'Cange le gruppe utinde',
@@ -1104,6 +1153,7 @@ pe piacere vide math/README pe configurà.',
'userrights-editusergroup' => "Cange le gruppe d'utinde",
'saveusergroups' => "Reggistre le gruppe d'utinde",
'userrights-groupsmember' => 'Membre de:',
+'userrights-groupsmember-auto' => 'Membre imblicite de:',
'userrights-groups-help' => "Tu puè alterà le gruppe addò de st'utende jè iscritte:
* 'Na spunde de verifiche significhe ca l'utende stè jndr'à stu gruppe.
* 'A spunda de verifica luate significhe ca l'utende non ge stè jndr'à stu gruppe.
@@ -1168,6 +1218,7 @@ pe piacere vide math/README pe configurà.',
'right-bigdelete' => "Scangille le pàggene cu 'na storia longa longa",
'right-deleterevision' => 'Scangille o repristine le revisiune specifiche de le pàggene',
'right-deletedhistory' => "Vide le versiune, d'u cunde, scangellate, senza 'u teste lore associate",
+'right-deletedtext' => "Vide 'u teste scangellate e le cangiaminde 'mbrà le versiune scangellate",
'right-browsearchive' => 'Cirche le pàggene scangellate',
'right-undelete' => "Repristine 'na pàgene",
'right-suppressrevision' => "Revide e repristine le revisiune scunnete da l'amministrature",
@@ -1181,6 +1232,8 @@ pe piacere vide math/README pe configurà.',
'right-editprotected' => 'Cange le pàggene prutette (senza protezzione a cascata)',
'right-editinterface' => "Cange l'inderfacce utende",
'right-editusercssjs' => "Cange 'u CSS e 'u JS de l'otre utinde",
+'right-editusercss' => "Cange 'u CSS de l'otre utinde",
+'right-edituserjs' => "Cange 'u JS de l'otre utinde",
'right-rollback' => "Annulle velocemende le cangiaminde de l'urteme utende ca ha cangiate 'na pàgena particolare",
'right-markbotedits' => 'Marche le cangiaminde annullate cumme cangiaminde de bot',
'right-noratelimit' => "Non g'à state tuccate da le limite de le pundegge",
@@ -1197,6 +1250,8 @@ pe piacere vide math/README pe configurà.',
'right-siteadmin' => "Blocche e sblocche 'u database",
'right-reset-passwords' => "Azzere l'otre password de l'utinde",
'right-override-export-depth' => "L'esportazione de pàggene inglude pàggene collegate 'mbonde a 'na profonnetà de 5",
+'right-versiondetail' => "Fà vedè le 'mbormaziune d'a versione estese d'u software",
+'right-sendemail' => "Manne 'a mail a otre utinde",
# User rights log
'rightslog' => "Archivie de le diritte de l'utende",
@@ -1246,6 +1301,15 @@ pe piacere vide math/README pe configurà.',
'recentchanges-legend' => 'Opzione pe le cangiaminde recende',
'recentchangestext' => 'Tracce le cchiù recednde cangiaminde de Uicchi sus a sta pàgene.',
'recentchanges-feed-description' => "Tracce le urteme cangiaminde sus 'a sta Uicchipedie jndr'à quiste feed.",
+'recentchanges-label-legend' => 'Legende: $1',
+'recentchanges-legend-newpage' => '$1 - pàgena nove',
+'recentchanges-label-newpage' => "Stu cangiamende ha ccrejate 'na pàgena nove",
+'recentchanges-legend-minor' => '$1 - Cangiamende stuèdeche',
+'recentchanges-label-minor' => "Quiste ète 'nu cangiamende stuèdeche",
+'recentchanges-legend-bot' => '$1 - cangiamende de bot',
+'recentchanges-label-bot' => "Stu cangiamende ha state fatte da 'nu bot",
+'recentchanges-legend-unpatrolled' => '$1 - cangiamende non condrollate',
+'recentchanges-label-unpatrolled' => "Stu cangiamende non g'à state angore condrollate",
'rcnote' => "Sotte {{PLURAL:$1|jè '''1''' cangiamende|sonde le urteme '''$1''' cangiaminde}} jndr'à l'urteme{{PLURAL:$2|sciurne|'''$2''' sciurne}}, jndr'à $5, $4.",
'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' (fine a '''$1''' mustrete).",
'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
@@ -1263,7 +1327,6 @@ pe piacere vide math/README pe configurà.',
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|utende|utinde}} ca condrollene]',
'rc_categories' => 'Limite de le categorije (separate cu "|")',
'rc_categories_any' => 'Tutte',
@@ -1274,6 +1337,8 @@ pe piacere vide math/README pe configurà.',
# Recent changes linked
'recentchangeslinked' => 'Cangiaminde culleghete',
+'recentchangeslinked-feed' => 'Cangiaminde culleghete',
+'recentchangeslinked-toolbox' => 'Cangiaminde culleghete',
'recentchangeslinked-title' => 'Cangiaminde culleghete a "$1"',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => "Non g'onne state fatte cangiaminde sus 'a sta pàgene jndr'à 'u periede selezionete.",
@@ -1285,8 +1350,8 @@ Pàggene sus 'a [[Special:Watchlist|le Pàggene condrollete]] sonde in '''grasce
# Upload
'upload' => "Careche 'u file",
'uploadbtn' => "Careche 'nu fail",
-'reupload' => 'Recareche',
'reuploaddesc' => "Scangille 'u carecamende e tuerne a 'a schermete de le carecaminde",
+'upload-tryagain' => "Conferme 'u cangiamende d'a descrizione d'u file",
'uploadnologin' => 'non ge sinde colleghete',
'uploadnologintext' => 'Tu a essere [[Special:UserLogin|colleghete]] pe carecà le file.',
'upload_directory_missing' => "'A cartelle de le carecaminde ($1) s'à perdute o pò essere ca non g'à state ccreate da 'u webserver.",
@@ -1319,6 +1384,7 @@ Vide 'a [[Special:NewFiles|gallerie de le file nuève]] pe vedè l'otre andeprim
'illegalfilename' => "'U nome d'u file \"\$1\" tène carattere ca non ge sonde conzendite jndr'à le titele de le pàggene.
Pe piacere vide ce renomene 'u file e pruève a carecarle 'n'otra vote.",
'badfilename' => '\'U nome d\'u file ha state cangete jndr\'à "$1".',
+'filetype-mime-mismatch' => "L'estenzione d'u file non ge se iacchie cu 'u tipe MIME.",
'filetype-badmime' => 'Le file d\'u tipe MIME "$1" non ge se ponne carecà.',
'filetype-bad-ie-mime' => 'Non ge pozze carecò stu file purcè Internet Explorer \'u vole cumme "$1", e allore jidde se penze ca jè \'nu tipe de file potenzialmende pericolose.',
'filetype-unwanted-type' => "'''\".\$1\"''' ète 'nu tipe de file ca non ge vulime.
@@ -1342,7 +1408,6 @@ Pe fà assè 'u riepileghe tu tìne abbesogne de cangiarle a mane.
* Nome d'u file ca vuè cu careche: '''<tt>[[:$1]]</tt>'''
* Nome d'u file ca già esiste: '''<tt>[[:$2]]</tt>'''
Pe piacere vide ce scacchie 'nu nome differende.",
-'fileexists-thumb' => "<center>'''File già ca esiste'''</center>",
'fileexists-thumbnail-yes' => "'U file pare ca jè 'n'immaggine de dimenzione ridotte ''(miniature)''. [[$1|thumb]]
Pe piacere condrolle 'u file '''<tt>[[:$1]]</tt>'''.
Ce 'u file condrollete jè d'a stesse dimenzione de quedda originale allore non ge stè abbesogne de carecà 'na miniatura de cchiù.",
@@ -1358,6 +1423,7 @@ ce tu vuè angore carecà stu file, pe piacere tuèrne rrete e ause 'nu nome nu
Avissa verificà 'a storie d'a scangellazzione d'u file apprime de condinuà a carecarle.",
'successfulupload' => 'Carecamende sciute apposte',
'uploadwarning' => 'Avvise de carecamende',
+'uploadwarning-text' => "Pe piacere cange 'a descrizione d'u file sotte e pruève 'notra vote.",
'savefile' => "Reggistre 'u file",
'uploadedimage' => 'carechete "[[$1]]"',
'overwroteimage' => 'ha state carechete \'na versiona nove de "[[$1]]"',
@@ -1366,12 +1432,14 @@ Avissa verificà 'a storie d'a scangellazzione d'u file apprime de condinuà a c
'php-uploaddisabledtext' => "Le carecaminde de file sonde disabilitate in PHP.<br />
Pe piacere verifiche le 'mbostaziune d'u ''file_uploads''.",
'uploadscripted' => "Stu file condene HTML o codece de script ca ponne essere inderpretete jndr'à 'nu mode sbagliete da le browser.",
-'uploadcorrupt' => "'U file face schife o tène 'n'estenziona incorrette.
-Pe piacere condrolle 'u file e carechele 'n'otra vote.",
'uploadvirus' => "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
+'upload-source' => 'File sorgende',
'sourcefilename' => "Nome d'u fail d'origgine:",
+'sourceurl' => 'URL sorgende:',
'destfilename' => "Nome d'u file de destinazione:",
'upload-maxfilesize' => "Dimenzione massima d'u file: $1",
+'upload-description' => "Descrizione d'u file",
+'upload-options' => 'Opzione pu carecamende',
'watchthisupload' => 'Condrolle stu file',
'filewasdeleted' => "'Nu file ca se chiamave cumme a quidde tue ha state apprime carecate e pò ha state scangellete.
Tu avissa condrollà 'u $1 apprime ca condinue cu 'u carecamende.",
@@ -1382,15 +1450,46 @@ L'archivije de le scangellaminde pe stu file 'u iacchije aqquà pe convenienze:"
'filename-bad-prefix' => "'U nome d'u file ca tu ste careche accumenze pe '''\"\$1\"''', ca normalmende jè 'u nome ca assegne a machena fotografeche e non 'nu nome descrittive d'u file ca vuè ccu careche.
Pe piacere scacchie 'n'otre nome ca jè cchiù descrittive.",
-'upload-proto-error' => 'Protocolle scorrette',
-'upload-proto-error-text' => "Le carecaminde remote onne abbesogne de le URL ca accumenzene cu 'a parole <code>http://</code> o <code>ftp://</code>.",
-'upload-file-error' => 'Errore inderne',
-'upload-file-error-text' => "S'à verifichete 'n'errore inderne quanne è pruvete a ccreja 'nu file temboranee sus a 'u server.
+'upload-proto-error' => 'Protocolle scorrette',
+'upload-proto-error-text' => "Le carecaminde remote onne abbesogne de le URL ca accumenzene cu 'a parole <code>http://</code> o <code>ftp://</code>.",
+'upload-file-error' => 'Errore inderne',
+'upload-file-error-text' => "S'à verifichete 'n'errore inderne quanne è pruvete a ccreja 'nu file temboranee sus a 'u server.
Pe piacere condatte 'n'[[Special:ListUsers/sysop|amministratore]].",
-'upload-misc-error' => 'Errore de carecamende scanusciute',
-'upload-misc-error-text' => "'N'errore scanusciute s'a verificate quanne ste facime 'u carecamende.
+'upload-misc-error' => 'Errore de carecamende scanusciute',
+'upload-misc-error-text' => "'N'errore scanusciute s'a verificate quanne ste facime 'u carecamende.
Pe piacere verifiche ca l'URL jè valide e accessibbele e pruève 'n'otra vote.
Ce 'u probbleme angore jè presende, condatte 'n'[[Special:ListUsers/sysop|amministratore]].",
+'upload-too-many-redirects' => "'A URL tène troppe redirezionaminde",
+'upload-unknown-size' => 'Dimenziona scanusciute',
+'upload-http-error' => "S'a verificate 'n'errore HTTP: $1",
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Accesse negate',
+'img-auth-nopathinfo' => "No se iacchie PATH_INFO.
+'U server tue non g'è 'mbostate o non ge passe st'mbormazione.
+Pò essere ca jè basate sus a 'u CGI e non ge pò supportà img_auth.
+Vide http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "'U percorse richieste non ge stè jndr'à cartelle de carecamende configurate",
+'img-auth-badtitle' => 'Non ge se pò costruì \'nu titele valide da "$1".',
+'img-auth-nologinnWL' => 'Tu non ge sì collegate e "$1" non ge stè jndr\'à lista vianghe.',
+'img-auth-nofile' => 'File "$1" non g\'esiste.',
+'img-auth-isdir' => 'Tu ste ppruève a trasè jndr\'à cartelle "$1".
+Sulamende le file ponne trasè.',
+'img-auth-streaming' => 'Streaming "$1".',
+'img-auth-public' => "'A funziona de img_auth.php jè 'u resultate de le file da 'na Uicchi private.
+Sta Uicchi jè configurate cumme a 'na Uicchi pubbleche.
+Pe 'na securezze a uerre proprie, img_auth.php jè disabbilitate.",
+'img-auth-noread' => 'L\'utende non ge tène l\'accesse pe leggere "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL invalide: $1',
+'http-invalid-scheme' => 'Le URL cu le "$1" scheme non ge sonde supportate.',
+'http-request-error' => "Richieste HTTP fallite pe 'n'errore scanusciute.",
+'http-read-error' => "Errore jndr'à letture de l' HTTP",
+'http-timed-out' => 'Richieste HTTP fore timbe.',
+'http-curl-error' => "Errore analizzanne l'URL: $1",
+'http-host-unreachable' => "Non ge riesche a raggiungere l'URL",
+'http-bad-status' => "Ha state 'nu probbleme duranne 'a richieste HTTP: $1, $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "Non ge riesche a raggiungere l'URL",
@@ -1402,6 +1501,7 @@ Pe piacere condrolle ca 'u site funzione, aspitte 'nu picche e pruève 'n'otra v
Sinde a me, vue ccu pruève quanne ste mene casine?",
'license' => 'Licenziete da:',
+'license-header' => 'Licenziate da',
'nolicense' => 'Ninde selezionete',
'license-nopreview' => "(L'andeprime non g'è disponibbile)",
'upload_source_url' => " ('na URL, valide e accessibbile pubblicamende)",
@@ -1422,6 +1522,7 @@ Ce cazze sus a 'a testate d'a colonne cange l'arrengamende.",
'listfiles_count' => 'Versiune',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'cunde',
'filehist-help' => "Cazze sus 'na date/orarie pe vedè 'u fail a cumme asseva jndr'à quidde timbe.",
'filehist-deleteall' => 'scangille tutte',
@@ -1436,6 +1537,7 @@ Ce cazze sus a 'a testate d'a colonne cange l'arrengamende.",
'filehist-dimensions' => 'Dimenziune',
'filehist-filesize' => "Dimenzione d'u file",
'filehist-comment' => 'Commende',
+'filehist-missing' => 'File ca no se iacchje',
'imagelinks' => 'Collegaminde de file',
'linkstoimage' => '{{PLURAL:$1|sta pàgene apponde |$1 ste pàggene appondene}} a stu fail:',
'linkstoimage-more' => "Cchiù de $1 {{PLURAL:$1|pàgene se colleghe|pàggene se collegane}} a stu file.<br />
@@ -1445,15 +1547,16 @@ Ce cazze sus a 'a testate d'a colonne cange l'arrengamende.",
'morelinkstoimage' => 'Vide [[Special:WhatLinksHere/$1|cchiù collegaminde]] a stu file.',
'redirectstofile' => "{{PLURAL:$1|'U seguende file se ridirezione|Le seguende $1 file se ridirezionane}} a stu file:",
'duplicatesoffile' => "{{PLURAL:$1|'U seguende file ète 'nu|Le seguende $1 file sonde}} duplicate de stu file ([[Special:FileDuplicateSearch/$2|cchiù 'mbormaziune]]):",
-'sharedupload' => 'Stu file avène da $1 e pò essere ausate da otre pruggette.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => "Pe piacere vide $1 pe avè cchiù 'mbormaziune.",
-'shareduploadwiki-desc' => "'A descrizione de le sue $1 jè visualizzete aqquà sotte.",
-'shareduploadwiki-linktext' => "pàgene d'a descrizione d'u file",
-'noimage' => "Non g'esiste nisciune fail cu stu nome, ma tu puè $1.",
-'noimage-linktext' => 'carechene une',
+'sharedupload' => 'Stu file avène da $1 e pò essere ausate da otre pruggette.',
+'sharedupload-desc-there' => "Stu file è da $1 e pò essere ausate pe otre pruggette.<br />
+Pe piacere vide 'a [$2 pàgene de descrizione d'u file] pe maggiore 'mbormaziune.",
+'sharedupload-desc-here' => "Stu file è da $1 e pò essere ausate pe otre pruggette.<br />
+'A descriziona sus a [$2 pàgene de descrizione d'u file] ste aqquà sotte.",
+'filepage-nofile' => 'Nisciune file cu stu nome esiste.',
+'filepage-nofile-link' => "Nisciune file cu stu nome esiste, ma tu 'u puè [$1 carecà].",
'uploadnewversion-linktext' => "Careche 'na versiona nove de stu fail",
-'shared-repo-from' => 'da $1', # $1 is the repository name
-'shared-repo' => "'nu condenitore de cose condivise", # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'da $1',
+'shared-repo' => "'nu condenitore de cose condivise",
# File reversion
'filerevert' => "'Nvirte $1",
@@ -1484,6 +1587,7 @@ Ce cazze sus a 'a testate d'a colonne cange l'arrengamende.",
** Violazione d'u Copyright
** File duplichete",
'filedelete-edit-reasonlist' => "Cange le mutive d'a scangellazione",
+'filedelete-maintenance' => "Scangellaminde e repristinaminde de le file jè temboraneamende disabbilitate duranne 'a manutenzione.",
# MIME search
'mimesearch' => "Ricerca jndr'à 'u MIME",
@@ -1506,7 +1610,7 @@ Arrecuèrdete de condrollà pe otre collegaminde a le template apprime de scange
# Random page
'randompage' => 'Pàgene a uecchie',
-'randompage-nopages' => 'Non ge stonne pàggene jndr\'à \'u namespace "$1".',
+'randompage-nopages' => "Non ge stonne pàggene jndr'à {{PLURAL:$2|'u seguende namespace|le seguende namespace}}: $1.",
# Random redirect
'randomredirect' => 'Redirezionamende a uecchie',
@@ -1518,6 +1622,7 @@ Arrecuèrdete de condrollà pe otre collegaminde a le template apprime de scange
'statistics-header-edits' => 'Cange le statisteche',
'statistics-header-views' => 'Vide le statisteche',
'statistics-header-users' => "Statisteche de l'utende",
+'statistics-header-hooks' => 'Otre statisteche',
'statistics-articles' => 'Pàggene de le condenute',
'statistics-pages' => 'Pàggene',
'statistics-pages-desc' => "Tutte le pàggene jndr'à Uicchi, mettènne le pàggene de le 'ngazzaminde, ridirezionaminde, ecc.",
@@ -1548,8 +1653,8 @@ Mò s'avène redirette a [[$2]].",
'brokenredirects' => 'Redirezionamninde scuasciete',
'brokenredirectstext' => "Le ridirezionaminde ca seguene appondene a pàggene ca non g'esistene:",
-'brokenredirects-edit' => '(cange)',
-'brokenredirects-delete' => '(scangille)',
+'brokenredirects-edit' => 'cange',
+'brokenredirects-delete' => 'scangille',
'withoutinterwiki' => 'Pàggene senza collegaminde a otre Uicchi',
'withoutinterwiki-summary' => 'Le pàggene seguende non ge sonde collegate a nisciuna otra versione de lènghe diverse.',
@@ -1658,16 +1763,17 @@ Pò condenè une cchiù carattere ca non ge ponne essere ausate jndr'à le tite
# Special:Categories
'categories' => 'Le Categorije',
-'categoriespagetext' => 'Le seguende categorije tènene pàggene o media.
-[[Special:UnusedCategories|Categorije non ausete]] non ge se vèdene aqquà.
-Vide pure [[Special:WantedCategories|Categorije cerchete]].',
+'categoriespagetext' => "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pàggene o media.
+[[Special:UnusedCategories|Categorije non ausate]] non ge se vèdene aqquà.
+Vide pure [[Special:WantedCategories|Categorije cercate]].",
'categoriesfrom' => 'Fà vedè le categorije partenne da:',
'special-categories-sort-count' => 'ordere pe condegge',
'special-categories-sort-abc' => 'ordere alfabbeticamende',
# Special:DeletedContributions
-'deletedcontributions' => "Condrebbute de l'utende scangellete",
-'deletedcontributions-title' => "Condrebbute de l'utende scangellate",
+'deletedcontributions' => "Condrebbute de l'utende scangellete",
+'deletedcontributions-title' => "Condrebbute de l'utende scangellate",
+'sp-deletedcontributions-contribs' => 'condrebbute',
# Special:LinkSearch
'linksearch' => 'Collegaminde fore a Uicchipèdie',
@@ -1683,6 +1789,16 @@ Protocolle supportate: <tt>$1</tt>',
'listusersfrom' => "Fà vedè l'utinde partenne da:",
'listusers-submit' => 'Fa vedè',
'listusers-noresult' => 'Nisciune utende acchiete.',
+'listusers-blocked' => '(bloccate)',
+
+# Special:ActiveUsers
+'activeusers' => "Liste de l'utinde attive",
+'activeusers-intro' => "Queste jè 'n'elenghe de utinde ca avene fatte certe tipe de attività fine a l'urteme $1 {{PLURAL:$1|sciurne|sciurne}}.",
+'activeusers-count' => "$1 {{PLURAL:$1|cangiamende|cangiaminde}} jndr'à l'urteme {{PLURAL:$3|sciurne|$3 sciurne}}",
+'activeusers-from' => "Fà vedè l'utinde partenne da:",
+'activeusers-hidebots' => 'Scunne le bot',
+'activeusers-hidesysops' => 'Scunne le amministrature',
+'activeusers-noresult' => 'Nisciune utende acchiate.',
# Special:Log/newusers
'newuserlogpage' => 'Archivije de ccreazione de le utinde',
@@ -1693,18 +1809,23 @@ Protocolle supportate: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Cunde utende ccrejete automaticamende',
# Special:ListGroupRights
-'listgrouprights' => 'Deritte de le gruppe utinde',
-'listgrouprights-summary' => "'A liste ca ste vide ète 'na liste de le gruppe utinde ccreiate sus a sta Uicchi, cu le lore deritte d'accesse associate.
+'listgrouprights' => 'Deritte de le gruppe utinde',
+'listgrouprights-summary' => "'A liste ca ste vide ète 'na liste de le gruppe utinde ccreiate sus a sta Uicchi, cu le lore deritte d'accesse associate.
Ponne stà [[{{MediaWiki:Listgrouprights-helppage}}|'mbormaziune de cchiù]] sus a le deritte individuale.",
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Diritte',
-'listgrouprights-helppage' => 'Help:Deritte de le gruppe',
-'listgrouprights-members' => '(liste de le membre)',
-'listgrouprights-right-display' => '$1 ($2)',
-'listgrouprights-addgroup' => 'Puè aggiungere {{PLURAL:$2|gruppe|gruppe}}: $1',
-'listgrouprights-removegroup' => 'Puè scangellà {{PLURAL:$2|gruppe|gruppe}}: $1',
-'listgrouprights-addgroup-all' => 'Puè aggiungere tutte le gruppe',
-'listgrouprights-removegroup-all' => 'Puè luà tutte le gruppe',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dà \'nu deritte</span>
+* <span class="listgrouprights-revoked">Live \'nu deritte</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Diritte',
+'listgrouprights-helppage' => 'Help:Deritte de le gruppe',
+'listgrouprights-members' => '(liste de le membre)',
+'listgrouprights-addgroup' => 'Puè aggiungere {{PLURAL:$2|gruppe|gruppe}}: $1',
+'listgrouprights-removegroup' => 'Puè scangellà {{PLURAL:$2|gruppe|gruppe}}: $1',
+'listgrouprights-addgroup-all' => 'Puè aggiungere tutte le gruppe',
+'listgrouprights-removegroup-all' => 'Puè luà tutte le gruppe',
+'listgrouprights-addgroup-self' => "Aggiunge {{PLURAL:$2|'u gruppe|le gruppe}} a 'u cunde utende mije: $1",
+'listgrouprights-removegroup-self' => "Live {{PLURAL:$2|'u gruppe|le gruppe}} da 'u cunde utende mije: $1",
+'listgrouprights-addgroup-self-all' => "Mitte tutte le gruppe sus a 'u cunde utende mije",
+'listgrouprights-removegroup-self-all' => "Live tutte le gruppe da 'u cunde utende mije",
# E-mail user
'mailnologin' => 'Nisciune indirizze de invie',
@@ -1779,7 +1900,7 @@ Le cangiaminde future a sta pàgene e 'a pàgene de le 'ngazzaminde associete le
'enotif_body' => 'Care $WATCHINGUSERNAME,
-\'A pàgene $PAGETITLE de {{SITENAME}} ha state $CHANGEDORCREATED \'u $PAGEEDITDATE da $PAGEEDITOR, vide $PAGETITLE_URL pa versina corrende.
+\'A pàgene $PAGETITLE de {{SITENAME}} ha state $CHANGEDORCREATED \'u $PAGEEDITDATE da $PAGEEDITOR, vide $PAGETITLE_URL pa versiona corrende.
$NEWPAGE
@@ -1796,7 +1917,10 @@ Tu puè pure azzerà \'a spunde de le notifiche pe tutte le pàggene condrollete
--
Pe cangià le \'mbostaziune d\'a liste de le pàggene condrollete tue, vè vide
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Pe scangellà \'a pàgene da \'a liste de le pàggene condrollate, vè vide
+$UNWATCHURL
Segnalaziune e otre assistenze:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1811,10 +1935,11 @@ Segnalaziune e otre assistenze:
'delete-confirm' => 'Scangille "$1"',
'delete-backlink' => '← $1',
'delete-legend' => 'Scangille',
-'historywarning' => "Vide Bbuene: 'a pàgene ca ste scangille tène 'na storie de cangiaminde:",
+'historywarning' => "'''Vide Bbuene:''' 'a pàgene ca ste scangille tène 'na storie de cangiaminde cu cchiù o mene $1 {{PLURAL:$1|revisione|revisiune}}:",
'confirmdeletetext' => "Vide Bbuene, vide ca ste scangille 'na pàgene ca tène pure nu sbuenne de cangiaminde.
Conferme quidde ca ste face, ce si sicure ca è capite quidde ca ste cumbine e ce è corrette rispette a [[{{MediaWiki:Policy-url}}|le regole de scangellazione]], ce no statte quiete.",
'actioncomplete' => 'Aziona Combletete',
+'actionfailed' => 'Aziona fallite',
'deletedtext' => '"<nowiki>$1</nowiki>" onne state scangillete.
Vide $2 pe \'na reggistrazione de le scangellaziune recende.',
'deletedarticle' => 'scangillete "[[$1]]"',
@@ -1838,21 +1963,22 @@ Scangellanne pò ccreja casine sus a le operazione d'u database de {{SITENAME}};
và cunge cunge!",
# Rollback
-'rollback' => 'Annulle le cangiaminde',
-'rollback_short' => 'Annulle',
-'rollbacklink' => "annulle 'u cangiaminde",
-'rollbackfailed' => 'Annullamende fallite',
-'cantrollback' => "Non ge se pò annullà stu cangiamende;
+'rollback' => 'Annulle le cangiaminde',
+'rollback_short' => 'Annulle',
+'rollbacklink' => "annulle 'u cangiaminde",
+'rollbackfailed' => 'Annullamende fallite',
+'cantrollback' => "Non ge se pò annullà stu cangiamende;
l'urteme condrebbutore jè sulamende l'autore de sta pàgene.",
-'alreadyrolled' => "Non ge se pò annulla l'urteme cangiamende de [[:$1]] da [[User:$2|$2]] ([[User talk:$2|'Ngazzaminde]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'alreadyrolled' => "Non ge se pò annulla l'urteme cangiamende de [[:$1]] da [[User:$2|$2]] ([[User talk:$2|'Ngazzaminde]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
quacche otre ha cangiate o annullate ggià 'a pàgene.
L'urteme cangiamende d'a pàgene ere de [[User:$3|$3]] ([[User talk:$3|'Ngazzaminde]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "'U riepileghe d'u cangiamende ere: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Cangiaminde annullate da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) a l'urtema versione da [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => "Cangiaminde annullate da $1;
+'editcomment' => "'U riepileghe d'u cangiamende ere: \"''\$1''\".",
+'revertpage' => "Cangiaminde annullate da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) a l'urtema versione da [[User:$1|$1]]",
+'revertpage-nouser' => "Le cangiaminde annullate ba (nome utende luate) a l'urtema revisione da [[User:$1|$1]]",
+'rollback-success' => "Cangiaminde annullate da $1;
turnate rete a l'urtema versione da $2.",
-'sessionfailure' => "Pare ca stonne probbleme cu 'a sessiona toje de collegamende;
+'sessionfailure' => "Pare ca stonne probbleme cu 'a sessiona toje de collegamende;
st'azione ha state scangellate pe precauzione condre a le 'ngasinaminde d'a sessione.
Pe piacere cazze \"rete\" e recareche 'a pàgene da addò tu è venute e pruève 'n'otra vote.",
@@ -1872,7 +1998,7 @@ Vide 'a [[Special:ProtectedPages|liste de le pàggene prutette]] pa liste de le
'protectexpiry' => 'More:',
'protect_expiry_invalid' => 'Orarie de scadenze jè invalide.',
'protect_expiry_old' => "L'ore de scadenza jè jndr'à 'u passate.",
-'protect-unchain' => 'Sblocche le permisse de spustaminde',
+'protect-unchain-permissions' => 'Sbluecche otre opzione de protezzione',
'protect-text' => "Tu puè vedè e cangià 'u levèlle de protezzione p'a pàgene '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Tu non ge puè cangià le levèlle de protezzione quanne si bloccate.
Aqquà stonne le 'mbostaziune corrende pa pàgene '''$1''':",
@@ -1902,7 +2028,7 @@ Tu puè cangià 'u levèlle de protezione de sta pàgene ma stu cangiamende non
** Uerre de cangiaminde condro producende
** Ierte traffiche sus a pàgene',
'protect-edit-reasonlist' => "Cange le mutive d'a protezione",
-'protect-expiry-options' => '1 ore:1 hour,1 giurne:1 day,1 sumane:1 week,2 sumane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anne:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ore:1 hour,1 giurne:1 day,1 sumane:1 week,2 sumane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anne:1 year,infinite:infinite',
'restriction-type' => 'Permesse:',
'restriction-level' => 'Levèlle de restrizione:',
'minimum-size' => 'Dimenzione minime:',
@@ -1945,6 +2071,7 @@ Tu puè avè 'nu collegamende sbagliate o 'a revisione pò essere ca ha state re
'undelete-nodiff' => 'Nisciuna revisiona precedende ha state acchijate.',
'undeletebtn' => 'Repristine',
'undeletelink' => 'vide/repristine',
+'undeleteviewlink' => 'vide',
'undeletereset' => 'Azzere',
'undeleteinvert' => 'Selezione a smerse',
'undeletecomment' => 'Mutive:',
@@ -1985,19 +2112,23 @@ $1",
'contributions-title' => "Condrebbute de l'utende pe $1",
'mycontris' => 'Condrebbute mie',
'contribsub2' => 'Pe $1 ($2)',
-'nocontribs' => 'Nisciune cangiamende ha state acchiate cu ste criterie.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nisciune cangiamende ha state acchiate cu ste criterie.',
'uctop' => '(sus)',
'month' => "Da 'u mese (e cchiù recende):",
'year' => "Da l'anne (e cchiù recende):",
-'sp-contributions-newbies' => 'Fà vedè sulamende le condrebbute de le utinde nueve',
-'sp-contributions-newbies-sub' => "Pe l'utinde nuève",
-'sp-contributions-newbies-title' => "Condrebbute de l'utinde pe le cunde utinde nuéve",
-'sp-contributions-blocklog' => 'Archivije de le Bloccaminde',
-'sp-contributions-logs' => 'archivije',
-'sp-contributions-search' => 'Ricerche pe condrebbute',
-'sp-contributions-username' => "Indirizze IP o nome de l'utende:",
-'sp-contributions-submit' => 'Cirche',
+'sp-contributions-newbies' => 'Fà vedè sulamende le condrebbute de le utinde nueve',
+'sp-contributions-newbies-sub' => "Pe l'utinde nuève",
+'sp-contributions-newbies-title' => "Condrebbute de l'utinde pe le cunde utinde nuéve",
+'sp-contributions-blocklog' => 'Archivije de le Bloccaminde',
+'sp-contributions-deleted' => "condrebbute de l'utende scangellate",
+'sp-contributions-logs' => 'archivije',
+'sp-contributions-talk' => 'parle',
+'sp-contributions-userrights' => 'Gestione de le deritte utende',
+'sp-contributions-blocked-notice' => "Stu utende jè pe mò bloccate. L'urteme archivije de le bloccaminde se iacchie aqquà sotte pe referimende:",
+'sp-contributions-search' => 'Ricerche pe condrebbute',
+'sp-contributions-username' => "Indirizze IP o nome de l'utende:",
+'sp-contributions-submit' => 'Cirche',
# What links here
'whatlinkshere' => 'Appondene aqquà',
@@ -2021,6 +2152,7 @@ $1",
# Block/unblock
'blockip' => "Blocche l'utende",
+'blockip-title' => "Bluecche l'utende",
'blockip-legend' => "Bluecche l'utende",
'blockiptext' => "Ause 'a schermata de sotte pe bloccà l'accesse in scritture de 'nu specifiche indirizze IP o utende.
Quiste avessa essere fatte sulamende pe prevenìe 'u vandalisme e in accorde cu [[{{MediaWiki:Policy-url}}|le reghele]].
@@ -2044,7 +2176,7 @@ Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene a
'ipbenableautoblock' => "Automaticamende blocche l'urteme indirizze IP ausate da stu utende e tutte le sottosequenze de le IP ca onne state ausate pe cangià",
'ipbsubmit' => "Blocche st'utende",
'ipbother' => 'Otre orarie:',
-'ipboptions' => '2 ore:2 hours,1 giurne:1 day,3 giurne:3 days,1 sumane:1 week,2 sumane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anne:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ore:2 hours,1 giurne:1 day,3 giurne:3 days,1 sumane:1 week,2 sumane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anne:1 year,infinite:infinite',
'ipbotheroption' => 'otre',
'ipbotherreason' => 'Otre mutive:',
'ipbhidename' => 'Scunne le nome utinde da le cangiaminde e da le liste',
@@ -2073,9 +2205,11 @@ Vide [[Special:IPBlockList|'a liste de le IP bloccate]] pe revedè le blocche.",
'ipblocklist-sh-tempblocks' => '$1 le blocche temboranee',
'ipblocklist-sh-addressblocks' => '$1 le blocche de le singhele indirizze IP',
'ipblocklist-submit' => 'Cirche',
+'ipblocklist-localblock' => 'Blocche locale',
+'ipblocklist-otherblocks' => 'Otre {{PLURAL:$1|blocche|blocche}}',
'blocklistline' => '$1, $2 blocchete $3 ($4)',
'infiniteblock' => 'quanne pisce a iaddine',
-'expiringblock' => "more 'u $1",
+'expiringblock' => "more 'u $1 a le $2",
'anononlyblock' => "sulamende l'anonime",
'noautoblockblock' => 'autoblocche disabbilitete',
'createaccountblock' => "sulamende l'utinde anonime",
@@ -2090,7 +2224,10 @@ Vide [[Special:IPBlockList|'a liste de le IP bloccate]] pe revedè le blocche.",
'autoblocker' => 'Autobloccate purcè l\'indirizze IP tue ha state recendemente ausate da "[[User:$1|$1]]".
\'U mutive date pu blocche de $1 ète: "$2"',
'blocklogpage' => 'Archivije de le Bloccaminde',
-'blocklog-fulllog' => 'Archivije complete de le bloccaminde',
+'blocklog-showlog' => "Stu utende ha state bloccate precedendemende.
+L'archivije de le bloccaminde 'u puè acchià aqquà sotte pe riferimende:",
+'blocklog-showsuppresslog' => "Stu utende ha state bloccate e scunnute precedendemende.
+L'archivije de le soppressiune 'u puè acchià aqquà sotte pe riferimende:",
'blocklogentry' => "blocchete [[$1]] pe 'nu timbe de $2 $3",
'reblock-logentry' => "cangiate l'imbostazione de le blocche pe [[$1]] cu 'na data de scadenze de $2 $3",
'blocklogtext' => "Quiste è l'archivije de l'aziune de blocche e sblocche pe l'utinde.
@@ -2111,11 +2248,13 @@ Vide 'a [[Special:IPBlockList|liste de le IP bloccate]] pa liste de le operaziun
'ipb_already_blocked' => '"$1" jè ggià blocchete',
'ipb-needreblock' => "== Già blocchete ==
$1 ha state già blocchete. Vuè cu cange le 'mbostaziune?",
+'ipb-otherblocks-header' => 'Otre {{PLURAL:$1|blocche|blocche}}',
'ipb_cant_unblock' => "Errore: L'ID $1 d'u blocche non ge se iacchie.
Pò essere ca ha state già sbloccate.",
'ipb_blocked_as_range' => "Errore: l'IP $1 non g'à state bloccate direttamende e non ge pò essere sbloccate.
Jidde ha state bloccate cumme parte de l'indervalle $2, ca pò essere sbloccate.",
'ip_range_invalid' => "L'indervalle de l'IP non g'è valide.",
+'ip_range_toolarge' => 'Le indervalle de le blocche cchiù larie de /$1 non ge sonde permesse.',
'blockme' => 'Bloccheme',
'proxyblocker' => 'Bloccaore de proxy',
'proxyblocker-disabled' => "'A funzione ha state disabbilitete.",
@@ -2127,6 +2266,7 @@ Pe piacere condatte 'u provider de Indernette tue o 'u supporte tecniche e 'mbor
'sorbs_create_account_reason' => "L'indirizze IP tue jè elegate cumme a 'nu proxy apirte jndr'à DNSBL ausate da {{SITENAME}}.
Tu nonge puè ccrejà 'nu cunde utende",
'cant-block-while-blocked' => 'Tu non ge puè bloccà otre utinde quanne tu si blocchete.',
+'cant-see-hidden-user' => "L'utende ca tu ste pruève a bloccà ha state già bloccate e scunnute. Ce tu non ge tine le deritte ''hideuser'', tu non ge puè vedè o cangià 'u blocche de l'utende.",
# Developer tools
'lockdb' => 'Blocche databeise',
@@ -2172,6 +2312,7 @@ pe piacere a essere secure-secure de le conseguenze prime de procedere.",
Jndr'à ste case, 'a pàgene non g'avène spustete e pò t'a cupià a màne 'u codenute sue.",
'movearticle' => 'Spuèste:',
+'moveuserpage-warning' => "'''Attenziò:''' Tu stè spuèste 'na pàgene utende. Vide bbuène ca sulamende 'a pàgene avène spustate ma l'utende ''non'' g'avene renomenate.",
'movenologin' => 'Non ge sinde colleghete',
'movenologintext' => "Tu a essere 'n'utende reggistrete e [[Special:UserLogin|colleghete]] pe spustà 'na pàgene.",
'movenotallowed' => "Tu non ge tìne 'u permesse pe spustà le pàggene.",
@@ -2182,7 +2323,7 @@ Jndr'à ste case, 'a pàgene non g'avène spustete e pò t'a cupià a màne 'u c
'move-watch' => 'condrolle sta pàgene',
'movepagebtn' => "Spueste 'a pàgene",
'pagemovedsub' => 'Spustaminde eseguite',
-'movepage-moved' => "'''\"\$1\" ha state spustate jndr'à \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" ha state spustate jndr'à \"\$2\"'''",
'movepage-moved-redirect' => "'Nu redirezionamende ha state ccrejate.",
'movepage-moved-noredirect' => "'A ccrejazzione de 'nu redirezionamende ha state soppresse.",
'articleexists' => "'Na pàgene cu stu nome già esiste, o 'u nome ca tu è scacchiete non g'è valide.
@@ -2226,6 +2367,14 @@ non ge se pò movere 'na pàgene sus a sè stesse.",
'imageinvalidfilename' => "'U nome d'u file de destinazzione jè invalide",
'fix-double-redirects' => "Aggiorne ogne redirezionamende ca apponde a 'u titele origginale",
'move-leave-redirect' => "Lasse 'nu ridirezionamende rréte",
+'protectedpagemovewarning' => "'''Attenziò:''' Sta pàgene ha state bloccate accussì sulamende l'utinde cu le deritte d'amministratore 'a ponne spustà.
+L'urteme archivije de le trasute ha state mise aqquà sotte pe referimende:",
+'semiprotectedpagemovewarning' => "'''Vide Bbuène:''' Sta pàgene ha state blocchete accussì sulamende l'utinde reggistrate 'a ponne spustà.
+L'urteme archivije de le trasute ha state mise aqquà sotte pe referimende:",
+'move-over-sharedrepo' => "== 'U file esiste ==
+[[:$1]] esiste sus a 'n'archivie condivise. Spustanne 'u file sus a stu titele tu vè sovrascrive 'u file condivise.",
+'file-exists-sharedrepo' => "'U nome d'u file ca è scacchiate jè già ausate sus a 'n'archivie condivise.
+Pe piacere scacchiene 'notre.",
# Export
'export' => 'Pàggene esportete',
@@ -2248,15 +2397,21 @@ Cumme urteme case, tu puè pure ausà 'nu collegamende, pe esembie [[{{#Special:
'export-pagelinks' => "Inglude le pàggene collegate 'mbonde a 'na profunnetà de:",
# Namespace 8 related
-'allmessages' => "Messagge d'u Sisteme",
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Teste de default',
-'allmessagescurrent' => 'Teste corrende',
-'allmessagestext' => "Queste jè 'na liste de tutte le messagge d'u sisteme ca se ponne acchià jndr'à le namespace de MediaUicchi.
+'allmessages' => "Messagge d'u Sisteme",
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Teste de default',
+'allmessagescurrent' => 'Teste corrende',
+'allmessagestext' => "Queste jè 'na liste de tutte le messagge d'u sisteme ca se ponne acchià jndr'à le namespace de MediaUicchi.
Pe piacere vè vide [http://www.mediawiki.org/wiki/Localisation Localizzazione de MediaUicchi] e [http://translatewiki.net translatewiki.net] ce tu vuè ccu condrebbuisce a 'a localizzazione de MediaUicchi.",
-'allmessagesnotsupportedDB' => "Sta pàgene non ge pò essere ausate purcè '''\$wgUseDatabaseMessages''' ha state disabbilitate.",
-'allmessagesfilter' => "Nome d'u filtre d'u Mèssagge:",
-'allmessagesmodified' => 'Fà vedè sulamende le cangete',
+'allmessagesnotsupportedDB' => "Sta pàgene non ge pò essere ausate purcè '''\$wgUseDatabaseMessages''' ha state disabbilitate.",
+'allmessages-filter-legend' => 'Filtre',
+'allmessages-filter' => "Filtre cu 'nu state personalizzate:",
+'allmessages-filter-unmodified' => 'Senza cangiamende',
+'allmessages-filter-all' => 'Tutte',
+'allmessages-filter-modified' => 'Cangiate',
+'allmessages-prefix' => 'Filtrate pe prefisse:',
+'allmessages-language' => 'Lènga:',
+'allmessages-filter-submit' => 'Veje',
# Thumbnails
'thumbnail-more' => 'Allarije',
@@ -2266,6 +2421,9 @@ Pe piacere vè vide [http://www.mediawiki.org/wiki/Localisation Localizzazione d
'djvu_no_xml' => "Non ge riesche a esaminà l'XML d'u file DjVu",
'thumbnail_invalid_params' => 'Parametre pe le miniature invalide',
'thumbnail_dest_directory' => "Non ge pozze ccrejà 'a cartella de destinazione",
+'thumbnail_image-type' => 'Tipe de immaggine non supportate',
+'thumbnail_gd-library' => "Configurazione d'a libbrerie GD ingomblete: funziona perse $1",
+'thumbnail_image-missing' => "'U file pare ca non ge se iacchie: $1",
# Special:Import
'import' => "Pàggene 'mbortete",
@@ -2335,6 +2493,7 @@ Pe piacere ause 'u buttone de l'andeprime apprime de salvà.",
Puè vedè sulamende 'u sorgende.",
'tooltip-ca-history' => 'Versiune passete de sta pàgene',
'tooltip-ca-protect' => 'Prutegge sta pàgene',
+'tooltip-ca-unprotect' => 'Sprotegge sta pàgene',
'tooltip-ca-delete' => 'Scangille sta pàgene',
'tooltip-ca-undelete' => 'Repristine le cangiaminde fatte a sta pàgene apprime ca evenève scangellate',
'tooltip-ca-move' => 'Spuèste sta pàgene',
@@ -2345,6 +2504,7 @@ Puè vedè sulamende 'u sorgende.",
'tooltip-search-fulltext' => 'Cirche le pàggene cu stu teste',
'tooltip-p-logo' => 'Pàgene Prengepàle',
'tooltip-n-mainpage' => "Vè vide 'a pàgene prengepàle",
+'tooltip-n-mainpage-description' => "Visite 'a pàgena prengepàle",
'tooltip-n-portal' => "Parkanne d'u proggette, ce puà fà, addò puè acchjà le cose.",
'tooltip-n-currentevents' => "Iacchje le 'mbormaziune sus a 'u sfonde de 'u fatte corrende",
'tooltip-n-recentchanges' => "'A liste de le cangiaminde recende jndr'à uicchi.",
@@ -2390,10 +2550,12 @@ Permette de aggiungere 'nu mutive jndr'à 'u riepileghe",
# Attribution
'anonymous' => '{{PLURAL:$1|utende|utinde}} anonime de {{SITENAME}}',
'siteuser' => 'Utende de {{SITENAME}} $1',
-'lastmodifiedatby' => "Sta pàgene ha state cangiate l'urtema vote a le $2, d'u $1 da $3.", # $1 date, $2 time, $3 user
+'anonuser' => 'Utende anonime de {{SITENAME}} $1',
+'lastmodifiedatby' => "Sta pàgene ha state cangiate l'urtema vote a le $2, d'u $1 da $3.",
'othercontribs' => "Basete sus a 'na fatije de $1.",
'others' => 'otre',
'siteusers' => '{{PLURAL:$2|utende|utinde}} de {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|utende|utinde}} anonime de {{SITENAME}} $1',
'creditspage' => 'Pàgene de le crediti',
'nocredits' => "Non ge stonne 'mbormaziune sus a le credite disponibbele pe sta pàgene.",
@@ -2422,11 +2584,24 @@ Stu fatte ha state causate da 'nu collegamende a 'nu site esterne ca appartene a
'mw_math_modern' => 'Raccomandate pe le browser cchiù nuève',
'mw_math_mathml' => 'MathML ce possibbile (sperimendele)',
+# Math errors
+'math_failure' => 'Analisi fallite',
+'math_unknown_error' => 'errore scanusciute',
+'math_unknown_function' => 'funziona scanusciute',
+'math_lexing_error' => 'errore de lessiche',
+'math_syntax_error' => 'errore de sintassi',
+'math_image_error' => "'A conversione d'u PNG ha fallite;
+condrolle ce l'installazione de latex, dvips, gs e convertitore jè corrette",
+'math_bad_tmpdir' => "Non ge puè scrivere o ccrejà 'na cartelle temboranea de math",
+'math_bad_output' => "Non ge puè scrivere o ccrejà 'na cartelle de destinazzione de math",
+'math_notexvc' => 'texvc eseguibbele perdute;
+pe piacere vide math/README pe configurà.',
+
# Patrolling
'markaspatrolleddiff' => 'Signe cumme condrollate',
'markaspatrolledtext' => 'Signe sta pàgene cumme condrollate',
'markedaspatrolled' => 'Signate cumme condrollate',
-'markedaspatrolledtext' => "'A revisiona scacchiate ha state signate cumme condrollate.",
+'markedaspatrolledtext' => "'A revisiona scacchiate de [[:$1]] ha state signate cumme condrollate.",
'rcpatroldisabled' => "Condrolle de l'Urteme Cangiaminde disabbilitate",
'rcpatroldisabledtext' => "'A funzione Condrolle de l'Urteme Cangiaminde mò ète disabbilitate.",
'markedaspatrollederror' => 'Non ge se pò signà cumme condrollate',
@@ -2456,13 +2631,10 @@ $1",
'previousdiff' => '← Cangiaminde vecchije',
'nextdiff' => 'Cangiaminde cchiù nuève →',
-# Visual comparison
-'visual-comparison' => 'Combronde visuale',
-
# Media information
'mediawarning' => "'''Attenziò''': Stu file pò condenè codece viziuse.
Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
-'imagemaxsize' => "Limite de l'immaggine sus a le pàggene de descrizione d'u file a:",
+'imagemaxsize' => "Limite d'a dimenzione e l'immaggine:<br />''(pe le pàggene de descrizione d'u file)''",
'thumbsize' => "Dimenziona d'a miniature:",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgene|pàggene}}',
'file-info' => "(dimenzione d'u fail: $1, tipe de MIME: $2)",
@@ -2471,6 +2643,8 @@ Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
'svg-long-desc' => "(Fail SVG, nominalmende sonde $1 × $2 pixel, dimenzione d'u fail: $3)",
'show-big-image' => 'Risoluzione chiena chiena',
'show-big-image-thumb' => '<small>Dimenziune de sta andeprime: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'infinite',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Gallerie de le fail nuève',
@@ -2505,7 +2679,7 @@ Otre avènene scunnute pe defolt.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Larghezze',
@@ -2632,14 +2806,14 @@ Otre avènene scunnute pe defolt.
'exif-unknowndate' => 'Data scanusciute',
-'exif-orientation-1' => 'Normale', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Revultate orizzondalmende', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Ruete de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Revultate verticalmende', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Ruotate de 90° in senze andiorarie e revultate verticalmende', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Ruotate de 90° in senze orarie', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Ruotate de 90° in senze orarie e revultate verticalmende', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Ruotate de 90° in senze andiorarie', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normale',
+'exif-orientation-2' => 'Revultate orizzondalmende',
+'exif-orientation-3' => 'Ruete de 180°',
+'exif-orientation-4' => 'Revultate verticalmende',
+'exif-orientation-5' => 'Ruotate de 90° in senze andiorarie e revultate verticalmende',
+'exif-orientation-6' => 'Ruotate de 90° in senze orarie',
+'exif-orientation-7' => 'Ruotate de 90° in senze orarie e revultate verticalmende',
+'exif-orientation-8' => 'Ruotate de 90° in senze andiorarie',
'exif-planarconfiguration-1' => 'formate a blocche',
'exif-planarconfiguration-2' => 'formate lineare',
@@ -2761,7 +2935,7 @@ Otre avènene scunnute pe defolt.
'exif-gpsmeasuremode-2' => 'mesurazzione a doje dimenziune',
'exif-gpsmeasuremode-3' => 'mesurazzione a ttre dimenziune',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => "Chilometre a l'ore",
'exif-gpsspeed-m' => 'Miglie pe ore',
'exif-gpsspeed-n' => 'Knots',
@@ -2780,6 +2954,7 @@ Otre avènene scunnute pe defolt.
'watchlistall2' => 'tutte',
'namespacesall' => 'tutte',
'monthsall' => 'tutte',
+'limitall' => 'tutte',
# E-mail address confirmation
'confirmemail' => "Conferme l'indirizze e-mail",
@@ -2911,7 +3086,7 @@ Tu puè pure [[Special:Watchlist/edit|ausà 'u cangiatore standàrd]].",
'duplicate-defaultsort' => "'''Attenziò:''' 'A chiave de arrangamende de default \"\$2\" sovrascrive quedda precedende \"\$1\".",
# Special:Version
-'version' => 'Versione', # Not used as normal message but as header for the special page itself
+'version' => 'Versione',
'version-extensions' => 'Estenziune installete',
'version-specialpages' => 'Pàggene speciele',
'version-parserhooks' => 'Hook analizzature',
@@ -2925,7 +3100,7 @@ Tu puè pure [[Special:Watchlist/edit|ausà 'u cangiatore standàrd]].",
'version-skin-extension-functions' => 'Funziune estese pe le skin',
'version-hook-name' => "Nome de l'hook",
'version-hook-subscribedby' => 'Sottoscritte da',
-'version-version' => 'Versione',
+'version-version' => '(Versione $1)',
'version-license' => 'Licenze',
'version-software' => 'Softuer installete',
'version-software-product' => 'Prodotte',
@@ -3006,4 +3181,15 @@ Mitte 'u nome d'u file senze 'u \"{{ns:file}}:\" prefisse.",
'dberr-outofdate' => 'Vide ca le indice lore de le condenute nuèstre ponne essere non aggiornate.',
'dberr-cachederror' => "Queste jè 'na copie ''cache'' d'a pàgene ca è cercate e allore non g'à puè cangià.",
+# HTML forms
+'htmlform-invalid-input' => 'Stonne probbleme cu certe input ca tu è mise',
+'htmlform-select-badoption' => "'U valore ca è specificate non g'è 'n'opziona valide.",
+'htmlform-int-invalid' => "'U valore ca è specificate non g'è 'n'indere.",
+'htmlform-float-invalid' => "'U valore ca è specificate non g'è 'nu numere.",
+'htmlform-int-toolow' => "'U valore ca è specificate jè sotte a 'u minime de $1",
+'htmlform-int-toohigh' => "'U valore ca è specificate jè suverchie a 'u massime de $1",
+'htmlform-submit' => 'Conferme',
+'htmlform-reset' => 'Annulle le cangiaminde',
+'htmlform-selectorother-other' => 'Otre',
+
);
diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php
index fefaf3d9..5fb48d6e 100644
--- a/languages/messages/MessagesRu.php
+++ b/languages/messages/MessagesRu.php
@@ -13,15 +13,18 @@
* @author AlexSm
* @author Alexander Sigachov (alexander.sigachov@gmail.com)
* @author Amikeco
+ * @author Chilin
* @author Claymore
* @author Don Alessandro
* @author EugeneZelenko
* @author Ferrer
* @author Flrn
+ * @author Grigol
* @author HalanTul
* @author Huuchin
* @author Illusion
* @author Innv
+ * @author JenVan
* @author Jl
* @author Kaganer
* @author Kalan
@@ -29,6 +32,7 @@
* @author Lockal
* @author MaxSem
* @author Putnik
+ * @author Sk
* @author VasilievVV
* @author Александр Сигачёв
* @author לערי ריינהארט
@@ -77,7 +81,6 @@ $namespaceAliases = array(
'Обсуждение_изображения' => NS_FILE_TALK,
);
-
$dateFormats = array(
'mdy time' => 'H:i',
'mdy date' => 'xg j, Y',
@@ -108,13 +111,14 @@ $bookstoreList = array(
$magicWords = array(
'redirect' => array( '0', '#перенаправление', '#перенапр', '#REDIRECT' ),
- 'notoc' => array( '0', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
+ 'notoc' => array( '0', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
'nogallery' => array( '0', '__БЕЗ_ГАЛЕРЕИ__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__ОБЯЗ_ОГЛ__', '__FORCETOC__' ),
- 'toc' => array( '0', '__ОГЛ__', '__TOC__' ),
+ 'forcetoc' => array( '0', '__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__', '__ОБЯЗ_ОГЛ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ОГЛАВЛЕНИЕ__', '__ОГЛ__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__БЕЗ_ЗАГОЛОВКА__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'ТЕКУЩИЙ_МЕСЯЦ', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'ТЕКУЩИЙ_МЕСЯЦ', 'ТЕКУЩИЙ_МЕСЯЦ_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ТЕКУЩИЙ_МЕСЯЦ_1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_РОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_АБР', 'CURRENTMONTHABBREV' ),
@@ -124,7 +128,8 @@ $magicWords = array(
'currentyear' => array( '1', 'ТЕКУЩИЙ_ГОД', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'ТЕКУЩЕЕ_ВРЕМЯ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ТЕКУЩИЙ_ЧАС', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'МЕСТНЫЙ_МЕСЯЦ', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'МЕСТНЫЙ_МЕСЯЦ', 'МЕСТНЫЙ_МЕСЯЦ_2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'МЕСТНЫЙ_МЕСЯЦ_1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_РОД', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_АБР', 'LOCALMONTHABBREV' ),
@@ -138,6 +143,7 @@ $magicWords = array(
'numberofarticles' => array( '1', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'КОЛИЧЕСТВО_УЧАСТНИКОВ', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'КОЛИЧЕСТВО_АКТИВНЫХ_УЧАСТНИКОВ', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'КОЛИЧЕСТВО_ПРАВОК', 'NUMBEROFEDITS' ),
'numberofviews' => array( '1', 'КОЛИЧЕСТВО_ПРОСМОТРОВ', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ),
@@ -158,11 +164,11 @@ $magicWords = array(
'talkpagenamee' => array( '1', 'НАЗВАНИЕ_СТРАНИЦЫ_ОБСУЖДЕНИЯ_2', 'TALKPAGENAMEE' ),
'subjectpagename' => array( '1', 'НАЗВАНИЕ_СТРАНИЦЫ_СТАТЬИ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subjectpagenamee' => array( '1', 'НАЗВАНИЕ_СТРАНИЦЫ_СТАТЬИ_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( '0', 'СООБЩ:', 'MSG:' ),
- 'subst' => array( '0', 'ПОДСТ:', 'SUBST:' ),
+ 'msg' => array( '0', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ),
+ 'subst' => array( '0', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ),
'msgnw' => array( '0', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'мини', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_thumbnail' => array( '1', 'мини', 'миниатюра', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'справа', 'right' ),
'img_left' => array( '1', 'слева', 'left' ),
'img_none' => array( '1', 'без', 'none' ),
@@ -186,12 +192,14 @@ $magicWords = array(
'int' => array( '0', 'ВНУТР:', 'INT:' ),
'sitename' => array( '1', 'НАЗВАНИЕ_САЙТА', 'SITENAME' ),
'ns' => array( '0', 'ПИ:', 'NS:' ),
+ 'nse' => array( '0', 'ПИК:', 'NSE:' ),
'localurl' => array( '0', 'ЛОКАЛЬНЫЙ_АДРЕС:', 'LOCALURL:' ),
'localurle' => array( '0', 'ЛОКАЛЬНЫЙ_АДРЕС_2:', 'LOCALURLE:' ),
'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
'servername' => array( '0', 'НАЗВАНИЕ_СЕРВЕРА', 'SERVERNAME' ),
'scriptpath' => array( '0', 'ПУТЬ_К_СКРИПТУ', 'SCRIPTPATH' ),
'grammar' => array( '0', 'ПАДЕЖ:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'ПОЛ:', 'GENDER:' ),
'notitleconvert' => array( '0', '__БЕЗ_ПРЕОБРАЗОВАНИЯ_ЗАГОЛОВКА__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__БЕЗ_ПРЕОБРАЗОВАНИЯ_ТЕКСТА__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'ТЕКУЩАЯ_НЕДЕЛЯ', 'CURRENTWEEK' ),
@@ -204,6 +212,7 @@ $magicWords = array(
'revisionmonth' => array( '1', 'МЕСЯЦ_ВЕРСИИ', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'ГОД_ВЕРСИИ', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'ОТМЕТКА_ВРЕМЕНИ_ВЕРСИИ', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'ВЕРСИЯ_УЧАСНИКА', 'REVISIONUSER' ),
'plural' => array( '0', 'МНОЖЕСТВЕННОЕ_ЧИСЛО:', 'PLURAL:' ),
'fullurl' => array( '0', 'ПОЛНЫЙ_АДРЕС:', 'FULLURL:' ),
'fullurle' => array( '0', 'ПОЛНЫЙ_АДРЕС_2:', 'FULLURLE:' ),
@@ -215,6 +224,7 @@ $magicWords = array(
'displaytitle' => array( '1', 'ПОКАЗАТЬ_ЗАГОЛОВОК', 'DISPLAYTITLE' ),
'rawsuffix' => array( '1', 'Н', 'R' ),
'newsectionlink' => array( '1', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'ТЕКУЩАЯ_ВЕРСИЯ', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'ЗАКОДИРОВАННЫЙ_АДРЕС:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'КОДИРОВАТЬ_МЕТКУ', 'ANCHORENCODE' ),
@@ -231,7 +241,7 @@ $magicWords = array(
'special' => array( '0', 'служебная', 'special' ),
'defaultsort' => array( '1', 'СОРТИРОВКА_ПО_УМОЛЧАНИЮ', 'КЛЮЧ_СОРТИРОВКИ', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'ПУТЬ_К_ФАЙЛУ:', 'FILEPATH:' ),
- 'tag' => array( '0', 'тег', 'тэг', 'метка', 'tag' ),
+ 'tag' => array( '0', 'метка', 'тег', 'тэг', 'tag' ),
'hiddencat' => array( '1', '__СКРЫТАЯ_КАТЕГОРИЯ__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'СТРАНИЦ_В_КАТЕГОРИИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'РАЗМЕР_СТРАНИЦЫ', 'PAGESIZE' ),
@@ -239,6 +249,8 @@ $magicWords = array(
'noindex' => array( '1', '__БЕЗ_ИНДЕКСА__', '__NOINDEX__' ),
'numberingroup' => array( '1', 'ЧИСЛО_В_ГРУППЕ', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__СТАТИЧЕСКОЕ_ПЕРЕНАПРАВЛЕНИЕ__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'УРОВЕНЬ_ЗАЩИТЫ', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'форматдаты', 'formatdate', 'dateformat' ),
);
$imageFiles = array(
@@ -280,6 +292,7 @@ $messages = array(
'tog-enotifminoredits' => 'Уведомлять по эл. почте даже при малозначительных изменениях',
'tog-enotifrevealaddr' => 'Показывать мой почтовый адрес в сообщениях оповещения',
'tog-shownumberswatching' => 'Показывать число участников, включивших страницу в свой список наблюдения',
+'tog-oldsig' => 'Предпросмотр существующей подписи:',
'tog-fancysig' => 'Собственная вики-разметка подписи (без автоматической ссылки)',
'tog-externaleditor' => 'Использовать внешний редактор (необходима специальная настройка компьютера)',
'tog-externaldiff' => 'Использовать внешнюю программу сравнения версий (необходима специальная настройка компьютера)',
@@ -302,6 +315,13 @@ $messages = array(
'underline-never' => 'Никогда',
'underline-default' => 'Использовать настройки браузера',
+# Font style option in Special:Preferences
+'editfont-style' => 'Тип шрифта области редактирования:',
+'editfont-default' => 'Шрифт из настроек браузера',
+'editfont-monospace' => 'Моноширинный шрифт',
+'editfont-sansserif' => 'Шрифт без засечек',
+'editfont-serif' => 'Шрифт с засечками',
+
# Dates
'sunday' => 'воскресенье',
'monday' => 'понедельник',
@@ -361,7 +381,7 @@ $messages = array(
'category-media-header' => 'Файлы в категории «$1»',
'category-empty' => "''Эта категория в данный момент пуста.''",
'hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытые категории}}',
-'hidden-category-category' => 'Скрытые категории', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Скрытые категории',
'category-subcat-count' => '{{PLURAL:$2|Данная категория содержит только следующую подкатегорию.|{{PLURAL:$1|Показана $1 подкатегория|Показано $1 подкатегории|Показано $1 подкатегорий}} из $2.}}',
'category-subcat-count-limited' => 'В этой категории {{PLURAL:$1|$1 подкатегория|$1 подкатегории|$1 подкатегорий}}.',
'category-article-count' => '{{PLURAL:$2|Эта категория содержит только одну страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страницы|Показано $1 страниц}} этой категории из $2.}}',
@@ -369,6 +389,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Эта категория содержит только один файл.|{{PLURAL:$1|Показан $1 файл|Показано $1 файла|Показано $1 файлов}} этой категории из $2.}}',
'category-file-count-limited' => 'В этой категории {{PLURAL:$1|$1 файл|$1 файла|$1 файлов}}.',
'listingcontinuesabbrev' => '(продолжение)',
+'index-category' => 'Индексируемые страницы',
+'noindex-category' => 'Неиндексируемые страницы',
'mainpagetext' => "'''Вики-движок «MediaWiki» успешно установлен.'''",
'mainpagedocfooter' => 'Информацию по работе с этой вики можно найти в [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 справочном руководстве].
@@ -378,10 +400,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Часто задаваемые вопросы и ответы по MediaWiki];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].',
-'about' => 'Описание',
-'article' => 'Статья',
-'newwindow' => '(в новом окне)',
-'cancel' => 'Отменить',
+'about' => 'Описание',
+'article' => 'Статья',
+'newwindow' => '(в новом окне)',
+'cancel' => 'Отменить',
+'moredotdotdot' => 'Далее…',
+'mypage' => 'Личная страница',
+'mytalk' => 'Моя страница обсуждения',
+'anontalk' => 'Обсуждение для этого IP-адреса',
+'navigation' => 'Навигация',
+'and' => '&#32;и',
+
+# Cologne Blue skin
'qbfind' => 'Поиск',
'qbbrowse' => 'Просмотреть',
'qbedit' => 'Править',
@@ -389,15 +419,35 @@ $messages = array(
'qbpageinfo' => 'Сведения о странице',
'qbmyoptions' => 'Ваши настройки',
'qbspecialpages' => 'Специальные страницы',
-'moredotdotdot' => 'Далее…',
-'mypage' => 'Личная страница',
-'mytalk' => 'Моя страница обсуждения',
-'anontalk' => 'Обсуждение для этого IP-адреса',
-'navigation' => 'Навигация',
-'and' => '&#32;и',
-
-# Metadata in edit box
-'metadata_help' => 'Метаданные:',
+'faq' => 'ЧаВО',
+'faqpage' => 'Project:ЧаВО',
+
+# Vector skin
+'vector-action-addsection' => 'Добавить тему',
+'vector-action-delete' => 'Удалить',
+'vector-action-move' => 'Переименовать',
+'vector-action-protect' => 'Защитить',
+'vector-action-undelete' => 'Восстановить',
+'vector-action-unprotect' => 'Снять защиту',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Справочная страница',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Страница',
+'vector-namespace-media' => 'Медиа-страница',
+'vector-namespace-mediawiki' => 'Сообщение',
+'vector-namespace-project' => 'О проекте',
+'vector-namespace-special' => 'Служебная страница',
+'vector-namespace-talk' => 'Обсуждение',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Страница участника',
+'vector-view-create' => 'Создание',
+'vector-view-edit' => 'Правка',
+'vector-view-history' => 'Просмотр истории',
+'vector-view-view' => 'Чтение',
+'vector-view-viewsource' => 'Просмотр разметки',
+'actions' => 'Действия',
+'namespaces' => 'Пространства имён',
+'variants' => 'Варианты',
'errorpagetitle' => 'Ошибка',
'returnto' => 'Возврат к странице $1.',
@@ -447,18 +497,22 @@ $messages = array(
'otherlanguages' => 'На других языках',
'redirectedfrom' => '(Перенаправлено с $1)',
'redirectpagesub' => 'Страница-перенаправление',
-'lastmodifiedat' => 'Последнее изменение этой страницы: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Последнее изменение этой страницы: $2, $1.',
'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раза|раз}}.',
'protectedpage' => 'Защищённая страница',
'jumpto' => 'Перейти к:',
'jumptonavigation' => 'навигация',
'jumptosearch' => 'поиск',
+'view-pool-error' => 'Извините, сейчас серверы перегружены.
+Поступило слишком много запросов на просмотр этой страницы.
+Пожалуйста, подождите и повторите попытку обращения к странице позже.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Описание {{grammar:genitive|{{SITENAME}}}}',
'aboutpage' => 'Project:Описание',
'copyright' => 'Содержимое доступно в соответствии с $1.',
-'copyrightpagename' => 'Авторские права проекта {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Авторское право',
'currentevents' => 'Текущие события',
'currentevents-url' => 'Project:Текущие события',
@@ -466,8 +520,6 @@ $messages = array(
'disclaimerpage' => 'Project:Отказ от ответственности',
'edithelp' => 'Справка по редактированию',
'edithelppage' => 'Help:Справка по редактированию',
-'faq' => 'ЧаВО',
-'faqpage' => 'Project:ЧаВО',
'helppage' => 'Help:Справка',
'mainpage' => 'Заглавная страница',
'mainpage-description' => 'Заглавная страница',
@@ -548,10 +600,6 @@ $messages = array(
«$1»
произошёл из функции «$2».
База данных возвратила ошибку «$3: $4».',
-'noconnect' => 'Извините, технические проблемы в работе вики-движка, невозможно связаться с сервером базы данных.<br />
-$1',
-'nodb' => 'Невозможно выбрать базу данных $1',
-'cachederror' => 'Ниже представлена кешированная копия запрошенной страницы; возможно, она устарела.',
'laggedslavemode' => 'Внимание: страница может не содержать последних обновлений.',
'readonly' => 'Запись в базу данных заблокирована',
'enterlockreason' => 'Укажите причину и намеченный срок блокировки.',
@@ -569,6 +617,8 @@ $1',
'readonly_lag' => 'База данных автоматически заблокирована от изменений на время, пока вторичный сервер БД не синхронизируется с первичным.',
'internalerror' => 'Внутренняя ошибка',
'internalerror_info' => 'Внутренняя ошибка: $1',
+'fileappenderrorread' => 'Не удалось прочитать «$1» во время дополнения.',
+'fileappenderror' => 'Не удалось присоединить «$1» к «$2».',
'filecopyerror' => 'Невозможно скопировать файл «$1» в «$2».',
'filerenameerror' => 'Невозможно переименовать файл «$1» в «$2».',
'filedeleteerror' => 'Невозможно удалить файл «$1».',
@@ -578,7 +628,8 @@ $1',
'unexpected' => 'Неподходящее значение: «$1»=«$2».',
'formerror' => 'Ошибка: невозможно передать данные формы',
'badarticleerror' => 'Это действие не может быть выполнено на данной странице.',
-'cannotdelete' => 'Невозможно удалить указанную страницу или файл. Возможно, его уже удалил кто-то другой.',
+'cannotdelete' => 'Невозможно удалить страницу или файл «$1».
+Возможно, его уже удалил кто-то другой.',
'badtitle' => 'Недопустимое название',
'badtitletext' => 'Запрашиваемое название страницы неправильно, пусто, либо неправильно указано межъязыковое или интервики название. Возможно, в названии используются недопустимые символы.',
'perfcached' => 'Следующие данные взяты из кеша и могут не учитывать последних изменений.',
@@ -613,7 +664,6 @@ $2',
'virus-unknownscanner' => 'неизвестный антивирус:',
# Login and logout pages
-'logouttitle' => 'Стать инкогнито',
'logouttext' => "'''Вы завершили сеанс работы.'''
Вы можете продолжить участие в {{grammar:genitive|{{SITENAME}}}} анонимно или [[Special:UserLogin|представиться заново]] под тем же или другим именем.
@@ -621,7 +671,6 @@ $2',
'welcomecreation' => '== Добро пожаловать, $1! ==
Ваша учётная запись создана.
Не забудьте провести [[Special:Preferences|персональную настройку]] сайта.',
-'loginpagetitle' => 'Представиться системе',
'yourname' => 'Имя участника:',
'yourpassword' => 'Пароль:',
'yourpasswordagain' => 'Повторный набор пароля:',
@@ -632,6 +681,7 @@ $2',
'nav-login-createaccount' => 'Представиться / зарегистрироваться',
'loginprompt' => 'Вы должны разрешить «cookies», чтобы представиться системе.',
'userlogin' => 'Представиться или зарегистрироваться',
+'userloginnocreate' => 'Представиться',
'logout' => 'Завершение сеанса',
'userlogout' => 'Завершение сеанса',
'notloggedin' => 'Вы не представились системе',
@@ -644,30 +694,8 @@ $2',
'badretype' => 'Введённые вами пароли не совпадают.',
'userexists' => 'Введённое имя участника уже используется.
Пожалуйста, выберите другое имя.',
-'youremail' => 'Электронная почта:',
-'username' => 'Регистрационное имя:',
-'uid' => 'Идентификатор участника:',
-'prefs-memberingroups' => 'Член {{PLURAL:$1|группы|групп}}:',
-'yourrealname' => 'Ваше настоящее имя:',
-'yourlanguage' => 'Язык интерфейса:',
-'yourvariant' => 'Вариант языка',
-'yournick' => 'Ваш псевдоним (для подписей):',
-'badsig' => 'Неверная подпись. Проверьте корректность HTML-тегов.',
-'badsiglength' => 'Слишком длинная подпись.
-Подпись не должна превышать $1 {{PLURAL:$1|символа|символов|символов}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'не указан',
-'gender-male' => 'мужской',
-'gender-female' => 'женский',
-'prefs-help-gender' => 'Необязательное поле: используется в некоторых сообщениях движка, зависящих от пола участника.
-Эта информация будет общедоступной.',
-'email' => 'Электронная почта',
-'prefs-help-realname' => 'Настоящее имя (необязательное поле).
-Если вы укажете его, то оно будет использовано для того, чтобы показать, кем была внесена правка страницы.',
'loginerror' => 'Ошибка опознавания участника',
-'prefs-help-email' => 'Адрес электронной почты указывать необязательно, но он будет необходим в том случае, если вы забудете пароль.
-Он также позволит другим участникам связаться с вами через вашу страницу в вики без необходимости раскрытия адреса вашей электронной почты.',
-'prefs-help-email-required' => 'Необходимо указать адрес электронной почты.',
+'createaccounterror' => 'Невозможно создать учётную запись: $1',
'nocookiesnew' => 'Участник зарегистрирован, но не представлен. {{SITENAME}} использует «cookies» для представления участников. У вас «cookies» запрещены. Пожалуйста, разрешите их, а затем представьтесь с вашим новым именем участника и паролем.',
'nocookieslogin' => '{{SITENAME}} использует «cookies» для представления участников. Вы их отключили. Пожалуйста, включите их и попробуйте снова.',
'noname' => 'Вы не указали допустимого имени участника.',
@@ -678,10 +706,11 @@ $2',
Проверьте правильность написания имени или [[Special:UserLogin/signup|создайте новую учётную запись]].',
'nosuchusershort' => 'Не существует участника с именем <nowiki>$1</nowiki>. Проверьте написание имени.',
'nouserspecified' => 'Вы должны указать имя участника.',
+'login-userblocked' => 'Этот участник заблокирован. Вход в систему не разрешён.',
'wrongpassword' => 'Введённый вами пароль неверен. Попробуйте ещё раз.',
'wrongpasswordempty' => 'Пожалуйста, введите непустой пароль.',
-'passwordtooshort' => 'Введённый пароль недействителен или слишком короткий.
-Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}} и отличаться от имени участника.',
+'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}}.',
+'password-name-match' => 'Введённый пароль должен отличаться от имени участника.',
'mailmypassword' => 'Получить новый пароль',
'passwordremindertitle' => 'Напоминание пароля участника {{grammar:genitive|{{SITENAME}}}}',
'passwordremindertext' => 'Кто-то (вероятно, вы, с IP-адреса $1) запросил создать
@@ -694,6 +723,7 @@ $2',
и не желаете его менять, вы можете проигнорировать данное сообщение и
продолжить использовать свой старый пароль.',
'noemail' => 'Для участника с именем $1 электронный адрес указан не был.',
+'noemailcreate' => 'Вам необходимо указать корректный адрес электронной почты',
'passwordsent' => 'Новый пароль был выслан на адрес электронной почты, указанный для участника $1.
Пожалуйста, представьтесь системе заново после получения пароля.',
@@ -716,9 +746,11 @@ $2',
'createaccount-text' => 'Кто-то создал учётную запись «$2» на сервере проекта {{SITENAME}} ($4) с паролем «$3», указав ваш адрес электронной почты. Вам следует зайти и изменить пароль.
Проигнорируйте данное сообщение, если учётная запись была создана по ошибке.',
+'usernamehasherror' => 'Имя участника не может содержать символ «решётки»',
'login-throttled' => 'Вы сделали слишком много попыток представиться системе.
Пожалуйста, подождите, перед тем, как попробовать снова.',
'loginlanguagelabel' => 'Язык: $1',
+'suspicious-userlogout' => 'Ваш запрос на завершение сеанса отклонён, так как он похож на запрос, отправленный некорректным браузером или кэширующим прокси.',
# Password reset dialog
'resetpass' => 'Изменение пароля',
@@ -730,17 +762,13 @@ $2',
'retypenew' => 'Повторите ввод нового пароля:',
'resetpass_submit' => 'Установить пароль и представиться',
'resetpass_success' => 'Ваш пароль был успешно изменён! Выполняется вход в систему…',
-'resetpass_bad_temporary' => 'Недействительный временный пароль. Возможно, вы уже изменили ваш пароль, или попробуйте запросить временный пароль снова.',
'resetpass_forbidden' => 'Пароль не может быть изменён',
'resetpass-no-info' => 'Чтобы обращаться непосредственно к этой странице, вам следует представиться системе.',
'resetpass-submit-loggedin' => 'Изменить пароль',
+'resetpass-submit-cancel' => 'Отмена',
'resetpass-wrong-oldpass' => 'Неправильный временный или текущий пароль.
Возможно, вы уже успешно изменили пароль, или запросили новый временный пароль.',
'resetpass-temp-password' => 'Временный пароль:',
-'resetpass-log' => 'Журнал сброса паролей',
-'resetpass-logtext' => 'Ниже в журнале представлен список участников, для которых администраторы сбросили пароль.',
-'resetpass-logentry' => 'изменил пароль для $1',
-'resetpass-comment' => 'Причина сброса пароля:',
# Edit page toolbar
'bold_sample' => 'Полужирное начертание',
@@ -812,7 +840,6 @@ $2',
'blockededitsource' => "Ниже показан текст '''ваших изменений''' страницы «$1».",
'whitelistedittitle' => 'Для изменения требуется авторизация',
'whitelistedittext' => 'Вы должны $1 для изменения страниц.',
-'confirmedittitle' => 'Требуется подтверждение адреса электронной почты',
'confirmedittext' => 'Вы должны подтвердить ваш адрес электронной почты перед правкой страниц.
Пожалуйста, введите и подтвердите ваш адрес электронной почты на [[Special:Preferences|странице настроек]].',
'nosuchsectiontitle' => 'Невозможно найти раздел',
@@ -837,9 +864,16 @@ $2',
Вы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] в других статьях,
<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов],
или '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} создать страницу с таким названием]'''</span>.",
+'noarticletext-nopermission' => 'В настоящее время на этой странице нет текста.
+Вы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] в других статьях,
+или <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов].</span>',
'userpage-userdoesnotexist' => 'Учётной записи «$1» не существует. Убедитесь, что вы действительно желаете создать или изменить эту страницу.',
+'userpage-userdoesnotexist-view' => 'Не зарегистрировано учётной записи участника «$1».',
+'blocked-notice-logextract' => 'Этот участник в данный момент заблокирован.
+Ниже приведена последняя запись из журнала блокировок:',
'clearyourcache' => "'''Замечание:''' Чтобы после сохранения сделанные изменения вступили в силу, очистите кеш своего браузера: '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari''': ''Cmd+Shift+R'', '''Konqueror''': ''F5'', '''Opera''': через меню ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Подсказка.''' Нажмите кнопку «Предварительный просмотр», чтобы проверить ваш новый CSS- или JS-файл перед сохранением.",
+'usercssyoucanpreview' => "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить ваш новый CSS-файл перед сохранением.",
+'userjsyoucanpreview' => "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить ваш новый JS-файл перед сохранением.",
'usercsspreview' => "'''Помните, что это только предварительный просмотр вашего CSS-файла, он ещё не сохранён!'''",
'userjspreview' => "'''Помните, что это только предварительный просмотр вашего javascript-файла, он ещё не сохранён!'''",
'userinvalidcssjstitle' => "'''Внимание:''' тема оформления «$1» не найдена. Помните, что пользовательские страницы .css и .js должны иметь название, состоящее только из строчных букв, например «{{ns:user}}:Некто/monobook.css», а не «{{ns:user}}:Некто/Monobook.css».",
@@ -887,13 +921,16 @@ $2',
Возможно, вам следует сохранить текст в файл, чтобы воспользоваться этим текстом позже.'''
Администратор, заблокировавший базу данных, оставил следующее объяснение: $1",
-'protectedpagewarning' => "'''ПРЕДУПРЕЖДЕНИЕ: эта страница защищена от изменений, её могут редактировать только администраторы.'''",
-'semiprotectedpagewarning' => "'''Замечание:''' эта страница была защищена; редактировать её могут только зарегистрированные участники.",
+'protectedpagewarning' => "'''Предупреждение. Эта страница защищена от изменений, её могут редактировать только участники с полномочиями администраторов.'''
+Ниже для справки приведена последняя запись журнала:",
+'semiprotectedpagewarning' => "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.
+Ниже для справки приведена последняя запись журнала:",
'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники группы «Администраторы», поскольку она включена {{PLURAL:$1|в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
-'titleprotectedwarning' => "'''ПРЕДУПРЕЖДЕНИЕ. Страница с таким названием была защищена, поместить текст на неё могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''",
-'templatesused' => 'Шаблоны, использованные на текущей версии страницы:',
-'templatesusedpreview' => 'Шаблоны, используемые в предпросматриваемой странице:',
-'templatesusedsection' => 'Шаблоны, используемые в этой секции:',
+'titleprotectedwarning' => "'''Предупреждение. Эта страница защищена от изменений, её могут редактировать только участники с [[Special:ListGroupRights|соответствующими полномочиями]].'''
+Ниже для справки приведена последняя запись журнала:",
+'templatesused' => '{{PLURAL:$1|Шаблон, использованный|Шаблоны, использованные}} на текущей версии страницы:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, используемые}} в предпросматриваемой странице:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, использованные}} в этом разделе:',
'template-protected' => '(защищено)',
'template-semiprotected' => '(частично защищено)',
'hiddencategories' => 'Эта страница относится к $1 {{PLURAL:$1|скрытой категории|скрытым категориям|скрытым категориям}}:',
@@ -902,14 +939,18 @@ $2',
'nocreatetext' => 'На этом сайте ограничена возможность создания новых страниц.
Вы можете вернуться назад и отредактировать существующую страницу, [[Special:UserLogin|представиться системе или создать новую учётную запись]].',
'nocreate-loggedin' => 'У вас нет разрешения создавать новые страницы.',
+'sectioneditnotsupported-title' => 'Редактирование разделов не поддерживается',
+'sectioneditnotsupported-text' => 'На этой странице не поддерживается редактирование разделов',
'permissionserrors' => 'Ошибки прав доступа',
'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|следующей причине|следующим причинам}}:',
'permissionserrorstext-withaction' => "У вас нет разрешения на действие «'''$2'''» по {{PLURAL:$1|следующей причине|следующим причинам}}:",
-'recreate-deleted-warn' => "'''Внимание: вы пытаетесь воссоздать страницу, которая ранее удалялась.'''
+'recreate-moveddeleted-warn' => "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''
-Проверьте, действительно ли вам нужно воссоздавать эту страницу. Ниже приведён журнал удалений.",
-'deleted-notice' => 'Эта страница была удалена. Для справки ниже показаны соответствующие записи из журнала удалений.',
-'deletelog-fulllog' => 'Просмотреть полный журнал',
+Проверьте, действительно ли вам нужно воссоздавать эту страницу.
+Ниже приведены журналы удалений и переименований этой страницы.",
+'moveddeleted-notice' => 'Эта страница была удалена.
+Для справки ниже показаны соответствующие записи из журналов удалений и переименований.',
+'log-fulllog' => 'Просмотреть журнал целиком',
'edit-hook-aborted' => 'Правка отменена процедурой-перехватчиком.
Дополнительных разъяснений не приведено.',
'edit-gone-missing' => 'Невозможно обновить страницу.
@@ -932,6 +973,7 @@ $2',
'post-expand-template-argument-category' => 'Страницы, содержащие пропущенные аргументы шаблонов',
'parser-template-loop-warning' => 'Обнаружена петля в шаблонах: [[$1]]',
'parser-template-recursion-depth-warning' => 'Превышен предел глубины рекурсии шаблона ($1)',
+'language-converter-depth-warning' => 'Превышен предел глубины преобразователя языков ($1)',
# "Undo" feature
'undo-success' => 'Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.',
@@ -951,7 +993,7 @@ $3 указал следующую причину: ''$2''",
'currentrev' => 'Текущая версия',
'currentrev-asof' => 'Текущая версия на $1',
'revisionasof' => 'Версия $1',
-'revision-info' => 'Версия от $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Версия от $1; $2',
'previousrevision' => '← Предыдущая',
'nextrevision' => 'Следующая →',
'currentrevisionlink' => 'Текущая версия',
@@ -962,7 +1004,7 @@ $3 указал следующую причину: ''$2''",
'page_last' => 'последняя',
'histlegend' => "Пояснения: (текущ.) — отличие от текущей версии; (пред.) — отличие от предшествующей версии; '''м''' — малозначимое изменение",
'history-fieldset-title' => 'Просмотреть историю',
-'deletedrev' => '[удалена]',
+'history-show-deleted' => 'Только удалённые',
'histfirst' => 'старейшие',
'histlast' => 'недавние',
'historysize' => '($1 {{PLURAL:$1|байт|байта|байт}})',
@@ -971,71 +1013,114 @@ $3 указал следующую причину: ''$2''",
# Revision feed
'history-feed-title' => 'История изменений',
'history-feed-description' => 'История изменений этой страницы в вики',
-'history-feed-item-nocomment' => '$1 в $2', # user at time
+'history-feed-item-nocomment' => '$1 в $2',
'history-feed-empty' => 'Запрашиваемой страницы не существует.
Она могла быть удалена или переименована.
Попробуйте [[Special:Search|найти в вики]] похожие страницы.',
# Revision deletion
-'rev-deleted-comment' => '(комментарий удалён)',
-'rev-deleted-user' => '(имя автора стёрто)',
-'rev-deleted-event' => '(запись удалена)',
-'rev-deleted-text-permission' => "Эта версия страницы была '''удалена'''.
-Возможно, объяснения даны в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
-'rev-deleted-text-view' => "Эта версия страницы была '''удалена'''.
-Вы можете просмотреть её, так как являетесь администратором. Возможно, объяснения удаления даны в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
-'rev-deleted-no-diff' => "Вы не можете просмотреть эту разницу версий, так как одна из версий страницы была '''удалена'''.
-Возможно, подробности можно найти в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
-'rev-deleted-unhide-diff' => "Одна из версий страницы была '''удалена'''.
-Возможно, подробности можно найти в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журнале удалений].
+'rev-deleted-comment' => '(комментарий удалён)',
+'rev-deleted-user' => '(имя автора стёрто)',
+'rev-deleted-event' => '(запись удалена)',
+'rev-deleted-user-contribs' => '[имя участника или IP-адрес удалёны — правка скрыта со страницы вклада]',
+'rev-deleted-text-permission' => "Эта версия страницы была '''удалена'''.
+Возможно, объяснения даны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
+'rev-deleted-text-unhide' => "Эта версия страницы была '''удалена'''.
+Возможно, объяснения даны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].
+Вы можете [$1 просмотреть данную версию], так как являетесь администратором.",
+'rev-suppressed-text-unhide' => "Эта версия страницы была '''скрыта'''.
+Возможно, объяснения даны в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].
Вы можете [$1 просмотреть данную версию], так как являетесь администратором.",
-'rev-delundel' => 'показать/скрыть',
-'revisiondelete' => 'Удалить / восстановить версии страницы',
-'revdelete-nooldid-title' => 'Не задана целевая версия',
-'revdelete-nooldid-text' => 'Вы не задали целевую версию (или версии) для выполнения этой функции.',
-'revdelete-nologtype-title' => 'Не указан тип журнала',
-'revdelete-nologtype-text' => 'Вы не указали тип журнала, в котором следует выполнить действие.',
-'revdelete-toomanytargets-title' => 'Слишком много целей',
-'revdelete-toomanytargets-text' => 'Вы указали слишком много типов целей для выполнения данного действия.',
-'revdelete-nologid-title' => 'Ошибочная запись журнала',
-'revdelete-nologid-text' => 'Вы не указали целевую запись журнала для выполнения действия или указанной записи не существует.',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбранная запись|Выбранные записи}} журнала:'''",
-'revdelete-text' => "'''Удалённые версии страниц и событий будут показываться в истории страницы и журналах, но часть их содержания будет недоступна обычным посетителям.'''
-
-Администраторы проекта {{SITENAME}} будут иметь доступ к скрытому содержанию и смогут восстановить его через этот же интерфейс, за исключением случаев, когда было установлено дополнительное ограничение.
-Пожалуйста, убедитесь, что действительно желаете произвести данные действия, осознаёте их последствия, действуете в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].",
-'revdelete-suppress-text' => "Сокрытие может производиться '''только''' в следующих случаях:
+'rev-deleted-text-view' => "Эта версия страницы была '''удалена'''.
+Вы можете просмотреть её, так как являетесь администратором. Возможно, объяснения удаления даны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
+'rev-suppressed-text-view' => "Эта версия страницы была '''скрыта'''.
+Вы можете просмотреть её, так как являетесь администратором. Возможно, объяснения удаления даны в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].",
+'rev-deleted-no-diff' => "Вы не можете просмотреть эту разницу версий, так как одна из версий страницы была '''удалена'''.
+Возможно, подробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].",
+'rev-suppressed-no-diff' => "Вы не можете просмотреть различие между этими версиями страницы, так как одна из них была '''удалена'''.",
+'rev-deleted-unhide-diff' => "Одна из версий страницы была '''удалена'''.
+Возможно, подробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].
+Вы можете [$1 просмотреть данную версию], так как являетесь администратором.",
+'rev-suppressed-unhide-diff' => "Одна из версий этого сравнения версий была '''скрыта'''.
+Подробности могут быть приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].
+Как администратор, вы всё-таки можете просмотреть [$1 эту разницу версий], если вы хотите продолжить.",
+'rev-deleted-diff-view' => "Одна из версий этого сравнения версий была '''удалена'''.
+Как администратор, вы можете просмотреть это сравнение, подробности могут быть указаны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удаления].",
+'rev-suppressed-diff-view' => "Одна из версий этого сравнения версий была '''скрыта'''.
+Как администратор, вы можете просмотреть это сравнение, подробности могут быть указаны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сокрытий].",
+'rev-delundel' => 'показать/скрыть',
+'rev-showdeleted' => 'показать',
+'revisiondelete' => 'Удалить / восстановить версии страницы',
+'revdelete-nooldid-title' => 'Не задана целевая версия',
+'revdelete-nooldid-text' => 'Вы не задали целевую версию (или версии) для выполнения этой функции.',
+'revdelete-nologtype-title' => 'Не указан тип журнала',
+'revdelete-nologtype-text' => 'Вы не указали тип журнала, в котором следует выполнить действие.',
+'revdelete-nologid-title' => 'Ошибочная запись журнала',
+'revdelete-nologid-text' => 'Вы не указали целевую запись журнала для выполнения действия или указанной записи не существует.',
+'revdelete-no-file' => 'Указанный файл не существует.',
+'revdelete-show-file-confirm' => 'Вы уверены, что вы хотите просмотреть удалённую версию файла «<nowiki>$1</nowiki>» от $2, $3 ?',
+'revdelete-show-file-submit' => 'Да',
+'revdelete-selected' => "'''{{PLURAL:$2|Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Выбранная запись|Выбранные записи}} журнала:'''",
+'revdelete-text' => "'''Удалённые версии страниц и событий будут показываться в истории страницы и журналах, но часть их содержания будет недоступна обычным посетителям.'''
+Администраторы проекта {{SITENAME}} будут иметь доступ к скрытому содержанию и смогут восстановить его через этот же интерфейс, за исключением случаев, когда было установлено дополнительное ограничение.",
+'revdelete-confirm' => 'Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].',
+'revdelete-suppress-text' => "Сокрытие может производиться '''только''' в следующих случаях:
* Неуместная личная информация
*: ''домашний адрес, номера телефонов, номер паспорта и т. д.''",
-'revdelete-legend' => 'Установить ограничения:',
-'revdelete-hide-text' => 'Скрыть текст этой версии страницы',
-'revdelete-hide-name' => 'Скрыть действие и его объект',
-'revdelete-hide-comment' => 'Скрыть описание изменений',
-'revdelete-hide-user' => 'Скрыть имя автора',
-'revdelete-hide-restricted' => 'Скрыть данные также и от администраторов',
-'revdelete-suppress' => 'Скрывать данные также и от администраторов',
-'revdelete-hide-image' => 'Скрыть содержимое файла',
-'revdelete-unsuppress' => 'Снять ограничения с восстановленных версий',
-'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Применить к выбранной версии',
-'revdelete-logentry' => 'изменил видимость версии страницы [[$1]]',
-'logdelete-logentry' => 'Изменена видимость события для [[$1]]',
-'revdelete-success' => "'''Видимость версии успешно изменена.'''",
-'logdelete-success' => 'Видимость события изменена.',
-'revdel-restore' => 'изменить видимость',
-'pagehist' => 'История страницы',
-'deletedhist' => 'История удалений',
-'revdelete-content' => 'содержимое',
-'revdelete-summary' => 'описание изменений',
-'revdelete-uname' => 'имя участника',
-'revdelete-restricted' => 'ограничения применяются к администраторам',
-'revdelete-unrestricted' => 'ограничения сняты для администраторов',
-'revdelete-hid' => 'скрыто $1',
-'revdelete-unhid' => 'раскрыто $1',
-'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|версии|версий|версий}}',
-'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|события|событий|событий}}',
+'revdelete-legend' => 'Установить ограничения:',
+'revdelete-hide-text' => 'Скрыть текст этой версии страницы',
+'revdelete-hide-image' => 'Скрыть содержимое файла',
+'revdelete-hide-name' => 'Скрыть действие и его объект',
+'revdelete-hide-comment' => 'Скрыть описание изменений',
+'revdelete-hide-user' => 'Скрыть имя автора',
+'revdelete-hide-restricted' => 'Скрыть данные также и от администраторов',
+'revdelete-radio-same' => '(не изменять)',
+'revdelete-radio-set' => 'Да',
+'revdelete-radio-unset' => 'Нет',
+'revdelete-suppress' => 'Скрывать данные также и от администраторов',
+'revdelete-unsuppress' => 'Снять ограничения с восстановленных версий',
+'revdelete-log' => 'Причина:',
+'revdelete-submit' => 'Применить к {{PLURAL:$1|выбранной версии|выбранным версиям}}',
+'revdelete-logentry' => 'изменил видимость версии страницы [[$1]]',
+'logdelete-logentry' => 'Изменена видимость события для [[$1]]',
+'revdelete-success' => "'''Видимость версии успешно изменена.'''",
+'revdelete-failure' => "'''Видимость версии не может быть изменена:'''
+$1",
+'logdelete-success' => 'Видимость события изменена.',
+'logdelete-failure' => "'''Видимость журнала не установлена:'''
+$1",
+'revdel-restore' => 'изменить видимость',
+'pagehist' => 'История страницы',
+'deletedhist' => 'История удалений',
+'revdelete-content' => 'содержимое',
+'revdelete-summary' => 'описание изменений',
+'revdelete-uname' => 'имя участника',
+'revdelete-restricted' => 'ограничения применяются к администраторам',
+'revdelete-unrestricted' => 'ограничения сняты для администраторов',
+'revdelete-hid' => 'скрыто $1',
+'revdelete-unhid' => 'раскрыто $1',
+'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|версии|версий|версий}}',
+'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|события|событий|событий}}',
+'revdelete-hide-current' => 'Ошибка скрытия записи от $2, $1: это текущая версия.
+Она не может быть скрыта.',
+'revdelete-show-no-access' => 'Ошибка раскрытия записи от $2, $1: эта запись отмечена как «ограниченная».
+У вас нет доступа к ней.',
+'revdelete-modify-no-access' => 'Ошибка изменения записи от $2, $1: эта запись отмечена как «ограниченная».
+У вас нет доступа к ней.',
+'revdelete-modify-missing' => 'Ошибка изменения записи ID $1, она отсутствует в базе данных!',
+'revdelete-no-change' => "'''Внимание:''' запись от $2, $1 уже имеет запрашиваемые настройки видимости.",
+'revdelete-concurrent-change' => 'Ошибка изменения записи от $2, $1: её статус был изменён кем-то другим, пока вы пытались изменить его.
+Пожалуйста, проверьте журналы.',
+'revdelete-only-restricted' => 'Ошибка сокрытия записи от $2 $1: вы не можете скрыть запись от просмотра администраторами без выбора одной из других настроек сокрытия.',
+'revdelete-reason-dropdown' => '* Стандартные причины удаления
+** Нарушение авторских прав
+** Неуместные личные сведения',
+'revdelete-otherreason' => 'Другая/дополнительная причина:',
+'revdelete-reasonotherlist' => 'Другая причина',
+'revdelete-edit-reasonlist' => 'Править список причин',
+'revdelete-offender' => 'Автор версии страницы:',
# Suppression log
'suppressionlog' => 'Журнал сокрытий',
@@ -1072,68 +1157,13 @@ $3 указал следующую причину: ''$2''",
'mergelogpagetext' => 'Ниже приведён список последних объединений историй страниц.',
# Diffs
-'history-title' => '$1 — история изменений',
-'difference' => '(Различия между версиями)',
-'lineno' => 'Строка $1:',
-'compareselectedversions' => 'Сравнить выбранные версии',
-'visualcomparison' => 'Наглядное сравнение',
-'wikicodecomparison' => 'Сравнение вики-текста',
-'editundo' => 'отменить',
-'diff-multi' => '({{PLURAL:$1|$1 промежуточная версия не показана|$1 промежуточные версии не показаны|$1 промежуточных версий не показаны.}})',
-'diff-movedto' => 'оформлено как $1',
-'diff-styleadded' => 'добавлен стиль $1',
-'diff-added' => '$1 добавл.',
-'diff-changedto' => 'изменено на $1',
-'diff-movedoutof' => 'вынесено из $1',
-'diff-styleremoved' => 'убран стиль $1',
-'diff-removed' => '$1 удал.',
-'diff-changedfrom' => 'изменено с $1',
-'diff-src' => 'источник',
-'diff-withdestination' => 'с назначением $1',
-'diff-with' => '&#32;с $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;и $1 $2',
-'diff-width' => 'ширина',
-'diff-height' => 'высота',
-'diff-p' => "'''абзац'''",
-'diff-blockquote' => "'''цитата'''",
-'diff-h1' => "'''заголовок 1-го уровня'''",
-'diff-h2' => "'''заголовок 2-го уровня'''",
-'diff-h3' => "'''заголовок 3-го уровня'''",
-'diff-h4' => "'''заголовок 4-го уровня'''",
-'diff-h5' => "'''заголовок 5-го уровня'''",
-'diff-pre' => "'''блок заданного формата'''",
-'diff-div' => "'''раздел'''",
-'diff-ul' => "'''неупорядоченный список'''",
-'diff-ol' => "'''упорядоченный список'''",
-'diff-li' => "'''элемент списка'''",
-'diff-table' => "'''таблица'''",
-'diff-tbody' => "'''содержание таблицы'''",
-'diff-tr' => "'''строка'''",
-'diff-td' => "'''ячейка'''",
-'diff-th' => "'''заголовок'''",
-'diff-br' => "'''разрыв'''",
-'diff-hr' => "'''горизонтальная линия'''",
-'diff-code' => "'''блок компьютерного кода'''",
-'diff-dl' => "'''список определений'''",
-'diff-dt' => "'''определяемый термин'''",
-'diff-dd' => "'''определение'''",
-'diff-input' => "'''ввод'''",
-'diff-form' => "'''форма'''",
-'diff-img' => "'''изображение'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''ссылка'''",
-'diff-i' => "'''курсив'''",
-'diff-b' => "'''выделение жирным'''",
-'diff-strong' => "'''выделение «strong»'''",
-'diff-em' => "'''выделение «em»'''",
-'diff-font' => "'''шрифт'''",
-'diff-big' => "'''большой шрифт'''",
-'diff-del' => "'''удалено'''",
-'diff-tt' => "'''моноширинный шрифт'''",
-'diff-sub' => "'''подстрочный'''",
-'diff-sup' => "'''надстрочный'''",
-'diff-strike' => "'''зачёркнутый'''",
+'history-title' => '$1 — история изменений',
+'difference' => '(Различия между версиями)',
+'lineno' => 'Строка $1:',
+'compareselectedversions' => 'Сравнить выбранные версии',
+'showhideselectedversions' => 'Показать/скрыть выбранные версии',
+'editundo' => 'отменить',
+'diff-multi' => '({{PLURAL:$1|$1 промежуточная версия не показана|$1 промежуточные версии не показаны|$1 промежуточных версий не показаны.}})',
# Search results
'searchresults' => 'Результаты поиска',
@@ -1141,28 +1171,25 @@ $3 указал следующую причину: ''$2''",
'searchresulttext' => 'Для получения более подробной информации о поиске на страницах проекта, см. [[{{MediaWiki:Helppage}}|справочный раздел]].',
'searchsubtitle' => 'По запросу «[[:$1]]» ([[Special:Prefixindex/$1|страницы, начинающиеся с этого названия]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ссылающиеся на это название]])',
'searchsubtitleinvalid' => 'По запросу «$1»',
-'noexactmatch' => "'''Страницы с названием «$1» не существует.''' [[:$1|Создать страницу]].",
-'noexactmatch-nocreate' => 'Страницы с названием «$1» не существует.',
'toomanymatches' => 'Найдено слишком много соответствий, пожалуйста, попробуйте другой запрос',
'titlematches' => 'Совпадения в названиях страниц',
'notitlematches' => 'Нет совпадений в названиях страниц',
'textmatches' => 'Совпадения в текстах страниц',
'notextmatches' => 'Нет совпадений в текстах страниц',
-'prevn' => 'предыдущие $1',
-'nextn' => 'следующие $1',
+'prevn' => '{{PLURAL:$1|предыдущая $1|предыдущие $1|предыдущие $1}}',
+'nextn' => '{{PLURAL:$1|следующая $1|следующие $1|следующие $1}}',
'prevn-title' => '{{PLURAL:$1|Предыдущая $1 запись|Предыдущие $1 записи|Предыдущие $1 записей}}',
'nextn-title' => '{{PLURAL:$1|Следующая $1 запись|Следующие $1 записи|Следующие $1 записей}}',
'shown-title' => 'Показывать $1 {{PLURAL:$1|запись|записи|записей}} на странице',
-'viewprevnext' => 'Просмотреть ($1) ($2) ($3)',
+'viewprevnext' => 'Просмотреть ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Настройки поиска',
'searchmenu-exists' => "'''В этом вики-проекте есть страница «[[:$1]]»'''",
'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
'searchhelp-url' => 'Help:Содержание',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показать страницы с этим префиксом]]',
-'searchprofile-articles' => 'По основным страницам',
-'searchprofile-articles-and-proj' => 'По основным страницам и проекту',
-'searchprofile-project' => 'По проекту',
-'searchprofile-images' => 'По файлам',
+'searchprofile-articles' => 'Основные страницы',
+'searchprofile-project' => 'Страницы справки и проектов',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Везде',
'searchprofile-advanced' => 'Расширенный',
'searchprofile-articles-tooltip' => 'Поиск в $1',
@@ -1170,8 +1197,6 @@ $3 указал следующую причину: ''$2''",
'searchprofile-images-tooltip' => 'Поиск файлов',
'searchprofile-everything-tooltip' => 'Поиск на всех страницах (включая страницы обсуждения)',
'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'prefs-search-nsdefault' => 'Поиск с использованием умолчаний:',
-'prefs-search-nscustom' => 'Поиск в заданных пространствах имён:',
'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слова|$2 слов}})',
'search-result-score' => 'Релевантность: $1 %',
'search-redirect' => '(перенаправление $1)',
@@ -1184,11 +1209,12 @@ $3 указал следующую причину: ''$2''",
'search-mwsuggest-disabled' => 'без советов',
'search-relatedarticle' => 'Связанный',
'mwsuggest-disable' => 'Отключить AJAX-подсказки',
+'searcheverything-enable' => 'Поиск по всем пространствам имён',
'searchrelated' => 'связанный',
'searchall' => 'все',
'showingresults' => 'Ниже {{PLURAL:$1|показан|показаны|показаны}} <strong>$1</strong> {{PLURAL:$1|результат|результата|результатов}}, начиная с №&nbsp;<strong>$2</strong>.',
'showingresultsnum' => 'Ниже {{PLURAL:$3|показан|показаны|показаны}} <strong>$3</strong> {{PLURAL:$3|результат|результата|результатов}}, начиная с №&nbsp;<strong>$2</strong>.',
-'showingresultstotal' => "Ниже {{PLURAL:$4|показан результат '''$1''' из '''$3'''|показаны результаты '''$1 — $2''' из '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1 — $2''' из '''$3'''}} для '''$4'''",
'nonefound' => "'''Замечание.''' По умолчанию поиск производится не во всех пространствах имён. Используйте приставку ''all:'', чтобы искать во всех пространствах имён (включая обсуждения участников, шаблоны и пр.), или укажите требуемое пространство имён.",
'search-nonefound' => 'Соответствий запросу не найдено.',
'powersearch' => 'Расширенный поиск',
@@ -1196,112 +1222,152 @@ $3 указал следующую причину: ''$2''",
'powersearch-ns' => 'Поиск в пространствах имён:',
'powersearch-redir' => 'Выводить перенаправления',
'powersearch-field' => 'Поиск',
+'powersearch-togglelabel' => 'Отметить:',
+'powersearch-toggleall' => 'Все',
+'powersearch-togglenone' => 'Ничего',
'search-external' => 'Внешний поиск',
'searchdisabled' => 'Извините, но встроенный полнотекстовый поиск выключен. Вы можете воспользоваться поиском по сайту через поисковые системы общего назначения, однако имейте в виду, что копия сайта в их кеше может быть несколько устаревшей.',
+# Quickbar
+'qbsettings' => 'Панель навигации',
+'qbsettings-none' => 'Не показывать',
+'qbsettings-fixedleft' => 'Неподвижная слева',
+'qbsettings-fixedright' => 'Неподвижная справа',
+'qbsettings-floatingleft' => 'Плавающая слева',
+'qbsettings-floatingright' => 'Плавающая справа',
+
# Preferences page
-'preferences' => 'Настройки',
-'mypreferences' => 'Настройки',
-'prefs-edits' => 'Количество правок:',
-'prefsnologin' => 'Вы не представились системе',
-'prefsnologintext' => 'Вы должны <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} представиться системе]</span>, чтобы изменять настройки участника.',
-'prefsreset' => 'Восстановлены настройки по умолчанию.',
-'qbsettings' => 'Панель навигации',
-'qbsettings-none' => 'Не показывать',
-'qbsettings-fixedleft' => 'Неподвижная слева',
-'qbsettings-fixedright' => 'Неподвижная справа',
-'qbsettings-floatingleft' => 'Плавающая слева',
-'qbsettings-floatingright' => 'Плавающая справа',
-'changepassword' => 'Изменение пароля',
-'skin' => 'Оформление',
-'skin-preview' => 'Предпросмотр',
-'math' => 'Отображение формул',
-'dateformat' => 'Формат даты',
-'datedefault' => 'По умолчанию',
-'datetime' => 'Дата и время',
-'math_failure' => 'Невозможно разобрать выражение',
-'math_unknown_error' => 'неизвестная ошибка',
-'math_unknown_function' => 'неизвестная функция',
-'math_lexing_error' => 'лексическая ошибка',
-'math_syntax_error' => 'синтаксическая ошибка',
-'math_image_error' => 'Преобразование в PNG прошло с ошибкой; проверьте правильность установки latex, dvips, gs и convert',
-'math_bad_tmpdir' => 'Не удаётся создать или записать во временный каталог математики',
-'math_bad_output' => 'Не удаётся создать или записать в выходной каталог математики',
-'math_notexvc' => 'Выполняемый файл texvc не найден; См. math/README — справку по настройке.',
-'prefs-personal' => 'Личные данные',
-'prefs-rc' => 'Свежие правки',
-'prefs-watchlist' => 'Список наблюдения',
-'prefs-watchlist-days' => 'Количество дней:',
-'prefs-watchlist-days-max' => '(не более 7 дней)',
-'prefs-watchlist-edits' => 'Максимальное количество правок, отображаемых в расширенном списке наблюдения:',
-'prefs-watchlist-edits-max' => '(не более 1000)',
-'prefs-misc' => 'Другие настройки',
-'prefs-resetpass' => 'Изменить пароль',
-'saveprefs' => 'Сохранить',
-'resetprefs' => 'Сбросить',
-'restoreprefs' => 'Восстановить настройки по умолчанию',
-'textboxsize' => 'Редактирование',
-'prefs-edit-boxsize' => 'Размер окна редактирования.',
-'rows' => 'Строк:',
-'columns' => 'Столбцов:',
-'searchresultshead' => 'Поиск',
-'resultsperpage' => 'Количество найденных записей на страницу:',
-'contextlines' => 'Количество показываемых строк для каждой найденной:',
-'contextchars' => 'Количество символов контекста на строку:',
-'stub-threshold' => 'Порог для определения оформления <a href="#" class="stub">ссылок на заготовки</a> (в байтах):',
-'recentchangesdays' => 'Количество дней, за которые показывать свежие правки:',
-'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней|дней}})',
-'recentchangescount' => 'Количество правок, отображаемое списке свежих правок, историях страниц, журналах, по умолчанию:',
-'savedprefs' => 'Ваши настройки сохранены.',
-'timezonelegend' => 'Часовой пояс:',
-'timezonetext' => 'Введите смещение (в часах) вашего местного времени
-от времени сервера (UTC — гринвичского).',
-'localtime' => 'Местное время:',
-'timezoneselect' => 'Часовой пояс:',
-'timezoneuseserverdefault' => 'Использовать настройки сервера',
-'timezoneuseoffset' => 'Иное (укажите смещение)',
-'timezoneoffset' => 'Смещение¹:',
-'servertime' => 'Время сервера:',
-'guesstimezone' => 'Заполнить из браузера',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азия',
-'timezoneregion-atlantic' => 'Атлантический океан',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Индийский океан',
-'timezoneregion-pacific' => 'Тихий океан',
-'allowemail' => 'Разрешить приём электронной почты от других участников',
-'prefs-searchoptions' => 'Настройки поиска',
-'prefs-namespaces' => 'Пространства имён',
-'defaultns' => 'По умолчанию искать в следующих пространствах имён:',
-'default' => 'по умолчанию',
-'files' => 'Файлы',
-'prefs-custom-css' => 'Собственный CSS',
-'prefs-custom-js' => 'Собственный JS',
+'preferences' => 'Настройки',
+'mypreferences' => 'Настройки',
+'prefs-edits' => 'Количество правок:',
+'prefsnologin' => 'Вы не представились системе',
+'prefsnologintext' => 'Вы должны <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} представиться системе]</span>, чтобы изменять настройки участника.',
+'changepassword' => 'Изменение пароля',
+'prefs-skin' => 'Тема оформления',
+'skin-preview' => 'Предпросмотр',
+'prefs-math' => 'Отображение формул',
+'datedefault' => 'По умолчанию',
+'prefs-datetime' => 'Дата и время',
+'prefs-personal' => 'Личные данные',
+'prefs-rc' => 'Свежие правки',
+'prefs-watchlist' => 'Список наблюдения',
+'prefs-watchlist-days' => 'Количество дней:',
+'prefs-watchlist-days-max' => '(не более 7 дней)',
+'prefs-watchlist-edits' => 'Максимальное количество правок, отображаемых в расширенном списке наблюдения:',
+'prefs-watchlist-edits-max' => '(не более 1000)',
+'prefs-watchlist-token' => 'Токен списка наблюдения:',
+'prefs-misc' => 'Другие настройки',
+'prefs-resetpass' => 'Изменить пароль',
+'prefs-email' => 'Параметры электронной почты',
+'prefs-rendering' => 'Внешний вид',
+'saveprefs' => 'Сохранить',
+'resetprefs' => 'Сбросить',
+'restoreprefs' => 'Восстановить настройки по умолчанию',
+'prefs-editing' => 'Редактирование',
+'prefs-edit-boxsize' => 'Размер окна редактирования.',
+'rows' => 'Строк:',
+'columns' => 'Столбцов:',
+'searchresultshead' => 'Поиск',
+'resultsperpage' => 'Количество найденных записей на страницу:',
+'contextlines' => 'Количество показываемых строк для каждой найденной:',
+'contextchars' => 'Количество символов контекста на строку:',
+'stub-threshold' => 'Порог для определения оформления <a href="#" class="stub">ссылок на заготовки</a> (в байтах):',
+'recentchangesdays' => 'Количество дней, за которые показывать свежие правки:',
+'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'recentchangescount' => 'Количество правок, отображаемое по умолчанию:',
+'prefs-help-recentchangescount' => 'Включает свежие правки, истории страниц, журналы.',
+'prefs-help-watchlist-token' => 'Заполнение этого поля секретным ключом будет создавать RSS-трансляцию для вашего списка наблюдений.
+Каждый, кто знает ключ в этом поле, сможет читать ваш список наблюдения, поэтому выбирайте секретное значение.
+Вы можете использовать сгенерированное случайным образом значение: $1',
+'savedprefs' => 'Ваши настройки сохранены.',
+'timezonelegend' => 'Часовой пояс:',
+'localtime' => 'Местное время:',
+'timezoneuseserverdefault' => 'Использовать настройки сервера',
+'timezoneuseoffset' => 'Иное (укажите смещение)',
+'timezoneoffset' => 'Смещение¹:',
+'servertime' => 'Время сервера:',
+'guesstimezone' => 'Заполнить из браузера',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантический океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индийский океан',
+'timezoneregion-pacific' => 'Тихий океан',
+'allowemail' => 'Разрешить приём электронной почты от других участников',
+'prefs-searchoptions' => 'Настройки поиска',
+'prefs-namespaces' => 'Пространства имён',
+'defaultns' => 'Иначе искать в следующих пространствах имён:',
+'default' => 'по умолчанию',
+'prefs-files' => 'Файлы',
+'prefs-custom-css' => 'Собственный CSS',
+'prefs-custom-js' => 'Собственный JS',
+'prefs-reset-intro' => 'Эта страница может быть использована для сброса ваших настроек на настройки по умолчанию.
+Подтвердив данное действие, вы не сможете его отменить.',
+'prefs-emailconfirm-label' => 'Подтверждение электронной почты:',
+'prefs-textboxsize' => 'Размер окна редактирования',
+'youremail' => 'Электронная почта:',
+'username' => 'Регистрационное имя:',
+'uid' => 'Идентификатор участника:',
+'prefs-memberingroups' => 'Член {{PLURAL:$1|группы|групп}}:',
+'prefs-registration' => 'Время регистрации:',
+'yourrealname' => 'Ваше настоящее имя:',
+'yourlanguage' => 'Язык интерфейса:',
+'yourvariant' => 'Вариант языка',
+'yournick' => 'Ваш псевдоним (для подписей):',
+'prefs-help-signature' => 'Комментарии на страницах обсуждений должны быть подписаны посредством добавления символов «<nowiki>~~~~</nowiki>», которые будут преобразованы в вашу подпись и время.',
+'badsig' => 'Неверная подпись. Проверьте корректность HTML-тегов.',
+'badsiglength' => 'Слишком длинная подпись.
+Подпись не должна превышать $1 {{PLURAL:$1|символа|символов|символов}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'не указан',
+'gender-male' => 'мужской',
+'gender-female' => 'женский',
+'prefs-help-gender' => 'Необязательное поле: используется в некоторых сообщениях движка, зависящих от пола участника.
+Эта информация будет общедоступной.',
+'email' => 'Электронная почта',
+'prefs-help-realname' => 'Настоящее имя (необязательное поле).
+Если вы укажете его, то оно будет использовано для того, чтобы показать, кем была внесена правка страницы.',
+'prefs-help-email' => 'Адрес электронной почты указывать необязательно, но он будет необходим в том случае, если вы забудете пароль.
+Он также позволит другим участникам связаться с вами через вашу страницу в вики без необходимости раскрытия адреса вашей электронной почты.',
+'prefs-help-email-required' => 'Необходимо указать адрес электронной почты.',
+'prefs-info' => 'Основные сведения',
+'prefs-i18n' => 'Интернационализация',
+'prefs-signature' => 'Подпись',
+'prefs-dateformat' => 'Формат даты',
+'prefs-timeoffset' => 'Смещение времени',
+'prefs-advancedediting' => 'Расширенные настройки',
+'prefs-advancedrc' => 'Расширенные настройки',
+'prefs-advancedrendering' => 'Расширенные настройки',
+'prefs-advancedsearchoptions' => 'Расширенные настройки',
+'prefs-advancedwatchlist' => 'Расширенные настройки',
+'prefs-display' => 'Настройки отображения',
+'prefs-diffs' => 'Разница версий',
# User rights
-'userrights' => 'Управление правами участника', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Управление группами участников',
-'userrights-user-editname' => 'Введите имя участника:',
-'editusergroup' => 'Изменить группы участника',
-'editinguser' => "Изменение прав участника '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Изменить группы участника',
-'saveusergroups' => 'Сохранить группы участника',
-'userrights-groupsmember' => 'Член групп:',
-'userrights-groups-help' => 'Вы можете изменить группы, в которые входит этот участник.
+'userrights' => 'Управление правами участника',
+'userrights-lookup-user' => 'Управление группами участников',
+'userrights-user-editname' => 'Введите имя участника:',
+'editusergroup' => 'Изменить группы участника',
+'editinguser' => "Изменение прав участника '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Изменить группы участника',
+'saveusergroups' => 'Сохранить группы участника',
+'userrights-groupsmember' => 'Член групп:',
+'userrights-groupsmember-auto' => 'Неявный член:',
+'userrights-groups-help' => 'Вы можете изменить группы, в которые входит этот участник.
* Если около названия группы стоит отметка, значит участник входит в эту группу.
* Если отметка не стоит — участник не относится к соответствующей группе.
* Знак * отмечает, что вы не можете удалить из группы участника, если добавите его в неё или наоборот.',
-'userrights-reason' => 'Причина:',
-'userrights-no-interwiki' => 'У вас нет разрешения изменять права участников на других вики.',
-'userrights-nodatabase' => 'База данных $1 не существует или не является локальной.',
-'userrights-nologin' => 'Вы должны [[Special:UserLogin|представиться системе]] с учётной записи администратора, чтобы присваивать права участникам.',
-'userrights-notallowed' => 'С вашей учётной записи не разрешено присваивать права участникам.',
-'userrights-changeable-col' => 'Группы, которые вы можете изменять',
-'userrights-unchangeable-col' => 'Группы, которые вы не можете изменять',
+'userrights-reason' => 'Причина:',
+'userrights-no-interwiki' => 'У вас нет разрешения изменять права участников на других вики.',
+'userrights-nodatabase' => 'База данных $1 не существует или не является локальной.',
+'userrights-nologin' => 'Вы должны [[Special:UserLogin|представиться системе]] с учётной записи администратора, чтобы присваивать права участникам.',
+'userrights-notallowed' => 'С вашей учётной записи не разрешено присваивать права участникам.',
+'userrights-changeable-col' => 'Группы, которые вы можете изменять',
+'userrights-unchangeable-col' => 'Группы, которые вы не можете изменять',
# Groups
'group' => 'Группа:',
@@ -1354,6 +1420,7 @@ $3 указал следующую причину: ''$2''",
'right-bigdelete' => 'удаление страниц с длинными историями',
'right-deleterevision' => 'удаление и восстановление конкретных версий страниц',
'right-deletedhistory' => 'просмотр истории удалённых страниц без доступа к удалённому тексту',
+'right-deletedtext' => 'просмотр удалённого текста и изменений между удалёнными версиями страниц',
'right-browsearchive' => 'поиск удалённых страниц',
'right-undelete' => 'восстановление страниц',
'right-suppressrevision' => 'просмотр и восстановление скрытых от администраторов версий страниц',
@@ -1367,6 +1434,8 @@ $3 указал следующую причину: ''$2''",
'right-editprotected' => 'правка защищённых страниц (без каскадной защиты)',
'right-editinterface' => 'изменение пользовательского интерфейса',
'right-editusercssjs' => 'правка CSS- и JS-файлов других участников',
+'right-editusercss' => 'правка CSS-файлов других участников',
+'right-edituserjs' => 'правка JS-файлов других участников',
'right-rollback' => 'быстрый откат правок последнего участника на некоторой странице',
'right-markbotedits' => 'отметка откатываемых правок как правок бота',
'right-noratelimit' => 'нет ограничений по скорости',
@@ -1383,6 +1452,8 @@ $3 указал следующую причину: ''$2''",
'right-siteadmin' => 'блокировка и разблокировка базы данных',
'right-reset-passwords' => 'сбрасывание паролей других участников',
'right-override-export-depth' => 'экспортирование страниц, включая связанные страницы с глубиной до 5',
+'right-versiondetail' => 'просмотр расширенной информации о версии программного обеспечения',
+'right-sendemail' => 'отправлять электронную почту другим участникам',
# User rights log
'rightslog' => 'Журнал прав участника',
@@ -1432,6 +1503,15 @@ $3 указал следующую причину: ''$2''",
'recentchanges-legend' => 'Настройки свежих правок',
'recentchangestext' => 'Ниже в хронологическом порядке перечислены последние изменения на страницах {{grammar:genitive|{{SITENAME}}}}.',
'recentchanges-feed-description' => 'Отслеживать последние изменения в вики в этом потоке.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 — новая страница',
+'recentchanges-label-newpage' => 'Этой правкой была создана новая страница.',
+'recentchanges-legend-minor' => '$1 — малое изменение',
+'recentchanges-label-minor' => 'Это малозначимое изменение',
+'recentchanges-legend-bot' => '$1 — правка бота',
+'recentchanges-label-bot' => 'Эта правка сделана ботом',
+'recentchanges-legend-unpatrolled' => '$1 — неотпатрулированная правка',
+'recentchanges-label-unpatrolled' => 'Эту правку ещё не отпатрулировали',
'rcnote' => "{{PLURAL:$1|Последнее '''$1''' изменение|Последние '''$1''' изменения|Последние '''$1''' изменений}} за '''$2''' {{PLURAL:$2|день|дня|дней}}, на момент времени $5 $4.",
'rcnotefrom' => 'Ниже перечислены изменения с <strong>$2</strong> (по <strong>$1</strong>).',
'rclistfrom' => 'Показать изменения с $1.',
@@ -1449,6 +1529,7 @@ $3 указал следующую причину: ''$2''",
'minoreditletter' => 'м',
'newpageletter' => 'Н',
'boteditletter' => 'б',
+'unpatrolledletter' => '!',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблюдающий участник|наблюдающих участника|наблюдающих участников}}]',
'rc_categories' => 'Только из категорий (разделитель «|»)',
'rc_categories_any' => 'Любой',
@@ -1458,6 +1539,8 @@ $3 указал следующую причину: ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Связанные правки',
+'recentchangeslinked-feed' => 'Связанные правки',
+'recentchangeslinked-toolbox' => 'Связанные правки',
'recentchangeslinked-title' => 'Связанные правки для $1',
'recentchangeslinked-noresult' => 'На связанных страницах не было изменений за указанный период.',
'recentchangeslinked-summary' => "Это список недавних изменений в страницах, на которые ссылается указанная страница (или входящих в указанную категорию).
@@ -1468,8 +1551,8 @@ $3 указал следующую причину: ''$2''",
# Upload
'upload' => 'Загрузить файл',
'uploadbtn' => 'Загрузить файл',
-'reupload' => 'Изменить загрузку',
'reuploaddesc' => 'Вернуться к форме загрузки',
+'upload-tryagain' => 'Отправить изменённое описание файла',
'uploadnologin' => 'Вы не представились системе',
'uploadnologintext' => 'Вы должны [[Special:UserLogin|представиться системе]],
чтобы загружать файлы на сервер.',
@@ -1502,6 +1585,7 @@ $3 указал следующую причину: ''$2''",
'minlength1' => 'Название файла должно содержать хотя бы одну букву.',
'illegalfilename' => 'Имя файла «$1» содержит символы, которые не разрешается использовать в заголовках. Пожалуйста, переименуйте файл и попытайтесь загрузить его снова.',
'badfilename' => 'Название файла было изменено на $1.',
+'filetype-mime-mismatch' => 'Расширение файла не соответствует его MIME-типу.',
'filetype-badmime' => 'Файлы, имеющие MIME-тип «$1», не могут быть загружены.',
'filetype-bad-ie-mime' => 'Невозможно загрузить этот файл, так как Internet Explorer будет определять его как «$1», то есть неразрешённым и потенциально опасным типом файла.',
'filetype-unwanted-type' => "'''\".\$1\"''' — нежелательный тип файла.
@@ -1522,7 +1606,6 @@ $3 указал следующую причину: ''$2''",
* Имя загруженного файла: '''<tt>[[:$1]]</tt>'''
* Имя существующего файла: '''<tt>[[:$2]]</tt>'''
Пожалуйста, выберите другое имя.",
-'fileexists-thumb' => "<center>'''Существующий файл'''</center>",
'fileexists-thumbnail-yes' => "Файл, вероятно, является уменьшенной копией (миниатюрой). [[$1|thumb]]
Пожалуйста, проверьте файл '''<tt>[[:$1]]</tt>'''.
Если указанный файл является тем же изображением, не стоит загружать отдельно его уменьшенную копию.",
@@ -1537,6 +1620,7 @@ $3 указал следующую причину: ''$2''",
'file-deleted-duplicate' => 'Подобный файл ([[$1]]) уже удалялся. Пожалуйста, ознакомьтесь с историей удаления файла, прежде чем загружать его снова.',
'successfulupload' => 'Загрузка успешно завершена',
'uploadwarning' => 'Предупреждение',
+'uploadwarning-text' => 'Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.',
'savefile' => 'Записать файл',
'uploadedimage' => 'загрузил «[[$1]]»',
'overwroteimage' => 'загружена новая версия «[[$1]]»',
@@ -1544,11 +1628,14 @@ $3 указал следующую причину: ''$2''",
'uploaddisabledtext' => 'Загрузка файлов отключена.',
'php-uploaddisabledtext' => 'Загрузка файлов отключена в настройках PHP. Пожалуйста, проверьте значение свойства file_uploads.',
'uploadscripted' => 'Файл содержит HTML-код или скрипт, который может быть ошибочно обработан браузером.',
-'uploadcorrupt' => 'Файл либо повреждён, либо имеет неверное расширение. Пожалуйста, проверьте файл и попробуйте загрузить его ещё раз.',
'uploadvirus' => 'Файл содержит вирус! См. $1',
+'upload-source' => 'Исходный файл',
'sourcefilename' => 'Исходный файл:',
+'sourceurl' => 'URL-адрес источника:',
'destfilename' => 'Новое имя файла:',
'upload-maxfilesize' => 'Максимальный размер файла: $1',
+'upload-description' => 'Описание файла',
+'upload-options' => 'Параметры загрузки',
'watchthisupload' => 'Следить за этим файлом',
'filewasdeleted' => 'Файл с таким именем уже существовал ранее, но был удалён. Пожалуйста, проверьте $1 перед повторной загрузкой.',
'upload-wasdeleted' => "'''Внимание: вы пытаетесь загрузить файл, который ранее удалялся.'''
@@ -1571,13 +1658,44 @@ MGP # Pentax
PICT # различные
#</pre> <!-- оставьте эту строчку как есть -->',
-'upload-proto-error' => 'Неправильный протокол',
-'upload-proto-error-text' => 'Для удалённой загрузки требуется адрес, начинающийся с <code>http://</code> или <code>ftp://</code>.',
-'upload-file-error' => 'Внутренняя ошибка',
-'upload-file-error-text' => 'Внутренняя ошибка при попытке создать временный файл на сервере.
+'upload-proto-error' => 'Неправильный протокол',
+'upload-proto-error-text' => 'Для удалённой загрузки требуется адрес, начинающийся с <code>http://</code> или <code>ftp://</code>.',
+'upload-file-error' => 'Внутренняя ошибка',
+'upload-file-error-text' => 'Внутренняя ошибка при попытке создать временный файл на сервере.
Пожалуйста, обратитесь к [[Special:ListUsers/sysop|администратору]].',
-'upload-misc-error' => 'Неизвестная ошибка загрузки',
-'upload-misc-error-text' => 'Неизвестная ошибка загрузки. Пожалуйста, проверьте, что адрес верен, и повторите попытку. Если проблема остаётся, обратитесь к системному администратору.',
+'upload-misc-error' => 'Неизвестная ошибка загрузки',
+'upload-misc-error-text' => 'Неизвестная ошибка загрузки. Пожалуйста, проверьте, что адрес верен, и повторите попытку. Если проблема остаётся, обратитесь к системному администратору.',
+'upload-too-many-redirects' => 'URL содержит слишком много перенаправлений',
+'upload-unknown-size' => 'Неизвестный размер',
+'upload-http-error' => 'Произошла ошибка HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Доступ запрещён',
+'img-auth-nopathinfo' => 'Отсутствует PATH_INFO.
+Ваш сервер не настроен, для передачи этих сведений.
+Возможно, он работает на основе CGI и не поддерживает img_auth.
+См. http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Запрашиваемый путь не относится к настроенной папке загрузок.',
+'img-auth-badtitle' => 'Невозможно построить правильный заголовок из «$1».',
+'img-auth-nologinnWL' => 'Вы не вошли в систему, а «$1» не входит в белый список.',
+'img-auth-nofile' => 'Файл «$1» не существует.',
+'img-auth-isdir' => 'Вы пытаетесь получить доступ к каталогу «$1».
+Разрешён только доступ к файлам.',
+'img-auth-streaming' => 'Потоковая передача «$1».',
+'img-auth-public' => 'Назначением img_auth.php является вывод файлов из закрытой вики.
+Эта вики настроена как общедоступная.
+Для оптимизации безопасности img_auth.php отключена.',
+'img-auth-noread' => 'Участник не имеет доступа на чтение к «$1».',
+
+# HTTP errors
+'http-invalid-url' => 'Ошибочный URL: $1',
+'http-invalid-scheme' => 'Не поддерживаются адреса со схемой «$1»',
+'http-request-error' => 'Сбой HTTP-запроса из-за неизвестной ошибки.',
+'http-read-error' => 'Ошибка чтения HTTP.',
+'http-timed-out' => 'Истекло время ожидания HTTP-запроса.',
+'http-curl-error' => 'Ошибка обращения к URL: $1',
+'http-host-unreachable' => 'Невозможно обратить к URL.',
+'http-bad-status' => 'Во время обработки HTTP-запроса обнаружена проблема: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Невозможно обратить по указанному адресу.',
@@ -1586,6 +1704,7 @@ PICT # различные
'upload-curl-error28-text' => 'Сайт слишком долго не отвечает. Пожалуйста, проверьте что сайт работоспособен и после небольшого перерыва попробуйте ещё раз. Возможно, операцию следует провести в другое время, когда сайт менее нагружен.',
'license' => 'Лицензирование:',
+'license-header' => 'Лицензирование',
'nolicense' => 'Отсутствует',
'license-nopreview' => '(Предпросмотр недоступен)',
'upload_source_url' => ' (правильный, публично доступный интернет-адрес)',
@@ -1606,38 +1725,42 @@ PICT # различные
'listfiles_count' => 'Версий',
# File description page
-'filehist' => 'История файла',
-'filehist-help' => 'Нажмите на дату/время, чтобы просмотреть, как тогда выглядел файл.',
-'filehist-deleteall' => 'удалить все',
-'filehist-deleteone' => 'удалить',
-'filehist-revert' => 'вернуть',
-'filehist-current' => 'текущий',
-'filehist-datetime' => 'Дата/время',
-'filehist-thumb' => 'Миниатюра',
-'filehist-thumbtext' => 'Миниатюра для версии от $1',
-'filehist-nothumb' => 'Нет миниатюры',
-'filehist-user' => 'Участник',
-'filehist-dimensions' => 'Размер объекта',
-'filehist-filesize' => 'Размер файла',
-'filehist-comment' => 'Примечание',
-'imagelinks' => 'Ссылки на файл',
-'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страницы ссылаются|Следующие $1 страниц ссылаются}} на данный файл:',
-'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц|страниц}} ссылаются на этот файл.
+'file-anchor-link' => 'Файл',
+'filehist' => 'История файла',
+'filehist-help' => 'Нажмите на дату/время, чтобы просмотреть, как тогда выглядел файл.',
+'filehist-deleteall' => 'удалить все',
+'filehist-deleteone' => 'удалить',
+'filehist-revert' => 'вернуть',
+'filehist-current' => 'текущий',
+'filehist-datetime' => 'Дата/время',
+'filehist-thumb' => 'Миниатюра',
+'filehist-thumbtext' => 'Миниатюра для версии от $1',
+'filehist-nothumb' => 'Нет миниатюры',
+'filehist-user' => 'Участник',
+'filehist-dimensions' => 'Размер объекта',
+'filehist-filesize' => 'Размер файла',
+'filehist-comment' => 'Примечание',
+'filehist-missing' => 'Файл отсутствует',
+'imagelinks' => 'Ссылки на файл',
+'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страницы ссылаются|Следующие $1 страниц ссылаются}} на данный файл:',
+'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц|страниц}} ссылаются на этот файл.
В данном списке {{PLURAL:$1|представлена только $1 ссылка|представлены только $1 ссылки|представлены только $1 ссылок}} на этот файл.
Доступен также [[Special:WhatLinksHere/$2|полный список]].',
-'nolinkstoimage' => 'Нет страниц, ссылающихся на данный файл.',
-'morelinkstoimage' => 'Просмотреть [[Special:WhatLinksHere/$1|остальные ссылки]] на этот файл.',
-'redirectstofile' => 'Со {{PLURAL:$1|следующего $1 файла установлено перенаправление|следующих $1 файлов установлены перенаправления|следующих $1 файлов установлены перенаправления}} на этот файл:',
-'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл является дубликатом|Следующие $1 файла являются дубликатами|Следующие $1 файлов являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
-'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Дополнительную информацию можно найти на $1.',
-'shareduploadwiki-desc' => 'Содержимое его $1 показано ниже.',
-'shareduploadwiki-linktext' => 'страницы описания',
-'noimage' => 'Файла с таким именем не существует, но вы можете $1.',
-'noimage-linktext' => 'загрузить его',
-'uploadnewversion-linktext' => 'Загрузить новую версию этого файла',
-'shared-repo-from' => 'из $1', # $1 is the repository name
-'shared-repo' => 'общего хранилища', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Нет страниц, ссылающихся на данный файл.',
+'morelinkstoimage' => 'Просмотреть [[Special:WhatLinksHere/$1|остальные ссылки]] на этот файл.',
+'redirectstofile' => 'Со {{PLURAL:$1|следующего $1 файла установлено перенаправление|следующих $1 файлов установлены перенаправления|следующих $1 файлов установлены перенаправления}} на этот файл:',
+'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл является дубликатом|Следующие $1 файла являются дубликатами|Следующие $1 файлов являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
+'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.',
+'sharedupload-desc-there' => 'Этот файл из $1 и может использоваться в других проектах.
+Дополнительную информацию можно найти на [$2 странице описания файла].',
+'sharedupload-desc-here' => 'Этот файл из $1 и может использоваться в других проектах.
+Информация с его [$2 страницы описания] приведена ниже.',
+'filepage-nofile' => 'Не существует файла с данным именем.',
+'filepage-nofile-link' => 'Не существует файла с данным именем. Вы можете [$1 загрузить его].',
+'uploadnewversion-linktext' => 'Загрузить новую версию этого файла',
+'shared-repo-from' => 'из $1',
+'shared-repo' => 'общего хранилища',
+'shared-repo-name-wikimediacommons' => 'Викисклада',
# File reversion
'filerevert' => 'Возврат к старой версии $1',
@@ -1666,6 +1789,7 @@ PICT # различные
** нарушение авторских прав
** файл-дубликат',
'filedelete-edit-reasonlist' => 'Править список причин',
+'filedelete-maintenance' => 'Удаление и восстановление файлов временно отключены на время технических работ.',
# MIME search
'mimesearch' => 'Поиск по MIME',
@@ -1687,7 +1811,7 @@ PICT # различные
# Random page
'randompage' => 'Случайная статья',
-'randompage-nopages' => 'В пространстве имён «$1» отсутствуют страницы.',
+'randompage-nopages' => 'В {{PLURAL:$2|следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
# Random redirect
'randomredirect' => 'Случайное перенаправление',
@@ -1699,6 +1823,7 @@ PICT # различные
'statistics-header-edits' => 'Статистика правок',
'statistics-header-views' => 'Статистика просмотров',
'statistics-header-users' => 'Статистика по участникам',
+'statistics-header-hooks' => 'Другая статистика',
'statistics-articles' => 'Статей',
'statistics-pages' => 'Страниц',
'statistics-pages-desc' => 'Все страницы в вики, включая страницы обсуждения, перенаправления и прочее.',
@@ -1728,8 +1853,8 @@ PICT # различные
'brokenredirects' => 'Разорванные перенаправления',
'brokenredirectstext' => 'Следующие перенаправления указывают на несуществующие страницы:',
-'brokenredirects-edit' => '(править)',
-'brokenredirects-delete' => '(удалить)',
+'brokenredirects-edit' => 'править',
+'brokenredirects-delete' => 'удалить',
'withoutinterwiki' => 'Страницы без межъязыковых ссылок',
'withoutinterwiki-summary' => 'Следующие страницы не имеют интервики-ссылок:',
@@ -1836,16 +1961,17 @@ PICT # различные
# Special:Categories
'categories' => 'Категории',
-'categoriespagetext' => 'Следующие категории содержат страницы или медиа-файлы.
-Здесь не показаны [[Special:UnusedCategories|Неиспользуемые категории]].
+'categoriespagetext' => '{{PLURAL:$1|Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
+Здесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].
См. также [[Special:WantedCategories|список требуемых категорий]].',
'categoriesfrom' => 'Показать категории, начинающиеся с:',
'special-categories-sort-count' => 'упорядочить по количеству',
'special-categories-sort-abc' => 'упорядочить по алфавиту',
# Special:DeletedContributions
-'deletedcontributions' => 'Удалённый вклад участника',
-'deletedcontributions-title' => 'Удалённый вклад',
+'deletedcontributions' => 'Удалённый вклад участника',
+'deletedcontributions-title' => 'Удалённый вклад',
+'sp-deletedcontributions-contribs' => 'вклад',
# Special:LinkSearch
'linksearch' => 'Внешние ссылки',
@@ -1861,6 +1987,16 @@ PICT # различные
'listusersfrom' => 'Показать участников, начиная с:',
'listusers-submit' => 'Показать',
'listusers-noresult' => 'Не найдено участников.',
+'listusers-blocked' => '(заблокирован)',
+
+# Special:ActiveUsers
+'activeusers' => 'Список активных участников',
+'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|правка|правки|правок}} за {{PLURAL:$3|последний $3 день|последние $3 дня|последние $3 дней}}',
+'activeusers-from' => 'Показать участников, начиная с:',
+'activeusers-hidebots' => 'Скрыть ботов',
+'activeusers-hidesysops' => 'Скрыть администраторов',
+'activeusers-noresult' => 'Не найдено участников.',
# Special:Log/newusers
'newuserlogpage' => 'Журнал регистрации участников',
@@ -1871,17 +2007,23 @@ PICT # различные
'newuserlog-autocreate-entry' => 'Учётная запись создана автоматически',
# Special:ListGroupRights
-'listgrouprights' => 'Права групп участников',
-'listgrouprights-summary' => 'Ниже представлен список определённых в этой вики групп участников, указаны соответствующие им права доступа.
+'listgrouprights' => 'Права групп участников',
+'listgrouprights-summary' => 'Ниже представлен список определённых в этой вики групп участников, указаны соответствующие им права доступа.
Возможно, существует [[{{MediaWiki:Listgrouprights-helppage}}|дополнительная информация]] об индивидуальных правах.',
-'listgrouprights-group' => 'Группа',
-'listgrouprights-rights' => 'Права',
-'listgrouprights-helppage' => 'Help:Права групп',
-'listgrouprights-members' => '(список группы)',
-'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|группу|группы}}: $1',
-'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|группы|групп}}: $1',
-'listgrouprights-addgroup-all' => 'может добавлять во все группы',
-'listgrouprights-removegroup-all' => 'может исключать из всех групп',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Предоставленные права</span>
+* <span class="listgrouprights-revoked">Отозванные права</span>',
+'listgrouprights-group' => 'Группа',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права групп',
+'listgrouprights-members' => '(список группы)',
+'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|группу|группы}}: $1',
+'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|группы|групп}}: $1',
+'listgrouprights-addgroup-all' => 'может добавлять во все группы',
+'listgrouprights-removegroup-all' => 'может исключать из всех групп',
+'listgrouprights-addgroup-self' => 'может добавить {{PLURAL:$2|группу|группы}} к своей учётной записи: $1',
+'listgrouprights-removegroup-self' => 'может удалить {{PLURAL:$2|группу|группы}} со своей учётной записи: $1',
+'listgrouprights-addgroup-self-all' => 'Может добавлять все группы к своей учётной записи',
+'listgrouprights-removegroup-self-all' => 'Может удалять все группы со своей учётной записи',
# E-mail user
'mailnologin' => 'Адрес для отправки отсутствует',
@@ -1953,7 +2095,7 @@ PICT # различные
'enotif_lastvisited' => 'См. $1 для просмотра всех изменений, произошедших с вашего последнего посещения.',
'enotif_lastdiff' => 'См. $1 для ознакомления с изменением.',
'enotif_anon_editor' => 'анонимный участник $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Уважаесый(ая) $WATCHINGUSERNAME,
$PAGEEDITDATE страница проекта «{{SITENAME}}» $PAGETITLE была $CHANGEDORCREATED участником $PAGEEDITOR, см. $PAGETITLE_URL для просмотра текущей версии.
@@ -1962,18 +2104,22 @@ $NEWPAGE
Краткое описание изменения: $PAGESUMMARY $PAGEMINOREDIT
Обратиться к изменившему:
-эл. почта $PAGEEDITOR_EMAIL
-вики $PAGEEDITOR_WIKI
+эл. почта: $PAGEEDITOR_EMAIL
+вики: $PAGEEDITOR_WIKI
-Не будет никаких других уведомлений в случае дальнейших изменений, если Вы не посещаете эту страницу. Вы могли также повторно установить флаги уведомления для всех ваших наблюдаемых страниц в вашем списке наблюдения.
+Если вы не посетите эту страницу, то в случае её дальнейших изменений уведомлений больше не будет.
+Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
Система оповещения {{grammar:genitive|{{SITENAME}}}}
--
-Чтобы изменить настройки вашего списка наблюдения обратитесь к
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Изменить настройки вашего списка наблюдения
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Удалить страницы из вашего списка наблюдения
+$UNWATCHURL
-Обратная связь и помощь:
+Обратная связь и помощь
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1985,11 +2131,12 @@ $NEWPAGE
'exblank' => 'страница была пуста',
'delete-confirm' => '$1 — удаление',
'delete-legend' => 'Удаление',
-'historywarning' => 'Предупреждение: у страницы, которую вы собираетесь удалить, есть история изменений:',
+'historywarning' => "'''Предупреждение'''. Страница, которую вы собираетесь удалить, имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий|версий}}:",
'confirmdeletetext' => 'Вы запросили полное удаление страницы (или изображения) и всей её истории изменений из базы данных.
Пожалуйста, подтвердите, что вы действительно желаете это сделать, понимаете последствия своих действий,
и делаете это в соответствии с правилами, изложенными в разделе [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Действие выполнено',
+'actionfailed' => 'Действие не выполнено',
'deletedtext' => '«<nowiki>$1</nowiki>» была удалена.
См. $2 для просмотра списка последних удалений.',
'deletedarticle' => 'удалил «[[$1]]»',
@@ -2013,19 +2160,20 @@ $NEWPAGE
действуйте с осторожностью.',
# Rollback
-'rollback' => 'Откатить изменения',
-'rollback_short' => 'Откат',
-'rollbacklink' => 'откатить',
-'rollbackfailed' => 'Ошибка при совершении отката',
-'cantrollback' => 'Невозможно откатить изменения. Последний, кто вносил изменения, является единственным автором этой страницы.',
-'alreadyrolled' => 'Невозможно откатить последние изменения [[:$1]], сделанные [[User:$2|$2]] ([[User talk:$2|Обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Откатить изменения',
+'rollback_short' => 'Откат',
+'rollbacklink' => 'откатить',
+'rollbackfailed' => 'Ошибка при совершении отката',
+'cantrollback' => 'Невозможно откатить изменения. Последний, кто вносил изменения, является единственным автором этой страницы.',
+'alreadyrolled' => 'Невозможно откатить последние изменения [[:$1]], сделанные [[User:$2|$2]] ([[User talk:$2|Обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
кто-то другой уже отредактировал или откатил эту страницу.
Последние изменения внёс [[User:$3|$3]] ([[User talk:$3|Обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Изменение было пояснено как ''«$1»''.", # only shown if there is an edit comment
-'revertpage' => 'Правки [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]]) откачены к версии [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Откачены правки $1; возврат к версии $2.',
-'sessionfailure' => 'Похоже, возникли проблемы с текущим сеансом работы;
+'editcomment' => "Изменение было пояснено как ''«$1»''.",
+'revertpage' => 'Правки [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]]) откачены к версии [[User:$1|$1]]',
+'revertpage-nouser' => 'Правки (имя участника удалено) откачены к версии [[User:$1|$1]]',
+'rollback-success' => 'Откачены правки $1; возврат к версии $2.',
+'sessionfailure' => 'Похоже, возникли проблемы с текущим сеансом работы;
это действие было отменено в целях предотвращения «захвата сеанса».
Пожалуйста, нажмите кнопку «Назад» и перезагрузите страницу, с которой вы пришли.',
@@ -2043,7 +2191,7 @@ $NEWPAGE
'protectexpiry' => 'Истекает:',
'protect_expiry_invalid' => 'Неправильное время окончания защиты.',
'protect_expiry_old' => 'Время окончания — в прошлом.',
-'protect-unchain' => 'Разблокировать переименование страницы',
+'protect-unchain-permissions' => 'Открыть дополнительные параметры защиты',
'protect-text' => "Здесь вы можете просмотреть и изменить уровень защиты для страницы '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Вы не можете изменять уровень защиты страницы, пока ваша учётная запись заблокирована.
Текущие установки для страницы '''$1''':",
@@ -2071,7 +2219,7 @@ $NEWPAGE
** непродуктивная война правок
** популярная страница',
'protect-edit-reasonlist' => 'Править список причин',
-'protect-expiry-options' => '1 час:1 hour,1 день:1 day,1 неделя:1 week,2 недели:2 weeks,1 месяц:1 month,3 месяца:3 months,6 месяцев:6 months,1 год:1 year,бессрочно:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 час:1 hour,1 день:1 day,1 неделя:1 week,2 недели:2 weeks,1 месяц:1 month,3 месяца:3 months,6 месяцев:6 months,1 год:1 year,бессрочно:infinite',
'restriction-type' => 'Права:',
'restriction-level' => 'Уровень доступа:',
'minimum-size' => 'Минимальный размер',
@@ -2111,6 +2259,7 @@ $NEWPAGE
'undelete-nodiff' => 'Не найдено предыдущей версии.',
'undeletebtn' => 'Восстановить',
'undeletelink' => 'просмотреть/восстановить',
+'undeleteviewlink' => 'просмотреть',
'undeletereset' => 'Очистить',
'undeleteinvert' => 'Обратить выделение',
'undeletecomment' => 'Причина:',
@@ -2148,19 +2297,23 @@ $1',
'contributions-title' => 'Вклад участника $1',
'mycontris' => 'Мой вклад',
'contribsub2' => 'Вклад $1 ($2)',
-'nocontribs' => 'Изменений, соответствующих заданным условиям, найдено не было.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Изменений, соответствующих заданным условиям, найдено не было.',
'uctop' => ' (последняя)',
'month' => 'С месяца (и ранее):',
'year' => 'С года (и ранее):',
-'sp-contributions-newbies' => 'Показать только вклад, сделанный с новых учётных записей',
-'sp-contributions-newbies-sub' => 'С новых учётных записей',
-'sp-contributions-newbies-title' => 'Вклад с недавно созданных учётных записей',
-'sp-contributions-blocklog' => 'блокировки',
-'sp-contributions-logs' => 'журналы',
-'sp-contributions-search' => 'Поиск вклада',
-'sp-contributions-username' => 'IP-адрес или имя участника:',
-'sp-contributions-submit' => 'Найти',
+'sp-contributions-newbies' => 'Показать только вклад, сделанный с новых учётных записей',
+'sp-contributions-newbies-sub' => 'С новых учётных записей',
+'sp-contributions-newbies-title' => 'Вклад с недавно созданных учётных записей',
+'sp-contributions-blocklog' => 'блокировки',
+'sp-contributions-deleted' => 'удалённые правки участника',
+'sp-contributions-logs' => 'журналы',
+'sp-contributions-talk' => 'обсуждение',
+'sp-contributions-userrights' => 'управление правами участника',
+'sp-contributions-blocked-notice' => 'Этот участник в данный момент заблокирован. Ниже приведена последняя запись из журнала блокировок:',
+'sp-contributions-search' => 'Поиск вклада',
+'sp-contributions-username' => 'IP-адрес или имя участника:',
+'sp-contributions-submit' => 'Найти',
# What links here
'whatlinkshere' => 'Ссылки сюда',
@@ -2183,6 +2336,7 @@ $1',
# Block/unblock
'blockip' => 'Заблокировать',
+'blockip-title' => 'Блокирование участника',
'blockip-legend' => 'Блокировка участника',
'blockiptext' => 'Используйте форму ниже, чтобы заблокировать возможность записи с определённого IP-адреса.
Это может быть сделано только для предотвращения вандализма и только в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].
@@ -2206,7 +2360,7 @@ $1',
'ipbenableautoblock' => 'Автоматически блокировать используемые участником IP-адреса',
'ipbsubmit' => 'Заблокировать этот адрес/участника',
'ipbother' => 'Другое время:',
-'ipboptions' => '2 часа:2 hours,1 день:1 day,3 дня:3 days,1 неделя:1 week,2 недели:2 weeks,1 месяц:1 month,3 месяца:3 months,6 месяцев:6 months,1 год:1 year,бессрочно:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 часа:2 hours,1 день:1 day,3 дня:3 days,1 неделя:1 week,2 недели:2 weeks,1 месяц:1 month,3 месяца:3 months,6 месяцев:6 months,1 год:1 year,бессрочно:infinite',
'ipbotheroption' => 'другое',
'ipbotherreason' => 'Другая причина/дополнение:',
'ipbhidename' => 'Скрыть имя участника из правок и списков',
@@ -2235,9 +2389,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 временные блокировки',
'ipblocklist-sh-addressblocks' => '$1 блокировки отдельных IP',
'ipblocklist-submit' => 'Найти',
+'ipblocklist-localblock' => 'Локальная блокировка',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
'blocklistline' => '$1, $2 заблокировал $3 ($4)',
'infiniteblock' => 'бессрочная блокировка',
-'expiringblock' => 'блокировка завершится $1',
+'expiringblock' => 'завершится $1 $2',
'anononlyblock' => 'только анонимов',
'noautoblockblock' => 'автоблокировка отключена',
'createaccountblock' => 'создание учётных записей запрещено',
@@ -2252,7 +2408,9 @@ $1',
'autoblocker' => 'Автоблокировка из-за совпадения вашего IP-адреса с адресом, который недавно использовал [[User:$1|$1]].
Причина блокировки $1 — «$2».',
'blocklogpage' => 'Журнал блокировок',
-'blocklog-fulllog' => 'Весь журнал блокировок',
+'blocklog-showlog' => '{{GENDER:$1|Этот участник уже блокировался|Эта участница уже блокировалась}} ранее.
+Ниже приведён журнал блокировок:',
+'blocklog-showsuppresslog' => 'Этот участник уже заблокирован и скрыт. Журнал сокрытий приведён ниже:',
'blocklogentry' => 'заблокировал [[$1]] на период $2 $3',
'reblock-logentry' => 'изменил настройки блокировки для [[$1]], истекает $2 $3',
'blocklogtext' => 'Журнал блокирования и разблокирования участников.
@@ -2273,9 +2431,11 @@ $1',
'ipb_already_blocked' => '«$1» уже заблокирован.',
'ipb-needreblock' => '== Уже заблокирован ==
Участник $1 уже заблокирован. Желаете ли вы изменить параметры блокировки?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
'ipb_cant_unblock' => 'Ошибка. Не найдена блокировка с ID $1. Возможно, она уже была снята.',
'ipb_blocked_as_range' => 'Ошибка: IP-адрес $1 был заблокирован не напрямую и не может быть разблокирован. Однако, он принадлежит к заблокированному диапазону $2, который можно разблокировать.',
'ip_range_invalid' => 'Недопустимый диапазон IP-адресов.',
+'ip_range_toolarge' => 'Блокировки диапазонов свыше /$1 запрещены.',
'blockme' => 'Заблокируй меня',
'proxyblocker' => 'Блокировка прокси',
'proxyblocker-disabled' => 'Функция отключена.',
@@ -2284,6 +2444,7 @@ $1',
'sorbsreason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL.',
'sorbs_create_account_reason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL. Вы не можете создать учётную запись.',
'cant-block-while-blocked' => 'Вы не можете блокировать других участников, пока вы сами заблокированы.',
+'cant-see-hidden-user' => 'Участник, которого вы пытаетесь заблокировать, уже заблокирован и скрыт. Поскольку у вас нет разрешения на работу по сокрытию участников, вы не можете просмотреть или изменить данную блокировку.',
# Developer tools
'lockdb' => 'Сделать базу данных доступной только для чтения',
@@ -2331,6 +2492,7 @@ $1',
В этих случаях, вы будете вынуждены переместить или объединить страницы вручную, если это нужно.",
'movearticle' => 'Переименовать страницу',
+'moveuserpage-warning' => "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.",
'movenologin' => 'Вы не представились системе',
'movenologintext' => 'Вы должны [[Special:UserLogin|представиться системе]],
чтобы иметь возможность переименовать страницы.',
@@ -2342,7 +2504,7 @@ $1',
'move-watch' => 'Включить эту страницу в список наблюдения',
'movepagebtn' => 'Переименовать страницу',
'pagemovedsub' => 'Страница переименована',
-'movepage-moved' => "'''Страница «$1» переименована в «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Страница «$1» переименована в «$2»'''",
'movepage-moved-redirect' => 'Было создано перенаправление.',
'movepage-moved-noredirect' => 'Создание перенаправления было подавлено.',
'articleexists' => 'Страница с таким именем уже существует или указанное вами название недопустимо.
@@ -2384,6 +2546,14 @@ $1',
'imageinvalidfilename' => 'Целевое имя файла ошибочно',
'fix-double-redirects' => 'Исправить перенаправления, указывающие на прежнее название',
'move-leave-redirect' => 'Оставить перенаправление',
+'protectedpagemovewarning' => "'''Предупреждение. Эта страница была защищена; переименовать её могут только участники с полномочиями администраторов.'''
+Ниже для справки приведена последняя запись журнала:",
+'semiprotectedpagemovewarning' => "'''Замечание.''' Эта страница была защищена; переименовать её могут только зарегистрированные участники.
+Ниже для справки приведена последняя запись журнала:",
+'move-over-sharedrepo' => '== Файл уже существует ==
+В общем хранилище существует [[:$1]]. Переименование файла в это название вызовет перекрытие файла из общего хранилища.',
+'file-exists-sharedrepo' => 'Выбранное имя файла уже используется в общем хранилище.
+Пожалуйста, выберите другое имя.',
# Export
'export' => 'Экспорт страниц',
@@ -2405,15 +2575,21 @@ $1',
'export-pagelinks' => 'Включить связанные страницы глубиной:',
# Namespace 8 related
-'allmessages' => 'Системные сообщения',
-'allmessagesname' => 'Сообщение',
-'allmessagesdefault' => 'Текст по умолчанию',
-'allmessagescurrent' => 'Текущий текст',
-'allmessagestext' => 'Это список системных сообщений, доступных в пространстве имён «MediaWiki».
+'allmessages' => 'Системные сообщения',
+'allmessagesname' => 'Сообщение',
+'allmessagesdefault' => 'Текст по умолчанию',
+'allmessagescurrent' => 'Текущий текст',
+'allmessagestext' => 'Это список системных сообщений, доступных в пространстве имён «MediaWiki».
Если вы хотите внести вклад в общую локализацию MediaWiki, пожалуйста, посетите страницу [http://www.mediawiki.org/wiki/Localisation описания локализации] и проект [http://translatewiki.net translatewiki.net].',
-'allmessagesnotsupportedDB' => "Эта страница недоступна, так как отключена опция '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Фильтр в формате регулярного выражения:',
-'allmessagesmodified' => 'Показать только изменённые',
+'allmessagesnotsupportedDB' => "Эта страница недоступна, так как отключена опция '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Фильтр',
+'allmessages-filter' => 'Фильтр по статусу изменения:',
+'allmessages-filter-unmodified' => 'Неизменённые',
+'allmessages-filter-all' => 'Все',
+'allmessages-filter-modified' => 'Изменённые',
+'allmessages-prefix' => 'Фильтр по приставке:',
+'allmessages-language' => 'Язык:',
+'allmessages-filter-submit' => 'Перейти',
# Thumbnails
'thumbnail-more' => 'Увеличить',
@@ -2423,6 +2599,9 @@ $1',
'djvu_no_xml' => 'Невозможно получить XML для DjVu',
'thumbnail_invalid_params' => 'Ошибочный параметр миниатюры',
'thumbnail_dest_directory' => 'Невозможно создать целевую директорию',
+'thumbnail_image-type' => 'Данный тип изображения не поддерживается',
+'thumbnail_gd-library' => 'Неполная конфигурация библиотеки GD, отсутствует функция $1',
+'thumbnail_image-missing' => 'По видимому, отсутствует файл $1',
# Special:Import
'import' => 'Импортирование страниц',
@@ -2486,6 +2665,7 @@ $1',
'tooltip-ca-viewsource' => 'Эта страница защищена от изменений, но вы можете посмотреть и скопировать её исходный текст',
'tooltip-ca-history' => 'Журнал изменений страницы',
'tooltip-ca-protect' => 'Защитить страницу от изменений',
+'tooltip-ca-unprotect' => 'Снять защиту с этой страницы',
'tooltip-ca-delete' => 'Удалить эту страницу',
'tooltip-ca-undelete' => 'Восстановить исправления страницы, сделанные до того, как она была удалена',
'tooltip-ca-move' => 'Переименовать страницу',
@@ -2496,6 +2676,7 @@ $1',
'tooltip-search-fulltext' => 'Найти страницы, содержащие указанный текст',
'tooltip-p-logo' => 'Заглавная страница',
'tooltip-n-mainpage' => 'Перейти на заглавную страницу',
+'tooltip-n-mainpage-description' => 'Перейти на заглавную страницу',
'tooltip-n-portal' => 'О проекте, о том, что вы можете сделать, где что находится',
'tooltip-n-currentevents' => 'Список текущих событий',
'tooltip-n-recentchanges' => 'Список последних изменений',
@@ -2535,11 +2716,13 @@ $1',
# Stylesheets
'common.css' => '/** Размещённый здесь CSS будет применяться ко всем темам оформления */',
'monobook.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Monobook */',
+'vector.css' => '/* Размещённый здесь CSS будет применяться к векторной теме оформления */',
'print.css' => '/* Размещённый здесь CSS будет применяться к версии для печати */',
# Scripts
'common.js' => '/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */',
'monobook.js' => '/* Указанный здесь JavaScript будет загружен всем участникам, использующим тему оформления MonoBook */',
+'vector.js' => '/* Указанный здесь JavaScript будет загружен всем участникам, использующим векторную тему оформления */',
# Metadata
'nodublincore' => 'Метаданные Dublin Core RDF запрещены для этого сервера.',
@@ -2550,10 +2733,12 @@ The wiki server can't provide data in a format your client can read.",
# Attribution
'anonymous' => '{{PLURAL:$1|Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
'siteuser' => 'участник {{grammar:genitive|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Эта страница последний раз была изменена $1 в $2, автор изменения — $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'анонимный участник {{grammar:genitive|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Эта страница последний раз была изменена $1 в $2, автор изменения — $3.',
'othercontribs' => 'В создании приняли участие: $1.',
'others' => 'другие',
'siteusers' => '{{PLURAL:$2|участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Благодарности',
'nocredits' => 'Нет списка участников для этой статьи',
@@ -2582,6 +2767,7 @@ The wiki server can't provide data in a format your client can read.",
'skinname-chick' => 'Цыпа',
'skinname-simple' => 'Простое',
'skinname-modern' => 'Современное',
+'skinname-vector' => 'Векторное',
# Math options
'mw_math_png' => 'Всегда генерировать PNG',
@@ -2591,11 +2777,22 @@ The wiki server can't provide data in a format your client can read.",
'mw_math_modern' => 'Как рекомендуется для современных браузеров',
'mw_math_mathml' => 'MathML, если возможно (экспериментальная опция)',
+# Math errors
+'math_failure' => 'Невозможно разобрать выражение',
+'math_unknown_error' => 'неизвестная ошибка',
+'math_unknown_function' => 'неизвестная функция',
+'math_lexing_error' => 'лексическая ошибка',
+'math_syntax_error' => 'синтаксическая ошибка',
+'math_image_error' => 'Преобразование в PNG прошло с ошибкой; проверьте правильность установки latex, dvips, gs и convert',
+'math_bad_tmpdir' => 'Не удаётся создать или записать во временный каталог математики',
+'math_bad_output' => 'Не удаётся создать или записать в выходной каталог математики',
+'math_notexvc' => 'Выполняемый файл texvc не найден; См. math/README — справку по настройке.',
+
# Patrolling
'markaspatrolleddiff' => 'Отметить как проверенную',
'markaspatrolledtext' => 'Отметить эту статью как проверенную',
'markedaspatrolled' => 'Отмечена как проверенная',
-'markedaspatrolledtext' => 'Выбранная версия отмечена как проверенная.',
+'markedaspatrolledtext' => 'Выбранная версия статьи [[:$1]] была отмечена как отпатрулированная.',
'rcpatroldisabled' => 'Патрулирование последних изменений запрещено',
'rcpatroldisabledtext' => 'Возможность патрулирования последних изменений в настоящее время отключена.',
'markedaspatrollederror' => 'Невозможно отметить как проверенную',
@@ -2625,13 +2822,10 @@ $1',
'previousdiff' => '← Предыдущая правка',
'nextdiff' => 'Следующая правка →',
-# Visual comparison
-'visual-comparison' => 'Наглядное сравнение',
-
# Media information
'mediawarning' => "'''Внимание'''. Этот тип файла может содержать вредоносный программный код.
После его запуска, ваша система может быть подвержена риску.",
-'imagemaxsize' => 'Ограничивать изображения на странице изображений до:',
+'imagemaxsize' => "Ограничение на размер изображения:<br />''(для страницы описания файла)''",
'thumbsize' => 'Размер уменьшенной версии изображения:',
'widthheight' => '$1 × $2',
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страницы|страниц}}',
@@ -2641,6 +2835,8 @@ $1',
'svg-long-desc' => '(SVG-файл, номинально $1 × $2 пикселов, размер файла: $3)',
'show-big-image' => 'Изображение в более высоком разрешении',
'show-big-image-thumb' => '<small>Размер при предпросмотре: $1 × $2 пикселов</small>',
+'file-info-gif-looped' => 'закольцованный',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейма|фреймов}}',
# Special:NewFiles
'newimages' => 'Галерея новых файлов',
@@ -2679,7 +2875,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2807,14 +3003,14 @@ $1',
'exif-unknowndate' => 'Неизвестная дата',
-'exif-orientation-1' => 'Нормальная', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Отражено по горизонтали', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Повёрнуто на 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Отражено по вертикали', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Повёрнуто на 90° против часовой стрелки и отражено по вертикали', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Повёрнуто на 90° по часовой стрелке', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Повёрнуто на 90° по часовой стрелке и отражено по вертикали', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Повёрнуто на 90° против часовой стрелки', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нормальная',
+'exif-orientation-2' => 'Отражено по горизонтали',
+'exif-orientation-3' => 'Повёрнуто на 180°',
+'exif-orientation-4' => 'Отражено по вертикали',
+'exif-orientation-5' => 'Повёрнуто на 90° против часовой стрелки и отражено по вертикали',
+'exif-orientation-6' => 'Повёрнуто на 90° по часовой стрелке',
+'exif-orientation-7' => 'Повёрнуто на 90° по часовой стрелке и отражено по вертикали',
+'exif-orientation-8' => 'Повёрнуто на 90° против часовой стрелки',
'exif-planarconfiguration-1' => 'формат «chunky»',
'exif-planarconfiguration-2' => 'формат «planar»',
@@ -2941,7 +3137,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Измерение 2-х координат',
'exif-gpsmeasuremode-3' => 'Измерение 3-х координат',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'км/час',
'exif-gpsspeed-m' => 'миль/час',
'exif-gpsspeed-n' => 'узлов',
@@ -2960,6 +3156,7 @@ $1',
'watchlistall2' => 'все',
'namespacesall' => 'все',
'monthsall' => 'все',
+'limitall' => 'все',
# E-mail address confirmation
'confirmemail' => 'Подтверждение адреса электронной почты',
@@ -3142,7 +3339,7 @@ $1',
'duplicate-defaultsort' => 'Внимание. Ключ сортировки по умолчанию «$2» переопределяет прежний ключ сортировки по умолчанию «$1».',
# Special:Version
-'version' => 'Версия MediaWiki', # Not used as normal message but as header for the special page itself
+'version' => 'Версия MediaWiki',
'version-extensions' => 'Установленные расширения',
'version-specialpages' => 'Служебные страницы',
'version-parserhooks' => 'Перехватчики синтаксического анализатора',
@@ -3156,7 +3353,7 @@ $1',
'version-skin-extension-functions' => 'Функции расширений тем оформления',
'version-hook-name' => 'Имя перехватчика',
'version-hook-subscribedby' => 'Подписан на',
-'version-version' => 'Версия',
+'version-version' => '(Версия $1)',
'version-license' => 'Лицензия',
'version-software' => 'Установленное программное обеспечение',
'version-software-product' => 'Продукт',
@@ -3236,4 +3433,15 @@ $1',
'dberr-outofdate' => 'Но имейте в виду, что его индекс может оказаться устаревшим.',
'dberr-cachederror' => 'Ниже представлена закэшированная версия запрашиваемой страницы, возможно, она не отражает последних изменений.',
+# HTML forms
+'htmlform-invalid-input' => 'Часть введённых вами данных вызвала проблемы',
+'htmlform-select-badoption' => 'Указанное вами значение не является допустимым.',
+'htmlform-int-invalid' => 'Указанное вами значение не является целым числом.',
+'htmlform-float-invalid' => 'Указанное вами значение не является числом.',
+'htmlform-int-toolow' => 'Указанное вами значение ниже минимального — $1',
+'htmlform-int-toohigh' => 'указанное вами значение выше максимального — $1',
+'htmlform-submit' => 'Отправить',
+'htmlform-reset' => 'Отменить изменения',
+'htmlform-selectorother-other' => 'Иное',
+
);
diff --git a/languages/messages/MessagesRue.php b/languages/messages/MessagesRue.php
new file mode 100644
index 00000000..65dc8005
--- /dev/null
+++ b/languages/messages/MessagesRue.php
@@ -0,0 +1,2069 @@
+<?php
+/** Rusyn (русиньскый язык)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Gazeb
+ * @author Tkalyn
+ */
+
+$fallback = 'uk';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Підкреслёвати одказы:',
+'tog-highlightbroken' => 'Форматовати одказы на неекзістуючі сторінкы <a href="" class="new">так</a> (алтернатіва: так<a href="" class="internal">?</a>).',
+'tog-justify' => 'Зарівнати текст до блоку',
+'tog-hideminor' => 'Сховати малы едітованя в списку послїднїх змін',
+'tog-hidepatrolled' => 'Сховати патролёваны едітованя в списку послїднїх змін',
+'tog-newpageshidepatrolled' => 'Сховати патролёваны сторінкы зо списку новых сторінок',
+'tog-extendwatchlist' => 'Росшыреный список слїдованых сторінок, обсягує вшыткы зміны, не лем послїднї',
+'tog-usenewrc' => 'Хосновати здоконалены послїднї зміны (JavaScript)',
+'tog-numberheadings' => 'Автоматічно нумеровати надписы',
+'tog-showtoolbar' => 'Вказати панел інштрументів (потрібный JavaScript)',
+'tog-editondblclick' => 'Едітовати двоїтым кликом (JavaScript)',
+'tog-editsection' => 'Поволити едітованя секції сторінкы через одказ [едіт.]',
+'tog-editsectiononrightclick' => 'Поволити едітованя секції сторінкы через кликаня правов клопков мышкы на надписы сторінок (JavaScript)',
+'tog-showtoc' => 'Вказовати обсяг (на сторінках з веце як трёма надписами)',
+'tog-rememberpassword' => 'Запамятати моє приголошіня на тім компютері',
+'tog-watchcreations' => 'Придавати сторінкы створены мнов до мого списку слїдованых',
+'tog-watchdefault' => 'Придавати мнов едітованы сторінкы до списку слїдованых',
+'tog-watchmoves' => 'Придавати переменованы сторінкы до мого списку слїдованых',
+'tog-watchdeletion' => 'Придавати сторінкы котры змажу, міджі слїдованы',
+'tog-minordefault' => 'Імпліцітно позначіти вшыткы зміны як малы',
+'tog-previewontop' => 'Вказовати нагляд перед окном едітованя (не за ним)',
+'tog-previewonfirst' => 'Вказати нагляд при першій едітації',
+'tog-nocache' => 'Заборонити кешованя сторінок',
+'tog-enotifwatchlistpages' => 'Послати електронічну пошту, кідь ся змінила сторінка з мого списку слїдованя',
+'tog-enotifusertalkpages' => 'Послати електронічну пошту при змінї моёй діскузной сторінкы',
+'tog-enotifminoredits' => 'Послати електронічну пошту і про меншы едітованя',
+'tog-enotifrevealaddr' => 'Прозрадити мою поштову адресу в поштї увідомлїня',
+'tog-shownumberswatching' => 'Вказати кілько хоснователїв придало сторінку до свого списку слїдованых',
+'tog-oldsig' => 'Нагляд екзістуючого підпису:',
+'tog-fancysig' => 'Хосновати про підпис вікітекст (без автоматічного одказу)',
+'tog-externaleditor' => 'Імпліцітно хосновати екстерный едітор',
+'tog-externaldiff' => 'Імпліцітно хосновати екстерный проґрам про порівнованя верзії',
+'tog-showjumplinks' => 'Актівізовати допоможны одказы "перейти дo"',
+'tog-uselivepreview' => 'Хосновати фрішный нагляд (JavaScript, експеріменрално)',
+'tog-forceeditsummary' => 'Упозорнити ня, кідь не є выповнене згорнутя едітованя',
+'tog-watchlisthideown' => 'Сховати мої едітованя на списку слїдованых сторінок',
+'tog-watchlisthidebots' => 'Сховати едітованя ботів у списку слїдованых сторінок',
+'tog-watchlisthideminor' => 'Сховати малы едітованя зо списку слїдованых сторінок',
+'tog-watchlisthideliu' => 'У списку слїдованых сторінок сховати едітації приголошеных хоснователїв',
+'tog-watchlisthideanons' => 'У списку слїдованых сторінок сховати едітації анонімів',
+'tog-watchlisthidepatrolled' => 'Сховати патролёваны едітації у слїдованых сторінках',
+'tog-ccmeonemails' => 'Посылати мі копії пошты, котру пошлю іншым хоснователям',
+'tog-diffonly' => 'Не вказовати обсяг сторінкы під роздїлом верзій',
+'tog-showhiddencats' => 'Вказати схованы катеґорії',
+'tog-norollbackdiff' => 'По вернутю зміны не вказовати порівнаня роздїлів',
+
+'underline-always' => 'Все',
+'underline-never' => 'Нїґда',
+'underline-default' => 'Хосновати наставлиня переглядача',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Тіп писма в едітачнім полю:',
+'editfont-default' => 'Хосновати наставлиня переглядача',
+'editfont-monospace' => 'Писмо зо сталов шырков',
+'editfont-sansserif' => 'Писмо без пяты',
+'editfont-serif' => 'Писмо з пятов',
+
+# Dates
+'sunday' => 'недїля',
+'monday' => 'понедїлёк',
+'tuesday' => 'вівторок',
+'wednesday' => 'середа',
+'thursday' => 'четверь',
+'friday' => 'пятніця',
+'saturday' => 'субота',
+'sun' => 'Нд',
+'mon' => 'Пн',
+'tue' => 'Вт',
+'wed' => 'Ср',
+'thu' => 'Чт',
+'fri' => 'Пт',
+'sat' => 'Сб',
+'january' => 'януар',
+'february' => 'фебрувар',
+'march' => 'марец',
+'april' => 'апріль',
+'may_long' => 'май',
+'june' => 'юній',
+'july' => 'юлій',
+'august' => 'авґуст',
+'september' => 'септембер',
+'october' => 'октобер',
+'november' => 'новембер',
+'december' => 'децембер',
+'january-gen' => 'януаря',
+'february-gen' => 'фебруара',
+'march-gen' => 'марца',
+'april-gen' => 'апріля',
+'may-gen' => 'мая',
+'june-gen' => 'юнія',
+'july-gen' => 'юлія',
+'august-gen' => 'авґуста',
+'september-gen' => 'септембра',
+'october-gen' => 'октобра',
+'november-gen' => 'новембра',
+'december-gen' => 'децембра',
+'jan' => 'ян',
+'feb' => 'феб',
+'mar' => 'мар',
+'apr' => 'апр',
+'may' => 'май',
+'jun' => 'юн',
+'jul' => 'юл',
+'aug' => 'авґ',
+'sep' => 'сеп',
+'oct' => 'окт',
+'nov' => 'нов',
+'dec' => 'дец',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Катеґорія|Катеґорії}}',
+'category_header' => 'Сторінки в катеґорії «$1»',
+'subcategories' => 'Підкатегорії',
+'category-media-header' => 'Файлы в категорії «$1»',
+'category-empty' => "''Тота катеґорія порожня.''",
+'hidden-categories' => '{{PLURAL:$1|Скрыта катеґорія|Скрыты катеґорії}}',
+'hidden-category-category' => 'Схованы катеґорії',
+'category-subcat-count' => '{{PLURAL:$2|Тота катеґорія має лем таку підкатеґорію.|{{PLURAL:$1|Показана $1 підкатеґорія|Показаны $1 підкатеґорії|Показані $1 підкатеґорій}} із $2.}}',
+'category-subcat-count-limited' => 'В тїй катеґорії {{PLURAL:$1|$1 підкатеґорія|$1 підкатеґорії|$1 підкаґегорій}}.',
+'category-article-count' => '{{PLURAL:$2|Тота катеґорія має лем таку сторінку.|{{PLURAL:$1|Показана $1 сторінка|Показаны $1 сторінкы|Показані $1 сторінок}} той катеґорії з $2.}}',
+'category-article-count-limited' => 'В тій катеґорії {{PLURAL:$1|$1 сторінка|$1 сторінкы|$1 сторінок}}.',
+'category-file-count' => '{{PLURAL:$2|Тота катеґорія обсягує лем тот файл.|{{PLURAL:$1|Вказаный $1 файл|Вказаны $1 файлы|Вказаных $1 файлів}} той катеґорії з $2.}}',
+'category-file-count-limited' => 'В тій катеґорії {{PLURAL:$1|$1 файл|$1 файлы|$1 файлів}}.',
+'listingcontinuesabbrev' => '(дале)',
+'index-category' => 'Індексованы сторінкы',
+'noindex-category' => 'Неіндексованы сторінкы',
+
+'mainpagetext' => "'''MediaWiki была успішнї наіншталована.'''",
+'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents Мануял хоснователя] Вам порадить, як хосновати MediaWiki.
+
+== Про початок ==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Наставлїня конфіґурації]
+* [http://www.mediawiki.org/wiki/Manual:FAQ Часты вопросы о MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розосыланя повідомлїнь про новы верзії MediaWiki]',
+
+'about' => 'О',
+'article' => 'Обсягова сторінка',
+'newwindow' => '(отворить ся в новім окнї)',
+'cancel' => 'Зрушыти',
+'moredotdotdot' => 'Детайлнїше…',
+'mypage' => 'Моя сторінка',
+'mytalk' => 'Моя діскузія',
+'anontalk' => 'Діскузія ку тотїй IP-адресі',
+'navigation' => 'Навіґація',
+'and' => '&#32;і',
+
+# Cologne Blue skin
+'qbfind' => 'Найти',
+'qbbrowse' => 'Переглядати',
+'qbedit' => 'Едітовати',
+'qbpageoptions' => 'Тота сторінка',
+'qbpageinfo' => 'Контекст',
+'qbmyoptions' => 'Мої сторінкы',
+'qbspecialpages' => 'Шпеціалны сторінкы',
+'faq' => 'Часты звідованя',
+'faqpage' => 'Project:Часты звідованя',
+
+# Vector skin
+'vector-action-addsection' => 'Придати тему',
+'vector-action-delete' => 'Вымазати',
+'vector-action-move' => 'Переменовати',
+'vector-action-protect' => 'Хранити',
+'vector-action-undelete' => 'Обновити',
+'vector-action-unprotect' => 'Одомкнути',
+'vector-namespace-category' => 'Катеґорія',
+'vector-namespace-help' => 'Сторінка помочі',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Сторінка',
+'vector-namespace-media' => 'Медіа-сторінка',
+'vector-namespace-mediawiki' => 'Ознам',
+'vector-namespace-project' => 'Сторінка проєкту',
+'vector-namespace-special' => 'Шпеціална сторінка',
+'vector-namespace-talk' => 'Діскузія',
+'vector-namespace-template' => 'Шаблона',
+'vector-namespace-user' => 'Сторінка хоснователя',
+'vector-view-create' => 'Вытворити',
+'vector-view-edit' => 'Едітовати',
+'vector-view-history' => 'Відїти історію',
+'vector-view-view' => 'Чітати',
+'vector-view-viewsource' => 'Відїти код',
+'actions' => 'Дїї',
+'namespaces' => 'Просторы назв',
+'variants' => 'Варіанты',
+
+'errorpagetitle' => 'Хыба',
+'returnto' => 'Навернутя до сторінкы «$1».',
+'tagline' => 'Матеріал з {{grammar:genitive|{{SITENAME}}}}',
+'help' => 'Поміч',
+'search' => 'Глядати',
+'searchbutton' => 'Найти',
+'go' => 'Перейти',
+'searcharticle' => 'Перейти',
+'history' => 'Історія сторінкы',
+'history_short' => 'Історія',
+'updatedmarker' => 'змінено од послїдный навщівы',
+'info_short' => 'Інформація',
+'printableversion' => 'Верзія про друк',
+'permalink' => 'Перманентный одказ',
+'print' => 'Друк',
+'edit' => 'Едітовати',
+'create' => 'Створити',
+'editthispage' => 'Едітовату тоту сторінку',
+'create-this-page' => 'Створити тоту сторінку',
+'delete' => 'Вымазати',
+'deletethispage' => 'Змазати тоту сторінку',
+'undelete_short' => 'Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}',
+'protect' => 'Хранити',
+'protect_change' => 'змінити',
+'protectthispage' => 'Хранити тоту сторінку',
+'unprotect' => 'Одомкнути',
+'unprotectthispage' => 'Одомкнути сторінку',
+'newpage' => 'Нова сторінка',
+'talkpage' => 'Діскутовати тоту сторінку',
+'talkpagelinktext' => 'діскузія',
+'specialpage' => 'Шпеціална сторінка',
+'personaltools' => 'Особны інштрументы',
+'postcomment' => 'Нова секція',
+'articlepage' => 'Перегляднути сторінку',
+'talk' => 'Діскузія',
+'views' => 'Перегляды',
+'toolbox' => 'Інштрументы',
+'userpage' => 'Відїти сторінку хоснователя',
+'projectpage' => 'Відїти сторінку проєкту',
+'imagepage' => 'Відїти сторінку файлу',
+'mediawikipage' => 'Відїти сторінку вістї',
+'templatepage' => 'Відїти шаблону',
+'viewhelppage' => 'Відїти сторінку помочі',
+'categorypage' => 'Відїти сторінку катеґорії',
+'viewtalkpage' => 'Відїти діскузію',
+'otherlanguages' => 'Іншыма языками',
+'redirectedfrom' => '(Напрямленый з $1)',
+'redirectpagesub' => 'Сторінка-напрямлиня',
+'lastmodifiedat' => 'Послїдня зміна той сторінкы: $2, $1.',
+'viewcount' => 'Сторінка была зображена {{PLURAL:$1|раз|$1разы|$1раз}}.',
+'protectedpage' => 'Замкнута сторінка',
+'jumpto' => 'Перейти до:',
+'jumptonavigation' => 'навіґація',
+'jumptosearch' => 'Найти',
+'view-pool-error' => 'Перебачте, серверы суть теперь перетяжены.
+Тоту сторінку сі теперь перезерать много хоснователів.
+Просиме Вас, почекайте і спробуйте доступность пізнїше.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'O {{grammar:accusative|{{SITENAME}}}}',
+'aboutpage' => 'Project:Описаня',
+'copyright' => 'Обсяг є доступный з $1.',
+'copyrightpage' => '{{ns:project}}:Авторьске право',
+'currentevents' => 'Актуалны подїї',
+'currentevents-url' => 'Project:Актуалны подїї',
+'disclaimers' => 'Вылучіня зодповідности',
+'disclaimerpage' => 'Project:Вылучіня зодповідности',
+'edithelp' => 'Поміч про едітованя',
+'edithelppage' => 'Help:Едітованя',
+'helppage' => 'Help:Обсяг',
+'mainpage' => 'Головна сторінка',
+'mainpage-description' => 'Головна сторінка',
+'policy-url' => 'Project:Правила',
+'portal' => 'Портал комуниты',
+'portal-url' => 'Project:Портал комуниты',
+'privacy' => 'Політіка охраны особных дат',
+'privacypage' => 'Project:Охрана особных дат',
+
+'badaccess' => 'Хыба оправнїня',
+'badaccess-group0' => 'Вам не є поволено выконавати тоту дїю.',
+'badaccess-groups' => 'Дїя, яку сьте хотіли зробити, поволена лем хоснователям із {{PLURAL:$2|ґрупы|ґруп}}: $1.',
+
+'versionrequired' => 'Потрібна MediaWiki верзії $1',
+'versionrequiredtext' => 'Про роботу з тов сторінков потрібна MediaWiki верзії $1. Відь [[Special:Version|сторінку верзії]].',
+
+'ok' => 'ОК',
+'retrievedfrom' => 'Обтримане з "$1"',
+'youhavenewmessages' => 'Маєте $1 ($2).',
+'newmessageslink' => 'новы ознамы',
+'newmessagesdifflink' => 'послїдня зміна',
+'youhavenewmessagesmulti' => 'Маєте новы ознамы на $1',
+'editsection' => 'едіт.',
+'editold' => 'едіт.',
+'viewsourceold' => 'відїти код',
+'editlink' => 'едітовати',
+'viewsourcelink' => 'переглянути істочный код',
+'editsectionhint' => 'Едітовати секцію: $1',
+'toc' => 'Обсяг',
+'showtoc' => 'вказати',
+'hidetoc' => 'сховати',
+'thisisdeleted' => 'Перегляднути ці обновити $1?',
+'viewdeleted' => 'Зобразити $1?',
+'restorelink' => '{{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}',
+'feedlinks' => 'Каналы:',
+'feed-invalid' => 'Неправилный тіп каналу.',
+'feed-unavailable' => 'Каналы не суть доступны',
+'site-rss-feed' => '$1 RSS канал',
+'site-atom-feed' => '$1 Atom канал',
+'page-rss-feed' => '"$1" RSS канал',
+'page-atom-feed' => '"$1" Atom канал',
+'red-link-title' => '$1 (така сторінка не екзістує)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Сторінка',
+'nstab-user' => 'Сторінка хоснователя',
+'nstab-media' => 'Медіа-сторінка',
+'nstab-special' => 'Шпеціална сторінка',
+'nstab-project' => 'Сторінка проекту',
+'nstab-image' => 'Файл',
+'nstab-mediawiki' => 'Ознам',
+'nstab-template' => 'Шаблона',
+'nstab-help' => 'Сторінка помочі',
+'nstab-category' => 'Катеґорія',
+
+# Main script and global functions
+'nosuchaction' => 'Такой дїї не має',
+'nosuchactiontext' => 'Дїя, уведжена в URL, неправилна.
+Могли сьте неправилно написати URL або перейти через некоректный одказ .
+Може тыж значіти хыбу в програмовім забезпечіню {{GRAMMAR:genitive|{{SITENAME}}}}.',
+'nosuchspecialpage' => 'Такой шпеціалной сторінкы не має',
+'nospecialpagetext' => '<strong>Така шпеціална сторінка не екзістує.</strong>
+
+Відь [[Special:SpecialPages|список шпеціалных сторінок]].',
+
+# General errors
+'error' => 'Хыба',
+'databaseerror' => 'Датабазова хыба',
+'dberrortext' => 'Найджена сінтактічна хыба в запросї до датабазы.
+Тото може вказовати на хыбу в проґрамовім забезпечіню.
+Послїднїй запрос до датабазы:
+<blockquote><tt>$1</tt></blockquote>
+з функції "<tt>$2</tt>".
+Датабаза вернула хыбу "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'Найджена сінтактічна хыба в запросї до датабазы.
+Послїднїй запрос до датабазы:
+«$1»
+з функції «$2».
+Датабаза вернула хыбу «$3: $4».',
+'laggedslavemode' => 'Увага: Сторінка не мусить быти актуална',
+'readonly' => 'Датабаза є замкнута',
+'enterlockreason' => 'Удайте причіну замкнутя і приближный термін одомкнутя',
+'readonlytext' => 'Датабаза є теперь замкнута, также ся не дають укладати новы статї і зміны. Причінов є асі плановане утримованя, по котрій ся вшытко верне до нормалного ставу.
+
+Адміністратор, котрый датабазу замкнув, охабив тото пояснїня: $1',
+'missing-article' => 'В датабазї са ненашов просеный текст сторінкы «$1» $2.
+
+Подобна сітуація звычайнї взникає при спробі переходу по застаралому одказованю на історію змін сторінкы, яка была вымазана.
+
+Кідь то не є тот припад, може сьте нашли помылку в проґрамовім забезпечіню.
+Просиме Вас, оголоште то [[Special:ListUsers/sysop|адміністраторам]], придайте і URL.',
+'missingarticle-rev' => '(ревізія № $1)',
+'missingarticle-diff' => '(Роздїл: $1, $2)',
+'readonly_lag' => 'Датабаза автоматічно заблокована од змін, докы ся другый датабазовый сервер не сінхронізує з мастером',
+'internalerror' => 'Інтерна хыба',
+'internalerror_info' => 'Інтерна хыба: $1',
+'fileappenderrorread' => 'В часі прыдаваня ся не подарило прочітати "$1".',
+'fileappenderror' => 'Не подарило ся придати «$1» до «$2».',
+'filecopyerror' => 'Не было можне копіровати файл «$1» на «$2».',
+'filerenameerror' => 'Не было можне переменовати файл «$1» на «$2».',
+'filedeleteerror' => 'Не было можне змазаты файл «$1».',
+'directorycreateerror' => 'Не є можне вытворити адресарь «$1».',
+'filenotfound' => 'Не было можне найти файл «$1».',
+'fileexistserror' => 'Не дасть ся записати до файлу «$1»: файл екзістує.',
+'unexpected' => 'Неочекавана годнота: «$1»=«$2».',
+'formerror' => 'Хыба: небыло можне одослати формуларь',
+'badarticleerror' => 'Тота дїя не може быти выконана на тій сторінцї.',
+'cannotdelete' => 'Не є можне вымазати сторінку або файл "$1".
+Може уж быв(а) змазаный(а) дакым іншым.',
+'badtitle' => 'Неприпустна назва',
+'badtitletext' => 'Пожадована назжа сторінкы неправилна, порожня, бо неправилно одказована як міджі-язычного ці міджі-вікі назва.
+Може ся хоснують сімболы, котры не можуть быти хоснованы в назвах.',
+'perfcached' => 'Наслїдуючі дата суть взяты з кешу і не мусять быти актуалны.',
+'perfcachedts' => 'Наслїдуючі дата суть взяты з кешу, котра была послїднїй раз актуалізована $1.',
+'querypage-no-updates' => 'Зміны той сторінкы заборонены. Дата нынї не можуть быти обновлены.',
+'wrong_wfQuery_params' => 'Неправилны параметры функцій wfQuery()<br />
+Функція: $1<br />
+Запрос: $2',
+'viewsource' => 'Перегляд',
+'viewsourcefor' => 'Сторінка «$1»',
+'actionthrottled' => 'Акція была придушена',
+'actionthrottledtext' => 'Взглядом ку протиспамовым опатрїням не можете жадану акцію провести барз часто в короткім часї. Спробуйте то знову о пару мінут.',
+'protectedpagetext' => 'Тота сторінка была замкнута, также ся не дасть едітовати',
+'viewsourcetext' => 'Можете відїти і копіровати код той сторінкы:',
+'protectedinterface' => 'Тота сторінка є частинов інтрефейсу проґрамового забезпечіня і єй можуть едітовати лем адміністраторы проєкту.',
+'editinginterface' => "'''Увага:''' Едітуєте сторінку,котра є частинов текстового інтерфейсу. Зміны той сторінкы выкличуть зміну інтерфейсу про іншых хоснователїв. Про переклад увідомлїня хоснуйте [http://translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проєкт, што ся занимає локалізаціёв MediaWiki.",
+'sqlhidden' => '(SQL запрос скрытый)',
+'cascadeprotected' => 'Сторінка є замнкута, бо є вложена до {{PLURAL:$1|наслїдуючой сторінкы замкнуты|наслїдуючіх сторінок замнкнутых|наслїдуючіх сторінок замнкнутых}} каскадовым замком:
+$2',
+'namespaceprotected' => 'Не маєте права едітовати сторінкы в просторї назв «$1».',
+'customcssjsprotected' => 'Не маєте права едітовати тоту сторінку, бо обсягує персоналны наставлїна іншого хоснователя.',
+'ns-specialprotected' => 'Шпеціалны сторінкы не є можне едітовати.',
+'titleprotected' => "Створїня сторінкы з таков назвов было заборонене хоснователём [[User:$1|$1]] з причінов: ''$2''.",
+
+# Virus scanner
+'virus-badscanner' => "Зла конфіґурація: незнамый антивіровый проґрам: ''$1''",
+'virus-scanfailed' => 'скенованя ся не подарило (код $1)',
+'virus-unknownscanner' => 'незнамый антівірус',
+
+# Login and logout pages
+'logouttext' => "'''Нынї сьте одголошеный(а).'''
+
+Можете продовжовати в анонімнім перезераню і едітації {{grammar:2sg|{{SITENAME}}}}, або ся можете [[Special:UserLogin|зясь приголосити]] як тот самый або як іншый хоснователь. Даякы сторінкы ся можуть зображовати як кібы сьте были дотеперь приголошены, покы не змажете кеш переглядача.",
+'welcomecreation' => '== Вітаєме вас, $1! ==
+Ваше конто было вытворене.
+Не забудьте змінити свої [[Special:Preferences|наставлиня сайту]].',
+'yourname' => 'Мено хоснователя:',
+'yourpassword' => 'Гесло:',
+'yourpasswordagain' => 'Повторяйте гесло:',
+'remembermypassword' => 'Запамятати моє приголошіня на тім компютері',
+'yourdomainname' => 'Ваша домена:',
+'externaldberror' => 'Або ся стала хыба екстерной автентіфікачной датабазы, або не маєте поволено мінити своє екстерне конто.',
+'login' => 'Приголошіня',
+'nav-login-createaccount' => 'Приголошіня / Вытворїня конта',
+'loginprompt' => 'Ку приголошіню до {{grammar:2sg|{{SITENAME}}}} мусите мати поволены cookies.',
+'userlogin' => 'Приголошіня / вытвориня конта',
+'userloginnocreate' => 'Приголошіня',
+'logout' => 'Одголосити',
+'userlogout' => 'Одголошіня',
+'notloggedin' => 'Не сьте приголошеный(а)',
+'nologin' => "До теперь не маєте конто? '''$1'''.",
+'nologinlink' => 'Вытворити конто',
+'createaccount' => 'Вытворити конто',
+'gotaccount' => "Уж сьте реґістрованы? '''$1'''.",
+'gotaccountlink' => 'Приголошіня',
+'createaccountmail' => 'електроничнов поштов',
+'badretype' => 'Вами написаны гесла не сугласять.',
+'userexists' => 'Уведжене мено хоснователя уж екзістує.
+Звольте інше мено.',
+'loginerror' => 'Хыба при приголошованю',
+'createaccounterror' => 'Не подарило ся створити конто хоснователя: $1',
+'nocookiesnew' => 'Конто хоснователя было створене, але не сьте приголошены.
+{{SITENAME}} хоснує cookies про приголошіня але вы маєте cookies выпнуты .
+Просиме Вас, повольте їх, а потім ся приголоште знову з вашым новым меном і геслом.',
+'nocookieslogin' => '{{SITENAME}} хоснує cookies про приголошіня хоснователїв. Вы маєте cookies выпнуты. Просиме Вас, повольте їх і спобуйте знова.',
+'noname' => 'Мусите увести мено свого конта.',
+'loginsuccesstitle' => 'Успішне приголошіня',
+'loginsuccess' => "'''Теперь працуєте {{grammar:locative|{{SITENAME}}}} під меном $1.'''",
+'nosuchuser' => 'Не екзістує хоснователь з меном «$1». У хосновательскых мен ся розлишують малы/великы писмена. Сконтролюйте запис, або собі [[Special:UserLogin/signup|зареґіструйте нове конто]].',
+'nosuchusershort' => 'Хоснователь з меном <nowiki>$1</nowiki> не екзістує.
+Перевірте правилность написаня мена.',
+'nouserspecified' => 'Мусите задати мено хоснователя.',
+'login-userblocked' => 'Тот хоснователь є заблокованый. Приголошіня не є доволене.',
+'wrongpassword' => 'Задали сьте хыбне гесло. Спробуйте іщі раз.',
+'wrongpasswordempty' => 'Было задане порожнє гесло. Спробуйте іщі раз.',
+'passwordtooshort' => 'Гесло мусить быти довге холем $1 {{PLURAL:$1|знак|знакы|знаків}}.',
+'password-name-match' => 'Ваше гесло не може быти таке саме як і ваше хосновательске мено.',
+'mailmypassword' => 'Послати нове гесло',
+'passwordremindertitle' => 'Нове дочасне гесло на {{grammar:4sg|{{SITENAME}}}}',
+'passwordremindertext' => 'Хтось (може Вы, з IP адресы $1) пожадав, жебы сьме Вам послали нове гесло
+про приголошіня до {{grammar:2sg|{{SITENAME}}}} ($4). Хоснователёви „$2“ было
+прото наставлено дочасне гесло „$3“. Кідь сьте то быв(а) вы, можете ся нынї
+приголосити і зволити собі нове гесло. Ваше дочасне гесло кінчіть
+о {{PLURAL:$5| єден день|$5 днї|$5 днїв}}.
+
+Кідь сьте о зміну гесла не жадав(а) або сьте собі спомянув(а) на ваше гесло
+а уж го мінити не хочете, можете тото повідомліня іґноровати
+і хосновати нове гесло.',
+'noemail' => 'Хоснователь "$1" не має реґістровану адресу електронічной пошты.',
+'noemailcreate' => 'Мусите задати правилну адресу електронічной пошты',
+'passwordsent' => 'Нове гесло было послане на адресу електронічной пошты реґістровану про „$1“. Приголосьте ся зясь, кідь го обтримете.',
+'blocked-mailpassword' => 'Вашій IP адресї была заблокована можность едітації і сучасно з тым є заблокована функція про засланя нового гесла.',
+'eauthentsent' => 'На задану адресу електронічной пошты было послане підтверджіня,
+Передтым як вам на тоту адресу буде мочі быти засылана далша пошта, наслїдуйте інштрукції в ел. пошті, жебы сьте підтвердили, же тота адреса справды належыть вам.',
+'throttled-mailpassword' => 'Гесло уж было раз заслане почас уплынулых $1 годин.
+Гесло може быти заслане лем раз за $1 {{PLURAL:$1|годину|годины|годин}}.',
+'mailerror' => 'Хыба засыланя ел. пошты: $1',
+'acct_creation_throttle_hit' => 'Хоснователї приходячі з вашой IP адресы уж днесь створили {{PLURAL:$1|конто|конта|конт}}, што є доволене максімум. Зато теперь не є доволено з той IP адресы закладати далшы конта.',
+'emailauthenticated' => 'Адреса вашой ел. пошты была овірена дня $2 о $3.',
+'emailnotauthenticated' => 'Адреса вашой ел. пошты дотеперь не была овірена, функції ел. пошты суть недоступны.',
+'noemailprefs' => 'Шпеціфікуйте адресу ел. пошты, жебы наслїднуючі можности могли фунґовати.',
+'emailconfirmlink' => 'Підтвердьте свою адресу ел. пошты',
+'invalidemailaddress' => 'Уведена адреса ел. пошты не може быти прията, бо она не має правилный формат.
+Просиме Вас, уведьте коректну адесу або зохабте поле порожнє.',
+'accountcreated' => 'Конто вытворене',
+'accountcreatedtext' => 'Конто хоснователя $1 было вытворене.',
+'createaccount-title' => 'Вытвориня конта про {{SITENAME}}',
+'createaccount-text' => 'Хтось створив про Вас конто «$2» на сервері проєкту {{SITENAME}} ($4) з геслом «$3», і зазначів вашу адресу електронічной пошты. Мали бы сьте ся што найскоре приголосити і змінити гесло.
+
+Іґноруйте дане повідомлїня, кідь конто было створено помылково.',
+'usernamehasherror' => 'Мено хоснователя не сміє обсяговати сімбол мережка (#)',
+'login-throttled' => 'Зробили сьте дуже много спроб о приголошіня.
+Просиме Вас, почекайте перед далшов спробов.',
+'loginlanguagelabel' => 'Язык: $1',
+'suspicious-userlogout' => 'Ваша пожадавка на одголошіня была одвергнута, бо вызерає то так, же была послана розбитым переглядачом або кешуючім проксі-сервером.',
+
+# Password reset dialog
+'resetpass' => 'Змінити гесло',
+'resetpass_announce' => 'Приголошуєте ся дочасным геслом, котре было послане електронічнов поштов. Про закончіня приголошіня треба задати нове гесло гев:',
+'resetpass_header' => 'Зміна гесла',
+'oldpassword' => 'Старе гесло:',
+'newpassword' => 'Нове гесло:',
+'retypenew' => 'Напиште знову нове гесло:',
+'resetpass_submit' => 'Наставити гесло а приголосити ся',
+'resetpass_success' => 'Ваше гесло было успішно змінено! Теперь ся приголосуєте...',
+'resetpass_forbidden' => 'Гесла не є можне змінити',
+'resetpass-no-info' => 'Ку тій сторінцї мають прямый приступ лем приголошены хоснователї.',
+'resetpass-submit-loggedin' => 'Змінити гесло',
+'resetpass-submit-cancel' => 'Сторно',
+'resetpass-wrong-oldpass' => 'Неправилне дочасне або актуалне гесло.
+Може сьте собі уж гесло успішно змінили, або сьте выжадали нове дочасне гесло.',
+'resetpass-temp-password' => 'Дочасне гесло:',
+
+# Edit page toolbar
+'bold_sample' => 'Тучный текст',
+'bold_tip' => 'Шырокый текст',
+'italic_sample' => 'Курсива',
+'italic_tip' => 'Курсива',
+'link_sample' => 'Назва одказу',
+'link_tip' => 'Інтерный одказ',
+'extlink_sample' => 'http://www.example.com назва одказу',
+'extlink_tip' => 'Екстерный одказ (не забудьте http:// prefix)',
+'headline_sample' => 'Текст заголовка',
+'headline_tip' => 'Заголовок 2-го рівня',
+'math_sample' => 'Вложте ту формулу',
+'math_tip' => 'Математична формула (LaTeX)',
+'nowiki_sample' => 'Вложте ту неформатованый текст',
+'nowiki_tip' => 'Іґноровати вікі-форматованя',
+'image_tip' => 'Файл',
+'media_tip' => 'Одказ на медіа-файл',
+'sig_tip' => 'Ваш підпис з датумом і часом',
+'hr_tip' => 'Горізонтална лінія (хоснуйте єй скупо)',
+
+# Edit pages
+'summary' => 'Куртый опис змін:',
+'subject' => 'Тема/заголовок:',
+'minoredit' => 'Незначна зміна',
+'watchthis' => 'Слїдовати тоту сторінку',
+'savearticle' => 'Уложыти сторінку',
+'preview' => 'Перегляд',
+'showpreview' => 'Вказати перегляд',
+'showlivepreview' => 'Фрішный перегляд',
+'showdiff' => 'Вказати зміны',
+'anoneditwarning' => "'''Увага''': Не сте приголошены. Ваша IP-адреса буде записана до історії змін той сторінкы.",
+'missingsummary' => "'''Припомянутя:''' Не задали сьте згорнутя едітації. Кідь іщі раз кликтете на Уложыти зміны, буде вапа едітація записана без згорнутя.",
+'missingcommenttext' => 'Задайте коментарь',
+'summary-preview' => 'Опис буде:',
+'subject-preview' => 'Нагляд темы/надпису:',
+'blockedtitle' => 'Хоснователь є блокованый',
+'blockedtext' => "'''Ваше хосновательске мено або IP адреса была заблокована.'''
+
+Блокованя зробив $1.
+Причіна є ''$2''.
+
+* Початок блокованя: $8
+* Конец блокованя: $6
+* Блокованый хоснователь: $7
+
+Можете контактовати $1 або іншого [[{{MediaWiki:Grouppage-sysop}}|адміністратора]].
+Уважте, же не можете поужыти 'Послати e-mail', кідь не маєте платну адресу ел. пошты во вашых [[Special:Preferences|наставлїня конта]] і кідь вам тота можность не была заказана.
+Ваша IP адреса є $3, і ID блокованя є #$5.
+Просиме Вас, пиште тоты детайлы во вшыткых запытах на адміністратора.",
+'autoblockedtext' => "'''Ваше хосновательске мено або IP адреса была заблокована.'''
+
+Блокованя зробив $1.
+Причіна є ''$2''.
+
+* Початок блокованя: $8
+* Конец блокованя: $6
+* Блокованый хоснователь: $7
+
+Можете контактовати $1 або іншого [[{{MediaWiki:Grouppage-sysop}}|адміністратора]].
+Уважте, же не можете поужыти 'Послати e-mail', кідь не маєте платну адресу ел. пошты во вашых [[Special:Preferences|наставлїня конта]] і кідь вам тота можность не была заказана.
+Ваша IP адреса є $3, і ID блокованя є #$5.
+Просиме Вас, пиште тоты детайлы во вшыткых запытах на адміністратора.",
+'blockednoreason' => 'причіна не была задана',
+'blockedoriginalsource' => "Здройовый текст сторінкы '''$1''' є вказаный ниже:",
+'blockededitsource' => "Текст '''вашых едітовань''' сторінкы «$1» наслїдує:",
+'whitelistedittitle' => 'Про едітованя є выжадоване приголошіня',
+'whitelistedittext' => 'Про едітованя ся мусите $1.',
+'confirmedittext' => 'Мусите підтвердити вашу адресу ел. пошты передтым як будете едітовати сторінкы.
+На сторінцї [[Special:Preferences|наставлїня]] задайте і зохабте собі підтвердити свою адресу ел. пошты.',
+'nosuchsectiontitle' => 'Секція ненайдена',
+'nosuchsectiontext' => 'Пробуєте едітовати секцію, котра не екзістує.
+Може была переменована або змазана, покы сьте перезерали сторінку.',
+'loginreqtitle' => 'Выжадоване приголошіня',
+'loginreqlink' => 'Приголосити ся',
+'loginreqpagetext' => 'Ку перезераню іншых сторінок ся мусите $1.',
+'accmailtitle' => 'Гесло одослане.',
+'accmailtext' => 'Нагодно выґенероване гесло про хоснователя [[User talk:$1|$1]] было послане на $2.
+Гесло того нового конта буде можне по приголошіню змінити на [[Special:ChangePassword|сторінцї про зміну гесла]].',
+'newarticle' => '(Нова)',
+'newarticletext' => "Перешли сте на сторінку, котра іщі не екзістує.
+Нову сторінку створите так, же зачнете писати в окнї ниже (вид. [[{{MediaWiki:Helppage}}|сторінка помочі]], про вецей інформації).
+Кідь сте ту помылково, просто кликните в переглядачу на '''назад'''",
+'anontalkpagetext' => "----''Тото є діскузна сторінка анонімного хоснователя, котрый іщі не має конто або го не хоснує. Ку&nbsp;ёго ідентіфікації прото мусиме хосновати IP адресу. Таку IP адресу може хосновати декілько хоснователів. Покы сьте анонімный хоснователь і&nbsp;і уважуєте, же вам суть адресованы ірелевантны коментарї, просиме, [[Special:UserLogin/signup|створьте собі конто]] або [[Special:UserLogin|ся приголосте]], уникнете тым будучій замінї з&nbsp;іншыма анонімныма хоснователями.''",
+'noarticletext' => 'Теперь на тїй сторінцї не є текст.
+Можете [[Special:Search/{{PAGENAME}}|глядати тоту назву]] в іншых сторінках,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} глядати в лоґах]
+або [{{fullurl:{{FULLPAGENAME}}|action=edit}} вытворити сторінку з таков назвов]</span>.',
+'noarticletext-nopermission' => 'Теперь на тїй сторінцї не є текст.
+Можете [[Special:Search/{{PAGENAME}}|глядати тоту назву]] в іншых сторінках,
+або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} глядати в лоґах].',
+'userpage-userdoesnotexist' => 'Хосновательске конто під назвов "$1" не є реґістроване. Сконтролюйте ці хочете вытворити/едітовати тоту сторінку.',
+'userpage-userdoesnotexist-view' => 'Хосновательске конто „$1 не є реґістроване.',
+'blocked-notice-logextract' => 'Тот хоснователь є теперь блокованый.
+Послїднїй запис в лоґах блоковань є такый:',
+'clearyourcache' => "'''Познамка:''' По уложіню мусите змазати кеш вашого вебового переглядача, інакше зміни не увидите: '''Mozilla / Firefox:''' ''Ctrl-Shift-R'', '''IE:''' ''Ctrl-F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror''': ''F5''.",
+'usercssyoucanpreview' => "'''Тіп:''' Хоснуйте ґомбічку „{{int:showpreview}}“ про тестованя вашого нового CSS перед уложінём.",
+'userjsyoucanpreview' => "'''Тіп:''' Хоснуйте ґомбічку „{{int:showpreview}}“ про тестованя вашого нового коду JavaScript перед уложінём.",
+'usercsspreview' => "'''Памятайте, же собі перезерате лем нагляд вашого хосновательского CSS.'''
+'''Іщі не было уложено!'''",
+'userjspreview' => "'''Памятайте, же тестуєте а перезерате лем нагляд вашого хосновательского JavaScript-у, іщі не быв уложеный!'''",
+'userinvalidcssjstitle' => "'''Увага:''' Тема взгляду „$1“ не екзістує. Не забудьте, же хосновательске .css і .js файлы хоснують малы писмена, наприклад {{ns:user}}:{{BASEPAGENAME}}/monobook.css, а не {{ns:user}}:{{BASEPAGENAME}}/Monobook.css.",
+'updated' => '(Зміна уложена)',
+'note' => "'''Познамка:'''&nbsp;",
+'previewnote' => "'''Памятайте, же то лем попереднїй перегляд,
+текст іщі не є уложеный!'''",
+'previewconflict' => 'Тот нагляд зображує текст так, як буде вызерати по уложіню сторінкы.',
+'session_fail_preview' => "'''Вашу пожадавку ся не подарило зпрацовати, бо были страчены дата сеансу.
+Просиме, спробуйте то зясь.
+Кідь ся тот проблем буде опаковати, спробуйте ся [[Special:UserLogout|одголосити]] і знову приголосити до сістему.'''",
+'session_fail_preview_html' => "'''Вашу пожадавку ся не подарило зпрацовати, бо были страчены дата сеансу..'''
+
+''Зато же {{SITENAME}} має запнуте хоснованя чістого HTML, нагляд ся про превенцію проти утокам JavaScript-ом не зображує.''
+
+'''Кідь іде о рядну едітацію, спробуйте то знову. Кідь ся тот проблем буде опаковати, спробуйте ся [[Special:UserLogout|одголосити]] і знову приголосити до сістему.'''",
+'token_suffix_mismatch' => "'''Ваша едітація не была схвалена, бо ваш вебовый переглядач комолить дакотры знакы в едітованім текстї.
+Едітація не была схвалена, жебы ся заборонило пошкоджіню тексту сторінкы.
+Тото ся може даколи стати, кідь хоснуєте хыбный вебовый анонімізер.'''",
+'editing' => 'Едітованя $1',
+'editingsection' => 'Едітованя $1 (роздїл)',
+'editingcomment' => 'Едітованя $1 (нова секція)',
+'editconflict' => 'Конфлікт едітованя: $1',
+'yourtext' => 'Ваш текст',
+'storedversion' => 'Уложена верзія',
+'yourdiff' => 'Роздїлы',
+'copyrightwarning' => "Просиме Вас, уважте, што вшыткы додаваня і зміны до {{grammar:genitive|{{SITENAME}}}} будуть выпущены під ліценціёв $2 (від. $1).
+Кідь не хочете, жебы написане вами ся немилосерднї едітовало і шырило, пак не пиште гев.<br />
+Вы тыж підтверджуєте, што написане вами ту належыть вам або взяте з джерела, што є верейным ці вольным джерелом.
+'''НЕ ПУБЛІКУЙТЕ ТУ БЕЗ ПОВОЛИНЯ МАТЕРІАЛЫ, ШТО СЯ ОХРАНЮЮТЬ АВТОРСКЫМ ПРАВОМ!''",
+'templatesused' => '{{PLURAL:$1|Шаблона, хоснована|Шаблоны, хоснованы}} на тій сторінці:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблона, хоснована|Шаблоны, хоснованы}} у тім перегляді:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблона, хоснована|Шаблоны, хоснованы}} у тій секції:',
+'template-protected' => '(хранена)',
+'template-semiprotected' => '(частково хранено)',
+'hiddencategories' => 'Тота сторінка належыть до $1 {{PLURAL:$1|схованa катеґорія|схованы катеґорії|схованы катеґорії}}:',
+'nocreate-loggedin' => 'Не маєте права створёвати новы сторінкы.',
+'permissionserrors' => 'Хыба оправнїня',
+'permissionserrorstext-withaction' => 'Не маєте поволїня на $2 з {{PLURAL:$1|такой причіны|такых причін}}:',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Не є можне вытворити конто',
+
+# History pages
+'viewpagelogs' => 'Вказати лоґы про тоту сторінку',
+'nohistory' => 'Про тоту статю не екзістує історія едітовань.',
+'currentrev' => 'Актуална ревізія',
+'currentrev-asof' => 'Точна ревізія на $1',
+'revisionasof' => 'Ревізія $1',
+'revision-info' => 'Верзія од $1; $2',
+'previousrevision' => 'Старша верзія',
+'nextrevision' => 'Новша ревізія →',
+'currentrevisionlink' => 'Актуална ревізія',
+'cur' => 'актуална',
+'next' => 'насл.',
+'last' => 'ост.',
+'page_first' => 'перша',
+'page_last' => 'послїдня',
+'histlegend' => "(теперь) = роздїлы од актуалной верзії,
+(послїдня) = роздїлы од попереднёй верзії, '''м''' = мале едітованя",
+'history-fieldset-title' => 'Перегляднути історію',
+'history-show-deleted' => 'Лем змазаны',
+'histfirst' => 'найстаршы',
+'histlast' => 'послїднї',
+'historysize' => '($1 {{PLURAL:$1|байт|байты|байтів}})',
+'historyempty' => '(порожнё)',
+
+# Revision feed
+'history-feed-title' => 'Історія едітовань',
+'history-feed-description' => 'Історія едітовань той сторінкы на вікі',
+'history-feed-item-nocomment' => '$1 в $2',
+'history-feed-empty' => 'Такой сторінкы не екзістує.
+Могли єй вымазати ці переменовати.
+Спробуйте [[Special:Search|найти во вікі]] подобны сторінкы.',
+
+# Revision deletion
+'rev-deleted-comment' => '(коментарь вымазаный)',
+'rev-deleted-user' => '(мено автора стерто)',
+'rev-deleted-event' => '(лоґ одстраненый)',
+'rev-delundel' => 'вказати/сховати',
+'rev-showdeleted' => 'вказати',
+'revdelete-show-file-submit' => 'Гей',
+'revdelete-selected' => "'''{{PLURAL:$2|Выбрана ревізія|Выбраны ревізії}} з [[:$1]]:'''",
+'revdelete-hide-text' => 'Сховати текст ревізії',
+'revdelete-hide-image' => 'Сховати обсяг файлу',
+'revdelete-hide-name' => 'Сховати дїю а ціль',
+'revdelete-hide-comment' => 'Сховати коментарь',
+'revdelete-hide-user' => 'Сховату мено автора/IP-адресу',
+'revdelete-radio-same' => '(не мінити)',
+'revdelete-radio-set' => 'Гей',
+'revdelete-radio-unset' => 'Нє',
+'revdelete-log' => 'Причіна:',
+'revdel-restore' => 'Змінити відимость',
+'pagehist' => 'Історія сторінкы',
+'deletedhist' => 'Вымазана історія',
+'revdelete-content' => 'обсяг',
+'revdelete-summary' => 'коментарь едітованя',
+'revdelete-uname' => 'мено хоснователя',
+'revdelete-restricted' => 'приданы обмеджіня про адміністраторів',
+'revdelete-unrestricted' => 'зняты обмеджіня про адміністраторів',
+'revdelete-hid' => 'сховав $1',
+'revdelete-unhid' => 'одкрыв $1',
+'revdelete-log-message' => '$1 $2 ревіз{{PLURAL:$2|ї|я|ї}}',
+'logdelete-log-message' => '$1 про $2 {{PLURAL:$2|події|подїй}}',
+'revdelete-hide-current' => 'Хыба сховаваня положкы з $1 $2: їднать ся о сучасну ревізію.
+Тота ся не дасть сховати.',
+'revdelete-show-no-access' => 'Хыба зображіня положкы з $1 $2: оно є позначене як «з обмедженым приступом».
+Не маєте приступ до нёго.',
+'revdelete-modify-no-access' => 'Хыба зміны положкы з $1 $2: оно є позначене як «з обмедженым приступом».
+Не маєте приступ до нёго.',
+'revdelete-modify-missing' => 'Хыба зміны положкы з ID $1: положка ся не нашла в датабазї!',
+'revdelete-no-change' => "'''Увага:''' положка од $2, $1 уж має запрошены наштелёваня видимости.",
+'revdelete-concurrent-change' => 'Хыба зміны положкы з $1 $2. Видить ся, же міджітым як сьте едітовали вы, єй став змінив хтось іншый.
+Просиме, перевірте лоґы.',
+'revdelete-otherreason' => 'Інша/далша причіна:',
+'revdelete-reasonotherlist' => 'Інша причіна',
+'revdelete-edit-reasonlist' => 'Едітуй причіны вымазаня',
+'revdelete-offender' => 'Автор ревізії:',
+
+# History merging
+'mergehistory' => 'Злучованя історії сторінок',
+'mergehistory-header' => 'Тота сторінка Вам доволить злучіти історію єдной здройовой сторінкы з новшов сторінков.
+Пересвідчте ся, же тота зміна утриме цалосность і поступность історії сторінкы.',
+'mergehistory-box' => 'Злучіти ревізії двох сторінок:',
+'mergehistory-from' => 'Здроёва сторінка:',
+'mergehistory-into' => 'Цілёва сторінка:',
+'mergehistory-list' => 'Історія злучітельных сторінок',
+'mergehistory-merge' => 'Наслїдуючі верзії сторінкы [[:$1|$1]] можуть быти злучены в [[:$2]]. Перепиначом выберте верзію, котра урчіть, же лем тота і старшы едітації будуть злучены. Рахуйте з тым, же хоснованём навіґачных одказів будуть дата страчены.',
+'mergehistory-go' => 'Вказати злучітельны едітації',
+'mergehistory-submit' => 'Споїти ревізії',
+'mergehistory-empty' => 'Не дають ся споїти жадны ревізії.',
+'mergehistory-success' => '$3 {{PLURAL:$3|ревізія|ревізії|ревізійí}} сторінкы [[:$1]] {{PLURAL:$3|была успішно злучена|были успішно злучены|было успішно злуґено}} до сторінкы [[:$2]].',
+'mergehistory-fail' => 'Злучіня історій ся не дасть зробити. Перевірте заданы сторінкы і їх історії',
+'mergehistory-no-source' => 'Здроёва сторінка $1 не екзістує.',
+'mergehistory-no-destination' => 'Цілёва сторінка «$1» не екзістує.',
+'mergehistory-invalid-source' => 'Здройова сторінка мусить мати правилну назву.',
+'mergehistory-invalid-destination' => 'Цілёва сторінка мусить мати правилну назву.',
+'mergehistory-autocomment' => 'Злучена сторінка [[:$1]] до сторінкы [[:$2]]',
+'mergehistory-comment' => 'Злучена сторінка [[:$1]] до сторінкы [[:$2]]: $3',
+'mergehistory-same-destination' => 'Здройова і цілёва сторінка не можуть быти такы самы',
+'mergehistory-reason' => 'Причіна:',
+
+# Merge log
+'mergelog' => 'Книга злучованя',
+'pagemerge-logentry' => 'злучує сторінку [[$1]] зо сторінков [[$2]] (верзії до $3)',
+'revertmerge' => 'Роздїлити',
+'mergelogpagetext' => 'Ниже є список найновшых злучінь історії єдной сторінкы з другов.',
+
+# Diffs
+'history-title' => 'Історія змін сторінкы «$1»',
+'difference' => '(роздїл міджі ревізіями)',
+'lineno' => 'Рядок $1:',
+'compareselectedversions' => 'Порівнати выбраны верзії',
+'showhideselectedversions' => 'Вказати/скрыти выбраны ревізії',
+'editundo' => 'вернути назад',
+
+# Search results
+'searchresults' => 'Резултаты гляданя',
+'searchresults-title' => 'Резултаты гляданя про "$1"',
+'searchresulttext' => 'Про детайлнїшы інформації про гляданя у проектї, від. [[{{MediaWiki:Helppage}}|сторінка помочі]]',
+'searchsubtitle' => 'Глядали сьте «[[:$1]]» ([[Special:Prefixindex/$1|вшыткы сторінкы, што ся зачінають на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|вшыткы сторінкы, што мають одказ на «$1»]])',
+'searchsubtitleinvalid' => "Глядали сте '''$1'''",
+'titlematches' => 'Сторінкы з одповідаючов назвов',
+'notitlematches' => 'Немає згоду в назвах сторінок',
+'textmatches' => 'Сторінкы з одповідаючім текстом',
+'notextmatches' => 'Немає згоду в текстах сторінок',
+'prevn' => '{{PLURAL:$1|попередня $1|попереднї $1|попереднїх $1}}',
+'nextn' => 'далшы {{PLURAL:$1|$1}}',
+'prevn-title' => '{{PLURAL:$1|Попереднїй резултат|Попереднї $1 резултаты|Попереднїх $1 резултатів}}',
+'nextn-title' => '{{PLURAL:$1|Далшый резултат|Далшы $1 резултаты|Далшых $1 резултатів}}',
+'shown-title' => 'Вказати $1 {{PLURAL:$1|резултат|резултаты|резултатів}} на сторінку',
+'viewprevnext' => 'Перегляднути ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'Параметры гляданя',
+'searchmenu-exists' => "'''У тій вікі є сторінка з назвов «[[:$1]]»'''",
+'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у тій вікі!'''",
+'searchhelp-url' => 'Help:Обсяг',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Вказати сторінкы з тым префіксом]]',
+'searchprofile-articles' => 'Статї',
+'searchprofile-project' => 'Сторінкы помочі і проєкту',
+'searchprofile-images' => 'Мултімедія',
+'searchprofile-everything' => 'Вшытко',
+'searchprofile-advanced' => 'Росшырене',
+'searchprofile-articles-tooltip' => 'Переглядавати: $1',
+'searchprofile-project-tooltip' => 'Переглядавати: $1',
+'searchprofile-images-tooltip' => 'Глядати файлы',
+'searchprofile-everything-tooltip' => 'Переглядавати вшыток обсяг (рахувчі діскузны сторінкы)',
+'searchprofile-advanced-tooltip' => 'Наставлити меновы просторы, в котрых ся має глядати',
+'search-result-size' => '$1 ({{PLURAL:$2|слово|слова|слов}})',
+'search-result-score' => 'Одповідность: $1 %',
+'search-redirect' => '(напрямити $1)',
+'search-section' => '(секція $1)',
+'search-suggest' => 'Може сте мали на мыслї: $1',
+'search-interwiki-caption' => 'Сестерьскы проєкты',
+'search-interwiki-default' => '$1 резултаты:',
+'search-interwiki-more' => '(веце)',
+'search-mwsuggest-enabled' => 'з порадамі',
+'search-mwsuggest-disabled' => 'без порад',
+'search-relatedarticle' => 'Звязаный',
+'mwsuggest-disable' => 'Выпнути пораду AJAX',
+'searcheverything-enable' => 'Глядати во вшыткых просторах назв',
+'searchrelated' => 'звязаный',
+'searchall' => 'вшыткы',
+'showingresults' => "Ниже {{PLURAL:$1|вказане|вказаны|вказаных}} '''$1''' {{PLURAL:$1|резултат|резултаты|резултатів}}, почінаючіх з №&nbsp;'''$2'''",
+'showingresultsnum' => 'Ниже вказано <strong>$3</strong> {{PLURAL:$3|резултат|резултаты|резултатів}}, почінаючі з №&nbsp;<strong>$2</strong>.',
+'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}} про '''$4'''",
+'nonefound' => "'''Познамка:''' Штандарднї ся глядать лем в дакотрых просторах назв.
+Хоснуйте префікс ''all:'', жебы глядати у вшыткых просторах назв (рахувчі тыж сторінкы діскузії, шаблоны ітд.), або зазначте потрібный простор назв.",
+'search-nonefound' => 'На ваш запрос не были найджены жадны резултаты.',
+'powersearch' => 'Розшырене гляданя',
+'powersearch-legend' => 'Розшырене гляданя',
+'powersearch-ns' => 'Глядати у просторах назв:',
+'powersearch-redir' => 'Список напрямлинь',
+'powersearch-field' => 'Глядати',
+'powersearch-togglelabel' => 'Позначіти:',
+'powersearch-toggleall' => 'Вшыткы',
+'powersearch-togglenone' => 'Жадный',
+'search-external' => 'Екстерне гляданя',
+
+# Quickbar
+'qbsettings' => 'Панел навіґації',
+'qbsettings-none' => 'Жадный',
+'qbsettings-fixedleft' => 'Лежыть влїво',
+'qbsettings-fixedright' => 'Лежыть вправо',
+'qbsettings-floatingleft' => 'Плаваюча влїво',
+'qbsettings-floatingright' => 'Плаваюча вправо',
+
+# Preferences page
+'preferences' => 'Наставлїня',
+'mypreferences' => 'Наставлїня',
+'prefs-edits' => 'Почет едітовань:',
+'prefsnologin' => 'Не сьте приголошеный(а)!',
+'changepassword' => 'Змінити гесло',
+'prefs-skin' => 'Взгляд',
+'skin-preview' => 'Попереднїй нагляд',
+'prefs-math' => 'Математіка',
+'datedefault' => 'Імпліцітный',
+'prefs-datetime' => 'Датум і час',
+'prefs-personal' => 'Інформації о хоснователёві',
+'prefs-rc' => 'Послїднї зміны',
+'prefs-watchlist' => 'Слїдованы сторінкы',
+'prefs-watchlist-days' => 'Рахунок днїв зображеных в слїдованых сторінках:',
+'prefs-watchlist-days-max' => '(максімалнї 7 днїв)',
+'prefs-watchlist-edits-max' => '(максімалне чісло: 1000)',
+'prefs-misc' => 'Іншы наставлиня',
+'prefs-resetpass' => 'Змінити гесло',
+'prefs-email' => 'Параметры електронічной пошты',
+'prefs-rendering' => 'Взгляд',
+'saveprefs' => 'Уложыти',
+'resetprefs' => 'Вернути неуложены зміны',
+'restoreprefs' => 'Обновити вшыткы штандартны наставлїня',
+'prefs-editing' => 'Едітованя',
+'prefs-edit-boxsize' => 'Розмір окна едітованя:',
+'rows' => 'Рядкы:',
+'columns' => 'Колонка:',
+'searchresultshead' => 'Гляданя',
+'resultsperpage' => 'Почет резултатів на сторінку:',
+'contextlines' => 'Почет рядків на резултат',
+'contextchars' => 'Почет сімболів контексту на рядок',
+'stub-threshold' => 'Поріг про форматованя одказу як <a href="#" class="stub">одказів на "stub"</a> (v bajtech):',
+'recentchangesdays' => 'На кілько днїв вказовати новы едітованя',
+'recentchangesdays-max' => '(максімум $1 {{PLURAL:$1|день|днї|днїв}})',
+'savedprefs' => 'Ваше наставлиня было уложене.',
+'timezonelegend' => 'Часова зона:',
+'localtime' => 'Містный час:',
+'timezoneuseserverdefault' => 'Хосновати наставлиня сервера',
+'timezoneuseoffset' => 'Інше (задайте посун)',
+'timezoneoffset' => 'Посун¹:',
+'servertime' => 'Час сервера:',
+'guesstimezone' => 'Начітати з переглядача',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктіда',
+'timezoneregion-arctic' => 'Арктіка',
+'timezoneregion-asia' => 'Азія',
+'timezoneregion-atlantic' => 'Атлантічный океан',
+'timezoneregion-australia' => 'Австралія',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Індійскый океан',
+'timezoneregion-pacific' => 'Тихый океан',
+'allowemail' => 'Поволити електронічну пошту од іншых хоснователїв',
+'prefs-searchoptions' => 'Параметры гляданя',
+'prefs-namespaces' => 'Просторы назв',
+'defaultns' => 'Інакше глядати в такых просторах назв:',
+'default' => 'імпліцітне',
+'prefs-files' => 'Файлы',
+'prefs-custom-css' => 'Властный CSS',
+'prefs-custom-js' => 'Властный JS',
+'prefs-emailconfirm-label' => 'Підтвердженя електронічной пошты:',
+'prefs-textboxsize' => 'Розмір окна едітованя',
+'youremail' => 'Адреса електронічной пошты:',
+'username' => 'Мено хоснователя:',
+'uid' => 'Ідентіфікатор хоснователя:',
+'prefs-memberingroups' => 'Член {{PLURAL:$1|ґрупы|ґруп}}:',
+'prefs-registration' => 'Час реґістрації:',
+'yourlanguage' => 'Язык:',
+'yournick' => 'Підпис:',
+'badsig' => 'Неправилний підпис.
+Перевірте коректность HTML-теґів.',
+'badsiglength' => 'Ваш підпис барз довгый.
+Мусить быти куртшый як $1 {{PLURAL:$1|сімвол|сімволы|сімволів}}.',
+'yourgender' => 'Поглавя:',
+'gender-unknown' => 'Нешпеціфіковано',
+'gender-male' => 'Мужске',
+'gender-female' => 'Женьске',
+'email' => 'Електронічна пошта',
+'prefs-help-realname' => 'Скуточне мено (волительно): кідь го задаєте, буде поужыте про означіня авторства вашой роботы на сторінцї.',
+'prefs-help-email' => 'Адреса електронічной пошты не є повинна, але є потрібна про засыланя нового гесла в припадї, же сьте своє гесло забыли.
+Тыж можете доволити іншым хоснователям вас контактовати з помочов вашой сторінкы, без того жебы была ваша адреса прозраджена.',
+'prefs-help-email-required' => 'Адреса електронічной пошты є потрібна.',
+'prefs-info' => 'Основны інформації',
+'prefs-i18n' => 'Інтернаціоналізація',
+'prefs-signature' => 'Підпис',
+'prefs-dateformat' => 'Формат датуму',
+'prefs-timeoffset' => 'Часовый посун',
+'prefs-advancedediting' => 'Розшырены можности',
+'prefs-advancedrc' => 'Розшырены мовности',
+'prefs-advancedrendering' => 'Розшырены можности',
+'prefs-advancedsearchoptions' => 'Розшырены можности',
+'prefs-advancedwatchlist' => 'Розшырены можности',
+'prefs-display' => 'Наставлїня взгляду',
+'prefs-diffs' => 'Порівнаня верзії',
+
+# User rights
+'userrights' => 'Справа хосновательскых ґруп',
+'userrights-lookup-user' => 'Управовати хосновательскы ґрупы',
+'userrights-user-editname' => 'Задайте мено хоснователя:',
+'editusergroup' => 'Едітовати хосновательскы ґрупы',
+'editinguser' => "Зміна прав хоснователя '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Змінити ґрупы хоснователя',
+'saveusergroups' => 'Уложыти хосновательскы ґрупы',
+'userrights-groupsmember' => 'Член ґруп:',
+'userrights-groupsmember-auto' => 'Автоматічный член ґруп:',
+'userrights-groups-help' => 'Можете мінити ґрупы, до котрых належыть хоснователь:
+* Кідь є позначене поличко, хоснователь належыть до той ґрупы.
+* Не позначене поличко значіть, же хоснователь у тій ґрупі не є.
+* Звіздочка (*) значіть, же не можете тоту ґрупу одобрати, буде ли придана, або наспак.',
+'userrights-reason' => 'Причіна:',
+'userrights-no-interwiki' => 'Не маєте поволїня мінити права хоснователїв на іншых вікі.',
+'userrights-nodatabase' => 'Датабаза $1 не екзістує або не є місцёва.',
+'userrights-nologin' => 'Мусите ся [[Special:UserLogin|приголосити]] на конто адміністратора, жебы сьте могли мінити права хоснователїв.',
+'userrights-changeable-col' => 'Ґрупы, котры можете змінити',
+'userrights-unchangeable-col' => 'Ґрупы, котры не можете змінити',
+
+# Groups
+'group' => 'Ґрупа:',
+'group-user' => 'Хоснователї',
+'group-autoconfirmed' => 'Автопідтверджены хоснователї',
+'group-bot' => 'Боты',
+'group-sysop' => 'Адміністраторы',
+'group-bureaucrat' => 'Бірократы',
+'group-suppress' => 'Ревізоры',
+'group-all' => '(вшыткы)',
+
+'group-user-member' => 'хоснователь',
+'group-autoconfirmed-member' => 'автопідтвердженый хоснователь',
+'group-bot-member' => 'бот',
+'group-sysop-member' => 'адміністратор',
+'group-bureaucrat-member' => 'бірократ',
+'group-suppress-member' => 'ревізор',
+
+'grouppage-user' => '{{ns:project}}:Хоснователї',
+'grouppage-autoconfirmed' => '{{ns:project}}:Автопідтверджены хоснователї',
+'grouppage-bot' => '{{ns:project}}:Боты',
+'grouppage-sysop' => '{{ns:project}}:Адміністраторы',
+'grouppage-bureaucrat' => '{{ns:project}}:Бірократы',
+'grouppage-suppress' => '{{ns:project}}:Ревізоры',
+
+# Rights
+'right-read' => 'Чітаня сторінок',
+'right-edit' => 'Едітованя сторінок',
+'right-createpage' => 'Вытворїня сторінок (не діскузных)',
+'right-createtalk' => 'Вытворїня сторінок діскузії',
+'right-createaccount' => 'Вытворїня новых конт хоснователїв',
+'right-minoredit' => 'Означованя едітовань як малых',
+'right-move' => 'Переменованя сторінок',
+'right-move-subpages' => 'Переменованя сторінок і їх підсторінок',
+'right-move-rootuserpages' => 'Переменованя корінёвых сторінок хоснователїв',
+'right-movefile' => 'Переменовати файлы',
+'right-upload' => 'Награваня файлів',
+'right-reupload' => 'Переписованя екзістуючіх файлів',
+'right-writeapi' => 'Хосновати API про писаня',
+'right-delete' => 'Змазаня сторінок',
+'right-browsearchive' => 'Гляданя вымазаных сторінок',
+'right-undelete' => 'Обновлїня вымазаных сторінок',
+'right-block' => 'Блокованя іншых хоснователів од едітованя',
+'right-blockemail' => 'Блокованя хоснователя од посыланя е-пошты',
+'right-hideuser' => 'Блокованя мена хоснователя і ёго схованя',
+'right-editinterface' => 'Едітованя інтерфейсу хоснователя',
+'right-import' => 'Імпорт сторінок з іншых вікі',
+'right-patrol' => 'Позначованя едітовань як перевіреных',
+'right-autopatrol' => 'Автоматічне означованя едітовань як перевіреных',
+'right-patrolmarks' => 'Зобразованя патролёваных сторінок в Послїднїх змінах',
+'right-unwatchedpages' => 'Зображіня списку неслїдованых сторінок',
+'right-trackback' => 'Засыланя Trackback',
+'right-mergehistory' => 'Злучованя історії сторінок',
+'right-userrights' => 'Зміна вшыткых прав остатнім хоснователям',
+'right-userrights-interwiki' => 'Зміна прав хоснователям на іншых вікі',
+'right-siteadmin' => 'Замыкана і одомыканя датабазы',
+'right-reset-passwords' => 'Наставованя гесел іншым хоснователям',
+'right-override-export-depth' => 'Експорт сторінок включаючі звязаны сторінкы з глубков до 5',
+'right-versiondetail' => 'Перегляд росшыреной інформації про верзію проґрамного забезпечіня',
+'right-sendemail' => 'Посыланя пошты іншым хоснователям',
+
+# User rights log
+'rightslog' => 'Лоґ хосновательскых прав',
+'rightslogtext' => 'Тото є протокол зміны прав хоснователїв',
+'rightslogentry' => 'змінив членство в ґрупах про хоснователя $1 з $2 на $3',
+'rightsnone' => '(жадне)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'прочітати тоту сторінку',
+'action-edit' => 'едітованя той сторінкы',
+'action-createpage' => 'створіня сторінок',
+'action-createtalk' => 'Вытворїня сторінок діскузії',
+'action-createaccount' => 'Вытворїня того конта хоснователя',
+'action-minoredit' => 'означіти тото едітованя як мале',
+'action-move' => 'Переменовати тоту сторінку',
+'action-move-subpages' => 'переменованя той сторінкы зо вшыткыма єй підсторінками',
+'action-move-rootuserpages' => 'переменовати корінёвы сторінкы хостователїв',
+'action-movefile' => 'переменовати тот файл',
+'action-upload' => 'награти тот файл',
+'action-reupload' => 'переписати тот екзістуючій файл',
+'action-reupload-shared' => 'перекрыти тот файл зо сполочного уложыштя',
+'action-upload_by_url' => 'награти тот файл з URL адресы',
+'action-writeapi' => 'хосновати API про писаня',
+'action-delete' => 'Вымазати тоту сторінку',
+'action-deleterevision' => 'вымазати тоту ревізію сторінкы',
+'action-deletedhistory' => 'зобразити історію змазаных ревізій той сторінкы',
+'action-browsearchive' => 'глядати змазаны сторінкы',
+'action-undelete' => 'обновити тоту сторінку',
+'action-suppressrevision' => 'сконтролёвати і обновити тоту сховану ревізію',
+'action-suppressionlog' => 'перегляд того пріватного лоґу',
+'action-block' => 'блокованя того хоснователя',
+'action-protect' => 'змінити рівень охраны той сторінкы',
+'action-import' => 'імпорт той сторінкы з іншой вікі',
+'action-importupload' => 'імпорт той сторінкы з файлу',
+'action-patrol' => 'позначчти чуджі едітованя як перевірены',
+'action-unwatchedpages' => 'зображіня списку неслїдованых сторінок',
+'action-trackback' => 'послати Trackback',
+'action-mergehistory' => 'Злучіти історію той сторінкы',
+'action-userrights' => 'Зміна прав вшыткым хоснователям',
+'action-userrights-interwiki' => 'зміна прав хоснователів на іншых вікі',
+'action-siteadmin' => 'замыкати або одомыкати датабазу',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|зміна|зміны|змін}}',
+'recentchanges' => 'Послїднї зміны',
+'recentchanges-legend' => 'Можности послїднїх змін',
+'recentchanges-feed-description' => 'На тотїм каналу слїдуєте послїднї зміны на {{grammar:6sg|{{SITENAME}}}}.',
+'recentchanges-label-legend' => 'Леґенда: $1.',
+'recentchanges-legend-newpage' => '$1 — нова сторінка',
+'recentchanges-label-newpage' => 'Тым едітованём была створена нова сторінка',
+'recentchanges-legend-minor' => '$1 малы едітованя',
+'recentchanges-label-minor' => 'Тото є мала зміна',
+'recentchanges-legend-bot' => '$1 — ботове едітованя',
+'recentchanges-label-bot' => 'Тото едітованя зроблене ботом',
+'recentchanges-legend-unpatrolled' => '$1 – неперевірене едітованя',
+'rcnote' => "{{PLURAL:$1|Послїдня '''$1''' зміна|Послїднї '''$1''' зміны|Послїднїх '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|днї|днїв}}, на час $5, $4.",
+'rclistfrom' => 'Вказати едітованя починаючі з $1.',
+'rcshowhideminor' => '$1 маленькы едітованя',
+'rcshowhidebots' => '$1 ботів',
+'rcshowhideliu' => '$1 приголошеных',
+'rcshowhideanons' => '$1 анонімів',
+'rcshowhidemine' => '$1 мої едітованя',
+'rclinks' => 'Вказати послїднї $1 зміны за $2 днїв<br />$3',
+'diff' => 'різн.',
+'hist' => 'історія',
+'hide' => 'сховати',
+'show' => 'вказати',
+'minoreditletter' => 'м',
+'newpageletter' => 'Н',
+'boteditletter' => 'б',
+'rc_categories_any' => 'Будь-якый',
+'newsectionsummary' => '/* $1 */ нова секція',
+'rc-enhanced-expand' => 'Вказати детайлы (потрібный JavaScript)',
+'rc-enhanced-hide' => 'Сховати детайлы',
+
+# Recent changes linked
+'recentchangeslinked' => 'Повязаны зміны',
+'recentchangeslinked-title' => 'Зміны звязаны з «$1»',
+'recentchangeslinked-summary' => "Тото є список недавных змін на сторінках на котры одказує задана сторінка (або котры патрят до той катеґорії).
+Сторінкы з [[Special:Watchlist|вашого списку слїдованых]] суть вызначены '''тучно'''.",
+'recentchangeslinked-page' => 'Назва сторінкы:',
+'recentchangeslinked-to' => 'Вказати зміны на сторінках, одказуючіх на задану сторінку',
+
+# Upload
+'upload' => 'Награти файл',
+'uploadbtn' => 'Начітати файл',
+'reuploaddesc' => 'Зрушыти начітаня а вернути ся до формы начітаня',
+'upload-tryagain' => 'Уложыти зміненый попис файлу',
+'uploadnologin' => 'Не сьте приголошеный(а)',
+'upload-permitted' => 'Доволены тіпы файлів: $1.',
+'upload-preferred' => 'Преферованы тіпы файлів: $1',
+'upload-prohibited' => 'Заказаны тіпы файлів: $1.',
+'uploadlog' => 'книга награваня',
+'uploadlogpage' => 'Лоґ награных файлів',
+'filename' => 'Назва файлу:',
+'filedesc' => 'Попис',
+'fileuploadsummary' => 'Попис:',
+'filereuploadsummary' => 'Зміны у файлі:',
+'filestatus' => 'Авторьскы права:',
+'filesource' => 'Джерело:',
+'uploadedfiles' => 'Начітаны файлы',
+'ignorewarning' => 'Іґноровати варованя тай начітати файл.',
+'ignorewarnings' => 'Іґноровати вшыткы варованя',
+'minlength1' => 'Назва файлу мусить мати холем єдну літеру.',
+'filetype-missing' => 'Файл не має росшыріня (наприклад, «.jpg»).',
+'savefile' => 'Уложыти файл',
+'uploadedimage' => 'награв "[[$1]]"',
+'uploadscripted' => 'Тот файл обсягує HTML-код або скріпт, якый може быти неправилно інтерпретованый вебовым переглядячом.',
+'uploadvirus' => 'Файл обсягує вірус! Детайлы: $1',
+'upload-source' => 'Здройовый файл',
+'sourcefilename' => 'Назва здройового файлу:',
+'sourceurl' => 'Здройова URL-адреса:',
+'destfilename' => 'Назва цілёвого файлу:',
+'upload-maxfilesize' => 'Максімалный розмір файлу: $1',
+'upload-description' => 'Попис файлу',
+'upload-options' => 'Параметры начітаня',
+'watchthisupload' => 'Слїдовати тот файл',
+
+'upload-file-error' => 'Інтерна хыба',
+'upload-misc-error' => 'Незнама хыба',
+'upload-too-many-redirects' => 'URL обсягує барз велё напрямлінь',
+'upload-unknown-size' => 'Незнамый розмір',
+'upload-http-error' => 'Дішло ку хыбі HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Приступ одопертый',
+'img-auth-nofile' => 'Файл «$1» не екзістує.',
+'img-auth-streaming' => 'Переношать ся „$1“.',
+
+'license' => 'Ліценцованя:',
+'license-header' => 'Ліценцованя',
+'nolicense' => 'Без заданя ліценції',
+'license-nopreview' => '(Нагляд недоступный)',
+'upload_source_url' => ' (платна, публічно доступна інтернет-адреса)',
+'upload_source_file' => ' (файл на вашім компютерї)',
+
+# Special:ListFiles
+'imgfile' => 'файл',
+'listfiles' => 'Список файлів',
+'listfiles_date' => 'Датум',
+'listfiles_name' => 'Назва',
+'listfiles_user' => 'Хоснователь',
+'listfiles_size' => 'Розмір (в байтах)',
+'listfiles_description' => 'Опис',
+'listfiles_count' => 'Верзії',
+
+# File description page
+'file-anchor-link' => 'Файл',
+'filehist' => 'Історія файлу',
+'filehist-help' => 'Кликнути на датум/час, жебы відїти, як тогды вызерав файл.',
+'filehist-deleteall' => 'змазати вшытко',
+'filehist-deleteone' => 'змазати',
+'filehist-revert' => 'вернути назад',
+'filehist-current' => 'актуална',
+'filehist-datetime' => 'Датум/час',
+'filehist-thumb' => 'Мініатура',
+'filehist-thumbtext' => 'Мініатура верзії з $1',
+'filehist-nothumb' => 'Без мініатуры',
+'filehist-user' => 'Хоснователь',
+'filehist-dimensions' => 'Розмір обєкта',
+'filehist-filesize' => 'Розмір файлу',
+'filehist-comment' => 'Коментарь',
+'filehist-missing' => 'Файл хыбіть',
+'imagelinks' => 'Одказы на файл',
+'linkstoimage' => '{{PLURAL:$1|Далша сторінка ся одказує|Далшы сторінкы ся одказують}} на тот файл:',
+'nolinkstoimage' => 'На тот файл не одказує жадна сторінка',
+'sharedupload' => 'Тот файл є з $1 і є доступным про іншы проекты.',
+'filepage-nofile' => 'Не екзістує файл з таков назвов',
+'uploadnewversion-linktext' => 'Награти нову верзію того файлу',
+'shared-repo-from' => 'з $1',
+
+# File reversion
+'filerevert' => 'Вернути назад $1',
+'filerevert-legend' => 'Вернути назад файл',
+'filerevert-comment' => 'Причіна:',
+'filerevert-submit' => 'Вернути назад',
+
+# File deletion
+'filedelete' => 'Змазаня файлу $1',
+'filedelete-legend' => 'Змазати файл',
+'filedelete-comment' => 'Причіна:',
+'filedelete-submit' => 'Вымазати',
+'filedelete-success' => "Файл '''$1''' быв змазаный.",
+'filedelete-nofile' => "Файл '''$1''' не екзістує.",
+'filedelete-otherreason' => 'Інша/додаткова причіна:',
+'filedelete-reason-otherlist' => 'Інша причіна',
+
+# MIME search
+'mimesearch' => 'Гляданя по MIME',
+'mimetype' => 'MIME-тіп:',
+'download' => 'скачати',
+
+# List redirects
+'listredirects' => 'Список напрямлинь',
+
+# Unused templates
+'unusedtemplateswlh' => 'іншы одказы',
+
+# Random page
+'randompage' => 'Нагодна статя',
+'randompage-nopages' => 'Не є сторінок в {{PLURAL:$2|просторі назв|просторах назв}} $1.',
+
+# Random redirect
+'randomredirect' => 'Нагодне напрямлїня',
+
+# Statistics
+'statistics' => 'Штатістіка',
+'statistics-header-pages' => 'Штатістіка сторінок',
+'statistics-header-edits' => 'Штатістіка едітовань',
+'statistics-header-views' => 'Штатістіка зображіня',
+'statistics-header-users' => 'Штатістіка хоснователів',
+'statistics-header-hooks' => 'Інша штатістіка',
+'statistics-articles' => 'Обсяговы сторінкы',
+'statistics-pages' => 'Сторінкы',
+'statistics-files' => 'Начітаны файлы',
+'statistics-views-total' => 'Вшыткых переглядів',
+'statistics-users' => 'Реґістрованы [[Special:ListUsers|хоснователї]]',
+'statistics-users-active' => 'Аківны хоснователї',
+'statistics-mostpopular' => 'Найчітанїшы сторінкы',
+
+'brokenredirects-edit' => 'едітовати',
+'brokenredirects-delete' => 'змазати',
+
+'withoutinterwiki' => 'Сторінкы без міджіязыковых одказів',
+'withoutinterwiki-summary' => 'Тоты сторінкы не мають міджіязыковый одказ:',
+'withoutinterwiki-legend' => 'Префікс',
+'withoutinterwiki-submit' => 'Вказати',
+
+'fewestrevisions' => 'Сторінкы з найменєй ревізіями',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|байт|байты|байтів}}',
+'ncategories' => '$1 {{PLURAL:$1|катеґорія|катеґорії|катеґорій}}',
+'nlinks' => '$1 {{PLURAL:$1|одказ|одказы|одказів}}',
+'nmembers' => '$1 {{PLURAL:$1|обєкт|обєкты|обєктів}}',
+'nrevisions' => '$1 {{PLURAL:$1|ревізія|ревізії|ревізій}}',
+'nviews' => '$1 {{PLURAL:$1|навщіва|навщівы|навщів}}',
+'lonelypages' => 'Статї-сыроты',
+'uncategorizedpages' => 'Некатеґоризованы сторінкы',
+'uncategorizedcategories' => 'Некатеґоризованы катеґорії',
+'uncategorizedimages' => 'Некатеґоризованы файлы',
+'uncategorizedtemplates' => 'Некатеґоризованы шаблоны',
+'unusedcategories' => 'Нехоснованы катеґорії',
+'unusedimages' => 'Нехоснованы файлы',
+'popularpages' => 'Популарны статї',
+'wantedcategories' => 'Жаданы катеґорії',
+'wantedpages' => 'Пожадованы статї',
+'wantedfiles' => 'Жаданы файлы',
+'mostlinkedtemplates' => 'Найужыванїшы шаблоны',
+'mostimages' => 'Найужыванїшы файлы',
+'mostrevisions' => 'Сторінкы з найвеце ревізіями',
+'prefixindex' => 'Вшыткы сторінкы з початком назв',
+'shortpages' => 'Курты статї',
+'longpages' => 'Найдовшы статті',
+'deadendpages' => 'Слїпы сторінкы',
+'protectedpages' => 'Замкнуты сторінкы',
+'protectedtitles' => 'Замкнуты назвы сторінок',
+'listusers' => 'Список хоснователїв',
+'usercreated' => 'Створеный $1 о $2',
+'newpages' => 'Новы сторінкы',
+'newpages-username' => 'Мено хоснователя:',
+'ancientpages' => 'Сторінкы, якы ся найдовше не едітовали',
+'move' => 'Переменовати',
+'movethispage' => 'Переменовати тоту сторінку',
+'notargettitle' => 'Без цілёвой сторінкы',
+'nopagetitle' => 'Не екзістує така цілёва сторінка',
+'nopagetext' => 'Задана цілёва сторінка не екзістує',
+'pager-newer-n' => '{{PLURAL:$1|новша|новшы|новшых}} $1',
+'pager-older-n' => '{{PLURAL:$1|старша|старшы|старшых}} $1',
+'suppress' => 'Ревізор',
+
+# Book sources
+'booksources' => 'Джерела книг',
+'booksources-search-legend' => 'Гляданя інформації про книгы',
+'booksources-go' => 'Выконати',
+
+# Special:Log
+'specialloguserlabel' => 'Хоснователь:',
+'speciallogtitlelabel' => 'Назва:',
+'log' => 'Лоґы',
+
+# Special:AllPages
+'allpages' => 'Вшыткы сторінкы',
+'alphaindexline' => 'од $1 до $2',
+'nextpage' => 'Далша сторінка ($1)',
+'prevpage' => 'Попередня сторінка ($1)',
+'allpagesfrom' => 'Вказати сторінкы, што ся зачінають на:',
+'allpagesto' => 'Зобразити сторінкы кінчачі на:',
+'allarticles' => 'Вшыткы сторінкы',
+'allinnamespace' => 'Вшыткы сторінкы (простор назв $1)',
+'allnotinnamespace' => 'Вшыткы сторінкы (окрем простору назв $1)',
+'allpagesprev' => 'Попереднї',
+'allpagesnext' => 'Далшы',
+'allpagessubmit' => 'Выконати',
+'allpages-bad-ns' => '{{SITENAME}} не має простору назв «$1».',
+
+# Special:Categories
+'categories' => 'Катеґорії',
+'categoriesfrom' => 'Вказати сторінкы, што ся зачінають на:',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Вымазаны приспевкы хоснователя',
+'sp-deletedcontributions-contribs' => 'приспевкы',
+
+# Special:LinkSearch
+'linksearch' => 'Екстерны одказы',
+'linksearch-ns' => 'Простор назв:',
+'linksearch-ok' => 'Глядати',
+
+# Special:ListUsers
+'listusersfrom' => 'Вказати хоснователів, што ся зачінають на:',
+'listusers-submit' => 'Вказати',
+'listusers-noresult' => 'Ненайдженый жаден хоснователь.',
+'listusers-blocked' => '({{GENDER:$1|заблокованый|заблокована|заблокованый}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Список актівных хоснователїв',
+'activeusers-from' => 'Вказати хоснователів, што ся зачінають на:',
+'activeusers-hidebots' => 'Сховати ботів',
+'activeusers-hidesysops' => 'Сховати адміністраторів',
+'activeusers-noresult' => 'Ненайдженый жаден хоснователь.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Лоґ вытварянь хоснователів',
+'newuserlog-byemail' => 'гело послане електронічнов поштов',
+'newuserlog-create-entry' => 'Новый хоснователь',
+'newuserlog-create2-entry' => 'вытворив нове конто $1',
+'newuserlog-autocreate-entry' => 'Конто вытворене автоматічнї',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Права ґруп хоснователїв',
+'listgrouprights-group' => 'Ґрупа',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права хоснователїв',
+'listgrouprights-members' => '(списok членїв)',
+'listgrouprights-addgroup' => 'Придаваня хоснователїв до {{PLURAL:$2|ґрупы|ґруп}} $1',
+'listgrouprights-removegroup' => 'Одобераня хоснователїв до {{PLURAL:$2|ґрупы|ґруп}} $1',
+'listgrouprights-addgroup-all' => 'може додавати до вшыткых ґруп',
+'listgrouprights-removegroup-all' => 'Одобераня хоснователїв з хоцькотрой ґрупы',
+'listgrouprights-addgroup-self' => 'Приданя свого конта до {{PLURAL:$2|ґрупы|ґруп}} $1',
+
+# E-mail user
+'emailuser' => 'Послати е-маіл тому хоснователёві',
+'defemailsubject' => '{{SITENAME}}: лист',
+'emailfrom' => 'Од:',
+'emailto' => 'Кому:',
+'emailsubject' => 'Тема:',
+'emailmessage' => 'Ознам:',
+'emailsend' => 'Одослати',
+'emailsent' => 'Пошта одослана',
+
+# Watchlist
+'watchlist' => 'Слїдованы сторінкы',
+'mywatchlist' => 'Слїдованы сторінкы',
+'watchlistfor' => "(хоснователя '''$1''')",
+'watchnologin' => 'Не сьте приголошеный(а)',
+'addedwatch' => 'Придана до списку слїдованых сторінок',
+'addedwatchtext' => "Сторінка «[[:$1]]» была придана до вашого [[Special:Watchlist|списку слїдованых]].
+Будучі зміны той статї і з нёв повязаной сторінков діскузії будуть зображены у тім списку, а тыж будуть выдїлены '''тучнї''' на сторінцї із [[Special:RecentChanges|списком послїднїх змін]], жебы їх было легше вшимнути.",
+'removedwatch' => 'Вымазана зо список слїдованых сторінок',
+'removedwatchtext' => 'Сторінка «[[:$1]]» вымазана з вашого [[Special:Watchlist|списку слїдованых сторінок]].',
+'watch' => 'Слїдовати',
+'watchthispage' => 'Слїдовати тоту сторінку',
+'unwatch' => 'Зрушыти слїдованя',
+'watchlist-details' => '{{PLURAL:$1|Єдна слїдована сторінка|слїдованы сторінкы|слїдованых сторінок}} (не рахувчі діскузны сторінкы).',
+'wlshowlast' => 'Вказати зміны за послїднї $1 годин $2 днїв $3',
+'watchlist-options' => 'Наставлїна списку слїдованых',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Придаваня до списку слїдованя...',
+'unwatching' => 'Одобратя зо списку слїдованя...',
+
+'enotif_newpagetext' => 'Тото є нова сторінка.',
+'enotif_impersonal_salutation' => 'Хоснователь {{grammar:genitive|{{SITENAME}}}}',
+'changed' => 'змінена',
+'created' => 'створена',
+
+# Delete
+'deletepage' => 'Змазати сторінку',
+'confirm' => 'Підтверджіня',
+'exblank' => 'сторінка была порожня',
+'delete-confirm' => 'Змазаня $1',
+'delete-legend' => 'Вымазати',
+'confirmdeletetext' => 'Рыхтуєте ся вымазати сторінку і вшыткы єй лоґы едітовань.
+Просиме Вас, потвердьте, же справды тото хочете зробити, повнї розумієте наслыдкы і же робите тото в одповідности з [[{{MediaWiki:Policy-url}}|правилами]].',
+'actioncomplete' => 'Дїя выконана',
+'actionfailed' => 'Операція ся не подарила',
+'deletedtext' => '"<nowiki>$1</nowiki>" было змазане.
+Смоть $2 про список послїднїх змазань.',
+'deletedarticle' => 'змазаный "[[$1]]"',
+'dellogpage' => 'Лоґ вымазаня',
+'deletecomment' => 'Причіна:',
+'deleteotherreason' => 'Інша/додаткова причіна:',
+'deletereasonotherlist' => 'Інша причіна',
+
+# Rollback
+'rollback_short' => 'Вернути назад',
+'rollbacklink' => 'вернути назад',
+'rollbackfailed' => 'Не годно было ся вернути назад',
+
+# Protect
+'protectlogpage' => 'Лоґ охраны',
+'protectedarticle' => 'замыкать "[[$1]]"',
+'modifiedarticleprotection' => 'зміненa рівень охраны сторінкы «[[$1]]»',
+'protectcomment' => 'Причіна:',
+'protectexpiry' => 'Кінчіть:',
+'protect_expiry_invalid' => 'Неправилный час укончіня',
+'protect_expiry_old' => 'Час страты платности є в минулости.',
+'protect-text' => "Ту можете відїти і змінити рівень охраны сторінкы '''<nowiki>$1</nowiki>'''.",
+'protect-locked-access' => "Ваше конто немає права мінити рівень охраны сторінкы.
+Моменталны наставлїня про сторінку : '''$1''':",
+'protect-cascadeon' => 'Тота сторінка є теперь хранена, бо є загорнута {{PLURAL:$1|до зазначеной сторінкы ніже, на яку|до ниже зазначеных сторінок, на якы}} становлена каскадова охрана. Вы можете змінити рівень охраны той сторінкы, але тото не буде впливати на каскадову охрану.',
+'protect-default' => 'Доволити вшыткым хоснователям',
+'protect-fallback' => 'Портрібны "$1" права',
+'protect-level-autoconfirmed' => 'Блоковати новых і незареґістрованых хоснователїв',
+'protect-level-sysop' => 'Лем адміністраторы',
+'protect-summary-cascade' => 'каскадовый',
+'protect-expiring' => 'кінчіть $1 (UTC)',
+'protect-cascade' => 'Хранити сторінкы вложены до той сторінкы (каскадова охрана)',
+'protect-cantedit' => 'Вы не можете змінювати рівень охороны той сторінкы, тому што вы не маєте прав про єй едитованя.',
+'protect-othertime' => 'Іншый час:',
+'protect-othertime-op' => 'Іншый час',
+'protect-otherreason' => 'Інша/додаткова причіна:',
+'protect-otherreason-op' => 'Інша причіна',
+'protect-expiry-options' => '1 година:1 hour,1 день:1 day,1 тыждень:1 week,2 тыжднї:2 weeks,1 місяць:1 month,3 місяцї:3 months,6 місяцїв:6 months,1 рік:1 year,навсе:infinite',
+'restriction-type' => 'Права',
+'restriction-level' => 'Рівень доступу:',
+'minimum-size' => 'Мінімалный розмір',
+'maximum-size' => 'Максімалный розмір:',
+'pagesize' => '(байтів)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Едітованя',
+'restriction-move' => 'Переменовати',
+'restriction-create' => 'Вытвориня',
+'restriction-upload' => 'Награваня файлів',
+
+# Restriction levels
+'restriction-level-autoconfirmed' => 'частково хранено',
+
+# Undelete
+'undeletebtn' => 'Обновити',
+'undeletelink' => 'відїти/обновити',
+'undeleteviewlink' => 'відїти',
+'undeletereset' => 'Ресетовати',
+'undeleteinvert' => 'Інвертовати селекцію',
+'undeletecomment' => 'Причіна:',
+'undeletedarticle' => 'обновів "[[$1]]"',
+'undelete-search-box' => 'Гляданя вымазаных сторінок',
+'undelete-search-prefix' => 'Вказати сторінкы што ся почінають з',
+'undelete-search-submit' => 'Найти',
+'undelete-show-file-submit' => 'Гей',
+
+# Namespace form on various pages
+'namespace' => 'Простор назв:',
+'invert' => 'Окрем выбраного',
+'blanknamespace' => '(Основный)',
+
+# Contributions
+'contributions' => 'Приспевок хоснователя',
+'contributions-title' => 'Приспевок хоснователя $1',
+'mycontris' => 'Мої приспевкы',
+'contribsub2' => 'Приспевок $1 ($2)',
+'uctop' => ' (послїдня)',
+'month' => 'Од місяця (і скоре):',
+'year' => 'Од року (і скоре):',
+
+'sp-contributions-newbies' => 'Вказати приспевкы лем новых конт',
+'sp-contributions-newbies-sub' => 'Новы хоснователї',
+'sp-contributions-blocklog' => 'Лоґ блокованя',
+'sp-contributions-talk' => 'діскузія',
+'sp-contributions-search' => 'Глядати приспевкы',
+'sp-contributions-username' => 'IP-адреса або мено хоснователя:',
+'sp-contributions-submit' => 'Найти',
+
+# What links here
+'whatlinkshere' => 'Одказы на тоту сторінку',
+'whatlinkshere-title' => 'Сторінкы, што ся одказують на "$1"',
+'whatlinkshere-page' => 'Сторінка:',
+'linkshere' => "Наслїдуючі сторінкы ся одказують на '''[[:$1]]''':",
+'isredirect' => 'сторінка напрямлена',
+'istemplate' => 'вложиня',
+'isimage' => 'одказ на зображіня',
+'whatlinkshere-prev' => '{{PLURAL:$1|попередня|попереднї|попереднї}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|далша|далшій|далшых}} $1',
+'whatlinkshere-links' => '← одказы',
+'whatlinkshere-hideredirs' => '$1 напрямлиня',
+'whatlinkshere-hidetrans' => '$1 вложіня',
+'whatlinkshere-hidelinks' => '$1 одказы',
+'whatlinkshere-filters' => 'Фільтры',
+
+# Block/unblock
+'blockip' => 'Заблоковати хоснователя',
+'blockip-title' => 'Блокованя хоснователя',
+'blockip-legend' => 'Блокованя хоснователя',
+'ipaddress' => 'IP-адреса:',
+'ipadressorusername' => 'IP-адреса або мено хоснователя:',
+'ipbexpiry' => 'Кінчіть:',
+'ipbreason' => 'Причіна:',
+'ipbreasonotherlist' => 'Інша причіна',
+'ipbsubmit' => 'Заблоковати',
+'ipbother' => 'Іншый час:',
+'ipboptions' => '2 годины:2 hours,1 день:1 day,3 днї:3 days,1 тыждень:1 week,2 тыжднї:2 weeks,1 місяць:1 month,3 місяцї:3 months,6 місяцїв:6 months,1 рік:1 year,неограніченї:infinite',
+'ipbotheroption' => 'іншый',
+'ipbotherreason' => 'Інша/додаткова причіна:',
+'badipaddress' => 'Неправилна IP адреса',
+'blockipsuccesssub' => 'Блокованя проведено',
+'ipb-edit-dropdown' => 'Едітовати причіны блоковань',
+'ipb-unblock-addr' => 'Одблоковати $1',
+'ipb-unblock' => 'Одблоковати хоснователя або IP адресу',
+'ipb-blocklist-addr' => 'Екзістуючі блокованя про $1',
+'ipb-blocklist' => 'Вказати екзістуючі блокованя',
+'ipb-blocklist-contribs' => 'Приспевкы хоснователя $1',
+'unblockip' => 'Одблоковати хоснователя',
+'ipusubmit' => 'Зняти тото блокованя',
+'unblocked' => '[[User:$1|$1]] одблокованый',
+'unblocked-id' => 'Блокованя $1 было зняте',
+'ipblocklist' => 'Заблокованы IP адресы і мена хоснователів',
+'ipblocklist-legend' => 'Глядати заблокованого хоснователя',
+'ipblocklist-username' => 'Хоснователь або IP-адреса:',
+'ipblocklist-sh-userblocks' => '$1 заблокованы конта',
+'ipblocklist-sh-tempblocks' => '$1 дочасны заблокованя',
+'ipblocklist-sh-addressblocks' => '$1 блокованя єдной IP адресы',
+'ipblocklist-submit' => 'Глядати',
+'ipblocklist-localblock' => 'Локалне блокованя',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокованя|Іншы блокованя}}',
+'blocklistline' => '$1, $2 заблоковав $3 ($4)',
+'infiniteblock' => 'до одволаня',
+'expiringblock' => 'до $1, $2',
+'anononlyblock' => 'лем анонімы',
+'createaccountblock' => 'вытваряня конт не є поволене',
+'blocklink' => 'заблоковати',
+'unblocklink' => 'одблоковати',
+'change-blocklink' => 'змінити блок',
+'contribslink' => 'приспевкы',
+'blocklogpage' => 'Зазнам блоковань',
+'blocklogentry' => 'заблокoвав [[$1]] на термін $2 $3',
+'unblocklogentry' => 'одблоковав $1',
+'block-log-flags-nocreate' => 'вытваряня конт не поволене',
+'blockme' => 'Заблокуй ня',
+'proxyblocker' => 'Блокованя проксі',
+'proxyblocker-disabled' => 'Тота фунція є выпнута.',
+'proxyblocksuccess' => 'Готово.',
+
+# Developer tools
+'lockdb' => 'Замкнути датабазу',
+'unlockdb' => 'Одомкнути датабазу',
+'lockconfirm' => 'Гей, справды хочу замкнути датабазу.',
+'unlockconfirm' => 'Гей, справды хочу одомкнути датабазу.',
+'lockbtn' => 'Замкнути датабазу',
+'unlockbtn' => 'Одомкнути датабазу',
+'lockdbsuccesssub' => 'Датабаза замкнута',
+'unlockdbsuccesssub' => 'Датабаза одомкнута',
+'databasenotlocked' => 'Датабаза не є замкнута.',
+
+# Move page
+'move-page' => 'Переменовати „$1“',
+'move-page-legend' => 'Переменовати сторінку',
+'movepagetext' => "Хоснувчі форму ниже, можете переменовати сторінку, єдным разом перемістивши на нове місце і лоґ єй едітовань.
+Стара назва стане перенапрямлинём на нову назву.
+Можете автоматично обновити перенапрямлиня на страу назву.
+Кідь вы тото не зробите, просиме Вас, перевірте наявність [[Special:DoubleRedirects|подвойных]] ці [[Special:BrokenRedirects|розорваных]] перенапрямлинь.
+Вы зодповідаєте за то, жебы одказы і надалей вказували там, де мають.
+
+Уважте, же сторінка '''не''' буде переменована, кідь сторінка з новов назвов уж екзістує, окрем того, коли она порожня або є перенапрямлинём, а лоґ єй едітовань порожнїй.
+То значіть, же вы можете вернути сторінцї стару назву, кідь вы переменовали єй помылково, але вы не можете переписати екзістуючу сторінку.
+
+'''ВАРОВАНЯ!'''
+Тота дїя може ся стати причінов серіозных а неочекаваных змін популарных сторінок.
+Просиме Вас, перед далшым кроком ся утвердьте, же розуміте вшыткы можны наслїдкы.",
+'movepagetalktext' => "Асоціована діскузна сторінка буде автоматічно переменована, '''окрем:'''
+* Непорожня сторінка діскузії з таков назвов уж екзістує або
+* Не означіли сьте в полічку ниже.
+
+В тых припадох будете мусити переменовати ці злучіти сторінкы ручнї кідь желаєте єй переменованя.",
+'movearticle' => 'Переменовати сторінку',
+'newtitle' => 'Нова назва:',
+'move-watch' => 'Слїдовати тоту сторінку',
+'movepagebtn' => 'Переменовати сторінку',
+'pagemovedsub' => 'Сторінка переменована',
+'movepage-moved' => "'''Сторінка «$1» переменована на «$2»'''",
+'articleexists' => 'Сторінка з таков назвов уж екзістує або назва вамі выбрата не є платна.
+Просиме, выберте іншу назву.',
+'talkexists' => "'''Сторінка була переменована, але діскузна сторінка не могла быти переменована, бо сторінка з таков назвов уж екзістує. Просиме Вас, злучте їх ручнї.'''",
+'movedto' => 'теперь ся называє',
+'movetalk' => 'Переменовати одповідну діскузну сторінку',
+'move-subpages' => 'Переменовати підсторінкы (до $1)',
+'move-talk-subpages' => 'Переменовати підсторінкы діскузной сторінкы (до $1)',
+'1movedto2' => 'переменовав «[[$1]]» на «[[$2]]»',
+'1movedto2_redir' => 'переменовав «[[$1]]» на «[[$2]]» поверх напрямлиня',
+'movelogpage' => 'Лоґ переменовань',
+'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінкы}}',
+'movenosubpage' => 'Тота сторінка не має підсторінок.',
+'movereason' => 'Причіна:',
+'revertmove' => 'вернути',
+'delete_and_move' => 'Змазати і переменовати',
+'delete_and_move_confirm' => 'Гей, змазати сторінку',
+
+# Export
+'export' => 'Експорт сторінок',
+'export-submit' => 'Експорт',
+'export-addcattext' => 'Додати сторінкы з катеґорії:',
+'export-addcat' => 'Придати',
+'export-addnstext' => 'Додати сторінкы з простору назв:',
+'export-addns' => 'Придати',
+'export-download' => 'Уложыти як файл',
+
+# Namespace 8 related
+'allmessagesname' => 'Назва',
+'allmessagesdefault' => 'Штандартный текст',
+'allmessagescurrent' => 'Актуалный текст',
+'allmessages-filter-legend' => 'Філтер',
+'allmessages-filter' => 'Філтер подля ставу:',
+'allmessages-filter-unmodified' => 'Незмінено',
+'allmessages-filter-all' => 'Вшыткы',
+'allmessages-filter-modified' => 'Змінено',
+'allmessages-prefix' => 'Філтер подля префіксу:',
+'allmessages-language' => 'Язык:',
+'allmessages-filter-submit' => 'Выконати',
+
+# Thumbnails
+'thumbnail-more' => 'Звекшыти',
+'filemissing' => 'Файл хыбить',
+
+# Special:Import
+'import' => 'Імпорт сторінок',
+'importinterwiki' => 'Імпорт міджі вікі',
+'import-interwiki-source' => 'Вікі/сторінка-джерело',
+'import-interwiki-history' => 'Копіровати вшыткы історічны верзії той сторінкы',
+'import-interwiki-submit' => 'Імпортовати',
+'import-interwiki-namespace' => 'Цілёвый простор назв:',
+'import-upload-filename' => 'Назва файлу:',
+'import-comment' => 'Коментарь:',
+'importtext' => 'Просиме Вас, експортуйте сторінку з іншой вікі помочов [[Special:Export| експорт]], уложте файл на ваш діск а потім го награйте ту.',
+'importstart' => 'Імпорт сторінок…',
+'import-revision-count' => '$1 {{PLURAL:$1|ревізія|ревізії|ревізій}}',
+'importnopages' => 'Не є што імпортовати.',
+'importfailed' => 'Імпорт ся не подарив: $1',
+'importunknownsource' => 'Незнамый тіп імпортованой сторінкы',
+'importcantopen' => 'Не дало ся отворити файл імпорту',
+'importbadinterwiki' => 'Неплатный одказ інтервікі',
+'importnotext' => 'Порожнїй або жаден текст',
+'importsuccess' => 'Імпорт сконченый!',
+'importhistoryconflict' => 'Екзістує конфлікт міджі історіямі верзії (може тота сторінка уж была імпортована скоре)',
+'importnosources' => 'Не было выбране джерело імпорту міджі вікі, пряме начітаня історії змін є выпнуте.',
+'importnofile' => 'Не быв начітаный файл імпорту.',
+'importuploaderrorsize' => 'Не подарило ся начітати файл імпорту. Розмір файлу перевышує становлену меджу.',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Ваша сторінка хоснователя',
+'tooltip-pt-mytalk' => 'Ваша діскузна сторінка',
+'tooltip-pt-preferences' => 'Вашы наставлїня',
+'tooltip-pt-watchlist' => 'Список сторінок, на котрых слїдуєте зміны',
+'tooltip-pt-mycontris' => 'Список вашых приспевків',
+'tooltip-pt-login' => 'Рекомендуєме ся приголосити, але не є то повинне.',
+'tooltip-pt-logout' => 'Одголошіня',
+'tooltip-ca-talk' => 'Діскузія о обсягу сторінкы',
+'tooltip-ca-edit' => 'Тоту сторінку можно едітовати. Просиме, хоснуйте перегляд перед уложінём.',
+'tooltip-ca-addsection' => 'Створити нову секцію',
+'tooltip-ca-viewsource' => '',
+'tooltip-ca-history' => 'Минулы верзії той сторінкы',
+'tooltip-ca-protect' => 'Хрань тоту сторінку',
+'tooltip-ca-delete' => 'Вымазати тоту сторінку',
+'tooltip-ca-move' => 'Переменовати тоту сторінку',
+'tooltip-ca-watch' => 'Придати тоту сторінку до вашого списку слїдованых сторінок',
+'tooltip-ca-unwatch' => 'Одобрати тоту сторінку з вашого списку слїдованых сторінок',
+'tooltip-search' => 'Глядати {{SITENAME}}',
+'tooltip-search-go' => 'Перейти до сторінкы, што має точно таку назву (кідь екзістує)',
+'tooltip-search-fulltext' => 'Найти сторінкы про тот текст',
+'tooltip-p-logo' => 'Головна сторінка',
+'tooltip-n-mainpage' => 'Перейти на Головну сторінку',
+'tooltip-n-mainpage-description' => 'Перейти на головну сторінку',
+'tooltip-n-portal' => 'О проєкті, што можете зробити, де ся што находить',
+'tooltip-n-currentevents' => 'Актуалны подїї',
+'tooltip-n-recentchanges' => 'Список послїднїх змін',
+'tooltip-n-randompage' => 'Зображіня нагодной сторінкы',
+'tooltip-n-help' => 'Посмотрити поміч',
+'tooltip-t-whatlinkshere' => 'Список вшыткых сторінок, што одказують на тоту сторінку',
+'tooltip-t-recentchangeslinked' => 'Послїднї зміны на сторінках, котры мають одказ на тій сторінцї',
+'tooltip-feed-rss' => 'RSS канал про тоту сторінку',
+'tooltip-feed-atom' => 'Atom канал про тоту сторінку',
+'tooltip-t-contributions' => 'Перегляд приспевків того хоснователя',
+'tooltip-t-emailuser' => 'Послати е-маіл тому хоснователёві',
+'tooltip-t-upload' => 'Награти файлы',
+'tooltip-t-specialpages' => 'Список вшыткых шпеціалных сторінок',
+'tooltip-t-print' => 'Верзія той сторінкы про друк',
+'tooltip-t-permalink' => 'Перманентный одказ на тоту верзію сторінкы',
+'tooltip-ca-nstab-main' => 'Обсяг сторінкы',
+'tooltip-ca-nstab-user' => 'Відїти сторінку хоснователя',
+'tooltip-ca-nstab-media' => 'Вказати сторінку файлу',
+'tooltip-ca-nstab-special' => 'Шпеціална сторінка, она недоступна про едітованя',
+'tooltip-ca-nstab-project' => 'Сторінка проєкту',
+'tooltip-ca-nstab-image' => 'Відїти код сторінкы',
+'tooltip-ca-nstab-template' => 'Відїти шаблону',
+'tooltip-ca-nstab-help' => 'Відїти сторінку помочі',
+'tooltip-ca-nstab-category' => 'Сторінка катеґорії',
+'tooltip-minoredit' => 'Позначіти тото як незначне едітованя',
+'tooltip-save' => 'Уложыти вашы зміны',
+'tooltip-preview' => 'Попереднїй перегляд сторінкы, просиме Вас, хоснуйте перед зображінём!',
+'tooltip-diff' => 'Вказати зміны, што были зроблены в тексті.',
+'tooltip-compareselectedversions' => 'Відїти роздїл міджі двома вказаними верзіями той сторінкы.',
+'tooltip-watch' => 'Придати тоту сторінку до списку слїдованых',
+'tooltip-upload' => 'Почати одосыланя',
+'tooltip-rollback' => 'Єдным кликом вернути зміны, зроблены послїдным приспівателём',
+'tooltip-undo' => 'Зрушыти зміны і вказати попереднїй перегляд. Доволяє придати причіну до ресуме.',
+
+# Attribution
+'anonymous' => 'анонімный {{PLURAL:$1|хоснователь|хоснователя|хоснователї}} {{GRAMMAR:2sg|{{SITENAME}}}}',
+'siteuser' => 'хоснователь {{grammar:2sg|{{SITENAME}}}} $1',
+'anonuser' => 'анонімный хоснователь {{grammar:2sg|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Остатня зміна $2, $1 хоснователём $3.',
+'othercontribs' => 'На базї роботы $1.',
+'others' => 'іншы',
+'siteusers' => '{{PLURAL:$2|Хоснователь|Хоснователї}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|анонімный хоснователь|анонімны хоснователї}} {{grammar:genitive|{{SITENAME}}}} $1',
+'creditspage' => 'Заслугы за сторінку',
+
+# Spam protection
+'spamprotectiontitle' => 'Спам філтер',
+
+# Info page
+'infosubtitle' => 'Інформація про сторінку',
+
+# Math errors
+'math_unknown_error' => 'незнама хыба',
+
+# Patrol log
+'patrol-log-auto' => '(автоматічно)',
+'patrol-log-diff' => 'ревізію $1',
+
+# Browsing diffs
+'previousdiff' => '← Старше едітованя',
+'nextdiff' => 'Новше едітованя →',
+
+# Media information
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|сторінка|сторінкы|сторінок}}',
+'file-info-size' => '($1 × $2 пікселів, розмір файлу: $3, MIME-тип: $4)',
+'file-nohires' => '<small>Немає верзію з векшым розлишінём.</small>',
+'svg-long-desc' => '(SVG-файл, номінално $1 × $2 пікселів, розмір файлу: $3)',
+'show-big-image' => 'Повне розлишіня',
+'show-big-image-thumb' => '<small>Розмір перегляду: $1 × $2 пікселів</small>',
+
+# Special:NewFiles
+'newimages' => 'Ґалерія новых файлів',
+'newimages-legend' => 'Філтер',
+'newimages-label' => 'Назва файлу (або єй частина):',
+'showhidebots' => '($1 ботів)',
+'noimages' => 'Не є што відїти.',
+'ilsubmit' => 'Глядати',
+'bydate' => 'подля датуму',
+
+# Bad image list
+'bad_image_list' => 'Формат має быти наступным:
+
+
+Раховати ся будуть лем елементы (рядкы, што ся почінають з *).
+Першый одказ рядка має быти одказом на планый файл.
+Далшы одказы у тім самім рядку будуть уважены як выняткы, наприклад сторінкы, де зображіня може быти вложене.',
+
+# Metadata
+'metadata' => 'Метадата',
+'metadata-help' => 'Файл обсягує додатковы інформації, акы ся звычайно додають діґіталными камерами ці скенерами.
+Кідь ся файл зедітовал по вытвориню, даякы параметры можуть не одповідати тому зображіню.',
+'metadata-expand' => 'Вказати додатковы детайлы',
+'metadata-collapse' => 'Сховати додатковы детайлы',
+'metadata-fields' => 'Поля метадат, перерахованы у тім списку, будуть автоматично зображены на сторінцї зображіня, вшыткы іншы будуть схованы.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'Шырька',
+'exif-imagelength' => 'Вышка',
+'exif-orientation' => 'Орієнтація',
+'exif-datetime' => 'Датум і час вытворїня файлу',
+'exif-imagedescription' => 'Назва образку',
+'exif-make' => 'Выробник фотоапарату',
+'exif-model' => 'Модел фотоапарату',
+'exif-software' => 'Проґрамове забезпечіня',
+'exif-artist' => 'Автор',
+'exif-copyright' => 'Властник авторьскых прав',
+'exif-exifversion' => 'Верзія Exif',
+'exif-flashpixversion' => 'Підпорована верзія Flashpix',
+'exif-colorspace' => 'Фаребный простор',
+'exif-componentsconfiguration' => 'Конфіґурація компонентів фарбы',
+'exif-usercomment' => 'Додатковый коментарь',
+'exif-fnumber' => 'Цлона',
+'exif-exposureprogram' => 'Експозічный проґрам',
+'exif-spectralsensitivity' => 'Спектрална чутливость',
+'exif-isospeedratings' => 'Світлочутливость ISO',
+'exif-oecf' => 'OECF (коефіцієнт оптікоелектрічного перетворїня)',
+'exif-aperturevalue' => 'Цлона',
+'exif-brightnessvalue' => 'Світлость',
+'exif-exposurebiasvalue' => 'Компензація експозіції',
+'exif-maxaperturevalue' => 'Найменша цлона',
+'exif-lightsource' => 'Джерело світла',
+'exif-flash' => 'Блеск',
+'exif-subjectarea' => 'Положіня обєкту',
+'exif-flashenergy' => 'Енерґія блеску',
+'exif-subjectlocation' => 'Положіня обєкту',
+'exif-exposureindex' => 'Індекс експозіції',
+'exif-sensingmethod' => 'Тіп сензора',
+'exif-filesource' => 'Джерело файлу',
+'exif-scenetype' => 'Тіп сцены',
+'exif-exposuremode' => 'Режім експозіції',
+'exif-whitebalance' => 'Баланс білого',
+'exif-digitalzoomratio' => 'Діґіталный зум',
+'exif-scenecapturetype' => 'Тіп сцены',
+'exif-contrast' => 'Контраст',
+'exif-saturation' => 'Насыченость',
+'exif-sharpness' => 'Острость',
+'exif-devicesettingdescription' => 'Попис наштелёваня заряджіня',
+'exif-gpsversionid' => 'Верзія блоку GPS-інформації',
+'exif-gpstimestamp' => 'GPS час (подля атомовых годин)',
+'exif-gpsstatus' => 'Статус приїмача',
+'exif-gpsareainformation' => 'Назва области GPS',
+'exif-gpsdatestamp' => 'GPS датум',
+
+# EXIF attributes
+'exif-compression-1' => 'Нестиснутый',
+
+'exif-unknowndate' => 'Незнамый датум',
+
+'exif-orientation-1' => 'Нормална',
+
+'exif-planarconfiguration-1' => 'формат «chunky»',
+'exif-planarconfiguration-2' => 'формат «planar»',
+
+'exif-componentsconfiguration-0' => 'не екзістує',
+
+'exif-exposureprogram-1' => 'Ручный режім',
+'exif-exposureprogram-2' => 'Нормалный режім',
+'exif-exposureprogram-3' => 'Пріоріта цлоны',
+
+'exif-subjectdistance-value' => '$1 метрів',
+
+'exif-meteringmode-0' => 'Не є знаме',
+'exif-meteringmode-1' => 'Середнїй',
+'exif-meteringmode-3' => 'Бодове',
+'exif-meteringmode-4' => 'Зонове',
+'exif-meteringmode-5' => 'Матрічный',
+'exif-meteringmode-6' => 'Частковый',
+'exif-meteringmode-255' => 'Інше',
+
+'exif-lightsource-0' => 'Не є знаме',
+'exif-lightsource-1' => 'Денне світло',
+'exif-lightsource-2' => 'Лампа денного світла',
+'exif-lightsource-3' => 'Лампа розжарёваня',
+'exif-lightsource-4' => 'Блеск',
+'exif-lightsource-9' => 'Ясно',
+'exif-lightsource-10' => 'Захмарено',
+'exif-lightsource-11' => 'Тїнь',
+'exif-lightsource-12' => 'Лампа денного світла тіп D (5700 − 7100K)',
+'exif-lightsource-13' => 'Лампа денного світла тіп N (4600 − 5400K)',
+'exif-lightsource-14' => 'Лампа денного світла тіп W (3900 − 4500K)',
+'exif-lightsource-15' => 'Лампа денного світла тіп WW (3200 − 3700K)',
+'exif-lightsource-17' => 'Штандартне світло тіпу A',
+'exif-lightsource-18' => 'Штандартне світло тіпу B',
+'exif-lightsource-19' => 'Штандартне світло тіпу C',
+'exif-lightsource-24' => 'Штудіова лампа штандарду ISO',
+'exif-lightsource-255' => 'Інше джерело світла',
+
+# Flash modes
+'exif-flash-fired-0' => 'Блеск не працовав',
+'exif-flash-fired-1' => 'Блеск працовав',
+'exif-flash-mode-3' => 'автоматічный режім',
+
+'exif-customrendered-0' => 'Нормалне спрацованя',
+'exif-customrendered-1' => 'Нештандартне спрацованя',
+
+'exif-exposuremode-0' => 'Автоматічна експозіція',
+'exif-exposuremode-1' => 'Ручне наштелёваня експозіції',
+
+'exif-whitebalance-0' => 'Автоматічный баланс білого',
+'exif-whitebalance-1' => 'Ручне наштелёваня балансу білого',
+
+'exif-scenecapturetype-0' => 'Штандартный',
+'exif-scenecapturetype-1' => 'На шырку',
+'exif-scenecapturetype-2' => 'На вышку',
+'exif-scenecapturetype-3' => 'Ночна сцена',
+
+'exif-gaincontrol-0' => 'Жадна',
+'exif-gaincontrol-1' => 'Невелике звышіня',
+'exif-gaincontrol-2' => 'Велике звышіня',
+'exif-gaincontrol-3' => 'Невелике зменшіня',
+'exif-gaincontrol-4' => 'Силне зменшіня',
+
+'exif-contrast-0' => 'Нормалне',
+'exif-contrast-1' => 'Мягке',
+'exif-contrast-2' => 'Тверде',
+
+'exif-saturation-0' => 'Нормалне',
+'exif-saturation-1' => 'Невелика насыченость',
+'exif-saturation-2' => 'Велика насыченость',
+
+'exif-sharpness-0' => 'Нормалне',
+'exif-sharpness-1' => 'Мягке',
+'exif-sharpness-2' => 'Тверде',
+
+'exif-subjectdistancerange-0' => 'Не є знаме',
+'exif-subjectdistancerange-1' => 'Макро',
+'exif-subjectdistancerange-2' => 'Детайл',
+'exif-subjectdistancerange-3' => 'Погляд здалека',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Северна шырка',
+'exif-gpslatitude-s' => 'Южна шырка',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Выходна довжка',
+'exif-gpslongitude-w' => 'Западна довжка',
+
+'exif-gpsstatus-a' => 'Вымірёваня не є закінчене',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'км/год',
+'exif-gpsspeed-m' => 'міль/год',
+'exif-gpsspeed-n' => 'узлів',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Справный курз',
+'exif-gpsdirection-m' => 'Маґнетічный курз',
+
+# External editor support
+'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
+'edit-externally-help' => '(Вецей інформації найдете в [http://www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'вшыткы',
+'imagelistall' => 'вшыткы',
+'watchlistall2' => 'вшыткы',
+'namespacesall' => 'вшыткы',
+'monthsall' => 'вшыткы',
+'limitall' => 'вшыткы',
+
+# E-mail address confirmation
+'confirmemail' => 'Підтверджіня адресы ел. пошты',
+
+# Scary transclusion
+'scarytranscludetoolong' => '[URL дуже довгый]',
+
+# Trackbacks
+'trackbackremove' => '([$1 Змазати])',
+
+# action=purge
+'confirm_purge_button' => 'OK',
+'confirm-purge-top' => 'Очістити кеш той сторінкы?',
+
+# Multipage image navigation
+'imgmultipageprev' => '← попередня сторінка',
+'imgmultipagenext' => 'далша сторінка →',
+'imgmultigo' => 'Перейти!',
+'imgmultigoto' => 'Перейти на сторінку $1',
+
+# Table pager
+'ascending_abbrev' => 'зрост',
+'descending_abbrev' => 'спад',
+'table_pager_next' => 'Далша сторінка',
+'table_pager_prev' => 'Попередня сторінка',
+'table_pager_first' => 'Перша сторінка',
+'table_pager_last' => 'Послїдня сторінка',
+'table_pager_limit' => 'Вказовати $1 елементів на сторінцї',
+'table_pager_limit_submit' => 'Выконати',
+'table_pager_empty' => 'Ніч не было найджене',
+
+# Auto-summaries
+'autosumm-blank' => 'Сторінка очіщена',
+'autosumm-replace' => 'Обсяг сторінкы нагородженый текстом „$1“',
+'autoredircomment' => 'Напрямлїня на [[$1]]',
+'autosumm-new' => 'Створена сторінка: $1',
+
+# Live preview
+'livepreview-loading' => 'Награваня...',
+'livepreview-ready' => 'Награваня… Готово!',
+
+# Watchlist editor
+'watchlistedit-normal-title' => 'Едітованя списку слїдованых сторінок',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Зміны на сторінках зо списку',
+'watchlisttools-edit' => 'Перегляд і едітованя списку',
+'watchlisttools-raw' => 'Едітовати як текст',
+
+# Special:Version
+'version' => 'Верзія',
+'version-extensions' => 'Наіншталованы росшыріня',
+'version-specialpages' => 'Шпеціалны сторінкы',
+'version-variables' => 'Перемінны',
+'version-other' => 'Інше',
+'version-extension-functions' => 'Функції розшыриня',
+'version-hook-subscribedby' => 'Підписаный на',
+'version-version' => '(Верзія $1)',
+'version-license' => 'Ліценція',
+'version-software' => 'Іншталованый софтвер',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'Верзія',
+
+# Special:FilePath
+'filepath' => 'Стежка ку файлу',
+'filepath-page' => 'Файл:',
+'filepath-submit' => 'Выконати',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Гляданя дуплікатных файлів',
+'fileduplicatesearch-legend' => 'Гляданя дуплікатів',
+'fileduplicatesearch-filename' => 'Назва файлу:',
+'fileduplicatesearch-submit' => 'Глядати',
+'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичных файлів.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичный дуплікат|$2 ідентичных дуплікатів}}.',
+
+# Special:SpecialPages
+'specialpages' => 'Шпеціалны сторінкы',
+'specialpages-note' => '----
+* Нормалны шпеціалны сторінкы.
+* <strong class="mw-specialpagerestricted">Шпеціалны сторінкы з&nbsp;обмедженым приступом</strong>',
+'specialpages-group-maintenance' => 'Технічны репорты',
+'specialpages-group-other' => 'Іншы',
+'specialpages-group-login' => 'Приголошіня / реґістрація',
+'specialpages-group-changes' => 'Послїднї зміны а лоґы',
+'specialpages-group-media' => 'Файлы',
+'specialpages-group-users' => 'Хоснователї і права',
+'specialpages-group-highuse' => 'Часто поужываны сторінкы',
+'specialpages-group-pages' => 'Спискы сторінок',
+'specialpages-group-pagetools' => 'Інштрументы сторінок',
+'specialpages-group-wiki' => 'Вікі дата і інштрументы',
+'specialpages-group-redirects' => 'Перенапрамлиня',
+'specialpages-group-spam' => 'Протиспамовы інштрументы',
+
+# Special:BlankPage
+'blankpage' => 'Порожня сторінка',
+'intentionallyblankpage' => 'Тота сторінка є порожня нароком.',
+
+# Special:Tags
+'tag-filter-submit' => 'Філтровати',
+'tags-edit' => 'едітовати',
+'tags-hitcount' => '$1 {{PLURAL:$1|зміна|зміны|змін}}',
+
+# Database error messages
+'dberr-header' => 'Тота вікі має даякы проблемы',
+'dberr-problems' => 'Перебачте! Тот сервер має теперь технічны проблемы.',
+'dberr-again' => 'Спробуйте обновити сторінку за пару мінут.',
+'dberr-usegoogle' => 'Можете спробовати поглядати за допомогов Google.',
+
+# HTML forms
+'htmlform-submit' => 'Одослати',
+'htmlform-reset' => 'Вернути зміны',
+'htmlform-selectorother-other' => 'Інше',
+
+);
diff --git a/languages/messages/MessagesRuq.php b/languages/messages/MessagesRuq.php
index 47b6f022..d3d5283e 100644
--- a/languages/messages/MessagesRuq.php
+++ b/languages/messages/MessagesRuq.php
@@ -1,6 +1,9 @@
<?php
/** Megleno-Romanian (Vlăheşte)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment falls back to Megleno-Romanian (Latin)
diff --git a/languages/messages/MessagesRuq_cyrl.php b/languages/messages/MessagesRuq_cyrl.php
index 03cf1ade..34d222d1 100644
--- a/languages/messages/MessagesRuq_cyrl.php
+++ b/languages/messages/MessagesRuq_cyrl.php
@@ -192,8 +192,7 @@ $messages = array(
'editundo' => 'анулизаје',
# Search results
-'noexactmatch' => "'''Нпажу вец лном \"\$1\" н-ќсистст.''' Путе [[:\$1|креаре це пажу]].",
-'viewprevnext' => 'Ву ($1) ($2) ($3)',
+'viewprevnext' => 'Ву ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Ајутор',
'powersearch' => 'каутај авансата',
@@ -219,12 +218,15 @@ $3',
'boteditletter' => 'б',
# Recent changes linked
-'recentchangeslinked' => 'Модификајри корелате',
+'recentchangeslinked' => 'Модификајри корелате',
+'recentchangeslinked-feed' => 'Модификајри корелате',
+'recentchangeslinked-toolbox' => 'Модификајри корелате',
# Upload
'upload' => 'тримиће фиширул',
# File description page
+'file-anchor-link' => 'фиширул',
'filehist' => 'Хисториа фиширулу',
'filehist-current' => 'куренту',
'filehist-datetime' => 'Дата/Темп',
@@ -279,6 +281,8 @@ $3',
'contribsub2' => 'пентру $1 ($2)',
'uctop' => '(сусверф)',
+'sp-contributions-talk' => 'дискућу',
+
# What links here
'whatlinkshere' => 'Легајтул а це пажу',
'whatlinkshere-title' => 'Пажус легајтулент а $1',
diff --git a/languages/messages/MessagesRuq_grek.php b/languages/messages/MessagesRuq_grek.php
deleted file mode 100644
index 7d7a8952..00000000
--- a/languages/messages/MessagesRuq_grek.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/** Megleno-Romanian (Greek script) (Βλαεστε)
- *
- * @ingroup Language
- * @file
- *
- */
-
-$fallback = 'el';
diff --git a/languages/messages/MessagesRuq_latn.php b/languages/messages/MessagesRuq_latn.php
index 2f8a5cd4..09cbf132 100644
--- a/languages/messages/MessagesRuq_latn.php
+++ b/languages/messages/MessagesRuq_latn.php
@@ -192,8 +192,7 @@ Te rog notari la din kontribuţi al {{SITENAME}} sunt konsideraere relesavat sup
'editundo' => 'anulizăe',
# Search results
-'noexactmatch' => "'''N'pažu vec l'nom \"\$1\" n'ķsistst.''' Pute [[:\$1|kreare ce pažu]].",
-'viewprevnext' => 'Vu ($1) ($2) ($3)',
+'viewprevnext' => 'Vu ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Ajutor',
'powersearch' => 'kaută avansata',
@@ -219,12 +218,15 @@ $3',
'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Modifikări korelate',
+'recentchangeslinked' => 'Modifikări korelate',
+'recentchangeslinked-feed' => 'Modifikări korelate',
+'recentchangeslinked-toolbox' => 'Modifikări korelate',
# Upload
'upload' => 'trimiţe fişirul',
# File description page
+'file-anchor-link' => 'Fişirul',
'filehist' => 'Historia fişirulu',
'filehist-current' => 'kurentu',
'filehist-datetime' => 'Data/Temp',
@@ -279,6 +281,8 @@ $3',
'contribsub2' => 'Pentru $1 ($2)',
'uctop' => '(susverf)',
+'sp-contributions-talk' => 'Diskuţu',
+
# What links here
'whatlinkshere' => 'Legǎtul a ce pažu',
'whatlinkshere-title' => 'Paži legǎtulent a $1',
diff --git a/languages/messages/MessagesSa.php b/languages/messages/MessagesSa.php
index 5ac88a9f..eadca1a8 100644
--- a/languages/messages/MessagesSa.php
+++ b/languages/messages/MessagesSa.php
@@ -154,7 +154,7 @@ $magicWords = array(
'toc' => array( '0', '__अनुक्रमणी__', '__TOC__' ),
'noeditsection' => array( '0', '__नैवसम्पादनविभाग__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__नैवमुख्यशिर्षक__', '__NOHEADER__' ),
- 'currentmonth' => array( '1', 'अद्यमासे', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'अद्यमासे', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'अद्यमासेनाम', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'अद्यमासेनामसाधारण', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'अद्यमासेसंक्षीप्त', 'CURRENTMONTHABBREV' ),
@@ -164,7 +164,7 @@ $magicWords = array(
'currentyear' => array( '1', 'अद्यवर्ष', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'सद्यसमय', 'CURRENTTIME' ),
'currenthour' => array( '1', 'सद्यघण्टा', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'स्थानिकमासे', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'स्थानिकमासे', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'स्थानिकमासेनाम', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'स्थानिकमासेनामसाधारण', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'स्थानिकमासेसंक्षीप्त', 'LOCALMONTHABBREV' ),
@@ -281,6 +281,7 @@ $messages = array(
'tog-enotifminoredits' => 'लघुपरिवर्तनेषु सत्सु अपि मां विद्युत्पत्रेण (ईमेल् इति) ज्ञापयतु।',
'tog-enotifrevealaddr' => 'अधिसूचना-विद्युत्पत्रेषु मम विद्युत्पत्रसंकेतं दर्शयतु।',
'tog-shownumberswatching' => 'निरीक्षमतां प्रयोक्तृणां संख्यां दर्शयतु।',
+'tog-oldsig' => 'अधुनातनानां हस्ताक्षराणां प्रारूपम्।',
'tog-fancysig' => 'हस्ताक्षराणि विकिपाठवत् सन्तु (स्वचालित-संबंधनेभ्यः रहितानि)।',
'tog-externaleditor' => 'अकथिते (बाइ डिफाल्ट् इति), बाह्य संपादकं प्रयोजयतु (केवलेभ्यः निपुणेभ्यः, भवतः संगणके विशेषाः न्यासाः (सेटिंग्स् इति) आवश्यकाः)।',
'tog-externaldiff' => 'अकथिते (बाइ डिफाल्ट् इति), बाह्य अंतरक्रमादेशं प्रयोजयतु (केवलेभ्यः निपुणेभ्यः, भवतः संगणके विशेषाः न्यासाः आवश्यकाः)।',
@@ -302,6 +303,13 @@ $messages = array(
'underline-never' => 'नैव',
'underline-default' => 'ब्राउसर अकथितप्रकरणम्।',
+# Font style option in Special:Preferences
+'editfont-style' => 'सम्पादन-क्षेत्रस्य मुद्राक्षराणां शैली:',
+'editfont-default' => 'विचरकस्य अकथित-प्रकरणानुसारम् (ब्राउसर् डिफ़ॉल्ट्)',
+'editfont-monospace' => 'एकलान्तरितानि मुद्राक्षराणि',
+'editfont-sansserif' => 'कोणविहीनानि मुद्राक्षराणि',
+'editfont-serif' => 'सकोणानि मुद्राक्षराणि',
+
# Dates
'sunday' => 'रविवासरः',
'monday' => 'सोमवासरः',
@@ -361,7 +369,7 @@ $messages = array(
'category-media-header' => '"$1" इति श्रेण्यां माध्यमानि (मीडिया इति)।',
'category-empty' => "''अस्मिन् श्रेण्यां संप्रति न कोऽपि पृष्ठं, माध्यमं वा विद्यते।''",
'hidden-categories' => '{{PLURAL:$1|लोपिता श्रेणी|लोपिताः श्रेण्यः}}',
-'hidden-category-category' => 'लोपिताः श्रेण्यः', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'लोपिताः श्रेण्यः',
'category-subcat-count' => '{{PLURAL:$2|अस्मन् श्रेण्यां केवला अधोलिखिता उपश्रेणी विद्यते|अस्मिन् श्रेण्यां {{PLURAL:$1|अधोलिखिता उपश्रेणी अस्ति|अधोलिखिताः $1 उपश्रेण्यः सन्ति}}, सकलाः उपश्रेण्यः $2 ।}}',
'category-subcat-count-limited' => 'अस्मिन् श्रेण्यां {{PLURAL:$1|अधोलिखिता $1 उपश्रेणी अस्ति|अधोलिखितानि $1 उपश्रेण्यः सन्ति}}।',
'category-article-count' => '{{PLURAL:$2|अस्मिन् श्रेण्यां केवलं इदं पृष्ठं विद्यते ।|अस्मिन् श्रेण्यां {{PLURAL:$1|अधोलिखितं पृष्ठमस्ति|$1 अधोलिखितानि पृष्ठाणि सन्ति}}, सकलानि पृष्ठाणि $2 ।}}',
@@ -369,10 +377,18 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|अस्मिन् श्रेण्यां केवला अधोलिखिता संचिका वर्तते।|अस्मिन् श्रेण्यां {{PLURAL:$1|अधोलिखिता संचिका|अधोलिखिताः $1 संचिकाः}} वर्तन्ते, सकलाः संचिकाः - $2 ।}}',
'listingcontinuesabbrev' => 'आगामि.',
-'about' => 'विषयः:',
-'article' => 'लेखनम्',
-'newwindow' => '(नवे गवाक्षे उद्घाट्यते)',
-'cancel' => 'निरसनम्',
+'about' => 'विषयः:',
+'article' => 'लेखनम्',
+'newwindow' => '(नवे गवाक्षे उद्घाट्यते)',
+'cancel' => 'निरसनम्',
+'moredotdotdot' => 'अपि च...',
+'mypage' => 'मम पृष्ठम्',
+'mytalk' => 'मम संभाषणम्',
+'anontalk' => 'अस्य आइ.पी. संकेतस्य कृते संभाषणम्',
+'navigation' => 'सुचलनम्',
+'and' => '&#32;तथा च',
+
+# Cologne Blue skin
'qbfind' => 'अन्वेषयतु',
'qbbrowse' => 'ब्राउस् इत्येतत् करोतु।',
'qbedit' => 'संपादयतु',
@@ -380,15 +396,35 @@ $messages = array(
'qbpageinfo' => 'प्रसंगः',
'qbmyoptions' => 'मम पृष्ठाणि',
'qbspecialpages' => 'विशिष्टपृष्ठाणि',
-'moredotdotdot' => 'अपि च...',
-'mypage' => 'मम पृष्ठम्',
-'mytalk' => 'मम संभाषणम्',
-'anontalk' => 'अस्य आइ.पी. संकेतस्य कृते संभाषणम्',
-'navigation' => 'सुचलनम्',
-'and' => '&#32;तथा च',
-
-# Metadata in edit box
-'metadata_help' => 'अधिदत्तम् (मेटाडाटा):',
+'faq' => 'बहुधा पृष्टव्याः प्रश्नाः',
+'faqpage' => 'Project:बहुधा पृष्टव्याः प्रश्नाः',
+
+# Vector skin
+'vector-action-addsection' => 'विषयं योजयतु',
+'vector-action-delete' => 'अपाकरोतु',
+'vector-action-move' => 'चालयतु',
+'vector-action-protect' => 'सुरक्षितं करोतु',
+'vector-action-undelete' => 'अपाकरणस्य निरसनम्',
+'vector-action-unprotect' => 'सुरक्षितीकरणस्य निरसनम्',
+'vector-namespace-category' => 'श्रेणी',
+'vector-namespace-help' => 'सहायकपृष्ठम्',
+'vector-namespace-image' => 'सञ्चिका',
+'vector-namespace-main' => 'पृष्ठम्',
+'vector-namespace-media' => 'माध्यम-पृष्ठम्',
+'vector-namespace-mediawiki' => 'संदेशः',
+'vector-namespace-project' => 'प्रकल्पपृष्ठम्',
+'vector-namespace-special' => 'विशिष्टपृष्ठम्',
+'vector-namespace-talk' => 'चर्चा',
+'vector-namespace-template' => 'संफलकम्',
+'vector-namespace-user' => 'प्रयोक्तृ-पृष्ठम्',
+'vector-view-create' => 'सृजतु',
+'vector-view-edit' => 'संपादयतु',
+'vector-view-history' => 'इतिहासं दर्शयतु',
+'vector-view-view' => 'पठतु',
+'vector-view-viewsource' => 'स्रोतसं दर्शयतु',
+'actions' => 'क्रियाः',
+'namespaces' => 'नामाकाशानि',
+'variants' => 'प्रकीर्णत्वेन',
'errorpagetitle' => 'विभ्रमः',
'returnto' => '$1 इत्येतद् प्रति निवर्तताम्।',
@@ -438,7 +474,7 @@ $messages = array(
'otherlanguages' => 'अन्यासु भाषासु',
'redirectedfrom' => '($1 इत्यस्मात् अनुप्रेषितम्)',
'redirectpagesub' => 'अनुप्रेषण-पृष्ठम्',
-'lastmodifiedat' => 'एतत् पृष्ठस्य अन्तिमपरिवर्तनं $1 दिवसे $2 वादने कृतम्', # $1 date, $2 time
+'lastmodifiedat' => 'एतत् पृष्ठस्य अन्तिमपरिवर्तनं $1 दिवसे $2 वादने कृतम्',
'viewcount' => 'एतत्पृष्ठं {{PLURAL:$1|एक वारं|$1 वारं}} दृष्टम् अस्ति',
'protectedpage' => 'संरक्षितपृष्ठम्',
'jumpto' => 'कूर्दयतु अत्र :',
@@ -456,8 +492,6 @@ $messages = array(
'disclaimerpage' => 'Project:सामान्यं प्रत्याख्यानम्',
'edithelp' => 'संपादनार्थं सहायम्',
'edithelppage' => 'Help:संपादनम्',
-'faq' => 'बहुधा पृष्टव्याः प्रश्नाः',
-'faqpage' => 'Project:बहुधा पृष्टव्याः प्रश्नाः',
'helppage' => 'Help:घटकानि',
'mainpage' => 'मुख्यपृष्ठम्',
'mainpage-description' => 'मुख्यपृष्ठम्',
@@ -537,8 +571,6 @@ $messages = array(
'nologinlink' => 'लेखां रचयतु',
'createaccount' => 'लेखां रचयतु',
'gotaccountlink' => 'प्रविशतु',
-'yourlanguage' => 'भाषा:',
-'email' => 'विद्युत्पत्रव्यवस्था',
'loginsuccesstitle' => 'सुस्वागतम्‌। प्रवेशः सिद्धः।',
'mailmypassword' => 'नूतनं रहस्यवाक् विद्युत्पत्रेण प्रेषयतु',
'loginlanguagelabel' => 'भाषा : $1',
@@ -603,6 +635,8 @@ $messages = array(
भवान् एतदपि प्रमाणीकरोति यत् एतद् भवता स्वतः लिखितमस्ति अथवा कस्माच्चत् जनार्पितात् वा मुक्तात् वा स्रोतसः प्रतिलिपीकृतमस्ति।
'''प्रतिलिप्यधिकारयुतान् लेखान्, अनुज्ञां विना, माऽत्र प्रददातु!'''",
+'templatesused' => 'अस्मिन् पृष्ठे प्रयुक्ताः बिंबधराः :',
+'templatesusedpreview' => 'अस्मिन् प्राग्दृश्ये प्रयुक्ताः बिंबधराः :',
'template-protected' => '(संरक्षितम्)',
'template-semiprotected' => '(अर्धसंरक्षितम्)',
'hiddencategories' => 'इदं पृष्ठं {{PLURAL:$1|1 निगूढस्य श्रेण्याः |$1 निगूढानां श्रेणीनां}} सदस्यत्वेन विद्यते :',
@@ -610,6 +644,8 @@ $messages = array(
# History pages
'viewpagelogs' => 'अस्य पृष्ठस्य लॉंग् इत्येतद् दर्शयतु',
+'currentrev-asof' => 'वर्तमती आवृत्तिः $1 इति समये',
+'revisionasof' => '$1 इत्यस्य आवृत्तिः',
'previousrevision' => '← पुरातनाः आवृत्तयः',
'nextrevision' => 'नूतनतरा आवृत्तिः →',
'currentrevisionlink' => 'सद्यःकालीना आवृत्तिः',
@@ -622,7 +658,7 @@ $messages = array(
'histlast' => 'नूतनतमम्',
# Revision feed
-'history-feed-item-nocomment' => '$1 उप $2', # user at time
+'history-feed-item-nocomment' => '$1 उप $2',
# Revision deletion
'rev-delundel' => 'दर्शयतु/गोपयतु',
@@ -644,13 +680,11 @@ $messages = array(
'searchresulttext' => '{{SITENAME}} इत्यस्मिन् अन्वेषणे सहाय्यार्थम् [[{{MediaWiki:Helppage}}|{{int:help}}]] इत्येतत् पश्यतु ।',
'searchsubtitle' => 'भवान् \'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|सर्वाणि "$1" इत्यस्माद् आरभमन्तः पृष्ठाणि]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|सर्वाणि "$1" इत्येतत्प्रति संबद्धानि पृष्ठाणि]]) इत्यस्य कृते अन्विष्टवान्।',
'searchsubtitleinvalid' => "भवता '''$1''' इत्यस्य कृते अन्वेषणं कृतम्",
-'noexactmatch' => "'''\"\$1\" इति शीर्षकीयं न कोऽपि पृष्ठं विद्यते।'''
-भवान् इदं पृष्ठं [[:\$1|स्रष्टुं शक्नोति]]।",
-'noexactmatch-nocreate' => "'''\"\$1\" इति शीर्षकीयं न कोऽपि पृष्ठं विद्यते।'''",
'notitlematches' => 'न कस्यापि पृष्ठस्य शीर्षकम् अस्य समम्।',
'notextmatches' => 'न कस्यापि पृष्ठस्य पाठः अस्य सममस्ति',
-'nextn' => 'आगामि$1',
-'viewprevnext' => 'दर्शयतु ($1) ($2) ($3)',
+'prevn' => 'पूर्वतनानि {{PLURAL:$1|$1}}',
+'nextn' => 'आगामि{{PLURAL:$1|$1}}',
+'viewprevnext' => 'दर्शयतु ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|1 शब्दम्|$2 शब्दे}})',
'search-redirect' => '($1 इतीदं अनुप्रेषितम्)',
'search-section' => '(विभागः $1)',
@@ -660,7 +694,6 @@ $messages = array(
'search-interwiki-more' => '(अधिकानि)',
'search-mwsuggest-enabled' => 'उपक्षेपेभ्यः सह',
'search-mwsuggest-disabled' => 'नात्र उपक्षेपाः',
-'showingresultstotal' => "अधस्तात् {{PLURAL:$4| '''$1''' परिणामः '''$3''' इत्येभ्यः प्रदर्शितः|'''$1 - $2''' परिणामाः '''$3''' इत्येभ्यः प्रदर्शिताः}}",
'nonefound' => "'''सूचना''': स्वतः अत्र केषुचिदेव नामाकाशेषु अन्वेषणं क्रियते।
सकले घटके अन्वेषणं कर्तुं स्व अन्वेषणपदेभ्यः पूर्वं ''all:'' इति योजयतु, अथवा इष्टं नामाकाशं पूर्वलग्नरूपेण योजयतु।",
@@ -673,6 +706,8 @@ $messages = array(
# Preferences page
'preferences' => 'इष्टतमानि',
'mypreferences' => 'मम वरीयांसि',
+'yourlanguage' => 'भाषा:',
+'email' => 'विद्युत्पत्रव्यवस्था',
# Groups
'group-sysop' => 'प्रबंधकाः',
@@ -711,6 +746,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'पृष्ठ-सम्बन्धि-परिवर्तनानि',
+'recentchangeslinked-feed' => 'पृष्ठ-सम्बन्धितानि परिवर्तनानि',
+'recentchangeslinked-toolbox' => 'पृष्ठ-सम्बन्धितानि परिवर्तनानि',
'recentchangeslinked-title' => '"$1" इत्यस्मिन् भूतानि परिवर्तनानि',
'recentchangeslinked-summary' => "इदं पृष्ठं दर्शयति पृष्ठविशेषेण सह संबद्धीकृतेषु पृष्ठेषु परिवर्तनानि (अथवा श्रेणीविशेषे अन्तर्भूतेषु पृष्ठेषु परिवर्तनानि)।
@@ -728,18 +765,20 @@ $messages = array(
'imgfile' => 'संचिका',
# File description page
+'file-anchor-link' => 'संचिका',
'filehist' => 'संचिकायाः इतिहासः',
'filehist-help' => 'संचिका तत्समये कीदृशी आसीदिति द्रष्टुं दिनांकः/समयः इत्यस्मिन् नोदयतु।',
'filehist-deleteone' => 'विलोप',
'filehist-current' => 'नवीनतमम्',
'filehist-datetime' => 'दिनांकः/समयः',
'filehist-thumb' => 'अंगुष्ठनखाकारम्',
+'filehist-thumbtext' => '$1 समये विद्यमत्याः आवृत्तेः अंगुष्ठनखाकारम्',
'filehist-user' => 'प्रयोक्ता',
'filehist-dimensions' => 'आयामाः',
'filehist-comment' => 'टिप्पणी',
'imagelinks' => 'संचिका-संबंधनानि',
'linkstoimage' => '{{PLURAL:$1|अधोलिखितं पृष्ठं| अधोलिखितानि $1 पृष्ठाणि}} इदं संचिकां प्रति संबंधनं {{PLURAL:$1|करोति| कुर्वन्ति}}।',
-'sharedupload' => 'इयं संचिका $1 इत्यस्मादस्ति, एषा खलु अन्येष्वपि प्रकल्पेषु प्रयोक्तुं शक्यते।', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'इयं संचिका $1 इत्यस्मादस्ति, एषा खलु अन्येष्वपि प्रकल्पेषु प्रयोक्तुं शक्यते।',
'uploadnewversion-linktext' => 'अस्य पृष्ठस्य नूतनाम् आवृत्तिं उद्भारयतु',
# Random page
@@ -838,7 +877,6 @@ $messages = array(
'protectexpiry' => 'अवसानम् :',
'protect_expiry_invalid' => 'अवसान-समयः अमान्योऽस्ति।',
'protect_expiry_old' => 'अवसान-समयः अतीतोऽस्ति।',
-'protect-unchain' => 'चालनार्थम् अनुज्ञां ददातु।',
'protect-text' => "'''<nowiki>$1</nowiki>''' इति पृष्ठस्य कृते सुरक्षा-स्तरं भवान् अत्र दृष्टुं शक्नोति, तथा च तं परिवर्तयितुं शक्नोति।",
'protect-locked-access' => "भवान् अस्य पृष्ठस्य सुरक्षा-स्तरं परिवर्तयितुम् अनुज्ञां न धारयति। '''$1''' इति पृष्ठस्य अधुनातनः सुरक्षा-स्तरः :",
'protect-cascadeon' => 'इदं पृष्ठं वर्तमत्काले सुरक्षितमस्ति, यत इदं {{PLURAL:$1|निम्नलिखिते पृष्ठे |निम्नलिखितेषु पृष्ठेषु}} समाहितमस्ति {{PLURAL:$1|यस्मिन्|येषु}} सोपानात्मिका सुरक्षा प्रभाविनी अस्ति। भवान् अस्य पृष्ठस्य सुरक्षा-स्तरं परिवर्तयितुं शक्नोति, परं तेन सोपानात्मिका-सुरक्षा न परिवर्तयिष्यति।',
@@ -872,6 +910,7 @@ $messages = array(
'sp-contributions-newbies' => 'केवलानां नूतन-लेखानां योगदानानि दर्शयतु',
'sp-contributions-blocklog' => 'निरोधानां सूचिका',
+'sp-contributions-talk' => 'संभाषणम्',
'sp-contributions-search' => 'योगदानानां कृते अन्विष्यतु',
'sp-contributions-username' => 'आइ.पी.संकेतः अथवा प्रयोक्तृ-नाम :',
'sp-contributions-submit' => 'अन्वेषणम्',
@@ -894,7 +933,7 @@ $messages = array(
# Block/unblock
'blockip' => 'प्रयोक्तारं निरुध्नातु',
-'ipboptions' => '२ होराः:2 hours,१ वासरः:1 day,३ वासराः:3 days,१ सप्ताहः:1 week,२ सप्ताहौ:2 weeks,१ मासः:1 month,३ मासाः:3 months,६ मासाः:6 months,१ वर्षः:1 year,अनंतम्:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '२ होराः:2 hours,१ वासरः:1 day,३ वासराः:3 days,१ सप्ताहः:1 week,२ सप्ताहौ:2 weeks,१ मासः:1 month,३ मासाः:3 months,६ मासाः:6 months,१ वर्षः:1 year,अनंतम्:infinite',
'ipblocklist' => 'निरोधिताः आइ.पी. संकेताः, प्रयोक्तृ-नामानि च',
'blocklink' => 'अवरुध्नातु',
'unblocklink' => 'अनिरुध्नातु',
@@ -910,7 +949,7 @@ $messages = array(
'move-watch' => 'इदं पृष्ठं निरीक्षताम्।',
'movepagebtn' => 'पृष्ठं चालयतु।',
'pagemovedsub' => 'चालनं सिद्धम्।',
-'movepage-moved' => '\'\'\'"$1" इत्येतद् "$2" इत्येतद् प्रति चालितमस्ति \'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" इत्येतद् "$2" इत्येतद् प्रति चालितमस्ति \'\'\'',
'articleexists' => 'अनेन नाम्ना पृष्ठमेकं पूर्वेऽपि विद्यते, अथवा भवता चितं नाम तु अमान्यमस्ति। कृपया इतरं किमपि नाम चिनोतु।',
'talkexists' => "'''पृष्ठं साफल्येन चालितमस्ति, परं चर्चापृष्ठं चालयितुं न शक्यम्, यतो नवेऽपि पृष्ठे चर्चापृष्ठं विद्यते। कृपया तं स्वयमेव चालयतु।'''",
'movedto' => 'इदं प्रति चालितम्।',
@@ -925,8 +964,11 @@ $messages = array(
'export' => 'पृष्ठाणां निर्यातं करोतु',
# Namespace 8 related
-'allmessages' => 'व्यवस्था सन्देशाः',
-'allmessagesname' => 'नाम',
+'allmessages' => 'व्यवस्था सन्देशाः',
+'allmessagesname' => 'नाम',
+'allmessages-filter-all' => 'अखिलम्',
+'allmessages-language' => 'भाषा:',
+'allmessages-filter-submit' => 'गच्छतु',
# Thumbnails
'thumbnail-more' => 'विस्तारयतु',
@@ -957,6 +999,7 @@ $messages = array(
'tooltip-search-fulltext' => 'एतत् पाठं पृष्ठेषु अन्विष्यतु',
'tooltip-p-logo' => 'मुख्यपृष्ठम् अभ्यागम्',
'tooltip-n-mainpage' => 'मुख्यपृष्ठं संदर्शयतु',
+'tooltip-n-mainpage-description' => 'मुख्यपृष्ठं संदर्शयतु',
'tooltip-n-portal' => 'प्रकल्पविषये, भवता किं कर्तुं शक्यम्, कुत्र अन्वेषणं शक्यम्',
'tooltip-n-currentevents' => 'सद्यःघटितानां घटनानां विषये पृष्ठभूमिक-सूचना',
'tooltip-n-recentchanges' => 'सद्यःपरिवर्तितानां सूचिका',
@@ -1036,7 +1079,7 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'बाह्यां प्रणालीं उपयोज्य इमां संचिकां संपादयतु।',
@@ -1056,7 +1099,7 @@ $messages = array(
'watchlisttools-raw' => 'प्राकृतां निरीक्षासुचिकां संपादयतु',
# Special:Version
-'version' => 'आवृत्ति', # Not used as normal message but as header for the special page itself
+'version' => 'आवृत्ति',
# Special:SpecialPages
'specialpages' => 'विशिष्ट-पृष्ठाणि',
diff --git a/languages/messages/MessagesSah.php b/languages/messages/MessagesSah.php
index 00e4f55f..84002aa4 100644
--- a/languages/messages/MessagesSah.php
+++ b/languages/messages/MessagesSah.php
@@ -19,16 +19,21 @@ $namespaceNames = array(
NS_SPECIAL => 'Аналлаах',
NS_TALK => 'Ырытыы',
NS_USER => 'Кыттааччы',
- NS_USER_TALK => 'Кыттааччы ырытыыта',
+ NS_USER_TALK => 'Кыттааччы_ырытыыта',
NS_PROJECT_TALK => '$1_ырытыыта',
- NS_FILE => 'Ойуу',
- NS_FILE_TALK => 'Ойуу ырытыыта',
+ NS_FILE => 'Билэ',
+ NS_FILE_TALK => 'Билэ_ырытыыта',
NS_TEMPLATE => 'Халыып',
- NS_TEMPLATE_TALK => 'Халыып ырытыыта',
+ NS_TEMPLATE_TALK => 'Халыып_ырытыыта',
NS_HELP => 'Көмө',
- NS_HELP_TALK => 'Көмө ырытыыта',
+ NS_HELP_TALK => 'Көмө_ырытыыта',
NS_CATEGORY => 'Категория',
- NS_CATEGORY_TALK => 'Категория ырытыыта',
+ NS_CATEGORY_TALK => 'Категория_ырытыыта',
+);
+
+$namespaceAliases = array(
+ 'Ойуу' => NS_FILE,
+ 'Ойуу_ырытыыта' => NS_FILE_TALK,
);
$messages = array(
@@ -62,6 +67,7 @@ $messages = array(
'tog-enotifminoredits' => 'Кыра да уларытыы киирдэҕинэ эл. почтанан биллэр',
'tog-enotifrevealaddr' => 'Мин почтам аадырыһын биллэриилэргэ көрдөр',
'tog-shownumberswatching' => 'Сирэйи кэтээн көрөр дьон ахсаанын көрдөр',
+'tog-oldsig' => 'Баар илии баттааһыны эрдэ көрүү:',
'tog-fancysig' => 'Бэйэ илии баттааһына (ыйынньыга суох)',
'tog-externaleditor' => 'Атын этиллибэтэҕинэ тас эрэдээктэри туһан (билэр дьоҥҥо аналлаах)',
'tog-externaldiff' => 'Атын этиллибэтэҕинэ версиялары тэҥниир тас программаны туһан (билэр дьоҥҥо аналлаах)',
@@ -84,6 +90,13 @@ $messages = array(
'underline-never' => 'Аннынан тардыма',
'underline-default' => 'Браузер настройкатынан',
+# Font style option in Special:Preferences
+'editfont-style' => 'Эрэдээксийэлиир түннүк бичигэ:',
+'editfont-default' => 'Браузерга туруоруллубут бичик',
+'editfont-monospace' => 'Тэҥ кэтиттээх бичик',
+'editfont-sansserif' => 'Самалыга суох бичик',
+'editfont-serif' => 'Самалыктаах бичик',
+
# Dates
'sunday' => 'Өрөбүл',
'monday' => 'Бэнидиэнньик',
@@ -143,7 +156,7 @@ $messages = array(
'category-media-header' => '"$1" категория билэлэрэ',
'category-empty' => "''Бу категорияҕа билигин туох да суох.''",
'hidden-categories' => '{{PLURAL:$1|Кистэммит категория|Кистэммит категориялар}}',
-'hidden-category-category' => 'Кистэммит категориялар', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Кистэммит категориялар',
'category-subcat-count' => '{{PLURAL:$2|Бу категория манна көстүбүт субкатегориялаах.|$2 категорияттан {{PLURAL:$1|субкатегорията|$1 субкатегориялара}} көрдөрүлүннүлэр.}}',
'category-subcat-count-limited' => 'Бу категория {{PLURAL:$1|субкатегориялаах|$1 субкатегориялардаах}}.',
'category-article-count' => '{{PLURAL:$2|Бу категория манна эрэ көстүбүт субкатегориялаах.|$2 категорияттан {{PLURAL:$1|субкатегорията|$1 субкатегориялара}} көрдөрүлүннүлэр.}}',
@@ -151,6 +164,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Бу категория манна эрэ көстүбүт билэлээх.|$2 категорияттан {{PLURAL:$1|билэтэ|$1 билэлэрэ}} көрдөрүлүннүлэр.}}',
'category-file-count-limited' => 'Бу категорияҕа {{PLURAL:$1|биир билэ|$1 билэ}} баар.',
'listingcontinuesabbrev' => '(салгыыта)',
+'index-category' => 'Индекстаммыт сирэйдэр',
+'noindex-category' => 'Индексктаммыт сирэйдэр суохтар',
'mainpagetext' => "'''«MediaWiki» сөпкө туруорулунна.'''",
'mainpagedocfooter' => 'Биики программатын туһунан [http://meta.wikimedia.org/wiki/Help:Contents справочникка] көрүөххүн сөп.
@@ -161,10 +176,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай испииһэгэ]',
-'about' => 'Бу туһунан',
-'article' => 'Ыстатыйа',
-'newwindow' => '(атын түннүккэ арыллар)',
-'cancel' => 'Алҕас',
+'about' => 'Бу туһунан',
+'article' => 'Ыстатыйа',
+'newwindow' => '(атын түннүккэ арыллар)',
+'cancel' => 'Алҕас',
+'moredotdotdot' => 'Өссө...',
+'mypage' => 'Бэйэм туспунан',
+'mytalk' => 'Кэпсэтэр сирим',
+'anontalk' => 'Бу IP-га ырытыы',
+'navigation' => 'Навигация',
+'and' => '&#32;уонна',
+
+# Cologne Blue skin
'qbfind' => 'Бул',
'qbbrowse' => 'Көр',
'qbedit' => 'Уларыт',
@@ -172,15 +195,34 @@ $messages = array(
'qbpageinfo' => 'Ис хоһооно',
'qbmyoptions' => 'Мин сирэйдэрим',
'qbspecialpages' => 'Аналлаах сирэйдэр',
-'moredotdotdot' => 'Өссө...',
-'mypage' => 'Бэйэм туспунан',
-'mytalk' => 'Кэпсэтэр сирим',
-'anontalk' => 'Бу IP-га ырытыы',
-'navigation' => 'Навигация',
-'and' => '&#32;уонна',
-
-# Metadata in edit box
-'metadata_help' => 'Мета дааннайдар:',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Тиэмэ эбии',
+'vector-action-delete' => 'Сот',
+'vector-action-move' => 'Аатын уларыт',
+'vector-action-protect' => 'Уларыйбат гын',
+'vector-action-undelete' => 'Төннөр',
+'vector-action-unprotect' => 'Көмүскэлин уһул',
+'vector-namespace-category' => 'Категория',
+'vector-namespace-help' => 'Көмө сирэй',
+'vector-namespace-image' => 'Билэ',
+'vector-namespace-main' => 'Сирэй',
+'vector-namespace-media' => 'Миэдьийэ сирэй',
+'vector-namespace-mediawiki' => 'Сурук',
+'vector-namespace-project' => 'Бырайыак туһунан',
+'vector-namespace-special' => 'Анал сирэй',
+'vector-namespace-talk' => 'Ырытыы',
+'vector-namespace-template' => 'Халыып',
+'vector-namespace-user' => 'Кыттааччы тус сирэйэ',
+'vector-view-create' => 'Ай',
+'vector-view-edit' => 'Уларыт',
+'vector-view-history' => 'Устуоруйатын көрүү',
+'vector-view-view' => 'Ааҕыы',
+'vector-view-viewsource' => 'Бэлиэлэрин көрүү',
+'actions' => 'Дьайыылар',
+'namespaces' => 'Аат даллара',
+'variants' => 'Барыллар',
'errorpagetitle' => 'Сыыһа',
'returnto' => 'Төттөрү $1 сирэйгэ.',
@@ -230,18 +272,22 @@ $messages = array(
'otherlanguages' => 'Атын омук тылынан',
'redirectedfrom' => '(Мантан: $1 көстө)',
'redirectpagesub' => 'Утаарар сирэй',
-'lastmodifiedat' => 'Бу сирэй бүтэһигин $2, $1 уларыйбыта.', # $1 date, $2 time
+'lastmodifiedat' => 'Бу сирэй бүтэһигин $2, $1 уларыйбыта.',
'viewcount' => 'Бу сирэй {{PLURAL:$1|биирдэ|$1 төгүл}} көрүллүбүт.',
'protectedpage' => 'Уларытыллыбат сирэй',
'jumpto' => 'Манна көс:',
'jumptonavigation' => 'навигация',
'jumptosearch' => 'көрдөөһүн',
+'view-pool-error' => 'Балаама, билигин бары сиэрбэрдэр туолан тураллар.
+Бу сирэйи наһаа элбэх киһи көрүөн баҕарбыт.
+Бука диэн, кэтэһэ түһэн баран өссө боруобалаар.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} туһунан',
'aboutpage' => 'Project:туһунан',
'copyright' => 'Маны туһанары $1 көҥүллүүр.',
-'copyrightpagename' => '{{SITENAME}} бас билиитэ',
'copyrightpage' => '{{ns:project}}:бас билиитэ',
'currentevents' => 'Туох буола турара',
'currentevents-url' => 'Project:Сонуннар',
@@ -249,7 +295,6 @@ $messages = array(
'disclaimerpage' => 'Project:Бүк охсунуу',
'edithelp' => 'Уларытааччыларга көмө',
'edithelppage' => 'Help:Уларытарга көмө',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Көмө',
'mainpage' => 'Сүрүн сирэй',
'mainpage-description' => 'Сүрүн сирэй',
@@ -327,10 +372,6 @@ $messages = array(
"$1"
"$2" пуунсуйаттан тахсыбыт.
Билии олоҕо маннык сыыһаны көрдөрдө "$3: $4"',
-'noconnect' => 'Бу биики тиэхникэ моһуогуруутуттан билии олоҕун сиэрбэрин кытта ситимэ быстыбыт.<br />
-$1',
-'nodb' => '$1 билии олоҕун кыайан талбатым',
-'cachederror' => 'Бу көрдөөбүт сирэйиҥ кээскэ быраҕыллыбыт куоппуйата, баҕар эргэрбитэ буолуо.',
'laggedslavemode' => 'Болҕой: Бу сирэй бүтэһик уларытыылара суох буолуон сөп',
'readonly' => 'Билии олоҕун уларытар бобуллубут',
'enterlockreason' => 'Уларытыыны бобуу төрүөтүн уонна төһө өр бобулларын ый.',
@@ -347,6 +388,8 @@ $1',
'readonly_lag' => 'Билии олоҕун хос сиэрбэрдэрэ сүрүн сиэрбэри кытта мэнэйдэһэр кэмнэригэр билии олоҕо хатанна',
'internalerror' => 'Ис алҕас (внутренняя ошибка)',
'internalerror_info' => 'Ис алҕас: $1',
+'fileappenderrorread' => 'Эбии кэмигэр «$1» кыайан ааҕыллыбата.',
+'fileappenderror' => 'Маны "$1" манна "$2" холбуур табыллыбата.',
'filecopyerror' => '"$1" диэн билэ "$2"-а кыайан төгүллэммэт.',
'filerenameerror' => '"$1" диэн билэ аатын "$2" диэҥҥэ кыайан уларытыллыбат.',
'filedeleteerror' => '"$1" диэн билэ кыайан сотторуллубат.',
@@ -356,7 +399,8 @@ $1',
'unexpected' => 'Барсыбат суолталаах: "$1"="$2".',
'formerror' => 'Сыыһа: халыып кыайан ылыллыбата',
'badarticleerror' => 'Бу дьайыы бу сирэйгэ кыайан оҥоһуллубат.',
-'cannotdelete' => 'Ыйыллыбыт билэни кыайан сотторботум. (Ким эрэ инники сотторбут буолуон сөп)',
+'cannotdelete' => '«$1» сирэй эбэтэр билэ сотуллар кыаҕа суох.
+Ким эрэ инники сотторбут буолуон сөп.',
'badtitle' => 'Табыллыбат аат',
'badtitletext' => 'Ыйытыллыбыт сирэй аата сыыһа, иччитэх, эбэтэр сыыһа ыйынньыктаах тыллар ыккардыларынааҕы дуу, биикилэр ыккардыларынааҕы дуу аат.',
'perfcached' => 'Бу билии кээстэн ылыллыбыт онон бүтэһик уларыйыылары аахсымыан сөп.',
@@ -388,7 +432,6 @@ $2',
'virus-unknownscanner' => 'биллибэт антивирус:',
# Login and logout pages
-'logouttitle' => 'Тахсыы',
'logouttext' => "'''Эн систематтан таҕыстыҥ.'''
{{SITENAME}} саайка билигин ааккынан буолбакка IP-аадырыһынан эрэ көстөҕүн.
@@ -397,7 +440,6 @@ $2',
'welcomecreation' => '== Нөрүөн нөргүй, $1! ==
Эн манна бэлиэтэнниҥ.
[[Special:Preferences|{{SITENAME}} туруорууларын]] бэйэҕэр сөп түбэһэр гына уларытаргын умнума.',
-'loginpagetitle' => 'Аатыҥ',
'yourname' => 'Кыттааччы аатыҥ:',
'yourpassword' => 'Киирии тыла:',
'yourpasswordagain' => 'Киирии тылгын хатылаа:',
@@ -408,6 +450,7 @@ $2',
'nav-login-createaccount' => 'Киир / бэлиэтэн',
'loginprompt' => '{{SITENAME}} саайтыгар киирэргэ «cookies» туттары көҥүллээ.',
'userlogin' => 'Киир / бэлиэтэн',
+'userloginnocreate' => 'Киир',
'logout' => 'Таҕыс',
'userlogout' => 'Таҕыс',
'notloggedin' => 'Ааккын эппэтиҥ',
@@ -420,28 +463,8 @@ $2',
'badretype' => 'Киирии тылларыҥ сөп түбэспэтилэр.',
'userexists' => 'Суруйбут аатыҥ бэлиэр баар.
Атын аатта тал.',
-'youremail' => 'E-mail-ыҥ:',
-'username' => 'Бэлиэтэммит аатыҥ:',
-'uid' => 'Кыттааччы ID-та:',
-'prefs-memberingroups' => 'Бу {{PLURAL:$1|бөлөххө|бөлөхтөргө}} киирэр:',
-'yourrealname' => 'Докумуонунан аатыҥ:',
-'yourlanguage' => 'Омугуҥ тыла:',
-'yourvariant' => 'Барыйаан:',
-'yournick' => 'Илии баттааһын:',
-'badsig' => 'Сыыһа илии баттааһын; HTML тиэгтэрин көр.',
-'badsiglength' => 'Наһаа уһун илии баттааһын.
-$1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}} ордук буолуо суохтаах.',
-'yourgender' => 'Эр киһитэ/дьахтара:',
-'gender-unknown' => 'Ыйыллыбатах',
-'gender-male' => 'Эр киһи',
-'gender-female' => 'Дьахтар',
-'prefs-help-gender' => 'Булгуччута суох. Бырагыраамма сорох дьоҥҥо туһаайыллыбыт биллэриилэригэр эбэтэр кинилэргэ сыһыаннаах этиилэригэр кытааччы дьахтарыттан эр киһититтэн көрөн этии тутулун уларытан биэриэн сөп. Туора дьоҥҥо көстөр бэлиэтээһин.',
-'email' => 'Почта',
-'prefs-help-realname' => 'Сурукка киирбит аатыҥ (булгуччута суох): ким бу сирэйи уларыппытын көрдөрөргө туттуллар',
'loginerror' => 'Ааккын система билбэтэ',
-'prefs-help-email' => 'Электроннай аадырыһыҥ булгуччута суох, ол эрээри киирии тылгын умуннаххына санатарга көмөлөһүө.
-Эбиитин атын кыттааччылар эйиэхэ бэйэҕин билбэккэ эрэ сурук суруйалларын көҥүллүөххүн сөп.',
-'prefs-help-email-required' => 'E-mail баар буолуохтаах.',
+'createaccounterror' => 'Саҥа аат бэлиэтиир кыах суох: $1',
'nocookiesnew' => 'Маннык ааттаах кыттааччы баар буолла гынан баран, систиэмэҕэ киирэ илик. {{SITENAME}} «cookies» туттар, оттон эн көмпүүтэргэр ону туһанар бобуллубут. Бука диэн «cookies» холбоо, онтон өссө киирэн көр.',
'nocookieslogin' => '{{SITENAME}} дьону билэргэ «cookies» туттар. Эн көмпүүтэргэр «cookies» бобуллубут. Ону холбоон баран өссө киирэн көр.',
'noname' => 'Эн тиһилик билэр аатын киллэрбэтэххин.',
@@ -452,10 +475,12 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
Аатыҥ сөпкө суруллубутун көр эбэтэр [[Special:UserLogin/signup|саҥаттан бэлиэтэн]].',
'nosuchusershort' => 'Маннык - "<nowiki>$1</nowiki>" - ааттаах кыттааччы суох. Аатыҥ сөпкө суруллубутун көр.',
'nouserspecified' => 'Кыттааччы аатын киллэриэхтээххин.',
+'login-userblocked' => 'Бу кыттааччы бобуллубут. Тиһиккэ киирии көҥүллэммэт.',
'wrongpassword' => 'Киирии тылыҥ сыыһалаах. Өссө киллэрэн көр.',
'wrongpasswordempty' => 'Киирии тылгын суруйбатаххын. Өссө киирэн көр.',
-'passwordtooshort' => 'Киирии тылыҥ сатаммат бэлиэлэрдээх эбэтэр наһаа кылгас.
-Кырата $1 {{PLURAL:$1|1 бэлиэлээх|$1 бэлиэлээх}} буолуохтаах уонна кыттааччы аатын кытта биир буолуо суохтаах.',
+'passwordtooshort' => 'Киирии тылыҥ наһаа кылгас.
+Кырата {{PLURAL:$1|1 бэлиэлээх|$1 бэлиэлээх}} буолуохтаах.',
+'password-name-match' => 'Киирии тыл ааккыттан атын буолуохтаах.',
'mailmypassword' => 'Саҥа киирии тылла ыыттар',
'passwordremindertitle' => '{{SITENAME}} киирии тылын санатыы',
'passwordremindertext' => 'Ким эрэ (бадаҕа эн бу IP-аадырыстан: $1), {{SITENAME}} ($4) киирии тылын саҥаттан ыытыҥ диэбит.
@@ -467,6 +492,7 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
эбэтэр урукку киирии тылгын өйдөөн кэлбит буоллаххына,
бу сурукка ааххайыма уонна урукку киирии тылгын салгыы туһан.',
'noemail' => '"$1" ааттаах киһиэхэ эл. почтата ыйыллыбатах.',
+'noemailcreate' => 'Электроннай почтаҥ сөптөөх аадырыһын суруйуохтааххын',
'passwordsent' => 'Саҥа киирии тыл "$1" эл. почтатыгар ыытылынна.
Системаҕа саҥа киирии тылы туһанан киир.',
'blocked-mailpassword' => 'Эн IP аадырыскыттан манна тугу эмэ уларытар бобуллубут,
@@ -491,9 +517,11 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
'createaccount-text' => 'Ким эрэ {{SITENAME}} бырайыакка ($4) саҥа $2 ааты бэлиэтээбит. "$2" киирии тыла "$3". Билигин киирэн киирии тылгын уларытыаххын наада.
Саҥа аат сыыһа оҥоһуллубут буоллаҕына тугу да гыныа суоххун сөп.',
+'usernamehasherror' => 'Аакка эрэһиэккэ бэлиэтин туттар сатаммат',
'login-throttled' => 'Наһаа элбэхтик бэйэҥ ааккын билиһиннэрэ сатаатыҥ.
Бука диэн кыратык тохтуу түһэн баран өссө боруобалаа.',
'loginlanguagelabel' => 'Омугун тыла: $1',
+'suspicious-userlogout' => 'Сеансы түмүктүүр ыйытыгыҥ ылыныллыбата, тоҕо диэтэххэ браузер эбэтэр кээштыыр прокси алҕас ыыппыт ыйытыктарыгар майгынныыр.',
# Password reset dialog
'resetpass' => 'Киирии тылы уларытыы',
@@ -506,18 +534,13 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
'resetpass_submit' => 'Киирии тылы уларыт уонна киир',
'resetpass_success' => 'Your password has been changed successfully! Now logging you in...
Киирии тылыҥ этэҥҥэ уларыйда. Сотору кэминэн киириэҥ...',
-'resetpass_bad_temporary' => 'Быстах кэмҥэ туттуллар киирии тыл эргэрбит. Арааһа саҥа киирии тылы олохтообуккун быһылаах.
-Киирии тылы саҥаттан көрдөөн ылыаххын сөп.',
'resetpass_forbidden' => 'Киирии тылы уларытар сатаммат',
'resetpass-no-info' => 'Ааккын билиһиннэрдэххинэ эрэ бу сирэйгэ быһа тиийиэххин сөп.',
'resetpass-submit-loggedin' => 'Киирии тылы уларытыы',
+'resetpass-submit-cancel' => 'Салҕаама',
'resetpass-wrong-oldpass' => 'Киирии тыл сөп түбэспэтэ.
Баҕар уларыппытыҥ буолуо эбэтэр быстах кэмҥэ туттуллар киирии тылы оҥотторбутуҥ буолуо.',
'resetpass-temp-password' => 'Быстах кэмҥэ туттуллар киирии тыл:',
-'resetpass-log' => 'Киирии тыллары уларытыы сурунаала',
-'resetpass-logtext' => 'Аллара сурунаалга киирии тылларын дьаһабыллар уларыппыт дьоннорун тиһигэ көстөр.',
-'resetpass-logentry' => '$1 киирии тылын уларыппыт',
-'resetpass-comment' => 'Киирии тылы уларытыы төрүөтэ:',
# Edit page toolbar
'bold_sample' => 'Модьу бичик',
@@ -590,7 +613,6 @@ IP-аадырыһыҥ $3, бобуу нүөмэрэ — #$5.
'blockededitsource' => "Манна '''$1''' сирэйгэ '''эн уларытыыларыҥ''' көрдөрүлүннулэр:",
'whitelistedittitle' => 'Уларытарга киириэххин наада',
'whitelistedittext' => 'Улатыаххын баҕарар буоллаххына маны $1 гын.',
-'confirmedittitle' => 'Эл. почтаҥ аадырыһын бигэргэт',
'confirmedittext' => 'Уларытарга эл. почтаҥ аадырыһын бигэргэтиэхтээххин. Бастаан [[Special:Preferences|манна]] киирэн бэйэн ааккын уонна эл. почтаҕын суруй. Онтон эл. аадырыскын бигэргэт.',
'nosuchsectiontitle' => 'Бу салаа көстүбэтэ',
'nosuchsectiontext' => 'Суох сирэйи эрэдээксийэлии сатыыгын.
@@ -614,10 +636,17 @@ IP-аадырыһа эрэ көстөр.
Бу аат атын ыстатыйалга туттулларын [[Special:Search/{{PAGENAME}}|булуоххун сөп]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} сурунаалларга көрдүөххүн сөп],
эбэтэр [{{fullurl:{{FULLPAGENAME}}|action=edit}} маннык ааттаах саҥа ыстатыйаны суруйуоххун] сөп</span>.',
+'noarticletext-nopermission' => 'Билигин бу сирэй кураанах.
+Бу [[Special:Search/{{PAGENAME}}|тылы атын сирэйдэргэ көрдөөн көрүөххүн]] сөп,
+эбэтэр <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} сурунаалларга манна сыһыаннаах суруктары булуоххун сөп].</span>',
'userpage-userdoesnotexist' => '"$1" аат бэлиэтэммэтэх. Бу сирэйи оҥорор/уларытар баҕалааххын дуо?',
+'userpage-userdoesnotexist-view' => '"$1" кыттааччы аата бэлиэтэниллибэтэх.',
+'blocked-notice-logextract' => 'Бу кыттааччы билигин бобуллубут.
+Манна бобуу сурунаалын бүтэһик суруга көстөр:',
'clearyourcache' => "'''Болҕой - Уларыппыт сирэйгин сөпкө көрөргө интэриниэт бырагыраамматын кээһин ыраастаа.''' '''Mozilla / Firefox / Safari:''' ''Shift'' кнопканы тутан туран ''Reload'' баттаа, эбэтэр ''Ctrl-F5'', ''Ctrl-R'' дуу (Macintosh-ка ''Command-R'') баттаа; '''Konqueror: ''' ''Reload'' ''F5'' эбэтэр баттаа;
'''Opera:''' кээһин ыраастыырга манна ''Tools → Preferences'' киир; '''Internet Explorer:''' ''Ctrl'' тутан туран ''Refresh'' баттаа, эбэтэр ''Ctrl-F5'' баттаа.",
-'usercssjsyoucanpreview' => "'''Көмө:''' Саҥа css- эбэтэр js-билэни тургутуоххун баҕардаххына эрдэ көрөр тимэҕи баттаа.",
+'usercssyoucanpreview' => "'''Көмө.''' CSS-билэ саҥа барылын бигэргэтиэҥ иннинэ бу тимэҕи «{{int:showpreview}}» баттаан тургутан көр.",
+'userjsyoucanpreview' => "'''Көмө.''' JS-билэ саҥа барылын бигэргэтиэҥ иннинэ бу тимэҕи «{{int:showpreview}}» баттаан тургутан көр.",
'usercsspreview' => "'''Умнума: бу CSS тургутуута эрэ.
Билигин оҥорбутуҥ бигэргэтиллэ илик!'''",
'userjspreview' => "'''Умнума: бу JavaScript тургутуутэ эрэ, уларыппытыҥ бигэргэтиллэ илик!'''",
@@ -667,13 +696,16 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
Билигин уларытыыгын бэйэҥ диискэҕэр хаалларан баран, кэлин манна уган биэриэххин сөп.'''
Дьаһабыл маннык быһаарбыт: $1",
-'protectedpagewarning' => "'''СЭРЭТИИ: Бу сирэй хатанан турар, администратордар эрэ уларытар кыахтаахтар.'''",
-'semiprotectedpagewarning' => "'''Биллэрии:''' Бу сирэй хатанан турар, ааттарын билиһиннэрбит эрэ кыттааччылар уларытар кыахтаахтар.",
+'protectedpagewarning' => "'''Сэрэтии: Бу сирэй хатанан турар, администратор бырааптаах эрэ кыттааччылар уларытар кыахтаахтар.'''
+Аллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
+'semiprotectedpagewarning' => "'''Биллэрии:''' Бу сирэй хатанан турар; ааттарын билиһиннэрбит эрэ кыттааччылар уларытар кыахтаахтар.
+Аллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
'cascadeprotectedwarning' => "'''Сэрэтии:''' Бу сирэйи \"дьаһабыллар\" бөлөххө киирэр кыттааччылар эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:\$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
-'titleprotectedwarning' => "'''СЭРЭТИИ: Маннык ааттаах сирэйи уларытар бобуллубут, [[Special:ListGroupRights|анал бырааптаах эрэ дьон]] уларытыан сөп .'''",
-'templatesused' => 'Манна туттуллубут халыыптар:',
-'templatesusedpreview' => 'Манна туттуллубут халыыптар:',
-'templatesusedsection' => 'Манна туттуллубут халыыптар:',
+'titleprotectedwarning' => "'''Сэрэтии: Маннык ааттаах сирэйи уларытар бобуллубут, [[Special:ListGroupRights|анал бырааптаах эрэ дьон]] уларытыахтарын сөп .'''
+Аллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
+'templatesused' => 'Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} :',
+'templatesusedpreview' => 'Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} бигэргэтиэх иннинэ көстүүлэрэ:',
+'templatesusedsection' => 'Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}}:',
'template-protected' => '(хатаммыт)',
'template-semiprotected' => '(хатаммыт аҥардаах)',
'hiddencategories' => 'Бу сирэй кистэммит {{PLURAL:$1|1 категорияҕа|$1 категорияларга}} киирэр:',
@@ -682,15 +714,18 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'nocreatetext' => '{{SITENAME}} саайтыгар саҥа сирэйи оҥорор хааччахтанар.
Баар сирэйи уларытыаххын сөп, эбэтэр [[Special:UserLogin|манна бэлиэтэниэххин эбэтэр атын аатынан киириэххин сөп]].',
'nocreate-loggedin' => 'Эн саҥа сирэйи оҥорор кыаҕыҥ өссө суох.',
+'sectioneditnotsupported-title' => 'Салаалары уларытыы манна сатаммат',
+'sectioneditnotsupported-text' => 'Бу сирэйгэ салаалары уларытар кыаллыбат',
'permissionserrors' => 'Көҥүллээһин моһуогурда',
'permissionserrorstext' => 'Маны оҥорор кыаҕыҥ суох, {{PLURAL:$1|төрүтэ|төрүттэрэ}}:',
'permissionserrorstext-withaction' => 'Бу дьайыыны ($2) оҥорор кыаҕыҥ суох. {{PLURAL:$1|Биричиинэтэ|Биричиинэлэрэ}}:',
-'recreate-deleted-warn' => "'''Болҕой: сотулубут сирэйи төттөрү оҥорон эрэҕин.'''
+'recreate-moveddeleted-warn' => "'''Болҕой: сотулубут сирэйи төттөрү оҥорон эрэҕин.'''
-Толкуйдаан баран оҥор. Аллара сотуулар сурунааллара көрдөрүлүннэ.",
-'deleted-notice' => 'Бу сирэй сотуллубут.
-Аллара сотуу сурунаалыгар онно сыһыаннаах туох суруллубута көстөр.',
-'deletelog-fulllog' => 'Сурунаалы бүтүннүү көрөргө',
+Толкуйдаан көр, кырдьык бу сирэйи оҥорор туһалаах дуо.
+Аллара сотуулар уонна аат уларыйыытын сурунааллара көрдөрүлүннэ.",
+'moveddeleted-notice' => 'Бу сирэй сотуллубут.
+Аллара сотуу уонна аат уларытыытын сурунаалларыгар онно сыһыаннаах туох суруллубута көстөр.',
+'log-fulllog' => 'Сурунаалы барытын көрүү',
'edit-hook-aborted' => 'Көннөрүү төттөрү көннөрүллүбүт.
Эбии туох да быһаарыллыбатах.',
'edit-gone-missing' => 'Сирэйи саҥардар кыах суох.
@@ -713,6 +748,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'post-expand-template-argument-category' => 'Толоруллубатах (көтүтүллүбүт) аргуменнаах сирэйдэр',
'parser-template-loop-warning' => 'Халыыптар бэйэ бэйлэригэр сигэниилэрэ (петля) булулунна: [[$1]]',
'parser-template-recursion-depth-warning' => '($1) халыып рекурсиятын муҥура бүппүт (Превышен предел глубины рекурсии)',
+'language-converter-depth-warning' => 'Тыл конвертерын дириҥин хааччаҕа куоһарыллыбыт ($1)',
# "Undo" feature
'undo-success' => 'Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.',
@@ -732,7 +768,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'currentrev' => 'Билиҥҥи барыл',
'currentrev-asof' => 'Билиҥҥи торум манна: $1',
'revisionasof' => '$1 барыл',
-'revision-info' => 'Версия от $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Версия от $1; $2',
'previousrevision' => '←Инники барыл',
'nextrevision' => 'Аныгыскы барыл→',
'currentrevisionlink' => 'Билиҥҥи барыл',
@@ -745,7 +781,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
Легенда: (cur) = билигин баар торумтан атына,
(бүтэһик) = инники баар торумтан атына, М. = улахан суолтата суох көннөрүү.',
'history-fieldset-title' => 'Историятын көрүү',
-'deletedrev' => '[сотуллубут]',
+'history-show-deleted' => 'Сотуллубуттары эрэ',
'histfirst' => 'Эрдэтээҥи',
'histlast' => 'Соторутааҥы',
'historysize' => '({{PLURAL:$1|1 байт|$1 баайтаах}})',
@@ -754,75 +790,116 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
# Revision feed
'history-feed-title' => 'Уларытыы историята',
'history-feed-description' => 'Бу сирэй Биикигэ уларыйыытын историята',
-'history-feed-item-nocomment' => '$1 манна $2', # user at time
+'history-feed-item-nocomment' => '$1 манна $2',
'history-feed-empty' => 'Көрдүүр сирэйиҥ суох эбит.
Баҕар сотуллубута эбэтэр атын ааттаммыта буолуо.
Манна майгынныыр сирэйдэри [[Special:Search|көрдөөн]] көр.',
# Revision deletion
-'rev-deleted-comment' => '(ырытыы сотулунна)',
-'rev-deleted-user' => '(кыттааччы аата сотулунна)',
-'rev-deleted-event' => '(бэлиэтээһин дьайыыта сотулунна)',
-'rev-deleted-text-permission' => "Ыстатыйа бу барыла '''аһаҕас архыыптан сотуллубут'''.
-Быһаарыыта [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
-'rev-deleted-text-view' => "Ыстатыйа бу торума '''аһаҕас архыыптан сотуллубут'''.
-Ол эрэн эн {{SITENAME}} дьаһабыла буоларыҥ быһыытынан ону көрүөххүн сөп.
-Тоҕо сотуллубутун быһаарыыта [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
-'rev-deleted-no-diff' => "Барыллар бу сирэйдэрин көрөр кыаҕыҥ суох, тоҕо диэтэххэ сирэй биир барыла '''аһаҕас архыыптан сотуллубут'''.
-Сиһилии [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} сотуу сурунаалыгар] суруллубут буолуон сөп.",
-'rev-deleted-unhide-diff' => "Сирэй барылларыттан биирдэстэрэ '''сотуллубут'''.
-Баҕар ол туһунан [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} сотуу сурунаалыгар] баара буолуо.
+'rev-deleted-comment' => '(ырытыы сотулунна)',
+'rev-deleted-user' => '(кыттааччы аата сотулунна)',
+'rev-deleted-event' => '(бэлиэтээһин дьайыыта сотулунна)',
+'rev-deleted-user-contribs' => '[кыттааччы аата эбэтэр IP-аадырыһа сотуллубуттар — уларытыы көстүбэт оҥоһуллубут]',
+'rev-deleted-text-permission' => "Сирэй бу барыла '''сотуллубут'''.
+Быһаарыыта [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
+'rev-deleted-text-unhide' => "Сирэй ити барыла '''сотуллубут'''.
+Баҕар ол туһунан [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} сотуу сурунаалыгар] баара буолуо.
+Ол да буоллар эн дьаһабыл буоларыҥ быһыытынан [$1 барылы көрүөххүн сөп].",
+'rev-suppressed-text-unhide' => "Сирэй бу барыла '''кистэммит'''.
+Быһаарыы баҕара [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баара буолуо.
+Эн дьаһабыл буоларыҥ быһыытынан [ол барылы көрүөххүн $1] сөп.",
+'rev-deleted-text-view' => "Ыстатыйа бу барыла '''сотуллубут'''.
+Ол эрэн эн дьаһабыл буоларыҥ быһыытынан ону көрүөххүн сөп.
+Тоҕо сотуллубутун быһаарыыта [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
+'rev-suppressed-text-view' => "Сирэй бу барыла '''кистэммит'''.
+Эн дьаһабыл буоларыҥ быһыытынан ол барылы көрүөххүн сөп. Быһаарыы баҕар [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баара буолуо.",
+'rev-deleted-no-diff' => "Барыллар ыккардыларынааҕы уратылары көрөр кыаҕыҥ суох, тоҕо диэтэххэ барыллартан биирэ '''сотуллубут'''.
+Сиһилии [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} бу сурунаалга] суруллубут буолуон сөп.",
+'rev-suppressed-no-diff' => "Бу барыллар уратыларын тэҥниир кыах суох, биир барыл '''сотуллубут'''.",
+'rev-deleted-unhide-diff' => "Сирэй барылларыттан биирдэстэрэ '''сотуллубут'''.
+Баҕар ол туһунан [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} бу сурунаалга] баара буолуо.
Ол да буоллар эн дьаһабыл буоларыҥ быһыытынан [$1 барылы көрүөххүн сөп].",
-'rev-delundel' => 'көрдөр/кистээ',
-'revisiondelete' => 'Соторго/торуму төнүннэрэргэ',
-'revdelete-nooldid-title' => 'Барыл чопчу ыйыллыбата',
-'revdelete-nooldid-text' => 'Бу дьайыыны оҥорорго торуму (торумнары) чуолаан ыйбатаххын,
+'rev-suppressed-unhide-diff' => "Бу тэҥнээһин биир барыла '''көстүбэтэтэ'''.
+Сиһилии [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баар буолуон сөп.
+Дьаһабыл буоларыҥ быһыытынан [$1 барыллар уратыларын] син биир көрүөххүн сөп.",
+'rev-deleted-diff-view' => "Барыллартан биирдэстэрэ '''сотуллубут'''.
+Дьаһабыл буоларыҥ быһыытынан тэҥнээн көрүөххүн сөп, сиһилии манна [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} сотуу сурунаалыгар] баар буолуон сөп.",
+'rev-suppressed-diff-view' => "Барыллартан биирдэстэрэ '''кистэммит'''.
+Дьаһабыл буоларыҥ быһыытынан тэҥнээн көрүөххүн сөп, сиһилии манна [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баар буолуон сөп.",
+'rev-delundel' => 'көрдөр/кистээ',
+'rev-showdeleted' => 'көрдөр',
+'revisiondelete' => 'Соторго/торуму төнүннэрэргэ',
+'revdelete-nooldid-title' => 'Барыл чопчу ыйыллыбата',
+'revdelete-nooldid-text' => 'Бу дьайыыны оҥорорго торуму (торумнары) чуолаан ыйбатаххын,
эбэтэр торум ончу суох, эбэтэр кистэммит торум.',
-'revdelete-nologtype-title' => 'Сурунаал көрүҥэ ыйыллыбатах',
-'revdelete-nologtype-text' => 'Дьайыыны оҥорор сурунаалыҥ көрүҥүн эппэтэххин.',
-'revdelete-toomanytargets-title' => 'Наһаа элбэх сорук',
-'revdelete-toomanytargets-text' => 'Дьайыыны оҥорорго наһаа элбэх сорук көрүҥүн ыйбыккын',
-'revdelete-nologid-title' => 'Сурунаал сыыһа суруга',
-'revdelete-nologid-text' => 'Сурунаалга суруллуохтаах сурук туох эрэ сыыһалаах эбэтэр ол сурук олох да суох.',
-'revdelete-selected' => "'''[[:$1]] сирэй {{PLURAL:$2|талыллыбыт торума|талыллыбыт торумнара}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Сирэй талыллыбыт историята|Сирэй талыллыбыт историялара}}:'''",
-'revdelete-text' => "'''Сотуллубут барыллар сирэй историятыгар киириэхтэрэ,
-ол гынан баран сорох барыллар көннөрү киһиэхэ көстүөхтэрэ суоҕа.'''
-
-{{SITENAME}} дьаһабыллара кистэммит суруктары көрөр уонна сотуллубуту төттөрү төннөрөр кыахтаахтар
-(эбии хааччахтааһын турбатах буоллаҕына).
-Бука диэн бу дьайыыны чахчы онороору гынаргын, содулларын өйдүүргүн уонна [[{{MediaWiki:Policy-url}}|быраабылалары]] кэспэккин өссө биирдэ ырыҥалаан көр.",
-'revdelete-suppress-text' => "Кистээһин маннык түбэлтэлэргэ '''эрэ''' оҥоһуллар:
+'revdelete-nologtype-title' => 'Сурунаал көрүҥэ ыйыллыбатах',
+'revdelete-nologtype-text' => 'Дьайыыны оҥорор сурунаалыҥ көрүҥүн эппэтэххин.',
+'revdelete-nologid-title' => 'Сурунаал сыыһа суруга',
+'revdelete-nologid-text' => 'Сурунаалга суруллуохтаах сурук туох эрэ сыыһалаах эбэтэр ол сурук олох да суох.',
+'revdelete-no-file' => 'Ыйыллыбыт билэ суох.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" билэ баччаҕа $2, $3 сотуллубут барылын көрүөххүн баҕараҕын дуо?',
+'revdelete-show-file-submit' => 'Сөп',
+'revdelete-selected' => "'''[[:$1]] сирэй {{PLURAL:$2|талыллыбыт торума|талыллыбыт торумнара}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Сирэй талыллыбыт историята|Сирэй талыллыбыт историялара}}:'''",
+'revdelete-text' => "'''Сотуллубут барыллар сирэй историятыгар киириэхтэрэ, ол гынан баран сорох барыллар көннөрү киһиэхэ көстүөхтэрэ суоҕа.'''
+{{SITENAME}} дьаһабыллара кистэммит суруктары көрөр уонна сотуллубуту төттөрү төннөрөр кыахтаахтар (эбии хааччахтааһын турбатах буоллаҕына).",
+'revdelete-confirm' => 'Бука диэн кырдьык бу дьайыыны онороргун, содула туох буоларын өйдүүргүн уонна [[{{MediaWiki:Policy-url}}|сиэри]] тутуһаргын бигэргэт.',
+'revdelete-suppress-text' => "Кистээһин маннык түбэлтэлэргэ '''эрэ''' оҥоһуллар:
* Бэйэ туһунан тоҕооһо суохтук суруллубут буоллаҕына
*: ''дьиэтин аадырыһа, төлөппүөннэрин нүөмэрэ, пааспарын нүөмэрэ уо.д.а.''",
-'revdelete-legend' => 'Хааччахтары туруоруу:',
-'revdelete-hide-text' => 'Сирэй бу торумун кистээ',
-'revdelete-hide-name' => 'Дьайыыны уонна дьайыы сыалын кистээ.',
-'revdelete-hide-comment' => 'Ырытыыны кистээ',
-'revdelete-hide-user' => 'Ааппын/IP-бын көрдөрүмэ',
-'revdelete-hide-restricted' => 'Маны дьаһабыллартан эмиэ кистииргэ',
-'revdelete-suppress' => 'Бу суругу администратордартан эмиэ кистээ',
-'revdelete-hide-image' => 'Билэ иһин кистээ',
-'revdelete-unsuppress' => 'Төннөрүллүбүт торумнартан хааччахтааһыны ылан кэбиһэргэ',
-'revdelete-log' => 'Төрүөтэ:',
-'revdelete-submit' => 'Маны талбыт торуммар тутун',
-'revdelete-logentry' => '[[$1]] сирэй торумун көстүүтэ уларыйда',
-'logdelete-logentry' => '[[$1]] дьайыы көстүүтэ уларыйда',
-'revdelete-success' => "'''Барыл көстүүтэ сөпкө уларыйда.'''",
-'logdelete-success' => "'''Дьайыы көстүүтэ сөпкө уларыйда.'''",
-'revdel-restore' => 'Көстүүтүн уларытыы',
-'pagehist' => 'Историятын сирэйэ',
-'deletedhist' => 'Сотуллубут история',
-'revdelete-content' => 'иһинээҕитэ',
-'revdelete-summary' => 'уларытыылар туһунан',
-'revdelete-uname' => 'аата',
-'revdelete-restricted' => 'хааччахтааһын администраатардарга сыһыаннаах',
-'revdelete-unrestricted' => 'хааччахтааһын админстраатардартан уһулунна',
-'revdelete-hid' => 'кистэммит $1',
-'revdelete-unhid' => 'аһыллыбыт $1',
-'revdelete-log-message' => '$2 аналлаах $1 {{PLURAL:$2|торум|торумнар}}',
-'logdelete-log-message' => '$2 аналлаах (сыһыаннаах) $1 {{PLURAL:$2|түбэлтэ|түбэлтэлэр}}',
+'revdelete-legend' => 'Хааччахтары туруоруу:',
+'revdelete-hide-text' => 'Сирэй бу торумун кистээ',
+'revdelete-hide-image' => 'Билэ иһин кистээ',
+'revdelete-hide-name' => 'Дьайыыны уонна дьайыы сыалын кистээ.',
+'revdelete-hide-comment' => 'Ырытыыны кистээ',
+'revdelete-hide-user' => 'Ааппын/IP-бын көрдөрүмэ',
+'revdelete-hide-restricted' => 'Маны дьаһабыллартан эмиэ кистииргэ',
+'revdelete-radio-same' => '(уларыппакка)',
+'revdelete-radio-set' => 'Сөп',
+'revdelete-radio-unset' => 'Суох',
+'revdelete-suppress' => 'Бу суругу администратордартан эмиэ кистээ',
+'revdelete-unsuppress' => 'Төннөрүллүбүт торумнартан хааччахтааһыны ылан кэбиһэргэ',
+'revdelete-log' => 'Төрүөтэ:',
+'revdelete-submit' => 'Маны талбыт {{PLURAL:$1|барылбар|барылларбар}} тутун',
+'revdelete-logentry' => '[[$1]] сирэй торумун көстүүтэ уларыйда',
+'logdelete-logentry' => '[[$1]] дьайыы көстүүтэ уларыйда',
+'revdelete-success' => "'''Барыл көстүүтэ сөпкө уларыйда.'''",
+'revdelete-failure' => "'''Барыл хайдах көстөрө кыайан уларытыллыбат:'''
+$1",
+'logdelete-success' => "'''Дьайыы көстүүтэ сөпкө уларыйда.'''",
+'logdelete-failure' => "'''Сурунаал дөбөҥө быһаарыллыбата:'''
+$1",
+'revdel-restore' => 'Көстүүтүн уларытыы',
+'pagehist' => 'Историятын сирэйэ',
+'deletedhist' => 'Сотуллубут история',
+'revdelete-content' => 'иһинээҕитэ',
+'revdelete-summary' => 'уларытыылар туһунан',
+'revdelete-uname' => 'аата',
+'revdelete-restricted' => 'хааччахтааһын администраатардарга сыһыаннаах',
+'revdelete-unrestricted' => 'хааччахтааһын админстраатардартан уһулунна',
+'revdelete-hid' => 'кистэммит $1',
+'revdelete-unhid' => 'аһыллыбыт $1',
+'revdelete-log-message' => '$2 аналлаах $1 {{PLURAL:$2|торум|торумнар}}',
+'logdelete-log-message' => '$2 аналлаах (сыһыаннаах) $1 {{PLURAL:$2|түбэлтэ|түбэлтэлэр}}',
+'revdelete-hide-current' => 'Баччаҕа оҥоһуллубут $2, $1 сурук кистээһинигэр алҕас таҕыста: бу билиҥҥи барыл.
+Онон кистэнэр кыаҕа суох.',
+'revdelete-show-no-access' => 'Баччаҕа оҥоһуллубут суругу $2, $1 көстөр гынарга алҕас таҕыста: бу сурук "хааччахтаах" курдук бэлиэтэммит.
+Оттон эн оннук суруктары көрөр кыаҕыҥ суох эбит.',
+'revdelete-modify-no-access' => 'Баччаҕа оҥоһуллубут суругу $2, $1 уларытарга алҕас таҕыста: бу сурук "хааччахтаах" курдук бэлиэтэммит.
+Оттон эн оннук суруктары көрөр кыаҕыҥ суох эбит.',
+'revdelete-modify-missing' => 'Маннык нүөмэрдээх ID $1 суругу уларытыы сатаммата, оннук сурук суох буолан биэрдэ!',
+'revdelete-no-change' => "'''Болҕой:''' баччатааҕы $2, $1 сурукка көрдүүр туруорууларгын хайыы-үйэ ким эрэ туруорбут.",
+'revdelete-concurrent-change' => 'Баччаҕа оҥоһуллубут суругу $2, $1 уларытарга алҕас таҕыста: бу сурук туругун ким эрэ хайыы үйэ эн иннигинэ уларыта охсубут.
+Бука диэн сурунааллары көр эрэ.',
+'revdelete-only-restricted' => 'Алҕас таҕыста ($2 $1): Бу суругу дьаһабыллар көрбөттөрүн курдук оҥорорго кистээһин ханнык эмэ туруоруутун талыахха наада.',
+'revdelete-reason-dropdown' => '*Сотуу төрүөттэрэ сүнньүнэн
+** Ааптар быраабын күөмчүлээһин
+** Тустаах киһи туһунан киэҥ эйгэҕэ тахсыбат билии',
+'revdelete-otherreason' => 'Атын/эбии төрүөт:',
+'revdelete-reasonotherlist' => 'Атын төрүөт',
+'revdelete-edit-reasonlist' => 'Сотуу төрүөтүн уларыт',
+'revdelete-offender' => 'Барыл ааптара:',
# Suppression log
'suppressionlog' => 'Кистээһин сурунаала',
@@ -859,67 +936,13 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'mergelogpagetext' => 'Манна сирэйдэр устуоруйаларын бүтэһик силлэһиилэрин тиһигэ бэриллэр.',
# Diffs
-'history-title' => 'Көннөрүү историята "$1"',
-'difference' => '(Торумнар бэйэ-бэйэлэриттэн уратылара)',
-'lineno' => '$1 строка:',
-'compareselectedversions' => 'Талыллыбыт торумнары тэҥнээ',
-'visualcomparison' => 'Хараҕынан тэҥнээһин',
-'wikicodecomparison' => 'Биики тиэкиһин тэҥнээһин',
-'editundo' => 'төнүн',
-'diff-multi' => '({{PLURAL:$1|$1 орто торум көрдөрүллүбэтэ|$1 орто торумнар көрдөрүллүбэтилэр|$1.}})',
-'diff-movedto' => 'маннык суруллубут $1',
-'diff-styleadded' => '$1 истиил эбиллибит',
-'diff-added' => '$1 эбиллибит',
-'diff-changedto' => 'манныкка уларытыллыбыт: $1',
-'diff-movedoutof' => 'мантан ылыллыбыт $1',
-'diff-styleremoved' => '$1 истиил сотуллубут/сотулунна',
-'diff-removed' => '$1 сотулунна',
-'diff-changedfrom' => '$1 мантан уларыйда',
-'diff-src' => 'ылыллыбыт сирэ',
-'diff-withdestination' => '$1 анааһыннаах',
-'diff-with' => '&#32;маннык атрибуттаах $1 $2',
-'diff-with-final' => '&#32;уонна $1 $2',
-'diff-width' => 'кэтитэ',
-'diff-height' => 'үрдүгэ',
-'diff-p' => "'''апсаас'''",
-'diff-blockquote' => "'''сытаата'''",
-'diff-h1' => "'''бас тыл (1 араҥа)'''",
-'diff-h2' => "'''бас тыл (2 араҥа)'''",
-'diff-h3' => "'''бас тыл (3 араҥа)'''",
-'diff-h4' => "'''бас тыл (4 араҥа)'''",
-'diff-h5' => "'''бас тыл (5 араҥа)'''",
-'diff-pre' => "'''эрдэттэн формааттаммыт блок'''",
-'diff-div' => "'''түһүмэх'''",
-'diff-ul' => "'''сааһыламматах тиһик'''",
-'diff-ol' => "'''сааһыламмыт тиһик'''",
-'diff-li' => "'''тиһик элэмиэнэ'''",
-'diff-table' => "'''табылыысса'''",
-'diff-tbody' => "'''табылыысса иһинээҕитэ'''",
-'diff-tr' => "'''устуруока'''",
-'diff-td' => "'''ячейка'''",
-'diff-th' => "'''аата'''",
-'diff-br' => "'''быстыыта'''",
-'diff-hr' => "'''сытыары сурааһын'''",
-'diff-code' => "'''көмпүүтэр куодун бобуу'''",
-'diff-dl' => "'''суолталарын тиһигэ'''",
-'diff-dt' => "'''суолтата быһаарыллар тиэрмин'''",
-'diff-dd' => "'''суолтата'''",
-'diff-input' => "'''киллэрии'''",
-'diff-form' => "'''тас көстүүтэ, быһыыта'''",
-'diff-img' => "'''ойуу'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''сигэ'''",
-'diff-i' => "'''иҥнэри'''",
-'diff-b' => "'''модьу'''",
-'diff-strong' => "'''модьу бичик'''",
-'diff-em' => "'''em''' бэлиэтээһин",
-'diff-font' => "'''бичик'''",
-'diff-big' => "'''бөдөҥ'''",
-'diff-del' => "'''сотулунна'''",
-'diff-tt' => "'''бэлиэлэрин кэтитэ биир тэҥ бичик'''",
-'diff-sub' => "'''кыра алын бичик'''",
-'diff-sup' => "'''кыра үөһээ бичик'''",
-'diff-strike' => "'''сотуллубут бичик'''",
+'history-title' => 'Көннөрүү историята "$1"',
+'difference' => '(Торумнар бэйэ-бэйэлэриттэн уратылара)',
+'lineno' => '$1 строка:',
+'compareselectedversions' => 'Талыллыбыт торумнары тэҥнээ',
+'showhideselectedversions' => 'Талыллыбыт барыллары көрдөр/кистээ',
+'editundo' => 'төнүн',
+'diff-multi' => '({{PLURAL:$1|$1 орто торум көрдөрүллүбэтэ|$1 орто торумнар көрдөрүллүбэтилэр|$1.}})',
# Search results
'searchresults' => 'Булулунна',
@@ -927,28 +950,25 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'searchresulttext' => 'Көрдөөһүн туһунан сиһилии ааҕыаххын баҕардаххына [[{{MediaWiki:Helppage}}|маны]] көр.',
'searchsubtitle' => 'Эн [[:$1]] көмөтүнэн ([[Special:Prefixindex/$1|"$1" саҕаланар сирэйдэри ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" сигэнэр сирэйдэри]]) көрдөөбүтүҥ',
'searchsubtitleinvalid' => 'По запросу «$1»',
-'noexactmatch' => "'''«\$1» ааттаах сирэй суох.''' <span style=\"display: block; margin: 1.5em 2em\"> [[:\$1|Саҥа сирэйи оҥорорго]]</span>",
-'noexactmatch-nocreate' => "'''Маннык ааттаах: \"\$1\" сирэй суох.'''",
'toomanymatches' => 'Наһаа элбэх ыйытыы төнүннэ, бука диэн атыннык көрдөө',
'titlematches' => 'Ыстатыйалар ааттара хоһулаһар',
'notitlematches' => 'Ыстатыйалар ааттара хоһуласпаттар',
'textmatches' => 'Ыстатыйалар истэрэ хатыланар',
'notextmatches' => 'Ыстатыйалар истэрэ хатыламмат',
-'prevn' => 'инники $1',
-'nextn' => 'аныгыскы $1',
+'prevn' => 'инники {{PLURAL:$1|$1}}',
+'nextn' => 'аныгыскы {{PLURAL:$1|$1}}',
'prevn-title' => 'Бу иннинээҕи $1 {{PLURAL:$1|сурук|суруктар}}',
'nextn-title' => 'Бу кэннинээҕи $1 {{PLURAL:$1|сурук|суруктар}}',
'shown-title' => 'Сирэйгэ $1 {{PLURAL:$1|суругу|суруктары}} көрдөр',
-'viewprevnext' => 'Көр ($1) ($2) ($3).',
+'viewprevnext' => 'Көр ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Көрдөөһүн туруоруулара',
'searchmenu-exists' => "'''Бу биикигэ бу сирэй маннык ааттаах \"[[\$1]]\"'''",
'searchmenu-new' => "'''Бу биикигэ \"[[:\$1]]\" сирэйи айарга!'''",
'searchhelp-url' => 'Help:Көмө',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Маннык префикстаах сирэйдэри көрөргө]]',
-'searchprofile-articles' => 'Ыстатыйаларынан',
-'searchprofile-articles-and-proj' => 'Ыстатыйаларынан уонна бырайыак сирэйдэрин иһинэн',
-'searchprofile-project' => 'Бырайыак сирэйдэринэн',
-'searchprofile-images' => 'Билэлэр',
+'searchprofile-articles' => 'Ыстатыйалар истэрэ',
+'searchprofile-project' => 'Көмө уонна Бырайыак сирэйдэрэ',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Барыта',
'searchprofile-advanced' => 'Дириҥэтиллибит',
'searchprofile-articles-tooltip' => 'Манна $1 көрдөөһүн',
@@ -956,8 +976,6 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'searchprofile-images-tooltip' => 'Билэлэри көрдөөһүн',
'searchprofile-everything-tooltip' => 'Сирэйдэргэ барытыгар (ырытыы гиэннэригэр эмиэ) көрдөөһүн',
'searchprofile-advanced-tooltip' => 'Этиллибит аат далларыгар көрдөөһүн',
-'prefs-search-nsdefault' => 'Эрдэттэн туруоруулары туһанан көрдөөһүн:',
-'prefs-search-nscustom' => 'Эрдэттэн этиллибит аат далларыгар көрдөөһүн:',
'search-result-size' => '$1 ({{PLURAL:$2|1 тыл|$2 тыл}})',
'search-result-score' => 'Релевантноһа: $1%',
'search-redirect' => '(утаарыы $1)',
@@ -970,11 +988,12 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'search-mwsuggest-disabled' => 'этиилэрэ суох',
'search-relatedarticle' => 'Сигэнэр',
'mwsuggest-disable' => 'AJAX этэн биэриилэрин араар',
+'searcheverything-enable' => 'Туох баар аат далларыгар көрдөөһүн',
'searchrelated' => 'сибээстэммит',
'searchall' => 'бары',
'showingresults' => 'Манна {{PLURAL:$1|түмүк|түмүктэр}} {{PLURAL:$1|көрдөрүлүннэ|көрдөрүлүннүлэр}} <strong>$1</strong> , мантан саҕалаан №&nbsp;<strong>$2</strong>.',
'showingresultsnum' => 'Манна {{PLURAL:$3|түмүк|түмүктэр}} {{PLURAL:$3|көрдөрөлүннэ|көрдөрүлүннүлэр}} <strong>$3</strong>, мантан саҕалаан №&nbsp;<strong>$2</strong>.',
-'showingresultstotal' => "Аллара {{PLURAL:$4|'''$3''' '''$1''' түмүк|'''$3''' '''$1 - $2''' түмүк}} көрдөрүлүннэ",
+'showingresultsheader' => "'''$4''' анаммыт {{PLURAL:$5|мантан '''$3''' түмүгэ - '''$1'''|мантан '''$3''' түмүктэрэ '''$1 - $2'''}}",
'nonefound' => "'''Болҕой:''' Анаан эппэтэххэ көрдөөһүн аат сорох далларыгар эрэ көрдүүр. Бу сыһыарыыны ''all:'' тутуннаххына аат туох баар далларыгар барытыгар (холобур, кыттаачылар ырыытыыларыгар, халыыптарга иҥин) көрдүөҕэ.",
'search-nonefound' => 'Көрдөбүлгэ эппиэттиир билэлэр көстүбэтилэр.',
'powersearch' => 'Бу бөлөхтөргө көрдөө',
@@ -982,111 +1001,151 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'powersearch-ns' => 'Аат далыгар көрдөө:',
'powersearch-redir' => 'Утаарыылар испииһэктэрэ',
'powersearch-field' => 'Көрдөөһүн',
+'powersearch-togglelabel' => 'Бэлиэтээ:',
+'powersearch-toggleall' => 'Барытын',
+'powersearch-togglenone' => 'Бэлиэтээмэ',
'search-external' => 'Тастан көрдөөһүн',
'searchdisabled' => '{{SITENAME}} көрдүүр тэрилэ араарыллыбыт. Атын көрдүүр системаларынан наадыйар сирэйдэргитин көрдөтүөххүтүн сөп. Ол гынан баран поисковик кээһигэр баар торум эргэрбит буолуон сөп.',
+# Quickbar
+'qbsettings' => 'Навигация панела',
+'qbsettings-none' => 'Көрдөрүмэ',
+'qbsettings-fixedleft' => 'Хаҥас өттө хамсаабат',
+'qbsettings-fixedright' => 'Уҥа өттө хамсаабат',
+'qbsettings-floatingleft' => 'Хаҥас өттө устаҥныыр',
+'qbsettings-floatingright' => 'Уҥа өттө устаҥныыр',
+
# Preferences page
-'preferences' => 'Уларытыылар',
-'mypreferences' => 'Туруорууларым',
-'prefs-edits' => 'Көннөрүү ахсаана:',
-'prefsnologin' => 'Ааккын эппэтиҥ',
-'prefsnologintext' => 'Эн <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ааккын эттэххинэ]</span> эрэ кыттаачы туруорууларын уларытар кыахтаныаҥ.',
-'prefsreset' => 'Саҥа киирэргэ баар туруоруулар төнүннүлэр.',
-'qbsettings' => 'Навигация панела',
-'qbsettings-none' => 'Көрдөрүмэ',
-'qbsettings-fixedleft' => 'Хаҥас өттө хамсаабат',
-'qbsettings-fixedright' => 'Уҥа өттө хамсаабат',
-'qbsettings-floatingleft' => 'Хаҥас өттө устаҥныыр',
-'qbsettings-floatingright' => 'Уҥа өттө устаҥныыр',
-'changepassword' => 'Киирии тылы уларытарга',
-'skin' => 'Тас көстүү',
-'skin-preview' => 'Хайдах буолара',
-'math' => 'Фуормулалар',
-'dateformat' => 'Дьыл-хонук формаата',
-'datedefault' => 'Көннөрү көстүүтэ',
-'datetime' => 'Күнэ-дьыла уонна кэмэ',
-'math_failure' => 'Сатаан ааҕыллыбата',
-'math_unknown_error' => 'биллибэт алҕас',
-'math_unknown_function' => 'биллибэт дьайыы (функция)',
-'math_lexing_error' => 'лексиката алҕастаах',
-'math_syntax_error' => 'синтаксис алҕаһа',
-'math_image_error' => 'PNG-га уларытыы сатаммата; latex, dvips, gs, уонна convert туруоруулара сөбүн көр',
-'math_bad_tmpdir' => 'Математика быстах кэмнээҕи директорията сатаан оҥоһуллубута',
-'math_bad_output' => 'Математика таһынааҕы директорията сатаан оҥоһуллубата',
-'math_notexvc' => 'texvc кыайан толоруллубата; маны math/README көр.',
-'prefs-personal' => 'Кыттааччы туруоруулара',
-'prefs-rc' => 'Кэлиҥҥи уларытыылар',
-'prefs-watchlist' => 'Кэтээһин',
-'prefs-watchlist-days' => 'Хас хонуктааҕы уларыйыылар кэтээһин испииһэгэр көстөллөрө:',
-'prefs-watchlist-days-max' => '(улааппыта 7 күн)',
-'prefs-watchlist-edits' => 'Хас уларытыыны тупсарыллыбыт кэтээһиҥҥэ көрдөрөрө:',
-'prefs-watchlist-edits-max' => '(улааппыта: 1000)',
-'prefs-misc' => 'Атын туруоруулар',
-'prefs-resetpass' => 'Кирии тылы уларытыы',
-'saveprefs' => 'Бигэргэт',
-'resetprefs' => 'Бигэргэтиллибэтэх уларыйыылары сот',
-'restoreprefs' => 'Туруоруулары саҥаттан',
-'textboxsize' => 'Уларытыы',
-'prefs-edit-boxsize' => 'Эрэдээксийэлиир түннүк улахана.',
-'rows' => 'Строкаалара:',
-'columns' => 'Колонкалара:',
-'searchresultshead' => 'Көрдөөһүн түмүгэ',
-'resultsperpage' => 'Сирэйгэ булуллубут суруктар ахсааннара:',
-'contextlines' => 'Булуллубут сирэй хас строкатын көрдөрөрө:',
-'contextchars' => 'Строкааҕа контекст бэлиэлэрин ахсаана:',
-'stub-threshold' => '<a href="#" class="stub">омооннорго ыйынньыктары</a> оҥоруу боруога:',
-'recentchangesdays' => 'Хас хонук иһинэн уларытыылары көрдөрөргө:',
-'recentchangesdays-max' => '(улааппыта $1 күн)',
-'recentchangescount' => 'Саҥа уларытыылар тиһиктэригэр, сирэйдэр историяларыгар уонна сурунаалларга көрдөрүллэр саҥа уларытыылар ахсааннара:',
-'savedprefs' => 'Эн туруорууларыҥ олохтоннулар.',
-'timezonelegend' => 'Олохтоох кэм:',
-'timezonetext' => '¹Олохтоох кэмиҥ сиэрбэр (Гринвич, UTC) кэмиттэн хас чаас уратылааҕын киллэр.',
-'localtime' => 'Олохтоох кэмим:',
-'timezoneselect' => 'Олохтоох кэм:',
-'timezoneuseserverdefault' => 'Сиэрбэр туруоруутунан',
-'timezoneuseoffset' => 'Атын (сыҕарыйыытын көрдөр)',
-'timezoneoffset' => 'Сыҕарыйыы¹:',
-'servertime' => 'Сиэрбэр бириэмэтэ:',
-'guesstimezone' => 'Интэриниэтим бырагыраамматыттан ылан толор',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азия',
-'timezoneregion-atlantic' => 'Атлантика байҕала',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Индия байҕала',
-'timezoneregion-pacific' => 'Чуумпу байҕал',
-'allowemail' => 'Атын кыттааччылартан сурук тутары көҥүллүүбүн',
-'prefs-searchoptions' => 'Көрдөөһүн туруоруулара',
-'prefs-namespaces' => 'Аат дала',
-'defaultns' => 'Чопчу ыйыллыбатаҕына бу ааттар быыстарыгар көрдүүргэ:',
-'default' => 'чопчу ыйыллыбатаҕына маннык',
-'files' => 'Билэлэр',
-'prefs-custom-css' => 'Бэйэ CSS',
-'prefs-custom-js' => 'Бэйэ JS',
+'preferences' => 'Уларытыылар',
+'mypreferences' => 'Туруорууларым',
+'prefs-edits' => 'Көннөрүү ахсаана:',
+'prefsnologin' => 'Ааккын эппэтиҥ',
+'prefsnologintext' => 'Эн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ааккын эттэххинэ]</span> эрэ кыттаачы туруорууларын уларытар кыахтаныаҥ.',
+'changepassword' => 'Киирии тылы уларытарга',
+'prefs-skin' => 'Тас көстүү',
+'skin-preview' => 'Хайдах буолара',
+'prefs-math' => 'Фуормулалар',
+'datedefault' => 'Көннөрү көстүүтэ',
+'prefs-datetime' => 'Күнэ-дьыла уонна кэмэ',
+'prefs-personal' => 'Кыттааччы туруоруулара',
+'prefs-rc' => 'Кэлиҥҥи уларытыылар',
+'prefs-watchlist' => 'Кэтээһин',
+'prefs-watchlist-days' => 'Хас хонуктааҕы уларыйыылар кэтээһин испииһэгэр көстөллөрө:',
+'prefs-watchlist-days-max' => '(улааппыта 7 күн)',
+'prefs-watchlist-edits' => 'Хас уларытыыны тупсарыллыбыт кэтээһиҥҥэ көрдөрөрө:',
+'prefs-watchlist-edits-max' => '(улааппыта: 1000)',
+'prefs-watchlist-token' => 'Кэтэбил тиһигин бэлиэтэ (токен):',
+'prefs-misc' => 'Атын туруоруулар',
+'prefs-resetpass' => 'Кирии тылы уларытыы',
+'prefs-email' => 'Email туруоруулара',
+'prefs-rendering' => 'Тас көрүҥэ',
+'saveprefs' => 'Бигэргэт',
+'resetprefs' => 'Бигэргэтиллибэтэх уларыйыылары сот',
+'restoreprefs' => 'Туруоруулары саҥаттан',
+'prefs-editing' => 'Уларытыы',
+'prefs-edit-boxsize' => 'Эрэдээксийэлиир түннүк улахана.',
+'rows' => 'Строкаалара:',
+'columns' => 'Колонкалара:',
+'searchresultshead' => 'Көрдөөһүн түмүгэ',
+'resultsperpage' => 'Сирэйгэ булуллубут суруктар ахсааннара:',
+'contextlines' => 'Булуллубут сирэй хас строкатын көрдөрөрө:',
+'contextchars' => 'Строкааҕа контекст бэлиэлэрин ахсаана:',
+'stub-threshold' => '<a href="#" class="stub">омооннорго ыйынньыктары</a> оҥоруу боруога:',
+'recentchangesdays' => 'Хас хонук иһинэн уларытыылары көрдөрөргө:',
+'recentchangesdays-max' => '(улааппыта $1 күн)',
+'recentchangescount' => 'Саҥа уларытыылар көрдөрүллэр ахсааннара:',
+'prefs-help-recentchangescount' => 'Бу саҥа көннөрүүлэри, сирэй устуоруйаларын уонна сурунааллары көрдөрөр.',
+'prefs-help-watchlist-token' => 'Бу түннүккэ кистэлэҥ күлүүһү суруйдаххына эн кэтээн көрүүҥ тиһигин RSS-трансляцията оҥоһуллуо.
+Бу күлүүһү билэр ханнык баҕарар киһи эн кэтээн көрөр тиһиккин көрүөн сөп, онон дьон дөбөҥнүк билбэт кистэлэҥ күлүүстэрин суруй.
+Ылбычча айыллыбыт күлүүһү туттуоххун сөп: $1',
+'savedprefs' => 'Эн туруорууларыҥ олохтоннулар.',
+'timezonelegend' => 'Олохтоох кэм:',
+'localtime' => 'Олохтоох кэмим:',
+'timezoneuseserverdefault' => 'Сиэрбэр туруоруутунан',
+'timezoneuseoffset' => 'Атын (сыҕарыйыытын көрдөр)',
+'timezoneoffset' => 'Сыҕарыйыы¹:',
+'servertime' => 'Сиэрбэр бириэмэтэ:',
+'guesstimezone' => 'Интэриниэтим бырагыраамматыттан ылан толор',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантика байҕала',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индия байҕала',
+'timezoneregion-pacific' => 'Чуумпу байҕал',
+'allowemail' => 'Атын кыттааччылартан сурук тутары көҥүллүүбүн',
+'prefs-searchoptions' => 'Көрдөөһүн туруоруулара',
+'prefs-namespaces' => 'Аат дала',
+'defaultns' => 'Атын ыйыллыбатаҕына бу аат далларыгар көрдүүргэ:',
+'default' => 'чопчу ыйыллыбатаҕына маннык',
+'prefs-files' => 'Билэлэр',
+'prefs-custom-css' => 'Бэйэ CSS',
+'prefs-custom-js' => 'Бэйэ JS',
+'prefs-reset-intro' => 'Бу сирэй көмөтүнэн туруорууларгын саҥаттан туруорар турукка төннөрүөххүн сөп.
+Маны бигэргэттэххинэ билигин баар туруоруулары дэбигис сөргүппэккин.',
+'prefs-emailconfirm-label' => 'Эл. почтаны бигэргэтии:',
+'prefs-textboxsize' => 'Эрэдээкисэйлиир түннүк улахана',
+'youremail' => 'E-mail-ыҥ:',
+'username' => 'Бэлиэтэммит аатыҥ:',
+'uid' => 'Кыттааччы ID-та:',
+'prefs-memberingroups' => 'Бу {{PLURAL:$1|бөлөххө|бөлөхтөргө}} киирэр:',
+'prefs-registration' => 'Бэлиэтэнии кэмэ:',
+'prefs-registration-date-time' => '$1',
+'yourrealname' => 'Докумуонунан аатыҥ:',
+'yourlanguage' => 'Омугуҥ тыла:',
+'yourvariant' => 'Барыйаан:',
+'yournick' => 'Илии баттааһын:',
+'prefs-help-signature' => 'Ырытыы сирэйдэригэр эн суруктарыҥ маннык бэлиэлэри «<nowiki>~~~~</nowiki>» туруоруу көмөтүнэн илии баттаныахтаахтар, ити бэлиэлэр аптамаатынан эн аатыҥ уонна суруйбут кэмиҥ курдук буолан көстүөхтэрэ.',
+'badsig' => 'Сыыһа илии баттааһын; HTML тиэгтэрин көр.',
+'badsiglength' => 'Наһаа уһун илии баттааһын.
+$1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}} ордук буолуо суохтаах.',
+'yourgender' => 'Эр киһитэ/дьахтара:',
+'gender-unknown' => 'Ыйыллыбатах',
+'gender-male' => 'Эр киһи',
+'gender-female' => 'Дьахтар',
+'prefs-help-gender' => 'Булгуччута суох. Бырагыраамма сорох дьоҥҥо туһаайыллыбыт биллэриилэригэр эбэтэр кинилэргэ сыһыаннаах этиилэригэр кытааччы дьахтарыттан эр киһититтэн көрөн этии тутулун уларытан биэриэн сөп. Туора дьоҥҥо көстөр бэлиэтээһин.',
+'email' => 'Почта',
+'prefs-help-realname' => 'Сурукка киирбит аатыҥ (булгуччута суох): ким бу сирэйи уларыппытын көрдөрөргө туттуллар',
+'prefs-help-email' => 'Электроннай аадырыһыҥ булгуччута суох, ол эрээри киирии тылгын умуннаххына санатарга көмөлөһүө.
+Эбиитин атын кыттааччылар эйиэхэ бэйэҕин билбэккэ эрэ сурук суруйалларын көҥүллүөххүн сөп.',
+'prefs-help-email-required' => 'E-mail баар буолуохтаах.',
+'prefs-info' => 'Сүрүн сибидиэнньэлэр',
+'prefs-i18n' => 'Интернационализация',
+'prefs-signature' => 'Илии баттааһына',
+'prefs-dateformat' => 'Күн-дьыл көрүҥэ (формаата)',
+'prefs-timeoffset' => 'Кэм уратыта',
+'prefs-advancedediting' => 'Дириҥэтиллибит туруоруулар',
+'prefs-advancedrc' => 'Дириҥэтиллибит туруоруулар',
+'prefs-advancedrendering' => 'Дириҥэтиллибит туруоруулар',
+'prefs-advancedsearchoptions' => 'Дириҥэтиллибит туруоруулар',
+'prefs-advancedwatchlist' => 'Дириҥэтиллибит туруоруулар',
+'prefs-display' => 'Туруоруулары көрдөр',
+'prefs-diffs' => 'Уратылара',
# User rights
-'userrights' => 'Кыттааччылар бырааптарын салайыы', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Кыттаачылар бөлөхтөрүн салайыы',
-'userrights-user-editname' => 'Кыттааччы аата:',
-'editusergroup' => 'Кыттааччылар бөлөхтөрүн уларытарга',
-'editinguser' => "'''[[User:$1|$1]]''' кыттааччы быраабын уларытыы ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Кыттааччы бөлөхтөрүн уларытарга',
-'saveusergroups' => 'Кыттааччы бөлөхтөрүн бигэргэт',
-'userrights-groupsmember' => 'Бу бөлөхтөргө киирэр:',
-'userrights-groups-help' => 'Бу киһи киирэр бөлөхтөрүн уларытыаххын сөп:
+'userrights' => 'Кыттааччылар бырааптарын салайыы',
+'userrights-lookup-user' => 'Кыттаачылар бөлөхтөрүн салайыы',
+'userrights-user-editname' => 'Кыттааччы аата:',
+'editusergroup' => 'Кыттааччылар бөлөхтөрүн уларытарга',
+'editinguser' => "'''[[User:$1|$1]]''' кыттааччы быраабын уларытыы ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Кыттааччы бөлөхтөрүн уларытарга',
+'saveusergroups' => 'Кыттааччы бөлөхтөрүн бигэргэт',
+'userrights-groupsmember' => 'Бу бөлөхтөргө киирэр:',
+'userrights-groupsmember-auto' => 'Көстүбэт чилиэн:',
+'userrights-groups-help' => 'Бу киһи киирэр бөлөхтөрүн уларытыаххын сөп:
* Бөлөх аатын таһыгар бэлиэ турар буоллаҕына бу кыттааччы бу бөлөххө киирэр.
* Бэлиэ суох буоллаҕына - кыттааччы бөлөххө киирбэт
* Маннык бэлиэ * кыттааччы бөлөххө киирэрин/киирбэтин уларытар кыаҕыҥ суоҕун көрдөрөр.',
-'userrights-reason' => 'Төрүөтэ:',
-'userrights-no-interwiki' => 'Атын биикилэргэ кыттааччылар бырааптарын уларытар быраабыҥ суох.',
-'userrights-nodatabase' => '$1 билэ тиһигэ (олоҕо, база данных) суох эбэтэр локальнай буолбатах.',
-'userrights-nologin' => 'Эн дьон бырааптарын уларытаргар администратор быһыытынан [[Special:UserLogin|бэлиэтэниэхтээххин]].',
-'userrights-notallowed' => 'Бэлиэтэммит ааккынан атын кыттааччы быраабын уларытар кыаҕыҥ суох.',
-'userrights-changeable-col' => 'Эн уларытар кыахтаах бөлөхтөрүҥ',
-'userrights-unchangeable-col' => 'Бу бөлөхтөрү уларытар кыаҕыҥ суох',
+'userrights-reason' => 'Төрүөтэ:',
+'userrights-no-interwiki' => 'Атын биикилэргэ кыттааччылар бырааптарын уларытар быраабыҥ суох.',
+'userrights-nodatabase' => '$1 билэ тиһигэ (олоҕо, база данных) суох эбэтэр локальнай буолбатах.',
+'userrights-nologin' => 'Эн дьон бырааптарын уларытаргар администратор быһыытынан [[Special:UserLogin|бэлиэтэниэхтээххин]].',
+'userrights-notallowed' => 'Бэлиэтэммит ааккынан атын кыттааччы быраабын уларытар кыаҕыҥ суох.',
+'userrights-changeable-col' => 'Эн уларытар кыахтаах бөлөхтөрүҥ',
+'userrights-unchangeable-col' => 'Бу бөлөхтөрү уларытар кыаҕыҥ суох',
# Groups
'group' => 'Бөлөх:',
@@ -1139,6 +1198,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'right-bigdelete' => 'Уһун историялаах сирэйдэри сотуу',
'right-deleterevision' => 'Сирэй сорох торумнарын сотуу уонна хат киллэрии',
'right-deletedhistory' => 'Сотуллубут тиэкиһи көрөөһүнэ суох сотуу историятын көрүү',
+'right-deletedtext' => 'Сотуллубут тиэкиһи уонна сотуллубут сирэйдэр бэйэ-бэйэлэрин ыккардыларыгар уратыларын көрүү',
'right-browsearchive' => 'Сотуллубут сирэйдэри көрдөөһүн',
'right-undelete' => 'Сотуллубут сирэйи хат киллэрии',
'right-suppressrevision' => 'Администраатардартан кистэммит сирэйдэри көрүү уонна урукку барылларыгар төннөрүү',
@@ -1152,6 +1212,8 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'right-editprotected' => 'Көмүскэллээх сирэйдэри уларытыыы (каскаднай көмүскэллэрэ суох буоллаҕына)',
'right-editinterface' => 'Кыттааччы интерфейсын уларытыы',
'right-editusercssjs' => 'Атын кыттааччылар CSS- и JS-билэлэрин уларытыы',
+'right-editusercss' => 'Атын кыттааччылар CSS-билэлэрин уларытыы',
+'right-edituserjs' => 'Атын кыттааччылар JS-билэлэрин уларытыы',
'right-rollback' => 'Кыттааччы оҥорбут көннөрүүлэрин талыллыбыт биир сирэйгэ суох гыныы',
'right-markbotedits' => 'Төннөрүллэр көннөрүүлэри робот уларытыытын курдук бэлиэтээһин',
'right-noratelimit' => 'Нуорманнан хааччахтааһын суох',
@@ -1168,6 +1230,8 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'right-siteadmin' => 'Билэ олоҕор (database) киирэри бобуу уонна көҥүллээһин',
'right-reset-passwords' => 'атын кыттааччылар киирии тылларын уларытыы',
'right-override-export-depth' => 'сирэйдэри таһаарааһын (экспортааһын), ситимнээх сирэйдэри 5-с таһымҥа дылы холбоон туран',
+'right-versiondetail' => 'программнай обеспечение барылын туһунан сиһилии көрүү',
+'right-sendemail' => 'Атын кыттааччыларга эл. почтаны ыытарга',
# User rights log
'rightslog' => 'Кыттаачы бырааптарын сурунаала',
@@ -1217,6 +1281,15 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'recentchanges-legend' => 'Кэлиҥҥи уларытыылар хайдах көстөллөрүн туруоруу',
'recentchangestext' => 'Манна хаһан киирибитинэн сааһыланан {{SITENAME}} кэнники уларыытыылара сурулуннулар.',
'recentchanges-feed-description' => 'Бу ботуокка биики бүтэһик уларыйыыларын кэтииргэ.',
+'recentchanges-label-legend' => 'Легендата: $1.',
+'recentchanges-legend-newpage' => '$1 — саҥа сирэй',
+'recentchanges-label-newpage' => 'Бу уларытыы түмүгэр саҥа сирэй айыллыбыт.',
+'recentchanges-legend-minor' => '$1 — суолтата суох уларытыы',
+'recentchanges-label-minor' => 'Бу улахан суолтата суох уларытыы',
+'recentchanges-legend-bot' => '$1 — робот көннөрүүтэ',
+'recentchanges-label-bot' => 'Бу уларытыыны робот оҥорбут',
+'recentchanges-legend-unpatrolled' => '$1 — ботуруулламматах уларытыы',
+'recentchanges-label-unpatrolled' => 'Бу уларытыы өссө ботурууллана илик',
'rcnote' => "{{PLURAL:$2|хонук|'''$2''' хонуктар}} иһинэн бүтэһик {{PLURAL:$1|'''1''' уларыйыы|'''$1''' уларыйыылар}}, $5, $4.",
'rcnotefrom' => "Мантан '''$2''' маныаха '''$1''' дылы уларыыйылар көрдөрүлүннүлэр.",
'rclistfrom' => 'Мантан $1 уларыйыылары көрдөр',
@@ -1243,6 +1316,8 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
# Recent changes linked
'recentchangeslinked' => 'Сигэнэр уларытыылар',
+'recentchangeslinked-feed' => 'Сигэнэр уларытыылар',
+'recentchangeslinked-toolbox' => 'Сигэнэр уларытыылар',
'recentchangeslinked-title' => '"$1" кытта сибээстээх уларытыылар',
'recentchangeslinked-noresult' => 'Сигэммит сирэйдэргэ этиллибит кэмҥэ уларытыылар оҥоһуллубатылар.',
'recentchangeslinked-summary' => "Бу анал сирэйгэ сигэнэр сирэйдэр бүтэһик уларыйыылара көһүннүлэр. [[Special:Watchlist|Кэтэнэр сирэйдэр]] '''модьу бичигинэн''' бэлиэтэннилэр.",
@@ -1252,8 +1327,8 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
# Upload
'upload' => 'Билэни киллэр',
'uploadbtn' => 'Билэни киллэрии',
-'reupload' => 'Хат киллэр',
'reuploaddesc' => 'Тохтот уонна киллэрии форматыгар төнүн',
+'upload-tryagain' => 'Билэ туһунан сурук уларытыытын ыыт',
'uploadnologin' => 'Биикигэ ааккын билиһиннэрбэтиҥ',
'uploadnologintext' => 'Билэлэри киллэрэргэ манна [[Special:UserLogin|бэлиэтэниэххэ]] наада',
'upload_directory_missing' => 'Суруйуу паапката ($1) суох, ону ааһан сиэрбэр ону бэйэтэ оҥорор кыаҕа суох.',
@@ -1285,6 +1360,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'minlength1' => 'Билэ аата биир суругунан буолуохтаах.',
'illegalfilename' => '«$1» билэ аата аакка туттуллубат бэлиэлэрдээх. Уларыт уонна өссө киллэрэн көр.',
'badfilename' => 'Билэ аата маннык буолла: "$1".',
+'filetype-mime-mismatch' => 'Билэ кэтирээһинэ MIME-көрүҥэр сөп түбэспэт.',
'filetype-badmime' => 'MIME-типтээх "$1" билэлэр кыайан манна суруллубаттар.',
'filetype-bad-ie-mime' => 'Бу билэни хачайдыыр табыллыбат, тоҕо диэтэххэ Internet Explorer кинини «$1» быһыытынан көрүө, ол аата бобуллубут уонна кутталлаах билэ көрүҥүн курдук.',
'filetype-unwanted-type' => "'''\".\$1\"''' — билэ оччо сөбүлэммэт көрүҥэ.
@@ -1305,7 +1381,6 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
* Эн суруйбут билэҥ аата: '''<tt>[[:$1]]</tt>'''
* Уруккуттан баар билэ аата: '''<tt>[[:$2]]</tt>'''
Атын аатта таларыҥ буоллар.",
-'fileexists-thumb' => "<center>'''Баар ойуу'''</center>",
'fileexists-thumbnail-yes' => "Ойуу арааһа кыччатыллыбыт ойуу (миниатюра) быһыылаах. [[$1|thumb]]
Көр '''<tt>[[:$1]]</tt>'''.
Бу ойуу урукку ойуу кыччатыллыбыта буоллаҕына суруйар наадата суох.",
@@ -1321,6 +1396,7 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'file-deleted-duplicate' => 'Маннык билэ ([[$1]]) урут сотуллубут эбит. Суруттарыаҥ иннинэ бастаан тоҕо сотуллубутун көр.',
'successfulupload' => 'Сатанна',
'uploadwarning' => 'Сэрэтии',
+'uploadwarning-text' => 'Бука диэн аллара баар билэ туһунан суругу уларыт уонна өссө хатылаа.',
'savefile' => 'Билэни суруттарыы',
'uploadedimage' => 'суруттарылынна "[[$1]]"',
'overwroteimage' => '"[[$1]]" киллэриллибит саҥа торума',
@@ -1328,11 +1404,14 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''
'uploaddisabledtext' => 'Билэлэри суруттарар көҥүллэммэт.',
'php-uploaddisabledtext' => 'PHP туруорууларыгар билэни киллэрии араарыллыбыт. Бука диэн, file_uploads туруоруутун көр.',
'uploadscripted' => 'Бу билэ HTML эбэтэр скрипт куодтаах эбит. Интэриниэт көрдөрөр бырагыраамма ону сыыһа ааҕыан сөп.',
-'uploadcorrupt' => 'Билэ сатаан ааҕыллыбат эбэтэр атын расширениялаах. Бэрэбиэркэлээн баран өссө суруттаран көр.',
'uploadvirus' => 'Бу билэ вирустаах! Көр: $1',
+'upload-source' => 'Билэ бастакы торума',
'sourcefilename' => 'Билэ сытар сирэ:',
+'sourceurl' => 'Сытар сирин URL аадырыһа:',
'destfilename' => 'Билэ хайдах ааттаах буолуохтааҕа:',
'upload-maxfilesize' => 'Билэ муҥур улахана: $1',
+'upload-description' => 'Билэ туһунан',
+'upload-options' => 'Хачайдааһын туруоруулара',
'watchthisupload' => 'Билэни кэтииргэ',
'filewasdeleted' => 'Маннык ааттаах билэ урут баар эбит, ону соппуттар. $1 суруттарыах иннинэ өссө биирдэ толкуйдаа.',
'upload-wasdeleted' => "'''Сэрэтии: Эн суох оҥоһуллубут биэни саҥаттан суруйан эрэҕин.'''
@@ -1354,15 +1433,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- Бу строканы оннунан хааллар -->',
-'upload-proto-error' => 'Сыыһа боротокуол',
-'upload-proto-error-text' => 'Ыраахтан суруттарарга маннык аадырыстар наадалар: <code>http://</code> эбэтэр <code>ftp://</code>.',
-'upload-file-error' => 'Ис сыыһа',
-'upload-file-error-text' => 'Быстах кэмҥэ оҥоһуллар билэни суруйууга туох эрэ моһол таҕыста.
+'upload-proto-error' => 'Сыыһа боротокуол',
+'upload-proto-error-text' => 'Ыраахтан суруттарарга маннык аадырыстар наадалар: <code>http://</code> эбэтэр <code>ftp://</code>.',
+'upload-file-error' => 'Ис сыыһа',
+'upload-file-error-text' => 'Быстах кэмҥэ оҥоһуллар билэни суруйууга туох эрэ моһол таҕыста.
[[Special:ListUsers/sysop|Администраатары]] кытта сибээстэс.',
-'upload-misc-error' => 'Сурутуу биллибэт моһоллонно',
-'upload-misc-error-text' => 'Сурутуу биллибэт моһоллонно.
+'upload-misc-error' => 'Сурутуу биллибэт моһоллонно',
+'upload-misc-error-text' => 'Сурутуу биллибэт моһоллонно.
Аадырыһы сөпкө суруйбуккун көр уонна өссө биирдэ боруобалаа.
Бу хатыланнаҕына [[Special:ListUsers/sysop|администраатары]] кытта сибээстэс.',
+'upload-too-many-redirects' => 'URL наһаа элбэх утаарыылаах',
+'upload-unknown-size' => 'Биллибэт кээмэй',
+'upload-http-error' => 'HTTP алҕаһа таҕыста: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Киирии бобуллубут',
+'img-auth-nopathinfo' => 'PATH_INFO суох.
+Эн сиэбэрин маннык сибидиэнньэни ыытар курдук туруоруута суох.
+Баҕар кини CGI олоҕурара буолуо ол иһин img_auth өйөөбөтө буолуо.
+Көр http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Көрдөөбүт суолуҥ эрдэттэн туруоруллубут хачайдыыр паапкаҕа сыһыана суох.',
+'img-auth-badtitle' => 'Мантан «$1» сөптөөх ааты оҥорор кыах суох.',
+'img-auth-nologinnWL' => 'Эн тиһиликкэ киирбэтэххин, уонна «$1» үрүҥ (көҥүллэммит) тиһиккэ киирбэт эбит.',
+'img-auth-nofile' => '«$1» билэ суох.',
+'img-auth-isdir' => 'Бу паапакаҕа «$1» киирэ сатыыгын.
+Билэлэргэ эрэ киирэр көҥүллэммит.',
+'img-auth-streaming' => 'Ботуогунан биэрии «$1».',
+'img-auth-public' => 'img_auth.php аналынан билэлэри сабыылаах биикиттэн таһаарыы буолар.
+Бу биики аһаҕас.
+Онон img_auth.php араарыллыбыт.',
+'img-auth-noread' => 'Кыттааччы «$1» ааҕарга көҥүлэ суох.',
+
+# HTTP errors
+'http-invalid-url' => 'Алҕастаах URL: $1',
+'http-invalid-scheme' => 'Маннык схемалаах аадырыстар өйөммөттөр "$1"',
+'http-request-error' => 'HTTP-көрдөбүл биллибэт алҕастаан сылтаан ылыныллыбата.',
+'http-read-error' => 'HTTP ааҕыытын алҕаһа.',
+'http-timed-out' => 'HTTP-көрдөбүл толоруллуохтаах болдьоҕо ааста.',
+'http-curl-error' => 'URL-га тахсыы алҕаһа: $1',
+'http-host-unreachable' => 'URL-га тахсыы сатаммата.',
+'http-bad-status' => 'HTTP-ыйытыгы көрүү кэмигэр туох эрэ сатаммата: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Бу URL-га кыайан тахсыбата',
@@ -1371,6 +1481,7 @@ PICT # misc.
'upload-curl-error28-text' => 'Бу сир наһаа өр хардарда. Үлэлиирин суоҕун бэрэбиэркэлээ уонна хат киирэн көр. Эбэтэр сиргэ аҕыйах киһи киирэр кэмигэр боруобалаан көр.',
'license' => 'Лицензиялааһын:',
+'license-header' => 'Лицензиялааһын',
'nolicense' => 'Талыллыбатах',
'license-nopreview' => '(Уларытыыны бигэргэтиэх иннинэ көрүү сатаммат)',
'upload_source_url' => ' (сөптөөх URL, ким баҕарбыт киирэр сирэ)',
@@ -1391,6 +1502,7 @@ PICT # misc.
'listfiles_count' => 'Барыллар',
# File description page
+'file-anchor-link' => 'Билэ',
'filehist' => 'Билэ устуоруйата',
'filehist-help' => 'Ыйын-күнүн/кэмин баттаа, оччотооҕуга баар буолбут.',
'filehist-deleteall' => 'барытын сот',
@@ -1405,6 +1517,7 @@ PICT # misc.
'filehist-dimensions' => 'Кээмэйдэрэ',
'filehist-filesize' => 'Билэ кээмэйэ',
'filehist-comment' => 'Хос быһаарыы',
+'filehist-missing' => 'Билэ суох',
'imagelinks' => 'Билэ сигэлэрэ',
'linkstoimage' => 'Бу билэҕэ маннык атын {{PLURAL:$1|сирэй сигэнэр|$1 сирэйдэр сигэнэллэр}}:',
'linkstoimage-more' => '$1 {{PLURAL:$1|сирэйтэн|сирэйтэн}} элбэх сирэй бу билэҕэ сигэнэр.
@@ -1414,15 +1527,16 @@ PICT # misc.
'morelinkstoimage' => 'Бу билэҕэ [[Special:WhatLinksHere/$1|атын сигэлэри]] көрөргө.',
'redirectstofile' => 'Билэҕэ бу {{PLURAL:$1|билэттэн сигэ олохтоммут|$1 билэлэртэн сигэлэр олохтоммуттар}}:',
'duplicatesoffile' => 'Бу билэ {{PLURAL:$1|дубликаата манна көстөр|$1 дубликаата манна көстөллөр}} ([[Special:FileDuplicateSearch/$2|сиһилии]]):',
-'sharedupload' => 'Бу билэ манна $1 сытар, атын бырайыактарга туттуллуон сөп.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Эбиитин мантан ааҕыаххын сөп $1.',
-'shareduploadwiki-desc' => 'Уопсай ыскылааттан $1 сирэй аллара көрдөрүлүннэ.',
-'shareduploadwiki-linktext' => 'Билэни хос быһаарар сирэй',
-'noimage' => 'Маннык ааттаах билэ суох эбит, маны гыныаххын сөп $1.',
-'noimage-linktext' => 'итини суруттар',
+'sharedupload' => 'Бу билэ манна $1 сытар, атын бырайыактарга туттуллуон сөп.',
+'sharedupload-desc-there' => '$1 бу билэтэ атын бырайыактарга эмиэ туттуллуон сөп.
+Эбии информацияны [$2 туһунан сирэй]гэ булуохха сөп.',
+'sharedupload-desc-here' => '$1 бу билэтэ атын бырайыактарга эмиэ туттуллуон сөп.
+[$2 туһунан сирэй]тэн ылыллыбыт тиэкис аллара көрдөрүлүннэ.',
+'filepage-nofile' => 'Маннык ааттаах билэ суох.',
+'filepage-nofile-link' => 'Маннык ааттаах билэ суох. Ол гынан баран эн [$1 суруттарыаххын] сөп.',
'uploadnewversion-linktext' => 'Бу билэ саҥа барылын суруттар',
-'shared-repo-from' => 'мантан: $1', # $1 is the repository name
-'shared-repo' => 'уопсай умуһах', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'мантан: $1',
+'shared-repo' => 'уопсай умуһах',
# File reversion
'filerevert' => 'Төннөр $1',
@@ -1451,6 +1565,7 @@ PICT # misc.
** Бас билии быраабын кэһии
** Хос суруллубут билэ',
'filedelete-edit-reasonlist' => 'Сотуу төрүөтүн уларыт',
+'filedelete-maintenance' => 'Көрүү-истии үлэтин кэмигэр билэлэри сотуу уонна төннөрүү быстах кэмҥэ тохтотулунна.',
# MIME search
'mimesearch' => 'MIME көрдөөһүн',
@@ -1472,7 +1587,7 @@ PICT # misc.
# Random page
'randompage' => 'Түбэспиччэ сирэй',
-'randompage-nopages' => 'Бу аат дала ($1) кураанах.',
+'randompage-nopages' => 'Бу {{PLURAL:$2|аат дала кураана|аат далларыгар сирэйдэр суохтар}}: $1.',
# Random redirect
'randomredirect' => 'Түбэспиччэ утаарыы',
@@ -1484,6 +1599,7 @@ PICT # misc.
'statistics-header-edits' => 'Көннөрүү статиистиката',
'statistics-header-views' => 'Көрөөһүн статистиката',
'statistics-header-users' => 'Кыттааччылар статиистикалара',
+'statistics-header-hooks' => 'Атын статистика',
'statistics-articles' => 'Ыстатыйалар ахсааннара',
'statistics-pages' => 'Сирэйдэр',
'statistics-pages-desc' => 'Биики бары сирэйдэрин (ырытыы сирэйдэрин, утаарыылары уо.д.а.) киллэрэн туран.',
@@ -1511,8 +1627,8 @@ PICT # misc.
'brokenredirects' => 'Быстыбыт көһөрүүлэр',
'brokenredirectstext' => 'Бу утаарыы сирэйдэрэ суох ыстатыйаларга сигэнэллэр (ыыталлар):',
-'brokenredirects-edit' => '(уларытыы)',
-'brokenredirects-delete' => '(сотуу)',
+'brokenredirects-edit' => 'уларытыы',
+'brokenredirects-delete' => 'сотуу',
'withoutinterwiki' => 'Атын тылынан суруллубут ыстатыйаларга сигэммэт ыстатыйалар',
'withoutinterwiki-summary' => 'Бу сирэйдэр атын тылынан суруллубут ыстатыйаларга сигэммэттэр:',
@@ -1619,7 +1735,7 @@ PICT # misc.
# Special:Categories
'categories' => 'Категориялар',
-'categoriespagetext' => 'Бу категориялар истэригэр сирэйдэр эбэтэр медиа-билэлэр бааллар.
+'categoriespagetext' => 'Бу {{PLURAL:$1|категория иһигэр|категориялар истэригэр}} сирэйдэр эбэтэр медиа-билэлэр бааллар.
[[Special:UnusedCategories|Туттуллубат категориялар]] манна көстүбэттэр.
Өссө маны көр: [[Special:WantedCategories|Баар буолуохтаах категориялар тиһиктэрэ]].',
'categoriesfrom' => 'Мантан саҕаланар категориялары көрдөр:',
@@ -1627,8 +1743,9 @@ PICT # misc.
'special-categories-sort-abc' => 'алпабыытынан бэрээдэктээһин',
# Special:DeletedContributions
-'deletedcontributions' => 'Сотуллубут көннөрүү',
-'deletedcontributions-title' => 'Сотуллубут көннөрүү',
+'deletedcontributions' => 'Сотуллубут көннөрүү',
+'deletedcontributions-title' => 'Сотуллубут көннөрүү',
+'sp-deletedcontributions-contribs' => 'киллэриитэ (суруйуута)',
# Special:LinkSearch
'linksearch' => 'Тас сигэлэр',
@@ -1645,6 +1762,16 @@ PICT # misc.
'listusersfrom' => 'Мантан саҕалаан кыттааччылары көрдөр:',
'listusers-submit' => 'Көрдөр',
'listusers-noresult' => 'Кыттааччылар булуллубатылар.',
+'listusers-blocked' => '(хааччахтаммыт)',
+
+# Special:ActiveUsers
+'activeusers' => 'Көхтөөх кыттааччылар тиһиктэрэ',
+'activeusers-intro' => 'Бу кэлиҥҥи $1 {{PLURAL:$1|күҥҥэ|күннэргэ}} тугу эмэ гыммыт кыттааччылар тиһиктэрэ.',
+'activeusers-count' => '$1 бүтэһик $3 күҥҥэ саҥа {{PLURAL:$1|көннөрүүлээх|көннөрүүлээх эбит}}',
+'activeusers-from' => 'Мантан саҕалаан кыттааччылары көрүү:',
+'activeusers-hidebots' => 'Руобаттары көрдөрүмэ',
+'activeusers-hidesysops' => 'Дьаһабыллары көрдөрүмэ',
+'activeusers-noresult' => 'Кыттааччылар көстүбэтилэр.',
# Special:Log/newusers
'newuserlogpage' => 'Кыттааччылары бэлиэтиир сурунаал',
@@ -1655,17 +1782,23 @@ PICT # misc.
'newuserlog-autocreate-entry' => 'Кыттааччы аата аптамаатынан оҥоһуллубут',
# Special:ListGroupRights
-'listgrouprights' => 'Кыттааччылар бөлөхтөрүн бырааптара',
-'listgrouprights-summary' => 'Манна бу биикигэ баар бөлөхтөр уонна кинилэр киирэр бырааптара көстөллөр.
+'listgrouprights' => 'Кыттааччылар бөлөхтөрүн бырааптара',
+'listgrouprights-summary' => 'Манна бу биикигэ баар бөлөхтөр уонна кинилэр киирэр бырааптара көстөллөр.
Баҕар дьон туспа бырааптарын туһунан [[{{MediaWiki:Listgrouprights-helppage}}|эбии информация]] баара буолуо.',
-'listgrouprights-group' => 'Бөлөх',
-'listgrouprights-rights' => 'Бырааптар',
-'listgrouprights-helppage' => 'Help:Бөлөхтөр бырааптара',
-'listgrouprights-members' => '(кыттар дьон испииһэгэ)',
-'listgrouprights-addgroup' => 'Бу {{PLURAL:$2|бөлөххө|бөлөхтөргө}} киллэриэн сөп: $1',
-'listgrouprights-removegroup' => 'Бу {{PLURAL:$2|бөлөхтөн|бөлөхтөртөн}} таһаарыан сөп: $1',
-'listgrouprights-addgroup-all' => 'Бөлөхтөргө барыларыгар киллэриэн сөп',
-'listgrouprights-removegroup-all' => 'Бөлөхтөртөн барытыттан таһаарыан сөп',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Биэриллибит бырааптар</span>
+* <span class="listgrouprights-revoked">Төттөрү ылыллыбыт бырааптар</span>',
+'listgrouprights-group' => 'Бөлөх',
+'listgrouprights-rights' => 'Бырааптар',
+'listgrouprights-helppage' => 'Help:Бөлөхтөр бырааптара',
+'listgrouprights-members' => '(кыттар дьон испииһэгэ)',
+'listgrouprights-addgroup' => 'Бу {{PLURAL:$2|бөлөххө|бөлөхтөргө}} киллэриэн сөп: $1',
+'listgrouprights-removegroup' => 'Бу {{PLURAL:$2|бөлөхтөн|бөлөхтөртөн}} таһаарыан сөп: $1',
+'listgrouprights-addgroup-all' => 'Бөлөхтөргө барыларыгар киллэриэн сөп',
+'listgrouprights-removegroup-all' => 'Бөлөхтөртөн барытыттан таһаарыан сөп',
+'listgrouprights-addgroup-self' => 'Маннык {{PLURAL:$2|бөлөҕү|бөлөхтөрү}} бэйэтин аатыгар холбуон сөп: $1',
+'listgrouprights-removegroup-self' => 'Маннык {{PLURAL:$2|бөлөҕү|бөлөхтөрү}} бэйэтин аатыттан сотуон сөп: $1',
+'listgrouprights-addgroup-self-all' => 'Бары бөлөхтөрү бэйэтин аатыгар холбуон сөп',
+'listgrouprights-removegroup-self-all' => 'Бары бөлөхтөрү бэйэтин аатыттан сотуон сөп',
# E-mail user
'mailnologin' => 'Аадырыһа суох',
@@ -1747,7 +1880,7 @@ $NEWPAGE
Уларытыы кылгас ис хоһооно: $PAGESUMMARY $PAGEMINOREDIT
Уларыппыт киһи:
-эл. аадырыһа $PAGEEDITOR_EMAIL
+эл. аадырыһа: $PAGEEDITOR_EMAIL
Биикигэ сирэйэ: $PAGEEDITOR_WIKI
Бу сирэйи көрө иликкинэ хос биллэрии кэлиэ суоҕа. Арай кэтэбили туруорар сиргэ "уларытыыны биллэрэргэ" диэни иккистээн туруордаххына кэлиэн сөп.
@@ -1755,10 +1888,14 @@ $NEWPAGE
Бары үтүөнү кытта, {{SITENAME}} биллэрэр систиэмэтэ
--
-Кэтиир сирэйдэриҥ тиһигин уларытарга маны көр
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Кэтиир сирэйдэриҥ тиһигин уларытарга маны көр:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Бу сирэйи кэтэбил тиһигиттэн соторго манна киир:
+$UNWATCHURL
-Көмөлөһүннэрэр уонна быһаартарар сир: {{fullurl:{{MediaWiki:Helppage}}}}',
+Көмөлөһүннэрэр уонна быһаартарар сир:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Сирэйи сот',
@@ -1769,12 +1906,13 @@ $NEWPAGE
'exblank' => 'сирэй кураанах этэ',
'delete-confirm' => 'Маны "$1" соторго',
'delete-legend' => 'Сотуу',
-'historywarning' => 'Сэрэтии: Сотоору турар сирэйиҥ устуоруйалаах:',
+'historywarning' => "'''Сэрэтии''': Сотоору турар сирэйиҥ көрүллүбүт $1 {{PLURAL:$1|соҕотох барыллаах|барыллаах}} устуоруйалаах:",
'confirmdeletetext' => 'Эн сирэйи (ойууну) уонна кини устуоруйатын букатын сотоору гынаҕын.
Бука диэн, кырдьык инньэ гынаары гынаргын,
бу дьайыы туох содуллаах буоларын толору билэргин
уонна [[{{MediaWiki:Policy-url}}]] сиэрин кэспэккин бигэргэт.',
'actioncomplete' => 'Дьайыы оҥоһулунна',
+'actionfailed' => 'Дьайыы оҥоһуллубата',
'deletedtext' => '«<nowiki>$1</nowiki>» сотуллубут.
Бүтэһик сотуулар испииһэктэрин манна: $2 көр.',
'deletedarticle' => '"[[$1]]" сотуллубут',
@@ -1795,19 +1933,20 @@ $NEWPAGE
'delete-warning-toobig' => 'Бу сирэй уларыылара уһун историялаах, хас да ($1) {{PLURAL:$1|хат көрүүлээх|хат көрүүлэрдээх}}. Маны соттоххуна, {{SITENAME}} билэтин тиһигин алдьатыан сөп; салгыыр буоллаххына сэрэнэн үлэлээ.',
# Rollback
-'rollback' => 'Уруккутугар төннөр',
-'rollback_short' => 'Төннөрүү',
-'rollbacklink' => 'төннөр',
-'rollbackfailed' => 'Төннөрөргө моһуок үөскээтэ',
-'cantrollback' => 'Төннөрөр кыах суох; бүтэһик көннөрүүнү оҥорбут киһи бу сирэй соҕотох ааптара буолар.',
-'alreadyrolled' => 'Бүтэһик [[User:$2|$2]] ([[User talk:$2|Ырытыы]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) оҥорбут [[:$1]] уларытыыларын төннөрөр кыах суох;
+'rollback' => 'Уруккутугар төннөр',
+'rollback_short' => 'Төннөрүү',
+'rollbacklink' => 'төннөр',
+'rollbackfailed' => 'Төннөрөргө моһуок үөскээтэ',
+'cantrollback' => 'Төннөрөр кыах суох; бүтэһик көннөрүүнү оҥорбут киһи бу сирэй соҕотох ааптара буолар.',
+'alreadyrolled' => 'Бүтэһик [[User:$2|$2]] ([[User talk:$2|Ырытыы]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) оҥорбут [[:$1]] уларытыыларын төннөрөр кыах суох;
ким эрэ атын номнуо бу сирэйи уларыппыт эбэтэр уруккутун төннөрбүт.
Кэнники уларытыыны [[User:$3|$3]] ([[User talk:$3|Ырытыы]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) оҥорбут.',
-'editcomment' => "Уларытыыны маннык быһаарбыттар: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '([[User talk:$2|Ырытыы]]) көннөрүүлэрэ: [[Special:Contributions/$2|$2]] бу торумҥа: [[User:$1|$1]] төннөрүлүннүлэр', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 көннөрүүлэр бу торумҥа төннөрүлүннүлэр: $2.',
-'sessionfailure' => 'Арааһа туох эрэ сатаммата, дьайыыҥ оҥоһуллубата. Браузергар "Төнүн" тимэҕи баттаа уонна бу иннинээҕи сирэйгин иккистээн киллэрэн көр.',
+'editcomment' => "Уларытыыны маннык быһаарбыттар: \"''\$1''\".",
+'revertpage' => '([[User talk:$2|Ырытыы]]) көннөрүүлэрэ: [[Special:Contributions/$2|$2]] бу торумҥа: [[User:$1|$1]] төннөрүлүннүлэр',
+'revertpage-nouser' => 'Бу киһи (аата көстүбэт) уларытыылара бу киһи барылыгар төннөрүлүннүлэр [[User:$1|$1]]',
+'rollback-success' => '$1 көннөрүүлэр бу торумҥа төннөрүлүннүлэр: $2.',
+'sessionfailure' => 'Арааһа туох эрэ сатаммата, дьайыыҥ оҥоһуллубата. Браузергар "Төнүн" тимэҕи баттаа уонна бу иннинээҕи сирэйгин иккистээн киллэрэн көр.',
# Protect
'protectlogpage' => 'Харысхал сурунаала (көннөрүүттэн көмүскэммит билэлэр испииһэктэрэ)',
@@ -1824,7 +1963,7 @@ $NEWPAGE
'protectexpiry' => 'Бүтүөхтээх:',
'protect_expiry_invalid' => 'Уларытыыны хааччахтааһын болдьоҕун кэмэ сатаан турбата.',
'protect_expiry_old' => 'Болдьох кэмэ сыыһа ааспыт кэмҥэ турбут.',
-'protect-unchain' => 'Ааты уларытыыны көҥүллээ',
+'protect-unchain-permissions' => 'Көмүскээһин эбии туруорууларын арый',
'protect-text' => "Эн '''<nowiki>$1</nowiki>''' сирэй уларытыытын таһымын көрүөххүн уонна уларытыаххын сөп.",
'protect-locked-blocked' => "Уларытыы таһымын учуотунай суругуҥ бобуллубут кэмигэр уларытар кыаҕыҥ суох.
'''$1''' сирэй уларытыытын таһыма:",
@@ -1853,7 +1992,7 @@ $NEWPAGE
** уларытыы мөккүөрүгэр аһара барыы
** элбэхтик туттуллар сирэй',
'protect-edit-reasonlist' => 'Уларытыыттан көмүскээһин төрүөтүн көннөрөн биэрии',
-'protect-expiry-options' => '1 чаас:1 hour,1 күн:1 day,1 нэдиэлэ:1 week,2 нэдиэлэ:2 weeks,1 ый:1 month,3 ый:3 months,6 ый:6 months,1 сыл:1 year, болдьоҕо суох:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 чаас:1 hour,1 күн:1 day,1 нэдиэлэ:1 week,2 нэдиэлэ:2 weeks,1 ый:1 month,3 ый:3 months,6 ый:6 months,1 сыл:1 year, болдьоҕо суох:infinite',
'restriction-type' => 'Маны оҥорор кыахтааххын:',
'restriction-level' => 'Киирии таһыма:',
'minimum-size' => 'Оччугуй',
@@ -1896,6 +2035,7 @@ $NEWPAGE
'undelete-nodiff' => 'Ханнык да иннинээҕи торум көстүбэтэ.',
'undeletebtn' => 'Төннөр',
'undeletelink' => 'көрүү/төннөрүү',
+'undeleteviewlink' => 'көрүү',
'undeletereset' => 'Саҥаттан',
'undeleteinvert' => 'Хараардыллыбыты инверсиялаа',
'undeletecomment' => 'Төрүөтэ:',
@@ -1933,19 +2073,23 @@ $1',
'contributions-title' => '$1 кыттааччы киллэрбит уларытыылара',
'mycontris' => 'Суруйуум тиһигэ',
'contribsub2' => 'Вклад $1 ($2)',
-'nocontribs' => 'Эппит критерийгэр эппиэттиир уларытыылар көстүбэтилэр.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Эппит критерийгэр эппиэттиир уларытыылар көстүбэтилэр.',
'uctop' => '(бүтэһик)',
'month' => 'Ый иһигэр:',
'year' => 'Сыл иһигэр:',
-'sp-contributions-newbies' => 'Саҥа эрэ ааттан оҥоһуллубут уларытыылары көрдөр',
-'sp-contributions-newbies-sub' => 'Саҥа ааттартан',
-'sp-contributions-newbies-title' => 'Саҥа бэйэлэрин билиһиннэрбит дьон уларытыылара',
-'sp-contributions-blocklog' => 'Бобуу сурунаала',
-'sp-contributions-logs' => 'сурунааллар',
-'sp-contributions-search' => 'Кыттааччы оҥорбут уларытыыларын көрдөөһүн',
-'sp-contributions-username' => 'IP аадырыһа эбэтэр аата:',
-'sp-contributions-submit' => 'Көрдөө',
+'sp-contributions-newbies' => 'Саҥа эрэ ааттан оҥоһуллубут уларытыылары көрдөр',
+'sp-contributions-newbies-sub' => 'Саҥа ааттартан',
+'sp-contributions-newbies-title' => 'Саҥа бэйэлэрин билиһиннэрбит дьон уларытыылара',
+'sp-contributions-blocklog' => 'Бобуу сурунаала',
+'sp-contributions-deleted' => 'кыттааччы сотуллубут көннөрүүлэрэ',
+'sp-contributions-logs' => 'сурунааллар',
+'sp-contributions-talk' => 'ырытыы',
+'sp-contributions-userrights' => 'кыттааччылар бырааптарын салайыы',
+'sp-contributions-blocked-notice' => 'Бу кыттааччы бырайыакка кыттара билигин бобуллубут. Хааччах сурунаалыгар ол туһунан бүтэһик сурук:',
+'sp-contributions-search' => 'Кыттааччы оҥорбут уларытыыларын көрдөөһүн',
+'sp-contributions-username' => 'IP аадырыһа эбэтэр аата:',
+'sp-contributions-submit' => 'Көрдөө',
# What links here
'whatlinkshere' => 'Манна сигэнэллэр',
@@ -1968,6 +2112,7 @@ $1',
# Block/unblock
'blockip' => 'IP аадырыстан киириини бобуу',
+'blockip-title' => 'Кыттааччыны бобуу',
'blockip-legend' => 'Кыттааччыны хааччахтааһын',
'blockiptext' => 'Ханнык эмит IP-ттан суруйары манна баар форманы туһанан боп.
Вандализмы утаран уонна [[{{MediaWiki:Policy-url}}]]
@@ -1993,7 +2138,7 @@ $1',
'ipbenableautoblock' => 'Кыттааччы туһаммыт IP-аадырыстарын боборго',
'ipbsubmit' => 'Бу кыттааччыны тохтот',
'ipbother' => 'Атын кэм:',
-'ipboptions' => '2 чаас:2 hours,1 күн:1 day,3 күн:3 days,1 нэдиэлэ:1 week,2 нэдиэлэ:2 weeks,1 ый:1 month,3 ый:3 months,6 ый:6 months,1 сыл:1 year,больдьоҕо суох:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 чаас:2 hours,1 күн:1 day,3 күн:3 days,1 нэдиэлэ:1 week,2 нэдиэлэ:2 weeks,1 ый:1 month,3 ый:3 months,6 ый:6 months,1 сыл:1 year,больдьоҕо суох:infinite',
'ipbotheroption' => 'атын',
'ipbotherreason' => 'Атын/эбии биричиинэлэр:',
'ipbhidename' => 'Кыттааччы аатын көннөрүүлэргэ уонна испииһэктэргэ көрдөрүмэ',
@@ -2022,9 +2167,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 быстах хааччахтааһын',
'ipblocklist-sh-addressblocks' => 'IP-ны $1 хааччахтааһын',
'ipblocklist-submit' => 'Бул',
+'ipblocklist-localblock' => 'Соҕотох бырайыакка хааччахтааһын',
+'ipblocklist-otherblocks' => 'Атын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}',
'blocklistline' => '$1, $2 хааччахтаабыт/боппут: $3 ($4)',
'infiniteblock' => 'болдьоҕо суох',
-'expiringblock' => 'болдьоҕо: $1',
+'expiringblock' => 'болдьоҕо: $1 $2',
'anononlyblock' => 'ааттамматахтары эрэ',
'noautoblockblock' => 'автоблокировка араарылынна',
'createaccountblock' => 'саҥа бэлиэтэнии бобуллубут',
@@ -2038,7 +2185,8 @@ $1',
'contribslink' => 'вклад',
'autoblocker' => 'Эн IP-ҥ "[[User:$1|$1]]" кыттааччыны кытта биир буолан, эн эмиэ хааччахтаныыга түбэстиҥ. Кини хааччахтаммыт төрүөтэ: "$2"',
'blocklogpage' => 'Хааччахтааһын/бобуу сурунаала',
-'blocklog-fulllog' => 'Хааччахтааһын сурунаалыгар барытыгар сыһыаннаах',
+'blocklog-showlog' => 'Бу кыттааччы бэлиэр хааччахтаммыт. Хааччах сурунаала аллара көстөр:',
+'blocklog-showsuppresslog' => 'Бу кыттааччы бэлиэр хааччахтаммыт уонна аата кистэммит. Аат кистээһин сурунаала аллара көстөр:',
'blocklogentry' => '[[$1]] хааччахтаата, болдьоҕо: $2 $3',
'reblock-logentry' => 'манна [[$1]] аналлаах хааччахтааһын туруоруулара уларыйда, болдьоҕо $2 $3',
'blocklogtext' => 'Кыттааччылары хааччахтааһын уонна ол хааччахтааһыннарын суох гыныы сурунаала.
@@ -2059,9 +2207,11 @@ $1',
'ipb_already_blocked' => '"$1" номнуо бобуллубут',
'ipb-needreblock' => '== Хааччахтаммыт эбит ==
$1 бэлиэр хааччахтаммыт. Хааччахтааһын туруорууларын уларытыаххын баҕараҕын дуо?',
+'ipb-otherblocks-header' => 'Атын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}',
'ipb_cant_unblock' => 'Алҕас: $1 нүөмэрдээх бобуу булуллубата. Баҕар кыттааччы хааччаҕын устубуттара буолуо.',
'ipb_blocked_as_range' => 'Сыыһа: $1 IP-та чопчу бобуллубатах (не блокирован), онон аһыллар кыаҕа суох. Ол гынан баран IP бу $2 диапазон сорҕотун быһыытынан бобуллубут, ону арыйыахха (бобуутун устуохха) сөп.',
'ip_range_invalid' => 'IP-лар диапазоннара сатаммат.',
+'ip_range_toolarge' => 'Мантан /$1 үөһэ диапазоннары хааччахтыыр сатаммат.',
'blockme' => 'Миигин боп (блокируйдаа)',
'proxyblocker' => 'Прокси бобуллуута',
'proxyblocker-disabled' => 'Бу дьайыы араарыллыбыт.',
@@ -2070,6 +2220,7 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'sorbsreason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар.',
'sorbs_create_account_reason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар. Саҥаттан бэлиэтэнэр кыаҕыҥ суох.',
'cant-block-while-blocked' => 'Бэйэҥ хааччахтаммыт кэмҥэр атын кыттааччылары хааччахтыыр кыаҕыҥ суох.',
+'cant-see-hidden-user' => 'Эн хааччахтаары гыммыт кыттааччыҥ урут хааччахтаммыт уонна кистэммит эбит. Кыттааччылары кистиир кыаҕыҥ суох буолан ол туһунан суругу көрөр да уларытар да быраабыҥ суох.',
# Developer tools
'lockdb' => 'Билии олоҕо (database) хатаммыт (көрүөххэ эрэ сөп)',
@@ -2113,6 +2264,7 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
Ити түгэннэргэ сирэйдэри бэйэҥ көһөрүөхтээххин эбэтэр холбуохтааххын.',
'movearticle' => 'Бу аатын уларыт:',
+'moveuserpage-warning' => "'''Болҕой:''' Эн кыттааччы тус сирэйин аатын уларытаары гынныҥ. Инньэ гыннаххына сирэй аата эрэ уларыйыа, кыттааччы бэйэтин аата уларыйыа '''суоҕа'''.",
'movenologin' => 'Ааккын билиһиннэрбэтэххин',
'movenologintext' => 'Эн аакын [[Special:UserLogin|билиһиннэрдэххинэ]] эрэ сирэй аатын уларытар кыахтаныаҥ.',
'movenotallowed' => 'Cирэйдэр ааттарын уларытар кыаҕыҥ суох.',
@@ -2123,7 +2275,7 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'move-watch' => 'Кэтээн көрөргө',
'movepagebtn' => 'Аатын уларыт',
'pagemovedsub' => 'Аата уларыйда',
-'movepage-moved' => '\'\'\'"$1" сирэй аата маннык буолла "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" сирэй аата маннык буолла "$2"\'\'\'',
'movepage-moved-redirect' => 'Утаарыы оҥоһулунна.',
'movepage-moved-noredirect' => 'Утаарыы-сирэй оҥорор бобуллубут.',
'articleexists' => 'Маннык ааттаах сирэй баар, эбэтэр
@@ -2166,6 +2318,14 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'imageinvalidfilename' => 'Билэ аата сыыһалаах',
'fix-double-redirects' => 'Утаарыылары урукку ааттарыгар төннөр',
'move-leave-redirect' => 'Утаарыыны хааллар',
+'protectedpagemovewarning' => "'''Сэрэтии. Бу сирэй уларытыыттан көмүскэммит, онон аатын дьаһабыллар эрэ уларытар кыахтаахтар.'''
+Аллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
+'semiprotectedpagemovewarning' => "'''Биллэрии:''' Бу сирэй уларытыыттан көмүскэммит, онон бэлиэтэммит эрэ кыттааччылар аатын уларытар кыахтаахтар.
+Аллара сурунаал бүтэһик барыла көрдөрүлүннэ:",
+'move-over-sharedrepo' => '== Маннык билэ баар ==
+Уопсай хааһахха [[:$1]] баар эбит. Билэни маннык ааттаатаххына ол билэни бүөлээн кэбиһиэҥ.',
+'file-exists-sharedrepo' => 'Маннык ааттаах билэ уопсай хааһахха баар эбит.
+Атын аатта тал.',
# Export
'export' => 'Сирэйдэри таска таһаарааһын (export)',
@@ -2191,15 +2351,21 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'export-pagelinks' => 'Бачча дириҥҥэ дылы ситимнээх сирэйдэри киллэр:',
# Namespace 8 related
-'allmessages' => 'Систиэмэ (тиһик) биллэриилэрэ',
-'allmessagesname' => 'Биллэрии',
-'allmessagesdefault' => 'Туспа этиллибэтэҕинэ суруллар тиэкис',
-'allmessagescurrent' => 'Билиҥҥи тиэкис',
-'allmessagestext' => 'Манна MediaWiki биллэриилэрин испииһэгэ көстөр.
+'allmessages' => 'Систиэмэ (тиһик) биллэриилэрэ',
+'allmessagesname' => 'Биллэрии',
+'allmessagesdefault' => 'Туспа этиллибэтэҕинэ суруллар тиэкис',
+'allmessagescurrent' => 'Билиҥҥи тиэкис',
+'allmessagestext' => 'Манна MediaWiki биллэриилэрин испииһэгэ көстөр.
Эн MediaWiki движогун тылбаастыырга көмөлөһүөххүн баҕарар буоллаххына манна [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] уонна манна [http://translatewiki.net translatewiki.net] киир.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' туттуллар кыаҕа суох, тоҕо диэтэххэ '''\$wgUseDatabaseMessages''' араарыллыбыт.",
-'allmessagesfilter' => 'Сурук аатын фильтра:',
-'allmessagesmodified' => 'Уларыйбыттары эрэ көрдөр',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' туттуллар кыаҕа суох, тоҕо диэтэххэ '''\$wgUseDatabaseMessages''' араарыллыбыт.",
+'allmessages-filter-legend' => 'Сиидэ',
+'allmessages-filter' => 'Уларытыы көрүҥүнэн наардыыр сиидэ:',
+'allmessages-filter-unmodified' => 'Уларытыллыбатахтар',
+'allmessages-filter-all' => 'Бары (барыта)',
+'allmessages-filter-modified' => 'Уларытыллыбыттар',
+'allmessages-prefix' => 'Префиксынан сиидэлиир:',
+'allmessages-language' => 'Тыла:',
+'allmessages-filter-submit' => 'Көс',
# Thumbnails
'thumbnail-more' => 'Улаатыннар',
@@ -2209,6 +2375,9 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'djvu_no_xml' => 'DjVu билэтигэр аналлаах XML кыайан ылыллыбата',
'thumbnail_invalid_params' => 'Кыра ойуу кээмэйэ сыыһалаах',
'thumbnail_dest_directory' => 'Наадалаах каталогы оҥорор табыллыбата',
+'thumbnail_image-type' => 'Маннык ойуу көрүҥэ манна туттуллубат',
+'thumbnail_gd-library' => 'GD бибилитиэкэ толору конфигурацията суох, бу функция суох: $1',
+'thumbnail_image-missing' => 'Арааһа бу билэ суох быһыылаах: $1',
# Special:Import
'import' => 'Сирэйдэри импортааһын',
@@ -2272,6 +2441,7 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'tooltip-ca-viewsource' => 'Бу сирэй улартыллыбат. Ол гынан баран тутулун көрүөххүн уонна устан ылыаххын сөп.',
'tooltip-ca-history' => 'Бу сирэй урукку торумнара.',
'tooltip-ca-protect' => 'Бу сирэйи уларытары боборго',
+'tooltip-ca-unprotect' => 'Бу сирэйтэн көмүскэлин уһул',
'tooltip-ca-delete' => 'Бу сирэйи суох гын',
'tooltip-ca-undelete' => 'Сирэй сотулла илигинэ оҥоһуллубут уларытыыларын төннөрөргө',
'tooltip-ca-move' => 'Аатын уларытарга',
@@ -2282,6 +2452,7 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'tooltip-search-fulltext' => 'Сирэйдэргэ бу тиэкиһи көрдөө',
'tooltip-p-logo' => 'Сүрүн сирэй',
'tooltip-n-mainpage' => 'Сүрүн сирэйгэ барыы',
+'tooltip-n-mainpage-description' => 'Сүрүн сирэйгэ',
'tooltip-n-portal' => 'Бу бырайыак туһунан, манна тугу гыныаххытын сөбүй уонна туох ханна баара',
'tooltip-n-currentevents' => 'Найдите вводную информацию на текущих событиях',
'tooltip-n-recentchanges' => 'Бу биикигэ буолбут бүтэһик уларытыылар.',
@@ -2335,10 +2506,12 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
# Attribution
'anonymous' => '{{SITENAME}} ааттамматах {{PLURAL:$1|кыттааччыта|кыттааччылара}}',
'siteuser' => '{{SITENAME}} кыттааччыта $1',
-'lastmodifiedatby' => 'Бу сирэйи бүтэһигин $3 кыттааччы $2 уларыппыт, $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} бэйэтин билиһиннэрбэтэх кыттааччыта $1',
+'lastmodifiedatby' => 'Бу сирэйи бүтэһигин $3 кыттааччы $2 уларыппыт, $1.',
'othercontribs' => '$1 үлэтигэр олоҕурбут.',
'others' => 'атыттар',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|кыттааччыта|кыттааччылара}} $1',
+'anonusers' => '{{SITENAME}} бэйэтин билиһиннэрбэтэх {{PLURAL:$2|кыттааччыта|кыттаачылара}} $1',
'creditspage' => 'Махтаныы',
'nocredits' => 'Бу сирэй кыттааччыларын испииһэгэ суох.',
@@ -2375,11 +2548,22 @@ $1 бэлиэр хааччахтаммыт. Хааччахтааһын туру
'mw_math_modern' => 'Аныгы браузердарга анаан',
'mw_math_mathml' => 'Сатаннаҕына MathML туһан (experimental)',
+# Math errors
+'math_failure' => 'Сатаан ааҕыллыбата',
+'math_unknown_error' => 'биллибэт алҕас',
+'math_unknown_function' => 'биллибэт дьайыы (функция)',
+'math_lexing_error' => 'лексиката алҕастаах',
+'math_syntax_error' => 'синтаксис алҕаһа',
+'math_image_error' => 'PNG-га уларытыы сатаммата; latex, dvips, gs, уонна convert туруоруулара сөбүн көр',
+'math_bad_tmpdir' => 'Математика быстах кэмнээҕи директорията сатаан оҥоһуллубута',
+'math_bad_output' => 'Математика таһынааҕы директорията сатаан оҥоһуллубата',
+'math_notexvc' => 'texvc кыайан толоруллубата; маны math/README көр.',
+
# Patrolling
'markaspatrolleddiff' => 'Бэрэбиэркэлэммит курдук бэлиэтээ',
'markaspatrolledtext' => 'Бу ыстатыйаны бэрэбиэркэлэммит курдук бэлиэтээ',
'markedaspatrolled' => 'Бэрэбиэркэлэммит курдук бэлиэтэннэ',
-'markedaspatrolledtext' => 'Талбыт торумуҥ бэрэбиэркэлэммит курдук бэлиэтэннэ.',
+'markedaspatrolledtext' => '[[:$1]] ыстатыйа барыла ботуруулламмыт курдук бэлиэтэннэ.',
'rcpatroldisabled' => 'Кэлиҥҥи уларытыылары бэрэбиэркэлиир бобулунна',
'rcpatroldisabledtext' => 'Бүтэһик уларытыылары бэрэбиэкэлээһин арахсан турар.',
'markedaspatrollederror' => 'Бэрэбиэркэлэммит курдук бэлиэтиир сатаммата',
@@ -2409,13 +2593,10 @@ $1',
'previousdiff' => '← Иннинээҕи уларытыыга',
'nextdiff' => 'Кэннинээҕи уларытыыга →',
-# Visual comparison
-'visual-comparison' => 'Тэҥнээн көрүү',
-
# Media information
'mediawarning' => "'''Сэрэтии''': Бу билэ иһигэр бырагыраамма куода баар.
Куһаҕан буоллаҕына систиэмэни алдьатыан сөп.",
-'imagemaxsize' => 'Ойуу сирэйдэрин ойууларын бу кээмэйгэ дылы кыччат:',
+'imagemaxsize' => "Ойуу улаханын хааччахтааһын:<br />''(билэ туһунан сирэйгэ аналлаах)''",
'thumbsize' => 'Кыра ойуу (миниатюра) кээмэйэ:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|сирэй|сирэй}}',
'file-info' => '(билэ кээмэйэ: $1, MIME тиибэ: $2)',
@@ -2424,6 +2605,8 @@ $1',
'svg-long-desc' => '(SVG билэ, номинальнай кээмэйэ $1 × $2 пииксэл, билэ кээмэйэ: $3)',
'show-big-image' => 'Ойуу бэйэтин толору кээмэйэ',
'show-big-image-thumb' => '<small>Хачайдыах иннинэ көрүү кээмэйэ: $1 × $2 пииксэл</small>',
+'file-info-gif-looped' => 'хатаммыт (бобуллубут)',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фреймнаах|фреймнардаах}}',
# Special:NewFiles
'newimages' => 'Саҥа билэлэр галереялара',
@@ -2459,7 +2642,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Кэтитэ',
@@ -2587,14 +2770,14 @@ $1',
'exif-unknowndate' => 'Күнэ-ыйа биллибэт',
-'exif-orientation-1' => 'Нуорма', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Сытыары көстүбүт', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° эргитиллибит', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Туруору көстүбүт', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° чаһы утары эргитиллибит уонна туруору көстүбүт', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° чаһы хоту эргитиллибит', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° чаһы хоту эргитиллибит уонна туруору көстүбүт', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° чаһы утары эргитиллибит', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нуорма',
+'exif-orientation-2' => 'Сытыары көстүбүт',
+'exif-orientation-3' => '180° эргитиллибит',
+'exif-orientation-4' => 'Туруору көстүбүт',
+'exif-orientation-5' => '90° чаһы утары эргитиллибит уонна туруору көстүбүт',
+'exif-orientation-6' => '90° чаһы хоту эргитиллибит',
+'exif-orientation-7' => '90° чаһы хоту эргитиллибит уонна туруору көстүбүт',
+'exif-orientation-8' => '90° чаһы утары эргитиллибит',
'exif-planarconfiguration-1' => '"chunky" формат',
'exif-planarconfiguration-2' => '"planar" формат',
@@ -2716,7 +2899,7 @@ $1',
'exif-gpsmeasuremode-2' => '2 координаатаны кээмэйдээһин',
'exif-gpsmeasuremode-3' => '3 координаатаны кээмэйдээһин',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'км/чаас',
'exif-gpsspeed-m' => 'Миляны чааска',
'exif-gpsspeed-n' => 'Узел',
@@ -2735,6 +2918,7 @@ $1',
'watchlistall2' => 'бары',
'namespacesall' => 'бары',
'monthsall' => 'бары',
+'limitall' => 'бары',
# E-mail address confirmation
'confirmemail' => 'Электроннай аадырыһы бигэргэтии',
@@ -2862,7 +3046,7 @@ $1',
'duplicate-defaultsort' => 'Болҕой: Наардааһын «$2» күлүүһэ урукку «$1» күлүүһү сабар (Ключ сортировки переопределяет прежний ключ).',
# Special:Version
-'version' => 'MediaWiki барыла (биэрсийэтэ)', # Not used as normal message but as header for the special page itself
+'version' => 'MediaWiki барыла (биэрсийэтэ)',
'version-extensions' => 'Туруоруллубут расширениялар',
'version-specialpages' => 'Аналлаах сирэйдэр',
'version-parserhooks' => 'синтаксическай анализатор перехватчиктара',
@@ -2876,7 +3060,7 @@ $1',
'version-skin-extension-functions' => 'Оформление темаларын расширенияларын функцията',
'version-hook-name' => 'Перехватчик аата',
'version-hook-subscribedby' => 'Суруттарыыта:',
-'version-version' => 'Торум',
+'version-version' => '(Торум $1)',
'version-license' => 'Лиссиэнзийэ',
'version-software' => 'Туруоруллубут бырагырааммалар',
'version-software-product' => 'Бородуукта',
@@ -2956,4 +3140,15 @@ $1',
'dberr-outofdate' => 'Индэксэ эргэрбит буолуон сөбүн умнума.',
'dberr-cachederror' => 'Сирэй кээштэммит барыла көстөр, баҕар эргэрбит буолуон сөп.',
+# HTML forms
+'htmlform-invalid-input' => 'Киллэрбит сибидиэнньэҥ сорҕото алҕаһы таһаарда',
+'htmlform-select-badoption' => 'Ыйбыт туруоруугун манна ыйар сатаммат.',
+'htmlform-int-invalid' => 'Эппит чыыһылаҥ төгүрүк буолбатах.',
+'htmlform-float-invalid' => 'Эн суруйбутуҥ чыыһыла буолбатах.',
+'htmlform-int-toolow' => 'Эппит чыыһылаҥ минимальнайтан кыра — $1',
+'htmlform-int-toohigh' => 'Эппит чыыһылаҥ максимальнайтан улахан — $1',
+'htmlform-submit' => 'Ыыт',
+'htmlform-reset' => 'Уларытыыны төннөр',
+'htmlform-selectorother-other' => 'Атын',
+
);
diff --git a/languages/messages/MessagesSc.php b/languages/messages/MessagesSc.php
index 9e5b6bc4..e5a29b56 100644
--- a/languages/messages/MessagesSc.php
+++ b/languages/messages/MessagesSc.php
@@ -13,15 +13,29 @@
*/
$namespaceNames = array(
- NS_SPECIAL => 'Speciale',
- NS_MAIN => '',
- NS_TALK => 'Contièndha',
- NS_USER => 'Utente',
- NS_USER_TALK => 'Utente_discussioni',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_discussioni',
- NS_FILE => 'Immàgini',
- NS_FILE_TALK => 'Immàgini_contièndha'
+ NS_SPECIAL => 'Ispetziale',
+ NS_TALK => 'Cuntierra',
+ NS_USER => 'Usuàriu',
+ NS_USER_TALK => 'Cuntierra_usuàriu',
+ NS_PROJECT_TALK => 'Cuntierra_$1',
+ NS_FILE => 'File',
+ NS_FILE_TALK => 'Cuntierra_file',
+ NS_MEDIAWIKI_TALK => 'Cuntierra_MediaWiki',
+ NS_TEMPLATE_TALK => 'Cuntierra_template',
+ NS_HELP => 'Agiudu',
+ NS_HELP_TALK => 'Cuntierra_agiudu',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Cuntierra_categoria',
+);
+
+$namespaceAliases = array(
+ 'Speciale' => NS_SPECIAL,
+ 'Contièndha' => NS_TALK,
+ 'Utente' => NS_USER,
+ 'Utente_discussioni' => NS_USER_TALK,
+ '$1_discussioni' => NS_PROJECT_TALK,
+ 'Immàgini' => NS_FILE,
+ 'Immàgini_contièndha' => NS_FILE_TALK
);
$dateFormats = array(
@@ -71,6 +85,7 @@ $messages = array(
'tog-enotifminoredits' => 'Spedi·mi una missada eletrònica fintzas pro is acontzos minores de is pàginas',
'tog-enotifrevealaddr' => "Faghe schire s'indiritzu e-mail miu in is notìficas de is e-mails",
'tog-shownumberswatching' => 'Ammustra su nùmeru de is usuàrios ca sunt ponende ogru a sa pàgina',
+'tog-oldsig' => 'Antiprima de sa firma atuale:',
'tog-fancysig' => 'Trata sa firma comente unu testu wiki (chentza cullegamentos automaticos)',
'tog-uselivepreview' => 'Imprea sa funtzione "live preview" (esigit JavaScript) (sperimentale)',
'tog-watchlisthideown' => 'Cua is acontzos meos dae sa watclist',
@@ -86,6 +101,13 @@ $messages = array(
'underline-never' => 'Mai',
'underline-default' => 'Definiduras dae su browser tuo',
+# Font style option in Special:Preferences
+'editfont-style' => "Stile lìteras in s'àrea de acontzu:",
+'editfont-default' => 'Definidu dae su browser',
+'editfont-monospace' => 'Font monospàtziu',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Domìnigu',
'monday' => 'Lunis',
@@ -145,7 +167,7 @@ $messages = array(
'category-media-header' => 'Mèdios in sa categoria "$1"',
'category-empty' => "''In custa categoria non bi est peruna pàgina o mèdiu.''",
'hidden-categories' => '{{PLURAL:$1|Categoria cuada|Categorias cuadas}}',
-'hidden-category-category' => 'Categorias cuadas', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorias cuadas',
'category-subcat-count' => "{{PLURAL:$2|Custa categoria cuntenet un'ùnica subcategoria ammustrada a suta.|Custa categoria cuntenet {{PLURAL:$1|sa subcategoria indicada|$1 subcategorias indicadas}} a suta, de $2 totales.}}",
'category-subcat-count-limited' => 'Custa categoria tenet {{PLURAL:$1|una subcategoria, ammustrada|$1 subcategorias, ammustradas}} a suta.',
'category-article-count' => '{{PLURAL:$2|Custa categoria cuntènnit isceti sa pàgina chi sighit.|Custa categoria cuntènnit {{PLURAL:$1|sa pàgina indicada|is $1 pàginas indicadas}} a suta, dae unu totale de $2.}}',
@@ -153,14 +175,24 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Custa categoria cuntenet feti su file ki sighit.|{{PLURAL:$1|Su file ki sighit est|Is $1 files ki sighint sunt}} in custa categoria, dae $2 totales.}}',
'category-file-count-limited' => '{{PLURAL:$1|Su file ki sighit est|Is $1 files ki sighint sunt}} in sa categoria currente.',
'listingcontinuesabbrev' => 'sighit',
+'index-category' => 'Pàginas indicizadas',
+'noindex-category' => 'Pàginas no indicitzadas',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''MediaWiki est stadu installadu in modu currègidu.'''",
-'about' => 'A propòsitu de',
-'article' => 'Artìculu',
-'newwindow' => '(aberit in una bentana noa)',
-'cancel' => 'Burra',
+'about' => 'A propòsitu de',
+'article' => 'Artìculu',
+'newwindow' => '(aberit in una bentana noa)',
+'cancel' => 'Burra',
+'moredotdotdot' => 'Àteru…',
+'mypage' => 'Sa pàgina mea',
+'mytalk' => 'Cuntierras meas',
+'anontalk' => 'Cuntierras pro custu IP',
+'navigation' => 'Navigadura',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Busca',
'qbbrowse' => 'Nàviga',
'qbedit' => 'Acontza',
@@ -168,15 +200,34 @@ $messages = array(
'qbpageinfo' => 'Cuntestu de sa pàgina',
'qbmyoptions' => 'Is preferèntzias meas',
'qbspecialpages' => 'Pàginas spetziales',
-'moredotdotdot' => 'Àteru…',
-'mypage' => 'Sa pàgina mea',
-'mytalk' => 'Cuntierras meas',
-'anontalk' => 'Cuntierras pro custu IP',
-'navigation' => 'Navigadura',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadatos:',
+'faq' => 'Pregontas/Respostas (FAQ)',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Agiungi cuntierra',
+'vector-action-delete' => 'Cantzella',
+'vector-action-move' => 'Move',
+'vector-action-protect' => 'Ampara',
+'vector-action-undelete' => 'Recùpera',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Pàgina de agiudu',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pàgina',
+'vector-namespace-media' => 'Pàgina de multimedia',
+'vector-namespace-mediawiki' => 'Messàgiu',
+'vector-namespace-project' => 'Pàgina de servìtziu',
+'vector-namespace-special' => 'Pàgina spetziale',
+'vector-namespace-talk' => 'Cuntierra',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'Pàgina usuàriu',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Acontza',
+'vector-view-history' => 'Càstia istòria',
+'vector-view-view' => 'Leghe',
+'vector-view-viewsource' => 'Càstia mitza',
+'actions' => 'Atziones',
+'namespaces' => 'Nùmene-logos',
+'variants' => 'Variantes',
'errorpagetitle' => 'Faddina',
'returnto' => 'Torra a $1.',
@@ -226,7 +277,7 @@ $messages = array(
'otherlanguages' => 'Àteras limbas',
'redirectedfrom' => '(Reindiritzadu dae $1)',
'redirectpagesub' => 'Pàgina de reindiritzadura',
-'lastmodifiedat' => 'Ùrtimu acontzu su $1, a is $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ùrtimu acontzu su $1, a is $2.',
'viewcount' => 'Custu artìculu est stadu lìgiu {{PLURAL:$1|borta|$1 bortas}}.',
'protectedpage' => 'Pàgina amparada',
'jumpto' => 'Bae a:',
@@ -237,7 +288,6 @@ $messages = array(
'aboutsite' => 'A propòsitu de {{SITENAME}}',
'aboutpage' => 'Project:Informatziones',
'copyright' => 'Cuntènnidu a suta licèntzia $1.',
-'copyrightpagename' => 'Copyright de {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Noas',
'currentevents-url' => 'Project:Noas',
@@ -245,8 +295,6 @@ $messages = array(
'disclaimerpage' => 'Project:Abbertimentos generales',
'edithelp' => "Agiudu pro s'acontzu o sa scritura",
'edithelppage' => 'Help:Acontzare',
-'faq' => 'Pregontas/Respostas (FAQ)',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Agiudu',
'mainpage' => 'Pàgina Base',
'mainpage-description' => 'Pàgina Base',
@@ -317,9 +365,6 @@ S\'ùrtima consulta imbiada a su database est istada:
<blockquote><tt>$1</tt></blockquote>
aintru de sa funtzione "<tt>$2</tt>".
Su database at torradu custa faddina "<tt>$3: $4</tt>".',
-'noconnect' => 'Connessione a su database faddia pro unu problema tennicu de su giassu.<br />
-$1',
-'nodb' => 'Seletzione de su database $1 no arrenèxia',
'readonly' => 'Database bloccadu',
'enterlockreason' => 'Inserta su motivu de su bloccu, ispetzifichende su momentu probabile chi su bloccu at a acabai',
'readonlytext' => "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.
@@ -342,7 +387,8 @@ Pro praxere signa s\'acuntèssidu a unu [[Special:ListUsers/sysop|amministradore
'unexpected' => 'Valore non previstu: "$1"="$2".',
'formerror' => 'Errore: impossìbile imbiare su modellu',
'badarticleerror' => 'Operatzione non cunsentida pro custa pàgina.',
-'cannotdelete' => "Impossibile cancellare la pagina o l'immagine richiesta.",
+'cannotdelete' => 'No est stadu possìbile burrare sa pàgina o su file "$1".
+Podet èsser stadu burradu dae calicunu àteru.',
'badtitle' => 'Tìtulu malu',
'badtitletext' => "Su tìtulu de sa pàgina ch'as pediu est bùidu, isballiau, o iscritu in is cullegamentus inter-wiki in manera non currègia o cun caràteres no amìtius.",
'viewsource' => 'Càstia mitza',
@@ -357,7 +403,6 @@ Pro praxere signa s\'acuntèssidu a unu [[Special:ListUsers/sysop|amministradore
'virus-unknownscanner' => 'antivirus disconnotu:',
# Login and logout pages
-'logouttitle' => 'Bessida usuàriu',
'logouttext' => "'''As acabadu sa sessione.'''
Immoe podes sighire a impreare {{SITENAME}} in forma anònima, o ti podes [[Special:UserLogin|identificare torra]] comente su de prima o comente usuàriu diferente.
@@ -365,7 +410,6 @@ Tene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighir
'welcomecreation' => "== Benènnidu, $1! ==
S'account tuo est istadu creadu.
No iscaressa de personalizare sas [[Special:Preferences|preferèntzias de {{SITENAME}}]].",
-'loginpagetitle' => 'Login usuàriu',
'yourname' => 'Nùmene usuàriu',
'yourpassword' => 'Password:',
'yourpasswordagain' => 'Repite sa password:',
@@ -375,6 +419,7 @@ No iscaressa de personalizare sas [[Special:Preferences|preferèntzias de {{SITE
'nav-login-createaccount' => 'Intra / crea account',
'loginprompt' => "Est netzessàriu abilitare is ''cookies'' pro si registrare in {{SITENAME}}.",
'userlogin' => 'Intra / crea account',
+'userloginnocreate' => 'Intra',
'logout' => 'Serra sessione',
'userlogout' => 'Essida',
'notloggedin' => 'Non ses intradu',
@@ -387,17 +432,6 @@ No iscaressa de personalizare sas [[Special:Preferences|preferèntzias de {{SITE
'badretype' => 'Sas passwords chi as insertau non currenspundint.',
'userexists' => 'Su nùmene usuàriu insertadu est giai impreadu.
Sèbera unu nùmene diferente.',
-'youremail' => 'E-mail:',
-'username' => 'Nùmene usuàriu:',
-'uid' => 'ID usuàriu:',
-'yourrealname' => 'Nùmene beru:',
-'yourlanguage' => 'Limba:',
-'yournick' => 'Sa firma tua:',
-'yourgender' => 'Natura:',
-'gender-unknown' => 'Non spetzificadu',
-'gender-male' => 'Mascu',
-'gender-female' => 'Fèmina',
-'email' => 'E-mail',
'loginerror' => 'Faddina de identificatzione',
'noname' => 'Su nùmene usuàriu insertadu no est vàlidu.',
'loginsuccesstitle' => 'Ti ses identificadu',
@@ -409,6 +443,8 @@ Verìfica su nùmene insertadu o [[Special:UserLogin/signup|crea unu account nou
'wrongpassword' => 'Sa password insertada no est bona. Prova torra.',
'wrongpasswordempty' => 'No as scritu sa password.
Prova torra.',
+'passwordtooshort' => 'Is passwords depent tènner a su mancu {{PLURAL:$1|1 caràtere|$1 caràteres}}.',
+'password-name-match' => 'Sa password tua depet èsser diferente dae su nùmene usuàriu tuo.',
'mailmypassword' => "Ispedi una password noa a s'indiritzu e-mail miu",
'passwordremindertitle' => 'Servitziu Password Reminder di {{SITENAME}}',
'passwordremindertext' => 'Calicunu (probabilmenti tue, cun s\'indiritzu IP $1) at pediu de arritziri una password noa pro intrare a {{SITENAME}} ($4).
@@ -438,6 +474,7 @@ Pro praxere, cando dda retzis identìfica·ti torra.',
'resetpass_forbidden' => 'No est possìbile cambiare is passwords',
'resetpass-no-info' => 'Depes èsser identificadu pro abèrrer custa pàgina deretu.',
'resetpass-submit-loggedin' => 'Càmbia password',
+'resetpass-submit-cancel' => 'Burra',
'resetpass-temp-password' => 'Password temporànea:',
# Edit page toolbar
@@ -506,6 +543,7 @@ Si ses intradu inoghe pro sbàlliu, carca in su browser tuo su butone '''back/in
Podes [[Special:Search/{{PAGENAME}}|chircare custu tìtulu]] in àteras pàginas, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chircare in is registros ligados] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} acontzare sa pàgina]</span>.',
'userpage-userdoesnotexist' => 'S\'account de s\'usuàriu "$1" no est stadu registradu.
Pro praxere abbàida si boles creare/acontzare custa pàgina.',
+'userpage-userdoesnotexist-view' => 'S\'account de s\'usuàriu "$1" no est stadu registradu.',
'updated' => '(Agiornadu)',
'note' => "'''Nota:'''",
'previewnote' => "'''Regorda·ti ca custa est feti una ANTIPRIMA. Is mudàntzias tuas non sunt galu sarbadas!'''",
@@ -526,15 +564,18 @@ Si dda sarbas de aici, totu is acontzos fatos a pustis de custa revisione ant a
'yourdiff' => 'Diferèntzias',
'copyrightwarning' => "Abbàida, pro praxere, ki totu is contributziones a {{SITENAME}} sunt cunsideradas lassadas a suta permissu de tipu $2 (càstia $1 pro nde schire de prus). Si non keris ki su scritu tuo potzat èsser acontzadu e re-distribuidu dae kie si siat sena piedade e sena àteros lìmites, non ddu imbies a {{SITENAME}}.<br />
Cun s'imbiu de custu scritu ses garantende, a responsabilidade tua, si su scritu ddu as cumpostu tue de persona e in originale, o puru si est stadu copiadu dae una fonte de domìniu pùblicu, o una fonte de gasi, o puru si as otentu permissu craru de impreare custu scritu e si ddu podes dimustrare. '''NO IMPREARE MATERIALE COBERTU DAE DERETU DE AUTORE SENA PERMISSU CRARU!'''",
-'templatesused' => 'Templates impreaus in custa pàgina:',
-'templatesusedpreview' => 'Templates impreadus in custa antiprima:',
-'templatesusedsection' => 'Templates impreaus in custa setzione:',
+'templatesused' => '{{PLURAL:$1|Template impreadu|Templates impreados}} in custa pàgina:',
+'templatesusedpreview' => '{{PLURAL:$1|Template impreadu|Templates impreados}} in custa antiprima:',
+'templatesusedsection' => '{{PLURAL:$1|Template impreadu|Templates impreados}} in custa setzione:',
'template-protected' => '(amparadu)',
'template-semiprotected' => '(mesu-amparadu)',
'hiddencategories' => 'Custa pàgina faghet parte de {{PLURAL:$1|1 categoria cuada|$1 categorias cuadas}}:',
'nocreatetitle' => 'Creatzione de pàginas limitada',
'permissionserrors' => 'Faddina de permissos',
'permissionserrorstext-withaction' => 'Non tenes su permissu de $2, pro {{PLURAL:$1|custu motivu|custus motivus}}:',
+'moveddeleted-notice' => 'Custa pàgina est istada fuliada.
+Su registru de is fuliaduras e moviduras de sa pàgina est ammustradu pro informatzione.',
+'log-fulllog' => 'Abbista su registru intreu',
'edit-conflict' => 'Cunflitu de editzione.',
# History pages
@@ -542,7 +583,8 @@ Cun s'imbiu de custu scritu ses garantende, a responsabilidade tua, si su scritu
'nohistory' => "Non b'est sa stòria de is acontzos pro custa pàgina.",
'currentrev' => 'Revisione currente',
'currentrev-asof' => 'Versione currente de is $1',
-'revisionasof' => 'Arrevisione de is $1',
+'revisionasof' => 'Revisione de is $1',
+'revision-info' => 'Revisione de is $1 dae $2',
'previousrevision' => '← Acontzu in antis',
'nextrevision' => 'Acontzu in fatu →',
'currentrevisionlink' => 'Revisione currente',
@@ -555,26 +597,29 @@ Cun s'imbiu de custu scritu ses garantende, a responsabilidade tua, si su scritu
Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente,
'''({{int:last}})''' = diferèntzias cun sa versione in antis, '''{{int:minoreditletter}}''' = acontzu minore.",
'history-fieldset-title' => 'Sfògia sa stòria',
-'deletedrev' => '[fuliada]',
'histfirst' => 'Prima',
'histlast' => 'Ùrtima',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
'historyempty' => '(bùida)',
# Revision feed
-'history-feed-item-nocomment' => '$1 su $2', # user at time
+'history-feed-item-nocomment' => '$1 su $2',
# Revision deletion
-'rev-delundel' => 'ammustra/cua',
-'revdel-restore' => 'Muda sa visibilidade',
-'pagehist' => 'Istòria de sa pàgina',
-'deletedhist' => 'Istòria fuliada',
-'revdelete-content' => 'cuntènnidu',
-'revdelete-uname' => 'nùmene usuàriu',
-'revdelete-hid' => 'cua $1',
-'revdelete-unhid' => 'ammustra $1',
-'revdelete-log-message' => '$1 pro $2 {{PLURAL:$2|revisione|revisiones}}',
-'logdelete-log-message' => '$1 pro $2 {{PLURAL:$2|eventu|eventos}}',
+'rev-delundel' => 'ammustra/cua',
+'rev-showdeleted' => 'ammustra',
+'revdelete-show-file-submit' => 'Eja',
+'revdelete-radio-set' => 'Eja',
+'revdel-restore' => 'Muda sa visibilidade',
+'pagehist' => 'Istòria de sa pàgina',
+'deletedhist' => 'Istòria fuliada',
+'revdelete-content' => 'cuntènnidu',
+'revdelete-uname' => 'nùmene usuàriu',
+'revdelete-hid' => 'cua $1',
+'revdelete-unhid' => 'ammustra $1',
+'revdelete-log-message' => '$1 pro $2 {{PLURAL:$2|revisione|revisiones}}',
+'logdelete-log-message' => '$1 pro $2 {{PLURAL:$2|eventu|eventos}}',
+'revdelete-reasonotherlist' => 'Àteru motivu',
# History merging
'mergehistory-from' => 'Pàgina de orìgine:',
@@ -591,11 +636,6 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
'lineno' => 'Lìnia $1:',
'compareselectedversions' => 'Cumpara versiones scioberadas',
'editundo' => 'annudda',
-'diff-movedto' => 'mòvidu a $1',
-'diff-src' => 'mitza',
-'diff-with' => '&#32;cun $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;e $1 $2',
# Search results
'searchresults' => 'Resurtados de sa chirca',
@@ -603,17 +643,14 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
'searchresulttext' => 'Pro àteras informatziones a subra sa chirca intre de {{SITENAME}}, càstia [[{{MediaWiki:Helppage}}|Chirca in {{SITENAME}}]].',
'searchsubtitle' => 'Chirca de \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|totu is pàginas ca incumentzant pro "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totu is pàginas chi ligant a "$1"]])',
'searchsubtitleinvalid' => 'As chircadu "$1"',
-'noexactmatch' => "'''Sa pàgina \"\$1\" no esistit.'''
-Podes [[:\$1|creare custa pàgina]].",
-'noexactmatch-nocreate' => "'''Sa pàgina tìtolada \"\$1\" no esistit.'''",
'titlematches' => "Currispondèntzias in su tìtulu de s'artìculu",
'notitlematches' => 'Peruna currispondentzia de is tìtulos de pàgina',
'textmatches' => "Currispondèntzias in su testu de s'artìculu",
'notextmatches' => "Peruna currispondèntzia in su testu de s'artìculu",
-'prevn' => 'cabudianos $1',
-'nextn' => 'imbenientes $1',
+'prevn' => '{{PLURAL:$1|cabudianu|cabudianos $1}}',
+'nextn' => '{{PLURAL:$1|imbeniente|imbenientes $1}}',
'shown-title' => 'Ammustra $1 {{PLURAL:$1|resurtadu|resurtados}} pro pàgina',
-'viewprevnext' => 'Càstia ($1) ($2) ($3).',
+'viewprevnext' => 'Càstia ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Possibilidades de chirca',
'searchhelp-url' => 'Help:Agiudu',
'searchprofile-everything' => 'Totu',
@@ -632,7 +669,7 @@ Podes [[:\$1|creare custa pàgina]].",
'search-mwsuggest-disabled' => 'chentza impostos',
'searchall' => 'totu',
'showingresults' => "Inoghe sighende {{PLURAL:$1|benit ammustradu '''1''' resurtadu|benint ammustrados '''$1''' resurtados}} incumentzende dae su nùmeru '''$2'''.",
-'showingresultstotal' => "De sighidu {{PLURAL:$4|benit amostadu su resurtadu '''$1''' de '''$3'''|benint amostados is resurtados '''$1 - $2''' de '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultadu '''$1''' de '''$3'''|Resultadus '''$1 - $2''' de '''$3'''}} pro '''$4'''",
'nonefound' => "'''Annota''': sa chirca est fata \"pro definidura\" sceti in unos cantos Nùmene-logos.
Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàginas de cuntierra, template, etc), opuru sèbera comente prefissu su pretzisu Nùmene-logu ki boles.",
'powersearch' => 'Chirca',
@@ -640,47 +677,71 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
'powersearch-ns' => 'Chirca in su nùmene-logu:',
'powersearch-redir' => 'Lista re-indiritzamentos',
'powersearch-field' => 'Chirca',
+'powersearch-togglelabel' => 'Seletziona:',
+'powersearch-toggleall' => 'Totu',
+'powersearch-togglenone' => 'Nudda',
-# Preferences page
-'preferences' => 'Preferèntzias',
-'mypreferences' => 'Preferèntzias meas',
-'prefs-edits' => 'Nùmeru de acontzos:',
-'prefsnologin' => 'Non ses intrau',
-'prefsnologintext' => 'Depis èssere <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} intrau]</span> pro scioberai is preferèntzias.',
-'prefsreset' => 'Le tue Preferenze sono state ripescate dalla memoria di sistema del potente server di {{SITENAME}}.',
+# Quickbar
'qbsettings' => 'Settaggio della barra menu',
'qbsettings-none' => 'Nessuno',
'qbsettings-fixedleft' => 'Fisso a sinistra',
'qbsettings-fixedright' => 'Fisso a destra',
'qbsettings-floatingleft' => 'Fluttuante a sinistra',
'qbsettings-floatingright' => 'Fluttuante a destra',
-'changepassword' => 'Càmbia password',
-'skin' => 'Aspetto',
-'skin-preview' => 'Antiprima',
-'math_unknown_error' => 'faddina disconnota',
-'prefs-watchlist' => 'Watchlist',
-'prefs-resetpass' => 'Càmbia password',
-'saveprefs' => 'Sarva preferèntzias',
-'resetprefs' => 'Re-imposta is preferèntzias',
-'textboxsize' => 'Dimensione della casella di edizione',
-'rows' => 'Lìnias:',
-'columns' => 'Colunnas:',
-'searchresultshead' => 'Settaggio delle preferenze per la ricerca',
-'resultsperpage' => 'Risultati da visualizzare per pagina',
-'contextlines' => 'Righe di testo da mostrare per ciascun risultato',
-'contextchars' => 'Caratteri per linea',
-'recentchangescount' => 'Nùmeru de lìnias ne in ùrtimas mudàntzias (predefinidu):',
-'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
-'timezonetext' => 'Immetti il numero di ore di differenza fra la tua ora locale e la ora del server (UTC).',
-'localtime' => 'Ora locale:',
-'timezoneoffset' => 'Diferèntzia¹:',
-'timezoneregion-africa' => 'Àfrica',
-'timezoneregion-america' => 'Amèrica',
-'timezoneregion-asia' => 'Àsia',
-'timezoneregion-australia' => 'Austràlia',
-'timezoneregion-europe' => 'Europa',
-'prefs-searchoptions' => 'Possibilidades a subra de sa chirca',
-'prefs-namespaces' => 'Nùmene-logos',
+
+# Preferences page
+'preferences' => 'Preferèntzias',
+'mypreferences' => 'Preferèntzias meas',
+'prefs-edits' => 'Nùmeru de acontzos:',
+'prefsnologin' => 'Non ses intrau',
+'prefsnologintext' => 'Depes èsser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} intradu]</span> pro seberare is preferèntzias.',
+'changepassword' => 'Càmbia password',
+'prefs-skin' => 'Bisura',
+'skin-preview' => 'Antiprima',
+'prefs-math' => 'Fòrmulas matemàticas',
+'prefs-datetime' => 'Data e ora',
+'prefs-watchlist' => 'Watchlist',
+'prefs-resetpass' => 'Càmbia password',
+'saveprefs' => 'Sarva preferèntzias',
+'resetprefs' => 'Re-imposta is preferèntzias',
+'prefs-editing' => 'Box de acontzadura',
+'rows' => 'Lìnias:',
+'columns' => 'Colunnas:',
+'searchresultshead' => 'Settaggio delle preferenze per la ricerca',
+'resultsperpage' => 'Risultati da visualizzare per pagina',
+'contextlines' => 'Righe di testo da mostrare per ciascun risultato',
+'contextchars' => 'Caratteri per linea',
+'recentchangescount' => 'Nùmeru de acontzos de amostare pro definidura:',
+'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
+'localtime' => 'Ora locale:',
+'timezoneoffset' => 'Diferèntzia¹:',
+'timezoneregion-africa' => 'Àfrica',
+'timezoneregion-america' => 'Amèrica',
+'timezoneregion-asia' => 'Àsia',
+'timezoneregion-australia' => 'Austràlia',
+'timezoneregion-europe' => 'Europa',
+'prefs-searchoptions' => 'Possibilidades a subra de sa chirca',
+'prefs-namespaces' => 'Nùmene-logos',
+'prefs-files' => 'Files',
+'youremail' => 'E-mail:',
+'username' => 'Nùmene usuàriu:',
+'uid' => 'ID usuàriu:',
+'yourrealname' => 'Nùmene beru:',
+'yourlanguage' => 'Limba:',
+'yournick' => 'Sa firma tua:',
+'yourgender' => 'Natura:',
+'gender-unknown' => 'Non spetzificadu',
+'gender-male' => 'Mascu',
+'gender-female' => 'Fèmina',
+'email' => 'E-mail',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Formadu data',
+'prefs-advancedediting' => 'Sèberos avantzados',
+'prefs-advancedrc' => 'Sèberos avantzados',
+'prefs-advancedrendering' => 'Sèberos avantzados',
+'prefs-advancedsearchoptions' => 'Sèberos avantzados',
+'prefs-advancedwatchlist' => 'Sèberos avantzados',
+'prefs-diffs' => 'Diferèntzias',
# User rights
'userrights-user-editname' => 'Inserta unu nùmene usuàriu:',
@@ -744,6 +805,13 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
'recentchanges' => 'Ùrtimas mudàntzias',
'recentchanges-legend' => 'Possibilidades subra ùrtimas mudàntzias',
'recentchanges-feed-description' => 'Custu feed riportada is ùrtimas mudàntzias a is cuntènnidos de su giassu.',
+'recentchanges-label-legend' => 'Cosas de ammentare: $1.',
+'recentchanges-legend-newpage' => '$1 - pàgina noa',
+'recentchanges-label-newpage' => 'Custu acontzu at creadu una pàgina noa',
+'recentchanges-legend-minor' => '$1 - acontzu minore',
+'recentchanges-label-minor' => 'Custu est unu acontzu minore',
+'recentchanges-legend-bot' => '$1 - acontzu dae bot',
+'recentchanges-label-bot' => 'Custu acontzu est stadu fatu dae unu bot',
'rcnote' => "Inoghe sighende {{PLURAL:$1|b'est s'ùrtima mudàntzia|bi sunt is ùrtimas '''$1''' mudàntzias}} {{PLURAL:$2|in s'ùrtima die|in is ùrtimas '''$2''' dies}}; is datos sunt agiornados a $5, $4.",
'rcnotefrom' => "Sas chi sighint sunt sas mudàntzias dae '''$2''' (fintzas a '''$1''').",
'rclistfrom' => 'Ammustra mudàntzias dae $1',
@@ -760,7 +828,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'sectionlink' => '→',
'rc_categories_any' => 'Calesisiat',
'rc-change-size' => '$1',
'newsectionsummary' => '/* $1 */ setzione noa',
@@ -769,6 +836,8 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
# Recent changes linked
'recentchangeslinked' => 'Mudàntzias ligadas',
+'recentchangeslinked-feed' => 'Mudàntzias ligadas',
+'recentchangeslinked-toolbox' => 'Mudàntzias ligadas',
'recentchangeslinked-title' => 'Mudàntzias ligadas a "$1"',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-summary' => "Custa est una lista de is mudàntzias fatas dae pagu a is pàginas ligadas a cussa spetzificada.
@@ -779,7 +848,6 @@ Is pàginas de sa [[Special:Watchlist|watchlist tua]] sunt in '''grassu'''.",
# Upload
'upload' => 'Càrriga file',
'uploadbtn' => 'Càrriga file',
-'reupload' => 'Torra a carrigare',
'reuploaddesc' => 'Torra a su mòdulu pro su carrigamentu.',
'uploadnologin' => 'Non ses intrau',
'uploadnologintext' => 'Depes èsser [[Special:UserLogin|identificadu (log in)]] pro carrigare files.',
@@ -801,17 +869,20 @@ Càstia sa [[Special:NewFiles|galleria de files nous]] pro una presentada prus b
'filesource' => 'Orìgine:',
'uploadedfiles' => 'Files carrigadus',
'badfilename' => 'Su nùmene de su file est stadu cunvertidu in "$1".',
-'fileexists-thumb' => "<center>'''File pre-esistente'''</center>",
'successfulupload' => 'Carrigamentu acabau',
'uploadwarning' => 'Avvisu de carrigamentu',
'savefile' => 'Sarva file',
'uploadedimage' => 'carrigadu "[[$1]]"',
+'upload-source' => 'File de orìgine',
'sourcefilename' => 'Nùmene de su file de orìgine:',
+'sourceurl' => 'Diretzione originària:',
'destfilename' => 'Nùmene de su file de destinatzione:',
+'upload-description' => 'Descritzione de su file',
'upload-file-error' => 'Faddina a intru',
'license' => 'Licèntzia:',
+'license-header' => 'Licèntzia',
'upload_source_file' => ' (unu file in su computer tuo)',
# Special:ListFiles
@@ -825,6 +896,7 @@ Càstia sa [[Special:NewFiles|galleria de files nous]] pro una presentada prus b
'listfiles_count' => 'Versiones',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Stòria de su file',
'filehist-help' => 'Carca unu grupu data/ora pro castiare su file comente si presentada in su tempus indicadu.',
'filehist-deleteall' => 'fùlia totu',
@@ -838,13 +910,13 @@ Càstia sa [[Special:NewFiles|galleria de files nous]] pro una presentada prus b
'filehist-dimensions' => 'Dimensiones',
'filehist-filesize' => 'Mannesa de su file',
'filehist-comment' => 'Cummentu',
+'filehist-missing' => 'File pèrdidu',
'imagelinks' => 'Ligant a custu file',
'linkstoimage' => '{{PLURAL:$1|Sa pàgina ki sighit ligat|Is $1 pàginas ki sighint ligant}} a custu file:',
'nolinkstoimage' => 'Peruna pàgina ligat a custu file.',
-'sharedupload' => 'Custu file benit dae $1 e podet èssere impreau in àteros progetos.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'Pàgina che descriet su file',
+'sharedupload' => 'Custu file benit dae $1 e podet èssere impreau in àteros progetos.',
'uploadnewversion-linktext' => 'Carriga una versione noa de custu file',
-'shared-repo-from' => 'dae $1', # $1 is the repository name
+'shared-repo-from' => 'dae $1',
# File reversion
'filerevert-backlink' => '← $1',
@@ -881,8 +953,8 @@ Is re-indiritzamentos <s>cantzellados</s> sunt stados curretos.',
'brokenredirects' => 'Redirects isballiaus',
'brokenredirectstext' => 'Custus redirects ligant cun pàginas chi no esistint.',
-'brokenredirects-edit' => '(acontza)',
-'brokenredirects-delete' => '(fùlia)',
+'brokenredirects-edit' => 'acontza',
+'brokenredirects-delete' => 'cantzella',
'withoutinterwiki-legend' => 'Prefissu',
'withoutinterwiki-submit' => 'Ammustra',
@@ -944,6 +1016,9 @@ Dia podent essere immàgines impreadas dae àteros giassos cun unu ligàmine dir
# Special:Categories
'categories' => 'Categorias',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'contributziones',
+
# Special:LinkSearch
'linksearch' => 'Acàpios a foras',
'linksearch-ns' => 'Nùmene-logu:',
@@ -952,15 +1027,18 @@ Dia podent essere immàgines impreadas dae àteros giassos cun unu ligàmine dir
# Special:ListUsers
'listusers-submit' => 'Ammustra',
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Cua bots',
+'activeusers-hidesysops' => 'Cua amministradores',
+
# Special:Log/newusers
'newuserlogpage' => 'Usuàrios nous',
'newuserlog-byemail' => 'password imbiada via e-mail',
'newuserlog-create-entry' => 'Account usuàriu nou',
# Special:ListGroupRights
-'listgrouprights-group' => 'Grupu',
-'listgrouprights-members' => '(lista de is cumponentes)',
-'listgrouprights-right-display' => '$1 ($2)',
+'listgrouprights-group' => 'Grupu',
+'listgrouprights-members' => '(lista de is cumponentes)',
# E-mail user
'mailnologintext' => "Depes èsser [[Special:UserLogin|identificadu (login)]] e àer registradu un'indiritzu e-mail vàlidu in is [[Special:Preferences|preferèntzias tuas]] pro imbiare e-mail a àteros usuàrios.",
@@ -1023,6 +1101,7 @@ Is mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere
'confirmdeletetext' => "Ses acanta de burrare una pàgina cun totu su stòria sua.
Pro praxere, cunfirma ca est intentzione tua fàgher custu, ca connosches is cosseguèntzias de s'atzione tua, a ca custa est cunforma a is [[{{MediaWiki:Policy-url}}|lìnias polìticas]].",
'actioncomplete' => "Acabada s'atzione",
+'actionfailed' => 'Atzione faddida',
'deletedtext' => 'Sa pàgina "<nowiki>$1</nowiki>" est istada fuliada.
Càstia su log $2 pro unu registru de is ùrtimas fuliaduras.',
'deletedarticle' => 'at fuliadu "[[$1]]"',
@@ -1039,7 +1118,7 @@ Càstia su log $2 pro unu registru de is ùrtimas fuliaduras.',
'rollbackfailed' => 'Rollback faddidu',
'cantrollback' => "Non si podet furriare s'acontzu;
s'ùrtimu contribuidore est s'ùnicu autore de custa pàgina.",
-'revertpage' => 'Burradas is mudàntzias de [[Special:Contributions/$2|$2]] ([[User talk:$2|cuntierras]]), torrada a sa versione cabudiana de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'Burradas is mudàntzias de [[Special:Contributions/$2|$2]] ([[User talk:$2|cuntierras]]), torrada a sa versione cabudiana de [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Amparaduras',
@@ -1050,7 +1129,6 @@ s'ùrtimu contribuidore est s'ùnicu autore de custa pàgina.",
'protectexpiry' => 'Iscadèntzia:',
'protect_expiry_invalid' => "S'iscadèntzia est imbàlida.",
'protect_expiry_old' => 'Iscadentzia giai passada.',
-'protect-unchain' => 'Sblocca is permissos de mòvere',
'protect-text' => "Custu modulu serbit pro castiari e cambiari su livellu de amparadura de sa pàgina '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Non tenes su permissu pro cambiare is livellus de amparadura de sa pàgina.
Is impostatziones atuales pro sa pàgina '''$1''':",
@@ -1063,7 +1141,7 @@ Is impostatziones atuales pro sa pàgina '''$1''':",
'protect-expiring' => 'iscadèntzia: $1 (UTC)',
'protect-cascade' => 'Ampara totu is pàginas inclùdias in custa (amparadura ricorsiva)',
'protect-cantedit' => 'Non podes cambiare is livellus de amparadura pro sa pàgina, pro ite non tenes su permissu de acontzare sa pàgina etotu.',
-'protect-expiry-options' => '1 ora:1 hour,1 die:1 day,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 die:1 day,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite',
'restriction-type' => 'Permissu:',
'restriction-level' => 'Livellu de restritzioni:',
'pagesize' => '(bytes)',
@@ -1090,6 +1168,7 @@ Is impostatziones atuales pro sa pàgina '''$1''':",
Chi est istada creada una pàgina cun su matessi tìtulu, is revisiones recuperadas ant a insertare in sa istoria in antis.',
'undeletebtn' => 'Ripristina',
'undeletelink' => 'càstia/riprìstina',
+'undeleteviewlink' => 'abbista',
'undeleteinvert' => 'Fùrria sa seletzione',
'undeletecomment' => 'Motivu:',
'undeletedarticle' => 'at restauradu "$1"',
@@ -1111,13 +1190,14 @@ Chi est istada creada una pàgina cun su matessi tìtulu, is revisiones recupera
'contributions-title' => 'Contributziones de $1',
'mycontris' => 'Contributziones meas',
'contribsub2' => 'Pro $1 ($2)',
-'nocontribs' => 'Nessuna modifica trovata conformemente a questi criteri.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nessuna modifica trovata conformemente a questi criteri.',
'uctop' => '(ùrtimu de sa pàgina)',
'month' => 'Dae su mese (e in antis):',
'year' => "Dae s'annu (e in antis):",
'sp-contributions-newbies' => 'Ammustra feti is contributziones de is accounts noos',
'sp-contributions-blocklog' => 'registru de is bloccos',
+'sp-contributions-talk' => 'cuntierra',
'sp-contributions-search' => 'Chirca contributziones',
'sp-contributions-username' => 'Indiritzu IP o nùmene usuàriu:',
'sp-contributions-submit' => 'Chirca',
@@ -1143,6 +1223,7 @@ Chi est istada creada una pàgina cun su matessi tìtulu, is revisiones recupera
# Block/unblock
'blockip' => 'Blocca usuàriu',
+'blockip-title' => 'Blocca usuàriu',
'blockip-legend' => 'Blocca usuàriu',
'blockiptext' => "Usa il modulo sottostante per bloccare l'accesso con diritto di scrittura da uno specifico indirizzo IP. Questo blocco deve essere operato SOLO per prevenire atti di vandalismo, ed in stretta osservanza dei principi tutti della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]]. Il blocco non può in nessun caso essere applicato per motivi ideologici.
Scrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avviso essere bloccato (per esempio, cita i titoli di pagine eventualmente già oggetto di vandalismo editoriale).",
@@ -1153,7 +1234,7 @@ Scrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avvis
'ipbreasonotherlist' => 'Àteru motivu',
'ipbsubmit' => 'Blocca custu usuàriu',
'ipbother' => 'Àteru perìodu:',
-'ipboptions' => '2 oras:2 hours,1 die:1 day,3 dies:3 days,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 die:1 day,3 dies:3 days,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite',
'ipbotheroption' => 'àteru',
'badipaddress' => "S'indiritzu IP indicadu non est currègidu.",
'blockipsuccesssub' => 'Bloccu esecutivu',
@@ -1170,6 +1251,7 @@ Abbàida sa [[Special:IPBlockList|lista de IP bloccados]] pro bìder sas bloccad
'ipblocklist-submit' => 'Chirca',
'blocklistline' => '$1, $2 ha bloccato $3 ($4)',
'infiniteblock' => 'infinitu',
+'expiringblock' => 'scadit su $1 a is $2',
'blocklink' => 'blocca',
'unblocklink' => 'sblocca',
'change-blocklink' => 'tramuda su bloccu',
@@ -1229,7 +1311,7 @@ In custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
'move-watch' => 'Pone ogru a custa pàgina',
'movepagebtn' => 'Move sa pàgina',
'pagemovedsub' => 'Movimentu andadu bene',
-'movepage-moved' => '\'\'\'"$1" est istada mòvida a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" est istada mòvida a "$2"\'\'\'',
'articleexists' => "Una pàgina cun custu nùmene esistit giai, o su nùmene ki as seberadu no est bàlidu.
Pro praxere sèbera un'àteru nùmene.",
'talkexists' => "'''Su movimentu de sa pàgina est andadu bene, ma no est stadu possìbile mòver sa pàgina de cuntierras pro ite nde esistit giai un'àtera cun su matessi tìtulu. Pro praxere agiunge tue su cuntestu de sa pàgina bècia.'''",
@@ -1251,7 +1333,11 @@ impossìbile mòver sa pàgina a issa etotu.',
'export-download' => 'Sarba comente file',
# Namespace 8 related
-'allmessagesname' => 'Nùmene',
+'allmessagesname' => 'Nùmene',
+'allmessages-filter-legend' => 'Filtru',
+'allmessages-filter-all' => 'Totu',
+'allmessages-language' => 'Limba:',
+'allmessages-filter-submit' => 'Bae',
# Thumbnails
'thumbnail-more' => 'Amannia',
@@ -1286,6 +1372,7 @@ Podes castiare sa mitza sua',
'tooltip-search-fulltext' => 'Chirca custu testu in sas pàginas',
'tooltip-p-logo' => 'Bìsita sa pàgina base',
'tooltip-n-mainpage' => 'Bìsita sa pàgina base',
+'tooltip-n-mainpage-description' => 'Bìsita sa pàgina base',
'tooltip-n-portal' => 'Descritzione de su progetu, ite podes fàgher, a innue agatas is cosas',
'tooltip-n-currentevents' => 'Informatziones subra acuntèssias atuales',
'tooltip-n-recentchanges' => 'Sa lista de is ùrtimas mudàntzias de su giassu',
@@ -1322,8 +1409,10 @@ Podes agiùnger unu motivu in s\'ogetu de s\'acontzu.',
# Attribution
'siteuser' => '$1, {{GENDER:$1|usuàriu|usuària}} de {{SITENAME}}',
+'anonuser' => ' $1, usuàriu anònimu de {{SITENAME}}',
'others' => 'àteros',
'siteusers' => '$1, {{PLURAL:$2|usuàriu|usuàrios}} de {{SITENAME}}',
+'anonusers' => '$1, {{PLURAL:$2|usuàriu anònimu|usuàrios anònimos}} de {{SITENAME}}',
'creditspage' => 'Autores de sa pàgina',
# Info page
@@ -1331,12 +1420,14 @@ Podes agiùnger unu motivu in s\'ogetu de s\'acontzu.',
'numedits' => 'Nùmeru de acontzos (pàgina): $1',
'numtalkedits' => 'Nùmeru de acontzos (pàgina de cuntierra): $1',
+# Math errors
+'math_unknown_error' => 'faddina disconnota',
+
# Browsing diffs
'previousdiff' => '← Acontzu in antis',
'nextdiff' => 'Acontzu in fatu →',
# Media information
-'widthheight' => '$1×$2',
'file-info-size' => '($1 × $2 pixels, mannesa de su file: $3, tipu de MIME: $4)',
'file-nohires' => '<small>Non si tenent risolutziones prus artas.</small>',
'svg-long-desc' => '(file in formadu SVG, mannesa nominale $1 × $2 pixel, mannesa de su file: $3)',
@@ -1373,7 +1464,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-artist' => 'Autore',
@@ -1388,7 +1479,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
-'exif-orientation-1' => 'Normale', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normale',
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
@@ -1420,6 +1511,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
'watchlistall2' => 'totu',
'namespacesall' => 'totu',
'monthsall' => 'totu',
+'limitall' => 'totu',
# E-mail address confirmation
'confirmemail' => "Cunfirma s'indiritzu e-mail",
@@ -1472,9 +1564,10 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
'timezone-utc' => 'UTC',
# Special:Version
-'version' => 'Versione', # Not used as normal message but as header for the special page itself
+'version' => 'Versione',
'version-specialpages' => 'Pàginas ispetziales',
'version-other' => 'Àteru',
+'version-version' => '(Versione $1)',
'version-license' => 'Licèntzia',
'version-software-version' => 'Versione',
@@ -1492,4 +1585,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
# Special:Tags
'tags-edit' => 'acontza',
+# HTML forms
+'htmlform-selectorother-other' => 'Àteru',
+
);
diff --git a/languages/messages/MessagesScn.php b/languages/messages/MessagesScn.php
index db942af1..ddad8bcb 100644
--- a/languages/messages/MessagesScn.php
+++ b/languages/messages/MessagesScn.php
@@ -164,6 +164,7 @@ $messages = array(
'tog-enotifminoredits' => 'Mànnami na e-mail macari pi li canciamenti nichi di sta pàggina',
'tog-enotifrevealaddr' => 'Rivela lu mè ndirizzu e-mail ntê mail di nutificazzioni',
'tog-shownumberswatching' => 'Ammustra lu nùmmiru di utenti ca sèquinu la pàggina',
+'tog-oldsig' => 'Antiprima dâ firma attuali:',
'tog-fancysig' => 'Interpitra li cumanna wiki nâ firma (senza liami automaticu)',
'tog-externaleditor' => 'Usa di default un editor sternu',
'tog-externaldiff' => 'Usa di default un prugramma di diff sternu',
@@ -186,6 +187,13 @@ $messages = array(
'underline-never' => 'mai',
'underline-default' => 'manteni li mpustazzioni dû browser',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stili da casedda di canciamentu:',
+'editfont-default' => 'Pridifinitu dô Browser',
+'editfont-monospace' => 'Font monospaziu',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Duminicadìa',
'monday' => 'Lunidìa',
@@ -245,7 +253,7 @@ $messages = array(
'category-media-header' => 'File multimidiali ntâ catigurìa "$1"',
'category-empty' => "''Sta catigurìa attuarmenti nun havi artìculi o \"media\".''",
'hidden-categories' => '{{PLURAL:$1|Catigurìa ammucciata|Catigurìi ammuciati}}',
-'hidden-category-category' => 'Catigurìi ammucciati', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Catigurìi ammucciati',
'category-subcat-count' => '{{PLURAL:$2|Sta catigurìa cunteni na sula suttacatigurìa, nnicata ccà sutta.|Sta catigurìa cunteni {{PLURAL:$1|la suttacatigurìa|li $1 suttacatigurìi nnicati}} ccà sutta, sùpira nu tutali di $2.}}',
'category-subcat-count-limited' => 'Sta catigurìa cunteni {{PLURAL:$1|na suttacatigurìa, nnicata|$1 suttacatigurìi, nnicati}} ccà sutta.',
'category-article-count' => '{{PLURAL:$2|Sta catigurìa cunteni na pàggina sula, nnicata ccà sutta.|Sta catigurìa cunteni {{PLURAL:$1|la pàggina nnicata|li $1 pàggini nnicati}} di sècutu, supra nu tutali di $2.}}',
@@ -253,6 +261,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Sta catigurìa cunteni nu sulu file, ndicatu ccà sutta.|Sta catigurìa cunteni {{PLURAL:$1|nu file, ndicatu|$1 file, ndicati}} ccà sutta, su nu totali di $2.}}',
'category-file-count-limited' => 'Sta catigurìa cunteni {{PLURAL:$1|lu file ndicatu|li $1 file ndicati}} ccà sutta.',
'listingcontinuesabbrev' => ' cunt.',
+'index-category' => 'Pàggini nnicizzati',
+'noindex-category' => 'Pàggini nun nnicizzati',
'mainpagetext' => "'''Nstallazzioni di MediaWiki cumplitata currettamenti.'''",
'mainpagedocfooter' => "Pi favuri taliari [http://meta.wikimedia.org/wiki/Help:Contents Guida utenti] pi aiutu supra l'usu e la cunfigurazzioni di stu software wiki.
@@ -262,10 +272,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list dî rilassi di MediaWiki]",
-'about' => 'pàggina',
-'article' => 'artìculu',
-'newwindow' => '(grapi na finestra nova)',
-'cancel' => 'annulla',
+'about' => 'pàggina',
+'article' => 'artìculu',
+'newwindow' => '(grapi na finestra nova)',
+'cancel' => 'annulla',
+'moredotdotdot' => 'Àutru...',
+'mypage' => 'La mè pàggina',
+'mytalk' => 'la mè pàggina di discussioni',
+'anontalk' => 'Discussione pi stu IP',
+'navigation' => 'Navigazzioni',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Attrova',
'qbbrowse' => 'Sfogghia',
'qbedit' => 'Cancia',
@@ -273,15 +291,35 @@ $messages = array(
'qbpageinfo' => 'Nfurmazzioni supra la pàggina',
'qbmyoptions' => 'Li mè pàggini',
'qbspecialpages' => 'Pàggini spiciali',
-'moredotdotdot' => 'Àutru...',
-'mypage' => 'La mè pàggina',
-'mytalk' => 'la mè pàggina di discussioni',
-'anontalk' => 'Discussione pi stu IP',
-'navigation' => 'Navigazzioni',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadati:',
+'faq' => 'Dumanni cumuni',
+'faqpage' => 'Project:Dumanni comuni',
+
+# Vector skin
+'vector-action-addsection' => 'Agghiunci argumentu',
+'vector-action-delete' => 'Elìmina',
+'vector-action-move' => 'Sposta',
+'vector-action-protect' => 'Pruteggi',
+'vector-action-undelete' => 'Riprìstina',
+'vector-action-unprotect' => 'Sblocca',
+'vector-namespace-category' => 'Catigurìa',
+'vector-namespace-help' => 'Aiutu',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pàggina',
+'vector-namespace-media' => 'File multimediali',
+'vector-namespace-mediawiki' => 'Misaggiu',
+'vector-namespace-project' => 'Pàggina di sirviziu',
+'vector-namespace-special' => 'Pàggina spiciali',
+'vector-namespace-talk' => 'Discussioni',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'Utenti',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Cancia',
+'vector-view-history' => 'Talìa a storia',
+'vector-view-view' => 'Leggi',
+'vector-view-viewsource' => 'Talìa la fonti',
+'actions' => 'Azzioni',
+'namespaces' => 'Namespace',
+'variants' => 'Varianti',
'errorpagetitle' => 'Erruri',
'returnto' => 'Ritorna a $1.',
@@ -331,18 +369,20 @@ $messages = array(
'otherlanguages' => 'Àutri lingui',
'redirectedfrom' => '(Rinnirizzata di $1)',
'redirectpagesub' => 'Pàggina di rinnirizzamentu',
-'lastmodifiedat' => 'Sta pàggina fu canciata a $2 di lu $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Sta pàggina fu canciata a $2 di lu $1.',
'viewcount' => 'Sta pàggina hà statu liggiuta {{PLURAL:$1|una vota|$1 voti}}.',
'protectedpage' => 'Pàggina bluccata',
'jumpto' => "Va' a:",
'jumptonavigation' => 'navigazzioni',
'jumptosearch' => "Va' cerca",
+'view-pool-error' => "Ci spiaci, li server ni stu mumentu sunu troppu carichi. Troppi utenti stannu circannu di taliari sta pàggina. Aspetta n'anticchia prima di pruvari a ritaliari sta pàggina.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Àutri nfurmazzioni supra {{SITENAME}}',
'aboutpage' => 'Project:Àutri nformazzioni',
'copyright' => 'Lu cuntinutu è utilizzàbbili secunnu la $1.',
-'copyrightpagename' => 'Lu copyright supra {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Nutizzî',
'currentevents-url' => 'Project:Nutizzî',
@@ -350,8 +390,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avvirtenzi ginirali',
'edithelp' => 'Guida',
'edithelppage' => 'Help:Canciamentu',
-'faq' => 'Dumanni cumuni',
-'faqpage' => 'Project:Dumanni comuni',
'helppage' => 'Help:Cuntinuti',
'mainpage' => 'Pàggina principali',
'mainpage-description' => 'Pàggina principali',
@@ -431,9 +469,6 @@ L\'ùrtima query mannata a lu database hà stata:
"$1"
richiamata dâ funzioni "$2".
MySQL hà ristituitu lu siquenti erruri "$3: $4".',
-'noconnect' => 'Cunnissioni ô databbasi nun arrinisciuta a càusa di nu prubbrema tècnicu dô situ.<br />$1',
-'nodb' => 'Silizzioni dû database $1 nun arrinisciuta',
-'cachederror' => "Chidda prisintata di sèquitu è na copia ''cache'' dâ pàggina richiesta; putissi quinni nun èssiri aggiurnata.",
'laggedslavemode' => "Accura: La pàggina putissi nun ripurtari l'aggiurnamenti cchiù ricenti.",
'readonly' => 'Database bluccatu',
'enterlockreason' => "Ìnnica lu mutivu dû bloccu, spicificannu lu mumentu 'n cui è prisumìbbili ca veni rimossu.",
@@ -449,6 +484,8 @@ V\'arringrazziamu si signaliati zoccu succidìu a nu [[Special:ListUsers/sysop|a
'readonly_lag' => 'Lu database hà statu bluccatu automaticamenti, mentri li server cu li database slave si sincrunìzzanu cu lu master',
'internalerror' => 'Erruri nternu',
'internalerror_info' => 'Erruri nternu: $1',
+'fileappenderrorread' => 'Nu fu pussìbbili di lèggiri "$1" nta mentri lu juncìa.',
+'fileappenderror' => 'Nun è possibi junciri "$1" a "$2".',
'filecopyerror' => 'Mpussìbbili cupiari lu file "$1" n "$2".',
'filerenameerror' => 'Mpussìbbili rinuminari lu file "$1" \'n "$2".',
'filedeleteerror' => 'Mpussìbbili cancillari lu file "$1".',
@@ -458,7 +495,7 @@ V\'arringrazziamu si signaliati zoccu succidìu a nu [[Special:ListUsers/sysop|a
'unexpected' => 'Valuri mpruvistu: "$1"="$2".',
'formerror' => 'Erruri: mpussìbbili mannari lu mòdulu',
'badarticleerror' => 'Opirazzioni nun cunzintita pi sta pàggina.',
-'cannotdelete' => 'Mpussìbbili cancillari la pàggina o lu file addumannatu. (Putissi aviri statu già cancillatu.)',
+'cannotdelete' => 'Mpussìbbili cancillari la pàggina o lu file "$1" addumannatu. Putissi siri già cancillatu di quarcun\'àutru.',
'badtitle' => 'Tìtulu nun currettu',
'badtitletext' => "Lu tìtulu dâ pàggina addumannata è vacanti, erratu o cu caràttiri nun ammessi oppuru diriva di n'erruri ntê culligamenti tra siti wiki diversi o virsioni n lingui diversi dû stissu situ.",
'perfcached' => "'''Nota:''' li dati ca sèquinu sunnu stratti di na copia ''cache'' dû database, nun aggiurnati n tempu riali.",
@@ -490,7 +527,6 @@ La mutivazzioni è chista: ''$2''.",
'virus-unknownscanner' => 'antivirus scanusciutu:',
# Login and logout pages
-'logouttitle' => 'Logout utenti',
'logouttext' => "'''Nisciuta. Ora siti fora.'''
Poi cuntinuari a usari {{SITENAME}} di manera anònima, o poi [[Special:UserLogin|tràsiri n'àutra vota]] cu lu stissu o cu n'àutru nomu d'utenti.
@@ -498,7 +534,6 @@ Accura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun avis
'welcomecreation' => "== Bonvinutu, $1! ==
L'account hà statu criatu currettamenti. Nun ti scurdari di pirsunalizzari li [[Special:Preferences|prifirenzi di {{SITENAME}}]].",
-'loginpagetitle' => 'Login utenti',
'yourname' => "Lu tò nomu d'utenti (''user name'')",
'yourpassword' => "La tò ''password''",
'yourpasswordagain' => "Scrivi la password n'àutra vota",
@@ -509,6 +544,7 @@ L'account hà statu criatu currettamenti. Nun ti scurdari di pirsunalizzari li [
'nav-login-createaccount' => 'Riggìstrati o trasi',
'loginprompt' => "Tu hai a abbilitari li ''cookies'' pi tràsiri ntâ {{SITENAME}}.",
'userlogin' => 'Riggìstrati o trasi',
+'userloginnocreate' => 'Trasi',
'logout' => 'Nesci',
'userlogout' => 'Nesci',
'notloggedin' => "Nun v'aviti riggistratu",
@@ -520,26 +556,8 @@ L'account hà statu criatu currettamenti. Nun ti scurdari di pirsunalizzari li [
'createaccountmail' => 'via e-mail',
'badretype' => "La ''password'' chi mittisti nun è bona.",
'userexists' => 'Lu nomu utenti nzeritu è già usatu. Ti prijamu pirciò di vuliri scègghiri nu nomu utenti diversu.',
-'youremail' => 'Lu tò nnirizzu email:',
-'username' => "Nomu d'utenti:",
-'uid' => 'ID utenti:',
-'prefs-memberingroups' => 'Cumpunenti {{PLURAL:$1|dû gruppu|dî gruppi}}:',
-'yourrealname' => 'Lu tò nomu veru*',
-'yourlanguage' => 'Lingua dâ nterfaccia:',
-'yourvariant' => 'Varianti:',
-'yournick' => 'Suprannomu (nickname):',
-'badsig' => 'Erruri ntâ firma nun standard, virificari li tag HTML.',
-'badsiglength' => 'Lu Nickname è troppu longu. Nun pò aviri cchiù di $1 {{PLURAL:$1|caràttiri|caràttiri}}.',
-'yourgender' => 'Geniri:',
-'gender-unknown' => 'Nun specificatu',
-'gender-male' => 'Masculu',
-'gender-female' => 'Fimmina',
-'prefs-help-gender' => "Opzionali: cunsenti di adattari li missaggi dô software in funzioni dô generi d'utenti. Sta nfurmazioni sarà pubblica.",
-'email' => 'Nnirizzu email',
-'prefs-help-realname' => '* Nomu veru (upziunali): siddu scegghi di furnìrilu veni usatu pi dàriti crèditu dû tò travagghiu.',
'loginerror' => "Erruri nta l'accessu",
-'prefs-help-email' => "* Imeil (opziunali): abbìlita l'àutri utenti a cuntattàriti attraversu la tò pàggina d'utenti o di discussioni, senza pi chissu rivilari la tò idintitati.",
-'prefs-help-email-required' => 'Lu nnirizzu email è nicissariu.',
+'createaccounterror' => "Mpussibbili di criari l'account $1",
'nocookiesnew' => 'Lu nomu utenti pi tràsiri fu criatu, ma nun hai effittuatu lu log in. {{SITENAME}} usa li cookies pi gistiri li log in. Lu tò browser havi li cookies disabbilitati. Abbìlita li cookies, appoi effèttua lu login cu li tò username e password novi.',
'nocookieslogin' => '{{SITENAME}} usa li cookies pi gistiri lu log in. Lu tò browser havi li cookies disabbilitati. Abbìlita li cookies, appoi effèttua lu login cu li tò username e password.',
'noname' => 'Lu nomu utenti innicatu nun è vàlidu, nun è pussìbbili criari un account a stu nomu.',
@@ -550,15 +568,18 @@ Li nnomi utenti sunu sinsitivi ê maiusculi.
Virificari lu nomu nziritu o [[Special:UserLogin/signup|criari un novu accessu]].',
'nosuchusershort' => 'Nun c\'è nuddu utenti di nomu "<nowiki>$1</nowiki>". Cuntrolla l\'ortugrafìa.',
'nouserspecified' => 'È nicissariu spicificari un nomu utenti.',
+'login-userblocked' => "St'utilizzaturi è bluccatu. Nun è pussibbili di tràsiri",
'wrongpassword' => "La ''password'' chi mittisti nun è giusta. Prova n'àutra vota.",
'wrongpasswordempty' => 'Nun hà statu nzirita arcuna password. Ripruvari.',
-'passwordtooshort' => "La tò password nun è valida o è troppu brivi. Havi a cuntèniri armenu {{PLURAL:$1|1 caràttiri|$1 caràttiri}} e èssiri diversa dô tò nomu d'utenti.",
+'passwordtooshort' => 'La tò password è troppu curta. Havi a cuntèniri armenu {{PLURAL:$1|1 caràttiri|$1 caràttiri}}.',
+'password-name-match' => 'La tou password havi a essiri diversa dô tou nnomu utenti.',
'mailmypassword' => "Mànnimi n'àutra password",
'passwordremindertitle' => 'Sirvizziu Password Reminder di {{SITENAME}}',
'passwordremindertext' => 'Quarchidunu (prubbabbirmenti tu, cu nnirizzu IP $1) addumannau d\'aviri mannata na password d\'accessu nova a {{SITENAME}} ($4). La password pi l\'utenti "$2" vinni mpustata a "$3".
Ti cummeni fari n\'accessu quantu prima e canciari la password pi sùbbitu. La tò password timpuranea scadrà dopu {{PLURAL:$5|nu jornu|$5 jorna}}.
Siddu nun fusti tu a fari la dumanna, oppuru arrittruvasti la password e nun addisìi cchiù canciàrila, poi non tèniri cuntu di stu missaggiu e cuntinuari a usari la password vecchia.',
'noemail' => 'Nuddu ndirizzu e-mail riggistratu pi l\'utenti "$1".',
+'noemailcreate' => 'Aviti a dari nu nnirizzu e-mail validu',
'passwordsent' => 'Na password nova hà statu mannata a lu ndirizzu e-mail riggistratu pi l\'utenti "$1". Pi favuri, effèttua un accessu nun appena l\'arricevi.',
'blocked-mailpassword' => 'Pi privèniri abbusi, nun è cunzititu usari la funzioni "Nvia nova password" d\'un ndirizzu IP bluccatu.',
'eauthentsent' => "Un missaggiu e-mail di cunferma hà statu spiditu a lu ndirizzu ndicatu. Pi abbilitari la mannata di missaggi e-mail pi st'accessu è nicissariu sèquiri li istruzzioni ca vi sunnu ndicati, 'n modu di cunfirmari ca s'è li liggìttimi prupitari di lu ndirizzu",
@@ -578,9 +599,11 @@ Pi favuri nziriti nu nnirizzu vàlidu o svacantati la casella.',
'createaccount-text' => 'Qualcuno criau n\'accessu a {{SITENAME}} ($4) a nomu di $2, associatu cu stu ndirizzu di posta elettronica. La password pi l\'utenti "$2" è mpustata a "$3". È opportunu trasiri quantu prima e canciari la password subbutu.
Si l\'accessu fu criatu pi sbagghiu, si può gnurari stu missaggiu.',
+'usernamehasherror' => "Lu nomu di l'utenti nun pò cuntèniri caràttiri hash",
'login-throttled' => "Facisti troppi tintativi.
Aspetta tanticchia prima di pruvari n'àutra vota.",
'loginlanguagelabel' => 'Lingua: $1',
+'suspicious-userlogout' => 'La tò dumanna di discunnissioni fu niàta prichì pari ca veni di nu browser nun funziunanti o nu proxy di caching.',
# Password reset dialog
'resetpass' => "Scrivi n'àutra vota la password",
@@ -592,17 +615,13 @@ Aspetta tanticchia prima di pruvari n'àutra vota.",
'retypenew' => "Scrivi n'àutra vota la password",
'resetpass_submit' => 'Mposta la password e accedi',
'resetpass_success' => "Lu canciu password hà statu effittuatu cu successu! Ora stai effittuannu l'accessu...",
-'resetpass_bad_temporary' => 'Password timpurània nun vàlida. Putissi aviri già canciatu la password o addumannatu na password nova timpurània.',
'resetpass_forbidden' => 'Li password nun ponnu èssiri canciati sùpira sta wiki',
'resetpass-no-info' => 'Pi tràsiri nta sta pàggina hà èssiri riggistratu',
'resetpass-submit-loggedin' => 'Cancia la password',
+'resetpass-submit-cancel' => 'Annulla',
'resetpass-wrong-oldpass' => "La password timpurrània nun è giusta.
Pò èssiri ca ggià canciasti cu successu la tò password o c'addumannasti na nova password timpurrània.",
'resetpass-temp-password' => 'Password timpurrània:',
-'resetpass-log' => 'Reimpustazioni password',
-'resetpass-logtext' => "Appressu su elencati l'utenti la cui password fu reimpustata da n'amministraturi.",
-'resetpass-logentry' => 'ha canciatu la password di $1',
-'resetpass-comment' => 'Mutivu di la reimpustazioni:',
# Edit page toolbar
'bold_sample' => 'Grassettu',
@@ -678,7 +697,6 @@ Pi favuri nclùdilu nta tutti li dumanni chi fai.",
'blockededitsource' => "Di sèquitu vèninu ammustrati li '''canciamenti appurtati''' â pàggina '''$1''':",
'whitelistedittitle' => 'Ci voli èssiri riggistrati pi putiri canciari la pàggina.',
'whitelistedittext' => "Hai a $1 pi canciari l'artìculi.",
-'confirmedittitle' => 'Cunferma dâ e-mail nicissaria pi lu canciamentu dî pàggini',
'confirmedittext' => "P'èssiri abbilitati a lu canciamentu dî pàggini è nicissariu cunfirmari lu propiu ndirizzu e-mail. Pi mpustari e cunfirmari lu ndirizzu sirvìrisi dî [[Special:Preferences|prifirenzi]].",
'nosuchsectiontitle' => 'Lu paràgrafu nun fu truvatu',
'nosuchsectiontext' => 'Pruvasti a canciari na sezzioni chi nun esisti.
@@ -701,7 +719,8 @@ Siddu sî n’utenti anònimu e riteni ca li cummenti prisenti nta sta pàggina
'noarticletext' => "Nta stu mumentu la pàggina addumannata è vacanti. È pussìbbili [[Special:Search/{{PAGENAME}}|circari stu tìtulu]] nta l'àutri pàggini dû situ oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} canciari la pàggina ora].",
'userpage-userdoesnotexist' => 'L\'account "$1" nun currispunni a n\'utenti riggistratu. Virificari si si voli criari o canciari sta pàggina.',
'clearyourcache' => "'''Nota:''' doppu aviri sarvatu è nicissariu puliri la cache dû propiu browser pi vìdiri li canciamenti. Pi '''Mozilla / Firefox / Safari''': fari clic supra ''Ricarica'' tinnennu primutu lu tastu dî maiùsculi, oppuru prèmiri ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' supra Mac); pi '''Internet Explorer:''' mantèniri primutu lu tastu ''Ctrl'' mentri si premi lu pulsanti ''Aggiorna'' o prèmiri ''Ctrl-F5''; pi '''Konqueror''': prèmiri lu pulsanti ''Ricarica'' o lu tastu ''F5''; pi '''Opera''' pò èssiri nicissariu svacantari cumpletamenti la cache dû menu ''Strumenti → Preferenze''.",
-'usercssjsyoucanpreview' => "'''Suggirimentu:''' Usa lu tastu 'Visualizza antiprima' pi pruvari li novi css/js prima di sarvàrili.",
+'usercssyoucanpreview' => "'''Suggirimentu:''' Usa lu tastu 'Visualizza antiprima' pi pruvari li novi css/js prima di sarvàrili.",
+'userjsyoucanpreview' => "'''Suggirimentu:''' Usa lu tastu 'Visualizza antiprima' pi pruvari li novi css/js prima di sarvàrili.",
'usercsspreview' => "'''Arricorda ca stai sulu visualizzannu n'antiprima dû tò CSS pirsunali.'''
'''Nun hà ancora statu sarvatu!'''",
'userjspreview' => "'''Arricorda ca stai sulu tistanno/vidennu 'n antiprima lu tò javascript pirsunali, nun hà statu ancora sarvatu!'''",
@@ -753,12 +772,12 @@ L'amministraturi ca bluccau lu database lu fici pi stu mutivu: $1",
'permissionserrors' => 'Erruri di pirmissu',
'permissionserrorstext' => 'Nun hai lu pirmissu pi fari chistu, pi {{PLURAL:$1|chistu motivu|sti mutivi}}:',
'permissionserrorstext-withaction' => 'Nun hai lu pirmessu di fari $2, pi {{PLURAL:$1|lu siguenti mutivu|li siguenti mutivi}}:',
-'recreate-deleted-warn' => "'''Accura: stai pi criari na pàggina chi fu cancillata 'n passatu.'''
+'recreate-moveddeleted-warn' => "'''Accura: stai pi criari na pàggina chi fu cancillata 'n passatu.'''
Accuràtivi ch'è uppurtunu cuntinuari a canciari sta pàggina.
-L'alencu dî cancillazzioni rilativi veni ripurtatu ccà pi cummudità:",
-'deleted-notice' => 'Sta pàggina fu scancillata. La lista di li scancillazzioni veni ammustrata di sècutu pi nfurmazzioni.',
-'deletelog-fulllog' => 'Visualizza riggistru cumpretu',
+L'alencu dî cancillazzioni e spustamenti rilativi veni ripurtatu ccà pi cummudità:",
+'moveddeleted-notice' => 'Sta pàggina fu scancillata. La lista di li scancillazzioni e spustamenti veni ammustrata di sècutu pi nfurmazzioni.',
+'log-fulllog' => 'Talìa log cumpletu',
'edit-hook-aborted' => "Canciamentu scancillatu di l'hook.
Nun desi nudda spiecazzioni.",
'edit-gone-missing' => 'Mpussìbbili aggiurnari la pàggina.
@@ -800,7 +819,7 @@ Lu mutivu è ''$2''",
'currentrev' => 'Virsioni currenti',
'currentrev-asof' => 'Virsioni currenti dû $1',
'revisionasof' => 'Virsioni dû $1',
-'revision-info' => 'Virsioni dû $1 di $2', # Additionally available: $3: revision id
+'revision-info' => 'Virsioni dû $1 di $2',
'previousrevision' => '← Virsioni menu ricenti',
'nextrevision' => 'Virsioni cchiù ricenti →',
'currentrevisionlink' => 'Virsioni currenti',
@@ -811,7 +830,6 @@ Lu mutivu è ''$2''",
'page_last' => 'ùrtima',
'histlegend' => "Cunfrontu tra virsioni: silizziunari li caselli currispunnenti ê virsioni addisiati e prèmiri Mannu o lu pulsanti a basciu.<br /> Liggenna: (curr) = diffirenzi cu la virsioni attuali, (pric) = diffirenzi cu la virsioni pricidenti, '''m''' = canciamentu nicu",
'history-fieldset-title' => 'Scurri ntâ crunuluggìa',
-'deletedrev' => '[cancillata]',
'histfirst' => 'Prima',
'histlast' => 'Ùrtima',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -820,58 +838,88 @@ Lu mutivu è ''$2''",
# Revision feed
'history-feed-title' => 'Lista dî canciamenti',
'history-feed-description' => 'Cronoluggìa dâ pàggina supra stu situ',
-'history-feed-item-nocomment' => '$1 lu $2', # user at time
+'history-feed-item-nocomment' => '$1 lu $2',
'history-feed-empty' => 'La pàggina richiesta nun asisti; putissi aviri stata cancillata dû situ o rinuminata. Virificari cu la [[Special:Search|pàggina di ricerca]] siddu ci sunnu novi pàggini.',
# Revision deletion
-'rev-deleted-comment' => '(cummentu rimussu)',
-'rev-deleted-user' => '(nomu utenti rimussu)',
-'rev-deleted-event' => '(elementu cancillatu)',
-'rev-deleted-text-permission' => "Sta virsioni dâ pàggina hà statu rimussa di l'archivi visìbbili a lu pùbbricu. Cunzurtari lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
-'rev-deleted-text-view' => "Sta virsioni dâ pàggina hà statu rimussa di l'archivi visìbbili a lu pùbbricu. Lu testu pò èssiri visualizzatu surtantu di l'amministratura dû situ. Cunzurtari lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
-'rev-delundel' => 'ammustra/ammuccia',
-'revisiondelete' => 'Cancella o riprìstina virsioni',
-'revdelete-nooldid-title' => 'Virsioni nun spicificata',
-'revdelete-nooldid-text' => 'Nun hà statu spicificata arcuna virsioni dâ pàggina supra cui esèquiri sta funzioni.',
-'revdelete-nologtype-title' => 'Nuddu tipu di log spicificatu',
-'revdelete-nologtype-text' => "Nun è statu spicificatu nuddu registru su cui fari l'azioni.",
-'revdelete-toomanytargets-title' => 'Troppi target',
-'revdelete-toomanytargets-text' => "Sunu stati spicificati troppo tipi di target pi eseguiri l'azioni.",
-'revdelete-nologid-title' => 'Vuci di riggistru ca non vali',
-'revdelete-nologid-text' => 'Nun è statu spicificatu nuddu registru su cui fari sta funzioni oppuru lu riggistru nun esisti.',
-'revdelete-selected' => "'''{{PLURAL:$2|Virsioni silizziunata|Virsioni silizziunati}} di [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Eventu dû riggistru silizziunatu|Eventi dû riggistru silizziunati}}:'''",
-'revdelete-text' => "'''Li virsioni cancillati rèstanu visìbbili ntâ cronoluggìa dâ pàggina, mentri lu testu cuntinutu nun è accissìbbili a lu pùbbricu.''' L'àutri amministratura dû situ ponnu accèdiri comu è gghiè a li cuntinuti ammucciati e ripristinàrili attraversu sta stissa nterfaccia, siddu nun hannu statu mpustati àutri limitazzioni n fasi di nstallazzioni dû situ.",
-'revdelete-suppress-text' => "La rimozzioni havi a essiri utilizzata '''sulu''' ni sti casi:
+'rev-deleted-comment' => '(cummentu rimussu)',
+'rev-deleted-user' => '(nomu utenti rimussu)',
+'rev-deleted-event' => '(elementu cancillatu)',
+'rev-deleted-text-permission' => "Sta virsioni dâ pàggina hà statu '''cancillata'''.
+Cunzurtari lu [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
+'rev-deleted-text-unhide' => "Sta virsioni da pàggina fu '''cancillata'''.
+Talìari lu [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dê cancillazzioni] pi autri dittagli.
+All'aministraturi ancora è cunsintutu [$1 talìari sta virsioni] si nicissariu.",
+'rev-suppressed-text-unhide' => "Sta virsioni dâ pàggina fu '''rimossa'''.
+Talìari lu [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dê cancillazzioni] pi autri dittagli.
+All'aministraturi ancora è cunsintutu [$1 talìari sta virsioni] si nicissariu.",
+'rev-deleted-text-view' => "Sta virsioni dâ pàggina hà statu '''cancillata'''.
+Lu testu pò èssiri visualizzatu surtantu di l'amministratura dû situ. Cunzurtari lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
+'rev-suppressed-text-view' => "Sta virsioni dâ paggina fu '''luvata'''.
+L'amministratura ponu ancora taliarla; taliari lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log di rimozzioni] pi autri dittagli.",
+'rev-deleted-no-diff' => "Nun è possibili taliari stu cunfrontu tra virsioni pirchì na revisioni fu '''scancillata'''.
+Cunzurtari lu [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
+'rev-deleted-unhide-diff' => "Una dê rivisioni di stu confrontu tra visrsioni fu '''cancillata'''.
+Cunzurtari lu [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.
+All'amministratura è ancora possibili [$1 talìari lu confrontu] si nicissariu.",
+'rev-delundel' => 'ammustra/ammuccia',
+'revisiondelete' => 'Cancella o riprìstina virsioni',
+'revdelete-nooldid-title' => 'Virsioni nun spicificata',
+'revdelete-nooldid-text' => 'Nun hà statu spicificata arcuna virsioni dâ pàggina supra cui esèquiri sta funzioni.',
+'revdelete-nologtype-title' => 'Nuddu tipu di log spicificatu',
+'revdelete-nologtype-text' => "Nun è statu spicificatu nuddu registru su cui fari l'azioni.",
+'revdelete-nologid-title' => 'Vuci di riggistru ca non vali',
+'revdelete-nologid-text' => 'Nun è statu spicificatu nuddu registru su cui fari sta funzioni oppuru lu riggistru nun esisti.',
+'revdelete-no-file' => 'Lu file spicificatu nun esisti.',
+'revdelete-show-file-confirm' => 'Si desidira talìari la virsioni cancillata dô file "<nowiki>$1</nowiki>" dô $2 ê $3?',
+'revdelete-show-file-submit' => 'Sì',
+'revdelete-selected' => "'''{{PLURAL:$2|Virsioni silizziunata|Virsioni silizziunati}} di [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Eventu dû riggistru silizziunatu|Eventi dû riggistru silizziunati}}:'''",
+'revdelete-text' => "'''Li virsioni cancillati rèstanu visìbbili ntâ cronoluggìa dâ pàggina, mentri lu testu cuntinutu nun è accissìbbili a lu pùbbricu.'''
+L'àutri amministratura dû situ ponnu accèdiri comu è gghiè a li cuntinuti ammucciati e ripristinàrili attraversu sta stissa nterfaccia, siddu nun hannu statu mpustati àutri limitazzioni n fasi di nstallazzioni dû situ.",
+'revdelete-suppress-text' => "La rimozzioni havi a essiri utilizzata '''sulu''' ni sti casi:
* Dati pirsonali inoppurtuni
*: ''ndirizzi, nnummara di telefunu, codici fiscali, ecc.''",
-'revdelete-legend' => 'Mposta li limitazzioni siquenti supra li virsioni cancillati:',
-'revdelete-hide-text' => 'Ammuccia lu testu dâ virsioni',
-'revdelete-hide-name' => 'Ammuccia azione e uggettu dâ stissa',
-'revdelete-hide-comment' => "Ammuccia l'uggettu dû canciamentu",
-'revdelete-hide-user' => "Ammuccia lu nomu o lu ndirizzu IP di l'auturi",
-'revdelete-hide-restricted' => "Ammuccia l'informazioni innicati macari a li amministratura",
-'revdelete-suppress' => "Ammuccia nformazioni puru all'amministratura",
-'revdelete-hide-image' => 'Ammuccia lu cuntinutu dû file',
-'revdelete-unsuppress' => 'Elìmina le limitazzioni su li rivisioni ripristinati',
-'revdelete-log' => 'Mutivu:',
-'revdelete-submit' => 'Àpplica â rivisioni silizziunata',
-'revdelete-logentry' => 'hà canciatu la visibbilitati pi na rivisioni di [[$1]]',
-'logdelete-logentry' => "hà canciatu la visibbilitati de l'eventu [[$1]]",
-'revdelete-success' => "'''Visibbilitati dâ rivisioni mpustata currittamenti.'''",
-'logdelete-success' => "'''Visibbilitati de l'eventu mpustata currittamenti.'''",
-'revdel-restore' => 'Cancia la visibbilità',
-'pagehist' => 'Storia dâ pàggina',
-'deletedhist' => 'Storia cancillata',
-'revdelete-content' => 'cuntinutu',
-'revdelete-summary' => 'riassuntu dô canciamentu',
-'revdelete-uname' => 'nnomu utenti',
-'revdelete-restricted' => 'ristrizzioni ai suli amministratura attivate',
-'revdelete-unrestricted' => 'ristrizzioni pi suli amministraturi rimossi',
-'revdelete-hid' => 'ammuccia $1',
-'revdelete-unhid' => 'renni visibbili $1',
-'revdelete-log-message' => '$1 pi $2 {{PLURAL:$2|rivisione|rivisioni}}',
-'logdelete-log-message' => '$1 pi $2 {{PLURAL:$2|eventu|eventi}}',
+'revdelete-legend' => 'Mposta li limitazzioni siquenti supra li virsioni cancillati:',
+'revdelete-hide-text' => 'Ammuccia lu testu dâ virsioni',
+'revdelete-hide-image' => 'Ammuccia lu cuntinutu dû file',
+'revdelete-hide-name' => 'Ammuccia azione e uggettu dâ stissa',
+'revdelete-hide-comment' => "Ammuccia l'uggettu dû canciamentu",
+'revdelete-hide-user' => "Ammuccia lu nomu o lu ndirizzu IP di l'auturi",
+'revdelete-hide-restricted' => "Ammuccia l'informazioni innicati macari a li amministratura",
+'revdelete-suppress' => "Ammuccia nformazioni puru all'amministratura",
+'revdelete-unsuppress' => 'Elìmina le limitazzioni su li rivisioni ripristinati',
+'revdelete-log' => 'Mutivu:',
+'revdelete-submit' => 'Àpplica â rivisioni silizziunata',
+'revdelete-logentry' => 'hà canciatu la visibbilitati pi na rivisioni di [[$1]]',
+'logdelete-logentry' => "hà canciatu la visibbilitati de l'eventu [[$1]]",
+'revdelete-success' => "'''Visibbilitati dâ rivisioni mpustata currittamenti.'''",
+'revdelete-failure' => "'''A visibilità dâ rivisioni nu pò essiri impustata:'''
+$1",
+'logdelete-success' => "'''Visibbilitati de l'eventu mpustata currittamenti.'''",
+'logdelete-failure' => "'''La visibilità dû eventu nun po essiri impustata:'''
+$1",
+'revdel-restore' => 'Cancia la visibbilità',
+'pagehist' => 'Storia dâ pàggina',
+'deletedhist' => 'Storia cancillata',
+'revdelete-content' => 'cuntinutu',
+'revdelete-summary' => 'riassuntu dô canciamentu',
+'revdelete-uname' => 'nnomu utenti',
+'revdelete-restricted' => 'ristrizzioni ai suli amministratura attivate',
+'revdelete-unrestricted' => 'ristrizzioni pi suli amministraturi rimossi',
+'revdelete-hid' => 'ammuccia $1',
+'revdelete-unhid' => 'renni visibbili $1',
+'revdelete-log-message' => '$1 pi $2 {{PLURAL:$2|rivisione|rivisioni}}',
+'logdelete-log-message' => '$1 pi $2 {{PLURAL:$2|eventu|eventi}}',
+'revdelete-hide-current' => "Impussibili ammucciari l'oggettu cu la data $1 $2 in quantu è la rivisoni currenti.",
+'revdelete-show-no-access' => 'Impussibili ammustrari l\'oggettu cu data $1 $2 in quantu fu identificatu comu "riservatu" e nun si disponi di lu rilativu accessu.',
+'revdelete-modify-no-access' => 'Impussibili canciari l\'oggettu cu data $1 $2 in quantu fu identificatu comu "riservatu" e nun si disponi di lu rilativu accessu.',
+'revdelete-modify-missing' => "Impossibili canciari l'oggettu cu ID $1 in quantu nun è presenti nô database.",
+'revdelete-no-change' => "'''Attenzioni:''' l'oggettu cu data $1 $2 aveva già l'impostazioni di visibilità richiesti.",
+'revdelete-concurrent-change' => "Impussibili canciari l'oggettu cu data $1 $2 in quantu lu sò statu fu canciatu da n'autru utenti mentri si tintava lu canciamentu.
+Cuntrolla lu log.",
+'revdelete-only-restricted' => "Nun poi ammucciari â vista di l'amministraturi senza silizziunari l'autri opzioni di supprissioni.",
+'revdelete-edit-reasonlist' => 'Cancia li mutivazioni pi la cancillazzioni',
# Suppression log
'suppressionlog' => 'Log dê supprissioni',
@@ -907,68 +955,13 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'mergelogpagetext' => "Appressu veni ammustrata na lista dî operazioni cchiù ricenti di unioni dâ storia di na pàggina ni n'autra.",
# Diffs
-'history-title' => 'Crunoluggìa dî canciamenti di "$1"',
-'difference' => '(Diffirenzi tra li rivisioni)',
-'lineno' => 'Lìnia $1:',
-'compareselectedversions' => 'Fari lu paraguni',
-'visualcomparison' => 'Cunfrontu visuali',
-'wikicodecomparison' => 'Cunfrontu dû wikitext',
-'editundo' => 'annulla',
-'diff-multi' => '({{PLURAL:$1|Na rivisioni ntirmèdia nun ammustrata|$1 rivisioni ntirmedi nun ammustrati}}.)',
-'diff-movedto' => 'muvutu a $1',
-'diff-styleadded' => 'stili $1 junciutu',
-'diff-added' => '$1 junciutu',
-'diff-changedto' => "canciatu 'n $1",
-'diff-movedoutof' => 'muvutu fora di $1',
-'diff-styleremoved' => 'stili $1 livatu',
-'diff-removed' => '$1 livatu',
-'diff-changedfrom' => 'canciatu di $1',
-'diff-src' => 'funti',
-'diff-withdestination' => 'cu distinazzioni $1',
-'diff-with' => '&#32;cu $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'larichizza',
-'diff-height' => 'autizza',
-'diff-p' => "nu '''paràgrafu'''",
-'diff-blockquote' => "na '''citazzioni'''",
-'diff-h1' => "na '''ntistazzioni (liveddu 1)'''",
-'diff-h2' => "na '''ntistazzioni (liveddu 2)'''",
-'diff-h3' => "na '''ntistazzioni (liveddu 3)'''",
-'diff-h4' => "na '''ntistazzioni (liveddu 4)'''",
-'diff-h5' => "na '''ntistazzioni (liveddu 5)'''",
-'diff-pre' => "nu '''bloccu prifurmattatu'''",
-'diff-div' => "na '''divisioni'''",
-'diff-ul' => "na '''lista senz'òrdini'''",
-'diff-ol' => "na '''lista nummirata'''",
-'diff-li' => "n' '''elimentu di lista'''",
-'diff-table' => "na '''tabbedda'''",
-'diff-tbody' => "nu '''cuntinutu di tabbedda'''",
-'diff-tr' => "na '''riga'''",
-'diff-td' => "na '''cella'''",
-'diff-th' => "na '''ntistazzioni'''",
-'diff-br' => "nu '''a capu'''",
-'diff-hr' => "na '''lìnia urizzuntali'''",
-'diff-code' => "nu '''bloccu di còdici pi computer'''",
-'diff-dl' => "na '''lista di difinizzioni'''",
-'diff-dt' => "nu '''tèrmini di difinizzioni'''",
-'diff-dd' => "na '''difinizzioni'''",
-'diff-input' => "n' '''input'''",
-'diff-form' => "nu '''mòdulu'''",
-'diff-img' => "na '''mmàggini'''",
-'diff-span' => "nu '''span'''",
-'diff-a' => "nu '''link'''",
-'diff-i' => "'''cursivu'''",
-'diff-b' => "'''grassettu'''",
-'diff-strong' => "'''grassettu'''",
-'diff-em' => "'''ènfasi'''",
-'diff-font' => "'''font'''",
-'diff-big' => "'''granni'''",
-'diff-del' => "'''scancillatu'''",
-'diff-tt' => "'''spazziatura fissa'''",
-'diff-sub' => "'''suttascrivutu'''",
-'diff-sup' => "'''scritta ccillenti'''",
-'diff-strike' => "'''sbarratu'''",
+'history-title' => 'Crunoluggìa dî canciamenti di "$1"',
+'difference' => '(Diffirenzi tra li rivisioni)',
+'lineno' => 'Lìnia $1:',
+'compareselectedversions' => 'Fari lu paraguni',
+'showhideselectedversions' => 'Ammustra/ammuccia virsioni silizziunati',
+'editundo' => 'annulla',
+'diff-multi' => '({{PLURAL:$1|Na rivisioni ntirmèdia nun ammustrata|$1 rivisioni ntirmedi nun ammustrati}}.)',
# Search results
'searchresults' => 'Risurtati dâ circata',
@@ -976,28 +969,25 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'searchresulttext' => 'Pi cchiossai nfurmazzioni supra la circata nterna di {{SITENAME}}, talìa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Pruvasti a circari: '''[[$1]]'''",
'searchsubtitleinvalid' => "Circata di '''$1'''",
-'noexactmatch' => "'''Nun c'è na pàggina chi si tìtula \"\$1\".''' Putiti [[:\$1|criari sta pàggina]].",
-'noexactmatch-nocreate' => "'''La pàggina cu lu tìtulu \"\$1\" nun esisti.'''",
'toomanymatches' => 'Troppi currispunnenzi. Cancia la richiesta.',
'titlematches' => "Ntê tìtuli di l'artìculi",
'notitlematches' => 'Nudda currispunnenza ntê tìtuli dî pàggini',
'textmatches' => "Ntô testu di l'artìculi",
'notextmatches' => 'Nudda currispunnenza ntô testu dî pàggini',
-'prevn' => 'li pricidenti $1',
-'nextn' => 'li pròssimi $1',
+'prevn' => 'li pricidenti {{PLURAL:$1|$1}}',
+'nextn' => 'li pròssimi {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Risultatu pricidenti|$1 risultati pricedenti}}',
'nextn-title' => '{{PLURAL:$1|Risultatu successivu|$1 risultata successivi}}',
'shown-title' => 'Ammustra {{PLURAL:$1|nu risultatu|$1 risultati}} pi pàggina',
-'viewprevnext' => 'Talìa ($1) ($2) ($3).',
+'viewprevnext' => 'Talìa ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opzioni di circata',
'searchmenu-exists' => "* Pàggina '''[[$1]]'''",
'searchmenu-new' => "'''Crea la pàggina \"[[:\$1]]\" supra sta wiki!'''",
'searchhelp-url' => 'Help:Cuntinuti',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza li pàggini cu stu prifissu]]',
-'searchprofile-articles' => 'Pàggini',
-'searchprofile-articles-and-proj' => 'Pàggina/Pruggettu',
-'searchprofile-project' => 'Pàggini/Pruggettu',
-'searchprofile-images' => 'File',
+'searchprofile-articles' => 'Pàggini di cuntinutu',
+'searchprofile-project' => "Pàggini d'aiutu e dô pruggettu",
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Tuttu',
'searchprofile-advanced' => 'Avanzata',
'searchprofile-articles-tooltip' => 'Cerca nti $1',
@@ -1005,8 +995,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'searchprofile-images-tooltip' => 'Cerca file',
'searchprofile-everything-tooltip' => 'Cerca unnegghiè (puru ntî pàggini di discussioni)',
'searchprofile-advanced-tooltip' => 'Cerca ntê namespace pirsunalizzati',
-'prefs-search-nsdefault' => 'Cerca utilizzannu li pridgifinit:',
-'prefs-search-nscustom' => 'Cerca ntê namespace pirsunalizzati:',
'search-result-size' => '$1 ({{PLURAL:$2|na parola|$2 paroli}})',
'search-result-score' => 'Rilivanza: $1%',
'search-redirect' => '(redirect $1)',
@@ -1019,11 +1007,12 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'search-mwsuggest-disabled' => 'senza suggirimenti',
'search-relatedarticle' => 'Risultati currilati',
'mwsuggest-disable' => 'Astuta suggirimenti AJAX',
+'searcheverything-enable' => 'Cerca ni tutti li namespace',
'searchrelated' => 'currilati',
'searchall' => 'tutti',
'showingresults' => "Ammustra nzinu a {{PLURAL:$1|'''1''' risurtatu|'''$1''' risurtati}} a pàrtiri dô nùmmuru '''$2'''.",
'showingresultsnum' => "L'alencu cunteni {{PLURAL:$3|'''1''' risurtatu|'''$3''' risurtati}} a pàrtiri dû nùmmuru '''$2'''.",
-'showingresultstotal' => "Appressu {{PLURAL:$4|veni ammustratu lu risurtatu '''$1''' di '''$3'''|vèninu ammustrati li risurtati '''$1 - $2''' di '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} pi '''$4'''",
'nonefound' => "'''Nota''': la circata è effittuata pi default sulu nta arcuni namespace. Prova a primèttiri ''all:'' ô testu dâ circata pi circari nta tutti li namespace (cumprisi pàggini di discussioni, template, ecc) oppuru usa lu namespace disidiratu comu prifissu.",
'search-nonefound' => 'La circata nun desi nuddu risurtatu.',
'powersearch' => 'Arriscedi',
@@ -1031,93 +1020,127 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'powersearch-ns' => 'Cerca ntê namespace:',
'powersearch-redir' => 'Elenca redirect',
'powersearch-field' => 'Cerca',
+'powersearch-togglelabel' => 'Silizziona:',
+'powersearch-toggleall' => 'Tutti',
+'powersearch-togglenone' => 'Nuddu',
'search-external' => 'Ricerca sterna',
'searchdisabled' => 'La circata nterna di {{SITENAME}} hà statu disabbilitata. Nta stu mentri, poi usari la circata supra Google o supra àutri muturi di circata. Accura ca li sò ìnnici dê cuntinuti di {{SITENAME}} ponnu nun èssiri aggiurnati.',
+# Quickbar
+'qbsettings' => 'Pusizzioni QuickBar',
+'qbsettings-none' => 'Nuddu',
+'qbsettings-fixedleft' => 'Fissu a manu manca',
+'qbsettings-fixedright' => 'Fissu a manu dritta',
+'qbsettings-floatingleft' => 'Fluttuanti a manu manca',
+'qbsettings-floatingright' => 'Fluttuanti a manu dritta',
+
# Preferences page
-'preferences' => 'prifirenzi',
-'mypreferences' => 'Li mè prifirenzi',
-'prefs-edits' => 'Nùmmuru di canciamenti:',
-'prefsnologin' => 'Accessu nun effittuatu',
-'prefsnologintext' => 'Pi putiri pirsunalizzari li prifirenzi è nicissariu fari l\'<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} accessu]</span>.',
-'prefsreset' => 'Li prifirenzi hannu statu ripristinati a li valura pridifiniti.',
-'qbsettings' => 'Pusizzioni QuickBar',
-'qbsettings-none' => 'Nuddu',
-'qbsettings-fixedleft' => 'Fissu a manu manca',
-'qbsettings-fixedright' => 'Fissu a manu dritta',
-'qbsettings-floatingleft' => 'Fluttuanti a manu manca',
-'qbsettings-floatingright' => 'Fluttuanti a manu dritta',
-'changepassword' => 'Cancia la password',
-'skin' => 'Aspettu',
-'skin-preview' => 'Antiprima',
-'math' => 'Fòrmuli',
-'dateformat' => 'Furmatu dâ data',
-'datedefault' => 'Nudda prifirenza',
-'datetime' => 'Data e ura',
-'math_failure' => "S'hà virificatu un erruri ntô parsing",
-'math_unknown_error' => 'erruri scanusciutu',
-'math_unknown_function' => 'funzioni scanusciuta',
-'math_lexing_error' => 'erruri lissicali',
-'math_syntax_error' => 'erruri di sintassi',
-'math_image_error' => "Cunvirsioni 'n PNG fallita; virificati la curretta nstallazzioni dî siquenti prugrammi: latex, dvips, gs e convert.",
-'math_bad_tmpdir' => 'Mpussìbbili scrìviri o criari la directory timpurània pi math',
-'math_bad_output' => 'Mpussìbbili scrìviri o criari la directory di output pi math',
-'math_notexvc' => 'Esiquìbbili texvc mancanti; pi favuri cunzurtari math/README pi la cunfigurazzioni.',
-'prefs-personal' => 'Prufilu utenti',
-'prefs-rc' => 'Ùrtimi canciamenti',
-'prefs-watchlist' => 'Ossirvati spiciali',
-'prefs-watchlist-days' => "Nùmmiru di jorna ammustrati nta l'ossirvati spiciali:",
-'prefs-watchlist-days-max' => '(Non cchiossai di 7 jorna)',
-'prefs-watchlist-edits' => 'Nùmmaru di canciamenti a ammustrari cu li funzioni avanzati:',
-'prefs-watchlist-edits-max' => '(nùmmaru màssimu: 1000)',
-'prefs-misc' => 'Vari',
-'prefs-resetpass' => 'Cancia password',
-'saveprefs' => 'Sarva li prifirenzi',
-'resetprefs' => 'Annulla',
-'restoreprefs' => 'Ripristina li mpustazzioni di default',
-'textboxsize' => 'Cancia',
-'prefs-edit-boxsize' => 'Diminzioni dâ finestra di mudìfica.',
-'rows' => 'Righi:',
-'columns' => 'Culonni:',
-'searchresultshead' => 'Circata',
-'resultsperpage' => 'Nùmmiru di risurtati pi pàggina:',
-'contextlines' => 'Righi di testu pi ognunu risurtatu:',
-'contextchars' => 'Nùmmaru di caràttiri di cuntestu:',
-'stub-threshold' => 'Valuri minimu pî <a href="#" class="stub">liami a li stub</a>:',
-'recentchangesdays' => "Nùmmuru di jorna a ammustrari nte l'urtimi cancaiamenti:",
-'recentchangesdays-max' => '(màssimu $1 {{PLURAL:$1|jornu|jorna}})',
-'recentchangescount' => "Nùmmiru di righi nta l'ùrtimi canciamenti, storii e log (valuri pridifinitu):",
-'savedprefs' => 'Li tò prifirenzi foru sarvati.',
-'timezonelegend' => 'Fusu orariu:',
-'timezonetext' => "Mmetti lu nùmmiru d'uri di diffirenza tra la tò ura lucali e l'ura dû server (UTC).",
-'localtime' => 'Uràriu lucali',
-'timezoneselect' => 'Time zone:',
-'timezoneuseserverdefault' => 'Usa uràriu dû server',
-'timezoneuseoffset' => 'Àutru (spicificari diffirenza)',
-'timezoneoffset' => 'Uri di diffirenza¹',
-'servertime' => 'Uràriu dû server',
-'guesstimezone' => "Usa l'ura dû tò browser",
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceanu Atlantico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceanu Indianu',
-'timezoneregion-pacific' => 'Oceanu Pacificu',
-'allowemail' => 'Cunzenti la ricezzioni di e-mail di àutri utenti',
-'prefs-searchoptions' => 'Opzioni di circata',
-'prefs-namespaces' => 'Namespace',
-'defaultns' => 'Namespace pridifiniti pi la ricerca:',
-'default' => 'pridifinitu',
-'files' => 'Mmàggini',
-'prefs-custom-css' => 'CSS personalizzatu',
-'prefs-custom-js' => 'JS personalizzatu',
+'preferences' => 'prifirenzi',
+'mypreferences' => 'Li mè prifirenzi',
+'prefs-edits' => 'Nùmmuru di canciamenti:',
+'prefsnologin' => 'Accessu nun effittuatu',
+'prefsnologintext' => 'Pi putiri pirsunalizzari li prifirenzi è nicissariu fari l\'<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} accessu]</span>.',
+'changepassword' => 'Cancia la password',
+'prefs-skin' => 'Aspettu',
+'skin-preview' => 'Antiprima',
+'prefs-math' => 'Fòrmuli',
+'datedefault' => 'Nudda prifirenza',
+'prefs-datetime' => 'Data e ura',
+'prefs-personal' => 'Prufilu utenti',
+'prefs-rc' => 'Ùrtimi canciamenti',
+'prefs-watchlist' => 'Ossirvati spiciali',
+'prefs-watchlist-days' => "Nùmmiru di jorna ammustrati nta l'ossirvati spiciali:",
+'prefs-watchlist-days-max' => '(Non cchiossai di 7 jorna)',
+'prefs-watchlist-edits' => 'Nùmmaru di canciamenti a ammustrari cu li funzioni avanzati:',
+'prefs-watchlist-edits-max' => '(nùmmaru màssimu: 1000)',
+'prefs-watchlist-token' => 'Token lista taliata mia',
+'prefs-misc' => 'Vari',
+'prefs-resetpass' => 'Cancia password',
+'prefs-email' => 'Opzioni email',
+'prefs-rendering' => 'Aspettu',
+'saveprefs' => 'Sarva li prifirenzi',
+'resetprefs' => 'Annulla',
+'restoreprefs' => 'Ripristina li mpustazzioni di default',
+'prefs-editing' => 'Cancia',
+'prefs-edit-boxsize' => 'Diminzioni dâ finestra di mudìfica.',
+'rows' => 'Righi:',
+'columns' => 'Culonni:',
+'searchresultshead' => 'Circata',
+'resultsperpage' => 'Nùmmiru di risurtati pi pàggina:',
+'contextlines' => 'Righi di testu pi ognunu risurtatu:',
+'contextchars' => 'Nùmmaru di caràttiri di cuntestu:',
+'stub-threshold' => 'Valuri minimu pî <a href="#" class="stub">liami a li stub</a>:',
+'recentchangesdays' => "Nùmmuru di jorna a ammustrari nte l'urtimi cancaiamenti:",
+'recentchangesdays-max' => '(màssimu $1 {{PLURAL:$1|jornu|jorna}})',
+'recentchangescount' => 'Nùmmiru di canciamenti da ammustrari di default:',
+'prefs-help-recentchangescount' => 'Ciò includi li canciamenti ricenti, storii e riggistri.',
+'prefs-help-watchlist-token' => "Cumpilannu stu campu cu na chiavi sigreta sarà giniratu nu feed RSS pi propri ossirvati spiciali. Chiunqui sa sta chiavi ni stu campu putrà leggiri li osservati speciali, quindi assicurati di nsiriri nu valori sicuru. Ccà c'è nu valori ginirato casualmenti ca si pò usari: $1",
+'savedprefs' => 'Li tò prifirenzi foru sarvati.',
+'timezonelegend' => 'Fusu orariu:',
+'localtime' => 'Uràriu lucali',
+'timezoneuseserverdefault' => 'Usa uràriu dû server',
+'timezoneuseoffset' => 'Àutru (spicificari diffirenza)',
+'timezoneoffset' => 'Uri di diffirenza¹',
+'servertime' => 'Uràriu dû server',
+'guesstimezone' => "Usa l'ura dû tò browser",
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'America',
+'timezoneregion-antarctica' => 'Antartide',
+'timezoneregion-arctic' => 'Artide',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceanu Atlantico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceanu Indianu',
+'timezoneregion-pacific' => 'Oceanu Pacificu',
+'allowemail' => 'Cunzenti la ricezzioni di e-mail di àutri utenti',
+'prefs-searchoptions' => 'Opzioni di circata',
+'prefs-namespaces' => 'Namespace',
+'defaultns' => 'In casu cuntrariu cerca ni sti namespace:',
+'default' => 'pridifinitu',
+'prefs-files' => 'Mmàggini',
+'prefs-custom-css' => 'CSS personalizzatu',
+'prefs-custom-js' => 'JS personalizzatu',
+'prefs-reset-intro' => "È pussibili usari sta pàggina pi reimpustari li propri prifirenzi a chiddi pridifiniti dô situ.
+L'operazioni nun pò èssiri annullata.",
+'prefs-emailconfirm-label' => 'Conferma dâ e-mail:',
+'prefs-textboxsize' => 'Diminsioni dâ casedda di canciamentu',
+'youremail' => 'Lu tò nnirizzu email:',
+'username' => "Nomu d'utenti:",
+'uid' => 'ID utenti:',
+'prefs-memberingroups' => 'Cumpunenti {{PLURAL:$1|dû gruppu|dî gruppi}}:',
+'prefs-registration' => 'Data di riggistrazioni:',
+'yourrealname' => 'Lu tò nomu veru*',
+'yourlanguage' => 'Lingua dâ nterfaccia:',
+'yourvariant' => 'Varianti:',
+'yournick' => 'Suprannomu (nickname):',
+'prefs-help-signature' => 'Li cummenta nê pàggini di discussioni hanu essiri firmata cu "<nowiki>~~~~</nowiki>" ca virrannu cunvirtuta nâ propria firma cu appressu la data.',
+'badsig' => 'Erruri ntâ firma nun standard, virificari li tag HTML.',
+'badsiglength' => 'Lu Nickname è troppu longu. Nun pò aviri cchiù di $1 {{PLURAL:$1|caràttiri|caràttiri}}.',
+'yourgender' => 'Geniri:',
+'gender-unknown' => 'Nun specificatu',
+'gender-male' => 'Masculu',
+'gender-female' => 'Fimmina',
+'prefs-help-gender' => "Opzionali: cunsenti di adattari li missaggi dô software in funzioni dô generi d'utenti. Sta nfurmazioni sarà pubblica.",
+'email' => 'Nnirizzu email',
+'prefs-help-realname' => '* Nomu veru (upziunali): siddu scegghi di furnìrilu veni usatu pi dàriti crèditu dû tò travagghiu.',
+'prefs-help-email' => "* Imeil (opziunali): abbìlita l'àutri utenti a cuntattàriti attraversu la tò pàggina d'utenti o di discussioni, senza pi chissu rivilari la tò idintitati.",
+'prefs-help-email-required' => 'Lu nnirizzu email è nicissariu.',
+'prefs-info' => 'Informazzioni di basi',
+'prefs-i18n' => 'Internazionalizzazioni',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Furmatu data',
+'prefs-timeoffset' => 'Uri di diffirenza',
+'prefs-advancedediting' => 'Opzioni avanzati',
+'prefs-advancedrc' => 'Opzioni avanzati',
+'prefs-advancedrendering' => 'Opzioni avanzati',
+'prefs-advancedsearchoptions' => 'Opzioni avanzati',
+'prefs-advancedwatchlist' => 'Opzioni avanzati',
+'prefs-display' => 'Opzioni di visualizzazioni',
+'prefs-diffs' => 'Diffirenzi',
# User rights
-'userrights' => 'Gistioni dî dritti utenti', # Not used as normal message but as header for the special page itself
+'userrights' => 'Gistioni dî dritti utenti',
'userrights-lookup-user' => "Gistisci li gruppi di l'utenti",
'userrights-user-editname' => "Trasi nu nomu d'utenti:",
'editusergroup' => 'Cancia gruppi utenti',
@@ -1201,6 +1224,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'right-editprotected' => 'Cancia li pàggini prutiggiuti',
'right-editinterface' => 'Cancia la ntirfaccia utilizzaturi',
'right-editusercssjs' => 'Cancia li file CSS e JS di àutri utilizzatura',
+'right-editusercss' => 'Cancia li file CSS di àutri utilizzatura',
+'right-edituserjs' => 'Cancia li file JS di àutri utilizzatura',
'right-rollback' => "Canciu n'arreri ràpidu pi l'utilizzaturi chi canciau na pàggina particulari",
'right-markbotedits' => 'Marca li canci spicìfichi comu bot',
'right-noratelimit' => 'Nun suggettu ô limiti di azzioni',
@@ -1217,6 +1242,7 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'right-siteadmin' => 'Blocca a sblocca lu databasi',
'right-reset-passwords' => 'Reimposta la password di autri utenti',
'right-override-export-depth' => 'Esporta pàggini cumpresi li pàggini culligati finu ô quintu liveddu',
+'right-versiondetail' => 'Talìa li informazioni cumpleti dô software',
# User rights log
'rightslog' => "Dritti di l'utenti",
@@ -1266,6 +1292,15 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'recentchanges-legend' => 'Opzioni ùrtimi canciamenti',
'recentchangestext' => 'Chista pàggina prisenta li canci cchiù ricenti ê cuntinuti dô situ.',
'recentchanges-feed-description' => 'Stu feed riporta li canciamenti cchiù ricenti a li cuntinuti dû situ.',
+'recentchanges-label-legend' => 'Liggenda: $1.',
+'recentchanges-legend-newpage' => '$1 - pàggina nova',
+'recentchanges-label-newpage' => 'This edit havi creatu na nova pàggina',
+'recentchanges-legend-minor' => '$1 - canciamentu nicu',
+'recentchanges-label-minor' => 'Chista è nu canciamentu nnicu',
+'recentchanges-legend-bot' => '$1 - canciamentu dô bot',
+'recentchanges-label-bot' => 'Stu canciamentu fu fattu dû bot',
+'recentchanges-legend-unpatrolled' => '$1 - canciamentu nun virificatu',
+'recentchanges-label-unpatrolled' => 'Stu canciamentu nun havi ancora statu virificatu',
'rcnote' => "Ccà sutta {{PLURAL:$1|c'è lu canciamentu cchiù ricenti appurtatu|cci sunnu l'ùrtimi '''$1''' canciamenti appurtati}} ô situ {{PLURAL:$2|nta l'ùrtimi 24 uri|nta l'ùrtimi '''$2''' giorni}}; li dati sunnu aggiurnati ê $5 dû $4.",
'rcnotefrom' => 'Ccà sutta cci sunnu li canciamenti a pàrtiri dû <b>$2</b> (ammustrati nzinu ô <b>$1</b>).',
'rclistfrom' => 'Ammustra li canciamenti novi a pàrtiri di $1',
@@ -1292,6 +1327,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
# Recent changes linked
'recentchangeslinked' => 'Canciamenti culligati',
+'recentchangeslinked-feed' => 'Canciamenti culligati',
+'recentchangeslinked-toolbox' => 'Canciamenti culligati',
'recentchangeslinked-title' => 'Canciamenti culligati a "$1"',
'recentchangeslinked-noresult' => 'Nuddu canciamentu ê pàggini culligati ntô pirìudu spicificatu.',
'recentchangeslinked-summary' => "Chista pàggina spiciali ammustra li canciamenti cchiù ricenti ê pàggini culligati a chidda spicificata. Li pàggini taliati ni la tou [[Special:Watchlist|lista taliata]] sunu evidenziati 'n '''grassettu'''.",
@@ -1301,7 +1338,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
# Upload
'upload' => 'Càrrica nu file',
'uploadbtn' => 'Càrrica',
-'reupload' => 'Càrrica di novu',
'reuploaddesc' => 'Torna a lu mòdulu pi lu carricamentu.',
'uploadnologin' => 'Accessu nun effittuatu',
'uploadnologintext' => 'Hai a esèquiri [[Special:UserLogin|lu login]] pi carricari mmàggini o àutri files multimidiali.',
@@ -1348,7 +1384,6 @@ Pi nziriri nu file nta na pàggina, fai nu lijami accussì:
* Nomu dû file carricatu: '''<tt>[[:$1]]</tt>'''
* Nome dû file esistenti: '''<tt>[[:$2]]</tt>'''
Pi favuri scegghiti n'àutru nomu.",
-'fileexists-thumb' => "<center>'''Mmagini esistenti'''</center>",
'fileexists-thumbnail-yes' => "Lu file carricato sembra èssiri lu risurtatu di n'antiprima ''(thumbnail)''. [[$1|thumb]]
Virificari, pi cunfruntu, lu file '''<tt>[[:$1]]</tt>'''.
Siduu si tratta dâ stissa mmagini, nte dimenzioni urigginali, nun è nicissariu carricara àutri antiprimi.",
@@ -1368,7 +1403,6 @@ Siddu si disponi dâ mmàggini ntâ risuluzzioni urigginali, si prega di carric
'uploaddisabledtext' => 'Lu carricamentu dî file nun è attivu supra a stu situ.',
'php-uploaddisabledtext' => 'Li file PHP non sunnu abbilitati. Pi favuri cuntrolla li mpustazzioni dû file_uploads.',
'uploadscripted' => "Stu file cunteni còdici HTML o di script, ca putissi èssiri nterpritato erroniamenti d'un browser web.",
-'uploadcorrupt' => 'Lu file è currumputu o hà na stinzioni nun curretta. Pi favuri cuntrolla lu file e esequi di novu lu carricamentu.',
'uploadvirus' => 'Lu file cunteni un virus! Ultiriuri nfurmazzioni: $1',
'sourcefilename' => "Nomu dû file d'orìggini:",
'destfilename' => 'Nomu dû file di distinazzioni:',
@@ -1395,12 +1429,15 @@ MGP # Pentax
PICT # arcuni
#</pre> <!-- dassa sta lìnia comu è già -->',
-'upload-proto-error' => 'Protucollu erratu',
-'upload-proto-error-text' => "Pi l'upload rimotu è nicissariu spicificari URL ca nìzzianu cu <code>http://</code> oppuru <code>ftp://</code>.",
-'upload-file-error' => 'Erruri nternu',
-'upload-file-error-text' => "S'hà virificatu un erruri nternu duranti la criazzioni d'un file timpuràniu supra lu server. Cuntattari un amministraturi di sistema.",
-'upload-misc-error' => "Erruri nun idintificatu pi l'upload",
-'upload-misc-error-text' => "S'hà virificatu un erruri nun idintificatu duranti lu carricamentu dû file. Virificari ca la URL è curretta e accissìbbili e pruvari di novu. Siddu lu prubbrema pirsisti, cuntattari un amministraturi di sistema.",
+'upload-proto-error' => 'Protucollu erratu',
+'upload-proto-error-text' => "Pi l'upload rimotu è nicissariu spicificari URL ca nìzzianu cu <code>http://</code> oppuru <code>ftp://</code>.",
+'upload-file-error' => 'Erruri nternu',
+'upload-file-error-text' => "S'hà virificatu un erruri nternu duranti la criazzioni d'un file timpuràniu supra lu server. Cuntattari un amministraturi di sistema.",
+'upload-misc-error' => "Erruri nun idintificatu pi l'upload",
+'upload-misc-error-text' => "S'hà virificatu un erruri nun idintificatu duranti lu carricamentu dû file. Virificari ca la URL è curretta e accissìbbili e pruvari di novu. Siddu lu prubbrema pirsisti, cuntattari un amministraturi di sistema.",
+'upload-too-many-redirects' => "L'URL cuntineva troppi redirect",
+'upload-unknown-size' => 'Diminsioni scunusciuta',
+'upload-http-error' => "Ci fù n'erruri HTTP: $1",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL nun ragghiuncìbbili',
@@ -1429,6 +1466,7 @@ Pi canciari l'urdinamentu, fari clic supra a la ntistazzioni dâ culonna scigghi
'listfiles_count' => 'Virsioni',
# File description page
+'file-anchor-link' => 'Mmàggini',
'filehist' => 'Crunuluggìa dô file',
'filehist-help' => 'Fari clic supra nu gruppu data/ura pi vìdiri lu file comu si prisintava ntô mumentu nnicatu.',
'filehist-deleteall' => 'cancilla tuttu',
@@ -1443,6 +1481,7 @@ Pi canciari l'urdinamentu, fari clic supra a la ntistazzioni dâ culonna scigghi
'filehist-dimensions' => 'Diminsioni',
'filehist-filesize' => 'Dimensioni dû file',
'filehist-comment' => 'Oggettu',
+'filehist-missing' => 'File mancanti',
'imagelinks' => "Pàggini c'ùsanu sta mmàggini",
'linkstoimage' => '{{PLURAL:$1|La pàggina siquenti richiàma|Li $1 pàggini siquenti richiàmanu}} sta mmàggini:',
'linkstoimage-more' => 'Chiossai di $1 {{PLURAL:$1|pàggina punta|pàggini pùntanu}} a stu file.
@@ -1452,15 +1491,16 @@ Di sècutu sunnu alincati sulu {{PLURAL:$1|la prima pàggina ca punta|li primi $
'morelinkstoimage' => 'Visualizza [[Special:WhatLinksHere/$1|àutri link]] a stu file.',
'redirectstofile' => '{{PLURAL:$1|Chistu|Chisti $1}} file {{PLURAL:$1|è|sunnu}} nu redirect a stu file:',
'duplicatesoffile' => '{{PLURAL:$1|Chistu|Chisti $1}} file {{PLURAL:$1|è nu dupppiuni|sunnu duppiuni}} di stu file ([[Special:FileDuplicateSearch/$2|cchiù dittagli]]):',
-'sharedupload' => 'Stu file veni di $1 e pò èssiri utilizzatu di àutri pruggetti wiki.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Si preja di taliari $1 pi ultiriuri nfurmazzioni.',
-'shareduploadwiki-desc' => 'La discrizzioni ca appari supra la rilativa $1 veni ammustrata sutta.',
-'shareduploadwiki-linktext' => "pàggina di discrizzioni dû ''file''",
-'noimage' => 'Un file cu stu nomu nun esisti, ma è pussìbbili, voi $1 tu?',
-'noimage-linktext' => 'carricàrilu ora',
+'sharedupload' => 'Stu file veni di $1 e pò èssiri utilizzatu di àutri pruggetti wiki.',
+'sharedupload-desc-there' => "Stu file pruvieni da $1 e pò èssiri usatu da l'autri prugetti.
+Talìari la [$2 paggina di discrizzioni dô file] pi autri nfurmazioni.",
+'sharedupload-desc-here' => "Stu file pruvieni da $1 e pò èssiri usatu da l'autri prugetti.
+Appressu veni ammustrata la discrizioni prisenti nâ [$2 paggina di discrizzioni dô file].",
+'filepage-nofile' => 'Nun esisti nu file cu stu nnomu.',
+'filepage-nofile-link' => 'Nun esisti nu file cu stu nnomu, ma è pussibili [$1 caricarlu].',
'uploadnewversion-linktext' => 'Càrrica na virsioni nova di stu file',
-'shared-repo-from' => 'da $1', # $1 is the repository name
-'shared-repo' => "n'archiviu cundivisu", # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'da $1',
+'shared-repo' => "n'archiviu cundivisu",
# File reversion
'filerevert' => 'Riprìstina $1',
@@ -1521,6 +1561,7 @@ Di sècutu sunnu alincati sulu {{PLURAL:$1|la prima pàggina ca punta|li primi $
'statistics-header-edits' => 'Statistichi pî canci',
'statistics-header-views' => 'Statistichî pî taliàti',
'statistics-header-users' => "Li statìstichi di l'utilizzatura",
+'statistics-header-hooks' => 'Autri statistichi',
'statistics-articles' => 'Pàggini di cuntinutu',
'statistics-pages' => 'Pàggini',
'statistics-pages-desc' => 'Tutti li pàggini dâ wiki, cu puru chiddi di discussioni, li rinnirizzamenti, ecc.',
@@ -1549,8 +1590,8 @@ Li redirect <s>cancillati</s> furunu curretti.',
'brokenredirects' => "Riinnirizzamenti (''redirects'') rumputi.",
'brokenredirectstext' => 'Li rinnirizzamenti siquenti pùntanu a pàggini ca nun asìstinu:',
-'brokenredirects-edit' => '(cancia)',
-'brokenredirects-delete' => '(cancella)',
+'brokenredirects-edit' => 'cancia',
+'brokenredirects-delete' => 'cancella',
'withoutinterwiki' => 'Pàggini senza interwiki',
'withoutinterwiki-summary' => 'Li pàggini nnicati ccà nun hànnu liami ê virsioni nta àutri lingui:',
@@ -1657,7 +1698,7 @@ chisti putìssiru quinni èssiri utilizzati puru siddu cumpàrinu nta l'alencu."
# Special:Categories
'categories' => 'Catigurìi',
-'categoriespagetext' => 'Li catigurìi ccassutta cuntèninu pàggini o file multimidiali.
+'categoriespagetext' => '{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pàggini o file multimidiali.
Li [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà.
Talìa macari li [[Special:WantedCategories|catigurìi addumannati]].',
'categoriesfrom' => 'Ammustra li catigurìi a pàrtiri di:',
@@ -1665,8 +1706,9 @@ Talìa macari li [[Special:WantedCategories|catigurìi addumannati]].',
'special-categories-sort-abc' => 'ordina alfabbeticamenti',
# Special:DeletedContributions
-'deletedcontributions' => 'Cuntribbuti utenti scancillati',
-'deletedcontributions-title' => 'Cuntribbuti utenti scancillati',
+'deletedcontributions' => 'Cuntribbuti utenti scancillati',
+'deletedcontributions-title' => 'Cuntribbuti utenti scancillati',
+'sp-deletedcontributions-contribs' => 'cuntribbuti',
# Special:LinkSearch
'linksearch' => 'Lijami di fora',
@@ -1682,6 +1724,13 @@ Protucolli suppurtati: <tt>$1</tt>',
'listusersfrom' => "Ammustra l'utenti a pàrtiri di:",
'listusers-submit' => 'Ammustra',
'listusers-noresult' => "Nuddu utenti attruvatu. Virificari l'usu di caràttiri maiùsculi/minùsculi.",
+'listusers-blocked' => '(bloccatu)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista dî utenti attivi',
+'activeusers-count' => '$1 recent {{PLURAL:$1|canciamento|canciamenti ricenti}}',
+'activeusers-from' => 'Ammustra li utenti a pàrtiri da:',
+'activeusers-noresult' => 'Nussun utenti truvatu.',
# Special:Log/newusers
'newuserlogpage' => 'Novi utenti',
@@ -1692,16 +1741,22 @@ Protucolli suppurtati: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'account criatu automaticamenti',
# Special:ListGroupRights
-'listgrouprights' => 'Diritti dô gruppu utenti',
-'listgrouprights-summary' => "Ccà sutta sunnu elincati li gruppi utenti difiniti pi sta wiki, cu li dritti d'accessu assuciati a iddi. Pi sapìrinni chiossai supra li dritti, lèggiti [[{{MediaWiki:Listgrouprights-helppage}}|sta pàggina]].",
-'listgrouprights-group' => 'Gruppu',
-'listgrouprights-rights' => 'Diritti',
-'listgrouprights-helppage' => 'Help:Diritti dô gruppu',
-'listgrouprights-members' => '(Elencu di cu ni fa parti)',
-'listgrouprights-addgroup' => 'Pò jùnciri {{PLURAL:$2|lu gruppu|li gruppi}}: $1',
-'listgrouprights-removegroup' => 'Pò livari {{PLURAL:$2|lu gruppu|li gruppi}}: $1',
-'listgrouprights-addgroup-all' => 'Pò jùnciri a tutti li gruppi',
-'listgrouprights-removegroup-all' => 'Pò livari tutti li gruppi',
+'listgrouprights' => 'Diritti dô gruppu utenti',
+'listgrouprights-summary' => "Ccà sutta sunnu elincati li gruppi utenti difiniti pi sta wiki, cu li dritti d'accessu assuciati a iddi. Pi sapìrinni chiossai supra li dritti, lèggiti [[{{MediaWiki:Listgrouprights-helppage}}|sta pàggina]].",
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dirittu assegnatu</span>
+* <span class="listgrouprights-revoked">Dirittu revocatu</span>',
+'listgrouprights-group' => 'Gruppu',
+'listgrouprights-rights' => 'Diritti',
+'listgrouprights-helppage' => 'Help:Diritti dô gruppu',
+'listgrouprights-members' => '(Elencu di cu ni fa parti)',
+'listgrouprights-addgroup' => 'Pò jùnciri {{PLURAL:$2|lu gruppu|li gruppi}}: $1',
+'listgrouprights-removegroup' => 'Pò livari {{PLURAL:$2|lu gruppu|li gruppi}}: $1',
+'listgrouprights-addgroup-all' => 'Pò jùnciri a tutti li gruppi',
+'listgrouprights-removegroup-all' => 'Pò livari tutti li gruppi',
+'listgrouprights-addgroup-self' => 'Pò jùnciri {{PLURAL:$2|lu gruppu|li gruppi}} a lu propriu account: $1',
+'listgrouprights-removegroup-self' => 'Pò livari {{PLURAL:$2|nu gruppu|li gruppi}} da lu propriu account: $1',
+'listgrouprights-addgroup-self-all' => 'Junci tutti li gruppa ô propriu account',
+'listgrouprights-removegroup-self-all' => 'Può livari tutti li gruppi dô propriu account',
# E-mail user
'mailnologin' => 'Nuddu ndirizzu cui mannari lu missaggiu',
@@ -1789,7 +1844,7 @@ Nun vèninu mannati àutri canciamenti \'n caso di ultiriuri canciamenti, a menu
--
Pi mudificari li mpustazzioni dâ lista di l\'ussirvati spiciali, vìsita
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Pi dari lu tò feedback e arricèviri ultiriuri assistenza:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1806,6 +1861,7 @@ Pi dari lu tò feedback e arricèviri ultiriuri assistenza:
'historywarning' => 'Accura: La pàggina ca stai pi cancillari havi na cronoluggìa:',
'confirmdeletetext' => "Stai cancillannu dû databbasi na pàggina o na mmàggini cu tutta la sò storia di manera pirmanenti. Pi fauri, cunferma ca tu ntenni fari sta cosa, ca tu hai caputu li cunziquenzi, e chi lu fai secunnu li linìi guida stabbiliti 'n [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Azzioni cumpritata',
+'actionfailed' => 'Azioni fallita',
'deletedtext' => '"<nowiki>$1</nowiki>" ha statu cancillatu.
Talìa $2 pi na lista di cancillazzioni ricenti.',
'deletedarticle' => 'Hà cancillatu "[[$1]]"',
@@ -1834,8 +1890,8 @@ Talìa $2 pi na lista di cancillazzioni ricenti.',
'alreadyrolled' => "Nun è pussìbbili annullari li canciamenti appurtati â pàggina [[:$1]] di parti di [[User:$2|$2]] ([[User talk:$2|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); n'àutru utenti hà già canciatu la pàggina oppuru hà effittuatu lu rollback.
Lu canciamentu cchiù ricenti â pàggina fu appurtata di [[User:$3|$3]] ([[User talk:$3|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "Â discrizzioni â mudìfica era: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => "Canciu narrè di [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussioni]]) cu l'ùrtima virsioni di [[User:$1|$1]]", # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Â discrizzioni â mudìfica era: \"''\$1''\".",
+'revertpage' => "Canciu narrè di [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussioni]]) cu l'ùrtima virsioni di [[User:$1|$1]]",
'rollback-success' => 'Annullati li canciamenti di $1; ritornata â virsioni pricidenti di $2.',
'sessionfailure' => 'S\'hà virificatu un prubbrema cu la tò sissioni di login;
lu sistema nun hà esiquitu lu cumannu mpartitu pi pricauzzioni.
@@ -1855,7 +1911,6 @@ Pi favuri utilizza lu tastu "\'n arreri" dû tò browser, ricàrrica la pàggina
'protectexpiry' => 'Scadenza',
'protect_expiry_invalid' => 'Scadenza nun vàlida.',
'protect_expiry_old' => 'Scadenza già trascursa.',
-'protect-unchain' => 'Sblocca pirmissu di spustamentu',
'protect-text' => "Ccà poi vìdiri e canciari lu liveddu di prutezzioni pi la pàggina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nun pò canciari li liveddi di prutizzioni quannu sî bloccatu. Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
'protect-locked-dblock' => "Mpussibbili canciari li liveddi di prutizzioni pi nu bloccu dô database.
@@ -1883,7 +1938,7 @@ Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
** Edit war
** Pàggina usata assai',
'protect-edit-reasonlist' => 'Cancia li mutivi pâ prutizzioni',
-'protect-expiry-options' => '1 ura:1 hour,1 jornu:1 day,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ura:1 hour,1 jornu:1 day,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite',
'restriction-type' => 'Pirmissu',
'restriction-level' => 'Liveddu di ristrizzioni:',
'minimum-size' => 'Dimensioni minima',
@@ -1918,6 +1973,7 @@ Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
'undelete-nodiff' => "Nun s'havi attruvatu na rivisioni pricidenti.",
'undeletebtn' => 'Riprìstina!',
'undeletelink' => 'riprìstina',
+'undeleteviewlink' => 'talìa',
'undeletereset' => 'Rimposta',
'undeleteinvert' => 'Scancia la silizzioni',
'undeletecomment' => 'Cummentu:',
@@ -1953,7 +2009,7 @@ $1',
'contributions-title' => 'Cuntribbuti di $1',
'mycontris' => 'Li mei cuntribbuti',
'contribsub2' => 'Pi $1 ($2)',
-'nocontribs' => 'Secunnu sti criteri nun ci sunnu canci o cuntribbuti.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Secunnu sti criteri nun ci sunnu canci o cuntribbuti.',
'uctop' => '(ùrtima pi la pàggina)',
'month' => 'A pàrtiri dô mese (e pricidenti):',
'year' => "A pàrtiri di l'annu (e pricidenti):",
@@ -1962,7 +2018,10 @@ $1',
'sp-contributions-newbies-sub' => 'Pi li utenti novi',
'sp-contributions-newbies-title' => "Cuntribbuti di l'utenti novi",
'sp-contributions-blocklog' => 'log dî blocchi',
+'sp-contributions-deleted' => 'cuntribbuti utenti scancillati',
'sp-contributions-logs' => 'riggistri',
+'sp-contributions-talk' => 'discussioni',
+'sp-contributions-userrights' => 'gistioni dî dritti utenti',
'sp-contributions-search' => 'Ricerca cuntribbuti',
'sp-contributions-username' => 'Nnirizzu IP o nomu utenti:',
'sp-contributions-submit' => 'Ricerca',
@@ -2009,7 +2068,7 @@ $1',
'ipbenableautoblock' => "Blocca automaticamenti l'ùrtimu ndirizzu IP usatu di l'utenti e li succissivi cu cui vèninu tintati canciamenti",
'ipbsubmit' => "Blocca st'utenti",
'ipbother' => 'Durata nun n alencu',
-'ipboptions' => '2 uri:2 hours,1 jornu:1 day,3 jorna:3 days,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uri:2 hours,1 jornu:1 day,3 jorna:3 days,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite',
'ipbotheroption' => 'àutru',
'ipbotherreason' => 'Àutri mutivi/dittagghi:',
'ipbhidename' => 'Ammuccia lu nomu utenti dê canciamenti e dê listi',
@@ -2040,7 +2099,7 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:IPBlockList|lista di l'IP bluccati
'ipblocklist-submit' => 'Ricerca',
'blocklistline' => '$1, $2 hà bluccatu $3 ($4)',
'infiniteblock' => 'nfinitu',
-'expiringblock' => 'scadenza: $1',
+'expiringblock' => 'scadi lu $1 ê $2',
'anononlyblock' => 'sulu anònimi',
'noautoblockblock' => 'bloccu automàticu disabbilitatu',
'createaccountblock' => 'criazzioni account bluccata',
@@ -2054,7 +2113,6 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:IPBlockList|lista di l'IP bluccati
'contribslink' => 'cuntribbuti',
'autoblocker' => 'Bluccatu automaticamenti pirchì lu ndirizzu IP è cundivisu cu l\'utenti "[[User:$1|$1]]". Lu bloccu di l\'utenti $1 fu mpostu pi lu siquenti mutivu: "\'\'\'$2\'\'\'".',
'blocklogpage' => 'Blocchi',
-'blocklog-fulllog' => 'Riggistru cumpretu dî blocchi',
'blocklogentry' => 'hà bluccatu [[$1]]; scadenza $2 $3',
'reblock-logentry' => 'Canciau li mpustazzioni dû bloccu pi [[$1]] cu na scadenza di $2 $3',
'blocklogtext' => "Chistu è l'alencu di l'azzioni di bloccu e sbloccu utenti. Li ndirizzi IP bluccati automaticamenti nun sunu alincati. Cunzurtari l'[[Special:IPBlockList|alencu IP bluccati]] pi l'alencu dî ndirizzi e noma utenti lu cui bloccu è opirativu.",
@@ -2131,7 +2189,7 @@ Nta sti casi, tu hai a spustari o agghiùnciri manuarmenti la pàggina di discus
'move-watch' => 'Talìa sta pàggina',
'movepagebtn' => 'Sposta la pàggina',
'pagemovedsub' => 'Lu spustamentu riniscìu.',
-'movepage-moved' => '\'\'\'"$1" fu spustata a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" fu spustata a "$2"\'\'\'',
'movepage-moved-redirect' => 'Vinni criatu nu riinnirizzamentu.',
'movepage-moved-noredirect' => 'La criazzioni di nu riinnirizzamentu vinni scancillata.',
'articleexists' => "Na pàggina cu stu nomu esisti già, oppuru lu nomu scigghiutu nun è vàlidu. Scègghiri n'àutru tìtulu.",
@@ -2172,6 +2230,8 @@ La pàggina di distinazzioni "[[:$1]]" asisti già. S\'addisìa cancillàrila pi
'imageinvalidfilename' => 'Lu nomu dû file di distinazzioni nun è validu',
'fix-double-redirects' => 'Aggiorna tutti li redirect chi puntanu ô titulu urigginali',
'move-leave-redirect' => 'Lassa darreri nu redirect',
+'protectedpagemovewarning' => "'''Attenzioni: Sta pàggina è stata bluccata n modu ca sulu l'utentu cu li privileggi di amministraturi ponu spustarla.'''",
+'semiprotectedpagemovewarning' => "'''Nota:''' Sta pàggina fu bluccata n modo tali ca solo l'utenti riggistrati ponu spustarla.",
# Export
'export' => 'Esporta pàggini',
@@ -2192,15 +2252,21 @@ Nta st'ùrtimu casu si pò macari utilizzari un culligamentu, p'asempiu [[{{#Spe
'export-pagelinks' => 'Includi pàggini currilati, funnuti di:',
# Namespace 8 related
-'allmessages' => 'Missaggi di sistema',
-'allmessagesname' => 'Nomu',
-'allmessagesdefault' => 'Testu pridifinitu',
-'allmessagescurrent' => 'Testu attuali',
-'allmessagestext' => "Chista è na lista di missaggi di sistema chi s'attròvanu sutta MediaWiki:''nomu''.
+'allmessages' => 'Missaggi di sistema',
+'allmessagesname' => 'Nomu',
+'allmessagesdefault' => 'Testu pridifinitu',
+'allmessagescurrent' => 'Testu attuali',
+'allmessagestext' => "Chista è na lista di missaggi di sistema chi s'attròvanu sutta MediaWiki:''nomu''.
Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] si voi cuntribbuiri â localizzazioni generica di MediaWiki.",
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nun è suppurtatu pirchì lu flag '''\$wgUseDatabaseMessages''' nun è attivu.",
-'allmessagesfilter' => 'Filtru supra li missaggi:',
-'allmessagesmodified' => 'Ammustra sulu chiddi mudificati',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nun è suppurtatu pirchì lu flag '''\$wgUseDatabaseMessages''' nun è attivu.",
+'allmessages-filter-legend' => 'Filtru',
+'allmessages-filter' => 'Filtru pi statu di canciamentu:',
+'allmessages-filter-unmodified' => 'Nun canciati',
+'allmessages-filter-all' => 'Tutti',
+'allmessages-filter-modified' => 'Canciati',
+'allmessages-prefix' => 'Filtra pi prefissu:',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Vai',
# Thumbnails
'thumbnail-more' => 'Ngrannisci',
@@ -2210,6 +2276,9 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'djvu_no_xml' => 'Mpussibbili òtteniri lu XML pô file DjVu',
'thumbnail_invalid_params' => 'Parametri antiprima nun validi',
'thumbnail_dest_directory' => 'Mpussibbili criari la directory di distinazzioni',
+'thumbnail_image-type' => 'Tipu di mmàggini nun supputtatu',
+'thumbnail_gd-library' => 'Cunfigurazioni ncumpleta da libreria GD: funzioni $1 mancanti',
+'thumbnail_image-missing' => 'Pari èssiri mancanti lu file: $1',
# Special:Import
'import' => 'Mporta pàggini',
@@ -2281,6 +2350,7 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'tooltip-search-fulltext' => 'Attrova pàggini pi chistu testu',
'tooltip-p-logo' => 'Pàggina principali',
'tooltip-n-mainpage' => 'Vìsita la pàggina principali',
+'tooltip-n-mainpage-description' => 'Talìa la pàggina principali',
'tooltip-n-portal' => 'Discrizzioni dû pruggettu, zoccu poi fari, unni attruvari li cosi',
'tooltip-n-currentevents' => "Nfurmazzioni supra l'avvinimenti d'attualitati",
'tooltip-n-recentchanges' => "Alencu di l'ùrtimi canciamenti dû situ.",
@@ -2333,7 +2403,7 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
# Attribution
'anonymous' => '{{PLURAL:$1|Utenti anònimu|Utenti anònimi}} di {{SITENAME}}',
'siteuser' => '$1, utenti di {{SITENAME}}',
-'lastmodifiedatby' => "Sta pàggina hà statu canciata pi l'ùrtima vota lu $2, $1 di $3.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Sta pàggina hà statu canciata pi l'ùrtima vota lu $2, $1 di $3.",
'othercontribs' => 'Basatu supra lu travagghiu di $1.',
'others' => 'àutri',
'siteusers' => '$1, {{PLURAL:$2|utenti|utenti}} di {{SITENAME}}',
@@ -2374,6 +2444,17 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'mw_math_modern' => 'Raccumannatu pi li browser muderni',
'mw_math_mathml' => 'MathML siddu pussìbbili (spirimintali)',
+# Math errors
+'math_failure' => "S'hà virificatu un erruri ntô parsing",
+'math_unknown_error' => 'erruri scanusciutu',
+'math_unknown_function' => 'funzioni scanusciuta',
+'math_lexing_error' => 'erruri lissicali',
+'math_syntax_error' => 'erruri di sintassi',
+'math_image_error' => "Cunvirsioni 'n PNG fallita; virificati la curretta nstallazzioni dî siquenti prugrammi: latex, dvips, gs e convert.",
+'math_bad_tmpdir' => 'Mpussìbbili scrìviri o criari la directory timpurània pi math',
+'math_bad_output' => 'Mpussìbbili scrìviri o criari la directory di output pi math',
+'math_notexvc' => 'Esiquìbbili texvc mancanti; pi favuri cunzurtari math/README pi la cunfigurazzioni.',
+
# Patrolling
'markaspatrolleddiff' => 'Segna lu canciamentu comu virificatu',
'markaspatrolledtext' => 'Segna sta pàggina comu virificata',
@@ -2408,12 +2489,9 @@ $1',
'previousdiff' => '← Diffirenza pricidenti',
'nextdiff' => 'Diffirenza siquenti →',
-# Visual comparison
-'visual-comparison' => 'Cunfrontu visuali',
-
# Media information
'mediawarning' => "'''Accura''': Stu file pò cuntèniri còdici malignu, esiquènnulu lu vostru sistema putisi vèniri cumprumissu.",
-'imagemaxsize' => 'Diminzioni màssima dî mmàggini supra li rilativi pàggini di o:',
+'imagemaxsize' => "Diminzioni màssima dî mmàggini:<br />''(pi li pàggini di discrizzioni dô file)''",
'thumbsize' => 'Grannizza dî miniaturi:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàggina|pàggini}}',
'file-info' => '(Diminzioni: $1, tipu MIME: $2)',
@@ -2422,6 +2500,8 @@ $1',
'svg-long-desc' => '(file SVG, dimensioni nominali $1 × $2 pixel, dimensioni dô file: $3)',
'show-big-image' => 'Virsioni a àuta risuluzzioni',
'show-big-image-thumb' => "<small>Diminzioni di st'antiprima: $1 × $2 pixel</small>",
+'file-info-gif-looped' => 'luppatu',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Gallarìa dî file novi',
@@ -2453,7 +2533,7 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Larghizza',
@@ -2580,14 +2660,14 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-unknowndate' => 'Data scanusciuta',
-'exif-orientation-1' => 'Nurmali', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Capuvortu urizzontarmenti', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rutatu di 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Capuvortu virticarmenti', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => "Rotatu 90° 'n sensu antiurariu e capuvortu virticarmenti", # 0th row: left; 0th column: top
-'exif-orientation-6' => "Rutatu 90° 'n senzu orariu", # 0th row: right; 0th column: top
-'exif-orientation-7' => "Rotatu 90° 'n sensu urariu e capuvortu virticarmenti", # 0th row: right; 0th column: bottom
-'exif-orientation-8' => "Rutatu 90° 'n senzu antiorariu", # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Nurmali',
+'exif-orientation-2' => 'Capuvortu urizzontarmenti',
+'exif-orientation-3' => 'Rutatu di 180°',
+'exif-orientation-4' => 'Capuvortu virticarmenti',
+'exif-orientation-5' => "Rotatu 90° 'n sensu antiurariu e capuvortu virticarmenti",
+'exif-orientation-6' => "Rutatu 90° 'n senzu orariu",
+'exif-orientation-7' => "Rotatu 90° 'n sensu urariu e capuvortu virticarmenti",
+'exif-orientation-8' => "Rutatu 90° 'n senzu antiorariu",
'exif-planarconfiguration-1' => 'a blocchi (chunky)',
'exif-planarconfiguration-2' => 'liniari (planar)',
@@ -2718,7 +2798,7 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-gpsmeasuremode-2' => 'Misurazzioni bidiminziunali',
'exif-gpsmeasuremode-3' => 'Misurazzioni tridiminziunali',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Chilòmitri orari',
'exif-gpsspeed-m' => 'Migghia orari',
'exif-gpsspeed-n' => 'Gruppa',
@@ -2858,7 +2938,7 @@ $1',
'duplicate-defaultsort' => 'Accura: la chiavi priddifinuta d\'urdinamentu "$2" si sciarrìa cu chidda d\'antura "$1".',
# Special:Version
-'version' => 'virsioni', # Not used as normal message but as header for the special page itself
+'version' => 'virsioni',
'version-extensions' => 'Estenzioni nstallati',
'version-specialpages' => 'Pàggini spiciali',
'version-parserhooks' => 'Hook dû parser',
@@ -2872,7 +2952,7 @@ $1',
'version-skin-extension-functions' => 'Funzioni lijati a la furma gràfica (skin) ntrudotti di estenzioni',
'version-hook-name' => "Nomu di l'hook",
'version-hook-subscribedby' => 'Suttascrizzioni',
-'version-version' => 'Virsioni',
+'version-version' => '(Virsioni $1)',
'version-license' => 'Licenza',
'version-software' => 'Software nstallatu',
'version-software-product' => 'Prodottu',
@@ -2952,4 +3032,15 @@ Nziriri lu nomu di lu file senza lu prifissu \"{{ns:file}}:\"",
'dberr-outofdate' => 'Nota ca la loru indicizzazioni dê nostri cuntintinuta po essiri nun aggiurnata.',
'dberr-cachederror' => 'Chista ca segui è na copia cache da pàggina richiesta, e putissi essiri nun aggiurnata.',
+# HTML forms
+'htmlform-invalid-input' => "Ci su prublema cu l'input nseritu",
+'htmlform-select-badoption' => "Lu valori spicificatu nun è n'opzioni valida.",
+'htmlform-int-invalid' => "Lu valiri spicificatu nun è n'interu.",
+'htmlform-float-invalid' => "Lu valuri c'hai spicificatu nun è nu nnummuru.",
+'htmlform-int-toolow' => 'Lu valori spicificatu è sutta lu minimu di $1',
+'htmlform-int-toohigh' => 'Lu valori spicificatu è supra lu minimu di $1',
+'htmlform-submit' => 'Invia',
+'htmlform-reset' => 'Annulla canciamenti',
+'htmlform-selectorother-other' => 'Autri',
+
);
diff --git a/languages/messages/MessagesSco.php b/languages/messages/MessagesSco.php
index 4a8c72d5..3314d43d 100644
--- a/languages/messages/MessagesSco.php
+++ b/languages/messages/MessagesSco.php
@@ -12,6 +12,7 @@
* @author Malafaya
* @author OchAyeTheNoo
* @author Omnipaedista
+ * @author Purodha
* @author The Evil IP address
* @author Urhixidur
* @author Ushanka
@@ -71,6 +72,10 @@ $messages = array(
'underline-never' => 'Niver',
'underline-default' => 'Brouser defaut',
+# Font style option in Special:Preferences
+'editfont-sansserif' => 'Sans-serif font',
+'editfont-serif' => 'Serif font',
+
# Dates
'sunday' => 'Sunday',
'monday' => 'Monanday',
@@ -147,10 +152,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki releese mailin leet]",
-'about' => 'Aboot',
-'article' => 'Content page',
-'newwindow' => '(opens in new windae)',
-'cancel' => 'Cancel',
+'about' => 'Aboot',
+'article' => 'Content page',
+'newwindow' => '(opens in new windae)',
+'cancel' => 'Cancel',
+'moredotdotdot' => 'Mair...',
+'mypage' => 'Ma page',
+'mytalk' => 'Ma collogue',
+'anontalk' => 'Collogue for this IP',
+'navigation' => 'Navigation',
+'and' => '&#32;an',
+
+# Cologne Blue skin
'qbfind' => 'Rake',
'qbbrowse' => 'Brouse',
'qbedit' => 'Edit',
@@ -158,15 +171,25 @@ $messages = array(
'qbpageinfo' => 'Context',
'qbmyoptions' => 'Ma pages',
'qbspecialpages' => 'Byordinar pages',
-'moredotdotdot' => 'Mair...',
-'mypage' => 'Ma page',
-'mytalk' => 'Ma collogue',
-'anontalk' => 'Collogue for this IP',
-'navigation' => 'Navigation',
-'and' => '&#32;an',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'ASQ',
+'faqpage' => 'Project:ASQ',
+
+# Vector skin
+'vector-action-delete' => 'Delete',
+'vector-action-move' => 'Flit',
+'vector-action-protect' => 'Fend',
+'vector-namespace-category' => 'Category',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Page',
+'vector-namespace-mediawiki' => 'Message',
+'vector-namespace-template' => 'Template',
+'vector-namespace-user' => 'Uiser page',
+'vector-view-create' => 'Mak',
+'vector-view-edit' => 'Edit',
+'vector-view-history' => 'See history',
+'vector-view-viewsource' => 'View soorce',
+'actions' => 'Actions',
+'namespaces' => 'Namespaces',
'errorpagetitle' => 'Error',
'returnto' => 'Return tae $1.',
@@ -216,7 +239,7 @@ $messages = array(
'otherlanguages' => 'In ither leids',
'redirectedfrom' => '(Reguidit frae $1)',
'redirectpagesub' => 'Redirect page',
-'lastmodifiedat' => 'This page wis hindermaist chynged $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'This page wis hindermaist chynged $2, $1.',
'viewcount' => 'This page haes been accesst $1 {{PLURAL:$1|once|$1 times}}.',
'protectedpage' => 'Protectit page',
'jumpto' => 'Lowp tae:',
@@ -227,7 +250,6 @@ $messages = array(
'aboutsite' => 'Aboot {{SITENAME}}',
'aboutpage' => 'Project:Aboot',
'copyright' => 'Aa text is available unner $1',
-'copyrightpagename' => '{{SITENAME}} copyricht',
'copyrightpage' => '{{ns:project}}:Copyrichts',
'currentevents' => 'Gaun on the nou',
'currentevents-url' => 'Project:Gaun on the nou',
@@ -235,8 +257,6 @@ $messages = array(
'disclaimerpage' => 'Project:General_disclamation',
'edithelp' => 'Editin help',
'edithelppage' => 'Help:Editin',
-'faq' => 'ASQ',
-'faqpage' => 'Project:ASQ',
'helppage' => 'Help:Contents',
'mainpage' => 'Main Page',
'mainpage-description' => 'Main Page',
@@ -307,9 +327,6 @@ A leet o valid byordinar pages can be funnd at [[Special:SpecialPages|{{int:spec
'databaseerror' => 'Database error',
'dberrortext' => 'A database query syntax error haes occurt. This micht indicate a bug in the saftware. The last attemptit database query wis: <blockquote><tt>$1</tt></blockquote> frae athin function "<tt>$2</tt>". MySQL returned error "<tt>$3: $4</tt>".',
'dberrortextcl' => 'A database query syntax error haes occurt. The last attemptit database query wis: "$1" frae athin function "$2". MySQL returned error "$3: $4".',
-'noconnect' => 'Sorry! The wiki is experiencin some technical difficulties, and canna contact the database server.<br /> $1',
-'nodb' => 'Cuidna select database $1',
-'cachederror' => 'The follaein is a cached copy o the requestit page, an micht no be up tae date.',
'laggedslavemode' => 'Warning: Page micht nae contain recent updates',
'readonly' => 'Database lockit',
'enterlockreason' => "Enter a raeson for the lock, includin an estimate o whan the lock'll be lowsed",
@@ -364,7 +381,6 @@ $2',
The grunds for this are: ''$2''.",
# Login and logout pages
-'logouttitle' => 'Uiser logoot',
'logouttext' => "'''Ye'r nou loggit oot.'''
Ye can continue to uise {{SITENAME}} namelessly, or ye can log in again as the same or as a different uiser.
@@ -373,7 +389,6 @@ Mynd that some pages micht continue tae be displayed as if ye war aye loggit in,
Yer accoont haes been creatit.
Mynd an chynge yer [[Special:Preferences|{{SITENAME}} preferences]].',
-'loginpagetitle' => 'Uiser login',
'yourname' => 'Yer uiser name',
'yourpassword' => 'Passwaird:',
'yourpasswordagain' => 'Retype passwaird:',
@@ -395,21 +410,7 @@ Mynd an chynge yer [[Special:Preferences|{{SITENAME}} preferences]].',
'createaccountmail' => 'bi email',
'badretype' => 'The passwords ye entered disna match.',
'userexists' => 'The uiser name ye entered is in uiss. Please chuise a different name.',
-'youremail' => 'Yer email:',
-'username' => 'Uisername:',
-'uid' => 'Uiser ID:',
-'prefs-memberingroups' => 'Member o {{PLURAL:$1|group|groups}}:',
-'yourrealname' => 'Yer real name:',
-'yourlanguage' => 'Interface leid:',
-'yourvariant' => 'Leid variant',
-'yournick' => 'Seegnatur:',
-'badsig' => 'Raw signature nae guid; check HTML tags.',
-'badsiglength' => 'Yer nickname is ower lang; it haes tae be $1 {{PLURAL:$1|character|characters}} or less.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Rael name is optional an gin ye chuise tae provide it this will be uised tae gie ye attreibution for yer wark.',
'loginerror' => 'Login mishanter',
-'prefs-help-email' => 'Email is optional, an lats ithers contact ye throu yer uiser or uiser_collogue page athoot you haein tae reveal yer identity.',
-'prefs-help-email-required' => 'Yer e-mail address is needit.',
'nocookiesnew' => "The uiser accoont wis creatit, but ye'r no loggit in. {{SITENAME}} uises cookies tae log uisers in. Ye hae cookies disabled. Please enable them, than log in wi yer new uisername and password.",
'nocookieslogin' => '{{SITENAME}} uises cookies tae log in uisers. Ye hae cookies disabled. Please enable thaim an gie it anither shot.',
'noname' => "Ye hivna specifee'd a valid uisername.",
@@ -470,7 +471,6 @@ Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
'newpassword' => 'New passwaird:',
'resetpass_submit' => 'Mak passwaird an log in',
'resetpass_success' => 'Yer passwaird chynge wis braw! Nou loggin ye in...',
-'resetpass_bad_temporary' => 'Yer short term passwaird wisnae habile. Ye micht hae already chynged yer passwaird or requestit a new short term passwaird.',
'resetpass_forbidden' => 'Passwords canna be chynged',
'resetpass-no-info' => 'Ye maun be loggit in tae access this page directly.',
'resetpass-submit-loggedin' => 'Chynge passwaird',
@@ -545,7 +545,6 @@ Yer block ID is $5. Please include this ID in ony argies ye mak.',
'blockededitsource' => "The text o '''your edits''' tae '''$1''' is shawn ablo:",
'whitelistedittitle' => 'Login needit tae edit',
'whitelistedittext' => 'Ye hae tae $1 tae edit pages.',
-'confirmedittitle' => 'E-mail confirmation needit for tae edit',
'confirmedittext' => 'Ye maun confirm yer e-mail address afore editin pages. Please set an validate yer e-mail address throu yer [[Special:Preferences|uiser settins]].',
'nosuchsectiontitle' => 'There isnae a section wi that teetle',
'nosuchsectiontext' => 'Yer tryin tae edit a section that isnae there.',
@@ -560,7 +559,8 @@ Yer block ID is $5. Please include this ID in ony argies ye mak.',
'noarticletext' => "The'r nae text on this page the nou. Ye can [[Special:Search/{{PAGENAME}}|rake for this page teitle]] in ither pages or [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page].",
'userpage-userdoesnotexist' => 'Uiser accoont "$1" hasnae been registerit. Please check gin ye wint tae mak or edit this page.',
'clearyourcache' => "'''Tak tent:''' Efter hainin, ye micht hae tae bypass yer brouser's cache for tae see the chynges. '''Mozilla / Firefox / Safari:''' haud doun ''Shift'' while dabbin on ''Reload'', or press ''Ctrl-Shift-R'' (''Cmd-Shift-R'' on Apple Mac); '''IE:''' haud doun ''Ctrl'' while dabbin on ''Refresh'', or press ''Ctrl-F5''; '''Konqueror:''' juist dab on the ''Reload'' button, or press ''F5''; '''Opera''' users micht hae tae haillie dicht thair cache in ''Tools&rarr;Preferences''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new CSS/JS afore savin.",
+'usercssyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new CSS afore savin.",
+'userjsyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new JS afore savin.",
'usercsspreview' => "'''Mynd that ye'r juist previewin yer uiser CSS, it haesna yet been hained!'''",
'userjspreview' => "'''Mynd that ye're juist testin/previewing yer uiser JavaScript; it haesna been hained yet!'''",
'userinvalidcssjstitle' => "'''Warnin:''' There isnae a skin \"\$1\". Mynd that yer ain .css an .js pages uise a lowercase teetle, e.g. {{ns:user}}:Foo/monobook.css instead o {{ns:user}}:Foo/Monobook.css.",
@@ -613,7 +613,7 @@ Ye can go back an eik tae an existing page, or [[Special:UserLogin|log in or mak
'permissionserrors' => 'Richts Errors',
'permissionserrorstext' => 'Ye dinnae hae the richts tae dae that, acause o the followin {{PLURAL:$1|grund|grunds}}:',
'permissionserrorstext-withaction' => 'Ye dinna hae the richts tae $2, for the follaein {{PLURAL:$1|reason|reasons}}:',
-'recreate-deleted-warn' => "'''Warnin: Ye are makkin a page that haes been deletit.'''
+'recreate-moveddeleted-warn' => "'''Warnin: Ye are makkin a page that haes been deletit.'''
Ye shuld check that it is guid tae keep editin this page.
The deletion log for this page is providit here:",
@@ -638,7 +638,7 @@ The grund for this, given by $3 is ''$2''",
'nohistory' => "The'r nae edit history for this page.",
'currentrev' => 'Current reveision',
'revisionasof' => 'Reveision as o $1',
-'revision-info' => 'Revision as o $1 by $2', # Additionally available: $3: revision id
+'revision-info' => 'Revision as o $1 by $2',
'previousrevision' => '← Aulder reveision',
'nextrevision' => 'Newer reveision →',
'currentrevisionlink' => 'see current reveision',
@@ -648,7 +648,6 @@ The grund for this, given by $3 is ''$2''",
'page_first' => 'first',
'page_last' => 'hindermaist',
'histlegend' => 'Diff selection: mairk the radio boxes o the versions tae compare an press enter or the button at the bottom.<br /> Legend: (cur) = difference frae current version, (last) = difference frae foregaun version, s = smaa edit.',
-'deletedrev' => '[delete]',
'histfirst' => 'Foremaist',
'histlast' => 'Hindermaist',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -657,26 +656,25 @@ The grund for this, given by $3 is ''$2''",
# Revision feed
'history-feed-title' => 'Revision history',
'history-feed-description' => 'Revision history for this page on the wiki',
-'history-feed-item-nocomment' => '$1 at $2', # user at time
+'history-feed-item-nocomment' => '$1 at $2',
'history-feed-empty' => 'The requestit page disnae exist.
It micht hae been deletit frae the wiki, or the name micht hae been chynged.
Try [[Special:Search|rakin on the wiki]] for new pages ye micht be interestit in.',
# Revision deletion
-'rev-deleted-comment' => '(jottin removit)',
-'rev-deleted-user' => '(uisername removit)',
-'rev-deleted-event' => '(entry removit)',
-'rev-deleted-text-permission' => 'This page revision haes been removit frae the public archives.
-There micht be parteeculars in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].',
-'rev-deleted-text-view' => 'This page revision haes been removit frae the public archives.
+'rev-deleted-comment' => '(jottin removit)',
+'rev-deleted-user' => '(uisername removit)',
+'rev-deleted-event' => '(entry removit)',
+'rev-deleted-text-permission' => 'This page revision haes been removit frae the public archives.
+There micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-deleted-text-view' => 'This page revision haes been removit frae the public archives.
Acause yer an admeenistrator on this site, ye can leuk at it;
-there micht be parteeculars in the [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} deletion log].',
-'rev-delundel' => 'shaw/scug',
-'revisiondelete' => 'Delete/undelete revisions',
-'revdelete-nooldid-title' => 'Nae target revision',
-'revdelete-toomanytargets-title' => 'Ower mony targets',
-'pagehist' => 'Page history',
-'revdelete-uname' => 'uisername',
+there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-delundel' => 'shaw/scug',
+'revisiondelete' => 'Delete/undelete revisions',
+'revdelete-nooldid-title' => 'Nae target revision',
+'pagehist' => 'Page history',
+'revdelete-uname' => 'uisername',
# History merging
'mergehistory-from' => 'Soorce page:',
@@ -687,20 +685,18 @@ there micht be parteeculars in the [{{fullurl:Special:Log/delete|page={{FULLPAGE
'lineno' => 'Line $1:',
'compareselectedversions' => 'Compare selectit versions',
'editundo' => 'undo',
-'diff-src' => 'soorce',
# Search results
'searchresults' => 'Rake results',
'searchresulttext' => 'For mair information aboot rakin {{SITENAME}}, see [[{{MediaWiki:Helppage}}|Rakin {{SITENAME}}]].',
'searchsubtitle' => "Ye raked for '''[[:$1]]'''",
'searchsubtitleinvalid' => "Ye raked for '''$1'''",
-'noexactmatch' => "'''There nae page wi the teetle \"\$1\".''' Ye can [[:\$1|mak this page]].",
'titlematches' => 'Airticle teitle matches',
'notitlematches' => 'Nae page teitle matches',
'notextmatches' => 'Nae page text matches',
-'prevn' => 'foregaun $1',
-'nextn' => 'neist $1',
-'viewprevnext' => 'View ($1) ($2) ($3)',
+'prevn' => 'foregaun {{PLURAL:$1|$1}}',
+'nextn' => 'neist {{PLURAL:$1|$1}}',
+'viewprevnext' => 'View ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Contents',
'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})',
'search-section' => '(section $1)',
@@ -714,36 +710,50 @@ there micht be parteeculars in the [{{fullurl:Special:Log/delete|page={{FULLPAGE
'searchdisabled' => 'Rakin throu {{SITENAME}} is disabled for performance raesons. Ye can rake via Google juist nou. Mynd that thair indexes o {{SITENAME}} content micht be oot o date.',
# Preferences page
-'mypreferences' => 'Ma preferences',
-'prefsnologin' => 'No loggit in',
-'prefsnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae set uiser preferences.',
-'prefsreset' => 'Preferences haes been reset frae storage.',
-'changepassword' => 'Chynge password',
-'skin-preview' => 'First Leuk',
-'math' => 'Renderin math',
-'datedefault' => 'Nae preference',
-'datetime' => 'Date an time',
-'prefs-personal' => 'Uiser data',
-'prefs-rc' => 'Recent chynges an shawin stubs',
-'prefs-misc' => 'Antrin settins',
-'prefs-resetpass' => 'Chynge passwaird',
-'saveprefs' => 'Hain preferences',
-'textboxsize' => 'Editin',
-'searchresultshead' => 'Rake result settins',
-'resultsperpage' => 'Hits tae shaw per page',
-'contextlines' => 'Lines tae shaw per hit',
-'contextchars' => 'Characters o context per line',
-'recentchangescount' => 'Nummer o teitles in recent chynges',
-'savedprefs' => 'Yer preferences haes been hained.',
-'timezonetext' => 'Enter nummer o hoors yer local time differs frae server time (UTC).',
-'timezoneoffset' => 'Affset',
-'servertime' => 'Server time is nou',
-'guesstimezone' => 'Fill in frae brouser',
-'allowemail' => 'Allou email frae ither uisers',
-'defaultns' => 'Rake in thir namespaces bi defaut:',
-'default' => 'defaut',
-'prefs-custom-css' => 'Custom CSS',
-'prefs-custom-js' => 'Custom JS',
+'mypreferences' => 'Ma preferences',
+'prefsnologin' => 'No loggit in',
+'prefsnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae set uiser preferences.',
+'changepassword' => 'Chynge password',
+'skin-preview' => 'First Leuk',
+'prefs-math' => 'Renderin math',
+'datedefault' => 'Nae preference',
+'prefs-datetime' => 'Date an time',
+'prefs-personal' => 'Uiser data',
+'prefs-rc' => 'Recent chynges an shawin stubs',
+'prefs-misc' => 'Antrin settins',
+'prefs-resetpass' => 'Chynge passwaird',
+'saveprefs' => 'Hain preferences',
+'prefs-editing' => 'Editin',
+'searchresultshead' => 'Rake result settins',
+'resultsperpage' => 'Hits tae shaw per page',
+'contextlines' => 'Lines tae shaw per hit',
+'contextchars' => 'Characters o context per line',
+'recentchangescount' => 'Nummer o teitles in recent chynges',
+'savedprefs' => 'Yer preferences haes been hained.',
+'timezoneoffset' => 'Affset',
+'servertime' => 'Server time is nou',
+'guesstimezone' => 'Fill in frae brouser',
+'allowemail' => 'Allou email frae ither uisers',
+'defaultns' => 'Rake in thir namespaces bi defaut:',
+'default' => 'defaut',
+'prefs-files' => 'Files',
+'prefs-custom-css' => 'Custom CSS',
+'prefs-custom-js' => 'Custom JS',
+'youremail' => 'Yer email:',
+'username' => 'Uisername:',
+'uid' => 'Uiser ID:',
+'prefs-memberingroups' => 'Member o {{PLURAL:$1|group|groups}}:',
+'yourrealname' => 'Yer real name:',
+'yourlanguage' => 'Interface leid:',
+'yourvariant' => 'Leid variant',
+'yournick' => 'New seegnatur:',
+'badsig' => 'Raw signature nae guid; check HTML tags.',
+'badsiglength' => 'Yer nickname is ower lang; it haes tae be $1 {{PLURAL:$1|character|characters}} or less.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Rael name is optional an gin ye chuise tae provide it this will be uised tae gie ye attreibution for yer wark.',
+'prefs-help-email' => 'Email is optional, an lats ithers contact ye throu yer uiser or uiser_collogue page athoot you haein tae reveal yer identity.',
+'prefs-help-email-required' => 'Yer e-mail address is needit.',
+'prefs-diffs' => 'Diffs',
# User rights
'editinguser' => "Editin uiser '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -781,12 +791,13 @@ there micht be parteeculars in the [{{fullurl:Special:Log/delete|page={{FULLPAGE
'rc_categories_any' => 'Ony',
# Recent changes linked
-'recentchangeslinked' => 'Relatit chynges',
+'recentchangeslinked' => 'Relatit chynges',
+'recentchangeslinked-feed' => 'Relatit chynges',
+'recentchangeslinked-toolbox' => 'Relatit chynges',
# Upload
'upload' => 'Uplaid file',
'uploadbtn' => 'Uplaid file',
-'reupload' => 'Re-uplaid',
'reuploaddesc' => 'Gang back tae the uplaid form.',
'uploadnologin' => 'Nae loggit in',
'uploadnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] til uplaid files.',
@@ -819,7 +830,6 @@ Tae pit the eimage intae a page, uise an airtin i the form
'uploadedimage' => 'uplaidit "$1"',
'uploaddisabled' => 'Sorry, uplaidin is disabled.',
'uploadscripted' => 'This file hauds HTML or script code that micht be wrang interpretit bi a wab brouser.',
-'uploadcorrupt' => 'The file is corrupt or haes a wrang extension. Please check the file an uplaid again.',
'uploadvirus' => 'The file hauds a virus! Details: $1',
'sourcefilename' => 'Soorce filename:',
@@ -833,6 +843,7 @@ Tae pit the eimage intae a page, uise an airtin i the form
'listfiles_size' => 'Size',
# File description page
+'file-anchor-link' => 'Eimage',
'filehist' => 'File history',
'filehist-deleteone' => 'delete',
'filehist-revert' => 'revert',
@@ -841,7 +852,6 @@ Tae pit the eimage intae a page, uise an airtin i the form
'imagelinks' => 'File airtins',
'linkstoimage' => 'The follaein $1 pages airts tae this image:',
'nolinkstoimage' => "The'r nae pages airts tae this eimage.",
-'noimage' => 'Nae file wi this name exists, ye can [$1 uplaid it]',
# File reversion
'filerevert' => 'Revert $1',
@@ -869,13 +879,16 @@ Tae pit the eimage intae a page, uise an airtin i the form
'statistics-header-edits' => 'Edit statistics',
'statistics-header-views' => 'View statistics',
'statistics-header-users' => 'Uiser statistics',
+'statistics-header-hooks' => 'Ither statistics',
'statistics-pages' => 'Pages',
'doubleredirects' => 'Dooble reguidals',
'doubleredirectstext' => 'Ilka raw hauds airtins tae the first an saicont reguidal, as weel as the first line o the saicont reguidal text, for usual giein the "rael" tairget page, that the first reguidal shuid pynt til.',
-'brokenredirects' => 'Brucken reguidals',
-'brokenredirectstext' => 'The follaein reguidals airts tae pages that disna exist.',
+'brokenredirects' => 'Brucken reguidals',
+'brokenredirectstext' => 'The follaein reguidals airts tae pages that disna exist.',
+'brokenredirects-edit' => 'edit',
+'brokenredirects-delete' => 'delete',
'withoutinterwiki' => 'Pages athoot leid links',
'withoutinterwiki-legend' => 'Prefix',
@@ -946,12 +959,16 @@ Tae pit the eimage intae a page, uise an airtin i the form
'special-categories-sort-count' => 'sairt bi coont',
'special-categories-sort-abc' => 'sairt by the alphabet',
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'contreibutions',
+
# Special:LinkSearch
'linksearch-ns' => 'Namespace:',
'linksearch-ok' => 'Rake',
# Special:ListUsers
-'listusers-submit' => 'Shaw',
+'listusers-submit' => 'Shaw',
+'listusers-blocked' => '(blockit)',
# E-mail user
'mailnologin' => 'Nae send address',
@@ -1018,8 +1035,8 @@ an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
'rollbackfailed' => 'Rowback failed',
'cantrollback' => 'Canna revert edit; last contreibutor is the ae author o this page.',
'alreadyrolled' => 'Canna rowback last edit o [[$1]] bi [[User:$2|$2]] ([[User talk:$2|Talk]]); some ither bodie haes editit or rowed back the page aareadies. Last edit wis bi [[User:$3|$3]] ([[User talk:$3|Talk]]).',
-'editcomment' => "The edit comment wis: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Revertit edit o [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]), chynged back tae last version bi [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "The edit comment wis: \"''\$1''\".",
+'revertpage' => 'Revertit edit o [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]), chynged back tae last version bi [[User:$1|$1]]',
# Protect
'protectlogtext' => 'Ablo is a leet o page locks/unlocks. See the [[Special:ProtectedPages|protected pages list]] for the list of currently operational page protections.',
@@ -1032,7 +1049,7 @@ an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
'protect-level-sysop' => 'Juist administrators',
'protect-othertime' => 'Ither time:',
'protect-othertime-op' => 'ither time',
-'protect-expiry-options' => '2 oor:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 oor:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
# Restrictions (nouns)
'restriction-edit' => 'Edit',
@@ -1063,13 +1080,14 @@ afore it wis delete. The actual text o thir deletit reveisions is available tae
'contributions' => 'Uiser contreibutions',
'mycontris' => 'Ma contreibutions',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Nae chynges wis funnd matchin thae criteria.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nae chynges wis funnd matchin thae criteria.',
'uctop' => ' (tap)',
'month' => 'Frae month (an afore):',
'year' => 'Frae year (an afore):',
'sp-contributions-blocklog' => 'block log',
'sp-contributions-logs' => 'logs',
+'sp-contributions-talk' => 'collogue',
'sp-contributions-submit' => 'Rake',
# What links here
@@ -1089,7 +1107,7 @@ afore it wis delete. The actual text o thir deletit reveisions is available tae
'ipbreason' => 'Raeson:',
'ipbsubmit' => 'Block this uiser',
'ipbother' => 'Ither time',
-'ipboptions' => '2 oor:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oor:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
'ipbotheroption' => 'ither',
'badipaddress' => 'That IP address is nae guid',
'blockipsuccesssub' => 'Block succeedit',
@@ -1183,7 +1201,6 @@ In the saicont case ye can uise an airtin forbye, for exemplar [[{{#Special:Expo
'allmessagescurrent' => 'Text the nou',
'allmessagestext' => 'This is a leet o aa seestem messages available in the MediaWiki: namespace.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' nae supportit acause '''\$wgUseDatabaseMessages''' is aff.",
-'allmessagesmodified' => 'Juist shaw chynged',
# Thumbnails
'filemissing' => 'File missin',
@@ -1366,4 +1383,7 @@ Please confirm that ye really want tae recreate this airticle.",
'tag-filter-submit' => 'Filter',
'tags-edit' => 'edit',
+# HTML forms
+'htmlform-selectorother-other' => 'Ither',
+
);
diff --git a/languages/messages/MessagesSd.php b/languages/messages/MessagesSd.php
index 4df670d5..9e7ac35d 100644
--- a/languages/messages/MessagesSd.php
+++ b/languages/messages/MessagesSd.php
@@ -105,7 +105,7 @@ $specialPageAliases = array(
$magicWords = array(
'redirect' => array( '0', '#چوريو', '#REDIRECT' ),
- 'localmonth' => array( '1', 'مقاميمهينو', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'مقاميمهينو', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'مقاميمهينونالو', 'LOCALMONTHNAME' ),
'localday' => array( '1', 'مقاميڏينهن', 'LOCALDAY' ),
'localday2' => array( '1', 'مقاميڏينهن2', 'LOCALDAY2' ),
@@ -139,7 +139,6 @@ $magicWords = array(
'currentweek' => array( '1', 'هلندڙهفتو', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'اڄوڪوڏينهن', 'CURRENTDOW' ),
'localweek' => array( '1', 'مقاميهفتو', 'LOCALWEEK' ),
- 'localdow' => array( '1', 'مقاميڏينهن', 'LOCALDOW' ),
'plural' => array( '0', 'جمع', 'PLURAL:' ),
'fullurl' => array( '0', 'مڪمليوآريل', 'FULLURL:' ),
'currenttimestamp' => array( '1', 'هلندڙوقتمهر', 'CURRENTTIMESTAMP' ),
@@ -231,23 +230,27 @@ $messages = array(
'subcategories' => 'ذيلي زمرا',
'category-media-header' => ' "$1" زمري اندر ذريعات',
'category-empty' => "''في الوقت هن زمري ۾ ڪي به صفحا يا ذريعات شامل ناهن.''",
-'hidden-category-category' => 'لڪل زمرا', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'لڪل زمرا',
'listingcontinuesabbrev' => 'جاري..',
-'about' => 'بابت',
-'article' => 'مسوَدو',
-'newwindow' => '(نئين کڙڪيءَ ۾ کلندو)',
-'cancel' => 'رد',
+'about' => 'بابت',
+'article' => 'مسوَدو',
+'newwindow' => '(نئين کڙڪيءَ ۾ کلندو)',
+'cancel' => 'رد',
+'moredotdotdot' => 'اڃا...',
+'mypage' => 'منهنجو صفحو',
+'mytalk' => 'مون سان ڳالهه',
+'and' => '&#32;۽',
+
+# Cologne Blue skin
'qbfind' => 'ڳوليو',
'qbbrowse' => 'جھانگيو',
'qbedit' => 'سنواريو',
'qbpageoptions' => 'هيءُ صفحو',
'qbmyoptions' => 'منهنجا صفحا',
'qbspecialpages' => 'خاص صفحا',
-'moredotdotdot' => 'اڃا...',
-'mypage' => 'منهنجو صفحو',
-'mytalk' => 'مون سان ڳالهه',
-'and' => '&#32;۽',
+'faq' => 'ڪپوس',
+'faqpage' => 'Project:ڪپوس',
'errorpagetitle' => 'چُڪَ',
'returnto' => '$1 ڏانهن وَرو.',
@@ -295,7 +298,7 @@ $messages = array(
'otherlanguages' => 'ٻين ٻولين ۾',
'redirectedfrom' => '($1 کان چوريل)',
'redirectpagesub' => 'چوريل صفحو',
-'lastmodifiedat' => 'هيءُ صفحو آخري ڀيرو $2، $1ع تي ترميميو ويو هو.', # $1 date, $2 time
+'lastmodifiedat' => 'هيءُ صفحو آخري ڀيرو $2، $1ع تي ترميميو ويو هو.',
'viewcount' => 'هيءُ صفحو {{PLURAL:$1|دفعو|$1 دفعا}} ڏسجي چڪو آهي.',
'protectedpage' => 'تحفظيل صفحو',
'jumptosearch' => 'ڳولا',
@@ -304,7 +307,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} بابت',
'aboutpage' => 'Project:بابت',
'copyright' => 'سمورو مواد $1 تحت ميسر ڪجي ٿو',
-'copyrightpagename' => '{{SITENAME}} حق ۽ واسطا',
'copyrightpage' => '{{ns:project}}:حق ۽ واسطا',
'currentevents' => 'ھاڻوڪا واقعا',
'currentevents-url' => 'Project: اعداد',
@@ -312,8 +314,6 @@ $messages = array(
'disclaimerpage' => 'Project:عام غيرجوابدارينامو',
'edithelp' => 'مدد براءِ ترميم',
'edithelppage' => 'Help:سنوارڻ',
-'faq' => 'ڪپوس',
-'faqpage' => 'Project:ڪپوس',
'helppage' => 'Help:فهرست',
'mainpage' => 'مُک صفحو',
'mainpage-description' => 'مُک صفحو',
@@ -359,7 +359,6 @@ $messages = array(
# General errors
'error' => 'چُڪَ',
'databaseerror' => 'اعدادخاني ۾ چڪ',
-'nodb' => 'اعدادخانو $1 چونڊجي نه سگھيو',
'readonly' => 'اعدادخانو بنديل',
'missingarticle-diff' => '(تفاوت: $1، $2)',
'internalerror' => 'اندروني خرابي',
@@ -377,7 +376,6 @@ $messages = array(
'ns-specialprotected' => 'خاص صفحا سنواري نٿا سگھجن.',
# Login and logout pages
-'logouttitle' => 'يوزر لاگ آئوٽ',
'yourname' => 'يُوزرنانءُ:',
'yourpassword' => 'ڳجھو لفظ:',
'remembermypassword' => 'هن ڳڻپيوڪر تي مون کي ياد رکو',
@@ -393,11 +391,6 @@ $messages = array(
'gotaccount' => "ڇا اڳي ئي کاتو رکو ٿا؟ '''$1'''.",
'gotaccountlink' => 'لاگ اِن',
'createaccountmail' => 'بذريعه برق ٽپال',
-'yourrealname' => 'اصل نالو:',
-'badsiglength' => 'اها صحيح تمام وڏي آهي.
-$1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
-'prefs-help-realname' => 'اصل نالو اختياري آهي.
-جيڪڏهن توهان اصل نالو ڄاڻائڻ جو فيصلو ٿا ڪريو، ته اهو توهان کي مڃتا ڏيڻ لاءِ ڪم آندو ويندو.',
'loginsuccesstitle' => 'لاگ اِن ڪامياب',
'loginsuccess' => "'''هاڻي توهان {{SITENAME}} تي بطور \"\$1\" لاگ اِن ٿيل آهيو.'''",
'nosuchuser' => '"$1" نالي سان ڪو به يوزر نه آهي. هِجي چڪاسيو، يا نئون کاتو کوليو.',
@@ -443,20 +436,20 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'hr_tip' => 'افقي لڪير (غيرضروري استعمال کان پاسو ڪندا)',
# Edit pages
-'summary' => 'تَتُ:',
-'subject' => 'موضوع/سُرخي:',
-'minoredit' => 'هيءَ هڪ معمولي ترميم آهي',
-'watchthis' => 'هيءُ صفحو سانڍيو',
-'savearticle' => 'صفحو سانڍيو',
-'preview' => 'پيش نگاهه',
-'showpreview' => 'پيش نگاهه',
-'showdiff' => 'تبديليون ڏيکاريو',
-'anoneditwarning' => "'''خبردار:''' توهان لاگ اِن ٿيل ناهيو.
+'summary' => 'تَتُ:',
+'subject' => 'موضوع/سُرخي:',
+'minoredit' => 'هيءَ هڪ معمولي ترميم آهي',
+'watchthis' => 'هيءُ صفحو سانڍيو',
+'savearticle' => 'صفحو سانڍيو',
+'preview' => 'پيش نگاهه',
+'showpreview' => 'پيش نگاهه',
+'showdiff' => 'تبديليون ڏيکاريو',
+'anoneditwarning' => "'''خبردار:''' توهان لاگ اِن ٿيل ناهيو.
هن صفحي جي سوانح ۾ توهان جو آءِ پي پتو درج ڪيو ويندو.",
-'missingcommenttext' => 'براءِ مهرباني هيٺ پنهنجا تاثرات درج ڪندا.',
-'summary-preview' => 'تت تي پيش نگاهه:',
-'blockedtitle' => 'يُوزر بندشيل آهي.',
-'blockedtext' => "'''توهان جي يوزرنانءُ يا آءِ پي کي بندشيو ويو آهي.'''
+'missingcommenttext' => 'براءِ مهرباني هيٺ پنهنجا تاثرات درج ڪندا.',
+'summary-preview' => 'تت تي پيش نگاهه:',
+'blockedtitle' => 'يُوزر بندشيل آهي.',
+'blockedtext' => "'''توهان جي يوزرنانءُ يا آءِ پي کي بندشيو ويو آهي.'''
بندش $1 هنئي. جڏهن ته ڄاڻايل سبب ''$2'' آهي.
@@ -466,24 +459,24 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
* بندش جو هدف: $7
اهڙي روڪ تي بحث ڪرڻ لاءِ توهان $1 يا ڪنهن ٻي [[{{MediaWiki:Grouppage-sysop}}|منتظم]] سان رابطو ڪري سگھو ٿا. جيڪڏهن توهان جو درست [[Special:ترجيحات|کاتو ترجيحات]] ۾ درست برق ٽپال پتو درج ٿيل نه آهي ته توهان 'هن يوزر کي برق ٽپال ڪريو' وارو فيچر نه ٿا استعمال ڪري سگھو. توهان جو هاڻوڪو آءِ پي پتو $3 آهي، ۽ بندش سڃاڻپ $5 آهي. مهرباني ڪري ڪنهن به پڇا ڳاڇا يا لهوچڙ لاءِ انهن مان ڪنهن هڪ يا ٻنهي جو حوالو ڏيندا.",
-'blockednoreason' => 'سبب اڻڄاڻايل',
-'accmailtitle' => 'ڳجھو لفظ اماڻجي چڪو.',
-'newarticle' => '(نئون)',
-'newarticletext' => "توهان اهڙي صفحي جو ڳنڍڻو وٺي هتي پهتا آهيو، جيڪو اڃا وجود نه ٿو رکي. اهڙو صفحو جوڙڻ لاءِ هيٺين باڪس ۾ ٽائيپ ڪرڻ شروع ڪريو (وڌيڪ ڄاڻڻ لاءِ [[{{MediaWiki:Helppage}}|امدادي صفحو]] ڏسندا). جي توهان هتي غلطيءَ ۾ اچي ويا آهيو ته رڳو پنهنجي جهانگُوءَ جو '''back''' بٽڻ ڪلڪ ڪندا.",
-'previewnote' => "'''هيءَ محظ پيش نگاهه آهي، ترميمون اڃا سانڍجون ناهن!'''",
-'editing' => 'زير ترميم $1',
-'editingsection' => 'زير ترميم $1 (سيڪشن)',
-'copyrightwarning' => "ياد رکندا ته {{SITENAME}} لاءِ سموريون ڀاڱيداريون $2 تحت پڌريون ڪجن ٿيون (تفصيلن لاءِ $1 ڏسندا). اوهان جي تحرير کي {{SITENAME}} جي قائدن تحت ترميمي سگهجي ٿو. جيڪڏهن اوهان نه ٿا چاهيو ته اوهان جي لکڻين کي بي رحميءَ سان ترميميو وڃي يا ورهائي عام ڪيو وڃي ته پوءِ پنهنجي لکڻي هتي جمع نه ڪرايو. پنهنجو مواد هتي جمع ڪرڻ جو مطلب هوندو ته توهان کي جمع ڪرايل مواد جي مفت فراهمي ۽ کُليل تبديليءَ تي ڪو به اعتراز ناهي.<br />
+'blockednoreason' => 'سبب اڻڄاڻايل',
+'accmailtitle' => 'ڳجھو لفظ اماڻجي چڪو.',
+'newarticle' => '(نئون)',
+'newarticletext' => "توهان اهڙي صفحي جو ڳنڍڻو وٺي هتي پهتا آهيو، جيڪو اڃا وجود نه ٿو رکي. اهڙو صفحو جوڙڻ لاءِ هيٺين باڪس ۾ ٽائيپ ڪرڻ شروع ڪريو (وڌيڪ ڄاڻڻ لاءِ [[{{MediaWiki:Helppage}}|امدادي صفحو]] ڏسندا). جي توهان هتي غلطيءَ ۾ اچي ويا آهيو ته رڳو پنهنجي جهانگُوءَ جو '''back''' بٽڻ ڪلڪ ڪندا.",
+'previewnote' => "'''هيءَ محظ پيش نگاهه آهي، ترميمون اڃا سانڍجون ناهن!'''",
+'editing' => 'زير ترميم $1',
+'editingsection' => 'زير ترميم $1 (سيڪشن)',
+'copyrightwarning' => "ياد رکندا ته {{SITENAME}} لاءِ سموريون ڀاڱيداريون $2 تحت پڌريون ڪجن ٿيون (تفصيلن لاءِ $1 ڏسندا). اوهان جي تحرير کي {{SITENAME}} جي قائدن تحت ترميمي سگهجي ٿو. جيڪڏهن اوهان نه ٿا چاهيو ته اوهان جي لکڻين کي بي رحميءَ سان ترميميو وڃي يا ورهائي عام ڪيو وڃي ته پوءِ پنهنجي لکڻي هتي جمع نه ڪرايو. پنهنجو مواد هتي جمع ڪرڻ جو مطلب هوندو ته توهان کي جمع ڪرايل مواد جي مفت فراهمي ۽ کُليل تبديليءَ تي ڪو به اعتراز ناهي.<br />
توهان اهڙي پڪ ڏيڻ جا پابند پڻ آهيو ته توهان جو جمع ڪرايل مواد توهان جو پنهنجو لکيل آهي يا وري توهان ڪنهن مفت وسيلي تان ڪاپي ڪيو آهي.
'''تحفظيل حق ۽ واسطا رکندڙ مواد واسطيدار مالڪ کان اڳواٽ اجازت وٺڻ کان سواءِ هتي جمع نه ڪريو.'''",
-'longpagewarning' => "'''خبردار: هيءُ صفحو $1 ڪلوٻاٽڻيون وڏو آهي؛ 32 ڪلوٻاٽڻين کان وڏا صفحا سنواريندي ڪن جھانگوئن سان مسئلا ٿين ٿا. مهرباني ڪري هن صفحي کي ننڍن سيڪشنز ۾ ٽوڙڻ تي ويچاريندا.'''",
-'templatesused' => 'هن صفحي تي استعمال ٿيندڙ سانچا:',
-'templatesusedpreview' => 'هن پيش نگاهه ۾ استعمال ٿيل سانچا:',
-'template-protected' => '(تحفظيل)',
-'template-semiprotected' => '(نيم تحفظيل)',
-'nocreatetext' => '{{SITENAME}} نوان صفحا سرجڻ جي روڪَ ڪئي آهي.
+'longpagewarning' => "'''خبردار: هيءُ صفحو $1 ڪلوٻاٽڻيون وڏو آهي؛ 32 ڪلوٻاٽڻين کان وڏا صفحا سنواريندي ڪن جھانگوئن سان مسئلا ٿين ٿا. مهرباني ڪري هن صفحي کي ننڍن سيڪشنز ۾ ٽوڙڻ تي ويچاريندا.'''",
+'templatesused' => 'هن صفحي تي استعمال ٿيندڙ سانچا:',
+'templatesusedpreview' => 'هن پيش نگاهه ۾ استعمال ٿيل سانچا:',
+'template-protected' => '(تحفظيل)',
+'template-semiprotected' => '(نيم تحفظيل)',
+'nocreatetext' => '{{SITENAME}} نوان صفحا سرجڻ جي روڪَ ڪئي آهي.
توهان اڳي ئي موجود صفحن کي سنواري سگھو ٿا، يا [[Special:UserLogin|لاگ اِن ٿي يا نئون کاتو کولي سگھو ٿا]].',
-'recreate-deleted-warn' => "'''خبردار: توهان اهڙو صفحو نئين سر سرجي رهيا آهيو جيڪو اڳي ڊاٺو ويو آهي.'''
+'recreate-moveddeleted-warn' => "'''خبردار: توهان اهڙو صفحو نئين سر سرجي رهيا آهيو جيڪو اڳي ڊاٺو ويو آهي.'''
بهتر ٿيندو ته توهان سوچي وٺو ته ڇا ان صفحي کي سنوارڻ بهتر ٿيندو.
توهآن جي سهوليت خاطر هتي ان صفحي جو ڊاٺ لاگ ميسر ڪجي ٿو:",
@@ -492,7 +485,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'viewpagelogs' => 'هن صفحي جا لاگ ڏسو',
'currentrev' => 'هاڻوڪو مسودو',
'revisionasof' => '$1 وارو پرت',
-'revision-info' => '$1 تي $2 جي ترميم بعد مسودو', # Additionally available: $3: revision id
+'revision-info' => '$1 تي $2 جي ترميم بعد مسودو',
'previousrevision' => '←اڃا پراڻو پرت',
'nextrevision' => 'اڃا نئون پرت→',
'currentrevisionlink' => 'هاڻوڪو پرت',
@@ -505,7 +498,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'historyempty' => '(خالي)',
# Revision feed
-'history-feed-item-nocomment' => '$2 تي $1', # user at time
+'history-feed-item-nocomment' => '$2 تي $1',
# Revision deletion
'pagehist' => 'صفحي جي سوانح',
@@ -519,23 +512,26 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'diff-multi' => '({{PLURAL:$1|هڪ وسطي مسودو|$1 وسطي مسودا}} لڪايل.)',
# Search results
-'noexactmatch' => "'''\"\$1\" جي عنوان سان ڪو به صفحو ناهي.'''
-توهان [[:\$1|اهو صفحو سرجيو]].",
-'prevn' => 'پويان $1',
-'nextn' => 'اڳيان $1',
-'viewprevnext' => 'ڏسو ($1) ($2) ($3',
+'prevn' => 'پويان {{PLURAL:$1|$1}}',
+'nextn' => 'اڳيان {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ڏسو ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:فهرست',
'powersearch' => 'نفيس ڳولا',
'powersearch-redir' => 'چورڻن جي فهرست ڏيکاريو',
# Preferences page
-'preferences' => 'ترجيحات',
-'mypreferences' => 'منهنجون ترجيحات',
-'changepassword' => 'ڳجھو لفظ تبديل ڪريو',
-'skin-preview' => 'پيش نگاهه',
-'datedefault' => 'بلا ترجيحا',
-'datetime' => 'تاريخ ۽ وقت',
-'allowemail' => 'ٻين يُوزرس کان ايندڙ برق ٽپال بحال ڪريو',
+'preferences' => 'ترجيحات',
+'mypreferences' => 'منهنجون ترجيحات',
+'changepassword' => 'ڳجھو لفظ تبديل ڪريو',
+'skin-preview' => 'پيش نگاهه',
+'datedefault' => 'بلا ترجيحا',
+'prefs-datetime' => 'تاريخ ۽ وقت',
+'allowemail' => 'ٻين يُوزرس کان ايندڙ برق ٽپال بحال ڪريو',
+'yourrealname' => 'اصل نالو:',
+'badsiglength' => 'اها صحيح تمام وڏي آهي.
+$1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
+'prefs-help-realname' => 'اصل نالو اختياري آهي.
+جيڪڏهن توهان اصل نالو ڄاڻائڻ جو فيصلو ٿا ڪريو، ته اهو توهان کي مڃتا ڏيڻ لاءِ ڪم آندو ويندو.',
# User rights
'userrights-reason' => 'سبب:',
@@ -576,6 +572,8 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
# Recent changes linked
'recentchangeslinked' => 'لاڳاپيل تبديليون',
+'recentchangeslinked-feed' => 'لاڳاپيل تبديليون',
+'recentchangeslinked-toolbox' => 'لاڳاپيل تبديليون',
'recentchangeslinked-title' => '"$1" سان لاڳاپيل تبديليون',
'recentchangeslinked-noresult' => 'ڄاڻايل مدي دوران ڳنڍيل صفحن ۾ ڪا به تبديلي ناهي ٿي.',
@@ -589,6 +587,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'listfiles' => 'فائيل فهرست',
# File description page
+'file-anchor-link' => 'فائيل',
'filehist' => 'فائيل جي سوانح',
'filehist-help' => 'ڪنهن به تاريخ/وقت تي ڪلڪ ڪري ڏسندا ته تڏڻي اهو فائيل ڪيئن هو.',
'filehist-current' => 'هاڻوڪو',
@@ -600,9 +599,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'imagelinks' => 'ڳنڍڻا',
'linkstoimage' => 'هن فائيل سان {{PLURAL:$1|هيٺيون صفحو ڳنڍيل آهي |$1 هيٺيان صفحا ڳنڍيل آهن}}:',
'nolinkstoimage' => 'هن فائيل سان ڪو به صفحو ڳنڍيل ناهي.',
-'sharedupload' => 'هيءَ هڪ شراڪتي چاڙهه آهي، تنهنڪري ان کي ٻيون رٿائون به استعمال ڪري سگھن ٿيون.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'ان نالي سان ڪو به فائيل وجود نٿو رکي، جي چاهيو ته $1.',
-'noimage-linktext' => 'اهو چاڙهيو',
+'sharedupload' => 'هيءَ هڪ شراڪتي چاڙهه آهي، تنهنڪري ان کي ٻيون رٿائون به استعمال ڪري سگھن ٿيون.',
'uploadnewversion-linktext' => 'هن فائيل جو نئون پرت چاڙهيو',
# MIME search
@@ -628,8 +625,8 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'doubleredirects' => 'ٻٽا چورڻا',
'brokenredirects' => 'ٽٽل چورڻا',
-'brokenredirects-edit' => '(سنواريو)',
-'brokenredirects-delete' => '(ڊاهيو)',
+'brokenredirects-edit' => 'سنواريو',
+'brokenredirects-delete' => 'ڊاهيو',
'withoutinterwiki' => 'ڪنهن به ٻي ٻوليءَ سان نه ڳنڍيل صفحا',
@@ -739,7 +736,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'protectexpiry' => 'اختتام:',
'protect_expiry_invalid' => 'انجامي مدو ناقابلڪار آهي.',
'protect_expiry_old' => 'انجامي مدو ماضيءَ ۾ آهي.',
-'protect-unchain' => 'چورڻ جي روڪ ختم ڪريو',
'protect-text' => "توهان '''<nowiki>$1</nowiki>''' صفحي جي تحفظاتي سطح ڏسي ۽ بدلائي سگھو ٿا.",
'protect-locked-access' => "توهان جو کاتو صفحن جي تحفظاتي سطح تبديلي ڪرڻ جا اختيار نه ٿو رکي. هيٺ صفحي جون وقوعات (سيٽڱس) پيش ڪجن ٿيون '''$1''':",
'protect-cascadeon' => 'هيءُ صفحو في الوقت تحفظيل آهي، ڇاڪاڻ ته اهو هيٺين {{PLURAL:$1|صفحي|صفحن}} جو حصو آهي، جنهن تي تحفظ در تحفظ لاڳو ٿيل آهي.',
@@ -749,7 +745,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'protect-summary-cascade' => 'تحفظ در تحفظ',
'protect-cascade' => 'هن صفحي ۾ شامل صفحن کي تحفظيو (تحفظ در تحفظ)',
'protect-cantedit' => 'توهان هن صفحي جي تحفظاتي سطح نٿا بدلائي سگھو، ڇاڪاڻ ته توهان ان کي سنوارڻ جي اجازت نٿا رکو.',
-'protect-expiry-options' => '2 ڪلاڪ:2 hours،1 ڏينهن:1 day،3 ڏينهن:3 days،1 هفتو:1 week،2 هفتا:2 weeks،1 مهينو:1 month،3 مهينا:3 months،6 مهينا:6 months،1 سال:1 year،لامحدود:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ڪلاڪ:2 hours،1 ڏينهن:1 day،3 ڏينهن:3 days،1 هفتو:1 week،2 هفتا:2 weeks،1 مهينو:1 month،3 مهينا:3 months،6 مهينا:6 months،1 سال:1 year،لامحدود:infinite',
'restriction-type' => 'اجازتنامو:',
'restriction-level' => 'روڪ سطح:',
'pagesize' => '(ٻاٽڻيون)',
@@ -773,6 +769,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'sp-contributions-newbies-sub' => 'نون کاتن لاءِ',
'sp-contributions-blocklog' => 'بنسش لاگ',
+'sp-contributions-talk' => 'بحث',
# What links here
'whatlinkshere' => 'هتان ڇا ڳنڍيل آهي',
@@ -787,7 +784,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
# Block/unblock
'blockip' => 'يُوزر کي روڪيو',
-'ipboptions' => '2 ڪلاڪ:2 hours،1 ڏينهن:1 day،3 ڏينهن:3 days،1 هفتو:1 week،2 هفتا:2 weeks،1 مهينو:1 month،3 مهينا:3 months،6 مهينا:6 months،1 سال:1 year،لامحدود:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ڪلاڪ:2 hours،1 ڏينهن:1 day،3 ڏينهن:3 days،1 هفتو:1 week،2 هفتا:2 weeks،1 مهينو:1 month،3 مهينا:3 months،6 مهينا:6 months،1 سال:1 year،لامحدود:infinite',
'badipaddress' => 'ناقابلڪار آءِ پي پتو',
'ipblocklist' => 'بندشيل يوزرنانءُ ۽ آءِ پي پتا',
'infiniteblock' => 'لامحدود',
@@ -819,7 +816,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'move-watch' => 'هيءُ صفحو ٽيٽيو',
'movepagebtn' => 'صفحو چوريو',
'pagemovedsub' => 'چورڻ جو عمل ڪامياب ٿيو',
-'movepage-moved' => '\'\'\'"$1" کي چوري "$2" تي رکيو ويو آهي\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" کي چوري "$2" تي رکيو ويو آهي\'\'\'',
'articleexists' => 'ان نالي سان صفحو اڳي ئي وجود رکي ٿو، يا ته توهان جو ڏنل نالو ناقابلڪار آهي.',
'talkexists' => "
'''موادي صفحو پاڻ ته ڪاميابيءَ سان چُري ويو، پر لاڳاپيل مباحثي صفحو چُري نه سگھيو ڇاڪاڻ ته نئين عنوان تي اڳي ئي هڪ مباحثي صفحو موجود آهي. براءِ مهرباني انهن ٻنهي هٿ سان ضمائيندا.",
@@ -836,11 +833,9 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'export' => 'صفحا برآمديو',
# Namespace 8 related
-'allmessages' => 'سرشتائي نياپا',
-'allmessagesname' => 'نالو',
-'allmessagescurrent' => 'موجوده تحرير',
-'allmessagesfilter' => 'نياپي نانءُ ڇاڻي:',
-'allmessagesmodified' => 'صرف ترميم شدھ ڏيکاريو',
+'allmessages' => 'سرشتائي نياپا',
+'allmessagesname' => 'نالو',
+'allmessagescurrent' => 'موجوده تحرير',
# Thumbnails
'thumbnail-more' => 'وڏو ڪريو',
@@ -932,7 +927,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'exif-unknowndate' => 'نامعلوم تاريخ',
-'exif-orientation-3' => '180° موڙيل', # 0th row: bottom; 0th column: right
+'exif-orientation-3' => '180° موڙيل',
'exif-componentsconfiguration-0' => 'وجود نه ٿو رکي',
@@ -955,7 +950,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'exif-gpsmeasuremode-2' => '2-رخي ماپ',
'exif-gpsmeasuremode-3' => '3-رخي ماپ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ڪلوميٽر في ڪلاڪ',
'exif-gpsspeed-m' => 'ميل في ڪلاڪ',
'exif-gpsspeed-n' => 'ڳنڍيون',
@@ -983,7 +978,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
'watchlisttools-raw' => 'ڪچي ٽيٽ فهرست سنواريو',
# Special:Version
-'version' => 'ورزن', # Not used as normal message but as header for the special page itself
+'version' => 'ورزن',
# Special:SpecialPages
'specialpages' => 'خاص صفحا',
diff --git a/languages/messages/MessagesSdc.php b/languages/messages/MessagesSdc.php
index f0d92c32..9b1fe3ee 100644
--- a/languages/messages/MessagesSdc.php
+++ b/languages/messages/MessagesSdc.php
@@ -211,7 +211,7 @@ $messages = array(
'category-media-header' => 'File i\' la categuria "$1"',
'category-empty' => "''Attuarmenti la categuria no cunteni nisciuna pàgina o file.''",
'hidden-categories' => '{{PLURAL:$1|Categuria cuadda|Categuri cuaddi}}',
-'hidden-category-category' => 'Categuri cuaddi', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categuri cuaddi',
'category-subcat-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica sottocateguria, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la sottocateguria indicadda|li $1 sottocategurì indicaddi}} inogghi, i' un tutari di $2.}}",
'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica pagina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pagina indicadda|li $1 pagini indicaddi}} inogghi, i' un tutari di $2.}}",
'listingcontinuesabbrev' => '(séguiddu)',
@@ -226,10 +226,18 @@ Li sighenti cullegamenti so in linga ingrese:
* [http://www.mediawiki.org/wiki/Manual:FAQ Prigonti friquenti i MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annùnzii MediaWiki]",
-'about' => 'Infuimmazioni',
-'article' => 'Pagina',
-'newwindow' => "(s'abbri in d'unu nobu balchoni)",
-'cancel' => 'Annulla',
+'about' => 'Infuimmazioni',
+'article' => 'Pagina',
+'newwindow' => "(s'abbri in d'unu nobu balchoni)",
+'cancel' => 'Annulla',
+'moredotdotdot' => 'Althru...',
+'mypage' => 'La mea pàgina',
+'mytalk' => "Li me' dischussioni",
+'anontalk' => 'Dischussioni pa chisthu IP',
+'navigation' => 'Nabiggazioni',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Acciappa',
'qbbrowse' => 'Iffuglia',
'qbedit' => 'Mudifigga',
@@ -237,15 +245,19 @@ Li sighenti cullegamenti so in linga ingrese:
'qbpageinfo' => "Infuimmazioni i' la pàgina",
'qbmyoptions' => "Li me' pàgini",
'qbspecialpages' => 'Pàgini ippiziari',
-'moredotdotdot' => 'Althru...',
-'mypage' => 'La mea pàgina',
-'mytalk' => "Li me' dischussioni",
-'anontalk' => 'Dischussioni pa chisthu IP',
-'navigation' => 'Nabiggazioni',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadati:',
+'faq' => 'FAQ (infuimmazioni e aggiuddu)',
+'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
+
+# Vector skin
+'vector-action-delete' => 'Canzella',
+'vector-action-move' => 'Ippustha',
+'vector-namespace-category' => 'Categuria',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pàgina',
+'vector-namespace-talk' => 'Dischussioni',
+'vector-view-create' => 'Cria',
+'vector-view-edit' => 'Mudifigga',
+'vector-view-view' => 'Leggi',
'errorpagetitle' => 'Errori',
'returnto' => 'Turra a $1.',
@@ -295,7 +307,7 @@ Li sighenti cullegamenti so in linga ingrese:
'otherlanguages' => 'Althri linghi',
'redirectedfrom' => '(Rinviu da $1)',
'redirectpagesub' => 'Pàgina di rinviu',
-'lastmodifiedat' => 'Ulthima mudìfigga pa la pàgina: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ulthima mudìfigga pa la pàgina: $2, $1.',
'viewcount' => 'Chistha pàgina è isthadda liggidda {{PLURAL:$1|una voltha|$1 volthi}}.',
'protectedpage' => 'Pàgina broccadda',
'jumpto' => 'Vai a:',
@@ -306,7 +318,6 @@ Li sighenti cullegamenti so in linga ingrese:
'aboutsite' => 'Infuimmazioni in {{SITENAME}}',
'aboutpage' => 'Project:Infuimmazioni',
'copyright' => "Cuntinuddi suggetti a licèntzia d'usu $1.",
-'copyrightpagename' => 'Lu copyright i {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Attuarità',
'currentevents-url' => 'Project:Attuarità',
@@ -314,8 +325,6 @@ Li sighenti cullegamenti so in linga ingrese:
'disclaimerpage' => 'Project:Avvirthènzi ginarari',
'edithelp' => 'Ghia',
'edithelppage' => 'Help:Mudìfigga',
-'faq' => 'FAQ (infuimmazioni e aggiuddu)',
-'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
'helppage' => 'Help:Indizi',
'mainpage' => 'Pàgina prinzipari',
'mainpage-description' => 'Pàgina prinzipari',
@@ -390,9 +399,6 @@ L\'ulthima interrogazioni inviadda a la bancadati è isthadda:
"$1"
riciamadda da la funzioni "$2".
MySQL à turraddu lu sighenti errori "$3: $4".',
-'noconnect' => "Cullegamentu a la bancadati no ridisciddu a càusa d'un probrema tènniggu di lu situ.<br />$1",
-'nodb' => 'Isciubaradda di la bancadati $1 no ridiscidda',
-'cachederror' => "Chidda sighenti è una còpia i' la mimória cache di la pàgina dumandadda; pudia dunca no assé aggiornadda.",
'laggedslavemode' => "Attinzioni: la pàgina pudia no cuntinì l'aggiornamenti più rizzenti.",
'readonly' => 'Bancadati broccadda',
'enterlockreason' => 'Indica lu mutibu di lu broccu, ippizzifichendi candu po’ assé chi venghia buggaddu.',
@@ -446,7 +452,6 @@ $2',
La rasgioni frunidda è ''$2''.",
# Login and logout pages
-'logouttitle' => 'Iscidda utenti',
'logouttext' => "'''Iscidda effettuadda.'''
Si pò sighì a usà {{SITENAME}} cumenti utenti anònimu oppuru eseguì una noba intradda, cu' lu matessi innòmu utenti o un'innòmu dibessu.
@@ -454,7 +459,6 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
'welcomecreation' => '== Binvinuddu, $1! ==
La registhrazioni è isthadda criadda currettamenti. No dimintiggà di passunarizzà li prifirenzi di {{SITENAME}}.',
-'loginpagetitle' => 'Intradda utenti',
'yourname' => 'Innòmu utenti',
'yourpassword' => "Paràura d'órdhini",
'yourpasswordagain' => "Ripeti la paràura d'órdhini",
@@ -476,25 +480,7 @@ La registhrazioni è isthadda criadda currettamenti. No dimintiggà di passunari
'createaccountmail' => 'via postha erettrònica',
'badretype' => "Li paràuri d'órdhini insiriddi nò cuinzidhini tra èddi.",
'userexists' => "L'innòmu utenti insiriddu è già utirizaddu. Pa pazieri chirria un'innòmu utenti dibessu.",
-'youremail' => 'Indirizzu di postha erettrònica: *',
-'username' => 'Innòmu utenti',
-'uid' => 'ID utenti:',
-'prefs-memberingroups' => 'Membru di {{PLURAL:$1|lu gruppu|li gruppi}}:',
-'yourrealname' => 'Innòmu veru: *',
-'yourlanguage' => 'Linga:',
-'yourvariant' => 'Varianti:',
-'yournick' => 'Ingiùgliu:',
-'badsig' => "Errori i' la fimma nò standard, verifiggà i tag HTML.",
-'badsiglength' => "L'ingiugliu sciubaraddu è troppu longu, nò débi prubassà $1 {{PLURAL:$1|caratteri|caratteri}}.",
-'yourgender' => 'Generi:',
-'gender-unknown' => 'Nò ippizzificaddu',
-'gender-male' => 'Maschurinu',
-'gender-female' => 'Femmininu',
-'email' => 'Indirizzu di postha erettrònica',
-'prefs-help-realname' => "* Innòmu veru (opzionale): si s'isciubara di l'insirì, sarà utirizaddu pa attribuì la paterniddai di li cuntinuddi inviaddi.",
'loginerror' => "Errori i' l'intradda",
-'prefs-help-email' => "Indirizzu di postha erettrònica (opzionale): cunsenti a l'utenti d'assé cuntattaddi attrabessu la propria pagina utenti o la reratiba pagina di dischussioni, chena dubé riverà la propria identiddai.",
-'prefs-help-email-required' => "È nezzessàriu un'indirizzu du postha erettrònica.",
'nocookiesnew' => "La registhrazioni di l'utenti pa l'intradda è isthadda criadda, ma nò è isthaddu pussìbiri intrà a {{SITENAME}} parchí li cookie so disattibaddi. Riprubà l'intradda cu l'innòmu utenti e la paràura d'órdhini appèna criaddi daboi abé attibaddu li cookie i lu propriu nabiggadori.",
'nocookieslogin' => "L'intradda a {{SITENAME}} dumanda l'usu di li cookie, chi risulthani disattibaddi. Riprubà l'intradda daboi abé attibaddu li cookie i' lu propriu nabiggadori.",
'noname' => "L'innòmu utenti indicaddu nò è vàriddu.",
@@ -539,19 +525,18 @@ Si la registhrazioni è isthadda criadda pa un\'errori, pói ignorà chisth\'imb
'loginlanguagelabel' => 'Linga: $1',
# Password reset dialog
-'resetpass' => "Ciamba paràura d'órdhini",
-'resetpass_announce' => "L'intradda è isthadda effettuadda cun un còdizi timpuràniu, inviaddu via postha erettrònica.
+'resetpass' => "Ciamba paràura d'órdhini",
+'resetpass_announce' => "L'intradda è isthadda effettuadda cun un còdizi timpuràniu, inviaddu via postha erettrònica.
Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'órdhini inogghi:",
-'resetpass_text' => '<!-- Aggiungi lu testhu inogghi -->',
-'resetpass_header' => "Ciamba paràura d'órdhini di la registhrazioni",
-'oldpassword' => "Véccia paràura d'órdhini:",
-'newpassword' => "Noba paràura d'órdhini:",
-'retypenew' => "Turra a ischribì la noba paràura d'órdhini:",
-'resetpass_submit' => "Impustha la paràura d'órdhini e intra",
-'resetpass_success' => "La paràura d'órdhini tóia è isthadda mudìfiggadda. Abà sei intrendi...",
-'resetpass_bad_temporary' => "Paràura d'órdhini timpuràniua invàridda. La paràura d'órdhini pudaria assé isthadda già ciambadda, oppuru pudaria assé isthadda dumandadda una noba paràura d'órdhini timpurània.",
-'resetpass_forbidden' => "No è pussìbiri mudifiggà li paràuri d'órdhini in {{SITENAME}}.",
+'resetpass_text' => '<!-- Aggiungi lu testhu inogghi -->',
+'resetpass_header' => "Ciamba paràura d'órdhini di la registhrazioni",
+'oldpassword' => "Véccia paràura d'órdhini:",
+'newpassword' => "Noba paràura d'órdhini:",
+'retypenew' => "Turra a ischribì la noba paràura d'órdhini:",
+'resetpass_submit' => "Impustha la paràura d'órdhini e intra",
+'resetpass_success' => "La paràura d'órdhini tóia è isthadda mudìfiggadda. Abà sei intrendi...",
+'resetpass_forbidden' => "No è pussìbiri mudifiggà li paràuri d'órdhini in {{SITENAME}}.",
# Edit page toolbar
'bold_sample' => 'Grassetu',
@@ -624,7 +609,6 @@ Si vói ciaramiddanne, pa piazeri prizzisa sempri lu nùmaru di lu broccu (ID #$
'blockededitsource' => "Inogghi so musthraddi li '''mudìfigghi arriggaddi''' a la pagina '''$1''':",
'whitelistedittitle' => 'È nezzessariu intrà pa mudifiggà li pagini',
'whitelistedittext' => 'Pa mudìfiggà li pàgini è nezzessàriu $1.',
-'confirmedittitle' => "È nezzessàriu cunfèimmà l'indirizzu di postha erettrònica pà mudìfiggà li pàgini",
'confirmedittext' => "Pa assé abiritaddi a la mudìfigga di li pàgini è nezzessàriu cunfèimma lu proprio indirizzu di postha erettrònica. Pa impusthà e cunfèimmà l'indirizzu usà li [[Special:Preferences|prifirenzi]].",
'nosuchsectiontitle' => 'La sezzioni nò esisthi',
'nosuchsectiontext' => "S'è prubendi a mudìfiggà una sezzioni inesisthenti.",
@@ -645,7 +629,8 @@ S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni
'noarticletext' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tituru]] i' l'althri pàgini di lu situ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri curriraddi] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifiggà la pagina abà]</span>.",
'userpage-userdoesnotexist' => 'La registhrazioni "$1" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
'clearyourcache' => "'''Nota:''' daboi abé saivaddu è nezzessàriu pulì la mimória cache di lu propriu nabiggadori pà vidé li ciambamenti. Pa '''Mozilla / Firefox / Safari''': fà clic i Ricàrrigga incalchendi lu buttoni di li maiuschuri, oppuru incalchà ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' i Mac); pa '''Internet Explorer:''' mantinì incalchaddu lu tasthu ''Ctrl'' mentri s'incalcha lu buttoni ''Aggiorna'' o incalchà ''Ctrl-F5''; pa '''Konqueror''': incalchà lu buttoni ''Ricarica'' o lu tasthu ''F5''; pa '''Opera''' pò assé nezzessàriu ibbuiddà cumpretamenti la mimória cache da lu menù ''Strumenti → Preferenze''.",
-'usercssjsyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS/JS primma di sàivvaddi.",
+'usercssyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS primma di sàivvaddi.",
+'userjsyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi JS primma di sàivvaddi.",
'usercsspreview' => "'''Ammitanti ch'è soru un'antiprimma di lu propriu CSS passunari; li mudìfigghi nò so ancora isthaddi sàivvaddi!'''",
'userjspreview' => "'''Ammitanti ch'è soru un'antiprimma pa prubà lu propriu JavaScript passunari; li mudìfigghi nò so ancora isthaddi sàivvaddi!'''",
'userinvalidcssjstitle' => "'''Attinzioni:''' Nò isisthi nisciun aipettu gràficu \"\$1\". Amminta chi li pàgini pa li .css e .js passunari àni lu primu caràtteri di lu tìturu minori, cumenti {{ns:user}}:Foo/monobook.css e nò {{ns:user}}:Foo/Monobook.css.",
@@ -702,7 +687,7 @@ Inviendi lu testhu ài la ripunsabiriddai chi lu testhu sia toiu oppuru sia i lu
'permissionserrors' => 'Errori i li pimmissi',
'permissionserrorstext' => "Nò si diponi di li pimmissi nezzessàri a eseguì l'azioni dumandadda, pa {{PLURAL:$1|lu sighenti mutibu|li sighenti mutibi}}:",
'permissionserrorstext-withaction' => 'Nò si diponi di li primmissi nezzessàri pa $2, pa {{PLURAL:$1|lu sighenti mutibu|li sighenti mutibi}}:',
-'recreate-deleted-warn' => "'''Attinzioni: s'è pa ricrià una pàgina già canzilladda in passadu.'''
+'recreate-moveddeleted-warn' => "'''Attinzioni: s'è pa ricrià una pàgina già canzilladda in passadu.'''
S'azzirthà chi sia avveru opporthunu continuà a mudìfiggà chistha pàgina. L'erencu di li reratibi canzilladduri vèni ripurthaddu inogghi pa cumudiddai:",
@@ -721,8 +706,9 @@ La rasgioni frunidda da $3 è ''$2''",
'viewpagelogs' => 'Visuarizza li rigisthri reratibi a chistha pàgina.',
'nohistory' => 'Cronologia di li versioni di chistha pàgina nò riperìbiri.',
'currentrev' => 'Versioni currenti',
+'currentrev-asof' => 'Versioni currenti di li $1',
'revisionasof' => 'Versioni di lu $1',
-'revision-info' => 'Versioni di lu $1, autori: $2', # Additionally available: $3: revision id
+'revision-info' => 'Versioni di lu $1, autori: $2',
'previousrevision' => '← Versioni mancu rizzenti',
'nextrevision' => 'Versioni più rizzenti →',
'currentrevisionlink' => 'Versioni currenti',
@@ -735,7 +721,6 @@ La rasgioni frunidda da $3 è ''$2''",
Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi cu la versioni prizzidenti, '''m''' = mudìfigga minori, '''b''' = mudìfigga d'un bot, '''N''' = pàgina noba",
'history-fieldset-title' => "Ischurri i' la cronologia",
-'deletedrev' => '[canzilladda]',
'histfirst' => 'Primma',
'histlast' => 'Ulthima',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -744,7 +729,7 @@ Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi
# Revision feed
'history-feed-title' => 'Cronologia',
'history-feed-description' => 'Cronologia di la pàgina i chisthu situ',
-'history-feed-item-nocomment' => '$1 lu $2', # user at time
+'history-feed-item-nocomment' => '$1 lu $2',
'history-feed-empty' => 'La pàgina dumandadda no isisthi; pudia assé isthadda canzilladda da lu situ o rinuminadda. Verifiggà cu la [[Special:Search|pàgina di zercha]] si vi so pàgini nobi.',
# Revision deletion
@@ -752,24 +737,25 @@ Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi
'rev-deleted-user' => '(innòmu utenti buggaddu)',
'rev-deleted-event' => '(azioni di lu rigisthru buggadda)',
'rev-deleted-text-permission' => "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.
-Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
+Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
'rev-deleted-text-view' => "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.
Lu testhu pò assé visuarizzaddu soru da l'amministhradori di lu situ.
-Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
+Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
'rev-delundel' => 'musthra/cua',
'revisiondelete' => 'Canzella o ricùpara versioni',
'revdelete-nooldid-title' => 'Versioni nò ippizzificadda',
'revdelete-nooldid-text' => "No ài ippizzificaddu la o li versioni di la pàgina i' li quari eseguì chistha funzioni; pò assé chi nò esisthini.",
+'revdelete-show-file-submit' => 'Si',
'revdelete-selected' => "'''{{PLURAL:$2|Versioni sciubaradda|Versioni sciubaraddi}} di [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Eventu di lu rigisthru sciubaraddu|Eventi di lu rigisthru sciubaraddi}}:'''",
'revdelete-legend' => "Impustha li sighenti limitazioni i'li versioni canzilladdi:",
'revdelete-hide-text' => 'Cua lu testhu di la versioni',
+'revdelete-hide-image' => 'Cua li cuntinuddi di lu file',
'revdelete-hide-name' => 'Cua azioni e oggettu di la matessi',
'revdelete-hide-comment' => "Cua l'oggettu di la mudìfigga",
'revdelete-hide-user' => "Cua l'innòmmu o l'indirizzu IP di l'autori",
'revdelete-hide-restricted' => "Apprica chisthi limitazioni puru a l'amministhradori e brocca chistha interfàccia",
'revdelete-suppress' => "Cua l'infuimmazioni puru a l'amministhradori",
-'revdelete-hide-image' => 'Cua li cuntinuddi di lu file',
'revdelete-unsuppress' => "Elimina li limitazioni i' li ribisioni turraddi che primma",
'revdelete-log' => 'Cummentu pa lu rigisthru:',
'revdelete-submit' => 'Apprica a la ribisioni isciubaradda',
@@ -813,9 +799,6 @@ Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru d
'compareselectedversions' => 'Cunfronta li versioni sciubaraddi',
'editundo' => 'annulla',
'diff-multi' => '({{PLURAL:$1|Una ribisioni di mezu nò musthradda|$1 ribisioni di mezu nò musthraddi}}.)',
-'diff-src' => 'origini',
-'diff-font' => "'''caratteri'''",
-'diff-big' => "'''mannu'''",
# Search results
'searchresults' => 'Risulthaddi di la zercha',
@@ -823,15 +806,13 @@ Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru d
'searchresulttext' => 'Pà maggiori infuimmazioni i cumenti zirchà i {{SITENAME}}, vèdi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Zercha di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutti li pagini ch\'ischumenzani pa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutti li pagini chi puntani a "$1"]])',
'searchsubtitleinvalid' => "Zirchendi '''$1'''",
-'noexactmatch' => "'''La pàgina \"\$1\" nò esisthi.''' È pussìbiri [[:\$1|crialla abà]].",
-'noexactmatch-nocreate' => "'''Nò v'è una pàgina ciamadda \"\$1\".'''",
'titlematches' => 'Curripundènzi i lu tìturu di li pagini',
'notitlematches' => 'Nisciuna curripundènzia i lu tìturi di li pàgini',
'textmatches' => 'Curripundènzi i lu teshu di li pàgini',
'notextmatches' => 'Nisciuna curripundènzia i lu teshu di li pàgini',
-'prevn' => 'prizzidenti $1',
-'nextn' => 'sighenti $1',
-'viewprevnext' => 'Vèdi ($1) ($2) ($3).',
+'prevn' => 'prizzidenti {{PLURAL:$1|$1}}',
+'nextn' => 'sighenti {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opzioni di zercha',
'searchhelp-url' => 'Help:Indizi',
'searchprofile-everything' => 'Tuttu',
@@ -849,80 +830,90 @@ Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru d
'searchall' => 'tutti',
'showingresults' => "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
'showingresultsnum' => "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
-'showingresultstotal' => "Inogghi {{PLURAL:$4|è musthraddu lu risulthaddu '''$1''' di '''$3'''|so musthraddi li risulthaddi '''$1 - $2''' di '''$3'''}}",
'nonefound' => "'''Nota''': Soru zerthi tipi di pàgina so zirchaddi i'otomàtiggu. Pruba ischribendi primma di la zercha toia ''all:'' pa zirchà tutti li cuntinuddi (dischussioni, mudelli, etc), o usa lu tipi di pàgina disizaddu cumenti prefissu.",
'powersearch' => 'Zercha abanzadda',
'powersearch-legend' => 'Zercha abanzadda',
'powersearch-ns' => "Zercha i' li tipi di pàgina:",
'powersearch-redir' => 'Listha rinvii',
'powersearch-field' => 'Zercha',
+'powersearch-toggleall' => 'Tutti',
+'powersearch-togglenone' => 'Nisciunu',
'searchdisabled' => 'Abà no pói zirchà in {{SITENAME}}; proba cun Google o sìmiri, ma ammèntaddi chi li cuntinuddi di {{SITENAME}} poni assé no aggiornaddi.',
-# Preferences page
-'preferences' => 'Prifirenzi',
-'mypreferences' => "Li me' prifirenzi",
-'prefs-edits' => 'Mudìfigghi effettuaddi:',
-'prefsnologin' => 'Intradda nò effettuadda',
-'prefsnologintext' => 'Pa mudìfiggà li prifirenzi è nezzessàriu [[Special:UserLogin|intrà]].',
-'prefsreset' => 'Li prifirenzi so turraddi cumenti a lu prinzìpiu.',
+# Quickbar
'qbsettings' => 'Prifirenzi di lu menù',
'qbsettings-none' => 'Nisciunu',
'qbsettings-fixedleft' => 'Fissu a manca',
'qbsettings-fixedright' => 'Fissu a drestha',
'qbsettings-floatingleft' => 'Galliggianti a manca',
'qbsettings-floatingright' => 'Galliggianti a drestha',
-'changepassword' => "Ciamba paràura d'órdhini",
-'skin' => 'Aipettu gràficu',
-'skin-preview' => 'antiprimma',
-'math' => 'Fòimmuri matemàtigghi',
-'dateformat' => 'Fuimmaddu di la data',
-'datedefault' => 'Nisciuna prifirènzia',
-'datetime' => 'Data e ora',
-'math_failure' => "Errori i'l'anàrisi sintàttigga",
-'math_unknown_error' => 'errori ischunisciddu',
-'math_unknown_function' => 'funzioni ischuniscidda',
-'math_lexing_error' => 'errori di lingàggiu',
-'math_syntax_error' => 'errori di sintassi',
-'math_image_error' => 'Cunvirthimentu in PNG nò ridisciddu; verifiggà chi siani isthalladdi currentementi i sighenti prugrammi: latex, dvips, gs, e convert.',
-'math_bad_tmpdir' => "Impussìbiri ischribì o crià la carthella timpurània pa ''math''",
-'math_bad_output' => "Impussìbiri ischribì o crià la carthella d'iscidda pa ''math''",
-'math_notexvc' => "Fattìbiri ''texvc'' mancanti; pa piazeri cunsulthà ''math/README'' pa la cunfigurazioni.",
-'prefs-personal' => 'Profiru utenti',
-'prefs-rc' => 'Ulthimi mudìfigghi',
-'prefs-watchlist' => 'Abbaidaddi ippiziari',
-'prefs-watchlist-days' => "Nùmaru di dì da musthrà i'l'abbaidaddi ippiziari:",
-'prefs-watchlist-edits' => 'Nùmaru di mudìfigghi da musthrà cu li funzioni abanzaddi:',
-'prefs-misc' => 'Vari',
-'saveprefs' => 'Saivva li prifirenzi',
-'resetprefs' => 'Rimpusthà li prifirènzi',
-'textboxsize' => 'Casella di mudìfigga',
-'rows' => 'Righi:',
-'columns' => 'Curonni:',
-'searchresultshead' => 'Zercha',
-'resultsperpage' => 'Nùmaru di risulthaddi pa pàgina:',
-'contextlines' => 'Righi di testhu pa dugnunu risulthaddu:',
-'contextchars' => 'Nùmaru di caràtteri di cuntesthu:',
-'stub-threshold' => 'Varori mìminu pa i <a href="#" class="stub">cullegamenti a li sàgumi</a>:',
-'recentchangesdays' => 'Nùmaru di dì da musthrà i li ulthimi mudìfigghi:',
-'recentchangescount' => "Nùmaru di righi i'l'ulthimi mudìfigghi:",
-'savedprefs' => 'Li tó prifirènzi so isthaddi saivvaddi.',
-'timezonelegend' => 'Fusu oràriu:',
-'timezonetext' => "¹Nùmaru d'ori di diffarènzia fra l'ora lucari e l'ora di l'elaburaddori sivvidori (UTC).",
-'localtime' => 'Ora lucari:',
-'timezoneoffset' => 'Diffarènzia¹:',
-'servertime' => 'Ora di lu server:',
-'guesstimezone' => "Usa l'ora di lu tóiu nabiggadori",
-'allowemail' => "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
-'prefs-searchoptions' => 'Opzioni di zercha',
-'prefs-namespaces' => 'Tipu di pagina',
-'defaultns' => 'Namespace pridifiniddi pa zirchà:',
-'default' => 'pridifiniddu',
-'files' => 'File',
-'prefs-custom-css' => 'CSS passunarizzaddu',
-'prefs-custom-js' => 'JS passunarizzaddu',
+
+# Preferences page
+'preferences' => 'Prifirenzi',
+'mypreferences' => "Li me' prifirenzi",
+'prefs-edits' => 'Mudìfigghi effettuaddi:',
+'prefsnologin' => 'Intradda nò effettuadda',
+'prefsnologintext' => 'Pa mudìfiggà li prifirenzi è nezzessàriu [[Special:UserLogin|intrà]].',
+'changepassword' => "Ciamba paràura d'órdhini",
+'prefs-skin' => 'Aipettu gràficu',
+'skin-preview' => 'antiprimma',
+'prefs-math' => 'Fòimmuri matemàtigghi',
+'datedefault' => 'Nisciuna prifirènzia',
+'prefs-datetime' => 'Data e ora',
+'prefs-personal' => 'Profiru utenti',
+'prefs-rc' => 'Ulthimi mudìfigghi',
+'prefs-watchlist' => 'Abbaidaddi ippiziari',
+'prefs-watchlist-days' => "Nùmaru di dì da musthrà i'l'abbaidaddi ippiziari:",
+'prefs-watchlist-edits' => 'Nùmaru di mudìfigghi da musthrà cu li funzioni abanzaddi:',
+'prefs-misc' => 'Vari',
+'saveprefs' => 'Saivva li prifirenzi',
+'resetprefs' => 'Rimpusthà li prifirènzi',
+'prefs-editing' => 'Casella di mudìfigga',
+'rows' => 'Righi:',
+'columns' => 'Curonni:',
+'searchresultshead' => 'Zercha',
+'resultsperpage' => 'Nùmaru di risulthaddi pa pàgina:',
+'contextlines' => 'Righi di testhu pa dugnunu risulthaddu:',
+'contextchars' => 'Nùmaru di caràtteri di cuntesthu:',
+'stub-threshold' => 'Varori mìminu pa i <a href="#" class="stub">cullegamenti a li sàgumi</a>:',
+'recentchangesdays' => 'Nùmaru di dì da musthrà i li ulthimi mudìfigghi:',
+'recentchangescount' => 'Numaru pridifiniddu di mudifigghi da musthrà:',
+'savedprefs' => 'Li tó prifirènzi so isthaddi saivvaddi.',
+'timezonelegend' => 'Fusu oràriu:',
+'localtime' => 'Ora lucari:',
+'timezoneoffset' => 'Diffarènzia¹:',
+'servertime' => 'Ora di lu server:',
+'guesstimezone' => "Usa l'ora di lu tóiu nabiggadori",
+'allowemail' => "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
+'prefs-searchoptions' => 'Opzioni di zercha',
+'prefs-namespaces' => 'Tipu di pagina',
+'defaultns' => 'Namespace pridifiniddi pa zirchà:',
+'default' => 'pridifiniddu',
+'prefs-files' => 'File',
+'prefs-custom-css' => 'CSS passunarizzaddu',
+'prefs-custom-js' => 'JS passunarizzaddu',
+'youremail' => 'Indirizzu di postha erettrònica: *',
+'username' => 'Innòmu utenti',
+'uid' => 'ID utenti:',
+'prefs-memberingroups' => 'Membru di {{PLURAL:$1|lu gruppu|li gruppi}}:',
+'prefs-registration' => 'Data di registhrazioni:',
+'yourrealname' => 'Innòmu veru: *',
+'yourlanguage' => 'Linga:',
+'yourvariant' => 'Varianti:',
+'yournick' => 'Ingiùgliu:',
+'badsig' => "Errori i' la fimma nò standard, verifiggà i tag HTML.",
+'badsiglength' => "L'ingiugliu sciubaraddu è troppu longu, nò débi prubassà $1 {{PLURAL:$1|caratteri|caratteri}}.",
+'yourgender' => 'Generi:',
+'gender-unknown' => 'Nò ippizzificaddu',
+'gender-male' => 'Maschurinu',
+'gender-female' => 'Femmininu',
+'email' => 'Indirizzu di postha erettrònica',
+'prefs-help-realname' => "* Innòmu veru (opzionale): si s'isciubara di l'insirì, sarà utirizaddu pa attribuì la paterniddai di li cuntinuddi inviaddi.",
+'prefs-help-email' => "Indirizzu di postha erettrònica (opzionale): cunsenti a l'utenti d'assé cuntattaddi attrabessu la propria pagina utenti o la reratiba pagina di dischussioni, chena dubé riverà la propria identiddai.",
+'prefs-help-email-required' => "È nezzessàriu un'indirizzu du postha erettrònica.",
# User rights
-'userrights' => "Gisthioni di li primissi reratibi a l'utenti", # Not used as normal message but as header for the special page itself
+'userrights' => "Gisthioni di li primissi reratibi a l'utenti",
'userrights-lookup-user' => 'Gisthioni di li gruppi utenti',
'userrights-user-editname' => "Insirì l'innòmu utenti:",
'editusergroup' => 'Mudìfigga gruppi utenti',
@@ -999,6 +990,8 @@ Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru d
# Recent changes linked
'recentchangeslinked' => 'Mudìfigghi curriraddi',
+'recentchangeslinked-feed' => 'Mudìfigghi curriraddi',
+'recentchangeslinked-toolbox' => 'Mudìfigghi curriraddi',
'recentchangeslinked-title' => 'Mudìfigghi curriraddi a "$1"',
'recentchangeslinked-noresult' => "Nisciuna mudìfigga a li pàgini curriraddi i' lu perìodu sciubaraddu.",
'recentchangeslinked-summary' => "Chistha pàgina ippiziari musthra li mudìfigghi più rizzenti a li pàgini curriraddi a chidda sciubaradda (o a li membri di un'ippizzifica categuria). Li [[Special:Watchlist|pàgini abbaidaddi]] so evidenziaddi in '''grasseddu'''.",
@@ -1008,7 +1001,6 @@ Cunsulthà lu [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rigisthru d
# Upload
'upload' => 'Carrigga un file',
'uploadbtn' => 'Carrigga',
-'reupload' => 'Carrigga di nobu',
'reuploaddesc' => 'Canzella lu carriggamentu e turra a lu mòdulu',
'uploadnologin' => 'Intradda nò effettuadda',
'uploadnologintext' => 'È nezzessàriu [[Special:UserLogin|intrà]] pa carriggà file.',
@@ -1053,7 +1045,6 @@ Verifiggà primma '''<tt>[[:$1]]</tt>''' si nò s'è sigguri di vurellu sobbrasc
* Innòmmu di lu file cariggaddu: '''<tt>[[:$1]]</tt>'''
* Innòmmu di lu file esisthenti: '''<tt>[[:$2]]</tt>'''
Verifiggà ch'i dui file nò siani lu matessi o sciubarà un'innòmmu diffarènti pa lu file da carriggà.",
-'fileexists-thumb' => "<center>'''File prisisthenti'''</center>",
'fileexists-thumbnail-yes' => "Lu file carriggaddu pari assé lu risulthaddu d'un'antiprimma ''(thumbnail)''. [[$1|thumb]]
Verifiggà, pa cunfrontu, lu file '''<tt>[[:$1]]</tt>'''.
S'è la matessi immàgina, i' li misuri originari, nò è nezzessàriu carriggà althri antiprimmi.",
@@ -1069,7 +1060,6 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
'uploaddisabled' => 'Semmu dipiazuddi, ma lu carriggamentu di file è timpuraniamenti suippesu.',
'uploaddisabledtext' => "Lu carriggamentu di file nò è attibu i' {{SITENAME}}.",
'uploadscripted' => 'Chistu file cunteni còdizi HTML o script, chi pudia assé interpretaddu mari da lu nabiggadori.',
-'uploadcorrupt' => "Lu file è currumpiddu o à un'esthensioni nò curretta. Contrullà lu file e turrà a prubà lu carriggamentu.",
'uploadvirus' => 'Chisthu file cunteni un virus! Dettàgli: $1',
'sourcefilename' => "Nommu d'orìgini di lu file:",
'destfilename' => 'Nommu di lu file di disthinazioni:',
@@ -1110,6 +1100,7 @@ Pa piazeri verifigga si vói carriggà avveru chisthu file; inogghi v'è lu rigi
'listfiles_description' => 'Deschrizioni',
# File description page
+'file-anchor-link' => 'Immàgina',
'filehist' => 'Cronologia di lu file',
'filehist-help' => "Fà clic i' un gruppu data/ora pa vidé lu file cumenti era i' lu mamentu indicaddu.",
'filehist-deleteall' => 'canzella tuttu',
@@ -1118,6 +1109,7 @@ Pa piazeri verifigga si vói carriggà avveru chisthu file; inogghi v'è lu rigi
'filehist-current' => 'currenti',
'filehist-datetime' => 'Data/Ora',
'filehist-thumb' => 'Miniadduri',
+'filehist-thumbtext' => 'Miniadduri di la virsioni di li $1',
'filehist-user' => 'Utenti',
'filehist-dimensions' => 'Misuri',
'filehist-filesize' => 'Misuri di lu file',
@@ -1125,11 +1117,7 @@ Pa piazeri verifigga si vói carriggà avveru chisthu file; inogghi v'è lu rigi
'imagelinks' => 'Cullegamenti a lu file',
'linkstoimage' => "{{PLURAL:$1|La sighenti pàgina pùnta|Li sighenti $1 pàgini pùntani}} a l'immàgina:",
'nolinkstoimage' => "Nisciuna pàgina cunteni cullegamenti a l'immàgina.",
-'sharedupload' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Védi $1 pa althri infuimmazioni.',
-'shareduploadwiki-linktext' => 'la reratiba pàgina di deschrizioni',
-'noimage' => "Un file cun chisth'innòmmu nò isisthi, vói $1 tu?",
-'noimage-linktext' => 'carriggalu abà',
+'sharedupload' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti.',
'uploadnewversion-linktext' => 'Carrigga una nóba versioni di chistu file',
# File reversion
@@ -1194,8 +1182,8 @@ Pa piazeri verifigga si vói carriggà avveru chisthu file; inogghi v'è lu rigi
'brokenredirects' => 'Rinvii ibbagliaddi',
'brokenredirectstext' => 'Li rinvii sighenti puntani a pàgini inesisthenti:',
-'brokenredirects-edit' => '(mudifigga)',
-'brokenredirects-delete' => '(canzella)',
+'brokenredirects-edit' => 'mudifigga',
+'brokenredirects-delete' => 'canzella',
'withoutinterwiki' => "Pàgini chena cullegamenti p'althri linghi",
'withoutinterwiki-summary' => 'Li sighenti pàgini so chena cullegamenti a versioni in althri linghi (interwiki):',
@@ -1390,7 +1378,7 @@ Nò sarani inviaddi althri nutìfichi in casu d\'althri ciambamenti, arumancu ch
--
Pa mudìfiggà l\'impusthazioni di la listha di l\'abbaidaddi ippiziari, visita
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Pa dì cosa ni pensi e dumandà assisthènzia:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1430,7 +1418,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
'rollbacklink' => 'turra che primma',
'rollbackfailed' => 'Nò è ridisciddu a turrà che primma',
'cantrollback' => "Impussìbiri annullà li mudìfigghi; l'utenti chi n'è l'autori è l'unicu cuntribudori di la pàgina.",
-'editcomment' => "L'oggettu di la mudìfigga era: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "L'oggettu di la mudìfigga era: \"''\$1''\".",
'rollback-success' => 'Annulladdi li mudìfigghi di $1; turradda a la versioni prizzidenti di $2.',
'sessionfailure' => "S'è verifigaddu un probrema i' la sissioni ch'identifigga l'intradda; lu sistham nò à eseguiddu lu cumandu imparthiddu pa precauzioni. Turrà a la pàgina prizzidenti cu' lu buttoni \"Indareddu\" di lu proprio nabigaddori, turrà a carriggà la pàgina e riprubà.",
@@ -1447,7 +1435,6 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
'protectexpiry' => 'Ischadènzia:',
'protect_expiry_invalid' => 'Ischadènzia invàridda.',
'protect_expiry_old' => 'Ischadènzia già passadda.',
-'protect-unchain' => "Ischulliga i primmissi d'ippusthamentu",
'protect-text' => "Chisthu mòdulu cunsenti di vidé e mudìfiggà lu libellu di prutizioni pa la pàgina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nò è pussìbiri mudìfiggà i libelli di prutizioni cand'è attibu un broccu. L'impusthazioni currenti pa la pàgina so '''$1''':",
'protect-locked-access' => "Nò si diponi di li primmissi nezzessàri pa mudìfiggà lu libellu di prutizioni di la pàgina.
@@ -1461,7 +1448,7 @@ L'impusthazioni currenti pa la pàgina so '''$1''':",
'protect-expiring' => 'ischadènzia: $1 (UTC)',
'protect-cascade' => 'Prutizioni ricussiba (isthendi la prutizioni a tutti li pàgini incrusi in chistha)',
'protect-cantedit' => 'Nò è pussìbiri mudìfiggà li libelli di prutizioni pa la pàgina parchí nò si diponi di pimmissi nezzessàri pa mudìfiggà la pàgina.',
-'protect-expiry-options' => '2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite',
'restriction-type' => 'Primmissu:',
'restriction-level' => 'Libellu di isthrigniddura',
'minimum-size' => 'Misura mìnima',
@@ -1521,7 +1508,7 @@ $1",
'contributions-title' => 'Cuntributi di $1',
'mycontris' => "li me' cuntributi",
'contribsub2' => 'Pa $1 ($2)',
-'nocontribs' => 'Nò so isthaddi acciappaddi mudifigghi cunfoimmi a li criteri sciubaraddi.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nò so isthaddi acciappaddi mudifigghi cunfoimmi a li criteri sciubaraddi.',
'uctop' => '(ulthima pa la pàgina)',
'month' => 'A parthì da lu mesi (e prizzidenti):',
'year' => "A parthì da l'anni (e prizzidenti):",
@@ -1529,6 +1516,7 @@ $1",
'sp-contributions-newbies' => 'Musthra soru li cuntributi di li nobi utenti',
'sp-contributions-newbies-sub' => 'Pa li nobi utenti',
'sp-contributions-blocklog' => 'Brocchi',
+'sp-contributions-talk' => 'dischussioni',
'sp-contributions-search' => 'Zercha cuntributi',
'sp-contributions-username' => 'Indirizzu IP o nommu utenti:',
'sp-contributions-submit' => 'Zercha',
@@ -1564,7 +1552,7 @@ $1",
'ipbenableautoblock' => "Brocca automatiggamenti l'ulthimu indirizzu IP usaddu da l'utenti e l'althri chi zerchani di fà mudìfigghi",
'ipbsubmit' => "Brocca l'utenti",
'ipbother' => 'Duradda nò in erencu:',
-'ipboptions' => '2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite',
'ipbotheroption' => 'althru',
'ipbotherreason' => 'Althri dettàgli/rasgioni aggiuntiba:',
'ipbhidename' => "Cua l'innòmu utenti da lu rigisthru di li brocchi, da l'erencu di li brocci attibi e da l'erencu utenti.",
@@ -1588,7 +1576,7 @@ $1",
'ipblocklist-submit' => 'Zercha',
'blocklistline' => '$1, $2 à broccaddu $3 ($4)',
'infiniteblock' => 'chena ischadènzia',
-'expiringblock' => "finz'a lu $1",
+'expiringblock' => "finz'a lu $1 a li $2",
'anononlyblock' => 'soru anònimi',
'noautoblockblock' => 'chena broccu otomàtiggu',
'createaccountblock' => 'criazioni registhrazioni broccadda',
@@ -1662,7 +1650,7 @@ In chisthi casi, si lu vói avveru, débi ippusthà o aggiugnì a manu le infuim
'move-watch' => "Aggiungi a l'abbaidaddi ippiziari",
'movepagebtn' => 'Ippustha la pàgina',
'pagemovedsub' => 'Ippusthamentu effettuaddu',
-'movepage-moved' => '\'\'\'"$1" è isthadda ippusthadda a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" è isthadda ippusthadda a "$2"\'\'\'',
'articleexists' => "Una pàgina cun chisth'innòmmu isisthi già, oppuru l'innòmmu sciubaraddu no à vàriddu. Sciubarà un'althru tìturu.",
'cantmove-titleprotected' => "L'ippusthamentu di la pàgina nò è pussìbiri parchí lu nobu tìturu è isthaddu prutiggiddu pa impidinni la criazioni",
'talkexists' => "'''La pàgina è isthadda ippusthadda currettamenti, ma nò è isthaddu pussìbiri ippusthà la pàgina di dischussioni parchí ni isisthi già un'althra cu' lu nobu tìturu. Aggiugnì a manu li cuntiniddi di li dui pàgini.'''",
@@ -1698,15 +1686,18 @@ In chisth'ulthimu casu si pó utilizzà puru un cullegamentu, pa esempiu [[{{#Sp
'export-download' => 'Dumanda lu saivvamentu cumenti file',
# Namespace 8 related
-'allmessages' => 'Imbasciaddi di sisthema',
-'allmessagesname' => 'Nommu',
-'allmessagesdefault' => 'Testhu pridifiniddu',
-'allmessagescurrent' => 'Testhu attuari',
-'allmessagestext' => "Chistha è la listha di tutti l'imbasciaddi di sisthema dipunìbiri i' lu tipu di pàgina MediaWiki.
+'allmessages' => 'Imbasciaddi di sisthema',
+'allmessagesname' => 'Nommu',
+'allmessagesdefault' => 'Testhu pridifiniddu',
+'allmessagescurrent' => 'Testhu attuari',
+'allmessagestext' => "Chistha è la listha di tutti l'imbasciaddi di sisthema dipunìbiri i' lu tipu di pàgina MediaWiki.
Pa piazeri utirizà [http://www.mediawiki.org/wiki/Localisation MediaWiki Lucarizazioni] e [http://translatewiki.net translatewiki.net] pa l'althri traduzioni.",
-'allmessagesnotsupportedDB' => "Chistha pàgina nò è supporthadda parchí l'indicadori '''\$wgUseDatabaseMessages''' nò è attibuu.",
-'allmessagesfilter' => "Filthru i' l'imbasciaddi:",
-'allmessagesmodified' => 'Musthra soru chiddi mudìfiggaddi.',
+'allmessagesnotsupportedDB' => "Chistha pàgina nò è supporthadda parchí l'indicadori '''\$wgUseDatabaseMessages''' nò è attibuu.",
+'allmessages-filter-unmodified' => 'Nò mudifiggaddi',
+'allmessages-filter-all' => 'Tutti',
+'allmessages-filter-modified' => 'Mudifiggaddi',
+'allmessages-language' => 'Linga:',
+'allmessages-filter-submit' => 'Vai',
# Thumbnails
'thumbnail-more' => 'Immannitta',
@@ -1823,7 +1814,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
# Attribution
'anonymous' => '{{PLURAL:$1|Utenti anonimu|utenti anonimi}} di {{SITENAME}}',
'siteuser' => '$1, utenti di {{SITENAME}}',
-'lastmodifiedatby' => "Chistha pàgina è isthadda mudìfiggadda pa l'ulthima voltha lu $2, $1 da $3.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Chistha pàgina è isthadda mudìfiggadda pa l'ulthima voltha lu $2, $1 da $3.",
'othercontribs' => "Lu testhu attuari è basaddu i' li cuntributi di $1.",
'others' => 'althri',
'siteusers' => '$1, {{PLURAL:$2|utenti|utenti}} di {{SITENAME}}',
@@ -1854,6 +1845,17 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
'mw_math_modern' => 'Fuimmaddu cunsigliaddu pa li nabiggadori muderni',
'mw_math_mathml' => 'Usa MathML si pussìbiri (ippirimintari)',
+# Math errors
+'math_failure' => "Errori i'l'anàrisi sintàttigga",
+'math_unknown_error' => 'errori ischunisciddu',
+'math_unknown_function' => 'funzioni ischuniscidda',
+'math_lexing_error' => 'errori di lingàggiu',
+'math_syntax_error' => 'errori di sintassi',
+'math_image_error' => 'Cunvirthimentu in PNG nò ridisciddu; verifiggà chi siani isthalladdi currentementi i sighenti prugrammi: latex, dvips, gs, e convert.',
+'math_bad_tmpdir' => "Impussìbiri ischribì o crià la carthella timpurània pa ''math''",
+'math_bad_output' => "Impussìbiri ischribì o crià la carthella d'iscidda pa ''math''",
+'math_notexvc' => "Fattìbiri ''texvc'' mancanti; pa piazeri cunsulthà ''math/README'' pa la cunfigurazioni.",
+
# Patrolling
'markaspatrolleddiff' => 'Signa la mudìffiga cumenti verifiggadda',
'markaspatrolledtext' => 'Signa chistha pàgina cumenti verifiggadda',
@@ -1923,7 +1925,7 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Larghèzia',
@@ -1942,7 +1944,7 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
'exif-flashenergy' => 'Putènzia di lu lampu',
'exif-contrast' => 'Cuntrollu cuntrasthu',
-'exif-orientation-1' => 'Noimmari', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Noimmari',
'exif-componentsconfiguration-0' => 'assenti',
@@ -1984,7 +1986,7 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
'exif-subjectdistancerange-0' => 'Ischuniscidda',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => 'Nodi',
# External editor support
@@ -2106,7 +2108,7 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
'watchlisttools-raw' => 'Mudìfigga la listha in fuimmaddu testhu',
# Special:Version
-'version' => 'Versioni', # Not used as normal message but as header for the special page itself
+'version' => 'Versioni',
'version-other' => 'Althru',
'version-software-version' => 'Versioni',
@@ -2127,4 +2129,9 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
# Special:Tags
'tags-edit' => 'mudifigga',
+# HTML forms
+'htmlform-submit' => 'Invia',
+'htmlform-reset' => 'Annulla mudifigghi',
+'htmlform-selectorother-other' => 'Althru',
+
);
diff --git a/languages/messages/MessagesSe.php b/languages/messages/MessagesSe.php
index c8e4cab4..01a4f86a 100644
--- a/languages/messages/MessagesSe.php
+++ b/languages/messages/MessagesSe.php
@@ -113,10 +113,18 @@ $messages = array(
'category-empty' => "''Dán luohkás eai leat siiddut eaige fiillat.''",
'listingcontinuesabbrev' => 'joatk.',
-'about' => 'Dieđut',
-'article' => 'Siidu',
-'newwindow' => '(leahkasa ođđa vindui)',
-'cancel' => 'Šluhtte',
+'about' => 'Dieđut',
+'article' => 'Siidu',
+'newwindow' => '(leahkasa ođđa vindui)',
+'cancel' => 'Šluhtte',
+'moredotdotdot' => 'Lasi...',
+'mypage' => 'Mu siidu',
+'mytalk' => 'Mu ságastallan',
+'anontalk' => 'Ságastala dán IP-čujuhusain',
+'navigation' => 'Navigašuvdna',
+'and' => '&#32;ja',
+
+# Cologne Blue skin
'qbfind' => 'Oza',
'qbbrowse' => 'Bláđe',
'qbedit' => 'Rievdat',
@@ -124,15 +132,9 @@ $messages = array(
'qbpageinfo' => 'Siiddu dieđut',
'qbmyoptions' => 'Ásahusat',
'qbspecialpages' => 'Doaibmasiiddut',
-'moredotdotdot' => 'Lasi...',
-'mypage' => 'Mu siidu',
-'mytalk' => 'Mu ságastallan',
-'anontalk' => 'Ságastala dán IP-čujuhusain',
-'navigation' => 'Navigašuvdna',
-'and' => '&#32;ja',
-# Metadata in edit box
-'metadata_help' => 'Sisdoallogovvádusat:',
+# Vector skin
+'vector-namespace-image' => 'Fiila',
'errorpagetitle' => 'Feaila',
'returnto' => 'Máhcat siidui $1.',
@@ -180,7 +182,7 @@ $messages = array(
'otherlanguages' => 'Eará gielaide',
'redirectedfrom' => 'Ođđasitstivrejuvvon siiddus $1',
'redirectpagesub' => 'Ođđasitstivrensiidu',
-'lastmodifiedat' => 'Siidu lea maŋimustá rievdaduvvon $1 diimu $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Siidu lea maŋimustá rievdaduvvon $1 diimu $2.',
'viewcount' => 'Dát siidu lea čájehuvvon {{PLURAL:$1|oktii|$1 geardde}}.',
'protectedpage' => 'Suodjáluvvon siidu',
'jumpto' => 'Njuike:',
@@ -266,14 +268,12 @@ $messages = array(
'sqlhidden' => '(SQL-jierahallan lea čihkojuvvon)',
# Login and logout pages
-'logouttitle' => 'Olggosčállin',
'logouttext' => "'''Leat dál čálligoahtán olggos {{GRAMMAR:elative|{{SITENAME}}}}.'''
Sáhtat joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman, dahje čálligoahtit ođđasit sisa.",
'welcomecreation' => '== Bures boahtin, $1! ==
Du geavaheaddjidovddaldat lea dál anus.
Ále vajáldahte rievdadit {{GRAMMAR:genitive|{{SITENAME}}}} iežat ásahusaid.',
-'loginpagetitle' => 'Sisačállin',
'yourname' => 'Geavaheaddjidovddaldat',
'yourpassword' => 'Suollemassátni:',
'yourpasswordagain' => 'Čále suollemassáni ođđasit:',
@@ -294,19 +294,7 @@ Du geavaheaddjidovddaldat lea dál anus.
'createaccountmail' => 'e-poasttain',
'badretype' => 'Suollemassánit, maid čállet, eai leat seammalaganat.',
'userexists' => 'Geavaheaddjidovddaldat, man evttohit, lea jo anus. Leage buorre ja vállje nubbi geavaheaddjidovddaldaga.',
-'youremail' => 'E-poastačujuhus',
-'username' => 'Dovddaldat',
-'uid' => 'Nummir',
-'yourrealname' => 'Rivttes namma',
-'yourlanguage' => 'Geavahanvuođu giella',
-'yourvariant' => 'Giellavarianta:',
-'yournick' => 'Vuolláičálus',
-'badsig' => 'Vuolláičálus ii dohke.',
-'badsiglength' => 'Vuolláičálus lea menddo guhki - vuolláičálus sáhttá leat eanemusta $1 mearka.',
-'email' => 'E-poastadoaimmat',
-'prefs-help-realname' => 'Eaktodahtolaš. Du namma čájehuvvo geavaheaddjidovddaldaga sajis siiddu dahkkilogahallamis.',
'loginerror' => 'Feaila sisačálidettiin',
-'prefs-help-email' => 'Eaktodahtolaš. Eará geavaheaddjit sáhttet váldit dunnje oktavuođa e-poasttain nu ahte du e-poastačujuhus ii dihtto.',
'nocookieslogin' => '{{SITENAME}} geavaha diehtočoahkuid (cookies) sisačállima oktavuođas. Du neahttabláđejeaddji ii suova geavahit diehtočoahkuid. Váldde daid atnui ja iskka ođđasit.',
'noname' => 'It leat meroštallan buorre geavaheaddjidovddaldaga.',
'loginsuccesstitle' => 'Sisačállin lihkosmuvai',
@@ -344,7 +332,6 @@ Du geavaheaddjidovddaldat lea dál anus.
'retypenew' => 'Ođđa suollemassátni ođđasit',
'resetpass_submit' => 'Čále suollemassáni ja čálligoađe sisa',
'resetpass_success' => 'Suollemassáni rievdadeapmim lihkosmuvai.',
-'resetpass_bad_temporary' => 'Dohkemeahttun gaskabottosaš suollemassátni. Leat sáhttán čállit ođđa suollemassáni dahje bivdán ođđa gaskabottosaš suollemassáni.',
'resetpass_forbidden' => 'Suollemassániid rievdan ii lihkosmuva dán wikis.',
'resetpass-submit-loggedin' => 'Molsso suollemassáni',
@@ -390,7 +377,6 @@ Du geavaheaddjidovddaldat lea dál anus.
'blockededitsource' => 'Du rievdadusat siidui ”$1”:',
'whitelistedittitle' => 'Fertet čálligoahtit sisa ovdalgo sáhtat rievdadit siiddu',
'whitelistedittext' => 'Don fertet $1, ovdalgo sáhtat rievdadit siidduid.',
-'confirmedittitle' => 'E-poastačujuhusa sihkarastin',
'confirmedittext' => 'It sáhte rievdadit siiddu ovdalgo leat sihkarastan iežat e-poastačujuhusa. Sáhtat sihkarastit [[Special:Preferences|ásahussiidduin]].',
'nosuchsectiontitle' => 'Diekkár oassi ii dihtto',
'nosuchsectiontext' => 'Isket rievdadit oasi, mii ii dihtto.',
@@ -427,7 +413,7 @@ Du geavaheaddjidovddaldat lea dál anus.
'nohistory' => 'Dán siiddus ii leat rievdadanhistorjá.',
'currentrev' => 'Dálá veršuvdna',
'revisionasof' => 'Veršuvdna $1',
-'revision-info' => 'Dálá veršuvdna $1 – ráhkadan $2', # Additionally available: $3: revision id
+'revision-info' => 'Dálá veršuvdna $1 – ráhkadan $2',
'previousrevision' => '← Boarrásut veršuvdna',
'nextrevision' => 'Ođđasut veršuvdna →',
'currentrevisionlink' => 'Dálá veršuvdna',
@@ -436,7 +422,6 @@ Du geavaheaddjidovddaldat lea dál anus.
'last' => 'ovddit',
'page_first' => 'vuosttas siidu',
'page_last' => 'maŋimus siidu',
-'deletedrev' => '[sihkojuvvon]',
'histfirst' => 'Vuosttas',
'histlast' => 'Maŋimus',
'historysize' => '($1 stávvala)',
@@ -445,7 +430,7 @@ Du geavaheaddjidovddaldat lea dál anus.
# Revision feed
'history-feed-title' => 'Rievdadushistorjá',
'history-feed-description' => 'Dán siiddu rievdadushistorjá',
-'history-feed-item-nocomment' => '$1 ($2)', # user at time
+'history-feed-item-nocomment' => '$1 ($2)',
# Revision deletion
'rev-deleted-comment' => '(kommeanta sihkojuvvon)',
@@ -461,11 +446,11 @@ Du geavaheaddjidovddaldat lea dál anus.
Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
'revdelete-legend' => 'Veršuvnna rádjehusat',
'revdelete-hide-text' => 'Čiega veršuvnna sisdoalu',
+'revdelete-hide-image' => 'Čiega fiilla sisdoalu',
'revdelete-hide-name' => 'Čiega doaibma ja mearri',
'revdelete-hide-comment' => 'Čiega čoahkkáigeasu',
'revdelete-hide-user' => 'Čiega dahkki dovddaldaga dahje IP-čujuhusa',
'revdelete-suppress' => 'Čiega maid bajasdolliin',
-'revdelete-hide-image' => 'Čiega fiilla sisdoalu',
'revdelete-unsuppress' => 'Sihko máhcahuvvon veršuvnnaid rádjehusaid',
'revdelete-log' => 'Sivva',
'revdelete-submit' => 'Daga',
@@ -483,67 +468,75 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
'searchresults' => 'Ohcama bohtosat',
'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
-'noexactmatch' => 'Siidu ”$1” ii dihtto. Sáhtat [[$1|álggahit ođđa siiddu]].',
'notitlematches' => 'Ohcansátni ii dihtton ovttasge bájilčállagis',
-'prevn' => '← $1 ovddit',
-'nextn' => '$1 čuovvovaš →',
+'prevn' => '← {{PLURAL:$1|$1}} ovddit',
+'nextn' => '{{PLURAL:$1|$1}} čuovvovaš →',
'viewprevnext' => 'Čájet [$3] oktanaga.
-$1 | $2',
+$1 {{int:pipe-separator}} $2',
'searchhelp-url' => 'Help:Rávvagat',
'showingresults' => "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
'showingresultsnum' => "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
'powersearch' => 'Oza',
-# Preferences page
-'preferences' => 'Ásahusat',
-'mypreferences' => 'Ásahusat',
-'prefs-edits' => 'Rievdadusaid mearri:',
-'prefsnologin' => 'It leat čálligoahtán sisa.',
-'prefsnologintext' => 'Don fertet [[Special:UserLogin|čálligoahtit sisa]], ovdalgo sáhtat rievdadit du ásahusaid.',
-'prefsreset' => 'Ásahusat leat máhcajuvvon vurkeduvvon ásahusain.',
+# Quickbar
'qbsettings-none' => 'Ii maidige',
'qbsettings-fixedleft' => 'Teaksta mielde, gurut',
'qbsettings-fixedright' => 'Teaksta mielde, olggeš',
'qbsettings-floatingleft' => 'Biso gurutbealde',
'qbsettings-floatingright' => 'Biso olgesbealde',
-'changepassword' => 'Suollemassáni molson',
-'skin' => 'Olggosoaidnu',
-'skin-preview' => 'ovdalgihtii geahččan...',
-'math' => 'Matematihkká',
-'dateformat' => 'Beaivemeari hápmi',
-'datedefault' => 'Eai válljemat',
-'datetime' => 'Áigi ja beaivemearri',
-'math_unknown_error' => 'Dovdameahtun feaila',
-'math_unknown_function' => 'Dovdameahtun funkšuvdna',
-'prefs-personal' => 'Geavaheaddjidieđut',
-'prefs-rc' => 'Varas rievdadusat',
-'prefs-watchlist' => 'Čuovvunlistu',
-'prefs-watchlist-edits' => 'Rievdadusaid mearri čuovvunlisttus',
-'prefs-misc' => 'Eará',
-'saveprefs' => 'Vurke ásahusaid',
-'resetprefs' => 'Máhcat vurkejuvvon ásahusaid',
-'textboxsize' => 'Rievdadeapmi',
-'rows' => 'Gurgadasat',
-'columns' => 'Kolumnat',
-'searchresultshead' => 'Ohcan',
-'resultsperpage' => 'Bohtosa juohke siiddus',
-'contextlines' => 'Bohtosa gurgadasaid mearri',
-'contextchars' => 'Sisdoalu mearkkaid mearri juohke gurgadasas',
-'recentchangescount' => 'Siiddui mearri varas rievdadusain',
-'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
-'timezonelegend' => 'Áigeavádat',
-'timezonetext' => '¹Báikálaš áiggi ja servera áiggi (UTC) erohus diimmuin.',
-'localtime' => 'Báikálaš áigi',
-'timezoneoffset' => 'Áigeearru',
-'servertime' => 'Servera áigi',
-'guesstimezone' => 'Jeara neahttabláđejeaddjis',
-'timezoneregion-africa' => 'Afrihkká',
-'allowemail' => 'Suova e-postta sádden čujuhussii',
-'files' => 'Fiillat',
+
+# Preferences page
+'preferences' => 'Ásahusat',
+'mypreferences' => 'Ásahusat',
+'prefs-edits' => 'Rievdadusaid mearri:',
+'prefsnologin' => 'It leat čálligoahtán sisa.',
+'prefsnologintext' => 'Don fertet [[Special:UserLogin|čálligoahtit sisa]], ovdalgo sáhtat rievdadit du ásahusaid.',
+'changepassword' => 'Suollemassáni molson',
+'prefs-skin' => 'Olggosoaidnu',
+'skin-preview' => 'ovdalgihtii geahččan...',
+'prefs-math' => 'Matematihkká',
+'datedefault' => 'Eai válljemat',
+'prefs-datetime' => 'Áigi ja beaivemearri',
+'prefs-personal' => 'Geavaheaddjidieđut',
+'prefs-rc' => 'Varas rievdadusat',
+'prefs-watchlist' => 'Čuovvunlistu',
+'prefs-watchlist-edits' => 'Rievdadusaid mearri čuovvunlisttus',
+'prefs-misc' => 'Eará',
+'saveprefs' => 'Vurke ásahusaid',
+'resetprefs' => 'Máhcat vurkejuvvon ásahusaid',
+'prefs-editing' => 'Rievdadeapmi',
+'rows' => 'Gurgadasat',
+'columns' => 'Kolumnat',
+'searchresultshead' => 'Ohcan',
+'resultsperpage' => 'Bohtosa juohke siiddus',
+'contextlines' => 'Bohtosa gurgadasaid mearri',
+'contextchars' => 'Sisdoalu mearkkaid mearri juohke gurgadasas',
+'recentchangescount' => 'Siiddui mearri varas rievdadusain',
+'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
+'timezonelegend' => 'Áigeavádat',
+'localtime' => 'Báikálaš áigi',
+'timezoneoffset' => 'Áigeearru',
+'servertime' => 'Servera áigi',
+'guesstimezone' => 'Jeara neahttabláđejeaddjis',
+'timezoneregion-africa' => 'Afrihkká',
+'allowemail' => 'Suova e-postta sádden čujuhussii',
+'prefs-files' => 'Fiillat',
+'youremail' => 'E-poastačujuhus',
+'username' => 'Dovddaldat',
+'uid' => 'Nummir',
+'yourrealname' => 'Rivttes namma',
+'yourlanguage' => 'Geavahanvuođu giella',
+'yourvariant' => 'Giellavarianta:',
+'yournick' => 'Vuolláičálus',
+'badsig' => 'Vuolláičálus ii dohke.',
+'badsiglength' => 'Vuolláičálus lea menddo guhki - vuolláičálus sáhttá leat eanemusta $1 mearka.',
+'email' => 'E-poastadoaimmat',
+'prefs-help-realname' => 'Eaktodahtolaš. Du namma čájehuvvo geavaheaddjidovddaldaga sajis siiddu dahkkilogahallamis.',
+'prefs-help-email' => 'Eaktodahtolaš. Eará geavaheaddjit sáhttet váldit dunnje oktavuođa e-poasttain nu ahte du e-poastačujuhus ii dihtto.',
# User rights
-'userrights' => 'Geavaheaddjirivttiid stivren', # Not used as normal message but as header for the special page itself
+'userrights' => 'Geavaheaddjirivttiid stivren',
'userrights-lookup-user' => 'Geavaheaddjirivttiid stivren',
'userrights-user-editname' => 'Geavaheaddjidovddaldat',
'editusergroup' => 'Rievdat geavaheaddjijoavkkuid',
@@ -600,13 +593,14 @@ $1 | $2',
'rc_categories_any' => 'Mii beare',
# Recent changes linked
-'recentchangeslinked' => 'Dán siiddu varas rievdadusat',
-'recentchangeslinked-title' => '"$1" laktaseaddji rievdadusat',
+'recentchangeslinked' => 'Dán siiddu varas rievdadusat',
+'recentchangeslinked-feed' => 'Dán siiddu varas rievdadusat',
+'recentchangeslinked-toolbox' => 'Dán siiddu varas rievdadusat',
+'recentchangeslinked-title' => '"$1" laktaseaddji rievdadusat',
# Upload
'upload' => 'Lasit fiilla',
'uploadbtn' => 'Lasit fiilla',
-'reupload' => 'Sádde ođđasit',
'reuploaddesc' => 'Máhca sáddenskovvái.',
'uploadnologin' => 'It leat čálligoahtán sisa',
'uploadnologintext' => 'Don fertet leat [[Special:UserLogin|čálligoahtán sisa]], ovdalgo sáhtát vurket fiillaid.',
@@ -624,7 +618,6 @@ $1 | $2',
'filetype-missing' => 'Fiillas vailui fiilageažus – ovdamearkkan <tt>.jpg</tt>.',
'large-file' => 'Fiilla max. sturrodat lea $1. Fiila man lasihit lea $2.',
'largefileserver' => 'Dát fiila lea menddo stuoris.',
-'fileexists-thumb' => "<center>'''Dálá govva'''</center>",
'successfulupload' => 'Lasiheapmi lihkosmuvai',
'uploadwarning' => 'Lasihanvaruhus',
'savefile' => 'Vurke',
@@ -632,7 +625,6 @@ $1 | $2',
'uploaddisabled' => '{{GRAMMAR:genitive|{{SITENAME}}}} ii sáhte lasihit fiillaid.',
'uploaddisabledtext' => 'Fiillaid vurken lea váldojuvvon eret anus.',
'uploadscripted' => 'Dát fiila sisdisdoalla HTML-koda dahje skriptaid, maid neahttabláđejeaddji sáhttá vahagis dahkat.',
-'uploadcorrupt' => 'Fiila lea billahuvvan dahje das lea boasto fiilageažus. Dárkis fiilla ja sádde dan ođđasit.',
'uploadvirus' => 'Fiila sisdoalla virusa. Dárkilut dieđut: $1',
'sourcefilename' => 'Gáldonamma',
'destfilename' => 'Mearrenamma',
@@ -647,6 +639,7 @@ $1 | $2',
'upload-curl-error6' => 'Čujuhus ii doaimma',
'license' => 'Liseansa',
+'license-header' => 'Liseansa',
'nolicense' => 'Ii liseansa',
'license-nopreview' => '(ovdalgihtii geahččan ii leat vejolaš)',
'upload_source_url' => ' (almmolaš URL-čujuhus)',
@@ -663,6 +656,7 @@ $1 | $2',
'listfiles_description' => 'Govvádus',
# File description page
+'file-anchor-link' => 'Fiila',
'filehist' => 'Fiilla historjá',
'filehist-help' => 'Go deaddilat beaivemeari, oainnat makká fiila lei dalle.',
'filehist-deleteall' => 'sihko buot',
@@ -677,11 +671,7 @@ $1 | $2',
'imagelinks' => 'Čujuheamit siidduin',
'linkstoimage' => 'Čuovvovaš siidduin čujuhuvvo dán fiilii:',
'nolinkstoimage' => 'Dán fiilii ii čujuhuvo ovttage siiddus.',
-'sharedupload' => 'Dát fiila lea juhkojuvvon ja eará prošeavttat sáhtet geavahit dan.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Geahča $1 lassedieđuid.',
-'shareduploadwiki-linktext' => 'govvadussiiddus',
-'noimage' => 'Dán nammasaš fiila ii dihtto. Sáhtat $1 {{GRAMMAR:illative|{{SITENAME}}}}.',
-'noimage-linktext' => 'lasihit fiilla',
+'sharedupload' => 'Dát fiila lea juhkojuvvon ja eará prošeavttat sáhtet geavahit dan.',
'uploadnewversion-linktext' => 'Vurke ođđa veršuvnna dán fiillas',
# File reversion
@@ -739,8 +729,8 @@ $1 | $2',
'brokenredirects' => 'Beđganan ođđasitstivremat',
'brokenredirectstext' => 'Čuovvovaš ođđasitstivremat leat artihkkaliidda, mat eai dihtto.',
-'brokenredirects-edit' => '(rievdat)',
-'brokenredirects-delete' => '(sihko)',
+'brokenredirects-edit' => 'rievdat',
+'brokenredirects-delete' => 'sihko',
'withoutinterwiki' => 'Siiddut, main eai leat giellaliŋkkat',
'withoutinterwiki-summary' => 'Čuovvovaš siiddut eai čujut eará gielat veršuvnnaidda:',
@@ -913,8 +903,8 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'rollbackfailed' => 'Máhccan ii lihkosmuvvan',
'cantrollback' => 'Máhcaheapmi ovddit veršuvdnii ii leat vejolaš, daningo maŋimuš čálli lea siiddu aidna dahkki.',
'alreadyrolled' => 'Rievdadusat, maid geavaheaddji [[User:$2|$2]] ([[User talk:$2|ságastallan]]) lea dahkan, siidui $1 ii sáhte sihkkut, daningo geavaheaddji [[User:$3|$3]] ([[User talk:$3|ságastallan]]) lea dahkan ođđa rievdadusaid.',
-'editcomment' => "Rievdadusa čoahkkáigeassu lei: ''$1''.", # only shown if there is an edit comment
-'revertpage' => 'Geavaheaddji [[Special:Contributions/$2|$2]] ([[User_talk:$2|ságastallan]]) rievdadusat sihkkojuvvui ja siidu máhcahuvvui veršuvdnii, man geavaheaddji [[User:$1|$1]] lei dahkan.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Rievdadusa čoahkkáigeassu lei: ''$1''.",
+'revertpage' => 'Geavaheaddji [[Special:Contributions/$2|$2]] ([[User_talk:$2|ságastallan]]) rievdadusat sihkkojuvvui ja siidu máhcahuvvui veršuvdnii, man geavaheaddji [[User:$1|$1]] lei dahkan.',
'rollback-success' => 'Rievdadusat, maid geavaheaddji ”$1” lei dahkan, sihkojuvvui ja artihkal máhcaduvvui veršuvdnii, man geavaheaddji $2 lei dahkan.',
# Protect
@@ -929,14 +919,13 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'protectexpiry' => 'Boarásnuvvá',
'protect_expiry_invalid' => 'Buorášnuvvánáigi ii dohket.',
'protect_expiry_old' => 'Boarásnuvvánáigi lea vássán.',
-'protect-unchain' => 'Geavat sirdinsuodjálusa',
'protect-default' => '(eai rádjehusat)',
'protect-level-autoconfirmed' => 'Cakkastala ođđa ja anonyma geavaheddjiid',
'protect-level-sysop' => 'Dušše bájasdoallit',
'protect-summary-cascade' => 'viididuvvon',
'protect-expiring' => 'boarásnuvvá $1',
'protect-cascade' => 'Viidit suodjálusa guoskat buot siidduit, mat gullet dán siidui',
-'protect-expiry-options' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
'restriction-type' => 'Rádjehus',
'restriction-level' => 'Suodjálus',
'minimum-size' => 'Min. sturrodat',
@@ -982,6 +971,8 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'sp-contributions-newbies' => 'Čájet ođđa geavaheddjiid rievdadusaid',
'sp-contributions-newbies-sub' => 'Ođđa geavaheddjiid rievdadusat',
'sp-contributions-blocklog' => 'cakkastallamat',
+'sp-contributions-talk' => 'ságastallan',
+'sp-contributions-userrights' => 'Geavaheaddjirivttiid stivren',
'sp-contributions-search' => 'Oza rievdadusaid',
'sp-contributions-username' => 'IP-čujuhus dahje geavaheaddjidovddaldat',
'sp-contributions-submit' => 'Oza',
@@ -1019,7 +1010,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'ipbenableautoblock' => 'Eastte maŋimus IP-čujuhus, mas geavaheaddji lea ráhkadan rievdadusaid, ja maid daid čujuhusaid, main son vel iska rievdadit.',
'ipbsubmit' => 'Eastte',
'ipbother' => 'Eará áigi',
-'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
'ipbotheroption' => 'Eará',
'ipbotherreason' => 'Eará sivva',
'badipaddress' => 'IP-čujuhus lea boastut.',
@@ -1031,7 +1022,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'ipblocklist-username' => 'Geavaheaddjidovddaldat dahje IP-čujuhus:',
'ipblocklist-submit' => 'Oza',
'infiniteblock' => 'bissovaččat',
-'expiringblock' => 'boarásnuvvá $1',
+'expiringblock' => 'boarásnuvvá $1 $2',
'contribslink' => 'rievdadusat',
'proxyblocksuccess' => 'Gárvvis.',
@@ -1153,6 +1144,10 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
# Math options
'mw_math_png' => 'Čájet álo PNG:n',
+# Math errors
+'math_unknown_error' => 'Dovdameahtun feaila',
+'math_unknown_function' => 'Dovdameahtun funkšuvdna',
+
# Patrolling
'markaspatrolleddiff' => 'Merke dárkistuvvon',
'markaspatrolledtext' => 'Merke, ahte rievdadus lea dárkistuvvon',
@@ -1192,7 +1187,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'exif-unknowndate' => 'Dovdameahttun beaivemearri',
-'exif-orientation-1' => 'Normála', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Normála',
'exif-componentsconfiguration-0' => 'ii leat',
@@ -1226,7 +1221,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'exif-subjectdistancerange-0' => 'Dovdameahttun',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'miilla diimmus',
'exif-gpsspeed-n' => 'čuolmma',
@@ -1295,7 +1290,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'watchlisttools-edit' => 'Ođasmahte listtu',
# Special:Version
-'version' => 'Veršuvdna', # Not used as normal message but as header for the special page itself
+'version' => 'Veršuvdna',
# Special:SpecialPages
'specialpages' => 'Erenomáš siiddut',
diff --git a/languages/messages/MessagesSei.php b/languages/messages/MessagesSei.php
index 8430c43f..4edd413c 100644
--- a/languages/messages/MessagesSei.php
+++ b/languages/messages/MessagesSei.php
@@ -121,10 +121,18 @@ $messages = array(
'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
-'about' => 'Miixaz',
-'article' => 'Artículo',
-'newwindow' => '(dansinám precquen)',
-'cancel' => 'Antajöx',
+'about' => 'Miixaz',
+'article' => 'Artículo',
+'newwindow' => '(dansinám precquen)',
+'cancel' => 'Antajöx',
+'moredotdotdot' => 'Tamläj...',
+'mypage' => 'Hepáhina',
+'mytalk' => 'Heczaxö',
+'anontalk' => 'Czaxöde IP',
+'navigation' => 'Navigacion',
+'and' => '&#32;ö',
+
+# Cologne Blue skin
'qbfind' => 'Hinuetzöx',
'qbbrowse' => 'Quetzexal',
'qbedit' => 'Ticpatlöx',
@@ -132,15 +140,8 @@ $messages = array(
'qbpageinfo' => 'Contextua',
'qbmyoptions' => 'Hepáhinám',
'qbspecialpages' => 'Páhinám extravám',
-'moredotdotdot' => 'Tamläj...',
-'mypage' => 'Hepáhina',
-'mytalk' => 'Heczaxö',
-'anontalk' => 'Czaxöde IP',
-'navigation' => 'Navigacion',
-'and' => '&#32;ö',
-
-# Metadata in edit box
-'metadata_help' => 'Datade Meta:',
+'faq' => 'Cocmíiit cmaa',
+'faqpage' => 'Project:Cocmíiit cmaa',
'errorpagetitle' => 'Römj',
'returnto' => 'Jumpöx $1.',
@@ -188,7 +189,7 @@ $messages = array(
'otherlanguages' => 'Itóm pacehuatl iti',
'redirectedfrom' => '(Meniitomöxde $1)',
'redirectpagesub' => 'Meniitomöx páhina',
-'lastmodifiedat' => "Jan páhina coccebjöx ticpatlöx iti'ab $2, $1.", # $1 date, $2 time
+'lastmodifiedat' => "Jan páhina coccebjöx ticpatlöx iti'ab $2, $1.",
'viewcount' => '{{PLURAL:$1|1 ctam|$1 ctám}} coccebj cohuatlöx jan páhina.',
'protectedpage' => 'Páhina protecta',
'jumpto' => 'Jumpöx:',
@@ -199,7 +200,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} mii',
'aboutpage' => 'Project:Miilà',
'copyright' => 'Contentua coitáamb $1 tan.',
-'copyrightpagename' => 'Copyright {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyrightám',
'currentevents' => 'Hualtezxes',
'currentevents-url' => 'Project:Hualtezxes',
@@ -207,8 +207,6 @@ $messages = array(
'disclaimerpage' => 'Project:Isoj cacóomx geniiraloj',
'edithelp' => 'Help ticpatlöx',
'edithelppage' => 'Help:Ticpatlöx',
-'faq' => 'Cocmíiit cmaa',
-'faqpage' => 'Project:Cocmíiit cmaa',
'helppage' => 'Help:Caálixötöj',
'mainpage' => 'Caálixötöj',
'mainpage-description' => 'Caálixötöj',
@@ -281,10 +279,6 @@ Hunattemptöx database query coccebjöx:
"$1"
funccion xi "$2".
MySQL returnöx römj iti "$3: $4"',
-'noconnect' => 'Sorry! Wiki zo expiriencom cy technicy pac ö necontactom serverde database zo. <br />
-$1',
-'nodb' => 'Neselectam database $1',
-'cachederror' => 'Jan coccebj copynam cachenamde páhina Neces ö necoccebj updatenom.',
'laggedslavemode' => 'Attencion: Páhina necoccebj updatenám cmaa.',
'readonly' => 'Database protectáme',
'enterlockreason' => 'Enterom raede lockom zo, includom estimacionde janxepe lockom zo releasom',
@@ -327,7 +321,6 @@ $2',
'ns-specialprotected' => 'Páhinámde {{ns:special}} zo iti neticpatlöx.',
# Login and logout pages
-'logouttitle' => 'Caitom cuípo',
'logouttext' => "'''Me cuípo.'''
Mecontinudad usadad {{SITENAME}} anon jïx me caápo dajcaitom ö jömcaitom.
@@ -335,7 +328,6 @@ Páhinám pac continudad displayom dajme caápo, jánclearom mecachede browser."
'welcomecreation' => "== Q'$1! ==
Mecaitom coccebj creatöx. Quiix hequáatlaácde {{SITENAME}} pos-poop.",
-'loginpagetitle' => 'Caitom caápo',
'yourname' => 'Caitom ID:',
'yourpassword' => 'Quimx canj:',
'yourpasswordagain' => 'Vanquimx canj:',
@@ -357,19 +349,7 @@ Mecaitom coccebj creatöx. Quiix hequáatlaácde {{SITENAME}} pos-poop.",
'createaccountmail' => 'caxuatl e-iitom',
'badretype' => 'Quimx cánj zo misoj nematchöx.',
'userexists' => 'IDde caitom coccebj usadad. Submitom hunnom.',
-'youremail' => 'E-iitom:',
-'username' => 'Caitom ID:',
-'uid' => 'ID comháars:',
-'yourrealname' => 'Comcáacuatl:',
-'yourlanguage' => 'Itom ö:',
-'yourvariant' => 'Ccójbam:',
-'yournick' => 'Brazzi:',
-'badsig' => 'Signatura raw invalidaw; checkom HTML tagám.',
-'badsiglength' => 'Brazzi coccebj bajlip; brazzi correctom minusde $1 characterám.',
-'email' => 'E-iitom',
-'prefs-help-realname' => 'Comcáacuatl coccebj opcional, zo xuniim plusöxde attribucionde menaffortua.',
'loginerror' => 'Römjde caápo',
-'prefs-help-email' => 'Adressade e-iitom coccebj opcional, zo enable diijömde caitom contactom me mecaitom jöx meczaxöde caitom sans comcáacuatl ajbul.',
'nocookiesnew' => 'IDde caitom zo coccebj creatöx, me necaápo. {{SITENAME}} usadad cookie caápo caitóm. Me necoccebj cookie. Enable cookie, caápo quimx canj ö caitom.',
'nocookieslogin' => '{{SITENAME}} usadad cookie caápo caitóm. Me necoccebj cookie. Enable cookie ö caápo.',
'noname' => 'Me necoccebj IDde caitom validom caápospecified.',
@@ -408,16 +388,15 @@ confirmom account zo coccebj de'me.",
'loginlanguagelabel' => 'Itom: $1',
# Password reset dialog
-'resetpass' => "Account quimx canj'reset",
-'resetpass_announce' => "Me caápo code temp e-iitomöx mii. Fini caápo, me reset' hunquimx canj cmaadexepe:",
-'resetpass_header' => "Reset'quimx canj",
-'oldpassword' => 'Janquimx canj:',
-'newpassword' => 'Hunquimx canj:',
-'retypenew' => 'Vanhunquimx canj:',
-'resetpass_submit' => 'Vanquimx canj ö caápo',
-'resetpass_success' => 'Me quimx canj coccebj quiixde success! Caápo cmaa...',
-'resetpass_bad_temporary' => "Quimx canj temp invalidanj. Me coccebj reset' quimx canjde success jöx requestan hunquimx canj temp pac.",
-'resetpass_forbidden' => 'Quimx cánj nereset jan wiki iti',
+'resetpass' => "Account quimx canj'reset",
+'resetpass_announce' => "Me caápo code temp e-iitomöx mii. Fini caápo, me reset' hunquimx canj cmaadexepe:",
+'resetpass_header' => "Reset'quimx canj",
+'oldpassword' => 'Janquimx canj:',
+'newpassword' => 'Hunquimx canj:',
+'retypenew' => 'Vanhunquimx canj:',
+'resetpass_submit' => 'Vanquimx canj ö caápo',
+'resetpass_success' => 'Me quimx canj coccebj quiixde success! Caápo cmaa...',
+'resetpass_forbidden' => 'Quimx cánj nereset jan wiki iti',
# Edit page toolbar
'bold_sample' => 'Text ccomca',
@@ -486,7 +465,6 @@ Me IDde block coccebj $5. Includam 1 jöx 2 pac querinám iti.",
'blockededitsource' => "Textua zode '''meticpatlöxde''' '''$1''' coccebj cohuatlöx:",
'whitelistedittitle' => 'Caápo Neces ticpatlöx',
'whitelistedittext' => 'Mecoccebj $1 ticpatlöx páhinám.',
-'confirmedittitle' => 'Confirmacionde e-iitom coccebj Neces ticpatlöx',
'confirmedittext' => "Me confirmöx menadressade de e-iitom ticpatlöx 'depre. Set' ö validatenan menadressade IP [[Special:Preferences|hequáatlaác]] mii.",
'nosuchsectiontitle' => "Ne'dáár partam",
'nosuchsectiontext' => "Me pos-xuniim ticpatlöx ne'dáár partam.",
@@ -503,7 +481,8 @@ Me coccebj römjasi poop, clickom meback-buttonde browser coccebj perfectua.',
'anontalkpagetext' => "----''Jan coccebj czaxö zode caitomde IDde adressade IP. Isój necoccebj caápo. Jan coccebj rae'de usadadde adressade IP numerical identificacion 'prenisój. Plusöxde caitom pos-coccebj jan adressade IP. Me pos-coccebj anonimo ö commentua irrevelantua coccebj directomde me poop, [[Special:UserLogin|caápo-jande]] exitom confucion diijömde IP-caitóm mii.''",
'noarticletext' => 'Jan páhina necoccebj textua zo, me pos-coccebj [[Special:Search/{{PAGENAME}}|yahöx jan páhina]] diijömde páhinám iti jöx [{{fullurl:{{FULLPAGENAME}}|action=edit}} ticpatlöx jan páhina].',
'clearyourcache' => "'''Notificacion:''' Xuniim 'depre, me pos-coccebj bypassöx mecachede browser caitomi quiíx. '''Mozilla / Firefox / Safari:''' quan ti caitomde ''Shift'' zoxepe clickom ''Reload'', jöx cuápook zo ti ''Ctrl-Shift-R'' (''Cmd-Shift-R'' Apple Mac iti); '''IE:''' quan ti ''Ctrl'' zoxepe clickom ''Refresh'', jöx cuápook zo ti ''Ctrl-F5''; '''Konqueror:''': clickom buttonde ''Reload'' zo, jöx cuápook zo iti ''F5''; '''Opera''' caitóm pos-coccebj clairomde cache completementua ''Tools→Preferences'' iti.",
-'usercssjsyoucanpreview' => "'''Tip:''' Usadad 'Cohuatlöx cuáxiit' testom me hun CSS/JS xuniim 'depre.",
+'usercssyoucanpreview' => "'''Tip:''' Usadad 'Cohuatlöx cuáxiit' testom me hun CSS xuniim 'depre.",
+'userjsyoucanpreview' => "'''Tip:''' Usadad 'Cohuatlöx cuáxiit' testom me hun JS xuniim 'depre.",
'usercsspreview' => "'''He cuáxiit he CSSde caitom, zo necoccebj xuniim!'''",
'userjspreview' => "'''He cuáxiit/testom he JavaScriptde caitom, zo necoccebj xuniim!'''",
'userinvalidcssjstitle' => "'''Attencion:''' Skin \"\$1\" coccebj ne'dáár. Regardom .css ö .js páhinám usadad titlenam lowercase zo, yanuiíxzo mii yahöxde ti {{ns:user}}:Foo/monobook.css opposadadde {{ns:user}}:Foo/Monobook.css.",
@@ -564,7 +543,7 @@ Rae' zo xuniim $3 mii coccebj ''$2''",
'nohistory' => 'Jan páhina necoccebj históriade ticpatlöx.',
'currentrev' => 'Revicion cmaa',
'revisionasof' => 'Revicionde $1',
-'revision-info' => "Revicionde $1 'de $2", # Additionally available: $3: revision id
+'revision-info' => "Revicionde $1 'de $2",
'previousrevision' => '←Janrevicion',
'nextrevision' => 'Hunrevicion→',
'currentrevisionlink' => 'Revicion currentuanon',
@@ -576,7 +555,6 @@ Rae' zo xuniim $3 mii coccebj ''$2''",
'histlegend' => "Seleccionde quiíx: xuniim cui radio zode vercion zode comparar ö click 'enter' jöx click bazoniiniitöxamde vyu !-cmaa uisan.<br />
Informacion: (curt) = quiíxde vercion currentua,
(hunl) = quiíxde vercion precedatöxuam, b = ticpatlöx bajlöxam.",
-'deletedrev' => '[ëjmet]',
'histfirst' => 'Xepe',
'histlast' => 'Cmaa',
'historysize' => '($1 bytenám)',
@@ -585,7 +563,7 @@ Informacion: (curt) = quiíxde vercion currentua,
# Revision feed
'history-feed-title' => 'Históriade revicion',
'history-feed-description' => 'Históriade revicion jande páhina wiki zo iti',
-'history-feed-item-nocomment' => '$1 öl $2 mii', # user at time
+'history-feed-item-nocomment' => '$1 öl $2 mii',
# Revision deletion
'rev-deleted-comment' => '(delatom commentua)',
@@ -597,10 +575,10 @@ Informacion: (curt) = quiíxde vercion currentua,
'revdelete-selected' => "'''{{PLURAL:$2|Revicion selectonde|Revición selectónde}} $1:'''",
'revdelete-legend' => 'Xuniim restricción',
'revdelete-hide-text' => 'Camaát textuade revicion',
+'revdelete-hide-image' => 'Cohuatlöx contentua ciúchan',
'revdelete-hide-name' => 'Camaát accion öjaim',
'revdelete-hide-comment' => 'Camaát commentuade ticpatlöx',
'revdelete-hide-user' => 'Camaát IDde caitom/IDde IP',
-'revdelete-hide-image' => 'Cohuatlöx contentua ciúchan',
'revdelete-log' => 'Ra:',
'revdelete-logentry' => 'quiixöx revicion visibilitiitde [[$1]]',
'logdelete-logentry' => 'quiixöx eventua visibilitiitde [[$1]]',
@@ -617,53 +595,60 @@ Informacion: (curt) = quiíxde vercion currentua,
'searchresulttext' => 'Plusöxde informaciónde yahöx {{SITENAME}} iti, jumpöx [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Me yahöx '''[[:$1]]''' iti",
'searchsubtitleinvalid' => "Me yahöx '''$1''' iti",
-'noexactmatch' => "'''Páhina zo \"\$1\" coccebj ne'dáár.''' Mecoccebj [[:\$1|hunpáhinámom]].",
-'prevn' => 'jan $1',
-'nextn' => 'hun $1',
-'viewprevnext' => 'Cohuatlöx ($1) ($2) ($3)',
+'prevn' => 'jan {{PLURAL:$1|$1}}',
+'nextn' => 'hun {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Cohuatlöx ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Caálixötöj',
'powersearch' => 'Yahöx',
+# Quickbar
+'qbsettings' => 'Zuónaát',
+'qbsettings-none' => 'Nepartám',
+
# Preferences page
-'preferences' => 'Quáatlaác',
-'mypreferences' => 'Hequáatlaác',
-'prefs-edits' => 'Ticpatlöx jöxualtec ID-cort:',
-'prefsnologin' => 'Necaápo',
-'prefsnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] quiixom hequáatlaác.',
-'qbsettings' => 'Zuónaát',
-'qbsettings-none' => 'Nepartám',
-'changepassword' => "Reset'quimx canj",
-'skin' => 'Zuláugaum',
-'skin-preview' => 'Cuáxiit',
-'math' => 'HTML-cuat',
-'dateformat' => 'Formatumde datum',
-'datedefault' => 'Diiquáatlaac',
-'datetime' => 'Datum ö xepe',
-'math_unknown_error' => 'römj ác',
-'math_unknown_function' => 'functión ác',
-'math_lexing_error' => 'römjde lexám',
-'math_syntax_error' => 'römjde syntáx',
-'prefs-personal' => 'Caitom profile',
-'prefs-rc' => 'Camjöx cmaa',
-'prefs-watchlist' => 'Listade cáminot',
-'prefs-misc' => 'Jömc',
-'saveprefs' => 'Xuniim',
-'resetprefs' => "Reset'",
-'textboxsize' => 'Ticpatlöx',
-'rows' => 'Rowám:',
-'columns' => 'Columnám:',
-'searchresultshead' => 'Yahöx',
-'savedprefs' => 'Hequáatlaác coccebj xuniimöx.',
-'timezonelegend' => 'Zonede xepe',
-'timezonetext' => '¹Xepede zaah quij iitax mexepe locale quiixomde xepede servere (UTC).',
-'localtime' => 'Xepe locale',
-'timezoneoffset' => "Minus'set¹",
-'servertime' => 'Xepede server',
-'guesstimezone' => "Xuniimyabuatlecaún dai'browser",
-'allowemail' => 'Pos-coccebj e-iitomde diijömde caitóm',
-'defaultns' => 'Yahöx jan ipartuatl iti auto:',
-'default' => 'auto',
-'files' => 'Ciúchán',
+'preferences' => 'Quáatlaác',
+'mypreferences' => 'Hequáatlaác',
+'prefs-edits' => 'Ticpatlöx jöxualtec ID-cort:',
+'prefsnologin' => 'Necaápo',
+'prefsnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] quiixom hequáatlaác.',
+'changepassword' => "Reset'quimx canj",
+'prefs-skin' => 'Zuláugaum',
+'skin-preview' => 'Cuáxiit',
+'prefs-math' => 'HTML-cuat',
+'datedefault' => 'Diiquáatlaac',
+'prefs-datetime' => 'Datum ö xepe',
+'prefs-personal' => 'Caitom profile',
+'prefs-rc' => 'Camjöx cmaa',
+'prefs-watchlist' => 'Listade cáminot',
+'prefs-misc' => 'Jömc',
+'saveprefs' => 'Xuniim',
+'resetprefs' => "Reset'",
+'prefs-editing' => 'Ticpatlöx',
+'rows' => 'Rowám:',
+'columns' => 'Columnám:',
+'searchresultshead' => 'Yahöx',
+'savedprefs' => 'Hequáatlaác coccebj xuniimöx.',
+'timezonelegend' => 'Zonede xepe',
+'localtime' => 'Xepe locale',
+'timezoneoffset' => "Minus'set¹",
+'servertime' => 'Xepede server',
+'guesstimezone' => "Xuniimyabuatlecaún dai'browser",
+'allowemail' => 'Pos-coccebj e-iitomde diijömde caitóm',
+'defaultns' => 'Yahöx jan ipartuatl iti auto:',
+'default' => 'auto',
+'prefs-files' => 'Ciúchán',
+'youremail' => 'E-iitom:',
+'username' => 'Caitom ID:',
+'uid' => 'ID comháars:',
+'yourrealname' => 'Comcáacuatl:',
+'yourlanguage' => 'Itom ö:',
+'yourvariant' => 'Ccójbam:',
+'yournick' => 'Brazzi:',
+'badsig' => 'Signatura raw invalidaw; checkom HTML tagám.',
+'badsiglength' => 'Brazzi coccebj bajlip; brazzi correctom minusde $1 characterám.',
+'email' => 'E-iitom',
+'prefs-help-realname' => 'Comcáacuatl coccebj opcional, zo xuniim plusöxde attribucionde menaffortua.',
+'prefs-help-email' => 'Adressade e-iitom coccebj opcional, zo enable diijömde caitom contactom me mecaitom jöx meczaxöde caitom sans comcáacuatl ajbul.',
# User rights
'userrights-lookup-user' => "Yoc' polámde caitom",
@@ -724,13 +709,14 @@ Informacion: (curt) = quiíxde vercion currentua,
'newsectionsummary' => '/* $1 */ hunseccion',
# Recent changes linked
-'recentchangeslinked' => 'Quiix hámíigonix',
-'recentchangeslinked-title' => 'Quiix hámíigonixde "$1"',
+'recentchangeslinked' => 'Quiix hámíigonix',
+'recentchangeslinked-feed' => 'Quiix hámíigonix',
+'recentchangeslinked-toolbox' => 'Quiix hámíigonix',
+'recentchangeslinked-title' => 'Quiix hámíigonixde "$1"',
# Upload
'upload' => 'Ciúchan uploadan',
'uploadbtn' => 'Ciúchan uploadan',
-'reupload' => 'Re-uploadan',
'uploadnologin' => 'Necaápo',
'uploadnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] (re-)uploadande ciúchán.',
'uploaderror' => 'Römjde uploadan',
@@ -759,6 +745,7 @@ Informacion: (curt) = quiíxde vercion currentua,
'upload-curl-error28' => 'Time-outde uploadan',
'license' => 'Licenciónom:',
+'license-header' => 'Licenciónom:',
'nolicense' => 'Seleccion coccebj hun',
'license-nopreview' => '(Necuáxiit)',
@@ -773,6 +760,7 @@ Informacion: (curt) = quiíxde vercion currentua,
'listfiles_description' => 'Discripcion',
# File description page
+'file-anchor-link' => 'Ciúchan',
'filehist' => 'Historiade ciúchan',
'filehist-deleteall' => 'delatom jömde man',
'filehist-deleteone' => 'delatom jande man',
@@ -784,8 +772,6 @@ Informacion: (curt) = quiíxde vercion currentua,
'filehist-filesize' => 'Bajlipde ciúchan',
'filehist-comment' => 'Commentua',
'imagelinks' => 'Linkám',
-'shareduploadwiki-linktext' => 'discripcionde ciúchan páhina',
-'noimage-linktext' => 'z(o) uploadan',
'uploadnewversion-linktext' => 'Uploadan hunvercion zode jan ciúchan',
# File reversion
@@ -829,8 +815,8 @@ Informacion: (curt) = quiíxde vercion currentua,
'brokenredirects' => 'Meniitomöx linkám nedireccion',
'brokenredirectstext' => 'Jan meniitomöx linkomde neday ti camiintivuatl páhinám:',
-'brokenredirects-edit' => '(ticpatlöx)',
-'brokenredirects-delete' => '(delatom)',
+'brokenredirects-edit' => 'ticpatlöx',
+'brokenredirects-delete' => 'delatom',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|bytenám}}',
@@ -953,6 +939,7 @@ iitom e-iitomde diijömde caitóm.',
'mycontris' => 'Hecontribución',
'uctop' => '(quániit)',
+'sp-contributions-talk' => 'Czaxö',
'sp-contributions-search' => 'Yahöx contribución mii',
'sp-contributions-username' => 'Addressade IP jöx caitom ID:',
'sp-contributions-submit' => 'Yahöx',
@@ -1061,6 +1048,12 @@ iitom e-iitomde diijömde caitóm.',
# Info page
'infosubtitle' => 'Informacionde páhina',
+# Math errors
+'math_unknown_error' => 'römj ác',
+'math_unknown_function' => 'functión ác',
+'math_lexing_error' => 'römjde lexám',
+'math_syntax_error' => 'römjde syntáx',
+
# Media information
'widthheightpage' => '$1×$2, $3 páhinám',
@@ -1099,7 +1092,7 @@ iitom e-iitomde diijömde caitóm.',
'autosumm-new' => 'Hunpáhina: $1',
# Special:Version
-'version' => 'Vercion', # Not used as normal message but as header for the special page itself
+'version' => 'Vercion',
# Special:SpecialPages
'specialpages' => 'Páhinám extravám',
diff --git a/languages/messages/MessagesSg.php b/languages/messages/MessagesSg.php
index 3c437d78..1137cbec 100644
--- a/languages/messages/MessagesSg.php
+++ b/languages/messages/MessagesSg.php
@@ -11,6 +11,8 @@
* @author sg.wikipedia.org sysops
*/
+$fallback = 'fr';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Gbënëngö-gbegbê',
@@ -42,7 +44,6 @@ $messages = array(
'userlogin' => 'Linda / Yeke nyîmbâ',
'logout' => 'Woza',
'userlogout' => 'Woza',
-'yournick' => 'Nyîmbâ:',
# Edit pages
'watchthis' => 'bâa lo ânde sô lêmbëtï',
@@ -53,6 +54,7 @@ $messages = array(
# Preferences page
'mypreferences' => 'tandä tî mbï',
'prefs-rc' => 'Tanga ti yé so a gbion ya ni',
+'yournick' => 'Nyîmbâ:',
# User rights
'editinguser' => "Mo fa na mbi nyîmbâ '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -63,7 +65,7 @@ $messages = array(
# Upload
'watchthisupload' => 'bâa lo ânde sô lêmbëtï',
-'brokenredirects-edit' => '(fa na mbi)',
+'brokenredirects-edit' => 'fa na mbi',
# Watchlist
'watchlist' => 'bâa lo ânde tî mbï',
diff --git a/languages/messages/MessagesSh.php b/languages/messages/MessagesSh.php
index 30c4dcc0..4fd7fbfd 100644
--- a/languages/messages/MessagesSh.php
+++ b/languages/messages/MessagesSh.php
@@ -11,6 +11,17 @@
* @author לערי ריינהארט
*/
+$namespaceNames = array(
+ NS_USER => 'Korisnik',
+ NS_USER_TALK => 'Razgovor_sa_korisnikom',
+ NS_FILE => 'Datoteka',
+ NS_FILE_TALK => 'Razgovor_o_datoteci',
+ NS_TEMPLATE => 'Šablon',
+ NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Podvuci linkove:',
@@ -42,6 +53,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pošalji mi e-poštu takođe za male izmjene stranica',
'tog-enotifrevealaddr' => 'Otkrij adresu moje e-pošte u porukama obaviještenja',
'tog-shownumberswatching' => 'Prikaži broj korisnika koji prate',
+'tog-oldsig' => 'Pregled postojećeg potpisa:',
'tog-fancysig' => 'Smatraj potpis kao wikitekst (bez automatskog linka)',
'tog-externaleditor' => 'Po defaultu koristite eksterni editor (samo za naprednije korisnike, potrebne su posebne postavke na vašem računaru)',
'tog-externaldiff' => 'Koristi vanjski (diff) program za prikaz razlika (samo za naprednije korisnike, potrebne posebne postavke na vašem računaru)',
@@ -63,6 +75,13 @@ $messages = array(
'underline-never' => 'Nikad',
'underline-default' => 'Po postavkama preglednika',
+# Font style option in Special:Preferences
+'editfont-style' => 'Stil slova područja uređivanja:',
+'editfont-default' => 'Po postavkama preglednika',
+'editfont-monospace' => 'Slova sa jednostrukim razmakom',
+'editfont-sansserif' => 'Slova bez serifa',
+'editfont-serif' => 'Slova serif',
+
# Dates
'january' => 'januar',
'february' => 'februar',
@@ -108,7 +127,7 @@ $messages = array(
'category-media-header' => 'Medijske datoteke u kategoriji "$1"',
'category-empty' => "''Ova kategorija trenutno ne sadrži članke ni medijske datoteke.''",
'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
-'hidden-category-category' => 'Sakrivene kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Sakrivene kategorije',
'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću $1 potkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeće potkategorije|sljedećih $1 potkategorija}}, od $2 ukupno.}}',
'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|slijedeću $1 podkategoriju|slijedeće $1 podkategorije|slijedećih $1 podkategorija}}.',
'category-article-count' => '{{PLURAL:$2|U ovoj kategoriji se nalazi $1 stranica.|{{PLURAL:$1|Prikazana je $1 stranica|Prikazano je $1 stranice|Prikazano je $1 stranica}} od ukupno $2 u ovoj kategoriji.}}',
@@ -116,6 +135,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ova kategorija ima slijedeću $1 datoteku.|{{PLURAL:$1|Prikazana je $1 datoteka|Prikazane su $1 datoteke|Prikazano je $1 datoteka}} u ovoj kategoriji, od ukupno $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Slijedeća $1 datoteka je|Slijedeće $1 datoteke su|Slijedećih $1 datoteka je}} u ovoj kategoriji.',
'listingcontinuesabbrev' => 'nast.',
+'index-category' => 'Indeksirane stranice',
+'noindex-category' => 'Neindeksirane stranice',
'mainpagetext' => "'''MediaWiki softver is uspješno instaliran.'''",
'mainpagedocfooter' => 'Kontaktirajte [http://meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
@@ -125,10 +146,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki najčešće postavljana pitanja]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
-'about' => 'O...',
-'article' => 'Stranica sadržaja (članak)',
-'newwindow' => '(otvara se u novom prozoru)',
-'cancel' => 'Poništi',
+'about' => 'O...',
+'article' => 'Stranica sadržaja (članak)',
+'newwindow' => '(otvara se u novom prozoru)',
+'cancel' => 'Poništi',
+'moredotdotdot' => 'Još...',
+'mypage' => 'Moja stranica',
+'mytalk' => 'Moj razgovor',
+'anontalk' => 'Razgovor za ovu IP adresu',
+'navigation' => 'Navigacija',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Pronađite',
'qbbrowse' => 'Prelistajte',
'qbedit' => 'Uredi',
@@ -136,15 +165,33 @@ $messages = array(
'qbpageinfo' => 'Informacije o stranici',
'qbmyoptions' => 'Moje opcije',
'qbspecialpages' => 'Posebne stranice',
-'moredotdotdot' => 'Još...',
-'mypage' => 'Moja stranica',
-'mytalk' => 'Moj razgovor',
-'anontalk' => 'Razgovor za ovu IP adresu',
-'navigation' => 'Navigacija',
-'and' => '&#32;i',
-# Metadata in edit box
-'metadata_help' => 'Metapodaci:',
+# Vector skin
+'vector-action-addsection' => 'Dodaj temu',
+'vector-action-delete' => 'Brisanje',
+'vector-action-move' => 'Preusmjeri',
+'vector-action-protect' => 'Zaštiti',
+'vector-action-undelete' => 'Vrati obrisano',
+'vector-action-unprotect' => 'Oslobodi od zaštite',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Stranica pomoći',
+'vector-namespace-image' => 'Datoteka',
+'vector-namespace-main' => 'Stranica',
+'vector-namespace-media' => 'Medijska stranica',
+'vector-namespace-mediawiki' => 'Poruka',
+'vector-namespace-project' => 'Stranica projekta',
+'vector-namespace-special' => 'Posebna stranica',
+'vector-namespace-talk' => 'Razgovor',
+'vector-namespace-template' => 'Šablon',
+'vector-namespace-user' => 'Korisnička stranica',
+'vector-view-create' => 'Napravi',
+'vector-view-edit' => 'Uredi',
+'vector-view-history' => 'Pregled historije',
+'vector-view-view' => 'Čitaj',
+'vector-view-viewsource' => 'Vidi izvor (source)',
+'actions' => 'Akcije',
+'namespaces' => 'Imenski prostori',
+'variants' => 'Varijante',
'errorpagetitle' => 'Greška',
'returnto' => 'Povratak na $1.',
@@ -194,12 +241,17 @@ $messages = array(
'otherlanguages' => 'Na drugim jezicima',
'redirectedfrom' => '(Preusmjereno sa $1)',
'redirectpagesub' => 'Preusmjeri stranicu',
-'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $1, $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $1, $2.',
'viewcount' => 'Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.',
'protectedpage' => 'Zaštićena stranica',
'jumpto' => 'Skoči na:',
'jumptonavigation' => 'navigacija',
'jumptosearch' => 'pretraga',
+'view-pool-error' => 'Žao nam je, serveri su trenutno preopterećeni.
+Previše korisnika pokušava da pregleda ovu stranicu.
+Molimo pričekajte trenutak prije nego što ponovno pokušate pristupiti ovoj stranici.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O projektu {{SITENAME}}',
@@ -281,10 +333,6 @@ Posljednji pokušani upit je bio:
"$1"
iz funkcije "$2".
MySQL je vratio grešku "$3: $4".',
-'noconnect' => 'Žao nam je! Wiki ima neke tehničke poteškoće, i ne može da se poveže sa serverom baze.<br />
-$1',
-'nodb' => 'Ne mogu da izaberem bazu podataka $1',
-'cachederror' => 'Ovo je keširana kopija zahtjevane stranice, i možda nije ažurirana.',
'laggedslavemode' => "'''Upozorenje''': Stranica ne mora sadržavati posljednja ažuriranja.",
'readonly' => 'Baza podataka je zaključana',
'enterlockreason' => 'Unesite razlog za zaključavanje, uključujući procjenu vremena otključavanja',
@@ -302,6 +350,8 @@ Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođ
'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
'internalerror' => 'Interna pogreška',
'internalerror_info' => 'Interna greška: $1',
+'fileappenderrorread' => 'Nije se mogao pročitati "$1" tokom dodavanja.',
+'fileappenderror' => 'Ne može se primijeniti "$1" na "$2".',
'filecopyerror' => 'Ne može se kopirati "$1" na "$2".',
'filerenameerror' => 'Ne može se promjeniti ime datoteke "$1" u "$2".',
'filedeleteerror' => 'Ne može se izbrisati datoteka "$1".',
@@ -311,6 +361,8 @@ Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođ
'unexpected' => 'Neočekivana vrijednost: "$1"="$2".',
'formerror' => 'Greška: ne može se poslati formular',
'badarticleerror' => 'Ova akcija ne može biti izvršena na ovoj stranici.',
+'cannotdelete' => 'Ne može se obrisati stranica ili datoteka "$1".
+Moguće je da ju je neko drugi već obrisao.',
'badtitle' => 'Loš naslov',
'badtitletext' => 'Zatražena stranica je bila nevaljana, prazna ili neispravno povezana s među-jezičkim ili inter-wiki naslovom.
Može sadržavati jedno ili više slova koja se ne mogu koristiti u naslovima.',
@@ -346,7 +398,6 @@ Kao razlog je naveden "\'\'$2\'\'".',
'virus-unknownscanner' => 'nepoznati anti-virus program:',
# Login and logout pages
-'logouttitle' => 'Odjavite se',
'logouttext' => "'''Sad ste odjavljeni.'''
Možete nastaviti da koristite {{SITENAME}} anonimno, ili se ponovo [[Special:UserLogin|prijaviti]] kao isti ili kao drugi korisnik.
@@ -354,7 +405,6 @@ Obratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još
'welcomecreation' => '== Dobro došli, $1! ==
Vaš korisnički račun je napravljen.
Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].',
-'loginpagetitle' => 'Prijava korisnika',
'yourname' => 'Korisničko ime:',
'yourpassword' => 'Lozinka/zaporka:',
'yourpasswordagain' => 'Ponovno utipkajte lozinku/zaporku:',
@@ -365,6 +415,7 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
'nav-login-createaccount' => 'Prijavi se / Registruj se',
'loginprompt' => "Morate imati kolačiće ('''cookies''') omogućene da biste se prijavili na {{SITENAME}}.",
'userlogin' => 'Prijavi se / stvori korisnički račun',
+'userloginnocreate' => 'Prijavi se',
'logout' => 'Odjavi me',
'userlogout' => 'Odjava',
'notloggedin' => 'Niste prijavljeni',
@@ -377,30 +428,8 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
'badretype' => 'Lozinke koje ste unijeli se ne poklapaju.',
'userexists' => 'Korisničko ime koje ste unijeli je već u upotrebi.
Molimo Vas da izaberete drugo ime.',
-'youremail' => 'E-mail:',
-'username' => 'Korisničko ime:',
-'uid' => 'Korisnički ID:',
-'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
-'yourrealname' => 'Vaše pravo ime:',
-'yourlanguage' => 'Jezik:',
-'yournick' => 'Nadimak (za potpise):',
-'badsig' => 'Loš sirovi potpis.
-Provjerite HTML tagove.',
-'badsiglength' => 'Vaš potpis je predug.
-Mora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
-'yourgender' => 'Spol:',
-'gender-unknown' => 'neodređen',
-'gender-male' => 'Muški',
-'gender-female' => 'Ženski',
-'prefs-help-gender' => 'Opcionalno: koristi se za ispravke gramatičkog roda u porukama softvera.
-Ova informacija će biti javna.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Pravo ime nije obavezno.
-Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
'loginerror' => 'Greška pri prijavljivanju',
-'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.
-Također omogućuje drugim korisnicima da vas kontaktiraju preko Vaše korisničke stranice ili stranice za razgovor bez otkrivanja Vašeg identiteta.',
-'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
+'createaccounterror' => 'Ne može se napraviti račun: $1',
'nocookiesnew' => "Korisnički nalog je napravljen, ali niste prijavljeni.
{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.
Vi ste onemogućili kolačiće na Vašem računaru.
@@ -417,12 +446,13 @@ Provjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnič
'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>".
Provjerite da li ste dobro ukucali.',
'nouserspecified' => 'Morate izabrati korisničko ime.',
+'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dozvoljena.',
'wrongpassword' => 'Unijeli ste neispravnu šifru.
Molimo Vas da pokušate ponovno.',
'wrongpasswordempty' => 'Unesena šifra je bila prazna.
Molimo Vas da pokušate ponovno.',
-'passwordtooshort' => 'Vaša lozinka je prekratka.
-Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znakova}} i mora se razlikovati od Vašeg korisničkog imena.',
+'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znakova}}.',
+'password-name-match' => 'Vaša lozinka mora biti različita od Vašeg korisničkog imena.',
'mailmypassword' => 'Pošalji mi novu lozinku putem E-maila',
'passwordremindertitle' => 'Nova privremena lozinka za {{SITENAME}}',
'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}} ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
@@ -430,6 +460,7 @@ Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
Ako je neko drugi napravio ovaj zahtjev ili ako ste se sjetili vaše šifre i ne želite više da je promjenite, možete da ignorišete ovu poruku i da nastavite koristeći vašu staru šifru.',
'noemail' => 'Ne postoji adresa e-maila za korisnika "$1".',
+'noemailcreate' => 'Morate da navedete valjanu e-mail adresu',
'passwordsent' => 'Nova šifra je poslata na e-mail adresu korisnika "$1".
Molimo Vas da se prijavite pošto je primite.',
'blocked-mailpassword' => 'Da bi se spriječila nedozvoljena akcija, Vašoj IP adresi je onemogućeno uređivanje stranica kao i mogućnost zahtijevanje nove šifre.',
@@ -454,9 +485,11 @@ Molimo vas da unesete ispravnu adresu ili ostavite prazno polje.',
Trebali biste se prijaviti i promjeniti šifru.
Možete ignorisati ovu poruku, ako je korisnički račun napravljen greškom.',
+'usernamehasherror' => 'Korisničko ime ne može sadržavati haš znakove',
'login-throttled' => 'Previše puta ste se pokušali prijaviti.
Molimo Vas da sačekate prije nego što pokušate ponovo.',
'loginlanguagelabel' => 'Jezik: $1',
+'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
# Password reset dialog
'resetpass' => 'Promijeni korisničku šifru',
@@ -468,18 +501,13 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
'retypenew' => 'Ukucajte ponovo novu šifru:',
'resetpass_submit' => 'Odredi lozinku i prijavi se',
'resetpass_success' => 'Vaša šifra je uspiješno promjenjena! Prijava u toku...',
-'resetpass_bad_temporary' => 'Nevažeća privremena šifra.
-Možda ste već promjenili šifru ili ste zatražili novu privremenu šifru.',
'resetpass_forbidden' => 'Šifre ne mogu biti promjenjene',
'resetpass-no-info' => 'Morate biti prijavljeni da bi ste pristupili ovoj stranici direktno.',
'resetpass-submit-loggedin' => 'Promijeni lozinku',
+'resetpass-submit-cancel' => 'Odustani',
'resetpass-wrong-oldpass' => 'Privremena ili trenutna lozinka nije valjana.
Možda ste već uspješno promijenili Vašu lozinku ili ste tražili novu privremenu lozinku.',
'resetpass-temp-password' => 'Privremena lozinka:',
-'resetpass-log' => 'Registar resetiranja lozinki',
-'resetpass-logtext' => 'Ispod je registar korisnika čije je lozinke resetirao administrator.',
-'resetpass-logentry' => 'promijenjena lozinka za {{GENDER:$1|korisnika|korisnicu}} $1',
-'resetpass-comment' => 'Razlog za resetiranje lozinke:',
# Edit page toolbar
'bold_sample' => 'Podebljan tekst',
@@ -555,7 +583,6 @@ Molimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.',
'blockededitsource' => "Sadržaj '''vaših izmjena''' na '''$1''' je prikazan ispod:",
'whitelistedittitle' => 'Za uređivanje je obavezna prijava',
'whitelistedittext' => 'Da bi ste uređivali stranice, morate se $1.',
-'confirmedittitle' => 'Potvrda e-maila je potrebna za izmjene',
'confirmedittext' => 'Morate potvrditi Vašu e-mail adresu prije nego počnete mijenjati stranice.
Molimo da postavite i verifikujete Vašu e-mail adresu putem Vaših [[Special:Preferences|korisničkih opcija]].',
'nosuchsectiontitle' => 'Ne mogu pronaći sekciju',
@@ -580,14 +607,20 @@ Ako ste anonimni korisnik i mislite da su vam upućene nebitne primjedbe, molimo
Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] u drugim stranicama,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretraživati srodne registre],
ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
+'noarticletext-nopermission' => 'Trenutno nema teksta na ovoj stranici.
+Možete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane registre]</span>.',
'userpage-userdoesnotexist' => 'Korisnički račun "$1" nije registrovan.
Molimo provjerite da li želite napraviti/izmijeniti ovu stranicu.',
+'userpage-userdoesnotexist-view' => 'Korisnički račun "$1" nije registrovan.',
+'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokiran.
+Posljednje stavke evidencije blokiranja možete pogledati ispod:',
'clearyourcache' => "'''Pažnja: Nakon što snimite izmjene, morate \"osvježiti\" keš memoriju vašeg pretraživača da bi ste vidjeli nova podešenja.'''
'''Mozilla / Firefox / Safari:''' držite ''Shift'' tipku i kliknite na ''Reload'' dugme ili ''Ctrl-R'' ili ''Ctrl-F5'' (''Command-R'' na Macintoshu);
'''Konqueror:''' klikni na ''Reload'' ili pritisnite dugme ''F5'';
'''Opera:''' očistite \"keš\" preko izbornika ''Tools → Preferences'';
'''Internet Explorer:''' držite tipku ''Ctrl'' i kliknite na ''Refresh'' ili pritisnite ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Pažnja:''' Koristite 'Prikaži izgled' dugme da testirate svoj novi CSS/JS prije nego što snimite.",
+'usercssyoucanpreview' => "'''Sugestija:''' Koristite 'Prikaži izgled' dugme da testirate svoj novi CSS prije nego što ga snimite.",
+'userjsyoucanpreview' => "'''Sugestija:''' Koristite 'Prikaži izgled' dugme da testirate svoj novi JS prije nego što ga snimite.",
'usercsspreview' => "'''Zapamtite ovo je samo izgled Vašeg CSS-a.'''
'''Još uvijek nije snimljen!'''",
'userjspreview' => "'''Zapamite da je ovo samo test/pretpregled Vaše JavaScript-e.'''
@@ -642,12 +675,16 @@ Stranica ne može biti spremljena.'''",
Možda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.'''
Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
-'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''",
-'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.",
+'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''
+Posljednja stavka u registru je prikazana ispod kao referenca:",
+'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.
+Posljednja stavka registra je prikazana ispod kao referenca:",
'cascadeprotectedwarning' => "'''Upozorenje:''' Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, lančano povezane, zaštićene stranice}}:",
-'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''",
-'templatesused' => 'Šabloni korišteni na ovoj stranici:',
-'templatesusedpreview' => 'Šabloni korišteni u ovom pretpregledu:',
+'titleprotectedwarning' => "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''
+Posljednja stavka registra je prikazana ispod kao referenca:",
+'templatesused' => '{{PLURAL:$1|Šablon|Šabloni}} koji su upotrebljeni na ovoj stranici:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablon|Šabloni}} prikazani u ovom pregledu:',
+'templatesusedsection' => '{{PLURAL:$1|Šablon|Šabloni}} korišteni u ovoj sekciji:',
'template-protected' => '(zaštićeno)',
'template-semiprotected' => '(polu-zaštićeno)',
'hiddencategories' => 'Ova stranica pripada {{PLURAL:$1|1 skrivenoj kategoriji|$1 skrivenim kategorijama}}:',
@@ -655,15 +692,18 @@ Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
'nocreatetext' => '{{SITENAME}} je ograničio/la postavljanje novih stranica.
Možete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti korisnički račun]].',
'nocreate-loggedin' => 'Nemate dopuštenje da kreirate nove stranice.',
+'sectioneditnotsupported-title' => 'Uređivanje sekcije nije podržano',
+'sectioneditnotsupported-text' => 'Uređivanje sekcije nije podržano na ovoj stranici.',
'permissionserrors' => 'Greške pri odobrenju',
'permissionserrorstext' => 'Nemate dopuštenje da to uradite, iz {{PLURAL:$1|slijedećeg razloga|slijedećih razloga}}:',
'permissionserrorstext-withaction' => 'Nemate dozvolu za $2, zbog {{PLURAL:$1|sljedećeg|sljedećih}} razloga:',
-'recreate-deleted-warn' => "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''
+'recreate-moveddeleted-warn' => "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''
-Razmotrite je li nastavljanje uređivanja ove stranice u skladu s pravilima. Za vašu informaciju slijedi evidencija brisanja s obrazloženjem za prethodno brisanje:",
-'deleted-notice' => 'Ova stranica je obrisana.
-Registar brisanja za stranicu je dolje naveden radi referenci.',
-'deletelog-fulllog' => 'Vidi potpunu evidenciju',
+Razmotrite da li je nastavljanje uređivanja ove stranice u skladu s pravilima.
+Ovdje je naveden registar brisanja i premještanja s obrazloženjem:",
+'moveddeleted-notice' => 'Ova stranica je obrisana.
+Registar brisanja i premještanja stranice je prikazan ispod kao referenca.',
+'log-fulllog' => 'Vidi potpuni registar',
'edit-hook-aborted' => 'Izmjena je poništena putem interfejsa.
Nije ponuđeno nikakvo objašnjenje.',
'edit-gone-missing' => 'Stranica se nije mogla osvježiti.
@@ -686,6 +726,7 @@ Ovakvi argumenti se trebaju izbjegavati.",
'post-expand-template-argument-category' => 'Stranice koje sadrže nedostajuće argumente u šablonu',
'parser-template-loop-warning' => 'Otkrivena kružna greška u šablonu: [[$1]]',
'parser-template-recursion-depth-warning' => 'Dubina uključivanja šablona prekoračena ($1)',
+'language-converter-depth-warning' => 'Prekoračena granica dubine jezičkog pretvarača ($1)',
# "Undo" feature
'undo-success' => 'Izmjena se može vratiti.
@@ -706,6 +747,7 @@ Razlog koji je naveo $3 je ''$2''",
'currentrev' => 'Trenutna revizija',
'currentrev-asof' => 'Trenutna revizija na dan $1',
'revisionasof' => 'Izmjena od $1',
+'revision-info' => 'Trenutna revizija na dan $1',
'previousrevision' => '← Starija revizija',
'nextrevision' => 'Novija izmjena →',
'currentrevisionlink' => 'Trenutna verzija',
@@ -718,62 +760,124 @@ Razlog koji je naveo $3 je ''$2''",
Objašnjenje: '''({{int:cur}})''' = razlika sa trenutnom verzijom,
'''({{int:last}})''' = razlika sa prethodnom verzijom, '''{{int:minoreditletter}}''' = manja izmjena.",
'history-fieldset-title' => 'Pretraga historije',
+'history-show-deleted' => 'Samo obrisane',
'histfirst' => 'Najstarije',
'histlast' => 'Najnovije',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajta|$1 bajtova}})',
'historyempty' => '(prazno)',
# Revision feed
-'history-feed-title' => 'Historija izmjena',
-'history-feed-description' => 'Historija promjena ove stranice na wikiju',
-'history-feed-empty' => 'Tražena stranica ne postoji.
+'history-feed-title' => 'Historija izmjena',
+'history-feed-description' => 'Historija promjena ove stranice na wikiju',
+'history-feed-item-nocomment' => '$1 u $2',
+'history-feed-empty' => 'Tražena stranica ne postoji.
Moguće da je izbrisana sa wikija, ili preimenovana.
Pokušajte [[Special:Search|pretražiti wiki]] za slične stranice.',
# Revision deletion
-'rev-deleted-comment' => '(komentar uklonjen)',
-'rev-deleted-user' => '(korisničko ime uklonjeno)',
-'rev-deleted-event' => '(stavka registra obrisana)',
-'rev-delundel' => 'pokaži/sakrij',
-'revisiondelete' => 'Obriši/vrati revizije',
-'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
-'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija,
+'rev-deleted-comment' => '(komentar uklonjen)',
+'rev-deleted-user' => '(korisničko ime uklonjeno)',
+'rev-deleted-event' => '(stavka registra obrisana)',
+'rev-deleted-user-contribs' => '[korisničko ime ili IP adresa uklonjeni - izmjena sakrivena u spisku doprinosa]',
+'rev-deleted-text-permission' => "Revizija ove stranice je '''obrisana'''.
+Detalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
+'rev-deleted-text-unhide' => "Revizija ove stranice je '''obrisana'''.
+Detalje o tome možer vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
+Kao administrator još je uvijek možete [$1 vidjeti ovu reviziju] ako želite.",
+'rev-suppressed-text-unhide' => "Ova revizija stranice je '''uklonjena'''.
+Možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].
+Kao administrator Vi je i dalje možete [$1 vidjeti ovu reviziju] ako želite.",
+'rev-deleted-text-view' => "Revizija ove stranice je '''obrisana'''.
+Kao administrator, Vi je možete vidjeti; detalji o tome se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
+'rev-suppressed-text-view' => "Ova revizija stranice je '''uklonjena'''.
+Kao administrator Vi je možete vidjeti; možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].",
+'rev-deleted-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.
+Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registrima brisanja].",
+'rev-suppressed-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.",
+'rev-deleted-unhide-diff' => "Jedna od revizija u ovom pregledu razlika je '''obrisana'''.
+Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
+Kao administrator Vi još uvijek možete [$1 vidjeti ove razlike] ako želite da nastavite.",
+'rev-suppressed-unhide-diff' => "Jedna od revizija ove razlike je '''uklonjena'''.
+Postoji mnogo detalja u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].
+Kao administrator i dalje možete [$1 vidjeti ove razlike] ako želite da nastavite.",
+'rev-deleted-diff-view' => "Jedna od revizija u ovoj razlici je '''obrisana'''.
+Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
+'rev-suppressed-diff-view' => "Jedna od revizija u ovoj razlici je '''sakrivena'''.
+Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru sakrivanja].",
+'rev-delundel' => 'pokaži/sakrij',
+'rev-showdeleted' => 'Pokaži',
+'revisiondelete' => 'Obriši/vrati revizije',
+'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
+'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija,
ili ta revizija ne postoji, ili pokušavate sakriti trenutnu reviziju.',
-'revdelete-nologtype-title' => 'Nije naveden tip registra',
-'revdelete-nologtype-text' => 'Niste odredili tip registra za izvršavanje ove akcije na njemu.',
-'revdelete-nologid-title' => 'Nevaljana stavka registra',
-'revdelete-nologid-text' => 'Niste odredili ciljnu stavku registra za izvršavanje ove funkcije ili navedena stavka ne postoji.',
-'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} od [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Označena stavka registra|Označene stavke registra}}:'''",
-'revdelete-suppress-text' => "Ograničenja bi trebala biti korištena '''samo''' u sljedećim slučajevima:
+'revdelete-nologtype-title' => 'Nije naveden tip registra',
+'revdelete-nologtype-text' => 'Niste odredili tip registra za izvršavanje ove akcije na njemu.',
+'revdelete-nologid-title' => 'Nevaljana stavka registra',
+'revdelete-nologid-text' => 'Niste odredili ciljnu stavku registra za izvršavanje ove funkcije ili navedena stavka ne postoji.',
+'revdelete-no-file' => 'Navedena datoteka ne postoji.',
+'revdelete-show-file-confirm' => 'Da li ste sigurni da želite pogledati obrisanu reviziju datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} od [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Označena stavka registra|Označene stavke registra}}:'''",
+'revdelete-text' => "'''Obrisane revizije i događaji će i dalje biti vidljivi u historiji stranice i registrima, ali dijelovi njenog sadržaja neće biti dostupni javnosti.'''
+Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakrivenom sadržaju i mogu ga ponovo vratiti kroz ovaj interfejs, osim ako nisu postavljena dodatna ograničenja.",
+'revdelete-confirm' => 'Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
+'revdelete-suppress-text' => "Ograničenja bi trebala biti korištena '''samo''' u sljedećim slučajevima:
* Osjetljive korisničke informacije
*: ''kućne adrese, brojevi telefona, brojevi bankovnih kartica itd.''",
-'revdelete-legend' => 'Postavi ograničenja vidljivosti',
-'revdelete-hide-text' => 'Sakrij tekst revizije',
-'revdelete-hide-name' => 'Sakrij akciju i cilj',
-'revdelete-hide-comment' => 'Sakrij izmjene komentara',
-'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
-'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
-'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
-'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
-'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
-'revdelete-log' => 'Razlog:',
-'revdelete-logentry' => 'promijenjena vidljivost revizije [[$1]]',
-'logdelete-logentry' => 'promijenjena vidljivost događaja [[$1]]',
-'revdelete-success' => "'''Vidljivost revizije uspješno postavljena.'''",
-'logdelete-success' => "'''Vidljivost evidencije uspješno postavljena.'''",
-'revdel-restore' => 'promijeni dostupnost',
-'pagehist' => 'Historija stranice',
-'deletedhist' => 'Izbrisana historija',
-'revdelete-content' => 'sadržaj',
-'revdelete-summary' => 'sažetak izmjene',
-'revdelete-uname' => 'korisničko ime',
-'revdelete-restricted' => 'primijenjena ograničenja za administratore',
-'revdelete-unrestricted' => 'uklonjena ograničenja za administratore',
-'revdelete-hid' => 'sakrij $1',
-'revdelete-unhid' => 'otkrij $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene|izmjena}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-legend' => 'Postavi ograničenja vidljivosti',
+'revdelete-hide-text' => 'Sakrij tekst revizije',
+'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
+'revdelete-hide-name' => 'Sakrij akciju i cilj',
+'revdelete-hide-comment' => 'Sakrij izmjene komentara',
+'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
+'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
+'revdelete-radio-same' => '(ne mijenjaj)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
+'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
+'revdelete-log' => 'Razlog:',
+'revdelete-submit' => 'Primijeni na odabrane {{PLURAL:$1|izmjena|izmjene}}',
+'revdelete-logentry' => 'promijenjena vidljivost revizije [[$1]]',
+'logdelete-logentry' => 'promijenjena vidljivost događaja [[$1]]',
+'revdelete-success' => "'''Vidljivost revizije uspješno postavljena.'''",
+'revdelete-failure' => "'''Zapisnik vidljivosti nije mogao biti postavljen:'''
+$1",
+'logdelete-success' => "'''Vidljivost evidencije uspješno postavljena.'''",
+'logdelete-failure' => "'''Registar vidljivosti nije mogao biti postavljen:'''
+$1",
+'revdel-restore' => 'promijeni dostupnost',
+'pagehist' => 'Historija stranice',
+'deletedhist' => 'Izbrisana historija',
+'revdelete-content' => 'sadržaj',
+'revdelete-summary' => 'sažetak izmjene',
+'revdelete-uname' => 'korisničko ime',
+'revdelete-restricted' => 'primijenjena ograničenja za administratore',
+'revdelete-unrestricted' => 'uklonjena ograničenja za administratore',
+'revdelete-hid' => 'sakrij $1',
+'revdelete-unhid' => 'otkrij $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|izmjenu|izmjene|izmjena}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-hide-current' => 'Greška pri sakrivanju stavke od $2, $1: ovo je trenutna revizija.
+Ne može biti sakrivena.',
+'revdelete-show-no-access' => 'Greška pri prikazivanju stavke od $2, $1: ova stavka je označena kao "zaštićena".
+Nemate pristup do ove stavke.',
+'revdelete-modify-no-access' => 'Greška pri izmjeni stavke od $2, $1: ova stavka je označena kao "zaštićena".
+Nemate pristup ovoj stavci.',
+'revdelete-modify-missing' => 'Greška pri mijenjanju stavke ID $1: nedostaje u bazi podataka!',
+'revdelete-no-change' => "'''Upozorenje:''' stavka od $2, $1 već posjeduje zatražene postavke vidljivosti.",
+'revdelete-concurrent-change' => 'Greška pri mijenjanju stavke od $2, $1: njen status je izmijenjen od strane nekog drugog dok ste je pokušavali mijenjati.
+Molimo provjerite zapise.',
+'revdelete-only-restricted' => 'Greška pri sakrivanju stavke od dana $2, $1: ne možete ukloniti stavke od pregledavanja administratora bez da odaberete neku od drugih opcija za uklanjanje.',
+'revdelete-reason-dropdown' => '*Uobičajeni razlozi brisanja
+** Kršenje autorskih prava
+** Neadekvatni lični podaci
+** Potencijalno klevetničke informacije',
+'revdelete-otherreason' => 'Ostali/dodatni razlog:',
+'revdelete-reasonotherlist' => 'Ostali razlozi',
+'revdelete-edit-reasonlist' => 'Uredi razloge brisanja',
+'revdelete-offender' => 'Autor revizije:',
# Suppression log
'suppressionlog' => 'Registri sakrivanja',
@@ -810,12 +914,13 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
'mergelogpagetext' => 'Ispod je spisak nedavnih spajanja historija stranica.',
# Diffs
-'history-title' => 'Historija izmjena stranice "$1"',
-'difference' => '(Razlika između revizija)',
-'lineno' => 'Linija $1:',
-'compareselectedversions' => 'Uporedite označene verzije',
-'editundo' => 'ukloni ovu izmjenu',
-'diff-multi' => '({{plural:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}})',
+'history-title' => 'Historija izmjena stranice "$1"',
+'difference' => '(Razlika između revizija)',
+'lineno' => 'Linija $1:',
+'compareselectedversions' => 'Uporedite označene verzije',
+'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
+'editundo' => 'ukloni ovu izmjenu',
+'diff-multi' => '({{plural:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}})',
# Search results
'searchresults' => 'Rezultati pretrage',
@@ -823,28 +928,23 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, v. [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
'searchsubtitleinvalid' => "Tražili ste '''$1'''",
-'noexactmatch' => "'''Ne postoji stranica sa naslovom \"\$1\".'''
-Možete [[:\$1|stvoriti ovu stranicu]].",
-'noexactmatch-nocreate' => "'''Ne postoji stranica sa naslovom \"\$1\".'''",
'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
'titlematches' => 'Naslov članka odgovara',
'notitlematches' => 'Nijedan naslov stranice ne odgovara',
'textmatches' => 'Tekst stranice odgovara',
'notextmatches' => 'Tekst stranice ne odgovara',
-'prevn' => 'prethodna $1',
-'nextn' => 'sljedećih $1',
+'prevn' => 'prethodna {{PLURAL:$1|$1}}',
+'nextn' => 'sljedećih {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}',
'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
-'viewprevnext' => 'Pogledaj ($1) ($2) ($3)',
+'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Opcije pretrage',
'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
'searchprofile-articles' => 'Stranice sadržaja',
-'searchprofile-articles-and-proj' => 'Stranice sadržaja i projekata',
-'searchprofile-project' => 'Stranice projekta',
-'searchprofile-images' => 'Datoteke',
+'searchprofile-images' => 'Multimedija',
'searchprofile-everything' => 'Sve',
'searchprofile-advanced' => 'Napredno',
'searchprofile-articles-tooltip' => 'Pretraga u $1',
@@ -864,11 +964,12 @@ Možete [[:\$1|stvoriti ovu stranicu]].",
'search-mwsuggest-disabled' => 'bez sugestija',
'search-relatedarticle' => 'Povezano',
'mwsuggest-disable' => 'Onemogući AJAX prijedloge',
+'searcheverything-enable' => 'Pretraga u svim imenskim prostorima',
'searchrelated' => 'povezano',
'searchall' => 'sve',
'showingresults' => "Dole {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
-'showingresultstotal' => "Ispod {{PLURAL:$4|je prikazan rezultat '''$1''' od '''$3'''|su prikazani rezultati '''$1 - $2''' od ukupno '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
'nonefound' => "'''Napomene''': Samo neki imenski prostori se pretražuju po početnim postavkama.
Pokušajte u svoju pretragu staviti ''all:'' da se pretražuje cjelokupan sadržaj (uključujući stranice za razgovor, šablone/predloške itd.), ili koristite imenski prostor kao prefiks.",
'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
@@ -877,74 +978,139 @@ Pokušajte u svoju pretragu staviti ''all:'' da se pretražuje cjelokupan sadrž
'powersearch-ns' => 'Pretraga u imenskim prostorima:',
'powersearch-redir' => 'Pokaži spisak preusmjerenja',
'powersearch-field' => 'Traži',
+'powersearch-togglelabel' => 'Označi:',
+'powersearch-toggleall' => 'Sve',
+'powersearch-togglenone' => 'Ništa',
'search-external' => 'Vanjska/spoljna pretraga',
'searchdisabled' => 'Pretraga teksta na ovoj Wiki je trenutno onemogućena.
U međuvremenu možete pretraživati preko Googlea.
Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
-# Preferences page
-'preferences' => 'Postavke',
-'mypreferences' => 'Moje postavke',
-'prefs-edits' => 'Broj izmjena:',
-'prefsnologin' => 'Niste prijavljeni',
+# Quickbar
'qbsettings' => 'Podešavanja brze palete',
'qbsettings-none' => 'Nikakva',
'qbsettings-fixedleft' => 'Fiksirana lijevo',
'qbsettings-fixedright' => 'Fiksirana desno',
'qbsettings-floatingleft' => 'Plutajuća lijevo',
'qbsettings-floatingright' => 'Plutajuća desno',
-'changepassword' => 'Promijeni lozinku',
-'skin-preview' => 'Pretpregled',
-'datedefault' => 'Bez preferenci',
-'prefs-personal' => 'Korisnički profil',
-'prefs-rc' => 'Podešavanje nedavnih izmjena',
-'prefs-watchlist' => 'Praćene stranice',
-'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
-'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
-'prefs-misc' => 'Ostala podešavanja',
-'prefs-resetpass' => 'Promijeni lozinku',
-'saveprefs' => 'Snimi postavke',
-'resetprefs' => 'Poništi nesnimljene promjene postavki',
-'restoreprefs' => 'Vrati sve pretpostavljene postavke',
-'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
-'rows' => 'Redova:',
-'columns' => 'Kolona:',
-'searchresultshead' => 'Postavke rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
-'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
-'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
-'savedprefs' => 'Vaša postavke su snimljene.',
-'timezonelegend' => 'Vremenska zona:',
-'localtime' => 'Lokalno vrijeme:',
-'allowemail' => 'Dozvoli e-mail od ostalih korisnika',
-'prefs-searchoptions' => 'Opcije pretrage',
-'prefs-namespaces' => 'Imenski prostori',
-'default' => 'standardno',
-'prefs-custom-css' => 'Prilagođeni CSS',
-'prefs-custom-js' => 'Prilagođeni JS',
+
+# Preferences page
+'preferences' => 'Postavke',
+'mypreferences' => 'Moje postavke',
+'prefs-edits' => 'Broj izmjena:',
+'prefsnologin' => 'Niste prijavljeni',
+'prefsnologintext' => 'Da biste mogli podešavati korisničke postavke, morate <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} biti prijavljeni]</span>.',
+'changepassword' => 'Promijeni lozinku',
+'prefs-skin' => 'Izgled (skin)',
+'skin-preview' => 'Pretpregled',
+'prefs-math' => 'Prikazivanje matematike',
+'datedefault' => 'Bez preferenci',
+'prefs-datetime' => 'Datum i vrijeme',
+'prefs-personal' => 'Korisnički profil',
+'prefs-rc' => 'Podešavanje nedavnih izmjena',
+'prefs-watchlist' => 'Praćene stranice',
+'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
+'prefs-watchlist-days-max' => '(najviše 7 dana)',
+'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
+'prefs-watchlist-edits-max' => '(najveći broj: 1000)',
+'prefs-watchlist-token' => 'Token spiska za praćenje:',
+'prefs-misc' => 'Ostala podešavanja',
+'prefs-resetpass' => 'Promijeni lozinku',
+'prefs-email' => 'E-mail opcije',
+'prefs-rendering' => 'Izgled',
+'saveprefs' => 'Snimi postavke',
+'resetprefs' => 'Poništi nesnimljene promjene postavki',
+'restoreprefs' => 'Vrati sve pretpostavljene postavke',
+'prefs-editing' => 'Uređivanje',
+'prefs-edit-boxsize' => 'Veličina prozora za uređivanje.',
+'rows' => 'Redova:',
+'columns' => 'Kolona:',
+'searchresultshead' => 'Postavke rezultata pretrage',
+'resultsperpage' => 'Pogodaka po stranici:',
+'contextlines' => 'Linija po pogotku:',
+'contextchars' => 'Karaktera konteksta po liniji:',
+'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
+'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
+'recentchangesdays-max' => '(najviše $1 {{PLURAL:$1|dan|dana}})',
+'recentchangescount' => 'Broj uređivanja za prikaz po pretpostavkama:',
+'prefs-help-recentchangescount' => 'Ovo uključuje nedavne izmjene, historije stranice i registre.',
+'prefs-help-watchlist-token' => 'Popunjavanjem ovog polja tajnim ključem će generisati RSS feed za Vaš spisak praćenja.
+Svako ko zna ključ u ovom polju će biti u mogućnosti da pročita Vaš spisak praćenja, tako da trebate izabrati sigurnu vrijednost.
+Ovdje su navedene neke nasumično odabrane vrijednosti koje možete koristiti: $1',
+'savedprefs' => 'Vaša postavke su snimljene.',
+'timezonelegend' => 'Vremenska zona:',
+'localtime' => 'Lokalno vrijeme:',
+'allowemail' => 'Dozvoli e-mail od ostalih korisnika',
+'prefs-searchoptions' => 'Opcije pretrage',
+'prefs-namespaces' => 'Imenski prostori',
+'defaultns' => 'Inače tražite u ovim imenskim prostorima:',
+'default' => 'standardno',
+'prefs-files' => 'Datoteke',
+'prefs-custom-css' => 'Prilagođeni CSS',
+'prefs-custom-js' => 'Prilagođeni JS',
+'prefs-reset-intro' => 'Možete koristiti ovu stranicu da poništite Vaše postavke na ovom sajtu na pretpostavljene vrijednosti.
+Ovo se ne može vratiti unazad.',
+'prefs-emailconfirm-label' => 'E-mail potvrda:',
+'prefs-textboxsize' => 'Veličina prozora za uređivanje',
+'youremail' => 'E-mail:',
+'username' => 'Korisničko ime:',
+'uid' => 'Korisnički ID:',
+'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
+'prefs-registration' => 'Vrijeme registracije:',
+'yourrealname' => 'Vaše pravo ime:',
+'yourlanguage' => 'Jezik:',
+'yournick' => 'Nadimak (za potpise):',
+'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
+'badsig' => 'Loš sirovi potpis.
+Provjerite HTML tagove.',
+'badsiglength' => 'Vaš potpis je predug.
+Mora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
+'yourgender' => 'Spol:',
+'gender-unknown' => 'neodređen',
+'gender-male' => 'Muški',
+'gender-female' => 'Ženski',
+'prefs-help-gender' => 'Opcionalno: koristi se za ispravke gramatičkog roda u porukama softvera.
+Ova informacija će biti javna.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Pravo ime nije obavezno.
+Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
+'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.
+Također omogućuje drugim korisnicima da vas kontaktiraju preko Vaše korisničke stranice ili stranice za razgovor bez otkrivanja Vašeg identiteta.',
+'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
+'prefs-info' => 'Osnovne informacije',
+'prefs-i18n' => 'Internacionalizacije',
+'prefs-signature' => 'Potpis',
+'prefs-dateformat' => 'Format datuma',
+'prefs-timeoffset' => 'Vremenska razlika',
+'prefs-advancedediting' => 'Napredne opcije',
+'prefs-advancedrc' => 'Napredne opcije',
+'prefs-advancedrendering' => 'Napredne opcije',
+'prefs-advancedsearchoptions' => 'Napredne opcije',
+'prefs-advancedwatchlist' => 'Napredne opcije',
+'prefs-display' => 'Postavke displeja',
+'prefs-diffs' => 'Razlike',
# User rights
-'userrights' => 'Postavke korisničkih prava', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Menadžment korisničkih prava',
-'userrights-user-editname' => 'Unesi korisničko ime:',
-'editusergroup' => 'Uredi korisničke grupe',
-'editinguser' => "Mijenjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Uredi korisničke grupe',
-'saveusergroups' => 'Snimi korisničke grupe',
-'userrights-groupsmember' => 'Član:',
-'userrights-groups-help' => 'Možete promijeniti grupe kojima ovaj korisnik pripada:
+'userrights' => 'Postavke korisničkih prava',
+'userrights-lookup-user' => 'Menadžment korisničkih prava',
+'userrights-user-editname' => 'Unesi korisničko ime:',
+'editusergroup' => 'Uredi korisničke grupe',
+'editinguser' => "Mijenjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Uredi korisničke grupe',
+'saveusergroups' => 'Snimi korisničke grupe',
+'userrights-groupsmember' => 'Član:',
+'userrights-groupsmember-auto' => 'Uključeni član od:',
+'userrights-groups-help' => 'Možete promijeniti grupe kojima ovaj korisnik pripada:
* Označeni kvadratić znači da je korisnik u toj grupi.
* Neoznačen kvadratić znači da korisnik nije u toj grupi.
* Oznaka * (zvjezdica) označava da Vi ne možete izbrisati ovu grupu ako je dodate i obrnutno.',
-'userrights-reason' => 'Razlog:',
-'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
-'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
-'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
-'userrights-changeable-col' => 'Grupe koje možete mijenjati',
-'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
+'userrights-reason' => 'Razlog:',
+'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
+'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
+'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
+'userrights-changeable-col' => 'Grupe koje možete mijenjati',
+'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
# Groups
'group' => 'Grupa:',
@@ -990,6 +1156,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'right-bigdelete' => 'Brisanje stranica sa velikom historijom',
'right-deleterevision' => 'Brisanje i vraćanje određenih revizija stranice',
'right-deletedhistory' => 'Pregled stavki obrisane historije, bez povezanog teksta',
+'right-deletedtext' => 'Pregled obrisanog teksta i izmjena između obrisanih revizija',
'right-browsearchive' => 'Pretraživanje obrisanih stranica',
'right-undelete' => 'Vraćanje obrisanih stranica',
'right-suppressrevision' => 'Pregled i povratak revizija sakrivenih od administratora',
@@ -1003,6 +1170,8 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'right-editprotected' => 'Uređivanje zaštićenih stranica (bez povezanih zaštita)',
'right-editinterface' => 'Uređivanje korisničkog interfejsa',
'right-editusercssjs' => 'Uređivanje CSS i JS datoteka drugih korisnika',
+'right-editusercss' => 'Uređivanje CSS datoteka drugih korisnika',
+'right-edituserjs' => 'Uređivanje Javascript datoteka drugih korisnika',
'right-rollback' => 'Brzo vraćanje izmjena na zadnjeg korisnika koji je uređivao određenu stranicu',
'right-markbotedits' => 'Označavanje vraćenih izmjena kao izmjene bota',
'right-noratelimit' => 'Izbjegavanje ograničenja uzrokovanih brzinom',
@@ -1019,6 +1188,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
'right-reset-passwords' => 'Resetiranje lozinke drugih korisnika',
'right-override-export-depth' => 'Izvoz stranica uključujući povezane stranice do dubine od 5 linkova',
+'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# User rights log
'rightslog' => 'Registar korisničkih prava',
@@ -1035,7 +1205,17 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'recentchanges-legend' => 'Postavke za Nedavne promjene',
'recentchangestext' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
'recentchanges-feed-description' => 'Praćenje nedavnih izmjena na ovom wikiju u ovom feedu.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
+'recentchanges-label-newpage' => 'Ovom izmjenom je stvorena nova stranica',
+'recentchanges-legend-minor' => '$1 - manja izmjena',
+'recentchanges-label-minor' => 'Ovo je manja izmjena',
+'recentchanges-legend-bot' => '$1 - izmjena bota',
+'recentchanges-label-bot' => 'Ovu je izmjenu učinio bot',
+'recentchanges-legend-unpatrolled' => '$1 - nepatrolirana izmjena',
+'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
+'rcnotefrom' => "Ispod {{PLURAL:$1|je '''$1''' izmjena|su '''$1''' zadnje izmjene|su '''$1''' zadnjih izmjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
'rclistfrom' => 'Prikaži nove izmjene počevši od $1',
'rcshowhideminor' => '$1 male izmjene',
'rcshowhidebots' => '$1 botove',
@@ -1060,6 +1240,8 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
# Recent changes linked
'recentchangeslinked' => 'Srodne izmjene',
+'recentchangeslinked-feed' => 'Srodne izmjene',
+'recentchangeslinked-toolbox' => 'Srodne izmjene',
'recentchangeslinked-title' => 'Srodne promjene sa "$1"',
'recentchangeslinked-noresult' => 'Nema izmjena na povezanim stranicama u zadanom periodu.',
'recentchangeslinked-summary' => "Ova posebna stranica prikazuje promjene na povezanim stranicama.
@@ -1075,6 +1257,7 @@ Stranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podeblja
'watchthisupload' => 'Prati ovu stranicu',
# File description page
+'file-anchor-link' => 'Datoteka',
'filehist' => 'Historija datoteke',
'filehist-help' => 'Kliknite na datum/vrijeme da vidite kako je tada izgledala datoteka/fajl.',
'filehist-revert' => 'vrati',
@@ -1087,7 +1270,7 @@ Stranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podeblja
'filehist-comment' => 'Komentar',
'imagelinks' => 'Linkovi datoteke',
'linkstoimage' => '{{PLURAL:$1|Sljedeća stranica koristi|Sljedećih $1 stranica koriste}} ovu sliku:',
-'sharedupload' => 'Ova datoteka/fajl je sa $1 i mogu je koristiti ostali projekti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Ova datoteka/fajl je sa $1 i mogu je koristiti ostali projekti.',
'uploadnewversion-linktext' => 'Postavite novu verziju ove datoteke/fajla',
# File reversion
@@ -1212,7 +1395,6 @@ posljednji kontributor je jedini na ovoj stranici.',
'protectexpiry' => 'Ističe:',
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Upisani vremenski rok je u prošlosti.',
-'protect-unchain' => 'Deblokirajte dozvole premještanja',
'protect-text' => "Ovdje možete gledati i izmijeniti nivo zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Nemate ovlasti za mijenjanje stepena zaštite.
Slijede trenutne postavke stranice '''$1''':",
@@ -1256,6 +1438,7 @@ Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenos
'sp-contributions-newbies' => 'Pokaži doprinose samo novih korisnika',
'sp-contributions-blocklog' => 'registar blokiranja',
+'sp-contributions-talk' => 'Razgovor',
'sp-contributions-search' => 'Pretraga doprinosa',
'sp-contributions-username' => 'IP adresa ili korisničko ime:',
'sp-contributions-submit' => 'Traži',
@@ -1277,7 +1460,7 @@ Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenos
# Block/unblock
'blockip' => 'Blokiraj korisnika',
'ipbreasonotherlist' => 'Ostali razlog/zi',
-'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite',
'ipbotherreason' => 'Ostali/dodatni razlog/zi:',
'ipblocklist' => 'Blokirane IP adrese i korisnička imena',
'blocklink' => 'blokirajte',
@@ -1312,7 +1495,7 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
'move-watch' => 'Prati ovu stranicu',
'movepagebtn' => 'premjestite stranicu',
'pagemovedsub' => 'Premještanje uspjelo',
-'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'',
'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.
Molimo Vas da izaberete drugo ime.',
'talkexists' => "'''Sama stranica je uspješno premještena, ali stranica za razgovor nije mogla biti premještena jer takva već postoji na novom naslovu. Molimo Vas da ih spojite ručno.'''",
@@ -1472,7 +1655,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Širina',
@@ -1601,14 +1784,14 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-unknowndate' => 'Nepoznat datum',
-'exif-orientation-1' => 'Normalna', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontalno preokrenuto', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Rotirano 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikalno preokrenuto', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Rotirano 90° suprotno kazaljke i vertikalno obrnuto', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Rotirano 90° u smjeru kazaljke', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Rotirano 90° u smjeru kazaljke i preokrenuto vertikalno', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Rotirano 90° suprotno od kazaljke', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalna',
+'exif-orientation-2' => 'Horizontalno preokrenuto',
+'exif-orientation-3' => 'Rotirano 180°',
+'exif-orientation-4' => 'Vertikalno preokrenuto',
+'exif-orientation-5' => 'Rotirano 90° suprotno kazaljke i vertikalno obrnuto',
+'exif-orientation-6' => 'Rotirano 90° u smjeru kazaljke',
+'exif-orientation-7' => 'Rotirano 90° u smjeru kazaljke i preokrenuto vertikalno',
+'exif-orientation-8' => 'Rotirano 90° suprotno od kazaljke',
'exif-planarconfiguration-1' => 'grubi format',
'exif-planarconfiguration-2' => 'format u ravni',
@@ -1737,7 +1920,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsmeasuremode-2' => 'dvodimenzionalno mjerenje',
'exif-gpsmeasuremode-3' => 'trodimenzionalno mjerenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometara na sat',
'exif-gpsspeed-m' => 'Milja na sat',
'exif-gpsspeed-n' => 'Čvorova',
@@ -1782,17 +1965,6 @@ Možete sad da se [[Special:UserLogin|prijavite]] i uživate u viki.',
'confirmemail_loggedin' => 'Adresa Vaše e-pošte je potvrđena.',
'confirmemail_error' => 'Nešto je pošlo krivo prilikom snimanja vaše potvrde.',
'confirmemail_subject' => '{{SITENAME}} adresa e-pošte za potvrdu',
-'confirmemail_body' => 'Neko, vjerovatno Vi, je sa IP adrese $1 registrovao račun "$2" sa ovom adresom e-pošte na {{SITENAME}}.
-
-Da potvrdite da ovaj nalog stvarno pripada vama i da aktivirate mogućnost e-pošte na {{SITENAME}}, otvorite ovu poveznicu u vašem pretraživaču:
-
-$3
-
-Ako ovo *niste* vi, pratite ovaj link da prekinete prijavu:
-
-$5
-
-Ovaj kod za potvrdu će isteći u $4.',
'confirmemail_invalidated' => 'Potvrda e-mail adrese otkazana',
'invalidateemail' => 'Odustani od e-mail potvrde',
@@ -1886,7 +2058,7 @@ Također možete [[Special:Watchlist/edit|koristiti standardni uređivač]].',
'duplicate-defaultsort' => '\'\'\'Upozorenje\'\'\': Postavljeni ključ sortiranja "$2" zamjenjuje raniji ključ "$1".',
# Special:Version
-'version' => 'Verzija', # Not used as normal message but as header for the special page itself
+'version' => 'Verzija',
'version-extensions' => 'Instalirana proširenja (ekstenzije)',
'version-specialpages' => 'Posebne stranice',
'version-parserhooks' => 'Kuke parsera',
@@ -1900,7 +2072,7 @@ Također možete [[Special:Watchlist/edit|koristiti standardni uređivač]].',
'version-skin-extension-functions' => 'Funkcije proširenja skina',
'version-hook-name' => 'Naziv kuke',
'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => 'Verzija',
+'version-version' => '(Verzija $1)',
'version-license' => 'Licenca',
'version-software' => 'Instalirani softver',
'version-software-product' => 'Proizvod',
@@ -1981,4 +2153,14 @@ Unesite ime datoteke bez "{{ns:file}}:" prefiksa.',
'dberr-outofdate' => 'Uzmite u obzir da njihovi indeksi našeg sadržaja ne moraju uvijek biti ažurni.',
'dberr-cachederror' => 'Sljedeći tekst je keširana kopija tražene stranice i možda nije potpuno ažurirana.',
+# HTML forms
+'htmlform-invalid-input' => 'Postoje određeni problemi sa Vašim unosom',
+'htmlform-select-badoption' => 'Vrijednost koju ste unijeli nije valjana opcija.',
+'htmlform-int-invalid' => 'Vrijednost koju ste unijeli nije cijeli broj.',
+'htmlform-int-toolow' => 'Vrijednost koju ste unijeli je ispod minimuma od $1',
+'htmlform-int-toohigh' => 'Vrijednost koju ste unijeli je iznad maksimuma od $1',
+'htmlform-submit' => 'Unesi',
+'htmlform-reset' => 'Vrati izmjene',
+'htmlform-selectorother-other' => 'Ostalo',
+
);
diff --git a/languages/messages/MessagesShi.php b/languages/messages/MessagesShi.php
index 4a2611c2..f74d918c 100644
--- a/languages/messages/MessagesShi.php
+++ b/languages/messages/MessagesShi.php
@@ -90,10 +90,18 @@ $messages = array(
'hidden-categories' => '{{PLURAL:$1|taggayt igdln|taggayin gdlnin}}',
'listingcontinuesabbrev' => 'Aḍfar',
-'about' => 'F',
-'article' => 'Mayllan ɣ tasna',
-'newwindow' => 'Murzemt ɣ tasatmt tamaynut',
-'cancel' => 'ḥiyyd',
+'about' => 'F',
+'article' => 'Mayllan ɣ tasna',
+'newwindow' => 'Murzemt ɣ tasatmt tamaynut',
+'cancel' => 'ḥiyyd',
+'moredotdotdot' => 'Uggar...',
+'mypage' => 'Tasnat inu',
+'mytalk' => 'Amsgdal inu',
+'anontalk' => 'Amsgdal i w-ansa yad',
+'navigation' => 'Tunigin',
+'and' => '&#32; d',
+
+# Cologne Blue skin
'qbfind' => 'Af',
'qbbrowse' => 'Cabba',
'qbedit' => 'Sbadl',
@@ -101,15 +109,34 @@ $messages = array(
'qbpageinfo' => 'Context',
'qbmyoptions' => 'Tisnatin inu',
'qbspecialpages' => 'Tisnatin timzlay',
-'moredotdotdot' => 'Uggar...',
-'mypage' => 'Tasnat inu',
-'mytalk' => 'Amsgdal inu',
-'anontalk' => 'Amsgdal i w-ansa yad',
-'navigation' => 'Tunigin',
-'and' => '&#32; d',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Isqsitn li bdda tsutulnin',
+'faqpage' => 'Project: Isqqsit li bdda',
+
+# Vector skin
+'vector-action-addsection' => 'Zayd amli',
+'vector-action-delete' => 'Ḥiyd',
+'vector-action-move' => 'Smmatti',
+'vector-action-protect' => 'Ḥbu',
+'vector-action-undelete' => 'Rard may mayḥiydn',
+'vector-action-unprotect' => 'Ḥiyd aḥbu',
+'vector-namespace-category' => 'Taggayt',
+'vector-namespace-help' => 'Tasnat n w-aws',
+'vector-namespace-image' => 'Asdaw',
+'vector-namespace-main' => 'Tasna',
+'vector-namespace-media' => 'Tasnat ntuzzumt',
+'vector-namespace-mediawiki' => 'Tabrat',
+'vector-namespace-project' => 'Tasnat n tuwuri',
+'vector-namespace-special' => 'Tsnat timẓlit',
+'vector-namespace-talk' => 'Amsgdal',
+'vector-namespace-template' => 'Talɣa',
+'vector-namespace-user' => 'Tasnat user',
+'vector-view-create' => 'Skert',
+'vector-view-edit' => 'Ara',
+'vector-view-history' => 'Mel amzruy',
+'vector-view-view' => 'ɣr',
+'vector-view-viewsource' => 'Ẓr asagm',
+'actions' => 'Imskarn',
+'namespaces' => 'Ismawn n tɣula',
'errorpagetitle' => 'Laffut',
'returnto' => 'Urri s $1.',
@@ -159,12 +186,15 @@ $messages = array(
'otherlanguages' => 'S tutlayin yaḍnin',
'redirectedfrom' => '(Tmmuttid z $1)',
'redirectpagesub' => 'Tasna n-usmmattay',
-'lastmodifiedat' => 'Imbddeln imggura n tasna yad z $1, s $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Imbddeln imggura n tasna yad z $1, s $2.',
'viewcount' => 'Tmmurzm tasna yad {{PLURAL:$1|yat twalt|$1 mnnawt twal}}.',
'protectedpage' => 'Tasnayat iqn ugdal nes.',
'jumpto' => 'Ftu s:',
'jumptonavigation' => 'Tunigen',
'jumptosearch' => 'Acnubc',
+'view-pool-error' => 'Surf, iqddacn žayn ɣilad. mnnaw midn yaḍnin ay siggiln tasna yad. Qqel imik fad addaɣ talst at tarmt at lkmt tasna yad
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'F {{SITENAME}}',
@@ -177,8 +207,6 @@ $messages = array(
'disclaimerpage' => 'Project: Ur illa maddar illa ssuq',
'edithelp' => 'Aws ɣ tirra',
'edithelppage' => 'Help:Imaratn',
-'faq' => 'Isqsitn li bdda tsutulnin',
-'faqpage' => 'Project: Isqqsit li bdda',
'helppage' => 'Help:Mayllan',
'mainpage' => 'Tasana tamzwarut',
'mainpage-description' => 'Tasna tamzwarut',
@@ -255,7 +283,6 @@ May igguran ittu isigal ɣ mayad igat.
<blockquote><tt>$1</tt></blockquote>
S ussiglad "<tt>$2</tt>".
laffut d yurrin ɣ database "<tt>$3: $4</tt>".',
-'nodb' => 'ornzdar annaf database $1',
'laggedslavemode' => 'Ḥan tasnayad ur gis graygan ambddel amaynu.',
'readonly' => 'Tqqn tabase',
'viewsource' => 'Mel iɣbula',
@@ -264,7 +291,6 @@ laffut d yurrin ɣ database "<tt>$3: $4</tt>".',
'welcomecreation' => '== Brrkat, $1! ==
lcont nek tuyskar .
Adur tut atbaddlt [[Special:Preferences|{{SITENAME}} issusmen]]',
-'loginpagetitle' => 'ikchim o-msxdam',
'yourname' => 'smiyt o-msxdam:',
'yourpassword' => 'awal iḥdan:',
'yourpasswordagain' => 'Зawd ara awal iḥdan:',
@@ -275,6 +301,7 @@ lcont nek tuyskar .
'nav-login-createaccount' => 'kcm / murzm Amidan',
'loginprompt' => 'You must have cookies enabled to log in to {{SITENAME}}.',
'userlogin' => 'kchem / qiyd amskhdam amaynu',
+'userloginnocreate' => 'Kcm ɣid',
'logout' => 'Fuɣ',
'userlogout' => 'Fuɣ',
'notloggedin' => 'Ur tmlit mat git',
@@ -286,8 +313,8 @@ lcont nek tuyskar .
'createaccountmail' => 'S tirawt taliktunant',
'badretype' => 'Tasarut lin tgit ur dis tucka.',
'userexists' => 'Asaɣ nu umsqdac li tskcmt illa yad',
-'yourlanguage' => 'tutlayt:',
'loginerror' => 'Gar akccum',
+'createaccounterror' => '$1 ur as tufit at kcmt',
'loginlanguagelabel' => 'tutlayt: $1',
# Edit page toolbar
@@ -311,26 +338,31 @@ lcont nek tuyskar .
'hr_tip' => 'ⵉⵣⵔⵉⵔⵉ ⵉⵖⵣⵉⴼⵏ (izriri iɣzzifn)',
# Edit pages
-'summary' => 'Tadusi',
-'subject' => 'Subject/tansa',
-'minoredit' => 'Imbddel ad fssusn',
-'watchthis' => 'Sagg tasna yad',
-'savearticle' => 'Ḥbu tasna',
-'showpreview' => 'Iẓṛi amzwaru',
-'showdiff' => 'Mel imbddeln',
-'anoneditwarning' => "Balak ''' ur tkcmt ''' rad ibayn IP nk ɣ umzrut n tasna yad, ur sul iḥba tamagit nk",
-'noarticletext' => 'ɣilad ur illa walu may ityuran f tasnatad ad, tzdart at [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
+'summary' => 'Tadusi',
+'subject' => 'Subject/tansa',
+'minoredit' => 'Imbddel ad fssusn',
+'watchthis' => 'Sagg tasna yad',
+'savearticle' => 'Ḥbu tasna',
+'showpreview' => 'Iẓṛi amzwaru',
+'showdiff' => 'Mel imbddeln',
+'anoneditwarning' => "Balak ''' ur tkcmt ''' rad ibayn IP nk ɣ umzrut n tasna yad, ur sul iḥba tamagit nk",
+'noarticletext' => 'ɣilad ur illa walu may ityuran f tasnatad ad, tzdart at [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
ulla cabba [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.',
-'editing' => 'taẓṛgt $1',
-'copyrightwarning' => "ikhssak atst izd kolchi tikkin noun ɣ {{SITENAME}} llan ɣdo $2 (zr $1 iɣ trit ztsnt uggar).
+'noarticletext-nopermission' => 'Ur illa may itt yuran ɣ tasna tad.
+Ẓr [[Special:Search/{{PAGENAME}}|search for this page title]] ɣ tisnatin yaḍnin,
+ulla <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}search the related logs]</span>.',
+'editing' => 'taẓṛgt $1',
+'copyrightwarning' => "ikhssak atst izd kolchi tikkin noun ɣ {{SITENAME}} llan ɣdo $2 (zr $1 iɣ trit ztsnt uggar).
iɣ ortrit ayg ɣayli torit ḥor artisbadal wnna ka-iran, attid ortgt ɣid.<br />
ikhssak ola kiyi ador tnqilt ɣtamani yadni.
'''ador tgat ɣid ɣayli origan ḥor iɣzark orilli lidn nbab-ns!'''",
-'template-protected' => 'Agdal',
-'template-semiprotected' => 'Azin-ugdal',
+'template-protected' => 'Agdal',
+'template-semiprotected' => 'Azin-ugdal',
# History pages
+'currentrev-asof' => 'Amseggar amǧuru n $1',
+'revisionasof' => 'Askttay yaḍn f $1',
'previousrevision' => 'Iẓṛi daɣ aqbur',
'currentrevisionlink' => 'Amcggr amggaṛu',
'cur' => 'Ɣilad',
@@ -346,45 +378,11 @@ ikhssak ola kiyi ador tnqilt ɣtamani yadni.
'revertmerge' => 'ḥiyyd tazdayt',
# Diffs
-'history-title' => 'Asakud n umcggr',
-'difference' => 'laḥna gr tamzwarut d tamǧarut',
-'lineno' => 'Izriri $1:',
-'editundo' => 'Urri',
-'diff-multi' => '({{PLURAL:$1|Gr yan usurri|$1 gr isuritn}} ura tuyfsar)',
-'diff-movedto' => 'Tmmutti s $1',
-'diff-styleadded' => '$1 anaw ittuysmadn',
-'diff-added' => '$1 ittuysmad',
-'diff-changedto' => 'Ibudl s dar $1',
-'diff-movedoutof' => 'Immatti z dar $1',
-'diff-styleremoved' => '$1 anaw ittuykkasn',
-'diff-removed' => '$1 ittuykkas',
-'diff-changedfrom' => 'Ibudl z $1',
-'diff-src' => 'Aɣbalu',
-'diff-withdestination' => 'D usmmtay s $1',
-'diff-with' => '&#32; d $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32; d $1 $2',
-'diff-width' => 'Afsr',
-'diff-height' => 'Attuy',
-'diff-p' => "'''Agṭṭum'''",
-'diff-blockquote' => "'''Asattuy'''",
-'diff-h1' => "'''ansa (taskfalt 1)'''",
-'diff-h2' => "'''Ansa (taskfalt 2)'''",
-'diff-h3' => "'''Ansa (taskfalt 3)'''",
-'diff-h4' => "'''Ansa (taskfalt 4)'''",
-'diff-h5' => "'''Ansa (taskfalt 5)'''",
-'diff-pre' => "'''Agzzum yad ittuyskarn'''",
-'diff-div' => "'''Abḍu'''",
-'diff-ul' => "'''Umuɣ u igaddan'''",
-'diff-ol' => "'''Umuɣ igaddan'''",
-'diff-li' => "'''Akcum n umuɣ'''",
-'diff-table' => "'''Tadabut'''",
-'diff-tbody' => "'''Mayllan ɣ tadabut'''",
-'diff-tr' => "'''Srbis'''",
-'diff-td' => "'''Imcd'''",
-'diff-th' => "'''Ansa'''",
-'diff-br' => "'''Asunfu'''",
-'diff-hr' => "'''Alugen aɣzzayfu'''",
+'history-title' => 'Asakud n umcggr',
+'difference' => 'laḥna gr tamzwarut d tamǧarut',
+'lineno' => 'Izriri $1:',
+'editundo' => 'Urri',
+'diff-multi' => '({{PLURAL:$1|Gr yan usurri|$1 gr isuritn}} ura tuyfsar)',
# Search results
'searchresults' => 'Ma akkan icnubcn',
@@ -397,7 +395,9 @@ ikhssak ola kiyi ador tnqilt ɣtamani yadni.
'notitlematches' => 'Ur ityuffa kra ntansa zund ɣwad',
'textmatches' => 'Aṭṛiṣ n tasna iga zund',
'notextmatches' => 'Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad',
-'viewprevnext' => 'Mel ($1) ($2) ($3)',
+'prevn' => 'Tamzwarut {{PLURAL:$1|$1}}',
+'nextn' => 'Tallid yuckan {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Mel ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Istayn ucnubc',
'searchprofile-everything-tooltip' => 'Cabba ɣ kullu may ityran ɣid (d ḥtta ɣ tisna nu umsgdal)',
'searchprofile-advanced-tooltip' => 'Cabba ɣ igmmaḍn li tuyzlaynin',
@@ -413,10 +413,12 @@ ikhssak ola kiyi ador tnqilt ɣtamani yadni.
'search-mwsuggest-disabled' => 'Ur illa marayttuskar',
'search-relatedarticle' => 'Tzdi',
'mwsuggest-disable' => 'Asbid AJAX n maryttuynnan ayttuyskar',
+'searcheverything-enable' => 'Cabba ɣ graygat agmmaḍ',
'searchrelated' => 'Tuyzday',
'searchall' => 'Kullu',
'showingresults' => "Ẓr azddar {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''",
'showingresultsnum' => "Ẓr azddar (ifsr ɣ uzddar) {{PLURAL:$3|'''1''' may kfa|'''$3''' mad kfan}} Bdu s #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|May kfa '''$1''' ar '''$3'''|Mad kfan '''$1 - $2''' ar '''$3'''}} i '''$4'''",
'nonefound' => "'''Arra''': Icnubbu ar tilin ɣir tiɣulin tuyzlaynin. Iɣ trit at cabbat ɣ kullu may tyuran d ḥtta tisnatin nu umsgdal s ''all:'', bdu acnubc nek s kullu ma ɣɣid imun, ulla s assaɣ n tɣult li trit.",
'search-nonefound' => 'Ur ittuykfa walu maygan zund ɣayli trit',
'powersearch' => 'Amsigl imzwarn',
@@ -424,24 +426,29 @@ ikhssak ola kiyi ador tnqilt ɣtamani yadni.
'powersearch-ns' => 'Icnubbucn ɣ tɣulin',
'powersearch-redir' => 'Afsr n ismmatayn (Tifilit n ismmatayn)',
'powersearch-field' => 'Acnubc ɣ',
+'powersearch-togglelabel' => 'Sti',
+'powersearch-toggleall' => 'Kullu',
+'powersearch-togglenone' => 'Walu',
'search-external' => 'Acnubc b brra',
'searchdisabled' => '{{SITENAME}} Acnubc ibid.
Tzdar at cabbat ɣilad ɣ Google.
Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
-# Preferences page
-'preferences' => 'Timssusmin',
-'mypreferences' => 'Timssusmin',
-'prefs-edits' => 'Uṭṭun n n imbddeln',
+# Quickbar
'qbsettings' => 'Tafeggagt izrbn',
'qbsettings-none' => 'Ur iḥudda',
'qbsettings-fixedleft' => 'Aẓẓugz azlmaḍ',
'qbsettings-fixedright' => 'Azzugz afasi',
'qbsettings-floatingleft' => 'Yaywul su uzlmad',
'qbsettings-floatingright' => 'Yaywul su ufasi',
-'timezonetext' => '¹lfrq nswayЗ gr loqt n ɣilli ɣ tllit d loqt n serveur (UTC).',
-'localtime' => 'loqt n ɣilli ɣtllit',
-'servertime' => 'loqt n serveur',
+
+# Preferences page
+'preferences' => 'Timssusmin',
+'mypreferences' => 'Timssusmin',
+'prefs-edits' => 'Uṭṭun n n imbddeln',
+'localtime' => 'loqt n ɣilli ɣtllit',
+'servertime' => 'loqt n serveur',
+'yourlanguage' => 'tutlayt:',
# Groups
'group-sysop' => 'Anedbalen n unagraw',
@@ -462,6 +469,7 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
'minoreditletter' => 'm',
'newpageletter' => 'A',
'boteditletter' => 'q',
+'unpatrolledletter' => '!',
'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 iżŗi {{PLURAL:$1|amsqdac|imsqdacn}}]',
'rc_categories_any' => 'wanna',
@@ -472,6 +480,8 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
# Recent changes linked
'recentchangeslinked' => 'Imbddel zun ɣwid',
+'recentchangeslinked-feed' => 'Imbddeln zund ɣwid',
+'recentchangeslinked-toolbox' => 'Imbddeln zund ɣwid',
'recentchangeslinked-title' => 'Imbddeln li izdin "$1"',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Ur illi may budeln ɣ tisniwin li dar izdayn s ɣid',
@@ -493,12 +503,13 @@ Mel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.',
'filehist-current' => 'Ɣilad',
'filehist-datetime' => 'Asakud/Tizi',
'filehist-thumb' => 'Awlaf imżżin',
+'filehist-thumbtext' => 'Mżżi n lqim ɣ tizi $1',
'filehist-user' => 'Amsqdac',
'filehist-dimensions' => 'Dimensions',
'filehist-comment' => 'Aɣfawal',
'imagelinks' => 'Izdayn n usdaw',
'linkstoimage' => 'Tasna yad {{PLURAL:$1|izdayn n tasna|$1 azday n tasniwin}} s usdaw:',
-'sharedupload' => 'Asdawad z $1 tẓḍart at tsxdmt gr iswirn yaḍnin', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Asdawad z $1 tẓḍart at tsxdmt gr iswirn yaḍnin',
'uploadnewversion-linktext' => 'Srbud tunɣilt tamaynut n usdaw ad',
# Miscellaneous special pages
@@ -597,6 +608,8 @@ illa fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist
'mycontris' => 'Tiwuriwin inu',
'year' => 'Z usggas (d urbur):',
+'sp-contributions-talk' => 'assays',
+
# What links here
'whatlinkshere' => 'May izdayn ɣid',
'whatlinkshere-title' => 'Tasniwin li izdayn d "$1"',
@@ -648,6 +661,7 @@ illa fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist
'tooltip-ca-viewsource' => 'Tasnatad tuyḥba. mac dẓdart at tẓrt aɣbalu nes.',
'tooltip-ca-history' => 'Tunɣilt tamzwarut n tasna yad',
'tooltip-ca-protect' => 'Ḥbu tasna yad',
+'tooltip-ca-unprotect' => 'Kkis aḥbu n tasna yad',
'tooltip-ca-delete' => 'Kkis tasna yad',
'tooltip-ca-undelete' => 'Rard imbddeln imzwura li ittyskarnin ɣ tasna yad',
'tooltip-ca-move' => 'Smmati tasna yad',
@@ -658,6 +672,7 @@ illa fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist
'tooltip-search-fulltext' => 'Cnubc aṭṛiṣad ɣ tisnatin',
'tooltip-p-logo' => 'Tasnat tamuqrant',
'tooltip-n-mainpage' => 'Kkid tasna tamzwarut',
+'tooltip-n-mainpage-description' => 'Kid tasna tamuqrant',
'tooltip-n-portal' => "f' usenfar, matzdart atitskrt, maniɣrattaft ɣayli trit",
'tooltip-n-currentevents' => 'Tiɣri izrbn i kullu maɣid immusn',
'tooltip-n-recentchanges' => 'Umuɣ n imbddlen imaynuten ɣ l-wiki',
@@ -710,7 +725,7 @@ Wiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
'exif-gaincontrol-0' => 'walo',
diff --git a/languages/messages/MessagesSi.php b/languages/messages/MessagesSi.php
index da99f501..2f601c7d 100644
--- a/languages/messages/MessagesSi.php
+++ b/languages/messages/MessagesSi.php
@@ -10,6 +10,7 @@
* @author Asiri wiki
* @author Calcey
* @author Chandana
+ * @author Jiro Ono
* @author Meno25
* @author Romaine
* @author Singhalawap
@@ -134,11 +135,13 @@ $specialPageAliases = array(
'Blankpage' => array( 'හිස් පිටුව' ),
'LinkSearch' => array( 'සබැඳි ගවේෂණය' ),
'DeletedContributions' => array( 'මකාදැමුණු දායකත්වයන්' ),
+ 'Tags' => array( 'ටැග' ),
+ 'Activeusers' => array( 'ක්‍රියාකාරීපරිශීලකයන්' ),
);
$magicWords = array(
'redirect' => array( '0', '#යළියොමුව', '#REDIRECT' ),
- 'currentmonth' => array( '1', 'වත්මන්මාසය', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'වත්මන්මාසය', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'වත්මන්මාසනාමය', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', 'වත්මන්මාසයකෙටි', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'වත්මන්දිනය', 'CURRENTDAY' ),
@@ -147,7 +150,7 @@ $magicWords = array(
'currentyear' => array( '1', 'වත්මන්වසර', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'වත්මන්වේලාව', 'CURRENTTIME' ),
'currenthour' => array( '1', 'වත්මන්පැය', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'දේශීයමාසය', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'දේශීයමාසය', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'දේශීයමාසනාමය', 'LOCALMONTHNAME' ),
'localmonthabbrev' => array( '1', 'දේශීයමාසයකෙටි', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'දේශීයදිනය', 'LOCALDAY' ),
@@ -201,6 +204,7 @@ $messages = array(
'tog-enotifminoredits' => 'පිටුවල සුළු-සංස්කරණ වලදී පවා මා හට විද්‍යුත්-තැපෑලක් එවන්න',
'tog-enotifrevealaddr' => 'දැනුම්දීමේ විද්‍යුත්-තැපෑලෙහිදී මාගේ විද්‍යුත්-තැපැල් ලිපිනය හෙළි කරන්න',
'tog-shownumberswatching' => 'මුර කරනු ලබන පරිශීලකයන් සංඛ්‍යාව පෙන්වන්න',
+'tog-oldsig' => 'පවතින අත්සනෙහි පූර්ව දර්ශනය:',
'tog-fancysig' => 'අත්සන විකිපෙළ (ස්වයංක්‍රීය සබැඳියක් විරහිතව) ලෙසින් සලකන්න',
'tog-externaleditor' => 'පෙරනිමියෙන් බාහිර සංස්කාරකයක් භාවිත කරන්න (ප්‍රවීණයන් සඳහා පමණි, ඔබගේ පරිගණකයට විශේෂ පරිස්ථිතීන් යෙදවිය යුතුවේ)',
'tog-externaldiff' => 'පෙරනිමියෙන් බාහිර වෙනස භාවිතා කරන්න (ප්‍රවීණයන් සඳහා පමණයි, ඔබගේ පරිගණකයෙහි විශේෂ පරිස්ථිතීන් අවශ්‍යයයි)',
@@ -224,6 +228,13 @@ $messages = array(
'underline-never' => 'කිසිවිටෙක නොකරන්න',
'underline-default' => 'බ්‍රවුසරයෙහි පෙරනිමිය අනුවය',
+# Font style option in Special:Preferences
+'editfont-style' => 'අකුරු විලාසයන් සංස්කරණ පෙදෙස:',
+'editfont-default' => 'පෙර නිමි බ්‍රව්සරය',
+'editfont-monospace' => 'ඒක අවකාශිත ෆොන්ට්',
+'editfont-sansserif' => 'Sans-serif අකුරු',
+'editfont-serif' => 'Serif අකුරු',
+
# Dates
'sunday' => 'ඉරිදා',
'monday' => 'සඳුදා',
@@ -283,7 +294,7 @@ $messages = array(
'category-media-header' => '"$1" ප්‍රවර්ගයට අයත් මාධ්‍ය',
'category-empty' => "''දැනට මෙම ප්‍රවර්ගය පිටු හෝ මාධ්‍ය හෝ නොදරයි.''",
'hidden-categories' => '{{PLURAL:$1|සැඟවුනු ප්‍රවර්ගය|සැඟවුනු ප්‍රවර්ග}}',
-'hidden-category-category' => 'සැඟවුනු ප්‍රවර්ග', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'සැඟවුනු ප්‍රවර්ග',
'category-subcat-count' => '{{PLURAL:$2|මෙම ප්‍රවර්ගය සතු වන්නේ පහත දැක්වෙන උපප්‍රවර්ගය පමණි.| මෙම ප්‍රවර්ගය සතු උපප්‍රවර්ග $2 ක් අතර, පහත දැක්වෙන {{PLURAL:$1|උපප්‍රවර්ගය|උපප්‍රවර්ග $1 }} වේ.}}',
'category-subcat-count-limited' => 'මෙම ප්‍රවර්ගයට පහත දැක්වෙන {{PLURAL:$1| එක් උපප්‍රවර්ගයක්| උපප්‍රවර්ග $1 ක්}} අයත් වේ.',
'category-article-count' => '{{PLURAL:$2|මෙම ප්‍රවර්ගය සතු වන්නේ මෙහි පහත දැක්වෙන පිටුව පමණි.| මෙම ප්‍රවර්ගය සතු සමස්ත පිටු $2 අතර, පහත දැක්වෙන {{PLURAL:$1|පිටුවද වේ.|පිටු $1 ද වෙති.}}}}',
@@ -291,6 +302,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|මෙම ප්‍රවර්ගයට අයත් වන්නේ පහත දැක්වෙන ගොනුව පමණි.| මෙම ප්‍රවර්ගය සතු සමස්ත ගොනු $2 අතර, මෙහි පහත දැක්වෙන {{PLURAL:$1|ගොනුවද වේ.|ගොනු $1 ද වෙති.}}}}',
'category-file-count-limited' => 'මෙහි පහත දැක්වෙන {{PLURAL:$1|ගොනුව|ගොනු $1 }} අයත් වන්නේ වත්මන් ප්‍රවර්ගයටය.',
'listingcontinuesabbrev' => 'ඉතිරිය.',
+'index-category' => 'සූචිගත පිටු',
+'noindex-category' => 'සූචිගත නොකළ පිටු',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'mainpagetext' => "'''මාධ්‍යවිකි සාර්ථක ලෙස ස්ථාපනය කරන ලදි.'''",
@@ -301,10 +314,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ මාධ්‍යවිකි නිතර-අසන-පැන]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce මාධ්‍යවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
-'about' => 'පිළිබඳ',
-'article' => 'පටුන',
-'newwindow' => '(නව කවුළුවක විවෘතවේ)',
-'cancel' => 'අත් හරින්න',
+'about' => 'පිළිබඳ',
+'article' => 'පටුන',
+'newwindow' => '(නව කවුළුවක විවෘතවේ)',
+'cancel' => 'අත් හරින්න',
+'moredotdotdot' => 'තවත්...',
+'mypage' => 'මගේ පිටුව',
+'mytalk' => 'මගේ සාකච්ඡා',
+'anontalk' => 'මෙම අන්තර්ජාල ලිපිනය සඳහා සාකච්ඡාව',
+'navigation' => 'සංචලනය',
+'and' => '&#32;සහ',
+
+# Cologne Blue skin
'qbfind' => 'සොයන්න',
'qbbrowse' => 'පිරික්සන්න',
'qbedit' => 'සංස්කරණය',
@@ -312,15 +333,35 @@ $messages = array(
'qbpageinfo' => 'සන්දර්භය',
'qbmyoptions' => 'මගේ පිටු',
'qbspecialpages' => 'විශේෂ පිටු',
-'moredotdotdot' => 'තවත්...',
-'mypage' => 'මගේ පිටුව',
-'mytalk' => 'මගේ සාකච්ඡා',
-'anontalk' => 'මෙම අන්තර්ජාල ලිපිනය සඳහා සාකච්ඡාව',
-'navigation' => 'සංචලනය',
-'and' => '&#32;සහ',
-
-# Metadata in edit box
-'metadata_help' => 'පාරදත්ත:',
+'faq' => 'නිතර-අසන-පැන',
+'faqpage' => 'Project:නිතර-අසන-පැන',
+
+# Vector skin
+'vector-action-addsection' => 'මාතෘකාව එක්කරන්න',
+'vector-action-delete' => 'මකාදමන්න',
+'vector-action-move' => 'ගෙනයන්න',
+'vector-action-protect' => 'ආරක්ෂා කරන්න',
+'vector-action-undelete' => 'මකාදැමීම අවලංගු කරන්න',
+'vector-action-unprotect' => 'ආරක්ෂා‍ නොකරන්න',
+'vector-namespace-category' => 'ප්‍රවර්ගය',
+'vector-namespace-help' => 'උදවු පිටුව',
+'vector-namespace-image' => 'ගොනුව',
+'vector-namespace-main' => 'පිටුව',
+'vector-namespace-media' => 'මාධ්‍ය පිටුව',
+'vector-namespace-mediawiki' => 'පණිවුඩය',
+'vector-namespace-project' => 'ව්‍යාපෘති පිටුව',
+'vector-namespace-special' => 'විශේෂ පිටුව',
+'vector-namespace-talk' => 'සංවාදය',
+'vector-namespace-template' => 'සැකිල්ල',
+'vector-namespace-user' => 'පරිශීලක පිටුව',
+'vector-view-create' => 'තනන්න',
+'vector-view-edit' => 'සංස්කරණය කරන්න',
+'vector-view-history' => 'ඉතිහාසය නරඹන්න',
+'vector-view-view' => 'කියවන්න',
+'vector-view-viewsource' => 'මූලාශ්‍රය නරඹන්න',
+'actions' => 'කාර්යයන්',
+'namespaces' => 'නාමඅවකාශයන්',
+'variants' => 'ප්‍රභේද්‍යයන්',
'errorpagetitle' => 'දෝෂය',
'returnto' => '$1 ට නැවත යන්න.',
@@ -370,19 +411,23 @@ $messages = array(
'otherlanguages' => 'වෙනත් භාෂා වලින්',
'redirectedfrom' => '($1 වෙතින් යළි-යොමු කරන ලදි)',
'redirectpagesub' => 'පිටුව යළි-යොමු කරන්න',
-'lastmodifiedat' => 'මෙම පිටුව අවසන් වරට වෙනස් කරන ලද්දේ $1 දිනදී, $2 වේලාවෙහිදීය.', # $1 date, $2 time
+'lastmodifiedat' => 'මෙම පිටුව අවසන් වරට වෙනස් කරන ලද්දේ $1 දිනදී, $2 වේලාවෙහිදීය.',
'viewcount' => 'මෙම පිටුවට {{PLURAL:$1|එක් වරක්|$1 වරක්}} පිවිස ඇත.',
'protectedpage' => 'ආරක්ෂිත පිටුව',
'jumpto' => 'වෙත පනින්න:',
'jumptonavigation' => 'සංචලනය',
'jumptosearch' => 'ගවේෂණය',
+'view-pool-error' => 'සමාවන්න, සේවාදායකයන් මෙම අවස්ථාවෙහිදී අධිභාරණයට ලක් වී ඇත.
+පමණට වඩා පරිශීලක පිරිසක් මෙම පිටුව නැරඹීමට යත්න දරති.
+මෙම පිටුවට පිවිසීමට නැවත උත්සාහ දැරීමට පෙර මදක් පමාවන්න.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} පිළිබඳ
<!--{{SITENAME}}About-->',
'aboutpage' => 'Project:පිළිබඳ',
'copyright' => ' $1 යටතේ අන්තර්ගතය දැක ගත හැක.',
-'copyrightpagename' => '{{SITENAME}} කර්තෘ-හිමිකම්',
'copyrightpage' => '{{ns:project}}:කර්තෘ-හිමිකම්',
'currentevents' => 'කාලීන සිදුවීම්',
'currentevents-url' => 'Project:කාලීන සිදුවීම්',
@@ -390,8 +435,6 @@ $messages = array(
'disclaimerpage' => 'Project:පොදු වියාචන',
'edithelp' => 'සංස්කරණ උදවු',
'edithelppage' => 'Help:සංස්කරණ',
-'faq' => 'නිතර-අසන-පැන',
-'faqpage' => 'Project:නිතර-අසන-පැන',
'helppage' => 'Help:පටුන',
'mainpage' => 'මුල් පිටුව',
'mainpage-description' => 'මුල් පිටුව',
@@ -475,10 +518,6 @@ $messages = array(
"$2" ශ්‍රිතය අනුසාරයෙන්,
"$1" විය
දත්ත-ගබඩාව විසින් වාර්තා කල දෝෂය "$3: $4"',
-'noconnect' => 'කණගාටුයි! විකිය යම් තාක්ෂණික ‍බාධාවන්ට මුහුණ දෙමින් සිටින බැවින්, දත්ත-ගබඩා සේවාදායකය හා සම්බන්ධ වීමට නොහැකිව සිටියි.<br />
-$1',
-'nodb' => '$1 දත්ත-ගබඩාව තෝරාගත නොහැකි විය',
-'cachederror' => 'පහත දැක්වෙන්නේ අයැදුම් කල පිටුවේ පූර්වාපේක්‍ෂිතව සංචිත කෙරුණු (කෑෂ් කෙරුණු) පිටපතක් වන බැවින් එය යවත්කාලීන නොවීමට ඉඩ ඇත.',
'laggedslavemode' => "'''අවවාදයයි:''' මෑත යාවත්කාලීන කිරීම් මෙම පිටුවෙහි අඩංගු නොවීමට ඉඩ ඇත.",
'readonly' => 'දත්තගබඩාව අවුරා ඇත',
'enterlockreason' => 'අවුරා දැමීමට හේතුවක් සපයන අතරතුර, ඇවිරීම මුදාහැරීමට බලාපොරොත්තු වන කාලසීමාව නිමානය කර දක්වන්න',
@@ -496,6 +535,8 @@ URL සඳහන් කරමින්, මෙම කරුණ [[Special:ListUs
'readonly_lag' => 'ගෝල දත්ත-ගබඩා සර්වරයන්හි ක්‍රියාශීලිත්වය ගුරු සර්වර මට්ටමට පත් වන තෙක් දත්ත-ගබඩාව ස්වයංක්‍රීය ලෙස ඇවුරුමකට ලක්ව ඇත',
'internalerror' => 'අභ්‍යන්තර දෝෂය',
'internalerror_info' => 'අභ්‍යන්තර දෝෂය: $1',
+'fileappenderrorread' => 'එක්කිරීමේදී "$1" නියවීමට නොහැකි විය.',
+'fileappenderror' => '"$2" වෙත "$1" යා කල නොහැක.',
'filecopyerror' => '"$1" ගොනුව "$2" වෙත පිටපත් කිරීමට නොහැකි විය.',
'filerenameerror' => '"$1" ගොනුව "$2" බවට යළි-නම්-කිරීම සිදු කල නොහැකි විය.',
'filedeleteerror' => '"$1" ගොනුව මකා-දැමිය නොහැකි විය.',
@@ -505,7 +546,7 @@ URL සඳහන් කරමින්, මෙම කරුණ [[Special:ListUs
'unexpected' => 'අනපේක්‍ෂිත අගය: "$1"="$2".',
'formerror' => 'දෝෂය: ආකෘති-පත්‍රය ඉදිරිපත් කල නොහැකි විය',
'badarticleerror' => 'මෙම පිටුව විෂයයෙහි මෙම කාර්යය ඉටු නල නොහැකි විය.',
-'cannotdelete' => 'නිරූපිත පිටුව හෝ ගොනුව හෝ මකා දැමිය නොහැකි විය.
+'cannotdelete' => '"$1" පිටුව හෝ ගොනුව හෝ මකා දැමිය නොහැකි විය.
අනෙකෙකු විසින් දැනටමත් ‍මකා දැමීම සිදු කර ඇතිවා විය හැක.',
'badtitle' => 'නුසුදුසු ශීර්ෂයක්',
'badtitletext' => 'අයැද ඇති පිටු ශීර්ෂය අනීතික, හිස් හෝ වැරදි ලෙස සබැඳි අන්තර්-භාෂා/අන්තර්-විකී ශීර්ෂයකි.
@@ -543,7 +584,6 @@ $2',
'virus-unknownscanner' => 'අඥාත ප්‍රතිවයිරසයක්:',
# Login and logout pages
-'logouttitle' => 'පරිශීලක නිෂ්ක්‍රමණය',
'logouttext' => "'''ඔබ දැන් නිෂ්ක්‍රමණය වී ඇත.'''
ඔබට නිර්නාමිකව {{SITENAME}} කටයුතු කරගෙන යාහැක, නැතහොත් පෙර පරිශීලක ලෙස හෝ වෙනත් පරිශීලකයෙකු ලෙස [[Special:UserLogin|නැවත ප්‍රවිෂ්ට විය හැක]].
@@ -552,7 +592,6 @@ $2',
ඔබ‍ගේ ගිණුම තැනී ඇත.
ඔබ‍ගේ [[Special:Preferences|{{SITENAME}} අභිරුචි ]] වෙනස් කිරීම අමතක නොකරන්න.',
-'loginpagetitle' => 'පරිශීලක ප්‍රවිෂ්ටය',
'yourname' => 'පරිශීලක නාමය:',
'yourpassword' => 'මුරපදය:',
'yourpasswordagain' => 'මුරපදය යළි ඇතුළු කරන්න:',
@@ -563,6 +602,7 @@ $2',
'nav-login-createaccount' => 'ප්‍රවිෂ්ටවන්න / නව ගිණුමක් අරඹන්න',
'loginprompt' => '{{SITENAME}} වෙත ප්‍රවිෂ්ට වීම සඳහා ඔබ විසින් කුකීස් සක්‍රීය කොට තිබිය යුතුය.',
'userlogin' => 'ප්‍රවිෂ්ටවන්න / නව ගිණුමක් අරඹන්න',
+'userloginnocreate' => 'ප්‍රවිෂ්ට වන්න',
'logout' => 'නිෂ්ක්‍රමණය',
'userlogout' => 'නිෂ්ක්‍රමණය',
'notloggedin' => 'ප්‍රවිෂ්ට වී නොමැත',
@@ -575,31 +615,8 @@ $2',
'badretype' => 'ඔබ ඇතුළු කල මුරපදය නොගැලපේ.',
'userexists' => 'ඔබ ඇතුළු කල පරිශීලක නාමය දැනටමත් භාවිතයෙහි ඇත.
කරුණාකර වෙනත් නමක් තෝරා ගන්න.',
-'youremail' => 'විද්‍යුත් තැපෑල:',
-'username' => 'පරිශීලක නාමය:',
-'uid' => 'පරිශීලක අනන්‍යාංකය:',
-'prefs-memberingroups' => 'ඉදිරියේ දැක්වෙන {{PLURAL:$1|කණ්ඩායමෙහි|කණ්ඩායම් වල}} සාමාජිකයෙකි:',
-'yourrealname' => 'සැබෑ නාමය:',
-'yourlanguage' => 'භාෂාව:',
-'yourvariant' => 'විචල්‍යය:',
-'yournick' => 'විද්‍යුත් අත්සන:',
-'badsig' => 'නොනිමි අත්සන අනීතිකයි.
-HTML ටැගයන් පිරික්සන්න.',
-'badsiglength' => 'ඔබගේ විද්‍යුත් අත්සන පමණට වඩා දිගු වැඩිය.
-එය {{PLURAL:$1|එක් අක්ෂරයකට|අක්ෂරයන් $1 කට}} වඩා කෙටි විය යුතුය.',
-'yourgender' => 'ස්ත්‍රී/පුරුෂ භාවය:',
-'gender-unknown' => 'හෙළි නොකරයි',
-'gender-male' => 'පුරුෂ',
-'gender-female' => 'ස්ත්‍රී',
-'prefs-help-gender' => 'වෛකල්පික: මෘදුකාංග විසින් නිවැරැදි-ලිංගභේද යොමුකිරීම් සඳහා භාවිතා කෙරෙයි.
-මෙම තොරතුරු සමස්ත ප්‍රජාව සඳහා වෙයි.',
-'email' => 'විද්‍යුත් තැපෑල',
-'prefs-help-realname' => 'සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.
-ඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහා ඔබහට කතෘ-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.',
'loginerror' => 'ප්‍රවිෂ්ට වීමේ දෝෂයකි',
-'prefs-help-email' => 'විද්‍යුත්-තැපෑල ලිපිනය සැපයීම වෛකල්පිකයි, එනමුදු ඔබගේ මුර-පදය ඔබහට අමතක වූ විටෙක නව මුර-පදයක් ඔබහට විද්‍යුත්-තැපැල්ගත කිරීමට එය ප්‍රයෝජනවත් විය හැක.
-අනෙක් අතට, ඔබගේ පරිශීලක පිටුව හෝ පරිශීලක_සාකච්ඡා පිටුව හෝ තුලින් අනෙකුන් හට ඔබ හා සම්බන්ධ වීමට ඉඩ සැලසීමෙන්, ඔබගේ අනන්‍යතාවය හෙළි නොකර සිටීමට ඔබහට හැකිය.',
-'prefs-help-email-required' => 'විද්‍යුත්-ලිපිනය අවශ්‍යයි.',
+'createaccounterror' => 'ගිණුම නිර්මාණය කළ නොහැකි විය:$1',
'nocookiesnew' => 'පරිශීලක ගිණුම තනා ඇති නමුදු, ඔබ ප්‍රවිෂ්ට වී නොමැත.
පරිශීලකයන් ප්‍රවිෂ්ට කර ගැනීම සඳහා, {{SITENAME}} විසින් කුකී භාවිතා කරයි.
ඔබ විසින් කුකී අක්‍රීය කර ඇත.
@@ -616,18 +633,20 @@ HTML ටැගයන් පිරික්සන්න.',
'nosuchusershort' => '"<nowiki>$1</nowiki>" නමින් පරිශීලකයෙකු නොමැත.
අක්‍ෂර-වින්‍යාසය පිරික්සා බලන්න.',
'nouserspecified' => 'ඔබ විසින් පරිශීලක-නාමයක් සඳහන් කල යුතු වේ.',
+'login-userblocked' => 'මෙම පරිශීලකයා වාරණය කොට ඇත. ප්‍රවිෂ්ට වීමට ඉඩ දෙනු නොලැබේ.',
'wrongpassword' => 'සාවද්‍ය මුර-පදයක් ඇතුළත් කෙරිණි.
නැවත උත්සාහකරන්න.',
'wrongpasswordempty' => 'හිස් මුර-පදයක් ඇතුළත් කෙරිණි.
නැවත උත්සාහ කරන්න.',
-'passwordtooshort' => 'ඔබගේ මුර-පදය එක්කෝ අනීතික එකකි නැතිනම් පමණට වඩා කෙටි එකකි.
-එහි අවම වශයෙන්, {{PLURAL:$1|එක් අක්ෂරයක්|අක්ෂර $1 ක්}} අඩංගු විය යුතු අතර, ඔබගේ පරිශීලක-නාමයෙන් වෙනස් පදයක් විය යුතුය.',
+'passwordtooshort' => 'මුරපදය අඩුම වශයෙන් {{PLURAL:$1|එක් අක්ෂරයක්|අක්ෂර $1 ක්}} සහිත විය යුතුය.',
+'password-name-match' => 'ඔබගේ මුරපදය, ඔබගේ පරිශීලක නාමයෙන් වෙනස් එකක් විය යුතුය.',
'mailmypassword' => 'නව මුරපදය විද්‍යුත් තැපෑල‍ට යවන්න',
'passwordremindertitle' => '{{SITENAME}} සඳහා නව තාවකාලික මුර-පදය',
'passwordremindertext' => 'යම් අයෙකු ($1 අන්තර්ජාල ලිපිනය තුලින් සමහර විට ඔබ) විසින් {{SITENAME}} ($4)සඳහා නව මුර-පදයක් ඉල්ලා සිට ඇත. පරිශීලක "$2" වෙනුවෙන් තාවකාලික මුර-පදයක් තනා "$3" බවට නියම කර ඇත. මෙය ඔබගේ අභිලාශය වූයේ නම් ඔබ විසින් ළහිළහියේ ප්‍රවිෂ්ට වී, නව මුර-පදයක් තෝරා ගත යුතුව ඇත.ඔබගේ තාවකාලික මුරපදය {{PLURAL:$5|එක් දිනකින්|දින $5 කින්}}කල් ඉකුත්වනු ඇත.
වෙන යම් අයෙකු විසින් මෙම ආයාචනය සිදු කර ඇත්නම් හෝ ඔබ හට ඔබගේ මුර-පදය නැවත සිහිවුනි නම් හා එබැවින් එය වෙනස් කිරීම තවදුරටත් ඔබගේ අභිලාෂය නොවේ නම් මෙම පණිවුඩය නොසලකාහරිමින් ඔබගේ පැරැණි මුර-පදය දිගටම භාවිතා කරන්න.',
'noemail' => 'පරිශීලක "$1" සඳහා විද්‍යුත්-තැපැල් ලිපිනයක් සටහන් වී නොමැත.',
+'noemailcreate' => 'ඔබ වලංගු ඊ-මේල් ලිපිනයක් සැපයිය යුතුය',
'passwordsent' => ' "$1" වෙනුවෙන් ලේඛනගත කර ඇති විද්‍යුත් තැපැල් ලිපිනයට නව මුර පදයක් යවා ඇත.
ඔබට එය ලැබුනු පසු නැවත ප්‍රවිෂ්ට වන්න.',
'blocked-mailpassword' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කරමින් සංස්කරණයෙහි යෙදීම වාරණය කොට ඇති අතර, අපයෙදුම වළකනු වස්, මුර-පදය පුනරුත්ථාන කෘත්‍යය භාවිත කිරීමට අවසරයද අහිමි කොට ඇත.',
@@ -652,9 +671,11 @@ HTML ටැගයන් පිරික්සන්න.',
ඔබ දැන් ප්‍රවිෂ්ට වී, ඔබගේ මුර-පදය වෙනස් කල යුතුව ඇත.
මෙම ගිණුම තැනී ඇත්තේ ප්‍රමාද දෝෂයකින් නම්, මෙම පණිවුඩය නොසලකා හැරිය හැක.',
+'usernamehasherror' => 'පරිශීලක නාමයේ පූරක අනුලකුණු අඩංගු විය නොහැකිය',
'login-throttled' => 'ඔබ විසින් මෑතදී පමණට වඩා වාර ගණනක් ප්‍රවිෂ්ට වීමට උත්සාහ දරා ඇත.
යළි උත්සාහ කිරීමට පෙර කරුණාකර මදක් පොරොත්තු වන්න.',
'loginlanguagelabel' => 'භාෂාව: $1',
+'suspicious-userlogout' => 'නිෂ්ක්‍රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්‍රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්‍රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්‍රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.',
# Password reset dialog
'resetpass' => 'මුර-පදය වෙනස් කරන්න',
@@ -667,18 +688,13 @@ HTML ටැගයන් පිරික්සන්න.',
'retypenew' => 'නව මුර-පදය නැවත ඇතුළු කරන්න:',
'resetpass_submit' => 'මුර-පදය පූරණය කොට ඉන් පසු ප්‍රවිෂ්ට වන්න',
'resetpass_success' => 'ඔබගේ මුර-පදය සාර්ථක ලෙස වෙනස් කරන ලදි! දැන් ඔබව ප්‍රවිෂ්ට කරගනිමින්...',
-'resetpass_bad_temporary' => 'අනීතික තාවකාලික මුර-පදයකි.
-ඔබ විසින් එක්කෝ ඔබගේ මුර-පදය සාර්ථක ලෙස වෙනස් කිරීම හෝ නැතිනම් නව තාවකාලික මුර-පදයක් අයැදීම හෝ සිදුකර ඇතිවා විය හැක.',
'resetpass_forbidden' => 'මුර-පදයන් වෙනස් කිරීම සිදු කල නොහැක',
'resetpass-no-info' => 'මෙම පිටුව සෘජු ලෙස පරිශීලනය කෙරුමට ඔබ පළමු ප්‍රවිෂ්ට විය යුතුය.',
'resetpass-submit-loggedin' => 'මුර-පදය වෙනස්කරන්න',
+'resetpass-submit-cancel' => 'අත් හරින්න',
'resetpass-wrong-oldpass' => 'තාවකාලික හෝ වත්මන් මුර-පදය අනීතිකයි.
ඔබ දැනටමත් සාර්ථක ලෙස ඔබගේ මුර-පදය වෙනස් කොට හෝ නව තාවකාලික මුර-පදයක් ඉල්ලා සිට හෝ ඇතිවා විය හැක.',
'resetpass-temp-password' => 'තාවකාලික මුර-පදය:',
-'resetpass-log' => 'මුරපද ප්‍රත්‍යාරම්භ ලඝු-සටහන',
-'resetpass-logtext' => 'පහත දැක්වෙන්නේ පරිපාලක වරයෙකුගේ ආධාරයෙන් තමන්ගේ මුරපදයන් ප්‍රත්‍යාරම්භ කර ගත් පරිශීලකයන් දැක්වෙන ලඝු-සටහනකි.',
-'resetpass-logentry' => '$1 සඳහා මුරපදය වෙනස් කරන ලදි',
-'resetpass-comment' => 'මුරපද ප්‍රත්‍යාරම්භයට හේතුව:',
# Edit page toolbar
'bold_sample' => 'තදකුරු පෙළ',
@@ -755,7 +771,6 @@ HTML ටැගයන් පිරික්සන්න.',
'blockededitsource' => " '''$1''' විෂයයයෙහි සිදු කල '''ඔබගේ සංස්කරණ'' යන්හී පෙළ පහත දැක්වේ:",
'whitelistedittitle' => 'සංස්කරණය කිරීමට ප්‍රවිෂ්ටවී සිටිය යුතුය',
'whitelistedittext' => 'සංස්කරණය කිරීමට පෙරාතුව ඔබ $1 විය යුතුය.',
-'confirmedittitle' => 'සංස්කරණය සඳහා විද්‍යුත්-තැපෑල තහවුරුකිරීම අවශ්‍ය වේ',
'confirmedittext' => 'පිටු සංස්කරණයට පෙර ඔබ‍ විසින් ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය තහවුරු කල යුතු වේ.
ඔබගේ [[Special:Preferences|පරිශීලක අභිරුචීන්]] තුලින් ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය සකසා ඉක්බිතිව තහවුරු කරන්න.',
'nosuchsectiontitle' => 'කොටසක් සොයා ගත නොහැක',
@@ -780,14 +795,20 @@ HTML ටැගයන් පිරික්සන්න.',
අනෙකුත් පිටුවල [[Special:Search/{{PAGENAME}}|මෙම පිටු ශීර්ෂය සඳහා ගවේශනය කිරීම]] හෝ,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} අදාළ ලඝු-සටහන් සඳහා ගවේෂණය කිරීම],
හෝ [{{fullurl:{{FULLPAGENAME}}|action=edit}} මෙම පිටුව සංස්කරණය කිරීම] හෝ ඔබ විසින් සිදු කල හැක</span>.',
+'noarticletext-nopermission' => 'දැනට මෙම පිටුවෙහි කිසිදු පෙළක් නොමැත.
+අනෙකුත් පිටුවල [[Special:Search/{{PAGENAME}}|මෙම පිටු ශීර්ෂය සඳහා ගවේශනය කිරීම]] හෝ, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}අදාළ ලඝු-සටහන් සඳහා ගවේෂණය කිරීම]</span>, හෝ මෙම පිටුව සංස්කරණය කිරීම හෝ ඔබට කල හැක.',
'userpage-userdoesnotexist' => '"$1" යන පරිශීලක ගිණුම ලේඛනගත කොට නොමැත.
ඔබ හට මෙම පිටුව තැනීමට/සංස්කරණය කිරීමට ඇවැසිද යන බව විමසා බලන්න.',
+'userpage-userdoesnotexist-view' => '"$1" පරිශීලක ගිණුම ලියාපදිංචි කර නොමැත.',
+'blocked-notice-logextract' => 'මෙම පරිශීලකයා දැනට අවහිර කරනු ලැබ ඇත.
+ආශ්‍රය තකා නවතම අවහිර කිරීම් ලඝු-සටහන පහත සැපයේ:',
'clearyourcache' => "'''සටහන - සුරැකීමෙන් පසුව, වෙනස්වීම් දැකීම සඳහා, බ්‍රවුසරයෙහි පූර්වාක්ෂේපිත සංචිතය (කෑෂය) මගහැරීමට ඔබ හට සිදුවනවා ඇත.'''
'''Mozilla / Firefox / Safari:''' ''යළිපූරණය'' ක්ලික් කරමින් ''ෂිෆ්ට්'' ඔබන්න, නැතහොත් ‘‘Ctrl-F5'' හෝ ''Ctrl-R’’ ඔබන්න (මැකිංටොෂ් සඳහා ''Command-R'');
'''Konqueror: ''' ''යළිපූරණය'' ක්ලික් කරන්න නැතහොත් ''F5'' ඔබන්න;
'''Opera:''' ''Tools → Preferences'' හි කැෂය නිෂ්කාශනය කරන්න;
'''Internet Explorer:''' ''Refresh,'' ක්ලික් කරමින් ''Ctrl'' ඔබන්න නැතහොත් ‘‘Ctrl-F5'' ඔබන්න.",
-'usercssjsyoucanpreview' => "'''හෝඩුවාව:'''සුරැකුමට පෙර, ඔබගේ නව CSS/JS පරික්ෂා කරනු වස්, 'පෙර-දසුන පෙන්වන්න' බොත්තම භාවිතා කරන්න.",
+'usercssyoucanpreview' => "'''හෝඩුවාව:'''සුරැකුමට පෙර, ඔබගේ නව CSS පරික්ෂා කරනු වස්, \"{{int:පෙර-දසුන පෙන්වන්න}}\" බොත්තම භාවිතා කරන්න.",
+'userjsyoucanpreview' => "'''හෝඩුවාව:'''සුරැකුමට පෙර, ඔබගේ නව ජාවා ස්ක්‍රිප්ට් පරික්ෂා කරනු වස්, \"{{int:පෙර-දසුන පෙන්වන්න}}\" බොත්තම භාවිතා කරන්න.",
'usercsspreview' => "'''ඔබගේ පරිශීලක CSS මත පෙර-දසුනක් පමණක් ඔබ විසින් සිදුකෙරෙන බව ධාරණය කරන්න.'''
'''එය තවමත් සුරැකීමට ලක් කොට නොමැත!'''",
'userjspreview' => "'''ඔබ සිදුකරන්නේ ඔබගේ පරිශීලක ජාවාස්ක්‍රිප්ට් පරික්ෂා කිරීම/පෙර-දසුන පමණක් බව ධාරණය කරන්න.'''
@@ -842,13 +863,16 @@ HTML ටැගයන් පිරික්සන්න.',
ඔබ තුටු නම්, කපා-පසුව-ඇලවීමක් මගින් පෙළ වෙනත් පෙළ ගොනුවකට නංවා ඉනික්බිතිව පසුව සුරැකීම සිදුකිරීමට කරුණු සැලසිය හැක.'''
එය ඇවුරූ පරිපාලක විසින් ඒ සඳහා දී ඇති පැහැදිලි කිරීම මෙසේය: $1",
-'protectedpagewarning' => "'''අවවාදයයි: පරිපාලක වරප්‍රසාද හිමි අය විසින් පමණක් සංස්කරණය කල හැකි වන පරිදි මෙම පිටුව අවුරා ඇත.'''",
-'semiprotectedpagewarning' => "'''සටහන:''' ලේඛනගත පරිශීලකයන්ට පමණක් සංස්කරණය කල හැකි පරිදි මෙම පිටුව අවුරා ඇත.",
+'protectedpagewarning' => "\"'අවවාදයයි: පරිපාලක වරප්‍රසාද හිමි අය විසින් පමණක් සංස්කරණය කල හැකි වන පරිදි මෙම පිටුව අවුරා ඇත.'''
+ආසන්නතම ලඝු සටහන යොමුවන් සඳහා පහතින් සපයනු ලබයි.",
+'semiprotectedpagewarning' => "'''සටහන:''' ලේඛනගත පරිශීලකයන්ට පමණක් සංස්කරණය කල හැකි පරිදි මෙම පිටුව අවුරා ඇත.
+ආසන්නතම ලඝු සටහන යොමුවන් සඳහා පහතින් සපයනු ලැබේ.",
'cascadeprotectedwarning' => "'''අවවාදයයි:''' මෙහි පහත දැක්වෙන තීරු දර්ශන-ආරක්‍ෂිත {{PLURAL:$1|පිටුවක|පිටු වල}} එය අඩංගු කොට ඇති බැවින්, පරිපාලක වරප්‍රසාද සතු පරිශීලකයන් හට පමණක් මෙම පිටුව සංස්කරණය කල හැකි වන පරිදි එය අවුරා ඇත:",
-'titleprotectedwarning' => "'''අවවාදයයි: එය තැනීම සඳහා [[Special:ListGroupRights|විශේෂිත හිමිකම්]] අවශ්‍ය වන පරිදී මෙම පිටුව අවුරා ඇත.'''",
-'templatesused' => 'මෙම පිටුවෙහි භාවිතා කල සැකිලි:',
-'templatesusedpreview' => 'මෙම පෙර-දසුනෙහි භාවිතා වන සැකිලි:',
-'templatesusedsection' => 'මෙම කොටසෙහි භාවිතා කර ඇති සැකිලි:',
+'titleprotectedwarning' => "'''අවවාදයයි: එය තැනීම සඳහා [[Special:ListGroupRights|විශේෂිත හිමිකම්]] අවශ්‍ය වන පරිදී මෙම පිටුව අවුරා ඇත.'''
+ආසන්නතම ලඝු සටහන යොමුවන් සඳහා පහතින් සපයනු ලැබේ.",
+'templatesused' => 'මෙම පිටුවෙහි භාවිත {{PLURAL:$1|සැකිල්ල|සැකිලි}}:',
+'templatesusedpreview' => 'මෙම පෙර-දසුනෙහි භාවිත {{PLURAL:$1|සැකිල්ල|සැකිලි}}',
+'templatesusedsection' => ' මෙම කොටසෙහි භාවිතා කර ඇති {{PLURAL:$1|සැකිල්ල|සැකිලි }}:',
'template-protected' => '(රක්ෂිත)',
'template-semiprotected' => '(අර්ධ-රක්ෂිත)',
'hiddencategories' => 'මෙම පිටුව, {{PLURAL:$1| එක් සැඟවුණු ප්‍රවර්ගයක| සැඟවුණු ප්‍රවර්ගයන් $1 ක}} අවයවයක් වේ:',
@@ -857,16 +881,18 @@ HTML ටැගයන් පිරික්සන්න.',
'nocreatetext' => 'නව පිටු තැනීමේ හැකියාව {{SITENAME}} විසින් සීමාකර ඇත.
ඔබ හට පෙරළා ගොස්, දැනට පවතින පිටුවක් සංස්කරණය කිරීම හෝ, [[Special:UserLogin|ගිණුමකට ප්‍රවිෂ්ට වීම හෝ නව ගිණුමක් තැනීම හෝ]] සිදුකල හැක.',
'nocreate-loggedin' => '{{SITENAME}} හි නව පිටු තැනීමට අවසරයක් ඔබ හට ප්‍රදානය කොට නොමැත.',
+'sectioneditnotsupported-title' => 'කොටසක් සංස්කරණය කිරීම සඳහා සහාය නොදක්වයි',
+'sectioneditnotsupported-text' => 'මෙම පිටුවේදී කොටසක් සංස්කරණය කිරීම සඳහා සහාය නොදක්වයි',
'permissionserrors' => 'අවසරයන් පිළිබඳ දෝෂයන් පවතී',
'permissionserrorstext' => 'පහත දැක්වෙන {{PLURAL:$1|හේතුව|හේතූන්}} නිසා, ඔබ හට එය සිදුකිරීමට අවසර ලබා දීමට නොහැක:',
'permissionserrorstext-withaction' => 'පහත {{PLURAL:$1|හේතුව|හේතු}} නිසා, ඔබ හට $2 සඳහා අවසර නොමැත:',
-'recreate-deleted-warn' => "'''අවවාදයයි: පෙරදී මකා දැමූ ගොනුවක් ඔබ විසින් යලි-තනමින් පවතියි.'''
+'recreate-moveddeleted-warn' => "'''අවවාදයයි: පෙරදී මකාදැමුණු පිටුවක් ඔබ විසින් යළි-තනමින් පවතියි.'''
-මෙම පිටුව සංස්කරණය කිරීම තවදුරටත් සිදුකරගෙන යාම සුදුසුද යන වග ඔබ විසින් සලකා බැලිය යුතුය.
-මෙම පිටුවට අදාල මකා දැමීම් පිළිබඳ විස්තර දැක්වෙන මකා-දැමීම්-ලඝු-සටහන ඔබගේ පහසුව තකා මෙහි දක්වා ඇත:",
-'deleted-notice' => 'මෙම පිටුව මකා දමා ඇත.
-මෙම පිටුවට අදාල වන මකා දැමීම් සටහන් කර ඇති මකා-දැමීම්-ලඝු-සටහන, ඔබගේ සැඳහුම සඳහා, මෙහි පහත දක්වා ඇත.',
-'deletelog-fulllog' => 'සම්පූර්ණ ලඝු-සටහන නරඹන්න',
+මෙම පිටුව සංස්කරණය තවදුරටත් සිදු කරලීම සුදුසු දැයි එබ විසින් සලකා බැලිය යුතුව ඇත.
+මෙම පිටුව සඳහා මකාදැමීම් හා ගෙන යෑම් ලඝු-සටහන් ඔබගේ පහසුව තකා මෙහි දක්වා ඇත:",
+'moveddeleted-notice' => 'මෙම පිටුව මකාදමා ඇත.
+පිටුව සඳහා මකාදැමීම් හා ගෙන යෑම් ලඝු-සටහන් ඔබගේ පහසුව තකා මෙහි පහත දක්වා ඇත.',
+'log-fulllog' => 'මුළු ලඝු-සටහන නරඹන්න',
'edit-hook-aborted' => 'හසුර මගින් සංස්කරණය රෝධනය කෙරිණි.
එය කිසිදු පැහැදිලි කිරීමක් නොදුනි.',
'edit-gone-missing' => 'පිටුව යාවත්කාල කිරීම සිදුකල නොහැකි විය.
@@ -889,6 +915,7 @@ HTML ටැගයන් පිරික්සන්න.',
'post-expand-template-argument-category' => 'මෙම පිටුවල, සැකිලි විචල්‍යයන් හරියාකාර දැක්වීම පැහැර හැරීම පිළිබඳ ගැටළු පවතී',
'parser-template-loop-warning' => 'සැකිලි ලූපය අනාවරණය කෙරිණි: [[$1]]',
'parser-template-recursion-depth-warning' => 'සැකිලි ආවර්තනික අධිකත්ව සීමාව ඉක්මවිණි ($1)',
+'language-converter-depth-warning' => 'භාෂා පරිවර්තක අධිකත්ව සීමාව ඉක්මවා ඇත ($1)',
# "Undo" feature
'undo-success' => 'සංස්කරණය අහෝසි කල හැක.
@@ -909,7 +936,7 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'currentrev' => 'වත්මන් සංශෝධනය',
'currentrev-asof' => '$1 වන විට වත්මන් සංශෝධනය',
'revisionasof' => '$1 තෙක් සංශෝධනය',
-'revision-info' => '$1 වන විට $2 විසින් සිදු කර ඇති සංශෝධන', # Additionally available: $3: revision id
+'revision-info' => '$1 වන විට $2 විසින් සිදු කර ඇති සංශෝධන',
'previousrevision' => '← පැරණි සංශෝධනය',
'nextrevision' => 'නව සංශෝධනය →',
'currentrevisionlink' => 'වත්මන් සංශෝධනය',
@@ -922,7 +949,7 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
ආඛ්‍යායිකාව: (වත්මන්) = වත්මන් අනුවාදය හා සමග වෙනස,
(අවසන්) = පෙර අනුවාදය හා සමග වෙනස, සුළු = සුළු සංස්කරණය.',
'history-fieldset-title' => 'ඉතිහාසය පිරික්සන්න',
-'deletedrev' => '[මකා දමන ලදි]',
+'history-show-deleted' => 'මකනු ලැබූ ඒවා පමණයි',
'histfirst' => 'පැරණිතම',
'histlast' => 'නවීනතම',
'historysize' => '({{PLURAL:$1|බයිට්1 |බයිට් $1 ගණනක්}})',
@@ -931,71 +958,109 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
# Revision feed
'history-feed-title' => 'සංශෝධන ඉතිහාසය',
'history-feed-description' => 'විකියෙහි මෙම පිටුව සඳහා ඇති සංශෝධන ඉතිහාසය',
-'history-feed-item-nocomment' => '$1 විසින් $2 හිදී', # user at time
+'history-feed-item-nocomment' => '$1 විසින් $2 හිදී',
'history-feed-empty' => 'අයැදුනු පිටුව නොපවතියි.
එය විකියෙන් මකා දමා හෝ නම-වෙනස් කොට ඇතිවා විය හැකිය.
අදාල නව පිටු සඳහා [[Special:Search|විකිය තුල ගවේෂණය]] අත්හදා බලන්න.',
# Revision deletion
-'rev-deleted-comment' => '(පරිකථනය ඉවත් කරන ලදි)',
-'rev-deleted-user' => '(පරිශීලක-නාමය ඉවත් කරන ලදි)',
-'rev-deleted-event' => '(ලඝු-සටහන් තැබීමේ ක්‍රියාව අත්හිටුවන ලදි)',
-'rev-deleted-text-permission' => 'මෙම පිටු සංශෝධනය පොදු සංරක්ෂිතයෙන් ඉවත් කර ඇත.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහනෙහි] විස්තර අඩංගුව තිබිය හැක.',
-'rev-deleted-text-view' => 'මෙම පිටු සංශෝධනය පොදු සංරක්ෂිතයෙන් ඉවත් කර ඇත.
-{{SITENAME}} හි පරිපාලකවරයෙකු වශයෙන් ඔබ හට එය නැරඹිය හැක;
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහනෙහි] විස්තර අඩංගුව තිබිය හැක.',
-'rev-deleted-no-diff' => "ඔබ හට මෙම වෙනස නැරඹිය නොහැක්කේ සංශෝධන වලින් එකක් '''මකාදැමීම''' සිදුකර ඇති බැවිනි.
- [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම ලඝු-සටහනෙහි] විස්තර තිබිය හැක.",
-'rev-deleted-unhide-diff' => "මෙම වෙනස හි එක් සංශෝධනයක් '''මකාදැමීම''' සිදු කර ඇත.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහනෙහි] විස්තර තිබිය හැකිය.
-ඔබ හට එය සිදුකිරීම‍ට අවශ්‍ය නම්, පරිපාලකවරයෙකු ලෙසින් ඔබ හට තවමත් [$1 මෙම වෙනස නැරඹීම] සිදු කල හැකිය.",
-'rev-delundel' => 'පෙන්වන්න/සඟවන්න',
-'revisiondelete' => 'සංශෝධන මකා දමන්න/මකා දැමීම ප්‍රතිලෝම කරන්න',
-'revdelete-nooldid-title' => 'ඉලක්කගත සංශෝධනය අනීතිකයි',
-'revdelete-nooldid-text' => 'මෙම කාර්යය ඉටු කිරීම සඳහා එක්කෝ ඔබ විසින් ඉලක්කගත සංශෝධනය(න්) නොදක්වයි,
+'rev-deleted-comment' => '(පරිකථනය ඉවත් කරන ලදි)',
+'rev-deleted-user' => '(පරිශීලක-නාමය ඉවත් කරන ලදි)',
+'rev-deleted-event' => '(ලඝු-සටහන් තැබීමේ ක්‍රියාව අත්හිටුවන ලදි)',
+'rev-deleted-user-contribs' => '[පරිශීපක නාමය හෝ ලිපිනය ඉවත් කළා - දායකත්ව මඟින් සඟවන ලද සංස්කරණය]',
+'rev-deleted-text-permission' => "මෙම පිටු සංශෝධනය '''මකා දමා ඇත'''.
+වැඩි විස්තර බොහෝ විට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහන] වෙත තිබීමට ඉඩ ඇත.",
+'rev-deleted-text-unhide' => "මෙම පිටු සංශෝධනය '''මකාදමා ඇත'''.
+විස්තර බොහෝ විට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහන] හි තිබීමට ඉඩ ඇත.
+පරිපාලකවරයෙකු වශයෙන්, මේ පිළිබඳ කටයුතු සිදු කිරීමට ඇවැසි නම්, ඔබට [$1 මෙම සංශෝධනය නැරඹිම] තවමත් සිදුකල හැක.",
+'rev-suppressed-text-unhide' => 'මෙම පිටුව සංශෝධනය කිරීම "මකා දමා ඇත".විස්තර [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}යටපත් කිරීම් ලඝු-සටහනේ]තිබීමට ඉඩ ඇත.ඔබ ඉදිරියට යෑමට කැමතිනම් පරිපාලකයෙකු වශයෙන් තවමත් ඔබට [$1 මෙම සංශෝධනය නැරඹීමට] හැකිය.',
+'rev-deleted-text-view' => "මෙම පිටු සංශෝධනය '''මකා දමා ඇත'''.
+පරිපාලකයෙකු වශයෙන් එය ඔබහට නැරඹිය හැක; වැඩි විස්තර බොහෝ විට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහන] වෙත තිබීමට ඉඩ ඇත.",
+'rev-suppressed-text-view' => 'මෙම පිටුව සංශෝධනය "\'වළක්වා ඇත"\'.ඔබට පරිපාලකයෙකු වශයෙන් තවමත් එය නැරඹීමට හැක;විස්තර [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}වැළැක්වීම් ලඝු-සටහනේ].ඇත.',
+'rev-deleted-no-diff' => "මෙම වෙනස ඔබ හට නැරඹිය නොහැකි වන්නේ එක් සංශෝධනයක් '''මකා දමා ඇති''' බැවිනි.
+විස්තර බොහෝවිට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහන] හි තිබීමට ඉඩ ඇත.",
+'rev-suppressed-no-diff' => 'සංශෝධනයන්වලින් එකක් "\'මකා දමනු ලැබ"\' ඇති බැවින් ඔබට මෙම diff නැරඹිය නොහැක.',
+'rev-deleted-unhide-diff' => "මෙම වෙනස හි එක් සංශෝධනයක් '''මකාදමා ඇත'''.
+විස්තර බොහෝවිට [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} යටපත්කිරීම් ලඝු-සටහන]හි තිබීමට ඉඩ ඇත.
+පරිපාලකවරයෙකු වශයෙන්, මේ පිළිබඳ කටයුතු සිදු කිරීමට ඇවැසි නම්, ඔබට [$1 මෙම වෙනස නැරඹීම] තවමත් සිදුකල හැක.",
+'rev-suppressed-unhide-diff' => 'මෙම වෙනස හි එක් සංශෝධනයක් "\'මකාදමා ඇත"\'. විස්තර බොහෝවිට [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}යටපත්කිරීම් ලඝු-සටහනහි]තිබීමට ඉඩ ඇත. පරිපාලකවරයෙකු වශයෙන්, මේ පිළිබඳ කටයුතු සිදු කිරීමට ඇවැසි නම්, ඔබට [$1 මෙම වෙනස නැරඹීම] තවමත් සිදුකල හැක.',
+'rev-deleted-diff-view' => 'මෙම වෙනසෙහි එක් සංශෝධනයක් "\'මකා දමා ඇත"\'.පරිපාලකයෙකු වශයෙන් ඔබට මෙම වෙනස නැරඹිය හැකිය;විස්තර [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහනේ] තිබීමට ඉඩ ඇත.',
+'rev-suppressed-diff-view' => "මෙම වෙනසෙහි එක් සංශෝධනයක් '''මකා දමා ඇත'''.
+පරිපාලකයෙකු වශයෙන් ඔබට එම වෙනස නැරඹිය හැක; වැඩි විස්තර බොහෝ විට [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} යටපත්කිරීම් ලඝු-සටහන] වෙත තිබීමට ඉඩ ඇත.",
+'rev-delundel' => 'පෙන්වන්න/සඟවන්න',
+'rev-showdeleted' => 'පෙන්වන්න',
+'revisiondelete' => 'සංශෝධන මකා දමන්න/මකා දැමීම ප්‍රතිලෝම කරන්න',
+'revdelete-nooldid-title' => 'ඉලක්කගත සංශෝධනය අනීතිකයි',
+'revdelete-nooldid-text' => 'මෙම කාර්යය ඉටු කිරීම සඳහා එක්කෝ ඔබ විසින් ඉලක්කගත සංශෝධනය(න්) නොදක්වයි,
සඳහන් කල සංශෝධනය නොපවතියි, නැතහොත්, වත්මන් සංශෝධනය සැඟවීමට ඔබ යත්න දරයි.',
-'revdelete-nologtype-title' => 'ලඝු-සටහන් වර්ගයක් දක්වා නොමැත',
-'revdelete-nologtype-text' => 'මෙම ක්‍රියාව සිදු කල හැකි වන පරිදී ලඝු-සටහන් වර්ගයක් දැක්විය යුතු වුවද ඔබ එසේ කර නොමැත.',
-'revdelete-toomanytargets-title' => 'පමණට වැඩි එල්ලයන්',
-'revdelete-toomanytargets-text' => 'මෙම කාර්යය සිදු කරනු වස් පමණට වඩා එල්ලයන් වර්ග ඔබ විසින් දක්වා ඇත.',
-'revdelete-nologid-title' => 'අනීතික ලඝු-සටහන් නිවේශිතය',
-'revdelete-nologid-text' => 'මෙම කෘත්‍යය සිදු කල හැකි වන පරිදී ඔබ විසින් එක්කෝ ඉලක්කගත ලඝු-සටහන් තැබිය යුතු සිදුවීමක් දක්වා නොමැත නැතිනම් දක්වා ඇති නිවේශිතය නොපවතියි.',
-'revdelete-selected' => "'''[[:$1]] හි {{PLURAL:$2|තෝරාගත් සංශෝධනය|තෝරාගත් සංශෝධනයන්}} :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|තෝරාගත් ලඝු-සිදුවීම|තෝරාගත් ලඝු-සිදුවීම්}}:'''",
-'revdelete-text' => "'''මකාදැමුණු සංශෝධන හා සිදුවීම් තවදුරටත් පිටු ඉතිහාසයෙහි හා ලඝු-සටහන් වල පෙන්නුම් කරනු ලැබුවද, එහි අන්තර්ගතයෙන් සමහර කොටස් වෙත ප්‍රජාව විසින් පුවේශ්‍ය විය නොහැකි වේ.'''
-
-අමතර සීමාකිරීම් පනවා නොමැති නම්, {{SITENAME}} හි අනෙකුත් පරිපාලකවරුන් විසින්, සැඟවුනු අන්තර්ගතය පරිශීලනය කිරීම හෝ මෙම අතුරුමුහුණත භාවිතයෙන්ම නැවත මකාදැමුම අවලංගු කිරීම හෝ සිදු කල හැක.",
-'revdelete-suppress-text' => "යටපත්කිරීම පහත අවස්ථාවන්හිදී '''පමණක්''' භාවිතා කල යුතුය:
+'revdelete-nologtype-title' => 'ලඝු-සටහන් වර්ගයක් දක්වා නොමැත',
+'revdelete-nologtype-text' => 'මෙම ක්‍රියාව සිදු කල හැකි වන පරිදී ලඝු-සටහන් වර්ගයක් දැක්විය යුතු වුවද ඔබ එසේ කර නොමැත.',
+'revdelete-nologid-title' => 'අනීතික ලඝු-සටහන් නිවේශිතය',
+'revdelete-nologid-text' => 'මෙම කෘත්‍යය සිදු කල හැකි වන පරිදී ඔබ විසින් එක්කෝ ඉලක්කගත ලඝු-සටහන් තැබිය යුතු සිදුවීමක් දක්වා නොමැත නැතිනම් දක්වා ඇති නිවේශිතය නොපවතියි.',
+'revdelete-no-file' => 'නිවේශිත ගොනුව නොපවතියි.',
+'revdelete-show-file-confirm' => '$2 දින $3 වේලාවේදී මකාදැමුනු "<nowiki>$1</nowiki>" ගොනුවෙහි සංශෝධනයක් නැරඹීමට ඔබ හට සහතික වශයෙන් ඇවැසිද?',
+'revdelete-show-file-submit' => 'ඔව්',
+'revdelete-selected' => "'''[[:$1]] හි {{PLURAL:$2|තෝරාගත් සංශෝධනය|තෝරාගත් සංශෝධනයන්}} :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|තෝරාගත් ලඝු-සිදුවීම|තෝරාගත් ලඝු-සිදුවීම්}}:'''",
+'revdelete-text' => "'''මකාදැමුණු සංශෝධනයන් හා සිද්ධීන් තවදුරටත් පිටු විත්ති හා ලඝු-සටහන් හි දර්ශනය වුවද, ප්‍රජාව ට ප්‍රවිෂ්ඨ විය හැක්කේ ඒවායේ අන්තර්ගතයෙන් කොටසකටය.'''
+අමතර සීමා පණවා නොමැති නම්, සැඟවුනු අන්තර්ගතයට එළඹී, යම් අතුරුමුහුණතක් ඔස්සේ, එය මකාදැමුම යළි අවලංගු කිරීමට, {{SITENAME}} හි අනෙකුත් පරිපාලකයන්හට තවමත් අවතාශ ඇත්තේය.",
+'revdelete-confirm' => 'කරුණාකර ඔබ මෙය කිරීමට අදහස් කරන බවත්,එහි ප්‍රතිඵලය අවබෝධ කර ගන්නා බවත්,මෙය සිදු කරනුයේ [[{{MediaWiki:Policy-url}}| ප්‍රතිපත්තියට]] අනුකූලව බවත් තහවුරු කරන්න.',
+'revdelete-suppress-text' => "යටපත්කිරීම පහත අවස්ථාවන්හිදී '''පමණක්''' භාවිතා කල යුතුය:
* නුසුදුසු පෞද්ගලික තොරතුරු
*: ''නිවසෙහි ලිපින හා දුරකතන අංක ආදිය.''",
-'revdelete-legend' => 'දෘශ්‍ය අවහිරකිරීම් සකසන්න',
-'revdelete-hide-text' => 'සංශෝධන පෙළ සඟවන්න',
-'revdelete-hide-name' => 'ක්‍රියාව හා ඉලක්කය සඟවන්න',
-'revdelete-hide-comment' => 'සංස්කරණ පරිකථනය සඟවන්න',
-'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය සඟවන්න',
-'revdelete-hide-restricted' => 'අනෙකුන් මෙන්ම පරිපාලකවරුන් ගෙන්ද මෙම දත්ත යටපත්කරන්න',
-'revdelete-suppress' => 'අනෙකුන්ගෙන් මෙන්ම පරිපාලකයන්ගෙන්ද දත්ත යටපත් කරන්න',
-'revdelete-hide-image' => 'ගොනු අන්තර්ගතය සඟවන්න',
-'revdelete-unsuppress' => 'ප්‍රතිෂ්ඨාපනය කරන ලද සංශෝධනයන් විෂයයෙහි පැනවුනු පරිසීමා ඉවත්කරන්න',
-'revdelete-log' => 'හේතුව:',
-'revdelete-submit' => 'තෝරාගත් සංශෝධනයට යොදන්න',
-'revdelete-logentry' => ' [[$1]] හි සංශෝධන සංජානනය වෙනස්කරන ලදි',
-'logdelete-logentry' => '[[$1]] හි සිදුවීම් සංජානනය වෙනස්කරන ලදි',
-'revdelete-success' => "'''සංශෝධන සංජානනය සාර්ථකව යාවත්කාලීන කරන ලදි.'''",
-'logdelete-success' => "'''ලඝු-සටහන් සංජානනය සාර්ථකව පරිස්ථාපනය කෙරිණි.'''",
-'revdel-restore' => 'සංජානනය වෙනස් කරන්න',
-'pagehist' => 'පිටු ඉතිහාසය',
-'deletedhist' => 'මකාදැමූ ඉතිහාසය',
-'revdelete-content' => 'අන්තර්ගතය',
-'revdelete-summary' => 'සංස්කරණ සාරාංශය',
-'revdelete-uname' => 'පරිශීලක-නාමය',
-'revdelete-restricted' => 'පරිපාලකයන් විෂයයෙහි ව්‍යවහාරිත පරිසීමාවන්',
-'revdelete-unrestricted' => 'පරිපාලකයන්ගේ පරිසීමාවන් ඉවත් කරන ලදි',
-'revdelete-hid' => '$1 සඟවන ලදි',
-'revdelete-unhid' => '$1 අනාවරණය කරන ලදි',
-'revdelete-log-message' => '{{PLURAL:$2|එක් සංශෝධනයක්|සංශෝධන $2 ක්}} විෂයයෙහි $1',
-'logdelete-log-message' => '{{PLURAL:$2|එක් සිදුවීමක්|සිදුවීම් $2 ක්}} විෂයයෙහි $1',
+'revdelete-legend' => 'දෘශ්‍ය අවහිරකිරීම් සකසන්න',
+'revdelete-hide-text' => 'සංශෝධන පෙළ සඟවන්න',
+'revdelete-hide-image' => 'ගොනු අන්තර්ගතය සඟවන්න',
+'revdelete-hide-name' => 'ක්‍රියාව හා ඉලක්කය සඟවන්න',
+'revdelete-hide-comment' => 'සංස්කරණ පරිකථනය සඟවන්න',
+'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය සඟවන්න',
+'revdelete-hide-restricted' => 'අනෙකුන් මෙන්ම පරිපාලකවරුන් ගෙන්ද මෙම දත්ත යටපත්කරන්න',
+'revdelete-radio-same' => '(වෙනස් නොකරන්න)',
+'revdelete-radio-set' => 'ඔව්',
+'revdelete-radio-unset' => 'නැත',
+'revdelete-suppress' => 'අනෙකුන්ගෙන් මෙන්ම පරිපාලකයන්ගෙන්ද දත්ත යටපත් කරන්න',
+'revdelete-unsuppress' => 'ප්‍රතිෂ්ඨාපනය කරන ලද සංශෝධනයන් විෂයයෙහි පැනවුනු පරිසීමා ඉවත්කරන්න',
+'revdelete-log' => 'හේතුව:',
+'revdelete-submit' => 'තෝරාගත් {{PLURAL:$1|සංශෝධනය|සංශෝධනයන්}}ට යොදන්න',
+'revdelete-logentry' => ' [[$1]] හි සංශෝධන සංජානනය වෙනස්කරන ලදි',
+'logdelete-logentry' => '[[$1]] හි සිදුවීම් සංජානනය වෙනස්කරන ලදි',
+'revdelete-success' => "'''සංශෝධන සංජානනය සාර්ථකව යාවත්කාලීන කරන ලදි.'''",
+'revdelete-failure' => "'''සංශෝධන දෘශ්‍යතාවය යාවත්කාලීන කළ නොහැකි විය:'''
+$1",
+'logdelete-success' => "'''ලඝු-සටහන් සංජානනය සාර්ථකව පරිස්ථාපනය කෙරිණි.'''",
+'logdelete-failure' => "'''ලඝු-සටහන් දෘශ්‍යතාවය නියම කිරීම කල නොහැකි විය:'''
+$1",
+'revdel-restore' => 'සංජානනය වෙනස් කරන්න',
+'pagehist' => 'පිටු ඉතිහාසය',
+'deletedhist' => 'මකාදැමූ ඉතිහාසය',
+'revdelete-content' => 'අන්තර්ගතය',
+'revdelete-summary' => 'සංස්කරණ සාරාංශය',
+'revdelete-uname' => 'පරිශීලක-නාමය',
+'revdelete-restricted' => 'පරිපාලකයන් විෂයයෙහි ව්‍යවහාරිත පරිසීමාවන්',
+'revdelete-unrestricted' => 'පරිපාලකයන්ගේ පරිසීමාවන් ඉවත් කරන ලදි',
+'revdelete-hid' => '$1 සඟවන ලදි',
+'revdelete-unhid' => '$1 අනාවරණය කරන ලදි',
+'revdelete-log-message' => '{{PLURAL:$2|එක් සංශෝධනයක්|සංශෝධන $2 ක්}} විෂයයෙහි $1',
+'logdelete-log-message' => '{{PLURAL:$2|එක් සිදුවීමක්|සිදුවීම් $2 ක්}} විෂයයෙහි $1',
+'revdelete-hide-current' => '$1දින, $2 වේලාවෙහි, අයිතමය සැඟවීමෙහිදී දෝෂයක් ඇති වී ඇත: මෙය මෑත සංශෝධනය වෙයි.
+එය සැඟවිය නොහැක.',
+'revdelete-show-no-access' => '$1 දින, $2 වේලාවෙහි, අයිතමය ප්‍රදර්ශනය කිරීමෙහිදී දෝෂයක් ඇතිවී ඇත: මෙම අයිතමය "පරිසීමිත" ලෙසින් සලකුණු කර ඇත.
+ඔබට ඒ සඳහා ප්‍රවේශයන් නොමැත.',
+'revdelete-modify-no-access' => '$1 දින, $2 වේලාවෙහි, අයිතමය වෙනස්කිරීමෙහිදී දෝෂයක් ඇතිවී ඇත: මෙම අයිතමය "පරිසීමිත" ලෙසින් සලකුණු කර ඇත.
+ඔබට ඒ සඳහා ප්‍රවේශයන් නොමැත.',
+'revdelete-modify-missing' => 'අනන්‍යාංක $1 දරණ අයිතමය වෙනස් කිරීමෙහිදී දෝෂයක් ඇතිවී ඇත: එය දත්ත ගබඩාවෙන් අස්ථානගතවී ඇත!',
+'revdelete-no-change' => "'''අවවාදයයි:''' $1 දින, $2 වේලාවෙහි, අයිතමය දැනටමත් දෘශ්‍යතා පරිස්ථිතීන් ඉල්ලා සිට ඇත.",
+'revdelete-concurrent-change' => '$1 දින, $2 වේලාවෙහි, අයිතමය වෙනස් කිරීමෙහිදී දෝෂයක් ඇතිවී ඇත: එය වෙනස්කිරීමට ඔබ උත්සාහ ගන්නා අතරතුරදී තවත් අයෙකු විසින් එහි ස්තිතිය වෙනස් කර ඇති බවක් පෙනෙන්නට ඇත.
+කරුණාකර ලඝු-සටහන් පරික්ෂාකර බලන්න.',
+'revdelete-only-restricted' => '$2 දිනැති අයිතමය සැඟවීමේ දෝෂය , $1:අනෙකුත් සැඟවීම් විකල්පයන් අතුරින් එකක් තෝරාගන්නේ නැතිව, පරිපාලකයන්ගේ දර්ශනයෙන් අයිතමයන් සැඟවීම ඔබහට සිදුකල නොහැක.',
+'revdelete-reason-dropdown' => '*මකා දැමීමේ පොදු හේතු
+**කතු හිමිකම් උල්ලංඝනය
+**නුසුදුසු පුද්ගලික කොරතුරු
+**අපහාසාත්මක විය හැකි තොරතුරු',
+'revdelete-otherreason' => 'වෙනත්/අමතර හේතු:',
+'revdelete-reasonotherlist' => 'වෙනත් හේතු',
+'revdelete-edit-reasonlist' => 'මකා දැමීමට හේතූන් සංස්කරණය කරන්න',
+'revdelete-offender' => 'සංශෝධන කතෘ:',
# Suppression log
'suppressionlog' => 'යටපත්කිරීම් පිළිබඳ ලඝු-සටහන',
@@ -1034,68 +1099,13 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'mergelogpagetext' => 'එක් පිටු ඉතිහාසයක් තවකක් හා සමග ඉතා මෑතදී සිදුවූ ඒකාබද්ධ වීම් දැක්වෙන ලැයිස්තුවක් පහත වේ.',
# Diffs
-'history-title' => '"$1"හි සංශෝධන ඉතිහාසය',
-'difference' => '(අනුවාද අතර වෙනස්කම්)',
-'lineno' => 'පේළිය $1:',
-'compareselectedversions' => 'තෝරාගත් සංශෝධන සසඳන්න',
-'visualcomparison' => 'දෘශ්‍ය සැසැඳුම',
-'wikicodecomparison' => 'විකිපෙළ සැසැඳුම',
-'editundo' => 'අහෝසි කරන්න',
-'diff-multi' => '({{PLURAL:$1|එක් අතරමැදි සංශෝධනයක්| අතරමැදි සංශෝධන $1 ක්}} පෙන්නුම් කර නොමැත.)',
-'diff-movedto' => '$1 වෙත ගෙන යන ලදි',
-'diff-styleadded' => '$1 ශෛලිය එක් කරන ලදි',
-'diff-added' => '$1 එක් කරන ලදි',
-'diff-changedto' => '$1 බවට වෙනස් කරන ලදි',
-'diff-movedoutof' => '$1 වෙතින් ඉවතට ගෙන යන ලදි',
-'diff-styleremoved' => '$1 ශෛලිය ඉවත් කරන ලදි',
-'diff-removed' => '$1 ඉවත් කරන ලදි',
-'diff-changedfrom' => '$1 වෙතින් වෙනස් කරන ලදි',
-'diff-src' => 'මූලාශ්‍රය',
-'diff-withdestination' => '$1 අන්තය සමගින්',
-'diff-with' => '&#32; $1 $2 සමගින්',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;සහ $1 $2',
-'diff-width' => 'පළල',
-'diff-height' => 'උස',
-'diff-p' => "එක් '''ඡේදයක්'''",
-'diff-blockquote' => "එක් '''උද්ධෘතයක්'''",
-'diff-h1' => "එක් '''ශීර්ෂනාමයක් (1 මට්ටම)'''",
-'diff-h2' => "එක් '''ශීර්ෂනාමය (2වන මට්ටම)'''ක්",
-'diff-h3' => "එක් '''ශීර්ෂනාමය (3වන මට්ටම)'''ක්",
-'diff-h4' => "එක් '''ශීර්ෂනාමය (4වන මට්ටම)'''ක්",
-'diff-h5' => "එක් '''ශීර්ෂනාමය (5වන මට්ටම)'''ක්",
-'diff-pre' => "එක් '''පූර්වආකෘතිකරණය නෙරුණු වාරණය'''ක්",
-'diff-div' => "එක් '''අංශය'''ක්",
-'diff-ul' => "එක් '''අනුපිළිවෙලට නොසැකසූ ලැයිස්තුව'''ක්",
-'diff-ol' => "එක් '''අනුපිළිවෙලට සැකසූ ලැයිස්තුව'''ක්",
-'diff-li' => "එක් '''ලැයිස්තුගත අයිතමය'''ක්",
-'diff-table' => "එක් '''වගුව'''ක්",
-'diff-tbody' => "එක් '''වගුවක අන්තර්ගතය'''ක්",
-'diff-tr' => "එක් '''පේළිය'''ක්",
-'diff-td' => "එක් '''කොටුව'''ක්",
-'diff-th' => "එක් '''ශීර්ෂකය'''ක්",
-'diff-br' => "එක් '''කඩනය'''ක්",
-'diff-hr' => " '''තිරස් රූල''' කි",
-'diff-code' => "එක් '''පරිගණක කේත වාරණය'''ක්",
-'diff-dl' => "එක් '''අර්ථදැක්වීම් ලැයිස්තුව'''ක්",
-'diff-dt' => "'''අර්ථදැක්වුම් භාෂිතය''' කි",
-'diff-dd' => "එක් '''අර්ථදැක්වීම'''ක්",
-'diff-input' => "එක් '''ප්‍රදානය'''ක්",
-'diff-form' => "එක් '''ආකෘති-පත්‍රය'''ක්",
-'diff-img' => "එක් '''රූපය'''ක්",
-'diff-span' => "එක් '''පරායණය'''ක්",
-'diff-a' => "එක් '''සබැඳිය'''ක්",
-'diff-i' => "'''ඇලකුරු'''",
-'diff-b' => "'''තදකුරු'''",
-'diff-strong' => "'''පබල'''",
-'diff-em' => "'''අවධාරණය'''",
-'diff-font' => "'''අකුරු හැඩය'''",
-'diff-big' => "'''විශාල'''",
-'diff-del' => "'''මකන ලදි'''",
-'diff-tt' => "'''අචල පළල'''",
-'diff-sub' => "'''යටකුර'''",
-'diff-sup' => "'''උඩකුර'''",
-'diff-strike' => "'''මැදි-ඉරැති'''",
+'history-title' => '"$1"හි සංශෝධන ඉතිහාසය',
+'difference' => '(අනුවාද අතර වෙනස්කම්)',
+'lineno' => 'පේළිය $1:',
+'compareselectedversions' => 'තෝරාගත් සංශෝධන සසඳන්න',
+'showhideselectedversions' => 'තෝරාගත් සංශෝධන පෙන්වන්න/සඟවන්න',
+'editundo' => 'අහෝසි කරන්න',
+'diff-multi' => '({{PLURAL:$1|එක් අතරමැදි සංශෝධනයක්| අතරමැදි සංශෝධන $1 ක්}} පෙන්නුම් කර නොමැත.)',
# Search results
'searchresults' => 'ගවේෂණ ප්‍රතිඵල',
@@ -1103,29 +1113,25 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'searchresulttext' => '{{SITENAME}} ගවේෂණය පිළිබඳ වැඩි විස්තර සඳහා , [[{{MediaWiki:Helppage}}|{{int:help}}]] බලන්න.',
'searchsubtitle' => 'ඔබගේ ගවේෂණය වූයේ \'\'\'[[:$1]]\'\'\' සඳහාය ([[Special:Prefixindex/$1| "$1" යෙන් ඇරඹෙන සියළු පිටු]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1| "$1" වෙත සබැ‍ඳෙන සියළු පිටු]])',
'searchsubtitleinvalid' => "ඔබගේ ගවේෂණය වූයේ '''$1''' සඳහාය",
-'noexactmatch' => "''' \"\$1\" යන නාමය හිමි පිටුවක් නොමැත.'''
-ඔබ හට [[:\$1|මෙම පිටුව තැනිය හැක]].",
-'noexactmatch-nocreate' => "''' \"\$1\" නමැති පිටුවක් නොමැත.'''",
'toomanymatches' => 'පමණට වඩා ගැලපුම් ගණනක් ලැබුණි, කරුණාකර වෙනස් විමසුමක් සිදුකර බලන්න',
'titlematches' => 'පිටු ශීර්ෂය ගැළපෙයි',
'notitlematches' => 'පිටු ශීර්ෂ කිසිවක් නොගැළපෙති',
'textmatches' => 'පිටු පෙළ ගැළපෙයි',
'notextmatches' => 'පිටු පෙළ කිසිවක් නොගැළපෙයි',
-'prevn' => 'පූර්ව $1',
-'nextn' => 'ඊලඟ $1',
+'prevn' => 'පූර්ව {{PLURAL:$1|$1}}',
+'nextn' => 'මීලඟ {{PLURAL:$1|$1}}',
'prevn-title' => 'පූර්ව {{PLURAL:$1|ප්‍රතිඵලය|ප්‍රතිඵලයන් $1}}',
'nextn-title' => 'මීලඟ {{PLURAL:$1|ප්‍රතිඵලය|ප්‍රතිඵල $1}}',
'shown-title' => 'එක් පිටුවක {{PLURAL:$1|ප්‍රතිඵලයක්|ප්‍රතිඵල $1 ක්}} බැගින් පෙන්වන්න',
-'viewprevnext' => '($1) ($2) ($3) නරඹන්න',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) නරඹන්න',
'searchmenu-legend' => 'ගවේෂණ තෝරාගැනීම්',
'searchmenu-exists' => "''' මෙම විකියෙහි \"[[:\$1]]\" ලෙස නම් කර ඇති පිටුවක් ඇත'''",
'searchmenu-new' => "'''මෙම විකියෙහි \"[[:\$1]]\" පිටුව තනන්න!'''",
'searchhelp-url' => 'Help:පටුන',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|මෙම උපසර්ගය භාවිත කරමින් පිටු පිරික්සන්න]]',
'searchprofile-articles' => 'අන්තර්ගත පිටු',
-'searchprofile-articles-and-proj' => 'අන්තර්ගත හා ව්‍යාපෘති පිටු',
-'searchprofile-project' => 'ව්‍යාපෘති පිටු',
-'searchprofile-images' => 'ගොනු',
+'searchprofile-project' => 'උදවු හා ව්‍යාපෘති පිටු',
+'searchprofile-images' => 'බහුමාධ්‍ය',
'searchprofile-everything' => 'සියල්ල',
'searchprofile-advanced' => 'ප්‍රගත',
'searchprofile-articles-tooltip' => '$1 හි ගවේෂණය කරන්න',
@@ -1133,8 +1139,6 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'searchprofile-images-tooltip' => 'ගොනු සඳහා ගවේෂණය කරන්න',
'searchprofile-everything-tooltip' => 'සියළු අන්තර්ගතය ගවේෂණය කරන්න(සාකච්ඡා පිටුද ඇතුළුව)',
'searchprofile-advanced-tooltip' => 'අභිරුචි නාමඅවකාශයන්හි ගවේෂණය කරන්න',
-'prefs-search-nsdefault' => 'පෙරනිමියන් භාවිතයෙන් ගවේෂණය කරන්න:',
-'prefs-search-nscustom' => 'අභිරුචි නාමඅවකාශයන් ගවේෂණය කරන්න:',
'search-result-size' => '$1 ({{PLURAL:$2|වචන1 ක් |වචන $2 ක්}})',
'search-result-score' => 'අදාළතාව: $1%',
'search-redirect' => '($1 යළි-යොමු කරන්න)',
@@ -1147,11 +1151,12 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'search-mwsuggest-disabled' => 'ඇඟවිලි නොමැත',
'search-relatedarticle' => 'සහසම්බන්ධිත',
'mwsuggest-disable' => 'AJAX ඇඟවිලි අක්‍රීය කරන්න',
+'searcheverything-enable' => 'සියළු නාමඅවකාශයන්හි ගවේෂණය කරන්න',
'searchrelated' => 'සම්බන්ධිත',
'searchall' => 'සියල්ල',
'showingresults' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$1|ප්‍රතිඵල '''1''' ක් |ප්‍රතිඵල '''$1''' ක්}} දක්වා පහත පෙන්වා ඇත.",
'showingresultsnum' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$3|ප්‍රතිඵල '''1''' ක් |ප්‍රතිඵල '''$3''' ක්}} පහත පෙන්වා ඇත.",
-'showingresultstotal' => "{{PLURAL:$4| '''$3''' අතුරින් '''$1''' ප්‍රතිඵලය|''''$3''' අතුරින් ''$1 - $2''' ප්‍රතිඵල }} පහත පෙන්වා ඇත",
+'showingresultsheader' => "'''$4''' සඳහා {{PLURAL:$5| '''$3''' අතුරින් '''$1''' ප්‍රතිඵලය| '''$3''' අතුරින් '''$1 - $2''' ප්‍රතිඵලයන් }}",
'nonefound' => "'''සටහන''': පෙරනිමියෙන් ගවේෂණය වන්නේ සමහරක් නාමඅවකාශ පමණි.
ඔබ‍ගේ විමසුමට ''all:'' උපසර්ගය යෙදීම මගින් සියළු අන්තර්ගතය ගවේෂණයට ඉඩ සැලසීම අත්හදා බලන්න (සාකච්ඡා පිටු, සැකිලි, ආදියද ඇතුළුව), නැතහොත්, උපසර්ගය ලෙස අපේක්‍ෂිත නාමඅවකාශය භාවිතා කරන්න.",
'search-nonefound' => 'විමසුම හා ගැලපෙන ප්‍රතිථල කිසිවක් නොමැත.',
@@ -1160,97 +1165,136 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
'powersearch-ns' => 'නාමඅවකාශයන්හි ගවේෂණය කරන්න:',
'powersearch-redir' => 'යළි-යොමුවීම් ලැයිස්තුගත කරන්න',
'powersearch-field' => 'සඳහා ගවේෂණය',
+'powersearch-togglelabel' => 'පිරික්සන්න:',
+'powersearch-toggleall' => 'සියල්ල',
+'powersearch-togglenone' => 'කිසිවක් නොමැත',
'search-external' => 'බාහිර ගවේෂණය',
'searchdisabled' => '{{SITENAME}} ගවේෂණය අක්‍රීය කොට ඇත.
මේ අතරතුර ඔබ හට ගූගල් ඔස්සේ ගවේෂණය කල හැක.
{{SITENAME}} අන්තර්ගතය පිළිබඳ ඔවුන්ගේ සූචි යල් පැන ගොස් ඇතිවා විය හැකි බව සටහන් කර ගන්න.',
+# Quickbar
+'qbsettings' => 'යුහුතීරුව',
+'qbsettings-none' => 'කිසිවක් නොමැත',
+'qbsettings-fixedleft' => 'ස්ථාවර වම',
+'qbsettings-fixedright' => 'ස්ථාවර දකුණ',
+'qbsettings-floatingleft' => 'ප්ලාවක වම',
+'qbsettings-floatingright' => 'ප්ලාවක දකුණ',
+
# Preferences page
-'preferences' => 'අභීරුචි',
-'mypreferences' => 'මගේ අභිරුචි',
-'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
-'prefsnologin' => 'ප්‍රවිෂ්ට වී නොමැත',
-'prefsnologintext' => 'පරිශීලක අභිරුචි පූරණය කරනු වස්, ඔබ <span class="plainlinks">[{{fullurl:Special:Userlogin|returnto=$1}} ප්‍රවිෂ්ට වී]</span> සිටිය යුතුය.',
-'prefsreset' => 'සංචිතය අනුසාරයෙන් අභිරුචියන් ප්‍රත්‍යාරම්භ කොට ඇත.',
-'qbsettings' => 'යුහුතීරුව',
-'qbsettings-none' => 'කිසිවක් නොමැත',
-'qbsettings-fixedleft' => 'ස්ථාවර වම',
-'qbsettings-fixedright' => 'ස්ථාවර දකුණ',
-'qbsettings-floatingleft' => 'ප්ලාවක වම',
-'qbsettings-floatingright' => 'ප්ලාවක දකුණ',
-'changepassword' => 'මුරපදය වෙනස් කරන්න',
-'skin' => 'ඡවිය',
-'skin-preview' => 'පෙරදසුන',
-'math' => 'ගණිත',
-'dateformat' => 'දත්ත ආකෘතිකරණය',
-'datedefault' => 'අභිරුචියක් නොමැත',
-'datetime' => 'දිනය සහ වේලාව',
-'math_failure' => 'ව්‍යාකරණ විග්‍රහය අසමත් විය',
-'math_unknown_error' => 'අඥාත දෝෂය',
-'math_unknown_function' => 'අඥාත ශ්‍රිතය',
-'math_lexing_error' => 'රීතිමය දෝෂයකි',
-'math_syntax_error' => 'කාරක-රීති දෝෂය',
-'math_image_error' => 'PNG අන්වර්තනය අසාර්ථකවිය;
-latex, dvips, gs, හා convert හී නිදොස් ස්ථාපනය සිදුවී ඇතිදැයි පිරික්සන්න',
-'math_bad_tmpdir' => 'ගණිත තාවකාලික ඩිරෙක්ටරිය තැනීමට හෝ එයට ලිවීමට නොහැක',
-'math_bad_output' => 'ගණිත ප්‍රතිදාන ඩිරෙක්ටරිය තැනීමට හෝ එයට ලිවීමට නොහැක',
-'math_notexvc' => 'texvc අභිවාහකය දක්නට නොමැත;
-වින්‍යාස කෙරුමට කරුණාකර math/README බලන්න.',
-'prefs-personal' => 'පරිශීලක පැතිකඩ',
-'prefs-rc' => 'මෑත වෙනස්කිරීම්',
-'prefs-watchlist' => 'මුර-ලැයිස්තුව',
-'prefs-watchlist-days' => 'මුර-ලැයිස්තුවෙහි පෙන්විය යුතු දිනයන්:',
-'prefs-watchlist-days-max' => '(උපරිමයෙන් දින7 ක්)',
-'prefs-watchlist-edits' => 'ආවර්ධිත මුර-ලැයිස්තුවෙහි පෙන්විය යුතු උපරිම වෙනස්වීම් සංඛ්‍යාව:',
-'prefs-watchlist-edits-max' => '(උපරිම සංඛ්‍යාව: 1000)',
-'prefs-misc' => 'විවිධ',
-'prefs-resetpass' => 'මුර-පදය වෙනස් කරන්න',
-'saveprefs' => 'සුරැකුම',
-'resetprefs' => 'නොසුරැකූ වෙනස්වීම් නිෂ්කාශනය කරන්න',
-'restoreprefs' => 'පෙරනිමි පරිස්ථිතීන් සියල්ල යළි-පිහිටුවන්න',
-'textboxsize' => 'සංස්කරණය කරමින්',
-'prefs-edit-boxsize' => 'සංස්කරණ ‍කවුළුවෙහි ප්‍රමාණය.',
-'rows' => 'පේළි:',
-'columns' => 'තීරු:',
-'searchresultshead' => 'ගවේෂණය',
-'resultsperpage' => 'පිටුවකට හිට් ගණන:',
-'contextlines' => 'හිට් එකකට පේළි ගණන:',
-'contextchars' => 'එක් පේළියකට සන්දර්භය:',
-'stub-threshold' => '<a href="#" class="stub">කොට සබැඳි</a> ආකෘතිකරණය සඳහා සීමකය (බයිට්):',
-'recentchangesdays' => 'මෑත වෙනස්වීම්හි පෙන්විය යුතු දිනයන්:',
-'recentchangesdays-max' => '(උපරිමයෙන් {{PLURAL:$1|එක් දිනක්|දින $1 ක්}})',
-'recentchangescount' => 'මෑත වෙනස්වීම්, ඉතිහාසය හා ලඝු-සටහන් පිටුවල පෙරනිමියෙන් පෙන්විය යුතු සංස්කරණ ගණන:',
-'savedprefs' => 'ඔබගේ අභිරුචි සුරැකීම සිදු කර ඇත.',
-'timezonelegend' => 'වේලා කලාපය:',
-'timezonetext' => '¹ඔබගේ ප්‍රාදේශීය වේලාව සේවාදායකයේ වේලාවෙන් (යූටීසී) වෙනස්වන්නාවූ පැය ගණන.',
-'localtime' => 'ප්‍රාදේශීය වේලාව:',
-'timezoneselect' => 'වේලා කලාපය:',
-'timezoneuseserverdefault' => 'සේවාදායක පෙරනිමිය භාවිතා කරන්න',
-'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
-'timezoneoffset' => 'හිලව්ව¹:',
-'servertime' => 'සර්වරයේ වේලාව:',
-'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
-'timezoneregion-africa' => 'අප්‍රිකාව',
-'timezoneregion-america' => 'ඇමරිකාව',
-'timezoneregion-antarctica' => 'ඇන්ටාටිකාව',
-'timezoneregion-arctic' => 'අත්ලාන්තික්',
-'timezoneregion-asia' => 'ආසියාව',
-'timezoneregion-atlantic' => 'අත්ලාන්තික් සාගරය',
-'timezoneregion-australia' => 'ඔස්ට්‍රේලියාව',
-'timezoneregion-europe' => 'යුරෝපය',
-'timezoneregion-indian' => 'ඉන්දියානු සාගරය',
-'timezoneregion-pacific' => 'පැසිපික් සාගරය',
-'allowemail' => 'අනෙකුත් පරිශීලකයන්ගෙන් විද්‍යුත්-තැපෑල ලැබීම සක්‍රීය කරන්න',
-'prefs-searchoptions' => 'ගවේෂණ විකල්පයන්',
-'prefs-namespaces' => 'නාමඅවකාශ',
-'defaultns' => 'පෙරනිමියෙන් මෙම නාමඅවකාශයන්හි ගවේෂණය කරන්න:',
-'default' => 'පෙරනිමි',
-'files' => 'ගොනු',
-'prefs-custom-css' => 'අභිරුචි CSS',
-'prefs-custom-js' => ' අභිරුචි JS',
+'preferences' => 'අභීරුචි',
+'mypreferences' => 'මගේ අභිරුචි',
+'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
+'prefsnologin' => 'ප්‍රවිෂ්ට වී නොමැත',
+'prefsnologintext' => 'පරිශීලක අභිරුචි සැකසීමට නම්, ඔබ <span class="plainlinks">[{{fullurl:Special:Userlogin|returnto=$1}} ප්‍රවිෂ්ටවී]</span> සිටිය යුතුය.',
+'changepassword' => 'මුරපදය වෙනස් කරන්න',
+'prefs-skin' => 'ඡවිය',
+'skin-preview' => 'පෙරදසුන',
+'prefs-math' => 'ගණිත',
+'datedefault' => 'අභිරුචියක් නොමැත',
+'prefs-datetime' => 'දිනය සහ වේලාව',
+'prefs-personal' => 'පරිශීලක පැතිකඩ',
+'prefs-rc' => 'මෑත වෙනස්කිරීම්',
+'prefs-watchlist' => 'මුර-ලැයිස්තුව',
+'prefs-watchlist-days' => 'මුර-ලැයිස්තුවෙහි පෙන්විය යුතු දිනයන්:',
+'prefs-watchlist-days-max' => '(උපරිමයෙන් දින7 ක්)',
+'prefs-watchlist-edits' => 'ආවර්ධිත මුර-ලැයිස්තුවෙහි පෙන්විය යුතු උපරිම වෙනස්වීම් සංඛ්‍යාව:',
+'prefs-watchlist-edits-max' => '(උපරිම සංඛ්‍යාව: 1000)',
+'prefs-watchlist-token' => 'මුරලැයිස්තු ටෝකනය:',
+'prefs-misc' => 'විවිධ',
+'prefs-resetpass' => 'මුර-පදය වෙනස් කරන්න',
+'prefs-email' => 'විද්‍යුත්-ලිපි තෝරාගැනීම්',
+'prefs-rendering' => 'පෙනුම',
+'saveprefs' => 'සුරැකුම',
+'resetprefs' => 'නොසුරැකූ වෙනස්වීම් නිෂ්කාශනය කරන්න',
+'restoreprefs' => 'පෙරනිමි පරිස්ථිතීන් සියල්ල යළි-පිහිටුවන්න',
+'prefs-editing' => 'සංස්කරණය කරමින්',
+'prefs-edit-boxsize' => 'සංස්කරණ ‍කවුළුවෙහි ප්‍රමාණය.',
+'rows' => 'පේළි:',
+'columns' => 'තීරු:',
+'searchresultshead' => 'ගවේෂණය',
+'resultsperpage' => 'පිටුවකට හිට් ගණන:',
+'contextlines' => 'හිට් එකකට පේළි ගණන:',
+'contextchars' => 'එක් පේළියකට සන්දර්භය:',
+'stub-threshold' => '<a href="#" class="stub">කොට සබැඳි</a> ආකෘතිකරණය සඳහා සීමකය (බයිට්):',
+'recentchangesdays' => 'මෑත වෙනස්වීම්හි පෙන්විය යුතු දිනයන්:',
+'recentchangesdays-max' => '(උපරිමයෙන් {{PLURAL:$1|එක් දිනක්|දින $1 ක්}})',
+'recentchangescount' => 'පෙරනිමියෙන් පෙන්විය යුතු සංස්කරණ ගණන:',
+'prefs-help-recentchangescount' => 'මෑත වෙනස්වීම්, පිටු ඉතිහාසයන්, සහ ලඝු-සටහන් මෙයට ඇතුලත් වෙති.',
+'prefs-help-watchlist-token' => 'මෙම පාටීරය වෙත රහස් කේතයක් ඇතුළු කිරීමෙන් ඔබගේ මුරලැයිස්තුව වෙත RSS පෝෂකයක් ජනනය වනු ඇත.
+මෙම පාටීරයෙහි කේතය දන්නා ඕනෑම අයෙකුට ඔබගේ මුරලැයිස්තුව කියවිය හැකි වන අතර, එබැවින්ම විරල එකක් තෝරාගන්න.
+ඔබ හට භාවිතා කල හැකි අහඹු ලෙස-ජනනය වූ අගයක් මෙන්න: $1',
+'savedprefs' => 'ඔබගේ අභිරුචි සුරැකීම සිදු කර ඇත.',
+'timezonelegend' => 'වේලා කලාපය:',
+'localtime' => 'ප්‍රාදේශීය වේලාව:',
+'timezoneuseserverdefault' => 'සේවාදායක පෙරනිමිය භාවිතා කරන්න',
+'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
+'timezoneoffset' => 'හිලව්ව¹:',
+'servertime' => 'සර්වරයේ වේලාව:',
+'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
+'timezoneregion-africa' => 'අප්‍රිකාව',
+'timezoneregion-america' => 'ඇමරිකාව',
+'timezoneregion-antarctica' => 'ඇන්ටාටිකාව',
+'timezoneregion-arctic' => 'අත්ලාන්තික්',
+'timezoneregion-asia' => 'ආසියාව',
+'timezoneregion-atlantic' => 'අත්ලාන්තික් සාගරය',
+'timezoneregion-australia' => 'ඔස්ට්‍රේලියාව',
+'timezoneregion-europe' => 'යුරෝපය',
+'timezoneregion-indian' => 'ඉන්දියානු සාගරය',
+'timezoneregion-pacific' => 'පැසිපික් සාගරය',
+'allowemail' => 'අනෙකුත් පරිශීලකයන්ගෙන් විද්‍යුත්-තැපෑල ලැබීම සක්‍රීය කරන්න',
+'prefs-searchoptions' => 'ගවේෂණ විකල්පයන්',
+'prefs-namespaces' => 'නාමඅවකාශ',
+'defaultns' => 'පෙරනිමියෙන් මෙම නාමඅවකාශයන්හි ගවේෂණය කරන්න:',
+'default' => 'පෙරනිමි',
+'prefs-files' => 'ගොනු',
+'prefs-custom-css' => 'අභිරුචි CSS',
+'prefs-custom-js' => ' අභිරුචි JS',
+'prefs-reset-intro' => 'ඔබගේ අභිප්‍රේතයන්, අඩවි පෙරනිමි වෙතට යළි-පිහිටුවීම සඳහා, ඔබ හට මෙම පිටුව භාවිතා කල හැක.
+මෙය අහෝසි කල නොහැක.',
+'prefs-emailconfirm-label' => 'විද්‍යුත්-ලිපිනය තහවුරුකිරීම:',
+'prefs-textboxsize' => 'සංස්කරණ කවුළුවෙහි ප්‍රමාණය',
+'youremail' => 'විද්‍යුත් තැපෑල:',
+'username' => 'පරිශීලක නාමය:',
+'uid' => 'පරිශීලක අනන්‍යාංකය:',
+'prefs-memberingroups' => 'ඉදිරියේ දැක්වෙන {{PLURAL:$1|කණ්ඩායමෙහි|කණ්ඩායම් වල}} සාමාජිකයෙකි:',
+'prefs-registration' => 'ලියාපදිංචිවූ වේලාව:',
+'yourrealname' => 'සැබෑ නාමය:',
+'yourlanguage' => 'භාෂාව:',
+'yourvariant' => 'විචල්‍යය:',
+'yournick' => 'නව අත්සන:',
+'prefs-help-signature' => 'කතා පිටුව මත සටහන් "<nowiki>~~~~</nowiki>" මඟින් අත්සන් තැබිය යුතු අතර එය ඔබේ අත්සන හා කාල මුද්‍රාව බවට පරිවර්තනය වනු ඇත.',
+'badsig' => 'නොනිමි අත්සන අනීතිකයි.
+HTML ටැගයන් පිරික්සන්න.',
+'badsiglength' => 'ඔබගේ විද්‍යුත් අත්සන පමණට වඩා දිගු වැඩිය.
+එය {{PLURAL:$1|එක් අක්ෂරයකට|අක්ෂරයන් $1 කට}} වඩා කෙටි විය යුතුය.',
+'yourgender' => 'ස්ත්‍රී/පුරුෂ භාවය:',
+'gender-unknown' => 'හෙළි නොකරයි',
+'gender-male' => 'පුරුෂ',
+'gender-female' => 'ස්ත්‍රී',
+'prefs-help-gender' => 'වෛකල්පික: මෘදුකාංග විසින් නිවැරැදි-ලිංගභේද යොමුකිරීම් සඳහා භාවිතා කෙරෙයි.
+මෙම තොරතුරු සමස්ත ප්‍රජාව සඳහා වෙයි.',
+'email' => 'විද්‍යුත් තැපෑල',
+'prefs-help-realname' => 'සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.
+ඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහා ඔබහට කතෘ-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.',
+'prefs-help-email' => 'විද්‍යුත්-තැපෑල ලිපිනය සැපයීම වෛකල්පිකයි, එනමුදු ඔබගේ මුර-පදය ඔබහට අමතක වූ විටෙක නව මුර-පදයක් ඔබහට විද්‍යුත්-තැපැල්ගත කිරීමට එය ප්‍රයෝජනවත් විය හැක.
+අනෙක් අතට, ඔබගේ පරිශීලක පිටුව හෝ පරිශීලක_සාකච්ඡා පිටුව හෝ තුලින් අනෙකුන් හට ඔබ හා සම්බන්ධ වීමට ඉඩ සැලසීමෙන්, ඔබගේ අනන්‍යතාවය හෙළි නොකර සිටීමට ඔබහට හැකිය.',
+'prefs-help-email-required' => 'විද්‍යුත්-ලිපිනය අවශ්‍යයි.',
+'prefs-info' => 'මූලික තොරතුරු',
+'prefs-i18n' => 'ජාත්‍යන්තරකරණය',
+'prefs-signature' => 'අත්සන',
+'prefs-dateformat' => 'දින ආකෘතිය',
+'prefs-timeoffset' => 'වේලා හිලව්ව',
+'prefs-advancedediting' => 'ප්‍රගත විකල්පයන්',
+'prefs-advancedrc' => 'ප්‍රගත විකල්පයන්',
+'prefs-advancedrendering' => 'ප්‍රගත විකල්පයන්',
+'prefs-advancedsearchoptions' => 'ප්‍රගත විකල්පයන්',
+'prefs-advancedwatchlist' => 'ප්‍රගත විකල්පයන්',
+'prefs-display' => 'දර්ශන විකල්පයන්',
+'prefs-diffs' => 'වෙනස',
# User rights
-'userrights' => 'පරිශීලක හිමිකම් කළමනාකරණය', # Not used as normal message but as header for the special page itself
+'userrights' => 'පරිශීලක හිමිකම් කළමනාකරණය',
'userrights-lookup-user' => 'පරිශීලක කණ්ඩායම් කළමනාකරණය කරන්න',
'userrights-user-editname' => 'පරිශීලක-නාමයක් ආදායනය කරන්න:',
'editusergroup' => 'පරිශීලක කණ්ඩායම් සංස්කරණය කරන්න',
@@ -1258,6 +1302,7 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'userrights-editusergroup' => 'පරිශීලක කණ්ඩායම් සංස්කරණය කරන්න',
'saveusergroups' => 'පරිශීලක කණ්ඩායම් සුරකින්න',
'userrights-groupsmember' => 'ඉදිරි කාණ්ඩයන්හි සාමාජිකයෙකි:',
+'userrights-groupsmember-auto' => 'මෙහි ව්‍යංග්‍ය සාමාජීක:',
'userrights-groups-help' => 'මෙම පරිශීලකයා අයත් වන කණ්ඩායම් ඔබ හට වෙනස් කල හැක:
* කතිර යෙදූ කොටුවකින් ගම්‍ය වන්නේ පරිශීලකයා එම කණ්ඩායමට අයත් බවය.
* කතිර නෙයෙදූ කොටුවකින් ගම්‍ය වන්නේ පරිශීලකයා මෙම කණ්ඩායමට අයත් නොවන බවය.
@@ -1322,6 +1367,7 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'right-bigdelete' => 'විශාල ඉතිහාස ඇති පිටු මකා දමන්න',
'right-deleterevision' => 'පිටුවල විශේෂිත සංශෝධනයන් මකා දැමීම හා මක දැමීම ප්‍රතිලෝම කිරීම සිදු කරන්න',
'right-deletedhistory' => 'ඒවායෙහි ආශ්‍රිත පෙළ රහිතව, මකාදැමුනු ඉතිහාස සංලේඛයන් නරඹන්න',
+'right-deletedtext' => 'මකා දැමූ සංශෝධන අතරතුර මකා දැමූ පෙළ හා වෙනස්වීම් පෙන්වන්න',
'right-browsearchive' => 'මකාදැමූ පිටු ගවේෂණය කරන්න',
'right-undelete' => 'පිටුවක් මකාදැමීම ප්‍රතිලෝම කරන්න',
'right-suppressrevision' => 'පරිපාලකවරුන් වෙතින් සඟවා ඇති සංශෝධනයන් විමර්ශනය කොට ප්‍රතිෂ්ඨාපනය කරන්න',
@@ -1335,6 +1381,8 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'right-editprotected' => 'ආරක්ෂිත පිටු සංස්කරණය කරන්න (තීරු-දර්ශන ආරක්ෂණය විරහිත)',
'right-editinterface' => 'පරිශීලක අතුරු-මුව සංස්කරණය කරන්න',
'right-editusercssjs' => 'අනෙකුත් පරිශීලකයන්ගේ CSS හා JS ගොනු සංස්කරණය කරන්න',
+'right-editusercss' => 'අනෙකුත් පරිශීලකයන්ගේ CSS ගොනු සංස්කරණය කරන්න',
+'right-edituserjs' => 'අනෙකුත් පරිශීලකයන්ගේ JS ගොනු සංස්කරණය කරන්න',
'right-rollback' => 'සුවිශේෂ පිටුවක් අවසන් වරට සංස්කරණය කල පරිශීලකයෙකුගේ සංස්කරණයන් විගසින් පුනරාවර්තනය කරන්න',
'right-markbotedits' => 'පුනරාවර්තනය-කෙරුනු සංස්කරණයන් රොබෝ සංස්කරණයන් ලෙස සලකුණු කරන්න',
'right-noratelimit' => '‍සීඝ්‍රතා සීමාවන්ගෙක් බලපෑම් ඇතිනොවන්න',
@@ -1351,6 +1399,8 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'right-siteadmin' => 'දත්ත-ගබඩාව අවුරන්න හා ඇවුරුම ඉවත් කරන්න',
'right-reset-passwords' => 'අනෙක් පරිශීලකගේ මුරපදය ප්‍රතිෂ්ඨාපනය කරන්න',
'right-override-export-depth' => '5වන මට්ටම දක්වා සබැඳි පිටු ද සහිතව පිටු නිර්යාත කරන්න',
+'right-versiondetail' => 'විස්කෘත මෘදුකාංග අනුවාද විස්තර පෙන්වන්න',
+'right-sendemail' => 'අනෙක් පරිශීලකයන්ට ඊ-ලිපි යවන්න',
# User rights log
'rightslog' => 'පරිශීලක හිමිකම් සටහන',
@@ -1400,6 +1450,15 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'recentchanges-legend' => 'මෑත වෙනස්කිරීම් සැකසුම් තෝරාගැනීම',
'recentchangestext' => 'මෙම පිටුවේ විකියට සිදුකල ඉතා මෑත වෙනස්වීම් පසුහඹන්න.',
'recentchanges-feed-description' => 'මෙම පෝෂකයෙහි විකියට බොහෝ මෑතදී සිදුකල වෙනස්වීම් හෙළිකරන්න.',
+'recentchanges-label-legend' => 'පුරාවෘත්තය : $1',
+'recentchanges-legend-newpage' => '$1 - නව පිටුව',
+'recentchanges-label-newpage' => 'මෙම සංස්කරණය නව පිටුවක් නිර්මාණය කරන ලදී',
+'recentchanges-legend-minor' => '$1- සුළු සංස්කරණය',
+'recentchanges-label-minor' => 'මෙය සුළු සංස්කරණයකි',
+'recentchanges-legend-bot' => '$1 - bot සංස්කරණය',
+'recentchanges-label-bot' => 'මෙම සංස්කරණය bot එකක් මඟින් සිදු කරන ලදී',
+'recentchanges-legend-unpatrolled' => '$1 - විමර්ශනය නොකළ සංස්කරණ',
+'recentchanges-label-unpatrolled' => 'මෙම සංස්කරණය තවම විමර්ශනය කර නොමැත',
'rcnote' => "$4 දින, $5 වන තෙක් සැලකිල්ලට ගත් කල, අවසන් {{PLURAL:$2|දිනදී|දින '''$2''' තුලදී}} සිදුවී ඇති, {{PLURAL:$1| '''1''' ක් වෙනස|අවසන් වෙනස්වීම් '''$1''' }} මෙහි පහත දැක්වේ.",
'rcnotefrom' => "'''$2''' න් පසු සිදුවී ඇති වෙනස්කම් මෙහි පහත දැක්වේ ('''$1''' ක ප්‍රමාණයක උපරිමයක් පෙන්වා ඇත).",
'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
@@ -1417,7 +1476,6 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'minoreditletter' => 'සුළු',
'newpageletter' => 'නව',
'boteditletter' => 'රොබෝ',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[ {{PLURAL:$1| එක් පරිශීලකයෙක් මුර-කරයි|පරිශීලකවරුන් $1 ක් මුර-කරති}} ]',
'rc_categories' => 'ප්‍රවර්ගයන්ට සීමා කරන්න ("|" මගින් වෙන් කරන්න)',
'rc_categories_any' => 'ඕනෑම',
@@ -1428,6 +1486,8 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
# Recent changes linked
'recentchangeslinked' => 'සහසම්බන්ධිත වෙනස්වීම්',
+'recentchangeslinked-feed' => 'සහසම්බන්ධිත වෙනස්වීම්',
+'recentchangeslinked-toolbox' => 'සහසම්බන්ධිත වෙනස්වීම්',
'recentchangeslinked-title' => '"$1" ට සහසම්බන්ධිත වෙනස්වීම්',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'සලකා බැලූ කාලසීමාවෙහිදී, සබැඳි පිටු වල කිසිදු වෙනසක් සිදුවී නොමැත.',
@@ -1439,8 +1499,8 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
# Upload
'upload' => 'ගොනුවක් උඩුගත කිරීම',
'uploadbtn' => 'ගොනුව උඩුගත කරන්න',
-'reupload' => 'යළි-උඩුගත කරන්න',
'reuploaddesc' => 'උඩුගත කිරීම අත්හැරදමා උඩුගත කිරීම් ආකෘති පත්‍රය වෙත යන්න',
+'upload-tryagain' => 'වෙනස් කරන ලද ගොනු විස්තරය ඉදිරිපත් කරන්න',
'uploadnologin' => 'ප්‍රවිෂ්ට වී නොමැත',
'uploadnologintext' => 'ගොනු උඩුගත කිරීමට පෙර ඔබ [[Special:UserLogin|ප්‍රවිෂ්ට වී]] සිටිය යුතුය.',
'upload_directory_missing' => 'උඩුගත ඩිරෙක්ටරිය ($1) සොයාගත නොහැකි අතර එය වෙබ්-සේවාදායකය විමින් තැනිය නොහැකි විය.',
@@ -1473,6 +1533,7 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'illegalfilename' => 'ශීර්ෂයන්හි භාවිත කිරීමට ඉඩ නොදෙන යම් අක්ෂරයන් "$1" ගොනු නාමයෙහි අඩංගුය.
කරුණාකර ගොනුව යළිනම් කොට එය නැවත උඩුගත කිරීමට උත්සාහ කරන්න.',
'badfilename' => 'ගොනු නම "$1" බවට වෙනස් කර ඇත.',
+'filetype-mime-mismatch' => 'ගොනු දිගුව MIME වර්ගය හා නොගැළපේ.',
'filetype-badmime' => '"$1" MIME වර්ගයෙහි ගොනු උඩුගත කිරීමට ඉඩ දෙනු නොලැබේ.',
'filetype-bad-ie-mime' => 'මෙම ගොනුව උඩුගත කල නොහැකි වන්නේ ඉන්ටනෙට් එක්ස්ප්ලෝරර් විසින් එය, ප්‍රතික්‍ෂේප කෙරෙන හා භව්‍ය ලෙසින් අනතුරුදායක ගොනු මාදිලියක් වන, "$1" ලෙසින් හඳුනාගැනෙන බැවිනි.',
'filetype-unwanted-type' => "'''\".\$1\"''' යනු අනවශ්‍ය ගොනු වර්ගයකි.
@@ -1496,7 +1557,6 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
* උඩුගත කෙරෙන ගොනුවේ නම: '''<tt>[[:$1]]</tt>'''
* පවතින ගොනුවේ නම: '''<tt>[[:$2]]</tt>'''
කරුණාකර වෙනත් නමක් තෝරාගන්න.",
-'fileexists-thumb' => "<center>'''දැනට පවතින ගොනුව'''</center>",
'fileexists-thumbnail-yes' => "ගොනුව, කුඩා ප්‍රමාණයේ රූපයක් බව පෙනී යයි ''(සිඟිති-රූපය)''. [[$1|thumb]]
කරුණාකර '''<tt>[[:$1]]</tt>''' ගොනුව පරික්‍ෂා කර බලන්න.
පරික්‍ෂා කර බැලූ ගොනුවෙහි අඩංගු වන්නේ මුලික ප්‍රමාණයෙහි රූපයම නම් අමතර සිඟිති-රූපයක් උඩුගත කිරීම අවශ්‍ය නොවේ.",
@@ -1512,6 +1572,7 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
එය යළි-උඩුගත කිරීම සඳහා කටයුතු කිරීමට පෙර එම ගොනුවෙහි මකාදැමීම් ඉතිහාසය ඔබ විසින් පරීක්ෂා කර බැලිය යුතුව ඇත.',
'successfulupload' => 'සාර්ථක උඩුගත කිරීමකි',
'uploadwarning' => 'උඩුගත කිරීම් අවවාදයකි',
+'uploadwarning-text' => 'කරුණාකර පහත ගොනු විස්තරය වෙනස් කර නැවත උත්සාහ කරන්න.',
'savefile' => 'ගොනුව සුරකින්න',
'uploadedimage' => '"[[$1]]" උඩුගත කරන ලදි',
'overwroteimage' => ' "[[$1]]" හි නව අනුවාදයක් උඩුගත කරන ලදි',
@@ -1520,12 +1581,14 @@ latex, dvips, gs, හා convert හී නිදොස් ස්ථාපන
'php-uploaddisabledtext' => 'PHP හි ගොනු උඩුගතකිරීම් අක්‍රීය කොට ඇත.
කරුණාකර ගොනු_උඩුගතකිරීම් පරිස්ථිතිය පරික්ෂා කර බලන්න.',
'uploadscripted' => 'වෙබ් බ්‍රවුසරයක් මගින් සාවද්‍ය ලෙස අර්ථ පැහැදිය හැකි HTML හෝ ලේඛන ක්‍රම තේතයක් මෙම ගොනුවේ අඩංගු වේ.',
-'uploadcorrupt' => 'ගොනුව දූෂිත හෝ සදොස් ප්‍රසර්ජනයක් සහිත හෝ වේ.
-කරුණාකර පරික්‍ෂා කොට නැවත උඩුගත කරන්න.',
'uploadvirus' => 'මෙම ගොනුවෙහි වයිරසයක් අඩංගුය! විස්තර: $1',
+'upload-source' => 'මූලාශ්‍ර ගොනුව',
'sourcefilename' => 'මූල ගොනුනාමය:',
+'sourceurl' => 'මූලාශ්‍ර URL:',
'destfilename' => 'අන්ත ගොනුනාමය:',
'upload-maxfilesize' => 'උපරිම ගොනු විශාලත්වය: $1',
+'upload-description' => 'ගොනු විස්තරය',
+'upload-options' => 'උඩුගත කිරීම් විකල්ප',
'watchthisupload' => 'මෙම ගොනුව මුර-කරන්න',
'filewasdeleted' => 'මෙම නම ඇති ගොනුව මින් පෙර උඩුගත කොට අනතුරුව මකාදමා ඇත.
එය නැවත උඩුගතකිරීමට උත්සාහ කිරීමට පෙර ඔබ විසින් $1 පරික්‍ෂා කර බැලිය යුතුය.',
@@ -1550,15 +1613,46 @@ MGP # පෙන්ටැක්ස්
PICT # විවිධ.
#</pre> <!-- මෙම පේළිය මෙලෙසම පැවතීමට ඉඩදෙන්න -->',
-'upload-proto-error' => 'සදොස් මූලලේඛය',
-'upload-proto-error-text' => 'දුරස්ථ උඩුගත කිරීම් සඳහා, කලාප ලිපිනයන් (URLලයන්) <code>http://</code> හෝ <code>ftp://</code> යන්නෙන් ආරම්භ විය යුතුයි.',
-'upload-file-error' => 'අභ්‍යන්තර දෝෂය',
-'upload-file-error-text' => 'සේවාදායකයෙහි තාවකාලික ගොනුවක් තැනීමට උත්සාහ දැරීමෙහිදී අභ්‍යන්තර දෝෂයක් හට ගැනිණි.
+'upload-proto-error' => 'සදොස් මූලලේඛය',
+'upload-proto-error-text' => 'දුරස්ථ උඩුගත කිරීම් සඳහා, කලාප ලිපිනයන් (URLලයන්) <code>http://</code> හෝ <code>ftp://</code> යන්නෙන් ආරම්භ විය යුතුයි.',
+'upload-file-error' => 'අභ්‍යන්තර දෝෂය',
+'upload-file-error-text' => 'සේවාදායකයෙහි තාවකාලික ගොනුවක් තැනීමට උත්සාහ දැරීමෙහිදී අභ්‍යන්තර දෝෂයක් හට ගැනිණි.
කරුණාකර [[Special:ListUsers/sysop|පරිපාලකවරයෙක්]] වෙත යොමුවන්න.',
-'upload-misc-error' => 'අඥාත උඩුගත කිරීම් දෝෂය',
-'upload-misc-error-text' => 'උඩුගත කිරීමේදී අඥාත දෝෂයක් සිදුවිය.
+'upload-misc-error' => 'අඥාත උඩුගත කිරීම් දෝෂය',
+'upload-misc-error-text' => 'උඩුගත කිරීමේදී අඥාත දෝෂයක් සිදුවිය.
කලාප ලිපිනයෙහි (URL) නීතික බව හා ප්‍රවේශ්‍ය බව සත්‍යාපනය කොට නැවත උත්සාහ කරන්න.
ගැටළුව තවදුරටත් පවතියි නම්, [[Special:ListUsers/sysop|පරිපාලකවරයෙකු]] අමතන්න.',
+'upload-too-many-redirects' => 'අන්තර්ජාල ලිපිනයෙහි පමණට වඩා යළි-යොමුවීම් අඩංගු වෙයි',
+'upload-unknown-size' => 'නොදන්නා තරම',
+'upload-http-error' => 'HTTP දෝෂයක් හට ගැනිණි: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'ප්‍රවේශය තහනම් කර ඇත',
+'img-auth-nopathinfo' => 'PATH_INFO වැරදී ඇත.
+මෙම තොරතුරු යැවීම සඳහා ඔබගේ සේවා දායකය පිහිටුවා නැත.
+එය CGI-පාදක වූවක් විය හැකි අතර img_auth සඳහා සහය නොදක්වයි.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
+'img-auth-notindir' => 'ඉල්ලුම් කළ පෙත වින්‍යසගත උඩුගත කිරීම් නාමාවලියේ නැත.',
+'img-auth-badtitle' => '"$1" මඟින් වලංගු මාතෘකාවක් ගොඩනැගිය නොහැකිය.',
+'img-auth-nologinnWL' => 'ඔබ ඇතුල් වී නොමැති අතර "$1" සුදු ලැයිස්තුවේ නොමැත.',
+'img-auth-nofile' => '"$1" ගොනුව නොපවතී.',
+'img-auth-isdir' => 'ඔබ "$1" නාමාවලියට පිවිසීමට උත්සාහ කරයි.
+අවසර ලබා දෙන්නේ ගොනු ප්‍රවේශය සඳහා පමණි.',
+'img-auth-streaming' => '"$1" ප්‍රවාහය වෙමින් පවතී.',
+'img-auth-public' => 'img_auth.php හි කාර්යය වන්නේ පෞද්ගලික විකියක් මඟින් ගොනු ප්‍රතිදානය කිරිීමයි.
+මෙම විකිය වින්‍යාසගත කොට ඇත්තේ පොදු විකියක් ලෙසය.
+ප්‍රශස්ත ආරක්ෂාව සඳහා , img_auth.php අක්‍රීය කර ඇත.',
+'img-auth-noread' => '"$1" කියවීම සඳහා පරිශීලකයාට ප්‍රවේශවීම් නොමැත.',
+
+# HTTP errors
+'http-invalid-url' => 'අනීතික අන්තර්ජාල ලිපිනය: $1',
+'http-invalid-scheme' => '"$1" පර්ක්‍රමය සහිත අන්තර්ජාල ලිපිනයන් වෙත අනුබල දෙනු නොලැබේ',
+'http-request-error' => 'අඥාත දෝෂයක් හේතුවෙන් HTTP අයැදුම අසාර්ථක විය.',
+'http-read-error' => 'HTTP කියැවුම් දෝෂය.',
+'http-timed-out' => 'HTTP අයැදුම සඳහා වූ කාලය ඉක්මව ඇත.',
+'http-curl-error' => 'අන්තර්ජාල ලිපිනය පමුණුවාගෙන ඒමේ දෝෂය : $1',
+'http-host-unreachable' => 'අන්තර්ජාල ලිපිනය වෙත සේන්දු විය නොහැකි විය',
+'http-bad-status' => 'HTTP ආයාචනයෙහිදී ගැටළුවක් පැන නැගුනි: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'කලාප ලිපිනය ( URL) වෙත සේන්දුවිය නොහැකි විය',
@@ -1570,6 +1664,7 @@ PICT # විවිධ.
කාර්ය බහුලත්වය අඩු වේලාවක උත්සාහ කිරීමට ඔබ හට සිදුවිය හැක.',
'license' => 'බලය ලබා දීම:',
+'license-header' => 'අවසර දීම',
'nolicense' => 'කිසිවක් තෝරාගෙන නැති',
'license-nopreview' => '(පෙර-දසුන නැරඹිය නොහැක)',
'upload_source_url' => ' (නීතික, ප්‍රජාව විසින් ප්‍රවේශ්‍ය කලාප ලිපිනය (URL) කි)',
@@ -1590,6 +1685,7 @@ PICT # විවිධ.
'listfiles_count' => 'අනුවාදයන්',
# File description page
+'file-anchor-link' => 'ගොනුව',
'filehist' => 'ගොනු ඉතිහාසය',
'filehist-help' => 'එම අවස්ථාවෙහිදී ගොනුව පැවැති ආකාරය නැරඹීම ඔබ හට රිසි නම් දිනය/වේලාව මත ක්ලික් කරන්න.',
'filehist-deleteall' => 'සියල්ල මකන්න',
@@ -1604,6 +1700,7 @@ PICT # විවිධ.
'filehist-dimensions' => 'මාන',
'filehist-filesize' => 'ගොනුවේ විශාලත්වය',
'filehist-comment' => 'පරිකථනය',
+'filehist-missing' => 'ගොනුව සොයාගත නොහැක',
'imagelinks' => 'ගොනු සබැඳියන්',
'linkstoimage' => 'මෙම ගොනුවට {{PLURAL:$1|ලිපිය බැ‍ඳෙයි|ලිපි $1 ක් බැඳෙති}}:',
'linkstoimage-more' => 'මෙම ගොනුවට {{PLURAL:$1|පිටුවකට |පිටු $1 කට}} වඩා වැඩි ගණනක් සබැ‍ඳේ.
@@ -1613,15 +1710,16 @@ PICT # විවිධ.
'morelinkstoimage' => 'මෙම ගොනුව සඳහා [[Special:WhatLinksHere/$1|තවත් සබැඳි]] තිබේදැයි නරඹන්න.',
'redirectstofile' => 'පහත {{PLURAL:$1|ගොනුව මෙම ගොනුව කරා යළි-යොමුවේ|ගොනු $1 මෙම ගොනුව කරා යළි-යොමුවෙති}} :',
'duplicatesoffile' => 'පහත {{PLURAL:$1|ගොනුව |ගොනු $1 }} මෙම ගොනුවේ {{PLURAL:$1|අනුපිටපත |අනුපිටපත් }} වේ ([[Special:FileDuplicateSearch/$2|වැඩි විස්තර සඳහා]]):',
-'sharedupload' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්‍යාපෘතින් සඳහාද භාවිතා කල හැකි වෙයි.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'වැඩිමනත් විස්තර සඳහා $1 බැලීමට කාරුණික වන්න.',
-'shareduploadwiki-desc' => 'එහි $1 හි විස්තර-සටහන මෙහි පහත දැක්වේ.',
-'shareduploadwiki-linktext' => 'ගොනු විස්තර පිටුව',
-'noimage' => 'මෙම නම සහිත ගොනුවක් නොපවතින නමුදු, ඔබ හට $1 සිදු කල හැක.',
-'noimage-linktext' => 'එකක් උඩුගත කරන්න',
+'sharedupload' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්‍යාපෘතින් සඳහාද භාවිතා කල හැකි වෙයි.',
+'sharedupload-desc-there' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්‍යාපෘතීන් විසින්ද භාවිතා කල හැක.
+වැඩි විස්තර සඳහා කරුණාකර [$2 ගොනු විස්තර පිටුව] බලන්න.',
+'sharedupload-desc-here' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්‍යාපෘතීන් විසින්ද භාවිතා කල හැක.
+එහි [$2 ගොනු විස්තර පිටුව] තුල අඩංගු විස්තර මෙහි පහත දැක්වෙයි.',
+'filepage-nofile' => 'මෙම නම සහිත ගොනුවක් නොපවතියි.',
+'filepage-nofile-link' => 'මෙම නම සහිත ගොනුවක් නොපවතින නමුදු, ඔබ විසින් [$1 එය උඩුගතතිරීම] සිදුකල හැක.',
'uploadnewversion-linktext' => 'මෙම ගොනුවෙහි නව අනුවාදයක් උඩුගත කරන්න',
-'shared-repo-from' => '$1 වෙතින්', # $1 is the repository name
-'shared-repo' => 'හවුල් සුරක්ෂිතාගාරයකි', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 වෙතින්',
+'shared-repo' => 'හවුල් සුරක්ෂිතාගාරයකි',
# File reversion
'filerevert' => '$1 ප්‍රතිවර්තනය කරන්න',
@@ -1652,6 +1750,7 @@ PICT # විවිධ.
** හිමිකම් උල්ලංඝනය
** අනුපිටපත් කල ගොනුව',
'filedelete-edit-reasonlist' => 'මකා දැමීමට හේතූන් සංස්කරණය කරන්න',
+'filedelete-maintenance' => 'නඩත්තුව අතරතුර ගොනු මැකීම හා ප්‍රතිසංස්කරණය තාවකාලිකව අක්‍රීය වේ.',
# MIME search
'mimesearch' => 'MIME ගවේෂණය',
@@ -1674,7 +1773,7 @@ PICT # විවිධ.
# Random page
'randompage' => 'අහඹු පිටුව',
-'randompage-nopages' => '"$1" නාම-අවකාශයෙහි කිසිදු පිටුවක් නොමැත.',
+'randompage-nopages' => 'පහත {{PLURAL:$2|නාමඅවකාශය|නාමඅවකාශ}}:$1 හි කිසිදු පිටුවක් නොමැත.',
# Random redirect
'randomredirect' => 'අහුඹු යළි-යොමුකිරීම',
@@ -1686,6 +1785,7 @@ PICT # විවිධ.
'statistics-header-edits' => 'සංස්කරණ වල සංඛ්‍යාන දත්ත',
'statistics-header-views' => 'නැරඹුම් වල සංඛ්‍යාන දත්ත',
'statistics-header-users' => 'පරිශීලකයන් පිළිබඳ සංඛ්‍යාන දත්ත',
+'statistics-header-hooks' => 'අනෙක් සංඛ්‍යා ලේඛන',
'statistics-articles' => 'අන්තර්ගත පිටු',
'statistics-pages' => 'පිටු',
'statistics-pages-desc' => 'සාකච්ඡා පිටු, යළි-යොමුවීම් ආදිය ඇතුළු විකියෙහි සියළු පිටු.',
@@ -1714,8 +1814,8 @@ PICT # විවිධ.
'brokenredirects' => 'භින්න යළි-යොමුවීම්',
'brokenredirectstext' => 'මෙහි පහත දැක්වෙන යළි-යොමුවීම් නොපවතින පිටු වලට සබැඳේ:',
-'brokenredirects-edit' => '(සංස්කරණය)',
-'brokenredirects-delete' => '(මකා දැමීම)',
+'brokenredirects-edit' => 'සංස්කරණය',
+'brokenredirects-delete' => 'මකා දැමීම',
'withoutinterwiki' => 'භාෂා සබැඳි විරහිත පිටු',
'withoutinterwiki-summary' => 'මෙහි පහත දැක්වෙන පිටු අනෙකුත් භාෂා අනුවාදයන් වෙත නොබැඳේ.',
@@ -1824,16 +1924,17 @@ PICT # විවිධ.
# Special:Categories
'categories' => 'ප්‍රවර්ග',
-'categoriespagetext' => 'පහත ප්‍රවර්ගයන්හි පිටු හෝ මාධ්‍ය හෝ අඩංගු වේ.
-[[Special:UnusedCategories|භාවිතා නොවන ප්‍රවර්ගයන්]] මෙහි පෙන්නුම් කර නොමැත.
+'categoriespagetext' => 'පහත {{PLURAL:$1|ප්‍රවර්ගයෙහි අන්තර්ගතය |ප්‍රවර්ගයන්හි අන්තර්ගතයන්}} වනුයේ පිටු හෝ මාධ්‍යයන්ය.
+[[Special:UnusedCategories|භාවිතනොවූ ප්‍රවර්ගයන්]] මෙහි පෙන්වා දක්වා නොමැත.
[[Special:WantedCategories|අවශ්‍ය ප්‍රවර්ගයන්]]ද බලන්න.',
'categoriesfrom' => 'මෙහිදී ඇරඹෙන ප්‍රවර්ග පෙන්වන්න:',
'special-categories-sort-count' => 'ගණණය පරිදි සුබෙදුම',
'special-categories-sort-abc' => 'අකාරාදියේ පිළිවෙලට සුබෙදන්න',
# Special:DeletedContributions
-'deletedcontributions' => 'මකාදැමූ පරිශීලක දායකත්වයන්',
-'deletedcontributions-title' => 'මකාදැමූ පරිශීලක දායකත්වයන්',
+'deletedcontributions' => 'මකාදැමූ පරිශීලක දායකත්වයන්',
+'deletedcontributions-title' => 'මකාදැමූ පරිශීලක දායකත්වයන්',
+'sp-deletedcontributions-contribs' => 'දායකත්වයන්',
# Special:LinkSearch
'linksearch' => 'බාහිර සබැඳි',
@@ -1849,6 +1950,16 @@ PICT # විවිධ.
'listusersfrom' => '‍මෙම අකුරෙන් පටන්ගෙන පරිශීලකයන් ප්‍රදර්ශනය කරන්න:',
'listusers-submit' => 'පෙන්වන්න',
'listusers-noresult' => 'පරිශීලකයෙකු සොයාගත නොහැකි විය.',
+'listusers-blocked' => '(වාරණය කොට)',
+
+# Special:ActiveUsers
+'activeusers' => 'සක්‍රීය පරිශීලකයන් ලැයිස්තුව',
+'activeusers-intro' => 'මෙය පසුගිය $1 {{PLURAL:$1|දිනය|දින}}තුළ යම් ක්‍රියාකාරකමක් කළ පරිශීලකයන්ගේ ලැයිස්තුවකි.',
+'activeusers-count' => '{{PLURAL:$1|එක් සංස්කරණයක්|සංස්කරණ $1 ක්}} අවසන් {{PLURAL:$3|දිනය|දින $3}} තුළ',
+'activeusers-from' => 'මෙයින් ඇරඹෙන පරිශීලකයන් පෙන්වන්න:',
+'activeusers-hidebots' => ' bots සඟවන්න',
+'activeusers-hidesysops' => 'පරිපාලකයින් සඟවන්න',
+'activeusers-noresult' => 'කිසිදු පරිශීලකයෙකු හමුනොවිණි.',
# Special:Log/newusers
'newuserlogpage' => 'පරිශීලකයන් තැනීමේ සටහන',
@@ -1859,18 +1970,23 @@ PICT # විවිධ.
'newuserlog-autocreate-entry' => 'ගිණුම ස්වයංක්‍රීයව තනන ලදි',
# Special:ListGroupRights
-'listgrouprights' => 'පරිශීලක කාණ්ඩ හිමිකම්',
-'listgrouprights-summary' => 'මෙම විකියේ අර්ථදක්වා ඇති පරිශීලක කාණ්ඩ ලැයිස්තුවක් ඔවුනට අදාළ ප්‍රවේශ හිමිකම්ද සමගින් මෙහි පහත ලැයිස්තුගත කොට ඇත.
+'listgrouprights' => 'පරිශීලක කාණ්ඩ හිමිකම්',
+'listgrouprights-summary' => 'මෙම විකියේ අර්ථදක්වා ඇති පරිශීලක කාණ්ඩ ලැයිස්තුවක් ඔවුනට අදාළ ප්‍රවේශ හිමිකම්ද සමගින් මෙහි පහත ලැයිස්තුගත කොට ඇත.
පුද්ගලික හිමිකම් පිළිබඳ [[{{MediaWiki:Listgrouprights-helppage}}|වැඩිමනත් තොරතුරු]] පැවතිය හැක.',
-'listgrouprights-group' => 'කාණ්ඩය',
-'listgrouprights-rights' => 'හිමිකම්',
-'listgrouprights-helppage' => 'Help:කාණ්ඩ හිමිකම්',
-'listgrouprights-members' => '(පරිශිලකයන් ලැයිස්තුව)',
-'listgrouprights-right-display' => '$1 ($2)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|කණ්ඩායම|කණ්ඩායම්}} එක් කල හැක: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|කණ්ඩායම|කණ්ඩායම්}} ඉවත් කල හැක: $1',
-'listgrouprights-addgroup-all' => 'සියළු කණ්ඩායම් එක් කල හැක',
-'listgrouprights-removegroup-all' => 'සියළු කණ්ඩායම් ‍ඉවත් කල හැක',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">හිමිකම ප්‍රදානය කෙරිණි </span>
+* <span class="listgrouprights-revoked">හිමිකම අහෝසි කෙරිණි </span>',
+'listgrouprights-group' => 'කාණ්ඩය',
+'listgrouprights-rights' => 'හිමිකම්',
+'listgrouprights-helppage' => 'Help:කාණ්ඩ හිමිකම්',
+'listgrouprights-members' => '(පරිශිලකයන් ලැයිස්තුව)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|කණ්ඩායම|කණ්ඩායම්}} එක් කල හැක: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|කණ්ඩායම|කණ්ඩායම්}} ඉවත් කල හැක: $1',
+'listgrouprights-addgroup-all' => 'සියළු කණ්ඩායම් එක් කල හැක',
+'listgrouprights-removegroup-all' => 'සියළු කණ්ඩායම් ‍ඉවත් කල හැක',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|කාණ්ඩය|කාණඩයන්}} ස්වීය ගිණුමට එක්කරන්න: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|කාණ්ඩය|කාණ්ඩයන්}} ස්වීය ගිණුමෙන් ඉවත් කරන්න: $1',
+'listgrouprights-addgroup-self-all' => 'සි‍යළු කාණ්ඩයන් ස්වීය ගිණුමට එක්කරන්න',
+'listgrouprights-removegroup-self-all' => 'සියළු කාණ්ඩයන් ස්වීය ගිණුමෙන් ඉවත් කරන්න',
# E-mail user
'mailnologin' => 'යායුතු ලිපිනය නොමැත',
@@ -1962,7 +2078,10 @@ $NEWPAGE
--
ඔබගේ මුරලැයිස්තු පරිස්ථිතීන් වෙනස්කිරීම සඳහා
-{{fullurl:{{ns:special}}:Watchlist/edit}} වෙත පිවිසෙන්න
+{{fullurl:{{#special:Watchlist}}/edit}} වෙත පිවිසෙන්න
+
+ඔබගේ මුරලැයිස්තුවෙන් පිටුව මකා දැමීම සඳහා වූ
+$UNWATCHURL වෙත පිවිසෙන්න
ප්‍රතිපෝෂණය හා වැඩිමනත් සහාය:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1977,10 +2096,11 @@ $NEWPAGE
'delete-confirm' => '"$1" මකා දමන්න',
'delete-backlink' => '← $1',
'delete-legend' => 'මකන්න',
-'historywarning' => 'අවවාදයයි: ඔබ විසින් මකා දැමීමට සූදානම් වන පිටුවට ඉතිහාසයක් ඇත:',
+'historywarning' => '"\'අවවාදයයි"\': ඔබ විසින් මකා දැමීමට සූදානම් වන පිටුවට $1 {{PLURAL:$1|සංශෝධනය|සංශෝධන}}: සමඟ ඉතිහාසයක් ඇත:',
'confirmdeletetext' => 'එහි සමස්ත ඉතිහාසය හා සමගින් පිටුවක් මකා දැමීමට ඔබ සැරසෙයි.
ඔබගේ අභිමතාර්ථය මෙයමදැයි අවලෝකනය කරමින්, මෙහි ප්‍රතිවිපාක මුළුමනින් ඔබ විසින් අවබෝධ කරගෙන ඇති බවට සෑහීමට පත් වෙමින් හා, ඔබ මෙය සිදුකරන්නේ [[{{MediaWiki:Policy-url}}|ප්‍රතිපත්තියට]] අනුකූලවදැයි විමසා බලන්න.',
'actioncomplete' => 'ක්‍රියාව සමාප්තයි',
+'actionfailed' => 'කාර්යය අසාර්ථක විය',
'deletedtext' => '"<nowiki>$1</nowiki>" මකා දමා ඇත.
මෑත මකාදැමීම් පිළිබඳ වාර්තාවක් සඳහා $2 බලන්න.',
'deletedarticle' => '"[[$1]]" මකා දමන ලදි',
@@ -2004,21 +2124,22 @@ $NEWPAGE
පරිස්සමින් ඉදිරි කටයුතු කරන්න.',
# Rollback
-'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
-'rollback_short' => 'පුනරාවර්තනය',
-'rollbacklink' => 'පුනරාවර්තනය',
-'rollbackfailed' => 'පුනරාවර්තනය අසාර්ථකයි',
-'cantrollback' => 'සංස්කරණය ප්‍රතිවර්තනය කල නොහැක;
+'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
+'rollback_short' => 'පුනරාවර්තනය',
+'rollbacklink' => 'පුනරාවර්තනය',
+'rollbackfailed' => 'පුනරාවර්තනය අසාර්ථකයි',
+'cantrollback' => 'සංස්කරණය ප්‍රතිවර්තනය කල නොහැක;
අවසන් දායකයා මෙම පිටුවේ එකම කතෘවරයාද වෙයි.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|සාකච්ඡාව]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) විසින් සිදුකල [[:$1]] හි අවසාන සංශෝධනය පුනරාවර්තනය කල නොහැක;
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|සාකච්ඡාව]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) විසින් සිදුකල [[:$1]] හි අවසාන සංශෝධනය පුනරාවර්තනය කල නොහැක;
වෙනත් අයෙකු අතින් පිටුව දැනටමත් සංස්කරණය වී හෝ පුනරාවර්තනය වී ඇත.
පිටුවට අවසන් සංස්කරණය සිදුකොට ඇත්තේ [[User:$3|$3]] ([[User talk:$3|සාකච්ඡාව]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) විසිනි.',
-'editcomment' => "සංස්කරණ සාරාංශය වූයේ: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|සාකච්ඡාව]]) ගේ සංස්කරණයන් [[User:$1|$1]] ගේ අවසන් අනුවාදය වෙත ප්‍රතිවර්තනය කෙරිණි', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => ' $1 විසින් සිදුකල සංස්කරණයන් ප්‍රතිවර්තනය කරන ලදි;
+'editcomment' => "සංස්කරණ සාරාංශය වූයේ: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|සාකච්ඡාව]]) ගේ සංස්කරණයන් [[User:$1|$1]] ගේ අවසන් අනුවාදය වෙත ප්‍රතිවර්තනය කෙරිණි',
+'revertpage-nouser' => '(පරිශිලක නම ඉවත් කිරීමෙන්) සංස්කරණයන් [[User:$1|$1]] මඟින් කළ අවසන් සංශෝධනයට ප්‍රතිවර්තනය කෙරිණි',
+'rollback-success' => ' $1 විසින් සිදුකල සංස්කරණයන් ප්‍රතිවර්තනය කරන ලදි;
$2 ගේ අවසන් අනුවාදය වෙතට යළි වෙනස් කරන ලදි .',
-'sessionfailure' => 'ඔබගේ ප්‍රවිෂ්ට වීමේ සැසියෙහි කිසියම් ගැටළුකාරී තත්ත්වයක් පැන නැගී ඇත;
+'sessionfailure' => 'ඔබගේ ප්‍රවිෂ්ට වීමේ සැසියෙහි කිසියම් ගැටළුකාරී තත්ත්වයක් පැන නැගී ඇත;
සැසි පරිග්‍රහණයට එරෙහි ආරක්ෂිත පියවරක් ලෙස මෙම ක්‍රියාව අත්හැරදමා ඇත.
"පසුපසට" බොත්තම ක්ලික් කර ඔබ පැමිණි පිටුව යළිපූරණය නොට නැවත උත්සාහ කරන්න.',
@@ -2038,7 +2159,7 @@ $2 ගේ අවසන් අනුවාදය වෙතට යළි වෙන
'protectexpiry' => 'ඉකුත් වීම:',
'protect_expiry_invalid' => 'අනීතික ඉකුත් වීමේ කාලයකි.',
'protect_expiry_old' => 'ඉකුත් වීමේ කාලය දැනටමත් ඉක්ම ගොස් ඇත.',
-'protect-unchain' => 'ගෙන යාම පිළිබඳ දැනට පනවා ඇති ඇවුරුම ඉවත් කරන්න',
+'protect-unchain-permissions' => 'තවදුරටත් ඇති ආරක්ෂක විකල්ප අගුළු අරින්න',
'protect-text' => "'''<nowiki>$1</nowiki>''' පිටුව සඳහා ආරක්ෂණ මට්ටම නැරඹීම හා වෙනස් කිරීම මෙහිදී ඔබ විසින් සිදු කල හැක.",
'protect-locked-blocked' => "වාරණයට ලක්ව සිටියදී ඔබ හට ආරක්ෂණ මට්ටම් වෙනස්කල නොහැක.
'''$1''' පිටුව සඳහා වත්මන් පරිස්ථිතීන් මෙලෙස වේ:",
@@ -2068,7 +2189,7 @@ $2 ගේ අවසන් අනුවාදය වෙතට යළි වෙන
** නිෂ්ඵලදායී සංස්කරණ පොරකෑම්
** අධික අතුරුමාරු සහිත පිටුව',
'protect-edit-reasonlist' => 'සංස්කරණ ආරක්ෂණ හේතූන්',
-'protect-expiry-options' => 'පැය 1:1 hour,දින 1:1 day, සති 1:1 week, සති 2:2 weeks, මාස 1:1 month, මාස 3:3 months, මාස 6:6 months, වසර 1:1 year, අනන්තය:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'පැය 1:1 hour,දින 1:1 day, සති 1:1 week, සති 2:2 weeks, මාස 1:1 month, මාස 3:3 months, මාස 6:6 months, වසර 1:1 year, අනන්තය:infinite',
'restriction-type' => 'අවසරය:',
'restriction-level' => 'සීමාකිරීම් මට්ටම:',
'minimum-size' => 'අවම විශාලත්වය',
@@ -2111,6 +2232,7 @@ $2 ගේ අවසන් අනුවාදය වෙතට යළි වෙන
'undelete-nodiff' => 'පූර්ව සංශෝධන කිසිවක් සොයා ගත නොහැකි විය.',
'undeletebtn' => 'ප්‍රතිෂ්ඨාපනය',
'undeletelink' => 'නරඹන්න/ප්‍රතිෂ්ඨාපනය කරන්න',
+'undeleteviewlink' => 'නරඹන්න',
'undeletereset' => 'ප්‍රත්‍යාරම්භ කරන්න',
'undeleteinvert' => 'තෝරාගැනුම කණපිට පෙරලන්න',
'undeletecomment' => 'හේතුව:',
@@ -2150,19 +2272,24 @@ $1',
'contributions-title' => ' $1 සඳහා පරිශීලක දායකත්වයන්',
'mycontris' => 'මගේ දායකත්ව',
'contribsub2' => '$1 සඳහා ($2)',
-'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.', # Optional parameter: $1 is the user name
+'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.',
'uctop' => '(පෙරටු)',
'month' => 'මෙම මස (හා ඉන් පෙර) සිට:',
'year' => 'මෙම වසර (හා ඉන් පෙරාතුව) සිට:',
-'sp-contributions-newbies' => 'නව ගිණුම් වලට පමණක් අදාල දායකත්ව පෙන්වන්න',
-'sp-contributions-newbies-sub' => 'නව ගිණුම් වලට අදාල',
-'sp-contributions-newbies-title' => 'නව ගිණුම් වලට අදාල පරිශීලක දායකත්ව',
-'sp-contributions-blocklog' => 'වාරණ සටහන',
-'sp-contributions-logs' => 'ලඝු-සටහන්',
-'sp-contributions-search' => 'දායකත්ව පිළිබඳ ගවේෂණය කරන්න',
-'sp-contributions-username' => 'පරිශීලක නාමය හෝ IP ලිපිනය:',
-'sp-contributions-submit' => 'ගවේෂණය කරන්න',
+'sp-contributions-newbies' => 'නව ගිණුම් වලට පමණක් අදාල දායකත්ව පෙන්වන්න',
+'sp-contributions-newbies-sub' => 'නව ගිණුම් වලට අදාල',
+'sp-contributions-newbies-title' => 'නව ගිණුම් වලට අදාල පරිශීලක දායකත්ව',
+'sp-contributions-blocklog' => 'වාරණ සටහන',
+'sp-contributions-deleted' => 'මකාදැමූ පරිශීලක දායකත්වයන්',
+'sp-contributions-logs' => 'ලඝු-සටහන්',
+'sp-contributions-talk' => 'සාකච්ඡාව',
+'sp-contributions-userrights' => 'පරිශීලක හිමිකම් කළමනාකරණය',
+'sp-contributions-blocked-notice' => 'මෙම පරිශීලකයා දැනට අවහිර කරනු ලැබ තිබේ.
+නවතම අවහිර කිරීම් ලඝු සටහන පහත යොමුවෙන් සපයනු ලැබේ:',
+'sp-contributions-search' => 'දායකත්ව පිළිබඳ ගවේෂණය කරන්න',
+'sp-contributions-username' => 'පරිශීලක නාමය හෝ IP ලිපිනය:',
+'sp-contributions-submit' => 'ගවේෂණය කරන්න',
# What links here
'whatlinkshere' => 'මෙයට සබැ‍ඳෙන පිටු',
@@ -2186,6 +2313,7 @@ $1',
# Block/unblock
'blockip' => 'පරිශීලකයා වාරණය කරන්න',
+'blockip-title' => 'පරිශීලකයා වාරණය කරන්න',
'blockip-legend' => 'වාරණයකල පරිශීලක',
'blockiptext' => 'විශේෂිත අන්තර්ජාල ලිපිනයකින් හෝ ප්‍රතිශීලක නාමයකින් ලිවීම් ප්‍රවේශය වාරණය කෙරුමට පහත ආකෘති පත්‍රය භාවිතා කරන්න.
වන්ධල්‍යය වැලැක්වීමේ හුදු අභිලාෂයෙන් හා, [[{{MediaWiki:Policy-url}}|ප්‍රතිපත්ති]] ප්‍රකාරව මෙය සිදුකල යුත්තේය.
@@ -2209,7 +2337,7 @@ $1',
'ipbenableautoblock' => 'මෙම පරිශීලකයා විසින් භාවිතා කරන අන්තර්ජාල ලිපිනයද, මෙයින් පසුව සංස්කරණය සඳහා ඔවුන් භාවිතා කිරීමට ඉඩ ඇති අන්තර්ජාල ලිපිනයන්ද ස්වයංක්‍රීය ලෙස වාරණය කරන්න',
'ipbsubmit' => 'මෙම පරිශීලක වාරණය කරන්න',
'ipbother' => 'අනෙකුත් වේලාව:',
-'ipboptions' => 'පැය 2:2 hours,දින 1:1 day,දින 3:3 days,සති 1:1 week,සති 2:2 weeks,මාස 1:1 month,මාස 3:3 months,මාස 6:6 months,වසර 1:1 year,අනන්තය:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'පැය 2:2 hours,දින 1:1 day,දින 3:3 days,සති 1:1 week,සති 2:2 weeks,මාස 1:1 month,මාස 3:3 months,මාස 6:6 months,වසර 1:1 year,අනන්තය:infinite',
'ipbotheroption' => 'අනෙකුත්',
'ipbotherreason' => 'අනෙකුත්/අමතර හේතුව:',
'ipbhidename' => 'පරිශීලක-නාමය සංස්තරණයන් ගෙන් හා ලැයිස්තු වලින් සඟවන්න',
@@ -2238,9 +2366,11 @@ $1',
'ipblocklist-sh-tempblocks' => 'තාවකාලික වාරණයන් $1',
'ipblocklist-sh-addressblocks' => 'ඒක අන්තර්ජාල-ලිපින වාරණයන් $1',
'ipblocklist-submit' => 'ගවේෂණය',
+'ipblocklist-localblock' => 'පෙදෙසි අවහිරය',
+'ipblocklist-otherblocks' => 'අනෙක් {{PLURAL:$1|අවහිර කිරීම|අවහිර කිරීම්}}',
'blocklistline' => '$1 දී, $2 විසින් $3 ($4) වාරණය කෙරිණි',
'infiniteblock' => 'අනන්තය',
-'expiringblock' => '$1 දී කල් ඉකුත්වේ',
+'expiringblock' => '$1 දිනදී $2 වේලාවේදී කල් ඉකුත්වේ',
'anononlyblock' => 'නිර්නාමිකයන් පමණි',
'noautoblockblock' => 'ස්වයංක්‍රීය වාරණය අක්‍රීය කෙරිණි',
'createaccountblock' => 'ගිණුම් තැනීම වාරණය කෙරිණි',
@@ -2255,7 +2385,10 @@ $1',
'autoblocker' => 'ඔබගේ අන්තර්ජාල ලිපිනය "[[User:$1|$1]]" විසින් මෑතකදී භාවිතා කර ඇති බැවින් ඔබ ස්වයංක්‍රීය-වාරණයකට ලක් කර ඇත.
$1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
'blocklogpage' => 'වාරණ ලඝු සටහන',
-'blocklog-fulllog' => 'පූර්ණ වාරණ ලඝු-සටහන',
+'blocklog-showlog' => 'මෙම පරිශීලකයා මීට පෙර අවහිර කරනු ලැබ ඇත.
+අවහිරි කිරීම් ලඝු සටහන යොමුව සඳහා පහතින් සපයනු ලැබේ:',
+'blocklog-showsuppresslog' => 'මෙම පරිශීලකයා මීට පෙර අවහිර කොට සඟවනු ලැබ ඇත.
+යොමුව සඳහා යටපත් කිරීම් ලඝු සටහන පහතින් සපයනු ලැබේ:',
'blocklogentry' => '$2 $3 වෙතින් දැක්වෙන ඉකුත් වීමේ කාලයකට යටත් කොට [[$1]] වාරණයට ලක් කර ඇත',
'reblock-logentry' => '$2 $3 කල්ඉකුත්වීමේ වේලාවට යටත්ව [[$1]] සඳහා වාරණ පරිස්ථිතීන් වෙනස්කරන ලදි',
'blocklogtext' => 'පරිශීලකයන් වාරණය කිරීමේ හා වාරණයන් අත්හිටුවීමේ කාර්යයන් දැක්වෙන ලඝු සටහන මෙහි දැක්වේ.
@@ -2276,11 +2409,13 @@ $1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
'ipb_already_blocked' => '"$1" දැනටමත් වාරණයට ලක් කර ඇත',
'ipb-needreblock' => '== දැනටමත් වාරණය කොට ඇත ==
$1 දැනටමත් වාරණය කොට ඇත. පරිස්ථිතීන් වෙනස්කිරීම ඔබ හට ඇවැසිද?',
+'ipb-otherblocks-header' => 'අනෙකුත් {{PLURAL:$1|වාරණය|වාරණයන්}}',
'ipb_cant_unblock' => 'දෝෂය: වාරණ අනන්‍යනාංකය $1 සොයා ගත නොහැකි විය.
මෙය දැනටමත් වාරණ අත්හිටුවීමකට භාජනය වී ඇතිවා විය හැක.',
'ipb_blocked_as_range' => 'දෝෂය: $1 අන්තර්ජාල ලිපිනය සෘජුව වාරණය කොට නොමැති අතර එහි වාරණ‍ය අත්හිටුවිය නොහැක.
එනමුදු, එය, $2 පරාසයෙහි කොටසක් ලෙස වාරණයට ලක් කොට ඇති අතර, එහි වාරණය අත්හිටුවිය හැක.',
'ip_range_invalid' => 'අනීතික අන්තර්ජාල ලිපින පරාසයකි.',
+'ip_range_toolarge' => '/$1 ට වඩා විශාල පරාස කොටස්වලට ඉඩ ලබා නොදේ.',
'blockme' => 'මා වාරණය කරන්න',
'proxyblocker' => 'ප්‍රතියුක්ත (ප්‍රොක්සි) වාරණකරු',
'proxyblocker-disabled' => 'මෙම කෘත්‍යය අක්‍රීය කොට ඇත.',
@@ -2292,6 +2427,7 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'sorbs_create_account_reason' => 'ඔබගේ අන්තර්ජාල ලිපිනය, {{SITENAME}} විසින් භාවිත වන DNSBL හි විවෘත නියුතුවක් (ප්‍රොක්සියක්) ලෙස ලැයිස්තුගත කොට ඇත.
ඔබ හට ගිණුමක් තැනිය නොහැක',
'cant-block-while-blocked' => 'ඔබ වාරණයට ලක්ව සිටින අතරතුර අනෙක් පරිශීලකයන් වාරණය කිරීමට ඔබ හට නොහැක.',
+'cant-see-hidden-user' => 'අවහිර කිරීමට උත්සාහ කරන පරිශීලකයා දැනටමත් අවහිර කර සඟවා ඇත.පරිශීලක සැඟවුම් අයිතිය ඔබ සතු නොවන බැවින් ,ඔබට පරිශීලක අවහිරය නැරඹීමට හෝ සංස්කරණය කිරීමට නොහැකිය.',
# Developer tools
'lockdb' => 'දත්ත-ගබඩාව අවුරන්න',
@@ -2336,6 +2472,7 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
මෙවන් අවස්ථා වලදී, අවශ්‍යතාවය පැන නගී නම්, හස්තීය ලෙස ගෙන යාම හෝ ඒකාබද්ධ කිරීම හෝ සිදු කිරීමට ඔබ හට සිදුවේ.",
'movearticle' => 'පිටුව ගෙනයන්න:',
+'moveuserpage-warning' => "'''අවවාදයයි:''' ඔබ යත්න දරමින් සිටිනුයේ පරිශීලක පිටුවක් ගෙන යෑමටයි. පිටුව ගෙන යෑම පමණක් සිදුවන බවද පරිශීලකයා යළි-නම්කෙරුම සිදු ''නොවන'' බවද කරුණාවෙන් සිහි තබා ගන්න.",
'movenologin' => 'ප්‍රවිෂ්ටවී නොමැත',
'movenologintext' => 'පිටුවක් ගෙනයෑමට පෙර, ඔබ ලේඛනගත පරිශීලකයෙකු වී [[Special:UserLogin|ප්‍රවිෂ්ට වී]] සිටිය යුතුය.',
'movenotallowed' => 'පිටු ගෙනයෑමට ඔබ හට අවසර නොමැත.',
@@ -2346,7 +2483,7 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'move-watch' => 'මෙම පිටුව මුර කරන්න',
'movepagebtn' => 'පිටුව ගෙන යන්න',
'pagemovedsub' => 'ගෙනයාම සාර්ථකයි',
-'movepage-moved' => '\'\'\'"$1" යන පිටුව "$2"\'\'\' වෙත ගෙන යන ලදි', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" යන පිටුව "$2"\'\'\' වෙත ගෙන යන ලදි',
'movepage-moved-redirect' => 'යළි-යොමුවක් නිමැවිණි.',
'movepage-moved-noredirect' => 'යළි-යොමුවක් නිමැවීම යටපත් කෙරිණි.',
'articleexists' => 'එක්කෝ මෙම නම ඇති පිටුවක් දැනටමත් පවතී, නැත්නම් ඔබ විසින් තෝරා ගෙන ඇති පිටුව වලංගු එකක් නොවේ.
@@ -2390,6 +2527,14 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'imageinvalidfilename' => 'ඉලක්කගත ගොනු නාමය අනීතිකයි',
'fix-double-redirects' => 'මුල් ශීර්ෂයට එල්ලවන කිසියම් යළි-යොමුවීම් උඩුගත කරන්න',
'move-leave-redirect' => 'යළි-යොමුවක් හැර දමන්න',
+'protectedpagemovewarning' => "'''අවවාදයයි:''' පරිපාලක වරප්‍රසාද සතු පරිශීලකයන්ට පමණක් ගෙන යෑ හැකි පරිදී මෙම පිටුව අවුරා ඇත.
+ආසන්නතම ලඝු සටහන යොමුවන් සඳහා පහතින් සපයනු ලැබේ:",
+'semiprotectedpagemovewarning' => "'''සටහන:''' ලේඛනගත පරිශීලකයන්ට පමණක් ගෙන යෑ හැකි පරිදි මෙම පිටුව අවුරා ඇත.
+ආසන්නතම ලඝු සටහන යොමුවන් සඳහා පහතින් සපයනු ලැබේ:",
+'move-over-sharedrepo' => '== ගොනුව පවතී ==
+[[:$1]] පවතින්නේ හවුල් ගබඩාවකය.මෙම මාතෘකාවට ගොනුවක් ගෙනයාම හවුල් ගොනුව යටපත් කරනු ඇත.',
+'file-exists-sharedrepo' => 'තෝරා ගත් ගොනු නාමය දැනටම හවුල් ගබඩාවක භාවිතා වේ.
+කරුණාකර වෙනත් නමක් තෝරන්න.',
# Export
'export' => 'පිටු නිර්යාත කරන්න',
@@ -2412,15 +2557,21 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'export-pagelinks' => 'මෙම මට්ටම දක්වා සබැඳි පිටු අන්තර්ගත කරන්න:',
# Namespace 8 related
-'allmessages' => 'පද්ධති පණිවුඩ',
-'allmessagesname' => 'නම',
-'allmessagesdefault' => 'පෙරනිමි පෙළ',
-'allmessagescurrent' => 'වත්මන් පෙළ',
-'allmessagestext' => 'මේ මාධ්‍යවිකි නාමඅවකාශයෙහිදී හමුවන පද්ධති පණිවුඩයන් ලැයිස්තුවකි.
+'allmessages' => 'පද්ධති පණිවුඩ',
+'allmessagesname' => 'නම',
+'allmessagesdefault' => 'පෙරනිමි පෙළ',
+'allmessagescurrent' => 'වත්මන් පෙළ',
+'allmessagestext' => 'මේ මාධ්‍යවිකි නාමඅවකාශයෙහිදී හමුවන පද්ධති පණිවුඩයන් ලැයිස්තුවකි.
වර්ගීය මාධ්‍යවිකි ප්‍රාදේශීයකරණයට දායක වීමට ඔබ රිසි නම් කරුණාකර [http://www.mediawiki.org/wiki/Localisation මාධ්‍යවිකි ප්‍රාදේශීයකරණය] සහ [http://translatewiki.net බීටාවිකි] වෙත පිවිසෙන්න.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' අක්‍රීය කොට ඇති බැවින්, මෙම පිටුව භාවිතා කල නොහැක.",
-'allmessagesfilter' => 'පණිවුඩ නාම පෙරහන:',
-'allmessagesmodified' => 'විකරණය කල දෑ පමණක් පෙන්වන්න',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' අක්‍රීය කොට ඇති බැවින්, මෙම පිටුව භාවිතා කල නොහැක.",
+'allmessages-filter-legend' => 'පෙරහන',
+'allmessages-filter' => 'පාරිභෝගීකරණ තත්ත්වය අනුව පෙරීම:',
+'allmessages-filter-unmodified' => 'වෙනසකට නතු නොකල',
+'allmessages-filter-all' => 'සියල්ල',
+'allmessages-filter-modified' => 'වෙනසකට නතු කල',
+'allmessages-prefix' => 'උපසර්ගය පරිදී පෙරීම:',
+'allmessages-language' => 'භාෂාව:',
+'allmessages-filter-submit' => 'යන්න',
# Thumbnails
'thumbnail-more' => 'විශාලනය කිරීම',
@@ -2430,6 +2581,9 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'djvu_no_xml' => 'XML හෝ DjVu හෝ ගොනුව අත්කරගැනුමට නොහැකි විය',
'thumbnail_invalid_params' => 'සිඟිති-රූපයේ පරාමිතික අනීතිකයි',
'thumbnail_dest_directory' => 'අන්ත ඩිරෙක්ටරිය තැනීම කල නොහැක',
+'thumbnail_image-type' => 'රූප වර්ගය සඳහා අනුග්‍රහය සපයනු නොලැබේ',
+'thumbnail_gd-library' => 'GD පුස්තකාල වින්‍යාසය අසම්පූර්ණයි: අඩුපාඩු ශ්‍රිතය $1',
+'thumbnail_image-missing' => 'ගොනුව සොයාගත නොහැකි බවක් පෙන්නුම් කරයි: $1',
# Special:Import
'import' => 'පිටු ආයාත කරන්න',
@@ -2500,6 +2654,7 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
ඔබට එහි මූලාශ්‍රය නැරඹිය හැක.',
'tooltip-ca-history' => 'මෙම පිටුවේ පැරණි අනුවාදයන්.',
'tooltip-ca-protect' => 'මෙම පිටුව ආරක්‍ෂණය කරන්න',
+'tooltip-ca-unprotect' => 'මෙම පිටුව නොමසුරකින්න',
'tooltip-ca-delete' => 'මේ පිටුව මකන්න',
'tooltip-ca-undelete' => 'මෙම පිටුව මකා දැමීමට පෙර එයට සිදුකල සංස්කරණයන් නැවත ප්‍රතිෂ්ඨාපනය කරන්න',
'tooltip-ca-move' => 'මෙම පිටුව ගෙන යන්න',
@@ -2510,6 +2665,7 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'tooltip-search-fulltext' => 'මෙම පෙළ අඩංගු පිටු ගවේෂණය කරන්න',
'tooltip-p-logo' => 'මුල් පිටුව',
'tooltip-n-mainpage' => 'මුල් පිටුව‍ට පිවිසෙන්න',
+'tooltip-n-mainpage-description' => 'ප්‍රධාන පිටුවට ගොඩ වදින්න',
'tooltip-n-portal' => 'ව්‍යාපෘතියට අදාළව, ඔබට සිදුකල හැකි දෑ, අවශ්‍ය දෑ සොයා ගත හැකි අයුරු, යනාදී වැදගත් තොරතුරු',
'tooltip-n-currentevents' => 'කාලීන සිදුවීම් පිළිබඳ පසුබිම් තොරතුරු සොයා දැනගන්න',
'tooltip-n-recentchanges' => 'විකියෙහි මෑත වෙනස්වීම් දැක්වෙන ලැයිස්තුවක්.',
@@ -2579,10 +2735,12 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
# Attribution
'anonymous' => '{{SITENAME}} හි නිර්නාමික {{PLURAL:$1|පරිශීලකයා|පරිශීලකයෝ}}',
'siteuser' => '{{SITENAME}} පරිශීලක $1',
-'lastmodifiedatby' => 'මෙම පිටුව අවසන් වරට විකරණය කරන ලද්දේ $3 විසින් $1 දින $2 වේලාවේදීය .', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} නිර්නාමික පරිශීලක $1',
+'lastmodifiedatby' => 'මෙම පිටුව අවසන් වරට විකරණය කරන ලද්දේ $3 විසින් $1 දින $2 වේලාවේදීය .',
'othercontribs' => '$1ගේ කෘතිය මත පදනම් විය.',
'others' => 'අනෙකුන්',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|පරිශීලකයා|පරිශීලකයෝ}} $1',
+'anonusers' => '{{SITENAME}} නිර්නාමික {{PLURAL:$2|පරිශිලකයා|පරිශීලකයින්}} $1',
'creditspage' => 'පිටුවෙහි කතෘ-බුහුමන්',
'nocredits' => 'මෙම පිටුව සඳහා ස්තුතිපූර්වක තොරතුරු කිසිවක් නැත.',
@@ -2611,11 +2769,24 @@ $1 දැනටමත් වාරණය කොට ඇත. පරිස්ථි
'mw_math_modern' => 'නවීන බ්‍රවුසරයන් සඳහා නිර්දේශ කෙරේ',
'mw_math_mathml' => 'හැකි නම් MathML (පරීක්ෂණාත්මක)',
+# Math errors
+'math_failure' => 'ව්‍යාකරණ විග්‍රහය අසමත් විය',
+'math_unknown_error' => 'අඥාත දෝෂය',
+'math_unknown_function' => 'අඥාත ශ්‍රිතය',
+'math_lexing_error' => 'රීතිමය දෝෂයකි',
+'math_syntax_error' => 'කාරක-රීති දෝෂය',
+'math_image_error' => 'PNG අන්වර්තනය අසාර්ථකවිය;
+latex, dvips, gs, හා convert හී නිදොස් ස්ථාපනය සිදුවී ඇතිදැයි පිරික්සන්න',
+'math_bad_tmpdir' => 'ගණිත තාවකාලික ඩිරෙක්ටරිය තැනීමට හෝ එයට ලිවීමට නොහැක',
+'math_bad_output' => 'ගණිත ප්‍රතිදාන ඩිරෙක්ටරිය තැනීමට හෝ එයට ලිවීමට නොහැක',
+'math_notexvc' => 'texvc අභිවාහකය දක්නට නොමැත;
+වින්‍යාස කෙරුමට කරුණාකර math/README බලන්න.',
+
# Patrolling
'markaspatrolleddiff' => 'පරික්ෂාකර බැලූ ලෙස සලකුණු කරන්න',
'markaspatrolledtext' => 'මෙම පිටුව පරික්‍ෂාකර බැලූ ලෙස සලකුණු කරන්න',
'markedaspatrolled' => 'පරික්‍ෂෘකර බැලූ ලෙස සලකුණු කරන්න',
-'markedaspatrolledtext' => 'තෝරාගත් සංශෝධනය පරික්‍ෂාකඑ බැලූ ලෙස සලකුණු කර ඇත.',
+'markedaspatrolledtext' => '[[:$1]] හි තෝරාගත් සංශෝධනය පරික්‍ෂාකර බැලූ ලෙස හා විමසූ ලෙස සලකුණු කර ඇත.',
'rcpatroldisabled' => 'මෑත වෙනස්වීම් පරික්ෂාකිරීමේ අංගය අක්‍රීය කොට ඇත',
'rcpatroldisabledtext' => 'මෑත වෙනස්වීම් පරික්ෂාකිරීමේ අංගය දැනට අක්‍රීය කොට ඇත.',
'markedaspatrollederror' => 'පරික්‍ෂාකර බැලූ ලෙස සලකුණු කල නොහැක',
@@ -2645,15 +2816,11 @@ $1',
'previousdiff' => '← පැරැණි සංස්කරණය',
'nextdiff' => 'නවීන සංස්කරණය →',
-# Visual comparison
-'visual-comparison' => 'දෘශ්‍ය සැසැඳුම',
-
# Media information
'mediawarning' => "'''අවවාදයයි''': අනිෂ්ට කේතයන් මෙම ගොනුවෙහි අඩංගු විය හැක.
එය ක්‍රියාත්මක කිරීමෙන්, ඔබගේ පද්ධතියට හානිවිය හැක.",
-'imagemaxsize' => 'ගොනු විස්තර පිටුවල දැක්වෙන රූප මෙම අගයට සීමා කරන්න:',
+'imagemaxsize' => "රූප ප්‍රමාණ සීමාව:<br />''(ගොනු විස්තර පිටු සඳහා)''",
'thumbsize' => 'සිඟිති-රූපයේ විශාලත්වය:',
-'widthheight' => '$1×$2',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|පිටුව|පිටු}}',
'file-info' => '(ගොනු විශාලත්වය: $1, MIME වර්ගය: $2)',
'file-info-size' => '($1 × $2 පික්සල, ගොනු විශාලත්වය: $3, MIME ශෛලිය: $4)',
@@ -2661,6 +2828,8 @@ $1',
'svg-long-desc' => '(SVG ගොනුව, නාමමාත්‍රිකව $1 × $2 පික්සල්, ගොනු විශාලත්වය: $3)',
'show-big-image' => 'සම්පූර්ණ විසර්ජනය (Full resolution)',
'show-big-image-thumb' => '<small>පෙර නැරඹුමෙහි විශාලත්වය: $1 × $2 පික්සල</small>',
+'file-info-gif-looped' => 'වලිත',
+'file-info-gif-frames' => '$1 {{PLURAL:$1රාමුව|රාමු}}',
# Special:NewFiles
'newimages' => 'නව ගොනු ගැලරිය',
@@ -2741,7 +2910,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'පළල',
@@ -2874,14 +3043,14 @@ Variants for Chinese language
'exif-unknowndate' => 'අඥාත දිනයකි',
-'exif-orientation-1' => 'සාමාන්‍ය', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'තිරස වටා පෙරලා', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° භ්‍රමණය කොට', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'සිරස වටා පෙරලා', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° වාමාවර්තය භ්‍රමණය නොට සිරස වටා පෙරලා', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° දක්ෂිණාවර්තව භ්‍රමණය කොට', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° දක්ෂිණාවර්තව භ්‍රමණය කොට සිරස වටා පෙරලා', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° වාමාවර්තව භ්‍රමණය කොට', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'සාමාන්‍ය',
+'exif-orientation-2' => 'තිරස වටා පෙරලා',
+'exif-orientation-3' => '180° භ්‍රමණය කොට',
+'exif-orientation-4' => 'සිරස වටා පෙරලා',
+'exif-orientation-5' => '90° වාමාවර්තය භ්‍රමණය නොට සිරස වටා පෙරලා',
+'exif-orientation-6' => '90° දක්ෂිණාවර්තව භ්‍රමණය කොට',
+'exif-orientation-7' => '90° දක්ෂිණාවර්තව භ්‍රමණය කොට සිරස වටා පෙරලා',
+'exif-orientation-8' => '90° වාමාවර්තව භ්‍රමණය කොට',
'exif-planarconfiguration-1' => 'කුට්ටි ආකෘතිකරණය',
'exif-planarconfiguration-2' => 'තලීය ආකෘතිකරණය',
@@ -3021,7 +3190,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => 'ද්වීමාන මිනුම',
'exif-gpsmeasuremode-3' => 'ත්‍රිමාන මිනුම',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'පැයට කිලෝමීටර',
'exif-gpsspeed-m' => 'පැයට සැතපුම්',
'exif-gpsspeed-n' => 'නාවික සැතපුම්',
@@ -3040,6 +3209,7 @@ Variants for Chinese language
'watchlistall2' => 'සියල්ල',
'namespacesall' => 'සියල්ල',
'monthsall' => 'සියළු',
+'limitall' => 'සියල්ලම',
# E-mail address confirmation
'confirmemail' => 'විද්‍යුත්-තැපැල් ලිපිනය තහවුරු කරන්න',
@@ -3241,7 +3411,7 @@ $1',
'duplicate-defaultsort' => 'අවවාදයයි: "$2" පෙරනිමි සුබෙදුම් යතුර විසින් ‍පූර්ව පෙරනිමි සුබෙදුම් යතුර වූ "$1" අතික්‍රමණය කරයි.',
# Special:Version
-'version' => 'අනුවාදය', # Not used as normal message but as header for the special page itself
+'version' => 'අනුවාදය',
'version-extensions' => 'ස්ථාපිත ප්‍රසර්ජනයන්',
'version-specialpages' => 'විශේෂ පිටු',
'version-parserhooks' => 'ව්‍යාකරණ විග්‍රහක හසුරු',
@@ -3255,7 +3425,7 @@ $1',
'version-skin-extension-functions' => 'ඡවි ප්‍රසර්ජන ශ්‍රීත',
'version-hook-name' => 'හසුරු නම',
'version-hook-subscribedby' => 'දායකවී ඇත්තේ',
-'version-version' => 'අනුවාදය',
+'version-version' => '(අනුවාදය $1)',
'version-license' => 'බලපත්‍රය',
'version-software' => 'ස්ථාපිත මෘදුකාංග',
'version-software-product' => 'නිෂ්පාදනය',
@@ -3336,4 +3506,15 @@ $1',
'dberr-outofdate' => 'අපගේ අන්තර්ගතයෙහි සූචියන් යල් පැන ගොස් තිබිය හැකි බව සටහන් කර ගන්න.',
'dberr-cachederror' => 'මෙය ඉල්ලා ඇති පිටුවෙහි පූර්වාපේක්ෂිත සංචිත පිටුවක් වන අතර එය යාවත්කාලින නොවිය හැකි බව සලකන්න.',
+# HTML forms
+'htmlform-invalid-input' => 'ඔබගේ සමහරක් ප්‍රදානයන් විෂයයෙහි ගැ‍ටළු ඇත',
+'htmlform-select-badoption' => 'ඔබ විසින් හුවාදක්වා ඇති අගය නීතික විකල්පයක් නොවේ.',
+'htmlform-int-invalid' => 'ඔබ විසින් හුවාදක්වා ඇති අගය පූර්ණාංකයක් නොවේ.',
+'htmlform-float-invalid' => 'ඔබ ඉදිරිපත් කල අගය සංඛ්‍යාවක් නොවේ.',
+'htmlform-int-toolow' => 'ඔබ විසින් හුවාදක්වා ඇති අගය, අවම අගය වන $1 ට වඩා අඩුය',
+'htmlform-int-toohigh' => 'ඔබ විසින් හුවාදක්වා ඇති අගය, උපරිම අගය වන $1 ට වඩා වැඩිය',
+'htmlform-submit' => 'යොමුකරන්න',
+'htmlform-reset' => 'වෙනස්කිරීම් අහෝසිකරන්න',
+'htmlform-selectorother-other' => 'වෙනත්',
+
);
diff --git a/languages/messages/MessagesSimple.php b/languages/messages/MessagesSimple.php
index 144fcc15..dd4d376b 100644
--- a/languages/messages/MessagesSimple.php
+++ b/languages/messages/MessagesSimple.php
@@ -1,6 +1,9 @@
<?php
/** English
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment dummy language file. Falls back to 'en'. Needed for http://simple.wikipedia.org.
diff --git a/languages/messages/MessagesSk.php b/languages/messages/MessagesSk.php
index d820c011..11520a2a 100644
--- a/languages/messages/MessagesSk.php
+++ b/languages/messages/MessagesSk.php
@@ -14,6 +14,7 @@
* @author Michawiki
* @author Mormegil
* @author Palica
+ * @author Ragimiri
* @author Rudko
* @author Sp5uhe
* @author Tchoř
@@ -22,6 +23,95 @@
* @author לערי ריינהארט
*/
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'DvojitéPresmerovania' ),
+ 'BrokenRedirects' => array( 'PokazenéPresmerovania' ),
+ 'Disambiguations' => array( 'RozlišovacieStránky' ),
+ 'Userlogin' => array( 'PrihláseniePoužívateľa' ),
+ 'Userlogout' => array( 'OdhláseniePoužívateľa' ),
+ 'CreateAccount' => array( 'VytvorenieÚčtu' ),
+ 'Preferences' => array( 'Nastavenia' ),
+ 'Watchlist' => array( 'ZoznamSledovaných' ),
+ 'Recentchanges' => array( 'PoslednéÚpravy' ),
+ 'Upload' => array( 'NahranieSúboru' ),
+ 'Listfiles' => array( 'ZoznamSúborov' ),
+ 'Newimages' => array( 'NovéSúbory' ),
+ 'Listusers' => array( 'ZoznamPoužívateľov' ),
+ 'Listgrouprights' => array( 'ZoznamSkupinovýchPráv' ),
+ 'Statistics' => array( 'Štatistika' ),
+ 'Randompage' => array( 'Náhodná', 'NáhodnáStránka' ),
+ 'Lonelypages' => array( 'OsirotenéStránky' ),
+ 'Uncategorizedpages' => array( 'NekategorizovanéStránky' ),
+ 'Uncategorizedcategories' => array( 'NekategorizovanéKategórie' ),
+ 'Uncategorizedimages' => array( 'NekategorizovanéSúbory' ),
+ 'Uncategorizedtemplates' => array( 'NekategorizovanéŠablóny' ),
+ 'Unusedcategories' => array( 'NepoužívanéKategórie' ),
+ 'Unusedimages' => array( 'NepoužívanéSúbory' ),
+ 'Wantedpages' => array( 'ŽiadanéStránky' ),
+ 'Wantedcategories' => array( 'ŽiadanéKategórie' ),
+ 'Wantedfiles' => array( 'ŽiadanéSúbory' ),
+ 'Wantedtemplates' => array( 'ŽiadanéŠablóny' ),
+ 'Mostlinked' => array( 'NajodkazovanejšieStránky' ),
+ 'Mostlinkedcategories' => array( 'NajodkazovanejšieKategórie' ),
+ 'Mostlinkedtemplates' => array( 'NajodkazovanejšieŠablóny' ),
+ 'Mostimages' => array( 'NajodkazovanejšieSúbory' ),
+ 'Mostcategories' => array( 'NajviacKategórií' ),
+ 'Mostrevisions' => array( 'NajviacRevízií' ),
+ 'Fewestrevisions' => array( 'NajmenejRevízií' ),
+ 'Shortpages' => array( 'KrátkeStránky' ),
+ 'Longpages' => array( 'DlhéStránky' ),
+ 'Newpages' => array( 'NovéStránky' ),
+ 'Ancientpages' => array( 'StaréStránky' ),
+ 'Deadendpages' => array( 'StránkyBezOdkazov' ),
+ 'Protectedpages' => array( 'ZamknutéStránky' ),
+ 'Protectedtitles' => array( 'ZamknutéNázvy' ),
+ 'Allpages' => array( 'VšetkyStránky' ),
+ 'Prefixindex' => array( 'IndexPredpon' ),
+ 'Ipblocklist' => array( 'ZoznamBlokovaní' ),
+ 'Specialpages' => array( 'ŠpeciálneStránky' ),
+ 'Contributions' => array( 'Príspevky' ),
+ 'Emailuser' => array( 'EmailPoužívateľovi' ),
+ 'Confirmemail' => array( 'PotvrdiťEmail' ),
+ 'Whatlinkshere' => array( 'ČoOdkazujeSem' ),
+ 'Recentchangeslinked' => array( 'SúvisiacePoslednéÚpravy' ),
+ 'Movepage' => array( 'PresunúťStránku' ),
+ 'Blockme' => array( 'ZablokovaťMa' ),
+ 'Booksources' => array( 'KnižnéZdroje' ),
+ 'Categories' => array( 'Kategórie' ),
+ 'Version' => array( 'Verzia' ),
+ 'Allmessages' => array( 'VšetkySprávy' ),
+ 'Log' => array( 'Záznamy' ),
+ 'Blockip' => array( 'Blokovanie' ),
+ 'Undelete' => array( 'Obnovenie' ),
+ 'Lockdb' => array( 'ZamknutieDB' ),
+ 'Unlockdb' => array( 'OdomknutieDB' ),
+ 'Userrights' => array( 'PrávaPoužívateľa' ),
+ 'MIMEsearch' => array( 'HľadanieMIME' ),
+ 'FileDuplicateSearch' => array( 'HľadanieDuplicitnýchSúborov' ),
+ 'Unwatchedpages' => array( 'NesledovanéStránky' ),
+ 'Listredirects' => array( 'ZoznamPresmerovaní' ),
+ 'Revisiondelete' => array( 'ZmazaťRevíziu' ),
+ 'Unusedtemplates' => array( 'NepoužitéŠablóny' ),
+ 'Randomredirect' => array( 'NáhodnéPresmerovanie' ),
+ 'Mypage' => array( 'MojaStránka' ),
+ 'Mytalk' => array( 'MojaDiskusia' ),
+ 'Mycontributions' => array( 'MojePríspevky' ),
+ 'Listadmins' => array( 'ZoznamSprávcov' ),
+ 'Listbots' => array( 'ZoznamBotov' ),
+ 'Popularpages' => array( 'PopulárneStránky' ),
+ 'Search' => array( 'Hľadanie' ),
+ 'Resetpass' => array( 'ZmenaHesla' ),
+ 'Withoutinterwiki' => array( 'BezInterwiki' ),
+ 'MergeHistory' => array( 'HistóriaZlúčení' ),
+ 'Filepath' => array( 'CestaKSúboru' ),
+ 'Invalidateemail' => array( 'ZneplatniťEmail' ),
+ 'Blankpage' => array( 'PrázdnaStránka' ),
+ 'LinkSearch' => array( 'HľadanieOdkazov' ),
+ 'DeletedContributions' => array( 'ZmazanéPríspevky' ),
+ 'Tags' => array( 'Značky' ),
+ 'Activeusers' => array( 'AktívniPoužívatelia' ),
+);
+
$datePreferences = array(
'default',
'dmyt',
@@ -66,8 +156,7 @@ $dateFormats = array(
'short tdmy time' => 'H:i',
'short tdmy date' => 'j. M. Y',
- 'short tdmy both' => 'H:i, j. M. Y',
-
+ 'short tdmy both' => 'H:i, j. M. Y'
);
$bookstoreList = array(
@@ -89,7 +178,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__VYNÚTIŤOBSAH__', '__FORCETOC__' ),
'toc' => array( '0', '__OBSAH__', '__TOC__' ),
'noeditsection' => array( '0', '__NEUPRAVOVAŤSEKCIE__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'AKTUÁLNYMESIAC', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'AKTUÁLNYMESIAC', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'NÁZOVAKTUÁLNEHOMESIACA', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'NÁZOVAKTUÁLNEHOMESIACAGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'NÁZOVAKTUÁLNEHOMESIACASKRATKA', 'CURRENTMONTHABBREV' ),
@@ -215,6 +304,7 @@ $messages = array(
'tog-enotifminoredits' => 'Upozorniť ma emailom aj na drobné úpravy stránok',
'tog-enotifrevealaddr' => 'Zobraziť moju emailovú adresu v emailoch s upozorneniami',
'tog-shownumberswatching' => 'Zobraziť počet používateľov sledujúcich stránku',
+'tog-oldsig' => 'Náhľad súčasného podpisu:',
'tog-fancysig' => 'Považovať podpisy za wikitext (bez automatických odkazov)',
'tog-externaleditor' => 'Používať štandardne externý editor (iba pre expertov, vyžaduje špeciálne nastavenie vášho počítača)',
'tog-externaldiff' => 'Používať štandardne externý diff (iba pre expertov, vyžaduje špeciálne nastavenie vášho počítača)',
@@ -238,6 +328,13 @@ $messages = array(
'underline-never' => 'Nikdy',
'underline-default' => 'Štandardné nastavenie prehliadača',
+# Font style option in Special:Preferences
+'editfont-style' => 'Štýl písma oblasti na úpravy:',
+'editfont-default' => 'Predvoľba prehliadača',
+'editfont-monospace' => 'S pevnou šírkou znaku',
+'editfont-sansserif' => 'Bezpätkové písmo',
+'editfont-serif' => 'Pätkové písmo',
+
# Dates
'sunday' => 'nedeľa',
'monday' => 'pondelok',
@@ -297,7 +394,7 @@ $messages = array(
'category-media-header' => 'Multimediálne súbory v kategórii „$1“',
'category-empty' => "''Táto kategória momentálne neobsahuje články ani multimediálne súbory.''",
'hidden-categories' => '{{PLURAL:$1|Skrytá kategória|Skryté kategórie}}',
-'hidden-category-category' => 'Skryté kategórie', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skryté kategórie',
'category-subcat-count' => '{{PLURAL:$2|Táto kategória má nasledovnú podkategóriu.|Táto kategória má {{PLURAL:$1|nasledovnú podkategóriu|nasledovné $1 podkategórie|nasledovných $1 podkategórií}} z $2 celkom.}}',
'category-subcat-count-limited' => 'Táto kategória má {{PLURAL:$1|nasledovnú podkategóriu|nasledovné $1 podkategórie|nasledovných $1 podkategórií}}.',
'category-article-count' => '{{PLURAL:$2|Táto kategória obsahuje iba nasledovnú stránku.|V tejto kategórii sa {{PLURAL:$1|nachádza jedna stránka|nachádzajú $1 stránky|nachádza $1 stránok}} z $2 celkom.}}',
@@ -305,6 +402,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Táto kategória obsahuje iba nasledovný súbor.|V tejto kategórii sa {{PLURAL:$1|nachádza jeden súbor|nachádzajú $1 súbory|nachádza $1 súborov}} z $2 celkom.}}',
'category-file-count-limited' => 'V tejto kategórii sa {{PLURAL:$1|nachádza jeden súbor|nachádzajú $1 súbory|nachádza $1 súborov}}',
'listingcontinuesabbrev' => 'pokrač.',
+'index-category' => 'Indexované stránky',
+'noindex-category' => 'neindexované stránky',
'mainpagetext' => "'''Softvér MediaWiki bol úspešne nainštalovaný.'''",
'mainpagedocfooter' => 'Informácie ako používať wiki softvér nájdete v [http://meta.wikimedia.org/wiki/Help:Contents Používateľskej príručke].
@@ -315,10 +414,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list nových verzií MediaWiki]',
-'about' => 'Projekt',
-'article' => 'Stránka s obsahom',
-'newwindow' => '(otvorí v novom okne)',
-'cancel' => 'Zrušiť',
+'about' => 'Projekt',
+'article' => 'Stránka s obsahom',
+'newwindow' => '(otvorí v novom okne)',
+'cancel' => 'Zrušiť',
+'moredotdotdot' => 'Viac...',
+'mypage' => 'Moja stránka',
+'mytalk' => 'Moja diskusia',
+'anontalk' => 'Diskusia k tejto IP adrese',
+'navigation' => 'Navigácia',
+'and' => '&#32;a',
+
+# Cologne Blue skin
'qbfind' => 'Hľadať',
'qbbrowse' => 'Prehliadať',
'qbedit' => 'Upraviť',
@@ -326,15 +433,35 @@ $messages = array(
'qbpageinfo' => 'Kontext',
'qbmyoptions' => 'Moje stránky',
'qbspecialpages' => 'Špeciálne stránky',
-'moredotdotdot' => 'Viac...',
-'mypage' => 'Moja stránka',
-'mytalk' => 'Moja diskusia',
-'anontalk' => 'Diskusia k tejto IP adrese',
-'navigation' => 'Navigácia',
-'and' => '&#32;a',
-
-# Metadata in edit box
-'metadata_help' => 'Metadáta:',
+'faq' => 'Často kladené otázky',
+'faqpage' => 'Project:Často kladené otázky',
+
+# Vector skin
+'vector-action-addsection' => 'Pridať tému',
+'vector-action-delete' => 'Zmazať',
+'vector-action-move' => 'Presunúť',
+'vector-action-protect' => 'Zamknúť',
+'vector-action-undelete' => 'Obnoviť',
+'vector-action-unprotect' => 'Odomknúť',
+'vector-namespace-category' => 'Kategória',
+'vector-namespace-help' => 'Pomocník',
+'vector-namespace-image' => 'Súbor',
+'vector-namespace-main' => 'Stránka',
+'vector-namespace-media' => 'Stránka súboru',
+'vector-namespace-mediawiki' => 'Správa',
+'vector-namespace-project' => 'Stránka projektu',
+'vector-namespace-special' => 'Špeciálna stránka',
+'vector-namespace-talk' => 'Diskusia',
+'vector-namespace-template' => 'Šablóna',
+'vector-namespace-user' => 'Používateľská stránka',
+'vector-view-create' => 'Vytvoriť',
+'vector-view-edit' => 'Upraviť',
+'vector-view-history' => 'Zobraziť históriu',
+'vector-view-view' => 'Čítať',
+'vector-view-viewsource' => 'Zobraziť zdroj',
+'actions' => 'Operácie',
+'namespaces' => 'Menné priestory',
+'variants' => 'Varianty',
'errorpagetitle' => 'Chyba',
'returnto' => 'Späť na $1.',
@@ -384,18 +511,22 @@ $messages = array(
'otherlanguages' => 'V iných jazykoch',
'redirectedfrom' => '(Presmerované z $1)',
'redirectpagesub' => 'Presmerovacia stránka',
-'lastmodifiedat' => 'Čas poslednej úpravy tejto stránky je $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Čas poslednej úpravy tejto stránky je $2, $1.',
'viewcount' => 'Táto stránka bola navštívená {{PLURAL:$1|raz|$1-krát|$1-krát}}.',
'protectedpage' => 'Zamknutá stránka',
'jumpto' => 'Prejsť na:',
'jumptonavigation' => 'navigácia',
'jumptosearch' => 'hľadanie',
+'view-pool-error' => 'Ľutujeme, servery sú momentálne preťažené.
+Príliš veľa používateľov sa pokúša zobraziť túto stránku.
+Prosím, počkajte chvíľu predtým, než sa pokúsite na túto stránku dostať znova.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O {{GRAMMAR:lokál|{{SITENAME}}}}',
'aboutpage' => 'Project:Úvod',
'copyright' => 'Obsah je k dispozícii za licenčných podmienok $1.',
-'copyrightpagename' => 'autorské práva {{GRAMMAR:genitív|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Autorské práva',
'currentevents' => 'Aktuality',
'currentevents-url' => 'Project:Aktuality',
@@ -403,8 +534,6 @@ $messages = array(
'disclaimerpage' => 'Project:Vylúčenie zodpovednosti',
'edithelp' => 'Ako upravovať stránku',
'edithelppage' => 'Help:Ako upravovať stránku',
-'faq' => 'Často kladené otázky',
-'faqpage' => 'Project:Často kladené otázky',
'helppage' => 'Help:Obsah',
'mainpage' => 'Hlavná stránka',
'mainpage-description' => 'Hlavná stránka',
@@ -484,10 +613,6 @@ Posledná požiadavka na databázu bola:
„$1“
z funkcie „$2“.
Databáza vrátila chybu „$3: $4“.',
-'noconnect' => 'Prepáčte! Wiki má technické problémy a nemôže kontaktovať databázový server.<br />
-$1',
-'nodb' => 'Nebolo možné vybrať databázu $1',
-'cachederror' => 'Nasledujúca stránka je kópia vyžiadanej stránky z vyrovnávacej pamäte a nemusí byť aktuálna.',
'laggedslavemode' => 'Upozornenie: Je možné, že stránka neobsahuje posledné aktualizácie.',
'readonly' => 'Databáza je zamknutá',
'enterlockreason' => 'Zadajte dôvod požadovaného zamknutia vrátane odhadu, kedy očakávate odomknutie',
@@ -505,6 +630,8 @@ Oznámte to prosím [[Special:ListUsers/sysop|správcovi]] a uveďte URL.',
'readonly_lag' => 'Databáza bola automaticky zamknutá pokým záložné databázové servery nedoženú hlavný server',
'internalerror' => 'Vnútorná chyba',
'internalerror_info' => 'Vnútorná chyba: $1',
+'fileappenderrorread' => 'Počas pridávania sa nepodarilo prečítať „$1“.',
+'fileappenderror' => 'Nepodarilo sa pridať „$1“ k „$2“.',
'filecopyerror' => 'Nebolo možné skopírovať súbor „$1“ na „$2“.',
'filerenameerror' => 'Nebolo možné premenovať súbor „$1“ na „$2“.',
'filedeleteerror' => 'Nebolo možné vymazať súbor „$1“.',
@@ -514,7 +641,8 @@ Oznámte to prosím [[Special:ListUsers/sysop|správcovi]] a uveďte URL.',
'unexpected' => 'Neočakávaná hodnota: „$1“=„$2“.',
'formerror' => 'Chyba: nepodarilo sa odoslať formulár',
'badarticleerror' => 'Na tejto stránke túto činnosť nemožno vykonať.',
-'cannotdelete' => 'Nebolo možné zmazať danú stránku alebo súbor. (Možno už bol zmazaný niekým iným.)',
+'cannotdelete' => 'Nebolo možné zmazať stránku alebo súbor „$1“.
+Možno ju už zmazal nieto iný.',
'badtitle' => 'Neplatný nadpis',
'badtitletext' => 'Požadovaný nadpis bol neplatný, nezadaný, alebo nesprávne odkazovaný z inej jazykovej verzie {{GRAMMAR:genitív|{{SITENAME}}}}. Mohol tiež obsahovať jeden alebo viac znakov, ktoré nie je možné použiť v nadpisoch.',
'perfcached' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a nemusia byť úplne aktuálne.',
@@ -546,7 +674,6 @@ Udaný dôvod: ''$2''.",
'virus-unknownscanner' => 'neznámy antivírus:',
# Login and logout pages
-'logouttitle' => 'Odhlásiť používateľa',
'logouttext' => "'''Práve ste sa odhlásili.'''
Odteraz môžete používať {{GRAMMAR:akuzatív|{{SITENAME}}}} ako anonymný používateľ alebo sa môžete opäť [[Special:UserLogin|prihlásiť]] pod rovnakým alebo odlišným používateľským menom.
@@ -555,7 +682,6 @@ Uvedomte si, že niektoré stránky sa môžu naďalej zobrazovať ako keby ste
Vaše konto je vytvorené.
Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastavenia]].',
-'loginpagetitle' => 'Prihlásenie používateľa',
'yourname' => 'Používateľské meno:',
'yourpassword' => 'Heslo:',
'yourpasswordagain' => 'Zopakujte heslo:',
@@ -566,6 +692,7 @@ Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastaveni
'nav-login-createaccount' => 'Vytvorenie konta / prihlásenie',
'loginprompt' => 'Na prihlásenie do {{GRAMMAR:genitív|{{SITENAME}}}} musíte mať zapnuté koláčiky (cookies).',
'userlogin' => 'Vytvorenie konta / prihlásenie',
+'userloginnocreate' => 'Prihlásiť',
'logout' => 'Odhlásiť',
'userlogout' => 'Odhlásiť',
'notloggedin' => 'Neprihlásený/á',
@@ -578,27 +705,8 @@ Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastaveni
'badretype' => 'Zadané heslá nie sú rovnaké.',
'userexists' => 'Zadané používateľské meno už používa niekto iný.
Zadajte iné meno.',
-'youremail' => 'Váš e-mail²',
-'username' => 'Používateľské meno:',
-'uid' => 'ID používateľa:',
-'prefs-memberingroups' => 'Člen {{PLURAL:$1|skupiny|skupín}}:',
-'yourrealname' => 'Skutočné meno *:',
-'yourlanguage' => 'Jazyk:',
-'yourvariant' => 'Variant jazyka:',
-'yournick' => 'Podpis:',
-'badsig' => 'Neplatný podpis v pôvodnom tvare; skontrolujte HTML značky.',
-'badsiglength' => 'Váš podpis je príliš dlhý.
-Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
-'yourgender' => 'Pohlavie:',
-'gender-unknown' => 'Neuvedené',
-'gender-male' => 'Muž',
-'gender-female' => 'Žena',
-'prefs-help-gender' => 'Nepovinné: používa softvér na správne oslovenie v závislosti od rodu. Táto informácia bude verejná.',
-'email' => 'E-mail',
-'prefs-help-realname' => '¹ Skutočné meno (nepovinné): ak sa rozhodnete ho poskytnúť, bude použité na označenie vašej práce.',
'loginerror' => 'Chyba pri prihlasovaní',
-'prefs-help-email' => '² E-mail (nepovinné): Umožní iným ľuďom kontaktovať vás pomocou odkazu z vašej používateľskej a diskusnej stránky (bez potreby uverejňovania vašej e-mailovej adresy) a môže naň byť poslané nové heslo ak zabudnete pôvodné.',
-'prefs-help-email-required' => 'Vyžaduje sa e-mailová adresa.',
+'createaccounterror' => 'Nepodarilo sa vytvoriť účet: $1',
'nocookiesnew' => 'Používateľské konto bolo vytvorené, ale nie ste prihlásený. {{SITENAME}} používa cookies na prihlásenie. Máte cookies vypnuté. Zapnite ich a potom sa prihláste pomocou vášho nového používateľského mena a hesla.',
'nocookieslogin' => '{{SITENAME}} používa cookies na prihlásenie. Vy máte cookies vypnuté. Prosíme, zapnite ich a skúste znovu.',
'noname' => 'Nezadali ste platné používateľské meno.',
@@ -609,10 +717,11 @@ V používateľských menách sa rozlišuje veľkosť písmen.
Skontrolujte preklepy alebo sa [[Special:UserLogin/signup|zaregistrujte ako nový používateľ]].',
'nosuchusershort' => 'V súčasnosti neexistuje používateľ s menom „<nowiki>$1</nowiki>“. Skontrolujte preklepy.',
'nouserspecified' => 'Musíte uviesť meno používateľa.',
+'login-userblocked' => 'Tento používateľ je zablokovaný. Nie je mu dovolené prihlásiť sa.',
'wrongpassword' => 'Zadané heslo je nesprávne. Skúste znovu.',
'wrongpasswordempty' => 'Zadané heslo bolo prázdne. Skúste prosím znova.',
-'passwordtooshort' => 'Vaše heslo je neplatné alebo príliš krátke.
-Musí mať dĺžku aspoň {{PLURAL:$1|$1 znak|$1 znaky|$1 znakov}} a líšiť sa od vášho používateľského mena.',
+'passwordtooshort' => 'Heslo musí mať dĺžku aspoň $1 {{PLURAL:$1|znak|znaky|znakov}}.',
+'password-name-match' => 'Vaše heslo musí byť iné ako vaše používateľské meno.',
'mailmypassword' => 'Pošlite mi e-mailom dočasné heslo',
'passwordremindertitle' => 'Nové dočasné heslo pre {{GRAMMAR:akuzatív|{{SITENAME}}}}',
'passwordremindertext' => 'Niekto (pravdepodobne vy, z IP adresy $1)
@@ -624,6 +733,7 @@ Platnosť vášho dočasného hesla vyprší o {{PLURAL:$5|jeden deň|$5 dni|$5
Ak túto požiadavku poslal niekto iný alebo ste si spomenuli svoje heslo a neželáte
si ho zmeniť, môžete túto správu ignorovať a naďalej používať svoje staré heslo.',
'noemail' => 'Používateľ „$1“ nezadal e-mailovú adresu.',
+'noemailcreate' => 'Musíte uviesť platnú e-mailovú adresu',
'passwordsent' => 'Nové heslo bolo zaslané na e-mailovú adresu
používateľa „$1“.
Prosím, prihláste sa znovu, keď ho dostanete.',
@@ -647,9 +757,11 @@ Z tohto dôvodu nemôžu návštevníci z tejto IP adresy momentálne vytvoriť
($4) s názvom „$2“, s heslom „$3“. Mali by ste sa prihlásiť a svoje heslo teraz zmeniť.
Ak bol účet vytvorený omylom, túto správu môžete ignorovať.',
+'usernamehasherror' => 'Používateľské meno nemôže obsahovať znak mriežky.',
'login-throttled' => 'Nedávno ste uskutočnili príliš mnoho neúspešných pokusov o prihlásenie.
Prosím, počkajte predtým, než to skúsite znova.',
'loginlanguagelabel' => 'Jazyk: $1',
+'suspicious-userlogout' => 'Vaša požiadavka odhlásiť sa bola zamietnutá, pretože to vyzerá, že ju poslal pokazený prehliadač alebo proxy server.',
# Password reset dialog
'resetpass' => 'Zmeniť heslo',
@@ -661,17 +773,13 @@ Prosím, počkajte predtým, než to skúsite znova.',
'retypenew' => 'Nové heslo (ešte raz):',
'resetpass_submit' => 'Nastaviť heslo a prihlásiť sa',
'resetpass_success' => 'Vaše heslo bolo úspešne zmenené! Prebieha prihlasovanie...',
-'resetpass_bad_temporary' => 'Neplatné dočasné heslo. Možno ste už úspešne zmenili svoje heslo alebo vyžiadali nové dočasné heslo.',
'resetpass_forbidden' => 'Heslá nie je možné zmeniť',
'resetpass-no-info' => 'Aby ste mohli priamo pristupovať k tejto stránke, musíte sa prihlásiť.',
'resetpass-submit-loggedin' => 'Zmeniť heslo',
+'resetpass-submit-cancel' => 'Zrušiť',
'resetpass-wrong-oldpass' => 'Neplatné dočasné alebo aktuálne heslo.
Je možné, že sa vám už podarilo úspešne zmeniť svoje heslo alebo ste si vyžiadali nové dočasné heslo.',
'resetpass-temp-password' => 'Dočasné heslo:',
-'resetpass-log' => 'Záznam zmien hesla',
-'resetpass-logtext' => 'Toto je záznam používateľov, ktorí si nechali zmeniť heslo správcom.',
-'resetpass-logentry' => 'zmenil heslo používateľa $1',
-'resetpass-comment' => 'Dôvod zmeny hesla:',
# Edit page toolbar
'bold_sample' => 'Tučný text',
@@ -747,7 +855,6 @@ Prosím, uveďte tieto podrobnosti v akýchkoľvek otázkach, ktoré sa opýtate
'blockededitsource' => "Text '''vašich úprav''' stránky '''$1''' je zobrazený nižšie:",
'whitelistedittitle' => 'Aby ste mohli upravovať stránky, musíte sa prihlásiť',
'whitelistedittext' => 'Aby ste mohli upravovať stránky, musíte sa $1',
-'confirmedittitle' => 'Aby ste mohli upravovať je potrebné potvrdenie e-mailu',
'confirmedittext' => 'Pred úpravami stránok musíte potvrdiť vašu emailovú adresu. Prosím, nastavte a overte svoju emailovú adresu v [[Special:Preferences|používateľských nastaveniach]].',
'nosuchsectiontitle' => 'Sekcia nebola nájdená',
'nosuchsectiontext' => 'Pokúšali ste sa upravovať sekciu, ktorá neexistuje.
@@ -771,10 +878,17 @@ Ak ste anonymný používateľ a máte pocit, že vám boli adresované irelevan
Môžete [[Special:Search/{{PAGENAME}}|vyhľadávať názov tejto stránky]] v obsahu iných stránok,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vyhľadávať v súvisiacich záznamoch],
alebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} upravovať túto stránku].',
+'noarticletext-nopermission' => 'Táto stránka momentálne neobsahuje žiadny text.
+Môžete [[Special:Search/{{PAGENAME}}|hľadať názov tejto stránky]] v texte iných stránok
+alebo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si pozrieť súvisiace záznamy]</span>.',
'userpage-userdoesnotexist' => 'Používateľský účet „$1“ nie je registrovaný. Prosím, zaškrtnite ak chcete vytvoriť/upravovať túto stránku.',
+'userpage-userdoesnotexist-view' => 'Používateľský účet „$1“ nie je registrovaný.',
+'blocked-notice-logextract' => 'Tento používateľ je momentálne zablokovaný.
+Dolu je pre informáciu posledná položka zo záznamu blokovaní:',
'clearyourcache' => "'''Poznámka: Aby sa zmeny prejavili, po uložení musíte vymazať vyrovnávaciu pamäť vášho prehliadača.'''
'''Mozilla / Firefox / Safari:''' držte stlačený ''Shift'' a kliknite na ''Reload'' alebo stlačte buď ''Ctrl-F5'' alebo ''Ctrl-R'' (''Comand-R'' na Macintosh); '''Konqueror:''': kliknite na tlačidlo ''Reload'' alebo stlačte ''F5''; '''Opera''' vymazať vyrovnávaciu pamäť prehliadača v ponuke ''Tools→Preferences''; '''Internet Explorer:''' držte ''Ctrl'' a kliknite na ''Refresh'' alebo stlačte ''Ctrl-F5'';",
-'usercssjsyoucanpreview' => "'''Tip:''' Váš nový CSS/JS pred uložením otestujete stlačením tlačidla „Zobraziť náhľad“.",
+'usercssyoucanpreview' => "'''Tip:''' Váš nový CSS pred uložením otestujete stlačením tlačidla „{{int:showpreview}}“.",
+'userjsyoucanpreview' => "'''Tip:''' Váš nový JS pred uložením otestujete stlačením tlačidla „{{int:showpreview}}“.",
'usercsspreview' => "'''Nezabudnite, že toto je iba náhľad vášho používateľského CSS, ešte nebolo uložené!'''",
'userjspreview' => "'''Nezabudnite, že iba testujete/náhľad vášho používateľského JavaScriptu, ešte nebol uložený!'''",
'userinvalidcssjstitle' => "'''Upozornenie:''' Neexistuje vzhľad „$1“. Pamätajte, že vlastné .css a .js stránky používajú názov s malými písmenami, napr. {{ns:user}}:Foo/monobook.css a nie {{ns:user}}:Foo/Monobook.css.",
@@ -826,13 +940,13 @@ takže stránku momentálne nemôžete uložiť. Môžete skopírovať a vloži
text do textového súboru a uložiť si ho na neskôr.'''
Správca, ktorý ju zamkol, uviedol nasledovné vysvetlenie: $1",
-'protectedpagewarning' => "'''UPOZORNENIE: Táto stránka bola zamknutá, takže ju môžu upravovať iba používatelia s oprávnením správcu.'''",
-'semiprotectedpagewarning' => "'''Poznámka:''' Táto stránka bola zamknutá tak, aby ju mohli upravovať iba registrovaní používatelia.",
+'protectedpagewarning' => "'''Upozornenie: Táto stránka bola zamknutá, takže ju môžu upravovať iba používatelia s oprávnením správcu.''' Dolu je pre informáciu posledná položka zo záznamu:",
+'semiprotectedpagewarning' => "'''Poznámka:''' Táto stránka bola zamknutá tak, aby ju mohli upravovať iba registrovaní používatelia. Dolu je pre informáciu posledná položka zo záznamu:",
'cascadeprotectedwarning' => "'''Upozornenie:''' Táto stránka bola zamknutá (takže ju môžu upravovať iba používatelia s privilégiami správcu), pretože je použitá na {{PLURAL:$1|nasledovnej stránke|nasledovných stránkach}} s kaskádovým zamknutím:",
-'titleprotectedwarning' => "'''UPOZORNENIE: Táto stránka bola zamknutá, takže ju môžu vytvoriť iba používatelia s [[Special:ListGroupRights|určitými právami]].'''",
-'templatesused' => 'Šablóny použité na tejto stránke:',
-'templatesusedpreview' => 'Šablóny použité v tomto náhľade:',
-'templatesusedsection' => 'Šablóny použité v tejto sekcii:',
+'titleprotectedwarning' => "'''Upozornenie: Táto stránka bola zamknutá, takže ju môžu vytvoriť iba používatelia s [[Special:ListGroupRights|určitými právami]].''' Dolu je pre informáciu posledná položka zo záznamu:",
+'templatesused' => '{{PLURAL:$1|Šablóna použitá|Šablóny použité}} na tejto stránke:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablóna použitá|Šablóny použité}} použité v tomto náhľade:',
+'templatesusedsection' => '{{PLURAL:$1|Šablóna použitá|Šablóny použité}} použité v tejto sekcii:',
'template-protected' => '(zamknutá)',
'template-semiprotected' => '(čiastočne zamknutá)',
'hiddencategories' => 'Táto stránka patrí do {{PLURAL:$1|1 skrytej kategórie|$1 skrytých kategórií}}:',
@@ -841,15 +955,18 @@ Správca, ktorý ju zamkol, uviedol nasledovné vysvetlenie: $1",
'nocreatetext' => 'Na {{GRAMMAR:lokál|{{SITENAME}}}} je tvorba nových stránok obmedzená.
Teraz sa môžete vrátiť späť a upravovať existujúcu stránku alebo [[Special:UserLogin|sa prihlásiť alebo vytvoriť účet]].',
'nocreate-loggedin' => 'Nemáte povolenie vytvárať nové stránky.',
+'sectioneditnotsupported-title' => 'Úprava sekcie nie je podporovaná',
+'sectioneditnotsupported-text' => 'Táto stránka úprav nepodporuje úpravu sekcie.',
'permissionserrors' => 'Chyba povolení',
'permissionserrorstext' => 'Na to nemáte povolenie z {{PLURAL:$1|nasledujúceho dôvodu|nasledujúcich dôvodov}}:',
'permissionserrorstext-withaction' => 'Nemáte oprávnenie $2 z {{PLURAL:$1|nasledovného dôvodu|nasledovných dôvodov}}:',
-'recreate-deleted-warn' => "'''Upozornenie: Opätovne vytvárate stránku, ktorá bola predtým zmazaná.'''
+'recreate-moveddeleted-warn' => "'''Upozornenie: Opätovne vytvárate stránku, ktorá bola predtým zmazaná.'''
Mali by ste zvážiť, či je vhodné pokračovať v úpravách tejto stránky.
-Odkaz na záznam zmazaní:",
-'deleted-notice' => 'Táto stránka bola zmazaná. Dolu je uvedený záznam zmazaní.',
-'deletelog-fulllog' => 'Zobraziť úplný záznam',
+Ďalšie informácie si môžete pozrieť v zázname zmazaní a presunutí:",
+'moveddeleted-notice' => 'Táto stránka bola zmazaná.
+Ďalšie informácie si môžete pozrieť v zázname zmazaní a presunutí.',
+'log-fulllog' => 'Zobraziť úplný záznam',
'edit-hook-aborted' => 'Úpravu zrušila prídavná funkcia (prípojný bod syntaktického analyzátora).
Neudala vysvetlenie.',
'edit-gone-missing' => 'Nebolo možné aktualizovať stránku.
@@ -872,6 +989,7 @@ Tieto argumenty boli vynechané.',
'post-expand-template-argument-category' => 'Stránky obsahujúce vynechané argumenty šablón',
'parser-template-loop-warning' => 'Zistená slučka v šablónach: [[$1]]',
'parser-template-recursion-depth-warning' => 'Bol prekročený limit rekurzie šablón ($1)',
+'language-converter-depth-warning' => 'Bolo prekročené obmedzenie hĺbky ($1) jazykového konvertora',
# "Undo" feature
'undo-success' => 'Úpravu je možné vrátiť. Prosím skontrolujte tento rozdiel, čím overíte, že táto úprava je tá, ktorú chcete, a následne uložte zmeny, čím ukončíte vrátenie.',
@@ -891,7 +1009,7 @@ Dôvod, ktorý $3 uviedol, je ''$2''",
'currentrev' => 'Aktuálna verzia',
'currentrev-asof' => 'Aktuálna revízia z $1',
'revisionasof' => 'Verzia zo dňa a času $1',
-'revision-info' => 'Revízia z $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revízia z $1; $2',
'previousrevision' => '← Staršia verzia',
'nextrevision' => 'Novšia verzia →',
'currentrevisionlink' => 'Aktuálna úprava',
@@ -904,7 +1022,7 @@ Dôvod, ktorý $3 uviedol, je ''$2''",
Legenda: (aktuálna) = rozdiel oproti aktuálnej verzii,
(posledná) = rozdiel oproti predchádzajúcej verzii, D = drobná úprava',
'history-fieldset-title' => 'Prechádzať históriou',
-'deletedrev' => '[zmazané]',
+'history-show-deleted' => 'Iba zmazané',
'histfirst' => 'najskoršie',
'histlast' => 'posledné',
'historysize' => '(({{PLURAL:$1|jeden bajt|$1 bajty|$1 bajtov}}))',
@@ -913,72 +1031,116 @@ Legenda: (aktuálna) = rozdiel oproti aktuálnej verzii,
# Revision feed
'history-feed-title' => 'História úprav',
'history-feed-description' => 'História úprav pre túto stránku na wiki',
-'history-feed-item-nocomment' => '$1 na $2', # user at time
+'history-feed-item-nocomment' => '$1 na $2',
'history-feed-empty' => 'Požadovaná stránka neexistuje.
Možno bola zmazaná z wiki alebo premenovaná.
Skúste [[Special:Search|vyhľadávať na wiki]] relevantné nové stránky.',
# Revision deletion
-'rev-deleted-comment' => '(komentár odstránený)',
-'rev-deleted-user' => '(používateľské meno odstránené)',
-'rev-deleted-event' => '(činnosť odstránená zo záznamu)',
-'rev-deleted-text-permission' => "Táto revízia stránky bola '''zmazaná'''.
-Podrobnosti nájdete v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
-'rev-deleted-text-view' => "Táto revízia stránky bola '''zmazaná'''.
+'rev-deleted-comment' => '(komentár odstránený)',
+'rev-deleted-user' => '(používateľské meno odstránené)',
+'rev-deleted-event' => '(činnosť odstránená zo záznamu)',
+'rev-deleted-user-contribs' => '[používateľské meno alebo IP adresa odstránená - úprava skrytá pred prispievateľmi]',
+'rev-deleted-text-permission' => "Táto revízia stránky bola '''zmazaná'''.
+Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+'rev-deleted-text-unhide' => "Táto revízia stránky bola '''zmazaná'''.
+Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].
+Ako správca máte stále možnosť [$1 zobraziť túto revíziu] ak chcete.",
+'rev-suppressed-text-unhide' => "Táto revízia stránky bola '''potlačená'''.
+Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlačení].
+Ako správca máte stále možnosť [$1 zobraziť túto revíziu] ak chcete.",
+'rev-deleted-text-view' => "Táto revízia stránky bola '''zmazaná'''.
Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si ju môžete prezrieť;
-podrobnosti môžu byť v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
-'rev-deleted-no-diff' => "Tento rozdiel nemôžete zobraziť, pretože bol '''zmazaný'''.
-Podrobnosti môžete nájsť v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
-'rev-deleted-unhide-diff' => "Jedna z revízií tohto rozdielu bola '''zmazaná'''.
-Podrobnosti môžete nájsť v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].
-Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si [$1 tento rozdiel môžete prezrieť];",
-'rev-delundel' => 'zobraziť/skryť',
-'revisiondelete' => 'Zmazať/obnoviť revízie',
-'revdelete-nooldid-title' => 'Neplatná cieľová revízia',
-'revdelete-nooldid-text' => 'Neuviedli ste cieľovú revíziu alebo revízie, na ktorých sa má táto funkcia vykonať, uvedená revízia neexistuje alebo sa pokúšate skryť aktuálnu revíziu.',
-'revdelete-nologtype-title' => 'Nebol zadaný typ záznamu',
-'revdelete-nologtype-text' => 'Nezadali ste typ záznamu, na ktorom sa má vykonať táto operácia.',
-'revdelete-toomanytargets-title' => 'Príliš mnoho cieľov',
-'revdelete-toomanytargets-text' => 'Zadali ste príliš veľa cieľov, na ktorých sa má vykonať táto operácia.',
-'revdelete-nologid-title' => 'Neplatná položka záznamu',
-'revdelete-nologid-text' => 'Buď ste neuviedli cieľovú udalosť záznamu, na ktorej sa má vykonať táto operácia alebo zadaná položka neexistuje.',
-'revdelete-selected' => "'''{{PLURAL:$2|Vybraná jedna revízia|Vybrané $2 revízie|Vybraných $2 revízií}} z [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Vybraná udalosť záznamu|Vybrané udalosti záznamu}}:'''",
-'revdelete-text' => "'''Zmazané revízie a udalosti sú stále viditeľné v histórii úprav stránky, ale časti ich obsahu nebudú prístupné verejnosti.'''
-
-Iní správcovia {{GRAMMAR:genitív|{{SITENAME}}}} budú stále môcť pristupovať k skrytému obsahu a môžu
-ho znova obnoviť použitím tohto rozhrania v prípade, že nie sú stanovené ďalšie obmedzenia.
-Potvrďte prosím, že toto je vaším zámerom, že rozumiete dôsledkom a že tak robíte v súlade s [[{{MediaWiki:Policy-url}}|politikou]].",
-'revdelete-suppress-text' => "Zatajenie by sa malo používať '''výlučne''' v nasledovných prípadoch:
+podrobnosti môžu byť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+'rev-suppressed-text-view' => "Táto revízia stránky bola '''potlačená'''.
+Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlačení].",
+'rev-deleted-no-diff' => "Tento rozdiel nemôžete zobraziť, pretože bol '''zmazaný'''.
+Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+'rev-suppressed-no-diff' => "Nemôžete zobraziť tento rozdiel, pretože jedna z revízií bola '''zmazaná'''.",
+'rev-deleted-unhide-diff' => "Jedna z revízií tohto rozdielu bola '''zmazaná'''.
+Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].
+Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si [$1 tento rozdiel môžete prezrieť].",
+'rev-suppressed-unhide-diff' => "Jedna z revízií tohto rozdielu bola '''potlačená'''.
+Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlačení].
+Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si [$1 tento rozdiel môžete prezrieť].",
+'rev-deleted-diff-view' => "jedna z revízií tohto rozdielu bola '''zmazaná'''.
+Ako správca si môžete tento rozdiel zobraziť.
+Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+'rev-suppressed-diff-view' => "jedna z revízií tohto rozdielu bola '''potlačená'''.
+Ako správca si môžete tento rozdiel zobraziť.
+Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlačení].",
+'rev-delundel' => 'zobraziť/skryť',
+'rev-showdeleted' => 'zobraziť',
+'revisiondelete' => 'Zmazať/obnoviť revízie',
+'revdelete-nooldid-title' => 'Neplatná cieľová revízia',
+'revdelete-nooldid-text' => 'Neuviedli ste cieľovú revíziu alebo revízie, na ktorých sa má táto funkcia vykonať, uvedená revízia neexistuje alebo sa pokúšate skryť aktuálnu revíziu.',
+'revdelete-nologtype-title' => 'Nebol zadaný typ záznamu',
+'revdelete-nologtype-text' => 'Nezadali ste typ záznamu, na ktorom sa má vykonať táto operácia.',
+'revdelete-nologid-title' => 'Neplatná položka záznamu',
+'revdelete-nologid-text' => 'Buď ste neuviedli cieľovú udalosť záznamu, na ktorej sa má vykonať táto operácia alebo zadaná položka neexistuje.',
+'revdelete-no-file' => 'Uvedený súbor neexistuje.',
+'revdelete-show-file-confirm' => 'Ste si istý, že chcete zobraziť zmazanú revíziu súboru „<nowiki>$1</nowiki>“ z $2 $3?',
+'revdelete-show-file-submit' => 'Áno',
+'revdelete-selected' => "'''{{PLURAL:$2|Vybraná jedna revízia|Vybrané $2 revízie|Vybraných $2 revízií}} z [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Vybraná udalosť záznamu|Vybrané udalosti záznamu}}:'''",
+'revdelete-text' => "'''Zmazané revízie a udalosti sú stále viditeľné v histórii úprav stránky, ale časti ich obsahu nebudú prístupné verejnosti.'''
+Iní správcovia {{GRAMMAR:genitív|{{SITENAME}}}} budú stále môcť pristupovať k skrytému obsahu a môžu ho znova obnoviť použitím tohto rozhrania v prípade, že nie sú stanovené ďalšie obmedzenia.",
+'revdelete-confirm' => 'Prosím, potvrďte, že to naozaj chcete vykonať, rozumiete následkom a že to robíte v súlade s [[{{MediaWiki:Policy-url}}|politikou]].',
+'revdelete-suppress-text' => "Zatajenie by sa malo používať '''výlučne''' v nasledovných prípadoch:
* Nevhodné osobné údaje
*: ''adresy, telefóne čísla, rodné čísla a pod.''",
-'revdelete-legend' => 'Nastaviť obmedzenia viditeľnosti',
-'revdelete-hide-text' => 'Skryť text revízie',
-'revdelete-hide-name' => 'Skryť činnosť a cieľ',
-'revdelete-hide-comment' => 'Skryť zhrnutie úprav',
-'revdelete-hide-user' => 'Skryť používateľské meno/IP',
-'revdelete-hide-restricted' => 'Zatajiť údaje pred všetkými, aj pred správcami',
-'revdelete-suppress' => 'Skryť údaje pred správcami rovnako ako pred ostatnými',
-'revdelete-hide-image' => 'Skryť obsah súboru',
-'revdelete-unsuppress' => 'Odstrániť obmedzenia obnovených revízií',
-'revdelete-log' => 'Dôvod:',
-'revdelete-submit' => 'Použiť na zvolenú revíziu',
-'revdelete-logentry' => 'viditeľnosť revízie bola zmenená pre [[$1]]',
-'logdelete-logentry' => 'viditeľnosť udalosti [[$1]] bola zmenená',
-'revdelete-success' => "'''Viditeľnosť revízie bola úspešne aktualizovaná.'''",
-'logdelete-success' => "'''Viditeľnosť záznamu bola úspešne nastavená.'''",
-'revdel-restore' => 'Zmeniť viditeľnosť',
-'pagehist' => 'História stránky',
-'deletedhist' => 'Zmazaná história',
-'revdelete-content' => 'obsah',
-'revdelete-summary' => 'zhrnutie úprav',
-'revdelete-uname' => 'používateľské meno',
-'revdelete-restricted' => 'obmedzenia správcov použité',
-'revdelete-unrestricted' => 'obmedzenia správcov odstránené',
-'revdelete-hid' => 'skryl $1',
-'revdelete-unhid' => 'odkryl $1',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|revíziu|revízie|revízií}}',
-'logdelete-log-message' => '$1 $2 {{PLURAL:$2|udalosť|udalosti|udalostí}}',
+'revdelete-legend' => 'Nastaviť obmedzenia viditeľnosti',
+'revdelete-hide-text' => 'Skryť text revízie',
+'revdelete-hide-image' => 'Skryť obsah súboru',
+'revdelete-hide-name' => 'Skryť činnosť a cieľ',
+'revdelete-hide-comment' => 'Skryť zhrnutie úprav',
+'revdelete-hide-user' => 'Skryť používateľské meno/IP',
+'revdelete-hide-restricted' => 'Zatajiť údaje pred všetkými, aj pred správcami',
+'revdelete-radio-same' => '(nezmeniť)',
+'revdelete-radio-set' => 'Áno',
+'revdelete-radio-unset' => 'Nie',
+'revdelete-suppress' => 'Skryť údaje pred správcami rovnako ako pred ostatnými',
+'revdelete-unsuppress' => 'Odstrániť obmedzenia obnovených revízií',
+'revdelete-log' => 'Dôvod:',
+'revdelete-submit' => 'Použiť na {{PLURAL:$1|zvolenú revíziu|zvolené revízie}}',
+'revdelete-logentry' => 'viditeľnosť revízie bola zmenená pre [[$1]]',
+'logdelete-logentry' => 'viditeľnosť udalosti [[$1]] bola zmenená',
+'revdelete-success' => "'''Viditeľnosť revízie bola úspešne aktualizovaná.'''",
+'revdelete-failure' => "'''Viditeľnosť revízie nebolo možné aktualizovať:'''
+$1",
+'logdelete-success' => "'''Viditeľnosť záznamu bola úspešne nastavená.'''",
+'logdelete-failure' => "'''Viditeľnosť záznamu nebolo možné nastaviť:'''
+$1",
+'revdel-restore' => 'Zmeniť viditeľnosť',
+'pagehist' => 'História stránky',
+'deletedhist' => 'Zmazaná história',
+'revdelete-content' => 'obsah',
+'revdelete-summary' => 'zhrnutie úprav',
+'revdelete-uname' => 'používateľské meno',
+'revdelete-restricted' => 'obmedzenia správcov použité',
+'revdelete-unrestricted' => 'obmedzenia správcov odstránené',
+'revdelete-hid' => 'skryl $1',
+'revdelete-unhid' => 'odkryl $1',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|revíziu|revízie|revízií}}',
+'logdelete-log-message' => '$1 $2 {{PLURAL:$2|udalosť|udalosti|udalostí}}',
+'revdelete-hide-current' => 'Chyba pri skrývaní položky s dátumom $2, $1: toto je aktuálna revízia.
+Nemožno ju skryť.',
+'revdelete-show-no-access' => 'Chyba pri zobrazovaní položky s dátumom $2, $1: toto je položka s obmedzeným prístupom.
+Nemáte k nej prístup.',
+'revdelete-modify-no-access' => 'Chyba pri zmene položky s dátumom $2, $1: toto je položka s obmedzeným prístupom.
+Nemáte k nej prístup.',
+'revdelete-modify-missing' => 'Chyba pri zmene položky s ID $1: chýba v databáze!',
+'revdelete-no-change' => "'''Upozornenie:''' položka s dátumom $2, $1 už mala požadované parametre viditeľnosti.",
+'revdelete-concurrent-change' => 'Chyba pri zmene položky s dátumom $2, $1: zdá sa, že kým ste ju menili vykonal zmenu niekto iný.
+Pozrite sa prosím do záznamov.',
+'revdelete-only-restricted' => 'Chyba pri skrývaní položky s dátumom $2, $1: nemôžete skryť položku pred správcami bez toho, aby ste vybrali aj jednu z ďalších možností viditeľnosti.',
+'revdelete-reason-dropdown' => '*Bežné dôvody zmazania
+** Porušenie autorských práv
+** Nevhodné osobné informácie',
+'revdelete-otherreason' => 'Ďalšie dôvody:',
+'revdelete-reasonotherlist' => 'Iný dôvod',
+'revdelete-edit-reasonlist' => 'Upraviť dôvody zmazania',
+'revdelete-offender' => 'Autor revízie:',
# Suppression log
'suppressionlog' => 'Záznam potlačení',
@@ -1014,67 +1176,13 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'mergelogpagetext' => 'Dolu je zoznam posledných zlúčení jednej histórie revízií stránky do druhej.',
# Diffs
-'history-title' => 'História revízií „$1“',
-'difference' => '(Rozdiel medzi revíziami)',
-'lineno' => 'Riadok $1:',
-'compareselectedversions' => 'Porovnať označené verzie',
-'visualcomparison' => 'Vizuálne porovnanie',
-'wikicodecomparison' => 'Porovnanie wikitextu',
-'editundo' => 'vrátiť',
-'diff-multi' => '{{PLURAL:$1|Jedna medziľahlá revízia nie je zobrazená|$1 medziľahlé revízie nie sú zobrazené|$1 medziľahlých revízií nie je zobrazených}}.',
-'diff-movedto' => 'presunuté na $1',
-'diff-styleadded' => 'pridaný štýl $1',
-'diff-added' => 'pridané $1',
-'diff-changedto' => 'zmenené na $1',
-'diff-movedoutof' => 'presunuté z $1',
-'diff-styleremoved' => 'odstránený štýl $1',
-'diff-removed' => 'odstránené $1',
-'diff-changedfrom' => 'zmenené z $1',
-'diff-src' => 'zdroj',
-'diff-withdestination' => 's cieľom $1',
-'diff-with' => '&#32;s $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'šírka',
-'diff-height' => 'výška',
-'diff-p' => "'''odstavec'''",
-'diff-blockquote' => "'''citácia'''",
-'diff-h1' => "'''nadpis (úroveň 1)'''",
-'diff-h2' => "'''nadpis (úroveň 2)'''",
-'diff-h3' => "'''nadpis (úroveň 3)'''",
-'diff-h4' => "'''nadpis (úroveň 4)'''",
-'diff-h5' => "'''nadpis (úroveň 5)'''",
-'diff-pre' => "'''predformátovaný blok'''",
-'diff-div' => "'''rozdelenie'''",
-'diff-ul' => "'''nezoradený zoznam'''",
-'diff-ol' => "'''zoradený zoznam'''",
-'diff-li' => "'''položka zoznamu'''",
-'diff-table' => "'''tabuľka'''",
-'diff-tbody' => "'''obsah tabuľky'''",
-'diff-tr' => "'''riadok'''",
-'diff-td' => "'''bunka'''",
-'diff-th' => "'''hlavička'''",
-'diff-br' => "'''zalomenie'''",
-'diff-hr' => "'''vodorovná čiara'''",
-'diff-code' => "'''blok počítačového kódu'''",
-'diff-dl' => "'''definičný zoznam'''",
-'diff-dt' => "'''definičný termín'''",
-'diff-dd' => "'''definícia'''",
-'diff-input' => "'''vstup'''",
-'diff-form' => "'''formulár'''",
-'diff-img' => "'''obrázok'''",
-'diff-span' => "'''interval'''",
-'diff-a' => "'''odkaz'''",
-'diff-i' => "'''kurzíva'''",
-'diff-b' => "'''hrubé'''",
-'diff-strong' => "'''zvýraznené'''",
-'diff-em' => "'''dôraz'''",
-'diff-font' => "'''písmo'''",
-'diff-big' => "'''veľké'''",
-'diff-del' => "'''zmazané'''",
-'diff-tt' => "'''s pevnou šírkou'''",
-'diff-sub' => "'''dolný index'''",
-'diff-sup' => "'''horný index'''",
-'diff-strike' => "'''prečiarknuté'''",
+'history-title' => 'História revízií „$1“',
+'difference' => '(Rozdiel medzi revíziami)',
+'lineno' => 'Riadok $1:',
+'compareselectedversions' => 'Porovnať označené verzie',
+'showhideselectedversions' => 'Zobraziť/skryť vybrané revízie',
+'editundo' => 'vrátiť',
+'diff-multi' => '{{PLURAL:$1|Jedna medziľahlá revízia nie je zobrazená|$1 medziľahlé revízie nie sú zobrazené|$1 medziľahlých revízií nie je zobrazených}}.',
# Search results
'searchresults' => 'Výsledky vyhľadávania',
@@ -1082,28 +1190,25 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'searchresulttext' => 'Viac informácií o vyhľadávaní vo {{GRAMMAR:lokál|{{SITENAME}}}} nájdete na stránke [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Hľadali ste „'''[[:$1]]'''“ ([[Special:Prefixindex/$1|všetky stránky začínajúce na „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|všetky stránky odkazujúce na „$1“]])",
'searchsubtitleinvalid' => 'Na vyhľadávaciu požiadavku „$1“',
-'noexactmatch' => "'''Neexistuje stránka nazvaná „$1“'''. Chcete '''[[:$1|vytvoriť novú stránku]]''' s týmto názvom?",
-'noexactmatch-nocreate' => "'''Stránka s názvom „$1“ neexistuje.'''",
'toomanymatches' => 'Hľadanie vrátilo príliš veľa výsledkov. Prosím, skúste inú požiadavku.',
'titlematches' => 'Vyhovujúce názvy stránok',
'notitlematches' => 'V názvoch stránok nebola nájdená zhoda',
'textmatches' => 'Zhody v textoch stránok',
'notextmatches' => 'V textoch stránok nebola nájdená zhoda',
-'prevn' => 'predošlých $1',
-'nextn' => 'ďalších $1',
+'prevn' => '{{PLURAL:$1|predošlá|predošlé|predošlých}} $1',
+'nextn' => '{{PLURAL:$1|ďalšia|ďalšie|ďalších}} $1',
'prevn-title' => '{{PLURAL:$1|Predošlý $1 výsledok|Predošlé $1 výsledky|Predošlých $1 výsledkov}}',
'nextn-title' => '{{PLURAL:$1|Ďalší $1 výsledok|Ďalšie $1 výsledky|Ďalších $1 výsledkov}}',
'shown-title' => 'Zobraziť $1 {{PLURAL:$1|výsledok|výsledky|výsledkov}} na stránku',
-'viewprevnext' => 'Zobraziť ($1) ($2) ($3).',
+'viewprevnext' => 'Zobraziť ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Možnosti hľadania',
'searchmenu-exists' => "*Stránka '''[[$1]]'''",
'searchmenu-new' => "'''Vytvoriť stránku „[[:$1|$1]]“ na tejto wiki'''",
'searchhelp-url' => 'Help:Obsah',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Prehliadať stránky s touto predponou]]',
'searchprofile-articles' => 'Stránky s obsahom',
-'searchprofile-articles-and-proj' => 'Stránky s obsahom & stránky projektu',
-'searchprofile-project' => 'Stránky projektu',
-'searchprofile-images' => 'Súbory',
+'searchprofile-project' => 'Stránky pomocníka a projektu',
+'searchprofile-images' => 'Multimédiá',
'searchprofile-everything' => 'Všetky',
'searchprofile-advanced' => 'Pokročilé',
'searchprofile-articles-tooltip' => 'Hľadať v $1',
@@ -1111,8 +1216,6 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'searchprofile-images-tooltip' => 'Hľadať súbory',
'searchprofile-everything-tooltip' => 'Hľadať v celom obsahu (vrátane diskusných stránok)',
'searchprofile-advanced-tooltip' => 'Hľadať vo vymenovaných menných priestoroch',
-'prefs-search-nsdefault' => 'Hľadať so štandardným nastavením:',
-'prefs-search-nscustom' => 'Hľadať vo vymenovaných menných priestoroch:',
'search-result-size' => '$1 ({{PLURAL:$2|1 slovo|$2 slová|$2 slov}})',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(presmerovanie $1)',
@@ -1125,11 +1228,12 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'search-mwsuggest-disabled' => 'bez návrhov',
'search-relatedarticle' => 'Súvisiace',
'mwsuggest-disable' => 'Vypnúť AJAX návrhy',
+'searcheverything-enable' => 'Vyhľadať vo všetkých menných priestoroch',
'searchrelated' => 'súvisiace',
'searchall' => 'všetko',
'showingresults' => "Nižšie {{PLURAL:$1|je zobrazený jeden výsledok|sú zobrazené '''1''' výsledky|je zobrazených '''$1''' výsledkov}}, počnúc od #<b>$2</b>.",
'showingresultsnum' => "Nižšie {{PLURAL:$3|je zobrazený najviac '''1''' výsledok|sú zobrazené najviac '''$3''' výsledky|je zobrazených najviac '''$3''' výsledkov}}, počnúc od #'''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Zobrazuje sa výsledok '''$1''' z '''$3'''|Zobrazujú sa výsledky '''$1 - $2''' z '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Výsledok '''$1''' z '''$3'''|Výsledky '''$1 - $2''' z '''$3'''}} pre '''$4'''",
'nonefound' => "'''Poznámka''': Štandardne sa vyhľadáva iba v niektorých menných priestoroch. Skúste pred vyhľadávaný reťazec napísať ''all:'', aby sa hľadalo v celom obsahu (vrátane diskusných stránok, šablón atď.) alebo použite ako predponu požadovaný menný priestor.",
'search-nonefound' => 'Vyhľadávanie nenašlo žiadne výsledky.',
'powersearch' => 'Vyhľadávanie',
@@ -1137,111 +1241,148 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'powersearch-ns' => 'Hľadať v menných priestoroch:',
'powersearch-redir' => 'Vypísať presmerovania',
'powersearch-field' => 'Hľadať',
+'powersearch-togglelabel' => 'Skontrolovať:',
+'powersearch-toggleall' => 'Všetky',
+'powersearch-togglenone' => 'Žiadne',
'search-external' => 'Externé vyhľadávanie',
'searchdisabled' => 'Prepáčte! Fulltextové vyhľadávanie bolo dočasne vypnuté z dôvodu preťaženia. Zatiaľ môžete použiť hľadanie pomocou Google, ktoré však nemusí byť aktuálne.',
+# Quickbar
+'qbsettings' => 'Navigačný panel',
+'qbsettings-none' => 'Žiadne',
+'qbsettings-fixedleft' => 'Ukotvené vľavo',
+'qbsettings-fixedright' => 'Ukotvené vpravo',
+'qbsettings-floatingleft' => 'Plávajúce vľavo',
+'qbsettings-floatingright' => 'Plávajúce vpravo',
+
# Preferences page
-'preferences' => 'Nastavenia',
-'mypreferences' => 'nastavenia',
-'prefs-edits' => 'Počet úprav:',
-'prefsnologin' => 'Nie ste prihlásený/á',
-'prefsnologintext' => 'Aby ste mohli zmeniť svoje nastavenia, musíte byť <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} prihlásený].',
-'prefsreset' => 'Boli obnovené pôvodné nastavenia.',
-'qbsettings' => 'Navigačný panel',
-'qbsettings-none' => 'Žiadne',
-'qbsettings-fixedleft' => 'Ukotvené vľavo',
-'qbsettings-fixedright' => 'Ukotvené vpravo',
-'qbsettings-floatingleft' => 'Plávajúce vľavo',
-'qbsettings-floatingright' => 'Plávajúce vpravo',
-'changepassword' => 'Zmeniť heslo',
-'skin' => 'Vzhľad',
-'skin-preview' => 'Náhľad',
-'math' => 'Vykreslenie matematiky',
-'dateformat' => 'Formát dátumu',
-'datedefault' => 'štandardný',
-'datetime' => 'Dátum a čas',
-'math_failure' => 'Syntaktická analýza (parsing) neúspešná',
-'math_unknown_error' => 'neznáma chyba',
-'math_unknown_function' => 'neznáma funkcia',
-'math_lexing_error' => 'lexikálna chyba',
-'math_syntax_error' => 'syntaktická chyba',
-'math_image_error' => 'PNG konverzia neúspešná; skontrolujte správnosť inštalácie programov: latex, dvips, gs a convert',
-'math_bad_tmpdir' => 'Nemožno zapisovať alebo vytvoriť dočasný matematický adresár',
-'math_bad_output' => 'Nemožno zapisovať alebo vytvoriť výstupný matematický adresár',
-'math_notexvc' => 'Chýbajúci program texvc; konfigurácia je popísaná v math/README.',
-'prefs-personal' => 'Profil',
-'prefs-rc' => 'Posledné úpravy',
-'prefs-watchlist' => 'Sledované stránky',
-'prefs-watchlist-days' => 'Koľko dní zobrazovať v sledovaných stránkach:',
-'prefs-watchlist-days-max' => '(maximálne 7 dní)',
-'prefs-watchlist-edits' => 'Počet úprav, ktorý sa zobrazí v rozšírenom zozname sledovaných:',
-'prefs-watchlist-edits-max' => '(maximum: 1000)',
-'prefs-misc' => 'Rôzne',
-'prefs-resetpass' => 'Zmeniť heslo',
-'saveprefs' => 'Uložiť nastavenia',
-'resetprefs' => 'Obnoviť pôvodné nastavenia',
-'restoreprefs' => 'Obnoviť všetky nastavenia na štandardné hodnoty',
-'textboxsize' => 'Úpravy',
-'prefs-edit-boxsize' => 'Veľkosť okna na úpravy.',
-'rows' => 'Riadky:',
-'columns' => 'Stĺpce:',
-'searchresultshead' => 'Vyhľadávanie',
-'resultsperpage' => 'Počet vyhovujúcich výsledkov zobrazených na stránku:',
-'contextlines' => 'Počet zobrazených riadkov z každej nájdenej stránky:',
-'contextchars' => 'Počet kontextových znakov v riadku',
-'stub-threshold' => 'Prah formátovania <a href="#" class="stub">výhonkov</a> (v bajtoch):',
-'recentchangesdays' => 'Koľko dní zobrazovať v posledných úpravách:',
-'recentchangesdays-max' => '(maximálne $1 {{PLURAL:$1|deň|dni|dní}})',
-'recentchangescount' => 'Počet úprav štandardne zobrazovaných v posledných úpravách, históriách stránok a záznamoch:',
-'savedprefs' => 'Vaše nastavenia boli uložené.',
-'timezonelegend' => 'Časové pásmo:',
-'timezonetext' => '¹Počet hodín, o ktorý sa váš miestny čas odlišuje od času na serveri (UTC).',
-'localtime' => 'Miestny čas:',
-'timezoneselect' => 'Časová zóna:',
-'timezoneuseserverdefault' => 'Použiť nastavenie servera',
-'timezoneuseoffset' => 'Iné (uvedením rozdielu)',
-'timezoneoffset' => 'Rozdiel¹:',
-'servertime' => 'Aktuálny čas na serveri:',
-'guesstimezone' => 'Prevziať z prehliadača',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktída',
-'timezoneregion-arctic' => 'Arktída',
-'timezoneregion-asia' => 'Ázia',
-'timezoneregion-atlantic' => 'Atlantický oceán',
-'timezoneregion-australia' => 'Austrália',
-'timezoneregion-europe' => 'Európa',
-'timezoneregion-indian' => 'Indický oceán',
-'timezoneregion-pacific' => 'Tichý oceán',
-'allowemail' => 'Povoliť prijímanie e-mailov od iných používateľov',
-'prefs-searchoptions' => 'Voľby hľadania',
-'prefs-namespaces' => 'Menné priestory',
-'defaultns' => 'Štandardne vyhľadávať v týchto menných priestoroch:',
-'default' => 'predvolený',
-'files' => 'Súbory',
-'prefs-custom-css' => 'Vlastný CSS',
-'prefs-custom-js' => 'Vlastný JS',
+'preferences' => 'Nastavenia',
+'mypreferences' => 'nastavenia',
+'prefs-edits' => 'Počet úprav:',
+'prefsnologin' => 'Nie ste prihlásený/á',
+'prefsnologintext' => 'Aby ste mohli zmeniť svoje nastavenia, musíte byť <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prihlásený].',
+'changepassword' => 'Zmeniť heslo',
+'prefs-skin' => 'Vzhľad',
+'skin-preview' => 'Náhľad',
+'prefs-math' => 'Vykreslenie matematiky',
+'datedefault' => 'štandardný',
+'prefs-datetime' => 'Dátum a čas',
+'prefs-personal' => 'Profil',
+'prefs-rc' => 'Posledné úpravy',
+'prefs-watchlist' => 'Sledované stránky',
+'prefs-watchlist-days' => 'Koľko dní zobrazovať v sledovaných stránkach:',
+'prefs-watchlist-days-max' => '(maximálne 7 dní)',
+'prefs-watchlist-edits' => 'Počet úprav, ktorý sa zobrazí v rozšírenom zozname sledovaných:',
+'prefs-watchlist-edits-max' => '(maximum: 1000)',
+'prefs-watchlist-token' => 'Token zoznamu sledovaných?',
+'prefs-misc' => 'Rôzne',
+'prefs-resetpass' => 'Zmeniť heslo',
+'prefs-email' => 'Možnosti emailu',
+'prefs-rendering' => 'Vzhľad',
+'saveprefs' => 'Uložiť nastavenia',
+'resetprefs' => 'Obnoviť pôvodné nastavenia',
+'restoreprefs' => 'Obnoviť všetky nastavenia na štandardné hodnoty',
+'prefs-editing' => 'Úpravy',
+'prefs-edit-boxsize' => 'Veľkosť okna na úpravy.',
+'rows' => 'Riadky:',
+'columns' => 'Stĺpce:',
+'searchresultshead' => 'Vyhľadávanie',
+'resultsperpage' => 'Počet vyhovujúcich výsledkov zobrazených na stránku:',
+'contextlines' => 'Počet zobrazených riadkov z každej nájdenej stránky:',
+'contextchars' => 'Počet kontextových znakov v riadku',
+'stub-threshold' => 'Prah formátovania <a href="#" class="stub">výhonkov</a> (v bajtoch):',
+'recentchangesdays' => 'Koľko dní zobrazovať v posledných úpravách:',
+'recentchangesdays-max' => '(maximálne $1 {{PLURAL:$1|deň|dni|dní}})',
+'recentchangescount' => 'Štandardne zobrazovaný počet úprav:',
+'prefs-help-recentchangescount' => 'Toto sa týka posledných úprav, histórií stránok a záznamov.',
+'prefs-help-watchlist-token' => 'Ak vyplníte toto pole tajným kľúčom, bude sa tvoriť RSS kanál vášho zoznamu sledovaných. Ktokoľvek, kto pozná tajný kľúč v tomto poli bude môcť čítať váš zoznam sledovaných, preto dbajte na to, aby bol bezpečený.
+Tu je náhodne vytvorená hodnota, ktorú môžete použiť: $1',
+'savedprefs' => 'Vaše nastavenia boli uložené.',
+'timezonelegend' => 'Časové pásmo:',
+'localtime' => 'Miestny čas:',
+'timezoneuseserverdefault' => 'Použiť nastavenie servera',
+'timezoneuseoffset' => 'Iné (uvedením rozdielu)',
+'timezoneoffset' => 'Rozdiel¹:',
+'servertime' => 'Aktuálny čas na serveri:',
+'guesstimezone' => 'Prevziať z prehliadača',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktída',
+'timezoneregion-arctic' => 'Arktída',
+'timezoneregion-asia' => 'Ázia',
+'timezoneregion-atlantic' => 'Atlantický oceán',
+'timezoneregion-australia' => 'Austrália',
+'timezoneregion-europe' => 'Európa',
+'timezoneregion-indian' => 'Indický oceán',
+'timezoneregion-pacific' => 'Tichý oceán',
+'allowemail' => 'Povoliť prijímanie e-mailov od iných používateľov',
+'prefs-searchoptions' => 'Voľby hľadania',
+'prefs-namespaces' => 'Menné priestory',
+'defaultns' => 'Inak vyhľadávať v týchto menných priestoroch:',
+'default' => 'predvolený',
+'prefs-files' => 'Súbory',
+'prefs-custom-css' => 'Vlastný CSS',
+'prefs-custom-js' => 'Vlastný JS',
+'prefs-reset-intro' => 'Túto stránku môžete použiť na vrátenie predvolených hodnôt vašich nastavení.
+Túto operáciu nemožno vrátiť.',
+'prefs-emailconfirm-label' => 'Potvrdenie emailu:',
+'prefs-textboxsize' => 'Veľkosť okna na úpravy',
+'youremail' => 'Váš e-mail²',
+'username' => 'Používateľské meno:',
+'uid' => 'ID používateľa:',
+'prefs-memberingroups' => 'Člen {{PLURAL:$1|skupiny|skupín}}:',
+'prefs-registration' => 'Čas registrácie:',
+'yourrealname' => 'Skutočné meno *:',
+'yourlanguage' => 'Jazyk:',
+'yourvariant' => 'Variant jazyka:',
+'yournick' => 'Podpis:',
+'prefs-help-signature' => 'Komentáre na diskusných stránkach by ste mali podpisovať pomocou „<nowiki>~~~~</nowiki>“, čo sa prevedie na váš podpis a časovú známku.',
+'badsig' => 'Neplatný podpis v pôvodnom tvare; skontrolujte HTML značky.',
+'badsiglength' => 'Váš podpis je príliš dlhý.
+Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
+'yourgender' => 'Pohlavie:',
+'gender-unknown' => 'Neuvedené',
+'gender-male' => 'Muž',
+'gender-female' => 'Žena',
+'prefs-help-gender' => 'Nepovinné: používa softvér na správne oslovenie v závislosti od rodu. Táto informácia bude verejná.',
+'email' => 'E-mail',
+'prefs-help-realname' => '¹ Skutočné meno (nepovinné): ak sa rozhodnete ho poskytnúť, bude použité na označenie vašej práce.',
+'prefs-help-email' => '² E-mail (nepovinné): Umožní iným ľuďom kontaktovať vás pomocou odkazu z vašej používateľskej a diskusnej stránky (bez potreby uverejňovania vašej e-mailovej adresy) a môže naň byť poslané nové heslo ak zabudnete pôvodné.',
+'prefs-help-email-required' => 'Vyžaduje sa e-mailová adresa.',
+'prefs-info' => 'Základné informácie',
+'prefs-i18n' => 'Internacionalizácia',
+'prefs-signature' => 'Podpis',
+'prefs-dateformat' => 'Formát dátumu',
+'prefs-timeoffset' => 'Časový posun',
+'prefs-advancedediting' => 'Rozšírené možnosti',
+'prefs-advancedrc' => 'Rozšírené možnosti',
+'prefs-advancedrendering' => 'Rozšírené možnosti',
+'prefs-advancedsearchoptions' => 'Rozšírené možnosti',
+'prefs-advancedwatchlist' => 'Rozšírené možnosti',
+'prefs-display' => 'Možnosti zobrazenia',
+'prefs-diffs' => 'Rozdiely',
# User rights
-'userrights' => 'Spravovanie používateľských práv', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Spravovať skupiny používateľov',
-'userrights-user-editname' => 'Zadajte meno používateľa:',
-'editusergroup' => 'Upraviť skupinu používateľa',
-'editinguser' => "Zmena oprávnení používateľa '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Upraviť skupiny používateľa',
-'saveusergroups' => 'Uložiť skupiny používateľa',
-'userrights-groupsmember' => 'Člen skupiny:',
-'userrights-groups-help' => 'Môžete zmeniť, v ktorých skupinách sa používateľ nachádza.
+'userrights' => 'Spravovanie používateľských práv',
+'userrights-lookup-user' => 'Spravovať skupiny používateľov',
+'userrights-user-editname' => 'Zadajte meno používateľa:',
+'editusergroup' => 'Upraviť skupinu používateľa',
+'editinguser' => "Zmena oprávnení používateľa '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Upraviť skupiny používateľa',
+'saveusergroups' => 'Uložiť skupiny používateľa',
+'userrights-groupsmember' => 'Člen skupiny:',
+'userrights-groupsmember-auto' => 'Implicitným členom:',
+'userrights-groups-help' => 'Môžete zmeniť, v ktorých skupinách sa používateľ nachádza.
* Zaškrtnuté pole znamená, že používateľ je v skupine.
* Nezaškrtnuté pole znamená, že používateľ nie je v skupine.
* „*“ znamená, že nemôžete odstrániť skupinu, keď ste ju už pridali resp. naopak.',
-'userrights-reason' => 'Dôvod:',
-'userrights-no-interwiki' => 'Nemáte oprávnenie upravovať práva používateľov na iných wiki.',
-'userrights-nodatabase' => 'Databáza $1 neexistuje alebo nie je lokálna.',
-'userrights-nologin' => 'Aby ste mohli prideľovať používateľom oprávnenia, musíte sa [[Special:UserLogin|prihlásiť]] s účtom správcu.',
-'userrights-notallowed' => 'Váš účet nemá oprávnenia prideľovať používateľom oprávnenia.',
-'userrights-changeable-col' => 'Skupiny, ktoré môžete zmeniť',
-'userrights-unchangeable-col' => 'Skupiny, ktoré nemôžete zmeniť',
+'userrights-reason' => 'Dôvod:',
+'userrights-no-interwiki' => 'Nemáte oprávnenie upravovať práva používateľov na iných wiki.',
+'userrights-nodatabase' => 'Databáza $1 neexistuje alebo nie je lokálna.',
+'userrights-nologin' => 'Aby ste mohli prideľovať používateľom oprávnenia, musíte sa [[Special:UserLogin|prihlásiť]] s účtom správcu.',
+'userrights-notallowed' => 'Váš účet nemá oprávnenia prideľovať používateľom oprávnenia.',
+'userrights-changeable-col' => 'Skupiny, ktoré môžete zmeniť',
+'userrights-unchangeable-col' => 'Skupiny, ktoré nemôžete zmeniť',
# Groups
'group' => 'Skupina:',
@@ -1294,6 +1435,7 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'right-bigdelete' => 'Mazať stránky s veľkou históriou',
'right-deleterevision' => 'Mazať a obnovovať konkrétne revízie stránok',
'right-deletedhistory' => 'Zobrazovať zmazané položky histórie bez ich plného textu',
+'right-deletedtext' => 'Zobrazovať zmazané texty a zmeny medzi zmazanými verziami',
'right-browsearchive' => 'Hľadať v zmazaných stránkach',
'right-undelete' => 'Obnoviť zmazanú stránku',
'right-suppressrevision' => 'Kontrolovať a obnovovať revízie skryté správcom',
@@ -1307,6 +1449,8 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'right-editprotected' => 'Upravovať zamknuté schránky (bez kaskádovej ochrany)',
'right-editinterface' => 'Upravovať správy používateľského rozhrania',
'right-editusercssjs' => 'Upravovať CSS a JS súbory ostatných používateľov',
+'right-editusercss' => 'Upravovať CSS súbory ostatných používateľov',
+'right-edituserjs' => 'Upravovať JS súbory ostatných používateľov',
'right-rollback' => 'Rýchlo vrátiť úpravy posledného používateľa, ktorý upravoval danú stránku',
'right-markbotedits' => 'Označiť vrátené úpravy ako úpravy robota',
'right-noratelimit' => 'Neovplyvnené obmedzeniami',
@@ -1323,6 +1467,8 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'right-siteadmin' => 'Zamykať a odomykať databázu',
'right-reset-passwords' => 'Zmeniť heslo iných používateľov',
'right-override-export-depth' => 'Exportovať stránky vrátane okdazovaných stránok do hĺbky 5 odkazov',
+'right-versiondetail' => 'Zobraziť podrobné informácie o verzii softvéru',
+'right-sendemail' => 'Posielať e-mail ostatným používateľom',
# User rights log
'rightslog' => 'Záznam používateľských práv',
@@ -1372,6 +1518,15 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'recentchanges-legend' => 'Možnosti posledných zmien',
'recentchangestext' => 'Pomocou tejto stránky sledujete posledné úpravy wiki.',
'recentchanges-feed-description' => 'Sledovať posledné úpravy tejto wiki týmto kanálom.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nová stránka',
+'recentchanges-label-newpage' => 'Táto úprava vytvorila novú stránku.',
+'recentchanges-legend-minor' => '$1 - drobná úprava',
+'recentchanges-label-minor' => 'Toto je drobná úprava',
+'recentchanges-legend-bot' => '$1 - úprava bota',
+'recentchanges-label-bot' => 'Túto úpravy vykonal robot',
+'recentchanges-legend-unpatrolled' => '$1 - nestrážená úprava',
+'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
'rcnote' => "Tu {{PLURAL:$1|je posledná úprava|sú posledné '''$1''' úpravy|je posledných '''$1''' úprav}} počas {{PLURAL:$2|posledného dňa|posledných '''$2''' dní}} z $4, $5.",
'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
@@ -1398,6 +1553,8 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
# Recent changes linked
'recentchangeslinked' => 'Súvisiace úpravy',
+'recentchangeslinked-feed' => 'Súvisiace úpravy',
+'recentchangeslinked-toolbox' => 'Súvisiace úpravy',
'recentchangeslinked-title' => 'Zmeny týkajúce sa „$1”',
'recentchangeslinked-noresult' => 'V zadanom období neboli odkazované stránky zmenené.',
'recentchangeslinked-summary' => "Táto špeciálna stránka obsahuje zoznam posledných úprav stránok, ''na ktoré odkazuje'' zadaná stránka (alebo ktoré patria do zadanej kategórie).
@@ -1408,8 +1565,8 @@ Stránky, ktoré sa nachádzajú vo vašom [[Special:Watchlist|zozname sledovan
# Upload
'upload' => 'Nahrať súbor',
'uploadbtn' => 'Nahrať súbor',
-'reupload' => 'Zopakovať nahranie',
'reuploaddesc' => 'Zrušiť nahrávanie a vrátiť sa späť na nahrávací formulár.',
+'upload-tryagain' => 'Poslať zmenený popis súboru',
'uploadnologin' => 'Nie ste prihlásený',
'uploadnologintext' => 'Musíte byť [[Special:UserLogin|prihlásený/á]], aby ste mohli nahrávať súbory.',
'upload_directory_missing' => 'Adresár pre nahrávanie ($1) chýba a webový server ho nedokáže vytvoriť.',
@@ -1442,6 +1599,7 @@ Vizuálny prehľad nájdete v [[Special:NewFiles|galérii novo nahraných súbor
'minlength1' => 'Názvy súborov musia mať aspoň jedno písmeno.',
'illegalfilename' => 'Názov súboru „$1“ obsahuje znaky, ktoré nie sú povolené v názvoch stránok. Prosím premenujte súbor a skúste ho nahrať znovu.',
'badfilename' => 'Názov obrázka bol zmenený na „$1“.',
+'filetype-mime-mismatch' => 'Prípona súboru nezodpovedá typu MIME.',
'filetype-badmime' => 'Nie je povolené nahrávať súbory s MIME typom „$1“.',
'filetype-bad-ie-mime' => 'Nie je možné nahrať tento typ súboru, pretože Internet Explorer by ho rozpoznal ako „$1“, čo je nepovolený a potenciálne nebezpečný typ súboru.',
'filetype-unwanted-type' => "„.$1“''' je nežiadúci typ súboru.
@@ -1462,7 +1620,6 @@ Aby sa tam zhrnutie objavilo, budete potrebné ho manuálne upraviť.
* Názov súboru, ktorý nahrávate: '''<tt>[[:$1]]</tt>'''
* Názov existujúceho súboru: '''<tt>[[:$2]]</tt>'''
Prosím, vyberte preň iný názov.",
-'fileexists-thumb' => "<center>'''Existujúci obrázok'''</center>",
'fileexists-thumbnail-yes' => "Zdá sa, že súbor je obrázkom redukovanej veľkosti ''(náhľadom)''. [[$1|thumb]]
Prosím, skontolujte súbor '''<tt>[[:$1]]</tt>'''.
Ak je kontrolovaný súbor rovnaký obrázok v pôvodnej veľkosti, nie je potrebné nahrávať ďalší náhľad.",
@@ -1477,6 +1634,7 @@ Ak ho chcete aj napriek tomu nahrať, choďte prosím späť a použite iný ná
'file-deleted-duplicate' => 'Súbor zhodný s týmto súborom ([[$1]]) už bol v minulosti zmazaný. Mali by ste skontrolovať históriu nahrávania tohto súboru predtým, než budete pokračovať v jeho nahrávaní.',
'successfulupload' => 'Nahranie bolo úspešné',
'uploadwarning' => 'Varovanie pri nahrávaní',
+'uploadwarning-text' => 'Prosím, zmeňte popis súboru nižšie a skúste to znova.',
'savefile' => 'Uložiť súbor',
'uploadedimage' => 'nahraný „[[$1]]“',
'overwroteimage' => 'bola nahraná nová verzia „[[$1]]“',
@@ -1484,11 +1642,14 @@ Ak ho chcete aj napriek tomu nahrať, choďte prosím späť a použite iný ná
'uploaddisabledtext' => 'Nahrávanie súborov je vypnuté.',
'php-uploaddisabledtext' => 'Nahrávanie PHP súborov je vypnuté. Prosím, skontrolujte nastavenie file_uploads.',
'uploadscripted' => 'Tento súbor obsahuje kód HTML alebo skript, ktorý može byť chybne interpretovaný prehliadačom.',
-'uploadcorrupt' => 'Tento súbor je závadný alebo má nesprávnu príponu. Skontrolujte súbor a nahrajte ho znova.',
'uploadvirus' => 'Súbor obsahuje vírus! Podrobnosti: $1',
+'upload-source' => 'Zdrojový súbor',
'sourcefilename' => 'Názov zdrojového súboru:',
+'sourceurl' => 'Zdrojový URL:',
'destfilename' => 'Názov cieľového súboru:',
'upload-maxfilesize' => 'Maximálna veľkosť súboru: $1',
+'upload-description' => 'Popis súboru',
+'upload-options' => 'Možnosti nahrávania',
'watchthisupload' => 'Sledovať tento súbor',
'filewasdeleted' => 'Súbor s týmto názvom bol už nahraný a následne zmazaný. Mali by ste skontrolovať $1 predtým, ako budete pokračovať na opätovné nahranie.',
'upload-wasdeleted' => "'''Upozornenie: Nahrávate súbor, ktorý bol predtým zmazaný.'''
@@ -1511,15 +1672,46 @@ MGP # Pentax
PICT # rôzne
#</pre> <!-- tento riadok ponechajte bez zmeny -->',
-'upload-proto-error' => 'Nesprávny protokol',
-'upload-proto-error-text' => 'Vzdialené nahrávanie vyžaduje, aby URL začínali <code>http://</code> alebo <code>ftp://</code>.',
-'upload-file-error' => 'Vnútorná chyba',
-'upload-file-error-text' => 'Vyskytla sa vnútorná chyba pri pokuse vytvoriť dočasný súbor na serveri.
+'upload-proto-error' => 'Nesprávny protokol',
+'upload-proto-error-text' => 'Vzdialené nahrávanie vyžaduje, aby URL začínali <code>http://</code> alebo <code>ftp://</code>.',
+'upload-file-error' => 'Vnútorná chyba',
+'upload-file-error-text' => 'Vyskytla sa vnútorná chyba pri pokuse vytvoriť dočasný súbor na serveri.
Prosím, kontaktujte [[Special:ListUsers/sysop|správcu systému]].',
-'upload-misc-error' => 'Neznáma chyba pri nahrávaní',
-'upload-misc-error-text' => 'Počas nahrávania sa vyskytla neznáma chyba.
+'upload-misc-error' => 'Neznáma chyba pri nahrávaní',
+'upload-misc-error-text' => 'Počas nahrávania sa vyskytla neznáma chyba.
Prosím, overte, že URL je platný a dostupný a skúste znova.
Ak problém pretrváva, kontaktujte [[Special:ListUsers/sysop|správcu systému]].',
+'upload-too-many-redirects' => 'URL obsahoval príliš mnoho presmerovaní',
+'upload-unknown-size' => 'Neznáma veľkosť',
+'upload-http-error' => 'Vyskytla sa chyba HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Prístup zamietnutý',
+'img-auth-nopathinfo' => 'Chýba PATH_INFO.
+Váš server nie je nastavený tak, aby poskytoval tieto informácie.
+Môže byť založený na CGI a nedokáže podporovať img_auth.
+Pozri http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Požadovaná cesta nie je v nastavenom adresári na nahrávanie.',
+'img-auth-badtitle' => 'Nepodarilo sa zostaviť platný názov z „$1“.',
+'img-auth-nologinnWL' => 'Nie ste prihlásený a „$1“ nie je na bielej listine.',
+'img-auth-nofile' => 'Súbor „$1“ neexistuje.',
+'img-auth-isdir' => 'Pokúšate sa o prístup k adresáru „$1“.
+Je povolený iba prístup k súborom.',
+'img-auth-streaming' => 'Streamovanie „$1“.',
+'img-auth-public' => 'Funkciou img_auth.php je výstup súborov zo súkromnej wiki.
+Nastavená wiki je verejná.
+Aby bolo zabezpečenie optimálne, img_auth.php je vypnutý.',
+'img-auth-noread' => 'Používateľ nemá prístup na čítanie „$1“.',
+
+# HTTP errors
+'http-invalid-url' => 'Neplatný URL: $1',
+'http-invalid-scheme' => 'URL so schémou „$1“ nie sú podporované',
+'http-request-error' => 'Požiadavka HTTP zlyhala z neznámych dôvodov.',
+'http-read-error' => 'Chyba čítania HTTP.',
+'http-timed-out' => 'Vyhradený čas požiadavky HTTP vypršal.',
+'http-curl-error' => 'Chyba pri sťahovaní URL: $1',
+'http-host-unreachable' => 'URL nie je dostupný',
+'http-bad-status' => 'Počas požiadavky HTTP nastal problém: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Nedostupný URL',
@@ -1528,6 +1720,7 @@ Ak problém pretrváva, kontaktujte [[Special:ListUsers/sysop|správcu systému]
'upload-curl-error28-text' => 'Lokalite trvala odpoveď príliš dlho. Prosím, skontrolujte, či je lokalita dopstupná, chvíľu počkajte a skúste znova. Možno je potrebné skúsiť nahrávanie v čase, kedy je lokalita menej zaťažená.',
'license' => 'Licencovanie:',
+'license-header' => 'Licencovanie',
'nolicense' => 'Nič nebolo vybrané',
'license-nopreview' => '(Náhľad nie je dostupný)',
'upload_source_url' => ' (platný, verejne prístupný URL)',
@@ -1548,6 +1741,7 @@ Kliknutím na hlavičku stĺpca zmeníte poradie triedenia.',
'listfiles_count' => 'Verzie',
# File description page
+'file-anchor-link' => 'Súbor',
'filehist' => 'História súboru',
'filehist-help' => 'Po kliknutí na dátum/čas uvidíte súbor ako vyzeral vtedy.',
'filehist-deleteall' => 'zmazať všetky',
@@ -1562,6 +1756,7 @@ Kliknutím na hlavičku stĺpca zmeníte poradie triedenia.',
'filehist-dimensions' => 'rozmery',
'filehist-filesize' => 'veľkosť súboru',
'filehist-comment' => 'komentár',
+'filehist-missing' => 'Súbor chýba',
'imagelinks' => 'Odkazy na súbor',
'linkstoimage' => 'Na tento obrázok {{PLURAL:$1|odkazuje nasledujúca stránka|odkazujú nasledujúce $1 stránky|odkazuje nasledujúcich $1 stránok}}:',
'linkstoimage-more' => 'Viac ako $1 {{PLURAL:$1|stránka odkazuje|stránky odkazujú|stránok odkazuje}} na tento súbor.
@@ -1571,15 +1766,14 @@ Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
'morelinkstoimage' => 'Zobraziť [[Special:WhatLinksHere/$1|ďalšie odkazy]] na tento súbor.',
'redirectstofile' => '{{PLURAL:$1|Nasledujúci súbor presmerúva|Nasledujúce $1 súbory presmerúvajú|Nasledujúcich $1 súborov presmerúva}} na tento súbor:',
'duplicatesoffile' => '{{PLURAL:$1|Nasledujúci súbor je duplikát|Nasledujúce $1 súbory sú duplikáty||Nasledujúcich $1 súborov sú duplikáty}} tohto súboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
-'sharedupload' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ďalšie informácie pozrite na $1.',
-'shareduploadwiki-desc' => 'Dolu je zobrazený popis, ktorý obsahuje jeho $1.',
-'shareduploadwiki-linktext' => 'popisná stránka súboru',
-'noimage' => 'Súbor s takým názvom neexistuje, ale môžete ho $1',
-'noimage-linktext' => 'nahrať',
+'sharedupload' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch.',
+'sharedupload-desc-there' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch. Ďalšie informácie nájdete na [$2 popisnej stránke súboru].',
+'sharedupload-desc-here' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch. Nižšie sú zobrazené informácie z [$2 popisnej stránky súboru].',
+'filepage-nofile' => 'Neexistuje žiadny súbor s takýmto názvom.',
+'filepage-nofile-link' => 'Súbor s takýmto názvom neexistuje, ale môžete ho [$1 nahrať].',
'uploadnewversion-linktext' => 'Nahrať novú verziu tohto súboru',
-'shared-repo-from' => 'z $1', # $1 is the repository name
-'shared-repo' => 'zdieľané úložisko', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'z $1',
+'shared-repo' => 'zdieľané úložisko',
# File reversion
'filerevert' => 'Obnoviť $1',
@@ -1608,6 +1802,7 @@ Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
** Porušenie autorských práv
** Duplicitný súbor',
'filedelete-edit-reasonlist' => 'Upraviť dôvody zmazania',
+'filedelete-maintenance' => 'Mazanie a obnovovanie súborov je počas údržby dočasne vypnuté.',
# MIME search
'mimesearch' => 'MIME vyhľadávanie',
@@ -1628,7 +1823,7 @@ Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
# Random page
'randompage' => 'Náhodná stránka',
-'randompage-nopages' => 'V mennom priestore „$1“ nie sú žiadne stránky.',
+'randompage-nopages' => '{{PLURAL:$2|V mennom priestore „$1“ nie sú žiadne stránky.|V nasledovných menných priestoroch nie sú žiadne stránky: $1}}',
# Random redirect
'randomredirect' => 'Náhodná presmerovacia stránka',
@@ -1640,6 +1835,7 @@ Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
'statistics-header-edits' => 'Štatistika úprav',
'statistics-header-views' => 'Štatistika zobrazení',
'statistics-header-users' => 'Štatistika používateľov',
+'statistics-header-hooks' => 'Iná štatistika',
'statistics-articles' => 'Stránok s obsahom',
'statistics-pages' => 'Stránok',
'statistics-pages-desc' => 'Všetky stránky na wiki vrátane diskusných stránok, presmerovaní atď.',
@@ -1669,8 +1865,8 @@ Každý riadok obsahuje odkaz na prvé a druhé presmerovanie a tiež prvý riad
'brokenredirects' => 'Pokazené presmerovania',
'brokenredirectstext' => 'Nasledovné presmerovania odkazujú na neexistujúce stránky:',
-'brokenredirects-edit' => '(upraviť)',
-'brokenredirects-delete' => '(zmazať)',
+'brokenredirects-edit' => 'upraviť',
+'brokenredirects-delete' => 'zmazať',
'withoutinterwiki' => 'Stránky bez jazykových odkazov',
'withoutinterwiki-summary' => 'Nasledujúce stránky neodkazujú na iné jazykové verzie:',
@@ -1778,7 +1974,7 @@ Môžete zúžiť rozsah, ak zvolíte typ záznamu, používateľské meno alebo
# Special:Categories
'categories' => 'Kategórie',
-'categoriespagetext' => 'Nasledovné kategórie obsahujú stránky alebo multimediálne súbory.
+'categoriespagetext' => '{{PLURAL:$1|Nasledovná kategória obsahuje|Nasledovné kategórie obsahujú}} stránky alebo multimediálne súbory.
Nie sú tu zobrazené [[Special:UnusedCategories|nepoužité kategórie]].
Pozri aj [[Special:WantedCategories|žiadané kategórie]].',
'categoriesfrom' => 'Zobraziť kategórie počnúc:',
@@ -1786,8 +1982,9 @@ Pozri aj [[Special:WantedCategories|žiadané kategórie]].',
'special-categories-sort-abc' => 'zoradiť podľa abecedy',
# Special:DeletedContributions
-'deletedcontributions' => 'Zmazané príspevky používateľa',
-'deletedcontributions-title' => 'Zmazané príspevky používateľa',
+'deletedcontributions' => 'Zmazané príspevky používateľa',
+'deletedcontributions-title' => 'Zmazané príspevky používateľa',
+'sp-deletedcontributions-contribs' => 'príspevky',
# Special:LinkSearch
'linksearch' => 'Externé odkazy',
@@ -1803,6 +2000,16 @@ Podporované protokoly: <tt>$1</tt>',
'listusersfrom' => 'Zobraziť používateľov počnúc:',
'listusers-submit' => 'Zobraziť',
'listusers-noresult' => 'Neboli nájdení používatelia. Prosím, skontrolujte aj varianty s veľkými/malými písmenami.',
+'listusers-blocked' => '(zablokovaný)',
+
+# Special:ActiveUsers
+'activeusers' => 'Zoznam aktívnych používateľov',
+'activeusers-intro' => 'Toto je zoznam používateľov, ktorí $1 {{PLURAL:$1|za posledný 1 deň|za posledné $1 dni|za posledných $1 dní}} vykonali nejakú aktivitu.',
+'activeusers-count' => '$1 {{PLURAL:$1|úprava|úpravy|úprav}} za {{PLURAL:$3|posledný deň|posledné $3 dni|posledných $3 dní}}',
+'activeusers-from' => 'Zobraziť používateľov počínajúc:',
+'activeusers-hidebots' => 'Skryť robotov',
+'activeusers-hidesysops' => 'Skryť správcov',
+'activeusers-noresult' => 'Neboli nájdení žiadni používatelia.',
# Special:Log/newusers
'newuserlogpage' => 'Záznam vytvorených používateľov',
@@ -1813,17 +2020,23 @@ Podporované protokoly: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Účet vytvorený automaticky',
# Special:ListGroupRights
-'listgrouprights' => 'Práva skupiny používateľov',
-'listgrouprights-summary' => 'Toto je zoznam skupín používateľov definovaných na tejto wiki a ich prístupových práv.
+'listgrouprights' => 'Práva skupiny používateľov',
+'listgrouprights-summary' => 'Toto je zoznam skupín používateľov definovaných na tejto wiki a ich prístupových práv.
Môžete si prečítať [[{{MediaWiki:Listgrouprights-helppage}}|ďalšie informácie]] o jednotlivých právach.',
-'listgrouprights-group' => 'Skupina',
-'listgrouprights-rights' => 'Práva',
-'listgrouprights-helppage' => 'Help:Práva skupiny',
-'listgrouprights-members' => '(zoznam členov)',
-'listgrouprights-addgroup' => 'Môže pridávať {{PLURAL:$2|skupinu|skupiny}}: $1',
-'listgrouprights-removegroup' => 'Môže odoberať {{PLURAL:$2|skupinu|skupiny}}: $1',
-'listgrouprights-addgroup-all' => 'Môže pridávať všetky skupiny',
-'listgrouprights-removegroup-all' => 'Môže odoberať všetky skupiny',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Udelené právo</span>
+* <span class="listgrouprights-revoked">Odobrané právo</span>',
+'listgrouprights-group' => 'Skupina',
+'listgrouprights-rights' => 'Práva',
+'listgrouprights-helppage' => 'Help:Práva skupiny',
+'listgrouprights-members' => '(zoznam členov)',
+'listgrouprights-addgroup' => 'Môže pridávať {{PLURAL:$2|skupinu|skupiny}}: $1',
+'listgrouprights-removegroup' => 'Môže odoberať {{PLURAL:$2|skupinu|skupiny}}: $1',
+'listgrouprights-addgroup-all' => 'Môže pridávať všetky skupiny',
+'listgrouprights-removegroup-all' => 'Môže odoberať všetky skupiny',
+'listgrouprights-addgroup-self' => 'Do vlastného účtu je možné pridať {{PLURAL:$2|skupinu|skupiny}}: $1',
+'listgrouprights-removegroup-self' => 'Z vlastného účtu je možné odstrániť {{PLURAL:$2|skupinu|skupiny}}: $1',
+'listgrouprights-addgroup-self-all' => 'Do vlastného účtu je možné pridať všetky skupiny',
+'listgrouprights-removegroup-self-all' => 'Z vlastného účtu je možné odstrániť všetky skupiny',
# E-mail user
'mailnologin' => 'Žiadna adresa na zaslanie',
@@ -1916,6 +2129,9 @@ Nedostanete ďalšie upozornenia, aj ak bude stránka znovu upravovaná, kým ne
Zmeniť nastavenia vašich sledovaných stránok môžete na
{{fullurl:Special:Watchlist/edit}}
+Zmazať stránku z vášho zoznamu sledovaných môžete na
+$UNWATCHURL
+
Návrhy a ďalšia pomoc:
{{fullurl:{{int:Helppage}}}}',
@@ -1928,9 +2144,10 @@ Návrhy a ďalšia pomoc:
'exblank' => 'stránka bola prázdna',
'delete-confirm' => 'Zmazať „$1“',
'delete-legend' => 'Zmazať',
-'historywarning' => 'UPOZORNENIE: Stránka, ktorú chcete zmazať má históriu:',
+'historywarning' => "'''Upozornenie:''' Stránka, ktorú sa chystáte zmazať má históriu obsahujúcu približne $1 {{PLURAL:$1|revíziu|revízie|revízií}}:",
'confirmdeletetext' => 'Chystáte sa trvalo zmazať z databázy stránku alebo obrázok spolu so všetkými jeho/jej predošlými verziami. Potvrďte, že máte v úmysle tak urobiť, že ste si vedomý následkov, a že to robíte v súlade so [[{{MediaWiki:Policy-url}}|zásadami a smernicami {{GRAMMAR:genitív|{{SITENAME}}}}]].',
'actioncomplete' => 'Úloha bola dokončená',
+'actionfailed' => 'Operácia sa nepodarila',
'deletedtext' => '"<nowiki>$1</nowiki>" bol zmazaný.
Na $2 nájdete zoznam posledných zmazaní.',
'deletedarticle' => '„[[$1]]“ zmazaná',
@@ -1951,18 +2168,19 @@ Na $2 nájdete zoznam posledných zmazaní.',
'delete-warning-toobig' => 'Táto stránka má veľkú históriu úprav, viac ako $1 {{PLURAL:$1|revíziu|revízie|revízií}}. Jej zmazanie by mohlo narušiť databázové operácie {{GRAMMAR:genitív|{{SITENAME}}}}; postupujte opatrne.',
# Rollback
-'rollback' => 'Rollback úprav',
-'rollback_short' => 'Rollback',
-'rollbacklink' => 'rollback',
-'rollbackfailed' => 'Rollback neúspešný',
-'cantrollback' => 'Nie je možné úpravu vrátiť späť, posledný autor je jediný autor tejto stránky.',
-'alreadyrolled' => 'Nemožno vrátiť späť poslednú úpravu [[:$1]] od [[User:$2|$2]] ([[User talk:$2|Diskusia]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); niekto iný buď upravoval stránku alebo už vrátil úpravy späť.
+'rollback' => 'Rollback úprav',
+'rollback_short' => 'Rollback',
+'rollbacklink' => 'rollback',
+'rollbackfailed' => 'Rollback neúspešný',
+'cantrollback' => 'Nie je možné úpravu vrátiť späť, posledný autor je jediný autor tejto stránky.',
+'alreadyrolled' => 'Nemožno vrátiť späť poslednú úpravu [[:$1]] od [[User:$2|$2]] ([[User talk:$2|Diskusia]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); niekto iný buď upravoval stránku alebo už vrátil úpravy späť.
Autorom poslednej úpravy je [[User:$3|$3]] ([[User talk:$3|Diskusia]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Zhrnutie úpravy bolo: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Posledné úpravy používateľa [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusia]]) vrátené; bola obnovená posledná úprava $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Úpravy $1 vrátené; obnovená posledná verzia od $2.',
-'sessionfailure' => 'Zdá sa, že je problém s vašou prihlasovacou reláciou;
+'editcomment' => "Zhrnutie úpravy bolo: „''$1''“.",
+'revertpage' => 'Posledné úpravy používateľa [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusia]]) vrátené; bola obnovená posledná úprava $1',
+'revertpage-nouser' => 'Vrátené úpravy (meno používateľa odstránené) na poslednú revíziu od [[User:$1|$1]]',
+'rollback-success' => 'Úpravy $1 vrátené; obnovená posledná verzia od $2.',
+'sessionfailure' => 'Zdá sa, že je problém s vašou prihlasovacou reláciou;
táto akcia bola zrušená ako prevencia proti zneužitiu relácie (session).
Prosím, stlačte "naspäť", obnovte stránku, z ktorej ste sa sem dostali, a skúste to znova.',
@@ -1981,7 +2199,7 @@ Môžete si pozrieť aj [[Special:ProtectedPages|zoznam momentálne platných za
'protectexpiry' => 'Zamknuté do:',
'protect_expiry_invalid' => 'Neplatný čas vypršania.',
'protect_expiry_old' => 'Čas vypršania je v minulosti.',
-'protect-unchain' => 'Odomknúť povolenia pre presun',
+'protect-unchain-permissions' => 'Odomknúť ďalšie možnosti ochrany',
'protect-text' => "Tu si môžete pozrieť a zmeniť úroveň ochrany stránky '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nemôžete meniť úroveň ochrany, kým ste zablokovaný.
Tu sú aktuálne nastavenia stránky '''$1''':",
@@ -2010,7 +2228,7 @@ Tu sú aktuálne nastavenia stránky '''$1''':",
** Neproduktívne upravovacie vojny
** Veľmi často naštevovaná stránka',
'protect-edit-reasonlist' => 'Upraviť dôvody zamknutia',
-'protect-expiry-options' => '1 hodina:1 hour,1 deň:1 day,1 týždeň:1 week,2 týždne:2 weeks,1 mesiac:1 month,3 mesiace:3 months,6 mesiacov:6 months,1 rok:1 year,na neurčito:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hodina:1 hour,1 deň:1 day,1 týždeň:1 week,2 týždne:2 weeks,1 mesiac:1 month,3 mesiace:3 months,6 mesiacov:6 months,1 rok:1 year,na neurčito:infinite',
'restriction-type' => 'Povolenie:',
'restriction-level' => 'Úroveň obmedzenia:',
'minimum-size' => 'Minimálna veľkosť',
@@ -2050,6 +2268,7 @@ Ak bola od zmazania vytvorená nová stránka s rovnakým názvom, obnovené rev
'undelete-nodiff' => 'Nebola nájdená žiadna predošlá revízia.',
'undeletebtn' => 'Obnoviť!',
'undeletelink' => 'zobraziť/obnoviť',
+'undeleteviewlink' => 'zobraziť',
'undeletereset' => 'Reset',
'undeleteinvert' => 'Invertovať výber',
'undeletecomment' => 'Dôvod:',
@@ -2087,19 +2306,23 @@ $1',
'contributions-title' => 'Príspevky používateľa pre $1',
'mycontris' => 'Moje príspevky',
'contribsub2' => 'Príspevky $1 ($2)',
-'nocontribs' => 'Neboli nájdené úpravy, ktoré by zodpovedali týmto kritériám.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Neboli nájdené úpravy, ktoré by zodpovedali týmto kritériám.',
'uctop' => '(posledná úprava)',
'month' => 'Mesiac:',
'year' => 'Rok:',
-'sp-contributions-newbies' => 'Zobraziť len príspevky nových účtov',
-'sp-contributions-newbies-sub' => 'Príspevky nováčikov',
-'sp-contributions-newbies-title' => 'Príspevky nových používateľov',
-'sp-contributions-blocklog' => 'záznam blokovaní',
-'sp-contributions-logs' => 'záznamy',
-'sp-contributions-search' => 'Hľadať príspevky',
-'sp-contributions-username' => 'IP adresa alebo meno používateľa:',
-'sp-contributions-submit' => 'Hľadať',
+'sp-contributions-newbies' => 'Zobraziť len príspevky nových účtov',
+'sp-contributions-newbies-sub' => 'Príspevky nováčikov',
+'sp-contributions-newbies-title' => 'Príspevky nových používateľov',
+'sp-contributions-blocklog' => 'záznam blokovaní',
+'sp-contributions-deleted' => 'zmazané príspevky používateľa',
+'sp-contributions-logs' => 'záznamy',
+'sp-contributions-talk' => 'diskusia',
+'sp-contributions-userrights' => 'spravovanie používateľských práv',
+'sp-contributions-blocked-notice' => 'Tento používateľ je momentálne zablokovaný. Dolu je uvedená posledná položka zo záznamu blokovaní:',
+'sp-contributions-search' => 'Hľadať príspevky',
+'sp-contributions-username' => 'IP adresa alebo meno používateľa:',
+'sp-contributions-submit' => 'Hľadať',
# What links here
'whatlinkshere' => 'Odkazy na túto stránku',
@@ -2122,6 +2345,7 @@ $1',
# Block/unblock
'blockip' => 'Zablokovať používateľa',
+'blockip-title' => 'Zablokovať používateľa',
'blockip-legend' => 'Zablokovať používateľa',
'blockiptext' => 'Použite tento formulár na zablokovanie možnosti zápisov uskutočnených z konkrétnej IP adresy alebo od používateľa.
Mali by ste to urobiť len v prípade bránenia vandalizmu a v súlade so [[{{MediaWiki:Policy-url}}|zásadami a smernicami {{GRAMMAR:genitív|{{SITENAME}}}}]].
@@ -2145,7 +2369,7 @@ Nižšie uveďte konkrétny dôvod (napríklad uveďte konkrétne stránky, ktor
'ipbenableautoblock' => 'Automaticky blokovať poslednú IP adresu, ktorú tento používateľ použil, a všetky ďalšie adresy, z ktorých sa pokúsi upravovať.',
'ipbsubmit' => 'Zablokovať tohto používateľa',
'ipbother' => 'Iný čas',
-'ipboptions' => '2 hodiny:2 hours,1 deň:1 day,3 dni:3 days,1 týždeň:1 week,2 týždne:2 weeks,1 mesiac:1 month,3 mesiace:3 months,6 mesiacov:6 months,1 rok:1 year,na neurčito:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hodiny:2 hours,1 deň:1 day,3 dni:3 days,1 týždeň:1 week,2 týždne:2 weeks,1 mesiac:1 month,3 mesiace:3 months,6 mesiacov:6 months,1 rok:1 year,na neurčito:infinite',
'ipbotheroption' => 'iný čas',
'ipbotherreason' => 'Iný/ďalší dôvod',
'ipbhidename' => 'Skryť meno používateľa z úprav a zoznamov',
@@ -2175,9 +2399,11 @@ z/od momentálne zablokovanej IP adresy/používateľa.',
'ipblocklist-sh-tempblocks' => '$1 dočasných zablokovaní',
'ipblocklist-sh-addressblocks' => '$1 zablokovaní jednotlivej IP adresy',
'ipblocklist-submit' => 'Hľadať',
+'ipblocklist-localblock' => 'Lokálne blokovanie',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Iný blok|Iné blokovania}}',
'blocklistline' => '$1, $2 zablokoval $3 (ukončenie $4)',
'infiniteblock' => 'na neurčito',
-'expiringblock' => 'ukončenie $1',
+'expiringblock' => 'vyprší $1 $2',
'anononlyblock' => 'iba anon.',
'noautoblockblock' => 'automatické blokovanie vypnuté',
'createaccountblock' => 'tvorba účtov bola zablokovaná',
@@ -2192,7 +2418,8 @@ z/od momentálne zablokovanej IP adresy/používateľa.',
'autoblocker' => 'Boli ste automaticky zablokovaný, pretože vašu IP adresu nedávno použil „[[User:$1|$1]]“.
Uvedený dôvod zablokovania používateľa $2 bol: „$2“',
'blocklogpage' => 'Záznam_blokovaní',
-'blocklog-fulllog' => 'Úplný záznam blokovaní',
+'blocklog-showlog' => 'Tento používateľ bol v minulosti zablokovaný. Záznam blokovaní uvádza nasledovný dôvod:',
+'blocklog-showsuppresslog' => 'Tento používateľ bol v minulosti zablokovaný a skrytý. Záznam potlačení uvádza nasledovný dôvod:',
'blocklogentry' => 'zablokoval/a "[[$1]]" s časom ukončenia $2 $3',
'reblock-logentry' => 'zmenené voľby zablokovania používateľa [[$1]] s časom vypršania $2, $3',
'blocklogtext' => 'Toto je zoznam blokovaní a odblokovaní používateľov. Automaticky
@@ -2213,9 +2440,11 @@ blokované IP adresy nie sú zahrnuté. Pozri zoznam
'ipb_already_blocked' => '„$1“ je už zablokovaný',
'ipb-needreblock' => '== Už je zablokovaný ==
$1 je už zablokovaný. Chcete zmeniť voľby blokovania?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Iný blok|Iné blokovania}}',
'ipb_cant_unblock' => 'Chyba: ID bloku $1 nenájdený. Možno už bol odblokovaný.',
'ipb_blocked_as_range' => 'Chyba: IP adresa $1 nie je blokovaná priamo a nie je ju teda možné odblokovať. Je však blokovaná v rámci rozsahu $2, ktorý je možné odblokovať.',
'ip_range_invalid' => 'Neplatný IP rozsah.',
+'ip_range_toolarge' => 'Bloky rozsahov väčšie ako /$1 nie sú povolené.',
'blockme' => 'Zablokuj ma',
'proxyblocker' => 'Blokovač proxy',
'proxyblocker-disabled' => 'Táto funkcia je vypnutá.',
@@ -2224,6 +2453,7 @@ $1 je už zablokovaný. Chcete zmeniť voľby blokovania?',
'sorbsreason' => 'Vaša IP adresa je vedená ako nezabezpečený proxy server v DNSBL.',
'sorbs_create_account_reason' => 'Vaša IP adresa je vedená ako nezabezpečený proxy server v databáze DNSBL, ktorú používa {{SITENAME}}. Nemôžete si vytvoriť účet.',
'cant-block-while-blocked' => 'Nemôžete blokovať iných používateľov, kým ste zablokovaný.',
+'cant-see-hidden-user' => 'Používateľ, ktorého sa pokúšate zablokovať už bol zablokovaný a skrytý. Pretože nemáte právo hideuser, nemôžete vidieť ani upravovať blokovanie používateľa.',
# Developer tools
'lockdb' => 'Zamknúť databázu',
@@ -2274,6 +2504,7 @@ ubezpečte sa preto, skôr ako budete pokračovať, že chápete dôsledky svojh
V takých prípadoch budete musieť, ak si to želáte, premiestniť alebo zlúčiť stránku ručne.",
'movearticle' => 'Presunúť stránku',
+'moveuserpage-warning' => "'''Upozornenie:''' Chystáte sa presunúť používateľskú stránku. Pamätajte, že týmto presuniete iba stránku a používateľ ''nebude'' premenovaný.",
'movenologin' => 'Nie ste prihlásený',
'movenologintext' => 'Musíte byť registrovaný používateľ a [[Special:UserLogin|prihlásený]], aby ste mohli presunúť stránku.',
'movenotallowed' => 'Nemáte povolenie presúvať stránky.',
@@ -2284,7 +2515,7 @@ V takých prípadoch budete musieť, ak si to želáte, premiestniť alebo zlú
'move-watch' => 'Sledovať túto stránku',
'movepagebtn' => 'Presunúť stránku',
'pagemovedsub' => 'Presun bol úspešný',
-'movepage-moved' => "'''„$1” bolo presunuté na „$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''„$1” bolo presunuté na „$2”'''",
'movepage-moved-redirect' => 'Bolo vytvorené presmerovanie.',
'movepage-moved-noredirect' => 'Vytvorenie presmerovania bolo potlačené.',
'articleexists' => 'Stránka s týmto názvom už existuje alebo
@@ -2330,6 +2561,12 @@ Cieľová stránka „[[:$1]]“ už existuje. Chcete ho vymazať a vytvoriť ta
'imageinvalidfilename' => 'Cieľový názov obrázka nie je platný',
'fix-double-redirects' => 'Aktualizovať všetky presmerovania odkazujúce na pôvodný názov',
'move-leave-redirect' => 'Zanechať presmerovanie',
+'protectedpagemovewarning' => "'''Upozornenie:''' Táto stránka bola zamknutá, aby ju mohli presunúť iba používatelia s oprávnením správcu. Dolu je pre informáciu posledná položka zo záznamu:",
+'semiprotectedpagemovewarning' => "'''Poznámka:''' Táto stránka bola zamknutá, aby ju mohli presunúť iba zaregistrovaní používatelia. Dolu je pre informáciu posledná položka zo záznamu:",
+'move-over-sharedrepo' => '== Súbor existuje ==
+[[:$1]] existuje v zdieľanom úložisku. Presunutím súboru na tento názov prekryjete zdieľaný súbor.',
+'file-exists-sharedrepo' => 'Názov súboru, ktorý ste zvolili sa už používa na zdieľanom úložisku.
+Prosím, zvoľte iný názov.',
# Export
'export' => 'Export stránok',
@@ -2353,15 +2590,21 @@ V druhom prípade môžete tiež použiť odkaz, napr. [[{{#Special:Export}}/{{M
'export-pagelinks' => 'Vrátane odkazovaných stránok do hĺbky:',
# Namespace 8 related
-'allmessages' => 'Všetky systémové správy',
-'allmessagesname' => 'Názov',
-'allmessagesdefault' => 'štandardný text',
-'allmessagescurrent' => 'aktuálny text',
-'allmessagestext' => 'Toto je zoznam všetkých správ dostupných v mennom priestore MediaWiki.
+'allmessages' => 'Všetky systémové správy',
+'allmessagesname' => 'Názov',
+'allmessagesdefault' => 'štandardný text',
+'allmessagescurrent' => 'aktuálny text',
+'allmessagestext' => 'Toto je zoznam všetkých správ dostupných v mennom priestore MediaWiki.
Prosím, navštívte [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [http://translatewiki.net translatewiki.net] ak chcete prispieť k všeobecnej lokalizácii MediaWiki.',
-'allmessagesnotsupportedDB' => "Túto stránku nemožno použiť, pretože '''\$wgUseDatabaseMessages''' je vypnuté.",
-'allmessagesfilter' => 'Filter názvov správ:',
-'allmessagesmodified' => 'Zobraziť iba zmenené',
+'allmessagesnotsupportedDB' => "Túto stránku nemožno použiť, pretože '''\$wgUseDatabaseMessages''' je vypnuté.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter podľa stavu prispôsobenia:',
+'allmessages-filter-unmodified' => 'Nezmenené',
+'allmessages-filter-all' => 'Všetky',
+'allmessages-filter-modified' => 'Zmenené',
+'allmessages-prefix' => 'Filter podľa predpony:',
+'allmessages-language' => 'Jazyk:',
+'allmessages-filter-submit' => 'Vykonať',
# Thumbnails
'thumbnail-more' => 'Zväčšiť',
@@ -2371,6 +2614,9 @@ Prosím, navštívte [http://www.mediawiki.org/wiki/Localisation MediaWiki Local
'djvu_no_xml' => 'Nebolo možné priniesť XML DjVu súboru',
'thumbnail_invalid_params' => 'Neplatné parametre náhľadu',
'thumbnail_dest_directory' => 'Nebolo možné vytvoriť cieľový adresár',
+'thumbnail_image-type' => 'Nepodporovaný typ obrázka',
+'thumbnail_gd-library' => 'Neúplná konfigurácia knižnice GD: chýba funkcia $1',
+'thumbnail_image-missing' => 'Zdá sa, že súbor chýba: $1',
# Special:Import
'import' => 'Import stránok',
@@ -2434,6 +2680,7 @@ Všetky transwiki importy sa zaznamenávajú v [[Special:Log/import|Zázname imp
'tooltip-ca-viewsource' => 'Táto stránka je zamknutá. Môžete však vidieť jej zdrojový text.',
'tooltip-ca-history' => 'Minulé verzie tejto stránky.',
'tooltip-ca-protect' => 'Zamknúť túto stránku',
+'tooltip-ca-unprotect' => 'Odomknúť túto stránku',
'tooltip-ca-delete' => 'Vymazať túto stránku',
'tooltip-ca-undelete' => 'Obnoviť úpravy tejto stránky až po dobu, kedy bola vymazaná',
'tooltip-ca-move' => 'Presunúť túto stránku',
@@ -2444,6 +2691,7 @@ Všetky transwiki importy sa zaznamenávajú v [[Special:Log/import|Zázname imp
'tooltip-search-fulltext' => 'Hľadať tento text na stránkach',
'tooltip-p-logo' => 'Hlavná stránka',
'tooltip-n-mainpage' => 'Navštíviť Hlavnú stránku',
+'tooltip-n-mainpage-description' => 'Navštíviť hlavnú stránku',
'tooltip-n-portal' => 'O projekte, ako môžete prispieť, kde čo nájsť',
'tooltip-n-currentevents' => 'Aktuálne udalosti a ich pozadie',
'tooltip-n-recentchanges' => 'Zoznam posledných úprav vo wiki.',
@@ -2491,6 +2739,7 @@ Umožnuje do zhrnutia pridanie dôvodu.',
'chick.css' => '/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Kuriatko */',
'simple.css' => '/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Jednoduchý */',
'modern.css' => '/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Moderný */',
+'vector.css' => '/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Vector */',
'print.css' => '/* Tu umiestnené CSS bude ovplyvňovať tlačový výstup */',
'handheld.css' => '/* Tu umiestnené CSS bude ovplyvňovať prenosné zariadenia vychádzajúceho zo štýlu nastaveného v $wgHandheldStyle */',
@@ -2504,6 +2753,7 @@ Umožnuje do zhrnutia pridanie dôvodu.',
'chick.js' => '/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Kuriatko */',
'simple.js' => '/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Jednoduchý */',
'modern.js' => '/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Moderný */',
+'vector.js' => '/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Vector */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadáta pre tento server vypnuté.',
@@ -2513,10 +2763,12 @@ Umožnuje do zhrnutia pridanie dôvodu.',
# Attribution
'anonymous' => '$1 {{PLURAL:$1|anonymný používateľ|anonymní používatelia|anonymných používateľov}} {{GRAMMAR:genitív|{{SITENAME}}}}',
'siteuser' => 'používateľ {{GRAMMAR:genitív|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Túto stránku naposledy upravoval používateľ $3 $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'anonymný používateľ {{GRAMMAR:genitív|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Túto stránku naposledy upravoval používateľ $3 $2, $1.',
'othercontribs' => 'Založené na práci $1.',
'others' => 'iné',
'siteusers' => '{{PLURAL:$2|používateľ|používatelia|používateľov}} {{GRAMMAR:genitív|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|anonymný používateľ|anonymní používatelia}} {{GRAMMAR:genitív|{{SITENAME}}}}$1',
'creditspage' => 'Autori stránky',
'nocredits' => 'Pre túto stránku neexistujú žiadne dostupné ocenenia.',
@@ -2555,11 +2807,22 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
'mw_math_modern' => 'Odporúčané pre moderné prehliadače',
'mw_math_mathml' => 'MathML (experimentálne)',
+# Math errors
+'math_failure' => 'Syntaktická analýza (parsing) neúspešná',
+'math_unknown_error' => 'neznáma chyba',
+'math_unknown_function' => 'neznáma funkcia',
+'math_lexing_error' => 'lexikálna chyba',
+'math_syntax_error' => 'syntaktická chyba',
+'math_image_error' => 'PNG konverzia neúspešná; skontrolujte správnosť inštalácie programov: latex, dvips, gs a convert',
+'math_bad_tmpdir' => 'Nemožno zapisovať alebo vytvoriť dočasný matematický adresár',
+'math_bad_output' => 'Nemožno zapisovať alebo vytvoriť výstupný matematický adresár',
+'math_notexvc' => 'Chýbajúci program texvc; konfigurácia je popísaná v math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Označiť ako stráženú',
'markaspatrolledtext' => 'Označiť túto stránku ako stráženú',
'markedaspatrolled' => 'Označené ako strážené',
-'markedaspatrolledtext' => 'Vybraná verzia bola označená na stráženie.',
+'markedaspatrolledtext' => 'Vybraná verzia [[:$1]] bola označená ako strážená.',
'rcpatroldisabled' => 'Stráženie posledných zmien bolo vypnuté',
'rcpatroldisabledtext' => 'Funkcia stráženia posledných zmien je momentálne vypnutá.',
'markedaspatrollederror' => 'Nie je možné označiť ako strážené',
@@ -2589,13 +2852,10 @@ $1',
'previousdiff' => '← Predchádzajúca úprava',
'nextdiff' => 'Ďalšia úprava →',
-# Visual comparison
-'visual-comparison' => 'Vizuálne porovnanie',
-
# Media information
'mediawarning' => "'''Upozornenie''': Tento súbor môže obsahovať nebezpečný programový kód.
Jeho spustením môžete kompromitovať svoj systém.",
-'imagemaxsize' => 'Obmedziť obrázky na popisnej stránke súboru na:',
+'imagemaxsize' => "Obmedziť veľkosť obrázka:<br />''(na popisnej stránke súboru)''",
'thumbsize' => 'Veľkosť náhľadu:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránok}}',
'file-info' => '(veľkosť súboru: $1, MIME typ: $2)',
@@ -2604,6 +2864,8 @@ Jeho spustením môžete kompromitovať svoj systém.",
'svg-long-desc' => '(SVG súbor, $1 × $2 pixelov, veľkosť súboru: $3)',
'show-big-image' => 'Obrázok vo vyššom rozlíšení',
'show-big-image-thumb' => '<small>Veľkosť tohto náhľadu: $1 × $2 pixelov</small>',
+'file-info-gif-looped' => 'v cykle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|rámec|rámce|rámcov}}',
# Special:NewFiles
'newimages' => 'Galéria nových obrázkov',
@@ -2635,7 +2897,7 @@ Každý ďalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. článk
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Šírka',
@@ -2762,14 +3024,14 @@ Každý ďalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. článk
'exif-unknowndate' => 'Neznámy dátum',
-'exif-orientation-1' => 'Normálna', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontálne prevrátená', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Otočená o 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikálne prevrátená', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Otočená o 90° proti smeru hodinových ručičiek a vertikálne prevrátená', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Otočená o 90° v smere hodinových ručičiek', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Otočená o 90° v smere hodinových ručičiek a vertikálne prevrátená', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Otočená o 90° proti smeru hodinových ručičiek', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normálna',
+'exif-orientation-2' => 'Horizontálne prevrátená',
+'exif-orientation-3' => 'Otočená o 180°',
+'exif-orientation-4' => 'Vertikálne prevrátená',
+'exif-orientation-5' => 'Otočená o 90° proti smeru hodinových ručičiek a vertikálne prevrátená',
+'exif-orientation-6' => 'Otočená o 90° v smere hodinových ručičiek',
+'exif-orientation-7' => 'Otočená o 90° v smere hodinových ručičiek a vertikálne prevrátená',
+'exif-orientation-8' => 'Otočená o 90° proti smeru hodinových ručičiek',
'exif-planarconfiguration-1' => 'masívny formát',
'exif-planarconfiguration-2' => 'rovinný formát',
@@ -2891,7 +3153,7 @@ Každý ďalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. článk
'exif-gpsmeasuremode-2' => '2-rozmerné meranie',
'exif-gpsmeasuremode-3' => '3-rozmerné meranie',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometrov za hodinu',
'exif-gpsspeed-m' => 'Míľ za hodinu',
'exif-gpsspeed-n' => 'Uzlov',
@@ -2910,6 +3172,7 @@ Každý ďalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. článk
'watchlistall2' => 'všetky',
'namespacesall' => 'všetky',
'monthsall' => 'všetky',
+'limitall' => 'všetky',
# E-mail address confirmation
'confirmemail' => 'Potvrdiť e-mailovú adresu',
@@ -3046,7 +3309,7 @@ Tiež môžete [[Special:Watchlist/edit|použiť štandardný editor]].',
'duplicate-defaultsort' => 'Upozornenie: Štandardný kláves na zoraďovanie „$2“ nahrádza starý kláves „$1“.',
# Special:Version
-'version' => 'Verzia', # Not used as normal message but as header for the special page itself
+'version' => 'Verzia',
'version-extensions' => 'Nainštalované rozšírenia',
'version-specialpages' => 'Špeciálne stránky',
'version-parserhooks' => 'Prípojné body syntaktického analyzátora',
@@ -3060,7 +3323,7 @@ Tiež môžete [[Special:Watchlist/edit|použiť štandardný editor]].',
'version-skin-extension-functions' => 'Rozširujúce funkcie vzhľadu',
'version-hook-name' => 'Názov prípojného bodu',
'version-hook-subscribedby' => 'Pripojené',
-'version-version' => 'Verzia',
+'version-version' => '(Verzia $1)',
'version-license' => 'Licencia',
'version-software' => 'Nainštalovaný softvér',
'version-software-product' => 'Produkt',
@@ -3141,4 +3404,15 @@ Zadajte názov súboru bez predpony „{{ns:file}}:“.',
'dberr-outofdate' => 'Pamätajte, že ich indexy nemusia byť aktuálne.',
'dberr-cachederror' => 'Toto je kópia požadovanej ztránky z vyrovnávacej pamäte a nemusí byť aktuálna.',
+# HTML forms
+'htmlform-invalid-input' => 'Niekotrý z údajov, ktoré ste zadali je problematický',
+'htmlform-select-badoption' => 'Hodnota, ktorú ste uviedli nie je platná.',
+'htmlform-int-invalid' => 'Hodnota, ktorú ste uviedli nie je celé číslo.',
+'htmlform-float-invalid' => 'Hodnota, ktorú ste zadali nie je číslo.',
+'htmlform-int-toolow' => 'Hodnota, ktorú ste zadali je menšia ako minimálna hodnota $1',
+'htmlform-int-toohigh' => 'Hodnota, ktorú ste zadali je väčšia ako maximálna hodnota $1',
+'htmlform-submit' => 'Odoslať',
+'htmlform-reset' => 'Vrátiť zmeny',
+'htmlform-selectorother-other' => 'Iné',
+
);
diff --git a/languages/messages/MessagesSl.php b/languages/messages/MessagesSl.php
index 8014a0a7..fbb45af5 100644
--- a/languages/messages/MessagesSl.php
+++ b/languages/messages/MessagesSl.php
@@ -17,24 +17,22 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Posebno',
- NS_MAIN => '',
- NS_TALK => 'Pogovor',
- NS_USER => 'Uporabnik',
- NS_USER_TALK => 'Uporabniški_pogovor',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'Pogovor_{{grammar:mestnik|$1}}',
- NS_FILE => 'Slika',
- NS_FILE_TALK => 'Pogovor_o_sliki',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Pogovor_o_MediaWiki',
- NS_TEMPLATE => 'Predloga',
- NS_TEMPLATE_TALK => 'Pogovor_o_predlogi',
- NS_HELP => 'Pomoč',
- NS_HELP_TALK => 'Pogovor_o_pomoči',
- NS_CATEGORY => 'Kategorija',
- NS_CATEGORY_TALK => 'Pogovor_o_kategoriji'
+ NS_MEDIA => 'Datoteka',
+ NS_SPECIAL => 'Posebno',
+ NS_TALK => 'Pogovor',
+ NS_USER => 'Uporabnik',
+ NS_USER_TALK => 'Uporabniški_pogovor',
+ NS_PROJECT_TALK => 'Pogovor_{{grammar:mestnik|$1}}',
+ NS_FILE => 'Slika',
+ NS_FILE_TALK => 'Pogovor_o_sliki',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Pogovor_o_MediaWiki',
+ NS_TEMPLATE => 'Predloga',
+ NS_TEMPLATE_TALK => 'Pogovor_o_predlogi',
+ NS_HELP => 'Pomoč',
+ NS_HELP_TALK => 'Pogovor_o_pomoči',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Pogovor_o_kategoriji',
);
$specialPageAliases = array(
@@ -54,6 +52,70 @@ $specialPageAliases = array(
'Listgrouprights' => array( 'SeznamPravicSkupin' ),
'Statistics' => array( 'Statistika' ),
'Randompage' => array( 'Nakljucno', 'NakljucnaStran' ),
+ 'Lonelypages' => array( 'OsiroteleStrani' ),
+ 'Uncategorizedpages' => array( 'NekategoriziraneStrani' ),
+ 'Uncategorizedcategories' => array( 'NekategoriziraneKategorije' ),
+ 'Uncategorizedimages' => array( 'NekategoriziraneDatoteke', 'NekategoriziraneSlike' ),
+ 'Uncategorizedtemplates' => array( 'NekategoriziranePredloge' ),
+ 'Unusedcategories' => array( 'NeuporabljeneKategorije' ),
+ 'Unusedimages' => array( 'NeuporabljeneDatoteke', 'NeuporabljeneSlike' ),
+ 'Wantedpages' => array( 'ZeleneStrani' ),
+ 'Wantedcategories' => array( 'ZeleneKategorije' ),
+ 'Wantedfiles' => array( 'ZeleneDatoteke' ),
+ 'Wantedtemplates' => array( 'ZelenePredloge' ),
+ 'Mostlinked' => array( 'NajboljPovezaneStrani' ),
+ 'Mostcategories' => array( 'NajvecKategorij' ),
+ 'Mostrevisions' => array( 'NajvecRedakcij' ),
+ 'Fewestrevisions' => array( 'NajmanjRedakcij' ),
+ 'Shortpages' => array( 'KratkeStrani' ),
+ 'Longpages' => array( 'DolgeStrani' ),
+ 'Newpages' => array( 'NoveStrani' ),
+ 'Ancientpages' => array( 'StarodavneStrani' ),
+ 'Protectedpages' => array( 'ZasciteneStrani' ),
+ 'Protectedtitles' => array( 'ZasciteniNaslovi' ),
+ 'Allpages' => array( 'VseStrani' ),
+ 'Specialpages' => array( 'PosebneStrani' ),
+ 'Contributions' => array( 'Prispevki' ),
+ 'Export' => array( 'Izvozi' ),
+ 'Version' => array( 'Verzija' ),
+ 'Mypage' => array( 'MojaStran' ),
+ 'Mytalk' => array( 'MojPogovor' ),
+ 'Search' => array( 'Iskanje' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#PREUSMERITEV', '#REDIRECT' ),
+ 'notoc' => array( '0', '__BREZKAZALAVSEBINE__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__BREZGALERIJE__', '__NOGALLERY__' ),
+ 'toc' => array( '0', '__POGLAVJE__', '__TOC__' ),
+ 'img_right' => array( '1', 'desno', 'right' ),
+ 'img_left' => array( '1', 'levo', 'left' ),
+ 'img_none' => array( '1', 'brez', 'none' ),
+ 'img_width' => array( '1', '$1pik', '$1px' ),
+ 'img_center' => array( '1', 'sredina', 'sredinsko', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'okvir', 'okvirjeno', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'brezokvirja', 'frameless' ),
+ 'img_page' => array( '1', 'stran=$1m stran $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'zgorajdesno', 'zgorajdesno=$1', 'zgorajdesno $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'obroba', 'border' ),
+ 'img_sub' => array( '1', 'pod', 'podpisano', 'sub' ),
+ 'img_super' => array( '1', 'nad', 'nadpisano', 'super', 'sup' ),
+ 'img_top' => array( '1', 'vrh', 'top' ),
+ 'img_text_top' => array( '1', 'vrh-besedila', 'text-top' ),
+ 'img_bottom' => array( '1', 'dno', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'dno-besedila', 'text-bottom' ),
+ 'sitename' => array( '1', 'IMESTRANI', 'SITENAME' ),
+ 'server' => array( '0', 'STREZNIK', 'SERVER' ),
+ 'grammar' => array( '0', 'SKLON:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'SPOL:', 'GENDER:' ),
+ 'plural' => array( '0', 'MNOZINA:', 'PLURAL:' ),
+ 'language' => array( '0', '#JEZIK:', '#LANGUAGE:' ),
+ 'tag' => array( '0', 'oznaka', 'tag' ),
+ 'hiddencat' => array( '1', '__SKRITAKATEGORIJA__', '__HIDDENCAT__' ),
+ 'index' => array( '1', '__KAZALO__', '__INDEX__' ),
+ 'noindex' => array( '1', '__BREZKAZALA__', '__NOINDEX__' ),
+ 'staticredirect' => array( '1', '__STATICNAPREUSMERITEV__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'STOPNJAZASCITE', 'PROTECTIONLEVEL' ),
);
$datePreferences = array(
@@ -115,6 +177,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pošlji e-pošto tudi za manjše spremembe strani',
'tog-enotifrevealaddr' => 'V sporočilih z obvestili o spremembah razkrij moj e-poštni naslov',
'tog-shownumberswatching' => 'Prikaži število uporabnikov, ki spremljajo temo',
+'tog-oldsig' => 'Predogled obstoječega podpisa:',
'tog-fancysig' => 'Obravnavaj podpis kot wikibesedilo (brez samodejne povezave)',
'tog-externaleditor' => 'Po privzetem uporabljaj zunanji urejevalnik',
'tog-externaldiff' => 'Po privzetem uporabljaj zunanje primerjanje',
@@ -136,6 +199,13 @@ $messages = array(
'underline-never' => 'Nikoli',
'underline-default' => 'Privzeto (brskalnik)',
+# Font style option in Special:Preferences
+'editfont-style' => 'Uredi področni slog pisave:',
+'editfont-default' => 'Privzeto po brskalniku',
+'editfont-monospace' => 'Pisava monospace',
+'editfont-sansserif' => 'Pisava sans-serif',
+'editfont-serif' => 'Pisava serif',
+
# Dates
'sunday' => 'nedelja',
'monday' => 'ponedeljek',
@@ -195,7 +265,7 @@ $messages = array(
'category-media-header' => 'Predstavnostno gradivo v kategoriji »$1«',
'category-empty' => "''Ta kategorija trenutno ne vsebuje člankov ali drugega gradiva.''",
'hidden-categories' => '{{PLURAL:$1|Skrita kategorija|Skriti kategoriji|Skrite kategorije}}',
-'hidden-category-category' => 'Skrite kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skrite kategorije',
'category-subcat-count' => 'Ta del kategorije ima $1 {{PLURAL:$1|naslednjo podkategorijo|naslednji podkategoriji|naslednje podkategorije|naslednjih podkategorij}}{{PLURAL:$2||, od skupno $2}}.',
'category-subcat-count-limited' => 'Ta kategorija ima {{PLURAL:$1|$1 naslednjo podkategorijo|$1 naslednji podkategoriji|$1 naslednje podkategorije|$1 naslednjih podkategorij}}.',
'category-article-count' => 'Ta del kategorije vsebuje $1 {{PLURAL:$1|naslednjo stran|naslednji strani|naslednje strani|naslednjih strani}}{{PLURAL:$2||, od skupno $2}}.',
@@ -203,15 +273,25 @@ $messages = array(
'category-file-count' => 'Ta kategorija vsebuje $1 {{PLURAL:$1|naslednjo datoteko|naslednji datoteki|naslednje datoteke|naslednjih datotek}}{{PLURAL:$2||, od skupno $2}}.',
'category-file-count-limited' => 'V tej kategoriji {{PLURAL:$1|je $1 naslednja datoteka|sta $1 naslednji datoteki|so $1 naslednje datoteke|je $1 naslednjih datotek}}.',
'listingcontinuesabbrev' => 'nadalj.',
+'index-category' => 'Indeksirane strani',
+'noindex-category' => 'Neindeksirane strani',
'mainpagetext' => "'''Programje MediaWiki je bilo uspešno nameščeno.'''",
'mainpagedocfooter' => 'Za uporabo in pomoč pri nastavitvi, prosimo, preglejte [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentacijo za prilagajanje vmesnika]
in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Uporabniški priročnik].',
-'about' => 'O projektu',
-'article' => 'Članek',
-'newwindow' => '(odpre se novo okno)',
-'cancel' => 'Prekliči',
+'about' => 'O projektu',
+'article' => 'Članek',
+'newwindow' => '(odpre se novo okno)',
+'cancel' => 'Prekliči',
+'moredotdotdot' => 'Več ...',
+'mypage' => 'Moja stran',
+'mytalk' => 'Pogovor',
+'anontalk' => 'Pogovorna stran IP',
+'navigation' => 'Navigacija',
+'and' => '&#32;in',
+
+# Cologne Blue skin
'qbfind' => 'Poišči',
'qbbrowse' => 'Prebrskaj',
'qbedit' => 'Uredi',
@@ -219,15 +299,35 @@ in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Uporabniški priroč
'qbpageinfo' => 'Podatki o strani',
'qbmyoptions' => 'Moje možnosti',
'qbspecialpages' => 'Posebne strani',
-'moredotdotdot' => 'Več ...',
-'mypage' => 'Moja stran',
-'mytalk' => 'Pogovor',
-'anontalk' => 'Pogovorna stran IP',
-'navigation' => 'Navigacija',
-'and' => '&#32;in',
-
-# Metadata in edit box
-'metadata_help' => 'Metapodatki:',
+'faq' => 'Najpogostejša vprašanja',
+'faqpage' => 'Project:Najpogostejša vprašanja',
+
+# Vector skin
+'vector-action-addsection' => 'Dodaj temo',
+'vector-action-delete' => 'Izbriši',
+'vector-action-move' => 'Premakni',
+'vector-action-protect' => 'Zaščiti',
+'vector-action-undelete' => 'Vrni',
+'vector-action-unprotect' => 'Odstrani zaščito',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Stran s pomočjo',
+'vector-namespace-image' => 'Datoteka',
+'vector-namespace-main' => 'Stran',
+'vector-namespace-media' => 'Multimedijska stran',
+'vector-namespace-mediawiki' => 'Sporočilo',
+'vector-namespace-project' => 'Projektna stran',
+'vector-namespace-special' => 'Posebna stran',
+'vector-namespace-talk' => 'Pogovor',
+'vector-namespace-template' => 'Predloga',
+'vector-namespace-user' => 'Uporabniška stran',
+'vector-view-create' => 'Ustvari',
+'vector-view-edit' => 'Uredi',
+'vector-view-history' => 'Zgodovina',
+'vector-view-view' => 'Preberi',
+'vector-view-viewsource' => 'Izvorno besedilo',
+'actions' => 'Dejanja',
+'namespaces' => 'Imenski prostori',
+'variants' => 'Različice',
'errorpagetitle' => 'Napaka',
'returnto' => 'Vrnitev na $1.',
@@ -277,18 +377,22 @@ in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Uporabniški priroč
'otherlanguages' => 'V drugih jezikih',
'redirectedfrom' => '(Preusmerjeno z $1)',
'redirectpagesub' => 'Preusmeritvena stran',
-'lastmodifiedat' => 'Čas zadnje spremembe: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Čas zadnje spremembe: $2, $1.',
'viewcount' => 'Stran je bila naložena {{PLURAL:$1|$1-krat}}.',
'protectedpage' => 'Zaščitena stran',
'jumpto' => 'Skoči na:',
'jumptonavigation' => 'navigacija',
'jumptosearch' => 'iskanje',
+'view-pool-error' => 'Žal so strežniki trenutno preobremenjeni.
+Preveč uporabnikov skuša obiskati to stran.
+Prosimo za potrpežljivost, obiščite nas spet kmalu.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O {{GRAMMAR:dajalnik|{{SITENAME}}}}',
'aboutpage' => 'Project:O {{GRAMMAR:dajalnik|{{SITENAME}}}}',
'copyright' => 'Besedilo je na razpolago pod pogoji $1.',
-'copyrightpagename' => 'Avtorske pravice {{GRAMMAR:rodilnik|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Avtorske pravice',
'currentevents' => 'Trenutni dogodki',
'currentevents-url' => 'Project:Trenutni dogodki',
@@ -296,8 +400,6 @@ in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Uporabniški priroč
'disclaimerpage' => 'Project:Splošno zanikanje odgovornosti',
'edithelp' => 'Pomoč pri urejanju',
'edithelppage' => 'Help:Urejanje',
-'faq' => 'Najpogostejša vprašanja',
-'faqpage' => 'Project:Najpogostejša vprašanja',
'helppage' => 'Help:Vsebina',
'mainpage' => 'Glavna stran',
'mainpage-description' => 'Glavna stran',
@@ -378,10 +480,6 @@ Zadnje iskanje v zbirki podatkov:
»$1«
iz funkcije »$2«.
Podatkovna zbirka je vrnila napako »$3: $4«.',
-'noconnect' => 'Oprostite! Wiki se sooča s tehničnimi težavami in se ne more povezati s podatkovnim serverjem.<br />
-$1',
-'nodb' => 'Zbirke podatkov $1 ne morem izbrati',
-'cachederror' => 'To je shranjen in morda neposodobljen prepis želene strani.',
'laggedslavemode' => "'''Opozorilo:''' Stran morda ne vsebuje najnovejših posodobitev.",
'readonly' => 'Zbirka podatkov je zaklenjena',
'enterlockreason' => 'Vnesite razlog za zaklenitev in oceno, kdaj bo urejanje spet mogoče',
@@ -399,6 +497,8 @@ Prosimo, da o tem obvestite [[Special:ListUsers/sysop|administratorja]] (ne poza
'readonly_lag' => 'Podatkovna zbirka se je samodejno zaklenila, dokler se podrejeni strežniki ne uskladijo z glavnim.',
'internalerror' => 'Notranja napaka',
'internalerror_info' => 'Notranja napaka: $1',
+'fileappenderrorread' => 'Ni bilo mogoče prebrati »$1« med pripenjanjem.',
+'fileappenderror' => 'Ne morem pripeti »$1« v »$2«.',
'filecopyerror' => 'Datoteke »$1« ni mogoče prepisati v »$2«.',
'filerenameerror' => 'Datoteke »$1« ni mogoče preimenovati v »$2«.',
'filedeleteerror' => 'Datoteke »$1« ni mogoče izbrisati.',
@@ -408,7 +508,8 @@ Prosimo, da o tem obvestite [[Special:ListUsers/sysop|administratorja]] (ne poza
'unexpected' => 'Nepričakovana vrednost: "$1"="$2".',
'formerror' => 'Napaka: obrazca ni mogoče predložiti',
'badarticleerror' => 'Na tej strani dejanja ne morem izvesti. Morda je bila stran med predložitvijo vaše zahteve že izbrisana.',
-'cannotdelete' => 'Navedene strani ali datoteke ni mogoče izbrisati. Morda jo je izbrisal že kdo drug.',
+'cannotdelete' => 'Strani ali datoteke »$1« ni mogoče izbrisati.
+Morda jo je izbrisal že kdo drug.',
'badtitle' => 'Nepravilen naslov',
'badtitletext' => 'Navedeni naslov strani je neveljaven, prazen, napačno povezan k drugim jezikom oziroma wikiprojektom ali pa vsebuje nepodprte znake.',
'perfcached' => 'Navedeni podatki so shranjeni v predpomnilniku in morda niso popolnoma posodobljeni.',
@@ -443,7 +544,6 @@ Podani razlog je bil »''$2''«.",
'virus-unknownscanner' => 'neznan antivirusni program:',
# Login and logout pages
-'logouttitle' => 'Odjava uporabnika',
'logouttext' => "'''Odjavili ste se.'''
{{GRAMMAR:tožilnik|{{SITENAME}}}} lahko zdaj uporabljate neprijavljeni ali pa se [[Special:UserLogin|ponovno prijavite]] kot enak ali drug uporabnik.
@@ -451,7 +551,6 @@ Morda bodo nekatere strani še naprej prikazane, kot da ste prijavljeni, dokler
'welcomecreation' => '== Dobrodošli, $1! ==
Ustvarili ste račun.
Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rodilnik|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Prijava uporabnika',
'yourname' => 'Uporabniško ime',
'yourpassword' => 'Geslo',
'yourpasswordagain' => 'Ponovno vpišite geslo',
@@ -462,6 +561,7 @@ Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rod
'nav-login-createaccount' => 'Prijavite se / registrirajte se',
'loginprompt' => 'Za prijavo v {{GRAMMAR:tožilnik|{{SITENAME}}}} morate imeti omogočene piškotke.',
'userlogin' => 'Prijavite se / registrirajte se',
+'userloginnocreate' => 'Prijava',
'logout' => 'Odjava',
'userlogout' => 'Odjava',
'notloggedin' => 'Niste prijavljeni',
@@ -474,30 +574,8 @@ Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rod
'badretype' => 'Gesli, ki ste ju vnesli, se ne ujemata.',
'userexists' => 'Uporabniško ime, ki ste ga vnesli, je že zasedeno.
Prosimo, izberite si drugo.',
-'youremail' => 'E-pošta:',
-'username' => 'Uporabniško ime:',
-'uid' => 'ID uporabnika:',
-'prefs-memberingroups' => 'Član {{PLURAL:$1|naslednje skupine|naslednjih skupin|naslednjih skupin|naslednjih skupin|naslednjih skupin}}:',
-'yourrealname' => 'Pravo ime:',
-'yourlanguage' => 'Jezik:',
-'yourvariant' => 'Različica:',
-'yournick' => 'Podpis:',
-'badsig' => 'Neveljaven surovi podpis; preverite oznake HTML.',
-'badsiglength' => 'Vaš podpis je preobsežen.
-Ne sme biti daljši od $1 {{PLURAL:$1|znaka|znakov}}.',
-'yourgender' => 'Spol:',
-'gender-unknown' => 'nedoločen',
-'gender-male' => 'moški',
-'gender-female' => 'ženski',
-'prefs-help-gender' => 'Podatek ni obvezen, uporablja pa se ga izključno za pravilno obliko naslavljanja programja glede na spol.
-Podatek bo javno prikazan.',
-'email' => 'E-pošta',
-'prefs-help-realname' => 'Pravo ime je neobvezno.
-Če se ga odločite navesti, bo uporabljeno za priznavanje vašega dela.',
'loginerror' => 'Napaka ob prijavi',
-'prefs-help-email' => 'E-poštni naslov ni obvezen, vendar vam omogoča, da vam v primeru pozabljenega gesla pošljemo novo.
-Poleg tega vpisan e-poštni naslov omogoča drugim, da vam lahko pošiljajo elektronsko pošto brez razkritja vaše identitete.',
-'prefs-help-email-required' => 'E-poštni naslov je obvezen.',
+'createaccounterror' => 'Ne morem ustvariti računa: $1',
'nocookiesnew' => 'Uporabniški račun je ustvarjen, vendar niste prijavljeni.
{{SITENAME}} za prijavo uporabnikov uporablja piškotke, ki pa so pri vas onemogočeni.
Prosimo, omogočite jih, nato pa se s svojim uporabniškim imenom in geslom ponovno prijavite.',
@@ -512,9 +590,11 @@ Preverite črkovanje ali pa si [[Special:UserLogin/signup|ustvarite nov uporabni
'nosuchusershort' => 'Uporabnik z imenom »<nowiki>$1</nowiki>« ne obstaja.
Preverite črkovanje.',
'nouserspecified' => 'Prosimo, vpišite uporabniško ime.',
+'login-userblocked' => 'Ta uporabnik je blokiran. Prijava ni dovoljena.',
'wrongpassword' => 'Vnesli ste napačno geslo. Prosimo, poskusite znova.',
'wrongpasswordempty' => 'Vpisali ste prazno geslo. Prosimo, poskusite znova.',
-'passwordtooshort' => 'Vaše geslo je prekratko. Imeti mora najmanj $1 {{PLURAL:$1|znak|znaka|znake|znakov|znakov}}.',
+'passwordtooshort' => 'Geslo mora imeti najmanj $1 {{PLURAL:$1|znak|znaka|znake|znakov|znakov}}.',
+'password-name-match' => 'Vaše geslo se mora razlikovati od vašega uporabniškega imena.',
'mailmypassword' => 'Pošlji mi novo geslo',
'passwordremindertitle' => 'Novo začasno geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}}',
'passwordremindertext' => 'Nekdo (verjetno vi, z IP-naslova $1) je zahteval novo
@@ -527,6 +607,7 @@ Vaše začasno geslo bo poteklo v {{PLURAL:$5|enem dnevu|$5 dneh}}.
in ga ne želite več spremeniti, lahko sporočilo prezrete in
se še naprej prijavljate s starim geslom.',
'noemail' => 'Elektronska pošta uporabnika »$1« ni zapisana.',
+'noemailcreate' => 'Vnesti morate veljaven e-poštni naslov',
'passwordsent' => 'Na naslov elektronske pošte, vpisanega za »$1«, smo poslali novo geslo.
Ko ga boste prejeli, se ponovno prijavite.',
'blocked-mailpassword' => 'Urejanje z vašega IP-naslova je blokirano. Da bi preprečili zlorabe, vam ni dovoljeno tudi uporabljati funkcije za povrnitev pozabljenega gesla.',
@@ -553,9 +634,11 @@ Prosimo, vpišite pravilno oblikovanega ali polje izpraznite.',
'createaccount-text' => 'Nekdo je ustvaril račun $2 na {{GRAMMAR:dajalnik|{{SITENAME}}}} ($4). Geslo za »$2« je »$3«. Priporočljivo je, da se prijavite in spremenite svoje geslo sedaj.
To sporočilo lahko prezrete, če je bil račun ustvarjen pomotoma.',
+'usernamehasherror' => "Uporabniško ime ne sme vsebovati ''hash'' znakov",
'login-throttled' => 'Nedavno ste izvedli preveč poskusov prijave.
Prosimo počakajte, preden poskusite znova.',
'loginlanguagelabel' => 'Jezik: $1',
+'suspicious-userlogout' => 'Vaša zahteva za odjavo je bila zavrnjena, saj kaže, da je bila poslana iz pokvarjenega brskalnika ali proxyja s predpomnilnikom.',
# Password reset dialog
'resetpass' => 'Spremeni geslo',
@@ -568,18 +651,13 @@ Za zaključitev prijave, morate tukaj nastaviti novo geslo:',
'retypenew' => 'Ponovno vpišite geslo:',
'resetpass_submit' => 'Nastavi geslo in se prijavi',
'resetpass_success' => 'Vaše geslo je bilo uspešno spremenjeno! Prijava poteka ...',
-'resetpass_bad_temporary' => 'Neveljavno začasno geslo.
-Geslo ste mogoče že uspešno spremenili ali pa ste zahtevali novo začasno geslo.',
'resetpass_forbidden' => 'Gesla ne morete spremeniti',
'resetpass-no-info' => 'Za neposreden dostop do te strani morate biti prijavljeni.',
'resetpass-submit-loggedin' => 'Spremenite geslo',
+'resetpass-submit-cancel' => 'Prekliči',
'resetpass-wrong-oldpass' => 'Neveljavno začano ali trenutno geslo.
Morda ste že uspešno spremenili geslo ali pa ste zahtevali novo začasno geslo.',
'resetpass-temp-password' => 'Začasno geslo:',
-'resetpass-log' => 'Dnevnik spreminjanj gesel',
-'resetpass-logtext' => 'Spodaj se nahaja dnevnik uporabnikov, katerih geslo je administrator ponastavil.',
-'resetpass-logentry' => 'geslo za $1 je spremenjeno',
-'resetpass-comment' => 'Razlog za ponastavitev gesla:',
# Edit page toolbar
'bold_sample' => 'Krepko besedilo',
@@ -654,7 +732,6 @@ Vaš trenutni IP-naslov je $3, ID blokiranja pa #$5. Prosimo, vključite ta ID v
'blockededitsource' => "Besedilo '''vaših urejanj''' v '''$1''' je prikazano spodaj:",
'whitelistedittitle' => 'Za urejanje se morate prijaviti',
'whitelistedittext' => 'Za urejanje strani se morate $1.',
-'confirmedittitle' => 'Za urejanje je potrebna e-poštna potrditev',
'confirmedittext' => 'Pred urejanjem strani morate potrditi svoj e-poštni naslov.
Prosimo, da ga z uporabo [[Special:Preferences|uporabniških nastavitev]] vpišete in potrdite.',
'nosuchsectiontitle' => 'Ne najdem razdelka',
@@ -677,10 +754,16 @@ Zaradi tega moramo uporabiti IP-naslov za njegovo/njeno ugotavljanje istovetnost
Takšen IP naslov si lahko deli več uporabnikov.
Če ste nepodpisan uporabnik in če menite, da so nepomembne pripombe namenjene vam, prosimo [[Special:UserLogin|ustvarite račun]] ali pa se [[Special:UserLogin/signup|vpišite]], da preprečite zmedo z drugimi nepodpisanimi uporabniki.''",
'noarticletext' => 'Na tej strani ni trenutno nobenega besedila. Naslov strani lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati]] na drugih straneh, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} v dnevniških zapisih] ali pa [{{fullurl:{{FULLPAGENAME}}|action=edit}} stran uredite]</span>.',
+'noarticletext-nopermission' => 'Na tej strani ni trenutno nobenega besedila.
+Lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati naslov te strani]] v drugih straneh, ali <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} poiskati v povezanih dnevniških zapisih]</span>.',
'userpage-userdoesnotexist' => 'Uporabniški račun »$1« ni registriran.
Prosimo preverite, ali res želite ustvariti/urediti to stran.',
+'userpage-userdoesnotexist-view' => 'Uporabniški račun »$1« ni registriran.',
+'blocked-notice-logextract' => 'Ta uporabnik je trenutno blokiran.
+Najnovejši vnos v dnevniku blokad je prikazan spodaj:',
'clearyourcache' => "'''Opomba:''' Da bodo spremembe prišle do veljave, po shranitvi izpraznite predpomnilnik svojega brskalnika: '''Mozilla/Safari:''' držite ''Shift'' in kliknite ''Reload'' (ali pritisnite ''Ctrl-Shift-R''), '''Internet Explorer:''' ''Ctrl-F5'', '''Opera/Konqueror:''' ''F5''.",
-'usercssjsyoucanpreview' => "'''Nasvet:''' Za preizkušanje svojega novega CSS/JS pred shranjevanjem uporabite gumb ''Prikaži predogled''.",
+'usercssyoucanpreview' => "'''Nasvet:''' Za preizkušanje svojega novega CSS pred shranjevanjem uporabite gumb »{{int:showpreview}}«.",
+'userjsyoucanpreview' => "'''Nasvet:''' Za preizkušanje svojega novega JavaScripta pred shranjevanjem uporabite gumb »{{int:showpreview}}«.",
'usercsspreview' => "'''Svoj uporabniški CSS le predogledujete.'''
'''Ni še bil shranjen!'''",
'userjspreview' => "'''Ne pozabite, da svoj uporabniški JavaScript le preizkušate/predogledujete.'''
@@ -734,13 +817,16 @@ Zato ga ni mogoče shraniti.",
'readonlywarning' => "'''Opozorilo: Zbirka podatkov je zaradi vzdrževanja začasno zaklenjena, kar pomeni, da sprememb trenutno ne morete shraniti. Prosimo, prenesite besedilo v urejevalnik in ga dodajte pozneje.'''
Sistemski skrbnik, ki jo je zaklenil, je podal naslednjo razlago: $1",
-'protectedpagewarning' => "'''OPOMBA:''' Stran je zaklenjena in jo lahko urejajo le sodelavci z vzdrževalnimi pravicami. Pri urejanju sledite [[Project:Smernice_zaščitenih_strani|smernicam zaščitenih strani]].",
-'semiprotectedpagewarning' => "'''Opomba:''' Stran je [[Project:Delna zaščita|zaščitena]] in jo lahko urejajo le uveljavljeni uporabniki.",
+'protectedpagewarning' => "'''Opozorilo: Stran je bila zaklenjena in jo lahko urejajo le uporabniki z administratorskimi pravicami.'''
+Zadnji vnos v dnevnik je naveden spodaj:",
+'semiprotectedpagewarning' => "'''Opomba:''' Stran je bila zaklenjena in jo lahko urejajo le registrirani uporabniki.
+Zadnji vnos v dnevnik je naveden spodaj:",
'cascadeprotectedwarning' => "'''Opozorilo:''' Ta stran je zaklenjena, tako da jo lahko urejajo le administratorji, saj je bila vključena med {{PLURAL:$1|sledečo stran|sledeči strani|sledeče strani}} s kaskadno zaščito:",
-'titleprotectedwarning' => "'''Opozorilo: Ta stran je bila zaklenjena, tako da so potrebne [[Special:ListGroupRights|posebne pravice]], da jo ustvarite.'''",
-'templatesused' => 'Na strani uporabljene predloge:',
-'templatesusedpreview' => 'Predloge, uporabljene v tem predogledu:',
-'templatesusedsection' => 'Predloge, uporabljene v tem delu:',
+'titleprotectedwarning' => "'''Opozorilo: Stran je bila zaklenjena in jo lahko urejajo le uporabniki s [[Special:ListGroupRights|specifičnimi pravicami]].'''
+Za sklic je priskrbljen spodnji dnevnik vnosov:",
+'templatesused' => '{{PLURAL:$1|Predloga, uporabljena|Predlogi, uporabljeni|Predloge, uporabljene}} na strani:',
+'templatesusedpreview' => '{{PLURAL:$1|Predloga, uporabljena|Predlogi, uporabljeni|Predloge, uporabljene}} v predogledu:',
+'templatesusedsection' => '{{PLURAL:$1|Predloga, uporabljena|Predlogi, uporabljeni|Predloge, uporabljene}} v tem delu:',
'template-protected' => '(zaščitena)',
'template-semiprotected' => '(delno zaščitena)',
'hiddencategories' => 'Ta stran je v vsebovana v {{PLURAL:$1|1 skriti kategoriji|$1 skritih kategorijah}}:',
@@ -749,16 +835,18 @@ Sistemski skrbnik, ki jo je zaklenil, je podal naslednjo razlago: $1",
'nocreatetext' => '{{SITENAME}} ima omejeno zmožnost za ustvarjanje novih strani.
Lahko se vrnete nazaj in urejate že obstoječe strani, ali pa se [[Special:UserLogin|prijavite ali ustvarite račun]].',
'nocreate-loggedin' => 'Nimate pravic, da bi ustvarjali nove strani.',
+'sectioneditnotsupported-title' => 'Urejanje razdelkov ni podprto',
+'sectioneditnotsupported-text' => 'Urejanje razdelkov ni podprto na tej strani.',
'permissionserrors' => 'Napake dovoljenj',
'permissionserrorstext' => 'Za izvedbo tega nimate dovoljenja zaradi {{PLURAL:$1|naslednjega razloga|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov}}:',
'permissionserrorstext-withaction' => 'Nimate dovoljenja za $2, zaradi {{PLURAL:$1|naslednjega razloga|naslednjih $1 razlogov|naslednjih $1 razlogov|naslednjih $1 razlogov}}:',
-'recreate-deleted-warn' => "'''Opozorilo: Pišete stran, ki je bila nekoč že izbrisana.'''
+'recreate-moveddeleted-warn' => "'''Opozorilo: Pišete stran, ki je bila nekoč že izbrisana.'''
Premislite preden nadaljujete s pisanjem, morda bo stran zaradi istih razlogov ponovno odstranjena.
-Spodaj je prikazan dnevnik brisanja z razlogi za brisanje:",
-'deleted-notice' => 'Ta stran je bila izbrisana.
-Dnevnik brianja za to stran, je naveden v nadaljevanju za referenco.',
-'deletelog-fulllog' => 'Ogled celotnega dnevnika',
+Spodaj je prikazan dnevnik brisanja in prestavljanja:",
+'moveddeleted-notice' => 'Ta stran je bila izbrisana.
+Dnevnik brisanja in prestavljanja strani je na voljo spodaj.',
+'log-fulllog' => 'Ogled celotnih dnevniških zapiskov',
'edit-hook-aborted' => 'Urejanje je bilo brez obrazložitve prekinjeno zaradi neznane napake.',
'edit-gone-missing' => 'Strani ni mogoče posodobiti.
Izgleda, da je bila izbrisana.',
@@ -779,6 +867,7 @@ Naslednji argumenti so bili izpuščeni.",
'post-expand-template-argument-category' => 'Strani z izpuščenimi argumenti predloge',
'parser-template-loop-warning' => 'V predlogi je bila odkrita zanka: [[$1]]',
'parser-template-recursion-depth-warning' => 'Prekoračena globina rekurzije predlog ($1)',
+'language-converter-depth-warning' => 'Prekoračena globina pretvorbe jezikov ($1)',
# "Undo" feature
'undo-success' => 'Urejanje ste razveljavili. Prosim, potrdite in nato shranite spodnje spremembe.',
@@ -798,7 +887,7 @@ Razlog, ki ga je podal $3, je ''$2''.",
'currentrev' => 'Trenutna redakcija',
'currentrev-asof' => 'Trenutna redakcija s časom $1',
'revisionasof' => 'Redakcija: $1',
-'revision-info' => 'Redakcija iz $1 od $2', # Additionally available: $3: revision id
+'revision-info' => 'Redakcija iz $1 od $2',
'previousrevision' => '← Starejša redakcija',
'nextrevision' => 'Novejša redakcija →',
'currentrevisionlink' => 'poglejte trenutno redakcijo',
@@ -810,7 +899,7 @@ Razlog, ki ga je podal $3, je ''$2''.",
'histlegend' => "Izbira primerjave: označite okroglo polje ob redakciji za primerjavo in stisnite enter ali gumb na dnu strani.<br />
Legenda: '''({{int:cur}})''' = primerjava s trenutno redakcijo, '''({{int:last}})''' = primerjava s prejšnjo redakcijo, '''{{int:minoreditletter}}''' = manjše urejanje.",
'history-fieldset-title' => 'Zgodovina poizvedovanj',
-'deletedrev' => '[izbrisano]',
+'history-show-deleted' => 'Samo izbrisani',
'histfirst' => 'Najstarejše',
'histlast' => 'Najnovejše',
'historysize' => '({{PLURAL:$1|$1 zlog|$1 zloga|$1 zlogi|$1 zlogov}})',
@@ -819,71 +908,114 @@ Legenda: '''({{int:cur}})''' = primerjava s trenutno redakcijo, '''({{int:last}}
# Revision feed
'history-feed-title' => 'Zgodovina strani',
'history-feed-description' => 'Zgodovina navedene strani {{GRAMMAR:rodilnik|{{SITENAME}}}}',
-'history-feed-item-nocomment' => '$1 ob $2', # user at time
+'history-feed-item-nocomment' => '$1 ob $2',
'history-feed-empty' => 'Zahtevana stran ne obstaja.
Morda je bila izbrisana iz wikija ali pa jo je kdo preimenoval.
Prosimo, poskusite [[Special:Search|poiskati v wikiju]] ustrezajoče nove strani.',
# Revision deletion
-'rev-deleted-comment' => '(pripomba je bila odstranjena)',
-'rev-deleted-user' => '(uporabniško ime je bilo odstranjeno)',
-'rev-deleted-event' => '(dnevniški vnos je odstranjen)',
-'rev-deleted-text-permission' => 'Prikazana redakcija je bila iz javnih arhivov odstranjena.
-Podrobnosti so morda na razpolago v [{{fullurl:Special:Log/delete|page=Rev-deleted-text-permission dnevniku brisanja}}].',
-'rev-deleted-text-view' => 'Prikazana redakacija strani je bila iz javnih arhivov odstranjena. Ogledate si jo lahko, ker ste administrator spletišča. Podrobnosti so morda navedene v [{{fullurl:Special:Log/delete|page=Rev-deleted-text-view dnevniku brisanja}}].',
-'rev-deleted-no-diff' => "Ne morete si ogledati te primerjave, ker je bila ena izmed redakcij '''izbrisana'''.
-Morda so podrobnosti v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
-'rev-deleted-unhide-diff' => "Ena od redakcij v tej primerjavi je bila '''izbrisana'''.
-Morda so podrobnosti v [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].
-Kot administrator si še vedno lahko [$1 gledate to primerjavo], če želite nadaljevati.",
-'rev-delundel' => 'pokaži/skrij',
-'revisiondelete' => 'Izbriši/obnovi redakcije',
-'revdelete-nooldid-title' => 'Napačna ciljna redakcija',
-'revdelete-nooldid-text' => 'Bodisi niste navedli ciljne spremembe, navedena sprememba ne obstaja, ali pa poskušate skriti trenutno spremembo.',
-'revdelete-nologtype-title' => 'Tip dnevnik ni podan',
-'revdelete-nologtype-text' => 'Niste navedli vrste dnevnika za prikaz.',
-'revdelete-toomanytargets-title' => 'Preveč ciljev',
-'revdelete-toomanytargets-text' => 'Določili ste preveč vrst ciljev za izvajanje tega dejanja.',
-'revdelete-nologid-title' => 'Neveljaven dnevniški vnos',
-'revdelete-nologid-text' => 'Bodisi niste navedli ciljnega dnevniškega dogodka za izvedbo funkcije, ali pa naveden vnos ne obstaja.',
-'revdelete-selected' => "'''{{PLURAL:$2|Izbrana redakcija|Izbrani redakciji|Izbrane redakcije}} strani [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Izbran dnevniški dogodek|Izbrana dnevniška dogodka|Izbrani dnevniški dogodki}}:'''",
-'revdelete-text' => "'''Izbrisane redakcije bodo v zgodovini strani še vedno navedene, vendar bo njihova vsebina za javnost nedostopna.'''
-
-Do skrite vsebine bodo še vedno lahko dostopali drugi administratorji {{GRAMMAR:rodilnik|{{SITENAME}}}} in jo z uporabo istega vmesnika tudi obnovili, razen kjer bodo operaterji spletišča uveljavili dodatne omejitve.
-
-Prosimo, potrdite, da ste s tem seznanjeni, da razumete posledice dejanja in da to počnete v skladu s [[{{MediaWiki:Policy-url}}|pravili]].",
-'revdelete-suppress-text' => "Zadrževanje naj bi bilo uporabljeno '''le''' v sledečih primerih:
+'rev-deleted-comment' => '(pripomba je bila odstranjena)',
+'rev-deleted-user' => '(uporabniško ime je bilo odstranjeno)',
+'rev-deleted-event' => '(dnevniški vnos je odstranjen)',
+'rev-deleted-user-contribs' => '[uporabniško ime ali IP naslov odstranjeni - urajenje skrito v prispevkih]',
+'rev-deleted-text-permission' => "Prikazana redakcija je bila '''izbrisana'''.
+Podrobnosti so na razpolago v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
+'rev-deleted-text-unhide' => "Ta sprememba je bila '''izbrisana'''.
+Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].
+Kot administrator lahko še vedno [$1 pogledate to redakcijo], če želite nadaljevati.",
+'rev-suppressed-text-unhide' => "Ta sprememba je bila '''zavrnjena'''.
+Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} dnevniku zavračanj].
+Kot administrator lahko še vedno [$1 pogledate to redakcijo], če želite nadaljevati.",
+'rev-deleted-text-view' => 'Prikazana redakacija strani je bila iz javnih arhivov odstranjena. Ogledate si jo lahko, ker ste administrator. Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].',
+'rev-suppressed-text-view' => "Ta sprememba je bila '''zavrnjena'''.
+Kot administrator lahko jo vidite; podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} dnevniku zavračanj].",
+'rev-deleted-no-diff' => "Povzetka sprememb ne morete videti, ker je bil eden od popravkov '''izbrisan'''.
+Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
+'rev-suppressed-no-diff' => "Ogled redakcije ni mogoč, ker je bila ena od sprememb '''izbrisana'''.",
+'rev-deleted-unhide-diff' => "Ena od sprememb v tej redakciji je bila '''izbrisana'''.
+Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].
+Kot administrator lahko še vedno [$1 pogledate to redakcijo], če želite nadaljevati.",
+'rev-suppressed-unhide-diff' => "Ena od sprememb v tej redakciji je bila '''zadržana'''.
+Podrobnosti so morda navedene v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} dnevniku zadržkov].
+Kot administrator lahko še vedno [$1 pogledate to redakcijo], če želite nadaljevati.",
+'rev-deleted-diff-view' => "Ena od sprememb v tej redakciji je bila '''izbrisana'''.
+Kot administrator si to redakcijo lahko ogledate; podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
+'rev-suppressed-diff-view' => "Ena od sprememb v tej redakciji je bila '''zadržana'''.
+Kot administrator si to redakcijo lahko ogledate; podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} dnevniku zadržkov].",
+'rev-delundel' => 'pokaži/skrij',
+'rev-showdeleted' => 'prikaži',
+'revisiondelete' => 'Izbriši/obnovi redakcije',
+'revdelete-nooldid-title' => 'Napačna ciljna redakcija',
+'revdelete-nooldid-text' => 'Bodisi niste navedli ciljne spremembe, navedena sprememba ne obstaja, ali pa poskušate skriti trenutno spremembo.',
+'revdelete-nologtype-title' => 'Tip dnevnik ni podan',
+'revdelete-nologtype-text' => 'Niste navedli vrste dnevnika za prikaz.',
+'revdelete-nologid-title' => 'Neveljaven dnevniški vnos',
+'revdelete-nologid-text' => 'Bodisi niste navedli ciljnega dnevniškega dogodka za izvedbo funkcije, ali pa naveden vnos ne obstaja.',
+'revdelete-no-file' => 'Navedena datoteka ne obstaja.',
+'revdelete-show-file-confirm' => 'Ali ste prepričani da si želite ogledati izbrisano verzijo datoteke "<nowiki>$1</nowiki>" od $2 ob $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Izbrana redakcija|Izbrani redakciji|Izbrane redakcije}} strani [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izbran dnevniški dogodek|Izbrana dnevniška dogodka|Izbrani dnevniški dogodki}}:'''",
+'revdelete-text' => "'''Izbrisane redakcije in dogodki bodo v zgodovini strani in dnevniki še vedno navedene, vendar bo njihova vsebina za javnost nedostopna.'''
+Do skrite vsebine bodo še vedno lahko dostopali drugi administratorji {{GRAMMAR:rodilnik|{{SITENAME}}}} in jo z uporabo istega vmesnika tudi obnovili, razen kjer bodo uveljavljene dodatne omejitve.",
+'revdelete-confirm' => 'Prosim potrdite da nameravate to storiti, da se zavedate posledic in da to počnete v skladu s [[{{MediaWiki:Policy-url}}|politiko]].',
+'revdelete-suppress-text' => "Zadrževanje naj bi bilo uporabljeno '''le''' v sledečih primerih:
* Potencialni klevetniški podatki
* Neprimerni osebni podatki
*: ''domači naslovi in telefonske številke, številke socialnega zavarovanja, etc.''",
-'revdelete-legend' => 'Nastavi omejitve vidnosti',
-'revdelete-hide-text' => 'Skrij besedilo redakcije',
-'revdelete-hide-name' => 'Skrij dejanje in cilj',
-'revdelete-hide-comment' => 'Skrij povzetek urejanja',
-'revdelete-hide-user' => 'Skrij uporabniško ime/IP-naslov urejevalca',
-'revdelete-hide-restricted' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
-'revdelete-suppress' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
-'revdelete-hide-image' => 'Skrij vsebino datoteke.',
-'revdelete-unsuppress' => 'Odpraviti omejitve na obnovljenih redakcijah.',
-'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Uporabi za izbrano redakcijo',
-'revdelete-logentry' => 'sprememba vidnosti redakcij strani [[$1]]',
-'logdelete-logentry' => 'je spremenil vidnost dogodka [[$1]]',
-'revdelete-success' => "'''Vidnost redakcije je bila uspešno nastavljena.'''",
-'logdelete-success' => "'''Vidnost dnevnika je bila uspešno nastavljena.'''",
-'revdel-restore' => 'Spremeni vidnost',
-'pagehist' => 'Zgodovina strani',
-'deletedhist' => 'Zgodovina brisanja',
-'revdelete-content' => 'vsebino',
-'revdelete-summary' => 'povzetek urejanja',
-'revdelete-uname' => 'uporabniško ime',
-'revdelete-restricted' => 'uveljavljene omejitve administratorjev',
-'revdelete-unrestricted' => 'odstranjene omejitve administratorjev',
-'revdelete-hid' => 'skril $1',
-'revdelete-unhid' => 'prikazal $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|redakcijo|redakciji|redakcije|redakcij}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|dogodek|dogodka|dogodke|dogodkov}}',
+'revdelete-legend' => 'Nastavi omejitve vidnosti',
+'revdelete-hide-text' => 'Skrij besedilo redakcije',
+'revdelete-hide-image' => 'Skrij vsebino datoteke.',
+'revdelete-hide-name' => 'Skrij dejanje in cilj',
+'revdelete-hide-comment' => 'Skrij povzetek urejanja',
+'revdelete-hide-user' => 'Skrij uporabniško ime/IP-naslov urejevalca',
+'revdelete-hide-restricted' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
+'revdelete-radio-same' => '(ne spremeni)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Zadrži podatke od administratorjev kakor tudi od ostalih',
+'revdelete-unsuppress' => 'Odpraviti omejitve na obnovljenih redakcijah.',
+'revdelete-log' => 'Razlog:',
+'revdelete-submit' => 'Uporabi za {{PLURAL:$1|izbrano redakcijo|izbrani redakciji|izbrane redakcije}}',
+'revdelete-logentry' => 'sprememba vidnosti redakcij strani [[$1]]',
+'logdelete-logentry' => 'je spremenil vidnost dogodka [[$1]]',
+'revdelete-success' => "'''Vidnost redakcije je bila uspešno nastavljena.'''",
+'revdelete-failure' => "'''Vidnost redakcije ni bilo mogoče nastaviti:'''
+$1",
+'logdelete-success' => "'''Vidnost dnevnika je bila uspešno nastavljena.'''",
+'logdelete-failure' => "'''Vidnost dnevnika ne more biti nastavljena!:'''
+$1",
+'revdel-restore' => 'Spremeni vidnost',
+'pagehist' => 'Zgodovina strani',
+'deletedhist' => 'Zgodovina brisanja',
+'revdelete-content' => 'vsebino',
+'revdelete-summary' => 'povzetek urejanja',
+'revdelete-uname' => 'uporabniško ime',
+'revdelete-restricted' => 'uveljavljene omejitve administratorjev',
+'revdelete-unrestricted' => 'odstranjene omejitve administratorjev',
+'revdelete-hid' => 'skril $1',
+'revdelete-unhid' => 'prikazal $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|redakcijo|redakciji|redakcije|redakcij}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|dogodek|dogodka|dogodke|dogodkov}}',
+'revdelete-hide-current' => 'Napaka pri skrivanju predmeta z dne $1, $2: gre za trenutno redakcijo.
+Te ni mogoče skriti.',
+'revdelete-show-no-access' => 'Napaka pri prikazovanju predmeta z dne $1, $2: predmet je bil označen kot »omejen«.
+Nimate dostopa do njega.',
+'revdelete-modify-no-access' => 'Napaka pri spreminjanju predmeta z dne $1, $2: predmet je bil označen kot »omejen«.
+Nimate dostopa do njega.',
+'revdelete-modify-missing' => 'Napaka pri spreminjanju predmeta ID $1: manjka v podatkovni bazi!',
+'revdelete-no-change' => "'''Opozorilo:''' predmet z dne $1 ob $2 že ima zahtevane nastavitve vidljivosti.",
+'revdelete-concurrent-change' => 'Napaka pri spreminjanju predmeta z dne $1, $2: medtem ko ste nameravali spremeniti njegovo stanje, ga je spremenil že nekdo drug.
+Prosimo, preverite dnevnik.',
+'revdelete-only-restricted' => 'Napaka pri skrivanju predmeta z dne $1, $2: ne morete spremeniti vidnosti predmeta pred administratorji brez izbire ene od drugih možnosti vidnosti.',
+'revdelete-reason-dropdown' => '* Pogosti razlogi za izbris
+** Kršitev avtorskih pravic
+** Neprimerni osebni podatki
+** Morebitni žaljivi podatki',
+'revdelete-otherreason' => 'Drug/dodaten razlog:',
+'revdelete-reasonotherlist' => 'Drug razlog',
+'revdelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'revdelete-offender' => 'Avtor redakcije:',
# Suppression log
'suppressionlog' => 'Dnevnik vračanj',
@@ -922,68 +1054,13 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'mergelogpagetext' => 'Prikazan je seznam nedavnih združevanj zgodovin strani.',
# Diffs
-'history-title' => 'Zgodovina strani »$1«',
-'difference' => '(Primerjava redakcij)',
-'lineno' => 'Vrstica $1:',
-'compareselectedversions' => 'Primerjaj izbrani redakciji',
-'visualcomparison' => 'Vizualna primerjava',
-'wikicodecomparison' => 'Primerjava wiki-sintakse',
-'editundo' => 'razveljavi',
-'diff-multi' => '({{PLURAL:$1|$1 vmesna redakcija ni prikazana|$1 vmesni redakciji nista prikazani|$1 vmesne redakcije niso prikazane|$1 vmesnih redakcij ni prikazanih}})',
-'diff-movedto' => 'prestavljeno na $1',
-'diff-styleadded' => '$1 stil dodan',
-'diff-added' => '$1 dodan',
-'diff-changedto' => 'spremenjen v $1',
-'diff-movedoutof' => 'premaknjeno iz $1',
-'diff-styleremoved' => '$1 stil odstranjen',
-'diff-removed' => '$1 odstranjen',
-'diff-changedfrom' => 'spremenjeno iz $1',
-'diff-src' => 'vir',
-'diff-withdestination' => 's ciljem $1',
-'diff-with' => '&#32;z $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;in $1 $2',
-'diff-width' => 'širina',
-'diff-height' => 'višina',
-'diff-p' => "'''odstavek'''",
-'diff-blockquote' => "'''navedek'''",
-'diff-h1' => "'''naslov (raven 1)'''",
-'diff-h2' => "'''naslov (raven 2)'''",
-'diff-h3' => "'''naslov (raven 3)'''",
-'diff-h4' => "'''naslov (raven 4)'''",
-'diff-h5' => "'''naslov (raven 5)'''",
-'diff-pre' => "'''predoblikovano polje'''",
-'diff-div' => "'''razdelek'''",
-'diff-ul' => "'''neurejen seznam'''",
-'diff-ol' => "'''urejen seznam'''",
-'diff-li' => "'''vnos v seznamu'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''vsebina tabele'''",
-'diff-tr' => "'''vrstica'''",
-'diff-td' => "'''celica'''",
-'diff-th' => "'''glava'''",
-'diff-br' => "'''prelom'''",
-'diff-hr' => "'''vodoravno pravilo'''",
-'diff-code' => "'''blok računalniške kode'''",
-'diff-dl' => "'''opredelitev seznama'''",
-'diff-dt' => "'''opredelitev izraza'''",
-'diff-dd' => "'''definicija'''",
-'diff-input' => "'''vnos'''",
-'diff-form' => "'''polje'''",
-'diff-img' => "'''slika'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''povezava'''",
-'diff-i' => "'''ležeče'''",
-'diff-b' => "'''krepko'''",
-'diff-strong' => "'''strong'''",
-'diff-em' => "'''poudarek'''",
-'diff-font' => "'''pisava'''",
-'diff-big' => "'''velik'''",
-'diff-del' => "'''izbrisano'''",
-'diff-tt' => "'''fiksna širina'''",
-'diff-sub' => "'''podpisano'''",
-'diff-sup' => "'''nadpisano'''",
-'diff-strike' => "'''prečrtano'''",
+'history-title' => 'Zgodovina strani »$1«',
+'difference' => '(Primerjava redakcij)',
+'lineno' => 'Vrstica $1:',
+'compareselectedversions' => 'Primerjaj izbrani redakciji',
+'showhideselectedversions' => 'Prikaži/skrij izbrane redakcije',
+'editundo' => 'razveljavi',
+'diff-multi' => '({{PLURAL:$1|$1 vmesna redakcija ni prikazana|$1 vmesni redakciji nista prikazani|$1 vmesne redakcije niso prikazane|$1 vmesnih redakcij ni prikazanih}})',
# Search results
'searchresults' => 'Izid iskanja',
@@ -991,8 +1068,6 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'searchresulttext' => 'Za več informacij o iskanju v {{GRAMMAR:dajalnik|{{SITENAME}}}} si oglejte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Za povpraševanje »'''[[:$1]]'''« ([[Special:Prefixindex/$1|vse strani začenši z »$1«]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vse strani, ki se povezujejo na »$1«]])",
'searchsubtitleinvalid' => "Iskali ste '''$1'''",
-'noexactmatch' => "'''Stran z naslovom ''$1'' ne obstaja.''' Lahko [[:$1|jo ustvarite]].",
-'noexactmatch-nocreate' => "'''Stran z naslovom »$1« ne obstaja.'''",
'toomanymatches' => 'Vrnjenih je bilo preveč zadetkov, poskusite z drugačno poizvedbo',
'titlematches' => 'Ujemanje z naslovom članka',
'notitlematches' => 'Iskanih besed ne vsebuje noben naslov članka',
@@ -1003,16 +1078,15 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'prevn-title' => '{{PLURAL:$1|Prejšnji rezultat|Prejšnja $1 rezultata|Prejšnji $1 rezultati|Prejšnjih $1 rezultatov}}',
'nextn-title' => '{{PLURAL:$1|Naslednji rezultat|Naslednja $1 rezultata|Naslednji $1 rezultati|Naslednjih $1 rezultatov}}',
'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}} na stran',
-'viewprevnext' => 'Prikazujem ($1) ($2) ($3).',
+'viewprevnext' => 'Prikazujem ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Možnosti za iskanje',
'searchmenu-exists' => "'''Na tem wikiju obstaja stran »[[:$1]]«'''",
'searchmenu-new' => "'''Ustvari stran »[[:$1]]« na tem wikiju!'''",
'searchhelp-url' => 'Help:Vsebina',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Iskanje strani s to predpono]]',
'searchprofile-articles' => 'Članki',
-'searchprofile-articles-and-proj' => 'Članki in projekte strani',
-'searchprofile-project' => 'Projektna stran',
-'searchprofile-images' => 'Datoteke',
+'searchprofile-project' => 'Pomoč in projektne strani',
+'searchprofile-images' => 'Večpredstavnost',
'searchprofile-everything' => 'Vse',
'searchprofile-advanced' => 'Napredni pogled',
'searchprofile-articles-tooltip' => 'Išči v $1',
@@ -1020,8 +1094,6 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'searchprofile-images-tooltip' => 'Išči datoteke',
'searchprofile-everything-tooltip' => 'Išči po vsej vsebini (vključno s pogovornimi stranmi)',
'searchprofile-advanced-tooltip' => 'Iskanje v imenskih prostorih po meri',
-'prefs-search-nsdefault' => 'Iskanje z uporabo privzetih nastavitev:',
-'prefs-search-nscustom' => 'Išči po naslednjih imenskih prostorih:',
'search-result-size' => '$1 ({{PLURAL:$2|1 beseda|2 besedi|$2 besede|$2 besed|$2 besed}})',
'search-result-score' => 'Ustreznost: $1%',
'search-redirect' => '(preusmeritev $1)',
@@ -1034,11 +1106,12 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'search-mwsuggest-disabled' => 'brez predlogov',
'search-relatedarticle' => 'Podobno',
'mwsuggest-disable' => 'Onemogoči predloge Ajax',
+'searcheverything-enable' => 'Iskanje po vseh imenskih prostorih',
'searchrelated' => 'povezano',
'searchall' => 'vse',
'showingresults' => "Prikazujem do '''$1''' {{PLURAL:$1|zadetek|zadetka|zadetke|zadetkov}}, začenši s št. '''$2'''.",
'showingresultsnum' => "Prikazujem '''$3''' {{PLURAL:$3|zadetek|zadetka|zadetke|zadetkov|zadetkov}}, začenši s št. '''$2'''.",
-'showingresultstotal' => "Prikazujem {{PLURAL:$4|'''$1''' rezultat iskanja od skupno '''$3'''|rezultate iskanja '''$1 - $2''' od skupno '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Zadetek '''$1''' od '''$3'''|Zadetki '''$1 - $2''' od skupno '''$3'''}} za povpraševanje '''$4'''",
'nonefound' => "'''Opomba''': neuspešna poizvedovanja so pogosta ob iskanju vsakdanjih besed, na primer ''imeti'' in ''iz'', ki jih ni na seznamu. Ker gre za zelo pogoste besede, boste skoraj zagotovo iskali uspešneje z zožitvijo tematskega področja. Poskusiti dodati predpono ''all:'' in tako iskati po celotni vsebini (vključno z pogovornimi stranmi, predlogami, itd.) ali pa za predpono uporabite določen imenski prostor.",
'search-nonefound' => 'Ni bilo zadetkov, ki ustrezajo poizvedbi.',
'powersearch' => 'Napredno iskanje',
@@ -1046,115 +1119,155 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
'powersearch-ns' => 'Iskanje v imenskih prostorih:',
'powersearch-redir' => 'Seznam preusmeritev',
'powersearch-field' => 'Išči',
+'powersearch-togglelabel' => 'Izberi:',
+'powersearch-toggleall' => 'Vse',
+'powersearch-togglenone' => 'Nič',
'search-external' => 'Zunanji iskalnik',
'searchdisabled' => 'Iskanje po {{GRAMMAR:dajalnik|{{SITENAME}}}} je onemogoočeno.
Medtem lahko iščete preko Googla.
Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} morda zastareli.',
+# Quickbar
+'qbsettings' => 'Nastavitve hitre vrstice',
+'qbsettings-none' => 'Brez',
+'qbsettings-fixedleft' => 'Levo nepomično',
+'qbsettings-fixedright' => 'Desno nepomično',
+'qbsettings-floatingleft' => 'Levo leteče',
+'qbsettings-floatingright' => 'Desno leteče',
+
# Preferences page
-'preferences' => 'Nastavitve',
-'mypreferences' => 'Nastavitve',
-'prefs-edits' => 'Število urejanj:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Za spreminjanje uporabniških nastavitev se <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} prijavite]</span>.',
-'prefsreset' => 'Nastavitve so ponastavljene.',
-'qbsettings' => 'Nastavitve hitre vrstice',
-'qbsettings-none' => 'Brez',
-'qbsettings-fixedleft' => 'Levo nepomično',
-'qbsettings-fixedright' => 'Desno nepomično',
-'qbsettings-floatingleft' => 'Levo leteče',
-'qbsettings-floatingright' => 'Desno leteče',
-'changepassword' => 'Zamenjava gesla',
-'skin' => 'Koža',
-'skin-preview' => 'Predogled',
-'math' => 'Prikaz matematičnega besedila',
-'dateformat' => 'Zapis datuma',
-'datedefault' => 'Kakor koli',
-'datetime' => 'Datum in čas',
-'math_failure' => 'Ni mi uspelo razčleniti',
-'math_unknown_error' => 'neznana napaka',
-'math_unknown_function' => 'neznana funkcija',
-'math_lexing_error' => 'slovarska napaka',
-'math_syntax_error' => 'skladenjska napaka',
-'math_image_error' => 'Pretvarjanje v PNG ni uspelo;
-preverite, ali so latex, dvips, gs, in convert pravilno nameščeni.',
-'math_bad_tmpdir' => 'Začasne mape za math ne morem ustvariti ali pisati vanjo.',
-'math_bad_output' => 'Izhodne mape za math ne morem ustvariti ali pisati vanjo.',
-'math_notexvc' => 'Manjka izvedbena datoteka texvc;
-za njeno namestitev si poglejte math/README.',
-'prefs-personal' => 'Podatki o uporabniku',
-'prefs-rc' => 'Zadnje spremembe',
-'prefs-watchlist' => 'Spisek nadzorov',
-'prefs-watchlist-days' => 'Število dni za prikaz na spisku nadzorov:',
-'prefs-watchlist-days-max' => '(največ 7 dni)',
-'prefs-watchlist-edits' => 'Število urejanj za prikaz na razširjenem spisku nadzorov:',
-'prefs-watchlist-edits-max' => '(največje število: 1000)',
-'prefs-misc' => 'Druge nastavitve',
-'prefs-resetpass' => 'Spremeni geslo',
-'saveprefs' => 'Shrani',
-'resetprefs' => 'Počisti neshranjene spremembe',
-'restoreprefs' => 'Obnovi vse privzete nastavitve',
-'textboxsize' => 'Urejanje',
-'prefs-edit-boxsize' => 'Velikost okna za urejanje.',
-'rows' => 'Vrstic:',
-'columns' => 'Stolpcev:',
-'searchresultshead' => 'Nastavitve poizvedovanja',
-'resultsperpage' => 'Prikazanih zadetkov na stran:',
-'contextlines' => 'Vrstic na zadetek:',
-'contextchars' => 'Znakov na vrstico:',
-'stub-threshold' => 'Prag označevanja <a href="#" class="stub">škrbin</a> (v bajtih):',
-'recentchangesdays' => 'Število dni prikazanih v zadnjih spremembah:',
-'recentchangesdays-max' => '(največ $1 {{PLURAL:$1|dan|dneva|dnevi|dnevov}})',
-'recentchangescount' => 'Privzeto število prikazanih urejanj v zadnjih spremembah, zgodovini stran in v dnevniških zapisih:',
-'savedprefs' => 'Spremembe so bile uspešno shranjene.',
-'timezonelegend' => 'Časovni pas',
-'timezonetext' => 'Vnesite časovno razliko med vašim krajevnim in strežniškim časom (UTC).',
-'localtime' => 'Krajevni čas:',
-'timezoneselect' => 'Časovni pas:',
-'timezoneuseserverdefault' => 'Uporabi privzeti strežniški čas',
-'timezoneuseoffset' => 'Drugo (navedite izravnavo)',
-'timezoneoffset' => 'Izravnava¹:',
-'servertime' => 'Strežniški čas:',
-'guesstimezone' => 'Izpolni iz brskalnika',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantski ocean',
-'timezoneregion-australia' => 'Avstralija',
-'timezoneregion-europe' => 'Evropa',
-'timezoneregion-indian' => 'Indijski ocean',
-'timezoneregion-pacific' => 'Tihi ocean',
-'allowemail' => 'Drugim uporabnikom omogoči pošiljanje e-pošte',
-'prefs-searchoptions' => 'Možnosti iskanja',
-'prefs-namespaces' => 'Imenski prostori',
-'defaultns' => 'Navadno išči v naslednjih imenskih prostorih:',
-'default' => 'privzeto',
-'files' => 'Datoteke',
-'prefs-custom-css' => 'CSS po meri',
-'prefs-custom-js' => 'JS po meri',
+'preferences' => 'Nastavitve',
+'mypreferences' => 'Nastavitve',
+'prefs-edits' => 'Število urejanj:',
+'prefsnologin' => 'Niste prijavljeni',
+'prefsnologintext' => 'Za spreminjanje uporabniških nastavitev morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span>.',
+'changepassword' => 'Zamenjava gesla',
+'prefs-skin' => 'Koža',
+'skin-preview' => 'Predogled',
+'prefs-math' => 'Prikaz matematičnega besedila',
+'datedefault' => 'Kakor koli',
+'prefs-datetime' => 'Datum in čas',
+'prefs-personal' => 'Podatki o uporabniku',
+'prefs-rc' => 'Zadnje spremembe',
+'prefs-watchlist' => 'Spisek nadzorov',
+'prefs-watchlist-days' => 'Število dni za prikaz na spisku nadzorov:',
+'prefs-watchlist-days-max' => 'Največ 7 dni',
+'prefs-watchlist-edits' => 'Število urejanj za prikaz na razširjenem spisku nadzorov:',
+'prefs-watchlist-edits-max' => 'Največje število: 1000',
+'prefs-watchlist-token' => 'Ključ spiska nadzorov:',
+'prefs-misc' => 'Druge nastavitve',
+'prefs-resetpass' => 'Spremeni geslo',
+'prefs-email' => 'Možnosti e-pošte',
+'prefs-rendering' => 'Videz',
+'saveprefs' => 'Shrani',
+'resetprefs' => 'Počisti neshranjene spremembe',
+'restoreprefs' => 'Obnovi vse privzete nastavitve',
+'prefs-editing' => 'Urejanje',
+'prefs-edit-boxsize' => 'Velikost okna za urejanje.',
+'rows' => 'Vrstic:',
+'columns' => 'Stolpcev:',
+'searchresultshead' => 'Nastavitve poizvedovanja',
+'resultsperpage' => 'Prikazanih zadetkov na stran:',
+'contextlines' => 'Vrstic na zadetek:',
+'contextchars' => 'Znakov na vrstico:',
+'stub-threshold' => 'Prag označevanja <a href="#" class="stub">škrbin</a> (v bajtih):',
+'recentchangesdays' => 'Število dni prikazanih v zadnjih spremembah:',
+'recentchangesdays-max' => 'Največ $1 {{PLURAL:$1|dan|dneva|dnevi|dni}}',
+'recentchangescount' => 'Privzeto število prikazanih urejanj:',
+'prefs-help-recentchangescount' => 'To vključuje zadnje spremembe, zgodovine strani in dnevniške zapise.',
+'prefs-help-watchlist-token' => 'Izpolnjevanje tega polja s skrivnim ključem bo ustvarilo vir RSS za vaš spisek nadzorov.
+Kdorkoli pozna ta ključ bo lahko bral vaš spisek nadzorov, zato izbrite varen in čim daljši ključ.
+Tukaj je naključno ustvarjena vrednost, ki jo lahko uporabite: $1',
+'savedprefs' => 'Spremembe so bile uspešno shranjene.',
+'timezonelegend' => 'Časovni pas',
+'localtime' => 'Krajevni čas:',
+'timezoneuseserverdefault' => 'Uporabi privzeti strežniški čas',
+'timezoneuseoffset' => 'Drugo (navedite izravnavo)',
+'timezoneoffset' => 'Izravnava¹:',
+'servertime' => 'Strežniški čas:',
+'guesstimezone' => 'Izpolni iz brskalnika',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantski ocean',
+'timezoneregion-australia' => 'Avstralija',
+'timezoneregion-europe' => 'Evropa',
+'timezoneregion-indian' => 'Indijski ocean',
+'timezoneregion-pacific' => 'Tihi ocean',
+'allowemail' => 'Drugim uporabnikom omogoči pošiljanje e-pošte',
+'prefs-searchoptions' => 'Možnosti iskanja',
+'prefs-namespaces' => 'Imenski prostori',
+'defaultns' => 'Navadno išči v naslednjih imenskih prostorih:',
+'default' => 'privzeto',
+'prefs-files' => 'Datoteke',
+'prefs-custom-css' => 'CSS po meri',
+'prefs-custom-js' => 'JS po meri',
+'prefs-reset-intro' => 'To stran lahko uporabite za ponastavitev nastavitev na privzete za to spletišče.
+Tega ni mogoče razveljaviti.',
+'prefs-emailconfirm-label' => 'Potrditev e-pošte:',
+'prefs-textboxsize' => 'Velikost urejevalnega polja',
+'youremail' => 'E-pošta:',
+'username' => 'Uporabniško ime:',
+'uid' => 'ID uporabnika:',
+'prefs-memberingroups' => 'Član {{PLURAL:$1|naslednje skupine|naslednjih skupin|naslednjih skupin|naslednjih skupin|naslednjih skupin}}:',
+'prefs-memberingroups-type' => '$1',
+'prefs-registration' => 'Registriran od:',
+'yourrealname' => 'Pravo ime:',
+'yourlanguage' => 'Jezik:',
+'yourvariant' => 'Različica:',
+'yournick' => 'Nov podpis:',
+'prefs-help-signature' => 'Komentarje na pogovornih straneh, je treba podpisati s »<nowiki>~~~~</nowiki>«, kar bo pretvorjeno v vaš podpis s časom.',
+'badsig' => 'Neveljaven surovi podpis; preverite oznake HTML.',
+'badsiglength' => 'Vaš podpis je preobsežen.
+Ne sme biti daljši od $1 {{PLURAL:$1|znaka|znakov}}.',
+'yourgender' => 'Spol:',
+'gender-unknown' => 'nedoločen',
+'gender-male' => 'moški',
+'gender-female' => 'ženski',
+'prefs-help-gender' => 'Podatek ni obvezen, uporablja pa se ga izključno za pravilno obliko naslavljanja programja glede na spol.
+Podatek bo javno prikazan.',
+'email' => 'E-pošta',
+'prefs-help-realname' => 'Pravo ime je neobvezno.
+Če se ga odločite navesti, bo uporabljeno za priznavanje vašega dela.',
+'prefs-help-email' => 'E-poštni naslov ni obvezen, vendar vam omogoča, da vam v primeru pozabljenega gesla pošljemo novo.
+Poleg tega vpisan e-poštni naslov omogoča drugim, da vam lahko pošiljajo elektronsko pošto brez razkritja vaše identitete.',
+'prefs-help-email-required' => 'E-poštni naslov je obvezen.',
+'prefs-info' => 'Osnovni podatki',
+'prefs-i18n' => 'Internacionalizacija',
+'prefs-signature' => 'Podpis',
+'prefs-dateformat' => 'Zapis datuma',
+'prefs-timeoffset' => 'Čas za izravnavo',
+'prefs-advancedediting' => 'Napredne možnosti',
+'prefs-advancedrc' => 'Napredne možnosti',
+'prefs-advancedrendering' => 'Napredne možnosti',
+'prefs-advancedsearchoptions' => 'Napredne možnosti',
+'prefs-advancedwatchlist' => 'Napredne možnosti',
+'prefs-display' => 'Prikaži možnosti',
+'prefs-diffs' => 'Primerjave',
# User rights
-'userrights' => 'Upravljanje s pravicami uporabnikov', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Upravljanje z uporabniškimi skupinami',
-'userrights-user-editname' => 'Vpišite uporabniško ime:',
-'editusergroup' => 'Uredi uporabniške skupine',
-'editinguser' => "Urejanje pravic uporabnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Urejanje uporabniških skupin',
-'saveusergroups' => 'Shrani spremembe',
-'userrights-groupsmember' => 'Član skupine:',
-'userrights-groups-help' => 'Spreminjate lahko skupine uporabnika:
+'userrights' => 'Upravljanje s pravicami uporabnikov',
+'userrights-lookup-user' => 'Upravljanje z uporabniškimi skupinami',
+'userrights-user-editname' => 'Vpišite uporabniško ime:',
+'editusergroup' => 'Uredi uporabniške skupine',
+'editinguser' => "Urejanje pravic uporabnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Urejanje uporabniških skupin',
+'saveusergroups' => 'Shrani spremembe',
+'userrights-groupsmember' => 'Član skupine:',
+'userrights-groupsmember-auto' => 'Posreden član:',
+'userrights-groups-help' => 'Spreminjate lahko skupine uporabnika:
* Obkljukano polje pomeni uporabnika, ki je v skupini
* Odkljukano polje pomeni uporabnika, ki ni v skupini
* Zvezdica (*) kaže, da uporabnika ne boste mogli odstraniti iz skupine, ko ga vanjo dodate oz. obratno.',
-'userrights-reason' => 'Razlog:',
-'userrights-no-interwiki' => 'Nimate dovoljenja za urejanje pravic uporabnikov na drugih wikijih.',
-'userrights-nodatabase' => 'Podatkovna baza $1 ne obstaja ali ni lokalna.',
-'userrights-nologin' => 'Za dodeljevanje uporabniških pravic se morate [[Special:UserLogin|prijaviti]] s skrbniškim računom.',
-'userrights-notallowed' => 'Vaš račun nima dovoljenja za dodeljevanje pravic uporabnikom.',
-'userrights-changeable-col' => 'Skupine, ki jih lahko spremenite',
-'userrights-unchangeable-col' => 'Skupine, ki jih ne morete spremeniti',
+'userrights-reason' => 'Razlog:',
+'userrights-no-interwiki' => 'Nimate dovoljenja za urejanje pravic uporabnikov na drugih wikijih.',
+'userrights-nodatabase' => 'Podatkovna baza $1 ne obstaja ali ni lokalna.',
+'userrights-nologin' => 'Za dodeljevanje uporabniških pravic se morate [[Special:UserLogin|prijaviti]] s skrbniškim računom.',
+'userrights-notallowed' => 'Vaš račun nima dovoljenja za dodeljevanje pravic uporabnikom.',
+'userrights-changeable-col' => 'Skupine, ki jih lahko spremenite',
+'userrights-unchangeable-col' => 'Skupine, ki jih ne morete spremeniti',
# Groups
'group' => 'Skupina:',
@@ -1207,6 +1320,7 @@ za njeno namestitev si poglejte math/README.',
'right-bigdelete' => 'Brisanje strani z obsežno zgodovino',
'right-deleterevision' => 'Brisanje in obnova posebnih redakcij strani',
'right-deletedhistory' => 'Ogled zgodovine brisanja, brez besedila izbrisanih strani',
+'right-deletedtext' => 'Ogled izbrisanega besedila in primerjava med izbrisanimi redakcijami',
'right-browsearchive' => 'Iskanje izbrisanih strani',
'right-undelete' => 'Obnavljanje strani',
'right-suppressrevision' => 'Pregled in obnova pred administratorjem skritih redakcij',
@@ -1220,6 +1334,8 @@ za njeno namestitev si poglejte math/README.',
'right-editprotected' => 'Urejanje zaščitenih strani (brez kaskadne zaščite)',
'right-editinterface' => 'Urejanje uporabniškega vmesnika',
'right-editusercssjs' => 'Urejanje CSS- in JS-datotek drugih uporabnikov',
+'right-editusercss' => 'Uredi CSS datotek drugih uporabnikov',
+'right-edituserjs' => 'Uredi JS datotek drugih uporabnikov',
'right-rollback' => 'Hitro vračanje urejanj od zadnjega uporabnika, ki je urejal določeno stran',
'right-markbotedits' => 'Označi vrnjena urejanja kot urejanja botov',
'right-noratelimit' => 'Omejitve dejavnosti ne veljajo',
@@ -1236,6 +1352,8 @@ za njeno namestitev si poglejte math/README.',
'right-siteadmin' => 'Zaklepanje in odklepanje baze podatkov',
'right-reset-passwords' => 'Ponastavljanje gesla drugih uporabnikov',
'right-override-export-depth' => 'Izvoz strani, vključno s povezaimi straneh do globine 5',
+'right-versiondetail' => 'Pregledovanje razširjenih informacij o različici programske opreme',
+'right-sendemail' => 'Pošiljanje e-pošte drugim uporabnikom',
# User rights log
'rightslog' => 'Dnevnik uporabniških pravic',
@@ -1285,8 +1403,17 @@ za njeno namestitev si poglejte math/README.',
'recentchanges-legend' => 'Možnosti zadnjih sprememb',
'recentchangestext' => 'Na tej strani lahko spremljajte najnedavnejše spremembe wikija.',
'recentchanges-feed-description' => 'Spremljajte najnovejše spremembe wikija prek tega vira.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova stran',
+'recentchanges-label-newpage' => 'S tem urejanjem je bila ustvarjena nova stran',
+'recentchanges-legend-minor' => '$1 - manjše urejanje',
+'recentchanges-label-minor' => 'To je manjše urejanje',
+'recentchanges-legend-bot' => '$1 - urejanja bota',
+'recentchanges-label-bot' => 'To urejanje je bilo izvedeno z botom',
+'recentchanges-legend-unpatrolled' => '$1 - ne-patruljirano urejanje',
+'recentchanges-label-unpatrolled' => 'To urejanje še ni bila pregledano',
'rcnote' => "Prikazujem {{PLURAL:$1|zadnjo spremembo|zadnji '''$1''' spremembi|zadnje '''$1''' spremembe|zadnjih '''$1''' sprememb|zadnjih '''$1''' sprememb}} v {{PLURAL:$2|zadnjem|zadnjih|zadnjih|zadnjih|zadnjih}} '''$2''' {{PLURAL:$2|dnevu|dneh|dneh|dneh|dneh}}, od $5, $4.",
-'rcnotefrom' => 'Navedene so spremembe od <b>$2</b> dalje (prikazujem jih do <b>$1</b>).',
+'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
'rclistfrom' => 'Prikaži spremembe od $1 naprej',
'rcshowhideminor' => '$1 manjša urejanja',
'rcshowhidebots' => '$1 bote',
@@ -1311,6 +1438,8 @@ za njeno namestitev si poglejte math/README.',
# Recent changes linked
'recentchangeslinked' => 'Sorodne spremembe',
+'recentchangeslinked-feed' => 'Sorodne spremembe',
+'recentchangeslinked-toolbox' => 'Sorodne spremembe',
'recentchangeslinked-title' => 'Spremembe, povezane z "$1"',
'recentchangeslinked-noresult' => 'Na povezanih straneh v določenem obdobju ni bilo nobenih sprememb.',
'recentchangeslinked-summary' => "To je seznam nedavnih sprememb strani povezanih na določeno stran (ali iz določene kategorije).
@@ -1321,8 +1450,8 @@ Strani iz [[Special:Watchlist|vašega spiska nadzorov]] so '''odebeljene'''.",
# Upload
'upload' => 'Naloži datoteko',
'uploadbtn' => 'Naloži datoteko',
-'reupload' => 'Naloži drugo',
'reuploaddesc' => 'Prekliči nalaganje in se vrni na obrazec za nalaganje',
+'upload-tryagain' => 'Vnesite spremenjen opis datoteke',
'uploadnologin' => 'Niste prijavljeni',
'uploadnologintext' => 'Za nalaganje datotek se [[Special:UserLogin|prijavite]].',
'upload_directory_missing' => 'Mapa za nalaganje datotek ($1) manjka in je ni bilo mogoče ustvariti s spletnim strežnikom.',
@@ -1354,6 +1483,7 @@ Za grafični pogled obiščite [[Special:NewFiles|galerijo novih datotek]].',
'minlength1' => 'Imena datotek morajo biti dolga vsaj eno črko.',
'illegalfilename' => 'Ime datoteke »$1« vsebuje v naslovih strani prepovedane znake. Prosimo, poskusite datoteko naložiti pod drugim imenom.',
'badfilename' => 'Ime datoteke se je samodejno popravilo v »$1«.',
+'filetype-mime-mismatch' => 'Končnica datoteke ne ustreza vrsti MIME.',
'filetype-badmime' => 'Datoteke MIME-vrste »$1« ni dovoljeno nalagati.',
'filetype-bad-ie-mime' => 'Ne morem naložiti datoteke, ker bi jo Internet Explorer zaznal kot »$1« in jo zavrnil kot potencialno nevarno vrsto datoteke.',
'filetype-unwanted-type' => "'''».$1«''' je nezaželena datotečna vrsta.
@@ -1376,7 +1506,6 @@ Da tam prikažete povzetek, morate stran urediti ročno.
* Ime naložene datoteke: '''<tt>[[:$1]]</tt>'''
* Ime obstoječe datoteke: '''<tt>[[:$2]]</tt>'''
Prosimo, izberite drugo ime.",
-'fileexists-thumb' => "'''<center>Obstoječa datoteka</center>'''",
'fileexists-thumbnail-yes' => "Kot izgleda, je ta slika pomanjšana ''(thumbnail)''. [[$1|thumb]]
Prosimo, preverite datoteko '''<tt>[[:$1]]</tt>'''.
Če je preverjena datoteka enaka kot ta, ki jo nalage, ni potrebno nalagati še dodatne sličice.",
@@ -1394,6 +1523,7 @@ Prosimo, vrnite se in naložite svojo datoteko pod drugim imenom.
Preverite zgodovino brisanja datoteke, preden jo ponovno naložite.',
'successfulupload' => 'Datoteka je bila uspešno naložena',
'uploadwarning' => 'Opozorilo!',
+'uploadwarning-text' => 'Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.',
'savefile' => 'Shrani datoteko',
'uploadedimage' => 'je naložil(-a) datoteko »[[$1]]«',
'overwroteimage' => 'je naložil(-a) novo različico datoteke »[[$1]]«',
@@ -1402,12 +1532,15 @@ Preverite zgodovino brisanja datoteke, preden jo ponovno naložite.',
'php-uploaddisabledtext' => 'Nalaganje datotek je onemogočeno v PHP.
Prosimo preverite file_uploads nastavitev.',
'uploadscripted' => 'Datoteka vsebuje HTML- ali skriptno kodo, ki bi jo lahko brskalnik razlagal napačno.',
-'uploadcorrupt' => 'Datoteka je poškodovana ali pa ima napačno končnico. Prosimo, preverite jo in znova naložite.',
'uploadvirus' => 'Datoteka vsebuje virus!
Podrobnosti: $1',
+'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime izvorne datoteke:',
+'sourceurl' => 'Izvorni URL:',
'destfilename' => 'Ime ciljne datoteke:',
'upload-maxfilesize' => 'Največja velikost datoteke: $1',
+'upload-description' => 'Opis datoteke',
+'upload-options' => 'Možnosti nalaganja',
'watchthisupload' => 'Opazuj to datoteko',
'filewasdeleted' => 'Datoteka s tem imenom je bila nekoč že naložena in potem izbrisana. Preden jo znova naložite, preverite $1.',
'upload-wasdeleted' => "'''Opozorilo: Nalagate datoteko, ki je bila predhodno že izbrisana.'''
@@ -1431,15 +1564,46 @@ MGP # Pentax
PICT # mešano
#</pre> <!-- pustite to vrstico takšno, kot je -->',
-'upload-proto-error' => 'Nepravilni protokol',
-'upload-proto-error-text' => 'Oddaljeno nalaganje zahteva, da se URL začenja s <code>http://</code> ali <code>ftp://</code>.',
-'upload-file-error' => 'Notranja napaka',
-'upload-file-error-text' => 'Prišlo je do notranje napake pri poskusu ustvariti začasne datoteke na strežnik.
+'upload-proto-error' => 'Nepravilni protokol',
+'upload-proto-error-text' => 'Oddaljeno nalaganje zahteva, da se URL začenja s <code>http://</code> ali <code>ftp://</code>.',
+'upload-file-error' => 'Notranja napaka',
+'upload-file-error-text' => 'Prišlo je do notranje napake pri poskusu ustvariti začasne datoteke na strežnik.
Prosimo obrnite se na [[Special:ListUsers/sysop|administrator]]ja.',
-'upload-misc-error' => 'Neznana napaka nalaganja',
-'upload-misc-error-text' => 'Med nalaganjem je prišlo do neznane napake.
+'upload-misc-error' => 'Neznana napaka nalaganja',
+'upload-misc-error-text' => 'Med nalaganjem je prišlo do neznane napake.
Prosimo, preverite veljavnost in dostopnost naslova URL ter poskusite ponovno.
Če se težava ponavlja, kontaktirajte [[Special:ListUsers/sysop|administratorja]].',
+'upload-too-many-redirects' => 'URL vsebuje preveč preusmeritev',
+'upload-unknown-size' => 'Neznana velikost',
+'upload-http-error' => 'Prišlo je do napake HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Dostop zavrnjen',
+'img-auth-nopathinfo' => 'Manjka PATH_INFO.
+Vaš strežnik ne poda te informacije.
+Morda temelji na CGI in ne more podpirati img_auth.
+Oglejte si http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Zahtevana pot ni v konfigurirani mapi za nalaganje.',
+'img-auth-badtitle' => 'Ni mogoče sestaviti veljavnega naslova iz »$1«.',
+'img-auth-nologinnWL' => 'Niste prijavljeni in »$1« ni na seznamu dovoljenih datotek.',
+'img-auth-nofile' => 'Datoteka »$1« ne obstaja.',
+'img-auth-isdir' => 'Poskušate dostopati do mape »$1«.
+Dovoljeno je samo dostopanje do datotek.',
+'img-auth-streaming' => 'Pretakanje »$1«.',
+'img-auth-public' => 'Funkcija img_auth.php je izvoz datotek iz zasebnega wikija.
+Ta wiki je konfiguriran kot javni wiki.
+Za optimalno varnost je img_auth.php onemogočen.',
+'img-auth-noread' => 'Uporabnik nima dostopa za branje »$1«.',
+
+# HTTP errors
+'http-invalid-url' => 'Napačen URL: $1',
+'http-invalid-scheme' => 'URL-naslovi s shemo »$1« niso podprti.',
+'http-request-error' => 'Zahteva HTTP ni uspela zaradi neznane napake.',
+'http-read-error' => 'Napaka branja HTTP.',
+'http-timed-out' => 'Zahteva HTTP je potekla.',
+'http-curl-error' => 'Napaka pri doseganju URL: $1',
+'http-host-unreachable' => 'Ni mogoče doseči URL.',
+'http-bad-status' => 'Med zahtevo HTTP je prišlo do težave: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Ni možno doseči URL',
@@ -1451,6 +1615,7 @@ Prosimo, preverite delovanje strani, počakajte kratek čas in poskusite ponovno
Morda želite poskusiti ob času manjše zasedenosti.',
'license' => 'Dovoljenje:',
+'license-header' => 'Dovoljenje',
'nolicense' => 'Nobeno',
'license-nopreview' => '(Predogled ni na voljo)',
'upload_source_url' => ' (veljaven, javnosti dostopen URL)',
@@ -1471,38 +1636,42 @@ Za spremembo razvrščanja kliknete na glavo stolpca.',
'listfiles_count' => 'Različice',
# File description page
-'filehist' => 'Zgodovina datoteke',
-'filehist-help' => 'Klikni na datum in čas za ogled datoteke, ki je bila takrat naložena.',
-'filehist-deleteall' => 'izbriši vse',
-'filehist-deleteone' => 'izbriši to',
-'filehist-revert' => 'vrni',
-'filehist-current' => 'trenutno',
-'filehist-datetime' => 'Datum in čas',
-'filehist-thumb' => 'Sličica',
-'filehist-thumbtext' => 'Sličica za različico $1',
-'filehist-nothumb' => 'Brez predogleda',
-'filehist-user' => 'Uporabnik',
-'filehist-dimensions' => 'Dimenzije',
-'filehist-filesize' => 'Velikost datoteke',
-'filehist-comment' => 'Komentar',
-'imagelinks' => 'Strani z datoteko',
-'linkstoimage' => 'Datoteka je del {{PLURAL:$1|naslednje $1 strani|naslednjih $1 strani}} {{GRAMMAR:rodilnik|{{SITENAME}}}}:',
-'linkstoimage-more' => 'Na to datoteko se {{PLURAL:$1|povezuje več kot $1 stran|povezujeta več kot $1 strani|povezujejo več kot $1 strani|povezuje več kot $1 strani}}.
+'file-anchor-link' => 'Datoteka',
+'filehist' => 'Zgodovina datoteke',
+'filehist-help' => 'Klikni na datum in čas za ogled datoteke, ki je bila takrat naložena.',
+'filehist-deleteall' => 'izbriši vse',
+'filehist-deleteone' => 'izbriši to',
+'filehist-revert' => 'vrni',
+'filehist-current' => 'trenutno',
+'filehist-datetime' => 'Datum in čas',
+'filehist-thumb' => 'Sličica',
+'filehist-thumbtext' => 'Sličica za različico $1',
+'filehist-nothumb' => 'Brez predogleda',
+'filehist-user' => 'Uporabnik',
+'filehist-dimensions' => 'Dimenzije',
+'filehist-filesize' => 'Velikost datoteke',
+'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Datoteka manjka',
+'imagelinks' => 'Strani z datoteko',
+'linkstoimage' => 'Datoteka je del {{PLURAL:$1|naslednje $1 strani|naslednjih $1 strani}} {{GRAMMAR:rodilnik|{{SITENAME}}}}:',
+'linkstoimage-more' => 'Na to datoteko se {{PLURAL:$1|povezuje več kot $1 stran|povezujeta več kot $1 strani|povezujejo več kot $1 strani|povezuje več kot $1 strani}}.
Naslednji seznam obsega samo {{PLURAL:$1|prvo stran, ki se povezuje|prvi $1 strani, ki se povezujeta|prve $1 strani, ki se povezujejo|prvih $1 strani, ki se povezujejo}} na to datoteko.
Na voljo je tudi [[Special:WhatLinksHere/$2|celotni seznam]].',
-'nolinkstoimage' => 'Z datoteko se ne povezuje nobena stran.',
-'morelinkstoimage' => 'Preglejte [[Special:WhatLinksHere/$1|več povezav]] na to datoteko.',
-'redirectstofile' => 'Na to datoteko {{PLURAL:$1|preusmerja naslednja datoteka|preusmerjata naslednji datoteki|preusmerjajo naslednje $1 datoteke|preusmerja naslednjih $1 datotek|preusmerja naslednjih $1 datotek}}:',
-'duplicatesoffile' => '{{PLURAL:$1|Sledeča datoteka je dvojnik|Sledeči datoteki sta dvojnika|Sledeče $1 datoteke so dvojniki|Sledečih $1 datotek so dvojniki}} te datoteke ([[Special:FileDuplicateSearch/$2|več podrobnosti]]):',
-'sharedupload' => 'Datoteka je del $1 in se lahko uporabi v drugih projektih.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Nadaljnje informacije najdete na strani $1.',
-'shareduploadwiki-desc' => 'Spodaj je prikazan opis iz $1.',
-'shareduploadwiki-linktext' => 'Opisna stran datoteke',
-'noimage' => 'Datoteka s tem imenom ne obstaja, vendar jo lahko $1.',
-'noimage-linktext' => 'naložite',
-'uploadnewversion-linktext' => 'Naložite novo različico datoteke',
-'shared-repo-from' => 'iz $1', # $1 is the repository name
-'shared-repo' => 'skupno skladišče', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'Z datoteko se ne povezuje nobena stran.',
+'morelinkstoimage' => 'Preglejte [[Special:WhatLinksHere/$1|več povezav]] na to datoteko.',
+'redirectstofile' => 'Na to datoteko {{PLURAL:$1|preusmerja naslednja datoteka|preusmerjata naslednji datoteki|preusmerjajo naslednje $1 datoteke|preusmerja naslednjih $1 datotek|preusmerja naslednjih $1 datotek}}:',
+'duplicatesoffile' => '{{PLURAL:$1|Sledeča datoteka je dvojnik|Sledeči datoteki sta dvojnika|Sledeče $1 datoteke so dvojniki|Sledečih $1 datotek so dvojniki}} te datoteke ([[Special:FileDuplicateSearch/$2|več podrobnosti]]):',
+'sharedupload' => 'Datoteka je del $1 in se lahko uporabi v drugih projektih.',
+'sharedupload-desc-there' => 'Ta datoteka je iz $1 in se lahko uporablja v drugih projektih.
+Prosimo, oglejte si [$2 opisno stran datoteke] za dodatne informacije.',
+'sharedupload-desc-here' => 'Ta datoteka je iz $1 in se lahko uporablja v drugih projektih.
+Povzetek na njeni [$2 opisni strani datoteke] je prikazan spodaj.',
+'filepage-nofile' => 'Datoteka s tem imenom ne obstaja.',
+'filepage-nofile-link' => 'Datoteka s tem imenom ne obstaja, vendar pa jo lahko [$1 naložite].',
+'uploadnewversion-linktext' => 'Naložite novo različico datoteke',
+'shared-repo-from' => 'iz $1',
+'shared-repo' => 'skupno skladišče',
+'shared-repo-name-wikimediacommons' => 'Wikimedijine Zbirke',
# File reversion
'filerevert' => 'Vrni $1',
@@ -1531,6 +1700,7 @@ Na voljo je tudi [[Special:WhatLinksHere/$2|celotni seznam]].',
** kršitev avtorskih pravic
** podvojena datoteka',
'filedelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'filedelete-maintenance' => 'Brisanje in obnovitev datotek je začasno onemogočeno zaradi vzdrževanja.',
# MIME search
'mimesearch' => 'Iskanje po vrsti MIME',
@@ -1553,7 +1723,7 @@ Preden jih izbrišete, preverite še druge povezave nanje.',
# Random page
'randompage' => 'Naključni članek',
-'randompage-nopages' => 'V imenskem prostoru »$1« ni strani.',
+'randompage-nopages' => 'V {{PLURAL:$2|naslednjem imenskem prostoru|naslednjih imenskih prostorih}} ni strani: $1.',
# Random redirect
'randomredirect' => 'Naključna preusmeritev',
@@ -1565,6 +1735,7 @@ Preden jih izbrišete, preverite še druge povezave nanje.',
'statistics-header-edits' => 'Statistika urejanj',
'statistics-header-views' => 'Statistika ogledov',
'statistics-header-users' => 'Uporabniška statistika',
+'statistics-header-hooks' => 'Drugi statistični podatki',
'statistics-articles' => 'Članki',
'statistics-pages' => 'Strani',
'statistics-pages-desc' => 'Vse strani na wikiju, vključno s pogovornimi stranmi, preusmeritvami itn.',
@@ -1595,8 +1766,8 @@ Sedaj je preusmeritev na [[$2]].',
'brokenredirects' => 'Pretrgane preusmeritve',
'brokenredirectstext' => 'Naslednje preusmeritve kažejo na neobstoječe strani:',
-'brokenredirects-edit' => '(uredi)',
-'brokenredirects-delete' => '(izbriši)',
+'brokenredirects-edit' => 'uredi',
+'brokenredirects-delete' => 'izbriši',
'withoutinterwiki' => 'Strani brez jezikovnih povezav',
'withoutinterwiki-summary' => 'Sledeče strani se ne povezujejo na različice v drugih jezikih.',
@@ -1703,14 +1874,17 @@ Morda vsebuje enega ali več znakov, ki niso dovoljeni v naslovih.',
# Special:Categories
'categories' => 'Kategorije',
-'categoriespagetext' => 'V wikiju obstajajo naslednje kategorije.',
+'categoriespagetext' => '{{PLURAL:$1|Naslednja $1 kategorija vsebuje|Naslednji $1 kategoriji vsebujeta|Naslednje $1 kategorije vsebujejo|Naslednjih $1 kategorij vsebuje}} strani ali datoteke.
+[[Special:UnusedCategories|Neuporabljene kategorije]] niso prikazane.
+Glej tudi [[Special:WantedCategories|želene kategorije]].',
'categoriesfrom' => 'Prikaži kategorije, ki se začnejo na:',
'special-categories-sort-count' => 'razvrsti po številu',
'special-categories-sort-abc' => 'razvrsti po abecedi',
# Special:DeletedContributions
-'deletedcontributions' => 'Izbrisani uporabnikovi prispevki',
-'deletedcontributions-title' => 'Izbrisani uporabnikovi prispevki',
+'deletedcontributions' => 'Izbrisani uporabnikovi prispevki',
+'deletedcontributions-title' => 'Izbrisani uporabnikovi prispevki',
+'sp-deletedcontributions-contribs' => 'prispevki',
# Special:LinkSearch
'linksearch' => 'Zunanje povezave',
@@ -1726,6 +1900,16 @@ Podprti protokoli: <tt>$1</tt>',
'listusersfrom' => 'Prikaži uporabnike začenši z:',
'listusers-submit' => 'Prikaži',
'listusers-noresult' => 'Ni najdenih uporabnikov.',
+'listusers-blocked' => '(blokiran)',
+
+# Special:ActiveUsers
+'activeusers' => 'Seznam aktivnih uporabnikov',
+'activeusers-intro' => 'Seznam uporabnikov, ki so bili kakor koli aktivni v {{PLURAL:$1|zadnjem $1 dnevu|zadnjih $1 dneh}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}} v {{PLURAL:$3|preteklem dnevu|preteklih $3 dneh}}',
+'activeusers-from' => 'Prikaži uporabnike začenši z:',
+'activeusers-hidebots' => 'Skrij bote',
+'activeusers-hidesysops' => 'Skrij administratorje',
+'activeusers-noresult' => 'Noben uporabnik ni bil najden.',
# Special:Log/newusers
'newuserlogpage' => 'Dnevnik registracij uporabnikov',
@@ -1736,17 +1920,23 @@ Podprti protokoli: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Račun ustvarjen samodejno',
# Special:ListGroupRights
-'listgrouprights' => 'Pravice uporabniških skupin',
-'listgrouprights-summary' => 'Spodaj se nahaja seznam uporabniških skupin na tem wikiju in njim dodeljene pravice dostopa.
+'listgrouprights' => 'Pravice uporabniških skupin',
+'listgrouprights-summary' => 'Spodaj se nahaja seznam uporabniških skupin na tem wikiju in njim dodeljene pravice dostopa.
Na voljo so morda [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o posameznih skupinah.',
-'listgrouprights-group' => 'Skupina',
-'listgrouprights-rights' => 'Pravice',
-'listgrouprights-helppage' => 'Help:Pravice skupin',
-'listgrouprights-members' => '(seznam članov)',
-'listgrouprights-addgroup' => 'Dodajte {{PLURAL:$2|skupino|skupini|skupine}}: $1',
-'listgrouprights-removegroup' => 'Odstranite {{PLURAL:$2|skupino|skupini|skupine}}: $1',
-'listgrouprights-addgroup-all' => 'Dodaj vse skupine',
-'listgrouprights-removegroup-all' => 'Odstrani vse skupine',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dodeljena pravica</span>
+* <span class="listgrouprights-revoked">Odvzeta pravica</span>',
+'listgrouprights-group' => 'Skupina',
+'listgrouprights-rights' => 'Pravice',
+'listgrouprights-helppage' => 'Help:Pravice skupin',
+'listgrouprights-members' => '(seznam članov)',
+'listgrouprights-addgroup' => 'Dodajte {{PLURAL:$2|skupino|skupini|skupine}}: $1',
+'listgrouprights-removegroup' => 'Odstranite {{PLURAL:$2|skupino|skupini|skupine}}: $1',
+'listgrouprights-addgroup-all' => 'Dodaj vse skupine',
+'listgrouprights-removegroup-all' => 'Odstrani vse skupine',
+'listgrouprights-addgroup-self' => 'Dodajte {{PLURAL:$2|skupino|skupini|skupine}} svojemu računu: $1',
+'listgrouprights-removegroup-self' => 'Odstranite {{PLURAL:$2|skupino|skupini|skupine}} od svojega računa: $1',
+'listgrouprights-addgroup-self-all' => 'Lastni račun dodaj v vse skupine',
+'listgrouprights-removegroup-self-all' => 'Lastni račun odstrani iz vseh skupin',
# E-mail user
'mailnologin' => 'Manjka naslov pošiljatelja',
@@ -1821,23 +2011,27 @@ Morebitne spremembe te strani in pripadajoče pogovorne strani bodo navedene tuk
'enotif_body' => '$WATCHINGUSERNAME,
stran v {{GRAMMAR:dajalnik|{{SITENAME}}}} $PAGETITLE je bila $PAGEEDITDATE $CHANGEDORCREATED s strani $PAGEEDITOR,
-za trenutno redakcijo glejte $PAGETITLE_URL
+za trenutno redakcijo glejte $PAGETITLE_URL.
$NEWPAGE
Urejevalčev povzetek: $PAGESUMMARY $PAGEMINOREDIT
Navežite stik z urejevalcem:
-e-pošta $PAGEEDITOR_EMAIL
-wiki $PAGEEDITOR_WIKI
+e-pošta: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
-Nadaljnjih obvestil do obiska strani ne boste prejemali. Na spisku nadzorov lahko znova nastavite zastavice obveščanj za vse spremljane strani.
+Nadaljnjih obvestil do obiska strani ne boste prejemali.
+Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
- Vaš opozorilni sistem slovenskega {{GRAMMAR:rodilnik|{{SITENAME}}}}
+ Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
--
Za spremembo nastavitev spiska nadzorov obiščite
-{{fullurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Za odstranitev strani z vašega spiska nadzorov obiščite
+$UNWATCHURL
Povratna sporočila in pomoč:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1851,10 +2045,11 @@ Povratna sporočila in pomoč:
'exblank' => 'prazna stran',
'delete-confirm' => 'Brisanje »$1«',
'delete-legend' => 'Izbriši',
-'historywarning' => 'OPOZORILO: stran, ki jo želite izbrisati, ima zgodovino:',
+'historywarning' => "'''Opozorilo:''' Stran, ki jo želite izbrisati, ima zgodovino s približno $1 {{PLURAL:$1|redakcijo|redakcijama|redakcijami}}:",
'confirmdeletetext' => "Iz zbirke podatkov boste izbrisali stran ali sliko skupaj z vso njeno zgodovino.
Prosimo, '''potrdite''', da to resnično želite, da razumete posledice dejanja in da se ravnate po [[{{MediaWiki:Policy-url}}|pravilih]].",
'actioncomplete' => 'Poseg je končan',
+'actionfailed' => 'Dejanje spodletelo',
'deletedtext' => 'Stran »<nowiki>$1</nowiki>« je bila izbrisana.
Za zapise nedavnih brisanj glej $2.',
'deletedarticle' => 'je izbrisal(-a) »[[$1]]«',
@@ -1878,19 +2073,20 @@ Njeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENA
nadaljujte s previdnostjo.',
# Rollback
-'rollback' => 'Vrni spremembe',
-'rollback_short' => 'Vrni',
-'rollbacklink' => 'vrni',
-'rollbackfailed' => 'Vrnitev ni uspela',
-'cantrollback' => 'Urejanja ne morem vrniti; zadnji urejevalec je hkrati edini.',
-'alreadyrolled' => 'Ne morem vrniti zadnje spremembe [[:$1]] uporabnika [[User:$2|$2]] ([[User talk:$2|Pogovor]]); nekdo drug je že spremenil ali vrnil članek.
+'rollback' => 'Vrni spremembe',
+'rollback_short' => 'Vrni',
+'rollbacklink' => 'vrni',
+'rollbackfailed' => 'Vrnitev ni uspela',
+'cantrollback' => 'Urejanja ne morem vrniti; zadnji urejevalec je hkrati edini.',
+'alreadyrolled' => 'Ne morem vrniti zadnje spremembe [[:$1]] uporabnika [[User:$2|$2]] ([[User talk:$2|Pogovor]]); nekdo drug je že spremenil ali vrnil članek.
Zadnja sprememba od uporabnika [[User:$3|$3]] ([[User talk:$3|Pogovor]]).',
-'editcomment' => "Povzetek urejanja je bil: »''$1''«.", # only shown if there is an edit comment
-'revertpage' => 'vrnitev sprememb uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) na zadnje urejanje uporabnika [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Razveljavljene spremembe uporabnika $1;
+'editcomment' => "Povzetek urejanja je bil: »''$1''«.",
+'revertpage' => 'vrnitev sprememb uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) na zadnje urejanje uporabnika [[User:$1|$1]]',
+'revertpage-nouser' => 'vrnitev sprememb (uporabniško ime odstranjeno) na zadnje urejanje uporabnika [[User:$1|$1]]',
+'rollback-success' => 'Razveljavljene spremembe uporabnika $1;
vrnjeno na urejanje uporabnika $2.',
-'sessionfailure' => 'Vaša prijava ni uspela; da bi preprečili ugrabitev seje, je bilo dejanje preklicano. Prosimo, izberite »Nazaj« in ponovno naložite stran, s katere prihajate, nato poskusite znova.',
+'sessionfailure' => 'Vaša prijava ni uspela; da bi preprečili ugrabitev seje, je bilo dejanje preklicano. Prosimo, izberite »Nazaj« in ponovno naložite stran, s katere prihajate, nato poskusite znova.',
# Protect
'protectlogpage' => 'Dnevnik zaščit strani',
@@ -1907,7 +2103,7 @@ Oglejte si [[Special:ProtectedPages|seznam zaščitenih strani]] za seznam trenu
'protectexpiry' => 'Poteče:',
'protect_expiry_invalid' => 'Čas izteka je neveljaven.',
'protect_expiry_old' => 'Čas izteka je v preteklosti.',
-'protect-unchain' => 'Odkleni dovoljenja za premikanje',
+'protect-unchain-permissions' => 'Odkleni nadaljne možnosti zaščite',
'protect-text' => "Tu si lahko ogledate in spremenite raven zaščitenosti strani '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Med blokado ne morete spreminjati stopenj zaščite.
To so trenutne nastavitve za stran '''$1''':",
@@ -1937,7 +2133,7 @@ Stopnjo zaščite te strani lahko spremenite, vendar to ne bo vplivalo na kaskad
** Neproduktivne urejevalske vojne
** Zelo obiskana stran',
'protect-edit-reasonlist' => 'Uredi razloge zaščite',
-'protect-expiry-options' => '1 uro:1 hour,1 dan:1 day,1 teden:1 week,2 tedna:2 weeks,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year,neomejeno dolgo:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 uro:1 hour,1 dan:1 day,1 teden:1 week,2 tedna:2 weeks,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year,neomejeno dolgo:infinite',
'restriction-type' => 'Dovoljenje:',
'restriction-level' => 'Stopnja zaščite:',
'minimum-size' => 'Min. velikost',
@@ -1980,6 +2176,7 @@ Morda imate napačno povezavo ali pa je bila redakcija obnovljena ali odstranjen
'undelete-nodiff' => 'Predhodnih različic ne najdem.',
'undeletebtn' => 'Obnovi',
'undeletelink' => 'poglej/obnovi',
+'undeleteviewlink' => 'ogled',
'undeletereset' => 'Ponastavi',
'undeleteinvert' => 'Obrni izbor',
'undeletecomment' => 'Razlog:',
@@ -2019,19 +2216,24 @@ $1',
'contributions-title' => 'Prispevki uporabnika $1',
'mycontris' => 'Prispevki',
'contribsub2' => 'Uporabnik: $1 ($2)',
-'nocontribs' => 'Ne najdem nobene merilom ustrezajoče spremembe.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ne najdem nobene merilom ustrezajoče spremembe.',
'uctop' => ' (vrh)',
'month' => 'Od meseca (in prej):',
'year' => 'Od leta (in prej):',
-'sp-contributions-newbies' => 'Prikaži samo prispevke novih računov',
-'sp-contributions-newbies-sub' => 'Prispevki novincev',
-'sp-contributions-newbies-title' => 'Uporabniški prispevki novih računov',
-'sp-contributions-blocklog' => 'dnevnik blokiranja',
-'sp-contributions-logs' => 'dnevniki',
-'sp-contributions-search' => 'Išči prispevke',
-'sp-contributions-username' => 'IP-naslov ali uporabniško ime:',
-'sp-contributions-submit' => 'Išči',
+'sp-contributions-newbies' => 'Prikaži samo prispevke novih računov',
+'sp-contributions-newbies-sub' => 'Prispevki novincev',
+'sp-contributions-newbies-title' => 'Uporabniški prispevki novih računov',
+'sp-contributions-blocklog' => 'dnevnik blokiranja',
+'sp-contributions-deleted' => 'izbrisani uporabnikovi prispevki',
+'sp-contributions-logs' => 'dnevniki',
+'sp-contributions-talk' => 'pogovor',
+'sp-contributions-userrights' => 'upravljanje s pravicami uporabnikov',
+'sp-contributions-blocked-notice' => 'Ta uporabnik je trenutno blokiran.
+Najnovejši vnos v dnevniku blokad je naveden spodaj:',
+'sp-contributions-search' => 'Išči prispevke',
+'sp-contributions-username' => 'IP-naslov ali uporabniško ime:',
+'sp-contributions-submit' => 'Išči',
# What links here
'whatlinkshere' => 'Kaj se povezuje sem',
@@ -2054,6 +2256,7 @@ $1',
# Block/unblock
'blockip' => 'Blokiranje IP-naslova ali uporabniškega imena',
+'blockip-title' => 'Blokiraj uporabnika',
'blockip-legend' => 'Blokiraj uporabnika',
'blockiptext' => "Naslednji obrazec vam omogoča, da določenemu IP-naslovu ali uporabniškemu imenu preprečite urejanje. To storimo le zaradi zaščite pred nepotrebnim uničevanjem in po [[{{MediaWiki:Policy-url}}|pravilih]]. Vnesite tudi razlog, ''na primer'' seznam strani, ki jih je uporabnik po nepotrebnem kvaril.",
'ipaddress' => 'IP-naslov',
@@ -2075,7 +2278,7 @@ $1',
'ipbenableautoblock' => 'Samodejno blokiraj zadnji IP-naslov tega uporabnika in vse naslednje naslove, ki jih bodo hoteli uporabiti',
'ipbsubmit' => 'Blokiraj naslov',
'ipbother' => 'Drugačen čas',
-'ipboptions' => '2 uri:2 hours,1 dan:1 day,3 dni:3 days,1 teden:1 week,2 tedna:2 weeks,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year,neomejeno dolgo:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 uri:2 hours,1 dan:1 day,3 dni:3 days,1 teden:1 week,2 tedna:2 weeks,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year,neomejeno dolgo:infinite',
'ipbotheroption' => 'drugo',
'ipbotherreason' => 'Drug/dodaten razlog:',
'ipbhidename' => 'Skrij uporabniško ime iz urejanja in seznamov',
@@ -2104,9 +2307,11 @@ Preglejte [[Special:IPBlockList|seznam blokiranih IP-naslovov]].',
'ipblocklist-sh-tempblocks' => '$1 začasne blokade',
'ipblocklist-sh-addressblocks' => '$1 blokade enega IP-naslova',
'ipblocklist-submit' => 'Išči',
+'ipblocklist-localblock' => 'Lokalna blokada',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Druga blokada|Drugi blokadi|Druge blokade}}',
'blocklistline' => '$1, $2 je blokiral(-a) $3 ($4)',
'infiniteblock' => 'neomejen čas',
-'expiringblock' => 'preteče: $1',
+'expiringblock' => 'preteče $1 ob $2',
'anononlyblock' => 'samo brezim.',
'noautoblockblock' => 'samodejna blokada je onemogočena',
'createaccountblock' => 'ustvarjanje računov onemogočeno',
@@ -2121,7 +2326,10 @@ Preglejte [[Special:IPBlockList|seznam blokiranih IP-naslovov]].',
'autoblocker' => 'Urejanje vam je bilo samodejno onemogočeno, saj je vaš IP-naslov pred kratkim uporabljal »[[User:$1|$1]]«.
Razlog za blokado uporabnika $1 je: »$2«',
'blocklogpage' => 'Dnevnik blokiranja',
-'blocklog-fulllog' => 'Celoten dnevnik blokiranj',
+'blocklog-showlog' => 'Ta uporabnik je že bil blokiran.
+Dnevnik blokiranja je na voljo spodaj:',
+'blocklog-showsuppresslog' => 'Ta uporabnik je že bil blokiran in skrit.
+Dnevnik skrivanja je na voljo spodaj:',
'blocklogentry' => '[[$1]] blokiran s časom poteka blokade $2 $3',
'reblock-logentry' => 'spremenil nastavitve blokade za [[$1]] z iztekom dne $2 ob $3',
'blocklogtext' => 'Prikazan je dnevnik blokiranja in deblokiranja uporabnikov. Samodejno blokirani IP-naslovi niso navedeni. Trenutno veljavna blokiranja so navedena na [[Special:IPBlockList|seznamu blokiranih IP-naslovov]].',
@@ -2141,10 +2349,12 @@ Razlog za blokado uporabnika $1 je: »$2«',
'ipb-needreblock' => '== Uporeabnik je že blokiran ==
$1 je že blokiran.
Ali želite spremeniti nastavitve blokade?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Druga blokada|Drugi blokadi|Druge blokade}}',
'ipb_cant_unblock' => 'Napaka: blokade št. $1 ni moč najti. Morda je bila že odstranjena.',
'ipb_blocked_as_range' => 'Napaka: IP-naslov $1 ni blokiran direktno in ga zato ni mogoče odblokirati.
Je pa blokiran kot del območja $2, ki ga lahko odblokirate.',
'ip_range_invalid' => 'Neveljaven IP-razpon.',
+'ip_range_toolarge' => 'Območja blokade večja od /$1 niso dovoljena.',
'blockme' => 'Blokiraj me',
'proxyblocker' => 'Blokator posredniških strežnikov',
'proxyblocker-disabled' => 'Ta funkcija je onemogočena.',
@@ -2155,6 +2365,8 @@ Gre za resno varnostno težavo, o kateri obvestite svojega internetnega ponudnik
'sorbs_create_account_reason' => 'Vaš IP-naslov je v DNSBL, ki ga uporablja {{GRAMMAR:tožilnik|{{SITENAME}}}}, naveden kot odprti posredniški strežnik (proxy).
Računa žal ne morete ustvariti.',
'cant-block-while-blocked' => 'Ne morete blokirati drugih uporabnikove, medtem ko ste sami blokirani.',
+'cant-see-hidden-user' => 'Uporabnik, ki ga poskušate blokirate, je že blokiran in skrit.
+Ker nimate pravice hideuser, si ne morete ogledati ali urejati uporabnikove blokade.',
# Developer tools
'lockdb' => 'Zakleni zbirko podatkov',
@@ -2195,6 +2407,7 @@ Prestavitev strani je lahko za priljubljeno stran velika in nepričakovana sprem
Če je tako, boste morali pogovorno stran, če želite, prestaviti ali povezati ročno. Če tega ne morete storiti, predlagajte prestavitev na strani [[Project:Želene prestavitve]], vsekakor pa tega '''''ne''''' počnite s preprostim izrezanjem in prilepljenjem vsebine, saj bi tako pokvarili zgodovino urejanja strani.",
'movearticle' => 'Prestavi stran:',
+'moveuserpage-warning' => "'''Opozorilo:''' Premikate uporabniško stran. To pomeni, da bo premaknjena samo stran in uporabnik ''ne'' bo preimenovan.",
'movenologin' => 'Niste prijavljeni',
'movenologintext' => 'Za prestavljanje strani morate biti registrirani in [[Special:UserLogin|prijavljeni]].',
'movenotallowed' => 'Nimate dovoljenja, da premikate strani.',
@@ -2205,7 +2418,7 @@ Prestavitev strani je lahko za priljubljeno stran velika in nepričakovana sprem
'move-watch' => 'Opazuj to stran',
'movepagebtn' => 'Prestavi stran',
'pagemovedsub' => 'Uspešno prestavljeno',
-'movepage-moved' => "Stran '''»$1«''' je prestavljena na naslov '''»$2«'''.", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "Stran '''»$1«''' je prestavljena na naslov '''»$2«'''.",
'movepage-moved-redirect' => 'Preusmeritev je bila ustvarjena.',
'movepage-moved-noredirect' => 'Izdelava preusmeritve je bila zatrta.',
'articleexists' => 'Izbrano ime je že zasedeno ali pa ni veljavno.
@@ -2249,6 +2462,14 @@ strani ni mogoče prestaviti samo vaše.',
'imageinvalidfilename' => 'Ciljno ime datoteke je neveljavno',
'fix-double-redirects' => 'Posodobi vse preusmeritve, ki kažejo na prvotni naslov',
'move-leave-redirect' => 'Na prejšnji strani ustvari preusmeritev',
+'protectedpagemovewarning' => "'''Opozorilo:''' Stran je bila zaklenjena, tako da jo lahko prestavljajo samo uporabniki z administratorskimi dovoljenji.
+Najnovejši vnos v dnevniku je na voljo spodaj:",
+'semiprotectedpagemovewarning' => "'''Opomba:''' Stran je bila zaklenjena, tako da jo lahko prestavljajo samo registrirani uporabniki.
+Najnovejši vnos v dnevniku je na voljo spodaj:",
+'move-over-sharedrepo' => '== Datoteka obstaja ==
+[[:$1]] obstaja v deljeni shrambi. Premik datoteke na ta naslov bo prepisalo deljeno datoteko.',
+'file-exists-sharedrepo' => 'Izbrano ime datoteke je že v uporabi v deljeni shrambi.
+Prosimo, izberite drugo ime.',
# Export
'export' => 'Izvoz strani',
@@ -2272,15 +2493,21 @@ stran »[[{{MediaWiki:Mainpage}}]]«.',
'export-pagelinks' => 'Vključi povezane strani do globine:',
# Namespace 8 related
-'allmessages' => 'Sistemska sporočila',
-'allmessagesname' => 'Ime',
-'allmessagesdefault' => 'Prednastavljeno besedilo',
-'allmessagescurrent' => 'Trenutno besedilo',
-'allmessagestext' => 'Navedena so v imenskem prostoru MediaWiki dostopna sistemska sporočila.
+'allmessages' => 'Sistemska sporočila',
+'allmessagesname' => 'Ime',
+'allmessagesdefault' => 'Prednastavljeno besedilo',
+'allmessagescurrent' => 'Trenutno besedilo',
+'allmessagestext' => 'Navedena so v imenskem prostoru MediaWiki dostopna sistemska sporočila.
Za lokalizacijo in prevajanje obiščite [http://www.mediawiki.org/wiki/Localisation MediaWiki] in [http://translatewiki.net translatewiki.net] in tako prispevajte k splošnemu prevodu programja.',
-'allmessagesnotsupportedDB' => "Te strani ni mogoče uporabljati, ker je bilo '''\$wgUseDatabaseMessages''' izključeno.",
-'allmessagesfilter' => 'Filter pogostih izrazov:',
-'allmessagesmodified' => 'Prikaži le spremenjeno',
+'allmessagesnotsupportedDB' => "Te strani ni mogoče uporabljati, ker je bilo '''\$wgUseDatabaseMessages''' izključeno.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filtriraj po prilagoditvenem stanju:',
+'allmessages-filter-unmodified' => 'Nespremenjen',
+'allmessages-filter-all' => 'Vse',
+'allmessages-filter-modified' => 'Spremenjeno',
+'allmessages-prefix' => 'Filtriraj po predponi:',
+'allmessages-language' => 'Jezik:',
+'allmessages-filter-submit' => 'Pojdi',
# Thumbnails
'thumbnail-more' => 'Povečaj',
@@ -2290,6 +2517,9 @@ Za lokalizacijo in prevajanje obiščite [http://www.mediawiki.org/wiki/Localisa
'djvu_no_xml' => 'Ni mogoče pridobiti XML za datoteko DjVu',
'thumbnail_invalid_params' => 'Neveljavni parametri za sličico',
'thumbnail_dest_directory' => 'Ne morem ustvariti ciljnega direktorija',
+'thumbnail_image-type' => 'Vrsta slike ni podprta',
+'thumbnail_gd-library' => 'Nepopolna konfiguracija knjižice GD: manjka funkcija $1',
+'thumbnail_image-missing' => 'Kaže, da datoteka manjka: $1',
# Special:Import
'import' => 'Uvoz strani',
@@ -2358,6 +2588,7 @@ Prosimo, poskusite znova.',
'tooltip-ca-viewsource' => 'Stran je zaščitena, ogledate si lahko njeno izvorno kodo',
'tooltip-ca-history' => 'Prejšnje redakcije strani',
'tooltip-ca-protect' => 'Zaščitite stran',
+'tooltip-ca-unprotect' => 'Odstranite zaščito strani',
'tooltip-ca-delete' => 'Brišite stran',
'tooltip-ca-undelete' => 'Obnovite pred izbrisom napravljena urejanja strani.',
'tooltip-ca-move' => 'Preimenujte stran',
@@ -2368,6 +2599,7 @@ Prosimo, poskusite znova.',
'tooltip-search-fulltext' => 'Najde vneseno besedilo po straneh',
'tooltip-p-logo' => 'Glavna stran',
'tooltip-n-mainpage' => 'Obiščite Glavno stran',
+'tooltip-n-mainpage-description' => 'Obiščite glavno stran',
'tooltip-n-portal' => 'O projektu, kaj lahko storite, kje lahko kaj najdete',
'tooltip-n-currentevents' => 'Spoznajte ozadje trenutnih dogodkov',
'tooltip-n-recentchanges' => 'Seznam zadnjih sprememb {{GRAMMAR:rodilnik|{{SITENAME}}}}',
@@ -2413,10 +2645,12 @@ Omogoča vnos pojasnila v povzetku urejanja.',
# Attribution
'anonymous' => '{{PLURAL:$1|Brezimni uporabnik|Brezimna uporabnika|Brezimni uporabniki}} {{GRAMMAR:rodilnik|{{SITENAME}}}}',
'siteuser' => 'uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Stran je zadnjič urejal(-a) $3 (čas spremembe: $2, $1).', # $1 date, $2 time, $3 user
+'anonuser' => 'Brezimni uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Stran je zadnjič urejal(-a) $3 (čas spremembe: $2, $1).',
'othercontribs' => 'Temelji na delu $1.',
'others' => 'drugi',
'siteusers' => '{{PLURAL:$2|uporabnika|uporabnikov}} {{GRAMMAR:rodilnik|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|Brezimni uporabnik|Brezimna uporabnika|Brezimni uporabniki}} {{GRAMMAR:rodilnik|{{SITENAME}}}} $1',
'creditspage' => 'Zasluge za stran',
'nocredits' => 'Ni dostopnih podatkov o zaslugah za stran.',
@@ -2444,11 +2678,24 @@ Omogoča vnos pojasnila v povzetku urejanja.',
'mw_math_modern' => 'Priporočeno za sodobne brskalnike',
'mw_math_mathml' => 'Če je le mogoče, uporabi MathML (preizkusno)',
+# Math errors
+'math_failure' => 'Ni mi uspelo razčleniti',
+'math_unknown_error' => 'neznana napaka',
+'math_unknown_function' => 'neznana funkcija',
+'math_lexing_error' => 'slovarska napaka',
+'math_syntax_error' => 'skladenjska napaka',
+'math_image_error' => 'Pretvarjanje v PNG ni uspelo;
+preverite, ali so latex, dvips, gs, in convert pravilno nameščeni.',
+'math_bad_tmpdir' => 'Začasne mape za math ne morem ustvariti ali pisati vanjo.',
+'math_bad_output' => 'Izhodne mape za math ne morem ustvariti ali pisati vanjo.',
+'math_notexvc' => 'Manjka izvedbena datoteka texvc;
+za njeno namestitev si poglejte math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'Označite kot nadzorovano',
'markaspatrolledtext' => 'Označite stran kot nadzorovano',
'markedaspatrolled' => 'Označeno kot nadzorovano',
-'markedaspatrolledtext' => 'Izbrano različico ste označili kot nadzorovano.',
+'markedaspatrolledtext' => 'Izbrana redakcija [[:$1]] je bila označena kot nadzorovana.',
'rcpatroldisabled' => 'Spremljanje zadnjih sprememb je onemogočeno.',
'rcpatroldisabledtext' => 'Spremljanje zadnjih sprememb je začasno onemogočeno.',
'markedaspatrollederror' => 'Ni mogoče označiti kot pregledano',
@@ -2478,13 +2725,10 @@ $1',
'previousdiff' => '← Prejšnje urejanje',
'nextdiff' => 'Novejše urejanje →',
-# Visual comparison
-'visual-comparison' => 'Vizualna primerjava',
-
# Media information
'mediawarning' => "'''Opozorilo''': Tovrstni tip datotek lahko vsebuje zlonamerno kodo.
Z njenim zagonom lahko ogrozite vaš sistem.",
-'imagemaxsize' => 'Slike na opisnih straneh omeji na:',
+'imagemaxsize' => "Omejitev velikosti slik:<br />''(za opisne strani datotek)''",
'thumbsize' => 'Velikost sličice (thumbnail):',
'widthheight' => '$1&nbsp;×&nbsp;$2',
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|stran|strani}}',
@@ -2494,6 +2738,8 @@ Z njenim zagonom lahko ogrozite vaš sistem.",
'svg-long-desc' => '(datoteka SVG, v izvirniku $1 × $2 slikovnih točk, velikost datoteke: $3)',
'show-big-image' => 'Slika v višji ločljivosti',
'show-big-image-thumb' => '<small>Velikost predogleda: $1 × $2 točk</small>',
+'file-info-gif-looped' => 'ponavljajoče',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|sličica|sličici|sličice|sličic}}',
# Special:NewFiles
'newimages' => 'Galerija novih datotek',
@@ -2527,7 +2773,7 @@ Druga bodo po privzetem skrita.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Širina',
@@ -2654,14 +2900,14 @@ Druga bodo po privzetem skrita.
'exif-unknowndate' => 'Neznan datum',
-'exif-orientation-1' => 'Navadna', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Vodoravno zrcaljeno', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Zasukano za 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Navpično zrcaljeno', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Zasukano za 90° v levo in navpično zrcaljeno', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Zasukano za 90° v desno', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Zasukano za 90° v desno in navpično zrcaljeno', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Zasukano za 90° v levo', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Navadna',
+'exif-orientation-2' => 'Vodoravno zrcaljeno',
+'exif-orientation-3' => 'Zasukano za 180°',
+'exif-orientation-4' => 'Navpično zrcaljeno',
+'exif-orientation-5' => 'Zasukano za 90° v levo in navpično zrcaljeno',
+'exif-orientation-6' => 'Zasukano za 90° v desno',
+'exif-orientation-7' => 'Zasukano za 90° v desno in navpično zrcaljeno',
+'exif-orientation-8' => 'Zasukano za 90° v levo',
'exif-planarconfiguration-1' => 'grudast format',
'exif-planarconfiguration-2' => 'ravninski format',
@@ -2786,7 +3032,7 @@ Druga bodo po privzetem skrita.
'exif-gpsmeasuremode-2' => 'Dvorazsežnostno merjenje',
'exif-gpsmeasuremode-3' => 'Trirazsežnostno merjenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometri na uro',
'exif-gpsspeed-m' => 'Milje na uro',
'exif-gpsspeed-n' => 'Vozli',
@@ -2805,6 +3051,7 @@ Druga bodo po privzetem skrita.
'watchlistall2' => 'vse',
'namespacesall' => 'vse',
'monthsall' => 'vse',
+'limitall' => 'vse',
# E-mail address confirmation
'confirmemail' => 'Potrditev naslova elektronske pošte',
@@ -2827,15 +3074,20 @@ Posrednik e-pošte je vrnil: $1',
'confirmemail_loggedin' => 'Svoj elektronski naslov ste uspešno potrdili.',
'confirmemail_error' => 'Vaša potrditev se žal ni shranila.',
'confirmemail_subject' => 'Potrditev e-poštnega naslova',
-'confirmemail_body' => 'Nekdo z IP-naslovom »$1« (verjetno vi) je v {{GRAMMAR:dajalnik|{{SITENAME}}}} ustvaril račun »$2« in zanj vpisal vaš elektronski naslov. Da bi potrdili, da ta resnično pripada vam in s tem lahko začeli uporabljati e-poštne storitve {{GRAMMAR:rodilnik|{{SITENAME}}}}, odprite naslednjo povezavo:
+'confirmemail_body' => 'Nekdo, verjetno vi, z IP-naslovom $1,
+je v {{GRAMMAR:dajalnik|{{SITENAME}}}} ustvaril račun »$2« in zanj vpisal ta elektronski naslov.
+
+Da bi potrdili, da ta račun resnično pripada vam in s tem
+lahko začeli uporabljati e-poštne storitve {{GRAMMAR:rodilnik|{{SITENAME}}}}, odprite naslednjo povezavo:
$3
-Če tega niste napravili vi, sledite naslednji povezavi in tako prekličite potrditev elektronskega naslova:
+Če tega *niste* napravili vi, sledite naslednji povezavi
+in tako prekličite potrditev elektronskega naslova:
$5
-Potrditvena koda bo potekla ob $4.',
+Potrditvena koda bo potekla $4.',
'confirmemail_invalidated' => 'Potrditev e-poštnega naslova preklicana',
'invalidateemail' => 'Prekliči potrditev e-poštnega naslova',
@@ -2931,7 +3183,7 @@ Uporabite lahko tudi [[Special:Watchlist/edit|standardni urejevalnik]].',
'duplicate-defaultsort' => "'''Opozorilo:''' Privzeti ključ razvrščanja »$2« prepiše prejšnji privzeti ključ razvrščanja »$1«.",
# Special:Version
-'version' => 'Različica', # Not used as normal message but as header for the special page itself
+'version' => 'Različica',
'version-extensions' => 'Nameščene razširitve',
'version-specialpages' => 'Posebne strani',
'version-parserhooks' => 'Razširitve razčlenjevalnika',
@@ -2945,7 +3197,7 @@ Uporabite lahko tudi [[Special:Watchlist/edit|standardni urejevalnik]].',
'version-skin-extension-functions' => 'Funkcije razširitev kože',
'version-hook-name' => 'Ime razširitve',
'version-hook-subscribedby' => 'Naročen s strani',
-'version-version' => 'Različica',
+'version-version' => '(Različica $1)',
'version-license' => 'Dovoljenje',
'version-software' => 'Nameščena programska oprema',
'version-software-product' => 'Izdelek',
@@ -3027,4 +3279,15 @@ Ta stran se sooča s tehničnimi težavami.',
'dberr-outofdate' => 'Pomnite, da so njegovi imeniki naših vsebin lahko zastareli.',
'dberr-cachederror' => 'To je shranjena kopija zahtevane strani, ki morda ni najnovejša.',
+# HTML forms
+'htmlform-invalid-input' => 'Z delom vašega vnosa so težave',
+'htmlform-select-badoption' => 'Vrednost, ki ste jo vnesli, ni veljavna.',
+'htmlform-int-invalid' => 'Vrednost, ki ste jo vnesli, ni celo število.',
+'htmlform-float-invalid' => 'Vrednost, ki ste jo vnesli, ni število.',
+'htmlform-int-toolow' => 'Vrednost, ki ste jo vnesli, je manjša od najmanjše dovoljene vrednosti $1',
+'htmlform-int-toohigh' => 'Vrednost, ki ste jo vnesli, je večja od največje dovoljene vrednosti $1',
+'htmlform-submit' => 'Pošlji',
+'htmlform-reset' => 'Razveljavi spremembe',
+'htmlform-selectorother-other' => 'Drugo',
+
);
diff --git a/languages/messages/MessagesSli.php b/languages/messages/MessagesSli.php
new file mode 100644
index 00000000..7b7263bc
--- /dev/null
+++ b/languages/messages/MessagesSli.php
@@ -0,0 +1,2856 @@
+<?php
+/** Lower Silesian (Schläsch)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Als-Holder
+ * @author Jens Liebenau
+ * @author Jonny84
+ * @author Piotron
+ * @author Purodha
+ * @author Schläsinger
+ * @author Teutonius
+ * @author The Evil IP address
+ * @author Timpul
+ * @author Äberlausitzer
+ */
+
+$fallback = 'de';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Verknipfonga unterstreeicha:',
+'tog-highlightbroken' => 'Verknipfonga uff lääre Seeita harvurheeba <a href="" class="new">asu</a> (oder asu:<a href="" class="internal">?</a>).',
+'tog-justify' => 'Obschniete eim Block setza',
+'tog-hideminor' => 'Klänne Änneronga ausblenda',
+'tog-hidepatrolled' => 'Gepriefte Änneronga ausblenda',
+'tog-newpageshidepatrolled' => 'Kontrollierte Seeta ei dar Liste "neue Seeta" verberga',
+'tog-extendwatchlist' => 'Erweiterte Beobachtungsliste zur Oazeige oller Änderunga',
+'tog-usenewrc' => 'Erweiterte Darstellung dar „Letzta Änderunga“ (benetigt JavaScript)',
+'tog-numberheadings' => 'Ieberschrifta automatisch nummeriern',
+'tog-showtoolbar' => 'Beoarbeeta Werkzichleiste aozäan (beneeticht JavaScript)',
+'tog-editondblclick' => 'Seyta mit Doppelklick beoarbeeta (JavaScript)',
+'tog-editsection' => 'Verknipfunga zim Beoarbeeta voo eenzelna Obschieta oazeega',
+'tog-editsectiononrightclick' => 'Eenzelne Obschniete dorch Rechtsklick beoarbeeta (JavaScript)',
+'tog-showtoc' => 'Inhaltsverzeichnis aozäan bei meh wie drei Ieberschrifta',
+'tog-rememberpassword' => 'Notzer sull uff de Lengde oagemeldt blein (login uff diesem Rechner speichern)',
+'tog-editwidth' => 'Eingabefeld erweitern, im dann ganza Bildschirm auszufiella',
+'tog-watchcreations' => 'Salber derstallte Seyta automatisch beobachta',
+'tog-watchdefault' => 'Salber geänderte on neu erstellte Seyta automatisch beobachta (zu menner Beobachtungsliste hinzufügen)',
+'tog-watchmoves' => 'Vo merr salber verschobene Seyta autoatisch beobachta',
+'tog-watchdeletion' => 'Salber geläschte Seyta automatisch beobachta',
+'tog-minordefault' => 'Eegene Änderunga standardmäßig als geringfiegich markiern',
+'tog-previewontop' => 'Vurschau uberhoalb voo dam Beoarbeetungsfanster oazäan',
+'tog-previewonfirst' => 'Beim irscha Beoarbeeta emmer de Vurschau oazeega',
+'tog-nocache' => 'Zwischaspeicharn derr Seyte (eim cache) deaktiviern',
+'tog-enotifwatchlistpages' => 'Bei Änderunga voo beobachteta Seyta mer an E-mail schicka',
+'tog-enotifusertalkpages' => 'Bei Änderunga oa menner Benutzer-Dischkurseyte E-mail oa mich schicka',
+'tog-enotifminoredits' => 'Au bei klenn Änderunga E-mail oa mich schicka',
+'tog-enotifrevealaddr' => 'Denne E-mail Oaschrift wart ei Benoachrichtigungs-E-mails oagezäat',
+'tog-shownumberswatching' => 'Oazoahl derr beobachtenden Nutzer oazäan',
+'tog-oldsig' => 'Vorschau der aktuella Signatur:',
+'tog-fancysig' => 'Signatur ols Wikitext behandeln (ohne automatische Verlinkung)',
+'tog-externaleditor' => "Extern'n Editor als Standard benutza (nur fier Experta, is missa spezielle Einstellungen uff dam eegenen Rechner vurgenumma warn)",
+'tog-externaldiff' => 'Externes Diff-Programm als Standard benutza (nur fier Experta, is missa spezielle Einstellungen uff dam eegenen Rechner vurgenumma warn)',
+'tog-showjumplinks' => '„Wechseln zu“-Verknipfunga aktiviern',
+'tog-uselivepreview' => 'Direkte Vurschau notza (beneetigt JavaScript) (vrsuchsweise)',
+'tog-forceeditsummary' => 'Warnen, wenn bem Speichern de Zsoammafassung fahln tutt',
+'tog-watchlisthideown' => 'Eigene Bearbeitungen ausblenden',
+'tog-watchlisthidebots' => 'Bearbeitungen durch Bots ausblenden',
+'tog-watchlisthideminor' => 'Kleine Bearbeitungen ausblenden',
+'tog-watchlisthideliu' => 'Bearbeitungen angemeldeter Benutzer ausblenden',
+'tog-watchlisthideanons' => 'Bearbeitungen anonymer Benutzer (IP-Adressen) ausblenden',
+'tog-watchlisthidepatrolled' => 'Kontrollierte Änderungen ei der Beobachtungsliste ausblenda',
+'tog-nolangconversion' => 'Konvertierung von Sprachvarianten deaktivieren',
+'tog-ccmeonemails' => 'Schicke mir Kopien der E-Mails, die ich anderen Benutzern sende',
+'tog-diffonly' => 'Zeige beim Versionsvergleich nur die Unterschiede, nicht die vollständige Seite',
+'tog-showhiddencats' => 'Vestackte Kategorien oazäan',
+'tog-norollbackdiff' => 'Underschied noachm Zericksatza underdricka',
+
+'underline-always' => 'immer',
+'underline-never' => 'nie',
+'underline-default' => 'obhängig voo dan Eistellunga der Suchmaschine',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Schriftfamilie fier dann Text eim Beorbeetungsfanster:',
+'editfont-default' => 'obhängig voo dan Eistellunga der Suchmaschine',
+'editfont-monospace' => 'Schrift miet faster Zeechabreite',
+'editfont-sansserif' => 'Serifenlose Groteskschrift',
+'editfont-serif' => 'Schrift miet Serifen',
+
+# Dates
+'sunday' => 'Sunntich',
+'monday' => 'Montich',
+'tuesday' => 'Dienstich',
+'wednesday' => 'Mietwuch',
+'thursday' => 'Dunnstich',
+'friday' => 'Freitich',
+'saturday' => 'Sinnomd',
+'sun' => 'Su',
+'mon' => 'Mu',
+'tue' => 'Di',
+'wed' => 'Mi',
+'thu' => 'Du',
+'fri' => 'Fr',
+'sat' => 'Si',
+'january' => 'Januar',
+'february' => 'Februar',
+'march' => 'März',
+'april' => 'Oapril',
+'may_long' => 'Mai',
+'june' => 'Juni',
+'july' => 'Juli',
+'august' => 'August',
+'september' => 'September',
+'october' => 'Oktober',
+'november' => 'November',
+'december' => 'Dezember',
+'january-gen' => 'Januar',
+'february-gen' => 'Februars',
+'march-gen' => 'Märzes',
+'april-gen' => 'Aprils',
+'may-gen' => 'Mais',
+'june-gen' => 'Junis',
+'july-gen' => 'Julis',
+'august-gen' => 'Augusts',
+'september-gen' => 'Septembers',
+'october-gen' => 'Oktobers',
+'november-gen' => 'Novembers',
+'december-gen' => 'Dezembers',
+'jan' => 'Jan.',
+'feb' => 'Feb.',
+'mar' => 'Mär.',
+'apr' => 'Apr.',
+'may' => 'Mai',
+'jun' => 'Jun.',
+'jul' => 'Jul.',
+'aug' => 'Aug.',
+'sep' => 'Sep.',
+'oct' => 'Okt.',
+'nov' => 'Nov.',
+'dec' => 'Dez.',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Heetgruppe|Heetgruppa}}',
+'category_header' => 'Seyta ei derr Heetgruppe "$1"',
+'subcategories' => 'Underkategorien',
+'category-media-header' => 'Media ei der Kategorie "$1"',
+'category-empty' => "''Diese Heetgruppe enthält zurzeit kenne Seyta oder Media.''",
+'hidden-categories' => '{{PLURAL:$1|Verstackte Kategorie|Verstackte Kategorien}}',
+'hidden-category-category' => 'Verstackte Kategorie',
+'category-subcat-count' => '{{PLURAL:$2|Diese Heetgruppe enthält folgende Underheetgruppe:|{{PLURAL:$1|Folgende Underheetgruppe ies anne voo insgesomt $2 Underkategoria ei dieser Heetgruppe:|Is waan $1 voo insgesomt $2 Underheetgruppa ei dieser Heetgruppe oagezäat:}}}}',
+'category-subcat-count-limited' => 'Diese Kategorie enthält folgende {{PLURAL:$1|Underkategorie|$1 Underkategoria}}:',
+'category-article-count' => '{{PLURAL:$2|Diese Heetgruppe enthält folgende Seyte:|{{PLURAL:$1|Folgende Seyte ies eene voo insgesomt $2 Seyta ei dieser Heetgruppe:|Is waan $1 voo insgesomt $2 Seyta ei dieser Heetgruppe oagezäat:}}}}',
+'category-article-count-limited' => 'Folgende {{PLURAL:$1|Seyte ies|$1 Seyta sein}} ei dieser Kategorie enthalta:',
+'category-file-count' => '{{PLURAL:$2|Diese Kategorie enthält folgende Seyte:|{{PLURAL:$1|Folgende Seyte ies eene voo insgesomt $2 Seyta ei dieser Kategorie:|Is werden $1 voo insgesomt $2 Seyta ei dieser Kategorie oagezäat:}}}}',
+'category-file-count-limited' => 'Folgende {{PLURAL:$1|Datei ies|$1 Dateien sein}} ei dieser Kategorie enthalta:',
+'listingcontinuesabbrev' => '(Furtsetzung)',
+'index-category' => 'Indizierte Seyta',
+'noindex-category' => 'Neindizierte Seyta',
+
+'mainpagetext' => "'''MediaWiki wourde erfolgreich installiert.'''",
+'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software fendest du eim [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbichl].
+
+== Stoarthilfa ==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+
+'about' => 'Ieber',
+'article' => 'Seyte',
+'newwindow' => '(wird ei annem neua Fanster geöffnet)',
+'cancel' => 'Abbrecha',
+'moredotdotdot' => 'Mehr ...',
+'mypage' => 'Eigene Seyte',
+'mytalk' => 'Mei Dischkur',
+'anontalk' => 'Diskussionsseite dieser IP',
+'navigation' => 'Navigation',
+'and' => ',&#32;und',
+
+# Cologne Blue skin
+'qbfind' => 'Fenda',
+'qbbrowse' => 'Blättern',
+'qbedit' => 'Ändern',
+'qbpageoptions' => 'Seytaoptiona',
+'qbpageinfo' => 'Seytadata',
+'qbmyoptions' => 'Menne Seyta',
+'qbspecialpages' => 'Spezialseyta',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Obschnitt hinzufiega',
+'vector-action-delete' => 'Läscha',
+'vector-action-move' => 'Verschieba',
+'vector-action-protect' => 'Schützen',
+'vector-action-undelete' => 'Wiederherstella',
+'vector-action-unprotect' => 'Freigahn',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hilfeseyte',
+'vector-namespace-image' => 'Datei',
+'vector-namespace-main' => 'Seyte',
+'vector-namespace-media' => 'Mediaseyte',
+'vector-namespace-mediawiki' => 'MediaWiki-Systemtext',
+'vector-namespace-project' => 'Projektseyte',
+'vector-namespace-special' => 'Spezialseyte',
+'vector-namespace-talk' => 'Dischkur',
+'vector-namespace-template' => 'Vierlooche',
+'vector-namespace-user' => 'Notzerseyte',
+'vector-view-create' => 'Erstella',
+'vector-view-edit' => 'Bearbeita',
+'vector-view-history' => 'Versionsgeschichte',
+'vector-view-view' => 'Lessa',
+'vector-view-viewsource' => 'Quelltext siehn',
+'actions' => 'Aksjonna',
+'namespaces' => 'Noamensraum:',
+'variants' => 'Varianta',
+
+'errorpagetitle' => 'Fehler',
+'returnto' => 'Zurück zur Seite $1.',
+'tagline' => 'Aus {{SITENAME}}',
+'help' => 'Hilfe',
+'search' => 'Siche',
+'searchbutton' => 'Sicha',
+'go' => 'Ausfiehrn',
+'searcharticle' => 'Seyte',
+'history' => 'Versionen',
+'history_short' => 'Geschichte',
+'updatedmarker' => '(geändert)',
+'info_short' => 'Information',
+'printableversion' => 'Druckversion',
+'permalink' => 'Permanentlink',
+'print' => 'Drucken',
+'edit' => 'Beoarbeita',
+'create' => 'Erstella',
+'editthispage' => 'Seyte beoarbeeta',
+'create-this-page' => 'Seyte erstella',
+'delete' => 'Löschen',
+'deletethispage' => 'Diese Seyte löschen',
+'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen',
+'protect' => 'Schützen',
+'protect_change' => 'ändern',
+'protectthispage' => 'Seite schützen',
+'unprotect' => 'Freigahn',
+'unprotectthispage' => 'Schutz aufheben',
+'newpage' => 'Neue Seyte',
+'talkpage' => 'Diskussion',
+'talkpagelinktext' => 'Dischkur',
+'specialpage' => 'Spezialseyte',
+'personaltools' => 'Persönliche Werkzeuge',
+'postcomment' => 'Neuer Obschnitt',
+'articlepage' => 'Seyte',
+'talk' => 'Dischkur',
+'views' => 'Oansichta',
+'toolbox' => 'Werkzeuge',
+'userpage' => 'Nutzerseyte oazeiga',
+'projectpage' => 'Projektseyte',
+'imagepage' => 'Dateiseyte oazeiga',
+'mediawikipage' => 'Dischkurseyte oazeiga',
+'templatepage' => 'Vurloogaseyte oazeiga',
+'viewhelppage' => 'Hilfeseyte oanzeiga',
+'categorypage' => 'Heetgruppeseyte oazeiga',
+'viewtalkpage' => 'Dischkur',
+'otherlanguages' => 'Ei andern Sproacha',
+'redirectedfrom' => '(Weitergeleitet vo $1)',
+'redirectpagesub' => 'Weiterleitung',
+'lastmodifiedat' => 'Diese Seyte wurde zuletzt oam $1 im $2 Seeger geändert.',
+'viewcount' => 'Diese Seyte wurde bisher {{PLURAL:$1|eimuol|$1 times}} oabgerufa.',
+'protectedpage' => 'Geschützte Seyte',
+'jumpto' => 'Wechseln zu:',
+'jumptonavigation' => 'Navigation',
+'jumptosearch' => 'Siche',
+'view-pool-error' => 'Entschuldigung, de Server sein eim Moment ieberlastet.
+Zu viele Benutzer versicha, diese Seyte zu besicha.
+Bitte warte eenige Minuta, bevor du is noo eemoll versichst.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Ieber {{SITENAME}}',
+'aboutpage' => 'Project:Ieber',
+'copyright' => 'Inhalt ies verfügbar unter der $1.',
+'copyrightpage' => '{{ns:project}}:Urheberrecht',
+'currentevents' => 'Aktuelle Ereignisse',
+'currentevents-url' => 'Project:Aktuelle Ereignisse',
+'disclaimers' => 'Impressum',
+'disclaimerpage' => 'Project:Impressum',
+'edithelp' => 'Bearbeitungshilfe',
+'edithelppage' => 'Help:Bearbeitungshilfe',
+'helppage' => 'Help:Hilfe',
+'mainpage' => 'Heetseyte',
+'mainpage-description' => 'Heetseyte',
+'policy-url' => 'Project:Leitlinien',
+'portal' => '{{SITENAME}}-Portal',
+'portal-url' => 'Project:Nutzerportal',
+'privacy' => 'Datenschutz',
+'privacypage' => 'Project:Datenschutz',
+
+'badaccess' => 'Kenne ausreichenden Rechte',
+'badaccess-group0' => 'Du hast nicht die erforderliche Berechtigung für diese Aktion.',
+'badaccess-groups' => 'Diese Aktion ies beschränkt uff Benutzer, de {{PLURAL:$2|der Gruppe|anner der Gruppen}} „$1“ angehören.',
+
+'versionrequired' => 'Version $1 vo MediaWiki ies erforderlich',
+'versionrequiredtext' => 'Version $1 vo MediaWiki ies erforderlich, im diese Seyte zu nutza. Siehe de [[Special:Version|Versionsseyte]]',
+
+'ok' => 'OK',
+'retrievedfrom' => 'voo "$1"',
+'youhavenewmessages' => 'Du hust $1 ($2).',
+'newmessageslink' => 'Neue Noachrichta',
+'newmessagesdifflink' => 'neue Noachrichta',
+'youhavenewmessagesmulti' => 'Du hast neue Nachrichta: $1',
+'editsection' => 'Beorbeita',
+'editold' => 'Beoarbeeta',
+'viewsourceold' => 'Quelltext oanzeiga',
+'editlink' => 'beoarbeeta',
+'viewsourcelink' => 'Quelltext oanschaua',
+'editsectionhint' => 'Oabschnitt beorbeita: $1',
+'toc' => 'Inhoaltsverzeichnis',
+'showtoc' => 'Oanzeega',
+'hidetoc' => 'Verberga',
+'thisisdeleted' => '$1 oanseha oder wiederherstella?',
+'viewdeleted' => '$1 oanzeega?',
+'restorelink' => '$1 {{PLURAL:$1|gelöschte Version|gelöschte Versiona}}',
+'feedlinks' => 'Feed:',
+'feed-invalid' => 'Ungültiger Abonnement-Typ.',
+'feed-unavailable' => 'Es steha keene Feeds zur Verfiegung.',
+'site-rss-feed' => 'RSS-Feed fier $1',
+'site-atom-feed' => 'Atom-Feed fier $1',
+'page-rss-feed' => 'RSS-Feed fier „$1“',
+'page-atom-feed' => 'Atom-Feed fier „$1“',
+'red-link-title' => '$1 (Seyte ies nich doo)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Seyte',
+'nstab-user' => 'Benutzerseyte',
+'nstab-media' => 'Media',
+'nstab-special' => 'Spezialseyte',
+'nstab-project' => 'Portalseyte',
+'nstab-image' => 'Datei',
+'nstab-mediawiki' => 'MediaWiki-Systemtext',
+'nstab-template' => 'Vierlooche',
+'nstab-help' => 'Hilfeseyte',
+'nstab-category' => 'Kategorie',
+
+# Main script and global functions
+'nosuchaction' => 'Diese Aktion gibt es nicht',
+'nosuchactiontext' => "De ei dar URL oagegebene Aksjonn werd vu MediaWiki ne understietzt.
+Is koan a Schreibfahler ei dar URL vorliega oder is wurde a fahlerhafter Link oageklickt.
+Is koan siech au im an'n Programmierfahler ei dar Software, de uff {{SITENAME}} benutzt werd, handeln.",
+'nosuchspecialpage' => 'Spezialseyte nee vorhoanda',
+'nospecialpagetext' => '<strong>De uffgerufene Spezialseyte ies nee vorhanden.</strong>
+
+Oalle verfügbara Spezialseyta sein ei der [[Special:SpecialPages|Liste der Spezialseyta]] zu finda.',
+
+# General errors
+'error' => 'Fehler',
+'databaseerror' => 'Fehler ei der Datenbank',
+'dberrortext' => 'Is ies a Datenbankfahler uffgetreten.
+Dar Grund koan a Programmierfahler sei.
+De letzte Datenbankoabfroage lautete:
+<blockquote><tt>$1</tt></blockquote>
+aus dar Funksjonn „<tt>$2</tt>“.
+De Datenbank meldete dann Fahler „<tt>$3: $4</tt>“.',
+'dberrortextcl' => "Is goab an'n Syntaxfahler ei dar Datenbankobfroage.
+De letzte Datenbankobfroage lautete: „$1“ aus dar Funksjonn „<tt>$2</tt>“.
+De Datenbank meldete dann Fahler: „<tt>$3: $4</tt>“.",
+'laggedslavemode' => 'Achtung: Die angezeigte Seite enthält unter Umständen nicht die jüngsten Bearbeitungen.',
+'readonly' => 'Datenbanksperre',
+'enterlockreason' => 'Bitte gib einen Grund ein, warum die Datenbank gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung',
+'readonlytext' => 'Die Datenbank ist vorübergehend für Neueinträge und Änderungen gesperrt. Bitte versuche es später noch einmal.
+
+Grund der Sperrung: $1',
+'missing-article' => 'Der Text für „$1“ $2 wurde nicht in der Datenbank gefunden.
+
+Die Seite ist möglicherweise gelöscht oder verschoben worden.
+
+Falls dies nicht der Fall ist, hast du eventuell einen Fehler in der Software gefunden. Bitte melde dies einem [[Special:ListUsers/sysop|Administrator]] unter Nennung der URL.',
+'missingarticle-rev' => '(Versionsnummer: $1)',
+'missingarticle-diff' => '(Unterschied zwischen Versionen: $1, $2)',
+'readonly_lag' => 'Die Datenbank wurde automatisch für Schreibzugriffe gesperrt, damit sich die verteilten Datenbankserver (slaves) mit dem Hauptdatenbankserver (master) abgleichen können.',
+'internalerror' => 'Interner Fehler',
+'internalerror_info' => 'Interner Fehler: $1',
+'fileappenderror' => 'Konnte „$1“ ne oa „$2“ oahänga.',
+'filecopyerror' => 'Die Datei „$1“ konnte nicht nach „$2“ kopiert werden.',
+'filerenameerror' => 'Die Datei „$1“ konnte nicht nach „$2“ umbenannt werden.',
+'filedeleteerror' => 'Die Datei „$1“ konnte nicht gelöscht werden.',
+'directorycreateerror' => 'Das Verzeichnis „$1“ konnte nicht angelegt werden.',
+'filenotfound' => 'Die Datei „$1“ wurde nicht gefunden.',
+'fileexistserror' => 'In die Datei „$1“ konnte nicht geschrieben werden, da die Datei bereits vorhanden ist.',
+'unexpected' => 'Unerwarteter Wert: „$1“=„$2“.',
+'formerror' => 'Fehler: Die Eingaben konnten nicht verarbeitet werden.',
+'badarticleerror' => 'Diese Aktion kann auf diese Seite nicht angewendet werden.',
+'cannotdelete' => 'De Seyte oder Datei „$1“ koan ne geläscht waan.
+Meeglicherweise wurde se bereits vu jemand anders entfernt.',
+'badtitle' => 'Ungültiger Tittel',
+'badtitletext' => 'Dar Tittel dar oagefurderta Seite ies ungieltig, laar oder a ungieltiger Sproachlink voo eenem andern Wiki.',
+'perfcached' => 'De folgenden Daten stomma oaus damm Cache und sein meegliecherweise nee aktuell:',
+'perfcachedts' => 'Diese Daten stomma oaus damm Cache, letztes Update: $1',
+'querypage-no-updates' => "'''De Aktualisierungsfunktion fier diese Seyte ies zurzeit deaktiviert. De Daten waan bis uff Weiteres nee erneuert.'''",
+'wrong_wfQuery_params' => 'Foalsche Parameter fier wfQuery()<br />
+Funksjonn: $1<br />
+Abfroage: $2',
+'viewsource' => 'Quelltext oasahn',
+'viewsourcefor' => 'fier $1',
+'actionthrottled' => 'Aksjonszoahl limmetiert',
+'actionthrottledtext' => 'Du host diese Aksjonn zu uffte innerholb annes korza Zeitraums ausgeführt. Bitte woarte a poar Minuta und probiere is doann erneut.',
+'protectedpagetext' => 'Diese Seyte ies fier doas Beorbeeta gesperrt.',
+'viewsourcetext' => 'Quelltext voo dar della Seyte:',
+'protectedinterface' => 'Diese Seyte enthält Text fier doas Sproach-Interface der Software und ies gesperrt, im Missbrauch zu verhindern.',
+'editinginterface' => "'''Warnung:''' Diese Seyte enthält vu dar MediaWiki-Software benutzta Text.
+Änderunga wirka siech uff de Benutzeroberfläche aus.
+Fier Iebersetzunga ziehe bitte ei Betracht, diese eim [http://translatewiki.net/wiki/Main_Page?setlang=de Translatewiki], damm MediaWiki-Lokalisierungsprojekt, durchzufiehra.",
+'sqlhidden' => '(SQL-Abfroage versteckt)',
+'cascadeprotected' => 'Diese Seyte ies zur Beoarbeetung gesperrt. Se ies ei de {{PLURAL:$1|folgende Seyte|folgenda Seyta}} eengebunda, de mittels dar Kaskadensperroption geschietzt {{PLURAL:$1|ies|sein}}:
+$2',
+'namespaceprotected' => "Du host kenne Berechtigung, de Seyte eim '''$1'''-Noamensraum zu beorbeeta.",
+'customcssjsprotected' => 'Du biest ne berechtigt, diese Seyte zu beoarbeeta, do se zu dann persenlicha Eenstellunga annes andern Benutzers gehiert.',
+'ns-specialprotected' => 'Spezialseyta kinna nicht beoarbeet warn.',
+'titleprotected' => "Enne Seyte miet dam della Noama koan nicht oageläat warn.
+De Sperre wurde durch [[User:$1|$1]] miet der Begrindung ''„$2“'' eigerichtet.",
+
+# Virus scanner
+'virus-badscanner' => "Fahlerhofte Konfiguration: unbekoannter Virenskänner: ''$1''",
+'virus-scanfailed' => 'Skän fahlgeschloan (Kode $1)',
+'virus-unknownscanner' => 'Unbekoannter Virenskänner:',
+
+# Login and logout pages
+'logouttext' => "'''Du best nun obgemeldet.'''
+
+Du koast {{SITENAME}} jitz anonym wetter nutzen, oder diech erneut under damm selba oder a'm andern Nutzernoama [[Special:UserLogin|oamelda]].
+Beachte, doas einige Seyta noo oazeiga kinna, doas du oagemeldet best, sulange du ne denn Browsercache gelaart host.",
+'welcomecreation' => '== Willkumma, $1! ==
+
+Dei Benutzerkonto wurde eigerichtet.
+Vergiss nä, denne [[Special:Preferences|{{SITENAME}}-Eistellunga]] oazupoassa.',
+'yourname' => 'Benutzernoame:',
+'yourpassword' => 'Passwort:',
+'yourpasswordagain' => 'Passwort wiederhola:',
+'remembermypassword' => 'uff diesem Computer dauerhaft oanmelda',
+'yourdomainname' => 'Denne Domain:',
+'externaldberror' => 'Entweder is leit a Fahler bei der externa Authentifizierung vur, oder du darfst dei externes Benutzerkonto ne aktualisiera.',
+'login' => 'Oanmelda',
+'nav-login-createaccount' => 'Oamelda / a Konto oalega',
+'loginprompt' => 'Zer Oameldung missa Cookies aktiviert sei.',
+'userlogin' => 'Oanmelda / Nutzerkonto erstella',
+'logout' => 'Oabmelda',
+'userlogout' => 'Oabmelda',
+'notloggedin' => 'Nä oangemeldet',
+'nologin' => "Du hast keen Benutzerkonto? '''$1'''.",
+'nologinlink' => 'Neues Benutzerkonto oanleega',
+'createaccount' => 'Benutzerkonto oanlega',
+'gotaccount' => "Du hast bereits a Benutzerkonto? '''$1'''.",
+'gotaccountlink' => 'Oanmelda',
+'createaccountmail' => 'ieber E-Mail',
+'badretype' => 'De beida Passwörter stimma nä ieberein.',
+'userexists' => 'Dar delle Benutzernoame ies schunt vergahn. Bitte wähle enn andern.',
+'loginerror' => 'Fahler bei dar Oameldung',
+'createaccounterror' => 'Nutzerkonto konnte ne erstellt waan: $1',
+'nocookiesnew' => 'Der Nutzerzugang wurde erstellt, oaber du biest ne oagemeldet. {{SITENAME}} beneetigt fier diese Funksjonn Cookies, bitte aktiviere diese und melde diech dann miet demm neua Nutzernoama und damm zugehieriga Poaßwurt oa.',
+'nocookieslogin' => '{{SITENAME}} benutzt Cookies zer Oameldung der Benutzer. Du host Cookies deaktiviert, bitte aktiviere diese und versiche is erneut.',
+'noname' => 'Du muußt enn giltiga Nutzernoama oangahn.',
+'loginsuccesstitle' => 'Oameldung erfolgreich',
+'loginsuccess' => 'Du biest jitz ols „$1“ bei {{SITENAME}} oagemeldet.',
+'nosuchuser' => 'Dar Nutzernoame „$1“ existiert ne.
+Ieberpriefe de Schreibweise (Gruß-/Kleenschreibung beachta) oder [[Special:UserLogin/signup|melde diech ols neuer Benutzer oa]].',
+'nosuchusershort' => 'Dar Nutzernoame „<nowiki>$1</nowiki>“ existiert ne. Bitte ieberpriefe de Schreibweise.',
+'nouserspecified' => 'Bitte gieb enn Benutzernoamen oa.',
+'wrongpassword' => 'Doas Passwurt ies foalsch (oder fehlt). Bitte versuche is erneut.',
+'wrongpasswordempty' => 'Is wurde kei Poaßwurt eigegahn. Bitte versuchs nuch amool.',
+'passwordtooshort' => 'Poaßwärter missa mindestens {{PLURAL:$1|1 Zeecha|$1 Zeecha}} lang sei.',
+'password-name-match' => 'Dei Poaßwurt muuß siech vu demm Nutzernoama underscheida.',
+'mailmypassword' => 'Neues Passwurt zusenda',
+'passwordremindertitle' => 'Neues Passwurt fier a {{SITENAME}}-Benutzerkonto',
+'passwordremindertext' => 'Jemand miet dar IP-Atresse $1, woahrscheinlich du selbst, hoot neues Poaßwurt fier de Oameldung bei {{SITENAME}} ($4) oagefurdert.
+
+Doas automatisch generierte Poaßwurt fier Nutzer „$2“ lautet nun: $3
+
+Foalls du dies wirklich gewienscht host, sulltest du diech jitz oamelden und doas Poaßwurt ändern.
+Doas neue Poaßwurt ies {{PLURAL:$5|1 Tag|$5 Tage}} giltig.
+
+Bitte ignoriere diese E-Mail, foalls du se ne selbst oagefurdert host. Doas aale Poaßwurt bleit wetterhien giltig.',
+'noemail' => 'Nutzer „$1“ hoot keene E-Mail-Atresse oagegahn.',
+'noemailcreate' => 'Du mußt anne giltige E-Mail-Atresse oagahn',
+'passwordsent' => 'A neues, temporäres Poaßwurt wurde oa de E-Mail-Atresse vu Nutzer „$1“ gesandt.
+Bitte melde diech damit oa, subald du is erhalten host. Doas aale Poaßwurt bleit wetterhien giltig.',
+'blocked-mailpassword' => "De vu dir verwendete IP-Atresse ies fier doas Ändern vu Seyta gesperrt. Im an'n Missbrauch zu verhindern, wurde de Meeglichkeet zer Oaforderung annes neua Poaßwurtes ebenfoalls gesperrt.",
+'eauthentsent' => 'Anne Bestätigungs-E-Mail wurde oa de oagegebene Atresse verschickt.
+
+Bevor anne E-Mail vu andern Nutzern ieber de E-Mail-Funksjonn empfanga waan koan, muuß de Atresse und ihre tatsächliche Zugehierigkeet zu diesem Nutzerkonto erscht bestätigt waan. Bitte befolge de Hinweise ei der Bestätigungs-E-Mail.',
+'throttled-mailpassword' => "Is wurde innerhoalb der letzta {{PLURAL:$1|Stunde|$1 Stunda}} bereits a neues Poaßwurt oagefurdert. Im an'n Missbrauch der Funksjonn zu verhindern, koan ock {{PLURAL:$1|eemool pro Stunde|olle $1 Stunda}} a neues Poaßwurt ongefurdert werden.",
+'mailerror' => 'Fahler beim Senda der E-Mail: $1',
+'acct_creation_throttle_hit' => 'Besicher dieses Wikis, de denne IP-Atresse verwenden, hoan innerhoalb des letzta Tages {{PLURAL:$1|1 Nutzerkonto|$1 Nutzerkonta}} erstellt, woas de maximal erlaubte Oazoahl ei dieser Zeitperiode ies.
+
+Besicher, de diese IP-Atresse verwenden, kinna momentan keene Nutzerkonta meh erstella.',
+'emailauthenticated' => 'Denne E-Mail-Adresse wourde oam $2 im $3 Seeger bestätigt.',
+'emailnotauthenticated' => 'Denne E-Mail-Atresse ies noo ne bestätigt. De folgenda E-Mail-Funksjonna stiehn erscht noach erfolgreicher Bestätigung zer Verfügung.',
+'noemailprefs' => 'Gib anne E-Mail-Atresse ei dann Eenstallunga oa, damit de noachfolgenda Funksjonna zer Verfiegung stiehn.',
+'emailconfirmlink' => 'E-Mail-Adresse bestätiga (authentifizieren).',
+'invalidemailaddress' => 'De E-Mail-Atresse werd ne akzeptiert, weil se a ungiltiges Furmat (eventuell ungiltige Zeecha) zu hoan scheint. Bitte gib anne korrekte Atresse a oder laare doas Feld.',
+'accountcreated' => 'Nutzerkonto erstellt',
+'accountcreatedtext' => 'Is Nutzerkonto fier $1 ies oangeläat wurrn.',
+'createaccount-title' => 'Erstellung annes Nutzerkontos fier {{SITENAME}}',
+'createaccount-text' => 'Is wurde fier diech a Nutzerkonto „$2“ uff {{SITENAME}} ($4) erstellt. Doas automatisch generierte Poaßwurt fier „$2“ ies „$3“. Du sulltest diech nun oamelda und doas Poaßwurt ändern.
+
+Foalls doas Nutzerkonto irrtümlich oagelagt wurde, koast du diese Noachricht ignoriera.',
+'usernamehasherror' => 'Nutzernoama dirfa kee Rautenzeecha enthaala',
+'login-throttled' => 'Du host zu uffte versicht, diech oazumelda.
+Bitte warte, bevor du is erneut probierst.',
+'loginlanguagelabel' => 'Sproache: $1',
+
+# Password reset dialog
+'resetpass' => 'Passwurt ändern',
+'resetpass_announce' => "Anmeldung mi'm per E-Mail zugesandten Code. Im de Anmeldung abzuschließa, mußt du jitz a neues Poaßwurt wähla.",
+'resetpass_header' => 'Passwurt ändern',
+'oldpassword' => 'Aales Passwurt:',
+'newpassword' => 'Neues Passwurt:',
+'retypenew' => 'Neues Passwurt (nuchmoal):',
+'resetpass_submit' => 'Poaßwurt iebermitteln und oamelda',
+'resetpass_success' => 'Dei Poaßwurt wurde erfolgreich geändert. Is fulgt de Oameldung …',
+'resetpass_forbidden' => 'Doas Poaßwurt koan ne geändert waan.',
+'resetpass-no-info' => 'Du mußt diech oamelda, im uff diese Seyte direkt zuzugreifa.',
+'resetpass-submit-loggedin' => 'Poaßwurt ändern',
+'resetpass-wrong-oldpass' => 'Ungiltiges temporäres oder aktuelles Poaßwurt.
+Meeglicherweise host du dei Poaßwurt bereits erfolgreich geändert oder a neues temporäres Poaßwurt beantragt.',
+'resetpass-temp-password' => 'Temporäres Poaßwurt:',
+
+# Edit page toolbar
+'bold_sample' => 'Fetter Text',
+'bold_tip' => 'Fetter Text',
+'italic_sample' => 'kursiver Text',
+'italic_tip' => 'kursiver Text',
+'link_sample' => 'Verknipfungstext',
+'link_tip' => 'Interne Verknipfung',
+'extlink_sample' => 'http://www.example.com Verknipfungstittel',
+'extlink_tip' => 'Externe Verknipfung (http:// beoachta)',
+'headline_sample' => 'Ieberschreft (Ebene 2)',
+'headline_tip' => 'Ebene 2 Ieberschreft',
+'math_sample' => 'Formel hier eifiega',
+'math_tip' => 'mathematische Formel (LaTeX)',
+'nowiki_sample' => 'unformatierta Text hier eifiega',
+'nowiki_tip' => 'unformatierter Text (nowiki)',
+'image_sample' => 'Beispiel.jpg',
+'image_tip' => 'Verknipfung miet Datei',
+'media_sample' => 'Beispiel.ogg',
+'media_tip' => 'Verknipfung miet Mediadatei',
+'sig_tip' => 'Denne Underschrift miet Zeetstempel',
+'hr_tip' => 'Hurizuntale Linie (sporsam verwenda)',
+
+# Edit pages
+'summary' => 'Zusammafoassung:',
+'subject' => 'Betreff:',
+'minoredit' => 'Ocke Kleenigkeeta wurda verändert',
+'watchthis' => 'Diese Seyte beoboachta',
+'savearticle' => 'Seyte oabspeichern',
+'preview' => 'Vorschau',
+'showpreview' => 'Vorschau zeega',
+'showlivepreview' => 'Live-Vorschau',
+'showdiff' => 'Änderunga zeega',
+'anoneditwarning' => "Du beorbeetest diese Seyte unoagemeldet. Wenn du speicherst, wird denne aktuelle IP-Atresse ei dar Versionsgeschichte uffgezeechnet on ies damit unwiderruflich '''eeffentlich''' einsehbar.",
+'missingsummary' => "'''Hinweis:''' Du host kenne Zusommafassung oagegahn. Wenn du erneut uff „Seyte speichern“ klickst, werd denne Änderung ohne Zusommafassung iebernumma.",
+'missingcommenttext' => 'Bitte gib anne Zusommafassung a.',
+'missingcommentheader' => "'''OCHTICHE:''' Du host kenne Ieberschrift eim Feld „Betreff:“ eingegeben. Wenn du erneut uff „Seyte speichern“ klickst, werd denne Beoarbeetung ohne Ieberschrift gespeichert.",
+'summary-preview' => 'Vurschau dar Zusommafassungszeile:',
+'subject-preview' => 'Vurschau des Betreffs:',
+'blockedtitle' => 'Benutzer ies gesperrt',
+'blockedtext' => "big>'''Dei Nutzernoame oder denne IP-Atresse wurde gesperrt.'''
+
+De Sperrung wurde vu $1 durchgefiehrt.
+Ols Grund wurde ''$2'' oagegahn.
+
+* Beginn dar Sperre: $8
+* Ende dar Sperre: $6
+* Sperre betrifft: $7
+
+Du koast $1 oder an'n dar andern [[{{MediaWiki:Grouppage-sysop}}|Administratorn]] kontaktiern, im ieber de Sperre zu diskuriren.
+Du koast de „E-Mail oa diesa Nutzer“-Funksjonn ne nutzen, solange kenne gültige E-Mail-Atresse ei denna [[Special:Preferences|Nutzerkonto-Einstellungen]] eengetraga ies, oder diese Funksjonn fier diech gesperrt wurde.
+Denne aktuelle IP-Atresse ies $3, und de Sperr-ID ies $5.
+Bitte fiege olle Informationa jeder Oafroage hinzu, de du stallt.",
+'autoblockedtext' => "Denne IP-Atresse wurde automatisch gesperrt, do se vu a'm andern Nutzer genutzt wurde, dar vu $1 gesperrt wurde.
+Ols Grund wurde oagegahn:
+
+:''$2''
+
+* Beginn dar Sperre: $8
+* Ende dar Sperre: $6
+* Sperre betrifft: $7
+
+Du koast $1 oder an'n dar andern [[{{MediaWiki:Grouppage-sysop}}|Administratorn]] kontaktiern, im ieber de Sperre zu diskuriren.
+
+Du koast de „E-Mail oa diesa Nutzer“-Funksjonn ne nutza, sulange keene giltige E-Mail-Atresse ei dennen [[Special:Preferences|Nutzerkonto-Einstellungen]] eengetraga ies, oder diese Funksjonn fier diech gesperrt wurde.
+
+Denne aktuelle IP-Atresse ies $3, und de Sperr-ID ies $5.
+Bitte fiege olle Informationa jeder Oafroage hinzu, de du stallt.",
+'blockednoreason' => 'keene Begründung oagegahn',
+'blockedoriginalsource' => "Dar Quelltext vu '''$1''' werd hier oagezeigt:",
+'blockededitsource' => "Dar Quelltext '''denner Änderunga''' oa '''$1''':",
+'whitelistedittitle' => 'Zum Beoarbeeta ies is erforderlich, oagemeldet zu sei',
+'whitelistedittext' => 'Du mußt diech $1, im Seyta beoarbeeta zu kinna.',
+'confirmedittext' => 'Du mußt denne E-Mail-Atresse erscht bestätiga, bevor du Beoarbeetunga durchfiehrn koast. Bitte ergänze und bestätige Denne E-Mail ei dann [[Special:Preferences|Eenstallunga]].',
+'nosuchsectiontitle' => 'Obschnitt ne vurhanda',
+'nosuchsectiontext' => 'Du versichst dann ne vorhandena Obschnitt zu beoarbeeta.',
+'loginreqtitle' => 'Oameldung erforderlich',
+'loginreqlink' => 'Oanmelda',
+'loginreqpagetext' => 'Du mußt diech $1, im Seyta lasa zu kinna.',
+'accmailtitle' => 'Passwurt wourde verschickt',
+'newarticle' => '(Neu)',
+'newarticletext' => "Du best an'm Link zu a'r Seyte gefolgt, de ne vorhanden ies.
+Im de Seyte oazulega, trage denn Text ei de undastehende Box a (siehe de [[{{MediaWiki:Helppage}}|Hilfeseyte]] fier meh Informationen).
+Best du fälschlicherweise hier, klicke de '''Zerricke'''-Schaltfläche dennes Browsers.",
+'anontalkpagetext' => "----''Diese Seyte dient dazu, a'm ne oagemeldeta Benutzer Noachrichta zu hinterlassa. Is werd senne IP-Atresse zur Identifizierung verwendet. IP-Atressen kinna vu mehrera Nutzern gemeensam verwendet waan. Wenn du miet dann Kommentarn uff dieser Seyte nischt oafanga koast, richta se siech vermutlich oa an'n friehera Inhaber denner IP-Atresse und du koast se ignorieren. Du koast dir au a [[Special:UserLogin/signup|Nutzerkonto erstalla]] oder dich [[Special:UserLogin|oamelda]], im kinftig Verwechslunga miet andern anonyma Nutzern zu vermeida.''",
+'noarticletext' => 'Diese Seyte enthält momentan noo kenn Text.
+Du koast diesen Tittel uffa andern Seyta [[Special:Search/{{PAGENAME}}|sucha]],
+<span class="plainlinks"> ei dan zugeheeriga [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbichern sucha] oder diese Seite [{{fullurl:{{FULLPAGENAME}}|action=edit}} beorbeeta]</span>.',
+'noarticletext-nopermission' => 'Diese Seyte enthält momentan noo kenn Text.
+Du koast diesen Tittel uff dann andern Seyta [[Special:Search/{{PAGENAME}}|sicha]]
+oder ei dann zugehieriga <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbichern sicha].</span>',
+'userpage-userdoesnotexist' => 'Doas Nutzerkonto „$1“ ies ne vurhanda. Bitte priefe, ob du diese Seyte wirklich erstalla/beoarbeeta wielst.',
+'userpage-userdoesnotexist-view' => 'Nutzerkonto „$1“ existiert ne.',
+'clearyourcache' => "'''Hinweis - Laare noach damm Speichern dann Browser-Cache, im de Änderungen sahn zu kinna:''' '''Mozilla/Firefox/Safari:''' ''Shift'' gedrückt halten und uff ''Aktualisiera'' klicka oder alternativ entweder ''Strg-F5'' oder ''Strg-R'' (''Befehlstaste-R'' bei Macintosh) dricka; '''Konqueror: '''Uff ''Aktualisiera'' klicka oder ''F5'' dricka; '''Opera:''' Cache under ''Extras → Eenstellunga'' laara; '''Internet Explorer:''' ''Strg-F5'' dricka oder ''Strg'' gedrickt halta und dabei ''Aktualisiera'' oaklicka.",
+'usercssyoucanpreview' => "'''Tipp:''' Benutze dann Vurschau-Button, im dei neues CSS vur damm Speichern zu testa.",
+'userjsyoucanpreview' => "'''Tipp:''' Benutze dann Vurschau-Button, im dei neues JS vur damm Speichern zu testa.",
+'usercsspreview' => "== Vurschau Dennes Nutzer-CSS ==
+'''Beachte:''' Noach damm Speichern mußt du dennen Browser oaweisa, de neue Version zu loada: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
+'userjspreview' => "== Vurschau Dennes Nutzer-JavaScript ==
+'''Beachte:''' Noach damm Speichern mußt du dennen Browser oaweisa, de neue Version zu loada: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
+'userinvalidcssjstitle' => "'''OCHTICHE:''' Skin „$1“ existiert ne. Bedenke, doß nutzerspezifische .css- und .js-Seyta miet a'm Kleenbuchstaba oafanga missa, olso beispielsweise ''{{ns:user}}:Mustermann/monobook.css'' oa Stalle vu ''{{ns:user}}:Mustermoan/Monobook.css''.",
+'updated' => '(Geändert)',
+'note' => "'''Hinweis:'''",
+'previewnote' => "'''Dies ies oack eene Vorschau, de Seyte wurde noo nee gespeichert!'''",
+'previewconflict' => 'Diese Vurschau gitt dann Inhalt des obern Textfeldes wieder. Su werd de Seyte aussahn, wenn du jitz speicherst.',
+'session_fail_preview' => "'''Denne Beoarbeetung konnte ne gespeichert waan, do Sitzungsdaten verlorn geganga sein.
+Bitte versiche is erneut, indem du under dar fulgenda Textvurschau noo amols uff „Seyte speichern“ klickst.
+Sullte doas Problem bestiehn bleiba, [[Special:UserLogout|melde diech ob]] und danone wieder oa.'''",
+'session_fail_preview_html' => "'''Denne Beoarbeetung konnte ne gespeichert waan, do Sitzungsdaten verloren gegangen sein.'''
+
+''Do ei {{SITENAME}} doas Speichern vu reinem HTML aktiviert ies, wurde de Vurschau ausgeblendet, im JavaScript-Attacken vorzubeugen.''
+
+'''Bitte versuche is erneut, indem du under dar folgenden Textvurschau noo amols uff „Seyte speichern“ klickst.
+Sullte doas Problem bestieha bleiba, [[Special:UserLogout|melde diech ob]] und danach wieder oa.'''",
+'token_suffix_mismatch' => "'''Denne Beoarbeetung wurde zerrickegewiesa, do dei Browser Zeecha eim Beoarbeeta-Token verstümmelt hoot.
+Anne Speicherung koan dann Seytainhalt zerstiera. Dies geschieht bisweilen durch de Benutzung annes anonyma Proxy-Dienstes, dar fahlerhaft oarbeetet.'''",
+'editing' => 'Beoarbeeta vo $1',
+'editingsection' => 'Beoarbeeta vo $1 (Oabsatz)',
+'editingcomment' => 'Beoarbeeta vu $1 (Neuer Obschnitt)',
+'editconflict' => 'Beoarbeetungskonflikt: $1',
+'explainconflict' => "Jemand anders hoot diese Seyte geändert, noachdem du oagefanga host diese zu beoarbeeta.
+Doas obere Textfeld enthält dann aktuellen Stand.
+Doas undere Textfeld enthält denne Änderungen.
+Bitte fiege denne Änderungen ei doas obere Textfeld a.
+'''Ock''' dar Inhalt des oberen Textfeldes werd gespeichert, wenn du uff „Seyte speichern“ klickst!",
+'yourtext' => 'Deen Text',
+'storedversion' => 'Gespeicherte Version',
+'nonunicodebrowser' => "'''Ochtiche:''' Dei Browser koan Unicode-Zeicha ne richtig veroarbeeta. Bitte verwende a'n andern Browser im Seyta zu beoarbeeta.",
+'editingold' => "'''OCHTICHE: Du beoarbeetest anne aale Version dieser Seyte. Wenn du speicherst, waan olle neueren Versionen ieberschrieba.'''",
+'yourdiff' => 'Underschiede',
+'copyrightwarning' => "'''Bite kopiere kenne Webseita, de nee denne eegena sein, benutze kenne urheberrechtlich geschietzta Werke ohne Erlaubnis des Urhebers!'''<br />
+Du gest ons hiermit denne Zusoage, dass du dan Text '''selbst verfasst''' host, dass dar Text Allgemeengutt '''(public domain)''' ies, oder dass dar '''Urheber''' senne '''Zustimmung''' gegeben hoot. Foalls dieser Text bereits woanders vereeffentlicht wurde, weise bite uff dar Diskussionsseite darauf hin.
+<i>Bite beachte, dass olle {{SITENAME}}-Beiträge automatisch under dar „$2“ stieha (siehe $1 für Details). Foalls du nee meechtest, dass deine Arbeit hier voo andern verändert on verbreitet wird, doann dricke nee uff „Seite speichern“.</i>",
+'copyrightwarning2' => "Bitte beachte, doß olle Beiträge zu {{SITENAME}} vu andern Mitwirkenden beoarbeetet, geändert oder geläscht waan kinna.
+Reiche hier kenne Texte a, falls du ne wielst, doß diese ohne Einschränkung geändert waan kinna.
+
+Du bestätigst hiermit au, doß du diese Texte selbst geschrieba host oder diese vu a'r gemeinfreien Quelle kopiert host
+(siehe $1 fier wettere Details). '''IEBERTRAGE OHNE GENEHMIGUNG KENNE URHEBERRECHTLICH GESCHIETZTEN INHALTE!'''",
+'longpagewarning' => "'''WARNUNG: Diese Seyte ies $1 KB gruß; einige Browser kinnta Probleme hoan, Seyta zu beoarbeeta, de grießer ols 32 KB sein.
+Ieberlege bitte, ob anne Uffteilung dar Seyte ei klennere Obschnitte meeglich ies.'''",
+'longpageerror' => "'''FAHLER: Dar Text, dann du zu speichern versuchst, ies $1 KB gruß. Doas ies grießer ols doas erlaubte Maximum vu $2 KB – Speicherung ne meeglich.'''",
+'readonlywarning' => "'''OCHTICHE: De Datenbank wurde fier Wartungsoarbeeta gesperrt, su doaß denne Änderunga derzeit ne gespeichert waan kinna.
+Sechere dann Text bitte lokal uff demm Computer und versiche zu a'm späteren Zeitpunkt, de Änderunga zu iebertraga.'''
+
+Grund fier de Sperre: $1",
+'protectedpagewarning' => "'''OCHTICHE: Diese Seyte wurde gesperrt. Ock Nutzer miet Administratorrechta kinna de Seyte beoarbeeta.'''",
+'semiprotectedpagewarning' => "'''Holbsperrung:''' De Seyte wurde su gesperrt, doaß ock registrierte Nutzer diese ändern kinna.",
+'cascadeprotectedwarning' => "'''OCHTICHE: Diese Seyte wurde gesperrt, su doß se ock durch Nutzer miet Administratorrechten beoarbeetet waan koan. Se ies ei de {{PLURAL:$1|fulgende Seyte|fulgenda Seyta}} eingebunden, de mittels dar Kaskadensperroption geschitzt {{PLURAL:$1|ies|sein}}:'''",
+'titleprotectedwarning' => "'''OCHTICHE: De Seyta erstellung wurde gesperrt. Ock Nutzer miet [[Special:ListGroupRights|speziellen Rechta]] kinna de Seyte erstella.'''",
+'templatesused' => '{{PLURAL:$1|De folgende Vurlooge werd|Folgende Vurlooga waan}} vu dieser Seyte verwendet:',
+'templatesusedpreview' => '{{PLURAL:$1|De folgende Vurlooge werd|Folgende Vurlooga waan}} vu dieser Seytavurschau verwendet:',
+'templatesusedsection' => '{{PLURAL:$1|De fulgende Vurloage werd|Fulgende Vurloaga waan}} vu diesem Obschnitt verwendet:',
+'template-protected' => '(schreibgeschietzt)',
+'template-semiprotected' => '(schreibgeschietzt fier unoagemeldete und neue Nutzer)',
+'hiddencategories' => 'Diese Seite ies Mitglied vun {{PLURAL:$1|1 versteckter Kategorie|$1 versteckta Kategoria}}:',
+'nocreatetitle' => 'De Erstellung neuer Seyta ies eengeschränkt.',
+'nocreatetext' => 'Uff {{SITENAME}} wurde doas Erstalla neuer Seyta eengeschränkt. Du koast bestiehende Seyten ändern oder diech [[Special:UserLogin|oamelda]].',
+'nocreate-loggedin' => 'Du host kenne Berechtigung, neue Seyta zu erstalla.',
+'permissionserrors' => 'Berechtigungsfehler',
+'permissionserrorstext' => 'Du best ne berechtigt, de Aksjonn auszufiehra. {{PLURAL:$1|Grund|Grinde}}:',
+'permissionserrorstext-withaction' => 'Du best nee berechtigt, $2.
+{{PLURAL:$1|Grund|Griende}}:',
+'recreate-moveddeleted-warn' => "'''Ochtiche: Du erstellst anne Seyte, de bereits frieher geläscht wurde.'''
+
+Bitte priefe sorgfältig, ob de erneute Seytaerstellung dann Richtlinien entspricht.
+Zu denner Information folgt doas Läsch- und Verschiebungs-Logbuch miet dar Begrindung fier de vorhergehende Läschung:",
+'moveddeleted-notice' => 'Diese Seyte wurde geläscht. Is fulgt a Auszug aus damm Läsch- und Verschiebungs-Logbuch fier diese Seyte.',
+'log-fulllog' => 'Olle Logbucheinträge oasahn',
+'edit-hook-aborted' => 'De Beoarbeetung wurde ohne Erklärung durch anne Schnittstalle obgebrocha.',
+'edit-gone-missing' => 'De Seyte konnt ne aktualisiert waan.
+Se wurde anscheinend geläscht.',
+'edit-conflict' => 'Beoarbeetungskonflikt.',
+'edit-no-change' => 'Denne Beoarbeetung wurde ignoriert, do kenne Änderung oa damm Text vurgenumma wurde.',
+'edit-already-exists' => 'De neue Seyte konnte ne erstellt waan, do se bereits vorhanden ies.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => 'Ochtiche: Diese Seyte enthält zu viele Uffruffe uffwendiger Parserfunksjonna.
+
+Is {{PLURAL:$2|darf ne meh ols 1 Uffruff|dirfa ne meh ols $1 Uffruffe}} sei.',
+'expensive-parserfunction-category' => 'Seyta, de uffwändige Parserfunksjonna zu uffte uffrufa',
+'post-expand-template-inclusion-warning' => 'Warnung: De Grieße eingebundener Vurlooga ies zu gruß, einige Vurloaga kinna ne eingebunden waan.',
+'post-expand-template-inclusion-category' => 'Seyta, ei denen de maximale Griße eingebundener Vurloaga ieberschritta ies',
+'post-expand-template-argument-warning' => "Warnung: Diese Seyte enthält mindestens a Argument ei a'r Vurlooge, doas expandiert zu gruß ies. Diese Argumente waan ignoriert.",
+'post-expand-template-argument-category' => 'Seyta, de ignorierte Vurlagaargumente enthalta',
+'parser-template-loop-warning' => 'Vurloagaschleife entdeckt: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Vurloogarekursionstiefengrenze ieberschritten ($1)',
+
+# "Undo" feature
+'undo-success' => 'Im de Änderung rickgängig zu macha, bitte de Beoarbeetung ei der Vergleichsansicht kontrolliera und dann uff „Seyte speichern“ klicka.',
+'undo-failure' => 'De Änderung konnte ne rickgängig gemacht waan, do dar betroffene Obschnitt zwischazeitlich verändert wurde.',
+'undo-norev' => 'De Beoarbeetung konnte ne rickgängig gemacht waan, do se ne vorhanden ies oder geläscht wurde.',
+'undo-summary' => 'Änderung $1 vu [[Special:Contributions/$2|$2]] ([[User talk:$2|Dischkur]]) wurde rickgängig gemacht.',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Nutzerkonto koan ne erstallt waan',
+'cantcreateaccount-text' => "De Erstellung annes Nutzerkontos vu dar IP-Atresse '''($1)''' aus wurde durch [[User:$3|$3]] gesperrt.
+
+Grund dar Sperre: ''$2''",
+
+# History pages
+'viewpagelogs' => 'Logbicher fier diese Seite oazeega',
+'nohistory' => 'Is gitt kenne Versionsgeschichte fier diese Seyte.',
+'currentrev' => 'Aktuelle Version',
+'currentrev-asof' => 'Aktuelle Version vum $1',
+'revisionasof' => 'Version vum $1',
+'revision-info' => 'Version vum $4, $5 Seeger vu $2',
+'previousrevision' => '← aale Version',
+'nextrevision' => 'Neue Version →',
+'currentrevisionlink' => 'Aktuelle Version',
+'cur' => 'Aktuell',
+'next' => 'Nächste',
+'last' => 'Vorherige',
+'page_first' => 'Oanfoang',
+'page_last' => 'Ende',
+'histlegend' => 'Zerr Oazeege dar Änneronga eefach de zu vergleichenda Versiona auswähla on de Schaltfläche „{{int:compareselectedversions}}“ klicka.<br />
+* (Aktuell) = Underschied zerr aktuella Version, (Vurherige) = Underschied zerr vurheriga Version
+* Seegerzeit/Datum = Version zu dieser Zeit, Benutzername/IP-Atresse des Beorbeeters, K = Kleene Ännerong',
+'history-fieldset-title' => 'Suche ei dar Versionsgeschichtla',
+'history-show-deleted' => 'ock geläschte Versiona',
+'histfirst' => 'aalteste',
+'histlast' => 'Neueste',
+'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
+'historyempty' => '(laar)',
+
+# Revision feed
+'history-feed-title' => 'Versionsgeschichtla',
+'history-feed-description' => 'Versionsgeschichte fier diese Seyte ei {{SITENAME}}',
+'history-feed-item-nocomment' => '$1 oam $3 im $4 Seeger',
+'history-feed-empty' => 'De angeforderte Seyte existiert ne. Vielleicht wurde se geläscht oder verschoba. [[Special:Search|Durchsiche]] {{SITENAME}} fier poassende neue Seyta.',
+
+# Revision deletion
+'rev-deleted-comment' => '(Beorbeetungskommentar entfernt)',
+'rev-deleted-user' => '(Benutzernoame entfernt)',
+'rev-deleted-event' => '(Logbuchaksjonn entfernt)',
+'rev-deleted-text-permission' => "Diese Version wurde '''geläscht'''.
+Nähere Oagoaba zum Läschvorgang suwie anne Begrindung fenda siech eim [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-deleted-text-view' => "Diese Version wurde '''geläscht'''.
+Ols Administrator koast du se weiterhin einsahn.
+Nähere Oagaba zum Läschvorgang suwie anne Begrindung fenda siech eim [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsch-Logbuch].",
+'rev-suppressed-text-view' => "Diese Version wurde '''underdrickt'''.
+Administratorn kinna se eensahn; Details stiehn eim [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Underdrickungs-Logbuch].",
+'rev-delundel' => 'zeege/verstecke',
+'rev-showdeleted' => 'zeige',
+'revisiondelete' => 'Versiona löscha/wiederherstella',
+'revdelete-nooldid-title' => 'Keene Version oangegeba',
+'revdelete-nooldid-text' => 'Du host entweder kenne Version oagegahn, uff de diese Aksjonn ausgefiehrt waan sull, de gewählte Version ies ne vorhanden oder du versichst, de aktuelle Version zu entferna.',
+'revdelete-nologtype-title' => 'Kee Logtyp oagegahn',
+'revdelete-nologid-title' => 'Ungiltiger Logeentrag',
+'revdelete-no-file' => 'De oagegeahne Datei existiert ne.',
+'revdelete-show-file-submit' => 'Ju',
+'revdelete-selected' => "'''{{PLURAL:$2|Ausgewählte Version|Ausgewählte Versionen}} vu [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Ausgewählter Logbucheintrag|Ausgewählte Logbucheinträge}}:'''",
+'revdelete-text' => "'''Geläschte Versionen und Aksjonna verbleiba ei dar Versionsgeschichte und dann Logbichern, jedoch sein Teele davon fier de Effentlichkeit unzugänglich.'''
+Andere Administratoren uff {{SITENAME}} hoan Zugriff uff dann versteckta Inhalt und kinna ihn miet dar gleichen Seyte wiederherstella, sufern ne zusätzliche Einschränkungen bestieha.",
+'revdelete-legend' => 'Setza der Sichtbarkeits-Einschränkunga',
+'revdelete-hide-text' => 'Text dar Version verstecka',
+'revdelete-hide-image' => 'Bildinhalt verstecka',
+'revdelete-hide-name' => 'Logbichl-Aksjonn verstecka',
+'revdelete-hide-comment' => 'Beorbeetungskommentar verstecka',
+'revdelete-hide-user' => 'Benutzernoame/de IP des Beorbeeters verstecka',
+'revdelete-hide-restricted' => 'Daten au vur Administratorn und andern underdricka',
+'revdelete-suppress' => 'Grund der Läschung au vor Administratora verstecka',
+'revdelete-unsuppress' => 'Einschränkungen fier wiederhergestallte Versionn uffhebn',
+'revdelete-log' => 'Begriendung:',
+'revdelete-submit' => 'Uff ausgewählte {{PLURAL:$1|Version|Versiona}} oawenda',
+'revdelete-logentry' => 'hoot de Versionsansicht fier „[[$1]]“ geändert',
+'logdelete-logentry' => 'hoot de Sichtbarkeit fier „[[$1]]“ geändert',
+'revdelete-success' => "'''De Versionsoasicht wurde aktualisiert.'''",
+'revdelete-failure' => "'''De Versionssichtbarkeit konnte ne aktualisiert waan:'''
+$1",
+'logdelete-success' => "'''Logbuchoasecht erfolgreich geändert.'''",
+'logdelete-failure' => "'''Logbuchsichtbarkeit koan ne geändert waan:'''
+$1",
+'revdel-restore' => 'Sichtbarkeit ändern',
+'pagehist' => 'Versionsgeschichte',
+'deletedhist' => 'Geläschte Versiona',
+'revdelete-content' => 'Seytainhoalt',
+'revdelete-summary' => 'Zusommafoassungskommentar',
+'revdelete-uname' => 'Benutzernoame',
+'revdelete-restricted' => 'Einschränkungen gelten au fier Administratorn',
+'revdelete-unrestricted' => 'Einschränkungen fier Administratorn uffgehobn',
+'revdelete-hid' => 'versteckte $1',
+'revdelete-unhid' => 'machte $1 wieder effentlich',
+'revdelete-log-message' => '$1 fier $2 {{PLURAL:$2|Version|Versiona}}',
+'logdelete-log-message' => '$1 fier $2 {{PLURAL:$2|Logbucheintrag|Logbucheinträge}}',
+'revdelete-modify-missing' => 'Fahler beim Beoarbeeta vu ID $1: Is fahlt ei dar Datenbank!',
+'revdelete-no-change' => "'''Warnung:''' Dar Eentrag vum $1, $2 Seeger besitzt bereits de gewüischta Sichtbarkeitseenstallunga.",
+'revdelete-otherreason' => 'Andere/zusätzliche Begriendung:',
+'revdelete-edit-reasonlist' => 'Läschgrinde beoarbeeta',
+'revdelete-offender' => 'Autor dar Version:',
+
+# Suppression log
+'suppressionlog' => 'Oversight-Logbichl',
+'suppressionlogtext' => 'Dies ies doas Logbuch dar Oversight-Aksjonna (Änderunga dar Sichtbarkeit vu Versionen, Beoarbeetungskommentaren, Nutzernoama und Nutzersperra).
+Siehe de [[Special:IPBlockList|Liste dar gesperrta IP-Atressa und Nutzernoama]] fier aktuelle Sperra.',
+
+# History merging
+'mergehistory' => 'Versionsgeschichta vereina',
+'mergehistory-header' => "Miet dieser Spezialseyte koast du de Versionsgeschichte a'r Ursprungsseyte miet dar Versionsgeschichte a'r Zielseyte vereinen.
+Stelle secher, doaß de Versionsgeschichte a'r Seyte historisch korrekt ies.",
+'mergehistory-box' => 'Versionsgeschichta zweier Seyta vereinen',
+'mergehistory-from' => 'Ursprungsseyte:',
+'mergehistory-into' => 'Zielseyte:',
+'mergehistory-list' => 'Versionen, de vereinigt waan kinna',
+'mergehistory-merge' => 'De folgenda Versionen vu „[[:$1]]“ kinna noach „[[:$2]]“ iebertraga waan. Markiere de Version, bis zu dar (einschließlich) de Versionen iebertraga waan sulln. Bitte beachte, doaß de Nutzung dar Navigationslinks de Auswoahl zerrickesetzt.',
+'mergehistory-go' => 'Zeige Versiona, de vereinigt waan kinna',
+'mergehistory-submit' => 'Vereinige Versionen',
+'mergehistory-empty' => 'Is kinna kenne Versiona vereinigt waan.',
+'mergehistory-success' => '{{PLURAL:$3|1 Version|$3 Versiona}} vu „[[:$1]]“ erfolgreich noach „[[:$2]]“ vereinigt.',
+'mergehistory-fail' => 'Versionsvereinigung ne meeglich, bitte prife de Seyte und de Zeitoagaba.',
+'mergehistory-no-source' => 'Ursprungsseyte „$1“ ies ne vurhanda.',
+'mergehistory-no-destination' => 'Zielseyte „$1“ ies ne vurhanda.',
+'mergehistory-invalid-source' => 'Ursprungsseyte muuß a giltiger Seytanoame sei.',
+'mergehistory-invalid-destination' => 'Zielseyte muuß a giltiger Seytanoame sei.',
+'mergehistory-autocomment' => '„[[:$1]]“ vereinigt noach „[[:$2]]“',
+'mergehistory-comment' => '„[[:$1]]“ vereinigt noach „[[:$2]]“: $3',
+'mergehistory-same-destination' => 'Ausgangs- und Zielseyte dirfa ne identisch sei',
+'mergehistory-reason' => 'Begriendung:',
+
+# Merge log
+'mergelog' => 'Vereinigungs-Logbuch',
+'pagemerge-logentry' => 'vereinigte [[$1]] ei [[$2]] (Versionen bis $3)',
+'revertmerge' => 'Vereinigung rieckgängig macha',
+'mergelogpagetext' => 'Dies ies doas Logbuch dar vereinigta Versionsgeschichta.',
+
+# Diffs
+'history-title' => 'Versionsgeschichte vun „$1“',
+'difference' => '(Underschied zwischa Versiona)',
+'lineno' => 'Zeile $1:',
+'compareselectedversions' => 'Gewählte Versiona vergleichen',
+'editundo' => 'rieckgängig',
+'diff-multi' => '(Dar Versionsvergleich bezieht {{PLURAL:$1|1 dazwischenliegende Version|$1 dazwischenliegende Versionen}} miet a.)',
+
+# Search results
+'searchresults' => 'Sichergebnisse',
+'searchresults-title' => 'Suchergebnisse fier "$1"',
+'searchresulttext' => 'Fier meh Informationa zer Siche siehe de [[{{MediaWiki:Helppage}}|Hilfeseyte]].',
+'searchsubtitle' => 'Denne Sichoafroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|olle miet „$1“ beginnenda Seyta]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|olle Seyta, de noach „$1“ verlinka]])',
+'searchsubtitleinvalid' => 'Denne Sichoafroage: „$1“.',
+'toomanymatches' => 'De Oazoahl dar Sichergebnisse ies zu gruß, bitte versiche anne andere Obfroage.',
+'titlematches' => 'Iebereinstimmunga miet Seytatitteln',
+'notitlematches' => 'Kenne Iebereinstimmunga miet Seytatitteln',
+'textmatches' => 'Iebereinstimmunga miet Inhalta',
+'notextmatches' => 'Kenne Iebereinstimmunga miet Inhalta',
+'prevn' => 'vurherige {{PLURAL:$1|$1}}',
+'nextn' => 'nächste {{PLURAL:$1|$1}}',
+'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
+'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seyte',
+'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'Suchoptiona',
+'searchmenu-exists' => "'''Is gitt anne Seyte, de dann Noama „[[:$1]]“ hoot'''",
+'searchmenu-new' => "'''Erstalle de Seyte „[[:$1|$1]]“ ei diesem Wiki.'''",
+'searchhelp-url' => 'Help:Hilfe',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige olle Seyta, de miet damm Sichbegriff oafanga]]',
+'searchprofile-articles' => 'Inhaltsseyta',
+'searchprofile-project' => 'Helfe on Projektseyta',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Olles',
+'searchprofile-advanced' => 'Erweitert',
+'searchprofile-articles-tooltip' => 'Sucha ei $1',
+'searchprofile-project-tooltip' => 'Sucha ei $1',
+'searchprofile-images-tooltip' => 'Noach Bildern sucha',
+'searchprofile-everything-tooltip' => 'Gesamta Inhalt durchsicha (inklusive Dischkursseyta)',
+'searchprofile-advanced-tooltip' => 'Siche ei wettern Noamensräuma',
+'search-result-size' => '$1 ({{PLURAL:$2|1 Wurt|$2 Wärter}})',
+'search-result-score' => 'Relevanz: $1 %',
+'search-redirect' => '(Weiterleitung vu „$1“)',
+'search-section' => '(Obschnitt $1)',
+'search-suggest' => 'Meitest du „$1“?',
+'search-interwiki-caption' => 'Schwasterprujätte',
+'search-interwiki-default' => '$1 Ergebnisse:',
+'search-interwiki-more' => '(weitere)',
+'search-mwsuggest-enabled' => 'miet Vurschläga',
+'search-mwsuggest-disabled' => 'kääne Vurschläge',
+'search-relatedarticle' => 'Verwandte',
+'mwsuggest-disable' => 'Vurschläge per Ajax deaktiviern',
+'searchrelated' => 'verwandt',
+'searchall' => 'olle',
+'showingresults' => "Hier {{PLURAL:$1|ies '''1''' Ergebnis|sein '''$1''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
+'showingresultsnum' => "Hier {{PLURAL:$3|ies '''1''' Ergebnis|sein '''$3''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
+'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnisse '''$1–$2''' vu '''$3'''}} fier '''$4'''",
+'nonefound' => "'''Hinweis:''' Is waan standardmäßig ocke eenige Noamensräume dorchsucht. Setze ''all:'' vur denn Suchbegriff, im olle Seita (inkl. Diskussionsseiten, Vorlagen usw.) zu dorchsucha oder gezielt dan Noama des zu dorchsuchenden Noamensraumes.",
+'search-nonefound' => 'Fier denne Sichoafroage wurden kenne Ergebnisse gefunda.',
+'powersearch' => 'Erweiterte Suche',
+'powersearch-legend' => 'Erweiterte Suche',
+'powersearch-ns' => 'Suche ei Noamasräuma:',
+'powersearch-redir' => 'Weiterleitunga oanzeega:',
+'powersearch-field' => 'Suche noach:',
+'powersearch-togglelabel' => 'Wähle aus:',
+'powersearch-toggleall' => 'Olle',
+'powersearch-togglenone' => 'Kenne',
+'search-external' => 'Externe Suche',
+'searchdisabled' => 'De {{SITENAME}}-Siche ies deaktiviert. Du koast underdessa miet Google sicha. Bitte bedenke, doaß dar Sichindex fier {{SITENAME}} veraltet sei koan.',
+
+# Quickbar
+'qbsettings' => 'Seytaleiste',
+'qbsettings-none' => 'Keene',
+'qbsettings-fixedleft' => 'Links, fest',
+'qbsettings-fixedright' => 'Rechts, fest',
+'qbsettings-floatingleft' => 'Links, schwebend',
+'qbsettings-floatingright' => 'Rechts, schwebend',
+
+# Preferences page
+'preferences' => 'Eenstellunga',
+'mypreferences' => 'Meene Eistellunga',
+'prefs-edits' => 'Oazoahl dar Beoarbeetunga:',
+'prefsnologin' => 'Ne oagemeldet',
+'prefsnologintext' => 'Du mußt <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} oagemeldet]</span> sei, im denne Einstellunga ändern zu kinna.',
+'changepassword' => 'Poaßwurt ändern',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Vorschau',
+'prefs-math' => 'TeX',
+'datedefault' => 'Standard',
+'prefs-datetime' => 'Datum und Zeit',
+'prefs-personal' => 'Nutzerdaten',
+'prefs-rc' => 'Letzte Änderunga',
+'prefs-watchlist' => 'Beobachtungsliste',
+'prefs-watchlist-days' => 'Oazoahl dar Tage, de de Beobachtungsliste standardmäßig umfassa sull:',
+'prefs-watchlist-days-max' => 'Maximal 7 Tage',
+'prefs-watchlist-edits' => 'Maximale Zoahl dar Eenträge:',
+'prefs-watchlist-edits-max' => 'Maximale Oazoahl: 1000',
+'prefs-watchlist-token' => 'Beobachtungslisten-Token:',
+'prefs-misc' => 'Verschiedenes',
+'prefs-resetpass' => 'Poaßwurt ändern',
+'prefs-email' => 'E-Mail-Optionen',
+'prefs-rendering' => 'Aussahn',
+'saveprefs' => 'Eenstallunga speichern',
+'resetprefs' => 'Eingaben verwerfen',
+'restoreprefs' => 'Olle Standardeinstallunga wiederherstalla',
+'prefs-editing' => 'Beorbeeta',
+'prefs-edit-boxsize' => 'Griße des Beoarbeetungsfansters:',
+'rows' => 'Zeila:',
+'columns' => 'Spalta:',
+'searchresultshead' => 'Suche',
+'resultsperpage' => 'Treffer pro Seyte:',
+'contextlines' => 'Zeila pro Treffer:',
+'contextchars' => 'Zeecha pro Zeile:',
+'stub-threshold' => 'Linkformatierung <a href="#" class="stub">klenner Seyta</a> (ei Byte):',
+'recentchangesdays' => 'Oazoahl dar Tage, de de Liste dar „Letzta Änderunga“ standardmäßig imfassa sull:',
+'recentchangesdays-max' => 'Maximal $1 {{PLURAL:$1|Tag|Tage}}',
+'recentchangescount' => 'Oazoahl dar standardmäßig oagezeigta Beoarbeetunga:',
+'savedprefs' => 'Denne Einstallunga waan gespeichert.',
+'timezonelegend' => 'Zeitzone:',
+'localtime' => 'Urtszeit:',
+'timezoneuseserverdefault' => 'Standardzeit des Servers',
+'timezoneuseoffset' => 'Andere (Underschied oagahn)',
+'timezoneoffset' => 'Underschied¹:',
+'servertime' => "Aktuelle Zeit uff'm Server:",
+'guesstimezone' => 'Vum Browser iebernahma',
+'timezoneregion-africa' => 'Offreka',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlantischer Ozean',
+'allowemail' => 'E-Mail-Empfang vu andern Benutzern ermeeglichn',
+'prefs-searchoptions' => 'Sichoptiona',
+'prefs-namespaces' => 'Noamasräume',
+'defaultns' => 'Andernfoalls ei diesen Noamasräumen sicha:',
+'default' => 'Voreinstellung',
+'prefs-files' => 'Dateien',
+'prefs-custom-css' => 'Benutzerdefinierte CSS',
+'prefs-custom-js' => 'Nutzerdefiniertes JS',
+'prefs-emailconfirm-label' => 'E-Mail-Bestätigung:',
+'prefs-textboxsize' => 'Griße des Beoarbeetungsfansters',
+'youremail' => 'E-Mail-Adresse:',
+'username' => 'Benutzernoame:',
+'uid' => 'Benutzer-ID:',
+'prefs-memberingroups' => 'Mitglied dar {{PLURAL:$1|Nutzergruppe|Nutzergruppen}}:',
+'yourrealname' => 'Echter Noame:',
+'yourlanguage' => 'Sproache der Benutzeroberfläche:',
+'yourvariant' => 'Variante',
+'yournick' => 'Unterschrift:',
+'badsig' => 'De Syntax dar Underschrift ies ungiltig; bitte HTML ieberpriefa.',
+'badsiglength' => 'Ihre Underschrift derf ne länger sein als wie $1 {{PLURAL:$1|character|Zeecha}}.',
+'yourgender' => 'Geschlecht:',
+'gender-unknown' => 'ne oagagahn',
+'gender-male' => 'männlich',
+'gender-female' => 'weiblich',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Optional. Dei echter Noame werd denn Beiträga zugeordnet.',
+'prefs-help-email' => "De Angabe a'r E-Mail ies optional, ermeeglicht oaber de Zusendung annes Ersatzpoaßwurtes, wenn du dei Poaßwurt vergessen host.
+Miet andern Nutzern koast du au ieber de Nutzerdischkurseyta Kontakt uffnahma, ohne doaß du denne Identität uffelähn mußt.",
+'prefs-help-email-required' => 'Is werd anne giltige E-Mail-Atresse benetigt.',
+'prefs-info' => 'Basisinformationen',
+'prefs-signature' => 'Underschrift',
+'prefs-dateformat' => 'Datumsfurmat',
+'prefs-timeoffset' => 'Zeitunderschied',
+'prefs-display' => 'Oazeigeoptiona',
+
+# User rights
+'userrights' => 'Nutzerrechteverwaltung',
+'userrights-lookup-user' => 'Gruppenzugehierigkeit verwalten',
+'userrights-user-editname' => 'Nutzernoame:',
+'editusergroup' => 'Benutzerrechte beoarbeeta',
+'editinguser' => "Ändere Nutzerrechte vu '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Nutzer-Gruppenzugehierigkeit beoarbeeta',
+'saveusergroups' => 'Gruppazugehierigkeit ändern',
+'userrights-groupsmember' => 'Mitglied vun:',
+'userrights-groups-help' => 'Du koast de Gruppenzugehierigkeit fier diesen Nutzer ändern:
+* A markiertes Kästchen bedeutet, doaß dar Nutzer Mitglied dieser Gruppe ies
+* A * bedeutet, doaß du doas Nutzerrecht noach Erteilung ne wieder zerrickenahma koast (oder umgekehrt).',
+'userrights-reason' => 'Grund:',
+'userrights-no-interwiki' => 'Du host kenne Berechtigung, Nutzerrechte ei andern Wikis zu ändern.',
+'userrights-nodatabase' => 'De Datenbank $1 ies ne vurhanda oder ne lokal.',
+'userrights-nologin' => "Du mußt diech miet a'm Administrator-Nutzerkonto [[Special:UserLogin|oamelda]], im Nutzerrechte zu ändern.",
+'userrights-notallowed' => 'Du besitzt ne de erforderlichen Berechtigunga, im Nutzerrechte zu vergahn.',
+'userrights-changeable-col' => 'Gruppazugehierigkeit, de du ändern koast',
+'userrights-unchangeable-col' => 'Gruppazugehierigkeit, de du ne ändern koast',
+
+# Groups
+'group' => 'Gruppe:',
+'group-user' => 'Benutzer',
+'group-autoconfirmed' => 'Automatisch bestätigte Benutzer',
+'group-bot' => 'Bots',
+'group-sysop' => 'Administratora',
+'group-bureaucrat' => 'Birokrata',
+'group-suppress' => 'Oversighter',
+'group-all' => '(olle)',
+
+'group-user-member' => 'Notzer',
+'group-autoconfirmed-member' => 'Automatisch bestätigter Nutzer',
+'group-bot-member' => 'Bot',
+'group-sysop-member' => 'Administrator',
+'group-bureaucrat-member' => 'Birokrat',
+'group-suppress-member' => 'Oversighter',
+
+'grouppage-user' => '{{ns:project}}:Benutzer',
+'grouppage-autoconfirmed' => '{{ns:project}}:Automatisch bestätigte Nutzer',
+'grouppage-bot' => '{{ns:project}}:Bots',
+'grouppage-sysop' => '{{ns:project}}:Administratora',
+'grouppage-bureaucrat' => '{{ns:project}}:Bierokrata',
+'grouppage-suppress' => '{{ns:project}}:Oversighter',
+
+# Rights
+'right-read' => 'Seyta lasa',
+'right-edit' => 'Seyta beorbeeta',
+'right-createpage' => 'Seyta erstella (außer Dischkurseyta)',
+'right-createtalk' => 'Dischkurseyta erstella',
+'right-createaccount' => 'Nutzerkonto erstella',
+'right-minoredit' => 'Beoarbeetunga ols kleen markiern',
+'right-move' => 'Seyta verschieba',
+'right-move-subpages' => 'Seyta inklusive Underseyta verschieba',
+'right-move-rootuserpages' => 'Heet-Nutzerseyta verschieba',
+'right-movefile' => 'Dateien verschieba',
+'right-suppressredirect' => "Beim Verschieba de Erstellung a'r Weiterleitung underdricka",
+'right-upload' => 'Dateien huchloada',
+'right-reupload' => "Ieberschreiba a'r vorhandenen Datei",
+'right-reupload-own' => "Ieberschreiba a'r zuvor selbst huchgeloadena Datei",
+'right-reupload-shared' => "Lokales Ieberschreiba a'r ei a'm gemeinsam genutzta Repositorium vorhandenen Datei",
+'right-upload_by_url' => "Dateien vu a'r URL-Atresse huchloada",
+'right-purge' => 'Seytacache laara ohne Rickfroage',
+'right-autoconfirmed' => 'Holbgeschitzte Seyta beoarbeeta',
+'right-bot' => 'Behandlung ols automatischer Prozess',
+'right-nominornewtalk' => 'Klenne Beoarbeetunga oa Dischkurseyta fiehrn zu kenner „Neue Noachrichta“-Oazeige',
+'right-apihighlimits' => 'Hiehere Limits ei API-Obfroaga',
+'right-writeapi' => 'Nutzung dar writeAPI',
+'right-delete' => 'Seyta läscha',
+'right-bigdelete' => 'Seyta läscha miet grußer Versionsgeschichte',
+'right-deleterevision' => "Einzelne Versionen a'r Seyte läscha und wiederherstella",
+'right-deletedhistory' => 'Geläschte Versionen ei dar Versionsgeschichte oasahn, ohne zugehieriga Text',
+'right-browsearchive' => 'Noach geläschta Seyta sicha',
+'right-undelete' => 'Seyta wiederherstalla',
+'right-suppressrevision' => 'Versionen oasahn und wiederherstella, de au vur Administratoren verborgen sein',
+'right-suppressionlog' => 'Private Logbicher oasahn',
+'right-block' => 'Nutzer sperra (Schreibrecht)',
+'right-blockemail' => 'Nutzer oam Versenda vu E-Mails hindern',
+'right-hideuser' => 'Nutzernoama sperra und verberga',
+'right-ipblock-exempt' => 'Ausnahm vu IP-Sperra, Autoblocks und Rangesperra',
+'right-proxyunbannable' => 'Ausnahme vu automatischa Proxysperra',
+'right-protect' => 'Seytaschutzstatus ändern',
+'right-editprotected' => 'Geschitzte Seyta beoarbeeta (ohne Kaskadenschutz)',
+'right-editinterface' => 'Nutzeroberfläche beoarbeeta',
+'right-editusercssjs' => 'Fremde CSS- und JS-Dateien beoarbeeta',
+'right-editusercss' => 'Fremde CSS-Datei beoarbeeta',
+'right-edituserjs' => 'Fremde JS-Datei beoarbeeta',
+'right-rollback' => 'Schnelles zerrickesetza',
+'right-markbotedits' => 'Schnell zerrickegesetzte Beoarbeetunga ols Bot-Beoarbeetung markieren',
+'right-noratelimit' => 'Kenne Beschränkung durch Limits',
+'right-import' => 'Seyta aus andern Wikis importieren',
+'right-importupload' => 'Seyta ieber Huchloada vu Dateien importieren',
+'right-patrol' => 'Fremde Beoarbeetunga ols kontrolliert markieren',
+'right-autopatrol' => 'Eegene Beoarbeetunga automatisch ols kontrolliert markieren',
+'right-patrolmarks' => 'Kontrollmarkierungen enn letzta Änderunga sahn',
+'right-unwatchedpages' => 'Liste dar unbeobachteten Seyta oasahn',
+'right-trackback' => 'Trackback iebermitteln',
+'right-mergehistory' => 'Versionsgeschichten vu Seyta vereinen',
+'right-userrights' => 'Nutzerrechte beoarbeeta',
+'right-userrights-interwiki' => 'Nutzerrechte ei andern Wikis beoarbeeta',
+'right-siteadmin' => 'Datenbank sperra und entsperra',
+'right-reset-passwords' => 'Poaßwurt annes andern Nutzers zerrickesetza',
+'right-sendemail' => 'E-Mails oa andere Nutzer senda',
+
+# User rights log
+'rightslog' => 'Rechte-Logbuch',
+'rightslogtext' => 'Dies ies doas Logbuch dar Änderunga dar Nutzerrechte.',
+'rightslogentry' => 'änderte de Nutzerrechte fier „$1“ vu „$2“ uff „$3“',
+'rightsnone' => '(–)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'de Seyte zu lasa',
+'action-edit' => 'de Seite zu beoarbeeta',
+'action-createpage' => 'Seyta zu erschtella',
+'action-createtalk' => 'Dischkurseyta zu erstalla',
+'action-createaccount' => 'a Nutzerkonto zu erstalla',
+'action-minoredit' => 'diese Beoarbeetung ols kleen zu markiern',
+'action-move' => 'de Seyte zu verschieba',
+'action-move-subpages' => 'diese Seyte und zugehierige Underseyta zu verschieba',
+'action-move-rootuserpages' => 'Haupt-Nutzerseyta zu verschieba',
+'action-movefile' => 'Diese Datei verschieba',
+'action-upload' => 'Dateien huchzuloada',
+'action-reupload' => 'de vorhandene Datei zu ieberschreiba',
+'action-reupload-shared' => 'diese Datei aus damm gemeensam genutzta Repositorium zu ieberschreiba',
+'action-upload_by_url' => "Dateien vu a'r Webatresse (URL) huchzuloada",
+'action-writeapi' => 'de API miet Schreibzugriffa zu verwenda',
+'action-delete' => 'Seyta zu läscha',
+'action-deleterevision' => 'Versionen zu läscha',
+'action-deletedhistory' => 'Liste dar geläschta Versiona zu sahn',
+'action-browsearchive' => 'noach geläschta Seyta zu sicha',
+'action-undelete' => 'de Seyte wiederherzustella',
+'action-suppressrevision' => 'de versteckte Version einzusahn und wiederherzustella',
+'action-suppressionlog' => 'doas private Logbuch eenzusahn',
+'action-block' => 'dann Nutzer zu sperra',
+'action-protect' => 'dann Schutzstatus vu Seyta zu ändern',
+'action-import' => "Seyta aus a'm andern Wiki zu importieren",
+'action-importupload' => "Seyta ieber doas Huchloada a'r Datei zu importieren",
+'action-patrol' => 'de Beoarbeetunga andere Nutzer zu kontrollieren',
+'action-autopatrol' => 'eegene Beoarbeetunga ols kontrolliert zu markieren',
+'action-unwatchedpages' => 'de Liste dar unbeobachteten Seyta einzusahn',
+'action-trackback' => "an'n Trackback zu iebertraga",
+'action-mergehistory' => 'de Versionengeschichta vu Seyta zu vereinen',
+'action-userrights' => 'Nutzerrechte zu ändern',
+'action-userrights-interwiki' => 'de Rechte vu Nutzern ei andern Wikis zu ändern',
+'action-siteadmin' => 'de Datenbank zu sperra oder freizugahn',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|Ännerong|Änneronga}}',
+'recentchanges' => 'Foarchte Verändarunga',
+'recentchanges-legend' => 'Oazeigeoptiona',
+'recentchangestext' => "Uff dieser Seyte koanst du de letzta Änderunga uff '''{{SITENAME}}''' noachverfolga.",
+'recentchanges-feed-description' => 'Verfolge miet diesem Feed de letzta Änneronga ei {{SITENAME}}.',
+'recentchanges-label-legend' => 'Legende: $1.',
+'recentchanges-legend-newpage' => '$1 - neue Seyte',
+'recentchanges-label-newpage' => 'Neue Seyte',
+'recentchanges-legend-minor' => '$1 - klenne Änderung',
+'recentchanges-label-minor' => 'Klenne Änderung',
+'recentchanges-legend-bot' => "$1 - Änderung durch an'n Bot",
+'recentchanges-label-bot' => "Änderung durch an'n Bot",
+'recentchanges-legend-unpatrolled' => '$1 - ne-kontrollierte Änderung',
+'rcnote' => "Oagezeegt {{PLURAL:$1|wird '''1''' Ännerong|waan de letzta '''$1''' Änneronga}} {{PLURAL:$2|des letzta Taages|dar letzta '''$2''' Taage}}. Stand: $4, $5. (<b><tt>N</tt></b>&nbsp;– neuer Eentrag; <b><tt>K</tt></b>&nbsp;– kleene Ännerong; <b><tt>B</tt></b>&nbsp;– Ännerong dorch eena Bot; ''(± Zoahl)''&nbsp;– Greeßaännerong ei Byte)",
+'rcnotefrom' => "Oagezeigt waan de Änderunga seit '''$2''' (max. '''$1''' Einträge).",
+'rclistfrom' => 'Oack Änneronga seit $1 zeiga.',
+'rcshowhideminor' => 'Klenne Änderunga $1',
+'rcshowhidebots' => 'Bots $1',
+'rcshowhideliu' => 'Oagemeldete Benutzer $1',
+'rcshowhideanons' => 'Anonyme Benutzer $1',
+'rcshowhidepatr' => 'Kontrollierte Änderunga $1',
+'rcshowhidemine' => 'Eegene Beiträge $1',
+'rclinks' => 'Zeige de letzta $1 Änneronga dar letzta $2 Taage.<br />$3',
+'diff' => 'Unt.',
+'hist' => 'Versiona',
+'hide' => 'ausblenda',
+'show' => 'eenblenda',
+'minoreditletter' => 'K',
+'newpageletter' => 'N',
+'boteditletter' => 'B',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|beobachtender|beobachtende}} Nutzer]',
+'rc_categories' => 'Ock Seyta aus dann Kategorien (getrennt miet „|“):',
+'rc_categories_any' => 'Olle',
+'newsectionsummary' => 'Neuer Obschnitt /* $1 */',
+'rc-enhanced-expand' => 'Details oazeega (beneetigt JavaScript)',
+'rc-enhanced-hide' => 'Details verstecka',
+
+# Recent changes linked
+'recentchangeslinked' => 'Änderunga oa verlinkta Seyta',
+'recentchangeslinked-feed' => 'Änderunga oa verlinkta Seyta',
+'recentchangeslinked-toolbox' => 'Änderunga oa verlinkta Seyta',
+'recentchangeslinked-title' => 'Änneronga oa Seyta, de voo „$1“ verlinkt sein',
+'recentchangeslinked-noresult' => 'Eim ausgewählta Zeitraum wurden oa dann verlinkten Seyta kenne Änderunga vurgenumma.',
+'recentchangeslinked-summary' => "Diese Spezialseyte listet de letzta Änderunga oa dan verlinkta Seyta uff (bzw. bei Kategoria oa dan Mitgliedern dieser Kategorie). Seyta uff denner [[Special:Watchlist|Beobachtungsliste]] sein '''fett''' dargestellt.",
+'recentchangeslinked-page' => 'Seyte:',
+'recentchangeslinked-to' => 'Zeige Änneronga uff Seita, de hierher verlinka',
+
+# Upload
+'upload' => 'Huchloada',
+'uploadbtn' => 'Datei huchloada',
+'reuploaddesc' => 'Oabbrecha un zurieck zur Huchloada-Seete',
+'upload-tryagain' => 'Geänderte Dateibeschreibung obschicka',
+'uploadnologin' => 'Nä oangemeldet',
+'uploadnologintext' => 'Du musst [[Special:UserLogin|oangemeldet sein]], um Dateia huchloada zu könna.',
+'upload_directory_missing' => 'Doas Upload-Verzeichnis ($1) fahlt und konnte durch dann Webserver au ne erstellt waan.',
+'upload_directory_read_only' => 'Dar Webserver hoot kenne Schreibrechte fier doas Upload-Verzeichnis ($1).',
+'uploaderror' => 'Fehler beim Huchloada',
+'upload-permitted' => 'Erlaubte Dateitypen: $1.',
+'upload-preferred' => 'Bevorzugte Dateitypen: $1.',
+'upload-prohibited' => 'Ne erlaubte Dateitypen: $1.',
+'uploadlog' => 'Datei-Logbuch',
+'uploadlogpage' => 'Datei-Logbuch',
+'uploadlogpagetext' => "Dies ies doas Logbuch dar huchgeloadena Dateien, siehe au de [[Special:NewFiles|Galerie neuer Dateien]] fier an'n visuellen Ieberblick.",
+'filename' => 'Dateinoame',
+'filedesc' => 'Beschreibung',
+'fileuploadsummary' => 'Beschreibung/Quelle:',
+'filereuploadsummary' => 'Dateiänderunga:',
+'filestatus' => 'Copyright-Status:',
+'filesource' => 'Quelle:',
+'uploadedfiles' => 'Huchgeloadene Dateien',
+'ignorewarning' => 'Warnung ignorieren und Datei speichern',
+'ignorewarnings' => 'Warnunga ignoriera',
+'minlength1' => "Dateinoama missa mindestens an'n Buchstaba lang sei.",
+'illegalfilename' => 'Dar Dateinoame „$1“ enthält mindestens a ne erlaubtes Zeicha. Bitte benenne de Datei im und versiche se erneut huchzuloada.',
+'badfilename' => 'Der Dateinoame wourde ei „$1“ geändert.',
+'filetype-badmime' => "Dateien mi'm MIME-Typ „$1“ dirfa ne huchgeloada waan.",
+'filetype-bad-ie-mime' => 'Diese Datei koan ne huchgeloada waan, do dar Internet Explorer se ols „$1“ erkennt, welcher a ne erlaubter potentiell gefährlicher Dateityp ies.',
+'filetype-unwanted-type' => "'''„.$1“''' ies a unerwünschtes Dateifurmat. Erlaubt {{PLURAL:$3|ies doas Dateifurmat|sein de Dateifurmate}}: $2.",
+'filetype-banned-type' => "'''„.$1“''' ies a ne erlaubtes Dateifurmat. Erlaubt {{PLURAL:$3|ies doas Dateifurmat|sein de Dateifurmate}}: $2.",
+'filetype-missing' => 'Due hochzuloadende Datei hoot kenne Erweiterung (z. B. „.jpg“).',
+'large-file' => 'De Dateigriße sullte noach Meeglichkeet $1 ne ieberschreita. Diese Datei ies $2 gruß.',
+'largefileserver' => 'De Datei ies grißer ols de vum Server eengestallte Maximalgriße.',
+'emptyfile' => 'De huchgeloadene Datei ies laar. Dar Grund koan a Tippfahler eim Dateinoama sei. Bitte kontrolliere, ob du de Datei wirklich huchloada wielst.',
+'fileexists' => "Anne Datei miet diesem Noama existiert bereits.
+Bitte priefe '''<tt>[[:$1]]</tt>''', wenn du dir ne secher biest, ob du se ändern wielst.
+[[$1|thumb]]",
+'file-thumbnail-no' => "Dar Dateinoame beginnt miet '''<tt>$1</tt>'''. Dies deutet uff a Bild verringerter Griße ''(thumbnail)'' hin.
+Bitte priefe, ob du doas Bild ei voller Ufflesung vorliegen host und loade dieses under damm Originalnoama huch.",
+'file-exists-duplicate' => 'Diese Datei ies a Duplikat dar fulgenda {{PLURAL:$1|Datei|$1 Dateien}}:',
+'file-deleted-duplicate' => 'Anne identische Datei dieser Datei ([[$1]]) wurde frieher geläscht. Ieberpriefe doas Läsch-Logbuch, bevor du se huchlädst.',
+'successfulupload' => 'Erfolgreich huchgeloada',
+'uploadwarning' => 'Warnung',
+'savefile' => 'Datei speichern',
+'uploadedimage' => 'hoot „[[$1]]“ huchgeloada',
+'overwroteimage' => 'hoot anne neue Version vu „[[$1]]“ huchgeloada',
+'uploaddisabled' => 'Huchlada deaktiviert',
+'uploaddisabledtext' => 'Doas Huchloada vu Dateien ies deaktiviert.',
+'uploadscripted' => "Diese Datei enthält HTML- oder Scriptcode, dar irrtiemlich vu a'm Webbrowser ausgefiehrt waan kennte.",
+'uploadvirus' => "Diese Datei enthält an'n Virus! Details: $1",
+'upload-source' => 'Quelldatei',
+'sourcefilename' => 'Quelldatei:',
+'sourceurl' => 'Quell-URL:',
+'destfilename' => 'Zielnoame:',
+'upload-maxfilesize' => 'Maximale Dateigriße: $1',
+'upload-description' => 'Dateibeschreibung',
+'upload-options' => 'Huchloade-Optionen',
+'watchthisupload' => 'Diese Datei beobachta',
+'filewasdeleted' => 'Anne Datei miet diesem Noama wurde schunnt eemoll huchgeloada und zwischenzeitlich wieder geläscht. Bitte priefe zuerst dann Eintrag eim $1, bevor du de Datei wirklich speicherst.',
+'upload-wasdeleted' => "'''Ochtiche: Du lädst anne Datei huch, de bereits frieher geläscht wurde.'''
+
+Bitte priefe sorgfältig, ob doas erneute Huchloada dann Richtlinien entspricht.
+Zu denner Information folgt doas Läsch-Logbuch miet dar Begrindung fier de vorhergehende Läschung:",
+'filename-bad-prefix' => "Dar Dateinoame beginnt miet '''„$1“'''. Dies ies eim allgemeena dar vu a'r Digitalkamera vorgegebene Dateinoame und daher ne sehr aussagekräftig.
+Bitte gieb dar Datei an'n Noama, dar dann Inhalt besser beschreibt.",
+
+'upload-proto-error' => 'Foalsches Protokoll',
+'upload-proto-error-text' => 'De URL muuß miet <code>http://</code> oder <code>ftp://</code> beginna.',
+'upload-file-error' => 'Interner Fehler',
+'upload-file-error-text' => "Bei dar Erstellung a'r temporären Datei uff'd Server ies a interner Fahler uffgetreta.
+Bitte informiere an'n [[Special:ListUsers/sysop|System-Administrator]].",
+'upload-misc-error' => 'Unbekennter Fahler beim Huchloada',
+'upload-misc-error-text' => "Beim Huchloada ies a unbekennter Fahler uffgetreta.
+Priefe de URL uff Fahler, dann Online-Status dar Seyte und versuche is erneut.
+Wenn doas Problem wetter bestieht, informiere an'n [[Special:ListUsers/sysop|System-Administrator]].",
+'upload-too-many-redirects' => 'De URL beinhaltete zu viele Wetterleitunga',
+'upload-unknown-size' => 'Unbekennte Grieße',
+'upload-http-error' => 'A HTTP-Fahler ies uffgetreta: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zugriff verweigert',
+'img-auth-nofile' => 'Datei „$1“ existiert ne.',
+'img-auth-streaming' => 'Loade „$1“.',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL ies nee erreichbar',
+'upload-curl-error6-text' => 'De oagegahne URL ies ne erreichbar. Priefe suwohl de URL uff Fahler ols au dann Online-Status dar Seyte.',
+'upload-curl-error28' => 'Zeitieberschreitung beim Huchloada',
+'upload-curl-error28-text' => "De Seyte braucht zu lange fier anne Antwurt. Priefe, ob de Seyte online ies, warte an'n kurza Moment und versiche is doann erneut. Is koan sinnvoll sei, an'n erneuta Versich zu a'm andern Zeitpunkt zu probieren.",
+
+'license' => 'Lizenz:',
+'license-header' => 'Lizenz',
+'nolicense' => 'kenne Vurauswoahl',
+'license-nopreview' => '(is ies kenne Vurschau verfiegbar)',
+'upload_source_url' => ' (giltige, effentlich zugängliche URL)',
+'upload_source_file' => ' (anne Datei uff dennem Computer)',
+
+# Special:ListFiles
+'listfiles-summary' => "Diese Spezialseyte listet olle huchgeloadena Dateien uff. Standardmäßig waan de zuletzt huchgeloadena Dateien zuerst oagezeigt. Durch an'n Klick uff de Spaltenieberschrifta koan de Sortierung umgedreht waan oder is koan noach a'r andern Spalte sortiert waan.",
+'listfiles_search_for' => 'Siche nooch Datei:',
+'imgfile' => 'Datei',
+'listfiles' => 'Dateiliste',
+'listfiles_date' => 'Datum',
+'listfiles_name' => 'Noame',
+'listfiles_user' => 'Benutzer',
+'listfiles_size' => 'Greeße',
+'listfiles_description' => 'Beschreibung',
+'listfiles_count' => 'Versionen',
+
+# File description page
+'file-anchor-link' => 'Datei',
+'filehist' => 'Dateiversiona',
+'filehist-help' => 'Klicke uff eenen Zeitpunkt, im diese Version zu loada.',
+'filehist-deleteall' => 'Olle Versiona läscha',
+'filehist-deleteone' => 'Diese Version läscha',
+'filehist-revert' => 'zerricke scherga',
+'filehist-current' => 'aktuell',
+'filehist-datetime' => 'Version vum',
+'filehist-thumb' => 'Vurschaubild',
+'filehist-thumbtext' => 'Vurschaubild fier Version vum $1',
+'filehist-nothumb' => 'Kee Vurschaubild vurhanda',
+'filehist-user' => 'Nutzer',
+'filehist-dimensions' => 'Moaße',
+'filehist-filesize' => 'Dateigrieße',
+'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Datei fahlt',
+'imagelinks' => 'Woas fiehrt bies zum hier',
+'linkstoimage' => 'De {{PLURAL:$1|folgende Seyte verwendet|folgenden $1 Seyta verwenda}} diese Datei:',
+'linkstoimage-more' => 'Meh ols {{PLURAL:$1|anne Seyte verlinkt|$1 Seyta verlinken}} uff diese Datei.
+De folgende Liste zeigt ock {{PLURAL:$1|dann erschta Link|de erschta $1 Links}} uff diese Datei.
+Anne [[Special:WhatLinksHere/$2|vullständige Liste]] ies verfiegbar.',
+'nolinkstoimage' => 'Kenne Seyte nutzt diese Datei.',
+'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weitere Links]] fier diese Datei.',
+'redirectstofile' => 'De {{PLURAL:$1|folgende Datei leitet|folgenda $1 Dateien leiten}} uff diese Datei wetter:',
+'duplicatesoffile' => 'De {{PLURAL:$1|folgende Datei ies a Duplikat|folgenda $1 Dateien sein Duplikate}} dieser Datei ([[Special:FileDuplicateSearch/$2|wettere Details]]):',
+'sharedupload' => 'Diese Datei stommt ous $1 on dorf voo andern Projekta verwendet waan.',
+'filepage-nofile-link' => 'Is existiert kenne Datei mit diesem Noama, oaber du koast [$1 diese Datei huchloada].',
+'uploadnewversion-linktext' => 'Eene neue Version dieser Datei huchloada',
+'shared-repo-from' => 'oaus $1',
+
+# File reversion
+'filerevert' => 'Zerrickesetza vun „$1“',
+'filerevert-legend' => 'Datei zerrickesetza',
+'filerevert-intro' => "Du setzt de Datei '''[[Media:$1|$1]]''' uff de [$4 Version vum $2, $3 Seeger] zerricke.",
+'filerevert-comment' => 'Grund:',
+'filerevert-defaultcomment' => 'Zerrickegesetzt uff de Version vum $1, $2 Seeger',
+'filerevert-submit' => 'Zerrickesetza',
+'filerevert-success' => "'''[[Media:$1|$1]]''' wurde uff de [$4 Version vum $2, $3 Seeger] zerrickegesetzt.",
+'filerevert-badversion' => 'Is gitt kenne Version dar Datei zu damm oagegebenen Zeitpunkt.',
+
+# File deletion
+'filedelete' => 'Läsche „$1“',
+'filedelete-legend' => 'Läsche Datei',
+'filedelete-intro' => "Du läschst de Datei '''„[[Media:$1|$1]]“''' inklusive ihrer Versionsgeschichte.",
+'filedelete-intro-old' => "Du läschst vu dar Datei '''„[[Media:$1|$1]]“''' de [$4 Version vum $2, $3 Seeger].",
+'filedelete-comment' => 'Begriendung:',
+'filedelete-submit' => 'Läscha',
+'filedelete-success' => "'''„$1“''' wourde geläscht.",
+'filedelete-success-old' => "Vu dar Datei '''„[[Media:$1|$1]]“''' wurde de Version vum $2, $3 Seeger geläscht.",
+'filedelete-nofile' => "'''„$1“''' ies ne vurhanda.",
+'filedelete-nofile-old' => "Is gitt vu '''„$1“''' kenne archivierte Version miet dann oagegebenen Attributen.",
+'filedelete-otherreason' => 'Anderer/ergänzender Grund:',
+'filedelete-reason-otherlist' => 'Oanderer Grund',
+'filedelete-reason-dropdown' => '* Allgemeene Läschgrinde
+** Urheberrechtsverletzung
+** Duplikat',
+'filedelete-edit-reasonlist' => 'Läschgrinde beoarbeeta',
+
+# MIME search
+'mimesearch' => 'Suche noach MIME-Typ',
+'mimesearch-summary' => 'Uff dieser Spezialseyte kinna de Dateien noach damm MIME-Typ gefiltert waan. Die Eingabe muuß emmer dann Medien- und Subtyp beinhalten: <tt>image/jpeg</tt> (siehe Dateibeschreibungsseyte).',
+'mimetype' => 'MIME-Typ:',
+'download' => 'Herunderloada',
+
+# Unwatched pages
+'unwatchedpages' => 'Ne beobachtete Seyta',
+
+# List redirects
+'listredirects' => 'Wetterleitungsliste',
+
+# Unused templates
+'unusedtemplates' => 'Unbenutzte Vurloaga',
+'unusedtemplatestext' => 'Diese Seyte listet olle Seyta eim {{ns:template}}-Noamasraum uff, de ne ei andern Seyta eingebunden sein.
+Ieberpriefe andere Links zu dann Vurloaga, bevor du diese läscht.',
+'unusedtemplateswlh' => 'Ondere Links',
+
+# Random page
+'randompage' => 'Zufoallige Seyte',
+'randompage-nopages' => 'Is sein kenne Seyta {{PLURAL:$2|eim folgenda Noamasraum|ei dann folgenden Noamasräumen}} enthaala: „$1“',
+
+# Random redirect
+'randomredirect' => 'Zufällige Weiterleitung',
+'randomredirect-nopages' => 'Eim Noamasraum „$1“ sein kenne Weiterleitunga vurhanda.',
+
+# Statistics
+'statistics' => 'Statistik',
+'statistics-header-pages' => 'Seytastatistik',
+'statistics-header-edits' => 'Beoarbeetungsstatistik',
+'statistics-header-views' => 'Seytauffrufstatistik',
+'statistics-header-users' => 'Benutzerstatistik',
+'statistics-header-hooks' => 'Andere Statistika',
+'statistics-articles' => 'Inhaltsseyta',
+'statistics-pages' => 'Seyta',
+'statistics-pages-desc' => 'Olle Seyta ei diesem Wiki, inklusive Dischkurseyta, Weiterleitunga usw.',
+'statistics-files' => 'Huchgeladene Dateien',
+'statistics-edits' => 'Seytabeoarbeetunga',
+'statistics-edits-average' => 'Beoarbeetunga pro Seyte eim Durchschnitt',
+'statistics-views-total' => 'Seytaaufrufe gesamt',
+'statistics-views-peredit' => 'Seyta uffruffe pro Beoarbeetung',
+'statistics-jobqueue' => 'Länge dar [http://www.mediawiki.org/wiki/Manual:Job_queue Ufftragswarteschlange]',
+'statistics-users' => 'Registrierte [[Special:ListUsers|Nutzer]]',
+'statistics-users-active' => 'Aktive Benutzer',
+'statistics-users-active-desc' => 'Nutzer miet Beoarbeetunga {{PLURAL:$1|enn letzta 24 Stunden|enn vergangenen $1 Tagen}}',
+'statistics-mostpopular' => 'Meistbesichte Seyta',
+
+'disambiguations' => 'Begriffsklärungsseyta',
+'disambiguationspage' => 'Template:Begriffsklärung',
+'disambiguations-text' => 'De folgenda Seyta verlinka uff anne Seyte zur Begriffsklärung. Se sullten statt dessen uff de eigentlich gemeente Seyte verlinka.<br />Eine Seite wird als Begriffsklärungsseite behandelt, wenn [[MediaWiki:Disambiguationspage]] uff se verlinkt.<br />Links aus Noamasräumen waan hier ne uffgelistet.',
+
+'doubleredirects' => 'Doppelte Weiterleitunga',
+'doubleredirectstext' => 'Diese Liste enthält Weiterleitunga, de uff wettere Wetterleitunga verlinka.
+Jede Zeile enthält Links zu dar erschta und zweeta Wetterleitung suwie doas Ziel dar zweeta Wetterleitung, welches fier gewehnlich die gewünschte Zielseyte ies, uff de bereits de erschte Wetterleitung zeiga sullte.
+<s>Durchgestrichene</s> Einträge wurden bereits erledigt.',
+'double-redirect-fixed-move' => 'doppelte Wetterleitung uffgelest: [[$1]] → [[$2]]',
+'double-redirect-fixer' => 'RedirectBot',
+
+'brokenredirects' => 'Kaputte Wetterleitunga',
+'brokenredirectstext' => 'Diese Spezialseyte listet Weiterleitunga uff ne existierende Seyta uff.',
+'brokenredirects-edit' => 'Beorbeeta',
+'brokenredirects-delete' => 'läscha',
+
+'withoutinterwiki' => 'Seyta ohne Links zu andern Sproacha',
+'withoutinterwiki-summary' => 'De folgenda Seyta verlinken ne uff andere Sproachversionen.',
+'withoutinterwiki-legend' => 'Präfix',
+'withoutinterwiki-submit' => 'Zeige',
+
+'fewestrevisions' => 'Seyta miet dann wenigsta Versionen',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategoria}}',
+'nlinks' => '{{PLURAL:$1|1 Link|$1 Links}}',
+'nmembers' => '{{PLURAL:$1|1 Eentrag|$1 Eenträge}}',
+'nrevisions' => '{{PLURAL:$1|1 Beoarbeetung|$1 Beoarbeetunga}}',
+'nviews' => '{{PLURAL:$1|1 Obfroage|$1 Obfroaga}}',
+'specialpage-empty' => 'De Seyte enthält aktuell kenne Einträge.',
+'lonelypages' => 'Verwaiste Seyta',
+'lonelypagestext' => 'De folgenden Seyta waan ne eingebunden oder is werd ne uff se ei {{SITENAME}} verwiesa.',
+'uncategorizedpages' => 'Ne kategorisierte Seyta',
+'uncategorizedcategories' => 'Ne kategorisierte Kategorien',
+'uncategorizedimages' => 'Ne kategorisierte Dateien',
+'uncategorizedtemplates' => 'Ne kategorisierte Vurlagen',
+'unusedcategories' => 'Unbenutzte Kategorien',
+'unusedimages' => 'Unbenutzte Dateien',
+'popularpages' => 'Beliebteste Seyta',
+'wantedcategories' => 'Nutzte, oaber ne oagelegte Kategorien',
+'wantedpages' => 'Gewinschte Seyta',
+'wantedfiles' => 'Fahlende Dateien',
+'wantedtemplates' => 'Fahlende Vurloaga',
+'mostlinked' => 'Häufig verlinkte Seyta',
+'mostlinkedcategories' => 'Meistbenutzte Heetgruppa',
+'mostlinkedtemplates' => 'Meistbenutzte Vurlooga',
+'mostcategories' => 'Meistkategorisierte Seyta',
+'mostimages' => 'Meistbenutzte Dateien',
+'mostrevisions' => 'Seyta miet dann meesta Versionen',
+'prefixindex' => 'Olle Seita (mit Präfix)',
+'shortpages' => 'Korze Seyta',
+'longpages' => 'Lange Seyta',
+'deadendpages' => 'Sackgassenseyta',
+'deadendpagestext' => 'Aus dann folgenden Seyta werd ne aus {{SITENAME}} verwiesa.',
+'protectedpages' => 'Geschitzte Seyta',
+'protectedpages-indef' => 'Ock unbeschränkt geschitzte Seyta zeiga',
+'protectedpages-cascade' => 'Ock Seyta miet Kaskadenschutz',
+'protectedpagestext' => 'Diese Spezialseyte zeigt olle vor damm Verschieba oder Beoarbeeta geschitzta Seyta.',
+'protectedpagesempty' => 'Aktuell sein kenne Seyta miet diesen Parametern geschitzt.',
+'protectedtitles' => 'Gesperrte Tittel',
+'protectedtitlestext' => 'De folgenden Tittel wurden zur Neuerstellung gesperrt.',
+'protectedtitlesempty' => 'Zurzeit sein miet dann oagegebena Parametern kenne Seyta zur Neuerstellung gesperrt.',
+'listusers' => 'Nutzerverzeichnis',
+'listusers-editsonly' => 'Zeige ock Nutzer miet Beiträga',
+'listusers-creationsort' => 'Noach Erstelldatum sortiera',
+'usereditcount' => '$1 {{PLURAL:$1|Beoarbeetung|Beoarbeetunga}}',
+'usercreated' => 'Erstallt oam $1 im $2 Seeger',
+'newpages' => 'Neue Seyta',
+'newpages-username' => 'Benutzernoame:',
+'ancientpages' => 'Seit längerem unbeoarbeetete Seyta',
+'move' => 'Verschieba',
+'movethispage' => 'Seyte verschieba',
+'unusedimagestext' => "Bitte beachte, doaß andere Webseyta diese Datei miet a'r direkten URL verlinken kinna. Diese werd ne ols Verwendung erkannt, su doaß de Datei hier uffgefiehrt werd.",
+'unusedcategoriestext' => 'Diese Spezialseyte zeigt olle Kategorien, de laar sein, also selbst kenne Kategorien oder Seyta enthalten.',
+'notargettitle' => 'Kenne Seyte oagegahn',
+'notargettext' => 'Du host ne oagegahn, uff welche Seyte diese Funksjonn oagewendet waan sull.',
+'nopagetitle' => 'Zielseyte ne vurhanda',
+'nopagetext' => 'De oagegebene Zielseyte ies ne vorhanden.',
+'pager-newer-n' => '{{PLURAL:$1|nächster|nächste $1}}',
+'pager-older-n' => '{{PLURAL:$1|vurheriger|vurherige $1}}',
+'suppress' => 'Oversight',
+
+# Book sources
+'booksources' => 'ISBN-Siche',
+'booksources-search-legend' => 'Suche noach Bezugsquella fier Bicher',
+'booksources-go' => 'Sucha',
+'booksources-text' => 'Dies ies anne Liste miet Links zu Internetseyta, de neue und gebrauchte Bicher verkoofa. Durt koan is au wettere Informationen ieber de Bicher gahn. {{SITENAME}} ies miet kemm dieser Oabieter geschäftlich verbunda.',
+'booksources-invalid-isbn' => 'Vermutlich ies de ISBN ungiltig.
+Bitte priefe, ob korrekt vu dar Quelle iebertraga wurde.',
+
+# Special:Log
+'specialloguserlabel' => 'Benutzer:',
+'speciallogtitlelabel' => 'Tittel:',
+'log' => 'Logbicher',
+'all-logs-page' => 'Olle effentlicha Logbicher',
+'alllogstext' => 'Dies ies de kombinierte Oazeige oller ei {{SITENAME}} gefiehrta Logbicher.
+De Ausgabe koan durch de Auswoahl des Logbuchtyps, des Nutzers oder des Seytatittels eingeschränkt waan (Gruß-/Kleenschreibung muuß beachtet waan).',
+'logempty' => 'Kenne poaßenda Einträge.',
+'log-title-wildcard' => 'Tittel begennt miet …',
+
+# Special:AllPages
+'allpages' => 'Olle Seyta',
+'alphaindexline' => '$1 bis $2',
+'nextpage' => 'Nächste Seyte ($1)',
+'prevpage' => 'Vurherige Seyte ($1)',
+'allpagesfrom' => 'Seyta oazeega oab:',
+'allpagesto' => 'Seita oazeega bis:',
+'allarticles' => 'Olle Seyta',
+'allinnamespace' => 'Olle Seyta (Noamasraum: $1)',
+'allnotinnamespace' => 'Olle Seyta (ne eim $1 Noamasraum)',
+'allpagesprev' => 'Vurherige',
+'allpagesnext' => 'Nächste',
+'allpagessubmit' => 'Oawenda',
+'allpagesprefix' => 'Seyta oazeiga mit Präfix:',
+'allpagesbadtitle' => 'Dar eingegebene Seytanoame ies ungiltig: Ar hoot entweder a vorangestelltes Sproach-, a Interwiki-Kürzel oder enthält a oder mehrere Zeichen, welche in Seytanoama ne verwendet waan dirfa.',
+'allpages-bad-ns' => 'Dar Noamasraum „$1“ ies ei {{SITENAME}} ne vorhanden.',
+
+# Special:Categories
+'categories' => 'Kategoria',
+'categoriespagetext' => 'Folgende {{PLURAL:$1|Heetgruppe enthält|Heetgruppa enthaaln}} Seyta oder Dateien.
+[[Special:UnusedCategories|Unbenutzte Heetgruppa]] waan hier ne uffgefiehrt.
+Siehe au de Liste dar [[Special:WantedCategories|gewienschta Heetgruppa]].',
+'categoriesfrom' => 'Zeige Heetgruppa ob:',
+'special-categories-sort-count' => 'Sortierung noach Oazoahl',
+'special-categories-sort-abc' => 'Sortierung noach Alphabet',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Geläschte Beiträge',
+'deletedcontributions-title' => 'Geläschte Beiträge',
+'sp-deletedcontributions-contribs' => 'Benutzerbeiträge',
+
+# Special:LinkSearch
+'linksearch' => 'Weblink-Suche',
+'linksearch-pat' => 'Suchmuster:',
+'linksearch-ns' => 'Noamensraum:',
+'linksearch-ok' => 'Sucha',
+'linksearch-text' => 'Diese Spezialseite ermeeglicht de Siche noach Seyta, ei denen bestimmte Weblinks enthalten sein. Dabei kinna Wildcards wie beispielsweise <tt>*.example.com</tt> benutzt waan.<br />Understitzte Protokolle: <tt>$1</tt>',
+'linksearch-line' => '$1 ies verlinkt vun $2',
+'linksearch-error' => 'Wildcards kinna ock oam Oanfang dar URL verwendet waan.',
+
+# Special:ListUsers
+'listusersfrom' => 'Zeige Benutzer ob:',
+'listusers-submit' => 'Zeige',
+'listusers-noresult' => 'Kenn Benutzer gefunda.',
+'listusers-blocked' => '(gesperrt)',
+
+# Special:ActiveUsers
+'activeusers' => 'Liste aktiver Benutzer',
+'activeusers-noresult' => 'Kenne Benutzer gefunda.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Neuoameldungs-Logbuch',
+'newuserlogpagetext' => 'Dies ies a Logbuch fier neu erstellte Nutzerkonten.',
+'newuserlog-byemail' => 'doas Passwurt wourde per E-Mail versandt',
+'newuserlog-create-entry' => 'Nutzer wourde neu registriert',
+'newuserlog-create2-entry' => 'erstallte neues Nutzerkonto „$1“',
+'newuserlog-autocreate-entry' => 'Nutzerkonto wurde automatisch erstallt',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Nutzergruppen-Rechte',
+'listgrouprights-summary' => 'Dies ies anne Liste dar ei diesem Wiki definierten Nutzergruppen und dar damit verbundenen Rechte.
+Zusätzliche Informationen ieber einzelne Rechte kinna [[{{MediaWiki:Listgrouprights-helppage}}|hier]] gefunda waan.',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Rechte',
+'listgrouprights-helppage' => 'Help:Grupparechte',
+'listgrouprights-members' => '(Mitgliederliste)',
+'listgrouprights-addgroup' => 'Nutzer zu {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} hinzufiega: $1',
+'listgrouprights-removegroup' => 'Nutzer aus {{PLURAL:$2|dieser Gruppe|diesen Gruppen}} entferna: $1',
+'listgrouprights-addgroup-all' => 'Nutzer zu olla Gruppa hinzufiega',
+'listgrouprights-removegroup-all' => 'Nutzer aus olla Gruppa entferna',
+
+# E-mail user
+'mailnologin' => 'Fahler beim E-Mail-Versand',
+'mailnologintext' => 'Du mußt [[Special:UserLogin|oagemeldet sei]] und anne bestätigte E-Mail-Atresse ei denn [[Special:Preferences|Einstellunga]] eingetraga hoan, im andern Nutzern E-Mails schicka zu kinna.',
+'emailuser' => 'E-Mail oa diesa Benutzer',
+'emailpage' => 'E-Mail oa Benutzer',
+'emailpagetext' => 'Du koast damm Nutzer miet damm onda stiehenda Formular anne E-Mail senda.
+Ols Obsender werd de E-Mail-Adtresse aus denn [[Special:Preferences|Einstellunga]] eingetraga, damit dar Nutzer dir antwurta koan.',
+'usermailererror' => "Doas E-Mail-Objekt gab an'n Fahler zerricke:",
+'defemailsubject' => '{{SITENAME}}-E-Mail',
+'noemailtitle' => 'Kenne E-Mail-Atresse',
+'noemailtext' => 'Dieser Nutzer hoot kenne giltige E-Mail-Atresse oagegahn.',
+'nowikiemailtitle' => 'E-Mail-Versand nee meegliech',
+'email-legend' => "E-Mail oa an'n andern {{SITENAME}}-Nutzer senda",
+'emailfrom' => 'Vun:',
+'emailto' => 'Oa:',
+'emailsubject' => 'Betreff:',
+'emailmessage' => 'Noachricht:',
+'emailsend' => 'Senda',
+'emailccme' => 'Sende anne Kopie dar E-Mail oa miech',
+'emailccsubject' => 'Kopie denner Noachricht oa $1: $2',
+'emailsent' => 'E-Mail verschickt',
+'emailsenttext' => 'Denne E-Mail wurde verschickt.',
+'emailuserfooter' => 'Diese E-Mail wurde vu {{SITENAME}}-Nutzer „$1“ oa „$2“ gesendet.',
+
+# Watchlist
+'watchlist' => 'Beobachtungsliste',
+'mywatchlist' => 'Beobachtungsliste',
+'watchlistfor' => "(fier '''$1''')",
+'nowatchlist' => 'Du host kenne Einträge uff denner Beobachtungsliste.',
+'watchlistanontext' => 'Du mußt diech $1, im denne Beobachtungsliste zu sahn oder Einträge uff ihr zu beoarbeeta.',
+'watchnologin' => 'Du best ne oagemeldet',
+'watchnologintext' => 'Du mußt [[Special:UserLogin|oagemeldet]] sei, im denne Beobachtungsliste zu beoarbeeta.',
+'addedwatch' => 'Zerr Beobachtungsliste hinzugefiegt',
+'addedwatchtext' => 'De Seyte „<nowiki>$1</nowiki>“ wurde zu denner [[Special:Watchlist|Beobachtungsliste]] hinzugefiegt.
+
+Spätere Änneronga oa dieser Seyte on dar dazugeheeriga Dischkursseite waan durt gelistet on
+ei dar Iebersicht dar [[Special:RecentChanges|letzta Änneronga]] ei Fettschrift dargestellt.
+
+Wenn du de Seyte wieder voo denner Beobachtungsliste entferna mechtest, klicke uff dar jeweiligen Seyte uff „nee meh beobachta“.',
+'removedwatch' => 'Vun dar Beobachtungsliste entfernt',
+'removedwatchtext' => 'De Seyte „[[:$1]]“ wurde vun denner [[Special:Watchlist|Beobachtungsliste]] entfernt.',
+'watch' => 'Beobachta',
+'watchthispage' => 'Seyte beobachta',
+'unwatch' => 'nä mehr beobachta',
+'unwatchthispage' => 'Nä mehr beobachta',
+'notanarticle' => 'Keene Seyte',
+'notvisiblerev' => 'Version wurde gelöscht',
+'watchnochange' => 'Kenne dar vu dir beobachteta Seyta wurde während des oagezeigta Zeitraums beoarbeetet.',
+'watchlist-details' => 'Du beobachtest {{PLURAL:$1|1 Seyte|$1 Seyta}}.',
+'wlheader-enotif' => '* Dar E-Mail-Benoachrichtigungsdienst ies aktiviert.',
+'wlheader-showupdated' => "* Seyta miet noo ne gesehenen Änderunga waan '''fett''' dargestellt.",
+'watchmethod-recent' => 'Ieberprifa dar letzta Beoarbeetunga fier de Beobachtungsliste',
+'watchmethod-list' => 'Ieberpriefa dar Beobachtungsliste noach letzta Beoarbeetunga',
+'watchlistcontains' => 'Denne Beobachtungsliste enthält $1 {{PLURAL:$1|Seyte|Seyta}}.',
+'iteminvalidname' => "Problem mi'm Eintrag „$1“, ungiltiger Noame.",
+'wlnote' => "Is {{PLURAL:$1|folgt de letzte Änderung|folga de letzta '''$1''' Änderunga}} dar letzta {{PLURAL:$2|Stunde|'''$2''' Stunda}}.",
+'wlshowlast' => 'Zeige de Änneronga dar letzta $1 Stonda, $2 Taage oder $3.',
+'watchlist-options' => 'Oazeegeoptiona',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Beobachta …',
+'unwatching' => 'Nee beobachta …',
+
+'enotif_mailer' => '{{SITENAME}}-E-Mail-Benoachrichtigungsdienst',
+'enotif_reset' => 'Olle Seyta ols besucht markiern',
+'enotif_newpagetext' => 'Doas ies anne neue Seyte.',
+'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
+'changed' => 'geändert',
+'created' => 'erzeugt',
+'enotif_subject' => '[{{SITENAME}}] De Seyte "$PAGETITLE" wurde vu $PAGEEDITOR $CHANGEDORCREATED',
+'enotif_lastvisited' => "Olle Änderunga uff a'n Blick: $1",
+'enotif_lastdiff' => 'Siehe $1 noach dieser Änderung.',
+'enotif_anon_editor' => 'Anonymer Nutzer $1',
+'enotif_body' => 'Hallo $WATCHINGUSERNAME,
+
+de {{SITENAME}}-Seyte „$PAGETITLE“ wurde vu $PAGEEDITOR oam $PAGEEDITDATE im $PAGEEDITTIME Seeger $CHANGEDORCREATED.
+
+Aktuelle Version: $PAGETITLE_URL
+
+$NEWPAGE
+
+Zusommafassung des Beoarbeeters: $PAGESUMMARY $PAGEMINOREDIT
+
+Kontakt zum Beoarbeeter:
+E-Mail: $PAGEEDITOR_EMAIL
+Wiki: $PAGEEDITOR_WIKI
+
+Is waan sulange kenne wettera Benachrichtigungs-E-Mails gesendet, bis du de Seyte wieder besicht host. Uff denner Beobachtungsliste koast du olle Benachrichtigungsmarker zusomma zerrickesetza.
+
+ Dei freindliches {{SITENAME}}-Benoachrichtigungssystem
+
+--
+Im de Einstellunga denner Beobachtungsliste oazupoaßa, besiche: {{fullurl:{{#special:Watchlist}}/edit}}
+
+Rickmeldungen und wettere Helfe: {{fullurl:{{MediaWiki:Helppage}}}}',
+
+# Delete
+'deletepage' => 'Seyte läscha',
+'confirm' => 'Bestätiga',
+'excontent' => 'Aaler Inhalt: „$1“',
+'excontentauthor' => 'Inhalt woar: „$1“ (einziger Beoarbeeter: [[Special:Contributions/$2|$2]])',
+'exbeforeblank' => 'Inhalt vur damm Laara dar Seyte: „$1“',
+'exblank' => 'Seyte woar laar',
+'delete-confirm' => 'Läscha vun „$1“',
+'delete-legend' => 'Läscha',
+'historywarning' => "'''Ochtiche:''' De Seyte, de du läscha mechtest, hoot anne Versionsgeschichte miet $1 {{PLURAL:$1|Version|Versionen}}:",
+'confirmdeletetext' => 'Du best dabei, eene Seyte miet olla zugeheeriga ältera Versiona zu läscha. Bite bestätige dazu, dass du dir dar Konsequenza bewusst best, on dass du ei Iebereinstimmung miet dan [[{{MediaWiki:Policy-url}}|Richtlinia]] handelst.',
+'actioncomplete' => 'Aksjonn beendet',
+'actionfailed' => 'Aksjonn fahlgeschlaga',
+'deletedtext' => '„<nowiki>$1</nowiki>“ wurde geläscht. Eim $2 findest du eene Liste dar letzta Läschunga.',
+'deletedarticle' => 'hoot „[[$1]]“ geläscht',
+'suppressedarticle' => 'veränderte de Sechtbarkeet vu „[[$1]]“',
+'dellogpage' => 'Läsch-Logbuch',
+'dellogpagetext' => 'Dies ies doas Logbuch dar geläschta Seyta und Dateien.',
+'deletionlog' => 'Läsch-Logbuch',
+'reverted' => 'Uff anne aale Version zerrickegesetzt',
+'deletecomment' => 'Begriendung:',
+'deleteotherreason' => 'Anderer/ergänzender Grund:',
+'deletereasonotherlist' => 'Anderer Grund',
+'deletereason-dropdown' => '* Allgemeene Läschgrinde
+** Wunsch des Autors
+** Urheberrechtsverletzung
+** Vandalismus',
+'delete-edit-reasonlist' => 'Läschgrinde beoarbeeta',
+'delete-toobig' => 'Diese Seyte hoot miet meh ols $1 {{PLURAL:$1|Version|Versionen}} anne siehr lange Versionsgeschichte. Doas Läscha sulcher Seyta wurde eingeschränkt, im anne versehentliche Ieberlastung dar Server zu verhindern.',
+'delete-warning-toobig' => 'Diese Seyte hoot miet meh ols $1 {{PLURAL:$1|Version|Versionen}} anne sehr lange Versionsgeschichte. Doas Läscha koan zu Sterunga eim Datenbankbetrieb fiehrn.',
+
+# Rollback
+'rollback' => 'Zerrickesetza dar Änderunga',
+'rollback_short' => 'Zerrickesetza',
+'rollbacklink' => 'Zerrickesetza',
+'rollbackfailed' => 'Zerrickesetza gescheitert',
+'cantrollback' => 'De Änderung koan ne zerrickegesetzt waan, do is kenne friehera Autoren gibt.',
+'alreadyrolled' => 'Doas Zerrickesetza dar Änderunga vu [[User:$2|$2]] ([[User talk:$2|Dischkur]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) oa [[:$1]] ies gescheitert, do ei dar Zwischenzeit a anderer Nutzer de Seyte geändert hoot.
+
+De letzte Änderung stommt vu [[User:$3|$3]] ([[User talk:$3|Dischkur]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "De Änderungszusommafassung lautet: ''„$1“''.",
+'revertpage' => 'Änderunga vu [[Special:Contributions/$2|$2]] ([[User talk:$2|Dischkur]]) rickgängig gemacht und letzte Version vu [[User:$1|$1]] wiederhergestellt',
+'rollback-success' => 'De Änderunga vu $1 wurden rickgängig gemacht und de letzte Version vu $2 wurde wiederhergestellt.',
+'sessionfailure' => "Is goab a Problem miet dar Iebertragung denner Nutzerdaten.
+Diese Aksjonn wurde daher sicherheetsholber obgebrochen, im anne foalsche Zuordnung denner Änderunga zu an'm andern Nutzer zu verhindern.
+Bitte gieh zerricke und versiche dann Vurgang erneut auszufiehrn.",
+
+# Protect
+'protectlogpage' => 'Seytaschutz-Logbuch',
+'protectlogtext' => 'Dies ies doas Seytaschutz-Logbuch.
+Siehe de [[Special:ProtectedPages|Liste dar geschietzta Seyta]] fier olle aktuell geschietzta Seyta.',
+'protectedarticle' => 'schietzte „[[$1]]“',
+'modifiedarticleprotection' => 'änderte dan Schutz voo „[[$1]]“',
+'unprotectedarticle' => 'hob dann Schutz vu „[[$1]]“ uff',
+'movedarticleprotection' => 'iebertrug dann Seytaschutz vu „[[$2]]“ uff „[[$1]]“',
+'protect-title' => 'Schutz ändern vu „$1“',
+'prot_1movedto2' => 'hoot „[[$1]]“ nooch „[[$2]]“ verschoba',
+'protect-legend' => 'Seytaschutzstatus ändern',
+'protectcomment' => 'Grund:',
+'protectexpiry' => 'Sperrdauer:',
+'protect_expiry_invalid' => 'De eengegebene Lengde ies ungieltig.',
+'protect_expiry_old' => 'De Sperrzeit liegt ei dar Vergangenheet.',
+'protect-text' => 'Hier koast du dan Schutzstatus fier de Seite „$1“ asahn on ändern.',
+'protect-locked-blocked' => "Du koast dann Seytaschutz ne ändern, do dei Nutzerkonto gesperrt ies. Hier sein de aktuellen Seytaschutz-Einstellunga fier de Seyte '''„$1“:'''",
+'protect-locked-dblock' => "De Datenbank ies gesperrt, dar Seytaschutz koan daher ne geändert waan. Hier sein de aktuellen Seytaschutz-Einstellunga fier de Seyte '''„$1“:'''",
+'protect-locked-access' => "Dei Benutzerkonto verfiegt nee ieber de nuutwendiga Rechte zerr Ännerong des Seitaschutzes. Hier sein de aktuella Seitaschutzeinstellunga fier de Seite '''„$1“:'''",
+'protect-cascadeon' => 'Diese Seyte ies gegenwärtig Teel eener Kaskadensperre. Se ies ei de {{PLURAL:$1|folgende Seyte|folgenda Seyta}} eingebunda, welche durch die Kaskadensperroption geschietzt {{PLURAL:$1|ies|sein}}. Dar Seytaschutzstatus koan fier diese Seyte geändert waan, dies hoot jedoch kenn Einfluss uff de Kaskadensperre:',
+'protect-default' => 'Olle Benutzer',
+'protect-fallback' => 'Is wird de „$1“-Berechtigung beneetigt.',
+'protect-level-autoconfirmed' => 'Sperrung fier neue on nee registrierte Benutzer',
+'protect-level-sysop' => 'Oack Administratora',
+'protect-summary-cascade' => 'kaskadierend',
+'protect-expiring' => 'bis $2, $3 Seeger (UTC)',
+'protect-expiry-indefinite' => 'unbeschränkt',
+'protect-cascade' => 'Kaskadierende Sperre – olle ei diese Seyte eingebundena Vorlaga waan ebenfoalls gesperrt.',
+'protect-cantedit' => 'Du koast de Sperre dieser Seite nee ändern, doo du keene Berechtigung zim Beoarbeeta dar Seite host.',
+'protect-othertime' => 'Andere Sperrdauer:',
+'protect-othertime-op' => 'andere Sperrdauer',
+'protect-existing-expiry' => 'Aktuelles Seytaschutzende: $2, $3 Seeger',
+'protect-otherreason' => 'Anderer/ergänzender Grund:',
+'protect-otherreason-op' => 'anderer/ergänzender Grund',
+'protect-dropdown' => '*Allgemeene Schutzgrinde
+** Weblink-Spam
+** Editwar
+** Häufig eingebundene Vurlage
+** Seyte miet huher Besucherzoahl',
+'protect-edit-reasonlist' => 'Schutzgrinde beoarbeeta',
+'protect-expiry-options' => '1 Stunde:1 hour,1 Tag:1 day,1 Wuche:1 week,2 Wucha:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Joahr:1 year,Unbeschränkt:infinite',
+'restriction-type' => 'Schutzstatus',
+'restriction-level' => 'Schutzhiehe',
+'minimum-size' => 'Mindestgreeße',
+'maximum-size' => 'Maximalgreeße:',
+'pagesize' => '(Bytes)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Beorbeeta',
+'restriction-move' => 'Verschieba',
+'restriction-create' => 'Erschtella',
+'restriction-upload' => 'Huchloada',
+
+# Restriction levels
+'restriction-level-sysop' => 'geschitzt (ock Administratorn)',
+'restriction-level-autoconfirmed' => 'geschitzt (ock oagemeldete, ne-neue Nutzer)',
+'restriction-level-all' => 'olle',
+
+# Undelete
+'undelete' => 'Geläschte Seyta oazeiga',
+'undeletepage' => 'Geläschte Seyta oazeiga und wiederherstalla',
+'undeletepagetitle' => "'''De folgende Ausgoabe zeigt de geläschta Versionen vu [[:$1|$1]]'''.",
+'viewdeletedpage' => 'Geläschte Seyta oazeiga',
+'undeletepagetext' => 'De {{PLURAL:$1|folgende Seyte wurde geläscht und koan|folgenda $1 Seyta wurden geläscht und kinna}} vu Administratoren wiederhergestellt waan:',
+'undelete-fieldset-title' => 'Wiederherstalla',
+'undeleteextrahelp' => '* Im de Seyte komplett miet olla Versionen wiederherzustella, wähle kenne Version aus, gib anne Begrindung oa und klicke uff „Wiederherstellen“.
+* Mechtest du ock bestimmte Versionen wiederherstella, su wähle diese bitte einzeln anhand dar Markierungen aus, gib anne Begrindung oa und klicke dann uff „Wiederherstella“.
+* „Obbrecha“ laart doas Kommentarfeld und entfernt olle Markierungen bei dann Versionen.',
+'undeleterevisions' => '{{PLURAL:$1|1 Version|$1 Versionen}} archiviert',
+'undeletehistory' => 'Wenn du diese Seyte wiederherstellst, waan au olle aaln Versionen wiederhergestellt.
+Wenn seit dar Läschung anne neue Seyte gleichen Noamens erstellt wurde, waan de wiederhergestellta Versionen chronologisch ei de Versionsgeschichte eingeordnet.',
+'undeleterevdel' => "De Wiederherstellung werd ne durchgefiehrt, wenn de aktuellste Version versteckt ies oder versteckte Teele enthält.
+Ei diesem Foall darf de aktuellste Version ne markiert waan oder ihr Status muuß uff dann a'r normalen Version geändert waan.",
+'undeletehistorynoadmin' => 'Diese Seyte wurde geläscht. Dar Grund fier de Läschung ies ei dar Zusommafassung oagegeba,
+genauso wie Details zum letzta Nutzer, dar diese Seyte vor dar Läschung beoarbeetet hoot.
+Dar aktuelle Text dar geläschta Seyte ies ock Administratoren zugänglich.',
+'undelete-revision' => 'Geläschte Version vu $1 (vum $4 im $5 Seeger), $3:',
+'undeleterevision-missing' => 'Ungiltige oder fehlende Version. Entweder ies dar Link foalsch oder de Version wurde aus damm Archiv wiederhergestellt oder entfernt.',
+'undelete-nodiff' => 'Kenne vorhergehende Version vorhanden.',
+'undeletebtn' => 'Wiederherstalla',
+'undeletelink' => 'oasahn/wiederherstella',
+'undeleteviewlink' => 'oasahn',
+'undeletereset' => 'Abbrechen',
+'undeleteinvert' => 'Auswoahl umkehra',
+'undeletecomment' => 'Begrindung:',
+'undeletedarticle' => 'hoot „[[$1]]“ wiederhergestellt',
+'undeletedrevisions' => '{{PLURAL:$1|1 Version wurde|$1 Versionen wurden}} wiederhergestellt',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 Version|$1 Versionen}} und {{PLURAL:$2|1 Datei|$2 Dateien}} wurden wiederhergestallt',
+'undeletedfiles' => '{{PLURAL:$1|1 Datei wurde|$1 Dateien wurden}} wiederhergestellt',
+'cannotundelete' => 'Wiederherstellung fehlgeschlaga; jemand anderes hoot de Seyte bereits wiederhergestellt.',
+'undeletedpage' => "'''„$1“''' wurde wiederhergestellt.
+
+Eim [[Special:Log/delete|Läsch-Logbuch]] fendest du anne Iebersicht dar geläschta und wiederhergestellta Seyta.",
+'undelete-header' => 'Siehe eim [[Special:Log/delete|Läsch-Logbuch]] noach kierzlich geläschta Seyta.',
+'undelete-search-box' => 'Siche noach geläschta Seyta',
+'undelete-search-prefix' => 'Sichbegriff (Wortanfang ohne Wildcards):',
+'undelete-search-submit' => 'Sucha',
+'undelete-no-results' => 'Is wurde eim Archiv kenne zum Sichbegriff passende Seyte gefunda.',
+'undelete-filename-mismatch' => 'De Dateiversion miet damm Zeitstempel $1 konnte ne wiederhergestellt waan: De Dateinoama passen ne zueinander.',
+'undelete-bad-store-key' => 'De Dateiversion miet damm Zeitstempel $1 konnte ne wiederhergestellt waan: De Datei woar bereits vor damm Läscha ne meh vorhanden.',
+'undelete-cleanup-error' => 'Fahler beim Läscha dar unbenutzta Archiv-Version $1.',
+'undelete-missing-filearchive' => 'De Datei miet dar Archiv-ID $1 koan ne wiederhergestellt waan, do se ne ei dar Datenbank vorhanden ies. Meeglicherweise wurde se bereits wiederhergestellt.',
+'undelete-error-short' => 'Fahler beim Wiederherstalla dar Datei $1',
+'undelete-error-long' => "Is wurden Fahler beim Wiederherstella a'r Datei festgestellt:
+
+$1",
+'undelete-show-file-confirm' => 'Best du sicher, doaß du anne geläschte Version dar Datei „<nowiki>$1</nowiki>“ vum $2, $3 Seeger sahn wielst?',
+'undelete-show-file-submit' => 'Ju',
+
+# Namespace form on various pages
+'namespace' => 'Noamensraum:',
+'invert' => 'Oauswoahl imkehra',
+'blanknamespace' => '(Seyta)',
+
+# Contributions
+'contributions' => 'Benutzerbeiträge',
+'contributions-title' => 'Benutzerbeiträge voo „$1“',
+'mycontris' => 'Vu mer verändart',
+'contribsub2' => 'Fier $1 ($2)',
+'nocontribs' => 'Is wurden kenne Nutzerbeiträge miet diesen Kriterien gefunda.',
+'uctop' => '(aktuell)',
+'month' => 'on Moonat:',
+'year' => 'bis Joahr:',
+
+'sp-contributions-newbies' => 'Zeige oack Beiträge neuer Benutzer',
+'sp-contributions-newbies-sub' => 'Fier Neulinge',
+'sp-contributions-newbies-title' => 'Nutzerbeiträge vu neua Nutzern',
+'sp-contributions-blocklog' => 'Sperr-Logbuch',
+'sp-contributions-deleted' => 'Geläschte Beiträge',
+'sp-contributions-logs' => 'Logbicher',
+'sp-contributions-talk' => 'Dischkur',
+'sp-contributions-userrights' => 'Nutzerrechteverwaltung',
+'sp-contributions-search' => 'Suche noach Benutzerbeiträga',
+'sp-contributions-username' => 'IP-Atresse oder Benutzernoame:',
+'sp-contributions-submit' => 'Sucha',
+
+# What links here
+'whatlinkshere' => 'Links uff de Seyte',
+'whatlinkshere-title' => 'Seyta, de uff „$1“ verlinka',
+'whatlinkshere-page' => 'Seyte:',
+'linkshere' => "De folgenden Seyta verlinka uff '''„[[:$1]]“''':",
+'nolinkshere' => "Kenne Seyte verlinkt uff '''„[[:$1]]“'''.",
+'nolinkshere-ns' => "Kenne Seyte verlinkt uff '''„[[:$1]]“''' eim gewählta Noamasraum.",
+'isredirect' => 'Weiterleitungsseyte',
+'istemplate' => 'Vorlageneinbindung',
+'isimage' => 'Dateilink',
+'whatlinkshere-prev' => '{{PLURAL:$1|vurheriger|vurherige $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|nächster|nächste $1}}',
+'whatlinkshere-links' => '← Links',
+'whatlinkshere-hideredirs' => 'Weiterleitunga $1',
+'whatlinkshere-hidetrans' => 'Vurlageneinbindunga $1',
+'whatlinkshere-hidelinks' => 'Links $1',
+'whatlinkshere-hideimages' => 'Dateilinks $1',
+'whatlinkshere-filters' => 'Filter',
+
+# Block/unblock
+'blockip' => 'IP-Atresse/Benutzer sperra',
+'blockip-legend' => 'IP-Atresse/Benutzer sperra',
+'blockiptext' => "Mit diesem Formular sperrst du anne IP-Atresse oder an'n Nutzernoama, su doaß vu dort kenne Änderunga meh vorgenumma waan kinna.
+Dies sullte ock erfolga, im Vandalismus zu verhindern und ei Iebereinstimmung miet dann [[{{MediaWiki:Policy-url}}|Richtlinien]].
+Bitte gib dann Grund fier de Sperre oa.",
+'ipaddress' => 'IP-Atresse oder Benutzernoame:',
+'ipadressorusername' => 'IP-Atresse oder Benutzernoame:',
+'ipbexpiry' => 'Sperrdauer:',
+'ipbreason' => 'Begriendung:',
+'ipbreasonotherlist' => 'Andere Begrindung',
+'ipbreason-dropdown' => '* Allgemeene Sperrgrinde
+** Eenfiega foalscher Informationa
+** Laara vu Seyta
+** Fiegt massenweise externe Links a
+** Einstalla unsinniger Sacha ei Seyta
+** bedrohliches Verhaala/Belästigung
+** Missbrauch durch mehrere Nutzerkonten
+** Ungeeigneter Nutzernoame',
+'ipbanononly' => 'Ock anonyme Nutzer sperra',
+'ipbcreateaccount' => 'Erstellung vu Nutzerkonten verhindern',
+'ipbemailban' => 'E-Mail-Versand sperra',
+'ipbenableautoblock' => 'Sperre de aktuell vu diesem Benutzer genutzte IP-Atresse suwie automatisch olle folgenda, vu denen aus ar Beoarbeetunga oder doas Oalega vu Benutzeraccounts versucht',
+'ipbsubmit' => 'IP-Atresse/Benutzer sperra',
+'ipbother' => 'Ondere Dauer (englsch):',
+'ipboptions' => '2 Stonda:2 hours,1 Taag:1 day,3 Taage:3 days,1 Wuche:1 week,2 Wucha:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joahr:1 year,Unbeschränkt:infinite',
+'ipbotheroption' => 'Oandere Dauer',
+'ipbotherreason' => 'Andere/ergänzende Begrindung:',
+'ipbhidename' => 'Nutzernoame ei Beoarbeetunga und Listen verstecka',
+'ipbwatchuser' => 'Nutzer(dischkur)seyte beobachta',
+'ipballowusertalk' => 'Nutzer darf eegene Dischkurseyta während senner Sperre beoarbeeta',
+'ipb-change-block' => 'Sperre miet diesen Sperrparametern erneuern',
+'badipaddress' => 'De IP-Atresse hoot a foalsches Furmat.',
+'blockipsuccesssub' => 'Sperre erfolgreich',
+'blockipsuccesstext' => 'Dar Nutzer/de IP-Atresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />
+Zur Uffhebung dar Sperre siehe ie [[Special:IPBlockList|Liste oller aktiven Sperra]].',
+'ipb-edit-dropdown' => 'Sperrgrinde beoarbeeta',
+'ipb-unblock-addr' => '„$1“ freigahn',
+'ipb-unblock' => 'IP-Atresse/Nutzer freigahn',
+'ipb-blocklist-addr' => 'Aktuelle Sperre fier „$1“ onzeiga',
+'ipb-blocklist' => 'Olle aktuellen Sperra oazeiga',
+'ipb-blocklist-contribs' => 'Nutzerbeiträge fier „$1“',
+'unblockip' => 'IP-Atresse freigahn',
+'unblockiptext' => "Miet diesem Formular koast du anne IP-Atresse oder an'n Nutzer freigahn.",
+'ipusubmit' => 'Freigahn',
+'unblocked' => '[[User:$1|$1]] wurde freigegahn',
+'unblocked-id' => 'Sperr-ID $1 wurde freigegahn',
+'ipblocklist' => 'Gesperrte IP-Atressa on Benutzernoama',
+'ipblocklist-legend' => "Siche noach a'm gesperrta Nutzer",
+'ipblocklist-username' => 'Nutzernoame oder IP-Atresse:',
+'ipblocklist-sh-userblocks' => 'Benutzersperra $1',
+'ipblocklist-sh-tempblocks' => 'Befristete Sperra $1',
+'ipblocklist-sh-addressblocks' => 'IP-Sperra $1',
+'ipblocklist-submit' => 'Sucha',
+'ipblocklist-localblock' => 'Lokale Sperre',
+'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
+'blocklistline' => '$1, $2 sperrte $3 (bis $4)',
+'infiniteblock' => 'unbegrenzt',
+'expiringblock' => 'endet oam $1 im $2 Seeger',
+'anononlyblock' => 'ocke Anonyme',
+'noautoblockblock' => 'Autoblock deaktiviert',
+'createaccountblock' => 'Erstellung vu Nutzerkonten gesperrt',
+'emailblock' => 'E-Mail-Versand gesperrt',
+'blocklist-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
+'ipblocklist-empty' => 'De Liste enthält kenne Eenträge.',
+'ipblocklist-no-results' => 'De gesuchte IP-Atresse/dar Nutzernoame ies ne gesperrt.',
+'blocklink' => 'Sperra',
+'unblocklink' => 'freigahn',
+'change-blocklink' => 'Sperre ändern',
+'contribslink' => 'Beiträge',
+'autoblocker' => 'Automatische Sperre, do du anne gemeinsame IP-Atresse miet [[User:$1|$1]] benutzt. Grund dar Nutzersperre: „$2“.',
+'blocklogpage' => 'Benutzersperr-Logbuch',
+'blocklogentry' => 'sperrte „[[$1]]“ fier dan Zeitraum: $2 $3',
+'reblock-logentry' => 'änderte de Sperre fier „[[$1]]“ fier dann Zeitraum: $2 $3',
+'blocklogtext' => 'Dies ies doas Logbuch ieber Sperrunga und Entsperrunga vu Nutzern und IP-Atressa.
+Automatisch gesperrte IP-Atressa waan ne erfasst.
+Siehe de [[Special:IPBlockList|Liste dar gesperrta IP-Atressa und Nutzernoama]] fier olle aktiven Sperra.',
+'unblocklogentry' => 'hoot de Sperre voo „$1“ uffgehoba',
+'block-log-flags-anononly' => 'ock Anonyme',
+'block-log-flags-nocreate' => 'Erstellung voo Benutzerkonta gesperrt',
+'block-log-flags-noautoblock' => 'Autoblock deaktiviert',
+'block-log-flags-noemail' => 'E-Mail-Versand gesperrt',
+'block-log-flags-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
+'block-log-flags-angry-autoblock' => 'erweiterter Autoblock aktiviert',
+'block-log-flags-hiddenname' => 'Nutzernoame versteckt',
+'range_block_disabled' => 'De Meeglichkeit, ganze Atressräume zu sperra, ies ne aktiviert.',
+'ipb_expiry_invalid' => 'De eingegebene Dauer ies ungiltig.',
+'ipb_expiry_temp' => 'Versteckte Nutzernoamas-Sperra sulla permanent sei.',
+'ipb_already_blocked' => '„$1“ wurde bereits gesperrt.',
+'ipb-needreblock' => '== Sperre vurhanda ==
+„$1“ ies bereits gesperrt. Mechtest du de Sperrparameter ändern?',
+'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
+'ipb_cant_unblock' => 'Fahler: Sperr-ID $1 ne gefunda. De Sperre wurde bereits uffgehuba.',
+'ipb_blocked_as_range' => 'Fahler: De IP-Atresse $1 wurde ols Teel dar Bereichssperre $2 indirekt gesperrt. Anne Entsperrung vu $1 alleene ies ne meeglich.',
+'ip_range_invalid' => 'Ungiltiger IP-Atressbereich.',
+'blockme' => 'Sperre miech',
+'proxyblocker' => 'Proxy blocker',
+'proxyblocker-disabled' => 'Diese Funksjonn ies deaktiviert.',
+'proxyblockreason' => 'Denne IP-Atresse wurde gesperrt, do se a offener Proxy ies. Bitte kontaktiere denn Internet-Provider oder denne Systemadministratoren und informiere se ieber dieses meegliche Sicherheetsproblem.',
+'proxyblocksuccess' => 'Fattich',
+'sorbsreason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet.',
+'sorbs_create_account_reason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet. Doas Oalega neuer Nutzer ies ne meeglich.',
+'cant-block-while-blocked' => 'Du koast kenne andern Nutzer sperra, während du selbst gesperrt best',
+
+# Developer tools
+'lockdb' => 'Datenbank sperra',
+'unlockdb' => 'Datenbank freigahn',
+'lockdbtext' => 'Miet damm Sperra dar Datenbank waan olle Änderunga oa Nutzereinstellunga, Beobachtungslista, Seyta usw. verhindert. Bitte de Sperrung bestätiga.',
+'unlockdbtext' => 'Doas Uffheba dar Datenbank-Sperre werd olle Änderunga wieder zulassa. Bitte de Uffhebung bestätiga.',
+'lockconfirm' => 'Ju, iech mechte de Datenbank sperra.',
+'unlockconfirm' => 'Ju, iech mechte de Datenbank freigahn.',
+'lockbtn' => 'Datenbank sperra',
+'unlockbtn' => 'Datenbank freigahn',
+'locknoconfirm' => 'Du host doas Bestätigungsfeld ne markiert.',
+'lockdbsuccesssub' => 'Datenbank wurde erfolgreich gesperrt',
+'unlockdbsuccesssub' => 'Datenbank wourde erfolgreich freigegahn',
+'lockdbsuccesstext' => 'De {{SITENAME}}-Datenbank wurde gesperrt.<br />Bitte gib de Datenbank [[Special:UnlockDB|wieder frei]], sobald de Wartung obgeschlossa ies.',
+'unlockdbsuccesstext' => 'De {{SITENAME}}-Datenbank wourde freigegahn.',
+'lockfilenotwritable' => 'De Datenbank-Sperrdatei ies ne beschreibbar. Zum Sperra oder Freigahn dar Datenbank muuß diese fier dann Webserver beschreibbar sei.',
+'databasenotlocked' => 'De Datenbank ies ne gesperrt.',
+
+# Move page
+'move-page' => 'Verschieba $1',
+'move-page-legend' => 'Seyte verschieba',
+'movepagetext' => "Miet diesem Formular koast du eene Seyte umbenenna (mitsamt olla Versiona).
+Dar aale Tittel wird zim neua weiterleita.
+Du koast Weiterleitunga, de uffa Originaltittel verlinka, automatisch korrigiera lassa.
+Falls du dies nee tust, priefe uff [[Special:DoubleRedirects|doppelte]] oder [[Special:BrokenRedirects|kaputte Weiterleitunga]].
+Du best derfier verantwurtlich, dass Links weiterhin uff doas korrekte Ziel zeiga.
+
+De Seyte wird '''nee''' verschoba, wenn is bereits eene Seyte miet demselba Noama gitt, sufern diese nee laar oder eene Weiterleitung ohne Versionsgeschichte ies. Dies bedeutet, dass du de Seyte zerricke verschieba koast, wenn du eena Fahler gemoacht host. Du koast hingegen kenne Seyte ieberschreiba.
+
+'''Warnung'''
+De Verschiebung koan weitreichende on unerwartete Folga fier beliebte Seyta hoan.
+Du sulltest daher de Konsequenzen verstanda hoan, bevur du furtfährst.",
+'movepagetalktext' => "De dazugeheerige Dischkursseyte wird, sufern vorhanda, mitverschoba, '''is sei denn:'''
+*Is existiert bereits eene Dischkursseyte miet diesem Noama, oder
+*du wählst de onda stiehende Option ob.
+
+Ei diesa Fäll muußt du, foalls gewinscht, dan Inhalt dar Seyte voo Hond verschieben oder zusommafiehra.
+
+Bite dan '''neua''' Tittel under '''Ziel''' eintraga, darunder de Umbenennung bite '''begrienda.'''",
+'movearticle' => 'Seyte verschieba:',
+'movenologin' => 'Nä oangemeldet',
+'movenologintext' => 'Du mußt a registrierter Nutzer und [[Special:UserLogin|oagemeldet]] sei, im anne Seyte zu verschieba.',
+'movenotallowed' => 'Du host kenne Berechtigung, Seyta zu verschieba.',
+'cant-move-user-page' => 'Du host kenne Berechtigung, Nutzerhauptseyta zu verschieba.',
+'cant-move-to-user-page' => 'Du host ne de Berechtigung, Seyta uff anne Nutzerseyte zu verschieba (miet Ausnahme vu Nutzerunderseyta).',
+'newtitle' => 'Ziel:',
+'move-watch' => 'Diese Seyte beobachta',
+'movepagebtn' => 'Seite verschieba',
+'pagemovedsub' => 'Verschiebung erfolgreich',
+'movepage-moved' => "'''De Seyte „$1“ wurde noach „$2“ verschoba.'''",
+'articleexists' => 'Under diesem Noama existiert bereits eene Seyte. Bite wähle eena andern Noama.',
+'cantmove-titleprotected' => 'De Verschiebung koan ne durchgefiehrt waan, do dar Zieltittel zur Erstellung gesperrt ies.',
+'talkexists' => 'De Seyte selbst wurde erfolgreich verschoba, oaber de zugeheerige Dischkursseite nee, doo bereits eene miet dam neua Tittel existiert. Bite gleiche de Inhalte voo Hond ob.',
+'movedto' => 'verschoba noach',
+'movetalk' => 'De Dischkurseyte mitverschieba, wenn meegliech',
+'move-subpages' => 'Underseyta verschieba (bis zu $1)',
+'move-talk-subpages' => 'Underseyta dar Dischkurseyte verschieba (bis zu $1)',
+'movepage-page-exists' => 'De Seyte „$1“ ies bereits vurhanda und koan ne automatisch ieberschrieba waan.',
+'movepage-page-moved' => 'De Seyte „$1“ wurde noach „$2“ verschoba.',
+'movepage-page-unmoved' => 'De Seyte „$1“ konnte ne noach „$2“ verschoba waan.',
+'movepage-max-pages' => 'De Maximalanzoahl vu $1 {{PLURAL:$1|Seyte|Seyta}} wurde verschoba, Olle wettera Seyta kinna ne automatisch verschoba waan.',
+'1movedto2' => 'hoot „[[$1]]“ noach „[[$2]]“ verschoba',
+'1movedto2_redir' => 'hoot „[[$1]]“ noach „[[$2]]“ verschoba on dabei eene Weiterleitung ieberschrieba',
+'move-redirect-suppressed' => 'Weiterleitung underdrickt',
+'movelogpage' => 'Verschiebungs-Logbuch',
+'movelogpagetext' => 'Dies ies anne Liste oller verschobena Seyta.',
+'movesubpage' => '{{PLURAL:$1|Underseyte|Underseyta}}',
+'movenosubpage' => 'Diese Seyte hoot kenne Underseyta.',
+'movereason' => 'Begriendung:',
+'revertmove' => 'zerricke scherga',
+'delete_and_move' => 'Läscha und Verschieba',
+'delete_and_move_text' => '== Läschung erforderlich ==
+
+De Seyte „[[:$1]]“ existiert bereits. Mechtest du diese läscha, im de Seyte verschieba zu kinna?',
+'delete_and_move_confirm' => 'Zielseyte fier de Verschiebung läscha',
+'delete_and_move_reason' => 'geläscht, im Ploatz fier Verschiebung zu macha',
+'selfmove' => 'Ursprungs- und Zielnoame sein glei; anne Seyte koan ne uff siech salbst verschoba waan.',
+'immobile-source-namespace' => 'Seyta des „$1“-Noamasraums kinna ne verschoba waan',
+'immobile-target-namespace' => 'Seyta kinna ne enn „$1“-Noamasraum verschoba waan',
+'immobile-target-namespace-iw' => 'Interwiki-Link ies kee giltiges Ziel fier Seytaverschiebunga.',
+'immobile-source-page' => 'Diese Seyte ies ne verschiebbar.',
+'immobile-target-page' => 'Is koan ne uff diese Zielseyte verschoba waan.',
+'imagenocrossnamespace' => 'Dateien kinna ne aus damm {{ns:file}}-Noamasraum heraus verschoba waan',
+'imagetypemismatch' => 'De neue Dateierweiterung ies ne miet dar aaln identisch',
+'imageinvalidfilename' => 'Dar Ziel-Dateinoame ies ungiltig',
+'fix-double-redirects' => 'Noach damm Verschieba doppelte Weiterleitunga ufflesa',
+'move-leave-redirect' => 'Weiterleitung erstalla',
+'protectedpagemovewarning' => "'''Warnung:''' Diese Seyte wurde gesperrt, su doß se ock vu Nutzern miet Administratorenrechten verschoba waan koan.",
+
+# Export
+'export' => 'Seyta exportiera',
+'exporttext' => 'Miet dieser Spezialseyte koast du dann Text inklusive der Versionsgeschichte einzelner Seyta ei anne XML-Datei exportieren.
+De Datei koan ei a anderes MediaWiki-Wiki ieber de [[Special:Import|Importfunksjonn]] eingespielt waan.
+
+Trage dann oder de entsprechenden Seytatittel ei doas fulgende Textfeld a (pro Zeile jeweils ock fier anne Seyte).
+
+Alternativ ies dar Export au miet dar Syntax [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] meeglich, beispielsweise fier de [[{{MediaWiki:Mainpage}}]].',
+'exportcuronly' => 'Ock de aktuelle Version dar Seyte exportieren',
+'exportnohistory' => "'''Hinweis:''' Dar Export kompletter Versionsgeschichta ies aus Performancegrinda bis uff wetteres ne meeglich.",
+'export-submit' => 'Seyta exportiera',
+'export-addcattext' => 'Seyta aus Kategorie hinzufiega:',
+'export-addcat' => 'Hinzufiega',
+'export-addns' => 'Hinzufügen',
+'export-download' => 'Ols XML-Datei speichern',
+'export-templates' => 'Inklusive Vorlagen',
+'export-pagelinks' => 'Verlinkte Seyta automatisch miet exportiera, bis zer Rekursionstiefe vu:',
+
+# Namespace 8 related
+'allmessages' => 'MediaWiki-Systemtexte',
+'allmessagesname' => 'Noame',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Aktueller Text',
+'allmessagestext' => 'Dies ies anne Liste dar MediaWiki-Systemtexte.
+Besiche de Seyta [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [http://translatewiki.net translatewiki.net], wenn du diech oa dar Lokalisierung vu MediaWiki beteiliga mechtest.',
+'allmessagesnotsupportedDB' => 'Diese Spezialseyte stieht ne zur Verfigung, do se ieber dann Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter-unmodified' => 'Unverändert',
+'allmessages-filter-all' => 'Olle',
+'allmessages-filter-modified' => 'Verändert',
+'allmessages-prefix' => 'Präfixfilter:',
+'allmessages-language' => 'Sproache:',
+'allmessages-filter-submit' => 'Lus',
+
+# Thumbnails
+'thumbnail-more' => 'vergrießern',
+'filemissing' => 'Datei fahlt',
+'thumbnail_error' => 'Fahler bem Erstella des Vurschaubildes: $1',
+'djvu_page_error' => 'DjVu-Seyte außerholb des Seytabereichs',
+'djvu_no_xml' => 'XML-Daten kinna fier de DjVu-Datei ne obgeruffa waan',
+'thumbnail_invalid_params' => 'Ungiltige Thumbnail-Parameter',
+'thumbnail_dest_directory' => 'Zielverzeichnis koan ne erstellt waan.',
+'thumbnail_image-type' => 'Bildtyp ne understützt',
+
+# Special:Import
+'import' => 'Seyta importiern',
+'importinterwiki' => 'Transwiki-Import',
+'import-interwiki-text' => 'Wähle a Wiki und anne Seyte zum Importiera aus.
+De Versionsdaten und Nutzernoama bleiba dabei erhalta.
+Olle Transwiki-Import-Aksjonna waan eim [[Special:Log/import|Import-Logbuch]] protokolliert.',
+'import-interwiki-source' => 'Quell-Wiki/-Seyte:',
+'import-interwiki-history' => 'Importiere olle Versionen dieser Seyte',
+'import-interwiki-templates' => 'Olle Vurloaga einschließen',
+'import-interwiki-submit' => 'Import',
+'import-interwiki-namespace' => 'Zielnoamasraum:',
+'import-upload-filename' => 'Dateinoame:',
+'import-comment' => 'Grund:',
+'importtext' => 'Uff dieser Spezialseyte kinna ieber de [[Special:Export|Exportfunktion]] eim Quellwiki exportierte Seyta ei dieses Wiki importiert waan.',
+'importstart' => 'Importiere Seyte …',
+'import-revision-count' => '– {{PLURAL:$1|1 Version|$1 Versionen}}',
+'importnopages' => 'Kenne Seyte zum Importiern vurhanda.',
+'importfailed' => 'Import fehlgeschlaga: $1',
+'importunknownsource' => 'Unbekennte Importquelle',
+'importcantopen' => 'Importdatei konnte ne geeffnet waan',
+'importbadinterwiki' => 'Foalscher Interwiki-Link',
+'importnotext' => 'Laar oder kee Text',
+'importsuccess' => 'Import obgeschlossa.',
+'importhistoryconflict' => 'Is existieren bereits ältere Versionen, welche miet diesen kollidieren. Meeglicherweise wurde de Seyte bereits vorher importiert.',
+'importnosources' => 'Fier dann Transwiki-Import sein kenne Quellen definiert. Doas direkte Huchloada vu Versionen ies gesperrt.',
+'importnofile' => 'Is ies kenne Importdatei ausgewählt worden.',
+'importuploaderrorsize' => 'Doas Huchloada dar Importdatei ies fahlgeschlaga. De Datei ies grißer ols de maximal erlaubte Dateigriße.',
+'importuploaderrorpartial' => 'Doas Huchloada dar Importdatei ies fehlgeschlagen. De Datei wurde ock teelweise huchgeloada.',
+'importuploaderrortemp' => 'Doas Huchloada dar Importdatei ies fahlgeschlaga. A temporäres Verzeichnis fahlt.',
+'import-parse-failure' => 'Fahler beim XML-Import:',
+'import-noarticle' => 'Is wurde kenne zu importierende Seyte oagegahn!',
+'import-nonewrevisions' => 'Is sein kenne neua Versiona zum Import vorhanden, olle Versiona wurden bereits frieher importiert.',
+'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
+'import-upload' => 'XML-Daten importiera',
+'import-token-mismatch' => 'Verlust dar Sessiondaten. Bitte versuche is erneut.',
+'import-invalid-interwiki' => "Aus damm oagegahn'n Wiki ies kee Import meeglich.",
+
+# Import log
+'importlogpage' => 'Import-Logbuch',
+'importlogpagetext' => 'Administrativer Import vu Seyta miet Versionsgeschichte vu andern Wikis.',
+'import-logentry-upload' => "hoot „[[$1]]“ vu a'r Datei importiert",
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|Version|Versionen}}',
+'import-logentry-interwiki' => 'hoot „$1“ importiert (Transwiki)',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|Version|Versiona}} vun $2',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Denne Nutzerseyte',
+'tooltip-pt-anonuserpage' => 'Nutzerseite dar IP-Atresse vu dar aus du Änderunga durchfiehrst',
+'tooltip-pt-mytalk' => 'Denne Dischkursseyte',
+'tooltip-pt-anontalk' => 'Dischkur ieber Änderunga vu dieser IP-Atresse',
+'tooltip-pt-preferences' => 'Eegene Eenstellunga',
+'tooltip-pt-watchlist' => 'Liste dar beobachteta Seyta',
+'tooltip-pt-mycontris' => 'Liste denner Beiträge',
+'tooltip-pt-login' => 'Siech oazumelda werd zwoar gerne gesahn, ies oaber kenne Pflicht.',
+'tooltip-pt-anonlogin' => 'Siech oazumelda werd zwar gerne gesahn, ies oaber kenne Pflicht.',
+'tooltip-pt-logout' => 'Oabmelda',
+'tooltip-ca-talk' => 'Dischkur iebern Inhalt dar Seyte',
+'tooltip-ca-edit' => 'Seyte beorbeeta. Bite vur dam Speichern de Vorschaufunktion benutza.',
+'tooltip-ca-addsection' => 'Neua Abschnitt beginna',
+'tooltip-ca-viewsource' => 'Diese Seyte ies geschietzt. Dar Quelltext koan oagesahn waan.',
+'tooltip-ca-history' => 'Friehere Versionen vo dieser Seete',
+'tooltip-ca-protect' => 'Diese Seyte schietza',
+'tooltip-ca-unprotect' => 'Diese Seyte freigahn',
+'tooltip-ca-delete' => 'Diese Seyte läscha',
+'tooltip-ca-undelete' => 'Einträge wiederherstella, bevor diese Seyte geläscht wurde',
+'tooltip-ca-move' => 'Diese Seyte verschieba',
+'tooltip-ca-watch' => 'Diese Seyte zer perseenlicha Beobachtungsliste hinzufiega',
+'tooltip-ca-unwatch' => 'Diese Seyte voo derr perseenlicha Beobachtungsliste entferna',
+'tooltip-search' => '{{SITENAME}} dorchsicha',
+'tooltip-search-go' => 'Gieh direkt zu dar Seyte, de exakt dam eingegebena Noama entspricht.',
+'tooltip-search-fulltext' => 'Siche noach Seyta, de diesen Text enthalta',
+'tooltip-p-logo' => 'Heetseyte',
+'tooltip-n-mainpage' => 'Heetseyte oanzeiga',
+'tooltip-n-mainpage-description' => 'Heetseyte besicha',
+'tooltip-n-portal' => 'Iebers Portal: woas du tun koast, wo woas zu finda ies',
+'tooltip-n-currentevents' => 'Hintergrundinformationen zu aktuellen Ereignissen',
+'tooltip-n-recentchanges' => 'Liste der letzten Änderungen in {{SITENAME}}',
+'tooltip-n-randompage' => 'Zufällige Seyte',
+'tooltip-n-help' => 'Hilfeseite anzeigen',
+'tooltip-t-whatlinkshere' => 'Liste oller Seyta, de hierher zeiga',
+'tooltip-t-recentchangeslinked' => 'Letzte Änderungen an Seiten, die von hier verlinkt sind',
+'tooltip-feed-rss' => 'RSS-Feed fier diese Seyte',
+'tooltip-feed-atom' => 'Atom-Feed fier diese Seyte',
+'tooltip-t-contributions' => 'Liste dar Beiträge voo diesem Benutzer oasahn',
+'tooltip-t-emailuser' => 'Eene E-Mail oa diesa Benutzer senda',
+'tooltip-t-upload' => 'Dateia huchloaden',
+'tooltip-t-specialpages' => 'Liste oller Spezialseyta',
+'tooltip-t-print' => 'Druckansicht dieser Seyte',
+'tooltip-t-permalink' => 'Dauerhofter Link zu dieser Seytaversion',
+'tooltip-ca-nstab-main' => 'Seytainhalt oazeega',
+'tooltip-ca-nstab-user' => 'Benutzerseyte oazeega',
+'tooltip-ca-nstab-media' => 'Mediendateienseyte oazeiga',
+'tooltip-ca-nstab-special' => 'Dies ies anne Spezialseyte. Se koan ne beorbeetet waan.',
+'tooltip-ca-nstab-project' => 'Portalseyte oazeega',
+'tooltip-ca-nstab-image' => 'Dateiseyte oazeega',
+'tooltip-ca-nstab-mediawiki' => 'MediaWiki-Systemtext oazeiga',
+'tooltip-ca-nstab-template' => 'Vorlage oazeega',
+'tooltip-ca-nstab-help' => 'Helfeseyte oazeiga',
+'tooltip-ca-nstab-category' => 'Heetgruppeseyte oazeiga',
+'tooltip-minoredit' => 'Diese Änderung ols kleen markiera.',
+'tooltip-save' => 'Änderunga speichern',
+'tooltip-preview' => 'Vorschau dar Änderunga oa dieser Seyte. Bite vur dam Speichern benutza!',
+'tooltip-diff' => 'Zeigt Änderunga oam Text tabellarisch oa',
+'tooltip-compareselectedversions' => 'Underschied zwischa zwee ausgewählta Versiona dieser Seyte oazeega.',
+'tooltip-watch' => 'Fiege diese Seyte denner Beobachtungsliste hinzu',
+'tooltip-recreate' => 'Seyte neu erstella, obwohl se geläscht wurde.',
+'tooltip-upload' => 'Huchloada starta',
+'tooltip-rollback' => 'Moacht olle letzta Änderunga dar Seite, de vum gleichen Benutzer vurgenumma waan sein, dorch ocke eenen Klick rieckgängig.',
+'tooltip-undo' => 'Moacht lediglich diese eene Änderung rieckgängig on zeigt doas Resultat ei dar Vorschau oa, damit ei dar Zusommafassungszeile eene Begründung angegeba waan koan.',
+
+# Metadata
+'nodublincore' => 'Dublin-Core-RDF-Metadaten sein fier diesen Server deaktiviert.',
+'nocreativecommons' => 'Creative-Commons-RDF-Metadaten sein fier diesen Server deaktiviert.',
+'notacceptable' => 'Dar Wiki-Server koan de Daten ne fier dei Ausgabegerät uffbereita.',
+
+# Attribution
+'anonymous' => '{{PLURAL:$1|Anonymer Nutzer|Anonyme Nutzer}} uff {{SITENAME}}',
+'siteuser' => '{{SITENAME}}-Benutzer $1',
+'anonuser' => 'Anonymer {{SITENAME}}-Benutzer $1',
+'lastmodifiedatby' => 'Diese Seyte wurde zuletzt oam $1 im $2 Seeger vu $3 geändert.',
+'othercontribs' => 'Basierend uff dar Orbeet vu $1.',
+'others' => 'oandera',
+'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Nutzer|Nutzer}} $1',
+'creditspage' => 'Seytainformationa',
+'nocredits' => 'Fier diese Seyte sein kenne Informationa vorhanda.',
+
+# Spam protection
+'spamprotectiontitle' => 'Spamschutzfilter',
+'spamprotectiontext' => "De Seyte, de du speichern wielst, wurde vum Spamschutzfilter blockiert. Doas leit woahrscheinlich oa an'm Link uff anne externe Seyte.",
+'spamprotectionmatch' => "'''Dar folgende Text wurde vum Spamfilter gefunda: ''$1'''''",
+'spambot_username' => 'MediaWiki-Spam-Säuberung',
+'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
+'spam_blanking' => 'Olle Versionen enthielta Links zu $1, bereinigt.',
+
+# Info page
+'infosubtitle' => 'Seytainformation',
+'numedits' => 'Oazoahl dar Seyta änderunga: $1',
+'numtalkedits' => 'Oazoahl dar Dischkuränderunga: $1',
+'numwatchers' => 'Oazoahl dar Beobachter: $1',
+'numauthors' => 'Oazoahl dar Autoren: $1',
+'numtalkauthors' => 'Oazoahl dar Dischkurteelnahmer: $1',
+
+# Math options
+'mw_math_png' => 'Emmer ols PNG darstalla',
+'mw_math_simple' => 'Einfaches TeX ols HTML darstella, sunst PNG',
+'mw_math_html' => 'Wenn meeglich ols HTML darstella, sunst PNG',
+'mw_math_source' => 'Ols TeX belassen (fier Textbrowser)',
+'mw_math_modern' => 'Empfehlenswert fier moderne Browser',
+'mw_math_mathml' => 'MathML (experimentell)',
+
+# Math errors
+'math_failure' => 'Parser-Fahler',
+'math_unknown_error' => 'Unbekennter Fahler',
+'math_unknown_function' => 'Unbekennte Funksjonn',
+'math_lexing_error' => '„Lexing“-Fahler',
+'math_syntax_error' => 'Syntaxfahler',
+'math_image_error' => 'de PNG-Konvertierung schlug fehl',
+'math_bad_tmpdir' => 'Doas temporäre Verzeichnis fier mathematische Formeln koan ne oagelagt oder beschrieba waan.',
+'math_bad_output' => 'Doas Zielverzeichnis fier mathematische Formeln koan ne oagelegt oder beschrieba waan.',
+'math_notexvc' => 'Doas texvc-Programm wurde ne gefunda. Bitte math/README beachten.',
+
+# Patrolling
+'markaspatrolleddiff' => 'Ols kontrolliert markiern',
+'markaspatrolledtext' => 'Diese Seyte ols kontrolliert markiernn',
+'markedaspatrolled' => 'Ols kontrolliert markiert',
+'markedaspatrolledtext' => 'De ausgewählte Seyta änderung wurde ols kontrolliert markiert.',
+'rcpatroldisabled' => 'Kontrolle dar letzta Änderunga gesperrt',
+'rcpatroldisabledtext' => 'De Kontrolle dar letzta Änderunga ies zurzeit gesperrt.',
+'markedaspatrollederror' => 'Markierung ols „kontrolliert“ ne meeglich.',
+'markedaspatrollederrortext' => 'Du mußt anne Seyta änderung auswähla.',
+'markedaspatrollederror-noautopatrol' => 'Is ies ne erlaubt, eigene Beoarbeetunga ols kontrolliert zu markieren.',
+
+# Patrol log
+'patrol-log-page' => 'Kontroll-Logbichl',
+'patrol-log-header' => 'Dies ies doas Kontroll-Logbuch.',
+'patrol-log-line' => 'hoot $1 vu „$2“ ols kontrolliert markiert $3',
+'patrol-log-auto' => '(automatisch)',
+'patrol-log-diff' => 'Version $1',
+'log-show-hide-patrol' => 'Kontroll-Logbichl $1',
+
+# Image deletion
+'deletedrevision' => 'aale Version: $1',
+'filedeleteerror-short' => 'Fahler bei Datei-Läschung: $1',
+'filedeleteerror-long' => 'Bei dar Datei-Läschung wurden Fahler festgestellt:
+
+$1',
+'filedelete-missing' => 'De Datei „$1“ koan ne geläscht waan, do se ne vorhanden ies.',
+'filedelete-old-unregistered' => 'De oagegebene Datei-Version „$1“ ies ne ei der Datenbank vorhanden.',
+'filedelete-current-unregistered' => 'De oagegahne Datei „$1“ ies ne ei dar Datenbank vurhanda.',
+'filedelete-archive-read-only' => 'Doas Archiv-Verzeichnis „$1“ ies fier dann Webserver ne beschreibbar.',
+
+# Browsing diffs
+'previousdiff' => '← Zim vurheriga Versionsunderschied',
+'nextdiff' => 'Zim nächsta Versionsunderschied →',
+
+# Media information
+'mediawarning' => "'''Warnung:''' Dieser Dateityp koan beswilligen Programmcode enthalta.
+Durch doas Herunderloada und Effna dar Datei koan dei Computer beschädigt waan.",
+'imagemaxsize' => "Maximale Bildgrieße:<br />''(fier Dateibeschreibungsseyta)''",
+'thumbsize' => 'Standardgriße dar Vurschaubilder (Thumbnails):',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seyte|$3 Seyta}}',
+'file-info' => '(Dateigreeße: $1, MIME-Typ: $2)',
+'file-info-size' => '($1 × $2 Pixel, Dateigreeße: $3, MIME-Typ: $4)',
+'file-nohires' => '<small>Kenne hiehere Uffleesung vurhanda.</small>',
+'svg-long-desc' => '(SVG-Datei, Basisgreeße: $1 × $2 Pixel, Dateigreeße: $3)',
+'show-big-image' => 'Version ei hieherer Uffleesung',
+'show-big-image-thumb' => 'small>Greeße dar Vuroasicht: $1 × $2 Pixel</small>',
+'file-info-gif-looped' => 'Endlosschleife',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
+
+# Special:NewFiles
+'newimages' => 'Neue Dateien',
+'imagelisttext' => "Hier ies anne Liste vu '''$1''' {{PLURAL:$1|Datei|Dateien}}, sortiert $2.",
+'newimages-summary' => 'Diese Spezialseyte zeigt de zuletzt huchgeloadena Dateien oa.',
+'newimages-legend' => 'Filter',
+'newimages-label' => 'Dateinoame (oder a Teel davon):',
+'showhidebots' => '(Bots $1)',
+'noimages' => 'Kenne Dateien gefunda.',
+'ilsubmit' => 'Sucha',
+'bydate' => 'noach Datum',
+'sp-newimages-showfrom' => 'Zeige neue Dateien ob $1, $2 Seeger',
+
+# Bad image list
+'bad_image_list' => 'Furmat:
+
+Ock Zeila, de mit eenem * oafanga, waan oausgewertet. Ols erschtes noach dam * muuß a Link uff eene unerwünschte Datei stieha.
+Darauf folgende Seitalinks ei derselba Zeile definiera Ausnahma, ei deren Kontext de Datei trotzdem erscheina doarf.',
+
+# Metadata
+'metadata' => 'Metadata',
+'metadata-help' => 'Diese Datei enthält weitere Informationa, de ei dar Regel voo dar Digitalkamera oder dam verwendeta Scanner stoamma. Dorch noachträgliche Bearbeitung der Originaldatei kinna eenige Details verändert worden sein.',
+'metadata-expand' => 'Erweiterte Details eenblenda',
+'metadata-collapse' => 'Erweiterte Details oausblenda',
+'metadata-fields' => 'De folgenden Felder derr EXIF-Metadata ei diesem MediaWiki-Systemtext waan uff Bildbeschreibungsseita oagezäat; weitere standardmäßig „eingeklappte“ Details kinna oagezäat waan.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'Breite',
+'exif-imagelength' => 'Länge',
+'exif-bitspersample' => 'Bits pro Forbkomponente',
+'exif-compression' => 'Oart dar Kompression',
+'exif-photometricinterpretation' => 'Pixelzusommasetzung',
+'exif-orientation' => 'Kameraausrichtung',
+'exif-samplesperpixel' => 'Oazoahl Komponenten',
+'exif-planarconfiguration' => 'Datenausrichtung',
+'exif-ycbcrsubsampling' => 'Subsampling Rate vu Y bis C',
+'exif-ycbcrpositioning' => 'Y und C Positionierung',
+'exif-xresolution' => 'Horizontale Ufflesung',
+'exif-yresolution' => 'Vertikale Ufflesung',
+'exif-resolutionunit' => 'Maßeinheet dar Ufflesung',
+'exif-stripoffsets' => 'Bilddaten-Versatz',
+'exif-rowsperstrip' => 'Oazoahl Zeila pro Streifa',
+'exif-stripbytecounts' => 'Bytes pro komprimiertem Streifa',
+'exif-jpeginterchangeformat' => 'Offset zu JPEG SOI',
+'exif-jpeginterchangeformatlength' => 'Griße dar JPEG-Daten ei Bytes',
+'exif-transferfunction' => 'Iebertragungsfunksjonn',
+'exif-whitepoint' => 'Manuell miet Messung',
+'exif-primarychromaticities' => 'Primäre Forboart',
+'exif-ycbcrcoefficients' => 'YCbCr-Koeffizienten',
+'exif-referenceblackwhite' => 'Schworz/Weeß-Referenzpunkte',
+'exif-datetime' => 'Speicherzeitpunkt',
+'exif-imagedescription' => 'Bildtittel',
+'exif-make' => 'Hersteller',
+'exif-model' => 'Modell',
+'exif-software' => 'Software',
+'exif-artist' => 'Fotogroaf',
+'exif-copyright' => 'Urheberrechte',
+'exif-exifversion' => 'Exif-Version',
+'exif-flashpixversion' => 'understitzte Flashpix-Version',
+'exif-colorspace' => 'Forbraum',
+'exif-componentsconfiguration' => 'Bedeutung einzelner Komponenten',
+'exif-compressedbitsperpixel' => 'Komprimierte Bits pro Pixel',
+'exif-pixelydimension' => 'Giltige Bildbreite',
+'exif-pixelxdimension' => 'Giltige Bildhiehe',
+'exif-makernote' => 'Herstallernotiz',
+'exif-usercomment' => 'Nutzerkommentare',
+'exif-relatedsoundfile' => 'Zugehierige Tondatei',
+'exif-datetimeoriginal' => 'Erfassungszeitpunkt',
+'exif-datetimedigitized' => 'Digitalisierungszeitpunkt',
+'exif-subsectime' => 'Speicherzeitpunkt (1/100 s)',
+'exif-subsectimeoriginal' => 'Erfassungszeitpunkt (1/100 s)',
+'exif-subsectimedigitized' => 'Digitalisierungszeitpunkt (1/100 s)',
+'exif-exposuretime' => 'Belichtungsdauer',
+'exif-exposuretime-format' => '$1 Sekunda ($2)',
+'exif-fnumber' => 'Blende',
+'exif-exposureprogram' => 'Belichtungsprogramm',
+'exif-spectralsensitivity' => 'Spectral Sensitivity',
+'exif-isospeedratings' => 'Film- oder Sensorempfindlichkeit (ISO)',
+'exif-oecf' => 'Optoelektronischer Umrechnungsfaktor',
+'exif-shutterspeedvalue' => 'Belichtungszeitwert',
+'exif-aperturevalue' => 'Blendenwert',
+'exif-brightnessvalue' => 'Helligkeitswert',
+'exif-exposurebiasvalue' => 'Belichtungsvorgabe',
+'exif-maxaperturevalue' => 'Grießte Blende',
+'exif-subjectdistance' => 'Entfernung',
+'exif-meteringmode' => 'Messverfoahrn',
+'exif-lightsource' => 'Lichtquelle',
+'exif-flash' => 'Blitz',
+'exif-focallength' => 'Brennweite',
+'exif-subjectarea' => 'Bereich',
+'exif-flashenergy' => 'Blitzstärke',
+'exif-spatialfrequencyresponse' => 'Spatial-Frequenz',
+'exif-focalplanexresolution' => 'Sensorufflesung hurizuntal',
+'exif-focalplaneyresolution' => 'Sensorufflesung vertikal',
+'exif-focalplaneresolutionunit' => 'Einheet dar Sensorufflesung',
+'exif-subjectlocation' => 'Motivstandurt',
+'exif-exposureindex' => 'Belichtungsindex',
+'exif-sensingmethod' => 'Messmethode',
+'exif-filesource' => 'Quelle dar Datei',
+'exif-scenetype' => 'Szenatyp',
+'exif-cfapattern' => 'CFA-Muster',
+'exif-customrendered' => 'Nutzerdefinierte Bildveroarbeetung',
+'exif-exposuremode' => 'Belichtungsmodus',
+'exif-whitebalance' => 'Weeßabgleich',
+'exif-digitalzoomratio' => 'Digitalzoom',
+'exif-focallengthin35mmfilm' => 'Brennweite (Kleenbildäquivalent)',
+'exif-scenecapturetype' => 'Uffnahmeoart',
+'exif-gaincontrol' => 'Verstärkung',
+'exif-contrast' => 'Kontrast',
+'exif-saturation' => 'Sättigung',
+'exif-sharpness' => 'Schärfe',
+'exif-devicesettingdescription' => 'Geräteeinstallung',
+'exif-subjectdistancerange' => 'Motiventfernung',
+'exif-imageuniqueid' => 'Bild-ID',
+'exif-gpsversionid' => 'GPS-Tag-Version',
+'exif-gpslatituderef' => 'nördl. oder südl. Breite',
+'exif-gpslatitude' => 'Geografische Breite',
+'exif-gpslongituderef' => 'östl. oder westl. Länge',
+'exif-gpslongitude' => 'Geografische Länge',
+'exif-gpsaltituderef' => 'Bezugshiehe',
+'exif-gpsaltitude' => 'Hiehe',
+'exif-gpstimestamp' => 'GPS-Zeit',
+'exif-gpssatellites' => 'Fier de Messung benutzte Satelliten',
+'exif-gpsstatus' => 'Empfängerstatus',
+'exif-gpsmeasuremode' => 'Messverfoahrn',
+'exif-gpsdop' => 'Maßpräzision',
+'exif-gpsspeedref' => 'Geschwindigkeitseinheet',
+'exif-gpsspeed' => 'Geschwindigkeit des GPS-Empfängers',
+'exif-gpstrackref' => 'Referenz fier Bewegungsrichtung',
+'exif-gpstrack' => 'Bewegungsrichtung',
+'exif-gpsimgdirectionref' => 'Referenz fier de Ausrichtung des Bildes',
+'exif-gpsimgdirection' => 'Bildrichtung',
+'exif-gpsmapdatum' => 'Geodätisches Datum nutzt',
+'exif-gpsdestlatituderef' => 'Referenz fier de Breite',
+'exif-gpsdestlatitude' => 'Breite',
+'exif-gpsdestlongituderef' => 'Referenz fier de Länge',
+'exif-gpsdestlongitude' => 'Länge',
+'exif-gpsdestbearingref' => 'Referenz fier Motivrichtung',
+'exif-gpsdestbearing' => 'Motivrichtung',
+'exif-gpsdestdistanceref' => 'Referenz fier de Motiventfernung',
+'exif-gpsdestdistance' => 'Motiventfernung',
+'exif-gpsprocessingmethod' => 'Noame des GPS-Verfahras',
+'exif-gpsareainformation' => 'Noame des GPS-Gebietes',
+'exif-gpsdatestamp' => 'GPS-Datum',
+'exif-gpsdifferential' => 'GPS-Differentialkorrektur',
+
+# EXIF attributes
+'exif-compression-1' => 'Unkomprimiert',
+
+'exif-unknowndate' => 'Unbekenntes Datum',
+
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Hurizuntal gespiegelt',
+'exif-orientation-3' => 'Im 180° gedreht',
+'exif-orientation-4' => 'Vertikal gespiegelt',
+'exif-orientation-5' => 'Entgegen damm Seegerzeigersinn im 90° gedreht und vertikal gespiegelt',
+'exif-orientation-6' => 'Im 90° eim Seegerzeigersinn gedreht',
+'exif-orientation-7' => 'Im 90° eim Seegerzeigersinn gedreht und vertikal gespiegelt',
+'exif-orientation-8' => 'Im 90° entgegen damm Seegerzeigersinn gedreht',
+
+'exif-planarconfiguration-1' => 'Grobfurmat',
+'exif-planarconfiguration-2' => 'Planarfurmat',
+
+'exif-componentsconfiguration-0' => 'Existiert ne',
+
+'exif-exposureprogram-0' => 'Unbekennt',
+'exif-exposureprogram-1' => 'Manuell',
+'exif-exposureprogram-2' => 'Standardprogramm',
+'exif-exposureprogram-3' => 'Zeitautomatik',
+'exif-exposureprogram-4' => 'Blendenautomatik',
+'exif-exposureprogram-5' => 'Kreativprogramm miet Bevorzugung huher Schärfentiefe',
+'exif-exposureprogram-6' => "Aksjonn-Programm miet Bevorzugung a'r kurza Belichtungszeit",
+'exif-exposureprogram-7' => 'Portrait-Programm',
+'exif-exposureprogram-8' => 'Landschoftsuffnahma',
+
+'exif-subjectdistance-value' => '$1 Meter',
+
+'exif-meteringmode-0' => 'Unbekennt',
+'exif-meteringmode-1' => 'Durchschnittlich',
+'exif-meteringmode-2' => 'Mittenzentriert',
+'exif-meteringmode-3' => 'Spotmessung',
+'exif-meteringmode-4' => 'Mehfachspotmessung',
+'exif-meteringmode-5' => 'Muster',
+'exif-meteringmode-6' => 'Bildteel',
+'exif-meteringmode-255' => 'Unbekennt',
+
+'exif-lightsource-0' => 'Unbekennt',
+'exif-lightsource-1' => 'Taageslicht',
+'exif-lightsource-2' => 'Fluoreszierend',
+'exif-lightsource-3' => 'Glihlompe',
+'exif-lightsource-4' => 'Blitz',
+'exif-lightsource-9' => 'Schie Waater',
+'exif-lightsource-10' => 'Bewelkt',
+'exif-lightsource-11' => 'Schoatta',
+'exif-lightsource-12' => 'Tageslicht fluoreszierend (D 5700–7100 K)',
+'exif-lightsource-13' => 'Tagesweeß fluoreszierend (N 4600–5400 K)',
+'exif-lightsource-14' => 'Kaltweeß fluoreszierend (W 3900–4500 K)',
+'exif-lightsource-15' => 'Weeß fluoreszierend (WW 3200–3700 K)',
+'exif-lightsource-17' => 'Standardlicht A',
+'exif-lightsource-18' => 'Standardlicht B',
+'exif-lightsource-19' => 'Standardlicht C',
+'exif-lightsource-24' => 'ISO Studio Kunstlicht',
+'exif-lightsource-255' => 'Andere Lichtquelle',
+
+# Flash modes
+'exif-flash-fired-0' => 'kee Blitz',
+'exif-flash-fired-1' => 'Blitz ausgelest',
+'exif-flash-return-0' => 'Blitz sendet kenne Daten',
+'exif-flash-return-2' => 'kenne Reflexion des Blitz festgestallt',
+'exif-flash-return-3' => 'Reflexion des Blitz festgestallt',
+'exif-flash-mode-1' => 'erzwungenes Blitza',
+'exif-flash-mode-2' => 'Blitz obgeschaltet',
+'exif-flash-mode-3' => 'Automatik',
+'exif-flash-function-1' => 'Kenne Blitzfunksjonn',
+'exif-flash-redeye-1' => 'Rotaugen Reduktion',
+
+'exif-focalplaneresolutionunit-2' => 'Zoll',
+
+'exif-sensingmethod-1' => 'Undefiniert',
+'exif-sensingmethod-2' => 'Ein-Chip-Forbsensor',
+'exif-sensingmethod-3' => 'Zwee-Chip-Forbsensor',
+'exif-sensingmethod-4' => 'Drei-Chip-Forbsensor',
+'exif-sensingmethod-5' => 'Forbraum sequentiell Sensor',
+'exif-sensingmethod-7' => 'Trilinearer Sensor',
+'exif-sensingmethod-8' => 'Forbraum linear sequentieller Sensor',
+
+'exif-scenetype-1' => 'Normal',
+
+'exif-customrendered-0' => 'Standard',
+'exif-customrendered-1' => 'Nutzerdefiniert',
+
+'exif-exposuremode-0' => 'Automatische Belichtung',
+'exif-exposuremode-1' => 'Manuelle Belichtung',
+'exif-exposuremode-2' => 'Belichtungsreihe',
+
+'exif-whitebalance-0' => 'Automatisch',
+'exif-whitebalance-1' => 'Manuell',
+
+'exif-scenecapturetype-0' => 'Standard',
+'exif-scenecapturetype-1' => 'Landschoft',
+'exif-scenecapturetype-2' => 'Portrait',
+'exif-scenecapturetype-3' => 'Noachtszene',
+
+'exif-gaincontrol-0' => 'Keene',
+'exif-gaincontrol-1' => 'Gering',
+'exif-gaincontrol-2' => 'High gain up',
+'exif-gaincontrol-3' => 'Low gain down',
+'exif-gaincontrol-4' => 'High gain down',
+
+'exif-contrast-0' => 'Normal',
+'exif-contrast-1' => 'Schwoch',
+'exif-contrast-2' => 'Stork',
+
+'exif-saturation-0' => 'Normal',
+'exif-saturation-1' => 'Gering',
+'exif-saturation-2' => 'Huch',
+
+'exif-sharpness-0' => 'Normal',
+'exif-sharpness-1' => 'Gering',
+'exif-sharpness-2' => 'Stork',
+
+'exif-subjectdistancerange-0' => 'Unbekennt',
+'exif-subjectdistancerange-1' => 'Makro',
+'exif-subjectdistancerange-2' => 'Nah',
+'exif-subjectdistancerange-3' => 'Entfernt',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'nördl. Breite',
+'exif-gpslatitude-s' => 'südl. Breite',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'östl. Länge',
+'exif-gpslongitude-w' => 'westl. Länge',
+
+'exif-gpsstatus-a' => 'Messung läuft',
+'exif-gpsstatus-v' => 'Interoperabilität vu Messunga',
+
+'exif-gpsmeasuremode-2' => '2-dimensionale Messung',
+'exif-gpsmeasuremode-3' => '3-dimensionale Messung',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'km/h',
+'exif-gpsspeed-m' => 'mph',
+'exif-gpsspeed-n' => 'Knoten',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Tatsächliche Richtung',
+'exif-gpsdirection-m' => 'Magnetische Richtung',
+
+# External editor support
+'edit-externally' => 'Diese Datei miet eenem externen Programm beorbeeta',
+'edit-externally-help' => '(Siehe de [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisunga] fier weitere Informationa)',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'olle',
+'imagelistall' => 'olle',
+'watchlistall2' => 'olle',
+'namespacesall' => 'olle',
+'monthsall' => 'olle',
+'limitall' => 'olle',
+
+# E-mail address confirmation
+'confirmemail' => 'E-Mail-Atresse bestätiga (Authentifizierung)',
+'confirmemail_noemail' => 'Du host kenne giltige E-Mail-Atresse ei denn [[Special:Preferences|persenlicha Eenstallunga]] eengetraga.',
+'confirmemail_text' => "{{SITENAME}} erfordert, doß du denne E-Mail-Atresse bestätigst (authentifizieren), bevor du de erweiterten E-Mail-Funksjonna benutza koast. Klicke bitte uff de unda stehende, miet „Bestätigungscode zuschicka“ beschriftete Schaltfläche, damit anne automatisch erstellte E-Mail oa de oagegahne Atresse geschickt werd. Diese E-Mail enthält anne Web-Adresse miet a'm Bestätigungscode. Indem du diese Webseyte ei demm Webbrowser effnest, bestätigst du, doß de oagegahne E-Mail-Atresse korrekt und giltig ies.",
+'confirmemail_pending' => "Is wurde dir bereits a Bestätigungscode per E-Mail zugeschickt.
+Wenn du dei Nutzerkonto erscht vur kurzem erstallt host, warte bitte noo a poar Minuta uff de E-Mail, bevor du an'n neua Code anforderst.",
+'confirmemail_send' => 'Bestätigungscode zuschicka',
+'confirmemail_sent' => 'Bestätigungs-E-Mail wurde verschickt.',
+'confirmemail_oncreate' => 'A Bestätigungs-Code wurde oa denne E-Mail-Atresse gesandt. Dieser Code werd fier de Oameldung ne benetigt, jedoch werd ar zer Aktivierung dar E-Mail-Funksjonna innerhalb des Wikis gebraucht.',
+'confirmemail_sendfailed' => '{{SITENAME}} konnte de Bestätigungs-E-Mail ne oa diech versenda.
+Bitte priefe de E-Mail-Atresse uff ungiltige Zeecha.
+
+Rickmeldung des Mailservers: $1',
+'confirmemail_invalid' => 'Ungiltiger Bestätigungscode. Meeglicherweise ies dar Bestätigungszeitraum verstrichen. Versuche bitte, de Bestätigung zu wiederhulla.',
+'confirmemail_needlogin' => 'Du musst diech $1, im denne E-Mail-Atresse zu bestätiga.',
+'confirmemail_success' => 'Denne E-Mail-Atresse wurde erfolgreich bestätigt. Du koast diech jitz [[Special:UserLogin|oamelda]].',
+'confirmemail_loggedin' => 'Denne E-Mail-Atresse wurde erfolgreich bestätigt.',
+'confirmemail_error' => "Is gab an'n Fahler bei dar Bestätigung denner E-Mail-Atresse.",
+'confirmemail_subject' => '[{{SITENAME}}] - Bestätigung dar E-Mail-Atresse',
+'confirmemail_body' => 'Hallo,
+
+jemand miet dar IP-Atresse $1, woahrscheinlich du selbst, hoot doas Nutzerkonto „$2“ ei {{SITENAME}} registriert.
+
+Im de E-Mail-Funksjonn fier {{SITENAME}} (wieder) zu aktiviern und im zu bestätiga,
+doß dieses Nutzerkonto wirklich zu denner E-Mail-Atresse und damit zu dir gehiert, effne bitte de folgende Web-Atresse:
+
+$3
+
+Sullte de vorstehende Atresse ei demm E-Mail-Programm ieber mehrere Zeila giehn, musst du se eventuell per Hand ei de Atresszeile dennes Web-Browsers einfiega.
+
+Wenn du doas genannte Nutzerkonto *ne* registriert host, folge diesem Link, im dann Bestätigungsprozess obzubrecha:
+
+$5
+
+Dieser Bestätigungscode ies giltig bis $6, $7 Seeger.',
+'confirmemail_invalidated' => 'E-Mail-Atressbestätigung obbrecha',
+'invalidateemail' => 'E-Mail-Atressbestätigung obbrecha',
+
+# Scary transclusion
+'scarytranscludedisabled' => '[Interwiki-Einbindung ies deaktiviert]',
+'scarytranscludefailed' => '[Vorloageneinbindung fier $1 ies gescheitert]',
+'scarytranscludetoolong' => '[URL ies zu lang]',
+
+# Trackbacks
+'trackbackbox' => 'Trackbacks fier diese Seyte:<br />
+$1',
+'trackbackremove' => '([$1 läscha])',
+'trackbacklink' => 'Trackback',
+'trackbackdeleteok' => 'Trackback wurde erfolgreich geläscht.',
+
+# Delete conflict
+'deletedwhileediting' => 'Ochtiche: Diese Seyte wurde geläscht, nachdem du oagefanga host se zu beoarbeeta!
+Eim [{{fullurl:{{#special:Log}}|type=delete&page={{FULLPAGENAMEE}}}} Läsch-Logbuch] fendest du dann Grund fier de Läschung. Wenn du de Seyte speicherst, werd se neu oagelegt.',
+'confirmrecreate' => "Nutzer [[User:$1|$1]] ([[User talk:$1|Dischkur]]) hoot diese Seyte geläscht, nachdem du oagefanga host, se zu beoarbeeta. De Begrindung lautete:
+:''$2''
+Bitte bestätige, doß du diese Seyte wirklich neu erstalla mechta.",
+'recreate' => 'Erneut oalähn',
+
+# action=purge
+'confirm_purge_button' => 'OK',
+'confirm-purge-top' => 'Diese Seyte aus damm Server-Cache läscha?',
+'confirm-purge-bottom' => "Laart dann Cache a'r Seyte und erzwingt de Oazeige dar aktuella Version.",
+
+# Multipage image navigation
+'imgmultipageprev' => '← vurherige Seyte',
+'imgmultipagenext' => 'nächste Seyte →',
+'imgmultigo' => 'OK',
+'imgmultigoto' => 'Gieh zo Seyte $1',
+
+# Table pager
+'ascending_abbrev' => 'uff',
+'descending_abbrev' => 'oab',
+'table_pager_next' => 'Nächste Seyte',
+'table_pager_prev' => 'Vorherige Seyte',
+'table_pager_first' => 'Erschte Seyte',
+'table_pager_last' => 'Letzte Seyte',
+'table_pager_limit' => 'Zeige $1 Einträge pro Seyte',
+'table_pager_limit_submit' => 'Luß',
+'table_pager_empty' => 'Kenne Ergebnisse',
+
+# Auto-summaries
+'autosumm-blank' => 'De Seyte wurde gelaart.',
+'autosumm-replace' => "Dar Seytainhalt wurde durch an'n andern Text ersetzt: „$1“",
+'autoredircomment' => 'Weiterleitung noach [[$1]] erstallt',
+'autosumm-new' => 'De Seyte wurde neu oagelagt: „$1“',
+
+# Live preview
+'livepreview-loading' => 'Loada…',
+'livepreview-ready' => 'Loadn … Fattig!',
+'livepreview-failed' => 'Live-Vurschau ne meeglich! Bitte de normale Vurschau benutza.',
+'livepreview-error' => 'Verbindung ne meeglich: $1 „$2“. Bitte de normale Vurschau benutza.',
+
+# Friendlier slave lag warnings
+'lag-warn-normal' => 'Beoarbeetunga dar letzta {{PLURAL:$1|Sekunde|$1 Sekunden}} waan ei dieser Liste nooch ne oagezeigt.',
+'lag-warn-high' => 'Uff Grund huher Datenbankauslastung waan de Beoarbeetunga dar letzta {{PLURAL:$1|Sekunde|$1 Sekunden}} ei dieser Liste noo ne oagezeigt.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'Denne Beobachtungsliste enthält {{PLURAL:$1|1 Eintrag |$1 Einträge}}, Dischkurseyta waan ne gezählt.',
+'watchlistedit-noitems' => 'Denne Beobachtungsliste ies laar.',
+'watchlistedit-normal-title' => 'Beobachtungsliste beoarbeeta',
+'watchlistedit-normal-legend' => 'Einträge vu dar Beobachtungsliste entferna',
+'watchlistedit-normal-explain' => 'Dies sein de Einträge denner Beobachtungsliste. Im Einträge zu entferna, markiere de Kästchen neben dann Einträga und klicke oam Ende dar Seyte uff „Einträge entferna“. Du koast denne Beobachtungsliste au eim [[Special:Watchlist/raw|Listenfurmat beoarbeeta]].',
+'watchlistedit-normal-submit' => 'Einträge entferna',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 Eintrag wurde|$1 Einträge wurden}} vu denner Beobachtungsliste entfernt:',
+'watchlistedit-raw-title' => 'Beobachtungsliste eim Listenfurmat beoarbeeta',
+'watchlistedit-raw-legend' => 'Beobachtungsliste eim Listenfurmat beoarbeeta',
+'watchlistedit-raw-explain' => 'Dies sein de Einträge denner Beobachtungsliste eim Listenfurmat. De Einträge kinna zeilaweise geläscht oder hinzugefiegt waan.
+Pro Zeile ies a Eintrag erlaubt. Wenn du fattig best, klicke uff „Beobachtungsliste speichern“.
+Du koast au de [[Special:Watchlist/edit|Standard-Beoarbeetungsseyte]] benutza.',
+'watchlistedit-raw-titles' => 'Einträge:',
+'watchlistedit-raw-submit' => 'Beobachtungsliste speichern',
+'watchlistedit-raw-done' => 'Denne Beobachtungsliste wurde gespeichert.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 Eintrag wurde|$1 Einträge wurden}} hinzugefiegt:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 Eintrag wurde|$1 Einträge wurden}} entfernt:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Beobachtungsliste: Änneronga',
+'watchlisttools-edit' => 'normal beoarbeeta',
+'watchlisttools-raw' => 'Listafurmat beoarbeeta (Import/Export)',
+
+# Core parser functions
+'unknown_extension_tag' => 'Unbekennter Extension-Tag „$1“',
+'duplicate-defaultsort' => 'Ochtiche: Dar Sortierungsschlissel „$2“ ieberschreibt dann vorher verwendeta Schlissel „$1“.',
+
+# Special:Version
+'version' => 'Version',
+'version-extensions' => 'Installierte Erweiterungen',
+'version-specialpages' => 'Spezialseyta',
+'version-parserhooks' => 'Parser-Hooks',
+'version-variables' => 'Variablen',
+'version-other' => 'Oanderes',
+'version-mediahandlers' => 'Medien-Handler',
+'version-hooks' => "Schnittstalla ''(Hooks)''",
+'version-extension-functions' => 'Funksjonnsuffruffe',
+'version-parser-extensiontags' => "Parser-Erweiterunga ''(tags)''",
+'version-parser-function-hooks' => 'Parser-Funksjonna',
+'version-skin-extension-functions' => 'Skin-Erweiterungs-Funksjonna',
+'version-hook-name' => 'Schnittstallanoame',
+'version-hook-subscribedby' => 'Uffruff vu',
+'version-version' => '(Version $1)',
+'version-license' => 'Lizenz',
+'version-software' => 'Installierte Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
+
+# Special:FilePath
+'filepath' => 'Dateipfad',
+'filepath-page' => 'Datei:',
+'filepath-submit' => 'Pfad sucha',
+'filepath-summary' => 'Miet dieser Spezialseyte lässt siech dar komplette Pfad dar aktuella Version einer Datei ohne Umweg obfroaga. De oagefroagte Datei werd direkt dargestallt bzw. miet der verkniepfta Oawendung gestartet.
+
+De Eengabe muuß ohne dann Zusatz „{{ns:file}}:“ erfolga.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Datei-Duplikat-Suche',
+'fileduplicatesearch-summary' => 'Siche noach Datei-Duplikaten uff Basis ihres Hash-Wertes.
+
+De Eengabe muuß ohne dann Zusatz „{{ns:file}}:“ erfolga.',
+'fileduplicatesearch-legend' => 'Suche noach Duplikata',
+'fileduplicatesearch-filename' => 'Dateinoame:',
+'fileduplicatesearch-submit' => 'Sucha',
+'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigreeße: $3<br />MIME-Typ: $4',
+'fileduplicatesearch-result-1' => 'De Datei „$1“ hoot keene identischa Duplikate.',
+'fileduplicatesearch-result-n' => 'De Datei „$1“ hoot {{PLURAL:$2|1 identisches Duplikat|$2 identische Duplikate}}.',
+
+# Special:SpecialPages
+'specialpages' => 'Spezialseyta',
+'specialpages-note' => '----
+* Spezialseyta fier Jedermoan
+* <strong class="mw-specialpagerestricted">Spezialseyta fier Nutzer miet erweiterta Rechta</strong>',
+'specialpages-group-maintenance' => 'Wartungslisten',
+'specialpages-group-other' => 'Andere Spezialseyta',
+'specialpages-group-login' => 'Oamelda',
+'specialpages-group-changes' => 'Letzte Änderunga und Logbicher',
+'specialpages-group-media' => 'Media',
+'specialpages-group-users' => 'Benutzer on Rechte',
+'specialpages-group-highuse' => 'Häufig benutzte Seyta',
+'specialpages-group-pages' => 'Lista vu Seyta',
+'specialpages-group-pagetools' => 'Seytawerkzeuge',
+'specialpages-group-wiki' => 'Systemdaten und Werkzeuge',
+'specialpages-group-redirects' => 'Weiterleitende Spezialseyta',
+'specialpages-group-spam' => 'Spam-Werkzeuge',
+
+# Special:BlankPage
+'blankpage' => 'Laare Seyte',
+'intentionallyblankpage' => 'Diese Seyte ies obsichtlich ohne Inhalt. Se werd fier Benchmarks verwendet.',
+
+# External image whitelist
+'external_image_whitelist' => "#Diese Zeile ne verändern<pre>
+#Undastehend kinna Fragmente regulärer Ausdricke (dar Teel zwischa dann //) eingegeben waan.
+#Diese waan miet dann URLs vu Bildern aus externen Quellen verglichen
+#A positiver Vergleich fiehrt zur Oazeige des Bildes, oadernfalls werd doas Bild ock ols Link oagezeigt
+#Zeila, de miet an'm # beginna, waan ols Kommentar behandelt
+#Is werd ne zwischa Gruß- und Kleenschreibung underschieda
+
+#Fragmente regulärer Ausdricke noach dieser Zeile eintraga. Diese Zeile ne verändern</pre>",
+
+# Special:Tags
+'tags' => 'Giltige Änderungsmarkierungn',
+'tag-filter-submit' => 'Filter',
+'tags-title' => 'Markierunga',
+'tags-intro' => 'Diese Seyte zeigt olle Markierunga, de fier Beoarbeetunga verwendet waan, suwie deren Bedeutung.',
+'tags-tag' => 'Markierungsnoame',
+'tags-edit' => 'beoarbeeta',
+'tags-hitcount' => '$1 {{PLURAL:$1|Änderung|Änderunga}}',
+
+# Database error messages
+'dberr-header' => 'Dieses Wiki hoot a Problem',
+
+# HTML forms
+'htmlform-submit' => 'Ieberträän',
+'htmlform-reset' => 'Änderunga rickgängig macha',
+'htmlform-selectorother-other' => 'Ondere',
+
+);
diff --git a/languages/messages/MessagesSm.php b/languages/messages/MessagesSm.php
index 1cab41b8..4c08d0a2 100644
--- a/languages/messages/MessagesSm.php
+++ b/languages/messages/MessagesSm.php
@@ -116,9 +116,6 @@ $messages = array(
'nologinlink' => 'Lesitala le ulufale',
'createaccount' => 'Lesitala le ulufale',
'gotaccountlink' => "Fa'aola",
-'youremail' => "'Imeli:",
-'username' => "Igoa o le tagata fa'aaoga:",
-'email' => "'Imeli",
# Edit pages
'summary' => "'Oto'otoga:",
@@ -135,6 +132,9 @@ $messages = array(
# Preferences page
'mypreferences' => "Mea 'ou te fiafia i ai",
'searchresultshead' => "Su'e",
+'youremail' => "'Imeli:",
+'username' => "Igoa o le tagata fa'aaoga:",
+'email' => "'Imeli",
# Groups
'group-all' => "(mea 'uma)",
diff --git a/languages/messages/MessagesSma.php b/languages/messages/MessagesSma.php
index 2bbfeefa..12881f1e 100644
--- a/languages/messages/MessagesSma.php
+++ b/languages/messages/MessagesSma.php
@@ -80,21 +80,25 @@ $messages = array(
'category-empty' => "''Dïhte kategorije sisvege ijje bielieh jallh baalkah.''",
'listingcontinuesabbrev' => 'jåar.',
-'about' => 'Bïjre',
-'article' => 'Sisvege bielie',
-'newwindow' => '(geehpehtidh sïjse orre klaase)',
-'cancel' => 'Orrijidh',
+'about' => 'Bïjre',
+'article' => 'Sisvege bielie',
+'newwindow' => '(geehpehtidh sïjse orre klaase)',
+'cancel' => 'Orrijidh',
+'moredotdotdot' => 'Jienebe...',
+'mypage' => 'Mov bielie',
+'mytalk' => 'Mov dïjveldidh',
+'anontalk' => 'Dïjveldidh ihke dïhte IP',
+'navigation' => 'Navigasjovne',
+'and' => '&#32;jih',
+
+# Cologne Blue skin
'qbfind' => 'Gaavnedh',
'qbedit' => 'Värrhtoedimmie',
'qbpageoptions' => 'Dïhte bielie',
'qbmyoptions' => 'Mov bielieh',
'qbspecialpages' => 'Joekoelaakan bielieh',
-'moredotdotdot' => 'Jienebe...',
-'mypage' => 'Mov bielie',
-'mytalk' => 'Mov dïjveldidh',
-'anontalk' => 'Dïjveldidh ihke dïhte IP',
-'navigation' => 'Navigasjovne',
-'and' => '&#32;jih',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Båajhtode',
'returnto' => 'Bååstide gåajkoe $1.',
@@ -149,8 +153,6 @@ $messages = array(
'disclaimerpage' => 'Project:Bäjjesereaktah',
'edithelp' => 'Sjiehtedimmie viehkie',
'edithelppage' => 'Help:Sjiehtedimmie',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Sisvege',
'mainpage' => 'Aalkoebielie',
'mainpage-description' => 'Aalkoebielie',
@@ -216,14 +218,6 @@ $messages = array(
'gotaccount' => "Åtna dov joe nuhtjiennomme? '''$1'''.",
'gotaccountlink' => 'Logge sïjse',
'createaccountmail' => 'meatan e-påaste',
-'youremail' => 'E-påaste:',
-'username' => 'Nuhtjiennomme:',
-'uid' => 'Nuhtjien ID:',
-'yourrealname' => 'Ov nomme:',
-'yourlanguage' => 'Gïele:',
-'yournick' => 'Nuhjiennomme:',
-'email' => 'E-påaste',
-'prefs-help-realname' => 'Ov nomme galkedh ijje tjaeledh. Bïjre datne veeljeme tjaeledh dov ov nomme, båetedh dïhte nuhtjie ihke tjaeledh dov barkoe.',
'loginerror' => 'Logge sïjse båajhtode',
'loginsuccesstitle' => 'Dov lea daelie sïjse logge',
'loginsuccess' => "'''Dov lea daelie sïjselogge nille {{SITENAME}} goh \"\$1\".'''",
@@ -284,7 +278,8 @@ Gïemhpes logge sïjse vihth männgan datne åtna låhka dïhte.',
'accmailtext' => 'Loevesbaakoe ihke ”$1” utnedh seedtedh gåajkoe $2.',
'newarticle' => '(Orre)',
'noarticletext' => 'Dïhte lea daelie ijje tjaalege sïjse dïhte bielie, dov dorje [[Special:Search/{{PAGENAME}}|ohtsedh ihke dïhte bielie nomme]] sïjse jeatjebh bielieh jallh [{{fullurl:{{FULLPAGENAME}}|action=edit}} värrhtoedimmie dïhte bielie].',
-'usercssjsyoucanpreview' => "'''Tiipse:''' Nuhtjie 'Vuesehte åvte-vuesiehtidh' båaloe ihke pryövoe dov orre CSS/JS åvte spååredh.",
+'usercssyoucanpreview' => "'''Tiipse:''' Nuhtjie 'Vuesehte åvte-vuesiehtidh' båaloe ihke pryövoe dov orre CSS åvte spååredh.",
+'userjsyoucanpreview' => "'''Tiipse:''' Nuhtjie 'Vuesehte åvte-vuesiehtidh' båaloe ihke pryövoe dov orre JS åvte spååredh.",
'updated' => '(Orrestahteme)',
'note' => "'''Galtege:'''",
'previewnote' => "'''Dïhte lea aktegh åvte-vuesiehtidh; värrhtoedimmieh ånta ijje sjïdtedh spååredh!'''",
@@ -308,7 +303,7 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
'viewpagelogs' => 'Vuesehte loggeh ihke dïhte bielie',
'currentrev' => 'Daaletje gïehtjedamme',
'revisionasof' => 'Gïehtjedamme ihke $1',
-'revision-info' => 'Gïehtjedamme raejeste dïhte $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Gïehtjedamme raejeste dïhte $1; $2',
'previousrevision' => '←Båarasåabpoe gïehtjedamme',
'nextrevision' => 'Minngebe gïehtjedamme→',
'currentrevisionlink' => 'Daaletje gïehtjedamme',
@@ -323,7 +318,7 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
# Revision feed
'history-feed-title' => 'Gïehtjedamme histovrije',
-'history-feed-item-nocomment' => '$1 dïhte $2', # user at time
+'history-feed-item-nocomment' => '$1 dïhte $2',
# History merging
'mergehistory-from' => 'Gaaltjie bielie:',
@@ -340,23 +335,29 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
'searchresults' => 'Ohtsedh resultaateh',
'searchresulttext' => 'Ihke jeenjebe bïevnesh bïjre ohtsedh {{SITENAME}}, vuejnedh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Dov ohtsedh ihke '''[[:$1]]'''",
-'noexactmatch' => "'''Dïhte gååvnese ijje bielie meatan nommej \"\$1\".''' Dov dorje [[:\$1|skaepede dïhte bielie]].",
-'prevn' => 'övtebe $1',
-'nextn' => 'minngeben $1',
-'viewprevnext' => 'Vuesehth ($1) ($2) ($3)',
+'prevn' => 'övtebe {{PLURAL:$1|$1}}',
+'nextn' => 'minngeben {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vuesehth ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Sisvege',
'powersearch' => 'Ohtsedh',
# Preferences page
-'preferences' => 'Sïjsestäälningeh',
-'mypreferences' => 'Mov sïjsesäälningeh',
-'changepassword' => 'Värrhtoedimmie loevesbaakoe',
-'skin-preview' => 'Åvte-vuesiehtidh',
-'math_unknown_error' => 'ammes båajhtede',
-'saveprefs' => 'Spååredh',
-'searchresultshead' => 'Ohtsedh',
-'timezonelegend' => 'Tïjjedajve',
-'localtime' => 'Byjrehks tïjje',
+'preferences' => 'Sïjsestäälningeh',
+'mypreferences' => 'Mov sïjsesäälningeh',
+'changepassword' => 'Värrhtoedimmie loevesbaakoe',
+'skin-preview' => 'Åvte-vuesiehtidh',
+'saveprefs' => 'Spååredh',
+'searchresultshead' => 'Ohtsedh',
+'timezonelegend' => 'Tïjjedajve',
+'localtime' => 'Byjrehks tïjje',
+'youremail' => 'E-påaste:',
+'username' => 'Nuhtjiennomme:',
+'uid' => 'Nuhtjien ID:',
+'yourrealname' => 'Ov nomme:',
+'yourlanguage' => 'Gïele:',
+'yournick' => 'Nuhjiennomme:',
+'email' => 'E-påaste',
+'prefs-help-realname' => 'Ov nomme galkedh ijje tjaeledh. Bïjre datne veeljeme tjaeledh dov ov nomme, båetedh dïhte nuhtjie ihke tjaeledh dov barkoe.',
# User rights
'editinguser' => "Värrhtoedimmie nuhtjien '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -398,25 +399,27 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
# Recent changes linked
'recentchangeslinked' => 'Värrhtoedimmieh nille krïense bielieh',
+'recentchangeslinked-feed' => 'Värrhtoedimmieh nille krïense bielieh',
+'recentchangeslinked-toolbox' => 'Värrhtoedimmieh nille krïense bielieh',
'recentchangeslinked-title' => 'Värrhtoedimmie laktaseaddji gåajkoe "$1"',
'recentchangeslinked-noresult' => 'Ijje kïrense bielieh värrhtoedimmie nuelesne dïhte veeljeme tïjje-boelhke.',
'recentchangeslinked-summary' => "Dïhte joekoelaakan bielie lästoe dah minngemes värrhtoedimmieh nille bielieh goh lea lïenghke. Bielieh nille dov sïektjedhlästoe lea '''buajtehks'''.",
# Upload
-'upload' => 'Sadde guvvie',
-'uploadbtn' => 'Sadde baalka',
-'uploadlogpage' => 'Sadde logge',
-'filename' => 'Guvvienomme',
-'filesource' => 'Gaaltjie',
-'fileexists-thumb' => "<center>'''Lea-guvvie'''</center>",
-'savefile' => 'Spååredh guvvie',
-'uploadedimage' => 'sadde "[[$1]]"',
-'uploadvirus' => 'Guvvie tjeekehdidh viirus! Bïevnesh: $1',
-'sourcefilename' => 'Gaaltjie guvvienomme',
+'upload' => 'Sadde guvvie',
+'uploadbtn' => 'Sadde baalka',
+'uploadlogpage' => 'Sadde logge',
+'filename' => 'Guvvienomme',
+'filesource' => 'Gaaltjie',
+'savefile' => 'Spååredh guvvie',
+'uploadedimage' => 'sadde "[[$1]]"',
+'uploadvirus' => 'Guvvie tjeekehdidh viirus! Bïevnesh: $1',
+'sourcefilename' => 'Gaaltjie guvvienomme',
'upload-file-error' => 'Sjisjnjie båajhtode',
-'license' => 'Liseense',
+'license' => 'Liseense',
+'license-header' => 'Liseense',
# Special:ListFiles
'listfiles_search_for' => 'Ohtsedh ihke guvvie nomme:',
@@ -427,6 +430,7 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
'listfiles_size' => 'Stoerre',
# File description page
+'file-anchor-link' => 'Baalka',
'filehist' => 'Baalka histovrije',
'filehist-help' => 'Diedtedh nille biejjie ihke vuajna man baalkan lij bealese dïhte tïjje.',
'filehist-current' => 'daaletje',
@@ -438,9 +442,7 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
'imagelinks' => 'Lïenghkeh',
'linkstoimage' => 'Tjuovvovasj bielieh lïenghkeh gåajkoe dïhte baalka:',
'nolinkstoimage' => 'Dïhte lea ijje bielieh goh nuhtjie dïhte baalka.',
-'sharedupload' => 'Dïhte baalka lea sadde goh juaka jih dorje sjädta nuhtjie dejstie jeatjebh prosjekte.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Ijje baalka meatan dïhte nomme gååvnese, dov dorje $1.',
-'noimage-linktext' => 'sadde dïhte',
+'sharedupload' => 'Dïhte baalka lea sadde goh juaka jih dorje sjädta nuhtjie dejstie jeatjebh prosjekte.',
'uploadnewversion-linktext' => 'Sadde orre låhkoe dejstie dïhte baalka',
# MIME search
@@ -593,7 +595,6 @@ Vuajna $2 ihke galtege bïjre männgan sihkojuvvonh.',
'protectexpiry' => 'Boarasnuvve:',
'protect_expiry_invalid' => 'Ov-jiltiige buaorasjnuvvenaigi.',
'protect_expiry_old' => 'Boarasnuvvenaigi lea vaesedh.',
-'protect-unchain' => 'Tjuevtedh jåhtaluhpie',
'protect-text' => "Daesnie dorje datne vuajna jih värrhtoedimmie vaarjelidhdaltese dejstie bielie '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Dov nuhtjien åtna ijje luhpie gåajkoe värrhtoedimmie tjaeleste-vaarjelidh.
Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
@@ -605,7 +606,7 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
'protect-expiring' => 'boarasnuvve $1 (UTC)',
'protect-cascade' => 'Vaarjelidh bielieh guosket sïjse dïhte bielie (viidit suodjaluse)',
'protect-cantedit' => 'Datne dorje ijje värrhtoedimmie vaarjelidhdaltese ihke dïhte bielie, ihke datne ijja åtna luhpie ahte värrhtoedimmie dïhte.',
-'protect-expiry-options' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite',
'restriction-type' => 'Permisjovne:',
'restriction-level' => 'Restriksjovne daltese:',
@@ -637,6 +638,7 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
'sp-contributions-newbies-sub' => 'Ihke orre nuhtjienh',
'sp-contributions-blocklog' => 'Tjöödtjehtidh logge',
+'sp-contributions-talk' => 'Digkiedimmie',
'sp-contributions-username' => 'IP Tjaalesijjie jallh nuhtjiennomme:',
'sp-contributions-submit' => 'Ohtsedh',
@@ -657,7 +659,7 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
'ipaddress' => 'IP Tjaalesijjie:',
'ipadressorusername' => 'IP Tjaalesijjie jallh nuhtjiennomme:',
'ipbother' => 'Jeatjebh tïjje:',
-'ipboptions' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite',
'ipbotheroption' => 'jeatjebh',
'ipblocklist' => 'Lästoe bijjelen tjöödtjehtidh IP tjaalesijjieh jih nuhtjiennommeh',
'ipblocklist-username' => 'Nuhtjiennomme jallh IP tjaalesijjie:',
@@ -771,6 +773,9 @@ Gïemhpes veeljeme jeatjebh nomme.',
'numedits' => 'Låhkoe värrhtoedimmieh (bielie): $1',
'numtalkedits' => 'Låhkoe värrhtoedimmieh (dïjvaldidh bielie): $1',
+# Math errors
+'math_unknown_error' => 'ammes båajhtede',
+
# Patrol log
'patrol-log-auto' => '(jïjtsistie)',
@@ -802,7 +807,7 @@ Jeatjebh dajveh lea gaptjedh goh sïejhme, bine vuesehte gåessie taabelle stoer
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Gamte',
@@ -884,7 +889,7 @@ Jeatjebh dajveh lea gaptjedh goh sïejhme, bine vuesehte gåessie taabelle stoer
'unknown_extension_tag' => 'Ammes ekshtensjovne lissie "$1"',
# Special:Version
-'version' => 'Låhkoe', # Not used as normal message but as header for the special page itself
+'version' => 'Låhkoe',
# Special:SpecialPages
'specialpages' => 'Joekoen bielieh',
diff --git a/languages/messages/MessagesSn.php b/languages/messages/MessagesSn.php
index 7621a0a7..0ee6e045 100644
--- a/languages/messages/MessagesSn.php
+++ b/languages/messages/MessagesSn.php
@@ -44,11 +44,13 @@ $messages = array(
'november-gen' => 'Mbudzi',
'december-gen' => 'Zvita',
-'cancel' => 'Kanzura',
+'cancel' => 'Kanzura',
+'mytalk' => 'Hurukuro dzangu',
+'navigation' => 'Banguranyika',
+
+# Cologne Blue skin
'qbedit' => 'Chinja',
'qbspecialpages' => 'Mapeji akakosha',
-'mytalk' => 'Hurukuro dzangu',
-'navigation' => 'Banguranyika',
'help' => 'Rubatsiro',
'search' => 'Tsvaga',
@@ -99,8 +101,6 @@ Usakanganwe kuchinga [[Special:Preferences|mapreferences ako {{SITENAME}}]].',
'userlogout' => 'Chibuda',
'notloggedin' => 'Hauna kugamuchirwa',
'createaccount' => 'Gadzira Akaunzi',
-'youremail' => 'E-mail:',
-'username' => 'Zita:',
# Edit pages
'summary' => 'Muchidimbu:',
@@ -118,12 +118,16 @@ Usakanganwe kuchinga [[Special:Preferences|mapreferences ako {{SITENAME}}]].',
'prefsnologin' => 'Hauna kugamuchirwa',
'prefs-rc' => 'Zvaba Kuchinjwa',
'searchresultshead' => 'Tsvaga',
+'youremail' => 'E-mail:',
+'username' => 'Zita:',
# Recent changes
'recentchanges' => 'Zvaba Kuchinjwa',
# Recent changes linked
-'recentchangeslinked' => 'Zvinoenderana nezvachinjwa',
+'recentchangeslinked' => 'Zvinoenderana nezvachinjwa',
+'recentchangeslinked-feed' => 'Zvinoenderana nezvachinjwa',
+'recentchangeslinked-toolbox' => 'Zvinoenderana nezvachinjwa',
# Upload
'upload' => 'Isa fayera',
diff --git a/languages/messages/MessagesSo.php b/languages/messages/MessagesSo.php
index c93e6f45..ab6df024 100644
--- a/languages/messages/MessagesSo.php
+++ b/languages/messages/MessagesSo.php
@@ -103,23 +103,27 @@ $messages = array(
'pagecategories' => '{{PLURAL:$1|Qaybta|Qaybaha}}',
'category_header' => 'Maqaalada ku jirta qaybta "$1"',
'subcategories' => 'Qaybaha hoose',
-'hidden-category-category' => 'Qeybaha qarsoon', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Qeybaha qarsoon',
'category-subcat-count' => '{{PLURAL:$2|Qeybtaan waxaa kaliya ay leedahay qeyb-hooseedyadaan.|Qeybtaan waxay leedahay {{PLURAL:$1|qeyb-hoosaad|$1 qeyb-hoosaadyo}} ee soo socda, guud ahaan $2 marka loo fiiriyo.}}',
-'about' => 'Warbixin',
-'article' => 'Bogga maqaalka',
-'cancel' => 'Buri (Kansal)',
+'about' => 'Warbixin',
+'article' => 'Bogga maqaalka',
+'cancel' => 'Buri (Kansal)',
+'moredotdotdot' => 'Dheeraad...',
+'mypage' => 'Boggeyga',
+'mytalk' => 'Wadahadalkeyga',
+'anontalk' => 'Wadahadalka IP:gan',
+'and' => '&#32;iyo',
+
+# Cologne Blue skin
'qbfind' => 'Raadi',
'qbbrowse' => 'Fiirfiiri',
'qbedit' => 'Wax ka bedel',
'qbpageoptions' => 'Boggaan',
'qbmyoptions' => 'Boggageyga',
'qbspecialpages' => 'Bogaga qaaska ah',
-'moredotdotdot' => 'Dheeraad...',
-'mypage' => 'Boggeyga',
-'mytalk' => 'Wadahadalkeyga',
-'anontalk' => 'Wadahadalka IP:gan',
-'and' => '&#32;iyo',
+'faq' => 'SIL',
+'faqpage' => 'Project:SIL',
'errorpagetitle' => 'Qalad',
'returnto' => 'Ku noqo $1.',
@@ -162,7 +166,7 @@ $messages = array(
'categorypage' => 'Fiiri bogga qaybta',
'viewtalkpage' => 'Fiiri bogga wadahadalka',
'otherlanguages' => 'Luqadaha kale',
-'lastmodifiedat' => 'Boggan waxaa markii ugu dambeysay wax laga bedelay $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Boggan waxaa markii ugu dambeysay wax laga bedelay $2, $1.',
'viewcount' => 'This page has been accessed {{PLURAL:$1|one time|$1 times}}.',
'protectedpage' => "Bog la'difaacay",
'jumpto' => 'U bood:',
@@ -176,8 +180,6 @@ $messages = array(
'currentevents-url' => 'Project:Maxaa cusub',
'edithelp' => 'Caawinaada wax ka bedelka',
'edithelppage' => 'Help:Wax ka bedelka',
-'faq' => 'SIL',
-'faqpage' => 'Project:SIL',
'helppage' => 'Help:Caawinaad',
'mainpage' => 'Bogga Hore',
'mainpage-description' => 'Bogga Hore',
@@ -226,14 +228,12 @@ $messages = array(
'protectedpagetext' => 'Beyjkan wuu xiranyahay si aan war loogabadalin.',
# Login and logout pages
-'logouttitle' => 'Isticmaalaha ka bax',
'logouttext' => "'''Hada waad ka baxday.'''
Waad sii isticmaali kartaa {{SITENAME}}-han adoon lagu aqoon, ama gudaha ayaad [[Special:UserLogin|gali kartaa markale]] adiga oo isticmaalaya gudagalkaagii hore ama mid ka duwan. OGEYSIIS waxaa lagayabaa bogagga qaarkood in ay yiraahdaa wali gudaha ayaad ku jirtaa, ilaa aad Internet barowsarkaaaga ka nadiifiso.",
'welcomecreation' => "== Soo dhawoow, $1! ==
Gudagalahaaga waa la sameeyey.
Ha' hilmaamin in aad wax ka bedesho [[Special:Preferences|{{SITENAME}} dooqaaga]].",
-'loginpagetitle' => 'Gudagalka isticmaalaha',
'yourname' => 'Erayga Gudagalka:',
'yourpassword' => 'Eraysir:',
'yourpasswordagain' => 'Markale qor eraysirkaaga:',
@@ -251,22 +251,7 @@ Ha' hilmaamin in aad wax ka bedesho [[Special:Preferences|{{SITENAME}} dooqaaga]
'gotaccountlink' => 'Gudaha gal',
'badretype' => 'Ereysiryada aad gelisay ismalaha.',
'userexists' => 'Magaca isticmaalaha aad gelisay waa jiraa. Fadlan dooro magac ka bedelan.',
-'youremail' => 'E-boosto *:',
-'username' => 'Gudagal:',
-'uid' => 'Lambarka isticmaalaha:',
-'yourrealname' => 'Magacaaga runta ah:',
-'yourlanguage' => 'luqad:',
-'yournick' => 'Naaneys:',
-'badsiglength' => 'Naaneysta aad bey u dheertahay.
-Waa in aysan ka badanin $1 {{PLURAL:$1|eray|erayo}}.',
-'yourgender' => 'Jinsi:',
-'gender-unknown' => 'Aana la qeexin',
-'gender-male' => 'Lab',
-'gender-female' => 'Dhedig',
-'email' => 'E-boosto',
-'prefs-help-realname' => 'Optional: if you choose to provide it this will be used for giving you attribution for your work.',
'loginerror' => 'Qaladka gudagalista',
-'prefs-help-email' => 'Optional: Enables others to contact you through your user or user_talk page without needing to reveal your identity.',
'noname' => "Magaca gudagalaha sax ma'aha.",
'loginsuccesstitle' => 'Gudagalida waa la dhamaystiray',
'loginsuccess' => "'''Hada waxaad guda uga jirtaa {{SITENAME}} sida \"\$1\".'''",
@@ -346,7 +331,6 @@ Hadii aad keydisid, waxaa dhumidoona caddadyadii kan ka dambeeyey.'''",
'last' => 'Ugu dambeeyo',
'page_first' => 'Ugu horeeyo',
'page_last' => 'ugu dambeeyo',
-'deletedrev' => "[la'tirtiray]",
# Revision feed
'history-feed-title' => 'Taariikhda caddadyaasha',
@@ -361,9 +345,9 @@ Iskuday in aad [[Special:Search|karaadiso wikigan]] beyjaj laxiira oo cusub.',
'searchresults' => 'Natiijooyinkii ka soo baxay raadinta',
'searchsubtitle' => "Waxaad raadisay '''[[:$1]]'''",
'searchsubtitleinvalid' => "Waxaad raadisay '''$1'''",
-'prevn' => 'Ka horeeya $1',
-'nextn' => 'Ku xiga $1',
-'viewprevnext' => 'Fiiri ($1) ($2) ($3).',
+'prevn' => 'Ka horeeya {{PLURAL:$1|$1}}',
+'nextn' => 'Ku xiga {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Fiiri ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Caawinaad',
'powersearch' => 'Raadi',
@@ -371,21 +355,35 @@ Iskuday in aad [[Special:Search|karaadiso wikigan]] beyjaj laxiira oo cusub.',
'preferences' => 'Dooqyada',
'mypreferences' => 'Dooqyadeyda',
'prefsnologin' => 'Gudaha kuma jirtid',
-'prefsnologintext' => 'Waa in aad <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} Gudaha ku jirtaa]</span> si aad dooqyadaada u dalbatid.',
-'prefsreset' => 'Dooqyada waxaa laga keenay keydka.',
+'prefsnologintext' => 'Waa in aad <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Gudaha ku jirtaa]</span> si aad dooqyadaada u dalbatid.',
'skin-preview' => 'Horfiirin',
-'math' => 'Xisaab',
+'prefs-math' => 'Xisaab',
'datedefault' => "Ma'jiro dooq",
-'datetime' => 'Taariikhda iyo saacada',
+'prefs-datetime' => 'Taariikhda iyo saacadda',
'prefs-rc' => 'Isbedelada dhow',
'prefs-watchlist' => 'liiska-waardiyaha',
'prefs-watchlist-days' => 'Tirada maalamaha ay ku jirayaan liiska-waardiyaha:',
'saveprefs' => 'Kaydi',
-'textboxsize' => 'Wax ka bedelka',
+'prefs-editing' => 'Wax ka bedelka',
'searchresultshead' => 'Raadi',
'recentchangesdays' => 'Tirada maalmaha lagu tusaayo isbedelada dhow:',
'savedprefs' => 'Dooqyadaada waa la keydiyey.',
'allowemail' => 'Ogolow in e-boosto ay kaagatimaado isticmaalayaasha kale',
+'youremail' => 'E-boosto *:',
+'username' => 'Gudagal:',
+'uid' => 'Lambarka isticmaalaha:',
+'yourrealname' => 'Magacaaga runta ah:',
+'yourlanguage' => 'luqad:',
+'yournick' => 'Saxiix (Naaneys):',
+'badsiglength' => 'Naaneysta aad bey u dheertahay.
+Waa in aysan ka badanin $1 {{PLURAL:$1|eray|erayo}}.',
+'yourgender' => 'Jinsi:',
+'gender-unknown' => 'Aana la qeexin',
+'gender-male' => 'Lab',
+'gender-female' => 'Dhedig',
+'email' => 'E-boosto',
+'prefs-help-realname' => 'Optional: if you choose to provide it this will be used for giving you attribution for your work.',
+'prefs-help-email' => 'Optional: Enables others to contact you through your user or user_talk page without needing to reveal your identity.',
# User rights
'saveusergroups' => 'Kaydi kooxaha isticmaalayaasha',
@@ -414,8 +412,8 @@ Iskuday in aad [[Special:Search|karaadiso wikigan]] beyjaj laxiira oo cusub.',
'watchthisupload' => 'Boggaan waardiyey',
# File description page
+'file-anchor-link' => 'Fayl',
'nolinkstoimage' => "Ma'ay jiraan beyjaj ku xiran faylkaan.",
-'shareduploadwiki' => 'Fadlan meeshaa $1 ka fiiri warbixin dheeraad ah.',
# File deletion
'filedelete' => 'Tirtir $1',
@@ -428,8 +426,8 @@ Iskuday in aad [[Special:Search|karaadiso wikigan]] beyjaj laxiira oo cusub.',
# Random page
'randompage' => 'Ku nasiibso bog',
-'brokenredirects-edit' => '(wax ka bedel)',
-'brokenredirects-delete' => '(tirtir)',
+'brokenredirects-edit' => 'wax ka bedel',
+'brokenredirects-delete' => 'tirtir',
# Miscellaneous special pages
'lonelypages' => 'Boggaga agoonta ah',
@@ -554,6 +552,8 @@ Hadii aad rabootid in aad boggan ka saartid wardiyeynta, dhagsii \"Ha' wardiyeyn
# Contributions
'mycontris' => 'Wax qoraalkeyga',
+'sp-contributions-talk' => 'Wadahadal',
+
# Block/unblock
'anononlyblock' => 'anon. oo kaliya',
'autoblocker' => 'Waxaa automaatik u xirista keenay in mudo dhow uu cinwaanka IP:ga isticmaalay "[[User:$1|$1]]". Sababta keentay in loo xiro $1 waa: "\'\'\'$2\'\'\'"',
@@ -575,8 +575,6 @@ Hadii aad rabootid in aad boggan ka saartid wardiyeynta, dhagsii \"Ha' wardiyeyn
'allmessagestext' => 'Liiskan waxaa ku qoran dhamaan fariimaha lagahelikaro xarun magaceedka MediaWiki.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' la'ma isticmaalikaro, '''\$wgUseDatabaseMessages''' oo dansan daraadeed.",
-'allmessagesfilter' => 'Kalasoocaha fariimaha:',
-'allmessagesmodified' => 'Itus kuwa wax laga bedelay',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Bogeyga isticmaalaha',
@@ -609,7 +607,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# Attribution
'anonymous' => "{{PLURAL:$1|Isticmaalaha|Isticmaaleyaasa}} aanan la'aqoonsanin ee {{SITENAME}}",
'siteuser' => '{{SITENAME}} isticmaale $1',
-'lastmodifiedatby' => 'Bogaan waxaa ugu dambeyntii wax laga bedelay $2, $1 kana bedelay $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Bogaan waxaa ugu dambeyntii wax laga bedelay $2, $1 kana bedelay $3.',
'othercontribs' => 'Waxay ku saleysantahay shaqada $1.',
# Info page
diff --git a/languages/messages/MessagesSq.php b/languages/messages/MessagesSq.php
index b20622d6..6f36348b 100644
--- a/languages/messages/MessagesSq.php
+++ b/languages/messages/MessagesSq.php
@@ -104,7 +104,7 @@ $specialPageAliases = array(
$magicWords = array(
'redirect' => array( '0', '#RIDREJTO', '#REDIRECT' ),
- 'currentmonth' => array( '1', 'MUAJIMOMENTAL', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'MUAJIMOMENTAL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'EMRIIMUAJITMOMENTAL', 'CURRENTMONTHNAME' ),
'currentday' => array( '1', 'DITASOT', 'CURRENTDAY' ),
'currentday2' => array( '1', 'DITASOT2', 'CURRENTDAY2' ),
@@ -112,7 +112,7 @@ $magicWords = array(
'currentyear' => array( '1', 'SIVJET', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'KOHATANI', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ORATANI', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'MUAJILOKAL', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'MUAJILOKAL', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'EMRIIMUAJITLOKAL', 'LOCALMONTHNAME' ),
'localday' => array( '1', 'DITALOKALE', 'LOCALDAY' ),
'localday2' => array( '1', 'DITALOKALE2', 'LOCALDAY2' ),
@@ -209,6 +209,7 @@ $messages = array(
'tog-enotifminoredits' => 'Më ço email kur ka redaktime të vogla të faqeve',
'tog-enotifrevealaddr' => 'Trego adresën time në email-et njoftuese',
'tog-shownumberswatching' => 'Trego numrin e përdoruesve mbikqyrës',
+'tog-oldsig' => 'Pamjeje e nënshkrimit ekzistues:',
'tog-fancysig' => 'Mos e përpuno nënshkrimin për formatim',
'tog-externaleditor' => 'Përdor program të jashtëm për redaktime',
'tog-externaldiff' => 'Përdor program të jashtëm për të treguar ndryshimet',
@@ -229,6 +230,9 @@ $messages = array(
'underline-never' => 'asnjëherë',
'underline-default' => 'sipas shfletuesit',
+# Font style option in Special:Preferences
+'editfont-default' => 'Sipas shfletuesit',
+
# Dates
'sunday' => 'E diel',
'monday' => 'E hënë',
@@ -288,7 +292,7 @@ $messages = array(
'category-media-header' => 'Skeda në kategori "$1"',
'category-empty' => "''Kjo kategori aktualisht nuk përmban asnjë faqe apo media.''",
'hidden-categories' => '{{PLURAL:$1|Kategori e fshehur|Kategori të fshehura}}',
-'hidden-category-category' => 'Kategori të fshehura', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori të fshehura',
'category-subcat-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë nën-kategori.|Kjo kategori ka {{PLURAL:$1|këtë nën-kategori|$1 këto nën-kategori}}, nga $2 gjithësej.}}',
'category-subcat-count-limited' => 'Kjo kategori ka {{PLURAL:$1|këtë nën-kategori|$1 këto nën-kategori}}.',
'category-article-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë faqe.|Kjo kategori ka {{PLURAL:$1|këtë faqe|$1 faqe}} nga $2 gjithësej.}}',
@@ -296,6 +300,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kjo kategori ka vetëm këtë skedë.|{{PLURAL:$1|Kjo skedë është|$1 skeda janë}} në këtë kategori, nga $2 gjithësej.}}',
'category-file-count-limited' => '{{PLURAL:$1|Kjo skedë është|$1 skeda janë}} në këtë kategori.',
'listingcontinuesabbrev' => 'vazh.',
+'index-category' => 'Faqe të indeksuara',
+'noindex-category' => 'Faqe jo të indeksuara',
'mainpagetext' => "'''MediaWiki software u instalua me sukses.'''",
'mainpagedocfooter' => 'Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [http://meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].
@@ -305,10 +311,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWiki-t]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
-'about' => 'Rreth',
-'article' => 'Artikulli',
-'newwindow' => '(hapet në një dritare të re)',
-'cancel' => 'Harroji',
+'about' => 'Rreth',
+'article' => 'Artikulli',
+'newwindow' => '(hapet në një dritare të re)',
+'cancel' => 'Harroji',
+'moredotdotdot' => 'Më shumë...',
+'mypage' => 'Faqja ime',
+'mytalk' => 'Diskutimet e mia',
+'anontalk' => 'Diskutimet për këtë IP',
+'navigation' => 'Shfleto',
+'and' => '&#32;dhe',
+
+# Cologne Blue skin
'qbfind' => 'Kërko',
'qbbrowse' => 'Shfletoni',
'qbedit' => 'Redaktoni',
@@ -316,15 +330,35 @@ $messages = array(
'qbpageinfo' => 'Informacion mbi faqen',
'qbmyoptions' => 'Opsionet e mia',
'qbspecialpages' => 'Faqet speciale',
-'moredotdotdot' => 'Më shumë...',
-'mypage' => 'Faqja ime',
-'mytalk' => 'Diskutimet e mia',
-'anontalk' => 'Diskutimet për këtë IP',
-'navigation' => 'Shfleto',
-'and' => '&#32;dhe',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'Pyetje e Përgjigje',
+'faqpage' => 'Project:Pyetje e Përgjigje',
+
+# Vector skin
+'vector-action-addsection' => 'Shtoe temën',
+'vector-action-delete' => 'Grise',
+'vector-action-move' => 'Zhvendose',
+'vector-action-protect' => 'Mbrojtëje',
+'vector-action-undelete' => 'Jo e grisur',
+'vector-action-unprotect' => 'Liroje',
+'vector-namespace-category' => 'Kategoria',
+'vector-namespace-help' => 'Ndihmë',
+'vector-namespace-image' => 'Skeda',
+'vector-namespace-main' => 'Faqe',
+'vector-namespace-media' => 'Media-faqe',
+'vector-namespace-mediawiki' => 'Mesazh',
+'vector-namespace-project' => 'Faqe e mbrojtur',
+'vector-namespace-special' => 'Faqe speciale',
+'vector-namespace-talk' => 'Diskutimet',
+'vector-namespace-template' => 'Stampa',
+'vector-namespace-user' => 'Përdoruesi',
+'vector-view-create' => 'Krijo',
+'vector-view-edit' => 'Redakto',
+'vector-view-history' => 'Shiko historikun',
+'vector-view-view' => 'Lexoni',
+'vector-view-viewsource' => 'Shikoni tekstin',
+'actions' => 'Veprimet',
+'namespaces' => 'Emri i hapësirës',
+'variants' => 'Variante',
'errorpagetitle' => 'Gabim',
'returnto' => 'Kthehu tek $1.',
@@ -374,18 +408,22 @@ $messages = array(
'otherlanguages' => 'Në gjuhë të tjera',
'redirectedfrom' => '(Përcjellë nga $1)',
'redirectpagesub' => 'Faqe përcjellëse',
-'lastmodifiedat' => 'Kjo faqe është ndryshuar për herë te fundit më $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Kjo faqe është ndryshuar për herë te fundit më $2, $1.',
'viewcount' => 'Kjo faqe është parë {{PLURAL:$1|një|$1}} herë.',
'protectedpage' => 'Faqe e mbrojtur',
'jumpto' => 'Shko te:',
'jumptonavigation' => 'navigacion',
'jumptosearch' => 'kërko',
+'view-pool-error' => 'Na falni, serverat janë të mbingarkuar momentalisht.
+Shumë përdorues po përpiqen të shikojnë këtë faqe.
+Ju lutem prisni disa momente përpara se të hapni sërish këtë faqe.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Rreth {{SITENAME}}',
'aboutpage' => 'Project:Rreth',
'copyright' => 'Përmbajtja është në disponim nëpërmjet licencës $1.',
-'copyrightpagename' => '{{SITENAME}} Të drejta autori',
'copyrightpage' => '{{ns:project}}:Të drejta autori',
'currentevents' => 'Ngjarjet e tanishme',
'currentevents-url' => 'Project:Ngjarjet e tanishme',
@@ -393,8 +431,6 @@ $messages = array(
'disclaimerpage' => 'Project:Shfajësimet e përgjithshme',
'edithelp' => 'Ndihmë për redaktim',
'edithelppage' => 'Help:Si redaktohet një faqe',
-'faq' => 'Pyetje e Përgjigje',
-'faqpage' => 'Project:Pyetje e Përgjigje',
'helppage' => 'Help:Ndihmë',
'mainpage' => 'Faqja Kryesore',
'mainpage-description' => 'Faqja Kryesore',
@@ -472,10 +508,6 @@ MySQL kthehu gabimin "<tt>$3: $4</tt>".',
"$1"
nga funksioni "$2".
MySQL kthehu gabimin "$3: $4".',
-'noconnect' => 'Kërkojmë ndjesë! Wiki po përjeton ca probleme teknike dhe nuk mund të kontaktojë serverin e bazave të të dhënave.<br />
-$1',
-'nodb' => 'Nuk mund të zgjidhja regjistrin $1',
-'cachederror' => 'Kjo është një kopje e faqes së kërkuar dhe mund të jetë e vjetër.',
'laggedslavemode' => 'Kujdes: Kjo faqe mund të mos jetë përtërirë nga shërbyesi kryesorë dhe mund të ketë informacion të vjetër',
'readonly' => 'Regjistri i bllokuar',
'enterlockreason' => 'Fusni një arsye për bllokimin, gjithashtu fusni edhe kohën se kur pritet të çbllokohet',
@@ -494,6 +526,8 @@ Nëse nuk është kështu, mund të keni gjetur gabim në softuer. Ju lutemi, nj
'readonly_lag' => "Regjistri është bllokuar automatikisht për t'i dhënë kohë shërbyesve skllevër për të arritur kryesorin. Ju lutemi provojeni përsëri më vonë.",
'internalerror' => 'Gabim i brendshëm',
'internalerror_info' => 'Gabim i brendshëm: $1',
+'fileappenderrorread' => 'I pamundur leximi "$ 1" gjatë bashkangjitëjes.',
+'fileappenderror' => 'Nuk munda të shtoj "$ 1" tek "$ 2.',
'filecopyerror' => 'Nuk munda të kopjojë skedën "$1" tek "$2".',
'filerenameerror' => 'Nuk munda të ndërrojë emrin e skedës "$1" në "$2".',
'filedeleteerror' => 'Nuk munda të gris skedën "$1".',
@@ -536,13 +570,11 @@ Arsyeja e dhënë është ''$2''.",
'virus-unknownscanner' => 'antivirus i pa njohur:',
# Login and logout pages
-'logouttitle' => 'Përdoruesi doli',
'logouttext' => "'''Keni dalë jashtë {{SITENAME}}-s.'''
Mund të vazhdoni të përdorni {{SITENAME}}-n anonimisht, ose mund të hyni brënda përsëri.",
'welcomecreation' => '== Mirëserdhët, $1! ==
Llogaria juaj është hapur. Mos harroni të ndryshoni parapëlqimet e {{SITENAME}}-s suaj.',
-'loginpagetitle' => 'Hyrje përdoruesi',
'yourname' => 'Fusni nofkën tuaj',
'yourpassword' => 'Fusni fjalëkalimin tuaj',
'yourpasswordagain' => 'Fusni fjalëkalimin përsëri',
@@ -553,6 +585,7 @@ Llogaria juaj është hapur. Mos harroni të ndryshoni parapëlqimet e {{SITENAM
'nav-login-createaccount' => 'Hyni ose hapni një llogari',
'loginprompt' => 'Duhet të pranoni "biskota" për të hyrë brënda në {{SITENAME}}.',
'userlogin' => 'Hyni / hapni llogari',
+'userloginnocreate' => 'Hyni',
'logout' => 'Dalje',
'userlogout' => 'Dalje',
'notloggedin' => 'Nuk keni hyrë brenda',
@@ -564,27 +597,8 @@ Llogaria juaj është hapur. Mos harroni të ndryshoni parapëlqimet e {{SITENAM
'createaccountmail' => 'me email',
'badretype' => 'Fjalëkalimet nuk janë njësoj.',
'userexists' => 'Nofka që kërkuat është në përdorim. Zgjidhni një nofkë tjetër.',
-'youremail' => 'Adresa e email-it*',
-'username' => 'Nofka e përdoruesit:',
-'uid' => 'Nr. i identifikimit:',
-'prefs-memberingroups' => 'Anëtar i {{PLURAL:$1|grupit|grupeve}}:',
-'yourrealname' => 'Emri juaj i vërtetë*',
-'yourlanguage' => 'Ndërfaqja gjuhësore',
-'yourvariant' => 'Varianti',
-'yournick' => 'Nënshkrimi',
-'badsig' => 'Sintaksa e signaturës është e pavlefshme, kontrolloni HTML-in.',
-'badsiglength' => 'Nënshkrimi është tepër i gjatë; duhet të jetë nën $1 {{PLURAL:$1|shkronjë|shkronja}}.',
-'yourgender' => 'Gjinia:',
-'gender-unknown' => 'Pacaktuar',
-'gender-male' => 'Mashkull',
-'gender-female' => 'Femër',
-'prefs-help-gender' => 'Opcionale: përdoret për adresim korrekt në relacion me gjininë nga softwarei.
-Kjo informatë del publike.',
-'email' => 'Email',
-'prefs-help-realname' => '* Emri i vërtetë (opsion): Për të përmendur emrin tuaj si kontribuues në varësi nga puna juaj këtu.',
'loginerror' => 'Gabim hyrje',
-'prefs-help-email' => "Posta elektronike është zgjedhore, por ju mundëson që fjalëkalimi i ri të ju dërgohet nëse e harroni atë. Gjithashtu mund të zgjidhni nëse doni të tjerët t'ju shkruajnë ose jo përmes faqes suaj të diskutimit pa patur nevojë të zbulojnë identitetin tuaj.",
-'prefs-help-email-required' => 'Kërkohet e-mail adresa .',
+'createaccounterror' => 'Nuk mund të hapni një llogari: $ 1',
'nocookiesnew' => 'Llogaria e përdoruesit u hap, por nuk keni hyrë brenda akoma. {{SITENAME}} përdor "biskota" për të futur brenda përdoruesit. Prandaj, duhet të pranoni biskota dhe të provoni përsëri me nofkën dhe fjalëkalimin tuaj.',
'nocookieslogin' => '{{SITENAME}} përdor "biskota" për të futur brenda përdoruesit. Prandaj, duhet të pranoni "biskota" dhe të provoni përsëri.',
'noname' => 'Nuk keni dhënë një emër të saktë.',
@@ -594,15 +608,18 @@ Kjo informatë del publike.',
Kontrolloni shkrimin ose [[Special:UserLogin/signup|hapni një llogari të re]].',
'nosuchusershort' => 'Nuk ka asnjë përdorues me emrin "<nowiki>$1</nowiki>".',
'nouserspecified' => 'Ju duhet të jepni një nofkë',
+'login-userblocked' => 'Ky përdorues është bllokuar. Identifikimi nuk lejohet.',
'wrongpassword' => 'Fjalëkalimi që futët nuk është i saktë. Provoni përsëri!',
'wrongpasswordempty' => 'Fjalëkalimi juaj ishte bosh. Ju lutemi provoni përsëri.',
'passwordtooshort' => 'Fjalëkalimi juaj është i pavlefshëm ose tepër i shkurtër. Ai duhet të ketë së paku {{PLURAL:$1|1 shkronjë|$1 shkronja}} dhe duhet të jetë i ndryshëm nga emri i përdoruesit.',
+'password-name-match' => 'Fjalëkalimi juaj duhet të jetë i ndryshëm nga emri juaj.',
'mailmypassword' => 'Më dërgo një fjalëkalim të ri tek adresa ime',
'passwordremindertitle' => 'Kërkesë për fjalëkalim të ri tek {{SITENAME}}',
'passwordremindertext' => 'Dikush (sigurisht ju, nga adresa IP adresa $1) kërkoi një fjalëkalim të ri për hyrje tek {{SITENAME}} ($4). U krijua fjalëkalimi i përkohshëm për përdoruesin "$2" dhe u dërgua tek "$3". Nëse ky ishte tentimi juaj duhet që të kyçeni dhe ndërroni fjalëkalimin tani. Fjalëkalimi juaj i përkohshëm do të skadojë {{PLURAL:$5|një dite|$5 ditësh}}.
Nëse ndokush tjetër ka bërë këtë kërkesë, ose nëse ju kujtohet fjalëkalimin dhe nuk doni që ta ndërroni, mund të e injoroni këtë porosi dhe të vazhdoni të përdorni fjalëkalimin e vjetër.',
'noemail' => 'Regjistri nuk ka adresë për përdoruesin "$1".',
+'noemailcreate' => 'Ju duhet të sigurojë një adresë e e-mailit të saktë.',
'passwordsent' => 'Një fjalëkalim i ri është dërguar tek adresa e regjistruar për "$1". Provojeni përsëri hyrjen mbasi ta keni marrë fjalëkalimin.',
'blocked-mailpassword' => 'IP adresa juaj është bllokuar , si e tillë nuk lejohet të përdor funksionin pë rikthim të fjalkalimit , në mënyrë që të parandalohet abuzimi.',
'eauthentsent' => 'Një eMail konfirmues u dërgua te adresa e dhënë.
@@ -621,8 +638,10 @@ Ju lutemi ndiqni këshillat në eMailin e pranuar.',
'createaccount-title' => 'Hapja e llogarive për {{SITENAME}}',
'createaccount-text' => 'Dikush ka përdorur adresën tuaj për të hapur një llogari tek {{SITENAME}} ($4) të quajtur "$2" me fjalëkalimin "$3".
Duhet të hyni brenda dhe të ndërroni fjalëkalimin tani nëse ky person jeni ju. Përndryshe shpërfilleni këtë mesazh.',
+'usernamehasherror' => 'Emri i përdoruesit nuk mund të përmbajë karaktere',
'login-throttled' => 'Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para tentimit përsëri.',
'loginlanguagelabel' => 'Gjuha: $1',
+'suspicious-userlogout' => 'Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy.',
# Password reset dialog
'resetpass' => 'Ndrysho fjalëkalimin',
@@ -634,11 +653,10 @@ Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
'retypenew' => 'I riu përsëri',
'resetpass_submit' => 'Ndrysho fjalëkalimin dhe hyni brenda',
'resetpass_success' => 'Fjalëkalimi juaj është ndryshuar me sukses! Mund të hyni brenda...',
-'resetpass_bad_temporary' => 'Fjalëkalim i përkohshëm është i pavlefshëm.
-Ndoshta e keni ndryshuar fjalëkalimin ose keni kërkuar një fjalëkalim të përkohshëm të ri.',
'resetpass_forbidden' => 'Fjalëkalimet nuk mund të ndryshohen',
'resetpass-no-info' => 'Duhet të jeni i kyçur që të keni qasje direkte në këtë faqe.',
'resetpass-submit-loggedin' => 'Ndrysho fjalëkalimin',
+'resetpass-submit-cancel' => 'Anulo',
'resetpass-wrong-oldpass' => 'Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. Ndoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.',
'resetpass-temp-password' => 'Fjalëkalimi i përkohshëm:',
@@ -716,7 +734,6 @@ Ju lutemi përfshini këto detaje në të gjitha kërkesat që i bëni.',
'blockededitsource' => "Më poshtë tregohet teksti i '''redaktimeve tuaja''' të '''$1''':",
'whitelistedittitle' => 'Duhet të hyni brënda për të redaktuar',
'whitelistedittext' => 'Duhet të $1 për të redaktuar artikuj.',
-'confirmedittitle' => 'Nevojitet adresë email-i e vërtetuar për të redaktuar',
'confirmedittext' => 'Ju duhet së pari ta vërtetoni e-mail adresen para se të redaktoni. Ju lutem plotësoni dhe vërtetoni e-mailin tuaj te [[Special:Preferences|parapëlqimet]] e juaja.',
'nosuchsectiontitle' => 'Asnjë seksion i tillë nuk ekziston',
'nosuchsectiontext' => "Keni provuar të redaktoni një seksion që s'ekziston.",
@@ -740,8 +757,12 @@ Ju mundeni [[Special:Search/{{PAGENAME}}|me kërkue këtë titull]] në faqe tje
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} me kërkue në regjistrat tematikisht të afërm],
apo [{{fullurl:{{FULLPAGENAME}}|action=edit}} me redaktue këtë faqe]</span>.',
'userpage-userdoesnotexist' => 'Llogaria e përdoruesit "$1" nuk është hapur. Ju lutem mendohuni mirë nëse dëshironi të krijoni/redaktoni këtë faqe.',
+'userpage-userdoesnotexist-view' => 'Profili i përdoruesit "$ 1" nuk është i regjistruar.',
+'blocked-notice-logextract' => 'Ky përdorues është bllokuar aktualisht.
+Regjistri i bllokuar hyrjen e fundit është më poshtë, për referencë:',
'clearyourcache' => "'''Shënim:''' Pasi të ruani parapëlqimet ose pasi të kryeni ndryshimet, duhet të pastroni ''cache''-në e shfletuesit tuaj për të parë ndryshimet: për '''Mozilla/Safari/Konqueror''' shtypni ''Ctrl+Shift+Reload'' (ose ''ctrl+shift+r''), për '''IE''' ''Ctrl+f5'', '''Opera''': ''F5''.",
-'usercssjsyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapamjen' për të provuar ndryshimet tuaja të faqeve css/js përpara se të kryeni ndryshimet.",
+'usercssyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapamjen' për të provuar ndryshimet tuaja të faqeve css/js përpara se të kryeni ndryshimet.",
+'userjsyoucanpreview' => "'''Këshillë:''' Përdorni butonin 'Trego parapamjen' për të provuar ndryshimet tuaja të faqeve css/js përpara se të kryeni ndryshimet.",
'usercsspreview' => "'''Vini re! Kjo është vetëm një parapamje e faqes suaj CSS. Akoma nuk është ruajtur!'''",
'userjspreview' => "'''Vini re se kjo është vetëm një provë ose parapamje e faqes tuaj JavaScript, ajo nuk është ruajtur akoma!'''",
'userinvalidcssjstitle' => "'''Kujdes:''' Nuk ka pamje të quajtur \"\$1\". Vini re se faqet .css dhe .js përdorin titull me gërma të vogla, p.sh. {{ns:user}}:Foo/monobook.css, jo {{ns:user}}:Foo/Monobook.css.",
@@ -788,9 +809,9 @@ Administruesi që ka bërë mbylljen ka dhënë këtë sqarim: $1.",
'semiprotectedpagewarning' => "'''Shënim:''' Redaktimi i kësaj faqeje mund të bëhet vetëm nga përdorues të regjistruar.",
'cascadeprotectedwarning' => "'''Vini re:''' Kjo faqe është e mbrojtur dhe vetëm përdoruesit me privilegje administrative mund ta redaktojnë pasi është përfshirë në mbrotjen \"ujëvarë\" të {{PLURAL:\$1|faqes së|faqeve të}} mëposhtme:",
'titleprotectedwarning' => "'''VINI RE: Kjo faqe është e mbrojtur dhe vetëm disa përdorues mund ta krijojnë.'''",
-'templatesused' => 'Stampa të përdorura në këtë faqe:',
-'templatesusedpreview' => 'Stampa të përdorur në ketë parapamje:',
-'templatesusedsection' => 'Stampat e përdorura në këtë seksion:',
+'templatesused' => '{{PLURAL:$1|Stamp|Stampa}} të përdorura në këtë faqe:',
+'templatesusedpreview' => '{{PLURAL:$1|Stamp|Stampa}} të përdorë në këtë parapâmje:',
+'templatesusedsection' => '{{PLURAL:$1|Stamp|Stampa}} e përdoruna në këtë sekcion:',
'template-protected' => '(mbrojtur)',
'template-semiprotected' => '(gjysëm-mbrojtur)',
'hiddencategories' => 'Kjo faqe është nën {{PLURAL:$1|një kategori të fshehur|$1 kategori të fshehura}}:',
@@ -801,12 +822,11 @@ Administruesi që ka bërë mbylljen ka dhënë këtë sqarim: $1.",
'permissionserrors' => 'Gabime privilegjesh',
'permissionserrorstext' => 'Nuk keni leje për të bërë këtë veprim për {{PLURAL:$1|këtë arsye|këto arsye}}:',
'permissionserrorstext-withaction' => 'Ju nuk keni leje për $2, për {{PLURAL:$1|këtë arsye|këto arsye}}:',
-'recreate-deleted-warn' => "'''Vini re: Po rikrijoni një faqe që është grisur më parë.'''
+'recreate-moveddeleted-warn' => "'''Vini re: Po rikrijoni një faqe që është grisur më parë.'''
Mendohuni nëse dëshironi të vazhdoni me veprimin tuaj në këtë faqe.
Regjistri i grisjes për këtë faqe jepet më poshtë:",
-'deleted-notice' => 'Kjo faqe është grisur. Të dhënat e grisjes për këtë faqe gjenden më poshtë, për referencë.',
-'deletelog-fulllog' => 'Shih të dhënat e plota',
+'moveddeleted-notice' => 'Kjo faqe është grisur. Të dhënat e grisjes për këtë faqe gjenden më poshtë, për referencë.',
'edit-gone-missing' => 'Faqja nuk mund t freskohet.
Duket se është grisur.',
'edit-conflict' => 'Konflikt në redaktim.',
@@ -844,7 +864,7 @@ Arsyeja e dhënë nga $3 është ''$2''.",
'currentrev' => 'Versioni i tanishëm',
'currentrev-asof' => 'Versioni momental që nga $1',
'revisionasof' => 'Versioni i $1',
-'revision-info' => 'Versioni më $1 nga $2', # Additionally available: $3: revision id
+'revision-info' => 'Versioni më $1 nga $2',
'previousrevision' => '← Version më i vjetër',
'nextrevision' => 'Version më i ri →',
'currentrevisionlink' => 'shikoni versionin e tanishëm',
@@ -856,7 +876,6 @@ Arsyeja e dhënë nga $3 është ''$2''.",
'histlegend' => 'Legjenda: (tani) = ndryshimet me versionin e tanishëm,
(fund) = ndryshimet me versionin e parardhshëm, V = redaktim i vogël',
'history-fieldset-title' => 'Shfleto historikun',
-'deletedrev' => '[u gris]',
'histfirst' => 'Së pari',
'histlast' => 'Së fundmi',
'historysize' => '({{PLURAL:$1|1 B|$1 B}})',
@@ -865,54 +884,58 @@ Arsyeja e dhënë nga $3 është ''$2''.",
# Revision feed
'history-feed-title' => 'Historiku i versioneve',
'history-feed-description' => 'Historiku i versioneve për këtë faqe në wiki',
-'history-feed-item-nocomment' => '$1 tek $2', # user at time
+'history-feed-item-nocomment' => '$1 tek $2',
'history-feed-empty' => 'Faqja që kërkuat nuk ekziston. Ajo mund të jetë grisur nga wiki ose mund të jetë zhvendosur nën një emër tjetër. Mund të provoni ta gjeni duke e [[Special:Search|kërkuar]].',
# Revision deletion
-'rev-deleted-comment' => '(kometi u largua)',
-'rev-deleted-user' => '(përdoruesi u largua)',
-'rev-deleted-event' => '(veprimi në regjistër është hequr)',
-'rev-deleted-text-permission' => 'Ky version i faqes është shlyer nga arkivi publik i faqes.
-Shiko tek [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjendet atje më shumë informacion rreth kësaj faqeje.',
-'rev-deleted-text-view' => 'Ky version i faqes është shlyer nga arkivi publik i faqes. Ju si Administrator mund ta shikoni akoma këtë.
-Shiko tek [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjenden atje më shumë informacione rreth kësaj.',
-'rev-delundel' => 'trego/fshih',
-'revisiondelete' => 'Shlyj/Reparo versionet',
-'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
-'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
-'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
-'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
-'revdelete-toomanytargets-title' => 'Shumë shënjestra',
-'revdelete-selected' => "'''{{PLURAL:$2|Versioni i zgjedhur i|Versionet e zgjedhura të}} [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:'''",
-'revdelete-text' => "'''Përmbajtja dhe pjesët e tjera nuk janë të dukshme për të gjithë, por figurojnë në historikun e versioneve.''' Administratorët munden përmbajtjen e larguar ta shikojnë dhe restaurojnë, përveç në rastet kur një gjë e tillë është ndaluar ekstra.",
-'revdelete-legend' => 'Vendosni kufizimet për versionin:',
-'revdelete-hide-text' => 'Fshihe tekstin e versionit',
-'revdelete-hide-name' => 'Fshihe veprimin dhe shënjestrën',
-'revdelete-hide-comment' => 'fshih komentin e redaktimit',
-'revdelete-hide-user' => 'Fshihe emrin/IP-në të redaktuesit',
-'revdelete-hide-restricted' => 'Këto përkufizme vlejnë edhe për Admintratorët (jo vetëm për përdoruesit "normal")',
-'revdelete-suppress' => 'Ndalo të dhëna nga administrues si dhe të tjerë',
-'revdelete-hide-image' => 'Fshih përmbajtjen skedare',
-'revdelete-unsuppress' => 'Hiq kufizimet nga versionet e restauruara',
-'revdelete-log' => 'Arsyeja:',
-'revdelete-submit' => 'Apliko te versionet e zgjedhura',
-'revdelete-logentry' => 'Pamja e versionit u ndryshua për [[$1]]',
-'logdelete-logentry' => 'u ndryshua dukshmëria e ngjarjes së [[$1]]',
-'revdelete-success' => "'''Dukshmëria e versioneve u vendos me sukses.'''",
-'logdelete-success' => "'''Dukshmëria e regjistrave u vendos me sukses.'''",
-'revdel-restore' => 'Ndrysho dukshmërinë',
-'pagehist' => 'Historiku i faqes',
-'deletedhist' => 'Historiku i grisjeve',
-'revdelete-content' => 'përmbajtja',
-'revdelete-summary' => 'përmbledhja redaktimit',
-'revdelete-uname' => 'përdoruesi',
-'revdelete-restricted' => 'u vendosën kufizime për administruesit',
-'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
-'revdelete-hid' => 'u fsheh $1',
-'revdelete-unhid' => 'u tregua $1',
-'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|version|versione}}',
-'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|ngjarje|ngjarje}}',
+'rev-deleted-comment' => '(kometi u largua)',
+'rev-deleted-user' => '(përdoruesi u largua)',
+'rev-deleted-event' => '(veprimi në regjistër është hequr)',
+'rev-deleted-text-permission' => 'Ky version i faqes është shlyer nga arkivi publik i faqes.
+Shiko tek [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjendet atje më shumë informacion rreth kësaj faqeje.',
+'rev-deleted-text-view' => 'Ky version i faqes është shlyer nga arkivi publik i faqes. Ju si Administrator mund ta shikoni akoma këtë.
+Shiko tek [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} regjistri i grisjeve], ndoshta gjenden atje më shumë informacione rreth kësaj.',
+'rev-delundel' => 'trego/fshih',
+'rev-showdeleted' => 'Trego',
+'revisiondelete' => 'Shlyj/Reparo versionet',
+'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
+'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
+'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
+'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
+'revdelete-no-file' => 'Skeda e dhënë nuk ekziston.',
+'revdelete-selected' => "'''{{PLURAL:$2|Versioni i zgjedhur i|Versionet e zgjedhura të}} [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:'''",
+'revdelete-text' => "'''Përmbajtja dhe pjesët e tjera nuk janë të dukshme për të gjithë, por figurojnë në historikun e versioneve.''' Administratorët munden përmbajtjen e larguar ta shikojnë dhe restaurojnë, përveç në rastet kur një gjë e tillë është ndaluar ekstra.",
+'revdelete-legend' => 'Vendosni kufizimet për versionin:',
+'revdelete-hide-text' => 'Fshihe tekstin e versionit',
+'revdelete-hide-image' => 'Fshih përmbajtjen skedare',
+'revdelete-hide-name' => 'Fshihe veprimin dhe shënjestrën',
+'revdelete-hide-comment' => 'fshih komentin e redaktimit',
+'revdelete-hide-user' => 'Fshihe emrin/IP-në të redaktuesit',
+'revdelete-hide-restricted' => 'Këto përkufizme vlejnë edhe për Admintratorët (jo vetëm për përdoruesit "normal")',
+'revdelete-radio-set' => 'Po',
+'revdelete-radio-unset' => 'Jo',
+'revdelete-suppress' => 'Ndalo të dhëna nga administrues si dhe të tjerë',
+'revdelete-unsuppress' => 'Hiq kufizimet nga versionet e restauruara',
+'revdelete-log' => 'Arsyeja:',
+'revdelete-submit' => 'Apliko te versionet e zgjedhura',
+'revdelete-logentry' => 'Pamja e versionit u ndryshua për [[$1]]',
+'logdelete-logentry' => 'u ndryshua dukshmëria e ngjarjes së [[$1]]',
+'revdelete-success' => "'''Dukshmëria e versioneve u vendos me sukses.'''",
+'logdelete-success' => "'''Dukshmëria e regjistrave u vendos me sukses.'''",
+'revdel-restore' => 'Ndrysho dukshmërinë',
+'pagehist' => 'Historiku i faqes',
+'deletedhist' => 'Historiku i grisjeve',
+'revdelete-content' => 'përmbajtja',
+'revdelete-summary' => 'përmbledhja redaktimit',
+'revdelete-uname' => 'përdoruesi',
+'revdelete-restricted' => 'u vendosën kufizime për administruesit',
+'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
+'revdelete-hid' => 'u fsheh $1',
+'revdelete-unhid' => 'u tregua $1',
+'revdelete-log-message' => '$1 për $2 {{PLURAL:$2|version|versione}}',
+'logdelete-log-message' => '$1 për $2 {{PLURAL:$2|ngjarje|ngjarje}}',
+'revdelete-edit-reasonlist' => 'Arsye grisjeje për redaktimet',
# Suppression log
'suppressionlog' => 'Regjistri i ndalimeve',
@@ -953,36 +976,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'difference' => '(Ndryshime midis versioneve)',
'lineno' => 'Rreshti $1:',
'compareselectedversions' => 'Krahasoni versionet e zgjedhura',
-'visualcomparison' => 'Krahasim vizual',
-'wikicodecomparison' => 'Krahasim i wiki tekstit',
'editundo' => 'ktheje',
'diff-multi' => '({{PLURAL:$1|Një redaktim ndërmjet nuk është|$1 redaktime ndërmjet nuk janë}} treguar.)',
-'diff-movedto' => 'bartur tek $1',
-'diff-styleadded' => 'stili $1 u vendos',
-'diff-added' => '$1 u vendos',
-'diff-changedto' => 'u ndryshua në $1',
-'diff-movedoutof' => 'u largua nga $1',
-'diff-styleremoved' => 'stili $1 u largua',
-'diff-removed' => '$1 u largua',
-'diff-changedfrom' => 'ndryshuar nga $1',
-'diff-src' => 'burimi',
-'diff-withdestination' => 'me përcaktim $1',
-'diff-width' => 'gjerësia',
-'diff-height' => 'lartësia',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''citat'''",
-'diff-div' => "'''ndarje'''",
-'diff-table' => "'''tabelë'''",
-'diff-tbody' => "'''përmbajtje tabele'''",
-'diff-tr' => "'''rresht'''",
-'diff-th' => "'''kokë'''",
-'diff-dl' => "'''listë përcaktimi'''",
-'diff-dt' => "'''term përcaktimi'''",
-'diff-form' => "'''formë'''",
-'diff-img' => "'''figurë'''",
-'diff-a' => "'''nyje'''",
-'diff-font' => "'''font'''",
-'diff-del' => "'''grisur'''",
# Search results
'searchresults' => 'Rezultatet e kërkimit',
@@ -990,17 +985,14 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'searchresulttext' => 'Për më shumë informacion rreth kërkimit në {{SITENAME}} shikoni [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Kërkuat për "[[$1]]" ([[Special:Prefixindex/$1|të gjitha faqet që fillojnë me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|të gjitha faqet që lidhen me"$1"]])',
'searchsubtitleinvalid' => 'Kërkim për "$1"',
-'noexactmatch' => "'''Nuk ka faqe të emëruar \"\$1\".'''
-Ju mund [[:\$1|të e krijoni këtë faqe]].",
-'noexactmatch-nocreate' => "'''Faqja e titulluar \"\$1\" nuk ekziston'''",
'toomanymatches' => 'Ky kërkim ka shumë përfundime, provoni një pyetje tjetër më përcaktuese',
'titlematches' => 'Tituj faqesh që përputhen',
'notitlematches' => 'Nuk ka asnjë titull faqeje që përputhet',
'textmatches' => 'Tekst faqesh që përputhet',
'notextmatches' => 'Nuk ka asnjë tekst faqeje që përputhet',
-'prevn' => '$1 më para',
-'nextn' => '$1 më pas',
-'viewprevnext' => 'Shikoni ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} më para',
+'nextn' => '{{PLURAL:$1|$1}} më pas',
+'viewprevnext' => 'Shikoni ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Parazgjedhjet e kërkimit',
'searchmenu-exists' => "'''Në këtë wiki kjo faqe është emëruar \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Hapë faqen \"[[:\$1]]\" në këtë wiki!'''",
@@ -1016,7 +1008,6 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
'searchprofile-images-tooltip' => 'Kërko skedarë',
'searchprofile-everything-tooltip' => 'Kërko gjithë përmbajtjen (duke përfshirë edhe faqet e diskutimit)',
'searchprofile-advanced-tooltip' => 'Kërkimi në hapësina',
-'prefs-search-nscustom' => 'Kërko hapësirën e zakonshme:',
'search-result-size' => '$1 ({{PLURAL:$2|1 fjalë|$2 fjalë}})',
'search-result-score' => 'Përkatësia: $1%',
'search-redirect' => '(përcjellim $1)',
@@ -1033,7 +1024,6 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
'searchall' => 'të gjitha',
'showingresults' => "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
'showingresultsnum' => "Më poshtë tregohen {{PLURAL:$3|'''1''' përfundim|'''$3''' përfundime}} duke filluar nga #'''$2'''.",
-'showingresultstotal' => "Duke treguar më poshtë {{PLURAL:$4|rezultatin '''$1''' nga '''$3'''|rezultatet '''$1 - $2''' nga '''$3'''}}",
'nonefound' => '<strong>Shënim</strong>: Kërkimet pa rezultate ndodhin kur kërkoni për fjalë që rastisen shpesh si "ke" dhe "nga", të cilat nuk janë të futura në regjistër, ose duke dhënë më shumë se një fjalë (vetëm faqet që i kanë të gjitha ato fjalë do të tregohen si rezultate).',
'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
'powersearch' => 'Kërko',
@@ -1041,93 +1031,112 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
'powersearch-ns' => 'Kërkim në hapësira:',
'powersearch-redir' => 'Trego përcjellimet',
'powersearch-field' => 'Kërko për',
+'powersearch-togglelabel' => 'Zgjedh:',
+'powersearch-toggleall' => 'Tâna',
+'powersearch-togglenone' => 'Asnji',
'search-external' => 'Kërkim i jashtëm',
'searchdisabled' => '<p>Kërkimi me tekst të plotë është bllokuar tani për tani ngaqë shërbyesi është shumë i ngarkuar; shpresojmë ta nxjerrim prapë në gjendje normale pas disa punimeve. Deri atëherë mund të përdorni Google-in për kërkime:</p>',
+# Quickbar
+'qbsettings' => 'Vendime të shpejta',
+'qbsettings-none' => 'Asnjë',
+'qbsettings-fixedleft' => 'Lidhur majtas',
+'qbsettings-fixedright' => 'Lidhur djathtas',
+'qbsettings-floatingleft' => 'Pezull majtas',
+'qbsettings-floatingright' => 'Pezull djathtas',
+
# Preferences page
-'preferences' => 'Parapëlqimet',
-'mypreferences' => 'Parapëlqimet',
-'prefs-edits' => 'Numri i redaktimeve:',
-'prefsnologin' => 'Nuk keni hyrë brenda',
-'prefsnologintext' => 'Duhet të jeni <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} të kyçur]</span> për të caktuar parapëlqimet e përdoruesit.',
-'prefsreset' => 'Parapëlqimet janë rikthyer siç ishin.',
-'qbsettings' => 'Vendime të shpejta',
-'qbsettings-none' => 'Asnjë',
-'qbsettings-fixedleft' => 'Lidhur majtas',
-'qbsettings-fixedright' => 'Lidhur djathtas',
-'qbsettings-floatingleft' => 'Pezull majtas',
-'qbsettings-floatingright' => 'Pezull djathtas',
-'changepassword' => 'Ndërroni fjalëkalimin',
-'skin' => 'Pamja',
-'skin-preview' => 'Parapamje',
-'math' => 'Formula',
-'dateformat' => 'Data',
-'datedefault' => 'Parazgjedhje',
-'datetime' => 'Data dhe Ora',
-'math_failure' => 'Nuk e kuptoj',
-'math_unknown_error' => 'gabim i panjohur',
-'math_unknown_function' => 'funksion i panjohur',
-'math_lexing_error' => 'gabim leximi',
-'math_syntax_error' => 'gabim sintakse',
-'math_image_error' => 'Konversioni PNG dështoi; kontrolloni për ndonjë gabim instalimi të latex-it, dvips-it, gs-it, dhe convert-it.',
-'math_bad_tmpdir' => 'Nuk munda të shkruaj ose krijoj dosjen e përkohshme për matematikë',
-'math_bad_output' => 'Nuk munda të shkruaj ose të krijoj prodhimin matematik në dosjen',
-'math_notexvc' => 'Mungon zbatuesi texvc; ju lutem shikoni math/README për konfigurimin.',
-'prefs-personal' => 'Përdoruesi',
-'prefs-rc' => 'Ndryshime së fundmi',
-'prefs-watchlist' => 'Lista mbikqyrëse',
-'prefs-watchlist-days' => 'Numri i ditëve të treguara tek lista mbikqyrëse:',
-'prefs-watchlist-days-max' => '(maksimum 7 ditë)',
-'prefs-watchlist-edits' => 'Numri i redaktimeve të treguara tek lista mbikqyrëse e zgjeruar:',
-'prefs-watchlist-edits-max' => '(numri maksimal: 1000)',
-'prefs-misc' => 'Të ndryshme',
-'prefs-resetpass' => 'Ndrysho fjalëkalimin',
-'saveprefs' => 'Ruaj parapëlqimet',
-'resetprefs' => 'Rikthe parapëlqimet',
-'restoreprefs' => 'Rikthe të gjitha të dhënat e mëparshme',
-'textboxsize' => 'Redaktimi',
-'prefs-edit-boxsize' => 'Madhësia e dritares së redaktimit.',
-'rows' => 'Rreshta:',
-'columns' => 'Kolona:',
-'searchresultshead' => 'Kërkimi',
-'resultsperpage' => 'Sa përputhje të tregohen për faqe:',
-'contextlines' => 'Sa rreshta të tregohen për përputhje:',
-'contextchars' => 'Sa germa të tregohen për çdo rresht:',
-'stub-threshold' => 'Kufiri për formatin e <a href="#" class="stub">lidhjeve cung</a> (B):',
-'recentchangesdays' => 'Numri i ditëve të treguara në ndryshime së fundmi:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dit|ditë}})',
-'recentchangescount' => 'Numri i titujve në ndryshime së fundmi',
-'savedprefs' => 'Parapëlqimet tuaja janë ruajtur.',
-'timezonelegend' => 'Zona kohore:',
-'timezonetext' => 'Fusni numrin e orëve prej të cilave ndryshon ora lokale nga ajo e shërbyesit (UTC).',
-'localtime' => 'Ora lokale:',
-'timezoneselect' => 'Zona kohore:',
-'timezoneuseserverdefault' => 'Përdor serverin e parazgjedhur',
-'timezoneuseoffset' => 'Tjera (zgjidh rajonin)',
-'timezoneoffset' => 'Ofset¹:',
-'servertime' => 'Ora e shërbyesit:',
-'guesstimezone' => 'Gjeje nga shfletuesi',
-'timezoneregion-africa' => 'Afrikë',
-'timezoneregion-america' => 'Amerikë',
-'timezoneregion-antarctica' => 'Antarktik',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azi',
-'timezoneregion-atlantic' => 'Oqeani Atlantik',
-'timezoneregion-australia' => 'Australi',
-'timezoneregion-europe' => 'Europë',
-'timezoneregion-indian' => 'Oqeani Indian',
-'timezoneregion-pacific' => 'Oqeani Paqësor',
-'allowemail' => 'Lejo përdoruesit të më dërgojnë email',
-'prefs-searchoptions' => 'Mundësi kërkimi',
-'prefs-namespaces' => 'Hapësirat',
-'defaultns' => 'Kërko automatikisht vetëm në këto hapësira:',
-'default' => 'parazgjedhje',
-'files' => 'Figura',
-'prefs-custom-css' => 'CSS i përpunuem',
-'prefs-custom-js' => 'JavaScripti i përpunuem',
+'preferences' => 'Parapëlqimet',
+'mypreferences' => 'Parapëlqimet',
+'prefs-edits' => 'Numri i redaktimeve:',
+'prefsnologin' => 'Nuk keni hyrë brenda',
+'prefsnologintext' => 'Duhet të jeni <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} të kyçur]</span> për të caktuar parapëlqimet e përdoruesit.',
+'changepassword' => 'Ndërroni fjalëkalimin',
+'prefs-skin' => 'Pamja',
+'skin-preview' => 'Parapamje',
+'prefs-math' => 'Formula',
+'datedefault' => 'Parazgjedhje',
+'prefs-datetime' => 'Data dhe Ora',
+'prefs-personal' => 'Përdoruesi',
+'prefs-rc' => 'Ndryshime së fundmi',
+'prefs-watchlist' => 'Lista mbikqyrëse',
+'prefs-watchlist-days' => 'Numri i ditëve të treguara tek lista mbikqyrëse:',
+'prefs-watchlist-days-max' => '(maksimum 7 ditë)',
+'prefs-watchlist-edits' => 'Numri i redaktimeve të treguara tek lista mbikqyrëse e zgjeruar:',
+'prefs-watchlist-edits-max' => '(numri maksimal: 1000)',
+'prefs-misc' => 'Të ndryshme',
+'prefs-resetpass' => 'Ndrysho fjalëkalimin',
+'saveprefs' => 'Ruaj parapëlqimet',
+'resetprefs' => 'Rikthe parapëlqimet',
+'restoreprefs' => 'Rikthe të gjitha të dhënat e mëparshme',
+'prefs-editing' => 'Redaktimi',
+'prefs-edit-boxsize' => 'Madhësia e dritares së redaktimit.',
+'rows' => 'Rreshta:',
+'columns' => 'Kolona:',
+'searchresultshead' => 'Kërkimi',
+'resultsperpage' => 'Sa përputhje të tregohen për faqe:',
+'contextlines' => 'Sa rreshta të tregohen për përputhje:',
+'contextchars' => 'Sa germa të tregohen për çdo rresht:',
+'stub-threshold' => 'Kufiri për formatin e <a href="#" class="stub">lidhjeve cung</a> (B):',
+'recentchangesdays' => 'Numri i ditëve të treguara në ndryshime së fundmi:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dit|ditë}})',
+'recentchangescount' => 'Numri i titujve në ndryshime së fundmi:',
+'prefs-help-recentchangescount' => 'Kjo përfshin ndryshimet e freskëta, historikun e faqes dhe regjistrat.',
+'savedprefs' => 'Parapëlqimet tuaja janë ruajtur.',
+'timezonelegend' => 'Zona kohore:',
+'localtime' => 'Ora lokale:',
+'timezoneuseserverdefault' => 'Përdor serverin e parazgjedhur',
+'timezoneuseoffset' => 'Tjera (zgjidh rajonin)',
+'timezoneoffset' => 'Ofset¹:',
+'servertime' => 'Ora e shërbyesit:',
+'guesstimezone' => 'Gjeje nga shfletuesi',
+'timezoneregion-africa' => 'Afrikë',
+'timezoneregion-america' => 'Amerikë',
+'timezoneregion-antarctica' => 'Antarktik',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azi',
+'timezoneregion-atlantic' => 'Oqeani Atlantik',
+'timezoneregion-australia' => 'Australi',
+'timezoneregion-europe' => 'Europë',
+'timezoneregion-indian' => 'Oqeani Indian',
+'timezoneregion-pacific' => 'Oqeani Paqësor',
+'allowemail' => 'Lejo përdoruesit të më dërgojnë email',
+'prefs-searchoptions' => 'Mundësi kërkimi',
+'prefs-namespaces' => 'Hapësirat',
+'defaultns' => 'Kërko automatikisht vetëm në këto hapësira:',
+'default' => 'parazgjedhje',
+'prefs-files' => 'Figura',
+'prefs-custom-css' => 'CSS i përpunuem',
+'prefs-custom-js' => 'JavaScripti i përpunuem',
+'prefs-reset-intro' => 'Mundeni me përdorë këtë faqe për me i kthy parapëlqimet tueja në ato të paracaktuemet e faqes.
+Kjo nuk mundet me u zhbâ.',
+'prefs-emailconfirm-label' => 'Konfirmimi i emailit:',
+'youremail' => 'Adresa e email-it*',
+'username' => 'Nofka e përdoruesit:',
+'uid' => 'Nr. i identifikimit:',
+'prefs-memberingroups' => 'Anëtar i {{PLURAL:$1|grupit|grupeve}}:',
+'yourrealname' => 'Emri juaj i vërtetë*',
+'yourlanguage' => 'Ndërfaqja gjuhësore',
+'yourvariant' => 'Varianti',
+'yournick' => 'Nënshkrimi',
+'badsig' => 'Sintaksa e signaturës është e pavlefshme, kontrolloni HTML-in.',
+'badsiglength' => 'Nënshkrimi është tepër i gjatë; duhet të jetë nën $1 {{PLURAL:$1|shkronjë|shkronja}}.',
+'yourgender' => 'Gjinia:',
+'gender-unknown' => 'Pacaktuar',
+'gender-male' => 'Mashkull',
+'gender-female' => 'Femër',
+'prefs-help-gender' => 'Opcionale: përdoret për adresim korrekt në relacion me gjininë nga softwarei.
+Kjo informatë del publike.',
+'email' => 'Email',
+'prefs-help-realname' => '* Emri i vërtetë (opsion): Për të përmendur emrin tuaj si kontribuues në varësi nga puna juaj këtu.',
+'prefs-help-email' => "Posta elektronike është zgjedhore, por ju mundëson që fjalëkalimi i ri të ju dërgohet nëse e harroni atë. Gjithashtu mund të zgjidhni nëse doni të tjerët t'ju shkruajnë ose jo përmes faqes suaj të diskutimit pa patur nevojë të zbulojnë identitetin tuaj.",
+'prefs-help-email-required' => 'Kërkohet e-mail adresa .',
+'prefs-info' => 'Informatat bazike',
+'prefs-i18n' => 'Internacionalizimi',
+'prefs-signature' => 'Firma',
# User rights
-'userrights' => 'Ndrysho privilegjet e përdoruesve', # Not used as normal message but as header for the special page itself
+'userrights' => 'Ndrysho privilegjet e përdoruesve',
'userrights-lookup-user' => 'Ndrysho grupet e përdoruesit',
'userrights-user-editname' => 'Fusni emrin e përdoruesit:',
'editusergroup' => 'Redakto grupet e përdoruesve',
@@ -1200,6 +1209,8 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
'right-editprotected' => 'Redakto faqet e mbrojtura (pa ndryshuar mbrojtjen)',
'right-editinterface' => 'Ndrysho parapamjen e përdoruesit',
'right-editusercssjs' => 'Redakto skedat CSS dhe JS të përdoruesve tjerë',
+'right-editusercss' => 'Redakto skedat CSS të përdoruesve tjerë',
+'right-edituserjs' => 'Redakto skedat JS të përdoruesve tjerë',
'right-noratelimit' => 'Mos u prek nga kufizimet e vlerësimit',
'right-import' => 'Importo faqe nga wiki tjera',
'right-unwatchedpages' => 'Shiko listën e faqeve të pa vëzhguara',
@@ -1248,6 +1259,7 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
'recentchanges-legend' => 'Zgjedhjet e ndryshimeve momentale',
'recentchangestext' => 'Ndiqni ndryshime së fundmi tek kjo faqe.',
'recentchanges-feed-description' => 'Ndjek ndryshimet më të fundit në wiki tek kjo fushë.',
+'recentchanges-label-newpage' => 'Ky redaktim krijoi një faqe të re',
'rcnote' => "Më poshtë {{PLURAL:$1|është '''1''' ndryshim| janë '''$1''' ndryshime}} së fundmi gjatë <strong>$2</strong> ditëve sipas të dhënave nga $4, $5.",
'rcnotefrom' => 'Më poshtë janë ndryshime së fundmi nga <b>$2</b> (treguar deri në <b>$1</b>).',
'rclistfrom' => 'Tregon ndryshime së fundmi duke filluar nga $1',
@@ -1274,6 +1286,8 @@ Ju mund [[:\$1|të e krijoni këtë faqe]].",
# Recent changes linked
'recentchangeslinked' => 'Ndryshimet fqinje',
+'recentchangeslinked-feed' => 'Ndryshimet fqinje',
+'recentchangeslinked-toolbox' => 'Ndryshimet fqinje',
'recentchangeslinked-title' => 'Ndryshimet në lidhje me "$1"',
'recentchangeslinked-noresult' => 'Nuk ka pasur ndryshime tek faqet e lidhura gjatë kohës së dhënë.',
'recentchangeslinked-summary' => "Kjo është një listë e ndryshimeve së fundmi të faqeve të lidhura nga faqja e dhënë (ose bëjnë pjesë tek kategoria e dhënë).
@@ -1284,7 +1298,6 @@ Faqet [[Special:Watchlist|nën mbikqyrjen tuaj]] duken të '''theksuara'''.",
# Upload
'upload' => 'Ngarkoni skeda',
'uploadbtn' => 'Ngarkoje',
-'reupload' => 'Ngarkojeni përsëri',
'reuploaddesc' => 'Kthehu tek formulari i dhënies.',
'uploadnologin' => 'Nuk keni hyrë brënda',
'uploadnologintext' => 'Duhet të keni [[Special:UserLogin|hyrë brenda]] për të dhënë skeda.',
@@ -1335,7 +1348,6 @@ Për ta treguar atje duhet ta redaktoni vetë.",
* Emri i skedës në ngarkim: '''<tt>[[:$1]]</tt>'''
* Emri i skedës ekzistuese: '''<tt>[[:$2]]</tt>'''
Ju lutem zgjidhni një emër tjetër.",
-'fileexists-thumb' => "<center>'''Skedë ekzistuese'''</center>",
'fileexists-thumbnail-yes' => "Kjo skedë duket se është një figurë me madhësi të zvogëluar ''(figurë përmbledhëse)''. [[$1|thumb]]
Ju lutem kontrolloni skedën '''<tt>[[:$1]]</tt>'''.
Nëse skeda e kontrolluar është e së njëjtës madhësi me origjinalen atëherë nuk ka nevojë të ngarkoni një figurë përmbledhëse.",
@@ -1353,7 +1365,6 @@ Nëse keni këtë figurë me madhësi të plotë ju lutem të ngarkoni atë, pë
'uploaddisabled' => 'Ndjesë, dhëniet janë bllokuar në këtë shërbyes dhe nuk është gabimi juaj.',
'uploaddisabledtext' => 'Ngarkimi i skedave është i ndaluar.',
'uploadscripted' => 'Skeda përmban HTML ose kode të tjera që mund të interpretohen gabimisht nga një shfletues.',
-'uploadcorrupt' => 'Skeda është e dëmtuar ose ka emër të gabuar. Ju lutemi kontrolloni skedën dhe ngarkoni atë përsëri.',
'uploadvirus' => 'Skeda përmban një virus! Detaje: $1',
'sourcefilename' => 'Emri i skedës:',
'destfilename' => 'Emri mbas dhënies:',
@@ -1376,6 +1387,7 @@ Ju lutem lidhuni me administruesin e sistemit tuaj.',
'upload-misc-error-text' => 'Një gabim i panjohur ka ndodhur gjatë ngarkimit.
Ju lutem kontrolloni që adresa URL të jetë e vlefshme dhe e kapshme dhe provoni përsëri.
Nëse problemi vazhdon atëherë duhet të lidheni me administruesin e sistemit.',
+'upload-unknown-size' => 'Madhësia e panjohur',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "S'munda të lidhem me adresën URL",
@@ -1387,6 +1399,7 @@ Ju lutem kontrolloni nëse faqja është në rrjet, prisni pak dhe provojeni pë
Këshillohet që ta provoni kur të jetë më pak e zënë.',
'license' => 'Licencimi:',
+'license-header' => 'Licencimi:',
'nolicense' => 'Asnjë nuk është zgjedhur',
'license-nopreview' => '(Nuk ka parapamje)',
'upload_source_url' => ' (URL e vlefshme, publikisht e përdorshme)',
@@ -1407,6 +1420,7 @@ Shtypni kolonat e tjera për të ndryshuar radhitjen.',
'listfiles_count' => 'Versionet',
# File description page
+'file-anchor-link' => 'Figura',
'filehist' => 'Historiku i dosjes',
'filehist-help' => 'Shtypni një datë/kohë për ta parë skedën ashtu si dukej në atë kohë.',
'filehist-deleteall' => 'grisi të tëra',
@@ -1427,12 +1441,7 @@ Shtypni kolonat e tjera për të ndryshuar radhitjen.',
'morelinkstoimage' => 'Shikoni [[Special:WhatLinksHere/$1|më shumë lidhje]] tek kjo skedë.',
'redirectstofile' => 'Skeda vijuese {{PLURAL:$1|file redirects|$1 ridrejtohet}} tek kjo skedë:',
'duplicatesoffile' => 'Skedat vijuese {{PLURAL:$1|është e dyfishtë|$1 dyfishohen}} tek kjo skedë:',
-'sharedupload' => 'Kjo skedë është një ngarkim i përbashkët dhe mund të përdoret nga projekte të tjera.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Ju lutem shikoni $1 për më shumë informacion.',
-'shareduploadwiki-desc' => '$1 së atjeshme tregohet më poshtë',
-'shareduploadwiki-linktext' => 'faqja përshkruese e skedës',
-'noimage' => 'Një skedë me këtë emër nuk ekziston akoma, ju mundeni ta $1 atë.',
-'noimage-linktext' => 'ngarkoni',
+'sharedupload' => 'Kjo skedë është një ngarkim i përbashkët dhe mund të përdoret nga projekte të tjera.',
'uploadnewversion-linktext' => 'Ngarkoni një version të ri për këtë skedë',
# File reversion
@@ -1524,8 +1533,8 @@ Një faqe trajtohet si faqe kthjelluese nëse përdor stampat e lidhura nga [[Me
'brokenredirects' => 'Përcjellime të prishura',
'brokenredirectstext' => "Përcjellimet që vijojnë lidhen tek një artikull që s'ekziston.",
-'brokenredirects-edit' => '(redakto)',
-'brokenredirects-delete' => '(grise)',
+'brokenredirects-edit' => 'redakto',
+'brokenredirects-delete' => 'grise',
'withoutinterwiki' => 'Artikuj pa lidhje interwiki',
'withoutinterwiki-summary' => 'Artikujt në vazhdim nuk kanë asnjë lidhje te wikit në gjuhët tjera:',
@@ -1802,8 +1811,8 @@ Të gjitha kohët janë sipas orës së shërbyesit.',
'alreadyrolled' => 'Nuk munda ta rikthej redaktimin e fundit e [[:$1]] nga [[User:$2|$2]] ([[User talk:$2|Diskutim]]); dikush tjetër e ka redaktuar ose rikthyer këtë faqe.
Redaktimi i fundit është bërë nga [[User:$3|$3]] ([[User talk:$3|Diskutim]]).',
-'editcomment' => "Komenti i redaktimit ishte: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ndryshimet e [[Special:Contributions/$2|$2]] ([[User talk:$2|diskutimet]]) u kthyen mbrapsht, artikulli tani ndodhet në versionin e fundit nga [[User:$1|$1]].', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Komenti i redaktimit ishte: \"''\$1''\".",
+'revertpage' => 'Ndryshimet e [[Special:Contributions/$2|$2]] ([[User talk:$2|diskutimet]]) u kthyen mbrapsht, artikulli tani ndodhet në versionin e fundit nga [[User:$1|$1]].',
'rollback-success' => 'Ndryshimet e $1 u kthyen mbrapsh; artikulli ndodhet tek verzioni i $2.',
'sessionfailure' => 'Më duket se ka një problem me seancën tuaj të hyrjes. Veprimi juaj nuk është kryer për tu mbrojtur nga ndonjë veprim dashakeq kundrejt shfletimit tuaj. Ju lutem kthehuni mbrapsh, rifreskoni faqen prej nga erdhët dhe provojeni përsëri veprimin.',
@@ -1822,7 +1831,6 @@ Shih listën e [[Special:ProtectedPages|faqeve të mbrojtura]] nga lista e mbroj
'protectexpiry' => 'Afati',
'protect_expiry_invalid' => 'Data e skadimit është e gabuar.',
'protect_expiry_old' => 'Data e skadencës është në të shkuarën.',
-'protect-unchain' => 'Ndrysho lejen e zhvendosjeve',
'protect-text' => "Këtu mund të shikoni dhe ndryshoni nivelin e mbrojtjes për faqen '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Nuk mund të ndryshoni nivelet e mbrojtjes duke qenë i bllokuar. Kufizimet e kësaj faqeje janë '''$1''':",
'protect-locked-dblock' => "Nivelet e mbrojtjes nuk mund të ndryshohen pasi regjistri është i bllokuar. Kufizimet e kësaj faqeje janë '''$1''':",
@@ -1844,7 +1852,7 @@ Mund të ndryshoni nivelin e mbrojtjes të kësaj faqeje por kjo nuk do të ndry
'protect-otherreason' => 'Arsye tjera/shtesë:',
'protect-otherreason-op' => 'arsye tjera/shtesë',
'protect-edit-reasonlist' => 'Redakto arsyet e mbrojtjes',
-'protect-expiry-options' => '1 Orë:1 hour,1 Ditë:1 day,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Orë:1 hour,1 Ditë:1 day,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite',
'restriction-type' => 'Lejet:',
'restriction-level' => 'Mbrojtjet:',
'minimum-size' => 'Madhësia minimale',
@@ -1877,6 +1885,7 @@ Arkivi, kohëpaskohe është e mundur të pastrohet.',
'undelete-nodiff' => 'Nuk u gjetën revizione të mëparshme.',
'undeletebtn' => 'Restauro!',
'undeletelink' => 'shiko/rikthe',
+'undeleteviewlink' => 'Pamje',
'undeletereset' => 'Boshatis',
'undeleteinvert' => 'Selektim anasjelltas',
'undeletecomment' => 'Arsyeja:',
@@ -1908,7 +1917,7 @@ Shikoni [[Special:Log/delete|regjistrin e grisjeve]] për grisjet dhe restaurime
'contributions-title' => 'Kontributet e përdoruesit për $1',
'mycontris' => 'Redaktimet e mia',
'contribsub2' => 'Për $1 ($2)',
-'nocontribs' => 'Nuk ka asnjë ndryshim që përputhet me këto kritere.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nuk ka asnjë ndryshim që përputhet me këto kritere.',
'uctop' => ' (sipër)',
'month' => 'Nga muaji (dhe më herët):',
'year' => 'Nga viti (dhe më herët):',
@@ -1917,7 +1926,10 @@ Shikoni [[Special:Log/delete|regjistrin e grisjeve]] për grisjet dhe restaurime
'sp-contributions-newbies-sub' => 'Për newbies',
'sp-contributions-newbies-title' => 'Kontributet e përdoruesit për kontot e reja',
'sp-contributions-blocklog' => 'Regjistri i bllokimeve',
+'sp-contributions-deleted' => 'Kontribute të grisura',
'sp-contributions-logs' => 'Regjistrat',
+'sp-contributions-talk' => 'Diskuto',
+'sp-contributions-userrights' => 'Ndrysho privilegjet e përdoruesve',
'sp-contributions-search' => 'Kërko tek kontributet',
'sp-contributions-username' => 'IP Addresa ose Përdoruesi:',
'sp-contributions-submit' => 'Kërko',
@@ -1943,6 +1955,7 @@ Shikoni [[Special:Log/delete|regjistrin e grisjeve]] për grisjet dhe restaurime
# Block/unblock
'blockip' => 'Blloko përdorues',
+'blockip-title' => 'Përdorues i Bllokuar',
'blockip-legend' => 'Blloko përdoruesin',
'blockiptext' => 'Përdorni formularin e mëposhtëm për të hequr lejen e shkrimit për një përdorues ose IP-ë specifike.
Kjo duhet bërë vetëm në raste vandalizmi, dhe në përputhje me [[{{MediaWiki:Policy-url}}|rregullat e {{SITENAME}}-s]].
@@ -1966,7 +1979,7 @@ Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u va
'ipbenableautoblock' => 'Blloko edhe IP adresën që ka përdor ky përdorues deri tash, si dhe të gjitha subadresat nga të cilat mundohet ky përdorues të editoj.',
'ipbsubmit' => 'Blloko këtë përdorues',
'ipbother' => 'Kohë tjetër',
-'ipboptions' => '2 Orë:2 hours,1 Ditë:1 day,3 Ditë:3 days,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Orë:2 hours,1 Ditë:1 day,3 Ditë:3 days,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite',
'ipbotheroption' => 'tjetër',
'ipbotherreason' => 'Arsye tjetër/shtesë',
'ipbwatchuser' => 'Shiko faqen e prezantimit dhe diskutimit të këtij përdoruesi',
@@ -1995,7 +2008,7 @@ një përdoruesi ose IP adreseje të bllokuar.",
'ipblocklist-submit' => 'Kërko',
'blocklistline' => '$1, $2 bllokoi $3 ($4)',
'infiniteblock' => 'pakufi',
-'expiringblock' => 'mbaron më $1',
+'expiringblock' => 'mbaron më $1 $2',
'anononlyblock' => 'vetëm anonimët',
'noautoblockblock' => 'autobllokimi është çaktivizuar',
'createaccountblock' => 'hapja e lloggarive është bllokuar',
@@ -2077,7 +2090,7 @@ Në ato raste, duhet ta zhvendosni ose përpuqni faqen vetë n.q.s. dëshironi."
'move-watch' => 'Mbikqyre këtë faqe',
'movepagebtn' => 'Zhvendose faqen',
'pagemovedsub' => 'Zhvendosja doli me sukses',
-'movepage-moved' => '\'\'\'"$1" u zhvendos tek "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" u zhvendos tek "$2"\'\'\'',
'articleexists' => 'Një faqe me atë titull ekziston, ose titulli që zgjodhët nuk është i saktë. Ju lutem zgjidhni një tjetër.',
'cantmove-titleprotected' => 'Nuk mund të zhvendosni një faqe në këtë titull pasi ky titull është mbrojtur kundrejt krijimit',
'talkexists' => 'Faqja për vete u zhvendos, ndërsa faqja e diskutimit nuk u zhvendos sepse një e tillë ekziston tek titulli i ri. Ju lutem, përpuqini vetë.',
@@ -2121,13 +2134,15 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
'export-templates' => 'Përfshinë stampa',
# Namespace 8 related
-'allmessages' => 'Mesazhet e sistemit',
-'allmessagesname' => 'Emri',
-'allmessagesdefault' => 'Teksti i parazgjedhur',
-'allmessagescurrent' => 'Teksti i tanishëshm',
-'allmessagestext' => 'Kjo është një listë e të gjitha faqeve në hapësirën MediaWiki:',
-'allmessagesfilter' => 'Veço me shprehje të rregullta:',
-'allmessagesmodified' => 'Trego vetëm të ndryshuarat',
+'allmessages' => 'Mesazhet e sistemit',
+'allmessagesname' => 'Emri',
+'allmessagesdefault' => 'Teksti i parazgjedhur',
+'allmessagescurrent' => 'Teksti i tanishëshm',
+'allmessagestext' => 'Kjo është një listë e të gjitha faqeve në hapësirën MediaWiki:',
+'allmessages-filter-legend' => 'Filtër',
+'allmessages-filter-all' => 'Të gjithë',
+'allmessages-language' => 'Gjuha:',
+'allmessages-filter-submit' => 'Shko',
# Thumbnails
'thumbnail-more' => 'Zmadho',
@@ -2187,6 +2202,7 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
'tooltip-search-fulltext' => 'Kërko faqet me këtë tekst',
'tooltip-p-logo' => 'Figura e Faqes Kryesore',
'tooltip-n-mainpage' => 'Vizitoni Faqen kryesore',
+'tooltip-n-mainpage-description' => 'Vizito faqen kryesore',
'tooltip-n-portal' => 'Mbi projektin, çka mund të bëni për të dhe ku gjenden faqet.',
'tooltip-n-currentevents' => 'Informacion rreth ngjarjeve aktuale.',
'tooltip-n-recentchanges' => 'Lista e ndryshimeve së fundmi në projekt',
@@ -2232,7 +2248,7 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
# Attribution
'anonymous' => 'Përdorues anonim të {{SITENAME}}',
'siteuser' => 'Përdoruesi $1 nga {{SITENAME}}',
-'lastmodifiedatby' => 'Kjo faqe është redaktuar së fundit më $2, $1 nga $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Kjo faqe është redaktuar së fundit më $2, $1 nga $3.',
'othercontribs' => 'Bazuar në punën e: $1',
'others' => 'të tjerë',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|përdorues|përdorues}} $1',
@@ -2268,6 +2284,17 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
'mw_math_modern' => 'E rekomanduar për shfletuesit modern',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Nuk e kuptoj',
+'math_unknown_error' => 'gabim i panjohur',
+'math_unknown_function' => 'funksion i panjohur',
+'math_lexing_error' => 'gabim leximi',
+'math_syntax_error' => 'gabim sintakse',
+'math_image_error' => 'Konversioni PNG dështoi; kontrolloni për ndonjë gabim instalimi të latex-it, dvips-it, gs-it, dhe convert-it.',
+'math_bad_tmpdir' => 'Nuk munda të shkruaj ose krijoj dosjen e përkohshme për matematikë',
+'math_bad_output' => 'Nuk munda të shkruaj ose të krijoj prodhimin matematik në dosjen',
+'math_notexvc' => 'Mungon zbatuesi texvc; ju lutem shikoni math/README për konfigurimin.',
+
# Patrolling
'markaspatrolleddiff' => 'Shënoje si të patrulluar',
'markaspatrolledtext' => 'Shënoje këtë artikull të patrulluar',
@@ -2294,9 +2321,6 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
'previousdiff' => '← Ndryshimi më para',
'nextdiff' => 'Ndryshimi më pas →',
-# Visual comparison
-'visual-comparison' => 'Krahasim vizual',
-
# Media information
'mediawarning' => "'''Kujdes''': Kjo skedë mund të ketë përmbajtje të dëmshme, duke e përdorur sistemi juaj mund të rrezikohet.",
'imagemaxsize' => 'Kufizo pamjen e figurave në faqet përshkruese në rezolucionin:',
@@ -2340,7 +2364,7 @@ Të tjerat do të fshihen.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Gjerësia',
@@ -2407,14 +2431,14 @@ Të tjerat do të fshihen.
'exif-unknowndate' => 'E dhënë e pa njohur',
-'exif-orientation-1' => 'Normale', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'E kthyer horizontalisht', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'E rrotulluar 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'E kthyer vertikalisht', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'E rrotulluar 90° kundër orës dhe e kthyer vertikalisht', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'E rrotulluar 90° sipas orës', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'E rrotulluar 90° sipas orës dhe e kthyer vertikalisht', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'E rrotulluar 90° kundër orës', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normale',
+'exif-orientation-2' => 'E kthyer horizontalisht',
+'exif-orientation-3' => 'E rrotulluar 180°',
+'exif-orientation-4' => 'E kthyer vertikalisht',
+'exif-orientation-5' => 'E rrotulluar 90° kundër orës dhe e kthyer vertikalisht',
+'exif-orientation-6' => 'E rrotulluar 90° sipas orës',
+'exif-orientation-7' => 'E rrotulluar 90° sipas orës dhe e kthyer vertikalisht',
+'exif-orientation-8' => 'E rrotulluar 90° kundër orës',
'exif-componentsconfiguration-0' => 'nuk ekziston',
@@ -2489,7 +2513,7 @@ Të tjerat do të fshihen.
'exif-gpsmeasuremode-2' => 'matje në 2 madhësi',
'exif-gpsmeasuremode-3' => 'matje në 3 madhësi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometra në orë',
'exif-gpsspeed-m' => 'Milje në orë',
'exif-gpsspeed-n' => 'Nyje',
@@ -2508,6 +2532,7 @@ Të tjerat do të fshihen.
'watchlistall2' => 'të gjitha',
'namespacesall' => 'të gjitha',
'monthsall' => 'të gjitha',
+'limitall' => 'Të gjitha',
# E-mail address confirmation
'confirmemail' => 'Vërtetoni adresën tuaj',
@@ -2624,13 +2649,13 @@ Ju gjithashtu mundeni ta redaktoni listën mbikëqyrëse [[Special:Watchlist/edi
'watchlisttools-raw' => 'Redaktoje drejtpërdrejt listën',
# Special:Version
-'version' => 'Versioni', # Not used as normal message but as header for the special page itself
+'version' => 'Versioni',
'version-extensions' => 'Zgjerime të instaluara',
'version-specialpages' => 'Faqe speciale',
'version-variables' => 'Variabël',
'version-other' => 'Të tjera',
'version-hook-subscribedby' => 'Abonuar nga',
-'version-version' => 'Versioni',
+'version-version' => '(Versioni $1)',
'version-license' => 'Licensa',
'version-software' => 'Softuerët e instaluar',
'version-software-product' => 'Produkti',
@@ -2677,4 +2702,7 @@ Vendosni emrin e skedës pa parashtesën "{{ns:file}}:".',
# Special:Tags
'tags-edit' => 'redakto',
+# HTML forms
+'htmlform-selectorother-other' => 'Gjitha',
+
);
diff --git a/languages/messages/MessagesSr_ec.php b/languages/messages/MessagesSr_ec.php
index fbf46e41..e50ce5fc 100644
--- a/languages/messages/MessagesSr_ec.php
+++ b/languages/messages/MessagesSr_ec.php
@@ -23,18 +23,16 @@
*/
$namespaceNames = array(
- NS_MEDIA => "Медија",
- NS_SPECIAL => "Посебно",
- NS_MAIN => "",
- NS_TALK => "Разговор",
- NS_USER => "Корисник",
- NS_USER_TALK => "Разговор_са_корисником",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => "Разговор_о_$1",
- NS_FILE => "Слика",
- NS_FILE_TALK => "Разговор_о_слици",
- NS_MEDIAWIKI => "МедијаВики",
- NS_MEDIAWIKI_TALK => "Разговор_о_МедијаВикију",
+ NS_MEDIA => 'Медија',
+ NS_SPECIAL => 'Посебно',
+ NS_TALK => 'Разговор',
+ NS_USER => 'Корисник',
+ NS_USER_TALK => 'Разговор_са_корисником',
+ NS_PROJECT_TALK => 'Разговор_о_$1',
+ NS_FILE => 'Слика',
+ NS_FILE_TALK => 'Разговор_о_слици',
+ NS_MEDIAWIKI => 'МедијаВики',
+ NS_MEDIAWIKI_TALK => 'Разговор_о_МедијаВикију',
NS_TEMPLATE => 'Шаблон',
NS_TEMPLATE_TALK => 'Разговор_о_шаблону',
NS_HELP => 'Помоћ',
@@ -161,60 +159,59 @@ $dateFormats = array(
/* NOT USED IN STABLE VERSION */
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#Преусмери', '#redirect', '#преусмери', '#ПРЕУСМЕРИ' ),
- 'notoc' => array( 0, '__NOTOC__', '__БЕЗСАДРЖАЈА__' ),
- 'forcetoc' => array( 0, '__FORCETOC__', '__ФОРСИРАНИСАДРЖАЈ__' ),
- 'toc' => array( 0, '__TOC__', '__САДРЖАЈ__' ),
- 'noeditsection' => array( 0, '__NOEDITSECTION__', '__БЕЗ_ИЗМЕНА__', '__БЕЗИЗМЕНА__' ),
- 'currentmonth' => array( 1, 'CURRENTMONTH', 'ТРЕНУТНИМЕСЕЦ' ),
- 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', 'ТРЕНУТНИМЕСЕЦИМЕ' ),
- 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', 'ТРЕНУТНИМЕСЕЦГЕН' ),
- 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV', 'ТРЕНУТНИМЕСЕЦСКР' ),
- 'currentday' => array( 1, 'CURRENTDAY', 'ТРЕНУТНИДАН' ),
- 'currentdayname' => array( 1, 'CURRENTDAYNAME', 'ТРЕНУТНИДАНИМЕ' ),
- 'currentyear' => array( 1, 'CURRENTYEAR', 'ТРЕНУТНАГОДИНА' ),
- 'currenttime' => array( 1, 'CURRENTTIME', 'ТРЕНУТНОВРЕМЕ' ),
- 'numberofarticles' => array( 1, 'NUMBEROFARTICLES', 'БРОЈЧЛАНАКА' ),
- 'numberoffiles' => array( 1, 'NUMBEROFFILES', 'БРОЈДАТОТЕКА', 'БРОЈФАЈЛОВА' ),
- 'pagename' => array( 1, 'PAGENAME', 'СТРАНИЦА' ),
- 'pagenamee' => array( 1, 'PAGENAMEE', 'СТРАНИЦЕ' ),
- 'namespace' => array( 1, 'NAMESPACE', 'ИМЕНСКИПРОСТОР' ),
- 'namespacee' => array( 1, 'NAMESPACEE', 'ИМЕНСКИПРОСТОРИ' ),
- 'fullpagename' => array( 1, 'FULLPAGENAME', 'ПУНОИМЕСТРАНЕ' ),
- 'fullpagenamee' => array( 1, 'FULLPAGENAMEE', 'ПУНОИМЕСТРАНЕЕ' ),
- 'msg' => array( 0, 'MSG:', 'ПОР:' ),
- 'subst' => array( 0, 'SUBST:', 'ЗАМЕНИ:' ),
- 'msgnw' => array( 0, 'MSGNW:', 'НВПОР:' ),
- 'img_thumbnail' => array( 1, 'thumbnail', 'thumb', 'мини' ),
- 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1', 'мини=$1' ),
- 'img_right' => array( 1, 'right', 'десно', 'д' ),
- 'img_left' => array( 1, 'left', 'лево', 'л' ),
- 'img_none' => array( 1, 'none', 'н', 'без' ),
- 'img_width' => array( 1, '$1px', '$1пискел' , '$1п' ),
- 'img_center' => array( 1, 'center', 'centre', 'центар', 'ц' ),
- 'img_framed' => array( 1, 'framed', 'enframed', 'frame', 'оквир', 'рам' ),
- 'int' => array( 0, 'INT:', 'ИНТ:' ),
- 'sitename' => array( 1, 'SITENAME', 'ИМЕСАЈТА' ),
- 'ns' => array( 0, 'NS:', 'ИП:' ),
- 'localurl' => array( 0, 'LOCALURL:', 'ЛОКАЛНААДРЕСА:' ),
- 'localurle' => array( 0, 'LOCALURLE:', 'ЛОКАЛНЕАДРЕСЕ:' ),
- 'server' => array( 0, 'SERVER', 'СЕРВЕР' ),
- 'servername' => array( 0, 'SERVERNAME', 'ИМЕСЕРВЕРА' ),
- 'scriptpath' => array( 0, 'SCRIPTPATH', 'СКРИПТА' ),
- 'grammar' => array( 0, 'GRAMMAR:', 'ГРАМАТИКА:' ),
- 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗКН__', '__BEZKN__' ),
- 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__БЕЗЦЦ__' ),
- 'currentweek' => array( 1, 'CURRENTWEEK', 'ТРЕНУТНАНЕДЕЉА' ),
- 'currentdow' => array( 1, 'CURRENTDOW', 'ТРЕНУТНИДОВ' ),
- 'revisionid' => array( 1, 'REVISIONID', 'ИДРЕВИЗИЈЕ' ),
- 'plural' => array( 0, 'PLURAL:', 'МНОЖИНА:' ),
- 'fullurl' => array( 0, 'FULLURL:', 'ПУНУРЛ:' ),
- 'fullurle' => array( 0, 'FULLURLE:', 'ПУНУРЛЕ:' ),
- 'lcfirst' => array( 0, 'LCFIRST:', 'ЛЦПРВИ:' ),
- 'ucfirst' => array( 0, 'UCFIRST:', 'УЦПРВИ:' ),
- 'lc' => array( 0, 'LC:', 'ЛЦ:' ),
- 'uc' => array( 0, 'UC:', 'УЦ:' ),
+ 'redirect' => array( '0', '#Преусмери', '#redirect', '#преусмери', '#ПРЕУСМЕРИ', '#REDIRECT' ),
+ 'notoc' => array( '0', '__БЕЗСАДРЖАЈА__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__ФОРСИРАНИСАДРЖАЈ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__САДРЖАЈ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__БЕЗ_ИЗМЕНА__', '__БЕЗИЗМЕНА__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'ТРЕНУТНИМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'ТРЕНУТНИМЕСЕЦИМЕ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'ТРЕНУТНИМЕСЕЦГЕН', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ТРЕНУТНИМЕСЕЦСКР', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'ТРЕНУТНИДАН', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'ТРЕНУТНИДАНИМЕ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ТРЕНУТНАГОДИНА', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ТРЕНУТНОВРЕМЕ', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'БРОЈЧЛАНАКА', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'БРОЈДАТОТЕКА', 'БРОЈФАЈЛОВА', 'NUMBEROFFILES' ),
+ 'pagename' => array( '1', 'СТРАНИЦА', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'СТРАНИЦЕ', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ИМЕНСКИПРОСТОР', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ИМЕНСКИПРОСТОРИ', 'NAMESPACEE' ),
+ 'fullpagename' => array( '1', 'ПУНОИМЕСТРАНЕ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'ПУНОИМЕСТРАНЕЕ', 'FULLPAGENAMEE' ),
+ 'msg' => array( '0', 'ПОР:', 'MSG:' ),
+ 'subst' => array( '0', 'ЗАМЕНИ:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'НВПОР:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'мини', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'десно', 'д', 'right' ),
+ 'img_left' => array( '1', 'лево', 'л', 'left' ),
+ 'img_none' => array( '1', 'н', 'без', 'none' ),
+ 'img_width' => array( '1', '$1пискел', '$1п', '$1px' ),
+ 'img_center' => array( '1', 'центар', 'ц', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'оквир', 'рам', 'framed', 'enframed', 'frame' ),
+ 'int' => array( '0', 'ИНТ:', 'INT:' ),
+ 'sitename' => array( '1', 'ИМЕСАЈТА', 'SITENAME' ),
+ 'ns' => array( '0', 'ИП:', 'NS:' ),
+ 'localurl' => array( '0', 'ЛОКАЛНААДРЕСА:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ЛОКАЛНЕАДРЕСЕ:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
+ 'servername' => array( '0', 'ИМЕСЕРВЕРА', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'СКРИПТА', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'ГРАМАТИКА:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__БЕЗКН__', '__BEZKN__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__БЕЗЦЦ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'ТРЕНУТНАНЕДЕЉА', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'ТРЕНУТНИДОВ', 'CURRENTDOW' ),
+ 'revisionid' => array( '1', 'ИДРЕВИЗИЈЕ', 'REVISIONID' ),
+ 'plural' => array( '0', 'МНОЖИНА:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'ПУНУРЛ:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'ПУНУРЛЕ:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'ЛЦПРВИ:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'УЦПРВИ:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'ЛЦ:', 'LC:' ),
+ 'uc' => array( '0', 'УЦ:', 'UC:' ),
);
$separatorTransformTable = array(',' => '.', '.' => ',' );
@@ -249,6 +246,7 @@ $messages = array(
'tog-enotifminoredits' => 'Пошаљи ми е-пошту такође за мале измене страна',
'tog-enotifrevealaddr' => 'Откриј адресу моје е-поште у пошти обавештења',
'tog-shownumberswatching' => 'Прикажи број корисника који надгледају',
+'tog-oldsig' => 'Претпреглед постојећег потписа:',
'tog-fancysig' => 'Третирај потпис као викитекст (без аутоматског повезивања)',
'tog-externaleditor' => 'Користи спољашњи уређивач по подразумеваним подешавањима (само за експерте, пошто су неопходна посебна подешавања у вашем рачунару)',
'tog-externaldiff' => 'Користи спољашњи програм за приказ разлика (само за експерте, пошто су неопходна посебна подешавања у вашем рачунару)',
@@ -271,6 +269,13 @@ $messages = array(
'underline-never' => 'Никад',
'underline-default' => 'По подешавањима браузера',
+# Font style option in Special:Preferences
+'editfont-style' => 'Измени стил фонта за овај део:',
+'editfont-default' => 'Подразумеван из браузера',
+'editfont-monospace' => 'Фонт са једнаким размацима',
+'editfont-sansserif' => 'Sans-serif фонт',
+'editfont-serif' => 'Serif фонт',
+
# Dates
'sunday' => 'недеља',
'monday' => 'понедељак',
@@ -330,7 +335,7 @@ $messages = array(
'category-media-header' => 'Мултимедијалних фајлова у категорији "$1"',
'category-empty' => "''Ова категорија тренутно не садржи чланке нити медије.''",
'hidden-categories' => '{{PLURAL:$1|Скривена категорија|Скривене категорије|Скривених категорија}}',
-'hidden-category-category' => 'Скривене категорије', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Скривене категорије',
'category-subcat-count' => '{{PLURAL:$2|Ова категорија има само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|$1 следеће поткатегорије|$1 следећих поткатегорија}}, од укупно $2.}}',
'category-subcat-count-limited' => 'Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|$1 следеће поткатегорије}}.',
'category-article-count' => '{{PLURAL:$2|Ова категорија садржи само следећу страну.|{{PLURAL:$1|страна је|$1 стране је|$1 страна је}} у овој категорији од укупно $2.}}',
@@ -338,6 +343,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ова категорија садржи само следећи фајл.|{{PLURAL:$1|Следећи фајл је|$1 следећа фајла су|$1 следећих фајлова су}} у овој категорији, од укупно $2.}}',
'category-file-count-limited' => 'Следећи {{PLURAL:$1|фајл је|$1 фајлови су}} у овој категорији.',
'listingcontinuesabbrev' => 'наст.',
+'index-category' => 'Индексиране странице',
+'noindex-category' => 'Неиндексиране странице',
'mainpagetext' => "'''МедијаВики је успешно инсталиран.'''",
'mainpagedocfooter' => 'Молимо видите [http://meta.wikimedia.org/wiki/Help:Contents кориснички водич] за информације о употреби вики софтвера.
@@ -347,10 +354,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Најчешће постављена питања]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Мејлинг листа о издањима МедијаВикија]',
-'about' => 'О...',
-'article' => 'Чланак',
-'newwindow' => '(нови прозор)',
-'cancel' => 'Одустани',
+'about' => 'О...',
+'article' => 'Чланак',
+'newwindow' => '(нови прозор)',
+'cancel' => 'Одустани',
+'moredotdotdot' => 'Још...',
+'mypage' => 'Моја страница',
+'mytalk' => 'Мој разговор',
+'anontalk' => 'Разговор за ову ИП адресу',
+'navigation' => 'Навигација',
+'and' => '&#32;и',
+
+# Cologne Blue skin
'qbfind' => 'Пронађи',
'qbbrowse' => 'Прелиставај',
'qbedit' => 'Уреди',
@@ -358,15 +373,35 @@ $messages = array(
'qbpageinfo' => 'Информације о страници',
'qbmyoptions' => 'Моје опције',
'qbspecialpages' => 'Посебне странице',
-'moredotdotdot' => 'Још...',
-'mypage' => 'Моја страница',
-'mytalk' => 'Мој разговор',
-'anontalk' => 'Разговор за ову ИП адресу',
-'navigation' => 'Навигација',
-'and' => '&#32;и',
-
-# Metadata in edit box
-'metadata_help' => 'Метаподаци:',
+'faq' => 'НПП',
+'faqpage' => 'Project:НПП',
+
+# Vector skin
+'vector-action-addsection' => 'Додај тему',
+'vector-action-delete' => 'Обриши',
+'vector-action-move' => 'Премести',
+'vector-action-protect' => 'Заштити',
+'vector-action-undelete' => 'Врати',
+'vector-action-unprotect' => 'Скини заштиту',
+'vector-namespace-category' => 'Категорија',
+'vector-namespace-help' => 'Страна помоћи',
+'vector-namespace-image' => 'Фајл',
+'vector-namespace-main' => 'Страна',
+'vector-namespace-media' => 'Страница на податотека',
+'vector-namespace-mediawiki' => 'Порука',
+'vector-namespace-project' => 'Страна пројекта',
+'vector-namespace-special' => 'Посебна страна',
+'vector-namespace-talk' => 'Разговор',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Корисничка страна',
+'vector-view-create' => 'Направи',
+'vector-view-edit' => 'Измени',
+'vector-view-history' => 'Види историју',
+'vector-view-view' => 'Читај',
+'vector-view-viewsource' => 'Погледај код',
+'actions' => 'Акције',
+'namespaces' => 'Именски простори',
+'variants' => 'Варијанте',
'errorpagetitle' => 'Грешка',
'returnto' => 'Повратак на $1.',
@@ -416,18 +451,22 @@ $messages = array(
'otherlanguages' => 'Остали језици',
'redirectedfrom' => '(Преусмерено са $1)',
'redirectpagesub' => 'Страна преусмерења',
-'lastmodifiedat' => 'Ова страница је последњи пут измењена $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ова страница је последњи пут измењена $2, $1.',
'viewcount' => 'Овој страници је приступљено {{PLURAL:$1|једном|$1 пута|$1 пута}}.',
'protectedpage' => 'Заштићена страница',
'jumpto' => 'Скочи на:',
'jumptonavigation' => 'навигација',
'jumptosearch' => 'претрага',
+'view-pool-error' => 'Жао нам је, сервери су тренутно презаузети.
+Превише корисника покушава да приступи овој страници.
+Молимо вас да сачекате неко време пре него покушате опет да јој приступите.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'О пројекту {{SITENAME}}',
'aboutpage' => 'Project:О',
'copyright' => 'Садржај је објављен под $1.',
-'copyrightpagename' => 'Ауторска права пројекта {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Ауторска права',
'currentevents' => 'Тренутни догађаји',
'currentevents-url' => 'Project:Тренутни догађаји',
@@ -435,8 +474,6 @@ $messages = array(
'disclaimerpage' => 'Project:Услови коришћења, правне напомене и одрицање одговорности',
'edithelp' => 'Помоћ око уређивања',
'edithelppage' => 'Help:Како се мења страна',
-'faq' => 'НПП',
-'faqpage' => 'Project:НПП',
'helppage' => 'Help:Садржај',
'mainpage' => 'Главна страна',
'mainpage-description' => 'Главна страна',
@@ -517,10 +554,6 @@ $messages = array(
"$1"
унутар функције "$2".
База података је вратила грешку "$3: $4"',
-'noconnect' => 'Жалимо! Вики има неке техничке потешкоће, и не може да се повеже се сервером базе.<br />
-$1',
-'nodb' => 'Не могу да изаберем базу $1',
-'cachederror' => 'Ово је кеширана копија захтеване странице, и можда није ажурирана.',
'laggedslavemode' => 'Упозорење: могуће је да страна није скоро ажурирана.',
'readonly' => 'База података је закључана',
'enterlockreason' => 'Унесите разлог за закључавање, укључујући процену времена до откључавања',
@@ -540,6 +573,8 @@ $1',
'readonly_lag' => 'База података је аутоматски закључана док помоћни сервери не сустигну мастер',
'internalerror' => 'Интерна грешка',
'internalerror_info' => 'Интерна грешка: $1',
+'fileappenderrorread' => 'Није било могуће прочитати "$1" за време ажурирања.',
+'fileappenderror' => 'Није било могуће ажурирати "$1" на "$2".',
'filecopyerror' => 'Не могу да ископирам фајл "$1" на "$2".',
'filerenameerror' => 'Не могу да преименујем фајл "$1" у "$2".',
'filedeleteerror' => 'Не могу да обришем фајл "$1".',
@@ -549,7 +584,8 @@ $1',
'unexpected' => 'Неочекивана вредност: "$1"="$2".',
'formerror' => 'Грешка: не могу да пошаљем упитник',
'badarticleerror' => 'Ова акција не може бити извршена на овој страници.',
-'cannotdelete' => 'Не могу да обришем наведену страницу или фајл. (Могуће је да је неко други већ обрисао.)',
+'cannotdelete' => 'Ову страну или фајл није било могуће обрисати: "$1".
+Вероватно ју је неко раније обрисао.',
'badtitle' => 'Лош наслов',
'badtitletext' => 'Захтевани наслов странице је био неисправан, празан или
неисправно повезан међујезички или интервики наслов. Можда садржи један или више карактера који не могу да се употребљавају у насловима.',
@@ -584,7 +620,6 @@ $2',
'virus-unknownscanner' => 'непознати антивирус:',
# Login and logout pages
-'logouttitle' => 'Одјави се',
'logouttext' => "'''Сада сте одјављени.'''
Можете да наставите да користите пројекат {{SITENAME}} анонимно, или се [[Special:UserLogin|поново пријавити]] као други корисник.
@@ -593,7 +628,6 @@ $2',
Ваш налог је креиран.
Не заборавите да прилагодите себи своја [[Special:Preferences|{{SITENAME}} подешавања]].',
-'loginpagetitle' => 'Пријављивање',
'yourname' => 'Корисничко име:',
'yourpassword' => 'Ваша лозинка:',
'yourpasswordagain' => 'Поновите лозинку:',
@@ -604,6 +638,7 @@ $2',
'nav-login-createaccount' => 'Региструј се / Пријави се',
'loginprompt' => "Морате да имате омогућене колачиће (''cookies'') да бисте се пријавили на {{SITENAME}}.",
'userlogin' => 'Региструј се / Пријави се',
+'userloginnocreate' => 'Пријави се',
'logout' => 'Одјави се',
'userlogout' => 'Одјави се',
'notloggedin' => 'Нисте пријављени',
@@ -616,28 +651,8 @@ $2',
'badretype' => 'Лозинке које сте унели се не поклапају.',
'userexists' => 'Корисничко име које сте унели већ је у употреби.
Молимо изаберите друго име.',
-'youremail' => 'Адреса ваше е-поште *',
-'username' => 'Корисничко име:',
-'uid' => 'Кориснички ИД:',
-'prefs-memberingroups' => 'Члан {{PLURAL:$1|групе|група}}:',
-'yourrealname' => 'Ваше право име *',
-'yourlanguage' => 'Језик:',
-'yourvariant' => 'Варијанта:',
-'yournick' => 'Надимак:',
-'badsig' => 'Грешка у потпису, проверите HTML тагове.',
-'badsiglength' => 'Ваш потпис је предугачак.
-Мора бити краћи од $1 {{PLURAL:$1|карактер|карактера}}.',
-'yourgender' => 'Пол:',
-'gender-unknown' => 'Неназначен',
-'gender-male' => 'Мушки',
-'gender-female' => 'Женски',
-'prefs-help-gender' => 'Необавезно: користи се за исправно обраћање софтвера корисницима, зависно од њиховог пола.
-Ова информација ће бити јавна.',
-'email' => 'Е-пошта',
-'prefs-help-realname' => '* Право име (опционо): ако изаберете да дате име, ово ће бити коришћено за приписивање за ваш рад.',
'loginerror' => 'Грешка при пријављивању',
-'prefs-help-email' => 'Е-пошта је опциона, али омогућује осталима да вас контактирају преко ваше корисничке стране или стране разговора са корисником без потребе да одајете свој идентитет.',
-'prefs-help-email-required' => 'Адреса е-поште је потребна.',
+'createaccounterror' => 'Није могуће направити налог: $1',
'nocookiesnew' => "Кориснички налог је направљен, али нисте пријављени. {{SITENAME}} користи колачиће (''cookies'') да би се корисници пријавили. Ви сте онемогућили колачиће на свом рачунару. Молимо омогућите их, а онда се пријавите са својим новим корисничким именом и лозинком.",
'nocookieslogin' => "{{SITENAME}} користи колачиће (''cookies'') да би се корисници пријавили. Ви сте онемогућили колачиће на свом рачунару. Молимо омогућите их и покушајте поново са пријавом.",
'noname' => 'Нисте изабрали исправно корисничко име.',
@@ -648,10 +663,12 @@ $2',
Проверите да ли сте га добро укуцали, или [[Special:UserLogin/signup|направите нови кориснички налог]].',
'nosuchusershort' => 'Не постоји корисник са именом "<nowiki>$1</nowiki>". Проверите да ли сте добро написали.',
'nouserspecified' => 'Морате да назначите корисничко име.',
+'login-userblocked' => 'Овај корисник је блокиран. Логовање није дозвољено.',
'wrongpassword' => 'Лозинка коју сте унели је неисправна. Молимо покушајте поново.',
'wrongpasswordempty' => 'Лозинка коју сте унели је празна. Молимо покушајте поново.',
-'passwordtooshort' => 'Ваша шифра је неисправна или превише кратка.
-Мора да има бар {{PLURAL:$1|1 карактер|$1 карактера}} и да буде различита од вашег корисничког имена.',
+'passwordtooshort' => 'Ваша лозинка је прекратка.
+Мора имати најмање {{PLURAL:$1|1 карактер|$1 карактера}}.',
+'password-name-match' => 'Ваша лозинка мора бити другачија од вашег корисничког имена.',
'mailmypassword' => 'Пошаљи ми нову лозинку',
'passwordremindertitle' => '{{SITENAME}} подсетник за шифру',
'passwordremindertext' => 'Неко (вероватно ви, са ИП адресе $1) је захтевао да вам пошаљемо нову
@@ -664,6 +681,7 @@ $2',
шифру и више не желите да је мењате, можете игнорисати ову поруку и
наставити користити вашу стару.',
'noemail' => 'Не постоји адреса е-поште за корисника "$1".',
+'noemailcreate' => 'Морате унети исправну адресу е-поште',
'passwordsent' => 'Нова шифра је послата на адресу е-поште корисника "$1".
Молимо пријавите се пошто је примите.',
'blocked-mailpassword' => 'Вашој ИП адреси је блокиран приступ уређивању, из ког разлога није могуће користити функцију подсећања лозинке, ради превенције извршења недозвољене акције.',
@@ -686,9 +704,11 @@ $2',
Пријавите се и промените вашу лозинку.
Можете игронисати ову поруку, уколико је налог направљен грешком.',
+'usernamehasherror' => 'Корисничко име не може садржати знаке тарабе (#).',
'login-throttled' => 'Урадили сте превише скорих покушаја да се улогујете.
Молимо вас да сачекате пар минута и покушате опет.',
'loginlanguagelabel' => 'Језик: $1',
+'suspicious-userlogout' => 'Ваш захтев за излоговање није извршен зато што изгледа да је послат из неисправног браузера или преко кешираног проксија.',
# Password reset dialog
'resetpass' => 'Промените корисничку лозинку',
@@ -699,17 +719,13 @@ $2',
'retypenew' => 'Поново откуцајте нову лозинку:',
'resetpass_submit' => 'Подеси лозинку и пријави се',
'resetpass_success' => 'Ваша лозинка је успешно промењена! Пријављивање у току...',
-'resetpass_bad_temporary' => 'Привремена лозинка не одговара. Могуће је да сте већ успешно променили лозинку или да сте затражили да вам се пошаље нова привремена лозинка.',
'resetpass_forbidden' => 'Лозинке не могу бити промењене',
'resetpass-no-info' => 'Морате бити улоговани да бисте овој страни приступили директно.',
'resetpass-submit-loggedin' => 'Измени лозинку',
+'resetpass-submit-cancel' => 'Поништи',
'resetpass-wrong-oldpass' => 'Неисправна привремена или актуелна лозинка.
Можда сте већ успешно променили лозинку или затражили нову привремену.',
'resetpass-temp-password' => 'Привремена шифра:',
-'resetpass-log' => 'Историја промеан лозинки',
-'resetpass-logtext' => 'Испод се налази историја кориника чије су лозинке мењали администратори.',
-'resetpass-logentry' => 'лозинка за $1 је промењена',
-'resetpass-comment' => 'Разлог за промену лозинке:',
# Edit page toolbar
'bold_sample' => 'подебљан текст',
@@ -785,7 +801,6 @@ $2',
'blockededitsource' => "Текст '''ваших измена''' за '''$1''' је приказан испод:",
'whitelistedittitle' => 'Обавезно је пријављивање за мењање',
'whitelistedittext' => 'Морате да се $1 да бисте мењали странице.',
-'confirmedittitle' => 'Потребна је потврда адресе е-поштe за уређивање',
'confirmedittext' => 'Морате потврдити вашу адресу е-поште пре уређивања страна. Молимо поставите и потврдите адресу ваше е-поште преко ваших [[Special:Preferences|корисничких подешавања]].',
'nosuchsectiontitle' => 'Не постоји такав одељак',
'nosuchsectiontext' => 'Покушали сте да уредите одељак који не постоји.
@@ -809,8 +824,12 @@ $2',
Можете [[Special:Search/{{PAGENAME}}|тражити ову страницу]] у другим чланцима,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} претражити сродне историје записа], или је [{{fullurl:{{FULLPAGENAME}}|action=edit}} уредити].',
'userpage-userdoesnotexist' => 'Налог "$1" није регистрован. Проверите да ли желите да правите/уређујете ову страницу.',
+'userpage-userdoesnotexist-view' => 'Кориснички налог "$1" није регистрован.',
+'blocked-notice-logextract' => 'Овај корисник је тренутно блокриан.
+Подаци о последњем блокирању су приложени испод као додатна информација:',
'clearyourcache' => "'''Запамтите:''' Након снимања, можда морате очистити кеш вашег браузера да бисте видели промене. '''Mozilla / Firefox / Safari:''' држите ''Shift'' док кликћете ''Reload'' или притисните ''Shift+Ctrl+R'' (''Cmd-Shift-R'' на ''Apple Mac'' машини); '''IE:''' држите ''Ctrl'' док кликћете ''Refresh'' или притисните ''Ctrl-F5''; '''Konqueror:''': само кликните ''Reload'' дугме или притисните ''F5''; корисници '''Оpera''' браузера можда морају да у потпуности очисте свој кеш преко ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Савет:''' Кориситите 'Прикажи претпреглед' дугме да тестирате свој нови CSS/JS пре снимања.",
+'usercssyoucanpreview' => "'''Савет:''' Кориситите дугме \"{{int:showpreview}}\" дугме да бисте тестирали свој нови CSS пре снимања.",
+'userjsyoucanpreview' => "'''Савет:''' Кориситите дугме \"{{int:showpreview}}\" да бисте тестирали свој нови JavaScript пре снимања.",
'usercsspreview' => "'''Запамтите ово је само претпреглед вашег CSS.'''
'''Још увек није снимљен!'''",
'userjspreview' => "'''Запамтите ово је само претпреглед ваше JavaScript-е и да још увек није снимљен!'''",
@@ -857,13 +876,14 @@ $2',
Можда би било добро да ископирате текст у неки едитор текста и снимите га за касније.'''
Администратор који је закључао базу је дао следеће објашњење: $1",
-'protectedpagewarning' => "''''''ПАЖЊА:''' Ова страница је закључана тако да само корисници са администраторским привилегијама могу да је мењају.'''",
+'protectedpagewarning' => "'''Напомена: Ова страница је закључана тако да само корисници са администраторским правима могу да је мењају.'''
+Историја најскоријих измена је приказана испод:",
'semiprotectedpagewarning' => "'''Напомена:''' Ова страна је закључана тако да је само регистровани корисници могу уређивати.",
'cascadeprotectedwarning' => "'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само корисници са администраторским привилегијама јер је укључена у преносиву заштиту {{PLURAL:$1|следеће стране|следећих страна}}:",
-'titleprotectedwarning' => "'''ПРАЖЊА: Ова страница је закључана тако да само неки корисници са [[Special:ListGroupRights|одређеним правима]] могу да је направе.'''",
-'templatesused' => 'Шаблони који се користе на овој страници:',
-'templatesusedpreview' => 'Шаблони који се користе у овом претпрегледу:',
-'templatesusedsection' => 'Шаблони који се користе у овом одељку:',
+'titleprotectedwarning' => "'''Напомена: Ова страна је закључана тако да само корисници са [[Special:ListGroupRights|одређеним правима]] могу да је направе.'''",
+'templatesused' => '{{PLURAL:$1|Шаблон коришћен|Шаблони коришћени}} на овој страни:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон коришћен|Шаблони коришћени}} у овом претпрегледу:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблон коришћен|Шаблони коришћени}} у овом одељку:',
'template-protected' => '(заштићено)',
'template-semiprotected' => '(полузаштићено)',
'hiddencategories' => 'Ова страна је члан {{PLURAL:$1|1 скривене категорије|$1 скривене категорије|$1 скривених категорија}}:',
@@ -872,16 +892,18 @@ $2',
'nocreatetext' => 'На {{SITENAME}} је забрањено прављење нових чланака.
Можете се вратити назад и уређивати постојећи чланак, или [[Special:UserLogin|се пријавите или направите налог]].',
'nocreate-loggedin' => 'Немате овлашћења да правите нове стране.',
+'sectioneditnotsupported-title' => 'Мењање делова странице није подржано.',
+'sectioneditnotsupported-text' => 'Мењање делова странице није подржано на овој страници.',
'permissionserrors' => 'Грешке у овлашћењима',
'permissionserrorstext' => 'Немате овлашћење да урадите то из {{PLURAL:$1|следећег|следећих}} разлога:',
'permissionserrorstext-withaction' => 'Немате дозволу да $2, због следећег: {{PLURAL:$1|разлога|разлога}}:',
-'recreate-deleted-warn' => "'''Упозорење: Поново правите страницу која је претходно обрисана.'''
+'recreate-moveddeleted-warn' => "'''Упозорење: Поново правите страницу која је претходно обрисана.'''
-Требало би да размотрите да ли је прикладно да наставите са уређивањем ове странице.
-Дневник брисања ове стране је приказан овде:",
-'deleted-notice' => 'Ова страна је обрисана.
-Историја брисања ове стране је приложена испод, као додатна информација.',
-'deletelog-fulllog' => 'Погледај целу историју',
+Требалo би да размотрите да ли је прикладно да наставите са уређивањем ове странице.
+Историје брисања и премештања ове стране су приложени испод:",
+'moveddeleted-notice' => 'Ова страна је обрисана.
+Историје њеног брисања и премештања се налазе испод, као информација.',
+'log-fulllog' => 'Види целу историју',
'edit-hook-aborted' => 'Измена је спречена закаченом функцијом.
Није дато никакво образложење.',
'edit-gone-missing' => 'Страница није могла бити измењена.
@@ -921,7 +943,7 @@ $2',
'currentrev' => 'Тренутна ревизија',
'currentrev-asof' => 'Тренутна ревизија од $1',
'revisionasof' => 'Ревизија од $1',
-'revision-info' => 'Ревизија од $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Ревизија од $1; $2',
'previousrevision' => '← Претходна ревизија',
'nextrevision' => 'Следећа ревизија →',
'currentrevisionlink' => 'Тренутна ревизија',
@@ -934,7 +956,7 @@ $2',
Објашњење: (трен) = разлика са тренутном верзијом,
(посл) = разлика са претходном верзијом, М = мала измена',
'history-fieldset-title' => 'Прегледајте историју',
-'deletedrev' => '[обрисан]',
+'history-show-deleted' => 'Само обрисане',
'histfirst' => 'Најраније',
'histlast' => 'Последње',
'historysize' => '({{PLURAL:$1|1 бајт|$1 бајта|$1 бајтова}})',
@@ -943,71 +965,89 @@ $2',
# Revision feed
'history-feed-title' => 'Контролна историја',
'history-feed-description' => 'Историја ревизија за ову страну на викију',
-'history-feed-item-nocomment' => '$1, $2', # user at time
+'history-feed-item-nocomment' => '$1, $2',
'history-feed-empty' => 'Тражена страна не постоји.
Могуће да је обрисана из викија или преименована.
Покушајте [[Special:Search|да претражите вики]] за релевантне нове стране.',
# Revision deletion
-'rev-deleted-comment' => '(коментар уклоњен)',
-'rev-deleted-user' => '(корисничко име уклоњено)',
-'rev-deleted-event' => '(историја уклоњена)',
-'rev-deleted-text-permission' => "Ова ревизија странице је '''обрисана'''.
-Могуће је да има даљих детаља у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
-'rev-deleted-text-view' => "Ова ревизија странице је '''обрисана'''.
-Пошто сте администратор, можете је видети; Даље детаље можете наћи у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
-'rev-deleted-no-diff' => "Не можете видети ову разлику измена зато што је једна од ревизија '''обрисана'''.
-Можде ћете наћи више детаља у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
-'rev-deleted-unhide-diff' => "Једна од ревизија за овај диф је '''обрисана'''.
-Више информација би се могло наћи у [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} историји брисања].
-Пошто сте администратор, још увек можете да [$1 видите овај диф], ако желите да продужите.",
-'rev-delundel' => 'покажи/сакриј',
-'revisiondelete' => 'Обриши/врати ревизије',
-'revdelete-nooldid-title' => 'Нема одабране ревизије',
-'revdelete-nooldid-text' => 'Нисте одабрали жељену ревизију или ревизије како бисте укључили ове функције.',
-'revdelete-nologtype-title' => 'Није дат тип историје',
-'revdelete-nologtype-text' => 'Нисте навели тип историје над којим желите да изведете ову акцију.',
-'revdelete-toomanytargets-title' => 'Превише циљаних страна',
-'revdelete-toomanytargets-text' => 'Задали сте превише типова циљаних страна на којима треба спровести ову акцију.',
-'revdelete-nologid-title' => 'Неисправан унос у историју',
-'revdelete-nologid-text' => 'Или нисте назначили циљани унос историје, зарад извођења ове функције, или унос који сте навели не постоји.',
-'revdelete-selected' => "'''{{PLURAL:$2|Одабрана ревизија|Одабране ревизије}} за '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Изабрани догађај из историје|Изабрани догађаји из историје}}:'''",
-'revdelete-text' => "'''Обрисане ревизије и догађаји ће још увек бити приказани у историји страна и протокола, али делове њиховог садржаја неће бити јавно доступни.'''
-Други администратори на {{SITENAME}} ће још увек имати приступ овом скривеном садржају и моћи ће да га врате преко истог овог интерфејса, осим ако се поставе додатна ограничења.
-
-Молимо Вас, потврдите да намеравате да урадите ово, да разумете последице, и да ово радите у складу са [[{{MediaWiki:Policy-url}}|политиком]] пројекта.",
-'revdelete-suppress-text' => "Сакривање налога би требало да се користи '''само''' у следећим случајевима:
+'rev-deleted-comment' => '(коментар уклоњен)',
+'rev-deleted-user' => '(корисничко име уклоњено)',
+'rev-deleted-event' => '(историја уклоњена)',
+'rev-deleted-user-contribs' => '[корисничко име или IP адреса су обрисани - измена је сакривена из списка доприноса]',
+'rev-deleted-text-permission' => "Ова ревизија странице је '''обрисана'''.
+Детаљи везани за ово брисање би се могли налазити у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
+'rev-deleted-text-unhide' => "Ова ревизија странице је '''обрисана'''.
+Детаљи везани за ово брисање би се могли налазити [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].
+Пошто сте администратор, такође можете [$1 погледати ову ревизију], уколико желите.",
+'rev-deleted-text-view' => "Ова ревизија странице је '''обрисана'''.
+Пошто сте администратор, можете је видети; Детаљи везани за ово брисање би се могли налазити у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
+'rev-deleted-no-diff' => "Не можете видети ову разлику измена зато што је једна од ревизија '''обрисана'''.
+Детаљи везани за ово брисање би се могли налазити у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
+'rev-suppressed-no-diff' => "Не можете да видите овај диф зато што је једна од ревизија '''обрисана'''.",
+'rev-deleted-unhide-diff' => "Једна од ревизија за овај диф је '''обрисана'''.
+Детаљи везани за ово брисање би се могли налазити у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].
+Пошто сте администратор, ипак можете [$1 видети овај диф], ако желите да наставите.",
+'rev-delundel' => 'покажи/сакриј',
+'rev-showdeleted' => 'покажи',
+'revisiondelete' => 'Обриши/врати ревизије',
+'revdelete-nooldid-title' => 'Нема одабране ревизије',
+'revdelete-nooldid-text' => 'Нисте одабрали жељену ревизију или ревизије како бисте укључили ове функције.',
+'revdelete-nologtype-title' => 'Није дат тип историје',
+'revdelete-nologtype-text' => 'Нисте навели тип историје над којим желите да изведете ову акцију.',
+'revdelete-nologid-title' => 'Неисправан унос у историју',
+'revdelete-nologid-text' => 'Или нисте назначили циљани унос историје, зарад извођења ове функције, или унос који сте навели не постоји.',
+'revdelete-no-file' => 'Тражени фајл не постоји.',
+'revdelete-show-file-confirm' => 'Да ли сте сигурни да желите да видите обрисану ревизију фајла "<nowiki>$1</nowiki>" од $2 у $3?',
+'revdelete-show-file-submit' => 'Да',
+'revdelete-selected' => "'''{{PLURAL:$2|Одабрана ревизија|Одабране ревизије}} за '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Изабрани догађај из историје|Изабрани догађаји из историје}}:'''",
+'revdelete-text' => "'''Обрисане ревизије и догађаји ће још увек бити приказани у историји страна и протокола, али делове њиховог садржаја неће бити јавно доступни.'''
+Други администратори на {{SITENAME}} ће још увек имати приступ овом скривеном садржају и моћи ће да га врате преко истог овог интерфејса, осим ако се поставе додатна ограничења.",
+'revdelete-suppress-text' => "Сакривање налога би требало да се користи '''само''' у следећим случајевима:
* Вероватно злонамерну информацију
* Неодговарајуће личне податке
*: ''кућне адресе и телефонске бројеве, бројеве социјалних услуга, итд.''",
-'revdelete-legend' => 'Постави видне рестрикције',
-'revdelete-hide-text' => 'Сакриј текст ревизије',
-'revdelete-hide-name' => 'Сакриј акцију и циљ.',
-'revdelete-hide-comment' => 'Сакриј опис измене',
-'revdelete-hide-user' => 'Сакриј корисничко име/ИП адресу корисника који је уређивао страницу',
-'revdelete-hide-restricted' => 'Склони податке како од администратора, тако и од свих осталих',
-'revdelete-suppress' => 'Сакриј податке од сисопа и осталих.',
-'revdelete-hide-image' => 'Сакриј садржај фајла',
-'revdelete-unsuppress' => 'Уклони забране над опорављеним верзијама.',
-'revdelete-log' => 'Разлог:',
-'revdelete-submit' => 'Примени на изабране ревизије',
-'revdelete-logentry' => 'промењен приказ ревизије за [[$1]]',
-'logdelete-logentry' => 'промењена видност догађаја за страну [[$1]]',
-'revdelete-success' => "'''Видљивост ревизије је успешно подешена.'''",
-'logdelete-success' => "'''Видност лога је успешно подешена.'''",
-'revdel-restore' => 'Промена видности',
-'pagehist' => 'Историја стране',
-'deletedhist' => 'Обрисана историја',
-'revdelete-content' => 'садржај',
-'revdelete-summary' => 'опис измене',
-'revdelete-uname' => 'корисничко име',
-'revdelete-restricted' => 'ограничења за сисопе су примењена',
-'revdelete-unrestricted' => 'ограничења за сисопе су уклоњена',
-'revdelete-hid' => 'сакривено: $1',
-'revdelete-unhid' => 'откривено: $1',
-'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|ревизију|ревизије|ревизија}}',
-'logdelete-log-message' => '$1 за $2 {{PLURAL:$2|догађај|догађаја}}',
+'revdelete-legend' => 'Постави видне рестрикције',
+'revdelete-hide-text' => 'Сакриј текст ревизије',
+'revdelete-hide-image' => 'Сакриј садржај фајла',
+'revdelete-hide-name' => 'Сакриј акцију и циљ.',
+'revdelete-hide-comment' => 'Сакриј опис измене',
+'revdelete-hide-user' => 'Сакриј корисничко име/ИП адресу корисника који је уређивао страницу',
+'revdelete-hide-restricted' => 'Склони податке како од администратора, тако и од свих осталих',
+'revdelete-radio-same' => '(не мењај)',
+'revdelete-radio-set' => 'Да',
+'revdelete-radio-unset' => 'Не',
+'revdelete-suppress' => 'Сакриј податке од сисопа и осталих.',
+'revdelete-unsuppress' => 'Уклони забране над опорављеним верзијама.',
+'revdelete-log' => 'Разлог:',
+'revdelete-submit' => 'Примени на {{PLURAL:$1|изабрану ревизију|изабране ревизије}}',
+'revdelete-logentry' => 'промењен приказ ревизије за [[$1]]',
+'logdelete-logentry' => 'промењена видност догађаја за страну [[$1]]',
+'revdelete-success' => "'''Видљивост ревизије је успешно подешена.'''",
+'revdelete-failure' => "'''Видљивост ревизије није могла бити ажурирана:'''
+$1",
+'logdelete-success' => "'''Видност лога је успешно подешена.'''",
+'revdel-restore' => 'Промена видности',
+'pagehist' => 'Историја стране',
+'deletedhist' => 'Обрисана историја',
+'revdelete-content' => 'садржај',
+'revdelete-summary' => 'опис измене',
+'revdelete-uname' => 'корисничко име',
+'revdelete-restricted' => 'ограничења за сисопе су примењена',
+'revdelete-unrestricted' => 'ограничења за сисопе су уклоњена',
+'revdelete-hid' => 'сакривено: $1',
+'revdelete-unhid' => 'откривено: $1',
+'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|ревизију|ревизије|ревизија}}',
+'logdelete-log-message' => '$1 за $2 {{PLURAL:$2|догађај|догађаја}}',
+'revdelete-reason-dropdown' => '*Уобичајени разлози за брисање
+** Кршење ауторског права
+** Неодговарајуће личне информације
+** Потенцијално увредљиве информације',
+'revdelete-otherreason' => 'Други/додатни разлог:',
+'revdelete-reasonotherlist' => 'Други разлог',
+'revdelete-edit-reasonlist' => 'Уреди разлоге за брисање',
+'revdelete-offender' => 'Аутор ревизије:',
# Suppression log
'suppressionlog' => 'Лог сакривања',
@@ -1042,67 +1082,13 @@ $2',
'mergelogpagetext' => 'Испод се налази списак скорашњих спајања верзија једне стране у другу.',
# Diffs
-'history-title' => 'Историја верзија за "$1"',
-'difference' => '(Разлика између ревизија)',
-'lineno' => 'Линија $1:',
-'compareselectedversions' => 'Упореди означене верзије',
-'visualcomparison' => 'Визуелно поређење',
-'wikicodecomparison' => 'Поређење по викитексту',
-'editundo' => 'врати',
-'diff-multi' => '({{PLURAL:$1|Једна ревизија није приказана|$1 ревизије нису приказане|$1 ревизија није приказано}}.)',
-'diff-movedto' => 'премештено на $1',
-'diff-styleadded' => '$1 стил додат',
-'diff-added' => '$1 додат',
-'diff-changedto' => 'промењено на $1',
-'diff-movedoutof' => 'измештено из $1',
-'diff-styleremoved' => '$1 стил уклоњен',
-'diff-removed' => '$1 уклоњен',
-'diff-changedfrom' => 'промењено са $1',
-'diff-src' => 'код',
-'diff-withdestination' => 'са дестинацијом $1',
-'diff-with' => '&#32;са $1 $2',
-'diff-with-final' => '&#32;и $1 $2',
-'diff-width' => 'ширина',
-'diff-height' => 'висина',
-'diff-p' => "'''параграф'''",
-'diff-blockquote' => "'''наводник'''",
-'diff-h1' => "'''заглавље (ниво 1)'''",
-'diff-h2' => "'''заглавље (ниво 2)'''",
-'diff-h3' => "'''заглавље (ниво 3)'''",
-'diff-h4' => "'''заглавље (ниво 4)'''",
-'diff-h5' => "'''заглавље (ниво 5)'''",
-'diff-pre' => "'''преформатирани блок'''",
-'diff-div' => 'одељак',
-'diff-ul' => "'''неуређени списак'''",
-'diff-ol' => "'''уређени списак'''",
-'diff-li' => "'''елемент списка'''",
-'diff-table' => "'''табела'''",
-'diff-tbody' => "'''садржај табеле'''",
-'diff-tr' => "'''ред'''",
-'diff-td' => "'''ћелија'''",
-'diff-th' => "'''хедер'''",
-'diff-br' => "'''нова линија'''",
-'diff-hr' => "'''хоризонтална линија'''",
-'diff-code' => "'''део са рачунарским кодом'''",
-'diff-dl' => "'''дефинициони списак'''",
-'diff-dt' => "'''дефинициони појам'''",
-'diff-dd' => "'''дефиниција'''",
-'diff-input' => "'''унос'''",
-'diff-form' => "'''форма'''",
-'diff-img' => "'''слика'''",
-'diff-span' => "''span''",
-'diff-a' => "'''веза'''",
-'diff-i' => "'''курзив'''",
-'diff-b' => "'''подебљано'''",
-'diff-strong' => "'''појачано'''",
-'diff-em' => "'''истакнуто'''",
-'diff-font' => "'''тип слова'''",
-'diff-big' => "'''велико'''",
-'diff-del' => "'''обрисано'''",
-'diff-tt' => "'''фиксирана ширина'''",
-'diff-sub' => "'''субскрипт'''",
-'diff-sup' => "'''суперскрипт'''",
-'diff-strike' => "'''прецртано'''",
+'history-title' => 'Историја верзија за "$1"',
+'difference' => '(Разлика између ревизија)',
+'lineno' => 'Линија $1:',
+'compareselectedversions' => 'Упореди означене верзије',
+'showhideselectedversions' => 'Прикажи/сакриј одабране ревизије',
+'editundo' => 'врати',
+'diff-multi' => '({{PLURAL:$1|Једна ревизија није приказана|$1 ревизије нису приказане|$1 ревизија није приказано}}.)',
# Search results
'searchresults' => 'Резултати претраге',
@@ -1110,28 +1096,25 @@ $2',
'searchresulttext' => 'За више информација о претраживању {{SITENAME}}, погледајте [[{{MediaWiki:Helppage}}|Претраживање {{SITENAME}}]].',
'searchsubtitle' => 'Тражили сте \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|све странице које почињу са "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|све странице које повезују на "$1"]])',
'searchsubtitleinvalid' => "Тражили сте '''$1'''",
-'noexactmatch' => "'''Не постоји страница са насловом \"\$1\".''' Можете [[:\$1|написати ту страницу]].",
-'noexactmatch-nocreate' => "'''Не постоји страница са насловом \"\$1\".'''",
'toomanymatches' => 'Превише погодака је врећно. Измените упит.',
'titlematches' => 'Наслов странице одговара',
'notitlematches' => 'Ниједан наслов странице не одговара',
'textmatches' => 'Текст странице одговара',
'notextmatches' => 'Ниједан текст странице не одговара',
-'prevn' => 'претходних $1',
-'nextn' => 'следећих $1',
+'prevn' => 'претходних {{PLURAL:$1|$1}}',
+'nextn' => 'следећих {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Претходни $1 резултат|Претходних $1 резултата}}',
'nextn-title' => '{{PLURAL:$1|Следећи $1 резултат|Следећих $1 резултата}}',
'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултата}} по страни',
-'viewprevnext' => 'Погледај ($1) ($2) ($3).',
+'viewprevnext' => 'Погледај ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Опције претраге',
'searchmenu-exists' => "'''Већ постоји чланак под именом \"[[:\$1]]\" на овом Викију'''",
'searchmenu-new' => "'''Направи чланак \"[[:\$1]]\" на овом Викију!'''",
'searchhelp-url' => 'Help:Садржај',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Претражи стране са овим префиксом]]',
-'searchprofile-articles' => 'Стране садржаја',
-'searchprofile-articles-and-proj' => 'Чланци и стране пројекта',
-'searchprofile-project' => 'Стране пројекта',
-'searchprofile-images' => 'Фајлове',
+'searchprofile-articles' => 'Странице са садржајем',
+'searchprofile-project' => 'Стране помоћи и пројекта',
+'searchprofile-images' => 'Мултимедија',
'searchprofile-everything' => 'Све',
'searchprofile-advanced' => 'Напредна',
'searchprofile-articles-tooltip' => 'Тражи у $1',
@@ -1139,8 +1122,6 @@ $2',
'searchprofile-images-tooltip' => 'Претражуј фајлове',
'searchprofile-everything-tooltip' => 'Претражи сав садржај (укључујући стране за разговор)',
'searchprofile-advanced-tooltip' => 'Претражи у сопственим именским просторима',
-'prefs-search-nsdefault' => 'претражуј користећи подразумевана подешавања:',
-'prefs-search-nscustom' => 'Претражуј у прилагођеним именским просторима:',
'search-result-size' => '$1 ({{PLURAL:$2|1 реч|$2 речи}})',
'search-result-score' => 'Релевантност: $1%',
'search-redirect' => '(преусмерење $1)',
@@ -1153,11 +1134,11 @@ $2',
'search-mwsuggest-disabled' => 'без сугестија',
'search-relatedarticle' => 'Сродно',
'mwsuggest-disable' => 'Искључи АЈАКС сугестије',
+'searcheverything-enable' => 'Тражи у свим именским просторима',
'searchrelated' => 'сродно',
'searchall' => 'све',
'showingresults' => "Приказујем испод до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}} почев од #'''$2'''.",
'showingresultsnum' => "Приказујем испод до {{PLURAL:$3|'''1''' резултат|'''$3''' резултата}} почев од #'''$2'''.",
-'showingresultstotal' => "Приказивање {{PLURAL:$4|резултат '''$1''' од '''$3'''|резултата '''$1 - $2''' од '''$3'''}}",
'nonefound' => "'''Напомена''': Само неколико именских простора се претражују по основном подешавању.
Покушајте са префиксом '''све:''' да претражите цео садржај (укључујући странице за разговор, шаблоне итд.), или изаберите жељени именски простор као префикс.",
'search-nonefound' => 'Није било резултата који одговарају упиту.',
@@ -1166,111 +1147,143 @@ $2',
'powersearch-ns' => 'Тражи у именским просторима:',
'powersearch-redir' => 'Списак преусмерења',
'powersearch-field' => 'Претражи за',
+'powersearch-togglelabel' => 'Одабери:',
+'powersearch-toggleall' => 'Све',
+'powersearch-togglenone' => 'Ништа',
'search-external' => 'Спољашња претрага',
'searchdisabled' => '<p>Извињавамо се! Пуна претрага текста је привремено онемогућена, због бржег рада {{SITENAME}}. У међувремену, можете користити Гугл претрагу испод, која може бити застарела.</p>',
+# Quickbar
+'qbsettings' => 'Брза палета',
+'qbsettings-none' => 'Никаква',
+'qbsettings-fixedleft' => 'Причвршћена лево',
+'qbsettings-fixedright' => 'Причвршћена десно',
+'qbsettings-floatingleft' => 'Плутајућа лево',
+'qbsettings-floatingright' => 'Плутајућа десно',
+
# Preferences page
-'preferences' => 'Подешавања',
-'mypreferences' => 'Моја подешавања',
-'prefs-edits' => 'Број измена:',
-'prefsnologin' => 'Нисте пријављени',
-'prefsnologintext' => 'Морате бити <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} пријављени]</span> да бисте подешавали корисничка подешавања.',
-'prefsreset' => 'Враћена су ускладиштена подешавања.',
-'qbsettings' => 'Брза палета',
-'qbsettings-none' => 'Никаква',
-'qbsettings-fixedleft' => 'Причвршћена лево',
-'qbsettings-fixedright' => 'Причвршћена десно',
-'qbsettings-floatingleft' => 'Плутајућа лево',
-'qbsettings-floatingright' => 'Плутајућа десно',
-'changepassword' => 'Промени лозинку',
-'skin' => 'Кожа',
-'skin-preview' => 'Преглед',
-'math' => 'Математике',
-'dateformat' => 'Формат датума',
-'datedefault' => 'Није битно',
-'datetime' => 'Датум и време',
-'math_failure' => 'Неуспех при парсирању',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функција',
-'math_lexing_error' => 'речничка грешка',
-'math_syntax_error' => 'синтаксна грешка',
-'math_image_error' => 'PNG конверзија неуспешна; проверите тачну инсталацију latex-а, dvips-а, gs-а и convert-а',
-'math_bad_tmpdir' => 'Не могу да напишем или направим привремени math директоријум',
-'math_bad_output' => 'Не могу да напишем или направим директоријум за math излаз.',
-'math_notexvc' => 'Недостаје извршно texvc; молимо погледајте math/README да бисте подесили.',
-'prefs-personal' => 'Корисничка подешавања',
-'prefs-rc' => 'Скорашње измене',
-'prefs-watchlist' => 'Списак надгледања',
-'prefs-watchlist-days' => 'Број дана који треба да се види на списку надгледања:',
-'prefs-watchlist-days-max' => '(максимум 7 дана)',
-'prefs-watchlist-edits' => 'Број измена који треба да се види на проширеном списку надгледања:',
-'prefs-watchlist-edits-max' => '(максималан број: 1000)',
-'prefs-misc' => 'Разно',
-'prefs-resetpass' => 'Промени лозинку',
-'saveprefs' => 'Сачувај',
-'resetprefs' => 'Очисти измене',
-'restoreprefs' => 'Врати сва подразумевана подешавања',
-'textboxsize' => 'Величине текстуалног поља',
-'prefs-edit-boxsize' => 'Величина прозора за писање измене.',
-'rows' => 'Редова',
-'columns' => 'Колона',
-'searchresultshead' => 'Претрага',
-'resultsperpage' => 'Погодака по страници:',
-'contextlines' => 'Линија по поготку:',
-'contextchars' => 'Карактера контекста по линији:',
-'stub-threshold' => 'Праг за форматирање <a href="#" class="stub">линка као клице</a> (у бајтовима):',
-'recentchangesdays' => 'Број дана за приказ у скорашњим изменема:',
-'recentchangesdays-max' => '(mмаксимум $1 {{PLURAL:$1|дан|дана}})',
-'recentchangescount' => 'Подразумевани број измена које ће бити приказане у скорашњим изменама, и историјама страница и протокола:',
-'savedprefs' => 'Ваша подешавања су сачувана.',
-'timezonelegend' => 'Часовна зона:',
-'timezonetext' => 'Број сати за који се ваше локално време разликује од серверског времена (UTC).',
-'localtime' => 'Локално време:',
-'timezoneselect' => 'Временска зона:',
-'timezoneuseserverdefault' => 'Користи основна подешавања',
-'timezoneuseoffset' => 'Друго (одреди одступање)',
-'timezoneoffset' => 'Одступање¹:',
-'servertime' => 'Време на серверу:',
-'guesstimezone' => 'Попуни из браузера',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктик',
-'timezoneregion-arctic' => 'Арктик',
-'timezoneregion-asia' => 'Азија',
-'timezoneregion-atlantic' => 'Атлантски океан',
-'timezoneregion-australia' => 'Аустралија',
-'timezoneregion-europe' => 'Европа',
-'timezoneregion-indian' => 'Индијски океан',
-'timezoneregion-pacific' => 'Пацифички океан',
-'allowemail' => 'Омогући е-пошту од других корисника',
-'prefs-searchoptions' => 'Опције претраге',
-'prefs-namespaces' => 'Именски простори',
-'defaultns' => 'По стандарду тражи у овим именским просторима:',
-'default' => 'стандард',
-'files' => 'Фајлови',
-'prefs-custom-css' => 'Кориснички CSS',
-'prefs-custom-js' => 'Кориснички JS',
+'preferences' => 'Подешавања',
+'mypreferences' => 'Моја подешавања',
+'prefs-edits' => 'Број измена:',
+'prefsnologin' => 'Нисте пријављени',
+'prefsnologintext' => 'Морате бити <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} пријављени]</span> да бисте подешавали корисничка подешавања.',
+'changepassword' => 'Промени лозинку',
+'prefs-skin' => 'Кожа',
+'skin-preview' => 'Преглед',
+'prefs-math' => 'Математике',
+'datedefault' => 'Није битно',
+'prefs-datetime' => 'Датум и време',
+'prefs-personal' => 'Корисничка подешавања',
+'prefs-rc' => 'Скорашње измене',
+'prefs-watchlist' => 'Списак надгледања',
+'prefs-watchlist-days' => 'Број дана који треба да се види на списку надгледања:',
+'prefs-watchlist-days-max' => '(максимум 7 дана)',
+'prefs-watchlist-edits' => 'Број измена који треба да се види на проширеном списку надгледања:',
+'prefs-watchlist-edits-max' => '(максималан број: 1000)',
+'prefs-watchlist-token' => 'Печат списка надгледања:',
+'prefs-misc' => 'Разно',
+'prefs-resetpass' => 'Промени лозинку',
+'prefs-email' => 'Опције електронске поште',
+'prefs-rendering' => 'Изглед',
+'saveprefs' => 'Сачувај',
+'resetprefs' => 'Очисти измене',
+'restoreprefs' => 'Врати сва подразумевана подешавања',
+'prefs-editing' => 'Величине текстуалног поља',
+'prefs-edit-boxsize' => 'Величина прозора за писање измене.',
+'rows' => 'Редова',
+'columns' => 'Колона',
+'searchresultshead' => 'Претрага',
+'resultsperpage' => 'Погодака по страници:',
+'contextlines' => 'Линија по поготку:',
+'contextchars' => 'Карактера контекста по линији:',
+'stub-threshold' => 'Праг за форматирање <a href="#" class="stub">линка као клице</a> (у бајтовима):',
+'recentchangesdays' => 'Број дана за приказ у скорашњим изменема:',
+'recentchangesdays-max' => '(mмаксимум $1 {{PLURAL:$1|дан|дана}})',
+'recentchangescount' => 'Подразумевани број измена, који ће бити приказан:',
+'savedprefs' => 'Ваша подешавања су сачувана.',
+'timezonelegend' => 'Часовна зона:',
+'localtime' => 'Локално време:',
+'timezoneuseserverdefault' => 'Користи основна подешавања',
+'timezoneuseoffset' => 'Друго (одреди одступање)',
+'timezoneoffset' => 'Одступање¹:',
+'servertime' => 'Време на серверу:',
+'guesstimezone' => 'Попуни из браузера',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктик',
+'timezoneregion-arctic' => 'Арктик',
+'timezoneregion-asia' => 'Азија',
+'timezoneregion-atlantic' => 'Атлантски океан',
+'timezoneregion-australia' => 'Аустралија',
+'timezoneregion-europe' => 'Европа',
+'timezoneregion-indian' => 'Индијски океан',
+'timezoneregion-pacific' => 'Пацифички океан',
+'allowemail' => 'Омогући е-пошту од других корисника',
+'prefs-searchoptions' => 'Опције претраге',
+'prefs-namespaces' => 'Именски простори',
+'defaultns' => 'У супротном, тражи у овим именским просторима:',
+'default' => 'стандард',
+'prefs-files' => 'Фајлови',
+'prefs-custom-css' => 'Кориснички CSS',
+'prefs-custom-js' => 'Кориснички JS',
+'prefs-emailconfirm-label' => 'Потврда е-поште:',
+'prefs-textboxsize' => 'Величина прозора за писање измене',
+'youremail' => 'Адреса ваше е-поште *',
+'username' => 'Корисничко име:',
+'uid' => 'Кориснички ИД:',
+'prefs-memberingroups' => 'Члан {{PLURAL:$1|групе|група}}:',
+'prefs-registration' => 'Време регистрације:',
+'yourrealname' => 'Ваше право име *',
+'yourlanguage' => 'Језик:',
+'yourvariant' => 'Варијанта:',
+'yournick' => 'Надимак:',
+'badsig' => 'Грешка у потпису, проверите HTML тагове.',
+'badsiglength' => 'Ваш потпис је предугачак.
+Мора бити краћи од $1 {{PLURAL:$1|карактер|карактера}}.',
+'yourgender' => 'Пол:',
+'gender-unknown' => 'Неназначен',
+'gender-male' => 'Мушки',
+'gender-female' => 'Женски',
+'prefs-help-gender' => 'Необавезно: користи се за исправно обраћање софтвера корисницима, зависно од њиховог пола.
+Ова информација ће бити јавна.',
+'email' => 'Е-пошта',
+'prefs-help-realname' => '* Право име (опционо): ако изаберете да дате име, ово ће бити коришћено за приписивање за ваш рад.',
+'prefs-help-email' => 'Е-пошта је опциона, али омогућује осталима да вас контактирају преко ваше корисничке стране или стране разговора са корисником без потребе да одајете свој идентитет.',
+'prefs-help-email-required' => 'Адреса е-поште је потребна.',
+'prefs-info' => 'Основне информације',
+'prefs-i18n' => 'Интернационализација',
+'prefs-signature' => 'Потпис',
+'prefs-dateformat' => 'Формат датума',
+'prefs-timeoffset' => 'Временска разлика',
+'prefs-advancedediting' => 'Напредне опције',
+'prefs-advancedrc' => 'Напредне опције',
+'prefs-advancedrendering' => 'Напредне опције',
+'prefs-advancedsearchoptions' => 'Напредне опције',
+'prefs-advancedwatchlist' => 'Напредне опције',
+'prefs-display' => 'Опције приказа',
+'prefs-diffs' => 'Ревизије',
# User rights
-'userrights' => 'Управљање корисничким правима', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Управљај корисничким групама',
-'userrights-user-editname' => 'Унесите корисничко име:',
-'editusergroup' => 'Мењај групе корисника',
-'editinguser' => "Мењате корисничка права корисника '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Промени корисничке групе',
-'saveusergroups' => 'Сачувај корисничке групе',
-'userrights-groupsmember' => 'Члан:',
-'userrights-groups-help' => 'Можете контролисати групе у којима се овај корисник налази.
+'userrights' => 'Управљање корисничким правима',
+'userrights-lookup-user' => 'Управљај корисничким групама',
+'userrights-user-editname' => 'Унесите корисничко име:',
+'editusergroup' => 'Мењај групе корисника',
+'editinguser' => "Мењате корисничка права корисника '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Промени корисничке групе',
+'saveusergroups' => 'Сачувај корисничке групе',
+'userrights-groupsmember' => 'Члан:',
+'userrights-groupsmember-auto' => 'Имплицитни члан од:',
+'userrights-groups-help' => 'Можете контролисати групе у којима се овај корисник налази.
* Штиклирани квадратић означава да се корисник налази у групи.
* Квадратић који није штиклиран означава да се корисник не налази у групи.
* Звездица (*) означава да ви не можете уклонити групу уколико сте је додали, или обратно.',
-'userrights-reason' => 'Разлог:',
-'userrights-no-interwiki' => 'Немате овлашћења да мењате корисничка права на осталим викијима.',
-'userrights-nodatabase' => 'База података $1 не постоји или је локална.',
-'userrights-nologin' => 'Морате се [[Special:UserLogin|пријавити]] са администраторским налогом да додате корисничка права.',
-'userrights-notallowed' => 'Ваш налог нема овлашћења да додаје корисника права.',
-'userrights-changeable-col' => 'Групе које можете мењати',
-'userrights-unchangeable-col' => 'Групе које не можете мењати',
+'userrights-reason' => 'Разлог:',
+'userrights-no-interwiki' => 'Немате овлашћења да мењате корисничка права на осталим викијима.',
+'userrights-nodatabase' => 'База података $1 не постоји или је локална.',
+'userrights-nologin' => 'Морате се [[Special:UserLogin|пријавити]] са администраторским налогом да додате корисничка права.',
+'userrights-notallowed' => 'Ваш налог нема овлашћења да додаје корисника права.',
+'userrights-changeable-col' => 'Групе које можете мењати',
+'userrights-unchangeable-col' => 'Групе које не можете мењати',
# Groups
'group' => 'Група:',
@@ -1336,6 +1349,8 @@ $2',
'right-editprotected' => 'измена заштићених страна (без могућности измене степена заштите)',
'right-editinterface' => 'Уреди кориснички интерфејс',
'right-editusercssjs' => 'мењање туђих CSS и JS фајлова',
+'right-editusercss' => 'мењање туђих CSS фајлова',
+'right-edituserjs' => 'мењање туђих JS фајлова',
'right-rollback' => 'брзо враћање измена последњег сарадника који је мењао конкретну страну',
'right-markbotedits' => 'означавање враћених страна као измена које је направио бот',
'right-noratelimit' => 'не бити погођен лимитима',
@@ -1352,6 +1367,8 @@ $2',
'right-siteadmin' => 'закључавање и откључавање базе података',
'right-reset-passwords' => 'Обнављање лозинки других корисника',
'right-override-export-depth' => 'Извези стране, укључујући повезане стране, до дубине 5',
+'right-versiondetail' => 'Покажи детаљније информације о верзији софтвера',
+'right-sendemail' => 'Пошаљи е-пошту осталим корисницима',
# User rights log
'rightslog' => 'Историја корисничких права',
@@ -1401,6 +1418,15 @@ $2',
'recentchanges-legend' => 'Подешавања скорашњих измена',
'recentchangestext' => 'Пратите најскорије измене на викију на овој страници.',
'recentchanges-feed-description' => 'Пратите скорашње измене уз помоћ овог фида.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 - нова страница',
+'recentchanges-label-newpage' => 'Овом изменом је направљена нова страна.',
+'recentchanges-legend-minor' => '$1 - мала измена',
+'recentchanges-label-minor' => 'Ово је мала измена',
+'recentchanges-legend-bot' => '$1 - измена бота',
+'recentchanges-label-bot' => 'Ову измену је направио бот',
+'recentchanges-legend-unpatrolled' => '$1 - непатролирана измена',
+'recentchanges-label-unpatrolled' => 'Ова измена још увек није патролирана',
'rcnote' => "Испод {{PLURAL:$1|је '''1''' промена|су последње '''$1''' промене|су последњих '''$1''' промена}} у {{PLURAL:$2|последњем дану|последњa '''$2''' дана|последњих '''$2''' дана}}, од $5, $4.",
'rcnotefrom' => 'Испод су промене од <b>$2</b> (до <b>$1</b> приказано).',
'rclistfrom' => 'Покажи нове промене почев од $1',
@@ -1427,6 +1453,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'Сродне промене',
+'recentchangeslinked-feed' => 'Сродне промене',
+'recentchangeslinked-toolbox' => 'Сродне промене',
'recentchangeslinked-title' => 'Сродне промене за "$1"',
'recentchangeslinked-noresult' => 'Нема измена на повезаним страницама за одабрани период.',
'recentchangeslinked-summary' => "Ова посебна страница показује списак поселењих промена на страницама које су повезане (или чланови одређене категорије).
@@ -1437,8 +1465,8 @@ $2',
# Upload
'upload' => 'Пошаљи фајл',
'uploadbtn' => 'Пошаљи фајл',
-'reupload' => 'Поново пошаљи',
'reuploaddesc' => 'Врати се на упитник за слање.',
+'upload-tryagain' => 'Пошаљи измењени опис фајла',
'uploadnologin' => 'Нисте пријављени',
'uploadnologintext' => 'Морате бити [[Special:UserLogin|пријављени]]
да бисте слали фајлове.',
@@ -1470,6 +1498,7 @@ $2',
'minlength1' => 'Имена фајлова морају имати најмање један карактер.',
'illegalfilename' => 'Фајл "$1" садржи карактере који нису дозвољени у називима страница. Молимо Вас промените име фајла и поново га пошаљите.',
'badfilename' => 'Име слике је промењено у "$1".',
+'filetype-mime-mismatch' => 'Екстензија фајла не одговара MIME типу.',
'filetype-badmime' => 'Није дозвољено слати фајлове MIME типа "$1".',
'filetype-bad-ie-mime' => 'Овај фајл не може бити послат зато што би Интернет Експлорер могао да га детектује "$1", што је онемогућен и потенцијално опасан тип фајла.',
'filetype-unwanted-type' => "'''\".\$1\"''' није пожељан тип фајла.
@@ -1491,7 +1520,6 @@ $2',
* Име фајла који шаљете: '''<tt>[[:$1]]</tt>'''
* Име постојећег фајла: '''<tt>[[:$2]]</tt>'''
Молимо изаберите друго име.",
-'fileexists-thumb' => "<center>'''Постојећи фајл'''</center>",
'fileexists-thumbnail-yes' => "Овај фајл је највероватније умањена верзија слике. [[$1|thumb]]
Молимо вас проверите фајл '''<tt>[[:$1]]</tt>'''.
Уколико је дати фајл иста слика или оригинална слика, није потребно да шаљете додатно умањену верзију исте.",
@@ -1507,6 +1535,7 @@ $2',
Требало би да проверите историју брисања фајла пре поновног слања.',
'successfulupload' => 'Успешно слање',
'uploadwarning' => 'Упозорење при слању',
+'uploadwarning-text' => 'Молимо Вас да измените опис фајла испод и покушате поново.',
'savefile' => 'Сними фајл',
'uploadedimage' => 'послао "[[$1]]"',
'overwroteimage' => 'послата нова верзија "[[$1]]"',
@@ -1515,11 +1544,14 @@ $2',
'php-uploaddisabledtext' => 'Слање фајлова је онемогућено у самом PHP-у.
Молимо, проверите подешавања file_uploads.',
'uploadscripted' => 'Овај фајл садржи ХТМЛ или код скрипте које интернет браузер може погрешно да интерпретира.',
-'uploadcorrupt' => 'Фајл је неисправан или има нетачну екстензију. Молимо проверите фајл и пошаљите га поново.',
'uploadvirus' => 'Фајл садржи вирус! Детаљи: $1',
+'upload-source' => 'Изворни фајл',
'sourcefilename' => 'Име фајла извора:',
+'sourceurl' => 'Изворна адреса:',
'destfilename' => 'Циљано име фајла:',
'upload-maxfilesize' => 'Максимална величина фајла: $1',
+'upload-description' => 'Опис фајла',
+'upload-options' => 'Опције слања',
'watchthisupload' => 'Надгледај овај фајл',
'filewasdeleted' => 'Фајл са овим именом је раније послат, а касније обрисан. Требало би да проверите $1 пре него што наставите са поновним слањем.',
'upload-wasdeleted' => "'''Паћња: Шаљете фајл који је претходно обрисан.'''
@@ -1528,13 +1560,28 @@ $2',
Разлог брисања овог фајла раније је:",
'filename-bad-prefix' => "Име овог фајла почиње са '''\"\$1\"''', што није описно име, најчешће је назван аутоматски са дигиталним фотоапаратом. Молимо изаберите описније име за ваш фајл.",
-'upload-proto-error' => 'Некоректни протокол',
-'upload-proto-error-text' => 'Слање екстерних фајлова захтева УРЛове који почињу са <code>http://</code> или <code>ftp://</code>.',
-'upload-file-error' => 'Интерна грешка',
-'upload-file-error-text' => 'Дошло је до интерне грешке при покушају отварања привременог фајла на серверу.
+'upload-proto-error' => 'Некоректни протокол',
+'upload-proto-error-text' => 'Слање екстерних фајлова захтева УРЛове који почињу са <code>http://</code> или <code>ftp://</code>.',
+'upload-file-error' => 'Интерна грешка',
+'upload-file-error-text' => 'Дошло је до интерне грешке при покушају отварања привременог фајла на серверу.
Контактирајте [[Special:ListUsers/sysop|администратора]].',
-'upload-misc-error' => 'Непозната грешка при слању фајла',
-'upload-misc-error-text' => 'Непозната грешка при слању фајла. Проверите да ли је УРЛ исправан и покушајте поново. Ако проблем остане, контактирајте систем администратора.',
+'upload-misc-error' => 'Непозната грешка при слању фајла',
+'upload-misc-error-text' => 'Непозната грешка при слању фајла. Проверите да ли је УРЛ исправан и покушајте поново. Ако проблем остане, контактирајте систем администратора.',
+'upload-too-many-redirects' => 'URL је садржао превише преусмерења',
+'upload-unknown-size' => 'Непозната величина',
+'upload-http-error' => 'Дошло је до HTTP грешке: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Приступ онемогућен',
+'img-auth-nofile' => 'Фајл "$1" не постоји.',
+
+# HTTP errors
+'http-invalid-url' => 'Неисправан URL: $1',
+'http-request-error' => 'HTTP захтев није прошао због непознате грешке.',
+'http-read-error' => 'HTTP грешка при читању.',
+'http-timed-out' => 'HTTP захтев је прекорачио време за испуњење.',
+'http-curl-error' => 'Грешка при отварању URL: $1',
+'http-host-unreachable' => 'URL је био недоступан.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'УРЛ није доступан',
@@ -1543,6 +1590,7 @@ $2',
'upload-curl-error28-text' => 'Сајту је требало превише времена да одговори. Проверите да ли сајт ради, или сачекајте мало и покушајте поново.',
'license' => 'Лиценца:',
+'license-header' => 'Лиценца:',
'nolicense' => 'Нема',
'license-nopreview' => '(приказ није доступан)',
'upload_source_url' => ' (исправан, јавно доступан URL)',
@@ -1561,6 +1609,7 @@ $2',
'listfiles_count' => 'Верзије',
# File description page
+'file-anchor-link' => 'Слика',
'filehist' => 'Историја фајла',
'filehist-help' => 'Кликните на датум/време да видите верзију фајла из тог времена.',
'filehist-deleteall' => 'обриши све',
@@ -1575,6 +1624,7 @@ $2',
'filehist-dimensions' => 'Димензије',
'filehist-filesize' => 'Величина фајла',
'filehist-comment' => 'Коментар',
+'filehist-missing' => 'Нема фајла',
'imagelinks' => 'Везе ка фајлу',
'linkstoimage' => '{{PLURAL:$1|Следећа страница користи|$1 Следеће странице користе}} овај фајл:',
'linkstoimage-more' => 'Више од $1 {{PLURAL:$1|странице се веше|страница се вежу}} за овај фајл.
@@ -1584,15 +1634,12 @@ $2',
'morelinkstoimage' => 'Види [[Special:WhatLinksHere/$1|више веза]] према овом фајлу.',
'redirectstofile' => 'Следећи {{PLURAL:$1|фајл се преусмерава|$1 фајла се преусмеравају|$1 фајлова се преусмерава}} на овај фајл:',
'duplicatesoffile' => 'Следећи {{PLURAL:$1|фајл је дупликат|$1 фајла су дупликати|$1 фајлова су дупликати}} овог фајла ([[Special:FileDuplicateSearch/$2|више детаља]]):',
-'sharedupload' => 'Овај фајл је са $1, и може се користити на другим пројектима.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Молимо погледајте $1 за даље информације.',
-'shareduploadwiki-desc' => 'Опис на $1 се налази испод.',
-'shareduploadwiki-linktext' => 'страна за опис фајла',
-'noimage' => 'Не постоји фајл са овим именом, можете $1',
-'noimage-linktext' => 'послати један',
+'sharedupload' => 'Овај фајл је са $1, и може се користити на другим пројектима.',
+'filepage-nofile' => 'Не постоји фајл под тим именом.',
+'filepage-nofile-link' => 'Не постоји фајл са овим именом, али га можете [$1 послати].',
'uploadnewversion-linktext' => 'Пошаљите новију верзију ове датотеке',
-'shared-repo-from' => 'од $1', # $1 is the repository name
-'shared-repo' => 'дељено складиште', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'од $1',
+'shared-repo' => 'дељено складиште',
# File reversion
'filerevert' => 'Врати $1',
@@ -1621,6 +1668,7 @@ $2',
** Кршење ауторских права
** Дупликат',
'filedelete-edit-reasonlist' => 'Уреди разлоге за брисање',
+'filedelete-maintenance' => 'Брисање и враћање фајлова је темпорално онемогућено због одржавања.',
# MIME search
'mimesearch' => 'МИМЕ претрага',
@@ -1642,7 +1690,7 @@ $2',
# Random page
'randompage' => 'Случајна страница',
-'randompage-nopages' => 'Нема страница у именском простору „$1”.',
+'randompage-nopages' => 'Нема страна у {{PLURAL:$2|следећем именском простору|следећим именским просторима}}: $1.',
# Random redirect
'randomredirect' => 'Случајно преусмерење',
@@ -1654,6 +1702,7 @@ $2',
'statistics-header-edits' => 'Статистике измена',
'statistics-header-views' => 'Види статистике',
'statistics-header-users' => 'Статистике корисника',
+'statistics-header-hooks' => 'Друге статистике',
'statistics-articles' => 'Стране са садржајем',
'statistics-pages' => 'Странице',
'statistics-pages-desc' => 'Све стране на овој Вики, укључујући стране за разговор, преусмерења, итд.',
@@ -1683,8 +1732,8 @@ $2',
'brokenredirects' => 'Покварена преусмерења',
'brokenredirectstext' => 'Следећа преусмерења повезују на непостојеће стране:',
-'brokenredirects-edit' => '(уреди)',
-'brokenredirects-delete' => '(обриши)',
+'brokenredirects-edit' => 'уреди',
+'brokenredirects-delete' => 'обриши',
'withoutinterwiki' => 'Странице без интервики веза',
'withoutinterwiki-summary' => 'Следеће странице не вежу ка другим језицима (међувики):',
@@ -1792,16 +1841,17 @@ $2',
# Special:Categories
'categories' => 'Категоријe',
-'categoriespagetext' => 'Следеће категорије садрже странице или мултимедијалне фајлове.
-[[Special:UnusedCategories|Неупотребљене категорије]] се не приказују овде.
-Такође погледате [[Special:WantedCategories|тражене категорије]].',
+'categoriespagetext' => '{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} стране или фајлове.
+[[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.
+Такође погледајте [[Special:WantedCategories|тражене категорије]].',
'categoriesfrom' => 'Прикажи категорије на:',
'special-categories-sort-count' => 'сортирај по броју',
'special-categories-sort-abc' => 'сортирај азбучно',
# Special:DeletedContributions
-'deletedcontributions' => 'Обрисане измене',
-'deletedcontributions-title' => 'Обрисане измене',
+'deletedcontributions' => 'Обрисане измене',
+'deletedcontributions-title' => 'Обрисане измене',
+'sp-deletedcontributions-contribs' => 'доприноси',
# Special:LinkSearch
'linksearch' => 'Веб линкови',
@@ -1817,6 +1867,14 @@ $2',
'listusersfrom' => 'Прикажи кориснике почевши од:',
'listusers-submit' => 'Прикажи',
'listusers-noresult' => 'Није пронађен корисник.',
+'listusers-blocked' => '(блокиран)',
+
+# Special:ActiveUsers
+'activeusers' => 'Списак активних корисника',
+'activeusers-from' => 'Прикажи кориснике почевши од:',
+'activeusers-hidebots' => 'Сакриј ботове',
+'activeusers-hidesysops' => 'Сакриј администраторе',
+'activeusers-noresult' => 'Корисник није пронађен.',
# Special:Log/newusers
'newuserlogpage' => 'историја креирања корисника',
@@ -1827,17 +1885,23 @@ $2',
'newuserlog-autocreate-entry' => 'налог аутоматски направљен',
# Special:ListGroupRights
-'listgrouprights' => 'права сарадничких група',
-'listgrouprights-summary' => 'Следи списак корисничких група дефинисаних на овом Викију, са њиховим придруженим правима приступа.
+'listgrouprights' => 'права сарадничких група',
+'listgrouprights-summary' => 'Следи списак корисничких група дефинисаних на овом Викију, са њиховим придруженим правима приступа.
Могле би Вас интересовати [[{{MediaWiki:Listgrouprights-helppage}}|додатне информације]] о појединачним правима приступа.',
-'listgrouprights-group' => 'Група',
-'listgrouprights-rights' => 'Права',
-'listgrouprights-helppage' => 'Help:Права',
-'listgrouprights-members' => '(списак чланова)',
-'listgrouprights-addgroup' => 'Ноже да дода {{PLURAL:$2|следећу групу|следеће групе}}: $1',
-'listgrouprights-removegroup' => 'Може да обриже {{PLURAL:$2|следећу групу|следеће групе}}: $1',
-'listgrouprights-addgroup-all' => 'Може да дода све групе',
-'listgrouprights-removegroup-all' => 'Може да обрише све групе',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Додељено право</span>
+* <span class="listgrouprights-revoked">Укинуто право</span>',
+'listgrouprights-group' => 'Група',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права',
+'listgrouprights-members' => '(списак чланова)',
+'listgrouprights-addgroup' => 'Ноже да дода {{PLURAL:$2|следећу групу|следеће групе}}: $1',
+'listgrouprights-removegroup' => 'Може да обриже {{PLURAL:$2|следећу групу|следеће групе}}: $1',
+'listgrouprights-addgroup-all' => 'Може да дода све групе',
+'listgrouprights-removegroup-all' => 'Може да обрише све групе',
+'listgrouprights-addgroup-self' => 'Додај {{PLURAL:$2|група|групе}} на свој налог: $1',
+'listgrouprights-removegroup-self' => 'Уклони {{PLURAL:$2|група|групе}} из налога: $1',
+'listgrouprights-addgroup-self-all' => 'Додај све групе у свој налог',
+'listgrouprights-removegroup-self-all' => 'Уклони све групе са свог налога',
# E-mail user
'mailnologin' => 'Нема адресе за слање',
@@ -1914,28 +1978,32 @@ $2',
'enotif_anon_editor' => 'анонимни корисник $1',
'enotif_body' => 'Драги $WATCHINGUSERNAME,
-{{SITENAME}} страна $PAGETITLE је била $CHANGEDORCREATED $PAGEEDITDATE од стране $PAGEEDITOR,
-погледајте {{fullurl:$PAGETITLE}} за тренутну верзију.
+
+Страна $PAGETITLE на {{SITENAME}} је била $CHANGEDORCREATED дана $PAGEEDITDATE од стране $PAGEEDITOR,
+погледајте $PAGETITLE_URL за тренутну верзију.
$NEWPAGE
-Резиме едитора: $PAGESUMMARY $PAGEMINOREDIT
+Резиме уредника: $PAGESUMMARY $PAGEMINOREDIT
-Контактирајте едитора:
-пошта {{fullurl:Special:Emailuser|target=$PAGEEDITOR}}
-вики {{fullurl:User:$PAGEEDITOR}}
+Контактирајте уредника:
+пошта $PAGEEDITOR_EMAIL
+вики $PAGEEDITOR_WIKI
Неће бити других обавештења у случају даљих промена уколико не посетите ову страну.
Такође можете да ресетујете заставице за обавештења за све ваше надгледане стране на вашем списку надгледања.
- Ваш пријатељски {{SITENAME}} систем обавештавања
+ Срдачно, {{SITENAME}} систем обавештавања
--
-Да промените подешавања везана за списак надгледања посетите
-{{fullurl:Special:Watchlist|edit=yes}}
+Да бисте променили подешавања везана за списак надгледања, посетите
+{{fullurl:{{#special:Watchlist}}/edit}}
-Фидбек и даља помоћ:
-{{fullurl:Help:Садржај}}',
+Да бисте уклонили ову страну са Вашег списка надгледања, посетите
+$UNWATCHURL
+
+Подршка и даља помоћ:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Обриши страницу',
@@ -1946,13 +2014,14 @@ $NEWPAGE
'exblank' => 'страница је била празна',
'delete-confirm' => 'Обриши „$1“',
'delete-legend' => 'Обриши',
-'historywarning' => 'Пажња: страница коју желите да обришете има историју:',
+'historywarning' => "'''Упозорење:''' Страна коју желите да обришете има историју са приближно $1 {{PLURAL:$1|ревизијом|ревизија}}:",
'confirmdeletetext' => 'На путу сте да трајно обришете страницу
или слику заједно са њеном историјом из базе података.
Молимо вас потврдите да намеравате да урадите ово, да разумете
последице, и да ово радите у складу са
[[{{MediaWiki:Policy-url}}|правилима]] {{SITENAME}}.',
'actioncomplete' => 'Акција завршена',
+'actionfailed' => 'Акција неуспела',
'deletedtext' => 'Чланак "<nowiki>$1</nowiki>" је обрисан.
Погледајте $2 за запис о скорашњим брисањима.',
'deletedarticle' => 'обрисан "[[$1]]"',
@@ -1984,8 +2053,8 @@ $NEWPAGE
'alreadyrolled' => 'Не могу да вратим последњу измену [[:$1]] од корисника [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); неко други је већ изменио или вратио чланак.
Последња измена од корисника [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Коментар измене је: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Враћене измене корисника [[Special:Contributions/$2|$2]] ([[User talk:$2|Разговор]]) на последњу измену корисника [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Коментар измене је: \"''\$1''\".",
+'revertpage' => 'Враћене измене корисника [[Special:Contributions/$2|$2]] ([[User talk:$2|Разговор]]) на последњу измену корисника [[User:$1|$1]]',
'rollback-success' => 'Враћене измене од стране $1; на последњу измену од стране $2.',
'sessionfailure' => 'Изгледа да постоји проблем са вашом сеансом пријаве;
ова акција је прекинута као предострожност против преотимања сеанси.
@@ -2006,7 +2075,6 @@ $NEWPAGE
'protectexpiry' => 'Истиче:',
'protect_expiry_invalid' => 'Време истека није одговарајуће.',
'protect_expiry_old' => 'Време истека је у прошлости.',
-'protect-unchain' => 'Откључај дозволе премештања',
'protect-text' => "Овде можете погледати и мењати ниво заштите за страницу '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Не можете мењати нивое заштите док сте блокирани.
Ово су тренутна подешавања за страницу '''$1''':",
@@ -2036,7 +2104,7 @@ Protect pages included in this page (cascading protection)',
** Контра-продуктивне измене
** Страница са великим бројем посета',
'protect-edit-reasonlist' => 'Измените разлоге заштите',
-'protect-expiry-options' => '1 сат:1 hour,1 дан:1 day,1 недеља:1 week,2 недеље:2 weeks,1 месец:1 month,3 месеца:3 months,6 месеци:6 months,1 година:1 year,бесконачно:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 сат:1 hour,1 дан:1 day,1 недеља:1 week,2 недеље:2 weeks,1 месец:1 month,3 месеца:3 months,6 месеци:6 months,1 година:1 year,бесконачно:infinite',
'restriction-type' => 'Овлашћење:',
'restriction-level' => 'Ниво заштите:',
'minimum-size' => 'Мин величина',
@@ -2079,6 +2147,7 @@ Protect pages included in this page (cascading protection)',
'undelete-nodiff' => 'Нема претходних измена.',
'undeletebtn' => 'Врати',
'undeletelink' => 'погледај/врати',
+'undeleteviewlink' => 'погледај',
'undeletereset' => 'Поништи',
'undeleteinvert' => 'Инвертујте избор',
'undeletecomment' => 'Разлог:',
@@ -2117,19 +2186,24 @@ $1',
'contributions-title' => 'Прилози корисника за $1',
'mycontris' => 'Моји прилози',
'contribsub2' => 'За $1 ($2)',
-'nocontribs' => 'Нису нађене промене које задовољавају ове услове.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Нису нађене промене које задовољавају ове услове.',
'uctop' => ' (врх)',
'month' => 'За месец (и раније):',
'year' => 'Од године (и раније):',
-'sp-contributions-newbies' => 'Прикажи само прилоге нових налога',
-'sp-contributions-newbies-sub' => 'За новајлије',
-'sp-contributions-newbies-title' => 'Доприноси корисника са новим налозима',
-'sp-contributions-blocklog' => 'Историја блокирања',
-'sp-contributions-logs' => 'историје',
-'sp-contributions-search' => 'Претрага прилога',
-'sp-contributions-username' => 'ИП адреса или корисничко име:',
-'sp-contributions-submit' => 'Претрага',
+'sp-contributions-newbies' => 'Прикажи само прилоге нових налога',
+'sp-contributions-newbies-sub' => 'За новајлије',
+'sp-contributions-newbies-title' => 'Доприноси корисника са новим налозима',
+'sp-contributions-blocklog' => 'Историја блокирања',
+'sp-contributions-deleted' => 'обрисане измене корисника',
+'sp-contributions-logs' => 'историје',
+'sp-contributions-talk' => 'разговор',
+'sp-contributions-userrights' => 'подешавање корисничких права',
+'sp-contributions-blocked-notice' => 'Овај корисник је тренутно блокиран.
+Последњи унос у дневник блокирања је понуђен испод као референца:',
+'sp-contributions-search' => 'Претрага прилога',
+'sp-contributions-username' => 'ИП адреса или корисничко име:',
+'sp-contributions-submit' => 'Претрага',
# What links here
'whatlinkshere' => 'Шта је повезано овде',
@@ -2152,6 +2226,7 @@ $1',
# Block/unblock
'blockip' => 'Блокирај корисника',
+'blockip-title' => 'Блокирај корисника',
'blockip-legend' => 'Блокирај корисника',
'blockiptext' => 'Употребите доњи упитник да бисте уклонили право писања
са одређене ИП адресе или корисничког имена.
@@ -2178,7 +2253,7 @@ $1',
'ipbenableautoblock' => 'Аутоматски блокирај последњу ИП адресу овог корисника, и сваку следећу адресу са које се покуша уређивање.',
'ipbsubmit' => 'Блокирај овог корисника',
'ipbother' => 'Остало време',
-'ipboptions' => '2 сата:2 hours,1 дан:1 day,3 дана:3 days,1 недеља:1 week,2 недеље:2 weeks,1 месец:1 month,3 месеца:3 months,6 месеци:6 months,1 година:1 year,бесконачно:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сата:2 hours,1 дан:1 day,3 дана:3 days,1 недеља:1 week,2 недеље:2 weeks,1 месец:1 month,3 месеца:3 months,6 месеци:6 months,1 година:1 year,бесконачно:infinite',
'ipbotheroption' => 'остало',
'ipbotherreason' => 'Други/додатни разлог:',
'ipbhidename' => 'Сакрој корисничко име са измена и спискова',
@@ -2208,9 +2283,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 привремене блокове',
'ipblocklist-sh-addressblocks' => '$1 појединачне IP блокове',
'ipblocklist-submit' => 'Претрага',
+'ipblocklist-localblock' => 'Локални блок',
+'ipblocklist-otherblocks' => 'Други {{PLURAL:$1|блок|блокови}}',
'blocklistline' => '$1, $2 блокирао корисника $3, (истиче $4)',
'infiniteblock' => 'бесконачан',
-'expiringblock' => 'истиче $1',
+'expiringblock' => 'Истиче на $1 у $2',
'anononlyblock' => 'само анонимни',
'noautoblockblock' => 'Аутоблокирање је онемогућено',
'createaccountblock' => 'блокирано прављење налога',
@@ -2224,7 +2301,8 @@ $1',
'contribslink' => 'прилози',
'autoblocker' => 'Аутоматски сте блокирани јер делите ИП адресу са "[[User:$1|$1]]". Дати разлог за блокирање корисника $1 је: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'историја блокирања',
-'blocklog-fulllog' => 'Пуна историја блокирања',
+'blocklog-showlog' => 'Овај корисник је већ био блокиран.
+Дневник блокирања је понуђен испод као референца:',
'blocklogentry' => 'је блокирао "[[$1]]" са временом истицања блокаде од $2 $3',
'reblock-logentry' => 'промењена подешавања блока за [[$1]] са временом истека $2 ($3)',
'blocklogtext' => 'Ово је историја блокирања и деблокирања корисника. Аутоматски
@@ -2244,10 +2322,12 @@ $1',
'ipb_already_blocked' => '"$1" је већ блокиран',
'ipb-needreblock' => '== Већ блокиран ==
$1 је већ блокиран. Да ли желите да промените подешавања?',
+'ipb-otherblocks-header' => 'Други {{PLURAL:$1|блок|блокови}}',
'ipb_cant_unblock' => 'Грешка: ИД блока $1 није нађен. Могуће је да је већ одблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP $1 није директно блокиран и не може бити одблокиран.
Међутим, блокиран је као део опсега $2, који може бити одблокиран.',
'ip_range_invalid' => 'Нетачан блок ИП адреса.',
+'ip_range_toolarge' => 'Опсези блокирања шири од /$1 нису дозвољени.',
'blockme' => 'Блокирај ме',
'proxyblocker' => 'Блокер проксија',
'proxyblocker-disabled' => 'Ова фукција је искључена.',
@@ -2302,6 +2382,7 @@ $1 је већ блокиран. Да ли желите да промените
У тим случајевима, мораћете ручно да преместите или спојите страницу уколико то желите.",
'movearticle' => 'Премести страницу',
+'moveuserpage-warning' => "'''Упозорење:'''Спремате се да преместите корисничку страницу. Упамтите да ће се само страница преместити, док корисник ''неће'' бити преименован.",
'movenologin' => 'Нисте пријављени',
'movenologintext' => 'Морате бити регистровани корисник и [[Special:UserLogin|пријављени]]
да бисте преместили страницу.',
@@ -2313,7 +2394,7 @@ $1 је већ блокиран. Да ли желите да промените
'move-watch' => 'Надгледај ову страницу',
'movepagebtn' => 'премести страницу',
'pagemovedsub' => 'Премештање успело',
-'movepage-moved' => '\'\'\'Страна "$1" је преименована у "$2"!\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Страна "$1" је преименована у "$2"!\'\'\'',
'movepage-moved-redirect' => 'Преусмерење је напревљено.',
'movepage-moved-noredirect' => 'Прављење преусмерења је задржано.',
'articleexists' => 'Страница под тим именом већ постоји, или је
@@ -2357,6 +2438,12 @@ $1 је већ блокиран. Да ли желите да промените
'imageinvalidfilename' => 'Циљано име фајла је погрешно.',
'fix-double-redirects' => 'Освежава било које преусмерење које веже на оригинални наслов',
'move-leave-redirect' => 'Остави преусмерење након премештања',
+'protectedpagemovewarning' => "'''Напомена:''' Ова страница је закључана тако да само корисници са администраторским привилегијама могу да је преместе.
+Најскорија забелешка историје је приложена испод као додатна информација:",
+'semiprotectedpagemovewarning' => "'''Напомена:''' Ова страница је закључана тако да само регистровани корисници могу да је преместе.
+Најновији извештај налази се испод:",
+'move-over-sharedrepo' => '== Датотека постоји ==
+[[:$1]] се налази на дељеном складишту. Ако преместите датотеку на овај наслов, то ће заменити дељену датотеку.',
# Export
'export' => 'Извези странице',
@@ -2380,15 +2467,21 @@ $1 је већ блокиран. Да ли желите да промените
'export-pagelinks' => 'Укључи повезане стране до дубине од:',
# Namespace 8 related
-'allmessages' => 'Системске поруке',
-'allmessagesname' => 'Име',
-'allmessagesdefault' => 'Стандардни текст',
-'allmessagescurrent' => 'Тренутни текст',
-'allmessagestext' => 'Ово је списак системских порука које су у МедијаВики именском простору.
+'allmessages' => 'Системске поруке',
+'allmessagesname' => 'Име',
+'allmessagesdefault' => 'Стандардни текст',
+'allmessagescurrent' => 'Тренутни текст',
+'allmessagestext' => 'Ово је списак системских порука које су у МедијаВики именском простору.
Посетите [http://translatewiki.net translatewiki.net] уколико желите да помогнете у локализацији.',
-'allmessagesnotsupportedDB' => "Ова страница не може бити употребљена зато што је '''\$wgUseDatabaseMessages''' искључен.",
-'allmessagesfilter' => 'Филтер за регуларне изразе:',
-'allmessagesmodified' => 'Прикажи само измењене',
+'allmessagesnotsupportedDB' => "Ова страница не може бити употребљена зато што је '''\$wgUseDatabaseMessages''' искључен.",
+'allmessages-filter-legend' => 'Филтер',
+'allmessages-filter' => 'Филтрирај по стању прилагођености:',
+'allmessages-filter-unmodified' => 'Неизмењене',
+'allmessages-filter-all' => 'Све',
+'allmessages-filter-modified' => 'Измењене',
+'allmessages-prefix' => 'Филтрирај по префиксу:',
+'allmessages-language' => 'Језик:',
+'allmessages-filter-submit' => 'Иди',
# Thumbnails
'thumbnail-more' => 'увећај',
@@ -2398,6 +2491,8 @@ $1 је већ блокиран. Да ли желите да промените
'djvu_no_xml' => 'Не могу преузети XML за DjVu фајл.',
'thumbnail_invalid_params' => 'Погрешни параметри за малу слику.',
'thumbnail_dest_directory' => 'Не могу направити одредишни директоријум.',
+'thumbnail_image-type' => 'Тип слике није подржан',
+'thumbnail_image-missing' => 'Изгледа да фајл недостаје: $1',
# Special:Import
'import' => 'Увоз страница',
@@ -2461,6 +2556,7 @@ $1 је већ блокиран. Да ли желите да промените
'tooltip-ca-viewsource' => 'Ова страница је закључана. Можете видети њен извор',
'tooltip-ca-history' => 'Претходне верзије ове странице',
'tooltip-ca-protect' => 'Заштити ову страницу',
+'tooltip-ca-unprotect' => 'Откључај ову страницу',
'tooltip-ca-delete' => 'Обриши ову страницу',
'tooltip-ca-undelete' => 'Враћати измене које су начињене пре брисања странице',
'tooltip-ca-move' => 'Премести ову страницу',
@@ -2471,6 +2567,7 @@ $1 је већ блокиран. Да ли желите да промените
'tooltip-search-fulltext' => 'Претражите стране са овим текстом',
'tooltip-p-logo' => 'Главна страна',
'tooltip-n-mainpage' => 'Посетите главну страну',
+'tooltip-n-mainpage-description' => 'Посетите главну страну',
'tooltip-n-portal' => 'О пројекту, шта можете да радите и где да пронађете ствари',
'tooltip-n-currentevents' => 'Сазнајте више о актуелностима',
'tooltip-n-recentchanges' => 'Списак скорашњих измена на викију',
@@ -2519,10 +2616,12 @@ $1 је већ блокиран. Да ли желите да промените
# Attribution
'anonymous' => 'Анонимни {{PLURAL:$1|корисник|корисници}} на {{SITENAME}}',
'siteuser' => '{{SITENAME}} корисник $1',
-'lastmodifiedatby' => 'Ову страницу је последњи пут променио $3 у $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} анонимни корисник $1',
+'lastmodifiedatby' => 'Ову страницу је последњи пут променио $3 у $2, $1.',
'othercontribs' => 'Базирано на раду корисника $1.',
'others' => 'остали',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|корисник|корисници}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|анонимни корисник|анонимних корисника}} $1',
'creditspage' => 'Заслуге за страницу',
'nocredits' => 'Нису доступне информације о заслугама за ову страницу.',
@@ -2551,11 +2650,22 @@ $1 је већ блокиран. Да ли желите да промените
'mw_math_modern' => 'Препоручено за савремене браузере',
'mw_math_mathml' => 'MathML ако је могуће (експериментално)',
+# Math errors
+'math_failure' => 'Неуспех при парсирању',
+'math_unknown_error' => 'непозната грешка',
+'math_unknown_function' => 'непозната функција',
+'math_lexing_error' => 'речничка грешка',
+'math_syntax_error' => 'синтаксна грешка',
+'math_image_error' => 'PNG конверзија неуспешна; проверите тачну инсталацију latex-а, dvips-а, gs-а и convert-а',
+'math_bad_tmpdir' => 'Не могу да напишем или направим привремени math директоријум',
+'math_bad_output' => 'Не могу да напишем или направим директоријум за math излаз.',
+'math_notexvc' => 'Недостаје извршно texvc; молимо погледајте math/README да бисте подесили.',
+
# Patrolling
'markaspatrolleddiff' => 'Означи као патролиран',
'markaspatrolledtext' => 'Означи овај чланак као патролиран',
'markedaspatrolled' => 'Означен као патролиран',
-'markedaspatrolledtext' => 'Изабрана ревизија је означена као патролирана.',
+'markedaspatrolledtext' => 'Изабрана ревизија од [[:$1]] је означена као патролирана.',
'rcpatroldisabled' => 'Патрола скорашњих измена онемогућена',
'rcpatroldisabledtext' => 'Патрола скорашњих измена је тренутно онемогућена.',
'markedaspatrollederror' => 'Немогуће означити као патролирано',
@@ -2585,13 +2695,10 @@ $1',
'previousdiff' => '← Старија измена',
'nextdiff' => 'Новија измена →',
-# Visual comparison
-'visual-comparison' => 'Визуелно поређење',
-
# Media information
'mediawarning' => "'''Упозорење''': Овај тип фајла би могао да садржи штетан код.
Његовим извршавањем бисте могли да оштетите Ваш систем.",
-'imagemaxsize' => 'Ограничи слике на странама за разговор о сликама на:',
+'imagemaxsize' => "Ограничење величине слике:<br />''(за стране описа фајлова)''",
'thumbsize' => 'Величина умањеног приказа :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|страна|стране|страна}}',
'file-info' => '(величина фајла: $1, MIME тип: $2)',
@@ -2600,6 +2707,7 @@ $1',
'svg-long-desc' => '(SVG фајл, номинално $1 × $2 пиксела, величина фајла: $3)',
'show-big-image' => 'Пуна резолуција',
'show-big-image-thumb' => '<small>Величина овог приказа: $1 × $2 пиксела</small>',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фрејм|фрејмова}}',
# Special:NewFiles
'newimages' => 'Галерија нових слика',
@@ -2638,7 +2746,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2766,14 +2874,14 @@ $1',
'exif-unknowndate' => 'Непознат датум',
-'exif-orientation-1' => 'Нормално', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Обрнуто по хоризонтали', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Заокренуто 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Обрнуто по вертикали', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Заокренуто 90° супротно од смера казаљке на сату и обрнуто по вертикали', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Заокренуто 90° у смеру казаљке на сату', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Заокренуто 90° у смеру казаљке на сату и обрнуто по вертикали', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Заокренуто 90° супротно од смера казаљке на сату', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нормално',
+'exif-orientation-2' => 'Обрнуто по хоризонтали',
+'exif-orientation-3' => 'Заокренуто 180°',
+'exif-orientation-4' => 'Обрнуто по вертикали',
+'exif-orientation-5' => 'Заокренуто 90° супротно од смера казаљке на сату и обрнуто по вертикали',
+'exif-orientation-6' => 'Заокренуто 90° у смеру казаљке на сату',
+'exif-orientation-7' => 'Заокренуто 90° у смеру казаљке на сату и обрнуто по вертикали',
+'exif-orientation-8' => 'Заокренуто 90° супротно од смера казаљке на сату',
'exif-planarconfiguration-1' => 'делимични формат',
'exif-planarconfiguration-2' => 'планарни формат',
@@ -2897,7 +3005,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Дводимензионално мерење',
'exif-gpsmeasuremode-3' => 'Тродимензионално мерење',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Километри на час',
'exif-gpsspeed-m' => 'Миље на час',
'exif-gpsspeed-n' => 'Чворови',
@@ -2916,6 +3024,7 @@ $1',
'watchlistall2' => 'све',
'namespacesall' => 'сви',
'monthsall' => 'све',
+'limitall' => 'све',
# E-mail address confirmation
'confirmemail' => 'Потврдите адресу е-поште',
@@ -3043,7 +3152,7 @@ $1',
'duplicate-defaultsort' => "'''Упозорење:''' Подразумевани кључ сортирања „$2“ преписује раније подразумевани кључ сортирања „$1“.",
# Special:Version
-'version' => 'Верзија', # Not used as normal message but as header for the special page itself
+'version' => 'Верзија',
'version-extensions' => 'Инсталисане екстензије',
'version-specialpages' => 'Посебне странице',
'version-parserhooks' => 'закачке парсера',
@@ -3057,7 +3166,7 @@ $1',
'version-skin-extension-functions' => 'екстензије функције коже',
'version-hook-name' => 'име закачке',
'version-hook-subscribedby' => 'пријављени',
-'version-version' => 'Верзија',
+'version-version' => '(Верзија $1)',
'version-license' => 'Лиценца',
'version-software' => 'Инсталиран софтвер',
'version-software-product' => 'Производ',
@@ -3138,4 +3247,15 @@ $1',
'dberr-outofdate' => 'Приметите да Гуглов кеш нашег садржаја може бити неажуран.',
'dberr-cachederror' => 'Ово је кеширана копија захтеване стране, и можда није ажурна.',
+# HTML forms
+'htmlform-invalid-input' => 'Има проблема са делом Вашег уноса',
+'htmlform-select-badoption' => 'Вредност коју сте навели није исправна опција.',
+'htmlform-int-invalid' => 'Вредност који сте навели није цели број.',
+'htmlform-float-invalid' => 'Вредност коју сте задали није број.',
+'htmlform-int-toolow' => 'Вредности коју сте навели је испод минимума од $1',
+'htmlform-int-toohigh' => 'Вредност коју сте навели је изнад максимума од $1',
+'htmlform-submit' => 'Пошаљи',
+'htmlform-reset' => 'Врати измене',
+'htmlform-selectorother-other' => 'Друго',
+
);
diff --git a/languages/messages/MessagesSr_el.php b/languages/messages/MessagesSr_el.php
index 0cf0f440..fd403b31 100644
--- a/languages/messages/MessagesSr_el.php
+++ b/languages/messages/MessagesSr_el.php
@@ -17,18 +17,16 @@
*/
$namespaceNames = array(
- NS_MEDIA => "Medija",
- NS_SPECIAL => "Posebno",
- NS_MAIN => "",
- NS_TALK => "Razgovor",
- NS_USER => "Korisnik",
- NS_USER_TALK => "Razgovor_sa_korisnikom",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => "Razgovor_o_$1",
- NS_FILE => "Slika",
- NS_FILE_TALK => "Razgovor_o_slici",
- NS_MEDIAWIKI => "MedijaViki",
- NS_MEDIAWIKI_TALK => "Razgovor_o_MedijaVikiju",
+ NS_MEDIA => 'Medija',
+ NS_SPECIAL => 'Posebno',
+ NS_TALK => 'Razgovor',
+ NS_USER => 'Korisnik',
+ NS_USER_TALK => 'Razgovor_sa_korisnikom',
+ NS_PROJECT_TALK => 'Razgovor_o_$1',
+ NS_FILE => 'Slika',
+ NS_FILE_TALK => 'Razgovor_o_slici',
+ NS_MEDIAWIKI => 'MedijaViki',
+ NS_MEDIAWIKI_TALK => 'Razgovor_o_MedijaVikiju',
NS_TEMPLATE => 'Šablon',
NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
NS_HELP => 'Pomoć',
@@ -156,56 +154,55 @@ $dateFormats = array(
/* NOT USED IN STABLE VERSION */
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#Preusmeri', '#redirect', '#preusmeri', '#PREUSMERI' ),
- 'notoc' => array( 0, '__NOTOC__', '__BEZSADRŽAJA__' ),
- 'forcetoc' => array( 0, '__FORCETOC__', '__FORSIRANISADRŽAJ__' ),
- 'toc' => array( 0, '__TOC__', '__SADRŽAJ__' ),
- 'noeditsection' => array( 0, '__NOEDITSECTION__', '__BEZ_IZMENA__', '__BEZIZMENA__' ),
- 'currentmonth' => array( 1, 'CURRENTMONTH', 'TRENUTNIMESEC' ),
- 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', 'TRENUTNIMESECIME' ),
- 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', 'TRENUTNIMESECGEN' ),
- 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV', 'TRENUTNIMESECSKR' ),
- 'currentday' => array( 1, 'CURRENTDAY', 'TRENUTNIDAN' ),
- 'currentdayname' => array( 1, 'CURRENTDAYNAME', 'TRENUTNIDANIME' ),
- 'currentyear' => array( 1, 'CURRENTYEAR', 'TRENUTNAGODINA' ),
- 'currenttime' => array( 1, 'CURRENTTIME', 'TRENUTNOVREME' ),
- 'numberofarticles' => array( 1, 'NUMBEROFARTICLES', 'BROJČLANAKA' ),
- 'numberoffiles' => array( 1, 'NUMBEROFFILES', 'BROJDATOTEKA', 'BROJFAJLOVA' ),
- 'pagename' => array( 1, 'PAGENAME', 'STRANICA' ),
- 'pagenamee' => array( 1, 'PAGENAMEE', 'STRANICE' ),
- 'namespace' => array( 1, 'NAMESPACE', 'IMENSKIPROSTOR' ),
- 'namespacee' => array( 1, 'NAMESPACEE', 'IMENSKIPROSTORI' ),
- 'fullpagename' => array( 1, 'FULLPAGENAME', 'PUNOIMESTRANE' ),
- 'fullpagenamee' => array( 1, 'FULLPAGENAMEE', 'PUNOIMESTRANEE' ),
- 'msg' => array( 0, 'MSG:', 'POR:' ),
- 'subst' => array( 0, 'SUBST:', 'ZAMENI:' ),
- 'msgnw' => array( 0, 'MSGNW:', 'NVPOR:' ),
- 'img_thumbnail' => array( 1, 'thumbnail', 'thumb', 'mini' ),
- 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1', 'mini=$1' ),
- 'img_right' => array( 1, 'right', 'desno', 'd' ),
- 'img_left' => array( 1, 'left', 'levo', 'l' ),
- 'img_none' => array( 1, 'none', 'n', 'bez' ),
- 'img_width' => array( 1, '$1px', '$1piskel' , '$1p' ),
- 'img_center' => array( 1, 'center', 'centre', 'centar', 'c' ),
- 'img_framed' => array( 1, 'framed', 'enframed', 'frame', 'okvir', 'ram' ),
- 'sitename' => array( 1, 'SITENAME', 'IMESAJTA' ),
- 'ns' => array( 0, 'NS:', 'IP:' ),
- 'localurl' => array( 0, 'LOCALURL:', 'LOKALNAADRESA:' ),
- 'localurle' => array( 0, 'LOCALURLE:', 'LOKALNEADRESE:' ),
- 'servername' => array( 0, 'SERVERNAME', 'IMESERVERA' ),
- 'scriptpath' => array( 0, 'SCRIPTPATH', 'SKRIPTA' ),
- 'grammar' => array( 0, 'GRAMMAR:', 'GRAMATIKA:' ),
- 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗКН__', '__BEZKN__' ),
- 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__BEZCC__' ),
- 'currentweek' => array( 1, 'CURRENTWEEK', 'TRENUTNANEDELJA' ),
- 'currentdow' => array( 1, 'CURRENTDOW', 'TRENUTNIDOV' ),
- 'revisionid' => array( 1, 'REVISIONID', 'IDREVIZIJE' ),
- 'plural' => array( 0, 'PLURAL:', 'MNOŽINA:' ),
- 'fullurl' => array( 0, 'FULLURL:', 'PUNURL:' ),
- 'fullurle' => array( 0, 'FULLURLE:', 'PUNURLE:' ),
- 'lcfirst' => array( 0, 'LCFIRST:', 'LCPRVI:' ),
- 'ucfirst' => array( 0, 'UCFIRST:', 'UCPRVI:' ),
+ 'redirect' => array( '0', '#Preusmeri', '#preusmeri', '#PREUSMERI', '#REDIRECT' ),
+ 'notoc' => array( '0', '__BEZSADRŽAJA__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__FORSIRANISADRŽAJ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__SADRŽAJ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__BEZ_IZMENA__', '__BEZIZMENA__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'TRENUTNIMESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'TRENUTNIMESECIME', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'TRENUTNIMESECGEN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'TRENUTNIMESECSKR', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'TRENUTNIDAN', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'TRENUTNIDANIME', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'TRENUTNAGODINA', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'TRENUTNOVREME', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'BROJČLANAKA', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'BROJDATOTEKA', 'BROJFAJLOVA', 'NUMBEROFFILES' ),
+ 'pagename' => array( '1', 'STRANICA', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'STRANICE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'IMENSKIPROSTOR', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'IMENSKIPROSTORI', 'NAMESPACEE' ),
+ 'fullpagename' => array( '1', 'PUNOIMESTRANE', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'PUNOIMESTRANEE', 'FULLPAGENAMEE' ),
+ 'msg' => array( '0', 'POR:', 'MSG:' ),
+ 'subst' => array( '0', 'ZAMENI:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'NVPOR:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'mini', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'desno', 'd', 'right' ),
+ 'img_left' => array( '1', 'levo', 'l', 'left' ),
+ 'img_none' => array( '1', 'n', 'bez', 'none' ),
+ 'img_width' => array( '1', '$1piskel', '$1p', '$1px' ),
+ 'img_center' => array( '1', 'centar', 'c', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ),
+ 'sitename' => array( '1', 'IMESAJTA', 'SITENAME' ),
+ 'ns' => array( '0', 'IP:', 'NS:' ),
+ 'localurl' => array( '0', 'LOKALNAADRESA:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'LOKALNEADRESE:', 'LOCALURLE:' ),
+ 'servername' => array( '0', 'IMESERVERA', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'SKRIPTA', 'SCRIPTPATH' ),
+ 'grammar' => array( '0', 'GRAMATIKA:', 'GRAMMAR:' ),
+ 'notitleconvert' => array( '0', '__БЕЗКН__', '__BEZKN__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__BEZCC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'TRENUTNANEDELJA', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'TRENUTNIDOV', 'CURRENTDOW' ),
+ 'revisionid' => array( '1', 'IDREVIZIJE', 'REVISIONID' ),
+ 'plural' => array( '0', 'MNOŽINA:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'PUNURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'PUNURLE:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'LCPRVI:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'UCPRVI:', 'UCFIRST:' ),
);
$separatorTransformTable = array(',' => '.', '.' => ',' );
@@ -241,6 +238,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pošalji mi e-poštu takođe za male izmene strana',
'tog-enotifrevealaddr' => 'Otkrij adresu moje e-pošte u pošti obaveštenja',
'tog-shownumberswatching' => 'Prikaži broj korisnika koji nadgledaju',
+'tog-oldsig' => 'Pretpregled postojećeg potpisa:',
'tog-fancysig' => 'Čist potpis (bez automatskih veza)',
'tog-externaleditor' => 'Koristi spoljašnji uređivač po podrazumevanim podešavanjima',
'tog-externaldiff' => 'Koristi spoljašnji program za prikaz razlika po podrazumevanim podešavanjima',
@@ -263,6 +261,13 @@ $messages = array(
'underline-never' => 'Nikad',
'underline-default' => 'Po podešavanjima brauzera',
+# Font style option in Special:Preferences
+'editfont-style' => 'Izmeni stil fonta za ovaj dio:',
+'editfont-default' => 'Podrazumevan iz brauzera',
+'editfont-monospace' => 'Font sa jednakim razmacima',
+'editfont-sansserif' => 'Sans-serif font',
+'editfont-serif' => 'Serif font',
+
# Dates
'sunday' => 'nedelja',
'monday' => 'ponedeljak',
@@ -322,7 +327,7 @@ $messages = array(
'category-media-header' => 'Medija u kategoriji "$1"',
'category-empty' => "''Ova kategorija trenutno nema stranica ili medija.''",
'hidden-categories' => '{{PLURAL:$1|Skrivena kategorija|Skrivene kategorije}}',
-'hidden-category-category' => 'Skrivene kategorije', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Skrivene kategorije',
'category-subcat-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sledeću kategoriju.|Ova kategorija sadrži {{PLURAL:$1|potkategoriju|$1 potkategorije}}, od $2 ukupno.}}',
'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|$1 sledeće potkategorije}}.',
'category-article-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sledeću stranu.|{{PLURAL:$1|strana je|$1 strane je|$1 strana je}} u ovoj kategoriji od ukupno $2.}}',
@@ -330,6 +335,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sledeći fajl.|{{PLURAL:$1|Sledeći fajl je|$1 sledeća fajla su|$1 sledećih fajlova su}} u ovoj kategoriji, od ukupno $2.}}',
'category-file-count-limited' => 'Sledeći {{PLURAL:$1|fajl je|$1 fajlovi su}} u ovoj kategoriji.',
'listingcontinuesabbrev' => 'nast.',
+'index-category' => 'Indeksirane stranice',
+'noindex-category' => 'Neindeksirane stranice',
'mainpagetext' => "'''MedijaViki je uspešno instaliran.'''",
'mainpagedocfooter' => 'Molimo vidite [http://meta.wikimedia.org/wiki/Help:Contents korisnički vodič] za informacije o upotrebi viki softvera.
@@ -339,10 +346,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Najčešće postavljena pitanja]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]',
-'about' => 'O...',
-'article' => 'Članak',
-'newwindow' => '(novi prozor)',
-'cancel' => 'Poništi',
+'about' => 'O...',
+'article' => 'Članak',
+'newwindow' => '(novi prozor)',
+'cancel' => 'Poništi',
+'moredotdotdot' => 'Još...',
+'mypage' => 'Moja stranica',
+'mytalk' => 'Moj razgovor',
+'anontalk' => 'Razgovor za ovu IP adresu',
+'navigation' => 'Navigacija',
+'and' => '&#32;i',
+
+# Cologne Blue skin
'qbfind' => 'Pronađi',
'qbbrowse' => 'Prelistavaj',
'qbedit' => 'Izmeni',
@@ -350,15 +365,35 @@ $messages = array(
'qbpageinfo' => 'Informacije o stranici',
'qbmyoptions' => 'Moje opcije',
'qbspecialpages' => 'Posebne stranice',
-'moredotdotdot' => 'Još...',
-'mypage' => 'Moja stranica',
-'mytalk' => 'Moj razgovor',
-'anontalk' => 'Razgovor za ovu IP adresu',
-'navigation' => 'Navigacija',
-'and' => '&#32;i',
-
-# Metadata in edit box
-'metadata_help' => 'Metapodaci:',
+'faq' => 'NPP',
+'faqpage' => 'Project:NPP',
+
+# Vector skin
+'vector-action-addsection' => 'Dodaj temu',
+'vector-action-delete' => 'Obriši',
+'vector-action-move' => 'Premesti',
+'vector-action-protect' => 'Zaštiti',
+'vector-action-undelete' => 'Vrati',
+'vector-action-unprotect' => 'Skini zaštitu',
+'vector-namespace-category' => 'Kategorija',
+'vector-namespace-help' => 'Strana pomoći',
+'vector-namespace-image' => 'Fajl',
+'vector-namespace-main' => 'Strana',
+'vector-namespace-media' => 'Stranica medija',
+'vector-namespace-mediawiki' => 'Poruka',
+'vector-namespace-project' => 'Strana projekta',
+'vector-namespace-special' => 'Specijalna strana',
+'vector-namespace-talk' => 'Razgovor',
+'vector-namespace-template' => 'Šablon',
+'vector-namespace-user' => 'Korisnička strana',
+'vector-view-create' => 'Napravi',
+'vector-view-edit' => 'Izmeni',
+'vector-view-history' => 'Vidi istoriju',
+'vector-view-view' => 'Čitaj',
+'vector-view-viewsource' => 'Vidi sors',
+'actions' => 'Akcije',
+'namespaces' => 'Imenski prostori',
+'variants' => 'Varijante',
'errorpagetitle' => 'Greška',
'returnto' => 'Povratak na $1.',
@@ -408,18 +443,22 @@ $messages = array(
'otherlanguages' => 'Ostali jezici',
'redirectedfrom' => '(Preusmereno sa $1)',
'redirectpagesub' => 'Strana preusmerenja',
-'lastmodifiedat' => 'Ova stranica je poslednji put izmenjena $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ova stranica je poslednji put izmenjena $2, $1.',
'viewcount' => 'Ovoj stranici je pristupljeno {{PLURAL:$1|jednom|$1 puta|$1 puta}}.',
'protectedpage' => 'Zaštićena stranica',
'jumpto' => 'Skoči na:',
'jumptonavigation' => 'navigacija',
'jumptosearch' => 'pretraga',
+'view-pool-error' => 'Žao nam je, serveri su trenutno prezauzeti.
+Previše korisnika pokušava da pristupi ovoj stranici.
+Molimo vas da sačekate neko vrijeme prije nego pokušate opet da joj pristupite.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'O projektu {{SITENAME}}',
'aboutpage' => 'Project:O',
'copyright' => 'Sadržaj je objavljen pod $1.',
-'copyrightpagename' => 'Autorska prava projekta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Autorska prava',
'currentevents' => 'Trenutni događaji',
'currentevents-url' => 'Project:Trenutni događaji',
@@ -427,8 +466,6 @@ $messages = array(
'disclaimerpage' => 'Project:Odricanje odgovornosti',
'edithelp' => 'Pomoć oko uređivanja',
'edithelppage' => 'Help:Uređivanje',
-'faq' => 'NPP',
-'faqpage' => 'Project:NPP',
'helppage' => 'Help:Sadržaj',
'mainpage' => 'Glavna strana',
'mainpage-description' => 'Glavna strana',
@@ -509,10 +546,6 @@ Poslednji poslati upit bazi bio je:
"$1"
unutar funkcije "$2".
Baza podataka je vratila grešku "$3: $4"',
-'noconnect' => 'Žao nam je! Viki ima tehničke poteškoće, i ne može da se poveže se serverom baze podataka.<br />
-$1',
-'nodb' => 'Ne mogu da izaberem bazu $1',
-'cachederror' => 'Ovo je keširana kopija zahtevane stranice, i možda nije ažurirana.',
'laggedslavemode' => 'Upozorenje: moguće je da strana nije skoro ažurirana.',
'readonly' => 'Baza je zaključana',
'enterlockreason' => 'Unesite razlog za zaključavanje, uključujući procenu
@@ -532,6 +565,8 @@ U tom slučaju, prijavite grešku [[Special:ListUsers/sysop|administratoru]] uz
'readonly_lag' => 'Baza podataka je automatski zaključana dok slejv serveri ne sustignu master',
'internalerror' => 'Interna greška',
'internalerror_info' => 'Interna greška: $1',
+'fileappenderrorread' => 'Nije bilo moguće pročitati "$1" za vreme ažuriranja.',
+'fileappenderror' => 'Nije bilo moguće ažurirati "$1" na "$2".',
'filecopyerror' => 'Ne mogu da iskopiram fajl "$1" na "$2".',
'filerenameerror' => 'Ne mogu da preimenujem fajl "$1" u "$2".',
'filedeleteerror' => 'Ne mogu da obrišem fajl "$1".',
@@ -541,7 +576,8 @@ U tom slučaju, prijavite grešku [[Special:ListUsers/sysop|administratoru]] uz
'unexpected' => 'Neočekivana vrednost: "$1"="$2".',
'formerror' => 'Greška: ne mogu da pošaljem upitnik',
'badarticleerror' => 'Ova akcija ne može biti izvršena na ovoj stranici.',
-'cannotdelete' => 'Ne mogu da obrišem navedenu stranicu ili fajl. (Moguće je da je neko drugi već obrisao.)',
+'cannotdelete' => 'Ova strana ili fajl nije mogla biti obrisana: "$1".
+Moguće je da ju je neko već obrisao.',
'badtitle' => 'Loš naslov',
'badtitletext' => 'Zahtevani naslov stranice je bio neispravan, prazan ili
neispravno povezan međujezički ili interviki naslov. Možda sadrži jedan ili više karaktera koji ne mogu da se upotrebljavaju u naslovima.',
@@ -576,7 +612,6 @@ Blokirao ga je [[User:$1|$1]] a dati razlog je ''$2''.",
'virus-unknownscanner' => 'nepoznati antivirus:',
# Login and logout pages
-'logouttitle' => 'Odjavi se',
'logouttext' => "'''Sada ste odjavljeni.'''
Možete da nastavite da koristite projekat {{SITENAME}} anonimno, ili se ponovo prijaviti kao drugi korisnik.
@@ -585,7 +620,6 @@ Obratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još
Vaš nalog je kreiran.
Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].',
-'loginpagetitle' => 'Prijavljivanje',
'yourname' => 'Korisničko ime',
'yourpassword' => 'Vaša lozinka',
'yourpasswordagain' => 'Ponovite lozinku',
@@ -596,6 +630,7 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
'nav-login-createaccount' => 'Prijavi se / registruj se',
'loginprompt' => "Morate da imate omogućene kolačiće (''cookies'') da biste se prijavili na {{SITENAME}}.",
'userlogin' => 'Registruj se / Prijavi se',
+'userloginnocreate' => 'Prijavi se',
'logout' => 'Odjavi se',
'userlogout' => 'Odjavi se',
'notloggedin' => 'Niste prijavljeni',
@@ -608,29 +643,8 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
'badretype' => 'Lozinke koje ste uneli se ne poklapaju.',
'userexists' => 'Korisničko ime koje ste uneli već je u upotrebi.
Molimo izaberite drugo ime.',
-'youremail' => 'Adresa vaše e-pošte *',
-'username' => 'Korisničko ime:',
-'uid' => 'Korisnički ID:',
-'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
-'yourrealname' => 'Vaše pravo ime *',
-'yourlanguage' => 'Jezik:',
-'yourvariant' => 'Varijanta:',
-'yournick' => 'Nadimak:',
-'badsig' => 'Greška u potpisu; proverite HTML tagove.',
-'badsiglength' => 'Vaš potpis je predugačak.
-Mora biti ispod $1 {{PLURAL:$1|karakter|karaktera}}.',
-'yourgender' => 'Pol:',
-'gender-unknown' => 'Nenaznačen',
-'gender-male' => 'Muški',
-'gender-female' => 'Ženski',
-'prefs-help-gender' => 'Neobavezno: koristi se za ispravno obraćanje softvera korisnicima, zavisno od njihovog pola.
-Ova informacija će biti javna.',
-'email' => 'E-pošta',
-'prefs-help-realname' => '* Pravo ime (opciono): ako izaberete da date ime, ovo će biti korišćeno za pripisivanje za vaš rad.',
'loginerror' => 'Greška pri prijavljivanju',
-'prefs-help-email' => 'Adresa e-pošte je opciona, ali vam omogućava da zatražite novu lozinku u slučaju da je zaboravite.
-Takođe možete podesiti da drugi mogu da vas kontaktiraju preko vaše korisničke strane ili strane za razgovor, bez potrebe da odajete svoj identitet.',
-'prefs-help-email-required' => 'Neophodna je adresa e-pošte.',
+'createaccounterror' => 'Nije moguće napraviti nalog: $1',
'nocookiesnew' => "Korisnički nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolačiće na svom računaru. Molimo omogućite ih, a onda se prijavite sa svojim novim korisničkim imenom i lozinkom.",
'nocookieslogin' => "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolačiće na svom računaru. Molimo omogućite ih i pokušajte ponovo sa prijavom.",
'noname' => 'Niste izabrali ispravno korisničko ime.',
@@ -641,10 +655,12 @@ Kod korisničkih imena se pravi razlika između malog i velikog slova.
Proverite da li ste ga dobro ukucali, ili [[Special:UserLogin/signup|napravite novi korisnički nalog]].',
'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>". Proverite da li ste dobro napisali.',
'nouserspecified' => 'Morate da naznačite korisničko ime.',
+'login-userblocked' => 'Ovaj korisnik je blokiran. Logovanje nije dozvoljeno.',
'wrongpassword' => 'Lozinka koju ste uneli je neispravna. Molimo pokušajte ponovo.',
'wrongpasswordempty' => 'Lozinka koju ste uneli je prazna. Molimo pokušajte ponovo.',
-'passwordtooshort' => 'Vaša šifra je previše kratka.
-Mora da ima bar {{PLURAL:$1|1 karakter|$1 karaktera}} i različita od vašeg korisničkog imena..',
+'passwordtooshort' => 'Vaša lozinka je prekratka.
+Mora imati najmanje {{PLURAL:$1|1 karakter|$1 karaktera}}.',
+'password-name-match' => 'Vaša lozinka mora biti drugačija od vašeg korisničkog imena.',
'mailmypassword' => 'Pošalji mi novu lozinku',
'passwordremindertitle' => '{{SITENAME}} podsetnik za šifru',
'passwordremindertext' => 'Neko (verovatno vi, sa IP adrese $1) je zahtevao da vam pošaljemo novu
@@ -657,6 +673,7 @@ Ukoliko je neko drugi zahtevao promenu šifre, ili ste vi zaboravili vašu
šifru i više ne želite da je menjate, možete ignorisati ovu poruku i
nastaviti koristiti vašu staru.',
'noemail' => 'Ne postoji adresa e-pošte za korisnika "$1".',
+'noemailcreate' => 'Morate uneti ispravnu adresu e-pošte',
'passwordsent' => 'Nova šifra je poslata na adresu e-pošte korisnika "$1".
Molimo prijavite se pošto je primite.',
'blocked-mailpassword' => 'Vašoj IP adresi je blokiran pristup uređivanju, iz kog razloga nije moguće koristiti funkciju podsećanja lozinke, radi prevencije izvršenja nedozvoljene akcije.',
@@ -679,9 +696,11 @@ Molimo unesite dobro-formatiranu adresu ili ispraznite to polje.',
Prijavite se i promenite vašu lozinku.
Možete igronisati ovu poruku, ukoliko je nalog napravljen greškom.',
+'usernamehasherror' => 'Korisničko ime ne može sadržati znake tarabe (#).',
'login-throttled' => 'Uradili ste previše skorih pokušaja da se ulogujete.
Molimo vas da sačekate par minuta i pokušate opet.',
'loginlanguagelabel' => 'Jezik: $1',
+'suspicious-userlogout' => 'Vaš zahtev za izlogovanje nije izvršen zato što izgleda da je poslat iz neispravnog brauzera ili preko keširanog proksija.',
# Password reset dialog
'resetpass' => 'Promeni lozinku',
@@ -694,18 +713,13 @@ Kako biste dovršili prijavljivanje, morate uneti novu lozinku:',
'retypenew' => 'Ponovo otkucajte novu lozinku:',
'resetpass_submit' => 'Unesi lozinku i prijavi se',
'resetpass_success' => 'Vaša lozinka je uspešno promenjena! Sada vas prijavljujem u...',
-'resetpass_bad_temporary' => 'Nevažeća temporalna lozinka.
-Mora da ste već uspešno promenili vašu lozinku ili zatražili novu temporalnu lozinku.',
'resetpass_forbidden' => 'Lozinke se ne mogu menjati',
'resetpass-no-info' => 'Morate se prijaviti kako bi direktno pristupili ovoj stranici.',
'resetpass-submit-loggedin' => 'Promeni lozinku',
+'resetpass-submit-cancel' => 'Poništi',
'resetpass-wrong-oldpass' => 'Neispravna privremena ili aktuelna lozinka.
Možda ste već uspešno promenili lozinku ili zatražili novu privremenu.',
'resetpass-temp-password' => 'Privremena šifra:',
-'resetpass-log' => 'Istorija promean lozinki',
-'resetpass-logtext' => 'Ispod se nalazi istorija korinika čije su lozinke menjali administratori.',
-'resetpass-logentry' => 'lozinka za $1 je promenjena',
-'resetpass-comment' => 'Razlog za promenu lozinke:',
# Edit page toolbar
'bold_sample' => 'podebljan tekst',
@@ -779,7 +793,6 @@ Molimo vas navedite ovaj ID broj prilikom pravljenja bilo kakvih upita.',
'blockededitsource' => "Tekst '''vaših izmena''' za '''$1''' je prikazan ispod:",
'whitelistedittitle' => 'Obavezno je prijavljivanje za uređivanje',
'whitelistedittext' => 'Morate da se [[Special:Userlogin|prijavite]] da biste menjali članke.',
-'confirmedittitle' => 'Potrebna je potvrda adrese e-pošte za uređivanje',
'confirmedittext' => 'Morate potvrditi vašu adresu e-pošte pre uređivanja strana.
Molimo postavite i potvrdite adresu vaše e-pošte preko vaših [[Special:Preferences|korisničkih podešavanja]].',
'nosuchsectiontitle' => 'Ne postoji takav odeljak',
@@ -804,8 +817,12 @@ Ako ste anonimni korisnik i mislite da su vam upućene nebitne primedbe, molimo
Možete [[Special:Search/{{PAGENAME}}|tražiti ovu stranicu]] u drugim člancima,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne istorije zapisa], ili je [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti].',
'userpage-userdoesnotexist' => 'Nalog "$1" nije registrovan. Proverite da li želite da pravite/uređujete ovu stranicu.',
+'userpage-userdoesnotexist-view' => 'Korisnički nalog "$1" nije registrovan.',
+'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokrian.
+Podaci o poslednjem blokiranju su priloženi ispod kao dodatna informacija:',
'clearyourcache' => "'''Zapamtite:''' Nakon snimanja, možda morate očistiti keš vašeg brauzera da biste videli promene. '''Mozilla / Firefox / Safari:''' držite ''Shift'' dok klikćete ''Reload'' ili pritisnite ''Shift+Ctrl+R'' (''Cmd-Shift-R'' na ''Apple Mac'' mašini); '''IE:''' držite ''Ctrl'' dok klikćete ''Refresh'' ili pritisnite ''Ctrl-F5''; '''Konqueror:''': samo kliknite ''Reload'' dugme ili pritisnite ''F5''; korisnici '''Opera''' brauzera možda moraju da u potpunosti očiste svoj keš preko ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Savet:''' Korisitite 'Prikaži pretpregled' dugme da testirate svoj novi CSS/JS pre snimanja.",
+'usercssyoucanpreview' => "'''Savet:''' Korisitite dugme \"{{int:showpreview}}\" dugme da biste testirali svoj novi CSS pre snimanja.",
+'userjsyoucanpreview' => "'''Savet:''' Korisitite dugme \"{{int:showpreview}}\" da biste testirali svoj novi JavaScript pre snimanja.",
'usercsspreview' => "'''Zapamtite ovo je samo pretpregled vašeg CSS, još uvek nije snimljen!'''",
'userjspreview' => "'''Zapamtite ovo je samo pretpregled vaše JavaScript-e i da još uvek nije snimljen!'''",
'userinvalidcssjstitle' => "'''Pažnja:''' Ne postoji koža \"\$1\". Zapamtite da lične .css i .js koriste mala početna slova, npr. {{ns:user}}:Petar/monobook.css a ne {{ns:user}}:Petar/Monobook.css.",
@@ -849,13 +866,14 @@ Takođe nam obećavate da ste ovo sami napisali ili prekopirali iz izvora u javn
Možda bi bilo dobro da iskopirate tekst u neki editor teksta i sačuvate za kasnije.'''
Administartor koji je zaključao bazu je dao ovo objašnjenje: $1",
-'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa
-administratorskim privilegijama mogu da je menjaju. Uverite se
-da pratite [[{{ns:project}}:Pravila o zaštiti stranica|pravila o zaštiti stranica]].'''",
-'semiprotectedpagewarning' => "'''Napomena:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.",
+'protectedpagewarning' => "'''Napomena: Ova stranica je zaključana tako da samo korisnici sa administratorskim pravima mogu da je menjaju.'''
+Istorija najskorijih izmena je prikazana ispod:",
+'semiprotectedpagewarning' => "'''Napomena:''' Ova strana je zaključana tako da je samo registrovani korisnici mogu uređivati.",
'cascadeprotectedwarning' => "'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo korisnici sa administratorskim privilegijama jer je uključena u prenosivu zaštitu {{PLURAL:$1|sledeće strane|sledećih strana}}:",
-'titleprotectedwarning' => "'''PRAŽNjA: Ova stranica je zaključana tako da samo neki korisnici sa [[Special:ListGroupRights|određenim pravima]] mogu da je naprave.'''",
-'templatesused' => 'Šabloni koji se koriste na ovoj stranici:',
+'titleprotectedwarning' => "'''Napomena: Ova strana je zaključana tako da samo korisnici sa [[Special:ListGroupRights|određenim pravima]] mogu da je naprave.'''",
+'templatesused' => '{{PLURAL:$1|Šablon korišćen|Šabloni korišćeni}} na ovoj strani:',
+'templatesusedpreview' => '{{PLURAL:$1|Šablon korišćen|Šabloni korišćeni}} u ovom pretpregledu:',
+'templatesusedsection' => '{{PLURAL:$1|Šablon korišćen|Šabloni korišćeni}} u ovom odeljku:',
'template-protected' => '(zaštićeno)',
'template-semiprotected' => '(poluzaštićeno)',
'hiddencategories' => 'Ova strana je član {{PLURAL:$1|1 skrivene kategorije|$1 skrivene kategorije|$1 skrivenih kategorija}}:',
@@ -864,12 +882,18 @@ da pratite [[{{ns:project}}:Pravila o zaštiti stranica|pravila o zaštiti stran
'nocreatetext' => 'Na ovom sajtu je ograničeno pravljenje novih stranica.
Možete se vratiti i urediti već postojeću stranu ili [[Special:UserLogin|se prijaviti ili napraviti nalog]].',
'nocreate-loggedin' => 'Nemate ovlašćenja da pravite nove strane.',
+'sectioneditnotsupported-title' => 'Menjanje delova stranice nije podržano.',
+'sectioneditnotsupported-text' => 'Menjanje delova stranice nije podržano na ovoj stranici.',
'permissionserrors' => 'Greške u ovlašćenjima',
'permissionserrorstext' => 'Nemate ovlašćenje da uradite to iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
'permissionserrorstext-withaction' => 'Nemate dozvolu da $2, zbog sledećeg: {{PLURAL:$1|razloga|razloga}}:',
-'deleted-notice' => 'Ova strana je obrisana.
-Istorija brisanja ove strane je priložena ispod, kao dodatna informacija.',
-'deletelog-fulllog' => 'Pogledaj celu istoriju',
+'recreate-moveddeleted-warn' => "'''Upozorenje: Ponovo pravite stranicu koja je prethodno obrisana.'''
+
+Trebalo bi da razmotrite da li je prikladno da nastavite sa uređivanjem ove stranice.
+Istorije brisanja i premeštanja ove strane su priloženi ispod:",
+'moveddeleted-notice' => 'Ova strana je obrisana.
+Istorije njenog brisanja i premeštanja se nalaze ispod, kao informacija.',
+'log-fulllog' => 'Vidi celu istoriju',
'edit-hook-aborted' => 'Izmena je sprečena zakačenom funkcijom.
Nije dato nikakvo obrazloženje.',
'edit-gone-missing' => 'Stranica nije mogla biti izmenjena.
@@ -907,8 +931,9 @@ Razlog koji je dao $3 je ''$2''",
'viewpagelogs' => 'Pogledaj protokole za ovu stranu',
'nohistory' => 'Ne postoji istorija izmena za ovu stranicu.',
'currentrev' => 'Trenutna revizija',
+'currentrev-asof' => 'Trenutna revizija od $1',
'revisionasof' => 'Revizija od $1',
-'revision-info' => 'Revizija od $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Revizija od $1; $2',
'previousrevision' => '← Prethodna revizija',
'nextrevision' => 'Sledeća revizija →',
'currentrevisionlink' => 'Trenutna revizija',
@@ -921,7 +946,7 @@ Razlog koji je dao $3 je ''$2''",
Objašnjenje: (tren) = razlika sa trenutnom verzijom,
(posl) = razlika sa prethodnom verzijom, M = mala izmena',
'history-fieldset-title' => 'Pregledajte istoriju',
-'deletedrev' => '[obrisan]',
+'history-show-deleted' => 'Samo obrisane',
'histfirst' => 'Najranije',
'histlast' => 'Poslednje',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajta|$1 bajtova}})',
@@ -930,67 +955,89 @@ Objašnjenje: (tren) = razlika sa trenutnom verzijom,
# Revision feed
'history-feed-title' => 'Istorija revizija',
'history-feed-description' => 'Istorija revizija za ovu stranu na vikiju',
-'history-feed-item-nocomment' => '$1, $2', # user at time
+'history-feed-item-nocomment' => '$1, $2',
'history-feed-empty' => 'Tražena stranica ne postoji.
Moguće da je obrisana iz vikija ili preimenovana.
Pokušajte [[Special:Search|da pretražite viki]] za relevantne nove strane.',
# Revision deletion
-'rev-deleted-comment' => '(komentar uklonjen)',
-'rev-deleted-user' => '(korisničko ime uklonjeno)',
-'rev-deleted-event' => '(istorija uklonjena)',
-'rev-deleted-text-permission' => 'Revizija ove stranice je uklonjena iz javnih arhiva.
-Moguće da ima više detalja u [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} istoriji brisanja].',
-'rev-deleted-text-view' => 'Revizija ove stranice je uklonjena iz javnih arhiva.
-Kao administrator, možete da je pogledate;
-Moguće da ima više detalja u [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].',
-'rev-delundel' => 'pokaži/sakrij',
-'revisiondelete' => 'Obriši/vrati reviziju',
-'revdelete-nooldid-title' => 'Nema odabrane revizije',
-'revdelete-nooldid-text' => 'Niste odabrali željenu reviziju ili revizije kako biste uključili ove funkcije.',
-'revdelete-nologtype-title' => 'Nije dat tip istorije',
-'revdelete-nologtype-text' => 'Niste naveli tip istorije nad kojim želite da izvedete ovu akciju.',
-'revdelete-toomanytargets-title' => 'Previše ciljanih strana',
-'revdelete-toomanytargets-text' => 'Zadali ste previše tipova ciljanih strana na kojima treba sprovesti ovu akciju.',
-'revdelete-nologid-title' => 'Neispravan unos u istoriju',
-'revdelete-nologid-text' => 'Ili niste naznačili ciljani unos istorije, zarad izvođenja ove funkcije, ili unos koji ste naveli ne postoji.',
-'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} za '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Izabrani događaj iz istorije|Izabrani događaji iz istorije}}:'''",
-'revdelete-text' => "'''Obrisane revizije će se i dalje pojavljivati na istoriji stranice,
-ali će njihov sadržaj biti skriven javnosti.'''
-
-Ostali administratori na ovoj Vikipediji će i dalje imati mogućnost da vide skriveni sadržaj i moći će da ga vrate ponovo putem ove iste komande, sve ukoliko nisu primenjene dodatne restrikcije operatora sajta.",
-'revdelete-suppress-text' => "Sakrivanje naloga bi trebalo da se koristi '''samo''' u sledećim slučajevima:
+'rev-deleted-comment' => '(komentar uklonjen)',
+'rev-deleted-user' => '(korisničko ime uklonjeno)',
+'rev-deleted-event' => '(istorija uklonjena)',
+'rev-deleted-user-contribs' => '[korisničko ime ili IP adresa su obrisani - izmena je sakrivena iz spiska doprinosa]',
+'rev-deleted-text-permission' => "Ova revizija stranice je '''obrisana'''.
+Detalji vezani za ovo brisanje bi se mogli nalaziti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].",
+'rev-deleted-text-unhide' => "Ova revizija stranice je '''obrisana'''.
+Detalji vezani za ovo brisanje bi se mogli nalaziti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].
+Pošto ste administrator, takođe možete [$1 pogledati ovu reviziju], ukoliko želite.",
+'rev-deleted-text-view' => "Ova revizija stranice je '''obrisana'''.
+Pošto ste administrator, možete je videti; Detalji vezani za ovo brisanje bi se mogli nalaziti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].",
+'rev-deleted-no-diff' => "Ne možete videti ovu razliku izmena zato što je jedna od revizija '''obrisana'''.
+Detalji vezani za ovo brisanje bi se mogli nalaziti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].",
+'rev-suppressed-no-diff' => "Ne možete da vidite ovaj dif zato što je jedna od revizija '''obrisana'''.",
+'rev-deleted-unhide-diff' => "Jedna od revizija za ovaj dif je '''obrisana'''.
+Detalji vezani za ovo brisanje bi se mogli nalaziti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].
+Pošto ste administrator, ipak možete [$1 videti ovaj dif], ako želite da nastavite.",
+'rev-delundel' => 'pokaži/sakrij',
+'rev-showdeleted' => 'pokaži',
+'revisiondelete' => 'Obriši/vrati reviziju',
+'revdelete-nooldid-title' => 'Nema odabrane revizije',
+'revdelete-nooldid-text' => 'Niste odabrali željenu reviziju ili revizije kako biste uključili ove funkcije.',
+'revdelete-nologtype-title' => 'Nije dat tip istorije',
+'revdelete-nologtype-text' => 'Niste naveli tip istorije nad kojim želite da izvedete ovu akciju.',
+'revdelete-nologid-title' => 'Neispravan unos u istoriju',
+'revdelete-nologid-text' => 'Ili niste naznačili ciljani unos istorije, zarad izvođenja ove funkcije, ili unos koji ste naveli ne postoji.',
+'revdelete-no-file' => 'Traženi fajl ne postoji.',
+'revdelete-show-file-confirm' => 'Da li ste sigurni da želite da vidite obrisanu reviziju fajla "<nowiki>$1</nowiki>" od $2 u $3?',
+'revdelete-show-file-submit' => 'Da',
+'revdelete-selected' => "'''{{PLURAL:$2|Odabrana revizija|Odabrane revizije}} za '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izabrani događaj iz istorije|Izabrani događaji iz istorije}}:'''",
+'revdelete-text' => "'''Obrisane revizije i događaji će još uvek biti prikazani u istoriji strana i protokola, ali delove njihovog sadržaja neće biti javno dostupni.'''
+Drugi administratori na {{SITENAME}} će još uvek imati pristup ovom skrivenom sadržaju i moći će da ga vrate preko istog ovog interfejsa, osim ako se postave dodatna ograničenja.",
+'revdelete-suppress-text' => "Sakrivanje naloga bi trebalo da se koristi '''samo''' u sledećim slučajevima:
* Verovatno zlonamernu informaciju
* Neodgovarajuće lične podatke
*: ''kućne adrese i telefonske brojeve, brojeve socijalnih usluga, itd.''",
-'revdelete-legend' => 'Postavi restrikcije vidljivosti',
-'revdelete-hide-text' => 'Sakrij tekst revizije',
-'revdelete-hide-name' => 'Sakrij akciju i cilj.',
-'revdelete-hide-comment' => 'Sakrij opis izmene',
-'revdelete-hide-user' => 'Sakrij korisničko ime/IP adresu korisnika koji je uređivao stranicu',
-'revdelete-hide-restricted' => 'Skloni podatke kako od administratora, tako i od svih ostalih',
-'revdelete-suppress' => 'Sakrij podatke od sisopa i ostalih.',
-'revdelete-hide-image' => 'Sakrij sadržaj fajla',
-'revdelete-unsuppress' => 'Ukloni zabrane nad oporavljenim verzijama.',
-'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Primeni na izabrane revizije',
-'revdelete-logentry' => 'promenjen prikaz revizije za [[$1]]',
-'logdelete-logentry' => 'promenjena vidnost događaja za stranu [[$1]]',
-'revdelete-success' => "'''Vidljivost izmene je uspešno podešena.'''",
-'logdelete-success' => "'''Vidnost loga je uspešno podešena.'''",
-'revdel-restore' => 'Promena vidnosti',
-'pagehist' => 'Istorija strane',
-'deletedhist' => 'Obrisana istorija',
-'revdelete-content' => 'sadržaj',
-'revdelete-summary' => 'opis izmene',
-'revdelete-uname' => 'korisničko ime',
-'revdelete-restricted' => 'ograničenja za sisope su primenjena',
-'revdelete-unrestricted' => 'ograničenja za sisope su uklonjena',
-'revdelete-hid' => 'sakriveno: $1',
-'revdelete-unhid' => 'otkriveno: $1',
-'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|reviziju|revizije|revizija}}',
-'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-legend' => 'Postavi restrikcije vidljivosti',
+'revdelete-hide-text' => 'Sakrij tekst revizije',
+'revdelete-hide-image' => 'Sakrij sadržaj fajla',
+'revdelete-hide-name' => 'Sakrij akciju i cilj.',
+'revdelete-hide-comment' => 'Sakrij opis izmene',
+'revdelete-hide-user' => 'Sakrij korisničko ime/IP adresu korisnika koji je uređivao stranicu',
+'revdelete-hide-restricted' => 'Skloni podatke kako od administratora, tako i od svih ostalih',
+'revdelete-radio-same' => '(ne menjaj)',
+'revdelete-radio-set' => 'Da',
+'revdelete-radio-unset' => 'Ne',
+'revdelete-suppress' => 'Sakrij podatke od sisopa i ostalih.',
+'revdelete-unsuppress' => 'Ukloni zabrane nad oporavljenim verzijama.',
+'revdelete-log' => 'Razlog:',
+'revdelete-submit' => 'Primeni na {{PLURAL:$1|izabranu reviziju|izabrane revizije}}',
+'revdelete-logentry' => 'promenjen prikaz revizije za [[$1]]',
+'logdelete-logentry' => 'promenjena vidnost događaja za stranu [[$1]]',
+'revdelete-success' => "'''Vidljivost izmene je uspešno podešena.'''",
+'revdelete-failure' => "'''Vidljivost revizije nije mogla biti ažurirana:'''
+$1",
+'logdelete-success' => "'''Vidnost loga je uspešno podešena.'''",
+'revdel-restore' => 'Promena vidnosti',
+'pagehist' => 'Istorija strane',
+'deletedhist' => 'Obrisana istorija',
+'revdelete-content' => 'sadržaj',
+'revdelete-summary' => 'opis izmene',
+'revdelete-uname' => 'korisničko ime',
+'revdelete-restricted' => 'ograničenja za sisope su primenjena',
+'revdelete-unrestricted' => 'ograničenja za sisope su uklonjena',
+'revdelete-hid' => 'sakriveno: $1',
+'revdelete-unhid' => 'otkriveno: $1',
+'revdelete-log-message' => '$1 za $2 {{PLURAL:$2|reviziju|revizije|revizija}}',
+'logdelete-log-message' => '$1 za $2 {{PLURAL:$2|događaj|događaja}}',
+'revdelete-reason-dropdown' => '*Uobičajeni razlozi za brisanje
+** Kršenje autorskog prava
+** Neodgovarajuće lične informacije
+** Potencijalno uvredljive informacije',
+'revdelete-otherreason' => 'Drugi/dodatni razlog:',
+'revdelete-reasonotherlist' => 'Drugi razlog',
+'revdelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'revdelete-offender' => 'Autor revizije:',
# Suppression log
'suppressionlog' => 'Log sakrivanja',
@@ -1025,65 +1072,13 @@ Ostali administratori na ovoj Vikipediji će i dalje imati mogućnost da vide sk
'mergelogpagetext' => 'Ispod se nalazi spisak skorašnjih spajanja verzija jedne strane u drugu.',
# Diffs
-'history-title' => 'Istorija verzija za "$1"',
-'difference' => '(Razlika između revizija)',
-'lineno' => 'Linija $1:',
-'compareselectedversions' => 'Uporedi označene verzije',
-'visualcomparison' => 'Vizuelno poređenje',
-'wikicodecomparison' => 'Poređenje po vikitekstu',
-'editundo' => 'vrati',
-'diff-multi' => '({{PLURAL:$1|Jedna revizija nije prikazana|$1 revizije nisu prikazane|$1 revizija nije prikazano}}.)',
-'diff-movedto' => 'premešteno na $1',
-'diff-styleadded' => '$1 stil dodat',
-'diff-added' => '$1 dodat',
-'diff-changedto' => 'promenjeno na $1',
-'diff-movedoutof' => 'izmešteno iz $1',
-'diff-styleremoved' => '$1 stil uklonjen',
-'diff-removed' => '$1 uklonjen',
-'diff-changedfrom' => 'promenjeno sa $1',
-'diff-src' => 'kod',
-'diff-withdestination' => 'sa destinacijom $1',
-'diff-with' => '&amp;#32;sa $1 $2',
-'diff-with-final' => '&amp;#32;i $1 $2',
-'diff-width' => 'širina',
-'diff-height' => 'visina',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''navodnik'''",
-'diff-h1' => "'''zaglavlje (nivo 1)'''",
-'diff-h2' => "'''zaglavlje (nivo 2)'''",
-'diff-h3' => "'''zaglavlje (nivo 3)'''",
-'diff-h4' => "'''zaglavlje (nivo 4)'''",
-'diff-h5' => "'''zaglavlje (nivo 5)'''",
-'diff-pre' => "'''preformatirani blok'''",
-'diff-ul' => "'''neuređeni spisak'''",
-'diff-ol' => "'''uređeni spisak'''",
-'diff-li' => "'''element spiska'''",
-'diff-table' => "'''tabela'''",
-'diff-tbody' => "'''sadržaj tabele'''",
-'diff-tr' => "'''red'''",
-'diff-td' => "'''ćelija'''",
-'diff-th' => "'''heder'''",
-'diff-br' => "'''nova linija'''",
-'diff-hr' => "'''horizontalna linija'''",
-'diff-code' => "'''deo sa računarskim kodom'''",
-'diff-dl' => "'''definicioni spisak'''",
-'diff-dt' => "'''definicioni pojam'''",
-'diff-dd' => "'''definicija'''",
-'diff-input' => "'''unos'''",
-'diff-form' => "'''forma'''",
-'diff-img' => "'''slika'''",
-'diff-a' => "'''veza'''",
-'diff-i' => "'''kurziv'''",
-'diff-b' => "'''podebljano'''",
-'diff-strong' => "'''pojačano'''",
-'diff-em' => "'''istaknuto'''",
-'diff-font' => "'''tip slova'''",
-'diff-big' => "'''veliko'''",
-'diff-del' => "'''obrisano'''",
-'diff-tt' => "'''fiksirana širina'''",
-'diff-sub' => "'''subskript'''",
-'diff-sup' => "'''superskript'''",
-'diff-strike' => "'''precrtano'''",
+'history-title' => 'Istorija verzija za "$1"',
+'difference' => '(Razlika između revizija)',
+'lineno' => 'Linija $1:',
+'compareselectedversions' => 'Uporedi označene verzije',
+'showhideselectedversions' => 'Prikaži/sakrij odabrane revizije',
+'editundo' => 'vrati',
+'diff-multi' => '({{PLURAL:$1|Jedna revizija nije prikazana|$1 revizije nisu prikazane|$1 revizija nije prikazano}}.)',
# Search results
'searchresults' => 'Rezultati pretrage',
@@ -1091,27 +1086,25 @@ Ostali administratori na ovoj Vikipediji će i dalje imati mogućnost da vide sk
'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, pogledajte [[{{MediaWiki:Helppage}}|Pretraživanje {{SITENAME}}]].',
'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje povezuju na "$1"]])',
'searchsubtitleinvalid' => "Tražili ste '''$1'''",
-'noexactmatch' => 'Ne postoji stranica sa naslovom "$1". Možete [[$1|napraviti ovu stranicu]].',
-'noexactmatch-nocreate' => "'''Ne postoji stranica sa naslovom \"\$1\".'''",
'toomanymatches' => 'Previše pogodaka je vrećno. Izmenite upit.',
'titlematches' => 'Naslov stranice odgovara',
'notitlematches' => 'Nijedan naslov stranice ne odgovara',
'textmatches' => 'Tekst stranice odgovara',
'notextmatches' => 'Nijedan tekst stranice ne odgovara',
-'prevn' => 'prethodnih $1',
-'nextn' => 'sledećih $1',
+'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
+'nextn' => 'sledećih {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Prethodni $1 rezultat|Prethodnih $1 rezultata}}',
'nextn-title' => '{{PLURAL:$1|Sledeći $1 rezultat|Sledećih $1 rezultata}}',
'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata}} po strani',
-'viewprevnext' => 'Pogledaj ($1) ($2) ($3).',
+'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opcije pretrage',
'searchmenu-exists' => "'''Već postoji članak pod imenom \"[[:\$1]]\" na ovom Vikiju'''",
'searchmenu-new' => "'''Napravi članak \"[[:\$1]]\" na ovom Vikiju!'''",
'searchhelp-url' => 'Help:Sadržaj',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pretraži strane sa ovim prefiksom]]',
-'searchprofile-articles' => 'Strane sadržaja',
-'searchprofile-articles-and-proj' => 'Članci i strane projekta',
-'searchprofile-project' => 'Strane projekta',
+'searchprofile-articles' => 'Stranice sa sadržajem',
+'searchprofile-project' => 'Strane pomoći i projekta',
+'searchprofile-images' => 'Multimedija',
'searchprofile-everything' => 'Sve',
'searchprofile-advanced' => 'Napredna',
'searchprofile-articles-tooltip' => 'Traži u $1',
@@ -1119,8 +1112,6 @@ Ostali administratori na ovoj Vikipediji će i dalje imati mogućnost da vide sk
'searchprofile-images-tooltip' => 'Pretražuj fajlove',
'searchprofile-everything-tooltip' => 'Pretraži sav sadržaj (uključujući strane za razgovor)',
'searchprofile-advanced-tooltip' => 'Pretraži u sopstvenim imenskim prostorima',
-'prefs-search-nsdefault' => 'pretražuj koristeći podrazumevana podešavanja:',
-'prefs-search-nscustom' => 'Pretražuj u prilagođenim imenskim prostorima:',
'search-result-size' => '$1 ({{PLURAL:$2|1 reč|$2 reči}})',
'search-result-score' => 'Relevantnost: $1%',
'search-redirect' => '(preusmerenje $1)',
@@ -1133,11 +1124,11 @@ Ostali administratori na ovoj Vikipediji će i dalje imati mogućnost da vide sk
'search-mwsuggest-disabled' => 'bez sugestija',
'search-relatedarticle' => 'Srodno',
'mwsuggest-disable' => 'Isključi AJAKS sugestije',
+'searcheverything-enable' => 'Traži u svim imenskim prostorima',
'searchrelated' => 'srodno',
'searchall' => 'sve',
'showingresults' => "Prikazujem ispod do {{PLURAL:$1|'''1''' rezultat|'''$1''' rezultata}} počev od #'''$2'''.",
'showingresultsnum' => "Prikazujem ispod do {{PLURAL:$3|'''1''' rezultat|'''$3''' rezultata}} počev od #'''$2'''.",
-'showingresultstotal' => "Prikazivanje {{PLURAL:$4|rezultat '''$1''' od '''$3'''|rezultata '''$1 - $2''' od '''$3'''}}",
'nonefound' => "'''Napomena''': Samo nekoliko imenskih prostora se pretražuju po osnovnom podešavanju.
Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući stranice za razgovor, šablone itd.), ili izaberite željeni imenski prostor kao prefiks.",
'search-nonefound' => 'Nije bilo rezultata koji odgovaraju upitu.',
@@ -1146,108 +1137,144 @@ Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući st
'powersearch-ns' => 'Traži u imenskim prostorima:',
'powersearch-redir' => 'Spisak preusmerenja',
'powersearch-field' => 'Pretraži za',
+'powersearch-togglelabel' => 'Odaberi:',
+'powersearch-toggleall' => 'Sve',
+'powersearch-togglenone' => 'Ništa',
'search-external' => 'Spoljašnja pretraga',
'searchdisabled' => 'Pretraga za sajt {{SITENAME}} je onemogućena. U međuvremenu, možete koristiti Gugl pretragu. Imajte na umu da indeksi Gugla za sajt {{SITENAME}} mogu biti zastareli.',
+# Quickbar
+'qbsettings' => 'Brza paleta',
+'qbsettings-none' => 'Nikakva',
+'qbsettings-fixedleft' => 'Pričvršćena levo',
+'qbsettings-fixedright' => 'Pričvršćena desno',
+'qbsettings-floatingleft' => 'Plutajuća levo',
+'qbsettings-floatingright' => 'Plutajuća desno',
+
# Preferences page
-'preferences' => 'Podešavanja',
-'mypreferences' => 'Moja podešavanja',
-'prefs-edits' => 'Broj izmena:',
-'prefsnologin' => 'Niste prijavljeni',
-'prefsnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da biste podešavali korisnička podešavanja.',
-'prefsreset' => 'Vraćena su uskladištena podešavanja.',
-'qbsettings' => 'Brza paleta',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'Pričvršćena levo',
-'qbsettings-fixedright' => 'Pričvršćena desno',
-'qbsettings-floatingleft' => 'Plutajuća levo',
-'qbsettings-floatingright' => 'Plutajuća desno',
-'changepassword' => 'Promeni lozinku',
-'skin' => 'Koža',
-'skin-preview' => 'Pregled',
-'math' => 'Matematike',
-'dateformat' => 'Format datuma',
-'datedefault' => 'Nije bitno',
-'datetime' => 'Datum i vreme',
-'math_failure' => 'Neuspeh pri parsiranju',
-'math_unknown_error' => 'nepoznata greška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'rečnička greška',
-'math_syntax_error' => 'sintaksna greška',
-'math_image_error' => 'PNG konverzija neuspešna; proverite tačnu instalaciju latex-a, dvips-a, gs-a i convert-a',
-'math_bad_tmpdir' => 'Ne mogu da napišem ili napravim privremeni math direktorijum',
-'math_bad_output' => 'Ne mogu da napišem ili napravim direktorijum za math izlaz.',
-'math_notexvc' => 'Nedostaje izvršno texvc; molimo pogledajte math/README da biste podesili.',
-'prefs-personal' => 'Korisnička podešavanja',
-'prefs-rc' => 'Skorašnje izmene',
-'prefs-watchlist' => 'Spisak nadgledanja',
-'prefs-watchlist-days' => 'Broj dana koji treba da se vidi na spisku nadgledanja:',
-'prefs-watchlist-edits' => 'Broj izmena koji treba da se vidi na proširenom spisku nadgledanja:',
-'prefs-misc' => 'Razno',
-'prefs-resetpass' => 'Promeni lozinku',
-'saveprefs' => 'Sačuvaj',
-'resetprefs' => 'Vrati',
-'restoreprefs' => 'Vrati sva podrazumevana podešavanja',
-'textboxsize' => 'Veličine tekstualnog polja',
-'prefs-edit-boxsize' => 'Veličina prozora za pisanje izmene.',
-'rows' => 'Redova',
-'columns' => 'Kolona',
-'searchresultshead' => 'Pretraga',
-'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
-'stub-threshold' => 'Prag za formatiranje <a href="#" class="stub">linka kao klice</a> (u bajtovima):',
-'recentchangesdays' => 'Broj dana za prikaz u skorašnjim izmenema:',
-'recentchangescount' => 'Broj naslova u skorašnjim izmenama:',
-'savedprefs' => 'Vaša podešavanja su sačuvana.',
-'timezonelegend' => 'Vremenska zona:',
-'timezonetext' => 'Broj sati za koji se vaše lokalno vreme razlikuje od serverskog vremena (UTC).',
-'localtime' => 'Lokalno vreme:',
-'timezoneselect' => 'Vremenska zona:',
-'timezoneuseserverdefault' => 'Koristi osnovna podešavanja',
-'timezoneuseoffset' => 'Drugo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
-'servertime' => 'Vreme na serveru:',
-'guesstimezone' => 'Popuni iz brauzera',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktik',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azija',
-'timezoneregion-atlantic' => 'Atlantski okean',
-'timezoneregion-australia' => 'Australija',
-'timezoneregion-europe' => 'Evropa',
-'timezoneregion-indian' => 'Indijski okean',
-'timezoneregion-pacific' => 'Pacifički okean',
-'allowemail' => 'Omogući e-poštu od drugih korisnika',
-'prefs-searchoptions' => 'Opcije pretrage',
-'prefs-namespaces' => 'Imenski prostori',
-'defaultns' => 'Po standardu traži u ovim imenskim prostorima:',
-'default' => 'standard',
-'files' => 'Fajlovi',
-'prefs-custom-css' => 'Korisnički CSS',
-'prefs-custom-js' => 'Korisnički JS',
+'preferences' => 'Podešavanja',
+'mypreferences' => 'Moja podešavanja',
+'prefs-edits' => 'Broj izmena:',
+'prefsnologin' => 'Niste prijavljeni',
+'prefsnologintext' => 'Morate biti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prijavljeni]</span> da biste podešavali korisnička podešavanja.',
+'changepassword' => 'Promeni lozinku',
+'prefs-skin' => 'Koža',
+'skin-preview' => 'Pregled',
+'prefs-math' => 'Matematike',
+'datedefault' => 'Nije bitno',
+'prefs-datetime' => 'Datum i vreme',
+'prefs-personal' => 'Korisnička podešavanja',
+'prefs-rc' => 'Skorašnje izmene',
+'prefs-watchlist' => 'Spisak nadgledanja',
+'prefs-watchlist-days' => 'Broj dana koji treba da se vidi na spisku nadgledanja:',
+'prefs-watchlist-days-max' => '(maksimum 7 dana)',
+'prefs-watchlist-edits' => 'Broj izmena koji treba da se vidi na proširenom spisku nadgledanja:',
+'prefs-watchlist-edits-max' => '(maksimalan broj: 1000)',
+'prefs-watchlist-token' => 'Pečat spiska nadgledanja:',
+'prefs-misc' => 'Razno',
+'prefs-resetpass' => 'Promeni lozinku',
+'prefs-email' => 'Opcije elektronske pošte',
+'prefs-rendering' => 'Izgled',
+'saveprefs' => 'Sačuvaj',
+'resetprefs' => 'Vrati',
+'restoreprefs' => 'Vrati sva podrazumevana podešavanja',
+'prefs-editing' => 'Veličine tekstualnog polja',
+'prefs-edit-boxsize' => 'Veličina prozora za pisanje izmene.',
+'rows' => 'Redova',
+'columns' => 'Kolona',
+'searchresultshead' => 'Pretraga',
+'resultsperpage' => 'Pogodaka po stranici:',
+'contextlines' => 'Linija po pogotku:',
+'contextchars' => 'Karaktera konteksta po liniji:',
+'stub-threshold' => 'Prag za formatiranje <a href="#" class="stub">linka kao klice</a> (u bajtovima):',
+'recentchangesdays' => 'Broj dana za prikaz u skorašnjim izmenema:',
+'recentchangesdays-max' => '(mmaksimum $1 {{PLURAL:$1|dan|dana}})',
+'recentchangescount' => 'Podrazumevani broj izmena, koji će biti prikazan:',
+'savedprefs' => 'Vaša podešavanja su sačuvana.',
+'timezonelegend' => 'Vremenska zona:',
+'localtime' => 'Lokalno vreme:',
+'timezoneuseserverdefault' => 'Koristi osnovna podešavanja',
+'timezoneuseoffset' => 'Drugo (odredi odstupanje)',
+'timezoneoffset' => 'Odstupanje¹:',
+'servertime' => 'Vreme na serveru:',
+'guesstimezone' => 'Popuni iz brauzera',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktik',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azija',
+'timezoneregion-atlantic' => 'Atlantski okean',
+'timezoneregion-australia' => 'Australija',
+'timezoneregion-europe' => 'Evropa',
+'timezoneregion-indian' => 'Indijski okean',
+'timezoneregion-pacific' => 'Pacifički okean',
+'allowemail' => 'Omogući e-poštu od drugih korisnika',
+'prefs-searchoptions' => 'Opcije pretrage',
+'prefs-namespaces' => 'Imenski prostori',
+'defaultns' => 'U suprotnom, traži u ovim imenskim prostorima:',
+'default' => 'standard',
+'prefs-files' => 'Fajlovi',
+'prefs-custom-css' => 'Korisnički CSS',
+'prefs-custom-js' => 'Korisnički JS',
+'prefs-emailconfirm-label' => 'Potvrda e-pošte:',
+'prefs-textboxsize' => 'Veličina prozora za pisanje izmene',
+'youremail' => 'Adresa vaše e-pošte *',
+'username' => 'Korisničko ime:',
+'uid' => 'Korisnički ID:',
+'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupa}}:',
+'prefs-registration' => 'Vreme registracije:',
+'yourrealname' => 'Vaše pravo ime *',
+'yourlanguage' => 'Jezik:',
+'yourvariant' => 'Varijanta:',
+'yournick' => 'Nadimak:',
+'badsig' => 'Greška u potpisu; proverite HTML tagove.',
+'badsiglength' => 'Vaš potpis je predugačak.
+Mora biti ispod $1 {{PLURAL:$1|karakter|karaktera}}.',
+'yourgender' => 'Pol:',
+'gender-unknown' => 'Nenaznačen',
+'gender-male' => 'Muški',
+'gender-female' => 'Ženski',
+'prefs-help-gender' => 'Neobavezno: koristi se za ispravno obraćanje softvera korisnicima, zavisno od njihovog pola.
+Ova informacija će biti javna.',
+'email' => 'E-pošta',
+'prefs-help-realname' => '* Pravo ime (opciono): ako izaberete da date ime, ovo će biti korišćeno za pripisivanje za vaš rad.',
+'prefs-help-email' => 'Adresa e-pošte je opciona, ali vam omogućava da zatražite novu lozinku u slučaju da je zaboravite.
+Takođe možete podesiti da drugi mogu da vas kontaktiraju preko vaše korisničke strane ili strane za razgovor, bez potrebe da odajete svoj identitet.',
+'prefs-help-email-required' => 'Neophodna je adresa e-pošte.',
+'prefs-info' => 'Osnovne informacije',
+'prefs-i18n' => 'Internacionalizacija',
+'prefs-signature' => 'Potpis',
+'prefs-dateformat' => 'Format datuma',
+'prefs-timeoffset' => 'Vremenska razlika',
+'prefs-advancedediting' => 'Napredne opcije',
+'prefs-advancedrc' => 'Napredne opcije',
+'prefs-advancedrendering' => 'Napredne opcije',
+'prefs-advancedsearchoptions' => 'Napredne opcije',
+'prefs-advancedwatchlist' => 'Napredne opcije',
+'prefs-display' => 'Opcije prikaza',
+'prefs-diffs' => 'Revizije',
# User rights
-'userrights' => 'Upravljanje korisničkim pravima', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Upravljaj korisničkim grupama',
-'userrights-user-editname' => 'Unesite korisničko ime:',
-'editusergroup' => 'Menjaj grupe korisnika',
-'editinguser' => "Menjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Promeni korisničke grupe',
-'saveusergroups' => 'Sačuvaj korisničke grupe',
-'userrights-groupsmember' => 'Član:',
-'userrights-groups-help' => 'Možete kontrolisati grupe u kojima se ovaj korisnik nalazi.
+'userrights' => 'Upravljanje korisničkim pravima',
+'userrights-lookup-user' => 'Upravljaj korisničkim grupama',
+'userrights-user-editname' => 'Unesite korisničko ime:',
+'editusergroup' => 'Menjaj grupe korisnika',
+'editinguser' => "Menjate korisnička prava korisnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Promeni korisničke grupe',
+'saveusergroups' => 'Sačuvaj korisničke grupe',
+'userrights-groupsmember' => 'Član:',
+'userrights-groupsmember-auto' => 'Implicitni član od:',
+'userrights-groups-help' => 'Možete kontrolisati grupe u kojima se ovaj korisnik nalazi.
* Štiklirani kvadratić označava da se korisnik nalazi u grupi.
* Kvadratić koji nije štikliran označava da se korisnik ne nalazi u grupi.
* Zvezdica (*) označava da vi ne možete ukloniti grupu ukoliko ste je dodali, ili obratno.',
-'userrights-reason' => 'Razlog:',
-'userrights-no-interwiki' => 'Nemate ovlašćenja da menjate korisnička prava na ostalim vikijima.',
-'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili je lokalna.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim nalogom da dodate korisnička prava.',
-'userrights-notallowed' => 'Vaš nalog nema ovlašćenja da dodaje korisnika prava.',
-'userrights-changeable-col' => 'Grupe koje možete menjati',
-'userrights-unchangeable-col' => 'Grupe koje ne možete menjati',
+'userrights-reason' => 'Razlog:',
+'userrights-no-interwiki' => 'Nemate ovlašćenja da menjate korisnička prava na ostalim vikijima.',
+'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili je lokalna.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim nalogom da dodate korisnička prava.',
+'userrights-notallowed' => 'Vaš nalog nema ovlašćenja da dodaje korisnika prava.',
+'userrights-changeable-col' => 'Grupe koje možete menjati',
+'userrights-unchangeable-col' => 'Grupe koje ne možete menjati',
# Groups
'group' => 'Grupa:',
@@ -1313,6 +1340,8 @@ Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući st
'right-editprotected' => 'izmena zaštićenih strana (bez mogućnosti izmene stepena zaštite)',
'right-editinterface' => 'Uredi korisnički interfejs',
'right-editusercssjs' => 'menjanje tuđih CSS i JS fajlova',
+'right-editusercss' => 'menjanje tuđih CSS fajlova',
+'right-edituserjs' => 'menjanje tuđih JS fajlova',
'right-rollback' => 'brzo vraćanje izmena poslednjeg saradnika koji je menjao konkretnu stranu',
'right-markbotedits' => 'označavanje vraćenih strana kao izmena koje je napravio bot',
'right-noratelimit' => 'ne biti pogođen limitima',
@@ -1329,6 +1358,7 @@ Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući st
'right-siteadmin' => 'zaključavanje i otključavanje baze podataka',
'right-reset-passwords' => 'Obnavljanje lozinki drugih korisnika',
'right-override-export-depth' => 'Izvezi strane, uključujući povezane strane, do dubine 5',
+'right-sendemail' => 'Pošalji e-poštu ostalim korisnicima',
# User rights log
'rightslog' => 'istorija korisničkih prava',
@@ -1378,6 +1408,15 @@ Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući st
'recentchanges-legend' => 'Podešavanja skorašnjih izmena',
'recentchangestext' => 'Ovde pratite najskorije izmene na vikiju.',
'recentchanges-feed-description' => 'Pratite skorašnje izmene uz pomoć ovog fida.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - nova stranica',
+'recentchanges-label-newpage' => 'Ovom izmenom je napravljena nova strana.',
+'recentchanges-legend-minor' => '$1 - mala izmena',
+'recentchanges-label-minor' => 'Ovo je mala izmena',
+'recentchanges-legend-bot' => '$1 - izmena bota',
+'recentchanges-label-bot' => 'Ovu izmenu je napravio bot',
+'recentchanges-legend-unpatrolled' => '$1 - nepatrolirana izmena',
+'recentchanges-label-unpatrolled' => 'Ova izmena još uvek nije patrolirana',
'rcnote' => "Ispod {{PLURAL:$1|je '''1''' promena|su poslednje '''$1''' promene|su poslednjih '''$1''' promena}} u {{PLURAL:$2|poslednjem danu|poslednja '''$2''' dana|poslednjih '''$2''' dana}}, od $5, $4.",
'rcnotefrom' => 'Ispod su promene od <b>$2</b> (do <b>$1</b> prikazano).',
'rclistfrom' => 'Pokaži nove promene počev od $1',
@@ -1404,6 +1443,8 @@ Pokušajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (uključujući st
# Recent changes linked
'recentchangeslinked' => 'Srodne promene',
+'recentchangeslinked-feed' => 'Srodne promene',
+'recentchangeslinked-toolbox' => 'Srodne promene',
'recentchangeslinked-title' => 'Srodne promene za "$1"',
'recentchangeslinked-noresult' => 'Nema izmena na povezanim stranicama za odabrani period.',
'recentchangeslinked-summary' => "Ova posebna stranica pokazuje spisak poselenjih promena na stranicama koje su povezane (ili članovi određene kategorije).
@@ -1414,8 +1455,8 @@ Stranice sa [[Special:Watchlist|vašeg spiska nadgledanja]] su '''podebljane'''.
# Upload
'upload' => 'Pošalji fajl',
'uploadbtn' => 'Pošalji fajl',
-'reupload' => 'Ponovo pošalji',
'reuploaddesc' => 'Vrati se na upitnik za slanje.',
+'upload-tryagain' => 'Pošalji izmenjeni opis fajla',
'uploadnologin' => 'Niste prijavljeni',
'uploadnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da biste slali fajlove.',
'upload_directory_missing' => 'Direktorijum za prihvat fajlova ($1) nedostaje, a veb server ga ne može napraviti.',
@@ -1446,6 +1487,7 @@ Sliku dodajete u pogodne članke koristeći sintaksu:
'minlength1' => 'Imena fajlova moraju imati najmanje jedan karakter.',
'illegalfilename' => 'Fajl "$1" sadrži karaktere koji nisu dozvoljeni u nazivima stranica. Molimo Vas promenite ime fajla i ponovo ga pošaljite.',
'badfilename' => 'Ime slike je promenjeno u "$1".',
+'filetype-mime-mismatch' => 'Ekstenzija fajla ne odgovara MIME tipu.',
'filetype-badmime' => 'Nije dozvoljeno slati fajlove MIME tipa &quot;$1&quot;.',
'filetype-bad-ie-mime' => 'Ovaj fajl ne može biti poslat zato što bi Internet Eksplorer mogao da ga detektuje "$1", što je onemogućen i potencijalno opasan tip fajla.',
'filetype-unwanted-type' => "'''\".\$1\"''' nije poželjan tip fajla.
@@ -1467,7 +1509,6 @@ Da biste učinili da se Vaš opis ipak pojavi, trebalo bi da ga izmenite ručno.
* Ime fajla koji šaljete: '''<tt>[[:$1]]</tt>'''
* Ime postojećeg fajla: '''<tt>[[:$2]]</tt>'''
Molimo izaberite drugo ime.",
-'fileexists-thumb' => "<center>'''Postojeći fajl'''</center>",
'fileexists-thumbnail-yes' => "Ovaj fajl je najverovatnije umanjena verzija slike. [[$1|thumb]]
Molimo vas proverite fajl '''<tt>[[:$1]]</tt>'''.
Ukoliko je dati fajl ista slika ili originalna slika, nije potrebno da šaljete dodatno umanjenu verziju iste.",
@@ -1483,6 +1524,7 @@ Molimo vratite se i pošaljite ovaj fajl pod novim imenom. [[File:$1|thumb|cente
Trebalo bi da proverite istoriju brisanja fajla pre ponovnog slanja.',
'successfulupload' => 'Uspešno slanje',
'uploadwarning' => 'Upozorenje pri slanju',
+'uploadwarning-text' => 'Molimo Vas da izmenite opis fajla ispod i pokušate ponovo.',
'savefile' => 'Snimi fajl',
'uploadedimage' => 'poslao "[[$1]]"',
'overwroteimage' => 'poslata nova verzija "[[$1]]"',
@@ -1491,11 +1533,14 @@ Trebalo bi da proverite istoriju brisanja fajla pre ponovnog slanja.',
'php-uploaddisabledtext' => 'Slanje fajlova je onemogućeno u samom PHP-u.
Molimo, proverite podešavanja file_uploads.',
'uploadscripted' => 'Ovaj fajl sadrži HTML ili kod skripte koje internet brauzer može pogrešno da interpretira.',
-'uploadcorrupt' => 'Fajl je neispravan ili ima netačnu ekstenziju. Molimo proverite fajl i pošaljite ga ponovo.',
'uploadvirus' => 'Fajl sadrži virus! Detalji: $1',
+'upload-source' => 'Izvorni fajl',
'sourcefilename' => 'Ime fajla izvora:',
+'sourceurl' => 'Izvorna adresa:',
'destfilename' => 'Ciljano ime fajla:',
'upload-maxfilesize' => 'Maksimalna veličina fajla: $1',
+'upload-description' => 'Opis fajla',
+'upload-options' => 'Opcije slanja',
'watchthisupload' => 'Nadgledaj ovaj fajl',
'filewasdeleted' => 'Fajl sa ovim imenom je ranije poslat, a kasnije obrisan. Trebalo bi da proverite $1 pre nego što nastavite sa ponovnim slanjem.',
'upload-wasdeleted' => "'''Paćnja: Šaljete fajl koji je prethodno obrisan.'''
@@ -1504,12 +1549,27 @@ Proverite da li ste sigurno da želite poslati ovaj fajl.
Razlog brisanja ovog fajla ranije je:",
'filename-bad-prefix' => "Ime ovog fajla počinje sa '''\"\$1\"''', što nije opisno ime, najčešće je nazvan automatski sa digitalnim fotoaparatom. Molimo izaberite opisnije ime za vaš fajl.",
-'upload-proto-error' => 'Nekorektni protokol',
-'upload-proto-error-text' => 'Slanje eksternih fajlova zahteva URLove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
-'upload-file-error' => 'Interna greška',
-'upload-file-error-text' => 'Desila se interna greška pri pokušaju pravljenja privremenog fajla na serveru. Kontaktirajte sistem administratora.',
-'upload-misc-error' => 'Nepoznata greška pri slanju fajla',
-'upload-misc-error-text' => 'Nepoznata greška pri slanju fajla. Proverite da li je URL ispravan i pokušajte ponovo. Ako problem ostane, kontaktirajte sistem administratora.',
+'upload-proto-error' => 'Nekorektni protokol',
+'upload-proto-error-text' => 'Slanje eksternih fajlova zahteva URLove koji počinju sa <code>http://</code> ili <code>ftp://</code>.',
+'upload-file-error' => 'Interna greška',
+'upload-file-error-text' => 'Desila se interna greška pri pokušaju pravljenja privremenog fajla na serveru. Kontaktirajte sistem administratora.',
+'upload-misc-error' => 'Nepoznata greška pri slanju fajla',
+'upload-misc-error-text' => 'Nepoznata greška pri slanju fajla. Proverite da li je URL ispravan i pokušajte ponovo. Ako problem ostane, kontaktirajte sistem administratora.',
+'upload-too-many-redirects' => 'URL je sadržao previše preusmerenja',
+'upload-unknown-size' => 'Nepoznata veličina',
+'upload-http-error' => 'Došlo je do HTTP greške: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Pristup onemogućen',
+'img-auth-nofile' => 'Fajl "$1" ne postoji.',
+
+# HTTP errors
+'http-invalid-url' => 'Neispravan URL: $1',
+'http-request-error' => 'HTTP zahtev nije prošao zbog nepoznate greške.',
+'http-read-error' => 'HTTP greška pri čitanju.',
+'http-timed-out' => 'HTTP zahtev je prekoračio vreme za ispunjenje.',
+'http-curl-error' => 'Greška pri otvaranju URL: $1',
+'http-host-unreachable' => 'URL je bio nedostupan.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL nije dostupan',
@@ -1518,6 +1578,7 @@ Razlog brisanja ovog fajla ranije je:",
'upload-curl-error28-text' => 'Sajtu je trebalo previše vremena da odgovori. Proverite da li sajt radi, ili sačekajte malo i pokušajte ponovo.',
'license' => 'Licenca:',
+'license-header' => 'Licenca:',
'nolicense' => 'Nema',
'license-nopreview' => '(prikaz nije dostupan)',
'upload_source_url' => ' (validan, javno dostupan URL)',
@@ -1536,6 +1597,7 @@ Razlog brisanja ovog fajla ranije je:",
'listfiles_count' => 'Verzije',
# File description page
+'file-anchor-link' => 'Slika',
'filehist' => 'Istorija fajla',
'filehist-help' => 'Kliknite na datum/vreme da vidite verziju fajla iz tog vremena.',
'filehist-deleteall' => 'obriši sve',
@@ -1544,11 +1606,13 @@ Razlog brisanja ovog fajla ranije je:",
'filehist-current' => 'trenutno',
'filehist-datetime' => 'Datum/Vreme',
'filehist-thumb' => 'Umanjeni prikaz',
+'filehist-thumbtext' => 'Umanjeni prikaz za verziju od $1',
'filehist-nothumb' => 'Bez pregleda slika',
'filehist-user' => 'Korisnik',
'filehist-dimensions' => 'Dimenzije',
'filehist-filesize' => 'Veličina fajla',
'filehist-comment' => 'Komentar',
+'filehist-missing' => 'Nema fajla',
'imagelinks' => 'Veze ka fajlu',
'linkstoimage' => '{{PLURAL:$1|Sledeća stranica koristi|$1 Sledeće stranice koriste}} ovaj fajl:',
'linkstoimage-more' => 'Više od $1 {{PLURAL:$1|stranice se veše|stranica se vežu}} za ovaj fajl.
@@ -1558,15 +1622,12 @@ Sledeći spisak pokazuje stranice koje se vežu za ovaj fajl
'morelinkstoimage' => 'Vidi [[Special:WhatLinksHere/$1|više veza]] prema ovom fajlu.',
'redirectstofile' => 'Sledeći {{PLURAL:$1|fajl se preusmerava|$1 fajla se preusmeravaju|$1 fajlova se preusmerava}} na ovaj fajl:',
'duplicatesoffile' => 'Sledeći {{PLURAL:$1|fajl je duplikat|$1 fajla su duplikati|$1 fajlova su duplikati}} ovog fajla ([[Special:FileDuplicateSearch/$2|više detalja]]):',
-'sharedupload' => 'Ovaj fajl je sa $1, i može se koristiti na drugim projektima.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Molimo pogledajte $1 za dalje informacije.',
-'shareduploadwiki-desc' => 'Opis na $1 se nalazi ispod.',
-'shareduploadwiki-linktext' => 'strana za opis fajla',
-'noimage' => 'Ne postoji fajl sa ovim imenom, možete ga $1',
-'noimage-linktext' => 'poslati',
+'sharedupload' => 'Ovaj fajl je sa $1, i može se koristiti na drugim projektima.',
+'filepage-nofile' => 'Ne postoji fajl pod tim imenom.',
+'filepage-nofile-link' => 'Ne postoji fajl sa ovim imenom, ali ga možete [$1 poslati].',
'uploadnewversion-linktext' => 'Pošaljite noviju verziju ovog fajla',
-'shared-repo-from' => 'od $1', # $1 is the repository name
-'shared-repo' => 'deljeno skladište', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'od $1',
+'shared-repo' => 'deljeno skladište',
# File reversion
'filerevert' => 'Vrati $1',
@@ -1595,6 +1656,7 @@ Sledeći spisak pokazuje stranice koje se vežu za ovaj fajl
** Kršenje autorskih prava
** Duplikat',
'filedelete-edit-reasonlist' => 'Uredi razloge za brisanje',
+'filedelete-maintenance' => 'Brisanje i vraćanje fajlova je temporalno onemogućeno zbog održavanja.',
# MIME search
'mimesearch' => 'MIME pretraga',
@@ -1615,7 +1677,8 @@ Ne zaboravite da proverite ostale poveznice ka šablonima pre nego što ih obri
'unusedtemplateswlh' => 'ostale veze',
# Random page
-'randompage' => 'Slučajna stranica',
+'randompage' => 'Slučajna stranica',
+'randompage-nopages' => 'Nema strana u {{PLURAL:$2|sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.',
# Random redirect
'randomredirect' => 'Slučajno preusmerenje',
@@ -1627,6 +1690,7 @@ Ne zaboravite da proverite ostale poveznice ka šablonima pre nego što ih obri
'statistics-header-edits' => 'Statistike izmena',
'statistics-header-views' => 'Vidi statistike',
'statistics-header-users' => 'Statistike korisnika',
+'statistics-header-hooks' => 'Druge statistike',
'statistics-articles' => 'Strane sa sadržajem',
'statistics-pages' => 'Stranice',
'statistics-pages-desc' => 'Sve strane na ovoj Viki, uključujući strane za razgovor, preusmerenja, itd.',
@@ -1654,8 +1718,10 @@ Svaki red sadrži veze prema prvom i drugom redirektu, kao i ciljanu stranu drug
'double-redirect-fixed-move' => '[[$1]] je premešten, sada je preusmerenje na [[$2]]',
'double-redirect-fixer' => 'Popravljač preusmerenja',
-'brokenredirects' => 'Pokvarena preusmerenja',
-'brokenredirectstext' => 'Sledeća preusmerenja povezuju na nepostojeće strane:',
+'brokenredirects' => 'Pokvarena preusmerenja',
+'brokenredirectstext' => 'Sledeća preusmerenja povezuju na nepostojeće strane:',
+'brokenredirects-edit' => 'uredi',
+'brokenredirects-delete' => 'obriši',
'withoutinterwiki' => 'Stranice bez interviki veza',
'withoutinterwiki-summary' => 'Sledeće stranice ne vežu ka drugim jezicima (međuviki):',
@@ -1763,14 +1829,17 @@ Možete suziti pregled odabirom tipa istorije, korisničkog imena ili tražene s
# Special:Categories
'categories' => 'Kategorije stranica',
-'categoriespagetext' => 'Sledeće kategorije već postoje na vikiju',
+'categoriespagetext' => '{{PLURAL:$1|Sledeća kategorija sadrži|Sledeće kategorije sadrže}} strane ili fajlove.
+[[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.
+Takođe pogledajte [[Special:WantedCategories|tražene kategorije]].',
'categoriesfrom' => 'Prikaži kategorije na:',
'special-categories-sort-count' => 'sortiraj po broju',
'special-categories-sort-abc' => 'sortiraj azbučno',
# Special:DeletedContributions
-'deletedcontributions' => 'Obrisane izmene',
-'deletedcontributions-title' => 'Obrisane izmene',
+'deletedcontributions' => 'Obrisane izmene',
+'deletedcontributions-title' => 'Obrisane izmene',
+'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
'linksearch' => 'Veb linkovi',
@@ -1786,6 +1855,14 @@ Podržani protokoli: <tt>$1</tt>',
'listusersfrom' => 'Prikaži korisnike počevši od:',
'listusers-submit' => 'Prikaži',
'listusers-noresult' => 'Nije pronađen korisnik.',
+'listusers-blocked' => '(blokiran)',
+
+# Special:ActiveUsers
+'activeusers' => 'Spisak aktivnih korisnika',
+'activeusers-from' => 'Prikaži korisnike počevši od:',
+'activeusers-hidebots' => 'Sakrij botove',
+'activeusers-hidesysops' => 'Sakrij administratore',
+'activeusers-noresult' => 'Korisnik nije pronađen.',
# Special:Log/newusers
'newuserlogpage' => 'istorija kreiranja korisnika',
@@ -1796,17 +1873,23 @@ Podržani protokoli: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'nalog automatski napravljen',
# Special:ListGroupRights
-'listgrouprights' => 'prava saradničkih grupa',
-'listgrouprights-summary' => 'Sledi spisak korisničkih grupa definisanih na ovom Vikiju, sa njihovim pridruženim pravima pristupa.
+'listgrouprights' => 'prava saradničkih grupa',
+'listgrouprights-summary' => 'Sledi spisak korisničkih grupa definisanih na ovom Vikiju, sa njihovim pridruženim pravima pristupa.
Mogle bi Vas interesovati [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinačnim pravima pristupa.',
-'listgrouprights-group' => 'Grupa',
-'listgrouprights-rights' => 'Prava',
-'listgrouprights-helppage' => 'Help:Prava',
-'listgrouprights-members' => '(spisak članova)',
-'listgrouprights-addgroup' => 'Nože da doda {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
-'listgrouprights-removegroup' => 'Može da obriže {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
-'listgrouprights-addgroup-all' => 'Može da doda sve grupe',
-'listgrouprights-removegroup-all' => 'Može da obriše sve grupe',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dodeljeno pravo</span>
+* <span class="listgrouprights-revoked">Ukinuto pravo</span>',
+'listgrouprights-group' => 'Grupa',
+'listgrouprights-rights' => 'Prava',
+'listgrouprights-helppage' => 'Help:Prava',
+'listgrouprights-members' => '(spisak članova)',
+'listgrouprights-addgroup' => 'Nože da doda {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-removegroup' => 'Može da obriže {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-addgroup-all' => 'Može da doda sve grupe',
+'listgrouprights-removegroup-all' => 'Može da obriše sve grupe',
+'listgrouprights-addgroup-self' => 'Dodaj {{PLURAL:$2|grupa|grupe}} na svoj nalog: $1',
+'listgrouprights-removegroup-self' => 'Ukloni {{PLURAL:$2|grupa|grupe}} iz naloga: $1',
+'listgrouprights-addgroup-self-all' => 'Dodaj sve grupe u svoj nalog',
+'listgrouprights-removegroup-self-all' => 'Ukloni sve grupe sa svog naloga',
# E-mail user
'mailnologin' => 'Nema adrese za slanje',
@@ -1883,28 +1966,32 @@ Ako kasnije želite da uklonite stranicu sa vašeg spiska nadgledanja, kliknite
'enotif_anon_editor' => 'anonimni korisnik $1',
'enotif_body' => 'Dragi $WATCHINGUSERNAME,
-{{SITENAME}} stranicaa $PAGETITLE je bila $CHANGEDORCREATED ($PAGEEDITDATE) od strane $PAGEEDITOR,
+
+Strana $PAGETITLE na {{SITENAME}} je bila $CHANGEDORCREATED dana $PAGEEDITDATE od strane $PAGEEDITOR,
pogledajte $PAGETITLE_URL za trenutnu verziju.
$NEWPAGE
-Opis izmene urednika: $PAGESUMMARY $PAGEMINOREDIT
+Rezime urednika: $PAGESUMMARY $PAGEMINOREDIT
Kontaktirajte urednika:
-pošta: $PAGEEDITOR_EMAIL
-viki: $PAGEEDITOR_WIKI
+pošta $PAGEEDITOR_EMAIL
+viki $PAGEEDITOR_WIKI
Neće biti drugih obaveštenja u slučaju daljih promena ukoliko ne posetite ovu stranu.
Takođe možete da resetujete zastavice za obaveštenja za sve vaše nadgledane strane na vašem spisku nadgledanja.
- Vaš prijateljski {{SITENAME}} sistem obaveštavanja
+ Srdačno, {{SITENAME}} sistem obaveštavanja
--
-Da promenite podešavanja vezana za spisak nadgledanja posetite
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Da biste promenili podešavanja vezana za spisak nadgledanja, posetite
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Da biste uklonili ovu stranu sa Vašeg spiska nadgledanja, posetite
+$UNWATCHURL
-Fidbek i dalja pomoć:
-{{fullurl:{{ns:help}}:Sadržaj}}',
+Podrška i dalja pomoć:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Obriši stranicu',
@@ -1915,13 +2002,14 @@ Fidbek i dalja pomoć:
'exblank' => 'stranica je bila prazna',
'delete-confirm' => 'Obriši „$1“',
'delete-legend' => 'Obriši',
-'historywarning' => 'Pažnja: stranica koju želite da obrišete ima istoriju:',
+'historywarning' => "'''Upozorenje:''' Strana koju želite da obrišete ima istoriju sa približno $1 {{PLURAL:$1|revizijom|revizija}}:",
'confirmdeletetext' => 'Na putu ste da trajno obrišete stranicu
ili sliku zajedno sa njenom istorijom iz baze podataka.
Molimo vas potvrdite da nameravate da uradite ovo, da razumete
posledice, i da ovo radite u skladu sa
[[{{MediaWiki:Policy-url}}|pravilima]] {{SITENAME}}.',
'actioncomplete' => 'Akcija završena',
+'actionfailed' => 'Akcija neuspela',
'deletedtext' => 'Članak "<nowiki>$1</nowiki>" je obrisan.
Pogledajte $2 za zapis o skorašnjim brisanjima.',
'deletedarticle' => 'obrisan "[[$1]]"',
@@ -1953,8 +2041,8 @@ produžite oprezno.',
'alreadyrolled' => 'Ne mogu da vratim poslednju izmenu [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmenio ili vratio članak.
Poslednja izmena od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Komentar izmene je: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Vraćene izmene od [[{{ns:special}}:Contributions/$2|$2]] ([[User_talk:$2|razgovor]]) na poslednju izmenu od korisnika [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Komentar izmene je: \"''\$1''\".",
+'revertpage' => 'Vraćene izmene od [[{{ns:special}}:Contributions/$2|$2]] ([[User_talk:$2|razgovor]]) na poslednju izmenu od korisnika [[User:$1|$1]]',
'rollback-success' => 'Vraćene izmene od strane $1; na poslednju izmenu od strane $2.',
'sessionfailure' => 'Izgleda da postoji problem sa vašom seansom prijave;
ova akcija je prekinuta kao predostrožnost protiv preotimanja seansi.
@@ -1974,7 +2062,6 @@ Molimo kliknite "back" i ponovo učitajte stranu odakle ste došli, a onda poku
'protectexpiry' => 'Ističe:',
'protect_expiry_invalid' => 'Vreme isteka nije odgovarajuće.',
'protect_expiry_old' => 'Vreme isteka je u prošlosti.',
-'protect-unchain' => 'Otključaj dozvole premeštanja',
'protect-text' => "Ovde možete pogledati i menjati nivo zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ne možete menjati nivoe zaštite dok ste blokirani.
Ovo su trenutna podešavanja za stranicu '''$1''':",
@@ -2004,7 +2091,7 @@ Protect pages included in this page (cascading protection)',
** Kontra-produktivne izmene
** Stranica sa velikim brojem poseta',
'protect-edit-reasonlist' => 'Izmenite razloge zaštite',
-'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 nedelja:1 week,2 nedelje:2 weeks,1 mesec:1 month,3 meseca:3 months,6 meseci:6 months,1 godina:1 year,beskonačno:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 sat:1 hour,1 dan:1 day,1 nedelja:1 week,2 nedelje:2 weeks,1 mesec:1 month,3 meseca:3 months,6 meseci:6 months,1 godina:1 year,beskonačno:infinite',
'restriction-type' => 'Ovlašćenje:',
'restriction-level' => 'Nivo zaštite:',
'minimum-size' => 'Min veličina',
@@ -2045,6 +2132,7 @@ U ovakvim slučajevima morate skinuti oznaku sa ili ponovo prikazati najnoviju o
'undelete-nodiff' => 'Nema prethodnih izmena.',
'undeletebtn' => 'Vrati!',
'undeletelink' => 'pogledaj/vrati',
+'undeleteviewlink' => 'pogledaj',
'undeletereset' => 'Poništi',
'undeleteinvert' => 'Invertujte izbor',
'undeletecomment' => 'Razlog:',
@@ -2083,19 +2171,24 @@ $1',
'contributions-title' => 'Prilozi korisnika za $1',
'mycontris' => 'Moji prilozi',
'contribsub2' => 'Za $1 ($2)',
-'nocontribs' => 'Nisu nađene promene koje zadovoljavaju ove uslove.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Nisu nađene promene koje zadovoljavaju ove uslove.',
'uctop' => ' (vrh)',
'month' => 'Za mesec (i ranije):',
'year' => 'Od godine (i ranije):',
-'sp-contributions-newbies' => 'Prikaži samo priloge novih naloga',
-'sp-contributions-newbies-sub' => 'Za novajlije',
-'sp-contributions-newbies-title' => 'Doprinosi korisnika sa novim nalozima',
-'sp-contributions-blocklog' => 'Istorija blokiranja',
-'sp-contributions-logs' => 'istorije',
-'sp-contributions-search' => 'Pretraga priloga',
-'sp-contributions-username' => 'IP adresa ili korisničko ime:',
-'sp-contributions-submit' => 'Pretraga',
+'sp-contributions-newbies' => 'Prikaži samo priloge novih naloga',
+'sp-contributions-newbies-sub' => 'Za novajlije',
+'sp-contributions-newbies-title' => 'Doprinosi korisnika sa novim nalozima',
+'sp-contributions-blocklog' => 'Istorija blokiranja',
+'sp-contributions-deleted' => 'obrisane izmene korisnika',
+'sp-contributions-logs' => 'istorije',
+'sp-contributions-talk' => 'razgovor',
+'sp-contributions-userrights' => 'podešavanje korisničkih prava',
+'sp-contributions-blocked-notice' => 'Ovaj korisnik je trenutno blokiran.
+Poslednji unos u dnevnik blokiranja je ponuđen ispod kao referenca:',
+'sp-contributions-search' => 'Pretraga priloga',
+'sp-contributions-username' => 'IP adresa ili korisničko ime:',
+'sp-contributions-submit' => 'Pretraga',
# What links here
'whatlinkshere' => 'Šta je povezano ovde',
@@ -2118,6 +2211,7 @@ $1',
# Block/unblock
'blockip' => 'Blokiraj korisnika',
+'blockip-title' => 'Blokiraj korisnika',
'blockip-legend' => 'Blokiraj korisnika',
'blockiptext' => 'Upotrebite donji upitnik da biste uklonili pravo pisanja
sa određene IP adrese ili korisničkog imena.
@@ -2144,7 +2238,7 @@ stranice su vandalizovane).',
'ipbenableautoblock' => 'Automatski blokiraj poslednju IP adresu ovog korisnika, i svaku sledeću adresu sa koje se pokuša uređivanje.',
'ipbsubmit' => 'Blokiraj ovog korisnika',
'ipbother' => 'Ostalo vreme',
-'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 nedelja:1 week,2 nedelje:2 weeks,1 mesec:1 month,3 meseca:3 months,6 meseci:6 months,1 godina:1 year,beskonačno:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 nedelja:1 week,2 nedelje:2 weeks,1 mesec:1 month,3 meseca:3 months,6 meseci:6 months,1 godina:1 year,beskonačno:infinite',
'ipbotheroption' => 'ostalo',
'ipbotherreason' => 'Drugi/dodatni razlog:',
'ipbhidename' => 'Sakroj korisničko ime sa izmena i spiskova',
@@ -2174,9 +2268,11 @@ ranije blokiranoj IP adresi ili korisničkom imenu.',
'ipblocklist-sh-tempblocks' => '$1 privremene blokove',
'ipblocklist-sh-addressblocks' => '$1 pojedinačne IP blokove',
'ipblocklist-submit' => 'Pretraga',
+'ipblocklist-localblock' => 'Lokalni blok',
+'ipblocklist-otherblocks' => 'Drugi {{PLURAL:$1|blok|blokovi}}',
'blocklistline' => '$1, $2 blokirao korisnika [[User:$3|$3]], (ističe $4)',
'infiniteblock' => 'beskonačan',
-'expiringblock' => 'ističe $1',
+'expiringblock' => 'Ističe na $1 u $2',
'anononlyblock' => 'samo anonimni',
'noautoblockblock' => 'Autoblokiranje je onemogućeno',
'createaccountblock' => 'blokirano pravljenje naloga',
@@ -2190,7 +2286,8 @@ ranije blokiranoj IP adresi ili korisničkom imenu.',
'contribslink' => 'prilozi',
'autoblocker' => 'Automatski ste blokirani jer je vašu IP adresu skoro koristio "[[User:$1|$1]]". Razlog za blokiranje korisnika $1 je: "\'\'\'$2\'\'\'".',
'blocklogpage' => 'istorija blokiranja',
-'blocklog-fulllog' => 'Puna istorija blokiranja',
+'blocklog-showlog' => 'Ovaj korisnik je već bio blokiran.
+Dnevnik blokiranja je ponuđen ispod kao referenca:',
'blocklogentry' => 'je blokirao "[[$1]]" sa vremenom isticanja blokade od $2 $3',
'reblock-logentry' => 'promenjena podešavanja bloka za [[$1]] sa vremenom isteka $2 ($3)',
'blocklogtext' => 'Ovo je istorija blokiranja i odblokiranja korisnika. Automatski
@@ -2210,10 +2307,12 @@ blokirane IP adrese nisu navedene. Pogledajte [[{{ns:special}}:Ipblocklist|spisa
'ipb_already_blocked' => '"$1" je već blokiran',
'ipb-needreblock' => '== Već blokiran ==
$1 je već blokiran. Da li želite da promenite podešavanja?',
+'ipb-otherblocks-header' => 'Drugi {{PLURAL:$1|blok|blokovi}}',
'ipb_cant_unblock' => 'Greška: ID bloka $1 nije nađen. Moguće je da je već odblokiran.',
'ipb_blocked_as_range' => 'Greška: IP $1 nije direktno blokiran i ne može biti odblokiran.
Međutim, blokiran je kao deo opsega $2, koji može biti odblokiran.',
'ip_range_invalid' => 'Netačan blok IP adresa.',
+'ip_range_toolarge' => 'Opsezi blokiranja širi od /$1 nisu dozvoljeni.',
'blockme' => 'Blokiraj me',
'proxyblocker' => 'Bloker proksija',
'proxyblocker-disabled' => 'Ova fukcija je isključena.',
@@ -2274,6 +2373,7 @@ nastavite.",
U tim slučajevima, moraćete ručno da premestite ili spojite stranicu ukoliko to želite.",
'movearticle' => 'Premesti stranicu',
+'moveuserpage-warning' => "'''Upozorenje:'''Spremate se da premestite korisničku stranicu. Upamtite da će se samo stranica premestiti, dok korisnik ''neće'' biti preimenovan.",
'movenologin' => 'Niste prijavljeni',
'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]]
da biste premestili stranicu.',
@@ -2285,7 +2385,7 @@ da biste premestili stranicu.',
'move-watch' => 'Nadgledaj ovu stranicu',
'movepagebtn' => 'premesti stranicu',
'pagemovedsub' => 'Premeštanje uspelo',
-'movepage-moved' => '\'\'\'Strana "$1" je preimenovana u "$2"!\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Strana "$1" je preimenovana u "$2"!\'\'\'',
'movepage-moved-redirect' => 'Preusmerenje je naprevljeno.',
'movepage-moved-noredirect' => 'Pravljenje preusmerenja je zadržano.',
'articleexists' => 'Stranica pod tim imenom već postoji, ili je
@@ -2329,6 +2429,12 @@ Ciljani članak "[[:$1]]" već postoji. Da li želite da ga obrišete da biste n
'imageinvalidfilename' => 'Ciljano ime fajla je pogrešno.',
'fix-double-redirects' => 'Osvežava bilo koje preusmerenje koje veže na originalni naslov',
'move-leave-redirect' => 'Ostavi preusmerenje nakon premeštanja',
+'protectedpagemovewarning' => "'''Napomena:''' Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je premeste.
+Najskorija zabeleška istorije je priložena ispod kao dodatna informacija:",
+'semiprotectedpagemovewarning' => "'''Napomena:''' Ova stranica je zaključana tako da samo registrovani korisnici mogu da je premeste.
+Najnoviji izveštaj nalazi se ispod:",
+'move-over-sharedrepo' => '== Datoteka postoji ==
+[[:$1]] se nalazi na deljenom skladištu. Ako premestite datoteku na ovaj naslov, to će zameniti deljenu datoteku.',
# Export
'export' => 'Izvezi stranice',
@@ -2352,15 +2458,21 @@ U drugom slučaju, možete takođe koristiti vezu, npr. [[{{#Special:Export}}/{{
'export-pagelinks' => 'Uključi povezane strane do dubine od:',
# Namespace 8 related
-'allmessages' => 'Sistemske poruke',
-'allmessagesname' => 'Ime',
-'allmessagesdefault' => 'Standardni tekst',
-'allmessagescurrent' => 'Trenutni tekst',
-'allmessagestext' => 'Ovo je spisak sistemskih poruka koje su u MedijaViki imenskom prostoru.
+'allmessages' => 'Sistemske poruke',
+'allmessagesname' => 'Ime',
+'allmessagesdefault' => 'Standardni tekst',
+'allmessagescurrent' => 'Trenutni tekst',
+'allmessagestext' => 'Ovo je spisak sistemskih poruka koje su u MedijaViki imenskom prostoru.
Posetite [http://translatewiki.net translatewiki.net] ukoliko želite da pomognete u lokalizaciji.',
-'allmessagesnotsupportedDB' => "Ova stranica ne može biti upotrebljena zato što je '''\$wgUseDatabaseMessages''' isključen.",
-'allmessagesfilter' => 'Filter za imena poruka:',
-'allmessagesmodified' => 'Prikaži samo izmenjene',
+'allmessagesnotsupportedDB' => "Ova stranica ne može biti upotrebljena zato što je '''\$wgUseDatabaseMessages''' isključen.",
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filtriraj po stanju prilagođenosti:',
+'allmessages-filter-unmodified' => 'Neizmenjene',
+'allmessages-filter-all' => 'Sve',
+'allmessages-filter-modified' => 'Izmenjene',
+'allmessages-prefix' => 'Filtriraj po prefiksu:',
+'allmessages-language' => 'Jezik:',
+'allmessages-filter-submit' => 'Idi',
# Thumbnails
'thumbnail-more' => 'uvećaj',
@@ -2370,6 +2482,8 @@ Posetite [http://translatewiki.net translatewiki.net] ukoliko želite da pomogne
'djvu_no_xml' => 'Ne mogu preuzeti XML za DjVu fajl.',
'thumbnail_invalid_params' => 'Pogrešni parametri za malu sliku.',
'thumbnail_dest_directory' => 'Ne mogu napraviti odredišni direktorijum.',
+'thumbnail_image-type' => 'Tip slike nije podržan',
+'thumbnail_image-missing' => 'Izgleda da fajl nedostaje: $1',
# Special:Import
'import' => 'Uvoz stranica',
@@ -2434,6 +2548,7 @@ Molimo Vas da opet pokušate.',
'tooltip-ca-viewsource' => 'Ova stranica je zaključana. Možete videti njen izvor',
'tooltip-ca-history' => 'Prethodne verzije ove stranice',
'tooltip-ca-protect' => 'Zaštiti ovu stranicu',
+'tooltip-ca-unprotect' => 'Otključaj ovu stranicu',
'tooltip-ca-delete' => 'Obriši ovu stranicu',
'tooltip-ca-undelete' => 'Vraćati izmene koje su načinjene pre brisanja stranice',
'tooltip-ca-move' => 'Premesti ovu stranicu',
@@ -2444,6 +2559,7 @@ Molimo Vas da opet pokušate.',
'tooltip-search-fulltext' => 'Pretražite strane sa ovim tekstom',
'tooltip-p-logo' => 'Glavna strana',
'tooltip-n-mainpage' => 'Posetite glavnu stranu',
+'tooltip-n-mainpage-description' => 'Posetite glavnu stranu',
'tooltip-n-portal' => 'O projektu, šta možete da radite i gde da pronađete stvari',
'tooltip-n-currentevents' => 'Saznajte više o aktuelnostima',
'tooltip-n-recentchanges' => 'Spisak skorašnjih izmena na vikiju',
@@ -2492,10 +2608,12 @@ Molimo Vas da opet pokušate.',
# Attribution
'anonymous' => 'Anonimni {{PLURAL:$1|korisnik|korisnici}} na {{SITENAME}}',
'siteuser' => '{{SITENAME}} korisnik $1',
-'lastmodifiedatby' => 'Ovu stranicu je poslednji put promenio $3 u $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonimni korisnik $1',
+'lastmodifiedatby' => 'Ovu stranicu je poslednji put promenio $3 u $2, $1.',
'othercontribs' => 'Bazirano na radu korisnika $1.',
'others' => 'ostali',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|korisnik|korisnici}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonimni korisnik|anonimnih korisnika}} $1',
'creditspage' => 'Zasluge za stranicu',
'nocredits' => 'Nisu dostupne informacije o zaslugama za ovu stranicu.',
@@ -2524,11 +2642,22 @@ Ovo je verovatno izazvano blokiranom vezom ka spoljašnjem sajtu.',
'mw_math_modern' => 'Preporučeno za savremene brauzere',
'mw_math_mathml' => 'MathML ako je moguće (eksperimentalno)',
+# Math errors
+'math_failure' => 'Neuspeh pri parsiranju',
+'math_unknown_error' => 'nepoznata greška',
+'math_unknown_function' => 'nepoznata funkcija',
+'math_lexing_error' => 'rečnička greška',
+'math_syntax_error' => 'sintaksna greška',
+'math_image_error' => 'PNG konverzija neuspešna; proverite tačnu instalaciju latex-a, dvips-a, gs-a i convert-a',
+'math_bad_tmpdir' => 'Ne mogu da napišem ili napravim privremeni math direktorijum',
+'math_bad_output' => 'Ne mogu da napišem ili napravim direktorijum za math izlaz.',
+'math_notexvc' => 'Nedostaje izvršno texvc; molimo pogledajte math/README da biste podesili.',
+
# Patrolling
'markaspatrolleddiff' => 'Označi kao patroliran',
'markaspatrolledtext' => 'Označi ovaj članak kao patroliran',
'markedaspatrolled' => 'Označen kao patroliran',
-'markedaspatrolledtext' => 'Izabrana revizija je označena kao patrolirana.',
+'markedaspatrolledtext' => 'Izabrana revizija od [[:$1]] je označena kao patrolirana.',
'rcpatroldisabled' => 'Patrola skorašnjih izmena onemogućena',
'rcpatroldisabledtext' => 'Patrola skorašnjih izmena je trenutno onemogućena.',
'markedaspatrollederror' => 'Nemoguće označiti kao patrolirano',
@@ -2558,13 +2687,10 @@ $1',
'previousdiff' => '← Starija izmena',
'nextdiff' => 'Novija izmena →',
-# Visual comparison
-'visual-comparison' => 'Vizuelno poređenje',
-
# Media information
'mediawarning' => "'''Upozorenje''': Ovaj tip fajla bi mogao da sadrži štetan kod.
Njegovim izvršavanjem biste mogli da oštetite Vaš sistem.",
-'imagemaxsize' => 'Ograniči slike na stranama za razgovor o slikama na:',
+'imagemaxsize' => "Ograničenje veličine slike:<br />''(za strane opisa fajlova)''",
'thumbsize' => 'Veličina umanjenog prikaza :',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strana|strane|strana}}',
'file-info' => '(veličina fajla: $1, MIME tip: $2)',
@@ -2573,6 +2699,7 @@ Njegovim izvršavanjem biste mogli da oštetite Vaš sistem.",
'svg-long-desc' => '(SVG fajl, nominalno $1 × $2 piksela, veličina fajla: $3)',
'show-big-image' => 'Puna rezolucija',
'show-big-image-thumb' => '<small>Veličina ovog prikaza: $1 × $2 piksela</small>',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frejm|frejmova}}',
# Special:NewFiles
'newimages' => 'Galerija novih slika',
@@ -2610,7 +2737,7 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. članci u kojima se slik
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Širina',
@@ -2738,14 +2865,14 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. članci u kojima se slik
'exif-unknowndate' => 'Nepoznat datum',
-'exif-orientation-1' => 'Normalno', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Obrnuto po horizontali', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Zaokrenuto 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Obrnuto po vertikali', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Zaokrenuto 90° suprotno od smera kazaljke na satu i obrnuto po vertikali', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Zaokrenuto 90° u smeru kazaljke na satu', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Zaokrenuto 90° u smeru kazaljke na satu i obrnuto po vertikali', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Zaokrenuto 90° suprotno od smera kazaljke na satu', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normalno',
+'exif-orientation-2' => 'Obrnuto po horizontali',
+'exif-orientation-3' => 'Zaokrenuto 180°',
+'exif-orientation-4' => 'Obrnuto po vertikali',
+'exif-orientation-5' => 'Zaokrenuto 90° suprotno od smera kazaljke na satu i obrnuto po vertikali',
+'exif-orientation-6' => 'Zaokrenuto 90° u smeru kazaljke na satu',
+'exif-orientation-7' => 'Zaokrenuto 90° u smeru kazaljke na satu i obrnuto po vertikali',
+'exif-orientation-8' => 'Zaokrenuto 90° suprotno od smera kazaljke na satu',
'exif-planarconfiguration-1' => 'delimični format',
'exif-planarconfiguration-2' => 'planarni format',
@@ -2869,7 +2996,7 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. članci u kojima se slik
'exif-gpsmeasuremode-2' => 'Dvodimenzionalno merenje',
'exif-gpsmeasuremode-3' => 'Trodimenzionalno merenje',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometri na čas',
'exif-gpsspeed-m' => 'Milje na čas',
'exif-gpsspeed-n' => 'Čvorovi',
@@ -2888,6 +3015,7 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. članci u kojima se slik
'watchlistall2' => 'sve',
'namespacesall' => 'svi',
'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -2909,13 +3037,19 @@ Vraćeno: $1',
'confirmemail_loggedin' => 'Adresa vaše e-pošte je sada potvrđena.',
'confirmemail_error' => 'Nešto je pošlo po zlu prilikom snimanja vaše potvrde.',
'confirmemail_subject' => '{{SITENAME}} adresa e-pošte za potvrđivanje',
-'confirmemail_body' => 'Neko, verovatno vi, je sa IP adrese $1 registrovao nalog "$2" sa ovom adresom e-pošte na sajtu {{SITENAME}}.
+'confirmemail_body' => 'Neko, verovatno vi, sa IP adrese $1
+je registrovao nalog „$2” sa ovom adresom e-pošte na sajtu {{SITENAME}}.
-Da potvrdite da ovaj nalog stvarno pripada vama i da aktivirate mogućnost e-pošte na sajtu {{SITENAME}}, otvorite ovu vezu u vašem brauzeru:
+Da potvrdite da ovaj nalog stvarno pripada vama i da aktivirate
+mogućnost e-pošte na sajtu {{SITENAME}}, otvorite ovu vezu u vašem brauzeru:
$3
-Ako ovo *niste* vi, ne pratite vezu. Ovaj kod za potvrdu će isteći u $4.',
+Ako ovo *niste* vi, pratite ovu vezu kako biste prekinuli registraciju:
+
+$5
+
+Ovaj kod za potvrdu će isteći u $4.',
'confirmemail_invalidated' => 'Overa elektronske adrese je poništena.',
'invalidateemail' => 'poništavanje potvrde putem imejla',
@@ -3008,7 +3142,7 @@ Takođe, možete [[Special:Watchlist/edit|koristiti standardan uređivač spiska
'duplicate-defaultsort' => "'''Upozorenje:''' Podrazumevani ključ sortiranja „$2“ prepisuje ranije podrazumevani ključ sortiranja „$1“.",
# Special:Version
-'version' => 'Verzija', # Not used as normal message but as header for the special page itself
+'version' => 'Verzija',
'version-extensions' => 'Instalisane ekstenzije',
'version-specialpages' => 'Posebne stranice',
'version-parserhooks' => 'zakačke parsera',
@@ -3022,6 +3156,7 @@ Takođe, možete [[Special:Watchlist/edit|koristiti standardan uređivač spiska
'version-skin-extension-functions' => 'ekstenzije funkcije kože',
'version-hook-name' => 'ime zakačke',
'version-hook-subscribedby' => 'prijavljeni',
+'version-version' => '(Verzija $1)',
'version-license' => 'Licenca',
'version-software' => 'Instaliran softver',
'version-software-product' => 'Proizvod',
@@ -3102,4 +3237,15 @@ Unesite ime fajla bez prefiksa "{{ns:file}}:".',
'dberr-outofdate' => 'Primetite da Guglov keš našeg sadržaja može biti neažuran.',
'dberr-cachederror' => 'Ovo je keširana kopija zahtevane strane, i možda nije ažurna.',
+# HTML forms
+'htmlform-invalid-input' => 'Ima problema sa delom Vašeg unosa',
+'htmlform-select-badoption' => 'Vrednost koju ste naveli nije ispravna opcija.',
+'htmlform-int-invalid' => 'Vrednost koji ste naveli nije celi broj.',
+'htmlform-float-invalid' => 'Vrednost koju ste zadali nije broj.',
+'htmlform-int-toolow' => 'Vrednosti koju ste naveli je ispod minimuma od $1',
+'htmlform-int-toohigh' => 'Vrednost koju ste naveli je iznad maksimuma od $1',
+'htmlform-submit' => 'Pošalji',
+'htmlform-reset' => 'Vrati izmene',
+'htmlform-selectorother-other' => 'Drugo',
+
);
diff --git a/languages/messages/MessagesSrn.php b/languages/messages/MessagesSrn.php
index d44162f1..fb4c24e6 100644
--- a/languages/messages/MessagesSrn.php
+++ b/languages/messages/MessagesSrn.php
@@ -117,7 +117,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__INOTDWENGI__', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
'toc' => array( '0', '__INOT__', '__INHOUD__', '__TOC__' ),
'noeditsection' => array( '0', '__NOKENKISKAKI__', '__NIETBEWERKBARESECTIE__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'CURRENTMOTNH', 'DISIMUN', 'HUIDIGEMAAND', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'CURRENTMOTNH', 'DISIMUN', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'DISIMUNNEN', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'DISIMUNNENGEN', 'HUIDIGEMAANDGEN', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'DISIMUNSH', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
@@ -127,7 +127,7 @@ $magicWords = array(
'currentyear' => array( '1', 'DISIYARI', 'HUIDIGJAAR', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'DISITEN', 'HUIDIGETIJD', 'CURRENTTIME' ),
'currenthour' => array( '1', 'DISIYURU', 'HUIDIGUUR', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'PRESIMUN', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'PRESIMUN', 'PLAATSELIJKEMAAND', 'LOKALEMAAND', 'LOKALEMAAND2', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'PRESIMUNNEN', 'PLAATSELIJKEMAANDNAAM', 'LOKALEMAANDNAAM', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'PRESIMUNNENGEN', 'PLAATSELIJKEMAANDNAAMGEN', 'LOKALEMAANDNAAMGEN', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'PRESIMUNSH', 'PLAATSELIJKEMAANDAFK', 'LOKALEMAANDAFK', 'LOCALMONTHABBREV' ),
@@ -255,7 +255,7 @@ $messages = array(
'category-media-header' => 'Media ini grupu “$1”',
'category-empty' => "''A grupu disi no abi papira noso media nownowde.''",
'hidden-categories' => "{{PLURAL:$1|a grupu|den grupu}} d'e kibri",
-'hidden-category-category' => "Grupu d'e kibri", # Name of the category where hidden categories will be listed
+'hidden-category-category' => "Grupu d'e kibri",
'category-subcat-count' => '{{PLURAL:$2|A grupu disi abi den ondro-grupu disi.|A grupu disi abi {{PLURAL:$1|a ondro-grupu|$1 den ondro-grupu}} disi, fu $2 teri na makandra.}}',
'category-subcat-count-limited' => 'A grupu disi abi {{PLURAL:$1|a ondro-grupu|$1 den ondro-grupu}} disi.',
'category-article-count' => '{{PLURAL:$2|A grupu disi abi a papira disi.|A grupu disi abi {{PLURAL:$1|a papira|$1 den papira}} disi, fu $2 teri na makandra.}}',
@@ -273,10 +273,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Sani di ben aksi furu (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Boskopu grupu gi nyun meki]',
-'about' => 'Abra',
-'article' => 'Papira',
-'newwindow' => '(o opo ini wan nyun fensre)',
-'cancel' => 'No kenki',
+'about' => 'Abra',
+'article' => 'Papira',
+'newwindow' => '(o opo ini wan nyun fensre)',
+'cancel' => 'No kenki',
+'moredotdotdot' => 'Moro...',
+'mypage' => 'Mi kebroikiman papira',
+'mytalk' => 'Mi kruderi',
+'anontalk' => 'Taki fu disi IP',
+'navigation' => 'Fenipresi',
+'and' => '&#32;nanga',
+
+# Cologne Blue skin
'qbfind' => 'Suku',
'qbbrowse' => 'Browse',
'qbedit' => 'Kenki',
@@ -284,15 +292,8 @@ $messages = array(
'qbpageinfo' => 'Abra a papira',
'qbmyoptions' => 'Mi papira',
'qbspecialpages' => 'Spesrutu papira',
-'moredotdotdot' => 'Moro...',
-'mypage' => 'Mi kebroikiman papira',
-'mytalk' => 'Mi kruderi',
-'anontalk' => 'Taki fu disi IP',
-'navigation' => 'Fenipresi',
-'and' => '&#32;nanga',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (Sani di ben aksi furu)',
+'faqpage' => 'Project:Sani di ben aksi furu',
'errorpagetitle' => 'Fowtu',
'returnto' => 'Drai baka go na $1.',
@@ -342,7 +343,7 @@ $messages = array(
'otherlanguages' => 'Ini tra tongo',
'redirectedfrom' => '(Seni komopo fu $1)',
'redirectpagesub' => 'Seni doro papira',
-'lastmodifiedat' => 'A papira disi ben kenki leki laste na tapu $1 na $2.', # $1 date, $2 time
+'lastmodifiedat' => 'A papira disi ben kenki leki laste na tapu $1 na $2.',
'viewcount' => 'A papira disi opo {{PLURAL:$1|wan leisi|$1 leisi}}.',
'protectedpage' => 'A papira disi sroto',
'jumpto' => 'Go na:',
@@ -353,7 +354,6 @@ $messages = array(
'aboutsite' => 'Abra {{SITENAME}}',
'aboutpage' => 'Project:Abra',
'copyright' => 'Ala san skrifi dyaso de ondro $1.',
-'copyrightpagename' => '{{SITENAME}} kopi leti',
'copyrightpage' => '{{ns:project}}:Kopi leti',
'currentevents' => 'Ini a nyunsu',
'currentevents-url' => 'Project:Ini a nyunsu',
@@ -361,8 +361,6 @@ $messages = array(
'disclaimerpage' => 'Project:Disclaimer gi ala',
'edithelp' => 'Yepi nanga kenki',
'edithelppage' => 'Help:Kenki',
-'faq' => 'FAQ (Sani di ben aksi furu)',
-'faqpage' => 'Project:Sani di ben aksi furu',
'helppage' => 'Help:San de',
'mainpage' => 'Fesipapira',
'mainpage-description' => 'Fesipapira',
@@ -454,82 +452,69 @@ A kan taki a abi wan noso moro karakter san no bun fu kebroiki gi nen.',
Fu san ede: ''$2''.",
# Login and logout pages
-'logouttitle' => 'Kenroikiman psa gwe',
-'logouttext' => "'''Yu psa gwe now.'''
+'logouttext' => "'''Yu psa gwe now.'''
Yu kan tan kebroiki {{SITENAME}} sondro nen, noso yu kan psa kon baka leki a srefi noso wan tra kebroikiman.
Sabi taki a kan gersi leki yu psa kon ete, te leki yu leygi a cache fu yu browser.",
-'welcomecreation' => '== Welkom, $1! ==
+'welcomecreation' => '== Welkom, $1! ==
Yu account meki now.
No fergiti fu kenki den seti fu yu gi {{SITENAME}}.',
-'loginpagetitle' => 'Kebroikiman nen',
-'yourname' => 'Kebroikiman nen:',
-'yourpassword' => 'Psa wortu:',
-'yourpasswordagain' => 'Psa wortu ete wan leysi:',
-'remembermypassword' => 'Tan memre mi kebroikiman nen nanga psa wortu.',
-'yourdomainname' => 'Yu domein:',
-'login' => 'Psa kon',
-'nav-login-createaccount' => 'Psa kon / meki wan account',
-'loginprompt' => 'Yu musu man kisi cookies fu man psa kon na {{SITENAME}}.',
-'userlogin' => 'Psa kon / meki wan account',
-'logout' => 'Psa gwe',
-'userlogout' => 'Psa gwe',
-'notloggedin' => 'No psa kon',
-'nologin' => "No abi wan kebroikiman nen ete? '''$1'''.",
-'nologinlink' => 'Meki wan account',
-'createaccount' => 'Meki wan account',
-'gotaccount' => "Abi wan kebroikiman nen kba? '''$1'''.",
-'gotaccountlink' => 'Psa kon',
-'createaccountmail' => 'via e-mail',
-'badretype' => 'Den tu psa wortu no de srefi.',
-'userexists' => 'A kebroikiman nen disi de kaba.
+'yourname' => 'Kebroikiman nen:',
+'yourpassword' => 'Psa wortu:',
+'yourpasswordagain' => 'Psa wortu ete wan leysi:',
+'remembermypassword' => 'Tan memre mi kebroikiman nen nanga psa wortu.',
+'yourdomainname' => 'Yu domein:',
+'login' => 'Psa kon',
+'nav-login-createaccount' => 'Psa kon / meki wan account',
+'loginprompt' => 'Yu musu man kisi cookies fu man psa kon na {{SITENAME}}.',
+'userlogin' => 'Psa kon / meki wan account',
+'logout' => 'Psa gwe',
+'userlogout' => 'Psa gwe',
+'notloggedin' => 'No psa kon',
+'nologin' => "No abi wan kebroikiman nen ete? '''$1'''.",
+'nologinlink' => 'Meki wan account',
+'createaccount' => 'Meki wan account',
+'gotaccount' => "Abi wan kebroikiman nen kba? '''$1'''.",
+'gotaccountlink' => 'Psa kon',
+'createaccountmail' => 'via e-mail',
+'badretype' => 'Den tu psa wortu no de srefi.',
+'userexists' => 'A kebroikiman nen disi de kaba.
Teki wan tra nen.',
-'youremail' => 'E-mail:',
-'username' => 'Kebroikiman nen:',
-'uid' => 'Kebroikiman ID:',
-'prefs-memberingroups' => 'Memre fu {{PLURAL:$1|grupu|grupu}}:',
-'yourrealname' => 'Yu tru nen:',
-'yourlanguage' => 'Tongo:',
-'yournick' => 'Ondroskrifi:',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Tru nen no de ferplekti. Efu yu poti en, a de fu gi yu grani gi yu wroko.',
-'loginerror' => 'Fowtu na a psa kon',
-'prefs-help-email' => 'E-mail nen no de ferplekti, ma a e gi trawan a okasi fu kontakti yu na tapu yu kebroikiman papira noso na tapu yu taki papira, sondro fu sori suma na yu fu tru.',
-'prefs-help-email-required' => 'Wan e-mail nen de fanowdu gi disi.',
-'nocookiesnew' => 'A account ben meki, ma yu no psa kon.<br />
+'loginerror' => 'Fowtu na a psa kon',
+'nocookiesnew' => 'A account ben meki, ma yu no psa kon.<br />
{{SITENAME}} e kebroiki cookies fu meki kebroikiman psa kon.<br />
Kenki den seti fu yu browser so dati a kan kisi den cookies disi, dan psa kon baka nanga yu nyun kebroikiman nen nanga psa wortu.',
-'nocookieslogin' => '{{SITENAME}} e kebroiki cookies fu meki kebroikiman psa kon.<br />
+'nocookieslogin' => '{{SITENAME}} e kebroiki cookies fu meki kebroikiman psa kon.<br />
Yu browser no man kisi cookies.<br />
Kenki den seti fu yu browser so dati a kan kisi den cookies disi, én pruberi baka.',
-'noname' => 'Yu no gi wan bun kebroikiman nen.',
-'loginsuccesstitle' => 'Yu psa kon now.',
-'loginsuccess' => "'''Now yu de na tapu {{SITENAME}} leki \"\$1\".'''",
-'nosuchuser' => 'No wan kebroikiman de san nen "$1".<br />Luku efu yu skrifi a nen bun, noso meki an nyun account.',
-'nosuchusershort' => 'No wan kebroikiman de di nen "<nowiki>$1</nowiki>".<br />Luku efu yu skrifi a nen bun.',
-'nouserspecified' => 'Yu musu gi wan kebroikiman nen.',
-'wrongpassword' => 'Psa wortu no bun.<br />
+'noname' => 'Yu no gi wan bun kebroikiman nen.',
+'loginsuccesstitle' => 'Yu psa kon now.',
+'loginsuccess' => "'''Now yu de na tapu {{SITENAME}} leki \"\$1\".'''",
+'nosuchuser' => 'No wan kebroikiman de san nen "$1".<br />Luku efu yu skrifi a nen bun, noso meki an nyun account.',
+'nosuchusershort' => 'No wan kebroikiman de di nen "<nowiki>$1</nowiki>".<br />Luku efu yu skrifi a nen bun.',
+'nouserspecified' => 'Yu musu gi wan kebroikiman nen.',
+'wrongpassword' => 'Psa wortu no bun.<br />
Pruberi baka.',
-'wrongpasswordempty' => 'No wan psa wortu ben gi.<br />
+'wrongpasswordempty' => 'No wan psa wortu ben gi.<br />
Pruberi baka.',
-'passwordtooshort' => 'A psa wortu no bun noso a syatu tumsi.<br />
+'passwordtooshort' => 'A psa wortu no bun noso a syatu tumsi.<br />
A musu abi {{PLURAL:$1|karakter|$1 karakter}} noso moro, én a no kan de srefi leki yu kebroikiman nen.',
-'mailmypassword' => 'E-mail psa wortu',
-'passwordremindertitle' => 'Nyun sranga psa wortu gi {{SITENAME}}',
-'passwordremindertext' => 'Wan suma (kande yu, fu IP $1) ben aksi fu wi seni yu wan nyun psa wortu gi {{SITENAME}} ($4).<br />
+'mailmypassword' => 'E-mail psa wortu',
+'passwordremindertitle' => 'Nyun sranga psa wortu gi {{SITENAME}}',
+'passwordremindertext' => 'Wan suma (kande yu, fu IP $1) ben aksi fu wi seni yu wan nyun psa wortu gi {{SITENAME}} ($4).<br />
A psa wortu fu kebroikiman "$2" na "$3" now.<br />
Psa kon nownowde én kenki yu psa wortu.
Efu na wan tra suma ben aksi disi, noso efu yu memre yu psa wortu én yu no wani kenki en moro, yu kan skotu a boskopu disi én tan kebroiki yu owru psa wortu.',
-'noemail' => 'No wan e-mail nen de gi kebroikiman "$1".',
-'passwordsent' => 'Wan nyun psa wortu seni go na a e-mail fu "$1".
+'noemail' => 'No wan e-mail nen de gi kebroikiman "$1".',
+'passwordsent' => 'Wan nyun psa wortu seni go na a e-mail fu "$1".
Psa kon baka te yu kisi en.',
-'eauthentsent' => 'Wan e-mail seni go na a e-mail nen di yu gi.
+'eauthentsent' => 'Wan e-mail seni go na a e-mail nen di yu gi.
Bifo tra e-mail kan seni go na a account, yu musu du san skrifi ini a e-mail fu sori taki a account na fu yu fu tru.',
-'accountcreated' => 'Masyin ben skopu',
-'accountcreatedtext' => 'A masyin $1 ben skopu.',
-'createaccount-title' => 'Masyin skopu fu {{SITENAME}}',
-'loginlanguagelabel' => 'Tongo: $1',
+'accountcreated' => 'Masyin ben skopu',
+'accountcreatedtext' => 'A masyin $1 ben skopu.',
+'createaccount-title' => 'Masyin skopu fu {{SITENAME}}',
+'loginlanguagelabel' => 'Tongo: $1',
# Password reset dialog
'resetpass' => 'Kenki yu waktiwortu',
@@ -560,21 +545,21 @@ Bifo tra e-mail kan seni go na a account, yu musu du san skrifi ini a e-mail fu
'hr_tip' => 'Didon lini (no kebroiki furu)',
# Edit pages
-'summary' => "In' syatu:",
-'subject' => 'Abra san/ede:',
-'minoredit' => 'Disi na wan pikin kenki',
-'watchthis' => 'Tan luku a papira disi',
-'savearticle' => 'Kibri a papira disi',
-'preview' => 'Luku-na-fesi',
-'showpreview' => 'Sori na fesi',
-'showlivepreview' => 'Fusi libi si pre kenki (LIVE)',
-'showdiff' => 'Sori den kenki',
-'anoneditwarning' => "'''Warskow:''' Yu no psa kon ete. Yu IP o kibri poti ini a kenki historia fu a papira disi.",
-'missingcommenttext' => 'Presi yu oponaki dyaso-ondro.',
-'summary-preview' => "Luku In'syatu na fesi:",
-'subject-preview' => 'Ondroinfru/edelen fusi:',
-'blockedtitle' => 'Masyin ben spikri',
-'blockedtext' => "'''Pasi tapu gi yu kebroikiman-nen noso IP.'''
+'summary' => "In' syatu:",
+'subject' => 'Abra san/ede:',
+'minoredit' => 'Disi na wan pikin kenki',
+'watchthis' => 'Tan luku a papira disi',
+'savearticle' => 'Kibri a papira disi',
+'preview' => 'Luku-na-fesi',
+'showpreview' => 'Sori na fesi',
+'showlivepreview' => 'Fusi libi si pre kenki (LIVE)',
+'showdiff' => 'Sori den kenki',
+'anoneditwarning' => "'''Warskow:''' Yu no psa kon ete. Yu IP o kibri poti ini a kenki historia fu a papira disi.",
+'missingcommenttext' => 'Presi yu oponaki dyaso-ondro.',
+'summary-preview' => "Luku In'syatu na fesi:",
+'subject-preview' => 'Ondroinfru/edelen fusi:',
+'blockedtitle' => 'Masyin ben spikri',
+'blockedtext' => "'''Pasi tapu gi yu kebroikiman-nen noso IP.'''
$1 tapu pasi gi yu. Disi na fu sanede ''$2''.
@@ -585,41 +570,41 @@ $1 tapu pasi gi yu. Disi na fu sanede ''$2''.
Yu kan skrifi $1 noso wan tra [[{{MediaWiki:Grouppage-sysop}}|beheerder]] fu taki abra a tapu pasi disi.
Yu n'o man kebroiki 'e-mail a kebroikiman disi', efu yu no abi wan bun email-nen ini yu [[Special:Preferences|seti]] én pasi tapu fu yu kebroiki en.
Yu IP now na $3 en a tapu pasi ID na #$5. Gi wan, noso ala tu, ini yu brifi te yu o skrifi fu aksi san psa.",
-'whitelistedittitle' => 'Yu mu kon fu a kenki',
-'whitelistedittext' => 'Yu mu $1 fu a kenki fu peprewoysi.',
-'loginreqtitle' => 'Yu mu kon',
-'loginreqlink' => 'kon',
-'loginreqpagetext' => 'Yu mu $1 tu a libi si fu trawan peprewoysi.',
-'accmailtitle' => 'Waktiwortu ben stir.',
-'accmailtext' => 'A waktiwortu fu "$1" ben stir na $2.',
-'newarticle' => '(Nyun)',
-'newarticletext' => "Yu e pruberi fu opo wan papira di no de ete. Fu meki a papira, bigin skrifi ini a boksu dyaso na ondrosey (luku ini [[{{MediaWiki:Helppage}}|yepipapira]] gi yepi).
+'whitelistedittitle' => 'Yu mu kon fu a kenki',
+'whitelistedittext' => 'Yu mu $1 fu a kenki fu peprewoysi.',
+'loginreqtitle' => 'Yu mu kon',
+'loginreqlink' => 'kon',
+'loginreqpagetext' => 'Yu mu $1 tu a libi si fu trawan peprewoysi.',
+'accmailtitle' => 'Waktiwortu ben stir.',
+'accmailtext' => 'A waktiwortu fu "$1" ben stir na $2.',
+'newarticle' => '(Nyun)',
+'newarticletext' => "Yu e pruberi fu opo wan papira di no de ete. Fu meki a papira, bigin skrifi ini a boksu dyaso na ondrosey (luku ini [[{{MediaWiki:Helppage}}|yepipapira]] gi yepi).
Kebroiki a '''back''' knopo ini yu browser, efu yu no ben wan opo a papira disi.",
-'noarticletext' => 'A papira disi leigi.
+'noarticletext' => 'A papira disi leigi.
Yu kan [[Special:Search/{{PAGENAME}}|suku a papira nen disi]] ini tra papira noso <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} kenki a papira disi]</span>.',
-'note' => "'''Opotaki:'''",
-'previewnote' => "'''Disi na soso fu luku na fesi;
+'note' => "'''Opotaki:'''",
+'previewnote' => "'''Disi na soso fu luku na fesi;
yu kenki no kibri ete!'''",
-'editing' => 'E Kenki $1',
-'editingsection' => 'E kenki $1 (pisi papira)',
-'editingcomment' => 'Kenki fu $1 (opotaki)',
-'yourtext' => 'Yu litiwrok',
-'yourdiff' => 'Kenki',
-'copyrightwarning' => "Ala sani di yu e poti na tapu {{SITENAME}} de leki efu den ben gi fri ondro a $2 (luku $1 gi a fin'fini).
+'editing' => 'E Kenki $1',
+'editingsection' => 'E kenki $1 (pisi papira)',
+'editingcomment' => 'Kenki fu $1 (opotaki)',
+'yourtext' => 'Yu litiwrok',
+'yourdiff' => 'Kenki',
+'copyrightwarning' => "Ala sani di yu e poti na tapu {{SITENAME}} de leki efu den ben gi fri ondro a $2 (luku $1 gi a fin'fini).
Efu yu no wani dati trawan e kenki noso panya san yu skrifi, no skrifi noti dyaso.<br />
Yu e pramisi unu dati na yu skrifi disi yusrefi, noso yu teki en puru fu wan fri, opo presi.<br />
'''NO KEBROIKI SANI DI KIBRI BAKA SKRIFIMAN-LETI, SONDRO FU ABI PRIMISI FU DU SO!'''",
-'longpagewarning' => "'''WARSKOW: A papira disi de $1 kilobyte bigi;
+'longpagewarning' => "'''WARSKOW: A papira disi de $1 kilobyte bigi;
Son browser abi problema fu kenki papira di bigi moro leki 32 kb.
Kande yu kan prati a papira disi ini moro pikin pisi.'''",
-'templatesused' => 'Template di ben kebroiki tapu a papira disi:',
-'templatesusedpreview' => 'Template di ben kebroiki ini a Luku-na-fesi disi:',
-'templatesusedsection' => 'Ankra teki opo disi seksi:',
-'template-protected' => '(a sroto)',
-'template-semiprotected' => '(sroto wan pisi)',
-'nocreatetext' => '{{SITENAME}} puru den primisi fu meki nyun papira.
+'templatesused' => 'Template di ben kebroiki tapu a papira disi:',
+'templatesusedpreview' => 'Template di ben kebroiki ini a Luku-na-fesi disi:',
+'templatesusedsection' => 'Ankra teki opo disi seksi:',
+'template-protected' => '(a sroto)',
+'template-semiprotected' => '(sroto wan pisi)',
+'nocreatetext' => '{{SITENAME}} puru den primisi fu meki nyun papira.
Yu kan go baka fu kenki papira di de kba, noso yu kan [[Special:UserLogin|psa kon noso meki wan account]].',
-'recreate-deleted-warn' => "'''Warskow: yu e meki wan papira, di ben puru fu dyaso kaba, baka.'''
+'recreate-moveddeleted-warn' => "'''Warskow: yu e meki wan papira, di ben puru fu dyaso kaba, baka.'''
Denki fosi efu na wan bun sani fu meki a papira disi baka. A log buku fu puru sori dyaso gi yepi:",
@@ -630,7 +615,7 @@ Denki fosi efu na wan bun sani fu meki a papira disi baka. A log buku fu puru so
'viewpagelogs' => 'Luku a log buku fu a papira disi',
'currentrev' => 'A versi disi',
'revisionasof' => 'Versi tapu $1',
-'revision-info' => 'Versi na $1 fu $2', # Additionally available: $3: revision id
+'revision-info' => 'Versi na $1 fu $2',
'previousrevision' => '←Moro owru versi',
'nextrevision' => 'Moro nyun versi→',
'currentrevisionlink' => 'A versi disi',
@@ -641,7 +626,6 @@ Denki fosi efu na wan bun sani fu meki a papira disi baka. A log buku fu puru so
'page_last' => 'laste',
'histlegend' => "Teki den difrenti: marki den versi fu san yu wan si den difrenti, dan naki ENTER noso a knopo na ondrosey.<br />
Den syatu: (disi) = a difrenti nanga a versi disi, (a wan n'en fesi) = a difrenti nanga a versi na en fesi, p = pikin kenki",
-'deletedrev' => '[ben e trowe]',
'histfirst' => 'A moro owru wan',
'histlast' => 'A moro nyun wan',
'historysize' => '({{PLURAL:$1|wan byte|$1 byte}})',
@@ -650,7 +634,7 @@ Den syatu: (disi) = a difrenti nanga a versi disi, (a wan n'en fesi) = a difrent
# Revision feed
'history-feed-title' => 'Kenkistori',
'history-feed-description' => 'Kenkistori du disi papira opo {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 tapu $2', # user at time
+'history-feed-item-nocomment' => '$1 tapu $2',
'history-feed-empty' => 'A aksa papira ben no da.
A kan ben trowe efu dribi.
[[Special:Search|Suku {{SITENAME}}]] fu rilivante peprewoysi.',
@@ -675,64 +659,70 @@ A kan ben trowe efu dribi.
'searchresulttext' => 'Fu pasa infrumasi abra suku opo {{SITENAME}}, leysi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Y ben o suku na '''[[:$1]]'''",
'searchsubtitleinvalid' => "Yu ben o suku na '''$1'''",
-'noexactmatch' => "'''No wan papira de nanga a nen \"\$1\".'''
-Yu kan [[:\$1|meki a papira disi]].",
-'noexactmatch-nocreate' => "'''Da ben no papira nanga a nen \"\$1\".'''",
-'prevn' => '$1 di psa',
-'nextn' => '$1 trawan',
-'viewprevnext' => 'Luku ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} di psa',
+'nextn' => '{{PLURAL:$1|$1}} trawan',
+'viewprevnext' => 'Luku ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:San de',
'powersearch' => 'Suku moro dipi',
-# Preferences page
-'preferences' => 'Seti',
-'mypreferences' => 'Mi seti',
-'prefs-edits' => 'Nomru fu kenki:',
-'prefsnologin' => 'No kon',
+# Quickbar
'qbsettings' => 'Kwikbak',
'qbsettings-none' => 'Nowan',
'qbsettings-fixedleft' => 'Set na ku',
'qbsettings-fixedright' => 'Set na pe',
'qbsettings-floatingleft' => 'Han na ku',
'qbsettings-floatingright' => 'Han na pe',
-'changepassword' => 'Kenki yu waktiwortu',
-'skin' => 'Buba',
-'skin-preview' => 'Si-na-fesi',
-'math' => 'Fomula',
-'dateformat' => 'Datumopomeki',
-'datedefault' => 'No wana',
-'datetime' => 'Datum nanga ten',
-'math_lexing_error' => 'leksikografi fowtu',
-'math_syntax_error' => 'sintaki fowtu',
-'prefs-personal' => 'Masyinmasi',
-'prefs-rc' => 'Bakaseywan kenki',
-'prefs-watchlist' => 'Sirey',
-'prefs-watchlist-days' => 'Maximum teki fu dey ini mi sirey:',
-'prefs-watchlist-edits' => 'Maximum teki fu dey ini mi granmeki sirey:',
-'prefs-misc' => 'Diversi',
-'saveprefs' => 'Oponaki',
-'resetprefs' => 'Bakadray na owru si',
-'textboxsize' => 'Kenki',
-'rows' => 'Rei:',
-'columns' => 'Kolum:',
-'searchresultshead' => 'Suku',
-'resultsperpage' => 'Ris ies papira:',
-'contextlines' => 'Lina ies ris:',
-'contextchars' => 'Kontekst ies lina:',
-'stub-threshold' => 'Dupolo fu seti <a href="#" class="stub">stub</a>:',
-'recentchangesdays' => 'Teki fu dey tu libi si ini bakaseywan kenki:',
-'recentchangescount' => 'Teki fu peprewoysi ini bakaseywan kenki:',
-'savedprefs' => 'Yu masi ben oponaki.',
-'timezonelegend' => 'Gron fu ten',
-'timezonetext' => '¹A teki fu yuru taki yu presiten kenki fu a serverten (UTC).',
-'localtime' => 'Lokali ten',
-'timezoneoffset' => 'Ski ini ten¹',
-'servertime' => 'Serverten',
-'guesstimezone' => 'Fu a browser presi',
-'allowemail' => 'E-mail fu trawan masyin adu',
-'defaultns' => 'Soma ini disi nenpreki suku:',
-'default' => 'soma',
-'files' => 'Gefre',
+
+# Preferences page
+'preferences' => 'Seti',
+'mypreferences' => 'Mi seti',
+'prefs-edits' => 'Nomru fu kenki:',
+'prefsnologin' => 'No kon',
+'changepassword' => 'Kenki yu waktiwortu',
+'prefs-skin' => 'Buba',
+'skin-preview' => 'Si-na-fesi',
+'prefs-math' => 'Fomula',
+'datedefault' => 'No wana',
+'prefs-datetime' => 'Datum nanga ten',
+'prefs-personal' => 'Masyinmasi',
+'prefs-rc' => 'Bakaseywan kenki',
+'prefs-watchlist' => 'Sirey',
+'prefs-watchlist-days' => 'Maximum teki fu dey ini mi sirey:',
+'prefs-watchlist-edits' => 'Maximum teki fu dey ini mi granmeki sirey:',
+'prefs-misc' => 'Diversi',
+'saveprefs' => 'Oponaki',
+'resetprefs' => 'Bakadray na owru si',
+'prefs-editing' => 'Kenki',
+'rows' => 'Rei:',
+'columns' => 'Kolum:',
+'searchresultshead' => 'Suku',
+'resultsperpage' => 'Ris ies papira:',
+'contextlines' => 'Lina ies ris:',
+'contextchars' => 'Kontekst ies lina:',
+'stub-threshold' => 'Dupolo fu seti <a href="#" class="stub">stub</a>:',
+'recentchangesdays' => 'Teki fu dey tu libi si ini bakaseywan kenki:',
+'recentchangescount' => 'Teki fu peprewoysi ini bakaseywan kenki:',
+'savedprefs' => 'Yu masi ben oponaki.',
+'timezonelegend' => 'Gron fu ten',
+'localtime' => 'Lokali ten',
+'timezoneoffset' => 'Ski ini ten¹',
+'servertime' => 'Serverten',
+'guesstimezone' => 'Fu a browser presi',
+'allowemail' => 'E-mail fu trawan masyin adu',
+'defaultns' => 'Soma ini disi nenpreki suku:',
+'default' => 'soma',
+'prefs-files' => 'Gefre',
+'youremail' => 'E-mail:',
+'username' => 'Kebroikiman nen:',
+'uid' => 'Kebroikiman ID:',
+'prefs-memberingroups' => 'Memre fu {{PLURAL:$1|grupu|grupu}}:',
+'yourrealname' => 'Yu tru nen:',
+'yourlanguage' => 'Tongo:',
+'yournick' => 'Ondroskrifi:',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Tru nen no de ferplekti. Efu yu poti en, a de fu gi yu grani gi yu wroko.',
+'prefs-help-email' => 'E-mail nen no de ferplekti, ma a e gi trawan a okasi fu kontakti yu na tapu yu kebroikiman papira noso na tapu yu taki papira, sondro fu sori suma na yu fu tru.',
+'prefs-help-email-required' => 'Wan e-mail nen de fanowdu gi disi.',
# User rights
'userrights-lookup-user' => 'Masyinguru kenki',
@@ -791,6 +781,8 @@ Yu kan [[:\$1|meki a papira disi]].",
# Recent changes linked
'recentchangeslinked' => 'Kenki di abi wan sani fu du nanga disi',
+'recentchangeslinked-feed' => 'Kenki di abi wan sani fu du nanga disi',
+'recentchangeslinked-toolbox' => 'Kenki di abi wan sani fu du nanga disi',
'recentchangeslinked-title' => 'Kenki di abi wan sani fu du nanga "$1"',
'recentchangeslinked-noresult' => 'Noti ben kenki ini den miti papira ini a pisi di gi.',
'recentchangeslinked-summary' => "A spesrutu papira disi e sori den laste kenki di ben meki tapu papira di miti tapu wan papira di sori (noso go na memre fu wan grupu di sori).
@@ -799,7 +791,6 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
# Upload
'upload' => 'Lai wan file poti',
'uploadbtn' => 'Lai file poti',
-'reupload' => 'Ri-uploti',
'uploadnologin' => 'No kon',
'uploaderror' => 'Uplotifowtu',
'uploadlog' => 'uplotibuku',
@@ -826,6 +817,7 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
'listfiles_description' => 'Infrumasi',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'File historia',
'filehist-help' => 'Naki na tapu a dei/ten fu a file fu si fa a ben de na a ten dati.',
'filehist-deleteall' => 'trowe ala',
@@ -840,11 +832,7 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
'imagelinks' => 'File nen miti',
'linkstoimage' => '{{PLURAL:$1|A papira|$1 Den papira}} disi e kebroike a file disi:',
'nolinkstoimage' => 'Nowan papira e miti kon na a file disi.',
-'sharedupload' => 'A file disi lai poti fu prati én tra project kan kebroiki en.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Si $1 fu pasa infrumasi.',
-'shareduploadwiki-linktext' => 'gefreinfrumasi',
-'noimage' => 'No wan file de nanga a nen disi. Yu kan $1.',
-'noimage-linktext' => 'lai en poti',
+'sharedupload' => 'A file disi lai poti fu prati én tra project kan kebroiki en.',
'uploadnewversion-linktext' => 'Lai wan moro nyun versi fu a file disi poti',
# File reversion
@@ -898,8 +886,8 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
'brokenredirects' => 'Seni-doro di no bun',
'brokenredirectstext' => 'Dyaso ben stirpeprewoysi dy wan stir ben na wan papira dy no da ben.',
-'brokenredirects-edit' => '(kenki)',
-'brokenredirects-delete' => '(trowe)',
+'brokenredirects-edit' => 'kenki',
+'brokenredirects-delete' => 'trowe',
'withoutinterwiki' => 'Papira sondro miti go na tra tongo',
'withoutinterwiki-summary' => 'Disi peprewoysi skaki no na si ini wan trawan tongo:',
@@ -1037,7 +1025,6 @@ Iksi yu wan papira no langar wana si, go na a papira nanga du opo \"No si\" ini
'protectexpiry' => 'Lasi:',
'protect_expiry_invalid' => 'A lasi ben fowtu.',
'protect_expiry_old' => 'A lasi ben ini iksini.',
-'protect-unchain' => 'Gi dribi u',
'protect-text' => "Dyaso ben yu kan tu kenki nanga aluku a tapunivo fu a papira '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "'''Yu masyin abi no lesi tu kenki a tapunivo.'''
Disi ben a tapunivo fu a papira '''[[$1]]''' now:",
@@ -1050,7 +1037,7 @@ Disi ben a tapunivo fu a papira '''[[$1]]''' now:",
'protect-expiring' => 'lasi opo $1',
'protect-cascade' => 'Kaskadetapu - tapu ala peprewoysi nanga ankra dy ini disi papira teki ben (atessi; disi kan gran folo abi).',
'protect-cantedit' => 'Yu kan a tapunivo fu disi papira no kenki, sins yu no lesi abi tu kenki a.',
-'protect-expiry-options' => '15 min:15 min,1 yuru:1 hour,2 yuru:2 hours,6 yuru:6 hours,12 yuru:12 hours,1 dey:1 day,3 dey:3 days,1 wiki:1 week,2 wiki:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yari:1 year,fu têgo:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '15 min:15 min,1 yuru:1 hour,2 yuru:2 hours,6 yuru:6 hours,12 yuru:12 hours,1 dey:1 day,3 dey:3 days,1 wiki:1 week,2 wiki:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yari:1 year,fu têgo:infinite',
'restriction-type' => 'Den leti:',
'restriction-level' => 'Pelkinivo:',
@@ -1073,6 +1060,8 @@ Disi ben a tapunivo fu a papira '''[[$1]]''' now:",
'sp-contributions-newbies-sub' => 'Gi nyun account',
'sp-contributions-blocklog' => 'Log buku fu den tapu pasi',
+'sp-contributions-deleted' => 'Trowe kenki fu masyin',
+'sp-contributions-talk' => 'Taki',
'sp-contributions-submit' => 'Suku',
# What links here
@@ -1088,7 +1077,7 @@ Disi ben a tapunivo fu a papira '''[[$1]]''' now:",
# Block/unblock
'blockip' => 'Tapu pasi gi kebroikiman',
-'ipboptions' => '15 min:15 min,1 yuru:1 hour,2 yuru:2 hours,6 yuru:6 hours,12 yuru:12 hours,1 dey:1 day,3 dey:3 days,1 wiki:1 week,2 wiki:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yari:1 year,fu têgo:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '15 min:15 min,1 yuru:1 hour,2 yuru:2 hours,6 yuru:6 hours,12 yuru:12 hours,1 dey:1 day,3 dey:3 days,1 wiki:1 week,2 wiki:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yari:1 year,fu têgo:infinite',
'ipblocklist' => 'Réy fu tapu pasi gi kebroikiman nen nanga IP',
'ipblocklist-submit' => 'Suku',
'blocklink' => 'tapu pasi',
@@ -1200,6 +1189,10 @@ Yu ka luku a source.',
'siteuser' => '{{SITENAME}}-masyin $1',
'siteusers' => '{{SITENAME}}-masyin $1',
+# Math errors
+'math_lexing_error' => 'leksikografi fowtu',
+'math_syntax_error' => 'sintaki fowtu',
+
# Browsing diffs
'previousdiff' => '← A psa kenki',
'nextdiff' => "A kenki d'e kon →",
@@ -1239,7 +1232,7 @@ Trawan o kibri.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'Kenki a file disi ini wan dorosey wrokosani.',
@@ -1272,7 +1265,7 @@ Trawan o kibri.
'watchlisttools-raw' => 'Kenki a lala Tan Luku réy',
# Special:Version
-'version' => 'Versi', # Not used as normal message but as header for the special page itself
+'version' => 'Versi',
# Special:SpecialPages
'specialpages' => 'Spesrutu papira',
diff --git a/languages/messages/MessagesSs.php b/languages/messages/MessagesSs.php
index 45f26617..7112f096 100644
--- a/languages/messages/MessagesSs.php
+++ b/languages/messages/MessagesSs.php
@@ -70,25 +70,44 @@ $messages = array(
'subcategories' => 'Mikhakha lengaphansi',
'category-media-header' => 'i-Media lekulomkhakha "$1"',
'category-empty' => "''Lomkhakha ute makhasi nobe i-media lewuphetse.''",
-'hidden-category-category' => 'Mikhakha lefihliwe', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Mikhakha lefihliwe',
'listingcontinuesabbrev' => 'chubeka.',
+'index-category' => 'Makhasi lacokelelwe',
+'noindex-category' => 'Makhasi lasabalele',
'mainpagetext' => "'''i-MediaWiki seyifakeke ngalokuphelele.'''",
-'about' => 'Kabanti',
-'article' => 'Likhasi lentfo',
-'newwindow' => '(kuvulekela tukweli-window lelisha)',
-'cancel' => 'Yekela',
+'about' => 'Kabanti',
+'article' => 'Likhasi lentfo',
+'newwindow' => '(kuvulekela tukweli-window lelisha)',
+'cancel' => 'Yekela',
+'moredotdotdot' => 'Lokunyenti...',
+'mypage' => 'Likhasi lami',
+'mytalk' => 'Tingcoco tami',
+'anontalk' => 'Tingcogco letentwe ngulelikheli lale-IP',
+
+# Cologne Blue skin
'qbfind' => 'Tfola',
'qbbrowse' => 'Browse',
'qbedit' => 'Hlela',
'qbpageoptions' => 'Lelikhasi',
'qbmyoptions' => 'Makhasi ami',
'qbspecialpages' => 'Emakhasi labalulekile',
-'moredotdotdot' => 'Lokunyenti...',
-'mypage' => 'Likhasi lami',
-'mytalk' => 'Tingcoco tami',
-'anontalk' => 'Tingcogco letentwe ngulelikheli lale-IP',
+
+# Vector skin
+'vector-action-addsection' => 'Ngeta sihloko',
+'vector-action-move' => 'Khweshisa',
+'vector-namespace-help' => 'Likhasi lelusito',
+'vector-namespace-main' => 'Likhasi',
+'vector-namespace-mediawiki' => 'Mlayeto',
+'vector-namespace-special' => 'Likhasi lelibalulekile',
+'vector-namespace-talk' => 'Ingcoco',
+'vector-namespace-user' => 'Likhasi lemuntfu',
+'vector-view-create' => 'Create',
+'vector-view-edit' => 'Hlela',
+'vector-view-history' => 'Bona umlandvo',
+'vector-view-view' => 'Fundza',
+'actions' => 'Tento',
'returnto' => 'Buyela ku $1.',
'help' => 'Sita',
@@ -131,11 +150,16 @@ $messages = array(
'otherlanguages' => 'Ngaletinye tilwimi',
'redirectedfrom' => '(Utfunyelelwe likhasi $1)',
'redirectpagesub' => 'Likhasi lekutfumela',
-'lastmodifiedat' => 'Lelikhasi ligcine kushintjwa ngetingu $1, ngo $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Lelikhasi ligcine kushintjwa ngetingu $1, ngo $2.',
'viewcount' => 'Lelikhasi selibonwe {{PLURAL:$1|kanye|kayi $1}}.',
'protectedpage' => 'Likhasi lelivikelekile',
'jumpto' => 'Zuba ku:',
'jumptosearch' => 'sesha',
+'view-pool-error' => 'Siyacolisa, maseva etfu agwele kakhulu ngalesikhatsi.
+Kunebantfu labanyenti labatama kubona lelikhasi.
+Sicela ume kancane ngaphambi lwekuphindze ubone lelikhasi.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Kabanti nge {{SITENAME}}',
@@ -151,7 +175,7 @@ $messages = array(
'mainpage-description' => 'Likhasi lelikhulu',
'policy-url' => 'Project:Umtsetfo',
'portal' => 'Likhefi le-inthanethi',
-'portal-url' => 'Project:Likhefi leinthanethi',
+'portal-url' => 'Project:Likhefi le-inthanethi',
'badaccess' => 'Liphutsa lemalungelo',
'badaccess-group0' => 'Awukavunyelwa kwenta lesento lobowutama kusenta.',
@@ -181,8 +205,6 @@ $messages = array(
'nstab-help' => 'Likhasi lelusito',
# Login and logout pages
-'uid' => 'Matisi Wemuntfu:',
-'yourlanguage' => 'Lulwimi:',
'loginlanguagelabel' => 'Lulwimi: $1',
# Search results
@@ -190,24 +212,33 @@ $messages = array(
'search-mwsuggest-disabled' => 'kute mibono',
'search-relatedarticle' => 'Lokuhlobene',
'mwsuggest-disable' => 'Vala losito/mibono ye AJAX',
+'searcheverything-enable' => 'Sesha onke ma namespaces',
'searchrelated' => 'lokuhlobene',
'searchall' => 'konke',
'showingresults' => "Ngaphasi kukhonjiswa kuya ku {{PLURAL:$1|'''1''' umphumela|'''$1''' miphumela}} kucalwa nga #'''$2'''.",
'showingresultsnum' => "Ngaphansi kukhonjiswa {{PLURAL:$3|'''1''' umphumela|'''$3''' miphumela}} kucalwa nga #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Umphumela '''$1''' of '''$3'''|Imiphumela '''$1 - $2''' ye '''$3'''}} ya '''$4'''",
'search-nonefound' => 'Kute umphume lotfolwe/lofanele lesicelo sakho.',
'powersearch' => 'Sesha ngalokuphakeme',
'powersearch-legend' => 'Sesha ngalokuphakeme',
'powersearch-ns' => 'Sesha ku namespaces:',
'powersearch-redir' => 'Makhasi latfumelayo',
'powersearch-field' => 'Sesha i',
+'powersearch-togglelabel' => 'Buka:',
+'powersearch-toggleall' => 'Konke',
+'powersearch-togglenone' => 'Kute',
'search-external' => 'Sesha ngelithulusi langaphandle',
'searchdisabled' => '{{SITENAME}} kusesha kuvinjiwe.
Ungasesha nge Google.
Naka kutsi makhasi abo e {{SITENAME}} angaba sekadlulelwe sikhatsi.',
+# Quickbar
+'qbsettings-none' => 'Kute',
+
# Preferences page
-'qbsettings-none' => 'Kute',
'searchresultshead' => 'Sesha',
+'uid' => 'Matisi Wemuntfu:',
+'yourlanguage' => 'Lulwimi:',
# Special:ListFiles
'listfiles_date' => 'Lusuku',
@@ -252,6 +283,7 @@ Naka kutsi makhasi abo e {{SITENAME}} angaba sekadlulelwe sikhatsi.',
# Undelete
'undelete-search-submit' => 'Sesha',
+'sp-contributions-talk' => 'ingcoco',
'sp-contributions-submit' => 'Sesha',
# Block/unblock
diff --git a/languages/messages/MessagesSt.php b/languages/messages/MessagesSt.php
index 4321f651..062811bd 100644
--- a/languages/messages/MessagesSt.php
+++ b/languages/messages/MessagesSt.php
@@ -52,6 +52,9 @@ $messages = array(
'mytalk' => 'Leqephe la ka la moqoqo',
'navigation' => 'Eya ho',
+# Cologne Blue skin
+'faq' => 'Dipotso-mehla',
+
'returnto' => 'Kgutlela ho $1.',
'tagline' => 'E tswa ho {{SITENAME}}',
'search' => 'Fuputsa',
@@ -66,7 +69,6 @@ $messages = array(
'jumptosearch' => 'phuputso',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'faq' => 'Dipotso-mehla',
'mainpage' => 'Leqephe la pele',
'mainpage-description' => 'Leqephe la pele',
'portal' => 'Potjho e kopano',
diff --git a/languages/messages/MessagesStq.php b/languages/messages/MessagesStq.php
index a5b9467c..a9ad173a 100644
--- a/languages/messages/MessagesStq.php
+++ b/languages/messages/MessagesStq.php
@@ -8,6 +8,7 @@
* @file
*
* @author Maartenvdbent
+ * @author Purodha
* @author Pyt
* @author Urhixidur
*/
@@ -15,22 +16,22 @@
$fallback = 'de';
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Spezial',
- NS_TALK => 'Diskussion',
- NS_USER => 'Benutser',
- NS_USER_TALK => 'Benutser_Diskussion',
- NS_PROJECT_TALK => '$1_Diskussion',
- NS_FILE => 'Bielde',
- NS_FILE_TALK => 'Bielde_Diskussion',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_Diskussion',
- NS_TEMPLATE => 'Foarloage',
- NS_TEMPLATE_TALK => 'Foarloage_Diskussion',
- NS_HELP => 'Hälpe',
- NS_HELP_TALK => 'Hälpe_Diskussion',
- NS_CATEGORY => 'Kategorie',
- NS_CATEGORY_TALK => 'Kategorie_Diskussion',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Spezial',
+ NS_TALK => 'Diskussion',
+ NS_USER => 'Benutser',
+ NS_USER_TALK => 'Benutser_Diskussion',
+ NS_PROJECT_TALK => '$1_Diskussion',
+ NS_FILE => 'Bielde',
+ NS_FILE_TALK => 'Bielde_Diskussion',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Diskussion',
+ NS_TEMPLATE => 'Foarloage',
+ NS_TEMPLATE_TALK => 'Foarloage_Diskussion',
+ NS_HELP => 'Hälpe',
+ NS_HELP_TALK => 'Hälpe_Diskussion',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Kategorie_Diskussion',
);
$messages = array(
@@ -64,6 +65,7 @@ $messages = array(
'tog-enotifminoredits' => 'Uk bie litje Annerengen an do Sieden E-Mails seende.',
'tog-enotifrevealaddr' => 'Dien E-Mail-Adrässe wäd in Bescheed-Mails wiesed.',
'tog-shownumberswatching' => 'Antaal fon do beooboachtjende Benutsere anwiese',
+'tog-oldsig' => 'Foarschau fon ju aktuälle Signatuur:',
'tog-fancysig' => 'Unnerschrift as Wikitext behonnelje (sunner automatiske Ferlinkenge)',
'tog-externaleditor' => 'Externe Editor as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide)',
'tog-externaldiff' => 'Extern Diff-Program as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide)',
@@ -86,6 +88,13 @@ $messages = array(
'underline-never' => 'sieläärge nit',
'underline-default' => 'honget ou fon Browser-Ienstaalenge',
+# Font style option in Special:Preferences
+'editfont-style' => 'Schriftfamilie foar dän Text in dät Beoarbaidengsfinster:',
+'editfont-default' => 'Browserstandoard',
+'editfont-monospace' => 'Schrift mäd fääste Teekenbratte',
+'editfont-sansserif' => 'Serifenloose Groteskschrift',
+'editfont-serif' => 'Schrift mäd Serife',
+
# Dates
'sunday' => 'Sundai',
'monday' => 'Moundai',
@@ -145,7 +154,7 @@ $messages = array(
'category-media-header' => 'Media in Kategorie "$1"',
'category-empty' => "''Disse Kategorie is loos.''",
'hidden-categories' => '{{PLURAL:$1|Ferstatte Kategorie|Ferstatte Kategorien}}',
-'hidden-category-category' => 'Ferstatte Kategorien', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ferstatte Kategorien',
'category-subcat-count' => '{{PLURAL:$2|Disse Kategorie änthaalt foulgjende Unnerkategorie:|{{PLURAL:$1|Foulgjende Unnerkategorie is een fon mädnunner $2 Unnerkategorien in disse Kategorie:|Der wäide $1 fon mädnunner $2 Unnerkategorien in disse Kategorie anwiesd:}}}}',
'category-subcat-count-limited' => 'Disse Kategorie änthaalt foulgjende {{PLURAL:$1|Unnerkategorie|$1 Unnerkategorien}}:',
'category-article-count' => '{{PLURAL:$2|Disse Kategorie änthaalt foulgjende Siede:|{{PLURAL:$1|Foulgjende Siede is een fon mädnunner $2 Sieden in disse Kategorie:|Der wäide $1 fon mädnunner $2 Sieden in disse Kategorie anwiesd:}}}}',
@@ -153,14 +162,24 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Disse Kategorie änthaalt foulgjende Doatai:|{{PLURAL:$1|Foulgjende Doatäi is een fon madnunner $2 Doatäie in disse Kategorie:|Der wäide $1 fon mädnunner $2 Doatäie in disse Kategorie anwiesd:}}}}',
'category-file-count-limited' => 'Foulgjende {{PLURAL:$1|Doatäi is|$1 Doatäie sunt}} in disse Kategorie äntheelden:',
'listingcontinuesabbrev' => '(Foutsättenge)',
+'index-category' => 'Indizierde Sieden',
+'noindex-category' => 'Nit indizierde Sieden',
'mainpagetext' => "'''Ju MediaWiki Software wuude mäd Ärfoulch installierd.'''",
'mainpagedocfooter' => 'Sjuch ju [http://meta.wikimedia.org/wiki/MediaWiki_localization Dokumentation tou de Anpaasenge fon dän Benutseruurfläche] un dät [http://meta.wikimedia.org/wiki/Help:Contents Benutserhondbouk] foar Hälpe tou ju Benutsenge un Konfiguration.',
-'about' => 'Uur',
-'article' => 'Inhoold Siede',
-'newwindow' => '(eepent in näi Finster)',
-'cancel' => 'Oubreeke',
+'about' => 'Uur',
+'article' => 'Inhoold Siede',
+'newwindow' => '(eepent in näi Finster)',
+'cancel' => 'Oubreeke',
+'moredotdotdot' => 'Moor …',
+'mypage' => 'Oaine Siede',
+'mytalk' => 'Oaine Diskussion',
+'anontalk' => 'Diskussionssiede foar dissen IP',
+'navigation' => 'Navigation',
+'and' => '&#32;un',
+
+# Cologne Blue skin
'qbfind' => 'Fiende',
'qbbrowse' => 'Bleederje',
'qbedit' => 'Annerje',
@@ -168,15 +187,35 @@ $messages = array(
'qbpageinfo' => 'Siedendoatäie',
'qbmyoptions' => 'Mien Sieden',
'qbspecialpages' => 'Spezialsieden',
-'moredotdotdot' => 'Moor …',
-'mypage' => 'Oaine Siede',
-'mytalk' => 'Oaine Diskussion',
-'anontalk' => 'Diskussionssiede foar dissen IP',
-'navigation' => 'Navigation',
-'and' => '&#32;un',
-
-# Metadata in edit box
-'metadata_help' => 'Metadoatäie:',
+'faq' => 'Oafte stoalde Froagen',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Ousnit bietouföigje',
+'vector-action-delete' => 'Läskje',
+'vector-action-move' => 'Ferschuuwe',
+'vector-action-protect' => 'Schutsje',
+'vector-action-undelete' => 'Wierhäärstaale',
+'vector-action-unprotect' => 'Fräireeke',
+'vector-namespace-category' => 'Kategorie',
+'vector-namespace-help' => 'Hälpesiede',
+'vector-namespace-image' => 'Doatäi',
+'vector-namespace-main' => 'Siede',
+'vector-namespace-media' => 'Mediensiede',
+'vector-namespace-mediawiki' => 'Mediawiki-Systemättergjucht',
+'vector-namespace-project' => 'Projektsiede',
+'vector-namespace-special' => 'Spezioalsiede',
+'vector-namespace-talk' => 'Diskussion',
+'vector-namespace-template' => 'Foarloage',
+'vector-namespace-user' => 'Benutsersiede',
+'vector-view-create' => 'Moakje',
+'vector-view-edit' => 'Beoarbaidje',
+'vector-view-history' => 'Versionsgeschichte',
+'vector-view-view' => 'Leese',
+'vector-view-viewsource' => 'Wältext bekiekje',
+'actions' => 'Aktione',
+'namespaces' => 'Noomeruume',
+'variants' => 'Variante',
'errorpagetitle' => 'Failer',
'returnto' => 'Tourääch tou Siede $1.',
@@ -226,18 +265,22 @@ $messages = array(
'otherlanguages' => 'Uur Sproaken',
'redirectedfrom' => '(Fäärelaited fon $1)',
'redirectpagesub' => 'Fäärelaitenge',
-'lastmodifiedat' => 'Disse Siede wuude toulääst annerd uum $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Disse Siede wuude toulääst annerd uum $2, $1.',
'viewcount' => 'Disse Siede wuude bit nu {{PLURAL:$1|eenmoal|$1 moal}} ouruupen.',
'protectedpage' => 'Schutsede Siede',
'jumpto' => 'Wikselje tou:',
'jumptonavigation' => 'Navigation',
'jumptosearch' => 'Säike (08)',
+'view-pool-error' => 'Äntscheeldigenge, do Servere sunt apstuuns uutlasted.
+Tou fuul Benutsere fersäike, disse Siede tou besäiken.
+Täif n poor Minuten, eer du et noch n Moal fersäkst.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Uur {{SITENAME}}',
'aboutpage' => 'Project:Uur_{{SITENAME}}',
'copyright' => 'Inhoold is ferföichboar unner de $1.',
-'copyrightpagename' => '{{SITENAME}} Uurheebergjuchte',
'copyrightpage' => '{{ns:project}}:Uurheebergjuchte',
'currentevents' => 'Aktuälle Geböärnisse',
'currentevents-url' => 'Project:Aktuälle Geböärnisse',
@@ -245,8 +288,6 @@ $messages = array(
'disclaimerpage' => 'Project:Siede tou Begriepskläärenge',
'edithelp' => 'Beoarbaidengshälpe',
'edithelppage' => 'Help:Beoarbaidengshälpe',
-'faq' => 'Oafte stoalde Froagen',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Hälpe',
'mainpage' => 'Haudsiede',
'mainpage-description' => 'Haudsiede',
@@ -324,10 +365,6 @@ Die Doatenboank mäldede dän Failer "<tt>$3: $4</tt>".',
'dberrortextcl' => 'Dät roate n Syntaxfailer in ju Doatenboankoufroage.
Ju lääste Doatenboankoufroage lutte: „$1“ uut ju Funktion „<tt>$2</tt>“.
Die Doatenboank mäldede dän Failer: „<tt>$3: $4</tt>“.',
-'noconnect' => 'In dän Wiki sunt techniske Swierelkhaide aptreeden; der kuude neen Ferbiendenge tou ju Doatenboank apbaud wäide. <br />
-$1',
-'nodb' => 'Kuude Doatenboank $1 nit beloangje',
-'cachederror' => 'Dät Foulgjende is ne Kopie uut de Cache un is fielicht ferallerd.',
'laggedslavemode' => 'Woarschauenge: Ju anwiesde Siede kon unner Umstande do jungste Beoarbaidengen noch nit be-ienhoolde.',
'readonly' => 'Doatenboank is speerd',
'enterlockreason' => 'Reeke jädden n Gruund ien, wieruum ju Doatenboank speerd wäide schuul un ne Ouschätsenge uur ju Duur fon ju Speerenge',
@@ -345,6 +382,8 @@ Mäld dit n [[Special:ListUsers/sysop|Administrator]] unner Naamenge fon ju URL.
'readonly_lag' => 'Ju Doatenboank wuud automatisk foar Schrieuwtougriepe speerd, deermäd sik do ferdeelde Doatenboankservere (slaves) mäd dän Hauddoatenboankserver (master) ouglieke konnen.',
'internalerror' => 'Interne Failer',
'internalerror_info' => 'Interne Failer: $1',
+'fileappenderrorread' => '„$1“ kuud unner dät Touhoopeföigjen nit leesen wäide.',
+'fileappenderror' => 'Kuud „$1“ nit an „$2“ anhongje.',
'filecopyerror' => 'Kuude Doatäi "$1" nit ätter "$2" kopierje.',
'filerenameerror' => 'Kuude Doatäi "$1" nit ätter "$2" uumenaame.',
'filedeleteerror' => 'Kuude Doatäi "$1" nit läskje.',
@@ -354,7 +393,8 @@ Mäld dit n [[Special:ListUsers/sysop|Administrator]] unner Naamenge fon ju URL.
'unexpected' => 'Uunferwachteden Wäid: „$1“=„$2“.',
'formerror' => '<b style="color: #cc0000;">Failer: Do Iengoawen konne nit feroarbaided wäide.</b>',
'badarticleerror' => 'Disse Honnelenge kon ap disse Siede nit moaked wäide.',
-'cannotdelete' => 'Kon spezifizierde Siede of Artikkel nit läskje. Fielicht is ju al läsked wuuden.',
+'cannotdelete' => 'Ju Siede od Doatäi "$1" kon nit läsked wäide.
+Fielicht is ju al fon uurswál läsked wuuden.',
'badtitle' => 'Uungultige Tittel.',
'badtitletext' => 'Die anfräigede Tittel waas uungultich, loos, of n uungultigen Sproaklink fon n uur Wiki.',
'perfcached' => 'Do foulgjende Doaten stamme uut dän Cache un sunt muugelkerwiese nit aktuäl:',
@@ -388,7 +428,6 @@ Ju Speere wuude truch [[User:$1|$1]] mäd ju Begruundenge ''$2'' ienroat.",
'virus-unknownscanner' => 'Uunbekoanden Virenscanner:',
# Login and logout pages
-'logouttitle' => 'Benutser-Oumäldenge',
'logouttext' => "'''Du bäst nu oumälded.'''
Du koast {{SITENAME}} nu anonym fääre benutsje, of die fonnäien unner dänsälge of n uur Benutsernoome wier [[Special:UserLogin|anmäldje]].
@@ -397,7 +436,6 @@ Beoachtje, dät eenige Sieden noch anwiese konnen, dät du oumälded bäst, solo
Dien Benutserkonto wuude iengjucht.
Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasjen.',
-'loginpagetitle' => 'Benutser-Anmäldenge',
'yourname' => 'Benutsernoome:',
'yourpassword' => 'Paaswoud:',
'yourpasswordagain' => 'Paaswoud wierhoalje:',
@@ -408,6 +446,7 @@ Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasje
'nav-login-createaccount' => 'Anmäldje',
'loginprompt' => 'Uum sik bie {{SITENAME}} anmäldje tou konnen, mouten Cookies aktivierd weese.',
'userlogin' => 'Anmäldje / Benutserkonto moakje',
+'userloginnocreate' => 'Anmäldje',
'logout' => 'Oumäldje',
'userlogout' => 'Oumäldje',
'notloggedin' => 'Nit anmälded',
@@ -419,28 +458,8 @@ Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasje
'createaccountmail' => 'Uur Email',
'badretype' => 'Do bee Paaswoude stimme nit uureen.',
'userexists' => 'Disse Benutsernoomen is al ferroat. Wääl jädden n uur.',
-'youremail' => 'E-Mail-Adrässe:',
-'username' => 'Benutsernoome:',
-'uid' => 'Benutser-ID:',
-'prefs-memberingroups' => 'Meeglid fon {{PLURAL:$1|ju Benutzergruppe|do Benutzergruppen}}:',
-'yourrealname' => 'Dien ächte Noome:',
-'yourlanguage' => 'Sproake fon ju Benutser-Uurfläche:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Unnerschrift:',
-'badsig' => 'Signatursyntax is uungultich; HTML uurpröiwje.',
-'badsiglength' => 'Ju Unnerschrift is tou loang.
-Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
-'yourgender' => 'Geslächt:',
-'gender-unknown' => 'Nit anroat',
-'gender-male' => 'Monnelk',
-'gender-female' => 'Wieuwelk',
-'prefs-help-gender' => 'Optionoal: Wäd foar ju geslächtskorrekte Anrääde fonsieden ju Software benutsed. Disse Information is eepentelk.',
-'email' => 'E-Mail',
-'prefs-help-realname' => 'Optional. Foar dät anärkaanende Naamen fon dien Noome in Touhoopehong mäd dien Biedraagen.',
'loginerror' => 'Failer bie ju Anmäldenge',
-'prefs-help-email' => 'Ju Angoawe fon ne E-Mail-Adresse is optionoal, moaket oawers je Touseendenge muugelk fon n Ärsats-Paaswoud, wan du dien Paaswoud ferjeeten hääst.
-Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme, sunner dät du dien Identität eepenlääse hougest.',
-'prefs-help-email-required' => 'N gultige Email-Adrässe is nöödich.',
+'createaccounterror' => 'Benutserkonto kuud nit moaked wäide: $1',
'nocookiesnew' => 'Dien Benutsertougong wuude kloor moaked, man du bäst nit anmälded. {{SITENAME}} benutset Cookies toun Anmäldjen fon do Benutsere. Du hääst in dien Browser-Ienstaalengen Cookies deaktivierd. Uum dien näie Benutsertougong tou bruuken, läit jädden dien Browser Cookies foar {{SITENAME}} annieme un mäldje die dan mäd dien juust iengjuchten Benutsernoome un Paaswoud an.',
'nocookieslogin' => '{{SITENAME}} benutset Cookies toun Anmäldjen fon dän Benutser. Du hääst in dien Browser-Ienstaalengen Cookies deaktivierd, jädden aktivierje do un fersäik et fonnäien.',
'noname' => 'Du moast n Benutsernoome anreeke.',
@@ -450,15 +469,18 @@ Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme,
Uurpröif ju Schrieuwwiese (Groot-/Littekschrieuwenge beoachtje) of [[Special:UserLogin/signup|mäld die as näien Benutser an]].',
'nosuchusershort' => 'Die Benutsernooome "<nowiki>$1</nowiki>" bestoant nit. Jädden uurpröiwe ju Schrieuwwiese.',
'nouserspecified' => 'Reek jädden n Benutsernoome an.',
+'login-userblocked' => 'Dissen Benutser is speerd. Anmäldenge nit ferlööwed.',
'wrongpassword' => 'Dät Paaswoud is falsk. Fersäik dät jädden fonnäien.',
'wrongpasswordempty' => 'Du hääst ferjeeten, dien Paaswoud ientoureeken. Fersäk dät jädden fonnäien.',
-'passwordtooshort' => 'Failer bie ju Woal fon dät Paaswoud. Dät mout mindestens {{PLURAL:$1|1 Teeken|$1 Teekene}} loang weese.',
+'passwordtooshort' => 'Paaswoude mouten mindestens {{PLURAL:$1|1 Teeken|$1 Teekene}} loang weese.',
+'password-name-match' => 'Dien Paaswoud mout sik fon din Benutsernoome unnerscheede.',
'mailmypassword' => 'Näi Paaswoud touseende',
'passwordremindertitle' => 'Näi Paaswoud foar n {{SITENAME}}-Benutserkonto',
'passwordremindertext' => 'Wäl (woarschienelk du sälwen, fon ju IP-Adresse $1) häd n näi Paaswoud foar ju Anmäldenge bie {{SITENAME}} ($4) anfoarderd. Dät automatisk generierde tiedwiese Paaswoud foar Benutser "$2" lut nu: "$3". Is dät wät du foarhiest, dan schääst du die nu anmäldje un dät Paaswoud annerje. Dät tiedwiese Paaswoud lapt ou in {{PLURAL:$5|aan Dai|$5 Deege}}.
Ignorier disse E-Mail, in dän Fal du ju nit sälwen anfoarderd hääst of wan du dien oold Paaswoud wier betoanke kuust. Dät oolde Paaswoud blift dan wieders gultich.',
'noemail' => 'Benutser "$1" häd neen Email-Adrässe anroat of häd ju E-Mail-Funktion deaktivierd.',
+'noemailcreate' => 'Du moast ne gultige E-Mail-Adresse anreeke',
'passwordsent' => 'N näi temporär Paaswoud wuude an ju Email-Adrässe fon Benutser "$1" soand. Mäldje die jädden deermäd, soo gau as du dät kriegen hääst. Dät oolde Paaswoud blift uk ätters gultich.',
'blocked-mailpassword' => 'Ju fon die ferwoande IP-Adresse is foar dät Annerjen fon Sieden speerd. Uum n Misbruuk tou ferhinnerjen, wuude ju Muugelkhaid tou ju Anfoarderenge fon n näi Paaswoud ieuwenfals speerd.',
'eauthentsent' => 'Ne Bestäätigengs-Email wuude an ju anroate Adrässe fersoand. Aleer n Email fon uur
@@ -482,9 +504,11 @@ Mail-Fersoand un Ämpfang foar do foulgjende Funktionen muugelk.',
'createaccount-text' => 'Wäl häd foar die n Benutserkonto "$2" ap {{SITENAME}} ($4) moaked. Dät Paaswoud foar "$2" is "$3". Du schuust die nu anmäldje un dien Paaswoud annerje.
In dän Fal dät Benutserkonto uut Fersjoon anlaid wuude, koast du disse Ättergjucht ignorierje.',
+'usernamehasherror' => 'Benutsernoomen duuren neen Ruuten-Teekene änthoolde',
'login-throttled' => 'Du hääst tou oafte fersoacht, die antoumäldjen.
Täif, eer du fon näien fersäkst.',
'loginlanguagelabel' => 'Sproake: $1',
+'suspicious-userlogout' => 'Dien Oumälde-Anfroage wuud ferwäigerd, deer ju fermoudelk fon n defekten Browser of n Cache-Proxy soand wuud.',
# Password reset dialog
'resetpass' => 'Paaswoud annerje',
@@ -495,17 +519,13 @@ Täif, eer du fon näien fersäkst.',
'retypenew' => 'Näi Paaswoud (nochmoal):',
'resetpass_submit' => 'Paaswoud ienbrange un anmäldje',
'resetpass_success' => 'Dien Paaswoud wuude mäd Ärfoulch annerd. Nu foulget ju Anmäldenge...',
-'resetpass_bad_temporary' => 'Ungultich foarlööpich Paaswoud. Du hääst dien Paaswoud al mäd Ärfoulch annerd of n näi, foarlööpich Paaswoud anfoarderd.',
'resetpass_forbidden' => 'Dät Paaswoud kon nit annerd wäide.',
'resetpass-no-info' => 'Du moast die anmäldje, uum ap disse Siede direkt toutougriepen.',
'resetpass-submit-loggedin' => 'Paaswoud annerje',
+'resetpass-submit-cancel' => 'Oubreeke',
'resetpass-wrong-oldpass' => 'Uungultich tiedelk of aktuell Paaswoud.
Muugelkerwiese hääst du dien Paaswoud al mäd Ärfoulch annerd of n näi tiedelk Paaswoud fräiged.',
'resetpass-temp-password' => 'Tiedelk Paaswoud:',
-'resetpass-log' => 'Paaswoudtouräächsättengs-Logbouk',
-'resetpass-logtext' => 'Hierunner wäd n Logbouk fon Benutsere anwiesd, fon do dät Paaswoud truch n Administrator touräächsät wuude.',
-'resetpass-logentry' => 'annerde dät Paaswoud foar $1',
-'resetpass-comment' => 'Gruund foar dät Touräächsätten:',
# Edit page toolbar
'bold_sample' => 'Fatten Text',
@@ -593,7 +613,6 @@ Du koast $1 of aan fon do uur [[{{MediaWiki:Grouppage-sysop}}|Administratore]] k
'blockededitsource' => "Die Wältext '''fon dien Annerengen''' an '''$1''':",
'whitelistedittitle' => 'Toun Beoarbaidjen is dät nöödich, anmälded tou weesen',
'whitelistedittext' => 'Du moast die $1, uum Artikkele beoarbaidje tou konnen.',
-'confirmedittitle' => 'Toun Beoarbaidjen is ju E-Mail-Anärkannenge nöödich.',
'confirmedittext' => 'Du moast dien E-Mail-Adresse eerste anärkanne, eer du beoarbaidje koast. Fäl dien E-Mail uut un ärkanne ju an in do [[Special:Preferences|Ienstaalengen]].',
'nosuchsectiontitle' => 'Kon ju Oudeelenge nit fiende',
'nosuchsectiontext' => 'Du hääst fersoacht, ne Oudeelenge tou beoarbaidjen, ju dät nit rakt.
@@ -617,10 +636,17 @@ Wan du n uunbekoanden Benutser bääst un du toankst dät du Kommentare krichst
'noarticletext' => 'Deer is apstuuns naan Text ap disse Siede.
Du koast dissen Tittel ap do uur Sieden [[Special:Search/{{PAGENAME}}|säike]],
<span class="plainlinks"> in do touheerige [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbouke säike] of disse Siede [{{fullurl:{{FULLPAGENAME}}|action=edit}} beoarbaidje]</span>.',
+'noarticletext-nopermission' => 'Der is apstuuns noch naan Text ap disse Siede.
+Du koast dissen Tittel ap do uur Sieden [[Special:Search/{{PAGENAME}}|säike]]
+of <span class="plainlinks">in do touheerige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbouke säike].</span>',
'userpage-userdoesnotexist' => 'Dät Benutserkonto „$1“ is nit deer. Pröif, of du disse Siede wuddelk moakje/beoarbaidje wolt.',
+'userpage-userdoesnotexist-view' => 'Benutserkonto „$1“ bestoant nit.',
+'blocked-notice-logextract' => 'Dissen Benutser is apstuuns speerd.
+Foar Information foulget n aktuellen Iendraach uut dät Benutser-Logbouk:',
'clearyourcache' => "'''Bemäärkenge: Ätter dät Fäästlääsen kon dät nöödich weese, dän Browser-Cache loostoumoakjen, uum do Annerengen sjo tou konnen.'''
'''Mozilla / Firefox / Safari:''' hoold ''Shift'' deel un klik ''Reload,'' of tai ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' ap n Macintosh); '''Konqueror: '''klik ''Reload'' of tai ''F5;'' '''Opera:''' moak dän cache loos in ''Tools → Preferences;'' '''Internet Explorer:''' hoold ''Ctrl'' deel un klik ''Refresh,'' of tai ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tipp:''' Benutse dän Foarschau-Knoop, uum dien näi CSS/JavaScript foar dät Spiekerjen tou tästjen.",
+'usercssyoucanpreview' => "'''Tipp:''' Benutse dän Foarschau-Knoop, uum dien näi CSS/JavaScript foar dät Spiekerjen tou tästjen.",
+'userjsyoucanpreview' => "'''Tipp:''' Benutse dän Foarschau-Knoop, uum dien näi JavaScript foar dät Spiekerjen tou tästjen.",
'usercsspreview' => "== Foarschau fon dien Benutser-CSS ==
'''Beoachtje:''' Ätter dät Spiekerjen moast du dien Browser anwiese, ju näie Version tou leeden: '''Mozilla/Firefox:''' ''Strg-Shift-R'', '''Internet Explorer:''' ''Strg-F5'', '''Opera:''' ''F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.",
'userjspreview' => "== Foarschau fon dien Benutser-CSS ==
@@ -666,13 +692,13 @@ Jie fersicherje hiermäd uk, dät Jie dän Biedraach sälwen ferfoated hääbe b
Sicherje dän Text jädden lokoal ap dien Computer un fersäik tou n leeteren Tiedpunkt, do Annerengen tou uurdreegen.'''
Gruund foar ju Speere: $1",
-'protectedpagewarning' => "'''WOARSCHAUENGE: Disse Siede wuude speerd, so dät ju bloot truch Benutsere mäd Administrationsgjuchte beoarbeded wäide kon.'''",
-'semiprotectedpagewarning' => "'''Oachtenge:''' Disse Siede is ousleeten un kon bloot fon anmäldede Besäikere beoarbaided wäide.",
+'protectedpagewarning' => "'''WOARSCHAUENGE: Disse Siede wuude speerd. Bloot Benutsere mäd Administratorgjuchte konnen ju Siede beoarbaidje.''' Foar Information foulget die aktuelle Logboukiendraach:",
+'semiprotectedpagewarning' => "'''Hoolfspeerenge:''' Ju Siede wuud so speerd, dät bloot registrierde Benutsere ju annerje konnen. Foar Information foulget ju aktuelle Iendraach:",
'cascadeprotectedwarning' => "'''WOARSCHAUENGE: Disse Siede wuude speerd, so dät ju bloot truch Benutsere mäd Administratorgjuchte beoarbaided wäide kon. Ju is in do {{PLURAL:$1|foulgjende Siede|foulgjende Sieden}} ienbuunen, do der middels ju Kaskadenspeeroption schutsed {{PLURAL:$1|is|sunt}}:'''",
-'titleprotectedwarning' => "'''WOARSCHAUENGE: Dät Moakjen fon Sieden wuude speerd. Bloot Benutsere mäd [[Special:ListGroupRights|spezielle Gjuchte]] konnen ju Siede moakje.'''",
-'templatesused' => 'Foulgjende Foarloagen wäide fon disse Artikkele ferwoand:',
-'templatesusedpreview' => 'Foulgjende Foarloagen wäide fon disse Siedefoarschau ferwoand:',
-'templatesusedsection' => 'Foulgjende Foarloagen wuuden fon disse Oudeelenge ferwoand:',
+'titleprotectedwarning' => "'''WOARSCHAUENGE: Dät Moakjen fon Sieden wuud speerd. Bloot Benutsere mäd [[Special:ListGroupRights|spezielle Gjuchte]] konnen ju Siede moakje.''' Foar Information foulget ju aktuelle Logboukiendraach:",
+'templatesused' => '{{PLURAL:$1|Ju foulgjende Foarloage wäd|Do foulgjende Foarloagen wäide}} fon disse Siede ferwoand:',
+'templatesusedpreview' => '{{PLURAL:$1|Ju foulgjende Foarloage wäd|Do foulgjende Foarloagen wäide}} fon dissen Siedefoarschau ferwoand:',
+'templatesusedsection' => '{{PLURAL:$1|Ju foulgjende Foarloage wäd|Do foulgjende Foarloagen wäide}} fon disse Oudeelenge ferwoand:',
'template-protected' => '(schutsed)',
'template-semiprotected' => '(Siedenschuts foar nit anmäldede un näie Benutsere)',
'hiddencategories' => 'Disse Siede is Meeglid fon {{PLURAL:$1|1 ferstatte Kategorie|$1 ferstatte Kategorien}}:',
@@ -680,15 +706,17 @@ Gruund foar ju Speere: $1",
'nocreatetitle' => 'Dät Moakjen fon näie Sieden is begränsed',
'nocreatetext' => 'Ap {{SITENAME}} wuude dät Moakjen fon näie Sieden begränsed. Du koast al bestoundene Sieden beoarbaidje of die [[Special:UserLogin|anmäldje]].',
'nocreate-loggedin' => 'Du hääst neen Begjuchtigenge, näie Sieden antoulääsen.',
+'sectioneditnotsupported-title' => 'Ju Beoarbaidenge fon Ousnitte wäd nit unnerstutsed',
+'sectioneditnotsupported-text' => 'Ju Beoarbaidenge fon Ousnitte wäd ap disse Beoarbaidengssiede nit unnerstutsed.',
'permissionserrors' => 'Begjuchtigengs-Failere',
'permissionserrorstext' => 'Du bäst nit begjuchtiged, ju Aktion uuttoufieren. {{PLURAL:$1|Gruund|Gruunde}}:',
'permissionserrorstext-withaction' => 'Du bäst nit begjuchtiged, ju Aktion „$2“ uuttoufieren, {{PLURAL:$1|Gruund|Gruunde}}:',
-'recreate-deleted-warn' => "'''Oachtenge: Du moakest ne Siede, ju der al fröier läsked wuude.'''
+'recreate-moveddeleted-warn' => "'''Oachtenge: Du moakest ne Siede, ju der al fröier läsked wuude.'''
Pröif mäd Suurge, of dät näi Moakjen fon ju Siede do Gjuchtlienjen äntspräkt.
-Tou Dien Information foulget dät Läsk-Logbouk mäd ju Begründenge foar ju fröiere Läskenge:",
-'deleted-notice' => 'Disse Siede wuud läsked. Der foulget n Uutsuch uut dät Läsk-Logbouk foar disse Siede.',
-'deletelog-fulllog' => 'Fulständich Läsk-Logbouk',
+Tou dien Information foulget dät Läsk- un Ferschäuwengs-Logbouk mäd ju Begründenge foar ju fröiere Läskenge:",
+'moveddeleted-notice' => 'Disse Siede wuud läsked. Der foulget n Uutsuch uut dät Läsk- un Ferschäuwengs-Logbouk foar disse Siede.',
+'log-fulllog' => 'Aal Logboukiendraage bekiekje',
'edit-hook-aborted' => 'Ju Beoarbaidenge wuud sunner Ärkläärenge truch ne Snitsteede oubreeken.',
'edit-gone-missing' => 'Ju Siede kuud nit aktualisierd wäide.
Ju wuud anschienend läsked.',
@@ -726,7 +754,7 @@ Gruund fon ju Speere: ''$2''",
'currentrev' => 'Aktuälle Version',
'currentrev-asof' => 'Aktuelle Version fon $1',
'revisionasof' => 'Version fon $1',
-'revision-info' => 'Dit is ne oolde Version. Tiedpunkt fon ju Beoarbaidenge: $1 truch $2.', # Additionally available: $3: revision id
+'revision-info' => 'Dit is ne oolde Version. Tiedpunkt fon ju Beoarbaidenge: $1 truch $2.',
'previousrevision' => '← Naistallere Version',
'nextrevision' => 'Naistjungere Version →',
'currentrevisionlink' => 'Aktuälle Version',
@@ -739,7 +767,7 @@ Gruund fon ju Speere: ''$2''",
Legende: (Aktuäl) = Unnerscheed tou ju aktuälle Version,
(Lääste) = Unnerscheed tou ju foarige Version, L = Litje Annerenge",
'history-fieldset-title' => 'Säik in ju Versionsgeschichte',
-'deletedrev' => '[läsked]',
+'history-show-deleted' => 'bloot läskede Versione',
'histfirst' => 'Ooldste',
'histlast' => 'Näiste',
'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
@@ -748,69 +776,113 @@ Legende: (Aktuäl) = Unnerscheed tou ju aktuälle Version,
# Revision feed
'history-feed-title' => 'Versionsgeschichte',
'history-feed-description' => 'Versionsgeschichte foar disse Siede in {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 uum $2', # user at time
+'history-feed-item-nocomment' => '$1 uum $2',
'history-feed-empty' => 'Ju anfoarderde Siede existiert nit. Fielicht wuud ju läsked of ferschäuwen. [[Special:Search|Truchsäik]] {{SITENAME}} foar paasjende näie Sieden.',
# Revision deletion
-'rev-deleted-comment' => '(Beoarbaidengskommentoar wächhoald)',
-'rev-deleted-user' => '(Benutsernoome wächhoald)',
-'rev-deleted-event' => '(Logbouk-Aktion wächhoald)',
-'rev-deleted-text-permission' => "Disse Version wuude läsked un is '''nit moor eepentelk ientousjoon'''.
-Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
-'rev-deleted-text-view' => "Disse Version wuude läsked un is '''nit moor eepentelk ientousjoon'''.
+'rev-deleted-comment' => '(Beoarbaidengskommentoar wächhoald)',
+'rev-deleted-user' => '(Benutsernoome wächhoald)',
+'rev-deleted-event' => '(Logbouk-Aktion wächhoald)',
+'rev-deleted-user-contribs' => '[Benutsernoome of IP-Adrässe wächhoald - Beoarbaidenge uut Biedreege ferstat.]',
+'rev-deleted-text-permission' => "Disse Version wuude '''läsked'''.
+Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+'rev-deleted-text-unhide' => "Disse Version wuud '''läsked'''.
+Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
+As Administrator koast du noch [$1 ju Version bekiekje], wan du fääregunge moatest.",
+'rev-suppressed-text-unhide' => "Disse Version wuud '''unnerdrukt'''.
+Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
+Du as Administrator koast [$1 disse Version bekiekje], wan du et wonskest.",
+'rev-deleted-text-view' => "Disse Version wuude '''läsked'''.
As Administrator koast du ju wieders ienkiekje.
-Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
-'rev-deleted-no-diff' => "Du koast dissen Unnerscheed nit betrachtje, deer een fon do Versione '''uut do eepentelke Archive wächhoald wuud'''.
-Details stounde in dät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
-'rev-deleted-unhide-diff' => "Een fon do Versione fon dissen Unnerscheed wuud '''läsked'''.
-Details stounde in dät [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
-As n Administrator koast du noch [$1 dissen Unnerscheed bekiekje], wan du fääregunge moatest.",
-'rev-delundel' => 'wiese/ferbierge',
-'revisiondelete' => 'Versione läskje/wier häärstaale',
-'revdelete-nooldid-title' => 'Uunjäildige Siel-Beoarbaidenge',
-'revdelete-nooldid-text' => 'Du hääst neen Version ounroat, wierap disse Aktion uutfierd wäide schäl, ju wäälde Version is nit deer of du fersäkst, ju aktuelle Version wächtouhoaljen.',
-'revdelete-nologtype-title' => 'Naan Logtyp anroat',
-'revdelete-nologtype-text' => 'Der wuud naan Logtyp foar disse Aktion anroat.',
-'revdelete-toomanytargets-title' => 'Tou fuul Siele',
-'revdelete-toomanytargets-text' => 'Der wuuden tou fuul Logtype foar disse Aktion anroat.',
-'revdelete-nologid-title' => 'Uungultigen Logiendraach',
-'revdelete-nologid-text' => 'Der wuud naan Logtyp uutwääld of die wäälde Logtyp existiert nit.',
-'revdelete-selected' => "'''{{PLURAL:$2|Uutwäälde Version|Uutwäälde Versione}} fon [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Uutwäälden Logboukiendraach|Uutwäälde Logboukiendraage}}:'''",
-'revdelete-text' => "'''Läskede Versione un Aktione ferblieuwe in ju Versionsgeschichte un do Logbouke, man Deele deerfon sunt nit eepentelk ientoukiekjen.'''
-
-Uur Administratore ap {{SITENAME}} hääbe Tougriep ap dän ferstatte Inhoold un konnen him mäd ju glieke Siede wier moakje, insowied uurhoop neen Ientuunengen bestounde.
-Bestäätigje, dät du dät dwoo wolt, do Konsequenze ferstoanst un dät in Uureenstimmenge mäd do [[{{MediaWiki:Policy-url}}|Gjuchtlinien]] dääst.",
-'revdelete-suppress-text' => "Unnerdrukkengen schuulen '''bloot''' in do foulgjende Fälle foarnuumen waide:
+Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+'rev-suppressed-text-view' => "Disse Version wuud '''unnerdrukt'''.
+Administratore konnen ju ienkiekje; Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+'rev-deleted-no-diff' => "Du koast dissen Unnerscheed nit betrachtje, deer een fon do Versione '''läsked''' wuude.
+Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+'rev-suppressed-no-diff' => "Du koast dissen Versionsunnerscheed nit betrachtje, deer een fon do Versione '''läsked''' wuud.",
+'rev-deleted-unhide-diff' => "Een fon do Versione fon dissen Unnerscheed wuud '''läsked'''.
+Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
+As Adminstrator koast du noch [$1 dissen Versionsunnerscheed bekiekje] wan du fääregunge wolt.",
+'rev-suppressed-unhide-diff' => "Een fon do Versione fon dissen Unnerscheed wuud '''unnerdrukt'''.
+Details stounde in dät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
+As Adminstrator koast du noch [$1 dissen Versionsunnerscheed bekiekje] wan du fääregunge wolt.",
+'rev-deleted-diff-view' => "Ne Version fon dissen Versionsunnerscheed wuud '''läsked'''.
+As Administrator koast du dissen Versionsunnerscheed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+'rev-suppressed-diff-view' => "Een fon do Versione fon dissen Versionsunnerscheed wuud '''unnerdrukt'''.
+As Administrator koast du dissen Versionsunnerscheed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+'rev-delundel' => 'wiese/ferbierge',
+'rev-showdeleted' => 'wies',
+'revisiondelete' => 'Versione läskje/wier häärstaale',
+'revdelete-nooldid-title' => 'Uunjäildige Siel-Beoarbaidenge',
+'revdelete-nooldid-text' => 'Du hääst neen Version ounroat, wierap disse Aktion uutfierd wäide schäl, ju wäälde Version is nit deer of du fersäkst, ju aktuelle Version wächtouhoaljen.',
+'revdelete-nologtype-title' => 'Naan Logtyp anroat',
+'revdelete-nologtype-text' => 'Der wuud naan Logtyp foar disse Aktion anroat.',
+'revdelete-nologid-title' => 'Uungultigen Logiendraach',
+'revdelete-nologid-text' => 'Der wuud naan Logtyp uutwääld of die wäälde Logtyp existiert nit.',
+'revdelete-no-file' => 'Ju anroate Doatäi bestoant nit.',
+'revdelete-show-file-confirm' => 'Bäst du sicher, dät du ju läskede Version fon ju Doatäi „<nowiki>$1</nowiki>“ fon dän $2 uum $3 Uure bekiekje wolt?',
+'revdelete-show-file-submit' => 'Jee',
+'revdelete-selected' => "'''{{PLURAL:$2|Uutwäälde Version|Uutwäälde Versione}} fon [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Uutwäälden Logboukiendraach|Uutwäälde Logboukiendraage}}:'''",
+'revdelete-text' => "'''Läskede Versione un Aktione ferblieuwe in ju Versionsgeschichte un do Logbouke, man Deele deerfon sunt nit eepentelk ientoukiekjen.'''
+Uur Administratore ap {{SITENAME}} hääbe Tougriep ap dän ferstatte Inhoold un konnen him mäd ju glieke Siede wier moakje, insowied uurhoop neen Ientuunengen bestounde.",
+'revdelete-confirm' => 'Bestäätigje, dät du dit wuddelk dwo wolt, dät du do Konsequenze ferstoanst un dät in Uureenstimmenge mäd do [[{{MediaWiki:Policy-url}}|Gjuchtlienjen]] dääst.',
+'revdelete-suppress-text' => "Unnerdrukkengen schuulen '''bloot''' in do foulgjende Fälle foarnuumen waide:
* Uunpaasende persöönelke Informatione
*: ''Adressen, Telefonnummere, Sozialversicherungsnummere usw.''",
-'revdelete-legend' => 'Sät Ienschränkengen foar do Versione',
-'revdelete-hide-text' => 'Text fon ju Version ferstopje',
-'revdelete-hide-name' => 'Logbouk-Aktion ferstopje',
-'revdelete-hide-comment' => 'Beoarbaidengskommentoar ferstopje',
-'revdelete-hide-user' => 'Benutsernoome/ju IP fon dän Beoarbaider ferstopje',
-'revdelete-hide-restricted' => 'Doaten uk foar Administratore un uurswäkke unnerdrukke',
-'revdelete-suppress' => 'Gruund fon ju Läskenge uk foar Administratore ferstopped',
-'revdelete-hide-image' => 'Bielde-Inhoold ferstopje',
-'revdelete-unsuppress' => 'Ienschränkengen foar wier häärstoalde Versione aphieuwje',
-'revdelete-log' => 'Gruund:',
-'revdelete-submit' => 'Ap uutwäälde Version anweende',
-'revdelete-logentry' => 'Versionsansicht annerd foar [[$1]]',
-'logdelete-logentry' => 'annerde ju Sichtboarkaid foar [[$1]]',
-'revdelete-success' => "'''Ju Versionsansicht wuud aktualisierd.'''",
-'logdelete-success' => "'''Logbouk-Aktion mäd Ärfoulch sät.'''",
-'revdel-restore' => 'Sichtboarhaid annerje',
-'pagehist' => 'Siedegeschichte',
-'deletedhist' => 'Läskede Versione',
-'revdelete-content' => 'Siedeninhoold',
-'revdelete-summary' => 'Touhoopefoatengskommentoar',
-'revdelete-uname' => 'Benutsernoome',
-'revdelete-restricted' => 'Einschränkengen jäilde uk foar Administratore',
-'revdelete-unrestricted' => 'Ienschränkengen foar Administratore wächhoald',
-'revdelete-hid' => 'ferstatte $1',
-'revdelete-unhid' => 'moakede $1 wier eepentelk',
-'revdelete-log-message' => '$1 foar $2 {{PLURAL:$2|Version|Versione}}',
-'logdelete-log-message' => '$1 foar $2 {{PLURAL:$2|Logboukiendraach|Logboukiendraage}}',
+'revdelete-legend' => 'Sät Ienschränkengen foar do Versione',
+'revdelete-hide-text' => 'Text fon ju Version ferstopje',
+'revdelete-hide-image' => 'Bielde-Inhoold ferstopje',
+'revdelete-hide-name' => 'Logbouk-Aktion ferstopje',
+'revdelete-hide-comment' => 'Beoarbaidengskommentoar ferstopje',
+'revdelete-hide-user' => 'Benutsernoome/ju IP fon dän Beoarbaider ferstopje',
+'revdelete-hide-restricted' => 'Doaten uk foar Administratore un uurswäkke unnerdrukke',
+'revdelete-radio-same' => '(nit annerje)',
+'revdelete-radio-set' => 'Jee',
+'revdelete-radio-unset' => 'Noa',
+'revdelete-suppress' => 'Gruund fon ju Läskenge uk foar Administratore ferstopped',
+'revdelete-unsuppress' => 'Ienschränkengen foar wier häärstoalde Versione aphieuwje',
+'revdelete-log' => 'Gruund:',
+'revdelete-submit' => 'Ap uutwäälde {{PLURAL:$1|Version|Versione}} anweende',
+'revdelete-logentry' => 'Versionsansicht annerd foar [[$1]]',
+'logdelete-logentry' => 'annerde ju Sichtboarkaid foar [[$1]]',
+'revdelete-success' => "'''Ju Versionsansicht wuud aktualisierd.'''",
+'revdelete-failure' => "Ju Versionssichtboarkaid kon nit aktualisierd wäide:'''
+$1",
+'logdelete-success' => "'''Logbouk-Aktion mäd Ärfoulch sät.'''",
+'logdelete-failure' => "'''Logbouksichtboarkaid kon nit annerd wäide:'''
+$1",
+'revdel-restore' => 'Sichtboarhaid annerje',
+'pagehist' => 'Siedegeschichte',
+'deletedhist' => 'Läskede Versione',
+'revdelete-content' => 'Siedeninhoold',
+'revdelete-summary' => 'Touhoopefoatengskommentoar',
+'revdelete-uname' => 'Benutsernoome',
+'revdelete-restricted' => 'Einschränkengen jäilde uk foar Administratore',
+'revdelete-unrestricted' => 'Ienschränkengen foar Administratore wächhoald',
+'revdelete-hid' => 'ferstatte $1',
+'revdelete-unhid' => 'moakede $1 wier eepentelk',
+'revdelete-log-message' => '$1 foar $2 {{PLURAL:$2|Version|Versione}}',
+'logdelete-log-message' => '$1 foar $2 {{PLURAL:$2|Logboukiendraach|Logboukiendraage}}',
+'revdelete-hide-current' => 'Failer bie dät Fersteeten fon dän Iendraach fon $1, $2 Uure: Dit is ju aktuelle Version.
+Ju kon nit ferstat wäide.',
+'revdelete-show-no-access' => 'Failer bie dät Anwiesen fon dän Iendraach fon $1, $2 Uure: Dissen Iendraach wuud as "betüümt" markierd.
+Du hääst deer naan Tougriep ap.',
+'revdelete-modify-no-access' => 'Failer bie dät Beoarbaidjen fon dän Iendraach fon $1, $2 Uure: Dissen Iendraach wuud as "betüümt" markierd.
+Du hääst deer naan Tougriep ap.',
+'revdelete-modify-missing' => 'Failer bie dät Beoarbaidjen fon ID $1: Dät failt in ju Doatenboank!',
+'revdelete-no-change' => "'''Woarschauenge:''' Die Iendraach fon $1, $2 Uure häd al do wonskede Sichtboarkaids-Ienstaalengen.",
+'revdelete-concurrent-change' => 'Failer bie dät Beoarbaidjen fon dän Iendraach fon $1, $2 Uure: Dät schient, as wan die Stoatus fon wäl annerd wuude, eer du foarhiest, him tou beoarbaidjen.
+Wröigje do Logbouke.',
+'revdelete-only-restricted' => 'Failer bie dät Fersteeten fon dän Iendraach fon $1, $2 Uure: Du koast naan Iendraach foar Administratore fersteete, sunner een fon do uur Ansichtssoptione wääld tou hääben.',
+'revdelete-reason-dropdown' => '*Algemeene Läskgruunde
+** Uurheebergjuchtsferlätsenge
+** Persöönelke Informatione, do sik nit so heere
+** Information, ju wäl an de Eere kuume kon',
+'revdelete-otherreason' => 'Uur/bietoukuumende Begründenge:',
+'revdelete-reasonotherlist' => 'Uur Begründenge',
+'revdelete-edit-reasonlist' => 'Läskgruunde beoarbaidje',
+'revdelete-offender' => 'Autor fon ju Version:',
# Suppression log
'suppressionlog' => 'Uursicht-Logbouk',
@@ -846,67 +918,13 @@ Staal deertruch sicher, dät ju Versionsgeschichte fon n Artikkel historisk akro
'mergelogpagetext' => 'Dit is dät Logbouk fon do fereenigede Versionsgeschichten.',
# Diffs
-'history-title' => 'Versionsgeschichte fon "$1"',
-'difference' => '(Unnerscheed twiske Versione)',
-'lineno' => 'Riege $1:',
-'compareselectedversions' => 'Wäälde Versione ferglieke',
-'visualcomparison' => 'Visuellen Fergliek',
-'wikicodecomparison' => 'Wikitext-Fergliek',
-'editundo' => 'tounichte moakje',
-'diff-multi' => '(Die Versionsfergliek belukt {{PLURAL:$1|ne deertwiske lääsende Version|$1 deertwiske lääsende Versione}} mee ien.)',
-'diff-movedto' => 'ferschäuwen ätter $1',
-'diff-styleadded' => '$1-Style bietouföiged',
-'diff-added' => '$1 bietouföiged',
-'diff-changedto' => 'ferannerd ätter $1',
-'diff-movedoutof' => 'ferschäuwen uut $1',
-'diff-styleremoved' => '$1-Style wächhoald',
-'diff-removed' => '$1 wächhoald',
-'diff-changedfrom' => 'ferannerd fon $1',
-'diff-src' => 'Wälle',
-'diff-withdestination' => 'mäd Siel $1',
-'diff-with' => '&#32;mäd $1 $2',
-'diff-with-final' => '&#32;un $1 $2',
-'diff-width' => 'Bratte',
-'diff-height' => 'Höchte',
-'diff-p' => "een '''Stuk'''",
-'diff-blockquote' => "aan '''Blok'''",
-'diff-h1' => "ne '''Uurschrift (1. Oardnenge)'''",
-'diff-h2' => "ne '''Uurschrift (2. Oardnenge)'''",
-'diff-h3' => "ne '''Uurschrift (3. Oardnenge)'''",
-'diff-h4' => "ne '''Uurschrift (4. Oardnenge)'''",
-'diff-h5' => "ne '''Uurschrift (5. Oardnenge)'''",
-'diff-pre' => "aan '''formattierden Blok'''",
-'diff-div' => "een '''Blokelement'''",
-'diff-ul' => "ne '''Lieste'''",
-'diff-ol' => "ne '''numerierde Lieste'''",
-'diff-li' => "aan '''Liesteniendraach'''",
-'diff-table' => "ne '''Tabelle'''",
-'diff-tbody' => "n '''Tabelleninhoold'''",
-'diff-tr' => "ne '''Riege'''",
-'diff-td' => "ne '''Zelle'''",
-'diff-th' => "ne '''Spaltenuurschrift'''",
-'diff-br' => "n '''Riegenuumbreek'''",
-'diff-hr' => "ne '''horizontoale Lienje'''",
-'diff-code' => "n '''Beräk Computercode'''",
-'diff-dl' => "ne '''Definitionslieste'''",
-'diff-dt' => "n '''Definitionsterm'''",
-'diff-dd' => "ne '''Definition'''",
-'diff-input' => "ne '''Iengoawe'''",
-'diff-form' => "n '''Formular'''",
-'diff-img' => "ne '''Bielde'''",
-'diff-span' => "n '''Span'''",
-'diff-a' => "n '''Link'''",
-'diff-i' => "'''scheeuw'''",
-'diff-b' => "'''fat'''",
-'diff-strong' => "'''mäd Ätterdruk'''",
-'diff-em' => "'''betoond'''",
-'diff-font' => "'''Schriftoard'''",
-'diff-big' => "'''groot'''",
-'diff-del' => "'''läsked'''",
-'diff-tt' => "'''fääste Wiete'''",
-'diff-sub' => "'''djoopstoald'''",
-'diff-sup' => "'''hoochstoald'''",
-'diff-strike' => "'''truchstrieked'''",
+'history-title' => 'Versionsgeschichte fon "$1"',
+'difference' => '(Unnerscheed twiske Versione)',
+'lineno' => 'Riege $1:',
+'compareselectedversions' => 'Wäälde Versione ferglieke',
+'showhideselectedversions' => 'Uutwäälde Versione wiese/fersteete',
+'editundo' => 'tounichte moakje',
+'diff-multi' => '(Die Versionsfergliek belukt {{PLURAL:$1|ne deertwiske lääsende Version|$1 deertwiske lääsende Versione}} mee ien.)',
# Search results
'searchresults' => 'Säikresultoate',
@@ -914,30 +932,25 @@ Staal deertruch sicher, dät ju Versionsgeschichte fon n Artikkel historisk akro
'searchresulttext' => 'Foar moor Informatione tou ju Säike sjuch ju [[{{MediaWiki:Helppage}}|Hälpesiede]].',
'searchsubtitle' => 'Dien Säikanfroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aal mäd „$1“ ounfangende Sieden]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal Sieden, do ätter „$1“ ferlinkje]])',
'searchsubtitleinvalid' => 'Foar dien Säikanfroage „$1“.',
-'noexactmatch' => "'''Deer existiert neen Siede mäd dän Tittel „$1“.'''
-
-Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]].",
-'noexactmatch-nocreate' => "'''Der bestoant neen Siede mäd dän Tittel „$1“.'''",
'toomanymatches' => 'Ju Antaal fon Säikresultoate is tou groot, fersäik ne näie Oufroage.',
'titlematches' => 'Uureenstämmengen mäd Uurschrifte',
'notitlematches' => 'Neen Uureenstimmengen',
'textmatches' => 'Uureenstämmengen mäd Texte',
'notextmatches' => 'Neen Uureenstimmengen',
-'prevn' => 'foarige $1',
-'nextn' => 'naiste $1',
+'prevn' => 'foarige {{PLURAL:$1|$1}}',
+'nextn' => 'naiste {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Foarich Resultoat|Foarige $1 Resultoate}}',
'nextn-title' => '{{PLURAL:$1|Foulgjend Resultoat|Foulgjende $1 Resultoate}}',
'shown-title' => 'Wies $1 {{PLURAL:$1|Resultoat|Resultoate}} pro Siede',
-'viewprevnext' => 'Wies ($1) ($2) ($3)',
+'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Säikoptione',
'searchmenu-exists' => "'''Dät rakt n Siede mäd Noome \"[[:\$1]]\" ap dissen Wiki'''",
'searchmenu-new' => "'''Moak ju Siede „[[:$1]]“ in dissen Wiki.'''",
'searchhelp-url' => 'Help:Hälpe',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies aal Sieden, do mäd dän Säikbegriep ounfange]]',
'searchprofile-articles' => 'Inhooldssieden',
-'searchprofile-articles-and-proj' => 'Inhooldssieden & Projekt',
-'searchprofile-project' => 'Projekt',
-'searchprofile-images' => 'Doatäie',
+'searchprofile-project' => 'Hälpe un Projektsieden',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Aal',
'searchprofile-advanced' => 'Fergratterd',
'searchprofile-articles-tooltip' => 'Säike in $1',
@@ -945,8 +958,6 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'searchprofile-images-tooltip' => 'Ätter Bielden säike',
'searchprofile-everything-tooltip' => 'Gansen Inhoold truchsäike (inklusive Diskussionssieden)',
'searchprofile-advanced-tooltip' => 'Säik in wiedere Noomensruume',
-'prefs-search-nsdefault' => 'Standoard-Noomensruume:',
-'prefs-search-nscustom' => 'Säik in wiedere Noomensruume:',
'search-result-size' => '$1 ({{PLURAL:$2|1 Woud|$2 Woude}})',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Wiederlaitenge $1)',
@@ -959,11 +970,12 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'search-mwsuggest-disabled' => 'neen Foarsleeke',
'search-relatedarticle' => 'Früünde',
'mwsuggest-disable' => 'Foarsleeke truch Ajax deaktivierje',
+'searcheverything-enable' => 'Säik in aal Noomensruume',
'searchrelated' => 'früünd',
'searchall' => 'aal',
'showingresults' => "Hier {{PLURAL:$1|is '''1''' Resultoat|sunt '''$1''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
'showingresultsnum' => "Hier {{PLURAL:$3|is '''1''' Resultoat|sunt '''$3''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
-'showingresultstotal' => "Hier {{PLURAL:$4|foulget Säikresultoat '''$1''' fon '''$3:'''|foulgje do Säikresultoate '''$1–$2''' fon '''$3:'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultoat '''$1''' fon '''$3'''|Resultoate '''$1–$2''' fon '''$3'''}} foar '''$4'''",
'nonefound' => "'''Waiwiesenge:''' Der wäide standoardmäitich man oankelde Noomensruume truchsoacht. Sät ''all:'' foar din Säikbegrip, uum aal Sieden (bietou Diskussionssieden, Foarloagen usw.) tou truchsäiken of sield dän Noome fon dän truchtousäikende Noomensruum.",
'search-nonefound' => 'Foar dien Säikanfroage wuuden neen Resultoate fuunen.',
'powersearch' => 'Fääre säike',
@@ -971,93 +983,131 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'powersearch-ns' => 'Säik in Noomensruume:',
'powersearch-redir' => 'Fäärelaitengen anwiese',
'powersearch-field' => 'Säik ätter:',
+'powersearch-togglelabel' => 'Wääl uut:',
+'powersearch-toggleall' => 'Aal',
+'powersearch-togglenone' => 'Neen',
'search-external' => 'Externe Säike',
'searchdisabled' => 'Ju {{SITENAME}} Fultextsäike is weegen Uurläästenge apstuuns deaktivierd. Du koast insteede deerfon ne Google- of Yahoo-Säike startje. Do Resultoate foar {{SITENAME}} speegelje oawers nit uunbedingd dän aktuällen Stand wier.',
+# Quickbar
+'qbsettings' => 'Siedenlieste',
+'qbsettings-none' => 'Naan',
+'qbsettings-fixedleft' => 'Links, fääst',
+'qbsettings-fixedright' => 'Gjuchts, fääst',
+'qbsettings-floatingleft' => 'Links, swieuwjend',
+'qbsettings-floatingright' => 'Gjuchts, swieuwjend',
+
# Preferences page
-'preferences' => 'Ienstaalengen',
-'mypreferences' => 'Ienstaalengen',
-'prefs-edits' => 'Antaal Beoarbaidengen:',
-'prefsnologin' => 'Nit anmälded',
-'prefsnologintext' => 'Du moast <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} anmälded]</span> weese, uum dien Ienstaalengen annerje tou konnen.',
-'prefsreset' => 'Ienstaalengen wuuden ap Standoard touräächsät.',
-'qbsettings' => 'Siedenlieste',
-'qbsettings-none' => 'Naan',
-'qbsettings-fixedleft' => 'Links, fääst',
-'qbsettings-fixedright' => 'Gjuchts, fääst',
-'qbsettings-floatingleft' => 'Links, swieuwjend',
-'qbsettings-floatingright' => 'Gjuchts, swieuwjend',
-'changepassword' => 'Paaswoud annerje',
-'skin' => 'Skin',
-'skin-preview' => 'Foarschau',
-'math' => 'TeX',
-'dateformat' => 'Doatumsformoat',
-'datedefault' => 'Neen Preferenz',
-'datetime' => 'Doatum un Tied',
-'math_failure' => 'Parser-Failer',
-'math_unknown_error' => 'Uunbekoande Failer',
-'math_unknown_function' => 'Uunbekoande Funktion',
-'math_lexing_error' => "'Lexing'-Failer",
-'math_syntax_error' => 'Syntaxfailer',
-'math_image_error' => 'ju PNG-Konvertierenge sluuch fail',
-'math_bad_tmpdir' => 'Kon dät Temporärferteeknis foar mathematiske Formeln nit anlääse of beschrieuwe.',
-'math_bad_output' => 'Kon dät Sielferteeknis foar mathematiske Formeln nit anlääse of beschrieuwe.',
-'math_notexvc' => 'Dät texvc-Program kon nit fuunen wäide. Beoachte jädden math/README.',
-'prefs-personal' => 'Benutserdoaten',
-'prefs-rc' => 'Bekoandreekenge fon "Lääste Annerengen"',
-'prefs-watchlist' => 'Beooboachtengslieste',
-'prefs-watchlist-days' => 'Antaal fon Deege, do ju Beooboachtengslieste standoardmäitich uumfoatje schäl:',
-'prefs-watchlist-days-max' => '(Maximoal 7 Deege)',
-'prefs-watchlist-edits' => 'Maximoale Antaal fon Iendraage in ju fergratterde Beooboachtengslieste:',
-'prefs-watchlist-edits-max' => '(Maximoale Antaal: 1000)',
-'prefs-misc' => 'Ferscheedene Ienstaalengen',
-'prefs-resetpass' => 'Paaswoud annerje',
-'saveprefs' => 'Ienstaalengen spiekerje',
-'resetprefs' => 'Nit spiekerde Annerengen fersmiete',
-'restoreprefs' => 'Aal Standoard-Ienstaalengen wier häärstaale',
-'textboxsize' => 'Beoarbaidje',
-'prefs-edit-boxsize' => 'Grööte fon dät Beoarbaidengsfinster:',
-'rows' => 'Riegen',
-'columns' => 'Spalten',
-'searchresultshead' => 'Säike (010)',
-'resultsperpage' => 'Träffere pro Siede:',
-'contextlines' => 'Teekene pro Träffer:',
-'contextchars' => 'Teekene pro Riege:',
-'stub-threshold' => '<a href="#" class="stub">Kuute Artikkele</a> markierje bi (in Byte):',
-'recentchangesdays' => 'Antaal fon Deege, do ju Lieste fon „Lääste Annerengen“ standoardmäitich uumfoatje schäl:',
-'recentchangesdays-max' => '(Maximoal $1 {{PLURAL:$1|Dai|Deege}})',
-'recentchangescount' => 'Antaal fon do Iendraage in ju Lieste fon do lääste Annerengen, ju Versionsgeschichte un do Logbouke:',
-'savedprefs' => 'Dien Ienstaalengen wuuden spiekerd.',
-'timezonelegend' => 'Tiedzone:',
-'timezonetext' => '¹Reek ju Antaal fon Uuren ien, do twiske Jou Tiedzone un UPC lääse.',
-'localtime' => 'Tied bie Jou:',
-'timezoneselect' => 'Tiedzone:',
-'timezoneuseserverdefault' => 'Standoardtied fon dän Server',
-'timezoneuseoffset' => 'Uur (Unnerscheed anreeke)',
-'timezoneoffset' => 'Unnerscheed¹:',
-'servertime' => 'Tied ap dän Server:',
-'guesstimezone' => 'Ienföigje uut dän Browser',
-'timezoneregion-africa' => 'Afrikoa',
-'timezoneregion-america' => 'Amerikoa',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlantisken Ozeoan',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indisken Ozeoan',
-'timezoneregion-pacific' => 'Pazifisken Ozeoan',
-'allowemail' => 'Emails fon uur Benutsere kriegen',
-'prefs-searchoptions' => 'Säikoptione',
-'prefs-namespaces' => 'Noomensruume',
-'defaultns' => 'In disse Noomensruume schäl standoardmäitich soacht wäide:',
-'default' => 'Standoardienstaalenge',
-'files' => 'Doatäie',
-'prefs-custom-css' => 'Benutserdefinierde CSS',
-'prefs-custom-js' => 'Benutserdefinierd JS',
+'preferences' => 'Ienstaalengen',
+'mypreferences' => 'Ienstaalengen',
+'prefs-edits' => 'Antaal Beoarbaidengen:',
+'prefsnologin' => 'Nit anmälded',
+'prefsnologintext' => 'Du moast <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anmälded]</span> weese, uum dien Ienstaalengen annerje tou konnen.',
+'changepassword' => 'Paaswoud annerje',
+'prefs-skin' => 'Skin',
+'skin-preview' => 'Foarschau',
+'prefs-math' => 'TeX',
+'datedefault' => 'Neen Preferenz',
+'prefs-datetime' => 'Doatum un Tied',
+'prefs-personal' => 'Benutserdoaten',
+'prefs-rc' => 'Bekoandreekenge fon "Lääste Annerengen"',
+'prefs-watchlist' => 'Beooboachtengslieste',
+'prefs-watchlist-days' => 'Antaal fon Deege, do ju Beooboachtengslieste standoardmäitich uumfoatje schäl:',
+'prefs-watchlist-days-max' => '(Maximoal 7 Deege)',
+'prefs-watchlist-edits' => 'Maximoale Antaal fon Iendraage in ju fergratterde Beooboachtengslieste:',
+'prefs-watchlist-edits-max' => '(Maximoale Antaal: 1000)',
+'prefs-watchlist-token' => 'Beooboachtengslieste-Token:',
+'prefs-misc' => 'Ferscheedene Ienstaalengen',
+'prefs-resetpass' => 'Paaswoud annerje',
+'prefs-email' => 'E-Mail-Optione',
+'prefs-rendering' => 'Wo dät uutsjucht',
+'saveprefs' => 'Ienstaalengen spiekerje',
+'resetprefs' => 'Nit spiekerde Annerengen fersmiete',
+'restoreprefs' => 'Aal Standoard-Ienstaalengen wier häärstaale',
+'prefs-editing' => 'Beoarbaidje',
+'prefs-edit-boxsize' => 'Grööte fon dät Beoarbaidengsfinster:',
+'rows' => 'Riegen',
+'columns' => 'Spalten',
+'searchresultshead' => 'Säike (010)',
+'resultsperpage' => 'Träffere pro Siede:',
+'contextlines' => 'Teekene pro Träffer:',
+'contextchars' => 'Teekene pro Riege:',
+'stub-threshold' => '<a href="#" class="stub">Kuute Artikkele</a> markierje bi (in Byte):',
+'recentchangesdays' => 'Antaal fon Deege, do ju Lieste fon „Lääste Annerengen“ standoardmäitich uumfoatje schäl:',
+'recentchangesdays-max' => '(Maximoal $1 {{PLURAL:$1|Dai|Deege}})',
+'recentchangescount' => 'Antaal fon do standoardmäitich anwiesde Beoarbaidengen:',
+'prefs-help-recentchangescount' => 'Dit uumfoatet ju Lieste fon do lääste Annerengen, ju Versionsgeschichte un do Logbouke.',
+'prefs-help-watchlist-token' => 'Dät Uutfällen fon dit Fäild mäd ne stilkene Koaie generiert n RSS-Feed foar dien Beooboachtengslieste.
+Älk, die disse Koaie koant, kon dien Beooboachtengslieste iensjo. Wääl also n sicheren Wäid.
+Hier n toufällich generierden Wäid, dän du ferweende koast: $1',
+'savedprefs' => 'Dien Ienstaalengen wuuden spiekerd.',
+'timezonelegend' => 'Tiedzone:',
+'localtime' => 'Tied bie Jou:',
+'timezoneuseserverdefault' => 'Standoardtied fon dän Server',
+'timezoneuseoffset' => 'Uur (Unnerscheed anreeke)',
+'timezoneoffset' => 'Unnerscheed¹:',
+'servertime' => 'Tied ap dän Server:',
+'guesstimezone' => 'Ienföigje uut dän Browser',
+'timezoneregion-africa' => 'Afrikoa',
+'timezoneregion-america' => 'Amerikoa',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlantisken Ozeoan',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indisken Ozeoan',
+'timezoneregion-pacific' => 'Pazifisken Ozeoan',
+'allowemail' => 'Emails fon uur Benutsere kriegen',
+'prefs-searchoptions' => 'Säikoptione',
+'prefs-namespaces' => 'Noomensruume',
+'defaultns' => 'Uursiede in disse Noomensruume säike:',
+'default' => 'Standoardienstaalenge',
+'prefs-files' => 'Doatäie',
+'prefs-custom-css' => 'Benutserdefinierde CSS',
+'prefs-custom-js' => 'Benutserdefinierd JS',
+'prefs-reset-intro' => 'Du koast disse Siede bruuke, uum do Ienstaalengen ap do Standoarde touräächtousätten.
+Dät kon nit moor tourääch troald wäide.',
+'prefs-emailconfirm-label' => 'E-Mail-Bestäätigenge:',
+'prefs-textboxsize' => 'Grööte fon dät Beoarbaidengsfinster',
+'youremail' => 'E-Mail-Adrässe:',
+'username' => 'Benutsernoome:',
+'uid' => 'Benutser-ID:',
+'prefs-memberingroups' => 'Meeglid fon {{PLURAL:$1|ju Benutzergruppe|do Benutzergruppen}}:',
+'prefs-registration' => 'Anmäldetiedpunkt:',
+'yourrealname' => 'Dien ächte Noome:',
+'yourlanguage' => 'Sproake fon ju Benutser-Uurfläche:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Unnerschrift:',
+'prefs-help-signature' => 'Biedraage ap Diskussionssieden schuulen mäd „<nowiki>~~~~</nowiki>“ signierd wäide, wät dan in dien Signatuur mäd Tiedstämpel uumewondeld wäd.',
+'badsig' => 'Signatursyntax is uungultich; HTML uurpröiwje.',
+'badsiglength' => 'Ju Unnerschrift is tou loang.
+Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
+'yourgender' => 'Geslächt:',
+'gender-unknown' => 'Nit anroat',
+'gender-male' => 'Monnelk',
+'gender-female' => 'Wieuwelk',
+'prefs-help-gender' => 'Optionoal: Wäd foar ju geslächtskorrekte Anrääde fonsieden ju Software benutsed. Disse Information is eepentelk.',
+'email' => 'E-Mail',
+'prefs-help-realname' => 'Optional. Foar dät anärkaanende Naamen fon dien Noome in Touhoopehong mäd dien Biedraagen.',
+'prefs-help-email' => 'Ju Angoawe fon ne E-Mail-Adresse is optionoal, moaket oawers je Touseendenge muugelk fon n Ärsats-Paaswoud, wan du dien Paaswoud ferjeeten hääst.
+Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme, sunner dät du dien Identität eepenlääse hougest.',
+'prefs-help-email-required' => 'N gultige Email-Adrässe is nöödich.',
+'prefs-info' => 'Basisinformatione',
+'prefs-i18n' => 'Internationalisierenge',
+'prefs-signature' => 'Unnerschrift:',
+'prefs-dateformat' => 'Doatumsformoat',
+'prefs-timeoffset' => 'Tiedunnerscheed',
+'prefs-advancedediting' => 'Uutwiedede Optione',
+'prefs-advancedrc' => 'Uutwiedede Optione',
+'prefs-advancedrendering' => 'Uutwiedede Optione',
+'prefs-advancedsearchoptions' => 'Uutwiedede Optione',
+'prefs-advancedwatchlist' => 'Uutwiedede Optione',
+'prefs-display' => 'Anwies-Optione',
+'prefs-diffs' => 'Versionsfergliek',
# User rights
-'userrights' => 'Benutsergjuchteferwaltenge', # Not used as normal message but as header for the special page itself
+'userrights' => 'Benutsergjuchteferwaltenge',
'userrights-lookup-user' => 'Ferwaltede Gruppentouheeregaid',
'userrights-user-editname' => 'Benutsernoome anreeke:',
'editusergroup' => 'Beoarbaidede Benutsergjuchte',
@@ -1127,6 +1177,7 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'right-bigdelete' => 'Sieden läskje mäd groote Versionsgeschichte',
'right-deleterevision' => 'Läskjen un Wierhäärstaalen fon eenpelde Versione',
'right-deletedhistory' => 'Ankiekjen fon läskede Versione in ju Versionsgeschichte (sunner touheerigen Text)',
+'right-deletedtext' => 'Läskede Texte un Versionsunnerscheede twiske läskede Versione bekiekje',
'right-browsearchive' => 'Säik ätter läskede Sieden',
'right-undelete' => 'Sieden wierhäärstaale',
'right-suppressrevision' => 'Bekiekjen un wierhäärstaalen fon Versione, do uk foar Adminstratore ferbuurgen sunt',
@@ -1140,6 +1191,8 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'right-editprotected' => 'Schutsede Sieden beoarbaidje (sunner Kaskadenschuts)',
'right-editinterface' => 'Benutserinterface beoarbaidje',
'right-editusercssjs' => 'Beoarbaidjen fon CSS- un JS-Doatäie fon uur Benutsere',
+'right-editusercss' => 'Beoarbaidjen fon CSS-Doatäie fon uur Benutsere',
+'right-edituserjs' => 'Beoarbaidjen fon JS-Doatäie fon uur Benutsere',
'right-rollback' => 'Gau räägels Traalen',
'right-markbotedits' => 'Gau räägels troalde Beoarbaidengen as Bot-Beoarbaidenge markierje',
'right-noratelimit' => 'Neen Beschränkenge truch Limite',
@@ -1156,6 +1209,8 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'right-siteadmin' => 'Doatenboank speere un äntspeere',
'right-reset-passwords' => 'Dät Paaswoud fon n uur Benutser touräächsätte',
'right-override-export-depth' => 'Exportier Sieden touhoope mäd ferlinkede Sieden bit tou ne Djüpte fon 5',
+'right-versiondetail' => 'Detailinformatione uur ju Software un hiere Versionsdoaten ienkiekje',
+'right-sendemail' => 'E-Mails an uur Benutsere seende',
# User rights log
'rightslog' => 'Gjuchte-Logbouk',
@@ -1205,6 +1260,15 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
'recentchanges-legend' => 'Anwiesoptione',
'recentchangestext' => "Ap disse Siede koast du do lääste Annerengen ap '''{{SITENAME}}''' ättergunge.",
'recentchanges-feed-description' => 'Ferfoulge mäd dissen Feed do lääste Annerengen in {{SITENAME}}.',
+'recentchanges-label-legend' => 'Legende: $1.',
+'recentchanges-legend-newpage' => '$1 - näie Siede',
+'recentchanges-label-newpage' => 'Näie Siede',
+'recentchanges-legend-minor' => '$1 - litje Annerenge',
+'recentchanges-label-minor' => 'Litje Annerenge',
+'recentchanges-legend-bot' => '$1 - Annerenge truch n Bot',
+'recentchanges-label-bot' => 'Annerenge truch n Bot',
+'recentchanges-legend-unpatrolled' => '$1 - nit-kontrollierde Annerenge',
+'recentchanges-label-unpatrolled' => 'Nit-kontrollierde Annerenge',
'rcnote' => "Anwiesd {{PLURAL:$1|wäd '''1''' Annerenge|wäide do lääste '''$1''' Annerengen}} in {{PLURAL:$2|dän lääste Dai|do lääste '''$2''' Deege}} siet $5, $4.",
'rcnotefrom' => "Anwiesd wäide do Annerengen siet '''$2''' (max. '''$1''' Iendraage).",
'rclistfrom' => 'Bloot näie Annerengen siet $1 wiese.',
@@ -1232,6 +1296,8 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
# Recent changes linked
'recentchangeslinked' => 'Annerengen an ferlinkede Sieden',
+'recentchangeslinked-feed' => 'Annerengen an ferlinkede Sieden',
+'recentchangeslinked-toolbox' => 'Annerengen an ferlinkede Sieden',
'recentchangeslinked-title' => 'Annerengen an Sieden, do der fon „$1“ ferbuunden sunt',
'recentchangeslinked-noresult' => 'In dän uutwäälde Tiedruum wuuden an do ferbuundene Sieden neen Annerengen foarnuumen.',
'recentchangeslinked-summary' => "Disse Spezioalsiede liestet do lääste Annerengen fon ferbuundene Sieden ap (blw. bie Kategorien an do Meegliedere fon disse Kategorie). Sieden ap dien Beooboachtengslieste sunt '''fat''' schrieuwen.",
@@ -1241,8 +1307,8 @@ Wan du die mäd dät Thema uutkoanst, koast du sälwen ju [[:$1|Siede ferfoatje]
# Upload
'upload' => 'Hoochleede',
'uploadbtn' => 'Doatäi hoochleede',
-'reupload' => 'Fonnäien hoochleede',
'reuploaddesc' => 'Oubreeke un tourääch tou ju Hoochleede-Siede.',
+'upload-tryagain' => 'Annerde Doatäibeschrieuwenge ouseende',
'uploadnologin' => 'Nit anmälded',
'uploadnologintext' => 'Du moast [[Special:UserLogin|anmälded weese]], uum Doatäie hoochleede tou konnen.',
'upload_directory_missing' => 'Dät Upload-Ferteeknis ($1) failt un kuud truch dän Webserver uk nit moaked wäide.',
@@ -1284,6 +1350,7 @@ Beoachtje, dät, juust as bie normoale Sieden-Inhoolde, uur Benutsere dien Doat
'minlength1' => 'Bieldedoatäien mouten mindestens tjoo Bouksteeuwen foar dän (eersten) Punkt hääbe.',
'illegalfilename' => 'Die Doatäinoome "$1" änthaalt ap minste een nit toulät Teeken. Benaam jädden ju Doatäi uum un fersäik, hier fon näien hoochtouleeden.',
'badfilename' => 'Die Datäi-Noome is automatisk annerd tou "$1".',
+'filetype-mime-mismatch' => 'Doatäi-Fergratterenge stimt nit mäd dän MIME-Typ uureen.',
'filetype-badmime' => 'Doatäie mäd dän MIME-Typ „$1“ duuren nit hoochleeden wäide.',
'filetype-bad-ie-mime' => 'Disse Doatäi kon nit hoochleeden wäide, deer die Internet Explorer ju as „$1“ ärkoant, wät n nit ferlööweden potentiell gefoarelken Doatäityp is.',
'filetype-unwanted-type' => "'''„.$1“''' is n nit wonsked Doateiformoat.
@@ -1306,7 +1373,6 @@ Ju Beschrieuwengssiede moast du ätter dät Hoochleeden fon ju Doatäi noch mäd
* Noome fon ju hoochtouleedende Doatäi: '''<tt>[[:$1]]</tt>'''
* Noome fon ju anweesende Doatäi: '''<tt>[[:$2]]</tt>'''
Wääl n uur Noome.",
-'fileexists-thumb' => "<center>'''Bestoundende Doatäi'''</center>",
'fileexists-thumbnail-yes' => "Bie ju Doatäi schient et sik uum ne Bielde fon ferlitjerde Grööte ''(thumbnail)'' tou honneljen. [[$1|thumb]]
Pröif ju Doatäi '''<tt>[[:$1]]</tt>'''.
Wan et sik uum ju Bielde in Originoalgrööte honnelt, dan houget neen apaate Foarschaubielde hoochleeden tou wäiden.",
@@ -1319,6 +1385,7 @@ Wan du ju Doatäi daach hoochleede moatest, gung dan tourääch un leed dien Doa
'file-deleted-duplicate' => 'Ne identiske Doatäi fon disse Doatäi ([[$1]]) wuud fröier läsked. Wröich dät Läsklogbouk, eer du ju hoochlatst.',
'successfulupload' => 'Mäd Ärfoulch hoochleeden',
'uploadwarning' => 'Woarschauenge',
+'uploadwarning-text' => 'Annerje hierunner ju Doatäibeschrieuwenge un fersäik dät nochmoal.',
'savefile' => 'Doatäi spiekerje',
'uploadedimage' => '"[[$1]]" hoochleeden',
'overwroteimage' => 'häd ne näie Version fon „[[$1]]“ hoochleeden',
@@ -1326,11 +1393,14 @@ Wan du ju Doatäi daach hoochleede moatest, gung dan tourääch un leed dien Doa
'uploaddisabledtext' => 'Dät Hoochleeden fon Doatäie is nit muugelk.',
'php-uploaddisabledtext' => 'PHP-Doatäi-Uploads wuuden deaktivierd. Wröich ju file_uploads-Ienstaalenge.',
'uploadscripted' => 'Disse Doatäi änthaalt HTML- of Scriptcode, ju bie Fersjoon fon aan Webbrowser apfierd wäide kuude.',
-'uploadcorrupt' => 'Ju Doatäi is beschäädiged of häd n falsken Noome. Uurpröiwe jädden ju Doatäi un leede ju fonnäien hooch.',
'uploadvirus' => 'Disse Doatäi änthaalt n Virus! Details: $1',
+'upload-source' => 'Wälledoatäi',
'sourcefilename' => 'Wälledoatäi:',
+'sourceurl' => 'Wälle-URL:',
'destfilename' => 'Sielnoome:',
'upload-maxfilesize' => 'Maximoale Doatäigrööte: $1',
+'upload-description' => 'Doatäibeschrieuwenge',
+'upload-options' => 'Hoochleede-Optione',
'watchthisupload' => 'Disse Doatäi beooboachtje',
'filewasdeleted' => 'Ne Doatäi mäd dissen Noome wuude al moal hoochleeden un intwisken wier läsked. Pröif toueerst dän Iendraach in $1, eer du ju Doatäi wuddelk spiekerst.',
'upload-wasdeleted' => "'''Woarschauenge: Du laatst ne Doatäi hooch, ju der al fröier läsked wuude.'''
@@ -1340,14 +1410,42 @@ Tou Dien Information foulget dät Läsk-Logbouk mäd ju Begründenge foar ju foa
'filename-bad-prefix' => "Die Doatäinoome begint mäd '''„$1“'''. Dit is in algemeenen die fon ne Digitoalkamera foarroate Doatäinoome un deeruum nit gjucht uurtjuugend.
Reek ju Doatäi n Noome, die dän Inhoold beeter beschrift.",
-'upload-proto-error' => 'Falsk Protokol',
-'upload-proto-error-text' => 'Ju URL mout mäd <code>http://</code> of <code>ftp://</code> ounfange.',
-'upload-file-error' => 'Interne Failer',
-'upload-file-error-text' => 'Bie dät Moakjen fon ne tiedelke Doatäi ap dän Server is n internen Failer aptreeden. Informier jädden n [[Special:ListUsers/sysop|System-Administrator]].',
-'upload-misc-error' => 'Uunbekoanden Failer bie dät Hoochleeden',
-'upload-misc-error-text' => 'Bie dät Hoochleeden is n uunbekoanden Failer aptreeden.
+'upload-proto-error' => 'Falsk Protokol',
+'upload-proto-error-text' => 'Ju URL mout mäd <code>http://</code> of <code>ftp://</code> ounfange.',
+'upload-file-error' => 'Interne Failer',
+'upload-file-error-text' => 'Bie dät Moakjen fon ne tiedelke Doatäi ap dän Server is n internen Failer aptreeden. Informier jädden n [[Special:ListUsers/sysop|System-Administrator]].',
+'upload-misc-error' => 'Uunbekoanden Failer bie dät Hoochleeden',
+'upload-misc-error-text' => 'Bie dät Hoochleeden is n uunbekoanden Failer aptreeden.
Pröif ju URL ap Failere, dän Online-Stoatus fon ju Siede un fersäik et fonnäien.
Wan dät Problem fääre bestoant, informier n [[Special:ListUsers/sysop|System-Administrator]].',
+'upload-too-many-redirects' => 'Ju URL äntheeld toufuul Fääreleedengen',
+'upload-unknown-size' => 'Uunbekoande Grööte',
+'upload-http-error' => 'N HTTP-Failer is aptreeden: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Tougriep ferwäigerd',
+'img-auth-nopathinfo' => 'PATH_INFO failt.
+Dien Server is nit deerfoar iengjucht, disse Information fääretoureeken.
+Dät kuud CGI-basierd weese un unnerstutset img_auth nit.
+Sjuch http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Dät wonskede Paad is nit in dät konfigurierde Uploadferteeknis.',
+'img-auth-badtitle' => 'Uut „$1“ kon naan gultigen Tittel moaked wäide.',
+'img-auth-nologinnWL' => 'Du bäst nit anmälded un „$1“ is nit in ju wiete Lieste.',
+'img-auth-nofile' => 'Doatäi „$1“ bestoant nit.',
+'img-auth-isdir' => 'Du fersäkst, ap n Ferteeknis „$1“ toutougriepen.
+Bloot Doatäitougriep is ferlööwed.',
+'img-auth-streaming' => '„$1“ leede.',
+'img-auth-public' => 'img_auth.php rakt Doatäie fon ne privoate Wiki uut.
+Dit Wiki wuud as n eepentelk Wiki konfigurierd.
+Uut Sicherhaidsgruunde is img_auth.php deaktivierd.',
+'img-auth-noread' => 'Benutser häd neen Begjuchtigenge, „$1“ tou leesen.',
+
+# HTTP errors
+'http-invalid-url' => 'Uungultige URL:$1',
+'http-read-error' => 'HTTP-Leesefailer.',
+'http-timed-out' => 'Tied is ferron bie ju HTTP-Anfroage.',
+'http-host-unreachable' => 'URL is nit tou beloangjen',
+'http-bad-status' => 'Unner ju HTTP-Anfroage is n Failer aptreeden: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL is nit tou beloangjen',
@@ -1356,6 +1454,7 @@ Wan dät Problem fääre bestoant, informier n [[Special:ListUsers/sysop|System-
'upload-curl-error28-text' => 'Ju Siede bruukt tou loange foar ne Oantwoud. Pröif, of ju Siede online is, täif n kuuten Moment un fersäik et dan fonnäien. Dät kon sinful weese, n näien Fersäik tou ne uur Tied tou probierjen..',
'license' => 'Lizenz:',
+'license-header' => 'Lizenz',
'nolicense' => 'naan Foaruutwoal',
'license-nopreview' => '(der is neen Foarschau ferföigboar)',
'upload_source_url' => ' (gultige, eepentelk tougongelke URL)',
@@ -1374,6 +1473,7 @@ Wan dät Problem fääre bestoant, informier n [[Special:ListUsers/sysop|System-
'listfiles_count' => 'Versione',
# File description page
+'file-anchor-link' => 'Bielde',
'filehist' => 'Doatäiversione',
'filehist-help' => 'Klik ap n Tiedpunkt, uum disse Version tou leeden.',
'filehist-deleteall' => 'Aal do Versione läskje',
@@ -1388,6 +1488,7 @@ Wan dät Problem fääre bestoant, informier n [[Special:ListUsers/sysop|System-
'filehist-dimensions' => 'Höchte un Bratte',
'filehist-filesize' => 'Doatäigrööte',
'filehist-comment' => 'Kommentoar',
+'filehist-missing' => 'Doatäi failt',
'imagelinks' => 'Doatäiferweendengen',
'linkstoimage' => '{{PLURAL:$1|Ju foulgjende Siede ferwoant|Do foulgjende $1 Sieden ferweende}} disse Doatäi:',
'linkstoimage-more' => 'Moor as {{PLURAL:$1|een Siede ferlinket|$1 Sieden ferlinkje}} ap disse Doatäi.
@@ -1397,15 +1498,14 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Wiedere Ferbiendengen]] foar disse Doatäi.',
'redirectstofile' => '{{PLURAL:$1|Ju foulgjende Doatäi laitet|Do foulgjende $1 Doatäie laitje}} ap disse Doatäi fääre:',
'duplicatesoffile' => '{{PLURAL:$1|Ju foulgjende Doatäi is n Duplikoat|Do foulgjende $1 Doatäie sunt Duplikoate}} fon disse Doatäi ([[Special:FileDuplicateSearch/$2|wiedere Details]]):',
-'sharedupload' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Jädden sjuch dän $1 foar wiedere Information.',
-'shareduploadwiki-desc' => 'Hier foulget die Inhoold fon $1.',
-'shareduploadwiki-linktext' => 'Doatäi-Beschrieuwengssiede',
-'noimage' => 'Ne Doatäi mäd dissen Noome existiert nit, du koast ju oawers $1.',
-'noimage-linktext' => 'aan hoochleede',
+'sharedupload' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide.',
+'sharedupload-desc-there' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide. Sjuch ap ju [$2 Doatäibeschrieuwengssiede] ätter wiedere Informatione.',
+'sharedupload-desc-here' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide. Ju Beschrieuwenge fon ju [$2 Doatäibeschrieuwengssiede] wäd hierunner anwiesd.',
+'filepage-nofile' => 'Der bestoant neen Doatäi mäd dissen Noome.',
+'filepage-nofile-link' => 'Der bestoant neen Doatäi mäd dissen Noome, man du koast [$1 disse Doatäi hoochleede].',
'uploadnewversion-linktext' => 'Ne näie Version fon disse Doatäi hoochleede',
-'shared-repo-from' => 'uut $1', # $1 is the repository name
-'shared-repo' => 'n gemeensoam nutsed Medienarchiv', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'uut $1',
+'shared-repo' => 'n gemeensoam nutsed Medienarchiv',
# File reversion
'filerevert' => 'Touräächsätte fon "$1"',
@@ -1434,6 +1534,7 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
** Urhebergjuchtsferlätsenge
** Duplikoat',
'filedelete-edit-reasonlist' => 'Läskgruunde beoarbaidje',
+'filedelete-maintenance' => 'Dät Läskjen un Wierhäärstaalen fon Doatäie is apgruund fon Oarbaiden apstuuns deaktivierd.',
# MIME search
'mimesearch' => 'Säike ätter MIME-Typ',
@@ -1454,7 +1555,7 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
# Random page
'randompage' => 'Toufällige Siede',
-'randompage-nopages' => 'In dän Noomensruum "$1" sunt neen Sieden deer.',
+'randompage-nopages' => 'Der sunt neen Sieden in {{PLURAL:$2|dän foulgjende Noomensruum|do foulgjende Noomensruume}} äntheelden: „$1“',
# Random redirect
'randomredirect' => 'Toufällige Fäärelaitenge',
@@ -1466,6 +1567,7 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
'statistics-header-edits' => 'Beoarbaidengsstatistik',
'statistics-header-views' => 'Siedenaproupstatistik',
'statistics-header-users' => 'Benutserstatistik',
+'statistics-header-hooks' => 'Uur Statistike',
'statistics-articles' => 'Inhooldssieden',
'statistics-pages' => 'Sieden',
'statistics-pages-desc' => 'Aal Sieden in dissen Wiki, iensluutend Diskussionssieden, Fäärelaitengen usw.',
@@ -1495,8 +1597,8 @@ Ne Siede wäd as Begriepskläärengssiede behonneld, wan [[MediaWiki:Disambiguat
'brokenredirects' => 'Ferkierde Fäärelaitengen',
'brokenredirectstext' => 'Disse Spezioalsiede liestet Truchferwiese ap nit existierjende Sieden:',
-'brokenredirects-edit' => '(beoarbaidje)',
-'brokenredirects-delete' => '(läskje)',
+'brokenredirects-edit' => 'beoarbaidje',
+'brokenredirects-delete' => 'läskje',
'withoutinterwiki' => 'Sieden sunner Ferbiendengen tou uur Sproaken',
'withoutinterwiki-summary' => 'Do foulgjende Sieden ferlinkje nit ap uur Sproakversionen:',
@@ -1604,14 +1706,17 @@ Ju Uutgoawe kon truch ju Uutwoal fon dän Logbouktyp, fon dän Benutser of dän
# Special:Categories
'categories' => 'Kategorien',
-'categoriespagetext' => 'Do foulgjende Kategorien in {{SITENAME}} änthoolde Sieden of Medien.',
+'categoriespagetext' => 'Foulgjende {{PLURAL:$1|Kategorie änthoalt|Kategorien änthoolde}} Sieden of Doatäie.
+[[Special:UnusedCategories|Nit benutsede Kategorien]] wäide hier nit apfierd.
+Sjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].',
'categoriesfrom' => 'Wies Kategorien siet:',
'special-categories-sort-count' => 'Sortierenge ätter Antaal',
'special-categories-sort-abc' => 'Sortierenge ätter Alphabet',
# Special:DeletedContributions
-'deletedcontributions' => 'Läskede Benutserbiedraage',
-'deletedcontributions-title' => 'Läskede Benutserbiedraage',
+'deletedcontributions' => 'Läskede Benutserbiedraage',
+'deletedcontributions-title' => 'Läskede Benutserbiedraage',
+'sp-deletedcontributions-contribs' => 'Benutserbiedraage',
# Special:LinkSearch
'linksearch' => 'Webferbiendenge-Säike',
@@ -1626,6 +1731,16 @@ Ju Uutgoawe kon truch ju Uutwoal fon dän Logbouktyp, fon dän Benutser of dän
'listusersfrom' => 'Wies Benutsere fon:',
'listusers-submit' => 'Wies',
'listusers-noresult' => 'Naan Benutser fuunen.',
+'listusers-blocked' => '(speerd)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lieste fon aktive Benutsere',
+'activeusers-intro' => 'Dit is ne Lieste fon Benutsere, do binne {{PLURAL:$1|dän lääste Dai|do lääste $1 Deege}} Aktivitäte apwiese.',
+'activeusers-count' => '$1 {{PLURAL:$1|Beoarbaidenge|Beoarbaidengen}} in do {{PLURAL:$3|lääste 24 Uuren|fergeene $3 Deege}}',
+'activeusers-from' => 'Wies Benutsere ounfangend mäd:',
+'activeusers-hidebots' => 'Bots fersteete',
+'activeusers-hidesysops' => 'Administratore fersteete',
+'activeusers-noresult' => 'Neen Benutsere fuunen.',
# Special:Log/newusers
'newuserlogpage' => 'Näianmäldengs-Logbouk',
@@ -1636,17 +1751,23 @@ Ju Uutgoawe kon truch ju Uutwoal fon dän Logbouktyp, fon dän Benutser of dän
'newuserlog-autocreate-entry' => 'Benutserkonto wuud automatisk moaked',
# Special:ListGroupRights
-'listgrouprights' => 'Benutsergruppen-Gjuchte',
-'listgrouprights-summary' => 'Dit is ne Lieste fon do in dissen Wiki definierde Benutsergruppen un do deermäd ferbuundene Gjuchte.
+'listgrouprights' => 'Benutsergruppen-Gjuchte',
+'listgrouprights-summary' => 'Dit is ne Lieste fon do in dissen Wiki definierde Benutsergruppen un do deermäd ferbuundene Gjuchte.
Informatione uurhäär uur eenpelde Gjuchte konnen [[{{MediaWiki:Listgrouprights-helppage}}|hier]] fuunen wäide.',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Gjuchte',
-'listgrouprights-helppage' => 'Help:Gruppengjuchte',
-'listgrouprights-members' => '(Meegliedelieste)',
-'listgrouprights-addgroup' => 'Kon Benutser tou {{PLURAL:$2|disse Gruppe|disse Gruppen}} bietouföigje: $1',
-'listgrouprights-removegroup' => 'Kon Benutser uut {{PLURAL:$2|disse Gruppe|disse Gruppen}} wächhoalje: $1',
-'listgrouprights-addgroup-all' => 'Kon Benutser tou aal Gruppen bietouföigje',
-'listgrouprights-removegroup-all' => 'Kon Benutser uut aal Gruppen wächhoalje',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Bewilligd Gjucht</span>
+* <span class="listgrouprights-revoked">Äntleeken Gjucht</span>',
+'listgrouprights-group' => 'Gruppe',
+'listgrouprights-rights' => 'Gjuchte',
+'listgrouprights-helppage' => 'Help:Gruppengjuchte',
+'listgrouprights-members' => '(Meegliedelieste)',
+'listgrouprights-addgroup' => 'Kon Benutser tou {{PLURAL:$2|disse Gruppe|disse Gruppen}} bietouföigje: $1',
+'listgrouprights-removegroup' => 'Kon Benutser uut {{PLURAL:$2|disse Gruppe|disse Gruppen}} wächhoalje: $1',
+'listgrouprights-addgroup-all' => 'Kon Benutser tou aal Gruppen bietouföigje',
+'listgrouprights-removegroup-all' => 'Kon Benutser uut aal Gruppen wächhoalje',
+'listgrouprights-addgroup-self' => 'Dät oaine Benutserkonto an disse {{PLURAL:$2|Gruppe|Gruppen}} bietouföigje: $1',
+'listgrouprights-removegroup-self' => 'Dät oaine Benutserkonto uut disse {{PLURAL:$2|Gruppe|Gruppen}} wächhoalje: $1',
+'listgrouprights-addgroup-self-all' => 'Kon aal Gruppen tou dät oaine Konto bietouföigje',
+'listgrouprights-removegroup-self-all' => 'Kon aal Gruppen fon dät oaine Konto wächhoalje',
# E-mail user
'mailnologin' => 'Du bäst nit anmälded.',
@@ -1723,27 +1844,29 @@ Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede
'enotif_anon_editor' => 'Anonyme Benutser $1',
'enotif_body' => 'Ljoowe $WATCHINGUSERNAME,
-ju {{SITENAME}} Siede $PAGETITLE wuude fon $PAGEEDITOR an dän $PAGEEDITDATE $CHANGEDORCREATED, ju aktuälle Version is: $PAGETITLE_URL
+Ju {{SITENAME}} Siede $PAGETITLE wuude fon $PAGEEDITOR an dän $PAGEEDITDATE $CHANGEDORCREATED, sjuch $PAGETITLE_URL foar ju aktuälle Version.
$NEWPAGE
Touhoopefoatenge fon dän Editor: $PAGESUMMARY $PAGEMINOREDIT
-Kontakt toun Editor:
+Kontakt toun Beoarbaider:
Mail $PAGEEDITOR_EMAIL
Wiki $PAGEEDITOR_WIKI
-Deer wäide soloange neen wiedere Mails toun Bescheed soand, bit Jie ju Siede wier besäike. Ap Jou Beooboachtengssiede konnen Jie aal Markere toun Bescheed touhoope touräächsätte.
+Der wäide soloange neen wiedere Mails toun Bescheed soand, bit du ju Siede wier besoacht hääst. Ap dien Beooboachtengssiede koast du aal Markere toun Bescheed touhoope touräächsätte.
-Jou früntelke {{SITENAME}} Becheedtälsystem
+Dien früntelk {{SITENAME}} Becheedtälsystem
--
-Jou Beooboachtengslieste
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Uum do Ienstaalengen fon dien Beooboachtengslieste antoupaasjen, besäik
+{{fullurl:{{#special:Watchlist}}/edit}}
-Hälpe tou ju Benutsenge rakt
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Uum ju Siede fon dien Kontrollieste tou läskjen, besäik
+$UNWATCHURL
+
+Touräächmäldengen un wiedere Hälpe: {{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Siede läskje',
@@ -1754,9 +1877,10 @@ Hälpe tou ju Benutsenge rakt
'exblank' => 'Siede waas loos',
'delete-confirm' => 'Läskjen fon „$1“',
'delete-legend' => 'Läskje',
-'historywarning' => 'WOARSCHAUENGE: Ju Siede, ju du läskje moatest, häd ne Versionsgeschichte: &nbsp;',
+'historywarning' => "'''Woarschauenge:''' Ju Siede, ju du läskje moatest, häd ne Versionsgeschichte mäd sowät $1 {{PLURAL:$1|Version|Versione}}:",
'confirmdeletetext' => 'Jie sunt deerbie, n Artikkel of ne Bielde un aal allere Versione foar altied uut dän Doatenboank tou läskjen. Bitte bestäätigje Jie Jou Apsicht, dät tou dwoon, dät Jie Jou do Konsekwänsen bewust sunt, un dät Jie in Uureenstämmenge mäd uus [[{{MediaWiki:Policy-url}}]] honnelje.',
'actioncomplete' => 'Aktion be-eended',
+'actionfailed' => 'Aktion misglukked',
'deletedtext' => '"<nowiki>$1</nowiki>" wuude läsked.
In $2 fiende Jie ne Lieste fon do lääste Läskengen.',
'deletedarticle' => '"$1" wuude läsked',
@@ -1777,18 +1901,19 @@ In $2 fiende Jie ne Lieste fon do lääste Läskengen.',
'delete-warning-toobig' => 'Disse Siede häd mäd moor as $1 {{PLURAL:$1|Version|Versione}} ne gjucht loange Versionsgeschichte. Dät Läskjen kon tou Stöörengen in {{SITENAME}} fiere.',
# Rollback
-'rollback' => 'Touräächsätten fon do Annerengen',
-'rollback_short' => 'Touräächsätte',
-'rollbacklink' => 'touräächsätte',
-'rollbackfailed' => 'Touräächsätten misglukked',
-'cantrollback' => 'Disse Annerenge kon nit touräächstoald wäide; deer et naan fröieren Autor rakt.',
-'alreadyrolled' => 'Dät Touräächsätten fon do Annerengen fon [[User:$2|$2]] ([[User talk:$2|Diskussion]], [[Special:Contributions/$2|{{int:contribslink}}]]) an Siede [[:$1]] hied naan Ärfoulch, deer in ju Twiskentied al n uur Benutser Annerengen an disse Siede foarnuumen häd.
+'rollback' => 'Touräächsätten fon do Annerengen',
+'rollback_short' => 'Touräächsätte',
+'rollbacklink' => 'touräächsätte',
+'rollbackfailed' => 'Touräächsätten misglukked',
+'cantrollback' => 'Disse Annerenge kon nit touräächstoald wäide; deer et naan fröieren Autor rakt.',
+'alreadyrolled' => 'Dät Touräächsätten fon do Annerengen fon [[User:$2|$2]] ([[User talk:$2|Diskussion]], [[Special:Contributions/$2|{{int:contribslink}}]]) an Siede [[:$1]] hied naan Ärfoulch, deer in ju Twiskentied al n uur Benutser Annerengen an disse Siede foarnuumen häd.
Ju lääste Annerenge stamt fon [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ju Annerengs-Touhoopefoatenge waas: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Tounichte moakede Beoarbaidengen fon [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) tou ju lääste Version fon [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Do Annerengen fon $1 wuuden tourääch annerd un ju lääste Version fon $2 wuude wier moaked.',
-'sessionfailure' => 'Dät roat n Problem mäd ju Uurdreegenge fon dien Benutserdoaten. Disse Aktion wuude deeruum sicherheidshoolwe oubreeken, uum ne falske Touoardnenge fon dien Annerengen tou n uur Benutser tou ferhinnerjen. Gung jädden tourääch un fersäik dän Foargong fonnäien uuttoufieren.',
+'editcomment' => "Ju Annerengs-Touhoopefoatenge waas: \"''\$1''\".",
+'revertpage' => 'Tounichte moakede Beoarbaidengen fon [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) tou ju lääste Version fon [[User:$1|$1]]',
+'revertpage-nouser' => 'Annerengen fon (Benutsernoome wächhoald) touräächtroald un lääste Version fon [[User:$1|$1]] wier häärstoald',
+'rollback-success' => 'Do Annerengen fon $1 wuuden tourääch annerd un ju lääste Version fon $2 wuude wier moaked.',
+'sessionfailure' => 'Dät roat n Problem mäd ju Uurdreegenge fon dien Benutserdoaten. Disse Aktion wuude deeruum sicherheidshoolwe oubreeken, uum ne falske Touoardnenge fon dien Annerengen tou n uur Benutser tou ferhinnerjen. Gung jädden tourääch un fersäik dän Foargong fonnäien uuttoufieren.',
# Protect
'protectlogpage' => 'Siedenschuts-Logbouk',
@@ -1805,7 +1930,7 @@ Sjuch [[Special:ProtectedPages|Schutsede Siede]] foar moor Informatione.',
'protectexpiry' => 'Speerduur:',
'protect_expiry_invalid' => 'Ju ienroate Duur is uungultich.',
'protect_expiry_old' => 'Ju Speertied lait in ju fergeene Tied.',
-'protect-unchain' => 'Ferschuuweschuts annerje',
+'protect-unchain-permissions' => 'Fröiere Speeroptione aphieuwje',
'protect-text' => "Hier koast du dän Schutsstoatus foar ju Siede '''<nowiki>$1</nowiki>''' ienkiekje un annerje.",
'protect-locked-blocked' => "Du koast dän Siedenschuts nit annerje, deer dien Benutserkonto speerd is. Hier sunt do aktuelle Siedenschuts-Ienstaalengen foar ju Siede '''„$1“:'''",
'protect-locked-dblock' => "Ju Doatenboank is speerd, die Siedenschuts kon deeruum nit annerd wäide. Hier sunt do aktuelle Siedenschuts-Ienstaalengen foar ju Siede '''„$1“:'''",
@@ -1831,7 +1956,7 @@ Sjuch [[Special:ProtectedPages|Schutsede Siede]] foar moor Informatione.',
** Oafte ienbuundene Foarloage
** Siede mäd hooge Besäikertaal',
'protect-edit-reasonlist' => 'Schutsgruunde beoarbaidje',
-'protect-expiry-options' => '1 Uure:1 hour,1 Dai:1 day,1 Wiek:1 week,2 Wieke:2 weeks,1 Mound:1 month,3 Mounde:3 months,6 Mounde:6 months,1 Jier:1 year,Uunbestimd:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 Uure:1 hour,1 Dai:1 day,1 Wiek:1 week,2 Wieke:2 weeks,1 Mound:1 month,3 Mounde:3 months,6 Mounde:6 months,1 Jier:1 year,Uunbestimd:infinite',
'restriction-type' => 'Schutsstoatus',
'restriction-level' => 'Schutshöchte',
'minimum-size' => 'Minstgrööte',
@@ -1871,6 +1996,7 @@ Die aktuelle Text fon ju läskede Siede is bloot Administratore tougongelk.',
'undelete-nodiff' => 'Neen foargungende Version fuunen.',
'undeletebtn' => 'Wier häärstaale',
'undeletelink' => 'bekiekje/wier häärstaale',
+'undeleteviewlink' => 'bekiekje',
'undeletereset' => 'Oubreeke',
'undeleteinvert' => 'Uutwoal uumekiere',
'undeletecomment' => 'Gruund:',
@@ -1908,19 +2034,23 @@ $1',
'contributions-title' => 'Benutserbiedraage fon „$1“',
'mycontris' => 'Oaine Biedraage',
'contribsub2' => 'Foar $1 ($2)',
-'nocontribs' => 'Deer wuuden neen Annerengen foar disse Kriterien fuunen.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Deer wuuden neen Annerengen foar disse Kriterien fuunen.',
'uctop' => '(aktuäl)',
'month' => 'un Mound:',
'year' => 'bit Jier:',
-'sp-contributions-newbies' => 'Wies bloot Biedraage fon näie Benutsere',
-'sp-contributions-newbies-sub' => 'Foar Näilinge',
-'sp-contributions-newbies-title' => 'Benutserbiedraage fon näie Benutsere',
-'sp-contributions-blocklog' => 'Speerlogbouk',
-'sp-contributions-logs' => 'Logbouke',
-'sp-contributions-search' => 'Säike ätter Benutserbiedraage',
-'sp-contributions-username' => 'IP-Adrässe af Benutsernoome:',
-'sp-contributions-submit' => 'Säike (014)',
+'sp-contributions-newbies' => 'Wies bloot Biedraage fon näie Benutsere',
+'sp-contributions-newbies-sub' => 'Foar Näilinge',
+'sp-contributions-newbies-title' => 'Benutserbiedraage fon näie Benutsere',
+'sp-contributions-blocklog' => 'Speerlogbouk',
+'sp-contributions-deleted' => 'Läskede Benutserbiedraage',
+'sp-contributions-logs' => 'Logbouke',
+'sp-contributions-talk' => 'Diskussion',
+'sp-contributions-userrights' => 'Benutsergjuchteferwaltenge',
+'sp-contributions-blocked-notice' => 'Dissen Benutser is apstuuns speerd. Hier foulget die aktuelle Iendraach uut dät Benutser-Logbouk:',
+'sp-contributions-search' => 'Säike ätter Benutserbiedraage',
+'sp-contributions-username' => 'IP-Adrässe af Benutsernoome:',
+'sp-contributions-submit' => 'Säike (014)',
# What links here
'whatlinkshere' => 'Links ap disse Siede',
@@ -1943,6 +2073,7 @@ $1',
# Block/unblock
'blockip' => 'Blokkierje Benutser',
+'blockip-title' => 'Benutser speere',
'blockip-legend' => 'IP-Adresse/Benutser speere',
'blockiptext' => 'Mäd dit Formular speerst du ne IP-Adresse of n Benutsernoome, so dät fon deer neen Annerengen moor foarnuumen wäide konnen.
Dit schuul bloot geböäre, uum Vandalismus tou ferhinnerjen un in Uureenstimmenge mäd do [[{{MediaWiki:Policy-url}}|Gjuchtlienjen]].
@@ -1966,7 +2097,7 @@ Reek dän Gruund foar ju Speere oun.',
'ipbenableautoblock' => 'Speer ju aktuell fon dissen Benutser nutsede IP-Adresse as uk automatisk aal foulgjende, fon do uut hie Beoarbaidengen of dät Anlääsen fon Benutseraccounts fersäkt',
'ipbsubmit' => 'Adrässe blokkierje',
'ipbother' => 'Uur Duur (ängelsk):',
-'ipboptions' => '2 Uuren:2 hours,1 Dai:1 day,3 Deege:3 days,1 Wiek:1 week,2 Wieke:2 weeks,1 Mound:1 month,3 Mounde:3 months,6 Mounde:6 months,1 Jier:1 year,Uunbestimd:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 Uuren:2 hours,1 Dai:1 day,3 Deege:3 days,1 Wiek:1 week,2 Wieke:2 weeks,1 Mound:1 month,3 Mounde:3 months,6 Mounde:6 months,1 Jier:1 year,Uunbestimd:infinite',
'ipbotheroption' => 'Uur Duur',
'ipbotherreason' => 'Uur/additionelle Begründenge:',
'ipbhidename' => 'Benutsernoome in Beoarbaidengen un Liesten ferstopje.',
@@ -1995,9 +2126,11 @@ Reek dän Gruund foar ju Speere oun.',
'ipblocklist-sh-tempblocks' => '$1 tiedwiese Speeren',
'ipblocklist-sh-addressblocks' => '$1 IP-Speeren',
'ipblocklist-submit' => 'Säike (015)',
+'ipblocklist-localblock' => 'Lokoale Speere',
+'ipblocklist-otherblocks' => 'Uur {{PLURAL:$1|Speere|Speeren}}',
'blocklistline' => '$1, $2 blokkierde $3 ($4)',
'infiniteblock' => 'uunbegränsed',
-'expiringblock' => '$1',
+'expiringblock' => 'eendet an dän $1 uum $2 Uure',
'anononlyblock' => 'bloot Anonyme',
'noautoblockblock' => 'Autoblock deaktivierd',
'createaccountblock' => 'Dät Moakjen fon Benutserkonten speerd',
@@ -2011,7 +2144,9 @@ Reek dän Gruund foar ju Speere oun.',
'contribslink' => 'Biedraage',
'autoblocker' => 'Du wierst blokkierd, deer du eene IP-Adrässe mäd "[[User:$1|$1]]" benutsjen dääst. Foar ju Blokkierenge fon dän Benutser waas as Gruund anroat: "$2".',
'blocklogpage' => 'Benutserblokkoaden-Logbouk',
-'blocklog-fulllog' => 'Fulboodich Benutserspeer-Logbouk',
+'blocklog-showlog' => 'Dissen Benutser wuud al eer speerd. Hier foulget die Iendraach uut dät Benutserspeer-Logbouk:',
+'blocklog-showsuppresslog' => 'Dissen Benutser wuud al eer speerd un ferstat.
+Hier foulget die Iendraach uut dät Unnerdrukkengs-Logbouk:',
'blocklogentry' => '[[$1]] blokkierd foar n Tiedruum fon: $2 $3',
'reblock-logentry' => 'annerde ju Speere foar „[[$1]]“ foar dän Tiedruum: $2 $3',
'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere. Ju Sunnersiede fiert aal aktuäl speerde Benutsere ap, iensluutend automatisk blokkierde IP-Adrässe.',
@@ -2030,9 +2165,11 @@ Reek dän Gruund foar ju Speere oun.',
'ipb_already_blocked' => '„$1“ wuude al speerd.',
'ipb-needreblock' => '== Speere is al deer ==
„$1“ is al speerd. Moatest du do Speerparametere annerje?',
+'ipb-otherblocks-header' => 'Uur {{PLURAL:$1|Speere|Speeren}}',
'ipb_cant_unblock' => 'Failer: Speer-ID $1 nit fuunen. Ju Speere wuude al aphieuwed.',
'ipb_blocked_as_range' => 'Failer: Ju IP-Adresse $1 wuude as Deel fon ju Beräksspeere $2 indirekt speerd. Ne Äntspeerenge fon $1 alleene is nit muugelk.',
'ip_range_invalid' => 'Uungultige IP-Adräsberäk.',
+'ip_range_toolarge' => 'Adräsberäkke, do der gratter sunt as /$1, sunt nit ferlööwed.',
'blockme' => 'Speer mie',
'proxyblocker' => 'Proxy blokker',
'proxyblocker-disabled' => 'Disse Funktion is deaktivierd.',
@@ -2041,6 +2178,7 @@ Reek dän Gruund foar ju Speere oun.',
'sorbsreason' => 'Dien IP-Adrässe is in ju DNSBL fon {{SITENAME}} as eepene PROXY liested.',
'sorbs_create_account_reason' => 'Dien IP-Adrässe is in ju DNSBL fon {{SITENAME}} as eepene PROXY liested. Du koast neen Benutser-Account anlääse.',
'cant-block-while-blocked' => 'Du duurst neen uur Benutsere speere, wan du sälwen speerd bäst.',
+'cant-see-hidden-user' => 'Die Benutser, dän du fersäkst tou speeren, wuud al speerd un ferstat. Deer du dät „hideuser“-Gjucht nit hääst, koast du ju Benutserspeere nit sjo un nit beoarbaidje.',
# Developer tools
'lockdb' => 'Doatenboank speere',
@@ -2080,6 +2218,7 @@ wääs die deeruum sicher, dät du do Konsequenzen deerfon iensjuchst, eer du f
In disse Falle moast du ju Siede, wan wonsked, fon Hounde ferschuuwe. Jädden dän '''näie''' Tittel unner '''Siel''' iendreege, deerunner ju Uumnaamenge jädden '''begründje'''.",
'movearticle' => 'Siede ferschuuwe:',
+'moveuserpage-warning' => "'''Woarschauenge:''' Du bäst tougong, ne Benutserssiede tou ferschuuwen. Betoank, dät deertruch bloot ju Benutsersiede ferschäuwen, man '''nit''' die Benutser uumenaamd wäd.",
'movenologin' => 'Du bäst nit anmälded',
'movenologintext' => 'Du moast n registrierden Benutser un [[Special:UserLogin|anmälded]] weese, uum ne Siede ferschuuwe tou konnen.',
'movenotallowed' => 'Du hääst neen Begjuchtigenge, Sieden tou ferschuuwen.',
@@ -2090,7 +2229,7 @@ In disse Falle moast du ju Siede, wan wonsked, fon Hounde ferschuuwe. Jädden d
'move-watch' => 'Disse Siede beooboachtje',
'movepagebtn' => 'Siede ferschuuwe',
'pagemovedsub' => 'Ferschuuwenge mäd Ärfoulch',
-'movepage-moved' => "'''Ju Siede „$1“ wuude ätter „$2“ ferschäuwen.'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Ju Siede „$1“ wuude ätter „$2“ ferschäuwen.'''",
'movepage-moved-redirect' => 'Der wuud ne Fäärelaitenge moaked.',
'movepage-moved-noredirect' => 'Dät Moakjen fon ne Fäärelaitenge wuud unnerdrukt.',
'articleexists' => 'Dät rakt al n Siede mäd disse Noome, of uurs is die Noome dän du anroat hääst, nit toulät.
@@ -2132,6 +2271,12 @@ Moatest du him foar ju Ferschuuwenge läskje?',
'imageinvalidfilename' => 'Die Siel-Doatäinoome is nit gultich',
'fix-double-redirects' => 'Ätter dät Ferschuuwen dubbelde Fäärelaitengen aplööse',
'move-leave-redirect' => 'Fäärelaitenge moakje',
+'protectedpagemovewarning' => "'''Woarschauenge:''' Disse Siede wuud speerd, so dät ju bloot fon Benutsere mäd Administratoregjuchte ferschäuwen wäide kon. Foar Information foulget die aktuelle Logboukiendraach:",
+'semiprotectedpagemovewarning' => "'''Waiwiesenge:''' Disse Siede wuud speerd, so dät ju bloot fon anmäldede Benutsere ferschäuwen wäide kon. Foar Information foulget die aktuelle Logboukiendraach:",
+'move-over-sharedrepo' => '==Doatäi bestoant==
+[[:$1]] bestoant in n gemeensoam nutsed Repositorium. Dät Ferschuuwen fon ne Doatäi tou dissen Tittel uurschrift ju gemeensoam nutsede Doatäi.',
+'file-exists-sharedrepo' => 'Die wäälde Doatäinoome wuud al in n gemeensoam nutsed Repositorium ferwoand.
+Wääl n uur Noome.',
# Export
'export' => 'Sieden exportierje',
@@ -2154,15 +2299,21 @@ Alternativ is die Export uk mäd de Syntax [[{{#Special:Export}}/{{MediaWiki:Mai
'export-pagelinks' => 'Ferlinkede Sieden automatisk mee exportierje, bit tou ju Rekursionsjupte fon:',
# Namespace 8 related
-'allmessages' => 'Aal Ättergjuchte',
-'allmessagesname' => 'Noome',
-'allmessagesdefault' => 'Standardtext',
-'allmessagescurrent' => 'Dissen Text',
-'allmessagestext' => 'Dit is ne Lieste fon aal System-Ättergjuchte do in dän MediaWiki-Noomenruum tou Ferföigenge stounde.
+'allmessages' => 'Aal Ättergjuchte',
+'allmessagesname' => 'Noome',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Dissen Text',
+'allmessagestext' => 'Dit is ne Lieste fon aal System-Ättergjuchte do in dän MediaWiki-Noomenruum tou Ferföigenge stounde.
Besäik jädden [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [http://translatewiki.net translatewiki.net], wan du mee-oarbaidje wolt an ju MediaWiki-Sortierenge.',
-'allmessagesnotsupportedDB' => 'Disse Spezioalsiede stoant nit tou Ferföigenge, deer ju uur dän Parameter <tt>$wgUseDatabaseMessages</tt> deaktivierd wuude.',
-'allmessagesfilter' => 'Ättergjuchtennoomensfilter:',
-'allmessagesmodified' => 'Bloot annerde wiese',
+'allmessagesnotsupportedDB' => 'Disse Spezioalsiede stoant nit tou Ferföigenge, deer ju uur dän Parameter <tt>$wgUseDatabaseMessages</tt> deaktivierd wuude.',
+'allmessages-filter-legend' => 'Sieuwe',
+'allmessages-filter' => 'Sieuwe foar anpaaseden Toustand:',
+'allmessages-filter-unmodified' => 'Uunferannerd',
+'allmessages-filter-all' => 'Aal',
+'allmessages-filter-modified' => 'Ferannerd',
+'allmessages-prefix' => 'Präfix-Sieuwe:',
+'allmessages-language' => 'Sproake:',
+'allmessages-filter-submit' => 'Loos',
# Thumbnails
'thumbnail-more' => 'fergratterje',
@@ -2172,6 +2323,9 @@ Besäik jädden [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisati
'djvu_no_xml' => 'XML-Doaten konnen foar ju DjVu-Doatei nit ouruupen wäide',
'thumbnail_invalid_params' => 'Uungultige Thumbnail-Parameter',
'thumbnail_dest_directory' => 'Sielferteeknis kon nit moaked wäide.',
+'thumbnail_image-type' => 'Bieldetyp nit unnerstutsed',
+'thumbnail_gd-library' => 'Uunfulboodige Konfiguration fon ju GD-Bibliothek: Failjende Funktion $1',
+'thumbnail_image-missing' => 'Doatäi schient tou misjen: $1',
# Special:Import
'import' => 'Sieden importierje',
@@ -2235,6 +2389,7 @@ Aal Transwiki-Import-Aktione wäide in dät [[Special:Log/import|Import-Logbouk]
'tooltip-ca-viewsource' => 'Disse Siede is schutsed. Die Wältext kon ankieked wäide.',
'tooltip-ca-history' => 'Fröiere Versione fon disse Siede',
'tooltip-ca-protect' => 'Disse Siede schutsje',
+'tooltip-ca-unprotect' => 'Disse Siede fräireeke',
'tooltip-ca-delete' => 'Disse Siede läskje',
'tooltip-ca-undelete' => 'Iendraage wier moakje, eer disse Siede läsked wuude',
'tooltip-ca-move' => 'Disse Siede ferschuuwe',
@@ -2245,6 +2400,7 @@ Aal Transwiki-Import-Aktione wäide in dät [[Special:Log/import|Import-Logbouk]
'tooltip-search-fulltext' => 'Säik ätter Sieden, do der dissen Text änthoolde',
'tooltip-p-logo' => 'Haudsiede',
'tooltip-n-mainpage' => 'Haudsiede anwiese',
+'tooltip-n-mainpage-description' => 'Haudsiede besäike',
'tooltip-n-portal' => 'Uur dät Portoal, wät du dwo koast, wier wät tou fienden is',
'tooltip-n-currentevents' => 'Bäätergruundinformationen tou aktuelle Geböärnisse',
'tooltip-n-recentchanges' => 'Lieste fon do lääste Annerengen in {{SITENAME}}.',
@@ -2297,10 +2453,12 @@ Aal Transwiki-Import-Aktione wäide in dät [[Special:Log/import|Import-Logbouk]
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymen Benutser|Anonyme Benutsere}} ap {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Benutser $1',
-'lastmodifiedatby' => 'Disse Siede wuude toulääst annerd uum $2, $1 fon $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Anonymen {{SITENAME}}-Benutser $1',
+'lastmodifiedatby' => 'Disse Siede wuude toulääst annerd uum $2, $1 fon $3.',
'othercontribs' => 'Basierd ap ju Oarbaid fon $1.',
'others' => 'uur',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|Benutser|Benutsere}} $1',
+'anonusers' => '{{PLURAL:$2|anonymen|anonyme}} {{SITENAME}}-{{PLURAL:$2|Benutser|Benutsere}} $1',
'creditspage' => 'Siedenstatistik',
'nocredits' => 'Foar disse Siede sunt neen Informationen deer.',
@@ -2328,11 +2486,22 @@ Aal Transwiki-Import-Aktione wäide in dät [[Special:Log/import|Import-Logbouk]
'mw_math_modern' => 'Antouräiden foar moderne Browsere',
'mw_math_mathml' => 'MathML',
+# Math errors
+'math_failure' => 'Parser-Failer',
+'math_unknown_error' => 'Uunbekoande Failer',
+'math_unknown_function' => 'Uunbekoande Funktion',
+'math_lexing_error' => "'Lexing'-Failer",
+'math_syntax_error' => 'Syntaxfailer',
+'math_image_error' => 'ju PNG-Konvertierenge sluuch fail',
+'math_bad_tmpdir' => 'Kon dät Temporärferteeknis foar mathematiske Formeln nit anlääse of beschrieuwe.',
+'math_bad_output' => 'Kon dät Sielferteeknis foar mathematiske Formeln nit anlääse of beschrieuwe.',
+'math_notexvc' => 'Dät texvc-Program kon nit fuunen wäide. Beoachte jädden math/README.',
+
# Patrolling
'markaspatrolleddiff' => 'As pröiwed markierje',
'markaspatrolledtext' => 'Dissen Artikkel as pröiwed markierje',
'markedaspatrolled' => 'As pröiwed markierd',
-'markedaspatrolledtext' => 'Ju uutwoalde Artikkelannerenge wuude as pröiwed markierd.',
+'markedaspatrolledtext' => 'Ju uutwäälde Version fon [[:$1|S1]] wuude as wröiged markierd.',
'rcpatroldisabled' => 'Pröiwenge fon do lääste Annerengen speerd',
'rcpatroldisabledtext' => 'Ju Pröiwenge fon do lääste Annerengen ("Recent Changes Patrol") is apstuuns speerd.',
'markedaspatrollederror' => 'Markierenge as „kontrollierd“ nit muugelk.',
@@ -2362,12 +2531,9 @@ $1',
'previousdiff' => '← Tou ne allere Version',
'nextdiff' => 'Tou ne näiere Version →',
-# Visual comparison
-'visual-comparison' => 'Visuellen Fergliek',
-
# Media information
'mediawarning' => "'''Woarschauenge:''' Disse Oard fon Doatäi kon n schoadelken Programcode änthoolde. Truch dät Deelleeden un Eepenjen fon disse Doatäi kon dän Computer Schoade toubroacht wäide.",
-'imagemaxsize' => 'Maximoale Bieldegrööte ap Bieldebeschrieuwengssieden:',
+'imagemaxsize' => "Maximoale Bieldegrööte:<br />''(foar Doatäibeschrieuwengssieden)''",
'thumbsize' => 'Grööte fon do Foarschaubielden (thumbnails):',
'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Siede|$3 Sieden}}',
'file-info' => '(Doatäigrööte: $1, MIME-Typ: $2)',
@@ -2376,6 +2542,8 @@ $1',
'svg-long-desc' => '(SVG-Doatäi, Basisgrööte: $1 × $2 Pixel, Doatäigrööte: $3)',
'show-big-image' => 'Bielde in hooge Aplöösenge',
'show-big-image-thumb' => '<small>Grööte fon disse Foarschau: $1 × $2 Pixel</small>',
+'file-info-gif-looped' => 'Eendloos-Strik',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bielde|Bielden}}',
# Special:NewFiles
'newimages' => 'Näie Bielden',
@@ -2413,7 +2581,7 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
* isospeedratings
* datetimeoriginal
* exposuretime
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Bratte',
@@ -2540,14 +2708,14 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-unknowndate' => 'Uunbekoand Doatum',
-'exif-orientation-1' => 'Normoal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Horizontoal uumewoand', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Uum 180° uumewoand', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Vertikoal uumewoand', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Juun dän Klokkenwiesersin uum 90° troald un vertikoal uumewoand', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Uum 90° in Klokkenwiesersin troald', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Uum 90° in Klokkenwiesersin troald un vertikoal uumewoand', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Uum 90° juun dän Klokkenwiesersin troald', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normoal',
+'exif-orientation-2' => 'Horizontoal uumewoand',
+'exif-orientation-3' => 'Uum 180° uumewoand',
+'exif-orientation-4' => 'Vertikoal uumewoand',
+'exif-orientation-5' => 'Juun dän Klokkenwiesersin uum 90° troald un vertikoal uumewoand',
+'exif-orientation-6' => 'Uum 90° in Klokkenwiesersin troald',
+'exif-orientation-7' => 'Uum 90° in Klokkenwiesersin troald un vertikoal uumewoand',
+'exif-orientation-8' => 'Uum 90° juun dän Klokkenwiesersin troald',
'exif-planarconfiguration-1' => 'Groafformoat',
'exif-planarconfiguration-2' => 'Planoarformoat',
@@ -2669,7 +2837,7 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-gpsmeasuremode-2' => '2-dimensionoale Meetenge',
'exif-gpsmeasuremode-3' => '3-dimensionoale Meetenge',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Knätte',
@@ -2688,6 +2856,7 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'watchlistall2' => 'aal',
'namespacesall' => 'aal',
'monthsall' => 'aal',
+'limitall' => 'aal',
# E-mail address confirmation
'confirmemail' => 'Email-Adrässe bestäätigje',
@@ -2813,7 +2982,7 @@ Bestäätigje, dät du disse Siede wuddelk näi moakje moatest.",
'duplicate-defaultsort' => 'Paas ap: Die Sortierengskoai „$2“ uurschrift dän toufoarne ferwoanden Koai „$1“.',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installierde Ärwiederengen',
'version-specialpages' => 'Spezioalsieden',
'version-parserhooks' => 'Parser-Hooks',
@@ -2827,7 +2996,7 @@ Bestäätigje, dät du disse Siede wuddelk näi moakje moatest.",
'version-skin-extension-functions' => 'Skin-Ärwiederengs-Funktione',
'version-hook-name' => 'Snitsteedennoome',
'version-hook-subscribedby' => 'Aproup fon',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Lizenz',
'version-software' => 'Installierde Software',
'version-software-product' => 'Produkt',
@@ -2905,4 +3074,15 @@ Ju Iengoawe mout sunner dän Tousats „{{ns:file}}:“ geböäre.',
'dberr-outofdate' => 'Beoachtje, dät die Säikindex fon uus Inhoolde ferallerd weese kon.',
'dberr-cachederror' => 'Dät Foulgjende is ne Kopie fon dän Cache fon ju anfoarderde Siede un kon ferallerd weese.',
+# HTML forms
+'htmlform-invalid-input' => 'Mäd eenige Iengoawen rakt dät Probleme',
+'htmlform-select-badoption' => 'Die anroate Wäid is neen gultige Option.',
+'htmlform-int-invalid' => 'Die anroate Wäid is neen Gans-Taal.',
+'htmlform-float-invalid' => 'Die anroate Wäid is neen Taal.',
+'htmlform-int-toolow' => 'Die anroate Wäid is unner dät Minimum fon $1',
+'htmlform-int-toohigh' => 'Die anroate Wäid is buppe dät Maximum fon $1',
+'htmlform-submit' => 'Uurdreege',
+'htmlform-reset' => 'Annerengen touräächtraale',
+'htmlform-selectorother-other' => 'Uur',
+
);
diff --git a/languages/messages/MessagesSu.php b/languages/messages/MessagesSu.php
index 54e7490c..921bcec2 100644
--- a/languages/messages/MessagesSu.php
+++ b/languages/messages/MessagesSu.php
@@ -18,22 +18,22 @@
$fallback = 'id';
$namespaceNames = array(
- NS_MEDIA => 'Média',
- NS_SPECIAL => 'Husus',
- NS_TALK => 'Obrolan',
- NS_USER => 'Pamaké',
- NS_USER_TALK => 'Obrolan_pamaké',
- NS_PROJECT_TALK => 'Obrolan_$1',
- NS_FILE => 'Gambar',
- NS_FILE_TALK => 'Obrolan_gambar',
- NS_MEDIAWIKI => 'MédiaWiki',
- NS_MEDIAWIKI_TALK => 'Obrolan MédiaWiki',
- NS_TEMPLATE => 'Citakan',
- NS_TEMPLATE_TALK => 'Obrolan_citakan',
- NS_HELP => 'Pitulung',
- NS_HELP_TALK => 'Obrolan_pitulung',
- NS_CATEGORY => 'Kategori',
- NS_CATEGORY_TALK => 'Obrolan_kategori',
+ NS_MEDIA => 'Média',
+ NS_SPECIAL => 'Husus',
+ NS_TALK => 'Obrolan',
+ NS_USER => 'Pamaké',
+ NS_USER_TALK => 'Obrolan_pamaké',
+ NS_PROJECT_TALK => 'Obrolan_$1',
+ NS_FILE => 'Gambar',
+ NS_FILE_TALK => 'Obrolan_gambar',
+ NS_MEDIAWIKI => 'MédiaWiki',
+ NS_MEDIAWIKI_TALK => 'Obrolan MédiaWiki',
+ NS_TEMPLATE => 'Citakan',
+ NS_TEMPLATE_TALK => 'Obrolan_citakan',
+ NS_HELP => 'Pitulung',
+ NS_HELP_TALK => 'Obrolan_pitulung',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Obrolan_kategori',
);
$namespaceAliases = array(
@@ -156,6 +156,7 @@ $messages = array(
'tog-enotifminoredits' => 'Béjaan ogé (ngaliwatan surélék) mun aya parobahan leutik dina kacana',
'tog-enotifrevealaddr' => 'Témbongkeun alamat surélék kuring dina surat émbaran',
'tog-shownumberswatching' => 'Témbongkeun jumlah nu ngawaskeun',
+'tog-oldsig' => 'Tandatangan nu geus aya:',
'tog-fancysig' => 'Témbongkeun paraf salaku wikitext (tanpa tumbu otomatis)',
'tog-externaleditor' => 'Pigunakeun parabot éditor éksternal ti buhunna',
'tog-externaldiff' => 'Paké pangbeda éksternal ti buhunna',
@@ -179,6 +180,13 @@ $messages = array(
'underline-never' => 'Ulah',
'underline-default' => 'Luyu jeung buhunna panyungsi',
+# Font style option in Special:Preferences
+'editfont-style' => 'Gaya aksara dina kotak éditan:',
+'editfont-default' => 'Luyu jeung buhunna panyungsi',
+'editfont-monospace' => 'Aksara monospasi',
+'editfont-sansserif' => 'Aksara Sans-serif',
+'editfont-serif' => 'Aksara Serif',
+
# Dates
'sunday' => 'Minggu',
'monday' => 'Senén',
@@ -238,7 +246,7 @@ $messages = array(
'category-media-header' => 'Média dina kategori "$1"',
'category-empty' => "''Kategori ieu, ayeuna teu ngabogaan artikel atawa gambar.''",
'hidden-categories' => '{{PLURAL:$1|Kategori nyumput|Kategori nyumput}}',
-'hidden-category-category' => 'Kategori nu nyarumput', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Kategori nu nyarumput',
'category-subcat-count' => '{{PLURAL:$2|Ieu kategori ngan boga subkategori di handap.|Kategori ieu ngawengku {{PLURAL:$1|subkategori|$1 subkategori}} ti $2.}}',
'category-subcat-count-limited' => 'Ieu kategori ngawengku {{PLURAL:$1|subkategori|$1 subkategori}}.',
'category-article-count' => '{{PLURAL:$2|Ieu kategori ngan ngawengku nu di handap.|{{PLURAL:$1|kaca|$1 kaca}} ti $2 di handap asup kana ieu kategori.}}',
@@ -246,14 +254,24 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Kategori didieu ngan boga gambar ieu.|Tembongkeun {{PLURAL:$1|gambar|$1 gambar}} nukaasup dina kategori ieu ti kabeh $2.}}',
'category-file-count-limited' => 'Kategori didieu ngabogaan {{PLURAL:$1|gambar|$1 gambar}} ieu.',
'listingcontinuesabbrev' => '(samb.)',
+'index-category' => 'Kaca nu diindéks',
+'noindex-category' => 'Kaca nu teu diindéks',
'mainpagetext' => "'''''Software'' MediaWiki geus diinstal.'''",
'mainpagedocfooter' => "Mangga tingal ''[http://meta.wikimedia.org/wiki/MediaWiki_localisation documentation on customizing the interface]'' jeung [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Tungtunan Pamaké] pikeun pitulung maké jeung konfigurasi.",
-'about' => 'Ngeunaan',
-'article' => 'Kaca eusi',
-'newwindow' => '(buka na jandéla anyar)',
-'cancel' => 'Bolay',
+'about' => 'Ngeunaan',
+'article' => 'Kaca eusi',
+'newwindow' => '(buka na jandéla anyar)',
+'cancel' => 'Bolay',
+'moredotdotdot' => 'Deui...',
+'mypage' => 'Kaca kuring',
+'mytalk' => 'Obrolan kuring',
+'anontalk' => 'Obrolan pikeun IP ieu',
+'navigation' => 'Pituduh',
+'and' => '&#32;jeung',
+
+# Cologne Blue skin
'qbfind' => 'Panggihan',
'qbbrowse' => 'Sungsi',
'qbedit' => 'Édit',
@@ -261,15 +279,35 @@ $messages = array(
'qbpageinfo' => 'Kontéks',
'qbmyoptions' => 'Kaca kuring',
'qbspecialpages' => 'Kaca husus',
-'moredotdotdot' => 'Deui...',
-'mypage' => 'Kaca kuring',
-'mytalk' => 'Obrolan kuring',
-'anontalk' => 'Obrolan pikeun IP ieu',
-'navigation' => 'Pituduh',
-'and' => '&#32;jeung',
-
-# Metadata in edit box
-'metadata_help' => 'Métadata:',
+'faq' => 'NLD',
+'faqpage' => 'Project:NLD',
+
+# Vector skin
+'vector-action-addsection' => 'Jieun jejer anyar',
+'vector-action-delete' => 'Hapus',
+'vector-action-move' => 'Pindahkeun',
+'vector-action-protect' => 'Konci',
+'vector-action-undelete' => 'Bolaykeun ngahapus',
+'vector-action-unprotect' => 'Buka konci',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Kaca pitulung',
+'vector-namespace-image' => 'Koropak',
+'vector-namespace-main' => 'Kaca',
+'vector-namespace-media' => 'Kaca média',
+'vector-namespace-mediawiki' => 'Surat',
+'vector-namespace-project' => 'Kaca proyék',
+'vector-namespace-special' => 'Kaca husus',
+'vector-namespace-talk' => 'Sawala',
+'vector-namespace-template' => 'Citakan',
+'vector-namespace-user' => 'Kaca pamaké',
+'vector-view-create' => 'Jieun',
+'vector-view-edit' => 'Édit',
+'vector-view-history' => 'Témbongkeun jujutan',
+'vector-view-view' => 'Baca',
+'vector-view-viewsource' => 'Témbongkeun sumber',
+'actions' => 'Peta',
+'namespaces' => 'Spasi ngaran',
+'variants' => 'Varian',
'errorpagetitle' => 'Kasalahan',
'returnto' => 'Balik deui ka $1.',
@@ -319,18 +357,22 @@ $messages = array(
'otherlanguages' => 'Basa séjén',
'redirectedfrom' => '(Dialihkeun ti $1)',
'redirectpagesub' => 'Kaca alihan',
-'lastmodifiedat' => 'Kaca ieu panungtungan dirobah $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Kaca ieu panungtungan dirobah $2, $1.',
'viewcount' => 'Kaca ieu geus dibuka {{PLURAL:$1|sakali|$1 kali}}.<br />',
'protectedpage' => 'Kaca nu dikonci',
'jumpto' => 'Luncat ka:',
'jumptonavigation' => 'pituduh',
'jumptosearch' => 'sungsi',
+'view-pool-error' => 'Punten, serverna keur pinuh.
+Loba teuing nu nyoba muka ieu kaca.
+Mangga cobian sanés waktos.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Ngeunaan {{SITENAME}}',
'aboutpage' => 'Project:Ngeunaan',
'copyright' => 'Sadaya kandungan ieu loka ditangtayungan ku $1',
-'copyrightpagename' => 'Hak cipta {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hak cipta',
'currentevents' => 'Keur lumangsung',
'currentevents-url' => 'Project:Keur lumangsung',
@@ -338,8 +380,6 @@ $messages = array(
'disclaimerpage' => 'Project:Bantahan_umum',
'edithelp' => 'Pitulung ngédit',
'edithelppage' => 'Help:Ngédit',
-'faq' => 'NLD',
-'faqpage' => 'Project:NLD',
'helppage' => 'Help:Pitulung',
'mainpage' => 'Tepas',
'mainpage-description' => 'Tepas',
@@ -418,10 +458,6 @@ Kueri pangkalan data nu panungtung nyaéta:
"$1"
ti antara fungsi "$2".
Éror ti pangkalan data "$3: $4".',
-'noconnect' => 'Punten! Wiki ngalaman sababaraha kasusah téhnis sarta teu bisa ngontak server pangkalan data.<br />
-$1',
-'nodb' => 'Teu bisa milih pangkalan data $1',
-'cachederror' => 'Kanggo kaca nu dipénta, di handap ieu mangrupa salinan ti nu aya, tiasa waé tos tinggaleun jaman.',
'laggedslavemode' => 'Awas: kandungan kaca bisa baé teu mutahir.',
'readonly' => 'pangkalan data dikonci',
'enterlockreason' => 'Asupkeun alesan pikeun ngonci, kaasup kira-kira iraha konci ieu rék dibuka',
@@ -439,6 +475,8 @@ Mangga laporkeun ha ieu ka salasaurang [[Special:ListUsers/sysop|Kuncén]], bari
'readonly_lag' => 'Pangkalan datana sacara otomatis dikonci nalika server pangkalan data sekundér disalin kana master',
'internalerror' => 'Kasalahan internal',
'internalerror_info' => 'Kasalahan internal: $1',
+'fileappenderrorread' => 'Teu bisa maca "$1" nalika nambahkeun.',
+'fileappenderror' => 'Teu bisa nambahkeun "$1" ka "$2".',
'filecopyerror' => 'Teu bisa nyalin koropak "$1" ka "$2".',
'filerenameerror' => 'Teu bisa ngaganti ngaran koropak "$1" jadi "$2".',
'filedeleteerror' => 'Teu bisa ngahapus koropak "$1".',
@@ -448,7 +486,8 @@ Mangga laporkeun ha ieu ka salasaurang [[Special:ListUsers/sysop|Kuncén]], bari
'unexpected' => 'Peunteun di luar hontalan: "$1"="$2".',
'formerror' => 'Kasalahan: teu bisa ngirim formulir',
'badarticleerror' => 'Peta ieu teu bisa dipigawé na kaca ieu.',
-'cannotdelete' => 'Teu bisa ngahapus kaca atawa gambar nu dimaksud (bisa jadi geus aya nu ngahapus saméméhna).',
+'cannotdelete' => 'Kaca atawa berkas "$1" teu bisa dihapus.
+Sigana geus dihapus ku nu séjén.',
'badtitle' => 'Judul goréng',
'badtitletext' => 'Judul kaca nu dipénta teu sah, kosong, atawa judul antarbasa atawa antarwikina salah tumbu.',
'perfcached' => 'Data di handap ieu sindangan sahingga--meureun--teu mutahir:',
@@ -478,7 +517,6 @@ Pikeun alihbasa, mangga sumping ka [http://translatewiki.net/wiki/Main_Page?setl
'virus-unknownscanner' => 'antivirus teu dipikawanoh:',
# Login and logout pages
-'logouttitle' => 'Kaluar log pamaké',
'logouttext' => "'''Anjeun ayeuna geus kaluar log.'''
Anjeun bisa tetep migunakeun {{SITENAME}} bari anonim, atawa bisa [[Special:UserLogin|asup log deui]] salaku pamaké nu sarua atawa nu séjén deui.
@@ -486,7 +524,6 @@ Mangkahadé, sababaraha kaca bakal tetep némbongkeun saolah-olah anjeun asup lo
'welcomecreation' => '==Wilujeng sumping, $1!==
Rekening anjeun geus dijieun.
Tong hilap ngarobih [[Special:Preferences|{{SITENAME}} préferénsi]] anjeun.',
-'loginpagetitle' => 'Asup log pamaké',
'yourname' => 'Ngaran pamaké anjeun',
'yourpassword' => 'Sandi anjeun',
'yourpasswordagain' => 'Ketik deui sandi anjeun',
@@ -497,6 +534,7 @@ Tong hilap ngarobih [[Special:Preferences|{{SITENAME}} préferénsi]] anjeun.',
'nav-login-createaccount' => 'Nyieun rekening atawa asup log',
'loginprompt' => "Anjeun kudu boga ''cookies'' sangkan bisa asup log ka {{SITENAME}}.",
'userlogin' => 'Asup log / jieun rekening',
+'userloginnocreate' => 'Asup log',
'logout' => 'Kaluar log',
'userlogout' => 'Kaluar log',
'notloggedin' => 'Can asup log',
@@ -509,23 +547,8 @@ Tong hilap ngarobih [[Special:Preferences|{{SITENAME}} préferénsi]] anjeun.',
'badretype' => 'Sandi nu diasupkeun teu cocog.',
'userexists' => 'Ngaran pamaké nu diasupkeun ku anjeun geus aya nu maké.
Mangga pilih ngaran nu séjén.',
-'youremail' => 'Surélék:',
-'username' => 'Landihan:',
-'uid' => 'ID pamaké:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|jumplukan|jumplukan}}:',
-'yourrealname' => 'Ngaran anjeun*',
-'yourlanguage' => 'Basa antarbeungeut',
-'yourvariant' => 'Varian basa',
-'yournick' => 'Landihan anjeun (pikeun tawis leungeun)',
-'badsig' => 'Parafna teu valid; pariksa tag HTML-na geura.',
-'badsiglength' => 'Tawis leungeun panjang teuing. Kuduna kurang ti $1 {{PLURAL:$1|karaktér|karaktér}}.',
-'gender-male' => 'Lalaki',
-'gender-female' => 'Awéwé',
-'email' => 'Surélék',
-'prefs-help-realname' => '* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.',
'loginerror' => 'Kasalahan asup log',
-'prefs-help-email' => 'Surélék sipatna pilihan, tapi ngawenangkeun hiji sandi anyar pikeun dikirimkeun ka anjeun lamun anjeun poho kana sandi anjeun. Anjeung ogé bisa milih pikeun ngawenangkeun batur bisa ngontak anjeun tina kaca pamaké atawa obrolanana tanpa kudu nyebutkeun idéntitas anjeun.',
-'prefs-help-email-required' => 'Alamat surélék dibutuhkeun.',
+'createaccounterror' => 'Teu bisa nyieun rekening: $1',
'nocookiesnew' => "Rekening pamaké geus dijieun, tapi anjeun can asup log. {{SITENAME}} maké ''cookies'' pikeun ngasupkeun log pamaké. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga fungsikeun, teras asup log migunakeun ngaran pamaké sarta sandi nu anyar.",
'nocookieslogin' => "{{SITENAME}} migunakeun ''cookies'' pikeun ngasupkeun pamaké kana log. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga pungsikeun sarta cobian deui.",
'noname' => 'Anjeun teu nuliskeun ngaran pamaké nu sah.',
@@ -536,15 +559,18 @@ Ngaran pamaké ngabedakeun hurup kapital.
Pariksa éjahanana, atawa paké formulir di handap pikeun [[Special:UserLogin/signup|nyieun rekening anyar]].',
'nosuchusershort' => 'Taya pamaké nu ngaranna "<nowiki>$1</nowiki>", pariksa éjahanana!',
'nouserspecified' => 'Anjeun kudu ngeusian ngaran landihan.',
+'login-userblocked' => 'Ieu pamaké keur dipeungpeuk, teu diwenangkeun asup log.',
'wrongpassword' => 'Sandi nu diasupkeun teu cocog. Mangga cobian deui.',
'wrongpasswordempty' => 'Sandina can kaeusian. Cobaan deui!',
-'passwordtooshort' => 'Sandi anjeun pondok teuing, sahanteuna kudu {{PLURAL:$1|1 karakter|$1 karakter}} jeung kudu beda jeung ngaran pamaké.',
+'passwordtooshort' => 'Sandina kudu diwangun ku sahanteuna {{PLURAL:$1|1 karakter|$1 karakter}}.',
+'password-name-match' => 'Sandi anjeun kudu béda ti landihan.',
'mailmypassword' => 'Kirim sandi anyar ngaliwatan surélék',
'passwordremindertitle' => 'Pangéling sandi ti {{SITENAME}}',
'passwordremindertext' => 'Aya (jigana anjeun ti alamat IP $1) nu ménta sangkan dikiriman sandi anyar asup log {{SITENAME}} ($4). Saheulaanan, sandi anyar keur pamaké "$2" ayeuna diganti jadi "$3". Anjeun kudu asup log sarta ngarobah sandi anjeun ayeuna. Ieu sandi bakal kadaluwarsa dina {{PLURAL:$5|sapoé|$5 poé}}.
Mun pamundut ieu datang ti nu séjén, atawa mun anjeun geus inget sandi anu tadina poho, sarta teu hayang ngarobah sandina, anjeun teu kudu ngawaro kana ieu surat sarta bisa tetep maké sandi anu ti heula.',
'noemail' => 'Teu aya alamat surélék karékam pikeun "$1".',
+'noemailcreate' => 'Anjeun kudu nyadiakeun alamat surélék anu bener',
'passwordsent' => 'Sandi anyar geus dikirim ka alamat surélék nu kadaptar pikeun "$1". Mangga asup log deui satutasna katarima.',
'blocked-mailpassword' => 'Alamat IP anjeun dipeungpeuk, moal bisa ngédit, and so
is not allowed to use the password recovery function to prevent abuse.',
@@ -566,6 +592,7 @@ Mangga lebetkeun alamat nu formatna bener atawa kosongkeun baé.',
'createaccount-text' => 'Aya nu nyieun rekening pikeun alamat surélék anjeun di {{SITENAME}} ($4) maké landihan "$2" sarta sandi "$3". Anjeun kudu asup log sarta ngaganti sandina ayeuna kénéh.
Mun ieu rekening balukar ayana éror, teu kudu diwaro.',
+'usernamehasherror' => "Landihan teu kaci maké karakter pager (''hash'')",
'login-throttled' => 'Anjeun geus loba teuing nyobaan asup log.
Tungguan heula sakeudeung, laju cobaan deui.',
'loginlanguagelabel' => 'Basa: $1',
@@ -580,10 +607,10 @@ Tungguan heula sakeudeung, laju cobaan deui.',
'retypenew' => 'Ketik ulang sandi',
'resetpass_submit' => 'Setél log asup katut sandina',
'resetpass_success' => 'Kecap sandi Anjeun geus junun dirobah! Ayeuna proses asup log Anjeun...',
-'resetpass_bad_temporary' => 'Kecap sandi samentara salah. Anjeun meureun kungsi junun ngaganti kecap sandi Anjeun atawa geus ménta kecap sandi anyar.',
'resetpass_forbidden' => 'Sandi henteu bisa dirobah',
'resetpass-no-info' => 'Anjeun kudu asup log pkeun bisa muka ieu kaca sacara langsung.',
'resetpass-submit-loggedin' => 'Ganti kecap sandi rekening',
+'resetpass-submit-cancel' => 'Bolay',
'resetpass-wrong-oldpass' => 'Salah sandi.
Bisa jadi anjeun geus ngaganti sandina atawa ménta sandi saheulaanan anu anyar.',
'resetpass-temp-password' => 'Sandi samentara:',
@@ -660,7 +687,6 @@ Mangga sebatkeun éta ID dina pamundut-pamundut anjeun.',
'blockededitsource' => "Tulisan '''éditan anjeun''' dina '''$1''' dipidangkeun di handap ieu:",
'whitelistedittitle' => 'Perlu asup log sangkan bisa ngédit',
'whitelistedittext' => 'Anjeun kudu asup $1 sangkan bisa ngédit.',
-'confirmedittitle' => 'Konfirmasi surélék diperlukeun pikeun ngédit.',
'confirmedittext' => 'Saméméh ngédit, kompirmasikeun heula alamat surélék anjeun.
Mangga setél, lajeng sahkeun alamat surélék anjeun dina [[Special:Preferences|préferénsi pamaké]].',
'nosuchsectiontitle' => 'Bab teu kapanggih',
@@ -683,10 +709,15 @@ Mun anjeun ka dieu teu ngahaja, klik baé tombol '''back''' na panyungsi anjeun.
Anjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],
atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngédit ieu kaca]</span>.',
+'noarticletext-nopermission' => 'Kiwari ieu kaca euweuh eusian.
+Anjeun bisa [[Special:Search/{{PAGENAME}}|milari judul ieu kaca]] di kaca séjén,
+atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pilari log nu tumali]</span>.',
'userpage-userdoesnotexist' => 'Rekening pamaké "$1" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.',
+'userpage-userdoesnotexist-view' => 'Rekening pamaké "$1" teu aya dina daptar.',
'clearyourcache' => "'''Catetan:''' Sanggeus nyimpen, anjeun perlu ngosongkeun sindangan panyungsi anjeun pikeun nempo parobahanana:
'''Mozilla/Safari/Konqueror:''' pencét & tahan ''Shift'' bari ngaklik ''Reload'' (atawa pencét ''Ctrl-Shift-R''), '''IE:''' pencét ''Ctrl-F5'', '''Opera:''' pencét ''F5''.",
-'usercssjsyoucanpreview' => "'''Tip:''' Paké tombol 'Témbongkeun pramidang' pikeun nyoba css/js anyar anjeun méméh nyimpen.",
+'usercssyoucanpreview' => "'''Tip:''' Paké tombol 'Témbongkeun pramidang' pikeun nyoba css/js anyar anjeun méméh nyimpen.",
+'userjsyoucanpreview' => "'''Tip:''' Paké tombol 'Témbongkeun pramidang' pikeun nyoba css/js anyar anjeun méméh nyimpen.",
'usercsspreview' => "'''Inget yén anjeun ukur nyawang css pamaké anjeun, can disimpen!'''",
'userjspreview' => "'''Inget yén anjeun ukur nguji/nyawang ''javascript'' pamaké anjeun, can disimpen!'''",
'userinvalidcssjstitle' => "'''Awas''': kulit \"\$1\" mah teu aya. Sing émut yén kaca .css jeung .js mah migunakeun aksara leutik dina judulna, contona baé {{ns:user}}:Foo/monobook.css lawan {{ns:user}}:Foo/Monobook.css.",
@@ -724,13 +755,16 @@ Anjeun ogé mastikeun yén ieu téh pituin tulisan anjeun, atawa salinan ti doma
'readonlywarning' => "'''PERHATOSAN''': pangkalan data dikonci pikeun diropéa, anjeun moal bisa nyimpen éditan anjeun ayeuna. Cobi ''cut-n-paste'' téksna ka na koropak téks sarta simpen dina waktu séjén.
kuncén nu ngonci pangkalan data mikeun kajelasan : $1",
-'protectedpagewarning' => "'''PERHATOSAN: Kaca ieu dikonci sahingga ngan bisa dirobah ku pamaké nu statusna kuncén.'''",
-'semiprotectedpagewarning' => "'''Perhatoskeun''': ieu kaca dikonci sahingga ukur bisa dirobah ku pamaké nu geus asup log.",
+'protectedpagewarning' => "'''AWAS: ieu kaca dikonci sarta ngan bisa dirobah ku pamaké nu statusna kuncén.'''
+Éntri log panungtungan ditémbongkeun di handap:",
+'semiprotectedpagewarning' => "'''Catetan''': ieu kaca dikonci sarta ukur bisa dirobah ku pamaké nu geus kadaptar.
+Éntri log panungtung dibéréndélkeun di handap:",
'cascadeprotectedwarning' => "'''Awas''': ieu kaca dikonci sahingga ukur bisa dirobah ku kuncén, sabab kaasup {{PLURAL:$1|kaca|kaca}} dina panyalindungan-ngaruntuy di handap ieu:",
-'titleprotectedwarning' => "'''Awas: ieu kaca geus dikonci, ku kituna kudu aya [[Special:ListGroupRights|hak husus]] pikeun nyieunna.'''",
-'templatesused' => 'Citakan nu dipaké na kaca ieu:',
-'templatesusedpreview' => 'Citakan nu dipaké dina ieu pramidang:',
-'templatesusedsection' => 'Citakan nu dipaké dina ieu bab:',
+'titleprotectedwarning' => "'''Awas: ieu kaca dikonci sarta ngan bisa dijieun ku pamaké anu boga [[Special:ListGroupRights|kawenangan husus]].'''
+Éntri log panungtung dibéréndélkeun di handap:",
+'templatesused' => '{{PLURAL:$1|Citakan|Citakan}} nu dipaké dina ieu kaca:',
+'templatesusedpreview' => '{{PLURAL:$1|Citakan|Citakan}} nu dipaké dina ieu pramidang:',
+'templatesusedsection' => '{{PLURAL:$1|Citakan|Citakan}} nu dipaké dina ieu bab:',
'template-protected' => '(dikunci)',
'template-semiprotected' => '(semi-dikonci)',
'hiddencategories' => 'Ieu kaca kaasup {{PLURAL:$1|1 kategori nyumput|$1 kategori nyumput}}:',
@@ -739,13 +773,17 @@ kuncén nu ngonci pangkalan data mikeun kajelasan : $1",
'nocreatetext' => '{{SITENAME}} nutup kabisa nyieun kaca anyar.
Mangga édit artikel nu geus aya, atawa [[Special:UserLogin|asup log/daptar heula]].',
'nocreate-loggedin' => 'Anjeun teu diwenangkeun pikeun nyieun kaca anyar.',
+'sectioneditnotsupported-title' => 'Teu bisa ngarobah dina sub-judul',
'permissionserrors' => 'Kasalahan Hak Aksés',
'permissionserrorstext' => 'Anjeung teu boga kawenangan pikeun peta kitu, kalawan {{PLURAL:$1|alesan|alesan}} di handap ieu:',
'permissionserrorstext-withaction' => 'Anjeun teu ngabogaan hak keur $2, kusabab {{PLURAL:$1|alesan|alesan}} katut:',
-'recreate-deleted-warn' => "'''Awas: Anjeun keur nyieun deui kaca nu geus kungsi dihapus.'''
+'recreate-moveddeleted-warn' => "'''Awas: anjeun keur nyieun deui kaca nu geus kungsi dihapus.'''
Mangga émutan deui perlu/henteuna nyieun deui ieu artikel.
-Pikeun leuwih écés, di handap dibéréndélkeun log hapusanana:",
+Pikeun leuwih écés, di handap dibéréndélkeun logna:",
+'moveddeleted-notice' => 'Ieu kaca geus dihapus.
+Pikeun rujukan, logna tiasa ditingal di handap ieu.',
+'log-fulllog' => 'Tempo log sakabéhna',
'edit-hook-aborted' => 'Éditan dibolaykeun tanpa pedaran.',
'edit-gone-missing' => 'Kaca teu bisa dianyarkeun,
sigana kusabab geus dihapus.',
@@ -780,8 +818,9 @@ Alesanana $3 cenah ''$2''.",
'viewpagelogs' => 'Tempo log kaca ieu',
'nohistory' => 'Teu aya jujutan édit pikeun kaca ieu.',
'currentrev' => 'Révisi kiwari',
+'currentrev-asof' => 'Révisi mangsa $1',
'revisionasof' => 'Révisi nurutkeun $1',
-'revision-info' => 'Révisi per $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Révisi per $1; $2',
'previousrevision' => '← Révisi leuwih heubeul',
'nextrevision' => 'Révisi nu leuwih anyar →',
'currentrevisionlink' => 'Témbongkeun révisi kiwari',
@@ -794,7 +833,6 @@ Alesanana $3 cenah ''$2''.",
Katerangan: (kiw) = bédana jeung vérsi kiwari,
(ahir) = bédana jeung vérsi nu harita, m = éditan minor.',
'history-fieldset-title' => 'Sungsi jujutan',
-'deletedrev' => '[dihapus]',
'histfirst' => 'Pangheubeulna',
'histlast' => 'Pangahirna',
'historysize' => '($1 {{PLURAL:$1|bit|bit}})',
@@ -803,7 +841,7 @@ Katerangan: (kiw) = bédana jeung vérsi kiwari,
# Revision feed
'history-feed-title' => 'Sajarah révisi',
'history-feed-description' => 'Sajarah révisi kaca ieu di wiki',
-'history-feed-item-nocomment' => '$1 dina $2', # user at time
+'history-feed-item-nocomment' => '$1 dina $2',
'history-feed-empty' => 'Kaca nu dipundut teu kapanggih.
Bisa jadi geus dihapus ti wiki atawa diganti ngaranna.
Cobaan [[Special:Search|sungsi di wiki]] pikeun kaca-kaca nu sarimbag.',
@@ -812,34 +850,51 @@ Cobaan [[Special:Search|sungsi di wiki]] pikeun kaca-kaca nu sarimbag.',
'rev-deleted-comment' => '(koméntar dihapus)',
'rev-deleted-user' => '(ngaran pamaké geus dihapus)',
'rev-deleted-event' => '(lampah log dihapus)',
-'rev-deleted-text-permission' => 'Révisi kaca ieu geus dihapus tina arsip publik. Dadaranana meureun aya dina [{{fullurl:Husus:Log/delete|page={{PAGENAMEE}}}} log hapusan].',
-'rev-deleted-text-view' => 'Révisi kaca ieu geus dihapus tina arsip publik. Tapi, salaku administrator dina loka ieu, anjeun bisa nempo; dadaranana meureun aya dina [{{fullurl:Husus:Log/delete|page={{FULLPAGENAMEE}}}} log hapusan].',
+'rev-deleted-text-permission' => "Révisi ieu kaca geus '''dihapus'''.
+Pedaran lengkepna bisa dipilari di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan]",
+'rev-deleted-text-unhide' => "Révisi ieu kaca geus '''dihapus'''.
+Lengkepna bisa ditéang dina [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].
+Salaku kuncén, mun perlu, anjeun bisa kénéh [$1 nempo ieu révisi].",
+'rev-deleted-text-view' => "Révisi ieu kaca geus '''dihapus'''.
+Salaku administrator, anjeun angger bisa nempo; pedaran lengkepna bisa dipilari di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].",
+'rev-deleted-no-diff' => "Anjeun teu bisa némbongkeun bédana kusabab révisina geus '''dihapus'''.
+Leuwih lengkepna bisa ditéang di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].",
+'rev-deleted-unhide-diff' => "Salahsahiji révisi dina ieu béda geus '''dihapus'''.
+Lengkepna bisa dipilari di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].
+Salaku kuncen, mun perlu, anjeun bisa kénéh [$1 nempo bédana].",
'rev-delundel' => 'témbongkeun/sumputkeun',
+'rev-showdeleted' => 'témbongkeun',
'revisiondelete' => 'Hapus/bolay ngahapus révisi',
'revdelete-nooldid-title' => 'Udagan révisi salah',
'revdelete-nooldid-text' => 'Anjeun can nangtukeun atawa méré révisi pikeun ngajalankeun ieu fungsi, révisi nu di tangtukeun can aya, atawa anjeun nyoba nyumputkeun révisi kiwari.',
'revdelete-nologtype-text' => 'Anjeun can nangtukeun tipeu log pikeun ieu peta.',
'revdelete-nologid-title' => 'Éntri log teu bener',
+'revdelete-no-file' => 'Berkas anu ditujul teu kapanggih.',
+'revdelete-show-file-confirm' => 'Anjeun yakin rék nempo révisi anu geus dihapus dina koropak "<nowiki>$1</nowiki>" ti $2 nepi ka $3?',
+'revdelete-show-file-submit' => 'Enya',
'revdelete-selected' => "'''{{PLURAL:$2|Révisi pilihan|Révisi pilihan}} pikeun '''$1''''''",
'logdelete-selected' => "'''{{PLURAL:$1|pilihan keur log|pilihan keur log}}:'''",
'revdelete-text' => "'''Revisi sarta tindakan anu geus dihapus baris tetep mecenghul di kaca vérsi tiheula, tapi teks eusi henteu bisa diakses ku publik.'''
-
-Kuncén séjén bakalan bisa ngakses eusi nunyumput sarta bisa ngabolaykeun hapusan ngaliwatan antarmuka anu sarua, kajaba lamun aya pangbates séjén anu dijieun ku operator loka",
+Kuncén séjén bakalan bisa ngakses eusi nu nyumput sarta bisa ngabolaykeun hapusan ngaliwatan antarmuka anu sarua, kajaba lamun aya pangbates séjén anu dijieun ku operator loka",
+'revdelete-confirm' => 'Mangga geura konfirmasi yen Anjeun gaduh maksad pikeun ngalakukeun hal ieu, paham kana konsekwensina, tur nu dilakukeun ieu teh luyu sareng [[{{MediaWiki:Policy-url}}|kawijakanana]]',
'revdelete-suppress-text' => "Nyumputkeun revisi '''ukur''' bisa digunakeun keur kasus-kasus di handap ieu:
* Informasi nu boga potensi mitenah
* Informasi pribadi nu teu pantes
*: ''alamat imah katut nomer telepon, nomer kartu identitas, jeung lian-liana.''",
'revdelete-legend' => 'Setél réstriksi révisi:',
'revdelete-hide-text' => 'Sumputkeun téks révisi',
+'revdelete-hide-image' => 'Sumputkeun eusi gambar',
'revdelete-hide-name' => 'Sumputkeun lampah sarta udagan',
'revdelete-hide-comment' => 'Sumputkeun koméntar ngédit',
'revdelete-hide-user' => 'Sumputkeun ngaran pamaké/IP éditor',
'revdelete-hide-restricted' => 'Sumputkeun data boh ti kuncén atawa nu séjénna',
+'revdelete-radio-same' => '(ulah dirobah)',
+'revdelete-radio-set' => 'Enya',
+'revdelete-radio-unset' => 'Ulah',
'revdelete-suppress' => 'Sumputkeun ogé ti kuncén',
-'revdelete-hide-image' => 'Sumputkeun eusi gambar',
'revdelete-unsuppress' => 'Hapus watesan kana révisi anu geus dipulangkeun',
'revdelete-log' => 'Alesan:',
-'revdelete-submit' => 'Terapkeun kana révisi nu dipilih',
+'revdelete-submit' => 'Larapkeun kana {{PLURAL:$1|révisi|révisi}} nu dipilih',
'revdelete-logentry' => 'robah tampilan révisi pikeun [[$1]]',
'logdelete-logentry' => 'Robah pangatur nyumputkeun tina [[$1]]',
'revdelete-success' => 'Pangaturan nyumpukeun révisi junun dilarapkeun.',
@@ -856,6 +911,21 @@ Kuncén séjén bakalan bisa ngakses eusi nunyumput sarta bisa ngabolaykeun hapu
'revdelete-unhid' => 'tembongkeun $1',
'revdelete-log-message' => '$1 Keur $2 {{PLURAL:$2|révisi}}',
'logdelete-log-message' => '$1 keur $2 {{PLURAL:$2|kajadian|kajadian}}',
+'revdelete-hide-current' => 'Éror nyumputkeun anu titimangsana $2, $1: ieu téh révisi kiwari.
+Teu bisa disumputkeun.',
+'revdelete-show-no-access' => 'Éror némbongkeun anu titimangsana $2, $1: geus ditandaan "diwates".
+Anjeun teu diwenangkeun asup.',
+'revdelete-modify-no-access' => 'Éror ngarobah anu titimangsana $2, $1: geus ditandaan "diwates".
+Anjeun teu diwenangkeun asup.',
+'revdelete-modify-missing' => 'Éror ngarobah anu IDna $2, $1: leungit ti pangkalan data!',
+'revdelete-reason-dropdown' => '*Alesan ngahapus umumna
+** Ngarumpak hakcipta
+** Émbaran pribadi anu teu perlu
+** Émbaranana bisa jadi pitnah',
+'revdelete-otherreason' => 'Alesan lianna:',
+'revdelete-reasonotherlist' => 'Alesan séjén',
+'revdelete-edit-reasonlist' => 'Alesan ngahapus éditan',
+'revdelete-offender' => 'Panulis révisi:',
# Suppression log
'suppressionlog' => 'Log nyumputken',
@@ -891,47 +961,13 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
'mergelogpagetext' => 'Di handap ieu béréndélan prosés gabung jujutan kaca.',
# Diffs
-'history-title' => 'Jujutan révisi "$1"',
-'difference' => '(Béda antarrévisi)',
-'lineno' => 'Baris ka-$1:',
-'compareselectedversions' => 'Bandingkeun vérsi nu dipilih',
-'visualcomparison' => 'Babandingan visual',
-'wikicodecomparison' => 'Babandingan Wikitext',
-'editundo' => 'bolaykeun',
-'diff-multi' => '({{PLURAL:$1|Hiji|$1}} révisi antara teu ditembongkeun.)',
-'diff-movedto' => 'dipindahkeun ka $1',
-'diff-styleadded' => '$1 gaya geus ditambahkeun',
-'diff-added' => '$1 ditambahkeun',
-'diff-changedto' => 'dirobah jadi $1',
-'diff-movedoutof' => 'dipindahkeun ti $1',
-'diff-styleremoved' => '$1 gaya dihapus',
-'diff-removed' => '$1 dihapus',
-'diff-changedfrom' => 'dirobah ti $1',
-'diff-src' => 'sumber',
-'diff-width' => 'lébar',
-'diff-height' => 'jangkung',
-'diff-p' => "'''alinéa'''",
-'diff-blockquote' => "'''kutipan'''",
-'diff-h1' => "'''lulugu (hambalan 1)'''",
-'diff-h2' => "'''lulugu (hambalan 2)'''",
-'diff-h3' => "'''lulugu (hambalan 3)'''",
-'diff-h4' => "'''lulugu (hambalan 4)'''",
-'diff-h5' => "'''lulugu (hambalan 5)'''",
-'diff-table' => "'''tabél'''",
-'diff-tbody' => "'''eusi tabél'''",
-'diff-tr' => "'''baris'''",
-'diff-td' => "'''sél'''",
-'diff-th' => "'''lulugu'''",
-'diff-a' => "'''tumbu'''",
-'diff-i' => "'''déngdék'''",
-'diff-b' => "'''kandel'''",
-'diff-strong' => "'''teges'''",
-'diff-font' => "'''aksara'''",
-'diff-big' => "'''gedé'''",
-'diff-del' => "'''dihapus'''",
-'diff-sub' => "'''subskrip'''",
-'diff-sup' => "'''superskrip'''",
-'diff-strike' => "'''corét'''",
+'history-title' => 'Jujutan révisi "$1"',
+'difference' => '(Béda antarrévisi)',
+'lineno' => 'Baris ka-$1:',
+'compareselectedversions' => 'Bandingkeun vérsi nu dipilih',
+'showhideselectedversions' => 'Témbongkeun/sumputkeun révisi nu dipilih',
+'editundo' => 'bolaykeun',
+'diff-multi' => '({{PLURAL:$1|Hiji|$1}} révisi antara teu ditembongkeun.)',
# Search results
'searchresults' => 'Hasil néangan',
@@ -939,15 +975,13 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
'searchresulttext' => 'Pikeun iber nu leuwih lengkep ngeunaan nyaksrak di {{SITENAME}}, buka [[{{MediaWiki:Helppage}}|Nyaksrak {{SITENAME}}]].',
'searchsubtitle' => 'Anjeun nyusud \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sakabéh kaca nu dimimitian ku "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sakabéh kaca nu numbu ka "$1"]])',
'searchsubtitleinvalid' => 'Pikeun pamundut "$1"',
-'noexactmatch' => "'''Euweuh kaca nu judulna \"\$1\".''' Anjeun bisa [[:\$1|nyieun ieu kaca]].",
-'noexactmatch-nocreate' => "'''Euweuh kaca nu judulna \"\$1\".'''",
'toomanymatches' => 'Loba teuing nu cocog, mangga cobi mundut nu sanésna',
'titlematches' => 'Judul artikel nu cocog',
'notitlematches' => 'Teu aya judul kaca nu cocog',
'textmatches' => 'Téks kaca nu cocog',
'notextmatches' => 'Teu aya téks kaca nu cocog',
-'prevn' => '$1 saméméhna',
-'nextn' => '$1 salajengna',
+'prevn' => '{{PLURAL:$1|$1}} saméméhna',
+'nextn' => '{{PLURAL:$1|$1}} salajengna',
'prevn-title' => '$1 {{PLURAL:$1|hasil|hasil}} saméméhna',
'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} salajengna',
'shown-title' => 'Témbongkeun $1 {{PLURAL:$1|hasil|hasil}} per kaca',
@@ -958,7 +992,8 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
'searchhelp-url' => 'Help:Pitulung',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sungsi kaca-kaca nu dimimitian ku ieu awalan]]',
'searchprofile-articles' => 'Kaca eusi',
-'searchprofile-articles-and-proj' => 'Kaca eusi & proyék',
+'searchprofile-project' => 'Kaca Pitulung jeung Proyék',
+'searchprofile-images' => 'Multimédia',
'searchprofile-everything' => 'Sagala',
'searchprofile-articles-tooltip' => 'Pilari di $1',
'searchprofile-project-tooltip' => 'Pilari di $1',
@@ -976,11 +1011,12 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
'search-mwsuggest-disabled' => 'euweuh bongbolongan',
'search-relatedarticle' => 'Patula-patali',
'mwsuggest-disable' => 'Tumpurkeun usulan AJAX',
+'searcheverything-enable' => 'Pilari di sakabéh rohangaran',
'searchrelated' => 'patula-patali',
'searchall' => 'sadayana',
'showingresults' => "Di handap ieu némbongkeun {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimimitianku #'''$2'''.",
'showingresultsnum' => "Di handap ieu némbongkeun {{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimimitian #'''$2'''.",
-'showingresultstotal' => "Nembongkeun {{PLURAL:$4|hasil '''$1'''|'''$1 - $2'''}} ti '''$3''' sungsi",
+'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' ti '''$3'''|Hasil '''$1 - $2''' ti '''$3'''}} pikeun '''$4'''",
'nonefound' => "'''Catetan''': Ti buhunna (default), panyusud téh ukur ngawengku sababaraha ngaran rohang.
Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup kaca obrolan, citakan, jsb.) atawa pilih rohang ngaran dina awalanana luyu jeung nu dimaksud.",
'search-nonefound' => 'Euweuh hasil nu cocog jeung kueri.',
@@ -989,86 +1025,107 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'powersearch-ns' => 'Téangan di ngaranspasi:',
'powersearch-redir' => 'Daptar alihan',
'powersearch-field' => 'Téangan keur',
+'powersearch-toggleall' => 'Kabéh',
'search-external' => 'Panéangan luar',
'searchdisabled' => 'Punten! Néangan téks lengkep di {{SITENAME}} kanggo samentawis ditumpurkeun pikeun alesan kinerja. Jalaran kitu, saheulaanan anjeun bisa nyungsi di Google di handap ieu. Catet yén indéxna ngeunaan eusi {{SITENAME}} bisa jadi teu mutahir.',
+# Quickbar
+'qbsettings' => 'Bar gancang',
+'qbsettings-none' => 'Henteu aya',
+'qbsettings-fixedleft' => 'Angger beulah kenca',
+'qbsettings-fixedright' => 'Angger beulah katuhu',
+'qbsettings-floatingleft' => 'Ngambang ka kenca',
+'qbsettings-floatingright' => 'Ngambang ka katuhu',
+
# Preferences page
-'preferences' => 'Préferénsi',
-'mypreferences' => 'Préferénsi kuring',
-'prefs-edits' => 'Jumlah éditan:',
-'prefsnologin' => 'Can asup log',
-'prefsnologintext' => 'Anjeun kudu <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} asup log]</span> pikeun ngatur préferénsi pamaké.',
-'prefsreset' => 'Préferénsi geus disét ulang tina arsip.',
-'qbsettings' => 'Bar gancang',
-'qbsettings-none' => 'Henteu aya',
-'qbsettings-fixedleft' => 'Angger beulah kenca',
-'qbsettings-fixedright' => 'Angger beulah katuhu',
-'qbsettings-floatingleft' => 'Ngambang ka kenca',
-'qbsettings-floatingright' => 'Ngambang ka katuhu',
-'changepassword' => 'Robah sandi',
-'skin' => 'Kulit',
-'skin-preview' => 'Pramidang',
-'math' => 'Maté',
-'dateformat' => 'Format titimangsa',
-'datedefault' => 'Tanpa préferénsi',
-'datetime' => 'Titimangsa jeung wanci',
-'math_failure' => "Peta ''parse'' gagal",
-'math_unknown_error' => 'Kasalahan teu kanyahoan',
-'math_unknown_function' => 'fungsi teu kanyahoan',
-'math_lexing_error' => 'kasalahan lexing',
-'math_syntax_error' => 'Kasalahan rumpaka',
-'math_image_error' => 'Konversi PNG gagal; pastikeun yén latex, dvips, gs, jeung convert geus bener nginstalna',
-'math_bad_tmpdir' => 'Henteu bisa nulis atawa nyieun direktori samentara math',
-'math_bad_output' => 'Henteu bisa nulisikeun atawa nyieun direktori keluaran math',
-'prefs-personal' => 'Data pamaké',
-'prefs-rc' => 'Panémbong robahan anyar jeung tukung',
-'prefs-watchlist' => 'Awaskeuneun',
-'prefs-watchlist-days' => 'Jumlah poé anu ditémbongkeun dina daptar awaskeuneun:',
-'prefs-watchlist-edits' => 'Jumlah parobahan maksimum nu ditémbongkeun dina daptar panjang awaskeuneun:',
-'prefs-misc' => 'Pangaturan rupa-rupa',
-'prefs-resetpass' => 'Ganti sandi',
-'saveprefs' => 'Simpen préferénsi',
-'resetprefs' => 'Sét ulang préferénsi',
-'restoreprefs' => 'Larapkeun setélan buhun',
-'textboxsize' => 'Ukuran kotak téks',
-'prefs-edit-boxsize' => 'Ukuran jandéla édit.',
-'rows' => 'Baris',
-'columns' => 'Kolom',
-'searchresultshead' => 'Aturan hasil néang',
-'resultsperpage' => 'Hasil nu ditémbongkeun per kaca',
-'contextlines' => 'Jumlah baris sakali némbongan',
-'contextchars' => 'Karakter kontéks per baris',
-'stub-threshold' => 'Wates ambang pikeun format <a href="#" class="stub">tumbu taratas</a> (bit):',
-'recentchangesdays' => 'Jumlah poé nu dipidangkeun dina Nu anyar robah:',
-'recentchangescount' => 'Jumlah judul nu anyar robah',
-'savedprefs' => 'Préferénsi anjeun geus disimpen.',
-'timezonelegend' => 'Wewengkon wanci:',
-'timezonetext' => 'Asupkeun sabaraha jam bédana antara wanci di tempat anjeun jeung wanci server (UTC).',
-'localtime' => 'Wanci satempat:',
-'timezoneuseserverdefault' => 'Paké bawaan server',
-'timezoneuseoffset' => 'Lianna (tangtukeun bédana)',
-'timezoneoffset' => 'Béda:',
-'servertime' => 'Wanci server:',
-'guesstimezone' => 'Eusian ti panyungsi',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amérika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Samudra Atlantik',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Éropah',
-'timezoneregion-indian' => 'Samudra Indonésia',
-'timezoneregion-pacific' => 'Samudra Pasifik',
-'allowemail' => 'Buka koropak pikeun nampa surélék ti nu séjén',
-'prefs-searchoptions' => 'Piliheun Panéangan',
-'prefs-namespaces' => 'Ngaranspasi',
-'defaultns' => 'Téang ti antara spasingaran ieu luyu jeung ti dituna:',
-'default' => 'ti dituna',
-'files' => 'Koropak',
+'preferences' => 'Préferénsi',
+'mypreferences' => 'Préferénsi kuring',
+'prefs-edits' => 'Jumlah éditan:',
+'prefsnologin' => 'Can asup log',
+'prefsnologintext' => 'Anjeun kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} asup log]</span> pikeun ngatur préferénsi pamaké.',
+'changepassword' => 'Robah sandi',
+'prefs-skin' => 'Kulit',
+'skin-preview' => 'Pramidang',
+'prefs-math' => 'Maté',
+'datedefault' => 'Tanpa préferénsi',
+'prefs-datetime' => 'Titimangsa jeung wanci',
+'prefs-personal' => 'Data pamaké',
+'prefs-rc' => 'Panémbong robahan anyar jeung tukung',
+'prefs-watchlist' => 'Awaskeuneun',
+'prefs-watchlist-days' => 'Jumlah poé anu ditémbongkeun dina daptar awaskeuneun:',
+'prefs-watchlist-days-max' => 'Panglilana 7 poé',
+'prefs-watchlist-edits' => 'Jumlah parobahan maksimum nu ditémbongkeun dina daptar panjang awaskeuneun:',
+'prefs-watchlist-edits-max' => 'Panglobana: 1000',
+'prefs-misc' => 'Pangaturan rupa-rupa',
+'prefs-resetpass' => 'Ganti sandi',
+'prefs-email' => 'Pilihan surélék',
+'saveprefs' => 'Simpen préferénsi',
+'resetprefs' => 'Sét ulang préferénsi',
+'restoreprefs' => 'Larapkeun setélan buhun',
+'prefs-editing' => 'Ukuran kotak téks',
+'prefs-edit-boxsize' => 'Ukuran jandéla édit.',
+'rows' => 'Baris',
+'columns' => 'Kolom',
+'searchresultshead' => 'Aturan hasil néang',
+'resultsperpage' => 'Hasil nu ditémbongkeun per kaca',
+'contextlines' => 'Jumlah baris sakali némbongan',
+'contextchars' => 'Karakter kontéks per baris',
+'stub-threshold' => 'Wates ambang pikeun format <a href="#" class="stub">tumbu taratas</a> (bit):',
+'recentchangesdays' => 'Jumlah poé nu dipidangkeun dina Nu anyar robah:',
+'recentchangesdays-max' => 'Panglilana $1 {{PLURAL:$1|poé|poé}}',
+'recentchangescount' => 'Jumlah éditan anu ditémbongkeun ceuk bawaanana:',
+'prefs-help-recentchangescount' => 'Ieu ngawengku parobahan anyar, jujutan kaca, jeung log.',
+'savedprefs' => 'Préferénsi anjeun geus disimpen.',
+'timezonelegend' => 'Wewengkon wanci:',
+'localtime' => 'Wanci satempat:',
+'timezoneuseserverdefault' => 'Paké bawaan server',
+'timezoneuseoffset' => 'Lianna (tangtukeun bédana)',
+'timezoneoffset' => 'Béda:',
+'servertime' => 'Wanci server:',
+'guesstimezone' => 'Eusian ti panyungsi',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amérika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Samudra Atlantik',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Éropah',
+'timezoneregion-indian' => 'Samudra Indonésia',
+'timezoneregion-pacific' => 'Samudra Pasifik',
+'allowemail' => 'Buka koropak pikeun nampa surélék ti nu séjén',
+'prefs-searchoptions' => 'Piliheun Panéangan',
+'prefs-namespaces' => 'Ngaranspasi',
+'defaultns' => 'Téang ti antara spasingaran ieu luyu jeung ti dituna:',
+'default' => 'ti dituna',
+'prefs-files' => 'Koropak',
+'prefs-emailconfirm-label' => 'Konfirmasi surélék:',
+'prefs-textboxsize' => 'Lega jandéla ngédit',
+'youremail' => 'Surélék:',
+'username' => 'Landihan:',
+'uid' => 'ID pamaké:',
+'prefs-memberingroups' => 'Anggota {{PLURAL:$1|jumplukan|jumplukan}}:',
+'yourrealname' => 'Ngaran anjeun*',
+'yourlanguage' => 'Basa antarbeungeut',
+'yourvariant' => 'Varian basa',
+'yournick' => 'Landihan anjeun (pikeun tawis leungeun)',
+'badsig' => 'Parafna teu valid; pariksa tag HTML-na geura.',
+'badsiglength' => 'Tawis leungeun panjang teuing. Kuduna kurang ti $1 {{PLURAL:$1|karaktér|karaktér}}.',
+'gender-male' => 'Lalaki',
+'gender-female' => 'Awéwé',
+'email' => 'Surélék',
+'prefs-help-realname' => '* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.',
+'prefs-help-email' => 'Surélék sipatna pilihan, tapi ngawenangkeun hiji sandi anyar pikeun dikirimkeun ka anjeun lamun anjeun poho kana sandi anjeun. Anjeung ogé bisa milih pikeun ngawenangkeun batur bisa ngontak anjeun tina kaca pamaké atawa obrolanana tanpa kudu nyebutkeun idéntitas anjeun.',
+'prefs-help-email-required' => 'Alamat surélék dibutuhkeun.',
+'prefs-info' => 'Émbaran dasar',
+'prefs-i18n' => 'Internasionalisasi',
+'prefs-signature' => 'Tandatangan',
+'prefs-dateformat' => 'Format titimangsa',
+'prefs-timeoffset' => 'Format waktu',
+'prefs-diffs' => 'Béda',
# User rights
-'userrights' => 'Manajemén hak pamaké', # Not used as normal message but as header for the special page itself
+'userrights' => 'Manajemén hak pamaké',
'userrights-lookup-user' => 'Atur gorombolan pamaké',
'userrights-user-editname' => 'Asupkeun landihan:',
'editusergroup' => 'Édit Golongan Pamaké',
@@ -1142,6 +1199,8 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'right-proxyunbannable' => 'Abaikeun pengpeuk otomatis keur proxy',
'right-editinterface' => 'Édit antarbenget pamaké',
'right-editusercssjs' => 'Édit berkas CSS jeung JS pamaké séjén',
+'right-editusercss' => 'Édit berkas CSS pamaké séjén',
+'right-edituserjs' => 'Ngédit berkas JS pamaké séjén',
'right-import' => 'Ngimpor kaca ti wiki séjén',
'right-importupload' => 'Ngimpor kaca tina hiji koropak nu dimuat',
'right-patrol' => 'Nandaan éditan pamaké séjén minangka geus dipatroli',
@@ -1149,6 +1208,7 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'right-patrolmarks' => 'Tempo panandaan patroli nuanyar robah',
'right-mergehistory' => 'Ngagabungkeun jujutan kaca',
'right-userrights' => 'Édit kabeh hak pamaké',
+'right-sendemail' => 'Kirim surélék ka pamaké séjén',
# User rights log
'rightslog' => 'Log hak pamaké',
@@ -1190,6 +1250,12 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'recentchanges-legend' => 'Pilihan parobahan anyar',
'recentchangestext' => 'Lacak parobahan ka wiki panganyarna na kaca ieu.',
'recentchanges-feed-description' => 'Manggihan parobahan panganyarna dina wiki di asupan ieu.',
+'recentchanges-legend-newpage' => '$1 - kaca anyar',
+'recentchanges-label-newpage' => 'Ieu parobahan bakal ngahasillkeun kaca anyar',
+'recentchanges-legend-minor' => '$1 - éditan minor',
+'recentchanges-label-minor' => 'Ieu éditan minor',
+'recentchanges-legend-bot' => '$1 - robahan bot',
+'recentchanges-label-bot' => 'Ieu parobahan dijieun ku bot',
'rcnote' => "Di handap ieu {{PLURAL:$1|'''1''' parobahan| '''$1''' parobahan anyar}} dina {{PLURAL:$2|poé|'''$2''' poé}} ahir, nepi $5, $4.",
'rcnotefrom' => 'Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).',
'rclistfrom' => 'Témbongkeun nu anyar robah nepi ka $1',
@@ -1216,6 +1282,8 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
# Recent changes linked
'recentchangeslinked' => 'Parobahan nu patali',
+'recentchangeslinked-feed' => 'Parobahan nu patali',
+'recentchangeslinked-toolbox' => 'Parobahan nu patali',
'recentchangeslinked-title' => 'Parobahan patali ka "$1"',
'recentchangeslinked-noresult' => 'Dina selang waktu anu dipénta, euweuh parobahan dina kaca-kaca anu numbu.',
'recentchangeslinked-summary' => "Ieu kaca husus ngabéréndélkeun parobahan anyar anu numbu ti kaca husus (atawa uesi katagori husus). Kaca anu [[Special:Watchlist|diawaskeun]] némbongan '''kandel'''.",
@@ -1225,7 +1293,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
# Upload
'upload' => 'Muatkeun koropak',
'uploadbtn' => 'Muatkeun koropak',
-'reupload' => 'Muat ulang',
'reuploaddesc' => 'Balik ka formulir muatan.',
'uploadnologin' => 'Can asup log',
'uploadnologintext' => 'Anjeun kudu [[Special:UserLogin|asup log]] pikeun ngamuat koropak.',
@@ -1274,7 +1341,6 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'emptyfile' => "Koropak nu dimuatkeun ku anjeun jigana kosong. Hal ieu bisa jadi alatan sarupaning ''typo'' na ngaran koropakna. Mangga parios deui yén anjeun leres-leres hoyong ngamuat koropak éta.",
'fileexists' => "Koropak nu ngaranna kieu geus aya, mangga parios '''<tt>[[:$1]]</tt>''' mun anjeun teu yakin rék ngaganti.
[[$1|thumb]]",
-'fileexists-thumb' => "<center>'''Koropak nu aya'''</center>",
'fileexists-forbidden' => 'Koropak nu ngaranna ieu geus aya; mangga balik deui sarta muatkeun koropakna maké ngaran nu béda. [[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => "Koropak nu ngaranna ieu geus aya dina gudang koropak babagi (''shared file repository''); mangga balik deui sarta muatkeun koropak ieu maké ngaran nu béda. [[File:$1|thumb|center|$1]]",
'file-exists-duplicate' => 'Gambar ieu duplikat sareng {{PLURAL:$1|gambar|gambar}}:',
@@ -1286,23 +1352,37 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'uploaddisabled' => 'Punten, ngamuat ayeuna ditumpurkeun.',
'uploaddisabledtext' => 'Fungsi ngamuat koropak ditumpurkeun.',
'uploadscripted' => "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
-'uploadcorrupt' => 'Koropakna ruksak atawa salah éksténsina. Mangga muat ulang sanggeus dipariksa deui koropakna.',
'uploadvirus' => 'Koropakna ngandung virus! Katrangan: $1',
+'upload-source' => 'Koropak sumber',
'sourcefilename' => 'Ngaran koropak sumber:',
+'sourceurl' => 'URL sumber:',
'destfilename' => 'Ngaran koropak tujuan:',
'upload-maxfilesize' => 'Ukuran koropak panggedéna: $1',
+'upload-description' => 'Pedaran koropak',
+'upload-options' => 'Pilihan muat',
'watchthisupload' => 'Awaskeun ieu kaca',
'filewasdeleted' => 'Ngaran koropak ieu geus di hapus. Anjeun kudu ningali ka $1 sa acan muatkeun koropak deui',
-'upload-proto-error' => 'Salah protokol',
-'upload-file-error' => 'Kasalahan internal',
-'upload-misc-error' => 'Kasalahan muat anu teu kanyahoan',
+'upload-proto-error' => 'Salah protokol',
+'upload-file-error' => 'Kasalahan internal',
+'upload-misc-error' => 'Kasalahan muat anu teu kanyahoan',
+'upload-unknown-size' => 'Ukuran teu kanyahoan',
+
+# img_auth script messages
+'img-auth-nofile' => 'Berkas "$1" henteu aya.',
+'img-auth-noread' => 'Pamaké teu boga kawenangan maca "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL teu bener: $1',
+'http-invalid-scheme' => 'URL anu skémana "$ 1" teu karojong',
+'http-host-unreachable' => 'URL teu kahontal.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL teu kahontal',
'upload-curl-error28' => 'Seep waktos kanggo muatkeun',
'license' => 'Lisénsi:',
+'license-header' => 'Lisénsi',
'nolicense' => 'Taya nu dipilih',
'license-nopreview' => '(euweuh pramidang)',
'upload_source_url' => '(URL nu sohéh sarta bisa dibuka ku umum)',
@@ -1320,6 +1400,7 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'listfiles_count' => 'Vérsi',
# File description page
+'file-anchor-link' => 'Gambar',
'filehist' => 'Sajarah gambar',
'filehist-help' => 'Klik dina titimangsa pikeun nempo koropak nu aya dina mangsa éta.',
'filehist-deleteall' => 'hapus kabéh',
@@ -1328,21 +1409,18 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'filehist-current' => 'kiwari',
'filehist-datetime' => 'Titimangsa',
'filehist-thumb' => 'Thumbnail',
+'filehist-thumbtext' => "'Thumbnail' pikeun vérsi mangsa $1",
'filehist-user' => 'Pamaké',
'filehist-dimensions' => 'Ukuran',
'filehist-filesize' => 'Ukuran koropak',
'filehist-comment' => 'Kamandang',
+'filehist-missing' => 'Berkas leungit',
'imagelinks' => 'Tumbu koropak',
'linkstoimage' => 'Kaca ieu {{PLURAL:$1|numbu|$1 numbu}} ka gambar ieu :',
'nolinkstoimage' => 'Teu aya kaca nu numbu ka gambar ieu.',
-'sharedupload' => 'Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Mangga aos $1 pikeun émbaran leuwih jéntré.',
-'shareduploadwiki-desc' => 'Pedaran dina $1 alatan dipidangkeun di handap ieu.',
-'shareduploadwiki-linktext' => 'kaca pedaran koropak',
-'noimage' => 'Euweuh koropak nu ngaranna kitu, tapi anjeun bisa $1.',
-'noimage-linktext' => 'muatkeun',
+'sharedupload' => 'Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.',
'uploadnewversion-linktext' => 'ngamuatkeun vérsi anyar koropak ieu',
-'shared-repo-from' => 'ti $1', # $1 is the repository name
+'shared-repo-from' => 'ti $1',
# File reversion
'filerevert' => 'balikkeun $1',
@@ -1404,6 +1482,7 @@ Saméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.',
'statistics-header-edits' => 'Statistik éditan',
'statistics-header-views' => 'Statistik pidangan',
'statistics-header-users' => 'Statistik pamaké',
+'statistics-header-hooks' => 'Statistika lianna',
'statistics-articles' => 'Halaman eusi',
'statistics-pages' => 'Kaca',
'statistics-pages-desc' => 'Sakabéh kaca di ieu wiki, kaasup kaca obrolan, alihan, jeung nu lianna.',
@@ -1423,8 +1502,8 @@ Sahiji kaca dianggap minangka kaca disambiguasi lamun kaca kasebut ngagunakeun c
'brokenredirects' => 'Alihan buntu',
'brokenredirectstext' => 'Alihan di handap numbu ka kaca nu teu aya:',
-'brokenredirects-edit' => '(édit)',
-'brokenredirects-delete' => '(hapus)',
+'brokenredirects-edit' => 'édit',
+'brokenredirects-delete' => 'hapus',
'withoutinterwiki' => 'Kaca-kaca tanpa tumbu basa',
'withoutinterwiki-summary' => 'Kaca-kaca di handap ieu teu numbu ka vérsi basa séjén:',
@@ -1547,6 +1626,12 @@ Baca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].',
'listusersfrom' => 'Témbongkeun pamaké nu dimimitian ku',
'listusers-submit' => 'Témbongkeun',
'listusers-noresult' => 'Teu kapendak.',
+'listusers-blocked' => '(diblokir)',
+
+# Special:ActiveUsers
+'activeusers' => 'Béréndélan pamaké nu getol',
+'activeusers-hidebots' => 'Sumputkeun bot',
+'activeusers-hidesysops' => 'Sumputkeun kuncén',
# Special:Log/newusers
'newuserlogpage' => 'Log pamaké anyar',
@@ -1665,7 +1750,7 @@ Asupan jeung bantuan salajengna:
'exblank' => 'kaca ieu kosong',
'delete-confirm' => 'Hapus "$1"',
'delete-legend' => 'Hapus',
-'historywarning' => 'Perhatosan: Kaca nu rék dihapus mibanda',
+'historywarning' => "'''Awas:''' kaca nu rék dihapus mibanda jujutan kira $1 {{PLURAL:$1|révisi|révisi}}:",
'confirmdeletetext' => 'Anjeun rék ngahapus hiji kaca atawa gambar katut jujutanana tina pangkalan data, mangga yakinkeun yén anjeun mémang niat midamel ieu, yén anjeun ngartos kana sagala konsékuénsina, sarta yén anjeun ngalakukeun ieu saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan {{SITENAME}}]].',
'actioncomplete' => 'Peta geus réngsé',
'deletedtext' => '"<nowiki>$1</nowiki>" geus dihapus. Tempo $2 pikeun rékaman hapusan anyaran ieu.',
@@ -1695,8 +1780,8 @@ Hal ieu teu diwenangkeun pikeun nyegah karuksakan {{SITENAME}} nu teu dihaja.',
'alreadyrolled' => 'Teu bisa mulangkeun édit ahir [[$1]] ku [[User:$2|$2]] ([[User talk:$2|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); geus aya nu ngédit atawa mulangkeun kacana.
Édit ahir ku [[User:$3|$3]] ([[User talk:$3|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Komentar ngéditna: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Malikkeun éditan $2, diganti deui ka vérsi ahir ku $1', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Komentar ngéditna: \"''\$1''\".",
+'revertpage' => 'Malikkeun éditan $2, diganti deui ka vérsi ahir ku $1',
'rollback-success' => 'Mulangkeun éditan $1; balik deui ka vérsi panungtung ku $2.',
'sessionfailure' => 'Sigana aya masalah jeung termin log anjeun; peta ieu geus dibolaykeun salaku pépéling pikeun ngalawan ayana pangbajak. Mangga pencét "back" jeung muat ulang ti kaca asal anjeun, lajeng cobaan deui.',
@@ -1713,7 +1798,6 @@ Hal ieu teu diwenangkeun pikeun nyegah karuksakan {{SITENAME}} nu teu dihaja.',
'protectexpiry' => 'Kadaluwarsa',
'protect_expiry_invalid' => 'Waktu kadaluwarsa teu sah.',
'protect_expiry_old' => 'Waktu kadaluwarsa geus kaliwat.',
-'protect-unchain' => 'Buka konci pamindahan',
'protect-text' => "Di dieu anjeun bisa nempo sarta ngarobah hambalan pangonci pikeun kaca '''$1'''.",
'protect-locked-blocked' => "Anjeun teu bisa ngarobah hambalan koncian sabab keur dipeungpeuk. Setélan ayeuna pikeun kaca '''$1''' nyaéta:",
'protect-locked-access' => "Rekening anjeun teu wenang ngarobah hambalan pangonci kaca. Kaca '''$1''' disetél:",
@@ -1736,7 +1820,7 @@ Hal ieu teu diwenangkeun pikeun nyegah karuksakan {{SITENAME}} nu teu dihaja.',
** Spamming kamalinaan
** Perang éditan
** Kaca loba pisan diédit',
-'protect-expiry-options' => 'sajam:1 hour,sapoé:1 day,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,salilana:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'sajam:1 hour,sapoé:1 day,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,salilana:infinite',
'restriction-type' => 'Ngonci:',
'restriction-level' => 'Hambalan ngonci:',
'minimum-size' => 'Ukuran minimum',
@@ -1804,18 +1888,23 @@ $1',
'contributions-title' => 'Sumbangan tulisan ti $1',
'mycontris' => 'Tulisan kuring',
'contribsub2' => 'Pikeun $1 ($2)',
-'nocontribs' => 'Taya robahan nu kapanggih cocog jeung patokan ieu.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Taya robahan nu kapanggih cocog jeung patokan ieu.',
'uctop' => ' (tempo)',
'month' => 'Ti bulan (jeung saméméhna):',
'year' => 'Ti taun (jeung saméméhna):',
-'sp-contributions-newbies' => 'Témbongkeun kontribusi ti rekening anyar',
-'sp-contributions-newbies-sub' => 'Pikeun rekening anyar',
-'sp-contributions-blocklog' => 'log peungpeuk',
-'sp-contributions-logs' => 'log',
-'sp-contributions-search' => 'Téang kontribusi',
-'sp-contributions-username' => 'Alamat IP atawa landihan:',
-'sp-contributions-submit' => 'Téang',
+'sp-contributions-newbies' => 'Témbongkeun kontribusi ti rekening anyar',
+'sp-contributions-newbies-sub' => 'Pikeun rekening anyar',
+'sp-contributions-blocklog' => 'log peungpeuk',
+'sp-contributions-deleted' => 'kontribusi nu dihapus',
+'sp-contributions-logs' => 'log',
+'sp-contributions-talk' => 'obrolan',
+'sp-contributions-userrights' => 'ngatur hak pamaké',
+'sp-contributions-blocked-notice' => 'Ieu pamaké keur dipeungpeuk.
+Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
+'sp-contributions-search' => 'Téang kontribusi',
+'sp-contributions-username' => 'Alamat IP atawa landihan:',
+'sp-contributions-submit' => 'Téang',
# What links here
'whatlinkshere' => 'Nu numbu ka dieu',
@@ -1838,6 +1927,7 @@ $1',
# Block/unblock
'blockip' => 'Peungpeuk pamaké',
+'blockip-title' => 'Peungpeuk pamaké',
'blockip-legend' => 'Peungpeuk pamaké',
'blockiptext' => 'Paké formulir di handap pikeun meungpeuk aksés nulis ti alamat IP atawa ngaran pamaké husus. Ieu sakuduna ditujukeun pikeun nyegah vandalisme, sarta saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan]]. Eusi alesan nu jéntré (misal, ngarujuk kaca tinangtu nu geus diruksak).',
'ipaddress' => 'Alamat IP/ngaran pamaké',
@@ -1851,7 +1941,7 @@ $1',
'ipbenableautoblock' => 'Peungpeuk sacara otomatis alamat IP anu panungtungan dipaké ku pamaké sarta sakabéh alamat IP anu kungsi dipaké.',
'ipbsubmit' => 'Peungpeuk pamaké ieu',
'ipbother' => 'Waktu séjén',
-'ipboptions' => '2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite',
'ipbotheroption' => 'séjénna',
'ipbotherreason' => 'Alesan séjén/tambahan',
'ipbhidename' => 'Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké',
@@ -1958,7 +2048,7 @@ Dina kajadian kitu, mun hayang (jeung perlu) anjeun kudu mindahkeun atawa ngagab
'move-watch' => 'Awaskeuneun kaca ieu',
'movepagebtn' => 'Pindahkeun kaca',
'pagemovedsub' => 'Mindahkeun geus hasil!',
-'movepage-moved' => '\'\'\'"$1" geus dipindahkeun ka "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" geus dipindahkeun ka "$2"\'\'\'',
'articleexists' => 'Kaca nu ngaranna kitu geus aya, atawa ngaran nu dipilih ku anjeun teu sah. Mangga pilih ngaran séjén.',
'cantmove-titleprotected' => 'Anjeun teu bisa mindahkeun kaca ka dieu, sabab éta judul dikonci',
'talkexists' => 'Kacana geus hasil dipindahkeun, ngan kaca obrolanana teu bisa dipindahkeun sabab geus aya nu anyar na judul anyar. Mangga gabungkeun sacara manual.',
@@ -1993,6 +2083,10 @@ Artikel nu dituju "[[:$1]]" geus aya. Badé dihapus baé sangkan bisa mindahkeun
'imagetypemismatch' => 'Éksténsi koropak anyar teu cocog jeung tipena',
'imageinvalidfilename' => 'Ngaran koropak tujuan teu sah',
'fix-double-redirects' => 'Hadéan sakabéh alihan ganda nu mungkin kajadian',
+'protectedpagemovewarning' => "'''Awas:''' ieu kaca geus dikonci sarta ngan bisa dipindahkeun ku pamaké nu boga kawenangan kuncén.
+Pikeun rujukan, éntri log panungtung dipidangkeun di handap:",
+'semiprotectedpagemovewarning' => "'''Awas:''' ieu kaca geus dikonci sarta ukur bisa dipindahkeun ku pamaké nu geus asup log.
+Pikeun rujukan, éntri log panungtung dipidangkeun di handap:",
# Export
'export' => 'Ékspor kaca',
@@ -2013,8 +2107,10 @@ Artikel nu dituju "[[:$1]]" geus aya. Badé dihapus baé sangkan bisa mindahkeun
'allmessagescurrent' => 'Téks kiwari',
'allmessagestext' => 'Ieu mangrupa daptar talatah sistim nu aya na spasi ngaran MediaWiki:.',
'allmessagesnotsupportedDB' => "Kaca ieu teu dirojong sabab '''\$wgUseDatabaseMessages''' pareum.",
-'allmessagesfilter' => 'Saringan ngaran talatah:',
-'allmessagesmodified' => 'Témbongkeun ukur nu robah',
+'allmessages-filter-legend' => 'Ayakan',
+'allmessages-filter-all' => 'Kabéh',
+'allmessages-language' => 'Basa:',
+'allmessages-filter-submit' => 'Jung',
# Thumbnails
'thumbnail-more' => 'Gedéan',
@@ -2093,6 +2189,7 @@ Sadaya aktivitas impor transwiki baris kacatet dina [[Special:Log/import|log imp
'tooltip-search-fulltext' => 'Sungsi kaca-kaca nu ngandung tulisan ieu',
'tooltip-p-logo' => 'Tepas',
'tooltip-n-mainpage' => 'Sindang ka Tepas',
+'tooltip-n-mainpage-description' => 'Sindang ka Tepas',
'tooltip-n-portal' => 'Ngeunaan proyékna, naon nu bisa dipigawé, di mana néangan naon',
'tooltip-n-currentevents' => 'Panggihan iber ngeunaan naon baé nu keur lumangsung',
'tooltip-n-recentchanges' => 'Daptar nu anyar robah na wiki.',
@@ -2142,7 +2239,7 @@ Cara kieu bisa nambahkeun alesan dina ringkesanana.',
# Attribution
'anonymous' => '{{PLURAL:$1|Pamaké|Pamaké-pamaké}} anonim di {{SITENAME}}',
'siteuser' => 'Pamaké $1 {{SITENAME}}',
-'lastmodifiedatby' => 'Kaca ieu panungtungan dirobah $2, $1 ku $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Kaca ieu panungtungan dirobah $2, $1 ku $3.',
'othercontribs' => 'Dumasar karya $1.',
'others' => 'Séjénna',
'siteusers' => '{{PLURAL:$2|Pamaké|Pamaké-pamaké}} {{SITENAME}} $1',
@@ -2170,6 +2267,16 @@ Sigana mah ieu téh alatan tumbu ka loka luar.',
'mw_math_modern' => 'Dianjurkeun pikeun panyungsi modérn',
'mw_math_mathml' => 'Mun bisa MathML (uji coba)',
+# Math errors
+'math_failure' => "Peta ''parse'' gagal",
+'math_unknown_error' => 'Kasalahan teu kanyahoan',
+'math_unknown_function' => 'fungsi teu kanyahoan',
+'math_lexing_error' => 'kasalahan lexing',
+'math_syntax_error' => 'Kasalahan rumpaka',
+'math_image_error' => 'Konversi PNG gagal; pastikeun yén latex, dvips, gs, jeung convert geus bener nginstalna',
+'math_bad_tmpdir' => 'Henteu bisa nulis atawa nyieun direktori samentara math',
+'math_bad_output' => 'Henteu bisa nulisikeun atawa nyieun direktori keluaran math',
+
# Patrolling
'markaspatrolleddiff' => 'Tandaan salaku geus diriksa',
'markaspatrolledtext' => 'Tandaan artikel ieu salaku geus diriksa',
@@ -2199,9 +2306,6 @@ $1',
'previousdiff' => '← Éditan saméméhna',
'nextdiff' => 'Éditan salajengna →',
-# Visual comparison
-'visual-comparison' => 'Babandingan visual',
-
# Media information
'imagemaxsize' => 'Watesan gambar na kaca dadaran gambar nepi ka:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|kaca|kaca}}',
@@ -2239,7 +2343,7 @@ Ngan daptar butiran (jajar anu dimimitian ku tanda *) anu diitung. Tumbu kahiji
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lega',
@@ -2307,14 +2411,14 @@ Ngan daptar butiran (jajar anu dimimitian ku tanda *) anu diitung. Tumbu kahiji
'exif-gpsdatestamp' => 'Titimangsa GPS',
'exif-gpsdifferential' => 'Koréksi diferensial GPS',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Dibalikkeun horizontal', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Diputer 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Dibalikkeun vértikal', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Diputer 90° CCW jeung dibalikkeun vértikal', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Diputer 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Diputer 90° CW jeung dibalikkeun vértikal', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Diputer 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Dibalikkeun horizontal',
+'exif-orientation-3' => 'Diputer 180°',
+'exif-orientation-4' => 'Dibalikkeun vértikal',
+'exif-orientation-5' => 'Diputer 90° CCW jeung dibalikkeun vértikal',
+'exif-orientation-6' => 'Diputer 90° CW',
+'exif-orientation-7' => 'Diputer 90° CW jeung dibalikkeun vértikal',
+'exif-orientation-8' => 'Diputer 90° CCW',
'exif-planarconfiguration-2' => 'format datar',
@@ -2401,7 +2505,7 @@ Ngan daptar butiran (jajar anu dimimitian ku tanda *) anu diitung. Tumbu kahiji
'exif-gpsmeasuremode-2' => 'Ukuran 2-diménsi',
'exif-gpsmeasuremode-3' => 'Ukuran 3-diménsi',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilométer per jam',
'exif-gpsspeed-m' => 'Mil per jam',
'exif-gpsspeed-n' => 'Knot',
@@ -2419,6 +2523,7 @@ Ngan daptar butiran (jajar anu dimimitian ku tanda *) anu diitung. Tumbu kahiji
'watchlistall2' => 'sadaya',
'namespacesall' => 'kabéh',
'monthsall' => 'kabéh',
+'limitall' => 'kabéh',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat surélék',
@@ -2531,7 +2636,7 @@ Coba ku sawangan normal.',
'unknown_extension_tag' => 'Tag éksténsi "$1" teu dipikawanoh',
# Special:Version
-'version' => 'Vérsi', # Not used as normal message but as header for the special page itself
+'version' => 'Vérsi',
'version-extensions' => 'Éksténsi nu diinstal',
'version-specialpages' => 'Kaca husus',
'version-parserhooks' => 'Kait parser',
@@ -2543,7 +2648,7 @@ Coba ku sawangan normal.',
'version-skin-extension-functions' => 'Fungsi éksténsi kulit',
'version-hook-name' => 'Ngaran kait',
'version-hook-subscribedby' => 'Didaptarkeun ku',
-'version-version' => 'Vérsi',
+'version-version' => '(Vérsi $1)',
'version-license' => 'Lisénsi',
'version-software' => 'Sopwér nu geus diinstal',
'version-software-product' => 'Produk',
@@ -2598,4 +2703,13 @@ Coba ku sawangan normal.',
'dberr-info' => '(Teu bisa nyambung jeung server pangkalan data: $1)',
'dberr-usegoogle' => 'Kanggo samentawis, tiasa dicobi milari di Google.',
+# HTML forms
+'htmlform-select-badoption' => 'Niléy anu diasupkeun teu bener.',
+'htmlform-float-invalid' => 'Niléy anu diasupkeun lain angka.',
+'htmlform-int-toolow' => 'Niléy anu diasupkeun kurang ti $1 anu pangleutikna',
+'htmlform-int-toohigh' => 'Niléy anu diasupkeun leuwih ti $1 anu panggedéna',
+'htmlform-submit' => 'Kirim',
+'htmlform-reset' => 'Bolaykeun parobahan',
+'htmlform-selectorother-other' => 'Lianna',
+
);
diff --git a/languages/messages/MessagesSv.php b/languages/messages/MessagesSv.php
index 1041c657..af6730f3 100644
--- a/languages/messages/MessagesSv.php
+++ b/languages/messages/MessagesSv.php
@@ -7,8 +7,10 @@
* @ingroup Language
* @file
*
+ * @author Ainali
* @author Boivie
* @author Fluff
+ * @author GameOn
* @author Grillo
* @author Habj
* @author Habjchen
@@ -26,6 +28,7 @@
* @author Per
* @author Petter Strandmark
* @author Poxnar
+ * @author Purodha
* @author S.Örvarr.S
* @author Sannab
* @author Sertion
@@ -33,6 +36,7 @@
* @author StefanB
* @author Steinninn
* @author Where next Columbus
+ * @author Where next Columbus?
* @author לערי ריינהארט
*/
@@ -158,7 +162,9 @@ $magicWords = array(
'forcetoc' => array( '0', '__ALLTIDINNEHÅLLSFÖRTECKNING__', '__FORCETOC__' ),
'toc' => array( '0', '__INNEHÅLLSFÖRTECKNING__', '__TOC__' ),
'noeditsection' => array( '0', '__INTEREDIGERASEKTION__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'NUVARANDEMÅNAD', 'NUMÅNAD', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__INGENRUBRIK__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'NUVARANDEMÅNAD', 'NUMÅNAD', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'NUVARANDEMÅNAD1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'NUVARANDEMÅNADSNAMN', 'NUMÅNADSNAMN', 'CURRENTMONTHNAME' ),
'currentmonthabbrev' => array( '1', 'NUVARANDEMÅNADKORT', 'NUMÅNADKORT', 'CURRENTMONTHABBREV' ),
'currentday' => array( '1', 'NUVARANDEDAG', 'NUDAG', 'CURRENTDAY' ),
@@ -167,7 +173,8 @@ $magicWords = array(
'currentyear' => array( '1', 'NUVARANDEÅR', 'NUÅR', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'NUVARANDETID', 'NUTID', 'CURRENTTIME' ),
'currenthour' => array( '1', 'NUVARANDETIMME', 'NUTIMME', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'LOKALMÅNAD', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'LOKALMÅNAD', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALMÅNAD1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'LOKALMÅNADSNAMN', 'LOCALMONTHNAME' ),
'localmonthabbrev' => array( '1', 'LOKALMÅNADKORT', 'LOCALMONTHABBREV' ),
'localday' => array( '1', 'LOKALDAG', 'LOCALDAY' ),
@@ -180,7 +187,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'ANTALARTIKLAR', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'ANTALFILER', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'ANTALANVÄNDARE', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'ANTALAKTIVAANVÄNDARE', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'ANTALREDIGERINGAR', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'ANTALVISNINGAR', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'SIDNAMN', 'PAGENAME' ),
'pagenamee' => array( '1', 'SIDNAMNE', 'PAGENAMEE' ),
'namespace' => array( '1', 'NAMNRYMD', 'NAMESPACE' ),
@@ -193,19 +202,25 @@ $magicWords = array(
'fullpagenamee' => array( '1', 'HELASIDNAMNETE', 'FULLPAGENAMEE' ),
'subpagename' => array( '1', 'UNDERSIDNAMN', 'SUBPAGENAME' ),
'subpagenamee' => array( '1', 'UNDERSIDNAMNE', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'GRUNDSIDNAMN', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'GRUNDSIDNAMNE', 'BASEPAGENAMEE' ),
'talkpagename' => array( '1', 'DISKUSSIONSSIDNAMN', 'TALKPAGENAME' ),
'talkpagenamee' => array( '1', 'DISKUSSIONSSIDNAMNE', 'TALKPAGENAMEE' ),
'msg' => array( '0', 'MED:', 'MSG:' ),
'subst' => array( '0', 'BYT:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'MEDNW:', 'MSGNW:' ),
'img_thumbnail' => array( '1', 'miniatyr', 'mini', 'thumbnail', 'thumb' ),
'img_manualthumb' => array( '1', 'miniatyr=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'höger', 'right' ),
'img_left' => array( '1', 'vänster', 'left' ),
'img_none' => array( '1', 'ingen', 'none' ),
+ 'img_center' => array( '1', 'centrerad', 'center', 'centre' ),
'img_framed' => array( '1', 'inramad', 'ram', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'ramlös', 'frameless' ),
'img_page' => array( '1', 'sida=$1', 'sida $1', 'page=$1', 'page $1' ),
- 'img_border' => array( '1', 'ram', 'border' ),
+ 'img_upright' => array( '1', 'stående', 'stående=$1', 'stående $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'kantlinje', 'border' ),
+ 'img_baseline' => array( '1', 'baslinje', 'baseline' ),
'img_sub' => array( '1', 'ned', 'sub' ),
'img_super' => array( '1', 'upp', 'super', 'sup' ),
'img_top' => array( '1', 'topp', 'top' ),
@@ -232,6 +247,7 @@ $magicWords = array(
'revisionmonth' => array( '1', 'REVISIONSMÅNAD', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'REVISIONSÅR', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'REVISIONSTIDSSTÄMPEL', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'REVISIONSANVÄNDARE', 'REVISIONUSER' ),
'fullurl' => array( '0', 'FULLURL:. FULLTURL:', 'FULLURL:' ),
'fullurle' => array( '0', 'FULLTURLE:', 'FULLURLE:' ),
'lcfirst' => array( '0', 'LBFÖRST:', 'LCFIRST:' ),
@@ -246,13 +262,21 @@ $magicWords = array(
'localtimestamp' => array( '1', 'LOKALTIDSTÄMPEL', 'LOCALTIMESTAMP' ),
'language' => array( '0', '#SPRÅK:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', 'INNEHÅLLSSPRÅK', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'SIDORINAMNRYMD:', 'SIDORINR:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'ANTALADMINS', 'ANTALADMINISTRATÖRER', 'NUMBEROFADMINS' ),
+ 'formatnum' => array( '0', 'FORMATERANUM', 'FORMATERATAL', 'FORMATNUM' ),
'defaultsort' => array( '1', 'STANDARDSORTERING:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'FILSÖKVÄG:', 'FILEPATH:' ),
'tag' => array( '0', 'tagg', 'tag' ),
'hiddencat' => array( '1', '__DOLDKAT__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'SIDORIKATEGORI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'SIDSTORLEK', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEXERA__', '__INDEX__' ),
+ 'noindex' => array( '1', '__INTEINDEXERA_', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'ANTALIGRUPP', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__STATISKOMDIRIGERING__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'SKYDDSNIVÅ', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formateradatum', 'datumformat', 'formatdate', 'dateformat' ),
);
$linkTrail = '/^([a-zåäöéÅÄÖÉ]+)(.*)$/sDu';
@@ -306,6 +330,7 @@ $messages = array(
'tog-enotifminoredits' => 'Skicka mig e-post även för mindre ändringar',
'tog-enotifrevealaddr' => 'Visa min e-postadress i e-postmeddelanden om ändringar som skickas till andra',
'tog-shownumberswatching' => 'Visa antalet användare som bevakar',
+'tog-oldsig' => 'Förhandsvisning av nuvarande signatur:',
'tog-fancysig' => 'Rå signatur som wikitext (utan en automatisk länk)',
'tog-externaleditor' => 'Använd extern texteditor som standard (avancerat, kräver speciella inställningar i din dator)',
'tog-externaldiff' => 'Använd externt diff-verktyg (avancerat, kräver speciella inställningar i din dator)',
@@ -329,6 +354,13 @@ $messages = array(
'underline-never' => 'Aldrig',
'underline-default' => 'Webbläsarens standardinställning',
+# Font style option in Special:Preferences
+'editfont-style' => 'Typsnitt i redigeringsrutan:',
+'editfont-default' => 'Webbläsarens standard',
+'editfont-monospace' => 'Fast bredd',
+'editfont-sansserif' => 'Sans-serif',
+'editfont-serif' => 'Serif',
+
# Dates
'sunday' => 'söndag',
'monday' => 'måndag',
@@ -388,7 +420,7 @@ $messages = array(
'category-media-header' => 'Media i kategorin "$1"',
'category-empty' => "''Den här kategorin innehåller just nu inga sidor eller filer.''",
'hidden-categories' => '{{PLURAL:$1|Dold kategori|Dolda kategorier}}',
-'hidden-category-category' => 'Dolda kategorier', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Dolda kategorier',
'category-subcat-count' => '{{PLURAL:$2|Denna kategori har endast följande underkategori.|Denna kategori har följande {{PLURAL:$1|underkategori|$1 underkategorier}} (av totalt $2).}}',
'category-subcat-count-limited' => 'Denna kategori har följande {{PLURAL:$1|underkategori|$1 underkategorier}}.',
'category-article-count' => '{{PLURAL:$2|Denna kategori innehåller endast följande sida.|Följande {{PLURAL:$1|sida|$1 sidor}} (av totalt $2) finns i denna kategori.}}',
@@ -396,6 +428,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Denna kategori innehåller endast följande fil.|Följande {{PLURAL:$1|fil|$1 filer}} (av totalt $2) finns i denna kategori.}}',
'category-file-count-limited' => 'Följande {{PLURAL:$1|fil |$1 filer}} finns i den här kategorin.',
'listingcontinuesabbrev' => 'forts.',
+'index-category' => 'Indexerade sidor',
+'noindex-category' => 'Icke-indexerade sidor',
'mainpagetext' => "'''MediaWiki har installerats utan problem.'''",
'mainpagedocfooter' => 'Information om hur wiki-programvaran används finns i [http://meta.wikimedia.org/wiki/Help:Contents användarguiden].
@@ -406,10 +440,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mail list]',
-'about' => 'Om',
-'article' => 'Innehållssida',
-'newwindow' => '(öppnas i ett nytt fönster)',
-'cancel' => 'Avbryt',
+'about' => 'Om',
+'article' => 'Innehållssida',
+'newwindow' => '(öppnas i ett nytt fönster)',
+'cancel' => 'Avbryt',
+'moredotdotdot' => 'Mer...',
+'mypage' => 'Min sida',
+'mytalk' => 'Min diskussion',
+'anontalk' => 'Diskussionssida för denna IP-adress',
+'navigation' => 'Navigering',
+'and' => '&#32;och',
+
+# Cologne Blue skin
'qbfind' => 'Hitta',
'qbbrowse' => 'Bläddra igenom',
'qbedit' => 'Redigera',
@@ -417,15 +459,35 @@ $messages = array(
'qbpageinfo' => 'Sidinformation',
'qbmyoptions' => 'Mina inställningar',
'qbspecialpages' => 'Specialsidor',
-'moredotdotdot' => 'Mer...',
-'mypage' => 'Min sida',
-'mytalk' => 'Min diskussion',
-'anontalk' => 'Diskussionssida för denna IP-adress',
-'navigation' => 'Navigering',
-'and' => '&#32;och',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Nytt ämne',
+'vector-action-delete' => 'Radera',
+'vector-action-move' => 'Flytta',
+'vector-action-protect' => 'Skrivskydda',
+'vector-action-undelete' => 'Återställ',
+'vector-action-unprotect' => 'Ta bort skrivskydd',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Hjälpsida',
+'vector-namespace-image' => 'Fil',
+'vector-namespace-main' => 'Sida',
+'vector-namespace-media' => 'Mediasida',
+'vector-namespace-mediawiki' => 'Systemmeddelande',
+'vector-namespace-project' => 'Projektsida',
+'vector-namespace-special' => 'Specialsida',
+'vector-namespace-talk' => 'Diskussion',
+'vector-namespace-template' => 'Mall',
+'vector-namespace-user' => 'Användarsida',
+'vector-view-create' => 'Skapa',
+'vector-view-edit' => 'Redigera',
+'vector-view-history' => 'Visa historik',
+'vector-view-view' => 'Visa',
+'vector-view-viewsource' => 'Visa källa',
+'actions' => 'Åtgärder',
+'namespaces' => 'Namnrymder',
+'variants' => 'Varianter',
'errorpagetitle' => 'Fel',
'returnto' => 'Tillbaka till $1.',
@@ -475,18 +537,22 @@ $messages = array(
'otherlanguages' => 'På andra språk',
'redirectedfrom' => '(Omdirigerad från $1)',
'redirectpagesub' => 'Omdirigeringssida',
-'lastmodifiedat' => 'Sidan ändrades senast den $1 kl. $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Sidan ändrades senast den $1 kl. $2.',
'viewcount' => 'Den här sidan har visats {{PLURAL:$1|en gång|$1 gånger}}.',
'protectedpage' => 'Skrivskyddad sida',
'jumpto' => 'Hoppa till:',
'jumptonavigation' => 'navigering',
'jumptosearch' => 'sök',
+'view-pool-error' => 'Tyvärr är servrarna överbelastade för tillfället.
+För många användare försöker visa denna sida.
+Vänta en liten stund och försök igen lite senare.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Om {{SITENAME}}',
'aboutpage' => 'Project:Om',
'copyright' => 'Innehållet är tillgängligt under $1.',
-'copyrightpagename' => 'upphovsrätt på {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Upphovsrätt',
'currentevents' => 'Aktuella händelser',
'currentevents-url' => 'Project:Aktuella händelser',
@@ -494,8 +560,6 @@ $messages = array(
'disclaimerpage' => 'Project:Allmänt förbehåll',
'edithelp' => 'Redigeringshjälp',
'edithelppage' => 'Help:Redigering',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Innehåll',
'mainpage' => 'Huvudsida',
'mainpage-description' => 'Huvudsida',
@@ -575,10 +639,6 @@ Senaste sökbegrepp var:
"$1"
från funktionen "$2".
Databasen svarade med felmeddelandet "$3: $4"',
-'noconnect' => 'Wikin har tekniska problem, och kan inte få kontakt med databasservern.<br />
-$1',
-'nodb' => 'Kunde inte välja databasen $1',
-'cachederror' => 'Detta är en cachad kopia av den efterfrågade sidan. Det är inte säkert att den är aktuell.',
'laggedslavemode' => 'Varning: Sidan kan sakna de senaste uppdateringarna.',
'readonly' => 'Databasen är skrivskyddad',
'enterlockreason' => 'Ange varför sidan skrivskyddats, och ge en uppskattning av hur länge skrivskyddet bör behållas.',
@@ -596,6 +656,8 @@ Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör
'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
'internalerror' => 'Internt fel',
'internalerror_info' => 'Internt fel: $1',
+'fileappenderrorread' => 'Kunde inte läsa "$1" medan data skulle tillföras.',
+'fileappenderror' => 'Kunde inte bifoga "$1" till "$2".',
'filecopyerror' => 'Kunde inte kopiera filen "$1" till "$2".',
'filerenameerror' => 'Kunde inte byta namn på filen "$1" till "$2".',
'filedeleteerror' => 'Kunde inte radera filen "$1".',
@@ -605,8 +667,8 @@ Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör
'unexpected' => 'Oväntat värde: "$1"="$2".',
'formerror' => 'Fel: Kunde inte sända formulär',
'badarticleerror' => 'Den åtgärden kan inte utföras på den här sidan.',
-'cannotdelete' => 'Det gick inte att radera den angivna sidan eller filen.
-Den kanske redan blivit raderad av någon annan.',
+'cannotdelete' => 'Sidan eller filen "$1" kunde inte raderas.
+Den kanske redan har raderats av någon annan.',
'badtitle' => 'Felaktig titel',
'badtitletext' => 'Den begärda sidtiteln är antingen ogiltig eller tom, eller så är titeln felaktigt länkad från en annan wiki.
Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
@@ -638,7 +700,6 @@ Den uppgivna anledningen är "\'\'$2\'\'".',
'virus-unknownscanner' => 'okänt antivirusprogram:',
# Login and logout pages
-'logouttitle' => 'Användarutloggning',
'logouttext' => "'''Du är nu utloggad.'''
Du kan fortsätta att använda {{SITENAME}} anonymt, eller så kan du [[Special:UserLogin|logga in igen]] som samma eller som en annan användare.
@@ -646,7 +707,6 @@ Observera att det, tills du tömmer din webbläsares cache, på vissa sidor kan
'welcomecreation' => '== Välkommen, $1! ==
Ditt konto har skapats.
Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].',
-'loginpagetitle' => 'Användarinloggning',
'yourname' => 'Användarnamn:',
'yourpassword' => 'Lösenord:',
'yourpasswordagain' => 'Upprepa lösenord',
@@ -657,6 +717,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
'nav-login-createaccount' => 'Logga in / skapa konto',
'loginprompt' => 'Du måste tillåta cookies för att logga in på {{SITENAME}}.',
'userlogin' => 'Logga in / skapa konto',
+'userloginnocreate' => 'Logga in',
'logout' => 'Logga ut',
'userlogout' => 'Logga ut',
'notloggedin' => 'Inte inloggad',
@@ -669,28 +730,8 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
'badretype' => 'De lösenord du uppgett överenstämmer inte med varandra.',
'userexists' => 'Det valda användarnamnet används redan.
Välj ett annat namn.',
-'youremail' => 'E-post:',
-'username' => 'Användarnamn:',
-'uid' => 'Användar-ID:',
-'prefs-memberingroups' => 'Medlem av {{PLURAL:$1|gruppen|grupperna}}:',
-'yourrealname' => 'Riktigt namn:',
-'yourlanguage' => 'Språk:',
-'yournick' => 'Signatur:',
-'badsig' => 'Det är något fel med råsignaturen, kontrollera HTML-koden.',
-'badsiglength' => 'Din signatur är för lång.
-Den får inte vara längre än $1 {{PLURAL:$1|tecken|tecken}}.',
-'yourgender' => 'Kön:',
-'gender-unknown' => 'Ospecificerat',
-'gender-male' => 'Man',
-'gender-female' => 'Kvinna',
-'prefs-help-gender' => 'Valfri: används för att mjukvaran ska kunna adressera med rätt genus. Denna information kommer vara offentlig.',
-'email' => 'E-post',
-'prefs-help-realname' => 'Riktigt namn behöver inte anges.
-Om du väljer att ange ditt riktiga namn, kommer det att användas för att tillskriva dig ditt arbete.',
'loginerror' => 'Inloggningsproblem',
-'prefs-help-email' => 'Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.
-Du kan också välja att låta andra användare kontakta dig genom din användar- eller användardiskussionssida utan att du behöver avslöja din identitet.',
-'prefs-help-email-required' => 'E-postadress måste anges.',
+'createaccounterror' => 'Kunde inte skapa konto: $1',
'nocookiesnew' => 'Användarkontot skapades, men du är inte inloggad.
{{SITENAME}} använder cookies för att logga in användare.
Du har cookies avaktiverade.
@@ -704,10 +745,11 @@ Användarnamn är skiftlägeskänsliga.
Kontrollera din stavning, eller [[Special:UserLogin/signup|skapa ett nytt konto]].',
'nosuchusershort' => 'Det finns ingen användare som heter "<nowiki>$1</nowiki>". Kontrollera att du stavat rätt.',
'nouserspecified' => 'Du måste ange ett användarnamn.',
+'login-userblocked' => 'Denna användare är blockerad. Login inte tillåtet.',
'wrongpassword' => 'Lösenordet du angav är felaktigt. Försök igen',
'wrongpasswordempty' => 'Lösenordet som angavs var blankt. Var god försök igen.',
-'passwordtooshort' => 'Ditt lösenord är ogiltigt eller för kort.
-Det måste innehålla minst {{PLURAL:$1|$1 tecken}} och det får inte vara ditt användarnamn.',
+'passwordtooshort' => 'Lösenord måste innehålla minst {{PLURAL:$1|$1 tecken}}.',
+'password-name-match' => 'Ditt lösenord måste vara olikt ditt användarnamn.',
'mailmypassword' => 'Skicka nytt lösenord',
'passwordremindertitle' => 'Nytt temporärt lösenord från {{SITENAME}}',
'passwordremindertext' => 'Någon (förmodligen du, från IP-adressen $1) har begärt ett nytt lösenord till {{SITENAME}} ($4). Ett tillfälligt lösenordet för användaren "$2" har skapats och det blev "$3". Om detta var vad du önskade, så behöver du nu logga in och välja ett nytt lösenord. Ditt tillfälliga lösenord går ut om {{PLURAL:$5|en dag|$5 dagar}}.
@@ -716,6 +758,7 @@ Om denna begäran gjordes av någon annan, eller om du har kommit på ditt löse
och inte längre önskar ändra det, så kan du ignorera detta meddelande och
fortsätta använda ditt gamla lösenord.',
'noemail' => 'Användaren "$1" har inte registrerat någon e-postadress.',
+'noemailcreate' => 'Du måste ange en giltig e-postadress',
'passwordsent' => 'Ett nytt lösenord har skickats till den e-postadress som användaren "$1" har registrerat. När du får meddelandet, var god logga in igen.',
'blocked-mailpassword' => 'Din IP-adress är blockerad, därför kan den inte användas för att få ett nytt lösenord.',
'eauthentsent' => 'Ett e-brev för bekräftelse har skickats till den e-postadress som angivits.
@@ -737,9 +780,11 @@ Skriv in en adress med korrekt format eller töm fältet.',
'createaccount-text' => 'Någon har skapat ett konto åt din e-postadress på {{SITENAME}} ($4) med namnet "$2" och lösenordet "$3". Du bör nu logga in och ändra ditt lösenord.
Du kan ignorera detta meddelande om kontot skapats av misstag.',
+'usernamehasherror' => 'Användarnamnet får inte innehålla #.',
'login-throttled' => 'Du har gjort för många misslyckade inloggningsförsök till det här kontot.
Vänta innan du försöker igen.',
'loginlanguagelabel' => 'Språk: $1',
+'suspicious-userlogout' => 'Din begäran om att logga ut nekades eftersom det ser ut som det skickades av en trasig webbläsare eller cachande proxy.',
# Password reset dialog
'resetpass' => 'Ändra lösenord',
@@ -751,17 +796,13 @@ Vänta innan du försöker igen.',
'retypenew' => 'Upprepa det nya lösenordet:',
'resetpass_submit' => 'Spara lösenord och logga in',
'resetpass_success' => 'Ditt lösenord har ändrats. Nu loggas du in...',
-'resetpass_bad_temporary' => 'Ditt temporära lösenord är felaktigt. Du kanske redan har loggat in med det eller begärt att få ett nytt tillfälligt lösenord.',
'resetpass_forbidden' => 'Lösenord kan inte ändras',
'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
'resetpass-submit-loggedin' => 'Ändra lösenord',
+'resetpass-submit-cancel' => 'Avbryt',
'resetpass-wrong-oldpass' => 'Ogiltigt tillfälligt eller nuvarande lösenord.
Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfälligt lösenord.',
'resetpass-temp-password' => 'Tillfälligt lösenord:',
-'resetpass-log' => 'Logg för återställning av lösenord',
-'resetpass-logtext' => 'Nedan finns en logg över användare som fått sina lösenord återställda av en administratör.',
-'resetpass-logentry' => 'ändrade lösenordet för $1',
-'resetpass-comment' => 'Anledning för lösenordsåterställning:',
# Edit page toolbar
'bold_sample' => 'Fet text',
@@ -837,7 +878,6 @@ Vänligen ange informationen ovan i alla förfrågningar som du gör i ärendet.
'blockededitsource' => "Texten för '''dina ändringar''' av '''$1''' visas nedanför:",
'whitelistedittitle' => 'Du måste logga in för att redigera',
'whitelistedittext' => 'Du måste $1 för att kunna redigera sidor.',
-'confirmedittitle' => 'E-postbekräftelse krävs för redigering',
'confirmedittext' => 'Du måste bekräfta din e-postadress innan du kan redigera sidor. Var vänlig ställ in och validera din e-postadress genom dina [[Special:Preferences|användarinställningar]].',
'nosuchsectiontitle' => 'Kan inte hitta avsnitt',
'nosuchsectiontext' => 'Du försökte redigera ett avsnitt som inte finns.
@@ -857,9 +897,16 @@ En sådan IP-adress kan delas av flera användare.
Om du är en anonym användare och känner att irrelevanta kommentarer har riktats mot dig, vänligen [[Special:UserLogin/signup|skapa ett konto]] eller [[Special:UserLogin|logga in]] för att undvika framtida förväxlingar med andra anonyma användare.''",
'noarticletext' => 'Det finns just nu ingen text på denna sida.
Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidtitel]] på andra sidor, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i loggarna], eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} redigera denna sida]</span>.',
+'noarticletext-nopermission' => 'Det finns för tillfället ingen text på denna sida.
+Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidas titel]] i andra sidor,
+eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relevanta loggar]</span>.',
'userpage-userdoesnotexist' => '"$1" är inte ett registrerat användarkonto. Tänk efter om du vill skapa/redigera den här sidan.',
+'userpage-userdoesnotexist-view' => 'Kontot "$1" är inte registrerat.',
+'blocked-notice-logextract' => 'Användaren är blockerad.
+Orsaken till senaste blockeringen kan ses nedan:',
'clearyourcache' => "'''Observera: Sedan du sparat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.''' '''Mozilla/Firefox/Safari:''' håll ner ''Skift'' och klicka på ''Reload'' eller tryck antingen ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på Macintosh); '''Konqueror:''': klicka ''Reload'' eller tryck ''F5;'' '''Opera:''' rensa cachen i ''Tools → Preferences;'' '''Internet Explorer:''' håll ner ''Ctrl'' och klicka på ''Refresh'' eller tryck ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Tips:''' Använd 'Visa förhandsgranskning' för att testa din nya css/js innan du sparar.",
+'usercssyoucanpreview' => "'''Tips:''' Använd \"{{int:showpreview}}\"-knappen för att testa din nya css innan du sparar.",
+'userjsyoucanpreview' => "'''Tips:''' Använd \"{{int:showpreview}}\"-knappen för att testa din nya JavaScript innan du sparar.",
'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.
Den har inte sparats än!'''",
'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript, det har inte sparats än!'''",
@@ -910,13 +957,16 @@ vissa webbläsare kan ha problem att redigera sidor som närmar sig eller är st
Det kan vara klokt att kopiera över texten till din egen dator, tills databasen är upplåst igen.'''
Administratören som låste databasen gav följande förklaring: $1",
-'protectedpagewarning' => "'''VARNING: Den här sidan är låst så att bara administratörer kan redigera den.'''",
-'semiprotectedpagewarning' => "'''Observera:''' Denna sida har skrivskyddats så att endast registrerade användare kan redigera den.",
+'protectedpagewarning' => "'''Varning: Den här sidan har låsts så att bara användare med administratörsrättigheter kan redigera den.'''
+Den senaste loggposten tillhandahålls nedan som referens:",
+'semiprotectedpagewarning' => "'''Observera:''' Denna sida har låsts så att endast registrerade användare kan redigera den.
+Den senaste loggposten tillhandahålls nedan som referens:",
'cascadeprotectedwarning' => "'''Varning:''' Den här sidan är låst så att bara användare med administratörsrättigheter kan redigera den, eftersom den är inkluderad på följande {{PLURAL:$1|sida|sidor}} som skyddats med kaskaderande skrivskydd:",
-'titleprotectedwarning' => "'''VARNING: Den här sidan har skyddats så att [[Special:ListGroupRights|specifika rättigheter]] krävs för att skapa den.'''",
-'templatesused' => 'Mallar som används på den här sidan:',
-'templatesusedpreview' => 'Mallar som används i förhandsgranskningen:',
-'templatesusedsection' => 'Mallar som används i det här avsnittet:',
+'titleprotectedwarning' => "'''Varning: Denna sida har låsts så att [[Special:ListGroupRights|specifika rättigheter]] krävs för att skapa den.'''
+Den senaste loggposten tillhandahålls nedan som referens:",
+'templatesused' => '{{PLURAL:$1|Mall|Mallar}} som används på den här sidan:',
+'templatesusedpreview' => '{{PLURAL:$1|Mall|Mallar}} som används i denna förhandsgranskning:',
+'templatesusedsection' => '{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:',
'template-protected' => '(skyddad)',
'template-semiprotected' => '(delvis skyddad)',
'hiddencategories' => 'Denna sida är medlem i följande dolda {{PLURAL:$1|kategori|kategorier}}:',
@@ -925,15 +975,18 @@ Administratören som låste databasen gav följande förklaring: $1",
'nocreatetext' => '{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.
Du kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].',
'nocreate-loggedin' => 'Du har inte behörighet att skapa nya sidor.',
+'sectioneditnotsupported-title' => 'Sektionsredigering stöds inte',
+'sectioneditnotsupported-text' => 'Sektionsredigering stöds inte på denna sida.',
'permissionserrors' => 'Behörighetsfel',
'permissionserrorstext' => 'Du har inte behörighet att göra det du försöker göra, av följande {{PLURAL:$1|anledning|anledningar}}:',
'permissionserrorstext-withaction' => 'Du har inte behörighet att $2, av följande {{PLURAL:$1|anledning|anledningar}}:',
-'recreate-deleted-warn' => "'''Varning: Den sida du skapar har tidigare raderats.'''
+'recreate-moveddeleted-warn' => "'''Varning: Du återskapar en sida som tidigare raderats.'''
-Du bör överväga om det är lämpligt att fortsätta redigera sidan.
-Raderingsloggen för sidan innehåller följande:",
-'deleted-notice' => 'Denna sida har blivit raderad. Som referens visas nedan raderingsloggen för sidan.',
-'deletelog-fulllog' => 'Visa fullständig logg',
+Du bör överväga om det är lämpligt att fortsätta redigera den här sidan.
+Raderings- och sidflyttningsloggen för den här sidan visas här som hjälp:",
+'moveddeleted-notice' => 'Den här sidan har raderats.
+Raderings- och sidflyttningsloggen för sidan visas nedan som referens.',
+'log-fulllog' => 'Visa fullständig logg',
'edit-hook-aborted' => 'Redigering avbruten av hook.
Den gav ingen förklaring.',
'edit-gone-missing' => 'Kunde inte uppdatera sidan.
@@ -956,6 +1009,7 @@ Dessa parametrar har uteslutits.',
'post-expand-template-argument-category' => 'Sidor med uteslutna mallparametrar',
'parser-template-loop-warning' => 'Mall-loop upptäckt: [[$1]]',
'parser-template-recursion-depth-warning' => 'Gräns för mallrekursionsdjup överskriden ($1)',
+'language-converter-depth-warning' => 'Gräns för språkkonverteringsdjup överskriden ($1)',
# "Undo" feature
'undo-success' => 'Redigeringen kan göras ogjord.
@@ -976,7 +1030,7 @@ Anledningen till blockeringen var "$2".',
'currentrev' => 'Nuvarande version',
'currentrev-asof' => 'Nuvarande version från $1',
'revisionasof' => 'Versionen från $1',
-'revision-info' => 'Version från den $1 av $2', # Additionally available: $3: revision id
+'revision-info' => 'Version från den $1 av $2',
'previousrevision' => '← Äldre version',
'nextrevision' => 'Nyare version →',
'currentrevisionlink' => 'Nuvarande version',
@@ -988,7 +1042,7 @@ Anledningen till blockeringen var "$2".',
'histlegend' => "Val av diff: markera i klickrutorna för att jämföra versioner och tryck enter eller knappen längst ner.<br />
Förklaring: (nuvarande) = skillnad mot nuvarande version; (föregående) = skillnad mot föregående version; '''m''' = mindre ändring.",
'history-fieldset-title' => 'Bläddra i historiken',
-'deletedrev' => '[raderad]',
+'history-show-deleted' => 'Endast borttagna',
'histfirst' => 'Första',
'histlast' => 'Senaste',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -997,72 +1051,116 @@ Förklaring: (nuvarande) = skillnad mot nuvarande version; (föregående) = skil
# Revision feed
'history-feed-title' => 'Versionshistorik',
'history-feed-description' => 'Versionshistorik för denna sida på wikin',
-'history-feed-item-nocomment' => '$1 den $2', # user at time
+'history-feed-item-nocomment' => '$1 den $2',
'history-feed-empty' => 'Den begärda sidan finns inte.
Den kan ha tagits bort från wikin eller bytt namn.
Prova att [[Special:Search|söka på wikin]] för relevanta nya sidor.',
# Revision deletion
-'rev-deleted-comment' => '(kommentar borttagen)',
-'rev-deleted-user' => '(användarnamn borttaget)',
-'rev-deleted-event' => '(loggåtgärd borttagen)',
-'rev-deleted-text-permission' => "Denna version av sidan har '''raderats'''.
-Det kan finnas mer information i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} borttagningsloggen].",
-'rev-deleted-text-view' => "Denna version av sidan har '''raderats'''.
-Som administratör kan du se den; det kan finnas mer information i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} borttagningsloggen].",
-'rev-deleted-no-diff' => "Du kan inte se den här diffen på grund av att en av versionerna har '''raderats'''.
-Det kan finnas mer information i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} borttagningsloggen].",
-'rev-deleted-unhide-diff' => "En av versionerna för den här diffen har '''raderats'''.
-Det kan finnas mer information i [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} borttagningsloggen].
+'rev-deleted-comment' => '(kommentar borttagen)',
+'rev-deleted-user' => '(användarnamn borttaget)',
+'rev-deleted-event' => '(loggåtgärd borttagen)',
+'rev-deleted-user-contribs' => '[användarnamn eller IP-adress har tagits bort - redigeringen visas ej bland bidragen]',
+'rev-deleted-text-permission' => "Denna version av sidan har '''raderats'''.
+Det kan finnas mer information i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].",
+'rev-deleted-text-unhide' => "Den här versionen av sidan har '''raderats'''.
+Det kan finnas mer information i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].
+Som administratör kan du fortfarande [$1 se den här versionen] om du önskar att fortsätta.",
+'rev-suppressed-text-unhide' => "Den här versionen av sidan har blivit '''undanhållen'''.
+Det kan finnas mer information i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} undanhållandeloggen].
+Som administratör kan du fortfarande [$1 se den här versionen] om du önskar att fortsätta.",
+'rev-deleted-text-view' => "Denna version av sidan har '''raderats'''.
+Som administratör kan du se den; det kan finnas mer information i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].",
+'rev-suppressed-text-view' => "Denna version av sidan har '''undanhållits'''.
+Som administratör kan du se den; det kan finnas mer information i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} undanhållandeloggen].",
+'rev-deleted-no-diff' => "Du kan inte se den här diffen på grund av att en av versionerna har '''raderats'''.
+Det kan finnas mer information i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].",
+'rev-suppressed-no-diff' => "Du kan inte se skillnaden för en av revisionerna har blivit '''raderad'''.",
+'rev-deleted-unhide-diff' => "En av versionerna för den här diffen har '''raderats'''.
+Det kan finnas mer information i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].
Som administratör kan du fortfarande [$1 se den här diffen] om du önskar att fortsätta.",
-'rev-delundel' => 'visa/göm',
-'revisiondelete' => 'Ta bort/återställ versioner',
-'revdelete-nooldid-title' => 'Ogiltig målversion',
-'revdelete-nooldid-text' => 'Antingen har du inte angivit någon sidversion att utföra funktionen på,
+'rev-suppressed-unhide-diff' => "En av versionerna för denna diff har blivit '''undanhållen'''.
+Det kan finnas detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} undanhållandeloggen].
+Som administratör kan du fortfarande [$1 se denna diff] om du önskar fortsätta.",
+'rev-deleted-diff-view' => "En av revisionerna för denna diff har blivit '''raderad'''.
+Som en administratör kan du se denna diff, det kan finnas detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} raderingsloggen].",
+'rev-suppressed-diff-view' => "En av versionerna för denna diff har blivit '''undanhållen'''.
+Som administratör kan du se denna diff; det kan finnas detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} undanhållandeloggen].",
+'rev-delundel' => 'visa/göm',
+'rev-showdeleted' => 'visa',
+'revisiondelete' => 'Ta bort/återställ versioner',
+'revdelete-nooldid-title' => 'Ogiltig målversion',
+'revdelete-nooldid-text' => 'Antingen har du inte angivit någon sidversion att utföra funktionen på,
eller så finns inte den version du angav,
eller så försöker du gömma den senaste versionen av sidan.',
-'revdelete-nologtype-title' => 'Ingen loggtyp specificerad',
-'revdelete-nologtype-text' => 'Du har inte specificerat en loggtyp att utföra denna handling på.',
-'revdelete-toomanytargets-title' => 'För många mål',
-'revdelete-toomanytargets-text' => 'Du har specificerat för många måltyper att utföra denna handling på.',
-'revdelete-nologid-title' => 'Ogiltig logpost',
-'revdelete-nologid-text' => 'Du har antingen inte specificerat en loggpost att utföra denna funktion på eller så existerar inte den specificerade posten.',
-'revdelete-selected' => "'''{{PLURAL:$2|Vald version|Valda versioner}} av [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Vald loggåtgärd|Valda loggåtgärder}}:'''",
-'revdelete-text' => "'''Borttagna versioner och åtgärder kommer fortfarande att synas i historiken och i loggar, men deras innehåll kommer ej att vara tillgängligt för allmänheten.'''
-
-Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det dolda innehållet och kan återställa sidan genom samma gränssnitt, om inte ytterligare begränsningar finns.
-Vänligen bekräfta att detta är vad du avser göra, att du förstår konsekvenserna, och att du gör detta i enlighet med [[{{MediaWiki:Policy-url}}|riktlinjerna]].",
-'revdelete-suppress-text' => "Undanhållande ska '''bara''' användas i följande fall:
+'revdelete-nologtype-title' => 'Ingen loggtyp specificerad',
+'revdelete-nologtype-text' => 'Du har inte specificerat en loggtyp att utföra denna handling på.',
+'revdelete-nologid-title' => 'Ogiltig logpost',
+'revdelete-nologid-text' => 'Du har antingen inte specificerat en loggpost att utföra denna funktion på eller så existerar inte den specificerade posten.',
+'revdelete-no-file' => 'Den specificerade filen finns inte.',
+'revdelete-show-file-confirm' => 'Är du säker på att du vill visa en raderad version av filen "<nowiki>$1</nowiki>" från den $2 klockan $3?',
+'revdelete-show-file-submit' => 'Ja',
+'revdelete-selected' => "'''{{PLURAL:$2|Vald version|Valda versioner}} av [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Vald loggåtgärd|Valda loggåtgärder}}:'''",
+'revdelete-text' => "'''Borttagna versioner och åtgärder kommer fortfarande att synas i historiken och i loggar, men deras innehåll kommer ej att vara tillgängligt för allmänheten.'''
+Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det dolda innehållet och kan återställa sidan genom samma gränssnitt, om inte ytterligare begränsningar finns.",
+'revdelete-confirm' => 'Var god bekräfta att du vill göra detta, och att du förstår konsekvenserna, och att du gör så i enlighet med [[{{MediaWiki:Policy-url}}|policyn]].',
+'revdelete-suppress-text' => "Undanhållande ska '''bara''' användas i följande fall:
* Opassande personlig information
*: ''hemadresser och telefonnummer, personnummer, etc.''",
-'revdelete-legend' => 'Ändra synlighet',
-'revdelete-hide-text' => 'Dölj versionstext',
-'revdelete-hide-name' => 'Dölj åtgärd och sidnamn',
-'revdelete-hide-comment' => 'Dölj redigeringskommentar',
-'revdelete-hide-user' => 'Dölj skribentens användarnamn/IP-adress',
-'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
-'revdelete-suppress' => 'Undanhåll data även från administratörer',
-'revdelete-hide-image' => 'Dölj filinnehåll',
-'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
-'revdelete-log' => 'Anledning:',
-'revdelete-submit' => 'Tillämpa på vald version',
-'revdelete-logentry' => 'ändrade synlighet för versioner av [[$1]]',
-'logdelete-logentry' => 'ändrade synlighet för åtgärder i [[$1]]',
-'revdelete-success' => "'''Sidversionssynlighet har uppdaterats.'''",
-'logdelete-success' => "'''Loggåtgärdens synlighet har ändrats.'''",
-'revdel-restore' => 'ändra synlighet',
-'pagehist' => 'Sidhistorik',
-'deletedhist' => 'Raderad historik',
-'revdelete-content' => 'innehåll',
-'revdelete-summary' => 'sammanfattning',
-'revdelete-uname' => 'användarnamn',
-'revdelete-restricted' => 'satte begränsningar för administratörer',
-'revdelete-unrestricted' => 'tog bort begränsningar för administratörer',
-'revdelete-hid' => 'dolde $1',
-'revdelete-unhid' => 'synliggjorde $1',
-'revdelete-log-message' => '$1 för $2 {{PLURAL:$2|sidversion|sidversioner}}',
-'logdelete-log-message' => '$1 för $2 {{PLURAL:$2|åtgärd|åtgärder}}',
+'revdelete-legend' => 'Ändra synlighet',
+'revdelete-hide-text' => 'Dölj versionstext',
+'revdelete-hide-image' => 'Dölj filinnehåll',
+'revdelete-hide-name' => 'Dölj åtgärd och sidnamn',
+'revdelete-hide-comment' => 'Dölj redigeringskommentar',
+'revdelete-hide-user' => 'Dölj skribentens användarnamn/IP-adress',
+'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
+'revdelete-radio-same' => '(låt vara)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nej',
+'revdelete-suppress' => 'Undanhåll data även från administratörer',
+'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
+'revdelete-log' => 'Anledning:',
+'revdelete-submit' => 'Tillämpa på {{PLURAL:$1|vald version|valda versioner}}',
+'revdelete-logentry' => 'ändrade synlighet för versioner av [[$1]]',
+'logdelete-logentry' => 'ändrade synlighet för åtgärder i [[$1]]',
+'revdelete-success' => "'''Sidversionssynlighet har uppdaterats.'''",
+'revdelete-failure' => "'''Sidversionssynlighet kunde inte uppdateras:'''
+$1",
+'logdelete-success' => "'''Loggåtgärdens synlighet har ändrats.'''",
+'logdelete-failure' => "'''Loggens synlighet kunde inte ställas in:'''
+$1",
+'revdel-restore' => 'ändra synlighet',
+'pagehist' => 'Sidhistorik',
+'deletedhist' => 'Raderad historik',
+'revdelete-content' => 'innehåll',
+'revdelete-summary' => 'sammanfattning',
+'revdelete-uname' => 'användarnamn',
+'revdelete-restricted' => 'satte begränsningar för administratörer',
+'revdelete-unrestricted' => 'tog bort begränsningar för administratörer',
+'revdelete-hid' => 'dolde $1',
+'revdelete-unhid' => 'synliggjorde $1',
+'revdelete-log-message' => '$1 för $2 {{PLURAL:$2|sidversion|sidversioner}}',
+'logdelete-log-message' => '$1 för $2 {{PLURAL:$2|åtgärd|åtgärder}}',
+'revdelete-hide-current' => 'Fel vid döljande av objektet daterat $2, $1: detta är nuvarande version.
+Den kan inte döljas.',
+'revdelete-show-no-access' => 'Fel vid visning av objektet daterat $2, $1: detta objekt har markerats "begränsat".
+Du har inte behörighet till det.',
+'revdelete-modify-no-access' => 'Fel vid förändring av objektet daterat $2, $1: detta objekt har markerats "begränsat".
+Du har inte behörighet till det.',
+'revdelete-modify-missing' => 'Fel vid förändring av objektet med ID $1: det saknas i databasen!',
+'revdelete-no-change' => "'''Varning:''' objektet daterat $2, $1 hade redan de begärda synlighetsinställningarna.",
+'revdelete-concurrent-change' => 'Fel vid förändring av objektet daterat $2, $1: dess status verkar ha ändrats av någon annan medan du försökte förändra det.
+Vänligen kontrollera loggarna.',
+'revdelete-only-restricted' => 'Fel vid döljning av objekt daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja en av de övriga visningsalternativen.',
+'revdelete-reason-dropdown' => '*Vanliga orsaker till radering
+** Brott mot copyright
+** Opassande personupplysningar
+** Möjligt ärekränkande uppgifter',
+'revdelete-otherreason' => 'Annan/ytterligare anledning:',
+'revdelete-reasonotherlist' => 'Annan anledning',
+'revdelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'revdelete-offender' => 'Versionens författare:',
# Suppression log
'suppressionlog' => 'Undanhållandelogg',
@@ -1099,67 +1197,13 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
'mergelogpagetext' => 'Detta är en lista över de senaste sammansfogningarna av sidhistoriker.',
# Diffs
-'history-title' => 'Versionshistorik för "$1"',
-'difference' => '(Skillnad mellan versioner)',
-'lineno' => 'Rad $1:',
-'compareselectedversions' => 'Jämför angivna versioner',
-'visualcomparison' => 'Visuell jämförelse',
-'wikicodecomparison' => 'Wikitextjämförelse',
-'editundo' => 'gör ogjord',
-'diff-multi' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} visas inte.)',
-'diff-movedto' => 'flyttad till $1',
-'diff-styleadded' => '$1 stil tillagd',
-'diff-added' => '$1 tillagd',
-'diff-changedto' => 'ändrad till $1',
-'diff-movedoutof' => 'flyttad ut från $1',
-'diff-styleremoved' => '$1 stil borttagen',
-'diff-removed' => '$1 borttagen',
-'diff-changedfrom' => 'ändrad från $1',
-'diff-src' => 'källa',
-'diff-withdestination' => 'med destination $1',
-'diff-with' => '&#32;med $1 $2',
-'diff-with-final' => '&#32;och $1 $2',
-'diff-width' => 'bredd',
-'diff-height' => 'höjd',
-'diff-p' => "ett '''stycke'''",
-'diff-blockquote' => "ett '''citat'''",
-'diff-h1' => "en '''rubrik (nivå 1)'''",
-'diff-h2' => "en '''rubrik (nivå 2)'''",
-'diff-h3' => "en '''rubrik (nivå 3)'''",
-'diff-h4' => "en '''rubrik (nivå 4)'''",
-'diff-h5' => "en '''rubrik (nivå 5)'''",
-'diff-pre' => "ett '''förformaterat avsnitt'''",
-'diff-div' => "en '''indelning'''",
-'diff-ul' => "en '''osorterad lista'''",
-'diff-ol' => "en '''sorterad lista'''",
-'diff-li' => "ett '''listelement'''",
-'diff-table' => "en '''tabell'''",
-'diff-tbody' => "en '''tabells innehåll'''",
-'diff-tr' => "en '''rad'''",
-'diff-td' => "en '''cell'''",
-'diff-th' => "en '''rubrik'''",
-'diff-br' => "ett '''avbrott'''",
-'diff-hr' => "en '''horisontell linje'''",
-'diff-code' => "ett '''datakodsavsnitt'''",
-'diff-dl' => "en '''definitionslista'''",
-'diff-dt' => "en '''definitionsterm'''",
-'diff-dd' => "en '''definition'''",
-'diff-input' => "ett '''inlägg'''",
-'diff-form' => "ett '''formulär'''",
-'diff-img' => "en '''bild'''",
-'diff-span' => "ett '''spann'''",
-'diff-a' => "en '''länk'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''fet'''",
-'diff-strong' => "'''skarp'''",
-'diff-em' => "'''betoning'''",
-'diff-font' => "'''teckensnitt'''",
-'diff-big' => "'''stor'''",
-'diff-del' => "'''raderad'''",
-'diff-tt' => "'''fast bredd'''",
-'diff-sub' => "'''nedsänkt'''",
-'diff-sup' => "'''upphöjd'''",
-'diff-strike' => "'''genomstruken'''",
+'history-title' => 'Versionshistorik för "$1"',
+'difference' => '(Skillnad mellan versioner)',
+'lineno' => 'Rad $1:',
+'compareselectedversions' => 'Jämför angivna versioner',
+'showhideselectedversions' => 'Visa/dölj valda versioner',
+'editundo' => 'gör ogjord',
+'diff-multi' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} visas inte.)',
# Search results
'searchresults' => 'Sökresultat',
@@ -1167,28 +1211,25 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
'searchresulttext' => 'Se [[{{MediaWiki:Helppage}}|hjälpsidan]] för mer information om sökning på {{SITENAME}}.',
'searchsubtitle' => 'Du sökte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alla sidor som startar med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alla sidor som länkar till "$1"]])',
'searchsubtitleinvalid' => 'För sökbegreppet $1',
-'noexactmatch' => "'''Det finns ingen sida med titeln \"\$1\".''' Du kan [[:\$1|skapa denna sida]].",
-'noexactmatch-nocreate' => "'''Det finns ingen sida med titeln \"\$1\".'''",
'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
'titlematches' => 'Träffar i sidtitlar',
'notitlematches' => 'Det finns ingen sida vars titel överensstämmer med sökordet.',
'textmatches' => 'Sidor som innehåller sökordet:',
'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
-'prevn' => 'förra $1',
-'nextn' => 'nästa $1',
+'prevn' => 'föregående {{PLURAL:$1|$1}}',
+'nextn' => 'nästa {{PLURAL:$1|$1}}',
'prevn-title' => 'Föregående $1 {{PLURAL:$1|resultat|resultat}}',
'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
-'viewprevnext' => 'Visa ($1) ($2) ($3)',
+'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Sökalternativ',
'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki'''",
'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
'searchhelp-url' => 'Help:Innehåll',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bläddra igenom sidor med detta prefix]]',
'searchprofile-articles' => 'Innehållssidor',
-'searchprofile-articles-and-proj' => 'Innehåll & projektsidor',
-'searchprofile-project' => 'Projektsidor',
-'searchprofile-images' => 'Filer',
+'searchprofile-project' => 'Hjälp- och projektsidor',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Allt',
'searchprofile-advanced' => 'Avancerad',
'searchprofile-articles-tooltip' => 'Sök i $1',
@@ -1196,8 +1237,6 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
'searchprofile-images-tooltip' => 'Sök efter filer',
'searchprofile-everything-tooltip' => 'Sök allt innehåll (inklusive diskussionssidor)',
'searchprofile-advanced-tooltip' => 'Sök i vissa namnrymder',
-'prefs-search-nsdefault' => 'Sök med standardvärden:',
-'prefs-search-nscustom' => 'Sök valda namnrymder:',
'search-result-size' => '$1 ({{PLURAL:$2|1 ord|$2 ord}})',
'search-result-score' => 'Relevans: $1%',
'search-redirect' => '(omdirigering $1)',
@@ -1210,11 +1249,12 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
'search-mwsuggest-disabled' => 'inga förslag',
'search-relatedarticle' => 'Relaterad',
'mwsuggest-disable' => 'Avaktivera AJAX-förslag',
+'searcheverything-enable' => 'Sök i alla namnrymder',
'searchrelated' => 'relaterad',
'searchall' => 'alla',
'showingresults' => "Nedan visas upp till {{PLURAL:$1|'''1''' post|'''$1''' poster}} från och med nummer '''$2'''.",
'showingresultsnum' => "Nedan visas {{PLURAL:$3|'''1''' post|'''$3''' poster}} från och med nummer '''$2'''.",
-'showingresultstotal' => "Härunder visas resultat {{PLURAL:$4|'''$1'''|'''$1 - $2'''}} av '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} för '''$4'''",
'nonefound' => "'''Observera:''' Som standard sker sökning endast i vissa namnrymder. Du kan pröva att skriva ''all:'' i början av din sökning om du vill söka i alla sidor (inklusive diskussionssidor, mallar, m.m.), eller så kan du att börja din sökning med namnet på den namnrymd du vill söka i.",
'search-nonefound' => 'Inga resultat matchade frågan.',
'powersearch' => 'Avancerad sökning',
@@ -1222,113 +1262,152 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
'powersearch-ns' => 'Sök i namnrymderna:',
'powersearch-redir' => 'Visa omdirigeringar',
'powersearch-field' => 'Sök efter',
+'powersearch-togglelabel' => 'Kryssa:',
+'powersearch-toggleall' => 'Alla',
+'powersearch-togglenone' => 'Ingen',
'search-external' => 'Extern sökning',
'searchdisabled' => 'Sökfunktionen på {{SITENAME}} är avstängd.
Du kan istället göra sökningar med hjälp av Google.
Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
+# Quickbar
+'qbsettings' => 'Snabbmeny',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Fast vänster',
+'qbsettings-fixedright' => 'Fast höger',
+'qbsettings-floatingleft' => 'Flytande vänster',
+'qbsettings-floatingright' => 'Flytande höger',
+
# Preferences page
-'preferences' => 'Inställningar',
-'mypreferences' => 'Mina inställningar',
-'prefs-edits' => 'Antal redigeringar:',
-'prefsnologin' => 'Inte inloggad',
-'prefsnologintext' => 'Du måste vara <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} inloggad]</span> för att kunna ändra dina inställningar.',
-'prefsreset' => 'Inställningarna har återställts till ursprungsvärdena.',
-'qbsettings' => 'Snabbmeny',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast vänster',
-'qbsettings-fixedright' => 'Fast höger',
-'qbsettings-floatingleft' => 'Flytande vänster',
-'qbsettings-floatingright' => 'Flytande höger',
-'changepassword' => 'Byt lösenord',
-'skin' => 'Utseende',
-'skin-preview' => 'förhandsvisning',
-'math' => 'Matematik',
-'dateformat' => 'Datumformat',
-'datedefault' => 'Ovidkommande',
-'datetime' => 'Datum och tid',
-'math_failure' => 'Misslyckades med att tolka formel.',
-'math_unknown_error' => 'okänt fel',
-'math_unknown_function' => 'okänd funktion',
-'math_lexing_error' => 'regelfel',
-'math_syntax_error' => 'syntaxfel',
-'math_image_error' => 'Konvertering till PNG-format misslyckades; kontrollera om latex, dvips, gs och convert är korrekt installerade',
-'math_bad_tmpdir' => 'Kan inte skriva till eller skapa temporär mapp för matematikresultat',
-'math_bad_output' => 'Kan inte skriva till eller skapa mapp för matematikresultat',
-'math_notexvc' => 'Applicationen texvc saknas; läs math/README för konfigureringsanvisningar.',
-'prefs-personal' => 'Mitt konto',
-'prefs-rc' => 'Senaste ändringar',
-'prefs-watchlist' => 'Bevakningslista',
-'prefs-watchlist-days' => 'Antal dygn som skall visas i bevakningslistan:',
-'prefs-watchlist-days-max' => '(maximalt 7 dygn)',
-'prefs-watchlist-edits' => 'Maximalt antal redigeringar som visas i utökad bevakningslista:',
-'prefs-watchlist-edits-max' => '(maximalt antal: 1 000)',
-'prefs-misc' => 'Diverse',
-'prefs-resetpass' => 'Ändra lösenord',
-'saveprefs' => 'Spara',
-'resetprefs' => 'Återställ osparade ändringar',
-'restoreprefs' => 'Återställ alla standardinställningar',
-'textboxsize' => 'Redigering',
-'prefs-edit-boxsize' => 'Storlek på redigeringsfönstret.',
-'rows' => 'Rader:',
-'columns' => 'Kolumner:',
-'searchresultshead' => 'Sökning',
-'resultsperpage' => 'Träffar per sida:',
-'contextlines' => 'Antal rader per träff:',
-'contextchars' => 'Tecken per rad:',
-'stub-threshold' => 'Gräns för <a href="#" class="stub">stublänk</a>-formattering (byte):',
-'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
-'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
-'recentchangescount' => 'Antal ändringar som visas i senaste ändringarna, sidhistoriker och i loggsidor, som standard:',
-'savedprefs' => 'Dina inställningar har sparats',
-'timezonelegend' => 'Tidszon:',
-'timezonetext' => '¹Antal timmar din lokala tid skiljer från serverns tid (UTC).',
-'localtime' => 'Lokal tid:',
-'timezoneselect' => 'Tidszon:',
-'timezoneuseserverdefault' => 'Använd serverns standardinställning',
-'timezoneuseoffset' => 'Annan (specificera skillnad)',
-'timezoneoffset' => 'Skillnad¹:',
-'servertime' => 'Serverns tid:',
-'guesstimezone' => 'Fyll i från webbläsare',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asien',
-'timezoneregion-atlantic' => 'Atlanten',
-'timezoneregion-australia' => 'Australien',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Indiska oceanen',
-'timezoneregion-pacific' => 'Stilla havet',
-'allowemail' => 'Tillåt e-post från andra användare',
-'prefs-searchoptions' => 'Sökalternativ',
-'prefs-namespaces' => 'Namnrymder',
-'defaultns' => 'Sök i följande namnrymder som förval:',
-'default' => 'ursprungsinställning',
-'files' => 'Filer',
-'prefs-custom-css' => 'personlig CSS',
-'prefs-custom-js' => 'personlig JavaScript',
+'preferences' => 'Inställningar',
+'mypreferences' => 'Mina inställningar',
+'prefs-edits' => 'Antal redigeringar:',
+'prefsnologin' => 'Inte inloggad',
+'prefsnologintext' => 'Du måste vara <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inloggad]</span> för att kunna ändra dina inställningar.',
+'changepassword' => 'Byt lösenord',
+'prefs-skin' => 'Utseende',
+'skin-preview' => 'förhandsvisning',
+'prefs-math' => 'Matematik',
+'datedefault' => 'Ovidkommande',
+'prefs-datetime' => 'Datum och tid',
+'prefs-personal' => 'Mitt konto',
+'prefs-rc' => 'Senaste ändringar',
+'prefs-watchlist' => 'Bevakningslista',
+'prefs-watchlist-days' => 'Antal dygn som skall visas i bevakningslistan:',
+'prefs-watchlist-days-max' => '(maximalt 7 dygn)',
+'prefs-watchlist-edits' => 'Maximalt antal redigeringar som visas i utökad bevakningslista:',
+'prefs-watchlist-edits-max' => '(maximalt antal: 1 000)',
+'prefs-watchlist-token' => 'Bevakningslistsnyckel:',
+'prefs-misc' => 'Diverse',
+'prefs-resetpass' => 'Ändra lösenord',
+'prefs-email' => 'Alternativ för e-post',
+'prefs-rendering' => 'Utseende',
+'saveprefs' => 'Spara',
+'resetprefs' => 'Återställ osparade ändringar',
+'restoreprefs' => 'Återställ alla standardinställningar',
+'prefs-editing' => 'Redigering',
+'prefs-edit-boxsize' => 'Storlek på redigeringsfönstret.',
+'rows' => 'Rader:',
+'columns' => 'Kolumner:',
+'searchresultshead' => 'Sökning',
+'resultsperpage' => 'Träffar per sida:',
+'contextlines' => 'Antal rader per träff:',
+'contextchars' => 'Tecken per rad:',
+'stub-threshold' => 'Gräns för <a href="#" class="stub">stublänk</a>-formattering (byte):',
+'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
+'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
+'recentchangescount' => 'Antal redigeringar som visas som standard:',
+'prefs-help-recentchangescount' => 'Detta inkluderar senaste ändringarna, sidhistorik och loggar.',
+'prefs-help-watchlist-token' => 'Om du fyller i detta fält med en hemlig nyckel så skapas ett RSS-flöde för din bevakningslista.
+Alla som kan nyckeln kan också läsa din bevakningslista, så välj ett säkert värde.
+Här är ett slumpmässigt genererat värde som du kan använda: $1',
+'savedprefs' => 'Dina inställningar har sparats',
+'timezonelegend' => 'Tidszon:',
+'localtime' => 'Lokal tid:',
+'timezoneuseserverdefault' => 'Använd serverns standardinställning',
+'timezoneuseoffset' => 'Annan (specificera skillnad)',
+'timezoneoffset' => 'Skillnad¹:',
+'servertime' => 'Serverns tid:',
+'guesstimezone' => 'Fyll i från webbläsare',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asien',
+'timezoneregion-atlantic' => 'Atlanten',
+'timezoneregion-australia' => 'Australien',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiska oceanen',
+'timezoneregion-pacific' => 'Stilla havet',
+'allowemail' => 'Tillåt e-post från andra användare',
+'prefs-searchoptions' => 'Sökalternativ',
+'prefs-namespaces' => 'Namnrymder',
+'defaultns' => 'Sök annars i dessa namnrymder:',
+'default' => 'ursprungsinställning',
+'prefs-files' => 'Filer',
+'prefs-custom-css' => 'personlig CSS',
+'prefs-custom-js' => 'personlig JavaScript',
+'prefs-reset-intro' => 'Du kan använda den här sidan till att återställa dina inställningar till webbplatsens standardinställningar.
+Detta kan inte återställas.',
+'prefs-emailconfirm-label' => 'E-postbekräftelse:',
+'prefs-textboxsize' => 'Storlek på redigeringsrutan',
+'youremail' => 'E-post:',
+'username' => 'Användarnamn:',
+'uid' => 'Användar-ID:',
+'prefs-memberingroups' => 'Medlem av {{PLURAL:$1|gruppen|grupperna}}:',
+'prefs-registration' => 'Registreringstid:',
+'yourrealname' => 'Riktigt namn:',
+'yourlanguage' => 'Språk:',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Kommentarer på diskussionssidor ska signeras med "<nowiki>~~~~</nowiki>", vilket konverteras till din signatur och tidpunkt.',
+'badsig' => 'Det är något fel med råsignaturen, kontrollera HTML-koden.',
+'badsiglength' => 'Din signatur är för lång.
+Den får inte vara längre än $1 {{PLURAL:$1|tecken|tecken}}.',
+'yourgender' => 'Kön:',
+'gender-unknown' => 'Ospecificerat',
+'gender-male' => 'Man',
+'gender-female' => 'Kvinna',
+'prefs-help-gender' => 'Valfri: används för att mjukvaran ska kunna adressera med rätt genus. Denna information kommer vara offentlig.',
+'email' => 'E-post',
+'prefs-help-realname' => 'Riktigt namn behöver inte anges.
+Om du väljer att ange ditt riktiga namn, kommer det att användas för att tillskriva dig ditt arbete.',
+'prefs-help-email' => 'Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.
+Du kan också välja att låta andra användare kontakta dig genom din användar- eller användardiskussionssida utan att du behöver avslöja din identitet.',
+'prefs-help-email-required' => 'E-postadress måste anges.',
+'prefs-info' => 'Grundläggande information',
+'prefs-i18n' => 'Internationalisering',
+'prefs-signature' => 'Signatur',
+'prefs-dateformat' => 'Datumformat',
+'prefs-timeoffset' => 'Tidsförskjutning',
+'prefs-advancedediting' => 'Avancerade alternativ',
+'prefs-advancedrc' => 'Avancerade alternativ',
+'prefs-advancedrendering' => 'Avancerade alternativ',
+'prefs-advancedsearchoptions' => 'Avancerade alternativ',
+'prefs-advancedwatchlist' => 'Avancerade alternativ',
+'prefs-display' => 'Visningsalternativ',
+'prefs-diffs' => 'Skillnader',
# User rights
-'userrights' => 'Hantering av användarrättigheter', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Hantera användargrupper',
-'userrights-user-editname' => 'Skriv in ett användarnamn:',
-'editusergroup' => 'Ändra användargrupper',
-'editinguser' => "Ändrar rättigheter för användaren '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Ändra användargrupper',
-'saveusergroups' => 'Spara användargrupper',
-'userrights-groupsmember' => 'Medlem i:',
-'userrights-groups-help' => 'Du kan ändra vilka grupper denna användare är medlem i.
+'userrights' => 'Hantering av användarrättigheter',
+'userrights-lookup-user' => 'Hantera användargrupper',
+'userrights-user-editname' => 'Skriv in ett användarnamn:',
+'editusergroup' => 'Ändra användargrupper',
+'editinguser' => "Ändrar rättigheter för användaren '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Ändra användargrupper',
+'saveusergroups' => 'Spara användargrupper',
+'userrights-groupsmember' => 'Medlem i:',
+'userrights-groupsmember-auto' => 'Implicit medlem av:',
+'userrights-groups-help' => 'Du kan ändra vilka grupper denna användare är medlem i.
* En ikryssad ruta betyder användaren är medlem i den gruppen.
* En okryssad ruta betyder att användaren inte är medlem i den gruppen.
* En asterisk (*) markerar att du inte kan ta bort gruppen när du har lagt till den, eller vice versa.',
-'userrights-reason' => 'Anledning:',
-'userrights-no-interwiki' => 'Du har inte behörighet att ändra användarrättigheter på andra wikis.',
-'userrights-nodatabase' => 'Databasen $1 finns inte eller så är den inte lokal.',
-'userrights-nologin' => 'Du måste [[Special:UserLogin|logga in]] med ett administratörskonto för att ändra användarrättigheter.',
-'userrights-notallowed' => 'Ditt konto har inte behörighet till att ändra användarrättigheter.',
-'userrights-changeable-col' => 'Grupper du kan ändra',
-'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
+'userrights-reason' => 'Anledning:',
+'userrights-no-interwiki' => 'Du har inte behörighet att ändra användarrättigheter på andra wikis.',
+'userrights-nodatabase' => 'Databasen $1 finns inte eller så är den inte lokal.',
+'userrights-nologin' => 'Du måste [[Special:UserLogin|logga in]] med ett administratörskonto för att ändra användarrättigheter.',
+'userrights-notallowed' => 'Ditt konto har inte behörighet till att ändra användarrättigheter.',
+'userrights-changeable-col' => 'Grupper du kan ändra',
+'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
# Groups
'group' => 'Grupp:',
@@ -1381,6 +1460,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'right-bigdelete' => 'Radera sidor med stor historik',
'right-deleterevision' => 'Radera och återställa enskilda sidversioner',
'right-deletedhistory' => 'Se raderad historik utan tillhörande sidtext',
+'right-deletedtext' => 'Visa raderad text och ändringar mellan raderade versioner',
'right-browsearchive' => 'Söka efter raderade sidor',
'right-undelete' => 'Återställa raderade sidor',
'right-suppressrevision' => 'Se och återställa sidversioner som dolts för administratörer',
@@ -1394,6 +1474,8 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'right-editprotected' => 'Redigera skyddade sidor',
'right-editinterface' => 'Redigera användargränssnittet',
'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
+'right-editusercss' => 'Redigera andra användares CSS-filer',
+'right-edituserjs' => 'Redigera andra användares JS-filer',
'right-rollback' => 'Rulla tillbaka den användare som senast redigerat en sida',
'right-markbotedits' => 'Markera tillbakarullningar som robotändringar',
'right-noratelimit' => 'Påverkas inte av hastighetsgränser',
@@ -1410,6 +1492,8 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'right-siteadmin' => 'Låsa och låsa upp databasen',
'right-reset-passwords' => 'Återställa andra användares lösenord',
'right-override-export-depth' => 'Exportera sidor inklusive länkade sidor till ett djup på 5',
+'right-versiondetail' => 'Visa den utökade mjukvaruversionsinformationen',
+'right-sendemail' => 'Skicka e-post till andra användare',
# User rights log
'rightslog' => 'Användarrättighetslogg',
@@ -1459,6 +1543,15 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'recentchanges-legend' => 'Alternativ för senaste ändringarna',
'recentchangestext' => 'Följ de senaste ändringarna i wikin på denna sida.',
'recentchanges-feed-description' => 'Följ de senaste ändringarna i wikin genom den här matningen.',
+'recentchanges-label-legend' => 'Förklaring: $1',
+'recentchanges-legend-newpage' => '$1 - ny sida',
+'recentchanges-label-newpage' => 'Denna redigering skapade en ny sida',
+'recentchanges-legend-minor' => '$1 - mindre ändring',
+'recentchanges-label-minor' => 'Detta är en mindre ändring',
+'recentchanges-legend-bot' => '$1 - botredigering',
+'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
+'recentchanges-legend-unpatrolled' => '$1 - okontrollerad redigering',
+'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
'rcnote' => "Nedan visas {{PLURAL:$1|'''1''' ändring|de senaste '''$1''' ändringarna}} från {{PLURAL:$2|det senaste dygnet|de senaste '''$2''' dygnen}}, per $4, kl. $5.",
'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
'rclistfrom' => 'Visa ändringar efter $1',
@@ -1485,6 +1578,8 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
# Recent changes linked
'recentchangeslinked' => 'Relaterade ändringar',
+'recentchangeslinked-feed' => 'Relaterade ändringar',
+'recentchangeslinked-toolbox' => 'Relaterade ändringar',
'recentchangeslinked-title' => 'Ändringar relaterade till $1',
'recentchangeslinked-noresult' => 'Inga ändringar på länkade sidor under den angivna tidsperioden.',
'recentchangeslinked-summary' => "Detta är en lista över de senaste ändringarna på sidor som länkas till från en given sida (eller på sidor som hör till en viss kategori).
@@ -1495,8 +1590,8 @@ Sidor på [[Special:Watchlist|din bevakningslista]] är markerade med '''fetstil
# Upload
'upload' => 'Ladda upp fil',
'uploadbtn' => 'Ladda upp fil',
-'reupload' => 'Ladda upp på nytt',
'reuploaddesc' => 'Avbryt uppladdningen och gå tillbaka till uppladdningsformuläret.',
+'upload-tryagain' => 'Skicka modifierad filbeskrivning',
'uploadnologin' => 'Inte inloggad',
'uploadnologintext' => 'Du måste vara [[Special:UserLogin|inloggad]] för att kunna ladda upp filer.',
'upload_directory_missing' => 'Uppladdningskatalogen ($1) saknas och kunde inte skapas av webbservern.',
@@ -1528,6 +1623,7 @@ Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.
'minlength1' => 'Filens namn måste innehålla minst ett tecken.',
'illegalfilename' => 'Filnamnet "$1" innehåller tecken som inte är tillåtna i sidtitlar. Byt namn på filen och försök ladda upp igen.',
'badfilename' => 'Filens namn har blivit ändrat till "$1".',
+'filetype-mime-mismatch' => 'Filnamnsändelse matchar inte MIME-typ.',
'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
@@ -1550,7 +1646,6 @@ För att din sammanfattning ska visas där, så måste du redigera beskrivningss
* Namn på den fil du försöker ladda upp: '''<tt>[[:$1]]</tt>'''
* Namn på filen som redan finns: '''<tt>[[:$2]]</tt>'''
Var vänlig välj ett annat namn.",
-'fileexists-thumb' => "<center>'''Den existerande filen'''</center>",
'fileexists-thumbnail-yes' => "Filen verkar vara en bild med förminskad storlek ''(miniatyrbild)''. [[$1|thumb]]
Var vänlig kontrollera filen '''<tt>[[:$1]]</tt>'''.
Om det är samma fil i originalstorlek så är det inte nödvändigt att ladda upp en extra miniatyrbild.",
@@ -1565,6 +1660,7 @@ Om du ändå vill ladda upp din fil, gå då tillbaka och använd ett annat namn
'file-deleted-duplicate' => 'En identisk fil till den här filen ([[$1]]) har tidigare raderats. Du bör kontrollera den filens raderingshistorik innan du fortsätter att återuppladda den.',
'successfulupload' => 'Uppladdningen lyckades',
'uploadwarning' => 'Uppladdningsvarning',
+'uploadwarning-text' => 'Var god och ändra filbeskrivningen nedanför och försök igen.',
'savefile' => 'Spara fil',
'uploadedimage' => 'laddade upp "[[$1]]"',
'overwroteimage' => 'laddade upp ny version av "[[$1]]"',
@@ -1572,11 +1668,14 @@ Om du ändå vill ladda upp din fil, gå då tillbaka och använd ett annat namn
'uploaddisabledtext' => 'Uppladdning av filer är avstängd.',
'php-uploaddisabledtext' => 'PHP filuppladdningar är avaktiverade. Kolla inställningarna för file_uploads.',
'uploadscripted' => 'Denna fil innehåller HTML eller script som felaktigt kan komma att tolkas av webbläsare.',
-'uploadcorrupt' => 'Antingen har det blivit något fel på filen, eller så har den en felaktig filändelse. Kontrollera din fil, och ladda upp på nytt.',
'uploadvirus' => 'Filen innehåller virus! Detaljer: $1',
+'upload-source' => 'Källfil',
'sourcefilename' => 'Ursprungsfilens namn:',
+'sourceurl' => 'Källans URL:',
'destfilename' => 'Nytt filnamn:',
'upload-maxfilesize' => 'Maximal filstorlek: $1',
+'upload-description' => 'Filbeskrivning',
+'upload-options' => 'Uppladdningsalternativ',
'watchthisupload' => 'Bevaka den här filen',
'filewasdeleted' => 'En fil med detta namn har tidigare laddats upp och därefter tagits bort. Du bör kontrollera $1 innan du fortsätter att ladda upp den.',
'upload-wasdeleted' => "'''Varning: Du håller på att ladda upp en fil som tidigare raderats.'''
@@ -1600,14 +1699,45 @@ MGP # Pentax
PICT # allmänt bildprefix
#</pre> <!-- ändra inte den här raden -->',
-'upload-proto-error' => 'Felaktigt protokoll',
-'upload-proto-error-text' => 'Fjärruppladdning kräver URL:ar som börjar med <code>http://</code> eller <code>ftp://</code>.',
-'upload-file-error' => 'Internt fel',
-'upload-file-error-text' => 'Ett internt fel inträffade när en temporär fil skulle skapas på servern. Kontakta en [[Special:ListUsers/sysop|systemadministratör]].',
-'upload-misc-error' => 'Okänt uppladdningsfel',
-'upload-misc-error-text' => 'Ett okänt fel inträffade under uppladdningen.
+'upload-proto-error' => 'Felaktigt protokoll',
+'upload-proto-error-text' => 'Fjärruppladdning kräver URL:ar som börjar med <code>http://</code> eller <code>ftp://</code>.',
+'upload-file-error' => 'Internt fel',
+'upload-file-error-text' => 'Ett internt fel inträffade när en temporär fil skulle skapas på servern. Kontakta en [[Special:ListUsers/sysop|systemadministratör]].',
+'upload-misc-error' => 'Okänt uppladdningsfel',
+'upload-misc-error-text' => 'Ett okänt fel inträffade under uppladdningen.
Kontrollera att URL:en giltig och försök igen.
Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].',
+'upload-too-many-redirects' => 'URL-en innehöll för många omdirigeringar',
+'upload-unknown-size' => 'Okänd storlek',
+'upload-http-error' => 'Ett HTTP-fel uppstod: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Åtkomst nekad',
+'img-auth-nopathinfo' => 'Saknad PATH_INFO.
+Din server är inte inställd för att ge denna information.
+Den kan vara CGI-baserad och stöttar inte img_auth.
+Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Den önskade sökvägen finns inte i den inställda uppladdningskatalogen.',
+'img-auth-badtitle' => 'Kan inte skapa en giltig titel från "$1"',
+'img-auth-nologinnWL' => 'Du är inte inloggad och "$1" finns inte i vitlistan.',
+'img-auth-nofile' => 'Filen "$1" finns inte.',
+'img-auth-isdir' => 'Du försöker få åtkomst till en katalog "$1".
+Endast åtkomst till filer är tillåten.',
+'img-auth-streaming' => 'Strömmar "$1".',
+'img-auth-public' => 'Funktionaliteten i img_auth.php är att skicka filer från en privat wiki.
+Denna wiki är konfigurerad som en publik wiki.
+För optimal säkerhet, har img_auth.php blivit avaktiverad.',
+'img-auth-noread' => 'Användaren har inte tillåtelse att läsa "$1"',
+
+# HTTP errors
+'http-invalid-url' => 'Ogiltig URL: $1',
+'http-invalid-scheme' => 'URLer med "$1"-formen stöds inte',
+'http-request-error' => 'HTTP-begäran misslyckades på grund av okänt fel.',
+'http-read-error' => 'HTTP-läsfel.',
+'http-timed-out' => 'Time out för HTTP-begäran.',
+'http-curl-error' => 'Fel vid hämtning av URL: $1',
+'http-host-unreachable' => 'URL:en kunde inte nås.',
+'http-bad-status' => 'Det uppstod ett problem under HTTP-begäran: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL:en kunde inte nås',
@@ -1616,6 +1746,7 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
'upload-curl-error28-text' => 'Webbplatsen tog för lång tid på sig att svara. Kontrollera att den är uppe och försök igen om en liten stund.',
'license' => 'Licens:',
+'license-header' => 'Licensiering',
'nolicense' => 'Ingen angiven',
'license-nopreview' => '(Förhandsvisning är inte tillgänglig)',
'upload_source_url' => ' (en giltig URL som är allmänt åtkomlig)',
@@ -1636,6 +1767,7 @@ Genom att klicka på rubrikerna för kolumnerna kan man ändra sorteringsordning
'listfiles_count' => 'Versioner',
# File description page
+'file-anchor-link' => 'Fil',
'filehist' => 'Filhistorik',
'filehist-help' => 'Klicka på ett datum/klockslag för att se filen som den såg ut då.',
'filehist-deleteall' => 'radera alla',
@@ -1650,6 +1782,7 @@ Genom att klicka på rubrikerna för kolumnerna kan man ändra sorteringsordning
'filehist-dimensions' => 'Dimensioner',
'filehist-filesize' => 'Filstorlek',
'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Fil saknas',
'imagelinks' => 'Fillänkar',
'linkstoimage' => 'Följande {{PLURAL:$1|sida|$1 sidor}} länkar till den här filen:',
'linkstoimage-more' => 'Mer är {{PLURAL:$1|en sida|$1 sidor}} länkar till den här filen.
@@ -1659,15 +1792,16 @@ Det finns en [[Special:WhatLinksHere/$2|fullständig lista]].',
'morelinkstoimage' => 'Visa [[Special:WhatLinksHere/$1|fler länkar]] till den här filen.',
'redirectstofile' => 'Följande {{PLURAL:$1|fil är en omdirigering|filer är omdirigeringar}} till den här filen:',
'duplicatesoffile' => 'Följande {{PLURAL:$1|fil är en dubblett|filer är dubbletter}} till den här filen ([[Special:FileDuplicateSearch/$2|mer detaljer]]):',
-'sharedupload' => 'Den här filen är från $1 och kan användas av andra projekt.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Vänligen se $1 för mer information.',
-'shareduploadwiki-desc' => 'Innehållet på $1 där visas nedan.',
-'shareduploadwiki-linktext' => 'filens beskrivningssida',
-'noimage' => 'Det finns ingen fil med detta namn, men du kan $1.',
-'noimage-linktext' => 'ladda upp en',
+'sharedupload' => 'Den här filen är från $1 och kan användas av andra projekt.',
+'sharedupload-desc-there' => 'Den här filen är från $1 och kan användas av andra projekt.
+Var god se [$2 filbeskrivningssidan] för mer information.',
+'sharedupload-desc-here' => 'Den här filen är från $1 och kan användas av andra projekt.
+Beskrivningen på dess [$2 filbeskrivningssida] visas nedan.',
+'filepage-nofile' => 'Det finns ingen fil med det här namnet.',
+'filepage-nofile-link' => 'Det finns ingen fil med det här namnet, men du kan [$1 ladda upp den].',
'uploadnewversion-linktext' => 'Ladda upp en ny version av denna fil',
-'shared-repo-from' => 'från $1', # $1 is the repository name
-'shared-repo' => 'en gemensam filförvaring', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'från $1',
+'shared-repo' => 'en gemensam filförvaring',
# File reversion
'filerevert' => 'Återställ $1',
@@ -1696,6 +1830,7 @@ Det finns en [[Special:WhatLinksHere/$2|fullständig lista]].',
** Upphovsrättsbrott
** Dubblettfil',
'filedelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'filedelete-maintenance' => 'Radering och återställning av filer tillfälligt avaktiverat under underhåll.',
# MIME search
'mimesearch' => 'MIME-sökning',
@@ -1717,7 +1852,7 @@ Innan mallarna raderas, kontrollera att det inte finns andra länkar till dem.',
# Random page
'randompage' => 'Slumpsida',
-'randompage-nopages' => 'Det finns inte några sidor i namnrymden "$1".',
+'randompage-nopages' => 'Det finns inte några sidor i följande {{PLURAL:$2|namnrymd|namnrymder}}: $1.',
# Random redirect
'randomredirect' => 'Slumpvald omdirigering',
@@ -1729,6 +1864,7 @@ Innan mallarna raderas, kontrollera att det inte finns andra länkar till dem.',
'statistics-header-edits' => 'Redigeringsstatistik',
'statistics-header-views' => 'Sidvisningsstatistik',
'statistics-header-users' => 'Användarstatistik',
+'statistics-header-hooks' => 'Övrig statistik',
'statistics-articles' => 'Sidor med innehåll',
'statistics-pages' => 'Sidor',
'statistics-pages-desc' => 'Alla sidor i wikin, inklusive diskussionssidor, omdirigeringar, m.m.',
@@ -1757,8 +1893,8 @@ En sida anses vara en förgreningssida om den inkluderar en mall som länkas til
'brokenredirects' => 'Trasiga omdirigeringar',
'brokenredirectstext' => 'Följande omdirigerar länkar till ej existerande sidor:',
-'brokenredirects-edit' => '(redigera)',
-'brokenredirects-delete' => '(radera)',
+'brokenredirects-edit' => 'redigera',
+'brokenredirects-delete' => 'radera',
'withoutinterwiki' => 'Sidor utan språklänkar',
'withoutinterwiki-summary' => 'Följande sidor innehåller inte några länkar till andra språkversioner.',
@@ -1865,15 +2001,17 @@ Du kan avgränsa sökningen och få färre träffar genom att ange typ av logg,
# Special:Categories
'categories' => 'Kategorier',
-'categoriespagetext' => 'Följande kategorier innehåller sidor eller media.
-[[Special:UnusedCategories|Oanvända kategorier]] visas inte här; [[Special:WantedCategories|önskade kategorier]] listas även separat.',
+'categoriespagetext' => 'Följande {{PLURAL:$1|kategori|kategorier}} innehåller sidor eller media.
+[[Special:UnusedCategories|Oanvända kategorier]] visas inte här.
+Se även [[Special:WantedCategories|önskade kategorier]].',
'categoriesfrom' => 'Visa kategorier från och med:',
'special-categories-sort-count' => 'sortera efter storlek',
'special-categories-sort-abc' => 'sortera alfabetiskt',
# Special:DeletedContributions
-'deletedcontributions' => 'Raderade användarbidrag',
-'deletedcontributions-title' => 'Raderade användarbidrag',
+'deletedcontributions' => 'Raderade användarbidrag',
+'deletedcontributions-title' => 'Raderade användarbidrag',
+'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
'linksearch' => 'Externa länkar',
@@ -1889,6 +2027,16 @@ Stödda protokoll: <tt>$1</tt>',
'listusersfrom' => 'Visa användare från och med:',
'listusers-submit' => 'Visa',
'listusers-noresult' => 'Ingen användare hittades.',
+'listusers-blocked' => '(blockerad)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista över aktiva användare',
+'activeusers-intro' => 'Detta är en lista på användare som har haft någon form av aktivitet inom de senaste $1 {{PLURAL:$1|dagen|dagarna}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|redigering|redigeringar}} {{PLURAL:$3|det senaste dygnet|de senaste $3 dygnen}}',
+'activeusers-from' => 'Visa användare från och med:',
+'activeusers-hidebots' => 'Göm botar',
+'activeusers-hidesysops' => 'Dölj administratörer',
+'activeusers-noresult' => 'Inga användare funna.',
# Special:Log/newusers
'newuserlogpage' => 'Logg över nya användare',
@@ -1899,17 +2047,23 @@ Stödda protokoll: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Konto skapades automatiskt',
# Special:ListGroupRights
-'listgrouprights' => 'Behörigheter för användargrupper',
-'listgrouprights-summary' => 'Följande lista visar vilka användargrupper som är definierade på den här wikin och vilka behörigheter grupperna har.
+'listgrouprights' => 'Behörigheter för användargrupper',
+'listgrouprights-summary' => 'Följande lista visar vilka användargrupper som är definierade på den här wikin och vilka behörigheter grupperna har.
Det kan finnas [[{{MediaWiki:Listgrouprights-helppage}}|ytterligare information]] om de olika behörigheterna.',
-'listgrouprights-group' => 'Grupp',
-'listgrouprights-rights' => 'Behörigheter',
-'listgrouprights-helppage' => 'Help:Gruppbehörigheter',
-'listgrouprights-members' => '(lista över medlemmar)',
-'listgrouprights-addgroup' => 'Kan lägga till {{PLURAL:$2|gruppen|grupperna}}: $1',
-'listgrouprights-removegroup' => 'Kan ta bort {{PLURAL:$2|gruppen|grupperna}}: $1',
-'listgrouprights-addgroup-all' => 'Kan lägga till alla användargrupper',
-'listgrouprights-removegroup-all' => 'Kan ta bort alla användargrupper',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Given rättighet</span>
+* <span class="listgrouprights-revoked">Tillbakatagen rättighet</span>',
+'listgrouprights-group' => 'Grupp',
+'listgrouprights-rights' => 'Behörigheter',
+'listgrouprights-helppage' => 'Help:Gruppbehörigheter',
+'listgrouprights-members' => '(lista över medlemmar)',
+'listgrouprights-addgroup' => 'Kan lägga till {{PLURAL:$2|gruppen|grupperna}}: $1',
+'listgrouprights-removegroup' => 'Kan ta bort {{PLURAL:$2|gruppen|grupperna}}: $1',
+'listgrouprights-addgroup-all' => 'Kan lägga till alla användargrupper',
+'listgrouprights-removegroup-all' => 'Kan ta bort alla användargrupper',
+'listgrouprights-addgroup-self' => 'Kan lägga till {{PLURAL:$2|gruppen|grupperna}} till sitt eget konto: $1',
+'listgrouprights-removegroup-self' => 'Kan ta bort {{PLURAL:$2|gruppen|grupperna}} från sitt eget konto: $1',
+'listgrouprights-addgroup-self-all' => 'Kan lägga till alla grupperna till sitt eget konto',
+'listgrouprights-removegroup-self-all' => 'Kan ta bort alla grupperna från sitt eget konto',
# E-mail user
'mailnologin' => 'Ingen adress att skicka till',
@@ -1983,7 +2137,7 @@ Framtida ändringar av den här sidan och dess diskussionssida kommer att listas
'enotif_anon_editor' => 'anonym användare $1',
'enotif_body' => '$WATCHINGUSERNAME,
-{{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR; den nuvarande versionen hittar du på $PAGETITLE_URL.
+{{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR; se $PAGETITLE_URL för den nuvarande versionen.
$NEWPAGE
@@ -1996,13 +2150,16 @@ wiki: $PAGEEDITOR_WIKI
Såvida du inte besöker sidan, kommer du inte att få flera meddelanden om ändringar av sidan.
Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i din bevakningslista.
-Hälsningar från {{SITENAME}}s meddelandesystem
+ Hälsningar från {{SITENAME}}s meddelandesystem
--
För att ändra inställningarna i din bevakningslista, besök
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
-Feedback och hjälp:
+För att radera sidan från din bevakningslista, besök
+$UNWATCHURL
+
+Feedback och ytterligare hjälp:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2014,10 +2171,11 @@ Feedback och hjälp:
'exblank' => 'sidan var tom',
'delete-confirm' => 'Radera "$1"',
'delete-legend' => 'Radera',
-'historywarning' => 'Varning: Sidan du håller på att radera har en historik:',
+'historywarning' => "'''Varning:''' Sidan du håller på att radera har en historik med ungefär $1 {{PLURAL:$1|version|versioner}}:",
'confirmdeletetext' => 'Du håller på att ta bort en sida med hela dess historik.
Bekräfta att du förstår vad du håller på med och vilka konsekvenser detta leder till, och att du följer [[{{MediaWiki:Policy-url}}|riktlinjerna]].',
'actioncomplete' => 'Genomfört',
+'actionfailed' => 'Handlingen misslyckades',
'deletedtext' => '"<nowiki>$1</nowiki>" har tagits bort.
Se $2 för noteringar om de senaste raderingarna.',
'deletedarticle' => 'raderade "[[$1]]"',
@@ -2038,19 +2196,20 @@ Se $2 för noteringar om de senaste raderingarna.',
'delete-warning-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.',
# Rollback
-'rollback' => 'Rulla tillbaka ändringar',
-'rollback_short' => 'Återställning',
-'rollbacklink' => 'rulla tillbaka',
-'rollbackfailed' => 'Tillbakarullning misslyckades',
-'cantrollback' => 'Det gick inte att rulla tillbaka, då sidan endast redigerats av en användare.',
-'alreadyrolled' => 'Det gick inte att rulla tillbaka den senaste redigeringen av [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) på sidan [[:$1|$1]]. Någon annan har redan rullat tillbaka eller redigerat sidan.
+'rollback' => 'Rulla tillbaka ändringar',
+'rollback_short' => 'Återställning',
+'rollbacklink' => 'rulla tillbaka',
+'rollbackfailed' => 'Tillbakarullning misslyckades',
+'cantrollback' => 'Det gick inte att rulla tillbaka, då sidan endast redigerats av en användare.',
+'alreadyrolled' => 'Det gick inte att rulla tillbaka den senaste redigeringen av [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) på sidan [[:$1|$1]]. Någon annan har redan rullat tillbaka eller redigerat sidan.
Sidan ändrades senast av [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).',
-'editcomment' => "Redigeringskommentaren var: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Återställde redigeringar av [[Special:Contributions/$2|$2]] ([[User talk:$2|användardiskussion]]) till senaste versionen av [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Återställde ändringar av $1;
+'editcomment' => "Redigeringskommentaren var: \"''\$1''\".",
+'revertpage' => 'Återställde redigeringar av [[Special:Contributions/$2|$2]] ([[User talk:$2|användardiskussion]]) till senaste versionen av [[User:$1|$1]]',
+'revertpage-nouser' => 'Återställda redigeringar av (användarnamn borttaget) till senaste version av [[User:$1|$1]]',
+'rollback-success' => 'Återställde ändringar av $1;
ändrade tillbaka till senaste version av $2.',
-'sessionfailure' => 'Något med din session som inloggad är på tok. Din begärda åtgärd har avbrutits, för att förhindra att någon kapar din session. Klicka på "Tillbaka" i din webbläsare och ladda om den sida du kom ifrån. Försök sedan igen.',
+'sessionfailure' => 'Något med din session som inloggad är på tok. Din begärda åtgärd har avbrutits, för att förhindra att någon kapar din session. Klicka på "Tillbaka" i din webbläsare och ladda om den sida du kom ifrån. Försök sedan igen.',
# Protect
'protectlogpage' => 'Skrivskyddslogg',
@@ -2066,7 +2225,7 @@ Sidan ändrades senast av [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-
'protectexpiry' => 'Varaktighet:',
'protect_expiry_invalid' => 'Ogiltig varaktighetstid.',
'protect_expiry_old' => 'Den angivna varaktighetentiden har redan passerats.',
-'protect-unchain' => 'Lås upp flyttillstånd',
+'protect-unchain-permissions' => 'Lås upp fler skyddsalternativ',
'protect-text' => "Här kan du se och ändra skyddsnivån av sidan '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Du kan inte ändra sidors skydd medan du är blockerad.
Här kan du se gällande skyddsinställninger för sidan '''$1''':",
@@ -2096,7 +2255,7 @@ Du kan ändra skyddet av den här sidan, men det påverkar inte det kaskaderande
** Redigeringskrig
** Sida med många besökare',
'protect-edit-reasonlist' => 'Redigera skyddsanledningar',
-'protect-expiry-options' => '1 timme:1 hour,1 dag:1 day,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 timme:1 hour,1 dag:1 day,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite',
'restriction-type' => 'Typ av skydd:',
'restriction-level' => 'Skyddsnivå:',
'minimum-size' => 'Minsta storlek',
@@ -2136,6 +2295,7 @@ I sådana fall måste du se till att den senaste raderade versionen inte är ikr
'undelete-nodiff' => 'Ingen tidigare version hittades.',
'undeletebtn' => 'Återställ',
'undeletelink' => 'visa/återställ',
+'undeleteviewlink' => 'visa',
'undeletereset' => 'Rensa',
'undeleteinvert' => 'Invertera urval',
'undeletecomment' => 'Anledning:',
@@ -2173,19 +2333,24 @@ $1',
'contributions-title' => 'Bidrag av $1',
'mycontris' => 'Mina bidrag',
'contribsub2' => 'För $1 ($2)',
-'nocontribs' => 'Inga ändringar som motsvarar dessa kriterier hittades.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Inga ändringar som motsvarar dessa kriterier hittades.',
'uctop' => '(senaste)',
'month' => 'Från månad (och tidigare):',
'year' => 'Från år (och tidigare):',
-'sp-contributions-newbies' => 'Visa endast bidrag från nya konton',
-'sp-contributions-newbies-sub' => 'Från nya konton',
-'sp-contributions-newbies-title' => 'Bidrag från nya konton',
-'sp-contributions-blocklog' => 'Blockeringslogg',
-'sp-contributions-logs' => 'Loggar',
-'sp-contributions-search' => 'Sök efter användarbidrag',
-'sp-contributions-username' => 'IP-adress eller användarnamn:',
-'sp-contributions-submit' => 'Sök',
+'sp-contributions-newbies' => 'Visa endast bidrag från nya konton',
+'sp-contributions-newbies-sub' => 'Från nya konton',
+'sp-contributions-newbies-title' => 'Bidrag från nya konton',
+'sp-contributions-blocklog' => 'Blockeringslogg',
+'sp-contributions-deleted' => 'raderade användarbidrag',
+'sp-contributions-logs' => 'Loggar',
+'sp-contributions-talk' => 'diskussion',
+'sp-contributions-userrights' => 'hantering av användarrättigheter',
+'sp-contributions-blocked-notice' => 'Användaren är blockerad.
+Orsaken till senaste blockeringen kan ses nedan:',
+'sp-contributions-search' => 'Sök efter användarbidrag',
+'sp-contributions-username' => 'IP-adress eller användarnamn:',
+'sp-contributions-submit' => 'Sök',
# What links here
'whatlinkshere' => 'Vad som länkar hit',
@@ -2208,6 +2373,7 @@ $1',
# Block/unblock
'blockip' => 'Blockera användare',
+'blockip-title' => 'Blockera användare',
'blockip-legend' => 'Blockera användare',
'blockiptext' => 'Använd formuläret nedan för att blockera möjligheten att redigera sidor från en specifik IP-adress eller ett användarnamn.
Detta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].
@@ -2231,7 +2397,7 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
'ipbenableautoblock' => 'Blockera automatiskt den IP-adress som användaren använde senast, samt alla adresser som användaren försöker redigera ifrån',
'ipbsubmit' => 'Blockera användaren',
'ipbother' => 'Annan tidsperiod:',
-'ipboptions' => '2 timmar:2 hours,1 dygn:1 day,3 dygn:3 days,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 timmar:2 hours,1 dygn:1 day,3 dygn:3 days,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite',
'ipbotheroption' => 'annan tidsperiod',
'ipbotherreason' => 'Annan/ytterligare anledning:',
'ipbhidename' => 'Dölj användarnamnet från redigeringar och listor',
@@ -2260,9 +2426,11 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
'ipblocklist-sh-tempblocks' => '$1 tillfälliga blockeringar',
'ipblocklist-sh-addressblocks' => '$1 blockeringar av enskilda IP-adresser',
'ipblocklist-submit' => 'Sök',
+'ipblocklist-localblock' => 'Lokalblockering',
+'ipblocklist-otherblocks' => 'Övriga {{PLURAL:$1|blockering|blockeringar}}',
'blocklistline' => '$1, $2 blockerade $3 ($4)',
'infiniteblock' => 'för evigt',
-'expiringblock' => 'till $1',
+'expiringblock' => 'utgår den $1 kl $2',
'anononlyblock' => 'endast för oinloggade',
'noautoblockblock' => 'utan automatisk blockering',
'createaccountblock' => 'kontoregistrering blockerad',
@@ -2277,7 +2445,10 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
'autoblocker' => 'Automatisk blockerad eftersom din IP-adress nyligen använts av "[[User:$1|$1]]".
Motiveringen som angavs för blockeringen av $1 var: "$2".',
'blocklogpage' => 'Blockeringslogg',
-'blocklog-fulllog' => 'Fullständig blockeringslogg',
+'blocklog-showlog' => 'Denna användare har blivit blockerad tidigare.
+Blockeringsloggen är tillgänglig nedan som referens:',
+'blocklog-showsuppresslog' => 'Denna användare har tidigare blivit blockerad och gömd.
+Undanhållandeloggen visas nedan för referens:',
'blocklogentry' => 'blockerade [[$1]] med blockeringstid på $2 $3',
'reblock-logentry' => 'ändrade blockeringsinställningar för [[$1]] med en varaktighet på $2 $3',
'blocklogtext' => 'Detta är en logg över blockeringar och avblockeringar.
@@ -2298,9 +2469,11 @@ I [[Special:IPBlockList|blockeringslistan]] listas alla IP-adresser och använda
'ipb_already_blocked' => '"$1" är redan blockerad',
'ipb-needreblock' => '== Redan blockerad ==
$1 är redan blockerad. Vill du ändra inställningarna?',
+'ipb-otherblocks-header' => 'Andra {{PLURAL:$1|blockering|blockeringar}}',
'ipb_cant_unblock' => 'Fel: Hittade inte blockering $1. Det är möjligt att den redan har upphävts.',
'ipb_blocked_as_range' => 'Fel: IP-adressen $1 är inte direkt blockerad, och kan därför inte avblockeras. Adressen är blockerad som en del av IP-intervallet $2, som kan avblockeras.',
'ip_range_invalid' => 'Ogiltigt IP-intervall.',
+'ip_range_toolarge' => 'Blockering av block större än /$1 är inte tillåtna.',
'blockme' => 'Blockera mig',
'proxyblocker' => 'Proxy-block',
'proxyblocker-disabled' => 'Den här funktionen är avaktiverad.',
@@ -2310,6 +2483,7 @@ $1 är redan blockerad. Vill du ändra inställningarna?',
'sorbs_create_account_reason' => 'Din IP-adress är listad som en öppen proxy i den DNSBL som används av {{SITENAME}}.
Du får inte skapa ett användarkonto',
'cant-block-while-blocked' => 'Du kan inte blockera andra användare medan du är blockerad.',
+'cant-see-hidden-user' => 'Användaren du försöker blockera är redan blockerad och gömd. Eftersom du inte har hideuser-rättigheter, kan du inte se eller redigera användarens blockering.',
# Developer tools
'lockdb' => 'Lås databas',
@@ -2351,6 +2525,7 @@ därför bör du vara säker på att du förstår konsekvenserna innan du forts
I de fallen måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
'movearticle' => 'Flytta sidan:',
+'moveuserpage-warning' => "'''Varning:''' Du håller på att flytta en användarsida. Observera att endast sidan kommer att flyttas och att användaren ''inte'' kommer att byta namn.",
'movenologin' => 'Inte inloggad',
'movenologintext' => 'För att flytta en sida måste du vara registrerad användare och [[Special:UserLogin|inloggad]].',
'movenotallowed' => 'Du har inte behörighet att flytta sidor på den här wikin.',
@@ -2361,7 +2536,7 @@ I de fallen måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
'move-watch' => 'Bevaka denna sida',
'movepagebtn' => 'Flytta sidan',
'pagemovedsub' => 'Flyttningen lyckades',
-'movepage-moved' => '\'\'\'"$1" har flyttats till "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" har flyttats till "$2"\'\'\'',
'movepage-moved-redirect' => 'En omdirigering har skapats.',
'movepage-moved-noredirect' => 'Skapandet av en omdirigering avbröts.',
'articleexists' => 'Antingen existerar redan en sida med det namnet, eller så har du valt ett namn som inte är tillåtet.
@@ -2403,6 +2578,14 @@ Den titel du vill flytta sidan till, "[[:$1]]", finns redan. Vill du radera den
'imageinvalidfilename' => 'Önskat filnamn är ogiltigt',
'fix-double-redirects' => 'Uppdatera omdirigeringar som leder till den gamla titeln',
'move-leave-redirect' => 'Lämna kvar en omdirigering',
+'protectedpagemovewarning' => "'''Varning:''' Den här sidan har låsts så att endast användare med administratörsrättigheter kan flytta den.
+Den senaste loggposten tillhandahålls nedan som referens:",
+'semiprotectedpagemovewarning' => "'''Observera:''' Denna sida har låsts så att endast registrerade användare kan flytta den.
+Den senaste loggposten tillhandahålls nedan som referens:",
+'move-over-sharedrepo' => '== Filen existerar ==
+[[:$1]] existerar på en delad källa. Om du flyttar en fil till detta namn kommer den delad filen bli överskriven.',
+'file-exists-sharedrepo' => 'Detta filnamn existerar redan på en delad källa.
+Var god välj ett annat namn.',
# Export
'export' => 'Exportera sidor',
@@ -2426,15 +2609,21 @@ I det senare fallet kan du även använda en länk, exempel [[{{#Special:Export}
'export-pagelinks' => 'Inkludera länkade sidor till ett djup på:',
# Namespace 8 related
-'allmessages' => 'Systemmeddelanden',
-'allmessagesname' => 'Namn',
-'allmessagesdefault' => 'Standardtext',
-'allmessagescurrent' => 'Nuvarande text',
-'allmessagestext' => 'Detta är en lista över alla meddelanden i namnrymden MediaWiki.
+'allmessages' => 'Systemmeddelanden',
+'allmessagesname' => 'Namn',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Nuvarande text',
+'allmessagestext' => 'Detta är en lista över alla meddelanden i namnrymden MediaWiki.
Besök [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller [http://translatewiki.net translatewiki.net] om du vill bidra till översättningen av MediaWiki.',
-'allmessagesnotsupportedDB' => "Den här sidan kan inte användas eftersom '''\$wgUseDatabaseMessages''' är avstängd.",
-'allmessagesfilter' => 'Filter för meddelandenamn:',
-'allmessagesmodified' => 'Visa bara ändrade',
+'allmessagesnotsupportedDB' => "Den här sidan kan inte användas eftersom '''\$wgUseDatabaseMessages''' är avstängd.",
+'allmessages-filter-legend' => 'Filtrera',
+'allmessages-filter' => 'Filtrera efter anpassningsgrad:',
+'allmessages-filter-unmodified' => 'Ej modifierad',
+'allmessages-filter-all' => 'Alla',
+'allmessages-filter-modified' => 'Modifierad',
+'allmessages-prefix' => 'Filtrera efter prefix:',
+'allmessages-language' => 'Språk:',
+'allmessages-filter-submit' => 'Gå',
# Thumbnails
'thumbnail-more' => 'Förstora',
@@ -2444,6 +2633,9 @@ Besök [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller
'djvu_no_xml' => 'Kan inte hämta DjVu-filens XML',
'thumbnail_invalid_params' => 'Ogiltiga parametrar för miniatyrbilden',
'thumbnail_dest_directory' => 'Kan inte skapa målkatalogen',
+'thumbnail_image-type' => 'Bildtypen stöds inte',
+'thumbnail_gd-library' => 'Inkomplett GD library konfigurering: saknar funktionen $1',
+'thumbnail_image-missing' => 'Fil verkar saknas: $1',
# Special:Import
'import' => 'Importera sidor',
@@ -2508,6 +2700,7 @@ Vänligen använd förhandsgranskningsknappen innan du sparar.',
'tooltip-ca-viewsource' => 'Den här sidan är skrivskyddad. Du kan se källtexten.',
'tooltip-ca-history' => 'Tidigare versioner av sidan',
'tooltip-ca-protect' => 'Skydda den här sidan',
+'tooltip-ca-unprotect' => 'Ta bort skrivskyddet från den här sidan',
'tooltip-ca-delete' => 'Radera denna sida',
'tooltip-ca-undelete' => 'Återställ alla redigeringar som gjorts innan sidan raderades',
'tooltip-ca-move' => 'Flytta den här sidan',
@@ -2518,6 +2711,7 @@ Vänligen använd förhandsgranskningsknappen innan du sparar.',
'tooltip-search-fulltext' => 'Sök efter sidor som innehåller denna text',
'tooltip-p-logo' => 'Besök huvudsidan',
'tooltip-n-mainpage' => 'Besök huvudsidan',
+'tooltip-n-mainpage-description' => 'Besök huvudsidan',
'tooltip-n-portal' => 'Om projektet, vad du kan göra, var man kan hitta saker',
'tooltip-n-currentevents' => 'Hitta bakgrundsinformation om aktuella händelser',
'tooltip-n-recentchanges' => 'Lista över senaste ändringar i wikin',
@@ -2565,6 +2759,7 @@ Ger möjlighet att skriva en motivering i redigeringssammanfattningen',
'chick.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Chick */',
'simple.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Enkel */',
'modern.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Modern */',
+'vector.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Vector */',
'print.css' => '/* CSS som skrivs här kommer att påverka utskriftsversionen */',
# Scripts
@@ -2577,6 +2772,7 @@ Ger möjlighet att skriva en motivering i redigeringssammanfattningen',
'chick.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Chick */',
'simple.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Enkel */',
'modern.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Modern */',
+'vector.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Vector */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata avstängt på den här servern.',
@@ -2586,10 +2782,12 @@ Ger möjlighet att skriva en motivering i redigeringssammanfattningen',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym användare|Anonyma användare}} på {{SITENAME}}',
'siteuser' => 'användaren $1 på {{SITENAME}}',
-'lastmodifiedatby' => 'Den här sidan ändrades senast kl. $2 den $1 av $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonym användare $1',
+'lastmodifiedatby' => 'Den här sidan ändrades senast kl. $2 den $1 av $3.',
'othercontribs' => 'Baserad på arbete av $1.',
'others' => 'andra',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|användaren|användarna}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonym|anonyma}} användare $1',
'creditspage' => 'Användare som bidragit till sidan',
'nocredits' => 'Det finns ingen information tillgänglig om vem som bidragit till denna sida.',
@@ -2619,6 +2817,7 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
'skinname-chick' => 'Chick',
'skinname-simple' => 'Enkel',
'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => 'Rendera alltid PNG',
@@ -2628,11 +2827,22 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
'mw_math_modern' => 'Rekommenderat för modern webbläsare',
'mw_math_mathml' => 'MathML om möjligt (experimentellt)',
+# Math errors
+'math_failure' => 'Misslyckades med att tolka formel.',
+'math_unknown_error' => 'okänt fel',
+'math_unknown_function' => 'okänd funktion',
+'math_lexing_error' => 'regelfel',
+'math_syntax_error' => 'syntaxfel',
+'math_image_error' => 'Konvertering till PNG-format misslyckades; kontrollera om latex, dvips, gs och convert är korrekt installerade',
+'math_bad_tmpdir' => 'Kan inte skriva till eller skapa temporär mapp för matematikresultat',
+'math_bad_output' => 'Kan inte skriva till eller skapa mapp för matematikresultat',
+'math_notexvc' => 'Applicationen texvc saknas; läs math/README för konfigureringsanvisningar.',
+
# Patrolling
'markaspatrolleddiff' => 'Märk som patrullerad',
'markaspatrolledtext' => 'Märk den här sidan som patrullerad',
'markedaspatrolled' => 'Markerad som patrullerad',
-'markedaspatrolledtext' => 'Den valda versionen har märkts som patrullerad.',
+'markedaspatrolledtext' => 'Den valda versionen av [[:$1]] har märkts som patrullerad.',
'rcpatroldisabled' => 'Patrullering av Senaste ändringar är avstängd.',
'rcpatroldisabledtext' => 'Funktionen "patrullering av Senaste ändringar" är tillfälligt avstängd.',
'markedaspatrollederror' => 'Kan inte markera som patrullerad',
@@ -2662,13 +2872,10 @@ $1',
'previousdiff' => '← Äldre redigering',
'nextdiff' => 'Nyare redigering →',
-# Visual comparison
-'visual-comparison' => 'Visuell jämförelse',
-
# Media information
'mediawarning' => "'''Varning''': Den här filen kan innehålla elak kod.
Om du kör den kan din dator skadas.",
-'imagemaxsize' => 'Begränsa bilders storlek på filbeskrivningssidor till:',
+'imagemaxsize' => "Begränsa bilders storlek:<br />''(för filbeskrivningssidor)''",
'thumbsize' => 'Storlek på minibild:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sida|sidor}}',
'file-info' => '(filstorlek: $1, MIME-typ: $2)',
@@ -2677,6 +2884,8 @@ Om du kör den kan din dator skadas.",
'svg-long-desc' => '(SVG-fil, grundstorlek: $1 × $2 pixel, filstorlek: $3)',
'show-big-image' => 'Högupplöst version',
'show-big-image-thumb' => '<small>Storlek på förhandsvisningen: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'upprepad',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ram|ramar}}',
# Special:NewFiles
'newimages' => 'Galleri över nya filer',
@@ -2713,7 +2922,7 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Bredd',
@@ -2840,14 +3049,14 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-unknowndate' => 'Okänt datum',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Spegelvänd horisontellt', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Roterad 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Spegelvänd vertikalt', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Roterad 90° moturs och spegelvänd vertikalt', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Roterad 90° medurs', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Roterad 90° medurs och spegelvänd vertikalt', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Roterad 90° moturs', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Spegelvänd horisontellt',
+'exif-orientation-3' => 'Roterad 180°',
+'exif-orientation-4' => 'Spegelvänd vertikalt',
+'exif-orientation-5' => 'Roterad 90° moturs och spegelvänd vertikalt',
+'exif-orientation-6' => 'Roterad 90° medurs',
+'exif-orientation-7' => 'Roterad 90° medurs och spegelvänd vertikalt',
+'exif-orientation-8' => 'Roterad 90° moturs',
'exif-planarconfiguration-1' => 'chunkformat',
'exif-planarconfiguration-2' => 'planärformat',
@@ -2969,7 +3178,7 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-gpsmeasuremode-2' => 'Tvådimensionell mätning',
'exif-gpsmeasuremode-3' => 'Tredimensionell mätning',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometer i timmen',
'exif-gpsspeed-m' => 'Miles i timmen',
'exif-gpsspeed-n' => 'Knop',
@@ -2988,6 +3197,7 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'watchlistall2' => 'alla',
'namespacesall' => 'alla',
'monthsall' => 'alla',
+'limitall' => 'alla',
# E-mail address confirmation
'confirmemail' => 'Bekräfta e-postadress',
@@ -3119,7 +3329,7 @@ Du kan också [[Special:Watchlist/edit|använda standardeditorn]].',
'duplicate-defaultsort' => 'Varning: Standardsorteringsnyckeln "$2" tar över från den tidigare standardsorteringsnyckeln "$1".',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Installerade programtillägg',
'version-specialpages' => 'Specialsidor',
'version-parserhooks' => 'Parsertillägg',
@@ -3133,7 +3343,7 @@ Du kan också [[Special:Watchlist/edit|använda standardeditorn]].',
'version-skin-extension-functions' => 'Skaltilläggsfunktioner',
'version-hook-name' => 'Namn',
'version-hook-subscribedby' => 'Används av',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licens',
'version-software' => 'Installerad programvara',
'version-software-product' => 'Produkt',
@@ -3213,4 +3423,15 @@ Skriv filnamnet utan prefixet "{{ns:file}}:" .',
'dberr-outofdate' => 'Observera att deras index av vårt innehåll kan vara föråldrat.',
'dberr-cachederror' => 'Följande är en cachad kopia av den efterfrågade sidan, och kan vara föråldrad.',
+# HTML forms
+'htmlform-invalid-input' => 'Det finns problem med din inmatning',
+'htmlform-select-badoption' => 'Värdet du valde är inte ett giltigt alternativ.',
+'htmlform-int-invalid' => 'Värdet du valde är inte ett heltal.',
+'htmlform-float-invalid' => 'Värdet du valde är inte en siffra.',
+'htmlform-int-toolow' => 'Värdet du valde är under minimumet på $1',
+'htmlform-int-toohigh' => 'Värdet du valde är över maximumet på $1',
+'htmlform-submit' => 'Spara',
+'htmlform-reset' => 'Ogör ändringar',
+'htmlform-selectorother-other' => 'Andra',
+
);
diff --git a/languages/messages/MessagesSw.php b/languages/messages/MessagesSw.php
index 66635af6..398274f2 100644
--- a/languages/messages/MessagesSw.php
+++ b/languages/messages/MessagesSw.php
@@ -21,16 +21,25 @@ $namespaceNames = array(
NS_TALK => 'Majadiliano',
NS_USER => 'Mtumiaji',
NS_USER_TALK => 'Majadiliano_ya_mtumiaji',
- NS_PROJECT_TALK => '$1_majadiliano',
+ NS_PROJECT_TALK => 'Majadiliano_ya_$1',
NS_FILE => 'Picha',
- NS_FILE_TALK => 'Majadiliano_faili',
- NS_MEDIAWIKI_TALK => 'MediaWiki_majadiliano',
+ NS_FILE_TALK => 'Majadiliano_ya_faili',
+ NS_MEDIAWIKI_TALK => 'Majadiliano_ya_MediaWiki',
NS_TEMPLATE => 'Kigezo',
- NS_TEMPLATE_TALK => 'Kigezo_majadiliano',
+ NS_TEMPLATE_TALK => 'Majadiliano_ya_kigezo',
NS_HELP => 'Msaada',
- NS_HELP_TALK => 'Msaada_majadiliano',
+ NS_HELP_TALK => 'Majadiliano_ya_msaada',
NS_CATEGORY => 'Jamii',
- NS_CATEGORY_TALK => 'Jamii_majadiliano',
+ NS_CATEGORY_TALK => 'Majadiliano_ya_jamii',
+);
+
+$namespaceAliases = array(
+ '$1_majadiliano' => NS_PROJECT_TALK,
+ 'Majadiliano_faili' => NS_FILE_TALK,
+ 'MediaWiki_majadiliano' => NS_MEDIAWIKI_TALK,
+ 'Kigezo_majadiliano' => NS_TEMPLATE_TALK,
+ 'Msaada_majadiliano' => NS_HELP_TALK,
+ 'Jamii_majadiliano' => NS_CATEGORY_TALK,
);
$specialPageAliases = array(
@@ -141,6 +150,7 @@ $messages = array(
'tog-enotifminoredits' => 'Pia nitumie barua pale mabadiliko ya ukurasa yanapokuwa madogo tu',
'tog-enotifrevealaddr' => 'Onyesha anwani ya barua pepe yangu katika barua pepe za taarifa',
'tog-shownumberswatching' => 'Onyesha idadi ya watumiaji waangalizi',
+'tog-oldsig' => 'Sahihi jinsi inayoonekana sasa:',
'tog-fancysig' => 'Weka sahihi tu (bila kujiweka kiungo yenyewe)',
'tog-externaleditor' => 'Tumia kiharirio cha nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako)',
'tog-externaldiff' => 'Tumia diff za nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako)',
@@ -164,6 +174,13 @@ $messages = array(
'underline-never' => 'Kamwe',
'underline-default' => 'Kivinjari mbadala',
+# Font style option in Special:Preferences
+'editfont-style' => 'Mtindo wa maandishi kwenye sanduku la kuhariri:',
+'editfont-default' => 'Kivinjari msingi',
+'editfont-monospace' => 'Mwandiko wa monospaced',
+'editfont-sansserif' => 'Mwandiko wa sans-serif',
+'editfont-serif' => 'Mwandiko wa serif',
+
# Dates
'sunday' => 'Jumapili',
'monday' => 'Jumatatu',
@@ -223,7 +240,7 @@ $messages = array(
'category-media-header' => 'Picha, video, na sauti katika jamii "$1"',
'category-empty' => "''Jamii hii bado haina ukurasa, picha, video, wala sauti yoyote.''",
'hidden-categories' => '{{PLURAL:$1|Jamii iliofichwa|Jamii zilizofichwa}}',
-'hidden-category-category' => 'Jamii zilizofichwa', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Jamii zilizofichwa',
'category-subcat-count' => '{{PLURAL:$2|Jamii hii ina kijamii hiki tu.|Jamii hii ina {{PLURAL:$1|kijamii kifuatacho|vijamii $1 vifuatavyo}}, kati ya jumla ya $2.}}',
'category-subcat-count-limited' => 'Jamii hii ina {{PLURAL:$1|kijamii|vijamii $1 vifuatavyo}}.',
'category-article-count' => '{{PLURAL:$2|Jamii hii ina ukurasa ufuatao tu.|Jamii hii ina {{PLURAL:$1|ukurasa ufuatao|kurasa $1 zifuatazo}}, kati ya jumla ya $2.}}',
@@ -231,6 +248,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Jamii hii ina faili hili tu.|{{PLURAL:$1|Faili linalofuata limo|Mafaili $1 yanayofuata yamo}} katika jamii hii, kati ya jumla ya $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Faili lifuatalo lipo|Mafaili $1 yafuatayo yapo}} kati ya mafaili ya jamii hii.',
'listingcontinuesabbrev' => 'endelea',
+'index-category' => 'Kurasa kuu',
+'noindex-category' => 'Kurasa zisizokuu',
'mainpagetext' => "'''MediaWiki imefanikiwa kuingizwa.'''",
'mainpagedocfooter' => 'Shauriana na [http://meta.wikimedia.org/wiki/Help:Contents Mwongozo wa Mtumiaji] kwa habari juu ya utumiaji wa bidhaa pepe ya wiki.
@@ -240,10 +259,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ ya MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Orodha ya utoaji wa habari za MediaWiki]',
-'about' => 'Kuhusu',
-'article' => 'Makala',
-'newwindow' => '(Itafungua kwa dirisha jipya)',
-'cancel' => 'Batilisha',
+'about' => 'Kuhusu',
+'article' => 'Makala',
+'newwindow' => '(Itafungua kwa dirisha jipya)',
+'cancel' => 'Batilisha',
+'moredotdotdot' => 'Zaidi...',
+'mypage' => 'Ukurasa wangu',
+'mytalk' => 'Majadiliano yangu',
+'anontalk' => 'Majadiliano ya IP hii',
+'navigation' => 'Urambazaji',
+'and' => '&#32;na',
+
+# Cologne Blue skin
'qbfind' => 'Gundua',
'qbbrowse' => 'Vinjari',
'qbedit' => 'Hariri',
@@ -251,15 +278,35 @@ $messages = array(
'qbpageinfo' => 'Muktadha',
'qbmyoptions' => 'Kurasa zangu',
'qbspecialpages' => 'Kurasa za pekee',
-'moredotdotdot' => 'Zaidi...',
-'mypage' => 'Ukurasa wangu',
-'mytalk' => 'Majadiliano yangu',
-'anontalk' => 'Majadiliano ya IP hii',
-'navigation' => 'Urambazaji',
-'and' => '&#32;na',
-
-# Metadata in edit box
-'metadata_help' => 'Data za meta',
+'faq' => 'Maswali ya kawaida',
+'faqpage' => 'Project:Maswali Yaulizwayo Marakwamara',
+
+# Vector skin
+'vector-action-addsection' => 'Weka mada',
+'vector-action-delete' => 'Futa',
+'vector-action-move' => 'Hamisha',
+'vector-action-protect' => 'Linda',
+'vector-action-undelete' => 'Rudisha',
+'vector-action-unprotect' => 'Ondoa tunzo',
+'vector-namespace-category' => 'Jamii',
+'vector-namespace-help' => 'Ukurasa wa msaada',
+'vector-namespace-image' => 'Faili',
+'vector-namespace-main' => 'Ukurasa',
+'vector-namespace-media' => 'Ukurasa wa faili',
+'vector-namespace-mediawiki' => 'Ujumbe',
+'vector-namespace-project' => 'Ukurasa wa mradi',
+'vector-namespace-special' => 'Ukurasa maalum',
+'vector-namespace-talk' => 'Majadiliano',
+'vector-namespace-template' => 'Kigezo',
+'vector-namespace-user' => 'Ukurasa wa mtumiaji',
+'vector-view-create' => 'Anzisha',
+'vector-view-edit' => 'Hariri',
+'vector-view-history' => 'Fungua historia',
+'vector-view-view' => 'Soma',
+'vector-view-viewsource' => 'Kuonyesha kodi',
+'actions' => 'Vitendo',
+'namespaces' => 'Maeneo ya wiki',
+'variants' => 'Vibadala',
'errorpagetitle' => 'Hitilafu',
'returnto' => 'Rudia $1.',
@@ -309,18 +356,22 @@ $messages = array(
'otherlanguages' => 'Lugha zingine',
'redirectedfrom' => '(Elekezwa kutoka $1)',
'redirectpagesub' => 'Ukurasa wa kuelekeza',
-'lastmodifiedat' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho tarehe $1, saa $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho tarehe $1, saa $2.',
'viewcount' => 'Ukurasa huu umetembelewa mara {{PLURAL:$1|moja tu|$1}}.',
'protectedpage' => 'Kurasa iliyolindwa',
'jumpto' => 'Rukia:',
'jumptonavigation' => 'urambazaji',
'jumptosearch' => 'tafuta',
+'view-pool-error' => 'Samahani, seva zimezidiwa kwa wakati huu.
+Watumiaji wengi mno wanajaribu kutazama ukurasa huu.
+Tafadhali subiri kwa muda kadhaa kabla ya kujaribu kufungua tena.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Kuhusu {{SITENAME}}',
'aboutpage' => 'Project:Kuhusu',
'copyright' => 'Yaliyomo yafuata $1.',
-'copyrightpagename' => 'Haki ya kunakili {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Hakimiliki',
'currentevents' => 'Matukio ya hivi karibuni',
'currentevents-url' => 'Project:Matukio ya hivi karibuni',
@@ -328,8 +379,6 @@ $messages = array(
'disclaimerpage' => 'Project:Kanusho kwa jumla',
'edithelp' => 'Usaidizi kwa uhariri',
'edithelppage' => 'Help:Usaidizi kwa uhariri',
-'faq' => 'Maswali ya kawaida',
-'faqpage' => 'Project:Maswali Yaulizwayo Marakwamara',
'helppage' => 'Help:Yaliyomo',
'mainpage' => 'Mwanzo',
'mainpage-description' => 'Mwanzo',
@@ -410,9 +459,6 @@ Jaribio la ulizio la mwisho la kihifadhidata lilikuwa:
"$1"
kutoka ndani ya kitendea "$2".
Kihifadhidata kikarejesha tatizo "<tt>$3: $4</tt>".',
-'noconnect' => 'Samahani! Wiki inapata shida, na imeshindwa kuwasiliana na seva ya hifadhidata.<br />
-$1',
-'nodb' => 'Haikufaulu kuteua hifadhidata ya $1',
'laggedslavemode' => "'''Ilani:'''Labda masahihisho ya hivi karibuni bado hayajaonekana.",
'readonly' => 'Hifadhidata imefungika',
'enterlockreason' => 'Ingiza sababu za kufunga, pamoja na makisio yake lini itafunguliwa',
@@ -430,6 +476,8 @@ Tafadhali ripoti hili kwa [[Special:ListUsers/sysop|mkabidhi]], na uache jina la
'readonly_lag' => 'Kihifadhidata kimejifunga chenyewe wakati seva za kifadhidata joli imedakwa na seva ya utawala',
'internalerror' => 'Hitilafu ya ndani',
'internalerror_info' => 'Hitilafu ya ndani: $1',
+'fileappenderrorread' => 'Haikuweza kusoma "$1" wakati wa kuambatanisha.',
+'fileappenderror' => 'Haikuweza kuongeza "$1" hadi "$2".',
'filecopyerror' => 'Haikuweza kunakili faili "$1" kwa "$2".',
'filerenameerror' => 'Haikuweza kubadilisha jina la faili "$1" kwa "$2".',
'filedeleteerror' => 'Haikuweza kufuta faili "$1".',
@@ -439,6 +487,8 @@ Tafadhali ripoti hili kwa [[Special:ListUsers/sysop|mkabidhi]], na uache jina la
'unexpected' => 'Jambo lisilotegemewa: "$1"="$2".',
'formerror' => 'Hitilafu: haikufaulu kuweka fomu',
'badarticleerror' => 'Ukurasa huu hauwezi kutendewa kitendo hiki.',
+'cannotdelete' => 'Haikuweza kufuta kurasa au faili linaloitwa "$1".
+Huenda likawa tayari lishafutwa na mtu mwingine.',
'badtitle' => 'Jina halifai',
'badtitletext' => 'Jina la ukurasa ulilotaka ni batilifu, tupu, au limeungwa vibaya na jina la lugha nyingine au Wiki nyingine. Labda linazo herufi moja a zaidi ambazo hazitumiki katika majina.',
'perfcached' => 'Data zifuatazo zinatoka kwenye kache na huenda si ya kisasa.',
@@ -474,14 +524,12 @@ Sababu zilizotolewa ni "\'\'$2\'\'".',
'virus-unknownscanner' => 'kipambana na virusi haijulikani:',
# Login and logout pages
-'logouttitle' => 'Kutoka',
'logouttext' => "'''Umetoka kwenye akaunti yako.'''
Unaweza kuendelea kutumia {{SITENAME}} bila kutaja jina lako, au unaweza [[Special:UserLogin|kuingia tena]] kwenye akaunti yako. Kumbuka kwamba kurasa nyingine zitaendelea kuonekana kana kwamba bado hujatoka kwenye akaunti yako, hadi utakaposafisha kache ya kivinjari.",
'welcomecreation' => '== Karibu, $1! ==
Ushafunguliwa akaunti yako tayari.
Usisahau kubadilisha mapendekezo yako ya [[Special:Preferences|{{SITENAME}}]].',
-'loginpagetitle' => 'Kuingia kwa watumiaji',
'yourname' => 'Jina la mtumiaji:',
'yourpassword' => 'Neno la siri:',
'yourpasswordagain' => 'Andika tena neno la siri',
@@ -492,6 +540,7 @@ Usisahau kubadilisha mapendekezo yako ya [[Special:Preferences|{{SITENAME}}]].',
'nav-login-createaccount' => 'Ingia/ sajili akaunti',
'loginprompt' => 'Lazima tarakalishi yako ipokee kuki ili uweze kuingia kwenye {{SITENAME}}.',
'userlogin' => 'Ingia/ sajili akaunti',
+'userloginnocreate' => 'Ingia',
'logout' => 'Toka',
'userlogout' => 'Toka',
'notloggedin' => 'Hujaingia',
@@ -504,30 +553,8 @@ Usisahau kubadilisha mapendekezo yako ya [[Special:Preferences|{{SITENAME}}]].',
'badretype' => 'Maneno uliyoyaandika ni tofauti.',
'userexists' => 'Jina la mtumiaji uliloingiza tayari linatumika.
Tafadhali chagua jina lingine.',
-'youremail' => 'Barua pepe yako:',
-'username' => 'Jina la mtumiaji:',
-'uid' => 'Namba ya mtumiaji:',
-'prefs-memberingroups' => 'Mwanachama wa {{PLURAL:$1|kundi la|makundi ya}}:',
-'yourrealname' => 'Jina lako halisi:',
-'yourlanguage' => 'Lugha:',
-'yourvariant' => 'Variant:',
-'yournick' => 'Sahihi:',
-'badsig' => 'Umeweka sahihi batili.
-Angalia mabano ya HTML.',
-'badsiglength' => 'Sahihi uliyoweka ni ndefu mno.
-Haiwezi kuzidi {{PLURAL:$1|tarakimu|tarakimu}} $1.',
-'yourgender' => 'Jinsi:',
-'gender-unknown' => 'Haitajwi',
-'gender-male' => 'Mume',
-'gender-female' => 'Mke',
-'prefs-help-gender' => 'Si lazima: inatumika kwenye lugha zinazokuwa na mtindo wa kuitana tofauti kwa ajili ya wanaume na wanawake, ili bidhaa pepe itumie mtindo sahihi.
-Taarifa hii itakuwa wazi.',
-'email' => 'Barua pepe',
-'prefs-help-realname' => 'Jina la kweli si lazima. Ukichagua kutaja jina lako hapa, litatumiwa kuonyesha kwamba ndiyo ulifanya kazi unayochangia.',
'loginerror' => 'Hitilafu ya kuingia',
-'prefs-help-email' => 'Barua-pepe sio lazima, lakini inawezesha kupokea neno jipya la siri kwa kupitia barua-pepe yako endapo utakuwa umelisahau.
-Pia unaweza kuchagua kuwawezesha watumiaji wengine wawasiliane nawe kwa kupitia ukurasa wako wa mtumiaji au ule wa majadiliano bila ya kuonyesha jina la akaunti yako.',
-'prefs-help-email-required' => 'Barua pepe inahitajika.',
+'createaccounterror' => 'Haikufaulu kuanzisha akaunti: $1',
'nocookiesnew' => "Umesajiliwa, lakini bado hujaingizwa. {{SITENAME}} inatumia ''kuki'' ili watumiaji waingizwe. Tarakilishi yako inazuia ''kuki''. Tafadhali, ondoa kizuizi hicho halafu uingie kwa kutumia jina jipya na neno la siri.",
'nocookieslogin' => '{{SITENAME}} inatumia kuki ili watumiaji waweze kuingia.
Tarakilishi yako inakataa kupokea kuki.
@@ -540,10 +567,12 @@ Kumbuka kwamba programu inatofautishana kati ya herufi kubwa na ndogo.
Labda umeandika vibaya, au [[Special:UserLogin/signup|sajili akaunti mpya]].',
'nosuchusershort' => 'Hakuna mtumiaji mwenye jina "<nowiki>$1</nowiki>". Labda umeandika vibaya.',
'nouserspecified' => 'Lazima uandike jina la mtumiaji.',
+'login-userblocked' => 'Mtumiaji huyu amezuiwa. Hawezi kuingia.',
'wrongpassword' => 'Umeingiza neno la siri la makosa.
Jaribu tena.',
'wrongpasswordempty' => 'Neno la siri lilikuwa tupu. Jaribu tena.',
-'passwordtooshort' => 'Nywila yako haifai. Ni lazima iwe na {{PLURAL:#1|herufi}} $1 au zaidi, na inabidi nywila na jina la mtumiaji ziwe tofauti.',
+'passwordtooshort' => 'Ni lazima neno la siri liwe na {{PLURAL:$1|herufi}} $1 au zaidi.',
+'password-name-match' => 'Neno lako la siri lazima liwe tofauti na jina lako la mtumiaji.',
'mailmypassword' => 'Nitume neno la siri jipya kwa barua-pepe',
'passwordremindertitle' => 'Neno la siri jipya la muda kwa ajili ya {{SITENAME}}',
'passwordremindertext' => 'Mtu mmoja (yamkini wewe, kutoka anwani ya IP $1)
@@ -555,6 +584,7 @@ Kama mtu mwingine ametoa ombi hili au kama umekumbuka neno lako la siri na
umeamua kutoibadilisha, unaweza kupuuza ujumbe huu na
kuendelea kulitumia neno lako la siri la awali.',
'noemail' => 'Hatuna anwani ya barua pepe kwa mtumiaji "$1".',
+'noemailcreate' => 'Unahitajika utoe anwani halali ya barua pepe',
'passwordsent' => 'Neno jipya la siri limeshatumwa kwenye anwani ya barua pepe ya "$1".
Tafadhali, ingia baada ya kulipokea.',
'blocked-mailpassword' => 'Anwani yako ya IP imezuiwa kuhariri {{SITENAME}}, kwa hiyo hairuhusiwi kuomba neno jipya la siri, kwa lengo la kuzuia uharibifu.',
@@ -580,9 +610,11 @@ Tafadhali ingiza anwani ya miundo-mizuri au acha tupu kipengele hicho.',
Inabidi uingie na kisha ubadilishe neno la siri lako sasa.
Unaweza kupuuza ujumbe huu, endapo akaunti hii ilianzishwa kimakosa.',
+'usernamehasherror' => 'Jina la mtumiaji haliwezi kuwa na herufi ya alama ya reli',
'login-throttled' => 'Umejaribu kadha wa kadha kuingia akaunti hii.
Tafadhali subiri kwanza kabla ya kujaribu tena.',
'loginlanguagelabel' => 'Lugha: $1',
+'suspicious-userlogout' => 'Ombi lako la kutoka kwenye akaunti yako limehiniwa, kwa sababu inaonekana kwamba ombi lilitumwa na kivinjari kilichoharibika au seva ya kuwakilisha yenye kache.',
# Password reset dialog
'resetpass' => 'Kubadilisha neno la siri',
@@ -597,6 +629,7 @@ Kumalizia kuingia ndani, ni lazima urekebishe neno la siri jipya hapa:',
'resetpass_forbidden' => 'Maneno ya siri hayawezi kubadilishwa',
'resetpass-no-info' => 'Lazima uwe umeingia ili kuweza kutumia kurasa hii moja kwa moja.',
'resetpass-submit-loggedin' => 'Badilisha neno la siri',
+'resetpass-submit-cancel' => 'Batilisha',
'resetpass-wrong-oldpass' => 'Neno la siri la muda au la sasa ni batili.
Inawezekana ikawa tayari umefaulu kubadilisha neno lako la siri au neno la siri jipya la muda.',
'resetpass-temp-password' => 'Neno la siri la muda:',
@@ -692,13 +725,21 @@ Kwa hiyo tunatumia namba za anwani ya IP yake kumtambulisha.
Anwani ya IP kama hiyo inaweza kutumika na watumiaji kadhaa.
Labda itakusumbua kwamba kuna maoni mengine yanawekwa hapa na unaamini kwamba haya maoni hayakulengi. Ikiwa hivyo, tafadhali [[Special:UserLogin/signup|fungua akaunti]] au [[Special:UserLogin|ingia]] ili kuepuka kuchanganywa na watumiaji wengine ambao hawana jina.''",
'noarticletext' => 'Ukurasa huu haujaandikwa bado. [[Special:Search/{{PAGENAME}}|tafutia jina hili]] katika kurasa nyingine, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tafuta kumbukumbu zinazohusika], au [{{fullurl:{{FULLPAGENAME}}|action=edit}} hariri ukurasa huu]</span>.',
+'noarticletext-nopermission' => 'Kwa sasa hakuna maandishi katika ukurasa huu.
+Unaweza [[Special:Search/{{PAGENAME}}|kutafuta jina la ukurasa huu]] katika kurasa nyingine,
+au <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tafuta ingizo linalofanana]</span>.',
'userpage-userdoesnotexist' => 'Akaunti ya mtumiaji "$1" haijasajilishwa.
Ukitaka kuanzisha au kuhariri ukurasa huu tafadhali ucheki jina la akaunti.',
+'userpage-userdoesnotexist-view' => 'Akaunti ya mtumiaji "$1" haijasajilishwa.',
+'blocked-notice-logextract' => 'Mtumiaji huyu bado amezuiwa.
+Rejea kumbukumbu ya uzuio ya mwisho inayoandikwa chini:',
'clearyourcache' => "'''Elewa - Baada ya kuhifadhi, itakubidi uzungushe kivinjali kache chako ili kuona mabadiliko.'''
'''Mozilla / Firefox / Safari:''' shikiria ''Shift'' wakati unabonyeza ''Reload'', au aidha bonyeza ''Ctrl-F5'' au ''Ctrl-R'' (''Command-R'' kwa Macintosh);
'''Konqueror: '''bonyeza ''Reload'' au bonyeza ''F5'';
'''Opera:''' futa kache kwenye ''Tools → Preferences'';
'''Internet Explorer:''' shikiria ''Ctrl'' wakati unabonyeza ''Refresh,'' au bonyeza ''Ctrl-F5''.",
+'usercssyoucanpreview' => "'''Kidokezi:''' Bonyeza \"{{int:showpreview}}\" kujaribu CSS hii mpya kabla hujaihifadhi.",
+'userjsyoucanpreview' => "'''Kidokezi:''' Bonyeza \"{{int:showpreview}}\" kujaribu JS hii mpya kabla hujaihifadhi.",
'usercsspreview' => "'''Kumbuka kwamba unahakiki mandhari ya CSS za ukurasa wako tu.'''
'''Haijahifadhiwa bado!'''",
'userjspreview' => "'''Kumbuka kwamba unajaribu/kuhakiki mandhari ya ukurasa wako wa JavaScript tu.'''
@@ -750,25 +791,34 @@ Hayawezi kuhifadhiwa.",
Unaweza kukata-na-kabandika maandishi yako kwenye faili na kulihifadhi kwa ajili ya baadaye.
Mkabidhi aliyefunga ametoa maelezo haya: $1",
-'protectedpagewarning' => "'''ANGALIA: Ukurasa huu unakingwa kwa hiyo watumiaji wenye haki za wasimamizi tu wanaweza kuuhariri. Hakikisha kwamba unakuwa unafuata mwongozo wa kuhariri kurasa zinazokingwa.'''",
-'semiprotectedpagewarning' => "'''Ilani:''' Ukurasa huu umefungwa kwa hiyo watumiaji waliojisajili tu ndiyo wanaweza kuuhariri.",
+'protectedpagewarning' => "'''ILANI: Ukurasa huu unakingwa kwa hiyo watumiaji wenye haki za wakabidhi tu wanaweza kuuhariri.'''
+Rejea kumbukumbu ya mwisho inayoandikwa chini:",
+'semiprotectedpagewarning' => "'''Ilani:''' Ukurasa huu umefungwa kwa hiyo watumiaji waliojisajili tu ndiyo wanaweza kuuhariri.
+Rejea kumbukumbu ya mwisho inayoandikwa chini:",
'cascadeprotectedwarning' => "'''Ilani:''' Ukurasa huu umefungwa kwa hiyo watumiaji wenye uwezo wa ukabidhi tu ndiyo wanaweza kuuhariri, kwa sababu umejumlishwa kwenye {{PLURAL:$1|ukurasa huu mwingine wenye|kurasa hizi zingine zenye}} ulindaji kwa kurasa chini yake:",
-'titleprotectedwarning' => "'''Ilani: Ukurasa umefungwa kwa hiyo [[Special:ListGroupRights|haki maalumu]] zinahitajika ili kuanzisha ukurasa huu.'''",
-'templatesused' => 'Vigezo vinavyotumiwa kwenye ukurasa huu:',
-'templatesusedpreview' => 'Vigezo vinavyotumiwa katika mandhari haya:',
+'titleprotectedwarning' => "'''Ilani: Ukurasa umefungwa, kwa hiyo [[Special:ListGroupRights|wezo maalumu]] zinahitajika ili kuuanzisha ukurasa huu.'''
+Rejea kumbukumbu ya mwisho inayoandikwa chini:",
+'templatesused' => '{{PLURAL:$1|Kigezo kinachotumiwa|Vigezo vinavyotumiwa}} kwenye ukurasa huu:',
+'templatesusedpreview' => '{{PLURAL:$1|Kigezo kinachotumiwa|Vigezo vinavyotumiwa}} katika mandhari haya:',
+'templatesusedsection' => '{{PLURAL:$1|Kigezo kinachotumika|Vigezo vinavyotumika}} katika sehemu hii:',
'template-protected' => '(kulindwa)',
'template-semiprotected' => '(ulindaji kwa kiasi)',
'hiddencategories' => 'Ukurasa huu uliomo katika jamii $1 {{PLURAL:$1|iliofichwa|zilizofichwa}}:',
'nocreatetitle' => 'Si wote wanaoweza kuanzisha ukurasa',
'nocreatetext' => '{{SITENAME}} imebana uwezekano kutengeneza kurasa mpya. Unaweza kurudia na kuhariri kurasa zilizomo, au [[Special:UserLogin|ingia au anza akaunti]].',
'nocreate-loggedin' => 'Huna ruhusa ya kuazisha kurasa mpya.',
+'sectioneditnotsupported-title' => 'Kuhariri sehemu kwa sehemu haiwezikani',
+'sectioneditnotsupported-text' => 'Haiwezikani kuhariri ukurasa huu sehemu kwa sehemu.',
'permissionserrors' => 'Hitilafu za ruhusa',
'permissionserrorstext' => 'Huna ruhusa ya kufanya hivyo, kwa ajili ya sababu {{PLURAL:$1|ifuatayo|zifuatazo}}:',
'permissionserrorstext-withaction' => 'Huruhusiwi $2, kwa sababu {{PLURAL:$1|hiyo|hizo}}:',
-'recreate-deleted-warn' => "'''Ilani: Unatengeneza tena ukurasa uliofutwa tayari.'''
+'recreate-moveddeleted-warn' => "'''Ilani: Unatengeneza tena ukurasa uliofutwa tayari.'''
Fikiria kama inafaa kuendelea kuhariri ukurasa huu.
-Kumbukumbu ya kufuta ukurasa huu linapatikana hapa kukusaidia:",
+Kumbukumbu za kufuta na kuhamisha ukurasa huu zinapatikana hapa kukusaidia:",
+'moveddeleted-notice' => 'Ukurasa huu umefutwa.
+Kumbukumbu za kufuta na kuhamisha ukurasa huu zimetolewa chini, ili zifikike kwa urahisi.',
+'log-fulllog' => 'Tazama kumbukumbu zote',
'edit-gone-missing' => 'Haikuwezakana kusasisha ukurasa.
Inaonekana kwamba ukurasa umefutwa.',
'edit-conflict' => 'Mgongano wa kuhariri.',
@@ -793,9 +843,9 @@ Sababu iliyotolewa na $3 ni ''$2''",
'viewpagelogs' => 'Tazama kumbukumbu kwa ukurasa huu',
'nohistory' => 'Hakuna historia ya kuhariri kwa ajili ya ukurasa huu.',
'currentrev' => 'Toleo la sasa',
-'currentrev-asof' => 'Toleo lililopo $1',
-'revisionasof' => 'Sahihisho kutoka $1',
-'revision-info' => 'Sahihisho ya $1 aliyefanya $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Toleo la sasa la $1',
+'revisionasof' => 'Pitio la $1',
+'revision-info' => 'Pitio la $1 aliyefanya $2',
'previousrevision' => '← Pitio lililotangulia',
'nextrevision' => 'Pitio linalofuata →',
'currentrevisionlink' => 'Toleo la sasa',
@@ -807,7 +857,7 @@ Sababu iliyotolewa na $3 ni ''$2''",
'histlegend' => "Chagua tofauti: tia alama katika vitufe redio kulinganisha mapitio, na bonyeza \"enter\" au kitufe hapo chini.<br />
Ufunguo: '''({{int:cur}})''' = tofauti na toleo la sasa, '''({{int:last}})''' = tofauti na pitio lililotangulia, '''({{int:minoreditletter}})''' = badiliko dogo.",
'history-fieldset-title' => 'Fungua historia',
-'deletedrev' => '[iliyofutwa]',
+'history-show-deleted' => 'Zilizofutwa tu',
'histfirst' => 'Mwanzoni',
'histlast' => 'Mwishoni',
'historysize' => '({{PLURAL:$1|baiti}}) $1',
@@ -816,51 +866,89 @@ Ufunguo: '''({{int:cur}})''' = tofauti na toleo la sasa, '''({{int:last}})''' =
# Revision feed
'history-feed-title' => 'Kumbukumbu za mapitio',
'history-feed-description' => 'Kumbukumbu za mapitio ya ukurasa huu',
-'history-feed-item-nocomment' => '$1 kwenye $2', # user at time
+'history-feed-item-nocomment' => '$1 kwenye $2',
'history-feed-empty' => 'Ukurasa ulioomba haupatikani.
Labda umeshafutwa, au umebadilishwa jina.
Jaribu [[Special:Search|kutafuta kurasa mpya zinazohusika kwenye wiki]].',
# Revision deletion
-'rev-deleted-comment' => '(muhtasari ilifutwa)',
-'rev-deleted-user' => '(jina la mtumiaji lilifutwa)',
-'rev-deleted-event' => '(ingizo lilifutwa)',
-'rev-delundel' => 'onyesha/ficha',
-'revisiondelete' => 'Kufuta/kurudisha mapitio',
-'revdelete-nologtype-title' => 'Aina ya kumbukumbu haikutajwa',
-'revdelete-nologid-title' => 'Kumbukumbu batili',
-'revdelete-selected' => "'''{{PLURAL:$2|Pitio lililoteuliwa|Mapitio yaliyoteuliwa}} ya [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Tukio la kumbukumbu lililoteuliwa|Matukio ya kumbukumbu yaliyoteuliwa}}:'''",
-'revdelete-suppress-text' => "Kuficha kunaruhisiwa '''tu''' wakati hizo:
+'rev-deleted-comment' => '(muhtasari ilifutwa)',
+'rev-deleted-user' => '(jina la mtumiaji lilifutwa)',
+'rev-deleted-event' => '(ingizo lilifutwa)',
+'rev-deleted-user-contribs' => '[jina la mtumiaji au anwani wa IP umetolewa - sahihisho lilifichwa kutoka kwa orodha ya michango]',
+'rev-deleted-text-permission' => "Pitio hilo la ukurasa '''lilifutwa'''.
+Maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kumbukumbu ya kufuta].",
+'rev-deleted-text-unhide' => "Pitio hilo la ukurasa '''lilifutwa'''.
+Maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kumbukumbu ya kufuta].
+Kwa sababu u mkabidhi, bado unaweza [$1 kulitazama sahihisho hilo] ukitaka.",
+'rev-suppressed-text-unhide' => "Pitio hilo la ukurasa '''lilifichwa'''.
+Maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kumbukumbu ya kuficha].
+Kwa sababu u mkabidhi, bado unaweza [$1 kulitazama sahihisho hilo] ukitaka.",
+'rev-deleted-text-view' => "Pitio hilo la ukurasa '''lilifutwa'''.
+Kwa sababu u mkabidhi, bado unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kumbukumbu ya kufuta].",
+'rev-suppressed-text-view' => "Pitio hilo la ukurasa '''lilifichwa'''.
+Kwa sababu u mkabidhi, bado unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kumbukumbu ya kuficha].",
+'rev-delundel' => 'onyesha/ficha',
+'rev-showdeleted' => 'onyesha',
+'revisiondelete' => 'Kufuta/kurudisha mapitio',
+'revdelete-nologtype-title' => 'Aina ya kumbukumbu haikutajwa',
+'revdelete-nologid-title' => 'Kumbukumbu batili',
+'revdelete-no-file' => 'Faili ulilotaja halipatikani.',
+'revdelete-show-file-confirm' => 'Ni kweli kwamba unataka kulitazama pitio lililofutwa la faili linaloitwa "<nowiki>$1</nowiki>" la tarehe $2 na saa $3?',
+'revdelete-show-file-submit' => 'Ndiyo',
+'revdelete-selected' => "'''{{PLURAL:$2|Pitio lililoteuliwa|Mapitio yaliyoteuliwa}} ya [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Tukio la kumbukumbu lililoteuliwa|Matukio ya kumbukumbu yaliyoteuliwa}}:'''",
+'revdelete-text' => "'''Mapitio bado yataonekana kwenye ukurasa wa historia na matukio bado yataonekana kwenye kumbukumbu, lakini baadhi ya yaliyomo haitaonekana mbele ya watu wote.'''
+Wakabidhi wengine wa {{SITENAME}} bado wataweza kuliona lile lililofichwa pamoja na kulirudisha kwa kuutumia ukurasa maalum huu huu, isipowekewa vizuio vingine.",
+'revdelete-confirm' => 'Tafadhali uthibitishe kwamba unataka kufanya hivyo, pamoja na kwamba unaelewa matokeo yake, na unafanya hivyo kutokana na [[{{MediaWiki:Policy-url}}|sera yetu]].',
+'revdelete-suppress-text' => "Kuficha kunaruhisiwa '''tu''' wakati hizo:
* Taarifa zinazowezekana kwamba ni za kukashifu
* Taarifa za mtu binafsi zisizofaa
*: ''anwani za nyumbani na namba za simu, namba za vitambulisho, na kadhalika.''",
-'revdelete-legend' => 'Kubana maelezo yanayoonekana',
-'revdelete-hide-text' => 'Ficha maandishi ya pitio',
-'revdelete-hide-name' => 'Ficha tendo na shabaha',
-'revdelete-hide-comment' => 'Ficha muhtasari wa sahihisho',
-'revdelete-hide-user' => 'Ficha jina la mhariri/anwani ya IP ya mhariri',
-'revdelete-hide-restricted' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
-'revdelete-suppress' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
-'revdelete-hide-image' => 'Ficha yaliyomo kwenye faili',
-'revdelete-unsuppress' => 'Uzuio wa kuona mapitio uondolewe, mapitio yanaporudishwa',
-'revdelete-log' => 'Sababu:',
-'revdelete-logentry' => 'alibadilisha uwezo wa kuona maelezo ya mapitio ya ukurasa wa [[$1]]',
-'logdelete-logentry' => 'alibadilisha uwezo wa kuona matukio ya ukurasa wa [[$1]]',
-'revdelete-success' => "'''Kubadilisha uwezo wa kuona pitio ulifaulu.'''",
-'logdelete-success' => "'''Kubadilisha uwezo wa kuona kumbukumbu ulifaulu.'''",
-'revdel-restore' => 'badilisha mwonekano',
-'pagehist' => 'Historia ya ukurasa',
-'deletedhist' => 'Historia iliyofutwa',
-'revdelete-content' => 'maandiko',
-'revdelete-summary' => 'muhtasari wa kuhariri',
-'revdelete-uname' => 'jina la mtumiaji',
-'revdelete-restricted' => 'aliwazuia pia wakabidhi wasiyaone maelezo',
-'revdelete-unrestricted' => 'aliwarudishia wakabidhi uwezo wa kuona maelezo',
-'revdelete-hid' => 'alificha $1',
-'revdelete-unhid' => 'aliacha kuficha $1',
-'revdelete-log-message' => '$1 kwenye {{PLURAL:$2|pitio|mapitio}} $2',
-'logdelete-log-message' => '$1 kwenye {{PLURAL:$2|tukio|matukio}} $2',
+'revdelete-legend' => 'Kubana maelezo yanayoonekana',
+'revdelete-hide-text' => 'Ficha maandishi ya pitio',
+'revdelete-hide-image' => 'Ficha yaliyomo kwenye faili',
+'revdelete-hide-name' => 'Ficha tendo na shabaha',
+'revdelete-hide-comment' => 'Ficha muhtasari wa sahihisho',
+'revdelete-hide-user' => 'Ficha jina la mhariri/anwani ya IP ya mhariri',
+'revdelete-hide-restricted' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
+'revdelete-radio-same' => '(isibadilishwe)',
+'revdelete-radio-set' => 'Ndiyo',
+'revdelete-radio-unset' => 'Siyo',
+'revdelete-suppress' => 'Wakabidhi (vilevile wengine) wasiweze kuona data',
+'revdelete-unsuppress' => 'Uzuio wa kuona mapitio uondolewe, mapitio yanaporudishwa',
+'revdelete-log' => 'Sababu:',
+'revdelete-submit' => '{{PLURAL:$1|Pitio lililochaguliwa lifanyiwe|Mapitio yaliyochaguliwa yafanyiwe}} kazi.',
+'revdelete-logentry' => 'alibadilisha uwezo wa kuona maelezo ya mapitio ya ukurasa wa [[$1]]',
+'logdelete-logentry' => 'alibadilisha uwezo wa kuona matukio ya ukurasa wa [[$1]]',
+'revdelete-success' => "'''Kubadilisha uwezo wa kuona pitio ulifaulu.'''",
+'revdelete-failure' => "'''Kubadilisha uwezo wa kuona pitio hakufaulu:'''
+$1",
+'logdelete-success' => "'''Kubadilisha uwezo wa kuona kumbukumbu ulifaulu.'''",
+'logdelete-failure' => "'''Kubadilisha uwezo wa kuona kumbukumbu ulifaulu:'''
+$1",
+'revdel-restore' => 'badilisha mwonekano',
+'pagehist' => 'Historia ya ukurasa',
+'deletedhist' => 'Historia iliyofutwa',
+'revdelete-content' => 'maandiko',
+'revdelete-summary' => 'muhtasari wa kuhariri',
+'revdelete-uname' => 'jina la mtumiaji',
+'revdelete-restricted' => 'aliwazuia pia wakabidhi wasiyaone maelezo',
+'revdelete-unrestricted' => 'aliwarudishia wakabidhi uwezo wa kuona maelezo',
+'revdelete-hid' => 'alificha $1',
+'revdelete-unhid' => 'aliacha kuficha $1',
+'revdelete-log-message' => '$1 kwenye {{PLURAL:$2|pitio|mapitio}} $2',
+'logdelete-log-message' => '$1 kwenye {{PLURAL:$2|tukio|matukio}} $2',
+'revdelete-hide-current' => 'Hitilafu ya kuficha pitio lililotengenezwa saa $2, tarehe $1: hilo ndilo pitio la sasa hivi.
+Haliwezi kufichwa.',
+'revdelete-reason-dropdown' => '*Sababu za kufuta zinazotokea mara kwa mara
+** Ukiukaji wa hatimiliki
+** Taarifa za mtu binafsi zisizofaa
+** Taarifa zinazowezekana kwamba ni za kukashifu',
+'revdelete-otherreason' => 'Sababu nyingine:',
+'revdelete-reasonotherlist' => 'Sababu nyingine',
+'revdelete-edit-reasonlist' => 'Kuhariri orodha ya sababu za kufuta',
+'revdelete-offender' => 'Mhariri wa pitio:',
# Suppression log
'suppressionlog' => 'Kumbukumbu za kuficha',
@@ -884,14 +972,13 @@ Tazama [[Special:IPBlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizo
'mergelogpagetext' => 'Hapo chini yanaorodheshwa matukio ya hivi karibuni ya kuunganisha historia za kurasa mbili.',
# Diffs
-'history-title' => 'Historia ya mapitio ya "$1"',
-'difference' => '(Tofauti baina ya mapitio)',
-'lineno' => 'Mstari $1:',
-'compareselectedversions' => 'Linganisha mapitio mawili uliyochagua',
-'editundo' => 'tengua',
-'diff-multi' => '(Hatuonyeshi {{PLURAL:$1|pitio moja la katikati|mapitio $1 ya katikati}}.)',
-'diff-i' => "'''kwa italiki'''",
-'diff-b' => "'''koze'''",
+'history-title' => 'Historia ya mapitio ya "$1"',
+'difference' => '(Tofauti baina ya mapitio)',
+'lineno' => 'Mstari $1:',
+'compareselectedversions' => 'Linganisha mapitio mawili uliyochagua',
+'showhideselectedversions' => 'Onyesha/ficha mapitio yaliyoteuliwa',
+'editundo' => 'tengua',
+'diff-multi' => '(Hatuonyeshi {{PLURAL:$1|pitio moja la katikati|mapitio $1 ya katikati}}.)',
# Search results
'searchresults' => 'Matokeo ya utafutaji',
@@ -899,26 +986,25 @@ Tazama [[Special:IPBlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizo
'searchresulttext' => 'Kwa maelezo zaidi kuhusu kutafuta {{SITENAME}}, tazama [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ulitafuta \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kurasa zote zinazoanza "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kurasa zote zinazoungwa na "$1"]])',
'searchsubtitleinvalid' => "Ulitafuta '''$1'''",
-'noexactmatch' => "'''Hakuna ukurasa wenye jina \"\$1\".''' Unaweza [[:\$1|kuanza ukurasa huu]].",
-'noexactmatch-nocreate' => "'''Hakuna ukurasa unaoitwa \"\$1\".'''",
'toomanymatches' => 'Yalipatikana majibu mengi mno, kwa hiyo tafadhali jaribu ulizo mwingine',
'titlematches' => 'Kurasa zinazo majina yenye maneno ya ulizo',
'notitlematches' => 'Jina hili la ukurasa halikupatikana',
'textmatches' => 'Kurasa zinazo maandishi yenye maneno ya ulizo',
'notextmatches' => 'Maandishi yaliyotafutwa hayakupatikana kwenye kurasa zo zote',
-'prevn' => '$1 iliyotangulia',
-'nextn' => '$1 ijayo',
+'prevn' => '{{PLURAL:$1|uliotangulia|$1 zilizotangulia}}',
+'nextn' => '{{PLURAL:$1|ujao|$1 zijazo}}',
'prevn-title' => '{{PLURAL:$1|Tokeo $1 lililotangulia|Matokeo $1 yaliyotangulia}}',
'nextn-title' => '{{PLURAL:$1|Tokeo $1 lijalo|Matokeo $1 yajayo}}',
'shown-title' => '{{PLURAL:$1|Lionyewshwe tokeo|Yaonyeshwe matokeo}} $1 kwa kila ukurasa',
-'viewprevnext' => 'Tazama ($1) ($2) ($3)',
+'viewprevnext' => 'Tazama ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Hitiari za kutafuta',
'searchmenu-exists' => "'''Ukurasa wa \"[[:\$1]]\" upo kwenye wiki hii'''",
'searchmenu-new' => "'''Anzisha ukurasa wa \"[[:\$1]]\" katika wiki hii!'''",
'searchhelp-url' => 'Help:Yaliyomo',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tafuta kurasa kwenye eneo hili la wiki]]',
-'searchprofile-project' => 'Kurasa za mradi',
-'searchprofile-images' => 'Mafaili',
+'searchprofile-articles' => 'Kurasa kwa kusudi ya wiki',
+'searchprofile-project' => 'Kurasa za msaada na za mradi',
+'searchprofile-images' => 'Picha na kadhalika',
'searchprofile-everything' => 'Zote',
'searchprofile-advanced' => 'Hali ya juu',
'searchprofile-articles-tooltip' => 'Tafuta kwenye $1',
@@ -938,11 +1024,12 @@ Tazama [[Special:IPBlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizo
'search-mwsuggest-disabled' => 'bila makendekezo',
'search-relatedarticle' => 'Zingine zinazofanana',
'mwsuggest-disable' => 'Kutoonyesha mapendekezo ya AJAX',
+'searcheverything-enable' => 'Tafuta katika maeneo yote ya wiki',
'searchrelated' => 'zingine zinazofanana',
'searchall' => 'zote',
'showingresults' => "{{PLURAL:$1|Tokeo '''1''' linaonyeshwa|matokeo '''$1''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
'showingresultsnum' => "{{PLURAL:$3|Tokeo '''1''' linaonyeshwa|Matokeo '''$3''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
-'showingresultstotal' => "{{PLURAL:$4|Tokeo '''$1''' kati ya jumla ya '''$3'''|Matokeo '''$1 - $2''' kati ya jumla ya '''$3'''}} yanaorodheshwa chini.",
+'showingresultsheader' => "{{PLURAL:$5|Tokeo '''$1''' kati ya jumla ya '''$3'''|Matokeo '''$1 - $2''' kati ya jumla ya '''$3'''}} kutokana na kuitafuta '''$4'''",
'nonefound' => "'''Zingatia''': Utafutaji wa msingi unatafuta kwenye maeneo machache ya wiki tu.
Ukitaka kutafuta kwenye maeneo yote (pamoja na kurasa za majadiliano, vigezo, nk) andika ''all:'' mwanzoni mwa kisanduku. Ukitaka kutafuta kwenye eneo linaloitwa ''fulani'' andika ''fulani:'' mwanzoni mwa kisanduku.",
'search-nonefound' => 'Hakuna matokeo ya kutafuta ulizio ule.',
@@ -951,96 +1038,150 @@ Ukitaka kutafuta kwenye maeneo yote (pamoja na kurasa za majadiliano, vigezo, nk
'powersearch-ns' => 'Tafuta kwenye maeneo ya wiki yafuatayo:',
'powersearch-redir' => 'Orodhesha kurasa za kuelekeza',
'powersearch-field' => 'Tafuta huu:',
+'powersearch-togglelabel' => 'Chagua:',
+'powersearch-toggleall' => 'Chagua yote',
+'powersearch-togglenone' => 'Usichague',
'search-external' => 'Kutafuta nje',
'searchdisabled' => 'Kutafuta {{SITENAME}} kumesimamishwa.
Unaweza kutafuta kwa kutumia Google punde si punde.
Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wakati.',
+# Quickbar
+'qbsettings' => 'Mwambaa pembe',
+'qbsettings-none' => 'Hakuna',
+'qbsettings-fixedleft' => 'Kushoto tuli',
+'qbsettings-fixedright' => 'Kulia tuli',
+'qbsettings-floatingleft' => 'Kushoto geugeu',
+'qbsettings-floatingright' => 'Kulia geugeu',
+
# Preferences page
-'preferences' => 'Mapendekezo',
-'mypreferences' => 'Mapendekezo yangu',
-'prefs-edits' => 'Idadi ya marekebisho:',
-'prefsnologin' => 'Hujaingia',
-'qbsettings' => 'Mwambaa pembe',
-'qbsettings-none' => 'Hakuna',
-'qbsettings-fixedleft' => 'Kushoto tuli',
-'qbsettings-fixedright' => 'Kulia tuli',
-'qbsettings-floatingleft' => 'Kushoto geugeu',
-'qbsettings-floatingright' => 'Kulia geugeu',
-'changepassword' => 'Badilisha neno la siri',
-'skin' => 'Sura',
-'skin-preview' => 'Hakiki',
-'dateformat' => 'Fomati ya tarehe',
-'datedefault' => 'Chaguo-msingi',
-'datetime' => 'Tarehe na saa',
-'math_unknown_error' => 'hitilafu isiyojulikana',
-'prefs-personal' => 'Kuhusu mtumiaji',
-'prefs-rc' => 'Mabadiliko ya karibuni',
-'prefs-watchlist' => 'Maangalizi',
-'prefs-watchlist-days' => 'Ionyeshwe siku ngapi kwenye orodha ya maangalizi?',
-'prefs-watchlist-days-max' => '(isizidi siku 7)',
-'prefs-watchlist-edits' => 'Upeo ya idadi ya mabadiliko yatakayoonyeshwa kwenye orodha ya maangalizi iliyotanuka:',
-'prefs-watchlist-edits-max' => '(idadi isizidi 1000)',
-'prefs-misc' => 'Mengineyo',
-'prefs-resetpass' => 'Kubadilisha neno la siri',
-'saveprefs' => 'Hifadhi',
-'resetprefs' => 'Utupe mabadiliko yasijahifadhika',
-'restoreprefs' => 'Rudisha mapendekezo ya msingi',
-'textboxsize' => 'Kuhariri',
-'prefs-edit-boxsize' => 'Ukubwa wa dirisha la kuhariri.',
-'rows' => 'Mistari:',
-'columns' => 'Safu:',
-'searchresultshead' => 'Kutafuta',
-'resultsperpage' => 'Matokeo yanayoorodheshwa katika ukurasa mmoja:',
-'contextlines' => 'Mistari kwa kila tokeo:',
-'contextchars' => 'Herufi za muktadha kwa kila mstari:',
-'stub-threshold' => 'Kiwango cha juu cha kuonyesha kiungo kama <a href="#" class="stub">kiungo kinachoelekea mbegu</a> (baiti):',
-'recentchangesdays' => 'Ionyeshwe siku ngapi kwenye orodha ya mabadiliko ya karibuni?',
-'recentchangesdays-max' => '(siku {{PLURAL:$1|zisizidi}} $1)',
-'savedprefs' => 'Mapendekezo yako yamehifadhiwa.',
-'timezonelegend' => 'Ukanda saa:',
-'localtime' => 'Saa ya kwetu:',
-'timezoneselect' => 'Ukanda saa:',
-'timezoneuseserverdefault' => 'Tumia saa ya seva',
-'timezoneuseoffset' => 'Nyingine (weka tofauti ya saa)',
-'timezoneoffset' => 'Tofauti ya saa¹:',
-'servertime' => 'Saa ya seva:',
-'guesstimezone' => 'kivinjari kiweke saa',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Marekani',
-'timezoneregion-antarctica' => 'Antaktika',
-'timezoneregion-arctic' => 'Artiki',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Bahari ya Atlantiki',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Ulaya',
-'timezoneregion-indian' => 'Bahari ya Hindi',
-'timezoneregion-pacific' => 'Bahari ya Pasifiki',
-'allowemail' => 'Wezesha barua pepe toka kwa watumiaji wengine',
-'prefs-searchoptions' => 'Hitiari za kutafuta',
-'prefs-namespaces' => 'Maeneo ya wiki',
-'default' => 'chaguo-msingi',
-'files' => 'Mafaili',
-'prefs-custom-css' => 'CSS niliyotunga mwenyewe',
-'prefs-custom-js' => 'JS niliyotunga mwenyewe',
+'preferences' => 'Mapendekezo',
+'mypreferences' => 'Mapendekezo yangu',
+'prefs-edits' => 'Idadi ya marekebisho:',
+'prefsnologin' => 'Hujaingia',
+'prefsnologintext' => 'Inabidi <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} uingie akaunti yako]</span> ili ubadilishe mapendekezo yako.',
+'changepassword' => 'Badilisha neno la siri',
+'prefs-skin' => 'Sura',
+'skin-preview' => 'Hakiki',
+'prefs-math' => 'Hisabati',
+'datedefault' => 'Chaguo-msingi',
+'prefs-datetime' => 'Tarehe na saa',
+'prefs-personal' => 'Kuhusu mtumiaji',
+'prefs-rc' => 'Mabadiliko ya karibuni',
+'prefs-watchlist' => 'Maangalizi',
+'prefs-watchlist-days' => 'Ionyeshwe siku ngapi kwenye orodha ya maangalizi?',
+'prefs-watchlist-days-max' => 'Isizidi siku 7',
+'prefs-watchlist-edits' => 'Upeo ya idadi ya mabadiliko yatakayoonyeshwa kwenye orodha ya maangalizi iliyotanuka:',
+'prefs-watchlist-edits-max' => 'Idadi isiyopitishwa: 1000',
+'prefs-watchlist-token' => 'Ufunguo wa orodha ya maangalizi:',
+'prefs-misc' => 'Mengineyo',
+'prefs-resetpass' => 'Kubadilisha neno la siri',
+'prefs-email' => 'Hitiari za barua pepe',
+'prefs-rendering' => 'Umbo',
+'saveprefs' => 'Hifadhi',
+'resetprefs' => 'Utupe mabadiliko yasijahifadhika',
+'restoreprefs' => 'Rudisha mapendekezo ya msingi',
+'prefs-editing' => 'Kuhariri',
+'prefs-edit-boxsize' => 'Ukubwa wa dirisha la kuhariri.',
+'rows' => 'Mistari:',
+'columns' => 'Safu:',
+'searchresultshead' => 'Kutafuta',
+'resultsperpage' => 'Matokeo yanayoorodheshwa katika ukurasa mmoja:',
+'contextlines' => 'Mistari kwa kila tokeo:',
+'contextchars' => 'Herufi za muktadha kwa kila mstari:',
+'stub-threshold' => 'Kiwango cha juu cha kuonyesha kiungo kama <a href="#" class="stub">kiungo kinachoelekea mbegu</a> (baiti):',
+'recentchangesdays' => 'Ionyeshwe siku ngapi kwenye orodha ya mabadiliko ya karibuni?',
+'recentchangesdays-max' => 'Isizidi {{PLURAL:$1|siku}} $1',
+'recentchangescount' => 'Idadi ya masahihisho yatakayoonyeshwa kwa kawaida:',
+'prefs-help-recentchangescount' => 'Kwenye kurasa za mabadiliko ya karibuni, za historia ya ukurasa, na za kumbukumbu.',
+'prefs-help-watchlist-token' => 'Ukiandika ufunguo wa siri kwenye kisanduku hiki, programu itaanzisha tawanyiko la RSS kwa ajili ya maangalizi yako.
+Mtu wowote anayejua ufunguo wa siri huu ataweza kusoma orodha yako ya maangalizi, kwa hiyo chagua ufunguo salama.
+Hapo kuna ufunguo uliotolewa na programu kwa kubahatisha, ambao unaweza kuutumia: $1',
+'savedprefs' => 'Mapendekezo yako yamehifadhiwa.',
+'timezonelegend' => 'Ukanda saa:',
+'localtime' => 'Saa ya kwetu:',
+'timezoneuseserverdefault' => 'Tumia saa ya seva',
+'timezoneuseoffset' => 'Nyingine (weka tofauti ya saa)',
+'timezoneoffset' => 'Tofauti ya saa¹:',
+'servertime' => 'Saa ya seva:',
+'guesstimezone' => 'kivinjari kiweke saa',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Marekani',
+'timezoneregion-antarctica' => 'Antaktika',
+'timezoneregion-arctic' => 'Artiki',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Bahari ya Atlantiki',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Ulaya',
+'timezoneregion-indian' => 'Bahari ya Hindi',
+'timezoneregion-pacific' => 'Bahari ya Pasifiki',
+'allowemail' => 'Wezesha barua pepe toka kwa watumiaji wengine',
+'prefs-searchoptions' => 'Hitiari za kutafuta',
+'prefs-namespaces' => 'Maeneo ya wiki',
+'defaultns' => 'La sivyo tafuta kwenye maeneo haya:',
+'default' => 'chaguo-msingi',
+'prefs-files' => 'Mafaili',
+'prefs-custom-css' => 'CSS niliyotunga mwenyewe',
+'prefs-custom-js' => 'JS niliyotunga mwenyewe',
+'prefs-reset-intro' => 'Unaweza kutumia ukurasa huu ili kurudisha mapendekezo yako kwenye yale ya msingi ya tovuti.
+Hutaweza kulibatilisha tendo hili baadaye.',
+'prefs-emailconfirm-label' => 'Kuhakikisha barua pepe:',
+'prefs-textboxsize' => 'Ukubwa wa sanduku la kuhariri',
+'youremail' => 'Barua pepe yako:',
+'username' => 'Jina la mtumiaji:',
+'uid' => 'Namba ya mtumiaji:',
+'prefs-memberingroups' => 'Mwanachama wa {{PLURAL:$1|kundi la|makundi ya}}:',
+'prefs-registration' => 'Wakati wa kusajili:',
+'yourrealname' => 'Jina lako halisi:',
+'yourlanguage' => 'Lugha:',
+'yourvariant' => 'Variant:',
+'yournick' => 'Sahihi:',
+'prefs-help-signature' => 'Unapoandika kwenye kurasa za majadiliano tafadhali utie sahihi kwa kuandika "<nowiki>~~~~</nowiki>"; itaonekana jina lako pamoja na saa na tarehe ya kuhifadhi.',
+'badsig' => 'Umeweka sahihi batili.
+Angalia mabano ya HTML.',
+'badsiglength' => 'Sahihi uliyoweka ni ndefu mno.
+Haiwezi kuzidi {{PLURAL:$1|tarakimu|tarakimu}} $1.',
+'yourgender' => 'Jinsi:',
+'gender-unknown' => 'Haitajwi',
+'gender-male' => 'Mume',
+'gender-female' => 'Mke',
+'prefs-help-gender' => 'Si lazima: inatumika kwenye lugha zinazokuwa na mtindo wa kuitana tofauti kwa ajili ya wanaume na wanawake, ili bidhaa pepe itumie mtindo sahihi.
+Taarifa hii itakuwa wazi.',
+'email' => 'Barua pepe',
+'prefs-help-realname' => 'Jina la kweli si lazima. Ukichagua kutaja jina lako hapa, litatumiwa kuonyesha kwamba ndiyo ulifanya kazi unayochangia.',
+'prefs-help-email' => 'Barua-pepe sio lazima, lakini inawezesha kupokea neno jipya la siri kwa kupitia barua-pepe yako endapo utakuwa umelisahau.
+Pia unaweza kuchagua kuwawezesha watumiaji wengine wawasiliane nawe kwa kupitia ukurasa wako wa mtumiaji au ule wa majadiliano bila ya kuonyesha jina la akaunti yako.',
+'prefs-help-email-required' => 'Barua pepe inahitajika.',
+'prefs-info' => 'Maelezo ya kimsingi',
+'prefs-i18n' => 'Lugha',
+'prefs-signature' => 'Sahihi',
+'prefs-dateformat' => 'Jinsi inayoandikwa tarehe',
+'prefs-timeoffset' => 'Kuweka saa tofauti na saa ya seva',
+'prefs-advancedediting' => 'Hitiari za hali ya juu',
+'prefs-advancedrc' => 'Hitiari za hali ya juu',
+'prefs-advancedrendering' => 'Hitiari za hali ya juu',
+'prefs-advancedsearchoptions' => 'Hitiari za hali ya juu',
+'prefs-advancedwatchlist' => 'Hitiari za hali ya juu',
+'prefs-display' => 'Hitiari za kutandaza',
# User rights
-'userrights' => 'Usimamizi wa haki za mtumiaji', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Kusimamia kundi za watumiaji',
-'userrights-user-editname' => 'Andika jina la mtumiaji:',
-'editusergroup' => 'Kuhariri vikundi vya watumiaji',
-'editinguser' => "Kubadilisha wezo za mtumiaji '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Kuhariri kundi za watumiaji',
-'saveusergroups' => 'Kuhifadhi kundi za watumiaji',
-'userrights-groupsmember' => 'Mwanachama wa:',
-'userrights-groups-help' => 'Unaweza kubadilisha kundi mtumiaji huyu alizokuwa mwanachama zao:
+'userrights' => 'Usimamizi wa haki za mtumiaji',
+'userrights-lookup-user' => 'Kusimamia kundi za watumiaji',
+'userrights-user-editname' => 'Andika jina la mtumiaji:',
+'editusergroup' => 'Kuhariri vikundi vya watumiaji',
+'editinguser' => "Kubadilisha wezo za mtumiaji '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Kuhariri kundi za watumiaji',
+'saveusergroups' => 'Kuhifadhi kundi za watumiaji',
+'userrights-groupsmember' => 'Mwanachama wa:',
+'userrights-groupsmember-auto' => 'Mwanachama moja kwa moja wa:',
+'userrights-groups-help' => 'Unaweza kubadilisha kundi mtumiaji huyu alizokuwa mwanachama zao:
* Mtumiaji ni mwanachama wa kundi fulani kama kisanduku chake kina alama.
* Mtumiaji si mwanachama wa kundi fulani kama kisanduku chake hakina alama.
* Alama ya * ina maana ya kwamba ukiongeza kundi fulani, hutaweza kuitoa tena, au ukitoa kundi fulani, hutaweza kuiongeza tena.',
-'userrights-reason' => 'Sababu:',
-'userrights-nodatabase' => 'Hakuna hifadhidata inayoitwa $1 au haimo katiko jumuia hii ya wiki.',
-'userrights-changeable-col' => 'Makundi unayoweza kuyabadilisha',
-'userrights-unchangeable-col' => 'Makundi usiyoweza kuyabadilisha',
+'userrights-reason' => 'Sababu:',
+'userrights-nodatabase' => 'Hakuna hifadhidata inayoitwa $1 au haimo katiko jumuia hii ya wiki.',
+'userrights-changeable-col' => 'Makundi unayoweza kuyabadilisha',
+'userrights-unchangeable-col' => 'Makundi usiyoweza kuyabadilisha',
# Groups
'group' => 'Kundi:',
@@ -1075,6 +1216,7 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'right-bigdelete' => 'Kufuta kurasa zenye mabadiliko mengi',
'right-deleterevision' => 'Kufuta na kurudisha mapitio fulani ya kurasa',
'right-deletedhistory' => 'Kutazama kumbukumbu za historia zilizofutwa, bila kuona maandiko yaliyomo',
+'right-deletedtext' => 'Kutazama maandishi yaliyofutwa na mabadiliko kati ya mapitio yaliyofutwa',
'right-browsearchive' => 'Kutafuta kwenye kurasa zilizofutwa',
'right-undelete' => 'Kurudisha ukurasa uliofutwa',
'right-suppressrevision' => 'Kuangalia na kurudisha mapitio yaliyofichwa kwa wakabidhi',
@@ -1086,6 +1228,7 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'right-userrights' => 'Kubadilisha wezo zote za watumiaji',
'right-userrights-interwiki' => 'Kuhariri wezo za watumiaji kwenye wiki zingine',
'right-siteadmin' => 'Kufunga na kufungua hifadhidata',
+'right-sendemail' => 'Kutuma barua-pepe kwa watumiaji wengine',
# User rights log
'rightslog' => 'Kumbukumbu za vyeo vya watumiaji',
@@ -1126,6 +1269,13 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'recentchanges-legend' => "Machaguo ya 'mabadaliko ya karibuni'",
'recentchangestext' => 'Orodha ya mabadilisho yaliyofanywa katika {{SITENAME}} siku zilizopita.',
'recentchanges-feed-description' => 'Tumia tawanyiko hili kufuatilia mabadiliko yote ya hivi karibuni katika Wiki.',
+'recentchanges-label-legend' => 'Hekaya: $1.',
+'recentchanges-legend-newpage' => '$1 - ukurasa mpya',
+'recentchanges-label-newpage' => 'Ukurasa mpya ulianzishwa hapo',
+'recentchanges-legend-minor' => '$1 - badiliko dogo',
+'recentchanges-label-minor' => 'Hili ni badiliko dogo',
+'recentchanges-legend-bot' => '$1 - sahihisho la bot',
+'recentchanges-label-bot' => 'Sahihisho hili lilitekelezwa na bot',
'rcnote' => "{{PLURAL:$1|Linalofuata ni badiliko '''1'''|Yanayofuata ni mabadiliko '''$1''' ya mwisho}} kutoka katika {{PLURAL:$2|siku iliyopita|siku '''$2''' zilizopita}}, hadi saa $5, tarehe $4.",
'rcnotefrom' => "Hapo chini yaonekana mabadiliko tangu '''$2''' (tunaonyesha hadi '''$1''').",
'rclistfrom' => 'Onyesha mabadiliko mapya kuanzia $1',
@@ -1152,6 +1302,8 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
# Recent changes linked
'recentchangeslinked' => 'Mabadiliko husika',
+'recentchangeslinked-feed' => 'Mabadiliko husika',
+'recentchangeslinked-toolbox' => 'Mabadiliko husika',
'recentchangeslinked-title' => 'Mabadiliko kuhusiana na "$1"',
'recentchangeslinked-noresult' => 'Hakuna mabadiliko kwenye kurasa zilizounganishwa wakati wa muda huo.',
'recentchangeslinked-summary' => "Ukurasa maalum huu unaorodhesha mabadiliko ya hivi karibuni katika kurasa zinazoungwa (au katika jamii fulani). Kurasa katika [[Special:Watchlist|maangalizi yako]] ni za '''koze'''.",
@@ -1159,63 +1311,78 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'recentchangeslinked-to' => 'Onyesha mabadiliko yaliyotokea kwenye kurasa zile zinazoungwa kufikia ukurasa uliotajwa',
# Upload
-'upload' => 'Pakia faili',
-'uploadbtn' => 'Pakia faili',
-'reuploaddesc' => 'Kubatilisha kupakia na kurudi kwenye fomu ya kupakia',
-'uploadnologin' => 'Hujaingia',
-'uploadnologintext' => 'Lazima [[Special:UserLogin|uingie akaunti yako]] ile upakie mafaili.',
-'uploaderror' => 'Hitilafu ya kupia',
-'uploadtext' => "Tumia fomu hapo chini kwa kupakizia mafaili.
+'upload' => 'Pakia faili',
+'uploadbtn' => 'Pakia faili',
+'reuploaddesc' => 'Kubatilisha kupakia na kurudi kwenye fomu ya kupakia',
+'upload-tryagain' => 'Wasilisha maelezo ya faili lililobadilishwa',
+'uploadnologin' => 'Hujaingia',
+'uploadnologintext' => 'Lazima [[Special:UserLogin|uingie akaunti yako]] ile upakie mafaili.',
+'uploaderror' => 'Hitilafu ya kupia',
+'uploadtext' => "Tumia fomu hapo chini kwa kupakizia mafaili.
Kwa kutazama au kutafuta faili zilizopakiwa awali, tafadhali nenda kwenye [[Special:FileList|orodha ya mafaili yaliyopakiwa]]. Kwa zile faili ambazo zishapitiwa, basi angalia [[Special:Log/upload|kumbukumbu ya mafaili]]. Kwa mafaili yaliyofutwa, tafadhali [[Special:Log/delete|tazama hapa]].
Kwa kutumia faili katika makala, tumia moja kati ya viungo vifuatavyo:
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Picha.jpg]]</nowiki></tt>''' kwa kutumia toleo zima la faili
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Picha.png|200px|thumb|left|maelezo ya picha]]</nowiki></tt>''' tumia pixel 200 kwa ukubwa mzuri na sehemu ya 'maelezo ya picha' ikiwa kama maelezo husika na picha iliyopo
* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' kwa kuunga moja kwa moja bila kuonyesga faili",
-'upload-permitted' => 'Aina ya mafaili yanayoruhusiwa: $1.',
-'upload-preferred' => 'Aina za mafaili yaliyopendelewa: $1.',
-'upload-prohibited' => 'Aina za mafaili yanayokataliwa: $1.',
-'uploadlog' => 'kumbukumbu za kupakia',
-'uploadlogpage' => 'Kumbukumbu ya upakiaji',
-'uploadlogpagetext' => 'Hapo chini kuna orodha wa mafaili yaliyopakizwa hivi karibuni.
+'upload-permitted' => 'Aina ya mafaili yanayoruhusiwa: $1.',
+'upload-preferred' => 'Aina za mafaili yaliyopendelewa: $1.',
+'upload-prohibited' => 'Aina za mafaili yanayokataliwa: $1.',
+'uploadlog' => 'kumbukumbu za kupakia',
+'uploadlogpage' => 'Kumbukumbu ya upakiaji',
+'uploadlogpagetext' => 'Hapo chini kuna orodha wa mafaili yaliyopakizwa hivi karibuni.
Tazama [[Special:NewFiles|mkusanyiko wa mafaili mapya]] kuona picha zenyewe.',
-'filename' => 'Jina la faili',
-'filedesc' => 'Muhtasari',
-'fileuploadsummary' => 'Muhtasari:',
-'filereuploadsummary' => 'Mabadiliko ya faili:',
-'filestatus' => 'Hali ya hatimiliki:',
-'filesource' => 'Chanzo:',
-'uploadedfiles' => 'Mafaili yaliyopakiwa:',
-'ignorewarning' => 'Hifadhi bila kujali maonyo yoyote.',
-'ignorewarnings' => 'Usijali ilani zozote',
-'minlength1' => 'Majina ya mafaili yanatakiwa kuwa na herufi moja au zaidi.',
-'illegalfilename' => 'Jina la faili la "$1" lina herufi zisizoruhusiwa katika majina ya kurasa.
+'filename' => 'Jina la faili',
+'filedesc' => 'Muhtasari',
+'fileuploadsummary' => 'Muhtasari:',
+'filereuploadsummary' => 'Mabadiliko ya faili:',
+'filestatus' => 'Hali ya hatimiliki:',
+'filesource' => 'Chanzo:',
+'uploadedfiles' => 'Mafaili yaliyopakiwa:',
+'ignorewarning' => 'Hifadhi bila kujali maonyo yoyote.',
+'ignorewarnings' => 'Usijali ilani zozote',
+'minlength1' => 'Majina ya mafaili yanatakiwa kuwa na herufi moja au zaidi.',
+'illegalfilename' => 'Jina la faili la "$1" lina herufi zisizoruhusiwa katika majina ya kurasa.
Tafadhali uweke jina jipya kwenye faili, halafu jaribu kulipakia upya.',
-'badfilename' => 'Jina la faili limebadilishwa kuwa "$1".',
-'large-file' => 'Tunashauri mafaili yasizidi $1;
+'badfilename' => 'Jina la faili limebadilishwa kuwa "$1".',
+'filetype-mime-mismatch' => 'Tawi (extension) la faili halingani na aina ya MIME.',
+'large-file' => 'Tunashauri mafaili yasizidi $1;
faili hili lina $2.',
-'successfulupload' => 'Upakiaji ulifaulu',
-'uploadwarning' => 'Ilani kuhusu kupakia',
-'savefile' => 'Hifadhi faili',
-'uploadedimage' => 'ameipakia "[[$1]]"',
-'overwroteimage' => 'alipakia toleo jipya la "[[$1]]"',
-'uploadvirus' => 'Faili lina kirusi!
+'successfulupload' => 'Upakiaji ulifaulu',
+'uploadwarning' => 'Ilani kuhusu kupakia',
+'savefile' => 'Hifadhi faili',
+'uploadedimage' => 'ameipakia "[[$1]]"',
+'overwroteimage' => 'alipakia toleo jipya la "[[$1]]"',
+'uploadvirus' => 'Faili lina kirusi!
Maelezo mengine: $1',
-'sourcefilename' => 'Jina la faili la chanzo:',
-'destfilename' => 'Jina la faili la mwishilio:',
-'upload-maxfilesize' => 'Ukubwa wa faili lisizidi: $1',
-'watchthisupload' => 'Kufuatilia faili hili',
-'filewasdeleted' => 'Faili lenye jina hili limeshapakiwa halafu limefutwa.
+'upload-source' => 'Faili la chanzo',
+'sourcefilename' => 'Jina la faili la chanzo:',
+'sourceurl' => 'URL ya chanzo:',
+'destfilename' => 'Jina la faili la mwishilio:',
+'upload-maxfilesize' => 'Ukubwa wa faili lisizidi: $1',
+'upload-description' => 'Elezo la faili',
+'upload-options' => 'Machaguo ya kupakia',
+'watchthisupload' => 'Kufuatilia faili hili',
+'filewasdeleted' => 'Faili lenye jina hili limeshapakiwa halafu limefutwa.
Unapaswa kuangalia $1 kabla hujapakia tena.',
-'upload-wasdeleted' => "'''Ilani: Unapakia upya faili lililofutwa tayari.'''
+'upload-wasdeleted' => "'''Ilani: Unapakia upya faili lililofutwa tayari.'''
Fikiria kama inafaa kuendelea kupakia faili hili.
Kumbukumbu ya kufuta faili hili inapatikana hapa kukusaidia:",
-'filename-bad-prefix' => "Jina la faili unalolipakia huanza na '''\"\$1\"''', ambalo ni jina lisilo na maana yanayoeleweka kirahisi, ya aina inayotolewa huwa na kamera dijiti.
+'filename-bad-prefix' => "Jina la faili unalolipakia huanza na '''\"\$1\"''', ambalo ni jina lisilo na maana yanayoeleweka kirahisi, ya aina inayotolewa huwa na kamera dijiti.
Tafadhali chagua jina linaloeleweka kirahisi kwa ajili ya faili lako.",
-'upload-file-error' => 'Hitilafu ya ndani',
-'upload-misc-error' => 'Hitilafu ya kupakia isiyojulikana',
+'upload-file-error' => 'Hitilafu ya ndani',
+'upload-misc-error' => 'Hitilafu ya kupakia isiyojulikana',
+'upload-unknown-size' => 'Ukubwa haujulikani',
+'upload-http-error' => 'Imetokea hitilafu ya HTTP: $1',
+
+# img_auth script messages
+'img-auth-nofile' => 'Hakuna faili la "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL batili: $1',
+'http-timed-out' => 'Ombi la HTTP muda umepita.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'KISARA (URL) haikupatikana',
@@ -1225,6 +1392,7 @@ Tafadhali uhakikishe kwamba tovuti inafanya kazi, subiri kidogo halafu jaribu te
Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'license' => 'Hatimiliki:',
+'license-header' => 'Hatimiliki',
'nolicense' => 'Haikuchaguliwa',
'license-nopreview' => '(Hakikisho hakipatikani)',
'upload_source_file' => '(faili kwenye tarakilishi yako)',
@@ -1240,6 +1408,7 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'listfiles_count' => 'Matoleo',
# File description page
+'file-anchor-link' => 'Faili',
'filehist' => 'Historia ya faili',
'filehist-help' => 'Bonyeza tarehe/saa kuona faili kama ilivyoonekana wakati huo.',
'filehist-deleteall' => 'futa zote',
@@ -1248,22 +1417,20 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'filehist-current' => 'sasa hivi',
'filehist-datetime' => 'Tarehe/Saa',
'filehist-thumb' => 'Picha ndogo',
+'filehist-thumbtext' => 'Picha ndogo ya toleo la $1',
'filehist-nothumb' => 'Hakuna picha ndogo',
'filehist-user' => 'Mtumiaji',
'filehist-dimensions' => 'Vipimo',
'filehist-filesize' => 'Ukubwa wa faili',
'filehist-comment' => 'Maelezo',
+'filehist-missing' => 'Faili halipo',
'imagelinks' => 'Viungo vya mafaili',
'linkstoimage' => '{{PLURAL:$1|Ukurasa huu umeunganishwa|Kurasa hizi $1 zimeunganishwa}} na faili hili:',
'nolinkstoimage' => 'Hakuna kurasa zozote zilizounganishwa na faili hii.',
-'sharedupload' => 'Faili hili linatoka $1 na linaweza kushirikiwa na miradi mingine.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Tafadhali tazama $1 kusoma maelezo mengine.',
-'shareduploadwiki-desc' => 'Maelezo yanayoonyeshwa chini yanatoka $1 yaliyopo kwenye wiki ya kutunza mafaili kwa matumizi ya wote.',
-'shareduploadwiki-linktext' => 'ukurasa wa maelezo ya faili',
-'noimage' => 'Hakuna faili yenye jina hili, $1 kama unayo.',
-'noimage-linktext' => 'pakia faili',
+'sharedupload' => 'Faili hili linatoka $1 na linaweza kushirikiwa na miradi mingine.',
+'filepage-nofile' => 'Hakuna faili yenye jina hili.',
'uploadnewversion-linktext' => 'Pakia toleo jipya la faili hii',
-'shared-repo-from' => 'kutoka kwa $1', # $1 is the repository name
+'shared-repo-from' => 'kutoka kwa $1',
# File reversion
'filerevert' => 'Rejesha $1',
@@ -1288,6 +1455,7 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
** Kosa la hatimiliki
** Faili la nakili',
'filedelete-edit-reasonlist' => 'Kuhariri orodha ya sababu za kufuta',
+'filedelete-maintenance' => 'Tovuti inarekebishwa. Kwa muda huo kufuta na kurudisha mafaili haiwezikani.',
# MIME search
'mimesearch' => 'Utafutaji wa MIME',
@@ -1305,7 +1473,8 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'unusedtemplateswlh' => 'viungo vingine',
# Random page
-'randompage' => 'Ukurasa wa bahati',
+'randompage' => 'Ukurasa wa bahati',
+'randompage-nopages' => 'Hakuna kurasa katika {{PLURAL:$2|eneo la wiki lifuatalo|maeneo ya wiki yafuatayo}}: $1.',
# Random redirect
'randomredirect' => 'Elekezo la bahati',
@@ -1316,6 +1485,7 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'statistics-header-edits' => 'Takwimu za kuhariri',
'statistics-header-views' => 'Onyesha takwimu',
'statistics-header-users' => 'Takwimu za watumiaji',
+'statistics-header-hooks' => 'Takwimu zingine',
'statistics-articles' => 'Kurasa zilizopo',
'statistics-pages' => 'Kurasa',
'statistics-pages-desc' => 'Kurasa zote za katika wiki, zikiwemo kurasa za majadiliano, elekezo, n.k.',
@@ -1334,8 +1504,9 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
'doubleredirects' => 'Maelekezo mawilimawili',
-'brokenredirects' => 'Maelekezo yenye hitilafu',
-'brokenredirects-edit' => '(hariri)',
+'brokenredirects' => 'Maelekezo yenye hitilafu',
+'brokenredirects-edit' => 'hariri',
+'brokenredirects-delete' => 'futa',
'withoutinterwiki' => 'Kurasa bila viungo kwenye lugha zingine',
'withoutinterwiki-summary' => 'Kurasa zifuatazo hazijaunganishwa na kurasa za matoleo ya lugha nyingine.',
@@ -1426,13 +1597,17 @@ Inaweza kuwa na herufi isiyoweza kutumiwa ndani ya majina ya kurasa.',
# Special:Categories
'categories' => 'Jamii',
+'categoriespagetext' => 'Jamii {{PLURAL:$1|inayofuata ina|zinazofuata zina}} kurasa au mafaili ya picha au sauti.
+[[Special:UnusedCategories|Jamii zisizotumiwa]] hazitandazwi hapa.
+Tazama pia [[Special:WantedCategories|jamii zinazohitajika]].',
'categoriesfrom' => 'Tandaza jamii kuanzia na:',
'special-categories-sort-count' => 'panga kwa idadi',
'special-categories-sort-abc' => 'panga kwa herufi',
# Special:DeletedContributions
-'deletedcontributions' => 'Michango ya mtumiaji aliyefutwa',
-'deletedcontributions-title' => 'Michango ya mtumiaji aliyefutwa',
+'deletedcontributions' => 'Michango ya mtumiaji aliyefutwa',
+'deletedcontributions-title' => 'Michango ya mtumiaji aliyefutwa',
+'sp-deletedcontributions-contribs' => 'michango',
# Special:LinkSearch
'linksearch' => 'Viungo vya nje',
@@ -1443,6 +1618,16 @@ Inaweza kuwa na herufi isiyoweza kutumiwa ndani ya majina ya kurasa.',
'listusersfrom' => 'Onyesha watumiaji kuanzia:',
'listusers-submit' => 'Onyesha',
'listusers-noresult' => 'Mtumiaji hakupatikana.',
+'listusers-blocked' => '(imezuiwa)',
+
+# Special:ActiveUsers
+'activeusers' => 'Orodha ya watumiaji hai',
+'activeusers-intro' => 'Hii ni orodha ya watumiaji walioshughulika jambo fulani ndani ya siku $1 {{PLURAL:$1|iliyopita|zilizopita}}.',
+'activeusers-count' => '{{PLURAL:$1|haririo|maharirio}} $1 katika siku $3 {{PLURAL:$3|iliyopita|zilizopita}}',
+'activeusers-from' => 'Onyesha watumiaji kuanzia:',
+'activeusers-hidebots' => 'Ficha boti',
+'activeusers-hidesysops' => 'Ficha wakabidhi',
+'activeusers-noresult' => 'Watumiaji hawakupatikana.',
# Special:Log/newusers
'newuserlogpage' => 'Kumbukumbu za kuanzisha akaunti za watumiaji',
@@ -1453,17 +1638,23 @@ Inaweza kuwa na herufi isiyoweza kutumiwa ndani ya majina ya kurasa.',
'newuserlog-autocreate-entry' => 'Akaunti imejifungua yenyewe',
# Special:ListGroupRights
-'listgrouprights' => 'Wezo za kundi za watumiaji',
-'listgrouprights-summary' => 'Inafuata orodha ya kundi za watumiaji wa wiki hii, pamoja na maelezo ya wezo zao za kushughulika mambo.
+'listgrouprights' => 'Wezo za kundi za watumiaji',
+'listgrouprights-summary' => 'Inafuata orodha ya kundi za watumiaji wa wiki hii, pamoja na maelezo ya wezo zao za kushughulika mambo.
Labda patakuwa na [[{{MediaWiki:Listgrouprights-helppage}}|maelezo mengine]] kuhusu wezo zingine.',
-'listgrouprights-group' => 'Kundi',
-'listgrouprights-rights' => 'Wezo',
-'listgrouprights-helppage' => 'Help:Uwezo wa makundi',
-'listgrouprights-members' => '(orodha ya wanachama)',
-'listgrouprights-addgroup' => 'Kuongeza {{PLURAL:$2|kundi|makundi}}: $1',
-'listgrouprights-removegroup' => 'Kuondoa {{PLURAL:$2|kundi|makundi}}: $1',
-'listgrouprights-addgroup-all' => 'Kuongeza makundi yote',
-'listgrouprights-removegroup-all' => 'Kuondoa makundi yote',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Uwezo uliopewa</span>
+* <span class="listgrouprights-revoked">Uwezo uliotolewa</span>',
+'listgrouprights-group' => 'Kundi',
+'listgrouprights-rights' => 'Wezo',
+'listgrouprights-helppage' => 'Help:Uwezo wa makundi',
+'listgrouprights-members' => '(orodha ya wanachama)',
+'listgrouprights-addgroup' => 'Kuongeza {{PLURAL:$2|kundi|makundi}}: $1',
+'listgrouprights-removegroup' => 'Kuondoa {{PLURAL:$2|kundi|makundi}}: $1',
+'listgrouprights-addgroup-all' => 'Kuongeza makundi yote',
+'listgrouprights-removegroup-all' => 'Kuondoa makundi yote',
+'listgrouprights-addgroup-self' => 'Kuongeza {{PLURAL:$2|kundi|makundi}} katika akaunti ya binafsi: $1',
+'listgrouprights-removegroup-self' => 'Kuondoa {{PLURAL:$2|kundi|makundi}} kutoka katika akaunti ya binafsi: $1',
+'listgrouprights-addgroup-self-all' => 'Kuongeza makundi yote katika akaunti ya binafsi',
+'listgrouprights-removegroup-self-all' => 'Kuondoa makundi yote kutoka akaunti ya binafsi',
# E-mail user
'mailnologin' => 'Hakuna anwani wa kutuma',
@@ -1526,6 +1717,33 @@ Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuat
'changed' => 'alibadilisha',
'created' => 'alianzisha',
'enotif_subject' => '$PAGEEDITOR $CHANGEDORCREATED ukurasa wa $PAGETITLE kwenye {{SITENAME}}',
+'enotif_body' => 'Mpendwa $WATCHINGUSERNAME,
+
+
+$PAGEEDITOR $CHANGEDORCREATED ukurasa wa $PAGETITLE kwenye {{SITENAME}} saa $PAGEEDITDATE. Tazama $PAGETITLE_URL kuona ukurasa ulivyo sasa hivi.
+
+$NEWPAGE
+
+Muhtasari wa mhariri: $PAGESUMMARY $PAGEMINOREDIT
+
+Uwasiliane na mhariri kwa njia hizi:
+barua pepe: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Hutapata taarifa za mabadiliko mengine yatakayotokea kwenye ukurasa huu hadi utakapotazama ukurasa.
+Au unaweza kuweka upya maombi ya kupewa taarifa kwa ajili ya kurasa zote zilizopo kwenye orodha yako ya maangalizi.
+
+ Kutoka kwa {{SITENAME}}
+
+--
+Ukitaka kubadilisha mapendekezo yako yanayohusika orodha ya maangalizi yako, nenda
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Ukitaka kutoa ukurasa huu kwenye orodha ya maangalizi yako, nenda
+$UNWATCHURL
+
+Kutoa maoni yako au kupata msaada mwingine:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Futa ukurasa',
@@ -1533,7 +1751,7 @@ Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuat
'exblank' => 'ukurasa ulikuwa tupu',
'delete-confirm' => 'Futa "$1"',
'delete-legend' => 'Futa',
-'historywarning' => 'Ilani: Ukurasa unaotaka kufuta una historia yake:',
+'historywarning' => "'''Ilani:''' Ukurasa unaotaka kufuta una historia ya {{PLURAL:$1|pitio|mapitio}} $1 hivi:",
'confirmdeletetext' => 'Wewe unategemea kufuta ukurasa pamoja na historia yake yote.
Tafadhali hakikisha kwamba unalenga kufanya hivyo, na kwamba unaelewa matokeo yake, na kwamba unafuata [[{{MediaWiki:Policy-url}}|sera]].',
'actioncomplete' => 'Kitendo kimekwisha',
@@ -1558,7 +1776,7 @@ Tafadhali hakikisha kwamba unalenga kufanya hivyo, na kwamba unaelewa matokeo ya
'rollbackfailed' => 'Haikufaulu kurejesha',
'cantrollback' => 'Haiwezekana kujesha sahihisho;
ukurasa huu una mhariri mmoja tu.',
-'revertpage' => 'Masahihisho aliyefanya [[Special:Contributions/$2|$2]] ([[User talk:$2|Majadiliano]]) yalirejeshwa hadi sahihisho la mwisho na [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'Masahihisho aliyefanya [[Special:Contributions/$2|$2]] ([[User talk:$2|Majadiliano]]) yalirejeshwa hadi sahihisho la mwisho na [[User:$1|$1]]',
'rollback-success' => 'Masahihisho aliyeyafanya $1 yalirejeshwa hadi kufika sahihisho la mwisho aliyefanya $2.',
# Protect
@@ -1571,7 +1789,6 @@ ukurasa huu una mhariri mmoja tu.',
'protectexpiry' => 'Itakwisha:',
'protect_expiry_invalid' => 'Muda wa kwisha ni batilifu.',
'protect_expiry_old' => 'Muda wa kuishi umepita tayari.',
-'protect-unchain' => 'Fungua ruhusa za kusogeza',
'protect-text' => "Unaweza kutazama na kubadilisha kiwango cha ulindaji hapa kwa ukurasa '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Akaunti yako hairuhusiwi kubadilisha viwango vya ulindaji.
Hivi ni vipimo kwa ukurasa '''$1''':",
@@ -1595,7 +1812,7 @@ Hivi ni vipimo kwa ukurasa '''$1''':",
** Onyo-la-kuzuia kuhariri
** Kurasa inatembelewa sana',
'protect-edit-reasonlist' => 'Hariri sababu za kulinda',
-'protect-expiry-options' => 'saa 1:1 hour,siku 1:1 day,wiki 1:1 week,wiki 2:2 weeks,mwezi 1:1 month,miezi 3:3 months,miezi 6:6 months,mwaka 1:1 year,milele:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'saa 1:1 hour,siku 1:1 day,wiki 1:1 week,wiki 2:2 weeks,mwezi 1:1 month,miezi 3:3 months,miezi 6:6 months,mwaka 1:1 year,milele:infinite',
'restriction-type' => 'Ruhusa:',
'restriction-level' => 'Kiwango cha kizuia:',
'pagesize' => '(baiti)',
@@ -1613,6 +1830,7 @@ Hivi ni vipimo kwa ukurasa '''$1''':",
'undelete-fieldset-title' => 'Kurudisha mapitio',
'undeletebtn' => 'Rudisha',
'undeletelink' => 'onyesha/rejesha',
+'undeleteviewlink' => 'tazama',
'undeletecomment' => 'Sababu:',
'undeletedarticle' => 'alirudisha "[[$1]]"',
'undeletedrevisions' => '{{PLURAL:$1|pitio 1 lilirudishwa|mapitio $1 yalirudishwa}}',
@@ -1644,6 +1862,7 @@ huenda ikawa mtu mwingine ameurudisha tayari.',
'sp-contributions-newbies-sub' => 'Kwa akaunti mpya',
'sp-contributions-blocklog' => 'Kumbukumbu ya uzuio',
'sp-contributions-logs' => 'kumbukumbu',
+'sp-contributions-talk' => 'majadiliano',
'sp-contributions-search' => 'Tafuta michango',
'sp-contributions-username' => 'Anwani ya IP au jina la mtumiaji:',
'sp-contributions-submit' => 'Tafuta',
@@ -1667,6 +1886,7 @@ huenda ikawa mtu mwingine ameurudisha tayari.',
# Block/unblock
'blockip' => 'Zuia mtumiaji',
+'blockip-title' => 'Kumzuia mtumiaji',
'blockip-legend' => 'Kumzuia mtumiaji',
'ipaddress' => 'Anwani ya IP:',
'ipadressorusername' => 'Anwani ya IP au jina la mtumiaji:',
@@ -1687,7 +1907,7 @@ huenda ikawa mtu mwingine ameurudisha tayari.',
'ipbenableautoblock' => 'Mashine izuie anwani ya mwisho ya IP iliotumiwa na mtumiaji huyu, na IP zozote za baadaye atakayejaribu kutumia',
'ipbsubmit' => 'Zuia mtumiaji huyu',
'ipbother' => 'Muda mwingine:',
-'ipboptions' => 'Masaa 2:2 hours,siku 1:1 day,siku 3:3 days,wiki 1:1 week,wiki 2:2 weeks,mwezi 1:1 month,miezi 3:3 months,miezi 6:6 months,mwaka 1:1 year,milele:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'Masaa 2:2 hours,siku 1:1 day,siku 3:3 days,wiki 1:1 week,wiki 2:2 weeks,mwezi 1:1 month,miezi 3:3 months,miezi 6:6 months,mwaka 1:1 year,milele:infinite',
'ipbotheroption' => 'engine',
'ipbotherreason' => 'Engine/sababu ya ziada:',
'ipbhidename' => 'Ficha jina la mtumiaji katika orodha na kuhariri',
@@ -1699,6 +1919,7 @@ huenda ikawa mtu mwingine ameurudisha tayari.',
'ipblocklist-submit' => 'Tafuta',
'blocklistline' => '$1, $2 alimzuia $3 ($4)',
'infiniteblock' => 'milele',
+'expiringblock' => 'inakwisha tarehe $1 saa $2',
'emailblock' => 'barua pepe imezuiliwa',
'blocklink' => 'zuia',
'unblocklink' => 'acha kuzuia',
@@ -1742,7 +1963,7 @@ Kama tayari kuna ukurasa au ukifuta tiki, itabidi usogeze au uunganishe ukurasa
'move-watch' => 'Fuatilia ukurasa huu',
'movepagebtn' => 'Sogeza ukurasa',
'pagemovedsub' => 'Umefaulu kuhamisha ukurasa',
-'movepage-moved' => '\'\'\'"$1" imesogezwa kwenye "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" imesogezwa kwenye "$2"\'\'\'',
'articleexists' => 'Tayari kuna ukurasa wenye jina hilo, au
jina ulilochagua ni batilifu.
Chagua jina lengine.',
@@ -1763,13 +1984,21 @@ Chagua jina lengine.',
'export-addns' => 'Ongeza',
# Namespace 8 related
-'allmessages' => 'Jumbe za mfumo',
-'allmessagesname' => 'Jina',
-'allmessagesdefault' => 'Ujumbe uliopo bidhaa pepe',
-'allmessagescurrent' => 'Ujumbe unapo sasa hivi',
-'allmessagestext' => 'Hii ni orodha ya jumbe za mfumo zilizopo katika eneo la MediaWiki.
+'allmessages' => 'Jumbe za mfumo',
+'allmessagesname' => 'Jina',
+'allmessagesdefault' => 'Ujumbe uliopo bidhaa pepe',
+'allmessagescurrent' => 'Ujumbe unapo sasa hivi',
+'allmessagestext' => 'Hii ni orodha ya jumbe za mfumo zilizopo katika eneo la MediaWiki.
Ukitaka kusaidia kazi ya kutohoa MediaWiki yote katika lugha nyingi, tafadhali uende tovuti ya [http://www.mediawiki.org/wiki/Localisation Kutohoa MediaWiki Kwenye Lugha Nyingi] na [http://translatewiki.net translatewiki.net].',
-'allmessagesnotsupportedDB' => "Ukurasa huu hauwezi kutumika kwa sababu '''\$wgUseDatabaseMessages''' imelemazwa.",
+'allmessagesnotsupportedDB' => "Ukurasa huu hauwezi kutumika kwa sababu '''\$wgUseDatabaseMessages''' imelemazwa.",
+'allmessages-filter-legend' => 'Chuja',
+'allmessages-filter' => 'Zichujwe kwa hali ya kutengenezwa:',
+'allmessages-filter-unmodified' => 'Zisizotengenezwa',
+'allmessages-filter-all' => 'Zote',
+'allmessages-filter-modified' => 'Zilizotengenezwa',
+'allmessages-prefix' => 'Zichujwe kwa kiambishi awali:',
+'allmessages-language' => 'Lugha:',
+'allmessages-filter-submit' => 'Uende',
# Thumbnails
'thumbnail-more' => 'Kuza',
@@ -1803,6 +2032,7 @@ Tafadhali jaribu tena.',
'tooltip-ca-viewsource' => 'Ukurasa huu umelindwa. Unaweza kutazama chanzo chake.',
'tooltip-ca-history' => 'Mapitio ya awali ya ukurasa huu',
'tooltip-ca-protect' => 'Linda ukurasa huu',
+'tooltip-ca-unprotect' => 'Kuondoa tunzo la ukurasa',
'tooltip-ca-delete' => 'Futa ukurasa huu',
'tooltip-ca-undelete' => 'Rudisha masahihisho yaliyofanyiwa katika ukurasa huu kabla haujafutwa',
'tooltip-ca-move' => 'Sogeza ukurasa huu',
@@ -1813,6 +2043,7 @@ Tafadhali jaribu tena.',
'tooltip-search-fulltext' => 'Tafuta kurasa kwa maandishi haya',
'tooltip-p-logo' => 'Tembelea Mwanzo',
'tooltip-n-mainpage' => 'Tembelea Mwanzo',
+'tooltip-n-mainpage-description' => 'Tembelea Mwanzo',
'tooltip-n-portal' => 'Kuhusu mradi, mambo unaweza kufanya, na mahali pa kugundua vitu',
'tooltip-n-currentevents' => 'Maarifa kuhusu habari za siku hizi',
'tooltip-n-recentchanges' => 'Orodha ya mabadiliko ya hivi karibuni katika Wiki.',
@@ -1852,10 +2083,12 @@ Tafadhali jaribu tena.',
# Attribution
'anonymous' => '{{PLURAL:$1|mtumiaji bila jina|watumiaji bila majina}} wa {{SITENAME}}',
'siteuser' => 'mtumiaji $1 wa {{SITENAME}}',
-'lastmodifiedatby' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho saa $2, tarehe $1 na $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Mtumiaji wa {{SITENAME}} asiyekuwa na jina $1',
+'lastmodifiedatby' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho saa $2, tarehe $1 na $3.',
'othercontribs' => 'Ukurasa uliandikwa pia na $1.',
'others' => 'wengine',
'siteusers' => '{{PLURAL:$2|mtumiaji|watumiaji}} wa {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|Mtumiaji|Watumiaji}} wa {{SITENAME}} {{PLURAL:$2|asiyetiwa jina|wasiotiwa jina}} $1',
'creditspage' => 'Wandishi wa ukurasa',
'nocredits' => 'Taarifa kuhusu wandishi wa ukurasa huu haipatikana.',
@@ -1867,6 +2100,9 @@ Tafadhali jaribu tena.',
'numauthors' => 'Idadi ya waandishi tofauti (ukurasa): $1',
'numtalkauthors' => 'Idadi ya waandishi tofauti (ukurasa wa majadiliano): $1',
+# Math errors
+'math_unknown_error' => 'hitilafu isiyojulikana',
+
# Patrol log
'patrol-log-auto' => '(kwa kujiendesha)',
@@ -1927,7 +2163,7 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Upana',
@@ -1963,7 +2199,7 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
'exif-gpsstatus-a' => 'Kipimo kinaendelea',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometa kwa saa',
'exif-gpsspeed-m' => 'Maili kwa saa',
'exif-gpsspeed-n' => 'Noti',
@@ -1982,6 +2218,7 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
'watchlistall2' => 'zote',
'namespacesall' => 'zote',
'monthsall' => 'yote',
+'limitall' => 'zote',
# E-mail address confirmation
'confirmemail' => 'Kuyakinisha anwani ya barua pepe',
@@ -2100,9 +2337,10 @@ Pia unaweza [[Special:Watchlist/edit|kutumia kihariri cha kawaida]].',
'watchlisttools-raw' => 'Hariri maangalizi ghafi',
# Special:Version
-'version' => 'Toleo', # Not used as normal message but as header for the special page itself
+'version' => 'Toleo',
'version-specialpages' => 'Kurasa maalum',
'version-other' => 'Zingine',
+'version-version' => '(Toleo $1)',
'version-license' => 'Ruhusa',
'version-software' => 'Bidhaa pepe iliyosakinishwa',
'version-software-product' => 'Bidhaa',
@@ -2165,4 +2403,8 @@ Tovuti hii inapata matatatizo wakati huu.',
'dberr-info' => '(Hamna mawasiliano na seva ya hifadhidata: $1)',
'dberr-usegoogle' => 'Unaposubiri unaweza kujaribu kutafuta kwa kutumia Google.',
+# HTML forms
+'htmlform-reset' => 'Tengua mabadiliko',
+'htmlform-selectorother-other' => 'Nyingine',
+
);
diff --git a/languages/messages/MessagesSzl.php b/languages/messages/MessagesSzl.php
index f40df19e..d08d74e2 100644
--- a/languages/messages/MessagesSzl.php
+++ b/languages/messages/MessagesSzl.php
@@ -51,6 +51,7 @@ $messages = array(
'tog-enotifminoredits' => 'Wyślij e-brifa tyž w takim raźe, kej by chodźiuo uo drobne pomjyńańa',
'tog-enotifrevealaddr' => 'Ńy chow mojigo e-brifa w powjadomjyńach',
'tog-shownumberswatching' => 'Pokoż, wjela sprowjorzy dowo pozůr',
+'tog-oldsig' => 'Teroźni wyglůnd Twojygo szrajbowańo',
'tog-fancysig' => 'Szrajbńij s kodůma wiki (bez autůmatycznygo linka)',
'tog-externaleditor' => 'Sztandardowo używej zewnyntrznygo edytora (jyno do ekspertůw, trza mjyć ekstra sztalowańy we systymje)',
'tog-externaldiff' => 'Sztandardowo używej zewnyntrzny program do filowańo w pomjyńańach (jyno do ekspertůw, trza mjyć ekstra sztalowańy we systymje)',
@@ -72,6 +73,10 @@ $messages = array(
'underline-never' => 'Ńigdy',
'underline-default' => 'Podug sztalowańo uoglůndarki',
+# Font style option in Special:Preferences
+'editfont-style' => 'Styl czćůnki we placu sprowjyń:',
+'editfont-default' => 'Domyślno przeglůndarki',
+
# Dates
'sunday' => 'Ńedźela',
'monday' => 'Pyńdźołek',
@@ -131,7 +136,7 @@ $messages = array(
'category-media-header' => 'Pliki w katygoryji "$1"',
'category-empty' => "''Terozki w tyj katygoryji sům żodne artikle a pliki''",
'hidden-categories' => '{{PLURAL:$1|Schowano katygoryjo|Schowane katygoryje|Schowanych katygoryji}}',
-'hidden-category-category' => 'Schowane katygoryje', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Schowane katygoryje',
'category-subcat-count' => '{{PLURAL:$2|Ta katygoryjo mo jyno jydno podkatygoryjo.|Ta katygoryjo mo {{PLURAL:$1|tako podkatygoryjo|$1 podkatygoryje|$1 podkatygoryji}} s liczby wszyjskich katygoryji: $2.}}',
'category-subcat-count-limited' => 'Ta katygoryjo mo {{PLURAL:$1|tako podkatygoryjo|$1 podkatygoryje|$1 podkatygoryji}}.',
'category-article-count' => '{{PLURAL:$2|W tyj katygoryji je jyno jydno zajta.|W katygoryji {{PLURAL:$1|je pokazano $1 zajta|sům pokozane $1 zajty|je pokozanych $1 zajtůw}} s cołkyj liczby $2 zajtůw.}}',
@@ -148,10 +153,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komuńikaty uo nowych wersyjach MediaWiki]',
-'about' => 'Uo serwiśe',
-'article' => 'zajta',
-'newwindow' => '(uodmyko śe w nowym uokńy)',
-'cancel' => 'Uodćepnij',
+'about' => 'Uo serwiśe',
+'article' => 'zajta',
+'newwindow' => '(uodmyko śe w nowym uokńy)',
+'cancel' => 'Uodćepnij',
+'moredotdotdot' => 'Wjyncy...',
+'mypage' => 'Moja zajta',
+'mytalk' => 'Moja dyskusyjo',
+'anontalk' => 'Godka tygo IP',
+'navigation' => 'Nawigacyjo',
+'and' => '&#32;a',
+
+# Cologne Blue skin
'qbfind' => 'Nojdź',
'qbbrowse' => 'Uoglůndańy',
'qbedit' => 'Sprowjej',
@@ -159,15 +172,8 @@ $messages = array(
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Moje zajty',
'qbspecialpages' => 'Szpecyjalne zajty',
-'moredotdotdot' => 'Wjyncy...',
-'mypage' => 'Moja zajta',
-'mytalk' => 'Moja dyskusyjo',
-'anontalk' => 'Godka tygo IP',
-'navigation' => 'Nawigacyjo',
-'and' => '&#32;a',
-
-# Metadata in edit box
-'metadata_help' => 'Metadane:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Feler',
'returnto' => 'Nazod do zajty $1.',
@@ -217,7 +223,7 @@ $messages = array(
'otherlanguages' => 'We inkszych godkach',
'redirectedfrom' => '(Překerowano s $1)',
'redirectpagesub' => 'Zajta překerowujůnco',
-'lastmodifiedat' => 'Ta zajta uostatńo sprowjano $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ta zajta uostatńo sprowjano $2, $1.',
'viewcount' => 'W ta zajta filowano {{PLURAL:$1|tylko roz|$1 rozůw}}.',
'protectedpage' => 'Zajta zawarto',
'jumpto' => 'Przyńdź do:',
@@ -228,7 +234,6 @@ $messages = array(
'aboutsite' => 'Uo {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'aboutpage' => 'Project:Uo serwiśe',
'copyright' => 'Tekst udostympńany na licencyji $1.',
-'copyrightpagename' => 'prawami autorskimi {{GRAMMAR:D.lp|{{SITENAME}}}}',
'copyrightpage' => '{{ns:project}}:Prawa autorske',
'currentevents' => 'Bježůnce wydařyńa',
'currentevents-url' => 'Project:Bježůnce wydařyńa',
@@ -236,8 +241,6 @@ $messages = array(
'disclaimerpage' => 'Project:Informacyje prawne',
'edithelp' => 'Pomoc we pomjyńańu',
'edithelppage' => 'Help:Jak pomjyńać zajta',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Pomoc',
'mainpage' => 'Przodńo zajta',
'mainpage-description' => 'Przodńo zajta',
@@ -312,9 +315,6 @@ MySQL zguośiu feler "<tt>$3: $4</tt>".',
"$1"
kere wywououa funkcyjo "$2".
MySQL zguośiu feler "$3: $4"',
-'noconnect' => 'Přeprašomy! Ta wiki mo chwilowo problemy techńične. Ńy idźe pouůnčyć śe ze serwerym bazy danych.<br />$1',
-'nodb' => 'Ńy idźe znejść bazy danych $1',
-'cachederror' => 'To, co sam je naškryflone to ino kopja s pamjyńći podrynčnyj a može ńy być aktualne.',
'laggedslavemode' => 'Dej pozůr: Ta zajta može ńy mjeć nojnowšych aktualizacyjůw.',
'readonly' => 'Baza danych je zawarto',
'enterlockreason' => 'Naškryflej sam powůd zawarća bazy danych a za wjela (myńi-wjyncyj) ja uodymkńeš',
@@ -373,7 +373,6 @@ Powůd zawarćo: ''$2''.",
'virus-unknownscanner' => 'ńyznajůmy průgram antywirusowy',
# Login and logout pages
-'logouttitle' => 'Wylůgowańy užytkowńika',
'logouttext' => "'''Terozki ježeś wylůgowany'''.
Možeš dali sam sprowjać zajty we {{SITENAME}} kej ńyzalůgowany užytkowńik, abo [[Special:UserLogin|zalůgować śe nazod]] kej tyn som abo inkšy užytkowńik.
@@ -381,7 +380,6 @@ Dej pozůr, co na ńykerych zajtach přeglůndarka može dali pokozywać co jež
'welcomecreation' => '== Witej, $1! ==
Uotwarli my sam lo Ćebje kůnto.
Ńy zapomńij poštalować [[Special:Preferences|preferencyji lo {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
-'loginpagetitle' => 'Logowańy',
'yourname' => 'Mjano užytkowńika:',
'yourpassword' => 'Hasuo:',
'yourpasswordagain' => 'Naškryflej hasuo zaś',
@@ -403,22 +401,7 @@ Uotwarli my sam lo Ćebje kůnto.
'createaccountmail' => 'e-brifym',
'badretype' => 'Hasua kere žeś naškryflou ńy zgodzajům śe jydne s drugim.',
'userexists' => 'Mjano užytkowńika, kere žeś wybrou, je zajynte. Wybjer, proša, inkše mjano.',
-'youremail' => 'E-brif:',
-'username' => 'Mjano užytkowńika:',
-'uid' => 'ID užytkowńika:',
-'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
-'yourrealname' => 'Prowdźiwe mjano:',
-'yourlanguage' => 'Godka interfejsu',
-'yournick' => 'Twoja šrajba:',
-'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
-'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
-'gender-male' => 'chop',
-'gender-female' => 'baba',
-'email' => 'E-brif',
-'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak žeś zdecydowou aže je podoš, bydům užyte, coby Twoja robota mjoua atrybucyjo.',
'loginerror' => 'Feler při logůwańu',
-'prefs-help-email' => 'Podowańy e-brifa je upcjůnalne, nale pozwoli na wysuańy Ći bez e-brif nowygo hasua w raźe jakbyś je zopomńou. Možeš tyž dozwolić inkšym užytkowńikům na kůntakt s Tobům bez e-brif, a ńy bydźe ůun udostympńůny.',
-'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
'nocookiesnew' => 'Kůnto užytkowńika zostouo utwořůne, nale ńy ježeś zalůgowany. {{SITENAME}} užywo ćosteček do logůwańo. Moš wyuůnčone ćostečka. Coby śe zalůgować, uodymknij ćostečka a podej mjano a hasuo swojigo kůnta.',
'nocookieslogin' => '{{SITENAME}} užywo ćosteček do lůgowańo užytkowńikůw. Moš zablokowano jejich uobsuůga. Sprůbuj zaś jak zauůnčyš uobsuůga ćosteček.',
'noname' => 'To ńy je půprowne mjano užytkowńika.',
@@ -471,7 +454,6 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
'retypenew' => 'Naškryflej ješče roz nowe hasuo:',
'resetpass_submit' => 'Naštaluj hasuo a zalůguj',
'resetpass_success' => 'Twoje hasuo zostouo půmyślńy pomjyńone! Trwo logůwańe...',
-'resetpass_bad_temporary' => 'Felerne hasuo tymčasowe. Abo možeś juž zakůńčyu proces pomjyńańo hasua, abo poprośiužeś uo nowe hasuo tymčasowe.',
'resetpass_forbidden' => 'Ńy idźe sam půmjyńyć hasuůw.',
'resetpass-no-info' => 'Muśysz być zalogowany, coby uzyskać bezpostrzedńi dostymp do tyj zajty.',
'resetpass-submit-loggedin' => 'Zmjyń hasło',
@@ -545,7 +527,6 @@ Twůj adres IP je terozki $3. Idyntyfikator Twojij blokady to $5. Zanotuj śe go
'blockededitsource' => "Tekst '''Twojich sprowjyń''' na '''$1''' zostou pokozany půnižyj:",
'whitelistedittitle' => 'Začym začńyš sprowjać, muśiš być zalůgowany.',
'whitelistedittext' => 'Muśiš $1 coby můc sprowjać artikle.',
-'confirmedittitle' => 'Wymogane potwjyrdzyńy e-brifa, cobyś můg sam sprowjać',
'confirmedittext' => 'Muśiš podać a potwjerdźić swůj e-brif, coby můc sam sprowjać.
Možeš to zrobić we [[Special:Preferences|swojich štalowańach]].',
'nosuchsectiontitle' => 'Ńy mo takij tajli',
@@ -563,7 +544,8 @@ Jeli ježeś anůnimowym užytkowńikym a wydowo Ći śe, aže zamjyščůne sam
'noarticletext' => 'Ńy můmy zajty uo takij titli. Mogesz [{{fullurl:{{FULLPAGENAME}}|action=edit}} wćepać artikel {{FULLPAGENAME}}] abo [[Special:Search/{{PAGENAME}}|szukać {{PAGENAME}} we inkszych artiklach]].',
'userpage-userdoesnotexist' => 'Užytkowńik "$1" ńy je zareještrowany. Sprowdź eli na pewno chćoužeś stwořyć/pomjynić gynau ta zajta.',
'clearyourcache' => "'''Dej pozůr:''' Coby uobejřeć pomjyńańo pů naškryflańu nowych štalowań poleć přeglůndorce wyčyśćić zawartość pamjyńći podrynčnyj (cache). '''Mozilla / Firefox / Safari:''' přitřimej ''Shift'' klikajůnc na ''Uodśwjyž'' abo wciś ''Ctrl-Shift-R'' (''Cmd-Shift-R'' na Macintoshu), '''IE :''' přitřimej ''Ctrl'' klikajůnc na ''Uodśwjyž'' abo wciś ''Ctrl-F5''; '''Konqueror:''': kliknij knefel ''Uodśwjyž'' abo wciś ''F5''; užytkowńicy '''Opery''' mogům być zmušeńi coby coukym wyčyśćić jejich pamjyńć podrynčno we menu ''Werkcojgi→Preferencyje''.; '''Internet Explorer:''' třim ''Ctrl'' a wćiś ''Uodśwjyž'', abo wćiś ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Podpowjydź:''' Užyj knefla \"Podglůnd\", coby přetestować Twůj nowy arkuš stylůw CSS abo kod JavaScript před jego zašrajbowańym.",
+'usercssyoucanpreview' => "'''Podpowjydź:''' Užyj knefla \"Podglůnd\", coby přetestować Twůj nowy arkuš stylůw CSS abo kod JavaScript před jego zašrajbowańym.",
+'userjsyoucanpreview' => "'''Podpowjydź:''' Užyj knefla \"Podglůnd\", coby přetestować Twůj nowy arkuš stylůw CSS abo kod JavaScript před jego zašrajbowańym.",
'usercsspreview' => "'''Pamjyntej, aže to je na raźe ino podglůnd Twojego arkuša stylůw CSS.'''
'''Ńic ješče ńy zostouo naškryflone!'''",
'userjspreview' => "'''Pamjyntej, aže to je na raźe ino podglůnd Twojego JavaScriptu - nic ješče ńy zostouo naškryflone!'''",
@@ -620,11 +602,10 @@ Možeš sprowjać te co juž sům, abo [[Special:UserLogin|zalogować śe, abo z
'permissionserrors' => 'Felerne uprowńyńa',
'permissionserrorstext' => 'Ńy moš uprowńyń do takij akcyje {{PLURAL:$1|skuli tego, co:|bestůž, co:}}',
'permissionserrorstext-withaction' => 'Ńy možeš $2, s {{PLURAL:$1|nastympujůncygo powodu|nastympujůncych powodůw}}:',
-'recreate-deleted-warn' => "'''Dej pozůr: Průbuješ wćepać nazod zajta kero juž bůua wyćepano.'''
+'recreate-moveddeleted-warn' => "'''Dej pozůr: Průbuješ wćepać nazod zajta kero juž bůua wyćepano.'''
Zastanůw śe, eli sprowjańy nazod tyj zajty mo uzasadńyńy. Lo wygody užytkowńikůw, ńižyj pokozano rejer wyćepńyńć tyj zajty:",
-'deleted-notice' => 'Ta zajta zostoua wyćepńynto. Rejer wyćepań tyj zajty je pokozany půńižyj.',
-'deletelog-fulllog' => 'Uobejzdřyj couki rejer.',
+'moveddeleted-notice' => 'Ta zajta zostoua wyćepńynto. Rejer wyćepań tyj zajty je pokozany půńižyj.',
'edit-hook-aborted' => 'Sprowjyńy štopńynte skiž hoka.
Ńy je wjadůme pů jakymu.',
'edit-gone-missing' => 'Ńy idźe zaktualizować zajty.
@@ -665,7 +646,7 @@ Skuli: ''$2''",
'currentrev' => 'Aktualno wersyjo',
'currentrev-asof' => 'Aktualno wersyjo na dźyń $1',
'revisionasof' => 'Wersyjo s dńa $1',
-'revision-info' => 'Wersyjo s dńa $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Wersyjo s dńa $1; $2',
'previousrevision' => '← starszo wersyjo',
'nextrevision' => 'Nastympno wersyjo→',
'currentrevisionlink' => 'Aktualno wersyjo',
@@ -677,7 +658,6 @@ Skuli: ''$2''",
'histlegend' => 'Wybůr růžńic do porůwnańo: postow kropki we boksach a naćiś enter abo knefel na dole.<br />
Legynda: (bjež.) - růžńice s wersyjům bježůncům, (popř.) - růžńice s wersyjům popředzajůncům, d - drobne zmjany',
'history-fieldset-title' => 'Přeglůndej historyjo',
-'deletedrev' => '[wyćepano]',
'histfirst' => 'uod počůnku',
'histlast' => 'uod uostatka',
'historysize' => '({{PLURAL:$1|1 bajt|$1 bajty|$1 bajtůw}})',
@@ -686,7 +666,7 @@ Legynda: (bjež.) - růžńice s wersyjům bježůncům, (popř.) - růžńice s
# Revision feed
'history-feed-title' => 'Gyszichta wersyjůw',
'history-feed-description' => 'Historyjo wersyje tyj zajty wiki',
-'history-feed-item-nocomment' => '$1 uo $2', # user at time
+'history-feed-item-nocomment' => '$1 uo $2',
'history-feed-empty' => 'Wybrano zajta ńy istńije.
Můgua zostać wyćepano abo přećepano pod inkše mjano.
Možeš tyž [[Special:Search|šnupać]] za tům zajtům.',
@@ -695,10 +675,10 @@ Možeš tyž [[Special:Search|šnupać]] za tům zajtům.',
'rev-deleted-comment' => '(kůmyntoř wyćepany)',
'rev-deleted-user' => '(užytkowńik wyćepany)',
'rev-deleted-event' => '(škryflańy wyćepane)',
-'rev-deleted-text-permission' => 'Wersyjo tyj zajty uostoua wyćepano a ńy je dostympna publičńy. Ščygůuy idźe znejść we [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} rejeře wyćepań].',
+'rev-deleted-text-permission' => 'Wersyjo tyj zajty uostoua wyćepano a ńy je dostympna publičńy. Ščygůuy idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} rejeře wyćepań].',
'rev-deleted-text-view' => 'Ta wersyjo zajty uostoua wyćepano a ńy je dostympna publičńy.
Atoli kej admińistrator {{GRAMMAR:MS.lp|{{SITENAME}}}} možeš jům uobejřeć.
-Powody wyćepańo idźe znejść we [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} rejeře wyćepań]',
+Powody wyćepańo idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejeře wyćepań]',
'rev-delundel' => 'pokož/schrůń',
'revisiondelete' => 'Wyćep/wćep nazod wersyje',
'revdelete-nooldid-title' => 'Ńy wybrano wersyji',
@@ -710,12 +690,12 @@ Powody wyćepańo idźe znejść we [{{fullurl:Special:Log/delete|page={{FULLPAG
Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp do schrůńůnych wersyji a bydům můgli je wćepać nazod, chyba aže uoperator serwisu nouožůu dodatkowe uograńičyńo.",
'revdelete-legend' => 'Naštaluj uograńičyńo lo wersyji:',
'revdelete-hide-text' => 'Schrůń tekst wersyji',
+'revdelete-hide-image' => 'Schrůń zawartość plika',
'revdelete-hide-name' => 'Schrůń akcyjo a cyl',
'revdelete-hide-comment' => 'Schrůń kůmyntoř sprowjyńo',
'revdelete-hide-user' => 'Schrůń mjano užytkowńika/adres IP',
'revdelete-hide-restricted' => 'Wprowadź te uograńičyńo zarůwno lo admińistratorůw jak i lo inkšych',
'revdelete-suppress' => 'Schrůń informacyje zarůwno před admińistratorůma jak i před inkšymi',
-'revdelete-hide-image' => 'Schrůń zawartość plika',
'revdelete-unsuppress' => 'Usůń uograńičyńo lo wćepanej nazod historyje pomjyńań',
'revdelete-log' => 'Čymu:',
'revdelete-submit' => 'Zaakceptuj do wybranych wersyji',
@@ -735,6 +715,7 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'revdelete-unhid' => 'ńy schrůńaj $1',
'revdelete-log-message' => '$1 - $2 {{PLURAL:$2|wersyjo|wersyji|wersjůw}}',
'logdelete-log-message' => '$1 - $2 {{PLURAL:$2|zdařyńe|zdařyńa|zdařyń}}',
+'revdelete-edit-reasonlist' => 'Sprowjańe powodůw wyćepańo zajty',
# Suppression log
'suppressionlog' => 'Log schrůńyńć',
@@ -772,63 +753,8 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'difference' => '(Růžńice mjyndzy škryflańami)',
'lineno' => 'Lińja $1:',
'compareselectedversions' => 'porůwnej wybrane wersyje',
-'visualcomparison' => 'Porůwnońy treśći',
-'wikicodecomparison' => 'Porůwnońy wikiteksta',
'editundo' => 'cofej',
'diff-multi' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postředńij|$1 wersyji postředńich}}.)',
-'diff-movedto' => 'přećepano do $1',
-'diff-styleadded' => 'dodano styl: $1',
-'diff-added' => 'dodano $1',
-'diff-changedto' => 'zmjyńůno na $1',
-'diff-movedoutof' => 'překludzůne s $1',
-'diff-styleremoved' => 'wyćepano styl: $1',
-'diff-removed' => 'wyćepano $1',
-'diff-changedfrom' => 'zmjyńůno s $1',
-'diff-src' => 'zdřuduo',
-'diff-withdestination' => 's přeznočyńym $1',
-'diff-with' => '&#32;s $1 $2',
-'diff-with-final' => '&#32;a $1 $2',
-'diff-width' => 'šyřka',
-'diff-height' => 'wysokość',
-'diff-p' => "'''paragraf'''",
-'diff-blockquote' => "'''cytot'''",
-'diff-h1' => "'''naguůwek (poźům 1)'''",
-'diff-h2' => "'''naguůwek (poźům 2)'''",
-'diff-h3' => "'''naguůwek (poźům 3)'''",
-'diff-h4' => "'''naguůwek (poźům 4)'''",
-'diff-h5' => "'''naguůwek (poźům 5)'''",
-'diff-pre' => "'''tekst preformatowany'''",
-'diff-div' => "'''dźelyńe'''",
-'diff-ul' => "'''ńyupořůndkowano lista'''",
-'diff-ol' => "'''upořůndkowano lista'''",
-'diff-li' => "'''elymynt listy'''",
-'diff-table' => "'''tabůlka'''",
-'diff-tbody' => "'''zawartość tabůlki'''",
-'diff-tr' => "'''wjyrš'''",
-'diff-td' => "'''komůrka'''",
-'diff-th' => "'''naguůwek'''",
-'diff-br' => "'''přerwa'''",
-'diff-hr' => "'''lińja poźůmo'''",
-'diff-code' => "'''blok kodu'''",
-'diff-dl' => "'''lista defińicyji'''",
-'diff-dt' => "'''termin we defińicyji'''",
-'diff-dd' => "'''defińicyjo'''",
-'diff-input' => "'''wkludzańe'''",
-'diff-form' => "'''formulař'''",
-'diff-img' => "'''grafika'''",
-'diff-span' => "'''uodstymp'''",
-'diff-a' => "'''link'''",
-'diff-i' => "'''kursywa'''",
-'diff-b' => "'''pogrubjyńy'''",
-'diff-strong' => "'''rube buchštaby'''",
-'diff-em' => "'''podkreślyńy'''",
-'diff-font' => "'''čćůnka'''",
-'diff-big' => "'''pogrubjyńy'''",
-'diff-del' => "'''wyćepane'''",
-'diff-tt' => "'''naprawjůno šyřka'''",
-'diff-sub' => "'''indeks spodńi'''",
-'diff-sup' => "'''indeks wjyrchńi'''",
-'diff-strike' => "'''překreślyńy'''",
# Search results
'searchresults' => 'Wyńiki šnupańo',
@@ -836,24 +762,20 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'searchresulttext' => 'Coby dowjydźeć śe wjyncyj uo šnupańu w {{GRAMMAR:D.lp|{{SITENAME}}}}, uobezdřij [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Wyńiki šnupańo za "[[:$1]]" ([[Special:Prefixindex/$1|zajty kere začynajům śe uod „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|zajty kere sům adresowane do „$1”]])',
'searchsubtitleinvalid' => 'Lo zapytańo "$1"',
-'noexactmatch' => "'''Ńy mo sam zajtůw nazwanych \"\$1\".'''
-Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
-'noexactmatch-nocreate' => "'''Ńy mo sam zajty uo mjańe \"\$1\".'''",
'toomanymatches' => 'Za dužo elymyntůw kere pasujům do wzorca, wćep inkše zapytańy',
'titlematches' => 'Znejdźono we titlach:',
'notitlematches' => 'Ńy znejdźono we titlach',
'textmatches' => 'Znejdźono na zajtach:',
'notextmatches' => 'Ńy znejdźono we tekście zajtůw',
-'prevn' => 'popředńe $1',
-'nextn' => 'nastympne $1',
-'viewprevnext' => 'Uobezdřij ($1) ($2) ($3)',
+'prevn' => 'popředńe {{PLURAL:$1|$1}}',
+'nextn' => 'nastympne {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Uobezdřij ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Uopcyje sznupańo',
'searchmenu-exists' => "'''Ńy ma zajty uo mjańy \"[[:\$1]]\" na tyj wiki'''",
'searchmenu-new' => "'''Stwůrz zajta „[[:$1|$1]]” na tyj wiki!'''",
'searchhelp-url' => 'Help:Pomoc',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglůndej zajty kere s anfanga majům tyn przedrostek]]',
'searchprofile-articles' => 'Zajty',
-'searchprofile-articles-and-proj' => 'Wszyjstke zajty projekta',
'searchprofile-project' => 'Zajty kere ńy sům we głůwnyj przestrzyńi mjan',
'searchprofile-images' => 'Pliki',
'searchprofile-everything' => 'Wszyjstko',
@@ -863,8 +785,6 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'searchprofile-images-tooltip' => 'Sznupańy za plikůma',
'searchprofile-everything-tooltip' => 'Sznupej we cołkij zawartości (wroz ze zajtami godki)',
'searchprofile-advanced-tooltip' => 'Sznupańy we wybranych przestrzyńach mjan',
-'prefs-search-nsdefault' => 'Domyślńy sznupej we przestrzyńach mjan:',
-'prefs-search-nscustom' => 'Sznupej we wybranych przestrzyńach mjan:',
'search-result-size' => '$1 ({{PLURAL:$2|1 suowo|$2 suowa|$2 suůw}})',
'search-result-score' => 'Akuratność: $1%',
'search-redirect' => '(překerowańy $1)',
@@ -881,7 +801,6 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'searchall' => 'wšyjske',
'showingresults' => "To lista na keryj je {{PLURAL:$1|'''1''' wyńik|'''$1''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
'showingresultsnum' => "To lista na keryj je {{PLURAL:$3|'''1''' wyńik|'''$3''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
-'showingresultstotal' => "Půńižej {{PLURAL:$4|znojduje śe wynik šnupańo numer '''$1''' s '''$3'''|znojdujům śe wyńiki šnupańo '''$1 - $2''' ze '''$3'''}}",
'nonefound' => "'''Dej pozůr''': Důmyślńy přešukiwane sům ino ńykere přestřyńy mjan. Poprůbuj popředźić wyšukiwano fraza předrostkym ''all:'', co spowoduje přešukańy coukij zawartośći {{GRAMMAR:D.lp|{{SITENAME}}}} (wůunčńy ze zajtami godki, šablůnůma atp.), abo poprůbuj užyć kej předrostka wybranyj, jydnyj přestřyńi mjan.",
'search-nonefound' => 'Ńy ma wynikůw kere społńajům kryterja podane we zapytańu.',
'powersearch' => 'Sznupańy zaawansowane',
@@ -892,35 +811,26 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'search-external' => 'Šnupańy zewnyntřne',
'searchdisabled' => 'Šnupańy we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostouo zawarte. Zańim go zouůnčům, možeš sprůbować šnupańo bez Google. Ino zauwaž, co informacyje uo treśći {{GRAMMAR:MS.lp|{{SITENAME}}}} můgům być we Google ńyakuratne.',
+# Quickbar
+'qbsettings' => 'Gurt šybkigo dostympu',
+'qbsettings-none' => 'Brak',
+'qbsettings-fixedleft' => 'Stouy, s lewyj',
+'qbsettings-fixedright' => 'Stouy, s prawyj',
+'qbsettings-floatingleft' => 'Unošůncy śe, s lewyj',
+'qbsettings-floatingright' => 'Unošůncy śe, s prawyj',
+
# Preferences page
'preferences' => 'Preferyncyje',
'mypreferences' => 'Moje preferyncyje',
'prefs-edits' => 'Ličba sprowjyń:',
'prefsnologin' => 'Ńy ježeś zalůgowany',
-'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
-'prefsreset' => 'Preferyncyje důmyślne zostouy uodtwořůne.',
-'qbsettings' => 'Gurt šybkigo dostympu',
-'qbsettings-none' => 'Brak',
-'qbsettings-fixedleft' => 'Stouy, s lewyj',
-'qbsettings-fixedright' => 'Stouy, s prawyj',
-'qbsettings-floatingleft' => 'Unošůncy śe, s lewyj',
-'qbsettings-floatingright' => 'Unošůncy śe, s prawyj',
+'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
'changepassword' => 'Zmjana hasua',
-'skin' => 'Skůrka',
+'prefs-skin' => 'Skůrka',
'skin-preview' => 'podglůnd',
-'math' => 'Wzory',
-'dateformat' => 'Format daty',
+'prefs-math' => 'Wzory',
'datedefault' => 'Důmyślny',
-'datetime' => 'Data a czas',
-'math_failure' => 'Parser ńy můg rozpoznać',
-'math_unknown_error' => 'ńyznany feler',
-'math_unknown_function' => 'ńyznano funkcyjo',
-'math_lexing_error' => 'feler leksera',
-'math_syntax_error' => 'felerno skuadńa',
-'math_image_error' => 'kůnwersyjo do formatu PNG ńy powjodua śe; uobadej, eli poprawńy zainštalowane sům lotex, dvips, gs i convert',
-'math_bad_tmpdir' => 'Ńy idźe utwořić abo naškryflać w tymčasowym katalůgu do wzorůw matymatyčnych',
-'math_bad_output' => 'Ńy idźe utwořić abo naškryflać we wyjśćowym katalůgu do wzorůw matymatyčnych',
-'math_notexvc' => 'Ńy ma sam texvc; zapoznej śe z math/README w celu kůnfiguracyje.',
+'prefs-datetime' => 'Data a czas',
'prefs-personal' => 'Dane užytkowńika',
'prefs-rc' => 'Ńydowno pomjyńane',
'prefs-watchlist' => 'Pozůrlista',
@@ -932,7 +842,7 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'prefs-resetpass' => 'Zmjyń hasło',
'saveprefs' => 'Naškryflej',
'resetprefs' => 'Preferencyje důmyślne',
-'textboxsize' => 'Sprowjańy',
+'prefs-editing' => 'Sprowjańy',
'prefs-edit-boxsize' => 'Rozmjor uokna edycyji.',
'rows' => 'Wjerše:',
'columns' => 'Kůlumny:',
@@ -946,9 +856,7 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'recentchangescount' => 'Ličba pozycyji na liśće půmjyńanych na uostatku, we historyje zajtůw a zajtach rejerůw:',
'savedprefs' => 'Twoje štalowańo we preferyncyjach zostouy naškryflane.',
'timezonelegend' => 'Strefa časowo',
-'timezonetext' => '¹Podej uo wjela godźin růžńi śe Twůj čas uod ůńiwersalnygo (UTC).',
'localtime' => 'Lokalny czas:',
-'timezoneselect' => 'Sztrefa czasowo:',
'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera',
'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
'timezoneoffset' => 'Dyferencyjo ¹:',
@@ -961,10 +869,25 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'prefs-namespaces' => 'Přystřyńe mjan',
'defaultns' => 'Důmyślńy šnupej we nastympujůncych přystřyńach mjan:',
'default' => 'důmyślńy',
-'files' => 'Pliki',
+'prefs-files' => 'Pliki',
+'youremail' => 'E-brif:',
+'username' => 'Mjano užytkowńika:',
+'uid' => 'ID užytkowńika:',
+'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
+'yourrealname' => 'Prowdźiwe mjano:',
+'yourlanguage' => 'Godka interfejsu',
+'yournick' => 'Twoja šrajba:',
+'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
+'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
+'gender-male' => 'chop',
+'gender-female' => 'baba',
+'email' => 'E-brif',
+'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak žeś zdecydowou aže je podoš, bydům užyte, coby Twoja robota mjoua atrybucyjo.',
+'prefs-help-email' => 'Podowańy e-brifa je upcjůnalne, nale pozwoli na wysuańy Ći bez e-brif nowygo hasua w raźe jakbyś je zopomńou. Možeš tyž dozwolić inkšym užytkowńikům na kůntakt s Tobům bez e-brif, a ńy bydźe ůun udostympńůny.',
+'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
# User rights
-'userrights' => 'Zařůndzańy prowami užytkowńikůw', # Not used as normal message but as header for the special page itself
+'userrights' => 'Zařůndzańy prowami užytkowńikůw',
'userrights-lookup-user' => 'Zařůndzej prowami užytkownika',
'userrights-user-editname' => 'Wklepej sam nazwa užytkowńika:',
'editusergroup' => 'Sprowjej grupy užytkowńika',
@@ -1047,6 +970,8 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
'right-editprotected' => 'Sprowjej zawarte zajty (ze zawarćym kaskadowym)',
'right-editinterface' => 'Sprowjej interfejs užytkowńika',
'right-editusercssjs' => 'Sprowjej pliki CSS i JS inkšych užytkowńikůw',
+'right-editusercss' => 'Sprowjej pliki CSS inkšych užytkowńikůw',
+'right-edituserjs' => 'Sprowjej pliki JS inkšych užytkowńikůw',
'right-rollback' => 'Rewert drap sprawjyńo uostatńygo užytkowńika kery sprawjou dano zajta',
'right-markbotedits' => 'Uoznoč rewertowane sprawjyńo kej sprawjyńo botůw',
'right-noratelimit' => 'Ńy mo uograńičyń přepustowośći',
@@ -1135,6 +1060,8 @@ Možeš [[:\$1|tako utwořyć]], abo sprůbować pounygo šnupańo.",
# Recent changes linked
'recentchangeslinked' => 'Pomjyńańa we adresowanych',
+'recentchangeslinked-feed' => 'Pomjyńańa we adresowanych',
+'recentchangeslinked-toolbox' => 'Pomjyńańa we adresowanych',
'recentchangeslinked-title' => 'Pomjyńyńo w adrésowanych s "$1"',
'recentchangeslinked-noresult' => 'Nikt nic niy pomjyńoł w dolinkowanych bez čas uo kery žeś pytou.',
'recentchangeslinked-summary' => "To je ekstra zajta, na kerej možeš uobočyć zmjany w artiklach adresowanych do podanyj zajty.
@@ -1146,7 +1073,6 @@ Artikle na [[Special:Watchlist|pozorliśće]] sům '''rube'''.",
# Upload
'upload' => 'Wćepej plik',
'uploadbtn' => 'Wćepej sam plik',
-'reupload' => 'Wćepej zaś',
'reuploaddesc' => 'Nazod do formulařa uod wćepywańo.',
'uploadnologin' => 'Ńy jest žeś zalogůwany',
'uploadnologintext' => 'Muśyš śe [[Special:UserLogin|zalůgować]] ńim wćepńeš pliki.',
@@ -1193,7 +1119,6 @@ Přelyź na zajta [[Special:NewFiles|galeryje nowych plikůw]], coby uobejzdře
* Mjano wćepywanygo plika: '''<tt>[[:$1]]</tt>'''
* Mjano plika kery juž sam je: '''<tt>[[:$2]]</tt>'''
Wybjer proša inkše mjano.",
-'fileexists-thumb' => "<center>'''Istniejůnco grafika'''</center>",
'fileexists-thumbnail-yes' => "Zdowo śe co tyn plik je půmńijšůnům wersyjom grafiki ''(mińjaturkom)''. [[$1|thumb]]
Uobejřij plik: '''<tt>[[:$1]]</tt>'''.
Jak to je ta sama grafika, ino wjelgo, ńy muśiš juž jei sam zaś wćepywać.",
@@ -1213,7 +1138,6 @@ Idź nazod i wćepej tyn plik pod inkšym mjanym. [[File:$1|thumb|center|$1]]',
'uploaddisabled' => 'Wćepywanie sam plikůw je zawarte',
'uploaddisabledtext' => 'Wćepywańe plikůw je zawarte.',
'uploadscripted' => 'Tyn plik zawjyro kod HTML abo skrypt kery može zostać felerńe zinterpretowany bez přyglůndarka internetowo.',
-'uploadcorrupt' => 'Tyn plik je uškodzůny abo mo felerne rozšeřyńy. Proša sprawdźić plik i wćepać sam poprawno wersja.',
'uploadvirus' => 'W tym pliku je wirus! Ščygůuy: $1',
'sourcefilename' => 'Mjano oryginalne:',
'destfilename' => 'Mjano docylowe:',
@@ -1240,6 +1164,7 @@ Rejer wyćepań tygo plika je podany půńižej, cobyś miou wygoda:",
'upload-curl-error28-text' => 'Zajta uodpowjado za powoli. Proša, sprawdź čy zajta dźauo, uodčekej pora minut i sprůbuj zaś. Možeš tyž sprůbować wončas kej zajta bydźe mńij uobćůnžůno.',
'license' => 'Licencyjo:',
+'license-header' => 'Licencyjo:',
'nolicense' => 'Ńy wybrano (naškryflej rynčńy!)',
'license-nopreview' => '(Podglůnd ńydostympny)',
'upload_source_url' => ' (poprowny, publičńy dostympny URL)',
@@ -1257,6 +1182,7 @@ Rejer wyćepań tygo plika je podany půńižej, cobyś miou wygoda:",
'listfiles_description' => 'Uopis',
# File description page
+'file-anchor-link' => 'Plik',
'filehist' => 'Gyszichta pliku',
'filehist-help' => 'Klikńij na data/čas, coby uobejřeć plik taki jak wtedy wyglůndou.',
'filehist-deleteall' => 'wyćep wszyske',
@@ -1280,12 +1206,7 @@ Dostympno je tyž [[Special:WhatLinksHere/$2|pouno lista]].',
'morelinkstoimage' => 'Pokož [[Special:WhatLinksHere/$1|wjyncy uodnośnikůw]] do tygo plika.',
'redirectstofile' => '{{PLURAL:$1|Nastympujůncy plik překerowuje|Nastympujůnce pliki překerowujům}} ku tymu plikowi:',
'duplicatesoffile' => '{{PLURAL:$1|Nastympujůncy plik je kopjům|Nastympujůnce pliki sům kopjůma}} tygo plika:',
-'sharedupload' => 'Tyn plik je wćepńynty na wspůlny serwer a inksze projekty tyż můgům go używać.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Wjyncyj informacyji znojdźeš we $1',
-'shareduploadwiki-desc' => 'Uopis kery je na $1 we wspůudźelůnych zasobach možeš uobejřeć půńižyj.',
-'shareduploadwiki-linktext' => 'zajte uopisu grafiki',
-'noimage' => 'Ńy mo sam plika uo takym mjańe, nale mogesz go sam $1.',
-'noimage-linktext' => 'wćepńij plik',
+'sharedupload' => 'Tyn plik je wćepńynty na wspůlny serwer a inksze projekty tyż můgům go używać.',
'uploadnewversion-linktext' => 'Wćepńij nowšo wersyjo tygo plika',
# File reversion
@@ -1373,8 +1294,8 @@ Zajta uznawano je za ujydnoznačńajůnco kej zawiyro šablůn uokreślůny we [
'brokenredirects' => 'Zuomane překerowańa',
'brokenredirectstext' => 'Překerowańo půńižej wskazujům na artikle kerych sam ńy ma.',
-'brokenredirects-edit' => '(sprowjéj)',
-'brokenredirects-delete' => '(wyćep)',
+'brokenredirects-edit' => 'sprowjéj',
+'brokenredirects-delete' => 'wyćep',
'withoutinterwiki' => 'Artikle bez interwiki',
'withoutinterwiki-summary' => 'Zajty půńižej ńy majům uodwouań do wersjůw w inkšych godkach.',
@@ -1610,7 +1531,7 @@ Možeš tyž zresetować wšyjstke flagi powjadůmjyń na swojej liśće zajtůw
--
Kejbyś chćou půmjyńić štalowańo swojej listy zajtůw, na kere dowoš pozůr, uodwjydź
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Pomoc:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1657,8 +1578,8 @@ Dej pozůr, bo jei wyćepańe może spowodować zakłůcyńo w pracy {{GRAMMAR:D
Kto inkszy zdůnżůł już to zrobić abo wprowadźił własne poprowki do treśći zajty.
Autorym ostatńygo pomjyńyńo je terozki [[User:$3|$3]] ([[User talk:$3|godka]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Sprowjyńe uopisano: „''$1''”.", # only shown if there is an edit comment
-'revertpage' => 'Wycofano sprowjyńe użytkowńika [[Special:Contributions/$2|$2]] ([[User talk:$2|godka]]). Autor prziwrůcůnej wersyji to [[User:$1|$1]].', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Sprowjyńe uopisano: „''$1''”.",
+'revertpage' => 'Wycofano sprowjyńe użytkowńika [[Special:Contributions/$2|$2]] ([[User talk:$2|godka]]). Autor prziwrůcůnej wersyji to [[User:$1|$1]].',
'rollback-success' => 'Wycofano sprowjyńa užytkowńika $1.
Přiwrůcůno uostatńo wersyja autorstwa $2.',
'sessionfailure' => 'Feler weryfikacyji zalůgowańo.
@@ -1681,7 +1602,6 @@ Coby přejřeć lista uobecńy zawartych zajtůw, přeńdź na zajta wykazu [[Sp
'protectexpiry' => 'Wygaso:',
'protect_expiry_invalid' => 'Čas wygaśńjyńćo je zuy.',
'protect_expiry_old' => 'Čas wygaśńjyńćo je w downiej ńiž terozki.',
-'protect-unchain' => 'Uodymknij možliwość přećiśńjyńcio artikla.',
'protect-text' => "Sam tukej možyš uobejžeć i pomjyńyć poźům zawarcia zajty '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ńy možeš půmjyńać poźůmůw zawarćo kej žeś sům je zawarty uod sprowjyń. Terozki štalowańa dla zajty '''$1''' to:",
'protect-locked-dblock' => "Ńy idźe půmjyńić poźůmu zawarća s kuli tygo co baza danych tyž je zawarto. Uobecne štalowańa dla zajty '''$1''' to:",
@@ -1707,7 +1627,7 @@ Coby přejřeć lista uobecńy zawartych zajtůw, přeńdź na zajta wykazu [[Sp
** Wojna edycyjno
** Wygupy',
'protect-edit-reasonlist' => 'Sprowjej powody zawarćo uod sprowjyń',
-'protect-expiry-options' => '2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tygodńy:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśency:6 months,1 rok:1 year,ńyskůńčůny:infińite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tygodńy:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśency:6 months,1 rok:1 year,ńyskůńčůny:infińite',
'restriction-type' => 'Pozwolyńy:',
'restriction-level' => 'Poźům:',
'minimum-size' => 'Min. wjelgość',
@@ -1788,7 +1708,7 @@ $1',
'contributions-title' => 'Wkłod użytkowńika $1',
'mycontris' => 'Uody mje sprowjane',
'contribsub2' => 'Do užytkowńika $1 ($2)',
-'nocontribs' => 'Brak pomjyńań uodpowjadajůncych tym kryterjům.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Brak pomjyńań uodpowjadajůncych tym kryterjům.',
'uctop' => '(uostatnio)',
'month' => 'Uod mjeśůnca (i downiyjše):',
'year' => 'Uod roku (i dowńijše):',
@@ -1797,6 +1717,9 @@ $1',
'sp-contributions-newbies-sub' => 'Dlo nowych užytkowńikůw',
'sp-contributions-newbies-title' => 'Wkłod nowych użytkowńików',
'sp-contributions-blocklog' => 'zawarća',
+'sp-contributions-deleted' => 'Wyćepane sprowjyńa użytkowńika',
+'sp-contributions-talk' => 'dyskusyjo',
+'sp-contributions-userrights' => 'Zařůndzańy prowami užytkowńikůw',
'sp-contributions-search' => 'Šnupej za wkuodym',
'sp-contributions-username' => 'Adres IP abo mjano užytkowńika',
'sp-contributions-submit' => 'Šnupej',
@@ -1847,7 +1770,7 @@ Podej powůd (np. umješčajůnc mjana zajtůw, na kerych dopuščůno śe wanda
'ipbenableautoblock' => 'Zawřij uostatńi adres IP tygo užytkowńika i autůmatyčńy wšyjstke kolejne, s kerych bydźe průbowou sprowjać zajty',
'ipbsubmit' => 'Zawřij uod sprowjyń tygo užytkowńika',
'ipbother' => 'Ikšy čas',
-'ipboptions' => '2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tygodńy:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśency:6 months,1 rok:1 year,ńyskůńčůny:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tygodńy:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśency:6 months,1 rok:1 year,ńyskůńčůny:infinite',
'ipbotheroption' => 'inkšy',
'ipbotherreason' => 'Inkšy powůd:',
'ipbhidename' => 'Schrůń mjano užytkowńika/adres IP w rejeře zawarć, na liśće aktywnych zawarć i liśće užytkowńikůw',
@@ -1893,7 +1816,6 @@ Přyńdź do [[Special:IPBlockList|listy zawartych adresůw IP]] coby přejřeć
'autoblocker' => 'Zawarto Ci sprowjyńo autůmatyčńy, bez tůž co užywaš tygo samygo adresu IP, co užytkowńik „[[User:$1|$1]]”.
Powůd zawarća $1 to: „$2”',
'blocklogpage' => 'Gyszichta zawjyrańo',
-'blocklog-fulllog' => 'Połny rejer zawarć',
'blocklogentry' => 'zawarto [[$1]], bydźe uodymkńynty: $2 $3',
'reblock-logentry' => 'půmjyńił sztalowańa zawarća uod sprowjyń lů [[$1]], czas zawarćo: $2 $3',
'blocklogtext' => "Půńižej znojdowo śe lista zawarć zouožůnych i zdjyntych s poščygůlnych adresůw IP.
@@ -1976,7 +1898,7 @@ W takiych razach tekst godki třa přećepać, a jak třeba to i pouůnčyć z t
'move-watch' => 'Dej pozůr',
'movepagebtn' => 'Přećiś artikel',
'pagemovedsub' => 'Přećiśńjyńće gotowe',
-'movepage-moved' => '\'\'\'"$1" přećiśńjynto ku "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" přećiśńjynto ku "$2"\'\'\'',
'articleexists' => 'Artikel s takym mjanym juž je, abo mjano je zue.
Wybjer inkše mjano.',
'cantmove-titleprotected' => 'Ńy možeš přećepnůńć zajty, bez tůž co jei nowe mjano je ńydozwolůne s kuli zabezpječyńo před utwořyńym',
@@ -2039,8 +1961,6 @@ Možeš tyž užyć linku, np.[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] do
'allmessagestext' => 'Uoto lista wšyjstkych kůmůńikatůw systymowych dostympnych w přestřyńi mjan MedjaWiki.
Uodwjydź [http://www.mediawiki.org/wiki/Localisation Tuůmačyńy MediaWiki] a tyž [http://translatewiki.net translatewiki.net] kejbyś chćou učestńičyć w tuůmačyńu uoprůgramowańo MediaWiki.',
'allmessagesnotsupportedDB' => "Ta zajta ńy može być užyta, bez tůž co zmjynna '''\$wgUseDatabaseMessages''' je wůuůnčůno.",
-'allmessagesfilter' => 'Filter mjan kůmuńikatůw:',
-'allmessagesmodified' => 'Pokož ino zmodyfikowane',
# Thumbnails
'thumbnail-more' => 'Powjynkš',
@@ -2167,7 +2087,7 @@ Dozwalo na naszkryflańy powodu we uopiśe půmjyńań.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anůńimowy użytkowńik|Anůńimowe użytkowńiki}} {{SITENAME}}',
'siteuser' => 'Užytkowńik {{GRAMMAR:D.lp|{{SITENAME}}}} – $1',
-'lastmodifiedatby' => 'Uostatńy sprowjyńy tej zajty: $2, $1 (autor půmjyńań: $3)', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Uostatńy sprowjyńy tej zajty: $2, $1 (autor půmjyńań: $3)',
'othercontribs' => 'Inkše autory: $1.',
'others' => 'inkśi',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|użytkowńik|użytkowńiki}} $1',
@@ -2199,6 +2119,17 @@ Nojprawdopodobńij zostoło to spowodowane bez link do zewnyntrznyj zajty intern
'mw_math_modern' => 'HTML – zalecane do nowych přyglůndarek',
'mw_math_mathml' => 'MathML jak dostympny (eksperymyntalne)',
+# Math errors
+'math_failure' => 'Parser ńy můg rozpoznać',
+'math_unknown_error' => 'ńyznany feler',
+'math_unknown_function' => 'ńyznano funkcyjo',
+'math_lexing_error' => 'feler leksera',
+'math_syntax_error' => 'felerno skuadńa',
+'math_image_error' => 'kůnwersyjo do formatu PNG ńy powjodua śe; uobadej, eli poprawńy zainštalowane sům lotex, dvips, gs i convert',
+'math_bad_tmpdir' => 'Ńy idźe utwořić abo naškryflać w tymčasowym katalůgu do wzorůw matymatyčnych',
+'math_bad_output' => 'Ńy idźe utwořić abo naškryflać we wyjśćowym katalůgu do wzorůw matymatyčnych',
+'math_notexvc' => 'Ńy ma sam texvc; zapoznej śe z math/README w celu kůnfiguracyje.',
+
# Patrolling
'markaspatrolleddiff' => 'uoznoč sprawjyńy kej „sprawdzůne”',
'markaspatrolledtext' => 'Uoznoč tyn artikel kej „sprawdzůny”',
@@ -2232,9 +2163,6 @@ $1',
'previousdiff' => '← Popředńy sprowjyńy',
'nextdiff' => 'Nostympne sprowjyńy →',
-# Visual comparison
-'visual-comparison' => 'Porůwnańy treśći',
-
# Media information
'mediawarning' => "'''Pozůr!''' Tyn plik može zawjerać zuośliwy kod. Jak go uodymkńyš možeš zaraźić swůj systym.",
'imagemaxsize' => 'Na zajtach uopisu plikůw uůgrańič rozmjar uobrazkůw do:',
@@ -2278,7 +2206,7 @@ Nostympne linki w lińii uwažůmy za wyjůntki, to sům nazwy zajtůw, kaj plik
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Šyrokość',
@@ -2405,14 +2333,14 @@ Nostympne linki w lińii uwažůmy za wyjůntki, to sům nazwy zajtůw, kaj plik
'exif-unknowndate' => 'ńyznano data',
-'exif-orientation-1' => 'normalno', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'odbiće we źřadle w poźůmje', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'uobroz uobrůcůny uo 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'uodbiće we źřadle w pjůńy', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'uobroz uobrůcůny uo 90° přećiwńy do ruchu wskazůwek zygora i uodbiće we źřadle w pjůńy', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'uobroz uobrůcůny uo 90° zgodńy s ruchym wskazůwek zygora', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'uobrůt uo 90° zgodńy ze wskazůwkůma zygora i uodbiće we źřadle w pjůńy', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'uobrůt uo 90° přećiwńy do wskazůwek zygora', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'normalno',
+'exif-orientation-2' => 'odbiće we źřadle w poźůmje',
+'exif-orientation-3' => 'uobroz uobrůcůny uo 180°',
+'exif-orientation-4' => 'uodbiće we źřadle w pjůńy',
+'exif-orientation-5' => 'uobroz uobrůcůny uo 90° přećiwńy do ruchu wskazůwek zygora i uodbiće we źřadle w pjůńy',
+'exif-orientation-6' => 'uobroz uobrůcůny uo 90° zgodńy s ruchym wskazůwek zygora',
+'exif-orientation-7' => 'uobrůt uo 90° zgodńy ze wskazůwkůma zygora i uodbiće we źřadle w pjůńy',
+'exif-orientation-8' => 'uobrůt uo 90° přećiwńy do wskazůwek zygora',
'exif-planarconfiguration-1' => 'format masywny',
'exif-planarconfiguration-2' => 'format powjeřchńowy',
@@ -2534,7 +2462,7 @@ Nostympne linki w lińii uwažůmy za wyjůntki, to sům nazwy zajtůw, kaj plik
'exif-gpsmeasuremode-2' => 'dwuwymjarowy',
'exif-gpsmeasuremode-3' => 'trůjwymjarowy',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'kilometrůw na godzina',
'exif-gpsspeed-m' => 'mil na godzina',
'exif-gpsspeed-n' => 'wynzuůw',
@@ -2682,7 +2610,7 @@ Možeš tyž [[Special:Watchlist/edit|užyć standardowygo edytora]].',
'duplicate-defaultsort' => 'Pozůr: Domyślnym kluczym sortowańo bydźe "$2" a zastůmpi uůn wcześńij wystympujůncy klucz "$1".',
# Special:Version
-'version' => 'Wersjo', # Not used as normal message but as header for the special page itself
+'version' => 'Wersjo',
'version-extensions' => 'Zainstalowane rozšeřyńa',
'version-specialpages' => 'Szpecjalne zajty',
'version-parserhooks' => 'Haki analizatora skuadńi (ang. parser hooks)',
@@ -2696,7 +2624,7 @@ Možeš tyž [[Special:Watchlist/edit|užyć standardowygo edytora]].',
'version-skin-extension-functions' => 'Fůnkcyje rozšeřyń skůrek',
'version-hook-name' => 'Mjano haka (ang. hook name)',
'version-hook-subscribedby' => 'Zapotřebowany bez',
-'version-version' => 'Wersjo',
+'version-version' => '(Wersjo $1)',
'version-license' => 'Licencjo',
'version-software' => 'Zainstalowane uoprůgramowańy',
'version-software-product' => 'Mjano',
diff --git a/languages/messages/MessagesTa.php b/languages/messages/MessagesTa.php
index bb9ffa24..cbdb834e 100644
--- a/languages/messages/MessagesTa.php
+++ b/languages/messages/MessagesTa.php
@@ -16,6 +16,7 @@
* @author Ulmo
* @author Urhixidur
* @author לערי ריינהארט
+ * @author බිඟුවා
*/
$namespaceNames = array(
@@ -78,6 +79,7 @@ $messages = array(
'tog-enotifminoredits' => 'பக்கங்களுக்கான சிறு தொகுப்புக்கள் குறித்தும் எனக்கு மின்னஞ்சல் செய்யவும்',
'tog-enotifrevealaddr' => 'அறிவித்தல் மின்னஞ்சல்களில் எனது மின்னஞ்சல் முகவரியை வெளிப்படுத்து',
'tog-shownumberswatching' => 'கவனிக்கும் பயனர்களின் எண்ணிக்கையைக் காட்டவும்',
+'tog-oldsig' => 'நடப்பு கையொப்பத்தின் முன்தோற்றம்:',
'tog-fancysig' => 'வெற்றுக் கையொப்பம் (தானியங்கி இணைப்பின்றி)',
'tog-externaleditor' => 'இயல்பிருப்பாக வெளி தொகுப்பு மென்பொருளைப் பயன்படுத்து (இது நிபுணர்களுக்கு மட்டும், உங்கள் கணினியில் சிறப்பு அமைப்புகள் தேவைப்படும்)',
'tog-externaldiff' => 'வெளி வேறுபாட்டை இயல்பிருப்பாக பயன்படுத்து (இது நிபுணர்களுக்கு மட்டும், உங்கள் கணினியில் சிறப்பு அமைப்புகள் தேவைப்படும்)',
@@ -97,6 +99,12 @@ $messages = array(
'underline-never' => 'எப்போதுமில்லை',
'underline-default' => 'உலாவி இயல்பிருப்பு',
+# Font style option in Special:Preferences
+'editfont-style' => 'தொகுத்தல் பெட்டி எழுத்துரு:',
+'editfont-default' => 'உலாவி இயல்பிருப்பு',
+'editfont-sansserif' => 'சேன்சு-செரீஃப் எழுத்துரு',
+'editfont-serif' => 'செரிஃப் எழுத்துரு',
+
# Dates
'sunday' => 'ஞாயிறு',
'monday' => 'திங்கள்',
@@ -156,7 +164,7 @@ $messages = array(
'category-media-header' => '"$1" பகுப்பில் உள்ள ஊடகங்கள்',
'category-empty' => 'இப்பகுப்பில் தற்போது ஊடகங்கள் யாதும் இல்லை.',
'hidden-categories' => '{{PLURAL:$1|மறைக்கப்பட்ட பகுப்பு|மறைக்கப்பட்ட பகுப்புகள்}}',
-'hidden-category-category' => 'மறைக்கப்பட்ட பகுப்புகள்', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'மறைக்கப்பட்ட பகுப்புகள்',
'category-subcat-count' => '{{PLURAL:$2|இந்தப் பகுப்பின் கீழ் பினவரும் ஒரு துணைப் பகுப்பு மட்டுமே உள்ளது.|இந்தப்பகுப்பின் கீழ் உள்ள $2 துணைப் பகுப்புகளில் பின்வரும் {{PLURAL:$1|துணைப்பகுப்பும் உள்ளது.|$1 துணைப்பகுப்புகளும் உள்ளன.}}}}',
'category-subcat-count-limited' => 'இந்தப் பகுப்பின் கீழ் பினவரும் {{PLURAL:$1|ஒரு துணைப் பகுப்பு மட்டுமே உள்ளது.|$1 துணைப் பகுப்புகள் உள்ளன.}}',
'category-article-count' => '{{PLURAL:$2|இந்தப் பகுப்பின் கீழ் பினவரும் பக்கம் மட்டுமே உள்ளது.|இந்தப்பகுப்பின் கீழ் உள்ள $2 பக்கங்களில் பின்வரும் {{PLURAL:$1|பக்கமும் உள்ளது.|$1 பக்கங்களும் உள்ளன.}}}}',
@@ -174,10 +182,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ மிடியாவிக்கி பொதுவான கேள்விகள்]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce மீடியாவிக்கி வெளியீடு மின்னஞ்சல் பட்டியல்]',
-'about' => 'விபரம்',
-'article' => 'உள்ளடக்கப் பக்கம்',
-'newwindow' => '(புதிய சாளரத்துள் திறக்கும்)',
-'cancel' => 'விடு',
+'about' => 'விபரம்',
+'article' => 'உள்ளடக்கப் பக்கம்',
+'newwindow' => '(புதிய சாளரத்துள் திறக்கும்)',
+'cancel' => 'விடு',
+'moredotdotdot' => 'மேலும்...',
+'mypage' => 'எனது பக்கம்',
+'mytalk' => 'என் பேச்சு',
+'anontalk' => 'இந்த ஐ.பி. முகவரிக்கான பேச்சு',
+'navigation' => 'வழிசெலுத்தல்',
+'and' => '&#32;மற்றும்',
+
+# Cologne Blue skin
'qbfind' => 'தேடு',
'qbbrowse' => 'உலவு',
'qbedit' => 'தொகு',
@@ -185,15 +201,32 @@ $messages = array(
'qbpageinfo' => 'பக்கத் தகவல்கள்',
'qbmyoptions' => 'என் விருப்பத்தேர்வுகள்',
'qbspecialpages' => 'சிறப்புப் பக்கங்கள்',
-'moredotdotdot' => 'மேலும்...',
-'mypage' => 'எனது பக்கம்',
-'mytalk' => 'என் பேச்சு',
-'anontalk' => 'இந்த ஐ.பி. முகவரிக்கான பேச்சு',
-'navigation' => 'வழிசெலுத்தல்',
-'and' => '&#32;மற்றும்',
-
-# Metadata in edit box
-'metadata_help' => 'மேல்நிலைத் தரவு:',
+'faq' => 'அடிக்கடி கேட்கப்படும் கேள்விகள்',
+'faqpage' => 'Project:அடிக்கடி கேட்கப்படும் கேள்விகள்',
+
+# Vector skin
+'vector-action-addsection' => 'தலைப்பைச் சேர்',
+'vector-action-delete' => 'நீக்கவும்',
+'vector-action-move' => 'நகர்த்தவும்',
+'vector-action-protect' => 'காக்கவும்',
+'vector-namespace-category' => 'பகுப்பு',
+'vector-namespace-help' => 'உதவிப் பக்கம்',
+'vector-namespace-image' => 'கோப்பு',
+'vector-namespace-main' => 'பக்கம்',
+'vector-namespace-media' => 'ஊடகப் பக்கம்',
+'vector-namespace-mediawiki' => 'தகவல்',
+'vector-namespace-project' => 'திட்டப் பக்கம்',
+'vector-namespace-special' => 'சிறப்புப் பக்கம்',
+'vector-namespace-talk' => 'உரையாடல்',
+'vector-namespace-template' => 'வார்ப்புரு',
+'vector-namespace-user' => 'பயனர் பக்கம்',
+'vector-view-create' => 'உருவாக்கவும்',
+'vector-view-edit' => 'தொகுக்கவும்',
+'vector-view-history' => 'வரலாற்றைக் காட்டவும்',
+'vector-view-view' => 'வாசிக்கவும்',
+'vector-view-viewsource' => 'மூலத்தைக் காட்டவும்',
+'actions' => 'செயல்கள்',
+'namespaces' => 'பெயர்வெளிகள்',
'errorpagetitle' => 'தவறு',
'returnto' => '$1 பக்கத்துக்குத் திரும்பு.',
@@ -243,18 +276,22 @@ $messages = array(
'otherlanguages' => 'ஏனைய மொழிகள்',
'redirectedfrom' => '($1 இலிருந்து மீள் வழிப்படுத்தப்பட்டது)',
'redirectpagesub' => 'பக்கவழிமாற்றுப் பக்கம்',
-'lastmodifiedat' => 'இப்பக்கத்தை கடைசியாக $1, $2 மணிக்குத் திருத்தினோம்.', # $1 date, $2 time
+'lastmodifiedat' => 'இப்பக்கத்தை கடைசியாக $1, $2 மணிக்குத் திருத்தினோம்.',
'viewcount' => 'இப்பக்கம் {{PLURAL:$1|ஒரு முறை|$1 முறைகள்}} அணுகப்பட்டது.',
'protectedpage' => 'பாதுகாக்கப்பட்ட பக்கம்',
'jumpto' => 'தாவிச் செல்லவும்:',
'jumptonavigation' => 'வழிசெலுத்தல்',
'jumptosearch' => 'தேடுக',
+'view-pool-error' => 'பொறுத்தருள்க, அனைத்து வழங்கிகளும் தற்போது மிகுபயன்பாட்டில் உள்ளன.
+பல பயனர்கள் இப்பக்கத்தைப் பார்க்க விழைகின்றனர்.
+நீங்கள் மறுபடியும் இப்பக்கத்தை அணுக முயலும் முன் சற்றே பொறுக்கவும்.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} பற்றி',
'aboutpage' => 'Project:விபரம்',
'copyright' => 'உள்ளடக்கங்கள் $1 இன் கீழ் கிடைக்கின்றன.',
-'copyrightpagename' => '{{SITENAME}} பதிப்புரிமை',
'copyrightpage' => '{{ns:project}}:பதிப்புரிமை',
'currentevents' => 'தற்போதைய நிகழ்வுகள்',
'currentevents-url' => 'Project:நடப்பு நிகழ்வுகள்',
@@ -262,8 +299,6 @@ $messages = array(
'disclaimerpage' => 'Project:பொதுவான பொறுப்புத் துறப்புகள்',
'edithelp' => 'தொகுத்தலுக்கான உதவி',
'edithelppage' => 'Help:ஒருவர் பக்கமொன்றைத் தொகுப்பது எப்படி?',
-'faq' => 'அடிக்கடி கேட்கப்படும் கேள்விகள்',
-'faqpage' => 'Project:அடிக்கடி கேட்கப்படும் கேள்விகள்',
'helppage' => 'Help:உதவி',
'mainpage' => 'முதற் பக்கம்',
'mainpage-description' => 'முதற் பக்கம்',
@@ -341,10 +376,6 @@ MySQL பிழையை விளைவாக்கியது "<tt>$3: $4</tt
"$1"
செயலுக்குள்(function) இருந்து "$2".
MySQL returned error "$3: $4".',
-'noconnect' => 'மன்னிக்கவும்! இந்த விக்கி தளத்தில் தொழில் நுட்பப் பிரச்சனை ஏற்பட்டுள்ளது, தரவுத்தள வழங்கனுடன் தொடர்பு கொள்ளமுடியவில்லை.<br />
-$1',
-'nodb' => 'தரவுத்தள $1 தெரிவுசெய்ய முடியவில்லை',
-'cachederror' => 'கீழே இருப்பது கோரப்பட்ட பக்கத்தினுடைய ஒரு இடைமாற்று நகலாகும், இது நிகழ்நிலைக்குச் சரியாக இல்லாதிருக்கக் கூடும்.',
'laggedslavemode' => 'எச்சரிக்கை: இப்பக்கம் அண்மையில் இற்றைப்படுத்தப்படாமல் இருக்கலாம்.',
'readonly' => 'தரவுத்தளம் பூட்டப்பட்டுள்ளது',
'enterlockreason' => 'பூட்டுக்கான காரணத்தைத் தருக. பூட்டு எப்பொழுது திறக்கப்படும் என்பதையும் குறிப்பிடுக.',
@@ -365,7 +396,7 @@ $1',
'unexpected' => 'எதிர்பாராத பெறுமானம்: "$1"="$2".',
'formerror' => 'தவறு: படிவத்தை சமர்ப்பிக்க முடியவில்லை',
'badarticleerror' => 'இச்செயற்பாட்டை இப்பக்கத்தில் செயற்படுத்த முடியாது.',
-'cannotdelete' => 'குறிக்கப்பட்ட பக்கத்தையோ கோப்பையோ நீக்க முடியாது. (வேறு யாராலோ ஏற்கெனவே நீக்கப்பட்டிருக்கலாம்.)',
+'cannotdelete' => '"$1" பக்கத்தையோ கோப்பையோ நீக்க முடியாது. (வேறு யாராலோ ஏற்கெனவே நீக்கப்பட்டிருக்கலாம்.)',
'badtitle' => 'பழுதுள்ள தலைப்பு',
'badtitletext' => 'கோரப்பட்ட பக்கத்தின் தலைப்பு செல்லாது, வெறுமை, அல்லது பிழையாக இணைக்கப்பட்ட மொழிகளிடை அல்லது விக்கியிடைத் தலைப்பாகும்.',
'perfcached' => 'பின்வரும் தரவுகள் இடைமாற்றைக் கொண்டுள்ளன தரவுகள் நிகழ்நிலையிலில்லாமல் இருக்கலாம்.',
@@ -394,13 +425,11 @@ $1',
'virus-unknownscanner' => 'அறியப்படாத வைரசெதிர்ப்பு:',
# Login and logout pages
-'logouttitle' => 'பயனர் விடுபதிகை',
'logouttext' => "'''நீங்கள் இப்பொழுது விடுபதிகையில் உள்ளீர்கள்.'''
நீங்கள் தொடர்ந்தும் {{SITENAME}} தளத்தை அனனியாக பயன்படுத்தலாம், அல்லது [[Special:UserLogin|மீண்டும் புகுபதிகை]] அதே பயனராகவோ வேறு பயனராகவோ செய்யலாம். உங்கள் உலவியின் இடைமாற்று நீக்கப்படும் வரை சில பக்கங்கள் தொடர்ந்தும் புகுபதிகையில் உள்ளது போன்றே காட்சி தரும் என்பதைக் கவனிக்கவும்.",
'welcomecreation' => '==நல்வரவு, $1!==
உங்களுக்கான பயனர் கணக்கு உருவாக்கப்பட்டுள்ளது. உங்களுக்கேற்றவாறு [[Special:Preferences|{{SITENAME}} விருப்பத்தேர்வுகளை]] மாற்றிக் கொள்ள மறவாதீர்கள்.',
-'loginpagetitle' => 'பயனர் புகுபதிகை',
'yourname' => 'பயனர்பெயர்:',
'yourpassword' => 'உங்கள் கடவுச்சொல்',
'yourpasswordagain' => 'கடவுச்சொல்லைத் திரும்ப தட்டச்சிடுக:',
@@ -411,6 +440,7 @@ $1',
'nav-login-createaccount' => 'புகுபதிகை/பயனர் கணக்கு தொடக்கம்',
'loginprompt' => '{{SITENAME}} தளத்துக்கு புகுபதிகை செய்ய உங்கள் இணைய உலாவியின் ஞாபகிகளை செயற்படுத்த வேண்டும்.',
'userlogin' => 'புகுபதிகை/பயனர் கணக்கு தொடக்கம்',
+'userloginnocreate' => 'புகுபதிகை',
'logout' => 'விடுபதிகை',
'userlogout' => 'விடுபதிகை',
'notloggedin' => 'புகுபதிகையில் இல்லை',
@@ -422,24 +452,7 @@ $1',
'createaccountmail' => 'மின்னஞ்சல் மூலம்',
'badretype' => 'நீங்கள் பதிந்த கடவுச்சொல் பொருத்தமாக இல்லை.',
'userexists' => 'நீர் பதிந்த பயனர் பெயர் ஏற்கெனவே பாயன்பாட்டில் உள்ளது. அருள் கூர்ந்து வேறு பயனர் பெயரைத் தெரிவுச் செய்க.',
-'youremail' => 'உங்கள் மின்னஞ்சல்:',
-'username' => 'பயனர்பெயர்:',
-'uid' => 'பயனர் அடையாள எண்:',
-'prefs-memberingroups' => 'பின்வரும் {{PLURAL:$1|குழு|குழுக்களில்}} உறுப்பினர்:',
-'yourrealname' => 'உங்கள் உண்மைப் பெயர்:',
-'yourlanguage' => 'மொழி:',
-'yournick' => 'கையொப்பம்:',
-'badsig' => 'செல்லுபடியற்ற கையொப்பம் எச்.டி.எம்.எல். நிரலைச் சரி பார்க்கவும்.',
-'badsiglength' => 'புணைப்பெயர் நீளமானது.
-அது {{PLURAL:$1|ஒரு எழுத்தைக் கொண்டதாக|$1 எழுத்துக்களுக்குட்பட்டதா}} இருக்கவேண்டும்.',
-'yourgender' => 'பால்:',
-'gender-male' => 'ஆண்',
-'gender-female' => 'பெண்',
-'email' => 'மின்னஞ்சல்',
-'prefs-help-realname' => 'உண்மையான பெயர் கட்டாயமற்றது. நீங்கள் இதை கொடுத்தால் உங்கள் ஆக்கங்களுக்கான உரிப்பளிப்புகளின் போது இது பயன்படும்.',
'loginerror' => 'புகுபதிகைத் தவறு',
-'prefs-help-email' => 'மின்னஞ்சல் விருப்பத்தின் பேரில் ஆனால் உங்கள் கடவுச்சொல் உங்களுக்கு நினைவில்லையென்றால், புதிய கடவுச்சொல் ஒன்றை மின்னஞ்சல் மூலம் அனுப்ப வழிசெய்யும்.மேலும் உங்கள் பயனர் பக்கம் அல்லது பயனர் பேச்சுப் பக்கத்தில் இருந்து மற்ற பயனர்கள் உங்களுக்கு மின்னஞ்சல் அனுப்ப உதவும். எனினும் உங்கள் மின்னஞ்சல் முகவரி வெளிப்படுத்தப்பட மாட்டாது.',
-'prefs-help-email-required' => 'மின்னஞ்சல் முகவரி தேவை.',
'nocookiesnew' => '{{SITENAME}} தளத்துக்கான உங்கள் பயனர் கணக்கு உருவாக்கப்பட்டுள்ளது, ஆனால் நீங்கள் புகுபதிகை செய்யவில்லை. பயனர்களைப் புகுபதிகை செய்ய {{SITENAME}} தளம் ஞாபகிகளைப் (குக்கிகள்) பயன்படுத்துகிறது. நீங்கள் ஞாபகிகளைச் செயலற்றவையாக்கியுள்ளீர்கள். தயவுசெய்து அவற்றைச் செயற்படுத்தியப் பின் உங்கள் புதிய பயனர் பெயருடனும், கடவுச் சொல்லுடனும் புகுபதிகை செய்யுங்கள்.',
'nocookieslogin' => '{{SITENAME}} தளம் பயனர்களைப் புகுபதிகை செய்வதற்கு ஞாபகிகளைப் (குக்கிகள்) பயன்படுத்துகிறது. நீங்கள் ஞாபகிகளைச் செயலிழக்கச் செய்துள்ளீர்கள். தயவுசெய்து அவற்றைச் செயற்பாடுள்ளதாக்கித் திரும்பவும் முயலுங்கள்.',
'noname' => 'நீங்கள் கொடுத்த பயனர் பெயர் செல்லுபடியற்றது.',
@@ -448,9 +461,11 @@ $1',
'nosuchuser' => '"$1" பெயரில் பயனர் எவருமில்லை. எழுத்துப் பிழைகளைச் சரி பார்க்கவும், அல்லது [[Special:UserLogin/signup|புதிய பயனர் கணக்கொன்றை உருவாக்கவும்]].',
'nosuchusershort' => '"<nowiki>$1</nowiki>" என்ற பெயரில் பயனர் யாரும் இல்லை. நீங்கள் உள்ளிட்ட பெயரை சரி பார்க்கவும்.',
'nouserspecified' => 'நீங்கள் பயனர் பெயரொன்றை குறிப்பிட வேண்டும்.',
+'login-userblocked' => 'இப்பயனர் கணக்கு தடைசெய்யப்பட்டுள்ளது. புகுபதிகை அனுமதிக்கப்படவில்லை.',
'wrongpassword' => 'நீங்கள் கொடுத்த கடவுச்சொல் சரியல்ல. மீண்டும் முயற்சிக்கவும்.',
'wrongpasswordempty' => 'நீங்கள் வெற்றுக் கடவுச் சொல்லை அளித்திருக்கிறீர்கள். திரும்ப முயலவும்.',
'passwordtooshort' => 'உங்கள் கடவுச்சொல் மிகச் சிறியதாக உள்ளது. கடவுச்சொல்லில் குறைந்தது {{PLURAL:$1|1 எழுத்து |$1 எழுத்துக்களாவது}} இருக்க வேண்டும். மேலும் கடவுச்சொல் பயனர்பெயராக இருக்கக்கூடாது.',
+'password-name-match' => 'உங்கள் பயனர் பெயரிலிருந்து உங்கள் கடவுச்சொல் முற்றிலும் மாறுபட்டிருக்க வேண்டும்.',
'mailmypassword' => 'புதிய கடவுச் சொல்லொன்றை மின்னஞ்சல் செய்யவும்',
'passwordremindertitle' => '{{SITENAME}} தளத்திலிருந்தான கடவுச்சொல் நினைவூட்டல்',
'passwordremindertext' => 'யாரோ ஒருவர் (நீங்களாக இருக்கலாம், IP முகவரி $1 இலிருந்து)
@@ -460,6 +475,7 @@ $1',
வேறு யாராவது இவ்வேண்டுகோளை விடுத்திருந்தால் அல்லது உங்கள் கடவுச்சொல் நினைவுக்கு வந்திருந்து நீங்கள் கடவுச்சொல்லை மாற்ற விரும்பாவிட்டால் இம்மின்னஞ்சலைப் புறக்கணித்துவிட்டு உங்கள் பழைய கடவுச்சொல்லைத் தொடர்ந்து பயன்படுத்தலாம்.',
'noemail' => '"$1" பயனருக்கு மின்னஞ்சல் முகவரி எதுவும் பதியப்பட்டிருக்கவில்லை.',
+'noemailcreate' => 'ஒரு செல்லத்தக்க மின்னஞ்சல் முகவரியை நீங்கள் தரவேண்டும்.',
'passwordsent' => '"$1" பயனருக்கான மின்னஞ்சல் முகவரிக்கு ஒரு புதிய கடவுச்சொல் அனுப்பப்பட்டுள்ளது. பெற்றுக்கொண்டதும் தயவுசெய்து மீண்டும் புகுபதிகை செய்யவும்.',
'blocked-mailpassword' => 'உங்கள் ஐ.பி. முகவரி தடுக்கப்பட்டுள்ளது, விசம செயற்பாடுகளைத் தவிர்க்க கடவுச்சொல் மீட்புச் செயலியை நீங்கள் பயன்படுத்து அனுமதிக்கப்படவில்லை.',
'eauthentsent' => 'உறுதிப்படுத்தல் மின்னஞ்சலொன்று நீங்கள் கொடுத்த மின்னஞ்சல் முகவரிக்கு அனுப்பப் பட்டுள்ளது. மேலதிகமாக எந்த மின்னஞ்சலும் இந்த முகவரிக்கு அனுப்பப்படு முன்னர், மின்னலில் கொடுக்கப்பட்டுள்ள அறிவுறுத்தல்களின் படி, இம்மின்னஞ்சல் முகவரி உங்களுடையது என்பதை உறுதிப்படுத்தவும்.',
@@ -489,16 +505,13 @@ $1',
'retypenew' => 'புதிய கடவுச்சொல்லை மீண்டும் தட்டச்சிடு',
'resetpass_submit' => 'கடவுச்சொல்லை பதிவுசெய்து புகுபதிகை செய்',
'resetpass_success' => 'உங்களது கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டுள்ளது! உங்களை புகுபதிகை செய்யப்படுகிறது...',
-'resetpass_bad_temporary' => 'செல்லுபடியற்ற தற்காலிக கடவுச்சொல். நீர் ஏற்கனவே வெற்றிகரமாக கடவுச்சொல்லை மாற்றியிருக்கலாம் அல்லது புதிய தற்காலிக கவவுச் சொல்லை கோறுக.',
'resetpass_forbidden' => 'கடவுச்சொற்கள் மாற்றப்பட முடியாது',
'resetpass-no-info' => 'இப்பக்கத்தை நேரடியாக அணுகுவதற்கு நீங்கள் புகுபதிகை செய்திருக்கவேண்டும்.',
'resetpass-submit-loggedin' => 'கடவுச்சொல்லை மாற்று',
+'resetpass-submit-cancel' => 'விடு',
'resetpass-wrong-oldpass' => 'செல்லுபடியற்ற தற்காலிகமான அல்லது நடப்புக் கடவுச்சொல்.
உங்கள் கடவுச் சொல்லை நீங்கள் வெற்றிகரமாக மாற்றிவிட்டீர்கள் அல்லது புதிய தற்காலிகக் கடவுச்சொல்லைக் கோரியுள்ளீர்கள்.',
'resetpass-temp-password' => 'தற்காலிக கடவுச்சொல்:',
-'resetpass-log' => 'கடவுச்சொல் மாற்றல் பதிகை',
-'resetpass-logentry' => '$1 க்குக் கடவுச்சொல் மாற்றப்பட்டது',
-'resetpass-comment' => 'கடவுச்சொல் மாற்றத்துக்கான காரணம்:',
# Edit page toolbar
'bold_sample' => 'தடித்த எழுத்துக்கள்',
@@ -567,7 +580,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'blockededitsource' => "'''$1''' பக்கத்துக்கான '''உங்கள் தொகுப்புகள்''' கீழே கொடுக்கப்பட்டுள்ளன:",
'whitelistedittitle' => 'தொகுப்பதற்கு புகுபதிகை செய்யப்படவேண்டும்.',
'whitelistedittext' => 'நீங்கள் பக்கங்களத் தொகுக்க $1 செய்யவேண்டும்.',
-'confirmedittitle' => 'தொகுப்புக்கு மின்னஞ்சல் உறுதிப்படுத்தப்பட வேண்டும்',
'confirmedittext' => 'நீங்கள் பக்கங்களைத் தொகுக்க முன்னர் மின்னஞ்சல் முகவரியை உறுதிப்படுத்த வேண்டும். உங்கள் [[Special:Preferences|விருப்பத்தேர்வுகள்]] பக்கத்தில் செல்லுபடியான மின்னஞ்சலைக் கொடுத்து அதனை உறுதிப்படுத்துங்கள்.',
'nosuchsectiontitle' => 'அப்படியொரு பகுதி கிடையாது',
'nosuchsectiontext' => 'நீங்கள் நடப்பு நிலையில் இல்லாத பகுதியொன்றைத் தொகுக்க முயற்சித்துள்ளீர்கள்.',
@@ -582,13 +594,15 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
நீங்கள் ஒரு முகவரியற்ற பயனராயிருந்து, தொடர்பற்ற கருத்துக்கள் உங்களைக் குறித்துச் சொல்லப்பட்டிருப்பதாக நீங்கள் உணர்ந்தால், முகவரியற்ற ஏனைய பயனர்களுடனான குழப்பங்களை எதிர்காலத்தில் தவிர்ப்பதற்கு, தயவுசெய்து [[Special:UserLogin/signup|புதிய கணக்கொன்றை ஏற்படுத்துங்கள்]] அல்லது [[Special:UserLogin|புகுபதிகை]] செய்யுங்கள்.''",
'noarticletext' => 'இப் பக்கத்தில் தற்பொழுது உள்ளடக்கம் எதுவுமில்லை. நீங்கள் இப்பக்க [[Special:Search/{{PAGENAME}}|தலைப்பை வேறு பக்கங்களில் தேடவோ]] அல்லது [{{fullurl:{{FULLPAGENAME}}|action=edit}} இப்பக்கத்தை தொகுக்கவோ] முடியும்.',
'userpage-userdoesnotexist' => '"$1" என்றக் கணக்கு இன்னமும் பதிவுச் செய்யப்படவில்லை. இதை உருவாக்க/தொகுக்க வேண்டுமா என்பதை உறுதிப்படுத்தவும்.',
+'userpage-userdoesnotexist-view' => 'பயனர் கணக்கு "$1" பதியப்படவில்லை',
'clearyourcache' => "'''கவனிக்க - சேமித்த பின்னர், நீங்கள் செய்த மாற்றங்களைக் காண்பதற்கு உங்கள் உலவியின் இடைமாற்று அகற்றப்பட வேண்டும்.'''
'''மொஸில்லா / பயர்பாக்ஸ் / சபாரி:''' ''Shift+Reload'', அல்லது ''Ctrl-F5'' அல்லது ''Ctrl-R''
( மசிண்டோஷில் ''Command-R'');
'''கொன்குவெரர்: ''' ''Reload'' அல்லது ''F5'';
'''ஒபேரா:''' ''Tools → Preferences'' இல் இடைமாற்றை அகற்றவும்;
'''இண்டர்நெட் எக்ஸ்ப்ளோரர்:''' ''Ctrl-Refresh'' அல்லது ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''உதவி:'''உங்களது சி.எஸ்.எஸ்/ஜெ.எஸ். ஐ சேமிக்கு முன்னதாக 'முன்தோற்றத்தைக் காட்டு' பொத்தானைப் பயனபடுத்தவும்",
+'usercssyoucanpreview' => "'''உதவி:'''உங்களது சி.எஸ்.எஸ்/ஜெ.எஸ். ஐ சேமிக்கு முன்னதாக 'முன்தோற்றத்தைக் காட்டு' பொத்தானைப் பயனபடுத்தவும்",
+'userjsyoucanpreview' => "'''உதவி:'''உங்களது சி.எஸ்.எஸ்/ஜெ.எஸ். ஐ சேமிக்கு முன்னதாக 'முன்தோற்றத்தைக் காட்டு' பொத்தானைப் பயனபடுத்தவும்",
'usercsspreview' => "'''உங்களது பயனர் சி.எஸ்.எஸ். இன் முன் தோற்றத்தை மட்டுமே காண்கிறீர்கள் என்பதை நினைவில் கொள்ளவும்.'''
'''இது இன்னமும் சேமிக்கப்படவில்லை!'''",
'userjspreview' => "'''நீர் உமது ஜாவா நிரலை சோதிக்கிறீர் அல்லது முன் தோற்றத்தைப் பார்க்கிறீர் என்பதை நினைவக்கவும், இன்னமும் சேமிக்கப்படவில்லை!'''",
@@ -632,8 +646,8 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'semiprotectedpagewarning' => "'''குறிப்பு:''' புகுபதிகை செய்த பயனர்கள் மட்டும் தொகுக்கக் கூடியவகையில் இப்பக்கம் காக்கப்பட்டுள்ளது.",
'cascadeprotectedwarning' => 'எச்சரிக்கை: படிநிலைக் காப்புக்குட்படுத்தப்பட்ட பின்வரும் {{PLURAL:$1|பக்கத்தில்|பக்கங்களில்}} இணைக்கப்பட்டுள்ளமையால் முறைமை செயற்படுத்துனர் (நிர்வாகி) அனுமதியுள்ள பயனர்கள் மட்டுமே தொகுக்ககூடிய வகையில் இப்பக்கம் பூட்டப்பட்டுள்ளது:',
'titleprotectedwarning' => "'''எச்சரிக்கை: இப்பக்கம் சில பயனர்களால் மட்டுமே தொகுக்கக் கூடிய வகையில் பூட்டப்பட்டுள்ளது.'''",
-'templatesused' => 'இப்பக்கத்தில் பயன்படுத்தப்பட்டுள்ள வார்ப்புருக்கள்:',
-'templatesusedpreview' => 'இம்முன்தோற்றத்தில் பயன்படுத்தப்பட்டுள்ள வார்ப்புருக்கள்:',
+'templatesused' => 'இப்பக்கத்தில் பயன்படுத்தப்பட்டுள்ள {{PLURAL:$1|வார்ப்புரு|வார்ப்புருக்கள்}}:',
+'templatesusedpreview' => 'இம்முன்தோற்றத்தில் பயன்படுத்தப்பட்டுள்ள {{PLURAL:$1|வார்ப்புரு|வார்ப்புருக்கள்}}:',
'templatesusedsection' => 'இப்பகுதியில் பயன்படுத்தப்பட்டுள்ள வார்ப்புருக்கள்:',
'template-protected' => '(காக்கப்பட்டது)',
'template-semiprotected' => '(பகுதியாகக் காக்கப்பட்டது)',
@@ -645,11 +659,10 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'permissionserrors' => 'அனுமதி தவறுகள்',
'permissionserrorstext' => 'பின்வரும் {{PLURAL:$1|காரணத்துக்காக|காரணங்களுக்காக}} நீங்கள் அதைச் செய்ய முடியாது:',
'permissionserrorstext-withaction' => 'பின்வரும் {{PLURAL:$1|காரணம்|காரணங்களுக்காக}} $2 க்கு உங்களுக்கு அநுமதி கிடையாது:',
-'recreate-deleted-warn' => "'''எச்சரிக்கை: ஏற்கனவே நீக்கப்பட்ட பக்கமொன்றை மீண்டும் தொடங்க விழைகிறீர்கள்.'''
+'recreate-moveddeleted-warn' => "'''எச்சரிக்கை: ஏற்கனவே நீக்கப்பட்ட பக்கமொன்றை மீண்டும் தொடங்க விழைகிறீர்கள்.'''
இப்பக்கத்தை தொடர்ந்து தொகுப்பது தகுமா என்பதை கருத்திற் கொள்ளவும்.
உங்கள் வசதிக்காக முன்பிருந்த பக்கத்துக்கான நீக்கல் பதிவு இங்கே தரப்பட்டுள்ளது:",
-'deletelog-fulllog' => 'முழு பதிவையும் காண்க',
'edit-gone-missing' => 'இப்பக்கத்தை நிகழ்நிலைப் படுத்தமுடியவில்லை.
இது நீக்கப்பட்டதாக இருக்கலாம்.',
'edit-conflict' => 'முரண்பாடுகளைத் தொகுக்கவும்.',
@@ -679,8 +692,9 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'viewpagelogs' => 'இப்பக்கத்துக்கான பதிகைகளைப் பார்',
'nohistory' => 'இப் பக்கத்துக்குத் தொகுப்பு வரலாறு இல்லை.',
'currentrev' => 'நடைமுறையிலுள்ள திருத்தம்',
+'currentrev-asof' => '$1 இல் கடைசித் திருத்தம்',
'revisionasof' => '$1 இல் நிலவும் திருத்தம்',
-'revision-info' => '$2 பயனரால் செய்யப்பட்ட $1 அன்றிருந்தவாரான திருத்தம்', # Additionally available: $3: revision id
+'revision-info' => '$2 பயனரால் செய்யப்பட்ட $1 அன்றிருந்தவாரான திருத்தம்',
'previousrevision' => '←முந்தைய தொகுப்பு',
'nextrevision' => 'புதிய தொகுப்பு→',
'currentrevisionlink' => 'நடப்பிலுள்ள திருத்தம்',
@@ -693,7 +707,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
குறியீட்டு விளக்கம்: (நடப்பு) = நடைமுறையிலுள்ள பதிப்புடனான வேறுபாடு,
(கடைசி) = முந்திய பதிப்புடனான வேறுபாடு, சி = சிறு தொகுப்பு',
'history-fieldset-title' => 'வரலாற்றில் தேடவும்',
-'deletedrev' => '[நீக்கப்பட்டது]',
'histfirst' => 'மிகமுந்திய',
'histlast' => 'மிகப்பிந்திய',
'historysize' => '({{PLURAL:$1|1 பைட்டு|$1 பைட்டுகள்}})',
@@ -702,7 +715,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
# Revision feed
'history-feed-title' => 'திருத்த வரலாறு',
'history-feed-description' => 'விக்கியில் இப்பக்கத்துக்கான திருத்த வரலாறு',
-'history-feed-item-nocomment' => '$2 இல் $1', # user at time
+'history-feed-item-nocomment' => '$2 இல் $1',
'history-feed-empty' => 'நீங்கள் கோரியப் பக்கம் இல்லை.
இப்பக்கம் விக்கியில் நீக்கப்பட்டோ நகர்த்தப்பட்டோ இருக்கலாம்.
பொருத்தமான புதியப் பக்கங்களைத் [[Special:Search|இந்த விக்கியில் தேடவும்]].',
@@ -712,9 +725,9 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'rev-deleted-user' => '(பயனர் பெயர் நீக்கப்பட்டது)',
'rev-deleted-event' => '(பதிவு செயற்பாடு நீக்கப்பட்டது)',
'rev-deleted-text-permission' => 'இந்த பக்கத்திருத்தம் பொது பரணிலிருந்து நீக்கப்பட்டுள்ளது.
-இது தொடர்பான பதிவு [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} நீக்கல் பதிகையில்] காணப்படலாம்.',
+இது தொடர்பான பதிவு [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} நீக்கல் பதிகையில்] காணப்படலாம்.',
'rev-deleted-text-view' => 'இந்த பக்கத்திருத்தம் பொது பரணிலிருந்து நீக்கப்பட்டுள்ளது.
-{{SITENAME}} தளத்தின் நிர்வாகி என்ற வகையில் நீங்கள் அதைப் பார்க்கலாம் மேலும் இது தொடர்பான பதிவு [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} நீக்கல் பதிகையில்] காணப்படலாம்.',
+{{SITENAME}} தளத்தின் நிர்வாகி என்ற வகையில் நீங்கள் அதைப் பார்க்கலாம் மேலும் இது தொடர்பான பதிவு [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} நீக்கல் பதிகையில்] காணப்படலாம்.',
'rev-delundel' => 'காட்டு/மறை',
'revisiondelete' => 'திருத்தங்களை நீக்கு/மீட்டெடு',
'revdelete-nooldid-title' => 'செல்லுபடியற்ற இலக்குத் திருத்தம்',
@@ -728,12 +741,12 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
மேலதிக கட்டுப்பாடுகள் விதிகப்பட்டிருக்காத போது {{SITENAME}} தளத்தின் நீர்வாகிகள் மறைக்கப்பட்ட உள்ளடக்கங்களைப் பார்பதுடன் அவற்றை மீட்டெடுக்கவும் முடியும்.",
'revdelete-legend' => 'பார்வையியழுமைக் கட்டுப்பாடுகளை ஏற்படுத்துக',
'revdelete-hide-text' => 'திருத்த உரையை மறை',
+'revdelete-hide-image' => 'கோப்பின் உள்ளடக்கங்களை மறை',
'revdelete-hide-name' => 'செயற்பாட்டையும் இலக்கையும் மறை',
'revdelete-hide-comment' => 'தொகுப்புச் சுருக்கத்தை மறை',
'revdelete-hide-user' => 'தொகுப்பவரின் ஐ.பி./பயனர்பெயரை மறை',
'revdelete-hide-restricted' => 'இக்கட்டுப்பாடுகளை அதிகாரிகள் உட்பட எல்லோருக்கும் விதித்து இந்த இடைமுகத்தை முடக்குக',
'revdelete-suppress' => 'நிர்வாகிகள் உட்பட இனவரிடமிருந்தாக தரவுகளை அடக்கு',
-'revdelete-hide-image' => 'கோப்பின் உள்ளடக்கங்களை மறை',
'revdelete-unsuppress' => 'மீட்கப்பட்ட திருத்தங்கள் மீதான கட்டுப்பாடுகளை நீக்கு',
'revdelete-log' => 'காரணம்:',
'revdelete-submit' => 'தெரிவுச் செய்யப்பட்ட திருத்தம் மீது செயற்படுத்து',
@@ -753,6 +766,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'revdelete-unhid' => '$1 காட்டுக',
'revdelete-log-message' => '$2 {{PLURAL:$2|திருத்தத்திற்கு|திருத்தங்களிற்கு}} $1',
'logdelete-log-message' => '$2 {{PLURAL:$2|நிகழ்விற்கு|நிகழ்வுகளிற்கு}} $1',
+'revdelete-edit-reasonlist' => 'நீக்கல் காரணங்களைத் தொகு',
# Suppression log
'suppressionlog' => 'அடக்கல் பதிகை',
@@ -793,23 +807,8 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'difference' => '(திருத்தங்களுக்கிடையான வேறுபாடு)',
'lineno' => 'வரிசை $1:',
'compareselectedversions' => 'தெரிவு செய்யப்பட்ட பதிப்புக்களை ஒப்பிடவும்',
-'visualcomparison' => 'பார்வை ஒப்பீடு',
-'wikicodecomparison' => 'விக்கியுரை ஒப்பீடு',
'editundo' => 'மீளமை',
'diff-multi' => '({{PLURAL:$1|ஒரு இடைப்பட்ட திருத்தம்|$1 இடைப்பட்ட திருத்தங்கள்}} காட்டப்படவில்லை.)',
-'diff-movedto' => '$1 க்கு நகர்த்தப்பட்டுள்ளது',
-'diff-added' => '$1 சேர்க்கப்பட்டுவிட்டது',
-'diff-changedto' => '$1 க்கு மாற்றப்பட்டது',
-'diff-movedoutof' => '$1 இலிருந்து நகர்த்தப்பட்டது',
-'diff-removed' => '$1 நீக்கப்பட்டது',
-'diff-changedfrom' => '$1 இலிருந்து மாற்றப்பட்டது',
-'diff-src' => 'மூலம்',
-'diff-width' => 'அகலம்',
-'diff-height' => 'உயரம்',
-'diff-p' => "ஒரு '''பத்தி'''",
-'diff-i' => "'''சாய்வெழுத்து'''",
-'diff-big' => "'''பெரியது'''",
-'diff-del' => "'''நீக்கப்பட்டது'''",
# Search results
'searchresults' => 'தேடல் முடிவுகள்',
@@ -817,21 +816,22 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'searchresulttext' => '{{SITENAME}} தளத்தில் தேடுவது தொடர்பான மேலதிகத் தகவல்களுக்கு [[{{MediaWiki:Helppage}}|{{int:help}}]] பக்கத்தைப் பார்க்க.',
'searchsubtitle' => 'நீர் தேடியப் பக்கம் \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" இல் ஆரம்பிக்கும் அனைத்து பக்கங்கள்]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" இற்கு இணைப்பு உள்ள அனைத்து பக்கங்கள்]])',
'searchsubtitleinvalid' => 'நீர் தேடியப் பக்கம் "$1"',
-'noexactmatch' => "'''\"\$1\" என்றத் தலைப்பில் பக்கமெதுவுமில்லை.''' நீங்கள் [[:\$1|இப்பக்கத்தை உருவாக்கலாம்]].",
-'noexactmatch-nocreate' => "'''\"\$1\" என்றத் தலைப்புடைய பக்கமொன்று இல்லை.'''",
'toomanymatches' => 'அதிகளவான பொருத்தமான உருபடிகள் உள்ளன, உமது விசாரணையை மாற்றியமை',
'titlematches' => 'கட்டுரைத் தலைப்புப் பொருந்துகிறது',
'notitlematches' => 'ஒரு கட்டுரைத் தலைப்பும் பொருந்தவில்லை',
'textmatches' => 'கட்டுரை உரை பொருந்துகிறது',
'notextmatches' => 'கட்டுரை உரை எதுவும் பொருந்தவில்லை',
-'prevn' => 'முன் $1',
-'nextn' => 'அடுத்த $1',
+'prevn' => 'முன் {{PLURAL:$1|$1}}',
+'nextn' => 'அடுத்த {{PLURAL:$1|$1}}',
'prevn-title' => 'முன்னைய $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
-'viewprevnext' => '($1) ($2) ($3) பக்கங்களைப் பார்.',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) பக்கங்களைப் பார்.',
'searchmenu-legend' => 'தேடல் விருப்பு',
'searchmenu-exists' => "'''\"[[:\$1]]\" என்னும் பெயருடைய பக்கம் இந்த விக்கியில் உள்ளது'''",
'searchmenu-new' => "'''\"[[:\$1]]\" பக்கத்தை இந்த விக்கியில் உருவாக்கவும்!'''",
'searchhelp-url' => 'Help:உதவி',
+'searchprofile-articles' => 'உள்ளடக்கப் பக்கங்கள்',
+'searchprofile-project' => 'திட்டப் பக்கங்கள்',
+'searchprofile-images' => 'கோப்புகள்',
'searchprofile-images-tooltip' => 'கோப்புகளைத் தேடுக',
'searchprofile-everything-tooltip' => 'எல்லா உள்ளடக்கங்களிலும் தேடுக (பேச்சுப் பக்கங்கள் உட்பட)',
'search-result-size' => '$1 ({{PLURAL:$2|1 சொல்|$2 சொற்கள்}})',
@@ -850,7 +850,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'searchall' => 'அனைத்து',
'showingresults' => "'''$2''' இலிருந்து தொடங்கும் {{PLURAL:$1|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$1''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
'showingresultsnum' => "'''$2''' இலிருந்து தொடங்கும் {{PLURAL:$3|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$3''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
-'showingresultstotal' => "கீழ்வருவன {{PLURAL:$4|'''$3''' முடிவில் '''$1'''|'''$3''' முடிவுகளில் '''$1 - $2'''}}",
'nonefound' => "<strong>குறிப்பு</strong>:சில பெயர்வெளிகள் மட்டுமே இயல்பிருப்பாக தேடப்படும்.
அனைத்து உள்ளடக்கங்களையும் (பேச்சு பக்கங்கள், வார்புருகள் மற்றும் பல) காண ''all:'' என்பதை உங்கள் கேள்விக்கு முன்னொட்டி முயற்சிக்கவும் அல்லது விரும்பப்படும் பெயர்வெளியை முன்னொட்டியாக உபயோகிக்கவும்.",
@@ -863,33 +862,26 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'search-external' => 'வெளித்தேடல்',
'searchdisabled' => '{{SITENAME}} தளத்தின் தேடல் வசதிகள் தற்காலிகமாக முடக்கப்பட்டுள்ளது. அதுவரை நீங்கள் கீழேயுள்ள கூகிள் தேடலைப் பயன்படுத்தலாம். இது சில சமயம் இற்றைப்படுத்தப்படாததாய் இருக்கக்கூடும்.',
+# Quickbar
+'qbsettings' => 'விரைவுச் சட்ட அமைவுகள்',
+'qbsettings-none' => 'எதுவுமில்லை',
+'qbsettings-fixedleft' => 'நிலைத்த இடது',
+'qbsettings-fixedright' => 'நிலைத்த வலது',
+'qbsettings-floatingleft' => 'மிதப்பு இடது',
+'qbsettings-floatingright' => 'மிதப்பு வலது',
+
# Preferences page
'preferences' => 'விருப்பங்கள்',
'mypreferences' => 'என் விருப்பத்தேர்வுகள்',
'prefs-edits' => 'தொகுப்புகளின் எண்ணிக்கை:',
'prefsnologin' => 'புகுபதிகை செய்யப்படவில்லை',
-'prefsnologintext' => 'பயனர் விருப்பத்தேர்வுகளை அமைப்பதற்கு நீங்கள் <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} புகுபதிகை ]</span> செய்திருக்க வேண்டும்.',
-'prefsreset' => 'உங்கள் விருப்புகள் சேமிப்பிலிருந்து மீட்டமைக்கப்பட்டுள்ளன.',
-'qbsettings' => 'விரைவுச் சட்ட அமைவுகள்',
-'qbsettings-none' => 'எதுவுமில்லை',
-'qbsettings-fixedleft' => 'நிலைத்த இடது',
-'qbsettings-fixedright' => 'நிலைத்த வலது',
-'qbsettings-floatingleft' => 'மிதப்பு இடது',
-'qbsettings-floatingright' => 'மிதப்பு வலது',
+'prefsnologintext' => 'பயனர் விருப்பத்தேர்வுகளை அமைப்பதற்கு நீங்கள் <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} புகுபதிகை ]</span> செய்திருக்க வேண்டும்.',
'changepassword' => 'கடவுச்சொல்லை மாற்று',
-'skin' => 'தோல்',
+'prefs-skin' => 'தோல்',
'skin-preview' => 'முன்தோற்றம்',
-'math' => 'கணிதம்',
-'dateformat' => 'நாள் வடிவம்',
+'prefs-math' => 'கணிதம்',
'datedefault' => 'விருப்பத்தேர்வுகள் இல்லை',
-'datetime' => 'நாள் நேரம்',
-'math_failure' => 'பாகுபடுத்தல் தோல்வி',
-'math_unknown_error' => 'அறியப்படாத தவறு',
-'math_unknown_function' => 'அறியப்படாத செயற்பாடு',
-'math_lexing_error' => 'தொகுத்தல் (லெக்சிங்) தவறு',
-'math_syntax_error' => 'தொடரமைப்புத் தவறு',
-'math_bad_tmpdir' => 'தற்காலிக கணித அடைவை உருவாக்க அல்லது எழுத முடியவில்லை',
-'math_bad_output' => 'கணித அடைவை உருவாக்க அல்லது அதில் எழுத முடியவில்லை.',
+'prefs-datetime' => 'நாள் நேரம்',
'prefs-personal' => 'பயனர் தரவு',
'prefs-rc' => 'அண்மைய மாற்றங்கள்',
'prefs-watchlist' => 'கவனிப்புப் பட்டியல்',
@@ -901,7 +893,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'prefs-resetpass' => 'கடவுச்சொல்லை மாற்றுக',
'saveprefs' => 'சேமி',
'resetprefs' => 'சேமிக்காத மாற்றங்கள் நீக்குக',
-'textboxsize' => 'தொகுத்தல்',
+'prefs-editing' => 'தொகுத்தல்',
'rows' => 'நிரைகள்:',
'columns' => 'நிரல்கள்',
'searchresultshead' => 'தேடுக',
@@ -913,9 +905,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'recentchangescount' => 'அண்மைய மாற்றங்கள், வரலாறு மற்றும் பதிவு பக்கங்களில் காட்டப்படும் தொகுப்புகளின் எண்ணிக்கை:',
'savedprefs' => 'உங்கள் விருப்பத்தேர்வுகள் சேமிக்கப்பட்டுள்ளன.',
'timezonelegend' => 'நேர வலயம்',
-'timezonetext' => '¹வழங்கன் நேரத்துக்கும் (UTC) உங்கள் உள்ளூர் நேரத்துக்குமுள்ள வேறுபாட்டை மணிகளில் பதிக.',
'localtime' => 'உள்ளூர் நேரம்:',
-'timezoneselect' => 'நேர வலயம்:',
'timezoneoffset' => 'நேர இடைவெளி¹:',
'servertime' => 'வழங்கன் நேரம்:',
'guesstimezone' => 'உலாவியிலிருந்து நிரப்பு',
@@ -934,10 +924,27 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'prefs-namespaces' => 'பெயர்வெளிகள்',
'defaultns' => 'இயல்பிருப்பாக இந்தப் பெயர்வெளிகளில் தேடவும்:',
'default' => 'இயல்பிருப்பு',
-'files' => 'கோப்புகள்',
+'prefs-files' => 'கோப்புகள்',
+'youremail' => 'உங்கள் மின்னஞ்சல்:',
+'username' => 'பயனர்பெயர்:',
+'uid' => 'பயனர் அடையாள எண்:',
+'prefs-memberingroups' => 'பின்வரும் {{PLURAL:$1|குழு|குழுக்களில்}} உறுப்பினர்:',
+'yourrealname' => 'உங்கள் உண்மைப் பெயர்:',
+'yourlanguage' => 'மொழி:',
+'yournick' => 'கையொப்பம்:',
+'badsig' => 'செல்லுபடியற்ற கையொப்பம் எச்.டி.எம்.எல். நிரலைச் சரி பார்க்கவும்.',
+'badsiglength' => 'புணைப்பெயர் நீளமானது.
+அது {{PLURAL:$1|ஒரு எழுத்தைக் கொண்டதாக|$1 எழுத்துக்களுக்குட்பட்டதா}} இருக்கவேண்டும்.',
+'yourgender' => 'பால்:',
+'gender-male' => 'ஆண்',
+'gender-female' => 'பெண்',
+'email' => 'மின்னஞ்சல்',
+'prefs-help-realname' => 'உண்மையான பெயர் கட்டாயமற்றது. நீங்கள் இதை கொடுத்தால் உங்கள் ஆக்கங்களுக்கான உரிப்பளிப்புகளின் போது இது பயன்படும்.',
+'prefs-help-email' => 'மின்னஞ்சல் விருப்பத்தின் பேரில் ஆனால் உங்கள் கடவுச்சொல் உங்களுக்கு நினைவில்லையென்றால், புதிய கடவுச்சொல் ஒன்றை மின்னஞ்சல் மூலம் அனுப்ப வழிசெய்யும்.மேலும் உங்கள் பயனர் பக்கம் அல்லது பயனர் பேச்சுப் பக்கத்தில் இருந்து மற்ற பயனர்கள் உங்களுக்கு மின்னஞ்சல் அனுப்ப உதவும். எனினும் உங்கள் மின்னஞ்சல் முகவரி வெளிப்படுத்தப்பட மாட்டாது.',
+'prefs-help-email-required' => 'மின்னஞ்சல் முகவரி தேவை.',
# User rights
-'userrights' => 'பயனர் அனுமதி முகாமைத்துவம்', # Not used as normal message but as header for the special page itself
+'userrights' => 'பயனர் அனுமதி முகாமைத்துவம்',
'userrights-lookup-user' => 'பயனர்க் குழுக்களை நிர்வாகி',
'userrights-user-editname' => 'பயனர் பெயரொன்றை இடுக:',
'editusergroup' => 'பயனர் குழுக்களை தொகு',
@@ -1064,6 +1071,8 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
# Recent changes linked
'recentchangeslinked' => 'தொடர்பான மாற்றங்கள்',
+'recentchangeslinked-feed' => 'தொடர்பான மாற்றங்கள்',
+'recentchangeslinked-toolbox' => 'தொடர்பான மாற்றங்கள்',
'recentchangeslinked-title' => '"$1" பக்கத்துடன் தொடர்புடைய மாற்றங்கள்',
'recentchangeslinked-noresult' => 'குறித்த நேரத்தில் இப்பக்கத்துடன் இணைக்கப்பட்ட பக்கங்களில் மாற்றங்கள் ஏதுமில்லை.',
'recentchangeslinked-summary' => "இணைக்கப்பட்டப் பக்கங்களுக்கு (அல்லது பகுப்பொன்றின் அங்கத்தர்வர்களுக்கு) செய்யபட்ட அண்மைய மாற்றங்களை இச்சிறப்புப் பக்கம் பட்டியலிடுகிறது. [[Special:Watchlist|உங்கள் கவணிப்புப் பட்டியலில்]] உள்ளப் பக்கங்கள் '''தடித்த எழுத்துக்களில்''' உள்ளன.",
@@ -1072,7 +1081,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
# Upload
'upload' => 'கோப்பைப் பதிவேற்று',
'uploadbtn' => 'கோப்பைப் பதிவேற்று',
-'reupload' => 'மீளப் பதிவேற்று',
'reuploaddesc' => 'பதிவேற்றத்தை நிறுத்திவிட்டு பதிவேற்றும் படிவத்துக்கு மீளச் செல்க',
'uploadnologin' => 'புகுபதிகை செய்யப்படவில்லை',
'uploadnologintext' => 'கோப்புகளைப் பதிவேற்றம் செய்வதற்கு நீங்கள் [[Special:UserLogin|புகுபதிகை]] செய்திருக்க வேண்டும்.',
@@ -1119,7 +1127,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
* பதிவேற்றப்படும் கோப்பின் பெயர்: '''<tt>[[:$1]]</tt>'''
* ஏற்கனவே உள்ளக் கோப்பின் பெயர்: '''<tt>[[:$2]]</tt>'''
அருள் கூர்ந்து வேறு பெயரைத் தெரிவுச் செய்யவும்.",
-'fileexists-thumb' => "<center>'''ஏற்கனவே உள்ள படிமம்'''</center>",
'fileexists-thumbnail-yes' => "இந்தக் கோப்பு அளவில் சிறியதாக்கப்பட்ட படிமம் போலத் தோன்றுகிறது. [[$1|thumb]]
அருள் கூர்ந்து '''<tt>[[:$1]]</tt>''' கோப்பை ஒரு முறை பார்க்கவும்.
நீங்கள் பார்த படிமமும் பதிவேற்ற எத்தனிக்கும் படிமமு ஒன்றாயின் அதன் சிறிய படிமத்தை மீண்டும் பதிவேற்றத் தேவையில்லை.",
@@ -1136,7 +1143,6 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'uploaddisabled' => 'பதிவேற்றம் செயலிழக்கச் செய்யப்பட்டுள்ளது',
'uploaddisabledtext' => 'கோப்பு பதிவேற்றங்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன.',
'uploadscripted' => 'இந்தக் கோப்பு உலாவியால் பிழையாக விளங்கிக் கொள்ளக்கூடிய எச்.டி.எம்.எல். அல்லது வேறு நிரல்களைக் கொண்டுள்ளது.',
-'uploadcorrupt' => 'கோப்பு பழுதானது அல்லது பிழையான கோப்பு நீட்சியைக் கொண்டுள்ளது. அருள் கூர்ந்து கோப்பை ஒரு முறை சரிபார்த்துவிட்டு மீண்டும் பதிவேற்றவும்.',
'uploadvirus' => 'கோப்பு நச்சுநிரலைக் (வைரஸ்) கொண்டுள்ளது! விபரங்கள்:$1',
'sourcefilename' => 'மூலக் கோப்பின் பெயர்*',
'destfilename' => 'இலக்குக் கோப்பின் பெயர்:',
@@ -1162,6 +1168,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'upload-curl-error28-text' => 'இத்தளம் பதில் கொடுக்க நீண்ட நேரம் எடுத்தது. அருள் கூர்ந்து இணையத் தளம் செயல்படுகிறதா என்பதை பார்த்து மீண்டும் முயல்க. அல்லது இணைய நெரிசல் குறைவான நேரத்தில் முயலவும்',
'license' => 'அனுமதி:',
+'license-header' => 'அனுமதி:',
'nolicense' => 'தெரிவுச் செய்யப்படவில்லை',
'license-nopreview' => '(முன்தோற்றம் கையிலிருப்பில் இல்லை)',
'upload_source_url' => ' (செல்லுபடியான, இணைய முகவரி)',
@@ -1178,6 +1185,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'listfiles_description' => 'விளக்கம்',
# File description page
+'file-anchor-link' => 'கோப்பு',
'filehist' => 'கோப்பு வரலாறு',
'filehist-help' => 'குறித்த நேரத்தில் இருந்த படிமத்தைப் பார்க்க அந்நேரத்தின் மீது சொடுகவும்.',
'filehist-deleteall' => 'சகலதையும் நீக்கு',
@@ -1193,12 +1201,7 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'linkstoimage' => 'பின்வரும் {{PLURAL:$1|பக்க இணைப்புகள்|$1 பக்கங்கள் இணைப்பு}}
இப் படிமத்துக்கு இணைக்கபட்டுள்ளது(ளன):',
'nolinkstoimage' => 'இப் படிமத்துக்கு இணைக்கப்பட்டுள்ள பக்கங்கள் எதுவும் இல்லை.',
-'sharedupload' => 'இக்கோப்பு $1 இலிருந்தானது. ஏனைய திட்டங்களிலும் பயன்படுத்தப்படலாம்.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'மேலதிகத் தகவல்களுக்கு $1 பக்கத்தைப் பார்க்கவும்.',
-'shareduploadwiki-desc' => 'பகிரப்பட்ட ஊடகக் கிடங்கில் காணப்படும் $1 பக்கத்தைப் இங்கே கீழே காணலாம்.',
-'shareduploadwiki-linktext' => 'படிம விளக்கப்',
-'noimage' => 'இப்பெயருடைய கோப்பு எதுவும் இல்லை, ஆனால் நீங்கள் அதை $1.',
-'noimage-linktext' => 'ஒன்றை பதிவேற்றம் செய்',
+'sharedupload' => 'இக்கோப்பு $1 இலிருந்தானது. ஏனைய திட்டங்களிலும் பயன்படுத்தப்படலாம்.',
'uploadnewversion-linktext' => 'இப்படிமத்தின் புதிய பதிப்பை பதிவேற்று',
# File reversion
@@ -1268,8 +1271,8 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
'brokenredirects' => 'முறிந்த வழிமாற்றுகள்',
'brokenredirectstext' => 'பின்வரும் வழிமாற்றுகள் இல்லாத கட்டுரைகளுக்கு இணைப்புக் கொடுக்கின்றன:',
-'brokenredirects-edit' => '(தொகு)',
-'brokenredirects-delete' => '(நீக்கு)',
+'brokenredirects-edit' => 'தொகு',
+'brokenredirects-delete' => 'நீக்கு',
'withoutinterwiki' => 'பிற மொழி இணைப்பற்ற பக்கங்கள்',
'withoutinterwiki-summary' => 'பின்வரும் பக்கங்கள் வேறு மொழிப் பதிப்புக்களுக்கு இணைக்கப்படவில்லை:',
@@ -1473,7 +1476,7 @@ $NEWPAGE
--
உங்கள் கவனிப்புப் பட்டியல் அமைவுகளை மாற்ற
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
பின்னூட்டம், மேலதிக உதவிகளுக்கு:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1520,8 +1523,8 @@ $NEWPAGE
'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) பயனரால் செய்யப்பட்ட [[:$1]] இன் கடைசித் தொகுப்பை முன்நிலையாக்க முடியாது; வேறு யாரோ இப்பக்கத்தை ஏற்கெனவே தொகுத்தோ அல்லது முன்நிலையாக்கியோ உள்ளார்.
இப்பக்கத்தை கடைசியாகத் தொகுத்தவர் [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "தொகுப்புக்குரிய கருத்துரை: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|பேச்சு]]) செய்தத் தொகுப்புகள் நீக்கப்பட்டு [[User:$1|$1]] இன் பதிப்புக்கு முன்நிலையாக்கப்பட்டது', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "தொகுப்புக்குரிய கருத்துரை: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|பேச்சு]]) செய்தத் தொகுப்புகள் நீக்கப்பட்டு [[User:$1|$1]] இன் பதிப்புக்கு முன்நிலையாக்கப்பட்டது',
'rollback-success' => '$1 செய்தத் தொகுப்புகள் நீக்கப்பட்டு $2 இன் பதிப்புக்கு முன்நிலையாக்கப்பட்டது.',
'sessionfailure' => 'உங்கள் புகுபதிகை அமர்வில் பிரச்சினை உள்ளது போல தோன்றுகிறது. செல்வழி திருட்டுக் கெதிரான முன்னெச்செரிக்கையாக இந்த நடவடிக்கை இரத்துச் செய்யப்பட்டது. உங்கள் உலாவியின் பின் செல்வதற்கான பொத்தானைச் செருகி மீண்டும் முயலவும்.',
@@ -1538,7 +1541,6 @@ $NEWPAGE
'protectexpiry' => 'முடிவு நாள்:',
'protect_expiry_invalid' => 'பொருத்தமற்ற முடிவு நாள்',
'protect_expiry_old' => 'முடிவு நாள் கடந்தக் காலத்தில் உள்ளது.',
-'protect-unchain' => 'நகர்தல் அனுமதிகளை திறந்துவிடு',
'protect-text' => "நீங்கள் '''<nowiki>$1</nowiki>''' பக்கத்துக்கான காப்பு நிலையைப் பார்த்து அதனை மாற்ற முடியும்.",
'protect-locked-blocked' => "நீங்கள் தடுக்கப்பட்டுள்ள நிலையில் பக்க காப்பு நிலைகளை மாற்ற முடியாது. தற்போதை பக்க காப்பு நிலை பின்வருமாறு '''$1''':",
'protect-locked-dblock' => "தற்போதுள்ள தரவுத்தள பூட்டின் காரணமாக பக்க காப்பு நிலைகள் மாற்றப் படமுடியாது.
@@ -1554,7 +1556,7 @@ $NEWPAGE
'protect-expiring' => '$1 (UTC) மணிக்கு காலாவதியாகிறது',
'protect-cascade' => 'இப்பக்கத்தில் இணைக்கப்பட்ட பக்கங்களைக் காப்புச் செய் (படிநிலைக் காப்பு)',
'protect-cantedit' => 'இப்பக்கத்தின் காப்பு நிலையை நீங்கள் மாற்ற முடியாது. உங்களுக்கு காப்பு நிலையை தொகுப்பதற்கான அனுமதி கிடையாது.',
-'protect-expiry-options' => '2 மணித்தியாலங்கள்:2 hours,1 நாள்:1 day,3 நாட்கள்:3 days,1 வாரம்:1 week,2 வாரங்கள்:2 weeks,1 மாதம்:1 month,3 மாதங்கள்:3 months,6 மாதங்கள்:6 months,1 ஆண்டு:1 year,முடிவிலி:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 மணித்தியாலங்கள்:2 hours,1 நாள்:1 day,3 நாட்கள்:3 days,1 வாரம்:1 week,2 வாரங்கள்:2 weeks,1 மாதம்:1 month,3 மாதங்கள்:3 months,6 மாதங்கள்:6 months,1 ஆண்டு:1 year,முடிவிலி:infinite',
'restriction-type' => 'அனுமதி:',
'restriction-level' => 'தடை அளவு:',
'minimum-size' => 'குறைந்த அளவு',
@@ -1627,7 +1629,7 @@ $1',
'contributions-title' => '$1 இற்கான பயனர் பங்களிப்புகள்',
'mycontris' => 'என் பங்களிப்புக்கள்',
'contribsub2' => '$1 பயனரின் ($2)',
-'nocontribs' => 'இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.', # Optional parameter: $1 is the user name
+'nocontribs' => 'இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.',
'uctop' => '(மேல்)',
'month' => 'மாதம் உட்பட முந்தைய:',
'year' => 'ஆண்டு உட்பட முந்தைய:',
@@ -1635,6 +1637,8 @@ $1',
'sp-contributions-newbies' => 'புதிய கணக்குகளின் பங்களிப்புகளை மட்டும் காட்டு',
'sp-contributions-newbies-sub' => 'புதிய கணக்குகளுக்கு',
'sp-contributions-blocklog' => 'தடைப் பதிகை',
+'sp-contributions-talk' => 'பேச்சு',
+'sp-contributions-userrights' => 'பயனர் அனுமதி முகாமைத்துவம்',
'sp-contributions-search' => 'பங்களிப்புகளைத் தேடு',
'sp-contributions-username' => 'ஐ.பி. அல்லது பயனர் பெயர்:',
'sp-contributions-submit' => 'தேடுக',
@@ -1680,7 +1684,7 @@ $1',
'ipbenableautoblock' => 'தானியக்கமாக இப்பயனர் கடசியாகப் பயன்படுத்திய ஐ.பி. முகவரியையும் பங்களிக்க முயலும் ஐ.பி. முகவரிகளயும் தடைச் செய்',
'ipbsubmit' => 'இப் பயனரைத் தடு',
'ipbother' => 'வேறு நேரம்:',
-'ipboptions' => '2 மணித்தியாலங்கள்:2 hours,1 நாள்:1 day,3 நாட்கள்:3 days,1 வாரம்:1 week,2 வாரங்கள்:2 weeks,1 மாதம்:1 month,3 மாதங்கள்:3 months,6 மாதங்கள்:6 months,1 ஆண்டு:1 year,முடிவிலி:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 மணித்தியாலங்கள்:2 hours,1 நாள்:1 day,3 நாட்கள்:3 days,1 வாரம்:1 week,2 வாரங்கள்:2 weeks,1 மாதம்:1 month,3 மாதங்கள்:3 months,6 மாதங்கள்:6 months,1 ஆண்டு:1 year,முடிவிலி:infinite',
'ipbotheroption' => 'வேறு',
'ipbotherreason' => 'வேறு மேலதிக காரணம்:',
'ipbhidename' => 'தடைப் பதிகை, தற்போதைய தடுப்புகளின் பட்டியல், பயனர் பட்டியல் என்பவற்றிலிருந்து பயனர் பெயரை மறைக்கவும்',
@@ -1777,7 +1781,7 @@ $1',
'move-watch' => 'இப்பக்கத்தைக் கவனி',
'movepagebtn' => 'பக்கத்தை நகர்த்து',
'pagemovedsub' => 'நகர்த்தல் வெற்றி',
-'movepage-moved' => '\'\'\'"$1", "$2" என்ற தலைப்புக்கு நகர்த்தப் பட்டுள்ளது\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1", "$2" என்ற தலைப்புக்கு நகர்த்தப் பட்டுள்ளது\'\'\'',
'articleexists' => 'அந்தப் பெயரையுடைய பக்கம் ஏற்கெனவே உள்ளது அல்லது நீங்கள் தெரிவு செய்த பெயர் செல்லுபடியாகாது. தயவுசெய்து வேறு பெயரைத் தெரியவும்.',
'cantmove-titleprotected' => 'நீர் பக்கத்க்தை நகர்த்த எத்தனித்த தலைப்பு உருவாக்கப்படுவது தடை செய்யப்பட்டுமையால் அத்தலைப்புக்கு நகர்த்த முடியாது',
'talkexists' => 'பக்கம் வெற்றிகரமாக நகர்த்தப்பட்டது, ஆனால் பேச்சுப் பக்கத்தை நகர்த்த முடியவில்லை ஏனெனில் புதிய தலைப்பில் இன்னொன்று உள்ளது. தயவுசெய்து கையால் ஒன்றுகலக்கவும்.',
@@ -1826,8 +1830,6 @@ $1',
'allmessagestext' => 'இது மீடியாவிக்கி பெயர்வெளியிலுள்ள எல்லா முறைமை தகவல்களினதும் பட்டியலாகும்.
மொழிபெயர்ப்பில் உதவ விரும்பின் அருள்கூர்ந்து [http://translatewiki.net பீட்டாவிக்கி], [http://www.mediawiki.org/wiki/Localisation மீடியாவிக்கி மொழியாக்க] தளங்களுக்குச் செல்லவும்.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' முடக்கப்பட்டுள்ளப் படியால் இப்பக்கததை பயன்படுத்த முடியாது.",
-'allmessagesfilter' => 'தகவல் பெயர் வடி:',
-'allmessagesmodified' => 'மாற்றம் செய்யப்பட்டவற்றை மட்டும் காட்டு',
# Thumbnails
'thumbnail-more' => 'பெரிதாக்கு',
@@ -1904,6 +1906,7 @@ $1',
'tooltip-search-fulltext' => 'இச்சொற்களைக் கொண்டப் பக்கங்களைத் தேடு',
'tooltip-p-logo' => 'முதற் பக்கம்',
'tooltip-n-mainpage' => 'முதற் பக்கத்துக்குச் செல்ல',
+'tooltip-n-mainpage-description' => 'முதற்பக்கத்துக்குச் செல்க',
'tooltip-n-portal' => 'திட்டம் பற்றி தெரிந்துக் கொள்ள, நீங்கள் என்ன செய்ய முடியும் என அறிய',
'tooltip-n-currentevents' => 'நடப்பு நிகழ்வுகள் பற்றிய மேலதிக தகவல்களைக் காண',
'tooltip-n-recentchanges' => 'இந்த விக்கியில் செய்யப்பட்ட அண்மைய மாற்றங்களின் பட்டியல்',
@@ -1944,7 +1947,7 @@ $1',
# Attribution
'anonymous' => '{{SITENAME}} தளத்தின் அடையாளம் காட்டாத {{PLURAL:$1|பயனர்|பயனர்கள்}}',
'siteuser' => '{{SITENAME}} தளத்தின் பயனர் $1',
-'lastmodifiedatby' => 'இப்பக்கம் கடைசியாக $2, $1 அன்று $3 என்றப் பயனரால் தொகுக்கப்பட்டது.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'இப்பக்கம் கடைசியாக $2, $1 அன்று $3 என்றப் பயனரால் தொகுக்கப்பட்டது.',
'othercontribs' => '$1 உடைய ஆக்கத்தை அடிப்படையாகக் கொண்டது.',
'others' => 'ஏனைய',
'siteusers' => '{{SITENAME}} தளத்தின் {{PLURAL:$2|பயனர்|பயனர்கள்}} $1',
@@ -1979,6 +1982,15 @@ $1',
'mw_math_modern' => 'புதிய உலாவிகளுக்குப் பரிந்துரைக்கப்படுவது',
'mw_math_mathml' => 'கூடுமாயின் MathML (சோதனை)',
+# Math errors
+'math_failure' => 'பாகுபடுத்தல் தோல்வி',
+'math_unknown_error' => 'அறியப்படாத தவறு',
+'math_unknown_function' => 'அறியப்படாத செயற்பாடு',
+'math_lexing_error' => 'தொகுத்தல் (லெக்சிங்) தவறு',
+'math_syntax_error' => 'தொடரமைப்புத் தவறு',
+'math_bad_tmpdir' => 'தற்காலிக கணித அடைவை உருவாக்க அல்லது எழுத முடியவில்லை',
+'math_bad_output' => 'கணித அடைவை உருவாக்க அல்லது அதில் எழுத முடியவில்லை.',
+
# Patrolling
'markaspatrolleddiff' => 'ரோந்திட்டதாக குறி',
'markaspatrolledtext' => 'இப்பக்கத்தை ரோந்திட்டதாகக் குறி',
@@ -2050,7 +2062,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'அகலம்',
@@ -2151,10 +2163,10 @@ $1',
'exif-unknowndate' => 'நாள் தெரியாது',
-'exif-orientation-1' => 'வழமையான', # 0th row: top; 0th column: left
-'exif-orientation-3' => '180° சுழற்றப்பட்டது', # 0th row: bottom; 0th column: right
-'exif-orientation-6' => '90° வலஞ்சுழியாக சுழற்றப்பட்டது', # 0th row: right; 0th column: top
-'exif-orientation-8' => '90° இடஞ்சுழியாக சுழற்றப்பட்டது', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'வழமையான',
+'exif-orientation-3' => '180° சுழற்றப்பட்டது',
+'exif-orientation-6' => '90° வலஞ்சுழியாக சுழற்றப்பட்டது',
+'exif-orientation-8' => '90° இடஞ்சுழியாக சுழற்றப்பட்டது',
'exif-componentsconfiguration-0' => 'இல்லை',
@@ -2242,7 +2254,7 @@ $1',
'exif-gpsmeasuremode-2' => 'இருபரிமாண அளவீடு',
'exif-gpsmeasuremode-3' => 'முப்பரிமாண அளவீடு',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'மணிக்கு கிலோமீட்டர்',
'exif-gpsspeed-m' => 'மணித்தியாலத்துக்கு மைல்கள்',
'exif-gpsspeed-n' => 'கடல் மைல்/மணி',
@@ -2378,7 +2390,7 @@ $5
'unknown_extension_tag' => 'அறியப்படாத நீட்சி வகை "$1"',
# Special:Version
-'version' => 'பதிப்பு', # Not used as normal message but as header for the special page itself
+'version' => 'பதிப்பு',
'version-extensions' => 'நிறுவப்பட்ட நீட்சிகள்',
'version-specialpages' => 'சிறப்புப் பக்கங்கள்',
'version-parserhooks' => 'இலக்கணப் பாகுபடுத்தி கொக்கிகள்',
@@ -2392,7 +2404,7 @@ $5
'version-skin-extension-functions' => 'தோல் நீட்சி செயல்பாடு',
'version-hook-name' => 'கொக்கியின் பெயர்',
'version-hook-subscribedby' => 'பயன்பாடு',
-'version-version' => 'பதிப்பு',
+'version-version' => '(பதிப்பு $1)',
'version-license' => 'அனுமதி',
'version-software' => 'நிறுவப்பட்ட மென்பொருள்',
'version-software-product' => 'உற்பத்திப்பொருள்',
diff --git a/languages/messages/MessagesTcy.php b/languages/messages/MessagesTcy.php
index da7af898..b51e7fea 100644
--- a/languages/messages/MessagesTcy.php
+++ b/languages/messages/MessagesTcy.php
@@ -119,7 +119,7 @@ $messages = array(
'category-media-header' => '"$1" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಚಿತ್ರ/ಶಬ್ಧ ಫೈಲ್’ಲು',
'category-empty' => "''ಈ ವರ್ಗೊಡು ಸದ್ಯಗ್ ಓವುಲ ಪುಟೊಲಾವಡ್ ಅತ್ತ್’ನ್ಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
'hidden-categories' => '{{PLURAL:$1|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗ|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು}}',
-'hidden-category-category' => 'ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು',
'category-subcat-count' => '{{PLURAL:$2|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ ಉಪವರ್ಗ ಉಂಡು.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಉಪವರ್ಗೊನು|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}',
'category-subcat-count-limited' => 'ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ತೊಜ್ಪಾದಿನ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗೊಲು}} ಉಂಡು.',
'category-article-count' => '{{PLURAL:$2|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ ಖಾಲಿ ಒಂಜಿ ಪುಟ ಉಂಡು.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಪುಟೊನು|$1 ಪುಟೊಲೆನ್}} ಸೇರ್ಪಾದ್, ಒಟ್ಟಿಗೆ $2 ಪುಟೊಲು ಉಂಡು.}}',
@@ -137,10 +137,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-'about' => 'ಎಂಕ್ಲೆನ ಬಗ್ಗೆ',
-'article' => 'ಲೇಖನ ಪುಟ',
-'newwindow' => '(ಪೊಸ ಕಂಡಿನ್ ಓಪನ್ ಮಲ್ಪುಂಡು)',
-'cancel' => 'ವಜಾ ಮನ್ಪುಲೆ',
+'about' => 'ಎಂಕ್ಲೆನ ಬಗ್ಗೆ',
+'article' => 'ಲೇಖನ ಪುಟ',
+'newwindow' => '(ಪೊಸ ಕಂಡಿನ್ ಓಪನ್ ಮಲ್ಪುಂಡು)',
+'cancel' => 'ವಜಾ ಮನ್ಪುಲೆ',
+'moredotdotdot' => 'ನನಲ...',
+'mypage' => 'ಎನ್ನ ಪುಟ',
+'mytalk' => 'ಎನ್ನ ಚರ್ಚೆ',
+'anontalk' => 'ಈ ಐ.ಪಿ ಗ್ ಪಾತೆರ್’ಲೆ',
+'navigation' => 'ಸಂಚಾರ',
+'and' => '&#32;ಬೊಕ್ಕ',
+
+# Cologne Blue skin
'qbfind' => 'ನಾಡ್’ಲೆ',
'qbbrowse' => 'ಬ್ರೌಸ್',
'qbedit' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
@@ -148,15 +156,8 @@ $messages = array(
'qbpageinfo' => 'ಸನ್ನಿವೇಶ',
'qbmyoptions' => 'ಎನ್ನ ಪುಟೊಲು',
'qbspecialpages' => 'ವಿಶೇಷ ಪುಟೊಲು',
-'moredotdotdot' => 'ನನಲ...',
-'mypage' => 'ಎನ್ನ ಪುಟ',
-'mytalk' => 'ಎನ್ನ ಚರ್ಚೆ',
-'anontalk' => 'ಈ ಐ.ಪಿ ಗ್ ಪಾತೆರ್’ಲೆ',
-'navigation' => 'ಸಂಚಾರ',
-'and' => '&#32;ಬೊಕ್ಕ',
-
-# Metadata in edit box
-'metadata_help' => 'ಮೂಲಮಾಹಿತಿ:',
+'faq' => 'ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
+'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
'errorpagetitle' => 'ದೋಷ',
'returnto' => '$1 ಗ್ ಪಿರ ಪೋಲೆ.',
@@ -206,7 +207,7 @@ $messages = array(
'otherlanguages' => 'ಬೇತೆ ಭಾಷೆಲೆಡ್',
'redirectedfrom' => '($1 ರ್ದ್ ಪುನರ್ನಿರ್ದೇಶಿತ)',
'redirectpagesub' => 'ಪುನರ್ನಿರ್ದೇಶನ ಪುಟ',
-'lastmodifiedat' => 'ಈ ಪುಟ ಇಂದೆತ ದುಂಬು $2, $1 ಕ್ ಬದಲಾತ್’ನ್ಡ್.', # $1 date, $2 time
+'lastmodifiedat' => 'ಈ ಪುಟ ಇಂದೆತ ದುಂಬು $2, $1 ಕ್ ಬದಲಾತ್’ನ್ಡ್.',
'viewcount' => 'ಈ ಪುಟೊನು {{PLURAL:$1|1 ಸರಿ|$1 ಸರಿ}} ತೂತೆರ್.',
'protectedpage' => 'ಸಂರಕ್ಷಿತ ಪುಟ',
'jumpto' => 'ಇಡೆ ಪೋಲೆ:',
@@ -217,7 +218,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} ದ ಬಗ್ಗೆ',
'aboutpage' => 'Project:ನಮ್ಮ ಬಗ್ಗೆ',
'copyright' => 'ಉಂದು ಈ ಕಾಪಿರೈಟ್‌ಡ್ ಲಭ್ಯವುಂಡು $1.',
-'copyrightpagename' => '{{SITENAME}} ಕಾಪಿರೈಟ್',
'copyrightpage' => '{{ns:project}}:ಕೃತಿಸ್ವಾಮ್ಯತೆಲು',
'currentevents' => 'ಇತ್ತೆದ ಸಂಗತಿಲು',
'currentevents-url' => 'Project:ಇತ್ತೆದ ಸಂಗತಿಲು',
@@ -225,8 +225,6 @@ $messages = array(
'disclaimerpage' => 'Project:ಸಾಮಾನ್ಯ ಅಬಾಧ್ಯತೆಲು',
'edithelp' => 'ಸಂಪಾದನೆ(ಎಡಿಟ್) ಮಲ್ಪೆರೆ ಸಹಾಯ',
'edithelppage' => 'Help:ಸಂಪಾದನೆ',
-'faq' => 'ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
-'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
'helppage' => 'Help:ಪರಿವಿಡಿ',
'mainpage' => 'ಮುಖ್ಯ ಪುಟ',
'mainpage-description' => 'ಮುಖ್ಯ ಪುಟ',
@@ -297,9 +295,6 @@ $messages = array(
# General errors
'error' => 'ದೋಷ',
'databaseerror' => 'ಡೇಟಾಬೇಸ್ ದೋಷ',
-'noconnect' => 'ವಿಕಿ ಡ್ ಕೆಲವು ತಾ೦ತ್ರಿಕ ದೋಶೊಲು ತೋಜೊ೦ದು೦ಡು ಬುಕ ಡಾಟಾಬೇಸ್ ಸರ್ವರ್ ನ್ ಸ೦ಪರ್ಕ ಮಲ್ಪೆರ್ ಆವೊ೦ದಿಜ್ಜಿ.<br />
-$1',
-'nodb' => 'ಡಾಟಾಬೇಸ್ $1 ನ್ ಆಯ್ಕೆ ಮಲ್ತೊನೆರೆ ಆಯಿಜಿ',
'readonly' => 'ಡಾಟಾಬೇಸ್ ಲಾಕ್ ಆತ್೦ಡ್',
'missing-article' => '"$1" $2 ಪುದರ್’ದ ಪುಟ ದೇಟಬೇಸ್’ಡ್ ಇಜ್ಜಿ.
@@ -389,7 +384,7 @@ $1',
'template-semiprotected' => '(ಅರೆ-ಸಂರಕ್ಷಿತ)',
'hiddencategories' => 'ಈ ಪುಟ {{PLURAL:$1|೧ ಗುಪ್ತ ವರ್ಗಗ್|$1 ಗುಪ್ತ ವರ್ಗೊಲೆಗ್}} ಸೇರ್ದ್’ನ್ಡ್:',
'permissionserrorstext-withaction' => '$2 ಗ್ ಇರೆಗ್ ಅನುಮತಿ ಇಜ್ಜಿ, ಐಕ್ {{PLURAL:$1|ಕಾರಣ|ಕಾರಣೊಲು}}:',
-'deleted-notice' => 'ಈ ಪೇಜ್ ಅಸ್ತಿತ್ವಡ್ ಇಜ್ಜಿ.
+'moveddeleted-notice' => 'ಈ ಪೇಜ್ ಅಸ್ತಿತ್ವಡ್ ಇಜ್ಜಿ.
ಪೂಟೊತ ಡಿಲೀಶನ್ ಲಾಗ್’ನ್ ತಿರ್ತ್ ಕೊರ್ತುಂಡು.',
# History pages
@@ -425,14 +420,11 @@ $1',
'searchresulttext' => '{{SITENAME}} ಡ್ ನಾಡಟ ಮಲ್ಪುನ ಬಗ್ಗೆ ಜಾಸ್ತಿ ಮಾಹಿತಿಗ್ [[{{MediaWiki:Helppage}}|{{int:help}}]] ನ್ ತೂಲೆ.',
'searchsubtitle' => 'ಈರ್ \'\'\'[[:$1]]\'\'\' ನ್ ನಾಡಿಯರ್ ([[Special:Prefixindex/$1|"$1" ರ್ದ್ ಶುರುವಾಪುನ ಪೂರ ಪುಟೊಲು]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗ್ ಲಿಂಕ್ ಕೊರ್ಪುನ ಪೂರ ಪುಟೊಲು]])',
'searchsubtitleinvalid' => "'''$1''' ನ್ ಈರ್ ನಾಡಿಯರ್.",
-'noexactmatch' => "'''\"\$1\". ಅ೦ಚಿನ ವಾ ಪುಟಲಾ ಇಜ್ಜಿ. '''
-ಈರ್ [[:\$1| ಐನ್ ಸುರು ಮಲ್ಪೊಲಿ]].",
-'noexactmatch-nocreate' => "'''\"\$1\" ಪುದರ್ದ ವಾ ಪುಟೊಲಾ ಇಜ್ಜಿ.'''",
'notitlematches' => 'ವಾ ಪುಟೊತ ಶಿರ್ಷಿಕೆಲಾ ಹೊಂದಿಕೆ ಆವೊಂದಿಜ್ಜಿ',
'notextmatches' => 'ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ',
-'prevn' => 'ದುಂಬುದ $1',
-'nextn' => 'ಬೊಕ್ಕದ $1',
-'viewprevnext' => 'ತೂಲೆ ($1) ($2) ($3)',
+'prevn' => 'ದುಂಬುದ {{PLURAL:$1|$1}}',
+'nextn' => 'ಬೊಕ್ಕದ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದೊಲು}})',
'search-redirect' => '(ಪುನರ್ನಿರ್ದೇಶನ $1)',
@@ -443,7 +435,6 @@ $1',
'search-interwiki-more' => '(ಮಸ್ತ್)',
'search-mwsuggest-enabled' => 'ಸಲಹೆದೊಟ್ಟಿಗೆ',
'search-mwsuggest-disabled' => 'ಓವು ಸಲಹೆಲಾ ಇಜ್ಜಿ',
-'showingresultstotal' => "ಒಟ್ಟು '''$3''' ನಾಡಟದ ಫಲಿತಾಂಶೊಲೆಡ್ '''$1 - $2''' ತಿರ್ತ್ ತೋಜಾದ್’ನ್ಡ್",
'powersearch' => 'ನಾಡ್’ಲೆ',
'powersearch-legend' => 'ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್',
'powersearch-ns' => 'ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ',
@@ -489,6 +480,8 @@ $1',
# Recent changes linked
'recentchangeslinked' => 'ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು',
+'recentchangeslinked-feed' => 'ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು',
+'recentchangeslinked-toolbox' => 'ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು',
'recentchangeslinked-title' => '"$1" ಪುಟೊಟು ಆತಿನ ಬದಲಾವಣೆಲು',
'recentchangeslinked-noresult' => 'ಕೊರ್ತಿನ ಸಮಯೊಡು ಲಿಂಕ್ ಉಪ್ಪುನ ಪುಟೊಲೆಡ್ ಓವುಲಾ ಬದಲಾವಣೆಲು ಆತಿಜಿ.',
'recentchangeslinked-summary' => "ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಪುಟೊರ್ದು (ಅತ್ತ್’ನ್ಡ ನಿರ್ದಿಷ್ಟ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಪುಟೊಲೆರ್ದ್) ಸಂಪರ್ಕ ಉಪ್ಪುನ ಪುಟೊಲೆಡ್ ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ಪೆರಾತ್’ನ್ಡ್.
@@ -502,21 +495,20 @@ $1',
'uploadedimage' => '"[[$1]]" ಅಪ್ಲೋಡ್ ಆಂಡ್',
# File description page
-'filehist' => 'ಫೈಲ್’ದ ಇತಿಹಾಸ',
-'filehist-help' => 'ಫೈಲ್ ಆ ದಿನೊಟು ಎಂಚ ಇತ್ತ್’ನ್ಡ್’ನ್ದ್ ತೂಯೆರೆ ಆ ದಿನ/ಪೊರ್ತುದ ಮಿತ್ತ್ ಕ್ಲಿಕ್ ಮಲ್ಪುಲೆ.',
-'filehist-current' => 'ಪ್ರಸಕ್ತ',
-'filehist-datetime' => 'ದಿನ/ಪೊರ್ತು',
-'filehist-thumb' => 'ಥಂಬ್-ನೈಲ್',
-'filehist-thumbtext' => '$1 ತ ಲೆಕ್ಕ ಆವೃತ್ತಿದ ತಂಬ್-ನೈಲ್',
-'filehist-user' => 'ಸದಸ್ಯೆ',
-'filehist-dimensions' => 'ಆಯಾಮೊಲು',
-'filehist-filesize' => 'ಫೈಲ್’ದ ಗಾತ್ರ',
-'filehist-comment' => 'ಕಮೆಂಟ್',
-'imagelinks' => 'ಫೈಲ್ ಲಿಂಕ್’ಲು',
-'linkstoimage' => 'ಈ ಫೈಲ್’ಗ್ ತಿರ್ತ್’ದ ಈ {{PLURAL:$1|ಪುಟ|$1 ಪುಟೊಲು}} ಲಿಂಕ್ ಕೊರ್ಪುಂಡು.',
-'sharedupload' => 'ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಡುಪ್ಪು.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-desc' => '$1 ಡ್ ಉಪ್ಪುನ ವಿವರೊಲೆನ್ ತಿರ್ತ್ ತೊಜ್ಪಾದ್’ನ್ಡ್.',
-'shareduploadwiki-linktext' => 'ಫೈಲ್’ದ ಮಾಹಿತಿ ಪುಟ',
+'file-anchor-link' => 'ಫೈಲ್',
+'filehist' => 'ಫೈಲ್’ದ ಇತಿಹಾಸ',
+'filehist-help' => 'ಫೈಲ್ ಆ ದಿನೊಟು ಎಂಚ ಇತ್ತ್’ನ್ಡ್’ನ್ದ್ ತೂಯೆರೆ ಆ ದಿನ/ಪೊರ್ತುದ ಮಿತ್ತ್ ಕ್ಲಿಕ್ ಮಲ್ಪುಲೆ.',
+'filehist-current' => 'ಪ್ರಸಕ್ತ',
+'filehist-datetime' => 'ದಿನ/ಪೊರ್ತು',
+'filehist-thumb' => 'ಥಂಬ್-ನೈಲ್',
+'filehist-thumbtext' => '$1 ತ ಲೆಕ್ಕ ಆವೃತ್ತಿದ ತಂಬ್-ನೈಲ್',
+'filehist-user' => 'ಸದಸ್ಯೆ',
+'filehist-dimensions' => 'ಆಯಾಮೊಲು',
+'filehist-filesize' => 'ಫೈಲ್’ದ ಗಾತ್ರ',
+'filehist-comment' => 'ಕಮೆಂಟ್',
+'imagelinks' => 'ಫೈಲ್ ಲಿಂಕ್’ಲು',
+'linkstoimage' => 'ಈ ಫೈಲ್’ಗ್ ತಿರ್ತ್’ದ ಈ {{PLURAL:$1|ಪುಟ|$1 ಪುಟೊಲು}} ಲಿಂಕ್ ಕೊರ್ಪುಂಡು.',
+'sharedupload' => 'ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಡುಪ್ಪು.',
# Random page
'randompage' => 'ಯಾದೃಚ್ಛಿಕ ಪುಟ',
@@ -606,6 +598,7 @@ $1',
'sp-contributions-newbies' => 'ಪೊಸ ಖಾತೆಲೆದ ಕಾಣಿಕೆಲೆನ್ ಮಾತ್ರ ತೊಜ್ಪಾವು',
'sp-contributions-blocklog' => 'ತಡೆಪತ್ತುನ ದಾಖಲೆ',
+'sp-contributions-talk' => 'ಪಾತೆರ',
'sp-contributions-search' => 'ಕಾಣಿಕೆಲೆನ್ ನಾಡ್ಲೆ',
'sp-contributions-username' => 'ಐ.ಪಿ ವಿಳಾಸ ಅತ್ತ್’ನ್ಡ ಬಳಕೆದ ಪುದರ್:',
'sp-contributions-submit' => 'ನಾಡ್',
@@ -629,7 +622,7 @@ $1',
# Block/unblock
'blockip' => 'ಈ ಸದಸ್ಯೆರೆನ್ ಬ್ಲಾಕ್ ಮಲ್ಪುಲೆ',
-'ipboptions' => '2 ಗಂಟೆಲು:2 hours,1 ದಿನ:1 day,3 ದಿನೊಲು:3 days,1 ವಾರ:1 week,2 ವಾರೊಲು:2 weeks,1 ತಿಂಗೊಲು:1 month,3 ತಿಂಗೊಲು:3 months,6 ತಿಂಗೊಲು:6 months,1 ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ಗಂಟೆಲು:2 hours,1 ದಿನ:1 day,3 ದಿನೊಲು:3 days,1 ವಾರ:1 week,2 ವಾರೊಲು:2 weeks,1 ತಿಂಗೊಲು:1 month,3 ತಿಂಗೊಲು:3 months,6 ತಿಂಗೊಲು:6 months,1 ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite',
'ipblocklist' => 'ತಡೆಪತ್ತ್’ದಿನ ಐ.ಪಿ ವಿಳಾಸೊಲು ಅಂಚೆನೆ ಬಳಕೆದ ಪುದರ್’ಲು',
'blocklink' => 'ಅಡ್ಡ ಪತ್ತ್’ಲೆ',
'unblocklink' => 'ಅಡ್ಡನ್ ದೆಪ್ಪುಲೆ',
@@ -739,7 +732,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# External editor support
'edit-externally' => 'ಬಾಹ್ಯ(ಪಿದಯಿದ) ತಂತ್ರಾಶೊನು ಉಪಯೋಗ ಮಲ್ತ್’ದ್ ಇಂದೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
diff --git a/languages/messages/MessagesTe.php b/languages/messages/MessagesTe.php
index 8a3ec636..13ddf831 100644
--- a/languages/messages/MessagesTe.php
+++ b/languages/messages/MessagesTe.php
@@ -28,8 +28,8 @@ $namespaceNames = array(
NS_USER => 'వాడుకరి',
NS_USER_TALK => 'వాడుకరి_చర్చ',
NS_PROJECT_TALK => '$1_చర్చ',
- NS_FILE => 'ఫైలు',
- NS_FILE_TALK => 'ఫైలుపై_చర్చ',
+ NS_FILE => 'దస్త్రం',
+ NS_FILE_TALK => 'దస్త్రంపై_చర్చ',
NS_MEDIAWIKI => 'మీడియావికీ',
NS_MEDIAWIKI_TALK => 'మీడియావికీ_చర్చ',
NS_TEMPLATE => 'మూస',
@@ -47,25 +47,80 @@ $namespaceAliases = array(
'సభ్యునిపై_చర్చ' => NS_USER_TALK,
'బొమ్మ' => NS_FILE,
'బొమ్మపై_చర్చ' => NS_FILE_TALK,
+ 'ఫైలు' => NS_FILE,
+ 'ఫైలుపై_చర్చ' => NS_FILE_TALK,
'బొమ్మపై_చర్చ' => NS_FILE_TALK,
'సహాయము' => NS_HELP,
'సహాయము_చర్చ' => NS_HELP_TALK,
);
$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'రెండుసార్లుదారిమార్పు' ),
+ 'BrokenRedirects' => array( 'తెగిపోయినదారిమార్పులు' ),
+ 'Disambiguations' => array( 'అయోమయనివృత్తి' ),
+ 'Userlogin' => array( 'వాడుకరిప్రవేశం' ),
+ 'Userlogout' => array( 'వాడుకరినిష్క్రమణ' ),
+ 'CreateAccount' => array( 'ఖాతాసృష్టించు' ),
'Preferences' => array( 'అభిరుచులు' ),
+ 'Watchlist' => array( 'వీక్షణజాబితా' ),
'Recentchanges' => array( 'ఇటీవలిమార్పులు' ),
+ 'Upload' => array( 'ఎక్కింపు' ),
+ 'Listfiles' => array( 'ఫైళ్లజాబితా', 'బొమ్మలజాబితా' ),
+ 'Newimages' => array( 'కొత్తఫైళ్లు', 'కొత్తబొమ్మలు' ),
'Listusers' => array( 'వాడుకరులజాబితా' ),
+ 'Listgrouprights' => array( 'గుంపుహక్కులజాబితా', 'వాడుకరులగుంపుహక్కులు' ),
'Statistics' => array( 'గణాంకాలు' ),
+ 'Randompage' => array( 'యాదృచ్చికపేజీ' ),
+ 'Lonelypages' => array( 'ఒంటరిపేజీలు', 'అనాధపేజీలు' ),
+ 'Uncategorizedpages' => array( 'వర్గీకరించనిపేజీలు' ),
+ 'Uncategorizedcategories' => array( 'వర్గీకరించనివర్గములు' ),
+ 'Uncategorizedimages' => array( 'వర్గీకరించనిఫైళ్లు', 'వర్గీకరించనిబొమ్మలు' ),
+ 'Uncategorizedtemplates' => array( 'వర్గీకరించనిమూసలు' ),
+ 'Unusedcategories' => array( 'వాడనివర్గములు' ),
+ 'Unusedimages' => array( 'వాడనిఫైళ్లు', 'వాడనిబొమ్మలు' ),
+ 'Wantedpages' => array( 'అవసరమైనపేజీలు', 'విరిగిపోయినలింకులు' ),
+ 'Wantedcategories' => array( 'కోరినవర్గాలు' ),
+ 'Wantedfiles' => array( 'అవసరమైనఫైళ్లు' ),
+ 'Wantedtemplates' => array( 'అవసరమైననమూనాలు' ),
+ 'Mostcategories' => array( 'ఎక్కువవర్గములు' ),
+ 'Mostrevisions' => array( 'ఎక్కువకూర్పులు' ),
+ 'Fewestrevisions' => array( 'అతితక్కువకూర్పులు' ),
'Shortpages' => array( 'చిన్నపేజీలు' ),
+ 'Longpages' => array( 'పొడుగుపేజీలు' ),
'Newpages' => array( 'కొత్తపేజీలు' ),
+ 'Ancientpages' => array( 'పురాతనపేజీలు' ),
+ 'Deadendpages' => array( 'అగాధపేజీలు' ),
+ 'Protectedpages' => array( 'సంరక్షితపేజీలు' ),
'Allpages' => array( 'అన్నిపేజీలు' ),
'Specialpages' => array( 'ప్రత్యేకపేజీలు' ),
+ 'Emailuser' => array( 'వాడుకరికిఈమెయిలుచెయ్యి' ),
+ 'Confirmemail' => array( 'ఈమెయిలుధ్రువపరచు' ),
+ 'Whatlinkshere' => array( 'ఇక్కడికిలింకున్నపేజీలు' ),
+ 'Recentchangeslinked' => array( 'చివరిమార్పులలింకులు', 'సంబంధితమార్పులు' ),
+ 'Movepage' => array( 'వ్యాసమునుతరలించు' ),
+ 'Blockme' => array( 'నన్నుఅడ్డగించు' ),
+ 'Booksources' => array( 'పుస్తకమూలాలు' ),
'Categories' => array( 'వర్గాలు' ),
+ 'Export' => array( 'ఎగుమతి' ),
+ 'Version' => array( 'ప్రతి' ),
+ 'Allmessages' => array( 'అన్నిసందేశాలు' ),
'Log' => array( 'చిట్టా', 'చిట్టాలు' ),
+ 'Blockip' => array( 'అడ్డగించు', 'ఐపినిఅడ్డగించు', 'వాడుకరినిఅడ్డగించు' ),
+ 'Import' => array( 'దిగుమతి' ),
+ 'Userrights' => array( 'వాడుకరిహక్కులు' ),
+ 'Unwatchedpages' => array( 'వీక్షించనిపేజీలు' ),
+ 'Revisiondelete' => array( 'కూర్పుతొలగించు' ),
+ 'Unusedtemplates' => array( 'వాడనిమూసలు' ),
+ 'Randomredirect' => array( 'యాదుచ్చికదారిమార్పు' ),
'Mypage' => array( 'నాపేజీ' ),
'Mytalk' => array( 'నాచర్చ' ),
+ 'Mycontributions' => array( 'నా మార్పులు-చేర్పులు' ),
+ 'Popularpages' => array( 'ప్రాచుర్యంపొందినపేజీలు' ),
'Search' => array( 'అన్వేషణ' ),
+ 'Resetpass' => array( 'సంకేతపదముమార్చు' ),
+ 'Withoutinterwiki' => array( 'అంతరవికీలేకుండా' ),
+ 'MergeHistory' => array( 'చరిత్రనువిలీనంచేయి' ),
+ 'Blankpage' => array( 'ఖాళీపేజి' ),
);
$magicWords = array(
@@ -109,6 +164,7 @@ $messages = array(
'tog-enotifminoredits' => 'చిన్న మార్పులు చేసినప్పుడు కూడా నాకు ఈ-మెయిలు పంపించు',
'tog-enotifrevealaddr' => 'ప్రకటన మెయిల్లలో నా ఈ-మెయిలు చిరునామాను చూపించు',
'tog-shownumberswatching' => 'వీక్షకుల సంఖ్యను చూపించు',
+'tog-oldsig' => 'ప్రస్తుత సంతకపు మునుజూపు:',
'tog-fancysig' => 'సంతకాన్ని వికీపాఠ్యంగా తీసుకో (ఆటోమెటిక్‌ లింకు లేకుండా)',
'tog-externaleditor' => 'మామూలుగా బయటి కూర్పరిని వాడు (నిపుణులకు మాత్రమే, మీ కంప్యూటర్లో ప్రత్యేక అమరికలు అవసరమవుతాయి)',
'tog-externaldiff' => 'మార్పులను చూడటానికి బయటి సాఫ్టువేరును వాడు (నిపుణులకు మాత్రమే, మీ కంప్యూటర్లో ప్రత్యేక అమరికలు అవసరమవుతాయి)',
@@ -130,6 +186,13 @@ $messages = array(
'underline-never' => 'ఎప్పటికీ వద్దు',
'underline-default' => 'విహారిణి అప్రమేయం',
+# Font style option in Special:Preferences
+'editfont-style' => 'దిద్దుబాటు పెట్టె ఫాంటు స్టైల్',
+'editfont-default' => 'విహరిణి అప్రమేయం',
+'editfont-monospace' => 'మోనోస్పేసుడ్ ఫాంట్',
+'editfont-sansserif' => 'సాన్స్-సెరిఫ్ ఫాంటు',
+'editfont-serif' => 'సెరిఫ్ ఫాంటు',
+
# Dates
'sunday' => 'ఆదివారము',
'monday' => 'సోమవారము',
@@ -189,7 +252,7 @@ $messages = array(
'category-media-header' => '"$1" వర్గంలో ఉన్న మీడియా ఫైళ్లు',
'category-empty' => "''ప్రస్తుతం ఈ వర్గంలో ఎలాంటి పేజీలుగానీ మీడియా ఫైళ్లుగానీ లేవు.''",
'hidden-categories' => '{{PLURAL:$1|దాచిన వర్గం|దాచిన వర్గాలు}}',
-'hidden-category-category' => 'దాచిన వర్గాలు', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'దాచిన వర్గాలు',
'category-subcat-count' => '{{PLURAL:$2|ఈ వర్గంలో క్రింద చూపిస్తున్న ఒకే ఉపవర్గం ఉంది.|ఈ వర్గంలో ఉన్న మొత్తం $2 వర్గాలలో ప్రస్తుతం {{PLURAL:$1|ఒక ఉపవర్గాన్ని|$1 ఉపవర్గాలను}} చూపిస్తున్నాము.}}',
'category-subcat-count-limited' => 'ఈ వర్గం క్రింద చూపిస్తున్న {{PLURAL:$1|ఒక ఉపవర్గం ఉంది|$1 ఉపవర్గాలు ఉన్నాయి}}.',
'category-article-count' => '{{PLURAL:$2|ఈ వర్గంలో క్రింద చూపిస్తున్న ఒకే పేజీ ఉంది.|ఈ వర్గంలో ఉన్న మొత్తం $2 పేజీలలో ప్రస్తుతం {{PLURAL:$1|ఒక పేజీని|$1 పేజీలను}} చూపిస్తున్నాము.}}',
@@ -197,6 +260,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|ఈ వర్గంలో క్రింద చూపిస్తున్న ఒకే ఫైలు ఉంది.|ఈ వర్గంలో ఉన్న మొత్తం $2 పేజీలలో ప్రస్తుతం {{PLURAL:$1|ఒక ఫైలును|$1 ఫైళ్లను}} చూపిస్తున్నాము.}}',
'category-file-count-limited' => 'ఈ వర్గం క్రింద చూపిస్తున్న {{PLURAL:$1|ఒక ఫైలు ఉంది|$1 ఫైళ్లు ఉన్నాయి}}.',
'listingcontinuesabbrev' => '(కొనసాగింపు)',
+'index-category' => 'సూచీకరించిన పేజీలు',
+'noindex-category' => 'సూచీకరించని పేజీలు',
'mainpagetext' => "'''మీడియా వికీని విజయవంతంగా ప్రతిష్టించాం.'''",
'mainpagedocfooter' => 'వికీ సాఫ్టువేరును వాడటనికి కావలిసిన సమాచారం కోసం [http://meta.wikimedia.org/wiki/Help:Contents వాడుకరుల గైడు]ను సందర్శించండి.
@@ -207,10 +272,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ మీడియావికీపై తరుచుగా అడిగే ప్రశ్నలు]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce మీడియావికీ సాఫ్టువేరు కొత్త వెర్షను విడుదలల గురించి తెలిపే మెయిలింగు లిస్టు]',
-'about' => 'గురించి',
-'article' => 'వ్యాసము',
-'newwindow' => '(కొత్త కిటికీలో వస్తుంది)',
-'cancel' => 'రద్దు',
+'about' => 'గురించి',
+'article' => 'వ్యాసము',
+'newwindow' => '(కొత్త కిటికీలో వస్తుంది)',
+'cancel' => 'రద్దు',
+'moredotdotdot' => 'ఇంకా...',
+'mypage' => 'నా పేజీ',
+'mytalk' => 'నా గురించి చర్చ',
+'anontalk' => 'ఈ ఐ.పి.కి సంబంధించిన చర్చ',
+'navigation' => 'మార్గదర్శకం',
+'and' => '&#32;మరియు',
+
+# Cologne Blue skin
'qbfind' => 'వెతుకు',
'qbbrowse' => 'విహరించు',
'qbedit' => 'మార్చు',
@@ -218,15 +291,35 @@ $messages = array(
'qbpageinfo' => 'సందర్భం',
'qbmyoptions' => 'నా పేజీలు',
'qbspecialpages' => 'ప్రత్యేక పేజీలు',
-'moredotdotdot' => 'ఇంకా...',
-'mypage' => 'నా పేజీ',
-'mytalk' => 'నా గురించి చర్చ',
-'anontalk' => 'ఈ ఐ.పి.కి సంబంధించిన చర్చ',
-'navigation' => 'మార్గదర్శకం',
-'and' => '&#32;మరియు',
-
-# Metadata in edit box
-'metadata_help' => 'మెటాడేటా:',
+'faq' => 'తరచూ అడిగే ప్రశ్నలు',
+'faqpage' => 'Project:తరచూ అడిగే ప్రశ్నలు',
+
+# Vector skin
+'vector-action-addsection' => 'విషయాన్ని చేర్చు',
+'vector-action-delete' => 'తొలగించు',
+'vector-action-move' => 'తరలించు',
+'vector-action-protect' => 'సంరక్షించు',
+'vector-action-undelete' => 'తిరిగి చేర్చు',
+'vector-action-unprotect' => 'సంరక్షించ వద్దు',
+'vector-namespace-category' => 'వర్గం',
+'vector-namespace-help' => 'సహాయపు పేజీ',
+'vector-namespace-image' => 'ఫైలు',
+'vector-namespace-main' => 'పేజీ',
+'vector-namespace-media' => 'మాధ్యమ పేజీ',
+'vector-namespace-mediawiki' => 'సందేశం',
+'vector-namespace-project' => 'ప్రాజెక్టు పేజీ',
+'vector-namespace-special' => 'ప్రత్యేక పేజీ',
+'vector-namespace-talk' => 'చర్చ',
+'vector-namespace-template' => 'మూస',
+'vector-namespace-user' => 'వాడుకరి పేజీ',
+'vector-view-create' => 'సృష్టించు',
+'vector-view-edit' => 'మార్చు',
+'vector-view-history' => 'చరిత్రని చూడండి',
+'vector-view-view' => 'చదువు',
+'vector-view-viewsource' => 'మూలాన్ని చూడండి',
+'actions' => 'చర్యలు',
+'namespaces' => 'నేంస్పేసులు',
+'variants' => 'వైవిధ్యాలు',
'errorpagetitle' => 'పొరపాటు',
'returnto' => 'తిరిగి $1 పేజీకి వెళ్లు.',
@@ -276,18 +369,22 @@ $messages = array(
'otherlanguages' => 'ఇతర భాషలలొ',
'redirectedfrom' => '($1 నుండి మళ్ళించబడింది)',
'redirectpagesub' => 'దారిమార్పు పేజీ',
-'lastmodifiedat' => 'ఈ పేజీకి $2, $1న చివరి మార్పు జరిగినది.', # $1 date, $2 time
+'lastmodifiedat' => 'ఈ పేజీకి $2, $1న చివరి మార్పు జరిగినది.',
'viewcount' => 'ఈ పేజీ {{PLURAL:$1|ఒక్క సారి|$1 సార్లు}} దర్శించబడింది.',
'protectedpage' => 'సంరక్షణలోని పేజీ',
'jumpto' => 'ఇక్కడికి గెంతు:',
'jumptonavigation' => 'పేజీకి సంబంధించిన లింకులు',
'jumptosearch' => 'అన్వేషణ',
+'view-pool-error' => 'క్షమించండి, ప్రస్తుతం సర్వర్లన్నీ ఓవర్‌లోడ్ అయిఉన్నాయి.
+చాలామంది వాడుకరులు ఈ పేజీని చూస్తున్నారు.
+ఈ పేజీని వీక్షించడానికి కొద్దిసేపు నిరీక్షించండి.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} గురించి',
'aboutpage' => 'Project:గురించి',
'copyright' => 'విషయ సంగ్రహం $1 కి లోబడి లభ్యం.',
-'copyrightpagename' => '{{SITENAME}} ప్రచురణ హక్కు',
'copyrightpage' => '{{ns:project}}:ప్రచురణ హక్కులు',
'currentevents' => 'వర్తమాన ఘటనలు',
'currentevents-url' => 'Project:వర్తమాన ఘటనలు',
@@ -295,8 +392,6 @@ $messages = array(
'disclaimerpage' => 'Project:సాధారణ నిష్పూచీ',
'edithelp' => 'దిద్దుబాటు సహాయం',
'edithelppage' => 'Help:దిద్దుబాట్లు ఎలా చెయ్యాలి',
-'faq' => 'తరచూ అడిగే ప్రశ్నలు',
-'faqpage' => 'Project:తరచూ అడిగే ప్రశ్నలు',
'helppage' => 'Help:సూచిక',
'mainpage' => 'మొదటి పేజీ',
'mainpage-description' => 'మొదటి పేజీ',
@@ -376,10 +471,6 @@ $messages = array(
"$1"
దీనిని "$2" అనే ఫంక్షను నుండి వచ్చింది.
డేటాబేసు ఇచ్చిన లోప-సమాచారం "$3: $4".',
-'noconnect' => 'క్షమించండి! ఈ వికీ కొన్ని సాంకేతిక ఇబ్బందులను ఎదుర్కొంటుంది, అందువలన డాటాబేసు సర్వరును సంప్రదించలేకపోతున్నాం.<br />
-$1',
-'nodb' => '$1 అనే డేటాబేసును ఎంచుకోలేక పోతున్నాను',
-'cachederror' => 'కింది పీజీ ముందే సేకరించి పెట్టుకున్నది, కాబట్టి తాజా మార్పులు దీనిలో లేకపోవచ్చు.',
'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
'readonly' => 'డేటాబేసు లాక్‌చెయ్యబడింది',
'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
@@ -397,6 +488,8 @@ $1',
'readonly_lag' => 'అనుచర (స్లేవ్) డేటాబేసు సర్వర్లు, ప్రధాన (మాస్టరు) సర్వరును అందుకునేందుకుగాను, డేటాబేసు ఆటోమాటిక్‌గా లాకు అయింది.',
'internalerror' => 'అంతర్గత లోపం',
'internalerror_info' => 'అంతర్గత లోపం: $1',
+'fileappenderrorread' => 'చేరుస్తున్నప్పుడు "$1"ని చదవలేకపోయాం.',
+'fileappenderror' => '"$1" ని "$2" తో కూర్చలేకపోతున్నాం',
'filecopyerror' => 'ఫైలు "$1"ని "$2"కు కాపీ చెయ్యటం కుదరలేదు.',
'filerenameerror' => 'ఫైలు "$1" పేరును "$2"గా మార్చటం కుదరలేదు.',
'filedeleteerror' => 'ఫైలు "$1"ని తీసివేయటం కుదరలేదు.',
@@ -406,7 +499,8 @@ $1',
'unexpected' => 'అనుకోని విలువ: "$1"="$2".',
'formerror' => 'లోపం: ఈ ఫారాన్ని పంపించలేకపోతున్నాను',
'badarticleerror' => 'ఈ పేజీపై ఈ పని చేయడం కుదరదు.',
-'cannotdelete' => 'అడిగిన పేజీ లేదా ఫైలును తీసివేయటం కుదరలేదు. (ఇప్పటికే ఎవరైనా తీసివేసి ఉండవచ్చు)',
+'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
+దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
'badtitle' => 'తప్పు శీర్షిక',
'badtitletext' => 'మీరు కోరిన పేజీ పేరు సరైయినది కాదు, ఖాళీగా ఉంది, లేదా తప్పుగా చేర్చిన అంతర్వికీ లింకు అయ్యుండాలి. పేజీ పేర్లలో ఉపయోగించకూడని అక్షరాలు వాటిలో ఉన్నట్లున్నాయి.',
'perfcached' => 'కింది డేటా ముందే సేకరించి పెట్టుకున్నది. కాబట్టి తాజా డేటాతో పోలిస్తే తేడాలుండవచ్చు.',
@@ -440,7 +534,6 @@ $2',
'virus-unknownscanner' => 'అజ్ఞాత యాంటీవైరస్:',
# Login and logout pages
-'logouttitle' => 'సభ్యుని నిష్క్రమణ',
'logouttext' => "'''ఇప్పుడు మీరు నిష్క్రమించారు.'''
మీరు {{SITENAME}}ని అజ్ఞాతంగా వాడుతూండొచ్చు, లేదా ఇదే వాడుకరిగా కానీ లేదా వేరే వాడుకరిగా కానీ [[Special:UserLogin|మళ్ళీ ప్రవేశించవచ్చు]].
@@ -449,7 +542,6 @@ $2',
మీ ఖాతాని సృష్టించాం.
మీ [[Special:Preferences|{{SITENAME}} అభిరుచులను]] మార్చుకోవడం మరువకండి.',
-'loginpagetitle' => 'వాడుకరి ప్రవేశం',
'yourname' => 'వాడుకరిపేరు:',
'yourpassword' => 'మీ సంకేతపదం',
'yourpasswordagain' => 'మళ్లీ సంకేతపదం ఇవ్వండి',
@@ -460,6 +552,7 @@ $2',
'nav-login-createaccount' => 'లోనికి ప్రవేశించండి / ఖాతాని సృష్టించుకోండి',
'loginprompt' => '{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.',
'userlogin' => 'ప్రవేశం / ఖాతా సృష్టింపు',
+'userloginnocreate' => 'ప్రవేశించండి',
'logout' => 'నిష్క్రమించు',
'userlogout' => 'నిష్క్రమించు',
'notloggedin' => 'లోనికి ప్రవేశించి లేరు',
@@ -472,27 +565,8 @@ $2',
'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
'userexists' => 'మీరిచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
వేరే పేరు ఎంచుకోండి.',
-'youremail' => 'మీ ఈ-మెయిలు*',
-'username' => 'వాడుకరిపేరు:',
-'uid' => 'వాడుకరి ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|గుంపు|గుంపుల}} లో సభ్యులు:',
-'yourrealname' => 'అసలు పేరు*',
-'yourlanguage' => 'భాష:',
-'yournick' => 'ముద్దు పేరు',
-'badsig' => 'సంతకాన్ని సరిగ్గా ఇవ్వలేదు; HTML ట్యాగులను ఒకసారి పరిశీలించండి.',
-'badsiglength' => 'మీ సంతకం చాలా పెద్దగా ఉంది.
-ఇది తప్పనిసరిగా $1 {{PLURAL:$1|అక్షరం|అక్షరాల}} లోపులోనే ఉండాలి.',
-'yourgender' => 'లింగం:',
-'gender-unknown' => 'వెల్లడించకండి',
-'gender-male' => 'పురుషుడు',
-'gender-female' => 'స్త్రీ',
-'prefs-help-gender' => 'ఐచ్ఛికం: లింగ-సమంజసమైన సంబోధనలకు ఈ మృదుఉపకరణం వాడుకుంటుంది. ఈ సమాచారం బహిర్గతమౌతుంది.',
-'email' => 'ఈ-మెయిలు',
-'prefs-help-realname' => 'అసలు పేరు (తప్పనిసరి కాదు), మీ అసలు పేరు ఇస్తేగనక, మీ రచనలన్నీ మీ అసలు పేరుతోనే గుర్తిస్తూ ఉంటారు.',
'loginerror' => 'ప్రవేశంలో పొరపాటు',
-'prefs-help-email' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి కాదు, కానీ మీరు మీ సంకేతపదం మర్చిపోతే కొత్త సంకేతపదాన్ని మీకు పంపించడానికి పనికొస్తుంది.
-ఈ-మెయిలు ఇస్తే, మీ అస్తిత్వాన్ని బయల్పరచనవసరం లేకుండానే ఇతరులు మీ వాడుకరి లేదా వాడుకరి_చర్చ పేజీల ద్వారా మిమ్మల్ని సంప్రదించవచ్చా అని కూడా మీరు ఎంచుకోవచ్చు.',
-'prefs-help-email-required' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి.',
+'createaccounterror' => 'ఖాతాని సృష్టించలేకపోయాం: $1',
'nocookiesnew' => 'ఖాతాని సృష్టించాం, కానీ ఇంకా లోనికి ప్రవేశించలేదు.
వాడుకరుల ప్రవేశానికి {{SITENAME}} కూకీలను వాడుతుంది.
మీరు కూకీలని అచేతనం చేసివున్నారు.
@@ -508,16 +582,18 @@ $2',
అక్షరక్రమం సరిచూసుకోండి, లేదా [[Special:UserLogin/signup|కొత్త ఖాతా సృష్టించుకోండి]].',
'nosuchusershort' => '"<nowiki>$1</nowiki>" అనే పేరుతో సభ్యులు లేరు. పేరు సరి చూసుకోండి.',
'nouserspecified' => 'సభ్యనామాన్ని తప్పనిసరిగా ఎంచుకోవాలి.',
+'login-userblocked' => 'ఈ వాడుకరిని నిరోధించారు. ప్రవేశానికి అనుమతి లేదు.',
'wrongpassword' => 'ఈ సంకేతపదం సరైనది కాదు. దయచేసి మళ్లీ ప్రయత్నించండి.',
'wrongpasswordempty' => 'ఖాళీ సంకేతపదం ఇచ్చారు. మళ్ళీ ప్రయత్నించండి.',
-'passwordtooshort' => 'మీ సంకేతపదం తప్పు లేదా మరీ చిన్నగా వుంది.
-అది కనీసం {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} పొడవు ఉండి మరియు మీ వాడుకరిపేరు కాకుండా ఉండాలి.',
+'passwordtooshort' => 'మీ సంకేతపదం కనీసం {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} పొడవు ఉండాలి.',
+'password-name-match' => 'మీ సంకేతపదం మీ వాడుకరిపేరుకి భిన్నంగా ఉండాలి.',
'mailmypassword' => 'కొత్త సంకేతపదాన్ని ఈ-మెయిల్లో పంపించు',
'passwordremindertitle' => '{{SITENAME}} కోసం ఒక కొత్త సంకేతపదము వచ్చింది',
'passwordremindertext' => '{{SITENAME}} ($4) లో కొత్త సంకేతపదం పంపించమని ఎవరో (బహుశ మీరే, ఐ.పీ. చిరునామా $1 నుండి) అడిగారు. వాడుకరి "$2" కొరకు "$3" అనే తాత్కాలిక సంకేతపదం సిద్ధంచేసి ఉంచాం. మీ ఉద్దేశం అదే అయితే, ఇప్పుడు మీరు సైటులోనికి ప్రవేశించి కొత్త సంకేతపదాన్ని ఎంచుకోవచ్చు. మీ తాత్కాలిక సంకేతపదం {{PLURAL:$5|ఒక రోజు|$5 రోజుల}}లో కాలంచెల్లుతుంది.
ఒకవేళ ఈ అభ్యర్థన మీరుకాక మరెవరో చేసారనుకున్నా లేదా మీ సంకేతపదం మీకు గుర్తుకువచ్చి దాన్ని మార్చకూడదు అనుకుంటున్నా, ఈ సందేశాన్ని మర్చిపోయి మీ పాత సంకేతపదాన్ని వాడడం కొనసాగించవచ్చు.',
'noemail' => 'సభ్యులు "$1"కు ఈ-మెయిలు చిరునామా నమోదయి లేదు.',
+'noemailcreate' => 'మీరు సరైన ఈమెయిల్ చిరునామాని ఇవ్వాలి',
'passwordsent' => '"$1" గారు! మీరు నమోదు చేసుకున్న ఈ-మెయిలు చిరునామాకు ఒక కొత్త సంకేతపదము పంపబడినది.
అది అందిన తర్వాత దయచేసి మరలా లాగిన్‌ అవ్వండి.',
'blocked-mailpassword' => 'దిద్దుబాట్లు చెయ్యకుండా ఈ ఐపీఅడ్రసును నిరోధించాం. అంచేత, దుశ్చర్యల నివారణ కోసం గాను, మరచిపోయిన సంకేతపదాన్ని పొందే అంశాన్ని అనుమతించము.',
@@ -541,9 +617,11 @@ $2',
మీరు లోనికి ప్రవేశించి మీ సంకేతపదాన్ని ఇప్పుడే మార్చుకోవాలి.
ఈ ఖాతాని పొరపాటున సృష్టిస్తే గనక, ఈ సందేశాన్ని పట్టించుకోకండి.',
+'usernamehasherror' => 'వాడుకరిపేరులో హాష్ అక్షరాలు ఉండకూడదు',
'login-throttled' => 'గత కొద్దిసేపటి నుండి మీరు చాలా ప్రవేశ ప్రయత్నాలు చేసారు.
మళ్ళీ ప్రయత్నించే ముందు కాసేపు వేచివుండండి.',
'loginlanguagelabel' => 'భాష: $1',
+'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
# Password reset dialog
'resetpass' => 'సంకేతపదాన్ని మార్చండి',
@@ -555,14 +633,13 @@ $2',
'retypenew' => 'సంకేతపదం, మళ్ళీ',
'resetpass_submit' => 'సంకేతపదాన్ని మార్చి లోనికి ప్రవేశించండి',
'resetpass_success' => 'మీ సంకేతపదాన్ని జయప్రదంగా మార్చాం! ఇక మిమ్మల్ని లోనికి ప్రవేశింపచేస్తున్నాం...',
-'resetpass_bad_temporary' => 'ఈ తాత్కాలిక సంకేతపదం తప్పు. మీ సంకేతపదాన్ని మార్చి ఉండాలి లేదా మరో కొత్త తాత్కాలిక సంకేతపదం కోసం అడిగి ఉండాలి.',
'resetpass_forbidden' => 'సంకేతపదాలను మార్చటం కుదరదు',
'resetpass-no-info' => 'ఈ పేజీని నేరుగా చూడటానికి మీరు లోనికి ప్రవేశించివుండాలి.',
'resetpass-submit-loggedin' => 'సంకేతపదాన్ని మార్చు',
+'resetpass-submit-cancel' => 'రద్దుచేయి',
'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
-'resetpass-logentry' => '$1 యొక్క సంకేతపదాన్ని మార్చారు',
# Edit page toolbar
'bold_sample' => 'బొద్దు అక్షరాలు',
@@ -635,7 +712,6 @@ $2',
'blockededitsource' => "'''$1''' లో '''మీ దిద్దుబాట్ల''' పూర్తి పాఠాన్ని కింద ఇచ్చాం:",
'whitelistedittitle' => 'మార్పులు చెయ్యడానికి ప్రవేశించివుండాలి',
'whitelistedittext' => 'పేజీలకి మార్పులు చెయ్యడానికి మీరు $1 అయి ఉండాలి.',
-'confirmedittitle' => 'మార్పులు చేసేముందు ఈ-మెయిలు చిరునామా ధృవీకరణ తప్పనిసరి',
'confirmedittext' => 'పేజీల్లో మార్పులు చేసేముందు మీ ఈ-మెయిలు చిరునామా ధృవీకరించాలి. [[Special:Preferences|మీ అభిరుచుల]]లో మీ ఈ-మెయిలు చిరునామా రాసి, ధృవీకరించండి.',
'nosuchsectiontitle' => 'విభాగాన్ని కనగొనలేకపోయాం',
'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
@@ -657,9 +733,16 @@ $2',
వేరే పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలు చూడవచ్చు],
లేదా [{{fullurl:{{FULLPAGENAME}}|action=edit}} ఈ పేజీని మార్చవచ్చు]</span>.',
+'noarticletext-nopermission' => 'ప్రస్తుతం ఈ పేజీలో పాఠ్యమేమీ లేదు.
+మీరు ఇతర పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]],
+లేదా <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలలో వెతకండి]</span>.',
'userpage-userdoesnotexist' => '"$1" అనే వాడుకరి ఖాతా నమోదయిలేదు. మీరు ఈ పేజీని సృష్టించ/సరిదిద్దాలనుకుంటే, సరిచూసుకోండి.',
+'userpage-userdoesnotexist-view' => 'వాడుకరి ఖాతా "$1" నమోదుకాలేదు.',
+'blocked-notice-logextract' => 'ప్రస్తుతం ఈ వాడుకరిని నిరోధించారు.
+నిరోధపు చిట్టాలోని చివరి పద్దుని మీ సమాచారం కోసం ఈ క్రింద ఇస్తున్నాం:',
'clearyourcache' => "'''గమనిక - భద్రపరచిన తర్వాత, మార్పులను చూడడానికి మీ విహారిణి యొక్క కోశాన్ని తీసేయాల్సిరావచ్చు.''' '''మొజిల్లా/ ఫైర్‌ఫాక్స్‌ / సఫారి:''' ''Shift'' మీటని నొక్కిపట్టి ''రీలోడ్''ని నొక్కండి లేదా ''Ctrl-F5'' అనే మీటల్ని లేదా ''Ctrl-R'' (మాకింటోషులో ''Command-R'') అనే మీటల్ని కలిపి నొక్కండి; '''కాంకరర్: '''''రీలోడ్''ని నొక్కండి లేదా ''F5'' మీటని నొక్కండి; '''ఒపెరా:''' ''Tools → Preferences'' ద్వారా కోశాన్ని శుభ్రపరచండి; '''ఇంటర్నెట్ ఎక్ప్లోరర్:'''''Ctrl'' మీటని నొక్కిపట్టి ''రీఫ్రెష్''ని నొక్కండి లేదా ''Ctrl-F5'' మీటల్ని కలిపి నొక్కండి.",
-'usercssjsyoucanpreview' => "'''చిట్కా:''' భద్రపరిచేముందు మీ CSS/JSలను పరీక్షించడానికి 'సరిచూడు' అనే బొత్తాన్ని వాడండి.",
+'usercssyoucanpreview' => "'''చిట్కా:''' భద్రపరిచేముందు మీ కొత్త CSSని పరీక్షించడానికి \"{{int:showpreview}}\" అనే బొత్తాన్ని వాడండి.",
+'userjsyoucanpreview' => "'''చిట్కా:''' భద్రపరిచేముందు మీ కొత్త జావాస్క్రిప్టుని పరీక్షించడానికి \"{{int:showpreview}}\" అనే బొత్తాన్ని వాడండి.",
'usercsspreview' => "'''మీరు వాడుకరి CSSను కేవలం సరిచూస్తున్నారని గుర్తుంచుకోండి.'''
'''దాన్నింకా భద్రపరచలేదు!'''",
'userjspreview' => "'''గుర్తుంచుకోండి, మీరింకా మీ వాడుకరి జావాస్క్రిప్ట్&zwnj;ను భద్రపరచలేదు, కేవలం పరీక్షిస్తున్నారు/సరిచూస్తున్నారు!'''",
@@ -700,13 +783,16 @@ $2',
'readonlywarning' => "'''హెచ్చరిక: నిర్వహణ కొరకు డేటాబేసుకి తాళం వేసారు, కాబట్టి మీ మార్పుచేర్పులను ఇప్పుడు భద్రపరచలేరు. మీ మార్పులను ఒక ఫాఠ్య ఫైలులోకి కాపీ చేసి భద్రపరచుకొని, తరువాత సమర్పించండి.'''
తాళం వేసిన నిర్వాహకుడి వివరణ ఇదీ: $1",
-'protectedpagewarning' => "'''హెచ్చరిక: ఈ పేజీ సంరక్షించబడినది, నిర్వాహకులు మాత్రమే మార్చగలరు. మీరు *** రక్షిత పేజీ మార్గదర్శకాలను పాటిస్తున్నారని నిర్ధారించుకోండి.'''",
-'semiprotectedpagewarning' => "'''గమనిక:''' నమోదయిన సభ్యులు మాత్రమే మార్పులు చెయ్యగలిగేలా ఈ పేజీ లాకు చెయ్యబడింది.",
+'protectedpagewarning' => "'''హెచ్చరిక: ఈ పేజీ సంరక్షించబడినది, కనుక నిర్వాహక అనుమతులు ఉన్న వాడుకరులు మాత్రమే మార్చగలరు.'''
+చివరి చిట్టా పద్దుని మీ సమాచారం కోసం ఇక్కడ ఇస్తున్నాం:",
+'semiprotectedpagewarning' => "'''గమనిక:''' నమోదయిన వాడుకరులు మాత్రమే మార్పులు చెయ్యగలిగేలా ఈ పేజీకి సంరక్షించారు.
+మీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:",
'cascadeprotectedwarning' => "'''హెచ్చరిక:''' ఈ పేజీ, కాస్కేడింగు రక్షణలో ఉన్న కింది {{PLURAL:$1|పేజీ|పేజీల్లో}} ఇంక్లూడు అయి ఉంది కాబట్టి, నిర్వాహకులు తప్ప ఇతరులు దిద్దుబాటు చేసే వీలు లేకుండా పేజీని లాకు చేసాం:",
-'titleprotectedwarning' => "హెచ్చరిక: ఈ పేజీకి సంరక్షించారు కనుక దీన్ని సృష్టించడానికి [[Special:ListGroupRights|ప్రత్యేక హక్కులు]] ఉండాలి.'''",
-'templatesused' => 'ఈ పేజీలో వాడిన మూసలు:',
-'templatesusedpreview' => 'ఈ మునుజూపులో వాడిన మూసలు:',
-'templatesusedsection' => 'ఈ విభాగంలో వాడిన మూసలు:',
+'titleprotectedwarning' => "హెచ్చరిక: ఈ పేజీని సంరక్షించారు కాబట్టి దీన్ని సృష్టించడానికి [[Special:ListGroupRights|ప్రత్యేక హక్కులు]] ఉండాలి.'''
+మీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:",
+'templatesused' => 'ఈ పేజీలో వాడిన {{PLURAL:$1|మూస|మూసలు}}:',
+'templatesusedpreview' => 'ఈ మునుజూపులో వాడిన {{PLURAL:$1|మూస|మూసలు}}:',
+'templatesusedsection' => 'ఈ విభాగంలో వాడిన {{PLURAL:$1|మూస|మూసలు}}:',
'template-protected' => '(సంరక్షితం)',
'template-semiprotected' => '(సెమీ-రక్షణలో ఉంది)',
'hiddencategories' => 'ఈ పేజీ {{PLURAL:$1|ఒక దాచిన వర్గంలో|$1 దాచిన వర్గాల్లో}} ఉంది:',
@@ -714,16 +800,18 @@ $2',
'nocreatetext' => '{{SITENAME}}లో కొత్త పేజీలు సృష్టించడాన్ని నియంత్రించారు.
మీరు వెనక్కి వెళ్ళి వేరే పేజీలు మార్చవచ్చు, లేదా [[Special:UserLogin|లోనికి ప్రవేశించండి లేదా ఖాతా సృష్టించుకోండి]].',
'nocreate-loggedin' => 'కొత్త పేజీలను సృష్టించేందుకు మీకు అనుమతి లేదు.',
+'sectioneditnotsupported-title' => 'విభాగపు దిద్దిబాట్లకి తొడ్పాటు లేదు',
+'sectioneditnotsupported-text' => 'ఈ పేజీలో విభాగాల దిద్దుబాటుకి తోడ్పాటు లేదు.',
'permissionserrors' => 'అనుమతుల తప్పిదాలు',
'permissionserrorstext' => 'కింద పేర్కొన్న {{PLURAL:$1|కారణం|కారణాల}} మూలంగా, ఆ పని చెయ్యడానికి మీకు అనుమతిలేదు:',
'permissionserrorstext-withaction' => 'ఈ క్రింది {{PLURAL:$1|కారణం|కారణాల}} వల్ల, మీకు $2 అనుమతి లేదు:',
-'recreate-deleted-warn' => "'''హెచ్చరిక: ఇంతకు మునుపు ఒకసారి తొలగించిన పేజీని మళ్లీ సృష్టిద్దామని మీరు ప్రయత్నిస్తున్నారు.'''
+'recreate-moveddeleted-warn' => "'''హెచ్చరిక: ఇంతకు మునుపు ఒకసారి తొలగించిన పేజీని మళ్లీ సృష్టిద్దామని మీరు ప్రయత్నిస్తున్నారు.'''
ఈ పేజీపై మార్పులు చేసేముందు, అవి ఇక్కడ ఉండతగినవేనా కాదా అని ఒకసారి ఆలోచించండి.
-మీ సౌలభ్యం కొరకు తొలగింపు చిట్టా ఇక్కడ ఇచ్చాము:",
-'deleted-notice' => 'ఈ పేజీని తొలగించారు.
-సమాచారం కొరకు ఈ పేజీ యొక్క తొలగింపు దినచర్యని క్రింద ఇచ్చాం.',
-'deletelog-fulllog' => 'పూర్తి చిట్టా చూడండి',
+మీ సౌలభ్యం కొరకు ఈ పేజీ యొక్క తొలగింపు మరియు తరలింపు చిట్టా ఇక్కడ ఇచ్చాము:",
+'moveddeleted-notice' => 'ఈ పేజీని తొలగించారు.
+సమాచారం కొరకు ఈ పేజీ యొక్క తొలగింపు మరియు తరలింపు చిట్టాని క్రింద ఇచ్చాం.',
+'log-fulllog' => 'పూర్తి చిట్టాని చూడండి',
'edit-hook-aborted' => 'కొక్కెం మార్పుని విచ్ఛిన్నం చేసింది.
అది ఎటువంటి వివరణా ఇవ్వలేదు.',
'edit-gone-missing' => 'పేజీని మార్చలేము.
@@ -746,6 +834,7 @@ $2',
'post-expand-template-argument-category' => 'తొలగించిన మూస ఆర్గ్యుమెంట్లు ఉన్న పేజీలు',
'parser-template-loop-warning' => 'మూస లూపు కనబడింది: [[$1]]',
'parser-template-recursion-depth-warning' => 'మూస రికర్షను లోతు అధిగమించబడింది ($1)',
+'language-converter-depth-warning' => 'భాషా మార్పిడి లోతు పరిమితిని అధిగమించారు ($1)',
# "Undo" feature
'undo-success' => 'దిద్దుబాటును రద్దు చెయ్యవచ్చు. కింది పోలికను చూసి, మీరు చెయ్యదలచినది ఇదేనని నిర్ధారించుకోండి. ఆ తరువాత మార్పులను భద్రపరచి దిద్దుబాటు రద్దును పూర్తి చెయ్యండి.',
@@ -765,7 +854,7 @@ $3 చెప్పిన కారణం: ''$2''",
'currentrev' => 'ప్రస్తుతపు సంచిక',
'currentrev-asof' => '$1 నాటి ప్రస్తుత కూర్పు',
'revisionasof' => '$1 నాటి సంచిక',
-'revision-info' => '$1 నాటి కూర్పు. రచయిత: $2', # Additionally available: $3: revision id
+'revision-info' => '$1 నాటి కూర్పు. రచయిత: $2',
'previousrevision' => '← పాత కూర్పు',
'nextrevision' => 'దీని తరువాతి సంచిక→',
'currentrevisionlink' => 'ప్రస్తుతపు సంచిక',
@@ -777,7 +866,7 @@ $3 చెప్పిన కారణం: ''$2''",
'histlegend' => 'తేడా ఎంపిక: సంచికల యొక్క రేడియో బాక్సులను ఎంచుకొని ఎంటర్‌ నొక్కండి, లేదా పైన/ కింద ఉన్న మీటను నొక్కండి.<br />
సూచిక: (ప్రస్తుత) = ప్రస్తుత సంచికతో కల తేడాలు, (గత) = ఇంతకు ముందరి సంచికతో గల తేడాలు, చి = చిన్న మార్పు',
'history-fieldset-title' => 'చరిత్రలో చూడండి',
-'deletedrev' => '[తొలగించబడినది]',
+'history-show-deleted' => 'తొలగించినవి మాత్రమే',
'histfirst' => 'తొట్టతొలి',
'histlast' => 'చిట్టచివరి',
'historysize' => '({{PLURAL:$1|ఒక బైటు|$1 బైట్లు}})',
@@ -786,65 +875,114 @@ $3 చెప్పిన కారణం: ''$2''",
# Revision feed
'history-feed-title' => 'కూర్పుల చరిత్ర',
'history-feed-description' => 'ఈ పేజీకి వికీలో కూర్పుల చరిత్ర',
-'history-feed-item-nocomment' => '$2 వద్ద ఉన్న $1', # user at time
+'history-feed-item-nocomment' => '$2 వద్ద ఉన్న $1',
'history-feed-empty' => 'మీరడిగిన పేజీ లేదు.
దాన్ని వికీలోంచి తొలగించి ఉండొచ్చు, లేదా పేరు మార్చి ఉండొచ్చు.
సంబంధిత కొత్త పేజీల కోసం [[Special:Search|వికీలో వెతికి చూడండి]].',
# Revision deletion
-'rev-deleted-comment' => '(వ్యాఖ్యను తొలగించాం)',
-'rev-deleted-user' => '(సభ్యనామాన్ని తొలగించాం)',
-'rev-deleted-event' => '(దినచర్యని తొలగించాం)',
-'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
-'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
-ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
-'rev-delundel' => 'చూపించు/దాచు',
-'revisiondelete' => 'కూర్పులను తొలగించు/తొలగింపును రద్దుచెయ్యి',
-'revdelete-nooldid-title' => 'తప్పుడు లక్ష్యపు కూర్పు',
-'revdelete-nooldid-text' => 'ఈ పని ఏ కూర్పు లేదా కూర్పుల మీద చెయ్యాలో మీరు సూచించలేదు, లేదా మీరు సూచించిన కూర్పు లేదు, లేదా ప్రస్తుత కూర్పునే దాచాలని ప్రయత్నిస్తున్నారు.',
-'revdelete-nologtype-title' => 'చిట్టా రకం ఇవ్వలేదు',
-'revdelete-nologtype-text' => 'ఈ చర్య జరపాల్సిన చిట్టా రకాన్ని మీరు పేర్కొననేలేదు.',
-'revdelete-toomanytargets-title' => 'చాలా లక్ష్యాలున్నాయి',
-'revdelete-nologid-title' => 'తప్పుడు చిట్టా పద్దు',
-'revdelete-nologid-text' => 'ఈ పని చేయడానికి మీరు లక్ష్యిత చిట్టా పద్దుని ఇవ్వలేదు లేదా మీరు చెప్పిన పద్దు ఉనికిలో లేదు.',
-'revdelete-selected' => "'''[[:$1]] యొక్క {{PLURAL:$2|ఎంచుకున్న కూర్పు|ఎంచుకున్న కూర్పులు}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|ఎంచుకున్న చిట్టా ఘటన|ఎంచుకున్న చిట్టా ఘటనలు}}:'''",
-'revdelete-text' => "'''తొలగించిన కూర్పులు, ఘటనలూ పేజీ చరితం లోనూ, చిట్టాలలోనూ కనిపిస్తాయి, కానీ వాటిలో కొన్ని భాగాలు సార్వజనికంగా అందుబాటులో ఉండవు.'''
-{{SITENAME}} లోని ఇతర నిర్వాహకులు ఆ దాచిన భాగాలను చూడగలరు మరియు (ఏవిధమైన నియంత్రణలూ లేకుంటే) ఇదే అంతరవర్తి ద్వారా వాటిని పునస్థాపించగలరు.
-
-మీరిది చేయదలిచారని, దీని పరిణామాలు మీకు అర్థమయ్యాయని, మరియు మీరు దీన్ని [[{{MediaWiki:Policy-url}}|విధానం]] ప్రకారమే చేస్తున్నారనీ నిర్థారించండి.",
-'revdelete-suppress-text' => 'అణచివేతను కింది సందర్భాలలో "మాత్రమే" వాడాలి:
+'rev-deleted-comment' => '(వ్యాఖ్యను తొలగించాం)',
+'rev-deleted-user' => '(సభ్యనామాన్ని తొలగించాం)',
+'rev-deleted-event' => '(దినచర్యని తొలగించాం)',
+'rev-deleted-user-contribs' => '[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు - మార్పుచేర్పుల నుండి మార్పుని దాచారు]',
+'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు ఉండవచ్చు.",
+'rev-deleted-text-unhide' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.
+మీరు కావాలనుకుంటే, నిర్వాహకులుగా [$1 ఈ కూర్పుని చూడవచ్చు].",
+'rev-suppressed-text-unhide' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} అణచివేత చిట్టా]లో వివరాలు ఉండొచ్చు.
+ముందుకు సాగాలనుకుంటే ఒక నిర్వాహకుడిగా మీరీ [$1 కూర్పును చూడవచ్చు].",
+'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
+ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
+'rev-suppressed-text-view' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
+ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} అణచివేత చిట్టా]లోవివరాలు ఉండవచ్చు.",
+'rev-deleted-no-diff' => "మీరు తేడాలను చూడలేదు ఎందుకంటే ఒక కూర్పుని '''తొలగించారు'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
+'rev-suppressed-no-diff' => "ఈ తేడాని మీరు చూడలేరు ఎందుకంటే ఒక కూర్పుని '''తొలగించారు'''.",
+'rev-deleted-unhide-diff' => "ఈ తేడాల యొక్క కూర్పులలో ఒకదాన్ని '''తొలగించారు'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.
+మీరు కావాలనుకుంటే నిర్వాహకులుగా [$1 ఈ తేడాని చూడవచ్చు].",
+'rev-suppressed-unhide-diff' => "ఈ తేడా లోని ఒక కూర్పును '''అణచి పెట్టాం'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} అణచివేత చిట్టా]లోవివరాలు ఉండవచ్చు. కావాలనుకుంటే, ఒక నిర్వాహకుడిగా మీరు [$1 ఆ తేడాను చూడవచ్చు].",
+'rev-deleted-diff-view' => "ఈ తేడా లోని ఒక పేజీకూర్పును '''తొలగించాం'''.
+ఒక నిర్వాహకుడిగా మీరు ఈ తేడాను చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లోవివరాలు ఉండవచ్చు.",
+'rev-suppressed-diff-view' => "
+ఈ తేడా లోని ఒక కూర్పును '''అణచి పెట్టాం'''.
+ఒక నిర్వాహకుడిగా మీరు ఈ తేడాను చూడవచ్చు; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} అణచివేత చిట్టా]లోవివరాలు ఉండవచ్చు.",
+'rev-delundel' => 'చూపించు/దాచు',
+'rev-showdeleted' => 'చూపించు',
+'revisiondelete' => 'కూర్పులను తొలగించు/తొలగింపును రద్దుచెయ్యి',
+'revdelete-nooldid-title' => 'తప్పుడు లక్ష్యపు కూర్పు',
+'revdelete-nooldid-text' => 'ఈ పని ఏ కూర్పు లేదా కూర్పుల మీద చెయ్యాలో మీరు సూచించలేదు, లేదా మీరు సూచించిన కూర్పు లేదు, లేదా ప్రస్తుత కూర్పునే దాచాలని ప్రయత్నిస్తున్నారు.',
+'revdelete-nologtype-title' => 'చిట్టా రకం ఇవ్వలేదు',
+'revdelete-nologtype-text' => 'ఈ చర్య జరపాల్సిన చిట్టా రకాన్ని మీరు పేర్కొననేలేదు.',
+'revdelete-nologid-title' => 'తప్పుడు చిట్టా పద్దు',
+'revdelete-nologid-text' => 'ఈ పని చేయడానికి మీరు లక్ష్యిత చిట్టా పద్దుని ఇవ్వలేదు లేదా మీరు చెప్పిన పద్దు ఉనికిలో లేదు.',
+'revdelete-no-file' => 'ఆ పేర్కొన్న ఫైలు ఉనికిలో లేదు.',
+'revdelete-show-file-confirm' => 'మీరు నిజంగానే "<nowiki>$1</nowiki>" ఫైలు యొక్క $2 $3 నాటి తొలగించిన కూర్పుని చూడాలనుకుంటున్నారా?',
+'revdelete-show-file-submit' => 'అవును',
+'revdelete-selected' => "'''[[:$1]] యొక్క {{PLURAL:$2|ఎంచుకున్న కూర్పు|ఎంచుకున్న కూర్పులు}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|ఎంచుకున్న చిట్టా ఘటన|ఎంచుకున్న చిట్టా ఘటనలు}}:'''",
+'revdelete-text' => "'''తొలగించిన కూర్పులు, ఘటనలూ పేజీ చరితం లోనూ, చిట్టాలలోనూ కనిపిస్తాయి, కానీ వాటిలో కొన్ని భాగాలు సార్వజనికంగా అందుబాటులో ఉండవు.'''
+{{SITENAME}} లోని ఇతర నిర్వాహకులు ఆ దాచిన భాగాలను చూడగలరు మరియు (ఏవిధమైన నియంత్రణలూ లేకుంటే) ఇదే అంతరవర్తి ద్వారా వాటిని పునస్థాపించగలరు.",
+'revdelete-confirm' => 'మీరు దీన్ని చేయగోరుతున్నారనీ, దీని పర్యవసానాలు మీకు తెలుసుననీ, మరియు మీరు దీన్ని [[{{MediaWiki:Policy-url}}|విధానం]] ప్రకారమే చేస్తున్నారనీ దయచేసి నిర్ధారించండి.',
+'revdelete-suppress-text' => 'అణచివేతను కింది సందర్భాలలో "మాత్రమే" వాడాలి:
* బురదజల్లే ధోరణిలో ఉన్న సమాచారం
* అనుచితమైన వ్యక్తిగత సమాచారం
* "ఇంటి చిరునామాలు, టెలిఫోను నంబర్లు, సోషల్ సెక్యూరిటీ నంబర్లు, వగైరాలు"',
-'revdelete-legend' => 'సందర్శక నిబంధనలు అమర్చు',
-'revdelete-hide-text' => 'కూర్పు పాఠ్యాన్ని దాచు',
-'revdelete-hide-name' => 'చర్యను, లక్ష్యాన్నీ దాచు',
-'revdelete-hide-comment' => 'దిద్దుబాటు వ్యాఖ్యను దాచు',
-'revdelete-hide-user' => 'దిద్దుబాటు చేసినవారి సభ్యనామాన్ని/ఐపీని దాచు',
-'revdelete-hide-restricted' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
-'revdelete-suppress' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
-'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
-'revdelete-unsuppress' => 'పునస్థాపిత కూర్పులపై నిబంధనలను తీసివెయ్యి',
-'revdelete-log' => 'కారణం:',
-'revdelete-submit' => 'ఎంచుకున్న కూర్పుకు అమలు చెయ్యి',
-'revdelete-logentry' => '[[$1]] కూర్పు కనబడే విధానాన్ని మార్చాం',
-'logdelete-logentry' => '[[$1]] ఘటన కనబడే విధానాన్ని మార్చాం',
-'revdelete-success' => "'''కూర్పు కనబడే విధానాన్ని జయప్రదంగా తాజాకరించాం.'''",
-'logdelete-success' => "'''ఘటన కనబడే విధానాన్ని జయప్రదంగా సెట్ చేసాం.'''",
-'revdel-restore' => 'దృశ్యతని మార్చు',
-'pagehist' => 'పేజీ చరిత్ర',
-'deletedhist' => 'తొలగించిన చరిత్ర',
-'revdelete-content' => 'సమాచారాన్ని',
-'revdelete-summary' => 'మార్పు సంగ్రహం',
-'revdelete-uname' => 'వాడుకరిపేరు',
-'revdelete-restricted' => 'నిర్వాహకులకు ఆంక్షలు విధించాను',
-'revdelete-unrestricted' => 'నిర్వాహకులకున్న ఆంక్షలను ఎత్తేశాను',
-'revdelete-hid' => '$1 చూపించవద్దు',
-'revdelete-unhid' => '$1 చూపించు',
-'revdelete-log-message' => '$2 {{PLURAL:$2|కూర్పు|కూర్పుల}}పై $1',
-'logdelete-log-message' => '$2 {{PLURAL:$2|ఘటన|ఘటనల}}కు $1',
+'revdelete-legend' => 'సందర్శక నిబంధనలు అమర్చు',
+'revdelete-hide-text' => 'కూర్పు పాఠ్యాన్ని దాచు',
+'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
+'revdelete-hide-name' => 'చర్యను, లక్ష్యాన్నీ దాచు',
+'revdelete-hide-comment' => 'దిద్దుబాటు వ్యాఖ్యను దాచు',
+'revdelete-hide-user' => 'దిద్దుబాటు చేసినవారి సభ్యనామాన్ని/ఐపీని దాచు',
+'revdelete-hide-restricted' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
+'revdelete-radio-same' => '(మార్చకు)',
+'revdelete-radio-set' => 'అవును',
+'revdelete-radio-unset' => 'కాదు',
+'revdelete-suppress' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
+'revdelete-unsuppress' => 'పునస్థాపిత కూర్పులపై నిబంధనలను తీసివెయ్యి',
+'revdelete-log' => 'కారణం:',
+'revdelete-submit' => 'ఎంచుకున్న {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} ఆపాదించు',
+'revdelete-logentry' => '[[$1]] కూర్పు కనబడే విధానాన్ని మార్చాం',
+'logdelete-logentry' => '[[$1]] ఘటన కనబడే విధానాన్ని మార్చాం',
+'revdelete-success' => "'''కూర్పు కనబడే విధానాన్ని జయప్రదంగా తాజాకరించాం.'''",
+'revdelete-failure' => "'''కూర్పు కనబడే పద్ధతిని తాజాపరచలేకపోయాం:'''
+$1",
+'logdelete-success' => "'''ఘటన కనబడే విధానాన్ని జయప్రదంగా సెట్ చేసాం.'''",
+'logdelete-failure' => "'''చిట్టా కనబడే పద్ధతిని అమర్చలేకపోయాం:'''
+$1",
+'revdel-restore' => 'దృశ్యతని మార్చు',
+'pagehist' => 'పేజీ చరిత్ర',
+'deletedhist' => 'తొలగించిన చరిత్ర',
+'revdelete-content' => 'సమాచారాన్ని',
+'revdelete-summary' => 'మార్పు సంగ్రహం',
+'revdelete-uname' => 'వాడుకరిపేరు',
+'revdelete-restricted' => 'నిర్వాహకులకు ఆంక్షలు విధించాను',
+'revdelete-unrestricted' => 'నిర్వాహకులకున్న ఆంక్షలను ఎత్తేశాను',
+'revdelete-hid' => '$1 చూపించవద్దు',
+'revdelete-unhid' => '$1 చూపించు',
+'revdelete-log-message' => '$2 {{PLURAL:$2|కూర్పు|కూర్పుల}}పై $1',
+'logdelete-log-message' => '$2 {{PLURAL:$2|ఘటన|ఘటనల}}కు $1',
+'revdelete-hide-current' => '$2, $1 నాటి అంశాన్ని దాచడంలో లోపం దొర్లింది: ఇది ప్రస్తుత కూర్పు.
+దీన్ని దాచలేము.',
+'revdelete-show-no-access' => '$2, $1 నాటి అంశాన్ని చూపడంలో లోపం దొర్లింది: ఇది "నిరోధించబడింది" అని గుర్తించబడింది.
+ఇది మీకు అందుబాటులో లేదు.',
+'revdelete-modify-no-access' => '$2, $1 నాటి అంశాన్ని మార్చడంలో లోపం దొర్లింది: ఇది "నిరోధించబడింది" అని గుర్తించబడింది.
+ఇది మీకు అందుబాటులో లేదు.',
+'revdelete-modify-missing' => '$1 అంశాన్ని మార్చడంలో లోపం దొర్లింది: ఇది డేటాబేసులో కనబడలేదు!',
+'revdelete-no-change' => "'''హెచ్చరిక:''' $2, $1 నాటి అంశానికి మీరడిగిన చూపు అమరికలన్నీ ఈసరికే ఉన్నాయి.",
+'revdelete-concurrent-change' => '$2, $1 నాటి అంశాన్ని మార్చడంలో లోపం దొర్లింది: మీరు మార్చడానికి ప్రయత్నించిన సమయంలోనే వేరొకరు దాని స్థితిని మార్చినట్లుగా కనిపిస్తోంది. ఓసారి లాగ్‌లను చూడండి.',
+'revdelete-only-restricted' => '$2, $1 తేదీ గల అంశాన్ని దాచడంలో పొరపాటు: ఇతర దృశ్యత వికల్పాల్లోంచి ఒకదాన్ని ఎంచుకోకుండా అంశాలని నిర్వాహకులకు కనబడకుండా అణచివెయ్యలేరు.',
+'revdelete-reason-dropdown' => '*సాధారణ తొలగింపు కారణాలు
+** కాపీహక్కుల ఉల్లంఘన
+** అసంబద్ధ వ్యక్తిగత సమాచారం
+** నిందాపూర్వక సమాచారం',
+'revdelete-otherreason' => 'ఇతర/అదనపు కారణం:',
+'revdelete-reasonotherlist' => 'ఇతర కారణం',
+'revdelete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
+'revdelete-offender' => 'కూర్పు రచయిత:',
# Suppression log
'suppressionlog' => 'అణచివేతల చిట్టా',
@@ -881,62 +1019,13 @@ $3 చెప్పిన కారణం: ''$2''",
'mergelogpagetext' => 'ఒక పేజీ చరితాన్ని మరో పేజీ చరితం లోకి ఇటీవల చేసిన విలీనాల జాబితా ఇది.',
# Diffs
-'history-title' => '"$1" కూర్పుల చరితం',
-'difference' => '(సంచికల మధ్య తేడా)',
-'lineno' => 'లైను $1:',
-'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
-'visualcomparison' => 'దృశ్యరూప పోలిక',
-'wikicodecomparison' => 'వికీపాఠ్య పోలిక',
-'editundo' => 'దిద్దుబాటు రద్దుచెయ్యి',
-'diff-multi' => '(మధ్యలో ఉన్న {{PLURAL:$1|ఒక కూర్పును|$1 కూర్పులను}} చూపించటం లేదు.)',
-'diff-movedto' => '$1కి తరలించారు',
-'diff-styleadded' => '$1 శైలిని చేర్చారు',
-'diff-added' => '$1 చేర్చారు',
-'diff-changedto' => '$1కి మార్చారు',
-'diff-movedoutof' => '$1 నుండి తరలించారు',
-'diff-styleremoved' => '$1 శైలిని తొలగించారు',
-'diff-removed' => '$1ని తొలగించారు',
-'diff-changedfrom' => '$1 నుండి మార్చారు',
-'diff-src' => 'మూలం',
-'diff-withdestination' => '$1 గమ్యస్థానంతో',
-'diff-with' => '&#32;$1 తో $2',
-'diff-with-final' => '&#32;మరియు $1 $2',
-'diff-width' => 'వెడల్పు',
-'diff-height' => 'ఎత్తు',
-'diff-p' => "ఒక '''పేరా'''",
-'diff-blockquote' => "ఒక '''వ్యాఖ్య'''",
-'diff-h1' => "ఒక '''లెవెల్ 1 శీర్షిక'''",
-'diff-h2' => "ఒక '''లెవెల్ 2 శీర్షిక'''",
-'diff-h3' => "ఒక '''లెవెల్ 3 శీర్షిక'''",
-'diff-h4' => "ఒక '''లెవెల్ 4 శీర్షిక'''",
-'diff-h5' => "ఒక '''లెవెల్ 5 శీర్షిక'''",
-'diff-pre' => "ఒక '''ముందుగా ఫార్మాట్ చెయ్యబడిన బ్లాక్'''",
-'diff-div' => "ఒక '''విభాగం'''",
-'diff-ul' => "ఒక '''క్రమంలేని జాబితా'''",
-'diff-ol' => "ఒక '''క్రమానుగుణ జాబితా'''",
-'diff-li' => "ఒక '''జాబితాలోని అంశం'''",
-'diff-table' => "ఒక '''పట్టిక'''",
-'diff-tbody' => "ఒక '''పట్టికలోని విషయం'''",
-'diff-tr' => "ఒక '''అడ్డు వరుస'''",
-'diff-td' => "ఒక '''సెల్లు'''",
-'diff-th' => "ఒక '''శీర్షిక'''",
-'diff-br' => "ఒక '''విరుపు'''",
-'diff-hr' => "ఒక '''అడ్డు గీత'''",
-'diff-dl' => "ఒక '''నిర్వచనాల జాబితా'''",
-'diff-dt' => "ఒక '''నిర్వచన పదము'''",
-'diff-dd' => "ఒక '''నిర్వచనం'''",
-'diff-form' => "ఒక '''ఫారం'''",
-'diff-img' => "ఒక '''బొమ్మ'''",
-'diff-a' => "ఒక '''లంకె'''",
-'diff-i' => "'''వాలు'''",
-'diff-b' => "'''బొద్దు'''",
-'diff-font' => "'''ఫాంట్'''",
-'diff-big' => "'''పెద్ద'''",
-'diff-del' => "'''తొలగించబడినది'''",
-'diff-tt' => "'''స్థిర వెడల్పు'''",
-'diff-sub' => "'''పాదాక్షరాలు'''",
-'diff-sup' => "'''శీర్షాక్షరాలు'''",
-'diff-strike' => "'''కొట్టివేత'''",
+'history-title' => '"$1" కూర్పుల చరితం',
+'difference' => '(సంచికల మధ్య తేడా)',
+'lineno' => 'లైను $1:',
+'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
+'showhideselectedversions' => 'ఎంచుకున్న కూర్పులను చూపించు/దాచు',
+'editundo' => 'దిద్దుబాటు రద్దుచెయ్యి',
+'diff-multi' => '(మధ్యలో ఉన్న {{PLURAL:$1|ఒక కూర్పును|$1 కూర్పులను}} చూపించటం లేదు.)',
# Search results
'searchresults' => 'అన్వేషణ ఫలితాలు',
@@ -944,28 +1033,25 @@ $3 చెప్పిన కారణం: ''$2''",
'searchresulttext' => '{{SITENAME}}లో అన్వేషించే విషయమై మరింత సమాచారం కొరకు [[{{MediaWiki:Helppage}}|{{int:help}}]] చూడండి.',
'searchsubtitle' => 'మీరు \'\'\'[[:$1]]\'\'\' కోసం వెతికారు ([[Special:Prefixindex/$1|"$1"తో మొదలయ్యే అన్ని పేజీలు]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"కి లింకు ఉన్న అన్ని పేజీలు]])',
'searchsubtitleinvalid' => "మీరు '''$1''' కోసం వెతికారు",
-'noexactmatch' => "'''\"\$1\" శీర్షికతొ పేజీలేమీలేవు.''' మీరు ఈ శీర్షికతొ పేజీని [[:\$1|సృష్టించవచ్చు]].",
-'noexactmatch-nocreate' => "'''\"\$1\" అనే పేరుతో పేజీ లేదు.'''",
'toomanymatches' => 'చాలా పోలికలు వచ్చాయి, దయచేసి మరో ప్రశ్నని ప్రయత్నించండి',
'titlematches' => 'వ్యాస శీర్షిక సరిపోయింది',
'notitlematches' => 'పేజీ పేరు సరిపోలడం లేదు',
'textmatches' => 'పేజిలోని పాఠం సరిపోలింది',
'notextmatches' => 'పేజీ పాఠ్యమేదీ సరిపోలడం లేదు',
-'prevn' => 'క్రితం $1',
-'nextn' => 'తరువాతి $1',
+'prevn' => 'క్రితం {{PLURAL:$1|$1}}',
+'nextn' => 'తరువాతి {{PLURAL:$1|$1}}',
'prevn-title' => 'గత $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
'nextn-title' => 'తదుపరి $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
'shown-title' => 'పేజీకి $1 {{PLURAL:$1|ఫలితాన్ని|ఫలితాలను}} చూపించు',
-'viewprevnext' => '($1) ($2) ($3) చూపించు.',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) చూపించు.',
'searchmenu-legend' => 'అన్వేషణ ఎంపికలు',
'searchmenu-exists' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేజీ ఉంది'''",
'searchmenu-new' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేరుతో పేజీని సృష్టించు!'''",
'searchhelp-url' => 'Help:సూచిక',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ఈ ఉపసర్గ ఉన్న పేజీలను చూడండి]]',
'searchprofile-articles' => 'విషయపు పేజీలు',
-'searchprofile-articles-and-proj' => 'విషయపు & ప్రాజెక్టు పేజీలు',
-'searchprofile-project' => 'ప్రాజెక్టు పేజీలు',
-'searchprofile-images' => 'ఫైళ్ళు',
+'searchprofile-project' => 'సహాయం మరియు ప్రాజెక్టు పేజీలు',
+'searchprofile-images' => 'బహుళమాధ్యమాలు',
'searchprofile-everything' => 'ప్రతీ ఒక్కటీ',
'searchprofile-advanced' => 'ఉన్నత',
'searchprofile-articles-tooltip' => '$1 లలో వెతకండి',
@@ -973,7 +1059,6 @@ $3 చెప్పిన కారణం: ''$2''",
'searchprofile-images-tooltip' => 'పైళ్ళ కోసం వెతకండి',
'searchprofile-everything-tooltip' => 'అన్ని చోట్లా (చర్చా పేజీలతో సహా) వెతకండి',
'searchprofile-advanced-tooltip' => 'కస్టం నేంస్పేసులలో వెదుకు',
-'prefs-search-nsdefault' => 'డీఫాల్టు గా వెతకండి',
'search-result-size' => '$1 ({{PLURAL:$2|1 పదం|$2 పదాలు}})',
'search-result-score' => 'సంబంధం: $1%',
'search-redirect' => '(దారిమార్పు $1)',
@@ -986,11 +1071,12 @@ $3 చెప్పిన కారణం: ''$2''",
'search-mwsuggest-disabled' => 'సూచనలు వద్దు',
'search-relatedarticle' => 'సంబంధించినవి',
'mwsuggest-disable' => 'AJAX సూచనలను అచేతనంచేయి',
+'searcheverything-enable' => 'అన్ని పేరుబరుల్లో వెతుకు',
'searchrelated' => 'సంబంధించినవి',
'searchall' => 'అన్నీ',
'showingresults' => "కింద ఉన్న {{PLURAL:$1|'''ఒక్క''' ఫలితం|'''$1''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
'showingresultsnum' => "కింద ఉన్న {{PLURAL:$3|'''ఒక్క''' ఫలితం|'''$3''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
-'showingresultstotal' => "{{PLURAL:$4|'''$3'''లోని '''$1''' ఫలితాన్ని|'''$3'''లో '''$1 - $2''' ఫలితాలను}} క్రింద చూపిస్తున్నాం",
+'showingresultsheader' => "'''$4''' కొరకై {{PLURAL:$5|'''$3'''లో '''$1''' ఫలితం|'''$3''' ఫలితాల్లో '''$1 - $2''' వరకు}}",
'nonefound' => "'''గమనిక''': డిఫాల్టుగా కొన్ని నేమ్‌స్పేసుల్లో మాత్రమే వెతుకుతాం. చర్చాపేజీలు, మూసలు మొదలైన వాటితో సహా ఆన్ని నేమ్‌స్పేసుల్లోను వెతికేందుకు మీ అన్వేషకానికి ముందు ''all:'' అనే పదం ఉంచండి. లేదా మీరు వెతకదలచిన నేమ్‌స్పేసును ఆదిపదంగా పెట్టండి.",
'search-nonefound' => 'మీ ప్రశ్నకి సరిపోలిన ఫలితాలేమీ లేవు.',
'powersearch' => 'నిశితంగా వెతుకు',
@@ -998,111 +1084,147 @@ $3 చెప్పిన కారణం: ''$2''",
'powersearch-ns' => 'ఈ పేరుబరుల్లో వెతుకు:',
'powersearch-redir' => 'దారిమార్పులను చూపించు',
'powersearch-field' => 'దీని కోసం వెతుకు:',
+'powersearch-togglelabel' => 'ఎంచుకోవాల్సినవి:',
+'powersearch-toggleall' => 'అన్నీ',
+'powersearch-togglenone' => 'ఏదీకాదు',
'search-external' => 'బయటి అన్వేషణ',
'searchdisabled' => '{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్‌ ఉపయోగించి అన్వేషించవచ్చు. ఒక గమనిక: గూగుల్‌ ద్వారా కాలదోషం పట్టిన ఫలితాలు రావడానికి అవకాశం ఉంది.',
+# Quickbar
+'qbsettings' => 'క్విక్‌బార్',
+'qbsettings-none' => 'ఏదీకాదు',
+'qbsettings-fixedleft' => 'స్థిర ఎడమ',
+'qbsettings-fixedright' => 'స్థిర కుడి',
+'qbsettings-floatingleft' => 'ఎడమకు ఒదిగి',
+'qbsettings-floatingright' => 'కుడికి ఒదిగి',
+
# Preferences page
-'preferences' => 'అభిరుచులు',
-'mypreferences' => 'నా అభిరుచులు',
-'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
-'prefsnologin' => 'లాగిన్‌ అయిలేరు',
-'prefsnologintext' => 'వాడుకరి అభిరుచులను మార్చుకోడానికి, మీరు <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} లోనికి ప్రవేశించి]</span> ఉండాలి.',
-'prefsreset' => 'ఇదివరకటి అభిరుచులు పునరుధ్ధరించబడ్డాయి.',
-'qbsettings' => 'క్విక్‌బార్',
-'qbsettings-none' => 'ఏదీకాదు',
-'qbsettings-fixedleft' => 'స్థిర ఎడమ',
-'qbsettings-fixedright' => 'స్థిర కుడి',
-'qbsettings-floatingleft' => 'ఎడమకు ఒదిగి',
-'qbsettings-floatingright' => 'కుడికి ఒదిగి',
-'changepassword' => 'సంకేతపదం మార్చండి',
-'skin' => 'తొడుగు',
-'skin-preview' => 'మునుజూపు/సరిచూడు',
-'math' => 'గణితం',
-'dateformat' => 'తేదీ ఆకృతి',
-'datedefault' => 'ఏదైనా పరవాలేదు',
-'datetime' => 'తేదీ, సమయం',
-'math_failure' => 'పార్స్ చెయ్యలేకపోయాం',
-'math_unknown_error' => 'గుర్తుతెలియని పొరపాటు',
-'math_unknown_function' => 'తెలియని ఫంక్షన్',
-'math_lexing_error' => 'లెక్సింగ్ లోపం',
-'math_syntax_error' => 'సింటాక్సు లోపం',
-'math_image_error' => 'PNG మార్పిడి విఫలమైంది; latex, dvips, gs లు సరిగా ఇన్‌స్టాలు అయ్యాయో లేదో చూసి, అప్పుడు మార్చండి',
-'math_bad_tmpdir' => 'math తాత్కాలిక డైరెక్టరీని సృష్టించలేకపోడం కానీ, అందులో రాయలేకపోవడంగానీ జరిగింది',
-'math_bad_output' => 'math ఔట్‌పుట్ డైరెక్టరీని సృష్టించలేకపోడం కానీ, అందులో రాయలేకపోవడంగానీ జరిగింది',
-'math_notexvc' => 'texvc ఎక్జిక్యూటబుల్ కనబడడం లేదు; కాన్ఫిగరు చెయ్యడానికి math/README చూడండి.',
-'prefs-personal' => 'వాడుకరి వివరాలు',
-'prefs-rc' => 'ఇటీవలి మార్పులు, మొలకలు',
-'prefs-watchlist' => 'వీక్షణ జాబితా',
-'prefs-watchlist-days' => 'వీక్షణ జాబితాలో చూపించవలసిన రోజులు:',
-'prefs-watchlist-days-max' => '(7 రోజులు గరిష్ఠం)',
-'prefs-watchlist-edits' => 'విస్తృత వీక్షణ జాబితాలో చూపించవలసిన దిద్దుబాట్లు:',
-'prefs-watchlist-edits-max' => '(గరిష్ఠ సంఖ్య: 1000)',
-'prefs-misc' => 'ఇతరాలు',
-'prefs-resetpass' => 'సంకేతపదాన్ని మార్చుకోండి',
-'saveprefs' => 'భద్రపరచు',
-'resetprefs' => 'మునుపటి వలె',
-'restoreprefs' => 'సృష్టించబడినప్పటి అభిరుచులు తిరిగి తీసుకురా',
-'textboxsize' => 'మార్పులు',
-'prefs-edit-boxsize' => 'మార్పుల కిటికీ యొక్క పరిమాణం.',
-'rows' => 'వరుసలు',
-'columns' => 'వరుసలు:',
-'searchresultshead' => 'అన్వేషణ',
-'resultsperpage' => 'పేజీకి ఫలితాలు:',
-'contextlines' => 'హిట్టుకు లైన్లు:',
-'contextchars' => 'లైనుకు సందర్భాలు:',
-'stub-threshold' => '<a href="#" class="stub">మొలక లింకు</a> ఫార్మాటింగు కొరకు హద్దు (బైట్లు):',
-'recentchangesdays' => 'ఇటీవలి మార్పులు లో చూపించవలసిన రోజులు:',
-'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
-'recentchangescount' => 'ఇటీవలి మార్పులు, పేజీల చరిత్ర మరియు చిట్టా పేజీలలో అప్రమేయంగా చూపించాల్సిన మార్పుల సంఖ్య:',
-'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
-'timezonelegend' => 'టైం జోను:',
-'timezonetext' => '¹సర్వరు సమయానికి (యు.టీ.సీ.), మీ స్థానిక సమయానికి మధ్య గల తేడా, గంటల్లో.',
-'localtime' => 'స్థానిక సమయం:',
-'timezoneselect' => 'కాల మండలం:',
-'timezoneuseserverdefault' => 'సర్వరు అమరికని వాడు',
-'timezoneuseoffset' => 'ఇతర (తేడాని ఇవ్వండి)',
-'timezoneoffset' => 'తేడా¹:',
-'servertime' => 'సర్వరు సమయం:',
-'guesstimezone' => 'తేడాను బ్రౌజరు నుండి తీసుకో',
-'timezoneregion-africa' => 'ఆఫ్రికా',
-'timezoneregion-america' => 'అమెరికా',
-'timezoneregion-antarctica' => 'అంటార్కిటికా',
-'timezoneregion-arctic' => 'ఆర్కిటిక్',
-'timezoneregion-asia' => 'ఆసియా',
-'timezoneregion-atlantic' => 'అట్లాంటిక్ మహాసముద్రం',
-'timezoneregion-australia' => 'ఆష్ట్రేలియా',
-'timezoneregion-europe' => 'ఐరోపా',
-'timezoneregion-indian' => 'హిందూ మహాసముద్రం',
-'timezoneregion-pacific' => 'పసిఫిక్ మహాసముద్రం',
-'allowemail' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను రానివ్వు',
-'prefs-searchoptions' => 'అన్వేషణ ఎంపికలు',
-'prefs-namespaces' => 'పేరుబరులు',
-'defaultns' => 'డిఫాల్టుగా ఈ నేంస్పేసులలో అన్వేషించు:',
-'default' => 'అప్రమేయం',
-'files' => 'ఫైళ్ళు',
-'prefs-custom-css' => 'ప్రత్యేక CSS',
-'prefs-custom-js' => 'ప్రత్యేక JS',
+'preferences' => 'అభిరుచులు',
+'mypreferences' => 'నా అభిరుచులు',
+'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
+'prefsnologin' => 'లాగిన్‌ అయిలేరు',
+'prefsnologintext' => 'వాడుకరి అభిరుచులను మార్చుకోడానికి, మీరు <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} లోనికి ప్రవేశించి]</span> ఉండాలి.',
+'changepassword' => 'సంకేతపదం మార్చండి',
+'prefs-skin' => 'తొడుగు',
+'skin-preview' => 'మునుజూపు/సరిచూడు',
+'prefs-math' => 'గణితం',
+'datedefault' => 'ఏదైనా పరవాలేదు',
+'prefs-datetime' => 'తేదీ, సమయం',
+'prefs-personal' => 'వాడుకరి వివరాలు',
+'prefs-rc' => 'ఇటీవలి మార్పులు, మొలకలు',
+'prefs-watchlist' => 'వీక్షణ జాబితా',
+'prefs-watchlist-days' => 'వీక్షణ జాబితాలో చూపించవలసిన రోజులు:',
+'prefs-watchlist-days-max' => '(7 రోజులు గరిష్ఠం)',
+'prefs-watchlist-edits' => 'విస్తృత వీక్షణ జాబితాలో చూపించవలసిన దిద్దుబాట్లు:',
+'prefs-watchlist-edits-max' => '(గరిష్ఠ సంఖ్య: 1000)',
+'prefs-watchlist-token' => 'వీక్షణాజాబితా టోకెను:',
+'prefs-misc' => 'ఇతరాలు',
+'prefs-resetpass' => 'సంకేతపదాన్ని మార్చుకోండి',
+'prefs-email' => 'ఈ-మెయిల్ ఎంపికలు',
+'prefs-rendering' => 'రూపురేఖలు',
+'saveprefs' => 'భద్రపరచు',
+'resetprefs' => 'మునుపటి వలె',
+'restoreprefs' => 'సృష్టించబడినప్పటి అభిరుచులు తిరిగి తీసుకురా',
+'prefs-editing' => 'మార్పులు',
+'prefs-edit-boxsize' => 'మార్పుల కిటికీ యొక్క పరిమాణం.',
+'rows' => 'వరుసలు',
+'columns' => 'వరుసలు:',
+'searchresultshead' => 'అన్వేషణ',
+'resultsperpage' => 'పేజీకి ఫలితాలు:',
+'contextlines' => 'హిట్టుకు లైన్లు:',
+'contextchars' => 'లైనుకు సందర్భాలు:',
+'stub-threshold' => '<a href="#" class="stub">మొలక లింకు</a> ఫార్మాటింగు కొరకు హద్దు (బైట్లు):',
+'recentchangesdays' => 'ఇటీవలి మార్పులు లో చూపించవలసిన రోజులు:',
+'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
+'recentchangescount' => 'అప్రమేయంగా చూపించాల్సిన దిద్దుబాట్ల సంఖ్య:',
+'prefs-help-recentchangescount' => 'ఇది ఇటీవలి మార్పులు, పేజీ చరిత్రలు, మరియు చిట్టాలకు వర్తిస్తుంది.',
+'prefs-help-watchlist-token' => 'ఈ క్షేత్రాన్ని ఒక రహస్య కీతో నింపితే, మీ వీక్షణ జాబితాకు ఒక RSS వడ్డన తయారవుతుంది. ఆ కీ తెలిసిన వారెవరైనా మీ వీక్షణజాబితాను చూడగలుగుతారు. అందుచేత కీని జాగ్రత్తగా ఎంచుకోండి.
+ఇదిగో, అనామతుగా సృష్టించిన ఒక కీ -మీకోసం: $1',
+'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
+'timezonelegend' => 'టైం జోను:',
+'localtime' => 'స్థానిక సమయం:',
+'timezoneuseserverdefault' => 'సర్వరు అమరికని వాడు',
+'timezoneuseoffset' => 'ఇతర (తేడాని ఇవ్వండి)',
+'timezoneoffset' => 'తేడా¹:',
+'servertime' => 'సర్వరు సమయం:',
+'guesstimezone' => 'తేడాను బ్రౌజరు నుండి తీసుకో',
+'timezoneregion-africa' => 'ఆఫ్రికా',
+'timezoneregion-america' => 'అమెరికా',
+'timezoneregion-antarctica' => 'అంటార్కిటికా',
+'timezoneregion-arctic' => 'ఆర్కిటిక్',
+'timezoneregion-asia' => 'ఆసియా',
+'timezoneregion-atlantic' => 'అట్లాంటిక్ మహాసముద్రం',
+'timezoneregion-australia' => 'ఆష్ట్రేలియా',
+'timezoneregion-europe' => 'ఐరోపా',
+'timezoneregion-indian' => 'హిందూ మహాసముద్రం',
+'timezoneregion-pacific' => 'పసిఫిక్ మహాసముద్రం',
+'allowemail' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను రానివ్వు',
+'prefs-searchoptions' => 'అన్వేషణ ఎంపికలు',
+'prefs-namespaces' => 'పేరుబరులు',
+'defaultns' => 'లేకపోతే ఈ నేంస్పేసులలో అన్వేషించు:',
+'default' => 'అప్రమేయం',
+'prefs-files' => 'ఫైళ్ళు',
+'prefs-custom-css' => 'ప్రత్యేక CSS',
+'prefs-custom-js' => 'ప్రత్యేక JS',
+'prefs-reset-intro' => 'ఈ పేజీలో, మీ అభిరుచులను సైటు డిఫాల్టు విలువలకు మార్చుకోవచ్చు. మళ్ళీ వెనక్కి తీసుకుపోలేరు.',
+'prefs-emailconfirm-label' => 'ఈ-మెయిల్ నిర్ధారణ:',
+'prefs-textboxsize' => 'ఎడిటింగ్ విండో పరిమాణం',
+'youremail' => 'మీ ఈ-మెయిలు*',
+'username' => 'వాడుకరిపేరు:',
+'uid' => 'వాడుకరి ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|గుంపు|గుంపుల}} లో సభ్యులు:',
+'prefs-registration' => 'నమోదు సమయం:',
+'yourrealname' => 'అసలు పేరు*',
+'yourlanguage' => 'భాష:',
+'yournick' => 'ముద్దు పేరు',
+'prefs-help-signature' => 'చర్చా పేజీల లోని వ్యాఖ్యలకు "<nowiki>~~~~</nowiki>"తో సంతకం చేస్తే అది మీ సంతకం మరియు కాలముద్రగా మారుతుంది.',
+'badsig' => 'సంతకాన్ని సరిగ్గా ఇవ్వలేదు; HTML ట్యాగులను ఒకసారి పరిశీలించండి.',
+'badsiglength' => 'మీ సంతకం చాలా పెద్దగా ఉంది.
+ఇది తప్పనిసరిగా $1 {{PLURAL:$1|అక్షరం|అక్షరాల}} లోపులోనే ఉండాలి.',
+'yourgender' => 'లింగం:',
+'gender-unknown' => 'వెల్లడించకండి',
+'gender-male' => 'పురుషుడు',
+'gender-female' => 'స్త్రీ',
+'prefs-help-gender' => 'ఐచ్ఛికం: లింగ-సమంజసమైన సంబోధనలకు ఈ మృదుఉపకరణం వాడుకుంటుంది. ఈ సమాచారం బహిర్గతమౌతుంది.',
+'email' => 'ఈ-మెయిలు',
+'prefs-help-realname' => 'అసలు పేరు (తప్పనిసరి కాదు), మీ అసలు పేరు ఇస్తేగనక, మీ రచనలన్నీ మీ అసలు పేరుతోనే గుర్తిస్తూ ఉంటారు.',
+'prefs-help-email' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి కాదు, కానీ మీరు మీ సంకేతపదం మర్చిపోతే కొత్త సంకేతపదాన్ని మీకు పంపించడానికి పనికొస్తుంది.
+ఈ-మెయిలు ఇస్తే, మీ అస్తిత్వాన్ని బయల్పరచనవసరం లేకుండానే ఇతరులు మీ వాడుకరి లేదా వాడుకరి_చర్చ పేజీల ద్వారా మిమ్మల్ని సంప్రదించవచ్చా అని కూడా మీరు ఎంచుకోవచ్చు.',
+'prefs-help-email-required' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి.',
+'prefs-info' => 'ప్రాధమిక సమాచారం',
+'prefs-i18n' => 'అంతర్జాతీయీకరణ',
+'prefs-signature' => 'సంతకం',
+'prefs-dateformat' => 'తేదీ ఆకృతి',
+'prefs-timeoffset' => 'సమయ సవరణ',
+'prefs-advancedediting' => 'ఉన్నత ఎంపికలు',
+'prefs-advancedrc' => 'ఉన్నత ఎంపికలు',
+'prefs-advancedrendering' => 'ఉన్నత ఎంపికలు',
+'prefs-advancedsearchoptions' => 'ఉన్నత ఎంపికలు',
+'prefs-advancedwatchlist' => 'ఉన్నత ఎంపికలు',
+'prefs-display' => 'ప్రదర్శన ఎంపికలు',
+'prefs-diffs' => 'తేడాలు',
# User rights
-'userrights' => 'వాడుకరి హక్కుల నిర్వహణ', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'వాడుకరి సమూహాలను సంభాళించండి',
-'userrights-user-editname' => 'సభ్యనామాన్ని ఇవ్వండి:',
-'editusergroup' => 'వాడుకరి గుంపులను మార్చు',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) అనే పేరుగల సభ్యునికి హక్కులను మారుస్తున్నాము.",
-'userrights-editusergroup' => 'వాడుకరి సమూహాలను మార్చండి',
-'saveusergroups' => 'వాడుకరి గుంపులను భద్రపరచు',
-'userrights-groupsmember' => 'సభ్యులు:',
-'userrights-groups-help' => 'ఈ వాడుకరి ఏయే గుంపులలో ఉండవచ్చో మీరు మార్చవచ్చు.
+'userrights' => 'వాడుకరి హక్కుల నిర్వహణ',
+'userrights-lookup-user' => 'వాడుకరి సమూహాలను సంభాళించండి',
+'userrights-user-editname' => 'సభ్యనామాన్ని ఇవ్వండి:',
+'editusergroup' => 'వాడుకరి గుంపులను మార్చు',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) అనే పేరుగల సభ్యునికి హక్కులను మారుస్తున్నాము.",
+'userrights-editusergroup' => 'వాడుకరి సమూహాలను మార్చండి',
+'saveusergroups' => 'వాడుకరి గుంపులను భద్రపరచు',
+'userrights-groupsmember' => 'సభ్యులు:',
+'userrights-groupsmember-auto' => 'సంభావిత సభ్యులు:',
+'userrights-groups-help' => 'ఈ వాడుకరి ఏయే గుంపులలో ఉండవచ్చో మీరు మార్చవచ్చు.
* టిక్కు పెట్టివుంటే ఆ గుంపులో ఈ వాడుకరి ఉన్నట్టు.
* టిక్కు లేకుంటే ఆ గుంపులో ఈ వాడుకరి లేనట్టు.
* <nowiki>*</nowiki> ఉంటే ఒకసారి ఆ గుంపుని చేర్చాకా మీరు తీసివేయలేరు, లేదా తీసివేసాకా తిరిగి చేర్చలేరు.',
-'userrights-reason' => 'కారణం:',
-'userrights-no-interwiki' => 'ఇతర వికీలలో వాడుకరి హక్కులను మార్చడానికి మీకు అనుమతి లేదు.',
-'userrights-nodatabase' => '$1 అనే డేటాబేసు లేదు లేదా అది స్థానికం కాదు.',
-'userrights-nologin' => 'వాడుకరి హక్కులను ఇవ్వడానికి మీరు తప్పనిసరిగా ఓ నిర్వాహక ఖాతాతో [[Special:UserLogin|లోనికి ప్రవేశించాలి]].',
-'userrights-notallowed' => 'వాడుకరి హక్కులను మార్చగలిగే అనుమతి మీ ఖాతాకు లేదు.',
-'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
-'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
+'userrights-reason' => 'కారణం:',
+'userrights-no-interwiki' => 'ఇతర వికీలలో వాడుకరి హక్కులను మార్చడానికి మీకు అనుమతి లేదు.',
+'userrights-nodatabase' => '$1 అనే డేటాబేసు లేదు లేదా అది స్థానికం కాదు.',
+'userrights-nologin' => 'వాడుకరి హక్కులను ఇవ్వడానికి మీరు తప్పనిసరిగా ఓ నిర్వాహక ఖాతాతో [[Special:UserLogin|లోనికి ప్రవేశించాలి]].',
+'userrights-notallowed' => 'వాడుకరి హక్కులను మార్చగలిగే అనుమతి మీ ఖాతాకు లేదు.',
+'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
+'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
# Groups
'group' => 'గుంపు:',
@@ -1155,6 +1277,7 @@ $3 చెప్పిన కారణం: ''$2''",
'right-bigdelete' => 'చాలా పెద్ద చరితం ఉన్న పేజీలను తొలగించు',
'right-deleterevision' => 'పేజీల ప్రత్యేకించిన కూర్పులను తొలగించు, తొలగింపును నివారించు',
'right-deletedhistory' => 'తొలగింపులను, వాటి పాఠ్యం లేకుండా, చరితంలో చూడు',
+'right-deletedtext' => 'తొలగించిన పాఠ్యాన్ని మరియు తొలగించిన కూర్పుల మధ్య మార్పలని చూడగలగడం',
'right-browsearchive' => 'తొలగించిన పేజీలను వెతుకు',
'right-undelete' => 'పేజీ తొలగింపును రద్దు చెయ్యి',
'right-suppressrevision' => 'నిర్వాహకులకు కనబడకుండా ఉన్న కూర్పులను సమీక్షించి పౌనస్థాపించు',
@@ -1168,6 +1291,8 @@ $3 చెప్పిన కారణం: ''$2''",
'right-editprotected' => 'సంరక్షిత పేజీలలో దిద్దుబటు చెయ్యి (కాస్కేడింగు సంరక్షణ లేనివి)',
'right-editinterface' => 'యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి',
'right-editusercssjs' => 'ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-editusercss' => 'ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-edituserjs' => 'ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
'right-rollback' => 'ఒకానొక పేజీలో చివరి దిద్దుబాటు చేసిన వాడుకరి చేసిన దిద్దుబాట్లను రద్దుచేయి',
'right-markbotedits' => 'వెనక్కి తెచ్చిన దిద్దుబాట్లను బాట్ దిద్దుబాట్లుగా గుర్తించు',
'right-noratelimit' => 'రేటు పరిమితులు ప్రభావం చూపవు',
@@ -1184,6 +1309,8 @@ $3 చెప్పిన కారణం: ''$2''",
'right-siteadmin' => 'డేటాబేసును లాక్, అన్‌లాక్ చెయ్యి',
'right-reset-passwords' => 'మిగతా వాడుకరుల సందేశమును మార్చుము',
'right-override-export-depth' => '5 లింకుల లోతు వరకు ఉన్న పేజీలతో సహా, పేజీలను ఎగుమతి చెయ్యి',
+'right-versiondetail' => 'మృదూపకరణ సంచిక యొక్క విస్తరిత సమాచారాన్ని చూడడం',
+'right-sendemail' => 'ఇతర వాడుకరులకు ఈ-మెయిలు పంపించగలగడం',
# User rights log
'rightslog' => 'వాడుకరుల హక్కుల మార్పుల చిట్టా',
@@ -1233,6 +1360,15 @@ $3 చెప్పిన కారణం: ''$2''",
'recentchanges-legend' => 'ఇటీవలి మార్పుల ఎంపికలు',
'recentchangestext' => 'వికీలో ఇటీవలి కాలంలో జరిగిన మార్పులను ఈ పేజీలో చూడండి.',
'recentchanges-feed-description' => 'ఈ ఫీడు ద్వారా వికీలో జరుగుతున్న మార్పుల గురించి ఎప్పటికప్పుడు సమాచారాన్ని పొందండి.',
+'recentchanges-label-legend' => 'సూచిక: $1.',
+'recentchanges-legend-newpage' => '$1 - కొత్త పేజీ',
+'recentchanges-label-newpage' => 'ఈ మార్పు కొత్త పేజీని సృష్టించింది',
+'recentchanges-legend-minor' => '$1 - చిన్న మార్పు',
+'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
+'recentchanges-legend-bot' => '$1 - బాటు చేసిన మార్పు',
+'recentchanges-label-bot' => 'ఈ మార్పును ఒక బాటు చేసింది',
+'recentchanges-legend-unpatrolled' => '$1 - నిఘాలో లేని మార్పు',
+'recentchanges-label-unpatrolled' => 'ఈ దిద్దుబాటు మీద నిఘా లేదు',
'rcnote' => "$4 నాడు $5 సమయానికి, గత {{PLURAL:$2|ఒక్క రోజులో|'''$2''' రోజులలో}} చేసిన చివరి {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
'rclistfrom' => '$1 వద్ద మొదలు పెట్టి కొత్త మార్పులు చూపించు',
@@ -1259,6 +1395,8 @@ $3 చెప్పిన కారణం: ''$2''",
# Recent changes linked
'recentchangeslinked' => 'సంబంధిత మార్పులు',
+'recentchangeslinked-feed' => 'సంబంధిత మార్పులు',
+'recentchangeslinked-toolbox' => 'సంబంధిత మార్పులు',
'recentchangeslinked-title' => '$1 కు సంబంధించిన మార్పులు',
'recentchangeslinked-noresult' => 'మీరిచ్చిన కాలంలో ఇక్కడికి లింకు ఉన్న పేజీలలో ఎటువంటు మార్పులూ జరగలేదు.',
'recentchangeslinked-summary' => "దీనికి లింకై ఉన్న పేజీల్లో జరిగిన చివరి మార్పులు ఇక్కడ చూడవచ్చు. మీ వీక్షణ జాబితాలో ఉన్న పేజీలు '''బొద్దు'''గా ఉంటాయి.",
@@ -1268,8 +1406,8 @@ $3 చెప్పిన కారణం: ''$2''",
# Upload
'upload' => 'దస్త్రపు ఎక్కింపు',
'uploadbtn' => 'దస్త్రాన్ని ఎక్కించు',
-'reupload' => 'మళ్ళీ అప్‌లోడు చెయ్యి',
'reuploaddesc' => 'మళ్ళీ అప్‌లోడు ఫారంకు వెళ్ళు.',
+'upload-tryagain' => 'మార్చిన ఫైలు వివరణని దాఖలుచేయండి',
'uploadnologin' => 'లాగిన్‌ అయిలేరు',
'uploadnologintext' => 'ఫైలు అప్‌లోడు చెయ్యాలంటే, మీరు [[Special:UserLogin|లాగిన్‌]] కావాలి',
'upload_directory_missing' => 'ఎగుమతి డైరెక్టరీ ($1) తప్పింది మరియు వెబ్ సర్వర్ దాన్ని సృష్టించలేకున్నది.',
@@ -1301,6 +1439,7 @@ $3 చెప్పిన కారణం: ''$2''",
'illegalfilename' => '"$1" అనే దస్త్రపుపేరు పేజీ శీర్షికలలో వాడకూడని అక్షరాలను కలిగివుంది.
దస్త్రపు పేరుని మార్చి మళ్ళీ ఎక్కించడానికి ప్రయత్నించండి.',
'badfilename' => 'ఫైలు పేరు "$1"కి మార్చబడినది.',
+'filetype-mime-mismatch' => 'MIME రకంతో దస్త్రపు పొడగింపు సరిపోలలేదు.',
'filetype-badmime' => '"$1" MIME రకం ఉన్న ఫైళ్ళను ఎగుమతికి అనుమతించం.',
'filetype-bad-ie-mime' => 'ఈ ఫైలుని ఎగుమతి చేయలేరు ఎందుకంటే ఇంటర్నెట్ ఎక్స్‌ప్లోరర్ దీన్ని "$1" గా చూపిస్తుంది, ఇది అనుమతి లేని మరియు ప్రమాదకారమైన ఫైలు రకం.',
'filetype-unwanted-type' => "'''\".\$1\"''' అనేది అవాంఛిత ఫైలు రకం.
@@ -1320,7 +1459,6 @@ $3 చెప్పిన కారణం: ''$2''",
* ఎగుమతి చేస్తున్న ఫైలు పేరు: '''<tt>[[:$1]]</tt>'''
* ప్రస్తుతం ఉన్న ఫైలు పేరు: '''<tt>[[:$2]]</tt>'''
దయచేసి మరో పేరు ఎంచుకోండి.",
-'fileexists-thumb' => "<center>'''ప్రస్తుత ఫైలు'''</center>",
'fileexists-thumbnail-yes' => "ఈ ఫైలు కుదించిన బొమ్మ లాగా ఉంది ''(థంబ్‌నెయిలు)''. [[$1|thumb]]
'''<tt>[[:$1]]</tt>''' ఫైలు చూడండి.
గుర్తు పెట్టబడిన ఫైలు అసలు సైజే అది అయితే, మరో థంబ్‌నెయిలును అప్‌లోడు చెయ్యాల్సిన అవసరం లేదు.",
@@ -1335,6 +1473,7 @@ $3 చెప్పిన కారణం: ''$2''",
'file-deleted-duplicate' => 'గతంలో ఈ ఫైలు లాంటిదే ఒక ఫైలుని ([[$1]]) తొలగించివున్నారు. మీరు దీన్ని ఎగుమతి చేసేముందు ఆ ఫైలు యొక్క తొలగింపు చరిత్రని ఒక్కసారి చూడండి.',
'successfulupload' => 'అప్‌లోడు జయప్రదం',
'uploadwarning' => 'ఎక్కింపు హెచ్చరిక',
+'uploadwarning-text' => 'ఫైలు వివరణని క్రింద మార్చి మళ్ళీ ప్రయత్నించండి.',
'savefile' => 'ఫైలు భధ్రపరచు',
'uploadedimage' => '"[[$1]]"ని ఎగుమతి చేసారు',
'overwroteimage' => '"[[$1]]" యొక్క కొత్త కూర్పును ఎగుమతి చేసారు',
@@ -1343,11 +1482,14 @@ $3 చెప్పిన కారణం: ''$2''",
'php-uploaddisabledtext' => 'PHPలో ఫైలు ఎక్కింపులు అచేతనమై ఉన్నాయి.
దయచేసి file_uploads అమరికని చూడండి.',
'uploadscripted' => 'ఈ ఫైల్లో HTML కోడు గానీ స్క్రిప్టు కోడు గానీ ఉంది. వెబ్ బ్రౌజరు దాన్ని పొరపాటుగా అనువదించే అవకాశం ఉంది.',
-'uploadcorrupt' => 'ఫైలు చెడిపోయింది లేదా దాని పేరులోని పొడగింపు తప్పు. ఒకసారి సరిచూసి మళ్ళీ ప్రయత్నించండి.',
'uploadvirus' => 'ఈ ఫైలులో వైరస్‌ ఉంది! వివరాలు: $1',
+'upload-source' => 'మూల ఫైలు',
'sourcefilename' => 'మూలం ఫైలుపేరు:',
+'sourceurl' => 'మూల URL:',
'destfilename' => 'ఉద్దేశించిన ఫైలుపేరు:',
'upload-maxfilesize' => 'గరిష్ట ఫైలు పరిమాణం: $1',
+'upload-description' => 'ఫైలు వివరణ',
+'upload-options' => 'ఎక్కింపు వికల్పాలు',
'watchthisupload' => 'ఈ ఫైలుని గమనించు',
'filewasdeleted' => 'ఇదే పేరుతో ఉన్న ఒక ఫైలును గతంలో అప్లోడు చేసారు, తరువాతి కాలంలో దాన్ని తొలగించారు. దాన్నీ మళ్ళీ అప్లోడు చేసే ముందు, మీరు $1 ను చూడాలి',
'upload-wasdeleted' => "'''హెచ్చరిక: గతంలో తొలగించబడ్డ ఫైలుని మీరు ఎక్కిస్తున్నారు.'''
@@ -1356,12 +1498,43 @@ $3 చెప్పిన కారణం: ''$2''",
సౌలభ్యంకోసం ఈ ఫైలు యొక్క తొలగింపు చిట్టాని ఇక్కడ ఇస్తున్నాం:",
'filename-bad-prefix' => "మీరు అప్లోడు చేస్తున్న ఫైలు పేరు '''\"\$1\"''' తో మొదలవుతుంది. ఇది డిజిటల్ కెమెరాలు ఆటోమాటిగ్గా ఇచ్చే పేరు. మరింత వివరంగా ఉండే పేరును ఎంచుకోండి.",
-'upload-proto-error' => 'తప్పు ప్రోటోకోల్',
-'upload-proto-error-text' => 'రిమోట్ అప్‌లోడులు చెయ్యాలంటే URLలు <code>http://</code> లేదా <code>ftp://</code> తో మొదలు కావాలి.',
-'upload-file-error' => 'అంతర్గత లోపం',
-'upload-file-error-text' => 'సర్వరులో తాత్కాలిక ఫైలును సృష్టించబోగా ఏదో అంతర్గత లోపం తలెత్తింది. ఎవరైనా [[Special:ListUsers/sysop|నిర్వాహకుడిని]] సంప్రదించండి.',
-'upload-misc-error' => 'తెలియని అప్‌లోడు లోపం',
-'upload-misc-error-text' => 'అప్‌లోడు చేస్తూండగా ఏదో తెలియని లోపం తలెత్తింది. URL సరైనదేనని, అది అందుబాటులోనే ఉందని నిర్ధారించుకుని మళ్ళీ ప్రయత్నిందండి. సమస్య అలాగే ఉంటే, సిస్టము నిర్వాహకుని సంప్రదించండి.',
+'upload-proto-error' => 'తప్పు ప్రోటోకోల్',
+'upload-proto-error-text' => 'రిమోట్ అప్‌లోడులు చెయ్యాలంటే URLలు <code>http://</code> లేదా <code>ftp://</code> తో మొదలు కావాలి.',
+'upload-file-error' => 'అంతర్గత లోపం',
+'upload-file-error-text' => 'సర్వరులో తాత్కాలిక ఫైలును సృష్టించబోగా ఏదో అంతర్గత లోపం తలెత్తింది. ఎవరైనా [[Special:ListUsers/sysop|నిర్వాహకుడిని]] సంప్రదించండి.',
+'upload-misc-error' => 'తెలియని అప్‌లోడు లోపం',
+'upload-misc-error-text' => 'అప్‌లోడు చేస్తూండగా ఏదో తెలియని లోపం తలెత్తింది. URL సరైనదేనని, అది అందుబాటులోనే ఉందని నిర్ధారించుకుని మళ్ళీ ప్రయత్నిందండి. సమస్య అలాగే ఉంటే, సిస్టము నిర్వాహకుని సంప్రదించండి.',
+'upload-too-many-redirects' => 'ఆ URLలో చాలా దారిమార్పులు ఉన్నాయి',
+'upload-unknown-size' => 'సైజు తెలియదు',
+'upload-http-error' => 'ఒక HTTP పొరపాటు జరిగింది: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'అనుమతిని నిరాకరించారు',
+'img-auth-nopathinfo' => 'PATH_INFO లేదు.
+మీ సర్వరు ఈ సమాచారాన్ని పంపించేందుకు అనువుగా అమర్చి లేదు.
+అది CGI ఆధారితమై ఉండొచ్చు. అంచేత img_auth కు అనుకూలంగా లేదు.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
+'img-auth-notindir' => 'అభ్యర్థించిన తోవ ఎక్కింపు సంచయంలో లేదు.',
+'img-auth-badtitle' => '"$1" నుండి సరైన శీర్షికని నిర్మించలేకపోయాం.',
+'img-auth-nologinnWL' => 'మీరు ప్రవేశించి లేరు మరియు "$1" అనేది తెల్లజాబితాలో లేదు.',
+'img-auth-nofile' => '"$1" అనే ఫైలు ఉనికిలో లేదు.',
+'img-auth-isdir' => 'మీరు "$1" అనే సంచయాన్ని చూడడానికి ప్రయత్నిస్తున్నారు.
+ఫైళ్ళను చూడడానికి మాత్రమే అనుమతివుంది.',
+'img-auth-streaming' => '"$1" ను ప్రసారిస్తున్నాం.',
+'img-auth-public' => 'img_auth.php యొక్క పని, గోప్యవికీలనుండి ఫైళ్ళ వివరాలను బయట పెట్టడం.
+ఇది బహిరంగ వికీగా తయారుచేయబడింది.
+సరైన భద్రత కోసం, img_auth.php ను అచేతనం చేసాం.',
+'img-auth-noread' => '"$1"ని చూడడానికి వాడుకరికి అనుమతి లేదు.',
+
+# HTTP errors
+'http-invalid-url' => 'తప్పుడు URL: $1',
+'http-invalid-scheme' => '"$1" ప్రణాళికలో ఉన్న URLలకు తోడ్పాటులేదు',
+'http-request-error' => 'తెలియని పొరపాటు వల్ల HTTP అభ్యర్థన విఫలమైంది.',
+'http-read-error' => 'HTTP చదువుటలో పొరపాటు.',
+'http-timed-out' => 'HTTP అభ్యర్థనకి కాలం చెల్లింది.',
+'http-curl-error' => 'URLని తేవడంలో పొరపాటు: $1',
+'http-host-unreachable' => 'URLని చేరలేకపోయాం.',
+'http-bad-status' => 'HTTP అభ్యర్ధన చేస్తున్నప్పుడు సమస్య ఉంది: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL కు వెళ్ళలేకపోయాం',
@@ -1370,6 +1543,7 @@ $3 చెప్పిన కారణం: ''$2''",
'upload-curl-error28-text' => 'చాలా సమయం తరువాత కూడా సైటు స్పందించలేదు. సైటు పనిచేస్తూనే ఉందని నిర్ధారించుకుని, కాస్త ఆగి మళ్ళీ ప్రయత్నించండి. రద్దీ కాస్త తక్కువగా ఉన్నపుడు ప్రయత్నిస్తే నయం.',
'license' => 'లైసెన్సు వివరాలు:',
+'license-header' => 'లైసెన్సింగ్',
'nolicense' => 'దేన్నీ ఎంచుకోలేదు',
'license-nopreview' => '(మునుజూపు అందుబాటులో లేదు)',
'upload_source_url' => ' (సార్వజనికంగా అందుబాటులో ఉన్న, సరైన URL)',
@@ -1390,38 +1564,42 @@ $3 చెప్పిన కారణం: ''$2''",
'listfiles_count' => 'కూర్పులు',
# File description page
-'filehist' => 'ఫైలు చరితం',
-'filehist-help' => 'తేదీ/సమయం ను నొక్కి ఆ సమయాన ఫైలు ఎలా ఉండేదో చూడవచ్చు.',
-'filehist-deleteall' => 'అన్నిటినీ తొలగించు',
-'filehist-deleteone' => 'దీన్ని తొలగించు',
-'filehist-revert' => 'తిరుగుసేత',
-'filehist-current' => 'ప్రస్తుత',
-'filehist-datetime' => 'తేదీ/సమయం',
-'filehist-thumb' => 'నఖచిత్రం',
-'filehist-thumbtext' => '$1 యొక్క నఖచిత్ర కూర్పు',
-'filehist-nothumb' => 'నఖచిత్రం లేదు',
-'filehist-user' => 'వాడుకరి',
-'filehist-dimensions' => 'కొలతలు',
-'filehist-filesize' => 'ఫైలు సైజు',
-'filehist-comment' => 'వ్యాఖ్య',
-'imagelinks' => 'ఫైలు లింకులు',
-'linkstoimage' => 'కింది {{PLURAL:$1|పేజీ|$1 పేజీల}} నుండి ఈ ఫైలుకి లింకులు ఉన్నాయి:',
-'linkstoimage-more' => '$1 కంటే ఎక్కువ {{PLURAL:$1|పేజీలు|పేజీలు}} ఈ ఫైలుకి లింకుని కలిగివున్నాయి.
+'file-anchor-link' => 'ఫైలు',
+'filehist' => 'ఫైలు చరితం',
+'filehist-help' => 'తేదీ/సమయం ను నొక్కి ఆ సమయాన ఫైలు ఎలా ఉండేదో చూడవచ్చు.',
+'filehist-deleteall' => 'అన్నిటినీ తొలగించు',
+'filehist-deleteone' => 'దీన్ని తొలగించు',
+'filehist-revert' => 'తిరుగుసేత',
+'filehist-current' => 'ప్రస్తుత',
+'filehist-datetime' => 'తేదీ/సమయం',
+'filehist-thumb' => 'నఖచిత్రం',
+'filehist-thumbtext' => '$1 యొక్క నఖచిత్ర కూర్పు',
+'filehist-nothumb' => 'నఖచిత్రం లేదు',
+'filehist-user' => 'వాడుకరి',
+'filehist-dimensions' => 'కొలతలు',
+'filehist-filesize' => 'ఫైలు సైజు',
+'filehist-comment' => 'వ్యాఖ్య',
+'filehist-missing' => 'ఫైలు కనిపించుటలేదు',
+'imagelinks' => 'ఫైలు లింకులు',
+'linkstoimage' => 'కింది {{PLURAL:$1|పేజీ|$1 పేజీల}} నుండి ఈ ఫైలుకి లింకులు ఉన్నాయి:',
+'linkstoimage-more' => '$1 కంటే ఎక్కువ {{PLURAL:$1|పేజీలు|పేజీలు}} ఈ ఫైలుకి లింకుని కలిగివున్నాయి.
ఈ ఫైలుకి లింకున్న {{PLURAL:$1|మొదటి ఒక పేజీని|మొదటి $1 పేజీలను}} ఈ క్రింది జాబితా చూపిస్తుంది.
[[Special:WhatLinksHere/$2|పూర్తి జాబితా]] కూడా ఉంది.',
-'nolinkstoimage' => 'ఈ ఫైలుకు లింకున్న పేజీలు లేవు.',
-'morelinkstoimage' => 'ఈ ఫైలుకు ఇంకా [[Special:WhatLinksHere/$1| లింకులను]] చూడు',
-'redirectstofile' => 'క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలు ఈ ఫైలుకి దారిమార్పు చెందుతుంది|$1 ఫైళ్ళు ఈ ఫైలుకి దారిమార్పు చెందుతాయి}}:',
-'duplicatesoffile' => 'క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలు ఈ ఫైలుకి నకలు|$1 ఫైళ్ళు ఈ ఫైలుకి నకళ్ళు}} ([[Special:FileDuplicateSearch/$2|మరిన్ని వివరాలు]]):',
-'sharedupload' => 'ఈ ఫైలు $1 నుండి మరియు దీనిని ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూవుండవచ్చు.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'మరింత సమాచారం కొరకు [$1 ఫైలు వివరణ పేజీ] చూడండి.',
-'shareduploadwiki-desc' => 'దీని యొక్క $1 లోని వివరణని క్రింద చూపించాం.',
-'shareduploadwiki-linktext' => 'ఫైలు వివరణ పేజీ',
-'noimage' => 'ఆ పేరుతో ఫైలేమీ లేదు, కానీ మీరు $1',
-'noimage-linktext' => 'ఎగుమతి చెయ్యవచ్చు',
-'uploadnewversion-linktext' => 'ఈ ఫైలు కొత్త కూర్పును అప్‌లోడు చెయ్యండి',
-'shared-repo-from' => '$1 నుండి', # $1 is the repository name
-'shared-repo' => 'సామూహిక నిక్షేపం', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'ఈ ఫైలుకు లింకున్న పేజీలు లేవు.',
+'morelinkstoimage' => 'ఈ ఫైలుకు ఇంకా [[Special:WhatLinksHere/$1| లింకులను]] చూడు',
+'redirectstofile' => 'క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలు ఈ ఫైలుకి దారిమార్పు చెందుతుంది|$1 ఫైళ్ళు ఈ ఫైలుకి దారిమార్పు చెందుతాయి}}:',
+'duplicatesoffile' => 'క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలు ఈ ఫైలుకి నకలు|$1 ఫైళ్ళు ఈ ఫైలుకి నకళ్ళు}} ([[Special:FileDuplicateSearch/$2|మరిన్ని వివరాలు]]):',
+'sharedupload' => 'ఈ ఫైలు $1 నుండి మరియు దీనిని ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూవుండవచ్చు.',
+'sharedupload-desc-there' => 'ఈ ఫైలు $1 నుండి వచ్చింది అలానే ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూ ఉండవచ్చు.
+మరింత సమాచారం కోసం, దయచేసి [$2 ఫైలు వివరణ పేజీ]ని చూడండి.',
+'sharedupload-desc-here' => 'ఈ ఫైలు $1 నుండి మరియు దీనిని ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూ ఉండవచ్చు.
+దీని [$2 ఫైలు వివరణ పేజీ] లో ఉన్న వివరణని క్రింద చూపించాం.',
+'filepage-nofile' => 'ఈ పేరుతో ఏ ఫైలు లేదు.',
+'filepage-nofile-link' => 'ఈ పేరుతో ఏ ఫైలూ లేదు, కానీ మీరు $1 ను అప్‌లోడ్ చెయ్యవచ్చు.',
+'uploadnewversion-linktext' => 'ఈ ఫైలు కొత్త కూర్పును అప్‌లోడు చెయ్యండి',
+'shared-repo-from' => '$1 నుండి',
+'shared-repo' => 'సామూహిక నిక్షేపం',
+'shared-repo-name-wikimediacommons' => 'వికీమీడియా కామన్స్',
# File reversion
'filerevert' => '$1 ను వెనక్కు తీసుకుపో',
@@ -1450,6 +1628,7 @@ $3 చెప్పిన కారణం: ''$2''",
** కాపీహక్కుల ఉల్లంఘన
** డూప్లికేట్ ఫైలు',
'filedelete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
+'filedelete-maintenance' => 'సంరక్షణ నిమిత్తం ఫైళ్ళ తొలగింపు మరియు పునస్థాపనలను తాత్కాలికంగా అచేయతనం చేసారు.',
# MIME search
'mimesearch' => 'బొమ్మల మెటాడేటా(MIME)ను వెతకండి',
@@ -1471,7 +1650,7 @@ $3 చెప్పిన కారణం: ''$2''",
# Random page
'randompage' => 'యాధృచ్ఛిక పేజీ',
-'randompage-nopages' => '"$1" అనే పేరుబరిలో పేజీలేమీ లేవు.',
+'randompage-nopages' => 'ఈ క్రింది {{PLURAL:$2|పెరుబరిలో|పెరుబరులలో}} పేజీలు ఏమి లేవు:$1',
# Random redirect
'randomredirect' => 'యాదృచ్చిక దారిమార్పు',
@@ -1483,6 +1662,7 @@ $3 చెప్పిన కారణం: ''$2''",
'statistics-header-edits' => 'మార్పుల గణాంకాలు',
'statistics-header-views' => 'వీక్షణల గణాంకాలు',
'statistics-header-users' => 'వాడుకరులు',
+'statistics-header-hooks' => 'ఇతర గణాంకాలు',
'statistics-articles' => 'విషయపు పేజీలు',
'statistics-pages' => 'పేజీలు',
'statistics-pages-desc' => 'ఈ వికీలోని అన్ని పేజీలు (చర్చా పేజీలు, దారిమార్పులు, మొదలైనవన్నీ కలుపుకొని).',
@@ -1510,8 +1690,8 @@ $3 చెప్పిన కారణం: ''$2''",
'brokenredirects' => 'తెగిపోయిన దారిమార్పులు',
'brokenredirectstext' => 'కింది దారిమార్పులు లేని-పేజీలకు మళ్ళించుతున్నాయి:',
-'brokenredirects-edit' => '(మార్చు)',
-'brokenredirects-delete' => '(తొలగించు)',
+'brokenredirects-edit' => 'మార్చు',
+'brokenredirects-delete' => 'తొలగించు',
'withoutinterwiki' => 'భాషా లింకులు లేని పేజీలు',
'withoutinterwiki-summary' => 'క్రింది పేజీల నుండి ఇతర భాషా వికీలకు లింకులు లేవు:',
@@ -1618,16 +1798,17 @@ $3 చెప్పిన కారణం: ''$2''",
# Special:Categories
'categories' => 'వర్గాలు',
-'categoriespagetext' => 'ఈ క్రింది వర్గాలు పేజీలను లేదా మాధ్యమాలను కలిగివున్నాయి.
-[[Special:UnusedCategories|వాడుకలో లేని వర్గాలని]] ఇక్కడ చూపించలేదు.
+'categoriespagetext' => 'ఈ క్రింది {{PLURAL:$1|వర్గం పేజీలను లేదా మాధ్యమాలను కలిగివుంది|వర్గాలు పేజీలను లేదా మాధ్యమాలను కలిగివున్నాయి}}.
+[[Special:UnusedCategories|వాడుకలో లేని వర్గాలని]] ఇక్కడ చూపించట్లేదు.
[[Special:WantedCategories|కోరుతున్న వర్గాలను]] కూడా చూడండి.',
'categoriesfrom' => 'ఇక్కడనుండి మొదలుకొని వర్గాలు చూపించు:',
'special-categories-sort-count' => 'సంఖ్యల ప్రకారం క్రమపరచు',
'special-categories-sort-abc' => 'అకారాది క్రమంలో అమర్చు',
# Special:DeletedContributions
-'deletedcontributions' => 'తొలగించబడిన సభ్యుని రచనలు',
-'deletedcontributions-title' => 'తొలగించబడిన సభ్యుని రచనలు',
+'deletedcontributions' => 'తొలగించబడిన సభ్యుని రచనలు',
+'deletedcontributions-title' => 'తొలగించబడిన సభ్యుని రచనలు',
+'sp-deletedcontributions-contribs' => 'మార్పులు చేర్పులు',
# Special:LinkSearch
'linksearch' => 'బయటి లింకులు',
@@ -1642,6 +1823,16 @@ $3 చెప్పిన కారణం: ''$2''",
'listusersfrom' => 'వాడుకరులను ఇక్కడ నుండి చూపించు:',
'listusers-submit' => 'చూపించు',
'listusers-noresult' => 'వాడుకరి దొరకలేదు.',
+'listusers-blocked' => '(నిరోధించారు)',
+
+# Special:ActiveUsers
+'activeusers' => 'క్రియాశీల వాడుకరుల జాబితా',
+'activeusers-intro' => 'ఇది గత $1 {{PLURAL:$1|రోజులో|రోజులలో}} ఏదైనా కార్యకలాపం చేసిన వాడుకరుల జాబితా.',
+'activeusers-count' => 'గడచిన {{PLURAL:$3|ఒక రోజు|$3 రోజుల}}లో $1 {{PLURAL:$1|మార్పు|మార్పులు}}',
+'activeusers-from' => 'వాడుకరులను ఇక్కడ నుండి చూపించు:',
+'activeusers-hidebots' => 'బాట్లను దాచు',
+'activeusers-hidesysops' => 'నిర్వాహకులను దాచు',
+'activeusers-noresult' => 'వాడుకరులెవరూ లేరు.',
# Special:Log/newusers
'newuserlogpage' => 'కొత్త వాడుకరుల చిట్టా',
@@ -1652,17 +1843,23 @@ $3 చెప్పిన కారణం: ''$2''",
'newuserlog-autocreate-entry' => 'ఖాతాని ఆటోమెటిగ్గా సృష్టించాం',
# Special:ListGroupRights
-'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
-'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
+'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
+'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
విడివిడిగా హక్కులకు సంబంధించిన మరింత సమాచారం [[{{MediaWiki:Listgrouprights-helppage}}]] వద్ద లభించవచ్చు.',
-'listgrouprights-group' => 'గుంపు',
-'listgrouprights-rights' => 'హక్కులు',
-'listgrouprights-helppage' => 'Help:గుంపు హక్కులు',
-'listgrouprights-members' => '(సభ్యుల జాబితా)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|గుంపుని|గుంపులను}} చేర్చగలరు: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|గుంపుని|గుంపులను}} తొలగించగలరు: $1',
-'listgrouprights-addgroup-all' => 'అన్ని గుంపులను చేర్చగలరు',
-'listgrouprights-removegroup-all' => 'అన్ని గుంపులను తొలగించగలరు',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
+* <span class="listgrouprights-revoked">వెనక్కి తీసుకున్న హక్కు</span>',
+'listgrouprights-group' => 'గుంపు',
+'listgrouprights-rights' => 'హక్కులు',
+'listgrouprights-helppage' => 'Help:గుంపు హక్కులు',
+'listgrouprights-members' => '(సభ్యుల జాబితా)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|గుంపుని|గుంపులను}} చేర్చగలరు: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|గుంపుని|గుంపులను}} తొలగించగలరు: $1',
+'listgrouprights-addgroup-all' => 'అన్ని గుంపులను చేర్చగలరు',
+'listgrouprights-removegroup-all' => 'అన్ని గుంపులను తొలగించగలరు',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|సమూహాన్ని|సమూహాలని}} తన స్వంత ఖాతాకి చేర్చుకోగలగడం: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|సమూహాన్ని|సమూహాలని}} తన స్వంత ఖాతా నుండి తొలగించుకోవడం: $1',
+'listgrouprights-addgroup-self-all' => 'అన్ని సమూహాలని స్వంత ఖాతాకి చేర్చుకోలగడటం',
+'listgrouprights-removegroup-self-all' => 'స్వంత ఖాతా నుండి అన్ని సమూహాలనూ తొలగించుకోగలగడం',
# E-mail user
'mailnologin' => 'పంపించవలసిన చిరునామా లేదు',
@@ -1736,7 +1933,7 @@ $3 చెప్పిన కారణం: ''$2''",
'enotif_body' => 'ప్రియమైన $WATCHINGUSERNAME,
-{{SITENAME}} పేజీ, $PAGETITLE ని $PAGEEDITDATE తేదీన $PAGEEDITOR గారు $CHANGEDORCREATED. ప్రస్తుత కూర్పు కొరకు $PAGETITLE_URL చూడండి.
+{{SITENAME}}లో $PAGETITLE అనే పేజీని $PAGEEDITDATE సమయానికి $PAGEEDITOR $CHANGEDORCREATED, ప్రస్తుత కూర్పు కొరకు $PAGETITLE_URL చూడండి.
$NEWPAGE
@@ -1746,15 +1943,18 @@ $NEWPAGE
మెయిలు: $PAGEEDITOR_EMAIL
వికీ: $PAGEEDITOR_WIKI
-మీరు ఈ పేజీకి వెళ్తే తప్ప ఇక ముందు ఈ పేజీకి జరిగే మార్పుల గురించిన వార్తలు మీకు పంపించం. మీ వీక్షణ జాబితాలోని పేజీలకు ఉన్న వార్తాహరి జండాను రీసెట్ చేసుకోవచ్చు.
+మీరు ఈ పేజీకి వెళ్తే తప్ప ఇక ముందు ఈ పేజీకి జరిగే మార్పుల గురించిన వార్తలను మీకు పంపించము. మీ వీక్షణజాబితా లోని అన్ని పేజీలకు ఉన్న గమనింపు జెండాలను మార్చుకోవచ్చు.
- మీ {{SITENAME}} వార్తాహర వ్యవస్థ
+ మీ స్నేహపూర్వక {{SITENAME}} గమనింపుల వ్యవస్థ
--
-మీ వీక్షణ జాబితా సెట్టింగులను మార్చేందుకు చూడండి:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+మీ వీక్షణజాబితా అమరికలను మార్చుకునేందుకు,
+{{fullurl:{{#special:Watchlist}}/edit}} ని చూడండి.
-మీ అభిప్రయాలు చెప్పేందుకు, మరింత సహాయానికై:
+ఈ పేజీని మీ వీక్షణజాబితా నుండి తొలగించుకునేందుకు,
+$UNWATCHURL కి వెళ్ళండి.
+
+మీ అభిప్రాయాలు చెప్పేందుకు మరియు మరింత సహాయానికై:
{{fullurl:{{MediaWiki:helppage}}}}',
# Delete
@@ -1766,9 +1966,10 @@ $NEWPAGE
'exblank' => 'పేజీ ఖాళీగా ఉంది',
'delete-confirm' => '"$1"ని తొలగించు',
'delete-legend' => 'తొలగించు',
-'historywarning' => 'హెచ్చరిక: మీరు తొలగించబోయే పేజీకి చరిత్ర ఉంది:',
+'historywarning' => "'''హెచ్చరిక''': మీరు తొలగించబోయే పేజీకి సుమారు $1 {{PLURAL:$1|కూర్పుతో|కూర్పులతో}} చరిత్ర ఉంది:",
'confirmdeletetext' => 'మీరో పేజీనో, బొమ్మనో దాని చరిత్రతోపాటుగా శాశ్వతంగా డేటాబేసు నుండి తీసెయ్యబోతున్నారు. మీరు చెయ్యదలచింది ఇదేననీ, దీని పర్యవసానాలు మీకు తెలుసనీ, దీన్ని [[{{MediaWiki:Policy-url}}|నిభందనల]] ప్రకారమే చేస్తున్నారనీ నిర్ధారించుకోండి.',
'actioncomplete' => 'పని పూర్తయింది',
+'actionfailed' => 'చర్య విఫలమైంది',
'deletedtext' => '"<nowiki>$1</nowiki>" తుడిచివేయబడింది. ఇటీవలి తుడిచివేతలకు సంబంధించిన నివేదిక కొరకు $2 చూడండి.',
'deletedarticle' => '"$1" తుడిచివేయబడినది',
'suppressedarticle' => '"[[$1]]" ను అణచి ఉంచాం',
@@ -1788,19 +1989,20 @@ $NEWPAGE
'delete-warning-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. దాన్ని తొలగిస్తే {{SITENAME}}కి చెందిన డేటాబేసు కార్యాలకు ఆటంకం కలగొచ్చు; అప్రమత్తతో ముందుకుసాగండి.',
# Rollback
-'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
-'rollback_short' => 'రద్దుచేయి',
-'rollbacklink' => 'రద్దుచేయి',
-'rollbackfailed' => 'రద్దుచేయటం విఫలమైంది',
-'cantrollback' => 'రచనను వెనక్కి తీసుకువెళ్ళలేము; ఈ పేజీకి ఇదొక్కటే రచన.',
-'alreadyrolled' => '[[:$1]]లో [[User:$2|$2]] ([[User talk:$2|చర్చ]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) చేసిన చివరి మార్పును రద్దు చెయ్యలేము;
+'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
+'rollback_short' => 'రద్దుచేయి',
+'rollbacklink' => 'రద్దుచేయి',
+'rollbackfailed' => 'రద్దుచేయటం విఫలమైంది',
+'cantrollback' => 'రచనను వెనక్కి తీసుకువెళ్ళలేము; ఈ పేజీకి ఇదొక్కటే రచన.',
+'alreadyrolled' => '[[:$1]]లో [[User:$2|$2]] ([[User talk:$2|చర్చ]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) చేసిన చివరి మార్పును రద్దు చెయ్యలేము;
మరెవరో ఆ పేజీని వెనక్కి మళ్ళించారు, లేదా మార్చారు.
చివరి మార్పులు చేసినవారు: [[User:$3|$3]] ([[User talk:$3|చర్చ]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "దిద్దుబాటు సారాశం: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|చర్చ]]) చేసిన మార్పులను [[User:$1|$1]] యొక్క చివరి కూర్పు వరకు తిప్పికొట్టారు.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 చేసిన దిద్దుబాట్లను వెనక్కు తీసుకెళ్ళాం; తిరిగి $2 చేసిన చివరి కూర్పుకు మార్చాం.',
-'sessionfailure' => 'మీ ప్రవేశపు సెషనుతో ఏదో సమస్య ఉన్నట్లుంది;
+'editcomment' => "దిద్దుబాటు సారాశం: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|చర్చ]]) చేసిన మార్పులను [[User:$1|$1]] యొక్క చివరి కూర్పు వరకు తిప్పికొట్టారు.',
+'revertpage-nouser' => '(తొలగించిన వాడుకరిపేరు) చేసిన మార్పులను [[User:$1|$1]] యొక్క చివరి కూర్పుకి తిప్పికొట్టారు',
+'rollback-success' => '$1 చేసిన దిద్దుబాట్లను వెనక్కు తీసుకెళ్ళాం; తిరిగి $2 చేసిన చివరి కూర్పుకు మార్చాం.',
+'sessionfailure' => 'మీ ప్రవేశపు సెషనుతో ఏదో సమస్య ఉన్నట్లుంది;
సెషను హైజాకు కాకుండా ఈ చర్యను రద్దు చేసాం.
"back" కొట్టి, ఎక్కడి నుండి వచ్చారో ఆ పేజీని మళ్ళీ లోడు చేసి, తిరిగి ప్రయత్నించండి.',
@@ -1818,7 +2020,7 @@ $NEWPAGE
'protectexpiry' => 'గడువు:',
'protect_expiry_invalid' => 'గడువు సమయాన్ని సరిగ్గా ఇవ్వలేదు.',
'protect_expiry_old' => 'మీరిచ్చిన గడువు ప్రస్తుత సమయం కంటే ముందు ఉంది.',
-'protect-unchain' => 'తరలింపు హక్కులపై రక్షణను తీసేయి',
+'protect-unchain-permissions' => 'మరిన్ని సంరక్షణ వికల్పాలను తెరువు',
'protect-text' => "ఈ పెజీ '''<nowiki>$1</nowiki>''' ఎంత సంరక్షణలొ వుందో మీరు ఇక్కడ చూడవచ్చు, మార్చవచ్చు.",
'protect-locked-blocked' => "నిరోధించబడి ఉండగా మీరు సంరక్షణ స్థాయిని మార్చలేరు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:",
'protect-locked-dblock' => "ప్రస్తుతం అమల్లో ఉన్న డేటాబేసు లాకు కారణంగా సంరక్షణ స్థాయిని సెట్ చెయ్యడం కుదరదు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:",
@@ -1845,7 +2047,7 @@ $NEWPAGE
** నిర్మాణాత్మకంగా లేని మార్పుల యుద్ధం
** అధిక రద్దీగల పేజీ',
'protect-edit-reasonlist' => 'సంరక్షణా కారణాలని మార్చండి',
-'protect-expiry-options' => '1 గంట:1 hour,1 రోజు:1 day,1 వారం:1 week,2 వారాలు:2 weeks,1 నెల:1 month,3 నెలలు:3 months,6 నెలలు:6 months,1 సంవత్సరం:1 year,ఎప్పటికీ:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 గంట:1 hour,1 రోజు:1 day,1 వారం:1 week,2 వారాలు:2 weeks,1 నెల:1 month,3 నెలలు:3 months,6 నెలలు:6 months,1 సంవత్సరం:1 year,ఎప్పటికీ:infinite',
'restriction-type' => 'అనుమతి:',
'restriction-level' => 'నియంత్రణ స్థాయి:',
'minimum-size' => 'కనీస పరిమాణం',
@@ -1882,6 +2084,7 @@ $NEWPAGE
'undelete-nodiff' => 'గత కూర్పులేమీ లేవు.',
'undeletebtn' => 'పునఃస్థాపించు',
'undeletelink' => 'చూడండి/పునస్థాపించండి',
+'undeleteviewlink' => 'చూడు',
'undeletereset' => 'మునుపటి వలె',
'undeleteinvert' => 'ఎంపికని తిరగవెయ్యి',
'undeletecomment' => 'కారణం:',
@@ -1917,19 +2120,24 @@ $NEWPAGE
'contributions-title' => '$1 యొక్క మార్పులు-చేర్పులు',
'mycontris' => 'నా మార్పులు-చేర్పులు',
'contribsub2' => '$1 ($2) కొరకు',
-'nocontribs' => 'ఈ విధమైన మార్పులేమీ దొరకలేదు.', # Optional parameter: $1 is the user name
+'nocontribs' => 'ఈ విధమైన మార్పులేమీ దొరకలేదు.',
'uctop' => '(పైది)',
'month' => 'ఈ నెల నుండి (అంతకు ముందువి):',
'year' => 'ఈ సంవత్సరం నుండి (అంతకు ముందువి):',
-'sp-contributions-newbies' => 'కొత్త ఖాతాల యొక్క రచనలని మాత్రమే చూపించు',
-'sp-contributions-newbies-sub' => 'కొత్తవారి కోసం',
-'sp-contributions-newbies-title' => 'కొత్త ఖాతాల వాడుకరుల మార్పుచేర్పులు',
-'sp-contributions-blocklog' => 'నిరోధాల చిట్టా',
-'sp-contributions-logs' => 'చిట్టాలు',
-'sp-contributions-search' => 'రచనల కోసం అన్వేషణ',
-'sp-contributions-username' => 'ఐపీ చిరునామా లేదా వాడుకరిపేరు:',
-'sp-contributions-submit' => 'వెతుకు',
+'sp-contributions-newbies' => 'కొత్త ఖాతాల యొక్క రచనలని మాత్రమే చూపించు',
+'sp-contributions-newbies-sub' => 'కొత్తవారి కోసం',
+'sp-contributions-newbies-title' => 'కొత్త ఖాతాల వాడుకరుల మార్పుచేర్పులు',
+'sp-contributions-blocklog' => 'నిరోధాల చిట్టా',
+'sp-contributions-deleted' => 'తొలగించబడిన వాడుకరి రచనలు',
+'sp-contributions-logs' => 'చిట్టాలు',
+'sp-contributions-talk' => 'చర్చ',
+'sp-contributions-userrights' => 'వాడుకరి హక్కుల నిర్వహణ',
+'sp-contributions-blocked-notice' => 'ఈ వాడుకరిపై ప్రస్తుతం నిరోధం ఉంది.
+నిరోధపు చిట్టాలోని చివరి పద్దుని మీ సమాచారంకోసం ఇస్తున్నాం:',
+'sp-contributions-search' => 'రచనల కోసం అన్వేషణ',
+'sp-contributions-username' => 'ఐపీ చిరునామా లేదా వాడుకరిపేరు:',
+'sp-contributions-submit' => 'వెతుకు',
# What links here
'whatlinkshere' => 'ఇక్కడికి లింకు చేస్తున్న పేజీలు',
@@ -1952,6 +2160,7 @@ $NEWPAGE
# Block/unblock
'blockip' => 'సభ్యుని నిరోధించు',
+'blockip-title' => 'వాడుకరిని నిరోధించు',
'blockip-legend' => 'వాడుకరి నిరోధం',
'blockiptext' => 'ఏదైనా ప్రత్యేక ఐపీ చిరునామానో లేదా వాడుకరిపేరునో రచనలు చెయ్యకుండా నిరోధించాలంటే కింది ఫారాన్ని వాడండి.
కేవలం దుశ్చర్యల నివారణ కోసం మాత్రమే దీన్ని వాడాలి, అదికూడా [[{{MediaWiki:Policy-url}}|విధానాన్ని]] అనుసరించి మాత్రమే.
@@ -1976,7 +2185,7 @@ $NEWPAGE
'ipbenableautoblock' => 'ఈ వాడుకరి వాడిన చివరి ఐపీ అడ్రసును, అలాగే ఆ తరువాత వాడే అడ్రసులను కూడా ఆటోమాటిగ్గా నిరోధించు',
'ipbsubmit' => 'ఈ సభ్యుని నిరోధించు',
'ipbother' => 'వేరే గడువు',
-'ipboptions' => '2 గంటలు:2 hours,1 రోజు:1 day,3 రోజులు:3 days,1 వారం:1 week,2 వారాలు:2 weeks,1 నెల:1 month,3 నెలలు:3 months,6 నెలలు:6 months,1 సంవత్సరం:1 year,ఎప్పటికీ:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 గంటలు:2 hours,1 రోజు:1 day,3 రోజులు:3 days,1 వారం:1 week,2 వారాలు:2 weeks,1 నెల:1 month,3 నెలలు:3 months,6 నెలలు:6 months,1 సంవత్సరం:1 year,ఎప్పటికీ:infinite',
'ipbotheroption' => 'వేరే',
'ipbotherreason' => 'ఇతర/అదనపు కారణం',
'ipbhidename' => 'మార్పులు మరియు జాబితాల నుండి ఈ వాడుకరిపేరుని దాచు',
@@ -2005,9 +2214,11 @@ $NEWPAGE
'ipblocklist-sh-tempblocks' => '$1 తాత్కాలిక నిరోధాలు',
'ipblocklist-sh-addressblocks' => 'ఏక ఐపీ నిరోధాలను $1',
'ipblocklist-submit' => 'వెతుకు',
+'ipblocklist-localblock' => 'స్థానిక నిరోధం',
+'ipblocklist-otherblocks' => 'ఇతర {{PLURAL:$1|నిరోధం|నిరోధాలు}}',
'blocklistline' => '$1, $2లు $3 ($4)ను నిరోధించారు.',
'infiniteblock' => 'అనంతం',
-'expiringblock' => '$1తో కాలం చెల్లుతుంది',
+'expiringblock' => '$1 నాడు $2కి కాలం చెల్లుతుంది',
'anononlyblock' => 'అజ్ఞాతవ్యక్తులు మాత్రమే',
'noautoblockblock' => 'ఆటోమాటిక్ నిరోధాన్ని అశక్తం చేసాం',
'createaccountblock' => 'ఖాతా తెరవడాన్ని నిరోధించాము',
@@ -2021,7 +2232,10 @@ $NEWPAGE
'contribslink' => 'రచనలు',
'autoblocker' => 'మీ ఐ.పీ. అడ్రసును "[[User:$1|$1]]" ఇటీవల వాడుట చేత, అది ఆటోమాటిక్‌గా నిరోధించబడినది. $1ను నిరోధించడానికి కారణం: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'నిరోధాల చిట్టా',
-'blocklog-fulllog' => ' నిరోధపు పూర్తి చిట్టా',
+'blocklog-showlog' => 'ఈ వాడుకరిని గతంలో నిరోధించారు.
+మీ సమాచారం కోసం నిరోధపు చిట్టాని క్రింద ఇచ్చాం:',
+'blocklog-showsuppresslog' => 'ఈ వాడుకరిని గతంలో నిరోధించి, దాచి ఉంచారు.
+వివరాల కోసం అణచివేత చిట్టా కింద చూపబడింది:',
'blocklogentry' => '"[[$1]]" పై నిరోధం అమలయింది. నిరోధ కాలం $2 $3',
'reblock-logentry' => '[[$1]] కై నిరోధపు అమరికలను $2 $3 గడువుతో మార్చారు',
'blocklogtext' => 'వాడుకరుల నిరోధాలు, పునస్థాపనల చిట్టా ఇది. ఆటోమాటిక్‌గా నిరోధానికి గురైన ఐ.పి. చిరునామాలు ఈ జాబితాలో ఉండవు. ప్రస్తుతం అమల్లో ఉన్న నిరోధాలు, నిషేధాల కొరకు [[Special:IPBlockList|ఐ.పి. నిరోధాల జాబితా]]ను చూడండి.',
@@ -2040,9 +2254,11 @@ $NEWPAGE
'ipb_already_blocked' => '"$1" ను ఇప్పటికే నిరోధించాం',
'ipb-needreblock' => '== ఇప్పటికే నిరోధించారు ==
$1ని ఇప్పటికే నిరోధించారు. ఆ అమరికలని మీరు మార్చాలనుకుంటున్నారా?',
+'ipb-otherblocks-header' => 'ఇతర {{PLURAL:$1|నిరోధం|నిరోధాలు}}',
'ipb_cant_unblock' => 'లోపం: నిరోధించిన ఐడీ $1 దొరకలేదు. దానిపై ఉన్న నిరోధాన్ని ఈసరికే తొలగించి ఉండవచ్చు.',
'ipb_blocked_as_range' => 'లోపం: ఐపీ $1 ను నేరుగా నిరోధించలేదు, అంచేత నిరోధాన్ని రద్దుపరచలేము. అయితే, అది $2 శ్రేణిలో భాగంగా నిరోధానికి గురైంది, ఈ శ్రేణిపై ఉన్న నిరోధాన్ని రద్దుపరచవచ్చు.',
'ip_range_invalid' => 'సరైన ఐపీ శ్రేణి కాదు.',
+'ip_range_toolarge' => '/$1 కంటే పెద్దవైన సామూహిక నిరోధాలు అనుమతించబడవు.',
'blockme' => 'నన్ను నిరోధించు',
'proxyblocker' => 'ప్రాక్సీ నిరోధకం',
'proxyblocker-disabled' => 'ఈ ఫంక్షన్ను అశక్తం చేసాం.',
@@ -2051,6 +2267,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'sorbsreason' => '{{SITENAME}} వాడే DNSBLలో మీ ఐపీ అడ్రసు ఒక ఓపెన్ ప్రాక్సీగా నమోదై ఉంది.',
'sorbs_create_account_reason' => 'మీ ఐపీ అడ్రసు DNSBL లో ఓపెను ప్రాక్సీగా నమోదయి ఉంది. మీరు ఎకౌంటును సృష్టించజాలరు.',
'cant-block-while-blocked' => 'నిరోధంలో ఉన్న మీరు ఇతర వాడుకరులపై నిరోధం అమలుచేయలేరు.',
+'cant-see-hidden-user' => 'మీరు నిరోధించదలచిన వాడుకరి ఇప్పటికే నిరోధించబడి, దాచబడి ఉన్నారు. మీకు హక్కు లేదు కాబట్టి, ఆ వాడుకరి నిరోధాన్ని చూడటంగానీ, దాన్ని మార్చడంగానీ చెయ్యలేరు.',
# Developer tools
'lockdb' => 'డాటాబేసును లాక్‌ చెయ్యి',
@@ -2095,6 +2312,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
ఆ సందర్భాలలో, మీరు చర్చా పేజీని కూడా పనిగట్టుకుని తరలించవలసి ఉంటుంది, లేదా ఏకీకృత పరచవలసి ఉంటుంది.",
'movearticle' => 'పేజీని తరలించు',
+'moveuserpage-warning' => "'''హెచ్చరిక:''' మీరు ఒక వాడుకరి పేజీని తరలించబోతున్నారు. పేజీ మాత్రమే తరలించబడుతుందనీ, వాడుకరి పేరుమార్పు జరగదనీ గమనించండి.",
'movenologin' => 'లాగిన్‌ అయిలేరు',
'movenologintext' => 'పేజీని తరలించడానికి మీరు [[Special:UserLogin|లాగిన్‌]] అయిఉండాలి.',
'movenotallowed' => 'పేజీలను తరలించడానికి మీకు అనుమతి లేదు.',
@@ -2105,7 +2323,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'move-watch' => 'ఈ పేజీని గమనించు',
'movepagebtn' => 'పేజీని తరలించు',
'pagemovedsub' => 'తరలింపు విజయవంతమైనది',
-'movepage-moved' => '\'\'\'"$1"ని "$2"కి తరలించాం\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1"ని "$2"కి తరలించాం\'\'\'',
'movepage-moved-redirect' => 'ఒక దారిమార్పుని సృష్టించాం.',
'movepage-moved-noredirect' => 'దారిమార్పుని సృష్టించలేదు.',
'articleexists' => 'ఆ పేరుతో ఇప్పటికే ఒక పేజీ ఉంది, లేదా మీరు ఎంచుకున్న పేరు సరైనది కాదు. వేరే పేరు ఎంచుకోండి.',
@@ -2146,6 +2364,14 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'imageinvalidfilename' => 'టార్గెట్ ఫైలు పేరు సరిగాలేదు',
'fix-double-redirects' => 'పాత పేజీని సూచిస్తున్న దారిమార్పులను తాజాకరించు',
'move-leave-redirect' => 'పాత పేజీని దారిమార్పుగా ఉంచు',
+'protectedpagemovewarning' => "'''హెచ్చరిక:''' ఈ పేజీని సంరక్షించారు కనుక నిర్వాహక హక్కులు కలిగిన వాడుకరులు మాత్రమే దీన్ని తరలించగలరు.
+మీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:",
+'semiprotectedpagemovewarning' => "'''గమనిక:''' ఈ పేజీని సంరక్షించారు కనుక నమోదైన వాడుకరులు మాత్రమే దీన్ని తరలించగలరు.
+మీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:",
+'move-over-sharedrepo' => '== ఫైలు ఉంది ==
+[[:$1]] సామూహిక నిక్షేపంలో ఉంది. ఈ పేరుతో మరొక ఫైలును తరలిస్తే అది ఆ సామూహిక ఫైలును ఓవర్‌రైడు చేస్తుంది.',
+'file-exists-sharedrepo' => 'ఎంచుకున్న ఫైలు పేరు ఇప్పటికే సామాన్య భాండాగారంలో వాడుకలో ఉంది.
+దయచేసి మరొక పేరుని ఎంచుకోండి.',
# Export
'export' => 'ఎగుమతి పేజీలు',
@@ -2167,15 +2393,21 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'export-pagelinks' => 'ఈ లోతు వరకు లింకై ఉన్న పేజీలను చేర్చు:',
# Namespace 8 related
-'allmessages' => 'అన్ని సిస్టం సందేశాలు',
-'allmessagesname' => 'పేరు',
-'allmessagesdefault' => 'డీఫాల్టు పాఠ్యం',
-'allmessagescurrent' => 'ప్రస్తుత పాఠ్యం',
-'allmessagestext' => 'మీడియావికీ నేంస్పేసులో ఉన్న అన్ని సిస్టం సందేశాల జాబితా ఇది.
+'allmessages' => 'అన్ని సిస్టం సందేశాలు',
+'allmessagesname' => 'పేరు',
+'allmessagesdefault' => 'డీఫాల్టు పాఠ్యం',
+'allmessagescurrent' => 'ప్రస్తుత పాఠ్యం',
+'allmessagestext' => 'మీడియావికీ నేంస్పేసులో ఉన్న అన్ని సిస్టం సందేశాల జాబితా ఇది.
మీరు అన్ని వికీపీడియాలకూ కలిపి ఒకేసారి అనువదించాలని అనుకుంటే, దయచేసి [http://www.mediawiki.org/wiki/Localisation మీడియావికీ అనువాదం] మరియూ [http://translatewiki.net బేటావికీ] సైట్లను చూడండి.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' అన్నది అచేతనం చేసి ఉన్నందువల్ల ఈ పేజీని వాడలేరు.",
-'allmessagesfilter' => 'సమాచారం పేరుపై ఫిల్టరు:',
-'allmessagesmodified' => 'మార్చినవాటినే చూపించు',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' అన్నది అచేతనం చేసి ఉన్నందువల్ల ఈ పేజీని వాడలేరు.",
+'allmessages-filter-legend' => 'వడపోత',
+'allmessages-filter' => 'కస్టమైజేషను స్థితిని బట్టి వడకట్టు:',
+'allmessages-filter-unmodified' => 'మార్చాబడనిది',
+'allmessages-filter-all' => 'అన్నీ',
+'allmessages-filter-modified' => 'మార్చబడినది',
+'allmessages-prefix' => 'ఉపసర్గ పై వడపోత:',
+'allmessages-language' => 'భాష:',
+'allmessages-filter-submit' => 'వెళ్ళు',
# Thumbnails
'thumbnail-more' => 'పెద్దది చెయ్యి',
@@ -2185,6 +2417,9 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'djvu_no_xml' => 'DjVu ఫైలు కోసం XMLను తీసుకుని రాలేకపోయాను',
'thumbnail_invalid_params' => 'నఖచిత్రాలకు సరయిన పారామీటర్లు లేవు',
'thumbnail_dest_directory' => 'గమ్యస్థానంలో డైరెక్టరీని సృష్టించలేకపోయాం',
+'thumbnail_image-type' => 'ఈ బొమ్మ రకానికి మద్దతు లేదు',
+'thumbnail_gd-library' => 'అసంపూర్ణ GD సంచయపు ఏర్పాటు: $1 ఫంక్షను లేదు.',
+'thumbnail_image-missing' => 'ఫైలు తప్పిపోయినట్లున్నది: $1',
# Special:Import
'import' => 'పేజీలను దిగుమతి చేసుకోండి',
@@ -2250,6 +2485,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'tooltip-ca-viewsource' => 'ఈ పుటని సంరక్షించారు. మీరు దీని మూలాన్ని చూడవచ్చు',
'tooltip-ca-history' => 'ఈ పేజీ యొక్క గత కూర్పులు.',
'tooltip-ca-protect' => 'ఈ పేజీని సంరక్షించండి',
+'tooltip-ca-unprotect' => 'ఈ పేజీకి సంరక్షణ తీసివేయండి',
'tooltip-ca-delete' => 'ఈ పేజీని తొలగించండి',
'tooltip-ca-undelete' => 'ఈ పేజీని తొలగించడానికి ముందు చేసిన మార్పులను పునఃస్థాపించు',
'tooltip-ca-move' => 'ఈ పేజీని తరలించండి',
@@ -2260,6 +2496,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'tooltip-search-fulltext' => 'పేజీలలో ఈ పాఠ్యం కొరకు వెతుకు',
'tooltip-p-logo' => 'మొదటి పేజీ',
'tooltip-n-mainpage' => 'మొదటి పేజీని దర్శించండి',
+'tooltip-n-mainpage-description' => 'మొదటి పేజీని దర్శించండి',
'tooltip-n-portal' => 'ప్రాజెక్టు గురించి, మీరేం చేయవచ్చు, సమాచారం ఎక్కడ దొరుకుతుంది',
'tooltip-n-currentevents' => 'వర్తమాన ఘటనలకు సంబంధించిన సమాచారాన్ని పొందండి.',
'tooltip-n-recentchanges' => 'వికీలో ఇటీవల జరిగిన మార్పుల జాబితా.',
@@ -2305,10 +2542,12 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
# Attribution
'anonymous' => '{{SITENAME}} యొక్క అజ్ఞాత {{PLURAL:$1|వాడుకరి|వాడుకరులు}}',
'siteuser' => '{{SITENAME}} వాడుకరి $1',
-'lastmodifiedatby' => 'ఈ పేజీకి $3 $2, $1న చివరి మార్పు చేసారు.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} అజ్ఞాత వాడుకరి $1',
+'lastmodifiedatby' => 'ఈ పేజీకి $3 $2, $1న చివరి మార్పు చేసారు.',
'othercontribs' => '$1 యొక్క కృతిపై ఆధారితం.',
'others' => 'ఇతరాలు',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|వాడుకరి|వాడుకరులు}} $1',
+'anonusers' => '{{SITENAME}} అజ్ఞాత {{PLURAL:$2|వాడుకరి|వాడుకరులు}} $1',
'creditspage' => 'పేజీ క్రెడిట్లు',
'nocredits' => 'ఈ పేజీకి క్రెడిట్ల సమాచారం అందుబాటులో లేదు.',
@@ -2338,6 +2577,7 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'skinname-chick' => 'చిక్',
'skinname-simple' => 'సరళ',
'skinname-modern' => 'ఆధునిక',
+'skinname-vector' => 'వెక్టర్',
# Math options
'mw_math_png' => 'ఎల్లప్పుడూ PNGగా చూపించు',
@@ -2347,11 +2587,22 @@ $1ని ఇప్పటికే నిరోధించారు. ఆ అమ
'mw_math_modern' => 'ఆధునిక విహారిణులకు ఉద్దేశించినది',
'mw_math_mathml' => 'వీలయితే MathML (ప్రయోగాత్మకం)',
+# Math errors
+'math_failure' => 'పార్స్ చెయ్యలేకపోయాం',
+'math_unknown_error' => 'గుర్తుతెలియని పొరపాటు',
+'math_unknown_function' => 'తెలియని ఫంక్షన్',
+'math_lexing_error' => 'లెక్సింగ్ లోపం',
+'math_syntax_error' => 'సింటాక్సు లోపం',
+'math_image_error' => 'PNG మార్పిడి విఫలమైంది; latex, dvips, gs లు సరిగా ఇన్‌స్టాలు అయ్యాయో లేదో చూసి, అప్పుడు మార్చండి',
+'math_bad_tmpdir' => 'math తాత్కాలిక డైరెక్టరీని సృష్టించలేకపోడం కానీ, అందులో రాయలేకపోవడంగానీ జరిగింది',
+'math_bad_output' => 'math ఔట్‌పుట్ డైరెక్టరీని సృష్టించలేకపోడం కానీ, అందులో రాయలేకపోవడంగానీ జరిగింది',
+'math_notexvc' => 'texvc ఎక్జిక్యూటబుల్ కనబడడం లేదు; కాన్ఫిగరు చెయ్యడానికి math/README చూడండి.',
+
# Patrolling
'markaspatrolleddiff' => 'పరీక్షించినట్లుగా గుర్తు పెట్టు',
'markaspatrolledtext' => 'ఈ వ్యాసాన్ని పరీక్షించినట్లుగా గుర్తు పెట్టు',
'markedaspatrolled' => 'పరీక్షింపబడినట్లు గుర్తింపబడింది',
-'markedaspatrolledtext' => 'ఎంచుకున్న సంచిక పరీక్షించబడినట్లుగా గుర్తింపబడింది.',
+'markedaspatrolledtext' => '[[:$1]] యొక్క ఎంచుకున్న కూర్పుని పరీక్షించినట్లుగా గుర్తించాం.',
'rcpatroldisabled' => 'ఇటీవలి మార్పుల నిఘాను అశక్తం చేసాం',
'rcpatroldisabledtext' => 'ఇటీవలి మార్పుల నిఘాను ప్రస్తుతానికి అశక్తం చేసాం',
'markedaspatrollederror' => 'నిఘాలో ఉన్నట్లుగా గుర్తించలేకున్నాం',
@@ -2381,13 +2632,10 @@ $1',
'previousdiff' => '← మునుపటి మార్పు',
'nextdiff' => 'తరువాతి మార్పు →',
-# Visual comparison
-'visual-comparison' => 'దృశ్యరూప పోలిక',
-
# Media information
'mediawarning' => "'''హెచ్చరిక''': ఈ రకపు ఫైలులో హానికరమైన కోడ్‌ ఉండవచ్చు.
దాన్ని నడపడం వల్ల, మీ సిస్టమ్ లొంగిపోవచ్చు.",
-'imagemaxsize' => 'బొమ్మ వివరణ పేజీలో బొమ్మ ఉండవలసిన సైజు:',
+'imagemaxsize' => "బొమ్మ పరిమాణంపై పరిమితి:<br />''(దస్త్రపు వివరణ పుటల కొరకు)''",
'thumbsize' => 'నఖచిత్రం వైశాల్యం:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|పేజీ|పేజీలు}}',
'file-info' => '(ఫైలు పరిమాణం: $1, MIME రకం: $2)',
@@ -2396,6 +2644,8 @@ $1',
'svg-long-desc' => '(SVG ఫైలు, నామమాత్రంగా $1 × $2 పిక్సెళ్ళు, ఫైలు పరిమాణం: $3)',
'show-big-image' => 'అసలు పరిమాణం',
'show-big-image-thumb' => '<small>ఈ మునుజూపు సైజు: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'లూపులో పడింది',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ఫ్రేము|ఫ్రేములు}}',
# Special:NewFiles
'newimages' => 'కొత్త ఫైళ్ళ కొలువు',
@@ -2429,7 +2679,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'వెడల్పు',
@@ -2556,14 +2806,14 @@ $1',
'exif-unknowndate' => 'అజ్ఞాత తేదీ',
-'exif-orientation-1' => 'సాధారణ', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'క్షితిజ సమాంతరంగా తిరగేసాం', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° తిప్పాం', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'నిలువుగా తిరగేసాం', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'అపసవ్య దిశలో 90° తిప్పి, నిలువుగా తిరగేసాం', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'సవ్యదిశలో 90° తిప్పాం', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'సవ్యదిశలో 90° తిప్పి, నిలువుగా తిరగేసాం', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'అపసవ్యదిశలో 90° తిప్పాం', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'సాధారణ',
+'exif-orientation-2' => 'క్షితిజ సమాంతరంగా తిరగేసాం',
+'exif-orientation-3' => '180° తిప్పాం',
+'exif-orientation-4' => 'నిలువుగా తిరగేసాం',
+'exif-orientation-5' => 'అపసవ్య దిశలో 90° తిప్పి, నిలువుగా తిరగేసాం',
+'exif-orientation-6' => 'సవ్యదిశలో 90° తిప్పాం',
+'exif-orientation-7' => 'సవ్యదిశలో 90° తిప్పి, నిలువుగా తిరగేసాం',
+'exif-orientation-8' => 'అపసవ్యదిశలో 90° తిప్పాం',
'exif-planarconfiguration-1' => 'స్థూల ఆకృతి',
'exif-planarconfiguration-2' => 'సమతల ఆకృతి',
@@ -2685,7 +2935,7 @@ $1',
'exif-gpsmeasuremode-2' => 'ద్వైమానిక కొలమానం',
'exif-gpsmeasuremode-3' => 'త్రిదిశాత్మక కొలమానం',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'గంటకి కిలోమీటర్లు',
'exif-gpsspeed-m' => 'గంటకి మైళ్ళు',
'exif-gpsspeed-n' => 'ముడులు',
@@ -2704,6 +2954,7 @@ $1',
'watchlistall2' => 'అన్నీ',
'namespacesall' => 'అన్నీ',
'monthsall' => 'అన్నీ',
+'limitall' => 'అన్నీ',
# E-mail address confirmation
'confirmemail' => 'ఈ-మెయిలు చిరునామా ధృవీకరించండి',
@@ -2726,18 +2977,19 @@ $1',
'confirmemail_loggedin' => 'మీ ఈ-మెయిలు చిరునామా ఇప్పుడు రూఢి అయింది.',
'confirmemail_error' => 'మీ ధృవీకరణను భద్రపరచడంలో ఏదో లోపం జరిగింది.',
'confirmemail_subject' => '{{SITENAME}} ఈ-మెయిలు చిరునామా ధృవీకరణ',
-'confirmemail_body' => 'ఈ ఈ-మెయిలు చిరునామాతో $1 ఐ.పి. అడ్రసు నుండి ఎవరో, బహుశా మీరే, {{SITENAME}}లో "$2" అనే ఎకౌంటును సృష్టించారు.
+'confirmemail_body' => '$1 ఐపీ చిరునామా నుండి ఎవరో, బహుశా మీరే,
+{{SITENAME}}లో "$2" అనే ఖాతాని ఈ ఈ-మెయిలు చిరునామాతో నమోదుచేసుకున్నారు.
-ఈ ఎకౌంటు నిజంగా మీదేనని ధృవీకరించేందుకు, అలాగే {{SITENAME}}లో
-ఈ-మెయిలు‌ను వాడటం మొదలుపెట్టేందుకు కింది లింకును మీ బ్రౌజరులో తెరవండి:
+ఆ ఖాతా నిజంగా మీదే అని నిర్ధారించేందుకు మరియు {{SITENAME}}లో ఈ-మెయిలు సౌలభ్యాలని
+చేతనం చేసుకునేందుకు, ఈ లంకెని మీ విహారిణిలో తెరవండి:
$3
-ఒకవేళ అది మీరు *కాకపోతే*, ఈ-మెయిలు చిరునామా నిర్ధారణని రద్దు చేసేందుకు ఈ క్రింది లింకును అనుసరించండి:
+ఒకవేళ ఆ ఖాతా మీది *కాకపోతే*, ఈ-మెయిలు చిరునామా నిర్ధారణని రద్దుచేసేందుకు ఈ లంకెని అనుసరించండి:
$5
-ఈ నిర్ధారణ కోడుకి $4తో కాలం చెల్లుతుంది.',
+ఈ నిర్ధారణా సంకేతం $4కి కాలంచెల్లుతుంది.',
'confirmemail_invalidated' => 'ఈ-మెయిలు చిరునామా నిర్ధారణని రద్దుచేసాం',
'invalidateemail' => 'ఈ-మెయిలు నిర్ధారణని రద్దుచేయండి',
@@ -2828,7 +3080,7 @@ $1',
'duplicate-defaultsort' => 'హెచ్చరిక: డిఫాల్టు పేర్చు కీ "$2", గత డిఫాల్టు పేర్చు కీ "$1" ని అతిక్రమిస్తుంది.',
# Special:Version
-'version' => 'సంచిక', # Not used as normal message but as header for the special page itself
+'version' => 'సంచిక',
'version-extensions' => 'స్థాపించిన పొడగింతలు',
'version-specialpages' => 'ప్రత్యేక పేజీలు',
'version-parserhooks' => 'పార్సరు కొక్కాలు',
@@ -2842,7 +3094,7 @@ $1',
'version-skin-extension-functions' => 'తొడుగును మెరుగుపరిచే ఫంక్షనులు',
'version-hook-name' => 'కొక్కెం పేరు',
'version-hook-subscribedby' => 'ఉపయోగిస్తున్నవి',
-'version-version' => 'సంచిక',
+'version-version' => '(సంచిక $1)',
'version-license' => 'లైసెన్సు',
'version-software' => 'ప్రవేశపెట్టిన సాఫ్టువేర్లు',
'version-software-product' => 'ప్రోడక్టు',
@@ -2921,4 +3173,15 @@ $1',
'dberr-outofdate' => 'మా విషయం యొక్క వారి సూచీలు అంత తాజావి కావపోవచ్చని గమనించండి.',
'dberr-cachederror' => 'అభ్యర్థించిన పేజీ యొక్క కోశం లోని కాపీ ఇది, అంత తాజాది కాకపోవచ్చు.',
+# HTML forms
+'htmlform-invalid-input' => 'మీరు ఇచ్చినవాటితో కొన్ని సమస్యలున్నాయి',
+'htmlform-select-badoption' => 'మీరిచ్చిన విలువ సరైన వికల్పం కాదు.',
+'htmlform-int-invalid' => 'మీరు ఇచ్చిన విలువ పూర్ణసంఖ్య కాదు.',
+'htmlform-float-invalid' => 'మీరిచ్చిన విలువ ఒక సంఖ్య కాదు.',
+'htmlform-int-toolow' => 'మీరిచ్చిన విలువ $1 యొక్క కనిష్ఠ విలువ కంటే తక్కువగా ఉంది.',
+'htmlform-int-toohigh' => 'మీరిచ్చిన విలువ $1 యొక్క గరిష్ఠ విలువకంటే ఎక్కవగా ఉంది.',
+'htmlform-submit' => 'సమర్పించు',
+'htmlform-reset' => 'మార్పులను రద్దుచెయ్యి',
+'htmlform-selectorother-other' => 'ఇతర',
+
);
diff --git a/languages/messages/MessagesTet.php b/languages/messages/MessagesTet.php
index 28d2604e..e173f6d2 100644
--- a/languages/messages/MessagesTet.php
+++ b/languages/messages/MessagesTet.php
@@ -11,22 +11,22 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Espesiál',
- NS_TALK => 'Diskusaun',
- NS_USER => 'Uza-na\'in',
- NS_USER_TALK => 'Diskusaun_Uza-na\'in',
- NS_PROJECT_TALK => 'Diskusaun_$1',
- NS_FILE => 'Imajen',
- NS_FILE_TALK => 'Diskusaun_Imajen',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Diskusaun_MediaWiki',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Diskusaun_Template',
- NS_HELP => 'Ajuda',
- NS_HELP_TALK => 'Diskusaun_Ajuda',
- NS_CATEGORY => 'Kategoria',
- NS_CATEGORY_TALK => 'Diskusaun_Kategoria',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Espesiál',
+ NS_TALK => 'Diskusaun',
+ NS_USER => 'Uza-na\'in',
+ NS_USER_TALK => 'Diskusaun_Uza-na\'in',
+ NS_PROJECT_TALK => 'Diskusaun_$1',
+ NS_FILE => 'Imajen',
+ NS_FILE_TALK => 'Diskusaun_Imajen',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Diskusaun_MediaWiki',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Diskusaun_Template',
+ NS_HELP => 'Ajuda',
+ NS_HELP_TALK => 'Diskusaun_Ajuda',
+ NS_CATEGORY => 'Kategoria',
+ NS_CATEGORY_TALK => 'Diskusaun_Kategoria',
);
$namespaceAliases = array(
@@ -149,20 +149,24 @@ $messages = array(
'category-empty' => "''Kategoria ne'e agora la iha pájina sira.''",
'listingcontinuesabbrev' => 'kont.',
-'about' => 'Kona-ba',
-'article' => 'Pájina',
-'cancel' => 'Para',
+'about' => 'Kona-ba',
+'article' => 'Pájina',
+'cancel' => 'Para',
+'moredotdotdot' => 'Barak liu...',
+'mypage' => "Ha'u-nia pájina",
+'mytalk' => "Ha'u-nia diskusaun",
+'anontalk' => "Diskusaun ba IP ne'e",
+'navigation' => 'Hatudu-dalan',
+'and' => '&#32;ho',
+
+# Cologne Blue skin
'qbfind' => 'Hetan',
'qbedit' => 'Edita',
'qbpageoptions' => "Pájina ne'e",
'qbmyoptions' => "Ha'u-nia pájina sira",
'qbspecialpages' => 'Pájina espesiál sira',
-'moredotdotdot' => 'Barak liu...',
-'mypage' => "Ha'u-nia pájina",
-'mytalk' => "Ha'u-nia diskusaun",
-'anontalk' => "Diskusaun ba IP ne'e",
-'navigation' => 'Hatudu-dalan',
-'and' => '&#32;ho',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Sala',
'returnto' => 'Fali ba $1.',
@@ -205,7 +209,7 @@ $messages = array(
'categorypage' => 'Haree pájina kategoría nian',
'viewtalkpage' => 'Haree diskusaun',
'otherlanguages' => 'Iha lian seluk',
-'lastmodifiedat' => "Ema ruma filak ikus pájina ne'e iha $1, $2.", # $1 date, $2 time
+'lastmodifiedat' => "Ema ruma filak ikus pájina ne'e iha $1, $2.",
'protectedpage' => 'Pájina maka ema ruma proteje tiha',
'jumpto' => 'Bá:',
'jumptonavigation' => 'hatudu-dalan',
@@ -215,7 +219,6 @@ $messages = array(
'aboutsite' => 'Kona-ba {{SITENAME}}',
'aboutpage' => 'Project:Kona-ba',
'copyright' => 'Testu pájina nian iha $1 okos.',
-'copyrightpagename' => 'Direitu autór sira nian iha {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Direitu_autór_nian',
'currentevents' => 'Mamosuk atuál sira',
'currentevents-url' => 'Project:Mamosuk atuál sira',
@@ -223,8 +226,6 @@ $messages = array(
'disclaimerpage' => 'Project:Avisu legál',
'edithelp' => 'Ajuda kona-ba edita',
'edithelppage' => 'Help:Edita',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Konteúdu',
'mainpage' => 'Pájina Mahuluk',
'mainpage-description' => 'Pájina Mahuluk',
@@ -287,37 +288,27 @@ Lista ida pájina espesiál nian [[Special:SpecialPages|iha ne'e]].",
'ns-specialprotected' => 'La ema ida bele edita pájina espesiál sira.',
# Login and logout pages
-'logouttitle' => 'Husik',
-'welcomecreation' => "== Loron di'ak, $1! ==
+'welcomecreation' => "== Loron di'ak, $1! ==
Ó kria konta ó-nia.
La haluha filak ó-nia [[Special:Preferences|preferénsia]].",
-'loginpagetitle' => 'Log in',
-'yourname' => "Naran uza-na'in:",
-'login' => 'Log in',
-'nav-login-createaccount' => 'Log in / kriar konta ida',
-'userlogin' => 'Log in / kriar konta ida',
-'logout' => 'Husik',
-'userlogout' => 'Husik',
-'nologin' => "La iha konta ida? '''$1'''.",
-'nologinlink' => 'Registrar',
-'createaccount' => "Registrar uza-na'in",
-'gotaccount' => "Ó iha konta ona? '''$1'''.",
-'gotaccountlink' => 'Log in',
-'userexists' => "Uza-na'in ne'e ona iha wiki. Favór ida lori naran seluk.",
-'youremail' => 'Korreiu eletróniku:',
-'username' => "Naran uza-na'in:",
-'uid' => "Uza-na'in ID:",
-'yourlanguage' => 'Lian:',
-'gender-male' => 'Mane',
-'gender-female' => 'Feto',
-'email' => 'Korreiu eletróniku',
-'prefs-help-email-required' => 'Haruka diresaun korreiu eletróniku.',
-'nosuchuser' => 'Konta uza-na\'in (naran "$1") la iha.
+'yourname' => "Naran uza-na'in:",
+'login' => 'Log in',
+'nav-login-createaccount' => 'Log in / kriar konta ida',
+'userlogin' => 'Log in / kriar konta ida',
+'logout' => 'Husik',
+'userlogout' => 'Husik',
+'nologin' => "La iha konta ida? '''$1'''.",
+'nologinlink' => 'Registrar',
+'createaccount' => "Registrar uza-na'in",
+'gotaccount' => "Ó iha konta ona? '''$1'''.",
+'gotaccountlink' => 'Log in',
+'userexists' => "Uza-na'in ne'e ona iha wiki. Favór ida lori naran seluk.",
+'nosuchuser' => 'Konta uza-na\'in (naran "$1") la iha.
User names are case sensitive.
Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
-'nouserspecified' => "Ó tenke espesífiku naran uza-na'in ida.",
-'accountcreated' => "Registrar tiha uza-na'in",
-'loginlanguagelabel' => 'Lian: $1',
+'nouserspecified' => "Ó tenke espesífiku naran uza-na'in ida.",
+'accountcreated' => "Registrar tiha uza-na'in",
+'loginlanguagelabel' => 'Lian: $1',
# Password reset dialog
'resetpass_text' => "<!-- Hakerek testu iha ne'e -->",
@@ -371,21 +362,21 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'historyempty' => '(mamuk)',
# Revision feed
-'history-feed-item-nocomment' => '$1 iha $2', # user at time
+'history-feed-item-nocomment' => '$1 iha $2',
# Revision deletion
-'rev-delundel' => 'hatudu/subar',
-'revisiondelete' => 'Halakon/restaurar versaun',
-'revdelete-hide-user' => "Subar naran edita-na'in/IP",
+'rev-delundel' => 'hatudu/subar',
+'revisiondelete' => 'Halakon/restaurar versaun',
+'revdelete-hide-user' => "Subar naran edita-na'in/IP",
+'revdelete-edit-reasonlist' => 'Edita lista motivu nian',
# Diffs
'lineno' => 'Liña $1:',
# Search results
-'noexactmatch' => "'''Pájina ''$1'' la iha.''' Ó bele [[:$1|kria pájina ne'e]].",
-'prevn' => 'molok $1',
-'nextn' => 'oinmai $1',
-'viewprevnext' => 'Haree ($1) ($2) ($3)',
+'prevn' => 'molok {{PLURAL:$1|$1}}',
+'nextn' => 'oinmai {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Haree ($1 {{int:pipe-separator}} $2) ($3)',
'search-result-size' => '$1 ({{PLURAL:$2|liafuan ida|liafuan $2}})',
'search-interwiki-caption' => 'Projetu seluseluk sira',
'search-mwsuggest-enabled' => 'fó sujestaun',
@@ -397,10 +388,9 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
# Preferences page
'preferences' => 'Preferénsia',
'mypreferences' => "Ha'u-nia preferénsia",
-'dateformat' => 'Formatu tempu nian',
'prefs-rc' => 'Mudansa foufoun sira',
'prefs-watchlist' => 'Lista hateke',
-'textboxsize' => 'Edita',
+'prefs-editing' => 'Edita',
'searchresultshead' => 'Buka',
'timezoneregion-africa' => 'Áfrika',
'timezoneregion-america' => 'Amérika',
@@ -408,9 +398,17 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'timezoneregion-asia' => 'Ázia',
'timezoneregion-australia' => 'Austrália',
'timezoneregion-europe' => 'Europa',
+'youremail' => 'Korreiu eletróniku:',
+'username' => "Naran uza-na'in:",
+'uid' => "Uza-na'in ID:",
+'yourlanguage' => 'Lian:',
+'gender-male' => 'Mane',
+'gender-female' => 'Feto',
+'email' => 'Korreiu eletróniku',
+'prefs-help-email-required' => 'Haruka diresaun korreiu eletróniku.',
# User rights
-'userrights' => "Muda priviléjiu uza-na'in sira", # Not used as normal message but as header for the special page itself
+'userrights' => "Muda priviléjiu uza-na'in sira",
'userrights-lookup-user' => "Muda grupu uza-na'in",
'userrights-user-editname' => "Fó naran uza-na'in ida:",
'editusergroup' => "Muda grupu uza-na'in",
@@ -488,16 +486,19 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'boteditletter' => 'b',
# Recent changes linked
-'recentchangeslinked' => 'Muda sira',
-'recentchangeslinked-title' => 'Mudansa iha pájina sira-ne\'ebé iha ligasaun husi "$1"',
-'recentchangeslinked-page' => 'Naran pájina nian:',
+'recentchangeslinked' => 'Muda sira',
+'recentchangeslinked-feed' => 'Muda sira',
+'recentchangeslinked-toolbox' => 'Muda sira',
+'recentchangeslinked-title' => 'Mudansa iha pájina sira-ne\'ebé iha ligasaun husi "$1"',
+'recentchangeslinked-page' => 'Naran pájina nian:',
# Upload
'upload' => 'Tau iha arkivu laran',
'uploadbtn' => 'Tau iha arkivu laran',
'watchthisupload' => "Hateke pájina ne'e",
-'license' => 'Lisensa:',
+'license' => 'Lisensa:',
+'license-header' => 'Lisensa:',
# Special:ListFiles
'listfiles_date' => 'Tempu',
@@ -530,8 +531,8 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
# Statistics
'statistics' => 'Estátistika',
-'brokenredirects-edit' => '(edita)',
-'brokenredirects-delete' => '(halakon)',
+'brokenredirects-edit' => 'edita',
+'brokenredirects-delete' => 'halakon',
'withoutinterwiki' => "Pájina sira-ne'ebé la iha ligasaun ba lian seluk",
@@ -648,7 +649,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'protect-otherreason' => 'Motivu seluk/ida tan:',
'protect-otherreason-op' => 'Motivu seluk',
'protect-edit-reasonlist' => 'Edita lista motivu nian',
-'protect-expiry-options' => '1 hour:1 hours,1 loron:1 day,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hour:1 hours,1 loron:1 day,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite',
'restriction-type' => 'Permisaun:',
# Restrictions (nouns)
@@ -677,6 +678,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'year' => 'Tinan (ho molok):',
'sp-contributions-newbies' => "Hatudu de'it kontribuisaun uza-na'in foun sira-nia",
+'sp-contributions-talk' => 'diskusaun',
'sp-contributions-search' => 'Buka kontribuisaun',
'sp-contributions-username' => "Diresaun IP ka naran uza-na'in:",
'sp-contributions-submit' => 'Buka',
@@ -699,7 +701,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'ipbreasonotherlist' => 'Motivu seluk',
'ipbsubmit' => "Blokeiu uza-na'in ne'e",
'ipbother' => 'Tempu seluk:',
-'ipboptions' => '2 hours:2 hours,1 loron:1 day,3 Loron:3 days,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 hours:2 hours,1 loron:1 day,3 Loron:3 days,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite',
'ipbotheroption' => 'seluk',
'ipblocklist' => 'Ema anónimu no rejista maka la bele edita',
'ipblocklist-username' => "Naran uza-na'in ka IP:",
@@ -776,7 +778,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'tooltip-watch' => "Tau tan pájina ne'e ba ó-nia lista hateke",
# Attribution
-'lastmodifiedatby' => "$3 filak ikus pájina ne'e iha $1, $2.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "$3 filak ikus pájina ne'e iha $1, $2.",
# Skin names
'skinname-standard' => 'Klásiku',
@@ -837,10 +839,10 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'watchlisttools-edit' => 'Haree no edita lista hateke',
# Special:Version
-'version' => 'Versaun', # Not used as normal message but as header for the special page itself
+'version' => 'Versaun',
'version-specialpages' => 'Pájina espesiál',
'version-other' => 'Seluk',
-'version-version' => 'Versaun',
+'version-version' => '(Versaun $1)',
'version-license' => 'Lisensa',
'version-software-product' => 'Produtu',
'version-software-version' => 'Versaun',
diff --git a/languages/messages/MessagesTg.php b/languages/messages/MessagesTg.php
index fe440614..2a0e7fda 100644
--- a/languages/messages/MessagesTg.php
+++ b/languages/messages/MessagesTg.php
@@ -1,6 +1,9 @@
<?php
/** Tajik (Тоҷикӣ)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment falls back to Tajik (Cyrillic)
diff --git a/languages/messages/MessagesTg_cyrl.php b/languages/messages/MessagesTg_cyrl.php
index bfb23386..0bc75a22 100644
--- a/languages/messages/MessagesTg_cyrl.php
+++ b/languages/messages/MessagesTg_cyrl.php
@@ -18,24 +18,22 @@
*/
$namespaceNames = array(
- NS_MEDIA => "Медиа",
- NS_SPECIAL => "Вижа",
- NS_MAIN => "",
- NS_TALK => "Баҳс",
- NS_USER => "Корбар",
- NS_USER_TALK => "Баҳси_корбар",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => "Баҳси_$1",
- NS_FILE => "Акс",
- NS_FILE_TALK => "Баҳси_акс",
- NS_MEDIAWIKI => "Медиавики",
- NS_MEDIAWIKI_TALK => "Баҳси_медиавики",
- NS_TEMPLATE => "Шаблон",
- NS_TEMPLATE_TALK => "Баҳси_шаблон",
- NS_HELP => "Роҳнамо",
- NS_HELP_TALK => "Баҳси_роҳнамо",
- NS_CATEGORY => "Гурӯҳ",
- NS_CATEGORY_TALK => "Баҳси_гурӯҳ",
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Вижа',
+ NS_TALK => 'Баҳс',
+ NS_USER => 'Корбар',
+ NS_USER_TALK => 'Баҳси_корбар',
+ NS_PROJECT_TALK => 'Баҳси_$1',
+ NS_FILE => 'Акс',
+ NS_FILE_TALK => 'Баҳси_акс',
+ NS_MEDIAWIKI => 'Медиавики',
+ NS_MEDIAWIKI_TALK => 'Баҳси_медиавики',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Баҳси_шаблон',
+ NS_HELP => 'Роҳнамо',
+ NS_HELP_TALK => 'Баҳси_роҳнамо',
+ NS_CATEGORY => 'Гурӯҳ',
+ NS_CATEGORY_TALK => 'Баҳси_гурӯҳ',
);
$datePreferences = array(
@@ -101,6 +99,7 @@ $messages = array(
'tog-enotifminoredits' => 'Барои тағйироти ҷузъи ба ман тариқи почтаи электронӣ пайём бифиристед.',
'tog-enotifrevealaddr' => 'Нишонаи почтаи электронии ман дар номаҳои иттилорасонӣ қайд шавад',
'tog-shownumberswatching' => 'Нишон додани шумораи корбарони пайгир',
+'tog-oldsig' => 'Пешнамоиши имзои вуҷуддошта:',
'tog-fancysig' => 'Имзоро ба сурати викиматн ба назар бигир (бе пайванди худкор)',
'tog-externaleditor' => 'Ба таври пешфарз аз вироишгари хориҷӣ истифода шавад (танҳо барои корбарони бо таҷриба, ниёз ба муҳити вижа дар компютери шумо дорад)',
'tog-externaldiff' => 'Истифода аз тафовутгири хориҷӣ ба таври пешфарз (танҳо барои корбарони бо таҷриба, ниёз ба муҳити вижа дар компютери шумо дорад)',
@@ -122,6 +121,13 @@ $messages = array(
'underline-never' => 'Ҳеҷгоҳ',
'underline-default' => 'Пешфарзи мурургар',
+# Font style option in Special:Preferences
+'editfont-style' => 'Сабки қалами ҷаъбаи вироиш:',
+'editfont-default' => 'Пешфарзи мурургар',
+'editfont-monospace' => 'Қалами бо фосилаи собит',
+'editfont-sansserif' => 'Қалами бидуни гӯша',
+'editfont-serif' => 'Қалами гӯшадор',
+
# Dates
'sunday' => 'Якшанбе',
'monday' => 'Душанбе',
@@ -181,7 +187,7 @@ $messages = array(
'category-media-header' => 'Парвандаҳои гурӯҳ "$1"',
'category-empty' => "''Дар ҳоли ҳозир ин гурӯҳ дорои мақола ё парвандаҳо нест.''",
'hidden-categories' => '{{PLURAL:$1|Гурӯҳи пинҳон|Гурӯҳҳои пинҳон}}',
-'hidden-category-category' => 'Гурӯҳҳои пинҳон', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Гурӯҳҳои пинҳон',
'category-subcat-count' => '{{PLURAL:$2|Ин гурӯҳ фақат зергурӯҳҳои зеринро дорад.|Ин гурӯҳ дар кул аз $2, {{PLURAL:$1|зергурӯҳ|$1 зергурӯҳҳо}} дорад.}}',
'category-subcat-count-limited' => 'Ин гурӯҳ шомили {{PLURAL:$1|як зергурӯҳ|$1 зергурӯҳҳо}} мебошад.',
'category-article-count' => '{{PLURAL:$2|Ин гурӯҳ шомили фақат саҳифаи зерин аст.|{{PLURAL:$1|саҳифаи|$1 саҳифаҳои}} зерин дар ин гурӯҳ, кули ҳавои $2 саҳифа аст.}}',
@@ -189,6 +195,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ин гурӯҳ танҳо парвандаи зеринро дар бар мегирад.|{{PLURAL:$1|Ин парвандаи|$1 парвандаҳои}} зерин дар ин гурӯҳ қарор {{PLURAL:$1|дорад|доранд}}. Ин гурӯҳ дар кул ҳавои $2 саҳифа аст.}}',
'category-file-count-limited' => '{{PLURAL:$1|парвандаи|$1 парвандаҳои}} зерин дар гурӯҳи феълӣ қарор {{PLURAL:дорад|доранд}}.',
'listingcontinuesabbrev' => 'идома',
+'index-category' => 'Саҳифаҳои намояшуда',
+'noindex-category' => 'Саҳифаҳои намоиянашуда',
'mainpagetext' => "'''Нармафзори МедиаВики бо муваффақият насб шуд.'''",
'mainpagedocfooter' => 'Аз [http://meta.wikimedia.org/wiki/Help:Contents Роҳнамои Корбарон] барои истифодаи нармафзори вики кӯмак бигиред.
@@ -199,10 +207,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Пурсишҳои МедиаВики]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Феҳристи ройномаҳои нусхаҳои МедиаВики]',
-'about' => 'Дар бораи',
-'article' => 'Саҳифаи мӯҳтаво',
-'newwindow' => '(дар равзанаи ҷадид боз мешавад)',
-'cancel' => 'Лағв',
+'about' => 'Дар бораи',
+'article' => 'Саҳифаи мӯҳтаво',
+'newwindow' => '(дар равзанаи ҷадид боз мешавад)',
+'cancel' => 'Лағв',
+'moredotdotdot' => 'Бештар...',
+'mypage' => 'Саҳифаи ман',
+'mytalk' => 'Гуфтугӯи ман',
+'anontalk' => 'Баҳс бо ин IP',
+'navigation' => 'Гаштан',
+'and' => '&#32;ва',
+
+# Cologne Blue skin
'qbfind' => 'Ёфтан',
'qbbrowse' => 'Мурур',
'qbedit' => 'Вироиш',
@@ -210,15 +226,35 @@ $messages = array(
'qbpageinfo' => 'Бофт',
'qbmyoptions' => 'Саҳифаҳои ман',
'qbspecialpages' => 'Саҳифаҳои вижа',
-'moredotdotdot' => 'Бештар...',
-'mypage' => 'Саҳифаи ман',
-'mytalk' => 'Гуфтугӯи ман',
-'anontalk' => 'Баҳс бо ин IP',
-'navigation' => 'Гаштан',
-'and' => '&#32;ва',
-
-# Metadata in edit box
-'metadata_help' => 'Метадода:',
+'faq' => 'Саволҳои тез-тез пурсидашуда',
+'faqpage' => 'Project:Саволҳои тез-тез пурсидашуда',
+
+# Vector skin
+'vector-action-addsection' => 'Иловаи унвон',
+'vector-action-delete' => 'Ҳазф',
+'vector-action-move' => 'Кӯчонидан',
+'vector-action-protect' => 'Муҳофизат',
+'vector-action-undelete' => 'Эҳё',
+'vector-action-unprotect' => 'Ба дар овардан аз муҳофизат',
+'vector-namespace-category' => 'Гурӯҳ',
+'vector-namespace-help' => 'Саҳифаи роҳнамо',
+'vector-namespace-image' => 'Парванда',
+'vector-namespace-main' => 'Саҳифа',
+'vector-namespace-media' => 'Саҳифаи расона',
+'vector-namespace-mediawiki' => 'Пайғом',
+'vector-namespace-project' => 'Саҳифаи лоиҳа',
+'vector-namespace-special' => 'Саҳифаи вижа',
+'vector-namespace-talk' => 'Баҳс',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Саҳифаи корбарӣ',
+'vector-view-create' => 'Эҷод',
+'vector-view-edit' => 'Вироиш',
+'vector-view-history' => 'Намоиши таърих',
+'vector-view-view' => 'Хондан',
+'vector-view-viewsource' => 'Намоиши манбаъ',
+'actions' => 'Амалкардҳо',
+'namespaces' => 'Фазоҳои ном',
+'variants' => 'Вариантҳо',
'errorpagetitle' => 'Хато',
'returnto' => 'Бозгашт ба $1.',
@@ -268,18 +304,22 @@ $messages = array(
'otherlanguages' => 'бо забонҳои дигар',
'redirectedfrom' => '(Тағйири масир аз $1)',
'redirectpagesub' => 'Саҳифаи равонакунӣ',
-'lastmodifiedat' => 'Ин саҳифа бори охир $2, $1 дигаргун карда шудааст.', # $1 date, $2 time
+'lastmodifiedat' => 'Ин саҳифа бори охир $2, $1 дигаргун карда шудааст.',
'viewcount' => 'Ин саҳифа {{PLURAL:$1|бор|$1 бор}} дида шудааст.',
'protectedpage' => 'Саҳифаи муҳофизатшуда',
'jumpto' => 'Ҷаҳиш ба:',
'jumptonavigation' => 'гаштан',
'jumptosearch' => 'Ҷустуҷӯи',
+'view-pool-error' => 'Мутаасифона, корсозҳои дар ҳоли ҳозир дучори бори изофӣ ҳастанд.
+Теъдоди зиёди аз корбарон талош мекунанд, ки ин саҳифаро бубинанд.
+Лутфан қабл аз талош дубора барои дидани ин саҳифа муддате сабр кунед.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Дар бораи {{SITENAME}}',
'aboutpage' => 'Project:Дар бораи',
'copyright' => 'Мӯҳтаво таҳти иҷозатномаи $1 дастрас аст.',
-'copyrightpagename' => 'Википедиа copyright',
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Вокеаҳои кунунӣ',
'currentevents-url' => 'Project:Воқеаҳои кунунӣ',
@@ -287,8 +327,6 @@ $messages = array(
'disclaimerpage' => 'Project:Такзибномаи умумӣ',
'edithelp' => 'Роҳнамои вироиш',
'edithelppage' => 'Help:Вироиш',
-'faq' => 'Саволҳои тез-тез пурсидашуда',
-'faqpage' => 'Project:Саволҳои тез-тез пурсидашуда',
'helppage' => 'Help:Мундариҷа',
'mainpage' => 'Саҳифаи Аслӣ',
'mainpage-description' => 'Саҳифаи Аслӣ',
@@ -367,10 +405,6 @@ $messages = array(
"$1"
аз даруни амалгар фиристода шуд "$2".
Пойгоҳи дода (MySQL) ин хаторо бозгардонд "$3: $4"',
-'noconnect' => 'Бубахшед! Вики эроди фаннӣ дорад ва наметавонад бо коргузори (сервери) пойгоҳи дода тамос бигирад. <br />
-$1',
-'nodb' => 'Наметавон пойгоҳи додаи $1-ро итихоб кард',
-'cachederror' => 'Дар зер як нусхаи бойгонишудаи саҳифаи дархостӣ оварда шудааст, ва мумкин аст рузрасонӣ шуда набошад.',
'laggedslavemode' => 'Ҳушдор: Саҳифа мумкин аст рӯзрасониҳои охирро дар бар нагирад.',
'readonly' => 'Бойгоҳи дода қуфл шудааст',
'enterlockreason' => 'Далелеро барои қуфл кардан зикр кунед, ва тақрибан вақти аз қуфл озод шуданашро ҳам зикр кунед',
@@ -429,7 +463,6 @@ $1',
'virus-unknownscanner' => 'антивируси ношинос:',
# Login and logout pages
-'logouttitle' => 'Хуруҷи корбар аз систем',
'logouttext' => "'''Акнун аз систем хориҷ шудаед.'''
Шумо метавонед гумном аз {{SITENAME}} истифодабариро идома диҳед, ё метавонед бо ҳамин номи корбариатон ва ё номи корбарии дигаре [[Special:UserLogin|боз вуруд кунед]].
@@ -438,7 +471,6 @@ $1',
Ҳисоби шумо эҷод шуд.
Танзим кардани [[Special:Preferences|тарҷиҳоти {{SITENAME}}]] худро фаромӯш накунед.',
-'loginpagetitle' => 'Вуруди корбар',
'yourname' => 'Номи корбар',
'yourpassword' => 'Калимаи убур\\пароль',
'yourpasswordagain' => 'Калимаи убурро боз нависед',
@@ -461,26 +493,8 @@ $1',
'badretype' => 'Калимаҳои убуре, ки ворид кардаед бо ҳамдигар мувофиқат намекунанд.',
'userexists' => 'Номи корбарии дохил кардашуда мавриди истифода аст.
Номи дигарероро интихоб кунед.',
-'youremail' => 'Почтаи электронии Шумо:',
-'username' => 'Номи корбар:',
-'uid' => 'ID-и корбар:',
-'prefs-memberingroups' => 'Аъзои {{PLURAL:$1|гурӯҳ|гурӯҳҳо}}:',
-'yourrealname' => 'Номи аслӣ:',
-'yourlanguage' => 'Забон:',
-'yourvariant' => 'Вариант',
-'yournick' => 'Ники шумо:',
-'badsig' => 'Имзои хом нодуруст аст; барҷасбҳои HTML-ро баррасӣ кунед.',
-'badsiglength' => 'Тахаллус хеле дароз аст.
-Он бояд камтар аз $1 {{PLURAL:$1|аломат|аломатҳо}} бошад.',
-'yourgender' => 'Ҷинс:',
-'gender-unknown' => 'Мушаххаснашуда',
-'gender-male' => 'Мард',
-'gender-female' => 'Зан',
-'email' => 'Почтаи электронӣ',
-'prefs-help-realname' => 'Номи ҳақиқӣ ихтиёрӣ ва агар шумо онро пешниҳод кунед онро ҳамчун муаллифи эҷодиётатон ёдоварӣ карда хоҳад шуд.',
'loginerror' => 'Иштибоҳ дар вуруд',
-'prefs-help-email' => 'Нишонаи почтаи электронӣ (ихтиёрӣ); тамоси дигар корбарон бо шуморо ба василаи номаи электронӣ аз тариқи саҳифаи корбарӣ ё саҳифаи баҳси корбарӣ, бидуни ниёз ба фош кардани сомона ва нишонаи воқеъи почтаи электронии шумо мумкин месозад.',
-'prefs-help-email-required' => 'Нишони почтаи электрони лозим аст.',
+'createaccounterror' => 'Имкони сохтани ин ҳисоб вуҷуд надорад: $1',
'nocookiesnew' => 'Ҳисоби корбарӣ эҷод шуд, аммо шумо вориди сомона нашудаед. {{SITENAME}} барои вуруд кардани корбарон ба сомона аз кукиҳо (cookies) истифода мекунад. Шумо бояд кукиҳоро фаъол кунед. Лутфан кукиҳоро фаъол кунед, баъдан ба систем бо номи корбарии ҷадид ва калимаи убуратон вуруд кунед.',
'nocookieslogin' => '{{SITENAME}} барои ворид кардани корбарон ба систем аз кукиҳо (cookies) истифода мекунад. Кукиҳо фаъол нестанд. Лутфан кукиҳоро фаъол карда бори дигар бисанҷед.',
'noname' => 'Номи корбари дурустеро шумо пешниҳод накардед.',
@@ -493,6 +507,7 @@ $1',
'wrongpassword' => 'Калимаи убури нодуруст дохил карда шуд. Бори дигар санҷед.',
'wrongpasswordempty' => 'Калимаи убури дохил шуда холӣ аст. Бори дигар санҷед.',
'passwordtooshort' => 'Калимаи убур хеле кӯтоҳ аст. Вай бояд ҳадди ақал {{PLURAL:$1|1 аломат|$1 аломатҳо}} дошта аз номи корбарӣ фарқ кунад.',
+'password-name-match' => 'Гузарвожаи шумо бояд аз номи корбариатон тафовут дошта бошад.',
'mailmypassword' => 'Гузарвожаи навро ба E-mail бифиристед',
'passwordremindertitle' => 'Муваққатан калимаи убурӣ ҷадид барои {{SITENAME}}',
'passwordremindertext' => 'Касе (эҳтимолан худи Шумо), аз нишонаи IP $1 дархост кардааст, ки гузарвожаи ҷадиде барои {{SITENAME}} ($4) барои шумо бифиристем.
@@ -501,6 +516,7 @@ $1',
Агар касе дигаре инро дахост кардааст, ё инки шумо гузарвожаи пешинаи худро ба ёд овардаед ва дигар хоҳиши тағйир додани онро надоред, ба ин паём аҳмият надиҳед ва гузарвожаи пешинаи худро истифода баред.',
'noemail' => 'Ҳеҷ нишонаи почтаи электронӣ барои корбар "$1" сабт нашудааст.',
+'noemailcreate' => 'Шумо бояд як нишонаи почтаи электронии мӯътабарро ворид кунед',
'passwordsent' => 'Калимаи убури нав ба адреси e-mail, ки барои "$1" номнавис шудааст фиристода шуд.
Баъд аз дастрас кардани он, марҳамат карда вуруд кунед.',
'blocked-mailpassword' => 'Нишонаи IP шумо аз вироиш боз дошта шудааст ва аз ин рӯ ба манзури ҷилавгирӣ аз сӯиистифода аз баҳрагирӣ аз қобилияти барқарор кардани калимаи убурро надорад.',
@@ -519,6 +535,7 @@ $1',
'createaccount-text' => 'Як нафаре барои 2$ як ҳисоби корбарӣ дар {{SITENAME}} эҷод кардааст ($4). Калимаи убури "$2" чунин аст: "$3". Шумо бояд вориди систем шавед то калимаи убури худро тағйир бидиҳед.
Агар ин ҳисоб иштибоҳе сохта шудааст, ин номаро нодида бигиред.',
+'usernamehasherror' => 'Номи корбарӣ наметавонад шомили аломатҳои дар ҳам бошад',
'login-throttled' => 'Шумо ба тозагӣ чандин бор барои вуруд ба систем талош кардаед.
Лутфан пеш аз он, ки дубора талош кунед, сабр кунед.',
'loginlanguagelabel' => 'Забон: $1',
@@ -532,7 +549,6 @@ $1',
'retypenew' => 'Калимаи нави убурро такроран нависед:',
'resetpass_submit' => 'Калимаи убурро танзим карда ба систем вуруд кунед',
'resetpass_success' => 'Калимаи убури шумо бо муваффақият тағйир дода шуд! Дар ҳоли ворид кардани шумо ба систем...',
-'resetpass_bad_temporary' => 'Калимаи убури мувақкатӣ нодуруст аст. Эҳтимолан калимаи убури худро пештар бо муваффақият тағйир додаед ё калимаи убури ҷадидеро дархост кардаед.',
'resetpass_forbidden' => 'Дар {{SITENAME}} калимаҳои убурро наметавон тағйир дод',
'resetpass-no-info' => 'Барои дастрасии мустақим ба ин саҳифа шумо бояд ба систем ворид шуда бошед.',
'resetpass-submit-loggedin' => 'Тағйири гузарвожа',
@@ -610,7 +626,6 @@ $1',
'blockededitsource' => "Матни '''вироишҳои шумо''' дар '''$1''' дар зер нишон дода шудааст:",
'whitelistedittitle' => 'Барои вироиш вуруд бояд кард',
'whitelistedittext' => 'Барои вироиши мақола бояд ба систем $1 шавед.',
-'confirmedittitle' => 'Тасдиқ кардани нишонаи почтаи электронӣ барои вироиш кардан лозим аст',
'confirmedittext' => 'Шумо бояд нишонаи почтаи электрониатонро пеш аз вироиш кардани саҳифаҳо, тасдиқ кунед. Лутфан ин корро тариқи [[Special:Preferences|тарҷиҳоти корбар]] сурат диҳед.',
'nosuchsectiontitle' => 'Чунин бахше вуҷуд надорад',
'nosuchsectiontext' => 'Шумо хостед, ки қисмеро вироиш кунед, ки он вуҷуд надорад.',
@@ -630,7 +645,8 @@ $1',
ё [{{fullurl:{{FULLPAGENAME}}|action=edit}} ин саҳифаро вироиш кунед]</span>.',
'userpage-userdoesnotexist' => 'Ҳисоби корбар "$1" сабт нашудааст. Итминон ҳосил кунед ки мехоҳед ин саҳифаро эчод ё вироиш кунед.',
'clearyourcache' => "'''Эзоҳ:''' Пас аз захирасозӣ мумкин аст барои дидани тағйирот ниёз бошад, ки ҳофизаи ниҳонии мурургари худро холӣ кунед. '''Мозилла / Файерфокс / Сафари:''' калиди ''Shift''-ро нигоҳ доред ва рӯи тугмаи ''Reload'' клик кунед, ё калидҳои ''Ctrl-Shift-R'' (''Cmd-Shift-R'' дар Эппл Макинтош) бо ҳам фишор диҳед; '''IE:''' калиди ''Ctrl'' нигоҳ доред ва рӯи тугмаи ''Refresh'' клик кунед, ё калидҳои ''Ctrl-F5'' бо ҳам фишор диҳед; '''Konqueror:''': тугмаи ''Reload''-ро оддӣ клик кунед, ё калиди ''F5'' фишор диҳед; Ба корбарони '''Opera''' мумкин аст лозим бошад, ки ҳофизаи ниҳонии худро комилан дар ''Tools→Preferences'' холӣ кунанд.",
-'usercssjsyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS ё JS худро захира кунед, бо истифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
+'usercssyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS ё JS худро захира кунед, бо истифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
+'userjsyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS ё JS худро захира кунед, бо истифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
'usercsspreview' => "'''Фаромӯш накунед, ки шумо фақат CSS корбариатонро пешнамоиш карда истодааед ва он ҳанӯз захира нашудааст!'''",
'userjspreview' => "'''Фаромӯш накунед, ки шумо фақат ҶаваСкрипти корбариатонро имтиҳон,пешнамоиш карда истодаед ва он ҳанӯз захира нашудааст!'''",
'userinvalidcssjstitle' => "'''Ҳушдор:'''Пӯсте бо номи \"\$1\" вуҷуд надорад. Таваҷҷӯҳ кунед ки саҳифаҳои .css ва .js бо ҳарфҳои хурд навишта мешаванд, Намуна. {{ns:user}}:Фу/monobook.css дар муқобили корбар {{ns:user}}:Фу/Monobook.css.",
@@ -673,8 +689,8 @@ $1',
'semiprotectedpagewarning' => "'''Таваҷҷӯҳ:''' Ин саҳифа қуфл шудааст то танҳо корбарони сабтиномкарда қодир ба вироиши он бошанд.",
'cascadeprotectedwarning' => "'''Ҳушдор:''' Ин саҳифа ба иллати қарор гирифтан дар {{PLURAL:$1|саҳифаи|саҳифаҳои}} обшорӣ-муҳофизатшудаи зер қуфл шудааст, то фақат мудирон битавонанд вироиш кунанд:",
'titleprotectedwarning' => "'''ҲУШДОР: Ин саҳифа қуфл шудааст, ба шакле ки фақат бархе корбарон метавонанд онро эҷод кунанд.'''",
-'templatesused' => 'Шаблонҳои дар ин саҳифа истифодашуда:',
-'templatesusedpreview' => 'Шаблонҳои истифодашуда дар ин пешнамоиш:',
+'templatesused' => '{{PLURAL:$1|Шаблон|Шаблонҳои}} дар ин саҳифа истифодашуда:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонҳои}} истифодашуда дар ин пешнамоиш:',
'templatesusedsection' => 'Шаблонҳои дар ин қисмат истифода шуда:',
'template-protected' => '(ҳифзшуда)',
'template-semiprotected' => '(нима-муҳофизатшуда)',
@@ -683,10 +699,12 @@ $1',
'nocreatetext' => '{{SITENAME}} қобилияти эҷоди саҳифаҳои ҷадидро маҳдуд карда аст.
Шумо метавонед бозгашта саҳифаи мавҷудбударо вироиш кунед, ё [[Special:UserLogin|ба систем вуруд кунед ё ҳисоби корбарӣ эҷод кунед]].',
'nocreate-loggedin' => 'Шумо иҷозати эҷоди саҳифаи ҷадидро надоред.',
+'sectioneditnotsupported-title' => 'Вироиши бахшҳо пуштибонӣ намешавад',
+'sectioneditnotsupported-text' => 'Ин саҳифа аз вироиши бахшҳо пуштибонӣ намешавад',
'permissionserrors' => 'Хатоҳои сатҳи дастрасӣ',
'permissionserrorstext' => 'Шумо рухсати анҷоми ин корро ба {{PLURAL:$1|сабаби|сабабҳои}} зерин надоред:',
'permissionserrorstext-withaction' => 'Шумо ба $2 аз {{PLURAL:$1|сабаби|сабабҳои}} зерин иҷозате надоред:',
-'recreate-deleted-warn' => "'''Диққат: Шумо саҳифаеро барқарор карда истодаед, ки пештар ҳазф шудааст.'''
+'recreate-moveddeleted-warn' => "'''Диққат: Шумо саҳифаеро барқарор карда истодаед, ки пештар ҳазф шудааст.'''
Шумо зарурияти вироиши ин саҳифаро дида баромаданатон лозим.
Сабти ҳазфшавии ин саҳифа барои фароҳам овардани имкониятҳои қулай оварда шудааст:",
@@ -706,8 +724,9 @@ $1',
'viewpagelogs' => 'Намоиши гузоришҳои марбута ба ин саҳифа',
'nohistory' => 'Таърихи вироиш барои ин саҳифа вуҷуд надорад.',
'currentrev' => 'Вироишоти кунунӣ',
+'currentrev-asof' => 'Нусхаи кунунӣ то $1',
'revisionasof' => 'Нусха $1',
-'revision-info' => 'Нусхаи вироиш $2 дар таърихи $1', # Additionally available: $3: revision id
+'revision-info' => 'Нусхаи вироиш $2 дар таърихи $1',
'previousrevision' => '←Нусхаи кӯҳнатар',
'nextrevision' => 'Нусхаи навтарин→',
'currentrevisionlink' => 'Намоиши нусхаи феълӣ',
@@ -720,7 +739,6 @@ $1',
Шарҳ: (феълӣ) тафовут бо нусхаи феълӣ
(қаблӣ) = тафовут бо нусхаи феълӣ, ҷузъ = вироиши ҷузъӣ',
'history-fieldset-title' => 'Мурури таърих',
-'deletedrev' => '[ҳазфшуда]',
'histfirst' => 'Аввалин',
'histlast' => 'Охирин',
'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
@@ -729,7 +747,7 @@ $1',
# Revision feed
'history-feed-title' => 'Таърихи вироишҳо',
'history-feed-description' => 'Таърихи вироишҳои ин саҳифа дар вики',
-'history-feed-item-nocomment' => '$1 дар $2', # user at time
+'history-feed-item-nocomment' => '$1 дар $2',
'history-feed-empty' => 'Саҳифаи дархостшуда вуҷуд надорад. Мумкин аст, ки аз вики ҳазф ё номаш тағйир дода шуда бошад.
Саҳифаҳои ҷадидӣ алоқамандро метавонед [[Special:Search|дар вики]] ҷустуҷӯ кунед.',
@@ -738,9 +756,9 @@ $1',
'rev-deleted-user' => '(номи корбар ҳазф шудааст)',
'rev-deleted-event' => '(амалӣ гузориш пок шуд)',
'rev-deleted-text-permission' => 'Ин вироиш аз ин саҳифа аз таърихи умумии ин саҳифа ҳазф шудааст.
-Иттилооти марбутаро эҳтимолан метавонед дар [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} гузориши ҳазф] бубинед.',
+Иттилооти марбутаро эҳтимолан метавонед дар [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} гузориши ҳазф] бубинед.',
'rev-deleted-text-view' => 'Ин вироиш аз ин саҳифа аз таърихи умумии ин саҳифа ҳазф шудааст.
-Шумо ҳамчун мудири {{SITENAME}} метавонед онро бубинед; иттилооти марбутаро эҳтимолан метавонед дар [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} гузориши ҳазф] бубинед.',
+Шумо ҳамчун мудири {{SITENAME}} метавонед онро бубинед; иттилооти марбутаро эҳтимолан метавонед дар [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} гузориши ҳазф] бубинед.',
'rev-delundel' => 'намоиш/пинҳон',
'revisiondelete' => 'Нусхаҳои ҳазф/эҳёӣ',
'revdelete-nooldid-title' => 'Нусхаи мақсади номӯътабар',
@@ -752,12 +770,12 @@ $1',
Дигар мудирон дар {{SITENAME}} ҳанӯз метавонанд ба ин мӯҳтавои пинҳонро дастрасӣ кунанд ва ҳатто мавориди ҳазфшударо эҳё кунанд, магар он ки маҳдудиятҳои дигаре амалӣ гардад.",
'revdelete-legend' => 'Танзими маҳдудиятҳои падидорӣ',
'revdelete-hide-text' => 'Пинҳон кардани нусхаи матн',
+'revdelete-hide-image' => 'Пинҳон кардани мӯҳтавиёти парванда',
'revdelete-hide-name' => 'Пинҳон кардани амал ва ҳадаф',
'revdelete-hide-comment' => 'Пинҳон кардани тавзеҳи вироиш',
'revdelete-hide-user' => 'Номи корбар/нишонаи IP пинҳон шавад',
'revdelete-hide-restricted' => 'Ин маҳдудиятро ба мудирон амалӣ кунед ва ин рӯхатро қуфл кунед',
'revdelete-suppress' => 'Аз дастрасии мудирон ба додаҳо низ монанди сайри корбарон ҷилавгирӣ ба амал ояд',
-'revdelete-hide-image' => 'Пинҳон кардани мӯҳтавиёти парванда',
'revdelete-unsuppress' => 'Хотимаи маҳдудиятҳо дар мавриди нусхаҳои интихобшуда',
'revdelete-log' => 'Сабаб:',
'revdelete-submit' => 'Амали кардан бар нусхаи интихобшуда',
@@ -777,6 +795,7 @@ $1',
'revdelete-unhid' => '$1-ро аз ҳолати пинҳон дар овард',
'revdelete-log-message' => '$1 барои $2 {{PLURAL:$2|нусха|нусха}}',
'logdelete-log-message' => '$1 барои $2 {{PLURAL:$2|воқеа|воқеаҳо}}',
+'revdelete-edit-reasonlist' => 'Вироиш ҳазф далелҳо',
# Suppression log
'suppressionlog' => 'Гузориши мавқуфсозӣ',
@@ -815,20 +834,8 @@ $1',
'difference' => '(Фарқияти байни нусхаҳо)',
'lineno' => 'Сатри $1:',
'compareselectedversions' => 'Нусхаҳои интихобшударо муқоиса кунед',
-'visualcomparison' => 'Муқоисаи дидорӣ',
'editundo' => 'ботил',
'diff-multi' => '({{PLURAL:$1|вироиши миёнӣ|$1 вироишоти миёнӣ}} нишон дода нашудааст.)',
-'diff-movedto' => 'кӯчонида шуд ба $1',
-'diff-added' => '$1 илова шуд',
-'diff-changedto' => 'ба $1 тағйирдода шуд',
-'diff-movedoutof' => 'аз $1 кӯчонида шуд',
-'diff-removed' => '$1 пок шуд',
-'diff-src' => 'манбаъ',
-'diff-width' => 'паҳно',
-'diff-height' => 'баландӣ',
-'diff-a' => "як '''пайванд'''",
-'diff-big' => "'''калон'''",
-'diff-del' => "'''ҳазфшуда'''",
# Search results
'searchresults' => 'Натиҷаҳои ҷустуҷӯ',
@@ -836,16 +843,14 @@ $1',
'searchresulttext' => 'Барои иттилооти бештар дар бораи ҷустуҷӯ дар {{SITENAME}}, нигаред ба [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Шумо \'\'\'[[:$1]]\'\'\'ро ҷустуҷӯ кардед ([[Special:Prefixindex/$1|ҳамаи саҳифаҳо шурӯъ бо "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ҳамаи саҳифаҳое, ки ба "$1" пайвастаанд]])',
'searchsubtitleinvalid' => "'''$1''' барои пурсуҷӯ",
-'noexactmatch' => "'''Бо сарлавҳаи \"\$1\" мақола вуҷуд надорад.''' Шумо метавонед [[:\$1|ин саҳифаро бинависед]].",
-'noexactmatch-nocreate' => "'''Саҳифае бо унвони \"\$1\" вуҷуд надорад.'''",
'toomanymatches' => 'Теъдоди мавориди мутобиқ хеле зиёд буд, лутфан дархости дигареро имтиҳон кунед',
'titlematches' => 'Унвони саҳифа татбиқ мекунад',
'notitlematches' => 'Унвонҳои ҳеҷ мақолае рост намеояд',
'textmatches' => 'Матни мақола татбиқ мекунад',
'notextmatches' => 'Матни ҳеҷ мақолае рост намеояд',
-'prevn' => 'қаблӣ $1',
-'nextn' => 'баъдӣ $1',
-'viewprevnext' => 'Намоиш ($1 ) ($2) ($3)',
+'prevn' => 'қаблӣ {{PLURAL:$1|$1}}',
+'nextn' => 'баъдӣ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Намоиш ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Гузинаҳои ҷустуҷӯ',
'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
'searchhelp-url' => 'Help:Мундариҷа',
@@ -857,7 +862,6 @@ $1',
'searchprofile-project-tooltip' => 'Ҷустуҷӯ дар $1',
'searchprofile-images-tooltip' => 'Ҷустуҷӯи парвандаҳо',
'searchprofile-everything-tooltip' => 'Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)',
-'prefs-search-nsdefault' => 'Ҷустуҷӯ бо истифодаи пешфарзҳо:',
'search-result-size' => '$1 ({{PLURAL:$2|1 калима|$2 калимаҳо}})',
'search-result-score' => 'Иртибот: $1%',
'search-redirect' => '(тағйири масир $1)',
@@ -873,7 +877,6 @@ $1',
'searchall' => 'ҳама',
'showingresults' => "Намоиши {{PLURAL:$1|'''1''' натиҷа|'''$1''' натоиҷ}} дар зер оғоз аз #'''$2'''.",
'showingresultsnum' => "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
-'showingresultstotal' => "Дар ҳоли намоиши {{PLURAL:$4|натоиҷ '''$1''' аз '''$3'''|натоиҷ '''$1 - $2''' аз '''$3'''}}",
'nonefound' => "'''Эзоҳ''': Танҳо чанд фазоиномҳо аз рӯи пешфарш ҷустуҷӯ мешаванд.
Ҷустуҷӯи худро бо пешванди ''ҳама:'' барои ҷустуҷӯи мӯҳтавои пурра (саҳифаҳои баҳс, шаблонҳо ва ғайраҳо) такрор кунед, ё фазои номи дилхоҳро чун пешванд истифода баред.",
'powersearch' => 'Ҷустуҷӯ',
@@ -884,75 +887,84 @@ $1',
'search-external' => 'Ҷустуҷӯи хориҷӣ',
'searchdisabled' => 'Ҷустуҷу дар {{SITENAME}} ғайрифаъол карда шудааст. Шумо метавонед тариқи Google дар ҳол ҷустуҷӯ кунед. Таваҷҷӯҳ кунед, ки натоиҷи ҷустуҷӯ {{SITENAME}} метавонад барӯз набошад.',
-# Preferences page
-'preferences' => 'Тарҷиҳот',
-'mypreferences' => 'Тарҷиҳоти ман',
-'prefs-edits' => 'Шумораи вироишҳо:',
-'prefsnologin' => 'Ба систем ворид нашудаед',
-'prefsnologintext' => 'Барои танзими тарҷиҳоти корбарӣ бояд [[Special:UserLogin|вуруд ба систем шавед]].',
-'prefsreset' => 'Тарҷиҳот аз ҳофиза аз нав шуд.',
+# Quickbar
'qbsettings' => 'Танзимоти тезхат (Quickbar)',
'qbsettings-none' => 'Набошад',
'qbsettings-fixedleft' => 'Сабти чап',
'qbsettings-fixedright' => 'Сабти рост',
'qbsettings-floatingleft' => 'Шиновар чап',
'qbsettings-floatingright' => 'Шиновар рост',
-'changepassword' => 'Иваз намудани калимаи убур',
-'skin' => 'Пӯст',
-'skin-preview' => 'Пешнамоиш',
-'math' => 'Риёзиёт',
-'dateformat' => 'Қолаби сана',
-'datedefault' => 'Бе тарҷиҳ',
-'datetime' => 'Сана ва вақт',
-'math_failure' => 'Шикаст дар таҷзеҳ',
-'math_unknown_error' => 'хатои ношинос',
-'math_unknown_function' => 'амали номаълум',
-'math_lexing_error' => 'хатои lexing',
-'math_syntax_error' => 'хатои наҳвӣ',
-'math_image_error' => 'Табдил ба PNG шикаст хӯр; насби дурусти latex, dvips, gs, ва табдилотро баррасӣ кунед',
-'math_bad_tmpdir' => 'Имкони эҷод ё навистани иттилоот дар пӯшаи муваққатии риёзӣ (temp) вуҷуд надорад',
-'math_bad_output' => 'Имкони эҷод ё навистани иттилоот дар пӯшаи хуруҷии риёзӣ (output) вуҷуд надорад',
-'math_notexvc' => 'Барномаи ичроии texvc мавҷуд нест; барои иттилооти бештар ба math/README нигаред.',
-'prefs-personal' => 'Додаҳои корбар',
-'prefs-rc' => 'Тағйироти охирин',
-'prefs-watchlist' => 'Феҳристи пайгириҳо',
-'prefs-watchlist-days' => 'Теъдоди рӯзҳое ки бояд дар феҳристи пайгириҳои намоиш дода шавад:',
-'prefs-watchlist-edits' => 'Теъдоди вироишҳои нишондода дар феҳристи пайгириҳои густаришёфта:',
-'prefs-misc' => 'Танзимоти ҳархела',
-'prefs-resetpass' => 'Тағйири гузарвожа',
-'saveprefs' => 'Захираи тарҷиҳот',
-'resetprefs' => 'Тозакунии тағйироти захиранашуда',
-'textboxsize' => 'Дар ҳоли вироиш',
-'prefs-edit-boxsize' => 'Ҳаҷми равзанаи вироиш.',
-'rows' => 'Теъдоди сатрҳо:',
-'columns' => 'Теъдоди сутунҳо:',
-'searchresultshead' => 'Ҷустуҷӯ',
-'resultsperpage' => 'Теъдоди натоиҷ дар ҳар саҳифа:',
-'contextlines' => 'Теъдоди сатрҳо дар ҳар натиҷа:',
-'contextchars' => 'Теъдоди навиштаҳо атрофи дар сатр:',
-'stub-threshold' => 'Остонаи вироиши пайвандҳои <a href="#" class="stub">ноқис</a>:',
-'recentchangesdays' => 'Теъдоди рӯзҳои намоиш додашуда дар тағйироти охир:',
-'recentchangescount' => 'Теъдоди вироишҳо барои намоиш дар тағйироти охир:',
-'savedprefs' => 'Тарҷиҳоти шумо захира шуд.',
-'timezonelegend' => 'Минтақаи вақт:',
-'timezonetext' => '¹Тафовути теъдоди соати вақати маҳаллиатон бо вақти Ҷаҳонӣ ё Гринвич (UTC).',
-'localtime' => 'Вақти маҳаллӣ:',
-'timezoneoffset' => 'Ихтилоф¹:',
-'servertime' => 'Вақти коргузор:',
-'guesstimezone' => 'Аз мурургар гирифта шавад',
-'timezoneregion-africa' => 'Африқо',
-'timezoneregion-america' => 'Амрико',
-'timezoneregion-asia' => 'Осиё',
-'timezoneregion-europe' => 'Аврупо',
-'allowemail' => 'Иҷозат додани e-mail аз дигар корбарон',
-'prefs-searchoptions' => 'Гузинаҳои ҷустуҷӯ',
-'prefs-namespaces' => 'Фазоҳои ном',
-'defaultns' => 'Ба таври пешфарз дар ин фазоҳои ном ҷустуҷӯ шавад:',
-'default' => 'пешфарз',
-'files' => 'Файлҳо',
+
+# Preferences page
+'preferences' => 'Тарҷиҳот',
+'mypreferences' => 'Тарҷиҳоти ман',
+'prefs-edits' => 'Шумораи вироишҳо:',
+'prefsnologin' => 'Ба систем ворид нашудаед',
+'prefsnologintext' => 'Барои танзими тарҷиҳоти корбарӣ бояд [[Special:UserLogin|вуруд ба систем шавед]].',
+'changepassword' => 'Иваз намудани калимаи убур',
+'prefs-skin' => 'Пӯст',
+'skin-preview' => 'Пешнамоиш',
+'prefs-math' => 'Риёзиёт',
+'datedefault' => 'Бе тарҷиҳ',
+'prefs-datetime' => 'Сана ва вақт',
+'prefs-personal' => 'Додаҳои корбар',
+'prefs-rc' => 'Тағйироти охирин',
+'prefs-watchlist' => 'Феҳристи пайгириҳо',
+'prefs-watchlist-days' => 'Теъдоди рӯзҳое ки бояд дар феҳристи пайгириҳои намоиш дода шавад:',
+'prefs-watchlist-edits' => 'Теъдоди вироишҳои нишондода дар феҳристи пайгириҳои густаришёфта:',
+'prefs-misc' => 'Танзимоти ҳархела',
+'prefs-resetpass' => 'Тағйири гузарвожа',
+'saveprefs' => 'Захираи тарҷиҳот',
+'resetprefs' => 'Тозакунии тағйироти захиранашуда',
+'prefs-editing' => 'Дар ҳоли вироиш',
+'prefs-edit-boxsize' => 'Ҳаҷми равзанаи вироиш.',
+'rows' => 'Теъдоди сатрҳо:',
+'columns' => 'Теъдоди сутунҳо:',
+'searchresultshead' => 'Ҷустуҷӯ',
+'resultsperpage' => 'Теъдоди натоиҷ дар ҳар саҳифа:',
+'contextlines' => 'Теъдоди сатрҳо дар ҳар натиҷа:',
+'contextchars' => 'Теъдоди навиштаҳо атрофи дар сатр:',
+'stub-threshold' => 'Остонаи вироиши пайвандҳои <a href="#" class="stub">ноқис</a>:',
+'recentchangesdays' => 'Теъдоди рӯзҳои намоиш додашуда дар тағйироти охир:',
+'recentchangescount' => 'Теъдоди вироишҳо барои намоиш дар тағйироти охир:',
+'savedprefs' => 'Тарҷиҳоти шумо захира шуд.',
+'timezonelegend' => 'Минтақаи вақт:',
+'localtime' => 'Вақти маҳаллӣ:',
+'timezoneoffset' => 'Ихтилоф¹:',
+'servertime' => 'Вақти коргузор:',
+'guesstimezone' => 'Аз мурургар гирифта шавад',
+'timezoneregion-africa' => 'Африқо',
+'timezoneregion-america' => 'Амрико',
+'timezoneregion-asia' => 'Осиё',
+'timezoneregion-europe' => 'Аврупо',
+'allowemail' => 'Иҷозат додани e-mail аз дигар корбарон',
+'prefs-searchoptions' => 'Гузинаҳои ҷустуҷӯ',
+'prefs-namespaces' => 'Фазоҳои ном',
+'defaultns' => 'Ба таври пешфарз дар ин фазоҳои ном ҷустуҷӯ шавад:',
+'default' => 'пешфарз',
+'prefs-files' => 'Файлҳо',
+'youremail' => 'Почтаи электронии Шумо:',
+'username' => 'Номи корбар:',
+'uid' => 'ID-и корбар:',
+'prefs-memberingroups' => 'Аъзои {{PLURAL:$1|гурӯҳ|гурӯҳҳо}}:',
+'yourrealname' => 'Номи аслӣ:',
+'yourlanguage' => 'Забон:',
+'yourvariant' => 'Вариант',
+'yournick' => 'Ники шумо:',
+'badsig' => 'Имзои хом нодуруст аст; барҷасбҳои HTML-ро баррасӣ кунед.',
+'badsiglength' => 'Тахаллус хеле дароз аст.
+Он бояд камтар аз $1 {{PLURAL:$1|аломат|аломатҳо}} бошад.',
+'yourgender' => 'Ҷинс:',
+'gender-unknown' => 'Мушаххаснашуда',
+'gender-male' => 'Мард',
+'gender-female' => 'Зан',
+'email' => 'Почтаи электронӣ',
+'prefs-help-realname' => 'Номи ҳақиқӣ ихтиёрӣ ва агар шумо онро пешниҳод кунед онро ҳамчун муаллифи эҷодиётатон ёдоварӣ карда хоҳад шуд.',
+'prefs-help-email' => 'Нишонаи почтаи электронӣ (ихтиёрӣ); тамоси дигар корбарон бо шуморо ба василаи номаи электронӣ аз тариқи саҳифаи корбарӣ ё саҳифаи баҳси корбарӣ, бидуни ниёз ба фош кардани сомона ва нишонаи воқеъи почтаи электронии шумо мумкин месозад.',
+'prefs-help-email-required' => 'Нишони почтаи электрони лозим аст.',
# User rights
-'userrights' => 'Мудирияти ихтиёроти корбарӣ', # Not used as normal message but as header for the special page itself
+'userrights' => 'Мудирияти ихтиёроти корбарӣ',
'userrights-lookup-user' => 'Мудирияти гурӯҳҳои корбарӣ',
'userrights-user-editname' => 'Номи корбарро дохил кунед:',
'editusergroup' => 'Гуруҳҳои корбарро вироиш кунед',
@@ -1021,6 +1033,8 @@ $1',
'right-editprotected' => 'Вироиши саҳифаҳои ҳифзшуда (бидуни ҳифзи обшорӣ)',
'right-editinterface' => 'Вироиши намоиши корбарӣ',
'right-editusercssjs' => 'Вироиши парвандаҳои CSS ва JS дигар корбарон',
+'right-editusercss' => 'Вироиши парвандаҳои CSS дигар корбарон',
+'right-edituserjs' => 'Вироиши парвандаҳои JS дигар корбарон',
'right-rollback' => 'Вогардонии тези вироишҳои охирин корбаре, ки як саҳифаро вироиш кардааст',
'right-markbotedits' => 'Аломат задани вироишҳои вогардонишуда ба унвони вироиши бот',
'right-noratelimit' => 'Таъсирнопазир аз маҳдудияти суръат',
@@ -1077,6 +1091,8 @@ $1',
# Recent changes linked
'recentchangeslinked' => 'Таъғироти монандӣ',
+'recentchangeslinked-feed' => 'Таъғироти монандӣ',
+'recentchangeslinked-toolbox' => 'Таъғироти монандӣ',
'recentchangeslinked-title' => 'Тағйирҳои алоқаманд ба "$1"',
'recentchangeslinked-noresult' => 'Дар давоми замони додашуда тағйире дар саҳифаҳои пайваста рух надодааст.',
'recentchangeslinked-summary' => "Ин феҳристи тағйироти охир барои саҳифаҳои пайваста аз саҳифаи мушаххасшуда мебошад (ё ба аъзоёни гурӯҳи мушаххасшуда).
@@ -1087,7 +1103,6 @@ $1',
# Upload
'upload' => 'Фиристодани парванда',
'uploadbtn' => 'Фиристодани файл',
-'reupload' => 'Боргузории дубора',
'reuploaddesc' => 'Боргузориро лағв кунед ва ба форми боргузорӣ баргардед.',
'uploadnologin' => 'Вуруд накарда',
'uploadnologintext' => 'Барои фиристодани файлҳо Шумо бояд [[Special:UserLogin|вуруд кунед]].',
@@ -1131,7 +1146,6 @@ $1',
* Номи парвандаи боргузоришуда истода: '''<tt>[[:$1]]</tt>'''
* Номи парвандаи вуҷуд дошта: '''<tt>[[:$2]]</tt>'''
Лутфан як номи дигареро интихоб кунед.",
-'fileexists-thumb' => "<center>'''Акс аз қабл мавҷуд аст'''</center>",
'fileexists-thumbnail-yes' => "Аз акс ба назар мерасад, ки акси андозааш хурд ''(ангуштдона)''. [[$1|thumb]]
Лутан парвандаро '''<tt>[[:$1]]</tt>''' баррасӣ кунед.
Агар парвандаи баррасишуда акси хурд карда шудаи он парвандаи аслӣ аст, ниёзе ба боргузории акси хурд нест.",
@@ -1147,7 +1161,6 @@ $1',
'uploaddisabled' => 'Бор кордан ғайрифаъол аст',
'uploaddisabledtext' => 'Имкони боргузории парванда дар {{SITENAME}} ғайрифаъол шудааст.',
'uploadscripted' => 'Ин парванда коди скриптӣ ё HTML дорад, ки метавонад дар мурургарӣ веб нодуруст намоён шавад.',
-'uploadcorrupt' => 'Ин парванда хароб аст ва ё пасванди хато дорад. Лутфан онро санҷида аз нав бор кунед.',
'uploadvirus' => 'Ин парванда вирус дорад! Ҷузъиёт: $1',
'sourcefilename' => 'Номи парвандаи аслӣ:',
'destfilename' => 'Номи парвандаи мақсад:',
@@ -1174,6 +1187,7 @@ $1',
'upload-curl-error28-text' => 'Ин сомона беш аз андоза дар посух тӯл кард. Лутфан баррасӣ кунед, ки оё сомона фаъол ва бар хат аст ё на. Сипас лаҳзае интизор шавед ва дубора талош кунед. Шояд бад набошад дар вақти н он қадар банд дубора талош кунед.',
'license' => 'Иҷозатнома:',
+'license-header' => 'Иҷозатнома:',
'nolicense' => 'Ҳеҷ яке интихоб нашудааст',
'license-nopreview' => '(Пешнамоиш вуҷуд надорад)',
'upload_source_url' => '(як нишони интернетии мӯътабар ва оммавӣ)',
@@ -1193,6 +1207,7 @@ $1',
'listfiles_description' => 'Тавсифот',
# File description page
+'file-anchor-link' => 'файл',
'filehist' => 'Таърихи файл',
'filehist-help' => 'Рӯи таърихҳо клик кунед то нусхаи марбути парвандаро бубинед.',
'filehist-deleteall' => 'ҳазфи ҳама',
@@ -1201,6 +1216,7 @@ $1',
'filehist-current' => 'нусхаи феълӣ',
'filehist-datetime' => 'Таърих',
'filehist-thumb' => 'Бандангуштӣ',
+'filehist-thumbtext' => 'Акси бандангуштӣ аз нусхаи то $1',
'filehist-user' => 'Корбар',
'filehist-dimensions' => 'Андоза',
'filehist-filesize' => 'Андозаи парванда',
@@ -1208,12 +1224,7 @@ $1',
'imagelinks' => 'Пайвандҳои парванда',
'linkstoimage' => '{{PLURAL:$1|Саҳифаҳои|$1 Саҳифаи}} зерин ба ин акс пайванданд:',
'nolinkstoimage' => 'Ҳеҷ саҳифае ба ин акс пайванд надорад.',
-'sharedupload' => 'Ин парванда аз $1 мебошад ва шояд аз тарафи дигар лоиҳаҳо истифода шавад.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Лутфан барои иттилооти бештар ба $1 нигаред.',
-'shareduploadwiki-desc' => 'Тавзеҳот дар мавриди $1 дар зер нишон дода шудааст.',
-'shareduploadwiki-linktext' => 'саҳифаи тавсифи парванда',
-'noimage' => 'Ҳеҷ парвандае бо ин ном мавҷуд нест, шумо метавонед $1.',
-'noimage-linktext' => 'онро бор кунед',
+'sharedupload' => 'Ин парванда аз $1 мебошад ва шояд аз тарафи дигар лоиҳаҳо истифода шавад.',
'uploadnewversion-linktext' => 'Бор кардани нусхаи ҷадидӣ ин парванда',
# File reversion
@@ -1292,8 +1303,8 @@ $1',
'brokenredirects' => 'Саҳифаҳои кандашудаи равонакунӣ',
'brokenredirectstext' => 'Масирҳои зерин ба саҳифаҳои номавҷуд пайванданд:',
-'brokenredirects-edit' => '(вироиш)',
-'brokenredirects-delete' => '(ҳазф)',
+'brokenredirects-edit' => 'вироиш',
+'brokenredirects-delete' => 'ҳазф',
'withoutinterwiki' => 'Саҳифаҳои бидуни пайвандҳои забонӣ',
'withoutinterwiki-summary' => 'Саҳифаҳои зерин пайванде ба забони дигар надоранд:',
@@ -1516,7 +1527,7 @@ $NEWPAGE
--
Барои танзимоти феҳристи пайгириҳоятон биравед ба
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Пешниҳодот ва кӯмаки бештар:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1561,8 +1572,8 @@ $NEWPAGE
'alreadyrolled' => 'Охирин вироиши [[:$1]] аз тарафи [[User:$2|$2]] ([[User talk:$2|Баҳс]]) наметавон вогардонӣ кард; пеш аз ин шахси дигаре мақоларо вироиш ё вогардонӣ кардааст.
Охирин вироиш аз тарафи [[User:$3|$3]] ([[User talk:$3|Баҳс]]) буд.',
-'editcomment' => "Хулосаи вироиш ин буд: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Вироиши [[Special:Contributions/$2|$2]] ([[User talk:$2|Баҳс]]) вогардонида шуд ба охирин тағйире, ки [[User:$1|$1]] анҷом дода буд', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Хулосаи вироиш ин буд: \"''\$1''\".",
+'revertpage' => 'Вироиши [[Special:Contributions/$2|$2]] ([[User talk:$2|Баҳс]]) вогардонида шуд ба охирин тағйире, ки [[User:$1|$1]] анҷом дода буд',
'rollback-success' => 'Вироишҳои $1 вогардонӣ шуд; саҳифа ба вироиши $2 баргардонида шуд.',
'sessionfailure' => 'Ба назар мерасад, мушкилие дар мавриди нишасти корбарии шумо вуҷуд дорад; амали дархостшуда ба унвони иқдоми пешгирона дар баробари рабуда шудани иттилооти нишасти корбарӣ, лағв шуд. Лутфан тугмаи "бозгашт"-ро дар мурургари худ пахш кунед ва саҳифае, ки аз он инҷо расидаед муҷаддадан фарохонӣ кунед, сипас муҷаддадан боз саъй кунед.',
@@ -1579,7 +1590,6 @@ $NEWPAGE
'protectexpiry' => 'Замони саромадан:',
'protect_expiry_invalid' => 'Замони саромадан номӯътабар аст.',
'protect_expiry_old' => 'Замони саромадан дар гузашта аст.',
-'protect-unchain' => 'Боз кардани иҷозати кӯчонидан',
'protect-text' => "Шумо инҷо сатҳи муҳофизати саҳифаи '''<nowiki>$1</nowiki>''' метавонед нигаред ё тағйир диҳед",
'protect-locked-blocked' => "Шумо муддате, ки дастарсиатон қатъ аст наметавонед сатҳи ҳифзи саҳифаҳоро тагйир диҳед. Танзимоти феълии саҳифаи '''$1''' ба ин қарор аст:",
'protect-locked-dblock' => "Аз сабаби қуфл шудани пойгоҳи дода, имкони тағйири сатҳи ҳифзи саҳифа вуҷуд надорад.
@@ -1599,7 +1609,7 @@ $NEWPAGE
'protect-othertime' => 'Дигар вақт:',
'protect-othertime-op' => 'дигар вақт',
'protect-edit-reasonlist' => 'Сабабҳои ҳифзшударо вироиш кунед',
-'protect-expiry-options' => '1 соат:1 hour,1 рӯз:1 day,1 ҳафта:1 week,2 ҳафта:2 weeks,1 моҳ:1 month,3 моҳ:3 months,6 моҳ:6 months,1 сол:1 year,беохир:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 соат:1 hour,1 рӯз:1 day,1 ҳафта:1 week,2 ҳафта:2 weeks,1 моҳ:1 month,3 моҳ:3 months,6 моҳ:6 months,1 сол:1 year,беохир:infinite',
'restriction-type' => 'Дастраси:',
'restriction-level' => 'Сатҳи маҳдудият:',
'minimum-size' => 'Ҳадди ақали андоза',
@@ -1633,6 +1643,7 @@ $NEWPAGE
'undelete-nodiff' => 'Нусхаи кӯҳнатаре ёфт нашуд.',
'undeletebtn' => 'Барқарор кардан',
'undeletelink' => 'дидан/барқарор кардан',
+'undeleteviewlink' => 'намоиш',
'undeletereset' => 'Аз нав',
'undeletecomment' => 'Тавзеҳ:',
'undeletedarticle' => 'эҳё "[[$1]]" {{PLURAL:$1|шуд|шуданд}}',
@@ -1667,7 +1678,7 @@ $1',
'contributions-title' => 'Ҳиссагузориҳои корбар барои $1',
'mycontris' => 'Хиссагузории ман',
'contribsub2' => 'Барои $1 ($2)',
-'nocontribs' => 'Ҳеҷ тағйире бо ин мушаххасот пайдо нашуд.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ҳеҷ тағйире бо ин мушаххасот пайдо нашуд.',
'uctop' => '(боло)',
'month' => 'Дар ин моҳ (ва қабл аз он):',
'year' => 'Дар ин сол (ва қабл аз он):',
@@ -1675,6 +1686,9 @@ $1',
'sp-contributions-newbies' => 'Фақат ҳиссагузориҳои ҳисобҳои ҷадидро нишон деҳ',
'sp-contributions-newbies-sub' => 'Барои навкорон',
'sp-contributions-blocklog' => 'Гузориши басташуданҳо',
+'sp-contributions-deleted' => 'Ҳиссагузориҳои ҳазфшудаи корбар',
+'sp-contributions-talk' => 'Баҳс',
+'sp-contributions-userrights' => 'Мудирияти ихтиёроти корбарӣ',
'sp-contributions-search' => 'Ҷустуҷӯи ҳиссагузориҳо',
'sp-contributions-username' => 'IP нишона ё номи корбар:',
'sp-contributions-submit' => 'Ҷустуҷӯ',
@@ -1722,7 +1736,7 @@ $1',
'ipbenableautoblock' => 'Нишонаи охире ки аз он ин корбар истифода мекунад, ба сурати худкор бубанд, ва дигар нишонаҳои IP-ҳои баъдина, ки аз онҳо метавонад вироиш кунанд',
'ipbsubmit' => 'Бастани ин корбар',
'ipbother' => 'Дигар вақт:',
-'ipboptions' => '2 соат:2 hours,1 рӯз:1 day,3 рӯз:3 days,1 ҳафта:1 week,2 ҳафта:2 weeks,1 моҳ:1 month,3 моҳ:3 months,6 моҳ:6 months,1 сол:1 year,беохир:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 соат:2 hours,1 рӯз:1 day,3 рӯз:3 days,1 ҳафта:1 week,2 ҳафта:2 weeks,1 моҳ:1 month,3 моҳ:3 months,6 моҳ:6 months,1 сол:1 year,беохир:infinite',
'ipbotheroption' => 'дигар',
'ipbotherreason' => 'Далелҳои дигар/изофӣ:',
'ipbhidename' => 'Пинҳони номи корбарӣ аз вироишҳо ва феҳристҳо',
@@ -1746,7 +1760,7 @@ $1',
'ipblocklist-submit' => 'Ҷустуҷӯ',
'blocklistline' => '$1, $2 ро баст $3 ($4)',
'infiniteblock' => 'бе поён',
-'expiringblock' => '$1 ба поён мерасад',
+'expiringblock' => '$1 $2 ба поён мерасад',
'anononlyblock' => 'фақат корбарони гумном',
'noautoblockblock' => 'бастани худкор ғайрифаъол аст',
'createaccountblock' => 'имкони эҷоди ҳисоб баста шудааст',
@@ -1833,7 +1847,7 @@ $1',
'move-watch' => 'Назар кардани ин саҳифа',
'movepagebtn' => 'Кӯчонидани саҳифа',
'pagemovedsub' => 'Кӯчониш бомуваффақият анҷом ёфт',
-'movepage-moved' => '\'\'\'"$1" ба "$2" кӯчонида шуд\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ба "$2" кӯчонида шуд\'\'\'',
'movepage-moved-redirect' => 'Як тағйири масир эҷод шуд.',
'movepage-moved-noredirect' => 'Аз эҷоди тағйири масир маъмониат шуд.',
'articleexists' => 'Саҳифае бо ин ном вуҷуд надорад, ё номе, ки интихоб кардаед мӯътабар нест.
@@ -1891,8 +1905,10 @@ $1',
'allmessagestext' => 'Ин феҳристи паёмҳои системавии дастрас дар фазои номи MediaWiki мебошад.
Агар майли ҳиссагузорӣ карданро ба маҳалликунонии MediaWiki доред, пас лутан саҳифаҳои [http://www.mediawiki.org/wiki/Localisation Маҳалликунонии MediaWiki] ва [http://translatewiki.net translatewiki.net] нигаред.',
'allmessagesnotsupportedDB' => "Аз ин саҳифа наметавон истифода бурд, чун '''\$wgUseDatabaseMessages''' ғайрифаъол гардонида шудааст.",
-'allmessagesfilter' => 'Филтри номи пайём:',
-'allmessagesmodified' => 'Фақат тағйирдодаро нишон деҳ',
+'allmessages-filter-legend' => 'Филтр',
+'allmessages-filter-all' => 'Ҳама',
+'allmessages-language' => 'Забон:',
+'allmessages-filter-submit' => 'Рафтан',
# Thumbnails
'thumbnail-more' => 'Бузург шавад',
@@ -1973,6 +1989,7 @@ $1',
'tooltip-search-fulltext' => 'Ҷустуҷӯи саҳифаҳое, ки чунин матн доранд',
'tooltip-p-logo' => 'Саҳифаи Аслӣ',
'tooltip-n-mainpage' => 'Гузаштан ба Саҳифаи Аслӣ',
+'tooltip-n-mainpage-description' => 'Мушоҳидаи саҳифаи аслӣ',
'tooltip-n-portal' => 'Дар бораи лоиҳа ва чи корҳоро метавонед кард',
'tooltip-n-currentevents' => 'Ёфтани иттилооти пешзамина перомуни воқеаҳои кунунӣ',
'tooltip-n-recentchanges' => 'Рӯйхати тағйиротҳо дар Википедиа',
@@ -2018,7 +2035,7 @@ $1',
# Attribution
'anonymous' => '{{PLURAL:$1|корбари|корбарони}} гумномӣ {{SITENAME}}',
'siteuser' => 'Википедиа user $1',
-'lastmodifiedatby' => 'Ин саҳифа охирин маротиба дар $2, $1 аз тарафи $3 тағйир дода шудааст.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ин саҳифа охирин маротиба дар $2, $1 аз тарафи $3 тағйир дода шудааст.',
'othercontribs' => 'Дар асоси коре аз тарафи $1.',
'others' => 'дигарон',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|корбар|корбарон}} $1',
@@ -2050,6 +2067,17 @@ $1',
'mw_math_modern' => 'Тавсеҳ шуда барои мурургарҳои замонавӣ',
'mw_math_mathml' => 'Истифода аз MathML дар сурати имкон (озмоишӣ)',
+# Math errors
+'math_failure' => 'Шикаст дар таҷзеҳ',
+'math_unknown_error' => 'хатои ношинос',
+'math_unknown_function' => 'амали номаълум',
+'math_lexing_error' => 'хатои lexing',
+'math_syntax_error' => 'хатои наҳвӣ',
+'math_image_error' => 'Табдил ба PNG шикаст хӯр; насби дурусти latex, dvips, gs, ва табдилотро баррасӣ кунед',
+'math_bad_tmpdir' => 'Имкони эҷод ё навистани иттилоот дар пӯшаи муваққатии риёзӣ (temp) вуҷуд надорад',
+'math_bad_output' => 'Имкони эҷод ё навистани иттилоот дар пӯшаи хуруҷии риёзӣ (output) вуҷуд надорад',
+'math_notexvc' => 'Барномаи ичроии texvc мавҷуд нест; барои иттилооти бештар ба math/README нигаред.',
+
# Patrolling
'markaspatrolleddiff' => 'Ба унвони баррасишуда аломат бизан',
'markaspatrolledtext' => 'Ин мақоларо ба унвони баррасишуда аломат бизан',
@@ -2126,7 +2154,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Васеъӣ',
@@ -2253,14 +2281,14 @@ $1',
'exif-unknowndate' => 'Таърихи номаълум',
-'exif-orientation-1' => 'Оддӣ', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Уфуқӣ пуштурӯ шуда', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° дараҷа чархида', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Амудӣ пуштурӯ шуда', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° бо ақрабаки соат чархида ва амудӣ пуштурӯ шуда', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° ақрабаки соат чархида', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° ақрабаки соат чархида ва амудӣ пуштурӯ шуда', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° бо ақрабаки соат чархида', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Оддӣ',
+'exif-orientation-2' => 'Уфуқӣ пуштурӯ шуда',
+'exif-orientation-3' => '180° дараҷа чархида',
+'exif-orientation-4' => 'Амудӣ пуштурӯ шуда',
+'exif-orientation-5' => '90° бо ақрабаки соат чархида ва амудӣ пуштурӯ шуда',
+'exif-orientation-6' => '90° ақрабаки соат чархида',
+'exif-orientation-7' => '90° ақрабаки соат чархида ва амудӣ пуштурӯ шуда',
+'exif-orientation-8' => '90° бо ақрабаки соат чархида',
'exif-planarconfiguration-1' => 'Қолаби фарбеҳ',
'exif-planarconfiguration-2' => 'қолаби сатҳӣ',
@@ -2370,7 +2398,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Андозагирии 2-баъдӣ',
'exif-gpsmeasuremode-3' => 'Андозагирии 3-баъдӣ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Километр бар соат',
'exif-gpsspeed-m' => 'Мил бар соат',
'exif-gpsspeed-n' => 'Гиреҳ',
@@ -2389,6 +2417,7 @@ $1',
'watchlistall2' => 'ҳама',
'namespacesall' => 'ҳама',
'monthsall' => 'ҳама',
+'limitall' => 'ҳама',
# E-mail address confirmation
'confirmemail' => 'Тасдиқи нишонаи почтаи электронӣ',
@@ -2538,7 +2567,7 @@ $1',
'unknown_extension_tag' => 'Бачасби ношиноси афзунаи "$1"',
# Special:Version
-'version' => 'Нусхаи Медиавики', # Not used as normal message but as header for the special page itself
+'version' => 'Нусхаи Медиавики',
'version-extensions' => 'Афзунаҳои насбшуда',
'version-specialpages' => 'Саҳифаҳои вижа',
'version-parserhooks' => 'Қолабҳои таҷзеҳгар',
@@ -2552,7 +2581,7 @@ $1',
'version-skin-extension-functions' => 'Амалгарҳои афзунаҳои пӯст',
'version-hook-name' => 'Номи қолаб',
'version-hook-subscribedby' => 'Воридшуда тавассути',
-'version-version' => 'Нусха',
+'version-version' => '(Нусха $1)',
'version-license' => 'Иҷозатнома',
'version-software' => 'Нусхаи насбшуда',
'version-software-product' => 'Маҳсул',
@@ -2601,4 +2630,15 @@ $1',
'dberr-outofdate' => 'Таваҷҷӯҳ кунед, ки намояҳои онҳо аз мӯҳтавои мо мумкин аст барӯз набошад.',
'dberr-cachederror' => 'Ин як нусхаи саҳифаи дархостшуда аст, ки дар кэш қарор дорад ва шояд барӯз нест.',
+# HTML forms
+'htmlform-invalid-input' => 'Бахши аз вуруди шумо мушкили дорад',
+'htmlform-select-badoption' => 'Миқдори воридшуда як гузинаи қобили қабул нест.',
+'htmlform-int-invalid' => 'Миқдоре, ки ворид кардаед як адади саҳеҳ нест.',
+'htmlform-float-invalid' => 'Миқдоре, ки ворид кардаед як адад нест.',
+'htmlform-int-toolow' => 'Миқдоре, ки ворид кардаед камтар аз $1 аст',
+'htmlform-int-toohigh' => 'Миқдоре, ки ворид кардаед бештар аз $1 аст',
+'htmlform-submit' => 'Ирсол',
+'htmlform-reset' => 'Ботили тағйирот',
+'htmlform-selectorother-other' => 'Дигар',
+
);
diff --git a/languages/messages/MessagesTg_latn.php b/languages/messages/MessagesTg_latn.php
new file mode 100644
index 00000000..7f982b40
--- /dev/null
+++ b/languages/messages/MessagesTg_latn.php
@@ -0,0 +1,2417 @@
+<?php
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Liangent
+ */
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Zerpajvandho xat kaşida şavand:',
+'tog-highlightbroken' => 'Pajvandhoi şikastaro <a href="" class="new">hamin xel</a> qolabbandī kuned (Imkoni digar:ba in şakl<a href="" class="internal">?</a>).',
+'tog-justify' => 'Tamomcenkardani bandho',
+'tog-hideminor' => "Nişon nadodani taƣjiroti çuz'i dar fehristi taƣjiroti oxir",
+'tog-hidepatrolled' => 'Pinhon kardani viroişhoi gaştxūrda dar taƣjiroti oxir',
+'tog-newpageshidepatrolled' => 'Pinhoni sahifahoi gaştxūrda az fehristi sahifahoi nav',
+'tog-extendwatchlist' => 'Gustarişi fehristi pajgiriho baroi nişon dodani hamai taƣjirotho, na tanho az hama oxirin',
+'tog-usenewrc' => 'Az taƣjiroti oxiri gustarişjofta istifoda bared(ÇavaSkript lozim ast)',
+'tog-numberheadings' => 'şumoraguzori~i xudkori invonho',
+'tog-showtoolbar' => 'Namoişi navori abzori viroiş (JavaScript)',
+'tog-editondblclick' => 'Viroiş namudani sahifaho hangomi du karat paxş namudani tugmai muşak (JavaScript)',
+'tog-editsection' => 'Içozat dodani viroişi qismati sahifa ba vositai pajvandi [viroiş]',
+'tog-editsectiononrightclick' => 'Ba kor andoxtani viroişi sarlavhahoi qismatho bo kliki rost (ÇavaSkript)',
+'tog-showtoc' => 'Namoişi fehristi mundariçon (baroi maqolahoi bo beş az 3 sarlavha)',
+'tog-rememberpassword' => 'Maro dar xotiri kompjuter nigoh dor',
+'tog-editwidth' => "Vase' kardani quttiji viroiş to hadde, ki tamomi sahifaro bargirad",
+'tog-watchcreations' => 'Doxil namudani sahifahoe, ki man soxtaam ba fehristi nazaroti man',
+'tog-watchdefault' => 'Sahifahoi eçodkardaamro ba fehristi pajgiriam ilova kuned',
+'tog-watchmoves' => 'Sahifahoi kūconidaamro ba fehristi pajgirihojam ilova kuned',
+'tog-watchdeletion' => 'Sahifahoi eçodkardai manro ba fehristi pajgirihojam ilova kuned',
+'tog-minordefault' => "Peşfarzi hamai viroişhoro çuz'i işora kuned",
+'tog-previewontop' => 'Namoişi peşnamoişi qablī peş az quttiji viroiş va na pas az on',
+'tog-previewonfirst' => 'Nişon dodani peşnamoiş dar naxustin viroiş',
+'tog-nocache' => 'Az kor andoxtani hofizai nihoniji sahifa',
+'tog-enotifwatchlistpages' => 'Agar sahifae mavridi pajgiriji man taƣjir karda şavad ba man tariqi poctai elektronī pajjom bifiristed.',
+'tog-enotifusertalkpages' => 'Hangome ki dar sahifai korbariam taƣjir doda meşavad ba man tariqi poctai elektronī pajjom bifiristed.',
+'tog-enotifminoredits' => "Baroi taƣjiroti çuz'i ba man tariqi poctai elektronī pajjom bifiristed.",
+'tog-enotifrevealaddr' => 'Nişonai poctai elektroniji man dar nomahoi ittilorasonī qajd şavad',
+'tog-shownumberswatching' => 'Nişon dodani şumorai korbaroni pajgir',
+'tog-oldsig' => 'Peşnamoişi imzoi vuçuddoşta:',
+'tog-fancysig' => 'Imzoro ba surati vikimatn ba nazar bigir (be pajvandi xudkor)',
+'tog-externaleditor' => 'Ba tavri peşfarz az viroişgari xoriçī istifoda şavad (tanho baroi korbaroni bo taçriba, nijoz ba muhiti viƶa dar kompjuteri şumo dorad)',
+'tog-externaldiff' => 'Istifoda az tafovutgiri xoriçī ba tavri peşfarz (tanho baroi korbaroni bo taçriba, nijoz ba muhiti viƶa dar kompjuteri şumo dorad)',
+'tog-showjumplinks' => 'Namoişi pajvandhoi dastrasiji "çahiş ba" dar fehristi mundariçot',
+'tog-uselivepreview' => 'Istifoda az peşnamoişi zinda (ÇavaSkript) (Ozmoişī)',
+'tog-forceeditsummary' => 'Hangome ki xulosai viroiş nanaviştaam jua man isloh bideh',
+'tog-watchlisthideown' => 'Pinhon namudani viroişhoi man dar fehristi nazarot',
+'tog-watchlisthidebots' => 'Pinhon namudani viroişhoi bot dar fehristi nazarot',
+'tog-watchlisthideminor' => 'Pinhon namudani viroişhoi xurd dar fehristi nazarot',
+'tog-watchlisthideliu' => 'Pinhon kardani viroişoti korbaroni vurudşuda az fehristi pajgiriho',
+'tog-watchlisthideanons' => 'Pinhon kardani viroişoti korbaroni gumnom az fehristi pajgiriho',
+'tog-watchlisthidepatrolled' => 'Pinhoni viroişhoi gaştxūrda az fehristi pajgiriho',
+'tog-ccmeonemails' => 'Nusxahoi xathoro ba man roi kuned, man onhoro ba korbaron roi mekunam',
+'tog-diffonly' => 'Muhtavijoti sahifai zerin namoiş doda naşavad',
+'tog-showhiddencats' => 'Gurūhhoi pinhonro namoiş bideh',
+'tog-norollbackdiff' => "Ba'd az vogardoni tafovutro nişon nadeh",
+
+'underline-always' => 'Doimo',
+'underline-never' => 'Heçgoh',
+'underline-default' => 'Peşfarzi mururgar',
+
+# Font style option in Special:Preferences
+'editfont-style' => "Sabki qalami ça'bai viroiş:",
+'editfont-default' => 'Peşfarzi mururgar',
+'editfont-monospace' => 'Qalami bo fosilai sobit',
+'editfont-sansserif' => 'Qalami biduni gūşa',
+'editfont-serif' => 'Qalami gūşador',
+
+# Dates
+'sunday' => 'Jakşanbe',
+'monday' => 'Duşanbe',
+'tuesday' => 'Seşanbe',
+'wednesday' => 'Corşanbe',
+'thursday' => 'Pançşanbe',
+'friday' => "Çum'a",
+'saturday' => 'Şanbe',
+'sun' => 'Jaş',
+'mon' => 'Du',
+'tue' => 'Sş',
+'wed' => 'Cş',
+'thu' => 'Pş',
+'fri' => 'Çu',
+'sat' => 'Şn',
+'january' => 'Janvar',
+'february' => 'Fevral',
+'march' => 'Mart',
+'april' => 'Aprel',
+'may_long' => 'maj',
+'june' => 'Ijun',
+'july' => 'Ijul',
+'august' => 'Avgust',
+'september' => 'Sentjabr',
+'october' => 'Oktjabr',
+'november' => 'Nojabr',
+'december' => 'Dekabr',
+'january-gen' => 'Janvar',
+'february-gen' => 'fevrali',
+'march-gen' => 'marti',
+'april-gen' => 'Aprel',
+'may-gen' => 'maj',
+'june-gen' => 'ijuni',
+'july-gen' => 'Ijul',
+'august-gen' => 'Avgust',
+'september-gen' => 'sentjabri',
+'october-gen' => 'Oktjabr',
+'november-gen' => 'Nojabr',
+'december-gen' => 'Dekabri',
+'jan' => 'Jan',
+'feb' => 'Fev',
+'mar' => 'Mar',
+'apr' => 'Apr',
+'may' => 'maj',
+'jun' => 'Ijun',
+'jul' => 'Ijul',
+'aug' => 'Avg',
+'sep' => 'Sent',
+'oct' => 'Okt',
+'nov' => 'Nov',
+'dec' => 'Dek',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Gurūh|Gurūhho}}',
+'category_header' => 'Maqolaho dar gurūhi "$1"',
+'subcategories' => 'Zergurūhho',
+'category-media-header' => 'Parvandahoi gurūh "$1"',
+'category-empty' => "''Dar holi hozir in gurūh doroi maqola jo parvandaho nest.''",
+'hidden-categories' => '{{PLURAL:$1|Gurūhi pinhon|Gurūhhoi pinhon}}',
+'hidden-category-category' => 'Gurūhhoi pinhon',
+'category-subcat-count' => '{{PLURAL:$2|In gurūh faqat zergurūhhoi zerinro dorad.|In gurūh dar kul az $2, {{PLURAL:$1|zergurūh|$1 zergurūhho}} dorad.}}',
+'category-subcat-count-limited' => 'In gurūh şomili {{PLURAL:$1|jak zergurūh|$1 zergurūhho}} meboşad.',
+'category-article-count' => '{{PLURAL:$2|In gurūh şomili faqat sahifai zerin ast.|{{PLURAL:$1|sahifai|$1 sahifahoi}} zerin dar in gurūh, kuli havoi $2 sahifa ast.}}',
+'category-article-count-limited' => "{{PLURAL:$1|sahifai|$1 sahifahoi}} zerin dar gurūhi fe'lī qaror {{PLURAL:dorad|dorand}}.",
+'category-file-count' => '{{PLURAL:$2|In gurūh tanho parvandai zerinro dar bar megirad.|{{PLURAL:$1|In parvandai|$1 parvandahoi}} zerin dar in gurūh qaror {{PLURAL:$1|dorad|dorand}}. In gurūh dar kul havoi $2 sahifa ast.}}',
+'category-file-count-limited' => "{{PLURAL:$1|parvandai|$1 parvandahoi}} zerin dar gurūhi fe'lī qaror {{PLURAL:dorad|dorand}}.",
+'listingcontinuesabbrev' => 'idoma',
+'index-category' => 'Sahifahoi namojaşuda',
+'noindex-category' => 'Sahifahoi namoijanaşuda',
+
+'mainpagetext' => "'''Narmafzori MediaViki bo muvaffaqijat nasb şud.'''",
+'mainpagedocfooter' => 'Az [http://meta.wikimedia.org/wiki/Help:Contents Rohnamoi Korbaron] baroi istifodai narmafzori viki kūmak bigired.
+
+== Oƣoz ba kor ==
+
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Fehristi tanzimoti pajgirbandī]
+* [http://www.mediawiki.org/wiki/Manual:FAQ Pursişhoi MediaViki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Fehristi rojnomahoi nusxahoi MediaViki]',
+
+'about' => 'Dar borai',
+'article' => 'Sahifai mūhtavo',
+'newwindow' => '(dar ravzanai çadid boz meşavad)',
+'cancel' => 'Laƣv',
+'moredotdotdot' => 'Beştar...',
+'mypage' => 'Sahifai man',
+'mytalk' => 'Guftugūi man',
+'anontalk' => 'Bahs bo in IP',
+'navigation' => 'Gaştan',
+'and' => '&#32;va',
+
+# Cologne Blue skin
+'qbfind' => 'Joftan',
+'qbbrowse' => 'Murur',
+'qbedit' => 'Viroiş',
+'qbpageoptions' => 'In sahifa',
+'qbpageinfo' => 'Boft',
+'qbmyoptions' => 'Sahifahoi man',
+'qbspecialpages' => 'Sahifahoi viƶa',
+'faq' => 'Savolhoi tez-tez pursidaşuda',
+'faqpage' => 'Project:Savolhoi tez-tez pursidaşuda',
+
+# Vector skin
+'vector-action-addsection' => 'Ilovai unvon',
+'vector-action-delete' => 'Hazf',
+'vector-action-move' => 'Kūconidan',
+'vector-action-protect' => 'Muhofizat',
+'vector-action-undelete' => 'Ehjo',
+'vector-action-unprotect' => 'Ba dar ovardan az muhofizat',
+'vector-namespace-category' => 'Gurūh',
+'vector-namespace-help' => 'Sahifai rohnamo',
+'vector-namespace-image' => 'Parvanda',
+'vector-namespace-main' => 'Sahifa',
+'vector-namespace-media' => 'Sahifai rasona',
+'vector-namespace-mediawiki' => 'Pajƣom',
+'vector-namespace-project' => 'Sahifai loiha',
+'vector-namespace-special' => 'Sahifai viƶa',
+'vector-namespace-talk' => 'Bahs',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Sahifai korbarī',
+'vector-view-create' => 'Eçod',
+'vector-view-edit' => 'Viroiş',
+'vector-view-history' => "Namoişi ta'rix",
+'vector-view-view' => 'Xondan',
+'vector-view-viewsource' => "Namoişi manba'",
+'actions' => 'Amalkardho',
+'namespaces' => 'Fazohoi nom',
+'variants' => 'Variantho',
+
+'errorpagetitle' => 'Xato',
+'returnto' => 'Bozgaşt ba $1.',
+'tagline' => 'Az {{SITENAME}}',
+'help' => 'Rohnamo',
+'search' => 'Çustuçū',
+'searchbutton' => 'Çustuçū',
+'go' => 'Rav',
+'searcharticle' => 'Birav',
+'history' => "Ta'rix",
+'history_short' => "Ta'rix",
+'updatedmarker' => 'barūzşuda az rūzi oxirin taşrifam',
+'info_short' => 'Ittiloot',
+'printableversion' => 'Nusxai copī',
+'permalink' => 'Pajvandi doimī',
+'print' => 'Cop',
+'edit' => 'Viroiş',
+'create' => 'Eçod',
+'editthispage' => 'Viroişi in sahifa',
+'create-this-page' => 'Eçod kardani in sahifa',
+'delete' => 'Hazf',
+'deletethispage' => 'In sahifaro hazf kuned',
+'undelete_short' => 'Ehjoi {{PLURAL:$1|viroiş|$1 viroişot}}',
+'protect' => 'Hifz kardan',
+'protect_change' => 'taƣjir',
+'protectthispage' => 'Hifz namudani in sahifa',
+'unprotect' => 'Taƣjiri sathi muhofizat',
+'unprotectthispage' => 'Az muhofizat dar ovardani in sahifa',
+'newpage' => 'Sahifai nav',
+'talkpage' => 'In sahifaro muhokima kuned',
+'talkpagelinktext' => 'Bahs',
+'specialpage' => 'Sahifai viƶa',
+'personaltools' => 'Abzorhoi şaxsī',
+'postcomment' => 'Baxşi nav',
+'articlepage' => 'Namoişi maqola',
+'talk' => 'Bahs',
+'views' => 'Nazarot',
+'toolbox' => "Ça'bai abzor",
+'userpage' => 'Sahifai korbarro bined',
+'projectpage' => 'Didani sahifai loiha',
+'imagepage' => 'Namoişi sahifai parvanda',
+'mediawikipage' => 'Namoişi sahifai aks',
+'templatepage' => 'Nigaristani sahifai şablon',
+'viewhelppage' => 'Namoişi sahifai rohnamo',
+'categorypage' => 'Namoişi sahifai gurūh',
+'viewtalkpage' => 'Namoişi mubohisot',
+'otherlanguages' => 'bo zabonhoi digar',
+'redirectedfrom' => '(Taƣjiri masir az $1)',
+'redirectpagesub' => 'Sahifai ravonakunī',
+'lastmodifiedat' => 'In sahifa bori oxir $2, $1 digargun karda şudaast.',
+'viewcount' => 'In sahifa {{PLURAL:$1|bor|$1 bor}} dida şudaast.',
+'protectedpage' => 'Sahifai muhofizatşuda',
+'jumpto' => 'Çahiş ba:',
+'jumptonavigation' => 'gaştan',
+'jumptosearch' => 'Çustuçūi',
+'view-pool-error' => "Mutaasifona, korsozhoi dar holi hozir ducori bori izofī hastand.
+Te'dodi zijodi az korbaron taloş mekunand, ki in sahifaro bubinand.
+Lutfan qabl az taloş dubora baroi didani in sahifa muddate sabr kuned.
+
+$1",
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Dar borai {{SITENAME}}',
+'aboutpage' => 'Project:Dar borai',
+'copyright' => 'Mūhtavo tahti içozatnomai $1 dastras ast.',
+'copyrightpage' => '{{ns:project}}:Copyrights',
+'currentevents' => 'Vokeahoi kununī',
+'currentevents-url' => 'Project:Voqeahoi kununī',
+'disclaimers' => 'Takzibnoma',
+'disclaimerpage' => 'Project:Takzibnomai umumī',
+'edithelp' => 'Rohnamoi viroiş',
+'edithelppage' => 'Help:Viroiş',
+'helppage' => 'Help:Mundariça',
+'mainpage' => 'Sahifai Aslī',
+'mainpage-description' => 'Sahifai Aslī',
+'policy-url' => 'Project:Sijosatho',
+'portal' => 'Vurudi korbaron',
+'portal-url' => 'Project:Vurudi korbaron',
+'privacy' => 'Sijosati hifzi asror',
+'privacypage' => 'Project:Sijosati hifzi asror',
+
+'badaccess' => 'Iştibohi içoza',
+'badaccess-group0' => 'Şumo ruxsati içroi amali darxostşudaro nadored.',
+'badaccess-groups' => 'Amale ki darxost kardaed mahdud ba korbaroni {{PLURAL:$2|gurūhi|jake az gurūhhoi}} ast: $1.',
+
+'versionrequired' => 'Nusxai $1 az narmafzori MediaViki lozim ast',
+'versionrequiredtext' => "Baroi istifodai in sahifa ba nusxai $1 az narmafzori MediaViki nijoz dored. Baroi ittiloo' az nusxai narmafzori nasbşuda dar in viki ba [[Special:Version|in sahifa]] nigared.",
+
+'ok' => 'Boşad',
+'retrievedfrom' => 'Bargirifta az "$1"',
+'youhavenewmessages' => 'Şumo $1 ($2) dored.',
+'newmessageslink' => 'pajjomhoi nav',
+'newmessagesdifflink' => 'taƣjiroti oxirin',
+'youhavenewmessagesmulti' => 'Şumo nomahoi nav dar $1 dored.',
+'editsection' => 'viroiş',
+'editold' => 'viroiş',
+'viewsourceold' => "namoişi manba'",
+'editlink' => 'viroiş',
+'viewsourcelink' => "didani manba'",
+'editsectionhint' => 'Viroişi qismat: $1',
+'toc' => 'Mundariça',
+'showtoc' => 'Namoiş doda şavad',
+'hidetoc' => 'Pinhon kardani',
+'thisisdeleted' => 'Namoiş jo ehjoi $1?',
+'viewdeleted' => 'Namoişi $1?',
+'restorelink' => '{{PLURAL:$1|viroişi hazfşuda|$1 viroişoti hazfşudaho}}',
+'feedlinks' => 'Xabarxon:',
+'feed-invalid' => 'Işkol dar obunai xabarxon.',
+'feed-unavailable' => 'Xabarxonho qobili istifoda nestand',
+'site-rss-feed' => 'Baroi $1 RSS Xabarxon',
+'site-atom-feed' => 'Baroi $1 Atom Xabarxon',
+'page-rss-feed' => 'Baroi "$1" RSS Xabarxon',
+'page-atom-feed' => 'Baroi "$1" Atom Xabarxon',
+'red-link-title' => '$1 (sahifa vuçud nadorad)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Maqola',
+'nstab-user' => 'Sahifai korbar',
+'nstab-media' => 'Rasona',
+'nstab-special' => 'Sahifai viƶa',
+'nstab-project' => 'Sahifai loiha',
+'nstab-image' => 'fajl',
+'nstab-mediawiki' => 'Pajjom',
+'nstab-template' => 'Şablon',
+'nstab-help' => 'Kūmak',
+'nstab-category' => 'Gurūh',
+
+# Main script and global functions
+'nosuchaction' => 'Cunin amale vuçud nadorad',
+'nosuchspecialpage' => 'Cunin sahifai viƶa vuçud nadorad',
+'nospecialpagetext' => '<strong>Şumo sahifai viƶaero darxost kardaed, ki nodurust ast.</strong>
+
+Fehristi sahifahoi viƶai durustro metavoned dar inço [[Special:SpecialPages|{{int:specialpages}}]] nigared.',
+
+# General errors
+'error' => 'Iştiboh',
+'databaseerror' => 'Xatoi bojgohi doda',
+'laggedslavemode' => 'Huşdor: Sahifa mumkin ast rūzrasonihoi oxirro dar bar nagirad.',
+'readonly' => 'Bojgohi doda qufl şudaast',
+'enterlockreason' => 'Dalelero baroi qufl kardan zikr kuned, va taqriban vaqti az qufl ozod şudanaşro ham zikr kuned',
+'readonlytext' => "Pojgohi doda dar holi hozir dar barobari taƣjirot va eçodi sahifaho qufl şudaast, ehtimolan on baroi ta'miri pojgohi doda va rasidagihoe ma'mul ast, ki ba'd az ançomi on vaz' ba holati oddī boz xohad gaşt.
+
+Tavzehi mudire, ki onro qufl kardaast badin şarh ast: $1",
+'missing-article' => 'Pojgohi dodaho matni sahifaero, ki nomi "$1" $2 pajdo mekard darjoft nakard.
+
+In odatan az sababi taƣjirot jo pajvandi ta\'rixi kūhani zer ba sahifai hazvşuda rux medihad.
+
+Agar in sababe naboşad, şumo şojad iştibohero dar narmafzor pajdo karda boşed.
+
+Lutfan inro ba [[Special:ListUsers/sysop|mudir]] bo işora kardani nişonai URL xabar dihed.',
+'missingarticle-rev' => '(nusxai#: $1)',
+'missingarticle-diff' => '(Tafovut: $1, $2)',
+'readonly_lag' => 'Pojgohi doda ba tavri xudkor qufl şudaast to nusxahoi puştibon bo nusxahoi aslī hamohang şavand',
+'internalerror' => 'Xatoi doxilī',
+'internalerror_info' => 'Xatoi doxilī: $1',
+'filecopyerror' => 'Natavonistam az parvandai "$1" rūi "$2" nusxabardorī kunam.',
+'filerenameerror' => 'Natavonistam parvandai "$1" ba "$2" taƣjiri nom diham.',
+'filedeleteerror' => 'Parvanda "$1" hazf natavonist şud.',
+'directorycreateerror' => 'Imkoni eçodi pūşai "$1" vuçud nadorad.',
+'filenotfound' => 'Parvandai "$1" joft naşud.',
+'fileexistserror' => 'Imkoni naviştan rūi parvandai "$1" vuçud nadorad: parvanda az qabl vuçud dorad',
+'unexpected' => 'Miqdori ƣajri muntazir: "$1"="$2".',
+'formerror' => 'Xato: nametavon formro firistod',
+'badarticleerror' => 'Nametavon in amalro bar in sahifa ançom dod.',
+'badtitle' => 'Unvoni nomunosib',
+'badtitletext' => "Unvoni sahifai darxostşuda nomū'tabar, xolī, jo pajvandi bajnizaboni jo bajnivikiji nodurust bud. On metavonad jak jo jakcand alomathoero dar bar girad, ki dar unvonho istifoda şuda nametavonand.",
+'perfcached' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, komilan ba rūz naşudaand.',
+'perfcachedts' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, oxirin ba rūzrasonī $1 ast.',
+'querypage-no-updates' => "Imkoni ba rūzrasoniji in sahifa fe'lan ƣajrifa'ol şudaast.",
+'wrong_wfQuery_params' => 'Parametrhoi nodurust ba wfQuery()<br />
+Amal: $1<br />
+Pursuçū: $2',
+'viewsource' => 'Namoişi matni viki',
+'viewsourcefor' => 'baroi $1',
+'actionthrottled' => 'Çilavi amali şumo girifta şud',
+'actionthrottledtext' => 'Ba manzuri çilavgirī az spam, şumo içoza nadored, ki cunin amalero beş az cand bor dar jak muddati zamoni kūtoh ançom bidihed. Lutfan pas az cand daqiqa dubora taloş kuned.',
+'protectedpagetext' => 'In sahifa baroi çilavgirī az viroiş qufl şudaast.',
+'viewsourcetext' => 'Şumo metavoned matni vikiji in sahifaro nazar kuned jo nusxa bardored:',
+'protectedinterface' => 'In sahifa oroişdihandai matni in narmafzor ast, va ba manzuri peşgirī az xarobkorī qufl şudaast.',
+'sqlhidden' => '(Dasturi SQL pinhonist)',
+'cascadeprotected' => 'In sahifa az viroiş muhofizat şudaast, baroi in ki dar {{PLURAL:$1|sahifai|sahifahoi}} muhofizatşudai zerin, ki guzainai "obşorī" dar {{PLURAL:$1|on|onho}} intixob şudaast, faro giriftaast: $2',
+'namespaceprotected' => "Şumo içozati viroişi sahifahoi fazoinomi '''$1'''-ro nadored.",
+'customcssjsprotected' => 'Şumo içozati viroişi in sahifaro nadored, baroi on ki on tanzimhoi şasiji jak korbari digarero dar bar megirad.',
+'ns-specialprotected' => 'Sahifahoi viƶa ƣajri qobili viroiş hastand.',
+'titleprotected' => "Eçodi sahifae bo in unvon az tarafi [[User:$1|$1]] çilavgirī şudaast.
+Daleli zikrşuda az in qaror ast ''$2''.",
+
+# Virus scanner
+'virus-badscanner' => "Tanzimoti bad: puişgari virusi noşinoxta: ''$1''",
+'virus-scanfailed' => 'puiş nomuvaffaq (ramzi $1)',
+'virus-unknownscanner' => 'antivirusi noşinos:',
+
+# Login and logout pages
+'logouttext' => "'''Aknun az sistem xoriç şudaed.'''
+
+Şumo metavoned gumnom az {{SITENAME}} istifodabariro idoma dihed, jo metavoned bo hamin nomi korbariaton va jo nomi korbariji digare [[Special:UserLogin|boz vurud kuned]].
+Tavvaçūh kuned, ki ba'ze az sahifaho qablan ci tavre namoiş şuda budan hamin tavr namoiş doda meşavand, to dame ki şumo hofizai mururgaratonro pok kuned.",
+'welcomecreation' => '== Xuş omaded, $1! ==
+
+Hisobi şumo eçod şud.
+Tanzim kardani [[Special:Preferences|tarçihoti {{SITENAME}}]] xudro faromūş nakuned.',
+'yourname' => 'Nomi korbar',
+'yourpassword' => 'Kalimai ubur\\parolь',
+'yourpasswordagain' => 'Kalimai uburro boz navised',
+'remembermypassword' => 'Manro dar xotir nigoh dor',
+'yourdomainname' => 'Domejni Şumo',
+'externaldberror' => 'Xatoe dar irtibot bo pojgohi doda rux doda ast jo in ki şumo içozat ba rūzrasoniji hisobi beruniji xudro nadored.',
+'login' => 'Vurud',
+'nav-login-createaccount' => 'Vurud / Soxtani hisobi çadid',
+'loginprompt' => "Baroi vurud ba {{SITENAME}} bojad kukihoro fa'ol kuned.",
+'userlogin' => 'Vurud / Soxtani hisobi çadid',
+'logout' => 'Xuruç az sistem',
+'userlogout' => 'Xuruç az sistem',
+'notloggedin' => 'Ba sistem vurud naşudaed',
+'nologin' => "Nomi korbar nadored? '''$1'''.",
+'nologinlink' => 'Hisobero sozed',
+'createaccount' => 'Hisobi çadidero sozed',
+'gotaccount' => "Hisobi korbarī dored? '''$1'''.",
+'gotaccountlink' => 'Vurud şaved',
+'createaccountmail' => 'bo poctai elektronī',
+'badretype' => 'Kalimahoi ubure, ki vorid kardaed bo hamdigar muvofiqat namekunand.',
+'userexists' => 'Nomi korbariji doxil kardaşuda mavridi istifoda ast.
+Nomi digareroro intixob kuned.',
+'loginerror' => 'Iştiboh dar vurud',
+'createaccounterror' => 'Imkoni soxtani in hisob vuçud nadorad: $1',
+'nocookiesnew' => "Hisobi korbarī eçod şud, ammo şumo voridi somona naşudaed. {{SITENAME}} baroi vurud kardani korbaron ba somona az kukiho (cookies) istifoda mekunad. Şumo bojad kukihoro fa'ol kuned. Lutfan kukihoro fa'ol kuned, ba'dan ba sistem bo nomi korbariji çadid va kalimai uburaton vurud kuned.",
+'nocookieslogin' => "{{SITENAME}} baroi vorid kardani korbaron ba sistem az kukiho (cookies) istifoda mekunad. Kukiho fa'ol nestand. Lutfan kukihoro fa'ol karda bori digar bisançed.",
+'noname' => 'Nomi korbari durustero şumo peşnihod nakarded.',
+'loginsuccesstitle' => 'Vurud bo muvaffaqijat',
+'loginsuccess' => "'''Şumo aknun ba Vikipedia hamcun \"\$1\". vurud karded'''",
+'nosuchusershort' => 'Jagon korbare bo nomi "<nowiki>$1</nowiki>" vuçud nadorad. Tarzi navişti nomro sançed.',
+'nouserspecified' => 'Şumo bojad jak nomi korbarī muşaxxas kuned.',
+'wrongpassword' => 'Kalimai uburi nodurust doxil karda şud. Bori digar sançed.',
+'wrongpasswordempty' => 'Kalimai uburi doxil şuda xolī ast. Bori digar sançed.',
+'password-name-match' => 'Guzarvoƶai şumo bojad az nomi korbariaton tafovut doşta boşad.',
+'mailmypassword' => 'Guzarvoƶai navro ba E-mail bifiristed',
+'passwordremindertitle' => 'Muvaqqatan kalimai uburī çadid baroi {{SITENAME}}',
+'noemail' => 'Heç nişonai poctai elektronī baroi korbar "$1" sabt naşudaast.',
+'noemailcreate' => "Şumo bojad jak nişonai poctai elektroniji mū'tabarro vorid kuned",
+'passwordsent' => 'Kalimai uburi nav ba adresi e-mail, ki baroi "$1" nomnavis şudaast firistoda şud.
+Ba\'d az dastras kardani on, marhamat karda vurud kuned.',
+'blocked-mailpassword' => 'Nişonai IP şumo az viroiş boz doşta şudaast va az in rū ba manzuri çilavgirī az sūiistifoda az bahragirī az qobilijati barqaror kardani kalimai uburro nadorad.',
+'eauthentsent' => 'Nomai baroi tasdiq ba nişonai pocta elektronī firistoda şud. Peş az firistodani noma ba in hisob, şumo bojad dasturote ki ba on nişonai poctai elektronī omadast, içro karda, dar haqiqat hisobi xud budanaşro bojad tasdiq kuned.',
+'throttled-mailpassword' => 'Jak jodovariji kalimai ubur baroi şumo {{PLURAL:$1|soat|$1 soat}} guzaşta firistoda şudaast. Baroi cilavgirī az sūiistifoda, faqat dar har {{PLURAL:$1|soat|$1 soat}} tanho jak jodovarī firistoda meşavad.',
+'mailerror' => 'Xato dar firistodani nomai elektronī: $1',
+'emailnotauthenticated' => 'Nişonai poctai elektroniji şumo hanūz tasdiq naşudaast. Nomai elektroni baroi har jak az viƶagihoi zerin firistoda naxohad şud.',
+'noemailprefs' => 'Baroi korandoziji in qobilijatho jak nişonai poctai elektroniro muşaxxas kuned.',
+'emailconfirmlink' => 'Adresi poctai elektroniatoro tasdiq kuned',
+'accountcreated' => 'Hisobi çadid soxta şud',
+'accountcreatedtext' => 'Hisobi korbar baroi $1 soxta şud.',
+'createaccount-title' => 'Eçodi hisobi korbarī dar {{SITENAME}}',
+'createaccount-text' => 'Jak nafare baroi 2$ jak hisobi korbarī dar {{SITENAME}} eçod kardaast ($4). Kalimai uburi "$2" cunin ast: "$3". Şumo bojad voridi sistem şaved to kalimai uburi xudro taƣjir bidihed.
+
+Agar in hisob iştibohe soxta şudaast, in nomaro nodida bigired.',
+'usernamehasherror' => 'Nomi korbarī nametavonad şomili alomathoi dar ham boşad',
+'login-throttled' => 'Şumo ba tozagī candin bor baroi vurud ba sistem taloş kardaed.
+Lutfan peş az on, ki dubora taloş kuned, sabr kuned.',
+'loginlanguagelabel' => 'Zabon: $1',
+
+# Password reset dialog
+'resetpass_announce' => 'Şumo bo kodi muvaqatī ba sistem vurud şudaed. Baroi ançom dodani vurudşavī, şumo bojad kalimai uburī çadidro inço vorid kuned:',
+'resetpass_header' => 'Taƣjiri guzarvoƶai hisob',
+'oldpassword' => 'Kalimai kūhnai ubur:',
+'newpassword' => 'Kalimai navi ubur:',
+'retypenew' => 'Kalimai navi uburro takroran navised:',
+'resetpass_submit' => 'Kalimai uburro tanzim karda ba sistem vurud kuned',
+'resetpass_success' => 'Kalimai uburi şumo bo muvaffaqijat taƣjir doda şud! Dar holi vorid kardani şumo ba sistem...',
+'resetpass-no-info' => 'Baroi dastrasiji mustaqim ba in sahifa şumo bojad ba sistem vorid şuda boşed.',
+'resetpass-submit-loggedin' => 'Taƣjiri guzarvoƶa',
+'resetpass-wrong-oldpass' => "Guzarvoƶai muvaqat jo oxir nomū'tabar.
+Mumkin ast, ki şumo allakaj guzarvoƶaatonro bo muvaffaqijat taƣjir doda boşed jo darxosti jak guzarvoƶai muvaqatī karda boşed.",
+'resetpass-temp-password' => 'Guzarvoƶai muvaqqatī:',
+
+# Edit page toolbar
+'bold_sample' => 'Matni purrang',
+'bold_tip' => 'Matni purrang',
+'italic_sample' => 'Matni xobida',
+'italic_tip' => 'Matni xobida',
+'link_sample' => 'Unvoni pajvand',
+'link_tip' => 'Pajvandi doxilī',
+'extlink_sample' => 'http://www.example.com unvoni pajvand',
+'extlink_tip' => 'Pajvandi beruna (peşvandi http:// faromūş nakuned)',
+'headline_sample' => 'Matni unvon',
+'headline_tip' => 'Unvoni sathi 2',
+'math_sample' => 'Ilova kardani formula dar inço',
+'math_tip' => 'Formulai rijozī (LaTeX)',
+'nowiki_sample' => 'Inço matni qolabbandi-naşudaro doxil kuned',
+'nowiki_tip' => 'Rad kardani qolabbandiji viki',
+'image_tip' => 'Tasviri doxili matn',
+'media_tip' => 'Pajvandi parvandai rasona',
+'sig_tip' => 'Imzoi Şumo bo mūhri sana',
+'hr_tip' => 'Xati ufuqī (sarfakorona istifoda kuned)',
+
+# Edit pages
+'summary' => 'Xulosa:',
+'subject' => "Mavzū'/sarlavha:",
+'minoredit' => 'In viroişi xurd ast',
+'watchthis' => 'Nazar kardani in sahifa',
+'savearticle' => 'Sahifa zaxira şavad',
+'preview' => 'Peşnamoiş',
+'showpreview' => 'Peş namoiş',
+'showlivepreview' => 'Peşnamoişi zinda',
+'showdiff' => 'Namoişi taƣjirot',
+'anoneditwarning' => "'''Ogohī:''' Şumo vurud nakardaed. Suroƣai IP Şumo dar viroişoti in sahifa sabt xohad şud.",
+'missingsummary' => "'''Jodovarī:''' Şumo xulosai viroiş nanaviştaed.
+Agar dubora tugmai \"Zaxira\"-ro klik kuned, viroişaton biduni xulosa zaxira xohad şud.",
+'missingcommenttext' => 'Lutfan tavsife dar zer binavised.',
+'missingcommentheader' => "'''Jodovarī:''' Şumo mavzū'/unvoni in joddoştro muşaxxast nakardaed.
+Agar dubora tugmai \"Zaxira\"-ro paxş kuned, viroişaton biduni on zaxira xohad şud.",
+'summary-preview' => 'Peşnamoişi xulosa:',
+'subject-preview' => "Peşnamoişi mavzū'/unvon:",
+'blockedtitle' => 'Korbar basta şudaast',
+'blockedtext' => "'''Nomi korbariji Şumo jo nişonai IP basta şudaast.'''
+
+Bastan az tarafi $1 içro şud.
+Sababi on ''$2'' ast.
+
+* Zamoni qat' kardan: $8
+* Zamoni saromadani qat'i dastrasī: $6
+* Qat'kunanda: $7
+
+Şumo metavoned bo $1 jo jake digare az [[{{MediaWiki:Grouppage-sysop}}|mudiron]] baroi guftugū roçe' ba qat'i dastrasī tamos gired.
+Tavaççūh kuned, ki az qobilijati 'firistodai poctai elektronī ba in korbar' nametavone istifoda kard, magar in ki jak nişoni mū'tabari poctai elektronī dar [[Special:Preferences|tarçihoti korbarii]] xud sabt karda boşed va az korburdi on man' naşuda boşed.
+Nişonai kununiji IP Şumo $3 ast, va şinosai qat'i dastrasiji Şumo #$5 ast.
+Lutfan in jo onro va jo hardui onro dar darxosthoi xud zikr kuned.",
+'blockednoreason' => 'dalele muşaxxas naşudaast',
+'blockedoriginalsource' => "Matni manbai '''$1''' dar zer namoiş doda şudaast:",
+'blockededitsource' => "Matni '''viroişhoi şumo''' dar '''$1''' dar zer nişon doda şudaast:",
+'whitelistedittitle' => 'Baroi viroiş vurud bojad kard',
+'whitelistedittext' => 'Baroi viroişi maqola bojad ba sistem $1 şaved.',
+'confirmedittext' => 'Şumo bojad nişonai poctai elektroniatonro peş az viroiş kardani sahifaho, tasdiq kuned. Lutfan in korro tariqi [[Special:Preferences|tarçihoti korbar]] surat dihed.',
+'nosuchsectiontitle' => 'Cunin baxşe vuçud nadorad',
+'nosuchsectiontext' => 'Şumo xosted, ki qismero viroiş kuned, ki on vuçud nadorad.',
+'loginreqtitle' => 'Vurud ba sistem lozim ast',
+'loginreqlink' => 'vurud ba sistem',
+'loginreqpagetext' => 'Baroi didani sahifahoi digar şumo bojad $1 kuned.',
+'accmailtitle' => 'Kalimai ubur firistoda şud.',
+'newarticle' => '(Nav)',
+'newarticletext' => "Şumo pajvandero intixob karded, ki sahifa dar on arzi vuçud nadorad.
+Baroi soxtani sahifa, ba quttiji zerin navised ([[{{MediaWiki:Helppage}}|sahifai rohnamoro]] baroi ma'lumoti beştar nigared).
+Agar az sababi xatogī va jo iştiboh omaded, tugmai '''Ba oqib'''-ro dar brauzeri xud paxş kuned.",
+'noarticletext' => 'Dar in sahifa to kunun matne vuçud nadorad.
+Şumo metavoned dar digar sahifaho [[Special:Search/{{PAGENAME}}|unvoni in sahifaro çustuçū kuned]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} guzorişhoi aloqamandro çustuçū namoed],
+jo [{{fullurl:{{FULLPAGENAME}}|action=edit}} in sahifaro viroiş kuned]</span>.',
+'userpage-userdoesnotexist' => 'Hisobi korbar "$1" sabt naşudaast. Itminon hosil kuned ki mexohed in sahifaro ecod jo viroiş kuned.',
+'usercssyoucanpreview' => "'''Ezoh:''' Peş parvandai CSS jo JS xudro zaxira kuned, bo istifoda az tugmai \"Peşnamoiş\" metavoned onro ozmoiş kuned.",
+'userjsyoucanpreview' => "'''Ezoh:''' Peş parvandai CSS jo JS xudro zaxira kuned, bo istifoda az tugmai \"Peşnamoiş\" metavoned onro ozmoiş kuned.",
+'userjspreview' => "'''Faromūş nakuned, ki şumo faqat ÇavaSkripti korbariatonro imtihon,peşnamoiş karda istodaed va on hanūz zaxira naşudaast!'''",
+'userinvalidcssjstitle' => "'''Huşdor:'''Pūste bo nomi \"\$1\" vuçud nadorad. Tavaççūh kuned ki sahifahoi .css va .js bo harfhoi xurd navişta meşavand, Namuna. {{ns:user}}:Fu/monobook.css dar muqobili korbar {{ns:user}}:Fu/Monobook.css.",
+'updated' => '(Ba rūz şuda)',
+'note' => "'''Ezoh:'''",
+'previewnote' => "'''In faqat peşnamoiş ast; digarguniho holo zaxira naşudaand!'''",
+'previewconflict' => 'In peşnamoiş akkoskunandai matni nohijai viroiş dar bolo ast va agar onro zaxira kuned bo hamin şakl nişoda doda xohad şud.',
+'session_fail_preview' => "'''Bubaxşed! Az sababi az dast raftani ittilooti nişasti korbarī, nametavonem viroişhoi şumoro pardoziş kunem.
+Lutfan dubora sa'j kuned. Agar boz bo hamin pajom rū ba rū şaved, az sistem xoriç şaved va muçaddadan vorid şaved.'''",
+'session_fail_preview_html' => "'''Bubaxşed! Imkoni sabti viroişi şumo ba xotir az dast raftani ittiloot nişast.'''
+
+''Bo tavaççūh ba in ki dar {{SITENAME}} imkoni HTML xom fa'ol ast, peşnamoişi sahifa pinhon şuda to imkoni ziddi hamaloti ÇavaSkript vuçud ndoşta boşad.''
+
+'''Agar bovarī dored, ki in peşnamoiş jak viroişi miçoz as, onro takror kuned. Agar peşnamoiş natiçae nadod, az sistem xoriç şaved va dubora vorid şaved'''",
+'token_suffix_mismatch' => "'''Viroişhoi şumo zaxira naşud, zero mururgari şumo naviştahoi nuqtaguzoriro az ham poşida ast. Viroişi şumo zaxira naşud to az vajron şudani matni sahifa peşgirī kunad.
+Ba'zan in xato vaqte pajdo meşavad, ki şumo az xizmati (web-based proxy) istifoda mekuned.'''",
+'editing' => 'Dar holi viroiş $1',
+'editingsection' => 'Dar holi viroişi $1 (qismat)',
+'editconflict' => 'Barxūrdi viroişī: $1',
+'explainconflict' => "Az vaqte ki şumo viroişi in sahifaro oƣoz kardaed, şaxsi digare onro taƣjir doda ast.
+Nohijai matni boloi şomili matni sahifa ba şakli fe'liji on ast.
+Taƣjiroti şumo dar nohijai matni pojoni nişon doda şudaast.
+Şumo bojad taƣjirotatonro bo matni fe'lī tarkib kuned.
+'''Faqat''', vaqte, ki tugmai \"Sahifa zaxira şavad\"-ro fişor dihed matni nohijai matni boloi zaxira xohad şud.",
+'yourtext' => 'Matni Şumo',
+'storedversion' => 'Nusxai sabtşuda',
+'nonunicodebrowser' => "'''Huşdor: Murugari şumo bo standarti Junikod çavobgū nest. Alomathoi ƣajr az ASC11 ba surati adad ba kodi şonzdah ba şumo nişon doda meşavand.'''",
+'editingold' => "'''HUŞDOR: Şumo nusxai kūhnai in sahifaro viroiş karda istodaed.
+Agar şumo onro zaxira kuned, har taƣjire ki pas az in nusxa ançom şuda, az bajn xohad raft.'''",
+'yourdiff' => 'Farqijatho',
+'copyrightwarning' => "Hamai hissaguzorī ba {{SITENAME}} az rūi qonunhoi zerin $2 (nigared $1 baroi ma'lumoti beştar) hissaguzorī meşavand. Agar Şumo namexohed, ki naviştaçoti Şumo viroiş va pahn naşavand, Şumo metavoned in maqolaro nafiristed.<br /> Şumo va'da medihed, ki xudaton in maqolaro navişted jo ki az sarcaşmahoi kuşod nusxabardorī kardaed. '''ASARHOI QOBILI HUQUQI MUALLIFRO BE IÇOZAT NAFIRISTED!'''",
+'copyrightwarning2' => "Lutfan tavaççūh doşta boşed ki hamai hissaguzoriho ba {{SITENAME}} bo tahti \"Içozatnomai mustanadoti Ozod GNU\" muntaşir meşavand. (baroi çuz'ijoti beştar nigared ba \$1). Agar namexohed naviştahojaton berahmona viroiş şuda va ba dilxoh tavzeh şavad, inço nafiristed.<br />
+Hamin tavr şumo qavl medihed, ki xudatonro inro naviştaed jo onro az jak manbai ozod bo molikijati umumī jo muşobehi on nusxabardorī kardaed. '''KORHOI HUQUQI INHISORI MUALLIFRO (TAKSIR) BE IçOZATE NAFIRISTED!'''",
+'longpagewarning' => "'''Huşdor: In sahifa $1 kilobajt daroz ast; ba'ze mururgarho mumkin ba viroişi sahifahoi nazdik ba 32 kb jo daroztar az on muşkili doşta boşand.
+Lutfan dar baroi ba qismathoi xurd çudo kardani in sahifa fikr kuned.'''",
+'longpageerror' => "'''XATO: Matne ki irsol kardaed $1 kilobajt haçm dorad, ki in miqdor az miqdori peşina $2 kilobajt beştar ast. Nametavon onro zaxira kard.'''",
+'protectedpagewarning' => "'''HUŞDOR: In sahifa qufl şudaast to faqat korbarone bo imtijozi mudir (jo bolotar) bitavonand onro viroiş kunand.'''",
+'semiprotectedpagewarning' => "'''Tavaççūh:''' In sahifa qufl şudaast to tanho korbaroni sabtinomkarda qodir ba viroişi on boşand.",
+'cascadeprotectedwarning' => "'''Huşdor:''' In sahifa ba illati qaror giriftan dar {{PLURAL:$1|sahifai|sahifahoi}} obşorī-muhofizatşudai zer qufl şudaast, to faqat mudiron bitavonand viroiş kunand:",
+'templatesused' => '{{PLURAL:$1|Şablon|Şablonhoi}} dar in sahifa istifodaşuda:',
+'templatesusedpreview' => '{{PLURAL:$1|Şablon|Şablonhoi}} istifodaşuda dar in peşnamoiş:',
+'template-protected' => '(hifzşuda)',
+'template-semiprotected' => '(nima-muhofizatşuda)',
+'hiddencategories' => 'In sahifa dar {{PLURAL:$1|1 gurūhi pinhon|$1 gurūhhoi pinhon}} qaror dorad:',
+'nocreatetitle' => 'Eçodi sahifa mahdud şudaast',
+'nocreatetext' => '{{SITENAME}} qobilijati eçodi sahifahoi çadidro mahdud karda ast.
+Şumo metavoned bozgaşta sahifai mavçudbudaro viroiş kuned, jo [[Special:UserLogin|ba sistem vurud kuned jo hisobi korbarī eçod kuned]].',
+'nocreate-loggedin' => 'Şumo içozati eçodi sahifai çadidro nadored.',
+'sectioneditnotsupported-title' => 'Viroişi baxşho puştibonī nameşavad',
+'sectioneditnotsupported-text' => 'In sahifa az viroişi baxşho puştibonī nameşavad',
+'permissionserrors' => 'Xatohoi sathi dastrasī',
+'permissionserrorstext' => 'Şumo ruxsati ançomi in korro ba {{PLURAL:$1|sababi|sababhoi}} zerin nadored:',
+'permissionserrorstext-withaction' => 'Şumo ba $2 az {{PLURAL:$1|sababi|sababhoi}} zerin içozate nadored:',
+
+# "Undo" feature
+'undo-success' => "In viroiş metavonad botil şavad. Lutfan muqoisai zerinro baroi ta'jid kardani amalī xud, barrasī kuned, va ba'dan baroi ançom dodani botilkuniji viroiş taƣjiroti zerinro zaxira kuned.",
+'undo-failure' => 'Ba illati barxūrdani viroişhoi dar mijon omada, in viroişro botil nametavon kard.',
+'undo-summary' => 'Botili nusxai $1 az tarafi [[Special:Contributions/$2|$2]] ([[User talk:$2|Bahs]])',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Hisobe soxta nametavonam',
+'cantcreateaccount-text' => "Imkoni soxtani hisobi korbarī az in nişonai IP ('''$1''') az tarafi [[User:$3|$3]] basta şudaast.
+
+Daleli $3 cunin ast ''$2''",
+
+# History pages
+'viewpagelogs' => 'Namoişi guzorişhoi marbuta ba in sahifa',
+'nohistory' => "Ta'rixi viroiş baroi in sahifa vuçud nadorad.",
+'currentrev' => 'Viroişoti kununī',
+'currentrev-asof' => 'Nusxai kununī to $1',
+'revisionasof' => 'Nusxa $1',
+'revision-info' => "Nusxai viroiş $2 dar ta'rixi $1",
+'previousrevision' => '←Nusxai kūhnatar',
+'nextrevision' => 'Nusxai navtarin→',
+'currentrevisionlink' => "Namoişi nusxai fe'lī",
+'cur' => "fe'lī",
+'next' => "ba'dī",
+'last' => 'qablī',
+'page_first' => 'avval',
+'page_last' => 'oxirin',
+'histlegend' => "Intixobi tafovut:quttiji nusxahoro baroi tafovut qajd kuned va tugmai doxil kardan jo tugmai zerro paxş kuned.<br />
+Şarh: (fe'lī) tafovut bo nusxai fe'lī
+(qablī) = tafovut bo nusxai fe'lī, çuz' = viroişi çuz'ī",
+'history-fieldset-title' => "Mururi ta'rix",
+'histfirst' => 'Avvalin',
+'histlast' => 'Oxirin',
+'historysize' => '({{PLURAL:$1|1 bajt|$1 bajt}})',
+'historyempty' => '(xolī)',
+
+# Revision feed
+'history-feed-title' => "Ta'rixi viroişho",
+'history-feed-description' => "Ta'rixi viroişhoi in sahifa dar viki",
+'history-feed-item-nocomment' => '$1 dar $2',
+'history-feed-empty' => 'Sahifai darxostşuda vuçud nadorad. Mumkin ast, ki az viki hazf jo nomaş taƣjir doda şuda boşad.
+Sahifahoi çadidī aloqamandro metavoned [[Special:Search|dar viki]] çustuçū kuned.',
+
+# Revision deletion
+'rev-deleted-comment' => '(tavzihot pok şud)',
+'rev-deleted-user' => '(nomi korbar hazf şudaast)',
+'rev-deleted-event' => '(amalī guzoriş pok şud)',
+'rev-delundel' => 'namoiş/pinhon',
+'revisiondelete' => 'Nusxahoi hazf/ehjoī',
+'revdelete-nooldid-title' => "Nusxai maqsadi nomū'tabar",
+'revdelete-nooldid-text' => 'Şumo in jo on nusxai(hoi) maqsadro baroi içroi in amal muşaxxas nakardaed, nusxai muşaxxasşuda vuçud nadorad, jo şumo dar holi kūşişi pinhon kardani nusxai kununiaş hasted.',
+'revdelete-selected' => "'''{{PLURAL:$2|Nusxai intixobşuda|Nusxahoi intixobşuda}} az [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Guzorişi mavrid intixobşuda|Guzorişi mavoridi intixobşuda}}:'''",
+'revdelete-legend' => 'Tanzimi mahdudijathoi padidorī',
+'revdelete-hide-text' => 'Pinhon kardani nusxai matn',
+'revdelete-hide-image' => 'Pinhon kardani mūhtavijoti parvanda',
+'revdelete-hide-name' => 'Pinhon kardani amal va hadaf',
+'revdelete-hide-comment' => 'Pinhon kardani tavzehi viroiş',
+'revdelete-hide-user' => 'Nomi korbar/nişonai IP pinhon şavad',
+'revdelete-suppress' => 'Az dastrasiji mudiron ba dodaho niz monandi sajri korbaron çilavgirī ba amal ojad',
+'revdelete-unsuppress' => 'Xotimai mahdudijatho dar mavridi nusxahoi intixobşuda',
+'revdelete-log' => 'Sabab:',
+'revdelete-logentry' => 'taƣjiri namoiji nusxa dar [[$1]]',
+'logdelete-logentry' => 'taƣjiri namoiji mavrid dar [[$1]]',
+'logdelete-success' => "'''Taƣjiri namojoniji mavrid bo muvaffaqijat ançom şud.'''",
+'revdel-restore' => 'Taƣjiri padidorī',
+'pagehist' => "Ta'rixi sahifa",
+'deletedhist' => "Ta'rixi hazfşuda",
+'revdelete-content' => 'mūhtavo',
+'revdelete-summary' => 'viroişi xulosa',
+'revdelete-uname' => 'nomi korbar',
+'revdelete-restricted' => 'mahdudijatho ba mudiron amalī şudand',
+'revdelete-unrestricted' => 'mahdudijatho az mudiron bardoşta şudand',
+'revdelete-hid' => '$1-ro pinhon kard',
+'revdelete-unhid' => '$1-ro az holati pinhon dar ovard',
+'revdelete-log-message' => '$1 baroi $2 {{PLURAL:$2|nusxa|nusxa}}',
+'logdelete-log-message' => '$1 baroi $2 {{PLURAL:$2|voqea|voqeaho}}',
+'revdelete-edit-reasonlist' => 'Viroiş hazf dalelho',
+
+# Suppression log
+'suppressionlog' => 'Guzorişi mavqufsozī',
+'suppressionlogtext' => "Dar zer fehriste az oxirin hazfho va qat'i dastrasihoero mebined, ki mūhtavoi onho az mudiron pinhon şuda meboşad. Baroi fehristi qat'i dastrasihoi fa'ol man mamnū'ho ba [[Special:IPBlockList|fehristi qat'i dastrasihoi IP]] nigared.",
+
+# History merging
+'mergehistory' => "Idƣomi ta'rixi sahifaho",
+'mergehistory-header' => "In sahifa ba şumo imkonero medihad, ki nusxahoi ta'rixi maqolaero bo jak maqolai digar idƣom kuned.
+Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
+'mergehistory-box' => 'Idƣomi nusxahoi du sahifa:',
+'mergehistory-from' => "Sahifai manba':",
+'mergehistory-into' => 'Sahifai maqsad:',
+'mergehistory-list' => "Ta'rixi qobili idƣom",
+'mergehistory-merge' => 'Nusxahoi [[:$1]] qobili idgom bo [[:$2]] hastand. Az sutuni tugmahoi radioī istifoda kuned, tu nusxahoe, ki to qabl az jak vaqti muşaxxast eçodşudaro intixob kuned. Tavaççūh kuned, ki klike rūi pajvandho boisi pok şudani tanzimote ki to on lahza amalī kardaed, xohand şud.',
+'mergehistory-go' => 'Namoişi viroişhoi qobili idƣom',
+'mergehistory-submit' => 'Idƣom nusxaho',
+'mergehistory-empty' => 'Heç jak nusxaho qobili idƣom nestand.',
+'mergehistory-success' => '$3 {{PLURAL:$3|nusxa|nusxaho}} az [[:$1]] bo muvaffaqijat ba [[:$2]] idƣom şud.',
+'mergehistory-fail' => "Idƣomi ta'rix mumkin nest, lutfan parametrhoi sahifa va vaqtro bozbinī kuned.",
+'mergehistory-no-source' => "Sahifai manba' $1 vuçud nadorad.",
+'mergehistory-no-destination' => 'Sahifai maqsad $1 vuçud nadorad.',
+'mergehistory-invalid-source' => "Sahifa manba' bojad unvoni qobili qabul doşta boşad.",
+'mergehistory-invalid-destination' => 'Sahifai maqsad bojad unvoni qobili qabul doşta boşad.',
+'mergehistory-autocomment' => '[[:$1]] ba [[:$2]] idƣom şud',
+'mergehistory-comment' => '[[:$1]] ba [[:$2]] idƣom şud: $3',
+'mergehistory-reason' => 'Sabab:',
+
+# Merge log
+'mergelog' => 'Guzorişi idƣom',
+'pagemerge-logentry' => 'idgom şud [[$1]] dar [[$2]] (nusxaho to $3)',
+'revertmerge' => 'Vogardoniji idƣom',
+'mergelogpagetext' => "Dar zer fehristi idƣomi oxirini ta'rixi jak sahifaro ba digar sahifaro mebined.",
+
+# Diffs
+'history-title' => 'Ta\'rixcai viroişhoi "$1"',
+'difference' => '(Farqijati bajni nusxaho)',
+'lineno' => 'Satri $1:',
+'compareselectedversions' => 'Nusxahoi intixobşudaro muqoisa kuned',
+'editundo' => 'botil',
+'diff-multi' => '({{PLURAL:$1|viroişi mijonī|$1 viroişoti mijonī}} nişon doda naşudaast.)',
+
+# Search results
+'searchresults' => 'Natiçahoi çustuçū',
+'searchresults-title' => 'Natoiçi çustuçū baroi "$1"',
+'searchresulttext' => 'Baroi ittilooti beştar dar borai çustuçū dar {{SITENAME}}, nigared ba [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Şumo \'\'\'[[:$1]]\'\'\'ro çustuçū karded ([[Special:Prefixindex/$1|hamai sahifaho şurū\' bo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hamai sahifahoe, ki ba "$1" pajvastaand]])',
+'searchsubtitleinvalid' => "'''$1''' baroi pursuçū",
+'toomanymatches' => "Te'dodi mavoridi mutobiq xele zijod bud, lutfan darxosti digarero imtihon kuned",
+'titlematches' => 'Unvoni sahifa tatbiq mekunad',
+'notitlematches' => 'Unvonhoi heç maqolae rost nameojad',
+'textmatches' => 'Matni maqola tatbiq mekunad',
+'notextmatches' => 'Matni heç maqolae rost nameojad',
+'prevn' => 'qablī {{PLURAL:$1|$1}}',
+'nextn' => "ba'dī {{PLURAL:$1|$1}}",
+'viewprevnext' => 'Namoiş ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'Guzinahoi çustuçū',
+'searchmenu-new' => "'''Eçodi sahifai \"[[:\$1]]\" dar in viki!'''",
+'searchhelp-url' => 'Help:Mundariça',
+'searchprofile-advanced' => 'Peşrafta',
+'searchprofile-articles-tooltip' => 'Çustuçū dar $1',
+'searchprofile-project-tooltip' => 'Çustuçū dar $1',
+'searchprofile-images-tooltip' => 'Çustuçūi parvandaho',
+'searchprofile-everything-tooltip' => 'Çustuçūi hamai mūhtavo (bo hisobi sahifahoi bahs)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 kalima|$2 kalimaho}})',
+'search-result-score' => 'Irtibot: $1%',
+'search-redirect' => '(taƣjiri masir $1)',
+'search-section' => '(qismat $1)',
+'search-suggest' => 'Ojo şumo inro dar nazar dored: $1',
+'search-interwiki-caption' => 'Loihahoi xoharī',
+'search-interwiki-default' => '$1 natoiç:',
+'search-interwiki-more' => '(beştar)',
+'search-mwsuggest-enabled' => 'bo tavzehot',
+'search-mwsuggest-disabled' => 'biduni tavzehot',
+'search-relatedarticle' => 'Aloqamand',
+'searchrelated' => 'aloqamand',
+'searchall' => 'hama',
+'showingresults' => "Namoişi {{PLURAL:$1|'''1''' natiça|'''$1''' natoiç}} dar zer oƣoz az #'''$2'''.",
+'showingresultsnum' => "Namoişi {{PLURAL:$3|'''1''' natiça|'''$3''' natoiç}} oƣoz az #'''$2'''.",
+'nonefound' => "'''Ezoh''': Tanho cand fazoinomho az rūi peşfarş çustuçū meşavand.
+Çustuçūi xudro bo peşvandi ''hama:'' baroi çustuçūi mūhtavoi purra (sahifahoi bahs, şablonho va ƣajraho) takror kuned, jo fazoi nomi dilxohro cun peşvand istifoda bared.",
+'powersearch' => 'Çustuçū',
+'powersearch-legend' => 'Çustuçūi peşrafta',
+'powersearch-ns' => 'Çustuçū dar fazohoi nom:',
+'powersearch-redir' => 'Fehrist kardani masirho',
+'powersearch-field' => 'Çustuçū baroi',
+'search-external' => 'Çustuçūi xoriçī',
+'searchdisabled' => "Çustuçu dar {{SITENAME}} ƣajrifa'ol karda şudaast. Şumo metavoned tariqi Google dar hol çustuçū kuned. Tavaççūh kuned, ki natoiçi çustuçū {{SITENAME}} metavonad barūz naboşad.",
+
+# Quickbar
+'qbsettings' => 'Tanzimoti tezxat (Quickbar)',
+'qbsettings-none' => 'Naboşad',
+'qbsettings-fixedleft' => 'Sabti cap',
+'qbsettings-fixedright' => 'Sabti rost',
+'qbsettings-floatingleft' => 'Şinovar cap',
+'qbsettings-floatingright' => 'Şinovar rost',
+
+# Preferences page
+'preferences' => 'Tarçihot',
+'mypreferences' => 'Tarçihoti man',
+'prefs-edits' => 'Şumorai viroişho:',
+'prefsnologin' => 'Ba sistem vorid naşudaed',
+'changepassword' => 'Ivaz namudani kalimai ubur',
+'prefs-skin' => 'Pūst',
+'skin-preview' => 'Peşnamoiş',
+'prefs-math' => 'Rijozijot',
+'datedefault' => 'Be tarçih',
+'prefs-datetime' => 'Sana va vaqt',
+'prefs-personal' => 'Dodahoi korbar',
+'prefs-rc' => 'Taƣjiroti oxirin',
+'prefs-watchlist' => 'Fehristi pajgiriho',
+'prefs-watchlist-days' => "Te'dodi rūzhoe ki bojad dar fehristi pajgirihoi namoiş doda şavad:",
+'prefs-watchlist-edits' => "Te'dodi viroişhoi nişondoda dar fehristi pajgirihoi gustarişjofta:",
+'prefs-misc' => 'Tanzimoti harxela',
+'prefs-resetpass' => 'Taƣjiri guzarvoƶa',
+'saveprefs' => 'Zaxirai tarçihot',
+'resetprefs' => 'Tozakuniji taƣjiroti zaxiranaşuda',
+'prefs-editing' => 'Dar holi viroiş',
+'prefs-edit-boxsize' => 'Haçmi ravzanai viroiş.',
+'rows' => "Te'dodi satrho:",
+'columns' => "Te'dodi sutunho:",
+'searchresultshead' => 'Çustuçū',
+'resultsperpage' => "Te'dodi natoiç dar har sahifa:",
+'contextlines' => "Te'dodi satrho dar har natiça:",
+'contextchars' => "Te'dodi naviştaho atrofi dar satr:",
+'stub-threshold' => 'Ostonai viroişi pajvandhoi <a href="#" class="stub">noqis</a>:',
+'recentchangesdays' => "Te'dodi rūzhoi namoiş dodaşuda dar taƣjiroti oxir:",
+'savedprefs' => 'Tarçihoti şumo zaxira şud.',
+'timezonelegend' => 'Mintaqai vaqt:',
+'localtime' => 'Vaqti mahallī:',
+'timezoneoffset' => 'Ixtilof¹:',
+'servertime' => 'Vaqti korguzor:',
+'guesstimezone' => 'Az mururgar girifta şavad',
+'timezoneregion-africa' => 'Afriqo',
+'timezoneregion-america' => 'Amriko',
+'timezoneregion-asia' => 'Osijo',
+'timezoneregion-europe' => 'Avrupo',
+'allowemail' => 'Içozat dodani e-mail az digar korbaron',
+'prefs-searchoptions' => 'Guzinahoi çustuçū',
+'prefs-namespaces' => 'Fazohoi nom',
+'default' => 'peşfarz',
+'prefs-files' => 'Fajlho',
+'youremail' => 'Poctai elektroniji Şumo:',
+'username' => 'Nomi korbar:',
+'uid' => 'ID-i korbar:',
+'prefs-memberingroups' => "A'zoi {{PLURAL:$1|gurūh|gurūhho}}:",
+'yourrealname' => 'Nomi aslī:',
+'yourlanguage' => 'Zabon:',
+'yournick' => 'Niki şumo:',
+'badsig' => 'Imzoi xom nodurust ast; barçasbhoi HTML-ro barrasī kuned.',
+'yourgender' => 'Çins:',
+'gender-unknown' => 'Muşaxxasnaşuda',
+'gender-male' => 'Mard',
+'gender-female' => 'Zan',
+'email' => 'Poctai elektronī',
+'prefs-help-realname' => 'Nomi haqiqī ixtijorī va agar şumo onro peşnihod kuned onro hamcun muallifi eçodijotaton jodovarī karda xohad şud.',
+'prefs-help-email-required' => 'Nişoni poctai elektroni lozim ast.',
+
+# User rights
+'userrights' => 'Mudirijati ixtijoroti korbarī',
+'userrights-lookup-user' => 'Mudirijati gurūhhoi korbarī',
+'userrights-user-editname' => 'Nomi korbarro doxil kuned:',
+'editusergroup' => 'Guruhhoi korbarro viroiş kuned',
+'editinguser' => "Dar holi viroişi korbar '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Viroişi gurūhhoi korbarī',
+'saveusergroups' => 'Sabti gurūhhoi korbarī',
+'userrights-groupsmember' => "A'zoi:",
+'userrights-groups-help' => "Şumo metavoned gurūhhoe, ki korbar dar on qaror doştaro taƣjir dihed.
+* Quttiji alomatxūrda ba in ma'nī ast, ki korbar dar on gurūh qaror dorad.
+* Quttiji alomatnaxūrda ba in ma'nī ast, ki korbar dar on gurūh qaror nadorad.
+* \"*\" ma'noi onro dorad, ki şumo qobili hazf kardani gurūhe nested dar hole ki şumo onro ilova karda boşed, in jo on.",
+'userrights-reason' => 'Sabab:',
+'userrights-no-interwiki' => 'Şumo içozati taƣjiri ixtijoroti korbaroni digar vikihoro nadored.',
+'userrights-nodatabase' => 'Pojgohi doda $1 vuçud nadorad jo mahallī nest.',
+'userrights-nologin' => "Şumo bojad bo jak hisobi korbarī doroi ixtijoroti mudirijatī [[Special:UserLogin|ba sistem vurud kuned]], to bitavoned ixtijoroti korbaronro ta'jid kuned.",
+'userrights-notallowed' => 'Hisobi korbariji şumo içozati taƣjiri ixtijoroti korbariro nadorad.',
+'userrights-changeable-col' => 'Gurūhhoe, ki şumo metavoned taƣjir dihed',
+'userrights-unchangeable-col' => 'Gurūhhoe, ki şumo nametavoned taƣjir dihed',
+
+# Groups
+'group' => 'Gurūh:',
+'group-user' => 'Korbaron',
+'group-autoconfirmed' => "Korbaroni ta'jidşuda",
+'group-bot' => 'Robotho',
+'group-sysop' => 'Administratorho',
+'group-bureaucrat' => 'Bjurokratho',
+'group-suppress' => 'Nozirot',
+'group-all' => '(hama)',
+
+'group-user-member' => 'Korbar',
+'group-autoconfirmed-member' => "Korbari ta'jidşuda",
+'group-bot-member' => 'Robot',
+'group-sysop-member' => 'Administrator',
+'group-bureaucrat-member' => 'Bjurokrat',
+'group-suppress-member' => 'Nazar',
+
+'grouppage-user' => '{{ns:project}}:Korbaron',
+'grouppage-autoconfirmed' => "{{ns:project}}:Korbaroni ta'jidşuda",
+'grouppage-bot' => '{{ns:project}}:Robotho',
+'grouppage-sysop' => '{{ns:project}}:Mudiron',
+'grouppage-bureaucrat' => '{{ns:project}}:Devonsolorho',
+'grouppage-suppress' => '{{ns:project}}:Nazorat',
+
+# Rights
+'right-read' => 'Xondani sahifaho',
+'right-edit' => 'Viroişi sahifaho',
+'right-createpage' => 'Eçodi sahifaho (kadome ki sahifahoi bahs nestand)',
+'right-createtalk' => 'Eçodi sahifahoi bahs',
+'right-createaccount' => 'Eçodi hisobhoi korbariji çadid',
+'right-minoredit' => "Alomat zadani viroişho ba sur'ati çuz'ī",
+'right-move' => 'Kūconidani sahifaho',
+'right-move-subpages' => 'Kūconidani sahifaho bo zersahifahojaşon',
+'right-movefile' => 'Kūconidani parvandaho',
+'right-upload' => 'Boguzoriji parvandaho',
+'right-reupload' => 'Boznaviştani parvandai vuçuddoşta',
+'right-delete' => 'Hazfi sahifaho',
+'right-bigdelete' => "Hazfi sahifahoi bo ta'rixi buzurg",
+'right-deleterevision' => 'Hazv va barqarorkuniji nusxahoi muşaxxasi sahifaho',
+'right-browsearchive' => 'Çustuçūi sahifahoi hazfşuda',
+'right-undelete' => 'Barqaror kardani sahifa',
+'right-suppressrevision' => 'Barrasi va barqaror kardani nusxahoi pinhoni az mudiron',
+'right-suppressionlog' => 'Didani guzorişhoi şaxsī',
+'right-block' => 'Bastani digar korbaron az viroişkunī',
+'right-blockemail' => 'Bastani korbar az firistodani poctai elektronī',
+'right-hideuser' => 'Bastani korbar, bo pinhon kardani on az omma',
+'right-editprotected' => 'Viroişi sahifahoi hifzşuda (biduni hifzi obşorī)',
+'right-editinterface' => 'Viroişi namoişi korbarī',
+'right-editusercssjs' => 'Viroişi parvandahoi CSS va JS digar korbaron',
+'right-editusercss' => 'Viroişi parvandahoi CSS digar korbaron',
+'right-edituserjs' => 'Viroişi parvandahoi JS digar korbaron',
+'right-rollback' => 'Vogardoniji tezi viroişhoi oxirin korbare, ki jak sahifaro viroiş kardaast',
+'right-markbotedits' => 'Alomat zadani viroişhoi vogardonişuda ba unvoni viroişi bot',
+'right-noratelimit' => "Ta'sirnopazir az mahdudijati sur'at",
+'right-import' => 'Vorid kardani sahifaho az digar vikiho',
+'right-importupload' => 'Vorid kardani sahifaho tariqi borguzoriji parvanda',
+'right-patrol' => 'Alomat zadani viroişot cun gaştxūrda',
+'right-autopatrol' => 'Alomat zadani viroişho bo tavri xudkor ba unvoni gaştxūrda',
+'right-patrolmarks' => 'Muşohidai taƣjiroti oxirini alomatgaşta',
+'right-unwatchedpages' => 'Muşohidai sahifahoe, ki pajgiri nameşavand',
+'right-trackback' => 'Sabti jak boztob',
+'right-mergehistory' => "Idƣomi ta'rixi sahifaho",
+'right-userrights' => 'Viroişi hamai ixtijoroti korbaron',
+'right-userrights-interwiki' => 'Viroişi ixtijoroti korbariji korbaroni digar vikiho',
+'right-siteadmin' => 'Bastn va boz kardani pojgohi doda',
+
+# User rights log
+'rightslog' => 'Guzorişi ixtijoroti korbar',
+'rightslogtext' => 'In guzoriş taƣjiroti ixtijoroti korbar ast.',
+'rightslogentry' => 'uzvijati $1 az gurūh $2 ba $3 taƣjir doda şud',
+'rightsnone' => '(heç)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'viroişi in sahifa',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|taƣjir|taƣjirot}}',
+'recentchanges' => 'Taƣjiroti oxirin',
+'recentchanges-legend' => 'Ixtijoroti taƣjiroti oxirin',
+'recentchangestext' => 'Nazorati taƣjirothoi navtarin dar Vikipedia dar hamin sahifa ast.',
+'recentchanges-feed-description' => 'Radjobiji oxirin taƣjiroti in viki dar in xurd.',
+'rcnote' => "Dar pojon {{PLURAL:$1|'''1''' taƣjire ast|'''$1''' taƣjirot meboşand}}, ki dar davomi {{PLURAL:$2|rūh|'''$2''' rūzhoi}} oxir, sar karda az $5, $4.",
+'rcnotefrom' => 'Dar zer taƣjirothoi oxirin az <b>$2</b> (to <b>$1</b> nişon doda şudaast).',
+'rclistfrom' => 'Nişon dodani taƣjirothoi nav sar karda az $1',
+'rcshowhideminor' => '$1 viroişhoi xurd',
+'rcshowhidebots' => '$1 botho',
+'rcshowhideliu' => '$1 korbaroni vurudşuda',
+'rcshowhideanons' => '$1 korbaroni vurudnaşuda',
+'rcshowhidepatr' => '$1 viroişhoi gaştī',
+'rcshowhidemine' => '$1 viroişhoi man',
+'rclinks' => 'Nişon dodani $1 taƣjiroti oxirin dar $2 rūzi oxir<br />$3',
+'diff' => 'farqijat',
+'hist' => "ta'rix",
+'hide' => 'Pinhon kardani',
+'show' => 'Nişon dodani',
+'minoreditletter' => 'x',
+'newpageletter' => 'Nav',
+'boteditletter' => 'b',
+'number_of_watching_users_pageview' => '[$1 pajgirikunanda {{PLURAL:$1|korbar|korbaron}}]',
+'rc_categories' => 'Mahdudijat ba gurūhho (bo alomati "|" çudo kuned)',
+'rc_categories_any' => 'Har kadom',
+'newsectionsummary' => '/* $1 */ baxşi çadid',
+'rc-enhanced-expand' => "Namoişi çuz'ijot (nijozmand ba Çava Skript)",
+'rc-enhanced-hide' => "Pinhoni çuz'ijot",
+
+# Recent changes linked
+'recentchangeslinked' => "Ta'ƣiroti monandī",
+'recentchangeslinked-feed' => "Ta'ƣiroti monandī",
+'recentchangeslinked-toolbox' => "Ta'ƣiroti monandī",
+'recentchangeslinked-title' => 'Taƣjirhoi aloqamand ba "$1"',
+'recentchangeslinked-noresult' => 'Dar davomi zamoni dodaşuda taƣjire dar sahifahoi pajvasta rux nadodaast.',
+'recentchangeslinked-summary' => "In fehristi taƣjiroti oxir baroi sahifahoi pajvasta az sahifai muşaxxasşuda meboşad (jo ba a'zojoni gurūhi muşaxxasşuda).
+Sahifahoi dar [[Special:Watchlist|fehristi nazaroti şumo]] buda '''purrang''' hastand.",
+'recentchangeslinked-page' => 'Nomi sahifa:',
+'recentchangeslinked-to' => 'Taƣjiroti sahifahoe, ki ba sahifai mavridi nazar pajvanddoştaro namoiş dihed',
+
+# Upload
+'upload' => 'Firistodani parvanda',
+'uploadbtn' => 'Firistodani fajl',
+'reuploaddesc' => 'Borguzoriro laƣv kuned va ba formi borguzorī bargarded.',
+'uploadnologin' => 'Vurud nakarda',
+'uploadnologintext' => 'Baroi firistodani fajlho Şumo bojad [[Special:UserLogin|vurud kuned]].',
+'upload_directory_read_only' => 'Şoxai borguzorī ($1) az tarafi veb korguzor qobili naviştan nest.',
+'uploaderror' => 'Iştibohi firistodan',
+'upload-permitted' => "Nav'hoi parvandahoi içozatşuda: $1.",
+'upload-preferred' => "Nav'hoi parvandahoi içozatşuda: $1.",
+'upload-prohibited' => "Nav'hoi parvandahoi man'şuda: $1.",
+'uploadlog' => 'sabti firistodan',
+'uploadlogpage' => 'Sabti firistodan',
+'filename' => 'Nomi parvanda',
+'filedesc' => 'Xulosa',
+'fileuploadsummary' => 'Xulosa:',
+'filestatus' => "Vaz'ijati haqqi taksir:",
+'filesource' => "Manba':",
+'uploadedfiles' => 'Fajlhoi firistodaşuda',
+'ignorewarning' => 'Ahmijat nadodan ba huşdor va zaxira kardani parvanda',
+'ignorewarnings' => 'Caşmpūşī az hama huşdorho',
+'minlength1' => 'Nomi parvanda dasti kam jak harf boşad.',
+'illegalfilename' => 'Nomi parvandai "$1" alomathoero dar bar megirad, ki baroi nomi sahifaho istifoda nameşavand. Lutfan nomi parvandaro taƣjir dihed va onro az nav bor kuned.',
+'badfilename' => 'Nomi parvanda ba "$1" taƣjir doda şud.',
+'filetype-badmime' => 'Parvandaho MIME, ki nav\'i onho "$1" boşad baroi borguzorī içozate nadorand.',
+'filetype-missing' => 'Parvanda pasvand nadorad (monandi ".jpg").',
+'large-file' => 'Tavsija şudaast, ki parvandaho buzurgtar az $1 naboşand; in parvanda $2 ast.',
+'largefileserver' => 'In parvanda az andozai içozat şudai andozahoi parvanda dar xidmatgor burzurgtar ast.',
+'emptyfile' => "Parvandai borşuda xolī ba nazar merasad. In mas'ala mumkin ast xatoi navişt dar nomi parvanda rux doda boşad. Lutfan ta'jid kuned, ki ojo şumo dar haqiqat mexohed in parvandaro bo hamin şaroit bor kuned.",
+'fileexists' => "Dar holi hozir parvandae bo hamin nom mavçud ast.
+Agar bovarī nadored, ki mexohed on parvandaro taƣjir dihed, lutfan '''<tt>[[:$1]]</tt>'''-ro barrasī kuned.
+[[$1|thumb]]",
+'fileexists-extension' => "Parvandae bo nomi muşobeh vuçud dorad: [[$2|thumb]]
+* Nomi parvandai borguzorişuda istoda: '''<tt>[[:$1]]</tt>'''
+* Nomi parvandai vuçud doşta: '''<tt>[[:$2]]</tt>'''
+Lutfan jak nomi digarero intixob kuned.",
+'fileexists-thumbnail-yes' => "Az aks ba nazar merasad, ki aksi andozaaş xurd ''(anguştdona)''. [[$1|thumb]]
+Lutan parvandaro '''<tt>[[:$1]]</tt>''' barrasī kuned.
+Agar parvandai barrasişuda aksi xurd karda şudai on parvandai aslī ast, nijoze ba borguzoriji aksi xurd nest.",
+'successfulupload' => 'Firistodan bomuvaffaqijat',
+'uploadwarning' => 'Ogohiji firistodan',
+'savefile' => 'Zaxirai parvanda',
+'uploadedimage' => 'borşuda "[[$1]]"',
+'overwroteimage' => 'nusxai çadidi "[[$1]]" borguzorī şud',
+'uploaddisabled' => "Bor kordan ƣajrifa'ol ast",
+'uploadscripted' => 'In parvanda kodi skriptī jo HTML dorad, ki metavonad dar mururgarī veb nodurust namojon şavad.',
+'uploadvirus' => "In parvanda virus dorad! Çuz'ijot: $1",
+'sourcefilename' => 'Nomi parvandai aslī:',
+'destfilename' => 'Nomi parvandai maqsad:',
+'upload-maxfilesize' => 'Buzurgtarin andozai parvanda: $1',
+'filewasdeleted' => 'Parvandae bo hamin nom peştar borguzorī va pas az on pok şudaast. Peş az borguzorī ba $1 nigared.',
+'upload-wasdeleted' => "'''Huşdor: Şumo dar holi borguzoriji parvandae hasted, ki peş az in hazf şudaast.'''
+
+Şumo bojad biandeşed, ki ojo davom dodani borguzoriji in parvanda munosib ast jo na.
+Guzorişi hazfi marbut ba in parvanda dar zer ovarda şudaast:",
+'filename-bad-prefix' => "Nomi parvandae, ki şumo borguzori kardanied bo '''\"\$1\"''' oƣoz meşavad, ki jak peşvandi maxsusi akshoi sabtşuda tavassuti aksbardorakhoi raqamī ast. Lutfan nomi behtari tavsifotī baroi parvanda intixob kuned.",
+
+'upload-proto-error' => 'Qarordodi nodurust',
+'upload-proto-error-text' => 'Borguzori az durdast bo nişonahoe, ki bo <code>http://</code> jo <code>ftp://</code> oƣoz meşavand, nijoz dorad.',
+'upload-file-error' => 'Xatoi doxilī',
+'upload-misc-error' => "Xatoi noma'lum dar borguzorī",
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'Dastrasi ba URL mumkin nest',
+'upload-curl-error6-text' => 'Nişonai URL-i doda şuda qobili dastrasī nest. Lutfan durustiji on va vebgohro bozrasī kuned.',
+'upload-curl-error28' => 'Zamoni borguzorī saromad',
+'upload-curl-error28-text' => "In somona beş az andoza dar posux tūl kard. Lutfan barrasī kuned, ki ojo somona fa'ol va bar xat ast jo na. Sipas lahzae intizor şaved va dubora taloş kuned. Şojad bad naboşad dar vaqti n on qadar band dubora taloş kuned.",
+
+'license' => 'Içozatnoma:',
+'nolicense' => 'Heç jake intixob naşudaast',
+'license-nopreview' => '(Peşnamoiş vuçud nadorad)',
+'upload_source_url' => "(jak nişoni internetiji mū'tabar va ommavī)",
+'upload_source_file' => ' (parvandae dar kompjuteri şumo)',
+
+# Special:ListFiles
+'listfiles-summary' => 'In sahifai viƶa tamomi parvandahoi borguzorişudaro nişon medihad.
+Ba tavri peşfarz oxirin parvandahoi borguzorişuda dar boloi fehrist nişon doda şudaand.
+Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho meşavad.',
+'listfiles_search_for' => 'Çustuçūi nomi aks:',
+'imgfile' => 'parvanda',
+'listfiles' => 'Fehristi parvanda',
+'listfiles_date' => 'Sana',
+'listfiles_name' => 'Nom',
+'listfiles_user' => 'Korbar',
+'listfiles_size' => 'Andoza(haçm)',
+'listfiles_description' => 'Tavsifot',
+
+# File description page
+'file-anchor-link' => 'fajl',
+'filehist' => "Ta'rixi fajl",
+'filehist-help' => "Rūi ta'rixho klik kuned to nusxai marbuti parvandaro bubined.",
+'filehist-deleteall' => 'hazfi hama',
+'filehist-deleteone' => 'hazf',
+'filehist-revert' => 'vogardonī',
+'filehist-current' => "nusxai fe'lī",
+'filehist-datetime' => "Ta'rix",
+'filehist-thumb' => 'Bandanguştī',
+'filehist-thumbtext' => 'Aksi bandanguştī az nusxai to $1',
+'filehist-user' => 'Korbar',
+'filehist-dimensions' => 'Andoza',
+'filehist-filesize' => 'Andozai parvanda',
+'filehist-comment' => 'Tavzeh',
+'imagelinks' => 'Pajvandhoi parvanda',
+'linkstoimage' => '{{PLURAL:$1|Sahifahoi|$1 Sahifai}} zerin ba in aks pajvandand:',
+'nolinkstoimage' => 'Heç sahifae ba in aks pajvand nadorad.',
+'sharedupload' => 'In parvanda az $1 meboşad va şojad az tarafi digar loihaho istifoda şavad.',
+'uploadnewversion-linktext' => 'Bor kardani nusxai çadidī in parvanda',
+
+# File reversion
+'filerevert' => 'Vogardoniji $1',
+'filerevert-legend' => 'Vogardoniji parvanda',
+'filerevert-intro' => "Şumo dar holi vogardoniji '''[[Media:$1|$1]]''' ba [$4 nusxai az $3, $2] hasted.",
+'filerevert-comment' => 'Tavzeh:',
+'filerevert-defaultcomment' => 'Vogardonī ba nusxai $2, $1',
+'filerevert-submit' => 'birav',
+'filerevert-success' => "'''[[Media:$1|$1]]''' vogardonida şud ba [nusxai $4 az ta'rixi $3, $2].",
+'filerevert-badversion' => 'Nusxai kūhnatare az in parvanda vuçud nadoşt.',
+
+# File deletion
+'filedelete' => 'Hazfi $1',
+'filedelete-legend' => 'Hazfi parvanda',
+'filedelete-intro-old' => "Şumo dar holi hazfi nusxai '''[[Media:$1|$1]]''' az ta'rixi [$4 $3, $2] hasted.",
+'filedelete-comment' => 'Sabab:',
+'filedelete-submit' => 'Hazf',
+'filedelete-success' => "'''$1''' hazf şud.",
+'filedelete-nofile' => "'''$1''' vuçud nadorad.",
+'filedelete-nofile-old' => "Nusxai bojgonī şudae az '''$1''' bo muşaxxasoti doda şuda, vuçud nadorad.",
+'filedelete-otherreason' => 'Daleli digar/izofī:',
+'filedelete-reason-otherlist' => 'Digar dalel',
+'filedelete-reason-dropdown' => '*Dalelhoi umumiji hazf
+** Naqzi haqqi taksir
+** Parvandai takrorī',
+'filedelete-edit-reasonlist' => 'Viroiş hazf dalelho',
+
+# MIME search
+'mimesearch' => 'Çustuçū bo standarti MIME',
+'mimesearch-summary' => "Bo kūmaki in sahifa şumo metavoned parvandahoe, ki jak nav' ba xusus MIME pajdo kuned. Vorid: contenttype/subtype, namuna. <tt>image/jpeg</tt>.",
+'mimetype' => "MIME nav':",
+'download' => 'borgirī',
+
+# Unwatched pages
+'unwatchedpages' => 'Sahifahoi pajgirinaşuda',
+
+# List redirects
+'listredirects' => 'Rūjxati sahifahoi ravonakunī',
+
+# Unused templates
+'unusedtemplates' => 'Şablonhoi istifodanaşuda',
+'unusedtemplateswlh' => 'digar pajvandho',
+
+# Random page
+'randompage' => 'Sahifai tasodufī',
+
+# Random redirect
+'randomredirect' => 'Masiri tasodufī',
+
+# Statistics
+'statistics' => 'Omor\\Statistika',
+'statistics-header-pages' => 'Sahifai omor',
+'statistics-header-edits' => 'Viroişi omor',
+'statistics-header-views' => 'Didani omor',
+'statistics-header-users' => 'Omori korbaron',
+'statistics-articles' => 'Sahifahoi mūhtavo',
+'statistics-pages' => 'Sahifaho',
+'statistics-files' => 'Parvandahoi borşuda',
+'statistics-users' => '[[Special:ListUsers|Korbaroni]] sabtinomşuda',
+'statistics-users-active' => "Korbaroni fa'ol",
+'statistics-mostpopular' => 'Sahifahoi bisjor nazarkardaşuda',
+
+'disambiguations' => 'Sahifahoi ibhomzudoī',
+'disambiguationspage' => 'Template:ibhomzudoī',
+'disambiguations-text' => "Sahifahoi zerin pajvand ba '''sahifai ibhomzudoī''' dorand. In sahifaho bojad ba mavzū'i munosibi xud pajvast şavand.<br />Sahifa Ibhomzudoī dar nazar girifta meşavad, ki dar on şablone, ki ba [[MediaWiki:Disambiguationspage]] pajvand dorad istifoda şuda boşad",
+
+'doubleredirects' => 'Taƣjiri masirhoi dutoī',
+'double-redirect-fixer' => "Ta'mirkori taƣjirmasirho",
+
+'brokenredirects' => 'Sahifahoi kandaşudai ravonakunī',
+'brokenredirects-edit' => 'viroiş',
+'brokenredirects-delete' => 'hazf',
+
+'withoutinterwiki' => 'Sahifahoi biduni pajvandhoi zabonī',
+'withoutinterwiki-summary' => 'Sahifahoi zerin pajvande ba zaboni digar nadorand:',
+'withoutinterwiki-legend' => 'Peşvand',
+'withoutinterwiki-submit' => 'Namoiş',
+
+'fewestrevisions' => 'Sahifahoe, ki şumorai kami nusxaho dorand',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bajt|bajtho}}',
+'ncategories' => '$1 {{PLURAL:$1|gurūh|gurūhho}}',
+'nlinks' => '$1 {{PLURAL:$1|pajvand|pajvandho}}',
+'nmembers' => '$1 {{PLURAL:$1|uzv}}',
+'nrevisions' => '$1 {{PLURAL:$1|viroiş|viroiş}}',
+'nviews' => '$1 {{PLURAL:$1|namoiş|namoişho}}',
+'specialpage-empty' => 'Baroi in hisobot natiçae vuçud nadorad.',
+'lonelypages' => 'Sahifahoi jatim',
+'uncategorizedpages' => 'Sahifahoe, ki ba jagon gurūh doxil nestand',
+'uncategorizedcategories' => 'Gurūhhoe, ki ba jagon gurūh doxil nestand',
+'uncategorizedimages' => 'Akshoe, ki ba jagon gurūh doxil nestand',
+'uncategorizedtemplates' => 'Şablonhoe, ki ba jagon gurūh doxil nestand',
+'unusedcategories' => 'Gurūhhoi istifodanaşuda',
+'unusedimages' => 'Fajlhoi istifodanaşuda',
+'popularpages' => 'Sahifahoi maşhur',
+'wantedcategories' => 'Gurūhhoi darxostī',
+'wantedpages' => 'Sahifahoi darxostī',
+'wantedfiles' => 'Parvandahoi darxostī',
+'wantedtemplates' => 'Şablonhoi darxostī',
+'mostlinked' => 'Sahifahoe, ki ba onho az hama beştar pajvandho ravona karda şudaast',
+'mostlinkedcategories' => 'Sahifahoe, ki dar beştari gurūhho doxil şudaand',
+'mostlinkedtemplates' => 'Şablonhoe ki beştar az hama bo onho pajvand şudaast',
+'mostcategories' => "Maqolahoe ki beştarin te'dodi gurūhhoro dorand",
+'mostimages' => 'Akshoe ki beştar az hama bo onho pajvand şudaast',
+'mostrevisions' => 'Sahifaxoe, ki az hama beştar viroiş şudaand',
+'prefixindex' => 'Hamai sahifaho bo peşvand',
+'shortpages' => 'Sahifahoi kūtoh',
+'longpages' => 'Sahifahoi kalon',
+'deadendpages' => "Sahifahoi bema'no",
+'deadendpagestext' => 'Sahifahoi zerin ba heç digar sahifae dar {{SITENAME}} pajvand nestand.',
+'protectedpages' => 'Sahifahoi hifzşuda',
+'protectedpages-indef' => 'Faqat hifzşudahoi nomuajjan',
+'protectedpagestext' => 'Sahifai zerin az viroiş jo kūconidani hifz şudaand',
+'protectedpagesempty' => 'Dar holi hozir heç sahifae muhofizat naşudaast.',
+'protectedtitles' => 'Unvonhoi muhofizatşuda',
+'protectedtitlestext' => 'Unvonhoi zerin az eçod muhofizat şudaand',
+'protectedtitlesempty' => 'Dar holi hozir heç unvone bo in parametrho muhofizat naщudaast',
+'listusers' => 'Rūjxati korbaron',
+'newpages' => 'Sahifahoi nav',
+'newpages-username' => 'Nomi korbar:',
+'ancientpages' => 'Sahifahoi kūhnatarin',
+'move' => 'Kūconidan',
+'movethispage' => 'Kūconidani in sahifa',
+'unusedcategoriestext' => 'Gurūhhoi zerin vuçud dorad, vale jagon sahifa jo gurūhe az onho istifoda namekunand.',
+'notargettitle' => 'Maqsade nest',
+'notargettext' => 'Şumo jagon sahifa jo korbarero baroi içroi in amal rūi on muşaxxas nakardaed.',
+'nopagetitle' => 'Cunin sahifae vuçud nadorad',
+'pager-newer-n' => '{{PLURAL:$1|navtar 1|navtar $1}}',
+'pager-older-n' => '{{PLURAL:$1|kūhnatar 1|kūhnatar $1}}',
+'suppress' => 'Nazorat',
+
+# Book sources
+'booksources' => 'Manbahoi kitobho',
+'booksources-search-legend' => 'Çustuçūi sarcaşmahoi kitob',
+'booksources-go' => 'Birav',
+'booksources-text' => 'Der zer fehristi pajvandho ba somonahoe, ki kitobhoi nav va kūhna mefurūşand, ovarda şudaast. Mumkin ast, ittilooti beştarro dar borai kitobhoi çustuçū kardaaton doşta boşand:',
+
+# Special:Log
+'specialloguserlabel' => 'Korbar:',
+'speciallogtitlelabel' => 'Sarlavha:',
+'log' => 'Guzorişho',
+'all-logs-page' => 'Hamai sabthoi umumī',
+'logempty' => 'Mavridi mutobiq ba manzuri şumo dar guzoriş pajdo naşud.',
+'log-title-wildcard' => 'Sahifahoero çustuçū kuned, ki unvonaşon bo in matn oƣoz meşavand',
+
+# Special:AllPages
+'allpages' => 'Hamai sahifaho',
+'alphaindexline' => '$1 to $2',
+'nextpage' => "Sahifai ba'dina ($1)",
+'prevpage' => 'Sahifai peşina ($1)',
+'allpagesfrom' => "Namoişi sahifaho bo şurū' az:",
+'allpagesto' => 'Namoişi sahifaho bo pojoni dar:',
+'allarticles' => 'Hamai maqolaho',
+'allinnamespace' => 'Hamai sahifaho ($1 namespace)',
+'allnotinnamespace' => 'Hamai sahifaho (ki dar fazoinom $1 ast)',
+'allpagesprev' => 'Peşina',
+'allpagesnext' => "Ba'dina",
+'allpagessubmit' => 'Rav',
+'allpagesprefix' => 'Namoişi sahifahoi doroi peşvand:',
+'allpagesbadtitle' => "Unvoni sahifai doda şuda nomū'tabar ast, jo inki doroi peşvandi bajnizabonī jo bajnivikiī ast. Mumkin ast alomathoero dorad, ki nametavon onhoro dar unvonho istifoda burd.",
+'allpages-bad-ns' => '{{SITENAME}} doroi fazoinom "$1" nest.',
+
+# Special:Categories
+'categories' => 'Gurūhho',
+'categoriesfrom' => "Namoişi gurūhho bo şurū' az:",
+'special-categories-sort-count' => "muratab kardan bar asosi te'dod",
+'special-categories-sort-abc' => 'muratab kardani alifboī',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Hissaguzorihoi hazfşudai korbar',
+'deletedcontributions-title' => 'Hissaguzorihoi hazfşudai korbar',
+
+# Special:LinkSearch
+'linksearch' => 'Pajvandhoi beruna',
+'linksearch-pat' => 'Çustuçūi naqş:',
+'linksearch-ns' => 'Fazoinom:',
+'linksearch-ok' => 'Çustuçū',
+'linksearch-text' => 'Nişonahoi monandi "*.wikipedia.org"-ro metavon istifoda kard.<br />Protokolhoi puştibonişuda: <tt>$1</tt>',
+'linksearch-line' => '$1 doroi pajvand az $2 ast',
+'linksearch-error' => 'Nişonaho faqat dar ibtidoi nomi mizboni internetī metavonand istifoda şavand.',
+
+# Special:ListUsers
+'listusersfrom' => "Namoişi korbaron bo şurū' az:",
+'listusers-submit' => 'Nişon dodani',
+'listusers-noresult' => 'Heç korbare joft naşud.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Guzorişi eçodi korbar',
+'newuserlogpagetext' => 'In guzoriş az nomhoi korbariji tozasoxtaşuda ast.',
+'newuserlog-byemail' => 'kalimai ubur ba poctai elektronī firistoda şud',
+'newuserlog-create-entry' => 'Korbari nav',
+'newuserlog-create2-entry' => 'hisobi çadidi $1 eçod şud',
+'newuserlog-autocreate-entry' => 'Hisob bo tavri xudkor eçod şudaast',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Ixtijoroti gurūhhoi korbarī',
+'listgrouprights-group' => 'Gurūh',
+'listgrouprights-rights' => 'Dastrasiho',
+'listgrouprights-helppage' => 'Help:Dastrasihoi gurūhī',
+'listgrouprights-members' => "(fehristi a'zojon)",
+
+# E-mail user
+'mailnologin' => 'Nişonae az firistanda vuçud nadorad',
+'mailnologintext' => "Baroi firistodani poctai elektronī baroi korbaroni digar bojad [[Special:UserLogin|ba sistem vorid şaved]] va nişonai poctai elektroniji mū'tabar dar [[Special:Preferences|tarçihoti]] xud doşta boşed.",
+'emailuser' => 'Firistodani email ba in korbar',
+'emailpage' => 'Poctai elektronī ba korbar',
+'usermailererror' => 'Poctai elektroni ba xatoe ducor şud:',
+'defemailsubject' => 'Vikipedia e-mail',
+'noemailtitle' => 'Nişonai poctai elektronī mavçud nest',
+'emailfrom' => 'Az:',
+'emailto' => 'Ba:',
+'emailsubject' => "Mavzū':",
+'emailmessage' => 'Pajjom:',
+'emailsend' => 'Irsol',
+'emailccme' => 'Nusxai pajjomi maro ba E-mail-i man firist.',
+'emailccsubject' => 'Nusxai nomai şumo ba $1: $2',
+'emailsent' => 'Poctai elektronī firistoda şud',
+'emailsenttext' => 'Nomai poctai elektroniji şumo firistoda şud.',
+
+# Watchlist
+'watchlist' => 'Fehristi nazaroti man',
+'mywatchlist' => 'Fehristi nazaroti man',
+'watchlistfor' => "(baroi '''$1''')",
+'nowatchlist' => 'Dar fehristi pajgirihoi şumo heç mavride nest.',
+'watchlistanontext' => 'Lutfan baroi muşohida va viroişi fehristi pajgirihoi xud az $1 istifoda kuned.',
+'watchnologin' => 'Vurud naşuda',
+'watchnologintext' => 'Baroi taƣjiri fehristi pajgirihoi xud bojad [[Special:UserLogin|ba sistem vorid şaved]].',
+'addedwatch' => 'Ba fehristi pajgiriho ilova karda şud',
+'addedwatchtext' => "In sahifa \"[[:\$1]]\" va [[Special:Watchlist|fehristi nazaroti]] Şumo ilova şud.
+Digargunihoi ojandai in sahifa va sahifi bahsi aloqamand dar rūixati onço xohad şud,
+va sahifa '''ƣafs''' dar [[Special:RecentChanges|rūixati taƣjiroti oxirin]] baroi bo osoni darjoft kardan xohad ba nazar rasid.
+
+Agar şumo dertar az fehristi nazarotaton in sahifaro hazv kardan xohed, dar menju \"Nazar nakardan\"-ro paxş kuned.",
+'removedwatch' => 'Az fehristi pajgiriho bardoşta şud',
+'removedwatchtext' => 'Sahifai "[[:$1]]" az [[Special:Watchlist|fehristi pajgirihoi şumo]] bardoşta şud.',
+'watch' => 'Nazar kardan',
+'watchthispage' => 'Pajgiriji in sahifa',
+'unwatch' => 'Nazar nakardan',
+'unwatchthispage' => 'Tavqifi pajgiriji in sahifa',
+'notanarticle' => 'Maqola nest',
+'notvisiblerev' => 'Nusxa hazf şud',
+'watchnochange' => 'Jagon mavridi pajgirihoi şumo dar davrai zamoni namoişjofta viroiş naşuda ast.',
+'watchlist-details' => '{{PLURAL:$1|$1 sahifai|$1 sahifahoi}} dar fehristi pajgirihoi şumo, biduni hisobi sahifahoi bahs.',
+'wlheader-enotif' => '* Ittiloorasoniji tariqi poctai elektronī (E-mail) imkonpazir ast.',
+'wlheader-showupdated' => "* Sahifahoe, ki pas az oxirin sar zadanaton ba onho taƣjir kardaand '''purrang''' nişon doda şudaand",
+'watchmethod-recent' => 'barrasiji viroişhoi oxir baroi sahifahoi pajgirişuda',
+'watchmethod-list' => 'barrasiji sahifahoi pajgirişuda baroi viroişhoi oxir',
+'watchlistcontains' => 'Fehristi pajgirihoi şumo $1 {{PLURAL:$1|sahifaro|sahifahoro}} dar bar megirad.',
+'iteminvalidname' => "Muşkilī bo mavridi '$1', nomi nomū'tabar ast...",
+'wlnote' => "Dar zer {{PLURAL:$1|oxirin taƣjir|'''$1''' oxirin taƣjirot}} dar $2 soati oxir {{PLURAL:omadaast|omadaand}}.",
+'wlshowlast' => 'Namoişi oxirin $1 soat $2 rūzho $3',
+'watchlist-options' => 'Ixtijoroti fehristi pajgiriho',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Pajgiri...',
+'unwatching' => 'Tavqifi pajgiri...',
+
+'enotif_mailer' => '{{SITENAME}} Ittilorasonī poctai elektronī',
+'enotif_reset' => 'Alomatrasoni hamai sahifaho ba unvoni bozdidşuda',
+'enotif_newpagetext' => 'In sahifai nav ast',
+'enotif_impersonal_salutation' => 'Korbari {{SITENAME}}',
+'changed' => 'taƣjirjofta',
+'created' => 'eçod şud',
+'enotif_subject' => 'Sahifai {{SITENAME}} $PAGETITLE az tarafi $PAGEEDITOR $CHANGEDORCREATED şud',
+'enotif_lastvisited' => 'Baroi didani hamai taƣjirot az oxirin bore, ki sar zadaed $1ro bubined.',
+'enotif_lastdiff' => 'Baroi namoişi in taƣjir $1ro bubined.',
+'enotif_anon_editor' => 'korbari noşinos $1',
+
+# Delete
+'deletepage' => 'Hazfi sahifa',
+'confirm' => 'Tasdiq',
+'excontent' => "mūhtavoi sahifa in bud: '$1'",
+'excontentauthor' => "mūhtavoi sahifa in bud: '$1' (va jagona hissaguzor '[[Special:Contributions/$2|$2]]' bud)",
+'exbeforeblank' => "mūhtavoi sahifa qabl az xolī kardan in '$1' bud",
+'exblank' => 'sahifa xolī bud',
+'delete-confirm' => 'Hazf "$1"',
+'delete-legend' => 'Hazf',
+'confirmdeletetext' => "Şumo dar holi hazf kardani jak sahifa jo akse az pojgoh doda hamroh bo tamomi ta'rixi on hasted. Lutfan in amalro tasdiq kuned va itminon hosil kuned, ki oqibati in korro medoned va in amalro mutobiqi [[{{MediaWiki:Policy-url}}|sijosati hazf]] ançom medihed.",
+'actioncomplete' => 'Amal içro şud',
+'deletedtext' => '"<nowiki>$1</nowiki>" hazf şudaast.
+Nigared ba $2 baroi guzorişi hazfi oxirin.',
+'deletedarticle' => 'hazfşuda "[[$1]]"',
+'suppressedarticle' => '"[[$1]]"-ro mavquf kard',
+'dellogpage' => 'Guzorişhoi hazf',
+'dellogpagetext' => 'Fehristi zer fehristi az oxirin hazfhost. Hamai vaqthoi nişon dodaşuda, vaqti Çahonī (vaqti Grinvic) ast.',
+'deletionlog' => 'guzorişhoi hazf',
+'reverted' => 'Ba nusxai peştara vogardonida şud',
+'deletecomment' => 'Sabab:',
+'deleteotherreason' => 'Daleli digar/ilovagī:',
+'deletereasonotherlist' => 'Digar sabab',
+'deletereason-dropdown' => '*Dalelhoi umumiji hazf
+** Darxosti korbar
+** Naqzi haqqi taksir
+** Xarobkorī',
+'delete-edit-reasonlist' => 'Viroiş hazf dalelho',
+
+# Rollback
+'rollback' => 'Vogardoniji viroişho',
+'rollback_short' => 'Vogard',
+'rollbacklink' => 'vogardoni',
+'rollbackfailed' => 'Vogardoni naşud',
+'cantrollback' => 'Nametavon viroişro vogardond; oxirin hissaguzor tanho muallifi in maqola ast.',
+'editcomment' => "Xulosai viroiş in bud: \"''\$1''\".",
+'revertpage' => 'Viroişi [[Special:Contributions/$2|$2]] ([[User talk:$2|Bahs]]) vogardonida şud ba oxirin taƣjire, ki [[User:$1|$1]] ançom doda bud',
+'rollback-success' => 'Viroişhoi $1 vogardonī şud; sahifa ba viroişi $2 bargardonida şud.',
+'sessionfailure' => 'Ba nazar merasad, muşkilie dar mavridi nişasti korbariji şumo vuçud dorad; amali darxostşuda ba unvoni iqdomi peşgirona dar barobari rabuda şudani ittilooti nişasti korbarī, laƣv şud. Lutfan tugmai "bozgaşt"-ro dar mururgari xud paxş kuned va sahifae, ki az on inço rasidaed muçaddadan faroxonī kuned, sipas muçaddadan boz sa\'j kuned.',
+
+# Protect
+'protectlogpage' => 'Guzorişi muhofizat',
+'protectlogtext' => 'Dar zer fehristi qufl kardanho va az qufl ozod şudanho omada ast. Baroi ittilooti beştar ba [[Special:ProtectedPages|fehristi sahifahoi muhofizatşuda]] nigared.',
+'protectedarticle' => '"[[$1]]" muhofizat şud',
+'modifiedarticleprotection' => 'sathi muhofizati sahifai "[[$1]]" taƣjir doda şud',
+'unprotectedarticle' => 'az muhofizat ozod şuda "[[$1]]"',
+'protect-title' => 'Dar holi guzoştani sathi muhofizat baroi "$1"',
+'prot_1movedto2' => '[[$1]] ba [[$2]] kūconida şudaast',
+'protect-legend' => 'Tasdiqi muhofizat',
+'protectcomment' => 'Sabab:',
+'protectexpiry' => 'Zamoni saromadan:',
+'protect_expiry_invalid' => "Zamoni saromadan nomū'tabar ast.",
+'protect_expiry_old' => 'Zamoni saromadan dar guzaşta ast.',
+'protect-text' => "Şumo inço sathi muhofizati sahifai '''<nowiki>$1</nowiki>''' metavoned nigared jo taƣjir dihed",
+'protect-locked-blocked' => "Şumo muddate, ki dastarsiaton qat' ast nametavoned sathi hifzi sahifahoro tagjir dihed. Tanzimoti fe'liji sahifai '''$1''' ba in qaror ast:",
+'protect-locked-dblock' => "Az sababi qufl şudani pojgohi doda, imkoni taƣjiri sathi hifzi sahifa vuçud nadorad.
+Tanzimoti fe'liji sahifai '''$1''' ba in qaror ast:",
+'protect-locked-access' => "Hisobi şumo içozati taƣjiri sathi hifozati sahifaro nadorad.
+Tanzimoti kununiji sahifa ba in qaror ast '''$1''':",
+'protect-cascadeon' => "In sahifa dar holi hozir muhofizat şudaast, cunki on dar {{PLURAL:$1|sahifae, ki muhofizati obşorī dorad|sahifahoe, ki muhofizati obşorī dorand}} ilova şudaast. Şumo metavoned sathi muhofizati in sahifaro taƣjir dihed, ammo on ba muhofizati obşorī ta'sir naxohad rasond.",
+'protect-default' => 'Içoza ba hamai korbaron',
+'protect-fallback' => 'Sathi dastrasī "$1" lozim ast',
+'protect-level-autoconfirmed' => 'Bastani korbaroni çadid va sabtinomnaşuda',
+'protect-level-sysop' => 'Tanho baroi mudiron',
+'protect-summary-cascade' => 'obşorī',
+'protect-expiring' => 'zamoni saromadan $1 (UTC)',
+'protect-expiry-indefinite' => 'nomuajjan',
+'protect-cascade' => 'Muhofizati obşorī - Az hama sahifahoe, ki dar in sahifa omadaand muhofizat meşavand',
+'protect-cantedit' => "Şumo vaz'ijati hifzi in sahifaro taƣjir doda nametavoned, cun içozati viroişi onro nadored.",
+'protect-othertime' => 'Digar vaqt:',
+'protect-othertime-op' => 'digar vaqt',
+'protect-edit-reasonlist' => 'Sababhoi hifzşudaro viroiş kuned',
+'protect-expiry-options' => '1 soat:1 hour,1 rūz:1 day,1 hafta:1 week,2 hafta:2 weeks,1 moh:1 month,3 moh:3 months,6 moh:6 months,1 sol:1 year,beoxir:infinite',
+'restriction-type' => 'Dastrasi:',
+'restriction-level' => 'Sathi mahdudijat:',
+'minimum-size' => 'Haddi aqali andoza',
+'maximum-size' => 'Haddi aksari andoza:',
+'pagesize' => '(bajt)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Viroiş',
+'restriction-move' => 'Kūconidan',
+'restriction-create' => 'Eçod',
+
+# Restriction levels
+'restriction-level-sysop' => 'purra hifzşuda',
+'restriction-level-autoconfirmed' => 'nima muhofizatşuda',
+'restriction-level-all' => 'har sathe',
+
+# Undelete
+'undelete' => 'Ehjoi sahifahoi hazfşuda',
+'undeletepage' => 'Namoiş va ehjoi sahifahoi hazfşuda',
+'undeletepagetitle' => "'''On cī dar idoma meojad, şomili nusxahoi hazfşudai [[:$1]] ast'''.",
+'viewdeletedpage' => 'Namoişi sahifahoi hazfşuda',
+'undeleterevisions' => '$1 nusxa bojgonī {{PLURAL:$1|şudaast|şudaand}}',
+'undeleterevdel' => 'Ehjoi sahifaho dar holate, ki boisi hazf şudan qisme oxirin nusxai sahifa şavad, amalī naxohad şud.
+Dar in holatho, şumo bojad cand nusxai oxirin sahifaro niz ehjo kuned.',
+'undeletehistorynoadmin' => "In maqola hazv karda şudaast. Sababi hazv dar ezoh dar zer bo digar ma'lumothoi korbar ki in sahifaro hazf kard ovarda şudaast. Matni asliji in viroişoti hazfşuda faqat ba mudiron-administratoron dastras ast.",
+'undeleterevision-missing' => "Nusxai nomū'tabar jo gum ast. Mumkin ast pajvandaton nodurust boşad, jo inki az bojgonī hazf jo bozjobī şudaast.",
+'undelete-nodiff' => 'Nusxai kūhnatare joft naşud.',
+'undeletebtn' => 'Barqaror kardan',
+'undeletelink' => 'didan/barqaror kardan',
+'undeleteviewlink' => 'namoiş',
+'undeletereset' => 'Az nav',
+'undeletecomment' => 'Tavzeh:',
+'undeletedarticle' => 'ehjo "[[$1]]" {{PLURAL:$1|şud|şudand}}',
+'undeletedrevisions' => '$1 nusxa baqaror {{PLURAL:$1|şud|şudand}}',
+'undeletedrevisions-files' => '$1 nusxa va $2 parvanda barqaror {{PLURAL:$1|şud|şudand}}',
+'undeletedfiles' => '$1 parvanda barqaror {{PLURAL:$1|şud|şudand}}',
+'cannotundelete' => 'Barqarorkunī naşud; mumkin ast kase digare peştar in sahifaro barqaror karda boşad.',
+'undeletedpage' => "'''$1 barqaror şud'''
+
+Baroi didani guzorişi hazfho va barqarorkunihoi oxirin ba [[Special:Log/delete|guzorişi hazf]] nigared.",
+'undelete-header' => 'Baroi didani sahifahoi hazfşudai oxir [[Special:Log/delete|guzorişhoi hazfro]] nigared.',
+'undelete-search-box' => 'Çustuçūi sahifahoi hazfşuda',
+'undelete-search-prefix' => "Namoişi sahifaho bo şurū' az:",
+'undelete-search-submit' => 'Çustuçū',
+'undelete-no-results' => 'Heç sahifai aloqamande dar bojgoni sahifahoi hazfşuda joft naşud.',
+'undelete-filename-mismatch' => 'Imkoni barqarorkuniji nusxai $1 vuçud nadorad: nomi parvanda mutobiqat namekunad',
+'undelete-bad-store-key' => 'Imkoni barqarorkuniji nusxai $1 vuçud nadorad: parvanda qabl az hazf az dast rafta bud.',
+'undelete-cleanup-error' => 'Xato dar hazfi ta\'rixcai istifoda naşuda "$1".',
+'undelete-missing-filearchive' => "Imkoni barqarorkuniji ta'rixcai şumorai $1 vuçud nadorad zero ittiloot dar pojgohi doda vuçud nadorad. Mumkin ast peş barqaror şuda boşad.",
+'undelete-error-short' => 'Xato dar ehjoi parvanda: $1',
+'undelete-error-long' => 'Dar vaqti ehjoi parvanda xatoe rux dod:
+
+$1',
+
+# Namespace form on various pages
+'namespace' => 'Fazoinom:',
+'invert' => 'Pinhon kardani intixobkardaşuda',
+'blanknamespace' => '(Aslī)',
+
+# Contributions
+'contributions' => 'Hissaguzoriji korbar',
+'contributions-title' => 'Hissaguzorihoi korbar baroi $1',
+'mycontris' => 'Xissaguzoriji man',
+'contribsub2' => 'Baroi $1 ($2)',
+'nocontribs' => 'Heç taƣjire bo in muşaxxasot pajdo naşud.',
+'uctop' => '(bolo)',
+'month' => 'Dar in moh (va qabl az on):',
+'year' => 'Dar in sol (va qabl az on):',
+
+'sp-contributions-newbies' => 'Faqat hissaguzorihoi hisobhoi çadidro nişon deh',
+'sp-contributions-newbies-sub' => 'Baroi navkoron',
+'sp-contributions-blocklog' => 'Guzorişi bastaşudanho',
+'sp-contributions-search' => 'Çustuçūi hissaguzoriho',
+'sp-contributions-username' => 'IP nişona jo nomi korbar:',
+'sp-contributions-submit' => 'Çustuçū',
+
+# What links here
+'whatlinkshere' => 'Pajvandhoi dar in saxifa',
+'whatlinkshere-title' => 'Sahifahoe ki ba $1 pajvand dorand',
+'whatlinkshere-page' => 'Sahifa:',
+'linkshere' => "Sahifahoi zerin ba '''[[:$1]]''' pajvandand:",
+'nolinkshere' => "Jagon sahifa ba '''[[:$1]]''' pajvand nest.",
+'nolinkshere-ns' => "Heç sahifa az fazoinomi intixobşuda ba '''[[:$1]]''' pajvand nadorad.",
+'isredirect' => 'sahifai taƣjiri masir',
+'istemplate' => 'istifodaşuda dar sahifa',
+'isimage' => 'pajvandi aks',
+'whatlinkshere-prev' => '{{PLURAL:$1|qablī|qablī $1}}',
+'whatlinkshere-next' => "{{PLURAL:$1|ba'dī|ba'dī $1}}",
+'whatlinkshere-links' => '← pajvandho',
+'whatlinkshere-hideredirs' => '$1 taƣjiri masir',
+'whatlinkshere-hidetrans' => '$1 transgunçoişho',
+'whatlinkshere-hidelinks' => '$1 pajvandho',
+'whatlinkshere-filters' => 'Filtrho',
+
+# Block/unblock
+'blockip' => 'Bastani korbar',
+'blockip-legend' => 'Bastani korbar',
+'blockiptext' => "Baroi bastani dastrasiji viroişi nişonai IP jo nomi korbarī muşaxxas az formi zerin istifoda kuned.
+In kor faqat bojad baroi çilavgirī az xarobkori va muvofiqi bo [[{{MediaWiki:Policy-url}}|sijosati qat'i dastrasī]] ançom şavad.
+Daleli muşaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe, ki xarobkorī şudaand).",
+'ipaddress' => 'Nişonai IP:',
+'ipadressorusername' => 'IP nişona jo nomi korbar:',
+'ipbexpiry' => 'Xotima:',
+'ipbreason' => 'Sabab:',
+'ipbreasonotherlist' => 'Digar dalel',
+'ipbreason-dropdown' => "*Sababhoi umumiji bastan
+** Vorid kardani ittilooti nodurust
+** Pok kardani ittilooti mufid az sahifaho
+** Istifoda burdani pajvandhoi spam ba somonahoi beruna
+** Vorid kardani naviştahoi beman'nī ba sahifaho
+** Raftori ba'd/masxarakuniji digar korbaron
+** Sūiistifoda az cand hisobi korbarī
+** Nomi korbariji nomunosib",
+'ipbanononly' => 'Faqat bastani korbaroni gumnom',
+'ipbcreateaccount' => 'Çilavgirī az eçodi hisob',
+'ipbemailban' => 'Çilavgiriji korbar az firistodani poctai elektronī',
+'ipbenableautoblock' => "Nişonai oxire ki az on in korbar istifoda mekunad, ba surati xudkor buband, va digar nişonahoi IP-hoi ba'dina, ki az onho metavonad viroiş kunand",
+'ipbsubmit' => 'Bastani in korbar',
+'ipbother' => 'Digar vaqt:',
+'ipboptions' => '2 soat:2 hours,1 rūz:1 day,3 rūz:3 days,1 hafta:1 week,2 hafta:2 weeks,1 moh:1 month,3 moh:3 months,6 moh:6 months,1 sol:1 year,beoxir:infinite',
+'ipbotheroption' => 'digar',
+'ipbotherreason' => 'Dalelhoi digar/izofī:',
+'ipbhidename' => 'Pinhoni nomi korbarī az viroişho va fehristho',
+'badipaddress' => "IP nişonai nomū'tabar",
+'blockipsuccesssub' => 'Bastan muvaffaq щud',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] basta şudaast.<br />
+Baroi barrasī ba [[Special:IPBlockList|fehristi nişonahoi IP va nomhoi korbariji basta şuda]] nigared.',
+'ipb-edit-dropdown' => "Daleli qat'i dastrasī",
+'ipb-unblock-addr' => 'Boz kardani $1',
+'ipb-unblock' => 'Boz kardani nomi korbarī jo nişonai IP',
+'ipb-blocklist-addr' => 'Bastahoi mavçud baroi $1',
+'ipb-blocklist' => 'Didani bastahoi mavçud',
+'unblockip' => 'Boz kardani korbar',
+'unblockiptext' => 'Baroi barqaror kardan dastrasiji naviştan baroi nişonai IP jo nomi korbariji qablan basta şuda, az formi zerin istifoda kuned.',
+'ipusubmit' => 'Boz kardani dastrasī',
+'unblocked' => 'Dastrasiji [[User:$1|$1]] boz karda şud',
+'unblocked-id' => "Qat'i dastrasiji şumorai $1 xotima joft",
+'ipblocklist' => 'IP nişonaho va nomhoi korbariji basta şuda',
+'ipblocklist-legend' => 'Çustuçūi korbari basta şuda',
+'ipblocklist-username' => 'Nomi korbarī jo nişonai IP:',
+'ipblocklist-submit' => 'Çustuçū',
+'blocklistline' => '$1, $2 ro bast $3 ($4)',
+'infiniteblock' => 'be pojon',
+'anononlyblock' => 'faqat korbaroni gumnom',
+'noautoblockblock' => "bastani xudkor ƣajrifa'ol ast",
+'createaccountblock' => 'imkoni eçodi hisob basta şudaast',
+'emailblock' => 'poctai elektronī basta şudaast',
+'ipblocklist-empty' => 'Fehristi bastaşudanho xolī ast.',
+'ipblocklist-no-results' => "Dastrasiji hisobi korbarī jo nişonai internetiji mavridi nazar qat' nest.",
+'blocklink' => 'bastan',
+'unblocklink' => 'boz şavad',
+'change-blocklink' => "taƣjiri qat'i dastrasī",
+'contribslink' => 'hissaguzorī',
+'autoblocker' => 'Ba tavri xudkor nişonai IP-i şumo basta şuda cun az tarafi "[[User:$1|$1]]" istifod şuda bud, ki nişonaaş bo şumo jak ast. Daleli bastan $1 cunini ast: "$2"',
+'blocklogpage' => 'Sabti bastaşavī',
+'blocklogentry' => 'basta şud [[$1]] bo vaqti saromadan $2 $3',
+'blocklogtext' => 'In guzoriş az amali bastan va boz kardani korbaron ast.
+Nişonahoi IP-i bo tavri xudkor basta şuda, fehrist naşudaand.
+Baroi fehristi mahrumijatho va basta şudanhoi amalijoti kununī ba [[Special:IPBlockList|fehristi IP-hoi basta]] muroçiat kuned.',
+'unblocklogentry' => '$1 boz şud',
+'block-log-flags-anononly' => 'faqat korbaroni gumnom',
+'block-log-flags-nocreate' => "qobilijati eçodi hisob ƣajrifa'ol şud",
+'block-log-flags-noautoblock' => "qat'i dastrasiji xudkor ƣajrifa'ol şud",
+'block-log-flags-noemail' => 'poctai elektronī basta şud',
+'range_block_disabled' => "Qobilijati mudiron baroi eçodi bastaho ƣajrifa'ol şudaast.",
+'ipb_expiry_invalid' => "Vaqti xotima nomū'tabar.",
+'ipb_already_blocked' => '"$1" allakaj basta şudaast',
+'ipb_cant_unblock' => 'Xato: Nişonai basta şudani $1 joft naşud. Mumkin ast peştar boz şuda boşad.',
+'ipb_blocked_as_range' => 'Xato: Nişonai IP-i $1 ba şakli mustaqim basta naşudaast va nametavonad boz şavad. In nişona hamrohi $2, basta şuda qobili boz şudan ast.',
+'ip_range_invalid' => "Safi IP nomū'tabar ast.",
+'blockme' => 'Dastrasiji manro qatь kun',
+'proxyblocker' => 'Proksiband',
+'proxyblocker-disabled' => "In amal ƣajrifa'ol şudaast.",
+'proxyblockreason' => "Az sababi peşkor boz (open proxy) budanaş, nişonai IP-i şumo basta şudaast. Lutfan bo ta'minkunandai xizmathoi Internetiji xud jo puştiboni texnikī tamos bigired va onhoro bo in muşkiliji amnijatiji muhim ogoh kuned.",
+'proxyblocksuccess' => 'Ançom şud.',
+'sorbsreason' => 'Nişonai IP-i şumo hamcun jak proksiji kuşoda dar DNSBL fehrist şudaast, ki az tarafi {{SITENAME}} istifoda meşavad.',
+'sorbs_create_account_reason' => 'Nişonai IP-i şumo hamcun proksiji kuşoda dar DNSBL, ki az tarafi {{SITENAME}} istifoda meşavad, fehrist şudaast. Şumo nametavoned hisobi korabariero eçod kuned',
+
+# Developer tools
+'lockdb' => 'Qufl kardani pojgohi doda',
+'unlockdb' => 'Az qufl boz kardani pojgohi doda',
+'lockdbtext' => "Qufl kardani pojgohi doda imkoni viroişi sahifaho, taƣjiri tanzimot, viroişi pajgiriho va sajri taƣjirotero, ki nijozmandi taƣjire dar pojgohi doda ast, az hama korbaron mavquf mekunad.
+Lutfan ta'jid kuned, ki daqiqatan in korro mexohed, va dar avvalin fursat pojgohi dodaro az holati qufl şudan xoriç xohed kard.",
+'unlockdbtext' => "Az qufl boz kardani pojgohi doda ba tamomi korbaron içozat medihad, ki tavonoiji viroişi sahifaho, taƣjiri tarçihotaşon, viroişi fehristi pajgirihojaşon, va har taƣjiri digare, ki nijozmandi taƣjire dar pojgohi doda budaro dubora ba dast biovarand.
+Lutfan ta'jid kuned, ki hamin korro mexohed ançom dihed.",
+'lockconfirm' => 'Bale, man dar haqiqat mexoham pojgohi dodaro qufl kunam.',
+'unlockconfirm' => 'Bale, man dar haqiqat mexoham pojgohi dodaro az qufl kuşojam.',
+'lockbtn' => 'Qufl kardani pojgohi doda',
+'unlockbtn' => 'Az qufl boz kardani pojgohi doda',
+'locknoconfirm' => 'Şumo ba quttiji tasdiq qajd naguzoşted.',
+'lockdbsuccesssub' => 'Qufl kardani pojgohi doda bo muvaffaqijat ançom şud',
+'unlockdbsuccesssub' => 'Qufli pojgohi doda bardoşta şud',
+'lockdbsuccesstext' => 'Pojgohi doda qufl şud.<br />
+Faromūş nakuned, ki pas az itmomi nigohdorī [[Special:UnlockDB|quflro bardored]].',
+'unlockdbsuccesstext' => 'Pojgohi doda az qufl boz şud.',
+'lockfilenotwritable' => 'Parvandai qufli doda naviştanī nest. Baroi on ki bitavoned, pojgohi dodaro qufl jo boz kuned, in parvanda bojad az tarafi korguzor naviştanī boşad.',
+'databasenotlocked' => 'Pojgohi doda qufl nest.',
+
+# Move page
+'move-page' => 'Intiqol $1',
+'move-page-legend' => 'Kūconidani sahifa',
+'movepagetext' => "Bo istifodai az formai zerin nomi sahifa taƣjir xohad şud, va tamomi ta'rixaş ba nomi çadid kūconida xohad şud.
+Unvoni peşina tabdil ba jak sahifai masir ba unvoni çadid xohad şud.
+Pajvandho ba unvoni peşinai sahifa taƣjir naxohand kard; hatman taƣjiri masirhoi [[Special:DoubleRedirects|dutoī]] jo [[Special:BrokenRedirects|şikastaro]] barrasi kuned.
+Şumo mas'ul itminon hasted ki in pajvandho hanūz ba hamon çoe ki qaror ast biravand.
+
+Tavaççūh kuned, ki agar sahifae dar unvoni çadid vuçud doşta boşad sahifa kūconida '''naxohad şud''', magar in ki sahifa xolī jo taƣjiri masir boşad va ta'rixi viroişi nadoşta boşad.
+In ja'ne iştiboh agar iştiboh karded metavoned sahifaro ba hamon çoe ki az on kūconida şuda bud bargardoned, va in ki nametavoned rūi sahifahoi mavçudbuda binavised.
+
+'''HUŞDOR!'''
+Kūconidani sahifaho ba nomi çadid mumkin ast taƣjiri asosī va ƣajrimuntazire baroi sahifahoi maşhur boşad;
+lutfan mutmain şaved ki peş az kūconidani sahifa, oqibati in korro dark mekuned.",
+'movepagetalktext' => "Sahifai bahsi marbuta, agar vuçud doşta boşad, ba tavri xudkorī hamroh bo maqolai aslī kūconida xohad şud '''magar inki:'''
+
+*jak sahifai bahsi ƣajrixolī tahti in nomi çadid vuçud doşta boşad, jo
+*ça'bai zerro tik nazada boşed.
+
+Dar on holatho, sahifaro bojad ba tavri dastī kūconid va jo du sahifaro bo viroiş jak kuned.",
+'movearticle' => 'Kūconidani sahifa:',
+'movenologin' => 'Vurud naşudaed',
+'movenologintext' => 'Baroi kūconidani sahifa şumo bojad korbari sabtşuda va [[Special:UserLogin|ba sistem vurudşuda]] boşed.',
+'movenotallowedfile' => 'Şumo içozati intiqoli parvandahoro nadored.',
+'cant-move-user-page' => 'Şumo içozat nadored sahifahoi korbariji sarşoxaro intiqol dihed.',
+'cant-move-to-user-page' => 'Şumo içozat nadored, ki jak sahifaro ba jak sahifai korbar dihed (ba istisnoi zersahifahoi korbarī)',
+'newtitle' => 'Ba unvoni çadid:',
+'move-watch' => 'Nazar kardani in sahifa',
+'movepagebtn' => 'Kūconidani sahifa',
+'pagemovedsub' => 'Kūconiş bomuvaffaqijat ançom joft',
+'movepage-moved' => '\'\'\'"$1" ba "$2" kūconida şud\'\'\'',
+'movepage-moved-redirect' => 'Jak taƣjiri masir eçod şud.',
+'movepage-moved-noredirect' => "Az eçodi taƣjiri masir ma'moniat şud.",
+'articleexists' => "Sahifae bo in nom vuçud nadorad, jo nome, ki intixob kardaed mū'tabar nest.
+Lutfan nomi digarero intixob namoed.",
+'cantmove-titleprotected' => 'Şumo nametavoned in sahifaro ba in nişona kūconed, baroi on, ki unvoni çadid az eçod kardan muhofizat şudaast',
+'talkexists' => "'''Sahifa bo muvafaqqijat xudaş kūconida şud, vale sahifai bahsro, ba in dalel ki sahifai bahse dar unvoni çadid vuçud dorad, kūconida nameşavad. Lutfan onhoro dastī tarkib kuned.'''",
+'movedto' => 'kūconidaşuda ba',
+'movetalk' => 'Sahifai bahsi aloqamand ham kūconida şavad',
+'move-subpages' => 'Intiqoli zersahifahoi (to jak $1 adad)',
+'move-talk-subpages' => 'Zersahifahoro ba sahifai bahs intiqol dihed (to $1 adad)',
+'movepage-page-exists' => 'Sahifai $1 az qabl vuçud dorad va nametavonad ba tavri xudkor çojguzin şavad.',
+'movepage-page-moved' => 'Sahifai $1 ba $2 intiqol joft.',
+'movepage-page-unmoved' => 'Sahifai $1 nametavonad ba $2 intiqol doda şavad.',
+'movepage-max-pages' => 'Hadi aksar $1 {{PLURAL:$1|sahifa|sahifaho}} intiqol doda şud va sahifahoi digarro nametavon ba tavri xudkor muntaqil kard.',
+'1movedto2' => '[[$1]] ba [[$2]] kūconida şudaast',
+'1movedto2_redir' => '[[$1]] ba [[$2]], ki qabalan taƣjiri masit bud, kūconida şud',
+'move-redirect-suppressed' => 'taƣjiri masir furūnişonda şud',
+'movelogpage' => 'Kūconidani guzoriş',
+'movelogpagetext' => 'Dar zer fehristi sahifahoi kūconidaşud omada ast.',
+'movesubpage' => '{{PLURAL:$1|Zersahifa|Zersahifaho}}',
+'movereason' => 'Sabab:',
+'revertmove' => 'vogardonī',
+'delete_and_move' => 'Hazf va kūconidan',
+'delete_and_move_text' => '==Nijoz ba hazf==
+
+Maqolai maqsad "[[:$1]]" vuçud dorad. Ojo mexohed onro hazf kuned to intiqol mumkin şavad?',
+'delete_and_move_confirm' => 'Bale, sahifa hazf şavad',
+'delete_and_move_reason' => 'Hazf şud baroi mumkin şudani kūconidan',
+'selfmove' => "Unvonhoi manba' va maqsad jakxela meboşad; kūconidani sahifa ba xudaş mumkin nest.",
+'immobile-source-page' => 'In sahifa kūconidaşavanda nest.',
+
+# Export
+'export' => 'Suduri sahifaho',
+'exporttext' => "Şumo metavoned matn va ta'rixi viroişi jak sahifai muşaxxas jo maçmūi az sahifahoro ba şakli pūşida dar XML sodir kuned. In ittilootro metavon dar vikiji digare, ki narmfazori MediaVikiro istifoda mekunad tariqi [[Special:Import|sahifai voridot]] vorid kard, va jo baroi sargarmiji şaxsī nigoh doşt.
+
+Baroi sodir kardani sahifaho, unvonhoi onhoro dar çab'i matniji zer doxil kuned, jak unvon dar har satr, va xohişi nusxai kununī jo nusxahoi kūhnai sahifaro bo satrhoi ta'rixi sahifa, jo faqat nusxai oxirin bo ittiloot dar borai viroişi oxirro intixob kuned.
+
+Dar holati oxir şumo metavoned pajvandero istifoda bared, namuna. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ba sahifai \"[[{{MediaWiki:Mainpage}}]]\".",
+'exportcuronly' => "Faqat nusxai fe'lro dar bar bigir, na kulli ta'rixca",
+'exportnohistory' => "----
+'''Tavaççūh:''' Imkoni suduri ta'rixcai komili sahifaho az tariqi in sahifa ba sababhoi içroī az kor andoxta şudaast.",
+'export-submit' => 'Sudur',
+'export-addcattext' => 'Ilova kardani sahifaho az gurūh:',
+'export-addcat' => 'Ilova kardan',
+'export-addnstext' => 'Ilovai sahifahoi az fazoi nomi:',
+'export-addns' => 'Ilova kardan',
+'export-download' => 'Peşnihodi zaxira kardan ba surati parvanda',
+'export-templates' => 'Dar bar giriftani şablonho',
+
+# Namespace 8 related
+'allmessages' => 'Pajjomhoi sistemavī',
+'allmessagesname' => 'Nom',
+'allmessagesdefault' => 'Matni qarordodī',
+'allmessagescurrent' => 'Matni kununī',
+'allmessagestext' => 'In fehristi pajomhoi sistemaviji dastras dar fazoi nomi MediaWiki meboşad.
+Agar majli hissaguzorī kardanro ba mahallikunoniji MediaWiki dored, pas lutan sahifahoi [http://www.mediawiki.org/wiki/Localisation Mahallikunoniji MediaWiki] va [http://translatewiki.net translatewiki.net] nigared.',
+'allmessagesnotsupportedDB' => "Az in sahifa nametavon istifoda burd, cun '''\$wgUseDatabaseMessages''' ƣajrifa'ol gardonida şudaast.",
+'allmessages-filter-legend' => 'Filtr',
+'allmessages-filter-all' => 'Hama',
+'allmessages-language' => 'Zabon:',
+'allmessages-filter-submit' => 'Raftan',
+
+# Thumbnails
+'thumbnail-more' => 'Buzurg şavad',
+'filemissing' => 'Parvanda vuçud nadorad',
+'thumbnail_error' => 'Xato dar eçodi anguştdona: $1',
+'djvu_page_error' => 'Sahifai DjVu xoriç az hududi saf',
+'djvu_no_xml' => 'Baroi istifodai XML imkoni pajdo kardani parvandai DjVu vuçud nadoşt',
+'thumbnail_invalid_params' => "Parametrhoi nomū'tabar dar anguştdonai aks",
+'thumbnail_dest_directory' => 'Işkol dar eçodi pūşai maqsad',
+
+# Special:Import
+'import' => 'Vorid kardani sahifaho',
+'importinterwiki' => 'Voridoti transviki',
+'import-interwiki-text' => "Jak viki va jak nomi sahifaro intixob kuned, to ittiloot az on vorid şavad.
+Ta'rixi nusxaho va nomhoi viroişkunandagon sabt xohand mond.
+Ittilooti marbut ba vorid kardani sahifaho dar [[Special:Log/import|guzorişhoi voridot]] sabt xohad şud.",
+'import-interwiki-history' => "Tamomi ta'rixi nusxahoi in sahifa intiqol doda şavad",
+'import-interwiki-submit' => 'Vorid şavad',
+'import-interwiki-namespace' => 'Fazoi nomi maqsad:',
+'import-upload-filename' => 'Nomi parvanda:',
+'import-comment' => 'Tavzeh:',
+'importtext' => "Lutfan parvandaro az viki manba' sodir kuned, az tariqi sahifa [[Special:Export|abzori sodirot]].
+Pas onro ba kompjuteraton zaxira karda inço borguzorī kuned.",
+'importstart' => 'Dar holi vorid kardani sahifaho...',
+'import-revision-count' => '$1 {{PLURAL:$1|viroiş|viroiş}}',
+'importnopages' => 'Sahifaho baroi vorid kardan nest.',
+'importfailed' => 'Vorid kardani sahifaho şikast xūrd: $1',
+'importunknownsource' => "Nav'i manbai noma'lum baroi voridkuni",
+'importcantopen' => 'Parvandai vurudi sahifaho boz naşud',
+'importbadinterwiki' => 'Pajvandi bajniviki nodurust',
+'importnotext' => 'Sahifa xolī jo be matn',
+'importsuccess' => 'Vorid kardan bo muvaffaqijat ançom joft!',
+'importhistoryconflict' => "Nusxahoi nosozgor az ta'rixcai in sahifa vuçud dorad (ehtimolan qablan in sahifa vorid şudaast)",
+'importnosources' => "Heç manba'e baroi vorid kardani ittiloot az vikiji digar ta'rif naşudaast va borguzoriji bevositai ta'rix ƣajrifa'ol ast.",
+'importnofile' => 'Heç parvandai vurudi borguzorī naşudaast.',
+'importuploaderrorsize' => 'Dar borguzoriji parvandai vurud, işkole rux dod. Andozai parvanda kalontar az andozai içozatşuda ba borzuorī ast.',
+'importuploaderrorpartial' => 'Dar borguzoriji parvandai vurud, işkole rux dod. Parvanda faqat qisman borguzori şudaast.',
+'importuploaderrortemp' => 'Dar borguzoriji parvandai vurud, işkole rux dod. Pūşai muvaqqatī pajdo naşud.',
+'import-parse-failure' => 'Xato dar tahlili XML borguzorişuda',
+'import-noarticle' => 'Sahifae baroi borguzorī vuçud nadorad!',
+'import-nonewrevisions' => 'Tamomi sahifaho qablan borguzorī şudaand.',
+'xml-error-string' => '$1 dar satri $2, sutuni $3 ($4 bajt): $5',
+'import-token-mismatch' => "Dodahoi nişasti korbarī az dast raft. Lutfan dubora sa'j kuned.",
+'import-invalid-interwiki' => 'Az vikiji muşaxxasşuda nametavon voridot kard.',
+
+# Import log
+'importlogpage' => 'Voridi guzorişho',
+'importlogpagetext' => "Vorid kardani sahifaho bo hamrohi ta'rixcai viroişi onho az vikihoi digar.",
+'import-logentry-upload' => '[[$1]] az tariqi borguzoriji parvanda, vorid şud',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|nusxa|nusxa}}',
+'import-logentry-interwiki' => '$1 transvikişuda',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|nusxa|nusxa}} az $2',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Sahifai korbariji şumo',
+'tooltip-pt-anonuserpage' => 'Sahifai korbari IP, ki bo on şumo viroiş mekuned',
+'tooltip-pt-mytalk' => 'Sahifai bahsi şumo',
+'tooltip-pt-anontalk' => 'Bahsi piromuni viroişho az in nişonai IP',
+'tooltip-pt-preferences' => 'Tarçihoti man',
+'tooltip-pt-watchlist' => 'Rūjxati sahifahoe, ki taƣjirothojaşonro Şumo nazorat mekuned',
+'tooltip-pt-mycontris' => 'Fehristi hissaguzorihoi şumo',
+'tooltip-pt-login' => 'Tavsija meşavad ki ba sistem vorid şavad, lekin içborī nest.',
+'tooltip-pt-anonlogin' => 'Ba şumo tavzeh meşavad, ki ba sistem vorid şaved, lekin in içborī nest.',
+'tooltip-pt-logout' => 'Xuruç az sistem',
+'tooltip-ca-talk' => 'Bahsi matni tarkibiji in sahifa',
+'tooltip-ca-edit' => 'Şumo in sahifaro viroiş karda metavoned. Peş az zaxira kardani sahifa peşnamoişro istifoda bared.',
+'tooltip-ca-addsection' => 'Ilova kardani baxşi çadid',
+'tooltip-ca-viewsource' => 'In sahifa hifz karda şudaast. Şumo tanho tarkibi onro dida metavoned.',
+'tooltip-ca-history' => 'Nusxai oxirini in sahifa.',
+'tooltip-ca-protect' => 'Hifz namudani in sahifa',
+'tooltip-ca-delete' => 'In sahifaro hazf kuned',
+'tooltip-ca-undelete' => 'Bozgardonidani nusxahoi sahifahoi hazfşuda',
+'tooltip-ca-move' => 'Kūconidani in sahifa',
+'tooltip-ca-watch' => 'In sahifaro metavoned ba fehristi nazaroti xud doxil kuned',
+'tooltip-ca-unwatch' => 'Girifta partoftani in sahifa az fehristi nazaroti Şumo',
+'tooltip-search' => 'Çustuçūi {{SITENAME}}',
+'tooltip-search-go' => 'Guzaştan ba sahifae, ki ajnan cunin nom dorad, agar vuçud doşta boşad',
+'tooltip-search-fulltext' => 'Çustuçūi sahifahoe, ki cunin matn dorand',
+'tooltip-p-logo' => 'Sahifai Aslī',
+'tooltip-n-mainpage' => 'Guzaştan ba Sahifai Aslī',
+'tooltip-n-mainpage-description' => 'Muşohidai sahifai aslī',
+'tooltip-n-portal' => 'Dar borai loiha va ci korhoro metavoned kard',
+'tooltip-n-currentevents' => 'Joftani ittilooti peşzamina peromuni voqeahoi kununī',
+'tooltip-n-recentchanges' => 'Rūjxati taƣjirotho dar Vikipedia',
+'tooltip-n-randompage' => 'Ovardani jak sahifai tasodufī',
+'tooltip-n-help' => 'Guzaştan ba Rohnamo.',
+'tooltip-t-whatlinkshere' => 'Rūjxati hamai sahifahoe, ki ba in sahifa pajvand dorand',
+'tooltip-t-recentchangeslinked' => 'Taƣjiroti oxir in sahifahoe, ki in sahifa ba onho pajvand dorad',
+'tooltip-feed-rss' => 'Xabarnomai RSS baroi in sahifa',
+'tooltip-feed-atom' => 'Xabarnomai Atom baroi in sahifa',
+'tooltip-t-contributions' => 'Muşohidai fehristi hissaguzorihoi in korbar',
+'tooltip-t-emailuser' => 'Firistodani poctai elektronī ba in korbar',
+'tooltip-t-upload' => 'Firistodani parvandaho',
+'tooltip-t-specialpages' => 'Rūixati hamai sahifahoi viƶa',
+'tooltip-t-print' => 'Nusxai copiji in sahifa',
+'tooltip-t-permalink' => 'Pajvandi doimī ba in nusxa az in sahifa',
+'tooltip-ca-nstab-main' => 'Didani sahifai mūhtavijot',
+'tooltip-ca-nstab-user' => 'Namoişi sahifai korbar',
+'tooltip-ca-nstab-media' => 'Didani sahifai rasona',
+'tooltip-ca-nstab-special' => 'In sahifai maxsus meboşad, Şumo onro viroiş karda nametavoned',
+'tooltip-ca-nstab-project' => 'Namoişi sahifai loiha',
+'tooltip-ca-nstab-image' => 'Didani sahifai parvanda',
+'tooltip-ca-nstab-mediawiki' => 'Didani pajƣomi sistemavī',
+'tooltip-ca-nstab-template' => 'Namoişi şablon',
+'tooltip-ca-nstab-help' => 'Namoişi sahifai rohnamo',
+'tooltip-ca-nstab-category' => 'Namoişi sahifai gurūh',
+'tooltip-minoredit' => 'Inro hamcun viroişi xurd qajd namudan',
+'tooltip-save' => 'Zaxira namudani taƣjirothoi xud',
+'tooltip-preview' => 'Taƣjiroti xudro peşnamoiş kuned, lutfan in amalro peş az zaxira kardan istifoda kuned!',
+'tooltip-diff' => 'Namoişi taƣjirothoe, ki Şumo bo matn kardaed',
+'tooltip-compareselectedversions' => 'Namoişi farqijati bajni du nusxai intixobkardaşudai in sahifa.',
+'tooltip-watch' => 'In sahifaro ba rūixatī nazaroti xud ilova kuned',
+'tooltip-recreate' => 'Eçodi duborai sahifai sarfi nazar az hazf şudani qabliji on',
+'tooltip-upload' => "Şurū' ba borguzorī",
+'tooltip-rollback' => '"Vogard" viroiş(ho)ro ba in sahifai oxirin hissaguzor bo jak klik megardonad',
+'tooltip-undo' => '"Botil" in viroişro botil mekunad va formi viroişro dar holati peşnamoiş boz mekunad.
+In imkoni ilova kardani jak sababero dar xulosa medihad.',
+
+# Metadata
+'nodublincore' => "Metadoda Dublin Core RDF baroi in korguzor ƣajri fa'ol şudaast.",
+'nocreativecommons' => "Metadodai Creative Commons RDF baroi in korguzor ƣajri fa'ol şudaast.",
+'notacceptable' => 'Korguzori in viki az irsoli doda ba şakle ki barnomai şumo bitavonad namoiş dihad, peşkaş karda nametavonad.',
+
+# Attribution
+'anonymous' => '{{PLURAL:$1|korbari|korbaroni}} gumnomī {{SITENAME}}',
+'siteuser' => 'Vikipedia user $1',
+'lastmodifiedatby' => 'In sahifa oxirin marotiba dar $2, $1 az tarafi $3 taƣjir doda şudaast.',
+'othercontribs' => 'Dar asosi kore az tarafi $1.',
+'others' => 'digaron',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|korbar|korbaron}} $1',
+'creditspage' => "E'tiboroti in sahifa",
+'nocredits' => 'Ittilooti sozandagoni in sahifa mavçud nest.',
+
+# Spam protection
+'spamprotectiontitle' => 'Filtri muhofizat az spam',
+'spamprotectiontext' => 'Sahifae ki şumo mexohed zaxira kuned az tarafi filtiri spam basta şud.
+Ehtimolan in az sababi dar bar giriftani pajvandi beruna ba somonai xoriçiji ba fehristi sijoh ilovaşuda boşad.',
+'spamprotectionmatch' => 'Matni zer cize ast, ki filtri (spam) harzanigoriji moro ba kor andoxt: $1',
+'spambot_username' => 'Spamtozakuni MediaViki',
+'spam_reverting' => 'Vogardoni ba oxirin nusxae, ki pajvande ba $1 nadorad',
+'spam_blanking' => 'Hamai nusxahoi pajvandho $1 doştan, dar holi xolī kardan',
+
+# Info page
+'infosubtitle' => 'Ittiloot dar mavridi sahifa',
+'numedits' => "Te'dodi viroişho (sahifa): $1",
+'numtalkedits' => "Te'dodi viroişho (sahifai bahs): $1",
+'numwatchers' => 'Şumorai pajgirikunandagon: $1',
+'numauthors' => "Te'dodi muallifoni muxtalif (maqola): $1",
+'numtalkauthors' => "Te'dodi muallifoni muxtalif (sahifai bahs): $1",
+
+# Math options
+'mw_math_png' => 'Hameşa PNG kaşida şavad',
+'mw_math_simple' => 'Agar xele sodda HTML vagarna PNG',
+'mw_math_html' => 'Az rūi imkon HTML vagarna PNG',
+'mw_math_source' => 'Hamcun TeX boqī bimon (baroi mururgarhoi matnī)',
+'mw_math_modern' => 'Tavseh şuda baroi mururgarhoi zamonavī',
+'mw_math_mathml' => 'Istifoda az MathML dar surati imkon (ozmoişī)',
+
+# Math errors
+'math_failure' => 'Şikast dar taçzeh',
+'math_unknown_error' => 'xatoi noşinos',
+'math_unknown_function' => "amali noma'lum",
+'math_lexing_error' => 'xatoi lexing',
+'math_syntax_error' => 'xatoi nahvī',
+'math_image_error' => 'Tabdil ba PNG şikast xūr; nasbi durusti latex, dvips, gs, va tabdilotro barrasī kuned',
+'math_bad_tmpdir' => 'Imkoni eçod jo navistani ittiloot dar pūşai muvaqqatiji rijozī (temp) vuçud nadorad',
+'math_bad_output' => 'Imkoni eçod jo navistani ittiloot dar pūşai xuruçiji rijozī (output) vuçud nadorad',
+'math_notexvc' => 'Barnomai icroiji texvc mavçud nest; baroi ittilooti beştar ba math/README nigared.',
+
+# Patrolling
+'markaspatrolleddiff' => 'Ba unvoni barrasişuda alomat bizan',
+'markaspatrolledtext' => 'In maqolaro ba unvoni barrasişuda alomat bizan',
+'markedaspatrolled' => 'Ba unvoni barrasişuda alomat zada şud',
+'markedaspatrolledtext' => 'Nusxai intixobşuda ba unvoni barrasişuda alomat zada şud.',
+'rcpatroldisabled' => "Barrasiji Taƣjiroti Oxir fa'ol nest",
+'rcpatroldisabledtext' => "Imkoni Barrasiji Taƣjiroti Oxir dar holi hozir ƣajrifa'ol ast.",
+'markedaspatrollederror' => 'Alomati barrasī zada naşud',
+'markedaspatrollederrortext' => 'Bojad jak nusxaro muşaxxas kuned to barcasb ba unvoni barrasişuda alomat bixūrad.',
+'markedaspatrollederror-noautopatrol' => 'Şumo nametavoned ba taƣjiroti ançom şuda tavassuti xudaton alomati barrasī bizaned.',
+
+# Patrol log
+'patrol-log-page' => 'Guzorişhoi nigahbonī',
+'patrol-log-line' => '$1 az $2-ro ba surati posbonişuda alomat zad $3',
+'patrol-log-auto' => '(xudkor)',
+
+# Image deletion
+'deletedrevision' => 'Nusxai hazfşudai kūhnai $1',
+'filedeleteerror-short' => 'Xato dar hazfi parvanda: $1',
+'filedeleteerror-long' => 'Dar zamoni hazfi parvanda xatoe rux dod:
+
+$1',
+'filedelete-missing' => 'Parvandai "$1" qobili hazf nest, cun parvandae bo in nom vuçud nadorad.',
+'filedelete-old-unregistered' => 'Nusxai parvandai "$1" dar po1is nojgohi doda vuçud nadorad.',
+'filedelete-current-unregistered' => 'Parvandae bo nomi "$1" dar pojgohi doda mavçud nest.',
+'filedelete-archive-read-only' => 'Imkoni naviştan dar pūşai "$1" vuçud nadorad.',
+
+# Browsing diffs
+'previousdiff' => '← Viroişoti kūhnatar',
+'nextdiff' => 'Tafovuti navtar →',
+
+# Media information
+'mediawarning' => "'''Huşdor''': In parvanda mumkin ast ramzhoi badqasdro dar bar girad.
+Bo içroi on, sistemai şumo şojad oseb bubinad.",
+'thumbsize' => 'Andozai anguştdona (thumbnail):',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sahifa|sahifaho}}',
+'file-info' => "(andozai parvanda: $1, nav'i MIME: $2)",
+'file-info-size' => "($1 × $2 piksel, haçmi parvanda: $3, nav'i MIME: $4)",
+'file-nohires' => '<small>Nusxai haçman va sifatan balandtar dastras nest.</small>',
+'svg-long-desc' => '(SVG parvanda, ismī $1 × $2 piksel, andozai parvanda: $3)',
+'show-big-image' => 'Aksi purra',
+'show-big-image-thumb' => '<small>Andozai in peşnamoiş: $1 × $2 piksel</small>',
+
+# Special:NewFiles
+'newimages' => 'Namoişgohi parvandahoi çadid',
+'imagelisttext' => "Dar zer fehristi '''$1''' {{PLURAL:$1|parvandai|parvandahoi}} ba tartib ovarda şuda, omadaast $2.",
+'newimages-summary' => 'In sahifai viƶa oxirin parvandahoi borşudaro namoiş medihad.',
+'newimages-legend' => 'Filtr',
+'showhidebots' => '($1 botho)',
+'noimages' => 'Cize baroi didan nest.',
+'ilsubmit' => 'Çustuçūi',
+'bydate' => 'az rūi sana',
+'sp-newimages-showfrom' => "Nişon dodani akshoi nav şurū' az $2, $1",
+
+# Bad image list
+'bad_image_list' => "Ittilootro bojad bo in şakl vorid kuned:
+
+Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajvand dar har satr, bojad pajvande ba jak tasvir va jo aksi bad boşad. Pajvandhoi ba'dī dar hamon satr, ba unvoni mavridi istisno ba nazar girifta meşavad.",
+
+# Metadata
+'metadata' => 'Metadoda',
+'metadata-help' => "In parvanda ittilooti ilovagiro dar bar megirad, ehtimol az aksbardoraki raqamī jo skaner dar vaqti soxtan va raqamī kardan, ilova şudaast. Agar parvanda az vaz'ijati ibtidoiaş taƣjir doda boşad, mumkin ast, şarhu tafsiloti mavçudi ittilooti aksro tamoman boztob nadihad.",
+'metadata-expand' => "Namoişi çuz'ijoti tafsilī",
+'metadata-collapse' => "Pinhon kardani çuz'ijoti tafsilī",
+'metadata-fields' => "EXIF fosilahoi dodaho, ki dar in pajom ovarda şudaand dar çadvali aks çam' şuda boşand ham, namoiş doda xohand şud. Baqija onho tanho dar vaqti boz kardani çadval nişon doda xohand şud.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength",
+
+# EXIF tags
+'exif-imagewidth' => "Vase'ī",
+'exif-imagelength' => 'Balandī',
+'exif-bitspersample' => "Nuqta dar har çuz'",
+'exif-compression' => 'Tarhi fişurdasozī',
+'exif-photometricinterpretation' => 'Tarkibi nuqot',
+'exif-orientation' => 'Çihatjobī',
+'exif-samplesperpixel' => "Te'dodi qismho",
+'exif-planarconfiguration' => 'Tartibi dodaho',
+'exif-ycbcrsubsampling' => 'Nisbati zernamunai Y ba C',
+'exif-ycbcrpositioning' => 'Mavqeijati Y va C',
+'exif-xresolution' => 'Tahlilpaziriji ufuqī',
+'exif-yresolution' => 'Tahlilpaziriji amudī',
+'exif-resolutionunit' => 'Vohidi tafkikpaziriji X va Y',
+'exif-stripoffsets' => 'Çojgohi dodahoi aks',
+'exif-rowsperstrip' => "Te'dodi radifho dar har navor",
+'exif-stripbytecounts' => 'Bajt dar har navori fişurda',
+'exif-jpeginterchangeformat' => "Çab'ai çoji nisbat ba JPEG SOI",
+'exif-jpeginterchangeformatlength' => 'Bajt dodai JPEG',
+'exif-transferfunction' => 'Tobeijati tabdil',
+'exif-whitepoint' => 'Ranginagiji nuqtai safed',
+'exif-primarychromaticities' => 'Rangpaziriji avvalijatho',
+'exif-ycbcrcoefficients' => 'Zarbkunandahoi matrisi tabdili fazoi rang',
+'exif-referenceblackwhite' => 'Çufti qimmati muroçiai sijoh va safed',
+'exif-datetime' => "Ta'rix va vaqti taƣjiri parvanda",
+'exif-imagedescription' => 'Unvoni aks',
+'exif-make' => 'Şirkati sozandai aksbardorak',
+'exif-model' => 'Modeli aksbardorak',
+'exif-software' => 'Narmafzori istifodaşuda',
+'exif-artist' => 'Muallif',
+'exif-copyright' => 'Dorandai haqqi taksir',
+'exif-exifversion' => 'Nusxai exif',
+'exif-flashpixversion' => 'Nusxai puştibonişudai Flashpix',
+'exif-colorspace' => 'Fazoi rang',
+'exif-componentsconfiguration' => "Ma'niji har jak az qismho",
+'exif-compressedbitsperpixel' => 'Holati fişurdasoziji aks',
+'exif-pixelydimension' => "Arzi aksi mū'tabar",
+'exif-pixelxdimension' => "Tūli aksi mū'tabar",
+'exif-makernote' => 'Tavzehoti şirkati sozanda',
+'exif-usercomment' => 'Tavzehoti korbar',
+'exif-relatedsoundfile' => 'Parvandai sabti aloqamand',
+'exif-datetimeoriginal' => "Ta'rix va vaqti tavlidi dodaho",
+'exif-datetimedigitized' => "Ta'rix va zamoni raqamī(diçitalī) şudan",
+'exif-subsectime' => "Kasri sonijai ta'rix va zamon",
+'exif-subsectimeoriginal' => 'Kasri sonijai zamoni aslī',
+'exif-subsectimedigitized' => 'Kasri sonijai zamoni raqamī(diçitalī) şuda',
+'exif-exposuretime' => 'Zamoni nurdihī',
+'exif-exposuretime-format' => '$1 sonija ($2)',
+'exif-fnumber' => 'F Raqam',
+'exif-exposureprogram' => 'Barnomai Nurdihī',
+'exif-spectralsensitivity' => 'Hasosijati tifī',
+'exif-isospeedratings' => "Daraçabandiji sur'ati ISO",
+'exif-oecf' => 'Amali tabdili nurī-elektronī',
+'exif-shutterspeedvalue' => "Sur'ati parda",
+'exif-aperturevalue' => 'Andozai diafragm',
+'exif-brightnessvalue' => 'Ravşanī',
+'exif-exposurebiasvalue' => 'Xatoi nurdihī',
+'exif-maxaperturevalue' => 'Haddi aksar kuşodagiji zamin',
+'exif-subjectdistance' => 'Fosilai çism',
+'exif-meteringmode' => 'Holati sançişi fosila',
+'exif-lightsource' => 'Manbai nur',
+'exif-flash' => 'Fleş',
+'exif-focallength' => 'Fosilai markaziji adasī',
+'exif-subjectarea' => 'Masohati çism',
+'exif-flashenergy' => 'Qudrati fleş',
+'exif-spatialfrequencyresponse' => 'Posuxi fosilai fazogī',
+'exif-focalplanexresolution' => 'Safhai markaziji X tafkikpazirī',
+'exif-focalplaneyresolution' => 'Safhai markaziji Y tafkikpazirī',
+'exif-focalplaneresolutionunit' => 'Vohidi tafkikpaziriji safhai markazī',
+'exif-subjectlocation' => 'Makoni çism',
+'exif-exposureindex' => 'Şoxisi nurdihī',
+'exif-sensingmethod' => 'Ravişi hisgarī',
+'exif-filesource' => 'Manbai parvanda',
+'exif-scenetype' => "Nav'i sahna",
+'exif-cfapattern' => 'Qolabi CFA',
+'exif-customrendered' => 'Pardozişi aks',
+'exif-exposuremode' => 'Holati nurdihī',
+'exif-whitebalance' => 'Muvozinai rangi safed',
+'exif-digitalzoomratio' => 'Nisbati taƣjirdihiji raqamiji miqjosi aks (digital zoom)',
+'exif-focallengthin35mmfilm' => 'Fosilai markazī baroi filmi 35 mm',
+'exif-scenecapturetype' => "Nav'i sabti sahna",
+'exif-gaincontrol' => 'Tanzimi sahna',
+'exif-contrast' => 'Kontrast',
+'exif-saturation' => 'Serobşavī',
+'exif-sharpness' => 'Rūşanī',
+'exif-devicesettingdescription' => 'Şarhi tanzimoti dastgoh',
+'exif-subjectdistancerange' => 'Hududi fosilai çism',
+'exif-imageuniqueid' => 'Şinosai jagonai aks',
+'exif-gpsversionid' => 'Nusxai barcasbi ÇPS',
+'exif-gpslatituderef' => 'Arzi çuƣrofiji şimolī jo çanubī',
+'exif-gpslatitude' => 'Arzi çuƣrofī',
+'exif-gpslongituderef' => 'Tūli çuƣrofiji şarqī jo ƣarbī',
+'exif-gpslongitude' => 'Tūli çuƣrofī',
+'exif-gpsaltituderef' => 'Nuqtai muroçiai faroz',
+'exif-gpsaltitude' => 'Faroz',
+'exif-gpstimestamp' => 'Vaqti ÇPS (soati atomī)',
+'exif-gpssatellites' => 'Mohvorahoi istifodaşuda baroi andozagirī',
+'exif-gpsstatus' => "Vaz'ijati giranda",
+'exif-gpsmeasuremode' => 'Holati andozagirī',
+'exif-gpsdop' => 'Diqqati andozagirī',
+'exif-gpsspeedref' => "Vohidi sur'at",
+'exif-gpsspeed' => "Sur'ati girandai ÇPS",
+'exif-gpstrackref' => 'Muroçia baroi samti harakat',
+'exif-gpstrack' => 'Samti harakat',
+'exif-gpsimgdirectionref' => 'Muroçia baroi samti aks',
+'exif-gpsimgdirection' => 'Samti aks',
+'exif-gpsmapdatum' => 'Ittilooti naqşabardoriji Geodetic istifoda şudaast',
+'exif-gpsdestlatituderef' => 'Muroçia baroi arzi çuƣrofiji maqsad',
+'exif-gpsdestlatitude' => 'Arzi çuƣrofiji maqsad',
+'exif-gpsdestlongituderef' => 'Muroçia baroi tūli çuƣrofiji maqsad',
+'exif-gpsdestlongitude' => 'Tūli çuƣrofiji maqsad',
+'exif-gpsdestbearingref' => 'Muroçia baroi samti maqsad',
+'exif-gpsdestbearing' => 'Samti maqsad',
+'exif-gpsdestdistanceref' => 'Muroçia baroi fosila to maqsad',
+'exif-gpsdestdistance' => 'Fosila to maqsad',
+'exif-gpsprocessingmethod' => 'Nomi raviş pardozişi ÇPS',
+'exif-gpsareainformation' => 'Nomi masohati ÇPS',
+'exif-gpsdatestamp' => "Ta'rixi ÇPS",
+'exif-gpsdifferential' => "Tashehi çuz'iji ÇPS",
+
+# EXIF attributes
+'exif-compression-1' => 'Ƣajrifişurda',
+
+'exif-unknowndate' => "Ta'rixi noma'lum",
+
+'exif-orientation-1' => 'Oddī',
+'exif-orientation-2' => 'Ufuqī puşturū şuda',
+'exif-orientation-3' => '180° daraça carxida',
+'exif-orientation-4' => 'Amudī puşturū şuda',
+'exif-orientation-5' => '90° bo aqrabaki soat carxida va amudī puşturū şuda',
+'exif-orientation-6' => '90° aqrabaki soat carxida',
+'exif-orientation-7' => '90° aqrabaki soat carxida va amudī puşturū şuda',
+'exif-orientation-8' => '90° bo aqrabaki soat carxida',
+
+'exif-planarconfiguration-1' => 'Qolabi farbeh',
+'exif-planarconfiguration-2' => 'qolabi sathī',
+
+'exif-componentsconfiguration-0' => 'vuçud nadorad',
+
+'exif-exposureprogram-0' => "Ta'rifnaşuda",
+'exif-exposureprogram-1' => 'Dastī',
+'exif-exposureprogram-2' => 'Barnomai oddī',
+'exif-exposureprogram-3' => 'Avvalijati diafragm',
+'exif-exposureprogram-4' => 'Avvalijati şatter (Shutter priority)',
+'exif-exposureprogram-5' => "Barnomai eçodī (bo giroiş ba samti qa'r medon)",
+'exif-exposureprogram-6' => "Barnomai purçunbiş (bo giroiş ba samti sur'ati tezi parda)",
+'exif-exposureprogram-7' => 'Holati portret (baroi akshoi nazdik bo paszaminai xoriç az fosilai markaz ast)',
+'exif-exposureprogram-8' => 'Holati manzara (baroi akshoi manzara bo paszamina dar fosilai markaz)',
+
+'exif-subjectdistance-value' => '$1 metr',
+
+'exif-meteringmode-0' => "Noma'lum",
+'exif-meteringmode-1' => 'Mijona',
+'exif-meteringmode-2' => 'MarkazVazniMijona',
+'exif-meteringmode-3' => 'Nuqta',
+'exif-meteringmode-4' => 'BisjorNuqta',
+'exif-meteringmode-5' => 'Tarhdor',
+'exif-meteringmode-6' => "Çuz'ī",
+'exif-meteringmode-255' => 'Ƣajra',
+
+'exif-lightsource-0' => "Noma'lum",
+'exif-lightsource-1' => 'Rūşnoiji rūz',
+'exif-lightsource-2' => 'Fluoresent',
+'exif-lightsource-3' => 'Tungsten (nur biduni garmo)',
+'exif-lightsource-4' => 'Gerel tsatsagc',
+'exif-lightsource-9' => 'Havoi xub',
+'exif-lightsource-10' => 'Osmoni abrī',
+'exif-lightsource-11' => 'Soja',
+'exif-lightsource-12' => 'Mahtobī dar rūz (D 5700 – 7100K)',
+'exif-lightsource-13' => 'Mahtobi safed dar rūz (N 4600 – 5400K)',
+'exif-lightsource-14' => 'Mahtobi safedī xunuk (W 3900 – 4500K)',
+'exif-lightsource-15' => 'Mahtobi safed (WW 3200 – 3700K)',
+'exif-lightsource-17' => 'Nuri standartī A',
+'exif-lightsource-18' => 'Nuri standartī B',
+'exif-lightsource-19' => 'Nuri standartī C',
+'exif-lightsource-24' => 'ISO lampi tunsteni korxona',
+'exif-lightsource-255' => "Digar manba'i nur",
+
+'exif-focalplaneresolutionunit-2' => 'inc',
+
+'exif-sensingmethod-1' => "Ta'rifnaşuda",
+'exif-sensingmethod-2' => 'Hisgari nohijai rangi jak taroşae',
+'exif-sensingmethod-3' => 'Hisgari nohijai rangi du taroşae',
+'exif-sensingmethod-4' => 'Hisgari nohijai rangi se taroşae',
+'exif-sensingmethod-5' => 'Hisgari nohijai tartibi rangho',
+'exif-sensingmethod-7' => 'Hisgari sexatī',
+'exif-sensingmethod-8' => 'Hisgari xati tartibiji rangho',
+
+'exif-scenetype-1' => 'Aksi mustaqiman akkosişuda',
+
+'exif-customrendered-0' => 'Pardozişi oddī',
+'exif-customrendered-1' => 'Pardozişi suforişī',
+
+'exif-exposuremode-0' => 'Nurdihiji xudkor',
+'exif-exposuremode-1' => 'Nurdihiji dastī',
+'exif-exposuremode-2' => 'Qavsbandiji xudkor (Auto bracket)',
+
+'exif-whitebalance-0' => 'Tanzimi xudkorī rangi safed (white balance)',
+'exif-whitebalance-1' => 'Tanzimi dastiji rangi safed (white balance)',
+
+'exif-scenecapturetype-0' => 'Standart',
+'exif-scenecapturetype-1' => 'Caşmandoz',
+'exif-scenecapturetype-2' => 'Portret',
+'exif-scenecapturetype-3' => 'Şabona',
+
+'exif-gaincontrol-0' => 'Heç',
+'exif-gaincontrol-1' => 'Afzoişi haddi aqali darjoftī',
+'exif-gaincontrol-2' => 'Afzoişi haddi aksari darjoftī',
+'exif-gaincontrol-3' => 'Kohişi haddi aqali darjoftī',
+'exif-gaincontrol-4' => 'Kohişi haddi aksari darjoftī',
+
+'exif-contrast-0' => 'Oddī',
+'exif-contrast-1' => 'Narm',
+'exif-contrast-2' => 'Saxt',
+
+'exif-saturation-0' => 'Oddī',
+'exif-saturation-1' => 'Ranghoi raqiqşuda',
+'exif-saturation-2' => 'Ranghoi taƣlizşuda',
+
+'exif-sharpness-0' => 'Oddī',
+'exif-sharpness-1' => 'Narm',
+'exif-sharpness-2' => 'Narm',
+
+'exif-subjectdistancerange-0' => "Noma'lum",
+'exif-subjectdistancerange-1' => 'Makro',
+'exif-subjectdistancerange-2' => 'Namoi nazdik',
+'exif-subjectdistancerange-3' => 'Namoi dur',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Arzi çuƣrofijavī şimolī',
+'exif-gpslatitude-s' => 'Arzi çuƣrofijavī çanubī',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Arzi çuƣrofijavī şarqī',
+'exif-gpslongitude-w' => 'Arzi çuƣrofijavī ƣarbī',
+
+'exif-gpsstatus-a' => 'Dar holi andozagirī',
+'exif-gpsstatus-v' => 'Muqoisapaziriji andozagirī',
+
+'exif-gpsmeasuremode-2' => "Andozagiriji 2-ba'dī",
+'exif-gpsmeasuremode-3' => "Andozagiriji 3-ba'dī",
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'Kilometr bar soat',
+'exif-gpsspeed-m' => 'Mil bar soat',
+'exif-gpsspeed-n' => 'Gireh',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Ravandi durust',
+'exif-gpsdirection-m' => 'Ravandi magnetikī',
+
+# External editor support
+'edit-externally' => 'In fajlro bo barnomai beruna tahrir kuned',
+'edit-externally-help' => '(Baroi ittilooti beştar [http://www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroişgaroni beruna] nigared)',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'hama',
+'imagelistall' => 'hama',
+'watchlistall2' => 'hama',
+'namespacesall' => 'hama',
+'monthsall' => 'hama',
+'limitall' => 'hama',
+
+# E-mail address confirmation
+'confirmemail' => 'Tasdiqi nişonai poctai elektronī',
+'confirmemail_noemail' => "Şumo dar sahifai [[Special:Preferences|tarçihoti korbarii]] xud nişonai poctai elektroniji mū'tabarero vorid nakardaed.",
+'confirmemail_text' => "{{SITENAME}} ta'jidi e'tiboi poctai elektroniji şumoro peş az istifoda xidmati elektronī talab mekunad. Tugmai zerinro fa'ol kuned to nomai ta'jidī ba poctai elektroniji şumo firistoda şavad. In noma pajvandero dar bar megirad, ki kode dorad; pajvandro dar mururgar boz kuned, to ki poctai elektroniaton dar haqiqat ta'jid şavad.",
+'confirmemail_pending' => "Jak kodi ta'jidi peştar baroi şumo tariqi poctai elektronī firistoda şuda bud; agar ba nazdiki şumo hisobero ecod karda boşed, şojad jakcand daqiqa peş az darxost kardani kodi çadid omadani kodi ta'jidiji qabliro intizor şaved.",
+'confirmemail_send' => 'Firistodani kodi tasdiq',
+'confirmemail_sent' => 'Nomai elektroniji tasdiq firistoda şud.',
+'confirmemail_oncreate' => "Jak kodi ta'jidie ba poctai elektroniji şumo firistoda şud.
+Baroi vorid şudan ba sistem nijoze ba in kod nest, vale baroi rohandoziji imkoni vobasta ba poctai elektronī dar in viki ba on nijoz xohed doşt.",
+'confirmemail_sendfailed' => "{{SITENAME}} pajomi ta'jidi şumoro firistoda natavonist. Vuçudi alomathoi nomū'tabarero dar nişonai poctai elektronī barrasī kuned.
+
+Firistanda bargardond: $1",
+'confirmemail_invalid' => "Kodi tasdiq nomū'tabar ast. Mumkin ast, ki siparī şudaast.",
+'confirmemail_needlogin' => 'Baroi tasdiqi poctai elektroniaton nijoz ba $1 dored.',
+'confirmemail_success' => 'Nişonai poctai elektroniji şumo tasdiq şud. Hamaknun metavoned ba sistem vurud karda az viki lazzat bubared.',
+'confirmemail_loggedin' => 'Nişonai poctai elektroniji şumo tasdiq şud.',
+'confirmemail_error' => "Hangomi zaxirai ta'jidi şumo ba muşkilie barxūrda şud.",
+'confirmemail_subject' => '{{SITENAME}} tasdiqi nişonai poctai elektronī',
+'confirmemail_body' => 'Someone, probably you, from IP address $1,
+has registered an account "$2" with this e-mail address on {{SITENAME}}.
+
+To confirm that this account really does belong to you and activate
+e-mail features on {{SITENAME}}, open this link in your browser:
+
+$3
+
+If you did *not* register the account, follow this link
+to cancel the e-mail address confirmation:
+
+$5
+
+This confirmation code will expire at $4.
+
+---------
+Jak nafar, ehtimolan xudi şumo, az in nişonai IP $1, hisobi korbarie bo nomi "$2" bo istifodai in nişonai poctai elektronī dar {{SITENAME}} eçod kardaast.
+
+Baroi tasdiqi in hisob ki dar haqiqat ba şumo taaluq dorad va niz baroi fa\'olsoziji imkonoti poctai elektronī dar {{SITENAME}}, in parvandaro dar mururgari Internetī boz kuned:
+
+$3
+
+Agar in şumo *nested*, lutfan pajvandro dunbol nakuned.
+In kodi tasdiq dar $4 siparī xohad şud.
+
+$5
+
+In kodi ta\'jid dar $4 ba pojon xohad rasid.',
+'confirmemail_invalidated' => "Ta'jidi nişonai poctai elektronī laƣv şud",
+'invalidateemail' => "Ta'jidi tariqi poctai elektroniro laƣv kuned",
+
+# Scary transclusion
+'scarytranscludedisabled' => "[Ƣunçoişi bajnivikijona fa'ol nest]",
+'scarytranscludefailed' => '[Faroxoniji şablon baroi $1 mujassar naşud]',
+
+# Trackbacks
+'trackbackbox' => 'Boztobi in sahifa dar vebnaviştho:<br />
+$1',
+'trackbackremove' => '([$1 Hazf])',
+'trackbacklink' => 'Boztob',
+'trackbackdeleteok' => 'Boztobi sahifa bo muvaffaqijat hazf şud.',
+
+# Delete conflict
+'deletedwhileediting' => "'''Ogohī''': In sahifa ba'di ba viroiş şurū' kardani şumo hazf şuda bud!",
+'confirmrecreate' => "Korbar [[User:$1|$1]] ([[User talk:$1|bahs]]) in maqolaro pas az on ki ogoz ba viroişi on namudaed bo daleli zerin hazf kardaast:
+: ''$2''
+Lutfan ta'jid kuned, ki muçaddadan mexohed in maqolaro eçod kuned.",
+'recreate' => 'Az nav sozed',
+
+# action=purge
+'confirm_purge_button' => "Ta'jid",
+'confirm-purge-top' => "Pok karadni nusxai hofizai nihoniji (Cache) in sahifaro ta'jid mekuned?",
+
+# Multipage image navigation
+'imgmultipageprev' => '← sahifai peşin',
+'imgmultipagenext' => "sahifai ba'd →",
+'imgmultigo' => 'Birav!',
+'imgmultigoto' => 'Ba sahifai $1 raved',
+
+# Table pager
+'ascending_abbrev' => 'afzunşavanda',
+'descending_abbrev' => 'pojonī',
+'table_pager_next' => 'Sahifai navbatī',
+'table_pager_prev' => 'Sahifai guzaşta',
+'table_pager_first' => 'Sahifai avval',
+'table_pager_last' => 'Sahifai oxir',
+'table_pager_limit' => 'Nişon dodani $1 adad dar jak sahifa',
+'table_pager_limit_submit' => 'Birav',
+'table_pager_empty' => 'Heç natiça',
+
+# Auto-summaries
+'autosumm-blank' => 'Sahifaro xolī kard',
+'autosumm-replace' => "Ivazkuniji sahifa bo '$1'",
+'autoredircomment' => 'Taƣjiri masir ba [[$1]]',
+
+# Live preview
+'livepreview-loading' => 'Dar holi bor şudan…',
+'livepreview-ready' => 'Bor şudan… Omoda!',
+'livepreview-failed' => 'Peşnamoişi zinda ba muşkilī barxūrd! Lutfan az peşnamoişi oddī istifoda kuned.',
+'livepreview-error' => 'Irtibot ba muşkilī barxūrd: $1 "$2". Az peşnamoişi oddī istifoda kuned.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'Fehristi pajgirihoi şumo şomili {{PLURAL:$1|1 sahifa|$1 sahifaho}}, ba ƣajr az sahifahoi bahs ast.',
+'watchlistedit-noitems' => 'Fehristi pajgirihoi şumo xolī ast.',
+'watchlistedit-normal-title' => 'Viroişi fehristi pajgiriho',
+'watchlistedit-normal-legend' => 'Hazfi unvonho az fehristi pajgiriho',
+'watchlistedit-normal-explain' => "Unvonhoi mavçud dar fehristi pajgirihoi şumo dar pojon namoiş doda şudaand.
+Baroi hazfi jak unvon, ça'bai kūcaki kanori onro tik bizanid.
+Şumo metavoned [[Special:Watchlist/raw|fehristi xomi pajgirihoro viroiş kuned]].",
+'watchlistedit-normal-submit' => 'Unvonho hazf şavand',
+'watchlistedit-normal-done' => '$1 unvon az fehristi pajgirihoi şumo hazf {{PLURAL:$1|şud|şudand}}:',
+'watchlistedit-raw-title' => 'Viroişi fehristi xomī pajgiriho',
+'watchlistedit-raw-legend' => 'Viroişi fehristi xomī pajgiriho',
+'watchlistedit-raw-explain' => 'Unvonhoi mavçud dar fehristi pajgirihoi şumo dar zer nişon doda şudaand, va şumo metavoned mavoridro hazf jo izofa kuned; jak unvon dar har satr bojad qaror bigirad. Dar pojon, tugmai "Ba rūzrasoniji pajgiriho"-ro fişor dihed.
+Tavaççūh kuned, ki şumo metavoned az [[Special:Watchlist/edit|viroişgari standartiji fehristi pajgiriho]] istifoda kuned.',
+'watchlistedit-raw-titles' => 'Unvonho:',
+'watchlistedit-raw-submit' => 'Ba rūz rasonidani pajgiriho',
+'watchlistedit-raw-done' => 'Fehristi pajgirihoi şumo ba rūz şud.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 unvon|$1 unvonho}} ba fehristi pajgiriho izofa şud:',
+'watchlistedit-raw-removed' => 'Unvon hazf {{PLURAL:$1|şud|şudand}}:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Namoişi taƣjiroti aloqamandi fehristi pajgiriho',
+'watchlisttools-edit' => 'Muşohida va viroişi fehristi pajgiriho',
+'watchlisttools-raw' => 'Viroişi fehristi xomi pajgiriho',
+
+# Core parser functions
+'unknown_extension_tag' => 'Bacasbi noşinosi afzunai "$1"',
+
+# Special:Version
+'version' => 'Nusxai Mediaviki',
+'version-extensions' => 'Afzunahoi nasbşuda',
+'version-specialpages' => 'Sahifahoi viƶa',
+'version-parserhooks' => 'Qolabhoi taçzehgar',
+'version-variables' => 'Mutaƣjirho',
+'version-other' => 'Digar',
+'version-mediahandlers' => 'Badastgirandahoi rasonaho',
+'version-hooks' => 'Qolabho',
+'version-extension-functions' => 'Amalgarhoi afzuna',
+'version-parser-extensiontags' => 'Barcasbhoi afzunahoi taçzehgar',
+'version-parser-function-hooks' => 'Qolabhoi amalgarhoi taçzehgar',
+'version-skin-extension-functions' => 'Amalgarhoi afzunahoi pūst',
+'version-hook-name' => 'Nomi qolab',
+'version-hook-subscribedby' => 'Voridşuda tavassuti',
+'version-version' => '(Nusxa $1)',
+'version-license' => 'Içozatnoma',
+'version-software' => 'Nusxai nasbşuda',
+'version-software-product' => 'Mahsul',
+'version-software-version' => 'Nusxa',
+
+# Special:FilePath
+'filepath' => 'Masiri parvanda',
+'filepath-page' => 'Parvanda:',
+'filepath-submit' => 'Masir',
+'filepath-summary' => 'In sahifai viƶa nişonai komil baroi jak parvandaro nişon medihad.
+Aksho bo kajfijat bo haçmi purraaşon nişon doda meşavand, digar nav\'hoi parvandahoi digar bo barnomahoi aloqamandi maxsus ba xudaşon boz meşavand.
+
+Nişonai pajvandro biduni peşvand "{{ns:file}}:" vorid kuned.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Çustuçū baroi parvandahoi takrorī',
+'fileduplicatesearch-summary' => 'Çustuçū baroi parvandahoi takrorī bar asosi miqdori dar ham şudai onho surat megirad.
+
+Nomi parvandaro be peşvandi "{{ns:file}}:" vorid kuned.',
+'fileduplicatesearch-legend' => 'Çustuçūi mavoridi takrorī',
+'fileduplicatesearch-filename' => 'Nomi parvanda:',
+'fileduplicatesearch-submit' => 'Çustuçū',
+'fileduplicatesearch-info' => "$1 × $2 piksel<br />Andozai parvanda: $3<br />Nav'i MIME: $4",
+'fileduplicatesearch-result-1' => 'Parvandai "$1" mavridi takrorī nadorad.',
+'fileduplicatesearch-result-n' => 'Parvandai "$1" doroi {{PLURAL:$2|1 mavridi takrorī|$2 mavridi takrorī}} ast.',
+
+# Special:SpecialPages
+'specialpages' => 'Sahifahoi viƶa',
+'specialpages-group-other' => 'Digar sahifahoi viƶa',
+'specialpages-group-login' => 'Vurud / sabti nom',
+'specialpages-group-changes' => 'Taƣjiroti oxirin va guzorişho',
+'specialpages-group-pages' => 'Fehristhoi sahifaho',
+'specialpages-group-pagetools' => 'Abzorhoi sahifa',
+'specialpages-group-wiki' => 'Viki dodaho va abzorho',
+'specialpages-group-redirects' => 'Dar holi taƣjiri masiri sahifahoi viƶa',
+
+# Special:BlankPage
+'blankpage' => 'Sahifai xolī',
+
+# Special:Tags
+'tags-edit' => 'viroiş',
+
+# Database error messages
+'dberr-info' => '(Imkoni barqarori irtibot bo pojgohi doda vuçud nadorad: $1)',
+'dberr-usegoogle' => 'Dar in muddat metavoned bo istifoda az Gugl çustuçū kuned.',
+'dberr-outofdate' => 'Tavaççūh kuned, ki namojahoi onho az mūhtavoi mo mumkin ast barūz naboşad.',
+'dberr-cachederror' => 'In jak nusxai sahifai darxostşuda ast, ki dar keş qaror dorad va şojad barūz nest.',
+
+# HTML forms
+'htmlform-invalid-input' => 'Baxşi az vurudi şumo muşkili dorad',
+'htmlform-select-badoption' => 'Miqdori voridşuda jak guzinai qobili qabul nest.',
+'htmlform-int-invalid' => 'Miqdore, ki vorid kardaed jak adadi saheh nest.',
+'htmlform-float-invalid' => 'Miqdore, ki vorid kardaed jak adad nest.',
+'htmlform-int-toolow' => 'Miqdore, ki vorid kardaed kamtar az $1 ast',
+'htmlform-int-toohigh' => 'Miqdore, ki vorid kardaed beştar az $1 ast',
+'htmlform-submit' => 'Irsol',
+'htmlform-reset' => 'Botili taƣjirot',
+'htmlform-selectorother-other' => 'Digar',
+
+);
diff --git a/languages/messages/MessagesTh.php b/languages/messages/MessagesTh.php
index 9afda51c..2077b525 100644
--- a/languages/messages/MessagesTh.php
+++ b/languages/messages/MessagesTh.php
@@ -9,6 +9,7 @@
*
* @author Ans
* @author Harley Hartwell
+ * @author Horus
* @author LMNOP at Thai Wikipedia (manop@itshee.com) since July 2007
* @author Manop
* @author Mopza
@@ -71,18 +72,33 @@ $specialPageAliases = array(
'Wantedpages' => array( 'หน้าที่ต้องการ', 'การเชื่อมโยงเสีย' ),
'Wantedcategories' => array( 'หมวดหมู่ที่ต้องการ' ),
'Wantedfiles' => array( 'ไฟล์ที่ต้องการ' ),
+ 'Wantedtemplates' => array( 'แม่แบบที่ต้องการ' ),
+ 'Mostlinked' => array( 'หน้าที่มีการโยงไปหามาก' ),
+ 'Mostlinkedcategories' => array( 'หมวดหมู่ที่มีการโยงไปหามาก', 'หมวดหมู่ที่ใช้มากที่สุด' ),
+ 'Mostlinkedtemplates' => array( 'แม่แบบที่มีการโยงไปหามาก', 'แม่แบบที่ใช้มากที่สุด' ),
+ 'Mostimages' => array( 'ไฟล์ที่มีการโยงไปหามาก', 'ไฟล์ทีใช้มากที่สุด', 'ภาพที่ใช้มากที่สุด' ),
+ 'Mostcategories' => array( 'หมวดหมู่ที่มีการโยงไปหามากที่สุด' ),
+ 'Mostrevisions' => array( 'บทความที่ถูกแก้ไขมากที่สุด' ),
+ 'Fewestrevisions' => array( 'บทความที่ถูกแก้ไขน้อยที่สุด' ),
+ 'Shortpages' => array( 'หน้าที่สั้นที่สุด' ),
+ 'Longpages' => array( 'หน้าที่ยาวที่สุด' ),
'Newpages' => array( 'หน้าใหม่' ),
'Ancientpages' => array( 'บทความที่ไม่ได้แก้ไขนานที่สุด' ),
'Deadendpages' => array( 'หน้าสุดทาง' ),
'Protectedpages' => array( 'หน้าที่ถูกป้องกัน' ),
'Protectedtitles' => array( 'หัวเรื่องที่ได้รับการป้องกัน' ),
'Allpages' => array( 'หน้าทั้งหมด' ),
+ 'Prefixindex' => array( 'ดัชนีตามคำขึ้นต้น' ),
+ 'Ipblocklist' => array( 'รายชื่อผู้ใช้ที่ถูกบล็อก', 'รายการบล็อก', 'รายชื่อไอพีที่ถูกบล็อก' ),
'Specialpages' => array( 'หน้าพิเศษ' ),
'Contributions' => array( 'เรื่องที่เขียน' ),
'Emailuser' => array( 'อีเมลผู้ใช้' ),
'Confirmemail' => array( 'ยืนยันอีเมล' ),
'Whatlinkshere' => array( 'บทความที่โยงมา' ),
+ 'Recentchangeslinked' => array( 'การปรับปรุงที่โยงมา' ),
'Movepage' => array( 'เปลี่ยนทาง' ),
+ 'Blockme' => array( 'บล็อกฉัน' ),
+ 'Booksources' => array( 'แหล่งหนังสือ' ),
'Categories' => array( 'หมวดหมู่' ),
'Export' => array( 'ส่งออก' ),
'Version' => array( 'เวอร์ชั่น' ),
@@ -91,8 +107,13 @@ $specialPageAliases = array(
'Blockip' => array( 'บล็อกไอพี' ),
'Undelete' => array( 'เรียกคืน' ),
'Import' => array( 'นำเข้า' ),
+ 'Lockdb' => array( 'ล็อกฐานข้อมูล' ),
+ 'Unlockdb' => array( 'ปลดล็อกฐานข้อมูล' ),
'Userrights' => array( 'สิทธิผู้ใช้' ),
+ 'MIMEsearch' => array( 'ค้นหาตามชนิดไมม์' ),
'FileDuplicateSearch' => array( 'ค้นหาไฟล์ซ้ำซ้อน' ),
+ 'Unwatchedpages' => array( 'หน้าที่ไม่ได้ถูกเฝ้าดู' ),
+ 'Listredirects' => array( 'รายชื่อหน้าเปลี่ยนทาง' ),
'Unusedtemplates' => array( 'แม่แบบที่ไม่ได้ใช้' ),
'Randomredirect' => array( 'สุ่มหน้าเปลี่ยนทาง' ),
'Mypage' => array( 'หน้าของฉัน' ),
@@ -100,8 +121,17 @@ $specialPageAliases = array(
'Mycontributions' => array( 'เรื่องที่ฉันเขียน' ),
'Listadmins' => array( 'รายชื่อผู้ดูแล' ),
'Listbots' => array( 'รายชื่อบอต' ),
+ 'Popularpages' => array( 'หน้าที่ได้รับความนิยม' ),
'Search' => array( 'ค้นหา' ),
'Resetpass' => array( 'ตั้งรหัสผ่านใหม่' ),
+ 'Withoutinterwiki' => array( 'หน้าที่ไม่มีลิงก์ข้ามภาษา' ),
+ 'MergeHistory' => array( 'รวมประวัติ' ),
+ 'Filepath' => array( 'ตำแหน่งไฟล์' ),
+ 'Invalidateemail' => array( 'ยกเลิกการยืนยันทางอีเมล' ),
+ 'Blankpage' => array( 'หน้าว่าง' ),
+ 'LinkSearch' => array( 'ค้นหาเว็บลิงก์' ),
+ 'DeletedContributions' => array( 'การแก้ไขที่ถูกลบ' ),
+ 'Tags' => array( 'ป้ายกำกับ' ),
);
$magicWords = array(
@@ -109,7 +139,7 @@ $magicWords = array(
'notoc' => array( '0', '__ไม่มีสารบัญ__', '__NOTOC__' ),
'nogallery' => array( '0', '__ไม่มีแกลเลอรี่__', '__NOGALLERY__' ),
'noeditsection' => array( '0', '__ไม่มีแก้เฉพาะส่วน__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'เดือนปัจจุบัน', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'เดือนปัจจุบัน', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'ชื่อเดือนปัจจุบัน', 'CURRENTMONTHNAME' ),
);
@@ -179,6 +209,7 @@ $messages = array(
'tog-enotifminoredits' => 'แม้ว่าการแก้ไขจะเป็นการแก้ไขเล็กน้อย',
'tog-enotifrevealaddr' => 'เผยที่อยู่อีเมลในอีเมลที่ชี้แจง',
'tog-shownumberswatching' => 'แสดงจำนวนผู้ใช้ที่เฝ้าดูหน้านี้',
+'tog-oldsig' => 'แสดงผลลายเซ็นเดิม:',
'tog-fancysig' => 'ใช้คำสั่งวิกิที่ปรากฏในลายเซ็นนี้ (ไม่มีการสร้างลิงก์อัตโนมัติ)',
'tog-externaleditor' => 'กำหนดค่ามาตรฐาน ให้แก้ไขโดยใช้โปรแกรมภายนอกตัวอื่น',
'tog-externaldiff' => 'ใช้ซอฟต์แวร์ในเครื่องแก้ไขวิกิ',
@@ -200,6 +231,13 @@ $messages = array(
'underline-never' => 'ไม่เคย',
'underline-default' => 'ค่าปริยายตามเว็บเบราว์เซอร์',
+# Font style option in Special:Preferences
+'editfont-style' => 'รูปแบบของแบบตัวอักษรในกล่องแก้ไข:',
+'editfont-default' => 'ค่าตั้งต้นของ browser',
+'editfont-monospace' => 'ชุดอักษรแบบความกว้างคงที่',
+'editfont-sansserif' => 'ชุดอักษรแบบไม่มีเชิง',
+'editfont-serif' => 'ชุดอักษรแบบมีเชิง',
+
# Dates
'sunday' => 'วันอาทิตย์',
'monday' => 'วันจันทร์',
@@ -259,7 +297,7 @@ $messages = array(
'category-media-header' => 'สื่อในหมวดหมู่ "$1"',
'category-empty' => "''หมวดหมู่นี้ว่าง ไม่มีบทความใดอยู่''",
'hidden-categories' => '{{PLURAL:$1|หมวดหมู่ที่ซ่อนอยู่|หมวดหมู่ที่ซ่อนอยู่}}',
-'hidden-category-category' => 'หมวดหมู่ที่ซ่อนอยู่', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'หมวดหมู่ที่ซ่อนอยู่',
'category-subcat-count' => '{{PLURAL:$2|หมวดหมู่นี้มีหมวดหมู่ย่อยเพียงหมวดหมู่เดียว|หมวดหมู่นี้มี {{PLURAL:$1|หมวดหมู่ย่อย|$1 หมวดหมู่ย่อย}} จากทั้งหมด $2 หมวดหมู่}}',
'category-subcat-count-limited' => 'หมวดหมู่นี้มี {{PLURAL:$1|หมวดหมู่ย่อยเพียงหมวดหมู่เดียว|$1 หมวดหมู่ย่อย}}',
'category-article-count' => '{{PLURAL:$2|หมวดหมู่นี้มีหน้าอยู่เพียงหน้าเดียว|มี {{PLURAL:$1|หน้าเดียว|$1 หน้า}} ในหมวดหมู่นี้ เต็ม $2}}',
@@ -267,6 +305,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|มีไฟล์เดียวในหมวดหมู่นี้|มี {{PLURAL:$1|ไฟล์|ไฟล์}} ในหมวดหมู่นี้จากทั้งหมด $2 ไฟล์}}',
'category-file-count-limited' => '{{PLURAL:$1|ไฟล์|ไฟล์}}ต่อไปนี้อยู่ในหมวดหมู่นี้',
'listingcontinuesabbrev' => '(ต่อ)',
+'index-category' => 'หน้าที่มีดัชนี',
+'noindex-category' => 'หน้าที่ไม่มีดัชนี',
'mainpagetext' => "'''ซอฟต์แวร์มีเดียวิกิได้ถูกติดตั้งเรียบร้อย'''",
'mainpagedocfooter' => 'ศึกษา[http://meta.wikimedia.org/wiki/Help:Contents คู่มือการใช้งาน] สำหรับเริ่มต้นใช้งานซอฟต์แวร์วิกิ
@@ -277,10 +317,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ คำถามที่ถามบ่อยในมีเดียวิกิ] (ภาษาอังกฤษ)
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce เมลลิงลิสต์ของมีเดียวิกิ]',
-'about' => 'เว็บไซต์นี้',
-'article' => 'หน้าเนื้อหา',
-'newwindow' => '(เปิดหน้าต่างใหม่)',
-'cancel' => 'ยกเลิก',
+'about' => 'เว็บไซต์นี้',
+'article' => 'หน้าเนื้อหา',
+'newwindow' => '(เปิดหน้าต่างใหม่)',
+'cancel' => 'ยกเลิก',
+'moredotdotdot' => 'ดูเพิ่ม...',
+'mypage' => 'หน้าของฉัน',
+'mytalk' => 'หน้าพูดคุยของฉัน',
+'anontalk' => 'พูดคุยกับไอพีนี้',
+'navigation' => 'ป้ายบอกทาง',
+'and' => '&#32;และ',
+
+# Cologne Blue skin
'qbfind' => 'ค้นหา',
'qbbrowse' => 'สืบค้น',
'qbedit' => 'แก้ไข',
@@ -288,15 +336,35 @@ $messages = array(
'qbpageinfo' => 'บริบท',
'qbmyoptions' => 'หน้าของฉัน',
'qbspecialpages' => 'หน้าพิเศษ',
-'moredotdotdot' => 'ดูเพิ่ม...',
-'mypage' => 'หน้าของฉัน',
-'mytalk' => 'หน้าพูดคุยของฉัน',
-'anontalk' => 'พูดคุยกับไอพีนี้',
-'navigation' => 'ป้ายบอกทาง',
-'and' => '&#32;และ',
-
-# Metadata in edit box
-'metadata_help' => 'เมทาเดทา:',
+'faq' => 'คำถามที่ถามบ่อย',
+'faqpage' => 'Project:คำถามที่ถามบ่อย',
+
+# Vector skin
+'vector-action-addsection' => 'เพิ่มหัวข้อใหม่',
+'vector-action-delete' => 'ลบ',
+'vector-action-move' => 'ย้าย',
+'vector-action-protect' => 'ป้องกัน',
+'vector-action-undelete' => 'ยกเลิกการลบ',
+'vector-action-unprotect' => 'ยกเลิกการป้องกัน',
+'vector-namespace-category' => 'หมวดหมู่',
+'vector-namespace-help' => 'หน้าช่วยเหลือ',
+'vector-namespace-image' => 'ไฟล์',
+'vector-namespace-main' => 'หน้า',
+'vector-namespace-media' => 'หน้าที่เป็นสื่อ',
+'vector-namespace-mediawiki' => 'ข้อความ',
+'vector-namespace-project' => 'หน้าโครงการ',
+'vector-namespace-special' => 'หน้าพิเศษ',
+'vector-namespace-talk' => 'สนทนา',
+'vector-namespace-template' => 'แม่แบบ',
+'vector-namespace-user' => 'หน้าของผู้ใช้',
+'vector-view-create' => 'สร้าง',
+'vector-view-edit' => 'แก้ไข',
+'vector-view-history' => 'ดูประวัติ',
+'vector-view-view' => 'อ่าน',
+'vector-view-viewsource' => 'ดูโค้ด',
+'actions' => 'การกระทำ',
+'namespaces' => 'เนมสเปซ',
+'variants' => 'สิ่งที่แตกต่าง',
'errorpagetitle' => 'มีข้อผิดพลาด',
'returnto' => 'กลับไปสู่ $1',
@@ -346,18 +414,22 @@ $messages = array(
'otherlanguages' => 'ในภาษาอื่น',
'redirectedfrom' => '(เปลี่ยนทางจาก $1)',
'redirectpagesub' => 'หน้าเปลี่ยนทาง',
-'lastmodifiedat' => 'หน้านี้แก้ไขล่าสุดเมื่อวันที่ $1 เวลา $2', # $1 date, $2 time
+'lastmodifiedat' => 'หน้านี้แก้ไขล่าสุดเมื่อวันที่ $1 เวลา $2',
'viewcount' => 'หน้านี้มีการเข้าชม {{PLURAL:$1|1 ครั้ง|$1 ครั้ง}}',
'protectedpage' => 'หน้าถูกล็อก',
'jumpto' => 'ข้ามไปที่:',
'jumptonavigation' => 'นำทาง',
'jumptosearch' => 'สืบค้น',
+'view-pool-error' => 'ขออภัย ขณะนี้มีผู้ใช้งานเซิร์ฟเวอร์มากเกินที่จะรับได้
+ผู้ที่พยายามเข้าดูหน้านี้มีจำนวนมากจนเกินไป
+กรุณารอสักครู่ก่อนที่จะเข้าดูหน้านี้อีกครั้งหนึ่ง
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'เกี่ยวกับ {{SITENAME}}',
'aboutpage' => 'Project:เกี่ยวกับเว็บไซต์',
'copyright' => 'เนื้อหาในหน้านี้อยู่ภายใต้ลิขสิทธิ์แบบ $1',
-'copyrightpagename' => 'สงวนลิขสิทธิ์ {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:ลิขสิทธิ์',
'currentevents' => 'เหตุการณ์ปัจจุบัน',
'currentevents-url' => 'Project:เหตุการณ์ปัจจุบัน',
@@ -365,8 +437,6 @@ $messages = array(
'disclaimerpage' => 'Project:ข้อปฏิเสธความรับผิดชอบ',
'edithelp' => 'คำอธิบายการแก้ไข',
'edithelppage' => 'Help:การแก้ไข',
-'faq' => 'คำถามที่ถามบ่อย',
-'faqpage' => 'Project:คำถามที่ถามบ่อย',
'helppage' => 'Help:วิธีการใช้งาน',
'mainpage' => 'หน้าหลัก',
'mainpage-description' => 'หน้าหลัก',
@@ -444,10 +514,6 @@ $messages = array(
"$1"
จากฟังก์ชัน "$2"
ฐานข้อมูลแจ้งข้อผิดพลาดว่า "$3: $4"',
-'noconnect' => 'ขออภัย เว็บไซต์นี้กำลังประสบปัญหาทางเทคนิค และไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลได้<br />
-$1',
-'nodb' => 'ไม่สามารถเลือกฐานข้อมูล $1',
-'cachederror' => 'ข้อมูลต่อไปนี้เป็นแคชเก่าของหน้าที่เรียกขอ ซึ่งไม่ใช่ข้อมูลล่าสุด',
'laggedslavemode' => 'คำเตือน! ข้อมูลในหน้าอาจจะไม่ใช่ข้อมูลล่าสุด',
'readonly' => 'ฐานข้อมูลถูกล็อก',
'enterlockreason' => 'ใส่เหตุผลในการล็อก รวมถึงช่วงเวลาที่คาดว่าจะปลดล็อก',
@@ -464,6 +530,7 @@ $1',
'readonly_lag' => 'ฐานข้อมูลถูกล็อกอัตโนมัติขณะที่เซิร์ฟเวอร์ฐานข้อมูลรองกำลังปรับปรุงตามฐานข้อมูลหลัก',
'internalerror' => 'เกิดความผิดพลาดภายใน',
'internalerror_info' => 'เกิดความผิดพลาดภายใน: $1',
+'fileappenderror' => 'ไม่สามารถต่อท้าย "$2" ด้วย "$1"',
'filecopyerror' => 'ไม่สามารถคัดลอกไฟล์ "$1" ไปที่ "$2"',
'filerenameerror' => 'ไม่สามารถเปลี่ยนชื่อไฟล์ "$1" เป็น "$2"',
'filedeleteerror' => 'ไม่สามารถลบไฟล์ "$1"',
@@ -473,7 +540,7 @@ $1',
'unexpected' => 'ผลที่ไม่คาดคิด: "$1"="$2"',
'formerror' => 'ผิดพลาด: ไม่สามารถส่งฟอร์มได้',
'badarticleerror' => 'การกระทำนี้ไม่สามารถดำเนินการในหน้านี้ได้',
-'cannotdelete' => 'ไม่สามารถลบหน้าหรือไฟล์ที่กำหนด (อาจถูกลบไปก่อนหน้านี้โดยคนอื่นแล้ว)',
+'cannotdelete' => 'ไม่สามารถลบหน้าหรือไฟล์ "$1" (อาจมีผู้อื่นลบไปก่อนหน้านี้แล้ว)',
'badtitle' => 'ชื่อหน้าไม่เหมาะสม',
'badtitletext' => 'ชื่อหน้าที่ร้องขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อที่ผิดพลาดเนื่องจากลิงก์ข้ามมาจากภาษาอื่น ชื่อที่ใช้อาจจะมีตัวอักษรที่ไม่สามารถถูกใช้เป็นชื่อได้',
'perfcached' => 'ข้อมูลต่อไปนี้อาจเป็นข้อมูลเก่า ที่เก็บไว้ในแคชของระบบ',
@@ -503,7 +570,6 @@ $1',
'virus-unknownscanner' => 'ไม่รู้จักโปรแกรมป้องกันไวรัสตัวนี้:',
# Login and logout pages
-'logouttitle' => 'ผู้ใช้งานล็อกเอาต์',
'logouttext' => "'''ขณะนี้คุณได้ล็อกเอาต์ออกจากระบบ'''
คุณสามารถใช้งาน {{SITENAME}} ได้ต่อในฐานะผู้ใช้นิรนาม หรือคุณสามารถ[[Special:UserLogin|ล็อกอินกลับเข้าไป]]ด้วยชื่อผู้ใช้เดิมหรือชื่อผู้ใช้อื่นๆ
@@ -512,7 +578,6 @@ $1',
ชื่อบัญชีผู้ใช้ของคุณถูกสร้างขึ้นแล้ว
อย่าลืมเข้าไป[[Special:Preferences|ตั้งค่าผู้ใช้สำหรับ {{SITENAME}}]]',
-'loginpagetitle' => 'ล็อกอิน',
'yourname' => 'ชื่อผู้ใช้',
'yourpassword' => 'รหัสผ่าน',
'yourpasswordagain' => 'พิมพ์รหัสผ่านอีกครั้ง:',
@@ -523,6 +588,7 @@ $1',
'nav-login-createaccount' => 'ล็อกอิน / สร้างบัญชีผู้ใช้',
'loginprompt' => 'ต้องเปิดใช้คุกกี้ก่อนที่จะล็อกอินเข้าสู่ {{SITENAME}}',
'userlogin' => 'ล็อกอิน / สร้างบัญชีผู้ใช้',
+'userloginnocreate' => 'ล็อกอิน',
'logout' => 'ล็อกเอาต์',
'userlogout' => 'ล็อกเอาต์',
'notloggedin' => 'ไม่ได้ล็อกอิน',
@@ -534,27 +600,8 @@ $1',
'createaccountmail' => 'ผ่านทางอีเมล',
'badretype' => 'รหัสผ่านที่ใส่ไม่ถูกต้อง',
'userexists' => 'ชื่อบัญชีที่ใส่มีผู้อื่นใช้แล้ว กรุณาเลือกชื่ออื่น',
-'youremail' => 'อีเมล:',
-'username' => 'ชื่อผู้ใช้:',
-'uid' => 'รหัสผู้ใช้:',
-'prefs-memberingroups' => 'สมาชิกใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:',
-'yourrealname' => 'ชื่อจริง:',
-'yourlanguage' => 'ภาษา:',
-'yourvariant' => 'ภาษาอื่น',
-'yournick' => 'ลายเซ็น:',
-'badsig' => 'ลายเซ็นที่ใช้ผิดพลาด กรุณาตรวจสอบคำสั่งเอชทีเอ็มแอล',
-'badsiglength' => 'ลายเซ็นยาวเกินไป ต้องมีความยาวไม่เกิน $1 {{PLURAL:$1|ตัวอักษร|ตัวอักษร}}',
-'yourgender' => 'เพศ:',
-'gender-unknown' => 'ไม่ระบุ',
-'gender-male' => 'ชาย',
-'gender-female' => 'หญิง',
-'prefs-help-gender' => 'เป็นข้อมูลเสริม: ใช้เพื่อให้ซอฟต์แวร์สามารถแยกแยะเพศของผู้ใช้ได้ ข้อมูลนี้จะเป็นที่เปิดเผย',
-'email' => 'อีเมล',
-'prefs-help-realname' => 'ไม่จำเป็นต้องใส่ชื่อจริง โดยชื่อที่ใส่นั้นจะถูกใช้เพียงแค่แสดงผลงานที่คุณได้ร่วมสร้างไว้',
'loginerror' => 'ล็อกอินผิดพลาด',
-'prefs-help-email' => 'ไม่จำเป็นต้องใส่อีเมล แต่กรุณาตระหนักว่าหากคุณลืมรหัสผ่าน รหัสผ่านใหม่จะถูกส่งผ่านอีเมลของคุณ
-และผู้ใช้ผู้อื่นสามารถติดต่อคุณผ่านอีเมลที่ใส่นี้ จากหน้าผู้ใช้ หรือคุยกับผู้ใช้ของคุณ แต่อีเมลของคุณจะไม่ปรากฏให้ผู้อื่นเห็นแต่อย่างใด',
-'prefs-help-email-required' => 'ต้องการที่อยู่อีเมล',
+'createaccounterror' => 'ไม่สามารถสร้างบัญชีผู้ใช้: $1',
'nocookiesnew' => 'ชื่อบัญชีผู้ใช้ได้ถูกสร้างขึ้นแล้ว แต่ยังไม่ได้ล็อกอินเข้าสู่ {{SITENAME}} เนื่องจากว่าไม่ได้เปิดใช้คุกกี้ ถ้าต้องการล็อกอินให้เปิดใช้งานคุกกี้และทำการล็อกอินโดยใส่ชื่อผู้ใช้พร้อมรหัสผ่าน',
'nocookieslogin' => '{{SITENAME}} ใช้คุกกี้สำหรับการล็อกอิน ขณะนี้คุกกี้ของคุณไม่เปิดใช้งาน กรุณาเปิดใช้งานและลองอีกครั้ง',
'noname' => 'คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง',
@@ -565,9 +612,11 @@ $1',
กรุณาตรวจการสะกดอีกครั้ง หรือ[[Special:UserLogin/signup|สร้างบัญชีผู้ใช้ใหม่]]',
'nosuchusershort' => 'ไม่มีชื่อผู้ใช้ในชื่อ "<nowiki>$1</nowiki>" กรุณาตรวจสอบการสะกด',
'nouserspecified' => 'คุณต้องระบุชื่อผู้ใช้',
+'login-userblocked' => 'ผู้ใช้นี้ถูกบล็อก ไม่อนุญาตให้ทำการล็อกอิน',
'wrongpassword' => 'รหัสผ่านที่ใส่ไม่ถูกต้อง กรุณาลองใหม่',
'wrongpasswordempty' => 'ยังไม่ได้ระบุรหัสผ่าน กรุณาลองใหม่',
-'passwordtooshort' => 'รหัสผ่านไม่ถูกต้องหรือสั้นเกินไป ซึ่งต้องมีอย่างน้อย {{PLURAL:$1|1 ตัวอักษร|$1 ตัวอักษร}} และแตกต่างจากชื่อผู้ใช้',
+'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย {{PLURAL:$1|$1 ตัวอักษร}}',
+'password-name-match' => 'รหัสผ่านของคุณต้องไม่เหมือนกันกับชื่อผู้ใช้ของคุณ',
'mailmypassword' => 'อีเมลรหัสผ่านใหม่',
'passwordremindertitle' => 'คำบอกรหัสผ่านจาก {{SITENAME}}',
'passwordremindertext' => 'ผู้ใดผู้หนึ่ง (ซึ่งอาจจะเป็นคุณได้ใช้หมายเลขไอพี $1) ขอให้ส่งรหัสผ่านใหม่
@@ -579,6 +628,7 @@ $1',
และไม่ต้องการเปลี่ยนรหัสผ่านใหม่แต่อย่างใด กรุณาเพิกเฉยต่อข้อความนี้ และ
ใช้รหัสผ่านเดิมต่อไป',
'noemail' => 'อีเมลไม่ได้ใส่ไว้สำหรับชื่อผู้ใช้ "$1"',
+'noemailcreate' => 'คุณจำเป็นต้องใส่ที่อยู่อีเมลให้ถูกต้อง',
'passwordsent' => 'รหัสผ่านใหม่ได้ถูกส่งไปที่อีเมลของผู้ใช้ "$1"
กรุณาล็อกอินหลังจากที่ได้อีเมล',
'blocked-mailpassword' => 'หมายเลขไอพีของคุณได้ถูกบล็อกจากการแก้ไข ดังนั้นไม่สามารถใช้คำสั่งร้องขอรหัสผ่านได้เพื่อป้องกันปัญหาการก่อกวน',
@@ -599,6 +649,7 @@ $1',
'createaccount-text' => 'มีใครบางคนสร้างบัญชีผู้ใช้สำหรับที่อยู่อีเมลของคุณไว้บน {{SITENAME}} ($4) โดยใช้ชื่อบัญชีผู้ใช้ "$2" และรหัสผ่าน "$3" คุณควรล็อกอินเพื่อเปลี่ยนรหัสผ่านโดยทันที
ข้อความนี้อาจจะไม่สำคัญสำหรับคุณ หากการสร้างบัญชีผู้ใช้นี้เกิดจากความผิดพลาด',
+'usernamehasherror' => 'ไม่สามารถมีตัวอักษร "#" ในชื่อผู้ใช้ได้',
'login-throttled' => 'คุณได้พยายามล็อกอินมากครั้งเกินไป
กรุณารอสักครู่แล้วลองใหม่อีกครั้ง',
'loginlanguagelabel' => 'ภาษา: $1',
@@ -612,17 +663,13 @@ $1',
'retypenew' => 'พิมพ์รหัสผ่านใหม่อีกครั้ง:',
'resetpass_submit' => 'ตั้งรหัสผ่านและล็อกอิน',
'resetpass_success' => 'รหัสผ่านได้ถูกเปลี่ยนเรียบร้อย ขณะนี้กำลังล็อกอินให้คุณ...',
-'resetpass_bad_temporary' => 'รหัสผ่านชั่วคราวไม่ถูกต้อง คุณอาจจะเปลี่ยนรหัสผ่านเรียบร้อยแล้วหรือขอรหัสผ่านชั่วคราวใหม่',
'resetpass_forbidden' => 'ไม่สามารถเปลี่ยนรหัสผ่านได้',
'resetpass-no-info' => 'คุณต้องล็อกอินเพื่อที่จะเข้าถึงหน้านี้โดยตรง',
'resetpass-submit-loggedin' => 'เปลี่ยนรหัสผ่าน',
+'resetpass-submit-cancel' => 'ยกเลิก',
'resetpass-wrong-oldpass' => 'รหัสผ่านชั่วคราวหรือปัจจุบันไม่ถูกต้อง
คุณอาจเปลี่ยนรหัสผ่านของคุณไปแล้ว หรือร้องขอรหัสผ่านชั่วคราวใหม่แล้ว',
'resetpass-temp-password' => 'รหัสผ่านชั่วคราว:',
-'resetpass-log' => 'ปูมการล้างรหัสผ่าน',
-'resetpass-logtext' => 'ด้านล่างเป็นปูมการล้างรหัสผ่านของผู้ใช้ ที่ดำเนินการโดยผู้ดูแล',
-'resetpass-logentry' => 'เปลี่ยนรหัสผ่านของ $1',
-'resetpass-comment' => 'เหตุผลในการล้างรหัสผ่าน:',
# Edit page toolbar
'bold_sample' => 'ทำตัวหนา',
@@ -692,7 +739,6 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'blockededitsource' => "'''ข้อความที่คุณได้แก้ไข''' ใน '''$1''' แสดงผลด้านล่าง:",
'whitelistedittitle' => 'ไม่อนุญาตให้แก้ไขถ้าไม่ล็อกอิน',
'whitelistedittext' => 'คุณต้อง $1 เพื่อทำการแก้ไข',
-'confirmedittitle' => 'ไม่อนุญาตให้แก้ไขถ้าไม่ได้ทำการยืนยันอีเมล',
'confirmedittext' => 'ไม่อนุญาตให้แก้ไขถ้าไม่ได้ทำการยืนยันอีเมล กรุณายืนยันอีเมลผ่านทาง [[Special:Preferences|การตั้งค่าผู้ใช้]]',
'nosuchsectiontitle' => 'ไม่มีหัวข้อย่อย',
'nosuchsectiontext' => 'คุณพยายามแก้ไขหัวข้อย่อยที่ไม่มีอยู่แล้วในขณะนี้ หัวข้อย่อยดังกล่าวอาจถูกย้ายหรือลบในขณะที่คุณดูหน้าเว็บอยู่',
@@ -714,13 +760,20 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'noarticletext' => 'ขณะนี้ไม่มีเนื้อหาในหน้านี้
คุณสามารถ [[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]] ในหน้าอื่น
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาบันทึกที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>',
+'noarticletext-nopermission' => 'ขณะนี้ไม่มีเนื้อหาในหน้านี้
+คุณสามารถ [[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]] ในหน้าอื่น
+หรือ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาบันทึกที่เกี่ยวข้อง]</span>',
'userpage-userdoesnotexist' => 'ไม่มีบัญชีผู้ใช้ "$1" อยู่ในสารบบ กรุณาตรวจสอบให้แน่ใจว่าคุณต้องการสร้างหรือแก้ไขหน้านี้จริงๆ',
+'userpage-userdoesnotexist-view' => 'ไม่มีบัญชีผู้ใช้ลงทะเบียนในชื่อ "$1"',
+'blocked-notice-logextract' => 'ปัจจุบันผู้ใช้นี้ถูกบล็อก
+ปูมการบล็อกรายการล่าสุดแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
'clearyourcache' => "'''คำแนะนำ:''' หลังจากบันทึกผลแล้ว คุณอาจจะต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูผลการเปลี่ยนแปลง <br />
'''มอซิลลา / ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะกดปุ่ม ''รีโหลด'' หรือกด ''Ctrl-F5'' หรือกด ''Ctrl-R'' (''Command-R'' สำหรับเครื่องแมคอินทอช); <br />
'''คองเคอเรอร์:''' กดปุ่ม ''รีโหลด'' หรือกด ''F5;'' <br />
'''โอเปร่า:''' อาจต้องล้างแคชทั้งหมดผ่านเมนู ''Tools → Preferences;'' <br />
'''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กด ''Ctrl'' ค้างไว้ขณะที่กดปุ่ม ''รีเฟรช'' หรือกด ''Ctrl-F5;''",
-'usercssjsyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม 'แสดงตัวอย่าง' เพื่อทดสอบสไตล์ชีตหรือจาวาสคริปต์ก่อนทำการบันทึก",
+'usercssyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม 'แสดงตัวอย่าง' เพื่อทดสอบสไตล์ชีตหรือจาวาสคริปต์ก่อนทำการบันทึก",
+'userjsyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม 'แสดงตัวอย่าง' เพื่อทดสอบสไตล์ชีตหรือจาวาสคริปต์ก่อนทำการบันทึก",
'usercsspreview' => "'''อย่าลืมว่าสไตล์ชีตที่คุณสร้างยังไม่ได้ถูกบันทึก'''
'''นี่คือการแสดงตัวอย่างเท่านั้น!'''",
'userjspreview' => "'''อย่าลืมว่าจาวาสคริปต์ยังไม่ได้ถูกบันทึก ขณะนี้แสดงเพียงตัวอย่างเท่านั้น!'''",
@@ -767,13 +820,14 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'readonlywarning' => "'''คำเตือน: ขณะนี้ฐานข้อมูลถูกล็อกเพื่อบำรุงรักษา จึงไม่สามารถบันทึกข้อมูลที่แก้ไขได้ แนะนำให้คัดลอกไปเก็บไว้ที่อื่นก่อนแล้วนำมาบันทึกในเว็บไซต์นี้ภายหลัง'''
ผู้ดูแลระบบที่ล็อกฐานข้อมูลได้ให้คำอธิบายดังนี้: $1",
-'protectedpagewarning' => "'''คำเตือน: หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ดูแลระบบเท่านั้น'''",
+'protectedpagewarning' => "'''คำเตือน: หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ดูแลระบบเท่านั้น'''
+บันทึกการป้องกันล่าสุดถูกแสดงไว้ด้านล่างเพื่อการอ้างอิง",
'semiprotectedpagewarning' => "'''คำแนะนำ:''' หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้น",
'cascadeprotectedwarning' => "'''คำเตือน:''' หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ดูแลระบบเท่านั้น เนื่องจากหน้านี้สืบทอดการล็อกมาจาก{{PLURAL:$1|หน้า|หน้า}}ต่อไปนี้:",
'titleprotectedwarning' => "'''คำเตือน: หน้านี้ได้รับการป้องกันไว้ให้สร้างได้โดย[[Special:ListGroupRights|ผู้ใช้ที่ได้รับสิทธิ]]เท่านั้น'''",
-'templatesused' => 'แม่แบบที่ใช้ในหน้านี้:',
-'templatesusedpreview' => 'แม่แบบที่ใช้ในการแสดงตัวอย่าง:',
-'templatesusedsection' => 'แม่แบบที่ใช้ในส่วนนี้:',
+'templatesused' => '{{PLURAL:$1|แม่แบบ}}ที่ใช้ในหน้านี้:',
+'templatesusedpreview' => '{{PLURAL:$1|แม่แบบ}}ที่ใช้ในการแสดงตัวอย่าง:',
+'templatesusedsection' => '{{PLURAL:$1|แม่แบบ}}ที่ใช้ในส่วนนี้:',
'template-protected' => '(ล็อก)',
'template-semiprotected' => '(กึ่งล็อก)',
'hiddencategories' => 'หน้านี้มี {{PLURAL:$1|1 หมวดหมู่ที่ซ่อนอยู่|$1 หมวดหมู่ที่ซ่อนอยู่}} :',
@@ -782,15 +836,18 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'nocreatetext' => 'เว็บไซต์นี้จำกัดการสร้างหน้าเว็บเพจใหม่
คุณสามารถทำการแก้ไขหน้าที่สร้างไว้แล้ว หรือ [[Special:UserLogin|ล็อกอินหรือสร้างบัญชีผู้ใช้]]',
'nocreate-loggedin' => 'คุณไม่ได้รับอนุญาตให้สร้างหน้าใหม่ได้',
+'sectioneditnotsupported-title' => 'ไม่สนับสนุนการแก้ไขหัวข้อย่อย',
+'sectioneditnotsupported-text' => 'ไม่สนับสนุนการแก้ไขหัวข้อย่อยในหน้านี้',
'permissionserrors' => 'ข้อผิดพลาดในการใช้สิทธิ',
'permissionserrorstext' => 'คุณไม่ได้รับสิทธิในการทำสิ่งนี้ เนื่องจาก{{PLURAL:$1|เหตุผล|เหตุผล}}ต่อไปนี้:',
'permissionserrorstext-withaction' => 'คุณไม่มีสิทธิในการ$2 เนื่องจาก{{PLURAL:$1|เหตุผล|เหตุผล}}ต่อไปนี้:',
-'recreate-deleted-warn' => "'''คำเตือน: กำลังสร้างหน้าใหม่ซึ่งก่อนหน้านี้ได้ถูกลบไปแล้ว'''
+'recreate-moveddeleted-warn' => "'''คำเตือน: คุณกำลังจะสร้างหน้าใหม่ซึ่งก่อนหน้านี้ได้ถูกลบไปแล้ว'''
-ลองพิจารณาว่าหน้านี้เหมาะสมในการสร้างใหม่หรือไม่ ลองตรวจสอบบันทึกการลบก่อนหน้า:",
-'deleted-notice' => 'หน้านี้ถูกลบ
-บันทึกการลบสำหรับแต่ละหน้าจะถูกอธิบายไว้ส่วนล่างสำหรับการอ้างอิง',
-'deletelog-fulllog' => 'ดูบันทึกทั้งหมด',
+ขอให้พิจารณาว่าหน้านี้เหมาะสมในการสร้างใหม่หรือไม่
+ลองตรวจสอบบันทึกการลบและการโยกย้ายหน้านี้ในอดีตได้ที่นี่:",
+'moveddeleted-notice' => 'หน้านี้ถูกลบ
+บันทึกการลบและการเปลี่ยนชื่อสำหรับหน้านี้ได้แสดงไว้ด้านล่างนี้สำหรับการอ้างอิง',
+'log-fulllog' => 'ดูบันทึกแบบเต็ม',
'edit-hook-aborted' => 'การแก้ไขถูกยกเลิก
ไม่มีคำอธิบายสำหรับการยกเลิกนี้',
'edit-gone-missing' => 'ไม่สามารถปรับแก้หน้าดังกล่าวได้
@@ -831,7 +888,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'currentrev' => 'รุ่นปัจจุบัน',
'currentrev-asof' => 'รุ่นปัจจุบันของ $1',
'revisionasof' => 'การปรับปรุง เมื่อ $1',
-'revision-info' => 'การปรับปรุง เมื่อ $1 โดย $2', # Additionally available: $3: revision id
+'revision-info' => 'การปรับปรุง เมื่อ $1 โดย $2',
'previousrevision' => '←รุ่นก่อนหน้า',
'nextrevision' => 'รุ่นถัดไป→',
'currentrevisionlink' => 'รุ่นปัจจุบัน',
@@ -843,7 +900,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'histlegend' => 'วิธีเปรียบเทียบ: เลือกปุ่มของรุ่นสองรุ่นที่ต้องการเปรียบเทียบ และกดปุ่มเริ่มเปรียบเทียบด้านล่าง<br />
คำอธิบาย: (ป) = เทียบกับรุ่นปัจจุบัน, (ก) = เทียบกับรุ่นก่อนหน้า, ล = การแก้ไขเล็กน้อย',
'history-fieldset-title' => 'ค้นหาประวัติ',
-'deletedrev' => '[ถูกลบ]',
+'history-show-deleted' => 'เฉพาะที่ถูกลบ',
'histfirst' => 'แรกสุด',
'histlast' => 'ท้ายสุด',
'historysize' => '({{PLURAL:$1|1 ไบต์|$1 ไบต์}})',
@@ -852,69 +909,112 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
# Revision feed
'history-feed-title' => 'ประวัติการปรับปรุง',
'history-feed-description' => 'ประวัติการปรับปรุงของหน้านี้ในวิกิ',
-'history-feed-item-nocomment' => '$1 เมื่อ $2', # user at time
+'history-feed-item-nocomment' => '$1 เมื่อ $2',
'history-feed-empty' => 'หน้าที่ต้องการไม่มี มันอาจถูกลบหรือถูกเปลี่ยนชื่อไปแล้ว ให้ลอง
[[Special:Search|ค้นหาในวิกินี้]] สำหรับหน้าอื่นที่อาจเกี่ยวข้อง',
# Revision deletion
-'rev-deleted-comment' => '(ความเห็นถูกลบออก)',
-'rev-deleted-user' => '(ชื่อผู้ใช้ถูกลบออก)',
-'rev-deleted-event' => '(หน้าที่ใส่เข้ามาถูกลบออก)',
-'rev-deleted-text-permission' => "รุ่นการปรับปรุงของหน้านี้'''ถูกลบแล้ว'''
-รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
-'rev-deleted-text-view' => "รุ่นการปรับปรุงของหน้านี้'''ถูกลบแล้ว'''
-สำหรับผู้ดูแลระบบ คุณยังสามารถเรียกดูได้ รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
-'rev-deleted-no-diff' => "คุณไม่สามารถเรียกดูความเปลี่ยนแปลงนี้ เนื่องจากรุ่นการปรับปรุงบางรุ่น'''ถูกลบแล้ว'''
-รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
-'rev-deleted-unhide-diff' => "รุ่นการปรับปรุงบางรุ่นของความเปลี่ยนแปลงนี้'''ถูกลบแล้ว'''
-รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]
+'rev-deleted-comment' => '(ความเห็นถูกลบออก)',
+'rev-deleted-user' => '(ชื่อผู้ใช้ถูกลบออก)',
+'rev-deleted-event' => '(หน้าที่ใส่เข้ามาถูกลบออก)',
+'rev-deleted-user-contribs' => '[ชื่อผู้ใช้หรือหมายเลขไอพีถูกลบแล้ว - การแก้ไขถูกซ่อนจากรายการแก้ไข]',
+'rev-deleted-text-permission' => "รุ่นการปรับปรุงนี้ของหน้านี้'''ถูกลบแล้ว'''
+รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
+'rev-deleted-text-unhide' => "รุ่นการปรับปรุงนี้ของหน้านี้'''ถูกลบแล้ว'''
+รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]
+สำหรับผู้ดูแลระบบ คุณยังสามารถ[$1 เรียกดูรุ่นการปรับปรุงนี้]หากคุณต้องการ",
+'rev-suppressed-text-unhide' => "ฉบับปรับปรุงของหน้านี้ได้ถูก'''ยับยั้งแล้ว'''
+ซึ่งอาจมีรายละเอียดใน [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ประวัติการยับยั้ง]
+ในฐานะที่คุณเป็นผู้ดูแลระบบ คุณยังสามารถ[$1 ดูฉบับปรับปรุงนี้]ได้ถ้าคุณต้องการ",
+'rev-deleted-text-view' => "รุ่นการปรับปรุงนี้ของหน้านี้'''ถูกลบแล้ว'''
+สำหรับผู้ดูแลระบบ คุณยังสามารถเรียกดูได้ รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
+'rev-suppressed-text-view' => "ฉบับปรับปรุงของหน้านี้ได้ถูก'''ยับยั้งแล้ว'''
+ในฐานะที่คุณเป็นผู้ดูแลระบบคุณสามารถดูฉบับปรับปรุงได้ ซึ่งอาจจะมีรายละเอียดใน[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ประวัติการยับยั้ง]",
+'rev-deleted-no-diff' => "คุณไม่สามารถเรียกดูความเปลี่ยนแปลงนี้ เนื่องจากรุ่นการปรับปรุงที่นำมาเปรียบเทียบมีบางรุ่น'''ถูกลบออก'''
+รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
+'rev-deleted-unhide-diff' => "รุ่นการปรับปรุงบางรุ่นของความเปลี่ยนแปลงนี้'''ถูกลบแล้ว'''
+รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]
สำหรับผู้ดูแลระบบ คุณยังสามารถ[$1 เรียกดูรุ่นการปรับปรุงนี้]หากคุณต้องการ",
-'rev-delundel' => 'แสดง/ซ่อน',
-'revisiondelete' => 'รุ่นการปรับปรุง การลบ/การย้อนการลบ',
-'revdelete-nooldid-title' => 'ไม่มีรุ่นการปรับปรุงที่ต้องการ',
-'revdelete-nooldid-text' => 'รุ่นการปรับปรุงที่ต้องการไม่ได้กำหนด ไม่สามารถใช้คำสั่งนี้ได้',
-'revdelete-nologtype-title' => 'ไม่ได้ระบุประเภทของปูม',
-'revdelete-nologtype-text' => 'คุณไม่ได้ระบุประเภทของปูมที่ใช้ดำเนินการนี้ต่อได้',
-'revdelete-toomanytargets-title' => 'ปลายทางมากเกินไป',
-'revdelete-toomanytargets-text' => 'คุณได้ระบุประเภทของปลายทางมากเกินไปที่จะดำเนินการนี้',
-'revdelete-nologid-title' => 'การแก้ไขในรายการแก้ไขไม่ถูกต้อง',
-'revdelete-nologid-text' => 'คุณไม่ได้กำหนดรายการแก้ไขที่ต้องการกระทำกระบวนการนี้หรือไม่พบรายการแก้ไขที่กำหนด',
-'revdelete-selected' => "'''{{PLURAL:$2|รุ่นการปรับปรุงที่ถูกเลือก|รุ่นการปรับปรุงที่ถูกเลือก}}ของ [[:$1]] :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|เหตุการณ์บันทึกที่ถูกเลือก|เหตุการณ์บันทึกที่ถูกเลือก}} :'''",
-'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบ จะยังคงปรากฏในส่วนประวัติและบันทึกของหน้า แต่ส่วนของเนื้อหาจะไม่สามารถเข้าถึงได้โดยสาธารณะ'''
-ผู้ดูแลระบบคนอื่นบน {{SITENAME}} จะยังคงสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนขึ้นมาอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการตั้งค่าการควบคุมเพิ่มเติม
-
-กรุณายืนยันว่าคุณต้องการทำเช่นนี้ ซึ่งคุณได้เข้าใจผลลัพธ์ที่จะเกิดขึ้น และได้กระทำสอดคล้องกับ[[{{MediaWiki:Policy-url}}|นโยบาย]]",
-'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
+'rev-suppressed-unhide-diff' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ยับยั้งไว้'''
+ซึ่งอาจจะมีรายละเอียดใน[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} รายการยับยั้ง]
+ในฐานะที่เป็นผู้ดูแลระบบ คุณสามารถ [$1 ดูความแตกต่างได้]ถ้าคุณต้องการ",
+'rev-deleted-diff-view' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ลบออก'''
+ในฐานะที่เป็นผู้ดูแลระบบ คุณสามารถดูความแตกต่างนี้ได้ ซึ่งอาจจะมีรายละเอียดใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} รายการลบ]",
+'rev-suppressed-diff-view' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ยับยั้งไว้'''
+ในฐานะที่เป็นผู้ดูแลระบบ คุณสามารถดูความแตกต่างนี้ได้ ซึ่งอาจจะมีรายละเอียดใน[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} รายการยังยั้ง]",
+'rev-delundel' => 'แสดง/ซ่อน',
+'rev-showdeleted' => 'แสดง',
+'revisiondelete' => 'รุ่นการปรับปรุง การลบ/การย้อนการลบ',
+'revdelete-nooldid-title' => 'ไม่มีรุ่นการปรับปรุงที่ต้องการ',
+'revdelete-nooldid-text' => 'รุ่นการปรับปรุงที่ต้องการไม่ได้กำหนด ไม่สามารถใช้คำสั่งนี้ได้',
+'revdelete-nologtype-title' => 'ไม่ได้ระบุประเภทของปูม',
+'revdelete-nologtype-text' => 'คุณไม่ได้ระบุประเภทของปูมที่ใช้ดำเนินการนี้ต่อได้',
+'revdelete-nologid-title' => 'การแก้ไขในรายการแก้ไขไม่ถูกต้อง',
+'revdelete-nologid-text' => 'คุณไม่ได้กำหนดรายการแก้ไขที่ต้องการกระทำกระบวนการนี้หรือไม่พบรายการแก้ไขที่กำหนด',
+'revdelete-no-file' => 'ไม่มีไฟล์ที่ระบุ',
+'revdelete-show-file-confirm' => 'คุณแน่ใจหรือไม่ที่จะดูฉบับปรับปรุงที่ถูกลบของไฟล์ "<nowiki>$1</nowiki>" ของวันที่ $2 เวลา $3?',
+'revdelete-show-file-submit' => 'ใช่',
+'revdelete-selected' => "'''{{PLURAL:$2|รุ่นการปรับปรุงที่ถูกเลือก|รุ่นการปรับปรุงที่ถูกเลือก}}ของ [[:$1]] :'''",
+'logdelete-selected' => "'''{{PLURAL:$1|เหตุการณ์บันทึกที่ถูกเลือก|เหตุการณ์บันทึกที่ถูกเลือก}} :'''",
+'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบ จะยังคงปรากฏในส่วนประวัติและบันทึกของหน้า แต่ส่วนของเนื้อหาจะไม่สามารถเข้าถึงได้โดยสาธารณะ'''
+ผู้ดูแลระบบคนอื่นบน {{SITENAME}} จะยังคงสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนขึ้นมาอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการตั้งค่าการควบคุมเพิ่มเติม",
+'revdelete-confirm' => 'กรุณายืนยันว่าคุณตั้งใจที่จะลบจริง และเข้าใจผลกระทบหลังจากนี้ที่จะเกิดขึ้น และกระทำกายภายใต้[[{{MediaWiki:Policy-url}}|นโยบาย]]',
+'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
* ข้อมูลส่วนบุคคลที่ไม่เหมาะสม
*: ''ที่อยู่และหมายเลขโทรศัพท์จากบ้าน, หมายเลขประกันสังคม, ฯลฯ''",
-'revdelete-legend' => 'ระบุการควบคุม:',
-'revdelete-hide-text' => 'ซ่อนข้อความรุ่นที่ปรับปรุง',
-'revdelete-hide-name' => 'ซ่อนการกระทำและเป้าหมาย',
-'revdelete-hide-comment' => 'ซ่อนความเห็นการแก้ไข',
-'revdelete-hide-user' => 'ซ่อนชื่อผู้แก้ไขและหมายเลขไอพี',
-'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
-'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้ทั่วไป',
-'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
-'revdelete-unsuppress' => 'ลบการควบคุมออกสำหรับรุ่นการปรับปรุงที่ถูกเรียกกลับ',
-'revdelete-log' => 'เหตุผล:',
-'revdelete-submit' => 'กำหนดต่อรุ่นการปรับปรุงที่ถูกเลือก',
-'revdelete-logentry' => 'เปลี่ยนแปลงสถานะการซ่อนรุ่นปรับปรุงของ [[$1]]',
-'logdelete-logentry' => 'การเข้าดูเหตุการณ์ที่ถูกเปลี่ยนของ [[$1]]',
-'revdelete-success' => "'''การแสดงผลของรุ่นปรับปรุงถูกกำหนดค่าเรียบร้อย'''",
-'logdelete-success' => 'การเข้าดูเหตุการณ์ถูกกำหนดค่าเรียบร้อย',
-'revdel-restore' => 'เปลี่ยนทัศนวิสัย',
-'pagehist' => 'ประวัติหน้า',
-'deletedhist' => 'ลบประวัติ',
-'revdelete-content' => 'เนื้อหา',
-'revdelete-summary' => 'คำอธิบายโดยย่อ',
-'revdelete-uname' => 'ชื่อผู้ใช้ :',
-'revdelete-restricted' => 'จำกัดให้เฉพาะผู้ดูแลระบบขั้นพื้นฐาน',
-'revdelete-unrestricted' => 'ยกเลิกการจำกัดให้เฉพาะผู้ดูแลระบบขั้นพื้นฐาน',
-'revdelete-hid' => 'ซ่อน $1',
-'revdelete-unhid' => 'แสดง $1',
-'revdelete-log-message' => '$1 สำหรับ $2 {{PLURAL:$2|รุ่น|รุ่น}}',
-'logdelete-log-message' => '$1 สำหรับ $2 {{PLURAL:$2|เหตุการณ์|เหตุการณ์}}',
+'revdelete-legend' => 'ระบุการควบคุม:',
+'revdelete-hide-text' => 'ซ่อนข้อความรุ่นที่ปรับปรุง',
+'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
+'revdelete-hide-name' => 'ซ่อนการกระทำและเป้าหมาย',
+'revdelete-hide-comment' => 'ซ่อนความเห็นการแก้ไข',
+'revdelete-hide-user' => 'ซ่อนชื่อผู้แก้ไขและหมายเลขไอพี',
+'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
+'revdelete-radio-same' => '(ไม่เปลี่ยนแปลง)',
+'revdelete-radio-set' => 'ใช่',
+'revdelete-radio-unset' => 'ไม่',
+'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้ทั่วไป',
+'revdelete-unsuppress' => 'ลบการควบคุมออกสำหรับรุ่นการปรับปรุงที่ถูกเรียกกลับ',
+'revdelete-log' => 'เหตุผล:',
+'revdelete-submit' => 'ใช้กับ{{PLURAL:$1|รุ่น|รุ่น}}ที่เลือก',
+'revdelete-logentry' => 'เปลี่ยนแปลงสถานะการซ่อนรุ่นปรับปรุงของ [[$1]]',
+'logdelete-logentry' => 'การเข้าดูเหตุการณ์ที่ถูกเปลี่ยนของ [[$1]]',
+'revdelete-success' => "'''การแสดงผลของรุ่นปรับปรุงถูกกำหนดค่าเรียบร้อย'''",
+'revdelete-failure' => "'''การแสดงผลของรุ่นปรับปรุงไม่สามารถกำหนดค่าได้:'''
+$1",
+'logdelete-success' => 'การเข้าดูเหตุการณ์ถูกกำหนดค่าเรียบร้อย',
+'logdelete-failure' => "'''ไม่สามารถตั้งค่าการแสดงผลของรายการแก้ไขได้:'''
+$1",
+'revdel-restore' => 'เปลี่ยนทัศนวิสัย',
+'pagehist' => 'ประวัติหน้า',
+'deletedhist' => 'ลบประวัติ',
+'revdelete-content' => 'เนื้อหา',
+'revdelete-summary' => 'คำอธิบายโดยย่อ',
+'revdelete-uname' => 'ชื่อผู้ใช้ :',
+'revdelete-restricted' => 'จำกัดให้เฉพาะผู้ดูแลระบบขั้นพื้นฐาน',
+'revdelete-unrestricted' => 'ยกเลิกการจำกัดให้เฉพาะผู้ดูแลระบบขั้นพื้นฐาน',
+'revdelete-hid' => 'ซ่อน $1',
+'revdelete-unhid' => 'แสดง $1',
+'revdelete-log-message' => '$1 สำหรับ $2 {{PLURAL:$2|รุ่น|รุ่น}}',
+'logdelete-log-message' => '$1 สำหรับ $2 {{PLURAL:$2|เหตุการณ์|เหตุการณ์}}',
+'revdelete-hide-current' => 'เกิดความผิดพลาดในการซ่อนฉบับปรับปรุงในวันที่ $2 เวลา $1: นี่คือฉบับปรังปรุงปัจจุบัน
+ไม่สามารถซ่อนได้',
+'revdelete-show-no-access' => 'เกิดความผิดพลาดในการดูฉบับปรับปรุงในวันที่ $2 เวลา $1: ฉบับปรับปรุงนี้ถูกกำหนดให้ "จำกัดการดู"
+คุณไม่มีสิทธิ์ดูฉบับปรับปรุงดังกล่าว',
+'revdelete-modify-no-access' => 'เกิดความผิดพลาดในการแก้ไขฉบับปรับปรุงในวันที่ $2 เวลา $1: ฉบับปรับปรุงนี้ถูกกำหนดให้ "จำกัดการแก้ไข"
+คุณไม่มีสิทธิ์แก้ไขฉบับปรับปรุงดังกล่าว',
+'revdelete-modify-missing' => 'เิกิดความผิดพลาดในการแก้ไขฉบับปรังปรุงหมายเลข $1: รายการนี้สูญหายจากฐานข้อมูล!',
+'revdelete-no-change' => "'''คำเตือน:''' ฉบับปรับปรุงวันที่ $2 เวลา $1 มีการตั้งค่าการให้ดูที่ร้องขออยู่แล้ว",
+'revdelete-concurrent-change' => 'เกิดความผิดพลาดในการแก้ไขฉบับปรับปรุงในวันที่ $2 เวลา $1: สถานะของฉบับปรับปรุงได้ถูกเปลี่ยนโดยใครบางคนในขณะที่คุณพยายามแก้ไขอยู่
+กรุณาตรวจสอบประวัติการแก้ไข',
+'revdelete-only-restricted' => 'เกิดความผิดพลาดในการซ่อนฉบับปรับปรุงในวันที่ $2 เวลา $1: คุณไม่สามารถยับยั้งผู้ดูแลระบบจากการดูฉบับปรับปรุงนี้โดยที่ไม่ได้เลือกตัวเลือกการให้ดูอื่นๆ',
+'revdelete-reason-dropdown' => '*เหตุผลโดยทั่วไปในการลบ
+** ละเมิดลิขสิทธิ์
+** มีข้อมูลส่วนบุคคลที่ไม่เหมาะสม
+** มีข้อมูลที่อาจสร้างความเสียหาย',
+'revdelete-otherreason' => 'เหตุผลอื่นหรือเหตุผลเพิ่มเติม:',
+'revdelete-reasonotherlist' => 'เหตุผลอื่น',
+'revdelete-edit-reasonlist' => 'แก้ไขรายชื่อเหตุผลในการลบ',
+'revdelete-offender' => 'ผู้เขียนของรุ่น:',
# Suppression log
'suppressionlog' => 'บันทึกการระงับ',
@@ -951,49 +1051,13 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'mergelogpagetext' => 'ด้านล่างนี้แสดงรายการล่าสุดของการรวมประวัติหน้าหนึ่งๆ เข้ากับอีกหน้าหนึ่ง',
# Diffs
-'history-title' => 'ประวัติการแก้ไขหน้า "$1"',
-'difference' => '(ความแตกต่างระหว่างรุ่นปรับปรุง)',
-'lineno' => 'แถว $1:',
-'compareselectedversions' => 'เปรียบเทียบสองรุ่นที่เลือก',
-'visualcomparison' => 'การเปรียบเทียบลักษณะปรากฏ',
-'wikicodecomparison' => 'การเปรียบเทียบข้อความวิกิ',
-'editundo' => 'ย้อน',
-'diff-multi' => '({{PLURAL:$1|การแก้ไขหนึ่งรุ่นระหว่างรุ่นที่เปรียบเทียบ|การแก้ไข $1 รุ่นระหว่างรุ่นที่เปรียบเทียบ}}ไม่แสดงผล)',
-'diff-movedto' => 'ย้ายไปยัง $1 แล้ว',
-'diff-styleadded' => 'รูปแบบ $1 ถูกเพิ่ม',
-'diff-added' => '$1 ถูกเพิ่มแล้ว',
-'diff-changedto' => 'เปลี่ยนไปยัง $1',
-'diff-styleremoved' => 'รูปแบบ $1 ถูกนำออก',
-'diff-removed' => '$1 ถูกลบ',
-'diff-changedfrom' => 'เปลี่ยนมาจาก $1',
-'diff-src' => 'แหล่งที่มา',
-'diff-with' => '&#32;กับ $1 $2',
-'diff-with-final' => '&#32;และ $1 $2',
-'diff-width' => 'ความกว้าง',
-'diff-height' => 'ความสูง',
-'diff-p' => "'''ย่อหน้า'''",
-'diff-h1' => "'''หัวข้อ (ระดับ 1)'''",
-'diff-h2' => "'''หัวข้อ (ระดับ 2)'''",
-'diff-h3' => "'''หัวข้อ (ระดับ 3)'''",
-'diff-h4' => "'''หัวข้อ (ระดับ 4)'''",
-'diff-h5' => "'''หัวข้อ (ระดับ 5)'''",
-'diff-table' => "'''ตาราง'''",
-'diff-tr' => "'''แถว'''",
-'diff-td' => "'''ช่อง'''",
-'diff-form' => "'''แบบฟอร์ม'''",
-'diff-img' => "'''ภาพ'''",
-'diff-a' => "'''ลิงก์'''",
-'diff-i' => "'''ตัวเอน'''",
-'diff-b' => "'''ตัวหนา'''",
-'diff-strong' => "'''เข้ม'''",
-'diff-em' => "'''เน้น'''",
-'diff-font' => "'''ฟอนต์'''",
-'diff-big' => "'''ใหญ่'''",
-'diff-del' => "'''ถูกลบ'''",
-'diff-tt' => "'''ความกว้างคงที่'''",
-'diff-sub' => "'''ตัวห้อย'''",
-'diff-sup' => "'''เยื้องขึ้นบน'''",
-'diff-strike' => "'''ขีดเส้นฆ่า'''",
+'history-title' => 'ประวัติการแก้ไขหน้า "$1"',
+'difference' => '(ความแตกต่างระหว่างรุ่นปรับปรุง)',
+'lineno' => 'แถว $1:',
+'compareselectedversions' => 'เปรียบเทียบสองรุ่นที่เลือก',
+'showhideselectedversions' => 'แสดง/ซ่อน รุ่นที่เลือก',
+'editundo' => 'ย้อน',
+'diff-multi' => '({{PLURAL:$1|การแก้ไขหนึ่งรุ่นระหว่างรุ่นที่เปรียบเทียบ|การแก้ไข $1 รุ่นระหว่างรุ่นที่เปรียบเทียบ}}ไม่แสดงผล)',
# Search results
'searchresults' => 'ค้นหา',
@@ -1001,28 +1065,25 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'searchresulttext' => 'วิธีการค้นหาใน {{SITENAME}} ดูวิธีใช้งานเพิ่มที่ [[{{MediaWiki:Helppage}}|{{int:help}}]]',
'searchsubtitle' => 'คุณได้สืบค้นเพื่อหา \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ทุกหน้าที่ขึ้นต้นด้วย "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ทุกหน้าที่โยงมาที่ "$1"]])',
'searchsubtitleinvalid' => "ค้นหาเกี่ยวกับ '''$1'''",
-'noexactmatch' => "'''ไม่พบหัวข้อ \"\$1\"''' คุณอาจจะ [[:\$1|สร้างหน้าใหม่ในชื่อนี้]]",
-'noexactmatch-nocreate' => "'''ไม่มีหน้าหัวเรื่อง \"\$1\" อยู่ในสารบบ'''",
'toomanymatches' => 'หัวข้อที่พบมีมากเกินไป กรุณาใช้คำค้นหาอื่น',
'titlematches' => 'พบชื่อหัวข้อนี้',
'notitlematches' => 'ไม่พบชื่อหัวข้อนี้',
'textmatches' => 'พบคำนี้ในหน้า',
'notextmatches' => 'ไม่พบข้อความในหน้า',
-'prevn' => 'ก่อนหน้า $1',
-'nextn' => 'ถัดไป $1',
+'prevn' => 'ก่อนหน้า {{PLURAL:$1|$1}}',
+'nextn' => 'ถัดไป {{PLURAL:$1|$1}}',
'prevn-title' => '$1 {{PLURAL:$1|ผลลัพธ์|ผลลัพธ์}}ก่อนหน้า',
'nextn-title' => '$1 {{PLURAL:$1|ผลลัพธ์|ผลลัพธ์}}ถัดไป',
'shown-title' => 'แสดง $1 {{PLURAL:$1|ผลลัพธ์|ผลลัพธ์}}ต่อหน้า',
-'viewprevnext' => 'ดู ($1) ($2) ($3)',
+'viewprevnext' => 'ดู ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'ตัวเลือกการค้นหา',
'searchmenu-exists' => "'''มีหน้าที่ชื่อว่า \"[[:\$1]]\" บนวิกินี้'''",
'searchmenu-new' => "'''สร้างหน้า \"[[:\$1]]\" บนวิกินี้'''",
'searchhelp-url' => 'Help:วิธีการใช้งาน',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|สืบค้นหน้าที่มีคำขึ้นต้นเหล่านี้]]',
'searchprofile-articles' => 'หน้าบทความ',
-'searchprofile-articles-and-proj' => 'หน้าเนื้อหาและโครงการ',
-'searchprofile-project' => 'หน้าโครงการ',
-'searchprofile-images' => 'ไฟล์',
+'searchprofile-project' => 'วิธีใช้และหน้าโครงการ',
+'searchprofile-images' => 'มัลติมีเดีย',
'searchprofile-everything' => 'ทุกสิ่งทั้งหมด',
'searchprofile-advanced' => 'ชั้นสูง',
'searchprofile-articles-tooltip' => 'ค้นหาใน $1',
@@ -1030,8 +1091,6 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'searchprofile-images-tooltip' => 'ค้นหาไฟล์',
'searchprofile-everything-tooltip' => 'ค้นเนื้อหาทั้งหมด (รวมถึงหน้าอภิปราย)',
'searchprofile-advanced-tooltip' => 'ค้นหาในเนมสเปซที่เลือกเอง',
-'prefs-search-nsdefault' => 'ค้นหาโดยใช้ค่าพื้นฐาน:',
-'prefs-search-nscustom' => 'สืบค้นเนมสเปซที่ปรับแต่งเอง:',
'search-result-size' => '$1 ({{PLURAL:$2|1 คำ|$2 คำ}})',
'search-result-score' => 'ความเกี่ยวข้อง : $1%',
'search-redirect' => '(เปลี่ยนทาง $1)',
@@ -1044,11 +1103,12 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'search-mwsuggest-disabled' => 'ไม่รวมคำแนะนำ',
'search-relatedarticle' => 'สัมพันธ์',
'mwsuggest-disable' => 'ยกเลิกการแนะนำในลักษณะเอแจ็กซ์',
+'searcheverything-enable' => 'สืบค้นในเนมสเปซทั้งหมด',
'searchrelated' => 'สัมพันธ์',
'searchall' => 'ทั้งหมด',
'showingresults' => "แสดง $1 รายการ เริ่มต้นจากรายการที่ '''$2'''",
'showingresultsnum' => "แสดง $3 รายการ เริ่มต้นจากรายการที่ '''$2'''",
-'showingresultstotal' => "ด้านล่างนี้แสดง{{PLURAL:$4|ผลลัพธ์ '''$1''' จาก '''$3'''|ผลลัพธ์ '''$1 - $2''' จาก '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|ผลการสืบค้น '''$1''' จาก '''$3'''|ผลการสืบค้น '''$1 - $2''' จาก '''$3'''}} สำหรับ '''$4'''",
'nonefound' => "'''คำเตือน''': เนมสเปซบางส่วนจะถูกค้นหาเอง
ให้ลองเลือกคำขึ้นต้นการค้นหาด้วย ''all:'' สำหรับค้นหาเนื้อหาทั้งหมด (รวมถึง หน้าอภิปราย แม่แบบ ฯลฯ) หรือเลือกเนมสเปซที่ต้องการ",
'search-nonefound' => 'ไม่มีผลลัพธ์ตามคำค้นที่กำหนด',
@@ -1057,93 +1117,130 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'powersearch-ns' => 'ค้นหาในเนมสเปซ:',
'powersearch-redir' => 'รายการหน้าเปลี่ยนทาง',
'powersearch-field' => 'ค้นหา',
+'powersearch-togglelabel' => 'เลือก:',
+'powersearch-toggleall' => 'ทั้งหมด',
+'powersearch-togglenone' => 'ไม่เลือก',
'search-external' => 'ค้นหาจากภายนอก',
'searchdisabled' => 'ระบบการค้นหาใน {{SITENAME}} ไม่เปิดการใช้งาน คุณสามารถค้นหาในกูเกิลหรือเซิร์ชเอนจินอื่น โปรดจำไว้ว่าเนื้อหาของ {{SITENAME}} บนเซิร์ชเอนจินอาจเป็นข้อมูลเก่า',
+# Quickbar
+'qbsettings' => 'แถบพิเศษ',
+'qbsettings-none' => 'ไม่มี',
+'qbsettings-fixedleft' => 'อยู่ทางซ้าย',
+'qbsettings-fixedright' => 'อยู่ทางขวา',
+'qbsettings-floatingleft' => 'ด้านซ้าย',
+'qbsettings-floatingright' => 'ด้านขวา',
+
# Preferences page
-'preferences' => 'ตั้งค่าส่วนตัว',
-'mypreferences' => 'ตั้งค่าส่วนตัว',
-'prefs-edits' => 'จำนวนการแก้ไข:',
-'prefsnologin' => 'ไม่ได้ล็อกอิน',
-'prefsnologintext' => 'คุณต้อง<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ล็อกอิน]</span> ก่อนเพื่อที่จะตั้งค่าส่วนตัวได้',
-'prefsreset' => 'การตั้งค่าถูกตั้งเป็นค่าเริ่มต้น',
-'qbsettings' => 'แถบพิเศษ',
-'qbsettings-none' => 'ไม่มี',
-'qbsettings-fixedleft' => 'อยู่ทางซ้าย',
-'qbsettings-fixedright' => 'อยู่ทางขวา',
-'qbsettings-floatingleft' => 'ด้านซ้าย',
-'qbsettings-floatingright' => 'ด้านขวา',
-'changepassword' => 'เปลี่ยนรหัสผ่าน',
-'skin' => 'หน้าตา',
-'skin-preview' => 'แสดงตัวอย่าง',
-'math' => 'คณิตศาสตร์',
-'dateformat' => 'รูปแบบวันที่',
-'datedefault' => 'ค่าตั้งต้น',
-'datetime' => 'วันและเวลา',
-'math_failure' => 'ส่งผ่านค่าไม่ได้',
-'math_unknown_error' => 'ข้อผิดพลาดที่ไม่ทราบ',
-'math_unknown_function' => 'คำสั่งที่ไม่ทราบ',
-'math_lexing_error' => 'การจำแนกสูตรผิดพลาด',
-'math_syntax_error' => 'ไวยากรณ์ผิดพลาด',
-'math_image_error' => 'การแปลงเป็นไฟล์ PNG ขัดข้อง กรุณาตรวจสอบการติดตั้ง LaTex, dvips, gs, และ convert',
-'math_bad_tmpdir' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรกทอรีชั่วคราวสำหรับเก็บค่าทางคณิตศาสตร์ได้',
-'math_bad_output' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรกทอรีปลายทางสำหรับเก็บค่าทางคณิตศาสตร์ได้',
-'math_notexvc' => 'เกิดข้อความผิดพลาด texvc ไม่พบ กรุณาตรวจสอบ math/README เพื่อตั้งค่า',
-'prefs-personal' => 'รายละเอียดผู้ใช้',
-'prefs-rc' => 'ปรับปรุงล่าสุด',
-'prefs-watchlist' => 'รายการเฝ้าดู',
-'prefs-watchlist-days' => 'จำนวนวันที่แสดงในรายการเฝ้าดู:',
-'prefs-watchlist-days-max' => '(มากสุด 7 วัน)',
-'prefs-watchlist-edits' => 'จำนวนการแก้ไขที่แสดงในรายการเฝ้าดูที่มีการคลี่ออก:',
-'prefs-watchlist-edits-max' => '(จำนวนมากสุด: 1000)',
-'prefs-misc' => 'เบ็ดเตล็ด',
-'prefs-resetpass' => 'เปลี่ยนรหัสผ่าน',
-'saveprefs' => 'บันทึก',
-'resetprefs' => 'กลับไปยังค่าที่บันทึก',
-'restoreprefs' => 'บันทึกคืนค่าตั้งต้นทั้งหมด',
-'textboxsize' => 'แก้ไข',
-'prefs-edit-boxsize' => 'ขนาดหน้าจอกล่องแก้ไข',
-'rows' => 'แถว:',
-'columns' => 'คอลัมน์:',
-'searchresultshead' => 'สืบค้น',
-'resultsperpage' => 'รายการต่อหน้า:',
-'contextlines' => 'บรรทัดที่แสดงต่อรายการ:',
-'contextchars' => 'ตัวอักษรต่อบรรทัด:',
-'stub-threshold' => 'ขีดแบ่งสำหรับ <a href="#" class="stub">รูปแบบโครง</a> (ความยาวบทความ):',
-'recentchangesdays' => 'จำนวนวันที่แสดงในปรับปรุงล่าสุด:',
-'recentchangesdays-max' => '(สูงสุด $1 {{PLURAL:$1|วัน|วัน}})',
-'recentchangescount' => 'จำนวนการแก้ไขที่แสดงในส่วนปรับปรุงล่าสุด ประวัติหน้า และบันทึก ตามค่าตั้งต้น:',
-'savedprefs' => 'การตั้งค่าของคุณได้ถูกบันทึกแล้ว',
-'timezonelegend' => 'เขตเวลา:',
-'timezonetext' => 'จำนวนชั่วโมงที่แตกต่างจากเวลาเซิร์ฟเวอร์ (UTC)',
-'localtime' => 'เวลาท้องถิ่น',
-'timezoneselect' => 'เขตเวลา:',
-'timezoneuseserverdefault' => 'ใช้ค่าตั้งต้นของเซิร์ฟเวอร์',
-'timezoneuseoffset' => 'อื่นๆ (ระบุส่วนต่างเวลา)',
-'timezoneoffset' => 'เวลาต่าง¹:',
-'servertime' => 'เวลาที่เซิร์ฟเวอร์:',
-'guesstimezone' => 'เรียกค่าจากเว็บเบราว์เซอร์',
-'timezoneregion-africa' => 'แอฟริกา',
-'timezoneregion-america' => 'อเมริกา',
-'timezoneregion-antarctica' => 'แอนตาร์กติก',
-'timezoneregion-arctic' => 'อาร์กติก',
-'timezoneregion-asia' => 'เอเชีย',
-'timezoneregion-atlantic' => 'มหาสมุทรแอตแลนติก',
-'timezoneregion-australia' => 'ออสเตรเลีย',
-'timezoneregion-europe' => 'ยุโรป',
-'timezoneregion-indian' => 'มหาสมุทรอินเดีย',
-'timezoneregion-pacific' => 'มหาสมุทรแปซิฟิก',
-'allowemail' => 'เปิดรับอีเมลจากผู้ใช้อื่น',
-'prefs-searchoptions' => 'ตั้งค่าการค้นหา',
-'prefs-namespaces' => 'เนมสเปซ',
-'defaultns' => 'ค้นหาในเนมสเปซ (ค่าตั้งต้น):',
-'default' => 'ค่าตั้งต้น',
-'files' => 'ไฟล์',
-'prefs-custom-css' => 'สไตล์ชีตปรับแต่งเอง',
-'prefs-custom-js' => 'จาวาสคริปต์ปรับแต่งเอง',
+'preferences' => 'ตั้งค่าส่วนตัว',
+'mypreferences' => 'ตั้งค่าส่วนตัว',
+'prefs-edits' => 'จำนวนการแก้ไข:',
+'prefsnologin' => 'ไม่ได้ล็อกอิน',
+'prefsnologintext' => 'คุณต้อง<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ล็อกอิน]</span> ก่อนเพื่อที่จะตั้งค่าส่วนตัวได้',
+'changepassword' => 'เปลี่ยนรหัสผ่าน',
+'prefs-skin' => 'หน้าตา',
+'skin-preview' => 'แสดงตัวอย่าง',
+'prefs-math' => 'คณิตศาสตร์',
+'datedefault' => 'ค่าตั้งต้น',
+'prefs-datetime' => 'วันที่และเวลา',
+'prefs-personal' => 'รายละเอียดผู้ใช้',
+'prefs-rc' => 'ปรับปรุงล่าสุด',
+'prefs-watchlist' => 'รายการเฝ้าดู',
+'prefs-watchlist-days' => 'จำนวนวันที่แสดงในรายการเฝ้าดู:',
+'prefs-watchlist-days-max' => '(มากสุด 7 วัน)',
+'prefs-watchlist-edits' => 'จำนวนการแก้ไขที่แสดงในรายการเฝ้าดูที่มีการคลี่ออก:',
+'prefs-watchlist-edits-max' => '(จำนวนมากสุด: 1000)',
+'prefs-watchlist-token' => 'สัญลักษณ์รายการเฝ้าดู:',
+'prefs-misc' => 'เบ็ดเตล็ด',
+'prefs-resetpass' => 'เปลี่ยนรหัสผ่าน',
+'prefs-email' => 'การตั้งค่าอีเมล',
+'prefs-rendering' => 'รูปลักษณ์',
+'saveprefs' => 'บันทึก',
+'resetprefs' => 'กลับไปยังค่าที่บันทึก',
+'restoreprefs' => 'บันทึกคืนค่าตั้งต้นทั้งหมด',
+'prefs-editing' => 'การแก้ไข',
+'prefs-edit-boxsize' => 'ขนาดหน้าจอกล่องแก้ไข',
+'rows' => 'แถว:',
+'columns' => 'คอลัมน์:',
+'searchresultshead' => 'สืบค้น',
+'resultsperpage' => 'รายการต่อหน้า:',
+'contextlines' => 'บรรทัดที่แสดงต่อรายการ:',
+'contextchars' => 'ตัวอักษรต่อบรรทัด:',
+'stub-threshold' => 'ขีดแบ่งสำหรับ <a href="#" class="stub">รูปแบบโครง</a> (ความยาวบทความ):',
+'recentchangesdays' => 'จำนวนวันที่แสดงในปรับปรุงล่าสุด:',
+'recentchangesdays-max' => '(สูงสุด $1 {{PLURAL:$1|วัน|วัน}})',
+'recentchangescount' => 'จำนวนการแก้ไขที่แสดงโดยปริยาย:',
+'prefs-help-recentchangescount' => 'นี่รวมไปถึงการแก้ไขล่าสุด, ประวิติของหน้า, และรายการแก้ไขอื่นๆ',
+'prefs-help-watchlist-token' => 'การเติมช่องนี้ด้วยรหัสลับจะสร้าง RSS feed สำหรับรายการเฝ้าดูของคุณ
+ผู้ใดที่รู้รหัสในช่องนี้จะสามารถดูรายการเฝ้าดูของคุณได้ ดังนั้นเลือกรหัสที่ปลอดภัย
+นี่คือรหัสที่สุ่มเลือกขึ้นมาที่คุณสามารถใช้ได้: $1',
+'savedprefs' => 'การตั้งค่าของคุณได้ถูกบันทึกแล้ว',
+'timezonelegend' => 'เขตเวลา:',
+'localtime' => 'เวลาท้องถิ่น',
+'timezoneuseserverdefault' => 'ใช้ค่าตั้งต้นของเซิร์ฟเวอร์',
+'timezoneuseoffset' => 'อื่นๆ (ระบุส่วนต่างเวลา)',
+'timezoneoffset' => 'เวลาต่าง¹:',
+'servertime' => 'เวลาที่เซิร์ฟเวอร์:',
+'guesstimezone' => 'เรียกค่าจากเว็บเบราว์เซอร์',
+'timezoneregion-africa' => 'แอฟริกา',
+'timezoneregion-america' => 'อเมริกา',
+'timezoneregion-antarctica' => 'แอนตาร์กติก',
+'timezoneregion-arctic' => 'อาร์กติก',
+'timezoneregion-asia' => 'เอเชีย',
+'timezoneregion-atlantic' => 'มหาสมุทรแอตแลนติก',
+'timezoneregion-australia' => 'ออสเตรเลีย',
+'timezoneregion-europe' => 'ยุโรป',
+'timezoneregion-indian' => 'มหาสมุทรอินเดีย',
+'timezoneregion-pacific' => 'มหาสมุทรแปซิฟิก',
+'allowemail' => 'เปิดรับอีเมลจากผู้ใช้อื่น',
+'prefs-searchoptions' => 'ตั้งค่าการค้นหา',
+'prefs-namespaces' => 'เนมสเปซ',
+'defaultns' => 'หรือค้นหาในเนมสเปซต่อไปนี้:',
+'default' => 'ค่าตั้งต้น',
+'prefs-files' => 'ไฟล์',
+'prefs-custom-css' => 'สไตล์ชีตปรับแต่งเอง',
+'prefs-custom-js' => 'จาวาสคริปต์ปรับแต่งเอง',
+'prefs-reset-intro' => 'คุณสามารถใช้หน้านี้เพื่อล้างการตั้งค่าของคุณกลับไปเป็นค่าตั้งต้นทั้งหมด
+เมื่อล้างแล้วจะไม่สามารถย้อนกลับได้',
+'prefs-emailconfirm-label' => 'การยืนยันอีเมล:',
+'prefs-textboxsize' => 'ขนาดของหน้าต่างแก้ไข',
+'youremail' => 'อีเมล:',
+'username' => 'ชื่อผู้ใช้:',
+'uid' => 'รหัสผู้ใช้:',
+'prefs-memberingroups' => 'สมาชิกใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:',
+'prefs-registration' => 'วันเวลาที่ลงทะเบียน:',
+'yourrealname' => 'ชื่อจริง:',
+'yourlanguage' => 'ภาษา:',
+'yourvariant' => 'ภาษาอื่น',
+'yournick' => 'ลายเซ็น:',
+'prefs-help-signature' => 'คอมเมนต์ในหน้าูพูดคุยควรจะเซ็นลงท้ายด้วย "<nowiki>~~~~</nowiki>" ซึ่งจะถูกแปลงเป็นลายเซ็นต์และลงวันที่เขียน',
+'badsig' => 'ลายเซ็นที่ใช้ผิดพลาด กรุณาตรวจสอบคำสั่งเอชทีเอ็มแอล',
+'badsiglength' => 'ลายเซ็นยาวเกินไป ต้องมีความยาวไม่เกิน $1 {{PLURAL:$1|ตัวอักษร|ตัวอักษร}}',
+'yourgender' => 'เพศ:',
+'gender-unknown' => 'ไม่ระบุ',
+'gender-male' => 'ชาย',
+'gender-female' => 'หญิง',
+'prefs-help-gender' => 'เป็นข้อมูลเสริม: ใช้เพื่อให้ซอฟต์แวร์สามารถแยกแยะเพศของผู้ใช้ได้ ข้อมูลนี้จะเป็นที่เปิดเผย',
+'email' => 'อีเมล',
+'prefs-help-realname' => 'ไม่จำเป็นต้องใส่ชื่อจริง โดยชื่อที่ใส่นั้นจะถูกใช้เพียงแค่แสดงผลงานที่คุณได้ร่วมสร้างไว้',
+'prefs-help-email' => 'ไม่จำเป็นต้องใส่อีเมล แต่กรุณาตระหนักว่าหากคุณลืมรหัสผ่าน รหัสผ่านใหม่จะถูกส่งผ่านอีเมลของคุณ
+และผู้ใช้ผู้อื่นสามารถติดต่อคุณผ่านอีเมลที่ใส่นี้ จากหน้าผู้ใช้ หรือคุยกับผู้ใช้ของคุณ แต่อีเมลของคุณจะไม่ปรากฏให้ผู้อื่นเห็นแต่อย่างใด',
+'prefs-help-email-required' => 'ต้องการที่อยู่อีเมล',
+'prefs-info' => 'ข้อมูลเบื้องต้น',
+'prefs-i18n' => 'ระบบภาษาหรือเขตพื้นที่',
+'prefs-signature' => 'ลายเซ็น',
+'prefs-dateformat' => 'รูปแบบวันที่',
+'prefs-timeoffset' => 'ส่วนต่างเวลา',
+'prefs-advancedediting' => 'การตั้งค่าขั้นสูง',
+'prefs-advancedrc' => 'การตั้งค่าขั้นสูง',
+'prefs-advancedrendering' => 'การตั้งค่าขั้นสูง',
+'prefs-advancedsearchoptions' => 'การตั้งค่าขั้นสูง',
+'prefs-advancedwatchlist' => 'การตั้งค่าขั้นสูง',
+'prefs-display' => 'ค่าการแสดงผล',
+'prefs-diffs' => 'ส่วนต่างการแก้ไข',
# User rights
-'userrights' => 'บริหารสิทธิผู้ใช้', # Not used as normal message but as header for the special page itself
+'userrights' => 'บริหารสิทธิผู้ใช้',
'userrights-lookup-user' => 'บริหารสิทธิผู้ใช้',
'userrights-user-editname' => 'ใส่ชื่อผู้ใช้:',
'editusergroup' => 'แก้ไขผู้ใช้',
@@ -1214,6 +1311,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'right-bigdelete' => 'ลบหน้าที่มีประวัติหน้าขนาดใหญ่',
'right-deleterevision' => 'ลบและเรียกคืนรุ่นที่เจาะจงของหน้าต่าง ๆ',
'right-deletedhistory' => 'ดูรายการประวัติที่ถูกลบ โดยไม่มีข้อความที่เกี่ยวข้อง',
+'right-deletedtext' => 'เรียกดูข้อความที่ถูกลบและความเปลี่ยนแปลงระหว่างรุ่นที่ถูกลบ',
'right-browsearchive' => 'ค้นหาหน้าที่ถูกลบ',
'right-undelete' => 'เรียกคืนหน้า',
'right-suppressrevision' => 'ดูและเรียกคืนรุ่นที่ซ่อนโดยผู้ดูแลระบบขั้นพื้นฐาน',
@@ -1227,6 +1325,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'right-editprotected' => 'แก้ไขหน้าที่ถูกล็อก (ที่ไม่ล็อกแบบสืบทอด)',
'right-editinterface' => 'แก้ไขอินเตอร์เฟซของผู้ใช้',
'right-editusercssjs' => 'แก้ไข CSS และ JS ของผู้ใช้คนอื่น',
+'right-editusercss' => 'แก้ไข CSS ของผู้ใช้คนอื่น',
+'right-edituserjs' => 'แก้ไข JS ของผู้ใช้คนอื่น',
'right-rollback' => 'ย้อนการแก้ไขของผู้ใช้ล่าสุดที่แก้ไขบางหน้าโดยเฉพาะอย่างรวดเร็ว',
'right-markbotedits' => 'ทำเครื่องหมายการย้อนว่าเป็นการแก้ไขโดยบอต',
'right-noratelimit' => 'ไม่มีผลกระทบจากการจำกัดสิทธิตามเวลา',
@@ -1243,6 +1343,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'right-siteadmin' => 'ล็อกและปลดล็อกฐานข้อมูล',
'right-reset-passwords' => 'ตั้งรหัสผ่านของผู้ใช้อื่นใหม่',
'right-override-export-depth' => 'ส่งออกหน้า รวมหน้าที่เชื่อมโยงกับหน้านี้สูงสุด 5 ลำดับชั้น',
+'right-versiondetail' => 'แสดงข้อมูลรุ่นปรับปรุงของซอฟต์แวร์',
+'right-sendemail' => 'ส่งอีเมลไปยังผู้ใช้อื่นๆ',
# User rights log
'rightslog' => 'บันทึกการเปลี่ยนสิทธิผู้ใช้',
@@ -1292,6 +1394,15 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'recentchanges-legend' => 'ตัวเลือกปรับปรุงล่าสุด',
'recentchangestext' => 'ในหน้านี้เป็นรายการล่าสุดที่มีการปรับปรุง',
'recentchanges-feed-description' => 'ฟีดนี้แสดงการเปลี่ยนแปลงล่าสุด',
+'recentchanges-label-legend' => 'สัญลักษณ์: $1',
+'recentchanges-legend-newpage' => '$1 - หน้าใหม่',
+'recentchanges-label-newpage' => 'การแก้ไขนี้เป็นการสร้างหน้าใหม่',
+'recentchanges-legend-minor' => '$1 - การแก้ไขเล็กน้อย',
+'recentchanges-label-minor' => 'เป็นการแก้ไขเล็กน้อย',
+'recentchanges-legend-bot' => '$1 - การแก้ไขโดยบอต',
+'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
+'recentchanges-legend-unpatrolled' => '$1 - การแก้ไขที่รอตรวจสอบ',
+'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
'rcnote' => "รายการด้านล่างคือการแก้ไข {{PLURAL:$1|'''1''' รายการ|ล่าสุด '''$1''' รายการ}} ในช่วง {{PLURAL:$2|1 วัน|'''$2''' วัน}}ที่ผ่านมา ตั้งแต่วันที่ $5; $4",
'rcnotefrom' => "แสดงการเปลี่ยนแปลงตั้งแต่ '''$2''' (แสดง '''$1''' รายการ)",
'rclistfrom' => 'แสดงการเปลี่ยนแปลงตั้งแต่ $1',
@@ -1309,6 +1420,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'minoreditletter' => 'ล',
'newpageletter' => 'ม',
'boteditletter' => 'บ',
+'unpatrolledletter' => '!',
'number_of_watching_users_pageview' => '[$1 คนเฝ้าดู]',
'rc_categories' => 'จำกัดเฉพาะหมวดหมู่ (แยกด้วย "|")',
'rc_categories_any' => 'ใดๆ',
@@ -1318,6 +1430,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
# Recent changes linked
'recentchangeslinked' => 'ปรับปรุงที่เกี่ยวโยง',
+'recentchangeslinked-feed' => 'ปรับปรุงที่เกี่ยวโยง',
+'recentchangeslinked-toolbox' => 'ปรับปรุงที่เกี่ยวโยง',
'recentchangeslinked-title' => 'การปรับปรุงที่ "$1" โยงมา',
'recentchangeslinked-noresult' => 'ไม่มีการเปลี่ยนแปลงในหน้าที่ถูกโยงไป ในช่วงเวลาที่กำหนด',
'recentchangeslinked-summary' => "หน้านี้แสดงรายการปรับปรุงล่าสุดของหน้าที่ถูกโยงไป (หรือไปยังหน้าต่าง ๆ ของหมวดหมู่ที่กำหนด) โดยหน้าที่อยู่ใน[[Special:Watchlist|รายการเฝ้าดู]]แสดงเป็น'''ตัวหนา'''",
@@ -1327,8 +1441,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
# Upload
'upload' => 'อัปโหลด',
'uploadbtn' => 'อัปโหลด',
-'reupload' => 'อัปโหลดใหม่',
'reuploaddesc' => 'กลับไปสู่หน้าอัปโหลด',
+'upload-tryagain' => 'ส่งคำอธิบายไฟล์ที่ปรับแต่งแล้ว',
'uploadnologin' => 'ไม่ได้ล็อกอิน',
'uploadnologintext' => 'ต้องทำการ[[Special:UserLogin|ล็อกอิน]]ก่อนถึงจะอัปโหลดไฟล์ได้',
'upload_directory_missing' => 'ไดเรกทอรีสำหรับอัปโหลด ($1) หายไป และไม่สามารถสร้างขึ้นใหม่โดยเว็บเซิร์ฟเวอร์',
@@ -1376,7 +1490,6 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
* ชื่อไฟล์ที่กำลังอัปโหลด: '''<tt>[[:$1]]</tt>'''
* ชื่อไฟล์ที่มีอยู่แล้ว: '''<tt>[[:$2]]</tt>'''
กรุณาเลือกชื่อไฟล์ใหม่",
-'fileexists-thumb' => "<center>'''ภาพมีอยู่แล้ว'''</center>",
'fileexists-thumbnail-yes' => "ไฟล์นี้ดูเหมือนจะเป็นภาพที่ถูกลดขนาดมา ''(รูปย่อ)''
[[$1|thumb]]
กรุณาตรวจสอบไฟล์ '''<tt>[[:$1]]</tt>'''
@@ -1394,6 +1507,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
คุณควรตรวจสอบว่าประวัติการลบของไฟล์ก่อนดำเนินการอัปโหลดใหม่',
'successfulupload' => 'อัปโหลดสำเร็จ',
'uploadwarning' => 'คำเตือนการอัปโหลด',
+'uploadwarning-text' => 'กรุณาแก้ไขคำอธิบายไฟล์ด้านล่างนี้ แล้วลองใหม่อีกครั้ง',
'savefile' => 'บันทึกไฟล์',
'uploadedimage' => '"[[$1]]" ถูกอัปโหลด',
'overwroteimage' => 'อัปโหลดรุ่นใหม่ของ "[[$1]]"',
@@ -1402,11 +1516,14 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'php-uploaddisabledtext' => 'การอัปโหลดไฟล์ถูกปิดการใช้งานใน PHP
กรุณาตรวจสอบการตั้งค่า file_uploads',
'uploadscripted' => 'ไฟล์นี้มีส่วนประกอบของโค้ดเอชทีเอ็มแอลหรือสคริปต์ ซึ่งอาจก่อให้เกิดความผิดพลาดในการแสดงผลของเว็บเบราว์เซอร์',
-'uploadcorrupt' => 'ไฟล์ไม่สมบูรณ์หรือมีส่วนขยายไม่ถูกต้อง กรุณาตรวจสอบไฟล์และอัปโหลดใหม่',
'uploadvirus' => 'ไฟล์นี้มีไวรัส! รายละเอียด: $1',
+'upload-source' => 'ไฟล์ต้นทาง',
'sourcefilename' => 'ไฟล์ที่ต้องการ:',
+'sourceurl' => 'URL ที่มา:',
'destfilename' => 'ชื่อไฟล์ที่ต้องการ:',
'upload-maxfilesize' => 'ขนาดไฟล์ที่ใหญ่ที่สุดที่อนุญาต: $1',
+'upload-description' => 'คำอธิบายไฟล์',
+'upload-options' => 'ตัวเลือกอัปโหลด',
'watchthisupload' => 'เฝ้าดูไฟล์นี้',
'filewasdeleted' => 'ไฟล์ในชื่อนี้ได้ถูกอัปโหลดก่อนหน้าและถูกลบไปแล้ว กรุณาตรวจสอบ $1 ก่อนที่จะอัปโหลดใหม่อีกครั้ง',
'upload-wasdeleted' => "'''คำเตือน: คุณกำลังจะอัปโหลดไฟล์ที่เคยถูกลบไปแล้ว'''
@@ -1415,12 +1532,36 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
นี่คือปูมการลบของไฟล์เพื่อประกอบการตัดสินใจ:",
'filename-bad-prefix' => "ไฟล์ที่คุณกำลังจะอัปโหลดเข้ามานี้มีชื่อที่ขึ้นต้นด้วย '''\"\$1\"''' ซึ่งเป็นชื่อที่ไม่สื่อความหมายใดๆ (โดยปกติแล้วชื่อนี้จะถูกตั้งมาโดยกล้องถ่ายรูปดิจิทัล). กรุณาตั้งชื่อไฟล์ใหม่ที่สื่อความหมายมากกว่าเดิม",
-'upload-proto-error' => 'โพรโทคอลไม่ถูกต้อง',
-'upload-proto-error-text' => 'การอัปโหลดโดยตรงจากเว็บต้องการยูอาร์แอลที่ขึ้นต้นด้วย <code>http://</code> หรือ <code>ftp://</code>',
-'upload-file-error' => 'เกิดความผิดพลาดภายใน',
-'upload-file-error-text' => 'เกิดความผิดพลาดภายใน จากปัญหาการสร้างไฟล์ชั่วคราวที่เซิร์ฟเวอร์ กรุณาติดต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]]',
-'upload-misc-error' => 'เกิดปัญหาอัปโหลด',
-'upload-misc-error-text' => 'เกิดปัญหาระหว่างการอัปโหลด กรุณาตรวจสอบว่ายูอาร์แอลนั้นถูกต้อง ถ้ายังคงมีปัญหาให้ติดต่อผู้ดูแลระบบ',
+'upload-proto-error' => 'โพรโทคอลไม่ถูกต้อง',
+'upload-proto-error-text' => 'การอัปโหลดโดยตรงจากเว็บต้องการยูอาร์แอลที่ขึ้นต้นด้วย <code>http://</code> หรือ <code>ftp://</code>',
+'upload-file-error' => 'เกิดความผิดพลาดภายใน',
+'upload-file-error-text' => 'เกิดความผิดพลาดภายใน จากปัญหาการสร้างไฟล์ชั่วคราวที่เซิร์ฟเวอร์ กรุณาติดต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]]',
+'upload-misc-error' => 'เกิดปัญหาอัปโหลด',
+'upload-misc-error-text' => 'เกิดปัญหาระหว่างการอัปโหลด กรุณาตรวจสอบว่ายูอาร์แอลนั้นถูกต้อง ถ้ายังคงมีปัญหาให้ติดต่อผู้ดูแลระบบ',
+'upload-too-many-redirects' => 'URL ที่ระบุมีการเปลี่ยนทางมากเกินไป',
+'upload-unknown-size' => 'ไม่ทราบขนาด',
+'upload-http-error' => 'เกิดข้อผิดพลาด HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'การเข้าถึงถูกจำกัด',
+'img-auth-nopathinfo' => 'ค่า PATH_INFO สูญหาย
+เซิร์ฟเวอร์ของคุณอาจไม่ได้ถูกตั้งให้ส่งข้อมูลนี้
+หรือเซิร์ฟเวอร์อาจจะเป็นแบบ CGI-based และไม่สนับสนุนข้อมูล img_auth
+ดูที่ http://www.mediawiki.org/wiki/Manual:Image_Authorization',
+'img-auth-notindir' => 'ที่อยู่ที่ร้องขอไม่ได้อยู่ในไดเร็กทอรีอัพโหลดที่กำหนดไ้ว้',
+'img-auth-badtitle' => 'ไม่สามารถสร้างชื่อเรื่องที่ถูกต้องจาก "$1" ได้',
+'img-auth-nologinnWL' => 'คุณไม่ได้ลงชื่อเข้าใช้และ "$1" ไม่ได้อยู่ในรายชื่อผู้ใช้ที่ดี (whitelist)',
+'img-auth-nofile' => 'ไม่มีไฟล์ "$1"',
+'img-auth-isdir' => 'คุณกำลังพยายามเข้าถึงไดเร็กทอรี "$1"
+ซึ่งคุณสามารถเข้าถึงได้เฉพาะไฟล์เท่านั้น',
+'img-auth-streaming' => 'กำลังดึงข้อมูล "$1"',
+'img-auth-public' => 'ฟังก็ชันของ img_auth.php คือเพื่อส่งไฟล์ขาออกจากวิกิส่วนตัว
+วิกินี้ถูกกำหนดเป็นวิกิส่วนตัว
+เพื่อความปลอดภัยสูงสุด img_auth.php จึงถูกปิด',
+'img-auth-noread' => 'ผู้ใช้ไม่ได้รับสิทธิ์ในการอ่าน "$1"',
+
+# HTTP errors
+'http-host-unreachable' => 'ไม่สามารถเข้าถึง URL',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'ไม่สามารถติดต่อยูอาร์แอลได้',
@@ -1429,6 +1570,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'upload-curl-error28-text' => 'เว็บไซต์นี้ใช้เวลานานเกินไปในการเชื่อมต่อ กรุณาตรวจสอบว่าเว็บนี้ยังใช้งานได้ตามปกติ หรืออาจจะรอสักครู่แล้วลองอัปโหลดใหม่',
'license' => 'ลิขสิทธิ์:',
+'license-header' => 'การอนุญาตโดยเจ้าของลิขสิทธิ์',
'nolicense' => 'ไม่ได้เลือก',
'license-nopreview' => '(ไม่สามารถแสดงตัวอย่าง)',
'upload_source_url' => ' (ยูอาร์แอลที่บุคคลทั่วไปสามารถเข้าถึงได้)',
@@ -1449,6 +1591,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'listfiles_count' => 'รุ่น',
# File description page
+'file-anchor-link' => 'ไฟล์',
'filehist' => 'ประวัติไฟล์',
'filehist-help' => 'กดเลือก วัน/เวลา เพื่อดูไฟล์ที่แสดงในวันนั้น',
'filehist-deleteall' => 'ลบทั้งหมด',
@@ -1463,6 +1606,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'filehist-dimensions' => 'ขนาด',
'filehist-filesize' => 'ขนาดไฟล์',
'filehist-comment' => 'ความเห็น',
+'filehist-missing' => 'ไฟล์หายไป',
'imagelinks' => 'หน้าที่มีไฟล์นี้',
'linkstoimage' => '{{PLURAL:$1|หน้า|หน้า}}ที่ลิงก์มายังไฟล์นี้:',
'linkstoimage-more' => 'ไฟล์นี้มีการเชื่อมโยงมากกว่า $1 {{PLURAL:$1|แห่ง|แห่ง}}
@@ -1472,15 +1616,16 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'morelinkstoimage' => 'ดู[[Special:WhatLinksHere/$1|หน้าที่ลิงก์]]มายังไฟล์นี้เพิ่มเติม',
'redirectstofile' => '{{PLURAL:$1|ไฟล์|$1 ไฟล์}}ดังต่อไปนี้เปลี่ยนทางมาที่ไฟล์นี้:',
'duplicatesoffile' => '{{PLURAL:$1|ไฟล์|$1 ไฟล์}}ต่อไปนี้ เป็นไฟล์เดียวกับไฟล์นี้ ([[Special:FileDuplicateSearch/$2|รายละเอียดเพิ่ม]]):',
-'sharedupload' => 'ไฟล์นี้มาจาก $1 และอาจมีการใช้ในโครงการอื่น', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'กรุณาดู $1 สำหรับข้อมูลเพิ่มเติม',
-'shareduploadwiki-desc' => 'ด้านล่างเป็นคำอธิบายจาก $1 ของไฟล์นี้',
-'shareduploadwiki-linktext' => 'หน้าคำอธิบายไฟล์',
-'noimage' => 'ไม่มีไฟล์ในชื่อนี้ แต่คุณสามารถที่จะ $1',
-'noimage-linktext' => 'อัปโหลดไฟล์',
+'sharedupload' => 'ไฟล์นี้มาจาก $1 และอาจมีการใช้ในโครงการอื่น',
+'sharedupload-desc-there' => 'ไฟล์นี้มาจาก $1 และอาจถูกใช้บนโครงการอื่น ๆ
+กรุณาดู [หน้าคำอธิบายของไฟล์ $2] สำหรับข้อมูลเพิ่มเติม',
+'sharedupload-desc-here' => 'ไฟล์นี้มาจาก $1 และอาจมีใช้ในโครงการอื่น
+คำอธิบายใน[$2 หน้าไฟล์]ได้แสดงไว้ข้างล่างนี้',
+'filepage-nofile' => 'ไม่มีไฟล์ชื่อนี้',
+'filepage-nofile-link' => 'ไม่มีไฟล์ชื่อนี้ อย่างไรก็ตามคุณสามารถ[$1 อัปโหลด]ได้',
'uploadnewversion-linktext' => 'อัปโหลดรุ่นใหม่ของไฟล์นี้',
-'shared-repo-from' => 'จาก $1', # $1 is the repository name
-'shared-repo' => 'คลังที่ใช้ร่วมกัน', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'จาก $1',
+'shared-repo' => 'คลังที่ใช้ร่วมกัน',
# File reversion
'filerevert' => 'ย้อน $1',
@@ -1509,6 +1654,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
** ละเมิดลิขสิทธิ์
** ไฟล์ซ้ำ',
'filedelete-edit-reasonlist' => 'แก้ไขรายชื่อเหตุผลในการลบ',
+'filedelete-maintenance' => 'ปิดการลบและเรียกคืนไฟล์ไว้ชั่วคราว ในระหว่างการซ่อมบำรุง',
# MIME search
'mimesearch' => 'ค้นหาตามชนิดไมม์',
@@ -1529,7 +1675,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
# Random page
'randompage' => 'สุ่มหน้า',
-'randompage-nopages' => 'ไม่มีหน้าใดในเนมสเปซ "$1"',
+'randompage-nopages' => 'ไม่มีหน้าใดๆ ใน{{PLURAL:$2|เนมสเปซ}}ต่อไปนี้: "$1"',
# Random redirect
'randomredirect' => 'สุ่มหน้าเปลี่ยนทาง',
@@ -1541,6 +1687,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'statistics-header-edits' => 'สถิติการแก้ไข',
'statistics-header-views' => 'สถิติการเข้าชม',
'statistics-header-users' => 'สถิติผู้ใช้',
+'statistics-header-hooks' => 'สถิติอื่นๆ',
'statistics-articles' => 'จำนวนเนื้อหา',
'statistics-pages' => 'หน้าทั้งหมด',
'statistics-pages-desc' => 'หน้าทั้งหมดในเว็บไซต์นี้ รวมไปถึงหน้าต่าง ๆ เช่น หน้าสนทนา และหน้าเปลี่ยนทาง เป็นต้น',
@@ -1570,8 +1717,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'brokenredirects' => 'หน้าเปลี่ยนทางเสีย',
'brokenredirectstext' => 'หน้าเปลี่ยนทางต่อไปนี้เชื่อมโยงไปยังหน้าที่ไม่มี:',
-'brokenredirects-edit' => '(แก้ไข)',
-'brokenredirects-delete' => '(ลบ)',
+'brokenredirects-edit' => 'แก้ไข',
+'brokenredirects-delete' => 'ลบ',
'withoutinterwiki' => 'หน้าที่ไม่มีลิงก์ข้ามภาษา',
'withoutinterwiki-summary' => 'หน้าต่อไปนี้ไม่มีลิงก์ข้ามไปภาษาอื่น',
@@ -1678,7 +1825,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
# Special:Categories
'categories' => 'หมวดหมู่',
-'categoriespagetext' => 'หมวดหมู่ต่อไปนี้มีหน้าหรือสื่อต่างๆ
+'categoriespagetext' => '{{PLURAL:$1|หมวดหมู่ต่อไปนี้}}มีหน้าหรือสื่อต่างๆ
[[Special:UnusedCategories|หมวดหมู่ที่ไม่ได้ใช้]]จะไม่แสดงในที่นี้
ดูเพิ่มที่[[Special:WantedCategories|หมวดหมู่ที่ต้องการ]]',
'categoriesfrom' => 'แสดงหมวดหมู่โดยเริ่มจาก:',
@@ -1686,8 +1833,9 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'special-categories-sort-abc' => 'เรียงลำดับตามตัวอักษร',
# Special:DeletedContributions
-'deletedcontributions' => 'การแก้ไขที่ถูกลบ',
-'deletedcontributions-title' => 'การแก้ไขที่ถูกลบ',
+'deletedcontributions' => 'การแก้ไขที่ถูกลบ',
+'deletedcontributions-title' => 'การแก้ไขที่ถูกลบ',
+'sp-deletedcontributions-contribs' => 'เรื่องที่เขียน',
# Special:LinkSearch
'linksearch' => 'แหล่งข้อมูลอื่น',
@@ -1703,6 +1851,16 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'listusersfrom' => 'แสดงชื่อผู้ใช้โดยเริ่มต้นจาก:',
'listusers-submit' => 'แสดง',
'listusers-noresult' => 'ไม่พบชื่อผู้ใช้ที่ต้องการ',
+'listusers-blocked' => '(ถูกระงับ)',
+
+# Special:ActiveUsers
+'activeusers' => 'รายการผู้ใช้ประจำ',
+'activeusers-intro' => 'นี่คือรายการผู้ใช้ที่มีกิจกรรมใดๆ ในรอบ $1 {{PLURAL:$1|วัน|วัน}}ที่ผ่านมา',
+'activeusers-count' => '{{PLURAL:$1|การแก้ไขล่าสุด|การแก้ไขล่าสุด $1 รายการ}} ใน{{PLURAL:$3|ช่วงวัน|ช่วง $3 วัน}}ที่ผ่านมา',
+'activeusers-from' => 'แสดงชื่อผู้ใช้โดยเริ่มจาก:',
+'activeusers-hidebots' => 'ซ่อนบ็อต',
+'activeusers-hidesysops' => 'ซ่อนผู้ดูแลระบบ',
+'activeusers-noresult' => 'ไม่พบชื่อผู้ใช้',
# Special:Log/newusers
'newuserlogpage' => 'ปูมการสร้างบัญชีผู้ใช้ใหม่',
@@ -1713,16 +1871,22 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
'newuserlog-autocreate-entry' => 'ชื่อบัญชีถูกสร้างอัตโนมัติ',
# Special:ListGroupRights
-'listgrouprights' => 'สิทธิของกลุ่มผู้ใช้',
-'listgrouprights-summary' => 'รายชื่อกลุ่มผู้ใช้ต่อไปนี้ถูกกำหนดไว้บน {{SITENAME}} โดยมีสิทธิการเข้าถึงที่เกี่ยวข้อง และอาจมี[[{{MediaWiki:Listgrouprights-helppage}}|ข้อมูลเพิ่มเติม]]เกี่ยวกับสิทธิของแต่ละบุคคล',
-'listgrouprights-group' => 'กลุ่ม',
-'listgrouprights-rights' => 'สิทธิ',
-'listgrouprights-helppage' => 'Help:สิทธิของกลุ่ม',
-'listgrouprights-members' => '(รายชื่อสมาชิก)',
-'listgrouprights-addgroup' => 'สามารถเพิ่ม{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}ได้: $1',
-'listgrouprights-removegroup' => 'สามารถลบ{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}ได้: $1',
-'listgrouprights-addgroup-all' => 'สามารถเพิ่มกลุ่มทั้งหมดได้',
-'listgrouprights-removegroup-all' => 'สามารถลบกลุ่มทั้งหมดได้',
+'listgrouprights' => 'สิทธิของกลุ่มผู้ใช้',
+'listgrouprights-summary' => 'รายชื่อกลุ่มผู้ใช้ต่อไปนี้ถูกกำหนดไว้บน {{SITENAME}} โดยมีสิทธิการเข้าถึงที่เกี่ยวข้อง และอาจมี[[{{MediaWiki:Listgrouprights-helppage}}|ข้อมูลเพิ่มเติม]]เกี่ยวกับสิทธิของแต่ละบุคคล',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">สิทธิ์ที่ถูกให้</span>
+* <span class="listgrouprights-revoked">สิทธิ์ที่ถูกยกเลิก</span>',
+'listgrouprights-group' => 'กลุ่ม',
+'listgrouprights-rights' => 'สิทธิ',
+'listgrouprights-helppage' => 'Help:สิทธิของกลุ่ม',
+'listgrouprights-members' => '(รายชื่อสมาชิก)',
+'listgrouprights-addgroup' => 'สามารถเพิ่ม{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}ได้: $1',
+'listgrouprights-removegroup' => 'สามารถลบ{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}ได้: $1',
+'listgrouprights-addgroup-all' => 'สามารถเพิ่มกลุ่มทั้งหมดได้',
+'listgrouprights-removegroup-all' => 'สามารถลบกลุ่มทั้งหมดได้',
+'listgrouprights-addgroup-self' => 'เพิ่ม {{PLURAL:$2|กลุ่ม|กลุ่ม}} เข้าไปในชื่อผู้ใช้: $1',
+'listgrouprights-removegroup-self' => 'ลบ {{PLURAL:$2|กลุ่ม|กลุ่ม}} ออกจากชื่อผู้ใช้: $1',
+'listgrouprights-addgroup-self-all' => 'เพิ่มทุกกลุ่มเข้าไปในชื่อผู้ใช้นี้',
+'listgrouprights-removegroup-self-all' => 'ลบทุกกลุ่มออกจากชื่อผู้ใช้นี้',
# E-mail user
'mailnologin' => 'ไม่มีการส่งอีเมล',
@@ -1808,14 +1972,14 @@ $NEWPAGE
อีเมล: $PAGEEDITOR_EMAIL
วิกิ: $PAGEEDITOR_WIKI
-จะไม่มีการแจ้งเพิ่มเติมจนกระทั่งคุณได้เข้าแวะเข้าไปที่เว็บไซต์ นอกจากนี้คุณสามารถตั้งค่าการแจ้งของรายการเฝ้าดูใหม่ได้
+จะไม่มีการแจ้งเพิ่มเติมจนกว่าคุณจะได้แวะเข้าไปที่หน้านี้
+นอกจากนี้คุณสามารถตั้งค่ายกเลิกการแจ้งของหน้าที่อยู่ในรายการเฝ้าดูได้
-ด้วยความเคารพอย่างสูง
-ระบบแจ้งอัตโนมัติจาก {{SITENAME}}
+ ระบบแจ้งอัตโนมัติจาก {{SITENAME}}
--
ถ้าต้องการเปลี่ยนแปลงรายการเฝ้าดู ให้เข้าที่:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
ถ้าต้องการความช่วยเหลือเพิ่มเติม ให้เข้าที่:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1829,10 +1993,11 @@ $NEWPAGE
'exblank' => 'หน้าว่าง',
'delete-confirm' => 'ลบ "$1"',
'delete-legend' => 'ลบ',
-'historywarning' => 'คำเตือน: ดูประวัติก่อนหน้า:',
+'historywarning' => 'คำเตือน: หน้าที่คุณกำลังจะลบ มีประวัติการแก้ไขโดยประมาณ $1 {{PLURAL:$1|รุ่น}}:',
'confirmdeletetext' => 'คุณกำลังจะลบหน้าหรือภาพนี้ รวมไปถึงประวัติหน้าออกจากระบบ
กรุณายืนยันว่าต้องการดำเนินการต่อและแน่ใจว่าได้เข้าใจและการลบครั้งนี้สอดคล้องกับ[[{{MediaWiki:Policy-url}}]]',
'actioncomplete' => 'จัดการสำเร็จ',
+'actionfailed' => 'การกระทำล้มเหลว',
'deletedtext' => '"<nowiki>$1</nowiki>" ถูกลบ
ดู $2 สำหรับบันทึกการลบล่าสุด',
'deletedarticle' => '"[[$1]]" ถูกลบ',
@@ -1853,19 +2018,20 @@ $NEWPAGE
'delete-warning-toobig' => 'หน้านี้มีประวัติการแก้ไขมากเกินกว่า $1 {{PLURAL:$1|รุ่น|รุ่น}} ซึ่งถือว่าเยอะมาก การลบหน้านี้อาจทำให้ {{SITENAME}} ได้รับความเสียหายอย่างที่ไม่เคยคาดคิดมาก่อน จึงได้เตือนไว้ ก่อนที่จะกระทำสิ่งนี้',
# Rollback
-'rollback' => 'ถอยการแก้ไขกลับฉุกเฉิน',
-'rollback_short' => 'ถอยกลับฉุกเฉิน',
-'rollbacklink' => 'ถอยกลับฉุกเฉิน',
-'rollbackfailed' => 'ย้อนไม่สำเร็จ',
-'cantrollback' => 'ไม่สามารถย้อนการแก้ไขได้ เนื่องจากหน้านี้ไม่มีผู้แก้ไขรายอื่นอีก',
-'alreadyrolled' => 'ไม่สามารถย้อนรุ่นล่าสุด
+'rollback' => 'ถอยการแก้ไขกลับฉุกเฉิน',
+'rollback_short' => 'ถอยกลับฉุกเฉิน',
+'rollbacklink' => 'ถอยกลับฉุกเฉิน',
+'rollbackfailed' => 'ย้อนไม่สำเร็จ',
+'cantrollback' => 'ไม่สามารถย้อนการแก้ไขได้ เนื่องจากหน้านี้ไม่มีผู้แก้ไขรายอื่นอีก',
+'alreadyrolled' => 'ไม่สามารถย้อนรุ่นล่าสุด
ที่แก้โดย [[User:$2|$2]] ([[User talk:$2|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ของหน้า [[:$1]] มีใครบางคนได้แก้ไขหรือย้อนหน้านี้ไปก่อนแล้ว
ผู้แก้ไขล่าสุดของหน้านี้คือ [[User:$3|$3]] ([[User talk:$3|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])',
-'editcomment' => "สรุปการแก้ไข: \"''\$1''\"", # only shown if there is an edit comment
-'revertpage' => 'ย้อนการแก้ไขของ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ไปยังรุ่นของ [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'ย้อนรุ่นที่แก้ไขโดย $1 ไปยังรุ่นล่าสุดที่แก้ไขโดย $2 แล้ว',
-'sessionfailure' => 'ท่าทางจะมีปัญหาเกี่ยวการล็อกอินในช่วงเวลานี้ เกิดจากทางระบบป้องกันการลักลอบการขโมยล็อกอิน กรุณาย้อนกลับไปหน้าก่อนหน้า และลองโหลดใหม่อีกครั้ง',
+'editcomment' => "สรุปการแก้ไข: \"''\$1''\"",
+'revertpage' => 'ย้อนการแก้ไขของ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ไปยังรุ่นของ [[User:$1|$1]]',
+'revertpage-nouser' => 'ย้อนการแก้ไขโดย (ชื่อผู้ใช้ถูกลบออก) ไปยังรุ่นล่าสุดโดย [[User:$1|$1]]',
+'rollback-success' => 'ย้อนรุ่นที่แก้ไขโดย $1 ไปยังรุ่นล่าสุดที่แก้ไขโดย $2 แล้ว',
+'sessionfailure' => 'ท่าทางจะมีปัญหาเกี่ยวการล็อกอินในช่วงเวลานี้ เกิดจากทางระบบป้องกันการลักลอบการขโมยล็อกอิน กรุณาย้อนกลับไปหน้าก่อนหน้า และลองโหลดใหม่อีกครั้ง',
# Protect
'protectlogpage' => 'บันทึกการล็อก',
@@ -1881,7 +2047,7 @@ $NEWPAGE
'protectexpiry' => 'หมดอายุ:',
'protect_expiry_invalid' => 'เวลาหมดอายุไม่ถูกต้อง',
'protect_expiry_old' => 'เวลาหมดอายุผ่านมาแล้ว',
-'protect-unchain' => 'ล็อกการเปลี่ยนชื่อ',
+'protect-unchain-permissions' => 'ปลดล็อกตัวเลือกป้องกันอื่นๆ',
'protect-text' => "ดูและเปลี่ยนระดับการล็อกสำหรับหน้า '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "ไม่สามารถเปลี่ยนระดับการล็อกหน้าขณะที่ถูกบล็อกได้ ดูระดับการล็อกของหน้า '''$1''':",
'protect-locked-dblock' => "ไม่สามารถเปลี่ยนระดับการล็อกหน้าได้เนื่องจากฐานข้อมูลถูกล็อก ดูระดับการล็อกของหน้า '''$1''':",
@@ -1908,7 +2074,7 @@ $NEWPAGE
** สงครามการแก้ไข
** หน้าสำคัญ',
'protect-edit-reasonlist' => 'สาเหตุการป้องกันการแก้ไข',
-'protect-expiry-options' => '1 ชั่วโมง:1 hour,1 วัน:1 day,1 สัปดาห์:1 week,2 สัปดาห์:2 weeks,1 เดือน:1 month,3 เดือน:3 months,6 เดือน:6 months,1 ปี:1 year,ตลอดกาล:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ชั่วโมง:1 hour,1 วัน:1 day,1 สัปดาห์:1 week,2 สัปดาห์:2 weeks,1 เดือน:1 month,3 เดือน:3 months,6 เดือน:6 months,1 ปี:1 year,ตลอดกาล:infinite',
'restriction-type' => 'อนุญาต',
'restriction-level' => 'ระดับการล็อก',
'minimum-size' => 'ขนาดอย่างน้อย',
@@ -1945,6 +2111,7 @@ $NEWPAGE
'undelete-nodiff' => 'ไม่พบรุ่นก่อนหน้า',
'undeletebtn' => 'เรียกคืน',
'undeletelink' => 'เรียกดู/เรียกคืน',
+'undeleteviewlink' => 'เรียกดู',
'undeletereset' => 'ล้างค่า',
'undeleteinvert' => 'กลับค่าที่เลือก',
'undeletecomment' => 'ความเห็น:',
@@ -1982,19 +2149,24 @@ $1',
'contributions-title' => 'เรื่องที่เขียนโดย $1',
'mycontris' => 'เรื่องที่เขียน',
'contribsub2' => 'สำหรับ $1 ($2)',
-'nocontribs' => 'ไม่มีการเปลี่ยนแปลงตามเงื่อนไขที่ใส่มา', # Optional parameter: $1 is the user name
+'nocontribs' => 'ไม่มีการเปลี่ยนแปลงตามเงื่อนไขที่ใส่มา',
'uctop' => ' (บนสุด)',
'month' => 'จากเดือน (และก่อนหน้า):',
'year' => 'จากปี (และก่อนหน้า):',
-'sp-contributions-newbies' => 'แสดงการแก้ไขของผู้ใช้ใหม่เท่านั้น',
-'sp-contributions-newbies-sub' => 'สำหรับผู้ใช้ใหม่',
-'sp-contributions-newbies-title' => 'เรื่องที่เขียนโดยบัญชีผู้ใช้ใหม่',
-'sp-contributions-blocklog' => 'บันทึกการบล็อก',
-'sp-contributions-logs' => 'ปูม',
-'sp-contributions-search' => 'ค้นหาการแก้ไข',
-'sp-contributions-username' => 'หมายเลขไอพีหรือชื่อผู้ใช้:',
-'sp-contributions-submit' => 'สืบค้น',
+'sp-contributions-newbies' => 'แสดงการแก้ไขของผู้ใช้ใหม่เท่านั้น',
+'sp-contributions-newbies-sub' => 'สำหรับผู้ใช้ใหม่',
+'sp-contributions-newbies-title' => 'เรื่องที่เขียนโดยบัญชีผู้ใช้ใหม่',
+'sp-contributions-blocklog' => 'บันทึกการบล็อก',
+'sp-contributions-deleted' => 'การแก้ไขที่ถูกลบ',
+'sp-contributions-logs' => 'ปูม',
+'sp-contributions-talk' => 'พูดคุย',
+'sp-contributions-userrights' => 'บริหารสิทธิผู้ใช้',
+'sp-contributions-blocked-notice' => 'ปัจจุบันผู้ใช้นี้ถูกสกัดกั้น
+ปูมการสกัดกั้นรายการล่าสุดแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
+'sp-contributions-search' => 'ค้นหาการแก้ไข',
+'sp-contributions-username' => 'หมายเลขไอพีหรือชื่อผู้ใช้:',
+'sp-contributions-submit' => 'สืบค้น',
# What links here
'whatlinkshere' => 'หน้าที่ลิงก์มา',
@@ -2017,6 +2189,7 @@ $1',
# Block/unblock
'blockip' => 'บล็อกผู้ใช้',
+'blockip-title' => 'ระงับผู้ใช้',
'blockip-legend' => 'บล็อกผู้ใช้',
'blockiptext' => 'ใช้ฟอร์มด้านล่างสำหรับการบล็อกหมายเลขไอพีหรือผู้ใช้ ซึ่งก่อกวนระบบ โดยแน่ใจว่าได้ทำตาม [[{{MediaWiki:Policy-url}}|นโยบาย]]
ใส่สาเหตุด้านล่าง (ตัวอย่าง หน้าที่ถูกก่อกวน)',
@@ -2039,7 +2212,7 @@ $1',
'ipbenableautoblock' => 'บล็อกหมายเลขไอพีนี้และไอพีที่ผู้ใช้นี้อาจจะใช้',
'ipbsubmit' => 'บล็อกชื่อผู้ใช้',
'ipbother' => 'เวลาอื่น',
-'ipboptions' => '2 ชั่วโมง:2 hours,1 วัน:1 day,3 วัน:3 days,1 สัปดาห์:1 week,2 สัปดาห์:2 weeks,1 เดือน:1 month,3 เดือน:3 months,6 เดือน:6 months,1 ปี:1 year,ตลอดกาล:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ชั่วโมง:2 hours,1 วัน:1 day,3 วัน:3 days,1 สัปดาห์:1 week,2 สัปดาห์:2 weeks,1 เดือน:1 month,3 เดือน:3 months,6 เดือน:6 months,1 ปี:1 year,ตลอดกาล:infinite',
'ipbotheroption' => 'เลือกเวลา',
'ipbotherreason' => 'เหตุผลอื่น',
'ipbhidename' => 'ซ่อนผู้้ใช้จากบันทึกการบล็อก และรายการผู้ที่ถูกบล็อก',
@@ -2068,9 +2241,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 การบล็อกชั่วคราว',
'ipblocklist-sh-addressblocks' => '$1 การบล็อกของไอพีเดี่ยว',
'ipblocklist-submit' => 'สืบค้น',
+'ipblocklist-localblock' => 'การสกัดกั้นภายในวิกินี้',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|การสกัดกั้น}}อื่นๆ',
'blocklistline' => '$1, $2 บล็อก $3 ($4)',
'infiniteblock' => 'ตลอดกาล',
-'expiringblock' => 'หมดอายุ $1',
+'expiringblock' => 'หมดอายุ $1 เวลา $2',
'anononlyblock' => 'ไม่ล็อกอินเท่านั้น',
'noautoblockblock' => 'ยกเลิกการบล็อกอัตโนมัติ',
'createaccountblock' => 'บล็อกการสร้างบัญชีผู้ใช้ใหม่',
@@ -2084,7 +2259,10 @@ $1',
'contribslink' => 'เรื่องที่เขียน',
'autoblocker' => 'ถูกบล็อกอัตโนมัติเนื่องจากหมายเลขไอพีของคุณตรงกับ "[[User:$1|$1]]" ถูกบล็อกกล่อนหน้านี้เนื่องจากสาเหตุ: "$2"',
'blocklogpage' => 'บันทึกการบล็อก',
-'blocklog-fulllog' => 'บันทึกการบล็อกทั้งหมด',
+'blocklog-showlog' => 'ผู้ใช้นี้ถูกสกัดกั้นมาก่อน
+ปูมการสกัดกั้นแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
+'blocklog-showsuppresslog' => 'ผู้ใช้นี้ถูกสกัดกั้นและถูกซ่อนมาก่อน
+ปูมการระงับแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
'blocklogentry' => 'บล็อก "[[$1]]" หมดอายุ $2 $3',
'reblock-logentry' => 'เปลี่ยนระดับการบล็อกสำหรับ [[$1]] หมดอายุ $2 $3',
'blocklogtext' => 'ด้านล่างเป็นบันทึกการบล็อกและการเลิกบล็อก ส่วนการบล็อกอัตโนมัติจะไม่ถูกรวมอยู่ในรายการนี้ ดู [[Special:IPBlockList|รายการบล็อกไอพี]] สำหรับการบล็อกทั้งหมด',
@@ -2103,6 +2281,7 @@ $1',
'ipb_already_blocked' => '"$1" ถูกบล็อกแล้วก่อนหน้านี้',
'ipb-needreblock' => '== ถูกบล็อกแล้ว ==
$1 ถูกบล็อกแล้ว คุณต้องการแก้ไขหรือไม่',
+'ipb-otherblocks-header' => '{{PLURAL:$1|การระงับ|การระงับ}}อื่นๆ',
'ipb_cant_unblock' => 'ปัญหา: หมายเลขบล็อก $1 ไม่พบ อาจเกิดจากได้ถูกยกเลิกการบล็อกแล้ว',
'ipb_blocked_as_range' => 'มีข้อผิดพลาด: หมายเลขไอพี $1 ไม่ได้ถูกระงับโดยตรงและไม่สามารถยกเลิกการระงับโดยตรงได้. อย่างไรก็ตาม ไอพีนี้ถูกระงับในฐานะที่เป็นส่วนหนึ่งของหมายเลขไอพีในช่วง $2 ซึ่งสามารถยกเลิกการระงับได้',
'ip_range_invalid' => 'ช่วงไอพีไม่ถูกต้อง',
@@ -2114,6 +2293,7 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'sorbsreason' => 'หมายเลขไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ถูกใช้งานในเว็บไซต์',
'sorbs_create_account_reason' => 'หมายเลขไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ถูกใช้งานในเว็บไซต์ ดังนั้นคุณไม่สามารถสร้างชื่อบัญชีผู้ใช้ได้',
'cant-block-while-blocked' => 'คุณไม่สามารถบล็อกผู้ใช้อื่นในขณะที่คุณกำลังถูกบล็อก',
+'cant-see-hidden-user' => 'ผู้ใช่ที่คุณกำลังพยายามระงับนั้นได้ถูกระงับหรือซ่อนเดิมอยู่แล้ว ในขณะที่ีคุณไม่มีสิทธิ์ในการซ่อนผู้ใช้ คุณไม่สามารถดูหรือแก้ไขการระงับผู้ใช้ได้',
# Developer tools
'lockdb' => 'ล็อกฐานข้อมูล',
@@ -2150,6 +2330,7 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
ในกรณีนั้นให้เปลี่ยนชื่อหน้าเอง",
'movearticle' => 'เปลี่ยนชื่อ',
+'moveuserpage-warning' => "'''คำเตือน''' คุณกำลังจะย้ายหน้าผู้ใช้ โปรดทราบว่าหน้าผู้ใช้เท่านั้นที่จะถูกเปลี่ยนชื่อ แต่ผู้ใช้จะ'''ไม่ได้ถูกเปลี่ยนชื่อแต่อย่างใด'''",
'movenologin' => 'ไม่ได้ล็อกอิน',
'movenologintext' => 'ถ้าต้องการเปลี่ยนชื่อหน้านี้ ต้องลงทะเบียนและให้ทำการ[[Special:UserLogin|ล็อกอิน]]',
'movenotallowed' => 'คุณไม่ได้รับอนุญาตให้ทำการย้ายหน้าต่าง ๆ',
@@ -2160,7 +2341,7 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'move-watch' => 'เฝ้าดูหน้านี้',
'movepagebtn' => 'เปลี่ยนชื่อ',
'pagemovedsub' => 'เปลี่ยนชื่อสำเร็จ',
-'movepage-moved' => '\'\'\'"$1" ถูกเปลี่ยนชื่อเป็น "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ถูกเปลี่ยนชื่อเป็น "$2"\'\'\'',
'movepage-moved-redirect' => 'หน้าเปลี่ยนทางถูกสร้างขึ้น',
'movepage-moved-noredirect' => 'หน้าเปลี่ยนทางไม่ได้ถูกสร้าง',
'articleexists' => 'หน้าที่ต้องการมีอยู่แล้ว หรือชื่อที่เลือกไม่ถูกต้อง กรุณาเลือกชื่อใหม่',
@@ -2201,6 +2382,12 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'imageinvalidfilename' => 'ชื่อไฟล์เป้าหมายไม่ถูกต้อง',
'fix-double-redirects' => 'อัปเดตหน้าเปลี่ยนทางทุกหน้าที่โอนไปยังชื่อเดิม',
'move-leave-redirect' => 'สร้างหน้าเปลี่ยนทางตามมา',
+'protectedpagemovewarning' => "'''คำเตือน:''' หน้านี้ถูกล็อก ดังนั้นผู้ใช้ที่มีสิทธิ์ดูแลระบบเท่านั้นที่สามารถย้ายได้",
+'semiprotectedpagemovewarning' => "'''หมายเหตุ:''' หน้านี้ถูกล็อก ดังนั้นผู้ใช้ที่ลงทะเบียนแล้วเท่านั้นที่จะสามารถย้ายได้",
+'move-over-sharedrepo' => '== มีไฟล์เดิมปรากฎ ==
+ไฟล์ [[:$1]] มีปรากฎเดิมอยู่แล้วในคลังเก็บภาพส่วนกลาง การย้ายไฟล์ที่มีชื่อเรื่องนี้อาจจะเป็นการเขียนทับไฟล์เดิมในคลับเก็บได้',
+'file-exists-sharedrepo' => 'ชื่อไฟล์นี้มีปรากฎเดิมอยู่แล้วในคลังเก็บภาพส่วนกลาง
+กรุณาเลือกชื่ออื่น',
# Export
'export' => 'ส่งออกหน้า',
@@ -2222,15 +2409,21 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'export-pagelinks' => 'จำนวนลำดับของหน้าที่ถูกเชื่อมโยงทั้งหมด:',
# Namespace 8 related
-'allmessages' => 'ข้อความของระบบ',
-'allmessagesname' => 'ชื่อ',
-'allmessagesdefault' => 'ข้อความตั้งต้น',
-'allmessagescurrent' => 'ข้อความปัจจุบัน',
-'allmessagestext' => 'รายการข้อความของระบบ อยู่ในเนมสเปซมีเดียวิกิ
+'allmessages' => 'ข้อความของระบบ',
+'allmessagesname' => 'ชื่อ',
+'allmessagesdefault' => 'ข้อความตั้งต้น',
+'allmessagescurrent' => 'ข้อความปัจจุบัน',
+'allmessagestext' => 'รายการข้อความของระบบ อยู่ในเนมสเปซมีเดียวิกิ
กรุณาไปที่ [http://www.mediawiki.org/wiki/Localisation มีเดียวิกิ] และ [http://translatewiki.new translatewiki.net] ถ้าคุณยังอยากที่จะแปลข้อความของระบบมีเดียวิกิ',
-'allmessagesnotsupportedDB' => "หน้านี้ไม่สามารถใช้งานได้เนื่องจาก '''\$wgUseDatabaseMessages''' ถูกระงับการใช้งาน",
-'allmessagesfilter' => 'กรองเฉพาะข้อความ:',
-'allmessagesmodified' => 'แสดงเฉพาะที่ถูกแก้ไข',
+'allmessagesnotsupportedDB' => "หน้านี้ไม่สามารถใช้งานได้เนื่องจาก '''\$wgUseDatabaseMessages''' ถูกระงับการใช้งาน",
+'allmessages-filter-legend' => 'กรอง',
+'allmessages-filter' => 'กรองตามสถานะที่เลือก:',
+'allmessages-filter-unmodified' => 'มีการแก้ไข',
+'allmessages-filter-all' => 'ทั้งหมด',
+'allmessages-filter-modified' => 'ไม่มีการแก้ไข',
+'allmessages-prefix' => 'กรองด้วยคำข้างหน้า:',
+'allmessages-language' => 'ภาษา:',
+'allmessages-filter-submit' => 'ไป',
# Thumbnails
'thumbnail-more' => 'ขยาย',
@@ -2240,6 +2433,9 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'djvu_no_xml' => 'ไม่สามารถส่งเอกซ์เอ็มแอล (XML) สำหรับไฟล์เดจาวู (DjVu)',
'thumbnail_invalid_params' => 'พารามิเตอร์ของธัมบ์เนลไม่ถูกต้อง',
'thumbnail_dest_directory' => 'ไม่สามารถสร้างไดเรกทอรีภาพได้',
+'thumbnail_image-type' => 'ไม่รองรับรูปแบบของไฟล์รูปภาพนี้',
+'thumbnail_gd-library' => 'การตั้งค่าไลบรารี GD ไม่สมบูรณ์: ไม่พบฟังก์ชัน $1',
+'thumbnail_image-missing' => 'ดูเหมือนว่าไฟล์จะหายไป: $1',
# Special:Import
'import' => 'หน้านำเข้า',
@@ -2304,6 +2500,7 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'tooltip-ca-viewsource' => 'หน้านี้ถูกล็อก แต่ยังคงดูโค้ดได้',
'tooltip-ca-history' => 'รุ่นที่แล้วของหน้านี้',
'tooltip-ca-protect' => 'ล็อกหน้านี้',
+'tooltip-ca-unprotect' => 'ยกเลิกการป้องกันหน้านี้',
'tooltip-ca-delete' => 'ลบหน้านี้',
'tooltip-ca-undelete' => 'เรียกคืนการแก้ไขหน้านี้กลับมาเป็นรุ่นก่อนที่ถูกลบ',
'tooltip-ca-move' => 'เปลี่ยนชื่อหน้านี้',
@@ -2314,6 +2511,7 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'tooltip-search-fulltext' => 'ค้นหาหน้าที่มีข้อความนี้',
'tooltip-p-logo' => 'หน้าหลัก',
'tooltip-n-mainpage' => 'แวะหน้าหลัก',
+'tooltip-n-mainpage-description' => 'เข้าสู่หน้าหลัก',
'tooltip-n-portal' => 'เรื่องเฉพาะโครงการ วิธีการใช้ วิธีการค้นหา สิ่งที่ควรทำ',
'tooltip-n-currentevents' => 'ค้นหาเหตุการณ์ปัจจุบัน',
'tooltip-n-recentchanges' => 'รายการปรับปรุงล่าสุดในวิกินี้',
@@ -2366,10 +2564,12 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
# Attribution
'anonymous' => '{{PLURAL:$1|ผู้ใช้}}นิรนามของ {{SITENAME}}',
'siteuser' => 'ผู้ใช้ $1 จาก {{SITENAME}}',
-'lastmodifiedatby' => 'แก้ไขล่าสุดเมื่อเวลา $2 $1 โดย $3', # $1 date, $2 time, $3 user
+'anonuser' => 'ผู้ใช้นิรนามจาก {{SITENAME}} $1',
+'lastmodifiedatby' => 'แก้ไขล่าสุดเมื่อเวลา $2 $1 โดย $3',
'othercontribs' => 'พัฒนาจากงานเขียนของ $1',
'others' => 'ผู้อื่น',
'siteusers' => '{{PLURAL:$2|ผู้ใช้|ผู้ใช้}} {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|ผู้ใช้|บรรดาผู้ใช้}}นิรนามจาก {{SITENAME}} $1',
'creditspage' => 'เกียรติแก่ผู้ร่วมสร้าง',
'nocredits' => 'ไม่มีรายชื่อผู้เป็นเกียรติที่ร่วมสร้างหน้านี้',
@@ -2407,6 +2607,17 @@ $1 ถูกบล็อกแล้ว คุณต้องการแก้
'mw_math_modern' => 'แนะนำสำหรับเว็บเบราว์เซอร์สมัยใหม่',
'mw_math_mathml' => 'ถ้าเป็นไปได้ใช้ MathML (ขั้นทดลอง)',
+# Math errors
+'math_failure' => 'ส่งผ่านค่าไม่ได้',
+'math_unknown_error' => 'ข้อผิดพลาดที่ไม่ทราบ',
+'math_unknown_function' => 'คำสั่งที่ไม่ทราบ',
+'math_lexing_error' => 'การจำแนกสูตรผิดพลาด',
+'math_syntax_error' => 'ไวยากรณ์ผิดพลาด',
+'math_image_error' => 'การแปลงเป็นไฟล์ PNG ขัดข้อง กรุณาตรวจสอบการติดตั้ง LaTex, dvips, gs, และ convert',
+'math_bad_tmpdir' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรกทอรีชั่วคราวสำหรับเก็บค่าทางคณิตศาสตร์ได้',
+'math_bad_output' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรกทอรีปลายทางสำหรับเก็บค่าทางคณิตศาสตร์ได้',
+'math_notexvc' => 'เกิดข้อความผิดพลาด texvc ไม่พบ กรุณาตรวจสอบ math/README เพื่อตั้งค่า',
+
# Patrolling
'markaspatrolleddiff' => 'ทำเครื่องหมายว่าตรวจสอบแล้ว',
'markaspatrolledtext' => 'กำหนดว่าบทความนี้ถูกตรวจสอบแล้ว',
@@ -2441,13 +2652,10 @@ $1',
'previousdiff' => '← แตกต่างก่อนหน้า',
'nextdiff' => 'แตกต่างถัดไป →',
-# Visual comparison
-'visual-comparison' => 'การเปรียบเทียบลักษณะปรากฏ',
-
# Media information
'mediawarning' => "'''คำเตือน''': ไฟล์รูปแบบนี้อาจมีโค้ดที่ไม่พึงประสงค์
ระบบของท่านอาจเสียหายอันเนื่องจากโค้ดทำงาน",
-'imagemaxsize' => 'จำกัดภาพหรือคำอธิบายภาพไว้ที่ขนาด:',
+'imagemaxsize' => "ขนาดภาพที่จำกัด:<br />''(สำหรับหน้าอธิบายภาพ)''",
'thumbsize' => 'ขนาดรูปย่อ:',
'widthheightpage' => '{{PLURAL:$3|หน้า|หน้า}} $1×$2, $3',
'file-info' => '(ขนาดไฟล์: $1, ชนิดไมม์: $2)',
@@ -2456,6 +2664,8 @@ $1',
'svg-long-desc' => '(ไฟล์ SVG, $1 × $2 พิกเซล (พอเป็นพิธี), ขนาดไฟล์: $3)',
'show-big-image' => 'ความละเอียดสูงสุด',
'show-big-image-thumb' => '<small>ขนาดของภาพแสดงผล: $1 × $2 พิกเซล</small>',
+'file-info-gif-looped' => 'วนซ้ำ',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|เฟรม|เฟรม}}',
# Special:NewFiles
'newimages' => 'แกลลอรีภาพใหม่',
@@ -2487,7 +2697,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'ความกว้าง',
@@ -2614,14 +2824,14 @@ $1',
'exif-unknowndate' => 'ไม่ทราบวัน',
-'exif-orientation-1' => 'ปกติ', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'ถูกสลับแนวนอน', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'ถูกหมุน 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'ถูกสลับแนวตั้ง', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'ถูกหมุน 90° ทวนเข็มนาฬิกา และถูกสลับแนวตั้ง', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'ถูกหมุน 90° ตามเข็มนาฬิกา', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'ถูกหมุน 90° ตามเข็มนาฬิกา และถูกสลับแนวตั้ง', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'ถูกหมุน 90° ทวนเข็มนาฬิกา', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'ปกติ',
+'exif-orientation-2' => 'ถูกสลับแนวนอน',
+'exif-orientation-3' => 'ถูกหมุน 180°',
+'exif-orientation-4' => 'ถูกสลับแนวตั้ง',
+'exif-orientation-5' => 'ถูกหมุน 90° ทวนเข็มนาฬิกา และถูกสลับแนวตั้ง',
+'exif-orientation-6' => 'ถูกหมุน 90° ตามเข็มนาฬิกา',
+'exif-orientation-7' => 'ถูกหมุน 90° ตามเข็มนาฬิกา และถูกสลับแนวตั้ง',
+'exif-orientation-8' => 'ถูกหมุน 90° ทวนเข็มนาฬิกา',
'exif-planarconfiguration-1' => 'รูปแบบชังกี',
'exif-planarconfiguration-2' => 'รูปแบบเพลนาร์',
@@ -2743,7 +2953,7 @@ $1',
'exif-gpsmeasuremode-2' => 'การวัดสองมิติ',
'exif-gpsmeasuremode-3' => 'การวัดสามมิติ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'กิโลเมตรต่อชั่วโมง',
'exif-gpsspeed-m' => 'ไมล์ต่อชั่วโมง',
'exif-gpsspeed-n' => 'นอตส์',
@@ -2762,6 +2972,7 @@ $1',
'watchlistall2' => 'ทั้งหมด',
'namespacesall' => 'ทั้งหมด',
'monthsall' => 'ทั้งหมด',
+'limitall' => 'ทั้งหมด',
# E-mail address confirmation
'confirmemail' => 'ยืนยันอีเมล',
@@ -2887,7 +3098,7 @@ $1',
'duplicate-defaultsort' => 'คำเตือน: หลักเรียงลำดับปริยาย "$2" ได้ลบล้างหลักเรียงลำดับปริยาย "$1" ที่มีอยู่ก่อนหน้า',
# Special:Version
-'version' => 'รุ่นซอฟต์แวร์', # Not used as normal message but as header for the special page itself
+'version' => 'รุ่นซอฟต์แวร์',
'version-extensions' => 'ส่วนขยายเพิ่ม (extension) ที่ติดตั้ง',
'version-specialpages' => 'หน้าพิเศษ',
'version-parserhooks' => 'ฮุกที่มีการพาร์สค่า',
@@ -2901,7 +3112,7 @@ $1',
'version-skin-extension-functions' => 'ฟังก์ชันส่วนขยายเพิ่ม (extension function) สำหรับสกินหรือแบบหน้าตา',
'version-hook-name' => 'ชื่อฮุก',
'version-hook-subscribedby' => 'สนับสนุนโดย',
-'version-version' => 'รุ่น',
+'version-version' => '(รุ่น $1)',
'version-license' => 'สัญญาอนุญาต',
'version-software' => 'ซอฟต์แวร์ที่ติดตั้ง',
'version-software-product' => 'ชื่อ',
@@ -2982,4 +3193,15 @@ $1',
'dberr-outofdate' => 'โปรดทราบว่าดัชนีเนื้อหาของเราในกูเกิลอาจล้าสมัยแล้ว',
'dberr-cachederror' => 'นี่คือข้อมูลคัดลอกชั่วคราวของหน้าที่ร้องขอ และอาจไม่เป็นปัจจุบัน',
+# HTML forms
+'htmlform-invalid-input' => 'เกิดปัญหาในค่าบางค่าที่คุณใส่เข้ามา',
+'htmlform-select-badoption' => 'ค่าที่คุณใส่ไม่ใช่การตั้งค่าที่ถูกต้อง',
+'htmlform-int-invalid' => 'ค่าที่คุณกำหนดไม่ใช่ตัวเลขจำนวนเต็ม',
+'htmlform-float-invalid' => 'ค่าที่คุณกำนหดไม่ใช่ตัวเลข',
+'htmlform-int-toolow' => 'ค่าที่คุณกำหนดนั้นต่ำกว่าค่าต่ำสุดที่ $1',
+'htmlform-int-toohigh' => 'ค่าที่คุณกำหนดนั้นเกินกว่าค่าสูงสุดที่ $1',
+'htmlform-submit' => 'ส่งข้อมูล',
+'htmlform-reset' => 'ยกเลิกการเปลื่ยนแปลง',
+'htmlform-selectorother-other' => 'อื่นๆ',
+
);
diff --git a/languages/messages/MessagesTi.php b/languages/messages/MessagesTi.php
index 038ff47a..44aac9e6 100644
--- a/languages/messages/MessagesTi.php
+++ b/languages/messages/MessagesTi.php
@@ -50,10 +50,12 @@ $messages = array(
'may' => 'ሜይ',
'jun' => 'ጁን',
-'about' => 'ብዛዕባ ብጠቅላላ',
+'about' => 'ብዛዕባ ብጠቅላላ',
+'mypage' => 'ፅሑፈይ',
+
+# Cologne Blue skin
'qbpageoptions' => 'ፅሑፍዚ',
'qbmyoptions' => 'ፅሑፋተይ',
-'mypage' => 'ፅሑፈይ',
'help' => 'ፍንጪ',
'search' => 'ድሉይ',
@@ -79,9 +81,6 @@ $messages = array(
# Login and logout pages
'yourname' => 'ናይ ኣባል ሽም:',
-'youremail' => 'ኢ-መይል:',
-'yourlanguage' => 'ቋንቋ:',
-'email' => 'ኢ-መይል',
'loginlanguagelabel' => 'ቋንቋ: $1',
# Edit pages
@@ -93,8 +92,8 @@ $messages = array(
'historysize' => '($1 ባይታት)',
# Search results
-'prevn' => 'ናይ ቀደም $1',
-'nextn' => 'ዝቕጽል $1',
+'prevn' => 'ናይ ቀደም {{PLURAL:$1|$1}}',
+'nextn' => 'ዝቕጽል {{PLURAL:$1|$1}}',
'powersearch' => 'ድሉይ',
# Preferences page
@@ -103,7 +102,10 @@ $messages = array(
'saveprefs' => 'ኣቐምጥ',
'searchresultshead' => 'ድሉይ',
'savedprefs' => 'ዘቕረብኩሞ መርኣይ ብትክክል ተቀሚጡ ኣሎ።',
-'files' => 'ምስልታት',
+'prefs-files' => 'ምስልታት',
+'youremail' => 'ኢ-መይል:',
+'yourlanguage' => 'ቋንቋ:',
+'email' => 'ኢ-መይል',
# Groups
'group' => 'ብሓበር:',
@@ -124,6 +126,9 @@ $messages = array(
'listfiles_name' => 'ሽም',
'listfiles_user' => 'ኣባል',
+# File description page
+'file-anchor-link' => 'ምስሊ',
+
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|ባይት|ባይታት}}',
'longpages' => 'ነዋሕቲ ፅሑፋት',
diff --git a/languages/messages/MessagesTk.php b/languages/messages/MessagesTk.php
index 6ed79627..46e9dd7a 100644
--- a/languages/messages/MessagesTk.php
+++ b/languages/messages/MessagesTk.php
@@ -12,6 +12,26 @@
* @author Runningfridgesrule
*/
+$namespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Ýörite',
+ NS_TALK => 'Çekişme',
+ NS_USER => 'Ulanyjy',
+ NS_USER_TALK => 'Ulanyjy_çekişme',
+ NS_PROJECT_TALK => '$1_çekişme',
+ NS_FILE => 'Faýl',
+ NS_FILE_TALK => 'Faýl_çekişme',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_çekişme',
+ NS_TEMPLATE => 'Şablon',
+ NS_TEMPLATE_TALK => 'Şablon_çekişme',
+ NS_HELP => 'Ýardam',
+ NS_HELP_TALK => 'Ýardam_çekişme',
+ NS_CATEGORY => 'Kategoriýa',
+ NS_CATEGORY_TALK => 'Kategoriýa_çekişme',
+);
+
+$linkTrail = '/^([a-zÄäÇçĞğŇňÖöŞşÜüÝýŽž]+)(.*)$/sDu';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Çykgytlaryň aşagyny çyz:',
@@ -44,6 +64,7 @@ Sahypalary keşirleme',
'tog-enotifminoredits' => 'Sahypalardaky ujypsyzja özgerdişlerde-de maňa e-poçta iber',
'tog-enotifrevealaddr' => 'E-poçta adresimi bildiriş e-poçtalarynda görkez.',
'tog-shownumberswatching' => 'Gözegçilikde saklaýan ulanyjylaryň sanyny görkez',
+'tog-oldsig' => 'Bar bolan goluň deslapky syny:',
'tog-fancysig' => 'Gola wikitekst hökmünde çemeleş (awtomatik çykgytsyz)',
'tog-externaleditor' => 'Başga programmalar bilen redaktirle (diňe hünärmenler üçin, kompýuteriňizde ýörite sazlamalar talap edilýär)',
'tog-externaldiff' => 'Başga programmalaryň üsti bilen deňeşdir (diňe hünärmenler üçin, kompýuteriňizde ýörite sazlamalar talap edilýär)',
@@ -65,6 +86,13 @@ Sahypalary keşirleme',
'underline-never' => 'Hiç haçan',
'underline-default' => 'Brauzeriň gaýybanasy',
+# Font style option in Special:Preferences
+'editfont-style' => 'Özgerdiş meýdançasynyň şriftiniň tipi:',
+'editfont-default' => 'Brauzeriň gaýybanasy',
+'editfont-monospace' => 'Mono-inli şrift',
+'editfont-sansserif' => 'Sans-serif şrifti',
+'editfont-serif' => 'Serif şrifti',
+
# Dates
'sunday' => 'Ýekşenbe',
'monday' => 'Duşenbe',
@@ -124,7 +152,7 @@ Sahypalary keşirleme',
'category-media-header' => '"$1" kategoriýasyndaky multimediýa faýllary',
'category-empty' => "''Bu kategoriýada heniz hiçhili sahypa ýa-da multimediýa faýly ýok.''",
'hidden-categories' => '{{PLURAL:$1|Gizlin kategoriýa|Gizlin kategoriýalar}}',
-'hidden-category-category' => 'Gizlin kategoriýalar', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Gizlin kategoriýalar',
'category-subcat-count' => '{{PLURAL:$2|Bu kategoriýa diňe aşakdaky kiçi kategoriýany öz içine alýar.|Bu kategoriýada jemi $2 sany
kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriýa}} bardyr}}',
'category-subcat-count-limited' => 'Bu kategoriýada aşakdaky {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriýa}} bardyr.',
@@ -133,6 +161,8 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'category-file-count' => '{{PLURAL:$2|Bu kategoriýa diňe aşakdaky faýly öz içine alýar.|Jemi $2 sanydan, aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu kategoriýadadyr.}}',
'category-file-count-limited' => 'Aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu kategoriýadadyr.',
'listingcontinuesabbrev' => '(dowamy)',
+'index-category' => 'Indeksirlenen sahypalar',
+'noindex-category' => 'Indeksirlenmedik sahypalar',
'mainpagetext' => "'''MediaWiki şowlulyk bilen guruldy.'''",
'mainpagedocfooter' => 'Wiki programmasynyň ulanylyşy hakynda maglumat almak üçin [http://meta.wikimedia.org/wiki/Help:Contents ulanyjy gollanmasyna] serediň.
@@ -142,10 +172,18 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçta sanawy]',
-'about' => 'Hakynda',
-'article' => 'Makala',
-'newwindow' => '(täze penjirede açylýar)',
-'cancel' => 'Goýbolsun et',
+'about' => 'Hakynda',
+'article' => 'Makala',
+'newwindow' => '(täze penjirede açylýar)',
+'cancel' => 'Goýbolsun et',
+'moredotdotdot' => 'Has köp...',
+'mypage' => 'Sahypam',
+'mytalk' => 'Pikir alyşma sahypam',
+'anontalk' => 'Bu IP-niň habarlaşyklary',
+'navigation' => 'Nawigasiýa',
+'and' => '&#32;we',
+
+# Cologne Blue skin
'qbfind' => 'Tap',
'qbbrowse' => 'Göz aýla',
'qbedit' => 'Redaktirle',
@@ -153,15 +191,35 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'qbpageinfo' => 'Kontekst',
'qbmyoptions' => 'Meniň sahypalarym',
'qbspecialpages' => 'Ýörite sahypalar',
-'moredotdotdot' => 'Has köp...',
-'mypage' => 'Sahypam',
-'mytalk' => 'Pikir alyşma sahypam',
-'anontalk' => 'Bu IP-niň habarlaşyklary',
-'navigation' => 'Nawigasiýa',
-'and' => '&#32;we',
-
-# Metadata in edit box
-'metadata_help' => 'Meta-maglumat:',
+'faq' => 'KSS',
+'faqpage' => 'Project:KSS',
+
+# Vector skin
+'vector-action-addsection' => 'Tema goş',
+'vector-action-delete' => 'Öçür',
+'vector-action-move' => 'Adyny üýtget',
+'vector-action-protect' => 'Goraga al',
+'vector-action-undelete' => 'Öçürmäni yzyna al',
+'vector-action-unprotect' => 'Goragy aýyr',
+'vector-namespace-category' => 'Kategoriýa',
+'vector-namespace-help' => 'Ýardam sahypasy',
+'vector-namespace-image' => 'Faýl',
+'vector-namespace-main' => 'Sahypa',
+'vector-namespace-media' => 'Media sahypasy',
+'vector-namespace-mediawiki' => 'Habarlaşyk',
+'vector-namespace-project' => 'Taslama sahypasy',
+'vector-namespace-special' => 'Ýörite sahypa',
+'vector-namespace-talk' => 'Çekişme',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Ulanyjy sahypasy',
+'vector-view-create' => 'Döret',
+'vector-view-edit' => 'Redaktirle',
+'vector-view-history' => 'Geçmişi gör',
+'vector-view-view' => 'Oka',
+'vector-view-viewsource' => 'Çeşmäni gör',
+'actions' => 'Hereketler',
+'namespaces' => 'At giňişlikleri',
+'variants' => 'Wariantlar',
'errorpagetitle' => 'Säwlik',
'returnto' => '$1.',
@@ -211,18 +269,22 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'otherlanguages' => 'Başga dillerde',
'redirectedfrom' => '($1 sahypasyndan gönükdirildi)',
'redirectpagesub' => 'Gönükdirme sahypasy',
-'lastmodifiedat' => 'Bu sahypa iň soňky gezek $2, $1 senesinde üýtgedildi.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu sahypa iň soňky gezek $2, $1 senesinde üýtgedildi.',
'viewcount' => 'Bu sahypa {{PLURAL:$1|bir|$1 }} gezek görülipdir.',
'protectedpage' => 'Goragly sahypa',
'jumpto' => 'Git we:',
'jumptonavigation' => 'ulan',
'jumptosearch' => 'gözle',
+'view-pool-error' => 'Gynansak-da, şu wagt serwerler hetdenaşa işli.
+Biçak köp ulanyjy şu sahypany görmäge synanyşýar.
+Bir sellem garaşyp, soňra synanyşmagyňyzy towakga edýäris.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} hakynda',
'aboutpage' => 'Project:Hakynda',
'copyright' => 'Mazmun $1 esasynda elýeterlidir.',
-'copyrightpagename' => '{{SITENAME}} taslamasynyň awtorlyk hukugy',
'copyrightpage' => '{{ns:project}}:Awtorlyk hukugy',
'currentevents' => 'Oba güzeri',
'currentevents-url' => 'Project:Oba güzeri',
@@ -230,8 +292,6 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'disclaimerpage' => 'Project:Umumy jogapkärçilikden boýun gaçyrma',
'edithelp' => 'Nähili redaktirlenýär?',
'edithelppage' => 'Help:Redaktirleme',
-'faq' => 'KSS',
-'faqpage' => 'Project:KSS',
'helppage' => 'Help:Içindäkiler',
'mainpage' => 'Baş Sahypa',
'mainpage-description' => 'Baş Sahypa',
@@ -312,10 +372,6 @@ Iň soňky maglumat bazasy gözlegi:
"$1"
Ulanylan funksiýa "$2".
Maglumat bazasy tarapyndan yzyna gaýtarylan säwlik "$3: $4"',
-'noconnect' => 'Bagyşlaň! Wiki käbir tehniki kynçylyklary başdan geçirýär we maglumat bazasynyň serweri bilen gatnaşygy ýola goýup bilenok.<br />
-$1',
-'nodb' => '$1 maglumat bazasyny saýlap bolmady',
-'cachederror' => 'Aşakdaky, talap eden sahypaňyzyň keşirlenen nusgasydyr we könelişen bolmagy ahmal.',
'laggedslavemode' => 'Duýduryş: Sahypada soňky täzelemeler ýok bolmagy ahmal.',
'readonly' => 'Maglumat bazasy gulplandy',
'enterlockreason' => 'Gulplamak üçin bir sebäp görkeziň. Gulpuň haçan açyljakdygy barada takmynan bir sene ýazyň.',
@@ -333,6 +389,8 @@ Muny bir [[Special:ListUsers/sysop|administratora]] URL-ni belläp alyp ýetirme
'readonly_lag' => 'Ätiýaçlyk serwerler esasy serwere boýunça täzelenýärkä, maglumat bazasy awtomatik usulda gulplandy.',
'internalerror' => 'Içerki säwlik',
'internalerror_info' => 'Içerki säwlik: $1',
+'fileappenderrorread' => 'Goşmaça goşulýan mahaly "$1" okatdyrmady.',
+'fileappenderror' => '"$1" faýlyny "$2" faýlyna goşup bolmady.',
'filecopyerror' => '"$1" faýlyny "$2" faýlyna göçürip bolmady.',
'filerenameerror' => '"$1" faýlynyň adyny "$2" diýip üýtgedip bolmady.',
'filedeleteerror' => '"$1" faýlyny öçürip bolmady.',
@@ -343,8 +401,8 @@ Muny bir [[Special:ListUsers/sysop|administratora]] URL-ni belläp alyp ýetirme
'unexpected' => 'Garaşylmadyk baha: "$1"="$2".',
'formerror' => 'Säwlik: formy iberip bolmady',
'badarticleerror' => 'Bu işi bu sahypada amala aşyryp bolmaýar.',
-'cannotdelete' => 'Görkezilen sahypany ýa-da faýly öçürip bolmady.
-Başga bir ulanyjy tarapyndan eýýäm öçürilen bolmagy mümkin.',
+'cannotdelete' => '"$1" sahypasyny ýa-da faýlyny öçürip bolmady.
+Başga biri tarapyndan eýýäm öçürilen bolmagy mümkin.',
'badtitle' => 'Ýolbererliksiz at',
'badtitletext' => 'Isleýän sahypaňyzyň ady ýa nädogry ýa-da boş. Ýa-da bolmasa dilara ýa-da wikiara çykgyt nädogry berlipdir. Içinde atlarda ulanylmagy gadagan simwollardan biri ýa-da birnäçesi bar bolmagy ahmal.',
'perfcached' => 'Aşakdaky maglumatlar keşirlenen bolup, könelişen bolmaklary mümkin!',
@@ -377,7 +435,6 @@ Görkezilen sebäp: ''$2''.",
'virus-unknownscanner' => 'nätanyş antiwirus:',
# Login and logout pages
-'logouttitle' => 'Sessiýany ýap',
'logouttext' => "'''Sessiýany ýapdyňyz.'''
Indi anonim ýagdaýda {{SITENAME}} saýtyny ulanyp bilersiňiz, ýa-da şol bir ýa-da başga bir at bilen [[Special:UserLogin|sessiýany ýaňadan]] açyp bilersiňiz.
@@ -386,7 +443,6 @@ Web brauzeriňiziň keşini arassalaýançaňyz käbir sahypalar sessiýaňyzyň
Hasabyňyz açyldy.
[[Special:Preferences|{{SITENAME}} saýtyndaky ileri tutmalaryňyzy]] üýtgetmegi ýatdan çykarmaň.',
-'loginpagetitle' => 'Sessiýa aç',
'yourname' => 'Ulanyjy adyňyz:',
'yourpassword' => 'Parolyňyz:',
'yourpasswordagain' => 'Paroly gaýtadan ýaz:',
@@ -397,6 +453,7 @@ Hasabyňyz açyldy.
'nav-login-createaccount' => 'Sessiýa aç / täze hasap edin',
'loginprompt' => '{{SITENAME}} saýtynda sessiýa açmak üçin kukileri işletmegiňiz zerurdyr.',
'userlogin' => 'Sessiýa aç / täze hasap edin',
+'userloginnocreate' => 'Sessiýa aç',
'logout' => 'Sessiýany ýap',
'userlogout' => 'Sessiýany ýap',
'notloggedin' => 'Sessiýa açmansyňyz',
@@ -409,27 +466,8 @@ Hasabyňyz açyldy.
'badretype' => 'Girizen parollaryňyz biri-birine gabat gelmeýär.',
'userexists' => 'Girizen ulanyjy adyňyz ulanylýar.
Başga bir at saýlamagyňyzy haýyş edýäris.',
-'youremail' => 'E-poçta:',
-'username' => 'Ulanyjy ady:',
-'uid' => 'Ulanyjy belgisi:',
-'prefs-memberingroups' => 'Agza {{PLURAL:$1|topary|toparlary}}:',
-'yourrealname' => 'Hakyky adyňyz:',
-'yourlanguage' => 'Dil:',
-'yournick' => 'Lakamyňyz (gol hökmünde):',
-'badsig' => 'Nädogry işlenmedik gol. HTML belliklerini gözden geçiriň.',
-'badsiglength' => 'Goluňyz çakdanaşa uzyn.
-$1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
-'yourgender' => 'Jyns:',
-'gender-unknown' => 'Görkezilmedik',
-'gender-male' => 'Erkek',
-'gender-female' => 'Aýal-gyz',
-'prefs-help-gender' => 'Hökmany däl: programma tarapyndan ulanyjynyň jynsyna görä ýüzlenmek üçin ulanylýar. Bu maglumat köpçülige açyk boljakdyr.',
-'email' => 'E-poçta',
-'prefs-help-realname' => 'Hakyky at (hökmany däl): eger hakyky adyňyz berseňiz, onda eden işleriňiz görkezilende ulanyljakdyr.',
'loginerror' => 'Sessiýa açyş säwligi',
-'prefs-help-email' => 'E-poçta adresi hökmany däl; ýöne parolyňyz ýadyňyzdan çykan ýagdaýynda e-poçta adresiňize täze parol iberilmegine mümkinçilik berýär.
-Şeýle-de ol başga ulanyjylaryň ulanyjy we pikir alyşma sahypalaryňyzyň üsti bilen kimdigiňizi bilmezden siziň bilen habarlaşyp bilmeklerine şert döredýär.',
-'prefs-help-email-required' => 'E-poçta adresi talap edilýär.',
+'createaccounterror' => 'Hasaby döredip bolmaýar: $1',
'nocookiesnew' => 'Ulanyjy hasaby döredildi, ýöne sessiýa açmadyňyz.
{{SITENAME}} sessiýa açmak üçin kukilerden peýdalanýar.
Kukileriňiz togtadylgy dur.
@@ -445,16 +483,18 @@ Ulanyjy atlary baş hem-de setir harplara duýgurdyr.
Ýazylyşyny barlaň ýa-da [[Special:UserLogin/signup|täze hasap açyň]].',
'nosuchusershort' => '"<nowiki>$1</nowiki>" dýen at bilen ulanyjy ýok. Ýazylyşyny barlaň.',
'nouserspecified' => 'Ulanyjy adyny görkezmegiňiz hökmanydyr.',
+'login-userblocked' => 'Bu ulanyjy blokirlenipdir. Sessiýa açmaga rugsat berilmeýär.',
'wrongpassword' => 'Paroly nädogry girizdiňiz. Gaýtadan synanyşmagyňyzy haýyş edýäris.',
'wrongpasswordempty' => 'Paroly boş girizdiňiz. Gaýtadan synanyşmagyňyzy haýyş edýäris.',
-'passwordtooshort' => 'Parolyňyz nädogry ýa-da çakdanaşa gysga.
-Parol iň bolmanda {{PLURAL:$1|1 simwoldan|$1 simwoldan}} ybarat hem-de ulanyjy adyňyzdan tapawutly bolmalydyr.',
+'passwordtooshort' => 'Parollar iň bolmanda {{PLURAL:$1|1 simwoldan|$1 simwoldan}} ybarat bolmalydyr.',
+'password-name-match' => 'Parolyňyz ulanyjy adyňyzdan tapawutly bolmalydyr.',
'mailmypassword' => 'Maňa e-poçta bilen täze parol iber',
'passwordremindertitle' => '{{SITENAME}} üçin täze wagtlaýyn parol',
'passwordremindertext' => 'Kimdir biri (ähtimal özüňiz $1 IP adresinden) {{SITENAME}} ($4) üçin täze parol iberilmegini talap etdi. "$2" ulanyjysy üçin wagtlaýynça "$3" paroly döredildi. Eger bu siziň öz talabyňyz bolsa, onda sessiýa açyp, bir täze parol saýlap almagyňyz zerurdyr. Wagtlaýyn parolyňyzyň möhleti {{PLURAL:$5|1 günden|$5 günden}} gutarjakdyr.
Parol üýtgetmekligi siz talap etmedik bolsaňyz ýa-da parolyňyz ýadyňyza düşen bolsa hem-de indi parolyňyzy üýtgedesiňiz gelmeýän bolsa, onda bu habarlaşyga ähmiýet bermän öňki parolyňyzy ulanmaklygy dowam etdirip bilersiňiz.',
'noemail' => '"$1" atly ulanyjynyň hasabynda duran hiç hili e-poçta adresi ýok.',
+'noemailcreate' => 'Dogry bir e-poçta adresini görkezmegiňiz zerur',
'passwordsent' => '"$1" ulanyjysynyň hasabynda duran e-poçta adresine täze parol iberildi. Paroly alanyňyzdan soňra sessiýany ýaňadan açmagyňyzy haýyş edýäris.',
'blocked-mailpassword' => 'IP adresiňiz blokirlenipdir, şonuň üçinem parol dikeldiş funksiýasyny ulanmaklyga rugsat berilmeýär.',
'eauthentsent' => 'Görkezilen adrese tassyklama e-poçtasy iberildi.
@@ -479,6 +519,7 @@ Dogry formatda e-poçta adresi ýazmagyňyzy ýa-da bu bölümi boş goýmagyňy
Saýtda sessiýaňyzy açyň we parolyňyzy üýtgediň.
Eger-de ulanyjy hasabyny ýalňyşlyk bilen döreden bolsaňyz, onda bu habarlaşyga ünsem berip oturmaň.',
+'usernamehasherror' => 'Ulanyjy adynda "gözenekli" simwol bolmaly däldir',
'login-throttled' => 'Sessiýa açmak üçin ýaňy-ýakynda aşa köp synanyşyk etdiňiz.
Gaýtadan synanyşmankaňyz garaşmagyňyzy haýyş edýäris.',
'loginlanguagelabel' => 'Dil: $1',
@@ -493,17 +534,13 @@ Sessiýa açmaklygy tamamlamak üçin, bu ýere täze parol ýazyň:',
'retypenew' => 'Täze paroly gaýtadan ýaz:',
'resetpass_submit' => 'Paroly sazlaň we sessiýa açyň',
'resetpass_success' => 'Parolyňyz şowlulyk bilen üýtgedildi! Häzir sessiýaňyz açylýar...',
-'resetpass_bad_temporary' => 'Nädogry wagtlaýyn parol. Eýýäm şowlulyk bilen parolyňyzy üýtgeden ýa-da täze wagtlaýyn parol talap eden bolmagyňyz mümkin.',
'resetpass_forbidden' => 'Parollary üýtgedip bolmaýar',
'resetpass-no-info' => 'Bu sahypany gönüden-göni açmak üçin sessiýa açmagyňyz zerurdyr.',
'resetpass-submit-loggedin' => 'Paroly üýtget',
+'resetpass-submit-cancel' => 'Goýbolsun et',
'resetpass-wrong-oldpass' => 'Nädogry wagtlaýyn ýa-da häzirki parol.
Parolyňyzy eýýäm şowlulyk bilen üýtgeden ýa-da täze wagtlaýyn parol talap eden bolmagyňyz ahmal.',
'resetpass-temp-password' => 'Wagtlaýyn parol:',
-'resetpass-log' => 'Paroly başky ýagdaýa getirme gündeligi',
-'resetpass-logtext' => 'Aşakdaky gündelik administratorlar tarapyndan paroly başky ýagdaýa getirilen ulanyjylary görkezýär.',
-'resetpass-logentry' => '$1 üçin paroly üýtgetdi',
-'resetpass-comment' => 'Paroly başky ýagdaýa getirmegiň sebäbi:',
# Edit page toolbar
'bold_sample' => 'Goýy tekst',
@@ -575,7 +612,6 @@ Häzirki IP adresiňiz $3, blokirleme belgiňiz bolsa #$5.
'blockededitsource' => "'''$1''' sahypasyndaky '''özgerdişleriňize''' degişli tekst aşakdadyr:",
'whitelistedittitle' => 'Redaktirlemek üçin sessiýa açmaly',
'whitelistedittext' => 'Sahypa redaktirlemek üçin $1.',
-'confirmedittitle' => 'Redaktirlemeklik üçin e-poçta tassyklamasy talap edilýär',
'confirmedittext' => 'Sahypa redaktirlemäp başlamankaňyz e-poçta adresiňizi tassyklamalysyňyz.
[[Special:Preferences|Ulanyjy ileri tutmalaryňyza]] e-poçta adresiňizi ýazyp tassyklamagyňyzy haýyş edýäris.',
'nosuchsectiontitle' => 'Bölüm tapylmady',
@@ -598,14 +634,21 @@ Eger-de sizem anonim ulanyjy bolsaňyz we size siziň bilen dahyly ýok habarla
Bu ady başga sahypalarda [[Special:Search/{{PAGENAME}}|gözläp bilersiňiz]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} degişli gündeliklerde gözleg geçirip bilersiňiz],
ýa-da bu sahypany [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktirläp bilersiňiz]</span>.',
+'noarticletext-nopermission' => 'Häzirki wagtda bu sahypada tekst ýok.
+Bu sahypa adyny [[Special:Search/{{PAGENAME}}|başga sahypalarda gözläp]]
+ýa-da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} degişli gündeliklerde gözleg geçirip bilersiňiz].</span>',
'userpage-userdoesnotexist' => '"$1" ulanyjy hasaby hasaba alynmandyr.
Bu sahypany döretmek/redaktirlemek isleýän bolsaňyz, onda esewan boluň.',
+'userpage-userdoesnotexist-view' => '"$1" ulanyjy hasaby hasaba alynmandyr.',
+'blocked-notice-logextract' => 'Bu ulanyjy şu wagt blokirlengi.
+Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:',
'clearyourcache' => "'''Bellik:''' Ýazdyranyňyzdan soň, üýtgeşmeleri görmek üçin brauzeriňiziň keşini arassalaň:
'''Mozilla / Firefox / Safari:''' ''Shift''-e basyp, ''Reload''-a tyklaň ýa-da ýa ''Ctrl-F5''-e ýa-da ''Ctrl-R''-a basyň (Macintosh üçin ''Command-R'');
'''Konqueror:''' ''Reload''-a tyklaň ýa-da ''F5''-e basyň;
'''Opera:''' ''Gurallar → Ileri tutmalar''dan keşi arassalaň;
'''Internet Explorer:''' ''Ctrl''-a basyp, ''Refresh''-i tyklaň ýa-da ''Ctrl-F5''-e basyň.",
-'usercssjsyoucanpreview' => "'''Maslahat:''' Ýazdyrmankaňyz täze CSS/JS sahypalaryňyzy barlamak üçin 'Deslapky syny görkez' düwmesinden peýdalanyň.",
+'usercssyoucanpreview' => "'''Ümleme:''' Täze CSS faýlyny ýazdyrmankaňyz, synap görmek üçin 'Deslapky syn' düwmesine basyň.",
+'userjsyoucanpreview' => "'''Ümleme:''' Täze JS faýlyny ýazdyrmankaňyz, synap görmek üçin 'Deslapky syn' düwmesine basyň.",
'usercsspreview' => "'''Bu ulanyjy CSS faýlyňyzyň ýöne bir deslapky syny.'''
'''Ol heniz ýazdyrylan däldir!'''",
'userjspreview' => "'''Bu ulanyjy JavaScriptiňiziň ýöne bir barlagy/deslapky syny.'''
@@ -662,13 +705,16 @@ Sahypany has kiçi böleklere bölmekligi göz öňünde tutmagyňyzy haýyş ed
Islesiňiz, tekstiňizi başga bir faýla göçüriň-de soňra ulanar ýaly ýazdyryp goýuň.
Maglumat bazasyny gulplan administrator şeýle düşündiriş berýär: $1",
-'protectedpagewarning' => "'''Duýduryş: Bu sahypa gulplanypdyr, onuň adyny diňe administratorlyk hukuklaryna eýe bolan ulanyjylar üýtgedip bilýär.'''",
-'semiprotectedpagewarning' => "'''Bellik''': Bu sahypa gulplanypdyr; ony diňe hasaba alnan ulanyjylar redaktirläp bilýär.",
+'protectedpagewarning' => "'''Duýduryş: Bu sahypa gulplanypdyr, onuň adyny diňe administratorlyk hukuklaryna eýe bolan ulanyjylar üýtgedip bilýär.'''
+Gündeligiň iň soňky ýazgysy salgylanmak üçin aşakda berilýär:",
+'semiprotectedpagewarning' => "'''Bellik''': Bu sahypa gulplanypdyr; ony diňe hasaba alnan ulanyjylar redaktirläp bilýär.
+Gündeligiň iň soňky ýazgysy salgylanmak üçin aşakda berilýär:",
'cascadeprotectedwarning' => "'''Duýduryş''': Bu sahypa gulplanypdyr; ony diňe administratorlar redaktirläp bilýär. Sebäbi ol aşakdaky kaskad goragly {{PLURAL:$1|sahypa|sahypalara}} girizilipdir:",
-'titleprotectedwarning' => "'''Duýduryş''': Bu sahypa gulplanypdyr; ony redaktirlemek üçin [[Special:ListGroupRights|ýörite hukuklar]] talap edilýär.",
-'templatesused' => 'Bu sahypada ulanylan şablonlar:',
-'templatesusedpreview' => 'Bu deslapky synda ulanylan şablonlar:',
-'templatesusedsection' => 'Şu bölümde ulanylan şablonlar:',
+'titleprotectedwarning' => "'''Duýduryş''': Bu sahypa gulplanypdyr; ony redaktirlemek üçin [[Special:ListGroupRights|ýörite hukuklar]] talap edilýär.
+Gündeligiň iň soňky ýazgysy salgylanmak üçin aşakda berilýär:",
+'templatesused' => 'Bu sahypada ulanylan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedpreview' => 'Bu deslapky synda ulanylan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedsection' => 'Şu bölümde ulanylan {{PLURAL:$1|şablon|şablonlar}}:',
'template-protected' => '(goragly)',
'template-semiprotected' => '(ýarym goragly)',
'hiddencategories' => 'Bu sahypa {{PLURAL:$1|1 gizlin kategoriýa|$1 gizlin kategoriýa}} degişlidir:',
@@ -676,16 +722,18 @@ Maglumat bazasyny gulplan administrator şeýle düşündiriş berýär: $1",
'nocreatetext' => '{{SITENAME}} täze sahypa döretmek mümkinçiligini çäklendirdi.
Yza gaýdyp, bar bolan sahypalary redaktirläp bilersiňiz ýa-da bolmasa [[Special:UserLogin|sessiýa açyp]] ýa-da [[Special:UserLogin|hasap döredip]] bilersiňiz.',
'nocreate-loggedin' => 'Täze sahypa döretmäge rugsadyňyz ýok.',
+'sectioneditnotsupported-title' => 'Bölüm redaktirleme goldanylmaýar',
+'sectioneditnotsupported-text' => 'Bölüm redaktirleme bu sahypada goldanylmaýar.',
'permissionserrors' => 'Rugsat säwlikleri',
'permissionserrorstext' => 'Aşakdaky {{PLURAL:$1|sebäp|sebäpler}} zerarly, muny etmäge hukugyňyz ýok:',
'permissionserrorstext-withaction' => 'Aşakdaky {{PLURAL:$1|sebäp|sebäpler}} zerarly $2 ygtyýaryňyz ýok:',
-'recreate-deleted-warn' => "'''Duýduryş: Ozal öçürilen bir sahypany gaýtadan döredýärsiňiz.'''
+'recreate-moveddeleted-warn' => "'''Duýduryş: Ozaldan öçürilen bir sahypany gaýtadan döredýärsiňiz.'''
-Bu sahypany redaktirlemegiň ýerliklidigine ýa-da däldigine anyk göz ýetirmelisiňiz.
-Bu sahypanyň öçürme gündeligi aşakda berilýär:",
-'deleted-notice' => 'Bu sahypa öçürilipdir.
-Öçürme gündeligi aşakda berilýär.',
-'deletelog-fulllog' => 'Tutuş gündeligi görkez',
+Bu sahypany redaktirlemegiň ýerliklidigi ýa-da däldigi barada oýlanyň.
+Sahypanyň öçürme we at üýtgetme gündeligi aşakda berilýär:",
+'moveddeleted-notice' => 'Bu sahypa öçürildi.
+Sahypanyň öçürme we at üýtgetme gündelikleri salgylanma üçin aşakda görkezilendir.',
+'log-fulllog' => 'Tutuş gündeligi görkez',
'edit-hook-aborted' => 'Özgerdiş ilgençek bilen togtadyldy.
Düşündiriş berilmedi.',
'edit-gone-missing' => 'Sahypany täzeläp bolanok.
@@ -728,7 +776,7 @@ $3 tarapyndan görkezilen sebäp: ''$2''",
'currentrev' => 'Häzirki wersiýa',
'currentrev-asof' => '$1 senesinden başlap sahypanyň şu wagtky wersiýasy',
'revisionasof' => 'Sahypanyň $1 senesindäki wersiýasy',
-'revision-info' => '$2 tarapyndan döredilen $1 seneli wersiýa', # Additionally available: $3: revision id
+'revision-info' => '$2 tarapyndan döredilen $1 seneli wersiýa',
'previousrevision' => '← Ozalkysy',
'nextrevision' => 'Indikisi →',
'currentrevisionlink' => 'Häzirki wersiýany görkez',
@@ -741,7 +789,7 @@ $3 tarapyndan görkezilen sebäp: ''$2''",
Şertli belgiler: '''({{int:cur}})''' = häzirki wersiýadan tapawudy,
'''({{int:last}})''' = öňündäki wersiýadan tapawudy, '''{{int:minoreditletter}}''' = ujypsyzja özgerdiş.",
'history-fieldset-title' => 'Geçmişe göz aýla',
-'deletedrev' => '[öçürildi]',
+'history-show-deleted' => 'Diňe öçürilenler',
'histfirst' => 'Iň irki',
'histlast' => 'Ýaňy-ýakyndaky',
'historysize' => '({{PLURAL:$1|1 baýt|$1 baýt}})',
@@ -750,71 +798,113 @@ $3 tarapyndan görkezilen sebäp: ''$2''",
# Revision feed
'history-feed-title' => 'Wersiýa geçmişi',
'history-feed-description' => 'Wikidäki bu sahypanyň wersiýa geçmişi',
-'history-feed-item-nocomment' => '$1, $2 senesinde', # user at time
+'history-feed-item-nocomment' => '$1, $2 senesinde',
'history-feed-empty' => 'Talap edilýän sahypa ýok.
Wikiden öçürilen ýa-da adynyň üýtgedilen bolmagy ahmal.
Baglanyşykly täze sahypalar üçin [[Special:Search|wikide gözleg geçirip]] görüň.',
# Revision deletion
-'rev-deleted-comment' => '(teswir aýyryldy)',
-'rev-deleted-user' => '(ulanyjy ady aýyryldy)',
-'rev-deleted-event' => '(gündelik işi aýyryldy)',
-'rev-deleted-text-permission' => "Bu sahypa wersiýasy '''öçürilipdir'''.
+'rev-deleted-comment' => '(teswir aýyryldy)',
+'rev-deleted-user' => '(ulanyjy ady aýyryldy)',
+'rev-deleted-event' => '(gündelik işi aýyryldy)',
+'rev-deleted-user-contribs' => '[ulanyjy ady ýa-da IP adresi aýrylypdyr - özgerdiş goşantlardan gizlenildi]',
+'rev-deleted-text-permission' => "Bu sahypa wersiýasy '''öçürilipdir'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Öçürme gündeliginde] jikme-jikligi bar bolmagy mümkin.",
-'rev-deleted-text-view' => "Bu sahypa wersiýasy '''öçürilipdir'''.
+'rev-deleted-text-unhide' => "Bu sahypa wersiýasy '''öçürilipdir'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Öçürme gündeliginde] jikme-jikligi bar bolmagy mümkin.
+Şonda-da siz administrator hökmünde [$1 bu wersiýany görüp bilersiňiz].",
+'rev-suppressed-text-unhide' => "Bu sahypa wersiýasy '''bökdelipdir'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Bökdeme gündeliginde] jikme-jikligi bar bolmagy mümkin.
+Şonda-da siz administrator hökmünde [$1 bu wersiýany görüp bilersiňiz].",
+'rev-deleted-text-view' => "Bu sahypa wersiýasy '''öçürilipdir'''.
Administrator hökmünde ony görüp bilersiňiz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} öçürme gündeliginde] jikme-jikligi bar bolmagy mümkin.",
-'rev-deleted-no-diff' => "Bu wersiýa tapawudyny görüp bilmersiňiz, sebäbi wersiýalaryň biri '''öçürilipdir'''.
+'rev-suppressed-text-view' => "Bu sahypa wersiýasy '''bökdelipdir'''.
+Administrator hökmünde ony görüp bilersiňiz; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} bökdeme gündeliginde] jikme-jiklikler bar bolmagy mümkin.",
+'rev-deleted-no-diff' => "Bu wersiýa tapawudyny görüp bilmersiňiz, sebäbi wersiýalaryň biri '''öçürilipdir'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Öçürme gündeliginde] jikme-jiklikleri bolmagy mümkin.",
-'rev-deleted-unhide-diff' => "Bu wersiýa tapawudynyň bir wersiýasy '''öçürilipdir'''.
+'rev-deleted-unhide-diff' => "Bu wersiýa tapawudynyň bir wersiýasy '''öçürilipdir'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Öçürme gündeliginde] jikme-jiklikleri bolmagy mümkin.
Şonda-da administrator hökmünde isleseňiz [$1 bu wersiýa tapawudyny görüp bilersiňiz].",
-'rev-delundel' => 'görkez/gizle',
-'revisiondelete' => 'Wersiýalary öçür/yzyna dikelt',
-'revdelete-nooldid-title' => 'Nädogry niýetlenilýän wersiýa',
-'revdelete-nooldid-text' => 'Bu funksiýany ýerine ýetirmek üçin kesgitli bir niýetlenilýän wersiýa görkezmänsiňiz. Görkezen wersiýaňyz ýok ýa-da bar bolan wersiýany gizlemäge synanyşýarsyňyz.',
-'revdelete-nologtype-title' => 'Gündeligiň görnüşi görkezlimändir',
-'revdelete-nologtype-text' => 'Bu iş amala aşyryljak gündeligiň görnüşini görkezmänsiňiz.',
-'revdelete-toomanytargets-title' => 'Çakdanaşa köp niýetlenilýän',
-'revdelete-toomanytargets-text' => 'Bu işi ýerine ýetirmeklik üçin aşa köp niýetlenilýän görkezdiňiz.',
-'revdelete-nologid-title' => 'Nädogry gündelik ýazgysy',
-'revdelete-nologid-text' => 'Bu funksiýany ýerine ýetirmek üçin ýa-ha niýetlenilýän gündelik wakasyny gürkezmänsiňiz ýa-da görkezen ýazgyňyz ýok.',
-'revdelete-selected' => "'''[[:$1]] sahypasynyň {{PLURAL:$2|saýlanylan wersiýasy|saýlanylan wersiýalary}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Saýlanylan gündelik wakasy|Saýlanylan gündelik wakalary}}:'''",
-'revdelete-text' => "'''Öçürilen wersiýalar we wakalar ýene-de sahypa geçmişinde hem-de gündeliklerde görünjekdir, emma olaryň mazmunynyň bölekleri jemgyýetçilik üçin elýeterli boljak däldir.'''
-
-{{SITENAME}} saýtyndaky beýleki administratorlar gizlenilgi mazmuny görüp bilýändir we goşmaça çäklendirme goýulmadyk bolsa onda olary şol bir interfeýs bilen yzyna dikeldip bilýändir.
-Muny ýerine ýetirmek isleýändigiňizi, netijelerine düşünýändigiňiz we muny [[{{MediaWiki:Policy-url}}|kadalar]] boýunça edýändigiňizi tassyklaň.",
-'revdelete-suppress-text' => "Gizlemeklik '''diňe''' aşakdaky ýagdaýlarda ulanylmalydyr:
+'rev-suppressed-unhide-diff' => "Bu wersiýa tapawudynyň wersiýalarynyň biri '''bökdelipdir'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Bökdeme gündeliginde] jikme-jiklikleri bolmagy mümkin.
+Şonda-da administrator hökmünde isleseňiz [$1 bu wersiýa tapawudyny görüp bilersiňiz].",
+'rev-deleted-diff-view' => "Bu aratapawudyň wersiýalarynyň biri '''öçürilipdir'''.
+Administrator hökmünde bu aratapawudy görüp bilersiňiz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} öçürme gündeliginde] jikme-jiklikler bar bolmagy mümkin.",
+'rev-suppressed-diff-view' => "Bu aratapawudyň wersiýalarynyň biri '''bökdelipdir'''.
+Administrator hökmünde bu aratapawudy görüp bilersiňiz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} bökdeme gündeliginde] jikme-jiklikler bar bolmagy mümkin.",
+'rev-delundel' => 'görkez/gizle',
+'rev-showdeleted' => 'görkez',
+'revisiondelete' => 'Wersiýalary öçür/yzyna dikelt',
+'revdelete-nooldid-title' => 'Nädogry niýetlenilýän wersiýa',
+'revdelete-nooldid-text' => 'Bu funksiýany ýerine ýetirmek üçin kesgitli bir niýetlenilýän wersiýa görkezmänsiňiz. Görkezen wersiýaňyz ýok ýa-da bar bolan wersiýany gizlemäge synanyşýarsyňyz.',
+'revdelete-nologtype-title' => 'Gündeligiň görnüşi görkezlimändir',
+'revdelete-nologtype-text' => 'Bu iş amala aşyryljak gündeligiň görnüşini görkezmänsiňiz.',
+'revdelete-nologid-title' => 'Nädogry gündelik ýazgysy',
+'revdelete-nologid-text' => 'Bu funksiýany ýerine ýetirmek üçin ýa-ha niýetlenilýän gündelik wakasyny gürkezmänsiňiz ýa-da görkezen ýazgyňyz ýok.',
+'revdelete-no-file' => 'Görkezilen faýl ýok.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" faýlynyň $3, $2 seneli öçürilen wersiýasyny görmek isleýäniňiz çynyňyzmy?',
+'revdelete-show-file-submit' => 'Hawa',
+'revdelete-selected' => "'''[[:$1]] sahypasynyň {{PLURAL:$2|saýlanylan wersiýasy|saýlanylan wersiýalary}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Saýlanylan gündelik wakasy|Saýlanylan gündelik wakalary}}:'''",
+'revdelete-text' => "'''Öçürilen wersiýalar we wakalar sahypa geçmişlerinde we gündeliklerde ýene-de görkeziljekdir, emma olaryň mazmunynyň käbir bölekleri jemgyýetçilige açyk boljak däldir.'''
+{{SITENAME}} saýtyndaky başga administratorlar gizlin mazmuny ýene-de görüp hem-de goşmaça çäklendirme goýulmadyk ýagdaýynda şol bir interfeýsiň üsti bilen ony yzyna dikeldip bilýärler.",
+'revdelete-confirm' => 'Şu işi anyk isleýändigiňizi, ýagny onuň netijelerine düşünýändiňizi we [[{{MediaWiki:Policy-url}}|kadalar boýunça]] amala aşyrýandygyňyzy tassyklamagyňyzy haýyş edýäris.',
+'revdelete-suppress-text' => "Gizlemeklik '''diňe''' aşakdaky ýagdaýlarda ulanylmalydyr:
* Potensial taýdan töhmetçilikli maglumat
* Ýerliksiz şahsy maglumat
*: ''öý salgylary we telefon belgileri, durmuş ätiýaçlandyryş belgileri we ş.m.''",
-'revdelete-legend' => 'Görünme derejesi çäklendirmelerini sazla',
-'revdelete-hide-text' => 'Sahypanyň bu wersiýasyny gizle',
-'revdelete-hide-name' => 'Işi we onuň obýektini gizle',
-'revdelete-hide-comment' => 'Özgerdiş mazmunyny gizle',
-'revdelete-hide-user' => 'Redaktirläniň ulanyjy adyny/IP-sini gizle',
-'revdelete-hide-restricted' => 'Maglumatlary administratorlardan we beýlekilerden gizläň',
-'revdelete-suppress' => 'Maglumatlary administratorlardan we beýlekilerden gizläň',
-'revdelete-hide-image' => 'Faýlyň mazmunyny gizle',
-'revdelete-unsuppress' => 'Dikeldilen wersiýalardaky çäklendirmeleri aýyr',
-'revdelete-log' => 'Sebäp:',
-'revdelete-submit' => 'Saýlanylan wersiýa berjaý et',
-'revdelete-logentry' => '[[$1]] üçin wersiýa görünme derejesini üýtgetdi',
-'logdelete-logentry' => '[[$1]] üçin waka görünme derejesini üýtgetdi',
-'revdelete-success' => "'''Wersiýa görünme derejesi şowly täzelendi.'''",
-'logdelete-success' => "'''Gündelik görünme derejesi şowlulyk bilen sazlandy.'''",
-'revdel-restore' => 'Görnüşi üýtget',
-'pagehist' => 'Sahypanyň geçmişi',
-'deletedhist' => 'Öçürilen geçmiş',
-'revdelete-content' => 'mazmun',
-'revdelete-summary' => 'özgerdiş mazmuny',
-'revdelete-uname' => 'ulanyjy ady',
-'revdelete-restricted' => 'administratorlara goýlan çäklendirmeler',
-'revdelete-unrestricted' => 'administratorlardan aýyrylan çäklendirmeler',
-'revdelete-hid' => 'gizle $1',
-'revdelete-unhid' => 'görkez $1',
-'revdelete-log-message' => '$2 {{PLURAL:$2|wersiýa|wersiýa}} üçin $1',
-'logdelete-log-message' => '$2 {{PLURAL:$2|waka|waka}} üçin $1',
+'revdelete-legend' => 'Görünme derejesi çäklendirmelerini sazla',
+'revdelete-hide-text' => 'Sahypanyň bu wersiýasyny gizle',
+'revdelete-hide-image' => 'Faýlyň mazmunyny gizle',
+'revdelete-hide-name' => 'Işi we onuň obýektini gizle',
+'revdelete-hide-comment' => 'Özgerdiş mazmunyny gizle',
+'revdelete-hide-user' => 'Redaktirläniň ulanyjy adyny/IP-sini gizle',
+'revdelete-hide-restricted' => 'Maglumatlary administratorlardan we beýlekilerden gizläň',
+'revdelete-radio-same' => '(üýtgetme)',
+'revdelete-radio-set' => 'Hawa',
+'revdelete-radio-unset' => 'Ýok',
+'revdelete-suppress' => 'Maglumatlary administratorlardan we beýlekilerden gizläň',
+'revdelete-unsuppress' => 'Dikeldilen wersiýalardaky çäklendirmeleri aýyr',
+'revdelete-log' => 'Sebäp:',
+'revdelete-submit' => 'Saýlanylan {{PLURAL:$1|wersiýada|wersiýalarda}} peýdalan',
+'revdelete-logentry' => '[[$1]] üçin wersiýa görünme derejesini üýtgetdi',
+'logdelete-logentry' => '[[$1]] üçin waka görünme derejesini üýtgetdi',
+'revdelete-success' => "'''Wersiýa görünme derejesi şowly täzelendi.'''",
+'revdelete-failure' => "'''Wersiýa görünme derejesini täzeläp bolmaýar:'''
+$1",
+'logdelete-success' => "'''Gündelik görünme derejesi şowlulyk bilen sazlandy.'''",
+'logdelete-failure' => "'''Gündelik görünme derejesini sazlap bolmaýar:'''
+$1",
+'revdel-restore' => 'Görnüşi üýtget',
+'pagehist' => 'Sahypanyň geçmişi',
+'deletedhist' => 'Öçürilen geçmiş',
+'revdelete-content' => 'mazmun',
+'revdelete-summary' => 'özgerdiş mazmuny',
+'revdelete-uname' => 'ulanyjy ady',
+'revdelete-restricted' => 'administratorlara goýlan çäklendirmeler',
+'revdelete-unrestricted' => 'administratorlardan aýyrylan çäklendirmeler',
+'revdelete-hid' => 'gizle $1',
+'revdelete-unhid' => 'görkez $1',
+'revdelete-log-message' => '$2 {{PLURAL:$2|wersiýa|wersiýa}} üçin $1',
+'logdelete-log-message' => '$2 {{PLURAL:$2|waka|waka}} üçin $1',
+'revdelete-hide-current' => '$2, $1 seneli ýazgyda gizleme säwligi: bu häzirki wersiýa.
+Ony gizläp bolmaýar.',
+'revdelete-show-no-access' => '$2, $1 seneli ýazgyda görkezme säwligi: bu ýazgy "çäklendirilen" diýlip bellenipdir.
+Oňa baryp bilmeýärsiňiz.',
+'revdelete-modify-no-access' => '$2, $1 seneli ýazgyda üýtgetme säwligi: bu ýazgy "çäklendirilen" diýlip bellenipdir.
+Oňa baryp bilmeýärsiňiz.',
+'revdelete-modify-missing' => '$1 ID-li ýazgyda üýtgetme säwligi: maglumat bazasynda ýok!',
+'revdelete-no-change' => "'''Duýduryş:''' $2, $1 seneli ýazgy üçin görünme derejesi sazlamalary eýýäm talap edilipdir.",
+'revdelete-concurrent-change' => '$2, $1 seneli ýazgyda üýtgetme säwligi: ýazgynyň statusy siz ony üýtgedip ýörkäňiz kimdir biri tarapyndan üýtgedilen bolmaly.',
+'revdelete-only-restricted' => '$2, $1 seneli ýazgy gizleme säwligi: Elementleri beýleki bökdeme opsiýalaryndan birini saýlamazdan administratorlaryň görmeginden bökdäp bilmeýärsiňiz.',
+'revdelete-reason-dropdown' => '*Adaty öçürme sebäpleri
+** Awtorlyk hukugynyň bozulmagy
+** Ýerliksiz şahsy maglumat
+** Potensial taýdan töhmetçilikli maglumat',
+'revdelete-otherreason' => 'Başga/goşmaça sebäp:',
+'revdelete-reasonotherlist' => 'Başga sebäp',
+'revdelete-edit-reasonlist' => 'Öçürme sebäplerini redaktirle',
+'revdelete-offender' => 'Wersiýanyň awtory:',
# Suppression log
'suppressionlog' => 'Bökdeme gündeligi',
@@ -853,67 +943,13 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
'mergelogpagetext' => 'Aşakdaky sanaw sahypalaryň geçmişleriniň iň soňky birleşdirmelerini görkezýär.',
# Diffs
-'history-title' => '"$1" sahypasynyň geçmişi',
-'difference' => '(Wersiýalaryň aratapawudy)',
-'lineno' => 'Setir $1:',
-'compareselectedversions' => 'Saýlanan wersiýalary deňeşdir',
-'visualcomparison' => 'Görkezişli deňeşdirme',
-'wikicodecomparison' => 'Wikitekst deňeşdirmesi',
-'editundo' => 'yzyna al',
-'diff-multi' => '(Görkezilmeýän {{PLURAL:$1|$1 sany aralyk wersiýa|$1 sany aralyk wersiýa}} bar.)',
-'diff-movedto' => '$1 sahypasyna göçürildi',
-'diff-styleadded' => '$1 stili goşuldy',
-'diff-added' => '$1 goşuldy',
-'diff-changedto' => '$1 edilip üýtgedildi',
-'diff-movedoutof' => 'şundan ady üýtgedildi: $1',
-'diff-styleremoved' => '$1 stili aýyryldy',
-'diff-removed' => '$1 aýyryldy',
-'diff-changedfrom' => 'şundan üýtgedildi: $1',
-'diff-src' => 'çeşme',
-'diff-withdestination' => 'niýetlenileni $1',
-'diff-with' => '&#32;$1 $2 bilen',
-'diff-with-final' => '&#32;we $1 $2',
-'diff-width' => 'in',
-'diff-height' => 'boý',
-'diff-p' => "'''abzas'''",
-'diff-blockquote' => "'''sitata'''",
-'diff-h1' => "'''at (1-nji dereje)'''",
-'diff-h2' => "'''at (2-nji dereje)'''",
-'diff-h3' => "'''at (3-nji dereje)'''",
-'diff-h4' => "'''at (4-nji dereje)'''",
-'diff-h5' => "'''at (5-nji dereje)'''",
-'diff-pre' => "'''ozaldan formatirlenen blok'''",
-'diff-div' => "'''bölüm'''",
-'diff-ul' => "'''tertibe salynmadyk sanaw'''",
-'diff-ol' => "'''tertibe salynan sanaw'''",
-'diff-li' => "'''sanaw elementi'''",
-'diff-table' => "'''tablisa'''",
-'diff-tbody' => "'''tablisanyň mazmuny'''",
-'diff-tr' => "'''setir'''",
-'diff-td' => "'''öýjük'''",
-'diff-th' => "'''at'''",
-'diff-br' => "'''setir soňy'''",
-'diff-hr' => "'''gorizontal lineýka'''",
-'diff-code' => "'''kompýuter kodunyň blogy'''",
-'diff-dl' => "'''kesgitleme sanawy'''",
-'diff-dt' => "'''kesgitleme adalgasy'''",
-'diff-dd' => "'''kesgitleme'''",
-'diff-input' => "'''girizme'''",
-'diff-form' => "'''forma'''",
-'diff-img' => "'''surat'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''çykgyt'''",
-'diff-i' => "'''kursiw'''",
-'diff-b' => "'''goýy'''",
-'diff-strong' => "'''güýçli'''",
-'diff-em' => "'''nygtama'''",
-'diff-font' => "'''şrift'''",
-'diff-big' => "'''uly'''",
-'diff-del' => "'''öçürilen'''",
-'diff-tt' => "'''üýtgemeýän giňlik'''",
-'diff-sub' => "'''setir asty'''",
-'diff-sup' => "'''setir üsti'''",
-'diff-strike' => "'''üsti çyzylan'''",
+'history-title' => '"$1" sahypasynyň geçmişi',
+'difference' => '(Wersiýalaryň aratapawudy)',
+'lineno' => 'Setir $1:',
+'compareselectedversions' => 'Saýlanan wersiýalary deňeşdir',
+'showhideselectedversions' => 'Saýlanan wersiýalary görkez/gizle',
+'editundo' => 'yzyna al',
+'diff-multi' => '(Görkezilmeýän {{PLURAL:$1|$1 sany aralyk wersiýa|$1 sany aralyk wersiýa}} bar.)',
# Search results
'searchresults' => 'Gözleg netijeleri',
@@ -921,28 +957,25 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
'searchresulttext' => '{{SITENAME}} boýunça gözleg geçirmek barada jikme-jik maglumat almak üçin [[{{MediaWiki:Helppage}}|{{int:help}}]] sahypasyna göz aýlap bilersiňiz.',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' üçin gözleg geçirdiňiz. ([[Special:Prefixindex/$1|"$1" bilen başlaýan ähli sahypalar]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sahypasyna çykgydy bar bolan ähli sahypalar]])',
'searchsubtitleinvalid' => "Gözlenen: '''$1'''",
-'noexactmatch' => "'''\"\$1\" diýlip atlandyrylýan sahypa ýok.''' Bu sahypany siz [[:\$1|döredip bilersiňiz]].",
-'noexactmatch-nocreate' => "'''\"\$1\" atly hiç hili sahypa ýok.'''",
'toomanymatches' => 'Çakdanaşa köp gabat gelme tapyldy, başgaçarak talap ýazyp görüň',
'titlematches' => 'Sahypa ady gabat gelýär',
'notitlematches' => 'Şeýle atly sahypa gabat gelmedi',
'textmatches' => 'Sahypa teksti gabat gelýär',
'notextmatches' => 'Hiç bir sahypada tapylmady',
-'prevn' => 'öňki $1',
-'nextn' => 'indiki $1',
+'prevn' => 'öňki {{PLURAL:$1|$1}}',
+'nextn' => 'indiki {{PLURAL:$1|$1}}',
'prevn-title' => 'Öňki $1 {{PLURAL:$1|netije|netije}}',
'nextn-title' => 'Indiki $1 {{PLURAL:$1|netije|netije}}',
'shown-title' => 'Sahypa başyna $1 {{PLURAL:$1|netije|netije}} görkez',
-'viewprevnext' => '($1) ($2) ($3).',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Gözleg opsiýalary',
'searchmenu-exists' => "'''Bu wikide \"[[:\$1]]\" atly sahypa bar'''",
'searchmenu-new' => "'''Bu wikide \"[[:\$1]]\" sahypasyny döret!'''",
'searchhelp-url' => 'Help:Içindäkiler',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Şu prefiksli sahypalara göz aýla]]',
'searchprofile-articles' => 'Mazmunly sahypalar',
-'searchprofile-articles-and-proj' => 'Mazmun & taslama sahypalary',
-'searchprofile-project' => 'Taslama sahypalary',
-'searchprofile-images' => 'Faýllar',
+'searchprofile-project' => 'Ýardam we Taslama sahypalary',
+'searchprofile-images' => 'Multimedia',
'searchprofile-everything' => 'Ähli zatlar',
'searchprofile-advanced' => 'Giňeldilen',
'searchprofile-articles-tooltip' => '$1 boýunça gözle',
@@ -950,8 +983,6 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
'searchprofile-images-tooltip' => 'Faýllary gözle',
'searchprofile-everything-tooltip' => 'Ähli sahypalardan gözle (şol sanda çekişme sahypalaryndan)',
'searchprofile-advanced-tooltip' => 'Hususy at giňişliklerinde gözle',
-'prefs-search-nsdefault' => 'Gaýybana arkaly gözle:',
-'prefs-search-nscustom' => 'Hususy at giňişliklerinde gözle:',
'search-result-size' => '$1 ({{PLURAL:$2|1 söz|$2 söz}})',
'search-result-score' => 'Kybapdaşlyk: $1%',
'search-redirect' => '(gönükdirme $1)',
@@ -964,11 +995,12 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
'search-mwsuggest-disabled' => 'teklip ýok',
'search-relatedarticle' => 'Baglanyşykly',
'mwsuggest-disable' => 'AJAX tekliplerini ýap',
+'searcheverything-enable' => 'Ähli at giňişliklerinde gözle',
'searchrelated' => 'baglanyşykly',
'searchall' => 'ählisi',
'showingresults' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$1|'''1''' netije|'''$1''' netije}} görkezilýär.",
'showingresultsnum' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$3|'''1''' netije|'''$3''' netije}} görkezilýär.",
-'showingresultstotal' => "Aşakda {{PLURAL:$4|'''$3''' netijeden '''$1''' sanysy|'''$1 - $2''' aralygyndaky '''$3''' netije}} görkezilýär",
+'showingresultsheader' => "'''$4''' üçin {{PLURAL:$5|'''$3''' netijeden '''$1''' sanysy|'''$3''' netijeden '''$1 - $2''' aralygy}}",
'nonefound' => "'''Bellik''': Diňe käbir at giňişlikleri gaýybana tertipde gözlenilýär.
Gözlegiňiziň başyna '''all:''' pristawkasyny goşup tutuş mazmuny (şol sanda pikir alyşma sahypalaryny, şablonlary we şm.) gözlemäge synanyşyň ýa-da pristawka hökmünde gerekleýän at giňişligiňizi ulanyň.",
'search-nonefound' => 'Talaba gabat gelýän hiç hili netije ýok.',
@@ -977,115 +1009,150 @@ Gözlegiňiziň başyna '''all:''' pristawkasyny goşup tutuş mazmuny (şol san
'powersearch-ns' => 'At giňişliklerinde gözleg:',
'powersearch-redir' => 'Gönükdirmeleri sanawla',
'powersearch-field' => 'Gözle',
+'powersearch-togglelabel' => 'Belle:',
+'powersearch-toggleall' => 'Ählisi',
+'powersearch-togglenone' => 'Hiç biri',
'search-external' => 'Daşarky gözleg',
'searchdisabled' => '{{SITENAME}} saýtynda gözleg geçirmeklik ýapyk.
Ýogsa-da, oňa çenli Google bilen gözleg geçirip bilersiňiz.
Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
+# Quickbar
+'qbsettings' => 'Tiz panel',
+'qbsettings-none' => 'Hiç biri',
+'qbsettings-fixedleft' => 'Çepe berkidildi',
+'qbsettings-fixedright' => 'Saga berkidildi',
+'qbsettings-floatingleft' => 'Çepe ýaplanýar',
+'qbsettings-floatingright' => 'Saga ýaplanýar',
+
# Preferences page
-'preferences' => 'Ileri tutmalar',
-'mypreferences' => 'Ileri tutmalarym',
-'prefs-edits' => 'Özgerdiş sany:',
-'prefsnologin' => 'Sessiýa açmansyňyz',
-'prefsnologintext' => 'Ulanyjy sazlamalaryny üýtgetmek üçin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sessiýa açmagyňyz gerek]</span>.',
-'prefsreset' => 'Sazlamalar başky ýagdaýa getirildi.',
-'qbsettings' => 'Tiz panel',
-'qbsettings-none' => 'Hiç biri',
-'qbsettings-fixedleft' => 'Çepe berkidildi',
-'qbsettings-fixedright' => 'Saga berkidildi',
-'qbsettings-floatingleft' => 'Çepe ýaplanýar',
-'qbsettings-floatingright' => 'Saga ýaplanýar',
-'changepassword' => 'Paroly üýtget',
-'skin' => 'Bezeg',
-'skin-preview' => 'Deslapky syn',
-'math' => 'Matematika',
-'dateformat' => 'Sene formaty',
-'datedefault' => 'Gaýybana',
-'datetime' => 'Sene we wagt',
-'math_failure' => 'Derňäp bolmady',
-'math_unknown_error' => 'näbelli säwlik',
-'math_unknown_function' => 'näbelli funksiýa',
-'math_lexing_error' => 'leksiki säwlik',
-'math_syntax_error' => 'sintaktik säwlik',
-'math_image_error' => 'PNG öwürmeklik şowsuz boldy;
-latex, dvips, gs we convert gurluşlarynyň dogrulygyny barlaň',
-'math_bad_tmpdir' => 'Matematikanyň wagtlaýyn katalogyny ýazyp ýa-da döredip bolanok',
-'math_bad_output' => 'Matematika çykyş katalogyny ýazyp ýa-da döredip bolanok',
-'math_notexvc' => 'texvc ýerine ýetirilýän faýl tapylmady;
-konfigurirlemek üçin math/README serediň.',
-'prefs-personal' => 'Ulanyjy maglumatlary',
-'prefs-rc' => 'Soňky üýtgeşmeler',
-'prefs-watchlist' => 'Gözegçilik sanawy',
-'prefs-watchlist-days' => 'Gözegçilik sanawynda görkeziljek gün sany:',
-'prefs-watchlist-days-max' => '(iň köp 7 gün)',
-'prefs-watchlist-edits' => 'Giňeldilen gözegçilik sanawynda görkeziljek üýtgeşmeleriň maksimum sany:',
-'prefs-watchlist-edits-max' => '(maksimum san: 1000)',
-'prefs-misc' => 'Başga',
-'prefs-resetpass' => 'Paroly üýtget',
-'saveprefs' => 'Ýazdyr',
-'resetprefs' => 'Ýazdyrylmadyk üýtgeşmeleri aýyr',
-'restoreprefs' => 'Ähli gaýybana sazlamalary dikelt',
-'textboxsize' => 'Redaktirleme',
-'prefs-edit-boxsize' => 'Redaktirleme penjiresiniň ölçegi.',
-'rows' => 'Hatarlar:',
-'columns' => 'Sütünler:',
-'searchresultshead' => 'Gözleg',
-'resultsperpage' => 'Sahypa başyna netije sany:',
-'contextlines' => 'Netije başyna setir sany:',
-'contextchars' => 'Setir başyna harp sany:',
-'stub-threshold' => '<a href="#" class="stub">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):',
-'recentchangesdays' => 'Soňky üýtgeşmelerde görkeziljek gün sany:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|gün|gün}})',
-'recentchangescount' => 'Soňky üýtgeşmelerde, sahypa geçmişlerinde hem-de gündeliklerde gaýybana görkezilmeli özgerdiş sany.',
-'savedprefs' => 'Ileri tutmalaryňyz ýazdyryldy.',
-'timezonelegend' => 'Sagat guşaklygy',
-'timezonetext' => 'Ýerli wagtyňyz bilen serweriň wagtynyň (UTC) arasyndaky sagat sany.',
-'localtime' => 'Ýerli wagt:',
-'timezoneselect' => 'Sagat guşaklygy:',
-'timezoneuseserverdefault' => 'Serweriň gaýybanasyny ulan',
-'timezoneuseoffset' => 'Başga (süýşmäni görkez)',
-'timezoneoffset' => 'Süýşme¹:',
-'servertime' => 'Serwer wagty:',
-'guesstimezone' => 'Brauzerden doldur',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktika',
-'timezoneregion-arctic' => 'Arktika',
-'timezoneregion-asia' => 'Aziýa',
-'timezoneregion-atlantic' => 'Atlantik okean',
-'timezoneregion-australia' => 'Awstraliýa',
-'timezoneregion-europe' => 'Ýewropa',
-'timezoneregion-indian' => 'Hindi okeany',
-'timezoneregion-pacific' => 'Ýuwaş okean',
-'allowemail' => 'Başga ulanyjylar maňa e-poçta iberip bilsin',
-'prefs-searchoptions' => 'Gözleg opsiýalary',
-'prefs-namespaces' => 'At giňişlikleri',
-'defaultns' => 'Şu at giňişliklerinde gaýybana gözle:',
-'default' => 'gaýybana',
-'files' => 'Faýllar',
-'prefs-custom-css' => 'Hususy CSS',
-'prefs-custom-js' => 'Hususy JS',
+'preferences' => 'Ileri tutmalar',
+'mypreferences' => 'Ileri tutmalarym',
+'prefs-edits' => 'Özgerdiş sany:',
+'prefsnologin' => 'Sessiýa açmansyňyz',
+'prefsnologintext' => 'Ulanyjy ileri tutmalaryny üýtgetmek üçin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sessiýa açmagyňyz gerek]</span>.',
+'changepassword' => 'Paroly üýtget',
+'prefs-skin' => 'Bezeg',
+'skin-preview' => 'Deslapky syn',
+'prefs-math' => 'Matematiki formulalar',
+'datedefault' => 'Gaýybana',
+'prefs-datetime' => 'Sene we wagt',
+'prefs-personal' => 'Ulanyjy maglumatlary',
+'prefs-rc' => 'Soňky üýtgeşmeler',
+'prefs-watchlist' => 'Gözegçilik sanawy',
+'prefs-watchlist-days' => 'Gözegçilik sanawynda görkeziljek gün sany:',
+'prefs-watchlist-days-max' => '(iň köp 7 gün)',
+'prefs-watchlist-edits' => 'Giňeldilen gözegçilik sanawynda görkeziljek üýtgeşmeleriň maksimum sany:',
+'prefs-watchlist-edits-max' => '(maksimum san: 1000)',
+'prefs-watchlist-token' => 'Gözegçilik sanawynyň alamaty:',
+'prefs-misc' => 'Başga',
+'prefs-resetpass' => 'Paroly üýtget',
+'prefs-email' => 'E-poçta opsiýalary',
+'prefs-rendering' => 'Daşky görnüş',
+'saveprefs' => 'Ýazdyr',
+'resetprefs' => 'Ýazdyrylmadyk üýtgeşmeleri aýyr',
+'restoreprefs' => 'Ähli gaýybana sazlamalary dikelt',
+'prefs-editing' => 'Redaktirleme',
+'prefs-edit-boxsize' => 'Redaktirleme penjiresiniň ölçegi.',
+'rows' => 'Hatarlar:',
+'columns' => 'Sütünler:',
+'searchresultshead' => 'Gözleg',
+'resultsperpage' => 'Sahypa başyna netije sany:',
+'contextlines' => 'Netije başyna setir sany:',
+'contextchars' => 'Setir başyna harp sany:',
+'stub-threshold' => '<a href="#" class="stub">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):',
+'recentchangesdays' => 'Soňky üýtgeşmelerde görkeziljek gün sany:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|gün|gün}})',
+'recentchangescount' => 'Gaýybana görkeziljek özgerdiş sany:',
+'prefs-help-recentchangescount' => 'Muňa soňky üýtgeşmeler, sahypa geçmişleri hem-de gündelikler girýär.',
+'prefs-help-watchlist-token' => 'Bu meýdança gizlin açar ýazmagyňyz gözegçilik sanawyňyz üçin RSS translýasiýasyny döredýär.
+Bu meýdançadaky açary bilen adam gözegçilik sanawyňyzy okap biler, şonuň üçin hem başga bir howpsuz baha saýlaň.
+Gabat gelşine görä döredilen şu bahany ulanyp bilersiňiz: $1',
+'savedprefs' => 'Ileri tutmalaryňyz ýazdyryldy.',
+'timezonelegend' => 'Sagat guşaklygy',
+'localtime' => 'Ýerli wagt:',
+'timezoneuseserverdefault' => 'Serweriň gaýybanasyny ulan',
+'timezoneuseoffset' => 'Başga (süýşmäni görkez)',
+'timezoneoffset' => 'Süýşme¹:',
+'servertime' => 'Serwer wagty:',
+'guesstimezone' => 'Brauzerden doldur',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Aziýa',
+'timezoneregion-atlantic' => 'Atlantik okean',
+'timezoneregion-australia' => 'Awstraliýa',
+'timezoneregion-europe' => 'Ýewropa',
+'timezoneregion-indian' => 'Hindi okeany',
+'timezoneregion-pacific' => 'Ýuwaş okean',
+'allowemail' => 'Başga ulanyjylar maňa e-poçta iberip bilsin',
+'prefs-searchoptions' => 'Gözleg opsiýalary',
+'prefs-namespaces' => 'At giňişlikleri',
+'defaultns' => 'Bolmasa şu at giňişliklerinde gözleg geçiriň:',
+'default' => 'gaýybana',
+'prefs-files' => 'Faýllar',
+'prefs-custom-css' => 'Hususy CSS',
+'prefs-custom-js' => 'Hususy JS',
+'prefs-reset-intro' => 'Bu sahypada öz ileri tutmalaryňyzy saýtyň gaýybana ýagdaýyna getirip bilersiňiz. Yzyna dikeldip bolmaýar.',
+'prefs-emailconfirm-label' => 'E-poçta tassyklamasy:',
+'prefs-textboxsize' => 'Redaktirleme penjiresiniň ölçegi',
+'youremail' => 'E-poçta:',
+'username' => 'Ulanyjy ady:',
+'uid' => 'Ulanyjy belgisi:',
+'prefs-memberingroups' => 'Agza {{PLURAL:$1|topary|toparlary}}:',
+'prefs-registration' => 'Hasaba alnan wagty:',
+'yourrealname' => 'Hakyky adyňyz:',
+'yourlanguage' => 'Dil:',
+'yournick' => 'Lakamyňyz (gol hökmünde):',
+'prefs-help-signature' => 'Çekişme sahypalaryndaky teswirlere "<nowiki>~~~~</nowiki>" bilen gol çekilmelidir, ol goluňyza we onuň wagt belgisine öwrüler.',
+'badsig' => 'Nädogry işlenmedik gol. HTML belliklerini gözden geçiriň.',
+'badsiglength' => 'Goluňyz çakdanaşa uzyn.
+$1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
+'yourgender' => 'Jyns:',
+'gender-unknown' => 'Görkezilmedik',
+'gender-male' => 'Erkek',
+'gender-female' => 'Aýal-gyz',
+'prefs-help-gender' => 'Hökmany däl: programma tarapyndan ulanyjynyň jynsyna görä ýüzlenmek üçin ulanylýar. Bu maglumat köpçülige açyk boljakdyr.',
+'email' => 'E-poçta',
+'prefs-help-realname' => 'Hakyky at (hökmany däl): eger hakyky adyňyz berseňiz, onda eden işleriňiz görkezilende ulanyljakdyr.',
+'prefs-help-email' => 'E-poçta adresi hökmany däl; ýöne parolyňyz ýadyňyzdan çykan ýagdaýynda e-poçta adresiňize täze parol iberilmegine mümkinçilik berýär.
+Şeýle-de ol başga ulanyjylaryň ulanyjy we pikir alyşma sahypalaryňyzyň üsti bilen kimdigiňizi bilmezden siziň bilen habarlaşyp bilmeklerine şert döredýär.',
+'prefs-help-email-required' => 'E-poçta adresi talap edilýär.',
+'prefs-info' => 'Esasy maglumat',
+'prefs-i18n' => 'Halkaralaşdyryş',
+'prefs-signature' => 'Gol',
+'prefs-dateformat' => 'Sene formaty',
+'prefs-timeoffset' => 'Wagt süýşmesi',
+'prefs-advancedediting' => 'Giňeldilen opsiýalar',
+'prefs-advancedrc' => 'Giňeldilen opsiýalar',
+'prefs-advancedrendering' => 'Giňeldilen opsiýalar',
+'prefs-advancedsearchoptions' => 'Giňeldilen opsiýalar',
+'prefs-advancedwatchlist' => 'Giňeldilen opsiýalar',
+'prefs-display' => 'Görkeziş opsiýalary',
+'prefs-diffs' => 'Tapawutlar',
# User rights
-'userrights' => 'Ulanyjy hukuklary dolandyryşy', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Ulanyjy toparlaryny dolandyr',
-'userrights-user-editname' => 'Ulanyjy adyny giriziň:',
-'editusergroup' => 'Ulanyjy toparlaryny redaktirle',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) ulanyjysynyň ulanyjy hukuklaryny üýtgedýärsiňiz",
-'userrights-editusergroup' => 'Ulanyjy toparlaryny redaktirle',
-'saveusergroups' => 'Ulanyjy toparlaryny ýazdyr',
-'userrights-groupsmember' => 'Agza toparlary:',
-'userrights-groups-help' => 'Bu ulanyjynyň girýän toparlaryny üýtgedip bilersiňiz:
+'userrights' => 'Ulanyjy hukuklary dolandyryşy',
+'userrights-lookup-user' => 'Ulanyjy toparlaryny dolandyr',
+'userrights-user-editname' => 'Ulanyjy adyny giriziň:',
+'editusergroup' => 'Ulanyjy toparlaryny redaktirle',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) ulanyjysynyň ulanyjy hukuklaryny üýtgedýärsiňiz",
+'userrights-editusergroup' => 'Ulanyjy toparlaryny redaktirle',
+'saveusergroups' => 'Ulanyjy toparlaryny ýazdyr',
+'userrights-groupsmember' => 'Agza toparlary:',
+'userrights-groupsmember-auto' => 'Gizlin agza toparlary:',
+'userrights-groups-help' => 'Bu ulanyjynyň girýän toparlaryny üýtgedip bilersiňiz:
* Bellenilgi guty ulanyjynyň şol topara degişlidigini aňladýar.
* Bellenilmedik guty ulanyjynyň şol topara degişli däldigini aňladýar.
* * belgisi topary bir goşanyňyzdan soň ony aýyryp ýa-da aýyranyňyzdan soň goşup bolmaýandygyny aňladýar.',
-'userrights-reason' => 'Sebäp:',
-'userrights-no-interwiki' => 'Başga wikilerdäki ulanyjy hukuklaryny redaktirlemäge ygtyýaryňyz ýok.',
-'userrights-nodatabase' => '$1 maglumat bazasy ýok ýa-da ol lokal däl.',
-'userrights-nologin' => 'Ulanyjy hukuklaryny bermek üçin administrator hasaby bilen [[Special:UserLogin|sessiýa açmagyňyz]] zerurdyr.',
-'userrights-notallowed' => 'Siziň hasabyňyzyň ulanyjy hukuklaryny bermäge ygtyýary ýok.',
-'userrights-changeable-col' => 'Üýtgedip bilýän toparlaryňyz',
-'userrights-unchangeable-col' => 'Üýtgedip bilmeýän toparlaryňyz',
+'userrights-reason' => 'Sebäp:',
+'userrights-no-interwiki' => 'Başga wikilerdäki ulanyjy hukuklaryny redaktirlemäge ygtyýaryňyz ýok.',
+'userrights-nodatabase' => '$1 maglumat bazasy ýok ýa-da ol lokal däl.',
+'userrights-nologin' => 'Ulanyjy hukuklaryny bermek üçin administrator hasaby bilen [[Special:UserLogin|sessiýa açmagyňyz]] zerurdyr.',
+'userrights-notallowed' => 'Siziň hasabyňyzyň ulanyjy hukuklaryny bermäge ygtyýary ýok.',
+'userrights-changeable-col' => 'Üýtgedip bilýän toparlaryňyz',
+'userrights-unchangeable-col' => 'Üýtgedip bilmeýän toparlaryňyz',
# Groups
'group' => 'Topar:',
@@ -1138,6 +1205,7 @@ konfigurirlemek üçin math/README serediň.',
'right-bigdelete' => 'Uzyn geçmişli sahypalary öçür',
'right-deleterevision' => 'Sahypalaryň kesgitli wersiýalaryny öçür we yzyna dikelt',
'right-deletedhistory' => 'Öçürilen geçmiş ýazgylaryny gör, baglanyşykly teksti bolmazdan',
+'right-deletedtext' => 'Öçürilen teksti hem-de öçürilen wersiýalaryň arasyndaky üýtgeşmeleri gör',
'right-browsearchive' => 'Öçürilen sahypalary gözle',
'right-undelete' => 'Sahypany yzyna dikelt',
'right-suppressrevision' => 'Administratorlardan gizlenilen wersiýalary gözden geçir we dikelt',
@@ -1151,6 +1219,8 @@ konfigurirlemek üçin math/README serediň.',
'right-editprotected' => 'Goragly sahypalary redaktirle (goragy kaskadlamazdan)',
'right-editinterface' => 'Ulanyjy interfeýsini redaktirle',
'right-editusercssjs' => 'Başga ulanyjylaryň CSS we JS faýllaryny redaktirle',
+'right-editusercss' => 'Başga ulanyjylaryň CSS faýllaryny redaktirle',
+'right-edituserjs' => 'Başga ulanyjylaryň JS faýllaryny redaktirle',
'right-rollback' => 'Belli bir sahypany redaktirlän iň soňky ulanyjynyň özgerdişlerini dessine öňki katdyna getir',
'right-markbotedits' => 'Öňki katdyna getirilen özgerdişleri bot özgerdişi diýip belle',
'right-noratelimit' => 'Derejelendirme çäklendirmelerinden täsirlenme',
@@ -1167,6 +1237,8 @@ konfigurirlemek üçin math/README serediň.',
'right-siteadmin' => 'Maglumat bazasyny gulpla we aç',
'right-reset-passwords' => 'Başga ulanyjylaryň parollaryny başky ýagdaýyna getir',
'right-override-export-depth' => 'Sahypalary, şol sanda çykgytly sahypalary 5-e çenli çuňlukda eksportirle',
+'right-versiondetail' => 'Giňeldilen programma wersiýasy maglumatyny görkez',
+'right-sendemail' => 'Başga ulanyjylara e-poçta iber',
# User rights log
'rightslog' => 'Ulanyjy hukuklarynyň gündeligi',
@@ -1216,8 +1288,17 @@ konfigurirlemek üçin math/README serediň.',
'recentchanges-legend' => 'Soňky üýtgeşmeleriň opsiýalary',
'recentchangestext' => 'Wikidäki iň soňky üýtgeşmeleri şu sahypadan yzarlaň.',
'recentchanges-feed-description' => 'Bu lentadaky wikide edilen iň soňky üýtgeşmeleri yzarlaň.',
+'recentchanges-label-legend' => 'Şertli belgiler: $1.',
+'recentchanges-legend-newpage' => '$1 - täze sahypa',
+'recentchanges-label-newpage' => 'Bu özgerdiş täze bir sahypa döretdi',
+'recentchanges-legend-minor' => '$1 - ujypsyzja özgerdiş',
+'recentchanges-label-minor' => 'Bu bir ujypsyzja özgerdiş',
+'recentchanges-legend-bot' => '$1 - bot özgerdişi',
+'recentchanges-label-bot' => 'Bu özgerdiş bir bot tarapyndan amala aşyryldy',
+'recentchanges-legend-unpatrolled' => '$1 - patrullyk edilmedik özgerdiş',
+'recentchanges-label-unpatrolled' => 'Bu özgerdişe heniz patrullyk edilmändir',
'rcnote' => "Aşakda $5, $4 senesinden başlap, soňky {{PLURAL:$2|1 günde|'''$2''' günde}} edilen {{PLURAL:$1|'''1''' üýtgeşme|'''$1''' üýtgeşme}} görkezilýär.",
-'rcnotefrom' => "Aşakda '''$2''' senesinden bäri edilen üýtgeşmeler görkezilýär ('''$1''' çenli)",
+'rcnotefrom' => '<b>$2</b> senesinden bäri edilen özgerdişler aşakda görkezilýär (<b>$1</b> sanysyna çenli).',
'rclistfrom' => '$1 senesinden bäri edilen özgerdişleri görkez',
'rcshowhideminor' => 'ujypsyzja özgerdişleri $1',
'rcshowhidebots' => 'botlary $1',
@@ -1242,6 +1323,8 @@ konfigurirlemek üçin math/README serediň.',
# Recent changes linked
'recentchangeslinked' => 'Degişli üýtgeşmeler',
+'recentchangeslinked-feed' => 'Degişli üýtgeşmeler',
+'recentchangeslinked-toolbox' => 'Degişli üýtgeşmeler',
'recentchangeslinked-title' => '"$1" bilen baglanyşykly üýtgeşmeler',
'recentchangeslinked-noresult' => 'Berlen wagtyň dowamynda çykgyt berýän sahypalarda üýtgeşme bolmady.',
'recentchangeslinked-summary' => "Aşakdaky sanaw, görkezilen sahypa (ýa-da görkezilen kategoriýanyň agzalaryna) çykgyt berýän sahypalarda edilen üýtgeşmeleriň sanawydyr.
@@ -1252,8 +1335,8 @@ konfigurirlemek üçin math/README serediň.',
# Upload
'upload' => 'Faýl ýükle',
'uploadbtn' => 'Faýl ýükle',
-'reupload' => 'Gaýtadan ýükle',
'reuploaddesc' => 'Ýüklemäni goýbolsun et we ýükleme formuna gaýdyp bar',
+'upload-tryagain' => 'Üýtgedilen faýl düşündirişini tabşyr',
'uploadnologin' => 'Sessiýa açmansyňyz',
'uploadnologintext' => 'Faýl ýüklemek üçin [[Special:UserLogin|sessiýaňyz açyk bolmaly]].',
'upload_directory_missing' => '($1) ýükleme direktoriýasy ýok we web serwer ony döredip bilmeýär.',
@@ -1286,6 +1369,7 @@ Bir sahypada faýl goýmaklyk üçin aşakdaky formlaryň birine görä çykgyt
'illegalfilename' => '"$1" faýl adynda sahypa atlarynda ulanylmagyna rugsat berilmeýän käbir simwollar bar.
Başga bir faýl ady bilen gaýtadan synanyşmagyňyzy haýyş edýäris.',
'badfilename' => 'Faýlyň ady "$1" diýlip üýtgedildi.',
+'filetype-mime-mismatch' => 'Faýl giňeltmesi MIME tipini gabat gelmeýär.',
'filetype-badmime' => 'MIME tipli "$1" faýllarynyň ýüklenmegine rugsat berilmeýär.',
'filetype-bad-ie-mime' => 'Bu faýly ýükläp bolmaýar, sebäbi Internet Explorer ony rugsat berilmeýän hem-de potensial taýdan zyýanly faýl görnüşi bolan "$1" diýip kesgitleýär.',
'filetype-unwanted-type' => "'''\".\$1\"''' islenilýän faýl görnüşi däl.
@@ -1310,7 +1394,6 @@ Mazmunyň şol ýerde peýda bolmaklygy üçin, ony el bilen redaktirlemeli bol
* Ýüklenilýän faýlyň ady: '''<tt>[[:$1]]</tt>'''
* Bar bolan faýlyň ady: '''<tt>[[:$2]]</tt>'''
Başga bir at saýlamagyňyzy haýyş edýäris.",
-'fileexists-thumb' => "<center>'''Bu faýl öňdenem bar'''</center>",
'fileexists-thumbnail-yes' => "Bu faýl kiçeldilen ölçegli bir surat ýaly-la ''(thumbnail)''.
[[$1|thumb]]
'''<tt>[[:$1]]</tt>''' faýlyny barlap görüň.
@@ -1326,6 +1409,7 @@ Faýlyňyzy şonda-da ýüklemek isleýän bolsaňyz, onda yza gaýdyp täze bir
'file-deleted-duplicate' => 'Şu faýl bilen birmeňzeş bir faýl ([[$1]]) ozal öçürilipdir. Bu faýly gaýtadan ýüklemänkäňiz şol faýlyň öçürme geçmişini barlaň.',
'successfulupload' => 'Şowly ýükleme',
'uploadwarning' => 'Ýükleme duýduryşy',
+'uploadwarning-text' => 'Aşakdaky faýl düşündirişini üýtgediň we gaýtadan synanyşyň.',
'savefile' => 'Faýly ýazdyr',
'uploadedimage' => 'Ýüklenen: "[[$1]]"',
'overwroteimage' => '"[[$1]]" faýlynyň täze wersiýasy ýüklendi',
@@ -1333,11 +1417,14 @@ Faýlyňyzy şonda-da ýüklemek isleýän bolsaňyz, onda yza gaýdyp täze bir
'uploaddisabledtext' => 'Faýl ýüklemeklik ýapyk.',
'php-uploaddisabledtext' => 'PHP-de faýl ýüklemek ýapyk dur. file_uploads sazlamasyny barlap görüň.',
'uploadscripted' => 'Bu faýlda web brauzeri tarapyndan ýalňyş teswirlenmegi mümkin bolan bir HTML ýa-da skript kody bar.',
-'uploadcorrupt' => 'Bu faýla ýa zeper ýetipdir ýa-da onuň giňeltmesi ýalňyş. Faýly barlap, gaýtadan ýüklemegiňizi haýyş edýäris.',
'uploadvirus' => 'Faýlda wirus bar! Jikme-jiklik: $1',
+'upload-source' => 'Çeşme faýl',
'sourcefilename' => 'Çeşme faýlyň ady:',
+'sourceurl' => 'Çeşme URL:',
'destfilename' => 'Niýetlenilýän faýlyň ady:',
'upload-maxfilesize' => 'Maksimum faýl ölçegi: $1',
+'upload-description' => 'Faýl düşündirişi',
+'upload-options' => 'Ýükleme opsiýalary',
'watchthisupload' => 'Bu faýla gözegçilik et',
'filewasdeleted' => 'Şeýle atly faýl ozal ýüklenipdir we soňra öçürilipdir. Faýly ýüklemänkäňiz, $1 sahypasyna bir göz aýlaň.',
'upload-wasdeleted' => "'''Duýduryş: Ozal öçürilen bir faýly ýükleýärsiňiz.'''
@@ -1347,15 +1434,46 @@ Bu faýlyň öçürme gündeligi aşakda berilýär:",
'filename-bad-prefix' => "Ýükleýän faýlyňyzyň ady umuman sanly kameralar tarapyndan awtomatik usulda goşulýan düşnüksiz '''\"\$1\"''' bilen başlanýar.
Faýlyňyz üçin has düşnükli bir at saýlamagyňyzy haýyş edýäris.",
-'upload-proto-error' => 'Nädogry protokol',
-'upload-proto-error-text' => 'Uzakdan ýükleme, <code>http://</code> ýa-da <code>ftp://</code> bilen başlaýan URL talap edýär.',
-'upload-file-error' => 'Içerki säwlik',
-'upload-file-error-text' => 'Serwerde wagtlaýyn faýl döretmäge synanyşylýarka bir içerki säwlik ýüze çykdy.
+'upload-proto-error' => 'Nädogry protokol',
+'upload-proto-error-text' => 'Uzakdan ýükleme, <code>http://</code> ýa-da <code>ftp://</code> bilen başlaýan URL talap edýär.',
+'upload-file-error' => 'Içerki säwlik',
+'upload-file-error-text' => 'Serwerde wagtlaýyn faýl döretmäge synanyşylýarka bir içerki säwlik ýüze çykdy.
Bir [[Special:ListUsers/sysop|administrator]] bilen habarlaşmagyňyzy haýyş edýäris.',
-'upload-misc-error' => 'Näbelli ýükleme säwligi',
-'upload-misc-error-text' => 'Ýükleme wagtynda näbelli bir säwlik ýüze çykdy.
+'upload-misc-error' => 'Näbelli ýükleme säwligi',
+'upload-misc-error-text' => 'Ýükleme wagtynda näbelli bir säwlik ýüze çykdy.
URL-niň dogrudygyny hem-de baryp bolýandygyny barlaň we gaýtadan synanyşyň.
Eger-de problema gaýtalansa, onda bir [[Special:ListUsers/sysop|administrator]] bilen habarlaşyň.',
+'upload-too-many-redirects' => 'URL aşa köp gönükdirmani özünde jemleýär',
+'upload-unknown-size' => 'Näbelli ölçeg',
+'upload-http-error' => 'HTTP säwligi ýüze çykdy: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Barmak gadagan',
+'img-auth-nopathinfo' => 'PATH_INFO ýok.
+Serweriňiz bu maglumaty geçirmeklik üçin sazlanmandyr.
+CGI esaslanýan hem-de img_auth-y goldamaýan bolmagy mümkin.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization sahypasyna serediň.',
+'img-auth-notindir' => 'Talap edlýän ýol sazlanan ýükleme direktoriýasynda däl.',
+'img-auth-badtitle' => '"$1" bilen dogry bir at gurup bolanok.',
+'img-auth-nologinnWL' => 'Sessiýa açmansyňyz, "$1" bolsa ak sanawda däl.',
+'img-auth-nofile' => '"$1" faýly ýok.',
+'img-auth-isdir' => '"$1" katalogyna barmaga synanyşýarsyňyz.
+Diňe faýla barmaklyga rugsat berilýär.',
+'img-auth-streaming' => '"$1" akymlaýyn görkezilýär.',
+'img-auth-public' => 'img_auth.php-niň funksiýasy hususy bir wikiden faýllary çykarmaklykdyr.
+Bu wiki umumy wiki hökmünde sazlangydyr.
+Howpsuzlygyň optimizasiýasy üçin, img_auth.php ýapylyp goýuldy.',
+'img-auth-noread' => 'Ulanyjy "$1" faýlyny okamak üçin baryp bilmeýär.',
+
+# HTTP errors
+'http-invalid-url' => 'Nädogry URL: $1',
+'http-invalid-scheme' => '"$1" shemaly URL-ler goldanylmaýar.',
+'http-request-error' => 'HTTP talaby näbelli säwlik zerarly şowsuz boldy.',
+'http-read-error' => 'HTTP okamak säwligi.',
+'http-timed-out' => 'HTTP talabynyň wagty geçdi.',
+'http-curl-error' => 'URL äkelmek säwligi: $1',
+'http-host-unreachable' => 'URL-ä baryp bolmaýar',
+'http-bad-status' => 'HTTP talaby wagtynda problema döredi: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL-ä baryp bolmaýar',
@@ -1367,6 +1485,7 @@ Saýtyň ýerbe-ýerdigini anyklaň, biraz salym garaşyň we gaýtadan synanyş
Saýtyň has az meşgul wagty synanyşsaňyz hem bolar.',
'license' => 'Lisenzirleme:',
+'license-header' => 'Lisenzirleme',
'nolicense' => 'Hiçbirini saýlama',
'license-nopreview' => '(Deslapky syn elýeterli däl)',
'upload_source_url' => ' (dogry, köpçülige açyk bir URL)',
@@ -1387,6 +1506,7 @@ Bir sütüniň adyna tyklap sortirowkanyň tertibini üýtgedip bilersiňiz.',
'listfiles_count' => 'Wersiýalar',
# File description page
+'file-anchor-link' => 'Faýl',
'filehist' => 'Faýlyň geçmişi',
'filehist-help' => 'Faýlyň geçmişini görmek üçin Sene/Wagt bölümündäki senelere tyklaň.',
'filehist-deleteall' => 'ählisini öçür',
@@ -1401,6 +1521,7 @@ Bir sütüniň adyna tyklap sortirowkanyň tertibini üýtgedip bilersiňiz.',
'filehist-dimensions' => 'Ölçegler',
'filehist-filesize' => 'Faýl ölçegi',
'filehist-comment' => 'Teswirleme',
+'filehist-missing' => 'Faýl ýok',
'imagelinks' => 'Faýlyň çykgytlary',
'linkstoimage' => 'Bu faýla çykgydy bar bolan {{PLURAL:$1|sahypa|$1 sahypa}}:',
'linkstoimage-more' => '$1 gowrak {{PLURAL:$1|sahypa|sahypa}} bu faýla çykgyt berýär.
@@ -1410,15 +1531,16 @@ Aşakdaky sanaw diňe şu faýla çykgyt berýän {{PLURAL:$1|ilkinji faýly |il
'morelinkstoimage' => 'Bu faýla [[Special:WhatLinksHere/$1|has köp çykgyt]] görkez.',
'redirectstofile' => 'Aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu faýla gönükdirýar:',
'duplicatesoffile' => 'Aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu faýlyň dublikatydyr ([[Special:FileDuplicateSearch/$2|jikme-jik maglumat]]):',
-'sharedupload' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Has köp maglumat üçin $1 sahypasyna serediň.',
-'shareduploadwiki-desc' => '$1ndaky düşündirişi aşakda görkezilýär.',
-'shareduploadwiki-linktext' => 'faýlyň düşündiriş sahypasy',
-'noimage' => 'Şeýle atly faýl ýok. Siz $1.',
-'noimage-linktext' => 'ýükläň',
+'sharedupload' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.',
+'sharedupload-desc-there' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.
+Goşmaça maglumat üçin [$2 faýl düşündiriş sahypasyna] serediň.',
+'sharedupload-desc-here' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.
+[$2 Onuň faýl düşündiriş sahypasyndaky] düşündirişi aşakda görkezilýär.',
+'filepage-nofile' => 'Şeýle atly faýl ýok.',
+'filepage-nofile-link' => 'Şeýle atly faýl ýok, ama siz [$1 ony ýükläp bilersiňiz].',
'uploadnewversion-linktext' => 'Bu faýlyň täze wersiýasyny ýükläň',
-'shared-repo-from' => '$1 ammaryndan', # $1 is the repository name
-'shared-repo' => 'umumy ammar', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1 ammaryndan',
+'shared-repo' => 'umumy ammar',
# File reversion
'filerevert' => '$1 wersiýasyny yzyna getir',
@@ -1447,6 +1569,7 @@ Aşakdaky sanaw diňe şu faýla çykgyt berýän {{PLURAL:$1|ilkinji faýly |il
** Awtorlyk hukugynyň bozulmagy
** Dublikat faýl',
'filedelete-edit-reasonlist' => 'Öçürme sebäplerini redaktirle',
+'filedelete-maintenance' => 'Tehniki işler döwründe sahypalaryň öçürilmegi hem-de dikeldilmegi wagtlaýynça ýapylyp goýuldy.',
# MIME search
'mimesearch' => 'MIME gözlegi',
@@ -1468,7 +1591,7 @@ Giriş formaty: mazmuntip/kiçitip, meselem <tt>surat/jpeg</tt>.',
# Random page
'randompage' => 'Mesaýy makala',
-'randompage-nopages' => '"$1" at giňişliginde hiçhili sahypa ýok.',
+'randompage-nopages' => 'Aşakdaky {{PLURAL:$2|at giňişliginde|at giňişliklerinde}} hiç hili sahypa ýok: $1.',
# Random redirect
'randomredirect' => 'Mesaýy gönükdirme',
@@ -1480,6 +1603,7 @@ Giriş formaty: mazmuntip/kiçitip, meselem <tt>surat/jpeg</tt>.',
'statistics-header-edits' => 'Özgerdiş statistikalary',
'statistics-header-views' => 'Synlama statistikalary',
'statistics-header-users' => 'Ulanyjy statistikalary',
+'statistics-header-hooks' => 'Başga statistikalar',
'statistics-articles' => 'Makalalar',
'statistics-pages' => 'Sahypalar',
'statistics-pages-desc' => 'Wikidäki ähli sahypalar, şol sanda çekişme sahypalary, gönükdirmeler we ş.m.',
@@ -1510,8 +1634,8 @@ Ol indi [[$2]] sahypasyna gönükdirýär.',
'brokenredirects' => 'Üzlem-saplam gönükdirmeler',
'brokenredirectstext' => 'Aşakdaky gönükdirmeler ýok sahypalara çykgyt berýär:',
-'brokenredirects-edit' => '(redaktirle)',
-'brokenredirects-delete' => '(öçür)',
+'brokenredirects-edit' => 'redaktirle',
+'brokenredirects-delete' => 'öçür',
'withoutinterwiki' => 'Başga dillere çykgydy ýok sahypalar',
'withoutinterwiki-summary' => 'Aşakdaky sahypalaryň başga dillerdäki wersiýalaryna çykgydy ýok.',
@@ -1618,16 +1742,17 @@ Gündeligiň görnüşini, ulanyjy adyny (baş-setir harpa duýgur), ýa-da täs
# Special:Categories
'categories' => 'Kategoriýalar',
-'categoriespagetext' => 'Aşakdaky kategoriýalarda sahypa ýa-da media faýllary bardyr.
+'categoriespagetext' => 'Aşakdaky {{PLURAL:$1|kategoriýada|kategoriýalarda}} sahypa ýa-da media faýllary bardyr.
[[Special:UnusedCategories|Ulanylmaýan kategoriýalar]] şu ýerde görkezilmeýär.
-Şeýle-de [[Special:WantedCategories|talap edilýän kategoriýalara]] serediň.',
+Şeýle-de [[Special:WantedCategories|Talap edilýän kategoriýalara]] serediň.',
'categoriesfrom' => 'Şunuň bilen başlaýan kategoriýalary görkez:',
'special-categories-sort-count' => 'mukdar boýunça tertiple',
'special-categories-sort-abc' => 'elipbiý boýunça tertiple',
# Special:DeletedContributions
-'deletedcontributions' => 'Öçürilen ulanyjy goşantlary',
-'deletedcontributions-title' => 'Öçürilen ulanyjy goşantlary',
+'deletedcontributions' => 'Öçürilen ulanyjy goşantlary',
+'deletedcontributions-title' => 'Öçürilen ulanyjy goşantlary',
+'sp-deletedcontributions-contribs' => 'goşantlar',
# Special:LinkSearch
'linksearch' => 'Daşarky çykgytlar',
@@ -1643,6 +1768,16 @@ Goldanylýan protokollar: <tt>$1</tt>',
'listusersfrom' => 'Şunuň bilen başlaýan ulanyjylary görkez:',
'listusers-submit' => 'Görkez',
'listusers-noresult' => 'Ulanyjy tapylmady.',
+'listusers-blocked' => '(blokirlenen)',
+
+# Special:ActiveUsers
+'activeusers' => 'Işjeň ulanyjylaryň sanawy',
+'activeusers-intro' => 'Bu sanawda soňky $1 {{PLURAL:$1|günüň|günüň}} dowamynda nähilidir bir iş geçiren ulanyjylar görkezilýär.',
+'activeusers-count' => 'Soňky {{PLURAL:$3|günde|$3 günde}} $1 sany {{PLURAL:$1|özgerdiş|özgerdiş}}',
+'activeusers-from' => 'Şunuň bilen başlaýan ulanyjylary görkez:',
+'activeusers-hidebots' => 'Botlary gizle',
+'activeusers-hidesysops' => 'Administratorlary gizle',
+'activeusers-noresult' => 'Ulanyjy tapylmady.',
# Special:Log/newusers
'newuserlogpage' => 'Täze ulanyjy gündeligi',
@@ -1653,17 +1788,23 @@ Goldanylýan protokollar: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Hasap awtomatik döredildi',
# Special:ListGroupRights
-'listgrouprights' => 'Ulanyjy topary hukuklary',
-'listgrouprights-summary' => 'Aşakda şu wikide kesgitlenen ulanyjy toparlarynyň hem-de olaryň degişli ulanmak hukuklarynyň sanawy berilýär.
+'listgrouprights' => 'Ulanyjy topary hukuklary',
+'listgrouprights-summary' => 'Aşakda şu wikide kesgitlenen ulanyjy toparlarynyň hem-de olaryň degişli ulanmak hukuklarynyň sanawy berilýär.
Şahsy hukuklar barada [[{{MediaWiki:Listgrouprights-helppage}}|goşmaça maglumat]] bar bolup biler.',
-'listgrouprights-group' => 'Topar',
-'listgrouprights-rights' => 'Hukuklar',
-'listgrouprights-helppage' => 'Help:Topar hukuklary',
-'listgrouprights-members' => '(agzalaryň sanawy)',
-'listgrouprights-addgroup' => 'Şu {{PLURAL:$2|topary|toparlary}} goş: $1',
-'listgrouprights-removegroup' => 'Şu {{PLURAL:$2|topary|toparlary}} aýyr: $1',
-'listgrouprights-addgroup-all' => 'Ähli toparlary goş',
-'listgrouprights-removegroup-all' => 'Ähli toparlary aýyr',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Berlen hukuk</span>
+* <span class="listgrouprights-revoked">Yzyna alnan hukuk</span>',
+'listgrouprights-group' => 'Topar',
+'listgrouprights-rights' => 'Hukuklar',
+'listgrouprights-helppage' => 'Help:Topar hukuklary',
+'listgrouprights-members' => '(agzalaryň sanawy)',
+'listgrouprights-addgroup' => 'Şu {{PLURAL:$2|topary|toparlary}} goş: $1',
+'listgrouprights-removegroup' => 'Şu {{PLURAL:$2|topary|toparlary}} aýyr: $1',
+'listgrouprights-addgroup-all' => 'Ähli toparlary goş',
+'listgrouprights-removegroup-all' => 'Ähli toparlary aýyr',
+'listgrouprights-addgroup-self' => 'Şu {{PLURAL:$2|topary|toparlary}} öz hasabyňa goş: $1',
+'listgrouprights-removegroup-self' => 'Şu {{PLURAL:$2|topary|toparlary}} öz hasabyňdan aýyr: $1',
+'listgrouprights-addgroup-self-all' => 'Ähli toparlary öz hasabyňa goş',
+'listgrouprights-removegroup-self-all' => 'Ähli toparlary öz hasabyňdan aýyr',
# E-mail user
'mailnologin' => 'Iberer ýaly adres ýok',
@@ -1740,17 +1881,17 @@ Aňsatlyk bilen saýlap almak üçin bolsa, [[Special:RecentChanges|soňky üýt
'enotif_anon_editor' => 'anonim ulanyjy $1',
'enotif_body' => 'Hormatly $WATCHINGUSERNAME,
-{{SITENAME}} saýtyndaky $PAGETITLE atly sahypa $PAGEEDITDATE senesinde $PAGEEDITOR tarapyndan $CHANGEDORCREATED. Sahypanyň häzirki wersiýasyny $PAGETITLE_URL adresinden görüp bilersiňiz.
+{{SITENAME}} saýtyndaky $PAGETITLE sahypasy $PAGEEDITDATE senesinde $PAGEEDITOR tarapyndan $CHANGEDORCREATED. Sahypanyň häzirki wersiýasyny $PAGETITLE_URL adresinden görüp bilersiňiz.
$NEWPAGE
-Redaktirlän ulanyjynyň düşündirişi: $PAGESUMMARY $PAGEMINOREDIT
+Redaktoryň düşündirişi: $PAGESUMMARY $PAGEMINOREDIT
-Onuň bilen habarlaşmak üçin:
+Redaktor bilen habarlaşmak üçin:
e-poçta: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Bu sahypany baryp görýänçäňiz onuň bilen baglanyşykly üýtgeşmeler bardaky habary size iberiljek däldir.
+Bu sahypany baryp görýänçäňiz onuň bilen baglanyşykly üýtgeşmeler size habar ediljek däldir.
Şeýle hem gözegçilik sanawyňyzdaky ähli sahypalaryň habar beriş belliklerini aýyryp bilersiňiz.
{{SITENAME}} saýtynyň habar beriş ulgamy.
@@ -1759,7 +1900,10 @@ Bu sahypany baryp görýänçäňiz onuň bilen baglanyşykly üýtgeşmeler bar
Gözegçilik sanawy sazlamalaryňyzy üýtgetmek üçin:
{{fullurl:Special:Watchlist/edit}}
-Habarlaşmak we kömek soramak üçin:
+Sahypany gözegçilik sanawyňyzdan öçürmek üçin:
+$UNWATCHURL
+
+Seslenme we goşmaça kömek:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1771,10 +1915,11 @@ Habarlaşmak we kömek soramak üçin:
'exblank' => 'sahypa boşdy',
'delete-confirm' => '"$1" sahypasyny öçür',
'delete-legend' => 'Öçür',
-'historywarning' => "'''Duýduryş''': Öçürjek bolup duran sahypaňyzyň geçmişi bar:",
+'historywarning' => "'''Duýduryş:''' Öçürjek bolup duran sahypaňyzyň takmynan $1 {{PLURAL:$1| wersiýaly|wersiýaly}} geçmişi bar:",
'confirmdeletetext' => 'Sahypany ýa-da faýly tutuş geçmişi bilen bilelikde öçürjek bolup dursuňyz.
Bu amalyň getirip biljek netijelerine gözüňiz ýetýän bolsa we amalyň [[{{MediaWiki:Policy-url}}|Öçürme kadalaryna]] laýyklykdadygyny bilýän bolsaňyz, amaly tassyklaň.',
'actioncomplete' => 'Iş ýerine ýetirildi',
+'actionfailed' => 'Iş başa barmady',
'deletedtext' => '"<nowiki>$1</nowiki>" öçürildi.
Ýaňy-ýakynda öçürilenleri görmek üçin: $2.',
'deletedarticle' => 'öçürdi: "[[$1]]"',
@@ -1798,21 +1943,22 @@ Muny öçürmek {{SITENAME}} maglumat bazasynyň amallaryna päsgel berip biler;
seresaplyk bilen hereket ediň.',
# Rollback
-'rollback' => 'Özgerdişleri öňki katdyna getir',
-'rollback_short' => 'Öňki katdyna getir',
-'rollbacklink' => 'öňki katdyna getir',
-'rollbackfailed' => 'Öňki katdyna getirmeklik şowsuz',
-'cantrollback' => 'Özgerdişi yzyna getirip bolmaýar;
+'rollback' => 'Özgerdişleri öňki katdyna getir',
+'rollback_short' => 'Öňki katdyna getir',
+'rollbacklink' => 'öňki katdyna getir',
+'rollbackfailed' => 'Öňki katdyna getirmeklik şowsuz',
+'cantrollback' => 'Özgerdişi yzyna getirip bolmaýar;
iň soňky goşant goşan ulanyjy bu sahypanyň ýeke-täk awtory bolup durýar.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Çekişme]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tarapyndan [[:$1]] sahypasynda edilen iň soňky özgerdişi öňki katdyna getirip bolmaýar;
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Çekişme]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tarapyndan [[:$1]] sahypasynda edilen iň soňky özgerdişi öňki katdyna getirip bolmaýar;
kimdir biri ony redaktirläpdir ýa-da eýýäm öňki katdyna getiripdir.
Iň soňky özgerdiş eden: [[User:$3|$3]] ([[User talk:$3|Çekişme]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Özgerdişiň teswiri şeýledi: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Çekişme]]) tarapyndan edilen özgerdişler [[User:$1|$1]] tarapyndan redaktirlenen soňky wersiýasyna yzyna getirildi.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 tarapyndan edilen özgerdişler yzyna getirildi;
+'editcomment' => "Özgerdişiň teswiri şeýledi: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Çekişme]]) tarapyndan edilen özgerdişler [[User:$1|$1]] tarapyndan redaktirlenen soňky wersiýasyna yzyna getirildi.',
+'revertpage-nouser' => '(ulanyjy ady aýyrylan) tarapyndan edilen özgerdişler [[User:$1|$1]] tarapyndan redaktirlenen soňky wersiýasyna yzyna getirildi.',
+'rollback-success' => '$1 tarapyndan edilen özgerdişler yzyna getirildi;
$2 tarapyndan edilen soňky wersiýa gaýdyp gelindi.',
-'sessionfailure' => 'Giriş sessiýaňyz bilen baglanyşykly bir probleme bar ýaly;
+'sessionfailure' => 'Giriş sessiýaňyz bilen baglanyşykly bir probleme bar ýaly;
sessiýaňyzyň birugsat ele geçirilmezligi üçin bu iş goýbolsun edildi.
"Yza" düwmwsine basyň we gelen sahypaňyzy gaýtadan ýükläň, soňra ýaňadan synynyşyp görüň.',
@@ -1831,7 +1977,7 @@ Häzirki wagtda gorag astynda duran sahypalaryň sanawy üçin [[Special:Protect
'protectexpiry' => 'Gutaryş senesi:',
'protect_expiry_invalid' => 'Gutaryş möhleti nädogry.',
'protect_expiry_old' => 'Geçmişdäki gutaryş möhleti.',
-'protect-unchain' => 'Göçürmegiň gulpuny aç',
+'protect-unchain-permissions' => 'Goşmaça gorag opsiýalarynyň gulpuny aç',
'protect-text' => "'''<nowiki>$1</nowiki>''' sahypasynyň gorag derejesini şu ýerden görüp hem-de üýtgedip bilersiňiz.",
'protect-locked-blocked' => "Blokirlengikä gorag derejelerini üýtgedip bolmaýar.
'''$1''' sahypasy üçin häzirki sazlamalar:",
@@ -1861,7 +2007,7 @@ Bu sahypanyň gorag derejesini üýtgedip bilersiňiz, ýöne ol kaskadly goraga
** Netijesiz özgerdişler urşy
** Ýörgünli ulanylýan sahypa',
'protect-edit-reasonlist' => 'Gorag sebäplerini redaktirle',
-'protect-expiry-options' => '1 sagat:1 hour,1 gün:1 day,1 hepde:1 week,2 hepde:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 ýyl:1 year,möhletsiz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 sagat:1 hour,1 gün:1 day,1 hepde:1 week,2 hepde:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 ýyl:1 year,möhletsiz:infinite',
'restriction-type' => 'Rugsat:',
'restriction-level' => 'Çäklendiriş derejesi:',
'minimum-size' => 'Minimum ölçeg',
@@ -1904,6 +2050,7 @@ Ulanan çykgydyňyz nädogry bolmagy ýa-da onuň arhiwden dikeldilen ýa-da aý
'undelete-nodiff' => 'Hiç hili öňki wersiýa tapylmady.',
'undeletebtn' => 'Dikelt',
'undeletelink' => 'görkez/dikelt',
+'undeleteviewlink' => 'görkez',
'undeletereset' => 'Başky ýagdaýa getir',
'undeleteinvert' => 'Saýlanmadyklar',
'undeletecomment' => 'Teswir:',
@@ -1943,19 +2090,24 @@ $1',
'contributions-title' => '$1 üçin ulanyjy goşantlary',
'mycontris' => 'Goşantlarym',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Bu kriteriýlere gabat gelýän üýtgeşme ýok.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Bu kriteriýlere gabat gelýän üýtgeşme ýok.',
'uctop' => '(iň soňky)',
'month' => 'Aý:',
'year' => 'Ýyl:',
-'sp-contributions-newbies' => 'Diňe täze hasap açan ulanyjylaryň goşantlaryny görkez',
-'sp-contributions-newbies-sub' => 'Täze hasaplar üçin',
-'sp-contributions-newbies-title' => 'Täze hasaplar üçin ulanyjy goşantlary',
-'sp-contributions-blocklog' => 'Blokirleme gündeligi',
-'sp-contributions-logs' => 'gündelikler',
-'sp-contributions-search' => 'Goşantlary gözle',
-'sp-contributions-username' => 'IP adresi ýa-da ulanyjy ady:',
-'sp-contributions-submit' => 'Gözle',
+'sp-contributions-newbies' => 'Diňe täze hasap açan ulanyjylaryň goşantlaryny görkez',
+'sp-contributions-newbies-sub' => 'Täze hasaplar üçin',
+'sp-contributions-newbies-title' => 'Täze hasaplar üçin ulanyjy goşantlary',
+'sp-contributions-blocklog' => 'Blokirleme gündeligi',
+'sp-contributions-deleted' => 'öçürilen ulanyjy goşantlary',
+'sp-contributions-logs' => 'gündelikler',
+'sp-contributions-talk' => 'çekişme',
+'sp-contributions-userrights' => 'ulanyjy hukuklary dolandyryşy',
+'sp-contributions-blocked-notice' => 'Bu ulanyjy şu wagt blokirlengi.
+Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:',
+'sp-contributions-search' => 'Goşantlary gözle',
+'sp-contributions-username' => 'IP adresi ýa-da ulanyjy ady:',
+'sp-contributions-submit' => 'Gözle',
# What links here
'whatlinkshere' => 'Bu sahypa çykgytlar',
@@ -1978,6 +2130,7 @@ $1',
# Block/unblock
'blockip' => 'Ulanyjyny blokirle',
+'blockip-title' => 'Ulanyjyny blokirle',
'blockip-legend' => 'Ulanyjyny blokirle',
'blockiptext' => 'Aşakdaky formdan peýdalanyp, belli bir IP-niň ýa-da ulanyjy adynyň ýazmak hukugyny blokirläp bilersiňiz.
Bu diňe wandalizmiň öňüni almak üçin hem-de [[{{MediaWiki:Policy-url}}|kadalara]] laýyklykda edilmelidir.
@@ -2001,7 +2154,7 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
'ipbenableautoblock' => 'Bu ulanyjy tarapyndan peýdalanylan iň soňky IP adresini we şondan soňky redaktirlemäge synanyşan IP adreslerini awtomatik usulda blokirle',
'ipbsubmit' => 'Bu ulanyjyny blokirle',
'ipbother' => 'Başga wagt:',
-'ipboptions' => '2 sagat:2 hours,1 gün:1 day,3 gün:3 days,1 hepde:1 week,2 hepde:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 ýyl:1 year,möhletsiz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 sagat:2 hours,1 gün:1 day,3 gün:3 days,1 hepde:1 week,2 hepde:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 ýyl:1 year,möhletsiz:infinite',
'ipbotheroption' => 'başga',
'ipbotherreason' => 'Başga/goşmaça sebäp:',
'ipbhidename' => 'Ulanyjynyň adyny özgerdişlerde we sanawlarda gizle',
@@ -2030,9 +2183,11 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
'ipblocklist-sh-tempblocks' => 'wagtlaýyn blokirlemeleri $1',
'ipblocklist-sh-addressblocks' => 'ýeke IP blokirlemelerini $1',
'ipblocklist-submit' => 'Gözle',
+'ipblocklist-localblock' => 'Lokal blokirleme',
+'ipblocklist-otherblocks' => 'Başga {{PLURAL:$1|blokirleme|blokirlemeler}}',
'blocklistline' => '$1, $2 blokirledi: $3 ($4)',
'infiniteblock' => 'möhletsiz',
-'expiringblock' => 'gutarýan senesi: $1',
+'expiringblock' => '$2, $1 senesinde gutarýar',
'anononlyblock' => 'diňe anonimler',
'noautoblockblock' => 'awtoblokirleme ýapyk',
'createaccountblock' => 'hasap açmaklyk blokirlendi',
@@ -2046,7 +2201,10 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
'contribslink' => 'goşantlar',
'autoblocker' => 'Awtomatik usulda blokirlendiňiz, çünki ýaňy-ýakynda IP adresiňiz "[[User:$1|$1]]" ulanyjysy tarapyndan ulanyldy. $1 atly ulanyjynyň blokirlenmegi üçin görkezilen sebäp: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Blokirleme gündeligi',
-'blocklog-fulllog' => 'Tutuş blokirleme gündeligi',
+'blocklog-showlog' => 'Bu ulanyjy ozal hem blokirlenipdir.
+Salgylanmak üçin blokirleme gündeligi aşakda berilýär:',
+'blocklog-showsuppresslog' => 'Bu ulanyjy ozaldan blokirlenipdir hem-de gizlenilipdir.
+Bökdeme gündeligi salgylanmak üçin aşakda berilýär:',
'blocklogentry' => 'blokirledi: [[$1]], blokirleme möhleti: $2 $3',
'reblock-logentry' => '[[$1]] üçin gutaryş wagtyny $2 edip, blokirleme sazlamalaryny üýtgetdi $3',
'blocklogtext' => 'Ulanyjy blokirleme we blokirlemeni aýyrma gündeligi.
@@ -2067,11 +2225,13 @@ Häzirki wagtda blokirlengi duran ulanyjylary [[Special:IPBlockList|IP blokirlem
'ipb_already_blocked' => '"$1" eýýäm blokirlenipdir.',
'ipb-needreblock' => '== Eýýäm blokirlenipdir ==
$1 eýýäm blokirlenipdir. Sazlamalary üýtgetmek isleýärsiňizmi?',
+'ipb-otherblocks-header' => 'Başga {{PLURAL:$1|blokirleme|blokirlemeler}}',
'ipb_cant_unblock' => 'Säwlik: $1 ID blokirlemesi tapylmady.
Blokirlemesi eýýäm aýyrylan bolmagy mümkin.',
'ipb_blocked_as_range' => 'Säwlik: $1 IP adresi gönüden-göni blokirlenipdir we blokirlemäni aýryp bolmaýar.
Emma, bu adres $2 diapazonynyň bir bölegi hökmünde blokirlenipdir, diapazon blokirlemesini aýryp bilersiňiz.',
'ip_range_invalid' => 'Nädogry IP diapazony.',
+'ip_range_toolarge' => '/$1 blokdan uly aralyk blokirlemelere rugsat berilmeýär',
'blockme' => 'Meni blokirle',
'proxyblocker' => 'Proksi blokirleýji',
'proxyblocker-disabled' => 'Bu funksiýa ýapyk.',
@@ -2082,6 +2242,7 @@ Internet üpjün edijiňiz ýa-da goldaw gullugy bilen habarlaşyp, olary bu çy
'sorbs_create_account_reason' => 'IP adresiňiz {{SITENAME}} tarapyndan ulanylýan DNSBL-de açyk proksi hökmünde sanawa goşulypdyr.
Hasap açyp bilmeýärsiňiz.',
'cant-block-while-blocked' => 'Özüňiz blokirlengikäňiz başga ulanyjylary blokirläp bilmeýärsiňiz.',
+'cant-see-hidden-user' => 'Blokirlejek bolýan ulanyjyňyz eýýäm blokirlenipdir hem-de gizlenilipdir. Ulanyjy gizlemek hukugyňyz ýokdugy sebäpli, ulanyjynyň blokirlemesini görüp ýa-da redaktirläp bilmeýärsiňiz.',
# Developer tools
'lockdb' => 'Maglumat bazasy gulply',
@@ -2131,7 +2292,7 @@ Bu üýtgeşiklik giňden tanalýan bir sahypa üçin garaşylmaýan netijelere
'move-watch' => 'Bu sahypany gözegçilikde sakla',
'movepagebtn' => 'Adyny üýtget',
'pagemovedsub' => 'At üýtgedildi',
-'movepage-moved' => '\'\'\'"$1" sahypasy "$2" sahypasyna geçirildi\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" sahypasy "$2" sahypasyna geçirildi\'\'\'',
'movepage-moved-redirect' => 'Gönükdirme döredildi.',
'movepage-moved-noredirect' => 'Gönükdirme döretmeklik bökdeldi.',
'articleexists' => 'Şu atda eýýämden bir sahypa bar ýa-da saýlap alan adyňyz nädogry.
@@ -2174,6 +2335,14 @@ Ady üýgetmek üçin ony öçürmek isleýärsiňizmi?',
'imageinvalidfilename' => 'Maksat edinilýän faýlyň ady nädogry',
'fix-double-redirects' => 'Başdaky ady görkezýän gönükdirmeleri täzele',
'move-leave-redirect' => 'Gönükdirme goýup git',
+'protectedpagemovewarning' => "'''Duýduryş:''' Bu sahypa gulplanypdyr, onuň adyny diňe administratorlyk hukuklaryna eýe bolan ulanyjylar üýtgedip bilýär.
+Gündeligiň iň soňky ýazgysy salgylanmak üçin aşakda berilýär:",
+'semiprotectedpagemovewarning' => "'''Bellik:''' Bu sahypa gulplanypdyr, onuň adyny diňe hasaba alnan ulanyjylar üýtgedip bilýär.
+Gündeligiň iň soňky ýazgysy salgylanmak üçin aşakda berilýär:",
+'move-over-sharedrepo' => '== Faýl bar ==
+[[:$1]] faýly umumy ammarda bar. Şu ada faýl goýmaklyk bar bolan öňki faýly aradan aýyrjakdyr.',
+'file-exists-sharedrepo' => 'Saýlanylyp alnan faýl ady umumy ammarda ulanylýar.
+Başga bir at saýlaň.',
# Export
'export' => 'Sahypa eksportirle',
@@ -2195,15 +2364,21 @@ Ikinji ýagdaýy saýlap alan halatyňyzda, ýörite bir çykgyt hem ulanyp bile
'export-pagelinks' => 'Baglanyşykly sahypalary şu çuňluga giriz:',
# Namespace 8 related
-'allmessages' => 'Ulgam habarlaşyklary',
-'allmessagesname' => 'At',
-'allmessagesdefault' => 'Gaýybana habarlaşyk teksti',
-'allmessagescurrent' => 'Häzirki habarlaşyk teksti',
-'allmessagestext' => 'Bu sanaw MediaWiki at giňişliginde bar bolan ulgam habarlaşyklarynyň sanawydyr.
+'allmessages' => 'Ulgam habarlaşyklary',
+'allmessagesname' => 'At',
+'allmessagesdefault' => 'Gaýybana habarlaşyk teksti',
+'allmessagescurrent' => 'Häzirki habarlaşyk teksti',
+'allmessagestext' => 'Bu sanaw MediaWiki at giňişliginde bar bolan ulgam habarlaşyklarynyň sanawydyr.
Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizasiýasy] we [http://translatewiki.net translatewiki.net] sahypalaryna baryp görmegiňizi haýyş edýäris.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ýapykdygy zerarly bu sahypany ulanyp bolmaýar.",
-'allmessagesfilter' => 'Habarlaşyk ady filtri:',
-'allmessagesmodified' => 'Diňe üýtgedilenleri görkez',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ýapykdygy zerarly bu sahypany ulanyp bolmaýar.",
+'allmessages-filter-legend' => 'Filtr',
+'allmessages-filter' => 'Üýtgediş statusy boýunça filtr:',
+'allmessages-filter-unmodified' => 'Üýtgedilmedik',
+'allmessages-filter-all' => 'Ählisi',
+'allmessages-filter-modified' => 'Üýtgedilen',
+'allmessages-prefix' => 'Pristawka boýunça filtr:',
+'allmessages-language' => 'Dil:',
+'allmessages-filter-submit' => 'Git',
# Thumbnails
'thumbnail-more' => 'Ulalt',
@@ -2213,6 +2388,9 @@ Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [http://ww
'djvu_no_xml' => 'DjVu faýly üçin XML alyp bolmaýar',
'thumbnail_invalid_params' => 'Nädogry miniatýura parametrleri',
'thumbnail_dest_directory' => 'Niýetlenilýän direktoriýany döredip bolmaýar',
+'thumbnail_image-type' => 'Suratyň görnüşi goldanylmaýar',
+'thumbnail_gd-library' => 'GD kitaphanasynyň doly däl konfigurasiýasy: ýok funksiýa $1',
+'thumbnail_image-missing' => 'Faýl ýok bolarly: $1',
# Special:Import
'import' => 'Sahypalary importirle',
@@ -2278,6 +2456,7 @@ Kompýuteriňize ýazdyryň we şu ýere ýükläň.',
Onuň çeşmesini görüp bilersiňiz',
'tooltip-ca-history' => 'Bu sahypanyň ozalky wersiýalary',
'tooltip-ca-protect' => 'Sahypany goraga al',
+'tooltip-ca-unprotect' => 'Sahypanyň goragyny aýyr',
'tooltip-ca-delete' => 'Sahypany öçür',
'tooltip-ca-undelete' => 'Bu sahypadaky özgerdişleri öçürilmänkäki ýagdaýyna yzyna dikelt',
'tooltip-ca-move' => 'Sahypanyň adyny üýtget',
@@ -2288,6 +2467,7 @@ Onuň çeşmesini görüp bilersiňiz',
'tooltip-search-fulltext' => 'Şu tekst bar bolan sahypalary gözle',
'tooltip-p-logo' => 'Baş sahypa baryp gör',
'tooltip-n-mainpage' => 'Baş sahypa baryp gör',
+'tooltip-n-mainpage-description' => 'Baş sahypa baryp gör',
'tooltip-n-portal' => 'Taslama hakynda, nämeler edip bolar, nämeler nirede',
'tooltip-n-currentevents' => 'Bolup geçýän wakalar barada iň täze maglumatlar',
'tooltip-n-recentchanges' => 'Wikidäki soňky üýtgeşmeleriň sanawy',
@@ -2333,10 +2513,12 @@ Mazmun üçin bir sebäp goşmaga rugsat berýär',
# Attribution
'anonymous' => '{{SITENAME}} anonim {{PLURAL:$1|ulanyjysy|ulanyjylary}}',
'siteuser' => '{{SITENAME}} ulanyjysy $1',
-'lastmodifiedatby' => 'Bu sahypa soňky gezek $3 tarapyndan $2, $1 senesinde üýtgedildi.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonim ulanyjysy $1',
+'lastmodifiedatby' => 'Bu sahypa soňky gezek $3 tarapyndan $2, $1 senesinde üýtgedildi.',
'othercontribs' => 'Döredilmegine gatnaşanlar: $1.',
'others' => 'beýlekiler',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|ulanyjysy|ulanyjylary}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|anonim ulanyjysy|anonim ulanyjylary}} $1',
'creditspage' => 'Minnetdarlyk bildirilýär',
'nocredits' => 'Bu sahypa üçin minnetdarlyk bildirilýän ýok.',
@@ -2364,11 +2546,24 @@ Mazmun üçin bir sebäp goşmaga rugsat berýär',
'mw_math_modern' => 'Häzirkizaman brauzerlere maslahat berilýär',
'mw_math_mathml' => 'Mümkin bolsa MathML (eksperimental)',
+# Math errors
+'math_failure' => 'Derňäp bolmady',
+'math_unknown_error' => 'näbelli säwlik',
+'math_unknown_function' => 'näbelli funksiýa',
+'math_lexing_error' => 'leksiki säwlik',
+'math_syntax_error' => 'sintaktik säwlik',
+'math_image_error' => 'PNG öwürmeklik şowsuz boldy;
+latex, dvips, gs we convert gurluşlarynyň dogrulygyny barlaň',
+'math_bad_tmpdir' => 'Matematikanyň wagtlaýyn katalogyny ýazyp ýa-da döredip bolanok',
+'math_bad_output' => 'Matematika çykyş katalogyny ýazyp ýa-da döredip bolanok',
+'math_notexvc' => 'texvc ýerine ýetirilýän faýl tapylmady;
+konfigurirlemek üçin math/README serediň.',
+
# Patrolling
'markaspatrolleddiff' => 'Patrullyk edilen diýip belle',
'markaspatrolledtext' => 'Bu sahypany patrullyk edilen diýip belle',
'markedaspatrolled' => 'Patrullyk edilen diýlip bellendi',
-'markedaspatrolledtext' => 'Bu saýlanan wersiýa patrullyk edilen diýlip bellendi.',
+'markedaspatrolledtext' => '[[:$1]] üçin saýlanylan wersiýa patrullandy diýlip bellendi.',
'rcpatroldisabled' => 'Soňky Üýtgeşmeler Patrullygy ýapyldy',
'rcpatroldisabledtext' => 'Soňky Üýtgeşmeler Patrullygy funksiýasy häzirki wagtda ýapyk dur.',
'markedaspatrollederror' => 'Patrullyk edilen diýip belläp bolmaýar',
@@ -2398,13 +2593,10 @@ $1',
'previousdiff' => '← Ozalky wersiýa bilen aratapawut',
'nextdiff' => 'Indiki wersiýa bilen aratapawut →',
-# Visual comparison
-'visual-comparison' => 'Görkezişli deňeşdirme',
-
# Media information
'mediawarning' => "'''Duýduryş''': Bu faýlda zyýanly kod bar bolmagy ahmal.
Ony işletseňiz iş ulgamyňyza howp astyna salmagyňyz mümkin.",
-'imagemaxsize' => 'Faýl düşündiriş sahypalaryndaky suratlary şuňa çenli çäklendiriň:',
+'imagemaxsize' => "Surat ölçeginiň çägi:<br />''(faýl düşündiriş sahypalary üçin)''",
'thumbsize' => 'Miniatýura ölçegi:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sahypa|sahypa}}',
'file-info' => '(faýl ölçegi: $1, MIME tipi: $2)',
@@ -2413,6 +2605,8 @@ Ony işletseňiz iş ulgamyňyza howp astyna salmagyňyz mümkin.",
'svg-long-desc' => '(SVG faýly, nominal $1 × $2 piksel, faýl ölçegi: $3)',
'show-big-image' => 'Suratyň doly ölçegi',
'show-big-image-thumb' => '<small>Deslapky synyň ölçegi: $1 × $2 piksel</small>',
+'file-info-gif-looped' => 'halkaly',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|freým|freým}}',
# Special:NewFiles
'newimages' => 'Täze faýllaryň galereýasy',
@@ -2444,7 +2638,7 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'In',
@@ -2571,14 +2765,14 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-unknowndate' => 'Näbelli sene',
-'exif-orientation-1' => 'Adaty', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Keseligine öwrülen', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° aýlanan', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Dikligine öwrülen', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° aýlanan (sagadyň diliniň tersine) we dikligine öwrülen', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° aýlanan (sagadyň diliniň ugruna)', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° aýlanan (sagadyň diliniň ugruna) we dikligine öwrülen', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° aýlanan (sagadyň diliniň tersine)', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Adaty',
+'exif-orientation-2' => 'Keseligine öwrülen',
+'exif-orientation-3' => '180° aýlanan',
+'exif-orientation-4' => 'Dikligine öwrülen',
+'exif-orientation-5' => '90° aýlanan (sagadyň diliniň tersine) we dikligine öwrülen',
+'exif-orientation-6' => '90° aýlanan (sagadyň diliniň ugruna)',
+'exif-orientation-7' => '90° aýlanan (sagadyň diliniň ugruna) we dikligine öwrülen',
+'exif-orientation-8' => '90° aýlanan (sagadyň diliniň tersine)',
'exif-planarconfiguration-1' => 'chunky formaty',
'exif-planarconfiguration-2' => 'planar formaty',
@@ -2700,7 +2894,7 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-gpsmeasuremode-2' => '2-ölçegli ölçeg',
'exif-gpsmeasuremode-3' => '3-ölçegli ölçeg',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/sagat',
'exif-gpsspeed-m' => 'mil/sagat',
'exif-gpsspeed-n' => 'Uzel (deňiz mili)',
@@ -2719,6 +2913,7 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'watchlistall2' => 'Ählisini görkez',
'namespacesall' => 'ählisi',
'monthsall' => 'ählisi',
+'limitall' => 'ählisi',
# E-mail address confirmation
'confirmemail' => 'E-poçta adresini tassykla',
@@ -2846,7 +3041,7 @@ At aýyrmak üçin gapdalyndaky gutujygy belläp, Atlary aýyr düwmesine basyň
'duplicate-defaultsort' => '\'\'\'Duýduryş\'\'\': Gaýybana "$2" sortlaýyş açary mundan ozalky "$1" sortlaýyş açaryny aradan aýyrýar.',
# Special:Version
-'version' => 'Wersiýa', # Not used as normal message but as header for the special page itself
+'version' => 'Wersiýa',
'version-extensions' => 'Gurulgy giňeltmeler',
'version-specialpages' => 'Ýörite sahypalar',
'version-parserhooks' => 'Analizator ilgençekleri',
@@ -2860,7 +3055,7 @@ At aýyrmak üçin gapdalyndaky gutujygy belläp, Atlary aýyr düwmesine basyň
'version-skin-extension-functions' => 'Bezeg giňeltme funksiýalary',
'version-hook-name' => 'Ilgençegiň ady',
'version-hook-subscribedby' => 'Abuna ýazylan',
-'version-version' => 'Wersiýa',
+'version-version' => '(Wersiýa $1)',
'version-license' => 'Ygtyýarnama',
'version-software' => 'Gurlan programma üpjünçiligi',
'version-software-product' => 'Önüm',
@@ -2941,4 +3136,15 @@ Faýlyň adyny "{{ns:file}}:" pristawkasyz giriziň.',
'dberr-outofdate' => 'Olaryň biziň sahypalarymyz baradaky indeksi köne bolmagy mümkin.',
'dberr-cachederror' => 'Bu talap edilen sahypanyň keşirlenen nusgasy bolup, soňky üýtgeşmeleri görkezmezligi mümkin.',
+# HTML forms
+'htmlform-invalid-input' => 'Girizen maglumatyňyzyň bir böleginde problema bar',
+'htmlform-select-badoption' => 'Görkezen bahaňyz dogry opsiýa däl.',
+'htmlform-int-invalid' => 'Görkezen bahaňyz bitin san däl.',
+'htmlform-float-invalid' => 'Görkezen bahaňyz san däl.',
+'htmlform-int-toolow' => 'Görkezen bahaňyz $1 minimumyndan pes.',
+'htmlform-int-toohigh' => 'Görkezen bahaňyz $1 maksimumyndan ýokary.',
+'htmlform-submit' => 'Tabşyr',
+'htmlform-reset' => 'Üýtgeşmeleri yzyna al',
+'htmlform-selectorother-other' => 'Başga',
+
);
diff --git a/languages/messages/MessagesTl.php b/languages/messages/MessagesTl.php
index db57d1e4..0cb94830 100644
--- a/languages/messages/MessagesTl.php
+++ b/languages/messages/MessagesTl.php
@@ -21,8 +21,8 @@ $namespaceNames = array(
NS_USER => 'Tagagamit',
NS_USER_TALK => 'Usapang tagagamit',
NS_PROJECT_TALK => 'Usapang $1',
- NS_FILE => 'Larawan',
- NS_FILE_TALK => 'Usapang larawan',
+ NS_FILE => 'Talaksan',
+ NS_FILE_TALK => 'Usapang talaksan',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Usapang MediaWiki',
NS_TEMPLATE => 'Suleras',
@@ -34,26 +34,28 @@ $namespaceNames = array(
);
$namespaceAliases = array(
+ 'Talaksan' => NS_FILE,
+ 'Usapang talaksan' => NS_FILE_TALK,
'Kategorya' => NS_CATEGORY,
'Usapang kategorya' => NS_CATEGORY_TALK,
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Nagkadalawang mga pagturo papunta sa ibang pahina' ),
- 'BrokenRedirects' => array( 'Naputol na mga pagturo papunta sa ibang pahina' ),
- 'Disambiguations' => array( 'Mga paglilinaw' ),
- 'Userlogin' => array( 'Paglagda ng tagagamit' ),
- 'Userlogout' => array( 'Pag-alis sa pagkalagda ng tagagamit' ),
- 'CreateAccount' => array( 'Likhain ang akawnt' ),
+ 'DoubleRedirects' => array( 'Nagkadalawang mga panturo papunta sa ibang pahina', 'DoblengPanturo' ),
+ 'BrokenRedirects' => array( 'Naputol na mga panturo papunta sa ibang pahina', 'NaputulangPanturo' ),
+ 'Disambiguations' => array( 'Mga paglilinaw', 'Paglilinaw' ),
+ 'Userlogin' => array( 'Paglagda ng tagagamit', 'Maglagda' ),
+ 'Userlogout' => array( 'Pag-alis sa pagkalagda ng tagagamit', 'AlisLagda' ),
+ 'CreateAccount' => array( 'Likhain ang kuwenta', 'LikhaKuwenta' ),
'Preferences' => array( 'Mga nais' ),
- 'Watchlist' => array( 'Talaan ng binabantayan' ),
- 'Recentchanges' => array( 'Kamakailang mga pagbabago' ),
- 'Upload' => array( 'Ikarga' ),
- 'Listfiles' => array( 'Talaan ng mga talaksan', 'Talaan ng talaksan', 'Talaan ng mga larawan' ),
+ 'Watchlist' => array( 'Talaan ng binabantayan', 'Bantayan' ),
+ 'Recentchanges' => array( 'Mga huling binago', 'HulingBinago' ),
+ 'Upload' => array( 'Magkarga' ),
+ 'Listfiles' => array( 'Itala ang mga talaksan', 'Talaan ng mga talaksan', 'Talaan ng mga larawan' ),
'Newimages' => array( 'Bagong mga talaksan', 'Bagong mga larawan' ),
'Listusers' => array( 'Talaan ng mga tagagamit', 'Talaan ng tagagamit' ),
'Listgrouprights' => array( 'Talaan ng mga karapatan ng pangkat' ),
- 'Statistics' => array( 'Mga estadistika' ),
+ 'Statistics' => array( 'Mga estadistika', 'Estadistika' ),
'Randompage' => array( 'Alin man', 'Alin mang pahina' ),
'Lonelypages' => array( 'Nangungulilang mga pahina', 'Ulilang mga pahina' ),
'Uncategorizedpages' => array( 'Mga pahinang walang kaurian' ),
@@ -80,7 +82,7 @@ $specialPageAliases = array(
'Deadendpages' => array( 'Mga pahinang sukol', 'Mga pahinang walang lagusan' ),
'Protectedpages' => array( 'Mga pahinang nakasanggalang' ),
'Protectedtitles' => array( 'Mga pamagat na nakasanggalang' ),
- 'Allpages' => array( 'Lahat ng mga pahina' ),
+ 'Allpages' => array( 'Lahat ng mga pahina', 'LahatPahina' ),
'Prefixindex' => array( 'Talatuntunan ng unlapi' ),
'Ipblocklist' => array( 'Talaan ng hinahadlangan', 'Talaan ng mga hinahadlangan', 'Talaan ng hinahadlangang IP' ),
'Specialpages' => array( 'Natatanging mga pahina' ),
@@ -159,6 +161,7 @@ $messages = array(
'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na pagbabago ng mga pahina',
'tog-enotifrevealaddr' => 'Ipakita ang adres ng e-liham ko sa loob ng mga e-liham ng pagpapahayag',
'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
+'tog-oldsig' => 'Paunang tingin ng kasalukuyang lagda:',
'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
'tog-externaleditor' => 'Gumamit ng nakatakdang panlabas na pambago (para sa mga dalubhasa lamang, kailangan ng natatanging mga pagtatakda sa iyong kompyuter)',
'tog-externaldiff' => 'Gumamit ng nakatakdang ibang panlabas (para sa mga dalubhasa lamang, kailangan ng natatanging pagtatakda sa iyong kompyuter)',
@@ -182,6 +185,13 @@ $messages = array(
'underline-never' => 'Hindi magpakailanman',
'underline-default' => 'Tinakda ng pambasa-basa',
+# Font style option in Special:Preferences
+'editfont-style' => 'Baguhin ang estilong pantitik ng lugar:',
+'editfont-default' => 'Tinakda ng pambasa-basa',
+'editfont-monospace' => 'Estilo ng titik na isahan ang puwang',
+'editfont-sansserif' => 'Estilo ng titik na walang gutli sa dulo',
+'editfont-serif' => 'Estilo ng titik na may gutli sa dulo',
+
# Dates
'sunday' => 'Linggo',
'monday' => 'Lunes',
@@ -241,7 +251,7 @@ $messages = array(
'category-media-header' => 'Mga midya sa kategoryang "$1"',
'category-empty' => "''Kasalukuyang walang artikulo o midya ang kategoryang ito.''",
'hidden-categories' => '{{PLURAL:$1|Nakatagong kategorya|Mga nakatagong kategorya}}',
-'hidden-category-category' => 'Mga nakatagong kategorya', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Mga nakatagong kategorya',
'category-subcat-count' => '{{PLURAL:$2|Ang kategoryang ito ay mayroong sumusunod na subkategorya lamang.|Ang kategoryang ito ay mayroong sumusunod na {{PLURAL:$1|subkategorya|$1 subkategorya}}, mula sa kabuuan na $2.}}',
'category-subcat-count-limited' => 'Ang kategoryang ito ay mayroong sumusunod na {{PLURAL:$1|subkategorya|$1 subkategorya}}.',
'category-article-count' => '{{PLURAL:$2|Ang kategoryang ito ay naglalaman lamang ng sumusunod na pahina.|Ang sumusunod na {{PLURAL:$1|pahina ay|$1 pahina ay}} nasa kategoryang ito, mula sa kabuuan na $2.}}',
@@ -249,6 +259,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ang kategoryang ito ay naglalaman lamang ng sumusunod na talaksan.|Ang sumusunod na {{PLURAL:$1|talaksan ay|$1 talaksan ay}} nasa kategoryang ito, mula sa kabuuan na $2.}}',
'category-file-count-limited' => 'Ang sumusunod na {{PLURAL:$1|talaksan ay|$1 talaksan}} ay nasa kasalukuyang kategorya.',
'listingcontinuesabbrev' => 'karugtong',
+'index-category' => 'Mga pahinang may talatuntunan',
+'noindex-category' => 'Mga pahinang walang talatuntunan',
'mainpagetext' => "'''Matagumpay na ininstala ang MediaWiki.'''",
'mainpagedocfooter' => "Silipin ang [http://meta.wikimedia.org/wiki/Help:Contents Patnubay sa Tagagamit] (''\"User's Guide\"'') para sa kaalaman sa paggamit ng wiking ''software''.
@@ -259,10 +271,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Mga malimit itanong sa MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Tala ng mga pinadadalhan ng liham ng MediaWiki]",
-'about' => 'Patungkol',
-'article' => 'Pahina ng nilalaman',
-'newwindow' => '(magbubukas sa bagong bintana)',
-'cancel' => 'Kanselahin',
+'about' => 'Patungkol',
+'article' => 'Pahina ng nilalaman',
+'newwindow' => '(magbubukas sa bagong bintana)',
+'cancel' => 'Kanselahin',
+'moredotdotdot' => 'Damihan pa...',
+'mypage' => 'Pahina ko',
+'mytalk' => 'Usapan ko',
+'anontalk' => 'Usapan para sa IP na ito',
+'navigation' => 'Paglilibot (nabigasyon)',
+'and' => ',&#32;at',
+
+# Cologne Blue skin
'qbfind' => 'Hanapin',
'qbbrowse' => 'Basa-basahin',
'qbedit' => 'Baguhin',
@@ -270,15 +290,35 @@ $messages = array(
'qbpageinfo' => 'Konteksto',
'qbmyoptions' => 'Mga pahina ko',
'qbspecialpages' => 'Mga natatanging pahina',
-'moredotdotdot' => 'Damihan pa...',
-'mypage' => 'Pahina ko',
-'mytalk' => 'Usapan ko',
-'anontalk' => 'Usapan para sa IP na ito',
-'navigation' => 'Paglilibot (nabigasyon)',
-'and' => ',&#32;at',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata ("mga datong nasa likuran"):',
+'faq' => "Mga malimit itanong (''FAQ'')",
+'faqpage' => "Project:Mga malimit itanong (''FAQ'')",
+
+# Vector skin
+'vector-action-addsection' => 'Magdagdag ng paksa',
+'vector-action-delete' => 'Burahin',
+'vector-action-move' => 'Ilipat',
+'vector-action-protect' => 'Ipagsanggalang',
+'vector-action-undelete' => 'Alisin ang pagbubura',
+'vector-action-unprotect' => 'Alisin ang pagsasanggalang',
+'vector-namespace-category' => 'Kategorya',
+'vector-namespace-help' => 'Pahina ng tulong',
+'vector-namespace-image' => 'Talaksan',
+'vector-namespace-main' => 'Pahina',
+'vector-namespace-media' => 'Pahina ng midya',
+'vector-namespace-mediawiki' => 'Mensahe',
+'vector-namespace-project' => 'Pahina ng proyekto',
+'vector-namespace-special' => 'Natatanging pahina',
+'vector-namespace-talk' => 'Usapan',
+'vector-namespace-template' => 'Suleras',
+'vector-namespace-user' => 'Pahina ng tagagamit',
+'vector-view-create' => 'Likhain',
+'vector-view-edit' => 'Baguhin',
+'vector-view-history' => 'Tingnan ang kasaysayan',
+'vector-view-view' => 'Basahin',
+'vector-view-viewsource' => 'Tingnan ang pinagmulan',
+'actions' => 'Mga kilos',
+'namespaces' => 'Mga ngalan-espasyo',
+'variants' => 'Naiiba pa',
'errorpagetitle' => 'Pagkakamali',
'returnto' => 'Bumalik sa $1.',
@@ -328,18 +368,22 @@ $messages = array(
'otherlanguages' => 'Sa ibang wika',
'redirectedfrom' => '(Ikinarga mula sa $1)',
'redirectpagesub' => 'Pahina ng pagkarga',
-'lastmodifiedat' => 'Huling binago ang pahinang ito noong $2, noong $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Huling binago ang pahinang ito noong $2, noong $1.',
'viewcount' => 'Namataan na pahinang ito nang {{PLURAL:$1|isang|$1}} beses.',
'protectedpage' => 'Pahinang nakasanggalang',
'jumpto' => 'Tumalon sa:',
'jumptonavigation' => 'paglilibot (nabigasyon)',
'jumptosearch' => 'paghahanap',
+'view-pool-error' => 'Paumanhin, ngunit masyado pong abala ang mga serbidor sa sandaling ito.
+Masyadong maraming tagagamit ay sinusubukang tingnan ang pahinang ito.
+Mangyari lamang na maghintay po nang sandali bago niyo pong subukang mataanin muli ang pahinang ito.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Tungkol sa {{SITENAME}}',
'aboutpage' => 'Project:Patungkol',
'copyright' => 'Maaaring gamitin ang nilalaman sa ilalim ng $1.',
-'copyrightpagename' => 'Karapatang-ari sa {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Mga karapatang-ari',
'currentevents' => 'Mga kasalukuyang pangyayari',
'currentevents-url' => 'Project:Mga kasalukuyang pangyayari',
@@ -347,8 +391,6 @@ $messages = array(
'disclaimerpage' => 'Project:Pangkalahatang pagtatanggi',
'edithelp' => 'Tulong sa pagbabago',
'edithelppage' => 'Help:Pagbabago',
-'faq' => "Mga malimit itanong (''FAQ'')",
-'faqpage' => "Project:Mga malimit itanong (''FAQ'')",
'helppage' => 'Help:Mga nilalaman',
'mainpage' => 'Unang Pahina',
'mainpage-description' => 'Unang Pahina',
@@ -429,10 +471,6 @@ Ang huling sinubukang paguusisa sa kalipunan ng datos ay:
"$1"
mula sa gawaing "$2".
Ibinalik ng kalipunan ng datos ang kamaliang "$3: $4"',
-'noconnect' => 'Paumanhin! Dumaranas ang wiki ng ilang kahirapang teknikal, at hindi magawang makipagugnayan sa serbidor ng kalipunan ng datos. <br />
-$1',
-'nodb' => 'Hindi mapili ang kalipunan ng datos na $1',
-'cachederror' => 'Ang sumusunod ay isang iniligpit o itinagong kopya ng hinihiling na pahina, at maaaring hindi ito bago.',
'laggedslavemode' => "'''Babala:''' Maaaring hindi naglalaman ang pahina ng mga huling dagdag.",
'readonly' => 'Nakakandado ang kalipunan ng datos',
'enterlockreason' => 'Maglagay ng dahilan sa pagkakandado, kasama ang taya kung kailan magtatapos ang pagkakandado',
@@ -450,6 +488,8 @@ Pakiulat ito sa isang [[Special:ListUsers/sysop|tagapangasiwa]], na ibinibigay a
'readonly_lag' => 'Automatikong kinandado ang kalipunan ng datos habang humahabol ang mga aliping serbidor sa pinunong kalipunan nito',
'internalerror' => 'Kamaliang panloob',
'internalerror_info' => 'Kamaliang panloob: $1',
+'fileappenderrorread' => 'Hindi mabasa ang "$1" habang inilalakip.',
+'fileappenderror' => 'Hindi mailakip ang "$1" sa "$2".',
'filecopyerror' => 'Hindi makopya ang talaksang "$1" sa "$2".',
'filerenameerror' => 'Hindi mapalitan ang pangalan ng talaksang "$1" sa "$2".',
'filedeleteerror' => 'Hindi mabura ang talaksang "$1".',
@@ -459,8 +499,8 @@ Pakiulat ito sa isang [[Special:ListUsers/sysop|tagapangasiwa]], na ibinibigay a
'unexpected' => 'Hindi inaasahang halaga: "$1"="$2".',
'formerror' => 'Kamalian: hindi maipadala ang pormularyo',
'badarticleerror' => 'Hindi maisasagawa ang gawaing ito sa pahinang ito.',
-'cannotdelete' => 'Hindi mabura ang tinukoy na pahina o talaksan.
-Maaaring nabura na ito ng ibang tagagamit.',
+'cannotdelete' => 'Hindi mabura ang pahina o talaksang "$1".
+Maaaring ibinura na ito ng iba.',
'badtitle' => 'Hindi kanais-nais na pamagat',
'badtitletext' => 'Ang hiniling na pamagat ng pahina ay hindi katanggap-tanggap, wala, o isang may-maling kawing na pamagat na pangugnayang-wika (interwika) o pangugnayang wiki (interwiki).
Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaaring gamitin para sa mga pamagat.',
@@ -497,7 +537,6 @@ Ang ibinigay na dahilan ay ''$2''.",
'virus-unknownscanner' => 'hindi kilalang panlaban sa birus:',
# Login and logout pages
-'logouttitle' => 'Pangalis sa pagkakalagda ng tagagamit',
'logouttext' => "'''Nakaalis ka na sa pagkakalagda.'''
Maaari kang tumuloy sa paggamit ng {{SITENAME}} nang hindi nakikilala (anonimo), o maaaring kang [[Special:UserLogin|lumagda/tumala muli]] bilang kapareho o ibang tagagamit.
@@ -505,7 +544,6 @@ Tandaan na may ilang pahinang maaaring magpatuloy na nagpapakitang parang nakala
'welcomecreation' => '== Maligayang pagdating, $1! ==
Nilikha na ang iyong kuwenta.
Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SITENAME}}]].',
-'loginpagetitle' => 'Paglagda ng tagagamit',
'yourname' => 'Bansag:',
'yourpassword' => 'Hudyat:',
'yourpasswordagain' => 'Hudyat mo uli:',
@@ -516,6 +554,7 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
'nav-login-createaccount' => 'Lumagda / lumikha ng kuwenta',
'loginprompt' => "Dapat na pinapahintulutan mo ang mga kuki (''cookie'') upang makalagda sa {{SITENAME}}.",
'userlogin' => 'Lumagda / lumikha ng kuwenta',
+'userloginnocreate' => 'Lumagda',
'logout' => 'Umalis sa pagkakalagda',
'userlogout' => 'Umalis sa pagkakalagda',
'notloggedin' => 'Hindi nakalagda',
@@ -528,30 +567,8 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
'badretype' => 'Hindi magkatugma ang ipinasok mong mga hudyat.',
'userexists' => 'May gumagamit na ng ganyang pangalang pantagagamit.
Pumili lamang ng iba pang pangalan.',
-'youremail' => 'E-liham:',
-'username' => 'Bansag:',
-'uid' => 'ID ng tagagamit:',
-'prefs-memberingroups' => 'Kasapi ng {{PLURAL:$1|na pangkat|na mga pangkat}}:',
-'yourrealname' => 'Tunay na pangalan:',
-'yourlanguage' => 'Wika:',
-'yourvariant' => 'Naiiba pa:',
-'yournick' => 'Panglagda:',
-'badsig' => 'Hindi tamang hilaw na lagda.
-Pakisuri ang mga tatak ng HTML.',
-'badsiglength' => 'Napakahaba ng iyong lagda.
-Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
-'yourgender' => 'Kasarian:',
-'gender-unknown' => 'Hindi tinukoy',
-'gender-male' => 'Lalaki',
-'gender-female' => 'Babae',
-'prefs-help-gender' => 'Maaaring wala nito: ginagamit para sa pagbanggit ng tamang kasarian sa pamamagitan ng sopwer. Magging pangmadla ang kabatiran ito.',
-'email' => 'E-liham',
-'prefs-help-realname' => "Opsyonal ('di-talaga kailangan) ang tunay na pangalan.
-Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
'loginerror' => 'Kamalian sa paglagda',
-'prefs-help-email' => 'Opsyonal (hindi talaga kailangan) ang adres ng e-liham, subalit makapagpapahintulot ito sa pagpapadala ng bagong hudyat mo kapag nakalimutan mo ang iyong lumang hudyat.
-Mapipili mo ring payagan ang ibang tagagamit na makapagugnayan sa iyo sa pamamagitan ng iyong pahina ng tagagamit o pahina ng usapan na hindi na kailangan pang ipakilala ang iyong katauhan.',
-'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'createaccounterror' => 'Hindi mailikha ang kuwenta: $1',
'nocookiesnew' => "Nilikha na ang kuwentang pantagagamit, ngunit hindi ka nakalagda.
Gumagamit ang {{SITENAME}} ng mga kuki (''cookies'') para mailagda ang mga tagagamit.
Hindi mo pinagagana ang mga kuki.
@@ -568,12 +585,13 @@ Suriin ang iyong pagbabaybay, o [[Special:UserLogin/signup|lumikha ng bagong kuw
'nosuchusershort' => 'Walang tagagamit na may pangalang "<nowiki>$1</nowiki>".
Pakitingnan ang iyong pagbabaybay.',
'nouserspecified' => 'Kailangang tukuyin mo ang isang pangalang pantagagamit.',
+'login-userblocked' => 'Hinarang ang tagagamit na ito. Hindi pinahihintulutan ang paglalagda.',
'wrongpassword' => 'Mali ang ipinasok na hudyat.
Pakisubok muli.',
'wrongpasswordempty' => 'Walang laman ang ipinasok na hudyat.
Pakisubok muli.',
-'passwordtooshort' => 'Hindi tanggap o napakaikli ng iyong hudyat.
-Dapat na mayroon itong {{PLURAL:$1|1 panitik|$1 mga panitik}} (karakter) at naiiba sa iyong pangalang pantagagamit.',
+'passwordtooshort' => 'Ang mga hudyat ay dapat mayroong {{PLURAL:$1|1 panitik|$1 panitik}} (karakter).',
+'password-name-match' => 'Dapat magkaiba ang hudyat mo sa bansag mo.',
'mailmypassword' => 'Ipadala sa pamamagitan ng e-liham ang bagong hudyat',
'passwordremindertitle' => 'Bagong pansamantalang hudyat para sa {{SITENAME}}',
'passwordremindertext' => 'Mayroong (na maaaring ikaw, mula sa adres ng IP na $1) humiling ng isang bagong
@@ -586,6 +604,7 @@ Kung ibang tao ang humiling nito, o kung naalala mo na ang iyong hudyat,
at hindi mo na ibig pang baguhin ito, maaari mong huwag pansinin ang mensaheng ito at
magpatuloy sa paggamit ng iyong lumang hudyat.',
'noemail' => 'Walang nakatalang adres ng e-liham para sa tagagamit na "$1".',
+'noemailcreate' => 'Kailangan mong magbigay ng may-bisang adres ng e-liham',
'passwordsent' => 'Isang bagong hudyat ang ipinadala sa adres ng e-liham na nakatala para kay "$1".
Lumagda/Tumala lang po muli pagkaraan mong matanggap ito.',
'blocked-mailpassword' => 'Hinarangan sa paggawa ng mga pagbabago ang iyong adres ng IP, at kaya hindi rin pinapahintulutang gumamit ng tungkuling makabawi ng hudyat para maiwasan ang pangaabuso.',
@@ -610,9 +629,11 @@ Pakipasok ang isang may mahusay na anyong adres o paki-iwang walang laman na lan
Dapat kang tumala at baguhin ang hudyat mo ngayon.
Maaari mong huwag pansinin ang mensaheng ito, kung mali ang paglikha ng kuwentang ito.',
+'usernamehasherror' => 'Hindi maaaring maglaman ng mga panitik na pantadtad ang pangalan ng tagagamit',
'login-throttled' => 'Masyadong marami ang ginawa mong kamakailan lang na mga pagsubok sa paglagdang papasok.
Maghintay po muna bago subukan uli.',
'loginlanguagelabel' => 'Wika: $1',
+'suspicious-userlogout' => "Tinanggihan ang inyong kahilingang umalis sa pagkalagda dahil tila ito ay ipinadala ng sirang pambasa-basa o apoderadong pambaon (''caching proxy'')",
# Password reset dialog
'resetpass' => 'Palitan ang hudyat',
@@ -625,18 +646,13 @@ Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
'retypenew' => 'Ipasok muli ang bagong hudyat:',
'resetpass_submit' => 'Itakda ang hudyat at lumagda',
'resetpass_success' => 'Matagumpay na nabago ang iyong hudyat! Inilalagda ka na ngayon...',
-'resetpass_bad_temporary' => 'Hindi tanggap na pansamantalang hudyat.
-Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bagong pansamantalang hudyat.',
'resetpass_forbidden' => 'Hindi mababago ang mga hudyat',
'resetpass-no-info' => 'Nakalagda ka dapat para tuwirang mapuntahan ang pahina ito.',
'resetpass-submit-loggedin' => 'Baguhin ang hudyat',
+'resetpass-submit-cancel' => 'Kanselahin',
'resetpass-wrong-oldpass' => 'Hindi tanggap na pansamantala o pangkasalukuyang hudyat.
Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bagong pansamantalang hudyat.',
'resetpass-temp-password' => 'Pansamantalang hudyat:',
-'resetpass-log' => 'Muling itinatakda ng hudyat ang talaan',
-'resetpass-logtext' => 'Nasa ibaba ang isang talaan ng mga tagagamit na muling nagsipagtakda ng kanilang mga hudyat sa pamamagitan ng isang tagapangasiwa.',
-'resetpass-logentry' => 'binago ang hudyat para kay $1',
-'resetpass-comment' => 'Dahilan ng muling pagtatakda ng hudyat:',
# Edit page toolbar
'bold_sample' => 'Makapal na panitik',
@@ -712,7 +728,6 @@ Pakisama ang lahat ng mga detalyeng nasa itaas sa anumang pagtatanong na gagawin
'blockededitsource' => "Ang teksto ng '''mga pagbabago mo''' sa '''$1''' ay ipinapakita sa ibaba:",
'whitelistedittitle' => 'Paglagda kailangan para makapagbago',
'whitelistedittext' => 'Kailangan mong $1 para makapagbago ng mga pahina.',
-'confirmedittitle' => 'Kailangan ang kompirmasyon ng e-liham para makapagbago',
'confirmedittext' => 'Kailangang kumpirmahin mo muna ang adres ng iyong e-liham bago makapagbago ng mga pahina.
Pakihanda at patotohanan ang adres ng e-liham sa pamamagitan ng iyong [[Special:Preferences|kagustuhan ng tagagamit]].',
'nosuchsectiontitle' => 'Hindi mahanap ang seksyon',
@@ -737,14 +752,21 @@ Kung isa kang hindi nagpapakilalang tagagamit at nakadaramang may mga walang say
Maaari mong [[Special:Search/{{PAGENAME}}|hanapin ang pamagat ng pahinang ito]] sa loob iba pang mga pahina,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} maghanap sa kaugnay na mga talaan],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} baguhin ang pahinang ito]</span>.',
+'noarticletext-nopermission' => 'Kasalukuyang walang teksto sa pahinang ito.
+Maaari mong [[Special:Search/{{PAGENAME}}|hanapin ang pamagat ng pahinang ito]] sa ibang mga pahina,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} maghanap sa kaugnay na mga talaan]</span>.',
'userpage-userdoesnotexist' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".
Pakisuri kung ibig mong likhain/baguhin ang pahinang ito.',
+'userpage-userdoesnotexist-view' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".',
+'blocked-notice-logextract' => 'Kasalukuyang hinarang ang tagagamit na ito.
+Ang pinakahuling entrada sa talaan ng pagharang ay ibinigay sa baba para sa inyong pagsasangguni:',
'clearyourcache' => "'''Tandaan: Pagkatapos magtala, dapat linisin mo ang baunan ng iyong pambasa-basa upang makita ang mga pagbabago.'''
'''Mozilla / Firefox / Safari:''' panatilihing nakapindot ang ''Shift'' habang kiniklik ang ''Reload'', o pindutin ang ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' sa isang Macintosh);
'''Konqueror:''' i-klik ang ''Reload'' o pindutin ang ''F5'';
'''Opera:''' linisin ang baunan sa ''Tools → Preferences'';
'''Internet Explorer:''' panatilihing nakapindot ang ''Ctrl'' habang kiniklik ang ''Refresh'', o pindutin ang ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''<i>Tip</i>:''' Bago itala, gamitin ang buton ng 'Paunang tingin' upang masubok ang bagong CSS/JS.",
+'usercssyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong CSS bago sagipin.",
+'userjsyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong JavaScript bago sagipin.",
'usercsspreview' => "'''Tandaan mong paunang tingin pa lamang ito ng iyong CSS na pantagagamit.'''
'''Hindi pa ito nasasagip!'''",
'userjspreview' => "'''Tandaang pagsubok/paunang tingin mo pa lang ito ng iyong JavaScript.'''
@@ -798,13 +820,16 @@ Hindi ito masasagip.'''",
Maaaring ibigin mong gupitin at idikit ang teksto patungo sa isang talaksang pangteksto at sagipin ito mamaya.'''
Nagbigay ng ganitong paliwanag ang tagapangasiwang nagkandado nito: $1",
-'protectedpagewarning' => "'''BABALA: Ikinandado ang pahinang ito upang mga tagagamit na may mga karapatang pang-''sysop'' lamang ang makapagbago nito.'''",
-'semiprotectedpagewarning' => "'''Paunawa:''' Ikinandado ang pahinang ito upang tanging nakatalang mga tagagamit lamang ang makapagbago nito.",
+'protectedpagewarning' => "'''Babala: Ikinandado ang pahinang ito upang mga tagagamit lamang na may karapatan ng tagapangasiwa ang makakapagbago nito.'''
+Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa iyong pagsasangguni:",
+'semiprotectedpagewarning' => "'''Paunawa: Ikinandado ang pahinang ito upang mga nakatalang tagagamit lamang ang makakapagbago nito.'''
+Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa iyong pagsasangguni:",
'cascadeprotectedwarning' => "'''Babala:''' Ikinandado ang pahinang ito upang tanging mga tagagamit na may mga karapatang pang-''sysop'' lamang ang makapagbago nito, dahil kabilang ito sa sumusunod na mga {{PLURAL:$1|pahinang|mga pahinang}} may baita-baitang na panananggalang:",
-'titleprotectedwarning' => "'''BABALA: Ikinandado ang pahinang ito upang [[Special:ListGroupRights|partikular na mga karapatan]] ang kailanganin upang malikha ito.'''",
-'templatesused' => 'Mga suleras na ginagamit sa pahinang ito:',
-'templatesusedpreview' => 'Mga suleras na ginagamit para sa paunang-tinging ito:',
-'templatesusedsection' => 'Mga suleras na ginagamit para sa bahaging ito:',
+'titleprotectedwarning' => "'''Babala: Ikinandado ang pahinang ito upang [[Special:ListGroupRights|partikular na mga karapatan]] ang kakailanganin upang mailikha ito.'''
+Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa inyong pagsasangguni:",
+'templatesused' => '{{PLURAL:$1|Suleras|Mga suleras}} na ginagamit sa pahinang ito:',
+'templatesusedpreview' => '{{PLURAL:$1|Suleras|Mga suleras}} na ginagamit sa paunang-tinging ito:',
+'templatesusedsection' => '{{PLURAL:$1|Suleras|Mga suleras}} na ginamit sa seksyong ito:',
'template-protected' => '(nakasanggalang)',
'template-semiprotected' => '(bahagyang nakasanggalang)',
'hiddencategories' => 'Ang pahinang ito ay kasapi sa {{PLURAL:$1|1 nakatagong kategorya|$1 nakatagong kategorya}}:',
@@ -813,16 +838,18 @@ Nagbigay ng ganitong paliwanag ang tagapangasiwang nagkandado nito: $1",
'nocreatetext' => 'Naglagay ng hangganan (restriksyon/limitasyon) ang {{SITENAME}} sa kakayahang makalikha ng bagong mga pahina.
Maaari kang bumalik at magbago ng isang umiiral na pahina, o kaya [[Special:UserLogin|lumagda o lumikha ng kuwenta/akawnt]].',
'nocreate-loggedin' => 'Walang kang pahintulot para lumikha ng bagong mga pahina.',
+'sectioneditnotsupported-title' => 'Hindi sinusuportahan ang pagpapatnugot ng seksyon',
+'sectioneditnotsupported-text' => 'Hindi sinusuportahan ang pagpapatnugot ng seksyon sa pahinang ito.',
'permissionserrors' => 'Mga kamalian sa mga pahintulot',
'permissionserrorstext' => 'Wala kang pahintulot na gawin iyan, dahil sa sumusunod na {{PLURAL:$1|dahilan|mga dahilan}}:',
'permissionserrorstext-withaction' => 'Wala kang pahintulot na $2, dahil sa sumusunod na {{PLURAL:$1|dahilan|mga dahilan}}:',
-'recreate-deleted-warn' => "'''Babala: Muli mong nililikha ang isang pahinang binura na dati.'''
+'recreate-moveddeleted-warn' => "'''Babala: Muli mong inililikha ang isang pahinang binura na dati.'''
Dapat mong isaalang-alang kung nararapat bang ipagpatuloy ang pagbago sa pahinang ito.
-Ibinigay dito ang tala ng pagbubura para sa pahinang ito para sa kaginhawahan mo:",
-'deleted-notice' => 'Nabura na dati ang pahinang ito.
-Ibinigay sa ibaba ang tala ng pagbubura para sa pahinang ito bilang sanggunian.',
-'deletelog-fulllog' => 'Tingnan ang buong tala',
+Ang tala ng pagbubura at paglilipat para sa pahinang ito ay ibinigay dito para sa inyong kaginhawaan:",
+'moveddeleted-notice' => 'Ibinura na ang pahinang ito.
+Ang tala ng pagbubura at paglilipat para sa pahinang ito ibinigay sa baba para sa inyong pagsasangguni.',
+'log-fulllog' => 'Tingnan ang buong tala',
'edit-hook-aborted' => 'Pinigil ng sungkit ang pagbabago.
Walang ibinigay na paliwanag.',
'edit-gone-missing' => 'Hindi maisapanahon ang pahina.
@@ -844,6 +871,7 @@ Hindi isasama ang ilang mga suleras.',
'post-expand-template-argument-category' => 'Mga pahinang naglalaman ng mga tinanggal na mga alitan ng suleras',
'parser-template-loop-warning' => 'Nadiskubreng silo ng suleras: [[$1]]',
'parser-template-recursion-depth-warning' => 'Lumabis na sa nakatakdang lalim ng rekursyon (pormula) ng suleras ($1)',
+'language-converter-depth-warning' => 'Lumampas sa ($1) ang hangganan ng lalim ng pampalit ng wika',
# "Undo" feature
'undo-success' => 'Matatanggal ang pagbabago.
@@ -864,7 +892,7 @@ Ang dahilang ibinigay ni $3 ay ''$2''",
'currentrev' => 'Pangkasalukuyang pagbabago',
'currentrev-asof' => 'Pangkasalukuyang pagbabago mula noong $1',
'revisionasof' => 'Pagbabago mula noong $1',
-'revision-info' => 'Pagbabago mula noong $1 ni $2', # Additionally available: $3: revision id
+'revision-info' => 'Pagbabago mula noong $1 ni $2',
'previousrevision' => '← Lumang pagbabago',
'nextrevision' => 'Bagong pagbabago →',
'currentrevisionlink' => 'Pangkasalukuyang pagbabago',
@@ -877,7 +905,7 @@ Ang dahilang ibinigay ni $3 ay ''$2''",
Mga daglat: (kas) = pagkakaiba sa kasalukuyang bersyon,
(huli) = pagkakaiba sa naunang bersyon, m = maliit na pagbabago.",
'history-fieldset-title' => 'Tumingin-tingin sa kasaysayan',
-'deletedrev' => '[binura]',
+'history-show-deleted' => 'Ibinura lamang',
'histfirst' => 'Pinakasinauna',
'histlast' => 'Pinakakamakailan',
'historysize' => "({{PLURAL:$1|1 ''byte''|$1 ''byte''}})",
@@ -886,71 +914,113 @@ Mga daglat: (kas) = pagkakaiba sa kasalukuyang bersyon,
# Revision feed
'history-feed-title' => 'Kasaysayan ng pagbabago',
'history-feed-description' => 'Kasaysayan ng pagbabago para sa pahinang ito dito sa wiki',
-'history-feed-item-nocomment' => '$1 sa $2', # user at time
+'history-feed-item-nocomment' => '$1 sa $2',
'history-feed-empty' => 'Wala ang hiniling na pahina.
Nabura ito mula sa wiki, o napalitan ng pangalan.
Subukang [[Special:Search|hanapin sa wiki]] para sa mga kaugnay na mga bagong pahina.',
# Revision deletion
-'rev-deleted-comment' => '(tinanggal ang kumento/puna)',
-'rev-deleted-user' => '(tinanggal ang pangalan ng tagagamit)',
-'rev-deleted-event' => '(tinanggal ang galaw sa talaan)',
-'rev-deleted-text-permission' => "'''Binura''' ang pagbabago ng pahinang ito.
-Maaaring may mga detalye sa loob ng [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
-'rev-deleted-text-view' => "'''Binura''' ang pagbabago ng pahinang ito.
-Bilang isang tagapangasiwa, maaari mo itong makita;
-maaaring may mga detalye sa loob ng [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
-'rev-deleted-no-diff' => "Hindi mo maaaring makita ang pagkakaibang ito dahil '''binura''' ang isa sa mga pagbabago. Maaaring may mga detalye mula sa loob ng [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
-'rev-deleted-unhide-diff' => "'''Binura''' ang isa sa mga pagbababago ng pagkakaibang ito.
-Maaaring may mga detalye sa loob ng [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
-Bilang isang tagapangasiwa, maaari mo pa ring [$1 tingnan ang pagkakaiba] kung nais mong magpatuloy.",
-'rev-delundel' => 'ipakita/itago',
-'revisiondelete' => 'Burahin/ibalik ang mga pagbabago',
-'revdelete-nooldid-title' => 'Hindi tanggap na puntiryang pagbabago',
-'revdelete-nooldid-text' => 'Hindi ka nagbigay ng pupuntahang pagbabago o mga pagbabago para magampanan ang paraan na ito.',
-'revdelete-nologtype-title' => 'Walang uri ng tala/pagtatalang ibinigay',
-'revdelete-nologtype-text' => 'Hindi ka tumukoy ng isang uri ng talang pagsasagawaan ng kilos na ito.',
-'revdelete-toomanytargets-title' => 'Napakaraming mga puntirya',
-'revdelete-toomanytargets-text' => 'Napakarami mong tinukoy na mga uri ng mga puntirya na pagsasagawaan ng galaw na ito.',
-'revdelete-nologid-title' => 'Hindi tanggap na entrada/ipinasok sa tala.',
-'revdelete-nologid-text' => 'Hindi ka tumukoy ng isang pinupuntiryang kaganapang pangtala upang maisagawa ang tungkuling ito o hindi umiiral ang tinukoy na entrada/ipinasok.',
-'revdelete-selected' => "{{PLURAL:$2|Piniling|Mga piniling}} pagbabago ng '''$1:'''",
-'logdelete-selected' => '{{PLURAL:$1|Piniling tala ng pangyayari|Piniling tala ng mga pangyayari}}:',
-'revdelete-text' => "'''Makikita pa rin ang mga binurang pagbabago at mga kaganapan sa pahina ng kasaysayan at mga talaan, ngunit hindi mapupuntahan ng madla ang mga bahagi ng kanilang nilalaman.
-
-Makikita pa rin ng iba pang mga tagapangasiwang nasa {{SITENAME}} ang mga tinagong nilalaman
-at maaaring ibalik ito mula sa pagkakabura sa pamamagitan ng kaparehong ugnayang-hangganan, maliban na lamang kung may itinakdang karagdagang mga restriksyon.
-Pakitiyak kung ito ang nais mong gawin, na nauunawaan mo ang mga kahihinatnan, at ginagawa mo ito alinsunod sa [[{{MediaWiki:Policy-url}}|patakaran]].",
-'revdelete-suppress-text' => "Ang paglilingid ay dapat na gamitin '''lamang''' para sa sumusunod na mga pagkakataon:
+'rev-deleted-comment' => '(tinanggal ang kumento/puna)',
+'rev-deleted-user' => '(tinanggal ang pangalan ng tagagamit)',
+'rev-deleted-event' => '(tinanggal ang galaw sa talaan)',
+'rev-deleted-user-contribs' => '[itinanggal ang bansag o adres ng IP - itinago ang pagbabago mula sa mga ambag]',
+'rev-deleted-text-permission' => "Itong pagbabago ng pahina ay '''ibinura'''.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
+'rev-deleted-text-unhide' => "Itong pagbabago ng pahina ay '''ibinura'''.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].
+Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
+'rev-suppressed-text-unhide' => "Itong pagbabago ng pahina ay '''isinugpo'''.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
+Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
+'rev-deleted-text-view' => "Itong pagbabago ng pahina ay '''ibinura'''.
+Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
+'rev-suppressed-text-view' => "Itong pagbabago ng pahina ay '''isinugpo'''.
+Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-deleted-no-diff' => "Hindi mo maaaring makita ang pagkakaibang ito dahil '''binura na''' ang isa sa mga pagbabago. Matatagpuan ang mga detalye mula sa loob ng [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
+'rev-suppressed-no-diff' => "Hindi mo maaaring tingnan ang pagkakaibang ito dahil '''ibinura''' ang isa sa mga pagbabago.",
+'rev-deleted-unhide-diff' => "'''Binura''' ang isa sa mga pagbabago ng pagkakaibang ito.
+Maaaring matagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
+Bilang isang tagapangasiwa, maaari mo pa ring [$1 tingnan ang pagkakaibang ito] kung nais mong magpatuloy.",
+'rev-suppressed-unhide-diff' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
+Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
+'rev-deleted-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''binura'''.
+Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
+'rev-suppressed-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
+Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-delundel' => 'ipakita/itago',
+'rev-showdeleted' => 'ipakita',
+'revisiondelete' => 'Burahin/ibalik ang mga pagbabago',
+'revdelete-nooldid-title' => 'Hindi tanggap na puntiryang pagbabago',
+'revdelete-nooldid-text' => 'Hindi ka nagbigay ng pupuntahang pagbabago o mga pagbabago para magampanan ang paraan na ito.',
+'revdelete-nologtype-title' => 'Walang uri ng tala/pagtatalang ibinigay',
+'revdelete-nologtype-text' => 'Hindi ka tumukoy ng isang uri ng talang pagsasagawaan ng kilos na ito.',
+'revdelete-nologid-title' => 'Hindi tanggap na entrada/ipinasok sa tala.',
+'revdelete-nologid-text' => 'Hindi ka tumukoy ng isang pinupuntiryang kaganapang pangtala upang maisagawa ang tungkuling ito o hindi umiiral ang tinukoy na entrada/ipinasok.',
+'revdelete-no-file' => 'Hindi umiiral ang tinutukoy na talaksan.',
+'revdelete-show-file-confirm' => 'Nakatitiyak ka bang nais mong tanawin ang isang binurang pagbabago ng talaksang "<nowiki>$1</nowiki>" mula $2 noong $3?',
+'revdelete-show-file-submit' => 'Oo',
+'revdelete-selected' => "{{PLURAL:$2|Piniling|Mga piniling}} pagbabago ng '''$1:'''",
+'logdelete-selected' => '{{PLURAL:$1|Piniling tala ng pangyayari|Piniling tala ng mga pangyayari}}:',
+'revdelete-text' => "'''Makikita pa rin ang mga binurang pagbabago at mga kaganapan sa pahina ng kasaysayan at mga talaan, ngunit hindi mapupuntahan ng madla ang mga bahagi ng kanilang nilalaman.
+Makikita pa rin ng iba pang mga tagapangasiwang nasa {{SITENAME}} ang mga tinagong nilalaman at maaaring ibalik ito mula sa pagkakabura sa pamamagitan ng kaparehong ugnayang-hangganan, maliban na lamang kung may itinakdang karagdagang mga restriksyon.",
+'revdelete-confirm' => 'Pakitiyak po na nais mo itong gawin, na nauunawaan mo ang mga kahihinatnan, at na ginagawa mo ito alinsunod sa [[{{MediaWiki:Policy-url}}|patakaran]].',
+'revdelete-suppress-text' => "Ang paglilingid ay dapat na gamitin '''lamang''' para sa sumusunod na mga pagkakataon:
* Hindi naaangkop na kabatirang pansarili
*: ''mga adres ng tahanan at bilang na pangtelepono, mga bilang na pangseguridad na sosyal, atbp.''",
-'revdelete-legend' => 'Itakda ang mga kaantasan ng pagpapakita',
-'revdelete-hide-text' => 'Itago ang teksto ng pagbabago',
-'revdelete-hide-name' => 'Itago ang galaw at puntirya',
-'revdelete-hide-comment' => 'Itago ang komento sa pagbabago',
-'revdelete-hide-user' => 'Itago ang pangalang pantagagamit/IP ng patnugot',
-'revdelete-hide-restricted' => 'Ilingid ang dato mula sa mga tagapangasiwa at maging sa mga iba pa',
-'revdelete-suppress' => 'Supilin ang datos mula sa mga tagapangasiwa gayon din sa iba',
-'revdelete-hide-image' => 'Itago ang nilalaman ng talaksan',
-'revdelete-unsuppress' => 'Tanggalin ang mga pagbabawal sa naibalik na mga pagbabago',
-'revdelete-log' => 'Dahilan:',
-'revdelete-submit' => 'Pairalin para sa napiling pagbabago',
-'revdelete-logentry' => 'binago ang antas ng pagpapakita ng pagbabago kay [[$1]]',
-'logdelete-logentry' => 'binago ang antas ng pagpapakita ng kaganapan kay [[$1]]',
-'revdelete-success' => "'''Matagumpay na naisapanahon''' ang kaantasan ng pagpapakita ng pagbabago.",
-'logdelete-success' => "'''Matagumpay na naitakda ang kaantasan ng pagpapakita ng tala.'''",
-'revdel-restore' => 'Baguhin ang kaantasan ng pagpapakita',
-'pagehist' => 'Kasaysayan ng pahina',
-'deletedhist' => 'Naburang kasaysayan',
-'revdelete-content' => 'nilalaman',
-'revdelete-summary' => 'buod ng pagbabago',
-'revdelete-uname' => 'pangalang pantagagamit',
-'revdelete-restricted' => 'nilapat na mga paghihigpit sa mga tagapangasiwa',
-'revdelete-unrestricted' => 'tinanggal ang mga pagbabawal para sa mga tagapangasiwa',
-'revdelete-hid' => 'itinago $1',
-'revdelete-unhid' => 'pinalitaw $1',
-'revdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|pagbabago|mga pagbabago}}',
-'logdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|kaganapan|mga kaganapan}}',
+'revdelete-legend' => 'Itakda ang mga kaantasan ng pagpapakita',
+'revdelete-hide-text' => 'Itago ang teksto ng pagbabago',
+'revdelete-hide-image' => 'Itago ang nilalaman ng talaksan',
+'revdelete-hide-name' => 'Itago ang galaw at puntirya',
+'revdelete-hide-comment' => 'Itago ang komento sa pagbabago',
+'revdelete-hide-user' => 'Itago ang pangalang pantagagamit/IP ng patnugot',
+'revdelete-hide-restricted' => 'Ilingid ang dato mula sa mga tagapangasiwa at maging sa mga iba pa',
+'revdelete-radio-same' => '(huwag baguhin)',
+'revdelete-radio-set' => 'Oo',
+'revdelete-radio-unset' => 'Hindi',
+'revdelete-suppress' => 'Supilin ang datos mula sa mga tagapangasiwa gayon din sa iba',
+'revdelete-unsuppress' => 'Tanggalin ang mga pagbabawal sa naibalik na mga pagbabago',
+'revdelete-log' => 'Dahilan:',
+'revdelete-submit' => 'Pairalin para sa napiling {{PLURAL:$1|pagbabago|mga pagbabago}}',
+'revdelete-logentry' => 'binago ang antas ng pagpapakita ng pagbabago kay [[$1]]',
+'logdelete-logentry' => 'binago ang antas ng pagpapakita ng kaganapan kay [[$1]]',
+'revdelete-success' => "'''Matagumpay na naisapanahon''' ang kaantasan ng pagpapakita ng pagbabago.",
+'revdelete-failure' => "'''Hindi maisapanahon ang pagbabago sa kaantasan ng pagpapakita.'''
+$1",
+'logdelete-success' => "'''Matagumpay na naitakda ang kaantasan ng pagpapakita ng tala.'''",
+'logdelete-failure' => "'''Hindi maitakda ang kaantasan ng pagpapakita ng kalap:'''
+$1",
+'revdel-restore' => 'Baguhin ang kaantasan ng pagpapakita',
+'pagehist' => 'Kasaysayan ng pahina',
+'deletedhist' => 'Naburang kasaysayan',
+'revdelete-content' => 'nilalaman',
+'revdelete-summary' => 'buod ng pagbabago',
+'revdelete-uname' => 'pangalang pantagagamit',
+'revdelete-restricted' => 'nilapat na mga paghihigpit sa mga tagapangasiwa',
+'revdelete-unrestricted' => 'tinanggal ang mga pagbabawal para sa mga tagapangasiwa',
+'revdelete-hid' => 'itinago $1',
+'revdelete-unhid' => 'pinalitaw $1',
+'revdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|pagbabago|mga pagbabago}}',
+'logdelete-log-message' => '$1 para sa $2 {{PLURAL:$2|kaganapan|mga kaganapan}}',
+'revdelete-hide-current' => 'May kamalian sa pagtatago ng bagay na may petsang $2, $1: ito ang kasalukuyang pagbabago.
+Hindi ito maikukubli.',
+'revdelete-show-no-access' => 'May kamalian sa pagpapakita ng bagay na may petsang $2, $1: tinatakan ang bagay na ito bilang "ipinagbabawal".
+Hindi mo ito mapupuntahan.',
+'revdelete-modify-no-access' => 'May mali sa pagbabago ng bagay na may petsang $2, $1: tinatakan ang bagay na ito bilang "ipinagbabawal":
+Hindi mo ito mapupuntahan.',
+'revdelete-modify-missing' => 'Pagkakamali sa pagbabago ng ID ng bagay na $1: nawawala ito mula sa kalipunan ng datos!',
+'revdelete-no-change' => "'''Babala:''' ang bagay na may petsang $2, $1 ay mayroon na ng hiniling na pagtatakdang pangkaantasan ng pagpapakita.",
+'revdelete-concurrent-change' => 'May mali sa pagbabago ng bagay na may petsang $2, $1: ang katayuan nito ay tila nagpapakitang binago ng ibang tao habang sinubukan mong baguhin ito.
+Pakitingnan ang mga talaan.',
+'revdelete-only-restricted' => 'May mali sa pagtatago ng bagay na may petsang $2, $1: hindi mo mapipigil ang mga bagay na matingnan ng mga tagapangasiwa na hindi rin pipili ng isa sa mga pagpipiliang kaugnay ng antas ng pagpapakita.',
+'revdelete-reason-dropdown' => '*Mga karaniwang dahilan sa pagbubura
+** Paglabag sa karapatang-ari (kopirayt)
+** Hindi nararapat na personal na impormasyon
+** Impormasyong maaaring mapanirang-puri',
+'revdelete-otherreason' => 'Iba/karagdagang dahilan:',
+'revdelete-reasonotherlist' => 'Ibang dahilan',
+'revdelete-edit-reasonlist' => 'Baguhin ang mga dahilan ng pagbura',
+'revdelete-offender' => 'May-akda ng pagbabago:',
# Suppression log
'suppressionlog' => 'Tala ng pagpipigil',
@@ -987,67 +1057,13 @@ Tiyakin na ang pagbabago ay makapagpapanatili ng pagkakatuluy-tuloy ng pahinang
'mergelogpagetext' => 'Nasa ibaba ang isang talaan ng mga pinakakamakailan lamang na mga pagsasanib ng isang kasaysayan ng pahina patungo sa isa pa.',
# Diffs
-'history-title' => 'Kasaysayan ng pagbabago ng "$1"',
-'difference' => '(Pagkakaiba sa pagitan ng mga pagbabago)',
-'lineno' => 'Linya $1:',
-'compareselectedversions' => 'Paghambingin ang mga napiling bersyon',
-'visualcomparison' => 'Napagmamasdang paghahambing',
-'wikicodecomparison' => 'Paghahambing ng Wikiteksto',
-'editundo' => 'ibalik',
-'diff-multi' => '({{PLURAL:$1|Isang panggitnang pagbabago|$1 panggitnang pagbabago}} ang hindi ipinakita.)',
-'diff-movedto' => 'nilipat sa $1',
-'diff-styleadded' => '$1 estilo dinagdag',
-'diff-added' => '$1 dinagdag',
-'diff-changedto' => 'binago na naging $1',
-'diff-movedoutof' => 'nilipat mula sa $1',
-'diff-styleremoved' => '$1 estilo inalis',
-'diff-removed' => '$1 inalis',
-'diff-changedfrom' => 'binago mula sa $1',
-'diff-src' => 'pinagmulan',
-'diff-withdestination' => 'may patutunguhang $1',
-'diff-with' => '&#32;may $1 $2',
-'diff-with-final' => '&#32;at $1 $2',
-'diff-width' => 'lapad',
-'diff-height' => 'taas',
-'diff-p' => "isang '''talata'''",
-'diff-blockquote' => "isang '''sipi ng pagbanggit'''",
-'diff-h1' => "isang '''paulo (antas 1)'''",
-'diff-h2' => "isang '''paulo (antas 2)'''",
-'diff-h3' => "isang '''paulo (antas 3)'''",
-'diff-h4' => "isang '''paulo (antas 4)'''",
-'diff-h5' => "isang '''paulo (antas 5)'''",
-'diff-pre' => "isang '''pagharang/paghadlang na may dati nang nakatakdang pormat'''",
-'diff-div' => "isang '''kahatian'''",
-'diff-ul' => "isang '''hindi magkakasunod na talaan'''",
-'diff-ol' => "isang '''may pagkakasunud-sunod na talaan'''",
-'diff-li' => "isang '''bagay na pantalaan'''",
-'diff-table' => "isang '''tabla'''",
-'diff-tbody' => "isang '''nilalaman ng tabla'''",
-'diff-tr' => "isang '''pahalang na hanay'''",
-'diff-td' => "isang '''selula'''",
-'diff-th' => "isang '''paulo'''",
-'diff-br' => "isang '''pagputol'''",
-'diff-hr' => "isang '''patakaran sa pagpapahalang'''",
-'diff-code' => "isang '''pagharang sa kodigong pangkompyuter'''",
-'diff-dl' => "isang '''talaang pangkahulugan'''",
-'diff-dt' => "isang '''salitang pangkahulugan'''",
-'diff-dd' => "isang '''kahulugan'''",
-'diff-input' => "isang '''puhunan''' (input)",
-'diff-form' => "isang '''pormularyo'''",
-'diff-img' => "isang '''larawan'''",
-'diff-span' => "isang '''haba ng sukat''' (''span'')",
-'diff-a' => "isang '''kawing'''",
-'diff-i' => "'''mga pahilis'''",
-'diff-b' => "'''makapal'''",
-'diff-strong' => "'''malakas'''",
-'diff-em' => "'''bigay-diin'''",
-'diff-font' => "'''estilo ng titik''' (''font'')",
-'diff-big' => "'''malaki'''",
-'diff-del' => "'''nabura'''",
-'diff-tt' => "'''nakatakdang lapad'''",
-'diff-sub' => "'''pangibabang panitik'''",
-'diff-sup' => "'''pangitaas na panitik'''",
-'diff-strike' => "'''patamaan ng guhit'''",
+'history-title' => 'Kasaysayan ng pagbabago ng "$1"',
+'difference' => '(Pagkakaiba sa pagitan ng mga pagbabago)',
+'lineno' => 'Linya $1:',
+'compareselectedversions' => 'Paghambingin ang mga napiling bersyon',
+'showhideselectedversions' => 'Ipakita/itago ang napiling mga bersyon',
+'editundo' => 'ibalik',
+'diff-multi' => '({{PLURAL:$1|Isang panggitnang pagbabago|$1 panggitnang pagbabago}} ang hindi ipinakita.)',
# Search results
'searchresults' => 'Kinalabasan/Resulta ng paghahanap',
@@ -1055,29 +1071,25 @@ Tiyakin na ang pagbabago ay makapagpapanatili ng pagkakatuluy-tuloy ng pahinang
'searchresulttext' => 'Para sa mas maraming kabatiran hinggil sa paghahanap sa {{SITENAME}}, tingnan ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Hinanap mo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|lahat ng mga pahinang nagsisimula sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|lahat ng mga pahinang nakakawing sa "$1"]])',
'searchsubtitleinvalid' => "Hinanap mo ang '''$1'''",
-'noexactmatch' => "'''Walang pahinang pinamagatang \"\$1\".'''
-Maaari mong [[:\$1|likhain ang pahinang ito]].",
-'noexactmatch-nocreate' => "'''Walang pahinang pinamagatang \"\$1\".'''",
'toomanymatches' => 'Napakaraming mga tumutugmang ibinalik, pakisubok ang isang ibang tanong',
'titlematches' => 'Tumutugma ang pamagat ng pahina',
'notitlematches' => 'Walang tumutugmang pamagat ng pahina',
'textmatches' => 'Tumutugma ang teksto ng pahina',
'notextmatches' => 'Walang katugmang pahina ng teksto',
-'prevn' => 'nauna $1',
-'nextn' => 'kasunod $1',
+'prevn' => 'nauna {{PLURAL:$1|$1}}',
+'nextn' => 'kasunod {{PLURAL:$1|$1}}',
'prevn-title' => 'Nakaraang $1 {{PLURAL:$1|resulta|mga resulta}}',
'nextn-title' => 'Susunod na $1 {{PLURAL:$1|resulta|mga resulta}}',
'shown-title' => 'Ipakita ang $1 {{PLURAL:$1|resulta|mga resulta}} na para sa bawat isang pahina',
-'viewprevnext' => 'Tingnan ($1) ($2) ($3)',
+'viewprevnext' => 'Tingnan ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Mga pagpipilian para sa paghahanap',
'searchmenu-exists' => "'''Mayroong pahinang may pangalang \"[[:\$1]]\" dito sa wiking ito'''",
'searchmenu-new' => "'''Likhain ang pahinang \"[[:\$1]]\" sa wiking ito!'''",
'searchhelp-url' => 'Help:Nilalaman',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tingnan-tingnan ang mga pahinang may ganitong unahan/unlapi]]',
'searchprofile-articles' => 'Mga pahina ng nilalaman',
-'searchprofile-articles-and-proj' => 'Mga pahina ng nilalaman at proyekto',
-'searchprofile-project' => 'Mga pahina ng proyekto',
-'searchprofile-images' => 'Mga talaksan',
+'searchprofile-project' => 'Mga pahina ng Tulong at Proyekto',
+'searchprofile-images' => 'Multimidya',
'searchprofile-everything' => 'Lahat ng bagay',
'searchprofile-advanced' => 'Mas mataas na antas',
'searchprofile-articles-tooltip' => 'Hanapin sa $1',
@@ -1085,8 +1097,6 @@ Maaari mong [[:\$1|likhain ang pahinang ito]].",
'searchprofile-images-tooltip' => 'Maghanap ng mga talaksan',
'searchprofile-everything-tooltip' => 'Hanapin ang lahat ng nilalaman (kabilang ang mga pahina ng usapan)',
'searchprofile-advanced-tooltip' => 'Hanapin sa pinasadyang mga espasyo ng pangalan',
-'prefs-search-nsdefault' => 'Hanapin ayon sa likas na pagkakatakda:',
-'prefs-search-nscustom' => 'Hanapin ang pinasadyang mga espasyo ng pangalan:',
'search-result-size' => '$1 ({{PLURAL:$2|1 salita|$2 salita}})',
'search-result-score' => 'Kaugnayan: $1%',
'search-redirect' => '(ipanuto/ituro ang $1)',
@@ -1099,11 +1109,12 @@ Maaari mong [[:\$1|likhain ang pahinang ito]].",
'search-mwsuggest-disabled' => 'walang mga mungkahi',
'search-relatedarticle' => 'Kaugnay',
'mwsuggest-disable' => 'Huwag paganahin ang mga mungkahi ng AJAX',
+'searcheverything-enable' => 'Maghanap sa lahat ng ngalan-espasyo:',
'searchrelated' => 'kaugnay',
'searchall' => 'lahat',
'showingresults' => "Ipinapakita sa ibaba ang magpahanggang sa {{PLURAL:$1|'''1''' resultang|'''$1''' mga resultang}} nagsisimula sa #'''$2'''.",
'showingresultsnum' => "Ipinapakita sa ibaba ang {{PLURAL:$3|'''1''' resultang|'''$3''' mga resultang}} nagsisimula sa #'''$2'''.",
-'showingresultstotal' => "Ipinapakita sa ibaba ang {{PLURAL:$4|resultang '''$1''' ng '''$3'''|mga resultang '''$1 - $2''' ng '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Resultang '''$1''' ng '''$3'''|Mga resultang '''$1 - $2''' ng '''$3'''}} para sa '''$4'''",
'nonefound' => "'''Paunawa''': Ilang mga ngalan-espasyo lamang ang hinahanap ayon sa likas na pagkakatakda.
Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialalaman (kabilang ang mga pahina ng usapan, mga suleras, atbp), o gamitin ang ninanais na espasyo ng pangalan bilang unlapi.",
'search-nonefound' => 'Walang mga resultang tumutugma sa katanungan/pagtatanong.',
@@ -1112,113 +1123,150 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
'powersearch-ns' => 'Maghanap sa mga espasyo ng pangalan:',
'powersearch-redir' => 'Itala ang mga panuto',
'powersearch-field' => 'Hanapin ang',
+'powersearch-togglelabel' => 'Suriin:',
+'powersearch-toggleall' => 'Lahat',
+'powersearch-togglenone' => 'Wala',
'search-external' => 'Panlabas na paghahanap',
'searchdisabled' => 'Nakapatay ang paghahanap sa {{SITENAME}}. Maaari kang pansamantalang maghanap sa pamamagitan ng Google. Tandaan na maaaring luma na ang kanilang mga indeks sa nilalaman ng {{SITENAME}}.',
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Wala',
+'qbsettings-fixedleft' => 'Inayos ang kaliwa',
+'qbsettings-fixedright' => 'Inayos ang kanan',
+'qbsettings-floatingleft' => 'Kaliwa lumulutang',
+'qbsettings-floatingright' => 'Kanan lumulutang',
+
# Preferences page
-'preferences' => 'Mga kagustuhan',
-'mypreferences' => 'Aking mga kagustuhan',
-'prefs-edits' => 'Bilang ng mga pagbabago:',
-'prefsnologin' => 'Hindi nakalagda/nakatala',
-'prefsnologintext' => 'Kailangan mong <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} lumagda/tumala]</span> para makapagtakda ng mga kagustuhang ng tagagamit.',
-'prefsreset' => 'Muling itinakda ang mga kagustuhan mula sa taguan.',
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Wala',
-'qbsettings-fixedleft' => 'Inayos ang kaliwa',
-'qbsettings-fixedright' => 'Inayos ang kanan',
-'qbsettings-floatingleft' => 'Kaliwa lumulutang',
-'qbsettings-floatingright' => 'Kanan lumulutang',
-'changepassword' => 'Baguhin ang hudyat',
-'skin' => 'Pabalat',
-'skin-preview' => 'Unang tingin',
-'math' => 'Matematika',
-'dateformat' => 'Anyo ng petsa',
-'datedefault' => 'Walang kagustuhan',
-'datetime' => 'Petsa at oras',
-'math_failure' => 'Nabigo sa pagbanghay',
-'math_unknown_error' => 'hindi nalalamang kamalian',
-'math_unknown_function' => 'hindi nalalamang tungkulin',
-'math_lexing_error' => 'kamalian sa pagbabatas',
-'math_syntax_error' => 'kamalian sa palaugnayan',
-'math_image_error' => 'Nabigo ang pagpapalit patungong PNG;
-pakisuri kung tama ang pagiinstala ng latex, dvips, gs, at palitan',
-'math_bad_tmpdir' => 'Hindi maisulat sa o makalikha ng pansamantalang direktoryong pangmatematika',
-'math_bad_output' => 'Hindi maisulat sa o makalikha ng direktoryo ng produktong pangmatematika',
-'math_notexvc' => 'Nawawala ang maisasakatuparang texvc;
-pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
-'prefs-personal' => 'Sanligang pangkatangian ng tagagamit',
-'prefs-rc' => 'Kamakailan lamang na mga pagbabago',
-'prefs-watchlist' => 'Talaan ng mga binabantayan',
-'prefs-watchlist-days' => 'Mga araw na ipapakita sa talaan ng mga binabantayan:',
-'prefs-watchlist-days-max' => '(pinakamarami ang 7 mga araw)',
-'prefs-watchlist-edits' => 'Pinakamaraming bilang ng mga pagbabagong ipapakita sa pinalawak na talaan ng mga binabantayan:',
-'prefs-watchlist-edits-max' => '(pinakamataas na bilang: 1000)',
-'prefs-misc' => 'Bala-balaki',
-'prefs-resetpass' => 'Baguhin ang hudyat',
-'saveprefs' => 'Sagipin',
-'resetprefs' => 'Hawanin ang hindi nasagip na mga pagbabago',
-'restoreprefs' => 'Ibalik ang lahat ng likas na mga pagtatakda',
-'textboxsize' => 'May binabago',
-'prefs-edit-boxsize' => 'Sukat ng dungawan ng ginagawang pagbabago.',
-'rows' => 'Mga pahalang na hanay:',
-'columns' => 'Mga pahabang hanay:',
-'searchresultshead' => 'Hanapin',
-'resultsperpage' => 'Bilang ng pagtama sa bawat pahina:',
-'contextlines' => 'Linya bawat pagtama:',
-'contextchars' => 'Konteksto ng bawat guhit:',
-'stub-threshold' => 'Kakayanan para sa pagpopormat ng <a href="#" class="usbong">kawing ng usbong</a> (mga \'\'byte\'\'):',
-'recentchangesdays' => 'Mga araw na ipapakita sa kamakailan lamang na mga pagbabago:',
-'recentchangesdays-max' => '(pinakamataas na ang $1 {{PLURAL:$1|araw|mga araw}})',
-'recentchangescount' => 'Bilang ng mga pagbabagong ipapakita sa loob ng kamakailang mga pagbabago, mga kasaysayan ng pahina at sa loob ng mga tala, bilang likas na katakdaan:',
-'savedprefs' => 'Nasagip na ang mga kagustuhan mo.',
-'timezonelegend' => 'Sona ng oras:',
-'timezonetext' => '¹Ang bilang ng pagkakaiba ng katutubong oras mo mula sa oras ng serbidor (UTC).',
-'localtime' => 'Lokal na oras:',
-'timezoneselect' => 'Sona ng oras:',
-'timezoneuseserverdefault' => 'Gamitin ang itinakda ng serbidor',
-'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
-'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
-'servertime' => 'Oras sa serbidor',
-'guesstimezone' => "Punuin ng mula sa pantingin-tingin (''browser'')",
-'timezoneregion-africa' => 'Aprika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Artiko',
-'timezoneregion-asia' => 'Asya',
-'timezoneregion-atlantic' => 'Karagatang Atlantiko',
-'timezoneregion-australia' => 'Australya',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Karagatang Indyano',
-'timezoneregion-pacific' => 'Karagatang Pasipiko',
-'allowemail' => 'Pahintulutan ang e-liham mula sa ibang mga tagagamit',
-'prefs-searchoptions' => 'Mga pagpipilian para sa paghahanap',
-'prefs-namespaces' => 'Mga espasyo ng pangalan',
-'defaultns' => 'Maghanap sa mga pangalan ng espasyong ito ayon sa likas na pagtatakda:',
-'default' => 'Likas na pagtatakda',
-'files' => 'Mga talaksan',
-'prefs-custom-css' => 'Pasadyang CSS',
-'prefs-custom-js' => 'Pasadyang JS',
+'preferences' => 'Mga kagustuhan',
+'mypreferences' => 'Aking mga kagustuhan',
+'prefs-edits' => 'Bilang ng mga pagbabago:',
+'prefsnologin' => 'Hindi nakalagda/nakatala',
+'prefsnologintext' => 'Kailangan mong <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} lumagda/tumala]</span> para makapagtakda ng mga kagustuhang ng tagagamit.',
+'changepassword' => 'Baguhin ang hudyat',
+'prefs-skin' => 'Pabalat',
+'skin-preview' => 'Unang tingin',
+'prefs-math' => 'Matematika',
+'datedefault' => 'Walang kagustuhan',
+'prefs-datetime' => 'Petsa at oras',
+'prefs-personal' => 'Sanligang pangkatangian ng tagagamit',
+'prefs-rc' => 'Kamakailan lamang na mga pagbabago',
+'prefs-watchlist' => 'Talaan ng mga binabantayan',
+'prefs-watchlist-days' => 'Mga araw na ipapakita sa talaan ng mga binabantayan:',
+'prefs-watchlist-days-max' => '(pinakamarami ang 7 mga araw)',
+'prefs-watchlist-edits' => 'Pinakamaraming bilang ng mga pagbabagong ipapakita sa pinalawak na talaan ng mga binabantayan:',
+'prefs-watchlist-edits-max' => '(pinakamataas na bilang: 1000)',
+'prefs-watchlist-token' => 'Balap ng talaan ng mga binabantayan:',
+'prefs-misc' => 'Bala-balaki',
+'prefs-resetpass' => 'Baguhin ang hudyat',
+'prefs-email' => 'Mga pagpipilian para sa e-liham',
+'prefs-rendering' => 'Hitsura',
+'saveprefs' => 'Sagipin',
+'resetprefs' => 'Hawanin ang hindi nasagip na mga pagbabago',
+'restoreprefs' => 'Ibalik ang lahat ng likas na mga pagtatakda',
+'prefs-editing' => 'May binabago',
+'prefs-edit-boxsize' => 'Sukat ng dungawan ng ginagawang pagbabago.',
+'rows' => 'Mga pahalang na hanay:',
+'columns' => 'Mga pahabang hanay:',
+'searchresultshead' => 'Hanapin',
+'resultsperpage' => 'Bilang ng pagtama sa bawat pahina:',
+'contextlines' => 'Linya bawat pagtama:',
+'contextchars' => 'Konteksto ng bawat guhit:',
+'stub-threshold' => 'Kakayanan para sa pagpopormat ng <a href="#" class="usbong">kawing ng usbong</a> (mga \'\'byte\'\'):',
+'recentchangesdays' => 'Mga araw na ipapakita sa kamakailan lamang na mga pagbabago:',
+'recentchangesdays-max' => '(pinakamataas na ang $1 {{PLURAL:$1|araw|mga araw}})',
+'recentchangescount' => 'Bilang ng mga pagbabagong ipapakita sa pamamagitan ng likas na katakdaan:',
+'prefs-help-recentchangescount' => 'Kasama nito ang mga huling binago, kasaysayan ng mga pahina, at mga tala.',
+'prefs-help-watchlist-token' => "Ang pagpupuno sa lugar na ito na ginagamitan ng lihim na susi ay lilikha ng pakaing RSS para sa iyong talaan ng mga binabantayan. Ang sinumang nakakaalam ng susi sa loob ng lugar na ito ay makababasa ng iyong talaan ng mga binabantayan, kaya't pumili ng ligtas na halaga. Narito ang magagamit mong isang halagang nilikha ng pagkakataon: $1",
+'savedprefs' => 'Nasagip na ang mga kagustuhan mo.',
+'timezonelegend' => 'Sona ng oras:',
+'localtime' => 'Lokal na oras:',
+'timezoneuseserverdefault' => 'Gamitin ang itinakda ng serbidor',
+'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
+'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
+'servertime' => 'Oras sa serbidor',
+'guesstimezone' => "Punuin ng mula sa pantingin-tingin (''browser'')",
+'timezoneregion-africa' => 'Aprika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Artiko',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Karagatang Atlantiko',
+'timezoneregion-australia' => 'Australya',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Karagatang Indyano',
+'timezoneregion-pacific' => 'Karagatang Pasipiko',
+'allowemail' => 'Pahintulutan ang e-liham mula sa ibang mga tagagamit',
+'prefs-searchoptions' => 'Mga pagpipilian para sa paghahanap',
+'prefs-namespaces' => 'Mga espasyo ng pangalan',
+'defaultns' => 'O kaya maghanap sa mga pangalan ng espasyong ito:',
+'default' => 'Likas na pagtatakda',
+'prefs-files' => 'Mga talaksan',
+'prefs-custom-css' => 'Pasadyang CSS',
+'prefs-custom-js' => 'Pasadyang JS',
+'prefs-reset-intro' => 'Magagamit mo ang pahinang ito upang muling maitakda ang mga kagustuhan mo sa likas na pagtatakda ng sityo.
+Hindi ito maibabalik sa dating gawi.',
+'prefs-emailconfirm-label' => 'Kumpirmasyon ng e-liham:',
+'prefs-textboxsize' => 'Sukat ng bintana ng pagbabago',
+'youremail' => 'E-liham:',
+'username' => 'Bansag:',
+'uid' => 'ID ng tagagamit:',
+'prefs-memberingroups' => 'Kasapi ng {{PLURAL:$1|na pangkat|na mga pangkat}}:',
+'prefs-registration' => 'Oras ng pagtatala:',
+'yourrealname' => 'Tunay na pangalan:',
+'yourlanguage' => 'Wika:',
+'yourvariant' => 'Naiiba pa:',
+'yournick' => 'Panglagda:',
+'prefs-help-signature' => 'Ang mga puna sa mga pahina ng usapan ay dapat na lagdaan ng "<nowiki>~~~~</nowiki>" na magiging lagda mo at marka ng oras.',
+'badsig' => 'Hindi tamang hilaw na lagda.
+Pakisuri ang mga tatak ng HTML.',
+'badsiglength' => 'Napakahaba ng iyong lagda.
+Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
+'yourgender' => 'Kasarian:',
+'gender-unknown' => 'Hindi tinukoy',
+'gender-male' => 'Lalaki',
+'gender-female' => 'Babae',
+'prefs-help-gender' => 'Maaaring wala nito: ginagamit para sa pagbanggit ng tamang kasarian sa pamamagitan ng sopwer. Magging pangmadla ang kabatiran ito.',
+'email' => 'E-liham',
+'prefs-help-realname' => "Opsyonal ('di-talaga kailangan) ang tunay na pangalan.
+Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
+'prefs-help-email' => 'Opsyonal (hindi talaga kailangan) ang adres ng e-liham, subalit makapagpapahintulot ito sa pagpapadala ng bagong hudyat mo kapag nakalimutan mo ang iyong lumang hudyat.
+Mapipili mo ring payagan ang ibang tagagamit na makapagugnayan sa iyo sa pamamagitan ng iyong pahina ng tagagamit o pahina ng usapan na hindi na kailangan pang ipakilala ang iyong katauhan.',
+'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'prefs-info' => 'Payak na kabatiran',
+'prefs-i18n' => 'Internasyonalisasyon',
+'prefs-signature' => 'Lagda',
+'prefs-dateformat' => 'Anyo ng petsa',
+'prefs-timeoffset' => 'Pagtatama ng oras',
+'prefs-advancedediting' => 'Masulong na mga mapagpipilian',
+'prefs-advancedrc' => 'Masulong na mga mapagpipilian',
+'prefs-advancedrendering' => 'Masulong na mga mapagpipilian',
+'prefs-advancedsearchoptions' => 'Masulong na mga mapagpipilian',
+'prefs-advancedwatchlist' => 'Masulong na mga mapagpipilian',
+'prefs-display' => 'Ipakita ang mga pagpipilian',
+'prefs-diffs' => 'Mga pagkakaiba',
# User rights
-'userrights' => 'Pamamahala ng mga karapatan ng tagagamit', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Pamahalaan ang mga pangkat ng tagagamit',
-'userrights-user-editname' => 'Magpasok ng isang pangalan ng tagagamit:',
-'editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
-'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
-'saveusergroups' => 'Sagipin ang mga pangkat ng tagagamit',
-'userrights-groupsmember' => 'Kasapi ng:',
-'userrights-groups-help' => 'Maaari mong baguhin ang mga pangkat ng tagagamit na ito sa:
+'userrights' => 'Pamamahala ng mga karapatan ng tagagamit',
+'userrights-lookup-user' => 'Pamahalaan ang mga pangkat ng tagagamit',
+'userrights-user-editname' => 'Magpasok ng isang pangalan ng tagagamit:',
+'editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
+'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
+'saveusergroups' => 'Sagipin ang mga pangkat ng tagagamit',
+'userrights-groupsmember' => 'Kasapi ng:',
+'userrights-groupsmember-auto' => 'Karamay na kasapi ng:',
+'userrights-groups-help' => 'Maaari mong baguhin ang mga pangkat ng tagagamit na ito sa:
* Kahon na naka-tsek na nangangahulugang ang tagagamit ay kasapi sa pangkat.
* Kahon na hindi naka-tsek na nangangahulugang na hindi kasapi ang tagagamit sa pangkat.
* Ipinapahiwatig ng * na maaaring tanggalng ang pangkat kapag dinagdag ito, o ang kabaglitaran nito.',
-'userrights-reason' => 'Dahilan:',
-'userrights-no-interwiki' => 'Wala kang pahintulot na baguhin ang mga karapatan ng tagagamit sa ibang mga wiki.',
-'userrights-nodatabase' => 'Hindi umiiral o hindi lokal ang kalipunan ng datos na $1',
-'userrights-nologin' => 'Kailangang [[Special:UserLogin|nakalagda ka]] bilang tagapangasiwa upang maitalaga ang mga karapatan ng tagagamit.',
-'userrights-notallowed' => 'Walang pahintulot ang iyong akawnt na magtalaga ng mga karapatan ng tagagamit.',
-'userrights-changeable-col' => 'Mga pangkat na maaari mong baguhin',
-'userrights-unchangeable-col' => 'Mga pangkat na hindi mo mababago',
+'userrights-reason' => 'Dahilan:',
+'userrights-no-interwiki' => 'Wala kang pahintulot na baguhin ang mga karapatan ng tagagamit sa ibang mga wiki.',
+'userrights-nodatabase' => 'Hindi umiiral o hindi lokal ang kalipunan ng datos na $1',
+'userrights-nologin' => 'Kailangang [[Special:UserLogin|nakalagda ka]] bilang tagapangasiwa upang maitalaga ang mga karapatan ng tagagamit.',
+'userrights-notallowed' => 'Walang pahintulot ang iyong akawnt na magtalaga ng mga karapatan ng tagagamit.',
+'userrights-changeable-col' => 'Mga pangkat na maaari mong baguhin',
+'userrights-unchangeable-col' => 'Mga pangkat na hindi mo mababago',
# Groups
'group' => 'Pangkat:',
@@ -1271,6 +1319,7 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
'right-bigdelete' => 'Burahin ang mga pahinang may malaking mga kasaysayan',
'right-deleterevision' => 'Burahin at tanggalin sa pagkabura ang isang partikular na mga pagbabago ng mga pahina',
'right-deletedhistory' => 'Tingnan ang mga binurang pinasok na kasaysayan, na wala ang kanilang nakakabit na teksto',
+'right-deletedtext' => 'Tingnan ang naburang teksto at mga pagbabago sa pagitan ng dalawang mga rebisyon',
'right-browsearchive' => 'Hanapin ang mga binurang mga pahina',
'right-undelete' => 'Buhayin muli ang isang pahina',
'right-suppressrevision' => "Suriing muli at ibalik ang mga pagbabagong itinago mula sa mga ''Sysop''.",
@@ -1284,6 +1333,8 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
'right-editprotected' => 'Baguhin ang mga pahinang nakasanggalang (walang baita-baitang na panananggalang)',
'right-editinterface' => 'Baguhin ang ugnayang-hangganan ng tagagamit',
'right-editusercssjs' => 'Baguhin ang mga talaksang CSS at JS ng ibang mga tagagamit',
+'right-editusercss' => 'Baguhin ang mga talaksang CSS ng ibang mga tagagamit',
+'right-edituserjs' => 'Baguhin ang mga talaksang JS ng ibang mga tagagamit',
'right-rollback' => 'Mabilisang pagulungin pabalik sa dati ang mga pagbabago ng huling tagagamit na nagbago ng isang partikular na pahina',
'right-markbotedits' => 'Itatak ang mga binalik na mga pagbabago bilang pagbabagong bot',
'right-noratelimit' => 'Hindi maaapektuhan ng antas ng mga hangganan',
@@ -1300,6 +1351,8 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
'right-siteadmin' => 'Ikandado at alisin ang pagkakakandado ng kalipunan ng dato',
'right-reset-passwords' => 'Mulng itakda ang mga hudyat ng iba pang mga tagagamit',
'right-override-export-depth' => 'Iluwas ang mga pahina na kabilang ang mga pahinang nakakawing magpahanggang sa isang lalim na 5',
+'right-versiondetail' => 'Ipakita ang karugtong na kabatiran ng bersyong pangsopwer',
+'right-sendemail' => 'Magpadala ng e-liham sa ibang mga tagagamit',
# User rights log
'rightslog' => 'Tala ng mga karapatan ng tagagamit',
@@ -1349,6 +1402,15 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
'recentchanges-legend' => 'Mga pagpipilian para sa kamakailang mga pagbabago',
'recentchangestext' => 'Subaybayan ang mga pinakahuling pagbabago sa wiki sa pahinang ito.',
'recentchanges-feed-description' => 'Sundan ang pinakahuling mga pagbabago sa wiki sa pamamagitan ng feed na ito.',
+'recentchanges-label-legend' => 'Kahulugan : $1.',
+'recentchanges-legend-newpage' => '$1 - bagong pahina',
+'recentchanges-label-newpage' => 'Lumikha ng isang bagong pahina ang pagbabagong ito',
+'recentchanges-legend-minor' => '$1 - maliliit na pagbabago',
+'recentchanges-label-minor' => 'Isa itong munting pagbabago',
+'recentchanges-legend-bot' => '$1 - binago ng bot',
+'recentchanges-label-bot' => 'Gawa ng isang bot ang pagbabagong ito',
+'recentchanges-legend-unpatrolled' => '$1 - hindi napatrulyang pagbabago',
+'recentchanges-label-unpatrolled' => 'Hindi pa napapatrulyahan ang pagbabagong ito',
'rcnote' => "Nasa ibaba {{PLURAL:$1|ang '''1''' pagbabago|ang pinakahuling '''$1''' mga pagbabago}} sa huling {{PLURAL:$2|araw|'''$2''' mga araw}}, mula noong $5, $4.",
'rcnotefrom' => "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').",
'rclistfrom' => 'Ipakita ang bagong mga pagbabago simula sa $1',
@@ -1375,6 +1437,8 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
# Recent changes linked
'recentchangeslinked' => 'Kaugnay na mga pagbabago',
+'recentchangeslinked-feed' => 'Kaugnay na mga pagbabago',
+'recentchangeslinked-toolbox' => 'Kaugnay na mga pagbabago',
'recentchangeslinked-title' => 'Mga pagbabagong kaugnay ng "$1"',
'recentchangeslinked-noresult' => 'Walang mga pagbabago sa mga pahinang nakakawing sa ibinigay na kapanahunan.',
'recentchangeslinked-summary' => "Nililista ng natatanging pahina na ito ang huling mga pagbabago na nakaugnay. Naka '''matapang na teksto''' ang iyong mga binabantayan.",
@@ -1384,8 +1448,8 @@ pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
# Upload
'upload' => 'Magkarga ng talaksan',
'uploadbtn' => 'Magkarga ng talaksan',
-'reupload' => 'Magkarga muli',
'reuploaddesc' => 'Kanselahin/Iurong ang pagkarga at magbalik sa pormularyo ng pagkakarga',
+'upload-tryagain' => 'Ipasa ang binagong paglalarawan ng talaksan',
'uploadnologin' => 'Hindi nakalagda',
'uploadnologintext' => 'Dapat ikaw ay [[Special:UserLogin|nakalagda]]
upang makapagkarga ng talaksan.',
@@ -1417,6 +1481,7 @@ Para maisama ang isang talaksan sa loob ng isang pahina, gumamit ng isang kawing
'minlength1' => 'Dapat may kahit na isang titik lang ang mga pangalan ng talaksan.',
'illegalfilename' => 'Ang pangalan ng talaksan (filename) na "$1" ay mayroon mga karakter na hindi pinapahintulot bilang pamagat ng isang pahina. Paki palitan ang pangalan at subukang ikarga muli.',
'badfilename' => 'Pinalitan ang pangalan ng talaksan na naging "$1".',
+'filetype-mime-mismatch' => 'Hindi tumutugma ang dugtong ng talaksan sa uri ng MIME.',
'filetype-badmime' => 'Hindi pinapahintulutang maikarga ang uring "$1" ng mga talaksang MIME.',
'filetype-bad-ie-mime' => 'Hindi maikarga ang talaksang ito dahil mapapansin/mapupuna ito ng Internet Explorer bilang "$1",
na hindi pinapahintulutan at maaaring isang mapanganib na uri ng talaksan.',
@@ -1439,7 +1504,6 @@ Para lumitaw ang buod mo doon, kailangan mong kinakamay na baguhin ito.
* Pangalan ng ikakargang talaksan: '''<tt>[[:$1]]</tt>'''
* Pangalan ng mayroon nang talaksan: '''<tt>[[:$2]]</tt>'''
Pumili ng ibang pangalan.",
-'fileexists-thumb' => "<center>'''Umiiral na talaksan'''</center>",
'fileexists-thumbnail-yes' => "Mukhang pinaliit ''(thumbnail)'' na larawan ang talaksan. [[$1|thumb]]
Paki tingin ang talaksan '''<tt>[[:$1]]</tt>'''.
Kung ang tinignan na talaksan ay ang kaparehong larawan ng orihinal na laki, hindi na kailangang magkarga ng panibagong ''thumbnail''.",
@@ -1454,6 +1518,7 @@ bumalik at ikarga ang talaksan na ito sa bagong pangalan. [[File:$1|thumb|center
'file-deleted-duplicate' => 'Dating nabura ang isang talaksang katulad ng talaksang ito ([[$1]]). Dapat mong suriin ang kasaysayan ng pagbubura ng talaksang iyon bago magpatuloy sa muling pagkarga nito.',
'successfulupload' => 'Matagumpay na pagkakarga',
'uploadwarning' => 'Babala sa pagkakarga',
+'uploadwarning-text' => 'Pakibago ang nasa ibabang paglalarawan ng talaksan at subukan muli.',
'savefile' => 'Sagipin ang talaksan',
'uploadedimage' => 'ikinarga ang "[[$1]]"',
'overwroteimage' => 'nagkarga ng isang bagong bersyon ng "[[$1]]"',
@@ -1461,11 +1526,14 @@ bumalik at ikarga ang talaksan na ito sa bagong pangalan. [[File:$1|thumb|center
'uploaddisabledtext' => 'Hindi pinagana ang mga pagkakarga ng talaksan.',
'php-uploaddisabledtext' => 'Hindi pinapagana ang mga pagkakarga ng talaksang PHP. Pakisuri ang katakdaan ng mga_pagkakarga_ng_talaksan.',
'uploadscripted' => 'Naglalaman ang talaksan na ito ng HTML o kodigong script na maaaring mali ang pagkaintindi ng isang web browser.',
-'uploadcorrupt' => 'Sira o may maling ekstensyon ang talaksan. Paki tingin ang talaksan at ikarga muli.',
'uploadvirus' => 'Naglalaman ng virus ang talaksan! Mga detalye: $1',
+'upload-source' => 'Pinagmulang talaksan',
'sourcefilename' => 'Pangalan ng panggagalingang talaksan:',
+'sourceurl' => 'Pinagmulang URL:',
'destfilename' => 'Pangalan ng patutunguhang talaksan:',
'upload-maxfilesize' => 'Pinakamataas na sukat ng talaksan: $1',
+'upload-description' => 'Paglalarawan ng talaksan',
+'upload-options' => 'Ikargang pataas ang mga pagpipilian',
'watchthisupload' => 'Bantayan ang talaksang ito',
'filewasdeleted' => 'Isang talaksan na may ganitong pangalan ay naikarga dati at nabura. Kailangan mong tingnan ang $1 bago magpatuloy sa pagkarga nito muli.',
'upload-wasdeleted' => "'''Babala: Kinakarga mo ang isang talaksan na nabura na.'''
@@ -1474,14 +1542,45 @@ Ikunsidera mo kung nararapat ba na ipagpatuloy ang pagkarga ng talaksang ito.
Ibinigay ang tala ng pagbura ng talaksang ito para konbinyente:",
'filename-bad-prefix' => "Ang talaksan na ikakarga mo ay nagsisimula sa '''\"\$1\"''', na isang hindi naglalarawang pangalan na karaniwang tinatakda ng mga kamerang digital. Paki pili ang isang mas naglalarawang pangalan para sa iyong talaksan.",
-'upload-proto-error' => 'Maling protokolo',
-'upload-proto-error-text' => 'Nangangailangan ang malayong pagkarga ng mga URL na nagsisimula sa <code>http://</code> o <code>ftp://</code>.',
-'upload-file-error' => 'Panloob na kamalian',
-'upload-file-error-text' => 'Isang panloob na kamalian ang nangyari nang sinubukang likhain ang isang pansamantalang talaksan sa ibabaw ng tagapaghain. Makipag-ugnayan sa isang [[Special:ListUsers/sysop|tagapangasiwa]].',
-'upload-misc-error' => 'Hindi nalalamang kamalian sa pagkakarga',
-'upload-misc-error-text' => 'Naganap ang isang hindi nalalamang kamalian sa panahon ng pagkakarga.
+'upload-proto-error' => 'Maling protokolo',
+'upload-proto-error-text' => 'Nangangailangan ang malayong pagkarga ng mga URL na nagsisimula sa <code>http://</code> o <code>ftp://</code>.',
+'upload-file-error' => 'Panloob na kamalian',
+'upload-file-error-text' => 'Isang panloob na kamalian ang nangyari nang sinubukang likhain ang isang pansamantalang talaksan sa ibabaw ng tagapaghain. Makipag-ugnayan sa isang [[Special:ListUsers/sysop|tagapangasiwa]].',
+'upload-misc-error' => 'Hindi nalalamang kamalian sa pagkakarga',
+'upload-misc-error-text' => 'Naganap ang isang hindi nalalamang kamalian sa panahon ng pagkakarga.
Pakisuri kung katanggap-tanggap at mapupuntahan ang URL at subukin uli.
Kapag nagpatuloy ang suliranin, makipagugnayan sa isang [[Special:ListUsers/sysop|tagapangasiwa]].',
+'upload-too-many-redirects' => 'Naglalaman ng napakaraming panlipat ng pupuntahan ang URL',
+'upload-unknown-size' => 'Hindi nalalamang laki',
+'upload-http-error' => 'Naganap ang isang kamaliang pang-HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Hindi pinayagan ang pagpunta',
+'img-auth-nopathinfo' => 'Nawawalang PATH_INFO.
+Ang tagapaghain mo ay hindi nakatakdang na maipasa ang kabatirang ito.
+Maaaring pang-CGI ito at hindi makatangkilik ng img_auth.
+Tingnan ang http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Ang hiniling na daan ay wala sa loob ng isinaayos na direktoryo ng pagkarga.',
+'img-auth-badtitle' => 'Hindi nagawang makabuo ng tanggap na pamagat mula sa "$1".',
+'img-auth-nologinnWL' => 'Hindi ka nakalagda at ang "$1" ay wala sa puting talaan.',
+'img-auth-nofile' => 'Hindi umiiral ang talaksang "$1".',
+'img-auth-isdir' => 'Sinusubok mong puntahan ang direktoryong "$1".
+Tanging ang pagpunta lang sa talaksan ang pinapayagan.',
+'img-auth-streaming' => 'Pinapaagos ang "$1".',
+'img-auth-public' => 'Ang tungkulin ng img_auth.php ay maglabas ng mga talaksan mula sa isang pribadong wiki.
+Isinaayos ang wiking ito bilang isang pampublikong wiki.
+Para sa pinakamatatag na kaligtasan, hindi pinagana ang img_auth.php.',
+'img-auth-noread' => 'Hindi makakapunta ang tagagamit para mabasa ang "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Hindi tanggap na URL: $1',
+'http-invalid-scheme' => 'Hindi tinatangkilik ang mga URL na may panukalang "$1".',
+'http-request-error' => 'Nabigo ang kahilingang HTTP dahil sa hindi kilalang kamalian.',
+'http-read-error' => 'Kamalian sa pagbasa ng HTTP.',
+'http-timed-out' => 'Huminto ang kahilingang HTTP.',
+'http-curl-error' => 'Kamalian sa pagsalok ng URL: $1',
+'http-host-unreachable' => 'Hindi marating ang URL.',
+'http-bad-status' => 'Nagkaroon ng suliranin habang hinihiling ang HTTP na: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Hindi marating ang URL',
@@ -1493,6 +1592,7 @@ Pakisuri kung buhay ang sayt, maghintay ng kaunti at subukin uli.
Maaaring ibigin mong subukin uli sa isang hindi gaanong abalang panahon.',
'license' => 'Paglilisensya:',
+'license-header' => 'Paglilisensya',
'nolicense' => 'Walang napili',
'license-nopreview' => '(Walang makuhang paunang tingin)',
'upload_source_url' => ' (isang tanggap at napupuntahan ng publikong URL)',
@@ -1513,6 +1613,7 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
'listfiles_count' => 'Mga bersyon',
# File description page
+'file-anchor-link' => 'Talaksan',
'filehist' => 'Kasaysayan ng talaksan',
'filehist-help' => 'Pindutin ang isang petsa/oras para makita ang anyo ng talaksan noong panahong iyon.',
'filehist-deleteall' => 'burahin lahat',
@@ -1527,6 +1628,7 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
'filehist-dimensions' => 'Mga sukat',
'filehist-filesize' => 'Sukat ng talaksan',
'filehist-comment' => 'Puna/Kumento',
+'filehist-missing' => 'Nawawala ang talaksan',
'imagelinks' => 'Mga kawing ng talaksan',
'linkstoimage' => 'Nakakawing ang sumusunod na {{PLURAL:$1|pahina|$1 mga pahina}} sa talaksang ito.',
'linkstoimage-more' => 'Mahigit sa $1 {{PLURAL:$1|pahina|mga pahina}} ang nakakawing sa talaksang ito.
@@ -1536,15 +1638,16 @@ Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
'morelinkstoimage' => 'Tingnan ang [[Special:WhatLinksHere/$1|mas marami pang mga kawing]] para sa pahinang ito.',
'redirectstofile' => 'Tumuturo ang sumusunod na {{PLURAL:$1|talaksan|$1 mga talaksan}} patungo sa talaksang ito:',
'duplicatesoffile' => 'Ang sumusunod na {{PLURAL:$1|file is a duplicate|$1 mga talaksan ay mga kapareho}} ng talaksang ito ([[Special:FileDuplicateSearch/$2|mas marami pang mga detalye]]):',
-'sharedupload' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin ng iba pang mga proyekto.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Pakitingnan ang $1 para sa mas marami pang kabatiran.',
-'shareduploadwiki-desc' => 'Ang paglalarawang nasa ibabaw ng $1 nito roon ay ipinapakita sa ibaba.',
-'shareduploadwiki-linktext' => 'pahina ng paglalarawan sa talaksan',
-'noimage' => 'Walang talaksan na may ganitong pangalan, subalit maaari kang $1.',
-'noimage-linktext' => 'magkarga ng isa',
+'sharedupload' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin ng iba pang mga proyekto.',
+'sharedupload-desc-there' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
+Pakitingnan ang [$2 pahina ng paglalarawan ng talaksan] para sa iba pang kabatiran.',
+'sharedupload-desc-here' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
+Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito doon ay ipinapakita sa ibaba.',
+'filepage-nofile' => 'Walang talaksang umiiral sa pangalang ito.',
+'filepage-nofile-link' => 'Walang talaksang umiiral sa pangalang ito, ngunit maaari mong [$1 kargahin ito].',
'uploadnewversion-linktext' => 'Magkarga ng isang bagong bersyon ng talaksang ito',
-'shared-repo-from' => 'mula sa $1', # $1 is the repository name
-'shared-repo' => 'isang pinagsasaluhang repositoryo', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'mula sa $1',
+'shared-repo' => 'isang pinagsasaluhang repositoryo',
# File reversion
'filerevert' => 'Ibalik sa dati ang $1',
@@ -1575,6 +1678,7 @@ Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
** Paglabag sa karapatang-ari
** Nagkadalawang talaksan',
'filedelete-edit-reasonlist' => 'Baguhin ang mga dahilan ng pagbura',
+'filedelete-maintenance' => 'Pansamantalang hindi pinagana ang pagbura at pagpapnumbalik ng mga talaksan habang nagpapanatili ng kaayusan.',
# MIME search
'mimesearch' => 'Maghanap ng MIME',
@@ -1595,7 +1699,7 @@ Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
# Random page
'randompage' => 'Pahinang walang-pili',
-'randompage-nopages' => 'Walang mga pahina sa pangalan-espasyong "$1".',
+'randompage-nopages' => 'Walang mga pahina sa sumusunod na {{PLURAL:$2|ngalan-espasyo|mga ngalan-espasyo}}: $1.',
# Random redirect
'randomredirect' => 'Alinmang panuto',
@@ -1607,6 +1711,7 @@ Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
'statistics-header-edits' => 'Baguhin ang mga estadistika',
'statistics-header-views' => 'Tingnan ang mga estadistika',
'statistics-header-users' => 'Mga estadistika sa mga tagagamit',
+'statistics-header-hooks' => 'Ibang mga estadistika',
'statistics-articles' => 'Mga pahina ng nilalaman',
'statistics-pages' => 'Mga pahina',
'statistics-pages-desc' => 'Lahat ng mga pahina sa loob ng wiki, kabilang ang mga pahina ng usapan, mga panuto, atbp.',
@@ -1635,8 +1740,8 @@ Nasugpo na ang mga ipinasok na <s>inekisan</s>.',
'brokenredirects' => 'Bali/putol na mga panuto o panturo',
'brokenredirectstext' => 'Ang sumusunod na mga panturo papunta sa ibang pahina ay kumakawing patungo sa mga pahinang hindi pa umiiral.',
-'brokenredirects-edit' => '(baguhin)',
-'brokenredirects-delete' => '(burahin)',
+'brokenredirects-edit' => 'baguhin',
+'brokenredirects-delete' => 'burahin',
'withoutinterwiki' => 'Mga pahinang walang mga ugnay pang-wika',
'withoutinterwiki-summary' => 'Walang ugnay ang mga sumusunod ng pahina sa mga ibang bersyon na wika:',
@@ -1744,16 +1849,17 @@ Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri
# Special:Categories
'categories' => 'Mga kategorya',
-'categoriespagetext' => 'Naglalaman ang sumusunod na mga kaurian (kategorya) ng mga pahina o midya.
-Hindi ipinapakita rito ang [[Special:UnusedCategories|mga kauriang hindi ginagamit]].
-Tingnan din ang [[Special:WantedCategories|ninanais na mga kaurian]].',
+'categoriespagetext' => 'Naglalaman ang sumusunod na {{PLURAL:$1|kategorya|mga kategorya}} ng mga pahina o midya.
+Hindi ipinapakita rito ang [[Special:UnusedCategories|mga kategoryang hindi ginagamit]].
+Tingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].',
'categoriesfrom' => 'Ipakita ang mga kategoryang nagsisimula sa:',
'special-categories-sort-count' => 'ayusin sa pamamagitan ng bilang',
'special-categories-sort-abc' => 'ayusin sa pamamagitan ng alpabeto',
# Special:DeletedContributions
-'deletedcontributions' => 'Naburang ambag ng tagagamit',
-'deletedcontributions-title' => 'Naburang ambag ng tagagamit',
+'deletedcontributions' => 'Naburang ambag ng tagagamit',
+'deletedcontributions-title' => 'Naburang ambag ng tagagamit',
+'sp-deletedcontributions-contribs' => 'mga ambag',
# Special:LinkSearch
'linksearch' => 'Panlabas na mga kawing',
@@ -1769,6 +1875,16 @@ Sinusuportahang mga protokolo: <tt>$1</tt>',
'listusersfrom' => 'Ipakita ang mga tagagamit na nagsisimula sa:',
'listusers-submit' => 'Ipakita',
'listusers-noresult' => 'Walang nahanap na tagagamit.',
+'listusers-blocked' => '(hinarang)',
+
+# Special:ActiveUsers
+'activeusers' => 'Tala ng mga aktibong tagagamit',
+'activeusers-intro' => 'Isa itong talaan ng mga tagagamit na nagkaroon ng ilang uri ng galaw sa loob ng huling $1 {{PLURAL:$1|araw|mga araw}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}} sa loob ng huling {{PLURAL:$3|araw|$3 mga araw}}',
+'activeusers-from' => 'Ipakita ang mga tagagamit simula sa:',
+'activeusers-hidebots' => 'Itago ang mga bots',
+'activeusers-hidesysops' => 'Itago ang mga tagapangasiwa',
+'activeusers-noresult' => 'Walang natagpuang mga tagagamit.',
# Special:Log/newusers
'newuserlogpage' => 'Talaan ng paglikha ng tagagamit',
@@ -1779,17 +1895,22 @@ Sinusuportahang mga protokolo: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Awtomatikong nalikha ang akawnt',
# Special:ListGroupRights
-'listgrouprights' => 'Mga uri ng tagagamit',
-'listgrouprights-summary' => 'Ang sumusunod ay isang talaan ng mga pangkat ng tagagamit na binigyang kahulugang sa wiking ito, kasama ang kanilang mga kaugnay na mga karapatan.
+'listgrouprights' => 'Mga uri ng tagagamit',
+'listgrouprights-summary' => 'Ang sumusunod ay isang talaan ng mga pangkat ng tagagamit na binigyang kahulugang sa wiking ito, kasama ang kanilang mga kaugnay na mga karapatan.
Maaaring may mga [[{{MediaWiki:Listgrouprights-helppage}}|karagdagang kabatiran]] tungkol sa bawat isang mga karapatan sa [[{{MediaWiki:Listgrouprights-helppage}}]].',
-'listgrouprights-group' => 'Pangkat',
-'listgrouprights-rights' => 'Mga karapatan',
-'listgrouprights-helppage' => 'Help:Mga pangkat ng karapatan',
-'listgrouprights-members' => '(tala ng mga kasapi)',
-'listgrouprights-addgroup' => 'Maaaring idagdag ang {{PLURAL:$2|pangkat|mga pangkat}} na: $1',
-'listgrouprights-removegroup' => 'Maaaring tanggalin ang {{PLURAL:$2|pangkat|mga pangkat}} na: $1',
-'listgrouprights-addgroup-all' => 'Maaaring idagdag ang lahat ng mga pangkat',
-'listgrouprights-removegroup-all' => 'Maaaring tanggalin ang lahat ng mga pangkat',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Ipinagkaloob na karapatan</span> * <span class="listgrouprights-revoked">Nabawing karapatan</span>',
+'listgrouprights-group' => 'Pangkat',
+'listgrouprights-rights' => 'Mga karapatan',
+'listgrouprights-helppage' => 'Help:Mga pangkat ng karapatan',
+'listgrouprights-members' => '(tala ng mga kasapi)',
+'listgrouprights-addgroup' => 'Maaaring idagdag ang {{PLURAL:$2|pangkat|mga pangkat}} na: $1',
+'listgrouprights-removegroup' => 'Maaaring tanggalin ang {{PLURAL:$2|pangkat|mga pangkat}} na: $1',
+'listgrouprights-addgroup-all' => 'Maaaring idagdag ang lahat ng mga pangkat',
+'listgrouprights-removegroup-all' => 'Maaaring tanggalin ang lahat ng mga pangkat',
+'listgrouprights-addgroup-self' => 'Idagdag ang {{PLURAL:$2|pangkat|mga pangkat}} na magmamay-ari ng akawnt: $1',
+'listgrouprights-removegroup-self' => 'Tanggalin ang {{PLURAL:$2|pangkat|mga pangkat}} mula sa sariling akawnt: $1',
+'listgrouprights-addgroup-self-all' => 'Idagdag ang lahat ng mga pangkat sa sariling akawnt',
+'listgrouprights-removegroup-self-all' => 'Alisin ang lahat ng mga pangkat mula sa sariling akawnt',
# E-mail user
'mailnologin' => 'Walang adres na mapagpapadalahan',
@@ -1864,7 +1985,7 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
'enotif_body' => 'Mahal na $WATCHINGUSERNAME,
-Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang bersyon.
+Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
$NEWPAGE
@@ -1875,13 +1996,13 @@ liham: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
Wala nang iba pang mga pagpapahayag sa pagkakataon ng pagkakaroon ng karagdagang mga pagbabago maliban na lamang kung dadalawin mo ang pahinang ito.
-Maaari mo ring muling itakda ang mga watawat (mga \'\'flag\'\') na pangpaguulat para sa lahat ng mga pahinang binabantayan mo sa iyong talaan ng mga binabantayan.
+Maaari mo ring muling itakda ang mga watawat na pangpag-uulat para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
- Ang iyong palakaibigang sistemang pangpaguulat ng {{SITENAME}}
+ Ang iyong palakaibigang sistemang pangpag-uulat ng {{SITENAME}}
--
-Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, dalawin ang
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan ang
+$UNWATCHURL
Balik-tugon at karagdagang tulong:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1895,10 +2016,11 @@ Balik-tugon at karagdagang tulong:
'exblank' => 'walang laman ang pahina',
'delete-confirm' => 'Burahin "$1"',
'delete-legend' => 'Burahin',
-'historywarning' => 'Babala: May kasaysayan ang pahinang buburahin mo:',
+'historywarning' => "'''Babala''': May kasaysayan ang pahinang buburahin mo na tinatayang may $1 {{PLURAL:$1|pagbabago|mga pagbabago}}:",
'confirmdeletetext' => 'Lubos mo nang buburahin ang pahinang ito pati ang kalahatan ng kasaysayan nito.
Pakitiyak lamang na ito ang nais mong gawin, na nauunawaan mo ang mga kahihinatnan, at ginagawa mo ito alinsunod sa [[{{MediaWiki:Policy-url}}|patakaran]].',
'actioncomplete' => 'Naisakatuparan na ang gawain',
+'actionfailed' => 'Hindi nagtagumpay ang galaw',
'deletedtext' => 'Nabura na ang "$1". Tingnan ang $2 para sa talaan ng kamakailan lamang na mga pagbubura.',
'deletedarticle' => 'binura ang "[[$1]]"',
'suppressedarticle' => 'pinigil/sinupil ang "[[$1]]"',
@@ -1921,19 +2043,20 @@ Maaaring makagambala/makaabala sa pagpapatakbo sa kalipunan ng dato ng {{SITENAM
magpatuloy na may pagiingat.',
# Rollback
-'rollback' => 'Mga pagbabagong may kaugnayan sa pagpapagulong na pabalik sa (mas) dati',
-'rollback_short' => 'Pagulunging pabalik sa (mas) dati',
-'rollbacklink' => 'pagulunging pabalik sa (mas) dati',
-'rollbackfailed' => 'Nabigo ang pagpapagulong na pabalik sa (mas) dati',
-'cantrollback' => 'Hindi maibalik ang pagbabago; tanging ang may-akda lamang ng pahinang ito ang huling tagapagambag/tagapaglathala.',
-'alreadyrolled' => 'Hindi mapagulong na pabalik sa dati ang huling pagbabago ng [[$1]] ni ([[User talk:$2|Usapan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+'rollback' => 'Mga pagbabagong may kaugnayan sa pagpapagulong na pabalik sa (mas) dati',
+'rollback_short' => 'Pagulunging pabalik sa (mas) dati',
+'rollbacklink' => 'pagulunging pabalik sa (mas) dati',
+'rollbackfailed' => 'Nabigo ang pagpapagulong na pabalik sa (mas) dati',
+'cantrollback' => 'Hindi maibalik ang pagbabago; tanging ang may-akda lamang ng pahinang ito ang huling tagapagambag/tagapaglathala.',
+'alreadyrolled' => 'Hindi mapagulong na pabalik sa dati ang huling pagbabago ng [[$1]] ni ([[User talk:$2|Usapan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
mayroon nang ibang taong nagbago o nagpagulong pabalik sa dati ng pahina.
Ang huling pagbabago sa pahina ay ginawa ni [[User:$3|$3]] ([[User talk:$3|Usapan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ang buod ng pagbabago ay: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Ibinalik ang mga pagbabago ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Usapan]]) patungo sa huling rebisyon ni [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Ibinalik ang mga pagbabago ni $1; ibinalik sa huling bersyon ni $2.',
-'sessionfailure' => "Tila mayroong suliraning may kaugnayan sa iyong sesyon/panahon ng pagkakalagda;
+'editcomment' => "Ang buod ng pagbabago ay: \"''\$1''\".",
+'revertpage' => 'Ibinalik ang mga pagbabago ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Usapan]]) patungo sa huling rebisyon ni [[User:$1|$1]]',
+'revertpage-nouser' => 'Ibinalik ang mga pagbabago ni (tinanggal ang bansag) patungo sa huling rebisyon ni [[User:$1|$1]]',
+'rollback-success' => 'Ibinalik ang mga pagbabago ni $1; ibinalik sa huling bersyon ni $2.',
+'sessionfailure' => "Tila mayroong suliraning may kaugnayan sa iyong sesyon/panahon ng pagkakalagda;
Kinansela ang galaw/gawaing ito bilang pagiingat laban sa pagnanakaw (panghahaydyak) ng sesyon/panahon.
Pakipindot ang pindutang \"ibalik\" (''back'') at ikarga uli ang pinanggalingan mong pahina, sumubok uli pagkaraan.",
@@ -1953,7 +2076,7 @@ Tingnan ang [[Special:ProtectedPages|talaan ng nakasanggalang na mga pahina]] pa
'protectexpiry' => 'Magtatapos sa:',
'protect_expiry_invalid' => 'Hindi tanggap/hindi tama ang oras ng pagtatapos.',
'protect_expiry_old' => 'Nasa nakaraan ang oras ng pagtatapos.',
-'protect-unchain' => 'Tanggalin sa pagkakakandado ang mga pahintulot sa paglilipat',
+'protect-unchain-permissions' => 'Huwag ikandado ang iba pang mga pagpipilian ng pagprutekta',
'protect-text' => "Maaari mong tingnan at baguhin dito ang antas ng pananananggalang para sa pahinang '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Hindi mo maaaring baguhin ang mga antas ng panananggalang habang may pagharang/paghadlang.
Narito ang mga pangkasalukuyang pagtatakda para sa pahinang '''$1''':",
@@ -1983,7 +2106,7 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
** Hindi kapakipakinabang na alitan hinggil sa pagbabago
** Pahinang may mataas na antas ng daloy (matrapik)",
'protect-edit-reasonlist' => 'Mga dahilan ng panananggalang laban sa pagbabago',
-'protect-expiry-options' => '1 oras:1 hour,1 araw:1 day,1 linggo:1 week,2 linggo:2 weeks,1 buwan:1 month,3 buwan:3 months,6 buwan:6 months,1 taon:1 year,walang hanggan:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 oras:1 hour,1 araw:1 day,1 linggo:1 week,2 linggo:2 weeks,1 buwan:1 month,3 buwan:3 months,6 buwan:6 months,1 taon:1 year,walang hanggan:infinite',
'restriction-type' => 'Pahintulot:',
'restriction-level' => 'Antas ng kabawalan:',
'minimum-size' => 'Pinakamaliit na sukat',
@@ -2022,6 +2145,7 @@ Sa ganitong mga pagkakataon, dapat mong tanggalin ang tsek o huwag itago ang pin
'undelete-nodiff' => 'Walang mahanap na nakaraang pagbabago.',
'undeletebtn' => 'Ibalik',
'undeletelink' => 'tingnan/ibalik muli',
+'undeleteviewlink' => 'tingnan',
'undeletereset' => 'I-reset',
'undeleteinvert' => 'Baligtarin ang pagpili/pilian',
'undeletecomment' => 'Dahilan:',
@@ -2059,19 +2183,24 @@ $1',
'contributions-title' => 'Mga ambag ng tagagamit na si $1',
'mycontris' => 'Aking mga ginawa',
'contribsub2' => 'Para kay $1 ($2)',
-'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.',
'uctop' => ' (itaas)',
'month' => 'Mula sa buwan (at nauna):',
'year' => 'Mula sa taon (at nauna):',
-'sp-contributions-newbies' => 'Ipakita ang mga ambag ng mga bagong kuwenta lamang',
-'sp-contributions-newbies-sub' => 'Para sa mga bagong kuwenta',
-'sp-contributions-newbies-title' => 'Mga ambag ng tagagamit para sa mga bagong kuwenta/akawnt',
-'sp-contributions-blocklog' => 'Tala ng paglipat',
-'sp-contributions-logs' => 'mga tala',
-'sp-contributions-search' => 'Maghanap ng ambag',
-'sp-contributions-username' => 'IP Address o bansag:',
-'sp-contributions-submit' => 'Hanapin',
+'sp-contributions-newbies' => 'Ipakita ang mga ambag ng mga bagong kuwenta lamang',
+'sp-contributions-newbies-sub' => 'Para sa mga bagong kuwenta',
+'sp-contributions-newbies-title' => 'Mga ambag ng tagagamit para sa mga bagong kuwenta/akawnt',
+'sp-contributions-blocklog' => 'Tala ng paglipat',
+'sp-contributions-deleted' => 'naburang mga ambag ng tagagamit',
+'sp-contributions-logs' => 'mga tala',
+'sp-contributions-talk' => 'usapan',
+'sp-contributions-userrights' => 'pamamahala ng mga karapatan ng tagagamit',
+'sp-contributions-blocked-notice' => 'Kasalukuyang hinarang ang tagagamit na ito.
+Ang pinakahuling entrada sa talaan ng pagharang ay ibinigay sa ibaba para sa pagsangguni:',
+'sp-contributions-search' => 'Maghanap ng ambag',
+'sp-contributions-username' => 'IP Address o bansag:',
+'sp-contributions-submit' => 'Hanapin',
# What links here
'whatlinkshere' => 'Mga nakaturo dito',
@@ -2094,6 +2223,7 @@ $1',
# Block/unblock
'blockip' => 'Harangin/hadlangan ang tagagamit',
+'blockip-title' => 'Harangin ang tagagamit',
'blockip-legend' => 'Iharang ang tagagamit',
'blockiptext' => 'Gamitin ang mga lahok sa ibaba upang maharang ang akses sa pagsulat mula sa isang espesipikong IP address o bansag.
Gawin lamang ito para maiwasan ang bandalismo, at napapaloob sa [[{{MediaWiki:Policy-url}}|patakaran]].
@@ -2117,7 +2247,7 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
'ipbenableautoblock' => 'Kusang harangin/hadlangan ang huling adres ng IP na ginamit ng tagagamit na ito, at anumang susunod pang mga IP na susubukan nilang gamitin para makapagbago/mamatnugot',
'ipbsubmit' => 'Harangin/hadlangan ang tagagamit na ito',
'ipbother' => 'Ibang oras:',
-'ipboptions' => '2 oras:2 hours,1 araw:1 day,3 araw:3 days,1 linggo:1 week,2 linggo:2 weeks,1 buwan:1 month,3 buwan:3 months,6 buwan:6 months,1 taon:1 year,walang hanggan:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 oras:2 hours,1 araw:1 day,3 araw:3 days,1 linggo:1 week,2 linggo:2 weeks,1 buwan:1 month,3 buwan:3 months,6 buwan:6 months,1 taon:1 year,walang hanggan:infinite',
'ipbotheroption' => 'iba',
'ipbotherreason' => 'Iba/karagdagang dahilan:',
'ipbhidename' => 'Itago ang pangalan ng tagagamit mula sa pagbabago at mga talaan',
@@ -2146,9 +2276,11 @@ Tingnan ang [[Special:IPBlockList|talaan ng mga hinadlangang IP]] upang makita a
'ipblocklist-sh-tempblocks' => '$1 pansamantalang mga pagharang/paghadlang',
'ipblocklist-sh-addressblocks' => '$1 isahang pagharang/paghalang sa IP',
'ipblocklist-submit' => 'Hanapin',
+'ipblocklist-localblock' => 'Lokal na pagharang',
+'ipblocklist-otherblocks' => 'Ibang {{PLURAL:$1|harang|mga harang}}',
'blocklistline' => '$1, $2 hinarang si $3 (magtatapos sa $4)',
'infiniteblock' => 'walang katapusan',
-'expiringblock' => 'Magtatapos sa $1',
+'expiringblock' => 'magtatapos sa $1 sa ganap na $2',
'anononlyblock' => 'di kilala lamang',
'noautoblockblock' => 'hindi gumagana ang awtomatikong pagharang',
'createaccountblock' => 'Hinarang ang paglikha ng akawnt',
@@ -2163,7 +2295,10 @@ Tingnan ang [[Special:IPBlockList|talaan ng mga hinadlangang IP]] upang makita a
'autoblocker' => 'Kusang hinarang dahil ang iyong adres ng IP ay kamakailan lamang na ginamit ni "[[User:$1|$1]]".
Ang dahilang ibinigay para sa pagharang kay $1 ay: "$2"',
'blocklogpage' => 'Tala ng pagharang',
-'blocklog-fulllog' => 'Talaan ng lubos/ganap na pagharang o paghadlang',
+'blocklog-showlog' => 'Dati nang naharang ang tagagamit na ito.
+Ibinigay sa ibaba ang talaan ng pagharang upang mapagsanggunian:',
+'blocklog-showsuppresslog' => 'Hinadlangang ang tagagamit na ito at dati nang itinago.
+Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
'blocklogentry' => 'hinarang/hinadlangan si [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
@@ -2184,9 +2319,11 @@ Tingnan ang [[Special:IPBlockList|talaan ng mga hinarang na/hinadlangang IP]] pa
'ipb_already_blocked' => 'Nakaharang na ang "$1"',
'ipb-needreblock' => '== Hinarang/hinadlangan na ==
Hinarang/hinadlangan na si $1. Ibig mo bang baguhin ang mga pagtatakda?',
+'ipb-otherblocks-header' => 'Ibang {{PLURAL:$1|harang|mga harang}}',
'ipb_cant_unblock' => 'Kamalian: Hindi natagpuan ang ID ng pagharang/paghadlang na $1. Maaaring natanggal na ang pagkakaharang nito/paghahadlang dito.',
'ipb_blocked_as_range' => 'Mali: Hindi diretsong nakaharang ang IP na $1 at hindi maaaring tanggalin sa pagkakaharang. Bagaman, bahagi ito sa sakop na $2, na maaaring tanggalin sa pagkaharang.',
'ip_range_invalid' => 'Hindi tamang sakop ng IP.',
+'ip_range_toolarge' => 'Hindi pinapayagan ang mga saklaw ng pagharang na mas malaki kaysa /$1.',
'blockme' => 'Harangin ako',
'proxyblocker' => 'Pangharang ng proxy',
'proxyblocker-disabled' => 'Nakapatay ang pagharang sa proxy.',
@@ -2195,6 +2332,8 @@ Hinarang/hinadlangan na si $1. Ibig mo bang baguhin ang mga pagtatakda?',
'sorbsreason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito.',
'sorbs_create_account_reason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito. Hindi ka makakalikha ng akawnt',
'cant-block-while-blocked' => 'Hindi mo mahahadlangan/mahaharang ang ibang mga tagagamit habang hinahadlangan ka.',
+'cant-see-hidden-user' => 'Ang tagagamit na sinusubukan mong hadlangan ay naharang at naikubli na.
+Dahil wala kang karapatang magkubli ng tagagamit, hindi mo makikita o mababago ang paghadlang sa tagagamit.',
# Developer tools
'lockdb' => 'Ikandado ang kalipunan ng datos',
@@ -2239,6 +2378,7 @@ pakitiyak na nauunawaan mo ang mga kahihinatnan nito bago magpatuloy.",
Sa mga kasong ganoon, kailangan mong ilipat o pagsamahin/pagsanibin ang pahina sa manwal o kinakamay na paraan kung nanaisin.",
'movearticle' => 'Ilipat ang pahina:',
+'moveuserpage-warning' => "'''Babala:''' Ililipat mo ang isang pahina ng tagagamit. Pakitandaan na tanging ang pahina lamang ang malilipat at ''hindi'' babaguhin ang pangalan ng tagagamit.",
'movenologin' => 'Hindi nakalagda',
'movenologintext' => 'Dapat na isa kang nagpatalang tagagamit at [[Special:UserLogin|nakalagdang papasok]] upang makapaglipat ng isang pahina.',
'movenotallowed' => 'Wala kang permisong maglipat ng pahina.',
@@ -2249,7 +2389,7 @@ Sa mga kasong ganoon, kailangan mong ilipat o pagsamahin/pagsanibin ang pahina s
'move-watch' => 'Bantayan ang pahinang ito',
'movepagebtn' => 'Ilipat ang pahina',
'pagemovedsub' => 'Matagumpay ang paglipat',
-'movepage-moved' => '\'\'\'Inilipat ang "$1" patungo sa "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'Inilipat ang "$1" patungo sa "$2"\'\'\'',
'movepage-moved-redirect' => 'Nalikha ang isang panturo patungo sa ibang pahina.',
'movepage-moved-noredirect' => 'Pinigilan ang paglikha ng isang panturo.',
'articleexists' => 'May umiiral nang pahinang may ganyang pangalan, o ang
@@ -2292,6 +2432,14 @@ Mayroon na ang pupuntahang artikulo na "[[$1]]". Nais mo bang burahin ito para m
'imageinvalidfilename' => 'Hindi tanggap ang patutunguhan/puntiryang pangalan ng talaksan.',
'fix-double-redirects' => 'Isapanahon ang kahit anong panuto/panutong tumuturo sa orihinal na pamagat',
'move-leave-redirect' => 'Mag-iwan ng isang panturo',
+'protectedpagemovewarning' => "'''Babala:''' Ikinandado ang pahinang ito upang mga tagagamit lamang na may karapatan ng tagapangasiwa ang makakapaglipat nito.
+Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa iyong pagsasangguni:",
+'semiprotectedpagemovewarning' => "'''Paunawa:''' Ikinandado ang pahinang ito upang mga nakatalang tagagamit lamang ang makakapaglipat nito.
+Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa iyong pagsasangguni:",
+'move-over-sharedrepo' => '== Umiiral ang talaksan ==
+Umiiral ang [[:$1]] sa tabihang ipinamamahagi. Masasapawan ang ipinamamahaging talaksan kapag inilipat ang isang talaksan sa ganitong pamaagat.',
+'file-exists-sharedrepo' => 'Ang piniling pangalan ng talaksan ay ginagamit na sa isang binabahaging repositoryo.
+Pumili lang po ng ibang pangalan.',
# Export
'export' => 'Iluwas/ipadala ang mga pahina',
@@ -2313,15 +2461,21 @@ Sa huling kaso, maaari mong gumamit ng ungay, hal. [[{{#Special:Export}}/{{Media
'export-pagelinks' => 'Isama ang nakakawing na mga pahina magpahanggang sa isang lalim na:',
# Namespace 8 related
-'allmessages' => 'Mga mensaheng pansistema',
-'allmessagesname' => 'Pangalan',
-'allmessagesdefault' => 'Tinakdang teksto',
-'allmessagescurrent' => 'Kasalukuyang teksto',
-'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa espasyo ng pangalang MediaWiki.
+'allmessages' => 'Mga mensaheng pansistema',
+'allmessagesname' => 'Pangalan',
+'allmessagesdefault' => 'Tinakdang teksto',
+'allmessagescurrent' => 'Kasalukuyang teksto',
+'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa espasyo ng pangalang MediaWiki.
Pakidalaw ang [http://www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [http://translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
-'allmessagesnotsupportedDB' => "Hindi magagamit ang '''{{ns:special}}:AllMessages''' dahil hindi gumagana ang '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Pansala ng pangalan ng mensahe:',
-'allmessagesmodified' => 'Ipakita lamang ang mga binago',
+'allmessagesnotsupportedDB' => "Hindi magagamit ang '''{{ns:special}}:AllMessages''' dahil hindi gumagana ang '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Salain',
+'allmessages-filter' => 'Salain ayon sa katayuan ng pagbabagay:',
+'allmessages-filter-unmodified' => 'Hindi pa nababago',
+'allmessages-filter-all' => 'Lahat',
+'allmessages-filter-modified' => 'Nabago na',
+'allmessages-prefix' => 'Salain ayon sa unlapi:',
+'allmessages-language' => 'Wika:',
+'allmessages-filter-submit' => 'Gawin',
# Thumbnails
'thumbnail-more' => 'Palakihin',
@@ -2331,6 +2485,9 @@ Pakidalaw ang [http://www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWik
'djvu_no_xml' => 'Hindi makuha ang XML para sa talaksang DjVu',
'thumbnail_invalid_params' => "Hindi tanggap ang mga parametro para sa kagyat (''thumbnail'')",
'thumbnail_dest_directory' => 'Hindi malikha ang papuntahang direktoryo',
+'thumbnail_image-type' => 'Hindi tinatangkili ang uri ng larawan',
+'thumbnail_gd-library' => 'Hindi kumpletong pagkakaayos ng aklatang GD: nawawala ang tungkuling $1',
+'thumbnail_image-missing' => 'Tila nawawala sa talaksan ang : $1',
# Special:Import
'import' => 'Mag-angkat ng pahina',
@@ -2394,6 +2551,7 @@ Naitatala sa [[Special:Log/import|tala ng inangkat]] ang lahat ng mga transwikin
'tooltip-ca-viewsource' => 'Nakaprotekta ang pahinang ito. Makikita mo lamang ang pinagmulan (source) nito.',
'tooltip-ca-history' => 'Nakaraang bersyon ng pahinang ito.',
'tooltip-ca-protect' => 'Iprotekta ang pahinang ito',
+'tooltip-ca-unprotect' => 'Huwag prutektahan ang pahinang ito',
'tooltip-ca-delete' => 'Burahin ang pahinang ito',
'tooltip-ca-undelete' => 'Ibalik ang mga pagbabagong ginawa sa pahinang ito bago ito binura',
'tooltip-ca-move' => 'Ilipat ang pahinang ito',
@@ -2404,6 +2562,7 @@ Naitatala sa [[Special:Log/import|tala ng inangkat]] ang lahat ng mga transwikin
'tooltip-search-fulltext' => 'Hanapin ang mga pahina para sa tekstong ito',
'tooltip-p-logo' => 'Unang Pahina',
'tooltip-n-mainpage' => 'Dalawin ang Unang Pahina',
+'tooltip-n-mainpage-description' => 'Dalawin ang unang pahina',
'tooltip-n-portal' => 'Hinggil sa proyekto, ano ang magagawa mo, saan matatagpuan ang mga bagay-bagay',
'tooltip-n-currentevents' => 'Maghanap ng sanligang impormasyon hinggil sa mga kasalukuyang kaganapan',
'tooltip-n-recentchanges' => 'Ang tala ng mga kamakailang pagbabago sa loob ng wiki.',
@@ -2472,10 +2631,12 @@ Naitatala sa [[Special:Log/import|tala ng inangkat]] ang lahat ng mga transwikin
# Attribution
'anonymous' => 'Hindi kilalang {{PLURAL:$1|tagagamit|mga tagagamit}} ng {{SITENAME}}',
'siteuser' => 'Tagagamit $1 ng {{SITENAME}}',
-'lastmodifiedatby' => 'Huling binago ang pahinang ito noong $2, $1 ni $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'Hindi nakikilalang tagagamit na $1 ng {{SITENAME}}',
+'lastmodifiedatby' => 'Huling binago ang pahinang ito noong $2, $1 ni $3.',
'othercontribs' => 'Batay sa gawa ni/nina $1.',
'others' => 'iba pa',
'siteusers' => '{{PLURAL:$2|tagagamit|mga tagagamit}} $1 ng {{SITENAME}}',
+'anonusers' => 'Hindi nakikilalang $1 na {{PLURAL:$2|tagagamit|mga tagagamit}} ng {{SITENAME}}',
'creditspage' => 'Pahina ng pagkilala sa gumawa (mga kredito)',
'nocredits' => 'Walang mga kredito/pagkilala sa gumawa na makuha para sa pahinang ito.',
@@ -2514,11 +2675,24 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
'mw_math_modern' => 'Irekomenda para sa makabagong mga panghanap',
'mw_math_mathml' => 'MathML kung maaari (sinusubok pa)',
+# Math errors
+'math_failure' => 'Nabigo sa pagbanghay',
+'math_unknown_error' => 'hindi nalalamang kamalian',
+'math_unknown_function' => 'hindi nalalamang tungkulin',
+'math_lexing_error' => 'kamalian sa pagbabatas',
+'math_syntax_error' => 'kamalian sa palaugnayan',
+'math_image_error' => 'Nabigo ang pagpapalit patungong PNG;
+pakisuri kung tama ang pagiinstala ng latex, dvips, gs, at palitan',
+'math_bad_tmpdir' => 'Hindi maisulat sa o makalikha ng pansamantalang direktoryong pangmatematika',
+'math_bad_output' => 'Hindi maisulat sa o makalikha ng direktoryo ng produktong pangmatematika',
+'math_notexvc' => 'Nawawala ang maisasakatuparang texvc;
+pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
+
# Patrolling
'markaspatrolleddiff' => 'Tatakan bilang napatrolya na',
'markaspatrolledtext' => 'Tatakan ang pahinang ito bilang napatrolya na',
'markedaspatrolled' => 'Tatakan bilang napatrolya na',
-'markedaspatrolledtext' => 'Ang napiling pagbabago ay natatakan na bilang napatrolya.',
+'markedaspatrolledtext' => 'Ang napiling pagbabago ng [[:$1]] ay natatakan bilang napatrolya na.',
'rcpatroldisabled' => 'Hindi pinagana ang Patrolyang Pangkamailan-Lamang na Pagbabago',
'rcpatroldisabledtext' => 'Kasalukuyang hindi pinagagana ang kasangkapang Patrolyang Pangkamakailang-lamang na Pagbabago.',
'markedaspatrollederror' => 'Hindi matatakan bilang napatrolya na',
@@ -2548,13 +2722,10 @@ $1',
'previousdiff' => '← Mas lumang pagbabago',
'nextdiff' => 'Mas bagong pagbabago →',
-# Visual comparison
-'visual-comparison' => 'Paghahambing na matatanaw',
-
# Media information
'mediawarning' => "'''Babala''': Maaaring naglalaman ng kodigong malisyoso ang uri ng talaksang ito.
Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
-'imagemaxsize' => 'Itakda lamang ang hangganan ng mga larawan sa ibabaw ng pahina ng paglalarawang pangtalaksan sa:',
+'imagemaxsize' => "Takdang hangganan sa laki ng larawan: <br />''(para sa mga pahina ng paglalarawan ng talaksan)''",
'thumbsize' => 'Maliit na sukat (parang "kuko sa hinlalaki" lamang):',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pahina|mga pahina}}',
'file-info' => '(sukat ng talaksan: $1, tipo ng MIME: $2)',
@@ -2563,6 +2734,8 @@ Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
'svg-long-desc' => '(Talaksang SVG, nasa mga bilang na $1 × $2 mga piksel, sukat ng talaksan: $3)',
'show-big-image' => 'Buong resolusyon (kalinawan)',
'show-big-image-thumb' => '<small>Laki ng paunang tinging ganito: $1 × $2 mga piksel</small>',
+'file-info-gif-looped' => 'nasilo na',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|banhay|mga banhay}}',
# Special:NewFiles
'newimages' => 'Galerya ng mga bagong talaksan',
@@ -2600,7 +2773,7 @@ Nakatakdang itago ang iba pa.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lapad',
@@ -2727,14 +2900,14 @@ Nakatakdang itago ang iba pa.
'exif-unknowndate' => 'Hindi alam na araw',
-'exif-orientation-1' => 'Karaniwan', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Pinihit ng pahiga', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Pinaikot ng 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Pinihit ng patayo', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Pinaikot ng 90° CCW at pinihit ng patayo', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Pinaikot ng 90° CW', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Pinaikot ng 90° CW at pinihit ng patayo', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Pinaikot ng 90° CCW', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Karaniwan',
+'exif-orientation-2' => 'Pinihit ng pahiga',
+'exif-orientation-3' => 'Pinaikot ng 180°',
+'exif-orientation-4' => 'Pinihit ng patayo',
+'exif-orientation-5' => 'Pinaikot ng 90° CCW at pinihit ng patayo',
+'exif-orientation-6' => 'Pinaikot ng 90° CW',
+'exif-orientation-7' => 'Pinaikot ng 90° CW at pinihit ng patayo',
+'exif-orientation-8' => 'Pinaikot ng 90° CCW',
'exif-planarconfiguration-1' => 'pagkaayos sa malalaking bahagi (chunky)',
'exif-planarconfiguration-2' => 'planar na pagkaayos',
@@ -2860,7 +3033,7 @@ Nakatakdang itago ang iba pa.
'exif-gpsmeasuremode-2' => 'Sukat na may 2 dimensyon',
'exif-gpsmeasuremode-3' => 'Sukat na may 3 dimensyon',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Mga kilometro bawat oras',
'exif-gpsspeed-m' => 'Mga milya bawat oras',
'exif-gpsspeed-n' => "Mga ''knot''",
@@ -2879,6 +3052,7 @@ Nakatakdang itago ang iba pa.
'watchlistall2' => 'lahat',
'namespacesall' => 'lahat',
'monthsall' => 'lahat',
+'limitall' => 'lahat',
# E-mail address confirmation
'confirmemail' => 'Patotohanan ang adres ng e-liham',
@@ -3052,7 +3226,7 @@ Maaari mo ring [[Special:Watchlist/edit|gamitin ang pangkaraniwang pampatnugot]]
'duplicate-defaultsort' => 'Babala: Madadaig ng susi ng pagtatakdang "$2" ang mas naunang susi ng pagtatakdang "$1".',
# Special:Version
-'version' => 'Bersyon', # Not used as normal message but as header for the special page itself
+'version' => 'Bersyon',
'version-extensions' => 'Nakaluklok/Nakainstalang mga karugtong',
'version-specialpages' => 'Natatanging mga pahina',
'version-parserhooks' => "Mga pangkawit ng banghay (''parser'')",
@@ -3066,7 +3240,7 @@ Maaari mo ring [[Special:Watchlist/edit|gamitin ang pangkaraniwang pampatnugot]]
'version-skin-extension-functions' => 'Mga tungkulin ng karugtong na pabalat',
'version-hook-name' => 'Pangalan ng pangkawit',
'version-hook-subscribedby' => 'Sinuskribi ng/ni/nina',
-'version-version' => 'Bersyon',
+'version-version' => '(Bersyon $1)',
'version-license' => 'Lisensiya',
'version-software' => 'Inistalang software',
'version-software-product' => 'Produkto',
@@ -3145,4 +3319,15 @@ Ipasok ang pangalan ng talaksan na wala ang unlaping \"{{ns:image}}:\".",
'dberr-outofdate' => 'Pakiunawang maaaring wala na sa panahon ang kanilang mga talatuntunan ng aming mga nilalaman.',
'dberr-cachederror' => 'Ang sumusunod ay isang nakatagong sipi ng hiniling na pahina, at maaaring wala na sa panahon.',
+# HTML forms
+'htmlform-invalid-input' => 'May mga suliran ang ilan sa mga ipinasok mo',
+'htmlform-select-badoption' => 'Ang halagang tinukoy mo ay hindi isang tanggap na pagpili.',
+'htmlform-int-invalid' => 'Ang tinukoy mong halaga ay hindi isang buumbilang.',
+'htmlform-float-invalid' => 'Ang tinukoy mong halagay ay hindi isang bilang.',
+'htmlform-int-toolow' => 'Ang tinukoy mong halaga ay mas mababa kaysa sa pinakamababa ng $1',
+'htmlform-int-toohigh' => 'Ang tinukoy mong halaga ay mahigit kaysa pinakamataas ng $1',
+'htmlform-submit' => 'Ipasa',
+'htmlform-reset' => 'Bawiin ang mga pagbabago',
+'htmlform-selectorother-other' => 'Iba pa',
+
);
diff --git a/languages/messages/MessagesTlh.php b/languages/messages/MessagesTlh.php
deleted file mode 100644
index 612412e1..00000000
--- a/languages/messages/MessagesTlh.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/** Klingon (tlhIngan-Hol)
- *
- * @ingroup Language
- * @file
- *
- */
-
-$namespaceNames = array(
- NS_MEDIA => "Doch",
- NS_SPECIAL => "le'",
- NS_MAIN => "",
- NS_TALK => "ja'chuq",
- NS_USER => "lo'wI'",
- NS_USER_TALK => "lo'wI'_ja'chuq",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => "$1_ja'chuq",
- NS_FILE => "nagh_beQ",
- NS_FILE_TALK => "nagh_beQ_ja'chuq",
- NS_MEDIAWIKI => "MediaWiki",
- NS_MEDIAWIKI_TALK => "MediaWiki_ja'chuq",
- NS_TEMPLATE => "chen'ay'",
- NS_TEMPLATE_TALK => "chen'ay'_ja'chuq",
- NS_HELP => "QaH",
- NS_HELP_TALK => "QaH_ja'chuq",
- NS_CATEGORY => "Segh",
- NS_CATEGORY_TALK => "Segh_ja'chuq"
-);
diff --git a/languages/messages/MessagesTn.php b/languages/messages/MessagesTn.php
index 20e7c8e9..6e1ba0ea 100644
--- a/languages/messages/MessagesTn.php
+++ b/languages/messages/MessagesTn.php
@@ -101,8 +101,6 @@ O ipuletse akhaonte. O seka wa lebala go fetola tse o di dikgatlhegelo tsa gago
'userlogout' => 'Tswala',
'notloggedin' => 'Ga o a ikwadisa',
'createaccount' => 'Ipulela tsebe',
-'youremail' => 'E-mail:',
-'username' => 'Leina la modirisi:',
# Edit pages
'summary' => 'Tshoboko:',
@@ -119,12 +117,16 @@ O ipuletse akhaonte. O seka wa lebala go fetola tse o di dikgatlhegelo tsa gago
# Preferences page
'mypreferences' => 'Dikgatlhegelo tsa me',
+'youremail' => 'E-mail:',
+'username' => 'Leina la modirisi:',
# Recent changes
'recentchanges' => 'Diphetogo tsa sešeng',
# Recent changes linked
-'recentchangeslinked' => 'Diphetogo tse di tsamaelanang',
+'recentchangeslinked' => 'Diphetogo tse di tsamaelanang',
+'recentchangeslinked-feed' => 'Diphetogo tse di tsamaelanang',
+'recentchangeslinked-toolbox' => 'Diphetogo tse di tsamaelanang',
# Upload
'upload' => 'Tsenya mokwalo o o tswang kwantle',
diff --git a/languages/messages/MessagesTo.php b/languages/messages/MessagesTo.php
index 31a1637d..dba8f431 100644
--- a/languages/messages/MessagesTo.php
+++ b/languages/messages/MessagesTo.php
@@ -96,25 +96,29 @@ $messages = array(
'subcategories' => 'Ngaahi faʻahinga siʻi',
'category-empty' => "''Ko e faʻahinga ʻeni ʻoku ʻikai ʻi ai haʻane kupu pe ʻata.''",
'hidden-categories' => 'Faʻahinga toi',
-'hidden-category-category' => 'Ngaahi faʻahinga toi', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Ngaahi faʻahinga toi',
'listingcontinuesabbrev' => ' hoko',
-'about' => 'Kau ki',
-'article' => 'Peesi kakano',
-'newwindow' => '(fakaava ʻi he matapā foʻou)',
-'cancel' => 'Kaniseli',
+'about' => 'Kau ki',
+'article' => 'Peesi kakano',
+'newwindow' => '(fakaava ʻi he matapā foʻou)',
+'cancel' => 'Kaniseli',
+'moredotdotdot' => 'Hoko...',
+'mypage' => 'Peesi ʻaʻaku',
+'mytalk' => 'Alea ʻaʻaku',
+'anontalk' => 'Alea maʻa e IP´ ni',
+'navigation' => 'ʻai taumuʻa ki he…',
+'and' => '&#32;mo e',
+
+# Cologne Blue skin
'qbfind' => 'Kumi',
'qbbrowse' => 'Palausa',
'qbedit' => 'Fatu',
'qbpageoptions' => 'Peesi koʻeni',
'qbmyoptions' => 'Peesi ʻaʻaku',
'qbspecialpages' => 'Ngaahi peesi makehe',
-'moredotdotdot' => 'Hoko...',
-'mypage' => 'Peesi ʻaʻaku',
-'mytalk' => 'Alea ʻaʻaku',
-'anontalk' => 'Alea maʻa e IP´ ni',
-'navigation' => 'ʻai taumuʻa ki he…',
-'and' => '&#32;mo e',
+'faq' => 'Fehuʻi faʻa eke',
+'faqpage' => 'Project:Fehuʻi faʻa eke',
'errorpagetitle' => 'Halaʻi',
'returnto' => 'Foki ki he $1',
@@ -170,14 +174,11 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Kau ki: {{SITENAME}}',
'aboutpage' => 'Project:ʻo kau ki',
-'copyrightpagename' => 'Foʻi mafai ke pulusi maʻa e {{SITENAME}}',
'currentevents' => 'Ngaahi ongoongo',
'currentevents-url' => 'Project:Ongoongo taka',
'disclaimers' => 'Ngaahi fakaʻataʻatā',
'disclaimerpage' => 'Project:Fakaʻataʻatā lūkufua',
'edithelp' => 'Tokoni ki he fatu',
-'faq' => 'Fehuʻi faʻa eke',
-'faqpage' => 'Project:Fehuʻi faʻa eke',
'mainpage' => 'Peesi tali fiefia',
'mainpage-description' => 'Peesi tali fiefia',
'portal' => 'Fale fakataha',
@@ -229,8 +230,6 @@ $messages = array(
# General errors
'error' => 'Halaʻi',
'databaseerror' => 'Halaʻi tānekingaʻilo',
-'nodb' => 'Naʻe ʻikai lava fili ʻa e tānekingaʻilo $1',
-'cachederror' => 'ʻOku ʻasi ʻi lalo ʻa e fafaʻo ʻo e peesi naʻa ke kole, pea mahalo pē ʻoku ʻikai fakaonopooni.',
'laggedslavemode' => 'Tokanga: Mahalo pē ʻoku ʻikai ha toki fakafoʻou ʻi loto peesi.',
'readonly' => 'ʻOku lokaʻi ʻa e tānekingaʻilo',
'readonlytext' => 'ʻOku lokaʻi ʻa e tānekingaʻilo he taimí ni (ʻoku ikai te ke lava fatu) maʻa e monomono fakatānekingaʻilo tuʻumaʻu. ʻOsi ia ʻe foki ia ki hono faʻafai.
@@ -260,7 +259,6 @@ Eke: $2",
'namespaceprotected' => "ʻOku ʻikai ngofua ke ke fatu ʻa e ngaahi kupu ʻi he vā hingoa '''$1'''.",
# Login and logout pages
-'logouttitle' => 'ʻAlu mamaʻo ʻo e ʻetita',
'logouttext' => "'''Kuo ʻalu mamaʻo koe he taimí ni.'''
E lava te ke hoko atu ʻo ngāueʻaki he {{SITENAME}} tatau mo e ʻetita taʻehingoa, pe te ke kau-ki-ai mo e hingoa tatau pe hingoa kehe.
@@ -268,7 +266,6 @@ Tokanga, mahalo pē ʻe ʻi ai ha ngaahi peesi ʻoku ʻasi ko koe kei kau-ki-ai
'welcomecreation' => '== Tali fiefia, $1! ==
Kuo fakatupu hoʻo tohi kau-ki-ai. ʻOua ʻe ngalo ke liliu hoʻo faʻiteliha {{SITENAME}}.',
-'loginpagetitle' => 'Kau-ki-ai ʻo e ʻetita',
'yourname' => 'Hingoa ʻetita',
'yourpassword' => 'Leatapu',
'yourpasswordagain' => 'Toe ʻai leatapu',
@@ -288,17 +285,7 @@ Kuo fakatupu hoʻo tohi kau-ki-ai. ʻOua ʻe ngalo ke liliu hoʻo faʻiteliha {{
'gotaccountlink' => 'Kau ki ai',
'createaccountmail' => 'ʻi he tohila',
'badretype' => 'ʻOku kehe hoʻo ongo leatapu.',
-'youremail' => 'Tohila:',
-'username' => 'Ko e ʻetita hono hingoa:',
-'uid' => 'hono fika:',
-'yourrealname' => 'Hingoa moʻoni:',
-'yourlanguage' => 'Lea:',
-'yourvariant' => 'Faikeheʻi',
-'yournick' => 'Hingoa tenetene:',
-'badsig' => 'Ko e fakamoʻoni ʻota ʻoku taʻeʻaonga; siviʻi ngaahi tikite HTML.',
-'email' => 'Tohila',
'loginerror' => 'Halaʻi kau-ki-ai',
-'prefs-help-email' => 'Tohila (tohi-ʻuhila, e-mail) fakafaʻiteliha: ʻE fakamafeiaʻi ʻa e kau ʻetita ʻo lave kia te koe, ngāueʻaki hoʻo peesi pe peesi-alea, taʻe ʻi ai haʻanau ʻilo pe ko hai koe.',
'nocookiesnew' => 'Kuo fakatupu hoʻo tohi-kau-ki-ai, kae teʻeki ke kau-ki-ai. ʻOku ngāueʻaki mo e foʻi keke ʻe he {{SITENAME}} ʻi he kau-ki-ai ʻo e kau ʻetita. Naʻa ke fakataʻeʻaongaki ʻa e ngaahi foʻi keke. ʻE fakamafeia kinautolu pea te ke kau-ki-ai mo ho hingoa tenetene foʻou mo hono tapulea.',
'nocookieslogin' => 'ʻOku ngāueʻaki mo e foʻi keke ʻe he {{SITENAME}} ʻi he kau-ki-ai ʻo e kau ʻetita. Naʻa ke fakataʻeʻaongaki ʻa e ngaahi foʻi keke. ʻE fakamafeia kinautolu pea te ke toe feinga.',
'noname' => 'Naʻe ʻikai te ke ʻoatu hao hingoa ʻetita ʻoku totonu.',
@@ -368,7 +355,6 @@ Kapau naʻe kole ia ʻe he tokotaha kehe, pea ʻosi hoʻo manatuʻi ʻo e leatap
'blockededitsource' => "ʻOku ʻasi ʻi lalo ʻa e tohi ʻo '''hoʻo ngaahi fatu''' ki he '''$1''':",
'whitelistedittitle' => 'ʻOku pau ke kau ki ai ke fatuʻi',
'whitelistedittext' => 'ʻOku pau te ke $1 kapau te ke fiefatu ʻa e ngaahi kupu.',
-'confirmedittitle' => 'ʻOku pau ʻe fakaʻmoʻoniʻi hoʻo tohila kapau te ke fieʻetita',
'confirmedittext' => 'ʻOku pau te ke fakamoʻoniʻi ho tuʻasila tohila ʻi muʻa hoʻo fatu kupu. Kātaki ʻe fakamoʻoniʻi ia ngāueʻaki hoʻo [[Special:Preferences|faʻiteliha]] fakaʻetita.',
'loginreqtitle' => 'ʻOku pau te ke kau ki ai',
'loginreqlink' => 'kau ki ai',
@@ -418,7 +404,7 @@ Ko e ʻuhinga loka ko e $1 ia.",
'nohistory' => 'ʻOku ʻikai ʻi ai ha hisitōlia fatu maʻa e kupú ni.',
'currentrev' => 'Paaki taka',
'revisionasof' => 'Paaki he ko $1',
-'revision-info' => 'Paaki he ko $1 fai ʻe $2', # Additionally available: $3: revision id
+'revision-info' => 'Paaki he ko $1 fai ʻe $2',
'previousrevision' => '←Paaki motuʻa ange',
'nextrevision' => 'Paaki foʻou ange→',
'currentrevisionlink' => 'Paaki taka',
@@ -427,7 +413,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
'last' => 'fakamuimui',
'histlegend' => 'Konga faikehekehe: fakaʻilongaʻi ʻa e ngaahi puha fakaletio ʻo e ngaahi paaki ʻo fakatatau pea lomiʻi.<br />
ʻAtungatala: (taka) = ngaahi lilu mo e paaki taka, (mui) = ngaahi liliu mo paaki naʻe fetongi, s = fatu siʻi.',
-'deletedrev' => '[kuo tāmateʻi]',
'histfirst' => 'Fakamuʻa taha',
'histlast' => 'Fakamuimui taha',
@@ -454,10 +439,9 @@ Ko e ʻuhinga loka ko e $1 ia.",
# Search results
'searchresults' => 'kumi hono ʻātunga',
'searchresults-title' => 'kumi "$1" hono ʻātunga',
-'noexactmatch' => "'''ʻOku ʻikai ʻi ai ha kupu mo hono ʻuluʻitohi \"\$1\".''' ʻOku lava ke ke [[:\$1|fakatupu he kupú ni]].",
-'prevn' => '$1 ki muʻa',
-'nextn' => '$1 hoko',
-'viewprevnext' => 'Vakai ki he ($1) ($2) ($3).',
+'prevn' => '{{PLURAL:$1|$1}} ki muʻa',
+'nextn' => '{{PLURAL:$1|$1}} hoko',
+'viewprevnext' => 'Vakai ki he ($1 {{int:pipe-separator}} $2) ($3).',
'search-suggest' => 'Mahalo pē naʻa ke fiemaʻu: $1',
'search-interwiki-more' => '(lahi ange)',
'search-mwsuggest-enabled' => 'mo e fokotuʻu atu',
@@ -474,15 +458,11 @@ Ko e ʻuhinga loka ko e $1 ia.",
'mypreferences' => 'faʻiteliha ʻaʻaku',
'prefsnologin' => 'ʻOku ʻikai kau ki ai',
'changepassword' => 'Liliu hoʻo leatapu',
-'skin' => 'Kili',
+'prefs-skin' => 'Kili',
'skin-preview' => 'Vakai pē',
-'math' => 'Matematika',
-'dateformat' => 'Ngaohi ʻo e ʻaho',
+'prefs-math' => 'Matematika',
'datedefault' => 'ʻIkai ha faʻiteliha',
-'datetime' => 'ʻAho mo e taimi',
-'math_unknown_error' => 'hala taʻeʻiloa',
-'math_unknown_function' => 'lakanga taʻeʻiloa',
-'math_bad_output' => 'ʻOku ʻikai lava ʻo tohi pe fakatupu ʻa e takafi maʻa e fua matematika',
+'prefs-datetime' => 'ʻAho mo e taimi',
'prefs-personal' => 'Fōtunga fakatafaʻaki',
'prefs-rc' => 'Ngaahi toki liliu',
'prefs-watchlist' => 'Hokohoko leʻo',
@@ -491,14 +471,13 @@ Ko e ʻuhinga loka ko e $1 ia.",
'prefs-misc' => 'Kehekehe',
'saveprefs' => 'Haofaki',
'resetprefs' => 'Fakafoki',
-'textboxsize' => 'ʻOku fatu',
+'prefs-editing' => 'ʻOku fatu',
'rows' => 'Ngaahi ʻotu:',
'columns' => 'Vahaʻa laini:',
'searchresultshead' => 'Kumi',
'recentchangescount' => 'Ngaahi ʻuluʻitohi ʻoku ʻasi ʻi he toki liliu, hisitōlia peesi, mo e hokohoko:',
'savedprefs' => 'Kuo haofaki hoʻo faʻiteliha.',
'timezonelegend' => 'Feituʻu taimi',
-'timezonetext' => 'Ko e lahi ʻo e ngaahi houa ʻoku faikehekehe hoʻo taimi fakakolo mei he taimi māmani.',
'localtime' => 'Taimi fakafeituʻu:',
'timezoneoffset' => 'Ngaahi houa ʻo e faikehekehe:',
'servertime' => 'Taimi ʻo e tauhia:',
@@ -506,7 +485,17 @@ Ko e ʻuhinga loka ko e $1 ia.",
'allowemail' => 'Fakamafeiaʻi ʻa e tohila mei he kau ʻetita ʻe taha',
'defaultns' => 'Kumi ʻi he vā hingoa fakatuʻunga:',
'default' => 'tuʻunga',
-'files' => 'Ngaahi faile',
+'prefs-files' => 'Ngaahi faile',
+'youremail' => 'Tohila:',
+'username' => 'Ko e ʻetita hono hingoa:',
+'uid' => 'hono fika:',
+'yourrealname' => 'Hingoa moʻoni:',
+'yourlanguage' => 'Lea:',
+'yourvariant' => 'Faikeheʻi',
+'yournick' => 'Hingoa tenetene:',
+'badsig' => 'Ko e fakamoʻoni ʻota ʻoku taʻeʻaonga; siviʻi ngaahi tikite HTML.',
+'email' => 'Tohila',
+'prefs-help-email' => 'Tohila (tohi-ʻuhila, e-mail) fakafaʻiteliha: ʻE fakamafeiaʻi ʻa e kau ʻetita ʻo lave kia te koe, ngāueʻaki hoʻo peesi pe peesi-alea, taʻe ʻi ai haʻanau ʻilo pe ko hai koe.',
# Groups
'group' => 'Pupunga:',
@@ -549,12 +538,13 @@ Ko e ʻuhinga loka ko e $1 ia.",
'rc-enhanced-hide' => 'Toi ngaahi ʻeu',
# Recent changes linked
-'recentchangeslinked' => 'Ngaahi liliu fekauʻaki',
+'recentchangeslinked' => 'Ngaahi liliu fekauʻaki',
+'recentchangeslinked-feed' => 'Ngaahi liliu fekauʻaki',
+'recentchangeslinked-toolbox' => 'Ngaahi liliu fekauʻaki',
# Upload
'upload' => 'Hiki hake ʻa e faile',
'uploadbtn' => 'Hiki hake',
-'reupload' => 'Toe hiki hake',
'reuploaddesc' => 'Foki ki he foomu hiki',
'uploadnologin' => 'Teʻeki kau ki ai',
'uploadnologintext' => 'ʻOku pau ke [[Special:UserLogin|kau-ki-ai]] kapau te ke fiehiki hake ha faile.',
@@ -583,15 +573,15 @@ Ko e ʻuhinga loka ko e $1 ia.",
'uploadedimage' => '"[[$1]]" ʻosi hiki hake',
'uploaddisabled' => 'ʻOku fakataʻeʻaongaʻi ʻa e ngaahi hiki hake',
'uploaddisabledtext' => 'ʻOku fakataʻeʻaongaʻi ha ngaahi hiki hake ʻi heni.',
-'uploadcorrupt' => 'ʻOku kovi ʻa e failé ni pe ʻoku halaʻi hono fakalōloa. Kātaki, sivi ia pea foki hiki hake ia.',
'uploadvirus' => 'ʻOku ʻi ai ha vailasi ʻi he failé ni! ʻŪ kiʻi meʻa: $1',
'sourcefilename' => 'Hingoa ʻo e faile tupunga:',
'destfilename' => 'Hingoa ʻo e faile ʻe ʻalu ki ai:',
'watchthisupload' => 'Leʻo he pēsí ni',
'filewasdeleted' => 'Kuo hiki hake ʻa e faile mo e hingoa ʻeni pea naʻe tāmateʻi ia. Kuo pau te ke vakai ki he $1 ʻi muʻa haʻo feinga ʻo toe hiki hake ia.',
-'license' => 'Laiseni:',
-'nolicense' => 'ʻIkai fili ha taha',
+'license' => 'Laiseni:',
+'license-header' => 'Laiseni:',
+'nolicense' => 'ʻIkai fili ha taha',
# Special:ListFiles
'listfiles_search_for' => 'Kumi ki he hingoa ʻo e faitā:',
@@ -604,15 +594,12 @@ Ko e ʻuhinga loka ko e $1 ia.",
'listfiles_description' => 'Fakamahino',
# File description page
+'file-anchor-link' => 'Faitā',
'filehist-datetime' => 'ʻAho/Taimi',
'filehist-user' => 'Ko e ʻetita',
'imagelinks' => 'Ngaahi fehokotaki',
'linkstoimage' => 'ʻOku fehokotaki ʻa e peesi ʻe $1 ki he failé ni:',
'nolinkstoimage' => 'ʻOku ʻikai ha ngaahi peesi fehokotaki ki he faitaá ni.',
-'shareduploadwiki' => 'Kātaki, vakai ki he $1 mo hano ongoongo lahi ange.',
-'shareduploadwiki-linktext' => 'Peesi ʻo e faile hono fakamahino',
-'noimage' => 'ʻOku ʻikai ʻi ai ha faile mo e hingoa koʻeni, ʻe fakatupu koe $1.',
-'noimage-linktext' => 'hiki hake ʻe taha',
'uploadnewversion-linktext' => 'Hiki hake ʻa e paaki foʻou ʻo e failé ni.',
# File reversion
@@ -838,7 +825,7 @@ Vakai ki he $2 maʻa e fakamatala ʻo e ngaahi toki tāmateʻi.',
'alreadyrolled' => 'ʻOku ʻikai lava teka hifo ʻa e fatu fakamuimui ʻo e [[:$1]] ʻe [[User:$2|$2]] ([[User talk:$2|Alea]]); ko e tokotaha ʻe taha naʻe fatu pe fatu teka hifo ʻa e peesi.
Ko e fatu fakamuimui naʻe fatu ʻe [[User:$3|$3]] ([[User talk:$3|Alea]]).',
-'editcomment' => "Ko e fakamatala fatu naʻe \"''\$1''\" ia.", # only shown if there is an edit comment
+'editcomment' => "Ko e fakamatala fatu naʻe \"''\$1''\" ia.",
# Protect
'protectlogpage' => 'Tohinoa ʻo e maluʻi',
@@ -882,6 +869,9 @@ Vakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaah
'mycontris' => 'Foaki ʻaʻaku',
'uctop' => ' (ʻi ʻolunga)',
+'sp-contributions-deleted' => 'Ngaahi foaki ʻo ha ʻetita kuo tāmateʻi',
+'sp-contributions-talk' => 'Alea',
+
# What links here
'whatlinkshere' => 'Ngaahi fehokotaki ki heni',
'linkshere' => 'ʻOku fehokotaki ki heni ʻa e ngaahi peesi:',
@@ -913,7 +903,7 @@ Vakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaah
'ipblocklist' => 'Hokohoko ʻo e ngaahi tuʻasila IP mo e hingoa ʻo e ʻetita kuo taʻofi',
'blocklistline' => '$1, $2 taʻofi $3 ($4)',
'infiniteblock' => 'taʻengata',
-'expiringblock' => 'ʻE mate ia $1',
+'expiringblock' => 'ʻE mate ia $1 $2',
'anononlyblock' => 'taʻehingoa pē',
'createaccountblock' => 'ʻOku taʻofia ʻa e fakatupu ʻa e tohi-kau-ki-ai',
'blocklink' => 'taʻofi',
@@ -997,8 +987,6 @@ Vakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaah
'allmessagescurrent' => 'Tohi lolotonga',
'allmessagestext' => "Ko e hokohoko ʻeni ʻo e ngaahi tala fakafounga kātoa ʻi he vā hingoa ''MediaWiki''.",
'allmessagesnotsupportedDB' => "ʻOku ʻikai ngāueʻaki mo e '''{{ns:special}}:Allmessages''' koeʻuhi ʻoku kamosiʻi mate ʻa e '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Meʻasivi ki he hingoa ʻo e tala:',
-'allmessagesmodified' => 'ʻAsi mai meʻa kuo liliu pē',
# Thumbnails
'filemissing' => 'ʻOku pulia ʻa e faile',
@@ -1062,6 +1050,11 @@ Pea hoko ai pē hoʻo lava tānaki ha ʻuhinga ʻi he fakanounou',
'mw_math_modern' => 'ʻOku fakahinohino maʻa e palausa fakaonopooni.',
'mw_math_mathml' => 'Fai MathML kapau malava (fakatotolo)',
+# Math errors
+'math_unknown_error' => 'hala taʻeʻiloa',
+'math_unknown_function' => 'lakanga taʻeʻiloa',
+'math_bad_output' => 'ʻOku ʻikai lava ʻo tohi pe fakatupu ʻa e takafi maʻa e fua matematika',
+
# Patrolling
'rcpatroldisabled' => 'ʻOku fakataʻeʻaʻongaʻi ʻa e leʻo ʻo e ngaahi toki liliu',
@@ -1192,7 +1185,7 @@ Pea hoko ai pē hoʻo lava tānaki ha ʻuhinga ʻi he fakanounou',
'exif-gpslongitude-e' => 'Longitute hahake',
'exif-gpslongitude-w' => 'Longitute hihifo',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilomita ki he houa',
'exif-gpsspeed-m' => 'Maile he houa',
@@ -1272,7 +1265,7 @@ Kātaki fakapapauʻi te ke fie toe fatu ʻa e kupu ni.",
'watchlisttools-raw' => 'Fatu ʻa e hokohoko leʻo taʻengaohi',
# Special:Version
-'version' => 'Paaki', # Not used as normal message but as header for the special page itself
+'version' => 'Paaki',
# Special:FilePath
'filepath' => 'Hala ki he faile',
diff --git a/languages/messages/MessagesTokipona.php b/languages/messages/MessagesTokipona.php
index 14ff5f99..bd1c8306 100644
--- a/languages/messages/MessagesTokipona.php
+++ b/languages/messages/MessagesTokipona.php
@@ -110,8 +110,8 @@ kin la sina toki e ni: toki sina ni li tan sina taso anu lipu pi ken ali.
'histlast' => 'sin taso',
# Search results
-'prevn' => 'nanpa $1 pini',
-'nextn' => 'nanpa $1 kama',
+'prevn' => 'nanpa {{PLURAL:$1|$1}} pini',
+'nextn' => 'nanpa {{PLURAL:$1|$1}} kama',
'viewprevnext' => 'o lukin e ($1 {{int:pipe-separator}} $2) ($3).',
# Preferences page
@@ -123,13 +123,18 @@ kin la sina toki e ni: toki sina ni li tan sina taso anu lipu pi ken ali.
'newpageletter' => 'lipu sin',
# Recent changes linked
-'recentchangeslinked' => 'ante sama',
+'recentchangeslinked' => 'ante sama',
+'recentchangeslinked-feed' => 'ante sama',
+'recentchangeslinked-toolbox' => 'ante sama',
# Upload
'upload' => 'o pana e lipu nanpa',
'filedesc' => 'ante li seme',
'fileuploadsummary' => 'ante li seme:',
+# File description page
+'file-anchor-link' => 'Lipu nanpa',
+
# Random page
'randompage' => 'mi wile lukin e lipu ante',
diff --git a/languages/messages/MessagesTp.php b/languages/messages/MessagesTp.php
index d413980e..5b435cc0 100644
--- a/languages/messages/MessagesTp.php
+++ b/languages/messages/MessagesTp.php
@@ -1,6 +1,9 @@
<?php
/** Toki Pona
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment not an official code. Falls back to 'tokipona'. Also see http://www.sil.org/iso639-3/cr_files/2007-011_tok.pdf
diff --git a/languages/messages/MessagesTpi.php b/languages/messages/MessagesTpi.php
index e386a81e..b52ae568 100644
--- a/languages/messages/MessagesTpi.php
+++ b/languages/messages/MessagesTpi.php
@@ -81,13 +81,15 @@ $messages = array(
'category-media-header' => 'Ol media (olsem piksa) insait long grup "$1"',
'category-empty' => "''Dispela grup i no gat wanpela pes o media (olsem piksa) insait long en nau.''",
-'newwindow' => '(bai kamap long nupela windo)',
-'cancel' => 'Toromwe senis',
+'newwindow' => '(bai kamap long nupela windo)',
+'cancel' => 'Toromwe senis',
+'mytalk' => 'Toktok bilong mi',
+'navigation' => 'Ol bikpela pes',
+
+# Cologne Blue skin
'qbfind' => 'Painim',
'qbedit' => 'Senisim',
'qbspecialpages' => 'Ol sipesol pes',
-'mytalk' => 'Toktok bilong mi',
-'navigation' => 'Ol bikpela pes',
'help' => 'Halivim mi',
'search' => 'Painim',
@@ -159,7 +161,9 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
'rc_categories_any' => 'Olgeta',
# Recent changes linked
-'recentchangeslinked' => 'Ol senis klostu',
+'recentchangeslinked' => 'Ol senis klostu',
+'recentchangeslinked-feed' => 'Ol senis klostu',
+'recentchangeslinked-toolbox' => 'Ol senis klostu',
# Upload
'upload' => 'Salim media fail',
@@ -225,6 +229,8 @@ Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis
'contributions' => 'Ol senis yusa i wokim',
'mycontris' => 'Ol senis mi wokim',
+'sp-contributions-talk' => 'Toktok',
+
# What links here
'whatlinkshere' => 'Ol link ikam long hia',
diff --git a/languages/messages/MessagesTr.php b/languages/messages/MessagesTr.php
index 95ae2a6c..4c2194eb 100644
--- a/languages/messages/MessagesTr.php
+++ b/languages/messages/MessagesTr.php
@@ -38,8 +38,8 @@ $namespaceNames = array(
NS_PROJECT_TALK => '$1_tartışma',
NS_FILE => 'Dosya',
NS_FILE_TALK => 'Dosya_tartışma',
- NS_MEDIAWIKI => 'MedyaViki',
- NS_MEDIAWIKI_TALK => 'MedyaViki_tartışma',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_tartışma',
NS_TEMPLATE => 'Şablon',
NS_TEMPLATE_TALK => 'Şablon_tartışma',
NS_HELP => 'Yardım',
@@ -51,12 +51,14 @@ $namespaceNames = array(
$namespaceAliases = array(
'Resim' => NS_FILE,
'Resim_tartışma' => NS_FILE_TALK,
+ 'MedyaViki' => NS_MEDIAWIKI,
+ 'MedyaViki_tartışma' => NS_MEDIAWIKI_TALK,
);
$specialPageAliases = array(
'DoubleRedirects' => array( 'ÇiftYönlendirmeler' ),
'BrokenRedirects' => array( 'BozukYönlendirmeler' ),
- 'Disambiguations' => array( 'AnlamAyrım' ),
+ 'Disambiguations' => array( 'AnlamAyrım', 'AnlamAyrımı' ),
'Userlogin' => array( 'KullanıcıGiriş' ),
'Userlogout' => array( 'KullanıcıÇıkış' ),
'CreateAccount' => array( 'HesapOluştur' ),
@@ -69,20 +71,25 @@ $specialPageAliases = array(
'Listusers' => array( 'KullanıcıListesi' ),
'Listgrouprights' => array( 'GrupHaklarıListesi' ),
'Statistics' => array( 'İstatistikler' ),
- 'Randompage' => array( 'Rasgele', 'RasgeleSayfa' ),
+ 'Randompage' => array( 'Rastgele', 'RastgeleSayfa' ),
'Lonelypages' => array( 'YalnızSayfalar' ),
'Uncategorizedpages' => array( 'KategorisizSayfalar' ),
'Uncategorizedcategories' => array( 'KategorisizKategoriler' ),
- 'Uncategorizedimages' => array( 'KategorisizResimler' ),
+ 'Uncategorizedimages' => array( 'KategorisizDosyalar' ),
'Uncategorizedtemplates' => array( 'KategorisizŞablonlar' ),
'Unusedcategories' => array( 'KullanılmayanKategoriler' ),
- 'Unusedimages' => array( 'KullanılmayanResimler' ),
- 'Wantedpages' => array( 'İstenenSayfalar', 'KırıkLinler' ),
+ 'Unusedimages' => array( 'KullanılmayanDosyalar' ),
+ 'Wantedpages' => array( 'İstenenSayfalar' ),
'Wantedcategories' => array( 'İstenenKategoriler' ),
'Wantedfiles' => array( 'İstenenDosyalar' ),
'Wantedtemplates' => array( 'İstenenŞablonlar' ),
- 'Mostimages' => array( 'EnResimli' ),
- 'Mostcategories' => array( 'EnKategorili' ),
+ 'Mostlinked' => array( 'EnÇokBağlantıVerilenSayfalar' ),
+ 'Mostlinkedcategories' => array( 'EnÇokBağlantıVerilenKategoriler' ),
+ 'Mostlinkedtemplates' => array( 'EnÇokBağlantıVerilenŞablonlar' ),
+ 'Mostimages' => array( 'EnÇokBağlantıVerilenDosyalar' ),
+ 'Mostcategories' => array( 'EnFazlaKategorili' ),
+ 'Mostrevisions' => array( 'EnÇokSürüm' ),
+ 'Fewestrevisions' => array( 'EnAzSürüm' ),
'Shortpages' => array( 'KısaSayfalar' ),
'Longpages' => array( 'UzunSayfalar' ),
'Newpages' => array( 'YeniSayfalar' ),
@@ -95,9 +102,9 @@ $specialPageAliases = array(
'Ipblocklist' => array( 'IPEngelListesi' ),
'Specialpages' => array( 'ÖzelSayfalar' ),
'Contributions' => array( 'Katkılar' ),
- 'Emailuser' => array( 'E-postalAt' ),
+ 'Emailuser' => array( 'E-postaGönder' ),
'Confirmemail' => array( 'E-postaDoğrula' ),
- 'Whatlinkshere' => array( 'VerilenBağlantılar' ),
+ 'Whatlinkshere' => array( 'SayfayaBağlantılar' ),
'Recentchangeslinked' => array( 'İlgiliDeğişiklikler' ),
'Movepage' => array( 'SayfaTaşı' ),
'Blockme' => array( 'BeniEngelle' ),
@@ -105,7 +112,7 @@ $specialPageAliases = array(
'Categories' => array( 'Kategoriler' ),
'Export' => array( 'DışaAktar' ),
'Version' => array( 'Sürüm' ),
- 'Allmessages' => array( 'TümArayüzMetinleri' ),
+ 'Allmessages' => array( 'TümMesajlar' ),
'Log' => array( 'Kayıt', 'Kayıtlar' ),
'Blockip' => array( 'IPEngelle' ),
'Undelete' => array( 'Gerigetir' ),
@@ -114,34 +121,164 @@ $specialPageAliases = array(
'Unlockdb' => array( 'DBKilitAç' ),
'Userrights' => array( 'KullanıcıHakları' ),
'MIMEsearch' => array( 'MIMEArama' ),
- 'FileDuplicateSearch' => array( 'KopyaDosyaAraması' ),
+ 'FileDuplicateSearch' => array( 'KopyaDosyaAraması', 'ÇiftDosyaAraması' ),
'Unwatchedpages' => array( 'İzlenmeyenSayfalar' ),
'Listredirects' => array( 'YönlendirmeListesi' ),
- 'Revisiondelete' => array( 'RevizyonSil' ),
+ 'Revisiondelete' => array( 'SürümSil' ),
'Unusedtemplates' => array( 'KullanılmayanŞablonlar' ),
- 'Randomredirect' => array( 'RasgeleYönlendirme' ),
+ 'Randomredirect' => array( 'RastgeleYönlendirme' ),
'Mypage' => array( 'BenimSayfam' ),
'Mytalk' => array( 'MesajSayfam' ),
'Mycontributions' => array( 'Katkılarım' ),
- 'Listadmins' => array( 'YöneticiListesi' ),
+ 'Listadmins' => array( 'HizmetliListesi' ),
'Listbots' => array( 'BotListesi' ),
'Popularpages' => array( 'PopülerSayfalar' ),
'Search' => array( 'Ara' ),
- 'Resetpass' => array( 'ŞifreSıfırla', 'ParolaSıfırla' ),
+ 'Resetpass' => array( 'ŞifreDeğiştir', 'ParolaDeğiştir', 'ŞifreSıfırla', 'ParolaSıfırla' ),
'Withoutinterwiki' => array( 'İntervikisiz' ),
- 'MergeHistory' => array( 'RevizyonBirleştir' ),
+ 'MergeHistory' => array( 'SürümBirleştir' ),
'Filepath' => array( 'DosyaKonumu' ),
- 'Invalidateemail' => array( 'EmailDoğrulamaİptal' ),
+ 'Invalidateemail' => array( 'E-postaDoğrulamaİptal' ),
+ 'Blankpage' => array( 'BoşSayfa' ),
+ 'LinkSearch' => array( 'DışBağlantıAra' ),
+ 'DeletedContributions' => array( 'SilinenKatkılar' ),
+ 'Tags' => array( 'Etiketler' ),
+ 'Activeusers' => array( 'AktifKullanıcılar' ),
);
$magicWords = array(
- 'redirect' => array( '0', '#YÖNLENDİRME', '#REDIRECT' ),
+ 'redirect' => array( '0', '#YÖNLENDİRME', '#YÖNLENDİR', '#REDIRECT' ),
+ 'notoc' => array( '0', '__İÇİNDEKİLERYOK__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__GALERİYOK__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__İÇİNDEKİLERZORUNLU__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__İÇİNDEKİLER__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__DEĞİŞTİRYOK__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__BAŞLIKYOK__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'MEVCUTAY', 'MEVCUTAY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MEVCUTAY1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'MEVCUTAYADI', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', 'MEVCUTAYKISALTMASI', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'MEVCUTGÜN', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'MEVCUTGÜN2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'MEVCUTGÜNADI', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'MEVCUTYIL', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'MEVCUTZAMAN', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'MEVCUTSAAT', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'YERELAY', 'YERELAY2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'YERELAY1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'YERELAYADI', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'YERELAYDIİYELİK', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'YERELAYKISALTMASI', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'YERELGÜN', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'YERELGÜN2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'YERELGÜNADI', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'YERELYIL', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'YERELZAMAN', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'YERELSAAT', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'SAYFASAYISI', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'MADDESAYISI', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'DOSYASAYISI', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'KULLANICISAYISI', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'AKTİFKULLANICISAYISI', 'ETKİNKULLANICISAYISI', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'DEĞİŞİKLİKSAYISI', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'GÖRÜNTÜLEMESAYISI', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'SAYFAADI', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'SAYFAADIU', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'İSİMALANI', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'İSİMALANIU', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'TARTIŞMAALANI', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'TARTIŞMAALANIU', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'KONUALANI', 'MADDEALANI', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'KONUALANIU', 'MADDEALANIU', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'TAMSAYFAADI', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'TAMSAYFAADIU', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'ALTSAYFAADI', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'ALTSAYFAADIU', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'ÜSTSAYFAADI', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'ÜSTSAYFAADIU', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'TARTIŞMASAYFASIADI', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'TARTIŞMASAYFASIADIU', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'KONUSAYFASIADI', 'MADDESAYFASIADI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'KONUSAYFASIADIU', 'MADDESAYFASIADIU', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ 'msg' => array( '0', 'MSJ:', 'MSG:' ),
+ 'subst' => array( '0', 'KOPYALA:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'MSJNW:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'küçükresim', 'küçük', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'küçükresim=$1', 'küçük=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'sağ', 'right' ),
'img_left' => array( '1', 'sol', 'left' ),
+ 'img_none' => array( '1', 'yok', 'none' ),
+ 'img_width' => array( '1', '$1pik', '$1piksel', '$1px' ),
+ 'img_center' => array( '1', 'orta', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'çerçeveli', 'çerçeve', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'çerçevesiz', 'frameless' ),
+ 'img_page' => array( '1', 'sayfa=$1', 'sayfa $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'dikey', 'dikey=$1', 'dikey $1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'sınır', 'border' ),
+ 'img_baseline' => array( '1', 'tabançizgisi', 'altçizgi', 'baseline' ),
+ 'img_sub' => array( '1', 'alt', 'sub' ),
+ 'img_super' => array( '1', 'üst', 'üs', 'super', 'sup' ),
+ 'img_top' => array( '1', 'tavan', 'tepe', 'top' ),
+ 'img_text_top' => array( '1', 'metin-tavan', 'metin-tepe', 'text-top' ),
+ 'img_middle' => array( '1', 'merkez', 'middle' ),
+ 'img_bottom' => array( '1', 'taban', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'metin-taban', 'text-bottom' ),
+ 'img_link' => array( '1', 'bağlantı=$1', 'link=$1' ),
+ 'int' => array( '0', 'İNT:', 'INT:' ),
'sitename' => array( '1', 'SİTEADI', 'SITENAME' ),
+ 'ns' => array( '0', 'İA:', 'NS:' ),
+ 'localurl' => array( '0', 'YERELURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'YERELURLU:', 'LOCALURLE:' ),
+ 'server' => array( '0', 'SUNUCU', 'SERVER' ),
+ 'servername' => array( '0', 'SUNUCUADI', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'BETİKYOLU', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'BİÇEMYOLU', 'STYLEPATH' ),
+ 'grammar' => array( '0', 'GRAMER:', 'GRAMMAR:' ),
'gender' => array( '0', 'CİNSİYET:', 'GENDER:' ),
- 'language' => array( '0', '#DİL:', '#LANGUAGE:' ),
+ 'notitleconvert' => array( '0', '__BAŞLIKDÖNÜŞÜMÜYOK__', '__BDY__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__İÇERİKDÖNÜŞÜMÜYOK__', '__İDY__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'MEVCUTHAFTA', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'MEVCUTHAFTANINGÜNÜ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'YERELHAFTA', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'YERELHAFTANINGÜNÜ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'SÜRÜMNO', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'SÜRÜMGÜNÜ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'SÜRÜMGÜNÜ2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'SÜRÜMAYI', 'REVISIONMONTH' ),
+ 'revisionyear' => array( '1', 'SÜRÜMYILI', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'SÜRÜMZAMANBİLGİSİ', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'SÜRÜMKULLANICI', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'ÇOĞUL:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'TAMURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'TAMURLU:', 'FULLURLE:' ),
+ 'lcfirst' => array( '0', 'KHİLK:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'BHİLK:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'KH:', 'LC:' ),
+ 'uc' => array( '0', 'BH:', 'UC:' ),
+ 'raw' => array( '0', 'HAM:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'BAŞLIKGÖSTER', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__YENİBAŞLIKBAĞLANTISI__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__YENİBAŞLIKBAĞLANTISIYOK__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'MEVCUTSÜRÜM', 'CURRENTVERSION' ),
+ 'currenttimestamp' => array( '1', 'MEVCUTZAMANBİLGİSİ', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'YERELZAMANBİLGİSİ', 'LOCALTIMESTAMP' ),
+ 'language' => array( '0', '#DİL:', '#LİSAN:', '#LANGUAGE:' ),
+ 'contentlanguage' => array( '1', 'İÇERİKDİLİ', 'İÇERİKLİSANI', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'İSİMALANINDAKİSAYFALAR', 'İADAKİSAYFALAR', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'HİZMETLİSAYISI', 'NUMBEROFADMINS' ),
'special' => array( '0', 'özel', 'special' ),
+ 'defaultsort' => array( '1', 'VARSAYILANSIRALA:', 'VARSAYILANSIRALAMAANAHTARI:', 'VARSAYILANKATEGORİSIRALA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'DOSYA YOLU:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'etiket', 'tag' ),
+ 'hiddencat' => array( '1', '__GİZLİKAT__', '__GİZLİKATEGORİ__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'KATEGORİDEKİSAYFALAR', 'KATTAKİSAYFALAR', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'SAYFABOYUTU', 'PAGESIZE' ),
+ 'index' => array( '1', '__ENDEKS__', '__DİZİN__', '__INDEX__' ),
+ 'noindex' => array( '1', '__ENDEKSYOK__', '__DİZİNYOK__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'GRUPTAKİSAYI', 'GRUBUNSAYISI', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__STATİKYÖNLENDİRME__', '__SABİTYÖNLENDİRME__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'KORUMASEVİYESİ', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'formattarihi', 'tarihformatı', 'formatdate', 'dateformat' ),
);
$separatorTransformTable = array(',' => '.', '.' => ',' );
@@ -178,6 +315,7 @@ $messages = array(
'tog-enotifminoredits' => 'Sayfalardaki küçük değişikliklerde de bana e-posta gönder',
'tog-enotifrevealaddr' => 'E-mail adresimi bildiri maillerinde göster.',
'tog-shownumberswatching' => 'İzleyen kullanıcı sayısını göster',
+'tog-oldsig' => 'Mevcut imzanın önizlemesi:',
'tog-fancysig' => 'İmzaya vikimetin muamelesi yap (otomatik bir bağlantı olmadan)',
'tog-externaleditor' => 'Değişiklikleri başka editör programı ile yap',
'tog-externaldiff' => 'Karşılaştırmaları dış programa yaptır.',
@@ -200,6 +338,13 @@ $messages = array(
'underline-never' => 'Asla',
'underline-default' => 'Tarayıcı karar versin',
+# Font style option in Special:Preferences
+'editfont-style' => 'Değişiklik alanı yazıtipi biçemi:',
+'editfont-default' => 'Tarayıcı varsayılanı',
+'editfont-monospace' => 'Sabit yer kaplayan yazı tipi',
+'editfont-sansserif' => 'Sans-serif yazıtipi',
+'editfont-serif' => 'Serif yazı tipi',
+
# Dates
'sunday' => 'Pazar',
'monday' => 'Pazartesi',
@@ -259,7 +404,7 @@ $messages = array(
'category-media-header' => '"$1" kategorisindeki medya',
'category-empty' => "''Bu kategoride henüz herhangi bir madde ya da medya bulunmamaktadır.''",
'hidden-categories' => '{{PLURAL:$1|Gizli kategori|Gizli kategoriler}}',
-'hidden-category-category' => 'Gizli kategoriler', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Gizli kategoriler',
'category-subcat-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategori toplam $2 kategoriden {{PLURAL:$1|alt kategori|$1 alt kategori}}ye sahiptir}}',
'category-subcat-count-limited' => 'Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.',
'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 den, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}',
@@ -267,6 +412,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 den, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}',
'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} mevcut kategoridedir.',
'listingcontinuesabbrev' => '(devam)',
+'index-category' => 'Endeksli sayfalar',
+'noindex-category' => 'Endeksli olmayan sayfalar',
'mainpagetext' => "'''MediaWiki başarı ile kuruldu.'''",
'mainpagedocfooter' => 'Viki yazılımının kullanımı hakkında bilgi almak için [http://meta.wikimedia.org/wiki/Help:Contents kullanıcı rehberine] bakınız.
@@ -276,10 +423,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]',
-'about' => 'Hakkında',
-'article' => 'Madde',
-'newwindow' => '(yeni bir pencerede açılır)',
-'cancel' => 'İptal',
+'about' => 'Hakkında',
+'article' => 'Madde',
+'newwindow' => '(yeni bir pencerede açılır)',
+'cancel' => 'İptal',
+'moredotdotdot' => 'Daha...',
+'mypage' => 'sayfam',
+'mytalk' => 'mesaj sayfam',
+'anontalk' => "Bu IP'nin mesajları",
+'navigation' => 'gezinti',
+'and' => '&#32;ve',
+
+# Cologne Blue skin
'qbfind' => 'Bul',
'qbbrowse' => 'Tara',
'qbedit' => 'Değiştir',
@@ -287,15 +442,35 @@ $messages = array(
'qbpageinfo' => 'Bağlam',
'qbmyoptions' => 'Sayfalarım',
'qbspecialpages' => 'Özel sayfalar',
-'moredotdotdot' => 'Daha...',
-'mypage' => 'sayfam',
-'mytalk' => 'mesaj sayfam',
-'anontalk' => "Bu IP'nin mesajları",
-'navigation' => 'gezinti',
-'and' => '&#32;ve',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'SSS',
+'faqpage' => 'Project:SSS',
+
+# Vector skin
+'vector-action-addsection' => 'Konu ekle',
+'vector-action-delete' => 'Sil',
+'vector-action-move' => 'Taşı',
+'vector-action-protect' => 'Koru',
+'vector-action-undelete' => 'Silinmeyi geri al',
+'vector-action-unprotect' => 'Korumayı kaldır',
+'vector-namespace-category' => 'Kategori',
+'vector-namespace-help' => 'Yardım sayfası',
+'vector-namespace-image' => 'Dosya',
+'vector-namespace-main' => 'Sayfa',
+'vector-namespace-media' => 'Ortam sayfası',
+'vector-namespace-mediawiki' => 'İleti',
+'vector-namespace-project' => 'Proje sayfası',
+'vector-namespace-special' => 'Özel sayfa',
+'vector-namespace-talk' => 'Tartışma',
+'vector-namespace-template' => 'Şablon',
+'vector-namespace-user' => 'Kullanıcı sayfası',
+'vector-view-create' => 'Oluştur',
+'vector-view-edit' => 'Değiştir',
+'vector-view-history' => 'Geçmişi görüntüle',
+'vector-view-view' => 'Oku',
+'vector-view-viewsource' => 'Kaynağı gör',
+'actions' => 'Eylemler',
+'namespaces' => 'Ad alanları',
+'variants' => 'Varyantlar',
'errorpagetitle' => 'Hata',
'returnto' => '$1 sayfasına dön.',
@@ -345,18 +520,22 @@ $messages = array(
'otherlanguages' => 'Diğer diller',
'redirectedfrom' => '($1 sayfasından yönlendirildi)',
'redirectpagesub' => 'Yönlendirme sayfası',
-'lastmodifiedat' => 'Bu sayfa son olarak $2, $1 tarihinde güncellenmiştir.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu sayfa son olarak $2, $1 tarihinde güncellenmiştir.',
'viewcount' => 'Bu sayfaya {{PLURAL:$1|bir|$1 }} defa erişilmiş.',
'protectedpage' => 'Korumalı sayfa',
'jumpto' => 'Git ve:',
'jumptonavigation' => 'kullan',
'jumptosearch' => 'ara',
+'view-pool-error' => 'Üzgünüz, sunucular şu anda aşırı yüklendi.
+Birçok kullanıcı bu sayfayı görüntülemeye çalışıyor.
+Lütfen bu sayfaya tekrar erişmeyi denemeden önce biraz bekleyin.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} hakkında',
'aboutpage' => 'Project:Hakkında',
'copyright' => 'İçerik $1 altındadır.',
-'copyrightpagename' => '{{SITENAME}} telif hakları',
'copyrightpage' => '{{ns:project}}:Telif hakları',
'currentevents' => 'Güncel olaylar',
'currentevents-url' => 'Project:Güncel olaylar',
@@ -364,8 +543,6 @@ $messages = array(
'disclaimerpage' => 'Project:Genel_sorumluluk_reddi',
'edithelp' => 'Nasıl değiştirilir?',
'edithelppage' => 'Help:Sayfa nasıl değiştirilir',
-'faq' => 'SSS',
-'faqpage' => 'Project:SSS',
'helppage' => 'Help:İçindekiler',
'mainpage' => 'Ana sayfa',
'mainpage-description' => 'Ana sayfa',
@@ -442,10 +619,6 @@ Son yapılan veritabanı sorgusu:
"$1"
Kullanılan fonksiyon "$2".
Veritabanının verdiği hata mesajı "$3: $4"',
-'noconnect' => 'Özür dileriz! Viki bazı teknik sorunlar yaşıyor ve veritabanı sunucusu ile iletişim kuramıyor.<br />
-$1',
-'nodb' => '$1 veri tabanı seçilemedi',
-'cachederror' => 'Aşağıdaki, istediğiniz sayfanın önbellekteki kopyasıdır ve güncel olmayabilir.',
'laggedslavemode' => 'Uyarı: Sayfa son güncellemeleri içermeyebilir.',
'readonly' => 'Veritabanı kilitlendi',
'enterlockreason' => 'Koruma için bir neden belirtin. Korumanın ne zaman kaldırılacağına dair tahmini bir tarih eklemeyi unutmayın.',
@@ -463,6 +636,8 @@ Lütfen bunu bir [[Special:ListUsers/sysop|hizmetliye]], URL\'yi not ederek ilet
'readonly_lag' => 'Yedek sunucular ana sunucu ile güncellemeye çalışırken veritabanı otomatik olarak kilitlendi.',
'internalerror' => 'Yazılım hatası',
'internalerror_info' => 'İç hata: $1',
+'fileappenderrorread' => 'Ekleme yapılırken "$1" okunamadı.',
+'fileappenderror' => '"$1" dosyası "$2" dosyasına eklenemiyor.',
'filecopyerror' => '"$1" "$2" dosyasına kopyalanamıyor.',
'filerenameerror' => '"$1" dosyasının ismi "$2" olarak değiştirilemedi.',
'filedeleteerror' => '"$1" dosyası silinemedi.',
@@ -472,7 +647,8 @@ Lütfen bunu bir [[Special:ListUsers/sysop|hizmetliye]], URL\'yi not ederek ilet
'unexpected' => 'beklenmeyen değer: "$1"="$2".',
'formerror' => 'Hata: Form gönderilemiyor',
'badarticleerror' => 'Yapmak istediğiniz işlem geçersizdir.',
-'cannotdelete' => 'Belirtilen sayfa ya da görüntü silinemedi. (başka bir kullanıcı tarafından silinmiş olabilir).',
+'cannotdelete' => '"$1" sayfa ya da dosyası silinemedi.
+Başka bir kullanıcı tarafından silinmiş olabilir.',
'badtitle' => 'Geçersiz başlık',
'badtitletext' => 'Girilen sayfa ismi ya hatalı ya boş ya da diller arası bağlantı veya vikiler arası bağlantı içerdiğinden geçerli değil. Başlıklarda kullanılması yasak olan bir ya da daha çok karakter içeriyor olabilir.',
'perfcached' => 'Veriler daha önceden hazırlanmış olabilir. Bu sebeple güncel olmayabilir!',
@@ -505,7 +681,6 @@ Verilen sebep: ''$2''.",
'virus-unknownscanner' => 'bilinmeyen antivürüs:',
# Login and logout pages
-'logouttitle' => 'Oturumu kapat',
'logouttext' => "'''Oturumu kapattınız.'''
Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz, ya da [[Special:UserLogin|yeniden oturum açabilirsiniz]] (ister aynı kullanıcı adıyla, ister başka bir kullanıcı adıyla).
@@ -514,7 +689,6 @@ Web tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hala
Hesabınız açıldı.
[[Special:Preferences|{{SITENAME}} tercihlerinizi]] değiştirmeyi unutmayın.',
-'loginpagetitle' => 'oturum aç',
'yourname' => 'Kullanıcı adınız:',
'yourpassword' => 'Parolanız',
'yourpasswordagain' => 'Parolayı yeniden yaz',
@@ -525,6 +699,7 @@ Hesabınız açıldı.
'nav-login-createaccount' => 'Oturum aç ya da yeni hesap edin',
'loginprompt' => '{{SITENAME}} sitesinde oturum açabilmek için çerezleri etkinleştirmeniz gerekmektedir.',
'userlogin' => 'Oturum aç',
+'userloginnocreate' => 'Giriş yap',
'logout' => 'Oturumu kapat',
'userlogout' => 'Oturumu kapat',
'notloggedin' => 'Oturum açık değil',
@@ -536,28 +711,8 @@ Hesabınız açıldı.
'createaccountmail' => 'e-posta ile',
'badretype' => 'Girdiğiniz parolalar birbirini tutmuyor.',
'userexists' => 'Girdiğiniz kullanıcı adı kullanımda. Lütfen farklı bir kullanıcı adı seçin.',
-'youremail' => 'E-posta adresiniz*',
-'username' => 'Kullanıcı adı:',
-'uid' => 'Kayıt numarası:',
-'prefs-memberingroups' => '{{PLURAL:$1|grup|grup}} üyesi:',
-'yourrealname' => 'Gerçek isminiz:',
-'yourlanguage' => 'Dil:',
-'yourvariant' => 'Sizce:',
-'yournick' => 'İmzalarda gözükmesini istediğiniz isim',
-'badsig' => 'Geçersiz ham imza; HTML etiketlerini kontorl edin.',
-'badsiglength' => 'İmzanız çok uzun.
-$1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.',
-'yourgender' => 'Cinsiyet:',
-'gender-unknown' => 'Belirtilmemiş',
-'gender-male' => 'Erkek',
-'gender-female' => 'Bayan',
-'prefs-help-gender' => 'İsteğe bağlı: yazılım tarafından doğru cinsiyet adreslemesi için kullanılır. Bu bilgi umumi olacaktır.',
-'email' => 'E-posta',
-'prefs-help-realname' => '* Gerçek isim (isteğe bağlı): eğer gerçek isminizi vermeyi seçerseniz, çalışmanızı size atfederken kullanılacaktır.',
'loginerror' => 'Oturum açma hatası.',
-'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak eğer parolanızı unutursanız e-posta adresinize yeni parola gönderilmesine olanak sağlar.
-Aynı zamanda diğer kullanıcıların kullanıcı ve kullanıcı mesaj sayfalarınız üzerinden kimliğinizi bilmeksizin sizinle iletişim kurmalarına da olanak sağlar.',
-'prefs-help-email-required' => 'E-posta adresi gerekmektedir.',
+'createaccounterror' => 'Hesap oluşturulamıyor: $1',
'nocookiesnew' => 'Kullanıcı hesabı yaratıldı ama oturum açamadınız.
Oturum açmak için {{SITENAME}} çerezleri kullanır.
Çerez kullanımı devredışı.
@@ -571,16 +726,18 @@ Kullanıcı adları büyük-küçük harf duyarlıdır.
Yazılışı kontrol edin veya [[Special:UserLogin/signup|yeni bir hesap açın]].',
'nosuchusershort' => '"<nowiki>$1</nowiki>" adında bir kullanıcı bulunmamaktadır. Yazılışı kontrol edin.',
'nouserspecified' => 'Bir kullanıcı adı belirtmek zorundasınız.',
+'login-userblocked' => 'Bu kullanıcı engellenmiş. Giriş yapmaya izin verilmiyor.',
'wrongpassword' => 'Parolayı yanlış girdiniz. Lütfen tekrar deneyiniz.',
'wrongpasswordempty' => 'Boş parola girdiniz. Lütfen tekrar deneyiniz.',
-'passwordtooshort' => 'Parolanız geçersiz veya çok kısa.
-En az {{PLURAL:$1|1 karakter|$1 karakter}} içermeli ve kullanıcı adınızdan farklı olmalı.',
+'passwordtooshort' => 'Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.',
+'password-name-match' => 'Şifreniz kullanıcı adınızdan farklı olmalıdır.',
'mailmypassword' => 'Bana e-posta ile yeni parola gönder',
'passwordremindertitle' => '{{SITENAME}} için yeni geçici şifre',
'passwordremindertext' => 'Birisi (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. "$2" kullanıcısına geçici olarak "$3" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.
Parola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve artık parolanızı değiştirmek istemiyorsanız; bu mesajı önemsemeyerek eski parolanızı kullanmaya devam edebilirsiniz.',
'noemail' => '"$1" adlı kullanıcıya kayıtlı bir e-posta adresi yok.',
+'noemailcreate' => 'Geçerli bir e-posta adresi sağlamalısınız',
'passwordsent' => '"$1" adına kayıtlı e-posta adresine yeni bir parola gönderildi. Oturumu, lütfen, iletiyi aldıktan sonra açın.',
'blocked-mailpassword' => 'Siteye erişiminiz engellenmiş olduğundan, yeni şifre gönderilme işlemi yapılamamaktadır.',
'eauthentsent' => 'Kaydedilen adrese onay kodu içeren bir e-posta gönderildi.
@@ -605,9 +762,11 @@ Lütfen geçerli bir formatta e-posta adresi yazın veya bu bölümü boş bıra
Siteye giriş yapmalı ve parolanızı değiştirmelisiniz.
Eğer kullanıcı hesabını yanlışlıkla oluşturmuş iseniz, bu mesajı yoksayabilirsiniz.',
+'usernamehasherror' => 'Kullanıcı adı karma karakterler içeremez',
'login-throttled' => 'Yakın zamanda çok fazla oturum açma denemesinde bulundunuz.
Lütfen tekrar denemeden önce bekleyin.',
'loginlanguagelabel' => 'Dil: $1',
+'suspicious-userlogout' => 'Çıkış isteğiniz reddedildi çünkü bozuk bir tarayıcı ya da önbellekli vekil tarafından gönerilmiş gibi görünüyor.',
# Password reset dialog
'resetpass' => 'Parolayı değiştir',
@@ -620,17 +779,13 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
'retypenew' => 'Yeni parolayı tekrar girin',
'resetpass_submit' => 'Şifreyi ayarlayın ve oturum açın',
'resetpass_success' => 'Parolanız başarıyla değiştirldi! Şimdi oturumunuz açılıyor...',
-'resetpass_bad_temporary' => 'Geçersiz geçici parola. Zaten başarıyla parolanızı değiştirmiş veya yeni geçici şifre istemiş olabilirsiniz.',
'resetpass_forbidden' => 'Parolalar değiştirilememektedir',
'resetpass-no-info' => 'Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.',
'resetpass-submit-loggedin' => 'Parolayı değiştir',
+'resetpass-submit-cancel' => 'İptal',
'resetpass-wrong-oldpass' => 'Geçersiz geçici veya güncel şifre.
Şifrenizi zaten başarıyla değiştirdiniz ya da yeni bir geçici şifre istediniz.',
'resetpass-temp-password' => 'Geçici parola:',
-'resetpass-log' => 'Parola sıfırlamaları günlüğü',
-'resetpass-logtext' => 'Aşağıdaki, bir yönetici tafından şifreleri değiştirilen kullanıcıların günlüğüdür.',
-'resetpass-logentry' => '$1 için parolayı değiştirdi',
-'resetpass-comment' => 'Parola sıfırlama nedeni:',
# Edit page toolbar
'bold_sample' => 'Kalın yazı',
@@ -704,7 +859,6 @@ Lütfen yapacağınız herhangi bir sorguda yukarıdaki bütün detayları bulun
'blockededitsource' => "'''$1''' sayfasında '''yaptığınız değişikliğe''' ait metin aşağıdadır:",
'whitelistedittitle' => 'Değişiklik yapmak için oturum açmalısınız',
'whitelistedittext' => 'Değişiklik yapabilmek için $1.',
-'confirmedittitle' => 'Değişiklik yapmak için e-posta onaylaması gerekiyor',
'confirmedittext' => 'Sayfa değiştirmeden önce e-posta adresinizi onaylamalısınız. Lütfen [[Special:Preferences|tercihler]] kısmından e-postanızı ekleyin ve onaylayın.',
'nosuchsectiontitle' => 'Bölüm bulunamadı',
'nosuchsectiontext' => 'Bulunmayan bir konu başlığını değiştirmeyi denediniz.
@@ -723,9 +877,16 @@ Bu yeni hesap için parola, giriş yapıldıktan sonra ''[[Special:ChangePasswor
Bu başlığı diğer sayfalarda [[Special:Search/{{PAGENAME}}|arayabilir]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili günlükleri arayabilir],
ya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} değiştirebilirsiniz]</span>.',
+'noarticletext-nopermission' => 'Bu sayfa şu anda boştur.
+Bu başlığı [[Special:Search/{{PAGENAME}}|diğer sayfalarda arayabilir]]
+ya da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili günlükleri tarayabilirsiniz].</span>',
'userpage-userdoesnotexist' => '"$1" kullanıcı hesabı kayıtlı değil. Bu sayfayı oluşturmak/değiştirmek istiyorsanız lütfen kontrol edin.',
+'userpage-userdoesnotexist-view' => '"$1" kullanıcı hesabı kayıtlı değil.',
+'blocked-notice-logextract' => 'Bu kullancı şuanda engellenmiş.
+Son engelleme günlüğü girdisi referans için aşağıda sağlanmıştır:',
'clearyourcache' => "'''Not:''' Ayarlarınızı kaydettikten sonra, tarayıcınızın belleğini de temizlemeniz gerekmektedir: '''Mozilla / Firefox / Safari:''' ''Shift'' e basılıyken safyayı yeniden yükleyerek veya ''Ctrl-Shift-R'' yaparak (Apple Mac için ''Cmd-Shift-R'');, '''IE:''' ''Ctrl-F5'', '''Konqueror:''' Sadece sayfayı yeniden yükle tuşuna basarak.",
-'usercssjsyoucanpreview' => "'''İpucu:''' Sayfayı kaydetmeden önce '''önizlemeyi göster''''e tıklayarak yaptığınız yeni sayfayı gözden geçirin.",
+'usercssyoucanpreview' => "'''İpucu:''' Kaydetmeden önce \"{{int:showpreview}}\"e tıklayarak yeni CSSinizi test edin.",
+'userjsyoucanpreview' => "'''İpucu:''' Kaydetmeden önce \"{{int:showpreview}}\"e tıklayarak yeni JavaScript'inizi test edin.",
'usercsspreview' => "'''Sadece kullanıcı CSS dosyanızın önizlemesini görüyorsun.''' '''Kullanıcı CSS dosyası henüz kaydolmadı!'''",
'userjspreview' => "'''Sadece test ediyorsun ya da önizleme görüyorsun - kullanıcı JavaScript'i henüz kaydolmadı.'''",
'userinvalidcssjstitle' => "''Uyarı:''' \"\$1\" adıyla bir tema yoktur. tema-adı.css ve .js dosyalarının adları küçük harf ile yazması gerek, yani {{ns:user}}:Temel/'''M'''onobook.css değil, {{ns:user}}:Temel/'''m'''onobook.css.",
@@ -769,13 +930,16 @@ Kaydedilmesi mümkün değildir.'''",
'readonlywarning' => "'''DİKKAT: Bakım nedeni ile veritabanı şu anda kilitlidir. Bu sebeple değişiklikleriniz şu anda kaydedilememektedir. Yazdıklarınızı başka bir editöre alıp saklayabilir ve daha sonra tekrar buraya getirip kaydedebilirsiniz'''
Kilitleyen hizmetli şu açıklamayı eklemiştir: $1",
-'protectedpagewarning' => 'UYARI: Bu sayfa koruma altına alınmıştır ve yalnızca hizmetli olanlar tarafından değiştirilebilir. Bu sayfayı değiştirirken lütfen [[Project:Koruma altına alınmış sayfa|korumalı sayfa kurallarını]] uygulayınız.',
-'semiprotectedpagewarning' => "'''Uyarı''': Bu sayfa sadece kayıtlı kullanıcı olanlar tarafından değiştirilebilir.",
+'protectedpagewarning' => "'''Uyarı: Bu sayfa koruma altına alınmıştır ve yalnızca hizmetli olanlar tarafından değiştirilebilir.'''
+Son günlük girdisi referans amaçlı aşağıda verilmiştir:",
+'semiprotectedpagewarning' => "'''Not:''' Bu sayfa sadece kayıtlı kullanıcı olanlar tarafından değiştirilebilir.
+Son günlük girdisi referans amaçlı aşağıda verilmiştir:",
'cascadeprotectedwarning' => "'''UYARI:''' Bu sayfa sadece hizmetlilik yetkileri olan kullanıcıların değişiklik yapabileceği şekilde koruma altına alınmıştır. Çünkü \"kademeli\" seçeneği aktif hale getirilerek koruma altına alınan {{PLURAL:\$1|sayfada|sayfada}} kullanılmaktadır:",
-'titleprotectedwarning' => "'''UYARI: Bu sayfa [[Special:ListGroupRights|özel hakları]] olanların oluşturabilmeleri için kilitlenmiştir.'''",
-'templatesused' => 'Bu sayfada kullanılan şablonlar:',
-'templatesusedpreview' => 'Bu önizlemede kullanılan şablonlar:',
-'templatesusedsection' => 'Bu bölümde kullanılan şablonlar:',
+'titleprotectedwarning' => "'''Uyarı: Bu sayfa [[Special:ListGroupRights|özel hakları]] olanların oluşturabilmeleri için kilitlenmiştir.'''
+Son günlük girdisi referans amaçlı aşağıda verilmiştir:",
+'templatesused' => 'Bu sayfada kullanılan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedpreview' => 'Bu önizlemede kullanılan {{PLURAL:$1|şablon|şablonlar}}:',
+'templatesusedsection' => 'Bu bölümde kullanılan {{PLURAL:$1|şablon|şablonlar}}:',
'template-protected' => '(koruma)',
'template-semiprotected' => '(yarı-koruma)',
'hiddencategories' => 'Bu sayfa {{PLURAL:$1|1 gizli kategoriye|$1 gizli kategoriye}} mensuptur:',
@@ -783,16 +947,18 @@ Kilitleyen hizmetli şu açıklamayı eklemiştir: $1",
'nocreatetext' => '{{SITENAME}}, yeni sayfa oluşturulabilmesini engelledi.
Geri giderek varolan sayfayı değiştirebilirsiniz ya da kayıtlı iseniz [[Special:UserLogin|oturum açabilir]], değilseniz [[Special:UserLogin|kayıt olabilirsiniz]].',
'nocreate-loggedin' => 'Yeni sayfalar oluşturmaya yetkiniz yok.',
+'sectioneditnotsupported-title' => 'Bölüm değiştirmesi desteklenmiyor',
+'sectioneditnotsupported-text' => 'Bölüm değiştirmesi bu sayfada desteklenmiyor.',
'permissionserrors' => 'İzin hataları',
'permissionserrorstext' => 'Aşağıdaki {{PLURAL:$1|sebep|sebepler}}den dolayı, bunu yapmaya yetkiniz yok:',
'permissionserrorstext-withaction' => 'Aşağıdaki {{PLURAL:$1|neden|nedenler}}den dolayı $2 yetkiniz yok:',
-'recreate-deleted-warn' => "'''Uyarı: Daha önceden silinmiş bir sayfayı yeniden oluşturuyorsunuz.'''
+'recreate-moveddeleted-warn' => "'''Uyarı: Daha önceden silinmiş bir sayfayı tekrar oluşturuyorsunuz.'''
-Bu sayfayı düzenlemeye devam ederken bunun uygun olup olmadığını düşünmelisiniz.
-Kolaylık olması açısından bu sayfanın silme kayıtları burada belirtilmiştir:",
-'deleted-notice' => 'Bu sayfa silindi.
-Bu sayfanın silinme kaydı aşağıda bulunmaktadır.',
-'deletelog-fulllog' => 'Tüm kayıtları göster',
+Sayfayı değiştirmeye devam etmenin uygun olup olmadığını düşünmelisiniz.
+Sayfanın silme ve taşıma günlüğü uygunluk için burada verilmiştir:",
+'moveddeleted-notice' => 'Bu sayfa silinmiş.
+Sayfanın silme ve taşıma günlüğü referans için aşağıda verilmiştir.',
+'log-fulllog' => 'Tam günlüğü gör',
'edit-hook-aborted' => 'Değişiklik çengelle durduruldu.
Bir açıklama verilmedi.',
'edit-gone-missing' => 'Sayfa güncellenemiyor.
@@ -815,6 +981,7 @@ Bu değişkenler atlandı.',
'post-expand-template-argument-category' => 'Geçersiz şablon argümanları içeren sayfalar',
'parser-template-loop-warning' => 'Şablon düğümü tespit edildi: [[$1]]',
'parser-template-recursion-depth-warning' => 'Şablon özyineleme yoğunluğu limiti aşıldı ($1)',
+'language-converter-depth-warning' => 'Dil çevirici derinlik sınırı aşıldı ($1)',
# "Undo" feature
'undo-success' => 'Bu değişiklik geri alınabilir. Lütfen aşağıdaki karşılaştırmayı kontrol edin, gerçekten bu değişikliği yapmak istediğinizden emin olun ve sayfayı kaydederek bir önceki değişikliği geriye alın.',
@@ -834,7 +1001,7 @@ $3 tarafından verilen sebep ''$2''",
'currentrev' => 'Güncel sürüm',
'currentrev-asof' => '$1 itibarı ile sayfanın şu anki hâli.',
'revisionasof' => 'Sayfanın $1 tarihindeki hâli',
-'revision-info' => '$2 tarafından oluşturulmuş $1 tarihli sürüm', # Additionally available: $3: revision id
+'revision-info' => '$2 tarafından oluşturulmuş $1 tarihli sürüm',
'previousrevision' => '← Önceki hali',
'nextrevision' => 'Sonraki hali →',
'currentrevisionlink' => 'en güncel halini göster',
@@ -847,7 +1014,7 @@ $3 tarafından verilen sebep ''$2''",
Tanımlar: (güncel) = güncel sürümle aradaki fark,
(önceki) = bir önceki sürümle aradaki fark, K = küçük değişiklik.",
'history-fieldset-title' => 'Geçmişe gözat',
-'deletedrev' => '[silindi]',
+'history-show-deleted' => 'Sadece silinenler',
'histfirst' => 'En eski',
'histlast' => 'En yeni',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
@@ -856,70 +1023,113 @@ Tanımlar: (güncel) = güncel sürümle aradaki fark,
# Revision feed
'history-feed-title' => 'Değişiklik geçmişis',
'history-feed-description' => 'Viki üzerindeki bu sayfanın değişiklik geçmişi.',
-'history-feed-item-nocomment' => "$1, $2'de", # user at time
+'history-feed-item-nocomment' => "$1, $2'de",
'history-feed-empty' => 'İstediğiniz sayfa bulunmamaktadır.
Sayfa vikiden silinmiş ya da ismi değiştirilmiş olabilir.
Konu ile alakalı diğer sayfaları bulmak için [[Special:Search|vikide arama yapmayı]] deneyin.',
# Revision deletion
-'rev-deleted-comment' => '(yorum silindi)',
-'rev-deleted-user' => '(kullanıcı adı silindi)',
-'rev-deleted-event' => '(kayıt işlemi silindi)',
-'rev-deleted-text-permission' => "Bu sayfa revizyonu '''silinmiş'''.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Silme kayıtlarında] ayrıntıları bulunabilir.",
-'rev-deleted-text-view' => "Bu sayfa revizyonu '''silinmiş'''.
-Bir yönetici olarak sayfayı görebilirsiniz; [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} silme kayıtlarında] ayrıntılar bulunabilir.",
-'rev-deleted-no-diff' => "Bu sayfa değişikliğini göremezsiniz çünkü revizyonlardan biri '''silinmiş'''.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Silme günlüğünde] ayrıntılar bulunabilir.",
-'rev-deleted-unhide-diff' => "Bu sayfa değişikliğinin revizyonlarından birisi '''silinmiş'''.
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} Silme kayıtları]nda daha ayrıntılı bilgi bulunabilir.
-Bir yönetici olarak eğer devam ederseniz [$1 bu değişikliği görebilirsiniz].",
-'rev-delundel' => 'göster/gizle',
-'revisiondelete' => 'Sürümleri sil/geri getir',
-'revdelete-nooldid-title' => 'Hedef sürüm geçersiz',
-'revdelete-nooldid-text' => 'Bu fonksiyonu uygulamak için belirli hedef değişiklik veya değişikileriniz yok. Sunulmuş olan revizyon mevcut değil, veya mevcut revizyonu gizlemeye çalışıyorsunuz.',
-'revdelete-nologtype-title' => 'Hiçbir kayıt tipi verilmedi',
-'revdelete-nologtype-text' => 'Bu işlemi devreye sokmak için bir kayıt tipi belirtmediniz.',
-'revdelete-toomanytargets-title' => 'Çok fazla hedef',
-'revdelete-toomanytargets-text' => 'Bu işlemi gerçekleştirmek için çok fazla çeşit hedef belirttiniz.',
-'revdelete-nologid-title' => 'Geçersiz günlük girdisi',
-'revdelete-nologid-text' => 'Bu fonksiyonu uygulamak için hiçbir kayıt tipi belirtilmedi veya belirtilen kayıt tipi mevcut değil.',
-'revdelete-selected' => "'''[[:$1]] sayfasının {{PLURAL:$2|seçili değişikliği|seçili değişiklikleri}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Seçili kayıt olayı|Seçili kayıt olayları}}:'''",
-'revdelete-text' => "'''Silinen revizyonlar ve olaylar hala sayfa geçmişinde ve günlüklerde görünecektir, fakat içeriğin parçaları umumi olarak erişilemeyecektir.'''
-
-{{SITENAME}} sitesindeki diğer yöneticiler gizli içeriğe erişebilir ve ilave kısıtlamalar ayarlanmadıysa bu arayüz ile geri getirebilir.
-Lütfen, bunu yapmak istediğinizi , sonuçlarını anladığınızı, ve bunu [[{{MediaWiki:Policy-url}}|ilkelere]] göre yapıyor olduğunuzu onaylayın.",
-'revdelete-suppress-text' => "Saklama '''sadece''' aşağıdaki durumlar için kullanılmalıdır:
+'rev-deleted-comment' => '(yorum silindi)',
+'rev-deleted-user' => '(kullanıcı adı silindi)',
+'rev-deleted-event' => '(kayıt işlemi silindi)',
+'rev-deleted-user-contribs' => '[kullanıcı adı veya IP adresi çıkarıldı - değişiklik katkılardan gizlendi]',
+'rev-deleted-text-permission' => "Bu sayfa revizyonu '''silinmiş'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme kayıtlarında] ayrıntıları bulunabilir.",
+'rev-deleted-text-unhide' => "Bu sayfa revizyonu '''silinmiş'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme kayıtlarında] ayrıntıları bulunabilir.
+Bir hizmetli olarak eğer devam ederseniz [$1 bu revizyonu hala görebilirsiniz].",
+'rev-suppressed-text-unhide' => "Bu sayfa revizyonu '''bastırılmış'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Durdurma kayıtlarında] ayrıntıları bulunabilir.
+Bir hizmetli olarak eğer devam ederseniz [$1 bu revizyonu hala görebilirsiniz].",
+'rev-deleted-text-view' => "Bu sayfa revizyonu '''silinmiş'''.
+Bir hizmetli olarak sayfayı görebilirsiniz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme kayıtlarında] ayrıntılar bulunabilir.",
+'rev-suppressed-text-view' => "Bu sayfa revizyonu '''bastırılmış'''.
+Bir hizmetli olarak sayfayı görebilirsiniz; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} durdurma kayıtlarında] ayrıntılar bulunabilir.",
+'rev-deleted-no-diff' => "Bu sayfa değişikliğini göremezsiniz çünkü revizyonlardan biri '''silinmiş'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme günlüğünde] ayrıntılar bulunabilir.",
+'rev-suppressed-no-diff' => "Bu farkı göremezsiniz çünkü revizyonlardan birisi '''silinmiş'''.",
+'rev-deleted-unhide-diff' => "Bu değişikliğinin revizyonlarından birisi '''silinmiş'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Silme günlüğünde] ayrıntılar bulunabilir.
+Bir hizmetli olarak eğer devam ederseniz [$1 bu değişikliği hala görebilirsiniz].",
+'rev-suppressed-unhide-diff' => "Bu değişikliğinin revizyonlarından birisi '''bastırılmış'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} durdurma günlüğünde] ayrıntılar bulunabilir.
+Bir hizmetli olarak eğer devam ederseniz [$1 bu değişikliği hala görebilirsiniz].",
+'rev-deleted-diff-view' => "Bu değişikliğinin revizyonlarından birisi '''silinmiş'''.
+Bir hizmetli olarak bu değişikliği görebilirsiniz; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme günlüğünde] ayrıntılar bulunabilir.",
+'rev-suppressed-diff-view' => "Bu değişikliğinin revizyonlarından birisi '''bastırılmış'''.
+Bir hizmetli olarak bu değişikliği görebilirsiniz; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} durdurma günlüğünde] ayrıntılar bulunabilir.",
+'rev-delundel' => 'göster/gizle',
+'rev-showdeleted' => 'göster',
+'revisiondelete' => 'Sürümleri sil/geri getir',
+'revdelete-nooldid-title' => 'Hedef sürüm geçersiz',
+'revdelete-nooldid-text' => 'Bu fonksiyonu uygulamak için belirli hedef değişiklik veya değişikileriniz yok. Sunulmuş olan revizyon mevcut değil, veya mevcut revizyonu gizlemeye çalışıyorsunuz.',
+'revdelete-nologtype-title' => 'Hiçbir kayıt tipi verilmedi',
+'revdelete-nologtype-text' => 'Bu işlemi devreye sokmak için bir kayıt tipi belirtmediniz.',
+'revdelete-nologid-title' => 'Geçersiz günlük girdisi',
+'revdelete-nologid-text' => 'Bu fonksiyonu uygulamak için hiçbir kayıt tipi belirtilmedi veya belirtilen kayıt tipi mevcut değil.',
+'revdelete-no-file' => 'Belirtilen dosya mevcut değil.',
+'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" dosyasının $2 $3 tarihli silinmiş bir revizyonunu görmek istediğinize emin misiniz?',
+'revdelete-show-file-submit' => 'Evet',
+'revdelete-selected' => "'''[[:$1]] sayfasının {{PLURAL:$2|seçili değişikliği|seçili değişiklikleri}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Seçili kayıt olayı|Seçili kayıt olayları}}:'''",
+'revdelete-text' => "'''Silinen revizyonlar ve olaylar hala sayfa geçmişinde ve günlüklerde görünecektir, fakat içeriğin parçaları umumi olarak erişilemeyecektir.'''
+{{SITENAME}} sitesindeki diğer hizmetliler gizli içeriğe erişebilir ve ilave kısıtlamalar ayarlanmadıysa bu arayüz ile geri getirebilir.",
+'revdelete-confirm' => 'Lütfen, bunu yapmak istediğinizi , sonuçlarını anladığınızı, ve bunu [[{{MediaWiki:Policy-url}}|ilkelere]] göre yapıyor olduğunuzu onaylayın.',
+'revdelete-suppress-text' => "Saklama '''sadece''' aşağıdaki durumlar için kullanılmalıdır:
* Uygunsuz kişisel bilgi
*: ''ev adresleri ve telefon numaraları, sosyal güvenlik numaraları, vs.''",
-'revdelete-legend' => 'Görünürlük kısıtlamaları ayarla',
-'revdelete-hide-text' => 'Değişiklik yazısını gizle',
-'revdelete-hide-name' => 'Olayı ve hedefi gizle',
-'revdelete-hide-comment' => 'Özeti gösterme',
-'revdelete-hide-user' => "Değişikliği yapan kullanıcı adını/IP'i gizle",
-'revdelete-hide-restricted' => 'Verileri hizmetlilerle birlikte diğerlerinden de sakla',
-'revdelete-suppress' => 'Verileri hem diğerlerinden hem de hizmetlilerden gizle',
-'revdelete-hide-image' => 'Dosya içeriğini gizle',
-'revdelete-unsuppress' => 'Geri döndürülmüş revizyonlardaki kısıtlamaları kaldır',
-'revdelete-log' => 'Neden:',
-'revdelete-submit' => 'Seçilen sürüme uygula',
-'revdelete-logentry' => '[[$1]] için revizyon görünürlüğü değişti',
-'logdelete-logentry' => '[[$1]] için olay görünürlüğü değişti',
-'revdelete-success' => "'''Revizyon görünürlüğü başarıyla güncellendi.'''",
-'logdelete-success' => "'''Günlük görünürlüğü başarıyla ayarlandı.'''",
-'revdel-restore' => 'Görünürlüğü değiştir',
-'pagehist' => 'Sayfa geçmişi',
-'deletedhist' => 'Silinmiş geçmiş',
-'revdelete-content' => 'içerik',
-'revdelete-summary' => 'değişiklik özeti',
-'revdelete-uname' => 'kullanıcı adı',
-'revdelete-restricted' => 'hizmetliler için uygulanmış kısıtlamalar',
-'revdelete-unrestricted' => 'hizmetliler için kaldırılmış kısıtlamalar',
-'revdelete-hid' => 'gizle $1',
-'revdelete-unhid' => 'göster $1',
-'revdelete-log-message' => '$2 {{PLURAL:$2|revizyon|revizyon}} için $1',
-'logdelete-log-message' => '$2 {{PLURAL:$2|olay|olay}} için $1',
+'revdelete-legend' => 'Görünürlük kısıtlamaları ayarla',
+'revdelete-hide-text' => 'Değişiklik yazısını gizle',
+'revdelete-hide-image' => 'Dosya içeriğini gizle',
+'revdelete-hide-name' => 'Olayı ve hedefi gizle',
+'revdelete-hide-comment' => 'Özeti gösterme',
+'revdelete-hide-user' => "Değişikliği yapan kullanıcı adını/IP'i gizle",
+'revdelete-hide-restricted' => 'Verileri hizmetlilerle birlikte diğerlerinden de sakla',
+'revdelete-radio-same' => '(değiştirme)',
+'revdelete-radio-set' => 'Evet',
+'revdelete-radio-unset' => 'Hayır',
+'revdelete-suppress' => 'Verileri hem diğerlerinden hem de hizmetlilerden gizle',
+'revdelete-unsuppress' => 'Geri döndürülmüş revizyonlardaki kısıtlamaları kaldır',
+'revdelete-log' => 'Neden:',
+'revdelete-submit' => 'Seçilen {{PLURAL:$1|sürüme|sürümlere}} uygula',
+'revdelete-logentry' => '[[$1]] için revizyon görünürlüğü değişti',
+'logdelete-logentry' => '[[$1]] için olay görünürlüğü değişti',
+'revdelete-success' => "'''Revizyon görünürlüğü başarıyla güncellendi.'''",
+'revdelete-failure' => "'''Revizyon görünürlüğü güncellenemiyor:'''
+$1",
+'logdelete-success' => "'''Günlük görünürlüğü başarıyla ayarlandı.'''",
+'logdelete-failure' => "'''Günlük görünürlüğü ayarlanamadı:'''
+$1",
+'revdel-restore' => 'Görünürlüğü değiştir',
+'pagehist' => 'Sayfa geçmişi',
+'deletedhist' => 'Silinmiş geçmiş',
+'revdelete-content' => 'içerik',
+'revdelete-summary' => 'değişiklik özeti',
+'revdelete-uname' => 'kullanıcı adı',
+'revdelete-restricted' => 'hizmetliler için uygulanmış kısıtlamalar',
+'revdelete-unrestricted' => 'hizmetliler için kaldırılmış kısıtlamalar',
+'revdelete-hid' => 'gizle $1',
+'revdelete-unhid' => 'göster $1',
+'revdelete-log-message' => '$2 {{PLURAL:$2|revizyon|revizyon}} için $1',
+'logdelete-log-message' => '$2 {{PLURAL:$2|olay|olay}} için $1',
+'revdelete-hide-current' => '$2 $1 tarihli öğe gizlenirken hata: bu güncel revizyon.
+Gizlenemez.',
+'revdelete-show-no-access' => '$2 $1 tarihli öğe gösterilirken hata: bu öğe "kısıtlı" olarak işaretlenmiş.
+Erişiminiz yok.',
+'revdelete-modify-no-access' => '$2 $1 tarihli öğe değiştirilirken hata: bu öğe "kısıtlı" olarak işaretlenmiş.
+Erişiminiz yok.',
+'revdelete-modify-missing' => "$1 ID'li öğe değiştirilirken hata: veritabanında kayıp!",
+'revdelete-no-change' => "'''Uyarı:''' $2 $1 tarihli öğe için zaten görünürlük ayarı istenmiş.",
+'revdelete-concurrent-change' => '$2 $1 tarihli öğe değiştirilirken hata: öğenin durumu siz değiştirmeye çalışırken bir başkası tarafından değiştirilmiş görünüyor.
+Lütfen günlükleri kontrol edin.',
+'revdelete-only-restricted' => '$2 $1 tarihli öğe gizlenirken hata: Öğeleri, diğer gizleme seçeneklerinden birini seçmeden, hizmetli görünümden bastıramazsınız.',
+'revdelete-reason-dropdown' => '*Genel silme sebepleri
+** Telif ihlali
+** Uygunsuz kişisel bilgi',
+'revdelete-otherreason' => 'Diğer/ek sebep:',
+'revdelete-reasonotherlist' => 'Diğer sebep',
+'revdelete-edit-reasonlist' => 'Silme nedenlerini değiştir',
+'revdelete-offender' => 'Revizyon yazarı:',
# Suppression log
'suppressionlog' => 'Gizleme kayıtları',
@@ -958,68 +1168,13 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
'mergelogpagetext' => 'Aşaüıdaki liste, sayfaların geçmiş versiyonlarının birbirleriyle en son birleştirilmelerini içerir',
# Diffs
-'history-title' => '"$1" sayfasının geçmişi',
-'difference' => '(Sürümler arası farklar)',
-'lineno' => '$1. satır:',
-'compareselectedversions' => 'Seçilen sürümleri karşılaştır',
-'visualcomparison' => 'Görsel karşılaştırma',
-'wikicodecomparison' => 'Vikimetin karşılaştırması',
-'editundo' => 'geri al',
-'diff-multi' => '(Gösterilmeyen {{PLURAL:$1|$1 ara değişiklik|$1 ara değişiklik}} bulunmaktadır.)',
-'diff-movedto' => '$1 sayfasına taşındı',
-'diff-styleadded' => '$1 stili eklendi',
-'diff-added' => '$1 eklendi',
-'diff-changedto' => '$1 olarak değiştirildi',
-'diff-movedoutof' => '$1 den taşındı',
-'diff-styleremoved' => '$1 stili silindi',
-'diff-removed' => '$1 silindi',
-'diff-changedfrom' => "$1'dan değiştirildi",
-'diff-src' => 'kaynak',
-'diff-withdestination' => '$1 hedefi ile',
-'diff-with' => '&#32;$1 $2 ile',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;ve $1 $2',
-'diff-width' => 'genişlik',
-'diff-height' => 'yükseklik',
-'diff-p' => "bir '''paragraf'''",
-'diff-blockquote' => "bir '''alıntı'''",
-'diff-h1' => "bir '''başlık (1. seviye)'''",
-'diff-h2' => "bir '''başlık (2. seviye)'''",
-'diff-h3' => "bir '''başlık (3. seviye)'''",
-'diff-h4' => "bir '''başlık (4. seviye)'''",
-'diff-h5' => "bir '''başlık (5. seviye)'''",
-'diff-pre' => "bir '''önceden biçimlendirilmiş kalıp'''",
-'diff-div' => "bir '''ayrım'''",
-'diff-ul' => "bir '''sıralanmamış liste'''",
-'diff-ol' => "bir '''sıralı liste'''",
-'diff-li' => "bir '''liste öğesi'''",
-'diff-table' => "bir '''tablo'''",
-'diff-tbody' => "bir '''tablo içeriği'''",
-'diff-tr' => "bir '''satır'''",
-'diff-td' => "bir '''hücre'''",
-'diff-th' => "bir '''başlık'''",
-'diff-br' => "bir '''satır sonu'''",
-'diff-hr' => "bir '''yatay cetvel'''",
-'diff-code' => "bir '''bilgisayar kod bloğu'''",
-'diff-dl' => "bir '''tanım listesi'''",
-'diff-dt' => "bir '''tanım terimi'''",
-'diff-dd' => "bir '''tanım'''",
-'diff-input' => "bir '''girdi'''",
-'diff-form' => "bir '''form'''",
-'diff-img' => "bir '''resim'''",
-'diff-span' => "bir '''span'''",
-'diff-a' => "bir '''bağlantı'''",
-'diff-i' => "'''eğik yazılar'''",
-'diff-b' => "'''kalın'''",
-'diff-strong' => "'''kalın'''",
-'diff-em' => "'''vurgu'''",
-'diff-font' => "'''yazıtipi'''",
-'diff-big' => "'''büyük'''",
-'diff-del' => "'''silinmiş'''",
-'diff-tt' => "'''sabit genişlik'''",
-'diff-sub' => "'''altsimge'''",
-'diff-sup' => "'''üstsimge'''",
-'diff-strike' => "'''üstüçizili'''",
+'history-title' => '"$1" sayfasının geçmişi',
+'difference' => '(Sürümler arası farklar)',
+'lineno' => '$1. satır:',
+'compareselectedversions' => 'Seçilen sürümleri karşılaştır',
+'showhideselectedversions' => 'Seçili sürümleri göster/gizle',
+'editundo' => 'geri al',
+'diff-multi' => '(Gösterilmeyen {{PLURAL:$1|$1 ara değişiklik|$1 ara değişiklik}} bulunmaktadır.)',
# Search results
'searchresults' => 'Arama sonuçları',
@@ -1027,28 +1182,25 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
'searchresulttext' => '{{SITENAME}} içinde arama yapmak konusunda bilgi almak için [[{{MediaWiki:Helppage}}|{{int:help}}]] sayfasına bakabilirsiniz.',
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' için aradınız. ([[Special:Prefixindex/$1|"$1" ile başlayan tüm sayfalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sayfasına bağlantısı olan tüm sayfalar]])',
'searchsubtitleinvalid' => 'Aranan: "$1"',
-'noexactmatch' => "''Başlığı \"\$1\" olan bir madde bulunamadı.''' Bu sayfayı siz [[:\$1|oluşturabilirsiniz]].",
-'noexactmatch-nocreate' => "'''\"\$1\" başlıklı sayfa bulunmamaktadır.'''",
'toomanymatches' => 'Çok fazla eşleşme döndü, lütfen başka bir sorgu seçin',
'titlematches' => 'Madde adı eşleşiyor',
'notitlematches' => 'Hiçbir başlıkta bulunamadı',
'textmatches' => 'Sayfa metni eşleşiyor',
'notextmatches' => 'Hiçbir sayfada bulunamadı',
-'prevn' => 'önceki $1',
-'nextn' => 'sonraki $1',
+'prevn' => 'önceki {{PLURAL:$1|$1}}',
+'nextn' => 'sonraki {{PLURAL:$1|$1}}',
'prevn-title' => 'Önceki $1 {{PLURAL:$1|sonuç|sonuç}}',
'nextn-title' => 'Sonraki $1 {{PLURAL:$1|sonuç|sonuç}}',
'shown-title' => 'Sayfa başına $1 {{PLURAL:$1|sonuç|sonuç}} göster',
-'viewprevnext' => '($1) ($2) ($3).',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Arama seçenekleri',
'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adında bir sayfa mevcut'''",
'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" sayfasını oluştur!'''",
'searchhelp-url' => 'Help:İçindekiler',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu ön ekle sayfalara göz at]]',
'searchprofile-articles' => 'İçerik sayfaları',
-'searchprofile-articles-and-proj' => 'İçerik & proje sayfaları',
-'searchprofile-project' => 'Proje sayfaları',
-'searchprofile-images' => 'Dosyalar',
+'searchprofile-project' => 'Yardım ve proje sayfaları',
+'searchprofile-images' => 'Çokluortam',
'searchprofile-everything' => 'Her şey',
'searchprofile-advanced' => 'Gelişmiş',
'searchprofile-articles-tooltip' => '$1 içinde ara',
@@ -1056,8 +1208,6 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
'searchprofile-images-tooltip' => 'Dosyalar için ara',
'searchprofile-everything-tooltip' => 'Tüm içeriği ara (tartışma sayfaları dahil)',
'searchprofile-advanced-tooltip' => 'Özel ad alanlarında ara',
-'prefs-search-nsdefault' => 'Varsayılanları kullanarak ara:',
-'prefs-search-nscustom' => 'Özel ad alanlarını ara:',
'search-result-size' => '$1 ({{PLURAL:$2|1 kelime|$2 kelime}})',
'search-result-score' => 'Uygunluk: $1%',
'search-redirect' => '(yönlendirme $1)',
@@ -1070,11 +1220,12 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
'search-mwsuggest-disabled' => 'öneri yok',
'search-relatedarticle' => 'ilgili',
'mwsuggest-disable' => 'AJAX önerilerini devre dışı bırak',
+'searcheverything-enable' => 'Tüm ad alanlarında ara',
'searchrelated' => 'ilgili',
'searchall' => 'hepsi',
'showingresults' => "$2. sonuçtan başlayarak {{PLURAL:$1|'''1''' sonuç |'''$1''' sonuç }} aşağıdadır:",
'showingresultsnum' => "'''$2''' sonuçtan başlayarak {{PLURAL:$3|'''1''' sonuç|'''$3''' sonuç}} aşağıdadır:",
-'showingresultstotal' => "Aşağıda {{PLURAL:$4|'''$3''' sonuçtan '''$1''' tanesi|'''$1 - $2''' arası '''$3''' sonuç}} gösteriliyor",
+'showingresultsheader' => "'''$4''' için {{PLURAL:$5|'''$3''' sonuçtan '''$1'''i|'''$1 - $2''' arası '''$3''' sonuç}}",
'nonefound' => "'''Not''': Sadece bazı alan adları varsayılan olarak aranır.
Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tartışma sayfalarını, şablonları vb. kapsayacak şekilde) deneyin veya önek olarak istenilen alan adını kullanın.",
'search-nonefound' => 'Sorguyla eşleşen bir sonuç yok.',
@@ -1083,112 +1234,149 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
'powersearch-ns' => 'Ad alanlarında ara:',
'powersearch-redir' => 'Yönlendirmeleri listele',
'powersearch-field' => 'Ara:',
+'powersearch-togglelabel' => 'Seç:',
+'powersearch-toggleall' => 'Hepsi',
+'powersearch-togglenone' => 'Hiçbiri',
'search-external' => 'Dış arama',
'searchdisabled' => '{{SITENAME}} sitesinde arama yapma geçici olarak durdurulmuştur. Bu arada Google kullanarak {{SITENAME}} içinde arama yapabilirsiniz. Arama sitelerinde indekslemelerinin biraz eski kalmış olabileceğini göz önünde bulundurunuz.',
+# Quickbar
+'qbsettings' => 'Hızlı erişim sütun ayarları',
+'qbsettings-none' => 'Hiçbiri',
+'qbsettings-fixedleft' => 'Sola sabitlendi',
+'qbsettings-fixedright' => 'Sağa sabitlendi',
+'qbsettings-floatingleft' => 'Sola yaslanıyor',
+'qbsettings-floatingright' => 'Sağa yaslanıyor',
+
# Preferences page
-'preferences' => 'Tercihler',
-'mypreferences' => 'tercihlerim',
-'prefs-edits' => 'Değişiklik sayısı:',
-'prefsnologin' => 'Oturum açık değil',
-'prefsnologintext' => 'Kullanıcı tercihlerinizi ayarlamak için <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} giriş yapmalısınız]</span>.',
-'prefsreset' => 'Tercihler hafızadan sıfırlandı.',
-'qbsettings' => 'Hızlı erişim sütun ayarları',
-'qbsettings-none' => 'Hiçbiri',
-'qbsettings-fixedleft' => 'Sola sabitlendi',
-'qbsettings-fixedright' => 'Sağa sabitlendi',
-'qbsettings-floatingleft' => 'Sola yaslanıyor',
-'qbsettings-floatingright' => 'Sağa yaslanıyor',
-'changepassword' => 'Parola değiştir',
-'skin' => 'Motif',
-'skin-preview' => 'Ön izleme',
-'math' => 'Matematiksel semboller',
-'dateformat' => 'Tarih gösterimi',
-'datedefault' => 'Tercih yok',
-'datetime' => 'Tarih ve saat',
-'math_failure' => 'Ayrıştırılamadı',
-'math_unknown_error' => 'bilinmeyen hata',
-'math_unknown_function' => 'bilinmeyen fonksiyon',
-'math_lexing_error' => 'lexing hatası',
-'math_syntax_error' => 'sözdizim hatası',
-'math_image_error' => 'PNG çevirisi başarısız; latex, dvips ve gs programlarının doğru yüklendiğine emin olun ve çeviri işlemini başlatın',
-'math_bad_tmpdir' => 'Math geçici dizinine yazılamıyor ya da oluşturulamıyor',
-'math_bad_output' => 'Math çıktı dizinine yazılamıyor ya da oluşturulamıyor',
-'math_notexvc' => "texvc çalıştırılabiliri kayıp;
-ayarlamak için math/README'ye bakın.",
-'prefs-personal' => 'Kullanıcı bilgileri',
-'prefs-rc' => 'Son değişiklikler',
-'prefs-watchlist' => 'İzleme listesi',
-'prefs-watchlist-days' => 'İzleme listesinde görüntülenecek gün sayısı:',
-'prefs-watchlist-days-max' => '(en fazla 7 gün)',
-'prefs-watchlist-edits' => 'Genişletilmiş izleme listesinde gösterilecek değişiklik sayısı:',
-'prefs-watchlist-edits-max' => '(maksimum sayı: 1000)',
-'prefs-misc' => 'Diğer ayarlar',
-'prefs-resetpass' => 'Parolayı değiştir',
-'saveprefs' => 'Değişiklikleri kaydet',
-'resetprefs' => 'Ayarları ilk durumuna getir',
-'restoreprefs' => 'Tüm varsayılan ayarları geri yükle',
-'textboxsize' => 'Sayfa yazma alanı',
-'prefs-edit-boxsize' => 'Değiştirme penceresinin boyutu.',
-'rows' => 'Satır',
-'columns' => 'Sütun',
-'searchresultshead' => 'Arama',
-'resultsperpage' => 'Sayfada gösterilecek bulunan madde sayısı',
-'contextlines' => 'Bulunan madde için ayrılan satır sayısı',
-'contextchars' => 'Satırdaki karakter sayısı',
-'stub-threshold' => '<a href="#" class="stub">Taslak bağlantısı</a> formatı için baraj (byte):',
-'recentchangesdays' => 'Son değişikliklerde gösterilecek günler:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|gün|gün}})',
-'recentchangescount' => 'Son değişiklikler, sayfa geçmişi ve günlüklerde varsayılan olarak gösterilecek değişiklik sayısı',
-'savedprefs' => 'Ayarlar kaydedildi.',
-'timezonelegend' => 'Saat dilimi:',
-'timezonetext' => '¹Viki sunucusu (UTC/GMT) ile aranızdaki saat farkı. (Türkiye için +02:00)',
-'localtime' => 'Yerel saat:',
-'timezoneselect' => 'Saat dilimi:',
-'timezoneuseserverdefault' => 'Sunucu varsayılanını kullan',
-'timezoneuseoffset' => 'Diğer (ofset belirtin)',
-'timezoneoffset' => 'Ofset¹:',
-'servertime' => 'Sunucu saati:',
-'guesstimezone' => 'Tarayıcınız sizin yerinize doldursun',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antartika',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Asya',
-'timezoneregion-atlantic' => 'Atlantik Okyanusu',
-'timezoneregion-australia' => 'Avustralya',
-'timezoneregion-europe' => 'Avrupa',
-'timezoneregion-indian' => 'Hint Okyanusu',
-'timezoneregion-pacific' => 'Pasifik Okyanusu',
-'allowemail' => 'Diğer kullanıcılar size e-posta atabilsin',
-'prefs-searchoptions' => 'Arama seçenekleri',
-'prefs-namespaces' => 'Alan adları',
-'defaultns' => 'Aramayı aşağıdaki seçili alanlarda yap.',
-'default' => 'orijinal',
-'files' => 'Dosyalar',
-'prefs-custom-css' => 'Özel CSS',
-'prefs-custom-js' => 'Özel JS',
+'preferences' => 'Tercihler',
+'mypreferences' => 'tercihlerim',
+'prefs-edits' => 'Değişiklik sayısı:',
+'prefsnologin' => 'Oturum açık değil',
+'prefsnologintext' => 'Kullanıcı tercihlerinizi ayarlamak için <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} giriş yapmalısınız]</span>.',
+'changepassword' => 'Parola değiştir',
+'prefs-skin' => 'Motif',
+'skin-preview' => 'Ön izleme',
+'prefs-math' => 'Matematiksel semboller',
+'datedefault' => 'Tercih yok',
+'prefs-datetime' => 'Tarih ve saat',
+'prefs-personal' => 'Kullanıcı bilgileri',
+'prefs-rc' => 'Son değişiklikler',
+'prefs-watchlist' => 'İzleme listesi',
+'prefs-watchlist-days' => 'İzleme listesinde görüntülenecek gün sayısı:',
+'prefs-watchlist-days-max' => '(en fazla 7 gün)',
+'prefs-watchlist-edits' => 'Genişletilmiş izleme listesinde gösterilecek değişiklik sayısı:',
+'prefs-watchlist-edits-max' => '(maksimum sayı: 1000)',
+'prefs-watchlist-token' => 'İzleme listesi nişanı:',
+'prefs-misc' => 'Diğer ayarlar',
+'prefs-resetpass' => 'Parolayı değiştir',
+'prefs-email' => 'Eposta seçenekleri',
+'prefs-rendering' => 'Görünüm',
+'saveprefs' => 'Değişiklikleri kaydet',
+'resetprefs' => 'Ayarları ilk durumuna getir',
+'restoreprefs' => 'Tüm varsayılan ayarları geri yükle',
+'prefs-editing' => 'Sayfa yazma alanı',
+'prefs-edit-boxsize' => 'Değiştirme penceresinin boyutu.',
+'rows' => 'Satır',
+'columns' => 'Sütun',
+'searchresultshead' => 'Arama',
+'resultsperpage' => 'Sayfada gösterilecek bulunan madde sayısı',
+'contextlines' => 'Bulunan madde için ayrılan satır sayısı',
+'contextchars' => 'Satırdaki karakter sayısı',
+'stub-threshold' => '<a href="#" class="stub">Taslak bağlantısı</a> formatı için baraj (byte):',
+'recentchangesdays' => 'Son değişikliklerde gösterilecek günler:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|gün|gün}})',
+'recentchangescount' => 'Varsayılan olarak gösterilecek değişiklik sayısı:',
+'prefs-help-recentchangescount' => 'Bu, son değişiklikleri, sayfa geçmişlerini ve günlükleri içerir.',
+'prefs-help-watchlist-token' => 'Bu alanı gizli bir anahtarla doldurmak, izleme listeniz için bir RSS beslemesi oluşturur.
+Bu alandaki anahtarı bilen herkes izleme listenizi okuyabilir, bu yüzden güvenli bir değer seçin.
+Kullanabileceğiniz rasgele-üretilmiş bir değer: $1',
+'savedprefs' => 'Ayarlar kaydedildi.',
+'timezonelegend' => 'Saat dilimi:',
+'localtime' => 'Yerel saat:',
+'timezoneuseserverdefault' => 'Sunucu varsayılanını kullan',
+'timezoneuseoffset' => 'Diğer (ofset belirtin)',
+'timezoneoffset' => 'Ofset¹:',
+'servertime' => 'Sunucu saati:',
+'guesstimezone' => 'Tarayıcınız sizin yerinize doldursun',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Atlantik Okyanusu',
+'timezoneregion-australia' => 'Avustralya',
+'timezoneregion-europe' => 'Avrupa',
+'timezoneregion-indian' => 'Hint Okyanusu',
+'timezoneregion-pacific' => 'Pasifik Okyanusu',
+'allowemail' => 'Diğer kullanıcılar size e-posta atabilsin',
+'prefs-searchoptions' => 'Arama seçenekleri',
+'prefs-namespaces' => 'Alan adları',
+'defaultns' => 'Aksi halde bu ad alanlarında ara:',
+'default' => 'orijinal',
+'prefs-files' => 'Dosyalar',
+'prefs-custom-css' => 'Özel CSS',
+'prefs-custom-js' => 'Özel JS',
+'prefs-reset-intro' => 'Bu sayfayı tercihlerinizi site varsayılanına döndürmek için kullanabilirsiniz. Bu geri alınamaz.',
+'prefs-emailconfirm-label' => 'E-posta doğrulaması:',
+'prefs-textboxsize' => 'Değiştirme penceresinin boyutu',
+'youremail' => 'E-posta adresiniz*',
+'username' => 'Kullanıcı adı:',
+'uid' => 'Kayıt numarası:',
+'prefs-memberingroups' => '{{PLURAL:$1|grup|grup}} üyesi:',
+'prefs-registration' => 'Kayıt zamanı:',
+'yourrealname' => 'Gerçek isminiz:',
+'yourlanguage' => 'Dil:',
+'yourvariant' => 'Sizce:',
+'yournick' => 'İmzalarda gözükmesini istediğiniz isim',
+'prefs-help-signature' => 'Tartışma sayfalarındaki yorumlar "<nowiki>~~~~</nowiki>" ile imzalanmalıdır, bu imzanıza ve zaman damgasına dönüştürülür.',
+'badsig' => 'Geçersiz ham imza; HTML etiketlerini kontorl edin.',
+'badsiglength' => 'İmzanız çok uzun.
+$1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.',
+'yourgender' => 'Cinsiyet:',
+'gender-unknown' => 'Belirtilmemiş',
+'gender-male' => 'Erkek',
+'gender-female' => 'Bayan',
+'prefs-help-gender' => 'İsteğe bağlı: yazılım tarafından doğru cinsiyet adreslemesi için kullanılır. Bu bilgi umumi olacaktır.',
+'email' => 'E-posta',
+'prefs-help-realname' => '* Gerçek isim (isteğe bağlı): eğer gerçek isminizi vermeyi seçerseniz, çalışmanızı size atfederken kullanılacaktır.',
+'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak eğer parolanızı unutursanız e-posta adresinize yeni parola gönderilmesine olanak sağlar.
+Aynı zamanda diğer kullanıcıların kullanıcı ve kullanıcı mesaj sayfalarınız üzerinden kimliğinizi bilmeksizin sizinle iletişim kurmalarına da olanak sağlar.',
+'prefs-help-email-required' => 'E-posta adresi gerekmektedir.',
+'prefs-info' => 'Temel bilgiler',
+'prefs-i18n' => 'Uluslararasılaştırma',
+'prefs-signature' => 'İmza',
+'prefs-dateformat' => 'Tarih biçemi',
+'prefs-timeoffset' => 'Zaman ofseti',
+'prefs-advancedediting' => 'Gelişmiş seçenekler',
+'prefs-advancedrc' => 'Gelişmiş seçenekler',
+'prefs-advancedrendering' => 'Gelişmiş seçenekler',
+'prefs-advancedsearchoptions' => 'Gelişmiş seçenekler',
+'prefs-advancedwatchlist' => 'Gelişmiş seçenekler',
+'prefs-display' => 'Görüntü seçenekleri',
+'prefs-diffs' => 'Farklar',
# User rights
-'userrights' => 'Kullanıcı hakları yönetimi', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Kullanıcı gruplarını düzenle',
-'userrights-user-editname' => 'Kullanıcı adı giriniz:',
-'editusergroup' => 'Kullanıcı grupları düzenle',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) kullanıcısının yetkilerini değiştirmektesiniz",
-'userrights-editusergroup' => 'Kullanıcı grupları düzenle',
-'saveusergroups' => 'Kullanıcı grupları kaydet',
-'userrights-groupsmember' => 'İçinde olduğu gruplar:',
-'userrights-groups-help' => 'Bu kullanıcının içinde olduğu grupları değiştirebilirsiniz:
+'userrights' => 'Kullanıcı hakları yönetimi',
+'userrights-lookup-user' => 'Kullanıcı gruplarını düzenle',
+'userrights-user-editname' => 'Kullanıcı adı giriniz:',
+'editusergroup' => 'Kullanıcı grupları düzenle',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) kullanıcısının yetkilerini değiştirmektesiniz",
+'userrights-editusergroup' => 'Kullanıcı grupları düzenle',
+'saveusergroups' => 'Kullanıcı grupları kaydet',
+'userrights-groupsmember' => 'İçinde olduğu gruplar:',
+'userrights-groupsmember-auto' => 'Saklı olarak içinde olduğu gruplar:',
+'userrights-groups-help' => 'Bu kullanıcının içinde olduğu grupları değiştirebilirsiniz:
* Seçili bir kutu, kullanıcının o gruba dahil olduğu anlamına gelir
* Seçilmemiş bir kutu, kullanıcının o grupta olmadığı anlamına gelir.
* *, grubu bir kez oluşturduktan sonra silemeceğinizi belirtir, ya da karşılıklı olarak.',
-'userrights-reason' => 'Neden:',
-'userrights-no-interwiki' => 'Diğer vikilerdeki kullanıcıların izinlerini değiştirmeye yetkiniz yok.',
-'userrights-nodatabase' => '$1 veritabanı mevcut veya bölgesel değil',
-'userrights-nologin' => 'Kullanıcı haklarını atamak için hizmetli hesabı ile [[Special:UserLogin|giriş yapmanız gerekir]].',
-'userrights-notallowed' => 'Kullanıcı hesabınızın kullanıcı haklarını atamak için izni yok.',
-'userrights-changeable-col' => 'Değiştirebildiğiniz gruplar',
-'userrights-unchangeable-col' => 'Değiştirebilmediğiniz gruplar',
+'userrights-reason' => 'Neden:',
+'userrights-no-interwiki' => 'Diğer vikilerdeki kullanıcıların izinlerini değiştirmeye yetkiniz yok.',
+'userrights-nodatabase' => '$1 veritabanı mevcut veya bölgesel değil',
+'userrights-nologin' => 'Kullanıcı haklarını atamak için hizmetli hesabı ile [[Special:UserLogin|giriş yapmanız gerekir]].',
+'userrights-notallowed' => 'Kullanıcı hesabınızın kullanıcı haklarını atamak için izni yok.',
+'userrights-changeable-col' => 'Değiştirebildiğiniz gruplar',
+'userrights-unchangeable-col' => 'Değiştirebilmediğiniz gruplar',
# Groups
'group' => 'Grup:',
@@ -1241,6 +1429,7 @@ ayarlamak için math/README'ye bakın.",
'right-bigdelete' => 'Uzun tarihli sayfaları sil',
'right-deleterevision' => 'Sayfaların belirli revizyonlarını sil ve geri yükle',
'right-deletedhistory' => 'Silinmiş geçmiş girdilerini gör, ilgili metinleri olmadan',
+'right-deletedtext' => 'Silinmiş metni ve silinmiş revizyonlar arasındaki değişiklikleri gör',
'right-browsearchive' => 'Silinen sayfaları ara',
'right-undelete' => 'Bir sayfanın silinmesini geri al',
'right-suppressrevision' => 'Sysoplardan gizlenmiş revizyonları gözden geçir ve geri yükle',
@@ -1254,6 +1443,8 @@ ayarlamak için math/README'ye bakın.",
'right-editprotected' => 'Korumalı sayfalarda değişiklik yap (korumayı basamaklamadan)',
'right-editinterface' => 'Kullanıcı arayüzünü değiştirmek',
'right-editusercssjs' => 'Diğer kullanıcıların CSS ve JS dosyalarında değişiklik yap',
+'right-editusercss' => 'Diğer kullanıcıların CSS dosyalarında değişiklik yap',
+'right-edituserjs' => 'Diğer kullanıcıların JS dosyalarında değişiklik yap',
'right-rollback' => 'Belirli bir sayfayı değiştiren son kullanıcının değişikliklerini hızlıca geri döndür',
'right-markbotedits' => 'Geri döndürülen değişiklikleri, bot değişiklikleri olarak işaretle',
'right-noratelimit' => 'Derecelendirme sınırlamalarından etkilenme',
@@ -1270,6 +1461,8 @@ ayarlamak için math/README'ye bakın.",
'right-siteadmin' => 'Veritabanını kilitle ve kilidi aç',
'right-reset-passwords' => 'Diğer kullanıcıların parolalarını sıfırla',
'right-override-export-depth' => "Sayfaları, derinlik 5'e kadar bağlantılı sayfalarla beraber, dışa aktar",
+'right-versiondetail' => 'Genişletilmiş yazılım sürüm bilgilerini göster',
+'right-sendemail' => 'Diğer kullanıcılara e-posta gönder',
# User rights log
'rightslog' => 'Kullanıcı hakları kayıtları',
@@ -1319,6 +1512,15 @@ ayarlamak için math/README'ye bakın.",
'recentchanges-legend' => 'Son değişiklikler seçenekleri',
'recentchangestext' => 'Yapılan en son değişiklikleri bu sayfadan izleyin.',
'recentchanges-feed-description' => "Bu beslemedeki viki'de yapılan en son değişiklikleri takip edin.",
+'recentchanges-label-legend' => 'Açıklamalar: $1.',
+'recentchanges-legend-newpage' => '$1 - yeni sayfa',
+'recentchanges-label-newpage' => 'Bu değişiklik yeni bir sayfa oluşturdu',
+'recentchanges-legend-minor' => '$1 - küçük değişiklik',
+'recentchanges-label-minor' => 'Bu küçük bir değişiklik',
+'recentchanges-legend-bot' => '$1 - bot değişikliği',
+'recentchanges-label-bot' => 'Bu değişiklik bir bot tarafından yapıldı',
+'recentchanges-legend-unpatrolled' => '$1 - gözlenmemiş değişiklik',
+'recentchanges-label-unpatrolled' => 'Bu değişiklik henüz gözlenmemiş',
'rcnote' => "$4 tarihi ve saat $5 itibarı ile, son {{PLURAL:$2|1 günde|'''$2''' günde}} yapılan, {{PLURAL:$1|'''1''' değişiklik|'''$1''' değişiklik}}, aşağıdadır.",
'rcnotefrom' => '<b>$2</b> tarihinden itibaren yapılan değişiklikler aşağıdadır (en fazla <b>$1</b> adet madde gösterilmektedir).',
'rclistfrom' => '$1 tarihinden beri yapılan değişiklikleri göster',
@@ -1345,6 +1547,8 @@ ayarlamak için math/README'ye bakın.",
# Recent changes linked
'recentchangeslinked' => 'İlgili değişiklikler',
+'recentchangeslinked-feed' => 'İlgili değişiklikler',
+'recentchangeslinked-toolbox' => 'İlgili değişiklikler',
'recentchangeslinked-title' => '"$1" ile ilişkili değişiklikler',
'recentchangeslinked-noresult' => 'Verilen süre içerisinde belirtilen sayfaya bağlı diğer sayfalarda değişiklik bulunmamaktadır.',
'recentchangeslinked-summary' => "Aşağıdaki liste, belirtilen sayfaya (ya da belirtilen kategorinin üyelerine) bağlantı veren sayfalarda yapılan son değişikliklerin listesidir.
@@ -1355,8 +1559,8 @@ ayarlamak için math/README'ye bakın.",
# Upload
'upload' => 'Dosya yükle',
'uploadbtn' => 'Dosya yükle',
-'reupload' => 'Yeniden yükle',
'reuploaddesc' => 'Yükleme formuna geri dön.',
+'upload-tryagain' => 'Değiştirilmiş dosya açıklamasını gönder',
'uploadnologin' => 'Oturum açık değil',
'uploadnologintext' => 'Dosya yükleyebilmek için [[Special:UserLogin|oturum aç]]manız gerekiyor.',
'upload_directory_missing' => 'Yükleme dizini ($1) kayıp ve websunucusu tarafından oluşturulamıyor.',
@@ -1387,6 +1591,7 @@ Bir sayfaya dosya koymak için bağlantınızda aşağıdaki formlardan birini k
'minlength1' => 'Dosya adı en az bir harften oluşmalıdır.',
'illegalfilename' => '"$1" dosya adı bazı kullanılmayan karekterler içermektedir. Lütfen, yeni bir dosya adıyla tekrar deneyin.',
'badfilename' => 'Görüntü dosyasının ismi "$1" olarak değiştirildi.',
+'filetype-mime-mismatch' => 'Dosya uzantısı MIME türü ile eşleşmiyor.',
'filetype-badmime' => '"$1" MIME tipindeki dosyaların yüklenmesine izin verilmez.',
'filetype-bad-ie-mime' => 'Bu dosya yüklenemez; çünkü Internet Explorer bunu, izin verilmeyen ve potansiyel zararlı dosya türü olan "$1" olarak tespit etmektedir.',
'filetype-unwanted-type' => "'''\".\$1\"''' istenmeyen bir dosya türüdür. Önerilen {{PLURAL:\$3|dosya türü|dosya türleri}} \$2.",
@@ -1407,7 +1612,6 @@ Gireceğiniz özet açıklama sayfasında görünmeyecektir.
* Yüklenilen dosyanın adı: '''<tt>[[:$1]]</tt>'''
* Varolan dosyanın adı: '''<tt>[[:$2]]</tt>'''
Lütfen başka bir isim seçin",
-'fileexists-thumb' => "<center>'''Bu isimde zaten bir dosya var'''</center>",
'fileexists-thumbnail-yes' => "Bu dosya, bir resmi küçültülmüş vesiyonu gibi görünüyor ''(thumbnail)''. [[$1|thumb]]
Lütfen '''<tt>[[:$1]]</tt>''' dosyasını kontrol edin .
Eğer kontrol edilen dosya ile orijinal boyutundaki aynı dosyaysa fazladan pul imge yüklemeye gerek yoktur.",
@@ -1422,6 +1626,7 @@ Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kul
'file-deleted-duplicate' => 'Bu dosyanın özdeşi olan başka bir dosya ([[$1]]) daha önceden silindi. Bu dosyayı yeniden yüklemeden önce diğer dosyanın silme kayıtlarını kontrol etmelisiniz.',
'successfulupload' => 'Yükleme başarılı',
'uploadwarning' => 'Yükleme uyarısı',
+'uploadwarning-text' => 'Lütfen aşağıdaki dosya açıklamasını değiştirin ve tekrar deneyin.',
'savefile' => 'Dosyayı kaydet',
'uploadedimage' => 'Yüklenen: "[[$1]]"',
'overwroteimage' => '"[[$1]]" resminin yeni versiyonu yüklenmiştir',
@@ -1429,11 +1634,14 @@ Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kul
'uploaddisabledtext' => 'Dosya yüklemeleri devredışı bırakılmıştır.',
'php-uploaddisabledtext' => 'PHP dosyası yüklemeleri devre dışıdır. Lütfen file_uploads ayarını kontrol edin.',
'uploadscripted' => 'Bu dosya bir internet tarayıcısı tarafından hatalı çevrilebilecek bir HTML veya script kodu içermektedir.',
-'uploadcorrupt' => 'Bu dosya ya bozuk ya da uzantısı yanlış. Dosyayı kontrol edip, tekrar yüklemeyi deneyin.',
'uploadvirus' => 'Bu dosya virüslüdür! Detayları: $1',
+'upload-source' => 'Kaynak dosyası',
'sourcefilename' => 'Yüklemek istediğiniz dosya:',
+'sourceurl' => 'Kaynak URL:',
'destfilename' => 'Hedef dosya adı:',
'upload-maxfilesize' => 'Maksimum dosya boyutu: $1',
+'upload-description' => 'Dosya açıklaması',
+'upload-options' => 'Yükleme seçenekleri',
'watchthisupload' => 'Bu dosyayı izle',
'filewasdeleted' => 'Bu isimde bir dosya yakın zamanda yüklendi ve ardından hizmetliler tarafından silindi. Dosyayı yüklemeden önce, $1 sayfasına bir göz atınız.',
'upload-wasdeleted' => "'''Uyarı: Daha önce silinmiş olan bir dosyayı yüklüyorsunuz.'''
@@ -1457,15 +1665,46 @@ MGP # Pentax
PICT # misc.
#</pre> <!-- leave this line exactly as it is -->',
-'upload-proto-error' => 'Hatalı protokol',
-'upload-proto-error-text' => "Uzaktan yükleme, <code>http://</code> veya <code>ftp://</code> ile başlayan URL'ler gerektirmektedir.",
-'upload-file-error' => 'Dahili hata',
-'upload-file-error-text' => 'Sunucuda geçici dosya oluşturma girişimi sırasında bir iç hata meydana geldi.
+'upload-proto-error' => 'Hatalı protokol',
+'upload-proto-error-text' => "Uzaktan yükleme, <code>http://</code> veya <code>ftp://</code> ile başlayan URL'ler gerektirmektedir.",
+'upload-file-error' => 'Dahili hata',
+'upload-file-error-text' => 'Sunucuda geçici dosya oluşturma girişimi sırasında bir iç hata meydana geldi.
Lütfen bir [[Special:ListUsers/sysop|yonetici]]yle iletişime geçin.',
-'upload-misc-error' => 'Bilinmeyen yükleme hatası',
-'upload-misc-error-text' => 'Yükleme sırasında bilinmeyen bir hata meydana geldi.
+'upload-misc-error' => 'Bilinmeyen yükleme hatası',
+'upload-misc-error-text' => 'Yükleme sırasında bilinmeyen bir hata meydana geldi.
Lütfen bağlantının geçerli ve ulaşılabilir olduğunu doğrulayın ve yeniden deneyin.
Eğer problem tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa geçin',
+'upload-too-many-redirects' => 'URL çok fazla yönlendirme içeriyor',
+'upload-unknown-size' => 'Bilinmeyen boyut',
+'upload-http-error' => 'Bir HTTP hatası oluştu: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Erişim engellendi',
+'img-auth-nopathinfo' => 'Eksik PATH_INFO.
+Sunucunuz bu bilgiyi geçirmek için ayarlanmamış.
+CGI-tabanlı olabilir ve img_auth desteklenmiyor olabilir.
+http://www.mediawiki.org/wiki/Manual:Image_Authorization sayfasına bakın.',
+'img-auth-notindir' => 'İstenen yol yapılandırılmış yükleme dizininde değil.',
+'img-auth-badtitle' => '"$1" ile geçerli bir başlık yapılamıyor.',
+'img-auth-nologinnWL' => 'Giriş yapmadınız ve "$1" beyaz listede değil.',
+'img-auth-nofile' => '"$1" dosyası mevcut değil.',
+'img-auth-isdir' => '"$1" dizinine erişmeye çalışıyorsunuz.
+Sadece dosya erişimine izin veriliyor.',
+'img-auth-streaming' => '"$1" oynatılıyor.',
+'img-auth-public' => "img_auth.php'nin fonksiyonu özel bir vikiden dosyaları çıkarmaktır.
+Bu viki genel bir viki olarak ayarlanmış.
+En uygun güvenlik için, img_auth.php devre dışı bırakıldı.",
+'img-auth-noread' => 'Kullanıcının "$1" dosyasını okumaya erişimi yok.',
+
+# HTTP errors
+'http-invalid-url' => 'Geçersiz URL: $1',
+'http-invalid-scheme' => '"$1" şemasına sahip URLler desteklenmiyor',
+'http-request-error' => 'HTTP isteği bilinmeyen bir nedenle başarısız oldu.',
+'http-read-error' => 'HTTP okuma hatası.',
+'http-timed-out' => 'HTTP isteği zaman aşımına uğradı.',
+'http-curl-error' => 'URL alınırken hata: $1',
+'http-host-unreachable' => "URL'ye ulaşılamıyor.",
+'http-bad-status' => 'HTTP isteği sırasında bir sorun oluştu: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "URL'ye ulaşılamadı",
@@ -1477,6 +1716,7 @@ Lütfen sitenin açık olduğunu kontrol edin, kısa bir süre bekleyin ve yenid
Sitenin daha az meşgul olduğu bir zamanda denemek daha iyi olabilir.',
'license' => 'Lisans:',
+'license-header' => 'Lisanslama',
'nolicense' => 'Hiçbirini seçme',
'license-nopreview' => '(Önizleme etkin değil)',
'upload_source_url' => ' (geçerli, herkesin ulaşabileceği bir URL)',
@@ -1497,6 +1737,7 @@ Bir sütünun başlığına tıklayarak sıralamayı değiştirebilirsiniz.',
'listfiles_count' => 'Sürümler',
# File description page
+'file-anchor-link' => 'Dosya',
'filehist' => 'Dosya geçmişi',
'filehist-help' => 'Dosyanın geçmişini görebilmek için Gün/Zaman bölümündeki tarihleri tıklayınız.',
'filehist-deleteall' => 'Hepsini sil',
@@ -1505,12 +1746,13 @@ Bir sütünun başlığına tıklayarak sıralamayı değiştirebilirsiniz.',
'filehist-current' => 'Şimdiki',
'filehist-datetime' => 'Gün/Zaman',
'filehist-thumb' => 'Küçük resim',
-'filehist-thumbtext' => '$1 tarihindeki versiyonun küçültülmüş hali',
+'filehist-thumbtext' => '$1 tarihindeki sürümün küçültülmüş hali',
'filehist-nothumb' => 'Küçük resim yok',
'filehist-user' => 'Kullanıcı',
'filehist-dimensions' => 'Boyutlar',
'filehist-filesize' => 'Dosya boyutu',
'filehist-comment' => 'Açıklama',
+'filehist-missing' => 'Dosya kayıp',
'imagelinks' => 'Dosya bağlantıları',
'linkstoimage' => 'Bu görüntü dosyasına bağlantısı olan {{PLURAL:$1|sayfa|$1 sayfa}}:',
'linkstoimage-more' => "$1'den fazla {{PLURAL:$1|sayfa|sayfa}} bu dosyaya bağlantı veriyor.
@@ -1520,15 +1762,14 @@ Sıradaki liste sadece bu dosyaya bağlantı veren {{PLURAL:$1|ilk dosyayı|ilk
'morelinkstoimage' => 'Bu dosyaya [[Special:WhatLinksHere/$1|daha fazla bağlantıları]] gör.',
'redirectstofile' => 'Şu {{PLURAL:$1|dosya|$1 dosya}}, bu dosyaya yönlendiriyor:',
'duplicatesoffile' => 'Şu {{PLURAL:$1|dosya|$1 dosya}}, bu dosyanın kopyası ([[Special:FileDuplicateSearch/$2|daha fazla ayrıntı]]):',
-'sharedupload' => 'Bu dosya $1 deposundan ve diğer projelerde kullanılıyor olabilir.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Lütfen daha fazla bilgi için $1 sayfasına bakın.',
-'shareduploadwiki-desc' => '$1ndaki açıklaması aşağıda gösterilmektedir.',
-'shareduploadwiki-linktext' => 'dosya açıklama sayfası',
-'noimage' => 'Bu isimde dosya yok. Siz $1.',
-'noimage-linktext' => 'yükleyebilirsiniz',
+'sharedupload' => 'Bu dosya $1 deposundan ve diğer projelerde kullanılıyor olabilir.',
+'sharedupload-desc-there' => 'Bu dosya $1 deposundan ve diğer projeler tarafından kullanılıyor olabilir. Daha fazla bilgi için lütfen [$2 dosya açıklama sayfasına] bakın.',
+'sharedupload-desc-here' => 'Bu dosya $1 deposundan ve diğer projeler tarafından kullanılıyor olabilir. [$2 Dosya açıklama sayfasındaki] açıklama aşağıda gösteriliyor.',
+'filepage-nofile' => 'Bu isimde bir dosya yok.',
+'filepage-nofile-link' => 'Bu isimde bir dosya yok, ama siz [$1 yükleyebilirsiniz].',
'uploadnewversion-linktext' => 'Dosyanın yenisini yükleyin',
-'shared-repo-from' => "$1'dan", # $1 is the repository name
-'shared-repo' => 'ortak bir havuz', # used when shared-repo-NAME does not exist
+'shared-repo-from' => "$1'dan",
+'shared-repo' => 'ortak bir havuz',
# File reversion
'filerevert' => '$1 dosyasını eski haline döndür',
@@ -1557,6 +1798,7 @@ Sıradaki liste sadece bu dosyaya bağlantı veren {{PLURAL:$1|ilk dosyayı|ilk
** Telif hakları ihlali
** Çift/kopya dosya',
'filedelete-edit-reasonlist' => 'Silme nedenlerini değiştir',
+'filedelete-maintenance' => 'Dosyaların silinmesi ve geri getirilmesi bakım süresince geçici olarak devre dışı bırakıldı.',
# MIME search
'mimesearch' => 'MIME araması',
@@ -1577,7 +1819,7 @@ Sıradaki liste sadece bu dosyaya bağlantı veren {{PLURAL:$1|ilk dosyayı|ilk
# Random page
'randompage' => 'Rastgele sayfa',
-'randompage-nopages' => '"$1" ad alanında hiç bir sayfa yok.',
+'randompage-nopages' => 'Şu {{PLURAL:$2|ad alanında|ad alanlarında}} hiç bir sayfa yok: $1.',
# Random redirect
'randomredirect' => 'Rastgele yönlendirme',
@@ -1589,6 +1831,7 @@ Sıradaki liste sadece bu dosyaya bağlantı veren {{PLURAL:$1|ilk dosyayı|ilk
'statistics-header-edits' => 'Değişiklik istatistikleri',
'statistics-header-views' => 'Görüntüleme istatistikleri',
'statistics-header-users' => 'Kullanıcı istatistikleri',
+'statistics-header-hooks' => 'Diğer istatistikler',
'statistics-articles' => 'Maddeler',
'statistics-pages' => 'Sayfalar',
'statistics-pages-desc' => 'Vikipedideki tüm sayfalar, tartışma sayfaları, yönlendirmeler vs.',
@@ -1616,8 +1859,8 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
'brokenredirects' => 'Varolmayan maddeye yapılmış yönlendirmeler',
'brokenredirectstext' => 'Aşağıdaki yönlendirmeler varolmayan sayfalara bağlantı veriyor:',
-'brokenredirects-edit' => '(değiştir)',
-'brokenredirects-delete' => '(sil)',
+'brokenredirects-edit' => 'değiştir',
+'brokenredirects-delete' => 'sil',
'withoutinterwiki' => 'Diğer dillere bağlantısı olmayan sayfalar',
'withoutinterwiki-summary' => 'Aşağıda listelenen sayfalar diğer dillere bağlantı içermemektedir:',
@@ -1724,7 +1967,7 @@ Günlük tipini, kullanıcı adını (büyük-küçük harf duyarlı), ya da etk
# Special:Categories
'categories' => 'Kategoriler',
-'categoriespagetext' => "Aşağıdaki kategoriler sayfa veya ortam içerir.
+'categoriespagetext' => "Aşağıdaki {{PLURAL:$1|kategori|kategoriler}} sayfa veya ortam içerir.
[[Special:UnusedCategories|Kullanılmayan kategoriler]] burada gösterilmemektedir.
Ayrıca [[Special:WantedCategories|İstenen kategoriler]]'e bakınız.",
'categoriesfrom' => 'Şununla başlayan kategorileri görüntüle:',
@@ -1732,8 +1975,9 @@ Ayrıca [[Special:WantedCategories|İstenen kategoriler]]'e bakınız.",
'special-categories-sort-abc' => 'alfabetik olarak sırala',
# Special:DeletedContributions
-'deletedcontributions' => 'Silinen kullanıcı katkıları',
-'deletedcontributions-title' => 'Silinen kullanıcı katkıları',
+'deletedcontributions' => 'Silinen kullanıcı katkıları',
+'deletedcontributions-title' => 'Silinen kullanıcı katkıları',
+'sp-deletedcontributions-contribs' => 'katkılar',
# Special:LinkSearch
'linksearch' => 'Dış bağlantılar',
@@ -1749,6 +1993,16 @@ Desteklenen iletişim kuralları: <tt>$1</tt>',
'listusersfrom' => 'Şununla başlayan kullanıcıları görüntüle:',
'listusers-submit' => 'Göster',
'listusers-noresult' => 'Kullanıcı bulunamadı.',
+'listusers-blocked' => '(engellenmiş)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktif kullanıcı listesi',
+'activeusers-intro' => 'Bu, son $1 {{PLURAL:$1|günde|günde}} bir çeşit etkinlik göstermiş kullanıcıların listesidir.',
+'activeusers-count' => 'Son {{PLURAL:$3|günde|$3 günde}} $1 {{PLURAL:$1|değişiklik|değişiklik}}',
+'activeusers-from' => 'Şununla başlayan kullanıcıları görüntüle:',
+'activeusers-hidebots' => 'Botları gizle',
+'activeusers-hidesysops' => 'Yöneticileri gizle',
+'activeusers-noresult' => 'Kullanıcı bulunamadı.',
# Special:Log/newusers
'newuserlogpage' => 'Yeni kullanıcı kayıtları',
@@ -1759,17 +2013,23 @@ Desteklenen iletişim kuralları: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Otomatik hesap oluşturuldu',
# Special:ListGroupRights
-'listgrouprights' => 'Kullanıcı grubu hakları',
-'listgrouprights-summary' => 'Aşağıdaki bu vikide tanımlanan kullanıcı gruplarının, ilgili erişim haklarıyla birlikte listesidir.
+'listgrouprights' => 'Kullanıcı grubu hakları',
+'listgrouprights-summary' => 'Aşağıdaki bu vikide tanımlanan kullanıcı gruplarının, ilgili erişim haklarıyla birlikte listesidir.
Bireysel haklarla ilgili [[{{MediaWiki:Listgrouprights-helppage}}|daha fazla bilgi]] olabilir.',
-'listgrouprights-group' => 'grup',
-'listgrouprights-rights' => 'Haklar',
-'listgrouprights-helppage' => 'Help:Grup hakları',
-'listgrouprights-members' => '(üyelerin listesi)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|Grup|Grup}} ekleyebilir: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|Grubu|Grupları}} kaldırabilir: $1',
-'listgrouprights-addgroup-all' => 'Tüm grupları ekleyebilir',
-'listgrouprights-removegroup-all' => 'Tüm grupları kaldırabilir',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Verilen hak</span>
+* <span class="listgrouprights-revoked">Geri alınan hak</span>',
+'listgrouprights-group' => 'grup',
+'listgrouprights-rights' => 'Haklar',
+'listgrouprights-helppage' => 'Help:Grup hakları',
+'listgrouprights-members' => '(üyelerin listesi)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|Grup|Grup}} ekleyebilir: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|Grubu|Grupları}} kaldırabilir: $1',
+'listgrouprights-addgroup-all' => 'Tüm grupları ekleyebilir',
+'listgrouprights-removegroup-all' => 'Tüm grupları kaldırabilir',
+'listgrouprights-addgroup-self' => 'Kendi hesabına {{PLURAL:$2|grup|gruplar}} ekleyebilir: $1',
+'listgrouprights-removegroup-self' => 'Kendi hesabından {{PLURAL:$2|grup|grupları}} çıkarabilir: $1',
+'listgrouprights-addgroup-self-all' => 'Kendi hesabına tüm grupları ekleyebilir',
+'listgrouprights-removegroup-self-all' => 'Kendi hesabından tüm grupları çıkarabilir',
# E-mail user
'mailnologin' => 'Gönderi adresi yok.',
@@ -1863,10 +2123,13 @@ Bahsi geçen sayfayı ziyaret edinceye kadar sayfayla ilgili başka değişiklik
{{SITENAME}} sitesinin uyarı sistemi.
--
-Ayarları değiştirmek için:
-{{fullurl:Special:Watchlist/edit}}
+İzleme listesi ayarlarınızı değiştirmek için:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Sayfayı izleme listenizden silmek için:
+$UNWATCHURL
-Yardım ve öneriler için:
+Geridönüt ve daha fazla yardım için:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1878,10 +2141,11 @@ Yardım ve öneriler için:
'exblank' => 'sayfa içeriği boş',
'delete-confirm' => '"$1" sil',
'delete-legend' => 'sil',
-'historywarning' => 'Uyarı: Silmek üzere olduğunuz sayfanın geçmişi vardır:',
+'historywarning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfanın yaklaşık olarak $1 {{PLURAL:$1|sürüme|sürüme}} sahip bir geçmişi var:",
'confirmdeletetext' => 'Bu sayfayı veya dosyayı tüm geçmişi ile birlikte veritabanından kalıcı olarak silmek üzeresiniz.
Bu işlemden kaynaklı doğabilecek sonuçların farkında iseniz ve işlemin [[{{MediaWiki:Policy-url}}|Silme kurallarına]] uygun olduğuna eminseniz, işlemi onaylayın.',
'actioncomplete' => 'İşlem tamamlandı.',
+'actionfailed' => 'Eylem başarısız oldu',
'deletedtext' => '"<nowiki>$1</nowiki>" silindi.
Yakın zamanda silinenleri görmek için: $2.',
'deletedarticle' => '"$1" silindi',
@@ -1905,20 +2169,21 @@ Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
dikkatle devam edin.',
# Rollback
-'rollback' => 'değişiklikleri geri al',
-'rollback_short' => 'geri al',
-'rollbacklink' => 'eski haline getir',
-'rollbackfailed' => 'geri alma işlemi başarısız',
-'cantrollback' => 'Sayfaya son katkıda bulunan kullanıcı, sayfaya katkıda bulunmuş tek kişi olduğu için, değişiklikler geri alınamıyor.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tarafından [[:$1]] sayfasında yapılmış son değişiklik geriye alınamıyor;
+'rollback' => 'değişiklikleri geri al',
+'rollback_short' => 'geri al',
+'rollbacklink' => 'eski haline getir',
+'rollbackfailed' => 'geri alma işlemi başarısız',
+'cantrollback' => 'Sayfaya son katkıda bulunan kullanıcı, sayfaya katkıda bulunmuş tek kişi olduğu için, değişiklikler geri alınamıyor.',
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tarafından [[:$1]] sayfasında yapılmış son değişiklik geriye alınamıyor;
başka biri sayfada değişiklik yaptı ya da sayfayı geriye aldı.
Son değişikliği yapan: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Değişiklik özeti: \"''\$1''\" idi.", # only shown if there is an edit comment
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) tarafından yapılan değişiklikler geri alınarak, [[User:$1|$1]] tarafından değiştirilmiş önceki sürüm geri getirildi.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '$1 tarafından yapılan değişiklikler geri alınarak;
+'editcomment' => "Değişiklik özeti: \"''\$1''\" idi.",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) tarafından yapılan değişiklikler geri alınarak, [[User:$1|$1]] tarafından değiştirilmiş önceki sürüm geri getirildi.',
+'revertpage-nouser' => '(kullanıcı adı çıkarılmış) tarafından yapılan değişiklikler [[User:$1|$1]] tarafından yapılan son revizyona geri alındı',
+'rollback-success' => '$1 tarafından yapılan değişiklikler geri alınarak;
$2 tarafından değiştirilmiş önceki sürüme geri dönüldü.',
-'sessionfailure' => 'Giriş oturumunuzla ilgili bir sorun var gibi görünüyor;
+'sessionfailure' => 'Giriş oturumunuzla ilgili bir sorun var gibi görünüyor;
bu eylem, oturum gaspına karşı önlem olarak iptal edildi.
Lütfen "geri" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar deneyin.',
@@ -1937,7 +2202,7 @@ Daha fazla bilgi için [[Project:Koruma altına alınmış sayfa]] sayfasına ba
'protectexpiry' => 'Bitiş tarihi:',
'protect_expiry_invalid' => 'Geçersiz bitiş tarihi.',
'protect_expiry_old' => 'Geçmişteki son kullanma zamanı.',
-'protect-unchain' => 'Taşıma kilidini kaldır',
+'protect-unchain-permissions' => 'İleriki koruma seçeneklerinin kilidini kaldır',
'protect-text' => "'''<nowiki>$1</nowiki>''' sayfasının koruma durumunu buradan görebilir ve değiştirebilirsiniz.",
'protect-locked-blocked' => "Engellenmiş iken koruma seviyelerini değiştiremezsiniz.
'''$1''' sayfasının şu anki ayarları:",
@@ -1967,7 +2232,7 @@ Bu sayfanın koruma seviyesini değiştirebilirsiniz; ancak bu kademeli korumaya
** Değişiklik savaşı
** Yüksek trafiğe sahip sayfa',
'protect-edit-reasonlist' => 'Koruma nedenlerini değiştir',
-'protect-expiry-options' => '1 saat:1 hour,1 gün:1 day,1 hafta:1 week,2 hafta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,Süresiz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 saat:1 hour,1 gün:1 day,1 hafta:1 week,2 hafta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,Süresiz:infinite',
'restriction-type' => 'İzin:',
'restriction-level' => 'Kısıtlama düzeyi:',
'minimum-size' => 'Minumum boyutu',
@@ -2006,6 +2271,7 @@ Revizyon onarılmış veya arşivden silinmiş olabilir ya da sahip olduğunuz b
'undelete-nodiff' => 'Önceki bir revizyon bulunamadı.',
'undeletebtn' => 'Geri getir!',
'undeletelink' => 'görüntüle/geri getir',
+'undeleteviewlink' => 'görüntüle',
'undeletereset' => 'Vazgeç',
'undeleteinvert' => 'Seçimi ters çevir',
'undeletecomment' => 'Neden:',
@@ -2044,19 +2310,23 @@ $1',
'contributions-title' => '$1 için kullanıcı katkıları',
'mycontris' => 'katkılarım',
'contribsub2' => '$1 ($2)',
-'nocontribs' => 'Bu kriterlere uyan değişiklik bulunamadı', # Optional parameter: $1 is the user name
+'nocontribs' => 'Bu kriterlere uyan değişiklik bulunamadı',
'uctop' => '(son)',
'month' => 'Ay:',
'year' => 'Yıl:',
-'sp-contributions-newbies' => 'Sadece yeni hesap açan kullanıcıların katkılarını göster',
-'sp-contributions-newbies-sub' => 'Yeni kullanıcılar için',
-'sp-contributions-newbies-title' => 'Yeni hesaplar için kullanıcı katkıları',
-'sp-contributions-blocklog' => 'Engel kaydı',
-'sp-contributions-logs' => 'günlükler',
-'sp-contributions-search' => 'Katkıları ara',
-'sp-contributions-username' => 'IP veya kullanıcı:',
-'sp-contributions-submit' => 'Ara',
+'sp-contributions-newbies' => 'Sadece yeni hesap açan kullanıcıların katkılarını göster',
+'sp-contributions-newbies-sub' => 'Yeni kullanıcılar için',
+'sp-contributions-newbies-title' => 'Yeni hesaplar için kullanıcı katkıları',
+'sp-contributions-blocklog' => 'Engel kaydı',
+'sp-contributions-deleted' => 'silinen kullanıcı katkıları',
+'sp-contributions-logs' => 'günlükler',
+'sp-contributions-talk' => 'tartışma',
+'sp-contributions-userrights' => 'kullanıcı hakları yönetimi',
+'sp-contributions-blocked-notice' => 'Bu kullanıcı engellenmiştir. Referans için en son engellenme kaydı aşağıda belirtilmiştir:',
+'sp-contributions-search' => 'Katkıları ara',
+'sp-contributions-username' => 'IP veya kullanıcı:',
+'sp-contributions-submit' => 'Ara',
# What links here
'whatlinkshere' => 'Sayfaya bağlantılar',
@@ -2079,6 +2349,7 @@ $1',
# Block/unblock
'blockip' => 'Kullanıcıyı engelle',
+'blockip-title' => 'Kullanıcıyı engelle',
'blockip-legend' => 'Kullanıcıyı engelle',
'blockiptext' => "Aşağıdaki formu kullanarak belli bir IP'nin veya kayıtlı kullanıcının değişiklik yapmasını engelleyebilirsiniz. Bu sadece vandalizmi engellemek için ve [[{{MediaWiki:Policy-url}}|kurallara]] uygun olarak yapılmalı. Aşağıya mutlaka engelleme ile ilgili bir açıklama yazınız. (örnek: -Şu- sayfalarda vandalizm yapmıştır).",
'ipaddress' => 'IP Adresi',
@@ -2100,7 +2371,7 @@ $1',
'ipbenableautoblock' => 'Bu kullanıcı tarafından kullanılan son IP adresini ve değişişiklik yapmaya çalıştıkları mütakip IPleri otomatik olarak engelle',
'ipbsubmit' => 'Bu kullanıcıyı engelle',
'ipbother' => 'Farklı zaman',
-'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 hafta:1 week,2 hafta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,Süresiz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 hafta:1 week,2 hafta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,Süresiz:infinite',
'ipbotheroption' => 'farklı',
'ipbotherreason' => 'Başka/ek sebepler:',
'ipbhidename' => 'Kullanıcı adını katkılarda ve listelerde gizle',
@@ -2129,9 +2400,11 @@ $1',
'ipblocklist-sh-tempblocks' => 'Geçici engellemeleri $1',
'ipblocklist-sh-addressblocks' => 'Tek IP engellemelerini $1',
'ipblocklist-submit' => 'Ara',
+'ipblocklist-localblock' => 'Yerel engelleme',
+'ipblocklist-otherblocks' => 'Diğer {{PLURAL:$1|engelleme|engellemeler}}',
'blocklistline' => '$1, $2 engellendi: $3 ($4)',
'infiniteblock' => 'Süresiz',
-'expiringblock' => '$1 tarihinde doluyor',
+'expiringblock' => '$1 $2 tarihinde doluyor',
'anononlyblock' => 'sadece anonim',
'noautoblockblock' => 'otomatik engelleme devre dışı bırakıldı',
'createaccountblock' => 'hesap yaratımı engellendi',
@@ -2145,7 +2418,10 @@ $1',
'contribslink' => 'Katkılar',
'autoblocker' => 'Otomatik olarak engellendiniz çünkü yakın zamanda IP adresiniz "[[User:$1|$1]]" kullanıcısı tarafından kullanılmıştır. $1 isimli kullanıcının engellenmesi için verilen sebep: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Erişim engelleme kayıtları',
-'blocklog-fulllog' => 'Tüm engelleme kaydı',
+'blocklog-showlog' => 'Bu kullanıcı daha önceden engellenmiş.
+Engelleme günlüğü referans için aşağıda sağlanmıştır:',
+'blocklog-showsuppresslog' => 'Bu kullanıcı daha önceden engellenmiş ve gizlenmiş.
+Gizleme günlüğü referans için aşağıda sağlanmıştır:',
'blocklogentry' => ', [[$1]] kullanıcısını engelledi, engelleme süresi: $2 $3',
'reblock-logentry' => '[[$1]] için bitiş tarihi $2 $3 olmak üzere engelleme ayarlarını değiştirdi',
'blocklogtext' => 'Burada kullanıcı erişimine yönelik engelleme ya da engelleme kaldırma kayıtları listelenmektedir. Otomatik IP adresi engellemeleri listeye dahil değildir. Şu anda erişimi durdurulmuş kullanıcıları [[Special:IPBlockList|IP engelleme listesi]] sayfasından görebilirsiniz.',
@@ -2164,11 +2440,13 @@ $1',
'ipb_already_blocked' => '"$1" zaten engellenmiş',
'ipb-needreblock' => '== Zaten engellenmiş ==
$1 zaten engellenmiş. Ayarları değiştirmek istiyor musunuz?',
+'ipb-otherblocks-header' => 'Diğer {{PLURAL:$1|engelleme|engellemeler}}',
'ipb_cant_unblock' => 'Hata: Engelleme IDsi $1 bulunamadı.
Engelleme kaldırılmış olabilir.',
'ipb_blocked_as_range' => 'Hata: $1 IP adresi doğrudan engellenmemiş ve engelleme kaldırılamaz.
Ancak, bu adres $2 aralığının parçası olarak engellenmiş, aralık engellemesini kaldırabilirsiniz.',
'ip_range_invalid' => 'Geçersiz IP aralığı.',
+'ip_range_toolarge' => '/$1 bloktan daha büyük aralık bloklarına izin verilmez.',
'blockme' => 'Beni engelle',
'proxyblocker' => 'Proxy engelleyici',
'proxyblocker-disabled' => 'Bu özellik engellenildi.',
@@ -2179,6 +2457,7 @@ Lütfen İnternet sevis sağlayınız ile ya da teknik destek ile irtibat kurun
'sorbs_create_account_reason' => "IP adresiniz {{SITENAME}} sitesi tarafından kullanılan DNSBL'de açık proxy olarak listelenmiş.
Hesap oluşturamazsınız",
'cant-block-while-blocked' => 'Siz engelliyken başka kullanıcıları engelleyemezsiniz.',
+'cant-see-hidden-user' => 'Engellemek istediğiniz kullanıcı zaten engellenmiş ve gizlenmiş. Kullanıcıgizle yetkiniz olmadığı için, kullanıcının engellenmesini göremez ya da değiştiremezsiniz.',
# Developer tools
'lockdb' => 'Veritabanı kilitli',
@@ -2218,6 +2497,7 @@ Bu değişim popüler bir sayfa için beklenmeyen sonuçlar doğurabilir; lütfe
Bu durumlarda sayfayı kendiniz aktarmalısınız.",
'movearticle' => 'Eski isim',
+'moveuserpage-warning' => "'''Uyarı:''' Bir kullanıcı sayfasını taşımak üzeresiniz. Lütfen sadece sayfanın taşınacağına, ancak kullanıcının yeniden ''adlandırılmayacağına'' dikkat edin.",
'movenologin' => 'Sistemde değilsiniz.',
'movenologintext' => 'Sayfanın adını değiştirebilmek için kayıtlı ve [[Special:UserLogin|sisteme]] giriş yapmış olmanız gerekmektedir.',
'movenotallowed' => 'Sayfaları taşımaya izniniz yok.',
@@ -2228,7 +2508,7 @@ Bu durumlarda sayfayı kendiniz aktarmalısınız.",
'move-watch' => 'Bu sayfayı izle',
'movepagebtn' => 'İsmi değiştir',
'pagemovedsub' => 'İsim değişikliği tamamlandı.',
-'movepage-moved' => '\'\'\'"$1", "$2" sayfasına taşındı\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1", "$2" sayfasına taşındı\'\'\'',
'movepage-moved-redirect' => 'Bir yönlendirme oluşturuldu.',
'movepage-moved-noredirect' => 'Bir yönlendirme oluşturulması bastırıldı.',
'articleexists' => 'Bu isimde bir sayfa bulunmakta veya seçmiş olduğunuz isim geçersizdir.
@@ -2270,6 +2550,14 @@ Lütfen başka bir isim deneyiniz.',
'imageinvalidfilename' => 'Hedef dosya adı geçersiz',
'fix-double-redirects' => 'Orijinal başlığa işaret eden yönlendirmeleri güncelle',
'move-leave-redirect' => 'Arkada bir yönlendirme bırak',
+'protectedpagemovewarning' => "'''Uyarı:''' Bu sayfa kilitlenmiş, sadece hizmetli ayrıcalıklarına sahip kullanıcılar taşıyabilir.
+Son günlük girdisi referans amaçlı aşağıda verilmiştir:",
+'semiprotectedpagemovewarning' => "'''Not:''' Bu sayfa kilitlenmiş, sadece kayıtlı kullanıcılar taşıyabilir.
+Son günlük girdisi referans amaçlı aşağıda verilmiştir:",
+'move-over-sharedrepo' => '== Dosya mevcut ==
+[[:$1]] paylaşılmış havuzda mevcut. Bir dosyayı bu başlığa taşımak paylaşılmış dosyanın üstüne gelecektir.',
+'file-exists-sharedrepo' => 'Seçilen isim paylaşılmış bir havuzda zaten mevcut.
+Lütfen başka bir isim seçin.',
# Export
'export' => 'Sayfa kaydet',
@@ -2292,15 +2580,21 @@ Sonuncu durumda, bir link de kullanabilirsiniz, ör: "[[{{MediaWiki:Mainpage}}]]
'export-pagelinks' => 'Bağlı sayfaları içerecek derinlik:',
# Namespace 8 related
-'allmessages' => 'Sistem mesajları',
-'allmessagesname' => 'İsim',
-'allmessagesdefault' => 'Orjinal metin',
-'allmessagescurrent' => 'Kullanımdaki metin',
-'allmessagestext' => 'Bu liste MediaWiki ad alanında mevcut olan sistem mesajlarının listesidir.
+'allmessages' => 'Sistem mesajları',
+'allmessagesname' => 'İsim',
+'allmessagesdefault' => 'Orjinal metin',
+'allmessagescurrent' => 'Kullanımdaki metin',
+'allmessagestext' => 'Bu liste MediaWiki ad alanında mevcut olan sistem mesajlarının listesidir.
Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [http://www.mediawiki.org/wiki/Localisation MediaWiki Yerelleştirmesi] ve [http://translatewiki.net translatewiki.net] sayfalarını ziyaret edin.',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' kapalı olduğu için '''{{ns:special}}:Allmessages''' kullanıma açık değil.",
-'allmessagesfilter' => 'Metin ayrıştırıcı filtresi:',
-'allmessagesmodified' => 'Sadece değiştirilmişleri göster',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' kapalı olduğu için '''{{ns:special}}:Allmessages''' kullanıma açık değil.",
+'allmessages-filter-legend' => 'Filtre',
+'allmessages-filter' => 'Özelleştirme durumuna göre filtrele:',
+'allmessages-filter-unmodified' => 'Değiştirilmemiş',
+'allmessages-filter-all' => 'Hepsi',
+'allmessages-filter-modified' => 'Değiştirilmiş',
+'allmessages-prefix' => 'Önek ile filtrele:',
+'allmessages-language' => 'Dil:',
+'allmessages-filter-submit' => 'Git',
# Thumbnails
'thumbnail-more' => 'Büyüt',
@@ -2310,6 +2604,9 @@ Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [http:/
'djvu_no_xml' => 'DjVu dosyası için XML alınamıyor',
'thumbnail_invalid_params' => 'Geçersiz küçük resim parametreleri',
'thumbnail_dest_directory' => 'Hedef dizini oluşturulamıyor',
+'thumbnail_image-type' => 'Görüntü türü desteklenmiyor',
+'thumbnail_gd-library' => 'Eksik GD kütüphanesi yapılandırması: kayıp fonksiyon $1',
+'thumbnail_image-missing' => 'Dosya kayıp gibi görünüyor: $1',
# Special:Import
'import' => 'Sayfaları aktar',
@@ -2377,6 +2674,7 @@ Geçici dosya kayıp.',
'tooltip-ca-viewsource' => 'Bu sayfa koruma altında. Sadece kaynak kodunu sadece görebilirsiniz. İçeriği değiştiremezsiniz.',
'tooltip-ca-history' => 'Bu sayfanın geçmiş versiyonları.',
'tooltip-ca-protect' => 'Bu sayfayı koru',
+'tooltip-ca-unprotect' => 'Bu sayfanın korumasını kaldır',
'tooltip-ca-delete' => 'Sayfayı sil',
'tooltip-ca-undelete' => 'Sayfayı silinmeden önceki haline geri getirin',
'tooltip-ca-move' => 'Sayfanın adını değiştir',
@@ -2387,6 +2685,7 @@ Geçici dosya kayıp.',
'tooltip-search-fulltext' => 'Bu metin için sayfaları ara',
'tooltip-p-logo' => 'Ana sayfa',
'tooltip-n-mainpage' => 'Ana sayfaya dön',
+'tooltip-n-mainpage-description' => 'Ana sayfaya git',
'tooltip-n-portal' => 'Proje üzerine, ne nerdedir, neler yapılabilir',
'tooltip-n-currentevents' => 'Güncel olaylarla ilgili son bilgiler',
'tooltip-n-recentchanges' => 'Vikide yapılmış son değişikliklerin listesi.',
@@ -2439,10 +2738,12 @@ Geçici dosya kayıp.',
# Attribution
'anonymous' => '{{SITENAME}} sitesinin anonim {{PLURAL:$1|kullanıcısı|kullanıcıları}}',
'siteuser' => '{{SITENAME}} kullanıcısı $1',
-'lastmodifiedatby' => 'Sayfa en son $3 tarafından $2, $1 tarihinde değiştirildi.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} anonim kullanıcısı $1',
+'lastmodifiedatby' => 'Sayfa en son $3 tarafından $2, $1 tarihinde değiştirildi.',
'othercontribs' => '$1 tarafından yapılan çalışma baz alınmıştır.',
'others' => 'diğerleri',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|kullanıcısı|kullanıcıları}} $1',
+'anonusers' => '{{SITENAME}} anonim {{PLURAL:$2|kullanıcısı|kullanıcıları}} $1',
'creditspage' => 'Sayfa künyesi',
'nocredits' => 'Bu sayfa için künye bilgisi mevcut değil.',
@@ -2477,11 +2778,23 @@ Geçici dosya kayıp.',
'mw_math_modern' => 'Modern tarayıcılar için tavsiye edilen',
'mw_math_mathml' => 'Mümkünse MathML (daha deneme aşamasında)',
+# Math errors
+'math_failure' => 'Ayrıştırılamadı',
+'math_unknown_error' => 'bilinmeyen hata',
+'math_unknown_function' => 'bilinmeyen fonksiyon',
+'math_lexing_error' => 'lexing hatası',
+'math_syntax_error' => 'sözdizim hatası',
+'math_image_error' => 'PNG çevirisi başarısız; latex, dvips ve gs programlarının doğru yüklendiğine emin olun ve çeviri işlemini başlatın',
+'math_bad_tmpdir' => 'Math geçici dizinine yazılamıyor ya da oluşturulamıyor',
+'math_bad_output' => 'Math çıktı dizinine yazılamıyor ya da oluşturulamıyor',
+'math_notexvc' => "texvc çalıştırılabiliri kayıp;
+ayarlamak için math/README'ye bakın.",
+
# Patrolling
'markaspatrolleddiff' => 'Kontrol edilmiş olarak işaretle',
'markaspatrolledtext' => 'Kontrol edilmiş olarak işaretle',
'markedaspatrolled' => 'Kontrol edildi',
-'markedaspatrolledtext' => 'Gözden geçirilen metin kontrol edilmiş olarak işaretlendi.',
+'markedaspatrolledtext' => '[[:$1]] için seçili revizyon gözden geçirilmiş olarak işaretlendi.',
'rcpatroldisabled' => 'Son Değişiklikler Gözetimi devre dışı bırakıldı',
'rcpatroldisabledtext' => 'Son Değişiklikler Gözetimi özelliği şuanda devre dışı.',
'markedaspatrollederror' => 'Kontrol edilmedi',
@@ -2511,15 +2824,11 @@ $1',
'previousdiff' => '← Önceki sürümle aradaki fark',
'nextdiff' => 'Sonraki sürümle aradaki fark →',
-# Visual comparison
-'visual-comparison' => 'Görsel karşılaştırma',
-
# Media information
'mediawarning' => "'''Uyarı''': Bu dosya türü kötü niyetli kodlar içerebilir.
Bunu çalıştırarak, sisteminiz tehlikeye atılabilir.",
-'imagemaxsize' => 'Resim açıklamalar sayfalarındaki resmin en büyük boyutu:',
+'imagemaxsize' => "Resim boyutu sınırı:<br />''(dosya açıklama sayfaları için)''",
'thumbsize' => 'Küçük boyut:',
-'widthheight' => '$1×$2',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sayfa|sayfa}}',
'file-info' => '(dosya boyutu: $1, MIME tipi: $2)',
'file-info-size' => '($1 × $2 piksel, dosya boyutu: $3, MIME tipi: $4)',
@@ -2527,6 +2836,8 @@ Bunu çalıştırarak, sisteminiz tehlikeye atılabilir.",
'svg-long-desc' => '(SVG dosyası, sözde $1 × $2 piksel, dosya boyutu: $3)',
'show-big-image' => 'Tam çözünürlük',
'show-big-image-thumb' => '<small>Ön izleme boyutu: $1 × $2 piksel</small>',
+'file-info-gif-looped' => 'döngüye girdi',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kare|kare}}',
# Special:NewFiles
'newimages' => 'Yeni dosya galerisi',
@@ -2569,7 +2880,7 @@ Ondan sonraki bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya,
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Genişlik',
@@ -2702,14 +3013,14 @@ Ondan sonraki bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya,
'exif-unknowndate' => 'Bilinmeyen zaman',
-'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Yatay çevirme', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° döndürülmüş', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Dikey çevirme', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '90° döndürülmüş (sola doğru) ve dikey çevirme', # 0th row: left; 0th column: top
-'exif-orientation-6' => '90° döndürülmüş (saat yönünde)', # 0th row: right; 0th column: top
-'exif-orientation-7' => '90° döndürülmüş (saat yönünde) ve dikey çevirme', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '90° döndürülmüş (sola doğru)', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Yatay çevirme',
+'exif-orientation-3' => '180° döndürülmüş',
+'exif-orientation-4' => 'Dikey çevirme',
+'exif-orientation-5' => '90° döndürülmüş (sola doğru) ve dikey çevirme',
+'exif-orientation-6' => '90° döndürülmüş (saat yönünde)',
+'exif-orientation-7' => '90° döndürülmüş (saat yönünde) ve dikey çevirme',
+'exif-orientation-8' => '90° döndürülmüş (sola doğru)',
'exif-planarconfiguration-1' => 'chunky format',
'exif-planarconfiguration-2' => 'Düzlemsel biçim',
@@ -2849,7 +3160,7 @@ Ondan sonraki bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya,
'exif-gpsmeasuremode-2' => '2-boyutlu ölçüm',
'exif-gpsmeasuremode-3' => '3-boyutlu ölçüm',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/s',
'exif-gpsspeed-m' => 'Mil/saat',
'exif-gpsspeed-n' => 'Deniz mili',
@@ -2868,6 +3179,7 @@ Ondan sonraki bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya,
'watchlistall2' => 'Hepsini göster',
'namespacesall' => 'Hepsi',
'monthsall' => 'hepsi',
+'limitall' => 'tümü',
# E-mail address confirmation
'confirmemail' => 'E-posta adresini onayla',
@@ -3002,7 +3314,7 @@ Ayrıca [[Special:Watchlist/edit|standart düzenleme sayfasını]] da kullanabil
'duplicate-defaultsort' => 'Uyarı: Varsayılan "$2" sınıflandırma anahtarı, önceki "$1" sınıflandırma anahtarını geçersiz kılıyor.',
# Special:Version
-'version' => 'Sürüm', # Not used as normal message but as header for the special page itself
+'version' => 'Sürüm',
'version-extensions' => 'Yüklü ekler',
'version-specialpages' => 'Özel sayfalar',
'version-parserhooks' => 'Derleyici çengelleri',
@@ -3016,7 +3328,7 @@ Ayrıca [[Special:Watchlist/edit|standart düzenleme sayfasını]] da kullanabil
'version-skin-extension-functions' => 'Tema eki fonksiyonları',
'version-hook-name' => 'Çengel adı',
'version-hook-subscribedby' => 'Abone olan',
-'version-version' => 'Sürüm',
+'version-version' => '(Sürüm $1)',
'version-license' => 'Lisans',
'version-software' => 'Yüklü yazılım',
'version-software-product' => 'Ürün',
@@ -3097,4 +3409,15 @@ Dosya adını "{{ns:file}}:" öneki olmadan gir.',
'dberr-outofdate' => 'İçeriğimizin onların dizinlerinde güncel olmayabileceğini dikkate alın.',
'dberr-cachederror' => 'Aşağıdaki istenen sayfanın önbellekteki bir kopyasıdır, ve güncel olmayabilir.',
+# HTML forms
+'htmlform-invalid-input' => 'Girdinizin bir kısmıyla ilgili sorunlar var',
+'htmlform-select-badoption' => 'Belirttiğiniz değer geçerli bir seçenek değil.',
+'htmlform-int-invalid' => 'Belirttiğiniz değer bir tamsayı değil.',
+'htmlform-float-invalid' => 'Belirttiğiniz değer bir sayı değil.',
+'htmlform-int-toolow' => "Belirttiğiniz değer asgari $1'in altında",
+'htmlform-int-toohigh' => "Belirttiğiniz değer azami $1'in üstünde",
+'htmlform-submit' => 'Gönder',
+'htmlform-reset' => 'Değişiklikleri geri al',
+'htmlform-selectorother-other' => 'Diğer',
+
);
diff --git a/languages/messages/MessagesTs.php b/languages/messages/MessagesTs.php
index 37a4422b..146080bd 100644
--- a/languages/messages/MessagesTs.php
+++ b/languages/messages/MessagesTs.php
@@ -58,19 +58,23 @@ $messages = array(
'november' => 'Hukuri',
'december' => "N'wendzamhala",
-'newwindow' => '(Yi pfula e ndhzawini yintswa)',
-'cancel' => 'Thsika',
+'newwindow' => '(Yi pfula e ndhzawini yintswa)',
+'cancel' => 'Thsika',
+'moredotdotdot' => "Swin'wana...",
+'mypage' => 'Tluka ramina',
+'mytalk' => 'Mbulavulo namina',
+'anontalk' => 'Vulavula na IP leyi',
+'and' => '&#32;nakambe',
+
+# Cologne Blue skin
'qbfind' => 'Kuma',
'qbedit' => 'Lulamisa',
'qbpageoptions' => 'Tluka leri',
'qbpageinfo' => 'mongo',
'qbmyoptions' => 'Matluka ya mina',
'qbspecialpages' => 'Matluka yohlawuleka',
-'moredotdotdot' => "Swin'wana...",
-'mypage' => 'Tluka ramina',
-'mytalk' => 'Mbulavulo namina',
-'anontalk' => 'Vulavula na IP leyi',
-'and' => '&#32;nakambe',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
'errorpagetitle' => 'Xihoxo',
'returnto' => 'Thlelela e $1.',
@@ -104,8 +108,6 @@ $messages = array(
'disclaimerpage' => 'Project:Swithsuxa nadzu hikuangara',
'edithelp' => 'Mpfuno hi ta mindzulamiso',
'edithelppage' => 'Help:Mindzulamiso',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Leswinga ndzeni',
'mainpage' => 'Tlukankulu',
'mainpage-description' => 'Tluka-Nkulu',
@@ -182,10 +184,6 @@ The last attempted database query was:
"$1"
from within function "$2".
MySQL returned error "$3: $4"',
-'noconnect' => 'Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.<br />
-$1',
-'nodb' => 'Could not select database $1',
-'cachederror' => 'The following is a cached copy of the requested page, and may not be up to date.',
'laggedslavemode' => 'Warning: Page may not contain recent updates.',
'readonly' => 'Database locked',
'enterlockreason' => 'Enter a reason for the lock, including an estimate of when the lock will be released',
@@ -235,8 +233,6 @@ Query: $2',
'userlogout' => 'Pfala u famba',
'nologinlink' => 'Tumbuluxa akhawunti',
'createaccount' => 'Tumbuluxa akhawunti',
-'yourrealname' => 'Vito ra ntiyiso:',
-'yourlanguage' => 'Ririmi:',
# Edit pages
'summary' => 'Nkomiso:',
@@ -276,11 +272,13 @@ U hi tshembisa nakambe leswaku hi wena mutsari wa leswi nyikeriwaka laha, kumbe
'mypreferences' => 'Minhlawulo ya mina',
'prefs-edits' => 'Ntsengo wa mindzulamiso:',
'skin-preview' => 'Ndzinganiso',
-'datetime' => 'Siku na nkarhi',
+'prefs-datetime' => 'Siku na nkarhi',
'prefs-watchlist' => 'Nxaxamelo wa Leswivoniwaka',
'saveprefs' => 'Hlayisa',
'resetprefs' => 'sula kucinca lokungahlayisiwangiki',
-'textboxsize' => 'Kululamisa',
+'prefs-editing' => 'Kululamisa',
+'yourrealname' => 'Vito ra ntiyiso:',
+'yourlanguage' => 'Ririmi:',
# Rights
'right-read' => 'Matluka yo Hlaya',
@@ -294,7 +292,9 @@ U hi tshembisa nakambe leswaku hi wena mutsari wa leswi nyikeriwaka laha, kumbe
'show' => 'Komba',
# Recent changes linked
-'recentchangeslinked' => 'Kuncica loku yelanaka',
+'recentchangeslinked' => 'Kuncica loku yelanaka',
+'recentchangeslinked-feed' => 'Kuncica loku yelanaka',
+'recentchangeslinked-toolbox' => 'Kuncica loku yelanaka',
# Upload
'upload' => 'Khandziyisa fayili',
@@ -306,6 +306,7 @@ U hi tshembisa nakambe leswaku hi wena mutsari wa leswi nyikeriwaka laha, kumbe
'listfiles_name' => 'vito',
# File description page
+'file-anchor-link' => 'Fayili',
'filehist-deleteall' => 'sula hinkwaswo',
'filehist-deleteone' => 'Dlaya',
'filehist-revert' => 'thlerisela',
@@ -352,13 +353,14 @@ U hi tshembisa nakambe leswaku hi wena mutsari wa leswi nyikeriwaka laha, kumbe
'contributions' => 'Minyikelo ya mutirhisi',
'mycontris' => 'Minyikelo ya mina',
'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Ku hava ku cinca loku kumiweke eka xiyenge lexi.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Ku hava ku cinca loku kumiweke eka xiyenge lexi.',
'uctop' => '(Henhla)',
'month' => 'Kusukela e ka nhweti ya (kuya endhzaku):',
'year' => 'Ku sukela e ka lembe ra (kuya endhzaku):',
'sp-contributions-newbies' => 'Komba minyikela ya ti akhawunti tintswa ntsena',
'sp-contributions-newbies-sub' => 'Eka ti akhawunti ti ntswa',
+'sp-contributions-talk' => 'Mbulavulo',
'sp-contributions-search' => 'Lava minyikelo',
# What links here
diff --git a/languages/messages/MessagesTt.php b/languages/messages/MessagesTt.php
index 20740b94..6cfb6788 100644
--- a/languages/messages/MessagesTt.php
+++ b/languages/messages/MessagesTt.php
@@ -1,10 +1,13 @@
<?php
/** Tatar (Tatarça/Татарча)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
* @comment Placeholder for Tatar. Falls back to Tatar in Latin script.
*/
-$fallback = 'tt-latn';
+$fallback = 'tt-cyrl';
diff --git a/languages/messages/MessagesTt_cyrl.php b/languages/messages/MessagesTt_cyrl.php
index 6c9b7881..7484aa63 100644
--- a/languages/messages/MessagesTt_cyrl.php
+++ b/languages/messages/MessagesTt_cyrl.php
@@ -13,12 +13,120 @@
* @author KhayR
* @author Rinatus
* @author Timming
+ * @author Yildiz
* @author Ерней
* @author Рашат Якупов
*/
$fallback = 'ru';
+$datePreferences = false;
+
+$defaultDateFormat = 'dmy';
+
+$dateFormats = array(
+ 'mdy time' => 'H:i',
+ 'mdy date' => 'M j, Y',
+ 'mdy both' => 'H:i, M j, Y',
+ 'dmy time' => 'H:i',
+ 'dmy date' => 'j M Y',
+ 'dmy both' => 'j M Y, H:i',
+ 'ymd time' => 'H:i',
+ 'ymd date' => 'Y M j',
+ 'ymd both' => 'H:i, Y M j',
+ 'ISO 8601 time' => 'xnH:xni:xns',
+ 'ISO 8601 date' => 'xnY-xnm-xnd',
+ 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
+);
+
+$namespaceNames = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Махсус',
+ NS_TALK => 'Бәхәс',
+ NS_USER => 'Кулланучы',
+ NS_USER_TALK => 'Кулланучы_бәхәсе',
+ NS_PROJECT_TALK => '$1_бәхәсе',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файл_бәхәсе',
+ NS_MEDIAWIKI => 'МедиаВики',
+ NS_MEDIAWIKI_TALK => 'МедиаВики_бәхәсе',
+ NS_TEMPLATE => 'Үрнәк',
+ NS_TEMPLATE_TALK => 'Үрнәк_бәхәсе',
+ NS_HELP => 'Ярдәм',
+ NS_HELP_TALK => 'Ярдәм_бәхәсе',
+ NS_CATEGORY => 'Төркем',
+ NS_CATEGORY_TALK => 'Төркем_бәхәсе',
+);
+
+$namespaceAliases = array(
+ 'Служебная' => NS_SPECIAL,
+ 'Обсуждение' => NS_TALK,
+ 'Фикер алышу' => NS_TALK,
+ 'Участница' => NS_USER,
+ 'Обсуждение участницы' => NS_USER_TALK,
+ 'Участник' => NS_USER,
+ 'Обсуждение_участника' => NS_USER_TALK,
+ 'Обсуждение_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
+ 'Изображение' => NS_FILE,
+ 'Обсуждение_изображения' => NS_FILE_TALK,
+ 'Обсуждение_файла' => NS_FILE_TALK,
+ 'Рәсем' => NS_FILE,
+ 'Рәсем_бәхәсе' => NS_FILE_TALK,
+ 'Обсуждение_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Медиа_Вики' => NS_MEDIAWIKI,
+ 'Медиа_Вики_бәхәсе' => NS_MEDIAWIKI_TALK,
+ 'Шаблон' => NS_TEMPLATE,
+ 'Обсуждение_шаблона' => NS_TEMPLATE_TALK,
+ 'Шаблон_бәхәсе' => NS_TEMPLATE_TALK,
+ 'Справка' => NS_HELP,
+ 'Обсуждение_справки' => NS_HELP_TALK,
+ 'Категория' => NS_CATEGORY,
+ 'Обсуждение_категории' => NS_CATEGORY_TALK,
+
+ // tt-latn namespace names
+ 'Maxsus' => NS_SPECIAL,
+ 'Bäxäs' => NS_TALK,
+ 'Äğzä' => NS_USER,
+ 'Äğzä_bäxäse' => NS_USER_TALK,
+ '$1_bäxäse' => NS_PROJECT_TALK,
+ 'Räsem' => NS_FILE,
+ 'Räsem_bäxäse' => NS_FILE_TALK,
+ 'MediaWiki_bäxäse' => NS_MEDIAWIKI_TALK,
+ 'Ürnäk' => NS_TEMPLATE,
+ 'Ürnäk_bäxäse' => NS_TEMPLATE_TALK,
+ 'Yärdäm' => NS_HELP,
+ 'Yärdäm_bäxäse' => NS_HELP_TALK,
+ 'Törkem' => NS_CATEGORY,
+ 'Törkem_bäxäse' => NS_CATEGORY_TALK,
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#yünältü', '#перенаправление', '#перенапр', '#REDIRECT' ),
+ 'notoc' => array( '0', '__ETYUQ__', '__БЕЗ_ОГЛ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__ETTIQ__', '__ОБЯЗ_ОГЛ__', '__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ET__', '__ОГЛ__', '__ОГЛАВЛЕНИЕ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__BÜLEMTÖZÄTÜYUQ__', '__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'AĞIMDAĞI_AY', 'ТЕКУЩИЙ_МЕСЯЦ', 'ТЕКУЩИЙ_МЕСЯЦ_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'AĞIMDAĞI_AY_İSEME', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'AĞIMDAĞI_AY_İSEME_GEN', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_РОД', 'CURRENTMONTHNAMEGEN' ),
+ 'currentday' => array( '1', 'AĞIMDAĞI_KÖN', 'ТЕКУЩИЙ_ДЕНЬ', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'AĞIMDAĞI_KÖN_İSEME', 'НАЗВАНИЕ_ТЕКУЩЕГО_ДНЯ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'AĞIMDAĞI_YIL', 'ТЕКУЩИЙ_ГОД', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'AĞIMDAĞI_WAQIT', 'ТЕКУЩЕЕ_ВРЕМЯ', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'MÄQÄLÄ_SANI', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ),
+ 'pagename' => array( '1', 'BİTİSEME', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ),
+ 'namespace' => array( '1', 'İSEMARA', 'ПРОСТРАНСТВО_ИМЁН', 'NAMESPACE' ),
+ 'subst' => array( '0', 'TÖPÇEK:', 'ПОДСТ:', 'ПОДСТАНОВКА:', 'SUBST:' ),
+ 'img_right' => array( '1', 'uñda', 'справа', 'right' ),
+ 'img_left' => array( '1', 'sulda', 'слева', 'left' ),
+ 'img_none' => array( '1', 'yuq', 'без', 'none' ),
+ 'int' => array( '0', 'EÇKE:', 'ВНУТР:', 'INT:' ),
+ 'sitename' => array( '1', 'SÄXİFÄİSEME', 'НАЗВАНИЕ_САЙТА', 'SITENAME' ),
+ 'ns' => array( '0', 'İA:', 'ПИ:', 'NS:' ),
+ 'localurl' => array( '0', 'URINLIURL:', 'ЛОКАЛЬНЫЙ_АДРЕС:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URINLIURLE:', 'ЛОКАЛЬНЫЙ_АДРЕС_2:', 'LOCALURLE:' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Сылтамаларның астына сызу:',
@@ -50,6 +158,7 @@ $messages = array(
'tog-enotifminoredits' => 'Кече үзгәртүләр турында да электрон почтага хәбәр җибәрелсен',
'tog-enotifrevealaddr' => 'Хәбәрләрдә e-mail адресым күрсәтелсен',
'tog-shownumberswatching' => 'Битне күзәтү исемлекләренә өстәгән кулланучылар санын күрсәтелсен',
+'tog-oldsig' => 'Хәзерге имзаны алдан карау:',
'tog-fancysig' => 'Имзаның шәхси вики-билгеләмәсе (автоматик сылтамасыз)',
'tog-externaleditor' => 'Тышкы редактор кулланырга (компьютер махсус көйләнгән булу зарур)',
'tog-externaldiff' => 'Тышкы версия чагыштыру программасын кулланырга (компьютер махсус көйләнгән булу зарур)',
@@ -72,6 +181,13 @@ $messages = array(
'underline-never' => 'Бервакытта да',
'underline-default' => 'Браузер көйләнмәләре кулланылсын',
+# Font style option in Special:Preferences
+'editfont-style' => 'Үзгәртү өлкәсендәге шрифт тибы:',
+'editfont-default' => 'Браузер көйләнмәләреннән булсын',
+'editfont-monospace' => 'Киңәйтелгән шрифт',
+'editfont-sansserif' => 'Киртексез шрифт',
+'editfont-serif' => 'Киртекле шрифт',
+
# Dates
'sunday' => 'Якшәмбе',
'monday' => 'Дүшәмбе',
@@ -131,7 +247,7 @@ $messages = array(
'category-media-header' => '«$1» төркемендәге файллар',
'category-empty' => "''Бу төркем әлегә буш.''",
'hidden-categories' => '{{PLURAL:$1|Яшерен төркем|Яшерен төркемнәр}}',
-'hidden-category-category' => 'Яшерен төркемнәр', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Яшерен төркемнәр',
'category-subcat-count' => '{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}',
'category-subcat-count-limited' => 'Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.',
'category-article-count' => '{{PLURAL:$2|Бу төркемдә бер генә бит бар.|Төркемдәге $2 битнең {{PLURAL:$1|$1 бите күрсәтелгән}}.}}',
@@ -139,6 +255,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Бу төркемдә бер генә файл бар.|Төркемдәге $2 файлның {{PLURAL:$1|$1 файлы күрсәтелгән}}.}}',
'category-file-count-limited' => 'Бу төркемдә {{PLURAL:$1|$1 файл}} бар.',
'listingcontinuesabbrev' => 'дәвамы',
+'index-category' => 'Индексланган битләр',
+'noindex-category' => 'Индексланмаган битләр',
'mainpagetext' => '«MediaWiki» уңышлы куелды.',
'mainpagedocfooter' => "Бу вики турында мәгълүматны [http://meta.wikimedia.org/wiki/Ярдәм:Эчтәлек биредә] табып була.
@@ -148,10 +266,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki турында еш бирелгән сораулар һәм җаваплар (инг.)];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның яңа версияләре турында хәбәрләр яздырып алу].",
-'about' => 'Тасвирлама',
-'article' => 'Эчтәлек бите',
-'newwindow' => '(яңа тәрәзәдә ачыла)',
-'cancel' => 'Баш тарту',
+'about' => 'Тасвирлама',
+'article' => 'Эчтәлек бите',
+'newwindow' => '(яңа тәрәзәдә ачыла)',
+'cancel' => 'Баш тарту',
+'moredotdotdot' => 'Дәвамы…',
+'mypage' => 'Шәхси битем',
+'mytalk' => 'Бәхәсем',
+'anontalk' => 'Бу IP-адрес өчен бәхәс бите',
+'navigation' => 'Күчү',
+'and' => '&#32;һәм',
+
+# Cologne Blue skin
'qbfind' => 'Эзләү',
'qbbrowse' => 'Карау',
'qbedit' => 'Үзгәртү',
@@ -159,15 +285,35 @@ $messages = array(
'qbpageinfo' => 'Бит турында мәгълүматлар',
'qbmyoptions' => 'Битләрем',
'qbspecialpages' => 'Махсус битләр',
-'moredotdotdot' => 'Дәвамы…',
-'mypage' => 'Шәхси битем',
-'mytalk' => 'Бәхәсем',
-'anontalk' => 'Бу IP-адрес өчен бәхәс бите',
-'navigation' => 'Күчү',
-'and' => '&#32;һәм',
-
-# Metadata in edit box
-'metadata_help' => 'Мета-мәгълүматлар:',
+'faq' => 'ЕБС',
+'faqpage' => 'Project:ЕБС',
+
+# Vector skin
+'vector-action-addsection' => 'Яңа тема өстәү',
+'vector-action-delete' => 'Бетерү',
+'vector-action-move' => 'Күчерү',
+'vector-action-protect' => 'Яклау',
+'vector-action-undelete' => 'Кайтару',
+'vector-action-unprotect' => 'Яклауны бетерү',
+'vector-namespace-category' => 'Төркем',
+'vector-namespace-help' => 'Ярдәм бите',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Бит',
+'vector-namespace-media' => 'Медиа-бит',
+'vector-namespace-mediawiki' => 'Хәбәр',
+'vector-namespace-project' => 'Проект бите',
+'vector-namespace-special' => 'Махсус бит',
+'vector-namespace-talk' => 'Бәхәс',
+'vector-namespace-template' => 'Үрнәк',
+'vector-namespace-user' => 'Кулланучы бите',
+'vector-view-create' => 'Төзү',
+'vector-view-edit' => 'Үзгәртү',
+'vector-view-history' => 'Тарихын карау',
+'vector-view-view' => 'Уку',
+'vector-view-viewsource' => 'Чыганакны карарга',
+'actions' => 'Хәрәкәт',
+'namespaces' => 'Исемнәр мәйданы',
+'variants' => 'Төрләр',
'errorpagetitle' => 'Хата',
'returnto' => '$1 битенә кайту.',
@@ -217,18 +363,22 @@ $messages = array(
'otherlanguages' => 'Башка телләрдә',
'redirectedfrom' => '($1 битеннән юнәлтелде)',
'redirectpagesub' => 'Башка биткә юнәлтү бите',
-'lastmodifiedat' => 'Бу битне соңгы үзгәртү: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Бу битне соңгы үзгәртү: $2, $1.',
'viewcount' => 'Бу биткә $1 {{PLURAL:$1|тапкыр}} мөрәҗәгать иттеләр.',
'protectedpage' => 'Якланган бит',
'jumpto' => 'Күчәргә:',
'jumptonavigation' => 'навигация',
'jumptosearch' => 'эзләү',
+'view-pool-error' => 'Гафу итегез, хәзерге вакытта серверлар буш түгел.
+Бу битне карарга теләүчеләр артык күп.
+Бу биткә соңарак керүегез сорала.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} турында',
'aboutpage' => 'Project:Тасвирлама',
'copyright' => 'Мәгълүмат $1 буенча таратыла.',
-'copyrightpagename' => '{{SITENAME}} проектының авторлык хокукы',
'copyrightpage' => '{{ns:project}}:Авторлык хокуклары',
'currentevents' => 'Хәзерге вакыйгалар',
'currentevents-url' => 'Project:Хәзерге вакыйгалар',
@@ -236,8 +386,6 @@ $messages = array(
'disclaimerpage' => 'Project:Җаваплылыктан баш тарту',
'edithelp' => 'Үзгәртү буенча ярдәм',
'edithelppage' => 'Help:Үзгәртү',
-'faq' => 'ЕБС',
-'faqpage' => 'Project:ЕБС',
'helppage' => 'Help:Эчтәлек',
'mainpage' => 'Баш бит',
'mainpage-description' => 'Баш бит',
@@ -318,10 +466,6 @@ $messages = array(
"$1"
«$2» функциясеннән.
База «$3: $4» хатасын кайтарды.',
-'noconnect' => 'Гафу итегез, хәзерге вакытта вики эшчәнлегендә техник авырлыклар бар, мәгълүматлар базасы серверы белән тоташып булмый.<br />
-$1',
-'nodb' => '$1 мәгълүмат базасын сайлап булмый.',
-'cachederror' => 'Аста соралган битнең кэшта сакланган копиясе күрсәтелгән; ул искергән булырга мөмкин.',
'laggedslavemode' => 'Игътибар: биттә соңгы яңартулар күрсәтелмәгән булырга мөмкин.',
'readonly' => 'Мәгълүматлар базасына язу ябылган',
'enterlockreason' => 'Ябылу сәбәбен һәм вакытын күрсәтегез.',
@@ -339,6 +483,8 @@ $1',
'readonly_lag' => 'Мәгълүматлар базасы, өстәмә сервер төп сервер белән синхронизацияләшкәнче, үзгәрүләрдән автомат рәвештә ябылды.',
'internalerror' => 'Эчке хата',
'internalerror_info' => 'Эчке хата: $1',
+'fileappenderrorread' => 'Кушу вакытында «$1» укып булмады.',
+'fileappenderror' => '"$1" һәм "$2" не кушып булмады.',
'filecopyerror' => '«$2» файлына «$1» файлының копиясен ясап булмый.',
'filerenameerror' => '«$1» файлының исемен «$2» исеменә алыштырып булмый.',
'filedeleteerror' => '«$1» файлын сыздырып булмый.',
@@ -348,7 +494,7 @@ $1',
'unexpected' => 'Көтелмәгән кыйммәт: «$1»=«$2».',
'formerror' => 'Хата: форма мәгълүматларын тапшырып булмый',
'badarticleerror' => 'Бу биттә мондый гамәл башкарып булмый.',
-'cannotdelete' => 'Бу битне яки файлны бетереп булмый. Бәлки, ул инде бетерелгән.',
+'cannotdelete' => '«$1» исемле битне яки файлны сыздырып булмый. Аны бүтән кулланучы сыздырган булырга мөмкин.',
'badtitle' => 'Яраксыз исем',
'badtitletext' => 'Битнең соралган исеме дөрес түгел, буш яисә телъара яки интервики исеме дөрес күрсәтелмәгән. Исемдә тыелган символлар кулланылган булырга мөмкин.',
'perfcached' => 'Бу мәгълүматлар кэштан алынган, аларда соңгы үзгәртүләр булмаска мөмкин.',
@@ -380,7 +526,6 @@ $2',
'virus-unknownscanner' => 'билгесез антивирус:',
# Login and logout pages
-'logouttitle' => 'Чыгарга',
'logouttext' => "'''Сез хисап язмагыздан чыктыгыз.'''
Сез {{SITENAME}} проектында аноним рәвештә кала яисә шул ук яки башка исем белән яңадан [[Special:UserLogin|керә]] аласыз.
@@ -388,7 +533,6 @@ $2',
'welcomecreation' => '== Рәхим итегез, $1! ==
Сез теркәлдегез.
Сайтның шәхси [[Special:Preferences|көйләнмәләрен]] карарга онытмагыз.',
-'loginpagetitle' => 'Системада теркәлергә',
'yourname' => 'Кулланучы исеме:',
'yourpassword' => 'Серсүз:',
'yourpasswordagain' => 'Серсүзне кабат кертү:',
@@ -399,6 +543,7 @@ $2',
'nav-login-createaccount' => 'Керү / теркәлү',
'loginprompt' => '{{SITENAME}} проектына керү өчен «cookies» рөхсәт ителгән булырга тиеш.',
'userlogin' => 'Керү / теркәлү',
+'userloginnocreate' => 'Керү',
'logout' => 'Чыгу',
'userlogout' => 'Чыгу',
'notloggedin' => 'Сез хисап язмагызга кермәгәнсез',
@@ -411,22 +556,8 @@ $2',
'badretype' => 'Кертелгән серсүзләр бер үк түгел.',
'userexists' => 'Кертелгән исем кулланыла.
Зинһар, башка исем сайлагыз.',
-'youremail' => 'Электрон почта:',
-'username' => 'Кулланучы исеме:',
-'uid' => 'Кулланучының идентификаторы:',
-'yourrealname' => 'Чын исем:',
-'yourlanguage' => 'Тел:',
-'yournick' => 'Имза өчен тахалус:',
-'badsig' => 'Имза дөрес түгел. HTML-теглар тикшерегез.',
-'badsiglength' => 'Имзагыз бигрәк озын.
-Ул $1 {{PLURAL:$1|хәрефтән}} күбрәк булырга тиеш түгел.',
-'yourgender' => 'Җенес:',
-'gender-male' => 'Ир',
-'gender-female' => 'Хатын',
-'email' => 'Электрон почта',
-'prefs-help-realname' => 'Чын исемегез (кирәкми): аны күрсәтсәгез, ул битне үзгәртүче күрсәтү өчен файдалаячак.',
'loginerror' => 'Керү хатасы',
-'prefs-help-email-required' => 'Электрон почта адресы кирәк.',
+'createaccounterror' => 'Хисап язмасын төзеп булмый: $1',
'nocookiesnew' => 'Катнашучы теркәлгән, ләкин үз хисап язмасы белән кермәгән. {{SITENAME}} катнашучыны тану өчен «cookies» куллана. Сездә «cookies» тыелган. Зинһар, башта аларны рөхсәт итегез, аннан исем һәм серсүз белән керегез.',
'nocookieslogin' => '{{SITENAME}} катнашучыны тану өчен «cookies» куллана. Сез аларны сүндергәнсез. Зинһар, аларны кабызып, яңадан керегез.',
'noname' => 'Сез кулланучы исемегезне күрсәтергә тиешсез.',
@@ -437,15 +568,18 @@ $2',
Язылышыгызны тикшерегез яки [[Special:UserLogin/signup|яңа хисап язмасы төзегез]].',
'nosuchusershort' => '<nowiki>$1</nowiki> исемле кулланучы юк. Язылышыгызны тикшерегез.',
'nouserspecified' => 'Сез теркәү исмегезне күрсәтергә тиешсез.',
+'login-userblocked' => 'Бу катнашучы тыелды. Керү тыелган.',
'wrongpassword' => 'Язылган серсүз дөрес түгел. Тагын бер тапкыр сынагыз.',
'wrongpasswordempty' => 'Серсүз юлы буш булырга тиеш түгел.',
-'passwordtooshort' => 'Язылган серсүз начар яки ифрат кыска. Сезсүз $1 хәрефтән булырга һәм кулланучы исеменнән аерылырга тиеш.',
+'passwordtooshort' => 'Сезсүз $1 {{PLURAL:$1|символдан}} торырга тиеш.',
+'password-name-match' => 'Кертелгән серсүз кулланучы исеменнән аерылырга тиеш.',
'mailmypassword' => 'Электрон почтага яңа серсүз җибәрү',
'passwordremindertitle' => '{{SITENAME}} кулланучысына вакытлы серсүз тапшыру',
'passwordremindertext' => 'Кемдер (бәлки, сездер, IP-адресы: $1) {{SITENAME}} ($4) өчен яңа серсүз соратты. $2 өчен яңа серсүз: $3. Әгәр бу сез булсагыз, системага керегез һәм серсүзне алмаштырыгыз. Яңа серсүз $5 {{PLURAL:$5|көн}} гамәлдә булачак.
Әгәр сез серсүзне алмаштыруны сорамаган булсагыз яки, оныткан очракта, исегезгә төшергән булсагыз, бу хәбәргә игътибар бирмичә, иске серсүзегезне куллануны дәвам итегез.',
'noemail' => '$1 исемле кулланучы өчен электрон почта адресы язылмаган.',
+'noemailcreate' => 'Сез дөрес e-mail адрес күрсәтергә тиеш',
'passwordsent' => 'Яңа серсүз $1 исемле катнашучының электрон почта адресына җибәрелде.
Зинһар, серсүзне алгач, системага яңадан керегез.',
@@ -465,6 +599,7 @@ $2',
'createaccount-text' => 'Кемдер, электрон почта адресыгызны күрсәтеп, {{SITENAME}} ($4) проектында «$3» серсүзе белән «$2» исемле хисап язмасы теркәде. Сез керергә һәм серсүзегезне үзгәртергә тиеш.
Хисап язмасы төзү хата булса, бу хатны онытыгыз.',
+'usernamehasherror' => 'Кулланучы исемендә "#" символы була алмый',
'login-throttled' => 'Сез артык күп тапкыр керергә тырыштыгыз.
Яңадан кабатлаганчы бераз көтүегез сорала.',
'loginlanguagelabel' => 'Тел: $1',
@@ -479,10 +614,10 @@ $2',
'retypenew' => 'Яңа серсүзне кабатлагыз:',
'resetpass_submit' => 'Серсүз куярга һәм керергә',
'resetpass_success' => 'Сезнең серсүз уңышлы үзгәртелде! Системага керү башкарыла...',
-'resetpass_bad_temporary' => 'Вакытлы серсүз дөрес түгел. Бәлки, сез инде серсүзне алмаштырган идегез, яки тагын бер тапкыр вакытлы серсүз сорарга сынагыз.',
'resetpass_forbidden' => 'Серсүз үзгәртелә алмый',
'resetpass-no-info' => 'Бу битне карау өчен сез системага үз хисап язмагыз ярдәмендә керергә тиеш.',
'resetpass-submit-loggedin' => 'Серсүзне үзгәртергә',
+'resetpass-submit-cancel' => 'Кире кагу',
'resetpass-wrong-oldpass' => 'Ялгыш серсүз.
Сез серсүзегезне үзгәрткән яисә яңа вакытлы серсүз сораткан булырга мөмкинсез.',
'resetpass-temp-password' => 'Вакытлы серсүз:',
@@ -579,9 +714,17 @@ $2',
Сез [[Special:Search/{{PAGENAME}}|бу исем кергән башка мәкаләләрне]],
<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} көндәлекләрдәге язмаларны] таба
яки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} шушындый исемле яңа бит төзи]''' аласыз.",
+'noarticletext-nopermission' => 'Хәзерге вакытта бу биттә текст юк.
+Сез [[Special:Search/{{PAGENAME}}|бу исем кергән башка мәкаләләрне]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} көндәлекләрдәге язмаларны] таба аласыз.</span>',
'userpage-userdoesnotexist' => '«$1» исемле хисап язмасы юк. Сез чынлап та бу битне ясарга яисә үзгәртергә телисезме?',
+'userpage-userdoesnotexist-view' => '"$1" исемле хисап язмасы юк.',
+'blocked-notice-logextract' => 'Бу катнашучы хәзергә кысылды.
+Түбәндә кысу көндәлекнең соңгы язу бирелгән:',
'clearyourcache' => "'''Искәрмә:''' Битне саклаганнан соң үзгәртүләр күренсен өчен браузерыгызның кэшын чистартыгыз.
Моны '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''Safari''': ''Cmd+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Konqueror''': ''F5'', '''Opera''': ''Tools→Preferences'' аша эшләп була.",
+'usercssyoucanpreview' => "'''Ярдәм:''' \"Алдан карау\" төймәсенә басып, яңа CSS-файлны тикшереп була.",
+'userjsyoucanpreview' => "'''Ярдәм:''' \"Алдан карау\" төймәсенә басып, яңа JS-файлны тикшереп була.",
'usercsspreview' => "'''Бу бары тик CSS-файлны алдан карау гына, ул әле сакланмаган!'''",
'userjspreview' => "'''Бу бары тик JavaScript файлын алдан карау гына, ул әле сакланмаган!'''",
'userinvalidcssjstitle' => "'''Игътибар:''' \"\$1\" бизәү темасы табылмады. Кулланучының .css һәм .js битләре исемнәре бары тик кечкенә (юл) хәрефләрдән генә торырга тиеш икәнен онытмагыз. Мисалга: {{ns:user}}:Foo/monobook.css, ә {{ns:user}}:Foo/Monobook.css түгел!",
@@ -628,13 +771,14 @@ $2',
Текст югалмасын өчен аны компьютерыгызга саклап тора аласыз.'''
Администратор күрсәткән сәбәп: $1",
-'protectedpagewarning' => "'''Кисәтү: сез бу битне үзгәртә алмыйсыз, бу хокукка администраторлар гына ия.'''",
+'protectedpagewarning' => "'''Кисәтү: сез бу битне үзгәртә алмыйсыз, бу хокукка администраторлар гына ия.'''
+Түбәндә көндәлекнең соңгы язуы бирелгән:",
'semiprotectedpagewarning' => "'''Кисәтү:''' бу бит якланган. Аны теркәлгән кулланучылар гына үзгәртә ала.",
'cascadeprotectedwarning' => "'''Кисәтү:''' Бу битне администраторлар гына үзгәртә ала. Сәбәбе: ул {{PLURAL:$1|каскадлы яклау исемлегенә кертелгән}}:",
'titleprotectedwarning' => "'''Кисәтү: Мондый исемле бит якланган, аны үзгәртү өчен [[Special:ListGroupRights|тиешле хокукка]] ия булу зарур.'''",
-'templatesused' => 'Бу биттә кулланган өлгеләр:',
-'templatesusedpreview' => 'Бу алдан карау биттә кулланган өлгеләр:',
-'templatesusedsection' => 'Бу бүлектә кулланган өлгеләр:',
+'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|шаблон|шаблоннар}}:',
+'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
+'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
'template-protected' => '(якланган)',
'template-semiprotected' => '(өлешчә якланган)',
'hiddencategories' => 'Бу бит $1 {{PLURAL:$1|яшерен төркемгә}} керә:',
@@ -642,10 +786,18 @@ $2',
'nocreatetext' => '{{SITENAME}}: сайтта яңа битләр төзү чикләнгән.
Сез артка кайтып, төзелгән битне үзгәртә аласыз. [[Special:UserLogin|Керергә яисә теркәлергә]] тәгъдим ителә.',
'nocreate-loggedin' => 'Сезгә яңа битләр төзү хокукы бирелмәгән.',
+'sectioneditnotsupported-title' => 'Бүлекләрне төзәтү рөхсәт ителмәгән.',
+'sectioneditnotsupported-text' => 'Бу сәхифәдә бүлекләрне төзәтү рөхсәт ителмәгән.',
'permissionserrors' => 'Керү хокукы хаталары',
'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|Сәбәбе|Сәбәпләре}}:',
-'deletelog-fulllog' => 'Тулы көндәлекне карау',
+'recreate-moveddeleted-warn' => "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''
+
+Сезгә чыннан да бу битне яңадан ясау кирәкме?
+Түбәндә битнең бетерү һәм күчерү көндәлеге китерелә:",
+'moveddeleted-notice' => 'Бу бит бетерелгән иде.
+Түбәндә бетерелү һәм күчерелү көндәлекне китерелә.',
+'log-fulllog' => 'Көндәлекне тулысынча карау',
'edit-hook-aborted' => 'Үзгәртү махсус процедура тарафыннан кире кагыла.
Сәбәпләре китерелми.',
'edit-gone-missing' => 'Битне яңартып булмый.
@@ -686,8 +838,9 @@ $3 күрсәткән сәбәп: ''$2''",
'viewpagelogs' => 'Бу битнең көндәлекләрен карау',
'nohistory' => 'Бу битнең үзгәртүләр тарихы юк.',
'currentrev' => 'Хәзерге версия',
-'revisionasof' => 'Юрама $1',
-'revision-info' => 'Юрама: $1; $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Хәзерге версия, $1',
+'revisionasof' => '$1 версиясе',
+'revision-info' => 'Версия: $1; $2',
'previousrevision' => '← Алдагы юрама',
'nextrevision' => 'Чираттагы юрама →',
'currentrevisionlink' => 'Хәзерге версия',
@@ -698,37 +851,59 @@ $3 күрсәткән сәбәп: ''$2''",
'page_last' => 'соңгы',
'histlegend' => "Аңлатмалар: '''({{int:cur}})''' = хәзерге версиядән аерымлыклар, '''({{int:last}})''' = баягы версиядән аерымлыклар, '''{{int:minoreditletter}}''' = кече үзгәртүләр.",
'history-fieldset-title' => 'Тарихын карау',
-'deletedrev' => '[бетерелгән]',
+'history-show-deleted' => 'Бары тик бетерү',
'histfirst' => 'Элеккеге',
'histlast' => 'Соңгы',
'historysize' => '($1 {{PLURAL:$1|байт}})',
'historyempty' => '(буш)',
# Revision feed
-'history-feed-title' => 'Үзгәртүләр тарихы',
-'history-feed-description' => 'Бу битнең викидагы үзгәртүләр тарихы',
-'history-feed-empty' => 'Соратылган бит юк.
+'history-feed-title' => 'Үзгәртүләр тарихы',
+'history-feed-description' => 'Бу битнең викидагы үзгәртүләр тарихы',
+'history-feed-item-nocomment' => '$1, $2',
+'history-feed-empty' => 'Соратылган бит юк.
Ул сыздырылган яисә бүтән урынга күчерелгән (башка исем алган) булырга мөмкин.
[[Special:Search|Эзләтеп]] карагыз.',
# Revision deletion
-'rev-deleted-comment' => '(фикер сыздырылган)',
-'rev-deleted-user' => '(автор исеме сыздырылган)',
-'rev-deleted-event' => '(язма бетерелгән)',
-'rev-delundel' => 'күрсәтү/яшерү',
-'revisiondelete' => 'Битнең версиясен сыздырырга / кайтарырга',
-'revdelete-nooldid-title' => 'Ахыргы версия билгеләнмәгән',
-'revdelete-nooldid-text' => 'Бу функцияне башкару өчен сез ахыргы версияне (яки версияләрне) билгеләмәдегез.',
-'revdelete-nologtype-title' => 'Көндәлек тибы билгеләнмәгән',
-'revdelete-nologtype-text' => 'Гамәл башкарылырга тиешле ңурнал тибын билгеләргә оныттыгыз.',
-'revdelete-nologid-title' => 'Көндәлектәге язма хаталы',
-'revdelete-legend' => 'Чикләүләр урнаштыр:',
-'revdelete-hide-text' => 'Битнең бу версиясе текстын яшер',
-'revdel-restore' => 'күренүчәнлекне үзгәртергә',
-'pagehist' => 'битнең тарихы',
-'deletedhist' => 'Бетерүләр тарихы',
-'revdelete-content' => 'контент',
-'revdelete-uname' => 'кулланучы исеме',
+'rev-deleted-comment' => '(фикер сыздырылган)',
+'rev-deleted-user' => '(автор исеме сыздырылган)',
+'rev-deleted-event' => '(язма бетерелгән)',
+'rev-deleted-text-permission' => "Битнең бу версиясе '''сыздырылган'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Сыздырулар журналында] аңлатмалар калдырылган булырга мөмкин.",
+'rev-deleted-text-unhide' => "Битнең бу версиясе '''сыздырылган'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Сыздырулар журналында] аңлатмалар калдырылган булырга мөмкин.
+Сез администратор булу сәбәпле, [$1 бирелгән версияне карый аласыз].",
+'rev-suppressed-text-unhide' => "Битнең бу версиясе '''яшерелгән'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр журналында] аңлатмалар бирелгән булырга мөмкин.
+Сез администратор булу сәбәпле, [$1 бирелгән версияне карый аласыз].",
+'rev-deleted-text-view' => "Битнең бу версиясе '''сыздырылган'''.
+Сез администратор булу сәбәпле, аны карый аласыз. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Сыздырулар журналында] аңлатмалар бирелгән булырга мөмкин.",
+'rev-suppressed-text-view' => "Битнең бу версиясе '''яшерелгән'''.
+Сез администратор булу сәбәпле, аны карый аласыз. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр журналында] аңлатмалар бирелгән булырга мөмкин.",
+'rev-deleted-no-diff' => "Сез версияләр арасындагы аермаларны карый алмыйсыз. Сәбәбе: кайсыдыр версия '''сыздырылган'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Сыздырулар журналында] тулырак мәгълүмат табып була.",
+'rev-deleted-unhide-diff' => "Битнең кайсыдыр версиясе '''сыздырылган'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Сыздырулар журналында] тулырак мәгълүмат табып була.
+Сез администратор булу сәбәпле, [$1 бирелгән версияне карый аласыз]",
+'rev-delundel' => 'күрсәтү/яшерү',
+'rev-showdeleted' => 'күрсәтү',
+'revisiondelete' => 'Битнең версиясен сыздырырга / кайтарырга',
+'revdelete-nooldid-title' => 'Ахыргы версия билгеләнмәгән',
+'revdelete-nooldid-text' => 'Бу функцияне башкару өчен сез ахыргы версияне (яки версияләрне) билгеләмәдегез.',
+'revdelete-nologtype-title' => 'Көндәлек тибы билгеләнмәгән',
+'revdelete-nologtype-text' => 'Гамәл башкарылырга тиешле ңурнал тибын билгеләргә оныттыгыз.',
+'revdelete-nologid-title' => 'Көндәлектәге язма хаталы',
+'revdelete-show-file-submit' => 'Әйе',
+'revdelete-legend' => 'Чикләүләр урнаштыр:',
+'revdelete-hide-text' => 'Битнең бу версиясе текстын яшер',
+'revdelete-radio-set' => 'Әйе',
+'revdelete-radio-unset' => 'Юк',
+'revdel-restore' => 'күренүчәнлекне үзгәртергә',
+'pagehist' => 'битнең тарихы',
+'deletedhist' => 'Бетерүләр тарихы',
+'revdelete-content' => 'контент',
+'revdelete-uname' => 'кулланучы исеме',
# History merging
'mergehistory-from' => 'Чыганак:',
@@ -744,10 +919,6 @@ $3 күрсәткән сәбәп: ''$2''",
'lineno' => '$1 юл:',
'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
'editundo' => 'үткәрмәү',
-'diff-span' => "'''span'''",
-'diff-a' => "'''сылтама'''",
-'diff-i' => "'''авышлы'''",
-'diff-b' => "'''калын язылыш'''",
# Search results
'searchresults' => 'Эзләү нәтиҗәләре',
@@ -755,15 +926,13 @@ $3 күрсәткән сәбәп: ''$2''",
'searchresulttext' => 'Проектның сәхифәләрендә эзләү турында тулырак мәгълумат алыр өчен [[{{MediaWiki:Helppage}}|өстәмә мәгълумат]] битенә керегез.',
'searchsubtitle' => '«[[:$1]]» өчен эзләү ([[Special:Prefixindex/$1|«$1» дан башлый барлык битләр]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1» га сылтый барлык битләр]])',
'searchsubtitleinvalid' => '"$1" таләбе буенча',
-'noexactmatch' => "'''«$1» атлы битне әле юк.'''
-Аны [[:$1|төзергә]] мөмкин.",
-'noexactmatch-nocreate' => "'''\"\$1\" исемле бит юк.'''",
'notitlematches' => 'Битнең исемнәрендә туры килүләр юк',
'notextmatches' => 'Тиңдәш текстлы битләр юк',
-'prevn' => 'алдагы $1',
-'nextn' => 'чираттагы $1',
-'viewprevnext' => 'Күрсәтелүе: ($1) ($2) ($3)',
+'prevn' => 'алдагы {{PLURAL:$1|$1}}',
+'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Эчтәлек',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Һәркайда',
'searchprofile-advanced' => 'Киңәйтелгән',
'searchprofile-images-tooltip' => 'Файллар эзләү',
@@ -778,7 +947,6 @@ $3 күрсәткән сәбәп: ''$2''",
'search-mwsuggest-disabled' => 'киңәшсез',
'search-relatedarticle' => 'Бәйләнгән',
'searchall' => 'барлык',
-'showingresultstotal' => "Астарак {{PLURAL:$4|'''$3''' данәдән '''$1''' нәтиҗәсе күрсәтелгән|'''$3''' данәдән '''$1 — $2''' нәтиҗәләре күрсәтелгән}}",
'nonefound' => "'''Искәрмә'''. Килешү буенча эзләү кайбер исем аланнарында гына эшли.
Барлык аланнарда (фикер алышу битләре, үрнәкләр, һ.б.) эзләү өчен ''all'' сүзен сайлагыз, яисә кирәкле исем аланын сайлагыз.",
'powersearch' => 'Өстәмә эзләү',
@@ -786,49 +954,71 @@ $3 күрсәткән сәбәп: ''$2''",
'powersearch-ns' => 'исемнәрендә эзләү',
'powersearch-redir' => 'Юнәлтүләр күрсәтелсен',
'powersearch-field' => 'Эзләү',
+'powersearch-toggleall' => 'Барысы',
+
+# Quickbar
+'qbsettings' => 'Күчешләр аслыгы',
+'qbsettings-none' => 'Күрсәтмәскә',
# Preferences page
-'preferences' => 'Көйләнмәләр',
-'mypreferences' => 'Көйләнмәләрем',
-'prefs-edits' => 'Үзгәртүләр исәбе:',
-'prefsnologin' => 'Кермәгәнсез',
-'prefsnologintext' => 'Кулланучы көйләнмәләрене үзгәртү өчен, сез [[Special:UserLogin|керергә]] тиешсез.',
-'qbsettings' => 'Күчешләр аслыгы',
-'qbsettings-none' => 'Күрсәтмәскә',
-'changepassword' => 'Серсүзне алыштырырга',
-'skin' => 'Күренеш',
-'skin-preview' => 'Алдан карау',
-'math' => 'Формулалар',
-'dateformat' => 'Датаның форматы',
-'datetime' => 'Дата һәм вакыт',
-'math_unknown_error' => 'беленмәгән хата',
-'prefs-personal' => 'Шәхси мәгълүматлар',
-'prefs-rc' => 'Соңгы үзгәртүләр',
-'prefs-watchlist' => 'Күзәтү исемлеге',
-'prefs-watchlist-days' => 'Күзәтү исемлегендә ничә көн буена үзгәртүләрне күрсәтергә:',
-'prefs-watchlist-edits' => 'Киңәйтелгән күзәтү исемлегендә үзгәртүләрнең иң югары исәбе:',
-'prefs-misc' => 'Башка көйләнмәләр',
-'prefs-resetpass' => 'Серсүзне үзгәртү',
-'saveprefs' => 'Саклау',
-'resetprefs' => 'Сакланмаган үзгәртүләрне бетерү',
-'textboxsize' => 'Үзгәртү',
-'rows' => 'Юллар:',
-'columns' => 'Баганалар:',
-'searchresultshead' => 'Эзләү',
-'savedprefs' => 'Көйләнмәләрегез сакланды.',
-'servertime' => 'Серверның вакыты:',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азия',
-'timezoneregion-atlantic' => 'Атлантик океан',
-'timezoneregion-australia' => 'Австралия',
-'timezoneregion-europe' => 'Аурупа',
-'timezoneregion-indian' => 'Һиндстан океаны',
-'timezoneregion-pacific' => 'Тын океан',
-'default' => 'килешү буенча',
-'files' => 'Файллар',
+'preferences' => 'Көйләнмәләр',
+'mypreferences' => 'Көйләнмәләрем',
+'prefs-edits' => 'Үзгәртүләр исәбе:',
+'prefsnologin' => 'Кермәгәнсез',
+'prefsnologintext' => 'Кулланучы көйләнмәләрене үзгәртү өчен, сез <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} керергә]</span> тиешсез.',
+'changepassword' => 'Серсүзне алыштырырга',
+'prefs-skin' => 'Күренеш',
+'skin-preview' => 'Алдан карау',
+'prefs-math' => 'Формулалар',
+'prefs-datetime' => 'Дата һәм вакыт',
+'prefs-personal' => 'Шәхси мәгълүматлар',
+'prefs-rc' => 'Соңгы үзгәртүләр',
+'prefs-watchlist' => 'Күзәтү исемлеге',
+'prefs-watchlist-days' => 'Күзәтү исемлегендә ничә көн буена үзгәртүләрне күрсәтергә:',
+'prefs-watchlist-edits' => 'Киңәйтелгән күзәтү исемлегендә үзгәртүләрнең иң югары исәбе:',
+'prefs-misc' => 'Башка көйләнмәләр',
+'prefs-resetpass' => 'Серсүзне үзгәртү',
+'saveprefs' => 'Саклау',
+'resetprefs' => 'Сакланмаган үзгәртүләрне бетерү',
+'prefs-editing' => 'Үзгәртү',
+'rows' => 'Юллар:',
+'columns' => 'Баганалар:',
+'searchresultshead' => 'Эзләү',
+'savedprefs' => 'Көйләнмәләрегез сакланды.',
+'servertime' => 'Серверның вакыты:',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азия',
+'timezoneregion-atlantic' => 'Атлантик океан',
+'timezoneregion-australia' => 'Австралия',
+'timezoneregion-europe' => 'Аурупа',
+'timezoneregion-indian' => 'Һиндстан океаны',
+'timezoneregion-pacific' => 'Тын океан',
+'default' => 'килешү буенча',
+'prefs-files' => 'Файллар',
+'youremail' => 'Электрон почта:',
+'username' => 'Кулланучы исеме:',
+'uid' => 'Кулланучының идентификаторы:',
+'yourrealname' => 'Чын исем:',
+'yourlanguage' => 'Тел:',
+'yournick' => 'Яңа имзагыз:',
+'badsig' => 'Имза дөрес түгел. HTML-теглар тикшерегез.',
+'badsiglength' => 'Имзагыз бигрәк озын.
+Ул $1 {{PLURAL:$1|хәрефтән}} күбрәк булырга тиеш түгел.',
+'yourgender' => 'Җенес:',
+'gender-male' => 'Ир',
+'gender-female' => 'Хатын',
+'email' => 'Электрон почта',
+'prefs-help-realname' => 'Чын исемегез (кирәкми): аны күрсәтсәгез, ул битне үзгәртүче күрсәтү өчен файдалаячак.',
+'prefs-help-email-required' => 'Электрон почта адресы кирәк.',
+'prefs-signature' => 'Имза',
+'prefs-advancedediting' => 'Киңәйтелгән көйләүләр',
+'prefs-advancedrc' => 'Киңәйтелгән көйләүләр',
+'prefs-advancedrendering' => 'Киңәйтелгән көйләүләр',
+'prefs-advancedsearchoptions' => 'Киңәйтелгән көйләүләр',
+'prefs-advancedwatchlist' => 'Киңәйтелгән көйләүләр',
# User rights
'userrights-groupsmember' => 'Әгъза:',
@@ -876,8 +1066,12 @@ $3 күрсәткән сәбәп: ''$2''",
'recentchanges-legend' => 'Соңгы үзгәртүләр көйләүләре',
'recentchangestext' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
'recentchanges-feed-description' => 'Бу агымда соңгы үзгәртүләрне күзәтү.',
+'recentchanges-legend-newpage' => '$1 — яңа бит',
+'recentchanges-label-newpage' => 'Бу үзгәртү белән яңа бит төзелде',
+'recentchanges-legend-minor' => '$1 — кече үзгәртү',
+'recentchanges-legend-bot' => '$1 — ботның үзгәртүе',
'rcnote' => 'Аста $4 $5 вакытынна соңгы {{PLURAL:$2|1|$2}} көн эчендә булган соңгы {{PLURAL:$1|1|$1}} үзгәртмә күрсәтелә:',
-'rcnotefrom' => "Астарак '''$2''' башлап ('''$1''' кадәр) төзәтмәләр күрсәтелгән.",
+'rcnotefrom' => "Астарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрсәтелгән.",
'rclistfrom' => '$1 башлап яңа үзгәртүләрне күрсәт',
'rcshowhideminor' => 'кече үзгәртүләрне $1',
'rcshowhidebots' => 'ботларны $1',
@@ -901,6 +1095,8 @@ $3 күрсәткән сәбәп: ''$2''",
# Recent changes linked
'recentchangeslinked' => 'Бәйләнешле үзгәртүләр',
+'recentchangeslinked-feed' => 'Бәйләнешле үзгәртүләр',
+'recentchangeslinked-toolbox' => 'Бәйләнешле үзгәртүәләр',
'recentchangeslinked-title' => '"$1" битенә бәйләнешле үзгәртүләр',
'recentchangeslinked-noresult' => 'Күрсәтелгән вакытта сылташкан битләрнең үзгәртелмәләре юк иде.',
'recentchangeslinked-summary' => "Бу күрсәтелгән бит белән сылталган (йә күрсәтелгән төркемгә керткән) битләрнең үзгәртелмәләре исемлеге.
@@ -923,6 +1119,7 @@ $3 күрсәткән сәбәп: ''$2''",
'listfiles_description' => 'Тасвир',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлның тарихы',
'filehist-help' => 'Датага/сәгатькә басыгыз, шул вакытта бит нинди булды дип карау өчен.',
'filehist-deleteone' => 'бетерү',
@@ -930,6 +1127,7 @@ $3 күрсәткән сәбәп: ''$2''",
'filehist-current' => 'хәзерге',
'filehist-datetime' => 'Дата/вакыт',
'filehist-thumb' => 'Эскиз',
+'filehist-thumbtext' => '$1 көнне булган версиянең эскизы',
'filehist-user' => 'Кулланучы',
'filehist-dimensions' => 'Зурлык',
'filehist-filesize' => 'Файлның зурлыгы',
@@ -937,9 +1135,7 @@ $3 күрсәткән сәбәп: ''$2''",
'imagelinks' => 'Файлга сылтамалар',
'linkstoimage' => 'Бу файлга киләчәк {{PLURAL:$1|бит|$1 бит}} сылтый:',
'nolinkstoimage' => 'Бу файлга сылтаган битләр юк.',
-'sharedupload' => "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'Бу атлы файлны барлыкта юк, $1 сез булдырасыз.',
-'noimage-linktext' => 'аны йөкләргә',
+'sharedupload' => "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
'uploadnewversion-linktext' => 'Бу файлның яңа версиясен йөкләү',
# MIME search
@@ -1041,6 +1237,9 @@ $3 күрсәткән сәбәп: ''$2''",
'listusers-submit' => 'Күрсәтергә',
'listusers-noresult' => 'Кулланучыларны табылмады.',
+# Special:ActiveUsers
+'activeusers-noresult' => 'Катнашучылар табылмады.',
+
# Special:Log/newusers
'newuserlogpage' => 'Кулланучыларны теркәү көндәлеге',
'newuserlog-create-entry' => 'Яңа кулланучы',
@@ -1088,6 +1287,28 @@ $3 күрсәткән сәбәп: ''$2''",
'created' => 'төзергән',
'enotif_subject' => '{{SITENAME}} проектының $PAGETITLE бите $PAGEEDITOR тарафыннан $CHANGEDORCREATED',
'enotif_lastvisited' => 'Соңгы керүегездән соң булган барлык үзгәртүләрне күрер өчен, бу сылтама аша узыгыз: $1',
+'enotif_body' => '$WATCHINGUSERNAME,
+
+«{{SITENAME}}» проектының «$PAGETITLE» бите $PAGEEDITOR тарафыннан $PAGEEDITDATE көнне $CHANGEDORCREATED. Битне карар өчен $PAGETITLE_URL буенча узыгыз.
+
+$NEWPAGE
+
+Үзгәртүнең кыска эчтәлеге: $PAGESUMMARY $PAGEMINOREDIT
+
+Үзгәртүчегә язу:
+эл. почта $PAGEEDITOR_EMAIL
+вики $PAGEEDITOR_WIKI
+
+Бу биткә кермәсәгез, аның башка үзгәртүләре турында хат җибәрелмәячәк. Шулай ук сез күзәтү исемлегегездә булган битләр өчен хәбәр бирү флагын алып куя аласыз.
+
+ {{SITENAME}} хәбәр бирү системасы
+
+--
+Күзәтү исемлеге көйләүләрен үзгәртү:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Элемтә һәм ярдәм:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Битне бетерү',
@@ -1122,7 +1343,6 @@ $3 күрсәткән сәбәп: ''$2''",
'protectexpiry' => 'Бетә:',
'protect_expiry_invalid' => 'Яклау бетү вакыты дөрес түгел.',
'protect_expiry_old' => 'Яклау бетү көне узган көнгә куелган.',
-'protect-unchain' => 'Битнең күчерү рөхсәте ачарга',
'protect-text' => "Биредә сез '''<nowiki>$1</nowiki>''' бите өчен яклау дәрәҗәсене карый һәм үзгәрә аласыз.",
'protect-locked-access' => "Хисап язмагызга битләрнең яклау дәрәҗәсен үзгәртү өчен хак җитми. '''$1''' битенең хәзерге көйләүләре:",
'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
@@ -1134,7 +1354,7 @@ $3 күрсәткән сәбәп: ''$2''",
'protect-expiring' => '$1 үтә (UTC)',
'protect-cascade' => 'Бу биткә кергән битләрне якларга (каскадлы яклау)',
'protect-cantedit' => 'Сез бу битнең яклау дәрәҗәсене үзгәрә алмыйсыз, чөнки сездә аны үзгәртергә рөхсәтегез юк.',
-'protect-expiry-options' => '1 сәгать:1 hour,1 көн:1 day,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 ел:1 year,вакытсыз:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 сәгать:1 hour,1 көн:1 day,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 ел:1 year,вакытсыз:infinite',
'restriction-type' => 'Рөхсәт:',
'restriction-level' => 'Мөмкинлек дәрәҗәсе:',
'minimum-size' => 'Иң кечкенә зурлык',
@@ -1159,6 +1379,7 @@ $3 күрсәткән сәбәп: ''$2''",
Бетерелүдән соң шундый ук исемле бит төзелгән булса, торгызылган үзгәртүләр яңа үзгәртүләр алдына куелачак.',
'undeletebtn' => 'Торгызырга',
'undeletelink' => 'карарга/торгызырга',
+'undeleteviewlink' => 'карарга',
'undeletereset' => 'Ташлатырга',
'undeletecomment' => 'Искәрмә:',
'undeletedarticle' => '«[[$1]]» торгызылды',
@@ -1185,6 +1406,7 @@ $1',
'sp-contributions-newbies' => 'Яңа хисап язмаларыннан ясалган кертемне генә карау',
'sp-contributions-newbies-sub' => 'Яңа хисап язмалары өчен',
'sp-contributions-blocklog' => 'Кысу көндәлеге',
+'sp-contributions-talk' => 'бәхәс',
'sp-contributions-search' => 'Кертемне эзләү',
'sp-contributions-username' => 'Кулланучының IP адресы яки исеме:',
'sp-contributions-submit' => 'Эзләргә',
@@ -1214,7 +1436,7 @@ $1',
'ipbreason' => 'Сәбәп:',
'ipbreasonotherlist' => 'Башка сәбәп',
'ipbother' => 'Башка вакыт:',
-'ipboptions' => '2 сәгать:2 hours,1 көн:1 day,3 көн:3 days,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3ай:3 months,6 ай:6 months,1 ел:1 year,чикләнмәгән:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 сәгать:2 hours,1 көн:1 day,3 көн:3 days,1 атна:1 week,2 атна:2 weeks,1 ай:1 month,3ай:3 months,6 ай:6 months,1 ел:1 year,чикләнмәгән:infinite',
'ipblocklist' => 'Кысылган IP-адреслар һәм кулланучы исемләр',
'ipblocklist-username' => 'кулланучы исеме яки IP-адрес:',
'blocklink' => 'кысарга',
@@ -1257,7 +1479,7 @@ $1',
'move-watch' => 'Бу битне күзәтергә',
'movepagebtn' => 'Битне күчерү',
'pagemovedsub' => 'Бит күчерелде',
-'movepage-moved' => "'''«$1» бите «$2» битенә күчерелде'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» бите «$2» битенә күчерелде'''",
'movepage-moved-redirect' => 'Юнәлтү ясалды.',
'movepage-moved-noredirect' => 'Юнәлтүне ясау тыелды',
'articleexists' => 'Мондый исемле бит бар инде, яисә мондый исем рөхсәт ителми.
@@ -1312,6 +1534,7 @@ $1',
'tooltip-search-fulltext' => 'Бу текст белән битләрне табарга',
'tooltip-p-logo' => 'Баш бит',
'tooltip-n-mainpage' => 'Баш битне кереп чыгу',
+'tooltip-n-mainpage-description' => 'Баш биткә күчү',
'tooltip-n-portal' => 'Проект турында, сез нәрсә итә аласыз һәм нәрсә кайда була дип турында.',
'tooltip-n-currentevents' => 'Агымдагы вакыйгалар турында мәгълүматны табарга',
'tooltip-n-recentchanges' => 'Соңгы үзгәртүләр исемлеге',
@@ -1344,9 +1567,13 @@ $1',
'tooltip-rollback' => "\"Кире кайтару\" соңгы кулланучының бу биттә ясаган '''барлык''' үзгәртүләрен бетерә.",
'tooltip-undo' => 'Бу үзгәртүне алдан карап үткәрмәү. Шулай ук үткәрмәүнең сәбәбен язып була.',
+# Math errors
+'math_unknown_error' => 'беленмәгән хата',
+
# Patrolling
-'markaspatrolledtext' => 'Бу мәкаләне тикшерелгән дип тамгаларга',
-'markedaspatrolled' => 'Тикшерелгән дип тамгаланды',
+'markaspatrolledtext' => 'Бу мәкаләне тикшерелгән дип тамгаларга',
+'markedaspatrolled' => 'Тикшерелгән дип тамгаланды',
+'markedaspatrolledtext' => 'Сайланган версия тикшерелгән дип тамгаланды.',
# Browsing diffs
'previousdiff' => '← Алдагы үзгәртү',
@@ -1382,7 +1609,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-brightnessvalue' => 'Яктылык',
@@ -1413,7 +1640,7 @@ $1',
'watchlisttools-raw' => 'Текст сыман үзгәртү',
# Special:Version
-'version' => 'Юрама', # Not used as normal message but as header for the special page itself
+'version' => 'Юрама',
'version-other' => 'Башкалар',
'version-software-version' => 'Версия',
@@ -1433,4 +1660,9 @@ $1',
# Database error messages
'dberr-problems' => 'Гафу итегез! Сайтта техник кыенлыклар чыкты.',
+# HTML forms
+'htmlform-submit' => 'Җибәрү',
+'htmlform-reset' => 'Үзгәртүләрне кире кайтару',
+'htmlform-selectorother-other' => 'Башка',
+
);
diff --git a/languages/messages/MessagesTt_latn.php b/languages/messages/MessagesTt_latn.php
index c5645b3b..c1445241 100644
--- a/languages/messages/MessagesTt_latn.php
+++ b/languages/messages/MessagesTt_latn.php
@@ -15,24 +15,29 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Maxsus',
- NS_MAIN => '',
- NS_TALK => 'Bäxäs',
- NS_USER => 'Äğzä',
- NS_USER_TALK => "Äğzä_bäxäse",
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_bäxäse',
- NS_FILE => "Räsem",
- NS_FILE_TALK => "Räsem_bäxäse",
- NS_MEDIAWIKI => "MediaWiki",
- NS_MEDIAWIKI_TALK => "MediaWiki_bäxäse",
- NS_TEMPLATE => "Ürnäk",
- NS_TEMPLATE_TALK => "Ürnäk_bäxäse",
- NS_HELP => "Yärdäm",
- NS_HELP_TALK => "Yärdäm_bäxäse",
- NS_CATEGORY => "Törkem",
- NS_CATEGORY_TALK => "Törkem_bäxäse",
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Maxsus',
+ NS_TALK => 'Bäxäs',
+ NS_USER => 'Qullanuçı',
+ NS_USER_TALK => 'Qullanuçı_bäxäse',
+ NS_PROJECT_TALK => '$1_bäxäse',
+ NS_FILE => 'Fayl',
+ NS_FILE_TALK => 'Fayl_bäxäse',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_bäxäse',
+ NS_TEMPLATE => 'Ürnäk',
+ NS_TEMPLATE_TALK => 'Ürnäk_bäxäse',
+ NS_HELP => 'Yärdäm',
+ NS_HELP_TALK => 'Yärdäm_bäxäse',
+ NS_CATEGORY => 'Törkem',
+ NS_CATEGORY_TALK => 'Törkem_bäxäse',
+);
+
+$namespaceAliases = array(
+ 'Äğzä' => NS_USER,
+ 'Äğzä_bäxäse' => NS_USER_TALK,
+ 'Räsem' => NS_FILE,
+ 'Räsem_bäxäse' => NS_FILE_TALK,
);
$datePreferences = false;
@@ -44,8 +49,8 @@ $dateFormats = array(
'mdy date' => 'M j, Y',
'mdy both' => 'H:i, M j, Y',
'dmy time' => 'H:i',
- 'dmy date' => 'j. M Y',
- 'dmy both' => 'j. M Y, H:i',
+ 'dmy date' => 'j M Y',
+ 'dmy both' => 'j M Y, H:i',
'ymd time' => 'H:i',
'ymd date' => 'Y M j',
'ymd both' => 'H:i, Y M j',
@@ -55,31 +60,30 @@ $dateFormats = array(
);
$magicWords = array(
-# ID CASE SYNONYMS
- 'redirect' => array( 0, '#yünältü', '#REDIRECT'),
- 'notoc' => array( 0, '__ETYUQ__', '__NOTOC__'),
- 'forcetoc' => array( 0, '__ETTIQ__', '__FORCETOC__'),
- 'toc' => array( 0, '__ET__', '__TOC__'),
- 'noeditsection' => array( 0, '__BÜLEMTÖZÄTÜYUQ__', '__NOEDITSECTION__'),
- 'currentmonth' => array( 1, 'AĞIMDAĞI_AY', 'CURRENTMONTH'),
- 'currentmonthname' => array( 1, 'AĞIMDAĞI_AY_İSEME', 'CURRENTMONTHNAME'),
- 'currentday' => array( 1, 'AĞIMDAĞI_KÖN', 'CURRENTDAY'),
- 'currentdayname' => array( 1, 'AĞIMDAĞI_KÖN_İSEME', 'CURRENTDAYNAME'),
- 'currentyear' => array( 1, 'AĞIMDAĞI_YIL', 'CURRENTYEAR'),
- 'currenttime' => array( 1, 'AĞIMDAĞI_WAQIT', 'CURRENTTIME'),
- 'numberofarticles' => array( 1, 'MÄQÄLÄ_SANI', 'NUMBEROFARTICLES'),
- 'currentmonthnamegen' => array( 1, 'AĞIMDAĞI_AY_İSEME_GEN', 'CURRENTMONTHNAMEGEN'),
- 'pagename' => array( 1, 'BİTİSEME', 'PAGENAME'),
- 'namespace' => array( 1, 'İSEMARA', 'NAMESPACE'),
- 'subst' => array( 0, 'TÖPÇEK:', 'SUBST:'),
- 'img_right' => array( 1, 'uñda', 'right'),
- 'img_left' => array( 1, 'sulda', 'left'),
- 'img_none' => array( 1, 'yuq', 'none'),
- 'int' => array( 0, 'EÇKE:', 'INT:'),
- 'sitename' => array( 1, 'SÄXİFÄİSEME', 'SITENAME'),
- 'ns' => array( 0, 'İA:', 'NS:'),
- 'localurl' => array( 0, 'URINLIURL:', 'LOCALURL:'),
- 'localurle' => array( 0, 'URINLIURLE:', 'LOCALURLE:'),
+ 'redirect' => array( '0', '#yünältü', '#REDIRECT' ),
+ 'notoc' => array( '0', '__ETYUQ__', '__NOTOC__' ),
+ 'forcetoc' => array( '0', '__ETTIQ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ET__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__BÜLEMTÖZÄTÜYUQ__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'AĞIMDAĞI_AY', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonthname' => array( '1', 'AĞIMDAĞI_AY_İSEME', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'AĞIMDAĞI_AY_İSEME_GEN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentday' => array( '1', 'AĞIMDAĞI_KÖN', 'CURRENTDAY' ),
+ 'currentdayname' => array( '1', 'AĞIMDAĞI_KÖN_İSEME', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'AĞIMDAĞI_YIL', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'AĞIMDAĞI_WAQIT', 'CURRENTTIME' ),
+ 'numberofarticles' => array( '1', 'MÄQÄLÄ_SANI', 'NUMBEROFARTICLES' ),
+ 'pagename' => array( '1', 'BİTİSEME', 'PAGENAME' ),
+ 'namespace' => array( '1', 'İSEMARA', 'NAMESPACE' ),
+ 'subst' => array( '0', 'TÖPÇEK:', 'SUBST:' ),
+ 'img_right' => array( '1', 'uñda', 'right' ),
+ 'img_left' => array( '1', 'sulda', 'left' ),
+ 'img_none' => array( '1', 'yuq', 'none' ),
+ 'int' => array( '0', 'EÇKE:', 'INT:' ),
+ 'sitename' => array( '1', 'SÄXİFÄİSEME', 'SITENAME' ),
+ 'ns' => array( '0', 'İA:', 'NS:' ),
+ 'localurl' => array( '0', 'URINLIURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'URINLIURLE:', 'LOCALURLE:' ),
);
$fallback8bitEncoding = "windows-1254";
@@ -128,10 +132,18 @@ $messages = array(
'linkprefix' => '/^(.*?)([a-zäçğıñöşüA-ZÄÇĞİÑÖŞÜ«„]+)$/sDu',
-'about' => 'Turında',
-'article' => 'Eçtälek bite',
-'newwindow' => '(yaña täräzädä açılır)',
-'cancel' => 'Kiräkmi',
+'about' => 'Turında',
+'article' => 'Eçtälek bite',
+'newwindow' => '(yaña täräzädä açılır)',
+'cancel' => 'Kiräkmi',
+'moredotdotdot' => 'Kübräk...',
+'mypage' => 'Bitem',
+'mytalk' => 'Bäxäsem',
+'anontalk' => 'Bu IP turında bäxäs',
+'navigation' => 'Küçü',
+'and' => '&#32;wä',
+
+# Cologne Blue skin
'qbfind' => 'Tap',
'qbbrowse' => 'Qaraw',
'qbedit' => 'Üzgärtü',
@@ -139,12 +151,8 @@ $messages = array(
'qbpageinfo' => 'Eçtälek',
'qbmyoptions' => 'Bitlärem',
'qbspecialpages' => 'Maxsus bitlär',
-'moredotdotdot' => 'Kübräk...',
-'mypage' => 'Bitem',
-'mytalk' => 'Bäxäsem',
-'anontalk' => 'Bu IP turında bäxäs',
-'navigation' => 'Küçü',
-'and' => '&#32;wä',
+'faq' => 'YBS',
+'faqpage' => 'Project:YBS',
'errorpagetitle' => 'Xata',
'returnto' => '«$1» bitenä qaytu.',
@@ -181,7 +189,7 @@ $messages = array(
'viewtalkpage' => 'Bäxäsen qaraw',
'otherlanguages' => 'Başqa tellärdä',
'redirectedfrom' => '(«$1» bitennän yünältelde)',
-'lastmodifiedat' => 'Betniñ soñğı özgerişi $2, $1 bolğan.', # $1 date, $2 time
+'lastmodifiedat' => 'Betniñ soñğı özgerişi $2, $1 bolğan.',
'protectedpage' => 'Yaqlanğan bit',
'jumpto' => 'Küç:',
'jumptosearch' => 'ezläw',
@@ -190,14 +198,11 @@ $messages = array(
'aboutsite' => '{{SITENAME}} Turında',
'aboutpage' => 'Project:Turında',
'copyright' => 'Eçtälek $1 buyınça ireşüle.',
-'copyrightpagename' => '{{SITENAME}} qälämxaqı',
'copyrightpage' => '{{ns:project}}:Qälämxaq',
'currentevents' => 'Xäzerge waqíğalar',
'currentevents-url' => 'Project:Xäzerge waqíğalar',
'edithelp' => 'Üzgärtü xaqında',
'edithelppage' => 'Help:Üzgärtü',
-'faq' => 'YBS',
-'faqpage' => 'Project:YBS',
'helppage' => 'Help:Eçtälek',
'mainpage' => 'Başbit',
'mainpage-description' => 'Başbit',
@@ -246,11 +251,9 @@ $messages = array(
'viewsource' => 'Mäqälä çığanağı',
# Login and logout pages
-'logouttitle' => 'Äğzä çığuı',
'welcomecreation' => "== Räxim it, $1! ==
Sineñ xísabıñ yasaldı. {{SITENAME}}'dağı köyläwläreñne dä üzgärtergä onıtma.",
-'loginpagetitle' => 'Atama belän kerü',
'yourname' => 'İreşü isemeñ',
'yourpassword' => 'Sersüzeñ',
'yourpasswordagain' => 'Sersüz qabat',
@@ -264,9 +267,6 @@ Sineñ xísabıñ yasaldı. {{SITENAME}}'dağı köyläwläreñne dä üzgärter
'createaccountmail' => 'email buyınça',
'badretype' => 'Kertelgän sersüzeñ kileşmi.',
'userexists' => 'Äle genä kertkäneñ äğzä iseme qullanıla inde. Başqa isem sayla zínhar.',
-'youremail' => "Email'ıñ*",
-'yourrealname' => 'Çın isemeñ*',
-'yournick' => 'Atamañ:',
'loginerror' => 'Kerü xatası',
'loginsuccesstitle' => 'Uñışlı kergänbez',
'loginsuccess' => "Sin {{SITENAME}}'ğa «$1» atama belän kergän buldıñ.",
@@ -348,44 +348,43 @@ Zínhar, bu bitneñ wağraq kisäklärgä bülü turında uylap qara.",
'titlematches' => 'Mäqälä başlığı kileşä',
'notitlematches' => 'Kileşkän bit başlığı yuq',
'notextmatches' => 'Kileşkän bit mätene yuq',
-'prevn' => 'uzğan $1',
-'nextn' => 'kiläse $1',
-'viewprevnext' => 'Kürsätäse: ($1) ($2) ($3)',
+'prevn' => 'uzğan {{PLURAL:$1|$1}}',
+'nextn' => 'kiläse {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Kürsätäse: ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Eçtälek',
'powersearch' => 'Ezläw',
+# Quickbar
+'qbsettings' => 'Tiztirä caylawı',
+
# Preferences page
-'preferences' => 'Köyläwem',
-'mypreferences' => 'Köyläwem',
-'prefsnologin' => 'Kermägänseñ',
-'qbsettings' => 'Tiztirä caylawı',
-'changepassword' => 'Sersüz üzgärtü',
-'skin' => 'Tışlaw',
-'skin-preview' => 'Küzläw',
-'dateformat' => 'Waqıt qalıbı',
-'math_failure' => 'Uqí almadım',
-'math_unknown_error' => 'tanılmağan xata',
-'math_unknown_function' => 'tanılmağan funksí',
-'math_lexing_error' => 'nöhü xatası',
-'math_syntax_error' => 'nöhü xatası',
-'prefs-misc' => 'Başqa köyläwlär',
-'saveprefs' => 'Saqla köyläwlärne',
-'resetprefs' => 'Awdar köyläwne',
-'textboxsize' => 'Mätenqır ülçäme',
-'rows' => 'Yul:',
-'columns' => 'Buy:',
-'searchresultshead' => 'Ezläw',
-'resultsperpage' => 'Bit sayın näticä sanı',
-'recentchangescount' => 'Soñğı üzgärtmä tezmäsendä başlıq sanı',
-'savedprefs' => 'Köyläwläreñ saqlandı.',
-'timezonelegend' => 'Waqıt quşağı',
-'localtime' => 'Cirle waqıt belän kürsätäse',
-'timezoneoffset' => 'Çigenü',
-'servertime' => 'Serverda xäzerge waqıt',
-'guesstimezone' => 'Browserdan alası',
-'defaultns' => 'Ğädättä bu isemarada ezlise:',
-'default' => 'töpcay',
-'files' => 'Fayllar',
+'preferences' => 'Köyläwem',
+'mypreferences' => 'Köyläwem',
+'prefsnologin' => 'Kermägänseñ',
+'changepassword' => 'Sersüz üzgärtü',
+'prefs-skin' => 'Tışlaw',
+'skin-preview' => 'Küzläw',
+'prefs-misc' => 'Başqa köyläwlär',
+'saveprefs' => 'Saqla köyläwlärne',
+'resetprefs' => 'Awdar köyläwne',
+'prefs-editing' => 'Mätenqır ülçäme',
+'rows' => 'Yul:',
+'columns' => 'Buy:',
+'searchresultshead' => 'Ezläw',
+'resultsperpage' => 'Bit sayın näticä sanı',
+'recentchangescount' => 'Soñğı üzgärtmä tezmäsendä başlıq sanı',
+'savedprefs' => 'Köyläwläreñ saqlandı.',
+'timezonelegend' => 'Waqıt quşağı',
+'localtime' => 'Cirle waqıt belän kürsätäse',
+'timezoneoffset' => 'Çigenü',
+'servertime' => 'Serverda xäzerge waqıt',
+'guesstimezone' => 'Browserdan alası',
+'defaultns' => 'Ğädättä bu isemarada ezlise:',
+'default' => 'töpcay',
+'prefs-files' => 'Fayllar',
+'youremail' => "Email'ıñ*",
+'yourrealname' => 'Çın isemeñ*',
+'yournick' => 'Atamañ:',
# Recent changes
'recentchanges' => 'Soñğı üzgärtmälär',
@@ -406,13 +405,14 @@ Zínhar, bu bitneñ wağraq kisäklärgä bülü turında uylap qara.",
'newpageletter' => 'Y',
# Recent changes linked
-'recentchangeslinked' => 'Bäyle üzgärmä',
-'recentchangeslinked-title' => '$1 belän bäyle üzgärmä',
+'recentchangeslinked' => 'Bäyle üzgärmä',
+'recentchangeslinked-feed' => 'Bäyle üzgärmä',
+'recentchangeslinked-toolbox' => 'Bäyle üzgärmä',
+'recentchangeslinked-title' => '$1 belän bäyle üzgärmä',
# Upload
'upload' => 'Birem yökläw',
'uploadbtn' => 'Yöklä biremne',
-'reupload' => 'Qabat yökläw',
'reuploaddesc' => 'Yökläw bitenä qaytu.',
'uploadnologin' => 'Kermädeñ',
'uploadnologintext' => 'Birem yökläw öçen, säxifägä isem belän [[Special:UserLogin|keräse]].',
@@ -433,13 +433,13 @@ Zínhar, bu bitneñ wağraq kisäklärgä bülü turında uylap qara.",
'savefile' => 'Saqla biremne',
'uploadedimage' => 'yöklände "$1"',
'uploaddisabled' => 'Ğafu it, yökläw sünderelgän kileş tora.',
-'uploadcorrupt' => 'Bu birem yä üze watıq, yä quşımtası yaraqsız. Birem tikşerüdän soñ qabat yöklä zínhar.',
# Special:ListFiles
'imgfile' => 'fayl',
'listfiles' => 'Räsem tezmäse',
# File description page
+'file-anchor-link' => 'Räsem',
'filehist-dimensions' => 'Zurlıq',
'filehist-comment' => 'Açıqlama',
'imagelinks' => 'Räsem läñkerläre',
@@ -470,8 +470,8 @@ Zínhar, bu bitneñ wağraq kisäklärgä bülü turında uylap qara.",
'brokenredirects' => 'Watıq Yünältülär',
'brokenredirectstext' => 'Kiläse yünältülär bulmağan bitlärgä qarílar.',
-'brokenredirects-edit' => '(özgertiw)',
-'brokenredirects-delete' => '(bitir)',
+'brokenredirects-edit' => 'üzgärtü',
+'brokenredirects-delete' => 'beter',
# Miscellaneous special pages
'lonelypages' => 'Yätim bitlär',
@@ -563,7 +563,7 @@ Soñğı beterülär $2 bitendä terkälenä.',
** Buzıp yörüçi eşe',
# Rollback
-'editcomment' => "Bu üzgärtü taswírı: \"''\$1''\".", # only shown if there is an edit comment
+'editcomment' => "Bu üzgärtü taswírı: \"''\$1''\".",
# Protect
'protectlogpage' => 'Yaqlaw_köndälege',
@@ -591,6 +591,8 @@ Soñğı beterülär $2 bitendä terkälenä.',
'contribsub2' => '$1 ($2) öçen',
'uctop' => ' (soñ)',
+'sp-contributions-talk' => 'bäxäs',
+
# What links here
'whatlinkshere' => 'Kem bäyle moña',
'isredirect' => 'küçerelü bite',
@@ -644,7 +646,6 @@ yä isä saylanğan isem yaraqsız buldı. Başqa isem sayla zínhar.',
'allmessagesdefault' => 'Töpcay yazma',
'allmessagescurrent' => 'Eligi yazma',
'allmessagestext' => 'Bu säxifäneñ MediaWiki: atarasında bulğan yazmalar tezmäse.',
-'allmessagesfilter' => 'Yazma atalışına sözgiç:',
# Thumbnails
'thumbnail-more' => 'Zuraytası',
@@ -703,6 +704,13 @@ yä isä saylanğan isem yaraqsız buldı. Başqa isem sayla zínhar.',
# Info page
'infosubtitle' => 'Bit turında',
+# Math errors
+'math_failure' => 'Uqí almadım',
+'math_unknown_error' => 'tanılmağan xata',
+'math_unknown_function' => 'tanılmağan funksí',
+'math_lexing_error' => 'nöhü xatası',
+'math_syntax_error' => 'nöhü xatası',
+
# Media information
'show-big-image' => 'Tulı zurlığı',
@@ -728,7 +736,7 @@ yä isä saylanğan isem yaraqsız buldı. Başqa isem sayla zínhar.',
'autosumm-new' => 'Yeni bet: $1',
# Special:Version
-'version' => 'Yurama', # Not used as normal message but as header for the special page itself
+'version' => 'Yurama',
# Special:SpecialPages
'specialpages' => 'Maxsus bitlär',
diff --git a/languages/messages/MessagesTy.php b/languages/messages/MessagesTy.php
index e51a9415..d200ac8c 100644
--- a/languages/messages/MessagesTy.php
+++ b/languages/messages/MessagesTy.php
@@ -65,12 +65,14 @@ $messages = array(
'nov' => 'nō novema',
'dec' => 'nō tītema',
-'about' => 'Nō',
-'article' => 'Parau pāpa’i',
+'about' => 'Nō',
+'article' => 'Parau pāpa’i',
+'navigation' => 'Arata’i',
+
+# Cologne Blue skin
'qbedit' => 'Fa’ahuru ’ē',
'qbmyoptions' => 'ta’u ’api',
'qbspecialpages' => 'Te mau ’api ta’a ’ē',
-'navigation' => 'Arata’i',
'help' => 'Tauturu',
'search' => 'Roromā’imi',
@@ -108,11 +110,6 @@ $messages = array(
'nstab-help' => 'Tauturu',
'nstab-category' => 'Huru',
-# Login and logout pages
-'youremail' => 'Tā’u ’āfata rata uira',
-'yourlanguage' => 'Te reo:',
-'email' => '’Imere',
-
# Revision feed
'history-feed-title' => 'Parau tuatāpapa',
@@ -120,8 +117,11 @@ $messages = array(
'powersearch' => 'Roromā’imi',
# Preferences page
-'prefs-rc' => 'Te mau fa’ahuru-’ē-ra’a ’āpī',
-'files' => 'Te mau putu’ite',
+'prefs-rc' => 'Te mau fa’ahuru-’ē-ra’a ’āpī',
+'prefs-files' => 'Te mau putu’ite',
+'youremail' => 'Tā’u ’āfata rata uira',
+'yourlanguage' => 'Te reo:',
+'email' => '’Imere',
# Recent changes
'recentchanges' => 'Te mau fa’ahuru-’ē-ra’a ’āpī',
@@ -130,7 +130,8 @@ $messages = array(
'listfiles_user' => 'Ta’ata fa’a’ohipa',
# File description page
-'filehist-user' => 'Ta’ata',
+'file-anchor-link' => 'Hōho’a',
+'filehist-user' => 'Ta’ata',
# Random page
'randompage' => '’Api mā’iti-haere-noa',
diff --git a/languages/messages/MessagesTyv.php b/languages/messages/MessagesTyv.php
index ad08f53a..2b60afbc 100644
--- a/languages/messages/MessagesTyv.php
+++ b/languages/messages/MessagesTyv.php
@@ -14,26 +14,34 @@
*/
$namespaceNames = array(
- NS_MEDIA => 'Медиа', //Media
- NS_SPECIAL => 'Тускай', //Special
- NS_MAIN => '',
- NS_TALK => 'Чугаа', //Talk
- NS_USER => 'Aжыглакчы', //User
- NS_USER_TALK => 'Aжыглакчы_чугаа', //User_talk
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_чугаа', //_talk
- NS_FILE => 'Чурук', //Image
- NS_FILE_TALK => 'Чурук_чугаа', //Image_talk
- NS_MEDIAWIKI => 'МедиаВики', //MediaWiki
- NS_MEDIAWIKI_TALK => 'МедиаВики_чугаа', //MediaWiki_talk
- NS_TEMPLATE => 'Хээ', //Template
- NS_TEMPLATE_TALK => 'Хээ_чугаа', //Template_talk
- NS_HELP => 'Дуза', //Help
- NS_HELP_TALK => 'Дуза_чугаа', //Help_talk
- NS_CATEGORY => 'Бөлүк', //Category
- NS_CATEGORY_TALK => 'Бөлүк_чугаа', //Category_talk
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Тускай',
+ NS_TALK => 'Чугаа',
+ NS_USER => 'Aжыглакчы',
+ NS_USER_TALK => 'Aжыглакчы_чугаазу',
+ NS_PROJECT_TALK => '$1_чугаазу',
+ NS_FILE => 'Файл',
+ NS_FILE_TALK => 'Файл_чугаазу',
+ NS_MEDIAWIKI => 'МедиаВики',
+ NS_MEDIAWIKI_TALK => 'МедиаВики_чугаазу',
+ NS_TEMPLATE => 'Хээ',
+ NS_TEMPLATE_TALK => 'Хээ_чугаазу',
+ NS_HELP => 'Дуза',
+ NS_HELP_TALK => 'Дуза_чугаазу',
+ NS_CATEGORY => 'Бөлүк',
+ NS_CATEGORY_TALK => 'Бөлүк_чугаазу',
);
+$namespaceAliases = array(
+ 'Aжыглакчы_чугаа' => NS_USER_TALK,
+ '$1_чугаа' => NS_PROJECT_TALK,
+ 'Чурук' => NS_FILE,
+ 'Чурук_чугаа' => NS_FILE_TALK,
+ 'МедиаВики_чугаа' => NS_MEDIAWIKI_TALK,
+ 'Хээ_чугаа' => NS_TEMPLATE_TALK,
+ 'Дуза_чугаа' => NS_HELP_TALK,
+ 'Бөлүк_чугаа' => NS_CATEGORY_TALK,
+);
$bookstoreList = array(
'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1',
@@ -111,24 +119,29 @@ $messages = array(
'category-media-header' => '"$1" деп бөлүкте медиа',
'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
'hidden-categories' => '{{PLURAL:$1|Чажыт бөлүк|Чажыт бөлүктер}}',
-'hidden-category-category' => 'Чажыт бөлүктер', # Name of the category where hidden categories will be listed
-
-'about' => 'Дугайында',
-'article' => 'Допчу арын',
-'newwindow' => '(чаа көзенээ ажыытынар)',
-'cancel' => 'Соксаары',
+'hidden-category-category' => 'Чажыт бөлүктер',
+
+'about' => 'Дугайында',
+'article' => 'Допчу арын',
+'newwindow' => '(чаа көзенээ ажыытынар)',
+'cancel' => 'Соксаары',
+'moredotdotdot' => 'Ам-даа...',
+'mypage' => 'Мээң арыным',
+'mytalk' => 'Мээң чугаалажырым',
+'anontalk' => 'Бо ИП-адрестиң чугаа',
+'navigation' => 'Навигация',
+'and' => '&#32;болгаш',
+
+# Cologne Blue skin
'qbfind' => 'Тывары',
'qbbrowse' => 'Каралаары',
'qbedit' => 'Өскертир',
'qbpageoptions' => 'Бо арын',
'qbmyoptions' => 'Мээң арыннарым',
'qbspecialpages' => 'Тускай арыннар',
-'moredotdotdot' => 'Ам-даа...',
-'mypage' => 'Мээң арыным',
-'mytalk' => 'Мээң чугаалажырым',
-'anontalk' => 'Бо ИП-адрестиң чугаа',
-'navigation' => 'Навигация',
-'and' => '&#32;болгаш',
+
+# Vector skin
+'vector-namespace-category' => 'Бөлүк',
'errorpagetitle' => 'Алдаг',
'returnto' => '$1 деп арынже эглири.',
@@ -174,7 +187,7 @@ $messages = array(
'categorypage' => 'Бөлүктүң арынын көөрү',
'viewtalkpage' => 'Чугаалажырыны көөр',
'otherlanguages' => 'Өске дылдарга',
-'lastmodifiedat' => 'Бо арын сөөлгү каттап $2, $1 өскерилген.', # $1 date, $2 time
+'lastmodifiedat' => 'Бо арын сөөлгү каттап $2, $1 өскерилген.',
'jumptonavigation' => 'навигация',
'jumptosearch' => 'дилээри',
@@ -233,8 +246,6 @@ $messages = array(
# General errors
'error' => 'Алдаг',
'databaseerror' => 'Медээ шыгжамыры алдаг',
-'noconnect' => 'Буруулуг болдувус! Викиде чамдык техниктиг бергедээшкиннер бар болганындан database серверинче коштунмаан. <br />
-$1',
'laggedslavemode' => 'Оваарымчалыг: Бо арында чаартыышкыннар чок болуп болур',
'readonly' => 'шоочалаарынга медээ шыгжамыры',
'internalerror' => 'Иштики алдаг',
@@ -243,13 +254,12 @@ $1',
'viewsource' => 'Бажы көөрү',
# Login and logout pages
-'logouttitle' => 'Ажыглакчы үнери',
-'loginpagetitle' => 'Ажыглакчы кирери',
'yourname' => 'Aжыглакчының ады',
'yourpassword' => 'Чажыт сөс',
'remembermypassword' => 'Адымны сактып алыры',
'login' => 'Кирери',
'userlogin' => 'Кирери / кирерини чогаадып кылыры',
+'userloginnocreate' => 'Кирери',
'logout' => 'Үнери',
'userlogout' => 'Үнери',
'notloggedin' => 'Кирери евес',
@@ -259,14 +269,6 @@ $1',
'createaccountmail' => 'е-чагаа-биле',
'badretype' => 'Силерниң парлаан чажыт созуңер таарышпас.',
'userexists' => 'Силерниң парлаан адыңар амгы уеде ажыглаттынып турар. өске аттан шилип алыңар.',
-'youremail' => 'Э-чагааңар:',
-'username' => 'Aжыглакчының ады:',
-'yourrealname' => 'Шын адыңар *',
-'yourlanguage' => 'Дылыңар:',
-'yournick' => 'Шола ат:',
-'gender-male' => 'Эр',
-'gender-female' => 'Кыс',
-'email' => 'Э-чагаа',
'loginerror' => 'Багай кирери',
'loginsuccesstitle' => 'Чедимчелиг кирери',
'mailmypassword' => 'Меңээ чаа чажыт сөсту чорудаары',
@@ -282,6 +284,7 @@ $1',
'resetpass_submit' => 'Чажыт сөстү чоогадып кылыр база кирер.',
'resetpass_forbidden' => 'Чажыт сөстү өскертивейн болбас',
'resetpass-submit-loggedin' => 'Чажыт сөзү өскертири',
+'resetpass-submit-cancel' => 'Соксаары',
# Edit page toolbar
'bold_sample' => 'Карартыр',
@@ -334,7 +337,6 @@ $1',
'page_first' => 'бирги',
'page_last' => 'сөөлгү',
'history-fieldset-title' => 'Каралаары төөгүзү',
-'deletedrev' => '[ап каан]',
'histfirst' => 'Эң эрте',
'histlast' => 'Эң дээм чаагы',
'historysize' => '({{PLURAL:$1|$1 байт}})',
@@ -344,15 +346,21 @@ $1',
'history-feed-title' => 'Үндүрериниң төөгүзү',
# Revision deletion
-'rev-deleted-comment' => '(комментарийни ап каан)',
-'rev-deleted-user' => '(ажыглакчының адын ап каан)',
-'rev-deleted-event' => '',
-'rev-delundel' => 'көргүзери/чажырары',
-'revisiondelete' => 'Үндүрерилерни ап каар/диргисир',
-'revdelete-hide-comment' => 'Өскерлиишкинниң комментарийн чажырар',
-'revdelete-hide-user' => 'Чогаалчының адын/ИП-адресин чажырар',
-'revdelete-log' => 'Чылдагаан:',
-'pagehist' => 'Арынның төөгүзү',
+'rev-deleted-comment' => '(комментарийни ап каан)',
+'rev-deleted-user' => '(ажыглакчының адын ап каан)',
+'rev-deleted-event' => '',
+'rev-delundel' => 'көргүзери/чажырары',
+'rev-showdeleted' => 'көргүзери',
+'revisiondelete' => 'Үндүрерилерни ап каар/диргисир',
+'revdelete-show-file-submit' => 'Ийе',
+'revdelete-hide-comment' => 'Өскерлиишкинниң комментарийн чажырар',
+'revdelete-hide-user' => 'Чогаалчының адын/ИП-адресин чажырар',
+'revdelete-radio-set' => 'Ийе',
+'revdelete-radio-unset' => 'Чок',
+'revdelete-log' => 'Чылдагаан:',
+'pagehist' => 'Арынның төөгүзү',
+'revdelete-otherreason' => 'Өске/немелде чылдагаан:',
+'revdelete-reasonotherlist' => 'Өске чылдагаан',
# History merging
'mergehistory-reason' => 'Чылдагаан:',
@@ -361,33 +369,32 @@ $1',
'history-title' => '"$1" деп арынның үндүрери төөгүзү',
'lineno' => '$1 одуруг:',
'compareselectedversions' => 'Шилип алган хевирлери деңнээри',
-'diff-width' => 'калбаа',
-'diff-height' => 'бедии',
# Search results
'searchresults' => 'Түңнелдер',
-'prevn' => 'бүрүнгү $1',
-'nextn' => 'соонда $1',
-'viewprevnext' => '($1) ($2) ($3) көөрү',
+'prevn' => 'бүрүнгү {{PLURAL:$1|$1}}',
+'nextn' => 'соонда {{PLURAL:$1|$1}}',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
'searchhelp-url' => 'Help:Допчузу',
+'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything' => 'Бүгүде',
'search-result-size' => '$1 ({{PLURAL:$2|$2 сөс}})',
'search-section' => '("$1" деп салбыр)',
'searchall' => 'шупту',
'powersearch' => '',
+'powersearch-toggleall' => 'Шупту',
# Preferences page
'preferences' => 'Шилиирилер',
'mypreferences' => 'Мээң шилиирилерим',
'changepassword' => 'Чажыт сөстү өскертир',
-'skin' => 'Кеш',
+'prefs-skin' => 'Кеш',
'skin-preview' => 'Чижеглей көөр',
-'math_unknown_error' => 'билбес алдаг',
'prefs-personal' => 'Ажыглакчының медээлери',
'prefs-rc' => 'Дээм чаагы өскерлиишкиннер',
'prefs-watchlist' => 'Хайгаарылга даңзызы',
'saveprefs' => 'Шыгжаар',
-'textboxsize' => 'Өскертир',
+'prefs-editing' => 'Өскертир',
'rows' => 'Одуруглар:',
'columns' => 'Баганалар:',
'searchresultshead' => 'Дилээр',
@@ -400,7 +407,15 @@ $1',
'timezoneregion-australia' => 'Австралия',
'timezoneregion-europe' => 'Европа',
'default' => 'ниити',
-'files' => 'файлдар',
+'prefs-files' => 'файлдар',
+'youremail' => 'Э-чагааңар:',
+'username' => 'Aжыглакчының ады:',
+'yourrealname' => 'Шын адыңар *',
+'yourlanguage' => 'Дылыңар:',
+'yournick' => 'Шола ат:',
+'gender-male' => 'Эр',
+'gender-female' => 'Кыс',
+'email' => 'Э-чагаа',
# User rights
'editinguser' => '',
@@ -437,6 +452,9 @@ $1',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|өскерлиишкин}}',
'recentchanges' => 'Амгы өскерлиишкиннер',
+'recentchanges-legend-newpage' => '$1 — чаа арын',
+'recentchanges-legend-minor' => '$1 — бичии өскерлиишкин',
+'recentchanges-label-minor' => 'Бо өскерлиишкин биче-дир',
'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
'rcshowhidebots' => 'Роботтарну $1',
'rcshowhideliu' => 'Кирер ажыглакчыларны $1',
@@ -458,7 +476,6 @@ $1',
# Upload
'upload' => 'Файлды салыры',
'uploadbtn' => 'Файлды салыры',
-'reupload' => 'Катап киирер',
'uploadnologin' => 'Кирбес',
'uploaderror' => 'Кииреринге алдаг',
'filename' => 'файлдың ады:',
@@ -481,6 +498,7 @@ $1',
'listfiles_description' => 'Тодарадып бижээни',
# File description page
+'file-anchor-link' => 'Файл',
'filehist' => 'Файлдың төөгүзү',
'filehist-deleteall' => 'шуптуну ап каар',
'filehist-deleteone' => 'ап каары',
@@ -491,7 +509,6 @@ $1',
'filehist-filesize' => 'Файл хемчээли',
'filehist-comment' => 'Комментарий',
'imagelinks' => 'Файлдың xолбаалары',
-'noimage-linktext' => 'Ону киирер',
# File reversion
'filerevert-comment' => 'Чылдагаан:',
@@ -520,8 +537,8 @@ $1',
# Statistics
'statistics' => 'Статистика',
-'brokenredirects-edit' => '(өскертир)',
-'brokenredirects-delete' => '(ап каар)',
+'brokenredirects-edit' => 'өскертири',
+'brokenredirects-delete' => 'ап каары',
'withoutinterwiki' => 'Дыл холбаалар эвес арыннар',
@@ -583,6 +600,10 @@ $1',
# Special:ListUsers
'listusers-submit' => 'Көргүзери',
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Роботтарны чажырары',
+'activeusers-hidesysops' => 'Эргелекчыларны чажырары',
+
# E-mail user
'emailuser' => 'Бо ажыглакчыга э-чагааны чорудаары',
'defemailsubject' => '{{grammar:ablative|{{SITENAME}}}} э-чагаа',
@@ -648,11 +669,11 @@ $1',
'sp-contributions-newbies' => 'Чүгле чаа кирерилерниң немелделерин көргүзерн',
'sp-contributions-logs' => 'журналдар',
+'sp-contributions-talk' => 'чугаалажыр',
'sp-contributions-username' => 'ИП-адрес азы ажыглачының ады:',
'sp-contributions-submit' => 'Дилээри',
# What links here
-'whatlinkshere' => 'Pages that link here',
'whatlinkshere-page' => 'Арын:',
'isimage' => 'чуруктуң холбаазы',
'whatlinkshere-links' => '← холбаалар',
@@ -664,7 +685,7 @@ $1',
'ipbreason' => 'Чылдагаан:',
'ipbreasonotherlist' => 'Өске чылдагаан',
'ipbother' => 'Өске шак:',
-'ipboptions' => '2 шак:2 hours,1 хүн:1 day,3 хүн:3 days,1 чеди-хонук:1 week,2 чеди-хонук:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 чыл:1 year,төнмес-батпас:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 шак:2 hours,1 хүн:1 day,3 хүн:3 days,1 чеди-хонук:1 week,2 чеди-хонук:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 чыл:1 year,төнмес-батпас:infinite',
'ipbotheroption' => 'өске',
'ipbotherreason' => 'Өске/немелде чылдагаан:',
'badipaddress' => 'Багай ИП-адрес',
@@ -690,10 +711,13 @@ $1',
'delete_and_move' => 'Ап каар болгаш шимчээр',
# Namespace 8 related
-'allmessages' => 'Системниң дыңнадыглары',
-'allmessagesname' => 'Ат',
-'allmessagesdefault' => 'Ниити сөзүглел',
-'allmessagescurrent' => 'Амгы сөзүглел',
+'allmessages' => 'Системниң дыңнадыглары',
+'allmessagesname' => 'Ат',
+'allmessagesdefault' => 'Ниити сөзүглел',
+'allmessagescurrent' => 'Амгы сөзүглел',
+'allmessages-filter-all' => 'Шупту',
+'allmessages-language' => 'Дыл:',
+'allmessages-filter-submit' => 'Күүcедири',
# Special:Import
'import-comment' => 'Комментарий:',
@@ -741,6 +765,9 @@ $1',
'skinname-myskin' => 'MySkin',
'skinname-chick' => 'Chick',
+# Math errors
+'math_unknown_error' => 'билбес алдаг',
+
# Image deletion
'filedelete-missing' => '"$1" деп файл чок, ынчангаш ол ап калдынмас.',
@@ -772,6 +799,7 @@ $1',
'watchlistall2' => 'шупту',
'namespacesall' => 'шупту',
'monthsall' => 'шупту',
+'limitall' => 'шупту',
# Multipage image navigation
'imgmultipageprev' => '← бүрүнгү арын',
@@ -801,7 +829,7 @@ $1',
'watchlisttools-raw' => 'Чиг хайгаарылга даңзызын өскертири',
# Special:Version
-'version' => 'Үндүрери', # Not used as normal message but as header for the special page itself
+'version' => 'Үндүрери',
# Special:FilePath
'filepath-page' => 'Файл:',
@@ -819,4 +847,7 @@ $1',
# Special:Tags
'tags-edit' => 'өскертири',
+# HTML forms
+'htmlform-submit' => 'Күүcедири',
+
);
diff --git a/languages/messages/MessagesUdm.php b/languages/messages/MessagesUdm.php
index 96ca8494..30af95af 100644
--- a/languages/messages/MessagesUdm.php
+++ b/languages/messages/MessagesUdm.php
@@ -17,11 +17,9 @@ $fallback = 'ru';
$namespaceNames = array(
NS_MEDIA => 'Медиа',
NS_SPECIAL => 'Панель',
- NS_MAIN => '',
NS_TALK => 'Вераськон',
NS_USER => 'Викиавтор',
NS_USER_TALK => 'Викиавтор_сярысь_вераськон',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_сярысь_вераськон',
NS_FILE => 'Суред',
NS_FILE_TALK => 'Суред_сярысь_вераськон',
@@ -42,10 +40,12 @@ $separatorTransformTable = array(',' => ' ', '.' => ',' );
$messages = array(
'linkprefix' => '/^(.*?)(„|«)$/sDu',
-'article' => 'Статья',
+'article' => 'Статья',
+'mypage' => 'Ас бам',
+'mytalk' => 'викиавтор сярысь вераськон',
+
+# Cologne Blue skin
'qbspecialpages' => 'Ваньмыз панельёс',
-'mypage' => 'Ас бам',
-'mytalk' => 'викиавтор сярысь вераськон',
'help' => 'Валэктонъёс',
'history' => 'Бамлэн историез',
@@ -64,6 +64,7 @@ $messages = array(
'mainpage' => 'Кутскон бам',
'mainpage-description' => 'Кутскон бам',
'portal' => 'Сообщество',
+'portal-url' => 'Project:Портал сообщества',
'editsection' => 'тупатыны',
@@ -104,13 +105,15 @@ $messages = array(
'hist' => 'история',
# Recent changes linked
-'recentchangeslinked' => 'Герӟаськем тупатонъёс',
+'recentchangeslinked' => 'Герӟаськем тупатонъёс',
+'recentchangeslinked-feed' => 'Герӟаськем тупатонъёс',
+'recentchangeslinked-toolbox' => 'Герӟаськем тупатонъёс',
# Upload
'upload' => 'Файл поныны',
# File description page
-'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.',
# Random page
'randompage' => 'Олокыӵе статья',
diff --git a/languages/messages/MessagesUg.php b/languages/messages/MessagesUg.php
index 66002fe9..2c5d62c6 100644
--- a/languages/messages/MessagesUg.php
+++ b/languages/messages/MessagesUg.php
@@ -1,6 +1,9 @@
<?php
/** Uighur (Uyghurche‎ / ئۇيغۇرچە)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
* @comment falls back to Uyghurche‎ (Latin)
diff --git a/languages/messages/MessagesUg_arab.php b/languages/messages/MessagesUg_arab.php
new file mode 100644
index 00000000..823789a4
--- /dev/null
+++ b/languages/messages/MessagesUg_arab.php
@@ -0,0 +1,3212 @@
+<?php
+/** ئۇيغۇرچە (ئۇيغۇرچە)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Alfredie
+ * @author Sahran
+ */
+
+$rtl = true;
+
+$namespaceNames = array(
+ NS_MEDIA => 'ۋاسىتە',
+ NS_SPECIAL => 'ئالاھىدە',
+ NS_TALK => 'مۇنازىرە',
+ NS_USER => 'ئىشلەتكۈچى',
+ NS_USER_TALK => 'ئىشلەتكۈچى مۇنازىرىسى',
+ NS_PROJECT_TALK => 'مۇنازىرىسى$1',
+ NS_FILE => 'ھۆججەت',
+ NS_FILE_TALK => 'ھۆججەت مۇنازىرىسى',
+ NS_MEDIAWIKI_TALK => 'MediaWiki مۇنازىرىسى',
+ NS_TEMPLATE => 'قېلىپ',
+ NS_TEMPLATE_TALK => 'قېلىپ مۇنازىرىسى',
+ NS_HELP => 'ياردەم',
+ NS_HELP_TALK => 'ياردەم مۇنازىرىسى',
+ NS_CATEGORY => 'تۈر',
+ NS_CATEGORY_TALK => 'تۈر مۇنازىرىسى',
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'ئۇلانما ئاستى سىزىقى:',
+'tog-highlightbroken' => 'ئۈزۈلگەن ئۇلانما فورماتى <a href="" class="new"> مۇشۇنىڭغا ئوخشاش </a> (ياكى بۇنىڭغا ئوخشاش<a href="" class="internal">؟</a>)',
+'tog-justify' => 'ئابزاس توغرىلا',
+'tog-hideminor' => 'يېقىنقى ئۆزگەرتىشتە ئازراقلا تەھرىرنى يوشۇر',
+'tog-hidepatrolled' => 'يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر',
+'tog-newpageshidepatrolled' => 'يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر',
+'tog-extendwatchlist' => 'كۈچەيتىلگەن كۆزەت تىزىملىكىدە يېقىنقى ئۆزگەرتىشنىلا كۆرسەتمەي بەلكى ھەممە ئۆزگەرتىشنى كۆرسەت',
+'tog-usenewrc' => 'كۈچەيتىلگەن يېقىنقى ئۆزگەرتىشنى قوزغات (JavaScript زۆرۈر)',
+'tog-numberheadings' => 'ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش',
+'tog-showtoolbar' => 'تەھرىر قورال ستونىنى كۆرسەت (JavaScript زۆرۈر)',
+'tog-editondblclick' => 'قوش چەككەندە بەت تەھرىرلە (JavaScript زۆرۈر)',
+'tog-editsection' => '[تەھرىر] ئۇلانمىسىنى چېكىپ ئابزاس تەھرىرلەشكە يول قوي',
+'tog-editsectiononrightclick' => 'ماۋزۇنى چاشقىنەكتە ئوڭ چېكىپ ئابزاس تەھرىرلەشكە يول قوي (JavaScript زۆرۈر)',
+'tog-showtoc' => 'مەزمۇن جەدۋىلى كۆرسەت (بىر بەتتە 3 تىن ئارتۇق ماۋزۇ بار بەتكە قارىتىلغان)',
+'tog-rememberpassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا',
+'tog-editwidth' => 'تەھرىرلەش رامكىسىنى كېڭەيتىپ پۈتۈن ئېكرانغا تولدۇر',
+'tog-watchcreations' => 'مەن قۇرغان بەتنى كۆزەت تىزىملىكىمگە قوش',
+'tog-watchdefault' => 'مەن تەھرىرلىگەن بەتنى كۆزەت تىزىملىكىمگە قوش',
+'tog-watchmoves' => 'مەن يۆتكىگەن بەتنى كۆزەت تىزىملىكىمگە قوش',
+'tog-watchdeletion' => 'مەن ئۆچۈرگەن بەتنى كۆزەت تىزىملىكىمگە قوش',
+'tog-minordefault' => 'ھەممە تەھرىرلەشنى ئازراقلا تەھرىرگە تەڭشە',
+'tog-previewontop' => 'تەھرىر رامكىسىنىڭ ئۈستىدە ئالدىن كۆزىتىشنى كۆرسەت',
+'tog-previewonfirst' => 'تۇنجى قېتىم تەھرىرلىگەندە ئالدىن كۆزىتىشنى كۆرسەت',
+'tog-nocache' => 'بەت غەملەشنى چەكلە',
+'tog-enotifwatchlistpages' => 'كۆزەت تىزىملىكىمدىكى بەت ئۆزگەرگەندە ئېلخەت يوللا',
+'tog-enotifusertalkpages' => 'مۇنازىرە بېتىم ئۆزگەرگەندە ئېلخەت يوللا',
+'tog-enotifminoredits' => 'بەت ئازراقلا تەھرىرلەنگەندىمۇ ئېلخەت يوللا',
+'tog-enotifrevealaddr' => 'ئۇقتۇرۇش ئېلخەت تىزىملىكىدە ئېلخەت ئادرېسىمنى ئاشكارىلا',
+'tog-shownumberswatching' => 'بۇ بەتنى كۆزىتىۋاتقان ئىشلەتكۈچى سانىنى كۆرسەت',
+'tog-oldsig' => 'نۆۋەتتىكى ئىمزانى ئالدىن كۆزەت:',
+'tog-fancysig' => 'ئىمزاغا wiki تېكستى سۈپىتىدە مۇئامىلە قىل (ئۆزلۈكىدىن ئۇلانما ھاسىل بولمايدۇ)',
+'tog-externaleditor' => 'كۆڭۈلدىكى ئەھۋالدا سىرتقى تەھرىرلىگۈچ ئىشلەت (ئالىي ئىشلەتكۈچىگە تەمىنلىنىدۇ، كومپيۇتېرىڭىزدا بىر قىسىم ئالاھىدە تەڭشەش ئېلىپ بېرىشىڭىز لازىم)',
+'tog-externaldiff' => 'كۆڭۈلدىكى ئەھۋالدا سىرتقى پەرق تەھلىلى ئىشلەت (ئالىي ئىشلەتكۈچىگە تەمىنلىنىدۇ، كومپيۇتېرىڭىزدا بىر قىسىم ئالاھىدە تەڭشەش ئېلىپ بېرىشىڭىز لازىم)',
+'tog-showjumplinks' => '"ئاتلا" زىيارەت ئۇلانمىسىنى قوزغات',
+'tog-uselivepreview' => 'رىئال ۋاقىتلىق ئالدىن كۆزىتىشنى ئىشلەت (JavaScript زۆرۈر) (سىناق)',
+'tog-forceeditsummary' => 'ئۈزۈندە كىرگۈزمىگەندە مېنى ئەسكەرت',
+'tog-watchlisthideown' => 'كۆزەت تىزىملىكىدىن مېنىڭ تەھرىرلىگىنىمنى يوشۇر',
+'tog-watchlisthidebots' => 'كۆزەت تىزىملىكىدىن ماشىنا ئادەم تەھرىرلىگەننى يوشۇر',
+'tog-watchlisthideminor' => 'كۆزەت تىزىملىكىدىن ئازراقلا تەھرىرلىگەننى يوشۇر',
+'tog-watchlisthideliu' => 'كۆزەت تىزىملىكىدە تىزىمغا كىرگەن ئىشلەتكۈچىلەرنى يوشۇر',
+'tog-watchlisthideanons' => 'كۆزەت تىزىملىكىدە ئىمزاسىز ئىشلەتكۈچىلەرنى يوشۇر',
+'tog-watchlisthidepatrolled' => 'كۆزەت تىزىملىكىدىن كۆزىتىلگەن تەھرىرنى يوشۇر',
+'tog-ccmeonemails' => 'مەن باشقىلارغا يوللىغان ئېلخەتنى ئۆزەمگىمۇ بىر نۇسخا يوللا',
+'tog-diffonly' => 'تۈزىتىلگەن ئىككى نەشرىنىڭ پەرقىنى سېلىشتۇرغاندا بەت مەزمۇنىنى كۆرسەتمە',
+'tog-showhiddencats' => 'يوشۇرۇن تۈرلەرنى كۆرسەت',
+'tog-norollbackdiff' => 'قايتۇرۇشنى ئىجرا قىلغاندىن كېيىن پەرقنى كۆرسەتمە',
+
+'underline-always' => 'دائىم',
+'underline-never' => 'ھەرگىز',
+'underline-default' => 'توركۆرگۈ كۆڭۈلدىكى',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'تەھرىرلەش رايونىنىڭ خەت نۇسخا ئۇسلۇبى:',
+'editfont-default' => 'توركۆرگۈ كۆڭۈلدىكى',
+'editfont-monospace' => 'تەڭ كەڭلىكتىكى خەت نۇسخا',
+'editfont-sansserif' => 'Sans-serif خەت نۇسخا',
+'editfont-serif' => 'Serif خەت نۇسخا',
+
+# Dates
+'sunday' => 'يەكشەنبە',
+'monday' => 'دۈشەنبە',
+'tuesday' => 'سەيشەنبە',
+'wednesday' => 'چارشەنبە',
+'thursday' => 'پەيشەنبە',
+'friday' => 'جۈمە',
+'saturday' => 'شەنبە',
+'sun' => 'ي',
+'mon' => 'د',
+'tue' => 'س',
+'wed' => 'چ',
+'thu' => 'پ',
+'fri' => 'ج',
+'sat' => 'ش',
+'january' => 'قەھرىتان',
+'february' => 'ھۇت',
+'march' => 'نەۋرۇز',
+'april' => 'ئۇمۇت',
+'may_long' => 'باھار',
+'june' => 'سەپەر',
+'july' => 'چىللە',
+'august' => 'تومۇز',
+'september' => 'مىزان',
+'october' => 'ئوغۇز',
+'november' => 'ئوغلاق',
+'december' => 'كۆنەك',
+'january-gen' => 'قەھرىتان',
+'february-gen' => 'ھۇت',
+'march-gen' => 'نەۋرۇز',
+'april-gen' => 'ئۇمۇت',
+'may-gen' => 'باھار',
+'june-gen' => 'سەپەر',
+'july-gen' => 'چىللە',
+'august-gen' => 'تومۇز',
+'september-gen' => 'مىزان',
+'october-gen' => 'ئوغۇز',
+'november-gen' => 'ئوغلاق',
+'december-gen' => 'كۆنەك',
+'jan' => 'قەھرىتان',
+'feb' => 'ھۇت',
+'mar' => 'نەۋرۇز',
+'apr' => 'ئۇمۇت',
+'may' => 'باھار',
+'jun' => 'سەپەر',
+'jul' => 'چىللە',
+'aug' => 'تومۇز',
+'sep' => 'مىزان',
+'oct' => 'ئوغۇز',
+'nov' => 'ئوغلاق',
+'dec' => 'كۆنەك',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|تۈر|تۈر}}',
+'category_header' => '"$1" تۈردىكى بەتلەر',
+'subcategories' => 'تارماق تۈر',
+'category-media-header' => '"$1" تۈردىكى ۋاسىتە',
+'category-empty' => "''بۇ تۈردە ھېچقانداق بەت ياكى ۋاسىتە يوق.''",
+'hidden-categories' => '{{PLURAL:$1|يوشۇرۇن تۈر|يوشۇرۇن تۈر}}',
+'hidden-category-category' => 'يوشۇرۇن تۈرلەر',
+'category-subcat-count' => '{{PLURAL:$2|بۇ تۈرنىڭ تۆۋەندىكى تارماق تۈرلىرى بار.|بۇ تۈرنىڭ تۆۋەندىكى {{PLURAL:$1|تارماق بېتى|$1 }}، جەمئى $2 بېتى بار.}}',
+'category-subcat-count-limited' => 'بۇ تۈرنىڭ تۆۋەندىكى {{PLURAL:$1|تارماق تۈرى|$1 تارماق تۈرى}} بار.',
+'category-article-count' => '{{PLURAL:$2|بۇ تۈردە تۆۋەندىكى بەتلا بار | {{PLURAL:$1|بۇ تۈردە تۆۋەندىكى |$1 بەت}} جەمئى $2 بەت بار.}}',
+'category-article-count-limited' => 'بۇ تۈردە {{PLURAL:$1|بەت|$1 بەت}} بار.',
+'category-file-count' => '{{PLURAL:$2| بۇ تۈرنىڭ تۆۋەندىكى ھۆججىتىلا بار.| بۇ تۈردە تۆۋەندىكى $1 ھۆججەت، جەمئى $2 ھۆججەت بار.}}',
+'category-file-count-limited' => 'نۆۋەتتىكى تۈردە تۆۋەندىكى {{PLURAL:$1|ھۆججەت|$1 ھۆججەت}} بار.',
+'listingcontinuesabbrev' => 'داۋاملاشتۇر',
+'index-category' => 'ئىندېكسلانغان بەتلەر',
+'noindex-category' => 'ئىندېكسلانمىغان بەتلەر',
+
+'mainpagetext' => "'''MediaWiki مۇۋەپپەقىيەتلىك قاچىلاندى.'''",
+'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents ئىشلەتكۈچى قوللانمىسى] نى زىيارەت قىلىپ wiki يۇمشاق دېتالىنى ئىشلىتىش ئۇچۇرىغا ئېرىشىڭ.
+
+== دەسلەپكى ساۋات ==
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings سەپلىمە تەڭشەك تىزىملىكى]
+* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki كۆپ ئۇچرايدىغان مەسىلىلەرگە جاۋاب]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki تارقاتقان ئېلخەت تىزىملىكى]',
+
+'about' => 'ھەققىدە',
+'article' => 'مەزمۇن بېتى',
+'newwindow' => '(يېڭى كۆزنەكتە ئاچ)',
+'cancel' => 'ۋاز كەچ',
+'moredotdotdot' => 'تەپسىلىي…',
+'mypage' => 'بەتىم',
+'mytalk' => 'مۇنازىرە بېتىم',
+'anontalk' => 'بۇ IP نىڭ مۇنازىرە بېتى',
+'navigation' => 'يولباشچى',
+'and' => '&#32;ۋە',
+
+# Cologne Blue skin
+'qbfind' => 'ئىزدە',
+'qbbrowse' => 'كۆز يۈگۈرت',
+'qbedit' => 'تەھرىر',
+'qbpageoptions' => 'بۇ بەت',
+'qbpageinfo' => 'كونتېكست',
+'qbmyoptions' => 'بەتلەرىم',
+'qbspecialpages' => 'ئالاھىدە بەتلەر',
+'faq' => 'كۆپ كۆرۈلىدىغان مەسىلىلەر',
+'faqpage' => 'Project:كۆپ كۆرۈلىدىغان مەسىلىلەر',
+
+# Vector skin
+'vector-action-addsection' => 'يېڭى باش تېما قوش',
+'vector-action-delete' => 'ئۆچۈر',
+'vector-action-move' => 'يۆتكە',
+'vector-action-protect' => 'قوغدا',
+'vector-action-undelete' => 'ئەسلىگە قايتۇر',
+'vector-action-unprotect' => 'قوغدىما',
+'vector-namespace-category' => 'تۈر',
+'vector-namespace-help' => 'ياردەم بەت',
+'vector-namespace-image' => 'ھۆججەت',
+'vector-namespace-main' => 'بەت',
+'vector-namespace-media' => 'ۋاسىتە بېتى',
+'vector-namespace-mediawiki' => 'ئۇچۇر',
+'vector-namespace-project' => 'قۇرۇلۇش بېتى',
+'vector-namespace-special' => 'ئالاھىدە بەت',
+'vector-namespace-talk' => 'مۇنازىرە',
+'vector-namespace-template' => 'قېلىپ',
+'vector-namespace-user' => 'ئىشلەتكۈچى بېتى',
+'vector-view-create' => 'قۇر',
+'vector-view-edit' => 'تەھرىر',
+'vector-view-history' => 'تارىخ كۆرسەت',
+'vector-view-view' => 'ئوقۇ',
+'vector-view-viewsource' => 'مەنبەنى كۆرسەت',
+'actions' => 'مەشغۇلات',
+'namespaces' => 'ئات بوشلۇقى',
+'variants' => 'ۋارىيانتلار',
+
+'errorpagetitle' => 'خاتالىق',
+'returnto' => '$1 غا قايت.',
+'tagline' => 'ئورنى {{SITENAME}}',
+'help' => 'ياردەم',
+'search' => 'ئىزدە',
+'searchbutton' => 'ئىزدە',
+'go' => 'يۆتكەل',
+'searcharticle' => 'يۆتكەل',
+'history' => 'بەت تارىخى',
+'history_short' => 'تارىخ',
+'updatedmarker' => 'مەن ئالدىنقى قېتىم زىيارەت قىلغاندىن بۇيانقى يېڭىلانغىنى',
+'info_short' => 'ئۇچۇر',
+'printableversion' => 'باسقىلى بولىدىغان نەشرى',
+'permalink' => 'مەڭگۈلۈك ئۇلانما',
+'print' => 'باس',
+'edit' => 'تەھرىر',
+'create' => 'قۇر',
+'editthispage' => 'بۇ بەتنى تەھرىرلە',
+'create-this-page' => 'بۇ بەتنى قۇر',
+'delete' => 'ئۆچۈر',
+'deletethispage' => 'بۇ بەتنى ئۆچۈر',
+'undelete_short' => 'ئۆچۈرۈلگەن {{PLURAL:$1|بىر تەھرىر|$1 تەھرىر}} ئەسلىگە كەلتۈرۈلدى',
+'protect' => 'قوغدا',
+'protect_change' => 'ئۆزگەرت',
+'protectthispage' => 'بۇ بەتنى قوغدا',
+'unprotect' => 'قوغدىما',
+'unprotectthispage' => 'بۇ بەتنى قوغدىما',
+'newpage' => 'يېڭى بەت',
+'talkpage' => 'بۇ بەتنىڭ مۇنازىرىسى',
+'talkpagelinktext' => 'مۇنازىرە',
+'specialpage' => 'ئالاھىدە بەت',
+'personaltools' => 'شەخسىي قوراللار',
+'postcomment' => 'يېڭى ئابزاس',
+'articlepage' => 'مەزمۇن بېتىنى كۆرسەت',
+'talk' => 'مۇنازىرە',
+'views' => 'كۆرۈنۈش',
+'toolbox' => 'قورال ستونى',
+'userpage' => 'ئىشلەتكۈچى بېتىنى كۆرسەت',
+'projectpage' => 'قۇرۇلۇش بېتىنى كۆرسەت',
+'imagepage' => 'ھۆججەت بېتىنى كۆرسەت',
+'mediawikipage' => 'ئۇچۇر بېتىنى كۆرسەت',
+'templatepage' => 'قېلىپ بېتىنى كۆرسەت',
+'viewhelppage' => 'ياردەم بېتىنى كۆرسەت',
+'categorypage' => 'كاتېگورىيە بېتىنى كۆرسەت',
+'viewtalkpage' => 'مۇنازىرە كۆرسەت',
+'otherlanguages' => 'باشقا تىلاردا',
+'redirectedfrom' => '(قايتا نىشان بەلگىلەش ئورنى $1)',
+'redirectpagesub' => 'قايتا نىشان بەلگىلەنگەن بەت',
+'lastmodifiedat' => 'بۇ بەتنى $1 ئاخىرقى قېتىم $2 دا ئۆزگەرتكەن.',
+'viewcount' => 'بۇ بەت {{PLURAL:$1|بىر قېتىم|$1 قېتىم}} زىيارەت قىلىندى.',
+'protectedpage' => 'قوغدالغان بەت',
+'jumpto' => 'ئاتلا:',
+'jumptonavigation' => 'يولباشچى',
+'jumptosearch' => 'ئىزدە',
+'view-pool-error' => 'كەچۈرۈڭ، نۆۋەتتە مۇلازىمىتىرنىڭ يۈكى ئېشىپ كەتتى.
+بۇ بەتنى بەك كۆپ ئىشلەتكۈچى كۆرۈشنى سىنىغانلىقتىن بولغان.
+بۇ بەتنى قايتا زىيارەت قىلىشتىن ئىلگىرى سەل كۈتۈڭ.
+
+$1',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '{{SITENAME}} ھەققىدە',
+'aboutpage' => 'Project:ھەققىدە',
+'copyright' => 'بۇ بېكەتتىكى بارلىق تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.',
+'copyrightpage' => '{{ns:project}}:نەشر ئۇچۇرى',
+'currentevents' => 'نۆۋەتتىكى ھادىسە',
+'currentevents-url' => 'Project:نۆۋەتتىكى ھادىسە',
+'disclaimers' => 'جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
+'disclaimerpage' => 'Project:ئادەتتىكى جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
+'edithelp' => 'تەھرىرلەش ياردىمى',
+'edithelppage' => 'Help:تەھرىرلەۋاتىدۇ',
+'helppage' => 'Help:مەزمۇنى',
+'mainpage' => 'باش بەت',
+'mainpage-description' => 'باش بەت',
+'policy-url' => 'Project:تاكتىكا',
+'portal' => 'ئىجتىمائى رايون باش بېتى',
+'portal-url' => 'Project:ئىجتىمائى رايون باش بېتى',
+'privacy' => 'شەخسىيەت تاكتىكىسى',
+'privacypage' => 'Project:شەخسىيەت تاكتىكىسى',
+
+'badaccess' => 'ھوقۇق چېكى خاتالىقى',
+'badaccess-group0' => 'سىزنىڭ بايىقى ئىلتىماسىڭىزنى ئىجرا قىلىشقا يول قويمايدۇ.',
+'badaccess-groups' => 'سىزنىڭ بايىقى ئىلتىماسىڭىزنى{{PLURAL:$2|بۇ گۇرۇپپا|بىر گۇرۇپپا}}: $1. نىڭ ئىشلەتكۈچىلىرىلا ئىشلىتەلەيدۇ: $1.',
+
+'versionrequired' => 'MediaWiki نىڭ $1 نەشرى زۆرۈر',
+'versionrequiredtext' => '$1 نەشرىدىكى MediaWiki بولغاندىلا ئاندىن بۇ بەتنى ئىشلىتەلەيدۇ.
+
+[[Special:Version|نەشر بېتى]] نى كۆرۈڭ.',
+
+'ok' => 'جەزملە',
+'retrievedfrom' => '"$1" دىن ئېرىشكەن',
+'youhavenewmessages' => 'سىزدە $1 ($2) بار.',
+'newmessageslink' => 'يېڭى ئۇچۇر',
+'newmessagesdifflink' => 'ئاخىرقى ئۆزگەرتىش',
+'youhavenewmessagesmulti' => '$1 يېڭى ئۇچۇرىڭىز بار',
+'editsection' => 'تەھرىر',
+'editold' => 'تەھرىر',
+'viewsourceold' => 'مەنبەنى كۆرسەت',
+'editlink' => 'تەھرىر',
+'viewsourcelink' => 'مەنبەنى كۆرسەت',
+'editsectionhint' => 'ئابزاس تەھرىر: $1',
+'toc' => 'مەزمۇنى',
+'showtoc' => 'كۆرسەت',
+'hidetoc' => 'يوشۇر',
+'thisisdeleted' => 'كۆرسەت ياكى ئەسلىگە كەلتۈر $1 ؟',
+'viewdeleted' => '$1 كۆرسەت؟',
+'restorelink' => '{{PLURAL:$1|بىر ئۆچۈرۈلگەن نەشرى|$1 ئۆچۈرۈلگەن نەشرى}}',
+'feedlinks' => 'قانال:',
+'feed-invalid' => 'ئىناۋەتسىز مۇشتەرى بولغان قانال تىپى.',
+'feed-unavailable' => 'بىرلەشمە قانال ئىناۋەتسىز',
+'site-rss-feed' => '$1 RSS قانالى',
+'site-atom-feed' => '$1 نىڭ Atom قانالى',
+'page-rss-feed' => '"$1" نىڭ RSS قانىلى',
+'page-atom-feed' => '"$1" نىڭ Atom قانىلى',
+'red-link-title' => '$1 (بەت مەۋجۇد ئەمەس)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'بەت',
+'nstab-user' => 'ئىشلەتكۈچى بېتى',
+'nstab-media' => 'ۋاسىتە بېتى',
+'nstab-special' => 'ئالاھىدە بەت',
+'nstab-project' => 'قۇرۇلۇش بېتى',
+'nstab-image' => 'ھۆججەت',
+'nstab-mediawiki' => 'ئۇچۇر',
+'nstab-template' => 'قېلىپ',
+'nstab-help' => 'ياردەم بەت',
+'nstab-category' => 'تۈر',
+
+# Main script and global functions
+'nosuchaction' => 'بۇنداق مەشغۇلات يوق',
+'nosuchactiontext' => 'بۇ مەشغۇلات بېكىتكەن URL ئىناۋەتسىز.
+
+URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلانمىغا ئەگەشتىڭىز.
+
+ {{SITENAME}} بېكەت يۇمشاق دېتالىنىڭ خاتالىقى بولۇشى مۇمكىن.',
+'nosuchspecialpage' => 'بۇنىڭغا ئوخشاش ئالاھىدە بەت يوق',
+'nospecialpagetext' => '<strong>سىز ئىلتىماس قىلغان ئالاھىدە بەت ئىناۋەتسىز.</strong>
+
+
+[[Special:SpecialPages|{{int:specialpages}}]] دە بارلىق ئىناۋەتلىك بەتلەر تىزىملىكى بار.',
+
+# General errors
+'error' => 'خاتالىق',
+'databaseerror' => 'ساندان خاتالىقى',
+'dberrortext' => 'ساندان سۈرۈشتۈرۈشتە گرامماتىكىلىق خاتالىق يۈز بەردى.
+يۇمشاق دېتالنىڭ ئۆزىدىكى خاتالىقتىن كېلىپ چىققان بولۇشى مۇمكىن.
+ئاخىرقى قېتىملىق ساندان سۈرۈشتۈرۈش بۇيرۇقى:
+<blockquote><tt>$1</tt></blockquote>
+ \\"<tt>$2</tt>\\"فۇنكسىيىدىن كەلگەن.
+MySQL قايتۇرغان خاتالىق \\"<tt>$3: $4</tt>\\".',
+'dberrortextcl' => 'ساندان سۈرۈشتۈرۈشتە گرامماتىكىلىق خاتالىق يۈز بەردى.
+ئاخىرقى قېتىملىق ساندان سۈرۈشتۈرۈش بۇيرۇقى:
+"$1"
+"$2" فۇنكسىيىدىن كەلگەن.
+MySQL قايتۇرغان خاتالىقى"$3: $4"',
+'laggedslavemode' => 'ئاگاھلاندۇرۇش: بەت يېقىنقى يېڭىلاشنى ئۆز ئىچىگە ئالمىغان بولۇشى مۇمكىن.',
+'readonly' => 'ساندان قۇلۇپلانغان',
+'enterlockreason' => 'قۇلۇپلىنىش سەۋەبىنى كىرگۈزۈڭ، قايتا ئېچىشنىڭ مۆلچەر ۋاقتىنىمۇ ئۆز ئىچىگە ئالىدۇ',
+'readonlytext' => 'نۆۋەتتە ساندان يېڭى مەزمۇن كىرگۈزۈش ياكى ئۆزگەرتىشنى چەكلەيدۇ، بۇ سانداننىڭ ئاسرىلىۋاتقانلىقىدىن بولۇشى مۇمكىن، تاماملانغاندىن كېيىنلا ئەسلىگە كېلىدۇ.
+
+
+باشقۇرغۇچىنىڭ تۆۋەندىكىدەك چۈشەندۈرۈشى بار: $1',
+'missing-article' => 'ساندان تور بەتتىن \\"$1\\" $2 ئاتلىق مەزمۇننى تاپالمىدى.
+
+ بۇ ئادەتتە ئۆزگەرتىش تارىخ بېتىدىكى ۋاقتى ئۆتكەن ئۇلانمىنىڭ ئۆچۈرۈلگەن بەتكە ئۇلانغانلىقىدىن كېلىپ چىقىدۇ.
+
+ ئەگەر بۇ خىل ئەھۋال بولمىسا، يۇمشاق دېتالنىڭ خاتالىقىدىن بىرنى بايقىغان بولۇشىڭىز مۇمكىن.
+ سىز URL ئادرېسنى خاتىرىلىۋېلىپ، [[Special:ListUsers/sysop|باشقۇرغۇچى]] غا مەلۇم قىلىڭ.',
+'missingarticle-rev' => '(تۈزىتىش#: $1)',
+'missingarticle-diff' => '(پەرق: $1، $2)',
+'readonly_lag' => 'قوشۇمچە ساندان مۇلازىمىتىر غەملەكنى ئاساسىي مۇلازىمىتىرغا يېڭىلاۋاتىدۇ، ساندان ئۆزلۈكىدىن قۇلۇپلاندى',
+'internalerror' => 'ئىچكى خاتالىق',
+'internalerror_info' => 'ئىچكى خاتالىق: $1',
+'fileappenderrorread' => 'قوشۇۋاتقاندا "$1" ئوقۇيالمىدى.',
+'fileappenderror' => '"$1" نى "$2" غا قوشالمىدى.',
+'filecopyerror' => '"$1" ھۆججەتنى"$2" غا كۆچۈرەلمىدى.',
+'filerenameerror' => '"$1" ھۆججەتنىڭ ئاتىنى "$2" غا ئۆزگەرتەلمىدى.',
+'filedeleteerror' => '"$1" ھۆججەتنى ئۆچۈرەلمىدى.',
+'directorycreateerror' => '"$1" مۇندەرىجىنى قۇرالمىدى.',
+'filenotfound' => '"$1" ھۆججەتنى تاپالمىدى.',
+'fileexistserror' => '"$1" ھۆججەتكە يازالمىدى: ھۆججەت مەۋجۇد',
+'unexpected' => 'كۈتۈلمىگەن قىممەت: "$1"="$2".',
+'formerror' => 'خاتالىق: جەدۋەلنى يوللىيالمىدى',
+'badarticleerror' => 'مەزكۇر بەتتە بۇ خىل مەشغۇلاتنى ئېلىپ بارغىلى بولمايدۇ.',
+'cannotdelete' => 'بەلگىلەنگەن "$1" ھۆججەت ياكى بەتنى ئۆچۈرەلمىدى.
+
+ئۇ باشقىلار تەرىپىدىن ئۆچۈرۈلگەن بولۇشى مۇمكىن.',
+'badtitle' => 'خاتا ماۋزۇ',
+'badtitletext' => 'ئىلتىماس قىلىنغان بەتنىڭ ماۋزۇسى ئىناۋەتسىز، مەۋجۇد ئەمەس، تىل ھالقىغان ياكى wiki ئۇلانمىسىدىن ھالقىغان ماۋزۇ خاتالىقى.
+ئۇ بىر ياكى بىر قانچە ماۋزۇغا ئىشلەتكىلى بولمايدىغان ھەرپنى ئۆز ئىچىگە ئالغان.',
+'perfcached' => 'تۆۋەندىكىسى غەملەك سانلىق مەلۇماتى، شۇڭلاشقا يېڭى بولماسلىقى مۇمكىن.',
+'perfcachedts' => 'تۆۋەندىكىسى غەملەك سانلىق مەلۇماتى، ئاخىرقى يېڭىلانغان ۋاقتى $1.',
+'querypage-no-updates' => 'نۆۋەتتە مەزكۇر بەتنى يېڭىلاش چەكلەندى.
+
+بۇ جايدىكى سانلىق مەلۇماتنى دەرھال يېڭىلىغىلى بولمايدۇ.',
+'wrong_wfQuery_params' => 'خاتا پارامېتىر wfQuery()<br />غا يوللاندى
+
+فونكسىيە: $1<br />
+
+سۈرۈشتۈرۈش: $2',
+'viewsource' => 'مەنبەنى كۆرسەت',
+'viewsourcefor' => '$1 نىڭ مەنبە كودى',
+'actionthrottled' => 'مەشغۇلات چەكلەندى',
+'actionthrottledtext' => 'ئەخلەتكە قارشى تۇرۇش ئۆلچىمىگە ئاساسەن، سىز بۇ بىر بۆلۈك قىسقا ۋاقىتتا بۇ مەشغۇلاتنى ئېلىپ بېرىشىڭىزنى چەكلىدى، ئەمما سىز بۇ چەكتىن ئېشىپ كەتتىڭىز.
+
+بىر قانچە مىنۇتتىن كېيىن قايتا سىناڭ.',
+'protectedpagetext' => 'بۇ بەت تەھرىرلەشنىڭ ئالدىنى ئېلىش ئۈچۈن قۇلۇپلانغان.',
+'viewsourcetext' => 'سىز بۇ بەتنى ئەسلى كودىنى كۆرەلەيسىز ۋە كۆچۈرەلەيسىز:',
+'protectedinterface' => 'بۇ بەت يۇمشاق دېتالنىڭ كۆرۈنۈش تېكستىنى تەمىنلىگەن، خالىغانچە تەھرىرلەشتىن ساقلىنىش ئۈچۈن قۇلۇپلانغان.',
+'editinginterface' => "'''ئاگاھلاندۇرۇش:''' سىز تەھرىرلەۋاتقان بەت يۇمشاق دېتالنىڭ كۆرۈنۈش تېكستىگە ئىشلىتىلىدۇ.
+
+بۇ بەت ئۆزگەرتىلسە باشقا ئىشلەتكۈچىلەرنىڭ كۆرۈنۈش ئۇسلۇبىغا تەسىر كۆرسىتىدۇ.
+
+مەسىلەن ئەگەر تەرجىمە قىلسىڭىز [http://translatewiki.net/wiki/Main_Page?setlang=ug translatewiki.net] ئۇنداقتا MediaWiki يەرلىكلەشتۈرۈش پىلانىنى ئىشلىتىشنى ئويلىشىڭ.",
+'sqlhidden' => '(SQL سۈرۈشتۈرۈش يوشۇرۇلدى)',
+'cascadeprotected' => 'بۇ بەت قوغدالغان چۈنكى تۆۋەندىكى {{PLURAL:$1|بىر|بىر قانچە}} بەت مەزكۇر بەتنى ئۆز ئىچىگە ئېلىش بىلەن بىللە "زەنجىرسىمان قوغداش" قوزغىتىلغان.
+
+$2',
+'namespaceprotected' => "سىزنىڭ '''$1''' ئات بوشلۇقىدىكى بەتنى تەھرىرلەش ھوقۇقىڭىز يوق.",
+'customcssjsprotected' => 'بۇ بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
+'ns-specialprotected' => 'ئالاھىدە بەتنى تەھرىرلىگىلى بولمايدۇ.',
+'titleprotected' => 'بۇ ماۋزۇ قايتا قۇرۇشتىن ساقلىنىش ئۈچۈن [[User:$1|$1]] تەرىپىدىن قوغدالغان.
+
+سەۋەبى"\'\'$2\'\'" .',
+
+# Virus scanner
+'virus-badscanner' => "بۇزۇلغان سەپلىمە: نامەلۇم ۋىرۇسخور: ''$1''",
+'virus-scanfailed' => 'تەكشۈرۈش مەغلۇپ بولدى (كودى $1)',
+'virus-unknownscanner' => 'نامەلۇم ۋىرۇسخور',
+
+# Login and logout pages
+'logouttext' => "'''ھازىر تىزىمدىن چىقتىڭىز.'''
+
+سىز نامسىز ھالەتتە {{SITENAME}} نى ئىشلىتەلەيسىز ياكى ئوخشاش ۋە ياكى ئوخشاش بولمىغان ئىشلەتكۈچى سالاھىيىتىدە [[Special:UserLogin|تىزىمغا كىر]]ەلەيسىز.
+دىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.",
+'welcomecreation' => '== $1! خۇش كەپسىز ==
+
+ھېساباتىڭىز قۇرۇلدى.
+
+[[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].',
+'yourname' => 'ئىشلەتكۈچى ئاتى:',
+'yourpassword' => 'ئىم:',
+'yourpasswordagain' => 'ئاچقۇچنى قايتا بەسىڭ:',
+'remembermypassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا',
+'yourdomainname' => 'دائىرە ئاتىڭىز:',
+'externaldberror' => 'بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.',
+'login' => 'تىزىمغا كىر',
+'nav-login-createaccount' => 'كىر / ھېسابات قۇر',
+'loginprompt' => 'سىز cookies نى قوزغاتقاندىلا ئاندىن {{SITENAME}} غا كىرەلەيسىز.',
+'userlogin' => 'تىزىمغا كىر/ھېسابات قۇر',
+'userloginnocreate' => 'تىزىمغا كىر',
+'logout' => 'تىزىمدىن چىق',
+'userlogout' => 'تىزىمدىن چىق',
+'notloggedin' => 'تىزىمغا كىرمىگەن',
+'nologin' => "ھېساباتىڭىز يوقمۇ؟ '''$1'''.",
+'nologinlink' => 'ھېساباتتىن بىرنى قۇر',
+'createaccount' => 'ھېسابات قۇر',
+'gotaccount' => "ھېساباتىم بار؟ '''$1'''.",
+'gotaccountlink' => 'تىزىمغا كىر',
+'createaccountmail' => 'ئېلخەتتە',
+'badretype' => 'سىز كىرگۈزگەن ئىم ماس كەلمىدى.',
+'userexists' => 'كىرگۈزگەن ئىشلەتكۈچى ئاتى ئىشلىتىلىۋاتىدۇ.
+باشقا ئاتنى تاللاڭ.',
+'loginerror' => 'تىزىمغا كىرىش خاتالىقى',
+'createaccounterror' => 'ھېسابات قۇرالمىدى: $1',
+'nocookiesnew' => 'ئىشلەتكۈچى ھېساباتى قۇرۇلدى ئەمما سىز تېخى كىرمىدىڭىز..
+
+{{SITENAME}} تور بېكىتى تىزىمغا كىرگەن ئىشلەتكۈچىلەرگە cookies ئىشلىتىدۇ .
+
+سىز cookies نى چەكلىگەن.
+
+ئۇنى قوزغىتىپ، يېڭى ئىشلەتكۈچى ئاتى ۋە ئىم بىلەن تىزىمغا كىرىڭ.',
+'nocookieslogin' => '{{SITENAME}} تور بېكىتى تىزىمغا كىرگەن ئىشلەتكۈچىلەرگە cookies ئىشلىتىدۇ .
+
+سىز cookies نى چەكلىگەن.
+
+ئۇنى قوزغىتىپ قايتا سىناڭ.',
+'noname' => 'سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى ئاتىنى بەلگىلىمىدىڭىز.',
+'loginsuccesstitle' => 'تىزىمغا كىرىش مۇۋەپپەقىيەتلىك',
+'loginsuccess' => "'''سىز {{SITENAME}} غا \"\$1\" سالاھىيىتىدە كىردىڭىز.'''",
+'nosuchuser' => '"$1" ئاتلىق ئىشلەتكۈچىنى تاپالمىدى.
+ئىشلەتكۈچى ئاتىنى تەكشۈرۈڭ.
+ياكى [[Special:UserLogin/signup|يېڭى ھېسابات قۇرۇڭ]].',
+'nosuchusershort' => ' "<nowiki>$1</nowiki>" ئاتلىق ئىشلەتكۈچى يوق.
+كىرگۈزگىنىڭىزنى تەكشۈرۈڭ.',
+'nouserspecified' => 'ئىشلەتكۈچى ئاتىدىن بىرنى بەلگىلەڭ.',
+'login-userblocked' => 'بۇ ئىشلەتكۈچى چەكلەنگەن. تىزىمغا كىرىشكە يول قويۇلمايدۇ.',
+'wrongpassword' => 'كىرگۈزگەن ئىم خاتا.
+قايتا سىناڭ.',
+'wrongpasswordempty' => 'ئىم كىرگۈزمىدىڭىز
+قايتا سىناڭ.',
+'passwordtooshort' => 'ئىم ئاز دېگەندە {{PLURAL:$1|1 ھەرپ|$1 ھەرپ}} بولۇشى لازىم.',
+'password-name-match' => 'ئىم ئىشلەتكۈچى ئاتىڭىزدىن پەرقلىنىشى لازىم.',
+'mailmypassword' => 'يېڭى ئىمنى ئېخەتكە ئەۋەت',
+'passwordremindertitle' => '{{SITENAME}} ئۈچۈن يېڭى ۋاقىتلىق ئىم',
+'passwordremindertext' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
+{{SITENAME}} بېكەتنىڭ يېڭى ئىم ($4) نى ئىلتىماس قىلدى .
+ "$2" ئىشلەتكۈچىنىڭ يېڭى ۋاقىتلىق ئىمنى "$3" غا تەڭشىدى.
+ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى ئىم {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
+
+ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز،
+
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
+'noemail' => '"$1" ئىشلەتكۈچىنىڭ ئېلخەت ئادرېسى خاتىرىلەنمەپتۇ.',
+'noemailcreate' => 'ئىناۋەتلىك ئېلخەت ئادرېسىدىن بىرنى تەمىنلىشىڭىز لازىم.',
+'passwordsent' => 'يېڭى ئىم "$1" ئىشلەتكۈچى تىزىملاتقاندا قالدۇرغان ئېلخەتكە يوللاندى..
+ئېلخەتنى كۆرۈپ ئاندىن تىزىمغا كىرىڭ.',
+'blocked-mailpassword' => 'IP ئادرېسىڭىز تەھرىرلەشتىن چەكلەنگەن ھالەتتە، بىخەتەرلىك سەۋەبىدىن ئىم ئەسلىگە كەلتۈرۈش ئىقتىدارى چەكلەندى.',
+'eauthentsent' => 'جەزملەش ئېلخىتى تەۋسىيە قىلىنغان ئادرېسقا ئەۋەتىلدى .
+بۇ ھېساباتقا باشقا ئېلخەت ئەۋەتىشتىن ئىلگىرى، سىز ئالدى بىلەن بۇ خەتتىكى يېتەكچىگە ئاساسەن ئېلخەت ئادرېسىنىڭ ھەقىقىي ئىكەنلىكىنى جەزملىشىڭىز لازىم.',
+'throttled-mailpassword' => 'ئىم ئەسكەرتىش {{PLURAL:$1|سائەت|$1 سائەت}} ئىچىدە يوللىنىدۇ.
+بىخەتەرلىك يۈزىسىدىن ھەر {{PLURAL:$1|سائەت|$1 سائەت}}تە پەقەت بىرلا ئېلخەت ئەسكەرتىشى ئەۋەتىدۇ.',
+'mailerror' => 'ئېلخەت يوللىغاندا خاتالىق كۆرۈلدى:$1',
+'acct_creation_throttle_hit' => 'Wiki ئىشلىتىدىغان زىيارەتچى IP ئادرېسىڭىزنى ئىشلىتىپ {{PLURAL:$1|1 ھېسابات|$1 ھېسابات}} قۇردى.
+مۇشۇ پەيتتە يەنە ھېسابات قۇرالمايسىز.',
+'emailauthenticated' => 'ئېلخەت ئادرېسىڭىز $2 $3 ئىناۋەتلىك ئىكەنلىكى دەلىللەندى.',
+'emailnotauthenticated' => 'ئېلخەت ئادرېسىڭىز تېخى دەلىللەنمىدى.
+تۆۋەندىكى ئىقتىدارى ھېچقانداق ئېلخەت ئەۋەتمەيدۇ.',
+'noemailprefs' => 'بۇ ئىقتىدارنى ئىشلىتىش ئۈچۈن مايىللىق تەڭشىكىڭىزدە ئېلخەت ئادرېسى بەلگىلەڭ.',
+'emailconfirmlink' => 'ئېلخەت ئادرېسىڭىزنى جەزملەڭ',
+'invalidemailaddress' => 'ئېلخەت ئادرېس فورماتى خاتا.
+توغرا ئېلخەت ئادرېسى كىرگۈزۈڭ ياكى بۇ جاينى بوش قالدۇرۇڭ.',
+'accountcreated' => 'ھېسابات قۇرۇلدى',
+'accountcreatedtext' => '$1 نىڭ ھېساباتى قۇرۇلدى.',
+'createaccount-title' => '{{SITENAME}} دا يېڭى ھېسابات قۇر',
+'createaccount-text' => 'بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، "$2" ئاتلىق ($4) يېڭى ھېسابات قۇردى، ئىم "$3".
+سىز تىزىمغا كىرىپ ئىم ئۆزگەرتىڭ.
+
+ئەگەر بۇ ھېسابات خاتا قۇرۇلغان بولسا بۇ ئۇچۇرغا پەرۋا قىلماڭ.',
+'usernamehasherror' => 'ئىشلەتكۈچى ئاتىدا مۇكەممەللىك كود ھەرپلىرى بولماسلىقى لازىم',
+'login-throttled' => 'سىز بۇ ھېساباتنىڭ ئىمنى كۆپ قېتىم سىنىدىڭىز.
+سەل تەخىر قىلىپ، ئاندىن قايتا سىناڭ.',
+'loginlanguagelabel' => 'تىل: $1',
+'suspicious-userlogout' => 'تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.',
+
+# Password reset dialog
+'resetpass' => 'ئىم ئۆزگەرت',
+'resetpass_announce' => 'سىز ۋاقىتلىق ئېلخەت جەزملەش كودىدا تىزىمغا كىرگەن.
+تىزىمغا كىرىشنى تاماملاشتا، بۇ جايدا يېڭى ئىم بەلگىلىشىڭىز لازىم:',
+'resetpass_header' => 'ھېسابات ئىمنى ئۆزگەرت',
+'oldpassword' => 'كونا ئىم:',
+'newpassword' => 'يېڭى ئىم:',
+'retypenew' => 'يېڭى ئىمنى قايتا كىرگۈزۈڭ:',
+'resetpass_submit' => 'ئىم بەلگىلەپ تىزىمغا كىرىڭ',
+'resetpass_success' => 'سىز ئىمنى مۇۋەپپەقىيەتلىك ئۆزگەرتتىڭىز!
+ تىزىمغا كىرىۋاتىسىز…',
+'resetpass_forbidden' => 'ئىمنى ئۆزگەرتەلمىدى',
+'resetpass-no-info' => 'سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.',
+'resetpass-submit-loggedin' => 'ئىم ئۆزگەرت',
+'resetpass-submit-cancel' => 'ۋاز كەچ',
+'resetpass-wrong-oldpass' => 'ۋاقىتلىق ياكى نۆۋەتتىكى ئىم ئىناۋەتسىز.
+
+ئىمنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى يېڭى ۋاقىتلىق ئىم ئىلتىماس قىلدىڭىز.',
+'resetpass-temp-password' => 'ۋاقىتلىق ئىم:',
+
+# Edit page toolbar
+'bold_sample' => 'توم خەت',
+'bold_tip' => 'توم خەت',
+'italic_sample' => 'يانتۇ خەت',
+'italic_tip' => 'يانتۇ خەت',
+'link_sample' => 'ئۇلانما ماۋزۇ',
+'link_tip' => 'ئىچكى ئۇلانما',
+'extlink_sample' => 'http://www.example.com ئۇلانما ماۋزۇسى',
+'extlink_tip' => 'سىرتقى ئۇلانما (http:// ئالدى قوشۇلغۇچى قوشۇڭ)',
+'headline_sample' => 'ماۋزۇ تېكستى',
+'headline_tip' => '2- دەرىجىلىك ماۋزۇ',
+'math_sample' => 'بۇ جايغا فورمۇلا قىستۇر',
+'math_tip' => 'ماتېماتېكىلىق فورمۇلا (LaTeX)',
+'nowiki_sample' => 'فورماتى يوق تېكست قىستۇر',
+'nowiki_tip' => 'wiki فورماتىغا پەرۋا قىلما',
+'image_tip' => 'سىڭدۈرمە ھۆججەت',
+'media_tip' => 'ھۆججەت ئۇلىنىشى',
+'sig_tip' => 'ۋاقىت تامغىلىق ئىمزايىڭىز',
+'hr_tip' => 'توغرىسىغا سىزىق (ئېھتىيات بىلەن ئىشلىتىڭ)',
+
+# Edit pages
+'summary' => 'مۇھىم مەزمۇن:',
+'subject' => 'تېما/ماۋزۇ:',
+'minoredit' => 'بۇ ئازراقلا تەھرىرلەش',
+'watchthis' => 'بۇ بەتنى كۆزەت',
+'savearticle' => 'بەت ساقلا',
+'preview' => 'ئالدىن كۆزەت',
+'showpreview' => 'ئالدىن كۆزىتىشنى كۆرسەت',
+'showlivepreview' => 'رىئال ۋاقىتلىق ئالدىن كۆزىتىش',
+'showdiff' => 'ئۆزگەرتىشنى كۆرسەت',
+'anoneditwarning' => "'''ئاگاھلاندۇرۇش:''' سىز تېخى كىرمىدىڭىز.
+ سىزنىڭ IP ئادرېسىڭىز بۇ بەتنىڭ تەھرىرلەش تارىخىغا خاتىرىلىنىدۇ.",
+'missingsummary' => "'''ئەسكەرتىش:''' سىز تەھرىرلەش ئۈزۈندىسى تەمىنلىمىدىڭىز. .
+ئەگەر ساقلانى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ئۈزۈندە يوق ھالەتتە ساقلايدۇ.",
+'missingcommenttext' => 'تۆۋەندە ئىزاھات كىرگۈزۈڭ.',
+'missingcommentheader' => "'''ئەسكەرتىش:''' سىز ئىزاھاتقا ماۋزۇ تەمىنلىمىدىڭىز.
+ئەگەر ساقلانى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ماۋزۇسىز ھالەتتە ساقلايدۇ.",
+'summary-preview' => 'ئۈزۈندە ئالدىن كۆزىتىش:',
+'subject-preview' => 'تېما/ماۋزۇنى ئالدىن كۆزەت:',
+'blockedtitle' => 'ئىشلەتكۈچى چەكلەنگەن',
+'blockedtext' => "'''ئىشلەتكۈچى ئاتىڭىز ياكى IP ئادرېسىڭىزنى $1 چەكلىگەن .'''
+
+ بۇنى $1 چەكلىگەن.
+سەۋەبى ''$2''.
+
+* چەكلەش باشلانغان ۋاقىت: $8
+* چەكلەش ئاخىرلىشىدىغان ۋاقىت: $6
+* چەكلەنگۈچى: $7
+
+ $1 بىلەن ئالاقىلىشىڭ ياكى باشقا [[{{MediaWiki:Grouppage-sysop}}|باشقۇرغۇچى]] بىلەن بۇ قېتىملىق چەكلەشنى سۆزلىشىشڭ.
+سىز [[Special:Preferences|ھېسابات مايىللىقى]] تەڭشىكىڭىزدە ئىناۋەتلىك ئېلخەت ئادرېسى بەلگىلىمىگەن بولسىڭىز، 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا' ئىقتىدارىنى ئىشلىتەلمەيسىز. ئىناۋەتلىك ئېلخەتتىن بىرنى بەلگىلىگەندىن كېيىن، بۇ ئىقتىدار چەكلەنمەيدۇ.
+سىزنىڭ نۆۋەتتىكى IP ئادرېسىڭىز $3، چەكلەنگەن كىملىك #$5.
+سوئالىڭىزدا يۇقىرىقى بارلىق ماتېرىياللارنى ئىزاھلاڭ.",
+'autoblockedtext' => "IP ئادرېسىڭىز ئاپتوماتىك چەكلەنگەن، چۈنكى ئىلگىرى باشقا بىر ئىشلەتكۈچىنى $1 چەكلىگەن.
+چەكلەش سەۋەبى:
+
+''$2''.
+
+* چەكلەش باشلانغان ۋاقىت: $8
+* چەكلەش ئاخىرلىشىدىغان ۋاقىت: $6
+* چەكلەنگۈچى: $7
+
+ $1 بىلەن ئالاقىلىشىڭ ياكى باشقا [[{{MediaWiki:Grouppage-sysop}}|باشقۇرغۇچى]] بىلەن بۇ قېتىملىق چەكلەشنى سۆزلىشىشڭ.
+سىز [[Special:Preferences|ھېسابات مايىللىقى]] تەڭشىكىڭىزدە ئىناۋەتلىك ئېلخەت ئادرېسى بەلگىلىمىگەن بولسىڭىز، 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا' ئىقتىدارىنى ئىشلىتەلمەيسىز. ئىناۋەتلىك ئېلخەتتىن بىرنى بەلگىلىگەندىن كېيىن، بۇ ئىقتىدار چەكلەنمەيدۇ.
+سىزنىڭ نۆۋەتتىكى IP ئادرېسىڭىز $3، چەكلەنگەن كىملىك #$5.
+سوئالىڭىزدا يۇقىرىقى بارلىق ماتېرىياللارنى ئىزاھلاڭ.",
+'blockednoreason' => 'سەۋەبى يوق',
+'blockedoriginalsource' => "تۆۋەندىكىسى '''$1''' نىڭ ئەسلى كودى:",
+'blockededitsource' => "سىزنىڭ '''$1''' غا ئېلىپ بارغان '''تەھرىرىڭىز'''نىڭ تېكستى تۆۋەندىكىچە:",
+'whitelistedittitle' => 'تىزىمغا كىرگەندىن كېيىن تەھرىرلىگىلى بولىدۇ',
+'whitelistedittext' => 'سىزدە $1 بولغاندا ئاندىن بەتنى تەھرىرلىيەلەيسىز.',
+'confirmedittext' => 'سىز بۇ بەتنى تەھرىرلەشتىن ئىلگىرى ئېلخەت ئادرېسىڭىزنى جەزملەڭ.
+[[Special:Preferences|ئىشلەتكۈچى مايىللىق]] ئارقىلىق تەڭشەپ ئېلخەت ئادرېسىڭىزنى دەلىللەڭ.',
+'nosuchsectiontitle' => 'بۇنداق ئابزاس تېپىلمىدى',
+'nosuchsectiontext' => 'سىز تەھرىرلىمەكچى بولغان ئابزاس مەۋجۇد ئەمەس.
+سىز ئۇ بەتنى كۆرۈۋاتقاندا يۆتكەلگەن ياكى ئوچۈرۈلگەن بولۇشى مۇمكىن.',
+'loginreqtitle' => 'تىزىمغا كىرىڭ',
+'loginreqlink' => 'تىزىمغا كىر',
+'loginreqpagetext' => '$1 بولغاندىلا ئاندىن باشقا بەتلەرنى كۆرەلەيسىز.',
+'accmailtitle' => 'ئىم يوللاندى.',
+'accmailtext' => "[[User talk:$1|$1]] ئىختىيارىي قۇرۇلغان ئىم $2 غا يوللاندى.
+
+يېڭى ھېساباتقا قۇرغان ئىمنى تىزىمغا كىرىپ''[[Special:ChangePassword|ئىم ئۆزگەرت]]'' بېتىدىن ئۆزگەرتەلەيسىز.",
+'newarticle' => '(يېڭى)',
+'newarticletext' => 'سىز تېخى قۇرۇلمىغان بەتكە كىردىڭىز.
+ بۇ بەتنى قۇرسىڭىز، تۆۋەندىكى تەھرىرلەش رامكىسىغا مەزمۇن كىرگۈزۈڭ(تەپسىلاتىنى [[{{MediaWiki:Helppage}}|ياردەم بېتى]]دىن كۆرۈڭ)',
+'anontalkpagetext' => "----''بۇ تېخى ھېسابات قۇرمىغان ئاتسىز ئىشلەتكۈچىنىڭ مۇنازىرە بېتى ياكى ئۇنى ئىشلەتمەڭ..
+بىز ئۇنىڭ بىلەن پەقەت IP ئادرېسى بىلەنلا ئالاقە قىلالايمىز..
+بۇ خىل IP ئادرېسنى بىر قانچە ئىشلەتكۈچى ئىشلىتىشى ئورتاق ئىشلىتىشى مۇمكىن.
+ئەگەر سىز ئاتسىز ئىشلەتكۈچى بولسىڭىز ھەمدە بۇ بەتتىكى مۇنازىرە سىز بىلەن مۇناسىۋەتلىك بولسا، [[Special:UserLogin/signup|ھېسابات قۇر]] ياكى [[Special:UserLogin|تىزىمغا كىر]] ئارقىلىق كەلگۈسىدىكى باشقا ئاتسىز ئىشلەتكۈچى بىلەن ئارىلىشىپ كېتىشنىڭ ئالدىنى ئېلىڭ.''",
+'noarticletext' => 'بۇ بەتتە ھازىرچە مەزمۇن يوق.
+ سىز باشقا بەتتە [[Special:Search/{{PAGENAME}}|بۇ بەتنىڭ ماۋزۇسىنى ئىزدىيەلەيسىز]] ياكى
+<span class=\\"plainlinks\\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} مۇناسىۋەتلىك خاتىرىسىنى ئىزدىيەلەيسىز،],
+[{{fullurl:{{FULLPAGENAME}}|action=edit}} بۇ بەتنى تەھرىرلىيەلەيسىز]</span>',
+'noarticletext-nopermission' => 'بۇ بەتتە ھازىرچە مەزمۇن يوق.
+ سىز باشقا بەتتە [[Special:Search/{{PAGENAME}}|بۇ بەتنىڭ ماۋزۇسىنى ئىزدىيەلەيسىز]] ياكى <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] مۇناسىۋەتلىك خاتىرىسىنى ئىزدىيەلەيسىز،</span>',
+'userpage-userdoesnotexist' => '"$1" ئىشلەتكۈچى خەتلەتمىگەن.
+بۇ بەتنى قۇرۇش/تەھرىرلەشتىن ئىلگىرى تەكشۈرۈپ بېقىڭ.',
+'userpage-userdoesnotexist-view' => '"$1" ئىشلەتكۈچى ھېساباتى خەتلەتمىگەن.',
+'blocked-notice-logextract' => 'بۇ ئىشلەتكۈچى نۆۋەتتە چەكلەنگەن.
+پايدىلىنىش ئۈچۈن يېقىنقى تۆۋەندە چەكلەش خاتىرە تۈرلىرى تەمىنلەندى:',
+'clearyourcache' => "'''دىققەت - ساقلىغاندىن كېيىن، تور كۆرگۈنىڭ غەملىكىنى تازىلىغاندىن كېيىنلا ئاندىن ئېلىپ بارغان ئۆزگەرتىشنى كۆرەلەيسىز.'''
+'''Mozilla / Firefox / Safari:''' دا ''Shift'' كۇنۇپكىسىنى بېسىپ تۇرۇپ ''قايتا يۈكلە''نى ياكى ''Ctrl-F5'' ياكى ''Ctrl-R'' (''Macintosh تا Command-R'');
+'''Konqueror: دا ''' ''قايتا يۈكلە'' ياكى ''F5'';
+'''Opera:''' دا ''قورال → مايىللىق'';
+'''Internet Explorer:''' دا ''Ctrl'' نى بېسىپ تۇرۇپ ''يېڭىلا,'' ياكى ''Ctrl-F5'' نى بېسىڭ.",
+'usercssyoucanpreview' => "ئەسكەرتىش:''' ساقلاشتىن ئىلگىرى \"{{int:showpreview}}\" توپچىنى ئىشلىتىپ يېڭى CSS نى سىناڭ.",
+'userjsyoucanpreview' => "ئەسكەرتىش:''' ساقلاشتىن ئىلگىرى \"{{int:showpreview}}\" توپچىنى ئىشلىتىپ يېڭى JS نى سىناڭ.",
+'usercsspreview' => "'''دىققەت سىز پەقەت ئۆزىڭىزنىڭ شەخسىي CSS نى ئالدىن كۆزىتىۋاتىسىز.'''
+'''ئۇ تېخى ساقلانمىدى!'''",
+'userjspreview' => "'''دىققەت سىز پەقەت ئۆزىڭىزنىڭ شەخسىي JavaScript نى ئالدىن كۆزىتىۋاتىسىز/سىناۋاتىسىز.'''
+'''ئۇ تېخى ساقلانمىدى!'''",
+'userinvalidcssjstitle' => "'''ئاگاھلاندۇرۇش:''' تېرە\\\"\$1\" مەۋجۇد ئەمەس.
+ئادەتلەنگەن .css ۋە .js تور بەت ماۋزۇسىغا كىچىك يېزىلىشتىكى ھەرپ ئىشلىتىلىدۇ، مەسىلەن، {{ns:user}}:Foo/monobook.css بىلەن {{ns:user}}:Foo/Monobook.css ئوخشاش ئەمەس.",
+'updated' => '(يېڭىلاندى)',
+'note' => "'''ئىزاھات:'''",
+'previewnote' => "'''ئېسىڭىزدە بولسۇنكى بۇ پەقەتلا ئالدىن كۆزىتىش.'''
+ئۆزگەرتكەن مەزمۇنىڭىز تېخى ساقلانمىدى!",
+'previewconflict' => 'بۇ ئالدىن كۆزىتىشتە ئۈستىدىكى تېكست تەھرىرلەش رايونىدىكى مەزمۇننى كۆرسەتتى. ئۇ ساقلانى تاللىغاندىن كېيىن كۆرۈنىدۇ.',
+'session_fail_preview' => "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''
+قايتا سىناڭ.
+ئەگەر يەنىلا مەغلۇپ بولسا، [[Special:UserLogout|تىزىمدىن چىق]]قاندىن كېيىن قايتا تىزىمغا كىرىڭ.",
+'session_fail_preview_html' => "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''
+
+''چۈنكى {{SITENAME}} بېكىتى ئەسلى HTML ئىشلىتىشكە يول قويىدۇ، JavaScript ھۇجۇمىنىڭ ئالدىنى ئېلىش ئۈچۈن، ئالدىن كۆزىتىش يوشۇرۇلدى.''
+
+'''ئەگەر بۇ قانۇنلۇق تەھرىرلەش بولسا قايتا سىناڭ'''
+ئەگەر ئۇنداق بولمىسا [[Special:UserLogout|تىزىمدىن چىق]]ىپ قايتا تىزىمغا كىرىڭ.",
+'token_suffix_mismatch' => "'''سىزنىڭ ئىشلەتكۈچى تەرەپتىكى تەھرىر بۇيرۇقى بىر قىسىم تىنىش بەلگىلىرىنى بۇزۇۋەتتى، '''
+بەتتىكى تەھرىرلەۋاتقان تېكستنىڭ بۇزۇلۇشىنىڭ ئالدىنى ئېلىش ئۈچۈن تەھرىرىڭىز رەت قىلىندى.
+بۇ خىل ئەھۋال ئادەتتە نۇرغۇن خاتالىق بار تورنى ئاساس قىلغان ئاتسىز ۋاكالەتچىنى ئىشلەتكەندە كۆرۈلىدۇ.",
+'editing' => '$1 تەھرىرلەۋاتىدۇ',
+'editingsection' => '$1 تەھرىرلەۋاتىدۇ (ئابزاس)',
+'editingcomment' => '$1 تەھرىرلەۋاتىدۇ (يېڭى ئابزاس)',
+'editconflict' => 'تەھرىر توقۇنۇشى: $1',
+'explainconflict' => "سىز بۇ بەتنى تەھرىرلەشكە باشلىغاندا باشقىلار ئۆزگەرتتى.
+ئۈستىدىكى تېكست رامكىسىدا كۆرۈنگىنى نۆۋەتتىكى بەتتىكى مەزمۇن.
+سىزنىڭ ئۆزگەرتىشىڭىز تۆۋەندىكى تېكست رامكىسىدا كۆرۈنىدۇ.
+ئۆزگەرتىشىڭىزنى نۆۋەتتىكى مەزمۇنغا قوشۇڭ.
+'''پەقەت ''' ئۈستىدىكى تېكست رامكىسىدىكى مەزمۇن \"بەت ساقلا\"نى چەككەندىن كېيىنلا ئاندىن ساقلىنىدۇ.",
+'yourtext' => 'تېكستىڭىز',
+'storedversion' => 'ساقلانغان ئۆزگەرتىلگەن نەشرى',
+'nonunicodebrowser' => "'''ئاگاھلاندۇرۇش: تور كۆرگۈڭىز يۇنىكودنى قوللىمايدۇ.'''
+بۇ جايدىكى خىزمەت رايونىدا بەتنى بىخەتەر ھالدا تەھرىرلىيەلەيسىز: غەيرى ASCII ھەرپلىرى ئون ئالتىلىك كودلىنىش بويىچە تېكست رامكىسىدا كۆرۈنىدۇ.",
+'editingold' => "'''ئاگاھلاندۇرۇش: تەھرىرلەۋاتقىنىڭىز بۇ بەتنىڭ كونا نەشرى.'''
+ئەگەر ئۇنى ساقلىسىڭىز، مەزكۇر نەشرىدىن كېيىنكى ھەر قانداق ئۆزگەرتىش يوقاپ كېتىدۇ.",
+'yourdiff' => 'پەرقلەر',
+'copyrightwarning' => "دىققەت، سىزنىڭ {{SITENAME}} دىكى بارلىق تۆھپىلىرىڭىز $2 دا ئېلان قىلىنىدۇ دەپ قارىلىدۇ ($1 نىڭ تەپسىلاتىدىن كۆرۈڭ).
+ئەگەر يازمىڭىزنىڭ خالىغانچە ئۆزگەرتىلىشى ياكى قايتا تارقىلىشىنى خالىمىسىڭىز، يوللىماڭ. <br />
+ سىز يوللىغان مەزمۇننىڭ ئۆزىڭىزنىڭ يازغانلىقى ياكى يەرلىك تور دائىرىسىدىن ياكى ئەركىن مەنبەدىن كەلگەنلىكىگە كاپالەتلىك قىلىڭ.
+'''ئىجازەتكە ئېرىشمەي تۇرۇپ يوللىماڭ!'''",
+'copyrightwarning2' => "دىققەت، سىزنىڭ {{SITENAME}} دىكى بارلىق تۆھپىلىرىڭىزنىڭ ھەممىسى باشقىلار تەرىپىدىن تەھرىرلىنىپ، ئۆزگەرتىلىپ ياكى ئۆچۈرۈلۈشى مۇمكىن.
+ئەگەر يازمىڭىزنىڭ خالىغانچە ئۆزگەرتىلىشى ياكى قايتا تارقىلىشىنى خالىمىسىڭىز، يوللىماڭ. <br />
+ سىز يوللىغان مەزمۇننىڭ ئۆزىڭىزنىڭ يازغانلىقى ياكى يەرلىك تور دائىرىسىدىن ياكى ئەركىن مەنبە ($1 دىكى تەپسىلاتنى كۆرۈڭ) دىن كەلگەنلىكىگە كاپالەتلىك قىلىڭ.
+'''ئىجازەتكە ئېرىشمەي تۇرۇپ يوللىماڭ!'''",
+'longpagewarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەتنىڭ چوڭلۇقى $1 كىلوبايت؛
+بەزى تور كۆرگۈ چوڭلۇقى 32kb غا يېقىنلاشقان ياكى چوڭ بولغان بەتنى تەھرىرلىگەندە مەسىلە كۆرۈلۈشى مۇمكىن.
+بۇ بەتنى تېخىمۇ كۆپ كىچىك بۆلەككە بۆلۈشنى ئويلىشىپ بېقىڭ.",
+'longpageerror' => "'''خاتالىق: سىز يوللىغان تېكستنىڭ چوڭلۇقى $1 كىلوبايت، بۇ $2 كىلوبايتلىق ئەڭ چوڭ قىممەتتىن ئېشىپ كەتتى.'''
+ئۇنى ساقلىغىلى بولمايدۇ.",
+'readonlywarning' => "'''ئاگاھلاندۇرۇش: ساندان قۇلۇپلىنىپ ئاسرىلىۋاتىدۇ، شۇڭلاشقا ئۆزگەرتىشىڭىزنى ساقلىيالمايسىز.'''
+سىز بۇ تېكستنى كۆچۈرۈپ تېكست ھۆججىتىگە ساقلاپ، سەل تۇرۇپ ئاندىن ئۆزگەرتىڭ.
+
+باشقۇرغۇچىنىڭ چۈشەندۈرۈشى تۆۋەندىكىچە: $1",
+'protectedpagewarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت قۇلۇپلانغان شۇڭلاشقا باشقۇرغۇچى ھوقۇقىغا ئىگە ئىشلەتكۈچىلا ئۇنى ئۆزگەرتەلەيدۇ. پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
+'semiprotectedpagewarning' => "'''دىققەت:''' بۇ بەت قۇلۇپلانغان شۇڭلاشقا خەتلەتكەن ئىشلەتكۈچىلا ئۇنى تەھرىرلىيەلەيدۇ.
+ پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
+'cascadeprotectedwarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت قۇلۇپلانغان، پەقەت باشقۇرغۇچى ھوقۇقى بار ئىشلەتكۈچىلەرلا تەھرىرلىيەلەيدۇ، چۈنكى بۇ بەت تۆۋەندىكى زەنجىرسىمان قۇلۇپلانغان {{PLURAL:$1| بىر| بىر قانچە}} بەتنى ئۆز ئىچىگە ئالىدۇ:",
+'titleprotectedwarning' => "'''ئاگاھلاندۇرۇش: بۇ بەت قۇلۇپلانغان شۇڭلاشقا [[Special:ListGroupRights|بەلگىلەنگەن ھوقۇق]] بولغاندىلا قۇرغىلى بولىدۇ.'''
+پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
+'templatesused' => 'بۇ بەتتە ئىشلىتىلگەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
+'templatesusedpreview' => 'بۇ قېتىملىق ئالدىن كۆزىتىشكە ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
+'templatesusedsection' => 'بۇ ئابزاستا ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
+'template-protected' => '(قوغدالغان)',
+'template-semiprotected' => '(يېرىم قوغدالغان)',
+'hiddencategories' => 'بۇ بەت {{PLURAL:$1|1 يوشۇرۇن تۈر|$1 يوشۇرۇن تۈر}} نىڭ ئەزالىرىغا تەۋە:',
+'nocreatetitle' => 'بەت قۇرۇش چەكلىمىسى',
+'nocreatetext' => '{{SITENAME}} يېڭى بەت قۇرۇش ئىقتىدارىنى چەكلىگەن.
+كەينىگە قايتىپ مەۋجۇد بەتنى تەھرىرلىيەلەيسىز ياكى [[Special:UserLogin|تىزىمغا كىر ياكى يېڭى بىر ھېسابات قۇر]]الايسىز.',
+'nocreate-loggedin' => 'يېڭى بەت قۇرۇش ھوقۇقىڭىز يوق.',
+'sectioneditnotsupported-title' => 'ئابزاس تەھرىرلەشنى قوللىمايدۇ',
+'sectioneditnotsupported-text' => 'بۇ بەت ئابزاس تەھرىرلەشنى قوللىمايدۇ.',
+'permissionserrors' => 'ھوقۇق چېكى خاتالىقى',
+'permissionserrorstext' => 'تۆۋەندىكى {{PLURAL:$1|سەۋەپ|سەۋەپ}}: تۈپەيلىدىن تۆۋەندىكى مەشغۇلاتنى ئېلىپ بېرىش ھوقۇقىڭىز يوق.',
+'permissionserrorstext-withaction' => '{{PLURAL:$1|سەۋەب|سەۋەبلەر}} تۈپەيلىدىن $2 مەشغۇلاتى ئېلىپ بېرىش ھوقۇقىڭىز يوق:',
+'recreate-moveddeleted-warn' => "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى قۇرۇۋاتىسىز.'''
+
+بۇ ھۆججەتنى قايتا يۈكلەشنىڭ مۇۋاپىق ياكى ئەمەسلىكىنى ئويلىنىپ بېقىڭ.
+قولايلىق بولۇشى ئۈچۈن بۇ ھۆججەتنىڭ ئۆچۈرۈش خاتىرىسى تۆۋەندە تەمىنلەندى:",
+'moveddeleted-notice' => 'بۇ بەت ئۆچۈرۈلگەن.
+بۇ بەتنىڭ ئۆچۈرۈش ۋە يۆتكەش خاتىرىسى پايدىلىنىش ئۈچۈن تۆۋەندە كۆرسىتىلدى.',
+'log-fulllog' => 'تولۇق خاتىرىنى كۆرسەت',
+'edit-hook-aborted' => 'تەھرىر ئىلمەك تەرىپىدىن چېكىندۈرۈلدى
+ئۇ سەۋەبىنى تەمىنلىمىدى.',
+'edit-gone-missing' => 'بۇ بەتنى يېڭىلىيالمايدۇ.
+ئۇ بايىلا ئۆچۈرۈلگەن بولۇشى مۇمكىن.',
+'edit-conflict' => 'تەھرىر توقۇنۇشى.',
+'edit-no-change' => 'تەھرىرلىگىنىڭىزگە پەرۋا قىلىنمىدى، چۈنكى تېكستتە ئۆزگىرىش بولمىدى.',
+'edit-already-exists' => 'يېڭى بەت قۇرالمىدى
+ئۇ مەۋجۇد.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت ناھايىتى كۆپ يۇقىرى سەرپىياتتىكى گىرامماتىكىلىق ئىقتىدارنى چاقىرغان.\\n
+\\n
+ئۇ {{PLURAL:$2|قېتىم|قېتىم}} دىن ئاز چاقىرىشى لازىم، ھازىر {{PLURAL:$1| $1 قېتىم| $1 قېتىم}} چاقىرىلغان.",
+'expensive-parserfunction-category' => 'بەتتە يۇقىرى سەرپىياتتىكى گرامماتىكىلىق ئىقتىدار چاقىرىلغان.',
+'post-expand-template-inclusion-warning' => "'''ئاگاھلاندۇرۇش:''' ئۆز ئىچىگە ئالغان قېلىپ بەك چوڭ.
+بەزى قېلىپنى ئۆز ئىچىگە ئالمايدۇ.",
+'post-expand-template-inclusion-category' => 'قېلىپ ئۆز ئىچىگە ئالىدىغان يۇقىرى چەك بەتتىن ئېشىپ كەتتى',
+'post-expand-template-argument-warning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەتتە ئاز دېگەندە بىر پارامېتىر كېڭەيتىلگەن يۇقىرى قىممەتنى ئۆز ئىچىگە ئالغان.
+بۇ پارامېتىرلار ئېتىبارغا ئېلىنمايدۇ.",
+'post-expand-template-argument-category' => 'ئېتىبارغا ئېلىنمىغان قېلىپ پارامېتىرىنى ئۆز ئىچىگە ئالغان بەت',
+'parser-template-loop-warning' => 'قېلىپ دەۋرىيلىكى بايقالدى: [[$1]]',
+'parser-template-recursion-depth-warning' => 'قايتىلانما ئىپادە چوڭقۇر چەكلىمىسىدىن ئېشىپ كەتتى ($1)',
+'language-converter-depth-warning' => 'تىل ئالماشتۇرۇش چوڭقۇرلۇقى چەكتىن ئاشتى ($1)',
+
+# "Undo" feature
+'undo-success' => 'بۇ تەھرىردىن يېنىۋالغىلى بولىدۇ
+تۆۋەندىكى سېلىشتۇرۇشنى تەكشۈرۈپ بۇنىڭ ئۆزىڭىزنىڭ ئويى ئىكەنلىكىنى دەلىللەڭ، ئاندىن تۆۋەندىكى ئۆزگەرتىشنى ساقلاپ تەھرىرلەشتىن يېنىۋىلىڭ.',
+'undo-failure' => 'ئوتتۇرىلىقتا بىردەك بولماسلىق سەۋەبىدىن بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
+'undo-norev' => 'تۈزىتىلگەن نەشرى مەۋجۇد ئەمەس ياكى ئۆچۈرۈلگەنلىكتىن، بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
+'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|مۇنازىرە]]) ئېلىپ بارغان تۈزىتىش $1',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'ھېسابات قۇرالمىدى',
+'cantcreateaccount-text' => "بۇ IP ئادرېستىن قۇرۇلغان ('''$1''') ھېسابات [[User:$3|$3]] تەرىپىدىن چەكلەنگەن.
+
+$3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
+
+# History pages
+'viewpagelogs' => 'بۇ بەتنىڭ خاتىرىسىنى كۆرسەت',
+'nohistory' => 'بۇ بەتنىڭ تەھرىرلەش خاتىرىسى يوق.',
+'currentrev' => 'نۆۋەتتىكى تۈزىتىش',
+'currentrev-asof' => '$1 نىڭ نۆۋەتتىكى تۈزىتىلگەن نەشرى',
+'revisionasof' => '$1 تۈزەتكەن نەشرى',
+'revision-info' => '$1 دىكى $2 ئۆزگەرتكەن نەشرى',
+'previousrevision' => '← كونا نەشرى',
+'nextrevision' => 'يېڭىراق تۈزىتىش →',
+'currentrevisionlink' => 'نۆۋەتتىكى تۈزىتىش',
+'cur' => 'نۆۋەتتىكى',
+'next' => 'كەينى',
+'last' => 'ئالدى',
+'page_first' => 'تۇنجى',
+'page_last' => 'ئاخىرقى',
+'histlegend' => "پەرق تاللاش: سېلىشتۇرىدىغان ئۆزگەرتىلگەن نەشرىنىڭ يەككە تاللاش كۇنۇپكىسىغا بەلگە سېلىپ، ئاستىدىكى كۇنۇپكىنى چېكىپ سېلىشتۇرۇڭ. <br />
+چۈشەندۈرۈش: '''({{int:cur}})'' نۆۋەتتىكى نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
+ '''({{int:last}})''' ئالدىنقى ئۆزگەرتىلگەن نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
+ '''{{int:minoreditletter}}''' ئازراقلا ئۆزگەرتىش.",
+'history-fieldset-title' => 'كۆز يۈگۈرتۈش تارىخى',
+'history-show-deleted' => 'ئۆچۈرۈلگەنلا',
+'histfirst' => 'تۇنجى',
+'histlast' => 'ئاخىرقى',
+'historysize' => '$1 {{PLURAL:$1|بايت|بايت}}',
+'historyempty' => '(بوش)',
+
+# Revision feed
+'history-feed-title' => 'ئۆزگەرتىش تارىخى',
+'history-feed-description' => 'مەزكۇر بەتنىڭ بۇ بېكەتتىكى ئۆزگەرتىش تارىخى',
+'history-feed-item-nocomment' => '$2 دىكى $1',
+'history-feed-empty' => 'ئىلتىماس قىلغان بەت مەۋجۇد ئەمەس
+ئۇ ئۆچۈرۈلگەن ياكى ئاتى ئۆزگەرتىلگەن بولۇشى مۇمكىن
+ [[Special:Search|wiki دىن ئىزدە]] نى سىناپ مۇناسىۋەتلىك يېڭى بەتكە ئېرىشىڭ.',
+
+# Revision deletion
+'rev-deleted-comment' => '(ئىزاھات چىقىرىۋېتىلدى)',
+'rev-deleted-user' => '(ئىشلەتكۈچى ئاتى چىقىرىۋېتىلدى)',
+'rev-deleted-event' => '(خاتىرە مەشغۇلاتى چىقىرىۋېتىلدى)',
+'rev-deleted-user-contribs' => '[ئىشلەتكۈچى ئاتى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]',
+'rev-deleted-text-permission' => "'''ئاگاھلاندۇرۇش: بۇ بەتنىڭ تۈزىتىلگەن نەشرى'''ئۆچۈرۈلگەن'''
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.",
+'rev-deleted-text-unhide' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.
+باشقۇرغۇچى بولۇش سۈپىتىدە، داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
+'rev-suppressed-text-unhide' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''يوقىتىلغان'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} يوقىتىش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.باشقۇرغۇچى بولۇش سۈپىتىدە، داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
+'rev-deleted-text-view' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.
+باشقۇرغۇچى بولۇش سۈپىتىڭىز بىلەن ئۇنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تاپالايسىز.",
+'rev-suppressed-text-view' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''يوقىتىلغان'''.
+باشقۇرغۇچى بولۇش سۈپىتىڭىز بىلەن ئۇنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} يوقىتىش خاتىرىسى]دىن تاپالايسىز.",
+'rev-deleted-no-diff' => "بۇ پەرقنى كۆرەلمەيسىز چۈنكى بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.",
+'rev-suppressed-no-diff' => "بۇ پەرقنى كۆرەلمەيسىز چۈنكى بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.",
+'rev-deleted-unhide-diff' => "بۇ بەتتىكى بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.
+باشقۇرغۇچى بولۇش سۈپىتىدە، داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
+'rev-suppressed-unhide-diff' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''يوقىتىلغان'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} يوقىتىش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.باشقۇرغۇچى بولۇش سۈپىتىدە، داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
+'rev-deleted-diff-view' => "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''
+.باشقۇرغۇچى بولۇش سۈپىتىڭىز بىلەن بۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تاپالايسىز.",
+'rev-suppressed-diff-view' => "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''يوقىتىلغان'''.
+باشقۇرغۇچى بولۇش سۈپىتىڭىز بىلەن بۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} يوقىتىش خاتىرىسى]دىن تاپالايسىز.",
+'rev-delundel' => 'كۆرسەت/يوشۇر',
+'rev-showdeleted' => 'كۆرسەت',
+'revisiondelete' => 'تۈزىتىلگەن نەشرىنى ئۆچۈر/ئەسلىگە كەلتۈر',
+'revdelete-nooldid-title' => 'ئىناۋەتسىز نىشان تۈزىتىش نەشرى',
+'revdelete-nooldid-text' => 'سىز تېخى نىشان تۈزىتىش نەشرىدىن بىرنى بەلگىلىمىدىڭىز،
+بەلگىلەنگەن تۈزىتىش نەشرى مەۋجۇد ئەمەس ياكى نۆۋەتتىكى تۈزىتىش نەشرىنى يوشۇرۇشقا ئۇرۇنغان.',
+'revdelete-nologtype-title' => 'خاتىرە تىپى بېرىلمىگەن',
+'revdelete-nologtype-text' => 'سىز تېخى خاتىرە تىپىدىن بىرنى بەلگىلەپ بۇ مەشغۇلاتنى ئىجرا قىلىشنى بېكىتمىدىڭىز.',
+'revdelete-nologid-title' => 'ئىناۋەتسىز خاتىرە تۈرى',
+'revdelete-nologid-text' => 'سىز بۇ مەشغۇلات بىجىرىشكە تېخى نىشان خاتىرە تۈرىدىن بىرنى بەلگىلىمىدىڭىز ياكى بەلگىلەنگەن تۈر مەۋجۇد ئەمەس.',
+'revdelete-no-file' => 'ھۆججەت بەلگىلىمىسى مەۋجۇد ئەمەس.',
+'revdelete-show-file-confirm' => '$2 $3 دىكى "<nowiki>$1</nowiki>" نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى راستىنلا كۆرەمسىز؟',
+'revdelete-show-file-submit' => 'ھەئە',
+'revdelete-selected' => "'''[[:$1]] نىڭ {{PLURAL:$2|تاللانغان تۈزىتىش نەشرى|تاللانغان تۈزىتىش نەشرى}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|تاللانغان خاتىرە تۈرى|تاللانغان خاتىرە تۈرى}}:'''",
+'revdelete-text' => "'''ئۆچۈرۈلگەن تۈزىتىلگەن نەشرى ۋە ھادىسە بەت تارىخىدا كۆرۈنىدۇ ئەمما ئۇنىڭ مەزمۇنىنى كۆپچىلىك زىيارەت قىلالمايدۇ.'''
+{{SITENAME}} دىكى باشقا باشقۇرغۇچىلار يوشۇرۇلغان مەزمۇننى يەنىلا كۆرەلەيدۇ ھەمدە بېكەت خىزمەتچىلىرى قوشۇمچە چەكلىمە ئېلىپ بارمىغانلا بولسا ئوخشاش ئارايۈزدە ئۆچۈرۈلگەننى ئەسلىگە كەلتۈرەلەيدۇ،",
+'revdelete-confirm' => 'بۇ مەشغۇلاتنى ئىجرا قىلسىڭىز ئاقىۋىتىنى چۈشىنىدىغانلىقىڭىزنى ھەمدە بۇ پروگراممىنىڭ [[{{MediaWiki:Policy-url}}|سىياسەت]]كە ئۇيغۇن كېلىدىغانلىقىنى جەزملەڭ.',
+'revdelete-suppress-text' => "'''پەقەت''' تۆۋەندىكى ئەھۋاللار يۈز بەرگەندىلا زىيارەت چەكلىنىدۇ:
+* نامۇۋاپىق شەخسىي ئۇچۇر
+*: ''home ئولتۇرۇشلۇق ئادرېس، تېلېفون نومۇر، كىملىك نومۇرى قاتارلىق.''",
+'revdelete-legend' => 'كۆرۈنۈشچانلىق چەكلىمە تەڭشىكى',
+'revdelete-hide-text' => 'تۈزىتىش نەشرىنىڭ تېكستىنى يوشۇر',
+'revdelete-hide-image' => 'ھۆججەت مەزمۇنىنى يوشۇر',
+'revdelete-hide-name' => 'مەشغۇلات ۋە نىشاننى يوشۇر',
+'revdelete-hide-comment' => 'تەھرىر ئىزاھاتىنى يوشۇر',
+'revdelete-hide-user' => 'تەھرىرلىگۈچىنىڭ ئىشلەتكۈچى ئاتى/IP ئادرېس يوشۇر',
+'revdelete-hide-restricted' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
+'revdelete-radio-same' => '(ئۆزگەرتمە)',
+'revdelete-radio-set' => 'ھەئە',
+'revdelete-radio-unset' => 'ياق',
+'revdelete-suppress' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
+'revdelete-unsuppress' => 'ئەسلىگە كەلتۈرۈلگەن تۈزىتىلگەن نەشرىدىن چەكلىمىنى چىقىرىۋەت',
+'revdelete-log' => 'سەۋەب:',
+'revdelete-submit' => 'تاللانغان {{PLURAL:$1|تۈزىتىش|تۈرىتىش}}نى قوللان',
+'revdelete-logentry' => '[[$1]] نىڭ تۈزىتىش نەشرىنىڭ كۆرۈنۈشچانلىقى ئۆزگەرتىلدى',
+'logdelete-logentry' => '[[$1]] نىڭ ھادىسە كۆرۈنۈشچانلىقى ئۆزگەرتىلدى',
+'revdelete-success' => "'''تۈزىتىلگەن نەشرىنىڭ كۆرۈنۈشچانلىقى مۇۋەپپەقىيەتلىك تەڭشەلدى.'''",
+'revdelete-failure' => "'''تۈزىتىشنىڭ كۆرۈنۈشچانلىقىنى يېڭىلىيالمىدى:'''
+$1",
+'logdelete-success' => "'''خاتىرە كۆرۈنۈشچانلىقى مۇۋەپپەقىيەتلىك تەڭشەلدى.'''",
+'logdelete-failure' => "'''خاتىرىنىڭ كۆرۈنۈشچانلىقىنى تەڭشىيەلمىدى:'''
+$1",
+'revdel-restore' => 'كۆرۈنۈشچانلىقنى ئۆزگەرت',
+'pagehist' => 'بەتنىڭ تارىخى',
+'deletedhist' => 'ئۆچۈرۈلگەن تارىخ',
+'revdelete-content' => 'مەزمۇن',
+'revdelete-summary' => 'ئۈزۈندە تەھرىرلە',
+'revdelete-uname' => 'ئىشلەتكۈچى ئاتى',
+'revdelete-restricted' => 'باشقۇرغۇچى چەكلىمىسىنى قوللان',
+'revdelete-unrestricted' => 'باشقۇرغۇچىنىڭ چەكلىمىسى چىقىرىۋېتىلدى',
+'revdelete-hid' => '$1 يوشۇر',
+'revdelete-unhid' => '$1 يوشۇرما',
+'revdelete-log-message' => '$1 نىڭ {{PLURAL:$2|قېتىملىق|قېتىملىق}} تۈزىتىلگەن نەشرى',
+'logdelete-log-message' => '$1 نىڭ $2 {{PLURAL:$2|ھادىسىسى|ھادىسىسى}}',
+'revdelete-hide-current' => '$2 $1 ۋاقىتتىكى تۈرلەر خاتالىقىنى يوشۇرۇۋاتىدۇ: بۇ نۆۋەتتىكى تۈزىتىلگەن نەشرى.
+ئۇنى يوشۇرغىلى بولمايدۇ.',
+'revdelete-show-no-access' => '$2 $1 تۈر خاتالىقىنى كۆرسىتىۋاتىدۇ: بۇ تۈر "چەكلەنگەن" بەلگىسى قويۇلغان، ئۇنى زىيارەت قىلىش ھوقۇقىڭىز يوق.',
+'revdelete-modify-no-access' => '$2 $1 ۋاقىتتىكى تۈرنىڭ خاتالىقىنى ئۆزگەرتىۋاتىدۇ: بۇ تۈرگە "چەكلەنگەن" بەلگىسى قويۇلغان.
+ئۇنى زىيارەت قىلىش ھوقۇقىڭىز يوق.',
+'revdelete-modify-missing' => 'تۈر ID $1 خاتالىقىنى ئۆزگەرتىۋاتىدۇ: ئۇ سانداندىن يوقالغان!',
+'revdelete-no-change' => "'''ئاگاھلاندۇرۇش:''' $2 $1 ۋاقىتتىكى تۈر كۆرۈنۈشچانلىق تەڭشىكىنى ئىلتىماس قىلدى.",
+'revdelete-concurrent-change' => '$2 $1 ۋاقىتتىكى تۈر خاتالىقىنى ئۆزگەرتىۋاتىدۇ: ئۇنىڭ تەڭشىكىنى ئۆزگەرتىۋاتقاندا باشقىلار ئۆزگەرتىپ بولغان. خاتىرىنى تەكشۈرۈڭ.',
+'revdelete-only-restricted' => '$2 $1 ۋاقىتتىكى تۈرنى يوشۇرغاندا خاتالىق كۆرۈلدى: سىز باشقا بىر كۆرۈنۈشچانلىق تاللانمىسىنى تاللىغاندىن كېيىن باشقۇرغۇچىنىڭ بۇ تۈرنى كۆرۈشىنى يوقاتسىڭىز بولمايدۇ.',
+'revdelete-reason-dropdown' => '*دائىملىق ئۆچۈرۈش سەۋەبلىرى
+**نەشىر ھوقۇقىغا دەخلى-تەرۇز قىلغان
+***نامۇۋاپىق شەخسىي ئۇچۇر',
+'revdelete-otherreason' => 'باشقا/قوشۇمچە سەۋەب:',
+'revdelete-reasonotherlist' => 'باشقا سەۋەب',
+'revdelete-edit-reasonlist' => 'ئۆچۈرۈش سەۋەبى تەھرىر',
+'revdelete-offender' => 'تۈزەتكۈچى ئاپتور:',
+
+# Suppression log
+'suppressionlog' => 'خاتىرىنى چەكلە',
+'suppressionlogtext' => 'تۆۋەندىكىسى ئۆچۈرۈلگەن ۋە باشقۇرغۇچى چەكلىگەن مەزمۇنغا چېتىلىدىغان تىزىملىك.
+ [[Special:IPBlockList|چەكلەنگەنIP تىزىملىكى]] نى كۆرۈڭ. نۆۋەتتە ئېلىپ بېرىلىۋاتقان چەكلەنگەن ۋە پىچەتلەنگەن تىزىملىكتىن كۆرۈڭ.',
+
+# History merging
+'mergehistory' => 'بەت تارىخىنى بىرلەشتۈر',
+'mergehistory-header' => 'بۇ بەت سىزنىڭ مەنبە بەتنىڭ تۈزىتىش تارىخىنى يېڭى بەتكە بىرلەشتۈرۈشىڭىزگە يول قويىدۇ.
+بۇ قېتىمقى ئۆزگەرتىشنىڭ داۋاملىق ساقلىنىپ تارىخىي بەتلەرنىڭ ئىزچىللىقىغا كاپالەتلىك قىلىڭ.',
+'mergehistory-box' => 'ئىككى بەتنىڭ تۈزىتىش تارىخىنى بىرلەشتۈر:',
+'mergehistory-from' => 'مەنبە بەت:',
+'mergehistory-into' => 'نىشان بەت:',
+'mergehistory-list' => 'بىرلەشتۈرگىلى بولىدىغان تەھرىر تارىخى',
+'mergehistory-merge' => 'تۆۋەندىكى [[:$1]] نىڭ تۈزىتىلگەن نەشرىنى [[:$2]]غا بىرلەشتۈرگىلى بولىدۇ..
+بۇ تاللانما كۇنۇپكا ستونىنى ئىشلىتىپ بەلگىلەنگەن ۋاقىتتىن ئىلگىرى ئېلىپ بارغان تەھرىرنى بىرلەشتۈرىدۇ.
+ئىزاھلاشقا تېگىشلىكى شۇكى يولباشچى ئۇلانما ئىشلىتىلسە بۇ ستون ئەسلىگە قايتۇرۇلىدۇ.',
+'mergehistory-go' => 'بىرلەشتۈرگىلى بولىدىغان تەھرىر كۆرسەت',
+'mergehistory-submit' => 'تۈزىتىلگەن نەشرىنى بىرلەشتۈر',
+'mergehistory-empty' => 'بىرلەشتۈرگىلى بولىدىغان تۈزىتىلگەن نەشرى يوق.',
+'mergehistory-success' => '[[:$1]] نىڭ {{PLURAL:$3|قېتىملىق|قېتىملىق}} تۈزىتىلگەن نەشرى مۇۋەپپەقىيەتلىك ھالدا [[:$2]] غا بىرلەشتۈرۈلدى.',
+'mergehistory-fail' => 'تارىخنى بىرلەشتۈرگىلى بولمايدۇ، بۇ بەت ۋە ۋاقىت پارامېتىرىنى قايتا تەكشۈرۈڭ.',
+'mergehistory-no-source' => 'مەنبە بەت $1 مەۋجۇد ئەمەس.',
+'mergehistory-no-destination' => 'نىشان بەت $1 مەۋجۇد ئەمەس.',
+'mergehistory-invalid-source' => 'مەنبە بەتنىڭ چوقۇم ئىناۋەتلىك ماۋزۇسى بولۇشى لازىم.',
+'mergehistory-invalid-destination' => 'نىشان بەتنىڭ چوقۇم ئىناۋەتلىك ماۋزۇسى بولۇشى لازىم.',
+'mergehistory-autocomment' => '[[:$1]] نى [[:$2]] غا بىرلەشتۈرۈلدى',
+'mergehistory-comment' => '[[:$1]] نى [[:$2]] غا بىرلەشتۈرۈلدى: $3',
+'mergehistory-same-destination' => 'مەنبە بەت بىلەن نىشان بەت ئوخشاش بولسا بولمايدۇ',
+'mergehistory-reason' => 'سەۋەب:',
+
+# Merge log
+'mergelog' => 'بىرلەشتۈرۈش خاتىرىسى',
+'pagemerge-logentry' => '[[$1]] نى [[$2]] غا بىرلەشتۈرۈلدى: ( تۈزىتىلگەن نەشرى $3)',
+'revertmerge' => 'پارچىلا',
+'mergelogpagetext' => 'تۆۋەندىكىسى يېقىندا بىر بەتنىڭ تۈزىتىش تارىخىنىڭ باشقا بىر بەتكە بىرلەشتۈرۈلگەنلىك تىزىملىكى',
+
+# Diffs
+'history-title' => '"$1" نىڭ ئۆزگەرتىش خاتىرىسى',
+'difference' => '(تۈزەتكەن نەشرىلىرىنىڭ پەرقى)',
+'lineno' => '$1 -قۇر:',
+'compareselectedversions' => 'تاللانغان نەشرىنى سېلىشتۇر',
+'showhideselectedversions' => 'تاللانغان تۈزىتىلگەن نەشرىنى كۆرسەت/يوشۇر',
+'editundo' => 'يېنىۋال',
+'diff-multi' => '({{PLURAL:$1| بىر ئوتتۇرىدىكى تۈزىتىلگەن نەشرى |$1 ئوتتۇرىدىكى تۈزىتىلگەن نەشرى }} كۆرسىتىلمىدى)',
+
+# Search results
+'searchresults' => 'ئىزدەش نەتىجىسى',
+'searchresults-title' => '"$1" نىڭ ئىزدەش نەتىجىسى',
+'searchresulttext' => '{{SITENAME}}ھەققىدىكى تەپسىلىي ئۇچۇرغا ئېرىشمەكچى بولسىڭىز، [[{{MediaWiki:Helppage}}|{{int:help}}]]نى كۆرۈڭ',
+'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" بىلەن باشلانغان بارلىق تور بەت]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1| "$1" غا ئۇلانغان بەتنى]]) ئىزدە',
+'searchsubtitleinvalid' => "'''$1''' ئىزدە",
+'toomanymatches' => 'ناھايىتى كۆپ ماسلىشىش ئىنكاس قايتۇردى، باشقا سۈرۈشتۈرۈشنى سىناڭ',
+'titlematches' => 'بەت ماۋزۇسىغا ماس كەلدى',
+'notitlematches' => 'بەت ماۋزۇسىغا ماس كېلىدىغان تۈر يوق',
+'textmatches' => 'بەت مەزمۇنى ماس كەلدى',
+'notextmatches' => 'ماس كېلىدىغان بەت مەزمۇنى يوق',
+'prevn' => 'ئالدى {{PLURAL:$1|$1}}',
+'nextn' => 'كەينى {{PLURAL:$1|$1}}',
+'prevn-title' => 'ئالدىنقى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}',
+'nextn-title' => 'كېيىكى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}',
+'shown-title' => 'ھەر بىر بەتتە $1 {{PLURAL:$1|نەتىجە |نەتىجە }} كۆرسەت',
+'viewprevnext' => 'كۆرسەت ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'ئىزدەش تاللانما',
+'searchmenu-exists' => "'''بۇ wiki دا \"[[:\$1]]\" ئاتلىق بەت بار '''",
+'searchmenu-new' => "'''بۇ wiki دا \"[[:\$1]]\" ئاتلىق بەت قۇر!'''",
+'searchhelp-url' => 'Help:مەزمۇنلار',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بۇنى ئالدى قوشۇلغۇچى قىلغان بەتكە كۆز يۈگۈرت ]]',
+'searchprofile-articles' => 'مەزمۇن بېتى',
+'searchprofile-project' => 'ياردەم ۋە قۇرۇلۇش بەتلەر',
+'searchprofile-images' => 'كۆپ ۋاسىتە',
+'searchprofile-everything' => 'ھەممە ئىش',
+'searchprofile-advanced' => 'ئالىي',
+'searchprofile-articles-tooltip' => '$1 دىن ئىزدە',
+'searchprofile-project-tooltip' => '$1 دىن ئىزدە',
+'searchprofile-images-tooltip' => 'ھۆججەت ئىزدە',
+'searchprofile-everything-tooltip' => 'ھەممە مەزمۇننى ئىزدە (مۇنازىرە بەتمۇ ئىچىدە)',
+'searchprofile-advanced-tooltip' => 'ئادەتلەنگەن ئات بوشلۇقىدىن ئىزدە',
+'search-result-size' => '$1 ({{PLURAL:$2|1 سۆز|$2 سۆز}})',
+'search-result-score' => 'باغلىنىشچانلىق: $1%',
+'search-redirect' => '($1 قايتا نىشانلا)',
+'search-section' => '(ئابزاس $1)',
+'search-suggest' => 'ئىزدىمەكچى بولغىنىڭىز: $1',
+'search-interwiki-caption' => 'ھەمشىرە قۇرۇلۇشلار',
+'search-interwiki-default' => '$1 نەتىجە:',
+'search-interwiki-more' => '(تېخىمۇ كۆپ)',
+'search-mwsuggest-enabled' => 'تەكلىپ بار',
+'search-mwsuggest-disabled' => 'تەكلىپ يوق',
+'search-relatedarticle' => 'ئالاقىدار',
+'mwsuggest-disable' => 'AJAX تەكلىپىنى چەكلە',
+'searcheverything-enable' => 'ھەممە ئات بوشلۇقىدىن ئىزدە',
+'searchrelated' => 'ئالاقىدار',
+'searchall' => 'ھەممىسى',
+'showingresults' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$1|'''1''' نەتىجە|'''$1''' نەتىجە}} كۆرسىتىدۇ:",
+'showingresultsnum' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$3|'''1''' نەتىجە |'''$3''' نەتىجە }} كۆرسىتىدۇ:",
+'showingresultsheader' => "'''$4''' نىڭ {{PLURAL:$5|'''$1''' دىن '''$3'''غىچە نەتىجە | '''$1 - $2''' غىچە جەمئى '''$3''' نەتىجە}}",
+'nonefound' => "'''دىققەت''': كۆڭۈلدىكى ئەھۋالدا بىر قىسىم ئات بوشلۇقى بەتلىرىلا ئىزدىلىدۇ.
+ئىزدەش جۈملىڭىزنىڭ ئالدىغا ''all:'' ئالدى قوشۇلغۇچىسى قوشۇپ سىناڭ، بۇنداق بولغاندا ھەممە بەت (مۇنازىرە بېتى، قېلىپ قاتارلىقلارنى ئۆز ئىچىگە ئالىدۇ)تىن ئىزدەيدۇ، ياكى لازىملىق ئات بوشلۇقى ئالدى قوشۇلغۇچى قىلىنسىمۇ بولىدۇ.",
+'search-nonefound' => 'سۈرۈشتۈرۈشكە ماس نەتىجە تېپىلمىدى.',
+'powersearch' => 'ئالىي ئىزدەش',
+'powersearch-legend' => 'ئالىي ئىزدەش',
+'powersearch-ns' => 'ئات بوشلۇقىدىن ئىزدە:',
+'powersearch-redir' => 'قايتا نىشانلانغان بەت تىزىملىكى',
+'powersearch-field' => 'ئىزدە',
+'powersearch-togglelabel' => 'تاللا:',
+'powersearch-toggleall' => 'ھەممىسى',
+'powersearch-togglenone' => 'يوق',
+'search-external' => 'ئالىي ئىزدەش',
+'searchdisabled' => '{{SITENAME}} نىڭ ئىزدىشى چەكلەنگەن. سىز ھازىرچە Google ئىشلىتىپ ئىزدەپ تۇرۇڭ،.
+دىققەت ئۇلار ئىندېكسلىغان {{SITENAME}} مەزمۇنىنىڭ ۋاقتى ئۆتكەن بولۇشى مۇمكىن.',
+
+# Quickbar
+'qbsettings' => 'تېز يولباشچى ستونى',
+'qbsettings-none' => 'يوق',
+'qbsettings-fixedleft' => 'سول تەرەپ مۇقىم',
+'qbsettings-fixedright' => 'ئوڭ تەرەپ مۇقىم',
+'qbsettings-floatingleft' => 'سول تەرەپ لەيلىمە',
+'qbsettings-floatingright' => 'ئوڭ تەرەپ لەيلىمە',
+
+# Preferences page
+'preferences' => 'مايىللىق',
+'mypreferences' => 'مايىللىق تەڭشىكىم',
+'prefs-edits' => 'تەھرىر سانى:',
+'prefsnologin' => 'تىزىمغا كىرمىدى',
+'prefsnologintext' => 'سىز ئالدى بىلەن <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} تىزىمغا كىر]</span>سىڭىز ئاندىن ئىشلەتكۈچى مايىللىقنى تەڭشىيەلەيسىز.',
+'changepassword' => 'ئىم ئۆزگەرت',
+'prefs-skin' => 'تېرە',
+'skin-preview' => 'ئالدىن كۆزەت',
+'prefs-math' => 'ماتېماتېكىلىق فورمۇلا',
+'datedefault' => 'مايىللىق يوق',
+'prefs-datetime' => 'چېسلا ۋە ۋاقىت',
+'prefs-personal' => 'ئىشلەتكۈچى سەپلىمە ھۆججىتى',
+'prefs-rc' => 'ئاخىرقى ئۆزگەرتىشلەر',
+'prefs-watchlist' => 'كۆزەت تىزىملىكى',
+'prefs-watchlist-days' => 'كۆزەت تىزىملىكىدە كۆرۈنىدىغان كۈن سانى:',
+'prefs-watchlist-days-max' => 'ئەڭ كۆپ بولغاندا 7 كۈن',
+'prefs-watchlist-edits' => 'كۈچەيتىلگەن كۆزەت تىزىملىكىدە ئەڭ كۆپ ئۆزگەرتىش سانى:',
+'prefs-watchlist-edits-max' => 'ئەڭ كۆپ سانى: 1000',
+'prefs-watchlist-token' => 'كۆزەت تىزىملىك نىشانى:',
+'prefs-misc' => 'ئارىلاشما تۈر',
+'prefs-resetpass' => 'ئىم ئۆزگەرت',
+'prefs-email' => 'ئېلخەت تاللانما',
+'prefs-rendering' => 'كۆرۈنۈش',
+'saveprefs' => 'ساقلا',
+'resetprefs' => 'ساقلىمىغان ئۆزگەرتىشلەرنى تازىلا',
+'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر',
+'prefs-editing' => 'تەھرىرلەۋاتىدۇ',
+'prefs-edit-boxsize' => 'تەھرىرلەش كۆزنىكىنىڭ چوڭلۇقى',
+'rows' => 'قۇر:',
+'columns' => 'ستون:',
+'searchresultshead' => 'ئىزدە',
+'resultsperpage' => 'ھەر بەتتىكى ئۇلانما سانى:',
+'contextlines' => 'ھەر ئۇلانمىدىكى قۇر سانى:',
+'contextchars' => 'ھەر قۇردىكى ھەرپ سانى:',
+'stub-threshold' => '<a href=\\"#\\" class=\\"stub\\">قىسقا بەت ئۇلانمىسى</a> فورمات چەك قىممىتى (بايت) :',
+'recentchangesdays' => 'يېقىنقى ئۆزگەرتىشنىڭ كۆرۈنىدىغان كۈن سانى:',
+'recentchangesdays-max' => 'ئەڭ چوڭ $1 {{PLURAL:$1|كۈن|كۈن}}',
+'recentchangescount' => 'كۆرسىتىدىغان تەھرىرنىڭ كۆڭۈلدىكى سانى:',
+'prefs-help-recentchangescount' => 'بۇ يېقىنقى ئۆزگەرتىش، بەت تارىخى ۋە خاتىرىنى ئۆز ئىچىگە ئالىدۇ،',
+'prefs-help-watchlist-token' => 'بۇ سۆز بۆلىكىگە تولدۇرغان شىفىرلىق ئاچقۇچ كۆزەت تىزىملىكىڭىزنىڭ RSS قانىلىنى ھاسىل قىلالايدۇ.
+بۇ سۆز بۆلىكىنىڭ شىفىرلىق ئاچقۇچىنى بىلىدىغان ھەر قانداق كىشى سىزنىڭ كۆزەت تىزىملىكىڭىزنى ئوقۇيالايدۇ، شۇڭلاشقا بىخەتەر قىممەت ئىشلىتىڭ.
+بۇ جايدا ئىختىيارى ھاسىل قىلىنغان سانلىق قىممەت پايدىلىنىشىڭىز ئۈچۈن تەمىنلەندى: $1',
+'savedprefs' => 'مايىللىق تەڭشىكىڭىز ساقلاندى.',
+'timezonelegend' => 'ۋاقىت رايونى:',
+'localtime' => 'يەرلىك ۋاقىت:',
+'timezoneuseserverdefault' => 'مۇلازىمىتىرنىڭ كۆڭۈلدىكى تەڭشىكىنى ئىشلەت',
+'timezoneuseoffset' => 'باشقا (بەلگىلەنگەن چەتنەش)',
+'timezoneoffset' => '¹ۋاقىت پەرقى:',
+'servertime' => 'مۇلازىمىتىر ۋاقتى:',
+'guesstimezone' => 'توركۆرگۈدىن تولدۇر',
+'timezoneregion-africa' => 'ئافرىقا',
+'timezoneregion-america' => 'ئامېرىكا',
+'timezoneregion-antarctica' => 'ئانتاركتىكا',
+'timezoneregion-arctic' => 'شىمالىي قۇتۇپ',
+'timezoneregion-asia' => 'ئاسىيا',
+'timezoneregion-atlantic' => 'ئاتلانتىك ئوكيان',
+'timezoneregion-australia' => 'ئاۋسترالىيە',
+'timezoneregion-europe' => 'ياۋروپا',
+'timezoneregion-indian' => 'ھىندى ئوكيان',
+'timezoneregion-pacific' => 'تىنچ ئوكيان',
+'allowemail' => 'باشقا ئىشلەتكۈچىلەر ئېلخەت ئەۋەتىشنى قوزغات',
+'prefs-searchoptions' => 'ئىزدەش تاللانما',
+'prefs-namespaces' => 'ئات بوشلۇقى',
+'defaultns' => 'بولمىسا بۇ ئات بوشلۇقلىرىدىن ئىزدە:',
+'default' => 'كۆڭۈلدىكى',
+'prefs-files' => 'ھۆججەتلەر',
+'prefs-custom-css' => 'ئىختىيارى CSS',
+'prefs-custom-js' => 'ئىختىيارى JS',
+'prefs-reset-intro' => 'سىز بۇ بەتنى ئىشلىتىپ تەڭشەكلىرىڭىزنى تور بېكەتنىڭ كۆڭۈلدىكى قىممىتىگە تەڭشىيەلەيسىز.
+بۇ مەشغۇلاتتىن يانغىلى بولمايدۇ.',
+'prefs-emailconfirm-label' => 'ئېلخەت جەزملەش:',
+'prefs-textboxsize' => 'تەھرىر كۆزنەك چوڭلۇقى',
+'youremail' => 'ئېلخەت:',
+'username' => 'ئىشلەتكۇچى ئىسمى:',
+'uid' => 'ئىشلەتكۈچى كىملىك:',
+'prefs-memberingroups' => '{{PLURAL:$1|بىر|كۆپ}} گۇرۇپپا ئەزاسى:',
+'prefs-registration' => 'خەتلەتكەن ۋاقىت:',
+'yourrealname' => 'ﺗﻮﻟﯘﻕ ئىسىم:',
+'yourlanguage' => 'تىل:',
+'yournick' => 'ئىمزا:',
+'prefs-help-signature' => 'مۇنازىرە بەتتە "<nowiki>~~~~</nowiki>" ئىمزا ئىشلىتىلسە ئۇ ئۆزلۈكىدىن ئىمزايىڭىزغا ئۆزگىرىپ ۋاقىت تامغا قوشۇلىدۇ.',
+'badsig' => 'ئەسلى ئىمزا خاتا.
+
+HTML بەلگىسىنى تەكشۈرۈڭ.',
+'badsiglength' => 'ئىمزايىڭىز بەك ئۇزۇن.
+
+ئىمزانىڭ ئۇزۇنلۇقى {{PLURAL:$1| ھەرپ| ھەرپ}}تىن ئاشسا بولمايدۇ.',
+'yourgender' => 'جىنسى:',
+'gender-unknown' => 'بەلگىلەنمىگەن',
+'gender-male' => 'ئەر',
+'gender-female' => 'ئايال',
+'prefs-help-gender' => 'تاللاشچان: يۇمشاق دېتالنىڭ خاراكتىرى تەرىپىدىن بەلگىلىنىدۇ
+
+بۇ ئۇچۇر كۆپچىلىككە ئاشكارىلىنىدۇ.',
+'email' => 'ئېلخەت',
+'prefs-help-realname' => 'ھەقىقىي ئات تاللاشچان.
+
+ئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.',
+'prefs-help-email' => 'ئېلخەت تاللاشچان، ئەمما سىز ئىمنى ئۇنتۇلۇپ قالغاندا يېڭى ئىمنى سىزنىڭ ئېلخىتىڭىزگە ئەۋەتىپ بېرىدۇ
+
+سىز ئۆزىڭىزنىڭ سالاھىيىتىنى ئاشكارىلىمىغاندا ئىشلەتكۈچى بېتىڭىز ياكى مۇنازىرە بېتىڭىز ئارقىلىق ئالاقىلىشالايدۇ.',
+'prefs-help-email-required' => 'ئېلخەت ئارېس زۆرۈر.',
+'prefs-info' => 'ئاساسىي ئۇچۇر',
+'prefs-i18n' => 'خەلقئارالاشتۇرۇش',
+'prefs-signature' => 'ئىمزا',
+'prefs-dateformat' => 'چېسلا فورماتى',
+'prefs-timeoffset' => 'ۋاقىت پەرقى',
+'prefs-advancedediting' => 'ئالىي تاللانما',
+'prefs-advancedrc' => 'ئالىي تاللانما',
+'prefs-advancedrendering' => 'ئالىي تاللانما',
+'prefs-advancedsearchoptions' => 'ئالىي تاللانما',
+'prefs-advancedwatchlist' => 'ئالىي تاللانما',
+'prefs-display' => 'كۆرسىتىش تاللانما',
+'prefs-diffs' => 'پەرقلەر',
+
+# User rights
+'userrights' => 'ئىشلەتكۈچى ھوقۇقى باشقۇرۇش',
+'userrights-lookup-user' => 'ئىشلەتكۈچى گۇرۇپپىسى باشقۇرۇش',
+'userrights-user-editname' => 'ئىشلەتكۈچى ئاتى كىرگۈزۈڭ:',
+'editusergroup' => 'ئىشلەتكۈچى گۇرۇپپىسى تەھرىر',
+'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) ئىشلەتكۈچىنىڭ ھوقۇقىنى ئۆزگەرتىۋاتىدۇ",
+'userrights-editusergroup' => 'ئىشلەتكۈچى گۇرۇپپىسى تەھرىر',
+'saveusergroups' => 'ئىشلەتكۈچى گۇرۇپپىسى ساقلا',
+'userrights-groupsmember' => 'ئەزاسى:',
+'userrights-groupsmember-auto' => 'مۇقىم ئەزاسى:',
+'userrights-groups-help' => 'سىز بۇ ئىشلەتكۈچى تەۋە گۇرۇپپىنى ئۆزگەرتەلەيسىز:\\n
+* تاللاش رامكىسى تاللاغلىق بولسا ئىشلەتكۈچى شۇ گۇرۇپپىغا تەۋە:
+* تاللاش رامكىسى تاللاغلىق بولمىسا ئىشلەتكۈچى شۇ گۇرۇپپىغا تەۋە ئەمەس.
+* يۇلتۇز * بەلگىسى قويۇلغان گۇرۇپپىغا ئەزە بولغاندىن كېيىن چىقىرىۋەتكىلى بولمايدۇ، ئەكسىچە بولسا بولىدۇ.',
+'userrights-reason' => 'سەۋەب:',
+'userrights-no-interwiki' => 'باشقا wiki دىكى ئىشلەتكۈچىلەرنىڭ ھوقۇقىنى ئۆزگەرتىش ھوقۇقىڭىز يوق.',
+'userrights-nodatabase' => '$1 ساندان مەۋجۇد ئەمەس ياكى يەرلىك ئوروندا ئەمەس.',
+'userrights-nologin' => 'سىز چوقۇم باشقۇرغۇچى سۈپىتىدە [[Special:UserLogin|تىزىمغا كىر]]ىپ ئاندىن ئىشلەتكۈچى ھوقۇقىنى بەلگىلىيەلەيسىز.',
+'userrights-notallowed' => 'ھېساباتىڭىزنىڭ باشقىلارنىڭ ئىشلەتكۈچى ھوقۇقىنى ئۆزگەرتىش ھوقۇقىڭىز يوق.',
+'userrights-changeable-col' => 'سىز ئۆزگەرتەلەيدىغان گۇرۇپپا',
+'userrights-unchangeable-col' => 'سىز ئۆزگەرتەلمەيدىغان گۇرۇپپا',
+
+# Groups
+'group' => 'گۇرۇپپا:',
+'group-user' => 'ئىشلەتكۈچىلەر',
+'group-autoconfirmed' => 'ئۆزلۈكىدىن جەزملەنگەن ئىشلەتكۈچىلەر',
+'group-bot' => 'ماشىنا ئادەملەر',
+'group-sysop' => 'باشقۇرغۇچى',
+'group-bureaucrat' => 'بيۇرۇكراتلار',
+'group-suppress' => 'نازارەتچىلەر',
+'group-all' => '(ھەممىسى)',
+
+'group-user-member' => 'ئىشلەتكۈچى',
+'group-autoconfirmed-member' => 'ئۆزلۈكىدىن جەزملەنگەن ئىشلەتكۈچى',
+'group-bot-member' => 'ماشىنا ئادەم',
+'group-sysop-member' => 'باشقۇرغۇچى',
+'group-bureaucrat-member' => 'بيۇرۇكرات',
+'group-suppress-member' => 'نازارەتچى',
+
+'grouppage-user' => '{{ns:project}}: ئىشلەتكۈچىلەر',
+'grouppage-autoconfirmed' => '{{ns:project}}:ئۆزلۈكىدىن جەزملەنگەن ئىشلەتكۈچىلەر',
+'grouppage-bot' => '{{ns:project}}:ماشىنا ئادەملەر',
+'grouppage-sysop' => '{{ns:project}}:باشقۇرغۇچى',
+'grouppage-bureaucrat' => '{{ns:project}}:باشقۇرغۇچى',
+'grouppage-suppress' => '{{ns:project}}: نازارەتچىلەر',
+
+# Rights
+'right-read' => 'بەت ئوقۇ',
+'right-edit' => 'بەت تەھرىر',
+'right-createpage' => 'بەت قۇر (مۇنازىرە بېتىنى ئۆز ئىچىگە ئالمايدۇ)',
+'right-createtalk' => 'مۇنازىرە بەت قۇر',
+'right-createaccount' => 'يېڭى ئىشلەتكۈچى ھېساباتى قۇر',
+'right-minoredit' => 'ئازراقلا تەھرىر بەلگىسى قوي',
+'right-move' => 'بەت يۆتكە',
+'right-move-subpages' => 'بەتنى تاماق بەتلىرى بىلەن قوشۇپ يۆتكە',
+'right-move-rootuserpages' => 'غول ئىشلەتكۈچى بېتىنى يۆەتكە',
+'right-movefile' => 'ھۆججەت يۆتكە',
+'right-suppressredirect' => 'ھۆججەت يۈتكىگەندە مەنبە بەتنىڭ قايتا نىشان بەلگىلىنىشىنى قۇرما.',
+'right-upload' => 'ھۆججەتلەرنى يۈكلە',
+'right-reupload' => 'مەۋجۇد ھۆججەتنى قاپلا',
+'right-reupload-own' => 'ئوخشاش بىر ئادەم يوللىغان ھۆججەتنى قاپلىۋەت',
+'right-reupload-shared' => 'ئېتىبارغا ئېلىنمايدىغان يەرلىك ھەمبەھىر كۆپ ۋاسىتە ئامبىرىدىكى ھۆججەت',
+'right-upload_by_url' => 'URL دىن ھۆججەت يۈكلە',
+'right-purge' => 'جەزملەشنى سورىمايلا تور بېكەت غەملىكىنى تازىلا',
+'right-autoconfirmed' => 'يېرىم قوغدالغان بەت تەھرىر',
+'right-bot' => 'ئاپتوماتىك جەريان دەپ قارىلىدۇ',
+'right-nominornewtalk' => 'ئازراقلا تەھرىر يېڭى ئۇچۇر ئەسكەرتىشى كەلتۈرۈپ چىقارمايدۇ',
+'right-apihighlimits' => 'API سۈرۈشتۈرۈشتە تېخىمۇ يۇقىرى چەكنى ئىشلەت',
+'right-writeapi' => 'يېزىلغان API نى ئىشلەت',
+'right-delete' => 'بەتلەرنى ئۆچۈر',
+'right-bigdelete' => 'كۆپ مىقداردىكى تارىخ بېتى ئۆچۈر',
+'right-deleterevision' => 'ئۆچۈر ۋە قارشى ئۆچۈر بېتىدىكى بەلگىلەنگەن تۈزىتىلگەن نەشرى',
+'right-deletedhistory' => 'ئۆچۈرۈلگەن تۈرنى كۆرسەت، مۇناسىۋەتلىك تېكستنى ئۆز ئىچىگە ئالمايدۇ',
+'right-deletedtext' => 'ئۆچۈرۈلگەن تۈزىتىلگەن نەشرى ئارىسىدىكى ئۆچۈرۈلگەن تېكست ۋە ئۆزگەرتىشنى كۆرسەت',
+'right-browsearchive' => 'ئۆچۈرۈلگەن بەتنى ئىزدە',
+'right-undelete' => 'بەتنى ئەسلىگە كەلتۈر',
+'right-suppressrevision' => 'باشقۇرغۇچى يوشۇرغان تۈزىتىلگەن نەشرىنى كۆرسەت ۋە ئەسلىگە كەلتۈر',
+'right-suppressionlog' => 'شەخسىي خاتىرىنى كۆرسەت',
+'right-block' => 'باشقا ئىشلەتكۈچى تەھرىرلەشنى چەكلە',
+'right-blockemail' => 'ئىشلەتكۈچى ئېلخەت يوللاشنى چەكلە',
+'right-hideuser' => 'ئىشلەتكۈچى ئاتىنى چەكلە، كۆپچىلىككە نىسبەتەن يوشۇر',
+'right-ipblock-exempt' => 'IP چەكلەش، ئاپتوماتىك چەكلەش ۋە دائىرە چەكلەشتىن ئايلىنىپ ئۆت',
+'right-proxyunbannable' => 'ۋاكالەتچىنى ئاپتوماتىك چەكلەشتىن ئايلىنىپ ئۆت',
+'right-protect' => 'قوغداش دەرىجىسىنى ئۆزگەرتىپ، قوغدالغان بەتنى تەھرىرلە',
+'right-editprotected' => 'قوغدالغان بەتنى تەھرىرلە (زەنجىرسىمان قۇلۇپلانمىغان)',
+'right-editinterface' => 'ئىشلەتكۈچى كۆرۈنمە يۈزىنى تەھرىرلە',
+'right-editusercssjs' => 'باشقا ئىشلەتكۈچىنىڭ CSS ۋە JS ھۆججىتىنى تەھرىرلە',
+'right-editusercss' => 'باشقا ئىشلەتكۈچىنىڭ CSS ھۆججىتىنى تەھرىرلە',
+'right-edituserjs' => 'باشقا ئىشلەتكۈچىنىڭ JS ھۆججىتىنى تەھرىرلە',
+'right-rollback' => 'ئاخىرقى ئىشلەتكۈچىنىڭ مەلۇم بەتكە ئېلىپ بارغان تەھرىرىنى تېزلىكتە ئەسلىگە كەلتۈر',
+'right-markbotedits' => 'ئەسلىگە كەلتۈرۈلگەن تەھرىرنى ماشىنا ئادەم تەھرىرى دەپ بەلگە قوي',
+'right-noratelimit' => 'چاستوتا چەكلىمىسى ئىشلىتىلمىدى',
+'right-import' => 'باشقا wiki دىن بەت ئەكىر',
+'right-importupload' => 'يۈكلىگەن ھۆججەتتىن بەت ئەكىر',
+'right-patrol' => 'باشقا تەھرىرگە چارلاش بەلگىسى قوي',
+'right-autopatrol' => 'ئۆزەم تەھرىرلىگەنگە ئاپتوماتىك چارلاش بەلگىسى قوي',
+'right-patrolmarks' => 'يېقىنقى نازارەت بەلگىسىنىڭ ئۆزگۈرۈشىنى كۆرسەت',
+'right-unwatchedpages' => 'كۆزىتىلمىگەن بەت تىزىملىكىنى كۆرسەت',
+'right-trackback' => 'trackback تاپشۇر',
+'right-mergehistory' => 'بەت تارىخىنى بىرلەشتۈر',
+'right-userrights' => 'ھەممە ئىشلەتكۈچىنىڭ ھوقۇقىنى تەھرىرلە',
+'right-userrights-interwiki' => 'باشقا wiki دىكى ئىشلەتكۈچى ھوقۇقىنى تەھرىرلە',
+'right-siteadmin' => 'ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ',
+'right-reset-passwords' => 'باشقا ئىشلەتكۈچى ئىمنى ئەسلىگە قايتۇر',
+'right-override-export-depth' => 'بەت قەۋەتلىك ئۇلىنىشى بار بەتنى چىقار',
+'right-versiondetail' => 'كېڭەيتىلگەن يۇمشاق دېتال نەشر ئۇچۇرىنى كۆرسەت',
+'right-sendemail' => 'باشقا ئىشلەتكۈچىگە ئېلخەت يوللا',
+
+# User rights log
+'rightslog' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
+'rightslogtext' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
+'rightslogentry' => 'گۇرۇپپا ئەزاسى $1 نىڭ ھوقۇقىنى $2 دىن $3 غا ئۆزگەرت',
+'rightsnone' => '(يوق)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'بۇ بەتنى ئوقۇ',
+'action-edit' => 'بۇ بەتنى تەھرىرلە',
+'action-createpage' => 'بۇ بەتنى قۇر',
+'action-createtalk' => 'مۇنازىرە بېتى قۇر',
+'action-createaccount' => 'بۇ ئىشلەتكۈچى ھېساباتىنى قۇر',
+'action-minoredit' => 'بۇنىڭغا ئازراقلا تەھرىر بەلگىسى قوي',
+'action-move' => 'بۇ بەتنى يۆتكە',
+'action-move-subpages' => 'بۇ بەتنىڭ تارماق بەتلىرىنى قوشۇپ يۆتكە',
+'action-move-rootuserpages' => 'غول ئىشلەتكۈچى بېتىنى يۆتكە',
+'action-movefile' => 'بۇ ھۆججەتنى يۆتكە',
+'action-upload' => 'بۇ ھۆججەتنى يۈكلە',
+'action-reupload' => 'مەۋجۇد ھۆججەتنى قاپلا',
+'action-reupload-shared' => 'ھەمبەھىر ئامباردىكى ھۆججەتنى قاپلا',
+'action-upload_by_url' => 'بۇ ھۆججەتنى URL دىن يۈكلە',
+'action-writeapi' => 'API يېزىشقا ئىشلىتىلىدۇ',
+'action-delete' => 'بۇ بەتنى ئۆچۈر',
+'action-deleterevision' => 'بۇ تۈزىتىلگەن نەشرىنى ئۆچۈر',
+'action-deletedhistory' => 'بۇ بەتنىڭ ئۆچۈرۈش تارىخىنى كۆرسەت',
+'action-browsearchive' => 'ئۆچۈرۈلگەن بەتنى ئىزدە',
+'action-undelete' => ' بۇ بەتنى ئەسلىگە كەلتۈر',
+'action-suppressrevision' => 'بۇ يوشۇرۇلغان تۈزىتىلگەن نەشرىنى قايتا كۆرۈپ ئەسلىگە كەلتۈر',
+'action-suppressionlog' => 'بۇ شەخسىي خاتىرىنى كۆرسەت',
+'action-block' => 'بۇ ئىشلەتكۈچىنىڭ تەھرىرىنى چەكلە',
+'action-protect' => 'بۇ بەتنىڭ قوغداش دەرىجىسىنى ئۆزگەرت',
+'action-import' => 'باشقا wiki دىن بۇ بەتنى ئەكىر',
+'action-importupload' => 'يۈكلىگەن بىر ھۆججەتتىن بۇ بەتنى ئەكىر',
+'action-patrol' => 'باشقا تەھرىرگە چارلاش بەلگىسى قوي',
+'action-autopatrol' => 'ئۆزەمنىڭ تەھرىرىگە چارلاش بەلگىسى قوي',
+'action-unwatchedpages' => 'كۆزىتىلمىگەن بەت تىزىملىكىنى كۆرسەت',
+'action-trackback' => 'trackback تاپشۇر',
+'action-mergehistory' => 'بۇ بەتنىڭ تارىخىنى بىرلەشتۈر',
+'action-userrights' => 'ھەممە ئىشلەتكۈچىنىڭ ھوقۇقىنى تەھرىرلە',
+'action-userrights-interwiki' => 'باشقا wiki دىكى ئىشلەتكۈچى ھوقۇقىنى تەھرىرلە',
+'action-siteadmin' => 'ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
+'recentchanges' => 'يېقىنقى ئۆزگەرتىشلەر',
+'recentchanges-legend' => 'يېقىنقى ئۆزگەرتىش تاللانمىسى',
+'recentchangestext' => 'بۇ wiki نىڭ يېقىنقى ئۆزگىرىشىنى ئىز قوغلا.',
+'recentchanges-feed-description' => 'بۇ قانالنىڭ wiki دىكى يېقىنقى ئۆزگىرىشىنى ئىز قوغلا.',
+'recentchanges-label-legend' => 'رەسىم چۈشەندۈرۈشى :$1',
+'recentchanges-legend-newpage' => '$1 - يېڭى بەت',
+'recentchanges-label-newpage' => 'بۇ قېتىملىق تەھىر يېڭى بەتتىن بىرنى قۇرىدۇ',
+'recentchanges-legend-minor' => '$1 - ئازراقلا تەھرىر',
+'recentchanges-label-minor' => 'بۇ ئازراقلا تەھرىرلەش',
+'recentchanges-legend-bot' => '$1 - ماشىنا ئادەم تەھرىرى',
+'recentchanges-label-bot' => 'بۇ تەھرىرنى ماشىنا ئادەم ئېلىپ بارغان',
+'recentchanges-legend-unpatrolled' => '$1 - كۆزىتىلمىگەن تەھرىر',
+'recentchanges-label-unpatrolled' => 'بۇ تەھرىر تېخى كۆزىتىلمىگەن',
+'rcnote' => "تۆۋەندىكى $4 $5 يېقىنقى {{PLURAL:$2|كۈن|'''$2''' كۈن}} ئىچىدىكى {{PLURAL:$1| '''1''' ئۆزگەرتىش| '''$1''' ئۆزگەرتىش}} خاتىرىسى",
+'rcnotefrom' => "تۆۋەندىكىسى '''$2''' نىڭ ئۆزگەرتىشى (ئەڭ كۆپ بولغاندا '''$1''' كۆرسىتىدۇ )",
+'rclistfrom' => '$1 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
+'rcshowhideminor' => '$1 ئازراقلا تەھرىر',
+'rcshowhidebots' => '$1 ماشىنا ئادەمنىڭ تەھرىرى',
+'rcshowhideliu' => '$1 تىزىمغا كىرگەن ئىشلەتكۈچىنىڭ تەھرىرى',
+'rcshowhideanons' => '$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى',
+'rcshowhidepatr' => '$1 كۆزىتىلگەن تەھرىر',
+'rcshowhidemine' => '$1 مېنىڭ تەھرىرىم',
+'rclinks' => 'يېقىنقى $2 كۈن ئىچىدىكى ئەڭ يېڭى $1 قېتىملىق ئۆزگەرتىشنى كۆرسەت. <br />$3',
+'diff' => 'پەرق',
+'hist' => 'تارىخ',
+'hide' => 'يوشۇر',
+'show' => 'كۆرسەت',
+'minoreditletter' => 'ئازراقلا',
+'newpageletter' => 'يېڭى',
+'boteditletter' => 'ماشىنا ئادەم',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|ئىشلەتكۈچى|ئىشلەتكۈچى}}كۆزىتىۋاتىدۇ]',
+'rc_categories' => 'تۈر چېگرىسى ("|" بىلەن ئايرىلىدۇ )',
+'rc_categories_any' => 'خالىغان',
+'newsectionsummary' => '* $1 * يېڭى ئابزاس',
+'rc-enhanced-expand' => 'تەپسىلاتىنى كۆرسەت (JavaScript قوللىشى زۆرۈر)',
+'rc-enhanced-hide' => 'تەپسىلاتىنى يوشۇر',
+
+# Recent changes linked
+'recentchangeslinked' => 'مۇناسىۋەتلىك ئۆزگەرتىشلەر',
+'recentchangeslinked-feed' => 'مۇناسىۋەتلىك ئۆزگەرتىشلەر',
+'recentchangeslinked-toolbox' => 'مۇناسىۋەتلىك ئۆزگەرتىشلەر',
+'recentchangeslinked-title' => '"$1" مۇناسىۋەتلىك ئۇلانما ئۆزگەردى',
+'recentchangeslinked-noresult' => 'بېرىلگەن ۋاقىتتا ئۇلانغان بەتلەردە ئۆزگىرىش يوق.',
+'recentchangeslinked-summary' => "بۇ ئالاھىدە بەت يۈزى كۆرسەتكەن بەتتىن ئۇلىنىپ چىققان يېقىنقى ئۆزگەرتىش تىزىملىكى (ياكى ئالاھىدە تۈرنىڭ ئەزاسى).
+ [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]] دىكى بەت يۈزى '''توم''' كۆرسىتىلىدۇ.",
+'recentchangeslinked-page' => 'بەت ئاتى:',
+'recentchangeslinked-to' => 'بېرىلگەن بەتكە ئۇلانغان ئۆزگەرتىشنى كۆرسەت',
+
+# Upload
+'upload' => 'ھۆججەت يۈكلە',
+'uploadbtn' => 'ھۆججەت يۈكلە',
+'reuploaddesc' => 'يۈكلەشتىن ۋاز كېچىپ، يۈكلەش كۆزنىكىگە قايت',
+'upload-tryagain' => 'ئۆزگەرتىلگەن ھۆججەت چۈشەندۈرۈشى يوللا',
+'uploadnologin' => 'تىزىمغا كىرمىدى',
+'uploadnologintext' => ' سىز [[Special:UserLogin|تىزىمغا كىر]]سىڭىز ئاندىن ھۆججەت يوللىيالايسىز.',
+'upload_directory_missing' => 'يۈكلەش مۇندەرىجىسى ($1) يوقالغان، تور بەت مۇلازىمىتىرى قۇرالمايدۇ.',
+'upload_directory_read_only' => 'تور مۇلازىمىتىرىنىڭ يۈكلەش مۇندەرىجىسى ($1) گە يېزىش ھوقۇقى يوق.',
+'uploaderror' => 'يۈكلەش خاتالىقى',
+'uploadtext' => "تۆۋەندىكى كۆزنەكنى ئىشلىتىپ ھۆججەت يۈكلەڭ.
+ئىلگىرى يۈكلەنگەن ھۆججەتلەرنى كۆرۈش ياكى ئىزدەشتە [[Special:FileList|ھۆججەت يۈكلەش تىزىملىكى]]گە كىرىپ، (يېڭىدىن) يۈكلەنگەننى [[Special:Log/upload|يۈكلەش خاتىرىسى]]دە خاتىرىلىنىدۇ، ئۆچۈرۈلگىنى [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دە خاتىرىلىنىدۇ.
+
+بەتكە ھۆججەت يۈكلىمەكچى بولسىڭىز، تۆۋەندىكى ئۇلانما شەكلىنى ئىشلىتىڭ:
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' ھۆججەتنىڭ تولۇق نەشرىنى ئىشلىتىدۇ
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' 200 نۇقتا كەڭلىكتىكى سول ياندىكى رامكىدا قايتا پەيدا بولىدىغان 'ئالماشتۇرىدىغان تېكست' چۈشەندۈرۈشىنى ئىشلىتىدۇ.
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' ھۆججەتنى كۆرسەتمەيلا بىۋاسىتە ئۇلىنىدۇ",
+'upload-permitted' => 'يول قويىدىغان ھۆججەت تىپى: $1',
+'upload-preferred' => 'تەۋسىيىلىك ھۆججەت تىپى: $1',
+'upload-prohibited' => 'چەكلەيدىغان ھۆججەت تىپى: $1',
+'uploadlog' => 'يۈكلەش خاتىرىسى',
+'uploadlogpage' => 'خاتىرە يۈكلە',
+'uploadlogpagetext' => 'تۆۋەندىكىسى يېقىندا يوللانغان ھۆججەت تىزىملىكى.\\n
+ [[Special:NewFiles|يېڭى ھۆججەت كارىدورى]]دىن تېخىمۇ كۆپ سۈرەتلەرنى كۆرۈڭ.',
+'filename' => 'ھۆججەت ئاتى',
+'filedesc' => 'ئۈزۈندە',
+'fileuploadsummary' => 'ئۈزۈندە',
+'filereuploadsummary' => 'ھۆججەت ئۆزگۈرۈشى:',
+'filestatus' => 'نەشر ھوقۇقى ھالىتى:',
+'filesource' => 'مەنبە:',
+'uploadedfiles' => 'يۈكلەنگەن ھۆججەتلەر',
+'ignorewarning' => 'ئاگاھلاندۇرۇشقا پەرۋا قىلماي ھۆججەتنى ساقلا',
+'ignorewarnings' => 'بارلىق ئاگاھلاندۇرۇشقا پەرۋا قىلما',
+'minlength1' => 'ھۆججەت ئاتى ئاز دېگەندە بىر ھەرپ بولۇشى لازىم.',
+'illegalfilename' => 'ھۆججەت ئاتى "$1"دا ماۋزۇدا چەكلىنىدىغان ھەرپ بار.
+ھۆججەت ئاتىنى ئۆزگەرتىپ ئاندىن يۈكلەشنى قايتا سىناڭ.',
+'badfilename' => 'ھۆججەت ئاتى ئۆزگەرتىلدى "$1".',
+'filetype-mime-mismatch' => 'ھۆججەت كېڭەيتىلگەن ئاتى MIME تىپى بىلەن ماسلاشمىدى.',
+'filetype-badmime' => 'ھۆججەتنىڭ MIME تىپى "$1" يۈكلەشكە يول قويىدىغان ھۆججەت شەكلى ئەمەس.',
+'filetype-bad-ie-mime' => 'بۇ ھۆججەتنى يۈكلىگىلى بولمايدۇ، چۈنكى Internet Explorer ئۇنى "$1" دەپ بايقىدى، ئۇ يول قويۇلمايدىغان يوشۇرۇن خەۋپى بار ھۆججەت تىپى.',
+'filetype-unwanted-type' => "'''\".\$1\"''' لازىمى يوق ھۆججەت تىپى.
+تەۋسىيە قىلىدىغان {{PLURAL:\$3|بىر|بىر قانچە}} خىل ھۆججەت تىپى \$2.",
+'filetype-banned-type' => "'''\".\$1\"''' يول قويمايدىغان ھۆججەت تىپى.
+يول قويىدىغان {{PLURAL:\$3|بىر|بىر قانچە}} ھۆججەت تىپى \$2.",
+'filetype-missing' => 'بۇ ھۆججەتنىڭ كېڭەيتىلگەن ئاتى يوق (مەسىلەن ".jpg").',
+'large-file' => 'تەۋسىيە قىلىنىدىغان ھۆججەت چوڭلۇقى $1 دىن ئېشىپ كەتمەيدۇ؛
+بۇ ھۆججەتنىڭ چوڭلۇقى $2.',
+'largefileserver' => 'بۇ ھۆججەتنىڭ چوڭلۇقى مۇلازىمىتىر سەپلىمىسى يول قويىدىغان ھۆججەتتىنمۇ چوڭ.',
+'emptyfile' => 'سىز يۈكلىگەن ھۆججەت قۇرۇقتەك تۇرىدۇ.
+بۇ ھۆججەت ئاتى خاتا كىرگۈزگەنلىكتىن بولۇشى مۇمكىن.
+سىز راستىنلا بۇ ھۆججەتنى يۈكلەيدىغانلىقىڭىزنى تەكشۈرۈڭ.',
+'fileexists' => "ئوخشاش ئاتتىكى ھۆججەت مەۋجۇد، ئەگەر ئۇنى ئۆزگەرتىشنى جەزملىيەلمىسىڭىز '''<tt>[[:$1]]</tt>''' نى تەكشۈرۈڭ.
+[[$1|thumb]]",
+'filepageexists' => "بۇ ھۆججەتنىڭ چۈشەندۈرۈش بېتى '''<tt>[[:$1]]</tt>''' دا قۇرۇلغان، ئەمما بۇ ئاتلىق ھۆججەت مەۋجۇد ئەمەس.
+سىز كىرگۈزگەن ئۈزۈندە چۈشەندۈرۈش بېتىدە كۆرۈنمەيدۇ.
+ئۈزۈندە شۇ جايدا كۆرۈنسۇن دەپ قارىسىڭىز، ئۆزىڭىز تەھرىرلەڭ.
+[[$1|thumb]]",
+'fileexists-extension' => "ئوخشاپ كېتىدىغان ئاتتىكى ھۆججەتتىن بىرى مەۋجۇد: [[$2|thumb]]
+* يۈكلىگەن ھۆججەتنىڭ ئاتى: '''<tt>[[:$1]]</tt>'''
+* مەۋجۇد ھۆججەتنىڭ ئاتى:'''<tt>[[:$2]]</tt>''
+باشقا ئاتتىن بىرنى تاللاڭ.",
+'fileexists-thumbnail-yes' => "بۇ ھۆججەت يەنە بىر سۈرەتنىڭ كىچىكلىتىلگەن نەشرىدەك تۇرىدۇ ''(كىچىك سۈرەت)''.
+[[$1|thumb]]
+بۇ ھۆججەتنى تەپسىلىي تەكشۈرۈڭ'''<tt>[[:$1]]</tt>'''.
+ئەگەر تەكشۈرۈلگەن ھۆججەت بىلەن ئەسلى چوڭلۇقتىكى سۈرەت ئوخشاش بىر پارچە سۈرەت بولسا، ئوشۇقچە كىچىك سۈرەت يوللىشىڭىزنىڭ ھاجىتى يوق.",
+'file-thumbnail-no' => "ھۆججەت ئاتى '''<tt>$1</tt>'''.
+ دىن باشلانغان، باشقا بىر پارچە سۈرەتنىڭ كىچىك سۈرىتى بولۇشى مۇمكىن ''(كىچىك سۈرەت)''.
+ئەگەر سىزدە ئەسلى چوڭلۇقتىكى نەشرى بولسا، ئۇنى يۈكلەڭ، بولمىسا ھۆججەت ئاتىنى ئۆزگەرتىڭ.",
+'fileexists-forbidden' => 'ئوخشاش ئاتتىكى ھۆججەت مەۋجۇد، قاپلىۋەتكىلى بولمايدۇ؛
+ئەگەر يەنىلا بۇ ھۆججەتنى يۈكلىمەكچى بولسىڭىز، كەينىگە قايتىپ، يېڭى ھۆججەت ئاتىدا يوللاڭ. [[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'ھەمبەھىر ھۆججەت ئامبىرىدا مۇشۇ ئاتتىكى ھۆججەت مەۋجۇد.
+ئەگەر يەنىلا بۇ ھۆججەتنى يۈكلىمەكچى بولسىڭىز، كەينىگە قايتىپ، يېڭى ھۆججەت ئاتىدا يوللاڭ.[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'بۇ ھۆججەت تۆۋەندىكى{{PLURAL:$1|بىر|بىر قانچە}} ھۆججەت بىلەن تەكرار:',
+'file-deleted-duplicate' => 'ئوخشاش ئاتتىكى بىر ھۆججەت ([[$1]]) بايىلا ئۆچۈرۈلگەن.
+سىز قايتا يۈكلەشتىن ئىلگىرى شۇ ھۆججەتنىڭ ئۆچۈرۈش خاتىرىسىنى تەكشۈرۈپ بېقىڭ.',
+'successfulupload' => 'مۇۋەپپەقىيەتلىك يۈكلەندى',
+'uploadwarning' => 'يۈكلەش ئاگاھلاندۇرۇشى',
+'uploadwarning-text' => 'تۆۋەندىكى ھۆججەت چۈشەندۈرۈشىنى ئۆزگەرتىپ ئاندىن قايتا سىناڭ.',
+'savefile' => 'ھۆججەت ساقلا',
+'uploadedimage' => '"[[$1]]" يۈكلەنگەن',
+'overwroteimage' => ' "[[$1]]" نىڭ يېڭى نەشرى يۈكلەندى',
+'uploaddisabled' => 'يۈكلەش چەكلەنگەن',
+'uploaddisabledtext' => 'ھۆججەت يۈكلەش چەكلەنگەن.',
+'php-uploaddisabledtext' => 'PHP ھۆججەت يۈكلەش چەكلەنگەن.
+ file_uploads تەڭشىكىنى تەكشۈرۈڭ.',
+'uploadscripted' => 'بۇ ھۆججەتتە توركۆرگۈ خاتا يېشىدىغان HTML ياكى قوليازما كودىنى ئۆز ئىچىگە ئالغان.',
+'uploadvirus' => 'بۇ ھۆججەتتە ۋىرۇس بار!
+تەپسىلاتى: $1',
+'upload-source' => 'مەنبە ھۆججەت',
+'sourcefilename' => 'مەنبە ھۆججەت ئاتى:',
+'sourceurl' => 'مەنبە URL:',
+'destfilename' => 'نىشان ھۆججەت ئاتى:',
+'upload-maxfilesize' => 'ئەڭ چوڭ ھۆججەت چوڭلۇقى: $1',
+'upload-description' => 'ھۆججەت چۈشەندۈرۈشى',
+'upload-options' => 'يۈكلەش تاللانما',
+'watchthisupload' => 'بۇ ھۆججەتنى كۆزەت',
+'filewasdeleted' => 'بايىلا ئوخشاش ئاتتىكى بىر ھۆججەت يوللىنىپ، ئارقىدىنلا ئۆچۈرۈلگەن.
+بۇ ھۆججەتنى يۈكلەشتىن ئىلگىرى، $1 نى تەكشۈرۈپ بېقىڭ.',
+'upload-wasdeleted' => "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى يۈكلەۋاتىسىز.'''
+بۇ ھۆججەتنى قايتا يۈكلەشنىڭ مۇۋاپىق ياكى ئەمەسلىكىنى ئويلىنىپ بېقىڭ.
+قولايلىق بولۇشى ئۈچۈن بۇ ھۆججەتنىڭ ئۆچۈرۈش خاتىرىسى تۆۋەندە تەمىنلەندى:",
+'filename-bad-prefix' => "سىز يۈكلىگەن ھۆججەتنىڭ ئاتى'''\\\"\$1\\\"''' دىن باشلىنىپتۇ، بۇ خىل مەنىسى يوق ھۆججەت ئاتىنى رەقەملىك فوتو ئاپپارات ئۆزلۈكىدىن ھاسىل قىلىدۇ.
+ھۆججىتىڭىزگە تېخىمۇ ئەھمىيەتلىك ھۆججەت ئاتىدىن بىرنى تاللاڭ.",
+
+'upload-proto-error' => 'كېلىشىم خاتالىقى',
+'upload-proto-error-text' => 'يىراقتىن يۈكلەيدىغان URL <code>http://</code> ياكى <code>ftp://</code> دىن باشلىنىدۇ.',
+'upload-file-error' => 'ئىچكى خاتالىق',
+'upload-file-error-text' => 'مۇلازىمىتىردا ۋاقىتلىق ھۆججەت قۇرۇۋاتقاندا ئىچكى خاتالىق يۈز بەردى.
+ [[Special:ListUsers/sysop|باشقۇرغۇچى]] بىلەن ئالاقىلىشىڭ.',
+'upload-misc-error' => 'نامەلۇم يۈكلەش خاتالىقى',
+'upload-misc-error-text' => 'يۈكلىگەندە نامەلۇم خاتالىق يۈز بەردى.
+سىز ئىشلەتكەن URL نىڭ توغرا ھەمدە زىيارەت قىلغىلى بولىدىغانلىقىنى جەزملەپ ئاندىن قايتا سىناڭ.
+ئەگەر مەسىلە يەنىلا مەۋجۇد بولسا [[Special:ListUsers/sysop|باشقۇرغۇچى]] بىلەن ئالاقىلىشىڭ.',
+'upload-too-many-redirects' => 'URL دا بەك كۆپ قايتا نىشانلاش مەۋجۇد',
+'upload-unknown-size' => 'نامەلۇم چوڭلۇق',
+'upload-http-error' => 'بىر HTTP خاتالىقى مەۋجۇد: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'زىيارەت رەت قىلىندى',
+'img-auth-nopathinfo' => 'PATH_INFO يوقالغان.
+مۇلازىمىتىرىڭىز بۇ ئۇچۇرنى يوللاشنى تەڭشىمىگەن.
+ئۇ CGI ئاساسىدا بولغاچقا img_auth نى قوللىمايدۇ. تۆۋەندىكى ئادرېستىن كۆرۈڭ
+http://www.mediawiki.org/wiki/Manual:Image_Authorization',
+'img-auth-notindir' => 'سەپلەنگەن يۈكلەش مۇندەرىجىسىدىن ئىلتىماس قىلغان يولنى تاپالمىدى.',
+'img-auth-badtitle' => '"$1" ئۈچۈن ئىناۋەتلىك ماۋزۇ قۇرالمىدى.',
+'img-auth-nologinnWL' => 'سىز تېخى تىزىمغا كىرمىدىڭىز، "$1" ئاق تىزىملىكتە ئەمەس.',
+'img-auth-nofile' => '"$1" ھۆججەت مەۋجۇد ئەمەس.',
+'img-auth-isdir' => 'سىز "$1" مۇندەرىجىنى زىيارەت قىلىشنى سىناۋاتىسىز.
+پەقەت ھۆججەت زىيارەت قىلىشقىلا يول قويۇلغان.',
+'img-auth-streaming' => '"$1" ئاقتۇرۇۋاتىدۇ.',
+'img-auth-public' => 'img_auth.php نىڭ ئىقتىدارى شەخسىي wiki دىن ھۆججەت يوللاش.
+بۇ wiki ئاممىۋى wiki قىلىپ سەپلەنگەن.
+بىخەتەرلىكنى ئويلۇشۇپ، img_auth.php چەكلەندى.',
+'img-auth-noread' => 'ئىشلەتكۈچىنىڭ "$1" نى ئوقۇش ھوقۇقى يوق.',
+
+# HTTP errors
+'http-invalid-url' => 'ئىناۋەتسىز URL: $1',
+'http-invalid-scheme' => '"$1" غا ئىگە URL لارنى قوللىمايدۇ.',
+'http-request-error' => 'نامەلۇم خاتالىق سەۋەبىدىن HTTP ئىلتىماسى مەغلۇپ بولدى.',
+'http-read-error' => 'HTTP ئوقۇش خاتالىقى.',
+'http-timed-out' => 'HTTP ئىلتىماسى ۋاقىت ھالقىدى.',
+'http-curl-error' => 'URL ئاجراتقاندا خاتالىق كۆرۈلدى: $1',
+'http-host-unreachable' => 'URL غا ئۇلىشالمىدى.',
+'http-bad-status' => 'HTTP ئىلتىماس قىلغاندا مەسىلە كۆرۈلدى: $1 $2',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL زىيارەت قىلالمىدى.',
+'upload-curl-error6-text' => 'تەمىنلىگەن URL نى زىيارەت قىلالمىدى.
+URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلىشنىڭ نورماللىقىنى قايتا تەكشۈرۈڭ.',
+'upload-curl-error28' => 'يۈكلەش ۋاقىت ھالقىدى',
+'upload-curl-error28-text' => 'بېكەتنىڭ ئىنكاس قايتۇرۇش ۋاقتى بەك ئۇزۇن.
+بۇ بېكەتنى زىيارەت قىلىشنىڭ نورماللىقىنى تەكشۈرۈڭ، سەل تۇرۇپ قايتا سىناڭ.
+تور زىيارەت قىلىش ئارىسالدى ۋاقتىدا قايتا سىناپ بېقىڭ.',
+
+'license' => 'ئىجازەت:',
+'license-header' => 'ئىجازەت',
+'nolicense' => 'تاللانمىغان',
+'license-nopreview' => '(ئالدىن كۆزىتەلمەيدۇ)',
+'upload_source_url' => '(ئىناۋەتلىك، URL نى ئاشكارا زىيارەت قىلغىلى بولىدۇ)',
+'upload_source_file' => '(كومپيۇتېرىڭىزدىكى بىر ھۆججەت)',
+
+# Special:ListFiles
+'listfiles-summary' => 'بۇ ئالاھىدە بەتتە يۈكلەنگەن ھەممە ھۆججەت كۆرسىتىلىدۇ.
+كۆڭۈلدىكى تەڭشەكتە ئاخىرىدا يۈكلەنگەن ھۆججەت بۇ تىزىملىكنىڭ چوققىسىدا كۆرسىتىلىدۇ.
+خالىغان ستون ماۋزۇسى چېكىلسە تىزىلىش تەرتىپى ئۆزگىرىدۇ.',
+'listfiles_search_for' => 'ۋاسىتە ئاتى بويىچە ئىزدە:',
+'imgfile' => 'ھۆججەت',
+'listfiles' => 'ھۆججەت تىزىملىكى',
+'listfiles_date' => 'چېسلا',
+'listfiles_name' => 'ئاتى',
+'listfiles_user' => 'ئىشلەتكۈچى',
+'listfiles_size' => 'چوڭلۇقى',
+'listfiles_description' => 'چۈشەندۈرۈش',
+'listfiles_count' => 'نەشرى',
+
+# File description page
+'file-anchor-link' => 'ھۆججەت',
+'filehist' => 'ھۆججەت تارىخى',
+'filehist-help' => 'چېسلا/ۋاقىت چېكىلسە ئەينى ۋاقىتتا كۆرۈلگەن ھۆججەتنى كۆرسىتىدۇ.',
+'filehist-deleteall' => 'ھەممىنى ئۆچۈر',
+'filehist-deleteone' => 'ئۆچۈر',
+'filehist-revert' => 'قايتۇر',
+'filehist-current' => 'نۆۋەتتىكى',
+'filehist-datetime' => 'چېسلا/ۋاقىت',
+'filehist-thumb' => 'كىچىك سۈرەت',
+'filehist-thumbtext' => '$1 نىڭ كىچىك سۈرەت نەشرى',
+'filehist-nothumb' => 'كىچىك سۈرەت يوق',
+'filehist-user' => 'ئىشلەتكۈچى',
+'filehist-dimensions' => 'ئۆلچەم',
+'filehist-filesize' => 'ھۆججەت چوڭلۇقى',
+'filehist-comment' => 'ئىزاھات',
+'filehist-missing' => 'ھۆججەت يوقالغان',
+'imagelinks' => 'ھۆججەت ئۇلىنىشى',
+'linkstoimage' => 'تۆۋەندىكى {{PLURAL:$1|بەت|$1 بەت}} بۇ ھۆججەتكە ئۇلانغان:',
+'linkstoimage-more' => '{{PLURAL:$1|دىن كۆپ بەت ئۇلانما|دىن كۆپ بەت ئۇلانما}} بۇ ھۆججەتكە ئۇلانغان.
+تۆۋەندىكى تىزىملىك پەقەت بۇ ھۆججەتنىڭ ئەڭ بېشىدىكى {{PLURAL:$1|بەت| $1 بەت}} ئۇلىنىشىنىلا كۆرسىتىدۇ.
+ [[Special:WhatLinksHere/$2|تولۇق تىزىملىك]]نى تەمىنلىيەلەيدۇ.',
+'nolinkstoimage' => 'بۇ ھۆججەتكە ئۇلانغان بەت يوق.',
+'morelinkstoimage' => 'بۇ ھۆججەتكە ئۇلانغان [[Special:WhatLinksHere/$1|تېخىمۇكۆپ ئۇلانما]] كۆرسەت.',
+'redirectstofile' => 'تۆۋەندىكى {{PLURAL:$1|ھۆججەت|$1 ھۆججەت}} بۇ ھۆججەتكە نىشانلانغان.',
+'duplicatesoffile' => 'تۆۋەندىكى {{PLURAL:$1|ھۆججەت|$1 ھۆججەت}} بۇ ھۆججەت بىلەن تەكرارلانغان ([[Special:FileDuplicateSearch/$2|تېخىمۇ كۆپ تەپسىلاتى]]):',
+'sharedupload' => 'بۇ ھۆججەت $1 دىن كەلگەن، ئۇ باشقا قۇرۇلۇشتا ئىشلىتىلىۋاتقان بولۇشى مۇمكىن.',
+'sharedupload-desc-there' => 'بۇ ھۆججەت $1 دىن كەلگەن، ئۇ باشقا قۇرۇلۇشلاردا ئىشلىتىلىدىغان بولۇشى مۇمكىن
+[$2 ھۆججەت چۈشەندۈرۈش بېتى]دىكى مۇناسىۋەتلىك ئۇچۇردىن كۆرۈڭ.',
+'sharedupload-desc-here' => 'بۇ ھۆججەت $1 دىن كەلگەن، ئۇ باشقا قۇرۇلۇشتا ئىشلىتىلىشى مۇمكىن.
+[$2 ھۆججەت چۈشەندۈرۈش بېتى] نىڭ چۈشەندۈرۈشى تۆۋەندە كۆرسىتىلىدۇ.',
+'filepage-nofile' => 'بۇ ئاتلىق ھۆججەت مەۋجۇد ئەمەس.',
+'filepage-nofile-link' => '[$1 يۈكلىيەلەيسىز]بۇ ئاتلىق ھۆججەت مەۋجۇد ئەمەس، ئەمما سىز.',
+'uploadnewversion-linktext' => 'بۇ ھۆججەتنىڭ يېڭى نەشرىنى يۈكلە',
+'shared-repo-from' => 'مەنبەسى $1',
+'shared-repo' => 'ھەمبەھىر ھۆججەت ئامبىرى',
+
+# File reversion
+'filerevert' => '$1 ئەسلىگە قايتۇر',
+'filerevert-legend' => 'ھۆججەتنى ئەسلىگە قايتۇر',
+'filerevert-intro' => "سىز ئەسلىگە قايتۇرۇۋاتقان ھۆججەت '''[[Media:$1|$1]]''' دىن [$4 $3، $2 نىڭ نەشرى].",
+'filerevert-comment' => 'سەۋەب:',
+'filerevert-defaultcomment' => '$2، $1 نەشرى ئەسلىگە قايتۇرۇلدى.',
+'filerevert-submit' => 'ئەسلىگە قايتۇر',
+'filerevert-success' => "'''[[Media:$1|$1]]''' ئەسلىگە قايتۇرۇلغان [$4 نىڭ نەشرى $3, $2].",
+'filerevert-badversion' => 'بۇ ھۆججەت تەمىنلىگەن ۋاقىت تامغىسىنىڭ ئالدىنقى يەرلىك نەشرى يوق.',
+
+# File deletion
+'filedelete' => '$1 ئۆچۈر',
+'filedelete-legend' => 'ھۆججەت ئۆچۈر',
+'filedelete-intro' => "سىز ھۆججەت '''[[Media:$1|$1]]''' ۋە ئۇنىڭ ھەممە تارىخىنى ئۆچۈرۈۋاتىسىز.",
+'filedelete-intro-old' => "'''[[Media:$1|$1]]''' نىڭ [$4 $3, $2] نەشرىنى ئۆچۈرۈۋاتىسىز.",
+'filedelete-comment' => 'سەۋەب:',
+'filedelete-submit' => 'ئۆچۈر',
+'filedelete-success' => "'''$1''' ئۆچۈرۈلدى.",
+'filedelete-success-old' => "'''[[Media:$1|$1]]''' نىڭ $3, $2 نەشرى ئۆچۈرۈلدى.",
+'filedelete-nofile' => "'''$1''' مەۋجۇد ئەمەس.",
+'filedelete-nofile-old' => "خاسلىقى بەلگىلەنگەن ئەھۋالدا بۇ جايدا '''$1''' نىڭ ساقلانغان نەشرى يوق.",
+'filedelete-otherreason' => 'باشقا/قوشۇمچە سەۋەب:',
+'filedelete-reason-otherlist' => 'باشقا سەۋەب',
+'filedelete-reason-dropdown' => '* ئادەتتىكى ئۆچۈرۈش سەۋەبى
+** نەشر ھوقۇقىغا خىلاپ
+** تەكرار ھۆججەت',
+'filedelete-edit-reasonlist' => 'ئۆچۈرۈش سەۋەبى تەھرىر',
+'filedelete-maintenance' => 'ئاسرىلىۋاتقاندا ھۆججەت ئۆچۈرۈش ۋە ئەسلىگە كەلتۈرۈش ۋاقىتلىق چەكلىنىدۇ.',
+
+# MIME search
+'mimesearch' => 'MIME ئىزدە',
+'mimesearch-summary' => 'بۇ بەت MIME تىپلىق سۈزگۈچنى قوزغاتقان.
+كىرگۈزۈش: مەزمۇن تىپى/تارماق تىپ، مەسىلەن <tt>image/jpeg</tt>.',
+'mimetype' => 'MIME تىپى:',
+'download' => 'چۈشۈر',
+
+# Unwatched pages
+'unwatchedpages' => 'كۆزەت قىلىنمىغان بەتلەر',
+
+# List redirects
+'listredirects' => 'قايتا نىشانلانغان بەتلەر تىزىملىكى',
+
+# Unused templates
+'unusedtemplates' => 'ئىشلىتىلمىگەن قېلىپلار',
+'unusedtemplatestext' => 'بۇ بەتتە{{ns:template}} ئات بوشلۇقىدىكى تېخى باشقا بەتلەر ئىشلەتمىگەن ھەممە بەتلەرنى كۆرسىتىدۇ. \\n
+بۇ قېلىپلارنى ئۆچۈرۈشتىن ئىلگىرى بۇ قېلىپقا ئۇلانغان باشقا بەتلەرنى تەكشۈرۈڭ.',
+'unusedtemplateswlh' => 'باشقا ئۇلانما',
+
+# Random page
+'randompage' => 'ئىختىيارىي بەت',
+'randompage-nopages' => 'تۆۋەندىكى {{PLURAL:$2|ئات بوشلۇقى|ئات بوشلۇقى}}دا بەت يوق: $1.',
+
+# Random redirect
+'randomredirect' => 'ئىختىيارىي قايتا نىشانلانغان بەت',
+'randomredirect-nopages' => '"$1" ئات بوشلۇقىدا قايتا نىشانلانغان بەت يوق.',
+
+# Statistics
+'statistics' => 'ستاتىستىكا',
+'statistics-header-pages' => 'بەت ستاتىستىكا',
+'statistics-header-edits' => 'تەھرىر ستاتىستىكا',
+'statistics-header-views' => 'كۆرۈش ستاتىستىكا',
+'statistics-header-users' => 'ئىشلەتكۈچى ستاتىستىكا',
+'statistics-header-hooks' => 'باشقا سىتاتىستىكا',
+'statistics-articles' => 'مەزمۇن بېتى',
+'statistics-pages' => 'بەتلەر',
+'statistics-pages-desc' => 'wiki دىكى ھەممە بەتلەر، مۇنازىرە بېتى، قايتا نىشانلاش قاتارلىقلارنى ئۆز ئىچىگە ئالىدۇ.',
+'statistics-files' => 'يۈكلەنگەن ھۆججەتلەر',
+'statistics-edits' => ' {{SITENAME}} تەڭشىگەن بەتنىڭ تەھرىر سانى',
+'statistics-edits-average' => 'ھەر بىر بەتنىڭ ئوتتۇرىچە تەھرىر سانى',
+'statistics-views-total' => 'كۆرسىتىش ئومۇمى سانى',
+'statistics-views-peredit' => 'ھەر قېتىملىق تەھرىرنى كۆرسىتىش سانى',
+'statistics-jobqueue' => '[http://www.mediawiki.org/wiki/Manual:Job_queue خىزمەت قاتارى] ئۇزۇنلۇقى',
+'statistics-users' => 'خەتلەتكەن [[Special:ListUsers|ئىشلەتكۈچى]]',
+'statistics-users-active' => 'ئاكتىپ ئىشلەتكۈچى',
+'statistics-users-active-desc' => 'ئالدىنقى {{PLURAL:$1|كۈن|$1 كۈن}} دىكى مەشغۇلات قىلغان ئىشلەتكۈچىلەر',
+'statistics-mostpopular' => 'ئەڭ كۆپ كۆرۈلگەن بەتلەر',
+
+'disambiguations' => 'ئىككى بىسلىق بەتنى يوقىتىش',
+'disambiguationspage' => 'Template:ئىككى بىسلىق بەت',
+'disambiguations-text' => "تۆۋەندىكى بەت '''ئىككى بىسلىق بەت'''كە ئۇلانغان.
+ئەمما ئۇلار مۇۋاپىق ماۋزۇغا ئۇلىنىشى كېرەك ئىدى.<br />
+ئەگەر بىر بەت [[MediaWiki:Disambiguationspage]] غا ئۇلانغان بولسا ئىككى بىسلىق بەت دەپ قارىلىدۇ.",
+
+'doubleredirects' => 'قوش قايتا نىشانلانغان بەت',
+'doubleredirectstext' => 'بۇ بەتتە قايتا نىشانلانغان بەت يەنە بىر قايتا نىشانلانغان بەتنى نىشانغانلىق تىزىملىكى كۆرسىتىلدى.
+ھەر بىر قۇردا بىرىنچى ۋە ئىككىنچى قايتا نىشانلانغان بەتنىڭ ئۇلانمىسىنى شۇنداقلا ئىككىنچى قايتا نىشانلانغان بەتنىڭ نىشانىنى ئۆز ئىچىگە ئالىدۇ، ئادەتتە كۆرسىتىلىدىغىنى "ھەقىقىي" نىشان بەت، مۇنداقچە ئېيتقاندا بىرىنچى نىشانلانغان بەت نىشانلايدىغان بەتتۇر.',
+'double-redirect-fixed-move' => '[[$1]] يۆتكەلدى.\\n
+ھازىر [[$2]] نى قايتا نىشانلىدى.',
+'double-redirect-fixer' => 'قايتا نىشانلانغان تۈزەتكۈچ',
+
+'brokenredirects' => 'بۇزۇق قايتا نىشانلانغان بەت',
+'brokenredirectstext' => 'تۆۋەندىكى قايتا نىشانلانغان بەت مەۋجۇد بولمىغان بەتنى كۆرسەتكەن:',
+'brokenredirects-edit' => 'تەھرىر',
+'brokenredirects-delete' => 'ئۆچۈر',
+
+'withoutinterwiki' => 'تىل ئۇلانمىسى يوق بەت',
+'withoutinterwiki-summary' => 'تۆۋەندىكى بەت باشقا تىلدىكى نەشرىگە ئۇلانمايدۇ.',
+'withoutinterwiki-legend' => 'ئالدى قوشۇلغۇچى',
+'withoutinterwiki-submit' => 'كۆرسەت',
+
+'fewestrevisions' => 'ئەڭ ئاز تۈزىتىلگەن بەتلەر',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|بايت|بايت}}',
+'ncategories' => '$1 {{PLURAL:$1|تۈر|تۈر}}',
+'nlinks' => '$1 {{PLURAL:$1|ئۇلانما|ئۇلانما}}',
+'nmembers' => '$1 {{PLURAL:$1|ئەزا|ئەزا}}',
+'nrevisions' => '$1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}',
+'nviews' => '$1 {{PLURAL:$1|زىيارەت|زىيارەت}}',
+'specialpage-empty' => 'بۇ دوكلاتنىڭ نەتىجىسى يوق.',
+'lonelypages' => 'تەنھا بەت',
+'lonelypagestext' => 'تۆۋەندىكى بەت {{SITENAME}} دىكى باشقا بەتلەر بىلەن ئۇلانمىغان ياكى ئۆز ئىچىگە ئالمىغان.',
+'uncategorizedpages' => 'تۈرگە ئايرىلمىغان بەت',
+'uncategorizedcategories' => 'تۈرگە ئايرىلمىغان تۈر',
+'uncategorizedimages' => 'تۈرگە ئايرىلمىغان ھۆججەتلەر',
+'uncategorizedtemplates' => 'تۈرگە ئايرىلمىغان قېلىپلار',
+'unusedcategories' => 'ئىشلىتىلمىگەن تۈرلەر',
+'unusedimages' => 'ئىشلىتىلمىگەن ھۆججەتلەر',
+'popularpages' => 'جەلپكار بەتلەر',
+'wantedcategories' => 'لازىملىق تۈرلەر',
+'wantedpages' => 'كېرەكلىك بەتلەر',
+'wantedpages-badtitle' => 'نەتىجە گۇرۇپپىسىدىكى ئىناۋەتسىز ماۋزۇ: $1',
+'wantedfiles' => 'لازىملىق ھۆججەتلەر',
+'wantedtemplates' => 'لازىملىق قېلىپلار',
+'mostlinked' => 'ئەڭ كۆپ ئۇلانغان بەتلەر',
+'mostlinkedcategories' => 'ئەڭ كۆپ ئۇلانغان تۈرلەر',
+'mostlinkedtemplates' => 'ئەڭ كۆپ ئۇلانغان قېلىپلار',
+'mostcategories' => 'ئەڭ كۆپ تۈرگە ئايرىلغان بەتلەر',
+'mostimages' => 'ئەڭ كۆپ ئۇلانغان ھۆججەتلەر',
+'mostrevisions' => 'ئەڭ كۆپ تۈزىتىلگەن بەتلەر',
+'prefixindex' => 'ھەممە بەتنىڭ ئالدى قوشۇلغۇچىسى',
+'shortpages' => 'قىسقا بەتلەر',
+'longpages' => 'ئۇزۇن بەتلەر',
+'deadendpages' => 'ئۇلىنىشى ئۈزۈلگەن بەت',
+'deadendpagestext' => 'تۆۋەندىكى بەتلەر {{SITENAME}} دىكى باشقا بەتلەرگە ئۇلانمىغان.',
+'protectedpages' => 'قوغدالغان بەتلەر',
+'protectedpages-indef' => 'پەقەت قەرەلسىز قوغدالغان بەت',
+'protectedpages-cascade' => 'پەقەت زەنجىرسىمان قوغدالغان بەت',
+'protectedpagestext' => 'تۆۋەندىكى بەتلەر يۆتكەش ياكى تەھرىرلەشنىڭ ئالدىنى ئېلىش ئۈچۈن قوغدالغان',
+'protectedpagesempty' => 'بۇ پارامېتىرلاردا قوغدالغان بەت يوق.',
+'protectedtitles' => 'قوغدالغان ماۋزۇلار',
+'protectedtitlestext' => 'تۆۋەندىكى بەتلەر قۇرۇشتىن ساقلىنىش ئۈچۈن قوغدالغان',
+'protectedtitlesempty' => 'بۇ پارامېتىرلاردا قوغدالغان ماۋزۇ يوق',
+'listusers' => 'ئىشلەتكۈچى تىزىملىكى',
+'listusers-editsonly' => 'تەھرىرلەنگەن ئىشلەتكۈچىلەرنىلا كۆرسەت',
+'listusers-creationsort' => 'قۇرۇلغان ۋاقتى بويىچە تەرتىپلە',
+'usereditcount' => '$1 {{PLURAL:$1|قېتىم|قېتىم}} تەھرىرلەنگەن',
+'usercreated' => ' $1 $2 قۇرۇلغان',
+'newpages' => 'يېڭى بەتلەر',
+'newpages-username' => 'ئىشلەتكۇچى ئىسمى:',
+'ancientpages' => 'ئەڭ كونا بەتلەر',
+'move' => 'يۆتكە',
+'movethispage' => 'بۇ بەتنى يۆتكە',
+'unusedimagestext' => 'دىققەت باشقا بېكەتلەر URL ئارقىلىق بىۋاسىتە بۇ ھۆججەتكە ئۇلىنىشى مۇمكىن، شۇڭلاشقا بۇ جايدا تىزىلغان سۈرەتلەر يەنىلا ئىشلىتىلىۋاتقان بولۇشى مۇمكىن.',
+'unusedcategoriestext' => 'گەرچە باشقا بەت ياكى تۈرلەر قوللانمىغان بولسىمۇ ئەمما تىزىملىكتىكى تۈر بەتلىرى يەنىلا مەۋجۇد.',
+'notargettitle' => 'نىشان يوق',
+'notargettext' => 'سىز تېخى نىشان بەتتىن بىرنى بەلگىلىمىدىڭىز ياكى ئىشلەتكۈچى بۇ مەشغۇلاتنى ئېلىپ بارمىدى.',
+'nopagetitle' => 'بۇنداق نىشان بەت يوق',
+'nopagetext' => 'سىز بەلگىلىگەن نىشان بەت مەۋجۇد ئەمەس.',
+'pager-newer-n' => '{{PLURAL:$1|يېڭى 1|يېڭى $1}}',
+'pager-older-n' => '{{PLURAL:$1|كونا 1|كونا $1}}',
+'suppress' => 'نازارەتچى',
+
+# Book sources
+'booksources' => 'كىتاب مەنبەسى',
+'booksources-search-legend' => 'كىتاب مەنبەسى ئىزدە',
+'booksources-go' => 'يۆتكەل',
+'booksources-text' => 'تۆۋەندىكىسى بىر قىسىم تور كىتابخانىلىرىنىڭ تىزىملىكى، ئىچىدە سىز ئىزدىمەكچى بولغان كىتابلارنىڭ تېخىمۇ كۆپ ئۇچۇرى بولۇشى مۇمكىن:',
+'booksources-invalid-isbn' => 'تەمىنلىگەن ISBN نومۇرى توغرا ئەمەس. ئەسلى كۆچۈرگەن مەنبەدىكى نومۇردا خاتالىق بار يوقلۇقىنى تەكشۈرۈڭ.',
+
+# Special:Log
+'specialloguserlabel' => 'ئىشلەتكۈچى:',
+'speciallogtitlelabel' => 'ماۋزۇ:',
+'log' => 'خاتىرە',
+'all-logs-page' => 'بارلىق ئاممىۋى خاتىرە',
+'alllogstext' => '{{SITENAME}} بارلىق ئىشلەتكىلى بولىدىغان خاتىرىنى ئۇنىۋېرسال كۆرسىتىدۇ.
+سىز خاتىرە تىپى، ئىشلەتكۈچى ئاتى (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) نى تاللىيالايسىز ياكى مۇناسىۋەتلىك بەت (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) ئارقىلىق ئىزدەش دائىرىسىنى كىچىكلىتەلەيسىز.',
+'logempty' => 'خاتىرىدە ماس كېلىدىغان تۈر يوق.',
+'log-title-wildcard' => 'بۇ تېكست بىلەن باشلانغان ماۋزۇنى ئىزدە',
+
+# Special:AllPages
+'allpages' => 'ھەممە بەت',
+'alphaindexline' => '$1 دىن $2',
+'nextpage' => 'كەينى بەت ($1)',
+'prevpage' => 'ئالدىنقى بەت ($1)',
+'allpagesfrom' => 'باشلانغان بەتنى كۆرسەت:',
+'allpagesto' => 'بۇ جايدىن ئاياغلاشقان بەتنى كۆرسەت:',
+'allarticles' => 'ھەممە بەت',
+'allinnamespace' => 'ئالدى بەت ($1)',
+'allnotinnamespace' => 'ھەممە بەت ( $1 ئات بوشلۇقىغا تەۋە ئەمەس)',
+'allpagesprev' => 'ئالدى',
+'allpagesnext' => 'كەينى',
+'allpagessubmit' => 'يۆتكەل',
+'allpagesprefix' => 'ئالدى قوشۇلغۇچىسى بار بەتنى كۆرسەت:',
+'allpagesbadtitle' => 'بېرىلگەن بەت ماۋزۇسى قانۇنسىز ياكى ئىچكى تىلغا ئىگە ياكى ئىچكى wiki نىڭ ئالدى قوشۇلغۇچىسى.
+ئۇ ماۋزۇغا ئىشلەتكىلى بولمايدىغان بىر ياكى بىر قانچە ھەرپنى ئۆز ئىچىگە ئالغان بولۇشى مۇمكىن.',
+'allpages-bad-ns' => '{{SITENAME}} دا\\"$1" ئات بوشلۇقى يوق.',
+
+# Special:Categories
+'categories' => 'كاتېگورىيە',
+'categoriespagetext' => 'تۆۋەندىكى {{PLURAL:$1|كاتېگورىيە|كاتېگورىيە}}دە بەت ياكى ۋاسىتە بار.
+[[Special:UnusedCategories|ئىشلىتىلمىگەن كاتېگورىيە]] بۇ جايدا كۆرسىتىلمەيدۇ.
+شۇنىڭ بىلەن بىللە [[Special:WantedCategories|لازىملىق كاتېگورىيە]] نى كۆرۈڭ.',
+'categoriesfrom' => 'بۇ كاتېگورىيەدىن باشلانغاننى كۆرسەت:',
+'special-categories-sort-count' => 'سانى بويىچە تەرتىپلە',
+'special-categories-sort-abc' => 'ئېلىپبە بويىچە تەرتىپلە',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى',
+'deletedcontributions-title' => 'ئۆچۈرۈلگەن ئىشلەتكۈچى تۆھپىسى',
+'sp-deletedcontributions-contribs' => 'تۆھپە',
+
+# Special:LinkSearch
+'linksearch' => 'سىرتقى ئۇلانما',
+'linksearch-pat' => 'ئىزدەش شەكلى:',
+'linksearch-ns' => 'ئات بوشلۇقى:',
+'linksearch-ok' => 'ئىزدەش',
+'linksearch-text' => ' \\"*.wikipedia.org\\" غا ئوخشاش ئورتاق بەلگە ئىشلىتىشكە بولىدۇ. <br />
+قوللايدىغان كېلىشىم: <tt>$1</tt>',
+'linksearch-line' => '$1 بولسا $2 دىن ئۇلانغان',
+'linksearch-error' => 'ئورتاق بەلگەنى پەقەت ئاساسىي ئاپپارات ئاتىنىڭ باشىدىلا ئىشلەتكىلى بولىدۇ.',
+
+# Special:ListUsers
+'listusersfrom' => 'بېرىلگەن ئىشلەتكۈچى كۆرسىتىش شەرتى:',
+'listusers-submit' => 'كۆرسەت',
+'listusers-noresult' => 'ئىشلەتكۈچى تېپىلمىدى.',
+'listusers-blocked' => '(چەكلەنگەن)',
+
+# Special:ActiveUsers
+'activeusers' => 'ئاكتىپ ئەزالار تىزىملىكى',
+'activeusers-intro' => 'بۇ يېقىنقى $1 {{PLURAL:$1| كۈن|كۈن}}دىكى مەشغۇلات قىلغان ئىشلەتكۈچىلەر تىزىملىكى.',
+'activeusers-count' => 'يېقىنقى {{PLURAL:$3|كۈن|$3 كۈن}}دىكى $1 {{PLURAL:$1|تەھرىر|تەھرىر}} قېتىم سانى',
+'activeusers-from' => 'باشلانغان ئىشلەتكۈچىنى كۆرسەت:',
+'activeusers-hidebots' => 'ماشىنا ئادەمنى يوشۇر',
+'activeusers-hidesysops' => 'باشقۇرغۇچىنى يوشۇر',
+'activeusers-noresult' => 'ئىشلەتكۈچى تېپىلمىدى.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'ئىشلەتكۈچى قۇرغان خاتىرە',
+'newuserlogpagetext' => '(چەكلەنگەن)',
+'newuserlog-byemail' => 'ئىم ئىلخەتتە يوللاندى',
+'newuserlog-create-entry' => 'يېڭى ئىشلەتكۈچى ھېساباتى',
+'newuserlog-create2-entry' => '$1 يېڭى ھېسابات قۇرۇلدى',
+'newuserlog-autocreate-entry' => 'ئۆزلۈكىدىن قۇرۇلغان ھېسابات',
+
+# Special:ListGroupRights
+'listgrouprights' => 'ئىشلەتكۈچى گۇرۇپپا ھوقۇقى',
+'listgrouprights-summary' => 'تۆۋەندىكىسى بۇ wiki دا ئېنىقلىما بېرىلگەن ئىشلەتكۈچى ھوقۇق چېكى تىزىملىكى ۋە ئۇلارنىڭ زىيارەت ھوقۇق چېكى.
+تېخىمۇ كۆپ قىسمەن ھوقۇقنىڭ تەپسىلاتىنى [[{{MediaWiki:Listgrouprights-helppage}}|بۇ جاي]] دىن تاپالايسىز.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">بېرىلگەن ھوقۇق</span>
+* <span class="listgrouprights-revoked">قايتۇرۇۋېلىنغان ھوقۇق</span>',
+'listgrouprights-group' => 'گۇرۇپپا',
+'listgrouprights-rights' => 'ھوقۇق',
+'listgrouprights-helppage' => 'Help: گۇرۇپپا ھوقۇقى',
+'listgrouprights-members' => '(ئەزالار تىزىملىكى)',
+'listgrouprights-addgroup' => ' {{PLURAL:$2|بىر|بىر قانچە}} گۇرۇپپىغا قوشالايدۇ: $1',
+'listgrouprights-removegroup' => ' {{PLURAL:$2|بىر|بىر قانچە}} گۇرۇپپىدىن چىقىرىۋېتەلەيدۇ: $1',
+'listgrouprights-addgroup-all' => 'ھەممە گۇرۇپپىغا قوش',
+'listgrouprights-removegroup-all' => 'ھەممە گۇرۇپپىدىن چىقىرىۋەت',
+'listgrouprights-addgroup-self' => 'شەخسىي ھېساباتىمغا {{PLURAL:$2|گۇرۇپپا|گۇرۇپپا}} قوش: $1',
+'listgrouprights-removegroup-self' => 'شەخسىي ھېساباتىمدىن {{PLURAL:$2|گۇرۇپپا|گۇرۇپپا}} چىقىرىۋەت: $1',
+'listgrouprights-addgroup-self-all' => 'شەخسىي ھېساباتىمغا ھەممە گۇرۇپپىنى قوش',
+'listgrouprights-removegroup-self-all' => 'شەخسىي ھېساباتىمدىن ھەممە گۇرۇپپىنى چىقىرىۋەت',
+
+# E-mail user
+'mailnologin' => 'يوللايدىغان ئادرېس يوق',
+'mailnologintext' => 'سىز ئالدى بىلەن [[Special:UserLogin|تىزىمغا كىر]]ىپ، [[Special:Preferences|مايىللىق]] تەڭشىكىدە ئىناۋەتلىك ئېلخەت ئادرېسىڭىزدىن بىرسى بولغاندا ئاندىن باشقا ئىشلەتكۈچىلەرگە ئېلخەت يوللىيالايسىز.',
+'emailuser' => 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا',
+'emailpage' => 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا',
+'emailpagetext' => 'سىز تۆۋەندىكى جەدۋەلنى ئىشلىتىپ، بۇ ئىشلەتكۈچىگە ئېلخەت يوللىيالايسىز.
+ [[Special:Preferences|ئىشلەتكۈچى مايىللىقىڭىز]]دىكى ئېلخەت ئادرېسى "يوللىغۇچى" ستونىدا كۆرۈنىدۇ، مۇشۇنداق بولغاندا شۇ ئىشلەتكۈچى سىزگە بىۋاسىتە جاۋاب قايتۇرالايدۇ.',
+'usermailererror' => 'Mail ئوبيېكتى خاتالىق قايتۇردى:',
+'defemailsubject' => '{{SITENAME}} ئېلخەت',
+'noemailtitle' => 'ئېلخەت ئادرېس يوق',
+'noemailtext' => 'بۇ ئىشلەتكۈچى تېخى ئىناۋەتلىك ئېلخەت ئادرېسى بەلگىلىمىگەن.',
+'nowikiemailtitle' => 'ئېلخەتكە يول قويمايدۇ',
+'nowikiemailtext' => 'بۇ ئىشلەتكۈچى باشقىلارنىڭ ئېلخىتىنى قوبۇل قىلماسلىقنى تاللىغان.',
+'email-legend' => 'باشقا {{SITENAME}} ئىشلەتكۈچىگە ئېلخەت يوللا',
+'emailfrom' => 'يوللىغۇچى:',
+'emailto' => 'قوبۇللىغۇچى:',
+'emailsubject' => 'تېما:',
+'emailmessage' => 'ئۇچۇر:',
+'emailsend' => 'يوللا',
+'emailccme' => 'ئۇچۇرۇمنىڭ كۆچۈرۈلمىسىدىن بىرنى ئېلخىتىمگە يوللا.',
+'emailccsubject' => 'ئۇچۇرىڭىزنى كۆچۈرۈدىغان ئورۇن: $1: $2',
+'emailsent' => 'ئېلخەت يوللاندى',
+'emailsenttext' => 'ئېلخىتىڭىز يوللاندى.',
+'emailuserfooter' => '$1 بۇ ئېلخەتنى $2 غا {{SITENAME}} نىڭ "ئېلخەت ئىشلەتكۈچى" ئىقتىدارى ئارقىلىق يوللانغان.',
+
+# Watchlist
+'watchlist' => 'كۆزەت تىزىملىكىم',
+'mywatchlist' => 'كۆزەت تىزىملىكىم',
+'watchlistfor' => "('''$1''' نىڭ كۆزەت تىزىملىكى)",
+'nowatchlist' => 'كۆزەت تىزىملىكىڭىز بوش.',
+'watchlistanontext' => '$1 كۆزەت تىزىملىكىڭىزنى كۆرۈپ تەھرىرلەڭ.',
+'watchnologin' => 'تىزىمغا كىرمىدى',
+'watchnologintext' => 'سىز [[Special:UserLogin|تىزىمغا كىر]]گەندىلا ئاندىن كۆزەت تىزىملىكىڭىزنى ئۆزگەرتەلەيسىز.',
+'addedwatch' => 'كۆزەت تىزىملىكىگە قوشۇلدى',
+'addedwatchtext' => "\"[[:\$1]]\" بېتى [[Special:Watchlist|كۆزەت تىزىملىكى]]ڭىزگە قوشۇلدى.
+كەلگۈسىدە بۇ بەت ۋە ئۇنىڭ مۇنازىرە بېتىگە مۇناسىۋەتلىك ھەر قانداق ئۆزگەرتىش شۇ جايدا كۆرسىتىلىپلا قالماستىن،
+بەلكى [[Special:RecentChanges|يېقىنقى ئۆزگەرتىش تىزىملىكى]]دىمۇ تېخىمۇ ئاسان پەرقلەندۈرۈش ئۈچۈن '''توم''' شەكلىدە كۆرسىتىلىدۇ.",
+'removedwatch' => 'كۆزەت تىزىملىكىدىن چىقىرىۋەتتى',
+'removedwatchtext' => '"[[:$1]]" بېتى [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]]دىن چىقىرىۋېتىلدى.',
+'watch' => 'كۆزەت',
+'watchthispage' => 'بۇ بەتنى كۆزەت',
+'unwatch' => 'كۆزەت قىلما',
+'unwatchthispage' => 'كۆزەتنى توختات',
+'notanarticle' => 'مەزمۇن بېتى ئەمەس',
+'notvisiblerev' => 'تۈزىتىلگەن نەشرى ئۆچۈرۈلدى',
+'watchnochange' => 'كۆرسەتكەن ۋاقىت بۆلىكىدە سىزنىڭ كۆزەت بېتىڭىزدە ئۆزگىرىش بولمىدى.',
+'watchlist-details' => 'كۆزەت تىزىملىكىڭىزدە {{PLURAL:$1|$1 بەت|$1 بەت}} بار، مۇنازىرە بېتىنى ئۆز ئىچىگە ئالمايدۇ.',
+'wlheader-enotif' => '* ئېلخەتتە ئەسكەرتىش ئىقتىدارى قوزغىتىلدى.',
+'wlheader-showupdated' => "* سىز ئالدىنقى قېتىم كۆرگەندىن كېيىن ئۆزگەرتىلگەن بەتلەر '''توم''' كۆرۈنىدۇ",
+'watchmethod-recent' => 'كۆزىتىۋاتقان بەتنىڭ يېقىنقى ئۆزگەرتىشىنى تەكشۈر',
+'watchmethod-list' => 'كۆزىتىۋاتقان بەتنىڭ يېقىنقى ئۆزگەرتىشىنى تەكشۈر',
+'watchlistcontains' => 'كۆزەت تىزىملىكىڭىزدە $1 {{PLURAL:$1|بەت|بەت}} بار.',
+'iteminvalidname' => "بەت'$1' خاتالىقى، ئاتى ئىناۋەتسىز…",
+'wlnote' => "تۆۋەندىكىسى يېقىنقى {{PLURAL:$2|سائەت|'''$2''' سائەت}} ئىچىدىكى ئاخىرقى '{{PLURAL:$1|'''$1''' قېتىملىق|قېتىملىق}} ئۆزگەرتىش.",
+'wlshowlast' => 'يېقىنقى $1 سائەت $2 كۈن $3 نىڭ ئۆزگەرتىشىنى كۆرسەت',
+'watchlist-options' => 'كۆزەت تىزىملىك تاللانما',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'كۆزەت قىلىۋاتىدۇ…',
+'unwatching' => 'كۆزەت قىلمايۋاتىدۇ…',
+
+'enotif_mailer' => '{{SITENAME}} ئېلخەت ئۇقتۇرغۇچ',
+'enotif_reset' => 'ھەممە بەتكە ئوقۇلدى بەلگىسى سال',
+'enotif_newpagetext' => 'بۇ يېڭى بەت.',
+'enotif_impersonal_salutation' => '{{SITENAME}} ئىشلەتكۈچى',
+'changed' => 'ئۆزگەردى',
+'created' => 'قۇرغان',
+'enotif_subject' => '{{SITENAME}} نىڭ $PAGETITLE بېتىنى $CHANGEDORCREATED ئۆزگەرتكۈچى$PAGEEDITOR',
+'enotif_lastvisited' => 'ئالدىنقى قېتىملىق زىيارەتتىن كېيىنكى ھەممە ئۆزگەرتىشنى $1 كۆرۈڭ.',
+'enotif_lastdiff' => 'بۇ ئۆزگەرتىشنى كۆرمەكچى بولسىڭىز $1 كۆرۈڭ.',
+'enotif_anon_editor' => '$1 ئاتسىز ئىشلەتكۈچى',
+'enotif_body' => 'قەدىرلىك $WATCHINGUSERNAME،
+
+{{SITENAME}} بېكىتىدىكى $PAGETITLE ماۋزۇلۇق بەت $PAGEEDITDATE دا $PAGEEDITOR تەرىپىدىن $CHANGEDORCREATED،نۆۋەتتىكى تۈزىتىلگەن نەشرىنى كۆرۈش ئۈچۈن $PAGETITLE_URL غا يۆتكىلىڭ.
+
+$NEWPAGE
+
+تەھرىر ئۈزۈندىسى: $PAGESUMMARY $PAGEMINOREDIT
+
+بۇ تەھرىر بىلەن ئالاقىلىشىڭ:
+
+ئېلخەت: $PAGEEDITOR_EMAIL
+
+مەزكۇر بېكەت: $PAGEEDITOR_WIKI
+
+سىز بۇ بەتنى زىيارەت قىلىشتىن ئىلگىرى، كەلگۈسىدىكى ئۆزگەرتىش سىزگە ئۇقتۇرۇش قىلىنمايدۇ. سىز كۆزىتىۋاتقان بەت تىزىملىكىنىڭ ئۇقتۇرۇش بەلگىسىنى قايتا تەڭشىسىڭىزمۇ بولىدۇ.
+
+{{SITENAME}} ئۇقتۇرۇش سىستېمىسى
+
+--
+كۆزەت تىزىملىك تەڭشىكىڭىزنى ئۆزگەرتسىڭىز،
+{{fullurl:{{#special:Watchlist}}/edit}} زىيارەت قىلىڭ
+
+كۆزەت تىزىملىكىڭىزدىكى شۇ بەتنى ئۆچۈرمەكچى بولسىڭىز،
+$UNWATCHURL زىيارەت قىلىڭ
+
+قايتما ئىنكاس ياكى تېخىمۇ كۆپ ياردەمگە ئېرىشمەكچى بولسىڭىز:
+{{fullurl:{{MediaWiki:Helppage}}}} زىيارەت قىلىڭ',
+
+# Delete
+'deletepage' => 'بەت ئۆچۈر',
+'confirm' => 'جەزملە',
+'excontent' => "مەزمۇنى: '$1'",
+'excontentauthor' => "مەزمۇنى: '$1' (بىردىنبىر تۆھپىكار '[[Special:Contributions/$2|$2]]')",
+'exbeforeblank' => "تازىلاشتىن ئىلگىرىكى مەزمۇن: '$1'",
+'exblank' => 'بەت بوش',
+'delete-confirm' => 'ئۆچۈر "$1"',
+'delete-legend' => 'ئۆچۈر',
+'historywarning' => "'''ئاگاھلاندۇرۇش:''' سىز ئۆچۈرمەكچى بولغان بەتتە تەخمىنەن $1 {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} نەشرىنىڭ تارىخى بار:",
+'confirmdeletetext' => 'سىز بىر بەتنىڭ ھەممە تارىخىنى قوشۇپ ئۆچۈرمەكچى.
+بۇ مەشغۇلاتنى جەزملەپ، ئاقىۋىتىنى چۈشىنىڭ، شۇنىڭ بىلەن بىللە سىزنىڭ قىلمىشىڭىز [[{{MediaWiki:Policy-url}}|شەخسىيەت تاكتىكىسى]] غا ئۇيغۇن بولسۇن.',
+'actioncomplete' => 'مەشغۇلات تامام',
+'actionfailed' => 'مەشغۇلات مەغلۇپ بولدى',
+'deletedtext' => '"<nowiki>$1</nowiki>" ئۆچۈرۈلدى.
+ يېقىندا ئۆچۈرۈلگەن خاتىرىنى $2 دىن كۆرۈڭ.',
+'deletedarticle' => '"[[$1]]"ئۆچۈرۈلگەن',
+'suppressedarticle' => 'بىكار قىلىندى "[[$1]]"',
+'dellogpage' => 'ئۆچۈرۈش خاتىرىسى',
+'dellogpagetext' => 'تۆۋەندىكىسى يېقىندا ئۆچۈرۈلگەن خاتىرە تىزىملىكى.',
+'deletionlog' => 'ئۆچۈرۈش خاتىرىسى',
+'reverted' => 'يېقىنقى نەشرىگە ئەسلىگە كەلتۈرۈلدى',
+'deletecomment' => 'سەۋەب:',
+'deleteotherreason' => 'باشقا/قوشۇمچە سەۋەب:',
+'deletereasonotherlist' => 'باشقا سەۋەب',
+'deletereason-dropdown' => '*كۆپ ئىشلىتىدىغان ئۆچۈرۈش سەۋەبلىرى
+** ئاپتور ئىلتىماسى
+** نەشر ھوقۇقىغا خىلاپ
+** بۇزغۇنچىلىق',
+'delete-edit-reasonlist' => 'ئۆچۈرۈش سەۋەبى تەھرىر',
+'delete-toobig' => 'بۇ بەتنىڭ بەك كۆپ تەھرىرلەش تارىخى بار، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق. {{SITENAME}} قالايمىقانچىلىقنىڭ ئالدىنى ئېلىش ئۈچۈن بۇ خىل بەتلەرنى ئۆچۈرۈش مەشغۇلاتى چەكلەندى.',
+'delete-warning-toobig' => 'بۇ بەتنىڭ تەھرىرلەش تارىخى بەك كۆپ، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق.
+بۇ بەت ئۆچۈرۈلسە {{SITENAME}} ساندانىنىڭ مەشغۇلاتىنى قالايمىقانلاشتۇرۇۋېتىشى مۇمكىن؛
+بۇ مەشغۇلاتنى داۋاملاشتۇرۇشتىن ئىلگىرى ئېھتىيات قىلىڭ.',
+
+# Rollback
+'rollback' => 'تەھرىر ئەسلىگە قايتۇر',
+'rollback_short' => 'ئەسلىگە قايتۇر',
+'rollbacklink' => 'ئەسلىگە قايتۇر',
+'rollbackfailed' => 'ئەسلىگە قايتۇرۇش مەغلۇپ بولدى',
+'cantrollback' => 'تەھرىرنى ئەسلىگە كەلتۈرەلمىدى؛
+ئاخىرقى تۆھپىكار بۇ بەتنىڭ بىردىنبىر ئاپتورى.',
+'alreadyrolled' => ' [[User:$2|$2]] ([[User talk:$2|مۇنازىرە]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])ئېلىپ بارغان [[:$1]] ئاخىرقى تەھرىرلەشنى ئەسلىگە كەلتۈرەلمەيدۇ;
+باشقىلار بۇ بەتنى تەھرىرلىگەن ياكى ئەسلىگە كەلتۈرگەن.
+
+ئاخىرقى قېتىم تەھرىرلىگۈچى: [[User:$3|$3]] ([[User talk:$3|مۇنازىرە]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "تەھرىرلەش ئۈزۈندىسى: \"''\$1''\".",
+'revertpage' => ' [[Special:Contributions/$2|$2]] ([[User talk:$2|مۇنازىرە]]) نىڭ تەھرىرىدىن ئاخىرقى تۈزىتىلگەن نەشرى [[User:$1|$1]] غا ئەسلىگە كەلتۈرىدۇ.',
+'revertpage-nouser' => '(چىقىرىۋېتىلگەن ئىشلەتكۈچى)نىڭ تەھرىرىدىن [[User:$1|$1]] نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئەاسلىگە كەلتۈرۈلدى',
+'rollback-success' => '$1 نىڭ تەھرىرى ئەسلىگە كەلتۈرۈلدى؛
+$2 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئۆزگەرتىلدى.',
+'sessionfailure' => 'تىزىمغا كىرگەندە مەسىلە كۆرۈلگەندەك تۇرىدۇ؛
+قوغدىنىش تەدبىرى سۈپىتىدە بۇ مەشغۇلات بىكار قىلىندى.
+ \\"كەينى\\"نى چېكىپ قايتا سىناڭ.',
+
+# Protect
+'protectlogpage' => 'قوغداش خاتىرىسى',
+'protectlogtext' => 'تۆۋەندىكىسى قوغدالغان ۋە قوغداش يېشىلگەن بەتلەرنىڭ تىزىملىكى.
+نۆۋەتتىكى بەتنىڭ قوغدىلىش ئەھۋالىنى [[Special:ProtectedPages|قوغدالغان بەتلەر تىزىملىكى]]دىن كۆرۈڭ.',
+'protectedarticle' => 'قوغدالغان "[[$1]]"',
+'modifiedarticleprotection' => '"[[$1]]" نىڭ قوغداش دەرىجىسى ئۆزگەردى',
+'unprotectedarticle' => 'قوغدالمىغان "[[$1]]"',
+'movedarticleprotection' => 'قوغداش تەڭشىكى "[[$2]]" دىن "[[$1]]" غا يۆتكەلدى.',
+'protect-title' => '"$1" نىڭ قوغداش دەرىجىسىنى ئۆزگەرتىۋاتىدۇ',
+'prot_1movedto2' => '[[$1]] دىن [[$2]]غا يۆتكەلدى',
+'protect-legend' => 'قوغداش جەزملە',
+'protectcomment' => 'سەۋەب:',
+'protectexpiry' => 'قەرەلى:',
+'protect_expiry_invalid' => 'قەرەلى توشۇش ۋاقتى ئىناۋەتسىز.',
+'protect_expiry_old' => 'قەرەلى توشۇش ۋاقتى ئۆتۈپ كەتكەن.',
+'protect-unchain-permissions' => 'قۇلۇپلانغان ئىقتىدار تاللانما قۇلۇپىنى ئاچ',
+'protect-text' => "بۇ جايدا '''<nowiki>$1</nowiki>''' بېتىنىڭ قوغداش دەرىجىسىنى كۆرەلەيسىز ۋە ئۆزگەرتەلەيسىز.",
+'protect-locked-blocked' => "چەكلەنگەندە قوغداش دەرىجىسىنى ئۆزگەرتەلمەيسىز.
+تۆۋەندىكى '''$1''' نىڭ نۆۋەتتىكى قوغداش دەرىجىسى:",
+'protect-locked-dblock' => "ساندان قۇلۇپلانغاندا قوغداش دەرىجىسىنى ئۆزگەرتكىلى بولمايدۇ.
+تۆۋەندىكى '''$1''' نىڭ نۆۋەتتىكى قوغداش دەرىجىسى:",
+'protect-locked-access' => "ھېساباتىڭىزنىڭ بەت قوغداش دەرىجىسىنى ئۆزگەرتىش ھوقۇقى يوق.
+تۆۋەندىكىسى '''$1''' بەتنىڭ نۆۋەتتىكى تەڭشىكى:",
+'protect-cascadeon' => 'تۆۋەندىكى {{PLURAL:$1|بىر|بىر قانچە}} بەت مەزكۇر بەتنى ئۆز ئىچىگە ئېلىش بىلەن بىللە زەنجىرسىمان قوغداش قوزغىتىلغان.
+ شۇڭلاشقا بۇ بەتمۇ قوغدالغان. بۇ بەتنىڭ قوغداش دەرىجىسىنى ئۆزگەرتەلەيسىز، ئەمما زەنجىرسىمان قوغداشقا تەسىر كۆرسەتمەيدۇ.',
+'protect-default' => 'ھەممە ئىشلەتكۈچىگە يول قوي',
+'protect-fallback' => '"$1" نىڭ ئىجازىتى زۆرۈر.',
+'protect-level-autoconfirmed' => 'يېڭى ۋە تىزىملاتمىغان ئىشلەتكۈچى چەكلىنىدۇ',
+'protect-level-sysop' => 'باشقۇرغۇچىلا',
+'protect-summary-cascade' => 'زەنجىرسىمان قۇلۇپ',
+'protect-expiring' => ' $1 (UTC) توختىتىلغان',
+'protect-expiry-indefinite' => 'قەرەلسىز',
+'protect-cascade' => 'بۇ بەت ئۆز ئىچىگە ئالغان بەتنى قوغدا (زەنجىرسىمان قۇلۇپتا قوغدالغان).',
+'protect-cantedit' => 'سىز بۇ بەتنىڭ قوغداش دەرىجىسىنى ئۆزگەرتەلمەيسىز، چۈنكى ئۇنى تەھرىرلەش ھوقۇقىڭىز يوق.',
+'protect-othertime' => 'باشقا ۋاقىت:',
+'protect-othertime-op' => 'باشقا ۋاقىت',
+'protect-existing-expiry' => 'نۆۋەتتىكى قەرەلى ئۆتكەن ۋاقىت: $3, $2',
+'protect-otherreason' => 'باشقا/قوشۇمچە سەۋەب:',
+'protect-otherreason-op' => 'باشقا سەۋەب',
+'protect-dropdown' => '*كۆپ ئۇچرايدىغان قوغداش سەۋەبلىرى
+** زىيادە بۇزغۇنچىلىق
+** زىيادە قالايمىقان يوللاش
+** ئىشلەپچىقىرىشقا قارشى تەھرىر جېڭى
+** يۇقىرى ئېقىملىق بەت',
+'protect-edit-reasonlist' => 'قوغداش سەۋەبى تەھرىر',
+'protect-expiry-options' => '1 سائەت:1 hour,1 كۈن:1 day,1 ھەپتە:1 week,2 ھەپتە:2 weeks,1 ئاي:1 month,3 ئاي:3 months,6 ئاي:6 months,1 يىل:1 year,چەكسىز:infinite',
+'restriction-type' => 'ھوقۇق چېكى:',
+'restriction-level' => 'چەكلىمە دەرىجىسى:',
+'minimum-size' => 'ئەڭ كىچىك چوڭلۇقى',
+'maximum-size' => 'ئەڭ چوڭ چوڭلۇقى:',
+'pagesize' => '(بايت)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'تەھرىر',
+'restriction-move' => 'يۆتكە',
+'restriction-create' => 'قۇر',
+'restriction-upload' => 'يۈكلە',
+
+# Restriction levels
+'restriction-level-sysop' => 'تولۇق قوغدالغان',
+'restriction-level-autoconfirmed' => 'يېرىم قوغدالغان',
+'restriction-level-all' => 'خالىغان دەرىجە',
+
+# Undelete
+'undelete' => 'ئۆچۈرۈلگەن بەتنى كۆرسەت',
+'undeletepage' => 'ئۆچۈرۈلگەن بەتنى ئەسلىگە كەلتۈرۈپ كۆرسەت',
+'undeletepagetitle' => "'''تۆۋەندىكى [[:$1|$1]] نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرى'''.",
+'viewdeletedpage' => 'ئۆچۈرۈلگەن بەتنى كۆرسەت',
+'undeletepagetext' => 'تۆۋەندىكى {{PLURAL:$1|بەت |$1 بەت}} ئۆچۈرۈلگەن ئەمما ئارخىپتا مەۋجۇد، ئەسلىگە كەلتۈرگىلى بولىدۇ
+ئارخىپ ئامبىرى مەلۇم مۇددەتتە تازىلىنىشى مۇمكىن.',
+'undelete-fieldset-title' => 'تۈزىتىلگەن نەشرىنى ئەسلىگە كەلتۈر',
+'undeleteextrahelp' => "پۈتۈن بەتنى ئەسلىگە كەلتۈرگەندە، بارلىق كۆپ تاللانمىنى چىقىرىۋەتكەندىن كېيىن '''''ئەسلىگە كەلتۈر'''''نى چېكىڭ.
+بەلگىلەنگەن نەشرىنى ئەسلىگە كەلتۈرۈشتە، مۇناسىپ نەشرىنىڭ ئالدىدىكى كۆپ تاللاش رامكىسىنى تاللاپ '''''ئەسلىگە كەلتۈر'''''نى چېكىڭ.
+'''''ئەسلىگە قايتۇر''''' چېكىلسە مۇنازىرە مەزمۇنىنى ئۆچۈرۈپ بارلىق كۆپ تاللاش رامكىسىنى تازىلايدۇ.",
+'undeleterevisions' => '$1 {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} ئارخىپلاندى',
+'undeletehistory' => 'ئەگەر بۇ بەتنى ئەسلىگە كەلتۈرسىڭىز، ھەممە نەشرى تۈزىتىلگەن نەشر تارىخىغا ئەسلىگە كەلتۈرۈلىدۇ.
+ئەگەر بۇ بەت ئۆچۈرۈلگەندىن كېيىن ئوخشاش ئاتتىكى يېڭى بىر بەت قۇرۇلسا ئەسلىگە كەلتۈرۈلگەن نەشرى يېڭىراق نەشرىدىكى تارىخ بولىدۇ.',
+'undeleterevdel' => 'ئەگەر ئەڭ يېڭى تۈزىتىلگەن نەشرى ئۆچۈرۈلسە، قارشى ئۆچۈرۈشنى ئېلىپ بارغىلى بولمايدۇ.
+ئەگەر بۇنداق ئەھۋالغا يولۇققاندا ئەڭ يېڭى ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى قارشى تاللاڭ ياكى قارشى يوشۇرۇڭ.',
+'undeletehistorynoadmin' => 'بۇ بەت ئۆچۈرۈلدى.
+ئۆچۈرۈش سەۋەبى تۆۋەندىكى تەھرىر ئۈزۈندىسىدە كۆرسىتىلدى.
+ئۆچۈرۈلۈشتىن ئىلگىرىكى ھەممە تۈزىتىلگەن نەشرىنىڭ تېكستى، ئۆچۈرۈلۈشتىن ئىلگىرىكى تۆھپىكارلارنىڭ تەپسىلىي ئۇچۇرلىرىنى پەقەت باشقۇرغۇچىلا كۆرەلەيدۇ.',
+'undelete-revision' => '$1 نى ئۆچۈرگەندە ($4 $5 دا) $3 يازغان تۈزىتىلگەن نەشرى:',
+'undeleterevision-missing' => 'ئىناۋەتسىز ياكى يوقالغان تۈزىتىلگەن نەشرى.
+سىز خاتا ئۇلانما ئىشلەتكەن بولۇشىڭىز مۇمكىن ياكى بۇ تۈزىتىلگەن نەشرى ئارخىپتىن ئەسلىگە كەلتۈرۈلگەن ياكى يۆتكىۋېتىلگەن.',
+'undelete-nodiff' => 'ئالدىنقى تۈزىتىلگەن نەشرى تېپىلمىدى.',
+'undeletebtn' => 'ئەسلىگە كەلتۈر',
+'undeletelink' => 'كۆرسەت/ئەسلىگە كەلتۈر',
+'undeleteviewlink' => 'كۆرۈنۈش',
+'undeletereset' => 'ئەسلىگە قايتۇر',
+'undeleteinvert' => 'ئەكسىچە تاللا',
+'undeletecomment' => 'سەۋەب:',
+'undeletedarticle' => '"[[$1]]" ئەسلىگە كەلتۈرۈلدى',
+'undeletedrevisions' => '{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ئەسلىگە كەلتۈرۈلدى',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ۋە {{PLURAL:$2|1 ھۆججەت|$2 ھۆججەت}} ئەسلىگە كەلتۈرۈلدى',
+'undeletedfiles' => '{{PLURAL:$1|1 ھۆججەت|$1 ھۆججەت}} ئەسلىگە كەلتۈرۈلدى',
+'cannotundelete' => 'ئەسلىگە كەلتۈرۈش مەغلۇپ بولدى؛
+باشقىلار بۇ بەتنى بايىلا ئەسلىگە كەلتۈرگەن بولۇشى مۇمكىن.',
+'undeletedpage' => "'''$1 ئەسلىگە كەلتۈرۈلدى'''
+
+ [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دىن پايدىلىنىپ ئۆچۈر ۋە ئەسلىگە كەلتۈر خاتىرىسىنى كۆرۈڭ.",
+'undelete-header' => 'يېقىنقى خاتىرىنى سۈرۈشتۈرمەكچى بولسىڭىز [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دىن پايدىلىنىڭ.',
+'undelete-search-box' => 'ئۆچۈرۈلگەن بەتنى ئىزدە',
+'undelete-search-prefix' => 'باشلانغان بەتنى كۆرسەت:',
+'undelete-search-submit' => 'ئىزدەش',
+'undelete-no-results' => 'ئۆچۈرۈش ئارخىپ خاتىرىسىدە ماس كېلىدىغان نەتىجە يوق.',
+'undelete-filename-mismatch' => 'ۋاقىت تامغىسى بار ھۆججەتنىڭ تۈزىتىلگەن نەشرى $1 نى ئۆچۈرەلمەيدۇ: ھۆججەت ئاتى ماس كەلمىدى',
+'undelete-bad-store-key' => 'ۋاقىت تامغىسى بار ھۆججەتنىڭ تۈزىتىلگەن نەشرى $1 نى ئەسلىگە كەلتۈرەلمەيدۇ: ھۆججەت ئۆچۈرۈلۈشتىن ئىلگىرى يوقالغان.',
+'undelete-cleanup-error' => 'ئىشلىتىلمەيدىغان ئاخىپ ھۆججەت"$1"نى ئۆچۈرگەندە خاتالىق كۆرۈلدى.',
+'undelete-missing-filearchive' => 'ھۆججەت ئارخىپىنىڭ كىملىكى $1 سانداندا بولمىغاچقا، ھۆججەت ئارخىپىدىن ئەسلىگە كەلتۈرەلمەيدۇ.
+ئۇ ئەسلىگە كەلتۈرۈلگەن بولۇشى مۇمكىن.',
+'undelete-error-short' => 'ھۆججەت قارشى ئۆچۈرگەندە خاتالىق كۆرۈلدى: $1',
+'undelete-error-long' => 'ھۆججەتنى قارشى ئۆچۈرۈۋاتقاندا خاتالىق كۆرۈلدى:
+
+$1',
+'undelete-show-file-confirm' => '$2 $3 دىكى \\"<nowiki>$1</nowiki>\\" نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى راستىنلا كۆرەمسىز؟',
+'undelete-show-file-submit' => 'ھەئە',
+
+# Namespace form on various pages
+'namespace' => 'ئات بوشلۇقى',
+'invert' => 'ئەكسىچە تاللا',
+'blanknamespace' => '(ئاساسىي)',
+
+# Contributions
+'contributions' => 'ئىشلەتكۈچى تۆھپىسى',
+'contributions-title' => '$1 نىڭ ئىشلەتكۈچى تۆھپىسى',
+'mycontris' => 'تۆھپەم',
+'contribsub2' => '$1 نىڭ تۆھپىسى ($2)',
+'nocontribs' => 'بۇ ئۆلچەمگە ماس كېلىدىغان ئۆزگەرتىش تېپىلمىدى.',
+'uctop' => '(ئۈستى)',
+'month' => 'ئايدىن بۇيان (ياكى ئىلگىرى):',
+'year' => 'يىلدىن بۇيان (ياكى ئىلگىرى):',
+
+'sp-contributions-newbies' => 'يېڭى قۇرۇلغان ئىشلەتكۈچى تۆھپىسىنىلا كۆرسەت',
+'sp-contributions-newbies-sub' => 'يېڭى ھېسابات',
+'sp-contributions-newbies-title' => 'يېڭى ھېساباتنىڭ ئىشلەتكۈچى تۆھپىسى',
+'sp-contributions-blocklog' => 'چەكلەنگەن خاتىرە',
+'sp-contributions-deleted' => 'ئۆچۈرۈلگەن ئىشلەتكۈچىنىڭ تۆھپىسى',
+'sp-contributions-logs' => 'خاتىرە',
+'sp-contributions-talk' => 'مۇنازىرە',
+'sp-contributions-userrights' => 'ئىشلەتكۈچى ھوقۇقى باشقۇرۇش',
+'sp-contributions-blocked-notice' => 'بۇ ئىشلەتكۈچى نۆۋەتتە چەكلەنگەن.
+پايدىلىنىش ئۈچۈن يېقىنقى چەكلەش خاتىرە تۈرلىرى تۆۋەندە تەمىنلەندى:',
+'sp-contributions-search' => 'تۆھپە ئىزدە',
+'sp-contributions-username' => 'IP ئادرېس ياكى ئىشلەتكۈچى ئاتى:',
+'sp-contributions-submit' => 'ئىزدە',
+
+# What links here
+'whatlinkshere' => 'بۇ جايدىكى ئۇلانما',
+'whatlinkshere-title' => '"$1" بەتكە ئۇلانغان',
+'whatlinkshere-page' => 'بەت:',
+'linkshere' => "تۆۋەندىكى بەتلەر '''[[:$1]]'''غا ئۇلانغان:",
+'nolinkshere' => "'''[[:$1]]'''غا ئۇلانغان بەت يوق.",
+'nolinkshere-ns' => "تاللانغان ئات بوشلۇقىدا '''[[:$1]]''' غا ئۇلانغان بەت يوق.",
+'isredirect' => 'قايتا نىشان بەلگىلەنگەن بەت',
+'istemplate' => 'ئۆز ئىچىگە ئالغان',
+'isimage' => 'سۈرەت ئۇلانما',
+'whatlinkshere-prev' => '{{PLURAL:$1|ئالدى|ئالدى $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|كەينى|كەينى $1}}',
+'whatlinkshere-links' => '← ئۇلانما',
+'whatlinkshere-hideredirs' => '$1 قايتا نىشان بەلگىلە',
+'whatlinkshere-hidetrans' => '$1 ئۆز ئىچىگە ئالغان',
+'whatlinkshere-hidelinks' => '$1 ئۇلانما',
+'whatlinkshere-hideimages' => '$1 سۈرەت ئۇلانما',
+'whatlinkshere-filters' => 'سۈزگۈچلەر',
+
+# Block/unblock
+'blockip' => 'چەكلەنگەن ئىشلەتكۈچى',
+'blockip-title' => 'ئىشلەتكۈچى چەكلە',
+'blockip-legend' => 'چەكلەنگەن ئىشلەتكۈچى',
+'blockiptext' => 'تۆۋەندىكى جەدۋەلنى ئىشلىتىپ بەلگىلىك IP ئادرېس ياكى ئىشلەتكۈچى ئاتىدىن كەلگەن يېزىش زىيارىتىنى چەكلەشكە بولىدۇ.
+پەقەت بۇزغۇنچىلىكنىڭ ئالدىنى ئېلىش ھەمدە [[{{MediaWiki:Policy-url}}|تاكتىكا]].
+سىغا ئۇيغۇن بولغان ئەھۋالدا ئاندىن بۇ مەشغۇلاتنى ئېلىپ بېرىشقا بولىدۇ. تۆۋەندە ئەمەلىي سەۋەب (مەسىلەن، بۇزۇۋېتىلگەن بەتتىن بىرنى نەقىل ئېلىش)تىن بىرنى كىرگۈزۈڭ.',
+'ipaddress' => 'IP ئادرېس:',
+'ipadressorusername' => 'IP ئادرېس ياكى ئىشلەتكۈچى ئاتى:',
+'ipbexpiry' => 'مۇددىتى:',
+'ipbreason' => 'سەۋەب:',
+'ipbreasonotherlist' => 'باشقا سەۋەب',
+'ipbreason-dropdown' => '*ئادەتتىكى چەكلەش سەۋەبى
+** ساختا ئۇچۇر قوشۇش
+** بەت مەزمۇنىنى چىقىرىۋېتىش
+** سىرتقى ئەخلەت ئۇلانما قوشۇش
+** بەتكە تۇترۇقسىز گەپ قوشۇش
+** باشقىلارغا ھەيۋە قىلىش/مەجبۇرلاش
+** كۆپ ھېساباتنى قالايمىغان ئىشلىتىش
+** قوبۇل قىلغىلى بولمايدىغان ئىشلەتكۈچى ئاتى',
+'ipbanononly' => 'ئىمزاسىز ئىشلەتكۈچىنى چەكلە',
+'ipbcreateaccount' => 'ھېسابات قۇرۇشنى توس',
+'ipbemailban' => 'ئىشلەتكۈچى ئېلخەت ئەۋەتىشنى توس',
+'ipbenableautoblock' => 'بۇ ئىشلەتكۈچى ئاخىرقى قېتىم ئىشلەتكەن IP ئادرېسنى ۋە بۇندىن كېيىن تەھرىرلەشكە ئۇرۇنغان بارلىق ئادرېسنى ئۆزلۈكىدىن چەكلە.',
+'ipbsubmit' => 'بۇ ئىشلەتكۈچىنى چەكلە',
+'ipbother' => 'باشقا ۋاقىت:',
+'ipboptions' => '2 سائەت:2 hours,1 كۈن:1 day,3 كۈن:3 days,1 ھەپتە:1 week,2 ھەپتە:2 weeks,1 ئاي:1 month,3 ئاي:3 months,6 ئاي:6 months,1 يىل:1 year,چەكسىز:infinite',
+'ipbotheroption' => 'باشقا',
+'ipbotherreason' => 'باشقا/قوشۇمچە سەۋەب:',
+'ipbhidename' => 'تەھرىر ۋە تىزىملىكتىن ئىشلەتكۈچى ئاتىنى يوشۇر',
+'ipbwatchuser' => 'بۇ ئىشلەتكۈچىنىڭ ئىشلەتكۈچى بېتى ۋە مۇنازىرە بېتىنى كۆزەت',
+'ipballowusertalk' => 'چەكلەنگەندە بۇ ئىشلەتكۈچنىڭ مۇنازىرە بېتىنى تەھرىرلىشىگە يول قوي',
+'ipb-change-block' => 'بۇ تەڭشەكلەردىن پايدىلىنىپ ئىشلەتكۈچىنى قايتىدىن چەكلە',
+'badipaddress' => 'IP ئادرېس ئىناۋەتسىز',
+'blockipsuccesssub' => 'چەكلەش مۇۋەپپەقىيەتلىك',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] چەكلەندى<br />
+ [[Special:IPBlockList|چەكلەنگەن IP تىزىملىكى]] نى كۆرۈپ چەكلەشنى تەكشۈرۈڭ.',
+'ipb-edit-dropdown' => 'چەكلەش سەۋەبىنى تەھرىرلە',
+'ipb-unblock-addr' => '$1 چەكلەشنى بىكار قىل',
+'ipb-unblock' => 'چەكلەش بىكار قىلىغان ئىشلەتكۈچى ئاتى ياكى IP ئادرېس',
+'ipb-blocklist-addr' => '$1 نىڭ نۆۋەتتىكى چەكلىشى',
+'ipb-blocklist' => 'نۆۋەتتىكى چەكلەشنى كۆرسەت',
+'ipb-blocklist-contribs' => '$1 نىڭ ئىشلەتكۈچى تۆھپىسى',
+'unblockip' => 'چەكلەش بىكار قىلىنغان ئىشلەتكۈچى',
+'unblockiptext' => 'تۆۋەندىكى جەدۋەلنى ئىشلىتىپ ئىلگىرى چەكلەنگەن IP ئادرېس ياكى ئىشلەتكۈچىنىڭ يېزىش ھوقۇقىنى ئەسلىگە كەلتۈر.',
+'ipusubmit' => 'بۇ چەكلەشنى چىقىرىۋەت',
+'unblocked' => '[[User:$1|$1]] چەكلەش بىكار قىلىندى',
+'unblocked-id' => '$1 نى چەكلەش بىكار قىلىندى',
+'ipblocklist' => 'چەكلەنگەن IP ئادرېس ۋە ئىشلەتكۈچى ئاتى',
+'ipblocklist-legend' => 'چەكلەنگەن ئىشلەتكۈچىدىن بىرنى ئىزدە',
+'ipblocklist-username' => 'ئىشلەتكۈچى ئاتى ياكى IP ئادرېس:',
+'ipblocklist-sh-userblocks' => '$1 قېتىم ھېسابات چەكلەش',
+'ipblocklist-sh-tempblocks' => '$1 قېتىم ۋاقىتلىق چەكلەش',
+'ipblocklist-sh-addressblocks' => '$1 قېتىم يەككە IP چەكلەش',
+'ipblocklist-submit' => 'ئىزدەش',
+'ipblocklist-localblock' => 'يەرلىك چەكلەش',
+'ipblocklist-otherblocks' => 'باشقا {{PLURAL:$1|چەكلەنگەن|چەكلەنگەن}}',
+'blocklistline' => '$1, $2 چەكلەنگەن $3 ($4)',
+'infiniteblock' => 'چەكسىز',
+'expiringblock' => '$1 $2 ۋاقتى توشىدۇ',
+'anononlyblock' => 'ئاتسىز ئىشلەتكۈچىلا',
+'noautoblockblock' => 'ئۆزلۈكىدىن چەكلەشنى چەكلە',
+'createaccountblock' => 'ھېسابات قۇرۇش چەكلەنگەن',
+'emailblock' => 'ئېلخەت چەكلەنگەن',
+'blocklist-nousertalk' => 'شەخسىي مۇنازىرە بېتىنى تەھرىرلىگىلى بولمايدۇ',
+'ipblocklist-empty' => 'چەكلەش تىزىملىكى بوش.',
+'ipblocklist-no-results' => 'تەلەپ قىلغان IP ئادرېس ياكى ئىشلەتكۈچى ئاتى چەكلەنمىگەن.',
+'blocklink' => 'چەكلە',
+'unblocklink' => 'چەكلەشنى توختات',
+'change-blocklink' => 'ئۆزگەرتىش چەكلەنگەن',
+'contribslink' => 'تۆھپىكارلار',
+'autoblocker' => 'سىز "[[User:$1|$1]]" بىلەن بىر IP ئادرېسنى ئورتاق ئىشلەتكەچكە ئۆزلۈكىدىن چەكلىدى.
+ $1 نىڭ چەكلەنگەنلىك سەۋەبى: "$2"',
+'blocklogpage' => 'چەكلەنگەن خاتىرە',
+'blocklog-showlog' => 'بۇ ئىشلەتكۈچى ئىلگىرى چەكلەنگەن.
+پايدىلىنىش ئۈچۈن تۆۋەندە چەكلەش خاتىرىسى تەمىنلەندى.',
+'blocklog-showsuppresslog' => 'بۇ ئىشلەتكۈچى ئىلگىرى چەكلىنىپ ۋە يوشۇرۇلغان.
+پايدىلىنىش ئۈچۈن تۆۋەندە بىكار قىلىنغان خاتىرە تەمىنلەندى:',
+'blocklogentry' => '[[$1]] چەكلەندى، قەرەلى توشۇش ۋاقتى $2 $3',
+'reblock-logentry' => ' [[$1]] نىڭ چەكلەش تەڭشىكىنى ئۆزگەرتىش ۋاقتى $2 $3',
+'blocklogtext' => 'بۇ ئىشلەتكۈچى چەكلەش ۋە چەكلەشنى بىكار قىلىش مەشغۇلاتىغا ئائىت خاتىرە.
+ئۆزلۈكىدىن چەكلەنگەن IP ئادرېس كۆرسىتىلمىدى.
+ [[Special:IPBlockList|چەكلەنگەنIP تىزىملىكى]] دىن كۆرۈڭ.',
+'unblocklogentry' => '$1 چەكلەش بىكار قىلىنغان',
+'block-log-flags-anononly' => 'ئىمزاسىز ئىشلەتكۈچىلا',
+'block-log-flags-nocreate' => 'ھېسابات قۇرۇش چەكلەنگەن',
+'block-log-flags-noautoblock' => 'ئۆزلۈكىدىن چەكلەشنى چەكلە',
+'block-log-flags-noemail' => 'ئېلخەت چەكلەنگەن',
+'block-log-flags-nousertalk' => 'شەخسىي مۇنازىرە بېتىنى تەھرىرلىگىلى بولمايدۇ',
+'block-log-flags-angry-autoblock' => 'كۈچەيتىلگەن ئۆزلۈكىدىن چەكلەش قوزغىتىلدى',
+'block-log-flags-hiddenname' => 'ئىشلەتكۈچى ئاتىنى يوشۇر',
+'range_block_disabled' => 'پەقەت باشقۇرغۇچىلا چەكلەنمەيدىغان دائىرىنى قۇرالايدۇ.',
+'ipb_expiry_invalid' => 'قەرەلى توشۇش ۋاقتى ئىناۋەتسىز.',
+'ipb_expiry_temp' => 'يوشۇرۇن ئىشلەتكۈچى ئاتىنى چەكلەش چوقۇم مەڭگۈلۈك بولىدۇ.',
+'ipb_hide_invalid' => 'بۇ ھېساباتنى باسسىڭىز بولمايدۇ؛ ئۇنىڭ نۇرغۇن تەھرىرى بولۇشى مۇمكىن.',
+'ipb_already_blocked' => '"$1" ئاللىبۇرۇن چەكلەنگەن',
+'ipb-needreblock' => '== ئاللىبۇرۇن چەكلەنگەن ==
+$1 ئاللىبۇرۇن چەكلەنگەن.
+بۇ تەڭشەكنى ئۆزگەرتەمسىز؟',
+'ipb-otherblocks-header' => 'باشقا {{PLURAL:$1|چەكلەنگەن|چەكلەنگەن}}',
+'ipb_cant_unblock' => 'خاتالىق: چەكلەنگەن ID $1 تاپالمىدى.
+چەكلەش بىكار قىلىنغان بولۇشى مۇمكىن.',
+'ipb_blocked_as_range' => 'خاتالىق: بۇ IP $1 بىۋاسىتە چەكلەنمىگەن، چەكلەشنى بىكار قىلغىلى بولمايدۇ.
+ئەمما ئۇ $2 نىڭ چەكلەش دائىرىسى ئىچىدە، بۇ دائىرىنى چەكلەشتىن بىكار قىلغىلى بولىدۇ.',
+'ip_range_invalid' => 'IP دائىرىسى ئىناۋەتسىز.',
+'ip_range_toolarge' => '/$1 دىن چوڭ بولغان چەكلەش دائىرىسىگە يول قويۇلمايدۇ.',
+'blockme' => 'مېنى چەكلە',
+'proxyblocker' => 'ۋاكالەتچىنى چەكلىگۈچى',
+'proxyblocker-disabled' => 'بۇ ئىقتىدار چەكلەنگەن.',
+'proxyblockreason' => 'IP ئادرېسىڭىز ئوچۇق ۋاكالەتچى، ئۇ ئاللىبۇرۇن چەكلەنگەن.
+ئىنتېرنېت مۇلازىمىتى تەمىنلىگۈچى سودىگەر ياكى تېخنىكىلىق قوللىغۇچى بىلەن ئالاقىلىشىڭ ھەمدە ئۇلارغا بۇ ئېغىر بىخەتەرلىك مەسىلىسىنى ئۇقتۇرۇڭ.',
+'proxyblocksuccess' => 'تامام',
+'sorbsreason' => 'IP ئادرېسىڭىز {{SITENAME}} دا DNSBL تەرىپىدىن ئوچۇق ۋاكالەتچى تىزىملىكىگە قوشۇلغان.',
+'sorbs_create_account_reason' => 'IP ئادرېسىڭىز {{SITENAME}} دا DNSBL تەرىپىدىن ئوچۇق ۋاكالەتچى تىزىملىكىگە قوشۇلغان.
+شۇڭا سىز يېڭى ھېسابات قۇرالمايسىز.',
+'cant-block-while-blocked' => 'ئەگەر سىز چەكلەنسىڭىز باشقىلارنى چەكلىيەلمەيسىز.',
+'cant-see-hidden-user' => 'سىز چەكلىمەكچى بولغان ئىشلەتكۈچى ئاللىبۇرۇن چەكلىنىپ يوشۇرۇلغان.
+ھازىر سىزنىڭ ئىشلەتكۈچى يوشۇرۇش ھوقۇقىڭىز يوق، سىز بۇ چەكلەنگەن ئىشلەتكۈچىنى كۆرسىتىپ ياكى تەھرىرلىيەلمەيسىز.',
+
+# Developer tools
+'lockdb' => 'سانداننى قۇلۇپلا',
+'unlockdb' => 'ساندان قۇلۇپىنى ئاچ',
+'lockdbtext' => 'ساندان قۇلۇپلانسا ھەممە ئىشلەتكۈچىنىڭ بەت تەھرىرلەش، مايىللىق ئۆزگەرتىش، كۆزەت تىزىملىكى تەھرىرلەش ۋە باشقا سانداننى ئۆزگەرتىدىغان مەشغۇلات قىلىش چەكلىنىدۇ.
+قارارىڭىزنى جەزملەڭ ھەمدە ئاسراش خىزمىتى ئاياغلاشقاندا سانداننى قايتىدىن ئېچىشقا كاپالەتلىك قىلىڭ.',
+'unlockdbtext' => 'ساندان قۇلۇپى ئېچىلسا ھەممە ئىشلەتكۈچىنىڭ بەت تەھرىرلەش، مايىللىق ئۆزگەرتىش، كۆزەت تىزىملىكى تەھرىرلەش ۋە باشقا سانداننى ئۆزگەرتىدىغان مەشغۇلات قىلىشى ئەسلىگە كېلىدۇ.
+قارارىڭىزنى جەزملەڭ.',
+'lockconfirm' => 'ھەئە، مەن راستىنلا سانداننى قۇلۇپلايمەن.',
+'unlockconfirm' => 'ھەئە، مەن راستىنلا ساندان قۇلۇپىنى ئاچىمەن.',
+'lockbtn' => 'سانداننى قۇلۇپلا',
+'unlockbtn' => 'ساندان قۇلۇپىنى ئاچ',
+'locknoconfirm' => 'جەزملە كۇنۇپكىسىنى تاللىمىدىڭىز.',
+'lockdbsuccesssub' => 'ساندان مۇۋەپپەقىيەتلىك قۇلۇپلاندى',
+'unlockdbsuccesssub' => 'ساندان قۇلۇپى چىقىرىۋېتىلدى',
+'lockdbsuccesstext' => 'ساندان قۇلۇپلاندى.<br />
+ئاسراش تاماملانغاندا [[Special:UnlockDB|قۇلۇپ ئاچ]]ىشنى ئەستىن چىقارماڭ.',
+'unlockdbsuccesstext' => 'ساندان قۇلۇپى ئېچىلدى.',
+'lockfilenotwritable' => 'ساندان قۇلۇپ ھۆججىتىنى يازالمىدى.
+ساندان قۇلۇپلاش ياكى قۇلۇپ ئېچىشتا تور مۇلازىمىتىرىدىكى بۇ ھۆججەتكە يازغىلى بولۇشى لازىم.',
+'databasenotlocked' => 'ساندان قۇلۇپلانمىغان.',
+
+# Move page
+'move-page' => '$1 يۆتكە',
+'move-page-legend' => 'بەت يۆتكە',
+'movepagetext' => "تۆۋەندىكى جەدۋەلنى ئىشلىتىپ بىر بەتنىڭ ئاتىنى ئۆزگەرتىپ، شۇنىڭ بىلەن بىللە تۈزىتىش نەشر تارىخىنى يېڭى بەتكە يۆتكەڭ.
+كونا بەت يېڭى بەتنىڭ قايتا نىشان بەلگىلەنگەن بېتى بولىدۇ.
+سىز بەلگىلەنگەن ئەسلىدىكى ماۋزۇنىڭ قايتا نىشان بەلگىلىشىنى يېڭىلىيالايسىز.
+ئەگەر تاللىمىسىڭىز، [[Special:DoubleRedirects|قوش]] ياكى [[Special:BrokenRedirects|بۇزۇلغان قايتا نىشان بەلگىلەش]]نى تەكشۈرۈڭ.
+سىز بارلىق ئۇلانمىلارنىڭ يەنىلا بەلگىلەنگەن بەتكە ئۇلىنىشىغا كاپالەتلىك قىلىشقا مەسئۇل بولۇشىڭىز لازىم.
+
+دىققەت، ئەگەر يېڭى بەتتە مەزمۇن بولسا، بەت '''ھەرگىز'''يۆتكەلمەيدۇ،
+يېڭى بەتنىڭ مەزمۇنى يوق بولسا ياكى قايتا نىشان بەلگىلەش بېتى بولمىسا ھەمدە تۈزىتىش تارىخى بولمىسا ئاندىن بولىدۇ.
+بۇ زۆرۈر تېپىلغاندا يېڭى بەتكە يۆتكىگەندىن كېيىن ئاندىن كونا بەتنى يۈتكىسىڭىز بولىدىغانلىقىنى بىلدۈرىدۇ،
+شۇنىڭ بىلەن بىللە مەۋجۇد بەتنى قاپلىۋېتەلمەيسىز.
+
+'''ئاگاھلاندۇرۇش!'''
+دائىم زىيارەت قىلىنىدىغان تور ؛بەتكە نىسبەتەن بۇ زور ياكى ئويلانمايلا ئېلىپ بېرىلغان ئۆزگەرتىش
+مەشغۇلات قىلىشتىن ئىلگىرى ئېلىپ كېلىدىغان ئاقىۋىتىنى چۈشىنىڭ.",
+'movepagetalktext' => "مۇناسىۋەتلىك مۇنازىرە بېتى مۇشۇ بەت بىلەن بىللە ئۆزلۈكىدىن يۆتكىلىدۇ، ئۇنداق '''بولمىغاندا:'''
+*يېڭى بەتنىڭ مەزمۇنى بار مۇنازىرە بېتى مەۋجۇد ياكى
+*تۆۋەندىكى كۆپ تاللاش رامكىسىنى تاللىمىدىڭىز.
+
+بۇ خىل ئەھۋاللاردا، زۆرۈر تېپىلغاندا ئۆزىڭىز بەتنى يۆتكىشىڭىز ياكى بىرلەشتۈرۈشىڭىز لازىم.",
+'movearticle' => 'بەت يۆتكە:',
+'moveuserpage-warning' => "'''ئاگاھلاندۇرۇش:''' سىز ئىشلەتكۈچى بېتىنى يۆتكىمەكچى. بۇ بەت يۆتكەلگەندىن كېيىن شۇ ئىشلەتكۈچىنىڭ ئاتى ئۆزگەرمەيدىغانلىقىغا دىققەت قىلىڭ.",
+'movenologin' => 'تىزىمغا كىرمىدى',
+'movenologintext' => 'سىز چوقۇم تىزىمغا كىرگەن ئىشلەتكۈچى ھەمدە [[Special:UserLogin|تىزىمغا كىر]]گەندىن كېيىن ئاندىن بەتنى يۆتكىيەلەيسىز.',
+'movenotallowed' => 'سىزنىڭ بەت يۆتكەش ھوقۇقىڭىز يوق.',
+'movenotallowedfile' => 'سىزنىڭ ھۆججەت يۆتكەش ھوقۇقىڭىز يوق.',
+'cant-move-user-page' => 'سىزنىڭ ئىشلەتكۈچى بېتىنى يۆتكەش ھوقۇقىڭىز يوق (ئۇنىڭ تارماق بېتى بۇنىڭ سىرتىدا)',
+'cant-move-to-user-page' => 'سىزنىڭ ئىشلەتكۈچى بېتىگە يۆتكەش ھوقۇقىڭىز يوق (تارماق بېتى بۇنىڭ سىرتىدا)',
+'newtitle' => 'يېڭى ماۋزۇ:',
+'move-watch' => 'بۇ بەتنى كۆزەت',
+'movepagebtn' => 'بەت يۆتكە',
+'pagemovedsub' => 'مۇۋەپپەقىيەتلىك يۆتكەلدى',
+'movepage-moved' => '\'\'\'"$1" دىن\\"$2" گە يۆتكەلدى\'\'\'',
+'movepage-moved-redirect' => 'قايتا نىشانلاشتىن بىرى قۇرۇلدى.',
+'movepage-moved-noredirect' => 'قايتا نىشانلاش قۇرۇش تىزگىنلەندى.',
+'articleexists' => 'مۇشۇ ئاتلىق بەت مەۋجۇد ياكى سىز تاللىغان بەت ئاتى ئىناۋەتسىز.
+باشقا ئات تاللاڭ.',
+'cantmove-titleprotected' => 'بۇ بەتنى مەزكۇر ئورۇنغا يۆتكىيەلمەيسىز، چۈنكى بۇ يېڭى ماۋزۇ قۇرۇشتىن ساقلىنىش ئۈچۈن قوغدالدى.',
+'talkexists' => "'''بەتنىڭ ئۆزىنى يۆتكەش مۇۋەپپەقىيەتلىك، ئەمما مۇنازىرە بېتىنى يۆتكىيەلمىدى،چۈنكى يېڭى ماۋزۇلۇق مۇنازىرە بېتى مەۋجۇد.
+ئۇلارنى ئۆزىڭىز قولدا بىرلەشتۈرۈڭ.'''",
+'movedto' => 'يۆتكەلگەن ئورنى',
+'movetalk' => 'يۆتكەش ئۇلانغان مۇنازىرە بېتى',
+'move-subpages' => 'تارماق بەتنى يۆتكە (ئۈستىگە $1 بەت)',
+'move-talk-subpages' => 'تارماق مۇنازىرە بېتىنى يۆتكە (ئۈستىگە $1 بەت)',
+'movepage-page-exists' => '$1 بەت مەۋجۇد، ئۆزلۈكىدىن قاپلىۋەتكىلى بولمايدۇ.',
+'movepage-page-moved' => '$1 بەت $2 گە يۆتكەلدى.',
+'movepage-page-unmoved' => '$1 بەتنى $2 گە يۆتكىيەلمىدى.',
+'movepage-max-pages' => ' $1 {{PLURAL:$1|بەت|بەت}} يۆتكەش سانى ئەڭ يۇقىرى چەككە يەتتى، بىرلا ۋاقىتتا تېخىمۇ كۆپ بەتنى ئۆزلۈكىدىن يۆتكىيەلمەيدۇ.',
+'1movedto2' => '[[$1]] دىن [[$2]] غا يۆتكەلدى',
+'1movedto2_redir' => 'قايتا نىشان بەلگىلەپ [[$1]] دىن [[$2]] غا يۆتكەلدى',
+'move-redirect-suppressed' => 'قايتا نىشانلاش تىزگىنلەندى',
+'movelogpage' => 'خاتىرىنى يۆتكە',
+'movelogpagetext' => 'تۆۋەندىكىسى يۆتكەلگەن ھەممە بەتلەرنىڭ تىزىملىكى.',
+'movesubpage' => '{{PLURAL:$1|تارماق بەت|تارماق بەت}}',
+'movesubpagetext' => 'بۇ بەتنىڭ $1 {{PLURAL:$1|تارماق بەت|تارماق بەت}}ى بار، تۆۋەندە كۆرسىتىلگەندەك.',
+'movenosubpage' => 'بۇ بەتنىڭ تارماق بېتى يوق',
+'movereason' => 'سەۋەب:',
+'revertmove' => 'قايتۇر',
+'delete_and_move' => 'ئۆچۈرۈپ يۆتكە',
+'delete_and_move_text' => '== ئۆچۈرۈش زۆرۈر ==
+نىشان بەت "[[:$1]]" مەۋجۇد.
+يۆتكەشكە قولاي بولۇشى ئۈچۈن بۇ بەتنى ئۆچۈرەمسىز؟',
+'delete_and_move_confirm' => 'ھەئە، بۇ بەتنى ئۆچۈر',
+'delete_and_move_reason' => 'يۆتكەشكە قولاي بولۇشى ئۈچۈن ئۆچۈر',
+'selfmove' => 'ئەسلى ماۋزۇ بىلەن نىشان ماۋزۇ ئوخشاش؛
+بەتنى ئۆزىدىن ئۆزىگە يۆتكىگىلى بولمايدۇ.',
+'immobile-source-namespace' => 'ئات بوشلۇقى "$1" بولغان بەتنى يۆتكىگىلى بولمايدۇ.',
+'immobile-target-namespace' => 'بەتنى "$1" ئات بوشلۇقىغا يۆتكىگىلى بولمايدۇ.',
+'immobile-target-namespace-iw' => 'بەت يۆتكىگەندە wiki دىن ھالقىغان ئۇلانما ئىناۋەتلىك نىشان ئەمەس.',
+'immobile-source-page' => 'بۇ بەتنى يۆتكىگىلى بولمايدۇ.',
+'immobile-target-page' => 'بۇ نىشان ماۋزۇغا يۆتكىگىلى بولمايدۇ.',
+'imagenocrossnamespace' => 'ھۆججەتنى غەيرى ھۆججەت ئات بوشلۇقىغا يۆتكىگىلى بولمايدۇ.',
+'imagetypemismatch' => 'بۇ يېڭى كېڭەيتىلگەن ئات بىلەن باشقا تىپ ماسلاشمىدى.',
+'imageinvalidfilename' => 'نىشان ھۆججەت ئاتى ئىناۋەتسىز',
+'fix-double-redirects' => 'ئەسلى ماۋزۇغا قايتا نىشانلانغان ھەممە ئۇلىنىشنى يېڭىلا.',
+'move-leave-redirect' => 'قايتا نىشانلاشنى ساقلاپ قال',
+'protectedpagemovewarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت قۇلۇپلانغان شۇڭلاشقا باشقۇرغۇچى ھوقۇقىغا ئىگە ئىشلەتكۈچىلا ئۇنى يۆتكىيەلەيدۇ. پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
+'semiprotectedpagemovewarning' => "'''دىققەت:''' بۇ بەت قۇلۇپلانغان شۇڭلاشقا خەتلەتكەن ئىشلەتكۈچىلا ئۇنى يۆتكىيەلەيدۇ. پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
+'move-over-sharedrepo' => '== ھۆججەت مەۋجۇد ==
+[[:$1]] ھەمبەھىر مەنبەسىدە مەۋجۇد، ھۆججەت بۇ ماۋزۇغا يۆتكەلسە ھەمبەھىر مەنبەدىكى ھۆججەتنى قاپلىۋېتىدۇ.',
+'file-exists-sharedrepo' => 'تاللانغان ھۆججەت ئاتى ھەمبەھىر مەنبەدە مەۋجۇد.
+باشقا ئات تاللاڭ.',
+
+# Export
+'export' => 'بەت چىقار',
+'exporttext' => 'سىز بەلگىلەنگەن بىر ياكى بىر گۇرۇپپا بەتنىڭ تېكستى ۋە تەھرىرلەش تارىخىنى XML فورماتىدا چىقىرالايسىز.
+بۇنداق بولغاندا مۇناسىۋەتلىك بەتلەر [[Special:Import|بەت ئەكىر ]]ىش ئارقىلىق MediaWiki ئىجرا قىلىنىۋاتقان باشقا بەتكە ئەكىرگىلى بولىدۇ.
+
+بەت چىقىرىشتا، تۆۋەندىكى تېكست رامكىسىغا بەت ماۋزۇسىنى كىرگۈزۈپ، ھەر بىر قۇردا بىر ماۋزۇ، ھەمدە بەت تارىخ بار ئىلگىرىكى تۈزىتىلگەن نەشرىنى تاللامسىز يوق، ياكى پەقەت ئاخىرقى قېتىملىق تەھرىر ئۇچۇرى بار نۆۋەتتىكى تۈزىتىلگەن نەشرىنى چىقىرىشنى تاللاڭ.
+
+ئۇنىڭدىن باشقا ئۇلانمىدىن پايدىلىنىپ ھۆججەت چىقىرالايسىز، مەسىلەن سىز [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] دىن پايدىلىنىپ "[[{{MediaWiki:Mainpage}}]]"بەت چىقىرالايسىز.',
+'exportcuronly' => 'ھەممە تارىخنى ئەمەس بەلكى نۆۋەتتىكى تۈزىتىلگەن نەشرىنىلا ئۆز ئىچىگە ئالىدۇ.',
+'exportnohistory' => "----
+'''دىققەت:''' ئىقتىدار سەۋەبلىك بۇ جەدۋەلدىن ھەممە تارىخنى چىقىرىش چەكلەنگەن.",
+'export-submit' => 'چىقار',
+'export-addcattext' => 'تۈردىن بەت قوش:',
+'export-addcat' => 'قوش',
+'export-addnstext' => 'ئات بوشلۇقىدىن بەت قوش:',
+'export-addns' => 'قوش',
+'export-download' => 'ھۆججەتكە ساقلا',
+'export-templates' => 'قېلىپنى ئۆز ئىچىگە ئالىدۇ',
+'export-pagelinks' => 'ئۆز ئىچىگە ئالغان ئۇلانما بەتنىڭ ئىزدەش چوڭقۇرلۇقى:',
+
+# Namespace 8 related
+'allmessages' => 'سىستېما ئۇچۇرلىرى',
+'allmessagesname' => 'ئاتى',
+'allmessagesdefault' => 'كۆڭۈلدىكى ئۇچۇر تېكستى',
+'allmessagescurrent' => 'نۆۋەتتىكى ئۇچۇر تېكستى',
+'allmessagestext' => 'بۇ جايدا تەڭشىگىلى بولىدىغان ھەممە سىستېما كۆرۈنۈش ئۇچۇرلىرى كۆرسىتىلدى.
+ئەگەر ھەقىقىي يەرلەشتۈرۈلگەن MediaWiki غا تۆھپە قوشماقچى بولسىڭىز[http://www.mediawiki.org/wiki/Localisation MediaWiki يەرلىكلەشتۈرۈش] ۋە [http://translatewiki.net translatewiki.net] نى زىيارەت قىلىڭ.',
+'allmessagesnotsupportedDB' => "بۇ بەتنى ئىشلەتكىلى بولمايدۇ، سەۋەبى '''\$wgUseDatabaseMessages''' چەكلەنگەن.",
+'allmessages-filter-legend' => 'سۈزگۈچ',
+'allmessages-filter' => 'ئىختىيارىچە سۈزگۈچ ھالىتى:',
+'allmessages-filter-unmodified' => 'ئۆزگەرتىلمىگەن',
+'allmessages-filter-all' => 'ھەممىسى',
+'allmessages-filter-modified' => 'ئۆزگەرتىلگەن',
+'allmessages-prefix' => 'ئالدى قوشۇلغۇچى سۈزگۈچ:',
+'allmessages-language' => 'تىل:',
+'allmessages-filter-submit' => 'يۆتكەل',
+
+# Thumbnails
+'thumbnail-more' => 'چوڭايت',
+'filemissing' => 'ھۆججەت يوقالغان',
+'thumbnail_error' => 'كىچىك رەسىم قۇرۇش خاتالىقى: $1',
+'djvu_page_error' => 'DjVu بېتى دائىرىدىن ھالقىپ كەتتى',
+'djvu_no_xml' => 'DjVu ھۆججىتىدىن XML گە ئېرىشەلمىدى',
+'thumbnail_invalid_params' => 'ئىناۋەتسىز كىچىك رەسىم پارامېتىرى',
+'thumbnail_dest_directory' => 'نىشان مۇندەرىجە قۇرالمىدى',
+'thumbnail_image-type' => 'سۈرەت فورماتىنى قوللىمايدۇ',
+'thumbnail_gd-library' => 'تاماملانمىغان GD ئامبار تەڭشىكى: $1 ئىقتىدارى يوقالغان',
+'thumbnail_image-missing' => 'ھۆججەت يوقالغاندەك تۇرىدۇ: $1',
+
+# Special:Import
+'import' => 'بەت ئەكىر',
+'importinterwiki' => 'wiki ھالقىپ ئەكىر',
+'import-interwiki-text' => 'wiki دىن بىرنى ۋە بەت ماۋزۇسىنى تاللاپ ئەكىرىڭ.
+تۈزىتىلگەن ۋاقىت ۋە تەھرىرلىگۈچى ئاتى بىرلا ۋاقىتتا ساقلىنىدۇ.
+بارلىق wiki ھالقىغان ئەكىرىش مەشغۇلاتى [[Special:Log/import|ئەكىرىش خاتىرىسى]]غا خاتىرىلىنىدۇ.',
+'import-interwiki-source' => 'مەنبە wiki /بەت:',
+'import-interwiki-history' => 'بۇ بەتنىڭ ھەممە تارىخى تۈزىتىلگەن نەشرىنى كۆچۈر.',
+'import-interwiki-templates' => 'ھەممە قېلىپىنى ئۆز ئىچىگە ئالىدۇ',
+'import-interwiki-submit' => 'ئەكىر',
+'import-interwiki-namespace' => 'نىشان ئات بوشلۇقى:',
+'import-upload-filename' => ':ھۆججەت ئاتى',
+'import-comment' => 'ئىزاھات:',
+'importtext' => ' [[Special:Export|چىقىرىش ئىقتىدارى]]نى ئىشلىتىپ ئەسلى wiki دىن ھۆججەت چىقىرىڭ .
+كومپيۇتېرىڭىزدا ساقلاپ ئاندىن بۇ جايغا يۈكلەڭ.',
+'importstart' => 'بەت ئەكىرىۋاتىدۇ…',
+'import-revision-count' => '$1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}',
+'importnopages' => 'ئەكىرىدىغان بەت يوق.',
+'importfailed' => 'ئەكىرىش مەغلۇپ بولدى: <nowiki>$1</nowiki>',
+'importunknownsource' => 'نامەلۇم مەنبە ئەكىرىش تىپى',
+'importcantopen' => 'ئەكىرگەن ھۆججەتنى ئاچالمىدى',
+'importbadinterwiki' => 'بۇزۇلغان wiki ئىچكى ئۇلانمىسى',
+'importnotext' => 'بوش ياكى تېكست يوق',
+'importsuccess' => 'ئەكىرىش تاماملاندى!',
+'importhistoryconflict' => 'توقۇنۇشىدىغان تەھرىرلەش تارىخ مەۋجۇد (بەلكىم ئىلگىرى بۇ بەت ئەكىرىلگەن بولۇشى مۇمكىن)',
+'importnosources' => 'wiki ھالقىپ ئەكىرگەن مەنبەگە ئېنىقلىما بېرىلمىگەن، ئۇنىڭ ئۈستىگە بىۋاسىتە تارىخ يوللاشقا يول قويۇلمايدۇ.',
+'importnofile' => 'ئەكىرىدىغان ھۆججەت يۈكلەنمىدى.',
+'importuploaderrorsize' => 'ئەكىرگەن ھۆججەتنى يۈكلەش مەغلۇپ بولدى.
+يۈكلىنىدىغان ھۆججەت يول قويۇلىدىغان ھۆججەت چوڭلۇق چېكىدىن ئېشىپ كەتتى.',
+'importuploaderrorpartial' => 'ئەكىرگەن ھۆججەتنى يۈكلەش مەغلۇپ بولدى.
+ھۆججەتنىڭ بىر قىسمىلا يۈكلەندى.',
+'importuploaderrortemp' => 'ئەكىرگەن ھۆججەتنى يۈكلەش مەغلۇپ بولدى.
+ۋاقىتلىق قىسقۇچ يوقالغان.',
+'import-parse-failure' => 'XML ئەكىرىش تەھلىل خاتالىقى',
+'import-noarticle' => 'ئەكىرىدىغان بەت يوق!',
+'import-nonewrevisions' => 'ھەممە تۈزىتىش بايىلا ئەكىرىلگەن.',
+'xml-error-string' => '$2 قۇردىكى $1، ستون $3 ($4 بايت): $5',
+'import-upload' => 'XML سانلىق مەلۇماتى يۈكلە',
+'import-token-mismatch' => 'جەريان سانلىق مەلۇماتى يوقالدى.
+ قايتا سىناڭ.',
+'import-invalid-interwiki' => 'بەلگىلەنگەن wiki دىن ئەكىرەلمىدى.',
+
+# Import log
+'importlogpage' => 'ئەكىرىش خاتىرىسى',
+'importlogpagetext' => 'باشقا wiki دىن تارىخ خاتىرىسىنى قوشۇپ باشقۇرغۇچى سۈپىتىدە ئەكىرىش.',
+'import-logentry-upload' => 'ھۆججەت يۈكلەپ [[$1]] ئەكىرىلدى',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}',
+'import-logentry-interwiki' => 'wiki ھالقىغان $1',
+'import-logentry-interwiki-detail' => '$2 دىن كەلگەن $1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'ئىشلەتكۈچى بېتىڭىز',
+'tooltip-pt-anonuserpage' => 'بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى',
+'tooltip-pt-mytalk' => 'مۇنازىرە بېتىڭىز',
+'tooltip-pt-anontalk' => 'مەزكۇر IP ئادرېستىن كەلگەن تەھرىرنىڭ مۇنازىرىسى',
+'tooltip-pt-preferences' => 'مايىللىق تەڭشىىڭىز',
+'tooltip-pt-watchlist' => 'ئۆزگىرىشنى كۆزەت قىلىۋاتقان بەت تىزىملىكىڭىز',
+'tooltip-pt-mycontris' => 'تۆھپە تىزىملىكىڭىز',
+'tooltip-pt-login' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
+'tooltip-pt-anonlogin' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
+'tooltip-pt-logout' => 'تىزىمدىن چىق',
+'tooltip-ca-talk' => 'بەت مەزمۇنى ھەققىدىكى مۇنازىرە',
+'tooltip-ca-edit' => 'بۇ بەتنى تەھرىرلىيەلەيسىز.
+ساقلاشتىن ئىلگىرى ئالدىن كۆزەت كۇنۇپكىسىنى ئىشلىتىڭ',
+'tooltip-ca-addsection' => 'يېڭى بىر سۆزلىشىش باشلا',
+'tooltip-ca-viewsource' => 'بۇ بەت قوغدالغان.
+مەنبە ھۆججىتىنى كۆرەلەيسىز',
+'tooltip-ca-history' => 'بۇ بەتنىڭ بۇرۇنقى نەشرى',
+'tooltip-ca-protect' => 'بۇ بەتنى قوغدا',
+'tooltip-ca-unprotect' => 'بۇ بەتنى قوغدىما',
+'tooltip-ca-delete' => 'بۇ بەتنى ئۆچۈر',
+'tooltip-ca-undelete' => 'بۇ بەتنى ئۆچۈرۈلۈشتىن ئىلگىرىكى ھالەتكە ئەسلىگە كەلتۈر',
+'tooltip-ca-move' => 'بۇ بەتنى يۆتكە',
+'tooltip-ca-watch' => 'بۇ بەتنى كۆزەت تىزىملىكىگە قوش',
+'tooltip-ca-unwatch' => 'بۇ بەتنى كۆزەت تىزىملىكىمدىن چىقىرىۋەت',
+'tooltip-search' => '{{SITENAME}} ئىزدە',
+'tooltip-search-go' => 'ئەگەر بۇ ئاتتىكى بەت مەۋجۇد بولسا شۇ بەتكە يۆتكەل',
+'tooltip-search-fulltext' => 'بۇ تېكست بار بەتنى ئىزدە',
+'tooltip-p-logo' => 'باش بەتنى زىيارەت قىل',
+'tooltip-n-mainpage' => 'باش بەتنى زىيارەت قىل',
+'tooltip-n-mainpage-description' => 'باش بەتنى زىيارەت قىل',
+'tooltip-n-portal' => 'بۇ قۇرۇلۇش ھەققىدە، سىز نېمە ئىش قىلالايسىز، قانداق قىلىش لازىم',
+'tooltip-n-currentevents' => 'نۆۋەتتىكى ھادىسىنىڭ ئارقا كۆرۈنۈش ئۇچۇرىنى ئىزدە',
+'tooltip-n-recentchanges' => 'wiki بېتىدىكى يېقىنقى ئۆزگىرىش تىزىملىكى',
+'tooltip-n-randompage' => 'خالىغان بەتنى يۈكلە',
+'tooltip-n-help' => 'ياردەم ئىزدەيدىغان ئورۇن',
+'tooltip-t-whatlinkshere' => 'بۇ جايغا ئۇلانغان ھەممە wiki بېتىنى كۆرسەت',
+'tooltip-t-recentchangeslinked' => 'بۇ بەتكە ئۇلانغان بەتنىڭ يېقىنقى ئۆزگىرىشى',
+'tooltip-feed-rss' => 'بۇ بەتنىڭ RSS قانىلى',
+'tooltip-feed-atom' => 'بۇ بەتنىڭ Atom قانىلى',
+'tooltip-t-contributions' => 'بۇ ئىشلەتكۈچىنىڭ تۆھپە تىزىملىكىنى كۆرسەت',
+'tooltip-t-emailuser' => 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا',
+'tooltip-t-upload' => 'ھۆججەتلەرنى يۈكلە',
+'tooltip-t-specialpages' => 'بارلىق ئالاھىدە بەتلەر تىزىملىكى',
+'tooltip-t-print' => 'بۇ بەتنىڭ باسقىلى بولىدىغان نەشرى',
+'tooltip-t-permalink' => 'ئۆزگەرتىلگەن نەشرىدىكى بۇ بەتنىڭ مەڭگۈلۈك ئۇلانمىسى',
+'tooltip-ca-nstab-main' => 'مەزمۇن بېتىنى كۆرسەت',
+'tooltip-ca-nstab-user' => 'ئىشلەتكۈچى بېتىنى كۆرسەت',
+'tooltip-ca-nstab-media' => 'ۋاسىتە بېتىنى كۆرسەت',
+'tooltip-ca-nstab-special' => 'بۇ ئالاھىدە بەت، بۇ بەتنى تەھرىرلىيەلمەيسىز.',
+'tooltip-ca-nstab-project' => 'قۇرۇلۇش بېتىنى كۆرسەت',
+'tooltip-ca-nstab-image' => 'ھۆججەت بېتى كۆرسەت',
+'tooltip-ca-nstab-mediawiki' => 'سىستېما ئۇچۇرىنى كۆرسەت',
+'tooltip-ca-nstab-template' => 'قېلىپ كۆرسەت',
+'tooltip-ca-nstab-help' => 'ياردەم بېتىنى كۆرسەت',
+'tooltip-ca-nstab-category' => 'تۈر بېتىنى كۆرسەت',
+'tooltip-minoredit' => 'بۇنىڭغا ئازراقلا تەھرىرلەش بەلگىسى قوي',
+'tooltip-save' => 'ئۆزگەرتىشىڭىزنى ساقلاڭ',
+'tooltip-preview' => 'ئۆزگەرتىشىڭىزنى ئالدىن كۆزىتىڭ، ساقلاشتىن بۇرۇن بۇ ئىقتىدارنى ئىشلىتىڭ!',
+'tooltip-diff' => 'بۇ تېكستكە ئېلىپ بارغان ئۆزگەرتىشنى كۆرسەت',
+'tooltip-compareselectedversions' => 'بۇ بەتتە تاللانغان ئىككى نەشرىنىڭ پەرقىنى كۆرسەت',
+'tooltip-watch' => 'بۇ بەتنى كۆزەت تىزىملىكىگە قوش',
+'tooltip-recreate' => 'ئۆچۈرۈلگەن بولسىمۇ بۇ بەتنى قايتا قۇر',
+'tooltip-upload' => 'يۈكلەشنى باشلا',
+'tooltip-rollback' => '"ئەسلىگە قايتۇر" بىر چېكىلسە ئالدىنقى تۆھپىكارنىڭ تەھرىرىلىگەن ھالىتىگە قايتۇرىدۇ.',
+'tooltip-undo' => '\\"يېنىۋال\\" تەھرىرلەش ھالىتىدە ئەسلىگە كەلتۈرۈش ئۈچۈن ئالدىن كۆزىتىش ھالىتىدىن تەھرىرلەشنى ئاچىدۇ
+ئۇ قىسقىچە مەزمۇنغا سەۋەبىنى قوشۇشغا يول قويىدۇ.',
+
+# Metadata
+'nodublincore' => 'Dublin Core RDF مېتا سانلىق مەلۇماتىنى بۇ مۇلازىمىتىردا ئىشلەتكىلى بولمايدۇ.',
+'nocreativecommons' => 'Creative Commons RDF مېتا سانلىق مەلۇماتىنى بۇ مۇلازىمىتىردا ئىشلەتكىلى بولمايدۇ.',
+'notacceptable' => 'wiki مۇلازىمىتىرى سىزنىڭ خېرىدار تەرىپىڭىز ئوقۇيالايدىغان سانلىق مەلۇمات فورماتى بىلەن تەمىنلىيەلمەيدۇ.',
+
+# Attribution
+'anonymous' => ' {{SITENAME}} نىڭ ئىمزاسىز {{PLURAL:$1|ئىشلەتكۈچى|ئىشلەتكۈچى}}',
+'siteuser' => '{{SITENAME}} ئىشلەتكۈچى $1',
+'anonuser' => '{{SITENAME}} ئاتسىز ئىشلەتكۈچى $1',
+'lastmodifiedatby' => 'بۇ بەتنى $3 ئاخىرقى قېتىم $2 ئۆزگەرتكەن $1',
+'othercontribs' => '$1 نىڭ خىزمىتى ئاساسىدا.',
+'others' => 'باشقا',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|ئىشلەتكۈچى|ئىشلەتكۈچى}} $1',
+'anonusers' => '{{SITENAME}} ئاتسىز {{PLURAL:$2|ئىشلەتكۈچى|ئىشلەتكۈچى}} $1',
+'creditspage' => 'بەت تەشەككۈرى',
+'nocredits' => 'بۇ بەتنىڭ تەشەككۈر تىزىملىك ئۇچۇرى يوق.',
+
+# Spam protection
+'spamprotectiontitle' => 'ئېلان قوغداش سۈزگۈچى',
+'spamprotectiontext' => 'سىز ساقلىماقچى بولغان بەتنى ئېلان سۈزگۈچ چەكلىدى.
+بۇ سىرتقى تور بېكەت ئۇلانمىسىدىن كېلىپ چىققان بولۇشى مۇمكىن.',
+'spamprotectionmatch' => 'تۆۋەندىكىسى ئېلان سۈزگۈچىگە ئۇرۇلغاندىكى تېكست: $1',
+'spambot_username' => 'MediaWiki ئېلان تازىلىغۇچ',
+'spam_reverting' => 'ئۇلانمىسى يوق $1 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئەسلىگە كەلتۈرۈۋاتىدۇ',
+'spam_blanking' => 'ھەممە ئۇلانمىنى ئۆز ئىچىگە ئالغان $1 نىڭ تۈزىتىلگەن نەشرى، توسۇۋاتىدۇ',
+
+# Info page
+'infosubtitle' => 'بەت ئۇچۇرى',
+'numedits' => 'تەھرىر سانى (بەت): $1',
+'numtalkedits' => 'تەھرىر سانى (مۇنازىرە بېتى): $1',
+'numwatchers' => 'كۆزەتكۈچىلەر سانى: $1',
+'numauthors' => 'ئاپتورلار سانى (بەت): $1',
+'numtalkauthors' => 'ئاپتورلار سانى (مۇنازىرە بېتى): $1',
+
+# Math options
+'mw_math_png' => 'ھەمىشە PNG ئىشلەت',
+'mw_math_simple' => 'ئەگەر ئاددىي فورمۇلا بولسا HTML ئىشلەت بولمىسا PNG سۈرەت ئىشلەت',
+'mw_math_html' => 'ئەگەر HTML ئىشلەتكىلى بولسا شۇنى بولمىسا PNG سۈرەت ئىشلەت',
+'mw_math_source' => 'TeX كودى كۆرسەت (تېكست توركۆرگۈ ئىشلەتكەندە)',
+'mw_math_modern' => 'يېڭى نەشرىدىكى توركۆرگۈ ئىشلىتىش تەۋسىيە قىلىنىدۇ',
+'mw_math_mathml' => 'ئامال بار MathML ئىشلىتىدۇ (سىناق)',
+
+# Math errors
+'math_failure' => 'تەھلىل قىلالمىدى',
+'math_unknown_error' => 'نامەلۇم خاتالىق',
+'math_unknown_function' => 'نامەلۇم فونكسىيە',
+'math_lexing_error' => 'جۈملە خاتالىقى',
+'math_syntax_error' => 'گرامماتىكىلىق خاتالىق',
+'math_image_error' => 'PNG ئايلاندۇرۇش مەغلۇپ بولدى؛
+latex، dvips، gs، ۋە convert توغرا قاچىلانغانلىقىنى تەكشۈرۈڭ',
+'math_bad_tmpdir' => 'ماتېماتېكىلىق فورمۇلا يازىدىغان ياكى قۇرىدىغان ۋاقىتلىق مۇندەرىجە قۇرالمىدى',
+'math_bad_output' => 'ماتېماتېكىلىق فورمۇلا چىقىرىدىغان مۇندەرىجىگە يازالمىدى ياكى قۇرالمىدى',
+'math_notexvc' => ' texvc ئىجرا قىلالمىدى؛ math/README دىن پايدىلىنىپ سەپلەڭ.',
+
+# Patrolling
+'markaspatrolleddiff' => 'چارلاش بەلگىسى قوي',
+'markaspatrolledtext' => 'بۇ بەتكە چارلاش بەلگىسى قوي',
+'markedaspatrolled' => 'چارلاش بەلگىسى قويۇلغان',
+'markedaspatrolledtext' => '[[:$1]] نىڭ تاللانغان ئۆزگەرتىلگەن نەشرىگە تەكشۈرۈلگەن بەلگىسى قويۇلدى',
+'rcpatroldisabled' => 'يېقىنقى ئۆزگەرتىشتە نازارەت قىلىش چەكلەنگەن',
+'rcpatroldisabledtext' => 'يېقىندا ئۆزگەرتىشنى چارلاش ئىقتىدارى نۆۋەتتە تاقالغان.',
+'markedaspatrollederror' => 'چارلاش بەلگىسى قويغىلى بولمايدۇ',
+'markedaspatrollederrortext' => 'مەلۇم نەشرىنى تاللىسىڭىز ئاندىن چارلاش بەلگىسى قويغىلى بولىدۇ.',
+'markedaspatrollederror-noautopatrol' => 'سىز ئۆزىڭىزنىڭ ئۆزگەرتىشىگە چارلاش بەلگىسى قويالمايسىز.',
+
+# Patrol log
+'patrol-log-page' => 'چارلاش خاتىرىسى',
+'patrol-log-header' => 'بۇ چارلانغان تۈزىتىلگەن نەشرى.',
+'patrol-log-line' => '$2 نىڭ نەشرى $1 غا چارلاش بەلگىسى قويۇلغان $3',
+'patrol-log-auto' => '(ئاپتوماتىك)',
+'patrol-log-diff' => 'تۈزىتىش $1',
+'log-show-hide-patrol' => '$1 چارلاش خاتىرىسى',
+
+# Image deletion
+'deletedrevision' => '$1 كونا تۈزىتىلگەن نەشرى ئۆچۈرۈلدى',
+'filedeleteerror-short' => 'ھۆججەت ئۆچۈرۈش خاتالىقى: $1',
+'filedeleteerror-long' => 'ھۆججەت ئۆچۈرۈۋاتقاندا خاتالىق كۆرۈلدى:
+
+$1',
+'filedelete-missing' => '"$1" ھۆججەت مەۋجۇد بولمىغانلىقتىن ئۇنى ئۆچۈرگىلى بولمايدۇ.',
+'filedelete-old-unregistered' => 'بەلگىلەنگەن ھۆججەتنىڭ "$1" تۈزىتىلگەن نەشرى سانداندا يوق.',
+'filedelete-current-unregistered' => 'بەلگىلەنگەن ھۆججەت "$1" سانداندا يوق.',
+'filedelete-archive-read-only' => 'تور بەت مۇلازىمىتىرىدىكى ئارخىپ مۇندەرىجىسى "$1" گە يازغىلى بولمايدۇ.',
+
+# Browsing diffs
+'previousdiff' => '← ئالدىنقى نەشرى',
+'nextdiff' => 'يېڭى نەشرى →',
+
+# Media information
+'mediawarning' => "'''ئاگاھلاندۇرۇش''': بۇ ھۆججەتتە زەھەرخەندە كود بولۇشى مۇمكىن، ئۇنى ئىجرا قىلسىڭىز سىستېمىڭىزغا خەۋپ ئېلىپ كېلىشى مۇمكىن.",
+'imagemaxsize' => "سۈرەت چوڭلۇق چەكلىمىسى: <br />''(ھۆججەت چۈشەندۈرۈش بېتى ئۈچۈن)''",
+'thumbsize' => 'كىچىك سۈرەت چوڭلۇقى:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|بەت|بەت}}',
+'file-info' => '(ھۆججەت چوڭلۇقى: $1, MIME تىپى: $2)',
+'file-info-size' => '($1×$2 پىكسېل، ھۆججەت چوڭلۇقى: $3، MIME تىپى: $4)',
+'file-nohires' => '<small>يۇقىرىراق پەرق ئېتىش نىسبىتى يوق.</small>',
+'svg-long-desc' => '(SVG ھۆججىتى، ئاتاقتىكى چوڭلۇقى $1×$2 نۇقتا، ھۆججەت چوڭلۇقى: $3)',
+'show-big-image' => 'تولۇق ئېنىقلىق دەرىجىسى',
+'show-big-image-thumb' => '<small>بۇ ئالدىن كۆزىتىشنىڭ چوڭلۇقى: $1 × $2 نۇقتا</small>',
+'file-info-gif-looped' => 'دەۋرىيلەنگەن',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|كاندۇك|كاندۇك}}',
+
+# Special:NewFiles
+'newimages' => 'يېڭى ھۆججەت كارىدورى',
+'imagelisttext' => "تۆۋەندىكىسى $2 غا ئاساسەن تەرتىپلەنگەن'''$1''' {{PLURAL:$1|ھۆججەت|ھۆججەت}} sorted تىزىملىكى.",
+'newimages-summary' => 'بۇ ئالاھىدە بەتتە ئەڭ ئاخىرىدا يۈكلەنگەن ھۆججەت كۆرسىتىلىدۇ.',
+'newimages-legend' => 'سۈزگۈچ',
+'newimages-label' => 'ھۆججەت ئاتى (ياكى ئۇنىڭ پارچىسى):',
+'showhidebots' => '($1 ماشىنا ئادەم)',
+'noimages' => 'كۆرۈدىغان ھېچنېمە يوق.',
+'ilsubmit' => 'ئىزدەش',
+'bydate' => 'چېسلا بويىچە',
+'sp-newimages-showfrom' => '$2 دىن $1 باشلاپ يېڭى ھۆججەت كۆرسىتىۋاتىدۇ',
+
+# Bad image list
+'bad_image_list' => 'تۆۋەندىكى فورماتتا يېزىڭ:
+
+پەقەت (* بىلەن باشلانغان) كۆرسىتىلگەن تۈرلەرلا ئويلىشىلىدۇ.
+ھەر بىر قۇرنىڭ بىرىنچى ئۇلانمىسى چوقۇم بۇزۇلغان ھۆججەتكە ئۇلىنىشى لازىم.
+ بۇ ھۆججەت قايسى بەتلەردە كۆرسىتىلىشىدىن قەتئىي نەزەر،
+ ئوخشاش بىر قۇرنىڭ ئاخىرىدىكى ئۇلانما مۇستەسنا دەپ قارىلىدۇ،',
+
+# Metadata
+'metadata' => 'مېتا سانلىق مەلۇماتى',
+'metadata-help' => 'بۇ ھۆججەت كېڭەيتىلگەن تەپسىلاتنى ئۆز ئىچىگە ئالغان. بۇ ئۇچۇرلارنى رەقەملىك ئاپپارات ياكى سكاننېر قۇرغان ياكى رەقەملەشتۈرۈش جەريانىدا قوشۇلغان بولۇشى مۇمكىن.
+ئەگەر بۇ ھۆججەتنىڭ ئەسلى ھۆججىتى ئۆزگەرتىلسە، بىر قىسىم ئۇچۇرلار ئۆزگەرتىلگەندىن كېيىنكى ھۆججەتتە تولۇق ئەكس ئەتمەيدۇ.',
+'metadata-expand' => 'كېڭەيتىلگەن تەپسىلاتنى كۆرسەت',
+'metadata-collapse' => 'كېڭەيتىلگەن تەپسىلاتنى يوشۇر',
+'metadata-fields' => 'بۇ ئۇچۇردا كۆرسىتىلگەن EXIF مېتا سانلىق مەلۇماتى سۆز بۆلىكى سۈرەت كۆرسىتىلىدىغان بەتتە بولىدۇ،
+ مېتا سانلىق مەلۇمات بۇزۇلغاندا تۆۋەندىكى ئۇچۇرنىلا كۆرسىتىدۇ، باشقا مېتا سانلىق مەلۇماتلار كۆڭۈلدىكى ئەھۋالدا يوشۇرۇن تۇرىدۇ.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'كەڭلىك',
+'exif-imagelength' => 'ئېگىزلىك',
+'exif-bitspersample' => 'ھەر بىر نۇقتىنىڭ بىت سانى',
+'exif-compression' => 'پرىس لايىھىسى',
+'exif-photometricinterpretation' => 'نۇقتا بېرىكتۈرۈش',
+'exif-orientation' => 'يۆنىلىش',
+'exif-samplesperpixel' => 'نۇقتا سانى',
+'exif-planarconfiguration' => 'سانلىق مەلۇمات جايلىشىشى',
+'exif-ycbcrsubsampling' => 'سېرىق ۋە ئاچ قىزىل نۇسخا ئېلىش نىسبىتى',
+'exif-ycbcrpositioning' => 'سېرىق ۋە ئاچ قىزىل سەپلىمىسى',
+'exif-xresolution' => 'توغرىسىغا پەرق ئېتىش نىسبىتى',
+'exif-yresolution' => 'بويىغا پەرق ئېتىش نىسبىتى',
+'exif-resolutionunit' => 'X ۋە Y ئوقى پەرق ئېتىش نىسبىتى بىرلىكى',
+'exif-stripoffsets' => 'سۈرەت سانلىق مەلۇمات ئورنى',
+'exif-rowsperstrip' => 'ھەر بىر تاسماقنىڭ قۇر سانى',
+'exif-stripbytecounts' => 'ھەر بىر پرىسلانغان تاسماقنىڭ بايت سانى',
+'exif-jpeginterchangeformat' => 'JPEG SOI چەتنەش',
+'exif-jpeginterchangeformatlength' => 'JPEG سانلىق مەلۇماتى بايت',
+'exif-transferfunction' => 'يۆتكەش ئىقتىدارى',
+'exif-whitepoint' => 'ئاق نۇقتا رەڭ دەرىجىسى',
+'exif-primarychromaticities' => 'ئاساسىي رەڭ دەرىجىسى',
+'exif-ycbcrcoefficients' => 'رەڭ بوشلۇقىنى ئالماشتۇرۇش سانلار قاتارى كوئېففىتىسېنت',
+'exif-referenceblackwhite' => 'ئاق قارا پايدىلىنىش قىممىتى',
+'exif-datetime' => 'ھۆججەت ئۆزگەرتىلگەن چېسلا ۋە ۋاقىت',
+'exif-imagedescription' => 'سۈرەت ماۋزۇسى',
+'exif-make' => 'فوتو ئاپپارات ياسىغان زاۋۇت',
+'exif-model' => 'فوتو ئاپپارات تىپى',
+'exif-software' => 'ئىشلەتكەن يۇمشاق دېتال',
+'exif-artist' => 'ئاپتور',
+'exif-copyright' => 'نەشر ھوقۇقىغا ئىگىدارلىق قىلغۇچى',
+'exif-exifversion' => 'Exif نەشرى',
+'exif-flashpixversion' => 'قوللايدىغان Flashpix نەشرى',
+'exif-colorspace' => 'رەڭ بوشلۇقى',
+'exif-componentsconfiguration' => 'ھەر بىر تەركىپنىڭ سالمىقى',
+'exif-compressedbitsperpixel' => 'سۈرەت پرىسلاش شەكلى',
+'exif-pixelydimension' => 'ئىناۋەتلىك سۈرەت كەڭلىكى',
+'exif-pixelxdimension' => 'ئىناۋەتلىك سۈرەت ئېگىزلىكى',
+'exif-makernote' => 'زاۋۇت ئىزاھاتى',
+'exif-usercomment' => 'ئىشلەتكۈچى ئىزاھاتى',
+'exif-relatedsoundfile' => 'مۇناسىۋەتلىك ئۈن ھۆججىتى',
+'exif-datetimeoriginal' => 'سانلىق مەلۇمات قۇرۇلغان چېسلا ۋە ۋاقىت',
+'exif-datetimedigitized' => 'رەقەملەشتۈرۈلگەن چېسلا ۋە ۋاقىت',
+'exif-subsectime' => 'چېسلا ۋاقىت سېكۇنت',
+'exif-subsectimeoriginal' => 'ئەسلى چېسلا ۋاقىت سېكۇنت',
+'exif-subsectimedigitized' => 'رەقەملەشتۈرۈلگەن چېسلا ۋاقىت سېكۇنت',
+'exif-exposuretime' => 'ئاشكارىلانغان ۋاقتى',
+'exif-exposuretime-format' => '$1 سېكۇنت ($2)',
+'exif-fnumber' => 'F قىممىتى',
+'exif-exposureprogram' => 'يورۇتۇش پروگراممىسى',
+'exif-spectralsensitivity' => 'سپېكتىر سەزگۈرلۈكى',
+'exif-isospeedratings' => 'ISO سۈرئەت نىسبىتى',
+'exif-oecf' => 'فوتو ئېلېكتىر ئايلاندۇرۇش فاكتورى',
+'exif-shutterspeedvalue' => 'تېز قاپقاق سۈرئىتى',
+'exif-aperturevalue' => 'نۇر گەردىشى',
+'exif-brightnessvalue' => 'يورۇقلۇق',
+'exif-exposurebiasvalue' => 'يورۇتۇش تولۇقلاش',
+'exif-maxaperturevalue' => 'ئەڭ چوڭ قۇرۇقلۇق نۇر گەردىشى',
+'exif-subjectdistance' => 'جىسىم ئارىلىقى',
+'exif-meteringmode' => 'ئۆلچەش ھالىتى',
+'exif-lightsource' => 'يورۇقلۇق مەنبەسى',
+'exif-flash' => 'چاقماق لامپا',
+'exif-focallength' => 'فوكۇس ئارىلىقى',
+'exif-subjectarea' => 'جىسىم دائىرىسى',
+'exif-flashenergy' => 'چاقماق لامپا كۈچى',
+'exif-spatialfrequencyresponse' => 'بوشلۇق چاستوتا ئىنكاسى',
+'exif-focalplanexresolution' => 'X ئوقى فوكال تەكشىلىك پەرق ئېتىش نىسبىتى',
+'exif-focalplaneyresolution' => 'Y ئوقى فوكال تەكشىلىك پەرق ئېتىش نىسبىتى',
+'exif-focalplaneresolutionunit' => 'فوكال تەكشىلىك پەرق ئېتىش نىسبىتى بىرلىكى',
+'exif-subjectlocation' => 'تېما ئورنى',
+'exif-exposureindex' => 'يورۇتۇش كۆرسەتكۈچى',
+'exif-sensingmethod' => 'يورۇقلۇق سەزگۈچ ھالىتى',
+'exif-filesource' => 'ھۆججەت مەنبەسى',
+'exif-scenetype' => 'مەنزىرە تىپى',
+'exif-cfapattern' => 'CFA ئەندىزىسى',
+'exif-customrendered' => 'ئىختىيارىچە سۈرەت بىر تەرەپ قىلىش',
+'exif-exposuremode' => 'يورۇتۇش ھالىتى',
+'exif-whitebalance' => 'ئاق بالانس',
+'exif-digitalzoomratio' => 'رەقەملىك فوكۇس ئۆزگەرتىش نىسبىتى',
+'exif-focallengthin35mmfilm' => '35 مىللىمېتىر فىلىم فوكۇس ئارىلىقى',
+'exif-scenecapturetype' => 'مەنزىرە سۈرەت تارتىش تىپى',
+'exif-gaincontrol' => 'مەنزىرە كونترول',
+'exif-contrast' => 'ئاق-قارىلىقى',
+'exif-saturation' => 'تويۇنۇش',
+'exif-sharpness' => 'ئۆتكۈرلۈك',
+'exif-devicesettingdescription' => 'ئۈسكۈنە تەڭشەك چۈشەندۈرۈشى',
+'exif-subjectdistancerange' => 'جىسىم ئارىلىق دائىرىسى',
+'exif-imageuniqueid' => 'بىردىنبىر سۈرەت كىملىكى',
+'exif-gpsversionid' => 'GPS بەلگە نەشرى',
+'exif-gpslatituderef' => 'شىمالىي ياكى جەنۇبىي كەڭلىك',
+'exif-gpslatitude' => 'كەڭلىك',
+'exif-gpslongituderef' => 'شەرقىي ياكى غەربىي ئۇزۇنلۇق',
+'exif-gpslongitude' => 'ئۇزۇنلۇق',
+'exif-gpsaltituderef' => 'دېڭىز يۈزىدىن ئېگىزلىك پايدىلىنىش نۇقتىسى',
+'exif-gpsaltitude' => 'دېڭىز يۈزىدىن ئېگىزلىك',
+'exif-gpstimestamp' => 'GPS ۋاقتى (ئاتوم سائىتى)',
+'exif-gpssatellites' => 'ئۆلچەشكە ئىشلەتكەن سۈنئىي ھەمراھ',
+'exif-gpsstatus' => 'قوبۇللىغۇچ ھالىتى',
+'exif-gpsmeasuremode' => 'ئۆلچەش ھالىتى',
+'exif-gpsdop' => 'ئۆلچەش ئېنىقلىقى',
+'exif-gpsspeedref' => 'سۈرئەت بىرلىكى',
+'exif-gpsspeed' => 'GPS قوبۇللىغۇچ سۈرئىتى',
+'exif-gpstrackref' => 'ھەرىكەتچان يۆنىلىش پايدىلىنىش نۇقتىسى',
+'exif-gpstrack' => 'ھەرىكەتچان يۆنىلىش',
+'exif-gpsimgdirectionref' => 'سۈرەت يۆنىلىش پايدىلىنىش نۇقتىسى',
+'exif-gpsimgdirection' => 'سۈرەت يۆنىلىشى',
+'exif-gpsmapdatum' => 'جۇغراپىيىلىك ئۆلچەپ سىزىش سانلىق مەلۇماتى ئىشلەتكەن',
+'exif-gpsdestlatituderef' => 'نىشان كەڭلىك پايدىلىنىش نۇقتىسى',
+'exif-gpsdestlatitude' => 'نىشان كەڭلىك',
+'exif-gpsdestlongituderef' => 'نىشان ئۇزۇنلۇق پايدىلىنىش نۇقتىسى',
+'exif-gpsdestlongitude' => 'نىشان ئۇزۇنلۇق',
+'exif-gpsdestbearingref' => 'نىشان ئورنى پايدىلىنىش نۇقتىسى',
+'exif-gpsdestbearing' => 'نىشان ئورنى',
+'exif-gpsdestdistanceref' => 'نىشان ئارىلىق پايدىلىنىش نۇقتىسى',
+'exif-gpsdestdistance' => 'نىشان ئارىلىقى',
+'exif-gpsprocessingmethod' => 'GPS بىر تەرەپ قىلىش ئۇسۇلىنىڭ ئاتى',
+'exif-gpsareainformation' => 'GPS دائىرە ئاتى',
+'exif-gpsdatestamp' => 'GPS چېسلا',
+'exif-gpsdifferential' => 'GPS دىففېرېنسىئال تۈزىتىش',
+
+# EXIF attributes
+'exif-compression-1' => 'پرىسلانمىغان',
+
+'exif-unknowndate' => 'نامەلۇم چېسلا',
+
+'exif-orientation-1' => 'نورمال',
+'exif-orientation-2' => 'توغرىسىغا ئايلاندۇر',
+'exif-orientation-3' => '180° ئايلاندۇر',
+'exif-orientation-4' => 'بويىغا ئايلاندۇر',
+'exif-orientation-5' => 'سولغا 90° بويىغا ئايلاندۇر',
+'exif-orientation-6' => 'ئوڭغا 90° ئايلاندۇر',
+'exif-orientation-7' => 'ئوڭغا 90° بويىغا ئايلاندۇر',
+'exif-orientation-8' => 'سولغا 90° ئايلاندۇر',
+
+'exif-planarconfiguration-1' => 'دوغىلاق ئەندىزىسى',
+'exif-planarconfiguration-2' => 'تەكشىلىك ئەندىزىسى',
+
+'exif-componentsconfiguration-0' => 'مەۋجۇد ئەمەس',
+
+'exif-exposureprogram-0' => 'ئېنىقلىما بېرىلمىگەن',
+'exif-exposureprogram-1' => 'قولدا',
+'exif-exposureprogram-2' => 'نورمال پروگرامما',
+'exif-exposureprogram-3' => 'نۇرچەمبىرى ئالدىنلىق ھالىتى',
+'exif-exposureprogram-4' => 'تېز قاپقاق ئالدىنلىق ھالىتى',
+'exif-exposureprogram-5' => 'ئۆزگىچە پروگرامما (مەنزىرە چوڭقۇرلۇقى ئالدىنلىق)',
+'exif-exposureprogram-6' => 'ھەرىكەتچان پروگرامما (تېز سۈرئەتلىك تېز قاپقاق سۈرئىتى ئالدىنلىق)',
+'exif-exposureprogram-7' => 'تەسۋىر ھالىتى (مەنزىرە فوكۇس ئارىلىقىنىڭ سىرتىدىكى يېقىن ئارىلىقتا سۈرەت تارتىشقا ئىشلىتىشكە ماس كېلىدۇ)',
+'exif-exposureprogram-8' => 'مەنزىرە ھالىتى (مەنزىرە فوكۇس ئارىلىقىنىڭ ئۈستىدىكى مەنزىرە سۈرەتكە ماس كېىلىدۇ)',
+
+'exif-subjectdistance-value' => '$1 مېتىر',
+
+'exif-meteringmode-0' => 'نامەلۇم',
+'exif-meteringmode-1' => 'ئوتتۇرىچە',
+'exif-meteringmode-2' => 'مەركەزدىن ۋەزىنلىك ئوتتۇرىچە ئۆلچەش قىممىتى',
+'exif-meteringmode-3' => 'نۇقتا',
+'exif-meteringmode-4' => 'كۆپ نۇقتا',
+'exif-meteringmode-5' => 'ئەندىزە',
+'exif-meteringmode-6' => 'قىسمەن',
+'exif-meteringmode-255' => 'باشقا',
+
+'exif-lightsource-0' => 'نامەلۇم',
+'exif-lightsource-1' => 'كۈن نۇرى',
+'exif-lightsource-2' => 'يالتىراق لامپا',
+'exif-lightsource-3' => 'ۋولفرام لامپا (چوغلانما لامپا)',
+'exif-lightsource-4' => 'چاقماق لامپا',
+'exif-lightsource-9' => 'ئوچۇق',
+'exif-lightsource-10' => 'بۇلۇتلۇق',
+'exif-lightsource-11' => 'سايە',
+'exif-lightsource-12' => 'كۈن نۇرى نەي لامپا (D 5700-7100K)',
+'exif-lightsource-13' => 'كۈن نۇرى ئاق رەڭلىك نەي لامپا (N 4600-5400K)',
+'exif-lightsource-14' => 'سوغۇق ئاق رەڭلىك نەي لامپا (W 3900-4500K)',
+'exif-lightsource-15' => 'ئاق رەڭلىك نەي لامپا (WW 3200-3700K)',
+'exif-lightsource-17' => 'ئۆلچەملىك چىراغ A',
+'exif-lightsource-18' => 'ئۆلچەملىك چىراغ B',
+'exif-lightsource-19' => 'ئۆلچەملىك چىراغ C',
+'exif-lightsource-24' => 'ISO سۈرەتكە ئېلىش چىرىغى',
+'exif-lightsource-255' => 'باشقا نۇر مەنبەسى',
+
+# Flash modes
+'exif-flash-fired-0' => 'چاقماق لامپا يانمىدى',
+'exif-flash-fired-1' => 'چاقماق لامپا يېقىلدى',
+'exif-flash-return-0' => 'زەرەتسىزلەش تەكشۈرۈش ئىقتىدارى يوق',
+'exif-flash-return-2' => 'زەرەتسىزلەش لامپىسى يوق',
+'exif-flash-return-3' => 'زەرەتسىزلەش لامپىسى بايقالدى',
+'exif-flash-mode-1' => 'چاقماق لامپىنى مەجبۇرىي ياندۇر',
+'exif-flash-mode-2' => 'چاقماق لامپىنى مەجبۇرىي ئۆچۈر',
+'exif-flash-mode-3' => 'ئاپتوماتىك ھالەت',
+'exif-flash-function-1' => 'چاقماق لامپا ئىقتىدارى يوق',
+'exif-flash-redeye-1' => 'قىزىل كۆزنى ئاجىزلىتىش ھالىتى',
+
+'exif-focalplaneresolutionunit-2' => 'ديۇيم',
+
+'exif-sensingmethod-1' => 'ئېنىقلىمىسىز',
+'exif-sensingmethod-2' => 'بىر بۆلەك رايون رەڭ سەزگۈچ',
+'exif-sensingmethod-3' => 'ئىككى بۆلەك رايون رەڭ سەزگۈچ',
+'exif-sensingmethod-4' => 'ئۈچ بۆلەك رايون رەڭ سەزگۈچ',
+'exif-sensingmethod-5' => 'تۇتاش رايون رەڭ سەزگۈچ',
+'exif-sensingmethod-7' => 'ئۈچ سىزىقلىق سەزگۈچ',
+'exif-sensingmethod-8' => 'تۇتاش سىزىقلىق رەڭ سەزگۈچ',
+
+'exif-scenetype-1' => 'بىۋاسىتە تارتىلغان سۈرەت',
+
+'exif-customrendered-0' => 'نورمال بىر تەرەپ قىلىش',
+'exif-customrendered-1' => 'ئىختىيارىچە بىر تەرەپ قىلىش',
+
+'exif-exposuremode-0' => 'ئۆزلۈكىدىن نۇرلاندۇرۇش',
+'exif-exposuremode-1' => 'قولدا نۇرلاندۇرۇش',
+'exif-exposuremode-2' => 'ئۆزلۈكىدىن نۇرلاندۇرۇش تەڭشەش',
+
+'exif-whitebalance-0' => 'ئاپتوماتىك ئاق بالانس',
+'exif-whitebalance-1' => 'قولدا ئاق بالانس',
+
+'exif-scenecapturetype-0' => 'ئۆلچەملىك',
+'exif-scenecapturetype-1' => 'مەنزىرە',
+'exif-scenecapturetype-2' => 'تەسۋىر',
+'exif-scenecapturetype-3' => 'كەچلىك مەنزىرە',
+
+'exif-gaincontrol-0' => 'يوق',
+'exif-gaincontrol-1' => 'تۆۋەن ئارتىش',
+'exif-gaincontrol-2' => 'يۇقىرى ئارتىش',
+'exif-gaincontrol-3' => 'ئاستا تۆۋەنلەش',
+'exif-gaincontrol-4' => 'تېز تۆۋەنلەش',
+
+'exif-contrast-0' => 'نورمال',
+'exif-contrast-1' => 'تۆۋەن',
+'exif-contrast-2' => 'يۇقىرى',
+
+'exif-saturation-0' => 'نورمال',
+'exif-saturation-1' => 'تۆۋەن تويۇنۇش',
+'exif-saturation-2' => 'يۇقىرى تويۇنۇش',
+
+'exif-sharpness-0' => 'نورمال',
+'exif-sharpness-1' => 'تۆۋەن',
+'exif-sharpness-2' => 'يۇقىرى',
+
+'exif-subjectdistancerange-0' => 'نامەلۇم',
+'exif-subjectdistancerange-1' => 'ماكرو',
+'exif-subjectdistancerange-2' => 'يېقىن مەنزىرە',
+'exif-subjectdistancerange-3' => 'يىراق مەنزىرە',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'شىمالىي كەڭلىك',
+'exif-gpslatitude-s' => 'جەنۇبىي كەڭلىك',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'شەرقىي ئۇزۇنلۇق',
+'exif-gpslongitude-w' => 'غەربىي ئۇزۇنلۇق',
+
+'exif-gpsstatus-a' => 'ئۆلچەش جەريانى',
+'exif-gpsstatus-v' => 'ھەمكارلىشىپ ئۆلچەش',
+
+'exif-gpsmeasuremode-2' => 'ئىككى ئۆلچەملىك ئۆلچەش',
+'exif-gpsmeasuremode-3' => 'ئۈچ ئۆلچەملىك ئۆلچەش',
+
+# Pseudotags used for GPSSpeedRef
+'exif-gpsspeed-k' => 'سائىتىگە كىلومېتىر',
+'exif-gpsspeed-m' => 'سائىتىگە ئىنگلىز مىلى',
+'exif-gpsspeed-n' => 'دېڭىز مىلى',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'ھەقىقىي يۆنىلىش',
+'exif-gpsdirection-m' => 'يەر ماگنىتى يۆنىلىش',
+
+# External editor support
+'edit-externally' => 'بۇ ھۆججەتنى سىرتقى قوللىنىشچان پروگراممىدا تەھرىرلە',
+'edit-externally-help' => '( [http://www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
+
+# 'all' in various places, this might be different for inflected languages
+'recentchangesall' => 'ھەممىسى',
+'imagelistall' => 'ھەممىسى',
+'watchlistall2' => 'ھەممىسى',
+'namespacesall' => 'ھەممىسى',
+'monthsall' => 'ھەممىسى',
+'limitall' => 'ھەممىسى',
+
+# E-mail address confirmation
+'confirmemail' => 'جەزملەش ئېلخەت ئادرېسى',
+'confirmemail_noemail' => 'سىز ئۆزىڭىزنىڭ [[Special:Preferences|user مايىللىق]] تەڭشىكىڭىزگە ئىناۋەتلىك ئېلخەت ئادرېسى كىرگۈزمەپسىز.',
+'confirmemail_text' => '{{SITENAME}} ئېلخەت ئىقتىدارى ئىشلىتىشتىن ئىلگىرى ئېلخەت ئادرېسىڭىزنى دەلىللەشنى تەلەپ قىلىدۇ.
+تۆۋەندىكى كۇنۇپكىنى چەكسىڭىز ئاكتىپلاش ئېلخىتىدىن بىرنى سىزگە ئەۋەتىدۇ.
+ئۇ ئىلخەتتە بىر قۇر ئۇلانما كود بار؛
+توركۆرگۈڭىزدە بۇ ئۇلانمىنى يۈكلەپ ئېلخەت ئادرېسىڭىزنىڭ ئىناۋەتلىكلىكىنى جەزملەڭ.',
+'confirmemail_pending' => 'جەزملەش كودى ئېلخەت ئادرېسىڭىزغا يوللاندى؛
+ئەگەر ھېساباتىڭىزنى يېقىندا قۇرغان بولسىڭىز، بىر قانچە مىنۇتتىن كېيىن تاپشۇرۇۋېلىشىڭىز مۇمكىن. ئەگەر تاپشۇرۇۋالمىغان بولسىڭىز، يېڭىدىن بىرنى ئىلتىماس قىلىڭ.',
+'confirmemail_send' => 'جەزملەش كودىنى ئېلخەتكە يوللا',
+'confirmemail_sent' => 'جەزملەش ئېلخىتى يوللاندى.',
+'confirmemail_oncreate' => 'جەزملەش كودى ئېلخەت ئادرېسىڭىزغا يوللاندى.
+بۇ كود سىزنىڭ تىزىمغا كىرىشىڭىزنى تەلەپ قىلمايدۇ، ئەمما سىز بۇ wiki دىكى ھەر قانداق ئېلخەت ئىقتىدارىنى قوزغاتماقچى بولسىڭىز چوقۇم بۇ كودنى تاپشۇرۇشىڭىز لازىم.',
+'confirmemail_sendfailed' => '{{SITENAME}} جەزملەش ئېلخىتى يوللىيالمىدى
+ئېلخەت ئادرېسىڭىزدا قانۇنسىز ھەرپ بار يوقلۇقىنى تەكشۈرۈڭ.
+
+ئېلخەت يوللىغۇچى جاۋابى: $1',
+'confirmemail_invalid' => 'ئىناۋەتسىز جەزملەش كودى.
+بۇ كودنىڭ ۋاقتى ئۆتكەن بولۇشى مۇمكىن.',
+'confirmemail_needlogin' => 'سىز $1 ئارقىلىق ئېلخەت ئادرېسىڭىزنى جەزملەڭ.',
+'confirmemail_success' => 'ئېلخەت ئادرېسىڭىز جەزملەندى.
+سىز ھازىر [[Special:UserLogin|تىزىمغا كىر]]ىپ، wiki بېكەتنى ئىشلىتەلەيسىز.',
+'confirmemail_loggedin' => 'ئېلخەت ئادرېسىڭىز ھازىر جەزملەندى.',
+'confirmemail_error' => 'جەزملەش جەريانىدا خاتالىق كۆرۈلدى.',
+'confirmemail_subject' => '{{SITENAME}} ئېلخەت ئادرېس جەزملەش',
+'confirmemail_body' => 'IP ئادرېس $1 دىن كەلگەن ئىشلەتكۈچى (بەلكىم سىز بولۇشىڭىز مۇمكىن) {{SITENAME}} دا “$2” ھېسابات قۇردى ھەمدە بۇ ئېلخەت ئادرېسىنى تاپشۇردى.
+
+بۇ ھېساباتنىڭ سىزگە تەۋە ئىكەنلىكىنى، شۇنىڭ بىلەن بىللە {{SITENAME}} دىكى ئېلخەت ئىقتىدارىنى قوزغىتىشنى جەزملەڭ. توركۆرگۈدە تۆۋەندىكى ئۇلانمىنى ئېچىڭ:
+
+$3
+
+ئەگەر ھېسابات تىزىملاتمىغان بولسىڭىز،
+تۆۋەندىكى ئۇلانمىنى ئېچىپ ئېلخەت جەزملەشتىن ۋاز كېچىڭ.
+
+$5
+
+جەزملەش كودى $4 دىن كېيىن ۋاقتى ئۆتىدۇ.',
+'confirmemail_invalidated' => 'ئېلخەت ئادرېس جەزملەش بىكار قىلىندى',
+'invalidateemail' => 'ئېلخەت جەزملەشتىن ۋاز كەچ',
+
+# Scary transclusion
+'scarytranscludedisabled' => '[بېكەت ئاتلىغان كود ئايلاندۇرۇش چەكلەنگەن]',
+'scarytranscludefailed' => '[$1 نىڭ قېلىپىنى ئېلىش مەغلۇپ بولدى]',
+'scarytranscludetoolong' => '[URL بەك ئۇزۇن]',
+
+# Trackbacks
+'trackbackbox' => 'بۇ بەتنىڭ نەقىلى: <br />
+$1',
+'trackbackremove' => '([$1 ئۆچۈر])',
+'trackbacklink' => 'نەقىل',
+'trackbackdeleteok' => 'بۇ نەقىل مۇۋەپپەقىيەتلىك ئۆچۈرۈلدى.',
+
+# Delete conflict
+'deletedwhileediting' => "'''ئاگاھلاندۇرۇش''': بۇ بەت تەھرىرلەشكە باشلىغاندىن كېيىن ئۆچۈرۈلگەن!",
+'confirmrecreate' => "سىز بۇ بەتنى تەھرىرلىگەندىن كېيىن ئىشلەتكۈچى [[User:$1|$1]] ([[User talk:$1|مۇنازىرە]]) تۆۋەندىكى سەۋەب تۈپەيلىدىن بۇ بەت ئۆچۈرۈلدى:
+: ''$2''
+راستىنلا بۇ بەتنى قايتا قۇرۇشتىن ئىلگىرى ئويلىنىڭ.",
+'recreate' => 'قايتا قۇر',
+
+# action=purge
+'confirm_purge_button' => 'ماقۇل',
+'confirm-purge-top' => 'بۇ بەتنىڭ غەملىكىنى تازىلامسىز؟',
+'confirm-purge-bottom' => 'بىر بەتنى تازىلىغاندا غەملەك ۋە مەجبۇرىي كۆرسىتىدىغان نۆۋەتتىكى تۈزىتىلگەن نەشرى تازىلىنىدۇ.',
+
+# Multipage image navigation
+'imgmultipageprev' => '← ئالدىنقى بەت',
+'imgmultipagenext' => 'كېيىنكى بەت →',
+'imgmultigo' => 'يۆتكەل!',
+'imgmultigoto' => '$1 بەتكە يۆتكەل',
+
+# Table pager
+'ascending_abbrev' => 'ئۆسكۈچى',
+'descending_abbrev' => 'كېمەيگۈچى',
+'table_pager_next' => 'كېيىنكى بەت',
+'table_pager_prev' => 'ئالدىنقى بەت',
+'table_pager_first' => 'بىرىنچى بەت',
+'table_pager_last' => 'ئەڭ ئاخىرقى بەت',
+'table_pager_limit' => 'ھەر بىر بەتتە $1 تۈر كۆرسەت',
+'table_pager_limit_submit' => 'يۆتكەل',
+'table_pager_empty' => 'نەتىجە يوق',
+
+# Auto-summaries
+'autosumm-blank' => 'بەتنى قۇرۇقدا',
+'autosumm-replace' => "ئالماشتۇرۇلغان مەزمۇن '$1'",
+'autoredircomment' => 'قايتا نىشانلانغان بەت [[$1]]',
+'autosumm-new' => "قۇرۇلغان بەت '$1'",
+
+# Live preview
+'livepreview-loading' => 'يۈكلەۋاتىدۇ…',
+'livepreview-ready' => 'يۈكلەۋاتىدۇ… تەييارلاندى!',
+'livepreview-failed' => 'رىئال ئالدىن كۆزىتىش مەغلۇپ بولدى! نورمال ئالدىن كۆزىتىشنى سىناڭ.',
+'livepreview-error' => 'ئۇلىنىش مەغلۇپ بولدى: $1 "$2".
+نورمال ئالدىن كۆزىتىشنى سىناڭ.',
+
+# Friendlier slave lag warnings
+'lag-warn-normal' => 'ئۆتكەن $1 {{PLURAL:$1|سېكۇنت|سېكۇنت}} ئىچىدىكى ئۆزگەرتىش تىزىملىكتە كۆرسىتىلمەسلىكى مۇمكىن.',
+'lag-warn-high' => 'ساندان ئۆتە كېچىككەنلىكتىن، ئۆتكەن $1 {{PLURAL:$1|سېكۇنت|سېكۇنت}} ئىچىدىكى ئۆزگەرتىش تىزىملىكتە كۆرسىتىلمەسلىكى مۇمكىن.',
+
+# Watchlist editor
+'watchlistedit-numitems' => 'كۆزەت تىزىملىكىڭىزدە{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}}, بار، مۇنازىرە بېتى بۇنىڭ سىرتىدا.',
+'watchlistedit-noitems' => 'كۆزەت تىزىملىكىڭىزنىڭ ماۋزۇسى يوق',
+'watchlistedit-normal-title' => 'كۆزەت تىزىملىك تەھرىرى',
+'watchlistedit-normal-legend' => 'كۆزەت تىزىملىكىدىن ماۋزۇنى چىقىرىۋەت',
+'watchlistedit-normal-explain' => 'كۆزەت تىزىملىكىڭىزدىكى ماۋزۇ تۆۋەندە كۆرسىتىلىدۇ.
+ماۋزۇنى بىرنى چىقىرىۋېتىشتە، ئۇنىڭ ئالدىدىكى تاللاشنى چىقىرىۋېتىپ، ئاندىن ماۋزۇ چىقىرىۋەتنى چېكىڭ.
+سىز [[Special:Watchlist/raw|/ئەسلى كۆزەت تىزىملىكى تەھرىر]]لىيەلەيسىز.',
+'watchlistedit-normal-submit' => 'ماۋزۇ چىقىرىۋەت',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} كۆزەت تىزىملىكىڭىزدىن چىقىرىۋېتىلدى:',
+'watchlistedit-raw-title' => 'ئەسلى كۆزەت تىزىملىك تەھرىرى',
+'watchlistedit-raw-legend' => 'ئەسلى كۆزەت تىزىملىك تەھرىرى',
+'watchlistedit-raw-explain' => 'كۆزەت تىزىملىكىڭىزدىكى ماۋزۇ تۆۋەندە كۆرسىتىلىدۇ، شۇنداقلا بۇ جەدۋەلنى تەھرىرلەش ئارقىلىق ماۋزۇ قوشالايسىز ياكى چىقىرىۋېتەلەيسىز؛
+ھەر قۇردا بىردىن ماۋزۇ.
+تاماملانغاندا كۆزەت تىزىملىكى يېڭىلانى چېكىڭ.
+سىز [[Special:Watchlist/edit| ئۆلچەملىك تەھرىرلىگۈچ]] ئىشلەتسىڭىز بولىدۇ.',
+'watchlistedit-raw-titles' => 'ماۋزۇلار:',
+'watchlistedit-raw-submit' => 'كۆزەت تىزىملىكى يېڭىلا',
+'watchlistedit-raw-done' => 'كۆزەت تىزىملىكىڭىز يېڭىلاندى.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} قوشۇلدى:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} چىقىرىۋېتىلدى:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'مۇناسىۋەتلىك ئۆزگەرتىشنى كۆرسەت',
+'watchlisttools-edit' => 'كۆزەت تىزىملىكىنى كۆرۈپ تەھرىرلەش',
+'watchlisttools-raw' => 'ئەسلى كۆزەت تىزىملىك تەھرىرى',
+
+# Core parser functions
+'unknown_extension_tag' => 'نامەلۇم كېڭەيتىلگەن خەتكۈچ "$1"',
+'duplicate-defaultsort' => '\'\'\'ئاگاھلاندۇرۇش:\'\'\' كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى "$2" ئىلگىرىكى كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى "$1" نى قاپلىۋېتىدۇ.',
+
+# Special:Version
+'version' => 'نەشرى',
+'version-extensions' => 'قاچىلانغان كېڭەيتىلمە',
+'version-specialpages' => 'ئالاھىدە بەتلەر',
+'version-parserhooks' => 'تەھلىلچى ئىلمىكى',
+'version-variables' => 'ئۆزگەرگۈچى مىقدار',
+'version-other' => 'باشقا',
+'version-mediahandlers' => 'ۋاسىتە بىر تەرەپ قىلغۇچ',
+'version-hooks' => 'ئىلمەك',
+'version-extension-functions' => 'تەھلىلچى فونكسىيە',
+'version-parser-extensiontags' => 'تەھلىلچى كېڭەيتىلمە خەتكۈچ',
+'version-parser-function-hooks' => 'تەھلىلچى فونكسىيە ئىلمىكى',
+'version-skin-extension-functions' => 'تېرە تەھلىلچى فونكسىيە',
+'version-hook-name' => 'ئىلمەك ئاتى',
+'version-hook-subscribedby' => 'ئىمزا قويغۇچى',
+'version-version' => '(نەشرى $1)',
+'version-license' => 'ئىجازەتنامە',
+'version-software' => 'قاچىلانغان يۇمشاق دېتال',
+'version-software-product' => 'مەھسۇلات',
+'version-software-version' => 'نەشرى',
+
+# Special:FilePath
+'filepath' => 'ھۆججەت يولى',
+'filepath-page' => 'ھۆججەت:',
+'filepath-submit' => 'يۆتكەل',
+'filepath-summary' => 'بۇ ئالاھىدە بەت ھۆججەتنىڭ تولۇق يولىنى قايتۇرىدۇ.
+سۈرەت تولۇق ئېنىقلىقتا كۆرسىتىلىدۇ، باشقا ھۆججەت تىپى بىۋاسىتە ئۇلانغان قوللىنىشچان پروگراممىدا ئېچىلىدۇ
+
+ھۆججەت ئاتىنى كۆرسەت، ئالدى قوشۇلغۇچى"{{ns:file}}:" نى ئۆز ئىچىگە ئالمىسۇن.',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'تەكرار ھۆججەت ئىزدە',
+'fileduplicatesearch-summary' => 'چاچما (hash) قىممىتىگە ئاساسەن تەكرار ھۆججەت ئىزدە.
+
+ھۆججەت ئاتى كىرگۈزگەندە ئالدى قوشۇلغۇچى "{{ns:file}}:" كىرگۈزمىسىڭىزمۇ بولىدۇ.',
+'fileduplicatesearch-legend' => 'تەكرار ھۆججەت ئىزدە',
+'fileduplicatesearch-filename' => ':ھۆججەت ئاتى',
+'fileduplicatesearch-submit' => 'ئىزدە',
+'fileduplicatesearch-info' => '$1 × $2 نۇقتا<br />ھۆججەت چوڭلۇقى: $3<br />MIME تىپى: $4',
+'fileduplicatesearch-result-1' => '"$1" ھۆججەتنىڭ تامامەن ئوخشاش تەكرار نۇسخىسى يوق.',
+'fileduplicatesearch-result-n' => ' "$1" ھۆججەتنىڭ تامامەن ئوخشاش {{PLURAL:$2|1 تەكرار|$2 تەكرار}} نۇسخىسى بار.',
+
+# Special:SpecialPages
+'specialpages' => 'ئالاھىدە بەتلەر',
+'specialpages-note' => '----
+* نورمال ئالاھىدە بەت.
+* <strong class=\\"mw-specialpagerestricted\\">چەكلىمىلىك ئالاھىدە بەتلەر.</strong>',
+'specialpages-group-maintenance' => 'ئاسراش دوكلاتى',
+'specialpages-group-other' => 'باشقا ئالاھىدە بەتلەر',
+'specialpages-group-login' => 'تىزىمغا كىر / قۇر',
+'specialpages-group-changes' => 'يېقىنقى ئۆزگەرتىش ۋە خاتىرە',
+'specialpages-group-media' => 'ۋاسىتە دوكلاتى ۋە يۈكلەر',
+'specialpages-group-users' => 'ئىشلەتكۈچى ۋە ھوقۇقى',
+'specialpages-group-highuse' => 'كۆپ ئىشلىتىلگەن بەت',
+'specialpages-group-pages' => 'بەت تىزىملىكى',
+'specialpages-group-pagetools' => 'بەت قورالى',
+'specialpages-group-wiki' => 'Wiki سانلىق مەلۇماتى ۋە قورال',
+'specialpages-group-redirects' => 'قايتا نىشانلانغان ئالاھىدە بەت',
+'specialpages-group-spam' => 'ئەخلەتكە قارشى قورال',
+
+# Special:BlankPage
+'blankpage' => 'بوش بەت',
+'intentionallyblankpage' => 'بۇ بەت قەستەن بوش قالدۇرۇلغان.',
+
+# External image whitelist
+'external_image_whitelist' => ' #بۇ قۇرغا ئوخشاش خەتنى قالدۇرۇپ قويۇڭ<pre>
+#تۆۋەندىكى (// ئارىسىدىكى قىسمى)غا رەسمىي ئىپادە كىرگۈزۈڭ
+#بۇلار سىرتقى (ئۇلانغان) سۈرەتكە ماسلاشتۇرۇلىدۇ
+#ئاشۇ ماسلاشتۇرۇلغانلىرى سۈرەت قىلىپ كۆرسىتىلىدۇ بولمىسا ئۇلانما سۈپىتىدە كۆرسىتىدۇ
+# # دىن باشلانغان قۇر ئىزاھات دەپ قارىلىدۇ
+#چوڭ كىچىك يېزىلىشنى پەرقلەندۈرمەيدۇ
+
+#بۇ قۇرغا ھەممە regex كىرگۈزۈلىدۇ. بۇ قۇرغا ئوخشاش خەت قالدۇرۇپ قويۇلىدۇ </pre>',
+
+# Special:Tags
+'tags' => 'ئىناۋەتلىك ئۆزگەرتىلگەن خەتكۈچ',
+'tag-filter' => '[[Special:Tags|Tag]]سۈزگۈچ:',
+'tag-filter-submit' => 'سۈزگۈچ',
+'tags-title' => 'خەتكۈچ',
+'tags-intro' => 'بۇ بەتتە يۇمشاق دېتالدا بەلگە سېلىنغان تەھرىر ۋە ئۇلارنىڭ ئىزاھاتى كۆرسىتىلدى.',
+'tags-tag' => 'خەتكۈچ ئاتى',
+'tags-display-header' => 'ئۆزگەرتىش تىزىملىكىدە كۆرسىتىلىش شەكلى',
+'tags-description-header' => 'مەناسىنىڭ تولۇق چۈشەندۈرۈلۈشى',
+'tags-hitcount-header' => 'بەلگە سېلىنغان ئۆزگەرتىش',
+'tags-edit' => 'ئۆزگەرتىش',
+'tags-hitcount' => '$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
+
+# Database error messages
+'dberr-header' => 'بۇ wiki مەسىلىگە يولۇقتى',
+'dberr-problems' => 'كەچۈرۈڭ!
+بۇ بېكەتتە تېخنىكىلىق قىيىنچىلىق كۆرۈلدى.',
+'dberr-again' => 'بىر قانچە مىنۇت كۈتۈپ ئاندىن قايتا يۈكلەڭ.',
+'dberr-info' => '(ساندان مۇلازىمىتىرىغا ئۇلىنالمىدى: $1)',
+'dberr-usegoogle' => 'بۇ ۋاقىتتا Google ئىزدىگۈچتىن ئىزدەشنى سىناپ بېقىڭ.',
+'dberr-outofdate' => 'دىققەت ئۇلار ئىندىكېسلىغان مەزمۇن ئەڭ يېڭى بولماسلىقى مۇمكىن.',
+'dberr-cachederror' => 'بۇ ئىلتىماس قىلغان بەتنىڭ غەملەنگەن كۆپەيتىلمىسى، ئەڭ يېڭىسى بولماسلىقى مۇمكىن.',
+
+# HTML forms
+'htmlform-invalid-input' => 'كىرگۈزگەن مەزمۇنىڭىزدا مەسىلە بار',
+'htmlform-select-badoption' => 'سىز بەلگىلىگەن قىممەت ئىناۋەتلىك تاللانما ئەمەس.',
+'htmlform-int-invalid' => 'سىز بەلگىلىگەن قىممەت پۈتۈن سان ئەمەس.',
+'htmlform-float-invalid' => 'سىز بەلگىلىگەن قىممەت سان ئەمەس.',
+'htmlform-int-toolow' => 'سىز بەلگىلىگەن قىممەت ئەڭ كىچىك قىممەت $1 تىن كىچىك',
+'htmlform-int-toohigh' => 'سىز بەلگىلىگەن قىممەت ئەڭ چوڭ قىممەت $1 تىن چوڭ',
+'htmlform-submit' => 'تاپشۇر',
+'htmlform-reset' => 'ئۆزگەرتىشتىن يېنىۋال',
+'htmlform-selectorother-other' => 'باشقا',
+
+);
diff --git a/languages/messages/MessagesUg_latn.php b/languages/messages/MessagesUg_latn.php
index db7ba4e3..50988fb2 100644
--- a/languages/messages/MessagesUg_latn.php
+++ b/languages/messages/MessagesUg_latn.php
@@ -36,10 +36,12 @@ $messages = array(
'december' => 'Dékabr',
'may' => 'May',
-'qbedit' => 'Uzgartish',
'mypage' => 'Mening beti',
'navigation' => 'Körüsh',
+# Cologne Blue skin
+'qbedit' => 'Uzgartish',
+
'search' => 'Izdash',
'searchbutton' => 'Izdash',
'go' => 'Kuchush',
@@ -82,10 +84,6 @@ $messages = array(
'logout' => 'Chiqish',
'userlogout' => 'Chikish',
'gotaccountlink' => 'Kirish',
-'youremail' => 'Élxet:',
-'username' => 'Ishletkuqi ismi:',
-'yourlanguage' => 'Til:',
-'email' => 'Élxet:',
'loginlanguagelabel' => 'Til: $1',
# Edit pages
@@ -99,21 +97,27 @@ $messages = array(
'newarticle' => '(Yéngi)',
# Search results
-'prevn' => 'aldinqi $1',
-'nextn' => 'kéyinki $1',
+'prevn' => 'aldinqi {{PLURAL:$1|$1}}',
+'nextn' => 'kéyinki {{PLURAL:$1|$1}}',
'powersearch' => 'Izdash',
# Preferences page
'searchresultshead' => 'Izdash',
'timezoneregion-asia' => 'Asiya',
'timezoneregion-europe' => 'Yawropa',
+'youremail' => 'Élxet:',
+'username' => 'Ishletkuqi ismi:',
+'yourlanguage' => 'Til:',
+'email' => 'Élxet:',
# Recent changes
'recentchanges' => 'Yéngi özgirish',
# Recent changes linked
-'recentchangeslinked' => 'Yéqinqi özgirishler',
-'recentchangeslinked-page' => 'Betning ismi:',
+'recentchangeslinked' => 'Yéqinqi özgirishler',
+'recentchangeslinked-feed' => 'Yéqinqi özgirishler',
+'recentchangeslinked-toolbox' => 'Yéqinqi özgirishler',
+'recentchangeslinked-page' => 'Betning ismi:',
# Upload
'upload' => 'Yéngi höjjet kirgüzush',
@@ -130,8 +134,8 @@ $messages = array(
# Random page
'randompage' => 'Halighan Tor Beti',
-'brokenredirects-edit' => '(uzgartish)',
-'brokenredirects-delete' => '(yukhutush)',
+'brokenredirects-edit' => 'uzgartish',
+'brokenredirects-delete' => 'yukhutush',
# Miscellaneous special pages
'newpages' => 'Yéngi betler',
@@ -158,6 +162,7 @@ $messages = array(
# Undelete
'undelete-search-submit' => 'Izdash',
+'sp-contributions-talk' => 'Monazire',
'sp-contributions-submit' => 'Izdash',
# What links here
diff --git a/languages/messages/MessagesUk.php b/languages/messages/MessagesUk.php
index f467e590..8e8a9984 100644
--- a/languages/messages/MessagesUk.php
+++ b/languages/messages/MessagesUk.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author A1
* @author AS
* @author Ahonc
* @author Aleksandrit
@@ -15,6 +16,7 @@
* @author EugeneZelenko
* @author Gutsul (Gutsul.ua at Google Mail)
* @author Ickis
+ * @author Ilyaroz
* @author Innv
* @author Kalan
* @author NickK
@@ -89,13 +91,15 @@ $bookstoreList = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#ПЕРЕНАПРАВЛЕННЯ', '#ПЕРЕНАПР', '#перенаправление', '#перенапр', '#REDIRECT' ),
- 'notoc' => array( '0', '__БЕЗ_ЗМІСТУ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
+ 'redirect' => array( '0', '#ПЕРЕНАПРАВЛЕННЯ', '#ПЕРЕНАПР', '#перенапр', '#перенаправление', '#REDIRECT' ),
+ 'notoc' => array( '0', '__БЕЗ_ЗМІСТУ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
'nogallery' => array( '0', '__БЕЗ_ГАЛЕРЕЇ__', '__БЕЗ_ГАЛЕРЕИ__', '__NOGALLERY__' ),
- 'forcetoc' => array( '0', '__ОБОВ_ЗМІСТ__', '__ОБЯЗ_ОГЛ__', '__FORCETOC__' ),
- 'toc' => array( '0', '__ЗМІСТ__', '__ОГЛ__', '__TOC__' ),
+ 'forcetoc' => array( '0', '__ОБОВ_ЗМІСТ__', '__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__', '__ОБЯЗ_ОГЛ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__ЗМІСТ__', '__ОГЛАВЛЕНИЕ__', '__ОГЛ__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_РЕДАГУВ_РОЗДІЛУ__', '__БЕЗ_РЕДАКТИРОВАНИЯ_РАЗДЕЛА__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'ПОТОЧНИЙ_МІСЯЦЬ', 'ТЕКУЩИЙ_МЕСЯЦ', 'CURRENTMONTH' ),
+ 'noheader' => array( '0', '__БЕЗ_ЗАГОЛОВКУ__', '__БЕЗ_ЗАГОЛОВКА__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'ПОТОЧНИЙ_МІСЯЦЬ', 'ПОТОЧНИЙ_МІСЯЦЬ_2', 'ТЕКУЩИЙ_МЕСЯЦ', 'ТЕКУЩИЙ_МЕСЯЦ_2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ПОТОЧНИЙ_МІСЯЦЬ_1', 'ТЕКУЩИЙ_МЕСЯЦ_1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'НАЗВА_ПОТОЧНОГО_МІСЯЦЯ', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'НАЗВА_ПОТОЧНОГО_МІСЯЦЯ_РОД', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_РОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'НАЗВА_ПОТОЧНОГО_МІСЯЦЯ_АБР', 'НАЗВАНИЕ_ТЕКУЩЕГО_МЕСЯЦА_АБР', 'CURRENTMONTHABBREV' ),
@@ -105,7 +109,8 @@ $magicWords = array(
'currentyear' => array( '1', 'ПОТОЧНИЙ_РІК', 'ТЕКУЩИЙ_ГОД', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'ПОТОЧНИЙ_ЧАС', 'ТЕКУЩЕЕ_ВРЕМЯ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ПОТОЧНА_ГОДИНА', 'ТЕКУЩИЙ_ЧАС', 'CURRENTHOUR' ),
- 'localmonth' => array( '1', 'ЛОКАЛЬНИЙ_МІСЯЦЬ', 'МЕСТНЫЙ_МЕСЯЦ', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'ЛОКАЛЬНИЙ_МІСЯЦЬ', 'ЛОКАЛЬНИЙ_МІСЯЦЬ_2', 'МЕСТНЫЙ_МЕСЯЦ', 'МЕСТНЫЙ_МЕСЯЦ_2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'ЛОКАЛЬНИЙ_МІСЯЦЬ_1', 'МЕСТНЫЙ_МЕСЯЦ_1', 'LOCALMONTH1' ),
'localmonthname' => array( '1', 'НАЗВА_ЛОКАЛЬНОГО_МІСЯЦЯ', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА', 'LOCALMONTHNAME' ),
'localmonthnamegen' => array( '1', 'НАЗВА_ЛОКАЛЬНОГО_МІСЯЦЯ_РОД', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_РОД', 'LOCALMONTHNAMEGEN' ),
'localmonthabbrev' => array( '1', 'НАЗВА_ЛОКАЛЬНОГО_МІСЯЦЯ_АБР', 'НАЗВАНИЕ_МЕСТНОГО_МЕСЯЦА_АБР', 'LOCALMONTHABBREV' ),
@@ -119,7 +124,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'КІЛЬКІСТЬ_СТАТЕЙ', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'КІЛЬКІСТЬ_ФАЙЛІВ', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'КІЛЬКІСТЬ_КОРИСТУВАЧІВ', 'КОЛИЧЕСТВО_УЧАСТНИКОВ', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'КІЛЬКІСТЬ_АКТИВНИХ_КОРИСТУВАЧІВ', 'КОЛИЧЕСТВО_АКТИВНЫХ_УЧАСТНИКОВ', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'КІЛЬКІСТЬ_РЕДАГУВАНЬ', 'КОЛИЧЕСТВО_ПРАВОК', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'КІЛЬКІСТЬ_ПЕРЕГЛЯДІВ', 'КОЛИЧЕСТВО_ПРОСМОТРОВ', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'НАЗВА_СТОРІНКИ', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ),
'pagenamee' => array( '1', 'НАЗВА_СТОРІНКИ_2', 'НАЗВАНИЕ_СТРАНИЦЫ_2', 'PAGENAMEE' ),
'namespace' => array( '1', 'ПРОСТІР_НАЗВ', 'ПРОСТРАНСТВО_ИМЁН', 'NAMESPACE' ),
@@ -138,38 +145,43 @@ $magicWords = array(
'talkpagenamee' => array( '1', 'НАЗВА_СТОРІНКИ_ОБГОВОРЕННЯ_2', 'НАЗВАНИЕ_СТРАНИЦЫ_ОБСУЖДЕНИЯ_2', 'TALKPAGENAMEE' ),
'subjectpagename' => array( '1', 'НАЗВА_СТАТТІ', 'НАЗВАНИЕ_СТРАНИЦЫ_СТАТЬИ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subjectpagenamee' => array( '1', 'НАЗВА_СТАТТІ_2', 'НАЗВАНИЕ_СТРАНИЦЫ_СТАТЬИ_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
- 'msg' => array( '0', 'ПОВІД:', 'СООБЩ:', 'MSG:' ),
- 'subst' => array( '0', 'ПІДСТ:', 'ПОДСТ:', 'SUBST:' ),
+ 'msg' => array( '0', 'ПОВІД:', 'ПОВІДОМЛЕННЯ:', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ),
+ 'subst' => array( '0', 'ПІДСТ:', 'ПІДСТАНОВКА:', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ),
+ 'safesubst' => array( '0', 'БЕЗПЕЧНА_ПІДСТАНОВКА:', 'SAFESUBST:' ),
'msgnw' => array( '0', 'ПОВІД_БЕЗ_ВІКІ:', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'міні', 'мини', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'міні=$1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_thumbnail' => array( '1', 'міні', 'мініатюра', 'мини', 'миниатюра', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'міні=$1', 'мініатюра=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'праворуч', 'справа', 'right' ),
'img_left' => array( '1', 'ліворуч', 'слева', 'left' ),
- 'img_none' => array( '1', 'без', 'без', 'none' ),
- 'img_width' => array( '1', '$1пкс', '$1пкс', '$1px' ),
- 'img_center' => array( '1', 'центр', 'центр', 'center', 'centre' ),
+ 'img_none' => array( '1', 'без', 'none' ),
+ 'img_width' => array( '1', '$1пкс', '$1px' ),
+ 'img_center' => array( '1', 'центр', 'center', 'centre' ),
'img_framed' => array( '1', 'обрамити', 'рамка', 'обрамить', 'framed', 'enframed', 'frame' ),
- 'img_frameless' => array( '1', 'безрамки', 'безрамки', 'frameless' ),
+ 'img_frameless' => array( '1', 'безрамки', 'frameless' ),
'img_page' => array( '1', 'сторінка=$1', 'сторінка $1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ),
'img_upright' => array( '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч $1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
'img_border' => array( '1', 'межа', 'граница', 'border' ),
'img_baseline' => array( '1', 'основа', 'основание', 'baseline' ),
'img_sub' => array( '1', 'під', 'под', 'sub' ),
- 'img_super' => array( '1', 'над', 'над', 'super', 'sup' ),
+ 'img_super' => array( '1', 'над', 'super', 'sup' ),
'img_top' => array( '1', 'зверху', 'сверху', 'top' ),
'img_text_top' => array( '1', 'текст-зверху', 'текст-сверху', 'text-top' ),
'img_middle' => array( '1', 'посередині', 'посередине', 'middle' ),
'img_bottom' => array( '1', 'знизу', 'снизу', 'bottom' ),
'img_text_bottom' => array( '1', 'текст-знизу', 'текст-снизу', 'text-bottom' ),
- 'int' => array( '0', 'ВНУТР:', 'ВНУТР:', 'INT:' ),
+ 'img_link' => array( '1', 'посилання=$1', 'ссылка=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'альт=$1', 'alt=$1' ),
+ 'int' => array( '0', 'ВНУТР:', 'INT:' ),
'sitename' => array( '1', 'НАЗВА_САЙТУ', 'НАЗВАНИЕ_САЙТА', 'SITENAME' ),
'ns' => array( '0', 'ПН:', 'ПИ:', 'NS:' ),
+ 'nse' => array( '0', 'ПН_2:', 'ПИК:', 'NSE:' ),
'localurl' => array( '0', 'ЛОКАЛЬНА_АДРЕСА:', 'ЛОКАЛЬНЫЙ_АДРЕС:', 'LOCALURL:' ),
'localurle' => array( '0', 'ЛОКАЛЬНА_АДРЕСА_2:', 'ЛОКАЛЬНЫЙ_АДРЕС_2:', 'LOCALURLE:' ),
- 'server' => array( '0', 'СЕРВЕР', 'СЕРВЕР', 'SERVER' ),
+ 'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
'servername' => array( '0', 'НАЗВА_СЕРВЕРА', 'НАЗВАНИЕ_СЕРВЕРА', 'SERVERNAME' ),
'scriptpath' => array( '0', 'ШЛЯХ_ДО_СКРИПТУ', 'ПУТЬ_К_СКРИПТУ', 'SCRIPTPATH' ),
'grammar' => array( '0', 'ВІДМІНОК:', 'ПАДЕЖ:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'СТАТЬ:', 'ПОЛ:', 'GENDER:' ),
'notitleconvert' => array( '0', '__БЕЗ_ПЕРЕТВОРЕННЯ_ЗАГОЛОВКУ__', '__БЕЗ_ПРЕОБРАЗОВАНИЯ_ЗАГОЛОВКА__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__БЕЗ_ПЕРЕТВОРЕННЯ_ТЕКСТУ__', '__БЕЗ_ПРЕОБРАЗОВАНИЯ_ТЕКСТА__', '__NOCONTENTCONVERT__', '__NOCC__' ),
'currentweek' => array( '1', 'ПОТОЧНИЙ_ТИЖДЕНЬ', 'ТЕКУЩАЯ_НЕДЕЛЯ', 'CURRENTWEEK' ),
@@ -182,17 +194,19 @@ $magicWords = array(
'revisionmonth' => array( '1', 'МІСЯЦЬ_ВЕРСІЇ', 'МЕСЯЦ_ВЕРСИИ', 'REVISIONMONTH' ),
'revisionyear' => array( '1', 'РІК_ВЕРСІЇ', 'ГОД_ВЕРСИИ', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'МІТКА_ЧАСУ_ВЕРСІЇ', 'ОТМЕТКА_ВРЕМЕНИ_ВЕРСИИ', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'ВЕРСІЯ_КОРИСТУВАЧА', 'ВЕРСИЯ_УЧАСНИКА', 'REVISIONUSER' ),
'plural' => array( '0', 'МНОЖИНА:', 'МНОЖЕСТВЕННОЕ_ЧИСЛО:', 'PLURAL:' ),
'fullurl' => array( '0', 'ПОВНА_АДРЕСА:', 'ПОЛНЫЙ_АДРЕС:', 'FULLURL:' ),
'fullurle' => array( '0', 'ПОВНА_АДРЕСА_2:', 'ПОЛНЫЙ_АДРЕС_2:', 'FULLURLE:' ),
- 'lcfirst' => array( '0', 'НР_ПЕРША:', 'ПЕРВАЯ_БУКВА_МАЛЕНЬКАЯ:', 'LCFIRST:' ),
- 'ucfirst' => array( '0', 'ВР_ПЕРША:', 'ПЕРВАЯ_БУКВА_БОЛЬШАЯ:', 'UCFIRST:' ),
- 'lc' => array( '0', 'НР:', 'НИЖНІЙ_РЕГІСТР:', 'МАЛЕНЬКИМИ_БУКВАМИ:', 'LC:' ),
- 'uc' => array( '0', 'ВР:', 'ВЕРХНІЙ_РЕГІСТР:', 'БОЛЬШИМИ_БУКВАМИ:', 'UC:' ),
+ 'lcfirst' => array( '0', 'НР_ПЕРША:', 'ПЕРША_БУКВА_МАЛА:', 'ПЕРВАЯ_БУКВА_МАЛЕНЬКАЯ:', 'LCFIRST:' ),
+ 'ucfirst' => array( '0', 'ВР_ПЕРША:', 'ПЕРША_БУКВА_ВЕЛИКА:', 'ПЕРВАЯ_БУКВА_БОЛЬШАЯ:', 'UCFIRST:' ),
+ 'lc' => array( '0', 'НР:', 'НИЖНІЙ_РЕГІСТР:', 'МАЛИМИ_БУКВАМИ:', 'МАЛЕНЬКИМИ_БУКВАМИ:', 'LC:' ),
+ 'uc' => array( '0', 'ВР:', 'ВЕРХНІЙ_РЕГІСТР:', 'ВЕЛИКИМИ_БУКВАМИ:', 'БОЛЬШИМИ_БУКВАМИ:', 'UC:' ),
'raw' => array( '0', 'НЕОБРОБ:', 'НЕОБРАБ:', 'RAW:' ),
'displaytitle' => array( '1', 'ПОКАЗАТИ_ЗАГОЛОВОК', 'ПОКАЗАТЬ_ЗАГОЛОВОК', 'DISPLAYTITLE' ),
- 'rawsuffix' => array( '1', 'Н', 'Н', 'R' ),
+ 'rawsuffix' => array( '1', 'Н', 'R' ),
'newsectionlink' => array( '1', '__ПОСИЛАННЯ_НА_НОВИЙ_РОЗДІЛ__', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__БЕЗ_ПОСИЛАННЯ_НА_НОВИЙ_РОЗДІЛ__', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
'currentversion' => array( '1', 'ПОТОЧНА_ВЕРСІЯ', 'ТЕКУЩАЯ_ВЕРСИЯ', 'CURRENTVERSION' ),
'urlencode' => array( '0', 'ЗАКОДОВАНА_АДРЕСА:', 'ЗАКОДИРОВАННЫЙ_АДРЕС:', 'URLENCODE:' ),
'anchorencode' => array( '0', 'КОДУВАТИ_МІТКУ', 'КОДИРОВАТЬ_МЕТКУ', 'ANCHORENCODE' ),
@@ -201,22 +215,24 @@ $magicWords = array(
'directionmark' => array( '1', 'НАПРЯМОК_ПИСЬМА', 'НАПРАВЛЕНИЕ_ПИСЬМА', 'DIRECTIONMARK', 'DIRMARK' ),
'language' => array( '0', '#МОВА:', '#ЯЗЫК:', '#LANGUAGE:' ),
'contentlanguage' => array( '1', 'МОВА_ВМІСТУ', 'ЯЗЫК_СОДЕРЖАНИЯ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
- 'pagesinnamespace' => array( '1', 'СТОРІНОК_У_ПРОСТОРІ_НАЗВ:', 'СТОР_У_ПН:', 'СТРАНИЦ_В_ПРОСТРАНСТВЕ_ИМЁН:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'pagesinnamespace' => array( '1', 'СТОРІНОК_У_ПРОСТОРІ_НАЗВ:', 'СТРАНИЦ_В_ПРОСТРАНСТВЕ_ИМЁН:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'КІЛЬКІСТЬ_АДМІНІСТРАТОРІВ', 'КОЛИЧЕСТВО_АДМИНИСТРАТОРОВ', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'ФОРМАТУВАТИ_ЧИСЛО', 'ФОРМАТИРОВАТЬ_ЧИСЛО', 'FORMATNUM' ),
'padleft' => array( '0', 'ЗАПОВНИТИ_ЛІВОРУЧ', 'ЗАПОЛНИТЬ_СЛЕВА', 'PADLEFT' ),
'padright' => array( '0', 'ЗАПОВНИТИ_ПРАВОРУЧ', 'ЗАПОЛНИТЬ_СПРАВА', 'PADRIGHT' ),
'special' => array( '0', 'спеціальна', 'служебная', 'special' ),
- 'defaultsort' => array( '1', 'СТАНДАРТНЕ_СОРТУВАННЯ', 'СОРТИРОВКА_ПО_УМОЛЧАНИЮ', 'КЛЮЧ_СОРТИРОВКИ', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'defaultsort' => array( '1', 'СТАНДАРТНЕ_СОРТУВАННЯ:', 'СОРТУВАННЯ:', 'СОРТИРОВКА_ПО_УМОЛЧАНИЮ', 'КЛЮЧ_СОРТИРОВКИ', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'ШЛЯХ_ДО_ФАЙЛУ:', 'ПУТЬ_К_ФАЙЛУ:', 'FILEPATH:' ),
- 'tag' => array( '0', 'тег', 'мітка', 'тег', 'тэг', 'метка', 'tag' ),
+ 'tag' => array( '0', 'тег', 'мітка', 'метка', 'тэг', 'tag' ),
'hiddencat' => array( '1', '__ПРИХОВ_КАТ__', '__СКРЫТАЯ_КАТЕГОРИЯ__', '__HIDDENCAT__' ),
- 'pagesincategory' => array( '1', 'СТОР_В_КАТ', 'СТРАНИЦ_В_КАТЕГОРИИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesincategory' => array( '1', 'СТОР_В_КАТ', 'СТОР_У_КАТ', 'СТРАНИЦ_В_КАТЕГОРИИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'РОЗМІР', 'РОЗМІР_СТОРІНКИ', 'РАЗМЕР_СТРАНИЦЫ', 'PAGESIZE' ),
'index' => array( '1', '__ІНДЕКС__', '__ИНДЕКС__', '__INDEX__' ),
'noindex' => array( '1', '__БЕЗ_ІНДЕКСУ__', '__БЕЗ_ИНДЕКСА__', '__NOINDEX__' ),
'numberingroup' => array( '1', 'КІЛЬКІСТЬ_У_ГРУПІ', 'ЧИСЛО_В_ГРУППЕ', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__СТАТИЧНЕ_ПЕРЕНАПРАВЛЕННЯ__', '__СТАТИЧЕСКОЕ_ПЕРЕНАПРАВЛЕНИЕ__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'РІВЕНЬ_ЗАХИСТУ', 'УРОВЕНЬ_ЗАЩИТЫ', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'форматдати', 'форматдаты', 'formatdate', 'dateformat' ),
);
$linkTrail = '/^([a-zабвгґдеєжзиіїйклмнопрстуфхцчшщьєюяёъы“»]+)(.*)$/sDu';
@@ -252,6 +268,7 @@ $messages = array(
'tog-enotifminoredits' => 'Надсилати мені електронного листа навіть при незначних редагуваннях',
'tog-enotifrevealaddr' => 'Показувати мою поштову адресу в повідомленнях',
'tog-shownumberswatching' => 'Показувати кількість користувачів, які додали сторінку до свого списку спостереження',
+'tog-oldsig' => 'Попередній перегляд вашого підпису:',
'tog-fancysig' => 'Власна вікі-розмітка підпису (без автоматичного посилання)',
'tog-externaleditor' => "Використовувати зовнішній редактор за умовчанням (тільки для досвідчених користувачів, вимагає спеціальних налаштувань вашого комп'ютера)",
'tog-externaldiff' => "За умовчанням використовувати зовнішню програму порівняння версій (тільки для експертів, вимагає спеціальних налаштувань вашого комп'ютера)",
@@ -274,6 +291,13 @@ $messages = array(
'underline-never' => 'Ніколи',
'underline-default' => 'Використати налаштування браузера',
+# Font style option in Special:Preferences
+'editfont-style' => 'Тип шрифту в полі редагування:',
+'editfont-default' => 'Шрифт від веб-оглядача',
+'editfont-monospace' => 'Шрифт зі сталою шириною',
+'editfont-sansserif' => 'Шрифт без засічок',
+'editfont-serif' => 'Шрифт із засічками',
+
# Dates
'sunday' => 'неділя',
'monday' => 'понеділок',
@@ -333,7 +357,7 @@ $messages = array(
'category-media-header' => 'Файли в категорії «$1»',
'category-empty' => "''Ця категорія зараз порожня.''",
'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
-'hidden-category-category' => 'Приховані категорії', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Приховані категорії',
'category-subcat-count' => '{{PLURAL:$2|Ця категорія містить лише таку підкатегорію.|{{PLURAL:$1|Показана $1 підкатегорія|Показані $1 підкатегорії|Показані $1 підкатегорій}} із $2.}}',
'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
'category-article-count' => '{{PLURAL:$2|Ця категорія містить тільки таку сторінку.|{{PLURAL:$1|Показана $1 сторінка|Показані $1 сторінки|Показані $1 сторінок}} цієї категорії з $2.}}',
@@ -341,6 +365,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ця категорія містить тільки такий файл.|{{PLURAL:$1|Показаний $1 файл|Показані $1 файли|Показані $1 файлів}} цієї категорії з $2.}}',
'category-file-count-limited' => 'У цій категорії {{PLURAL:$1|$1 файл|$1 файли|$1 файлів}}.',
'listingcontinuesabbrev' => '(прод.)',
+'index-category' => 'Індексовані сторінки',
+'noindex-category' => 'Неіндексовані сторінки',
'linkprefix' => '/^(.*?)(„|«)$/sD',
'mainpagetext' => 'Програмне забезпечення «MediaWiki» успішно встановлене.',
@@ -351,10 +377,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Часті питання з приводу MediaWiki];
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розсилка повідомлень про появу нових версій MediaWiki].',
-'about' => 'Про',
-'article' => 'Стаття',
-'newwindow' => '(відкривається в новому вікні)',
-'cancel' => 'Скасувати',
+'about' => 'Про',
+'article' => 'Стаття',
+'newwindow' => '(відкривається в новому вікні)',
+'cancel' => 'Скасувати',
+'moredotdotdot' => 'Детальніше…',
+'mypage' => 'Моя особиста сторінка',
+'mytalk' => 'Моя сторінка обговорення',
+'anontalk' => 'Обговорення для цієї IP-адреси',
+'navigation' => 'Навігація',
+'and' => '&#32;і',
+
+# Cologne Blue skin
'qbfind' => 'Знайти',
'qbbrowse' => 'Переглянути',
'qbedit' => 'Редагувати',
@@ -362,15 +396,35 @@ $messages = array(
'qbpageinfo' => 'Інформація про сторінку',
'qbmyoptions' => 'Мої налаштування',
'qbspecialpages' => 'Спеціальні сторінки',
-'moredotdotdot' => 'Детальніше…',
-'mypage' => 'Моя особиста сторінка',
-'mytalk' => 'Моя сторінка обговорення',
-'anontalk' => 'Обговорення для цієї IP-адреси',
-'navigation' => 'Навігація',
-'and' => '&#32;і',
-
-# Metadata in edit box
-'metadata_help' => 'Метадані:',
+'faq' => 'Часті питання',
+'faqpage' => 'Project:Часті питання',
+
+# Vector skin
+'vector-action-addsection' => 'Додати тему',
+'vector-action-delete' => 'Вилучити',
+'vector-action-move' => 'Перейменувати',
+'vector-action-protect' => 'Захистити',
+'vector-action-undelete' => 'Відновити',
+'vector-action-unprotect' => 'Зняти захист',
+'vector-namespace-category' => 'Категорія',
+'vector-namespace-help' => 'Сторінка довідки',
+'vector-namespace-image' => 'Файл',
+'vector-namespace-main' => 'Сторінка',
+'vector-namespace-media' => 'Медіа-сторінка',
+'vector-namespace-mediawiki' => 'Повідомлення',
+'vector-namespace-project' => 'Сторінка проекту',
+'vector-namespace-special' => 'Спеціальна сторінка',
+'vector-namespace-talk' => 'Обговорення',
+'vector-namespace-template' => 'Шаблон',
+'vector-namespace-user' => 'Сторінка користувача',
+'vector-view-create' => 'Створити',
+'vector-view-edit' => 'Редагувати',
+'vector-view-history' => 'Переглянути історію',
+'vector-view-view' => 'Читати',
+'vector-view-viewsource' => 'Переглянути код',
+'actions' => 'Дії',
+'namespaces' => 'Простори назв',
+'variants' => 'Варіанти',
'errorpagetitle' => 'Помилка',
'returnto' => 'Повернення до сторінки «$1».',
@@ -420,18 +474,22 @@ $messages = array(
'otherlanguages' => 'Іншими мовами',
'redirectedfrom' => '(Перенаправлено з $1)',
'redirectpagesub' => 'Сторінка-перенаправлення',
-'lastmodifiedat' => 'Остання зміна цієї сторінки: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Остання зміна цієї сторінки: $2, $1.',
'viewcount' => 'Цю сторінку переглядали $1 {{PLURAL:$1|раз|рази|разів}}.',
'protectedpage' => 'Захищена сторінка',
'jumpto' => 'Перейти до:',
'jumptonavigation' => 'навігація',
'jumptosearch' => 'пошук',
+'view-pool-error' => 'Вибачте, сервери зараз перевантажені.
+Надійшло дуже багато запитів на перегляд цієї сторінки.
+Будь ласка, почекайте і повторіть спробу отримати доступ пізніше.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Про {{grammar:accusative|{{SITENAME}}}}',
'aboutpage' => 'Project:Про',
'copyright' => 'Вміст доступний згідно з $1.',
-'copyrightpagename' => 'Авторські права проекту {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Авторське право',
'currentevents' => 'Поточні події',
'currentevents-url' => 'Project:Поточні події',
@@ -439,8 +497,6 @@ $messages = array(
'disclaimerpage' => 'Project:Відмова від відповідальності',
'edithelp' => 'Довідка про редагування',
'edithelppage' => 'Help:Редагування',
-'faq' => 'Часті питання',
-'faqpage' => 'Project:Часті питання',
'helppage' => 'Help:Довідка',
'mainpage' => 'Головна сторінка',
'mainpage-description' => 'Головна сторінка',
@@ -523,10 +579,6 @@ $messages = array(
«$1»
відбувся з функції «$2».
База даних виявила помилку «$3: $4».',
-'noconnect' => "Через технічні проблеми зараз неможливо зв'язатися з сервером баз даних.<br />
-$1",
-'nodb' => 'Неможливо вибрати базу даних $1',
-'cachederror' => 'Нижче показана кешована копія запитаної сторінки; можливо вона застаріла.',
'laggedslavemode' => 'Увага: сторінка може не містити останніх редагувань.',
'readonly' => 'Запис до бази даних заблокований',
'enterlockreason' => 'Зазначте причину і приблизний термін блокування',
@@ -544,6 +596,8 @@ $1",
'readonly_lag' => 'База даних автоматично заблокована від змін, доки вторинний сервер БД не синхронізується з первинним.',
'internalerror' => 'Внутрішня помилка',
'internalerror_info' => 'Внутрішня помилка: $1',
+'fileappenderrorread' => 'Не вдалося прочитати "$1" під час додавання.',
+'fileappenderror' => 'Не вдалося приєднати «$1» до «$2».',
'filecopyerror' => 'Неможливо скопіювати файл «$1» в «$2».',
'filerenameerror' => 'Неможливо перейменувати файл «$1» в «$2».',
'filedeleteerror' => 'Неможливо вилучити файл «$1».',
@@ -553,7 +607,7 @@ $1",
'unexpected' => 'Неочікуване значення: «$1»=«$2».',
'formerror' => 'Помилка: неможливо передати дані форми',
'badarticleerror' => 'Ця дія не може бути виконана на цій сторінці.',
-'cannotdelete' => 'Неможливо вилучити зазначену сторінку або файл.
+'cannotdelete' => 'Неможливо вилучити сторінку або файл "$1".
Можливо, її (його) вже вилучив хтось інший.',
'badtitle' => 'Неприпустима назва',
'badtitletext' => 'Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.
@@ -586,14 +640,12 @@ $1",
'virus-unknownscanner' => 'невідомий антивірус:',
# Login and logout pages
-'logouttitle' => 'Вийти з системи',
'logouttext' => "'''Тепер ви працюєте в тому ж режимі, який був до вашого входу до системи.'''
Ви можете продовжувати використовувати {{grammar:accusative|{{SITENAME}}}} анонімно або знову [[Special:UserLogin|ввійти до системи]] як той самий або інший користувач. Деякі сторінки можуть відображатися, ніби ви ще представлені системі під іменем, щоб уникнути цього, оновіть кеш браузера.",
'welcomecreation' => '== Вітаємо вас, $1! ==
Ваш обліковий запис створено.
Не забудьте змінити свої [[Special:Preferences|налаштування для сайту]].',
-'loginpagetitle' => 'Вхід до системи',
'yourname' => "Ім'я користувача:",
'yourpassword' => 'Пароль:',
'yourpasswordagain' => 'Повторний набір пароля:',
@@ -604,6 +656,7 @@ $1",
'nav-login-createaccount' => 'Вхід / реєстрація',
'loginprompt' => 'Ви повинні активувати куки (cookies) для входу до {{GRAMMAR:genitive|{{SITENAME}}}}.',
'userlogin' => 'Вхід / реєстрація',
+'userloginnocreate' => 'Увійти',
'logout' => 'Вихід із системи',
'userlogout' => 'Вихід із системи',
'notloggedin' => 'Ви не ввійшли до системи',
@@ -616,30 +669,8 @@ $1",
'badretype' => 'Уведені вами паролі не збігаються.',
'userexists' => "Уведене ім'я користувача вже існує.
Оберіть інше ім'я.",
-'youremail' => 'Адреса електронної пошти:',
-'username' => "Ім'я користувача:",
-'uid' => 'Ідентифікатор користувача:',
-'prefs-memberingroups' => 'Член {{PLURAL:$1|групи|груп}}:',
-'yourrealname' => "Справжнє ім'я:",
-'yourlanguage' => 'Мова інтерфейсу:',
-'yourvariant' => 'Варіант мови:',
-'yournick' => 'Підпис:',
-'badsig' => 'Неправильний підпис.
-Перевірте коректність HTML-тегів.',
-'badsiglength' => 'Ваш підпис дуже довгий.
-Повинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.',
-'yourgender' => 'Стать:',
-'gender-unknown' => 'не зазначена',
-'gender-male' => 'чоловіча',
-'gender-female' => 'жіноча',
-'prefs-help-gender' => "Необов'язкове поле: використовується в деяких повідомленнях двигуна, які залежать від статі користувача. Значення параметра загальнодоступне.",
-'email' => 'Електронна пошта',
-'prefs-help-realname' => "Справжнє ім'я необов'язково вказувати.
-Якщо ви його зазначите, то воно буде використовуватися, щоб показати, хто редагував сторінку.",
'loginerror' => 'Помилка при вході до системи',
-'prefs-help-email' => "Адреса електронної пошти (необов'язкове поле) дає можливість надіслати вам новий пароль у випадку, якщо ви забули поточний.
-Також вона дозволить іншим користувачам за допомогою вашої сторінки у вікі зв'язатися з вами, не знаючи вашої електронної адреси.",
-'prefs-help-email-required' => 'Потрібно зазначити адресу електронної пошти.',
+'createaccounterror' => 'Не в змозі створити обліковий запис: $1',
'nocookiesnew' => 'Користувач зареєструвався, але не ввійшов до системи.
{{SITENAME}} використовує куки для входу до системи.
У вас куки заборонені.
@@ -656,10 +687,11 @@ $1",
'nosuchusershort' => 'Користувач з іменем <nowiki>$1</nowiki> не існує.
Перевірте правильність написання імені.',
'nouserspecified' => "Ви повинні зазначити ім'я користувача.",
+'login-userblocked' => 'Цей користувач заблокований. Вхід в систему не дозволений.',
'wrongpassword' => 'Ви ввели хибний пароль. Спробуйте ще раз.',
'wrongpasswordempty' => 'Ви не ввели пароль. Будь ласка, спробуйте ще раз.',
-'passwordtooshort' => 'Ваш пароль неправильний або занадто короткий.
-Він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}} і відрізнятися від імені користувача.',
+'passwordtooshort' => 'Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.',
+'password-name-match' => 'Уведений пароль має відрізнятися від імені користувача.',
'mailmypassword' => 'Надіслати новий пароль',
'passwordremindertitle' => "Пам'ятка пароля користувача {{grammar:genitive|{{SITENAME}}}}",
'passwordremindertext' => 'Хтось (можливо, ви, з IP-адреси $1) зробив запит
@@ -672,6 +704,7 @@ $1",
і не хочете його змінювати, ви можете ігнорувати це повідомлення і
продовжувати використовувати свій старий пароль.',
'noemail' => 'Для користувача "$1" не вказано адресу електронної пошти.',
+'noemailcreate' => 'Вам треба вказати правильну адресу електронної пошти',
'passwordsent' => 'Новий пароль був надісланий на адресу електронної пошти, зазначену для "$1".
Будь ласка, ввійдіть до системи після отримання пароля.',
'blocked-mailpassword' => 'Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.',
@@ -694,9 +727,11 @@ $1",
'createaccount-text' => 'Хтось створив обліковий запис «$2» на сервері проекту {{SITENAME}} ($4) з паролем «$3», зазначивши вашу адресу електронної пошти. Вам слід зайти і змінити пароль.
Проігноруйте дане повідомлення, якщо обліковий запис було створено помилково.',
+'usernamehasherror' => "Ім'я користувача не може містити символу «решітка»",
'login-throttled' => 'Ви зробили надто багато спроб ввійти до системи.
Будь ласка, зачекайте перед повторною спробою.',
'loginlanguagelabel' => 'Мова: $1',
+'suspicious-userlogout' => 'Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.',
# Password reset dialog
'resetpass' => 'Змінити пароль',
@@ -707,17 +742,13 @@ $1",
'retypenew' => 'Ще раз введіть новий пароль:',
'resetpass_submit' => 'Установити пароль і ввійти',
'resetpass_success' => 'Ваш пароль успішно змінено! Виконується вхід до системи…',
-'resetpass_bad_temporary' => 'Недійсний тимчасовий пароль. Можливо, ви вже змінили ваш пароль. Спробуйте надіслати запит на тимчасовий пароль ще раз.',
'resetpass_forbidden' => 'Пароль не можна змінювати',
'resetpass-no-info' => 'Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.',
'resetpass-submit-loggedin' => 'Змінити пароль',
+'resetpass-submit-cancel' => 'Скасувати',
'resetpass-wrong-oldpass' => 'Неправильний тимчасовий або поточний пароль.
Можливо, ви вже успішно змінили пароль або зробили запит на новий тимчасовий пароль.',
'resetpass-temp-password' => 'Тимчасовий пароль:',
-'resetpass-log' => 'Журнал зміни паролів',
-'resetpass-logtext' => 'Нижче в журналі наведений список користувачів, для яких адміністратори скинули пароль.',
-'resetpass-logentry' => 'змінив пароль для $1',
-'resetpass-comment' => 'Причина скидання паролю:',
# Edit page toolbar
'bold_sample' => 'Жирний текст',
@@ -790,7 +821,6 @@ $1",
'blockededitsource' => "Текст '''ваших редагувань''' сторінки «$1» наведено нижче:",
'whitelistedittitle' => 'Для редагування необхідно ввійти в систему',
'whitelistedittext' => 'Ви повинні $1 щоб редагувати сторінки.',
-'confirmedittitle' => 'Для редагування необхідно підтвердити адресу ел. пошти',
'confirmedittext' => 'Ви повинні підтвердити вашу адресу електронної пошти перед редагуванням сторінок.
Будь-ласка зазначте і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].',
'nosuchsectiontitle' => 'Не вдається знайти розділ',
@@ -816,9 +846,16 @@ $1",
Ви можете [[Special:Search/{{PAGENAME}}|пошукати цю назву]] в інших сторінках,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати в журналах]
або [{{fullurl:{{FULLPAGENAME}}|action=edit}} створити сторінку з такою назвою]</span>.',
+'noarticletext-nopermission' => 'Зараз на цій сторінці відсутній текст.
+Ви можете [[Special:Search/{{PAGENAME}}|пошукати такий заголовок]] серед інших сторінок,
+або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов\'язані записи в журналах]</span>.',
'userpage-userdoesnotexist' => 'Користувач під назвою "$1" не зареєстрований. Переконайтеся, що ви хочете створити/редагувати цю сторінку.',
+'userpage-userdoesnotexist-view' => 'Обліковий запис користувача „$1“ не зареєстровано.',
+'blocked-notice-logextract' => 'Цей користувач наразі заблокований.
+Останній запис у журналі блокувань такий:',
'clearyourcache' => "'''Зауваження:''' Після зберігання ви маєте відновити кеш вашого браузера, щоб побачити зміни. '''Mozilla / Firefox / Safari:''' тримайте ''Shift'', коли натискаєте ''Reload'', або натисніть ''Ctrl-Shift-R'' (''Cmd-Shift-R'' на Apple Mac); '''IE:''' тримайте ''Ctrl'', коли натискаєте ''Refresh'', або натисніть ''Ctrl-F5''; '''Konqueror:''': натисніть кнопку ''Reload'', або натисніть ''F5''; '''Opera:''' користувачам може знадобитись повністю очистити кеш у ''Tools→Preferences''.",
-'usercssjsyoucanpreview' => "'''Підказка:''' Використовуйте кнопку попереднього перегляду, щоб протестувати ваш новий css-файл чи js-файл перед збереженням.",
+'usercssyoucanpreview' => "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий css-файл перед збереженням.",
+'userjsyoucanpreview' => "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий код JavaScript перед збереженням.",
'usercsspreview' => "'''Пам'ятайте, що це лише попередній перегляд вашого css-файлу.'''
'''Його ще не збережено!'''",
'userjspreview' => "'''Пам'ятайте, що це тільки попередній перегляд вашого JavaScript-файлу і поки він ще не збережений!'''",
@@ -870,13 +907,16 @@ $1",
Можливо, вам варто зберегти текст в локальний файл (на своєму диску) й зберегти його пізніше.'''
Адміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
-'protectedpagewarning' => "'''ПОПЕРЕДЖЕННЯ: Ця сторінка захищена від змін, її можуть редагувати тільки адміністратори.'''",
-'semiprotectedpagewarning' => "'''Примітка:''' Ця сторінка захищена. Її можуть редагувати тільки зареєстровані користувачі.",
+'protectedpagewarning' => "'''Попередження: Ця сторінка була захищена від змін так, що тільки користувачі з правами адміністратора можуть її редагувати.'''
+Останній запис журналу наведений нижче для довідки:",
+'semiprotectedpagewarning' => "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.
+Останній запис журналу наведений нижче для довідки:",
'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
-'titleprotectedwarning' => "'''Попередження. Ця сторінка була захищена, тому для її створення потрібні [[Special:ListGroupRights|особливі права]].'''",
-'templatesused' => 'Шаблони, використані на цій сторінці:',
-'templatesusedpreview' => 'Шаблони, використані на цій сторінці:',
-'templatesusedsection' => 'Шаблони, використані в цій секції:',
+'titleprotectedwarning' => "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''
+Останній запис журналу наведений нижче для довідки:",
+'templatesused' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
+'templatesusedpreview' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
+'templatesusedsection' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цій секції:',
'template-protected' => '(захищено)',
'template-semiprotected' => '(частково захищено)',
'hiddencategories' => 'Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:',
@@ -885,15 +925,18 @@ $1",
'nocreatetext' => 'На цьому сайті обмежено можливість створення нових сторінок.
Ви можете повернуться назад й змінити існуючу сторінку, [[Special:UserLogin|ввійти в систему, або створити новий обліковий запис]].',
'nocreate-loggedin' => 'У вас нема дозволу створювати нові сторінки.',
+'sectioneditnotsupported-title' => 'Редагування окремих розділів не підтримується',
+'sectioneditnotsupported-text' => 'На цій сторінці не підтримується редагування окремих розділів',
'permissionserrors' => 'Помилки прав доступу',
'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|наступної причини|наступних причин}}:',
'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|такої причини|таких причин}}:',
-'recreate-deleted-warn' => "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''
+'recreate-moveddeleted-warn' => "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''
Перевірте, чи справді вам потрібно знову створювати цю сторінку.
-Нижче наведений журнал вилучень:",
-'deleted-notice' => 'Ця сторінка була вилучена. Для довідки нижче наведені відповідні записи з журналу вилучень.',
-'deletelog-fulllog' => 'Переглянути повний журнал',
+Нижче наведений журнал вилучень і перейменувань:",
+'moveddeleted-notice' => 'Ця сторінка була вилучена.
+Для довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.',
+'log-fulllog' => 'Переглянути весь журнал',
'edit-hook-aborted' => 'Редагування скасоване процедурою-перехоплювачем.
Додаткові пояснення не наведені.',
'edit-gone-missing' => 'Неможливо оновити сторінку.
@@ -916,6 +959,7 @@ $1",
'post-expand-template-argument-category' => 'Сторінки, які містять пропущені аргументи шаблонів',
'parser-template-loop-warning' => 'Виявлена петля у шаблонах: [[$1]]',
'parser-template-recursion-depth-warning' => 'Перевищена границя глибини рекурсії шаблону ($1)',
+'language-converter-depth-warning' => 'Перевищене обмеження глибини мовного конвертора ($1)',
# "Undo" feature
'undo-success' => 'Редагування відмінено. Будь-ласка, натисніть «Зберегти», щоб зберегти зміни.',
@@ -935,7 +979,7 @@ $3 зазначив таку причину: ''$2''",
'currentrev' => 'Поточна версія',
'currentrev-asof' => 'Поточна версія на $1',
'revisionasof' => 'Версія $1',
-'revision-info' => 'Версія від $1; $2', # Additionally available: $3: revision id
+'revision-info' => 'Версія від $1; $2',
'previousrevision' => '← Старіша версія',
'nextrevision' => 'Новіша версія →',
'currentrevisionlink' => 'Поточна версія',
@@ -947,7 +991,7 @@ $3 зазначив таку причину: ''$2''",
'histlegend' => "Пояснення: (поточн.) = відмінності від поточної версії,
(ост.) = відмінності від попередньої версії, '''м''' = незначне редагування",
'history-fieldset-title' => 'Переглянути історію',
-'deletedrev' => '[вилучена]',
+'history-show-deleted' => 'Тільки вилучені',
'histfirst' => 'найстаріші',
'histlast' => 'останні',
'historysize' => '($1 {{PLURAL:$1|байт|байти|байтів}})',
@@ -956,74 +1000,116 @@ $3 зазначив таку причину: ''$2''",
# Revision feed
'history-feed-title' => 'Історія редагувань',
'history-feed-description' => 'Історія редагувань цієї сторінки в вікі',
-'history-feed-item-nocomment' => '$1 в $2', # user at time
+'history-feed-item-nocomment' => '$1 в $2',
'history-feed-empty' => 'Такої сторінки не існує.
Її могли вилучити чи перейменувати.
Спробуйте [[Special:Search|знайти]] подібні сторінки.',
# Revision deletion
-'rev-deleted-comment' => '(коментар вилучено)',
-'rev-deleted-user' => "(ім'я автора стерто)",
-'rev-deleted-event' => '(запис журналу вилучений)',
-'rev-deleted-text-permission' => "Ця версія сторінки '''вилучена'''.
-Можливо є пояснення в [{{fullurl:{{ns:special}}:Log/delete|page={{PAGENAMEE}}}} журналі вилучень].",
-'rev-deleted-text-view' => "Ця версія сторінки '''вилучена'''.
+'rev-deleted-comment' => '(коментар вилучено)',
+'rev-deleted-user' => "(ім'я автора стерто)",
+'rev-deleted-event' => '(запис журналу вилучений)',
+'rev-deleted-user-contribs' => "[ім'я користувача або IP-адреса вилучені — редагування приховане у внеску]",
+'rev-deleted-text-permission' => "Ця версія сторінки '''вилучена'''.
+Можливо є пояснення в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
+'rev-deleted-text-unhide' => "Ця версія сторінки '''вилучена'''.
+Можливо є пояснення в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].
+Як адміністратор ви можете [$1 переглянути цю версію].",
+'rev-suppressed-text-unhide' => "Ця версія сторінки була '''прихована'''.
+Можливо, є пояснення в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі приховань].
+Як адміністратор ви можете [$1 переглянути цю версію].",
+'rev-deleted-text-view' => "Ця версія сторінки '''вилучена'''.
Ви можете переглянути її, оскільки є адміністратором проекту.
-Можливо, є пояснення в [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
-'rev-deleted-no-diff' => "Ви не можете переглянути цю різницю версій, оскільки одна з версій сторінки '''вилучена'''.
-Можливо, деталі можна знайти в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
-'rev-deleted-unhide-diff' => "Одна з версій сторінки '''вилучена'''.
-Можливо, деталі можна знайти в [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].
+Можливо, є пояснення в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
+'rev-suppressed-text-view' => "Ця версія сторінки '''прихована'''.
+Як адміністратор ви можете переглянути її. Докладніші дані можуть знаходитися в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі приховань].",
+'rev-deleted-no-diff' => "Ви не можете переглянути цю різницю версій, оскільки одна з версій сторінки '''вилучена'''.
+Можливо, деталі можна знайти в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі вилучень].",
+'rev-suppressed-no-diff' => "Ви не можете переглянути це порівняння версій, оскільки одна з версій була '''вилучена'''.",
+'rev-deleted-unhide-diff' => "Одна з версій сторінки '''вилучена'''.
+Можливо, деталі можна знайти в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі вилучень].
Ви можете [$1 переглянути цю версію], оскільки є адміністратором.",
-'rev-delundel' => 'показати/сховати',
-'revisiondelete' => 'Вилучити / відновити версії сторінки',
-'revdelete-nooldid-title' => 'Не вказана цільова версія',
-'revdelete-nooldid-text' => 'Ви не вказали цільову версію (чи версії) для виконання цієї функції.',
-'revdelete-nologtype-title' => 'Не зазначений тип журналу',
-'revdelete-nologtype-text' => 'Ви не зазначили тип журналу, в якому слід виконати дію.',
-'revdelete-toomanytargets-title' => 'Дуже багато цілей',
-'revdelete-toomanytargets-text' => 'Ви зазначили дуже багато типів цілей для виконання цієї дії.',
-'revdelete-nologid-title' => 'Помилковий запис журналу',
-'revdelete-nologid-text' => 'Ви не зазначили цільовий запис журналу для виконання дії або зазначений запис не існує.',
-'revdelete-selected' => "'''{{PLURAL:$2|Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Обраний запис|Обрані записи}} журналу:'''",
-'revdelete-text' => "'''Вилучені версії сторінок і подій будуть відображатися в історії сторінки та журналах, але частина їх вмісту не буде доступною звичайним користувачам.'''
-
+'rev-suppressed-unhide-diff' => 'Ця версія сторінки була прихована.
+Можливо, є пояснення в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі приховань].
+Як адміністратор ви можете [$1 переглянути цю різницю версій]',
+'rev-deleted-diff-view' => "Одна з версій цього порівняння версій була '''вилучена'''.
+Як адміністратор ви можете переглянути це порівняння, докладніші дані можуть знаходитися в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
+'rev-suppressed-diff-view' => "Одна з версій цього порівняння версій була '''прихована'''.
+Як адміністратор ви можете переглянути це порівняння, докладніші дані можуть знаходитися в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі приховань].",
+'rev-delundel' => 'показати/сховати',
+'rev-showdeleted' => 'показати',
+'revisiondelete' => 'Вилучити / відновити версії сторінки',
+'revdelete-nooldid-title' => 'Не вказана цільова версія',
+'revdelete-nooldid-text' => 'Ви не вказали цільову версію (чи версії) для виконання цієї функції.',
+'revdelete-nologtype-title' => 'Не зазначений тип журналу',
+'revdelete-nologtype-text' => 'Ви не зазначили тип журналу, в якому слід виконати дію.',
+'revdelete-nologid-title' => 'Помилковий запис журналу',
+'revdelete-nologid-text' => 'Ви не зазначили цільовий запис журналу для виконання дії або зазначений запис не існує.',
+'revdelete-no-file' => 'Зазначений файл не існує.',
+'revdelete-show-file-confirm' => 'Ви впевнені, що хочете переглянути вилучену версію файлу «<nowiki>$1</nowiki>» від $3 $2?',
+'revdelete-show-file-submit' => 'Так',
+'revdelete-selected' => "'''{{PLURAL:$2|Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Обраний запис|Обрані записи}} журналу:'''",
+'revdelete-text' => "'''Вилучені версії сторінок і подій будуть відображатися в історії сторінки та журналах, але частина їх вмісту не буде доступною звичайним користувачам.'''
Доступ до прихованого змісту матимуть адміністратори проекту {{SITENAME}}, які зможуть відновити його за допомогою цього ж інтерфейсу,
-крім випадків, коли були встановлені додаткові обмеження власниками сайту.
-
-Будь ласка, переконайтеся, що ви дійсно бажаєте виконати дані дії, усвідомлюєте їх наслідки, дієте згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
-'revdelete-suppress-text' => "Приховування може відбуватися '''лише''' в таких випадках:
+крім випадків, коли були встановлені додаткові обмеження власниками сайту.",
+'revdelete-confirm' => 'Будь ласка, підтвердить, що ви справді бажаєте це здійснити, усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].',
+'revdelete-suppress-text' => "Приховування може відбуватися '''лише''' в таких випадках:
* Непотрібна особиста інформація
*: ''домашні адреси, номери телефонів, номер паспорта тощо.''",
-'revdelete-legend' => 'Установити обмеження',
-'revdelete-hide-text' => 'Прихований текст цієї версії сторінки',
-'revdelete-hide-name' => "Приховати дію та її об'єкт",
-'revdelete-hide-comment' => 'Приховати коментар',
-'revdelete-hide-user' => "Приховати ім'я автора",
-'revdelete-hide-restricted' => 'Приховати дані також і від адміністраторів',
-'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
-'revdelete-hide-image' => 'Приховати вміст файлу',
-'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
-'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Застосувати до вибраної версії',
-'revdelete-logentry' => 'змінив видимість версії сторінки для [[$1]]',
-'logdelete-logentry' => 'змінена видимість події для [[$1]]',
-'revdelete-success' => "'''Видимість версії успішно змінена.'''",
-'logdelete-success' => "'''Видимість події успішно змінена.'''",
-'revdel-restore' => 'Змінити видимість',
-'pagehist' => 'Історія сторінки',
-'deletedhist' => 'Історія вилучень',
-'revdelete-content' => 'вміст',
-'revdelete-summary' => 'коментар до редагування',
-'revdelete-uname' => "ім'я користувача",
-'revdelete-restricted' => 'застосовані обмеження для адміністраторів',
-'revdelete-unrestricted' => 'зняті обмеження для адміністраторів',
-'revdelete-hid' => 'приховано $1',
-'revdelete-unhid' => 'розкрито $1',
-'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|редагування|редагувань|редагувань}}',
-'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|події|подій}}',
+'revdelete-legend' => 'Установити обмеження',
+'revdelete-hide-text' => 'Прихований текст цієї версії сторінки',
+'revdelete-hide-image' => 'Приховати вміст файлу',
+'revdelete-hide-name' => "Приховати дію та її об'єкт",
+'revdelete-hide-comment' => 'Приховати коментар',
+'revdelete-hide-user' => "Приховати ім'я автора",
+'revdelete-hide-restricted' => 'Приховати дані також і від адміністраторів',
+'revdelete-radio-same' => '(не змінювати)',
+'revdelete-radio-set' => 'Так',
+'revdelete-radio-unset' => 'Ні',
+'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
+'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
+'revdelete-log' => 'Причина:',
+'revdelete-submit' => 'Застосувати до {{PLURAL:$1|обраної версії|обраних версій}}',
+'revdelete-logentry' => 'змінив видимість версії сторінки для [[$1]]',
+'logdelete-logentry' => 'змінена видимість події для [[$1]]',
+'revdelete-success' => "'''Видимість версії успішно змінена.'''",
+'revdelete-failure' => "'''Видимість версії неможливо змінити:'''
+$1",
+'logdelete-success' => "'''Видимість події успішно змінена.'''",
+'logdelete-failure' => "'''Не вдалося встановити видимість журналу:'''
+$1",
+'revdel-restore' => 'Змінити видимість',
+'pagehist' => 'Історія сторінки',
+'deletedhist' => 'Історія вилучень',
+'revdelete-content' => 'вміст',
+'revdelete-summary' => 'коментар до редагування',
+'revdelete-uname' => "ім'я користувача",
+'revdelete-restricted' => 'застосовані обмеження для адміністраторів',
+'revdelete-unrestricted' => 'зняті обмеження для адміністраторів',
+'revdelete-hid' => 'приховано $1',
+'revdelete-unhid' => 'розкрито $1',
+'revdelete-log-message' => '$1 для $2 {{PLURAL:$2|редагування|редагувань|редагувань}}',
+'logdelete-log-message' => '$1 для $2 {{PLURAL:$2|події|подій}}',
+'revdelete-hide-current' => 'Помилка приховування запису від $2, $1: це поточна версія.
+Її не можна приховати.',
+'revdelete-show-no-access' => 'Помилка показу запису від $2, $1: він позначений як «з обмеженим доступом».
+Ви не маєте доступу до нього.',
+'revdelete-modify-no-access' => 'Помилка редгування запису від $2, $1: його поначено як "з обмеженим доступом".
+Ви не маєте доступу до нього.',
+'revdelete-modify-missing' => 'Помилка редагування запису з ID $1: його нема в базі даних!',
+'revdelete-no-change' => "'''Увага:''' запис від $2, $1 вже має запрошені налаштування видимості.",
+'revdelete-concurrent-change' => 'Помилка редагування запису від $2, $1: його стан змінений кимось іншим, поки ви робили свої зміни.
+Будь ласка, перевірте журнал.',
+'revdelete-only-restricted' => 'Помилка приховання запису від $2, $1: ви не можете приховати записи від перегляду адміністраторів без одночасного вибору однієї з інших опцій приховання.',
+'revdelete-reason-dropdown' => '* Типові причини вилучення
+** Порушення авторських прав
+** Недоречна особиста інформація',
+'revdelete-otherreason' => 'Інша/додаткова причина:',
+'revdelete-reasonotherlist' => 'Інша причина',
+'revdelete-edit-reasonlist' => 'Редагувати причини вилучень',
+'revdelete-offender' => 'Автор версії:',
# Suppression log
'suppressionlog' => 'Журнал приховувань',
@@ -1060,68 +1146,13 @@ $3 зазначив таку причину: ''$2''",
'mergelogpagetext' => "Нижче наведений список останніх об'єднань історій сторінок.",
# Diffs
-'history-title' => 'Історія змін сторінки «$1»',
-'difference' => '(відмінності між версіями)',
-'lineno' => 'Рядок $1:',
-'compareselectedversions' => 'Порівняти вибрані версії',
-'visualcomparison' => 'Наочне порівняння',
-'wikicodecomparison' => 'Порівняння вікі-тексту',
-'editundo' => 'скасувати',
-'diff-multi' => '($1 {{PLURAL:$1|проміжна версія не показана|проміжні версії не показані|проміжних версій не показані}}.)',
-'diff-movedto' => 'оформлено як $1',
-'diff-styleadded' => 'доданий стиль $1',
-'diff-added' => 'додано $1',
-'diff-changedto' => 'змінено на $1',
-'diff-movedoutof' => 'винесено з $1',
-'diff-styleremoved' => 'вилучено стиль $1',
-'diff-removed' => 'вилучено $1',
-'diff-changedfrom' => 'змінено з $1',
-'diff-src' => 'джерело',
-'diff-withdestination' => 'з призначенням $1',
-'diff-with' => '&#32;з $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;і $1 $2',
-'diff-width' => 'ширина',
-'diff-height' => 'висота',
-'diff-p' => "'''абзац'''",
-'diff-blockquote' => "'''цитата'''",
-'diff-h1' => "'''заголовок 1-го рівня'''",
-'diff-h2' => "'''заголовок 2-го рівня'''",
-'diff-h3' => "'''заголовок 3-го рівня'''",
-'diff-h4' => "'''заголовок 4-го рівня'''",
-'diff-h5' => "'''заголовок 5-го рівня'''",
-'diff-pre' => "'''блок заданого формату'''",
-'diff-div' => "'''розділ'''",
-'diff-ul' => "'''невпорядкований список'''",
-'diff-ol' => "'''упорядкований список'''",
-'diff-li' => "'''елемент списку'''",
-'diff-table' => "'''таблиця'''",
-'diff-tbody' => "'''вміст таблиці'''",
-'diff-tr' => "'''рядок'''",
-'diff-td' => "'''комірка'''",
-'diff-th' => "'''заголовок'''",
-'diff-br' => "'''розрив'''",
-'diff-hr' => "'''горизонтальна лінія'''",
-'diff-code' => "'''блок програмного коду'''",
-'diff-dl' => "'''список означень'''",
-'diff-dt' => "'''означуваний термін'''",
-'diff-dd' => "'''означення'''",
-'diff-input' => "'''поле вводу'''",
-'diff-form' => "'''форма'''",
-'diff-img' => "'''зображення'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''посилання'''",
-'diff-i' => "'''курсив'''",
-'diff-b' => "'''жирний шрифт'''",
-'diff-strong' => "'''тег &lt;strong&gt;'''",
-'diff-em' => "'''тег &lt;em&gt;'''",
-'diff-font' => "'''шрифт'''",
-'diff-big' => "'''великий шрифт'''",
-'diff-del' => "'''вилучено'''",
-'diff-tt' => "'''моноширинний шрифт'''",
-'diff-sub' => "'''нижній індекс'''",
-'diff-sup' => "'''верхній індекс'''",
-'diff-strike' => "'''закреслений шрифт'''",
+'history-title' => 'Історія змін сторінки «$1»',
+'difference' => '(відмінності між версіями)',
+'lineno' => 'Рядок $1:',
+'compareselectedversions' => 'Порівняти вибрані версії',
+'showhideselectedversions' => 'Показати/приховати обрані версії',
+'editundo' => 'скасувати',
+'diff-multi' => '($1 {{PLURAL:$1|проміжна версія не показана|проміжні версії не показані|проміжних версій не показані}}.)',
# Search results
'searchresults' => 'Результати пошуку',
@@ -1129,29 +1160,25 @@ $3 зазначив таку причину: ''$2''",
'searchresulttext' => 'Для отримання детальнішої інформації про пошук у проекті, див. [[{{MediaWiki:Helppage}}|розділ допомоги]].',
'searchsubtitle' => 'Ви шукали «[[:$1]]» ([[Special:Prefixindex/$1|усі сторінки, що починаються на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усі сторінки, що мають посилання на «$1»]])',
'searchsubtitleinvalid' => 'На запит «$1»',
-'noexactmatch' => "'''Сторінка з назвою «$1» не існує.'''
-Ви можете [[:$1|створити сторінку]].",
-'noexactmatch-nocreate' => 'Сторінка з назвою «$1» не існує.',
'toomanymatches' => 'Знайдено дуже багато відповідностей, будь ласка, спробуйте інший запит',
'titlematches' => 'Збіги в назвах сторінок',
'notitlematches' => 'Нема збігів у назвах сторінок',
'textmatches' => 'Збіги в текстах сторінок',
'notextmatches' => 'Немає збігів у текстах сторінок',
-'prevn' => 'попередні $1',
-'nextn' => 'наступні $1',
+'prevn' => '{{PLURAL:$1|попередня $1|попередні $1|попередні $1}}',
+'nextn' => 'наступні {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Попередній $1 запис|Попередні $1 записи|Попередні $1 записів}}',
'nextn-title' => '{{PLURAL:$1|Наступний $1 запис|Наступні $1 записи|Наступні $1 записів}}',
'shown-title' => 'Показувати $1 {{PLURAL:$1|запис|записи|записів}} на сторінці',
-'viewprevnext' => 'Переглянути ($1) ($2) ($3).',
+'viewprevnext' => 'Переглянути ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Параметри пошуку',
'searchmenu-exists' => "'''У цій вікі є сторінка з назвою «[[$1]]»'''",
'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у цій вікі!'''",
'searchhelp-url' => 'Help:Довідка',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показати сторінки з цим префіксом]]',
'searchprofile-articles' => 'Статті',
-'searchprofile-articles-and-proj' => 'Статті і сторінки проекту',
-'searchprofile-project' => 'Сторінки проекту',
-'searchprofile-images' => 'Файли',
+'searchprofile-project' => 'Сторінки довідки і проекту',
+'searchprofile-images' => 'Мультимедіа',
'searchprofile-everything' => 'Усюди',
'searchprofile-advanced' => 'Вибірково',
'searchprofile-articles-tooltip' => 'Пошук у $1',
@@ -1159,8 +1186,6 @@ $3 зазначив таку причину: ''$2''",
'searchprofile-images-tooltip' => 'Пошук файлів',
'searchprofile-everything-tooltip' => 'Пошук на всіх сторінках (включаючи сторінки обговорення)',
'searchprofile-advanced-tooltip' => 'Шукати в заданих просторах назв',
-'prefs-search-nsdefault' => 'Пошук з використанням звичайних налаштувань:',
-'prefs-search-nscustom' => 'Пошук у заданих просторах назв:',
'search-result-size' => '$1 ($2 {{PLURAL:$2|слово|слова|слів}})',
'search-result-score' => 'Відповідність: $1 %',
'search-redirect' => '(перенаправлення $1)',
@@ -1173,11 +1198,12 @@ $3 зазначив таку причину: ''$2''",
'search-mwsuggest-disabled' => 'без порад',
'search-relatedarticle' => "Пов'язаний",
'mwsuggest-disable' => 'Вимкнути поради AJAX',
+'searcheverything-enable' => 'Пошук у всіх просторах назв',
'searchrelated' => "пов'язаний",
'searchall' => 'усі',
'showingresults' => "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з №&nbsp;'''$2'''",
'showingresultsnum' => 'Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з №&nbsp;<strong>$2</strong>.',
-'showingresultstotal' => "Нижче {{PLURAL:$4|показаний результат '''$1''' із '''$3'''|показані результати '''$1 — $2''' із '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
'nonefound' => "'''Зауваження:''' За умовчанням пошук відбувається не в усіх просторах назв. Використовуйте префікс ''all:'', щоб шукати у всіх просторах назв (у т.ч. сторінки обговорень, шаблони тощо), або зазначте потрібний простір назв.",
'search-nonefound' => 'Не знайдено результатів, що відповідають запиту.',
'powersearch' => 'Розширений пошук',
@@ -1185,111 +1211,152 @@ $3 зазначив таку причину: ''$2''",
'powersearch-ns' => 'Пошук у просторах назв:',
'powersearch-redir' => 'Показувати перенаправлення',
'powersearch-field' => 'Шукати',
+'powersearch-togglelabel' => 'Позначити:',
+'powersearch-toggleall' => 'Усі',
+'powersearch-togglenone' => 'Жодний',
'search-external' => 'Зовнішній пошук',
'searchdisabled' => '<p>Вибачте, повнотекстовий пошук тимчасово недоступний через перевантаження сервера; передбачається, що ця функція буде знову включена після установки нового обладнання. Поки що ми пропонуємо вам скористатися Google чи Yahoo!:</p>',
+# Quickbar
+'qbsettings' => 'Панель навігації',
+'qbsettings-none' => 'Не показувати панель',
+'qbsettings-fixedleft' => 'Фіксована ліворуч',
+'qbsettings-fixedright' => 'Фіксована праворуч',
+'qbsettings-floatingleft' => 'Плаваюча ліворуч',
+'qbsettings-floatingright' => 'Плаваюча праворуч',
+
# Preferences page
-'preferences' => 'Налаштування',
-'mypreferences' => 'Налаштування',
-'prefs-edits' => 'Кількість редагувань:',
-'prefsnologin' => 'Ви не ввійшли в систему',
-'prefsnologintext' => 'Щоб змінити налаштування користувача, ви повинні <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} ввійти до системи]</span>.',
-'prefsreset' => 'Відновлено стандартні налаштування.',
-'qbsettings' => 'Панель навігації',
-'qbsettings-none' => 'Не показувати панель',
-'qbsettings-fixedleft' => 'Фіксована ліворуч',
-'qbsettings-fixedright' => 'Фіксована праворуч',
-'qbsettings-floatingleft' => 'Плаваюча ліворуч',
-'qbsettings-floatingright' => 'Плаваюча праворуч',
-'changepassword' => 'Змінити пароль',
-'skin' => 'Оформлення',
-'skin-preview' => 'Попередній перегляд',
-'math' => 'Відображення формул',
-'dateformat' => 'Формат дати',
-'datedefault' => 'Стандартний',
-'datetime' => 'Дата й час',
-'math_failure' => 'Неможливо розібрати вираз',
-'math_unknown_error' => 'невідома помилка',
-'math_unknown_function' => 'невідома функція',
-'math_lexing_error' => 'лексична помилка',
-'math_syntax_error' => 'синтаксична помилка',
-'math_image_error' => 'Перетворення в PNG відбулося з помилкою; перевірте правильність встановлення latex, dvips, gs та convert',
-'math_bad_tmpdir' => 'Не вдається створити чи записати в тимчасовий каталог математики',
-'math_bad_output' => 'Не вдається створити чи записати в вихідний каталог математики',
-'math_notexvc' => 'Не знайдено програму texvc; Див. math/README — довідку про налаштування.',
-'prefs-personal' => 'Особисті дані',
-'prefs-rc' => 'Сторінка останніх редагувань',
-'prefs-watchlist' => 'Список спостереження',
-'prefs-watchlist-days' => 'Кількість днів, що відображаються у списку спостережень:',
-'prefs-watchlist-days-max' => '(максимум 7 днів)',
-'prefs-watchlist-edits' => 'Кількість редагувань для відображення у розширеному списку спостереження:',
-'prefs-watchlist-edits-max' => '(максимальне число: 1000)',
-'prefs-misc' => 'Інші налаштування',
-'prefs-resetpass' => 'Змінити пароль',
-'saveprefs' => 'Зберегти',
-'resetprefs' => 'Скасувати незбережені зміни',
-'restoreprefs' => 'Відновити всі стандартні налаштування',
-'textboxsize' => 'Розміри поля вводу',
-'prefs-edit-boxsize' => 'Розмір вікна редагування.',
-'rows' => 'Рядків:',
-'columns' => 'Колонок:',
-'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Кількість результатів на сторінку:',
-'contextlines' => 'Кількість рядків на результат',
-'contextchars' => 'Кількість символів контексту на рядок',
-'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
-'recentchangesdays' => 'На скільки днів показувати нові редагування:',
-'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|день|дні|днів}})',
-'recentchangescount' => 'Кількість редагувань, які показуються у списку нових редагувань, історіях сторінок, журналах, за замовчуванням:',
-'savedprefs' => 'Ваші налаштування збережено.',
-'timezonelegend' => 'Часовий пояс:',
-'timezonetext' => '¹Зміщення вашого місцевого часу (в годинах) від часу сервера (UTC — за Гринвічем).',
-'localtime' => 'Місцевий час:',
-'timezoneselect' => 'Часовий пояс:',
-'timezoneuseserverdefault' => 'Використовувати налаштування сервера',
-'timezoneuseoffset' => 'Інше (зазначте зміщення)',
-'timezoneoffset' => 'Зміщення¹:',
-'servertime' => 'Час сервера:',
-'guesstimezone' => 'Заповнити з браузера',
-'timezoneregion-africa' => 'Африка',
-'timezoneregion-america' => 'Америка',
-'timezoneregion-antarctica' => 'Антарктика',
-'timezoneregion-arctic' => 'Арктика',
-'timezoneregion-asia' => 'Азія',
-'timezoneregion-atlantic' => 'Атлантичний океан',
-'timezoneregion-australia' => 'Австралія',
-'timezoneregion-europe' => 'Європа',
-'timezoneregion-indian' => 'Індійський океан',
-'timezoneregion-pacific' => 'Тихий океан',
-'allowemail' => 'Дозволити електронну пошту від інших користувачів',
-'prefs-searchoptions' => 'Параметри пошуку',
-'prefs-namespaces' => 'Простори назв',
-'defaultns' => 'За замовчуванням шукати в таких просторах назв:',
-'default' => 'за умовчанням',
-'files' => 'Файли',
-'prefs-custom-css' => 'Власний CSS',
-'prefs-custom-js' => 'Власний JS',
+'preferences' => 'Налаштування',
+'mypreferences' => 'Налаштування',
+'prefs-edits' => 'Кількість редагувань:',
+'prefsnologin' => 'Ви не ввійшли в систему',
+'prefsnologintext' => 'Щоб змінити налаштування користувача, ви повинні <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ввійти до системи]</span>.',
+'changepassword' => 'Змінити пароль',
+'prefs-skin' => 'Оформлення',
+'skin-preview' => 'Попередній перегляд',
+'prefs-math' => 'Відображення формул',
+'datedefault' => 'Стандартний',
+'prefs-datetime' => 'Дата й час',
+'prefs-personal' => 'Особисті дані',
+'prefs-rc' => 'Сторінка останніх редагувань',
+'prefs-watchlist' => 'Список спостереження',
+'prefs-watchlist-days' => 'Кількість днів, що відображаються у списку спостережень:',
+'prefs-watchlist-days-max' => '(максимум 7 днів)',
+'prefs-watchlist-edits' => 'Кількість редагувань для відображення у розширеному списку спостереження:',
+'prefs-watchlist-edits-max' => '(максимальне число: 1000)',
+'prefs-watchlist-token' => 'Позначка списку спостереження:',
+'prefs-misc' => 'Інші налаштування',
+'prefs-resetpass' => 'Змінити пароль',
+'prefs-email' => 'Параметри електронної пошти',
+'prefs-rendering' => 'Зовнішній вигляд',
+'saveprefs' => 'Зберегти',
+'resetprefs' => 'Скасувати незбережені зміни',
+'restoreprefs' => 'Відновити всі стандартні налаштування',
+'prefs-editing' => 'Редагування',
+'prefs-edit-boxsize' => 'Розмір вікна редагування.',
+'rows' => 'Рядків:',
+'columns' => 'Колонок:',
+'searchresultshead' => 'Пошук',
+'resultsperpage' => 'Кількість результатів на сторінку:',
+'contextlines' => 'Кількість рядків на результат',
+'contextchars' => 'Кількість символів контексту на рядок',
+'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
+'recentchangesdays' => 'На скільки днів показувати нові редагування:',
+'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|день|дні|днів}})',
+'recentchangescount' => 'Кількість редагувань для показу за умовчанням:',
+'prefs-help-recentchangescount' => 'Це торкається нових редагувань, історій сторінок і журналів.',
+'prefs-help-watchlist-token' => 'Заповнення цього поля секретним ключем буде створювати RSS-трансляцію для вашого списку спостереження.
+Кожен, хто знає ключ в цьому полі, зможе читати ваш список спостереження, тому оберіть секретне значення.
+Ви можете використати це випадково згенероване значення: $1',
+'savedprefs' => 'Ваші налаштування збережено.',
+'timezonelegend' => 'Часовий пояс:',
+'localtime' => 'Місцевий час:',
+'timezoneuseserverdefault' => 'Використовувати налаштування сервера',
+'timezoneuseoffset' => 'Інше (зазначте зміщення)',
+'timezoneoffset' => 'Зміщення¹:',
+'servertime' => 'Час сервера:',
+'guesstimezone' => 'Заповнити з браузера',
+'timezoneregion-africa' => 'Африка',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-antarctica' => 'Антарктика',
+'timezoneregion-arctic' => 'Арктика',
+'timezoneregion-asia' => 'Азія',
+'timezoneregion-atlantic' => 'Атлантичний океан',
+'timezoneregion-australia' => 'Австралія',
+'timezoneregion-europe' => 'Європа',
+'timezoneregion-indian' => 'Індійський океан',
+'timezoneregion-pacific' => 'Тихий океан',
+'allowemail' => 'Дозволити електронну пошту від інших користувачів',
+'prefs-searchoptions' => 'Параметри пошуку',
+'prefs-namespaces' => 'Простори назв',
+'defaultns' => 'Інакше шукати в таких просторах назв:',
+'default' => 'за умовчанням',
+'prefs-files' => 'Файли',
+'prefs-custom-css' => 'Власний CSS',
+'prefs-custom-js' => 'Власний JS',
+'prefs-reset-intro' => 'Ця сторінка може бути використана для зміни ваших налаштувань на стандартні.
+Після виконання цієї дії ви не зможете відкотити зміни.',
+'prefs-emailconfirm-label' => 'Підтвердження електронної пошти:',
+'prefs-textboxsize' => 'Розмір вікна редагування',
+'youremail' => 'Адреса електронної пошти:',
+'username' => "Ім'я користувача:",
+'uid' => 'Ідентифікатор користувача:',
+'prefs-memberingroups' => 'Член {{PLURAL:$1|групи|груп}}:',
+'prefs-registration' => 'Час реєстрації:',
+'yourrealname' => "Справжнє ім'я:",
+'yourlanguage' => 'Мова інтерфейсу:',
+'yourvariant' => 'Варіант мови:',
+'yournick' => 'Підпис:',
+'prefs-help-signature' => 'Репліки на сторінках обговорення слід підписувати символами "<nowiki>~~~~</nowiki>", які будуть перетворені у ваш підпис і час.',
+'badsig' => 'Неправильний підпис.
+Перевірте коректність HTML-тегів.',
+'badsiglength' => 'Ваш підпис дуже довгий.
+Повинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.',
+'yourgender' => 'Стать:',
+'gender-unknown' => 'не зазначена',
+'gender-male' => 'чоловіча',
+'gender-female' => 'жіноча',
+'prefs-help-gender' => "Необов'язкове поле: використовується в деяких повідомленнях двигуна, які залежать від статі користувача. Значення параметра загальнодоступне.",
+'email' => 'Електронна пошта',
+'prefs-help-realname' => "Справжнє ім'я необов'язково вказувати.
+Якщо ви його зазначите, то воно буде використовуватися, щоб показати, хто редагував сторінку.",
+'prefs-help-email' => "Адреса електронної пошти (необов'язкове поле) дає можливість надіслати вам новий пароль у випадку, якщо ви забули поточний.
+Також вона дозволить іншим користувачам за допомогою вашої сторінки у вікі зв'язатися з вами, не знаючи вашої електронної адреси.",
+'prefs-help-email-required' => 'Потрібно зазначити адресу електронної пошти.',
+'prefs-info' => 'Основні відомості',
+'prefs-i18n' => 'Інтернаціоналізація',
+'prefs-signature' => 'Підпис',
+'prefs-dateformat' => 'Формат дати',
+'prefs-timeoffset' => 'Зсув часу',
+'prefs-advancedediting' => 'Розширені налаштування',
+'prefs-advancedrc' => 'Розширені налаштування',
+'prefs-advancedrendering' => 'Розширені налаштування',
+'prefs-advancedsearchoptions' => 'Розширені налаштування',
+'prefs-advancedwatchlist' => 'Розширені налаштування',
+'prefs-display' => 'Налаштування показу',
+'prefs-diffs' => 'Різниці версій',
# User rights
-'userrights' => 'Управління правами користувачів', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Управління групами користувача',
-'userrights-user-editname' => "Введіть ім'я користувача:",
-'editusergroup' => 'Редагувати групи користувача',
-'editinguser' => "Зміна прав користувача '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Змінити групи користувача',
-'saveusergroups' => 'Зберегти групи користувача',
-'userrights-groupsmember' => 'Член груп:',
-'userrights-groups-help' => 'Ви можете змінити групи, до яких належить цей користувач:
+'userrights' => 'Управління правами користувачів',
+'userrights-lookup-user' => 'Управління групами користувача',
+'userrights-user-editname' => "Введіть ім'я користувача:",
+'editusergroup' => 'Редагувати групи користувача',
+'editinguser' => "Зміна прав користувача '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Змінити групи користувача',
+'saveusergroups' => 'Зберегти групи користувача',
+'userrights-groupsmember' => 'Член груп:',
+'userrights-groupsmember-auto' => 'Неявний член:',
+'userrights-groups-help' => 'Ви можете змінити групи, до яких належить цей користувач:
* Якщо біля назви групи стоїть позначка, то користувач належить до цієї групи.
* Якщо позначка не стоїть — користувач не належить до відповідної групи.
* Зірочка означає, що ви не можете вилучити користувача з групи, якщо додасте його до неї, і навпаки.',
-'userrights-reason' => 'Причина:',
-'userrights-no-interwiki' => 'У вас нема дозволу змінювати права користувачів на інших вікі.',
-'userrights-nodatabase' => 'База даних $1 не існує або не є локальною.',
-'userrights-nologin' => 'Ви повинні [[Special:UserLogin|ввійти до системи]] з обліковим записом адміністратора, щоб призначати права користувачам.',
-'userrights-notallowed' => 'Із вашого облікового запису не дозволено призначати права користувачам.',
-'userrights-changeable-col' => 'Групи, які ви можете змінити',
-'userrights-unchangeable-col' => 'Групи, які ви не можете змінити',
+'userrights-reason' => 'Причина:',
+'userrights-no-interwiki' => 'У вас нема дозволу змінювати права користувачів на інших вікі.',
+'userrights-nodatabase' => 'База даних $1 не існує або не є локальною.',
+'userrights-nologin' => 'Ви повинні [[Special:UserLogin|ввійти до системи]] з обліковим записом адміністратора, щоб призначати права користувачам.',
+'userrights-notallowed' => 'Із вашого облікового запису не дозволено призначати права користувачам.',
+'userrights-changeable-col' => 'Групи, які ви можете змінити',
+'userrights-unchangeable-col' => 'Групи, які ви не можете змінити',
# Groups
'group' => 'Група:',
@@ -1342,6 +1409,7 @@ $3 зазначив таку причину: ''$2''",
'right-bigdelete' => 'Вилучення сторінок з великою історією',
'right-deleterevision' => 'Вилучення і відновлення окремих версій сторінок',
'right-deletedhistory' => 'Перегляд історії вилучених сторінок без перегляду вилученого тексту',
+'right-deletedtext' => 'перегляд вилученого тексту та змін між вилученими версіями',
'right-browsearchive' => 'Пошук вилучених сторінок',
'right-undelete' => 'Відновлення сторінок',
'right-suppressrevision' => 'Перегляд і відновлення версій, прихованих від адміністраторів',
@@ -1355,6 +1423,8 @@ $3 зазначив таку причину: ''$2''",
'right-editprotected' => 'Редагування захищених сторінок (без каскадного захисту)',
'right-editinterface' => 'Редагування інтерфейсу користувача',
'right-editusercssjs' => 'Редагування CSS- і JS-файлів інших користувачів',
+'right-editusercss' => 'Редагування CSS-файлів інших користувачів',
+'right-edituserjs' => 'Редагування JS-файлів інших користувачів',
'right-rollback' => 'Швидкий відкіт редагувань останнього користувача, який редагував сторінку',
'right-markbotedits' => 'Позначення відкинутих редагувань як редагування бота',
'right-noratelimit' => 'Нема обмежень за швидкістю',
@@ -1371,6 +1441,8 @@ $3 зазначив таку причину: ''$2''",
'right-siteadmin' => 'Блокування і розблокування бази даних',
'right-reset-passwords' => 'скидання паролів інших користувачів',
'right-override-export-depth' => "експорт сторінок, включаючи пов'язані сторінки з глибиною до 5",
+'right-versiondetail' => 'Перегляд розширеної інформації про версію програмного забезпечення',
+'right-sendemail' => 'відправляти пошту іншим користувачам',
# User rights log
'rightslog' => 'Журнал прав користувача',
@@ -1420,6 +1492,15 @@ $3 зазначив таку причину: ''$2''",
'recentchanges-legend' => 'Налаштування нових редагувань',
'recentchangestext' => 'На цій сторінці показані останні зміни на сторінках {{grammar:genitive|{{SITENAME}}}}.',
'recentchanges-feed-description' => 'Відстежувати останні зміни у вікі в цьому потоці.',
+'recentchanges-label-legend' => 'Легенда: $1.',
+'recentchanges-legend-newpage' => '$1 — нова сторінка',
+'recentchanges-label-newpage' => 'Цим редагуванням створена нова сторінка',
+'recentchanges-legend-minor' => '$1 — незначне редагування',
+'recentchanges-label-minor' => 'Це незначна зміна',
+'recentchanges-legend-bot' => '$1 — редагування бота',
+'recentchanges-label-bot' => 'Це редагування зроблене ботом',
+'recentchanges-legend-unpatrolled' => '$1 — невідпатрульоване редагування',
+'recentchanges-label-unpatrolled' => 'Це редагування ще не було відпатрульоване',
'rcnote' => "{{PLURAL:$1|Остання '''$1''' зміна|Останні '''$1''' зміни|Останні '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|дні|днів}}, на час $5, $4.",
'rcnotefrom' => 'Нижче відображені редагування з <strong>$2</strong> (до <strong>$1</strong>).',
'rclistfrom' => 'Показати редагування починаючи з $1.',
@@ -1446,6 +1527,8 @@ $3 зазначив таку причину: ''$2''",
# Recent changes linked
'recentchangeslinked' => "Пов'язані редагування",
+'recentchangeslinked-feed' => "Пов'язані редгування",
+'recentchangeslinked-toolbox' => "Пов'язані редагування",
'recentchangeslinked-title' => "Пов'язані редагування для «$1»",
'recentchangeslinked-noresult' => "На пов'язаних сторінках не було змін протягом зазначеного періоду.",
'recentchangeslinked-summary' => "Це список нещодавніх змін на сторінках, на які посилається зазначена сторінка (або на сторінках, що містяться в цій категорії).
@@ -1456,8 +1539,8 @@ $3 зазначив таку причину: ''$2''",
# Upload
'upload' => 'Завантажити файл',
'uploadbtn' => 'Завантажити файл',
-'reupload' => 'Повторно завантажити',
'reuploaddesc' => 'Повернутися до форми завантаження',
+'upload-tryagain' => 'Зберегти змінений опис файлу',
'uploadnologin' => 'Ви не ввійшли в систему',
'uploadnologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]], щоб завантажувати файли.',
'upload_directory_missing' => 'Директорія для завантажень ($1) відсутня і не може бути створена веб-сервером.',
@@ -1498,6 +1581,7 @@ $3 зазначив таку причину: ''$2''",
'minlength1' => 'Назва файлу повинна містити щонайменше одну літеру.',
'illegalfilename' => 'Ім\'я файлу "$1" містить букви, що недозволені в заголовках сторінок. Будь ласка перейменуйте файл і спробуйте завантажити його знову.',
'badfilename' => 'Назву файлу було змінено на $1.',
+'filetype-mime-mismatch' => 'Розширення файлу не відповідає MIME-типу.',
'filetype-badmime' => 'Файли, що мають MIME-тип «$1», не можуть бути завантажені.',
'filetype-bad-ie-mime' => 'Неможливо завантажити цей файл, оскільки Internet Explorer визначатиме його як «$1», тобто недозволеним і потенційно небезпечним типом файлу.',
'filetype-unwanted-type' => "'''\".\$1\"''' — небажаний тип файлу.
@@ -1516,7 +1600,6 @@ $3 зазначив таку причину: ''$2''",
* Назва завантаженого файлу: '''<tt>[[:$1]]</tt>'''
* Назва існуючого файлу: '''<tt>[[:$2]]</tt>'''
Будьте ласкаві, виберіть іншу назву.",
-'fileexists-thumb' => "<center>'''Існуюче зображення'''</center>",
'fileexists-thumbnail-yes' => "Можливо, файл є зменшеною копією (мініатюрою). [[$1|thumb]]
Будь ласка, перевірте файл '''<tt>[[:$1]]</tt>'''.
Якщо вказаний файл є тим самим зображенням, не варто окремо завантажувати його зменшену копію.",
@@ -1532,6 +1615,7 @@ $3 зазначив таку причину: ''$2''",
'file-deleted-duplicate' => 'Такий самий файл ([[$1]]) уже вилучався раніше. Будь ласка, ознайомтеся з історією вилучень файлу перед тим, як завантажити його знову.',
'successfulupload' => 'Завантаження успішно завершено',
'uploadwarning' => 'Попередження',
+'uploadwarning-text' => 'Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.',
'savefile' => 'Зберегти файл',
'uploadedimage' => 'завантажив «[[$1]]»',
'overwroteimage' => 'завантажив нову версію «[[$1]]»',
@@ -1539,12 +1623,14 @@ $3 зазначив таку причину: ''$2''",
'uploaddisabledtext' => 'Можливість завантаження файлів відключена.',
'php-uploaddisabledtext' => 'Завантаження файлів вимкнене у налаштуваннях PHP. Будь ласка, перевірте значення file_uploads.',
'uploadscripted' => 'Файл містить HTML-код або скрипт, який може неправильно обробитися браузером.',
-'uploadcorrupt' => 'Файл пошкоджений або має неправильне розширення.
-Будь ласка, перевірте файл і спробуйте завантажити його ще раз.',
'uploadvirus' => 'Файл містить вірус! Див. $1',
+'upload-source' => 'Вихідний файл',
'sourcefilename' => 'Назва початкового файлу:',
+'sourceurl' => 'Вихідна URL-адреса:',
'destfilename' => 'Назва завантаженого файлу:',
'upload-maxfilesize' => 'Максимальний розмір файлу: $1',
+'upload-description' => 'Опис файлу',
+'upload-options' => 'Параметри завантаження',
'watchthisupload' => 'Спостерігати за цим файлом',
'filewasdeleted' => 'Файл з такою назвою вже існував, але був вилучений.
Вам слід перевірити $1 перед повторним завантаженням.',
@@ -1568,12 +1654,43 @@ MGP # Pentax
PICT # різні
#</pre> <!-- не міняйте цей рядок -->',
-'upload-proto-error' => 'Невірний протокол',
-'upload-proto-error-text' => 'Віддалене завантаження вимагає адресів, що починаються з <code>http://</code> або <code>ftp://</code>.',
-'upload-file-error' => 'Внутрішня помилка',
-'upload-file-error-text' => 'Сталася внутрішня помилка при спробі створити тимчасовий файл на сервері. Будь-ласка, зверніться до [[Special:ListUsers/sysop|адміністратора]].',
-'upload-misc-error' => 'Невідома помилка завантаження',
-'upload-misc-error-text' => 'Невідома помилка завантаження. Будь-ласка, перевірте, що вказана адреса вірна й спробуйте ще. Якщо проблема виникає знову, зверніться до системного адміністратора.',
+'upload-proto-error' => 'Невірний протокол',
+'upload-proto-error-text' => 'Віддалене завантаження вимагає адресів, що починаються з <code>http://</code> або <code>ftp://</code>.',
+'upload-file-error' => 'Внутрішня помилка',
+'upload-file-error-text' => 'Сталася внутрішня помилка при спробі створити тимчасовий файл на сервері. Будь-ласка, зверніться до [[Special:ListUsers/sysop|адміністратора]].',
+'upload-misc-error' => 'Невідома помилка завантаження',
+'upload-misc-error-text' => 'Невідома помилка завантаження. Будь-ласка, перевірте, що вказана адреса вірна й спробуйте ще. Якщо проблема виникає знову, зверніться до системного адміністратора.',
+'upload-too-many-redirects' => 'URL містить надто багато перенаправлень',
+'upload-unknown-size' => 'Невідомий розмір',
+'upload-http-error' => 'Відбулася помилка HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Відмовлено в доступі',
+'img-auth-nopathinfo' => 'Брак PATH_INFO.
+Ваш сервер не налаштований для передачі цих даних.
+Можливо, він працює на основі CGI і не підтримує img_auth.
+Глядіть http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Проханий шлях не відноситься до теки завантажень, вказаної в налаштуваннях.',
+'img-auth-badtitle' => 'Не можна побудувати правильний заголовок з «$1».',
+'img-auth-nologinnWL' => 'Ви не ввійшли в систему, а «$1» не входить у білий список.',
+'img-auth-nofile' => 'Файл «$1» не існує.',
+'img-auth-isdir' => 'Ви пробуєте отримати доступ до каталогу «$1».
+Дозволений тільки доступ до файлів.',
+'img-auth-streaming' => 'Потокова передача «$1».',
+'img-auth-public' => 'Призначенням img_auth.php є добування файлів із закритих вікі.
+Ця вікі налаштована як загальнодоступна.
+Для оптимальної безпеки img_auth.php відключено.',
+'img-auth-noread' => 'Користувач не має доступу до перегляду "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'Неправильний URL: $1',
+'http-invalid-scheme' => 'URL-адреси схеми "$1" не підтримуються',
+'http-request-error' => 'HTTP-запит не вдався через невідому помилку.',
+'http-read-error' => 'Помилка читання HTTP.',
+'http-timed-out' => 'Перевищення часу очікування HTTP-запиту.',
+'http-curl-error' => 'Помилка звертання до URL: $1',
+'http-host-unreachable' => 'Неможливо досягнути вказану URL-адресу.',
+'http-bad-status' => 'Під час HTTP-запиту виникла проблема: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Неможливо досягнути вказану адресу.',
@@ -1584,6 +1701,7 @@ PICT # різні
Можливо, операцію слід провести в інший час, коли сайт менш завантажений.',
'license' => 'Ліцензування:',
+'license-header' => 'Ліцензування',
'nolicense' => 'Відсутнє',
'license-nopreview' => '(Попередній перегляд недоступний)',
'upload_source_url' => ' (вірна, публічно доступна інтернет-адреса)',
@@ -1604,39 +1722,43 @@ PICT # різні
'listfiles_count' => 'Версії',
# File description page
-'filehist' => 'Історія файлу',
-'filehist-help' => 'Клацніть на дату/час, щоб переглянути, як тоді виглядав файл.',
-'filehist-deleteall' => 'вилучити всі',
-'filehist-deleteone' => 'вилучити',
-'filehist-revert' => 'повернути',
-'filehist-current' => 'поточний',
-'filehist-datetime' => 'Дата/час',
-'filehist-thumb' => 'Мініатюра',
-'filehist-thumbtext' => 'Мініатюра для версії від $1',
-'filehist-nothumb' => 'Нема мініатюри',
-'filehist-user' => 'Користувач',
-'filehist-dimensions' => "Розмір об'єкта",
-'filehist-filesize' => 'Розмір файлу',
-'filehist-comment' => 'Коментар',
-'imagelinks' => 'Посилання на файл',
-'linkstoimage' => '{{PLURAL:$1|Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
-'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|сторінки|сторінок}} посилаються на цей файл.
+'file-anchor-link' => 'Файл',
+'filehist' => 'Історія файлу',
+'filehist-help' => 'Клацніть на дату/час, щоб переглянути, як тоді виглядав файл.',
+'filehist-deleteall' => 'вилучити всі',
+'filehist-deleteone' => 'вилучити',
+'filehist-revert' => 'повернути',
+'filehist-current' => 'поточний',
+'filehist-datetime' => 'Дата/час',
+'filehist-thumb' => 'Мініатюра',
+'filehist-thumbtext' => 'Мініатюра для версії від $1',
+'filehist-nothumb' => 'Нема мініатюри',
+'filehist-user' => 'Користувач',
+'filehist-dimensions' => "Розмір об'єкта",
+'filehist-filesize' => 'Розмір файлу',
+'filehist-comment' => 'Коментар',
+'filehist-missing' => 'Файл відсутній',
+'imagelinks' => 'Посилання на файл',
+'linkstoimage' => '{{PLURAL:$1|Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
+'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|сторінки|сторінок}} посилаються на цей файл.
У цьому списку {{PLURAL:$1|показане тільки $1 посилання|показані тільки $1 посилання|показані тільки $1 посилань}} на цей файл.
Також доступний [[Special:WhatLinksHere/$2|повний список]].',
-'nolinkstoimage' => 'Нема сторінок, що посилаються на цей файл.',
-'morelinkstoimage' => 'Переглянути [[Special:WhatLinksHere/$1|інші посилання]] на цей файл.',
-'redirectstofile' => 'На цей файл {{PLURAL:$1|перенаправляється файл|перенаправляються такі файли}}:',
-'duplicatesoffile' => '{{PLURAL:$1|Дублікатом цього файлу є файл|Такі $1 файли є дублікатами цього файлу|Такі $1 файлів є дублікатами цього файлу}}
+'nolinkstoimage' => 'Нема сторінок, що посилаються на цей файл.',
+'morelinkstoimage' => 'Переглянути [[Special:WhatLinksHere/$1|інші посилання]] на цей файл.',
+'redirectstofile' => 'На цей файл {{PLURAL:$1|перенаправляється файл|перенаправляються такі файли}}:',
+'duplicatesoffile' => '{{PLURAL:$1|Дублікатом цього файлу є файл|Такі $1 файли є дублікатами цього файлу|Такі $1 файлів є дублікатами цього файлу}}
([[Special:FileDuplicateSearch/$2|докладніше]]):',
-'sharedupload' => 'Цей файл із $1 і є доступним для інших проектів.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Додаткову інформацію можна знайти на $1.',
-'shareduploadwiki-desc' => 'Опис, зазначений на його $1 у Commons, показаний нижче.',
-'shareduploadwiki-linktext' => 'сторінці опису файлу',
-'noimage' => 'Немає файлу з такою назвою, але ви можете $1.',
-'noimage-linktext' => 'завантажити його',
-'uploadnewversion-linktext' => 'Завантажити нову версію цього файлу',
-'shared-repo-from' => 'з $1', # $1 is the repository name
-'shared-repo' => 'спільного сховища', # used when shared-repo-NAME does not exist
+'sharedupload' => 'Цей файл із $1 і є доступним для інших проектів.',
+'sharedupload-desc-there' => 'Цей файл з $1 і може використовуватися в інших проектах.
+Додаткову інформацію можна знайти на [$2 сторінці опису файлу].',
+'sharedupload-desc-here' => 'Цей файл з $1 і може використовуватися в інших проектах.
+Далі наведена інформація з його [$2 сторінки опису].',
+'filepage-nofile' => 'Не існує файлу з такою назвою.',
+'filepage-nofile-link' => 'Не існує файлу з такою назвою, але ви можете [$1 завантажити його].',
+'uploadnewversion-linktext' => 'Завантажити нову версію цього файлу',
+'shared-repo-from' => 'з $1',
+'shared-repo' => 'спільного сховища',
+'shared-repo-name-wikimediacommons' => 'Вікісховища',
# File reversion
'filerevert' => 'Повернення до старої версії $1',
@@ -1665,6 +1787,7 @@ PICT # різні
** порушення авторських прав
** файл-дублікат',
'filedelete-edit-reasonlist' => 'Редагувати причини вилучень',
+'filedelete-maintenance' => 'Вилучення та відновлення файлів відімкнене на час технічних робіт.',
# MIME search
'mimesearch' => 'Пошук по MIME',
@@ -1685,7 +1808,7 @@ PICT # різні
# Random page
'randompage' => 'Випадкова стаття',
-'randompage-nopages' => 'У просторі назв «$1» нема сторінок.',
+'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|просторі назв|просторах назв}} $1.',
# Random redirect
'randomredirect' => 'Випадкове перенаправлення',
@@ -1697,6 +1820,7 @@ PICT # різні
'statistics-header-edits' => 'Статистика редагувань',
'statistics-header-views' => 'Статистика переглядів',
'statistics-header-users' => 'Статистика користувачів',
+'statistics-header-hooks' => 'Інша статистика',
'statistics-articles' => 'Статей',
'statistics-pages' => 'Сторінок',
'statistics-pages-desc' => 'Усі сторінки у вікі, включаючи сторінки обговорень, перенаправлення тощо.',
@@ -1724,8 +1848,8 @@ PICT # різні
'brokenredirects' => 'Розірвані перенаправлення',
'brokenredirectstext' => 'Такі перенаправлення вказують на неіснуючі сторінки:',
-'brokenredirects-edit' => '(редагувати)',
-'brokenredirects-delete' => '(вилучити)',
+'brokenredirects-edit' => 'редагувати',
+'brokenredirects-delete' => 'вилучити',
'withoutinterwiki' => 'Сторінки без міжмовних посилань',
'withoutinterwiki-summary' => 'Такі сторінки не мають інтервікі-посилань:',
@@ -1832,16 +1956,17 @@ PICT # різні
# Special:Categories
'categories' => 'Категорії',
-'categoriespagetext' => 'Наступні категорії містять сторінки або медіа-файли.
-Тут не показані [[Special:UnusedCategories|Категорії, що не використовуються]].
+'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
+Тут не показані [[Special:UnusedCategories|категорії, що не використовуються]].
Див. також [[Special:WantedCategories|список необхідних категорій]].',
'categoriesfrom' => 'Показати категорії, що починаються з:',
'special-categories-sort-count' => 'упорядкувати за кількістю',
'special-categories-sort-abc' => 'упорядкувати за алфавітом',
# Special:DeletedContributions
-'deletedcontributions' => 'Вилучений внесок користувача',
-'deletedcontributions-title' => 'Вилучений внесок користувача',
+'deletedcontributions' => 'Вилучений внесок користувача',
+'deletedcontributions-title' => 'Вилучений внесок користувача',
+'sp-deletedcontributions-contribs' => 'внесок',
# Special:LinkSearch
'linksearch' => 'Зовнішні посилання',
@@ -1856,6 +1981,16 @@ PICT # різні
'listusersfrom' => 'Показати користувачів, починаючи з:',
'listusers-submit' => 'Показати',
'listusers-noresult' => 'Не знайдено користувачів.',
+'listusers-blocked' => '({{GENDER:$1|заблокований|заблокована|заблокований}})',
+
+# Special:ActiveUsers
+'activeusers' => 'Список активних користувачів',
+'activeusers-intro' => 'Це список користувачів, які здійснювали які-небудь дії за {{PLURAL:$1|останній $1 день|останні $1 дні|останні $1 днів}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|нове редагування|нові редагування|нових редагувань}} за {{PLURAL:$3|останній день|останні $3 дні|останні $3 днів}}',
+'activeusers-from' => 'Показувати користувачів, починаючи з:',
+'activeusers-hidebots' => 'Приховати ботів',
+'activeusers-hidesysops' => 'Приховати адміністраторів',
+'activeusers-noresult' => 'Не знайдено користувачів.',
# Special:Log/newusers
'newuserlogpage' => 'Журнал нових користувачів',
@@ -1866,17 +2001,23 @@ PICT # різні
'newuserlog-autocreate-entry' => 'Обліковий запис створений автоматично',
# Special:ListGroupRights
-'listgrouprights' => 'Права груп користувачів',
-'listgrouprights-summary' => 'Нижче наведений список груп користувачів у цій вікі і права для кожної групи.
+'listgrouprights' => 'Права груп користувачів',
+'listgrouprights-summary' => 'Нижче наведений список груп користувачів у цій вікі і права для кожної групи.
Додаткову інформацію про права користувачів можна знайти [[{{MediaWiki:Listgrouprights-helppage}}|тут]].',
-'listgrouprights-group' => 'Група',
-'listgrouprights-rights' => 'Права',
-'listgrouprights-helppage' => 'Help:Права користувачів',
-'listgrouprights-members' => '(список членів)',
-'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|групу|групи}}: $1',
-'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|групи|груп}}: $1',
-'listgrouprights-addgroup-all' => 'може додавати до всіх груп',
-'listgrouprights-removegroup-all' => 'може виключати зі всіх груп',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Надані права</span>
+* <span class="listgrouprights-revoked">Скасовані права</span>',
+'listgrouprights-group' => 'Група',
+'listgrouprights-rights' => 'Права',
+'listgrouprights-helppage' => 'Help:Права користувачів',
+'listgrouprights-members' => '(список членів)',
+'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|групу|групи}}: $1',
+'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|групи|груп}}: $1',
+'listgrouprights-addgroup-all' => 'може додавати до всіх груп',
+'listgrouprights-removegroup-all' => 'може виключати зі всіх груп',
+'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|групу|групи}} до свого облікового запису: $1',
+'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|групу|групи}} зі свого облікового запису: $1',
+'listgrouprights-addgroup-self-all' => 'Може додавати всі групи до свого облікового запису',
+'listgrouprights-removegroup-self-all' => 'може вилучати всі групи зі свого облікового запису',
# E-mail user
'mailnologin' => 'Відсутня адреса для відправки',
@@ -1948,7 +2089,7 @@ PICT # різні
'enotif_lastvisited' => 'Див. $1 для перегляду всіх змін, що відбулися після вашого останнього перегляду.',
'enotif_lastdiff' => 'Див. $1 для ознайомлення з цією зміною.',
'enotif_anon_editor' => 'анонімний користувач $1',
-'enotif_body' => '$WATCHINGUSERNAME,
+'enotif_body' => 'Шановний/на $WATCHINGUSERNAME,
$PAGEEDITDATE сторінка проекту «{{SITENAME}}» $PAGETITLE була $CHANGEDORCREATED користувачем $PAGEEDITOR, див. $PAGETITLE_URL, щоб переглянути поточну версію.
@@ -1960,16 +2101,20 @@ $NEWPAGE
ел. пошта: $PAGEEDITOR_EMAIL
вікі: $PAGEEDITOR_WIKI
-Не буде подальшого сповіщення в разі нових змін, якщо Ви не відвідуєте цю сторінку. Ви могли також повторно встановити прапори сповіщення для всіх сторінок у вашому списку спостереження.
+Якщо Ви не відвідуєте цю сторінку, не буде подальшого сповіщення в разі нових змін.
+Ви можете також змінити параметри сповіщення для всіх сторінок у вашому списку спостереження.
Система сповіщення {{grammar:genitive|{{SITENAME}}}}
--
Змінити налаштування вашого списку спостереження можна на
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Для вилучення сторінки з вашого списку спостереження відвідайте
+$UNWATCHURL
Зворотний зв\'язок та допомога:
-{{fullurl:{{ns:help}}:Зміст}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Вилучити сторінку',
@@ -1980,10 +2125,11 @@ $NEWPAGE
'exblank' => 'стаття була порожньою',
'delete-confirm' => 'Вилучення «$1»',
'delete-legend' => 'Вилучення',
-'historywarning' => 'Попередження: сторінка, яку ви збираєтеся вилучити, має історію редагувань:',
+'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|версії|версій}}:",
'confirmdeletetext' => 'Ви збираєтесь вилучити сторінку і всі її журнали редагувань з бази даних.
Будь ласка, підтвердіть, що ви бажаєте зробити це, повністю розумієте наслідки і що робите це у відповідності з [[{{MediaWiki:Policy-url}}|правилами]].',
'actioncomplete' => 'Дію виконано',
+'actionfailed' => 'Виконати дію не вдалося',
'deletedtext' => '"<nowiki>$1</nowiki>" було вилучено.
Див. $2 для перегляду списку останніх вилучень.',
'deletedarticle' => 'вилучив «[[$1]]»',
@@ -2007,18 +2153,19 @@ $NEWPAGE
дійте обережно.',
# Rollback
-'rollback' => 'Відкинути редагування',
-'rollback_short' => 'Відкинути',
-'rollbacklink' => 'відкинути',
-'rollbackfailed' => 'Відкинути зміни не вдалося',
-'cantrollback' => 'Неможливо відкинути редагування, останній, хто редагував, є єдиним автором цієї сторінки.',
-'alreadyrolled' => 'Неможливо відкинути останні редагування [[:$1]], зроблені [[User:$2|$2]] ([[User talk:$2|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); хтось інший уже змінив чи відкинув редагування цієї статті.
+'rollback' => 'Відкинути редагування',
+'rollback_short' => 'Відкинути',
+'rollbacklink' => 'відкинути',
+'rollbackfailed' => 'Відкинути зміни не вдалося',
+'cantrollback' => 'Неможливо відкинути редагування, останній, хто редагував, є єдиним автором цієї сторінки.',
+'alreadyrolled' => 'Неможливо відкинути останні редагування [[:$1]], зроблені [[User:$2|$2]] ([[User talk:$2|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); хтось інший уже змінив чи відкинув редагування цієї статті.
Останні редагування зробив [[User:$3|$3]] ([[User talk:$3|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Пояснення редагування було: «''$1''».", # only shown if there is an edit comment
-'revertpage' => 'Редагування користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) відкинуті до версії користувача [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Відкинуті редагування користувача $1; повернення до версії користувача $2.',
-'sessionfailure' => 'Здається, виникли проблеми з поточним сеансом роботи;
+'editcomment' => "Пояснення редагування було: «''$1''».",
+'revertpage' => 'Редагування користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) відкинуті до версії користувача [[User:$1|$1]]',
+'revertpage-nouser' => "Відкинуто редагування (ім'я користувача приховано) до зробленого [[User:$1|$1]]",
+'rollback-success' => 'Відкинуті редагування користувача $1; повернення до версії користувача $2.',
+'sessionfailure' => 'Здається, виникли проблеми з поточним сеансом роботи;
ця дія була скасована з метою попередити «захоплення сеансу».
Будь ласка, натисніть кнопку «Назад» і перезавантажте сторінку, з якої ви прийшли.',
@@ -2037,7 +2184,7 @@ $NEWPAGE
'protectexpiry' => 'Закінчується:',
'protect_expiry_invalid' => 'Неправильний час закінчення захисту.',
'protect_expiry_old' => 'Час закінчення — в минулому.',
-'protect-unchain' => 'Розблокувати перейменування сторінки',
+'protect-unchain-permissions' => 'Відкрити доступ до додаткових параметрів захисту',
'protect-text' => "Тут ви можете переглянути та змінити рівень захисту сторінки '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Ви не можете змінювати рівень захисту сторінки, доки ваш обліковий запис заблокований.
Поточні установки для сторінки '''$1''':",
@@ -2066,7 +2213,7 @@ $NEWPAGE
** непродуктивна війна редагувань
** популярна сторінка',
'protect-edit-reasonlist' => 'Причини захисту від редагувань',
-'protect-expiry-options' => '1 година:1 hour,1 день:1 day,1 тиждень:1 week,2 тижні:2 weeks,1 місяць:1 month,3 місяці:3 months,6 місяців:6 months,1 рік:1 year,назавжди:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 година:1 hour,1 день:1 day,1 тиждень:1 week,2 тижні:2 weeks,1 місяць:1 month,3 місяці:3 months,6 місяців:6 months,1 рік:1 year,назавжди:infinite',
'restriction-type' => 'Права:',
'restriction-level' => 'Рівень доступу:',
'minimum-size' => 'Мінімальний розмір',
@@ -2104,6 +2251,7 @@ $NEWPAGE
'undelete-nodiff' => 'Не знайдена попередня версія.',
'undeletebtn' => 'Відновити',
'undeletelink' => 'переглянути/відновити',
+'undeleteviewlink' => 'переглянути',
'undeletereset' => 'Очистити',
'undeleteinvert' => 'Інвертувати виділення',
'undeletecomment' => 'Причина:',
@@ -2141,19 +2289,23 @@ $1',
'contributions-title' => 'Внесок користувача $1',
'mycontris' => 'Мій внесок',
'contribsub2' => 'Внесок $1 ($2)',
-'nocontribs' => 'Редагувань, що задовольняють заданим умовам не знайдено.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Редагувань, що задовольняють заданим умовам не знайдено.',
'uctop' => ' (остання)',
'month' => 'Від місяця (і раніше):',
'year' => 'Від року (і раніше):',
-'sp-contributions-newbies' => 'Показати лише внесок з нових облікових записів',
-'sp-contributions-newbies-sub' => 'Внесок новачків',
-'sp-contributions-newbies-title' => 'Внесок з нових облікових записів',
-'sp-contributions-blocklog' => 'протокол блокувань',
-'sp-contributions-logs' => 'журнали',
-'sp-contributions-search' => 'Пошук внеску',
-'sp-contributions-username' => "IP-адреса або ім'я користувача:",
-'sp-contributions-submit' => 'Знайти',
+'sp-contributions-newbies' => 'Показати лише внесок з нових облікових записів',
+'sp-contributions-newbies-sub' => 'Внесок новачків',
+'sp-contributions-newbies-title' => 'Внесок з нових облікових записів',
+'sp-contributions-blocklog' => 'протокол блокувань',
+'sp-contributions-deleted' => 'вилучені редагування користувача',
+'sp-contributions-logs' => 'журнали',
+'sp-contributions-talk' => 'обговорення',
+'sp-contributions-userrights' => 'управління правами користувача',
+'sp-contributions-blocked-notice' => 'Цей користувач наразі заблокований. Останній запис у журналі блокувань такий:',
+'sp-contributions-search' => 'Пошук внеску',
+'sp-contributions-username' => "IP-адреса або ім'я користувача:",
+'sp-contributions-submit' => 'Знайти',
# What links here
'whatlinkshere' => 'Посилання сюди',
@@ -2176,6 +2328,7 @@ $1',
# Block/unblock
'blockip' => 'Заблокувати користувача',
+'blockip-title' => 'Блокування користувача',
'blockip-legend' => 'Блокування користувача',
'blockiptext' => 'Наступна форма дозволяє заблокувати можливість редагування із зазначеної IP-адреси або окремого коирстувача.
Робити це можна тільки для попередження [[{{ns:project}}:Вандалізм|вандалізму]] і тільки у відповідності до [[{{MediaWiki:Policy-url}}|правил {{grammar:genitive|{{SITENAME}}}}]].
@@ -2199,7 +2352,7 @@ $1',
'ipbenableautoblock' => 'Автоматично блокувати IP-адреси, які використовуються цим користувачем та будь-які наступні адреси, з яких він буде редагувати',
'ipbsubmit' => 'Заблокувати доступ цьому користувачу',
'ipbother' => 'Інший термін',
-'ipboptions' => '2 години:2 hours,1 день:1 day,3 дні:3 days,1 тиждень:1 week,2 тижні:2 weeks,1 місяць:1 month,3 місяці:3 months,6 місяців:6 months,1 рік:1 year,назавжди:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 години:2 hours,1 день:1 day,3 дні:3 days,1 тиждень:1 week,2 тижні:2 weeks,1 місяць:1 month,3 місяці:3 months,6 місяців:6 months,1 рік:1 year,назавжди:infinite',
'ipbotheroption' => 'інший термін',
'ipbotherreason' => 'Інша/додаткова причина:',
'ipbhidename' => "Приховати ім'я користувача у редагуваннях ті списках",
@@ -2228,9 +2381,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 тимчасові блокування',
'ipblocklist-sh-addressblocks' => '$1 блокування окремих IP-адрес',
'ipblocklist-submit' => 'Пошук',
+'ipblocklist-localblock' => 'Локальне блокування',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
'blocklistline' => '$1, $2 заблокував $3 ($4)',
'infiniteblock' => 'блокування на невизначений термін',
-'expiringblock' => 'блокування закінчиться $1',
+'expiringblock' => 'закінчиться $1 $2',
'anononlyblock' => 'тільки анонімів',
'noautoblockblock' => 'автоблокування вимкнене',
'createaccountblock' => 'Створення облікових записів заблоковане',
@@ -2244,7 +2399,8 @@ $1',
'contribslink' => 'внесок',
'autoblocker' => 'Доступ заблоковано автоматично, тому що ви використовуєте ту саму адресу, що й "[[User:$1|$1]]". Причина блокування $1: "$2".',
'blocklogpage' => 'Журнал блокувань',
-'blocklog-fulllog' => 'Повний журнал блокувань',
+'blocklog-showlog' => 'Цього користувача вже заблоковано. Далі наведено журнал блокувань:',
+'blocklog-showsuppresslog' => 'Цього користувача вже заблоковано і приховано. Далі наведено журнал приховань:',
'blocklogentry' => 'заблокував [[$1]] на термін $2 $3',
'reblock-logentry' => 'змінив налаштування блокування для [[$1]] з терміном до $2 $3',
'blocklogtext' => 'Журнал блокування й розблокування користувачів.
@@ -2265,10 +2421,12 @@ IP-адреси, що блокуються автоматично тут не в
'ipb_already_blocked' => '«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.',
'ipb-needreblock' => '== Уже заблокований ==
Користувач $1 вже заблокований. Хочете змінити параметри блокування?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
'ipb_cant_unblock' => 'Помилка: блокування з ID $1 не знайдене.
Можливо, користувач уже розблокований.',
'ipb_blocked_as_range' => 'Помилка: IP-адреса $1 була заблокована не напряму і не може бути розблокована. Однак, вона належить до заблокованого діапазону $2, який можна розблокувати.',
'ip_range_invalid' => 'Неприпустимий діапазон IP-адрес.',
+'ip_range_toolarge' => 'Блокування діапазонів, більших за /$1, не дозволені.',
'blockme' => 'Заблокуй мене',
'proxyblocker' => 'Блокування проксі',
'proxyblocker-disabled' => 'Функція відключена.',
@@ -2278,6 +2436,7 @@ IP-адреси, що блокуються автоматично тут не в
'sorbsreason' => 'Ваша IP-адреса числиться як відкритий проксі в DNSBL.',
'sorbs_create_account_reason' => 'Ваша IP-адреса числиться як відкритий проксі в DNSBL. Ви не можете створити обліковий запис.',
'cant-block-while-blocked' => 'Ви не можете блокувати інших користувачів, поки ви самі заблоковані.',
+'cant-see-hidden-user' => 'Користувача, якого ви хочете заблокувати, вже заблоковано та приховано. Оскільки у вас немає прав щодо приховання користувачів, ви не можете переглянути або змінити дане блокування.',
# Developer tools
'lockdb' => 'Заблокувати базу даних (режим "тільки для читання")',
@@ -2320,6 +2479,7 @@ IP-адреси, що блокуються автоматично тут не в
У цих випадках ви будете змушені перейменувати чи об'єднати сторінки вручну в разі необхідності",
'movearticle' => 'Перейменувати сторінку',
+'moveuserpage-warning' => "'''Увага:''' Ви збираєтеся перейменувати сторінку користувача. Будь ласка, зверніть увагу, що буде перейменовано тільки сторінку, але користувача '''не''' буде перейменовано.",
'movenologin' => 'Ви не ввійшли в систему',
'movenologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]], щоб перейменувати сторінку.',
'movenotallowed' => 'У вас нема дозволу перейменовувати сторінки.',
@@ -2330,7 +2490,7 @@ IP-адреси, що блокуються автоматично тут не в
'move-watch' => 'Спостерігати за цією сторінкою',
'movepagebtn' => 'Перейменувати сторінку',
'pagemovedsub' => 'Сторінка перейменована',
-'movepage-moved' => "'''Сторінка «$1» перейменована на «$2»'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''Сторінка «$1» перейменована на «$2»'''",
'movepage-moved-redirect' => 'Створено перенаправлення.',
'movepage-moved-noredirect' => 'Створення перенаправлення було заборонене.',
'articleexists' => 'Сторінка з такою назвою вже існує або зазначена вами назва недопустима.
@@ -2372,6 +2532,14 @@ IP-адреси, що блокуються автоматично тут не в
'imageinvalidfilename' => 'Назва цільового файлу неправильна',
'fix-double-redirects' => 'Виправити всі перенаправлення на попередню назву',
'move-leave-redirect' => 'Залишити перенаправлення',
+'protectedpagemovewarning' => "'''Попередження:''' Ця сторінка захищена так, що її можуть перейменовувати тільки адміністратори.
+Останній запис журналу наведений нижче для довідки:",
+'semiprotectedpagemovewarning' => "'''Зауваження:''' Ця сторінка захищена так, що перейменовувати її можуть тільки зареєстровані користувачі.
+Останній запис журналу наведений нижче для довідки:",
+'move-over-sharedrepo' => '== Файл існує ==
+У спільному сховищі існує [[:$1]]. Перейменування файлу на цю назву призведе до перекриття файлу зі спільного сховища.',
+'file-exists-sharedrepo' => 'Обрана назва файлу вже використовується у спільному сховищі.
+Будь ласка, оберіть іншу назву.',
# Export
'export' => 'Експорт статей',
@@ -2393,15 +2561,21 @@ IP-адреси, що блокуються автоматично тут не в
'export-pagelinks' => "Включити пов'язані сторінки з глибиною:",
# Namespace 8 related
-'allmessages' => 'Системні повідомлення',
-'allmessagesname' => 'Назва',
-'allmessagesdefault' => 'Стандартний текст',
-'allmessagescurrent' => 'Поточний текст',
-'allmessagestext' => 'Це список усіх системних повідомлень, які доступні в просторі назв «MediaWiki».
+'allmessages' => 'Системні повідомлення',
+'allmessagesname' => 'Назва',
+'allmessagesdefault' => 'Стандартний текст',
+'allmessagescurrent' => 'Поточний текст',
+'allmessagestext' => 'Це список усіх системних повідомлень, які доступні в просторі назв «MediaWiki».
Будь ласка, відвідайте [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] і [http://translatewiki.net translatewiki.net], якщо ви хочете зробити внесок до спільної локалізації MediaWiki.',
-'allmessagesnotsupportedDB' => "Ця сторінка не може використовуватися, оскільки вимкнена опція '''\$wgUseDatabaseMessages'''.",
-'allmessagesfilter' => 'Фільтр назв повідомлень:',
-'allmessagesmodified' => 'Показати тільки змінені',
+'allmessagesnotsupportedDB' => "Ця сторінка не може використовуватися, оскільки вимкнена опція '''\$wgUseDatabaseMessages'''.",
+'allmessages-filter-legend' => 'Фільтр',
+'allmessages-filter' => 'Фільтр за внесеними змінами:',
+'allmessages-filter-unmodified' => 'Незмінені',
+'allmessages-filter-all' => 'Всі',
+'allmessages-filter-modified' => 'Змінені',
+'allmessages-prefix' => 'Фільтр за префіксом:',
+'allmessages-language' => 'Мова:',
+'allmessages-filter-submit' => 'Виконати',
# Thumbnails
'thumbnail-more' => 'Збільшити',
@@ -2411,6 +2585,9 @@ IP-адреси, що блокуються автоматично тут не в
'djvu_no_xml' => 'Неможливо отримати XML для DjVu',
'thumbnail_invalid_params' => 'Помилковий параметр мініатюри',
'thumbnail_dest_directory' => 'Неможливо створити цільову директорію',
+'thumbnail_image-type' => 'Тип зображення не підтримується',
+'thumbnail_gd-library' => 'Неповна конфігурація бібліотеки GD, відсутня функція $1',
+'thumbnail_image-missing' => 'Очевидно, відсутній файл $1',
# Special:Import
'import' => 'Імпорт статей',
@@ -2474,6 +2651,7 @@ IP-адреси, що блокуються автоматично тут не в
'tooltip-ca-viewsource' => 'Ця сторінка захищена від змін. Ви можете переглянути і скопіювати її вихідний текст.',
'tooltip-ca-history' => 'Журнал змін сторінки',
'tooltip-ca-protect' => 'Захистити сторінку від змін',
+'tooltip-ca-unprotect' => 'Зняти захист з цієї сторінки',
'tooltip-ca-delete' => 'Вилучити цю сторінку',
'tooltip-ca-undelete' => 'Відновити зміни сторінки, зроблені до її вилучення',
'tooltip-ca-move' => 'Перейменувати цю сторінку',
@@ -2484,6 +2662,7 @@ IP-адреси, що блокуються автоматично тут не в
'tooltip-search-fulltext' => 'Знайти сторінки, що містять зазначений текст',
'tooltip-p-logo' => 'Головна сторінка',
'tooltip-n-mainpage' => 'Перейти на Головну сторінку',
+'tooltip-n-mainpage-description' => 'Перейти на головну сторінку',
'tooltip-n-portal' => 'Про проект, про те, що ви можете зробити, де що знаходиться',
'tooltip-n-currentevents' => 'Список поточних подій',
'tooltip-n-recentchanges' => 'Список останніх змін',
@@ -2548,10 +2727,12 @@ The wiki server can't provide data in a format your client can read.",
# Attribution
'anonymous' => '{{PLURAL:$1|Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
'siteuser' => 'Користувач {{grammar:genitive|{{SITENAME}}}} $1',
-'lastmodifiedatby' => 'Остання зміна $2, $1 користувачем $3.', # $1 date, $2 time, $3 user
+'anonuser' => 'анонімний користувач {{grammar:genitive|{{SITENAME}}}} $1',
+'lastmodifiedatby' => 'Остання зміна $2, $1 користувачем $3.',
'othercontribs' => 'Базується на праці $1.',
'others' => 'інші',
'siteusers' => '{{PLURAL:$2|Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Подяки',
'nocredits' => 'Відсутній список користувачів для цієї статті',
@@ -2581,6 +2762,7 @@ The wiki server can't provide data in a format your client can read.",
'skinname-chick' => 'Курча',
'skinname-simple' => 'Просте',
'skinname-modern' => 'Сучасне',
+'skinname-vector' => 'Векторне',
# Math options
'mw_math_png' => 'Завжди генерувати PNG',
@@ -2590,11 +2772,22 @@ The wiki server can't provide data in a format your client can read.",
'mw_math_modern' => 'Рекомендовано для сучасних браузерів',
'mw_math_mathml' => 'Якщо можливо - MathML (експериментальна опція)',
+# Math errors
+'math_failure' => 'Неможливо розібрати вираз',
+'math_unknown_error' => 'невідома помилка',
+'math_unknown_function' => 'невідома функція',
+'math_lexing_error' => 'лексична помилка',
+'math_syntax_error' => 'синтаксична помилка',
+'math_image_error' => 'Перетворення в PNG відбулося з помилкою; перевірте правильність встановлення latex, dvips, gs та convert',
+'math_bad_tmpdir' => 'Не вдається створити чи записати в тимчасовий каталог математики',
+'math_bad_output' => 'Не вдається створити чи записати в вихідний каталог математики',
+'math_notexvc' => 'Не знайдено програму texvc; Див. math/README — довідку про налаштування.',
+
# Patrolling
'markaspatrolleddiff' => 'Позначити як перевірену',
'markaspatrolledtext' => 'Позначити цю сторінку як перевірену',
'markedaspatrolled' => 'Позначена як перевірена',
-'markedaspatrolledtext' => 'Вибрана версія позначена як перевірена.',
+'markedaspatrolledtext' => 'Обрана версія [[:$1]] була позначена як відпатрульована.',
'rcpatroldisabled' => 'Патрулювання останніх змін заборонене',
'rcpatroldisabledtext' => 'Можливість патрулювання останніх змін зараз вимкнена.',
'markedaspatrollederror' => 'Неможливо позначити як перевірену',
@@ -2624,12 +2817,9 @@ $1',
'previousdiff' => '← Попереднє редагування',
'nextdiff' => 'Наступне редагування →',
-# Visual comparison
-'visual-comparison' => 'Наочне порівняння',
-
# Media information
'mediawarning' => "'''Увага''': цей файл може містити шкідливий програмний код, виконання якого може бути небезпечним для вашої системи.",
-'imagemaxsize' => 'Обмежити розмір зображень на сторінках опису зображень до:',
+'imagemaxsize' => "Обмеження розміру зображення:<br />''(для сторінок опису файлів)''",
'thumbsize' => 'Розмір зменшеної версії зображення:',
'widthheight' => '$1 × $2',
'widthheightpage' => '$1 × $2, {{PLURAL:$3|$3 сторінка|$3 сторінки|$3 сторінок}}',
@@ -2639,6 +2829,8 @@ $1',
'svg-long-desc' => '(SVG-файл, номінально $1 × $2 пікселів, розмір файлу: $3)',
'show-big-image' => 'Повна роздільність',
'show-big-image-thumb' => '<small>Розмір при попередньому перегляді: $1 × $2 пікселів</small>',
+'file-info-gif-looped' => 'кільцеве',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
# Special:NewFiles
'newimages' => 'Галерея нових файлів',
@@ -2670,7 +2862,7 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2798,14 +2990,14 @@ $1',
'exif-unknowndate' => 'Невідома дата',
-'exif-orientation-1' => 'Нормальна', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Відображено по горизонталі', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Повернуто на 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Відображено по вертикалі', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Повернуто на 90° проти годинникової стрілки й відображено по вертикалі', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Повернуто на 90° за годинниковою стрілкою', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Повернуто на 90° за годинниковою стрілкою й відображено по вертикалі', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Повернуто на 90° проти годинникової стрілки', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Нормальна',
+'exif-orientation-2' => 'Відображено по горизонталі',
+'exif-orientation-3' => 'Повернуто на 180°',
+'exif-orientation-4' => 'Відображено по вертикалі',
+'exif-orientation-5' => 'Повернуто на 90° проти годинникової стрілки й відображено по вертикалі',
+'exif-orientation-6' => 'Повернуто на 90° за годинниковою стрілкою',
+'exif-orientation-7' => 'Повернуто на 90° за годинниковою стрілкою й відображено по вертикалі',
+'exif-orientation-8' => 'Повернуто на 90° проти годинникової стрілки',
'exif-planarconfiguration-1' => 'формат «chunky»',
'exif-planarconfiguration-2' => 'формат «planar»',
@@ -2932,7 +3124,7 @@ $1',
'exif-gpsmeasuremode-2' => 'Вимірювання 2-х координат',
'exif-gpsmeasuremode-3' => 'Вимірювання 3-х координат',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'км/год',
'exif-gpsspeed-m' => 'миль/год',
'exif-gpsspeed-n' => 'вузлів',
@@ -2951,6 +3143,7 @@ $1',
'watchlistall2' => 'всі',
'namespacesall' => 'всі',
'monthsall' => 'всі',
+'limitall' => 'усі',
# E-mail address confirmation
'confirmemail' => 'Підтвердження адреси ел. пошти',
@@ -3082,7 +3275,7 @@ $1',
'duplicate-defaultsort' => 'Увага. Ключ сортування «$2» перекриває попередній ключ сортування «$1».',
# Special:Version
-'version' => 'Версія MediaWiki', # Not used as normal message but as header for the special page itself
+'version' => 'Версія MediaWiki',
'version-extensions' => 'Установлені розширення',
'version-specialpages' => 'Спеціальні сторінки',
'version-parserhooks' => 'Перехоплювачі синтаксичного аналізатора',
@@ -3096,7 +3289,7 @@ $1',
'version-skin-extension-functions' => 'Функції розширень тем оформлення',
'version-hook-name' => "Ім'я перехоплювача",
'version-hook-subscribedby' => 'Підписаний на',
-'version-version' => 'Версія',
+'version-version' => '(Версія $1)',
'version-license' => 'Ліцензія',
'version-software' => 'Установлене програмне забезпечення',
'version-software-product' => 'Продукт',
@@ -3176,4 +3369,15 @@ $1',
'dberr-outofdate' => 'Майте на увазі, що його індекси можуть бути застарілими.',
'dberr-cachederror' => 'Нижче наведена закешована версія запитаної сторінки, можливо, вона не показує останні зміни.',
+# HTML forms
+'htmlform-invalid-input' => 'Частина введених вами даних викликала проблеми',
+'htmlform-select-badoption' => 'Зазначене вами значення є недопустимим.',
+'htmlform-int-invalid' => 'Зазначене вами значення не є цілим числом.',
+'htmlform-float-invalid' => 'Вказане вами значення не є числом.',
+'htmlform-int-toolow' => 'Вказане вами значення нижче за мінімальне — $1',
+'htmlform-int-toohigh' => 'Зазначене вами значення вище за максимальне — $1',
+'htmlform-submit' => 'Відправити',
+'htmlform-reset' => 'Відкотити зміни',
+'htmlform-selectorother-other' => 'Інше',
+
);
diff --git a/languages/messages/MessagesUr.php b/languages/messages/MessagesUr.php
index ef9f3206..7b43058c 100644
--- a/languages/messages/MessagesUr.php
+++ b/languages/messages/MessagesUr.php
@@ -25,24 +25,23 @@ $defaultUserOptionOverrides = array(
);
$namespaceNames = array(
- NS_MEDIA => 'زریعہ',
- NS_SPECIAL => 'خاص',
- NS_MAIN => '',
- NS_TALK => 'تبادلۂ_خیال',
- NS_USER => 'صارف',
- NS_USER_TALK => 'تبادلۂ_خیال_صارف',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'تبادلۂ_خیال_$1',
- NS_FILE => 'تصویر',
- NS_FILE_TALK => 'تبادلۂ_خیال_تصویر',
- NS_MEDIAWIKI => 'میڈیاوکی',
- NS_MEDIAWIKI_TALK => 'تبادلۂ_خیال_میڈیاوکی',
- NS_TEMPLATE => 'سانچہ',
- NS_TEMPLATE_TALK => 'تبادلۂ_خیال_سانچہ',
- NS_HELP => 'معاونت',
- NS_HELP_TALK => 'تبادلۂ_خیال_معاونت',
- NS_CATEGORY => 'زمرہ',
- NS_CATEGORY_TALK => 'تبادلۂ_خیال_زمرہ',
+ NS_MEDIA => 'زریعہ',
+ NS_SPECIAL => 'خاص',
+ NS_MAIN => '',
+ NS_TALK => 'تبادلۂ_خیال',
+ NS_USER => 'صارف',
+ NS_USER_TALK => 'تبادلۂ_خیال_صارف',
+ NS_PROJECT_TALK => 'تبادلۂ_خیال_$1',
+ NS_FILE => 'تصویر',
+ NS_FILE_TALK => 'تبادلۂ_خیال_تصویر',
+ NS_MEDIAWIKI => 'میڈیاوکی',
+ NS_MEDIAWIKI_TALK => 'تبادلۂ_خیال_میڈیاوکی',
+ NS_TEMPLATE => 'سانچہ',
+ NS_TEMPLATE_TALK => 'تبادلۂ_خیال_سانچہ',
+ NS_HELP => 'معاونت',
+ NS_HELP_TALK => 'تبادلۂ_خیال_معاونت',
+ NS_CATEGORY => 'زمرہ',
+ NS_CATEGORY_TALK => 'تبادلۂ_خیال_زمرہ',
);
$messages = array(
@@ -77,6 +76,7 @@ $messages = array(
'tog-enotifminoredits' => 'صفحات میں معمولی ترمیمات کے بارے میں بھی مجھے برقی ڈاک بھیجو',
'tog-enotifrevealaddr' => 'خبرداری برقی خطوط میں میرا برقی ڈاک پتہ ظاہر کرو',
'tog-shownumberswatching' => 'دیکھنے والے صارفین کی تعداد دکھاؤ',
+'tog-oldsig' => 'موجودہ دستخط کی نمائش:',
'tog-fancysig' => '(سادہ دستخط بلا خودکار ربط)',
'tog-externaleditor' => 'ہمیشہ بیرونی تدوین کار استعمال کرو (صرف ماہرین کیلئے، اِس کیلئے شمارندہ پر خاص ترتیبات درکار ہوتی ہیں)',
'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer)',
@@ -97,6 +97,10 @@ $messages = array(
'underline-never' => 'کبھی نہیں',
'underline-default' => 'متصفح کا طے شدہ',
+# Font style option in Special:Preferences
+'editfont-style' => 'خانۂ تدوین کا اندازِ تحریر:',
+'editfont-default' => 'متصفح کا طے شدہ',
+
# Dates
'sunday' => 'اتوار',
'monday' => 'پير',
@@ -156,17 +160,25 @@ $messages = array(
'category-media-header' => 'زمرہ "$1" میں وسیط',
'category-empty' => '‘‘اِس زمرہ میں ابھی کوئی صفحات یا وسیط موجود نہیں.’’',
'hidden-categories' => '{{PLURAL:$1|پوشیدہ زمرہ|پوشیدہ زمرہ جات}}',
-'hidden-category-category' => 'پوشیدہ زمرہ جات', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'پوشیدہ زمرہ جات',
'category-subcat-count' => '{{PLURAL:$2|اِس زمرہ میں صرف درج ذیل ذیلی زمرہ ہے.|اِس زمرہ میں درج ذیل {{PLURAL:$1|ذیلی زمرہ|$1 ذیلی زمرہ جات}}, کل $2 میں سے.}}',
'category-subcat-count-limited' => 'اِس زمرہ میں درج ذیل {{PLURAL:$1|ذیلی زمرہ ہے|$1 ذیلی زمرہ جات ہیں}}.',
'listingcontinuesabbrev' => '۔جاری',
'mainpagetext' => "'''میڈیاوکی کو کامیابی سے چالو کردیا گیا ہے۔.'''",
-'about' => 'تعارف',
-'article' => 'صفحۂ مشمول',
-'newwindow' => '(نـئی ونـڈو میـں)',
-'cancel' => 'منسوخ',
+'about' => 'تعارف',
+'article' => 'صفحۂ مشمول',
+'newwindow' => '(نـئی ونـڈو میـں)',
+'cancel' => 'منسوخ',
+'moredotdotdot' => 'اور...',
+'mypage' => 'میرا صفحہ',
+'mytalk' => 'میری گفتگو',
+'anontalk' => 'اس IP کیلیے بات چیت',
+'navigation' => 'رہنمائی',
+'and' => '&#32;اور',
+
+# Cologne Blue skin
'qbfind' => 'ڈھونڈ',
'qbbrowse' => 'تصفّح',
'qbedit' => 'ترمیم',
@@ -174,12 +186,30 @@ $messages = array(
'qbpageinfo' => 'مفہوم',
'qbmyoptions' => 'میرے صفحات',
'qbspecialpages' => 'خاص صفحات',
-'moredotdotdot' => 'اور...',
-'mypage' => 'میرا صفحہ',
-'mytalk' => 'میری گفتگو',
-'anontalk' => 'اس IP کیلیے بات چیت',
-'navigation' => 'رہنمائی',
-'and' => '&#32;اور',
+'faq' => 'معلوماتِ عامہ',
+'faqpage' => 'Project:معلوماتِ عامہ',
+
+# Vector skin
+'vector-action-addsection' => 'نیا موضوع',
+'vector-action-delete' => 'حذف کرو',
+'vector-action-move' => 'منتقل کرو',
+'vector-action-protect' => 'محفوظ کرو',
+'vector-namespace-category' => 'زمرہ',
+'vector-namespace-help' => 'صفحۂ مدد',
+'vector-namespace-image' => 'ملف',
+'vector-namespace-main' => 'صفحہ',
+'vector-namespace-media' => 'صفحۂ وسیط',
+'vector-namespace-mediawiki' => 'پیغام',
+'vector-namespace-project' => 'صفحۂ منصوبہ',
+'vector-namespace-special' => 'خاص صفحہ',
+'vector-namespace-talk' => 'تبادلہٴ خیال',
+'vector-namespace-template' => 'سانچہ',
+'vector-namespace-user' => 'صفحۂ صارف',
+'vector-view-create' => 'تخلیق',
+'vector-view-edit' => 'ترمیم',
+'vector-view-history' => 'تاریخچہ',
+'vector-view-view' => 'پڑھیں',
+'vector-view-viewsource' => 'مسودہ',
'errorpagetitle' => 'خطاء',
'returnto' => 'واپس $1۔',
@@ -228,18 +258,22 @@ $messages = array(
'otherlanguages' => 'دیگر زبانوں میں',
'redirectedfrom' => '($1 سے پلٹایا گیا)',
'redirectpagesub' => 'لوٹایا گیا صفحہ',
-'lastmodifiedat' => 'آخری بار تدوین $2, $1 کو کی گئی۔', # $1 date, $2 time
+'lastmodifiedat' => 'آخری بار تدوین $2, $1 کو کی گئی۔',
'viewcount' => 'اِس صفحہ تک {{PLURAL:$1|ایک‌بار|$1 مرتبہ}} رسائی کی گئی',
'protectedpage' => 'محفوظ شدہ صفحہ',
'jumpto' => ':چھلانگ بطرف',
'jumptonavigation' => 'رہنمائی',
'jumptosearch' => 'تلاش',
+'view-pool-error' => 'معذرت کے ساتھ، تمام معیلات پر اِس وقت اِضافی بوجھ ہے.
+بہت زیادہ صارفین اِس وقت یہ صفحہ ملاحظہ کرنے کی کوشش کررہے ہیں.
+برائے مہربانی! صفحہ دیکھنے کیلئے دوبارہ کوشش کرنے سے پہلے ذرا انتظار فرمالیجئے.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'کا تعارف {{SITENAME}}',
'aboutpage' => 'Project:تعارف',
'copyright' => 'تمام مواد $1 کے تحت میسر ہے۔',
-'copyrightpagename' => '{{SITENAME}} حق تصنیف',
'copyrightpage' => '{{ns:project}}:حقوق تصانیف',
'currentevents' => 'حالیہ واقعات',
'currentevents-url' => 'Project:حالیہ واقعات',
@@ -247,8 +281,6 @@ $messages = array(
'disclaimerpage' => 'Project:عام اعلان',
'edithelp' => 'معاونت براۓ ترمیم',
'edithelppage' => 'Help:ترمیم',
-'faq' => 'معلوماتِ عامہ',
-'faqpage' => 'Project:معلوماتِ عامہ',
'helppage' => 'Help:فہرست',
'mainpage' => 'سرورق',
'mainpage-description' => 'سرورق',
@@ -335,9 +367,6 @@ MySQL نے خطائی جواب دیا "<tt>$3: $4</tt>".',
"$1"
"$2" فعلیت میں سے.
MySQL نے جوابِ خطاء دیا "$3: $4"',
-'noconnect' => 'بہ تاسف! ویکی کو چند تکنیکی مشکلات کا سامنا ہے جس کی وجہ سے ڈیٹابیسی معیل کے ساتھ رابطہ نہیں کرسکتا۔ <br />$1',
-'nodb' => '$1 ڈیٹابیس منتخب نہ ہوسکا.',
-'cachederror' => 'نیچے التماس شدہ صفحے کا ایک ابطن‌شدہ نسخہ ہے، اور اِس کے بتاریخی (اپ ٹو ڈیٹ) ہونے میں شک ہے.',
'laggedslavemode' => 'انتباہ: ممکن ہے کہ صفحہ میں حالیہ بتاریخہ جات شامل نہ ہوں.
Warning: Page may not contain recent updates.',
@@ -364,7 +393,8 @@ Warning: Page may not contain recent updates.',
'unexpected' => 'غیرمتوقع قدر: "$1"="$2"',
'formerror' => 'خطا: ورقہ بھیجا نہ جاسکا.',
'badarticleerror' => 'اس صفحہ پر یہ عمل انجام نہیں دیا جاسکتا۔',
-'cannotdelete' => 'صفحہ یا مِلَف کو حذف نہیں کیا جا سکا۔ (ہوسکتا ہے کہ اسے پہلے ہی کسی نے حذف کردیاہو۔)',
+'cannotdelete' => 'صفحہ یا ملف $1 کو حذف نہیں کیا جاسکتا.
+ہوسکتا ہے کہ اسے پہلے ہی کسی نے حذف کردیا ہو.',
'badtitle' => 'خراب عنوان',
'badtitletext' => 'درخواست شدہ صفحہ کا عنوان ناقص، خالی، یا کوئی غلط ربط شدہ بین لسانی یا بین ویکی عنوان ہے.
شاید اِس میں ایک یا زیادہ ایسے حروف موجود ہوں جو عنوانات میں استعمال نہیں ہوسکتے.',
@@ -382,8 +412,6 @@ Warning: Page may not contain recent updates.',
'editinginterface' => "'''انتباہ: ''' آپ ایک ایسا صفحہ تدوین کر رہے ہیں جو مصنع‌لطیف کیلئے سطح‌البینی متن فراہم کرتا ہے۔ اس صفحہ میں کی جانے والی ترمیم، دیگر صارفین کیلئے سطح‌البین کو تبدیل کردے گی۔
براہِ کرم، ترجمہ کیلئے [http://translatewiki.net/wiki/Main_Page?setlang=en '''ٹرانسلیٹ ویکی.نیٹ'''] (میڈیاویکی مقامیانی منصوبہ) استعمال کیجئے.",
'sqlhidden' => '(SQL استفسارہ پوشیدہ)',
-'cascadeprotected' => 'This page has been protected from editing, because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the "cascading" option turned on:
-$2',
'namespaceprotected' => "آپ کو '''$1''' فضائے نام میں صفحات تدوین کرنے کی اِجازت نہیں ہے.",
'customcssjsprotected' => 'آب کو اِس صفحہ کی تدوین کی اِجازت نہیں ہے، کیونکہ اِس میں دوسرے صارف کی ذاتی ترتیبات موجود ہیں.',
'ns-specialprotected' => 'خاص صفحات کی تدوین نہیں کی جاسکتی.',
@@ -396,13 +424,11 @@ $2',
'virus-unknownscanner' => 'انجان ضدوائرس:',
# Login and logout pages
-'logouttitle' => 'اخراج صارف',
'logouttext' => "'''اب آپ خارج ہوچکے ہیں'''
آپ گمنام طور پر {{SITENAME}} کا استعمال جاری رکھ سکتے ہیں، یا دوبارہ اسی نام یا مختلف نام سے [[Special:UserLogin|دوبارہ داخلِ نوشتہ]] بھی ہو سکتے ہیں۔ یہ یاد آوری کرلیجیۓ کہ کچھ صفحات ایسے نظر آتے رہیں گے کہ جیسے ابھی آپ خارج نہیں ہوئے ، جب تک آپ اپنے متصفح کا ابطن صاف نہ کردیں۔",
'welcomecreation' => '== خوش آمدید، $1 ! ==
آپ کا کھاتہ بنا دیا گیا ہے۔ اپنی [[Special:Preferences|{{SITENAME}} ترجیحات]] مرتب کرنا مت بھولئے گا.',
-'loginpagetitle' => 'داخلہ صارف',
'yourname' => 'اسمِ رکنیت',
'yourpassword' => 'کلمۂ شناخت',
'yourpasswordagain' => 'کلمۂ شناخت دوبارہ لکھیں',
@@ -413,6 +439,7 @@ $2',
'nav-login-createaccount' => 'کھاتہ کھولیں یا اندراج کریں',
'loginprompt' => '{{SITENAME}} میں داخلے کیلۓ آپکے پاس قند (کوکیز) مجازہوناچاہیں۔',
'userlogin' => 'کھاتہ کھولیں یا اندراج کریں',
+'userloginnocreate' => 'داخلِ نوشتہ ہوجائیے',
'logout' => 'اخراج',
'userlogout' => 'خارج ہوجائیں',
'notloggedin' => 'داخلہ نہیں ہوا',
@@ -425,30 +452,8 @@ $2',
'badretype' => 'درج شدہ کلمۂ شناخت اصل سے مطابقت نہیں رکھتا۔',
'userexists' => 'درج شدہ اسمِ صارف پہلے سے زیرِاستعمال ہے.
براہِ کرم، کوئی دوسرا اسمِ صارف استعمال کریں.',
-'youremail' => '٭ برقی خط',
-'username' => 'اسم صارف',
-'uid' => 'صارف نمبر:',
-'prefs-memberingroups' => '{{PLURAL:$1|گروہ|گروہوں}} کا رُکن:',
-'yourrealname' => '* اصلی نام',
-'yourlanguage' => 'زبان:',
-'yourvariant' => 'متغیّر:',
-'yournick' => 'دستخط',
-'badsig' => 'ناقص خام دستخط.
-HTML tags جانچئے.',
-'badsiglength' => 'آپ کا دستخط کافی طویل ہے.
-یہ $1 {{PLURAL:$1|حرف|حروف}} سے زیادہ نہیں ہونا چاہئے.',
-'yourgender' => 'جنس:',
-'gender-unknown' => 'غیرمختص شدہ',
-'gender-male' => 'مرد',
-'gender-female' => 'عورت',
-'prefs-help-gender' => 'اختیاری: مصنع‌لطیف کی طرف سے صحیح‌الجنس تخاطب کیلئے استعمال ہوتا ہے. یہ معلومات عام ہوگی.',
-'email' => 'برقی خط',
-'prefs-help-realname' => 'حقیقی نام اختیاری ہے.
-اگر آپ اِسے مہیّا کرتے ہیں، تو اِسے آپ کے کام کیلئے آپ کو انتساب دینے کیلئے استعمال کیا جائے گا.',
'loginerror' => 'داخلے میں غلطی',
-'prefs-help-email' => 'برقی ڈاک کا پتہ اختیاری ہے، لیکن یہ اُس وقت مفید ثابت ہوسکتا ہے جب آپ اپنا کلمۂ شناخت بھول جائیں.
-آپ یہ بھی منتخب کرسکتے ہیں کہ دوسرے صارفین، آپ کی شناخت کو افشا کئے بغیر، آپ کے تبادلۂ خیال صفحہ پر آپ سے رابطہ کریں.',
-'prefs-help-email-required' => 'برقی ڈاک پتہ چاہئے.',
+'createaccounterror' => 'کھاتہ $1 بنایا نہیں جاسکا',
'nocookiesnew' => 'کھاتۂ صارف بنادیا گیا ہے، لیکن آپ کا داخلہ نہیں ہوا.
صارفین کے داخلہ کیلئے {{SITENAME}} کوکیز استعمال کرتا ہے.
آپ کے ہاں کوکیز غیر فعال ہیں.
@@ -465,9 +470,11 @@ HTML tags جانچئے.',
'nosuchusershort' => '"<nowiki>$1</nowiki>" کے نام سے کوئی صارف موجود نہیں.
اپنا ہجہ جانچئے.',
'nouserspecified' => 'آپ کو ایک اسمِ صارف مخصوص کرنا ہے.',
+'login-userblocked' => 'اِس صارف پر پابندی ہے. داخلِ نوشتہ ہونے کی اجازت نہیں.',
'wrongpassword' => 'آپ نے غلط کلمۂ شناخت درج کیا ہے۔ دوبارہ کو شش کریں۔',
'wrongpasswordempty' => 'کلمۂ شناخت ندارد۔ دوبارہ کوشش کریں۔',
-'passwordtooshort' => 'آپکا منتخب کردہ کلمۂ شناخت بہت مختصر ہے۔ اسے کم از کم $1 حروف پر مشتمل ہونا چاہیۓ۔',
+'passwordtooshort' => 'آپکا منتخب کردہ پارلفظ مختصر ہے. پارلفظ کم از کم {{PLURAL:$1|1 محرف|$1 محارف}} ہونا چاہئے.',
+'password-name-match' => 'آپکا پارلفظ آپکے اسمِ صارف سے مختلف ہونا چاہئے.',
'mailmypassword' => 'نیا پارلفظ برقی ڈاک میں بھیجو',
'passwordremindertitle' => 'نیا عارضی کلمۂ شناخت برائے {{SITENAME}}',
'passwordremindertext' => '(IP پتہ $1 سے) کسی (یا شاید آپ) نے {{SITENAME}} ($4)
@@ -480,6 +487,7 @@ HTML tags جانچئے.',
اور آپ اسے تبدیل نہیں کرنا چاہتے، تو آپ یہ پیغام نظر انداز کرسکتے ہیں اور
آپنا پُرانا کلمۂ شناخت کا استعمال جاری رکھ سکتے ہیں.',
'noemail' => 'صارف "$1" کیلئے کوئی برقی پتہ درج نہیں کیا گیا.',
+'noemailcreate' => 'صحیح برقی پتہ مہیّا کریں',
'passwordsent' => 'ایک نیا کلمۂ شناخت "$1" کے نام سے بننے والی برقی ڈاک کے پتے کیلیے بھیج دیا گیا ہے۔
جب وہ موصول ہو جاۓ تو براہ کرم اسکے ذریعے دوبارہ داخل ہوں۔',
'blocked-mailpassword' => 'آپ کا آئی.پی پتہ تدوین سے روک لیا گیا ہے، سو، ناجائز استعمال کو روکنے کیلئے، آپ کے آئی.پی پتہ کو کلمۂ شناخت کی بحالی کا فعل استعمال کرنے کی اِجازت نہیں ہے.',
@@ -504,6 +512,7 @@ HTML tags جانچئے.',
آپ کو چاہئے کہ ابھی داخلِ نوشتہ ہوکر اپنا پارلفظ تبدیل کردیں.
اگر یہ کھاتہ غلطی سے بنا تھا تو آپ یہ پیغام نظرانداز کرسکتے ہیں.',
+'usernamehasherror' => 'اسمِ صارف میں خلط ملط محارف استعمال نہیں کئے جاسکتے',
'login-throttled' => 'آپ نے داخلِ نوشتہ ہونے کیلئے بہت زیادہ حالیہ کوششیں کیں.
دوبارہ کوشش کرنے سے پہلے انتظار فرمائیے.',
'loginlanguagelabel' => 'زبان: $1',
@@ -622,15 +631,25 @@ $1 نے پابندی لگائی تھی.
'editingold' => "'''انتباہ: آپ اس صفحے کا ایک پرانا مسودہ مرتب کررہے ہیں۔ اگر آپ اسے محفوظ کرتے ہیں تو اس صفحے کے اس پرانے مسودے سے اب تک کی جانے والی تمام تدوین ضائع ہو جاۓ گی۔'''",
'yourdiff' => 'تضادات',
'copyrightwarning' => "یہ یادآوری کرلیجیۓ کہ {{SITENAME}} میں تمام تحریری شراکت جی این یو آزاد مسوداتی اجازہ ($2)کے تحت تصور کی جاتی ہے (مزید تفصیل کیلیۓ $1 دیکھیۓ)۔ اگر آپ اس بات سے متفق نہیں کہ آپکی تحریر میں ترمیمات کری جائیں اور اسے آزادانہ (جیسے ضرورت ہو) استعمال کیا جاۓ تو براۓ کرم اپنی تصانیف یہاں داخل نہ کیجیۓ۔ اگر آپ یہاں اپنی تحریر جمع کراتے ہیں تو آپ اس بات کا بھی اقرار کر رہے ہیں کہ، اسے آپ نے خود تصنیف کیا ہے یا دائرہ ءعام (پبلک ڈومین) سے حاصل کیا ہے یا اس جیسے کسی اور آذاد وسیلہ سے۔'''بلااجازت ایسا کام داخل نہ کیجیۓ جسکا حق ِطبع و نشر محفوظ ہو!'''",
-'templatesused' => 'اس صفحے پر استعمال ہونے والے سانچے:',
-'templatesusedsection' => 'اس قطعے میں استعمال ہونے والے سانچے:',
+'templatesused' => 'اِس صفحہ پر مستعمل {{PLURAL:$1|سانچہ|سانچے}}:',
+'templatesusedpreview' => 'اِس پیش منظر میں مستعمل {{PLURAL:$1|سانچہ|سانچے}}:',
+'templatesusedsection' => 'اِس قطعہ میں مستعمل {{PLURAL:$1|سانچہ|سانچے}}:',
'template-protected' => '(محفوظ شدہ)',
'template-semiprotected' => '(نیم محفوظ)',
'nocreatetitle' => 'تخلیقِ صفحہ محدود',
'nocreate-loggedin' => 'آپ کو نئے صفحات تخلیق کرنے کی اجازت نہیں ہے.',
+'sectioneditnotsupported-title' => 'قطعہ کی تدوین حمایت شدہ نہیں ہے',
+'sectioneditnotsupported-text' => 'اِس صفحہ میں قطعہ کی تدوین حمایت شدہ نہیں ہے.',
'permissionserrors' => 'اخطائے اجازت',
'permissionserrorstext' => 'درج ذیل {{PLURAL:$1|وجہ|وجوہات}} کی بناء پر آپ کو ایسا کرنے کی اجازت نہیں ہے:',
'permissionserrorstext-withaction' => 'درج ذیل {{PLURAL:$1|وجہ|وجوہات}} کی بناء پر آپ کو $2 کرنے کی اجازت نہیں ہے:',
+'recreate-moveddeleted-warn' => "''' انتباہ: آپ ایک گزشتہ حذف شدہ صفحہ دوبارہ تخلیق کررہے ہیں. '''
+
+آپ کو اِس بات پر غور کرنا چاہئے کہ آیا اِس صفحہ کی تدوین جاری رکھنا موزوں ہے یا نہیں.
+صفحہ کا نوشتۂ حذف شدگی و منتقلی یہاں سہولت کی خاطر مہیّا کیا جارہا ہے:",
+'moveddeleted-notice' => 'یہ ایک حذف شدہ صفحہ ہے.
+صفحہ کا نوشتۂ حذف شدگی و منتقلی ذیل میں بطورِ حوالہ دیا جارہا ہے.',
+'log-fulllog' => 'پورا نوشتہ دیکھئے',
'edit-gone-missing' => 'صفحہ تجدید نہیں کیا جاسکتا.
لگتا ہے یہ حذف ہوچکا ہے.',
'edit-conflict' => 'تنازعۂ تدوین.',
@@ -642,6 +661,7 @@ $1 نے پابندی لگائی تھی.
'viewpagelogs' => 'اس صفحہ کیلیے نوشتہ جات دیکھیے',
'nohistory' => 'اِس صفحہ کیلئے کوئی تدوینی تاریخچہ موجود نہیں ہے.',
'currentrev' => 'حـالیـہ تـجدید',
+'currentrev-asof' => 'حالیہ نظرثانی بمطابق $1',
'revisionasof' => 'تـجدید بـمطابق $1',
'previousrevision' => '←پرانی تدوین',
'nextrevision' => '→اگلا اعادہ',
@@ -657,44 +677,58 @@ $1 نے پابندی لگائی تھی.
(رائج) = موجودہ متن سے اخـتلاف، (سابقہ) = گزشتہ متن سے اختلاف ، م = معمولی ترمیم۔",
'history-fieldset-title' => 'تاریخ ملاحظہ کریں',
-'deletedrev' => '[حذف کردیا گیا]',
+'history-show-deleted' => 'صرف حذف شدہ',
'histfirst' => 'قدیم ترین',
'histlast' => 'تازہ ترین',
'historysize' => '({{PLURAL:$1|1 لکمہ|$1 لکم}})',
'historyempty' => '(خالی)',
# Revision feed
-'history-feed-title' => 'تاریخچۂ نظرثانی',
-'history-feed-description' => 'ویکی پر اِس صفحہ کا تاریخچۂ نظرثانی',
-'history-feed-empty' => 'درخواست شدہ صفحہ موجود نہیں.
+'history-feed-title' => 'تاریخچۂ نظرثانی',
+'history-feed-description' => 'ویکی پر اِس صفحہ کا تاریخچۂ نظرثانی',
+'history-feed-item-nocomment' => 'بہ $2 $1',
+'history-feed-empty' => 'درخواست شدہ صفحہ موجود نہیں.
یا تو یہ ویکی سے حذف کیا گیا ہے اور یا اِس کا نام تبدیل کردیا گیا ہے.
آپ متعلقہ نئے صفحات کیلئے [[Special:Search|ویکی پر تلاش]] کرسکتے ہیں.',
# Revision deletion
-'rev-deleted-comment' => '(تبصرہ ہٹایا گیا ہے)',
-'rev-delundel' => 'دکھاؤ/چھپاؤ',
-'revisiondelete' => 'نظرثانی حذف کریں/واپس لائیں',
-'revdelete-nooldid-title' => 'ناقص مقصود نظرثانی',
-'revdelete-nologtype-title' => 'کوئی نوشتی قِسم مہیّا نہیں کی گئی',
-'revdelete-nologid-title' => 'ناقص اندراجِ نوشتہ',
-'revdelete-selected' => "'''[[:$1]] کی {{PLURAL:$2|منتخب نظرثانی|منتخب نظرثانیاں}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|منتخب واقعۂ نوشتہ|منتخب واقعاتِ نوشتہ}}:'''",
-'revdelete-legend' => 'رویتی پابندیاں لگائیں',
-'revdelete-hide-text' => 'نظرثانی متن چھپاؤ',
-'revdelete-hide-name' => 'عمل اور ہدف کو چھپاؤ',
-'revdelete-hide-comment' => 'ترمیمی تبصرہ چھپاؤ',
-'revdelete-hide-user' => 'ترمیم کار کا اسمِ صارف / آئی.پی پتہ چُھپاؤ',
-'revdelete-hide-image' => 'مشمولاتِ ملف چھپاؤ',
-'revdelete-unsuppress' => 'بحال شدہ نظرثانیوں پر پابندیاں ہٹاؤ',
-'revdelete-log' => 'وجہ',
-'revdelete-success' => "'''رؤیتِ نظرثانی کی تجدید کامیابی سے ہوئی.'''",
-'logdelete-success' => "'''نوشتۂ رویت کامیابی سے مرتب.'''",
-'revdel-restore' => 'ظاہریت تبدیل کرو',
-'pagehist' => 'تاریخچۂ صفحہ',
-'deletedhist' => 'حذف شدہ تاریخچہ',
-'revdelete-content' => 'مشمولہ',
-'revdelete-summary' => 'خلاصۂ تدوین',
-'revdelete-uname' => 'اسمِ صارف',
+'rev-deleted-comment' => '(تبصرہ ہٹایا گیا ہے)',
+'rev-delundel' => 'دکھاؤ/چھپاؤ',
+'rev-showdeleted' => 'دکھاؤ',
+'revisiondelete' => 'نظرثانی حذف کریں/واپس لائیں',
+'revdelete-nooldid-title' => 'ناقص مقصود نظرثانی',
+'revdelete-nologtype-title' => 'کوئی نوشتی قِسم مہیّا نہیں کی گئی',
+'revdelete-nologid-title' => 'ناقص اندراجِ نوشتہ',
+'revdelete-show-file-submit' => 'ہاں',
+'revdelete-selected' => "'''[[:$1]] کی {{PLURAL:$2|منتخب نظرثانی|منتخب نظرثانیاں}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|منتخب واقعۂ نوشتہ|منتخب واقعاتِ نوشتہ}}:'''",
+'revdelete-confirm' => 'برائے مہربانی! یقین دِہانی کرلیجئے کہ آپ واقعی ایسا کرنا چاہتے ہیں، آپ اِس کے نتائج سے باخبر ہیں، اور آپ یہ [[{{MediaWiki:Policy-url}}|پالیسی]] کے مطابق کررہے ہیں.',
+'revdelete-legend' => 'رویتی پابندیاں لگائیں',
+'revdelete-hide-text' => 'نظرثانی متن چھپاؤ',
+'revdelete-hide-image' => 'مشمولاتِ ملف چھپاؤ',
+'revdelete-hide-name' => 'عمل اور ہدف کو چھپاؤ',
+'revdelete-hide-comment' => 'ترمیمی تبصرہ چھپاؤ',
+'revdelete-hide-user' => 'ترمیم کار کا اسمِ صارف / آئی.پی پتہ چُھپاؤ',
+'revdelete-radio-same' => '(تبدیل مت کرو)',
+'revdelete-radio-set' => 'ہاں',
+'revdelete-radio-unset' => 'نہیں',
+'revdelete-unsuppress' => 'بحال شدہ نظرثانیوں پر پابندیاں ہٹاؤ',
+'revdelete-log' => 'وجہ',
+'revdelete-success' => "'''رؤیتِ نظرثانی کی تجدید کامیابی سے ہوئی.'''",
+'logdelete-success' => "'''نوشتۂ رویت کامیابی سے مرتب.'''",
+'logdelete-failure' => "'''نوشتۂ رویت مرتب نہیں کیا جاسکتا:'''
+
+$1",
+'revdel-restore' => 'ظاہریت تبدیل کرو',
+'pagehist' => 'تاریخچۂ صفحہ',
+'deletedhist' => 'حذف شدہ تاریخچہ',
+'revdelete-content' => 'مشمولہ',
+'revdelete-summary' => 'خلاصۂ تدوین',
+'revdelete-uname' => 'اسمِ صارف',
+'revdelete-otherreason' => 'دوسری/اضافی وجہ:',
+'revdelete-reasonotherlist' => 'کوئی اَور وجہ',
+'revdelete-edit-reasonlist' => 'تحذیفی وجوہات کی تدوین',
+'revdelete-offender' => 'نظرثانی مصنف:',
# History merging
'mergehistory' => 'تواریخِ صفحہ کا انضمام',
@@ -727,16 +761,18 @@ $1 نے پابندی لگائی تھی.
'searchresulttext' => 'ویکیپیڈیا میں تلاش کے بارے میں مزید معلومات کے لیۓ، ویکیپیڈیا میں تلاش کا صفحہ دیکھیۓ۔',
'searchsubtitle' => 'آپ کی تلاش برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" سے شروع ہونے والے تمام صفحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" سے مربوط تمام صفحات]])',
'searchsubtitleinvalid' => "آپ کی تلاش براۓ '''$1'''",
-'noexactmatch' => '"$1" کے عنوان سے کوئی صفحہ موجود نہیں۔ آپ اگر چاہیں تو اس نام سے [[:$1|صفحہ بنا سکتے ہیں]]',
'notitlematches' => 'کوئی بھی مماثل عنوان صفحہ نہیں ملا',
'notextmatches' => 'کوئی بھی مماثل متن موجود نہیں',
-'prevn' => 'پچھلے $1',
-'nextn' => 'اگلے $1',
-'viewprevnext' => 'دیکھیں($1) ($2) ($3)',
+'prevn' => 'پچھلے {{PLURAL:$1|$1}}',
+'nextn' => 'اگلے {{PLURAL:$1|$1}}',
+'viewprevnext' => 'دیکھیں($1 {{int:pipe-separator}} $2) ($3)۔',
'searchmenu-legend' => 'اختیاراتِ تلاش',
'searchmenu-exists' => "'''اِس ویکی پر \"[[:\$1]]\" نامی ایک صفحہ موجود ہے'''",
'searchmenu-new' => "'''اِس ویکی پر صفحہ \"[[:\$1]]\" تخلیق کیجئے!'''",
'searchhelp-url' => 'Help:فہرست',
+'searchprofile-articles' => 'مشمولاتی صفحات',
+'searchprofile-project' => 'صفحاتِ مدد و منصوبہ',
+'searchprofile-images' => 'کثیرالوسیط',
'searchprofile-everything' => 'سب کچھ',
'searchprofile-advanced' => 'پیشرفتہ',
'searchprofile-articles-tooltip' => '$1 میں تلاش',
@@ -756,82 +792,111 @@ $1 نے پابندی لگائی تھی.
'mwsuggest-disable' => 'AJAX تجاویز غیرفعال',
'searchrelated' => 'متعلقہ',
'searchall' => 'تمام',
-'showingresultstotal' => "نیچے دکھارہا ہے {{PLURAL:$4|'''$3''' میں سے '''$3''' نتیجہ|'''$3''' میں سے '''$1 - $2''' نتائج}}",
'search-nonefound' => 'استفسار کے مطابق نتائج نہیں ملے.',
'powersearch' => 'پیشرفتہ تلاش',
'powersearch-legend' => 'پیشرفتہ تلاش',
'powersearch-ns' => 'جائے نام میں تلاش:',
'powersearch-redir' => 'فہرستِ رجوع مکرر',
'powersearch-field' => 'تلاش برائے',
+'powersearch-toggleall' => 'تمام',
+'powersearch-togglenone' => 'کوئی نہیں',
'search-external' => 'بیرونی تلاش',
'searchdisabled' => '{{SITENAME}} تلاش غیرفعال.
آپ فی الحال گوگل کے ذریعے تلاش کرسکتے ہیں.
یاد رکھئے کہ اُن کے {{SITENAME}} اشاریے ممکناً پرانے ہوسکتے ہیں.',
+# Quickbar
+'qbsettings' => 'فوری‌بار',
+'qbsettings-none' => 'ہیچ',
+
# Preferences page
-'preferences' => 'ترجیحات',
-'mypreferences' => 'میری ترجیہات',
-'prefs-edits' => 'تدوینات کی تعداد:',
-'prefsnologin' => 'نا داخل شدہ حالت',
-'prefsnologintext' => 'ترجیحات ترتیب دینے کیلئے <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} داخل نوشتہ]</span> ہونا لازمی ہے.',
-'prefsreset' => 'ترجیحات کو ذخیر سے نوطاقم کیا جاچکا ہے.',
-'qbsettings' => 'فوری‌بار',
-'qbsettings-none' => 'ہیچ',
-'changepassword' => 'کلمۂ شناخت تبدیل کریں',
-'skin-preview' => 'پیش منظر',
-'math' => 'ریاضی',
-'dateformat' => 'شکلبندِ تاریخ',
-'datedefault' => 'کوئی ترجیحات نہیں',
-'datetime' => 'تاریخ و وقت',
-'math_failure' => 'تجزیہ میں ناکام',
-'math_unknown_error' => 'نامعلوم غلطی',
-'math_unknown_function' => 'نامعلوم فعل',
-'math_syntax_error' => 'نحوی غلطی',
-'math_image_error' => 'PNG; کی تحویل ناکام
-latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد دوبارہ تحویل کی کوشش کیجئے.',
-'prefs-personal' => 'نمایۂ صارف',
-'prefs-rc' => 'حالیہ تبدیلیاں',
-'prefs-watchlist' => 'زیرِنظر فہرست',
-'prefs-watchlist-days' => 'زیرِنظر فہرست میں نظر آنے والے ایام:',
-'prefs-watchlist-days-max' => '(زیادہ سے زیادہ 7 دِن)',
-'prefs-watchlist-edits' => 'عریض زیرِنظرفہرست میں نظر آنے والی تبدیلیوں کی زیادہ سے زیادہ تعداد:',
-'prefs-watchlist-edits-max' => '(زیادہ سے زیادہ تعداد: 1000)',
-'prefs-misc' => 'دیگر',
-'prefs-resetpass' => 'کلمۂ شناخت تبدیل کیجئے',
-'saveprefs' => 'محفوظ',
-'resetprefs' => 'نامحفوظ تبدیلیاں صاف کرو',
-'restoreprefs' => 'تمام بےنقص ترتیبات بحال کیجئے',
-'prefs-edit-boxsize' => 'تدوینی کھڑکی کی جسامت.',
-'rows' => 'صفیں:',
-'columns' => 'قطاریں:',
-'searchresultshead' => 'تلاش',
-'recentchangesdays' => 'حالیہ تبدیلیوں میں دکھائی جانے والے ایّام:',
-'recentchangesdays-max' => '(زیادہ سے زیادہ $1 {{PLURAL:$1|دن|ایام}})',
-'recentchangescount' => 'حالیہ تبدیلیاں، تواریخِ صفحہ اور نوشتہ جات میں دکھائی جانے والی ترمیمات کی تعداد:',
-'savedprefs' => 'آپ کی ترجیحات محفوظ ہوگئیں۔',
-'timezonelegend' => 'منطقۂ وقت:',
-'localtime' => 'مقامی وقت:',
-'timezoneselect' => 'منطقۂ وقت:',
-'timezoneregion-africa' => 'افریقہ',
-'timezoneregion-america' => 'امریکہ',
-'timezoneregion-antarctica' => 'انٹارکٹیکا',
-'timezoneregion-arctic' => 'قطب شمالی',
-'timezoneregion-asia' => 'ایشیاء',
-'timezoneregion-atlantic' => 'بحر اوقیانوس',
-'timezoneregion-australia' => 'آسٹریلیا',
-'timezoneregion-europe' => 'یورپ',
-'timezoneregion-indian' => 'بحر ہند',
-'timezoneregion-pacific' => 'بحر الکاہل',
-'allowemail' => 'دوسرے صارفین کو برقی خظ لکھنے کا اختیار دیں',
-'prefs-searchoptions' => 'اختیاراتِ تلاش',
-'prefs-namespaces' => 'جائے نام',
-'default' => 'طے شدہ',
-'files' => 'فائلیں',
-'prefs-custom-css' => 'خودساختہ CSS',
-'prefs-custom-js' => 'خودساختہ JS',
+'preferences' => 'ترجیحات',
+'mypreferences' => 'میری ترجیہات',
+'prefs-edits' => 'تدوینات کی تعداد:',
+'prefsnologin' => 'نا داخل شدہ حالت',
+'prefsnologintext' => 'ترجیحات ترتیب دینے کیلئے <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} داخل نوشتہ]</span> ہونا لازمی ہے.',
+'changepassword' => 'کلمۂ شناخت تبدیل کریں',
+'prefs-skin' => 'جِلد',
+'skin-preview' => 'پیش منظر',
+'prefs-math' => 'ریاضی',
+'datedefault' => 'کوئی ترجیحات نہیں',
+'prefs-datetime' => 'تاریخ و وقت',
+'prefs-personal' => 'نمایۂ صارف',
+'prefs-rc' => 'حالیہ تبدیلیاں',
+'prefs-watchlist' => 'زیرِنظر فہرست',
+'prefs-watchlist-days' => 'زیرِنظر فہرست میں نظر آنے والے ایام:',
+'prefs-watchlist-days-max' => '(زیادہ سے زیادہ 7 دِن)',
+'prefs-watchlist-edits' => 'عریض زیرِنظرفہرست میں نظر آنے والی تبدیلیوں کی زیادہ سے زیادہ تعداد:',
+'prefs-watchlist-edits-max' => '(زیادہ سے زیادہ تعداد: 1000)',
+'prefs-misc' => 'دیگر',
+'prefs-resetpass' => 'کلمۂ شناخت تبدیل کیجئے',
+'prefs-email' => 'اختیاراتِ برقی ڈاک',
+'prefs-rendering' => 'ظاہریت',
+'saveprefs' => 'محفوظ',
+'resetprefs' => 'نامحفوظ تبدیلیاں صاف کرو',
+'restoreprefs' => 'تمام بےنقص ترتیبات بحال کیجئے',
+'prefs-editing' => 'تدوین',
+'prefs-edit-boxsize' => 'تدوینی کھڑکی کی جسامت.',
+'rows' => 'صفیں:',
+'columns' => 'قطاریں:',
+'searchresultshead' => 'تلاش',
+'recentchangesdays' => 'حالیہ تبدیلیوں میں دکھائی جانے والے ایّام:',
+'recentchangesdays-max' => '(زیادہ سے زیادہ $1 {{PLURAL:$1|دن|ایام}})',
+'recentchangescount' => 'دکھائی جانے والی ترامیم کی تعداد:',
+'prefs-help-recentchangescount' => 'اِس میں حالیہ تبدیلیاں، تواریخِ صفحہ اور نوشتہ جات شامل ہیں.',
+'savedprefs' => 'آپ کی ترجیحات محفوظ ہوگئیں۔',
+'timezonelegend' => 'منطقۂ وقت:',
+'localtime' => 'مقامی وقت:',
+'timezoneregion-africa' => 'افریقہ',
+'timezoneregion-america' => 'امریکہ',
+'timezoneregion-antarctica' => 'انٹارکٹیکا',
+'timezoneregion-arctic' => 'قطب شمالی',
+'timezoneregion-asia' => 'ایشیاء',
+'timezoneregion-atlantic' => 'بحر اوقیانوس',
+'timezoneregion-australia' => 'آسٹریلیا',
+'timezoneregion-europe' => 'یورپ',
+'timezoneregion-indian' => 'بحر ہند',
+'timezoneregion-pacific' => 'بحر الکاہل',
+'allowemail' => 'دوسرے صارفین کو برقی خظ لکھنے کا اختیار دیں',
+'prefs-searchoptions' => 'اختیاراتِ تلاش',
+'prefs-namespaces' => 'جائے نام',
+'default' => 'طے شدہ',
+'prefs-files' => 'مسلات',
+'prefs-custom-css' => 'خودساختہ CSS',
+'prefs-custom-js' => 'خودساختہ JS',
+'prefs-emailconfirm-label' => 'برقی پتہ کی تصدیق:',
+'prefs-textboxsize' => 'خانۂ تدوین کی جسامت',
+'youremail' => '٭ برقی خط',
+'username' => 'اسم صارف',
+'uid' => 'صارف نمبر:',
+'prefs-memberingroups' => '{{PLURAL:$1|گروہ|گروہوں}} کا رُکن:',
+'prefs-registration' => 'وقتِ اندراج:',
+'yourrealname' => '* اصلی نام',
+'yourlanguage' => 'زبان:',
+'yourvariant' => 'متغیّر:',
+'yournick' => 'دستخط',
+'badsig' => 'ناقص خام دستخط.
+HTML tags جانچئے.',
+'badsiglength' => 'آپ کا دستخط کافی طویل ہے.
+یہ $1 {{PLURAL:$1|حرف|حروف}} سے زیادہ نہیں ہونا چاہئے.',
+'yourgender' => 'جنس:',
+'gender-unknown' => 'غیرمختص شدہ',
+'gender-male' => 'مرد',
+'gender-female' => 'عورت',
+'prefs-help-gender' => 'اختیاری: مصنع‌لطیف کی طرف سے صحیح‌الجنس تخاطب کیلئے استعمال ہوتا ہے. یہ معلومات عام ہوگی.',
+'email' => 'برقی خط',
+'prefs-help-realname' => 'حقیقی نام اختیاری ہے.
+اگر آپ اِسے مہیّا کرتے ہیں، تو اِسے آپ کے کام کیلئے آپ کو انتساب دینے کیلئے استعمال کیا جائے گا.',
+'prefs-help-email' => 'برقی ڈاک کا پتہ اختیاری ہے، لیکن یہ اُس وقت مفید ثابت ہوسکتا ہے جب آپ اپنا کلمۂ شناخت بھول جائیں.
+آپ یہ بھی منتخب کرسکتے ہیں کہ دوسرے صارفین، آپ کی شناخت کو افشا کئے بغیر، آپ کے تبادلۂ خیال صفحہ پر آپ سے رابطہ کریں.',
+'prefs-help-email-required' => 'برقی ڈاک پتہ چاہئے.',
+'prefs-info' => 'بنیادی معلومات',
+'prefs-i18n' => 'بین الاقوامیت',
+'prefs-signature' => 'دستخط',
+'prefs-dateformat' => 'شکلبندِ تاریخ',
# User rights
-'userrights' => 'حقوقِ صارف کی نظامت', # Not used as normal message but as header for the special page itself
+'userrights' => 'حقوقِ صارف کی نظامت',
'userrights-lookup-user' => 'گروہائے صارف کا انتظام',
'userrights-user-editname' => 'کوئی اسم‌صارف داخل کیجئے:',
'editinguser' => "تبدیلئ حقوق برائے صارف '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -882,13 +947,14 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'rc-enhanced-hide' => 'تفصیلات چھپائیے',
# Recent changes linked
-'recentchangeslinked' => 'متعلقہ تبدیلیاں',
-'recentchangeslinked-page' => 'صفحۂ منصوبہ دیکھئے',
+'recentchangeslinked' => 'متعلقہ تبدیلیاں',
+'recentchangeslinked-feed' => 'متعلقہ تبدیلیاں',
+'recentchangeslinked-toolbox' => 'متعلقہ تبدیلیاں',
+'recentchangeslinked-page' => 'صفحۂ منصوبہ دیکھئے',
# Upload
'upload' => 'فائل بھیجیں',
'uploadbtn' => 'زبراثقال ملف (اپ لوڈ فائل)',
-'reupload' => 'زبراثقال مکرر',
'reuploaddesc' => 'زبراثقال ورقہ (فارم) کیجانب واپس۔',
'uploadnologin' => 'آپ داخل شدہ حالت میں نہیں',
'uploadnologintext' => 'زبراثقال ملف (فائل اپ لوڈ) کے لیۓ آپکو [[Special:UserLogin|داخل شدہ]] حالت میں ہونا لازم ہے۔',
@@ -936,6 +1002,7 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'listfiles' => 'فہرست فائل',
# File description page
+'file-anchor-link' => 'مسل',
'filehist' => 'ملف کی تاریخ',
'filehist-current' => 'حالیہ',
'filehist-datetime' => 'تاریخ/وقت',
@@ -1113,9 +1180,11 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'contribsub2' => 'براۓ $1 ($2)',
'uctop' => ' (اوپر)',
-'sp-contributions-blocklog' => 'نوشتۂ پابندی',
-'sp-contributions-username' => 'آئی.پی پتہ یا اسمِ صارف:',
-'sp-contributions-submit' => 'تلاش',
+'sp-contributions-blocklog' => 'نوشتۂ پابندی',
+'sp-contributions-talk' => 'گفتگو',
+'sp-contributions-userrights' => 'صارف کے حقوق کا انتظام',
+'sp-contributions-username' => 'آئی.پی پتہ یا اسمِ صارف:',
+'sp-contributions-submit' => 'تلاش',
# What links here
'whatlinkshere' => 'ادھر کس کا جوڑ ہے',
@@ -1151,7 +1220,7 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'move-watch' => 'صفحہ زیر نظر',
'movepagebtn' => 'مـنـتـقـل',
'pagemovedsub' => 'انتقال کامیاب',
-'movepage-moved' => '\'\'\'"$1" منتقل کردیا گیا بطرف "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" منتقل کردیا گیا بطرف "$2"\'\'\'',
'articleexists' => 'اس عنوان سے کوئی صفحہ پہلے ہی موجود ہے، یا آپکا منتخب کردہ نام مستعمل نہیں۔ براۓ مہربانی دوسرا نام منتخب کیجیۓ۔',
'1movedto2' => '[[$1]] بجانب [[$2]] منتقل',
'movelogpage' => 'نوشتۂ منتقلی',
@@ -1167,13 +1236,11 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'export' => 'برآمد صفحات',
# Namespace 8 related
-'allmessages' => 'نظامی پیغامات',
-'allmessagesname' => 'نام',
-'allmessagesdefault' => 'طے شدہ متن',
-'allmessagescurrent' => 'موجودہ متن',
-'allmessagestext' => 'یہ میڈیاویکی: جاۓ نام میں دستیاب نظامی پیغامات کی فہرست ہے۔',
-'allmessagesfilter' => 'مِصفاہ اسم پیغام:',
-'allmessagesmodified' => 'فقط ترامیم کا اظہار',
+'allmessages' => 'نظامی پیغامات',
+'allmessagesname' => 'نام',
+'allmessagesdefault' => 'طے شدہ متن',
+'allmessagescurrent' => 'موجودہ متن',
+'allmessagestext' => 'یہ میڈیاویکی: جاۓ نام میں دستیاب نظامی پیغامات کی فہرست ہے۔',
# Thumbnails
'thumbnail-more' => 'چوڑا کریں',
@@ -1182,60 +1249,69 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'import' => 'درآمد صفحات',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'آپ کا صارفی صفحہ',
-'tooltip-pt-mytalk' => 'آپ کا صفحۂ گفتگو',
-'tooltip-pt-preferences' => 'آپ کی ترجیحات',
-'tooltip-pt-watchlist' => 'اُن صفحات کی فہرست جن کی تبدیلیاں آپ کی زیرِنظر ہیں',
-'tooltip-pt-mycontris' => 'آپ کے مساہمات کی فہرست',
-'tooltip-pt-login' => 'آپ کیلئے داخلِ نوشتہ ہونا اچھا ہے؛ تاہم، یہ ضروری نہیں',
-'tooltip-pt-logout' => 'خارجِ نوشتہ ہوجائیں',
-'tooltip-ca-talk' => 'مضمون بارے تبادلۂ خیال',
-'tooltip-ca-edit' => 'آپ اس صفحہ میں ترمیم کرسکتے ہیں.
+'tooltip-pt-userpage' => 'آپ کا صارفی صفحہ',
+'tooltip-pt-mytalk' => 'آپ کا صفحۂ گفتگو',
+'tooltip-pt-preferences' => 'آپ کی ترجیحات',
+'tooltip-pt-watchlist' => 'اُن صفحات کی فہرست جن کی تبدیلیاں آپ کی زیرِنظر ہیں',
+'tooltip-pt-mycontris' => 'آپ کے مساہمات کی فہرست',
+'tooltip-pt-login' => 'آپ کیلئے داخلِ نوشتہ ہونا اچھا ہے؛ تاہم، یہ ضروری نہیں',
+'tooltip-pt-logout' => 'خارجِ نوشتہ ہوجائیں',
+'tooltip-ca-talk' => 'مضمون بارے تبادلۂ خیال',
+'tooltip-ca-edit' => 'آپ اس صفحہ میں ترمیم کرسکتے ہیں.
برائے مہربانی! اپنی ترمیمات محفوظ کرنے سے پہلے نمائش کا بٹن استعمال کیجئے',
-'tooltip-ca-addsection' => 'نیا قطعہ شروع کیجئے',
-'tooltip-ca-viewsource' => 'یہ ایک محفوظ شدہ صفحہ ہے.
+'tooltip-ca-addsection' => 'نیا قطعہ شروع کیجئے',
+'tooltip-ca-viewsource' => 'یہ ایک محفوظ شدہ صفحہ ہے.
آپ اِس کا مآخذ دیکھ سکتے ہیں',
-'tooltip-ca-history' => 'صفحۂ ہٰذا کی سابقہ نظرثانی',
-'tooltip-ca-protect' => 'یہ صفحہ محفوظ کیجئے',
-'tooltip-ca-delete' => 'یہ صفحہ حذف کریں',
-'tooltip-ca-move' => 'یہ صفحہ منتقل کریں',
-'tooltip-ca-watch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست میں شامل کریں',
-'tooltip-ca-unwatch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست سے ہٹائیں',
-'tooltip-search' => 'تلاش {{SITENAME}}',
-'tooltip-search-go' => 'اگر بالکل اِسی نام کا صفحہ موجود ہو تو اُس صفحہ پر جاؤ',
-'tooltip-search-fulltext' => 'اس متن کیلئے صفحات تلاش کریں',
-'tooltip-p-logo' => 'سرورق پر جائیے',
-'tooltip-n-mainpage' => 'اصل صفحہ پر جائیے',
-'tooltip-n-portal' => 'منصوبہ کے متعلق، آپ کیا کرسکتے ہیں، چیزیں کہاں ڈھونڈنی ہیں',
-'tooltip-n-currentevents' => 'حالیہ واقعات پر پس منظری معلومات دیکھیئے',
-'tooltip-n-recentchanges' => 'ویکی میں حالیہ تبدیلیوں کی فہرست',
-'tooltip-n-randompage' => 'ایک تصادفی صفحہ لائیے',
-'tooltip-n-help' => 'ڈھونڈ نکالنے کی جگہ',
-'tooltip-t-whatlinkshere' => 'اُن تمام ویکی صفحات کی فہرست جن کا یہاں ربط ہے',
-'tooltip-t-recentchangeslinked' => 'اِس صفحہ سے مربوط صفحات میں حالیہ تبدیلیاں',
-'tooltip-feed-rss' => 'اِس صفحہ کیلئے اسس خورد',
-'tooltip-feed-atom' => 'اِس صفحہ کیلئے اٹوم خورد',
-'tooltip-t-contributions' => 'نئی تدوین →',
-'tooltip-t-emailuser' => 'اِس صارف کو برقی خط ارسال کریں',
-'tooltip-t-upload' => 'زبراثقالِ ملفات',
-'tooltip-t-specialpages' => 'تمام خاص صفحات کی فہرست',
-'tooltip-t-print' => 'اِس صفحہ کا قابلِ طبعہ نسخہ',
-'tooltip-t-permalink' => 'صفحہ کے موجودہ نظرثانی کا مستقل ربط',
-'tooltip-ca-nstab-main' => 'صفحۂ مضمون دیکھئے',
-'tooltip-ca-nstab-user' => 'اِس صارف کے مساہمات کی فہرست دیکھئے',
-'tooltip-ca-nstab-special' => 'یہ ایک خاص صفحہ ہے، آپ اِس میں ترمیم نہیں کرسکتے',
-'tooltip-ca-nstab-project' => 'صفحۂ صارف دیکھئے',
-'tooltip-ca-nstab-image' => 'صفحۂ ملف دیکھئے',
-'tooltip-minoredit' => 'اِس تدوین کو بطورِ معمولی ترمیم نشانزد کیجئے',
-'tooltip-save' => 'تبدیلیاں محفوظ کیجئے',
-'tooltip-preview' => 'برائے مہربانی! محفوظ کرنے سے پہلے تبدیلیوں کا پیشمنظر دیکھئے',
-'tooltip-diff' => 'دیکھئے کہ اپنے متن میں کیا تبدیلیاں کیں',
-'tooltip-watch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست میں شامل کریں',
+'tooltip-ca-history' => 'صفحۂ ہٰذا کی سابقہ نظرثانی',
+'tooltip-ca-protect' => 'یہ صفحہ محفوظ کیجئے',
+'tooltip-ca-delete' => 'یہ صفحہ حذف کریں',
+'tooltip-ca-move' => 'یہ صفحہ منتقل کریں',
+'tooltip-ca-watch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست میں شامل کریں',
+'tooltip-ca-unwatch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست سے ہٹائیں',
+'tooltip-search' => 'تلاش {{SITENAME}}',
+'tooltip-search-go' => 'اگر بالکل اِسی نام کا صفحہ موجود ہو تو اُس صفحہ پر جاؤ',
+'tooltip-search-fulltext' => 'اس متن کیلئے صفحات تلاش کریں',
+'tooltip-p-logo' => 'سرورق پر جائیے',
+'tooltip-n-mainpage' => 'اصل صفحہ پر جائیے',
+'tooltip-n-mainpage-description' => 'اصل صفحہ پر جائیے',
+'tooltip-n-portal' => 'منصوبہ کے متعلق، آپ کیا کرسکتے ہیں، چیزیں کہاں ڈھونڈنی ہیں',
+'tooltip-n-currentevents' => 'حالیہ واقعات پر پس منظری معلومات دیکھیئے',
+'tooltip-n-recentchanges' => 'ویکی میں حالیہ تبدیلیوں کی فہرست',
+'tooltip-n-randompage' => 'ایک تصادفی صفحہ لائیے',
+'tooltip-n-help' => 'ڈھونڈ نکالنے کی جگہ',
+'tooltip-t-whatlinkshere' => 'اُن تمام ویکی صفحات کی فہرست جن کا یہاں ربط ہے',
+'tooltip-t-recentchangeslinked' => 'اِس صفحہ سے مربوط صفحات میں حالیہ تبدیلیاں',
+'tooltip-feed-rss' => 'اِس صفحہ کیلئے اسس خورد',
+'tooltip-feed-atom' => 'اِس صفحہ کیلئے اٹوم خورد',
+'tooltip-t-contributions' => 'نئی تدوین →',
+'tooltip-t-emailuser' => 'اِس صارف کو برقی خط ارسال کریں',
+'tooltip-t-upload' => 'زبراثقالِ ملفات',
+'tooltip-t-specialpages' => 'تمام خاص صفحات کی فہرست',
+'tooltip-t-print' => 'اِس صفحہ کا قابلِ طبعہ نسخہ',
+'tooltip-t-permalink' => 'صفحہ کے موجودہ نظرثانی کا مستقل ربط',
+'tooltip-ca-nstab-main' => 'صفحۂ مضمون دیکھئے',
+'tooltip-ca-nstab-user' => 'اِس صارف کے مساہمات کی فہرست دیکھئے',
+'tooltip-ca-nstab-special' => 'یہ ایک خاص صفحہ ہے، آپ اِس میں ترمیم نہیں کرسکتے',
+'tooltip-ca-nstab-project' => 'صفحۂ صارف دیکھئے',
+'tooltip-ca-nstab-image' => 'صفحۂ ملف دیکھئے',
+'tooltip-minoredit' => 'اِس تدوین کو بطورِ معمولی ترمیم نشانزد کیجئے',
+'tooltip-save' => 'تبدیلیاں محفوظ کیجئے',
+'tooltip-preview' => 'برائے مہربانی! محفوظ کرنے سے پہلے تبدیلیوں کا پیشمنظر دیکھئے',
+'tooltip-diff' => 'دیکھئے کہ اپنے متن میں کیا تبدیلیاں کیں',
+'tooltip-watch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست میں شامل کریں',
# Attribution
'anonymous' => '{{SITENAME}} گمنام صارف',
'others' => 'دیگر',
+# Math errors
+'math_failure' => 'تجزیہ میں ناکام',
+'math_unknown_error' => 'نامعلوم غلطی',
+'math_unknown_function' => 'نامعلوم فعل',
+'math_syntax_error' => 'نحوی غلطی',
+'math_image_error' => 'PNG; کی تحویل ناکام
+latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد دوبارہ تحویل کی کوشش کیجئے.',
+
# Image deletion
'deletedrevision' => 'حذف شدہ پرانی ترمیم $1۔',
@@ -1273,7 +1349,7 @@ latex، dvips، gs کی صحیح تنصیب کی جانچ کرنے کے بعد
'autosumm-new' => 'نیا صفحہ: $1',
# Special:Version
-'version' => 'ورژن', # Not used as normal message but as header for the special page itself
+'version' => 'ورژن',
# Special:SpecialPages
'specialpages' => 'خصوصی صفحات',
diff --git a/languages/messages/MessagesUz.php b/languages/messages/MessagesUz.php
index 90dba22f..8f214ecd 100644
--- a/languages/messages/MessagesUz.php
+++ b/languages/messages/MessagesUz.php
@@ -119,15 +119,17 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqida ko'p so'raladigan savollar]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki yangi versiyasi chiqqanda xabar berish ro'yxati]",
-'about' => 'Haqida',
-'newwindow' => '(yangi oynada ochiladi)',
-'cancel' => 'Voz kechish',
+'about' => 'Haqida',
+'newwindow' => '(yangi oynada ochiladi)',
+'cancel' => 'Voz kechish',
+'mytalk' => 'Suhbatim',
+'anontalk' => 'Bu IP uchun suhbat',
+'navigation' => 'Saytda harakatlanish',
+'and' => '&#32;va',
+
+# Cologne Blue skin
'qbedit' => 'Tahrirlash',
'qbspecialpages' => 'Maxsus sahifalar',
-'mytalk' => 'Suhbatim',
-'anontalk' => 'Bu IP uchun suhbat',
-'navigation' => 'Saytda harakatlanish',
-'and' => '&#32;va',
'errorpagetitle' => 'Xato',
'returnto' => '$1 sahifasiga qaytish.',
@@ -159,7 +161,7 @@ $messages = array(
'otherlanguages' => 'Boshqa tillarda',
'redirectedfrom' => '($1dan yoʻnaltirildi)',
'redirectpagesub' => 'Yoʻnaltiruvchi sahifa',
-'lastmodifiedat' => 'Bu sahifa oxirgi marta $2, $1 sanasida tahrirlangan.', # $1 date, $2 time
+'lastmodifiedat' => 'Bu sahifa oxirgi marta $2, $1 sanasida tahrirlangan.',
'viewcount' => 'Bu sahifaga {{PLURAL:$1|bir marta|$1 marta}} murojaat qilingan.',
'jumpto' => 'Oʻtish:',
'jumptonavigation' => 'foydalanish',
@@ -233,7 +235,6 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
'createaccount' => 'Hisob yaratish',
'gotaccount' => "Hisobingiz bormi? '''$1'''.",
'gotaccountlink' => 'Kirish',
-'yourrealname' => 'Haqiqiy ism *:',
'loginsuccesstitle' => 'Kirish muvaffaqiyatli amalga oshdi',
'loginsuccess' => "'''{{SITENAME}}ga \"\$1\" foydalanuvchi nomi bilan kirdingiz.'''",
'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
@@ -258,15 +259,15 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
'sig_tip' => 'Imzoingiz va sana',
# Edit pages
-'summary' => 'Qisqa izoh:',
-'minoredit' => 'Bu kichik tahrir',
-'watchthis' => 'Sahifani kuzatish',
-'savearticle' => 'Saqlash',
-'preview' => "Ko'rib chiqish",
-'showpreview' => "Ko'rib chiqish",
-'showdiff' => "O'zgarishlarni ko'rsatish",
-'anoneditwarning' => "'''Diqqat:''' Siz tizimga kirmagansiz. Ushbu sahifa tarixida Sizning IP manzilingiz yozib qolinadi.",
-'blockedtext' => "'''Siz (foydalanuvchi ismingiz yoki IP manzilingiz) tahrir qilishdan chetlashtirildingiz.'''
+'summary' => 'Qisqa izoh:',
+'minoredit' => 'Bu kichik tahrir',
+'watchthis' => 'Sahifani kuzatish',
+'savearticle' => 'Saqlash',
+'preview' => "Ko'rib chiqish",
+'showpreview' => "Ko'rib chiqish",
+'showdiff' => "O'zgarishlarni ko'rsatish",
+'anoneditwarning' => "'''Diqqat:''' Siz tizimga kirmagansiz. Ushbu sahifa tarixida Sizning IP manzilingiz yozib qolinadi.",
+'blockedtext' => "'''Siz (foydalanuvchi ismingiz yoki IP manzilingiz) tahrir qilishdan chetlashtirildingiz.'''
Sizni $1 chetlashtirdi. Bunga sabab: ''$2''.
@@ -275,31 +276,31 @@ Sizni $1 chetlashtirdi. Bunga sabab: ''$2''.
Siz $1 yoki boshqa [[{{MediaWiki:Grouppage-sysop}}|administrator]] bilan bogʻlanib, arz qilishingiz mumkin.
Sizning hozirgi IP manzilingiz - $3, chetlashtirish raqamingiz - #$5. Arizaga bularni ilova qilishingiz mumkin.",
-'newarticle' => '(Yangi)',
-'newarticletext' => "Bu sahifa hali mavjud emas.
+'newarticle' => '(Yangi)',
+'newarticletext' => "Bu sahifa hali mavjud emas.
Sahifani yaratish uchun quyida matn kiritishingiz mumkin (qo'shimcha axborot uchun [[{{MediaWiki:Helppage}}|yordam sahifasini]] ko'ring).
Agar bu sahifaga xatolik sabab kelgan bo'lsangiz brauzeringizning '''orqaga''' tugmasini bosing.",
-'noarticletext' => 'Bu sahifada hozircha hech qanday matn yoʻq. Siz bu sarlavhani boshqa sahifalardan [[Special:Search/{{PAGENAME}}|qidirishingiz]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tegishli loglarga qarashingiz] yoki bu sahifani [{{fullurl:{{FULLPAGENAME}}|action=edit}} tahrirlashingiz]</span> mumkin.',
-'clearyourcache' => "'''Etibor bering:''' O'zgartirishlaringiz ko'rish uchun, yangi moslamalaringizning saqlashdan keyin, brauser keshini tozalash kerak:<br />
+'noarticletext' => 'Bu sahifada hozircha hech qanday matn yoʻq. Siz bu sarlavhani boshqa sahifalardan [[Special:Search/{{PAGENAME}}|qidirishingiz]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tegishli loglarga qarashingiz] yoki bu sahifani [{{fullurl:{{FULLPAGENAME}}|action=edit}} tahrirlashingiz]</span> mumkin.',
+'clearyourcache' => "'''Etibor bering:''' O'zgartirishlaringiz ko'rish uchun, yangi moslamalaringizning saqlashdan keyin, brauser keshini tozalash kerak:<br />
'''Mozilla / Firefox:''' ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari:''' ''Cmd+Shift+R'', '''Konqueror:''' ''F5'', '''Opera:''' ''Tools → Preferences'' orqali keshni tozalang.",
-'previewnote' => "'''Bu shunchaki ko'rib chiqish. O'zgarishlar hali saqlangani yo'q!'''",
-'editing' => '$1 tahrirlanmoqda',
-'editingsection' => '$1 (boʻlim) tahrirlanmoqda',
-'copyrightwarning' => "Iltimos, {{SITENAME}}ga yuklangan har qanday axborot $2 ostida tarqatilishiga diqqat qiling (batafsil ma'lumot uchun $1ni ko'ring).
+'previewnote' => "'''Bu shunchaki ko'rib chiqish. O'zgarishlar hali saqlangani yo'q!'''",
+'editing' => '$1 tahrirlanmoqda',
+'editingsection' => '$1 (boʻlim) tahrirlanmoqda',
+'copyrightwarning' => "Iltimos, {{SITENAME}}ga yuklangan har qanday axborot $2 ostida tarqatilishiga diqqat qiling (batafsil ma'lumot uchun $1ni ko'ring).
Agar yozganlaringiz keyinchalik tahrir qilinishi va qayta tarqatilishiga rozi bo'lmasangiz, u holda bu yerga yozmang.<br />
Siz shuningdek bu yozganlaringiz sizniki yoki erkin litsenziya ostida ekanligini va'da qilmoqdasiz.
'''MUALLIFLIK HUQUQLARI BILAN HIMOYALANGAN ISHLARNI ZINHOR BERUXSAT YUBORMANG!'''",
-'copyrightwarning2' => "Iltimos, shuni esda tutingki, {{SITENAME}} sahifalaridagi barcha matnlar boshqa foydalanuvchilar tomonidan tahrirlanishi, almashtirilishi yoki o'chirilishi mumkin. Agar siz yozgan ma'lumotlaringizni bunday tartibda tahrirlanishiga rozi bo'lmasangiz, unda uni bu yerga joylashtirmang.<br />
+'copyrightwarning2' => "Iltimos, shuni esda tutingki, {{SITENAME}} sahifalaridagi barcha matnlar boshqa foydalanuvchilar tomonidan tahrirlanishi, almashtirilishi yoki o'chirilishi mumkin. Agar siz yozgan ma'lumotlaringizni bunday tartibda tahrirlanishiga rozi bo'lmasangiz, unda uni bu yerga joylashtirmang.<br />
Bundan tashqari, siz ushbu ma'lumotlarni o'zingiz yozgan bo'lishingiz yoki ruxsat berilgan internet manzilidan yoki shu kabi erkin resursdan nusxa olgan bo'lishingiz lozim (Qo'shimcha ma'lumotlar ushun $1 sahifasiga murojaat qiling).
'''MUALLIFLIK HUQUQI QO'YILGAN ISHLARNI RUXSATSIZ BU YERGA JOYLASHTIRMANG!'''",
-'longpagewarning' => "'''DIQQAT: Ushbu sahifa hajmi $1 kilobaytdir; ayrim browser'lar 32 kb dan oshiq hajmli sahifalarni tahrirlashda muammolarga duch kelishi mumkin.
+'longpagewarning' => "'''DIQQAT: Ushbu sahifa hajmi $1 kilobaytdir; ayrim browser'lar 32 kb dan oshiq hajmli sahifalarni tahrirlashda muammolarga duch kelishi mumkin.
Agar sizda shunday muammolar yuzaga kelsa, iltimos, sahifani butunlay emas, qismlab tahrirlang.'''",
-'templatesused' => 'Ushbu sahifada ishlatilgan andozalar:',
-'template-protected' => '(himoyalangan)',
-'template-semiprotected' => '(yarim-himoyalangan)',
-'nocreatetext' => 'Ushbu sayt yangi sahifa yaratishni taqiqlagan.
+'templatesused' => 'Ushbu sahifada ishlatilgan andozalar:',
+'template-protected' => '(himoyalangan)',
+'template-semiprotected' => '(yarim-himoyalangan)',
+'nocreatetext' => 'Ushbu sayt yangi sahifa yaratishni taqiqlagan.
Ortga qaytib, mavjud sahifani tahrirlashingiz yoki [[Special:UserLogin|tizimga kirishingiz]] mumkin.',
-'recreate-deleted-warn' => "'''Diqqat: Siz avval yoʻqotilgan sahifani yana yaratmoqchisiz.'''
+'recreate-moveddeleted-warn' => "'''Diqqat: Siz avval yoʻqotilgan sahifani yana yaratmoqchisiz.'''
Bu sahifani yaratishda davom etishdan avval uning nega avval yoʻqotilgani bilan qiziqib koʻring.
Qulaylik uchun quyida yoʻqotilish qaydlari keltirilgan:",
@@ -337,13 +338,11 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
'searchresulttext' => "{{SITENAME}}da qidirish haqida qo'shimcha ma'lumotga ega bo'lishini xoxlasangiz, [[{{MediaWiki:Helppage}}|{{SITENAME}}da qidiruv]] sahifasini o'qing.",
'searchsubtitle' => '\'\'\'[[:$1]]\'\'\'ni qidirdingiz ([[Special:Prefixindex/$1|"$1" bilan boshlanadigan sahifalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"ga bogʻlangan sahifalar]])',
'searchsubtitleinvalid' => "'''$1'''ni qidirdingiz",
-'noexactmatch' => "'''\"\$1\" nomli birorta ham sahifa yo'q.''' Bu sahifani [[:\$1|yaratishingiz]] mumkin.",
-'noexactmatch-nocreate' => "'''\"\$1\" sarlavhali sahifa yoʻq.'''",
'notitlematches' => 'Bunday sarlavha topilmadi',
'notextmatches' => 'Bunday matn topilmadi',
'prevn' => 'oldingi $1',
-'nextn' => 'keyingi $1',
-'viewprevnext' => "Ko'rish ($1) ($2) ($3).",
+'nextn' => 'keyingi {{PLURAL:$1|$1}}',
+'viewprevnext' => "Ko'rish ($1 {{int:pipe-separator}} $2) ($3).",
'searchhelp-url' => 'Help:Mundarija',
'search-result-size' => '$1 ({{PLURAL:$2|1 soʻz|$2 soʻz}})',
'search-redirect' => '(yoʻnaltirish $1)',
@@ -351,7 +350,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
'search-suggest' => 'Balki buni nazarda tutgandirsiz: $1',
'search-interwiki-default' => '$1 natijalar:',
'showingresults' => "#<b>$2</b> boshlanayotgan <b>$1</b> natijalar ko'rsatilyapti.",
-'showingresultstotal' => "Quyida {{PLURAL:$4|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}} koʻrsatilgan",
'powersearch' => 'Qidiruv',
'powersearch-ns' => 'Bu nom-fazolarda izla:',
'powersearch-redir' => 'Yoʻnaltirishlarni koʻrsat',
@@ -360,18 +358,19 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
# Preferences page
'preferences' => 'Moslamalar',
'mypreferences' => 'Moslamalarim',
-'skin' => "Tashqi ko'rinish",
-'math' => 'Formulalar',
-'datetime' => 'Sana va vaqt',
+'prefs-skin' => "Tashqi ko'rinish",
+'prefs-math' => 'Formulalar',
+'prefs-datetime' => 'Sana va vaqt',
'prefs-personal' => "Shaxsiy ma'lumotlar",
'prefs-rc' => "Yangi o'zgartirishlar",
'prefs-watchlist' => "Kuzatuv ro'yxati",
'prefs-misc' => 'Boshqa moslamalar',
'saveprefs' => 'Saqlash',
'resetprefs' => 'Bekor qilish',
-'textboxsize' => 'Tahrirlash',
+'prefs-editing' => 'Tahrirlash',
'searchresultshead' => 'Qidiruv natijalari',
-'files' => 'Fayllar',
+'prefs-files' => 'Fayllar',
+'yourrealname' => 'Haqiqiy ism *:',
# Groups
'group-sysop' => 'Administratorlar',
@@ -413,6 +412,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
'listfiles' => 'Fayllar roʻyxati',
# File description page
+'file-anchor-link' => 'Fayl',
'filehist' => 'Fayl tarixi',
'filehist-help' => 'Faylning biror paytdagi holatini koʻrish uchun tegishli sana/vaqtga bosingiz.',
'filehist-current' => 'joriy',
@@ -424,8 +424,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
'imagelinks' => 'Fayllarga ishoratlar',
'linkstoimage' => 'Bu faylga quyidagi {{PLURAL:$1|sahifa|$1 sahifalar}} bogʻlangan:',
'nolinkstoimage' => 'Bu faylga bogʻlangan sahifalar yoʻq.',
-'sharedupload' => 'Ushbu fayl umumiy joyga yuklangandir va boshqa loyihalarda ishlatilishi mumkin.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'fayl haqida sahifa',
+'sharedupload' => 'Ushbu fayl umumiy joyga yuklangandir va boshqa loyihalarda ishlatilishi mumkin.',
'uploadnewversion-linktext' => 'Bu faylning yangi versiyasini yukla',
# Unused templates
@@ -517,7 +516,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
# Protect
'protectlogpage' => 'Himoyalash qaydlari',
'protect-level-sysop' => 'Faqat administratorlar uchun',
-'protect-expiry-options' => '2 soat:2 hours,1 kun:1 day,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 soat:2 hours,1 kun:1 day,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
# Restrictions (nouns)
'restriction-edit' => 'Tahrirlash',
@@ -537,6 +536,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
'sp-contributions-newbies' => 'Faqatgina yangi foydalanuvchilarning hissalarini koʻrsat',
'sp-contributions-blocklog' => 'Chetlashtirish qaydlari',
+'sp-contributions-talk' => 'Munozara',
'sp-contributions-search' => 'Hissalarni qidir',
'sp-contributions-username' => 'IP manzil yoki foydalanuvchi ismi:',
'sp-contributions-submit' => 'Qidir',
@@ -552,7 +552,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
# Block/unblock
'blockip' => 'Foydalanuvchini chetlashtir',
-'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
'ipblocklist' => 'Chetlashtirilgan IP manzillari va foydalanuvchilar',
'blocklink' => 'chetlashtir',
'contribslink' => 'hissasi',
@@ -562,7 +562,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
'movearticle' => "Sahifani ko'chirish",
'movepagebtn' => 'Sahifani koʻchir',
'pagemovedsub' => 'Koʻchirildi',
-'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'',
'1movedto2' => "[[$1]] [[$2]]ga ko'chirildi",
'movelogpage' => 'Koʻchirish qaydlari',
'movereason' => 'Sabab:',
diff --git a/languages/messages/MessagesVe.php b/languages/messages/MessagesVe.php
index 8a07aea9..21715a5d 100644
--- a/languages/messages/MessagesVe.php
+++ b/languages/messages/MessagesVe.php
@@ -28,10 +28,10 @@ $messages = array(
# Login and logout pages
'yourname' => 'Dzina ḽa mushumisi:',
'yourpassword' => 'Phasiwede:',
-'username' => 'Dzina ḽa mushumisi:',
# Preferences page
'changepassword' => 'Shandukisani phasiwede',
+'username' => 'Dzina ḽa mushumisi:',
# Miscellaneous special pages
'newpages-username' => 'Dzina ḽa mushumisi:',
diff --git a/languages/messages/MessagesVec.php b/languages/messages/MessagesVec.php
index 848555db..393f1a92 100644
--- a/languages/messages/MessagesVec.php
+++ b/languages/messages/MessagesVec.php
@@ -16,6 +16,10 @@
* @author לערי ריינהארט
*/
+$magicWords = array(
+ 'redirect' => array( '0', '#VARDA', '#RINVIA', '#RINVIO', '#RIMANDO', '#REDIRECT' ),
+);
+
$fallback = 'it';
$namespaceNames = array(
@@ -29,10 +33,10 @@ $namespaceNames = array(
NS_FILE_TALK => 'Discussion_file',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Discussion_template',
- NS_HELP => 'Aiuto',
- NS_HELP_TALK => 'Discussion_aiuto',
+ NS_TEMPLATE => 'Modèl',
+ NS_TEMPLATE_TALK => 'Discussion_modèl',
+ NS_HELP => 'Ajuto',
+ NS_HELP_TALK => 'Discussion_ajuto',
NS_CATEGORY => 'Categoria',
NS_CATEGORY_TALK => 'Discussion_categoria',
);
@@ -40,6 +44,9 @@ $namespaceNames = array(
$namespaceAliases = array(
'Imagine' => NS_FILE,
'Discussion_imagine' => NS_FILE_TALK,
+ 'Discussion_template' => NS_TEMPLATE_TALK,
+ 'Aiuto' => NS_HELP,
+ 'Discussion_aiuto' => NS_HELP_TALK,
);
$specialPageAliases = array(
@@ -53,8 +60,8 @@ $specialPageAliases = array(
'Watchlist' => array( 'TegnùiDeOcio' ),
'Recentchanges' => array( 'ÙltimiCanbiamenti' ),
'Upload' => array( 'Carga' ),
- 'Listfiles' => array( 'Imagini' ),
- 'Newimages' => array( 'ImaginiReçenti' ),
+ 'Listfiles' => array( 'ListaFile' ),
+ 'Newimages' => array( 'FileNovi' ),
'Listusers' => array( 'Utenti' ),
'Listgrouprights' => array( 'ListaDiritiDeGrupo' ),
'Statistics' => array( 'Statìsteghe' ),
@@ -62,18 +69,18 @@ $specialPageAliases = array(
'Lonelypages' => array( 'PàxenaÒrfana' ),
'Uncategorizedpages' => array( 'PàxeneSensaCategorie' ),
'Uncategorizedcategories' => array( 'CategorieSensaCategorie' ),
- 'Uncategorizedimages' => array( 'ImaginiSensaCategorie' ),
- 'Uncategorizedtemplates' => array( 'TemplateMiaCategorizà' ),
+ 'Uncategorizedimages' => array( 'FileSensaCategorie' ),
+ 'Uncategorizedtemplates' => array( 'ModèiMiaCategorizà' ),
'Unusedcategories' => array( 'CategorieMiaDoparà' ),
- 'Unusedimages' => array( 'ImaginiMiaDoparà' ),
+ 'Unusedimages' => array( 'FileMiaDoparà' ),
'Wantedpages' => array( 'PàxeneRichieste' ),
'Wantedcategories' => array( 'CategorieRichieste' ),
'Wantedfiles' => array( 'FileRichiesti' ),
- 'Wantedtemplates' => array( 'TemplateRichiesti' ),
+ 'Wantedtemplates' => array( 'ModèiRichiesti' ),
'Mostlinked' => array( 'PàxenePiassèRiciamà' ),
'Mostlinkedcategories' => array( 'CategoriePiassèRiciamà' ),
- 'Mostlinkedtemplates' => array( 'TemplatePiassèDoparà' ),
- 'Mostimages' => array( 'ImaginiPiassèRiciamà' ),
+ 'Mostlinkedtemplates' => array( 'ModèiPiassèDoparà' ),
+ 'Mostimages' => array( 'FilePiassèRiciamà' ),
'Mostcategories' => array( 'PàxeneConPiassèCategorie' ),
'Mostrevisions' => array( 'PàxeneConPiassèRevision' ),
'Fewestrevisions' => array( 'PàxeneConMancoRevision' ),
@@ -111,7 +118,7 @@ $specialPageAliases = array(
'Unwatchedpages' => array( 'PàxeneMiaTegnùDeOcio' ),
'Listredirects' => array( 'Rimandi' ),
'Revisiondelete' => array( 'ScancelaRevision' ),
- 'Unusedtemplates' => array( 'TemplateMiaDoparà' ),
+ 'Unusedtemplates' => array( 'ModèiMiaDoparà' ),
'Randomredirect' => array( 'RImandoCasuale' ),
'Mypage' => array( 'LaMePàxenaUtente' ),
'Mytalk' => array( 'LeMeDiscussion' ),
@@ -129,6 +136,7 @@ $specialPageAliases = array(
'LinkSearch' => array( 'SercaLigamenti' ),
'DeletedContributions' => array( 'ContributiScancelà' ),
'Tags' => array( 'Tag' ),
+ 'Activeusers' => array( 'UtentiAtivi' ),
);
$messages = array(
@@ -162,6 +170,7 @@ $messages = array(
'tog-enotifminoredits' => 'Segnałame via e-mail anca łe modifeghe minori',
'tog-enotifrevealaddr' => 'Riveła el me indiriso e-mail ne i mesaji de avixo',
'tog-shownumberswatching' => 'Mostra el numaro de utenti che i ga ła pajina en oservasion',
+'tog-oldsig' => 'Anteprima de ła firma atuałe:',
'tog-fancysig' => 'Interpreta i comandi wiki ne ła firma (sensa cołegamento automatego)',
'tog-externaleditor' => "Dopara par default on editor de testo esterno (soło par utenti esperti, el richiede l'uso de impostasion particołari sol proprio computer)",
'tog-externaldiff' => "Dopara par default on programa de diff esterno (soło par utenti esperti, el richiede l'uso de impostasion particołari sol proprio computer)",
@@ -183,6 +192,13 @@ $messages = array(
'underline-never' => 'Mai',
'underline-default' => 'Mantieni łe inpostasion del browser',
+# Font style option in Special:Preferences
+'editfont-style' => "Stiłe font de l'area de modifega:",
+'editfont-default' => 'Predefinio del browser',
+'editfont-monospace' => 'Font monospasio',
+'editfont-sansserif' => 'Font sans-serif',
+'editfont-serif' => 'Font serif',
+
# Dates
'sunday' => 'Domenega',
'monday' => 'Luni',
@@ -242,7 +258,7 @@ $messages = array(
'category-media-header' => 'File in te ła categoria "$1"',
'category-empty' => "''Al momento ła categoria no ła contien nisuna pajina né file multimediai.''",
'hidden-categories' => '{{PLURAL:$1|Categoria sconta|Categorie sconte}}',
-'hidden-category-category' => 'Categorie sconte', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Categorie sconte',
'category-subcat-count' => '{{PLURAL:$2|Sta categoria contien na unica sotocategoria, indicà de seguito.|Sta categoria contien {{PLURAL:$1|ła sotocategoria indicà|łe $1 sotocategorie indicae}} de seguito, so on totałe de $2.}}',
'category-subcat-count-limited' => 'Sta categoria ła contien {{PLURAL:$1|na sotocategoria, indicà|$1 sotocategorie, indicà}} de seguito.',
'category-article-count' => '{{PLURAL:$2|Sta categoria contien na unica pajina, indicà de seguito.|Sta categoria contien {{PLURAL:$1|ła pajina indicà|łe $1 pajine indicae}} de seguito, so on totałe de $2.}}',
@@ -250,6 +266,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Sta categoria ła contien on soło file, indicà de seguito.|Sta categoria ła contien {{PLURAL:$1|on file, indicà|$1 file, indicai}} de seguito, so on totałe de $2.}}',
'category-file-count-limited' => 'Sta categoria ła contien {{PLURAL:$1|el file indicà|i $1 file indicai}} de seguito.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pajine indicisae',
+'noindex-category' => 'Pajine no indicisae',
'mainpagetext' => "'''Instałasion de MediaWiki conpletà coretamente.'''",
'mainpagedocfooter' => "Varda ła [http://meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] par majori informasion so l'uso de sto software wiki.
@@ -262,10 +280,18 @@ I seguenti cołegamenti i xé en łengua inglese:
* [http://www.mediawiki.org/wiki/Manual:FAQ Domande frequenti so MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
-'about' => 'Informasion',
-'article' => 'Voxe',
-'newwindow' => '(se verze en na nova finestra)',
-'cancel' => 'Anuła',
+'about' => 'Informasion',
+'article' => 'Voxe',
+'newwindow' => '(se verze en na nova finestra)',
+'cancel' => 'Anuła',
+'moredotdotdot' => 'Altro...',
+'mypage' => 'Ła me pajina',
+'mytalk' => 'me discusion',
+'anontalk' => 'Discusion par sto IP',
+'navigation' => 'Navigasion',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Trova',
'qbbrowse' => 'Sfoja',
'qbedit' => 'Modifega',
@@ -273,15 +299,35 @@ I seguenti cołegamenti i xé en łengua inglese:
'qbpageinfo' => 'Informasion so ła pajina',
'qbmyoptions' => 'Łe me pajine',
'qbspecialpages' => 'Pajine spesałi',
-'moredotdotdot' => 'Altro...',
-'mypage' => 'Ła me pajina',
-'mytalk' => 'me discusion',
-'anontalk' => 'Discusion par sto IP',
-'navigation' => 'Navigasion',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metadati:',
+'faq' => 'Domande frequenti',
+'faqpage' => 'Project:Domande frequenti',
+
+# Vector skin
+'vector-action-addsection' => 'Zonta discusion',
+'vector-action-delete' => 'Scanseła',
+'vector-action-move' => 'Sposta',
+'vector-action-protect' => 'Protezi',
+'vector-action-undelete' => 'Recupera',
+'vector-action-unprotect' => 'Sbloca',
+'vector-namespace-category' => 'Categoria',
+'vector-namespace-help' => 'Ajuto',
+'vector-namespace-image' => 'File',
+'vector-namespace-main' => 'Pajina',
+'vector-namespace-media' => 'File multimediałe',
+'vector-namespace-mediawiki' => 'Mesajo',
+'vector-namespace-project' => 'Pajina de servisio',
+'vector-namespace-special' => 'Pajina spesałe',
+'vector-namespace-talk' => 'Discusion',
+'vector-namespace-template' => 'Modeło',
+'vector-namespace-user' => 'Pajina utente',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Modifega',
+'vector-view-history' => 'Visuałiza cronołosia',
+'vector-view-view' => 'Lezi',
+'vector-view-viewsource' => 'Visuałiza sorzente',
+'actions' => 'Asion',
+'namespaces' => 'Namespace',
+'variants' => 'Varianse',
'errorpagetitle' => 'Erore',
'returnto' => 'Torna a $1.',
@@ -331,18 +377,22 @@ I seguenti cołegamenti i xé en łengua inglese:
'otherlanguages' => 'Altre łengue',
'redirectedfrom' => '(Reindirisamento da <b>$1</b>)',
'redirectpagesub' => 'Pajina de reindirisamento',
-'lastmodifiedat' => 'Ultema modifega par ła pajina: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Ultema modifega par ła pajina: $2, $1.',
'viewcount' => 'Sta pajina xè sta leta {{PLURAL:$1|na olta|$1 olte}}.',
'protectedpage' => 'Pajina proteta',
'jumpto' => 'Va a:',
'jumptonavigation' => 'navigasion',
'jumptosearch' => 'serca',
+'view-pool-error' => 'En sto momento i server i xè sovracarichi.
+Tropi utenti i sta tentando de visuałisare sta pajina.
+Atendare qualche minudo prima de riprovare a cargare ła pajina.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Se parla de {{SITENAME}}',
'aboutpage' => 'Project:Se parla de',
'copyright' => "Contenui sojeti a licensa d'uso $1.",
-'copyrightpagename' => 'El copyright su {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Atuałità',
'currentevents-url' => 'Project:Atuałità',
@@ -350,14 +400,12 @@ I seguenti cołegamenti i xé en łengua inglese:
'disclaimerpage' => 'Project:Avertense xenerali',
'edithelp' => 'Guida',
'edithelppage' => 'Help:Modifega',
-'faq' => 'Domande frequenti',
-'faqpage' => 'Project:Domande frequenti',
'helppage' => 'Help:Ajuto',
'mainpage' => 'Pajina prinsipałe',
'mainpage-description' => 'Pajina prinsipałe',
'policy-url' => 'Project:Policy',
'portal' => 'Portałe Comunidà',
-'portal-url' => 'Project:Portałe Comunità',
+'portal-url' => 'Project:Portałe Comunidà',
'privacy' => 'Informasion so ła privacy',
'privacypage' => 'Project:Informassion su la privacy',
@@ -431,10 +479,6 @@ L\'ultima query invià al database xè sta:
"$1"
riciamà da ła funsion "$2".
El database ga restituio el seguente erore "$3: $4".',
-'noconnect' => 'Ghe xe qualche problema tènico su sta wiki, e no se riesse a conétarse al database.<br />
-$1',
-'nodb' => 'Selezion del database $1 mìa riussìa',
-'cachederror' => 'La seguente la xè na copia de riserva de la pagina richiesta, e la podarìa no èssar mìa agiornà.',
'laggedslavemode' => "'''Atension:''' ła pajina podaria no riportare i azornamenti pì resenti.",
'readonly' => 'Database blocà',
'enterlockreason' => 'Indicare el motivo del bloco, spesifegando el momento in cui xè presumibiłe che el venga rimoso',
@@ -452,6 +496,8 @@ Se prega de segnałare l\'acaduo a on [[Special:ListUsers/sysop|aministradore]]
'readonly_lag' => 'El database xè sta blocà automaticamente par consentire a i server co i database slave de sincronizarse con el master',
'internalerror' => 'Erore interno',
'internalerror_info' => 'Erore interno: $1',
+'fileappenderrorread' => 'No xè sta posibiłe lezare "$1" durante l\'azunta.',
+'fileappenderror' => 'Inposibiłe zontare "$1" a "$2".',
'filecopyerror' => 'Inposibiłe copiare el file "$1" en "$2".',
'filerenameerror' => 'Inposibiłe rinominare el file "$1" en "$2".',
'filedeleteerror' => 'Inposibiłe scansełare el file "$1".',
@@ -461,7 +507,8 @@ Se prega de segnałare l\'acaduo a on [[Special:ListUsers/sysop|aministradore]]
'unexpected' => 'Vałore inprevisto: "$1"="$2".',
'formerror' => 'Erore: inposibiłe inviare el moduło',
'badarticleerror' => 'Operasion no consentia par sta pajina.',
-'cannotdelete' => "No se pol mìa scancełar la pàxena o l'imagine richiesta.",
+'cannotdelete' => 'No xè sta posibiłe scansełare el file "$1".
+Podaria esare sta zà scansełà da qualcun altro.',
'badtitle' => 'Titoło no coreto',
'badtitletext' => "El titoło de ła pajina richiesta xè vodo, erà o con carateri no amesi opure el deriva da n'erore ne i cołegamenti tra siti wiki diversi o version en łengue diverse de ło steso sito.",
'perfcached' => 'I dati che segue i xè estrati da na copia "cache" del database, no ajornà en tenpo reałe.',
@@ -493,7 +540,6 @@ Par łe tradusion, considera ła posibiłità de usare [http://translatewiki.net
'virus-unknownscanner' => 'antivirus sconossuo:',
# Login and logout pages
-'logouttitle' => 'Logout utente',
'logouttext' => "'''Logout efetuà.'''
Se poe continuare ad usare {{SITENAME}} come utente anonimo opure [[Special:UserLogin|eseguire on novo aceso]], con ło steso nome utente o on nome difarente.
@@ -501,7 +547,6 @@ Nota che alcune pajine e potrebe continuare ad aparire come se el logout no el f
'welcomecreation' => "== Benvegnù, $1! ==
L'acount el xè sta creà coretamente. No dismentegare de personałizare łe [[Special:Preferences|prefarense de {{SITENAME}}]].",
-'loginpagetitle' => 'Login',
'yourname' => 'Nome utente:',
'yourpassword' => 'Password:',
'yourpasswordagain' => 'Ripeti ła password:',
@@ -512,6 +557,7 @@ L'acount el xè sta creà coretamente. No dismentegare de personałizare łe [[S
'nav-login-createaccount' => 'Entra / Rejistrate',
'loginprompt' => 'Par asedare a {{SITENAME}} xè nesesario abiłitare i cookie.',
'userlogin' => 'Entra / Rejistrate',
+'userloginnocreate' => 'Entra',
'logout' => 'Va fora',
'userlogout' => 'va fora',
'notloggedin' => 'Aceso no efetuà',
@@ -524,28 +570,8 @@ L'acount el xè sta creà coretamente. No dismentegare de personałizare łe [[S
'badretype' => 'Łe password inserie no e coinside tra loro.',
'userexists' => 'El nome utente inserio xè zà utiłizà.
Sceji on nome utente difarente.',
-'youremail' => 'La to e-mail',
-'username' => 'Nome utente',
-'uid' => 'ID utente:',
-'prefs-memberingroups' => 'Menbro {{PLURAL:$1|del grupo|dei grupi}}:',
-'yourrealname' => 'El to vero nome:',
-'yourlanguage' => 'Lengua:',
-'yourvariant' => 'Variante de linguaggio:',
-'yournick' => 'Firma:',
-'badsig' => 'Erór ne ła firma non standard, verifica i tag HTML.',
-'badsiglength' => 'La to firma la xe massa longa.
-La gà da verghe al massimo $1 {{PLURAL:$1|caràtere|caràteri}}.',
-'yourgender' => 'Sesso:',
-'gender-unknown' => 'Mia spesificà',
-'gender-male' => 'Mas-cio',
-'gender-female' => 'Fémena',
-'prefs-help-gender' => "Opzional: doparà par l'indicassion del gènare dal software. Sta informassion la sarà visìbile da tuti.",
-'email' => 'Indirizo e-mail',
-'prefs-help-realname' => 'Indicar el proprio nome vero no xe obligatorio; se te siegli de inserirlo, el vegnarà doparà par atribuir la paternità dei contenuti invià.',
'loginerror' => "Erore ne l'aceso",
-'prefs-help-email' => "L'inserimento del proprio indirizo e-mail no'l xe obligatorio, ma el te consente de farte spedir la password se te te la desménteghi.
-In più te pol anca farte contatar da altri tramite la to pagina personale o la pagina de discussion, sensa bisogno de rivelarghe la to identità.",
-'prefs-help-email-required' => "Xe richiesto l'indirizo e-mail.",
+'createaccounterror' => "Inposibiłe creare l'acount: $1",
'nocookiesnew' => "Ła rejistrasion xè sta conpletà, ma no xè sta posibiłe asedare a {{SITENAME}} parché i cookie i xè disativai. Riprovare l'aceso con el nome utente e ła password pena creai dopo aver ativà i cookie nel proprio browser.",
'nocookieslogin' => "L'aceso a {{SITENAME}} richiede l'uso de i cookie, che i risulta disativai. Riprovare l'aceso dopo aver ativà i cookie nel proprio browser.",
'noname' => 'El nome utente indicà no xè vałido.',
@@ -554,10 +580,11 @@ In più te pol anca farte contatar da altri tramite la to pagina personale o la
'nosuchuser' => 'Nol xè rejistrà alcun utente de nome "$1". I nomi utente i xè sensibiłi a łe majuscołe. Verifegare el nome inserio o [[Special:UserLogin/signup|creare on novo aceso]].',
'nosuchusershort' => 'Nol xè rejistrà alcun utente de nome "<nowiki>$1</nowiki>". Verifegare el nome inserio.',
'nouserspecified' => 'Xè nesesario spesifegare on nome utente.',
+'login-userblocked' => 'Sta utensa xè blocà. No xè posibiłe efetuare el login.',
'wrongpassword' => 'Ła password inseria no a xè coreta. Riprovare.',
'wrongpasswordempty' => 'No xè sta inseria alcuna password. Riprovare.',
-'passwordtooshort' => 'La to password no la xe mìa valida o la xe massa curta.
-La gà da contegner almanco {{PLURAL:$1|$1 caràtere|$1 caràteri}} e la gà da essar difarente dal to nome utente.',
+'passwordtooshort' => 'Łe password e ga da contegnere almanco {{PLURAL:$1|1 caratere|$1 carateri}}.',
+'password-name-match' => 'Ła password a ga da esare difarente dal nome utente.',
'mailmypassword' => 'Invia na nova password al me indiriso e-mail',
'passwordremindertitle' => 'Servisio Password Reminder de {{SITENAME}}',
'passwordremindertext' => 'Qualcheduni (probabilmente ti, da l\'indirizo IP $1) el gà domandà che ghe vegna mandà na nova password par {{SITENAME}} ($4).
@@ -567,6 +594,7 @@ La to password tenporànea la scade in {{PLURAL:$5|un zorno|$5 zorni}}.
Se no te sì mìa stà ti a far la domanda, opure t\'è vegnù in mente la password e no te vol più canbiarla, te pol ignorar sto mesagio e continuar a doparar la vecia password.',
'noemail' => 'Nissuna casela e-mail la risulta registrà par l\'Utente "$1".',
+'noemailcreate' => 'Te ghè da fornir un indirisso e-mail vàlido',
'passwordsent' => 'Na password nova la xe stà mandà a la casela e-mail registrà per l\'Utente "$1".
Par piaser, fà subito un login \'pena che la te riva.',
'blocked-mailpassword' => 'Per prevegner abusi, no se pol mìa doparar la funzion "Invia nova password" da un indirizo IP blocà.',
@@ -587,9 +615,11 @@ Inserissi un indirisso valido o svoda la casèła.",
La password par l\'utente "$2" la xe inpostà a "$3". Xe oportuno eseguir un acesso quanto prima e canbiar la password subito dopo.
Se l\'acesso el xe stà creà par sbaglio, se pol ignorar sto messagio.',
+'usernamehasherror' => "El nome utente no'l pode contegner caràteri hash",
'login-throttled' => 'Te ghè fato massa tentativi de autenticarte.
Spèta un tocheto prima de proàr da novo.',
'loginlanguagelabel' => 'Lengua: $1',
+'suspicious-userlogout' => 'Ła to richiesta de disconesion xè sta negà parché e a senbra invià da on browser non funsionante o on proxy de caching.',
# Password reset dialog
'resetpass' => 'Cànbia la password',
@@ -601,17 +631,13 @@ Spèta un tocheto prima de proàr da novo.',
'retypenew' => 'Riscrivi la password nova:',
'resetpass_submit' => 'Inposta la password e acedi al sito',
'resetpass_success' => 'La password la xe stà modificà. Acesso in corso...',
-'resetpass_bad_temporary' => 'Password tenporanea mìa valida. La password la podarìà èssar stà zà canbià, opure podarìà èssar stà richiesta na password tenporanea nova.',
'resetpass_forbidden' => 'No se pol modificar le password',
'resetpass-no-info' => "Te ghè da ver fato l'acesso per poder entrar in sta pàxena.",
'resetpass-submit-loggedin' => 'Cànbia password',
+'resetpass-submit-cancel' => 'Anùla',
'resetpass-wrong-oldpass' => 'Password corente o tenporanea mia valida.
Forse te ghè zà canbià la to password o te ghè domandà na password tenporanea nova.',
'resetpass-temp-password' => 'Password tenporanea:',
-'resetpass-log' => 'Registro dei reset de le password',
-'resetpass-logtext' => "Qua soto ghe xe un registro dei utenti la cui password la xe stà reinpostà da n'aministrador.",
-'resetpass-logentry' => 'gà canbià la password de $1',
-'resetpass-comment' => 'Motivassion del reset de la password:',
# Edit page toolbar
'bold_sample' => 'Graseto',
@@ -685,7 +711,6 @@ Se prega de specificar el to indirizo IP atuale ($3) e el nùmaro del bloco (ID
'blockededitsource' => "El testo de le '''to modifiche''' a '''$1''' el xe mostrà qua soto:",
'whitelistedittitle' => 'Bisogna èssar registrà par poder modificar le pàxene',
'whitelistedittext' => 'Par modificar łe pàxene ghe xè bisogno de $1.',
-'confirmedittitle' => 'Ghe vole ła conferma e-mail par scrivare',
'confirmedittext' => "Te ghè da confermar l'indirizo e-mail prima de editar le pàxene. Par piaxer inposta e conferma el to indirizo e--mail tramite le to [[Special:Preferences|preferenze]].",
'nosuchsectiontitle' => 'Sezion mia catà',
'nosuchsectiontext' => 'Te ghè sercà de modificar na sezion che no esiste.
@@ -707,9 +732,16 @@ De conseguenza xè necessario identificarlo tramite l'indirizo IP numerico.
Sto indirizo el pode èssar condivixo da diversi utenti.
Se te sì un utente anonimo e te ghè ricevù dei messagi che te secondo ti i xera direti a qualchedun altro, te podi [[Special:UserLogin/signup|registrarte]] o [[Special:UserLogin|efetuar el login]] par evitar confuxion con altri utenti anonimi in futuro.''",
'noarticletext' => 'En sto momento ła pajina richiesta xè voda. Xè posibiłe [[Special:Search/{{PAGENAME}}|sercare sto titoło]] ne łe altre pajine del sito, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}} sercare ne i rejistri corełai] opure [{{fullurl:{{FULLPAGENAME}}|action=edit}} modifegare ła pajina ora]</span>.',
+'noarticletext-nopermission' => 'In sto momento no ghe xe nissun testo su sta pagina.
+Te pol [[Special:Search/{{PAGENAME}}|sercar el titolo de sta pagina]] in altre pagine,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sercar in tei registri ligà a sta pagina]</span>.',
'userpage-userdoesnotexist' => 'L\'account "$1" no\'l corisponde mìa a un utente registrà. Verifica se te voli dal bon crear o modificar sta pagina.',
+'userpage-userdoesnotexist-view' => 'L\'utensa "$1" no la xe gnancora registrà.',
+'blocked-notice-logextract' => "Sto utente xè atualmente blocà.
+L'ultimo ełemento del rejistro de i blochi xè riportà de seguito par informasion:",
'clearyourcache' => "'''Ocio: dopo aver salvà, te ghè da netar la cache del to browser par védar i canbiamenti.''' Par '''Mozilla / Firefox / Safari:''' tien macà el boton de le majuscole e schiza \"Ricarica\", o senò maca ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' se te ghè el Macintosh); par '''Konqueror:''' schiza \"Ricarica\" o maca ''F5;'' par '''Opera:''' néta la cache in ''Strumenti → Preferenze;'' par '''Internet Explorer:''' tien macà ''Ctrl'' fin che te schizi ''Ricarica'', o maca ''Ctrl-F5.''",
-'usercssjsyoucanpreview' => "'''Sugerimento:''' se consiglia de doparar el boton 'Visualiza anteprima' par proàr i novi CSS o JavaScript prima de salvarli.",
+'usercssyoucanpreview' => "'''Sugerimento:''' se consiglia de doparar el boton 'Visualiza anteprima' par proàr i novi CSS o JavaScript prima de salvarli.",
+'userjsyoucanpreview' => "'''Sugerimento:''' se consiglia de doparar el boton 'Visualiza anteprima' par proàr i novi CSS o JavaScript prima de salvarli.",
'usercsspreview' => "'''Sta qua la xe solo n'anteprima del proprio CSS personal.
Le modifiche no le xe gnancora stà salvà!'''",
'userjspreview' => "'''Sta qua la xe solo n'anteprima par proar el proprio JavaScript personal; le modifiche no le xe gnancora stà salvà!'''",
@@ -756,28 +788,31 @@ long, which is longer than the maximum of $2 kilobytes. It cannot be saved.'''",
Par no pèrdarle, te pol copiar tuto quel che te ghè inserìo fin desso ne la casela de modifica, incolarlo in un programa de elaborazion de testi e salvarlo, intanto che te speti che i sbloca el database.'''
L'aministrador che gà blocà el database el gà dato la seguente spiegassion: $1",
-'protectedpagewarning' => "'''OCIO: Sta pagina la xe sta proteta e solo i aministradori i pode modificarla.'''",
-'semiprotectedpagewarning' => "'''Nota:''' Sta pàxena la xè stà blocà in modo che solo i utenti registrài i poda modefegarla.",
+'protectedpagewarning' => "'''Ocio: Sta pagina la xe sta proteta e solo i aministradori i pode modificarla.''' Sta qua la xe l'ultima operassion catà sul registro de la pagina:",
+'semiprotectedpagewarning' => "'''Nota:''' Sta pàxena la xè stà blocà in modo che solo i utenti registrài i poda modefegarla. Sta qua la xe l'ultima operassion catà sul registro de la pagina:",
'cascadeprotectedwarning' => "'''Ocio:''' Sta pagina la xe stà blocà in modo che solo i utenti con privilegi de aministrador i possa modificarla. Questo sucede parché la pagina la xe inclusa {{PLURAL:\$1|ne la pagina indicà de seguito, che la xe stà proteta|ne le pagine indicà de seguito, che le xe stà protete}} selezionando la protezion \"ricorsiva\":",
-'titleprotectedwarning' => "'''OCIO: Sta pàxena la xe stà blocà in modo che solo i utenti con [[Special:ListGroupRights|serti privilègi]] i le possa crear.'''",
-'templatesused' => 'Template doparà in sta pagina:',
-'templatesusedpreview' => 'Template doparà in sta anteprima:',
-'templatesusedsection' => 'Template doparà in sta sezion:',
+'titleprotectedwarning' => "'''OCIO: Sta pàxena la xe stà blocà in modo che solo i utenti con [[Special:ListGroupRights|serti privilègi]] i la possa crear.''' Sta qua la xe l'ultima operassion catà sul registro de la pagina:",
+'templatesused' => '{{PLURAL:$1|Modeło utiłizà|Modełi utiłizai}} en sta pajina:',
+'templatesusedpreview' => '{{PLURAL:$1|Modeło|Modełi}} doparà en sta anteprima:',
+'templatesusedsection' => '{{PLURAL:$1|Modèl|Modèi}} doparà in sta sezion:',
'template-protected' => '(proteto)',
'template-semiprotected' => '(semiproteto)',
'hiddencategories' => 'Sta pajina apartien a {{PLURAL:$1|na categoria nascosta|$1 categorie nascoste}}:',
'nocreatetitle' => 'Creazion de le pagine limitada',
'nocreatetext' => 'La possibilità de crear pagine nóve su {{SITENAME}} la xe stà limità ai soli utenti registrà. Se pol tornar indrìo e modificar na pagina esistente, opure [[Special:UserLogin|entrar o crear un nóvo acesso]].',
'nocreate-loggedin' => 'No te ghè i permessi necessari a crear pagine nove.',
+'sectioneditnotsupported-title' => 'Modifica de sezion mia suportà',
+'sectioneditnotsupported-text' => 'La modifica de singole sezion no le xe mia suportà su sta pagina.',
'permissionserrors' => 'Eror nei permessi',
'permissionserrorstext' => "No te ghè i permessi necessari ad eseguir l'azion richiesta, par {{PLURAL:$1|el seguente motivo|i seguenti motivi}}:",
'permissionserrorstext-withaction' => 'No se dispone de i parmesi nesesari par $2, par {{PLURAL:$1|el seguente modivo|i seguenti modivi}}:',
-'recreate-deleted-warn' => "'''Ocio: te stè par ricrear na pagina zà scancelà precedentemente.'''
+'recreate-moveddeleted-warn' => "'''Ocio: te stè par ricrear na pagina zà scancelà precedentemente.'''
Par piaser assicùrete che sia dal bon el caso de 'ndar vanti a modificar sta pagina.
-L'elenco de le relative scancelazion el vien riportà qua de seguito par comodità:",
-'deleted-notice' => "Sta pàxena la xe stà scancelà. L'elenco de le relative scancelassion el vien riportà de sèvito par informassion.",
-'deletelog-fulllog' => 'Varda el registro conpleto',
+L'elenco de i relativi spostamenti e scancelazion el vien riportà qua de seguito par comodità:",
+'moveddeleted-notice' => "Sta pàxena la xe stà scancelà.
+L'elenco dei relativi spostamenti e scancelassion el vien riportà qua soto par informassion.",
+'log-fulllog' => 'Varda registro conpleto',
'edit-hook-aborted' => "Modifica abortìa da parte de l'hook.
No xe stà dà nissuna spiegazion in merito.",
'edit-gone-missing' => 'No se riesse a agiornar la pàxena.
@@ -800,6 +835,7 @@ Sti argomenti i xe stà omessi.",
'post-expand-template-argument-category' => 'Pagine che contien dei modèi con argomenti mancanti',
'parser-template-loop-warning' => 'Xe stà catà un ciclo in tel modèl: [[$1]]',
'parser-template-recursion-depth-warning' => 'Xe stà rajunto el limite màssimo de ricorsion in tel modèl ($1)',
+'language-converter-depth-warning' => 'Limite de profondità del convertidor de lengua superà ($1)',
# "Undo" feature
'undo-success' => 'Sta modifica la pode èssar anulà. Verifica el confronto presentà de seguito par èssar sicuro che el contenuto el sia come te lo voli e quindi salva le modifiche par conpletar la procedura de anulamento.',
@@ -817,9 +853,9 @@ La motivazion del bloco fornìa da $3 la xe sta qua: ''$2''",
'viewpagelogs' => 'Visuałiza i rejistri rełativi a sta pajina.',
'nohistory' => 'La cronołogia de łe version de sta pàxena no la xè reperibiłe.',
'currentrev' => 'Version atuałe',
-'currentrev-asof' => 'Version corrente del $1',
-'revisionasof' => 'Revixion $1',
-'revision-info' => 'Version del $1, autor: $2', # Additionally available: $3: revision id
+'currentrev-asof' => 'Version atuałe de łe $1',
+'revisionasof' => 'Version de łe $1',
+'revision-info' => 'Version del $1, autor: $2',
'previousrevision' => '← Version pi vecia',
'nextrevision' => 'Version pì resente →',
'currentrevisionlink' => 'Version atuałe',
@@ -832,7 +868,7 @@ La motivazion del bloco fornìa da $3 la xe sta qua: ''$2''",
Legenda: '''({{int:cur}})''' = difarense co ła version atuałe, '''({{int:last}})''' = difarense co ła version presedente, '''{{int:minoreditletter}}''' = modifega minore",
'history-fieldset-title' => 'Scori ła cronołosia',
-'deletedrev' => '[scancełà]',
+'history-show-deleted' => 'Solo quei scancelà',
'histfirst' => 'Prima',
'histlast' => 'Ultema',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -841,70 +877,112 @@ Legenda: '''({{int:cur}})''' = difarense co ła version atuałe, '''({{int:last}
# Revision feed
'history-feed-title' => 'Cronołogia',
'history-feed-description' => 'Cronołogia de ła pàxena su sto sito',
-'history-feed-item-nocomment' => '$1 el $2', # user at time
+'history-feed-item-nocomment' => '$1 el $2',
'history-feed-empty' => 'La pàxena richiesta no la esiste; la podarìa èssar stà scancełà dal sito o rinominà. Verifica con la [[Special:Search|pàxena de riserca]] se ghe xè nove pàxene.',
# Revision deletion
-'rev-deleted-comment' => '(comento cavà)',
-'rev-deleted-user' => '(nome utente cavà)',
-'rev-deleted-event' => '(elemento cavà)',
-'rev-deleted-text-permission' => "Sta version de la pagina la xe stà '''scancelà'''.
-Consulta el [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} registro de scancelazion] par ulteriori detagli.",
-'rev-deleted-text-view' => "Sta version de la pagina la xe stà '''scancelà'''.
+'rev-deleted-comment' => '(comento cavà)',
+'rev-deleted-user' => '(nome utente cavà)',
+'rev-deleted-event' => '(elemento cavà)',
+'rev-deleted-user-contribs' => '[nome utente o indirisso IP cavà - modifica sconta dai contributi]',
+'rev-deleted-text-permission' => "Sta version de la pagina la xe stà '''scancelà'''.
+Varda el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelazion] par ulteriori detagli.",
+'rev-deleted-text-unhide' => "Sta version de la pàxena la xe sta '''scancelà'''.
+Varda el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelassion] par ulteriori detagli.
+Ai aministradori xe ancora consentìo [$1 vardar sta version] se i vole.",
+'rev-suppressed-text-unhide' => "Sta version de la pagina la xe stà '''cavà'''.
+Varda el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de rimozion] par ulteriori detagli.
+I aministratori i pode ancora [$1 vardar sta versione] se i vole.",
+'rev-deleted-text-view' => "Sta version de la pagina la xe stà '''scancelà'''.
El testo el pode èssar visualizà soltanto dai aministradori del sito.
-Consulta el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de scancelazion] par ulteriori detagli.",
-'rev-deleted-no-diff' => "No te pode vardar sta difarensa parché una de le revision la xe stà '''scancelà'''.
-Consulta el [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} registro de scancelassion] par savérghene piessè.",
-'rev-deleted-unhide-diff' => "Una dele revision de sta difarensa la xe stà '''scancelà'''.
-Consulta el [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} registro de scancelassion] par ulteriori detagli.
+Varda el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelazion] par ulteriori detagli.",
+'rev-suppressed-text-view' => "Sta version de la pagina la xe stà '''cavà'''.
+Solo i aministratori i pole ancora védarla.
+Varda el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de rimozion] par ulteriori detagli.",
+'rev-deleted-no-diff' => "No te pode vardar sta difarensa parché una de le revision la xe stà '''scancelà'''.
+Varda el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelassion] par savérghene piessè.",
+'rev-suppressed-no-diff' => "No te pol védar sta difarensa, parché una de le revision la xe stà '''scancelà'''.",
+'rev-deleted-unhide-diff' => "Una dele revision de sta difarensa la xe stà '''scancelà'''.
+Consulta el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelassion] par ulteriori detagli.
I aministradori i pode ancora [$1 vardar sta difarensa] se i vole.",
-'rev-delundel' => 'mostra/scondi',
-'revisiondelete' => 'Scanceła o ripristina version',
-'revdelete-nooldid-title' => 'Version mìa specificà',
-'revdelete-nooldid-text' => 'No xe stà specificà alcuna version de la pagina su cui eseguir sta funzion.',
-'revdelete-nologtype-title' => 'Nissun tipo de registro specificà',
-'revdelete-nologtype-text' => "No ti gà indicà nissun tipo de registro su cui eseguir l'azion.",
-'revdelete-toomanytargets-title' => 'Massa destinassioni',
-'revdelete-toomanytargets-text' => 'Te ghè indicà massa tipi de destinassion su cui eseguir sta operassion.',
-'revdelete-nologid-title' => 'Eròr de indicazion dei registri',
-'revdelete-nologid-text' => "Par eseguir sta funsion no te ghè indicà na destinassion par el registro opure el registro no l'esiste.",
-'revdelete-selected' => "'''{{PLURAL:$2|Version selezionà|Versioni selezionà}} de [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Evento del registro selezionà|Eventi del registro selezionè}}:'''",
-'revdelete-text' => "'''Le revision e le azion scancelàe le restarà visibili ne la cronologia de la pagina, ma parte del testo contegnùo no'l sarà visìbile al publico.'''
-
-I altri aministradori de {{SITENAME}} i podarà vardar istesso i contenuti sconti e ripristinarli atraverso questa stessa interfacia, se no xe stà inpostà altre limitazion.
-Par piaser conferma che te voli dal bon far sta scancelassion, che te conossi le conseguense e che te sì drio operar in conformità de le [[{{MediaWiki:Policy-url}}|linee-guida]].",
-'revdelete-suppress-text' => "La sopression la se dovarìa doparar '''solo''' in sti casi qua:
+'rev-suppressed-unhide-diff' => "Una dele revision de sta difarensa la xe stà '''sopressa'''.
+Consulta el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de sopression] par ulteriori detagli.
+I aministradori i pode ancora [$1 vardar sta difarensa] se i vole.",
+'rev-deleted-diff-view' => "Una dele revision de sta difarensa la xe stà '''scancelà'''.
+Come aministrador, te pol vardar el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de scancelassion] par ulteriori detagli.",
+'rev-suppressed-diff-view' => "Una dele revision de sta difarensa la xe stà '''sopressa'''.
+Come aminitrador, te pol vardar el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de sopression] par ulteriori detagli.",
+'rev-delundel' => 'mostra/scondi',
+'rev-showdeleted' => 'mostra',
+'revisiondelete' => 'Scanceła o ripristina version',
+'revdelete-nooldid-title' => 'Version mìa specificà',
+'revdelete-nooldid-text' => 'No xe stà specificà alcuna version de la pagina su cui eseguir sta funzion.',
+'revdelete-nologtype-title' => 'Nissun tipo de registro specificà',
+'revdelete-nologtype-text' => "No ti gà indicà nissun tipo de registro su cui eseguir l'azion.",
+'revdelete-nologid-title' => 'Eròr de indicazion dei registri',
+'revdelete-nologid-text' => "Par eseguir sta funsion no te ghè indicà na destinassion par el registro opure el registro no l'esiste.",
+'revdelete-no-file' => "El file indicà no l'esiste mia.",
+'revdelete-show-file-confirm' => 'Vuto dal bon vardar la version scancelà del file "<nowiki>$1</nowiki>" del $2 a le $3?',
+'revdelete-show-file-submit' => 'Sì',
+'revdelete-selected' => "'''{{PLURAL:$2|Version selezionà|Versioni selezionà}} de [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evento del registro selezionà|Eventi del registro selezionè}}:'''",
+'revdelete-text' => "'''Le revision e le azion scancelàe le restarà visibili ne la cronologia de la pagina, ma parte del testo contegnùo no'l sarà visìbile al publico.'''
+I altri aministradori de {{SITENAME}} i podarà vardar istesso i contenuti sconti e ripristinarli atraverso questa stessa interfacia, se no xe stà inpostà altre limitazion.",
+'revdelete-confirm' => 'Par piaser, conferma che vol far sta azion, che te capissi le so conseguense, e che te sì drio operar secondo le [[{{MediaWiki:Policy-url}}|linee guida]].',
+'revdelete-suppress-text' => "La sopression la se dovarìa doparar '''solo''' in sti casi qua:
* Informassion personali mia apropriate
*: ''indirissi de casa e nùmari de telefono, nùmari de previdensa sociale, etc.''",
-'revdelete-legend' => 'Inposta le seguenti limitazion su le versioni scancelàe:',
-'revdelete-hide-text' => 'Scondi el testo de ła version',
-'revdelete-hide-name' => 'Scondi azion e ogeto de la stessa',
-'revdelete-hide-comment' => "Scondi l'oggetto de ła modifega",
-'revdelete-hide-user' => "Scondi el nome o l'indirisso IP dell'autore",
-'revdelete-hide-restricted' => 'Scóndighe le informassion indicà anca ai aministradori',
-'revdelete-suppress' => 'Scondi le informazion anca ai aministradori',
-'revdelete-hide-image' => 'Scondi i contenuti del file',
-'revdelete-unsuppress' => 'Elimina le limitazion su le revision ripristinà',
-'revdelete-log' => 'Motivassion:',
-'revdelete-submit' => 'Àplica a ła revixion selezionà',
-'revdelete-logentry' => 'gà modificà la visibilità par una revision de [[$1]]',
-'logdelete-logentry' => "gà modificà la visibilità de l'evento [[$1]]",
-'revdelete-success' => "'''Visibilità de la revision ajornà coretamente.'''",
-'logdelete-success' => "'''Visibilità de l'evento inpostà coretamente.'''",
-'revdel-restore' => 'Canbia ła visibilità',
-'pagehist' => 'Cronologia de la pagina',
-'deletedhist' => 'Cronologia scancelà',
-'revdelete-content' => 'contenuto',
-'revdelete-summary' => 'modifica ogeto',
-'revdelete-uname' => 'nome utente',
-'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
-'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
-'revdelete-hid' => 'scondar $1',
-'revdelete-unhid' => 'mostrar $1',
-'revdelete-log-message' => '$1 par $2 {{PLURAL:$2|revision|revisioni}}',
-'logdelete-log-message' => '$1 par $2 {{PLURAL:$2|evento|eventi}}',
+'revdelete-legend' => 'Inposta le seguenti limitazion su le versioni scancelàe:',
+'revdelete-hide-text' => 'Scondi el testo de ła version',
+'revdelete-hide-image' => 'Scondi i contenuti del file',
+'revdelete-hide-name' => 'Scondi azion e ogeto de la stessa',
+'revdelete-hide-comment' => "Scondi l'oggetto de ła modifega",
+'revdelete-hide-user' => "Scondi el nome o l'indirisso IP dell'autore",
+'revdelete-hide-restricted' => 'Scóndighe le informassion indicà anca ai aministradori',
+'revdelete-radio-same' => '(no stà canbiar)',
+'revdelete-radio-set' => 'Sì',
+'revdelete-radio-unset' => 'No',
+'revdelete-suppress' => 'Scondi le informazion anca ai aministradori',
+'revdelete-unsuppress' => 'Elimina le limitazion su le revision ripristinà',
+'revdelete-log' => 'Motivassion:',
+'revdelete-submit' => 'Àplica a {{PLURAL:$1|la|le}} revision selezionà',
+'revdelete-logentry' => 'gà modificà la visibilità par una revision de [[$1]]',
+'logdelete-logentry' => "gà modificà la visibilità de l'evento [[$1]]",
+'revdelete-success' => "'''Visibilità de la revision ajornà coretamente.'''",
+'revdelete-failure' => "'''No se riesse a ajornar la visibilità de la version:'''
+$1",
+'logdelete-success' => "'''Visibilità de l'evento inpostà coretamente.'''",
+'logdelete-failure' => "'''No se riesse a inpostar la visibilità 'ntel registro:'''
+$1",
+'revdel-restore' => 'Canbia ła visibilità',
+'pagehist' => 'Cronologia de la pagina',
+'deletedhist' => 'Cronologia scancelà',
+'revdelete-content' => 'contenuto',
+'revdelete-summary' => 'modifica ogeto',
+'revdelete-uname' => 'nome utente',
+'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
+'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
+'revdelete-hid' => 'scondar $1',
+'revdelete-unhid' => 'mostrar $1',
+'revdelete-log-message' => '$1 par $2 {{PLURAL:$2|revision|revisioni}}',
+'logdelete-log-message' => '$1 par $2 {{PLURAL:$2|evento|eventi}}',
+'revdelete-hide-current' => 'No se pol scondar la version datà $1 a le $2, parché la xe la version corente.',
+'revdelete-show-no-access' => 'No se pol réndar visibile la version datà $1 a le $2: la xe stà marcà come "ad acesso ristreto".
+No ti gà acesso su de ela.',
+'revdelete-modify-no-access' => 'No se riesse a modificar la version datà $1 a le $2: la xe stà marcà come "ad acesso ristreto".
+No ti gà acesso su de ela.',
+'revdelete-modify-missing' => 'No se riesse a modificar la version con ID $1: no la ghe xe sul database!',
+'revdelete-no-change' => "''Ocio:''' la version datà $1 a le $2 la gà zà le inpostassion de visibilità da ti richieste.",
+'revdelete-concurrent-change' => "No se riesse a modificar la version datà $1 a le $2: pararìa che qualchidun altro el gavesse canbià el stato de la version intanto che ti te sercavi de far la stessa roba. Daghe n'ociada sui registri.",
+'revdelete-only-restricted' => "Eròr sercando de scondar l'elemento datà $1 a le $2: no te podi inpedirghe ai aministradori de vardar na revision se no te selessioni al tenpo stesso una de le altre opzioni de restrizion.",
+'revdelete-reason-dropdown' => '*Motivassion pi comuni par la scancelassion
+** Violassion de copyright
+** Informassion personali inapropriàe',
+'revdelete-otherreason' => 'Altro:',
+'revdelete-reasonotherlist' => 'Altra motivassion',
+'revdelete-edit-reasonlist' => 'Modifica le motivazion par la scancelazion',
+'revdelete-offender' => 'Autor de la revision:',
# Suppression log
'suppressionlog' => 'Registro dei ocultamenti',
@@ -940,67 +1018,13 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'mergelogpagetext' => "Qua de seguito vien presentà na lista de le ultime operazion de unione de la cronologia de na pagina in un'altra.",
# Diffs
-'history-title' => "Cronołosia de łe modifeghe de ''$1''",
-'difference' => '(Difarense fra łe revision)',
-'lineno' => 'Riga $1:',
-'compareselectedversions' => 'Confronta łe version sełesionae',
-'visualcomparison' => 'Confronto visuale',
-'wikicodecomparison' => 'Confronto del wikitext',
-'editundo' => 'anuła',
-'diff-multi' => '({{PLURAL:$1|Una revision intermedia non mostrà|$1 revision intermedie non mostrà}}.)',
-'diff-movedto' => 'spostà a $1',
-'diff-styleadded' => '$1 stile zontà',
-'diff-added' => '$1 zontà',
-'diff-changedto' => 'canbià in $1',
-'diff-movedoutof' => 'spostà fora da $1',
-'diff-styleremoved' => 'stile $1 cavà',
-'diff-removed' => '$1 cavà',
-'diff-changedfrom' => 'canbià da $1',
-'diff-src' => 'fonte',
-'diff-withdestination' => "co' destinasion $1",
-'diff-with' => "&#32;co' $1 $2",
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'larghessa',
-'diff-height' => 'altessa',
-'diff-p' => "un '''paràgrafo'''",
-'diff-blockquote' => "na '''citasion'''",
-'diff-h1' => "na '''intestasion (livèl 1)'''",
-'diff-h2' => "na '''intestasion (livèl 2)'''",
-'diff-h3' => "na '''intestasion (livèl 3)'''",
-'diff-h4' => "na '''intestasion (livèl 4)'''",
-'diff-h5' => "na '''intestasion (livèl 5)'''",
-'diff-pre' => "un '''bloco za formatà'''",
-'diff-div' => "na '''division'''",
-'diff-ul' => "na '''lista mia ordenà'''",
-'diff-ol' => "na '''lista ordenà'''",
-'diff-li' => "un '''elemento de la lista'''",
-'diff-table' => "na '''tabèla'''",
-'diff-tbody' => "el '''contenuto de na tabèla'''",
-'diff-tr' => "na '''riga'''",
-'diff-td' => "na '''casèla'''",
-'diff-th' => "na '''intestasion'''",
-'diff-br' => "na '''interusion'''",
-'diff-hr' => "na '''riga orizontal'''",
-'diff-code' => "un '''toco de còdese da computer'''",
-'diff-dl' => "na '''lista de definissioni'''",
-'diff-dt' => "un '''termine de definission'''",
-'diff-dd' => "na '''definission'''",
-'diff-input' => "un '''input'''",
-'diff-form' => "un '''modulo'''",
-'diff-img' => "na '''imagine'''",
-'diff-span' => "un '''span'''",
-'diff-a' => "un '''colegamento'''",
-'diff-i' => "'''corsivo'''",
-'diff-b' => "'''grasseto'''",
-'diff-strong' => "'''grasseto'''",
-'diff-em' => "'''ènfasi'''",
-'diff-font' => "'''caràtere'''",
-'diff-big' => "'''grando'''",
-'diff-del' => "'''scancelà'''",
-'diff-tt' => "'''larghessa fissa'''",
-'diff-sub' => "'''àpice'''",
-'diff-sup' => "'''pèdice'''",
-'diff-strike' => "'''sbarà'''",
+'history-title' => "Cronołosia de łe modifeghe de ''$1''",
+'difference' => '(Difarense fra łe revision)',
+'lineno' => 'Riga $1:',
+'compareselectedversions' => 'Confronta łe version sełesionae',
+'showhideselectedversions' => 'Mostra/scondi version selessionà',
+'editundo' => 'anuła',
+'diff-multi' => '({{PLURAL:$1|Una revision intermedia non mostrà|$1 revision intermedie non mostrà}}.)',
# Search results
'searchresults' => 'Risultati de ła riserca',
@@ -1008,27 +1032,24 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'searchresulttext' => 'Par majori informasion so ła riserca interna de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Riserca de \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute łe pajine che e inisia par "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute łe pajine che e punta a "$1"]])',
'searchsubtitleinvalid' => "Riserca de '''$1'''",
-'noexactmatch' => "'''La pàxena \"\$1\" no ła esiste.''' Te pol [[:\$1|crearla desso]].",
-'noexactmatch-nocreate' => "'''No ghe xe nissuna pagina con titolo \"\$1\".'''",
'toomanymatches' => 'Xe stà catà massa corispondense, par piaser próa a modificar la richiesta.',
'titlematches' => 'Nei titołi de łe pàxene',
'notitlematches' => 'Nisuna corispondensa ne i titołi de łe pajine',
'textmatches' => 'Corispondense nel testo de le pagine',
'notextmatches' => 'Nisuna corispondensa nel testo de łe pajine',
-'prevn' => 'precedenti $1',
-'nextn' => 'sucessivi $1',
+'prevn' => '{{PLURAL:$1|presedente|presedenti $1}}',
+'nextn' => '{{PLURAL:$1|sucesivo|sucesivi $1}}',
'prevn-title' => '{{PLURAL:$1|el risultato prima|i $1 risultati prima}}',
'nextn-title' => '{{PLURAL:$1|el risultato dopo|i $1 risultati dopo}}',
'shown-title' => 'Mostra {{PLURAL:$1|un risultato|$1 risultati}} par pàxena',
-'viewprevnext' => 'Varda ($1) ($2) ($3).',
+'viewprevnext' => 'Varda ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Opzion de riserca',
'searchmenu-exists' => "*Pàxena '''[[$1]]'''",
'searchmenu-new' => "'''Crèa la pàxena \"[[:\$1]]\" su sta wiki!'''",
'searchhelp-url' => 'Help:Ajuto',
'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Varda tute le pàxene co' sto prefisso]]",
'searchprofile-articles' => 'Pàxene de contenuti',
-'searchprofile-articles-and-proj' => 'Pàxene de contenuti e projeti',
-'searchprofile-project' => 'Pàxene del projèto',
+'searchprofile-project' => 'Pàxene de projeto e de ajuto',
'searchprofile-images' => 'File',
'searchprofile-everything' => 'Tuto quanto',
'searchprofile-advanced' => 'Avansada',
@@ -1037,8 +1058,6 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'searchprofile-images-tooltip' => 'Serca file',
'searchprofile-everything-tooltip' => 'Serca dapartuto (conprese le pàxene de discussion)',
'searchprofile-advanced-tooltip' => 'Serca nei namespace personalixài',
-'prefs-search-nsdefault' => 'Serca doparando i predefinìi:',
-'prefs-search-nscustom' => 'Serca in tei namespace personalixài:',
'search-result-size' => '$1 ({{PLURAL:$2|na paroła|$2 parołe}})',
'search-result-score' => 'Rilevansa: $1%',
'search-redirect' => '(redirect $1)',
@@ -1051,11 +1070,12 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'search-mwsuggest-disabled' => 'sensa sujerimenti',
'search-relatedarticle' => 'Ligà',
'mwsuggest-disable' => 'Disabilita sugerimenti AJAX',
+'searcheverything-enable' => 'Serca in tuti quanti i namespace',
'searchrelated' => 'ligà',
'searchall' => 'tuti',
'showingresults' => "Qua de soto vien mostrà al massimo {{PLURAL:$1|'''1''' risultato|'''$1''' risultati}} a partir dal nùmaro '''$2'''.",
'showingresultsnum' => "Qua soto ghe xe {{PLURAL:$3|'''1''' risultato|'''$3''' risultati}} a partir da #'''$2'''.",
-'showingresultstotal' => "De seguito vien mostrà {{PLURAL:$4|el risultato '''$1'''|i risultati da '''$1''' a '''$2'''}} su un totale de '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' de '''$3'''|Risultati '''$1 - $2''' de '''$3'''}} par '''$4'''",
'nonefound' => "'''Nota''': ła riserca xè efetuà par default soło in alcuni namespace. Prova a premetare \"all:\" al testo de ła riserca par sercare in tuti i namespace (conpresi pajine de discusion, modełi, ecc) opure usa el namespace desiderà come prefiso.",
'search-nonefound' => 'La riserca no la gà catà gnente che corisponda ai criteri de riserca.',
'powersearch' => 'Riserca',
@@ -1063,111 +1083,148 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'powersearch-ns' => 'Serca ne i namespace:',
'powersearch-redir' => 'Elenca redirect',
'powersearch-field' => 'Serca',
+'powersearch-togglelabel' => 'Selessiona:',
+'powersearch-toggleall' => 'Tuti quanti',
+'powersearch-togglenone' => 'Nissun',
'search-external' => 'Riserca esterna',
'searchdisabled' => 'La riserca interna de {{SITENAME}} no la xe ativa; par intanto te pol proár a doparar un motore de riserca esterno come Google. (Nota però che i contenuti de {{SITENAME}} presenti in sti motori i podarìa èssar mìà agiornà.)',
+# Quickbar
+'qbsettings' => 'Settaggio barra menu',
+'qbsettings-none' => 'Nessun',
+'qbsettings-fixedleft' => 'Fisso a sinistra',
+'qbsettings-fixedright' => 'Fisso a destra',
+'qbsettings-floatingleft' => 'Fluttuante a sinistra',
+'qbsettings-floatingright' => 'Fluttuante a destra',
+
# Preferences page
-'preferences' => 'Prefarense',
-'mypreferences' => 'prefarense',
-'prefs-edits' => 'Nùmaro de modifiche:',
-'prefsnologin' => 'No te ghè eseguìo el login',
-'prefsnologintext' => 'Te ghè da aver eseguìo el <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} login] par poder personalixare le to preferense.',
-'prefsreset' => 'Le to Preferense le xè stà ripescae da la memoria de sistema del server de {{SITENAME}}.',
-'qbsettings' => 'Settaggio barra menu',
-'qbsettings-none' => 'Nessun',
-'qbsettings-fixedleft' => 'Fisso a sinistra',
-'qbsettings-fixedright' => 'Fisso a destra',
-'qbsettings-floatingleft' => 'Fluttuante a sinistra',
-'qbsettings-floatingright' => 'Fluttuante a destra',
-'changepassword' => 'Cànbia ła password',
-'skin' => 'Aspeto grafico',
-'skin-preview' => 'Anteprima',
-'math' => 'Formułe matematiche',
-'dateformat' => 'Formato de la data',
-'datedefault' => 'Nissuna preferensa',
-'datetime' => 'Data e ora',
-'math_failure' => 'Eror del parser',
-'math_unknown_error' => 'eror sconossiùo',
-'math_unknown_function' => 'funzion sconossiùa',
-'math_lexing_error' => 'eror lessicale',
-'math_syntax_error' => 'eror de sintassi',
-'math_image_error' => 'Conversion in PNG fałía',
-'math_bad_tmpdir' => 'Inpossibile scrìvar o crear la directory tenporanea par math',
-'math_bad_output' => 'Inpossibile scrìvar o crear la directory de output par math',
-'math_notexvc' => 'Eseguibile texvc mancante; par piaser consulta math/README par la configurazion.',
-'prefs-personal' => 'Profiło utente',
-'prefs-rc' => 'Ultime modifeghe',
-'prefs-watchlist' => 'Tegnùi de òcio',
-'prefs-watchlist-days' => 'Nùmaro de giòrni da far védar nei osservati speciali:',
-'prefs-watchlist-days-max' => '(massimo 7 zorni)',
-'prefs-watchlist-edits' => 'Nùmaro de modifiche da far védar con le funzion avanzade:',
-'prefs-watchlist-edits-max' => '(nùmaro massimo: 1000)',
-'prefs-misc' => 'Preferense varie',
-'prefs-resetpass' => 'Cànbia password',
-'saveprefs' => 'Salva le preferense',
-'resetprefs' => 'Reinposta le preferense',
-'restoreprefs' => 'Ripristina le inpostassion predefinìe',
-'textboxsize' => 'Dimension de la casela de modifica',
-'prefs-edit-boxsize' => 'Dimension de la finestra de modìfega.',
-'rows' => 'Righe:',
-'columns' => 'Cołone:',
-'searchresultshead' => 'Riserca',
-'resultsperpage' => 'Nùmaro de risultati par pàxena:',
-'contextlines' => 'Righe de testo par ciascun risultato',
-'contextchars' => 'Caratteri par linea:',
-'stub-threshold' => 'Valor minimo par i <a href="#" class="stub">colegamenti ai stub</a>:',
-'recentchangesdays' => 'Nùmaro de giòrni da mostrar ne le ultime modifiche:',
-'recentchangesdays-max' => '($1 {{PLURAL:$1|zorno|zorni}} massimo)',
-'recentchangescount' => 'Nùmaro de modìfeghe da mostrar in ultime modìfeghe, cronologia e pagine de registro:',
-'savedprefs' => 'Le to preferense łe xè stà salvae.',
-'timezonelegend' => 'Fuso orario:',
-'timezonetext' => "¹Inserissi el nùmaro de ore de difarensa fra la to ora locale e l'ora del server (UTC).",
-'localtime' => 'Ora locale:',
-'timezoneselect' => 'Fuso orario:',
-'timezoneuseserverdefault' => "Dòpara l'ora del server",
-'timezoneuseoffset' => 'Altro (spesifica difarensa)',
-'timezoneoffset' => 'Difarensa¹:',
-'servertime' => 'Ora del server:',
-'guesstimezone' => "Dòpara l'ora del to browser",
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'Merica',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Oceano Atlantico',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Oceano Indian',
-'timezoneregion-pacific' => 'Oceano Pacifico',
-'allowemail' => 'Consenti la ricezion de e-mail da altri utenti<sup>1</sup>',
-'prefs-searchoptions' => 'Opsioni de riserca',
-'prefs-namespaces' => 'Namespace',
-'defaultns' => 'Çerca in sti namespace se non diversamente specificà:',
-'default' => 'predefinìo',
-'files' => 'Imagini',
-'prefs-custom-css' => 'CSS personalixà',
-'prefs-custom-js' => 'JS personalixà',
+'preferences' => 'Prefarense',
+'mypreferences' => 'prefarense',
+'prefs-edits' => 'Nùmaro de modifiche:',
+'prefsnologin' => 'No te ghè eseguìo el login',
+'prefsnologintext' => 'Te ghè da aver eseguìo el <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} login] par poder personalixare le to preferense.',
+'changepassword' => 'Cànbia ła password',
+'prefs-skin' => 'Aspeto grafico',
+'skin-preview' => 'Anteprima',
+'prefs-math' => 'Formułe matematiche',
+'datedefault' => 'Nissuna preferensa',
+'prefs-datetime' => 'Data e ora',
+'prefs-personal' => 'Profiło utente',
+'prefs-rc' => 'Ultime modifeghe',
+'prefs-watchlist' => 'Tegnùi de òcio',
+'prefs-watchlist-days' => 'Nùmaro de giòrni da far védar nei osservati speciali:',
+'prefs-watchlist-days-max' => '(massimo 7 zorni)',
+'prefs-watchlist-edits' => 'Nùmaro de modifiche da far védar con le funzion avanzade:',
+'prefs-watchlist-edits-max' => '(nùmaro massimo: 1000)',
+'prefs-watchlist-token' => "Segnal par le pagine tegnùe d'ocio:",
+'prefs-misc' => 'Preferense varie',
+'prefs-resetpass' => 'Cànbia password',
+'prefs-email' => 'Preferense e-mail',
+'prefs-rendering' => 'Aspeto grafico',
+'saveprefs' => 'Salva le preferense',
+'resetprefs' => 'Reinposta le preferense',
+'restoreprefs' => 'Ripristina le inpostassion predefinìe',
+'prefs-editing' => 'Dimension de la casela de modifica',
+'prefs-edit-boxsize' => 'Dimension de la finestra de modìfega.',
+'rows' => 'Righe:',
+'columns' => 'Cołone:',
+'searchresultshead' => 'Riserca',
+'resultsperpage' => 'Nùmaro de risultati par pàxena:',
+'contextlines' => 'Righe de testo par ciascun risultato',
+'contextchars' => 'Caratteri par linea:',
+'stub-threshold' => 'Valor minimo par i <a href="#" class="stub">colegamenti ai stub</a>:',
+'recentchangesdays' => 'Nùmaro de giòrni da mostrar ne le ultime modifiche:',
+'recentchangesdays-max' => '($1 {{PLURAL:$1|zorno|zorni}} massimo)',
+'recentchangescount' => 'Nùmaro de modìfeghe da far védar (valor predefinìo):',
+'prefs-help-recentchangescount' => 'Questo include i ùltimi canbiamenti, el stòrico de le pàxene e i registri.',
+'prefs-help-watchlist-token' => 'Conpilando sto canpo co na ciave segreta vegnarà generà un feed RSS par i propri osservati speciali. Chiunque conossa la ciave in sto canpo el podarà lèzar i osservati speciali, quindi se racomanda de inserir un valore sicuro. Qua ghe xe un valore generà casualmente che se pol doparar: $1',
+'savedprefs' => 'Le to preferense łe xè stà salvae.',
+'timezonelegend' => 'Fuso orario:',
+'localtime' => 'Ora locale:',
+'timezoneuseserverdefault' => "Dòpara l'ora del server",
+'timezoneuseoffset' => 'Altro (spesifica difarensa)',
+'timezoneoffset' => 'Difarensa¹:',
+'servertime' => 'Ora del server:',
+'guesstimezone' => "Dòpara l'ora del to browser",
+'timezoneregion-africa' => 'Africa',
+'timezoneregion-america' => 'Merica',
+'timezoneregion-antarctica' => 'Antartide',
+'timezoneregion-arctic' => 'Artide',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oceano Atlantico',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oceano Indian',
+'timezoneregion-pacific' => 'Oceano Pacifico',
+'allowemail' => 'Consenti la ricezion de e-mail da altri utenti<sup>1</sup>',
+'prefs-searchoptions' => 'Opsioni de riserca',
+'prefs-namespaces' => 'Namespace',
+'defaultns' => 'Serca in sti namespace se no diversamente specificà:',
+'default' => 'predefinìo',
+'prefs-files' => 'File',
+'prefs-custom-css' => 'CSS personalixà',
+'prefs-custom-js' => 'JS personalixà',
+'prefs-reset-intro' => 'Te pol doparar sta pagina par riportar le to preferense a quele predefinìe.
+Sta operassion no la pol èssar anulà.',
+'prefs-emailconfirm-label' => "Conferma de l'e-mail:",
+'prefs-textboxsize' => 'Dimension de la casèla de modifica',
+'youremail' => 'La to e-mail',
+'username' => 'Nome utente',
+'uid' => 'ID utente:',
+'prefs-memberingroups' => 'Menbro {{PLURAL:$1|del grupo|dei grupi}}:',
+'prefs-registration' => 'Data de registrassion:',
+'yourrealname' => 'El to vero nome:',
+'yourlanguage' => 'Lengua:',
+'yourvariant' => 'Variante de linguaggio:',
+'yournick' => 'Firma:',
+'prefs-help-signature' => 'Co se scrive in te le pagine de discussion, a se gà senpre da firmar scrivendo "<nowiki>~~~~</nowiki>", che vegnarà convertìo in te la propria firma seguìa da data e ora.',
+'badsig' => 'Erór ne ła firma non standard, verifica i tag HTML.',
+'badsiglength' => 'La to firma la xe massa longa.
+La gà da verghe al massimo $1 {{PLURAL:$1|caràtere|caràteri}}.',
+'yourgender' => 'Sesso:',
+'gender-unknown' => 'Mia spesificà',
+'gender-male' => 'Mas-cio',
+'gender-female' => 'Fémena',
+'prefs-help-gender' => "Opzional: doparà par l'indicassion del gènare dal software. Sta informassion la sarà visìbile da tuti.",
+'email' => 'Indirizo e-mail',
+'prefs-help-realname' => 'Indicar el proprio nome vero no xe obligatorio; se te siegli de inserirlo, el vegnarà doparà par atribuir la paternità dei contenuti invià.',
+'prefs-help-email' => "L'inserimento del proprio indirizo e-mail no'l xe obligatorio, ma el te consente de farte spedir la password se te te la desménteghi.
+In più te pol anca farte contatar da altri tramite la to pagina personale o la pagina de discussion, sensa bisogno de rivelarghe la to identità.",
+'prefs-help-email-required' => "Xe richiesto l'indirizo e-mail.",
+'prefs-info' => 'Informassion de base',
+'prefs-i18n' => 'Internassionalisassion',
+'prefs-signature' => 'Firma',
+'prefs-dateformat' => 'Formato de la data',
+'prefs-timeoffset' => 'Ore de difarensa',
+'prefs-advancedediting' => 'Preferense avansade',
+'prefs-advancedrc' => 'Preferense avansade',
+'prefs-advancedrendering' => 'Preferense avansade',
+'prefs-advancedsearchoptions' => 'Preferense avansade',
+'prefs-advancedwatchlist' => 'Preferense avansade',
+'prefs-display' => 'Preferense de visualixassion',
+'prefs-diffs' => 'Difarense',
# User rights
-'userrights' => 'Gestion dei parmessi relativi ai utenti', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Gestion de i gruppi utente',
-'userrights-user-editname' => 'Inserir el nome utente:',
-'editusergroup' => 'Modifica grupi utente',
-'editinguser' => "Modifica dei diriti assegnà a l'utente '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Modifica grupi utente',
-'saveusergroups' => 'Salva grupi utente',
-'userrights-groupsmember' => 'Apartien ai grupi:',
-'userrights-groups-help' => "Se pol modificar i grupi a cui l'utente l'è assegnà.
+'userrights' => 'Gestion dei parmessi relativi ai utenti',
+'userrights-lookup-user' => 'Gestion de i gruppi utente',
+'userrights-user-editname' => 'Inserir el nome utente:',
+'editusergroup' => 'Modifica grupi utente',
+'editinguser' => "Modifica dei diriti assegnà a l'utente '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Modifica grupi utente',
+'saveusergroups' => 'Salva grupi utente',
+'userrights-groupsmember' => 'Apartien ai grupi:',
+'userrights-groupsmember-auto' => 'Menbro implìcito de:',
+'userrights-groups-help' => "Se pol modificar i grupi a cui l'utente l'è assegnà.
* Na casela de spunta selezionà la indica l'apartenenza de l'utente al grupo.
* Na casela de spunta deselezionà la indica la so mancata apartenenza al grupo.
* N'asterisco (*) l'indica che no te pol cavar un utente da un grupo na olta che te l'è zontà, o viceversa.",
-'userrights-reason' => 'Motivassion:',
-'userrights-no-interwiki' => 'No te ghè i parmessi necessari par modificar i diriti dei utenti su altri siti.',
-'userrights-nodatabase' => "El database $1 no l'esiste mìa o no l'è un database local.",
-'userrights-nologin' => "Par assegnarghe diriti ai utenti te ghè da [[Special:UserLogin|efetuar l'acesso]] come aministrador.",
-'userrights-notallowed' => 'No te ghè i parmessi necessari par assegnarghe diriti ai utenti.',
-'userrights-changeable-col' => 'Grupi che te pol canbiar',
-'userrights-unchangeable-col' => 'Grupi che no te pol canbiar',
+'userrights-reason' => 'Motivassion:',
+'userrights-no-interwiki' => 'No te ghè i parmessi necessari par modificar i diriti dei utenti su altri siti.',
+'userrights-nodatabase' => "El database $1 no l'esiste mìa o no l'è un database local.",
+'userrights-nologin' => "Par assegnarghe diriti ai utenti te ghè da [[Special:UserLogin|efetuar l'acesso]] come aministrador.",
+'userrights-notallowed' => 'No te ghè i parmessi necessari par assegnarghe diriti ai utenti.',
+'userrights-changeable-col' => 'Grupi che te pol canbiar',
+'userrights-unchangeable-col' => 'Grupi che no te pol canbiar',
# Groups
'group' => 'Grupo:',
@@ -1220,6 +1277,7 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'right-bigdelete' => 'Scancela pagine con cronologie longhe',
'right-deleterevision' => 'Scondi version specifiche de le pagine',
'right-deletedhistory' => 'Varda i record scancelà de la cronologia, ma sensa el testo associà a lori',
+'right-deletedtext' => 'Vardar el testo scancelà e i canbiamenti tra dele revision scancelà',
'right-browsearchive' => 'Visualizza pagine scancelae',
'right-undelete' => 'Recupera na pagina',
'right-suppressrevision' => 'Rivarda e recupera version sconte',
@@ -1233,6 +1291,8 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'right-editprotected' => 'Modifica pagine protete',
'right-editinterface' => "Modifica l'interfacia utente",
'right-editusercssjs' => 'Modifica i file CSS e JS de altri utenti',
+'right-editusercss' => 'Modifica i file CSS de altri utenti',
+'right-edituserjs' => 'Modifica i file JS de altri utenti',
'right-rollback' => "Anula in prèssia le modifiche fate da l'ultimo utente su na pagina particolar.",
'right-markbotedits' => 'Segna modifiche specifiche come bot',
'right-noratelimit' => 'Mìa sogeto al limite de azioni',
@@ -1249,6 +1309,8 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'right-siteadmin' => 'Bloca e desbloca el database',
'right-reset-passwords' => 'Reinposta la password de altri utenti',
'right-override-export-depth' => 'Esporta le pàxene, includendo le pàxene ligàe fin a na profondità de 5',
+'right-versiondetail' => 'Fà védar le informassion conplete su la version del software',
+'right-sendemail' => 'Mandarghe e-mail a cheialtri utenti',
# User rights log
'rightslog' => 'Diriti de i utenti',
@@ -1298,6 +1360,15 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
'recentchanges-legend' => 'Opsion ulteme modifeghe',
'recentchangestext' => 'Sta pàxena la presenta łe ultime modifeghe aportàe ai contenuti de el sito.',
'recentchanges-feed-description' => 'Sto feed riporta łe modifeghe pì resenti a i contenui del sito.',
+'recentchanges-label-legend' => 'Legenda: $1.',
+'recentchanges-legend-newpage' => '$1 - pagina nova',
+'recentchanges-label-newpage' => 'Sta modifica la ga creà na pagina nova',
+'recentchanges-legend-minor' => '$1 - modifica picenina',
+'recentchanges-label-minor' => 'Sta qua la xe na modifica picenina',
+'recentchanges-legend-bot' => '$1 - modifica bot',
+'recentchanges-label-bot' => 'Sta modifica el la ga fata un bot',
+'recentchanges-legend-unpatrolled' => '$1 - modifica mia verificà',
+'recentchanges-label-unpatrolled' => 'Sta modifica no la xe stà gnancora verificà',
'rcnote' => "De seguito {{PLURAL:$1|xè elencà ła modifega pì resente aportà|xè elencae łe '''$1''' modifeghe pì resenti aportae}} al sito {{PLURAL:$2|ne łe ulteme 24 ore|ne i scorsi '''$2''' jorni}}; i dati xè ajornai a łe $5 del $4.",
'rcnotefrom' => " Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
'rclistfrom' => 'Mostra łe modifeghe aportae a partire da $1',
@@ -1324,6 +1395,8 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
# Recent changes linked
'recentchangeslinked' => 'Modifeghe corełae',
+'recentchangeslinked-feed' => 'Modìfeghe ligà a sta pàxena',
+'recentchangeslinked-toolbox' => 'Modìfeghe ligà a sta pàxena',
'recentchangeslinked-title' => 'Modifeghe corełae a "$1"',
'recentchangeslinked-noresult' => 'Nel periodo specificà no ghe xe stà nissuna modifica a le pagine colegà.',
'recentchangeslinked-summary' => "Sta pajina spesałe e a mostra łe modifeghe pi resenti a łe pajine cołegà da queła spesifegà (o contenue ne ła categoria spesifegà).
@@ -1334,8 +1407,8 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
# Upload
'upload' => 'Carga on file',
'uploadbtn' => 'Carga file',
-'reupload' => 'Carga da novo',
'reuploaddesc' => 'Lassa pèrdar el caricamento e torna al modulo de caricamento',
+'upload-tryagain' => 'Invia la descrission del file modificà',
'uploadnologin' => 'Te devi far el login par exeguire sta operassion.',
'uploadnologintext' => 'Te ghè da far [[Special:UserLogin|el login]]
par poder cargar dei file.',
@@ -1368,6 +1441,7 @@ Varda la [[Special:NewFiles|galerìa dei file nóvi]] par na vision de insieme.'
'minlength1' => 'El nome del file el ga da contegner almanco un caràtere.',
'illegalfilename' => 'El nome file "$1" el contien caràteri che no xè permessi nei titoli de le pagine. Par piaser, rinomina el file e próa a ricaricarlo.',
'badfilename' => 'El nome de el file el xè stà convertio in "$1".',
+'filetype-mime-mismatch' => "L'estension del file no a corisponde con el tipo MIME.",
'filetype-badmime' => 'No xe consentìo de cargar file de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'No se pode cargar sto file, parché da Internet Explorer el vegnarìa rilevà come "$1", che xe un tipo de file disativà e potensialmente pericoloso.',
'filetype-unwanted-type' => "Cargar file de tipo '''\".\$1\"''' xe sconsiglià. {{PLURAL:\$3|El tipo de file consiglià el|I tipi de file consiglià i}} xe \$2.",
@@ -1385,7 +1459,6 @@ Par far sì che l'ogeto el conpaja su la pagina de discussion, sarà necessario
* Nome del file cargà: '''<tt>[[:$1]]</tt>'''
* Nome del file esistente: '''<tt>[[:$2]]</tt>'''
Par piaser siegli un nome difarente.",
-'fileexists-thumb' => "<center>'''File zà esistente'''</center>",
'fileexists-thumbnail-yes' => "El file el pararìa èssar el risultato de n'anteprima ''(thumbnail)''. [[$1|thumb]]
Verifica, par confronto, el file '''<tt>[[:$1]]</tt>'''.
Se se trata de la stessa imagine, ne le dimension originali, no xe necessario caricarghene altre anteprime.",
@@ -1400,6 +1473,7 @@ Se te vol cargar el file istesso, par piaser torna indrio e canbia el nome che t
'file-deleted-duplicate' => "Un file preciso identico de sto file ([[$1]]) el xe stà zà scancelà in precedensa. Te dovaressi darghe n'ociada a la cronologia scancelà prima de cargarlo de novo.",
'successfulupload' => 'Caricamento conpletà',
'uploadwarning' => 'Avixo de caricamento',
+'uploadwarning-text' => 'Par piaser, cànbia la descrission del file qua de soto e próa da novo.',
'savefile' => 'Salva file',
'uploadedimage' => 'ga cargà "[[$1]]"',
'overwroteimage' => 'gà cargà na version nova de "[[$1]]"',
@@ -1407,11 +1481,14 @@ Se te vol cargar el file istesso, par piaser torna indrio e canbia el nome che t
'uploaddisabledtext' => "El caricamento dei file no'l xe mìa ativo.",
'php-uploaddisabledtext' => 'El caricamento de file tramite PHP el xe disabilità. Contròla la configurassion de file_uploads.',
'uploadscripted' => 'Sto file contegne codexe HTML o de script, che podaria essere interpretà eroneamente da un browser web.',
-'uploadcorrupt' => 'El file el xe coróto o el gà na estension mìa giusta. Controla el file e dopo próa de novo a cargarlo.',
'uploadvirus' => 'Sto file contegne un virus! Detagli: $1',
+'upload-source' => 'File de origine',
'sourcefilename' => 'Nome del file de origine:',
+'sourceurl' => 'URL de origine:',
'destfilename' => 'Nome del file de destinazion:',
'upload-maxfilesize' => 'Dimension massima del file: $1',
+'upload-description' => 'Descrission del file',
+'upload-options' => 'Opsioni de caricamento',
'watchthisupload' => "Tien d'ocio sto file",
'filewasdeleted' => 'Un file con sto nome xè stato xà caricà e scancełà in passato. Verifica $1 prima de caricarlo de novo.',
'upload-wasdeleted' => "'''Ocio: te stè cargando un file che in precedenza l'era stà scancelà.'''
@@ -1420,15 +1497,46 @@ Verifica par piaser se xe el caso de continuare col caricamento de sto file.
Par to comodità qua ghe xe la registrazion de la scancelazion:",
'filename-bad-prefix' => "El nome del file che te sì drio cargar el scuminsia con '''\"\$1\"''', che el xe un nome non-descritivo tipicamente assegnà automaticamente da le fotocàmare digitali. Par piaser siegli un nome piassè descritivo par el to file.",
-'upload-proto-error' => 'Protocòl mìa giusto',
-'upload-proto-error-text' => 'Par el caricamento remoto bisogna specificar URL che scuminsia con <code>http://</code> opure <code>ftp://</code>.',
-'upload-file-error' => 'Eror interno',
-'upload-file-error-text' => 'Se gà verificà un eror interno durante la creazion de un file tenporaneo sul server.
+'upload-proto-error' => 'Protocòl mìa giusto',
+'upload-proto-error-text' => 'Par el caricamento remoto bisogna specificar URL che scuminsia con <code>http://</code> opure <code>ftp://</code>.',
+'upload-file-error' => 'Eror interno',
+'upload-file-error-text' => 'Se gà verificà un eror interno durante la creazion de un file tenporaneo sul server.
Par piaser, contatar un [[Special:ListUsers/sysop|aministrador]].',
-'upload-misc-error' => 'Eror mia identificà par el caricamento',
-'upload-misc-error-text' => '!Se gà verificà un eror mìa identificà durante el caricamento del file.
+'upload-misc-error' => 'Eror mia identificà par el caricamento',
+'upload-misc-error-text' => '!Se gà verificà un eror mìa identificà durante el caricamento del file.
Par piaser, verifica che la URL la sia giusta e acessibile e próa da novo.
Se el problema el persiste, contatar un [[Special:ListUsers/sysop|aministrador]].',
+'upload-too-many-redirects' => "In te l'URL ghe jera massa rimandi",
+'upload-unknown-size' => 'Dimension sconossiùa',
+'upload-http-error' => 'Se gà verificà un eròr HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Acesso negà',
+'img-auth-nopathinfo' => "Manca el PATH_INFO.
+El to server no'l xe mia configurà par passar sta informassion.
+Magari el xe basà su CGI e no'l suporta img_auth.
+Varda http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "El percorso richiesto no'l se cata in te la cartèla de caricamento configurà.",
+'img-auth-badtitle' => 'No se riesse a costruir un titolo valido da "$1".',
+'img-auth-nologinnWL' => 'No te sì autenticà e "$1" no\'l xe mia in te la lista bianca.',
+'img-auth-nofile' => 'El file "$1" no l\'esiste mia.',
+'img-auth-isdir' => 'Te sì drio sercar de entrar in te la cartèla "$1".
+Xe parmesso entrar solo in tei file, no in te le cartèle.',
+'img-auth-streaming' => 'Streaming de "$1".',
+'img-auth-public' => 'img_auth.php el serve par butar in output dei file da na wiki privata.
+Sta wiki la xe configurà come pùblica.
+Par na major sicuressa, img_auth.php el xe disabilità.',
+'img-auth-noread' => 'L\'utente no\'l gà mia dirito de lèzar "$1".',
+
+# HTTP errors
+'http-invalid-url' => 'URL mia valido: $1',
+'http-invalid-scheme' => 'Le URL col schema "$1" no le xe suportà',
+'http-request-error' => 'Richiesta HTTP falìa par via de un eror sconossùo.',
+'http-read-error' => 'Eror de letura HTTP.',
+'http-timed-out' => 'Richiesta HTTP scadùa.',
+'http-curl-error' => "Eror nel recupero de l'URL: $1",
+'http-host-unreachable' => 'URL mìa ragiungibile',
+'http-bad-status' => 'Ghe xe stà un problema durante la richiesta HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL mìa ragiungibile',
@@ -1437,6 +1545,7 @@ Se el problema el persiste, contatar un [[Special:ListUsers/sysop|aministrador]]
'upload-curl-error28-text' => 'El sito remoto el gà messo massa tenp par rispóndar. Verifica che el sito el sia ativo, speta qualche minuto e próa da novo, eventualmente in un momento de manco tràfico.',
'license' => "Licenza d'uso:",
+'license-header' => "Licensa d'uso",
'nolicense' => 'Nissuna licensa indicà',
'license-nopreview' => '(Anteprima mìa disponibile)',
'upload_source_url' => ' (na URL coreta e acessibile)',
@@ -1457,6 +1566,7 @@ Par modificar l'ordinamento, struca su l'intestazion de la colona presièlta.",
'listfiles_count' => 'Versioni',
# File description page
+'file-anchor-link' => 'File',
'filehist' => 'Cronołosia del file',
'filehist-help' => 'Fare clic so on grupo data/ora par vardare el file come se presenta nel momento indicà.',
'filehist-deleteall' => 'scancela tuto',
@@ -1465,12 +1575,13 @@ Par modificar l'ordinamento, struca su l'intestazion de la colona presièlta.",
'filehist-current' => 'corente',
'filehist-datetime' => 'Data/Ora',
'filehist-thumb' => 'Miniadura',
-'filehist-thumbtext' => 'Miniatura par la version del $1',
+'filehist-thumbtext' => 'Miniadura de ła version de łe $1',
'filehist-nothumb' => 'Nissuna miniatura',
'filehist-user' => 'Utente',
'filehist-dimensions' => 'Dimension',
'filehist-filesize' => 'Dimension del file',
'filehist-comment' => 'Ojeto',
+'filehist-missing' => 'File mancante',
'imagelinks' => 'Cołegamenti al file',
'linkstoimage' => '{{PLURAL:$1|Ła seguente pajina contien|Łe seguenti $1 pajine e contien}} cołegamenti al file:',
'linkstoimage-more' => 'Piassè de $1 {{PLURAL:$1|pagina la ponta|pagine le ponta}} a sto file.
@@ -1480,15 +1591,16 @@ Se pode védar un [[Special:WhatLinksHere/$2|elenco par intiero]].',
'morelinkstoimage' => 'Varda i [[Special:WhatLinksHere/$1|altri colegamenti]] verso sto file.',
'redirectstofile' => '{{PLURAL:$1|El file seguente el|I $1 file seguenti i}} redirige verso sto file:',
'duplicatesoffile' => '{{PLURAL:$1|El file seguente el xe un dopion|I $1 file seguenti i xe dei dopioni}} de sto file ([[Special:FileDuplicateSearch/$2|ulteriori detagli]]):',
-'sharedupload' => 'Sto file el provien da $1 e poe esare utiłizà da altri projeti.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Varda $1 par ulteriori informazion.',
-'shareduploadwiki-desc' => 'La descrizion che se cata su la so $1 la vien mostrà qua soto.',
-'shareduploadwiki-linktext' => 'pagina de descrizion del file',
-'noimage' => "Un file con sto nome no l'esiste mìa, ma te pol $1.",
-'noimage-linktext' => 'cargarne uno desso',
+'sharedupload' => 'Sto file el provien da $1 e poe esare utiłizà da altri projeti.',
+'sharedupload-desc-there' => 'Sto file el vien da $1 e se pode dopararlo su altri projeti.
+Consulta la [$2 pàxena de descrission del file] par ulteriori informassion.',
+'sharedupload-desc-here' => 'Sto file el vien da $1 e se pode dopararlo su altri projeti.
+Qua soto vien mostrà la descrission presente in te la [$2 pàxena de descrission del file].',
+'filepage-nofile' => 'No ghe xe nissun file co sto nome.',
+'filepage-nofile-link' => 'NO ghe xe un file co sto nome, ma te podi [$1 cargarlo su].',
'uploadnewversion-linktext' => 'Carga na nova version de sto file',
-'shared-repo-from' => 'da $1', # $1 is the repository name
-'shared-repo' => 'un archivio condiviso', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'da $1',
+'shared-repo' => 'un archivio condiviso',
# File reversion
'filerevert' => 'Ripristina $1',
@@ -1517,6 +1629,7 @@ Se pode védar un [[Special:WhatLinksHere/$2|elenco par intiero]].',
** Violazion de copyright
** File duplicà',
'filedelete-edit-reasonlist' => 'Modifica le motivazion par la scancelazion',
+'filedelete-maintenance' => 'La scancelassion e el riprìstino dei file i xe disabilità par un tocheto par manutension.',
# MIME search
'mimesearch' => 'Serca in base al tipo MIME',
@@ -1537,7 +1650,7 @@ Se pode védar un [[Special:WhatLinksHere/$2|elenco par intiero]].',
# Random page
'randompage' => 'Na pajina a ocio',
-'randompage-nopages' => 'Nissuna pàxena in tel namespace "$1".',
+'randompage-nopages' => 'No ghe xe nissuna pàxena in {{PLURAL:$2|tel|tei}} namespace "$1".',
# Random redirect
'randomredirect' => 'Un redirect a caso',
@@ -1549,6 +1662,7 @@ Se pode védar un [[Special:WhatLinksHere/$2|elenco par intiero]].',
'statistics-header-edits' => 'Statìsteghe relative a i canbiamenti',
'statistics-header-views' => 'Statìsteghe relative a le visualizassion',
'statistics-header-users' => 'Statistiche dei utenti',
+'statistics-header-hooks' => 'Altre statìsteghe',
'statistics-articles' => 'Pàxene de contenuti',
'statistics-pages' => 'Pàxene',
'statistics-pages-desc' => 'Tute quante le pàxene de la wiki, conprese le pàxene de discussion, i rimandi, ecc.',
@@ -1577,8 +1691,8 @@ Le righe <s>sbarà</s> le xe xà stà sistemà.',
'brokenredirects' => 'Redirect mìa giusti',
'brokenredirectstext' => 'I seguenti rimandi i punta a pàxene che no esiste:',
-'brokenredirects-edit' => '(modifica)',
-'brokenredirects-delete' => '(scancela)',
+'brokenredirects-edit' => 'modifica',
+'brokenredirects-delete' => 'scancela',
'withoutinterwiki' => 'Pagine che no gà interwiki',
'withoutinterwiki-summary' => 'Le pagine indicà de seguito no le gà colegamenti a le version in altre lengue:',
@@ -1685,7 +1799,7 @@ Te podi restrénzar i criteri de riçerca selezionando el tipo de registro, el n
# Special:Categories
'categories' => 'Categorie',
-'categoriespagetext' => 'Ste categorie qua soto le gà drento pagine o file multimediài.
+'categoriespagetext' => '{{PLURAL:$1|Sta categoria qua soto la|Ste categorie qua soto le}} gà drento pagine o file multimediài.
Le [[Special:UnusedCategories|categorie mìa doparà]] no le vien mìa fate védar.
Varda anca le [[Special:WantedCategories|categorie domandà]].',
'categoriesfrom' => 'Mostra le categorie tacando da :',
@@ -1693,8 +1807,9 @@ Varda anca le [[Special:WantedCategories|categorie domandà]].',
'special-categories-sort-abc' => 'ordina alfabeticamente',
# Special:DeletedContributions
-'deletedcontributions' => 'Contributi utente scancelà',
-'deletedcontributions-title' => 'Contributi utente scancelà',
+'deletedcontributions' => 'Contributi utente scancelà',
+'deletedcontributions-title' => 'Contributi utente scancelà',
+'sp-deletedcontributions-contribs' => 'contributi',
# Special:LinkSearch
'linksearch' => 'Cołegamenti foresti',
@@ -1710,6 +1825,16 @@ Protocòli suportè: <tt>$1</tt>',
'listusersfrom' => 'Mostra i utenti tacando da:',
'listusers-submit' => 'Mostra',
'listusers-noresult' => 'Nissun utente el risponde ai criteri inpostà.',
+'listusers-blocked' => '(blocà)',
+
+# Special:ActiveUsers
+'activeusers' => 'Lista dei utenti ativi',
+'activeusers-intro' => 'Sta qua xe la lista dei utenti che ga fato calcossa {{PLURAL:$1|sto ultimo zorno|sti ultimi $1 zorni}}.',
+'activeusers-count' => "$1 {{PLURAL:$1|canbiamento|canbiamenti}} {{PLURAL:$3|ne l'ultimo zorno|in tei ultimi $3 zorni}}",
+'activeusers-from' => 'Fà védar i utenti a partir da:',
+'activeusers-hidebots' => 'Scondi i bot',
+'activeusers-hidesysops' => 'Scondi i aministradori',
+'activeusers-noresult' => 'Nissun utente catà.',
# Special:Log/newusers
'newuserlogpage' => 'Novi utenti',
@@ -1720,17 +1845,23 @@ Protocòli suportè: <tt>$1</tt>',
'newuserlog-autocreate-entry' => 'Account creà automaticamente',
# Special:ListGroupRights
-'listgrouprights' => 'Diriti dei grupi utenti',
-'listgrouprights-summary' => 'Sta qua la xe na lista dei grupi de utenti definìi su sta wiki, coi diriti asocià a ognuno.
+'listgrouprights' => 'Diriti dei grupi utenti',
+'listgrouprights-summary' => 'Sta qua la xe na lista dei grupi de utenti definìi su sta wiki, coi diriti asocià a ognuno.
Se pol consultar anca dele altre [[{{MediaWiki:Listgrouprights-helppage}}|informassion in pi]] sui diriti individuali.',
-'listgrouprights-group' => 'Grupo',
-'listgrouprights-rights' => 'Diriti',
-'listgrouprights-helppage' => 'Help:Diriti dei grupi',
-'listgrouprights-members' => '(Elenco de i menbri)',
-'listgrouprights-addgroup' => 'Pode zontar {{PLURAL:$2|al grupo|ai grupi}}: $1',
-'listgrouprights-removegroup' => 'Pode cavar {{PLURAL:$2|dal grupo|dai grupi}}: $1',
-'listgrouprights-addgroup-all' => 'Pode zontar tuti i grupi',
-'listgrouprights-removegroup-all' => 'Pode cavar tuti i grupi',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dirito acordà</span>
+* <span class="listgrouprights-revoked">Dirito revocà</span>',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Diriti',
+'listgrouprights-helppage' => 'Help:Diriti dei grupi',
+'listgrouprights-members' => '(Elenco de i menbri)',
+'listgrouprights-addgroup' => 'Pode zontar {{PLURAL:$2|al grupo|ai grupi}}: $1',
+'listgrouprights-removegroup' => 'Pode cavar {{PLURAL:$2|dal grupo|dai grupi}}: $1',
+'listgrouprights-addgroup-all' => 'Pode zontar tuti i grupi',
+'listgrouprights-removegroup-all' => 'Pode cavar tuti i grupi',
+'listgrouprights-addgroup-self' => 'Poder zontar la propria utensa in {{PLURAL:$2|te un grupo|più grupi}}: $1',
+'listgrouprights-removegroup-self' => 'Poder cavar la propria utensa da {{PLURAL:$2|un grupo|dei grupi}}: $1',
+'listgrouprights-addgroup-self-all' => 'Pode zontar la propria utensa in tuti i grupi',
+'listgrouprights-removegroup-self-all' => 'Pode cavar la propria utensa da tuti i grupi',
# E-mail user
'mailnologin' => 'Nissun indirizo a cui mandarghe el messagio',
@@ -1802,7 +1933,7 @@ Le future modìfeghe a sta pagina e a la relativa pagina de discussion le sarà
'enotif_lastvisited' => 'Varda $1 par tute le modifiche da la to ultima visita.',
'enotif_lastdiff' => 'Varda $1 par visualizar la modifica.',
'enotif_anon_editor' => 'utente anonimo $1',
-'enotif_body' => 'Caro $WATCHINGUSERNAME,
+'enotif_body' => 'Caro/a $WATCHINGUSERNAME,
ła pàxena $PAGETITLE de {{SITENAME}} la xè stà $CHANGEDORCREATED el $PAGEEDITDATE da $PAGEEDITOR, varda $PAGETITLE_URL par ła version atuałe.
@@ -1814,7 +1945,8 @@ Contatta el redator:
mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-No ghe sarà altre notifiche in caso de ulteriori canbiamenti, a manco che ti no te visiti sta pàxena. Te podi anca reinpostar l\'avixo de notifica par tuti i osservati speciałi de ła to łista.
+No ghe sarà altre notifiche in caso de ulteriori canbiamenti, a manco che ti no te visiti sta pàxena.
+Te podi anca reinpostar l\'avixo de notifica par tuti i osservati speciałi de ła to łista.
El to amichevole sistema de notifica de {{SITENAME}}
@@ -1822,8 +1954,11 @@ No ghe sarà altre notifiche in caso de ulteriori canbiamenti, a manco che ti no
Par canbiar łe inpostassion de i to osservati speciałi, visita
{{fullurl:Special:Watchlist/edit}}
+Par cavar la pagina da i to osservati speciałi, visita
+$UNWATCHURL
+
Par riscontri e ulteriore assistensa:
-{{fullurl:Help:Ciacołe}}',
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scanceła pàxena',
@@ -1834,9 +1969,10 @@ Par riscontri e ulteriore assistensa:
'exblank' => "ła pàxena l'era voda",
'delete-confirm' => 'Scancela "$1"',
'delete-legend' => 'Scancela',
-'historywarning' => 'Ocio: La pàxena che te stè par scancełar la gà na cronołogia:',
+'historywarning' => "'''Ocio:''' La pàxena che te sì drio scancełar la gà na cronołogia con circa $1 {{PLURAL:$1|revision|revision}}:",
'confirmdeletetext' => 'Te ste par scansełare na pajina co tuta ła so cronołosia. Par cortesia, conferma che xè to intension prosedere a tałe scansełasion, che te ghe piena consapevołeza de łe conseguense de ła to axion e che esa xè conforme a łe linee guida stabiłie en [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Axion conpletà',
+'actionfailed' => 'Azion mia riussìa',
'deletedtext' => "Ła pajina ''<nowiki>$1</nowiki>'' xè sta scansełà.
Consultare el rejistro de łe $2 par n'elenco de łe pajine scansełà de rexente.",
'deletedarticle' => 'ga scansełà "[[$1]]"',
@@ -1857,18 +1993,19 @@ Consultare el rejistro de łe $2 par n'elenco de łe pajine scansełà de rexent
'delete-warning-toobig' => 'La cronologia de sta pagina le xe longa assè (oltre $1 {{PLURAL:$1|revision|revisioni}}). La so scancelazion la pode crear dei problemi de funzionamento al database de {{SITENAME}}; procedi con cautela.',
# Rollback
-'rollback' => 'Anula le modifiche',
-'rollback_short' => 'Tira indrìo',
-'rollbacklink' => 'rollback',
-'rollbackfailed' => 'Ripristino mìa riussìo',
-'cantrollback' => "No xè mia possibiłe tornar a na versión precedente: l'ultima modifica la xè stà aportà da l'unico utente che gà laorà a sto articoło.",
-'alreadyrolled' => "No xè mia possibile efetuar el ripristino de [[:$1]] da [[User:$2|$2]] ([[User talk:$2|discussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); qualcun altro gà xà modificà o efetuà el ripristino de sta voxe.
+'rollback' => 'Anula le modifiche',
+'rollback_short' => 'Tira indrìo',
+'rollbacklink' => 'rollback',
+'rollbackfailed' => 'Ripristino mìa riussìo',
+'cantrollback' => "No xè mia possibiłe tornar a na versión precedente: l'ultima modifica la xè stà aportà da l'unico utente che gà laorà a sto articoło.",
+'alreadyrolled' => "No xè mia possibile efetuar el ripristino de [[:$1]] da [[User:$2|$2]] ([[User talk:$2|discussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); qualcun altro gà xà modificà o efetuà el ripristino de sta voxe.
L'ultima modefega l'è stà fata da [[User:$3|$3]] ([[User talk:$3|discussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "El comento a la modifica el xera: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Anułàe łe modifeghe de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]), riportà a ła version de prima de [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Anulà le modifiche de $1; riportà a la version precedente de $2.',
-'sessionfailure' => "Se gà verificà un problema ne la session che identifica l'acesso; el sistema, par precauzion, no'l gà mìa eseguìo el comando che te ghè dato. Torna a la pagina precedente col boton 'Indrìo' del to browser, ricarica la pagina e ripróa da novo.",
+'editcomment' => "El comento a la modifica el xera: \"''\$1''\".",
+'revertpage' => 'Anułàe łe modifeghe de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]), riportà a ła version de prima de [[User:$1|$1]]',
+'revertpage-nouser' => 'Anulà le modìfeghe de (nome utente cavà), riportà a la version precedente de [[User:$1|$1]]',
+'rollback-success' => 'Anulà le modifiche de $1; riportà a la version precedente de $2.',
+'sessionfailure' => "Se gà verificà un problema ne la session che identifica l'acesso; el sistema, par precauzion, no'l gà mìa eseguìo el comando che te ghè dato. Torna a la pagina precedente col boton 'Indrìo' del to browser, ricarica la pagina e ripróa da novo.",
# Protect
'protectlogpage' => 'Protesion',
@@ -1884,7 +2021,7 @@ L'ultima modefega l'è stà fata da [[User:$3|$3]] ([[User talk:$3|discussion]]{
'protectexpiry' => 'Scadensa:',
'protect_expiry_invalid' => 'Scadensa mìa valida.',
'protect_expiry_old' => 'Scadensa zà passà.',
-'protect-unchain' => 'Sbloca i permessi de spostamento',
+'protect-unchain-permissions' => 'Desbloca ulteriori possibilità de protession',
'protect-text' => "Sto modulo qua el consente de védar e modificar el livel de protezion par la pagina '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "No se pol mìa canbiar i livèi de protezion co ghe xe un bloco ativo. Le inpostazion corenti par la pagina le xe '''$1''':",
'protect-locked-dblock' => "No se pol canbiar i livèi de protezion durante un bloco del database.
@@ -1913,7 +2050,7 @@ Le impostazion atuali par la pagina le xe '''$1''':",
** Pàxena doparà assè
** Vandalismi ripetùi',
'protect-edit-reasonlist' => 'Cànbia i motivi de la protesion',
-'protect-expiry-options' => '1 ora:1 hour,1 zòrno:1 day,1 stimana:1 week,2 stimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 ano:1 year,infinito:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 ora:1 hour,1 zòrno:1 day,1 stimana:1 week,2 stimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 ano:1 year,infinito:infinite',
'restriction-type' => 'Parmesso:',
'restriction-level' => 'Livèl de restrizion:',
'minimum-size' => 'Dimension minima',
@@ -1951,6 +2088,7 @@ Se dopo ła scancełazion xè stà creà na nova pàxena col stesso titoło, łe
'undelete-nodiff' => 'No xe stà catà nissuna revision precedente.',
'undeletebtn' => 'RIPRISTINA!',
'undeletelink' => 'varda/ripristina',
+'undeleteviewlink' => 'varda',
'undeletereset' => 'Reinposta',
'undeleteinvert' => 'Inverti selession',
'undeletecomment' => 'Comento:',
@@ -1988,19 +2126,23 @@ $1',
'contributions-title' => 'Contribui de $1',
'mycontris' => 'i me contribui',
'contribsub2' => 'Par $1 ($2)',
-'nocontribs' => 'No xe stà catà nissuna modifica che vaga ben par sti critèri.', # Optional parameter: $1 is the user name
+'nocontribs' => 'No xe stà catà nissuna modifica che vaga ben par sti critèri.',
'uctop' => '(ultema par ła pajina)',
'month' => 'Dal mexe (e presedenti):',
'year' => "Da l'ano (e presedenti):",
-'sp-contributions-newbies' => 'Mostra soło i contribui de i novi utenti',
-'sp-contributions-newbies-sub' => 'Par i novi utenti',
-'sp-contributions-newbies-title' => 'Contributi dei utenti novi',
-'sp-contributions-blocklog' => 'blochi',
-'sp-contributions-logs' => 'registri',
-'sp-contributions-search' => 'Riserca contribui',
-'sp-contributions-username' => 'Indirixo IP o nome utente:',
-'sp-contributions-submit' => 'Riserca',
+'sp-contributions-newbies' => 'Mostra soło i contribui de i novi utenti',
+'sp-contributions-newbies-sub' => 'Par i novi utenti',
+'sp-contributions-newbies-title' => 'Contributi dei utenti novi',
+'sp-contributions-blocklog' => 'blochi',
+'sp-contributions-deleted' => 'contributi utente scancelà',
+'sp-contributions-logs' => 'registri',
+'sp-contributions-talk' => 'discussion',
+'sp-contributions-userrights' => 'gestion dei parmessi relativi ai utenti',
+'sp-contributions-blocked-notice' => "Sto utente el xe atualmente blocà. L'ultimo elemento del registro dei blochi el xè riportà qua soto par informassion:",
+'sp-contributions-search' => 'Riserca contribui',
+'sp-contributions-username' => 'Indirixo IP o nome utente:',
+'sp-contributions-submit' => 'Riserca',
# What links here
'whatlinkshere' => 'Punta qua',
@@ -2023,6 +2165,7 @@ $1',
# Block/unblock
'blockip' => 'Bloco utente',
+'blockip-title' => "Bloca l'utente",
'blockip-legend' => "Bloca l'utente",
'blockiptext' => "Dòpara el moduło qua soto par blocar l'accesso in scritura a un speçifico utente o indirizo IP. El bloco el gà de èssar operà par prevegner ati de vandalismo e in streta osservansa de ła [[{{MediaWiki:Policy-url}}|policy de {{SITENAME}}]]. Speçifica in detałio el motivo del bloco nel canpo seguente (ad es. indicando i titołi de łe pàxene ogeto de vandalismo).",
'ipaddress' => 'Indirisso IP (IP Address)',
@@ -2044,7 +2187,7 @@ $1',
'ipbenableautoblock' => "Bloca automaticamente l'ultimo indirizo IP doparà da l'utente e i sucessivi con cui vien tentà modifiche",
'ipbsubmit' => 'Bloca sto indirisso IP',
'ipbother' => 'Altra durata:',
-'ipboptions' => '2 ore:2 hours,1 jorno:1 day,3 jorni:3 days,1 setimana:1 week,2 setimane:2 weeks,1 mexe:1 month,3 mexi:3 months,6 mexi:6 months,1 ano:1 year,infinio:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 ore:2 hours,1 jorno:1 day,3 jorni:3 days,1 setimana:1 week,2 setimane:2 weeks,1 mexe:1 month,3 mexi:3 months,6 mexi:6 months,1 ano:1 year,infinio:infinite',
'ipbotheroption' => 'altro',
'ipbotherreason' => 'Altri motivi/detagli:',
'ipbhidename' => 'Scondi el nome utente da le modìfeghe e da i elenchi.',
@@ -2073,9 +2216,11 @@ Varda [[Special:IPBlockList|lista IP bloccati]] par védar tuti i blochi.",
'ipblocklist-sh-tempblocks' => '$1 i blochi tenporanei',
'ipblocklist-sh-addressblocks' => '$1 i blochi dei singoli IP',
'ipblocklist-submit' => 'Serca',
+'ipblocklist-localblock' => 'Bloco local',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
'blocklistline' => '$1, $2 gà blocà $3 ($4)',
'infiniteblock' => 'infinito',
-'expiringblock' => 'fin al $1',
+'expiringblock' => 'scade el $1 a le $2',
'anononlyblock' => 'solo anonimi',
'noautoblockblock' => 'gnente bloco automatico',
'createaccountblock' => 'creazion account blocà',
@@ -2089,7 +2234,10 @@ Varda [[Special:IPBlockList|lista IP bloccati]] par védar tuti i blochi.",
'contribslink' => 'contribui',
'autoblocker' => 'Bloccà automaticamente parché el to indirisso IP el xè stà doparà de recente da "[[User:$1|$1]]". La motivassion del bloco de $1 la xe: "$2"',
'blocklogpage' => 'Blochi',
-'blocklog-fulllog' => 'Registro conpleto dei blochi',
+'blocklog-showlog' => 'Sto utente el xe stà zà blocà tenpo fa.
+Qua soto ghe xe el registro dei blochi:',
+'blocklog-showsuppresslog' => 'Sto utente el xe stà zà blocà e sconto tenpo fa.
+Qua soto ghe xe el registro de le sopression:',
'blocklogentry' => 'ga blocà [[$1]] par un periodo de $2 $3',
'reblock-logentry' => "gà canbià le inpostassion del bloco par [[$1]] co' na scadensa de $2 $3",
'blocklogtext' => "Sto qua xè un elenco de azioni de bloco e sbloco dei indirizi IP. I indirizi blocai in automatico no i xè mìa elencai. Varda l'[[Special:IPBlockList|elenco dei IP blocà]] par la lista dei indirizi el cui bloco el xè operativo.",
@@ -2108,9 +2256,11 @@ Varda [[Special:IPBlockList|lista IP bloccati]] par védar tuti i blochi.",
'ipb_already_blocked' => 'L\'utente "$1" el xe zà blocà',
'ipb-needreblock' => '== Xà blocà ==
$1 xe xà blocà. Vuto canbiar le inpostassion?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
'ipb_cant_unblock' => 'Eror: Inpossibile catar el bloco con ID $1. El bloco el podarìa èssar zà stà cavà.',
'ipb_blocked_as_range' => "Eror: L'indirizo IP $1 no'l xe sogeto a bloco individual e no'l pol èssar sblocà. El bloco el xe invesse ativo a livel de l'intervalo $2, che el pol èssar sblocà.",
'ip_range_invalid' => 'Intervało de indirissi IP mìa vałido.',
+'ip_range_toolarge' => 'No se pol mia blocar intervali piassè grandi de /$1',
'blockme' => 'Blòcheme',
'proxyblocker' => 'Bloco dei proxy verti',
'proxyblocker-disabled' => 'Sta funzion la xe disabilità.',
@@ -2119,6 +2269,7 @@ $1 xe xà blocà. Vuto canbiar le inpostassion?',
'sorbsreason' => 'Sto indirizo IP el xe elencà come proxy verto ne la lista nera DNSBL doparà da {{SITENAME}}.',
'sorbs_create_account_reason' => 'No se pol crear acessi novi da sto indirizo IP parché el xe elencà come proxy verto ne la lista nera DNSBL doparà da {{SITENAME}}.',
'cant-block-while-blocked' => 'No se pode blocar altri utenti finché se xe blocài.',
+'cant-see-hidden-user' => "L'utente che te vol blocar el xe zà stà blocà e sconto. Sicome a no te ghè mia i diriti de hideuser, no te pol mia védar o canbiar el bloco de l'utente.",
# Developer tools
'lockdb' => 'Blocca el database',
@@ -2159,6 +2310,7 @@ Acèrtete de ver ben valutà le conseguenze del spostamento, prima de procédar.
* In corispondenza del novo titoło ghe xe xà na pàxena de discussion (mìa voda)
* La caseła chi soto la xè stà desełezionà.",
'movearticle' => 'Sposta la pàxena:',
+'moveuserpage-warning' => "'''Ocio:''' Te sì drio spostar na pagina utente. Par piaser tien conto che vegnarà spostà solo la pagina e l'utente no'l vegnarà ''mia'' rinominà.",
'movenologin' => 'No te ghè efetuà el login',
'movenologintext' => 'Te ghè da èssar un utente registrà ed aver efetuà el [[Special:UserLogin|login]] par poder spostar na pàxena.',
'movenotallowed' => 'No te ghè i parmessi necessari al spostamento de le pagine.',
@@ -2169,7 +2321,7 @@ Acèrtete de ver ben valutà le conseguenze del spostamento, prima de procédar.
'move-watch' => "Tien d'ocio",
'movepagebtn' => 'Sposta sta pàxena',
'pagemovedsub' => 'Spostamento efetuà con sucesso',
-'movepage-moved' => '\'\'\'"$1" la xe stà spostà a "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" la xe stà spostà a "$2"\'\'\'',
'movepage-moved-redirect' => 'Un reindirissamento el xe stà creà.',
'movepage-moved-noredirect' => 'La creassion de un reindirissamento la xe stà sopressa.',
'articleexists' => "Na pàxena con sto nome la existe xà, opure el nome che te ghè sielto no'l xè vałido.
@@ -2211,6 +2363,12 @@ La voxe specificà come destinassion "[[:$1]]" l\'esiste xà. Vóto scancełarla
'imageinvalidfilename' => "El nome file de destinassion no'l xe mia valido",
'fix-double-redirects' => 'Agiorna tuti quanti i redirect che ponta al titolo originàl',
'move-leave-redirect' => 'Crea un redirect con lo spostamento',
+'protectedpagemovewarning' => "'''Ocio:''' sta pàxena la xe stà blocà in maniera che solo i aministradori i possa spostarla. Sta qua la xe l'ultima operassion catà sul registro de la pagina:",
+'semiprotectedpagemovewarning' => "'''Ocio:''' Sta pàxena la xe stà blocà in maniera che solo i utenti registrài i possa spostarla. Sta qua la xe l'ultima operassion catà sul registro de la pagina:",
+'move-over-sharedrepo' => "== File xà esistente ==
+[[:$1]] l'esiste de xà su de un deposito condiviso. Meténdoghe sto nome a n'altro file, quel vecio el sarà sorascrito.",
+'file-exists-sharedrepo' => "El nome che te ghè sielto el xe xà doparà da n'altro file in te un deposito condiviso.
+Par piaser, daghe un nome difarente.",
# Export
'export' => 'Esporta pajine',
@@ -2233,15 +2391,21 @@ Nel secondo caso te poli anca doparar un colegamento, par esenpio [[{{#Special:E
'export-pagelinks' => 'Includi le pàxene corelà fin a na profondità de:',
# Namespace 8 related
-'allmessages' => 'Tuti i messagi de sistema',
-'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Testo predefinìo',
-'allmessagescurrent' => 'Testo come che el xe desso',
-'allmessagestext' => "Sta quà l'è na lista de tuti i messagi disponibili nel namespace MediaWiki.
+'allmessages' => 'Tuti i messagi de sistema',
+'allmessagesname' => 'Nome',
+'allmessagesdefault' => 'Testo predefinìo',
+'allmessagescurrent' => 'Testo come che el xe desso',
+'allmessagestext' => "Sta quà l'è na lista de tuti i messagi disponibili nel namespace MediaWiki.
Par piaser visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se te voli jutarne par la traduzion del software MediaWiki ne le varie lengue.",
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' no'l xè supportà parché '''\$wgUseDatabaseMessages''' no'l xè ativo.",
-'allmessagesfilter' => 'Filtro sui messagi:',
-'allmessagesmodified' => 'Mostra soło quełi modefegà',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' no'l xè supportà parché '''\$wgUseDatabaseMessages''' no'l xè ativo.",
+'allmessages-filter-legend' => 'Filtro',
+'allmessages-filter' => 'Filtra par stato de personalixassion:',
+'allmessages-filter-unmodified' => 'Mia modificà',
+'allmessages-filter-all' => 'Tuti quanti',
+'allmessages-filter-modified' => 'Modificà',
+'allmessages-prefix' => 'Filtra par prefisso:',
+'allmessages-language' => 'Lengua:',
+'allmessages-filter-submit' => 'Và',
# Thumbnails
'thumbnail-more' => 'Ingrandissi',
@@ -2251,6 +2415,9 @@ Par piaser visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisa
'djvu_no_xml' => "Inpossibile otegner l'XML par el file DjVu",
'thumbnail_invalid_params' => 'Parametri anteprima mìa giusti',
'thumbnail_dest_directory' => 'Inpossibile crear la directory de destinazion',
+'thumbnail_image-type' => 'Tipo de imagine mia suportà',
+'thumbnail_gd-library' => 'Configurassion inconpleta de la librarìa GD: manca la funsion $1',
+'thumbnail_image-missing' => 'Pararìa che manchesse el file: $1',
# Special:Import
'import' => 'Inporta pàxene',
@@ -2315,6 +2482,7 @@ Salvalo sul to computer e càrghelo qua.',
'tooltip-ca-viewsource' => 'Sta pajina xè proteta, ma te pui vardare el so codexe sorzente',
'tooltip-ca-history' => 'Version presedenti de sta pajina',
'tooltip-ca-protect' => 'Protezi sta pajina',
+'tooltip-ca-unprotect' => 'Cava la protession a sta pagina',
'tooltip-ca-delete' => 'Scanseła sta pajina',
'tooltip-ca-undelete' => "Ripristina la pàxena come l'era prima de la scancelassion",
'tooltip-ca-move' => 'Sposta sta pajina (canbia titoło)',
@@ -2325,6 +2493,7 @@ Salvalo sul to computer e càrghelo qua.',
'tooltip-search-fulltext' => 'Serca el testo indicà ne łe pajine',
'tooltip-p-logo' => 'Visita la pàxena prinsipałe',
'tooltip-n-mainpage' => 'Visita ła pajina prinsipałe',
+'tooltip-n-mainpage-description' => 'Visita ła pajina prinsipałe',
'tooltip-n-portal' => 'Descrision del projeto, cossa te pui fare, dove trovare e robe',
'tooltip-n-currentevents' => 'Informasion so i eventi de atuałità',
'tooltip-n-recentchanges' => 'Elenco de łe ulteme modifeghe del sito',
@@ -2369,10 +2538,12 @@ Salvalo sul to computer e càrghelo qua.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utente anonimo|Utenti anonimi}} de {{SITENAME}}',
'siteuser' => '$1, utente de {{SITENAME}}',
-'lastmodifiedatby' => "Sta pàxena la xè stà modificà l'ultima olta el $2, $1 da $3.", # $1 date, $2 time, $3 user
+'anonuser' => 'Utente anonimo $1 de {{SITENAME}}',
+'lastmodifiedatby' => "Sta pàxena la xè stà modificà l'ultima olta el $2, $1 da $3.",
'othercontribs' => 'El testo atuale el xe basà su contributi de $1.',
'others' => 'altri',
'siteusers' => '$1, {{PLURAL:$2|utente|utenti}} de {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|Utente anonimo|Utenti anonimi}} $1 de {{SITENAME}}',
'creditspage' => 'Autori de ła pàxena',
'nocredits' => 'Nissuna informazion sui autori disponibile par sta pagina.',
@@ -2401,11 +2572,22 @@ Questo xe probabilmente dovùo a la presenza de un colegamento a un sito foresto
'mw_math_modern' => 'Racomandà par i browser pì novi',
'mw_math_mathml' => 'Usa MathML se se pol (sperimental)',
+# Math errors
+'math_failure' => 'Eror del parser',
+'math_unknown_error' => 'eror sconossiùo',
+'math_unknown_function' => 'funzion sconossiùa',
+'math_lexing_error' => 'eror lessicale',
+'math_syntax_error' => 'eror de sintassi',
+'math_image_error' => 'Conversion in PNG fałía',
+'math_bad_tmpdir' => 'Inpossibile scrìvar o crear la directory tenporanea par math',
+'math_bad_output' => 'Inpossibile scrìvar o crear la directory de output par math',
+'math_notexvc' => 'Eseguibile texvc mancante; par piaser consulta math/README par la configurazion.',
+
# Patrolling
'markaspatrolleddiff' => 'Segna la modifica come verificà',
'markaspatrolledtext' => 'Segna sta pàxena come verificà',
'markedaspatrolled' => 'Segnà come verificà',
-'markedaspatrolledtext' => 'La revixion selessionà la xè stà segnà come verificada.',
+'markedaspatrolledtext' => 'La revixion de [[:$1]] selessionà la xè stà segnà come verificada.',
'rcpatroldisabled' => 'La verifica de le ultime modifiche la xe disativà',
'rcpatroldisabledtext' => 'La funzion de verifica de le ultime modifiche al momento no la xe ativa.',
'markedaspatrollederror' => 'No se pol contrassegnar ła voxe come verificà',
@@ -2435,13 +2617,10 @@ $1',
'previousdiff' => '← Difarensa presedente',
'nextdiff' => 'Difarensa sucesiva →',
-# Visual comparison
-'visual-comparison' => 'Confronto visuale',
-
# Media information
'mediawarning' => "'''Ocio''': Sto file qua el podarìa contegner codice cativo.
La so esecuzion la podarìa danegiar el to computer.",
-'imagemaxsize' => 'Dimension massima de le imagini su le relative pagine de descrizion:',
+'imagemaxsize' => "Dimension massima de le imagini:<br />''(su le relative pagine de descrizion)''",
'thumbsize' => 'Grandeza de le miniature:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|pagine}}',
'file-info' => 'Dimensioni: $1, tipo MIME: $2',
@@ -2450,6 +2629,8 @@ La so esecuzion la podarìa danegiar el to computer.",
'svg-long-desc' => '(file en formato SVG, dimension nominałi $1 × $2 pixel, dimension del file: $3)',
'show-big-image' => 'Version ad alta risołusion',
'show-big-image-thumb' => '<small>Dimension de sta anteprima: $1 × $2 pixel</small>',
+'file-info-gif-looped' => 'ripetù',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Galeria dei file novi',
@@ -2481,7 +2662,7 @@ I cołegamenti sucesivi, so ła stesa riga, i xé considerai come ecesion (overo
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Largheza',
@@ -2608,14 +2789,14 @@ I cołegamenti sucesivi, so ła stesa riga, i xé considerai come ecesion (overo
'exif-unknowndate' => 'Data sconossiùa',
-'exif-orientation-1' => 'Normałe', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Roersà orixontalmente', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Ruotà de 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Roersà verticalmente', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Ruotà 90° in senso antiorario e roersà verticalmente', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Ruotà 90° in senso orario', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Ruotà 90° in senso orario e capovolto verticalmente', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Ruotà 90° in senso antiorario', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Normałe',
+'exif-orientation-2' => 'Roersà orixontalmente',
+'exif-orientation-3' => 'Ruotà de 180°',
+'exif-orientation-4' => 'Roersà verticalmente',
+'exif-orientation-5' => 'Ruotà 90° in senso antiorario e roersà verticalmente',
+'exif-orientation-6' => 'Ruotà 90° in senso orario',
+'exif-orientation-7' => 'Ruotà 90° in senso orario e capovolto verticalmente',
+'exif-orientation-8' => 'Ruotà 90° in senso antiorario',
'exif-planarconfiguration-1' => 'a blochi (chunky)',
'exif-planarconfiguration-2' => 'lineare (planar)',
@@ -2744,7 +2925,7 @@ I cołegamenti sucesivi, so ła stesa riga, i xé considerai come ecesion (overo
'exif-gpsmeasuremode-2' => 'Misurassion bidimensionałe',
'exif-gpsmeasuremode-3' => 'Misurassion tridimensionałe',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Chiłometri orari',
'exif-gpsspeed-m' => 'Miglia orarie',
'exif-gpsspeed-n' => 'Nodi',
@@ -2763,6 +2944,7 @@ I cołegamenti sucesivi, so ła stesa riga, i xé considerai come ecesion (overo
'watchlistall2' => 'tute',
'namespacesall' => 'Tuti',
'monthsall' => 'tuti',
+'limitall' => 'tuti quanti',
# E-mail address confirmation
'confirmemail' => 'Conferma indirisso e-mail',
@@ -2888,7 +3070,7 @@ Doparar l\'anteprima standard.',
'duplicate-defaultsort' => 'Ocio: la ciave de ordinamento predefinìa "$2" la va in conflito co\' quela de prima "$1".',
# Special:Version
-'version' => 'Version', # Not used as normal message but as header for the special page itself
+'version' => 'Version',
'version-extensions' => 'Estension instalè',
'version-specialpages' => 'Pagine speciali',
'version-parserhooks' => 'Hook del parser',
@@ -2902,7 +3084,7 @@ Doparar l\'anteprima standard.',
'version-skin-extension-functions' => "Funzioni ligà a l'aspeto grafico (skin) introdote da estensioni",
'version-hook-name' => "Nome de l'hook",
'version-hook-subscribedby' => 'Sotoscrizioni',
-'version-version' => 'Version',
+'version-version' => '(Version $1)',
'version-license' => 'Licensa',
'version-software' => 'Software instalà',
'version-software-product' => 'Prodoto',
@@ -2982,4 +3164,15 @@ Inserissi el nome del file senza el prefisso \"{{ns:file}}:\"",
'dberr-outofdate' => 'Tien presente che la so indicixassion dei nostri contenuti la podarìa no èssar ajornà.',
'dberr-cachederror' => 'Quela che segue la xe na copia cache de la pàxena richiesta, e la podarìa no èssar mia ajornà.',
+# HTML forms
+'htmlform-invalid-input' => "Ghe xe problemi con l'input che te ghè inserìo",
+'htmlform-select-badoption' => "El valor che te ghè indicà no'l xe mia valido.",
+'htmlform-int-invalid' => "El valor che te ghè indicà no'l xe un nùmaro intero.",
+'htmlform-float-invalid' => "El valor indicà no'l xe mia un nùmaro.",
+'htmlform-int-toolow' => 'El valor che te ghè indicà el xe soto al minimo, che xe $1',
+'htmlform-int-toohigh' => 'El valor che te ghè indicà el xe sora al màssimo, che xe $1',
+'htmlform-submit' => 'Manda',
+'htmlform-reset' => 'Scancèla modifiche',
+'htmlform-selectorother-other' => 'Altro',
+
);
diff --git a/languages/messages/MessagesVep.php b/languages/messages/MessagesVep.php
index e8d8687c..845de83e 100644
--- a/languages/messages/MessagesVep.php
+++ b/languages/messages/MessagesVep.php
@@ -43,26 +43,45 @@ $specialPageAliases = array(
'Watchlist' => array( 'KaclendNimikirjutez' ),
'Recentchanges' => array( 'TantoižedToižetused' ),
'Upload' => array( 'Jügutoitta' ),
+ 'Newimages' => array( 'UdedFailad' ),
+ 'Listusers' => array( 'KävutajidenNimikirjutez' ),
'Statistics' => array( 'Statistikad' ),
'Lonelypages' => array( 'ÜksjäižedLehtpoled', 'ArmotomadLehtesed' ),
+ 'Wantedfiles' => array( 'VarastadudFailad' ),
+ 'Shortpages' => array( 'LühüdadLehtpoled' ),
+ 'Longpages' => array( 'Pit\'kädLehtpoled' ),
+ 'Newpages' => array( 'UdedLehtpoled' ),
+ 'Ancientpages' => array( 'VanhadLehtpoled' ),
+ 'Protectedpages' => array( 'KaitudLehtpoled' ),
+ 'Protectedtitles' => array( 'KaitudPälkirjutesed' ),
+ 'Allpages' => array( 'KaikLehtesed' ),
+ 'Specialpages' => array( 'SpecialižedLehtpoled' ),
+ 'Contributions' => array( 'Tond' ),
+ 'Categories' => array( 'Kategorijad' ),
+ 'Export' => array( 'Eksport' ),
+ 'Version' => array( 'Versii' ),
+ 'Allmessages' => array( 'KaikTedotused' ),
+ 'Mypage' => array( 'MinunLehtpol\'' ),
+ 'Mytalk' => array( 'MinunLodu' ),
+ 'Mycontributions' => array( 'MinunTond' ),
+ 'Search' => array( 'Ectä' ),
);
$magicWords = array(
- 'img_right' => array( '1', 'oiged', 'right' ),
- 'img_left' => array( '1', 'hura', 'left' ),
- 'img_none' => array( '1', 'eile', 'none' ),
+ 'img_right' => array( '1', 'oiged', 'paremal', 'right' ),
+ 'img_left' => array( '1', 'hura', 'vasakul', 'left' ),
+ 'img_none' => array( '1', 'eile', 'tühi', 'none' ),
'img_width' => array( '1', '$1piks', '$1px' ),
- 'img_border' => array( '1', 'röun', 'border' ),
+ 'img_border' => array( '1', 'röun', 'ääris', 'border' ),
'img_top' => array( '1', 'üläh', 'top' ),
'img_middle' => array( '1', 'kesk', 'middle' ),
'img_bottom' => array( '1', 'ala', 'bottom' ),
- 'sitename' => array( '1', 'SAITANNIMI', 'SITENAME' ),
+ 'sitename' => array( '1', 'SAITANNIMI', 'KOHANIMI', 'SITENAME' ),
'grammar' => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
'gender' => array( '0', 'SUGU:', 'GENDER:' ),
'plural' => array( '0', 'ÄILUGU:', 'PLURAL:' ),
- 'fullurl' => array( '0', 'TÄUZ\'URL:', 'FULLURL:' ),
- 'fullurle' => array( '0', 'TÄUZ\'URL:', 'FULLURLE:' ),
- 'index' => array( '1', '__INDEKS__', '__INDEX__' ),
+ 'fullurl' => array( '0', 'TÄUZ\'URL:', 'KOGUURL:', 'FULLURL:' ),
+ 'index' => array( '1', '__INDEKS__', 'INDEKSIGA', '__INDEX__' ),
);
$messages = array(
@@ -96,6 +115,7 @@ $messages = array(
'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused oma minimaližed',
'tog-enotifrevealaddr' => 'Ozutada minun počtadres tedotuzkirjeižiš',
'tog-shownumberswatching' => 'Ozutada niiden kävutajiden lugu, kudambad oma mülütanuded lehtpolen ičeze kaclendnimikirjutesihe',
+'tog-oldsig' => 'Olijan allekirjutesen ezikacund:',
'tog-fancysig' => 'Ičeze allekirjutesen wiki-znamišt (avtomatižeta kosketuseta)',
'tog-externaleditor' => 'Kävutada irdredaktor augotižjärgendusen mödhe (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter)',
'tog-externaldiff' => 'Kävutada irdprogramm versijoiden rindatades (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter)',
@@ -118,6 +138,13 @@ $messages = array(
'underline-never' => 'Nikonz',
'underline-default' => 'Kävutada kaclimen järgendused',
+# Font style option in Special:Preferences
+'editfont-style' => "Redaktiruindan pöudon šriftan stil':",
+'editfont-default' => 'Järgeline kaclim',
+'editfont-monospace' => 'Monoleved šrift',
+'editfont-sansserif' => 'Sans-šerifšrift',
+'editfont-serif' => 'Šerifšrift',
+
# Dates
'sunday' => 'pühäpäiv',
'monday' => 'ezmärg',
@@ -177,7 +204,7 @@ $messages = array(
'category-media-header' => 'Mediafailad "$1"-kategorijas',
'category-empty' => "''Nece kategorii om nügüd' pall'az.''",
'hidden-categories' => '{{PLURAL:$1|Peittud kategorii|Peittud kategorijad}}',
-'hidden-category-category' => 'Peittud kategorijad', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Peittud kategorijad',
'category-subcat-count' => "{{PLURAL:$2|Neciš kategorijas om vaiše üks' alakategorii.|Neciš kategorijas om {{PLURAL:$1|üks' alakategorii|$1 alakategorijad}}; om kaiked $2 alakategorijad.}}",
'category-subcat-count-limited' => 'Neciš kategorijas om {{PLURAL:$1|mugoi üks alakategorii| mugomad $1 alakategorijad}}.',
'category-article-count' => "{{PLURAL:$2|Neciš kategorijas om vaiše üks' ozutadud lehtpol'.| Täs om ozutadud necen kategorijan {{PLURAL:$1|üks' lehtpol'|$1 lehtpol't}}; om kaiked $2.}}",
@@ -185,6 +212,8 @@ $messages = array(
'category-file-count' => "{{PLURAL:$2|Neciš kategorijas om vaiše üks' fail.|{{PLURAL:$1|Nece fail om|$1 Nened failad oma}} neciš kategorijas; om kaiked $2.}}",
'category-file-count-limited' => '{{PLURAL:$1|Nece fail om|$1 Nened failad oma}} neciš kategorijas.',
'listingcontinuesabbrev' => 'jatktand',
+'index-category' => 'Indeksiruidud lehtpoled',
+'noindex-category' => 'Indeksiruimatomad lehtpoled',
'mainpagetext' => "'''MediaWiki-likutim om seižutadud jügedusita.'''",
'mainpagedocfooter' => 'Kc. [http://meta.wikimedia.org/wiki/Help:Kävutajan abukirj], miše sada informacijad wikin kävutamižes.
@@ -194,10 +223,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce počtnimikirjutez]',
-'about' => 'Andmused',
-'article' => "Südäimištlehtpol'",
-'newwindow' => '(avaidase udes iknas)',
-'cancel' => 'Heitta pätand',
+'about' => 'Andmused',
+'article' => "Südäimištlehtpol'",
+'newwindow' => '(avaidase udes iknas)',
+'cancel' => 'Heitta pätand',
+'moredotdotdot' => 'Edeleze...',
+'mypage' => "Minun lehtpol'",
+'mytalk' => 'Minun lodud',
+'anontalk' => 'Lodud neciš IP-adresas',
+'navigation' => 'Navigacii',
+'and' => '&#32;da',
+
+# Cologne Blue skin
'qbfind' => 'Ectä',
'qbbrowse' => 'Kacelta',
'qbedit' => 'Redaktiruida',
@@ -205,15 +242,35 @@ $messages = array(
'qbpageinfo' => 'Andmused lehtpoles',
'qbmyoptions' => 'Minun järgendused',
'qbspecialpages' => 'Specialižed lehtpoled',
-'moredotdotdot' => 'Edeleze...',
-'mypage' => "Minun lehtpol'",
-'mytalk' => 'Minun lodud',
-'anontalk' => 'Lodud neciš IP-adresas',
-'navigation' => 'Navigacii',
-'and' => '&#32;da',
-
-# Metadata in edit box
-'metadata_help' => 'Metaandmused:',
+'faq' => 'PPK',
+'faqpage' => 'Project:PPK',
+
+# Vector skin
+'vector-action-addsection' => 'Ližada tem',
+'vector-action-delete' => 'Čuta poiš',
+'vector-action-move' => 'Udesnimitada',
+'vector-action-protect' => 'Kaita',
+'vector-action-undelete' => 'Pördutada',
+'vector-action-unprotect' => 'Heitta kaičend',
+'vector-namespace-category' => 'Kategorii',
+'vector-namespace-help' => "Abun lehtpol'",
+'vector-namespace-image' => 'Fail',
+'vector-namespace-main' => "Lehtpol'",
+'vector-namespace-media' => "Medialehtpol'",
+'vector-namespace-mediawiki' => 'Kirjeine',
+'vector-namespace-project' => "Projektan lehtpol'",
+'vector-namespace-special' => "Specialine lehtpol'",
+'vector-namespace-talk' => 'Diskussii',
+'vector-namespace-template' => 'Šablon',
+'vector-namespace-user' => "Kävutajan lehtpol'",
+'vector-view-create' => 'Säta',
+'vector-view-edit' => 'Redaktiruida',
+'vector-view-history' => 'Kacta istorii',
+'vector-view-view' => 'Lugeda',
+'vector-view-viewsource' => 'Kacta purtkehe',
+'actions' => 'Tegendad',
+'namespaces' => 'Nimiavaruded',
+'variants' => 'Variantad',
'errorpagetitle' => 'Petuz',
'returnto' => 'Pörttas lehtpolele $1.',
@@ -263,18 +320,23 @@ $messages = array(
'otherlanguages' => 'Toižil kelil',
'redirectedfrom' => '(Oigetud lehtpolelpäi $1)',
'redirectpagesub' => "Oigendai lehtpol'",
-'lastmodifiedat' => "Nece lehtpol' toižetadihe $1, aigal $2.", # $1 date, $2 time
+'lastmodifiedat' => "Nece lehtpol' toižetadihe $1, aigal $2.",
'viewcount' => "Nece lehtpol' kaceltihe {{PLURAL:$1|kerdal|$1 kerdad}}.",
'protectedpage' => "Saubatud lehtpol'",
'jumpto' => 'Hüpähtada:',
'jumptonavigation' => 'navigacii',
'jumptosearch' => 'Ecind',
+'view-pool-error' => "Pakičem armahtust!
+Serverad oma üläkormatud.
+Äjahk kävutajid lattäs kacta necidä lehtpol't.
+Varastagat pordon aigad i lat'kät pörttas lehtpolele.
+
+$1",
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Informacii saitas {{SITENAME}}',
'aboutpage' => 'Project:Informacii',
'copyright' => 'Südäimišt kävutadas $1-licenzijan mödhe.',
-'copyrightpagename' => '{{SITENAME}} tegijan oiktused',
'copyrightpage' => '{{ns:project}}:tegijan oiktused',
'currentevents' => 'Nügüdläižed tegod',
'currentevents-url' => 'Project:Nügüdläižed tegod',
@@ -282,8 +344,6 @@ $messages = array(
'disclaimerpage' => 'Project:Pučind vastusenpidandaspäi',
'edithelp' => 'Abu redaktiruindas',
'edithelppage' => 'Help:Abu redaktiruindas',
-'faq' => 'PPK',
-'faqpage' => 'Project:PPK',
'helppage' => 'Help:Südäimišt',
'mainpage' => 'Pälehtpol’',
'mainpage-description' => 'Pälehtpol’',
@@ -358,10 +418,6 @@ Jäl\'gmäine ecind andmusiden bazas oli:
"$1"
funkcijaspäi "$2".
Andmusiden baz pördi petusen "$3: $4"',
-'noconnect' => 'Pakičem armahtust! Wikil om tehnižid jügedusid, i se ei voi säta sidod andmusiden bazanke.<br />
-$1',
-'nodb' => 'Ei voi valita andmusiden bazad $1',
-'cachederror' => 'Naku om ectud lehtpolen keširuidud kopii; voib olda, se om jo vanhtunu',
'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
'readonly' => 'Andmusiden baz om luklostadud',
'enterlockreason' => 'Kirjutagat sü da pandud blokiruindan strok',
@@ -376,6 +432,7 @@ Ližakat URL.',
'readonly_lag' => 'Andmusiden baz om luklostadud avtomatižešti pordoks aigad, kuni sinhroniziruiše ezmäškerdaine da toškerdaine serverad',
'internalerror' => 'Südäipetuz',
'internalerror_info' => 'Südäipetuz: $1',
+'fileappenderror' => 'Ei voi ližata «$1»-failad «$2»-failha.',
'filecopyerror' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
'filerenameerror' => 'Ei voi udesnimitada "$1"-failad "$2"-tahoze.',
'filedeleteerror' => 'Ei voi čuta poiš "$1"-failad.',
@@ -385,8 +442,8 @@ Ližakat URL.',
'unexpected' => 'Varastamatoi znamočend: "$1"="$2".',
'formerror' => 'Petuz: ei voi oigeta forman admusid',
'badarticleerror' => 'Necidä ei sa tehta necil lehtpolel.',
-'cannotdelete' => 'Ei voi čuta poiš necidä failad.
-Se om jo čutud kenel-ni toižel.',
+'cannotdelete' => 'Ei voi čuta poiš necidä lehtpol\'t vai "$1"-failad.
+Sen om jo čutnu ken-se toine.',
'badtitle' => 'Hond nimi',
'badtitletext' => 'Ectud lehtpolen nimi om vär, vai mugošt nimed ei ole, vai kelidenkeskeline (interwiki) nimi om kirjutadud värin.
Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
@@ -419,97 +476,79 @@ Sü om "\'\'$2\'\'".',
'virus-unknownscanner' => 'tundmatoi antivirus:',
# Login and logout pages
-'logouttitle' => 'Lähtta sistemaspäi',
-'logouttext' => "'''Tö olet lähtnuded sistemaspäi.'''
+'logouttext' => "'''Tö olet lähtnuded sistemaspäi.'''
Sab jatkta rad {{SITENAME}}-saital anonimižikš, vai [[Special:UserLogin|kirjutagatoiš udes]] sil-žo vai toižel kävutajan nimel.
Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel teiden lähtendad sistemaspäi. Miše vajehtada niiden nägu, puhtastagat teiden kaclimen keš.",
-'welcomecreation' => '== Tulgat tervhen, $1! ==
+'welcomecreation' => '== Tulgat tervhen, $1! ==
Teiden registracii om loptud.
Algat unohtagoi [[Special:Preferences|järgeta personaližikš]] sait.',
-'loginpagetitle' => 'Tulda sistemha',
-'yourname' => 'Kävutajan nimi:',
-'yourpassword' => 'Peitsana:',
-'yourpasswordagain' => 'Kirjutagat peitsana udes:',
-'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras',
-'yourdomainname' => 'Teiden domen:',
-'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
-'login' => 'Kirjutadas sistemha',
-'nav-login-createaccount' => 'Kirjutadas / Sada registracii',
-'loginprompt' => 'Pidab laskta sada "cookies", miše kirjutadas {{SITENAME}}he.',
-'userlogin' => 'Kirjutadas / Sada registracii',
-'logout' => 'Lähtta',
-'userlogout' => 'Lähtta',
-'notloggedin' => 'Tö et olgoi kirjutanus sistemha',
-'nologin' => "Ku tö et völ olgoi sanuded registracijad, '''$1'''.",
-'nologinlink' => 'Sada registracii',
-'createaccount' => 'Sada registracii',
-'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
-'gotaccountlink' => 'Kirjutagatoiš sistemha',
-'createaccountmail' => 'e-počtaiči',
-'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
-'userexists' => 'Kirjutadud kävutajan nimi om jo rezerviruidud.
+'yourname' => 'Kävutajan nimi:',
+'yourpassword' => 'Peitsana:',
+'yourpasswordagain' => 'Kirjutagat peitsana udes:',
+'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras',
+'yourdomainname' => 'Teiden domen:',
+'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
+'login' => 'Kirjutadas sistemha',
+'nav-login-createaccount' => 'Kirjutadas / Sada registracii',
+'loginprompt' => 'Pidab laskta sada "cookies", miše kirjutadas {{SITENAME}}he.',
+'userlogin' => 'Kirjutadas / Sada registracii',
+'userloginnocreate' => 'Kirjutagatoiš sistemha',
+'logout' => 'Lähtta',
+'userlogout' => 'Lähtta',
+'notloggedin' => 'Tö et olgoi kirjutanus sistemha',
+'nologin' => "Ku tö et völ olgoi sanuded registracijad, '''$1'''.",
+'nologinlink' => 'Sada registracii',
+'createaccount' => 'Sada registracii',
+'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
+'gotaccountlink' => 'Kirjutagatoiš sistemha',
+'createaccountmail' => 'e-počtaiči',
+'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
+'userexists' => 'Kirjutadud kävutajan nimi om jo rezerviruidud.
Olgat hüväd, valikat toine kävutajan nimi.',
-'youremail' => 'E-počt:',
-'username' => 'Kävutajan nimi:',
-'uid' => 'Kävutajan nomer:',
-'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} ühtnii:',
-'yourrealname' => 'Todesine nimi:',
-'yourlanguage' => "Kel':",
-'yourvariant' => 'Kelenvariant:',
-'yournick' => 'Allekirjutez:',
-'badsig' => 'Vär allekirjutez.
-Kodvgat HTML-virgad.',
-'badsiglength' => "Pit'kähk allekirjutez.
-Pidab tehta se $1 {{PLURAL:$1|simvolaspäi|simvoloišpäi}}.",
-'yourgender' => 'Sugu:',
-'gender-unknown' => 'Ei ole ozutadud',
-'gender-male' => 'Mez’',
-'gender-female' => 'Naine',
-'prefs-help-gender' => 'Opcionaline: kävutadas likutimen erasiš tedotusiš, miše ozutada kävutajan sugu oikti. Nece informacii om avoin.',
-'email' => 'E-počt',
-'prefs-help-realname' => 'Todesine nimi om opcionaline.
-Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.',
-'loginerror' => 'Sistemha tulendan peituz.',
-'prefs-help-email-required' => 'Pidab kirjutada teiden e-počtan adres.',
-'nocookieslogin' => '{{SITENAME}}-sait kävutab "cookie"-failad, miše tundištada kävutajid.
+'loginerror' => 'Sistemha tulendan peituz.',
+'createaccounterror' => 'Ei voi säta registracijad: $1',
+'nocookieslogin' => '{{SITENAME}}-sait kävutab "cookie"-failad, miše tundištada kävutajid.
Tö olet saupnuded "cookie"-failad.
Otkat ned kävutamižhe i toštkat teiden tegend.',
-'noname' => 'Tö ei olgoi kirjutanuded lasktud kävutajan nimed.',
-'loginsuccesstitle' => 'Tulend sistemha om lopnus satusekahas.',
-'loginsuccess' => "'''Tö radat nügüd' {{SITENAME}}-saital kut \"\$1\".'''",
-'nosuchuser' => 'Ei ole kävutajad "$1"-nimenke.
+'noname' => 'Tö ei olgoi kirjutanuded lasktud kävutajan nimed.',
+'loginsuccesstitle' => 'Tulend sistemha om lopnus satusekahas.',
+'loginsuccess' => "'''Tö radat nügüd' {{SITENAME}}-saital kut \"\$1\".'''",
+'nosuchuser' => 'Ei ole kävutajad "$1"-nimenke.
Kävutajan nimiden oigedkirjutamine rippub kirjamiden registraspäi.
Kodvgat teiden oigedkirjutamine, vai [[Special:UserLogin/signup|säkat uz\' registracii]].',
-'nosuchusershort' => 'Ei ole kävutajad "<nowiki>$1</nowiki>"-nimenke.
+'nosuchusershort' => 'Ei ole kävutajad "<nowiki>$1</nowiki>"-nimenke.
Kodvgat teiden oigedkirjutamine.',
-'nouserspecified' => 'Pidab kirjutada kävutajan nimi.',
-'wrongpassword' => 'Peitsana om vär.
+'nouserspecified' => 'Pidab kirjutada kävutajan nimi.',
+'login-userblocked' => "Nece kävutai om blokiruidud. Tulend sistemha om kel'tud.",
+'wrongpassword' => 'Peitsana om vär.
Kirjutagat se völ kerdan.',
-'wrongpasswordempty' => "Nece peitsana om pall'az.
+'wrongpasswordempty' => "Nece peitsana om pall'az.
Kirjutagat toine peitsana.",
-'passwordtooshort' => 'Teiden peitsana om vär vai lühüdahk.
-Sille pidab mülütada {{PLURAL:$1|1 znam|$1 znamad}} i erineda teiden kävutajan nimelpäi.',
-'mailmypassword' => "Oigeta minei uz' peitsana e-počtadme",
-'passwordremindertitle' => "Uz' pordaigaline peitsana {{SITENAME}}-saitan täht",
-'noemail' => '"$1"-kävutai ei ole andnu ičeze e-počtan adresad.',
-'passwordsent' => "Uz' peitsana om oigetud $1-kävutajan e-počtan adresale.
+'passwordtooshort' => 'Peitsanha pidab mülütada {{PLURAL:$1|1 znam|$1 znamad}}.',
+'password-name-match' => 'Teiden peitsanale pidab erineda kävutajan nimespäi.',
+'mailmypassword' => "Oigeta minei uz' peitsana e-počtadme",
+'passwordremindertitle' => "Uz' pordaigaline peitsana {{SITENAME}}-saitan täht",
+'noemail' => '"$1"-kävutai ei ole andnu ičeze e-počtan adresad.',
+'noemailcreate' => 'Bidab kirjutada todesine e-počtan adres',
+'passwordsent' => "Uz' peitsana om oigetud $1-kävutajan e-počtan adresale.
Olgat hüväd, kirjutagatoiš sistemha, konz sat sen.",
-'blocked-mailpassword' => "Redaktiruind teiden IP-adresalpäi om kel'tud, peitsanan udištandan funkcii om mugažo blokiruidud, miše kaitas abidoičendaspäi.",
-'eauthentsent' => 'Vahvištoituzkirjeine om oigetud teiden adresale. Kirjeižes om mugažo kirjutadud, midä pidab tehta, miše vahvištoitta teiden registracijad.',
-'mailerror' => 'E-počtan oigendamižen petuz: $1',
-'emailauthenticated' => 'Teiden e-počtan adres vahvištoittihe datal $2 aigal $3.',
-'emailnotauthenticated' => 'Teiden e-počtan adres ei ole völ vahvištoittud.
+'blocked-mailpassword' => "Redaktiruind teiden IP-adresalpäi om kel'tud, peitsanan udištandan funkcii om mugažo blokiruidud, miše kaitas abidoičendaspäi.",
+'eauthentsent' => 'Vahvištoituzkirjeine om oigetud teiden adresale. Kirjeižes om mugažo kirjutadud, midä pidab tehta, miše vahvištoitta teiden registracijad.',
+'mailerror' => 'E-počtan oigendamižen petuz: $1',
+'emailauthenticated' => 'Teiden e-počtan adres vahvištoittihe datal $2 aigal $3.',
+'emailnotauthenticated' => 'Teiden e-počtan adres ei ole völ vahvištoittud.
Wiki-likutimen počtfunkcijad ei olgoi kävutamas.',
-'noemailprefs' => 'Kirjutagat e-počtan adres teiden järgendusihe, miše se oliži kävutamas.',
-'emailconfirmlink' => 'Vahvištoitkat teiden e-počtan adres',
-'invalidemailaddress' => 'Ningomal e-počtan adresal om vär format. Olgat hüväd, kirjutagat e-počtan adres oiktas formatas vai puhtastagat e-počtan pöud.',
-'accountcreated' => 'Registracii om OK',
-'accountcreatedtext' => 'Registracii $1-kävutajan täht om sätud.',
-'createaccount-title' => '{{SITENAME}}: registracijan sädand.',
-'login-throttled' => 'Tö olet tehnu äjahkon naprindoid kirjutadas sistemha.
+'noemailprefs' => 'Kirjutagat e-počtan adres teiden järgendusihe, miše se oliži kävutamas.',
+'emailconfirmlink' => 'Vahvištoitkat teiden e-počtan adres',
+'invalidemailaddress' => 'Ningomal e-počtan adresal om vär format. Olgat hüväd, kirjutagat e-počtan adres oiktas formatas vai puhtastagat e-počtan pöud.',
+'accountcreated' => 'Registracii om OK',
+'accountcreatedtext' => 'Registracii $1-kävutajan täht om sätud.',
+'createaccount-title' => '{{SITENAME}}: registracijan sädand.',
+'usernamehasherror' => 'Kävutajan nimes ei voi olda mugošt znamad.',
+'login-throttled' => 'Tö olet tehnu äjahkon naprindoid kirjutadas sistemha.
Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
-'loginlanguagelabel' => 'Kel’: $1',
+'loginlanguagelabel' => 'Kel’: $1',
# Password reset dialog
'resetpass' => 'Vajehtada peitsana',
@@ -522,18 +561,13 @@ Miše tulda sistemha lopuližikš, teile pidab säta uz' peitsana naku:",
'retypenew' => "Toštkat uz' peitsana:",
'resetpass_submit' => 'Säta peitsana da kirjutadas sistemha',
'resetpass_success' => 'Teiden peisana om vajehtadud jügedusita! Tulend sistemha...',
-'resetpass_bad_temporary' => 'Hond pordaigaline peitsana.
-Voib olda, tö olet jo vajehtanuded teiden peitsana vai olet pakinuded sistemalpäi uden pordaigaližen peitsanan.',
'resetpass_forbidden' => 'Ei voi vajehtada peitsanad',
'resetpass-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
'resetpass-submit-loggedin' => 'Vajehtada peitsana',
+'resetpass-submit-cancel' => 'Heitta pätand',
'resetpass-wrong-oldpass' => 'Vär pordaigaine vai nügüdläine peitsana.
Voib olda, tö olet jo toižetanuded peitsanan vai pakinuded uden peitsanan.',
'resetpass-temp-password' => 'Pordaigaline peitsana:',
-'resetpass-log' => 'Peitsanoiden heitmižen aigkirj',
-'resetpass-logtext' => 'Alemba om niiden kävutajiden nimikirjutez, kudambiden peitsanad oma heittud administratoril.',
-'resetpass-logentry' => 'om vajehtanu $1-kävutajan peitsanan',
-'resetpass-comment' => 'Peitsanan vajehtusen sü:',
# Edit page toolbar
'bold_sample' => 'Lihavoitud tekst',
@@ -607,7 +641,6 @@ Olgat hüväd, kirjutagat nened andmused kaikiš kirjeižiš administratorile.",
'blockededitsource' => "'''Teiden $1-lehtpolen toižetusiden''' tekst:",
'whitelistedittitle' => 'Kirjutagatoiš sistemha, miše redaktiruida',
'whitelistedittext' => 'Teile pidab $1, miše redaktiruida lehtpolid.',
-'confirmedittitle' => 'Vahvištoitkat teiden e-počtan adres',
'confirmedittext' => 'Tarbiž vahvištoitta e-počtan adres, miše redaktiruida lehtpolid.
Olgat hüväd, kirjutagat da vahvištoitkat teiden e-počtan adres [[Special:Preferences|järgendusiden lehtpolel]].',
'nosuchsectiontitle' => 'Ei voi löuta mugošt jagust',
@@ -626,7 +659,9 @@ Tö voit [[Special:Search/{{PAGENAME}}|ectä nece nimi]] toižil lehtpolil,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid],
vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktiruida nece lehtpol\']</span>.',
'userpage-userdoesnotexist' => "Kävutajan nimed «$1» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
-'usercssjsyoucanpreview' => "'''Nevond:''' Kävutagat 'Ozutada ezikacund'-kingitim, miše kodvda teiden uz' CSS/JS edel mušthopanendad.",
+'userpage-userdoesnotexist-view' => '"$1"-kävutai ei ole registriruidud.',
+'usercssyoucanpreview' => "'''Nevond:''' Kävutagat 'Ozutada ezikacund'-kingitim, miše kodvda teiden uz' CSS edel mušthopanendad.",
+'userjsyoucanpreview' => "'''Nevond:''' Kävutagat 'Ozutada ezikacund'-kingitim, miše kodvda teiden uz' JS edel mušthopanendad.",
'usercsspreview' => "'''Muštkat, miše nece om vaiše teiden CSS-failan ezikacund, se ei ole völ kirjutadud muštho!'''",
'userjspreview' => "'''Muštkat, miše nece om vaiše teiden JavaScript-failan ezikacund, se ei ole völ kirjutadud muštho!'''",
'updated' => '(Udištadud)',
@@ -659,15 +694,18 @@ erasil kaclimil om problemoid, konz ned kaceltas 32 kb ülitajid lehtpolid.
Olgat hüväd, jagakat lehtpol' penembihe paloihe.",
'longpageerror' => "'''PETUZ: Teiden tekstan suruz om $1 kb, a lasktud maksimum om $2 kb.'''
Ei voi kirjutada muštho.",
-'protectedpagewarning' => "'''VARUTUZ: nece lehtpol' om luklostadud, sidä voidas redaktiruida vaiše administratorad.'''",
-'semiprotectedpagewarning' => "'''Tedotuz:''' Nece lehtpol' om kaitud redaktiruindaspäi; vaiše registriruidud kävutajad voidas redaktiruida sidä.",
+'protectedpagewarning' => "'''VARUTUZ: nece lehtpol' om luklostadud, sidä voidas redaktiruida vaiše administratorad.'''
+Alemba om anttud jäl'gmäine aiglehtesen kirjutez:",
+'semiprotectedpagewarning' => "'''Tedotuz:''' Nece lehtpol' om kaitud redaktiruindaspäi; vaiše registriruidud kävutajad voidas redaktiruida sidä.
+Alemba om anttud jäl'gmäine aiglehtesen kirjutez:",
'cascadeprotectedwarning' => "'''Homaikat:''' Nece lehtpol' om luklostadud muga, miše vaiše kävutajad administratoriden privilegijoidenke voidas
redaktiruida sidä, sikš miše se oli mülütadud {{PLURAL:$1|neche lehtpol'he, kudamban|nenihe lehtpolihe, kudambiden}}
täht oli sätud kaskadkaičend:",
-'titleprotectedwarning' => "'''Homaikat: Nece lehtpol' om luklostadud, sikš pidab sada [[Special:ListGroupRights|specialižed oiktused]], miše säta se.'''",
-'templatesused' => 'Necil lehtpolel kävutadud šablonad:',
-'templatesusedpreview' => 'Ezikactud lehtpolel kävutadud šablonad:',
-'templatesusedsection' => 'Šablonad, kudambad kävutadas neciš sekcijas:',
+'titleprotectedwarning' => "'''Homaikat: Nece lehtpol' om luklostadud, sikš pidab sada [[Special:ListGroupRights|specialižed oiktused]], miše säta se.'''
+Alemba om anttud jäl'gmäine aiglehtesen kirjutez:",
+'templatesused' => 'Necil lehtpolel kävutadud {{PLURAL:$1|šablon|šablonad}}:',
+'templatesusedpreview' => 'Ezikactud lehtpolel kävutadud {{PLURAL:$1|šablon|šablonad}}:',
+'templatesusedsection' => 'Neciš sekcijas kävutadud {{PLURAL:$1|šablon|šablonad}}:',
'template-protected' => '(kaitud)',
'template-semiprotected' => '(kaitud anonimoišpäi da uziš kävutajišpäi)',
'hiddencategories' => "Nece lehtpol' om {{PLURAL:$1|1 peittud kategorijaspäi|$1 peittud kategorijoišpäi}}:",
@@ -676,12 +714,14 @@ täht oli sätud kaskadkaičend:",
'nocreatetext' => "{{SITENAME}}-saitas uziden lehtpoliden sädand om kaidetud.
Tö voit pörttas tagaze i redaktiruida toine lehtpol', vai [[Special:UserLogin|kirjutagatoiš sistemha, vai säkat registracii]].",
'nocreate-loggedin' => 'Teile ei sa säta uzid lehtpolid.',
+'sectioneditnotsupported-title' => "Jagadusiden redaktiruind ei ole pid'oiteldud.",
+'sectioneditnotsupported-text' => "Necil lehtpolel jagadusiden redaktiruind ei ole pid'oiteldud.",
'permissionserrors' => 'Oiktusiden petused',
'permissionserrorstext' => 'Teile ei sa tehta muga {{PLURAL:$1|necen sün|neniden süiden}} tagut:',
'permissionserrorstext-withaction' => 'Teile ei sa $2 {{PLURAL:$1|necen sün|neciden süiden}} tagut:',
-'deleted-notice' => "Nece lehtpol' om čutud poiš.
-Alemba om anttud lehtpolen čudandan istorii.",
-'deletelog-fulllog' => 'Lugeda kaik aigkirj',
+'moveddeleted-notice' => "Nece lehtpol' om čutud poiš.
+Alemba om anttud lehtpolen čudandan vai sirdandan istorii kut abuandmused.",
+'log-fulllog' => 'Ozutada kaclendnimikirjutez kogonaz',
'edit-hook-aborted' => 'Redakcijan azoti sabustaiprogramm.
Ei ole ližasüid.',
'edit-gone-missing' => "Ei voi udištada lehtpol't.
@@ -713,7 +753,7 @@ Ei voi mülütada erasid šablonoid.',
'currentrev' => 'Nügüdläine versii',
'currentrev-asof' => 'Nügüdläine versii $1',
'revisionasof' => 'Versii $1',
-'revision-info' => 'Tehtud $1 $2-kävutajan versii', # Additionally available: $3: revision id
+'revision-info' => 'Tehtud $1 $2-kävutajan versii',
'previousrevision' => '← Enzne versii',
'nextrevision' => 'Udemb versii →',
'currentrevisionlink' => 'Nügüdläine versii',
@@ -725,7 +765,7 @@ Ei voi mülütada erasid šablonoid.',
'histlegend' => "Valičend: virgakat versijad, miše rindatada niid, i paingat \"Mända\"-kosketimele alahan.<br />
Znamoičendad: '''({{int:cur}})''' = erod nügüdläižes versijaspäi, '''({{int:last}})''' = erod enččes vepsijaspäi, '''{{int:minoreditletter}}''' = pen' toižetuz.",
'history-fieldset-title' => 'Lehtelta istorii',
-'deletedrev' => '[čutud poiš]',
+'history-show-deleted' => 'Vaiše čutud',
'histfirst' => 'Kaikiš vanhembad',
'histlast' => 'Tantoižed',
'historysize' => '({{PLURAL:$1|1 bait|$1 baitad}})',
@@ -734,65 +774,82 @@ Znamoičendad: '''({{int:cur}})''' = erod nügüdläižes versijaspäi, '''({{in
# Revision feed
'history-feed-title' => 'Toižetusiden istorii',
'history-feed-description' => 'Necen lehtpolen toižetusen istorii',
-'history-feed-item-nocomment' => '$1 aigal $2', # user at time
+'history-feed-item-nocomment' => '$1 aigal $2',
'history-feed-empty' => "Ectud lehtpol't ei ole.
Sidä voiži čuta wikispäi vai nimitada udes.
Naprigat [[Special:Search|ectä wikišpäi]] sättujid lehtpolid.",
# Revision deletion
-'rev-deleted-comment' => '(komment om čutud poiš)',
-'rev-deleted-user' => '(avtoran nimi om čutud poiš)',
-'rev-deleted-event' => '(kirjutez om čutud poiš)',
-'rev-deleted-text-permission' => "Nece lehtpolen versii om '''čutud'''.
-Voib olda, süd oma anttud [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
-'rev-deleted-text-view' => "Nece lehtpolen versii om '''čutud'''.
+'rev-deleted-comment' => '(komment om čutud poiš)',
+'rev-deleted-user' => '(avtoran nimi om čutud poiš)',
+'rev-deleted-event' => '(kirjutez om čutud poiš)',
+'rev-deleted-text-permission' => "Nece lehtpolen versii om '''čutud'''.
+Voib olda, süd oma anttud [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
+'rev-deleted-text-view' => "Nece lehtpolen versii om '''čutud'''.
Tö voit lugeda sidä, sikš ku olet saitan administrator.
-Voib olda, süd oma anttud [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
-'rev-deleted-no-diff' => "Tö et voigoi kacta necidä versijoiden erod, sikš miše üks' toižetusišpäi om '''čutud'''.
-Detalid voidas olda [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
-'rev-delundel' => 'ozutada/peitta',
-'revisiondelete' => 'Čuta poiš/endištada lehtpolen versijad',
-'revdelete-nooldid-title' => 'Vär metversii',
-'revdelete-nooldid-text' => 'Tö et olgoi valinuded metversijad (metversijoid) necen funkcijan oigetes.',
-'revdelete-nologtype-title' => 'Tö et olgoi andnuded aigkirjan tipad',
-'revdelete-nologtype-text' => 'Tö et olgoi andnuded aigkirjan tipad, kudambas pidab tehta se tegend.',
-'revdelete-toomanytargets-title' => 'Äjahko metoid',
-'revdelete-toomanytargets-text' => 'Tö olet andnu äjahko metoiden tipoid necen tegendan tehtes.',
-'revdelete-nologid-title' => 'Vär kirjutez aigkirjas',
-'revdelete-nologid-text' => 'Tö et olgoi andnuded aigkirjan metkirjutest tegendan tehtes vai anttud kirjutest ei ole.',
-'revdelete-selected' => "'''{{PLURAL:$2|Valitud versii|Valitud versijad}} lehtpolišpäi [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valitud kirjutez aigkirjas|Valitud kirjutesed aigkirjas}}:'''",
-'revdelete-text' => "'''Čutud versijad ozutadas lehtpolen istorijas da aigkirjoiš, no järgeližed lugijad ei voiškakoi nähta niiden südäimišton erasid paloid.'''
-
-Administratorad voiškatas lugeda peittud südäimištod da endištada sidä necen interfeisan kal't siloi, konz ei ole ližakaidendusid.
-Olgat hüväd, meletagat völ kerdan, todest-ik tahtoit tehta necidä, el'gendat teiden tegendan effekt, et murekoi [[{{MediaWiki:Policy-url}}|saitan politikad]].",
-'revdelete-legend' => 'Säta kaidendused',
-'revdelete-hide-text' => 'Peitta necen lehtpolen versijan tekst',
-'revdelete-hide-name' => 'Peitta tegend da sen objekt',
-'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
-'revdelete-hide-user' => 'Peitta avtoran nimi/IP',
-'revdelete-hide-restricted' => 'Peitta andmusid eskai administratorilpäi-ki',
-'revdelete-suppress' => 'Peitta administratorilpäi-ki sadud andmused',
-'revdelete-hide-image' => 'Peitta failan südäimišt',
-'revdelete-unsuppress' => 'Heitta kaidendused endištadud versijoilpäi',
-'revdelete-log' => 'Sü:',
-'revdelete-submit' => 'Lattä valitud versijaha',
-'revdelete-logentry' => "Om vajehtanu sen, kut nägub lehtpol' [[$1]]",
-'logdelete-logentry' => 'Om toižetanu sen, kut nägub tego [[$1]]',
-'revdelete-success' => "'''Versijan nägulad om toižetadud tugedusita.'''",
-'logdelete-success' => "'''Aigkirjutesen nägulad om toižetadud.'''",
-'revdel-restore' => 'Toižetada nägubuz',
-'pagehist' => 'Lehtpolen istorii',
-'deletedhist' => 'Čudandoiden istorii',
-'revdelete-content' => 'südäimišt',
-'revdelete-summary' => 'kaik toižetused',
-'revdelete-uname' => 'kävutajan nimi',
-'revdelete-restricted' => 'kaidendused administratoriden täht',
-'revdelete-unrestricted' => 'kaidendused heittud administratoriden täht',
-'revdelete-hid' => 'peittud $1',
-'revdelete-unhid' => 'avaitud $1',
-'revdelete-log-message' => '$1 $2 {{PLURAL:$2|versijan|versijoiden}} täht',
-'logdelete-log-message' => '$1 $2 {{PLURAL:$2|tegendan|tegendoiden}} täht',
+Voib olda, süd oma anttud [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
+'rev-deleted-no-diff' => "Tö et voigoi nähta necidä versijoiden erod, sikš miše üks' toižetusišpäi om '''čutud'''.
+Detalid voidas olda [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} čudandoiden aigkirjas].",
+'rev-delundel' => 'ozutada/peitta',
+'rev-showdeleted' => 'ozutada',
+'revisiondelete' => 'Čuta poiš/endištada lehtpolen versijad',
+'revdelete-nooldid-title' => 'Vär metversii',
+'revdelete-nooldid-text' => 'Tö et olgoi valinuded metversijad (metversijoid) necen funkcijan oigetes.',
+'revdelete-nologtype-title' => 'Tö et olgoi andnuded aigkirjan tipad',
+'revdelete-nologtype-text' => 'Tö et olgoi andnuded aigkirjan tipad, kudambas pidab tehta se tegend.',
+'revdelete-nologid-title' => 'Vär kirjutez aigkirjas',
+'revdelete-nologid-text' => 'Tö et olgoi andnuded aigkirjan metkirjutest tegendan tehtes vai anttud kirjutest ei ole.',
+'revdelete-no-file' => 'Mugošt failad ei ole.',
+'revdelete-show-file-submit' => 'Ka',
+'revdelete-selected' => "'''{{PLURAL:$2|Valitud versii|Valitud versijad}} lehtpolišpäi [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Valitud kirjutez aigkirjas|Valitud kirjutesed aigkirjas}}:'''",
+'revdelete-text' => "'''Čutud versijad ozutadas lehtpolen istorijas da aigkirjoiš, no järgeližed lugijad ei voiškakoi nähta niiden südäimišton erasid paloid.'''
+Administratorad voiškatas lugeda peittud südäimištod da endištada sidä necen interfeisan kal't siloi, konz ei ole ližakaidendusid.",
+'revdelete-legend' => 'Säta kaidendused',
+'revdelete-hide-text' => 'Peitta necen lehtpolen versijan tekst',
+'revdelete-hide-image' => 'Peitta failan südäimišt',
+'revdelete-hide-name' => 'Peitta tegend da sen objekt',
+'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
+'revdelete-hide-user' => 'Peitta avtoran nimi/IP',
+'revdelete-hide-restricted' => 'Peitta andmusid eskai administratorilpäi-ki',
+'revdelete-radio-same' => '(ala toižeta)',
+'revdelete-radio-set' => 'Ka',
+'revdelete-radio-unset' => 'Ei',
+'revdelete-suppress' => 'Peitta administratorilpäi-ki sadud andmused',
+'revdelete-unsuppress' => 'Heitta kaidendused endištadud versijoilpäi',
+'revdelete-log' => 'Sü:',
+'revdelete-submit' => 'Lattä valitud {{PLURAL:$1|versijaha|versioihe}}',
+'revdelete-logentry' => "Om vajehtanu sen, kut nägub lehtpol' [[$1]]",
+'logdelete-logentry' => 'Om toižetanu sen, kut nägub tego [[$1]]',
+'revdelete-success' => "'''Versijan nägulad om toižetadud tugedusita.'''",
+'revdelete-failure' => "'''Ei voi toižetada versijan läguladud:'''
+$1",
+'logdelete-success' => "'''Aigkirjutesen nägulad om toižetadud.'''",
+'logdelete-failure' => "'''Ei voi toižetada aigkirjutesen näguladud:'''
+$1",
+'revdel-restore' => 'Toižetada nägubuz',
+'pagehist' => 'Lehtpolen istorii',
+'deletedhist' => 'Čudandoiden istorii',
+'revdelete-content' => 'südäimišt',
+'revdelete-summary' => 'kaik toižetused',
+'revdelete-uname' => 'kävutajan nimi',
+'revdelete-restricted' => 'kaidendused administratoriden täht',
+'revdelete-unrestricted' => 'kaidendused heittud administratoriden täht',
+'revdelete-hid' => 'peittud $1',
+'revdelete-unhid' => 'avaitud $1',
+'revdelete-log-message' => '$1 $2 {{PLURAL:$2|versijan|versijoiden}} täht',
+'logdelete-log-message' => '$1 $2 {{PLURAL:$2|tegendan|tegendoiden}} täht',
+'revdelete-hide-current' => '$2, $1-kirjutesen peitmižen petuz: nece versii om nügüdläine.
+Sidä ei sa peitta.',
+'revdelete-show-no-access' => '$2, $1-kirjutesen ozutamižen petuz: nece kirjutez om znamoitud "kaidetud".
+Tö ei voigoi kävutada sidä.',
+'revdelete-modify-no-access' => '$2, $1-kirjutesen toižetamižen petuz: nece kirjutez om znamoitud "kaidetud".
+Tö ei voigoi kävutada sidä.',
+'revdelete-modify-missing' => 'ID $1-kirjutesen kirjutamižen petuz: sidä ei ole andmusiden bazas!',
+'revdelete-otherreason' => 'Toine sü/ližasü',
+'revdelete-reasonotherlist' => 'Toine sü:',
+'revdelete-edit-reasonlist' => 'Redaktiruida čudandan süd',
+'revdelete-offender' => 'Lehtpolen versijan avtor:',
# Suppression log
'suppressionlog' => 'Peitandoiden aigkirj',
@@ -824,68 +881,13 @@ Olgat hüväd, meletagat völ kerdan, todest-ik tahtoit tehta necidä, el'gendat
'mergelogpagetext' => 'Naku om tantoižiden lehtpoliden nimiden ühtenzoitusiden nimikirjutez.',
# Diffs
-'history-title' => '"$1"-lehtpolen toižetusiden istorii',
-'difference' => '(Erod versijoiden keskes)',
-'lineno' => 'Rivi $1:',
-'compareselectedversions' => 'Rindatada valitud versijad',
-'visualcomparison' => 'Vizualine rindatand',
-'wikicodecomparison' => 'Wikitekstan rindatand',
-'editundo' => 'heitta pätand',
-'diff-multi' => "({{PLURAL:$1|üks' keskmäine versii ei ole|$1 keskmäšt versijad ei olgoi}} ozutadud)",
-'diff-movedto' => 'sirtud tänna: $1',
-'diff-styleadded' => "stil' $1 om ližatud",
-'diff-added' => '$1 om ližatud',
-'diff-changedto' => 'toižetadud muga: $1',
-'diff-movedoutof' => 'om heittud täspäi: $1',
-'diff-styleremoved' => "stil' $1 om čutud",
-'diff-removed' => '$1 om čutud',
-'diff-changedfrom' => 'toižetadud necišpäi: $1',
-'diff-src' => 'purde',
-'diff-withdestination' => 'met: $1',
-'diff-with' => '&#32;kus $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;da $1 $2',
-'diff-width' => 'leveduz’',
-'diff-height' => 'korktuz’',
-'diff-p' => "'''abzac'''",
-'diff-blockquote' => "'''citat'''",
-'diff-h1' => "'''pälkirjutez (tazopind 1)'''",
-'diff-h2' => "'''pälkirjutez (tazopind 2)'''",
-'diff-h3' => "'''pälkirjutez (tazopind 3)'''",
-'diff-h4' => "'''pälkirjutez (tazopind 4)'''",
-'diff-h5' => "'''pälkirjutez (tazopind 5)'''",
-'diff-pre' => "'''tekstanpala anttud formatanke'''",
-'diff-div' => "'''jaguz'''",
-'diff-ul' => "'''järgendamatoi nimikirjutez'''",
-'diff-ol' => "'''järgetud nimikirjutez'''",
-'diff-li' => "'''nimikirjutesen element'''",
-'diff-table' => "'''tablut'''",
-'diff-tbody' => "'''tabluden südäimišt'''",
-'diff-tr' => "'''rivi'''",
-'diff-td' => "'''sil'm'''",
-'diff-th' => "'''pälkirjutez'''",
-'diff-br' => "'''rebitez'''",
-'diff-hr' => "'''gorizontaline pird'''",
-'diff-code' => "'''kompjuteran kodan blok'''",
-'diff-dl' => "'''definicijoiden nimikirjutez'''",
-'diff-dt' => "'''märhapandud termin'''",
-'diff-dd' => "'''märhapanend'''",
-'diff-input' => "'''panmine'''",
-'diff-form' => "'''form'''",
-'diff-img' => "'''kuva'''",
-'diff-span' => "'''span'''",
-'diff-a' => "'''kosketuz'''",
-'diff-i' => "'''kursiv'''",
-'diff-b' => "'''lihavoitud'''",
-'diff-strong' => "'''vahvištadud'''",
-'diff-em' => "'''\"akcentšrift\"'''",
-'diff-font' => "'''šrift'''",
-'diff-big' => "'''sur' šrift'''",
-'diff-del' => "'''čutud'''",
-'diff-tt' => "'''fiksiruidud levedusen mödhe šrift'''",
-'diff-sub' => "'''alarivine'''",
-'diff-sup' => "'''ülärivine'''",
-'diff-strike' => "'''läbijonoštadud'''",
+'history-title' => '"$1"-lehtpolen toižetusiden istorii',
+'difference' => '(Erod versijoiden keskes)',
+'lineno' => 'Rivi $1:',
+'compareselectedversions' => 'Rindatada valitud versijad',
+'showhideselectedversions' => 'Ozutada/peitta valitud versijad',
+'editundo' => 'heitta pätand',
+'diff-multi' => "({{PLURAL:$1|üks' keskmäine versii ei ole|$1 keskmäšt versijad ei olgoi}} ozutadud)",
# Search results
'searchresults' => "Ectä rezul'tatad",
@@ -894,29 +896,25 @@ Olgat hüväd, meletagat völ kerdan, todest-ik tahtoit tehta necidä, el'gendat
'searchsubtitle' => 'Tö ecit \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kaik lehtpoled, kudambad augotase nimespäi "$1"]]{{int:pipe-separator}}
[[Special:WhatLinksHere/$1|Kaik lehtpoled, kudambad kosketadas necidä nimed]])',
'searchsubtitleinvalid' => "Tö ecit '''$1'''",
-'noexactmatch' => "'''Ei ole \"\$1\"-nimitadud lehtpolid.'''
-Tö voit [[:\$1|säta mugoi lehtpol']].",
-'noexactmatch-nocreate' => "'''E ole \"\$1\"-nimitadud lehtpolid.'''",
'toomanymatches' => "Om löutud äjahko rezul'tatoid, olgat hüväd, eckat toine sana",
'titlematches' => 'Löutud lehtpoliden nimed',
'notitlematches' => 'Ei ole ningomid lehtpoliden nimid',
'textmatches' => 'Löutud tekstanpalad lehtpolil',
'notextmatches' => 'Lehtpoliden tekstoiš ei ole ectud sanad',
-'prevn' => 'edeline $1',
-'nextn' => "jäl'ghižed $1",
+'prevn' => 'vene (ru){{PLURAL:$1|edeline $1|edeližed $1}}',
+'nextn' => "jäl'ghižed {{PLURAL:$1|$1}}",
'prevn-title' => "$1 {{PLURAL:$1|edeline rezul'tat|edelišt rezul'tatad}}",
'nextn-title' => "$1 {{PLURAL:$1|jäl'ghine rezul'tat|jäl'ghišt rezul'tatad}}",
'shown-title' => "Ozutada $1 {{PLURAL:$1|rezul'tat|rezul'tatad}} lehtpoleks",
-'viewprevnext' => 'Kacta ($1) ($2) ($3)',
+'viewprevnext' => 'Kacta ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Ecindan järgendused',
'searchmenu-exists' => "'''Neciš Wikiš om jo lehtpol' ningoižen nimenke: \"[[:\$1]]\"'''",
'searchmenu-new' => "'''Säta lehtpol' \"[[:\$1]]\" neciš Wikiš!'''",
'searchhelp-url' => 'Help:Südäimišt',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ozutada kaik lehtpoled necen prefiksanke]]',
'searchprofile-articles' => 'Südäimištlehtpoled',
-'searchprofile-articles-and-proj' => 'Südäimištlehtpoled da projektan lehtpoled',
-'searchprofile-project' => 'Projektan lehtpoled',
-'searchprofile-images' => 'Failad',
+'searchprofile-project' => 'Abun da projektoiden lehtpoled',
+'searchprofile-images' => "Mul'timedii",
'searchprofile-everything' => 'Kaikjal',
'searchprofile-advanced' => 'Levitoittud',
'searchprofile-articles-tooltip' => 'Ectä täs: $1',
@@ -924,8 +922,6 @@ Tö voit [[:\$1|säta mugoi lehtpol']].",
'searchprofile-images-tooltip' => 'Failoiden ecind',
'searchprofile-everything-tooltip' => 'Ectä kaikil lehtpolil (lodulehtpolid mülütaden)',
'searchprofile-advanced-tooltip' => 'Ectä märitud nimiavarusiš',
-'prefs-search-nsdefault' => 'Ectä augotižjärgendusid kävutaden:',
-'prefs-search-nscustom' => 'Ectä märitadud nimiavarusiš:',
'search-result-size' => '$1 ({{PLURAL:$2|1 sana|$2 sanad}})',
'search-result-score' => 'Relevantižuz: $1%',
'search-redirect' => '(oigenduz $1)',
@@ -938,11 +934,11 @@ Tö voit [[:\$1|säta mugoi lehtpol']].",
'search-mwsuggest-disabled' => 'taričendoita',
'search-relatedarticle' => 'Sidotud lehtpoled',
'mwsuggest-disable' => 'Ala ozuta AJAX-taričendoid',
+'searcheverything-enable' => 'Ectä kaikiš nimiavarusiš',
'searchrelated' => 'sidotud',
'searchall' => 'kaik',
'showingresults' => "Alemba ozutadas {{PLURAL:$1|'''1''' rezul'tat|'''$1''' rezul'tatad}} nomeraspäi #'''$2''' augotaden.",
'showingresultsnum' => "Alemba ozutadas {{PLURAL:$3|'''1''' rezul'tat|'''$3''' rezul'tatad}} nomeraspäi '''$2''' augotaden.",
-'showingresultstotal' => "Alemba ozutadas {{PLURAL:$4|rezul'tat '''$1'''|rezul'tatad '''$1 - $2'''}} ühthižes luguspäi '''$3'''.",
'nonefound' => "'''Note''': Ectäs tobjimalaz kaidetud nimiavaruzišpäi.
Kävutagat prefiks ''all:'', miše ectä kaikes südäimištospäi (lodulehtpolid, šablonoid i m. e. mülütaden), vai kävutagat tarbhaine nimiavaruz.",
'search-nonefound' => "Ecmižhe ei löudnus rezul'tatoid.",
@@ -951,95 +947,126 @@ Kävutagat prefiks ''all:'', miše ectä kaikes südäimištospäi (lodulehtpoli
'powersearch-ns' => 'Ecind nimiavaruziš:',
'powersearch-redir' => 'Ozutada oigendused',
'powersearch-field' => 'Eci',
+'powersearch-togglelabel' => 'Kodvda:',
+'powersearch-toggleall' => 'Kaik',
+'powersearch-togglenone' => 'Ei ole nimidä',
'search-external' => 'Irdecind',
'searchdisabled' => "{{SITENAME}} ecind om saubatud.
Tö voit nügüd' ectä Google'n turbiš.
Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda vanhtunuden.",
+# Quickbar
+'qbsettings' => "Navigacijan panel'",
+'qbsettings-none' => 'Ala ozuta',
+'qbsettings-fixedleft' => 'Likumatoi huralpäi',
+'qbsettings-fixedright' => 'Likumatoi oiktalpäi',
+'qbsettings-floatingleft' => 'Ujui huralpäi',
+'qbsettings-floatingright' => 'Ujui oiktalpäi',
+
# Preferences page
-'preferences' => 'Järgendused',
-'mypreferences' => 'Minun järgendused',
-'prefs-edits' => 'Redaktiruindoiden lugu:',
-'prefsnologin' => 'Tö et olgoi kirjutanus sistemha.',
-'prefsnologintext' => 'Teile pidab <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} kirjutadas sistemha]</span>, miše toižetada järgendusid.',
-'prefsreset' => 'Augoižjärgendused oma endištadud.',
-'qbsettings' => "Navigacijan panel'",
-'qbsettings-none' => 'Ala ozuta',
-'qbsettings-fixedleft' => 'Likumatoi huralpäi',
-'qbsettings-fixedright' => 'Likumatoi oiktalpäi',
-'qbsettings-floatingleft' => 'Ujui huralpäi',
-'qbsettings-floatingright' => 'Ujui oiktalpäi',
-'changepassword' => 'Peitsanan toižetuz',
-'skin' => 'Irdnägu',
-'skin-preview' => 'Ezikaclend',
-'math' => 'Matematik',
-'dateformat' => 'Datan format',
-'datedefault' => 'Augotižjärgendused',
-'datetime' => 'Dat da aig',
-'math_failure' => 'Ei voi palastada',
-'math_unknown_error' => 'tundmatoi petuz',
-'math_unknown_function' => 'tundmatoi funkcii',
-'math_lexing_error' => 'leksine petuz',
-'math_syntax_error' => 'sintaksine petuz',
-'math_image_error' => 'PNG-ks kändmižes ozaižihe petuz;
-kodvgat, oiged-ik oma järgetud: latex, dvips, gs da convert.',
-'math_bad_tmpdir' => 'Ei voi säta pordaigaline matematine katalog vai ei voi kirjutada sinnä',
-'math_bad_output' => 'Ei voi säta matematine lähtmižkatalog vai ei voi kirjutada sinnä',
-'math_notexvc' => 'En voi löuta texvc-töfailad;
-kc. math/README järgendamižen täht.',
-'prefs-personal' => "Kävutajan profil'",
-'prefs-rc' => 'Tantoižed toižetused',
-'prefs-watchlist' => 'Kaclendnimikirjutez',
-'prefs-watchlist-days' => 'Maksimaline päividen lugu kaclendnimikirjuteses:',
-'prefs-watchlist-days-max' => '(ei enamba 7 päiväd)',
-'prefs-watchlist-edits' => 'Maksimaline toižetusiden lugu levitoittud kaclendnimikirjuteses:',
-'prefs-watchlist-edits-max' => '(maksimaline lugu: 1000)',
-'prefs-misc' => 'Toine',
-'prefs-resetpass' => 'Toižetada peitsana',
-'saveprefs' => 'Kirjutada',
-'resetprefs' => 'Čuta kaičematomad toižetused',
-'restoreprefs' => 'Endištada kaik augotižjärgendused',
-'textboxsize' => 'Redaktiruind',
-'prefs-edit-boxsize' => 'Redaktiruindan iknan suruz.',
-'rows' => 'Rivid:',
-'columns' => 'Pachid:',
-'searchresultshead' => 'Ecind',
-'resultsperpage' => 'Kirjutesiden lugu lehtpolel:',
-'contextlines' => 'Ozutadud rividen lugu kaikuččen löutud kirjutesen täht:',
-'contextchars' => 'Kontekstznamoiden lugu rives:',
-'stub-threshold' => 'Nägutesen märitamižen künduz <a href="#" class="stub">kosketust otetile</a> (baitoiš)',
-'recentchangesdays' => 'Päiväd veresiden toižetusidenke, lugumär:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|päiv|päiväd}})',
-'savedprefs' => 'Teiden järgendused oma kirjutadud muštho.',
-'timezonelegend' => 'Aigvö:',
-'localtime' => 'Tahonaig:',
-'timezoneselect' => 'Aigvö:',
-'timezoneuseserverdefault' => 'Kävutada serveran järgendused',
-'timezoneuseoffset' => 'Toine (kirjutagat sirdandmär)',
-'timezoneoffset' => 'Aigan sirdandmär¹:',
-'servertime' => 'Serveran aig:',
-'guesstimezone' => 'Täutta kaclimespäi',
-'timezoneregion-africa' => 'Afrik',
-'timezoneregion-america' => 'Amerik',
-'timezoneregion-antarctica' => 'Antarktik',
-'timezoneregion-arctic' => 'Arktik',
-'timezoneregion-asia' => 'Azii',
-'timezoneregion-atlantic' => 'Atlantine valdmeri',
-'timezoneregion-australia' => 'Avstralii',
-'timezoneregion-europe' => 'Evrop',
-'timezoneregion-indian' => 'Indijan valdmeri',
-'timezoneregion-pacific' => "Tün' valdmeri",
-'allowemail' => 'Laskkat toižile kävutajile oigeta teile e-počtad',
-'prefs-searchoptions' => 'Ecindan järgendused',
-'prefs-namespaces' => 'Nimiavarused',
-'defaultns' => 'Augotižjärgendusen mödhe ectä neniš nimiavarusiš:',
-'default' => 'augotižjärgendusen mödhe',
-'files' => 'Failad',
-'prefs-custom-css' => 'Ičeze CSS',
-'prefs-custom-js' => 'Ičeze JS',
+'preferences' => 'Järgendused',
+'mypreferences' => 'Minun järgendused',
+'prefs-edits' => 'Redaktiruindoiden lugu:',
+'prefsnologin' => 'Tö et olgoi kirjutanus sistemha.',
+'prefsnologintext' => 'Teile pidab <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjutadas sistemha]</span>, miše toižetada järgendusid.',
+'changepassword' => 'Peitsanan toižetuz',
+'prefs-skin' => 'Irdnägu',
+'skin-preview' => 'Ezikaclend',
+'prefs-math' => 'Matematik',
+'datedefault' => 'Augotižjärgendused',
+'prefs-datetime' => 'Dat da aig',
+'prefs-personal' => "Kävutajan profil'",
+'prefs-rc' => 'Tantoižed toižetused',
+'prefs-watchlist' => 'Kaclendnimikirjutez',
+'prefs-watchlist-days' => 'Maksimaline päividen lugu kaclendnimikirjuteses:',
+'prefs-watchlist-days-max' => '(ei enamba 7 päiväd)',
+'prefs-watchlist-edits' => 'Maksimaline toižetusiden lugu levitoittud kaclendnimikirjuteses:',
+'prefs-watchlist-edits-max' => '(maksimaline lugu: 1000)',
+'prefs-watchlist-token' => 'Kaclendan nimikirjutesen token:',
+'prefs-misc' => 'Toine',
+'prefs-resetpass' => 'Toižetada peitsana',
+'prefs-email' => 'E-počtan opcijad',
+'prefs-rendering' => 'Nägu',
+'saveprefs' => 'Kirjutada',
+'resetprefs' => 'Čuta kaičematomad toižetused',
+'restoreprefs' => 'Endištada kaik augotižjärgendused',
+'prefs-editing' => 'Redaktiruind',
+'prefs-edit-boxsize' => 'Redaktiruindan iknan suruz.',
+'rows' => 'Rivid:',
+'columns' => 'Pachid:',
+'searchresultshead' => 'Ecind',
+'resultsperpage' => 'Kirjutesiden lugu lehtpolel:',
+'contextlines' => 'Ozutadud rividen lugu kaikuččen löutud kirjutesen täht:',
+'contextchars' => 'Kontekstznamoiden lugu rives:',
+'stub-threshold' => 'Nägutesen märitamižen künduz <a href="#" class="stub">kosketust otetile</a> (baitoiš)',
+'recentchangesdays' => 'Päiväd veresiden toižetusidenke, lugumär:',
+'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|päiv|päiväd}})',
+'recentchangescount' => 'Redakcijoiden lugu, kudamb pidab ozutada augotižjärgendusen mödhe:',
+'savedprefs' => 'Teiden järgendused oma kirjutadud muštho.',
+'timezonelegend' => 'Aigvö:',
+'localtime' => 'Tahonaig:',
+'timezoneuseserverdefault' => 'Kävutada serveran järgendused',
+'timezoneuseoffset' => 'Toine (kirjutagat sirdandmär)',
+'timezoneoffset' => 'Aigan sirdandmär¹:',
+'servertime' => 'Serveran aig:',
+'guesstimezone' => 'Täutta kaclimespäi',
+'timezoneregion-africa' => 'Afrik',
+'timezoneregion-america' => 'Amerik',
+'timezoneregion-antarctica' => 'Antarktik',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Azii',
+'timezoneregion-atlantic' => 'Atlantine valdmeri',
+'timezoneregion-australia' => 'Avstralii',
+'timezoneregion-europe' => 'Evrop',
+'timezoneregion-indian' => 'Indijan valdmeri',
+'timezoneregion-pacific' => "Tün' valdmeri",
+'allowemail' => 'Laskkat toižile kävutajile oigeta teile e-počtad',
+'prefs-searchoptions' => 'Ecindan järgendused',
+'prefs-namespaces' => 'Nimiavarused',
+'defaultns' => 'Toižiš statjoiš ectä neniš nimiavarusiš:',
+'default' => 'augotižjärgendusen mödhe',
+'prefs-files' => 'Failad',
+'prefs-custom-css' => 'Ičeze CSS',
+'prefs-custom-js' => 'Ičeze JS',
+'prefs-emailconfirm-label' => 'E-počtan vahvištand:',
+'prefs-textboxsize' => 'Redaktiruindan iknan suruz',
+'youremail' => 'E-počt:',
+'username' => 'Kävutajan nimi:',
+'uid' => 'Kävutajan nomer:',
+'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} ühtnii:',
+'prefs-registration' => 'Registracijan aig:',
+'yourrealname' => 'Todesine nimi:',
+'yourlanguage' => "Kel':",
+'yourvariant' => 'Kelenvariant:',
+'yournick' => 'Allekirjutez:',
+'badsig' => 'Vär allekirjutez.
+Kodvgat HTML-virgad.',
+'badsiglength' => "Pit'kähk allekirjutez.
+Pidab tehta se $1 {{PLURAL:$1|simvolaspäi|simvoloišpäi}}.",
+'yourgender' => 'Sugu:',
+'gender-unknown' => 'Ei ole ozutadud',
+'gender-male' => 'Mez’',
+'gender-female' => 'Naine',
+'prefs-help-gender' => 'Opcionaline: kävutadas likutimen erasiš tedotusiš, miše ozutada kävutajan sugu oikti. Nece informacii om avoin.',
+'email' => 'E-počt',
+'prefs-help-realname' => 'Todesine nimi om opcionaline.
+Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.',
+'prefs-help-email-required' => 'Pidab kirjutada teiden e-počtan adres.',
+'prefs-info' => 'Päinformacii',
+'prefs-i18n' => 'Internacionalizacii',
+'prefs-signature' => 'Allekirjutez',
+'prefs-dateformat' => 'Datan format',
+'prefs-timeoffset' => 'Aigan sirdand',
+'prefs-advancedediting' => 'Ližaopcijad',
+'prefs-advancedrc' => 'Ližaopcijad',
+'prefs-advancedrendering' => 'Ližaopcijad',
+'prefs-advancedsearchoptions' => 'Ližaopcijad',
+'prefs-advancedwatchlist' => 'Ližaopcijad',
+'prefs-display' => 'Nägun opcijad',
+'prefs-diffs' => 'Erod',
# User rights
-'userrights' => 'Kävutajiden oiktusiden ohjandamine', # Not used as normal message but as header for the special page itself
+'userrights' => 'Kävutajiden oiktusiden ohjandamine',
'userrights-lookup-user' => 'Kävutajiden gruppiden ohjendamine',
'userrights-user-editname' => 'Kävutajan nimi:',
'editusergroup' => 'Redaktiruida kävutajiden gruppad',
@@ -1118,6 +1145,8 @@ kc. math/README järgendamižen täht.',
'right-editprotected' => 'Redaktiruida kaitud lehtpoled (kaskadkaičemata)',
'right-editinterface' => 'Redaktiruida kävutajan intefeis',
'right-editusercssjs' => 'Redaktiruida toižiden kävutajiden CSS- da JS-failad',
+'right-editusercss' => 'Redaktiruida toižiden kävutajiden CSS-failad',
+'right-edituserjs' => 'Redaktiruida toižiden kävutajiden JS-failad',
'right-noratelimit' => 'Ei ole kaidendust piguden mödhe',
'right-import' => 'Importiruida lehtpolid toižiš wikišpäi',
'right-importupload' => 'Importiruida lehtpolid failoid jügutoitten',
@@ -1131,6 +1160,7 @@ kc. math/README järgendamižen täht.',
'right-userrights-interwiki' => 'Toižetada toižiden wiki-saitoiden kävutajiden oiktused',
'right-siteadmin' => 'Luklostada da avaita andmusiden baz',
'right-reset-passwords' => 'Heitta toižiden kävutajiden peitsanad',
+'right-sendemail' => 'Oigeta e-počtad toižile kävutajile',
# User rights log
'rightslog' => 'Kävutajan oiktusiden aigkirj',
@@ -1179,7 +1209,17 @@ kc. math/README järgendamižen täht.',
'recentchanges-legend' => 'Tantoižiden toižetusiden järgendused',
'recentchangestext' => 'Necil lehtpolil om tantoižid toižetusid {{SITENAME}}-saital.',
'recentchanges-feed-description' => "Kacelta jäl'gmäižid toižetusid wikiš neciš valus.",
+'recentchanges-label-legend' => 'Legend: $1.',
+'recentchanges-legend-newpage' => "$1 - uz' lehtpol'",
+'recentchanges-label-newpage' => 'Nece redakcii sädi uden lehtpolen',
+'recentchanges-legend-minor' => '$1 - penikaine redakcii',
+'recentchanges-label-minor' => 'Nece redakcii om penikaine',
+'recentchanges-legend-bot' => '$1 - botan redakcii',
+'recentchanges-label-bot' => 'Necen redakcijan tegi bot',
+'recentchanges-legend-unpatrolled' => '$1 - patruliruimatoi redakcii',
+'recentchanges-label-unpatrolled' => 'Necidä redakcijad ei völ patruliruinugoi',
'rcnote' => "Alahan om ozutadud {{PLURAL:$1| '''1''' toižetuz|'''$1''' toižetust}} {{PLURAL:$2|jäl'gmäižes päiväs|jäl'gmäižiš '''$2''' päiviš}}, aigal $5, $4.",
+'rcnotefrom' => "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
'rclistfrom' => 'Ozutada uded toižetused dataspäi $1 augotaden',
'rcshowhideminor' => '$1 pened redakcijad',
'rcshowhidebots' => '$1 botad',
@@ -1195,7 +1235,6 @@ kc. math/README järgendamižen täht.',
'minoreditletter' => 'p',
'newpageletter' => 'U',
'boteditletter' => 'b',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|kaclii kävutai|kaclijad kävutajad}}]',
'rc_categories' => 'Vaiše kategorijoišpäi (erigoitkat znamaižel "|")',
'rc_categories_any' => 'Eraz',
@@ -1206,6 +1245,8 @@ kc. math/README järgendamižen täht.',
# Recent changes linked
'recentchangeslinked' => 'Sidotud toižetused',
+'recentchangeslinked-feed' => 'Sidotud toižetused',
+'recentchangeslinked-toolbox' => 'Sidotud toižetused',
'recentchangeslinked-title' => '"$1"-lehtpol\'he sidotud toižetused',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Sidotud lehtpolil ei olend toižetusid anttud pordon aigan.',
@@ -1217,7 +1258,6 @@ kc. math/README järgendamižen täht.',
# Upload
'upload' => 'Jügutoitta fail',
'uploadbtn' => 'Jügutoitta fail',
-'reupload' => 'Jügetoitta udes',
'reuploaddesc' => 'Pörttas jügetoitandan formannoks',
'uploadnologin' => 'Tö ei olgoi kirjutanus sistemha',
'uploadnologintext' => 'Teile pidab [[Special:UserLogin|kirjutadas sistemha]], miše failoid jügetoitmaha.',
@@ -1252,7 +1292,6 @@ Lasktud {{PLURAL:\$3|failan tip om|failoiden tipad oma}} \$2.",
'emptyfile' => "Teil jügutoittud fail nägub pal'haks.
Voib olda, necen sü om vär failannimen kirjutamine.
Olgat hüväd, kodvgat, todeks-ik tö tahtoit jügutoitta nece fail.",
-'fileexists-thumb' => "<center>'''Olii fail'''</center>",
'file-exists-duplicate' => 'Nece fail om {{PLURAL:$1|necen failan|neniden failoiden}} dublikat:',
'successfulupload' => 'Jügutoitand lopihe satusekahas',
'uploadwarning' => 'Varutuz jügutoitmižes',
@@ -1264,18 +1303,38 @@ Olgat hüväd, kodvgat, todeks-ik tö tahtoit jügutoitta nece fail.",
'php-uploaddisabledtext' => 'Failoiden jügutoitand om kel\'tud PHP:n järgendusiš. Kodvgat "file_uploads"-järgenduz.',
'uploadscripted' => 'Neciš failas om HTML-kod vai skript, kudamban kaclim voiži interpretiruida värin.',
'uploadvirus' => 'Failas om virus! Kc: $1',
+'upload-source' => 'Lähtmižfail',
'sourcefilename' => 'Failan purdenimi:',
+'sourceurl' => 'URLan purde:',
'destfilename' => 'Failan metnimi:',
'upload-maxfilesize' => 'Failan maksimaline suruz: $1',
+'upload-description' => 'failan ümbrikirjutand',
'watchthisupload' => 'Kacelta necidä failad',
-'upload-proto-error' => 'Vär protokol',
-'upload-proto-error-text' => 'Miše jügutoitta edahanpäi, kävutagat URL, kudamb augotase <code>http://</code> vai <code>ftp://</code>.',
-'upload-file-error' => 'Südäipetuz',
-'upload-misc-error' => 'Jügutoitandan tundmatoi petuz',
-'upload-misc-error-text' => "Tundmatoi petuz om ozainus jügutoitandan aigan.
+'upload-proto-error' => 'Vär protokol',
+'upload-proto-error-text' => 'Miše jügutoitta edahanpäi, kävutagat URL, kudamb augotase <code>http://</code> vai <code>ftp://</code>.',
+'upload-file-error' => 'Südäipetuz',
+'upload-misc-error' => 'Jügutoitandan tundmatoi petuz',
+'upload-misc-error-text' => "Tundmatoi petuz om ozainus jügutoitandan aigan.
Olgat hüväd, kodvgat, om-ik URL oiged i voib-ik säta sido sen purtkenke, sid' toštkat jügutoituz.
Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemadministratoranke]].",
+'upload-too-many-redirects' => 'Neciš URL-as om äjahk läbikosketusid',
+'upload-unknown-size' => 'Tundmatoi suruz',
+'upload-http-error' => 'HTTP-petuz: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => "Pästand tänna om kel'tud",
+'img-auth-badtitle' => 'Ei voi tehta oiktad pälkirjutest "$1"-späi.',
+'img-auth-nofile' => 'Ei ole mugošt failad: "$1".',
+'img-auth-streaming' => '"$1"-joksmuz.',
+'img-auth-noread' => 'Kävutajal ei ole oiktusid lugeda "$1"-failad.',
+
+# HTTP errors
+'http-invalid-url' => 'Vär URL: $1',
+'http-invalid-scheme' => 'URLad "$1"-shemanke ei pid\'oitelgoi.',
+'http-read-error' => "HTTP'd lugemižen petuz.",
+'http-curl-error' => "Petuz URL'ad ecmäs: $1",
+'http-host-unreachable' => 'Ei voi säta sidod URL:anke',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Ei voi säta sidod URL:anke',
@@ -1284,6 +1343,7 @@ Olgat hüväd, kodvgat, om-ik adres oiged i voib-ik säta sido saitanke.',
'upload-curl-error28' => 'Jügutoitandan aig om männu',
'license' => 'Licenzii:',
+'license-header' => 'Licenzii',
'nolicense' => 'Ei ole licenzijoid',
'license-nopreview' => '(Ei voi ezikacta)',
'upload_source_url' => '(oiged verkadres)',
@@ -1304,6 +1364,7 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
'listfiles_count' => 'Versijad',
# File description page
+'file-anchor-link' => 'Fail',
'filehist' => 'Failan istorii',
'filehist-help' => 'Paingat datale/aigale, miše nägištada, mitte oli olnu fail siloi (möhembita toižetusita).',
'filehist-deleteall' => 'Čuta poiš kaik',
@@ -1318,21 +1379,19 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
'filehist-dimensions' => 'Objektan suruz',
'filehist-filesize' => 'Failan suruz',
'filehist-comment' => 'Homaičend',
+'filehist-missing' => 'Ei ole failad',
'imagelinks' => 'Kosketused failale',
'linkstoimage' => "{{PLURAL:$1|Nece lehtpol' kosketab|$1 Nened lehtpoled kosketadas}} necidä failad:",
'nolinkstoimage' => 'Ei ole necidä failad kosketajid lehtpolid.',
'morelinkstoimage' => 'Ozutada [[Special:WhatLinksHere/$1|toižid kosketusid]] necile failale.',
'redirectstofile' => '{{PLURAL:$1|Nece fail läbikosketab|$1 Nened failad läbikosketadas}} necile failale:',
'duplicatesoffile' => '{{PLURAL:$1|Nece fail om|$1 Nened failad oma}} ([[Special:FileDuplicateSearch/$2|ližainformacii]])-failan {{PLURAL:$1|dublikat|$1 dublikatad}}:',
-'sharedupload' => 'Nece fail om ühthižes $1-varaaitaspäi, sidä voiži kävutada mugažo toižiš projektoiš.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => "Olgat hüväd, lugekat $1-lehtpol't, miše sada ližainformacijad.",
-'shareduploadwiki-desc' => 'Sen $1:n südäimišt om ozutadud alemba.',
-'shareduploadwiki-linktext' => "failoiden ümbrikirjutandan lehtpol'",
-'noimage' => 'Ei ole failad mugoižen nimenke, no tö voit $1.',
-'noimage-linktext' => 'jügutoitta se',
+'sharedupload' => 'Nece fail om ühthižes $1-varaaitaspäi, sidä voiži kävutada mugažo toižiš projektoiš.',
+'filepage-nofile' => 'Ei ole failad mugoižen nimenke.',
+'filepage-nofile-link' => 'Ei ole failad mugoižen nimenke, no tö voit [$1 jügutoitta se].',
'uploadnewversion-linktext' => "Jügutoitta necen failan uz' versii",
-'shared-repo-from' => '$1-projektaspäi', # $1 is the repository name
-'shared-repo' => 'ühthine mediavaraait', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1-projektaspäi',
+'shared-repo' => 'ühthine mediavaraait',
# File reversion
'filerevert' => '$1n endištand vanhemban versijannoks',
@@ -1378,7 +1437,7 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
# Random page
'randompage' => "Statjaline lehtpol'",
-'randompage-nopages' => '"$1"-nimiavaruses ei ole lehtpolid.',
+'randompage-nopages' => '"$1"-{{PLURAL:$2|Nimiavarudes|Nimiavaruziš}} ei ole lehtpolid.',
# Random redirect
'randomredirect' => 'Statjaline läbikosketuz',
@@ -1390,6 +1449,7 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
'statistics-header-edits' => 'Redaktiruida statistikad',
'statistics-header-views' => 'Kacta statistikha',
'statistics-header-users' => 'Kävutajiden statistik',
+'statistics-header-hooks' => 'Toine statistik',
'statistics-articles' => "Südäimištlehtpol't",
'statistics-pages' => "Lehtpol't",
'statistics-pages-desc' => 'Kaik lehtpoled wikiš, lodulehtpolid da läbioigendusid mülütaden, i m. e.',
@@ -1412,8 +1472,8 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
'brokenredirects' => 'Rebitadud läbikosketused',
'brokenredirectstext' => 'Nened läbikosketused ozutadas olmatomihe lehtpolihe:',
-'brokenredirects-edit' => '(redaktiruida)',
-'brokenredirects-delete' => '(čuta poiš)',
+'brokenredirects-edit' => 'redaktiruida',
+'brokenredirects-delete' => 'čuta poiš',
'withoutinterwiki' => "Lehtpoled kel'kosketusita",
'withoutinterwiki-summary' => 'Nenil lehtpolil ei ole interwiki-kosketusid.',
@@ -1518,7 +1578,7 @@ Olgat hüväd, otkat sil'mnägubale, miše toižed-ki saitad voidas kosketada fa
# Special:Categories
'categories' => 'Kategorijad',
-'categoriespagetext' => 'Neniš kategorijoiš om lehtpolid vai mediafailoid.
+'categoriespagetext' => '{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.
[[Special:UnusedCategories|Kävumatomid kategorijoid]] ei ozutagoi naku.
Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'categoriesfrom' => 'Ozutada kategorijad, necišpäi augotaden:',
@@ -1526,8 +1586,9 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'special-categories-sort-abc' => 'järgeta kirjamišton mödhe',
# Special:DeletedContributions
-'deletedcontributions' => 'Čutud tond',
-'deletedcontributions-title' => 'Čutud tond',
+'deletedcontributions' => 'Čutud tond',
+'deletedcontributions-title' => 'Čutud tond',
+'sp-deletedcontributions-contribs' => 'tond',
# Special:LinkSearch
'linksearch' => 'Irdkosketused',
@@ -1541,6 +1602,12 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'listusersfrom' => 'Ozutada kävutajid augotaden kävutajaspäi:',
'listusers-submit' => 'Ozutada',
'listusers-noresult' => 'Kävutajad ei olgoi löutud.',
+'listusers-blocked' => '(blokiruidud)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktivižiden kävutajiden nimikirjutez',
+'activeusers-from' => 'Oyutada kävutajid, augotaden necišpäi:',
+'activeusers-noresult' => 'Kävutajad ei olgoi löutud.',
# Special:Log/newusers
'newuserlogpage' => 'Kävutajiden registracijan aigkirj',
@@ -1556,11 +1623,11 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'listgrouprights-rights' => 'Oiktused',
'listgrouprights-helppage' => 'Help:Gruppiden oiktused',
'listgrouprights-members' => '(ühtnijoiden nimikirjutez)',
-'listgrouprights-right-display' => '$1 ($2)',
'listgrouprights-addgroup' => 'Voib ližata kävutajid {{PLURAL:$2|gruppha|gruppihe}}: $1',
'listgrouprights-removegroup' => 'Voib čuta poiš {{PLURAL:$2|gruppan|gruppid}}: $1',
'listgrouprights-addgroup-all' => 'Voib ližata ühtnijoid kaikihe gruppihe',
'listgrouprights-removegroup-all' => 'Voib čuta poiš kaik gruppad',
+'listgrouprights-addgroup-self' => 'Voib ližata {{PLURAL:$2|grupp|gruppad}} ičeleze: $1',
# E-mail user
'mailnologin' => 'Ei ole adresan oigendamižen täht',
@@ -1626,26 +1693,29 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'enotif_body' => 'Kalliž $WATCHINGUSERNAME,
-{{SITENAME}}-saitan $PAGETITLE-lehtpol\' om $CHANGEDORCREATED datal $PAGEEDITDATE. Toižetusen avtor om $PAGEEDITOR. Kc. $PAGETITLE_URL, miše nägištada jäl\'gmäine versii.
+{{SITENAME}}-saitan $PAGETITLE-lehtpol\' om $CHANGEDORCREATED $PAGEEDITDATE; toižetusen avtor om $PAGEEDITOR, kc. $PAGETITLE_URL, miše nägištada jäl\'gmäine versii.
$NEWPAGE
-Lühüd toižetusen ümbrikacund: $PAGESUMMARY $PAGEMINOREDIT
+Toižetajan ümbrikacund: $PAGESUMMARY $PAGEMINOREDIT
Säkat pagin toižetusiden avtoranke:
e-počt: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
Ku tö et tuleskekoi necile lehtpolile, ka sistem ei oigendaškande enamba teile tedotusid toižetusiš.
-Tö voinuiži mugažo znamoita völ kerdan lehtpoled kaclemižeks teiden kaclendnimikirjuteses.
+Tö voižit mugažo saubata tedotusiden opcii kaikiden lehtpoliden täht teiden kaclendnimikirjuteses.
{{SITENAME}}-saitan ustavakaz tedotuzsistem
--
Miše toižetada teiden kaclendnimikirjutesen järgendused, mängat tänna:
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Miše čuta lehtpol\' teiden kaclendnimikirjutesespäi, mängat tänna:
+$UNWATCHURL
-Pid\'oitelend da abu:
+Pid\'oitelend da joksii abu:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -1658,10 +1728,11 @@ Pid\'oitelend da abu:
'delete-confirm' => '"$1"-lehtpolen čudand',
'delete-backlink' => '← $1',
'delete-legend' => 'Čuta poiš',
-'historywarning' => 'Homaikat: lehtpolel, kudamb tö takait čuta, om istorii:',
+'historywarning' => 'Homaikat: lehtpolel, kudamb tö takait čuta, om istorii {{PLURAL:$1|ühtes redakcijaspäi|$1 redakcijoišpäi}}:',
'confirmdeletetext' => "Tö takait čuta poiš lehtpol' kaiken sen istorijanke.
Olgat hüväd, vahvištoitkat, miše tö todeks himoičet čuta se, el'gendat ičetoi tegendan jäl'gused, i miše teiden tegend sättub [[{{MediaWiki:Policy-url}}|saitan politikha]].",
'actioncomplete' => 'Tegend om loptud',
+'actionfailed' => 'Tegend lopihe onetomašti',
'deletedtext' => '"<nowiki>$1</nowiki>" om čutud poiš.
Kc. $2, miše lugeda tantoižiden čudandoiden nimikirjutez.',
'deletedarticle' => '"[[$1]]"-lehtpol\' om čutud poiš',
@@ -1694,8 +1765,8 @@ Jäl'gmäine toižetai om üksjäižen lehtpolen avtoran.",
'alreadyrolled' => "Ei voi endištada jäl'gmäšt [[:$1]]-lehtpolen redakcijad (avtor: [[User:$2|$2]]). ([[User talk:$2|Lodud]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); ken-se toine om jo redaktiruinu vai endištanu sen.
Jäl'gmäižed toižetused om tehnu [[User:$3|$3]] ([[User talk:$3|Lodud]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "Redaktiruindan ümbrikacund oli: \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Kävutajan [[Special:Contributions/$2|$2]] ([[User talk:$2|Lodud]]) tožetused oma endištadud edeližhe versijahasai (avtor: [[User:$1|$1]])', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Redaktiruindan ümbrikacund oli: \"''\$1''\".",
+'revertpage' => 'Kävutajan [[Special:Contributions/$2|$2]] ([[User talk:$2|Lodud]]) tožetused oma endištadud edeližhe versijahasai (avtor: [[User:$1|$1]])',
'rollback-success' => '$1-kävutajan toižetused oma endištadud $2-kävutajan versijahasai.',
'sessionfailure' => 'Om problemoid nügüdläižes radseansas; nece tegend om kel\'tud, miše kaita "seansan anastusespäi".
Olgat hüväd, paingat "tagaze"-kingitimele i jügutoitkat lehtpol\' udes, sid\' naprigat toštta tegend völ kerdan.',
@@ -1716,7 +1787,7 @@ Kc. [[Special:ProtectedPages|kaitud lehtpoliden nimikirjutez]].',
'protectexpiry' => 'lopstrok:',
'protect_expiry_invalid' => 'Lopstrok om vär.',
'protect_expiry_old' => 'Lopstrokun aig om jo männu.',
-'protect-unchain' => 'Heitta blokiruind lehtpolen udesnimitandaspäi',
+'protect-unchain-permissions' => 'Avaita kaičendan ližaparametrad',
'protect-text' => "Sab nähta da toižetada kaičendpind naku '''<nowiki>$1</nowiki>'''-lehtpolen täht.",
'protect-locked-blocked' => "Teiden registracii om blokiruidud, i sikš tö et voigoi toižetada lehtpolen kaičendpindad.
Naku oma nügüdläižed järgendused '''$1'''-lehtpolen täht.",
@@ -1746,7 +1817,7 @@ Sab toižetada necen lehtpolen kaičendpind, no se ei voi toižetada kaskadkaič
** Satusitoi redakcijoiden soda
** Luja lehtpolen populärižuz',
'protect-edit-reasonlist' => 'Redaktiruida kaičendan süd',
-'protect-expiry-options' => "1 čas:1 hour,1 päiv:1 day,1 nedal':1 week,2 nedalid:2 weeks,1 ku:1 month,3 kud:3 months,6 kud:6 months,1 voz':1 year,strokuta:infinite", # display1:time1,display2:time2,...
+'protect-expiry-options' => "1 čas:1 hour,1 päiv:1 day,1 nedal':1 week,2 nedalid:2 weeks,1 ku:1 month,3 kud:3 months,6 kud:6 months,1 voz':1 year,strokuta:infinite",
'restriction-type' => 'Oiktused:',
'restriction-level' => 'Tulendan laskendpind:',
'minimum-size' => 'Minimaline suruz',
@@ -1773,6 +1844,7 @@ Sab toižetada necen lehtpolen kaičendpind, no se ei voi toižetada kaskadkaič
'undelete-nodiff' => 'Ei voi löuta edelišt versijad.',
'undeletebtn' => 'Endištada',
'undeletelink' => 'endištada',
+'undeleteviewlink' => 'nähta',
'undeletereset' => 'Puhtastada',
'undeletecomment' => 'Kommentarii:',
'undeletedarticle' => 'om endištanu "[[$1]]"',
@@ -1810,14 +1882,19 @@ $1',
'month' => 'Ku:',
'year' => 'Voz’:',
-'sp-contributions-newbies' => 'Ozutada vaiše uziden kävutajiden tondad',
-'sp-contributions-newbies-sub' => 'Uziden registracijoiden täht',
-'sp-contributions-newbies-title' => 'Uziden kävutajiden tond',
-'sp-contributions-blocklog' => 'Blokiruindoiden aigkirj',
-'sp-contributions-logs' => 'aigkirjad',
-'sp-contributions-search' => 'Ectä tond',
-'sp-contributions-username' => 'IP-adres vai kävutajan nimi:',
-'sp-contributions-submit' => 'Ectä',
+'sp-contributions-newbies' => 'Ozutada vaiše uziden kävutajiden tondad',
+'sp-contributions-newbies-sub' => 'Uziden registracijoiden täht',
+'sp-contributions-newbies-title' => 'Uziden kävutajiden tond',
+'sp-contributions-blocklog' => 'Blokiruindoiden aigkirj',
+'sp-contributions-deleted' => 'Čutud kävutajan tond',
+'sp-contributions-logs' => 'aigkirjad',
+'sp-contributions-talk' => 'lodu',
+'sp-contributions-userrights' => 'kävutajiden oiktusiden ohjandamine',
+'sp-contributions-blocked-notice' => "Nece kävutai om nügüd' blokiruidud.
+Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
+'sp-contributions-search' => 'Ectä tond',
+'sp-contributions-username' => 'IP-adres vai kävutajan nimi:',
+'sp-contributions-submit' => 'Ectä',
# What links here
'whatlinkshere' => 'Kosketused - nakhu',
@@ -1841,6 +1918,7 @@ $1',
# Block/unblock
'blockip' => 'Blokiruida kävutajad',
+'blockip-title' => 'Blokiruida kävutajad',
'blockip-legend' => 'Blokiruida kävutajad',
'blockiptext' => 'Kävutagat alemba anttud form, miše blokiruida kirjutandan voimuz märitud IP-adresaspäi.
Nece sab tehta vaiše sen täht, miše borcuidas vandalizmanke, kut om kirjutadud [[{{MediaWiki:Policy-url}}|ohjandimiš]].
@@ -1864,7 +1942,7 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
'ipbenableautoblock' => 'Blokiruida avtomatižešti kävutajal kävutadud IP-adresad',
'ipbsubmit' => 'Blokiruida nece kävutai',
'ipbother' => 'Toine aig:',
-'ipboptions' => "2 časud:2 hours,1 päiv:1 day,3 päiväd:3 days,1 nedal':1 week,2 nedalid:2 weeks,1 ku:1 month,3 kud:3 months,6 kud:6 months,1 voz':1 year,strokuta:infinite", # display1:time1,display2:time2,...
+'ipboptions' => "2 časud:2 hours,1 päiv:1 day,3 päiväd:3 days,1 nedal':1 week,2 nedalid:2 weeks,1 ku:1 month,3 kud:3 months,6 kud:6 months,1 voz':1 year,strokuta:infinite",
'ipbotheroption' => 'toine',
'ipbotherreason' => 'Toine sü/Ližasü:',
'ipbhidename' => 'Peitta kävutajan nimi redakcijoišpäi da nimikirjutesišpäi',
@@ -1893,9 +1971,10 @@ Kc. [[Special:IPBlockList|blokiruidud IP-adresoiden nimikirjuteshe]].',
'ipblocklist-sh-tempblocks' => '$1 pordaigaližed blokiruindad',
'ipblocklist-sh-addressblocks' => '$1 erasiden IP-den blokiruindad',
'ipblocklist-submit' => 'Ecind',
+'ipblocklist-localblock' => 'Sijaline blokiruind',
'blocklistline' => '$1, $2 om blokiruinu kävutajad $3 ($4)',
'infiniteblock' => 'strokutoi blokiruind',
-'expiringblock' => 'blokiruind lopiše $1',
+'expiringblock' => 'lopiše $1 $2',
'anononlyblock' => 'vaiše anonimad',
'noautoblockblock' => 'avtoblokiruind om sauptud',
'createaccountblock' => 'Uziden kävutajiden registriruind om blokiruidud',
@@ -1910,7 +1989,8 @@ Kc. [[Special:IPBlockList|blokiruidud IP-adresoiden nimikirjuteshe]].',
'autoblocker' => 'Blokiruidud avtomatižešti, sikš miše teiden IP-adres om tantoi kävutanu "[[User:$1|$1]]".
Adresan blokiruindan sü - "$2".',
'blocklogpage' => 'Blokiruindoiden aigkirj',
-'blocklog-fulllog' => 'Kaik blokiruindoiden aigkirj',
+'blocklog-showlog' => 'Nece kävutai blokiruiltihe jo.
+Alemba om anttud blokiruindaiglehtez:',
'blocklogentry' => 'blokiruidihe [[$1]] pordoks $2 $3',
'reblock-logentry' => 'om toižetanu [[$1]]-kävutajan blokiruindan järgendused. Blokiruind lopiše $2 $3',
'unblocklogentry' => 'om heitnu $1-kävutajan blokiruindan',
@@ -1928,6 +2008,7 @@ Adresan blokiruindan sü - "$2".',
'ipb_already_blocked' => '"$1" om jo blokiruidud',
'ipb-needreblock' => '== Om jo blokiruidud ==
$1 om jo blokiruidud. Tahtoižit-ik toižetada järgendusid?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Toine blokiruind|Toižed blokiruindad}}',
'ipb_cant_unblock' => 'Petuz: ei voi löuta ID $1:n blokiruindad.
Voib olda, se om jo heittud.',
'ip_range_invalid' => 'Vär IP-diapazon.',
@@ -1985,7 +2066,7 @@ Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
'move-watch' => "Kacelta necidä lehtpol't",
'movepagebtn' => "Udesnimitada lehtpol'",
'pagemovedsub' => "Lehtpol' om nimitadud udes",
-'movepage-moved' => "'''\"\$1\" om nimitadud udes; uz' nimi om \"\$2\"'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''\"\$1\" om nimitadud udes; uz' nimi om \"\$2\"'''",
'movepage-moved-redirect' => 'Läbikosketuz om tehtud.',
'movepage-moved-noredirect' => "Läbikosketusen sämine om kel'tud.",
'articleexists' => "Lehtpol' mugoižen nimenke om jo wikiš, vai valitud nimi ei sättu. Olgat hüväd, valikat toine nimi.",
@@ -2027,11 +2108,19 @@ Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
'export-templates' => 'Mülütada šablonad',
# Namespace 8 related
-'allmessages' => 'Sisteman tedotused',
-'allmessagesname' => 'Nimi',
-'allmessagesdefault' => 'Tekst augotižjärgendusen mödhe',
-'allmessagescurrent' => 'Nügüdläine tekst',
-'allmessagesnotsupportedDB' => "Nece lehtpol' ei ole kävutamižes, sikš miše '''\$wgUseDatabaseMessages'''-opcii ei ole radmas.",
+'allmessages' => 'Sisteman tedotused',
+'allmessagesname' => 'Nimi',
+'allmessagesdefault' => 'Tekst augotižjärgendusen mödhe',
+'allmessagescurrent' => 'Nügüdläine tekst',
+'allmessagesnotsupportedDB' => "Nece lehtpol' ei ole kävutamižes, sikš miše '''\$wgUseDatabaseMessages'''-opcii ei ole radmas.",
+'allmessages-filter-legend' => "Fil'tr",
+'allmessages-filter' => "Fil'tr toižetusen statusan mödhe:",
+'allmessages-filter-unmodified' => 'Toižetamatomad',
+'allmessages-filter-all' => 'Kaik',
+'allmessages-filter-modified' => 'Toižetadud',
+'allmessages-prefix' => "Fil'tr prefiksan mödhe:",
+'allmessages-language' => "Kel'",
+'allmessages-filter-submit' => 'Mäne',
# Thumbnails
'thumbnail-more' => 'Tobjeta',
@@ -2041,6 +2130,9 @@ Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
'djvu_no_xml' => 'Ei voi sada XMLad DjVu-failan täht',
'thumbnail_invalid_params' => 'Värad pičukuvan parametrad',
'thumbnail_dest_directory' => 'Ei voi säta metfailhodrad',
+'thumbnail_image-type' => "Kuvan tip ei ole pid'oiteldud",
+'thumbnail_gd-library' => 'Vajag GD-kirjišton konfiguracii: ei ole $1-funkcijad',
+'thumbnail_image-missing' => 'Näguse, ei ole $1-failad',
# Special:Import
'import' => 'Toda lehtesid toižiš saitoišpäi',
@@ -2099,6 +2191,7 @@ Olgat hüväd, kävutagat ezikacund.",
Sab lugeda sen augotižkod da kopiruida se.",
'tooltip-ca-history' => 'Necen lehtpolen enččed versijad',
'tooltip-ca-protect' => "Kaita necidä lehtpol't",
+'tooltip-ca-unprotect' => 'Heitta necen lehtpolen kaičend',
'tooltip-ca-delete' => "Čuta poiš nece lehtpol'",
'tooltip-ca-undelete' => 'Endištada kaik toižetused, kudambad oliba tehtud edel lehtpolen čudandad',
'tooltip-ca-move' => "Udesnimitada nece lehtpol'",
@@ -2109,6 +2202,7 @@ Sab lugeda sen augotižkod da kopiruida se.",
'tooltip-search-fulltext' => 'Ectä lehtpoled, kudambil om mugoi tekst',
'tooltip-p-logo' => "Pälehtpol'",
'tooltip-n-mainpage' => 'Mäne pälehtpolele',
+'tooltip-n-mainpage-description' => 'Tulgat pälehtpolele',
'tooltip-n-portal' => 'Lodud projektas',
'tooltip-n-currentevents' => 'Löuta ližainformacijad nügüdläižiš aigtegoiš',
'tooltip-n-recentchanges' => 'Tantoižiden toižetusiden nimikirjutez',
@@ -2150,7 +2244,8 @@ Sab lugeda sen augotižkod da kopiruida se.",
# Attribution
'siteuser' => '{{SITENAME}}-saitan kävutai $1',
-'lastmodifiedatby' => "Necidä lehtpol't toižeti jäl'gmäižen kerdan $2, $1 časul $3.", # $1 date, $2 time, $3 user
+'anonuser' => '{{GRAMMAR:genitive|{{SITENAME}}}} anonimine kävutai $1',
+'lastmodifiedatby' => "Necidä lehtpol't toižeti jäl'gmäižen kerdan $2, $1 časul $3.",
'othercontribs' => 'Aluz - tö, kudamban tegi $1.',
'others' => 'toižed',
'siteusers' => '{{SITENAME}}-saitan {{PLURAL:$2|kävutai|kävutajad}} $1',
@@ -2189,11 +2284,24 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
'mw_math_modern' => "Kut rekomeduidas nügüd'aigaižiden kaclimiden täht",
'mw_math_mathml' => 'MathML, ku sab (eksperimentaližikš)',
+# Math errors
+'math_failure' => 'Ei voi palastada',
+'math_unknown_error' => 'tundmatoi petuz',
+'math_unknown_function' => 'tundmatoi funkcii',
+'math_lexing_error' => 'leksine petuz',
+'math_syntax_error' => 'sintaksine petuz',
+'math_image_error' => 'PNG-ks kändmižes ozaižihe petuz;
+kodvgat, oiged-ik oma järgetud: latex, dvips, gs da convert.',
+'math_bad_tmpdir' => 'Ei voi säta pordaigaline matematine katalog vai ei voi kirjutada sinnä',
+'math_bad_output' => 'Ei voi säta matematine lähtmižkatalog vai ei voi kirjutada sinnä',
+'math_notexvc' => 'En voi löuta texvc-töfailad;
+kc. math/README järgendamižen täht.',
+
# Patrolling
'markaspatrolleddiff' => 'Znamoita kut patruliruidud',
'markaspatrolledtext' => "Zmamoita nece lehtpol' kut patruliruidud",
'markedaspatrolled' => 'Om znamoitud kut patruliruidud',
-'markedaspatrolledtext' => 'Valitud versii om znamoitud kut patruliruidud.',
+'markedaspatrolledtext' => 'Valitud [[:$1]]-n versii om znamoitud kut patruliruidud.',
'rcpatroldisabled' => "Jäl'gmäižiden toižetusiden patruliruind ei ole kävutamas",
'rcpatroldisabledtext' => "Jäl'gmäižiden toižetusiden patruliruindan opcii ei ole kävutamas.",
'markedaspatrollederror' => 'Ei voi znamoita kut patruliruidud',
@@ -2214,9 +2322,6 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
'previousdiff' => '← Vanhemb redakcii',
'nextdiff' => 'Udemb redakcii →',
-# Visual comparison
-'visual-comparison' => 'Vizualine rindatuz',
-
# Media information
'thumbsize' => 'Pičukuvan suruz:',
'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|lehtpol'|lehtpol't}}",
@@ -2226,6 +2331,8 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
'svg-long-desc' => '(SVG-fail, nominaližikš $1 × $2 pikselid, failan suruz: $3)',
'show-big-image' => 'Korgedtarkoiktuseline kuvan versii',
'show-big-image-thumb' => '<small>Ezikacundan suruz: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'toštase',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|freim|freimad}}',
# Special:NewFiles
'newimages' => 'Uziden failoiden galerei',
@@ -2273,7 +2380,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Leveduz’',
@@ -2394,10 +2501,10 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
'exif-unknowndate' => 'Tundmatoi dat',
-'exif-orientation-1' => 'Normaline', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Kuvastadud gorizonaližikš', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Kätud 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Kuvastadud vertikalidme', # 0th row: bottom; 0th column: left
+'exif-orientation-1' => 'Normaline',
+'exif-orientation-2' => 'Kuvastadud gorizonaližikš',
+'exif-orientation-3' => 'Kätud 180°',
+'exif-orientation-4' => 'Kuvastadud vertikalidme',
'exif-planarconfiguration-1' => 'chunky-format',
'exif-planarconfiguration-2' => 'planarformat',
@@ -2514,7 +2621,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
'exif-gpsmeasuremode-2' => '2-koordinatine märičemine',
'exif-gpsmeasuremode-3' => '3-koordinatine märičemine',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/č',
'exif-gpsspeed-m' => 'milid časus',
'exif-gpsspeed-n' => "sol'med",
@@ -2533,6 +2640,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
'watchlistall2' => 'kaik',
'namespacesall' => 'kaik',
'monthsall' => 'kaik',
+'limitall' => 'kaik',
# E-mail address confirmation
'confirmemail' => 'Vahvištoitta e-počtan adres',
@@ -2664,7 +2772,7 @@ Kävutagat normaline ezikacund.',
'duplicate-defaultsort' => '\'\'\'Varutuz:\'\'\' Sortiruindan avadim äugotižjärgendusen mödhe "$2" toižetab edeližen avadimen äugotižjärgendusen mödhe "$1".',
# Special:Version
-'version' => 'Versii', # Not used as normal message but as header for the special page itself
+'version' => 'Versii',
'version-extensions' => 'Seižutadud ližad',
'version-specialpages' => 'Specialižed lehtpoled',
'version-parserhooks' => 'Sintaksižen analizatoran sabustajad',
@@ -2678,7 +2786,7 @@ Kävutagat normaline ezikacund.',
'version-skin-extension-functions' => 'Irdnäguližoiden funkcijad',
'version-hook-name' => 'Sabustajan nimi',
'version-hook-subscribedby' => 'Ezipakitoitajad',
-'version-version' => 'Versii',
+'version-version' => '(Versii $1)',
'version-license' => 'Licenzii',
'version-software' => 'Seižutadud programmišt',
'version-software-product' => 'Produkt',
@@ -2755,4 +2863,15 @@ Kirjutagat failan nimi «{{ns:file}}:»-pkefiksata.',
'dberr-outofdate' => "Google'an indeks voib olda vanhtunuden.",
'dberr-cachederror' => 'Naku om ectud lehtpolen keširuidud versii. Voib olda, siš ei ole tantoižid toižetusid.',
+# HTML forms
+'htmlform-invalid-input' => 'Erasil teil anttud andmusil om problem',
+'htmlform-select-badoption' => 'Teil anttud znamoičend ei ole lasktud.',
+'htmlform-int-invalid' => 'Teil anttud znamoičend ei ole kogonaine lugu.',
+'htmlform-float-invalid' => 'Teil anttud znamoičend ei ole lugu.',
+'htmlform-int-toolow' => 'Teil znamoitud znamoičend om madalamb minimališt - $1',
+'htmlform-int-toohigh' => 'Teil znamoitud znamoičend om korktemb maksikališt - $1',
+'htmlform-submit' => 'Oigeta',
+'htmlform-reset' => 'Tühjitada toižetused',
+'htmlform-selectorother-other' => 'Toine',
+
);
diff --git a/languages/messages/MessagesVi.php b/languages/messages/MessagesVi.php
index 505ce7f8..218d6e86 100644
--- a/languages/messages/MessagesVi.php
+++ b/languages/messages/MessagesVi.php
@@ -36,8 +36,8 @@ $namespaceNames = array(
NS_FILE_TALK => 'Thảo_luận_Tập_tin',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Thảo_luận_MediaWiki',
- NS_TEMPLATE => 'Tiêu_bản',
- NS_TEMPLATE_TALK => 'Thảo_luận_Tiêu_bản',
+ NS_TEMPLATE => 'Bản_mẫu',
+ NS_TEMPLATE_TALK => 'Thảo_luận_Bản_mẫu',
NS_HELP => 'Trợ_giúp',
NS_HELP_TALK => 'Thảo_luận_Trợ_giúp',
NS_CATEGORY => 'Thể_loại',
@@ -47,6 +47,8 @@ $namespaceNames = array(
$namespaceAliases = array(
'Hình' => NS_FILE,
'Thảo_luận_Hình' => NS_FILE_TALK,
+ 'Tiêu_bản' => NS_TEMPLATE,
+ 'Thảo_luận_Tiêu_bản' => NS_TEMPLATE_TALK,
);
$specialPageAliases = array(
@@ -63,23 +65,27 @@ $specialPageAliases = array(
'Listfiles' => array( 'Danh sách hình', 'Danh sách tập tin' ),
'Newimages' => array( 'Tập tin mới', 'Hình mới' ),
'Listusers' => array( 'Danh sách thành viên' ),
+ 'Listgrouprights' => array( 'Quyền nhóm người dùng' ),
'Statistics' => array( 'Thống kê' ),
'Randompage' => array( 'Ngẫu nhiên' ),
'Lonelypages' => array( 'Trang mồ côi' ),
'Uncategorizedpages' => array( 'Trang chưa phân loại' ),
'Uncategorizedcategories' => array( 'Thể loại chưa phân loại' ),
'Uncategorizedimages' => array( 'Hình chưa phân loại' ),
- 'Uncategorizedtemplates' => array( 'Tiêu bản chưa phân loại' ),
+ 'Uncategorizedtemplates' => array( 'Bản mẫu chưa phân loại', 'Tiêu bản chưa phân loại' ),
'Unusedcategories' => array( 'Thể loại chưa dùng' ),
'Unusedimages' => array( 'Hình chưa dùng' ),
'Wantedpages' => array( 'Trang cần thiết' ),
'Wantedcategories' => array( 'Thể loại cần thiết' ),
'Wantedfiles' => array( 'Tập tin cần thiết' ),
- 'Wantedtemplates' => array( 'Tiêu bản cần thiết' ),
+ 'Wantedtemplates' => array( 'Bản mẫu cần thiết', 'Tiêu bản cần thiết' ),
'Mostlinked' => array( 'Liên kết nhiều nhất' ),
'Mostlinkedcategories' => array( 'Thể loại liên kết nhiều nhất' ),
- 'Mostlinkedtemplates' => array( 'Tiêu bản liên kết nhiều nhất' ),
+ 'Mostlinkedtemplates' => array( 'Bản mẫu liên kết nhiều nhất', 'Tiêu bản liên kết nhiều nhất' ),
'Mostimages' => array( 'Tập tin liên kết nhiều nhất' ),
+ 'Mostcategories' => array( 'Thể loại lớn nhất' ),
+ 'Mostrevisions' => array( 'Nhiều phiên bản nhất' ),
+ 'Fewestrevisions' => array( 'Ít phiên bản nhất' ),
'Shortpages' => array( 'Trang ngắn' ),
'Longpages' => array( 'Trang dài' ),
'Newpages' => array( 'Trang mới' ),
@@ -93,24 +99,47 @@ $specialPageAliases = array(
'Specialpages' => array( 'Trang đặc biệt' ),
'Contributions' => array( 'Đóng góp' ),
'Emailuser' => array( 'Gửi thư' ),
+ 'Confirmemail' => array( 'Xác nhận thư' ),
+ 'Whatlinkshere' => array( 'Liên kết đến đây' ),
+ 'Recentchangeslinked' => array( 'Thay đổi liên quan' ),
'Movepage' => array( 'Di chuyển' ),
+ 'Blockme' => array( 'Khóa tôi' ),
+ 'Booksources' => array( 'Nguồn sách' ),
'Categories' => array( 'Thể loại' ),
'Export' => array( 'Xuất' ),
'Version' => array( 'Phiên bản' ),
+ 'Allmessages' => array( 'Mọi thông báo' ),
'Log' => array( 'Nhật trình' ),
'Blockip' => array( 'Cấm IP' ),
'Undelete' => array( 'Phục hồi' ),
'Import' => array( 'Nhập' ),
'Lockdb' => array( 'Khóa CSDL' ),
'Unlockdb' => array( 'Mở khóa CSDL' ),
+ 'Userrights' => array( 'Quyền thành viên' ),
'MIMEsearch' => array( 'Tìm MIME' ),
+ 'FileDuplicateSearch' => array( 'Tìm tập tin trùng' ),
+ 'Unwatchedpages' => array( 'Trang chưa theo dõi' ),
'Listredirects' => array( 'Trang đổi hướng' ),
'Revisiondelete' => array( 'Xóa phiên bản' ),
+ 'Unusedtemplates' => array( 'Tiêu bản chưa dùng', 'Bản mẫu chưa dùng' ),
'Randomredirect' => array( 'Đổi hướng ngẫu nhiên' ),
'Mypage' => array( 'Trang tôi', 'Trang cá nhân' ),
'Mytalk' => array( 'Thảo luận tôi', 'Trang thảo luận của tôi' ),
'Mycontributions' => array( 'Đóng góp của tôi', 'Tôi đóng góp' ),
+ 'Listadmins' => array( 'Danh sách admin' ),
+ 'Listbots' => array( 'Danh sách bot' ),
+ 'Popularpages' => array( 'Trang phổ biến' ),
'Search' => array( 'Tìm kiếm' ),
+ 'Resetpass' => array( 'Đổi mật khẩu' ),
+ 'Withoutinterwiki' => array( 'Không interwiki' ),
+ 'MergeHistory' => array( 'Trộn lịch sử' ),
+ 'Filepath' => array( 'Đường dẫn file' ),
+ 'Invalidateemail' => array( 'Tắt thư' ),
+ 'Blankpage' => array( 'Trang trắng' ),
+ 'LinkSearch' => array( 'Tìm liên kết' ),
+ 'DeletedContributions' => array( 'Đóng góp bị xóa' ),
+ 'Tags' => array( 'Thẻ' ),
+ 'Activeusers' => array( 'Người dùng tích cực' ),
);
$magicWords = array(
@@ -120,7 +149,7 @@ $magicWords = array(
'forcetoc' => array( '0', '__LUÔNMỤCLỤC__', '__FORCETOC__' ),
'toc' => array( '0', '__MỤCLỤC__', '__TOC__' ),
'noeditsection' => array( '0', '__KHÔNGSỬAMỤC__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'THÁNGNÀY', 'CURRENTMONTH' ),
+ 'currentmonth' => array( '1', 'THÁNGNÀY', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonthname' => array( '1', 'TÊNTHÁNGNÀY', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'TÊNDÀITHÁNGNÀY', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'TÊNNGẮNTHÁNGNÀY', 'CURRENTMONTHABBREV' ),
@@ -129,7 +158,7 @@ $magicWords = array(
'currentdayname' => array( '1', 'TÊNNGÀYNÀY', 'CURRENTDAYNAME' ),
'currentyear' => array( '1', 'NĂMNÀY', 'CURRENTYEAR' ),
'currenttime' => array( '1', 'GIỜNÀY', 'CURRENTTIME' ),
- 'localmonth' => array( '1', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH' ),
+ 'localmonth' => array( '1', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonthname' => array( '1', 'TÊNTHÁNGĐỊAPHƯƠNG', 'LOCALMONTHNAME' ),
'localday' => array( '1', 'NGÀYĐỊAPHƯƠNG', 'LOCALDAY' ),
'localday2' => array( '1', 'NGÀYĐỊAPHƯƠNG2', 'LOCALDAY2' ),
@@ -260,6 +289,7 @@ $messages = array(
'tog-enotifminoredits' => 'Gửi thư cho tôi cả những thay đổi nhỏ trong trang',
'tog-enotifrevealaddr' => 'Hiện địa chỉ thư điện tử của tôi trong thư thông báo',
'tog-shownumberswatching' => 'Hiển thị số người đang xem',
+'tog-oldsig' => 'Chữ ký hiện tại:',
'tog-fancysig' => 'Xem chữ ký là mã wiki (không có liên kết tự động)',
'tog-externaleditor' => 'Mặc định dùng trình soạn thảo bên ngoài (chỉ dành cho người thành thạo, cần thiết lập đặc biệt trên máy tính của bạn)',
'tog-externaldiff' => 'Mặc định dùng trình so sánh bên ngoài (chỉ dành cho người thành thạo, cần thiết lập đặc biệt trên máy tính của bạn)',
@@ -283,6 +313,13 @@ $messages = array(
'underline-never' => 'Không bao giờ',
'underline-default' => 'Mặc định của trình duyệt',
+# Font style option in Special:Preferences
+'editfont-style' => 'Kiểu phông chữ trong khung sửa đổi:',
+'editfont-default' => 'Mặc định của trình duyệt',
+'editfont-monospace' => 'Phông đẳng cách',
+'editfont-sansserif' => 'Phông không chân',
+'editfont-serif' => 'Phông có chân',
+
# Dates
'sunday' => 'Chủ nhật',
'monday' => 'thứ Hai',
@@ -342,7 +379,7 @@ $messages = array(
'category-media-header' => 'Các tập tin trong thể loại “$1”',
'category-empty' => "''Thể loại này hiện không có trang hay tập tin nào.''",
'hidden-categories' => '{{PLURAL:$1|Thể loại ẩn|Thể loại ẩn}}',
-'hidden-category-category' => 'Thể loại ẩn', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Thể loại ẩn',
'category-subcat-count' => 'Thể loại này có {{PLURAL:$2|tiểu thể loại sau|{{PLURAL:$1||$1}} tiểu thể loại sau, trên tổng số $2 tiểu thể loại}}.',
'category-subcat-count-limited' => 'Thể loại này có {{PLURAL:$1||$1}} tiểu thể loại sau.',
'category-article-count' => '{{PLURAL:$2|Thể loại này gồm trang sau.|{{PLURAL:$1|Trang|$1 trang}} sau nằm trong thể loại này, trên tổng số $2 trang.}}',
@@ -350,6 +387,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Thể loại này có tập tin sau.|{{PLURAL:$1|Tập tin|$1 tập tin}} sau nằm trong thể loại này, trong tổng số $2 tập tin.}}',
'category-file-count-limited' => '{{PLURAL:$1|Tập tin|$1 tập tin}} sau nằm trong thể loại hiện hành.',
'listingcontinuesabbrev' => 'tiếp',
+'index-category' => 'Trang được ghi chỉ mục',
+'noindex-category' => 'Trang không ghi chỉ mục',
'mainpagetext' => "'''MediaWiki đã được cài đặt thành công.'''",
'mainpagedocfooter' => 'Xin đọc [http://meta.wikimedia.org/wiki/Help:Contents Hướng dẫn sử dụng] để biết thêm thông tin về cách sử dụng phần mềm wiki.
@@ -360,10 +399,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Các câu hỏi thường gặp MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư về việc phát hành MediaWiki]',
-'about' => 'Giới thiệu',
-'article' => 'Trang nội dung',
-'newwindow' => '(mở cửa sổ mới)',
-'cancel' => 'Hủy bỏ',
+'about' => 'Giới thiệu',
+'article' => 'Trang nội dung',
+'newwindow' => '(mở cửa sổ mới)',
+'cancel' => 'Hủy bỏ',
+'moredotdotdot' => 'Thêm nữa…',
+'mypage' => 'Trang của tôi',
+'mytalk' => 'Thảo luận với tôi',
+'anontalk' => 'Thảo luận với IP này',
+'navigation' => 'Xem nhanh',
+'and' => '&#32;và',
+
+# Cologne Blue skin
'qbfind' => 'Tìm kiếm',
'qbbrowse' => 'Xem qua',
'qbedit' => 'Sửa đổi',
@@ -371,15 +418,35 @@ $messages = array(
'qbpageinfo' => 'Ngữ cảnh',
'qbmyoptions' => 'Trang cá nhân',
'qbspecialpages' => 'Trang đặc biệt',
-'moredotdotdot' => 'Thêm nữa…',
-'mypage' => 'Trang của tôi',
-'mytalk' => 'Thảo luận với tôi',
-'anontalk' => 'Thảo luận với IP này',
-'navigation' => 'Xem nhanh',
-'and' => '&#32;và',
-
-# Metadata in edit box
-'metadata_help' => 'Đặc tính hình:',
+'faq' => 'Câu hỏi thường gặp',
+'faqpage' => 'Project:Các câu hỏi thường gặp',
+
+# Vector skin
+'vector-action-addsection' => 'Thêm chủ đề',
+'vector-action-delete' => 'Xóa',
+'vector-action-move' => 'Di chuyển',
+'vector-action-protect' => 'Khóa',
+'vector-action-undelete' => 'Phục hồi',
+'vector-action-unprotect' => 'Mở khóa',
+'vector-namespace-category' => 'Thể loại',
+'vector-namespace-help' => 'Trang trợ giúp',
+'vector-namespace-image' => 'Tập tin',
+'vector-namespace-main' => 'Trang',
+'vector-namespace-media' => 'Trang phương tiện',
+'vector-namespace-mediawiki' => 'Thông điệp',
+'vector-namespace-project' => 'Trang dự án',
+'vector-namespace-special' => 'Trang đặc biệt',
+'vector-namespace-talk' => 'Thảo luận',
+'vector-namespace-template' => 'Bản mẫu',
+'vector-namespace-user' => 'Trang cá nhân',
+'vector-view-create' => 'Tạo',
+'vector-view-edit' => 'Sửa',
+'vector-view-history' => 'Xem lịch sử',
+'vector-view-view' => 'Xem',
+'vector-view-viewsource' => 'Xem mã nguồn',
+'actions' => 'Tác vụ',
+'namespaces' => 'Không gian tên',
+'variants' => 'Biến thể',
'errorpagetitle' => 'Lỗi',
'returnto' => 'Quay lại $1.',
@@ -429,18 +496,22 @@ $messages = array(
'otherlanguages' => 'Ngôn ngữ khác',
'redirectedfrom' => '(đổi hướng từ $1)',
'redirectpagesub' => 'Trang đổi hướng',
-'lastmodifiedat' => 'Lần sửa cuối : $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Lần sửa cuối : $2, $1.',
'viewcount' => 'Trang này đã được đọc {{PLURAL:$1|một|$1}} lần.',
'protectedpage' => 'Trang bị khóa',
'jumpto' => 'Bước tới:',
'jumptonavigation' => 'chuyển hướng',
'jumptosearch' => 'tìm kiếm',
+'view-pool-error' => 'Xin lỗi, máy chủ hiện đang bị quá tải.
+Có quá nhiều thành viên đang cố gắng xem trang này.
+Xin hãy đợi một lát rồi thử truy cập lại vào trang.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Giới thiệu {{SITENAME}}',
'aboutpage' => 'Project:Giới thiệu',
'copyright' => 'Bản quyền $1.',
-'copyrightpagename' => 'giấy phép {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Bản quyền',
'currentevents' => 'Thời sự',
'currentevents-url' => 'Project:Thời sự',
@@ -448,8 +519,6 @@ $messages = array(
'disclaimerpage' => 'Project:Phủ nhận chung',
'edithelp' => 'Trợ giúp sửa đổi',
'edithelppage' => 'Help:Sửa đổi',
-'faq' => 'Câu hỏi thường gặp',
-'faqpage' => 'Project:Các câu hỏi thường gặp',
'helppage' => 'Help:Nội dung',
'mainpage' => 'Trang Chính',
'mainpage-description' => 'Trang Chính',
@@ -530,10 +599,6 @@ Truy vấn vừa rồi là:
“$1”
từ hàm “$2”.
Cơ sở dữ liệu báo lỗi “$3: $4”',
-'noconnect' => 'Wiki đang gặp một số trục trặc kỹ thuật, và không thể kết nối với cơ sở dữ liệu. <br />
-$1',
-'nodb' => 'Không thấy cơ sở dữ liệu $1',
-'cachederror' => 'Đây là bản sao trong bộ nhớ đệm của trang bạn yêu cầu, nó có thể đã lỗi thời.',
'laggedslavemode' => 'Cảnh báo: Trang có thể chưa được cập nhật.',
'readonly' => 'Cơ sở dữ liệu bị khóa',
'enterlockreason' => 'Nêu lý do khóa, cùng với thời hạn khóa',
@@ -551,6 +616,8 @@ Xin hãy báo nó cho một [[Special:ListUsers/sysop|bảo quản viên]], tron
'readonly_lag' => 'Cơ sở dữ liệu bị khóa tự động trong khi các máy chủ cập nhật thông tin của nhau.',
'internalerror' => 'Lỗi nội bộ',
'internalerror_info' => 'Lỗi nội bộ: $1',
+'fileappenderrorread' => 'Không đọc được “$1” trong việc bổ sung.',
+'fileappenderror' => 'Không thể nối “$1” vào “$2”.',
'filecopyerror' => 'Không thể chép tập tin “$1” đến “$2”.',
'filerenameerror' => 'Không thể đổi tên tập tin “$1” thành “$2”.',
'filedeleteerror' => 'Không thể xóa tập tin “$1”.',
@@ -560,7 +627,7 @@ Xin hãy báo nó cho một [[Special:ListUsers/sysop|bảo quản viên]], tron
'unexpected' => 'Không hiểu giá trị: “$1”=“$2”.',
'formerror' => 'Lỗi: không gửi mẫu đi được.',
'badarticleerror' => 'Không thể thực hiện được tác vụ như thế tại trang này.',
-'cannotdelete' => 'Không thể xóa trang hay tập tin được chỉ định. (Có thể nó đã bị ai đó xóa rồi).',
+'cannotdelete' => 'Không thể xóa trang hay tập tin “$1”. Có thể nó đã bị ai đó xóa rồi.',
'badtitle' => 'Tựa trang sai',
'badtitletext' => 'Tựa trang yêu cầu không đúng, rỗng, hoặc là một liên kết ngôn ngữ hoặc liên kết wiki sai. Nó có thể chứa một hoặc nhiều ký tự mà tựa trang không thể sử dụng.',
'perfcached' => 'Dữ liệu sau được lấy từ bộ nhớ đệm và có thể đã lỗi thời.',
@@ -592,14 +659,12 @@ Lý do được cung cấp là ''$2''.",
'virus-unknownscanner' => 'không nhận ra phần mềm diệt virus:',
# Login and logout pages
-'logouttitle' => 'Đăng xuất',
'logouttext' => "'''Bạn đã đăng xuất.'''
Bạn có thể tiếp tục dùng {{SITENAME}} một cách vô danh, hoặc bạn có thể [[Special:UserLogin|đăng nhập lại]] dưới cùng tên người dùng này hoặc một tên người dùng khác. Xin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
'welcomecreation' => '== Chào mừng, $1! ==
Tài khoản của bạn đã mở.
Đừng quên thay đổi [[Special:Preferences|tùy chọn cá nhân của bạn tại {{SITENAME}}]].',
-'loginpagetitle' => 'Đăng nhập',
'yourname' => 'Tên người dùng:',
'yourpassword' => 'Mật khẩu:',
'yourpasswordagain' => 'Gõ lại mật khẩu',
@@ -610,6 +675,7 @@ Tài khoản của bạn đã mở.
'nav-login-createaccount' => 'Đăng nhập / Mở tài khoản',
'loginprompt' => 'Bạn cần bật cookie để đăng nhập vào {{SITENAME}}.',
'userlogin' => 'Đăng nhập / Mở tài khoản',
+'userloginnocreate' => 'Đăng nhập',
'logout' => 'Đăng xuất',
'userlogout' => 'Đăng xuất',
'notloggedin' => 'Chưa đăng nhập',
@@ -622,30 +688,8 @@ Tài khoản của bạn đã mở.
'badretype' => 'Hai mật khẩu không khớp.',
'userexists' => 'Tên người dùng này đã có người lấy.
Hãy chọn một tên khác.',
-'youremail' => 'Thư điện tử:',
-'username' => 'Tên người dùng:',
-'uid' => 'Số thứ tự thành viên:',
-'prefs-memberingroups' => 'Thành viên của {{PLURAL:$1|nhóm|nhóm}}:',
-'yourrealname' => 'Tên thật:',
-'yourlanguage' => 'Ngôn ngữ:',
-'yourvariant' => 'Ngôn ngữ địa phương:',
-'yournick' => 'Chữ ký:',
-'badsig' => 'Chữ ký không hợp lệ; hãy kiểm tra thẻ HTML.',
-'badsiglength' => 'Chữ ký của bạn quá dài.
-Nó không được dài quá $1 {{PLURAL:$1|ký tự|ký tự}}.',
-'yourgender' => 'Giới tính:',
-'gender-unknown' => 'Không chỉ rõ',
-'gender-male' => 'Nam',
-'gender-female' => 'Nữ',
-'prefs-help-gender' => 'Tùy chọn: được phần mềm sử dụng để xác định đúng giới tính.
-Thông tin này là công khai.',
-'email' => 'Thư điện tử',
-'prefs-help-realname' => 'Tên thật là không bắt buộc.
-Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
'loginerror' => 'Lỗi đăng nhập',
-'prefs-help-email' => 'Địa chỉ thư điện tử là tùy chọn, nhưng nó giúp chúng tôi gửi cho bạn mật khẩu mới qua thư điện tử nếu bạn quên mật khẩu của mình.
-Bạn cũng có thể lựa chọn cho phép người khác liên lạc với bạn thông qua trang thành_viên hoặc thảo_luận_thành_viên mà không cần để lộ danh tính.',
-'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ e-mail.',
+'createaccounterror' => 'Không thể mở tài khoản: $1',
'nocookiesnew' => 'Tài khoản đã mở, nhưng bạn chưa đăng nhập. {{SITENAME}} sử dụng cookie để đăng nhập vào tài khoản. Bạn đã tắt cookie. Xin hãy kích hoạt nó, rồi đăng nhập lại với tên người dùng và mật khẩu mới.',
'nocookieslogin' => '{{SITENAME}} sử dụng cookie để đăng nhập thành viên. Bạn đã tắt cookie. Xin hãy kích hoạt rồi thử lại.',
'noname' => 'Chưa nhập tên.',
@@ -656,16 +700,18 @@ Tên người dùng có phân biệt chữ hoa chữ thường.
Hãy kiểm tra lại chính tả, hoặc [[Special:UserLogin/signup|mở tài khoản mới]].',
'nosuchusershort' => 'Không có thành viên nào có tên “<nowiki>$1</nowiki>”. Xin hãy kiểm tra lại chính tả.',
'nouserspecified' => 'Bạn phải đưa ra tên đăng ký.',
+'login-userblocked' => 'Thành viên này đã bị cấm. Không cho phép đăng nhập.',
'wrongpassword' => 'Mật khẩu sai. Xin vui lòng nhập lại.',
'wrongpasswordempty' => 'Bạn chưa gõ vào mật khẩu. Xin thử lần nữa.',
-'passwordtooshort' => 'Mật khẩu của bạn không hợp lệ hoặc quá ngắn.
-Nó phải có ít nhất {{PLURAL:$1|1 ký tự|$1 ký tự}} và phải khác với tên người dùng của bạn.',
+'passwordtooshort' => 'Mật khẩu phải có ít nhất {{PLURAL:$1|1 ký tự|$1 ký tự}}.',
+'password-name-match' => 'Mật khẩu của bạn phải khác với tên người dùng của bạn.',
'mailmypassword' => 'Gửi mật khẩu mới qua thư điện tử',
'passwordremindertitle' => 'Mật khẩu tạm thời cho {{SITENAME}}',
'passwordremindertext' => 'Người nào đó (có thể là bạn, có địa chỉ IP $1) đã yêu cầu chúng tôi gửi cho bạn mật khẩu mới của {{SITENAME}} ($4). Mật khẩu tạm cho thành viên “$2” đã được khởi tạo là “$3”. Nếu bạn chính là người đã yêu cầu mật khẩu, bạn sẽ cần phải đăng nhập và thay đổi mật khẩu ngay bây giờ. Mật khẩu tạm sẽ hết hạn trong vòng {{PLURAL:$5|một ngày|$5 ngày}}.
Nếu bạn không phải là người yêu cầu gửi mật khẩu, hoặc nếu bạn đã nhớ ra mật khẩu gốc của mình và không còn muốn đổi nó nữa, bạn có thể bỏ qua bức thư này và tiếp tục sử dụng mật khẩu cũ của bạn.',
'noemail' => 'Thành viên “$1” không đăng ký thư điện tử.',
+'noemailcreate' => 'Bạn cần cung cấp một địa chỉ thư điện tử hợp lệ',
'passwordsent' => 'Mật khẩu mới đã được gửi tới thư điện tử của thành viên “$1”. Xin đăng nhập lại sau khi nhận thư.',
'blocked-mailpassword' => 'Địa chỉ IP của bạn bị cấm không được sửa đổi, do đó cũng không được phép dùng chức năng phục hồi mật khẩu để tránh lạm dụng.',
'eauthentsent' => 'Thư xác nhận đã được gửi. Trước khi dùng chức năng nhận thư, bạn cần thực hiện hướng dẫn trong thư xác nhận, để đảm bảo tài khoản thuộc về bạn.',
@@ -685,9 +731,11 @@ Hãy nhập một địa chỉ có định dạng đúng hoặc bỏ trống ô
'createaccount-text' => 'Ai đó đã tạo một tài khoản với tên $2 tại {{SITENAME}} ($4). Mật khẩu của "$2" là "$3". Bạn nên đăng nhập và đổi mật khẩu ngay bây giờ.
Xin hãy bỏ qua thông báo này nếu tài khoản này không phải do bạn tạo ra.',
+'usernamehasherror' => 'Tên người dùng không thể chứa dấu rào',
'login-throttled' => 'Bạn đã thử quá nhiều mật khẩu của tài khoản này
Xin hãy đợi chốc lát rồi thử lại.',
'loginlanguagelabel' => 'Ngôn ngữ: $1',
+'suspicious-userlogout' => 'Đã bỏ qua yêu cầu đăng xuất bạn, hình như được gửi từ trình duyệt hoặc máy proxy nhớ đệm hư.',
# Password reset dialog
'resetpass' => 'Đổi mật khẩu',
@@ -699,17 +747,13 @@ Xin hãy đợi chốc lát rồi thử lại.',
'retypenew' => 'Gõ lại:',
'resetpass_submit' => 'Chọn mật khẩu và đăng nhập',
'resetpass_success' => 'Đã đổi mật khẩu thành công! Đang đăng nhập…',
-'resetpass_bad_temporary' => 'Mật khẩu tạm sai. Có thể là bạn đã đổi mật khẩu thành công hay đã xin mật khẩu tạm mới.',
'resetpass_forbidden' => 'Không được đổi mật khẩu',
'resetpass-no-info' => 'Bạn phải đăng nhập mới có thể truy cập trực tiếp trang này.',
'resetpass-submit-loggedin' => 'Thay đổi mật khẩu',
+'resetpass-submit-cancel' => 'Hủy bỏ',
'resetpass-wrong-oldpass' => 'Mật khẩu tạm hoặc mật khẩu hiện thời không hợp lệ.
Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.',
'resetpass-temp-password' => 'Mật khẩu tạm:',
-'resetpass-log' => 'Nhật trình tái tạo mật khẩu',
-'resetpass-logtext' => 'Dưới đây là nhật trình ghi lại những thành viên đã được người quản lý tái tạo mật khẩu giúp.',
-'resetpass-logentry' => 'đã thay đổi mật khẩu cho $1',
-'resetpass-comment' => 'Lý do tái tạo mật khẩu:',
# Edit page toolbar
'bold_sample' => 'Chữ đậm',
@@ -784,7 +828,6 @@ Xin hãy ghi kèm tất cả các chi tiết trên vào thư yêu cầu của b
'blockededitsource' => "Các '''sửa đổi của bạn''' ở '''$1''':",
'whitelistedittitle' => 'Cần đăng nhập để sửa trang',
'whitelistedittext' => 'Bạn phải $1 để sửa trang.',
-'confirmedittitle' => 'Cần xác nhận địa chỉ thư điện tử trước khi sửa đổi',
'confirmedittext' => 'Bạn cần phải xác nhận địa chỉ thư điện tử trước khi được sửa đổi trang. Xin hãy đặt và xác nhận địa chỉ thư điện tử của bạn dùng trang [[Special:Preferences|tùy chọn]].',
'nosuchsectiontitle' => 'Không tìm thấy đề mục',
'nosuchsectiontext' => 'Bạn vừa sửa đổi một mục chưa tồn tại.
@@ -805,9 +848,15 @@ Nếu bạn là một thành viên vô danh và cảm thấy rằng có những
'noarticletext' => 'Trang này hiện chưa có nội dung.
Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] trong các trang khác, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm trong các nhật trình liên quan],
hoặc [{{fullurl:{{FULLPAGENAME}}|action=edit}} sửa đổi trang này]</span>.',
+'noarticletext-nopermission' => 'Trang này hiện đang trống.
+Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] tại các trang khác,
+hoặc <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm kiếm các nhật trình liên quan]</span>.',
'userpage-userdoesnotexist' => 'Tài khoản mang tên “$1” chưa được đăng ký. Xin hãy kiểm tra lại nếu bạn muốn tạo/sửa trang này.',
+'userpage-userdoesnotexist-view' => 'Tài khoản “$1” chưa được đăng ký.',
+'blocked-notice-logextract' => 'Người dùng này hiện đang bị cấm sửa đổi. Nhật trình cấm gần nhất được ghi ở dưới để tiện theo dõi:',
'clearyourcache' => "'''Ghi chú&nbsp;– Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.''' '''Mozilla / Firefox / Safari:''' giữ phím ''Shift'' trong khi nhấn ''Reload'' (''Tải lại''), hoặc nhấn tổ hợp ''Ctrl-F5'' hay ''Ctrl-R'' (<span title=\"Command\">⌘</span>''R'' trên Macintosh); '''Konqueror:''' nhấn nút ''Reload'' hoặc nhấn ''F5''; '''Opera:''' xóa bộ nhớ đệm trong ''Tools → Preferences''; '''Internet Explorer:''' giữ phím ''Ctrl'' trong khi nhấn ''Refresh'', hoặc nhấn tổ hợp ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Mẹo:''' Sử dụng nút “Xem thử” để kiểm thử trang CSS/JS của bạn trước khi lưu trang.",
+'usercssyoucanpreview' => "'''Mẹo:''' Sử dụng nút “{{int:showpreview}}” để kiểm thử bản CSS của bạn trước khi lưu trang.",
+'userjsyoucanpreview' => "'''Mẹo:''' Sử dụng nút “{{int:showpreview}}” để kiểm thử bản JS của bạn trước khi lưu trang.",
'usercsspreview' => "'''Hãy nhớ rằng bạn chỉ đang xem thử trang CSS cá nhân của bạn.
Nó chưa được lưu!'''",
'userjspreview' => "'''Nhớ rằng bạn chỉ đang kiểm thử/xem thử trang JavaScript, nó chưa được lưu!'''",
@@ -853,13 +902,16 @@ Bạn phải đảm bảo với chúng tôi rằng chính bạn là người vi
'readonlywarning' => "'''CẢNH BÁO: Cơ sở dữ liệu đã bị khóa để bảo dưỡng, do đó bạn không thể lưu các sửa đổi của mình. Bạn nên cắt-dán đoạn bạn vừa sửa vào một tập tin và lưu nó lại để sửa đổi sau này.'''
Người quản lý khi khóa dữ liệu đã đưa ra lý do: $1",
-'protectedpagewarning' => "'''CẢNH BÁO: Trang này đã bị khóa, chỉ có các thành viên có quyền quản lý mới sửa được.'''",
-'semiprotectedpagewarning' => "'''Ghi chú:''' Trang này đã bị khóa, chỉ cho phép các thành viên đã đăng ký sửa đổi.",
+'protectedpagewarning' => "'''Cảnh báo: Trang này đã bị khóa và chỉ có các thành viên có quyền quản lý mới có thể sửa được.'''
+Thông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
+'semiprotectedpagewarning' => "'''Lưu ý:''' Trang này đã bị khóa và chỉ có các thành viên đã đăng ký mới có thể sửa đổi được.
+Thông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
'cascadeprotectedwarning' => "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có quyền quản lý mới có thể sửa đổi được, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
-'titleprotectedwarning' => "'''CẢNH BÁO: Trang này đã bị khóa vì vậy bạn cần một số [[Special:ListGroupRights|quyền]] mới có thể tạo trang.'''",
-'templatesused' => 'Các tiêu bản dùng trong trang này',
-'templatesusedpreview' => 'Các tiêu bản sẽ được dùng trong trang này:',
-'templatesusedsection' => 'Các tiêu bản sẽ được dùng trong phần này:',
+'titleprotectedwarning' => "'''Cảnh báo: Trang này đã bị khóa và bạn phải có một số [[Special:ListGroupRights|quyền nhất định]] mới có thể tạo trang.'''
+Thông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
+'templatesused' => '{{PLURAL:$1|Bản mẫu|Các bản mẫu}} dùng trong trang này:',
+'templatesusedpreview' => '{{PLURAL:$1|Bản mẫu|Các bản mẫu}} sẽ được dùng trong trang này:',
+'templatesusedsection' => '{{PLURAL:$1|Bản mẫu|Các bản mẫu}} dùng trong phần này:',
'template-protected' => '(khóa hoàn toàn)',
'template-semiprotected' => '(bị hạn chế sửa đổi)',
'hiddencategories' => 'Trang này thuộc về {{PLURAL:$1|1 thể loại ẩn|$1 thể loại ẩn}}:',
@@ -868,16 +920,18 @@ Người quản lý khi khóa dữ liệu đã đưa ra lý do: $1",
'nocreatetext' => '{{SITENAME}} đã hạn chế khả năng tạo trang mới.
Bạn có thể quay trở lại và sửa đổi các trang đã có, hoặc [[Special:UserLogin|đăng nhập hoặc tạo tài khoản]].',
'nocreate-loggedin' => 'Bạn không có quyền tạo trang mới.',
+'sectioneditnotsupported-title' => 'Không hỗ trợ sửa đổi đề mục',
+'sectioneditnotsupported-text' => 'Trang sửa đổi này không hỗ trợ sửa đổi đề mục.',
'permissionserrors' => 'Không có quyền thực hiện',
'permissionserrorstext' => 'Bạn không có quyền thực hiện thao tác đó, vì {{PLURAL:$1|lý do|lý do}}:',
'permissionserrorstext-withaction' => 'Bạn không quyền $2, với {{PLURAL:$1|lý do|lý do}} sau:',
-'recreate-deleted-warn' => "'''Cảnh báo: Bạn vừa tạo lại một trang từng bị xóa trước đây.'''
+'recreate-moveddeleted-warn' => "'''Cảnh báo: Bạn sắp tạo lại một trang từng bị xóa trước đây.'''
Bạn nên cân nhắc trong việc tiếp tục soạn thảo trang này.
-Nhật trình xóa của trang được đưa ra dưới đây để tiện theo dõi:",
-'deleted-notice' => 'Trang này đã bị xóa.
-Nhật trình xóa trang được ghi dưới đây để tiện theo dõi.',
-'deletelog-fulllog' => 'Xem nhật trình đầy đủ',
+Các nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi:",
+'moveddeleted-notice' => 'Trang này đã bị xóa.
+Các nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.',
+'log-fulllog' => 'Xem nhật trình đầy đủ',
'edit-hook-aborted' => 'Một phần bổ trợ phần mềm đã bỏ qua sửa đổi này.
Không có lý do nào được đưa ra.',
'edit-gone-missing' => 'Không thể cập nhật trang.
@@ -900,6 +954,7 @@ Những giá trị này sẽ bị bỏ đi.',
'post-expand-template-argument-category' => 'Những trang có chứa những giá trị bản mẫu bị loại bỏ',
'parser-template-loop-warning' => 'Phát hiện bản mẫu lặp vòng: [[$1]]',
'parser-template-recursion-depth-warning' => 'Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)',
+'language-converter-depth-warning' => 'Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)',
# "Undo" feature
'undo-success' => 'Các sửa đổi có thể được lùi lại. Xin hãy kiểm tra phần so sánh bên dưới để xác nhận lại những gì bạn muốn làm, sau đó lưu thay đổi ở dưới để hoàn tất việc lùi lại sửa đổi.',
@@ -919,7 +974,7 @@ Lý do được $3 đưa ra là ''$2''",
'currentrev' => 'Bản hiện tại',
'currentrev-asof' => 'Bản hiện tại lúc $1',
'revisionasof' => 'Phiên bản lúc $1',
-'revision-info' => 'Phiên bản vào lúc $1 do $2 sửa đổi', # Additionally available: $3: revision id
+'revision-info' => 'Phiên bản vào lúc $1 do $2 sửa đổi',
'previousrevision' => '← Phiên bản cũ',
'nextrevision' => 'Phiên bản mới →',
'currentrevisionlink' => 'xem phiên bản hiện hành',
@@ -932,7 +987,7 @@ Lý do được $3 đưa ra là ''$2''",
Chú giải: (hiện) = khác với phiên bản hiện hành,
(trước) = khác với phiên bản trước, n = sửa đổi nhỏ.',
'history-fieldset-title' => 'Tìm trong lịch sử',
-'deletedrev' => '[đã xóa]',
+'history-show-deleted' => 'Chỉ bị xóa',
'histfirst' => 'Cũ nhất',
'histlast' => 'Mới nhất',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
@@ -941,70 +996,113 @@ Chú giải: (hiện) = khác với phiên bản hiện hành,
# Revision feed
'history-feed-title' => 'Lịch sử thay đổi',
'history-feed-description' => 'Lịch sử thay đổi của trang này ở wiki',
-'history-feed-item-nocomment' => '$1 vào lúc $2', # user at time
+'history-feed-item-nocomment' => '$1 vào lúc $2',
'history-feed-empty' => 'Trang bạn yêu cầu không tồn tại. Có thể là nó đã bị xóa khỏi wiki hay được đổi tên. Hãy [[Special:Search|tìm kiếm trong wiki]] về các trang mới có liên quan.',
# Revision deletion
-'rev-deleted-comment' => '(bàn luận đã bị xóa)',
-'rev-deleted-user' => '(tên người dùng đã bị xóa)',
-'rev-deleted-event' => '(tác vụ nhật trình đã bị xóa)',
-'rev-deleted-text-permission' => "Phiên bản này đã bị '''xóa'''.
-Có thể có thêm chi tiết tại [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
-'rev-deleted-text-view' => "Phiên bản này đã bị '''xóa'''.
-Vì là người quản lý bạn vẫn có thể xem nó;có thể có thêm chi tiết tại [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
-'rev-deleted-no-diff' => "Bạn không thể xem khác biệt giữa các phiên bản vì một phiên bản đã bị '''xóa'''.
-Bạn có thể xem thêm chi tiết trong [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
-'rev-deleted-unhide-diff' => "Một trong những phiên bản của khác biệt này đã bị '''xóa'''.
-Bạn có thể xem thêm chi tiết tại [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].
+'rev-deleted-comment' => '(bàn luận đã bị xóa)',
+'rev-deleted-user' => '(tên người dùng đã bị xóa)',
+'rev-deleted-event' => '(tác vụ nhật trình đã bị xóa)',
+'rev-deleted-user-contribs' => '[tên người dùng hay địa chỉ IP bị ẩn – sửa đổi được ẩn khỏi danh sách đóng góp]',
+'rev-deleted-text-permission' => "Phiên bản này đã bị '''xóa'''.
+Có thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
+'rev-deleted-text-unhide' => "Phiên bản này đã bị '''xóa'''.
+Có thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].
+Vì là người quản lý, bạn vẫn có thể [$1 xem phiên bản này] nếu muốn.",
+'rev-suppressed-text-unhide' => "Phiên bản này đã bị '''giấu'''.
+Có thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình giấu].
+Vì là người quản lý, bạn vẫn có thể [$1 xem phiên bản này] nếu muốn.",
+'rev-deleted-text-view' => "Phiên bản này đã bị '''xóa'''.
+Vì là người quản lý bạn vẫn có thể xem nó; có thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
+'rev-suppressed-text-view' => "Phiên bản này đã bị '''giấu'''.
+Vì là người quản lý bạn vẫn có thể xem nó; có thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình giấu].",
+'rev-deleted-no-diff' => "Bạn không thể xem khác biệt giữa các phiên bản vì một phiên bản đã bị '''xóa'''.
+Bạn có thể xem thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
+'rev-suppressed-no-diff' => "Bạn không thể xem khác biệt vì một trong hai phiên bản đã bị '''xóa'''.",
+'rev-deleted-unhide-diff' => "Một trong những phiên bản của khác biệt này đã bị '''xóa'''.
+Bạn có thể xem thêm chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].
Vì là người quản lý, bạn vẫn có thể [$1 xem khác biệt này] nếu muốn.",
-'rev-delundel' => 'hiện/ẩn',
-'revisiondelete' => 'Xóa hay phục hồi phiên bản',
-'revdelete-nooldid-title' => 'Chưa chọn phiên bản',
-'revdelete-nooldid-text' => 'Có thể bạn chưa xác định (các) phiên bản đích để thực hiện tác vụ,
+'rev-suppressed-unhide-diff' => "Một trong các phiên bản trong lần so sánh này đã được '''ẩn giấu'''.
+Bạn có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình ẩn giấu].
+Là người quản lý bạn vẫn có thể [$1 so sánh khác biệt] nếu bạn muốn.",
+'rev-deleted-diff-view' => "Một trong những phiên bản trong khác biệt này đã bị '''xóa'''.
+Là người quản lý bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
+'rev-suppressed-diff-view' => "Trong trong những phiên bản trong khác biệt này đã bị '''ẩn giấu'''.
+Là người quản lý bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình ẩn giấu].",
+'rev-delundel' => 'hiện/ẩn',
+'rev-showdeleted' => 'hiện',
+'revisiondelete' => 'Xóa hay phục hồi phiên bản',
+'revdelete-nooldid-title' => 'Chưa chọn phiên bản',
+'revdelete-nooldid-text' => 'Có thể bạn chưa xác định (các) phiên bản đích để thực hiện tác vụ,
hoặc phiên bản đích không tồn tại,
hoặc bạn đang tìm cách ẩn phiên bản hiện tại.',
-'revdelete-nologtype-title' => 'Chưa cung cấp kiểu nhật trình',
-'revdelete-nologtype-text' => 'Bạn chưa chỉ định một kiểu nhật trình mà tác vụ này sẽ ghi vào.',
-'revdelete-toomanytargets-title' => 'Có quá nhiều mục tiêu',
-'revdelete-toomanytargets-text' => 'Bạn đã chỉ định quá nhiều mục tiêu cho tác vụ này.',
-'revdelete-nologid-title' => 'Mục nhật trình không hợp lệ',
-'revdelete-nologid-text' => 'Bạn chưa chỉ định sự kiện nhật trình mục tiêu mà chức năng này ghi vào hoặc mục nhật trình chỉ định không tồn tại.',
-'revdelete-selected' => "'''{{PLURAL:$2|Phiên bản|Các phiên bản}} được chọn của [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Nhật trình đã chọn|Các nhật trình đã chọn}}:'''",
-'revdelete-text' => "'''Các phiên bản và sự kiện bị xóa sẽ vẫn xuất hiện trong lịch sử trang và nhật trình, nhưng mọi người sẽ không xem được một số phần của các nội dung đó.'''
-
-Các quản lý khác ở {{SITENAME}} vẫn có thể truy nhập vào nội dung ẩn và phục hồi lại bằng cách dùng giao diện này, trừ trường hợp thiết lập thêm một số hạn chế.
-Xin hãy xác nhận rằng bạn thực sự muốn làm điều này, hiểu được hệ quả của nó, và làm theo đúng [[{{MediaWiki:Policy-url}}|quy định]].",
-'revdelete-suppress-text' => "Việc ẩn giấu '''chỉ''' nên dùng trong các trường hợp sau:
+'revdelete-nologtype-title' => 'Chưa cung cấp kiểu nhật trình',
+'revdelete-nologtype-text' => 'Bạn chưa chỉ định một kiểu nhật trình mà tác vụ này sẽ ghi vào.',
+'revdelete-nologid-title' => 'Mục nhật trình không hợp lệ',
+'revdelete-nologid-text' => 'Bạn chưa chỉ định sự kiện nhật trình mục tiêu mà chức năng này ghi vào hoặc mục nhật trình chỉ định không tồn tại.',
+'revdelete-no-file' => 'Tập tin chỉ định không tồn tại.',
+'revdelete-show-file-confirm' => 'Bạn có chắc muốn xem phiên bản đã bị xóa của tập tin “<nowiki>$1</nowiki>” từ ngày $2 vào lúc $3?',
+'revdelete-show-file-submit' => 'Có',
+'revdelete-selected' => "'''{{PLURAL:$2|Phiên bản|Các phiên bản}} được chọn của [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Nhật trình đã chọn|Các nhật trình đã chọn}}:'''",
+'revdelete-text' => "'''Các phiên bản và sự kiện bị xóa sẽ vẫn xuất hiện trong lịch sử trang và nhật trình, nhưng mọi người sẽ không xem được một số phần của các nội dung đó.'''
+Các quản lý khác ở {{SITENAME}} vẫn có thể truy nhập vào nội dung ẩn và phục hồi lại bằng cách dùng giao diện này, trừ trường hợp thiết lập thêm một số hạn chế.",
+'revdelete-confirm' => 'Xin hãy xác nhận rằng bạn có ý định xóa, nhận biết tầm quan trọng của việc này, và việc xóa tuân theo [[{{MediaWiki:Policy-url}}|quy định]].',
+'revdelete-suppress-text' => "Việc ẩn giấu '''chỉ''' nên dùng trong các trường hợp sau:
* Thông tin cá nhân không thích hợp
*: ''địa chỉ nhà và số điện thoại, số an sinh xã hội, v.v.''",
-'revdelete-legend' => 'Thiết lập hạn chế khả kiến',
-'revdelete-hide-text' => 'Ẩn nội dung phiên bản',
-'revdelete-hide-name' => 'Ẩn tác vụ và đích của tác vụ',
-'revdelete-hide-comment' => 'Ẩn tóm lược sửa đổi',
-'revdelete-hide-user' => 'Ẩn tên người dùng hay địa chỉ IP của người viết trang',
-'revdelete-hide-restricted' => 'Ẩn giấu thông tin khỏi các Quản lý lẫn thành viên khác',
-'revdelete-suppress' => 'Che dữ liệu đối với người quản lý cũng như các thành viên khác',
-'revdelete-hide-image' => 'Ẩn nội dung tập tin',
-'revdelete-unsuppress' => 'Bỏ các hạn chế trên các phiên bản được phục hồi',
-'revdelete-log' => 'Lý do:',
-'revdelete-submit' => 'Áp dụng vào phiên bản được chọn',
-'revdelete-logentry' => 'đã thay đổi khả năng nhìn thấy phiên bản của [[$1]]',
-'logdelete-logentry' => 'đã thay đổi khả năng nhìn thấy sự kiện của [[$1]]',
-'revdelete-success' => "'''Đã cập nhật thành công độ khả kiến của phiên bản.'''",
-'logdelete-success' => "'''Khả năng nhìn thấy của sự kiện đã được thiết lập thành công.'''",
-'revdel-restore' => 'Thay đổi mức khả kiến',
-'pagehist' => 'Lịch sử trang',
-'deletedhist' => 'Lịch sử đã xóa',
-'revdelete-content' => 'nội dung',
-'revdelete-summary' => 'tóm lược sửa đổi',
-'revdelete-uname' => 'tên người dùng',
-'revdelete-restricted' => 'áp dụng hạn chế này cho sysop',
-'revdelete-unrestricted' => 'gỡ bỏ hạn chế này cho sysop',
-'revdelete-hid' => 'đã ẩn $1',
-'revdelete-unhid' => 'đã hiện $1',
-'revdelete-log-message' => '$2 {{PLURAL:$2|phiên bản|phiên bản}} được $1',
-'logdelete-log-message' => '$1 của $2 {{PLURAL:$2|sự kiện|sự kiện}}',
+'revdelete-legend' => 'Thiết lập hạn chế khả kiến',
+'revdelete-hide-text' => 'Ẩn nội dung phiên bản',
+'revdelete-hide-image' => 'Ẩn nội dung tập tin',
+'revdelete-hide-name' => 'Ẩn tác vụ và đích của tác vụ',
+'revdelete-hide-comment' => 'Ẩn tóm lược sửa đổi',
+'revdelete-hide-user' => 'Ẩn tên người dùng hay địa chỉ IP của người viết trang',
+'revdelete-hide-restricted' => 'Ẩn giấu thông tin khỏi các Quản lý lẫn thành viên khác',
+'revdelete-radio-same' => '(không đổi)',
+'revdelete-radio-set' => 'Có',
+'revdelete-radio-unset' => 'Không',
+'revdelete-suppress' => 'Che dữ liệu đối với người quản lý cũng như các thành viên khác',
+'revdelete-unsuppress' => 'Bỏ các hạn chế trên các phiên bản được phục hồi',
+'revdelete-log' => 'Lý do:',
+'revdelete-submit' => 'Áp dụng vào {{PLURAL:$1|phiên bản|các phiên bản}} được chọn',
+'revdelete-logentry' => 'đã thay đổi khả năng nhìn thấy phiên bản của [[$1]]',
+'logdelete-logentry' => 'đã thay đổi khả năng nhìn thấy sự kiện của [[$1]]',
+'revdelete-success' => "'''Đã cập nhật thành công độ khả kiến của phiên bản.'''",
+'revdelete-failure' => "'''Không thể cập nhật khả năng hiển thị của phiên bản:'''
+$1",
+'logdelete-success' => "'''Khả năng nhìn thấy của sự kiện đã được thiết lập thành công.'''",
+'logdelete-failure' => "'''Không thể thiết lập khả năng hiện thị của nhật trình:'''
+$1",
+'revdel-restore' => 'Thay đổi mức khả kiến',
+'pagehist' => 'Lịch sử trang',
+'deletedhist' => 'Lịch sử đã xóa',
+'revdelete-content' => 'nội dung',
+'revdelete-summary' => 'tóm lược sửa đổi',
+'revdelete-uname' => 'tên người dùng',
+'revdelete-restricted' => 'áp dụng hạn chế này cho sysop',
+'revdelete-unrestricted' => 'gỡ bỏ hạn chế này cho sysop',
+'revdelete-hid' => 'đã ẩn $1',
+'revdelete-unhid' => 'đã hiện $1',
+'revdelete-log-message' => '$2 {{PLURAL:$2|phiên bản|phiên bản}} được $1',
+'logdelete-log-message' => '$1 của $2 {{PLURAL:$2|sự kiện|sự kiện}}',
+'revdelete-hide-current' => 'Xảy ra lỗi khi ẩn mục ghi lúc $2, $1: đây là phiên bản hiện tại.
+Nó không ẩn đi được.',
+'revdelete-show-no-access' => 'Có lỗi khi hiện mục ghi lúc $2, $1: mục này đã được đánh dấu “hạn chế”.
+Bạn không có đủ quyền truy cập nó.',
+'revdelete-modify-no-access' => 'Có lỗi khi sửa mục vào lúc $2, $1: mục này đã được đánh dấu “hạn chế”.
+Bạn không có đủ quyền để truy cập nó.',
+'revdelete-modify-missing' => 'Có lỗi khi sửa mục có mã số $1: không tìm thấy trong cơ sở dữ liệu!',
+'revdelete-no-change' => "'''Cảnh báo:''' mục được ghi vào lúc $2, $1 đã được yêu cầu thiết lập hiển thị.",
+'revdelete-concurrent-change' => 'Có lỗi khi sửa mục ghi vào lúc $2, $1: trạng thái của nó dường như đã được ai khác sửa đổi trong khi bạn đang sửa.
+Xin hãy kiểm tra nhật trình.',
+'revdelete-only-restricted' => 'Có lỗi khi ẩn mục vào $2, $1: nếu ẩn mục để cho bảo quản viên khỏi nhìn thấy được thì cũng cần chọn một trong những tùy chọn ẩn khác.',
+'revdelete-reason-dropdown' => '*Các lý do thường gặp khi xóa
+** Vi phạm bản quyền
+** Thông tin cá nhân không thích hợp',
+'revdelete-otherreason' => 'Lý do khác/bổ sung:',
+'revdelete-reasonotherlist' => 'Lý do khác',
+'revdelete-edit-reasonlist' => 'Sửa lý do xóa',
+'revdelete-offender' => 'Tác giả phiên bản:',
# Suppression log
'suppressionlog' => 'Nhật trình ẩn giấu',
@@ -1041,67 +1139,13 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'mergelogpagetext' => 'Dưới đây là danh sách các thao tác trộn mới nhất của lịch sử một trang vào trang khác.',
# Diffs
-'history-title' => 'Lịch sử sửa đổi của “$1”',
-'difference' => '(Khác biệt giữa các bản)',
-'lineno' => 'Dòng $1:',
-'compareselectedversions' => 'So sánh các bản đã chọn',
-'visualcomparison' => 'So sánh hình dạng',
-'wikicodecomparison' => 'So sánh mã wiki',
-'editundo' => 'lùi sửa',
-'diff-multi' => '(Không hiển thị {{PLURAL:$1|một|$1}} phiên bản ở giữa)',
-'diff-movedto' => 'chuyển qua $1',
-'diff-styleadded' => 'đã thêm kiểu $1',
-'diff-added' => 'đã thêm $1',
-'diff-changedto' => 'đã đổi thành $1',
-'diff-movedoutof' => 'tách ra khỏi $1',
-'diff-styleremoved' => 'đã xóa kiểu $1',
-'diff-removed' => 'đã xóa $1',
-'diff-changedfrom' => 'đã đổi từ $1',
-'diff-src' => 'nguồn',
-'diff-withdestination' => 'tới $1',
-'diff-with' => '&#32;với $1 $2',
-'diff-with-final' => '&#32;và $1 $2',
-'diff-width' => 'rộng',
-'diff-height' => 'cao',
-'diff-p' => "'''đoạn văn'''",
-'diff-blockquote' => "'''đoạn trích dẫn'''",
-'diff-h1' => "'''mục cấp 1'''",
-'diff-h2' => "'''mục cấp 2'''",
-'diff-h3' => "'''mục cấp 3'''",
-'diff-h4' => "'''mục cấp 4'''",
-'diff-h5' => "'''mục cấp 5'''",
-'diff-pre' => "'''khối định dạng trước'''",
-'diff-div' => "'''đoạn'''",
-'diff-ul' => "'''danh sách hoa thị'''",
-'diff-ol' => "'''danh sách số'''",
-'diff-li' => "'''khoản trong danh sách'''",
-'diff-table' => "'''bảng'''",
-'diff-tbody' => "'''thân bảng'''",
-'diff-tr' => "'''hàng'''",
-'diff-td' => "'''ô'''",
-'diff-th' => "'''tiêu đề bảng'''",
-'diff-br' => "'''dòng mới'''",
-'diff-hr' => "'''đường gạch ngang'''",
-'diff-code' => "'''khối mã lập trình'''",
-'diff-dl' => "'''danh sách định nghĩa'''",
-'diff-dt' => "'''thuật ngữ trong danh sách'''",
-'diff-dd' => "'''định nghĩa trong danh sách'''",
-'diff-input' => "'''ô dữ liệu'''",
-'diff-form' => "'''biểu mẫu'''",
-'diff-img' => "'''hình'''",
-'diff-span' => "'''khoảng'''",
-'diff-a' => "'''liên kết'''",
-'diff-i' => "'''chữ xiên'''",
-'diff-b' => "'''chữ đậm'''",
-'diff-strong' => "'''chữ nhấn rất mạnh'''",
-'diff-em' => "'''chữ nhấn mạnh'''",
-'diff-font' => "'''phông chữ'''",
-'diff-big' => "'''chữ lớn'''",
-'diff-del' => "'''văn bản xóa'''",
-'diff-tt' => "'''chữ đơn cách'''",
-'diff-sub' => "'''chữ viết lên trên'''",
-'diff-sup' => "'''chữ viết xuống dưới'''",
-'diff-strike' => "'''chữ gạch ngang'''",
+'history-title' => 'Lịch sử sửa đổi của “$1”',
+'difference' => '(Khác biệt giữa các bản)',
+'lineno' => 'Dòng $1:',
+'compareselectedversions' => 'So sánh các bản đã chọn',
+'showhideselectedversions' => 'Hiện/ẩn các phiên bản được chọn',
+'editundo' => 'lùi sửa',
+'diff-multi' => '(Không hiển thị {{PLURAL:$1|một|$1}} phiên bản ở giữa)',
# Search results
'searchresults' => 'Kết quả tìm kiếm',
@@ -1109,28 +1153,25 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'searchresulttext' => 'Để biết thêm chi tiết về tìm kiếm tại {{SITENAME}}, xem [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "Bạn đã tìm '''[[:$1]]''' ([[Special:Prefixindex/$1|tất cả các trang bắt đầu bằng “$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tất cả các trang liên kết đến “$1”]])",
'searchsubtitleinvalid' => "Tìm '''$1'''",
-'noexactmatch' => "'''Trang “$1” không tồn tại.''' Bạn có thể [[:$1|tạo trang này]].",
-'noexactmatch-nocreate' => "'''Không có trang nào có tên “$1”.'''",
'toomanymatches' => 'Có quá nhiều kết quả được trả về, xin hãy thử câu tìm kiếm khác',
'titlematches' => 'Đề mục tương tự',
'notitlematches' => 'Không có tên trang nào có nội dung tương tự',
'textmatches' => 'Câu chữ tương tự',
'notextmatches' => 'Không tìm thấy nội dung trang',
-'prevn' => '$1 trước',
-'nextn' => '$1 sau',
+'prevn' => '{{PLURAL:$1|$1}} mục trước',
+'nextn' => '{{PLURAL:$1|$1}} mục sau',
'prevn-title' => '$1 {{PLURAL:$1|kết quả|kết quả}} trước',
'nextn-title' => '$1 {{PLURAL:$1|kết quả|kết quả}} sau',
'shown-title' => 'Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang',
-'viewprevnext' => 'Xem ($1) ($2) ($3).',
+'viewprevnext' => 'Xem ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Tùy chọn tìm kiếm',
'searchmenu-exists' => "* Trang '''[[$1]]'''",
'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!'''",
'searchhelp-url' => 'Help:Nội dung',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Duyệt các trang với tiền tố này]]',
-'searchprofile-articles' => 'Trang có nội dung',
-'searchprofile-articles-and-proj' => 'Trang có nội dung & trang dự án',
-'searchprofile-project' => 'Trang dự án',
-'searchprofile-images' => 'Tập tin',
+'searchprofile-articles' => 'Trang nội dung',
+'searchprofile-project' => 'Trang trợ giúp và trang dự án',
+'searchprofile-images' => 'Đa phương tiện',
'searchprofile-everything' => 'Tất cả',
'searchprofile-advanced' => 'Nâng cao',
'searchprofile-articles-tooltip' => 'Tìm trong $1',
@@ -1138,8 +1179,6 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'searchprofile-images-tooltip' => 'Tìm tập tin',
'searchprofile-everything-tooltip' => 'Tìm tất cả nội dung (gồm cả các trang thảo luận)',
'searchprofile-advanced-tooltip' => 'Tìm trong không gian tên tùy chọn',
-'prefs-search-nsdefault' => 'Tìm sử dụng giá trị mặc định:',
-'prefs-search-nscustom' => 'Tìm không gian tên tùy chọn:',
'search-result-size' => '$1 ({{PLURAL:$2|1 từ|$2 từ}})',
'search-result-score' => 'Độ phù hợp: $1%',
'search-redirect' => '(đổi hướng $1)',
@@ -1152,11 +1191,12 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'search-mwsuggest-disabled' => 'không có gợi ý',
'search-relatedarticle' => 'Liên quan',
'mwsuggest-disable' => 'Tắt gợi ý bằng AJAX',
+'searcheverything-enable' => 'Tìm trong tất cả không gian tên',
'searchrelated' => 'có liên quan',
'searchall' => 'tất cả',
'showingresults' => "Dưới đây là {{PLURAL:$1|'''1'''|'''$1'''}} kết quả bắt đầu từ #'''$2'''.",
'showingresultsnum' => "Dưới đây là {{PLURAL:$3|'''1'''|'''$3'''}} kết quả bắt đầu từ #'''$2'''.",
-'showingresultstotal' => "Dưới đây là {{PLURAL:$4|kết quả thứ '''$1''' trong tổng số '''$3'''|những kết quả từ '''$1–$2''' trong tổng số '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|Kết quả thứ '''$1''' trong tổng số '''$3''' kết quả|Kết quả từ '''$1 - $2''' trong tổng số '''$3''' kết quả}} cho '''$4'''",
'nonefound' => "'''Chú ý''': Theo mặc định chỉ tìm kiếm một số không gian tên. Hãy thử bắt đầu từ khóa bằng ''all:'' để tìm mọi nội dung (kể cả trang thảo luận, bản mẫu, v.v.), hoặc bắt đầu bằng không gian tên mong muốn (ví dụ ''Thảo luận:'', ''Bản mẫu:'', ''Thể loại:''…).",
'search-nonefound' => 'Không có kết quả nào khớp với câu truy vấn.',
'powersearch' => 'Tìm kiếm nâng cao',
@@ -1164,111 +1204,152 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'powersearch-ns' => 'Tìm trong không gian tên:',
'powersearch-redir' => 'Liệt kê cả trang đổi hướng',
'powersearch-field' => 'Tìm',
+'powersearch-togglelabel' => 'Chọn:',
+'powersearch-toggleall' => 'Tất cả',
+'powersearch-togglenone' => 'Không',
'search-external' => 'Tìm kiếm từ bên ngoài',
'searchdisabled' => 'Chức năng tìm kiếm tại {{SITENAME}} đã bị tắt. Bạn có tìm kiếm bằng Google trong thời gian này. Chú ý rằng các chỉ mục từ {{SITENAME}} của chúng có thể đã lỗi thời.',
+# Quickbar
+'qbsettings' => 'Thanh công cụ',
+'qbsettings-none' => 'Không có',
+'qbsettings-fixedleft' => 'Cố định trái',
+'qbsettings-fixedright' => 'Cố định phải',
+'qbsettings-floatingleft' => 'Nổi bên trái',
+'qbsettings-floatingright' => 'Nổi bên phải',
+
# Preferences page
-'preferences' => 'Tùy chọn',
-'mypreferences' => 'Tùy chọn',
-'prefs-edits' => 'Số lần sửa đổi:',
-'prefsnologin' => 'Chưa đăng nhập',
-'prefsnologintext' => 'Bạn phải <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} đăng nhập]</span> để thiết lập tùy chọn cá nhân.',
-'prefsreset' => 'Các tùy chọn cá nhân đã được mặc định lại.',
-'qbsettings' => 'Thanh công cụ',
-'qbsettings-none' => 'Không có',
-'qbsettings-fixedleft' => 'Cố định trái',
-'qbsettings-fixedright' => 'Cố định phải',
-'qbsettings-floatingleft' => 'Nổi bên trái',
-'qbsettings-floatingright' => 'Nổi bên phải',
-'changepassword' => 'Đổi mật khẩu',
-'skin' => 'Hình dạng',
-'skin-preview' => 'Xem thử',
-'math' => 'Công thức toán',
-'dateformat' => 'Định dạng ngày',
-'datedefault' => 'Không quan tâm',
-'datetime' => 'Ngày tháng',
-'math_failure' => 'Không thể phân tích cú pháp',
-'math_unknown_error' => 'lỗi lạ',
-'math_unknown_function' => 'hàm lạ',
-'math_lexing_error' => 'lỗi chính tả',
-'math_syntax_error' => 'lỗi cú pháp',
-'math_image_error' => 'Không chuyển sang định dạng PNG được; xin kiểm tra lại cài đặt latex, dvips, gs và convert',
-'math_bad_tmpdir' => 'Không tạo mới hay viết vào thư mục toán tạm thời được',
-'math_bad_output' => 'Không tạo mới hay viết vào thư mục kết quả được',
-'math_notexvc' => 'Không thấy hàm thực thi texvc; xin xem math/README để biết cách cấu hình.',
-'prefs-personal' => 'Thông tin cá nhân',
-'prefs-rc' => 'Thay đổi gần đây',
-'prefs-watchlist' => 'Theo dõi',
-'prefs-watchlist-days' => 'Số ngày hiển thị trong danh sách theo dõi:',
-'prefs-watchlist-days-max' => '(tối đa 7 ngày)',
-'prefs-watchlist-edits' => 'Số lần sửa đổi tối đa trong danh sách theo dõi mở rộng:',
-'prefs-watchlist-edits-max' => '(con số tối đa: 1000)',
-'prefs-misc' => 'Linh tinh',
-'prefs-resetpass' => 'Thay đổi mật khẩu',
-'saveprefs' => 'Lưu tùy chọn',
-'resetprefs' => 'Mặc định lại lựa chọn',
-'restoreprefs' => 'Mặc định lại toàn bộ tùy chọn',
-'textboxsize' => 'Sửa đổi',
-'prefs-edit-boxsize' => 'Kích thước cửa sổ soạn thảo.',
-'rows' => 'Số hàng:',
-'columns' => 'Số cột:',
-'searchresultshead' => 'Tìm kiếm',
-'resultsperpage' => 'Số kết quả mỗi trang:',
-'contextlines' => 'Số hàng trong trang dùng để tìm ra kết quả:',
-'contextchars' => 'Số chữ trong một hàng kết quả:',
-'stub-threshold' => 'Định dạng <a href="#" class="stub">liên kết đến sơ khai</a> cho các trang ngắn hơn (byte):',
-'recentchangesdays' => 'Số ngày hiển thị trong thay đổi gần đây:',
-'recentchangesdays-max' => '(tối đa $1 {{PLURAL:$1|ngày|ngày}})',
-'recentchangescount' => 'Số sửa đổi hiển thị trong trang thay đổi gần đây, lịch sử của trang và nhật trình, theo mặc định là:',
-'savedprefs' => 'Đã lưu các tùy chọn cá nhân.',
-'timezonelegend' => 'Múi giờ:',
-'timezonetext' => '¹Số giờ chênh lệch giữa giờ địa phương của bạn với giờ máy chủ (UTC)',
-'localtime' => 'Giờ hiện tại:',
-'timezoneselect' => 'Múi giờ:',
-'timezoneuseserverdefault' => 'Sử dụng giờ mặc định của máy chủ',
-'timezoneuseoffset' => 'Khác (cần ghi số giờ chênh lệch)',
-'timezoneoffset' => 'Chênh giờ¹:',
-'servertime' => 'Giờ máy chủ:',
-'guesstimezone' => 'Dùng giờ của trình duyệt',
-'timezoneregion-africa' => 'Châu Phi',
-'timezoneregion-america' => 'Châu Mỹ',
-'timezoneregion-antarctica' => 'Châu Nam cực',
-'timezoneregion-arctic' => 'Bắc cực',
-'timezoneregion-asia' => 'Châu Á',
-'timezoneregion-atlantic' => 'Đại Tây Dương',
-'timezoneregion-australia' => 'Châu Úc',
-'timezoneregion-europe' => 'Châu Âu',
-'timezoneregion-indian' => 'Ấn Độ Dương',
-'timezoneregion-pacific' => 'Thái Bình Dương',
-'allowemail' => 'Nhận thư điện tử từ các thành viên khác',
-'prefs-searchoptions' => 'Tìm kiếm',
-'prefs-namespaces' => 'Không gian tên',
-'defaultns' => 'Mặc định tìm kiếm trong không gian tên:',
-'default' => 'mặc định',
-'files' => 'Tập tin',
-'prefs-custom-css' => 'sửa CSS',
-'prefs-custom-js' => 'sửa JS',
+'preferences' => 'Tùy chọn',
+'mypreferences' => 'Tùy chọn',
+'prefs-edits' => 'Số lần sửa đổi:',
+'prefsnologin' => 'Chưa đăng nhập',
+'prefsnologintext' => 'Bạn phải <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} đăng nhập]</span> để thiết lập tùy chọn cá nhân.',
+'changepassword' => 'Đổi mật khẩu',
+'prefs-skin' => 'Hình dạng',
+'skin-preview' => 'Xem thử',
+'prefs-math' => 'Công thức toán',
+'datedefault' => 'Không quan tâm',
+'prefs-datetime' => 'Ngày tháng',
+'prefs-personal' => 'Thông tin cá nhân',
+'prefs-rc' => 'Thay đổi gần đây',
+'prefs-watchlist' => 'Theo dõi',
+'prefs-watchlist-days' => 'Số ngày hiển thị trong danh sách theo dõi:',
+'prefs-watchlist-days-max' => '(tối đa 7 ngày)',
+'prefs-watchlist-edits' => 'Số lần sửa đổi tối đa trong danh sách theo dõi mở rộng:',
+'prefs-watchlist-edits-max' => '(con số tối đa: 1000)',
+'prefs-watchlist-token' => 'Số thẻ Danh sách theo dõi:',
+'prefs-misc' => 'Linh tinh',
+'prefs-resetpass' => 'Thay đổi mật khẩu',
+'prefs-email' => 'Tùy chọn thư điện tử',
+'prefs-rendering' => 'Bề ngoài',
+'saveprefs' => 'Lưu tùy chọn',
+'resetprefs' => 'Mặc định lại lựa chọn',
+'restoreprefs' => 'Mặc định lại toàn bộ tùy chọn',
+'prefs-editing' => 'Sửa đổi',
+'prefs-edit-boxsize' => 'Kích thước cửa sổ soạn thảo.',
+'rows' => 'Số hàng:',
+'columns' => 'Số cột:',
+'searchresultshead' => 'Tìm kiếm',
+'resultsperpage' => 'Số kết quả mỗi trang:',
+'contextlines' => 'Số hàng trong trang dùng để tìm ra kết quả:',
+'contextchars' => 'Số chữ trong một hàng kết quả:',
+'stub-threshold' => 'Định dạng <a href="#" class="stub">liên kết đến sơ khai</a> cho các trang ngắn hơn (byte):',
+'recentchangesdays' => 'Số ngày hiển thị trong thay đổi gần đây:',
+'recentchangesdays-max' => '(tối đa $1 {{PLURAL:$1|ngày|ngày}})',
+'recentchangescount' => 'Số sửa đổi hiển thị mặc định:',
+'prefs-help-recentchangescount' => 'Số này bao gồm các thay đổi gần đây, lịch sử trang, và nhật trình.',
+'prefs-help-watchlist-token' => 'Điền vào ô này một khóa bí mật để tạo ra bản tin RSS cho danh sách theo dõi của bạn.
+Bất cứ ai biết được khóa trong ô này cũng có thể đọc được danh sách theo dõi của bạn, vì vậy hãy chọn một giá trị an toàn.
+Đây là giá trị được tạo ngẫu nhiên mà bạn có thể sử dụng: $1',
+'savedprefs' => 'Đã lưu các tùy chọn cá nhân.',
+'timezonelegend' => 'Múi giờ:',
+'localtime' => 'Giờ hiện tại:',
+'timezoneuseserverdefault' => 'Sử dụng giờ mặc định của máy chủ',
+'timezoneuseoffset' => 'Khác (cần ghi số giờ chênh lệch)',
+'timezoneoffset' => 'Chênh giờ¹:',
+'servertime' => 'Giờ máy chủ:',
+'guesstimezone' => 'Dùng giờ của trình duyệt',
+'timezoneregion-africa' => 'Châu Phi',
+'timezoneregion-america' => 'Châu Mỹ',
+'timezoneregion-antarctica' => 'Châu Nam cực',
+'timezoneregion-arctic' => 'Bắc cực',
+'timezoneregion-asia' => 'Châu Á',
+'timezoneregion-atlantic' => 'Đại Tây Dương',
+'timezoneregion-australia' => 'Châu Úc',
+'timezoneregion-europe' => 'Châu Âu',
+'timezoneregion-indian' => 'Ấn Độ Dương',
+'timezoneregion-pacific' => 'Thái Bình Dương',
+'allowemail' => 'Nhận thư điện tử từ các thành viên khác',
+'prefs-searchoptions' => 'Tìm kiếm',
+'prefs-namespaces' => 'Không gian tên',
+'defaultns' => 'Nếu không thì tìm trong không gian sau:',
+'default' => 'mặc định',
+'prefs-files' => 'Tập tin',
+'prefs-custom-css' => 'sửa CSS',
+'prefs-custom-js' => 'sửa JS',
+'prefs-reset-intro' => 'Có thể mặc định lại toàn bộ tùy chọn dùng trang này.
+Không có thể lùi lại tác động này.',
+'prefs-emailconfirm-label' => 'Xác nhận thư điện tử:',
+'prefs-textboxsize' => 'Kích cỡ hộp sửa đổi',
+'youremail' => 'Thư điện tử:',
+'username' => 'Tên người dùng:',
+'uid' => 'Số thứ tự thành viên:',
+'prefs-memberingroups' => 'Thành viên của {{PLURAL:$1|nhóm|nhóm}}:',
+'prefs-registration' => 'Thời điểm đăng ký:',
+'yourrealname' => 'Tên thật:',
+'yourlanguage' => 'Ngôn ngữ:',
+'yourvariant' => 'Ngôn ngữ địa phương:',
+'yournick' => 'Chữ ký:',
+'prefs-help-signature' => 'Các ý kiến tại trang thảo luận nên được ký tên bằng cách gõ "<nowiki>~~~~</nowiki>", nó sẽ được đổi thành chữ ký của bạn cùng với thời điểm thảo luận.',
+'badsig' => 'Chữ ký không hợp lệ; hãy kiểm tra thẻ HTML.',
+'badsiglength' => 'Chữ ký của bạn quá dài.
+Nó không được dài quá $1 {{PLURAL:$1|ký tự|ký tự}}.',
+'yourgender' => 'Giới tính:',
+'gender-unknown' => 'Không chỉ rõ',
+'gender-male' => 'Nam',
+'gender-female' => 'Nữ',
+'prefs-help-gender' => 'Tùy chọn: được phần mềm sử dụng để xác định đúng giới tính.
+Thông tin này là công khai.',
+'email' => 'Thư điện tử',
+'prefs-help-realname' => 'Tên thật là không bắt buộc.
+Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
+'prefs-help-email' => 'Địa chỉ thư điện tử là tùy chọn, nhưng nó giúp chúng tôi gửi cho bạn mật khẩu mới qua thư điện tử nếu bạn quên mật khẩu của mình.
+Bạn cũng có thể lựa chọn cho phép người khác liên lạc với bạn thông qua trang thành_viên hoặc thảo_luận_thành_viên mà không cần để lộ danh tính.',
+'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ e-mail.',
+'prefs-info' => 'Thông tin cơ bản',
+'prefs-i18n' => 'Quốc tế hóa',
+'prefs-signature' => 'Chữ ký',
+'prefs-dateformat' => 'Kiểu ngày tháng',
+'prefs-timeoffset' => 'Chênh giờ',
+'prefs-advancedediting' => 'Tùy chọn nâng cao',
+'prefs-advancedrc' => 'Tùy chọn nâng cao',
+'prefs-advancedrendering' => 'Tùy chọn nâng cao',
+'prefs-advancedsearchoptions' => 'Tùy chọn nâng cao',
+'prefs-advancedwatchlist' => 'Tùy chọn nâng cao',
+'prefs-display' => 'Tùy chọn hiển thị',
+'prefs-diffs' => 'Khác biệt',
# User rights
-'userrights' => 'Quản lý quyền thành viên', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'Quản lý nhóm thành viên',
-'userrights-user-editname' => 'Nhập tên thành viên:',
-'editusergroup' => 'Sửa nhóm thành viên',
-'editinguser' => "Thay đổi quyền hạn của thành viên '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Sửa nhóm thành viên',
-'saveusergroups' => 'Lưu nhóm thành viên',
-'userrights-groupsmember' => 'Thuộc nhóm:',
-'userrights-groups-help' => 'Bạn có thể xếp thành viên này vào nhóm khác:
+'userrights' => 'Quản lý quyền thành viên',
+'userrights-lookup-user' => 'Quản lý nhóm thành viên',
+'userrights-user-editname' => 'Nhập tên thành viên:',
+'editusergroup' => 'Sửa nhóm thành viên',
+'editinguser' => "Thay đổi quyền hạn của thành viên '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Sửa nhóm thành viên',
+'saveusergroups' => 'Lưu nhóm thành viên',
+'userrights-groupsmember' => 'Thuộc nhóm:',
+'userrights-groupsmember-auto' => 'Ngầm thuộc nhóm:',
+'userrights-groups-help' => 'Bạn có thể xếp thành viên này vào nhóm khác:
* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.
* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.
* Dấu * có nghĩa là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.',
-'userrights-reason' => 'Lý do:',
-'userrights-no-interwiki' => 'Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.',
-'userrights-nodatabase' => 'Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.',
-'userrights-nologin' => 'Bạn phải [[Special:UserLogin|đăng nhập]] vào một tài khoản có quyền quản lý để gán quyền cho thành viên.',
-'userrights-notallowed' => 'Tài khoản của bạn không có quyền gán quyền cho thành viên.',
-'userrights-changeable-col' => 'Những nhóm bạn có thể thay đổi',
-'userrights-unchangeable-col' => 'Những nhóm bạn không thể thay đổi',
+'userrights-reason' => 'Lý do:',
+'userrights-no-interwiki' => 'Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.',
+'userrights-nodatabase' => 'Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.',
+'userrights-nologin' => 'Bạn phải [[Special:UserLogin|đăng nhập]] vào một tài khoản có quyền quản lý để gán quyền cho thành viên.',
+'userrights-notallowed' => 'Tài khoản của bạn không có quyền gán quyền cho thành viên.',
+'userrights-changeable-col' => 'Những nhóm bạn có thể thay đổi',
+'userrights-unchangeable-col' => 'Những nhóm bạn không thể thay đổi',
# Groups
'group' => 'Nhóm:',
@@ -1321,6 +1402,7 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'right-bigdelete' => 'Xóa trang có lịch sử lớn',
'right-deleterevision' => 'Xóa và phục hồi phiên bản nào đó của trang',
'right-deletedhistory' => 'Xem phần lịch sử đã xóa, mà không xem nội dung đi kèm',
+'right-deletedtext' => 'Xem văn bản đã xóa và các thay đổi giữa phiên bản đã xóa',
'right-browsearchive' => 'Tìm những trang đã xóa',
'right-undelete' => 'Phục hồi trang',
'right-suppressrevision' => 'Xem lại và phục hồi phiên bản mà Sysop không thấy',
@@ -1334,6 +1416,8 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'right-editprotected' => 'Sửa trang khóa (không bị khóa theo tầng)',
'right-editinterface' => 'Sửa giao diện người dùng',
'right-editusercssjs' => 'Sửa tập tin CSS và JS của người dùng khác',
+'right-editusercss' => 'Sửa tập tin CSS của người dùng khác',
+'right-edituserjs' => 'Sửa tập tin JS của người dùng khác',
'right-rollback' => 'Nhanh chóng lùi tất cả sửa đổi của thành viên cuối cùng sửa đổi tại trang nào đó',
'right-markbotedits' => 'Đánh dấu sửa đổi phục hồi là sửa đổi bot',
'right-noratelimit' => 'Không bị ảnh hưởng bởi mức giới hạn tần suất sử dụng',
@@ -1350,6 +1434,8 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'right-siteadmin' => 'Khóa và mở khóa cơ sở dữ liệu',
'right-reset-passwords' => 'Tái tạo mật khẩu của thành viên khác',
'right-override-export-depth' => 'Xuất trang kèm theo các trang được liên kết đến với độ sâu tối đa là 5',
+'right-versiondetail' => 'Hiện thông tin phiên bản phần mềm mở rộng',
+'right-sendemail' => 'Gửi thư điện tử cho thành viên khác',
# User rights log
'rightslog' => 'Nhật trình cấp quyền thành viên',
@@ -1399,6 +1485,15 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'recentchanges-legend' => 'Tùy chọn thay đổi gần đây',
'recentchangestext' => 'Xem các thay đổi gần đây nhất tại wiki trên trang này.',
'recentchanges-feed-description' => 'Theo dõi các thay đổi gần đây nhất của wiki dùng feed này.',
+'recentchanges-label-legend' => 'Giải thích: $1.',
+'recentchanges-legend-newpage' => '$1 - trang mới',
+'recentchanges-label-newpage' => 'Bản sửa này tạo ra trang mới',
+'recentchanges-legend-minor' => '$1 - sửa đổi nhỏ',
+'recentchanges-label-minor' => 'Đây là một sửa đổi nhỏ',
+'recentchanges-legend-bot' => '$1 - sửa đổi bot',
+'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
+'recentchanges-legend-unpatrolled' => '$1 - sửa đổi chưa tuần tra',
+'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
'rcnote' => "Dưới đây là {{PLURAL:$1|'''1''' thay đổi|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|ngày qua|'''$2''' ngày qua}}, tính tới $5, $4.",
'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
@@ -1425,6 +1520,8 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
# Recent changes linked
'recentchangeslinked' => 'Thay đổi liên quan',
+'recentchangeslinked-feed' => 'Thay đổi liên quan',
+'recentchangeslinked-toolbox' => 'Thay đổi liên quan',
'recentchangeslinked-title' => 'Thay đổi liên quan tới “$1”',
'recentchangeslinked-noresult' => 'Không có thay đổi nào trên trang được liên kết đến trong khoảng thời gian đã chọn.',
'recentchangeslinked-summary' => "Đây là danh sách các thay đổi được thực hiện gần đây tại những trang được liên kết đến từ một trang nào đó (hoặc tại các trang thuộc một thể loại nào đó).
@@ -1435,8 +1532,8 @@ Các trang trong [[Special:Watchlist|danh sách bạn theo dõi]] được '''t
# Upload
'upload' => 'Tải tập tin lên',
'uploadbtn' => 'Tải lên',
-'reupload' => 'Tải lại',
'reuploaddesc' => 'Hủy tác vụ tải và quay lại mẫu tải tập tin lên',
+'upload-tryagain' => 'Lưu miêu tả tập tin được sửa đổi',
'uploadnologin' => 'Chưa đăng nhập',
'uploadnologintext' => 'Bạn phải [[Special:UserLogin|đăng nhập]] để tải tập tin lên.',
'upload_directory_missing' => 'Thư mục tải lên ($1) không có hoặc máy chủ web không thể tạo được.',
@@ -1469,6 +1566,7 @@ Xem [[Special:NewFiles|trang trưng bày các tập tin mới]] để xem trực
'minlength1' => 'Tên tập tin phải có ít nhất một ký tự.',
'illegalfilename' => 'Tên tập tin “$1” có chứa ký tự không được phép dùng cho tựa trang. Xin hãy đổi tên và tải lên lại.',
'badfilename' => 'Tên tập tin đã được đổi thành “$1”.',
+'filetype-mime-mismatch' => 'Phần mở rộng của tập tin không phù hợp kiểu MIME.',
'filetype-badmime' => 'Không thể tải lên các tập tin có định dạng MIME “$1”.',
'filetype-bad-ie-mime' => 'Không thể tải tập tin này lên vì Internet Explorer sẽ nhận diện tập tin này là “$1”, một định dạng tập tin tiềm ẩn nguy hiểm và không được cho phép.',
'filetype-unwanted-type' => "'''“.$1”''' là định dạng tập tin không được trông đợi.
@@ -1489,7 +1587,6 @@ Những gì bạn ghi trong ô \"Tóm tắt tập tin\" sẽ không hiện ra
* Tên tập tin đang tải lên: '''<tt>[[:$1]]</tt>'''
* Tên tập tin có từ trước: '''<tt>[[:$2]]</tt>'''
Xin hãy chọn một tên tập tin khác.",
-'fileexists-thumb' => "<center>'''Tập tin đã tồn tại'''</center>",
'fileexists-thumbnail-yes' => "Tập tin này có vẻ là hình có kích thước thu gọn ''(hình thu nhỏ)''. [[$1|thumb]]
Xin kiểm tra lại tập tin '''<tt>[[:$1]]</tt>'''.
Nếu tập tin được kiểm tra trùng với hình có kích cỡ gốc thì không cần thiết tải lên một hình thu nhỏ khác.",
@@ -1504,6 +1601,7 @@ Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại v
'file-deleted-duplicate' => 'Một tập tin giống hệt như tập tin này ([[$1]]) đã từng bị xóa trước đây. Bạn nên xem lại lịch sử xóa tập tin trước khi tiếp tục tải nó lên lại.',
'successfulupload' => 'Đã tải xong',
'uploadwarning' => 'Cảnh báo!',
+'uploadwarning-text' => 'Xin hãy chỉnh sửa miêu tả tập tin ở dưới và thử lại.',
'savefile' => 'Lưu tập tin',
'uploadedimage' => 'đã tải “[[$1]]” lên',
'overwroteimage' => 'đã tải lên một phiên bản mới của “[[$1]]”',
@@ -1511,11 +1609,14 @@ Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại v
'uploaddisabledtext' => 'Chức năng tải tập tin đã bị tắt.',
'php-uploaddisabledtext' => 'Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.',
'uploadscripted' => 'Tập tin này có chứa mã HTML hoặc script có thể khiến trình duyệt web thông dịch sai.',
-'uploadcorrupt' => 'Tập tin bị hỏng hoặc có phần mở rộng không đúng. Xin kiểm tra và tải lại.',
'uploadvirus' => 'Tập tin có virút! Chi tiết: $1',
+'upload-source' => 'Tập tin gốc',
'sourcefilename' => 'Tên tập tin nguồn:',
+'sourceurl' => 'URL gốc:',
'destfilename' => 'Tên tập tin mới:',
'upload-maxfilesize' => 'Kích thước tập tin tối đa: $1',
+'upload-description' => 'Miêu tả tập tin',
+'upload-options' => 'Tùy chọn tải lên',
'watchthisupload' => 'Theo dõi tập tin này',
'filewasdeleted' => 'Một tên với tên này đã được tải lên trước đã rồi sau đó bị xóa. Bạn nên kiểm tra lại $1 trước khi tải nó lên lại lần nữa.',
'upload-wasdeleted' => "'''Cảnh báo: Bạn đang tải lên một tập tin từng bị xóa trước đây.'''
@@ -1537,15 +1638,46 @@ MGP # Pentax
PICT # khác
#</pre> <!-- xin để nguyên hàng này -->',
-'upload-proto-error' => 'Giao thức sai',
-'upload-proto-error-text' => 'Phải đưa vào URL bắt đầu với <code>http://</code> hay <code>ftp://</code> để tải lên tập tin từ trang web khác.',
-'upload-file-error' => 'Lỗi nội bộ',
-'upload-file-error-text' => 'Có lỗi nội bộ khi tạo tập tin tạm trên máy chủ.
+'upload-proto-error' => 'Giao thức sai',
+'upload-proto-error-text' => 'Phải đưa vào URL bắt đầu với <code>http://</code> hay <code>ftp://</code> để tải lên tập tin từ trang web khác.',
+'upload-file-error' => 'Lỗi nội bộ',
+'upload-file-error-text' => 'Có lỗi nội bộ khi tạo tập tin tạm trên máy chủ.
Xin hãy liên hệ với một [[Special:ListUsers/sysop|bảo quản viên]].',
-'upload-misc-error' => 'Có lỗi lạ khi tải lên',
-'upload-misc-error-text' => 'Có lỗi lạ khi tải lên.
+'upload-misc-error' => 'Có lỗi lạ khi tải lên',
+'upload-misc-error-text' => 'Có lỗi lạ khi tải lên.
Xin hãy xác nhận lại địa chỉ URL là hợp lệ và có thể truy cập được không rồi thử lại lần nữa.
Nếu vẫn còn bị lỗi, xin hãy liên hệ với một [[Special:ListUsers/sysop|bảo quản viên]].',
+'upload-too-many-redirects' => 'URL có quá nhiều chuyển hướng',
+'upload-unknown-size' => 'Không rõ kích thước',
+'upload-http-error' => 'Xảy ra lỗi HTTP: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Không cho phép truy cập',
+'img-auth-nopathinfo' => 'Thiếu PATH_INFO.
+Máy chủ của bạn không được thiết lập để truyền thông tin này.
+Có thể do nó dựa trên CGI và không hỗ trợ img_auth.
+Xem http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-notindir' => 'Đường dẫn yêu cầu không nằm trong thư mục cấu hình tải lên.',
+'img-auth-badtitle' => 'Không thể tạo tựa đề hợp lệ từ “$1”.',
+'img-auth-nologinnWL' => 'Bạn chưa đăng nhập và “$1” không nằm trong danh sách trắng.',
+'img-auth-nofile' => 'Không tồn tại tập tin “$1”.',
+'img-auth-isdir' => 'Bạn đang cố truy cập vào thư mục “$1”.
+Chỉ cho phép truy cập tập tin mà thôi.',
+'img-auth-streaming' => 'Đang truyền “$1”.',
+'img-auth-public' => 'Chức năng của img_auth.php là xuất tập tin từ wiki cá nhân.
+Wiki này được cấu hình là wiki công cộng.
+Vì lý do bảo mật, img_auth.php đã bị tắt.',
+'img-auth-noread' => 'Người dùng không đủ quyền truy cập để đọc “$1”.',
+
+# HTTP errors
+'http-invalid-url' => 'URL không hợp lệ: $1',
+'http-invalid-scheme' => 'Không hỗ trợ các URL có mô hình “$1”',
+'http-request-error' => 'Có lỗi lạ khi gửi yêu cầu HTTP.',
+'http-read-error' => 'Lỗi đọc HTTP.',
+'http-timed-out' => 'Hết thời gian yêu cầu HTTP.',
+'http-curl-error' => 'Có lỗi khi truy xuất URL: $1',
+'http-host-unreachable' => 'Không thể truy cập URL',
+'http-bad-status' => 'Có vấn đề khi yêu cầu HTTP: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Không thể truy cập URL',
@@ -1554,6 +1686,7 @@ Nếu vẫn còn bị lỗi, xin hãy liên hệ với một [[Special:ListUsers
'upload-curl-error28-text' => 'Trang web phản hồi quá chậm. Xin hãy kiểm tra lại xem trang web còn hoạt động hay không, đợi một thời gian ngắn rồi thử lại. Bạn nên thử lại vào lúc trang rảnh rỗi hơn.',
'license' => 'Giấy phép:',
+'license-header' => 'Giấy phép',
'nolicense' => 'chưa chọn',
'license-nopreview' => '(Không xem trước được)',
'upload_source_url' => ' (địa chỉ URL đúng, có thể truy cập)',
@@ -1574,6 +1707,7 @@ Hãy nhấn chuột vào tiêu đề cột để thay đổi thứ tự sắp x
'listfiles_count' => 'Số phiên bản',
# File description page
+'file-anchor-link' => 'Tập tin',
'filehist' => 'Lịch sử tập tin',
'filehist-help' => 'Nhấn vào một ngày/giờ để xem nội dung tập tin tại thời điểm đó.',
'filehist-deleteall' => 'xóa toàn bộ',
@@ -1588,6 +1722,7 @@ Hãy nhấn chuột vào tiêu đề cột để thay đổi thứ tự sắp x
'filehist-dimensions' => 'Kích cỡ',
'filehist-filesize' => 'Kích thước tập tin',
'filehist-comment' => 'Miêu tả',
+'filehist-missing' => 'Không thấy tập tin',
'imagelinks' => 'Liên kết đến tập tin',
'linkstoimage' => '{{PLURAL:$1|Trang|$1 trang}} sau có liên kết đến tập tin này:',
'linkstoimage-more' => 'Có hơn $1 {{PLURAL:$1|trang|trang}} liên kết đến tập tin này.
@@ -1597,15 +1732,16 @@ Có [[Special:WhatLinksHere/$2|danh sách đầy đủ ở đây]].',
'morelinkstoimage' => 'Xem [[Special:WhatLinksHere/$1|thêm liên kết]] đến tập tin này.',
'redirectstofile' => '{{PLURAL:$1|Tập tin|$1 tập tin}} sau chuyển hướng đến tập tin này:',
'duplicatesoffile' => '{{PLURAL:$1|Tập tin sau|$1 tập tin sau}} là bản sao của tập tin này ([[Special:FileDuplicateSearch/$2|chi tiết]]):',
-'sharedupload' => 'Tập tin này đặt tại $1 và các dự án khác có thể dùng chúng.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Xin xem $1 để biết thêm thông tin.',
-'shareduploadwiki-desc' => 'Dưới đây là nội dung từ trang $1 tại kho lưu trữ chung.',
-'shareduploadwiki-linktext' => 'trang miêu tả tập tin',
-'noimage' => 'Không có tập tin có tên này, nhưng bạn có thể $1.',
-'noimage-linktext' => 'tải tập tin lên',
+'sharedupload' => 'Tập tin này đặt tại $1 và các dự án khác có thể dùng chúng.',
+'sharedupload-desc-there' => 'Tập tin này đặt tại $1 và các dự án khác có thể sử dụng chúng.
+Mời xem [$2 trang mô tả tập tin] để có thêm thông tin.',
+'sharedupload-desc-here' => 'Tập tin này đặt tại $1 và các dự án khác có thể sử dụng chúng.
+Lời miêu tả tại [$2 trang mô tả tập tin] tại đấy được hiển thị dưới đây.',
+'filepage-nofile' => 'Không có tập tin nào có tên này.',
+'filepage-nofile-link' => 'Không có tập tin nào có tên này, nhưng bạn có thể [$1 tải nó lên].',
'uploadnewversion-linktext' => 'Tải lên phiên bản mới',
-'shared-repo-from' => 'tại $1', # $1 is the repository name
-'shared-repo' => 'kho lưu trữ dùng chung', # used when shared-repo-NAME does not exist
+'shared-repo-from' => 'tại $1',
+'shared-repo' => 'kho lưu trữ dùng chung',
# File reversion
'filerevert' => 'Lùi lại phiên bản của $1',
@@ -1634,6 +1770,7 @@ Có [[Special:WhatLinksHere/$2|danh sách đầy đủ ở đây]].',
** Vi phạm bản quyền
** Tập tin trùng lắp',
'filedelete-edit-reasonlist' => 'Sửa lý do xóa',
+'filedelete-maintenance' => 'Tác vụ xóa và phục hồi tập tin đã bị tắt tạm thời trong khi bảo trì.',
# MIME search
'mimesearch' => 'Tìm kiếm theo định dạng',
@@ -1656,7 +1793,7 @@ Hãy nhớ kiểm tra các liên kết khác đến bản mẫu trước khi xó
# Random page
'randompage' => 'Trang ngẫu nhiên',
-'randompage-nopages' => 'Hiện chưa có trang nào trong không gian tên “$1”.',
+'randompage-nopages' => 'Hiện chưa có trang nào trong {{PLURAL:$2||các}} không gian tên: $1.',
# Random redirect
'randomredirect' => 'Trang đổi hướng ngẫu nhiên',
@@ -1668,6 +1805,7 @@ Hãy nhớ kiểm tra các liên kết khác đến bản mẫu trước khi xó
'statistics-header-edits' => 'Thống kê sửa đổi',
'statistics-header-views' => 'Thống kê truy cập',
'statistics-header-users' => 'Thống kê thành viên',
+'statistics-header-hooks' => 'Thống kê khác',
'statistics-articles' => 'Số trang nội dung',
'statistics-pages' => 'Số trang',
'statistics-pages-desc' => 'Tất cả các trang tại wiki, bao gồm trang thảo luận, trang đổi hướng, v.v.',
@@ -1695,8 +1833,8 @@ Các mục <s>bị gạch bỏ</s> là các trang đã được sửa.',
'brokenredirects' => 'Đổi hướng sai',
'brokenredirectstext' => 'Các trang đổi hướng sau đây liên kết đến trang không tồn tại:',
-'brokenredirects-edit' => '(sửa)',
-'brokenredirects-delete' => '(xóa)',
+'brokenredirects-edit' => 'sửa',
+'brokenredirects-delete' => 'xóa',
'withoutinterwiki' => 'Trang chưa có liên kết ngoại ngữ',
'withoutinterwiki-summary' => 'Các trang sau đây không có liên kết đến các phiên bản ngoại ngữ khác:',
@@ -1803,16 +1941,17 @@ Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình,
# Special:Categories
'categories' => 'Thể loại',
-'categoriespagetext' => 'Các thể loại dưới đây là thể loại có trang hoặc tập tin phương tiện.
-[[Special:UnusedCategories|Thể loại trống]] không được hiển thị tại đây.
+'categoriespagetext' => '{{PLURAL:$1|Thể loại|Các thể loại}} dưới đây có trang hoặc tập tin phương tiện.
+Những [[Special:UnusedCategories|thể loại trống]] không được hiển thị tại đây.
Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
'categoriesfrom' => 'Hiển thị thể loại bằng đầu từ:',
'special-categories-sort-count' => 'xếp theo số trang',
'special-categories-sort-abc' => 'xếp theo vần',
# Special:DeletedContributions
-'deletedcontributions' => 'Đóng góp đã bị xóa của thành viên',
-'deletedcontributions-title' => 'Đóng góp đã bị xóa của thành viên',
+'deletedcontributions' => 'Đóng góp đã bị xóa của thành viên',
+'deletedcontributions-title' => 'Đóng góp đã bị xóa của thành viên',
+'sp-deletedcontributions-contribs' => 'đóng góp',
# Special:LinkSearch
'linksearch' => 'Liên kết ngoài',
@@ -1827,6 +1966,16 @@ Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
'listusersfrom' => 'Hiển thị thành viên bắt đầu từ:',
'listusers-submit' => 'Liệt kê',
'listusers-noresult' => 'Không thấy thành viên.',
+'listusers-blocked' => '(bị cấm)',
+
+# Special:ActiveUsers
+'activeusers' => 'Danh sách thành viên tích cực',
+'activeusers-intro' => 'Dánh sách này liệt kê các thành viên đã hoạt động cách nào đó trong $1 ngày qua.',
+'activeusers-count' => '$1 {{PLURAL:$1|sửa đổi|sửa đổi}} trong {{PLURAL:$3|ngày|$3 ngày}} gần đây',
+'activeusers-from' => 'Hiển thị thành viên bắt đầu từ:',
+'activeusers-hidebots' => 'Ẩn robot',
+'activeusers-hidesysops' => 'Ẩn quản lý viên',
+'activeusers-noresult' => 'Không thấy thành viên.',
# Special:Log/newusers
'newuserlogpage' => 'Nhật trình mở tài khoản',
@@ -1837,17 +1986,23 @@ Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
'newuserlog-autocreate-entry' => 'Tài khoản được tạo tự động',
# Special:ListGroupRights
-'listgrouprights' => 'Nhóm thành viên',
-'listgrouprights-summary' => 'Dưới đây là danh sách nhóm thành viên được định nghĩa tại wiki này, với mức độ truy cập của từng nhóm.
+'listgrouprights' => 'Nhóm thành viên',
+'listgrouprights-summary' => 'Dưới đây là danh sách nhóm thành viên được định nghĩa tại wiki này, với mức độ truy cập của từng nhóm.
Có [[{{MediaWiki:Listgrouprights-helppage}}|thông tin thêm]] về từng nhóm riêng biệt.',
-'listgrouprights-group' => 'Nhóm',
-'listgrouprights-rights' => 'Khả năng',
-'listgrouprights-helppage' => 'Help:Khả năng của nhóm thành viên',
-'listgrouprights-members' => '(danh sách thành viên)',
-'listgrouprights-addgroup' => 'Có thể thêm {{PLURAL:$2|nhóm|các nhóm}}: $1',
-'listgrouprights-removegroup' => 'Có thể bỏ {{PLURAL:$2|nhóm|các nhóm}}: $1',
-'listgrouprights-addgroup-all' => 'Có thể thêm tất cả các nhóm',
-'listgrouprights-removegroup-all' => 'Có thể bỏ tất cả các nhóm',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Quyền được trao</span>
+* <span class="listgrouprights-revoked">Quyền bị tước</span>',
+'listgrouprights-group' => 'Nhóm',
+'listgrouprights-rights' => 'Khả năng',
+'listgrouprights-helppage' => 'Help:Khả năng của nhóm thành viên',
+'listgrouprights-members' => '(danh sách thành viên)',
+'listgrouprights-addgroup' => 'Có thể thêm {{PLURAL:$2|nhóm|các nhóm}}: $1',
+'listgrouprights-removegroup' => 'Có thể bỏ {{PLURAL:$2|nhóm|các nhóm}}: $1',
+'listgrouprights-addgroup-all' => 'Có thể thêm tất cả các nhóm',
+'listgrouprights-removegroup-all' => 'Có thể bỏ tất cả các nhóm',
+'listgrouprights-addgroup-self' => 'Có thể đưa tài khoản của chính mình vào {{PLURAL:$2|nhóm|các nhóm}}: $1',
+'listgrouprights-removegroup-self' => 'Có thể loại tài khoản của chính mình ra khỏi {{PLURAL:$2|nhóm|các nhóm}}: $1',
+'listgrouprights-addgroup-self-all' => 'Có thể đưa tài khoản của chính mình vào tất cả các nhóm',
+'listgrouprights-removegroup-self-all' => 'Có thể loại tài khoản của chính mình ra khỏi tất cả các nhóm',
# E-mail user
'mailnologin' => 'Không có địa chỉ gửi thư',
@@ -1920,7 +2075,7 @@ Nếu bạn muốn cho trang này ra khỏi danh sách theo dõi, nhấn vào "N
'enotif_lastvisited' => 'Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn.',
'enotif_lastdiff' => 'Vào $1 để xem sự thay đổi này.',
'enotif_anon_editor' => 'thành viên vô danh $1',
-'enotif_body' => '$WATCHINGUSERNAME thân mến,
+'enotif_body' => 'Xin chào $WATCHINGUSERNAME,
Trang $PAGETITLE tại {{SITENAME}} đã được $PAGEEDITOR $CHANGEDORCREATED vào $PAGEEDITDATE, xem phiên bản hiện hành tại $PAGETITLE_URL.
@@ -1933,13 +2088,17 @@ Liên lạc với người viết trang qua:
thư: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
+Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó.
+Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
Hệ thống báo tin {{SITENAME}} thân thiện của bạn
--
Để thay đổi các thiết lập danh sách theo dõi, mời xem
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Để xóa trang ra khỏi danh sách theo dõi của bạn, mời xem
+$UNWATCHURL
Phản hồi và cần sự hỗ trợ:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1953,10 +2112,11 @@ Phản hồi và cần sự hỗ trợ:
'exblank' => 'trang trắng',
'delete-confirm' => 'Xóa “$1”',
'delete-legend' => 'Xóa',
-'historywarning' => 'Cảnh báo: Trang bạn sắp xóa đã có lịch sử:',
+'historywarning' => "'''Cảnh báo:''' Trang bạn sắp xóa đã có lịch sử khoảng $1 {{PLURAL:$1|phiên bản|phiên bản}}:",
'confirmdeletetext' => 'Bạn sắp xóa hẳn một trang cùng với tất cả lịch sử của nó.
Xin xác nhận việc bạn định làm, và hiểu rõ những hệ lụy của nó, và bạn thực hiện nó theo đúng đúng [[{{MediaWiki:Policy-url}}|quy định]].',
'actioncomplete' => 'Đã thực hiện xong',
+'actionfailed' => 'Tác động bị thất bại',
'deletedtext' => 'Đã xóa “<nowiki>$1</nowiki>”. Xem danh sách các xóa bỏ gần nhất tại $2.',
'deletedarticle' => 'đã xóa “$1”',
'suppressedarticle' => 'đã giấu "[[$1]]"',
@@ -1979,20 +2139,21 @@ Việc xóa các trang có thể làm tổn hại đến hoạt động của c
hãy cẩn trọng khi thực hiện.',
# Rollback
-'rollback' => 'Lùi tất cả sửa đổi',
-'rollback_short' => 'Lùi tất cả',
-'rollbacklink' => 'lùi tất cả',
-'rollbackfailed' => 'Lùi sửa đổi không thành công',
-'cantrollback' => 'Không lùi sửa đổi được;
+'rollback' => 'Lùi tất cả sửa đổi',
+'rollback_short' => 'Lùi tất cả',
+'rollbacklink' => 'lùi tất cả',
+'rollbackfailed' => 'Lùi sửa đổi không thành công',
+'cantrollback' => 'Không lùi sửa đổi được;
người viết trang cuối cùng cũng là tác giả duy nhất của trang này.',
-'alreadyrolled' => 'Không thể lùi tất cả sửa đổi cuối của [[User:$2|$2]] ([[User talk:$2|thảo luận]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tại [[:$1]]; ai đó đã thực hiện sửa đổi hoặc thực hiện lùi tất cả rồi.
+'alreadyrolled' => 'Không thể lùi tất cả sửa đổi cuối của [[User:$2|$2]] ([[User talk:$2|thảo luận]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) tại [[:$1]]; ai đó đã thực hiện sửa đổi hoặc thực hiện lùi tất cả rồi.
Sửa đổi cuối cùng tại trang do [[User:$3|$3]] ([[User talk:$3|thảo luận]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) thực hiện.',
-'editcomment' => "Tóm lược sửa đổi: “''$1''”.", # only shown if there is an edit comment
-'revertpage' => 'Đã hủy sửa đổi của [[Special:Contributions/$2|$2]] ([[User talk:$2|Thảo luận]]) quay về phiên bản của [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => 'Đã hủy sửa đổi của $1;
+'editcomment' => "Tóm lược sửa đổi: “''$1''”.",
+'revertpage' => 'Đã hủy sửa đổi của [[Special:Contributions/$2|$2]] ([[User talk:$2|Thảo luận]]) quay về phiên bản của [[User:$1|$1]]',
+'revertpage-nouser' => 'Lùi sửa đổi của (tên người dùng đã xóa) quay lại phiên bản cuối của [[User:$1|$1]]',
+'rollback-success' => 'Đã hủy sửa đổi của $1;
quay về phiên bản cuối của $2.',
-'sessionfailure' => 'Dường như có trục trặc với phiên đăng nhập của bạn; thao tác này đã bị hủy để tránh việc cướp quyền đăng nhập. Xin hãy nhấn nút “Back”, tải lại trang đó, rồi thử lại.',
+'sessionfailure' => 'Dường như có trục trặc với phiên đăng nhập của bạn; thao tác này đã bị hủy để tránh việc cướp quyền đăng nhập. Xin hãy nhấn nút “Back”, tải lại trang đó, rồi thử lại.',
# Protect
'protectlogpage' => 'Nhật trình khóa',
@@ -2008,7 +2169,7 @@ quay về phiên bản cuối của $2.',
'protectexpiry' => 'Thời hạn:',
'protect_expiry_invalid' => 'Thời hạn không hợp lệ.',
'protect_expiry_old' => 'Thời hạn đã qua.',
-'protect-unchain' => 'Thay đổi mức cấm di chuyển',
+'protect-unchain-permissions' => 'Thay đổi các tùy chọn khóa trang khác',
'protect-text' => "Bạn có thể xem và đổi kiểu khóa trang '''<nowiki>$1</nowiki>''' ở đây.",
'protect-locked-blocked' => "Bạn không thể đổi mức khóa khi bị cấm. Đây là trạng thái
hiện tại của trang '''$1''':",
@@ -2037,7 +2198,7 @@ hiện tại của trang '''$1''':",
** Bút chiến thiếu tính xây dựng
** Trang nhiều người xem',
'protect-edit-reasonlist' => 'Sửa lý do khóa trang',
-'protect-expiry-options' => '1 giờ:1 hour,1 ngày:1 day,1 tuần:1 week,2 tuần:2 weeks,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year,vô hạn:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 giờ:1 hour,1 ngày:1 day,1 tuần:1 week,2 tuần:2 weeks,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year,vô hạn:infinite',
'restriction-type' => 'Quyền:',
'restriction-level' => 'Mức độ hạn chế:',
'minimum-size' => 'Kích thước tối thiểu',
@@ -2078,6 +2239,7 @@ Chỉ có người quản lý mới xem được văn bản đầy đủ của n
'undelete-nodiff' => 'Không tìm thấy phiên bản cũ hơn.',
'undeletebtn' => 'Phục hồi',
'undeletelink' => 'xem lại/phục hồi',
+'undeleteviewlink' => 'xem',
'undeletereset' => 'Tẩy trống',
'undeleteinvert' => 'Đảo sự lựa chọn',
'undeletecomment' => 'Lý do:',
@@ -2116,19 +2278,23 @@ $1',
'contributions-title' => 'Đóng góp của thành viên $1',
'mycontris' => 'Đóng góp của tôi',
'contribsub2' => 'Của $1 ($2)',
-'nocontribs' => 'Không tìm thấy thay đổi nào khớp với yêu cầu.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Không tìm thấy thay đổi nào khớp với yêu cầu.',
'uctop' => '(mới nhất)',
'month' => 'Từ tháng (trở về trước):',
'year' => 'Từ năm (trở về trước):',
-'sp-contributions-newbies' => 'Chỉ hiển thị đóng góp của tài khoản mới',
-'sp-contributions-newbies-sub' => 'Các thành viên mới',
-'sp-contributions-newbies-title' => 'Đóng góp của các thành viên mới',
-'sp-contributions-blocklog' => 'Nhật trình cấm',
-'sp-contributions-logs' => 'nhật trình',
-'sp-contributions-search' => 'Tìm kiếm đóng góp',
-'sp-contributions-username' => 'Địa chỉ IP hay tên thành viên:',
-'sp-contributions-submit' => 'Tìm kiếm',
+'sp-contributions-newbies' => 'Chỉ hiển thị đóng góp của tài khoản mới',
+'sp-contributions-newbies-sub' => 'Các thành viên mới',
+'sp-contributions-newbies-title' => 'Đóng góp của các thành viên mới',
+'sp-contributions-blocklog' => 'Nhật trình cấm',
+'sp-contributions-deleted' => 'đóng góp đã bị xóa của thành viên',
+'sp-contributions-logs' => 'nhật trình',
+'sp-contributions-talk' => 'thảo luận',
+'sp-contributions-userrights' => 'quản lý quyền thành viên',
+'sp-contributions-blocked-notice' => 'Thành viên này hiện đang bị cấm sửa đổi. Nhật trình cấm gần nhất được ghi ở dưới để tiện theo dõi:',
+'sp-contributions-search' => 'Tìm kiếm đóng góp',
+'sp-contributions-username' => 'Địa chỉ IP hay tên thành viên:',
+'sp-contributions-submit' => 'Tìm kiếm',
# What links here
'whatlinkshere' => 'Các liên kết đến đây',
@@ -2151,6 +2317,7 @@ $1',
# Block/unblock
'blockip' => 'Cấm thành viên',
+'blockip-title' => 'Cấm thành viên',
'blockip-legend' => 'Cấm thành viên',
'blockiptext' => 'Dùng mẫu dưới để cấm một địa chỉ IP hoặc thành viên không được viết trang.
Điều này chỉ nên làm để tránh phá hoại, và phải theo [[{{MediaWiki:Policy-url}}|quy định]].
@@ -2178,7 +2345,7 @@ $1',
'ipbenableautoblock' => 'Tự động cấm các địa chỉ IP mà thành viên này sử dụng',
'ipbsubmit' => 'Cấm',
'ipbother' => 'Thời hạn khác:',
-'ipboptions' => '2 giờ:2 hours,1 ngày:1 day,3 ngày:3 days,1 tuần:1 week,2 tuần:2 weeks,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year,vô hạn:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 giờ:2 hours,1 ngày:1 day,3 ngày:3 days,1 tuần:1 week,2 tuần:2 weeks,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year,vô hạn:infinite',
'ipbotheroption' => 'khác',
'ipbotherreason' => 'Lý do khác',
'ipbhidename' => 'Ẩn tên người dùng ra khỏi các sửa đổi và danh sách',
@@ -2207,9 +2374,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1 tác vụ cấm có thời hạn',
'ipblocklist-sh-addressblocks' => '$1 tác vụ cấm IP',
'ipblocklist-submit' => 'Tìm kiếm',
+'ipblocklist-localblock' => 'Cấm tại wiki này',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Lần|Các lần}} cấm khác',
'blocklistline' => '$1, $2 đã cấm $3 (hết hạn $4)',
'infiniteblock' => 'vô hạn',
-'expiringblock' => 'hết hạn lúc $1',
+'expiringblock' => 'hết hạn vào ngày $1 lúc $2',
'anononlyblock' => 'chỉ cấm vô danh',
'noautoblockblock' => 'đã tắt chức năng tự động cấm',
'createaccountblock' => 'không được mở tài khoản',
@@ -2223,7 +2392,8 @@ $1',
'contribslink' => 'đóng góp',
'autoblocker' => 'Bạn bị tự động cấm vì địa chỉ IP của bạn vừa rồi đã được “[[User:$1|$1]]” sử dụng. Lý do đưa ra cho việc cấm $1 là: ”$2”',
'blocklogpage' => 'Nhật trình cấm',
-'blocklog-fulllog' => 'Nhật trình cấm đầy đủ',
+'blocklog-showlog' => 'Thành viên này trước đây đã bị cấm. Nhật trình cấm được ghi ra ở đây để tiện theo dõi:',
+'blocklog-showsuppresslog' => 'Thành viên trước đây đã từng bị cấm và ẩn đi. Nhật trình ẩn được ghi dưới đây để tiện theo dõi:',
'blocklogentry' => 'đã cấm [[$1]] với thời hạn là $2 $3',
'reblock-logentry' => 'thay đổi thiết lập cấm [[$1]] thành thời hạn $2 $3',
'blocklogtext' => 'Đây là nhật trình ghi lại những lần cấm và bỏ cấm. Các địa chỉ IP bị cấm tự động không được liệt kê ở đây. Xem thêm [[Special:IPBlockList|danh sách cấm]] để có danh sách cấm và cấm hẳn hiện tại.',
@@ -2242,9 +2412,11 @@ $1',
'ipb_already_blocked' => '“$1” đã bị cấm rồi',
'ipb-needreblock' => '== Đã bị cấm ==
$1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Tác vụ cấm|Các tác vụ cấm}} khác',
'ipb_cant_unblock' => 'Lỗi: Không tìm được ID cấm $1. Địa chỉ IP này có thể đã được bỏ cấm.',
'ipb_blocked_as_range' => 'Lỗi: Địa chỉ IP $1 không bị cấm trực tiếp và do đó không thể bỏ cấm. Tuy nhiên, nó bị cấm do là một bộ phận của dải IP $2, bạn có thể bỏ cấm dải này.',
'ip_range_invalid' => 'Dải IP không hợp lệ.',
+'ip_range_toolarge' => 'Không được phép cấm dải IP lớn hơn /$1.',
'blockme' => 'Cấm tôi',
'proxyblocker' => 'Cấm proxy',
'proxyblocker-disabled' => 'Chức năng này đã bị tắt.',
@@ -2253,6 +2425,7 @@ $1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
'sorbsreason' => 'Địa chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng.',
'sorbs_create_account_reason' => 'Địa chỉ chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng. Bạn không thể mở tài khoản.',
'cant-block-while-blocked' => 'Bạn không thể cấm thành viên khác trong khi bạn đang bị cấm.',
+'cant-see-hidden-user' => 'Thành viên bạn muốn cấm đã bị cấm trước đây hoặc đã bị ẩn đi. Vì bạn không có quyền hideuser, bạn không thể xem hoặc thay đổi mức cấm của thành viên.',
# Developer tools
'lockdb' => 'Khóa cơ sở dữ liệu',
@@ -2296,6 +2469,7 @@ xin hãy chắc chắn rằng bạn đã nhận thức được những hệ l
Trong những trường hợp đó, bạn phải di chuyển hoặc hợp nhất trang theo kiểu thủ công nếu muốn.",
'movearticle' => 'Di chuyển trang:',
+'moveuserpage-warning' => "'''Cảnh báo:''' Bạn sắp di chuyển trang cá nhân của người dùng. Xin lưu ý rằng chỉ có trang này sẽ được di chuyển, còn người dùng sẽ ''không'' đổi tên.",
'movenologin' => 'Chưa đăng nhập',
'movenologintext' => 'Bạn phải là thành viên đã đăng ký và [[Special:UserLogin|đăng nhập]] mới di chuyển trang được.',
'movenotallowed' => 'Bạn không có quyền di chuyển trang.',
@@ -2306,7 +2480,7 @@ Trong những trường hợp đó, bạn phải di chuyển hoặc hợp nhất
'move-watch' => 'Theo dõi trang này',
'movepagebtn' => 'Di chuyển trang',
'pagemovedsub' => 'Di chuyển thành công',
-'movepage-moved' => "'''“$1” đã được di chuyển đến “$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''“$1” đã được di chuyển đến “$2”'''",
'movepage-moved-redirect' => 'Đã tạo trang chuyển hướng.',
'movepage-moved-noredirect' => 'Chức năng tạo trang chuyển hướng đã bị tắt.',
'articleexists' => 'Đã có một trang với tên đó, hoặc tên bạn chọn không hợp lệ.
@@ -2348,6 +2522,14 @@ Trang với tên “[[:$1]]” đã tồn tại. Bạn có muốn xóa nó để
'imageinvalidfilename' => 'Tên tập tin đích không hợp lệ',
'fix-double-redirects' => 'Cập nhật tất cả các trang đổi hướng chỉ đến tựa đề cũ',
'move-leave-redirect' => 'Để lại trang đổi hướng',
+'protectedpagemovewarning' => "'''Cảnh báo:''' Trang này đã bị khóa và chỉ có các thành viên có quyền quản lý mới có thể di chuyển được.
+Thông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
+'semiprotectedpagemovewarning' => "'''Lưu ý:''' Trang này đã bị khóa và chỉ có các thành viên đã đăng ký mới có thể di chuyển được.
+Thông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
+'move-over-sharedrepo' => '== Tập tin đã tồn tại ==
+[[:$1]] đã tồn tại trong kho dùng chung. Nếu đổi tên tập tin thành tên này thì sẽ ghi đè lên tập tin dùng chung.',
+'file-exists-sharedrepo' => 'Bạn đã chọn tên tập tin trùng với tập tin nằm trong kho dùng chung.
+Xin hãy chọn tên khác.',
# Export
'export' => 'Xuất các trang',
@@ -2370,15 +2552,21 @@ Trong trường hợp sau bạn cũng có thể dùng một liên kết, ví d
'export-pagelinks' => 'Gồm cả các trang liên kết sâu đến:',
# Namespace 8 related
-'allmessages' => 'Thông báo hệ thống',
-'allmessagesname' => 'Tên thông báo',
-'allmessagesdefault' => 'Nội dung mặc định',
-'allmessagescurrent' => 'Nội dung hiện thời',
-'allmessagestext' => 'Đây là toàn bộ thông báo hệ thống có trong không gian tên MediaWiki.
+'allmessages' => 'Thông báo hệ thống',
+'allmessagesname' => 'Tên thông báo',
+'allmessagesdefault' => 'Nội dung mặc định',
+'allmessagescurrent' => 'Nội dung hiện thời',
+'allmessagestext' => 'Đây là toàn bộ thông báo hệ thống có trong không gian tên MediaWiki.
Mời vào [http://www.mediawiki.org/wiki/Localisation Địa phương hóa MediaWiki] và [http://translatewiki.net translatewiki.net] nếu bạn muốn đóng góp dịch chung cả MediaWiki.',
-'allmessagesnotsupportedDB' => "Trang này không dùng được vì biến '''\$wgUseDatabaseMessages''' đã bị tắt.",
-'allmessagesfilter' => 'Bộ lọc tên thông báo:',
-'allmessagesmodified' => 'Chỉ hiển thị các thông báo đã được sửa đổi.',
+'allmessagesnotsupportedDB' => "Trang này không dùng được vì biến '''\$wgUseDatabaseMessages''' đã bị tắt.",
+'allmessages-filter-legend' => 'Bộ lọc',
+'allmessages-filter' => 'Lọc theo tình trạng sửa đổi:',
+'allmessages-filter-unmodified' => 'Chưa sửa',
+'allmessages-filter-all' => 'Tất cả',
+'allmessages-filter-modified' => 'Đã sửa',
+'allmessages-prefix' => 'Lọc theo tiền tố:',
+'allmessages-language' => 'Ngôn ngữ:',
+'allmessages-filter-submit' => 'Xem',
# Thumbnails
'thumbnail-more' => 'Phóng lớn',
@@ -2388,6 +2576,9 @@ Mời vào [http://www.mediawiki.org/wiki/Localisation Địa phương hóa Medi
'djvu_no_xml' => 'Không thể truy xuất XML cho tập tin DjVu',
'thumbnail_invalid_params' => 'Tham số hình thu nhỏ không hợp lệ',
'thumbnail_dest_directory' => 'Không thể tạo thư mục đích',
+'thumbnail_image-type' => 'Không hỗ trợ kiểu hình này',
+'thumbnail_gd-library' => 'Cấu hình thư viện GD chưa hoàn thành: thiếu hàm $1',
+'thumbnail_image-missing' => 'Hình như tập tin mất tích: $1',
# Special:Import
'import' => 'Nhập các trang',
@@ -2452,6 +2643,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'tooltip-ca-viewsource' => 'Trang này được khóa. Bạn có thể xem mã nguồn.',
'tooltip-ca-history' => 'Những phiên bản cũ của trang này.',
'tooltip-ca-protect' => 'Khóa trang này lại',
+'tooltip-ca-unprotect' => 'Mở khóa trang này',
'tooltip-ca-delete' => 'Xóa trang này',
'tooltip-ca-undelete' => 'Phục hồi những sửa đổi trên trang này như trước khi nó bị xóa',
'tooltip-ca-move' => 'Di chuyển trang này',
@@ -2462,6 +2654,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'tooltip-search-fulltext' => 'Tìm trang có nội dung này',
'tooltip-p-logo' => 'Trang Chính',
'tooltip-n-mainpage' => 'Đi đến Trang Chính',
+'tooltip-n-mainpage-description' => 'Xem trang chính',
'tooltip-n-portal' => 'Giới thiệu dự án, cách sử dụng và tìm kiếm thông tin ở đây',
'tooltip-n-currentevents' => 'Các trang có liên quan đến thời sự',
'tooltip-n-recentchanges' => 'Danh sách các thay đổi gần đây',
@@ -2508,6 +2701,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'chick.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Chick */',
'simple.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Đơn giản */',
'modern.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Hiện đại */',
+'vector.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng Vectơ */',
'print.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */',
'handheld.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến các thiết bị cầm tay dựa trên hình dạng cấu hình trong $wgHandheldStyle */',
@@ -2521,6 +2715,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'chick.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Chick */',
'simple.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Đơn giản */',
'modern.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Hiện đại */',
+'vector.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Vector */',
# Metadata
'nodublincore' => 'Máy chủ không hỗ trợ siêu dữ liệu Dublin Core RDF.',
@@ -2530,10 +2725,12 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
# Attribution
'anonymous' => '{{PLURAL:$1|Thành viên|Thành viên}} vô danh của {{SITENAME}}',
'siteuser' => 'thành viên $1 của {{SITENAME}}',
-'lastmodifiedatby' => 'Trang này được $3 cập nhật lần cuối lúc $2, $1.', # $1 date, $2 time, $3 user
+'anonuser' => 'người vô danh $1 tại {{SITENAME}}',
+'lastmodifiedatby' => 'Trang này được $3 cập nhật lần cuối lúc $2, $1.',
'othercontribs' => 'Dựa trên công trình của $1.',
'others' => 'những người khác',
'siteusers' => '{{PLURAL:$2|Thành viên|Các thành viên}} $1 của {{SITENAME}}',
+'anonusers' => '{{plural:$2|người|những người}} vô danh $1 tại {{SITENAME}}',
'creditspage' => 'Trang ghi nhận đóng góp',
'nocredits' => 'Không có thông tin ghi nhận đóng góp cho trang này.',
@@ -2561,6 +2758,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'skinname-myskin' => 'Cá nhân',
'skinname-simple' => 'Đơn giản',
'skinname-modern' => 'Hiện đại',
+'skinname-vector' => 'Vectơ',
# Math options
'mw_math_png' => 'Luôn cho ra dạng hình PNG',
@@ -2570,11 +2768,22 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'mw_math_modern' => 'Khuyên dùng với các trình duyệt hiện đại',
'mw_math_mathml' => 'MathML nếu có thể (thử nghiệm)',
+# Math errors
+'math_failure' => 'Không thể phân tích cú pháp',
+'math_unknown_error' => 'lỗi lạ',
+'math_unknown_function' => 'hàm lạ',
+'math_lexing_error' => 'lỗi chính tả',
+'math_syntax_error' => 'lỗi cú pháp',
+'math_image_error' => 'Không chuyển sang định dạng PNG được; xin kiểm tra lại cài đặt latex, dvips, gs và convert',
+'math_bad_tmpdir' => 'Không tạo mới hay viết vào thư mục toán tạm thời được',
+'math_bad_output' => 'Không tạo mới hay viết vào thư mục kết quả được',
+'math_notexvc' => 'Không thấy hàm thực thi texvc; xin xem math/README để biết cách cấu hình.',
+
# Patrolling
'markaspatrolleddiff' => 'Đánh dấu tuần tra',
'markaspatrolledtext' => 'Đánh dấu tuần tra trang này',
'markedaspatrolled' => 'Đã đánh dấu tuần tra',
-'markedaspatrolledtext' => 'Phiên bản được chọn đã được đánh dấu đã tuần tra.',
+'markedaspatrolledtext' => 'Phiên bản được chọn của [[:$1]] đã được đánh dấu tuần tra.',
'rcpatroldisabled' => '“Thay đổi gần đây” của các trang tuần tra không bật',
'rcpatroldisabledtext' => 'Chức năng “thay đổi gần đây” của các trang tuần tra hiện không được bật.',
'markedaspatrollederror' => 'Không thể đánh dấu tuần tra',
@@ -2604,13 +2813,10 @@ $1',
'previousdiff' => '← Sửa đổi cũ',
'nextdiff' => 'Sửa đổi sau →',
-# Visual comparison
-'visual-comparison' => 'So sánh hình dạng',
-
# Media information
'mediawarning' => "'''Cảnh báo''': Kiểu tập tin này có thể chứa mã hiểm độc.
Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
-'imagemaxsize' => 'Giới hạn độ phân giải trên trang miêu tả tập tin:',
+'imagemaxsize' => "Giới hạn cỡ hình:<br />''(trên trang miêu tả tập tin)''",
'thumbsize' => 'Cỡ hình thu nhỏ:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|trang|trang}}',
'file-info' => '(kích thước tập tin: $1, định dạng MIME: $2)',
@@ -2619,6 +2825,8 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
'svg-long-desc' => '(tập tin SVG, $1 × $2 điểm ảnh trên danh nghĩa, kích thước: $3)',
'show-big-image' => 'Độ phân giải tối đa',
'show-big-image-thumb' => '<small>Kích thước xem thử: $1 × $2 điểm ảnh</small>',
+'file-info-gif-looped' => 'có lặp',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|khung ảnh|khung ảnh}}',
# Special:NewFiles
'newimages' => 'Trang trưng bày hình ảnh mới',
@@ -2656,7 +2864,7 @@ Những thông tin khác mặc định sẽ được ẩn đi.
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Bề ngang',
@@ -2788,14 +2996,14 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-unknowndate' => 'Không biết ngày',
-'exif-orientation-1' => 'Thường', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Lộn ngược theo phương ngang', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Quay 180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Lộn ngược theo phương dọc', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Quay 90° bên trái và lộn thẳng đứng', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Quay 90° bên phải', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Quay 90° bên phải và lộn thẳng đứng', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Quay 90° bên trái', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Thường',
+'exif-orientation-2' => 'Lộn ngược theo phương ngang',
+'exif-orientation-3' => 'Quay 180°',
+'exif-orientation-4' => 'Lộn ngược theo phương dọc',
+'exif-orientation-5' => 'Quay 90° bên trái và lộn thẳng đứng',
+'exif-orientation-6' => 'Quay 90° bên phải',
+'exif-orientation-7' => 'Quay 90° bên phải và lộn thẳng đứng',
+'exif-orientation-8' => 'Quay 90° bên trái',
'exif-planarconfiguration-1' => 'định dạng thấp',
'exif-planarconfiguration-2' => 'định dạng phẳng',
@@ -2917,7 +3125,7 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-gpsmeasuremode-2' => 'Đo 2 chiều',
'exif-gpsmeasuremode-3' => 'Đo 3 chiều',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilômét một giờ',
'exif-gpsspeed-m' => 'Dặm một giờ',
'exif-gpsspeed-n' => 'Hải lý một giờ',
@@ -2936,6 +3144,7 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'watchlistall2' => 'tất cả',
'namespacesall' => 'tất cả',
'monthsall' => 'tất cả',
+'limitall' => 'tất cả',
# E-mail address confirmation
'confirmemail' => 'Xác nhận thư điện tử',
@@ -3113,7 +3322,7 @@ Bạn cũng có thể [[Special:Watchlist/edit|dùng trang sửa đổi bình th
'duplicate-defaultsort' => 'Cảnh báo: Từ khóa xếp mặc định “$2” ghi đè từ khóa trước, “$1”.',
# Special:Version
-'version' => 'Phiên bản', # Not used as normal message but as header for the special page itself
+'version' => 'Phiên bản',
'version-extensions' => 'Các phần mở rộng được cài đặt',
'version-specialpages' => 'Trang đặc biệt',
'version-parserhooks' => 'Hook trong bộ xử lý',
@@ -3127,7 +3336,7 @@ Bạn cũng có thể [[Special:Watchlist/edit|dùng trang sửa đổi bình th
'version-skin-extension-functions' => 'Hàm mở rộng skin',
'version-hook-name' => 'Tên hook',
'version-hook-subscribedby' => 'Được theo dõi bởi',
-'version-version' => 'phiên bản',
+'version-version' => '(Phiên bản $1)',
'version-license' => 'Giấy phép bản quyền',
'version-software' => 'Phần mềm được cài đặt',
'version-software-product' => 'Phần mềm',
@@ -3207,4 +3416,15 @@ Hãy cho vào tên của tập tin, trừ tiền tố “{{ns:file}}:”.',
'dberr-outofdate' => 'Chú ý rằng các chỉ mục của Google có thể đã lỗi thời.',
'dberr-cachederror' => 'Sau đây là bản sao được lưu bộ đệm của trang bạn muốn xem, và có thể đã lỗi thời.',
+# HTML forms
+'htmlform-invalid-input' => 'Có vấn đề trong dữ liệu bạn vừa đưa vào',
+'htmlform-select-badoption' => 'Giá trị đưa vào không hợp lệ.',
+'htmlform-int-invalid' => 'Giá trị đưa vào không phải số nguyên.',
+'htmlform-float-invalid' => 'Giá trị chỉ định không phải là con số.',
+'htmlform-int-toolow' => 'Giá trị đưa vào phải ít nhất $1',
+'htmlform-int-toohigh' => 'Giá trị không được vượt quá $1',
+'htmlform-submit' => 'Đăng',
+'htmlform-reset' => 'Hủy các thay đổi',
+'htmlform-selectorother-other' => 'Khác',
+
);
diff --git a/languages/messages/MessagesVls.php b/languages/messages/MessagesVls.php
index afb3a8f5..bd6b5d3a 100644
--- a/languages/messages/MessagesVls.php
+++ b/languages/messages/MessagesVls.php
@@ -14,24 +14,22 @@
$fallback = 'nl';
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Specioal',
- NS_MAIN => '',
- NS_TALK => 'Discuusje',
- NS_USER => 'Gebruker',
- NS_USER_TALK => 'Discuusje_gebruker',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => 'Discuusje_$1',
- NS_FILE => 'Ofbeeldienge',
- NS_FILE_TALK => 'Discuusje_ofbeeldienge',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'Discuusje_MediaWiki',
- NS_TEMPLATE => 'Patrôon',
- NS_TEMPLATE_TALK => 'Discuusje_patrôon',
- NS_HELP => 'Ulpe',
- NS_HELP_TALK => 'Discuusje_ulpe',
- NS_CATEGORY => 'Categorie',
- NS_CATEGORY_TALK => 'Discuusje_categorie',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Specioal',
+ NS_TALK => 'Discuusje',
+ NS_USER => 'Gebruker',
+ NS_USER_TALK => 'Discuusje_gebruker',
+ NS_PROJECT_TALK => 'Discuusje_$1',
+ NS_FILE => 'Ofbeeldienge',
+ NS_FILE_TALK => 'Discuusje_ofbeeldienge',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discuusje_MediaWiki',
+ NS_TEMPLATE => 'Patrôon',
+ NS_TEMPLATE_TALK => 'Discuusje_patrôon',
+ NS_HELP => 'Ulpe',
+ NS_HELP_TALK => 'Discuusje_ulpe',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Discuusje_categorie',
);
$messages = array(
diff --git a/languages/messages/MessagesVmf.php b/languages/messages/MessagesVmf.php
new file mode 100644
index 00000000..37f2a3fe
--- /dev/null
+++ b/languages/messages/MessagesVmf.php
@@ -0,0 +1,985 @@
+<?php
+/** Upper Franconian (Mainfränkisch)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Altaileopard
+ * @author Silvicola
+ */
+
+$fallback = 'de';
+
+$namespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Schbädsjaal',
+ NS_TALK => 'Disghusjoon',
+ NS_USER => 'Bänudsâr',
+ NS_USER_TALK => 'Bänudsârdisghusjoon',
+ NS_PROJECT_TALK => '$1disghusjoon',
+ NS_FILE => 'Dôdaj',
+ NS_FILE_TALK => 'Dôdajdisghusjoon',
+ NS_MEDIAWIKI => 'Meedjawigi',
+ NS_MEDIAWIKI_TALK => 'Meedjawigidisghusjoon',
+ NS_TEMPLATE => 'Foorlaachâ',
+ NS_TEMPLATE_TALK => 'Foorlaachândisghusjoon',
+ NS_HELP => 'Hilwâ',
+ NS_HELP_TALK => 'Hilwâdisghusjoon',
+ NS_CATEGORY => 'Gadâgorii',
+ NS_CATEGORY_TALK => 'Gadâgoriidisghusjoon',
+);
+
+$specialPageAliases = array(
+ 'DoubleRedirects' => array( 'Dobâldâ Wajdârlajdungân' ),
+ 'Userlogin' => array( 'Ôômäldâ' ),
+ 'Userlogout' => array( 'Ôbmäldâ' ),
+ 'Preferences' => array( 'Ôischtälungâ' ),
+ 'Watchlist' => array( 'Bäoobôchdungslisdâ' ),
+ 'Recentchanges' => array( 'Lädsdâ Änârungâ' ),
+ 'Upload' => array( 'Hoochlaadâ' ),
+ 'Statistics' => array( 'Schdadisdign' ),
+ 'Newpages' => array( 'Nojâ Sajdâ' ),
+ 'Allpages' => array( 'Ôlâ Sajdâ' ),
+ 'Prefixindex' => array( 'Indägs' ),
+ 'Specialpages' => array( 'Schbädsjaalsajdâ' ),
+ 'Contributions' => array( 'Bajdräächâ' ),
+ 'Emailuser' => array( 'Iimäjlâ' ),
+ 'Confirmemail' => array( 'Iimäjl bschdädigâ' ),
+ 'Movepage' => array( 'Sajdâ färschiibâ' ),
+ 'Categories' => array( 'Gadâgoriin' ),
+ 'Export' => array( 'Ägsbordiirn' ),
+ 'Allmessages' => array( 'Ôlâ Nôôchrichdâ' ),
+ 'Undelete' => array( 'Wiidârhärschdälâ' ),
+ 'Import' => array( 'Imbordiirn' ),
+ 'Unwatchedpages' => array( 'Unbäoobôchdâdâ Sajdn' ),
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Linggs undârschdrajchn:',
+'tog-highlightbroken' => 'Linggs auf sajdn, diis ned gajd, soo ôôdsajchn: <a href="" class="new">bajschbiil</a> (sunschd: soo<a href="" class="internal">?</a>)',
+'tog-justify' => 'Dhägsd in Blogsads',
+'tog-hideminor' => 'Glaane ändrungn ned ôôdsajchn',
+'tog-hidepatrolled' => 'Ned dsajchn in dâ „Ledschdâ Ändrungn“, was an andrar schon brüüfd had',
+'tog-showtoc' => 'Inhalds-fârdsajchnis ôôdsajchn baj määr wi 3 iiwârschrifdn',
+'tog-rememberpassword' => 'Uf dem Ghombjuudâr schdändich ôôgmäld blajwn',
+'tog-editwidth' => "S'âjgaawefäld sol soo braad wi dr bildschirm wärn",
+'tog-watchcreations' => 'Ale fon miir sälwâr gmachdn sajdn soln uf mâj beoobachdungs-lischdn',
+'tog-watchdefault' => 'Ale fon miir gändârdnd sajdn soln uf mâj beoobachdungs-lischdn',
+'tog-watchmoves' => 'Ale fon miir fârschoobnen sajdn soln uf mâj beoobachdungs-lischdn',
+'tog-watchdeletion' => 'Ale fon miir gleschdn sajdn soln uf mâj beoobachdungs-lischdn',
+'tog-minordefault' => 'Ale maj ändrungn soln als glaane geldn',
+'tog-previewontop' => 'Foorschau owârhalb un ned undârhalb fom arbajds-fenschdâr',
+'tog-previewonfirst' => 'Baj dr ärschdn ändrung imâr ärschd â foorschau ôôdsajchn',
+'tog-nocache' => 'Sajdn-cache ausschaldn',
+'tog-enotifwatchlistpages' => 'Ii wil â iimejl griign, wen sich was beoobachdeds ändârd',
+'tog-enotifusertalkpages' => 'Ii wil â iimejl griign, wen sich uf majnâr disghusjoons-sajdn was duud',
+'tog-enotifminoredits' => 'I wil aa baj bloos glaanân ädrungn â iimejl griign',
+'tog-enotifrevealaddr' => 'Maj iimejl-adresn in iimejls dsur benoochrichdichungs dâdsuu-schrajwn',
+'tog-shownumberswatching' => 'Dii andsôôl dr beoobachdâr ôôdsajchn',
+'tog-oldsig' => 'foorschau fon dr agduäln signaduur:',
+'tog-fancysig' => 'Signaduur is dhägsd in wighi-sindhags (alsâ ned audomaadisch â lingg)',
+'tog-externaleditor' => 'Schdandardwäässich an ägsdhärnân eedidhâr neemn (nôr for di sich ausghenn, dâdsuu
+mus mr ufm ajchnen rächnâr was ajrichdn gehnn)',
+'tog-externaldiff' => 'Â ägsdhärns Brogram dsum ôôdsjachn fon dâ wärsjoons-undârschiid neemn (nôr fir dii sich
+ausghenn, mr mus dâdsuu ufm ajchnen rächnâr was âjrichdn ghenn)',
+'tog-uselivepreview' => 'Schnäl-foorschau benudsn (brauchd JavaScript) (ärschd ân fârsuuch)',
+'tog-forceeditsummary' => 'Sich erinärn lasn, wemmâr ghâ dsusamnfasung gschriiwn had',
+'tog-watchlisthideown' => 'Ajchne bearbajdungn ned in dr beoobachdungs-lischdn uffiirn',
+'tog-watchlisthidebots' => 'Bot-bearbajdungn ned in dr beoobachdungs-lischdn uffiirn',
+'tog-watchlisthideminor' => 'Glaane bearbajdungn ned in dr beoobachdungs-lischdn uffiirn',
+'tog-watchlisthideliu' => 'Bearbajdungn fon ôôgmeldedn benudsârn ned in dr beoobachdungs-lischdn uffiirn',
+'tog-watchlisthideanons' => 'Bearbajdungn fon anoniimn benudsârn (IPs) ned in dr beoobachdungs-lischdn uffiirn',
+'tog-watchlisthidepatrolled' => 'Ghondroliirde bearbajdungn ned in dr beoobachdungs-lischdn uffiirn',
+'tog-ccmeonemails' => 'Schig mr â ghobii fon jeedâr iimejl, was ii fârschig',
+'tog-diffonly' => 'Bajm värsjoongs-fârglajch nôr dii fârändrungn ôôdsajchn, ned di fole sajdn dâdsuu',
+'tog-showhiddencats' => 'Fârschdegde ghadegoriin dsajchn',
+
+# Dates
+'january' => 'Januaar',
+'february' => 'Feebruaar',
+'march' => 'Märds',
+'april' => 'Abril',
+'may_long' => 'Maj',
+'june' => 'Juuni',
+'july' => 'Juuli',
+'august' => 'Auguschd',
+'september' => 'Säbdembär',
+'october' => 'Ogdoobär',
+'november' => 'Nowembär',
+'december' => 'Dädsembär',
+'january-gen' => 'fom Januaar',
+'february-gen' => 'fom Feebruaar',
+'march-gen' => 'fom Märds',
+'april-gen' => 'fom Abril',
+'may-gen' => 'fom Maj',
+'june-gen' => 'fom Juunii',
+'july-gen' => 'fom Juulii',
+'august-gen' => 'fom Auguschd',
+'september-gen' => 'fom Säbdembâr',
+'october-gen' => 'fom Ogdoowâr',
+'november-gen' => 'fom Nowembâr',
+'december-gen' => 'Fom Dädsembâr',
+'jan' => 'Jan.',
+'feb' => 'Feeb.',
+'mar' => 'Mär.',
+'apr' => 'Abr.',
+'may' => 'Maj',
+'jun' => 'Juun.',
+'jul' => 'Juul.',
+'aug' => 'Aug.',
+'sep' => 'Säb.',
+'oct' => 'Ogd.',
+'nov' => 'Now.',
+'dec' => 'Däds.',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|ghadegorii|ghadegoriin}}',
+'category_header' => 'Sajdn in dr ghadegorii „$1“',
+'subcategories' => 'Unda-ghadegoriin',
+'category-media-header' => 'Meedjen in dr ghadegorii „$1“',
+'category-empty' => "''Dsu däär ghadegorii ghärn dsur dsajd gâ sajdn odr meedjen.''",
+'hidden-categories' => '{{PLURAL:$1|Fârschdegde ghadegorii|Fârschdegde ghadegoriin}}',
+'category-subcat-count' => 'Di ghadegorii umfasd {{PLURAL:$2|bloos a undâr-ghadegorii|dsam $2 undâr-ghadegoriâ, wofoo {{PLURAL:$1|nôr ôône| $1}}}} undn ôôdsajchd wärn.',
+'category-article-count' => 'Di ghadegorii umfasd {{PLURAL:$2|bloos a sajdn|$2 sajdn, wofoo hiir {{PLURAL:$1|aane undn ôôdsajchd wärd|l$1 ôôdsajchd undn wärn}}}}.',
+'listingcontinuesabbrev' => '(Fôrdsedsung)',
+
+'newwindow' => '(Wärd in am najn fenschdâ daargschdeld)',
+'cancel' => 'Abbrechn',
+'mytalk' => 'Mâj disghusjoonssajdn',
+'navigation' => 'Nawigadsjoon',
+'and' => '&#32;un',
+
+# Cologne Blue skin
+'qbfind' => 'Findn',
+'qbbrowse' => 'Schdeewârn',
+'qbedit' => 'Ändrn',
+'qbpageoptions' => 'Sajdn-âjschdelungn',
+'qbmyoptions' => 'Mâj sajdn',
+'qbspecialpages' => 'Sondâr-sajdn',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Ân najn abschnid ôôfangn',
+'vector-action-delete' => 'Leschn',
+'vector-action-move' => 'Umdaafn',
+'vector-action-protect' => 'Schidsn',
+'vector-action-undelete' => 'Leschn riggängich machn',
+'vector-action-unprotect' => 'Schuds ufgeebn',
+'vector-namespace-category' => 'Ghadegorii',
+'vector-namespace-help' => 'Hilfe-sajdn',
+'vector-namespace-image' => 'Dadhaj',
+'vector-namespace-main' => 'Sajdn',
+'vector-namespace-media' => 'Meedjân-sajdn',
+'vector-namespace-mediawiki' => 'Mäldung fon MediaWiki',
+'vector-namespace-project' => 'Brojägd-sajdn',
+'vector-namespace-special' => 'Sondâr-sajdn',
+'vector-namespace-talk' => 'Disghusjoon',
+'vector-namespace-template' => 'Foorlaach',
+'vector-namespace-user' => 'Benudsâr-sajdn',
+'vector-view-create' => 'Ôôleechn',
+'vector-view-edit' => 'Bearbajdn',
+'vector-view-history' => 'Wärsjoonsfolche',
+'vector-view-view' => 'Leesn',
+'vector-view-viewsource' => 'Gwäl-dhägsd ôôgugn',
+'namespaces' => 'Nôômsrajm',
+'variants' => 'Warjandn',
+
+'errorpagetitle' => 'Feelär',
+'returnto' => 'Dsrig dsur sajdn $1.',
+'tagline' => 'Aus {{SITENAME}}',
+'help' => 'Hilfe',
+'search' => 'Suuche',
+'searchbutton' => 'Suchng',
+'searcharticle' => 'Af di sajdn',
+'history' => 'Wärsjoonsfolche',
+'history_short' => 'Wärsjoonsfolche',
+'updatedmarker' => "is gändârd wôrn sajde ds'ledschd dôô wôôr",
+'info_short' => 'Infôrmadsjoon',
+'printableversion' => 'Drug-wärsjoon',
+'permalink' => 'Beschdendichä lingh',
+'print' => 'Ausdrugâ',
+'edit' => 'Beärwâdn',
+'create' => 'Erdsojng',
+'editthispage' => 'Dii sajdn ändârn',
+'create-this-page' => 'Dii sajdn ôôleechn',
+'delete' => 'Leschn',
+'deletethispage' => 'Dii sajdn leschn',
+'undelete_short' => "{{PLURAL:$1|1 wärsjoon|$1 wärsjoon'n}} uugleschd machn",
+'protect' => 'Schidsn',
+'protect_change' => 'Ändârn',
+'protectthispage' => 'Dii sajdn schidsn',
+'unprotect' => 'Nime schidsn',
+'unprotectthispage' => 'Dii sajdn nime schidsn',
+'newpage' => 'Naje sajdn',
+'talkpage' => 'Iwâr dii sajdn disghudiirn',
+'talkpagelinktext' => 'Disghusjoon',
+'specialpage' => 'Schbedsjaal-sajdn',
+'personaltools' => 'Ajchne werchdsajch',
+'postcomment' => 'Najn abschnid',
+'articlepage' => "D'inhalds-sajdn dsajchn",
+'talk' => 'Disghusjoon',
+'views' => 'Ôôsichdn',
+'toolbox' => 'Werchdsajch-ghisdn',
+'userpage' => "D'benudsârsajdn dsajchn",
+'projectpage' => "D'brojägdsajdn dsjachn",
+'imagepage' => "D'dadhaj-sajdn dsajchn",
+'mediawikipage' => "D'meldungs-sajdn dsajchn",
+'templatepage' => "D'foorlachn-sajdn dsajchn",
+'viewhelppage' => "D'hilfe-sajdn dsajchn",
+'categorypage' => "D'ghadegorii-sajdn dsajchn",
+'viewtalkpage' => 'Disghusjoon',
+'otherlanguages' => 'In anäre schbrôôchng',
+'redirectedfrom' => '(Wajdagschigd fo $1)',
+'redirectpagesub' => 'Wajdalajdungs-sajdn',
+'lastmodifiedat' => "D'sajdn is dsledsd am $1 um $2 uur gändârd wôrn.",
+'viewcount' => 'Dii sajdn is bis jeds {{PLURAL:$1|aamôôl|$1-môôl}} fârlangd wôrn.',
+'protectedpage' => 'Gschidsde sajdn',
+'jumpto' => 'Wajdä mid:',
+'jumptonavigation' => 'Wohii gea',
+'jumptosearch' => 'Suchng',
+'view-pool-error' => "Schaad, di särwa ghumn grôd ned nôôch, wal dsfiil lajd dii
+sajdn ham woln. Ward n'bôôr minuudn un brobiir's dan nochâmôôl.
+
+$1",
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Was {{SITENAME}} is',
+'aboutpage' => 'Project:Iibär',
+'copyright' => 'Was hiir schdäd däfmâr benudsn nach $1',
+'copyrightpage' => '{{ns:project}}:Uurheewâr-rächde',
+'currentevents' => 'Was grôôd basiird is',
+'disclaimers' => 'Imbräsum',
+'disclaimerpage' => 'Project:Imbräsum',
+'edithelp' => 'Hilfe dsum beärbâdn',
+'edithelppage' => 'Help:Beärbâdn',
+'helppage' => 'Help:Inhalds-fârdsajchnis',
+'mainpage' => 'Haubdsajdn',
+'mainpage-description' => 'Haubdsajdn',
+'policy-url' => 'Project:Reechln',
+'portal' => 'Ajgang fir miidmachâr',
+'portal-url' => 'Project:Ajgang fir miidmachâr',
+'privacy' => 'Daadnschuds',
+'privacypage' => 'Project:Daadn-schuds',
+
+'badaccess' => 'Des däfsd duu ned',
+'badaccess-group0' => 'So ebâs däfsch duu ned machn',
+'badaccess-groups' => 'Des däfm bloos lajd machng, dii wo baj {{PLURAL:$2|där grubbm|anâr fon dâ grubm}} „$1“ sin.',
+
+'versionrequired' => "S'brauchd dii wärsjoon $1 fon MediaWiki.",
+
+'ok' => 'In ôrdnung',
+'retrievedfrom' => 'Fon „$1“ ghold',
+'youhavenewmessages' => "S'gajd $1 af dajnâr disghusjoons-sajdn ($2).",
+'newmessageslink' => 'naje middajlunga',
+'newmessagesdifflink' => 'lädschde fârendârung',
+'youhavenewmessagesmulti' => "S'gajd naje middajlungn: $1",
+'editsection' => 'Beärbâdn',
+'editold' => 'Bearbajdn',
+'viewsourceold' => 'Wighidhägsd dsajchn',
+'editlink' => 'beärbâdn',
+'viewsourcelink' => 'Wighidhägsd dsjachn',
+'editsectionhint' => 'Abschnid beärbâdn: $1',
+'toc' => 'Inhaldsfadsajchnis',
+'showtoc' => 'Dsajchn',
+'hidetoc' => 'Färschdeggn',
+'thisisdeleted' => "Nôr in's gleschde $1 najgugn odr $1 uugleschd machn?",
+'viewdeleted' => '$1 dsajchn?',
+'restorelink' => '$1 {{PLURAL:$1|gleschde wärsjoon|gleschde wärsjoon}}',
+'site-rss-feed' => 'RSS-Feed fir $1',
+'site-atom-feed' => 'Atom-Feed fir $1',
+'page-rss-feed' => 'RSS-Feed fir „$1“',
+'page-atom-feed' => 'Atom-Feed fir „$1“',
+'red-link-title' => '$1 (Di sajdn is ned dôô)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Sajdn',
+'nstab-user' => 'Benudsä-sajdn',
+'nstab-media' => 'Meedjân-sajdn',
+'nstab-special' => 'Sonda-sajdn',
+'nstab-project' => 'Brojägd-sajdn',
+'nstab-image' => 'Dadhaj',
+'nstab-mediawiki' => 'Sischdeem-mäldung',
+'nstab-template' => 'Foorlaach',
+'nstab-help' => 'Hilfs-sajdn',
+'nstab-category' => 'Ghadegorii',
+
+# Main script and global functions
+'nosuchaction' => 'Des schded ned dsur auswaal',
+'nosuchactiontext' => "Di agdsjoon, dii in dr URL schdäd, ged ned.
+Filajchd is di URL falsch gschriiwn, odr duu bisch âm falschn lingg nôôch.
+S'ghend aa â brogramiirfäälâr in dr sofdwäâr sâj, dii baj {{SITENAME}} lefd.",
+'nosuchspecialpage' => "Dii sôndâr-sajdn gajd's ned",
+'nospecialpagetext' => '<strong>Duu hasch â sôndâr-sajdn ôôgruufn, dii wo uugildich is.</strong>
+
+Â lsidn mid richdichn sôndâr-sajdn findsch undâr [[Special:SpecialPages|{{int:specialpages}}]].',
+
+# General errors
+'error' => 'Feelâr',
+'databaseerror' => 'Feelâr fon dr Daadnbangg',
+'dberrortext' => 'Bam abfrôôchn fon dr daadnbangg is was schiif gangn.
+Filajchd weechn am brogramiir-feelâr?
+Jeednfals wôôr di ledsd abfrôôchn:
+<blockquote><tt>$1</tt></blockquote>
+aus dr fungdsjoon „<tt>$2</tt>“.
+Un dôôdruf had dan di daadnbangg den feelâr „<tt>$3: $4</tt>“ gmeld.',
+'dberrortextcl' => 'Dii daadnbangg-abfrôôchn wôôr falsch gschriiwn.
+Di abfrôôchn wôôr neemlich
+<blockquote><tt>$1</tt></blockquote>
+aus dr fungdsjoon "<tt>$2</tt>". Un dôôdruf had dan di daadnbangg den feelâr „$3: $4“ gmeld.',
+'laggedslavemode' => "'''Achdung:''' Filajchd dsajchd dii sajdn noch ned ales, was indswischn gändârd wôrn is.",
+'readonly' => 'Di daadnbangg is gschbärd.',
+'enterlockreason' => 'Bide schrajb, wisoo dii daadnbangg gschbärd wärn sol, un wi lang des dan dauârn mechd.',
+'readonlytext' => "Di daadnbangg is grôôd gschbärd, alsâ ghamâr nids naj râjschrajwn odr ändrn. Brobiir's hald schbäädr noch âmôôl.
+
+Gschbärd is se desdâweechn: $1",
+'missing-article' => "Di daadnbangh had dii sajdn „$1“ $2 ned gfundn.
+
+Wen des basiird, dan massdn`s, wemma â dsu alde bearbajdung ôôschaua wil odâ ane fonra gleschdn sajdn.
+
+Wen's des ned is, bisd womeeglich iwa ân feela in dr sofdwäâr gschdolbäd. In dämm Fall melds´däs, bidde mid där URL, am [[Special:ListUsers/sysop|Administrator]].",
+'missingarticle-rev' => '(wärsjoonsnumâr: $1)',
+'badtitletext' => "Dii fârlangde sajdn gibd's ned, odâr sii had ân uugildichn sajdnnôôma ghabd, odâr s'wôôr â gschlambdâr fârwajs fonâm andârn wighi häär. Filajchd is aa â buuchschdôôb drin'n, däär in sajdnnôôm gôôr ned schdena däf.",
+'viewsource' => 'Gwäl-dhägsd ôôgugn',
+
+# Login and logout pages
+'yourname' => 'Benudsârnôômâ',
+'yourpassword' => 'Bhaswôrd:',
+'remembermypassword' => 'Af dem ghombjuudâr schdändich ôôgmäld blajm',
+'login' => 'Ôômeldn',
+'nav-login-createaccount' => 'Oomeldn / Ghondoo ooleeng',
+'userlogin' => 'Ôômeldn / Als Bajdräächâr ajschrajm',
+'logout' => 'Abmeldn',
+'userlogout' => 'Abmeldn',
+'nologinlink' => 'Sich als najâr Ôôgmeldâr ôômäldn',
+'mailmypassword' => 'Â najs passwôrd iwâr iimejl dsuschign lasn',
+
+# Edit page toolbar
+'bold_sample' => 'Dägsd in fäd',
+'bold_tip' => 'Fädâr dhägschd',
+'italic_sample' => 'Ghursiif-dhägsd',
+'italic_tip' => 'Ghursiif-dhägsd',
+'link_sample' => 'Lingg-dhägsd',
+'link_tip' => 'Lingg inârhalb fom Wighi',
+'extlink_sample' => 'http://www.example.com Lingg-dhägsde',
+'extlink_tip' => 'Lingg nach ausârhalb (achdung, „http://“ ghäärd fôrnewäch dâdsu)',
+'headline_sample' => 'Iiwârschrifd 2. ôrdnung',
+'headline_tip' => 'Iiwârschrifd 2. ôrdnung',
+'math_sample' => 'Dô dii fôrml (in TEX) nâjschrajm',
+'math_tip' => 'Mademaadische Fôrml (in LATEX)',
+'nowiki_sample' => 'Dô än uunfôrmadiirdn dhägsd nâjschrajm',
+'nowiki_tip' => 'Uufôrmadiirdâr dhägsd',
+'image_tip' => 'Âjbedâde dadaj',
+'media_tip' => 'Lingh af â meedjâ-dadaj',
+'sig_tip' => "Dâj signadhuur dsamm mid'm dadum",
+'hr_tip' => 'Horidsondaalâr schdrich (bide schbôôrsam âjsedsâ)',
+
+# Edit pages
+'summary' => 'Dsamfasung:',
+'subject' => 'Bedräf:',
+'minoredit' => 'Blos a weng wôs is gändârd wôrn',
+'watchthis' => 'Dii sajdn undâr beoobachdung nämma',
+'savearticle' => 'Sajdn schbajchän',
+'preview' => "Dii sajdn, wii's wärn dääd",
+'showpreview' => "Schbign, wii's wärn dääd",
+'showdiff' => 'Fârendârungn ôôdsajchn',
+'anoneditwarning' => 'Duu hôsd Di ned ôôgmäld dsum ändârn fo derä sajdn. Wennsd´äs uuôôgmäld ändârsd un schbajchârsd, dan wärd Dâj IP-adresn endgildich mid in iirn ändârungsfârlaaf najgschriim un ghan dan eewich fo jeedn ghinfdich gleesn wärn.',
+'missingsummary' => "'''Achdung:''' Du hasd bis jeds ghâ Dsamfasung dâdsuugschriiwn. Wen De's jeds ned noch mechsd un dan schbajchârsd, dan wärd Daj ändârung gands oone gmachd.",
+'missingcommenttext' => "Schrajb bide aa â dsamfasung, dâmid mr siid, wieso Duu g'ändârd hasd un waas.",
+'missingcommentheader' => "'''Achdung:''' Du hasd hindâr „Bedräf:“ gha ghinfdiche iiwârschrifd ôôgääwn. Wen De's ned noch mechsd un schbajchârsd, dan wäd's gands oone iiwârschrifd iwârnomn.",
+'summary-preview' => "Was in'd dsusammfasungsdsajln najghumd:",
+'subject-preview' => 'Wii dr bedräf aussään wärd:',
+'blockedtitle' => 'Dr bajdreechâr is gschbärd.',
+'blockedtext' => "'''Du bisd gschbärd wôrn, jee nachdeem mid'm nôômn odâr mid dr IP-adresn.'''
+
+Gmachd had des: $1
+Desweechn: ''$2''
+
+* Dii schbärung had dôô ôôgfangn: $8
+* Dii schbärung lefd dôô aus: $6
+* Des is dâbaj gschbärd: $7
+
+Du ghôôsch De grood an $1 wendn odâr aa an ân andârn [[{{MediaWiki:Grouppage-sysop}}|adminischdraadr]], wen De driiwâr disghudiirn wilst.
+
+Wen De ghâ gildiche iimejl-adresn in Dajn [[Special:Preferences|Ajschdelungn]] ôôgeewen hasd, odr wen mr des iimejln fir Dii gschbärd had, dan ged des ned iiwâr „Iimejl an den bearbajdâr“.
+
+Dâj IP-adressn is: $3
+Dii schbärr-ID is: $5
+Schrajb des bide als dâdsu, wen De Dich meldsd.",
+'newarticle' => '(Naj)',
+'newarticletext' => "Duu bisd âm fârwajs gfolchd, däär noch af ghâ sajdn dsajchd.
+Um dii sajdn ôôdsleechn, schrajb Dajn dhägsd in deen rôôma dô undn naj (fir aandslhajdn, schau af dâr [[{{MediaWiki:Helppage}}|hilfesajdn]] nôôch).
+Wen'D dich awâr hiirhäär bloos fârlaafn hasd, glig ââfach af '''Zurück''' in Dajm brausâr, dan geedâr dôôhi dsrig, wos'D häärghumma bisd.",
+'noarticletext' => 'Dii sajdn gibd\'s bis eds no ned.
+Duu ghâusch nach däm ausdrug aa [[Special:Search/{{PAGENAME}}|in alle sajdn suchng]],
+<span class="plainlinks"> [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} in di dsugheerichng log-biichâr suchng] odâr dii sajdn [{{fullurl:{{FULLPAGENAME}}|action=edit}} ôôleeng un najschrajm]</span>.',
+'previewnote' => "'''Hiir siggsd bloos, wii's wärn dääd, dii sajdn is ôbâr no ned gschbaichärd!'''",
+'editing' => 'Beärbâdn fon $1',
+'editingsection' => 'Beärwâdn fo $1 (bloos abschnid)',
+'copyrightwarning' => "''Ghobhiir jôô ghâ web-sajdn, dii där ned ghärn, un benuds ghâ uurheewarrechdlich gschidsde wärgghe oone geneemichung fom uurheewâr!'''<br />
+Hirmid sagsd, das Du den dhägsd '''selbâr gschriim''' hasd, das däär dhägsd algemajnguud is '''(public domain)''' odâr das där '''uurheewâr'' dâmid '''ajfârschdandn''' is. Wen där dhägsd scho woanärsch fârefendlichd wôrn is, dan schrajb des bidde uf där disghusjoonssajdn.
+<i>Achdung, ale {{SITENAME}}-bajdreech faln audomaadisch undâr di „$2“ (ajndslhajdn dâdsuu baj $1). Wen'd awâr doch ned wilsd, das des waas'd hiir gschriim hasd, fo annäre g'ändârd odär fârbrajded wäd, dan däfsd ned „Sajdn schbajchârn“ glign.</i>",
+'templatesused' => 'Af däär sajdn {{PLURAL:$1|wärd|wärn}} dii folchnde foorlach benudsd:',
+'templatesusedpreview' => 'Fon däär sajdnvorschau {{PLURAL:$1|wärd dii folchende foorlaach|wärn die folchendn foorlaachn}} benudsd:',
+'template-protected' => '(schrajbgschidsd)',
+'template-semiprotected' => '(ned ôôgmeldede un naje benudsär däfn hiir ned schrajm)',
+'hiddencategories' => 'Dii sajdn ghäärd dsu {{PLURAL:$1|aanâr fârschdegdn|$1 fârschdegde}} ghadegoriin:',
+'permissionserrorstext-withaction' => 'Du däfsd ned $2, des{{PLURAL:$1||}}dâsweechn:',
+
+# History pages
+'viewpagelogs' => 'Logbicher fär dii sajdn dsajchn',
+'currentrev-asof' => 'Jedsiche wärsjoon, am $2 um $3 gmachd',
+'revisionasof' => 'Wärsjoon fom $2 um $3 Uur',
+'previousrevision' => '← wärsjoon dâfoor',
+'nextrevision' => 'Nägsdnajâre wärsjoon →',
+'currentrevisionlink' => 'Geechnwärdiche wärsjoon',
+'cur' => 'undârschiid dsur jedsichng fasung',
+'last' => 'Foorhäärich',
+'histlegend' => "Wääl aus, wasde fär ân undârschiid seen wilsd, un glig dan undn „{{int:compareselectedversions}}“.<br />
+* '''({{int:cur}})''' = undârschiid dsur geechnwärdichn wärsjoon, '''({{int:last}})''' = undârschiid dsur foorichn wärsjoon
+* Uurdsajd/Daadum = wärsjoon dsu dära dsajd, '''{{int:minoreditletter}}''' = glane ändärung.",
+'history-fieldset-title' => 'Suchng in där wärsjoonsfolche',
+'histfirst' => 'Äldâschde',
+'histlast' => 'Najsde',
+
+# Revision deletion
+'rev-delundel' => 'ôôdsajng/fârbärng',
+'revdel-restore' => 'Ändârn, was oodsajchd wäd',
+
+# Merge log
+'revertmerge' => 'Dsrig fôr dii fârajnichung',
+
+# Diffs
+'history-title' => 'Wärsjoonsfolche fo „$1“',
+'difference' => '(Undârschiid dswischâ wärsjoonâ)',
+'lineno' => 'Dsajln $1:',
+'compareselectedversions' => 'Ausgwäälde wärsjoona fârglajchn',
+'editundo' => 'riggängich machng',
+
+# Search results
+'searchresults' => 'Bam suchng gfundne sachng',
+'searchresults-title' => 'Gfundn bam suchng nach „$1“',
+'searchresulttext' => 'Wenn´sd wisn wilsd, wii genau mä´ alles af {{SITENAME}} suchng ghôô, dan gug af dâr [[{{MediaWiki:Helppage}}|Hilfssajdn]] nôôch.',
+'searchsubtitle' => 'Gsuchd wä´n soll nach: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aln sajdn, dii wo mid „$1“ ôôfangn]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aln sajdn, dii wo af „$1“ fârwajsn]])',
+'searchsubtitleinvalid' => 'Daj Suchanfraache: „$1“.',
+'notitlematches' => 'Gha sajdn gfundn, däärn nôômâ basn dääd',
+'notextmatches' => 'Närchnds gfundn.',
+'prevn' => '{{PLURAL:$1|foorichâr|fooriche $1}}',
+'nextn' => '{{PLURAL:$1|nägschdâr|nägschde $1}}',
+'viewprevnext' => 'Dsajch ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 wôrd|$2 wärdâr}})',
+'search-result-score' => 'Âjschleechich: $1 %',
+'search-redirect' => '(Wajdalajdung fon „$1“ häa)',
+'search-section' => '(Abschnid $1)',
+'search-suggest' => 'Hasd ajchndlich gmaand „$1“?',
+'search-interwiki-caption' => 'Schwesder-brojägd',
+'search-interwiki-default' => 'Af $1 gfundn:',
+'search-interwiki-more' => '(noch mäa´)',
+'search-mwsuggest-enabled' => 'mid foorschleech',
+'search-mwsuggest-disabled' => 'ghane foorschlääch',
+'search-relatedarticle' => 'Fârwande',
+'mwsuggest-disable' => 'Foorschlääch iwâr AJAX abschdelâ',
+'searcheverything-enable' => 'In aln naamsrajm suuchn',
+'searchrelated' => 'fârwand',
+'searchall' => 'ale',
+'showingresults' => "Hiâr {{PLURAL:$1|is '''1'''|sin '''$1'''}} Ärgääbnis , ôôgfangn baj numâr '''$2.'''",
+'showingresultsnum' => "Hiâr {{PLURAL:$3|is '''1''' |sin '''$3''' }} Ärgääbnis, oogfangn baj numâr '''$2.'''",
+'showingresultsheader' => "{{PLURAL:$5|Ärgääbnis '''$1''' don '''$3'''|Ärgääbnis '''$1–$2''' fon '''$3'''}} fir '''$4'''",
+'nonefound' => "'''Oobachd:''' Oone wajdas wäd bloos in ajniche Nôômârajm gsuuchd. Wen'd iwarôôl (aa in disghusjoon'n, foorlaachn usw.) suchng wilsd, musd ''all:'' foorschrajm, oda aa den nôôma (midâm dobl-bhungd) fo genau dem nôômaraum, fon dem de waasd, dass´es nur in däm drin saj ko.",
+'search-nonefound' => 'Dsu dajna suuchfrôôchn is nigs gfundn wôrn.',
+'powersearch' => 'Suuche mid mäa oogaabm',
+'powersearch-legend' => 'Suuche mid mäa oogaam',
+'powersearch-ns' => 'In dena Nôômâsrajm suchng:',
+'powersearch-redir' => 'Wajdälajdunga oodsajng',
+'powersearch-field' => 'Suuch nôôch:',
+'powersearch-togglelabel' => 'Wääl aus:',
+'powersearch-toggleall' => 'Ale dsam',
+'powersearch-togglenone' => 'Gôôr ghane',
+'search-external' => 'Ägsdärne suach',
+'searchdisabled' => 'Diâ {{SITENAME}}-suâch ist ausgschald. Duu ghâusch so lang mid Google suâchn. Dengg drâu, des was mr dôô fir {{SITENAME}} find, ghâu iwârhoold saj.',
+
+# Quickbar
+'qbsettings' => 'Sajdn-lajsdn',
+'qbsettings-none' => 'Ghane',
+'qbsettings-fixedleft' => 'Lings, feschd',
+'qbsettings-fixedright' => 'Rächds, feschd',
+'qbsettings-floatingleft' => 'Lings, schwääbnd',
+'qbsettings-floatingright' => 'Rächds, schwääbnd',
+
+# Preferences page
+'preferences' => 'ajschdelunga',
+'mypreferences' => 'Maj ajschdelunga',
+'prefs-edits' => 'So ofd umgmoodld:',
+'prefsnologin' => 'Ned ôôgmäld',
+'prefsnologintext' => 'Ärschd wen\'d <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} ôôgmäld]</span> bisch, ghôôsch dâj âjschdelungn ändârn.',
+'changepassword' => "S'bhaswôrd ändârn",
+'prefs-skin' => 'Schaale',
+'skin-preview' => 'Môôl schbign',
+'prefs-math' => 'TeX',
+'datedefault' => 'Nôrmaal',
+'prefs-datetime' => 'Daadum un dsajd',
+'prefs-personal' => 'Benudsâr-daadn',
+'prefs-rc' => 'Ledschde Ändrungn',
+'prefs-watchlist' => 'Beoobachdungs-lischdn',
+'prefs-watchlist-days' => 'Wiifiil dääch dsrig in dr beoobachdungs-lischdn:',
+'prefs-watchlist-days-max' => 'Hechschdns 7 dääch',
+'prefs-watchlist-edits' => 'Wiifiil âjdrääch hechschdens:',
+'prefs-watchlist-edits-max' => 'Hegschd-dsôôl: 1000',
+'prefs-watchlist-token' => "Token fir d'beoobachdungs-lisdn",
+'prefs-misc' => 'Diff-graam',
+'prefs-resetpass' => 'S#bhaswôrd ändârn',
+'prefs-email' => 'Iimejl-ajschdelungn',
+'prefs-rendering' => 'Ufbuds',
+'saveprefs' => 'Aâjschdelungn schbajchrn',
+'resetprefs' => 'Nigs iwârneemn',
+'restoreprefs' => 'Uf dii uur-ajschdelungn dsrig',
+'prefs-editing' => 'Bearbajdungs-fenschdâr',
+'prefs-edit-boxsize' => 'Grees fom bearbajdungs-fenschdâr:',
+'rows' => 'Soofiil dsajln:',
+'columns' => 'Soofiil schbaldn',
+'searchresultshead' => 'Suuchn',
+'resultsperpage' => 'Broo rudsch dsajchn:',
+'contextlines' => 'Dsajln fir jeedn fund:',
+'contextchars' => 'Soofiil dsjachn broo dsjaln:',
+'recentchangesdays' => 'Wiifiil dääch dsrig baj „Ledschdn ändrungn“',
+'recentchangesdays-max' => 'Hegschdns $1 {{PLURAL:$1|daach|dääch}}',
+'recentchangescount' => 'Wiifiil ändrungn dsrig baj „Ledschdn ändrungn“',
+'localtime' => 'Hiisiche Uurdsajd:',
+'timezoneuseserverdefault' => 'Dsajd-dsoon fom server neem',
+'timezoneuseoffset' => 'Andre dsajd-dsoon (fârschiiwung undn ajndraachn)',
+'timezoneoffset' => 'Fârschiiwung¹:',
+'servertime' => 'Uurdsaj ufm Server',
+'guesstimezone' => 'Fom brausa iwârneem',
+'timezoneregion-africa' => 'Afrighaa',
+'timezoneregion-america' => 'Ameerighaa',
+'timezoneregion-antarctica' => 'Andargdis',
+'timezoneregion-arctic' => 'Argdis',
+'timezoneregion-asia' => 'Aasjâ',
+'timezoneregion-atlantic' => 'Adlandischâr oodseaan',
+'timezoneregion-australia' => 'Asufraaljâ',
+'timezoneregion-europe' => 'Ojroobhaa',
+'timezoneregion-indian' => 'Indischâr oodseaan',
+'timezoneregion-pacific' => 'Bhadsiifischâr Oodseaan',
+'allowemail' => 'Iimejl-embfang fon andrâ ôôschdeln',
+
+# Groups
+'group-sysop' => 'Adminisdradoorn',
+
+'grouppage-sysop' => '{{ns:project}}:Adminisdradoorn',
+
+# User rights log
+'rightslog' => 'Brodoghol fo rächde-dsuudaalung an bearbajdâr',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => "dii sajdn ds'beärbâdn",
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|ändrung|ändrunga}}',
+'recentchanges' => 'ledsde änderunga',
+'recentchanges-legend' => 'Âjschdelunga, wii di ledsdn ändrunga dsajchd wärn solln',
+'recentchanges-feed-description' => 'Fârfolch mid dem Fiid dii ledsdn ändrungn in {{SITENAME}}.',
+'rcnote' => "Des {{Plural:$1|is dii aane ändrung|sin dii '''$1''' ändrunga}}, dii in di {{Plural:$2|ledsdn 24 schdundn|ledsdn '''$2''' doochn}} gmachd wôrn {{Plural:$1|is|sin}}. Schdand is fom $4, $5 uur.",
+'rclistfrom' => 'Bloos di ändrunga dsajchn sajd $1',
+'rcshowhideminor' => 'Glenâre Ändrungn $1',
+'rcshowhidebots' => 'Bods (bearbajdâr, dii ajchendlich brograme san) $1',
+'rcshowhideliu' => 'Ôôgmäldâde bearbajdâr $1',
+'rcshowhideanons' => '$1 uuôôgmäldâde bearbajdâr',
+'rcshowhidemine' => 'Ajchne bajdrääch $1',
+'rclinks' => 'Dsajch dii ledsdn $1 ändrunga fo di ledsdn $2 dooch.<br />$3',
+'diff' => 'undârschiid',
+'hist' => 'Wärsjoonsfolche',
+'hide' => 'fârschdegn',
+'show' => 'dsajchn',
+'minoreditletter' => 'g',
+'newpageletter' => 'N',
+'boteditletter' => 'B',
+'rc-enhanced-expand' => 'Ajndslhajdn ôôdsajchn (gäd bloos mid JavaScript)',
+'rc-enhanced-hide' => 'Glaanichghajdn ned dsajng',
+
+# Recent changes linked
+'recentchangeslinked' => 'Ändärunga af sajdn, af dii fo hiir fârwiisn wäd',
+'recentchangeslinked-title' => 'Ändrunga an sajdn, af dii fo „$1“ aus fârwiisn wärd.',
+'recentchangeslinked-summary' => "Dii sôndârsajdn fiird di ledsdn ändrunga fon sajdn af, dii wo an däär hiir drôôhänga. Alles, was de dâfoo in daj [[Special:Watchlist|beoobachdunglisdn]] aufgnumma hasd, wäd aa no '''fäd''' ôôdsajchd.",
+'recentchangeslinked-page' => 'Sajdn:',
+'recentchangeslinked-to' => 'Dsajch dii ändrunga af sajdn, di woo hirhäär fârwajsn',
+
+# Upload
+'upload' => 'Nauflôôdn',
+'uploadlogpage' => 'Brodoghol fom dadaj-hoochlôôdn',
+'uploadedimage' => 'had „[[$1]]“ naufglôôdn',
+
+# File description page
+'filehist' => 'Wärsjoona bis eds',
+'filehist-help' => 'Glig af ân dsajdbhungd, um dii dôômôôliche fasung ôôdsuschaua',
+'filehist-current' => 'agduäl',
+'filehist-datetime' => 'Âjschdlungs-daadum un -dsajd',
+'filehist-thumb' => 'Schbigbildlâ',
+'filehist-thumbtext' => "Wii d'fasung fom $2, $3 Uur grâub aussiid",
+'filehist-user' => 'Ôôgmeldâr',
+'filehist-dimensions' => 'Maase',
+'filehist-filesize' => 'Dadajgräâs',
+'filehist-comment' => 'Sembf dâdsuâ',
+'filehist-missing' => 'Dadaj fääld',
+'imagelinks' => 'Dsajchn, wo dii dadaj als benudsd wärd',
+'linkstoimage' => 'Dii dadaj wäd fo {{PLURAL:$1|därâ |denâ $1 }} sajdn benudsd:',
+'linkstoimage-more' => "Määr wii {{PLURAL:$1|ane |$1 }} sajdn fârwajsn uf diâ dadaj.
+Dii lisdn undn dsajch dâfâu nôr äärschd môôl {{PLURAL:$1|an|$1}} fârwajs.
+S'gajd awâr aa â [[Special:WhatLinksHere/$2|lisdn mid alâ fârwajs]].",
+'nolinkstoimage' => 'Diâ dadaj wärd närchends benudsd.',
+'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Diâ folchende]] fârwajs uf diâ dadaj.',
+'redirectstofile' => 'Diâ {{PLURAL:$1|folchende dadaj schigd|folchende $1 dadajâ schigâ}} uf diâ dadaj wajdâr:',
+'duplicatesoffile' => 'Dii {{PLURAL:$1|folchende dadaj is â dublighaad|folchende $1 dadajâ sn dublighaade}} fon dâr dadaj ([[Special:FileDuplicateSearch/$2|wajdâre ôôndlshajdâ]]):',
+'sharedupload' => 'Dii dadaj ghumd fo $1, un mär däf se fär annäre brojägd aa ´heernemâ.',
+'sharedupload-desc-there' => 'Dii dadaj ghumd fon $1, un mr däf se fir andârâ brojägd aa nemâ. Genauârs schded uf dr [$2 beschrajwungssajdâ fon dr dadaj].',
+'uploadnewversion-linktext' => 'Â naje wärsjoon fo derä dadaj nauflôôdn',
+
+# Statistics
+'statistics' => 'Schdadisdig',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|Bajd|Bajds}}',
+'ncategories' => '$1 {{PLURAL:$1|GhadegoriiGhadegoriin}}',
+'nmembers' => '{{PLURAL:$1|1 âjdrôôch|$1 âjdrääch}}',
+'prefixindex' => 'Ale sajdn mid brääfigs',
+'newpages' => 'Naje sajdn',
+'move' => 'Umdaafn',
+'movethispage' => 'Sajdn umdaafn',
+'pager-newer-n' => '{{PLURAL:$1|nägschdâr|nägschd $1}}',
+'pager-older-n' => '{{PLURAL:$1|foorichâr|fooriche $1}}',
+
+# Book sources
+'booksources' => 'ISBN-Suuche',
+'booksources-search-legend' => 'Gugn, woo mr biâchâr häärgrichd',
+'booksources-go' => 'Loos-suchng',
+
+# Special:Log
+'log' => 'Logbicher',
+
+# Special:AllPages
+'allpages' => 'Ale sajdn',
+'alphaindexline' => '$1 bis $2',
+'prevpage' => 'Fooriche sajdn ($1)',
+'allpagesfrom' => 'Sajdn ôôdsajchn ab:',
+'allpagesto' => 'Sajdn ôôdsajchn bis:',
+'allarticles' => 'Ale sajdn',
+'allpagessubmit' => "Loos gäd's.",
+
+# Special:LinkSearch
+'linksearch' => 'Linggs nach ausârhalb',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Brodoghol iwâr dii naja bearbajdâr-ôômeldunga',
+'newuserlog-create-entry' => 'Eds hasd a benudsâr-ghondoo',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(Lisdn fon dâ midgliidâr)',
+
+# E-mail user
+'emailuser' => 'Dem ôôgmeldn â iimejl schign',
+
+# Watchlist
+'watchlist' => 'Maj beoobachdungs-lisdn',
+'mywatchlist' => 'Mâj beoobachdungslisdn',
+'watchlistfor' => "(fär '''$1''')",
+'addedwatch' => 'Wärd ab jeds beoobachd',
+'addedwatchtext' => "Di sajdn „[[:$1]]“ schdäd eds mid af dajnâr [[Special:Watchlist|beoobachdungs-lisdn]] .
+
+Wen sich af der sajdn oda iirâr disghusjoons-sajdn was duud, wärd se ab eds
+ af di „[[Special:RecentChanges|Ledsdn ändrunga]]“ fäd dâdsuugschriim.
+
+Wenns'd dii sajdn irchendwan amôl nimä fârfolchn wilsd, musd bloos af „{{int:Unwatch}}“ glign.",
+'removedwatch' => 'Wärd eds nimä´ beoobachd',
+'removedwatchtext' => 'Dii sajdn „[[:$1]]“ is fo Dajnâr [[Special:Watchlist|beoobachdungslisdn]] nundârgnumma.',
+'watch' => 'Beoobachdn',
+'watchthispage' => 'Dii sajdn undâr beoobachdung nämâ',
+'unwatch' => 'Nimmä beoobachdn',
+'watchlist-details' => 'Duu häldsch {{PLURAL:$1|1 sajdn|$1 sajdn}} undâr beoobachdung.',
+'wlshowlast' => 'Dsajch dii ändrunga fo di ledsdn $1 schdundn, $2 dooch odär $3',
+'watchlist-options' => 'Was un wii alles af Dajnâr beobachdungslisdn dsajchd wärn sol',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Ghumd undâr beoobachdung ...',
+'unwatching' => 'Beobachdn ajschränggn',
+
+# Delete
+'deletepage' => 'Sajdn leschn',
+'confirmdeletetext' => "Duu bisd grôd dâbaj, â sajdn midsamd alle dsugheeriche alde wärsjoona ds'leschn. Bide beschdäädich, das De wasd, was des als bewirgd, un das De Dich dâbaj aa an d'[[{{MediaWiki:Policy-url}}|richliinjen]] fo dem wighi hiir häldsd.",
+'actioncomplete' => 'Erleedichd',
+'deletedtext' => '„<nowiki>$1</nowiki>“ is gleschd wôrn. Im $2 findsd â lisdn mid dâ ledsdn leschunga.',
+'deletedarticle' => 'had „[[$1]]“ gleschd',
+'dellogpage' => 'Logbuch fo di leschunga',
+'deletecomment' => 'Grund:',
+'deleteotherreason' => 'Noch a Grund dâfiir:',
+'deletereasonotherlist' => 'Andrâr Grund',
+'deletereason-dropdown' => "* Iibliche Grind fir's Leschn
+** Wal's dr Audhoor woln had
+** Wal's uurheewâr-rechd iwârdreedn wôrn is
+** Wal anâr nôr ghausd had",
+'delete-edit-reasonlist' => "D'grind fir's leschn ändârn",
+'delete-toobig' => "Dii sajdn had iiwâr $1 {{PLURAL:$1|Wersjoon|Wersjoon'n}}, des is fiil. Solche sajdn däf mr nima miir nigs diir nigs leschn, damid dii seewâr ned in d'gnii geen.",
+'delete-warning-toobig' => "Dii sajdn had mäa wii $1 {{PLURAL:$1|wärsjoon|wärsjoon'n}}, des is fiil. Wem ma solchene leschd, ghan dr seerwâr fiir {{SITENAME}} ins scholbârn ghomn.",
+
+# Rollback
+'rollback' => "D'ändrungn riggängich machn",
+'rollback_short' => 'riggängich machn',
+'rollbacklink' => 'Dsrigsedsn',
+'rollbackfailed' => 'Riggängich machn is ned gangn.',
+
+# Protect
+'protectlogpage' => 'Sajdnschbär-Logbuch',
+'protectedarticle' => 'had „[[$1]]“ gschbärd',
+'modifiedarticleprotection' => 'had gändârd, wii arch „[[$1]]“ gschbärd is',
+'protectcomment' => 'Grund:',
+'protectexpiry' => 'Schbär-dauâr:',
+'protect_expiry_invalid' => 'Dii ôôgeemne schbärdsajd is uugildich.',
+'protect_expiry_old' => 'Dii schbärdsajd is scho ausglofn.',
+'protect-text' => 'Dôô koosd dii fârschiida schbärn fon där sajdn „<nowiki>$1</nowiki>“ ôôschaua un ändârn.',
+'protect-locked-access' => "Duu hôsd nach Dajm Ôôgmäldnschdand (fgl. Daj ghondo) ned des odâr diâ rechd, um an där schbäre fon derär sajdn was ds'ändârn. Däärdsajd sin dii gsedsdn schbärn fir dii sajdn '''„$1“:'''",
+'protect-cascadeon' => 'Dii sajdn is däärdsajd daal fon âm reghursiifâ schbärn. Des ged iwâr {{PLURAL:$1|folchende sajdn|dii folchendn sajdn}} wech, un wal dii reghursiif gschbärd {{PLURAL:$1|is|san}}, isâs aa dii sajdn hiir. Ob mr jeds hiir loghaal schbärd odr endschbärd, des endârd alâs nigs drôô, was an schbärung fon da heer iwârghomd.',
+'protect-default' => 'Ale benudsâr',
+'protect-fallback' => "Des brauchd des „$1“-rächd, sunsch gäd's ned.",
+'protect-level-autoconfirmed' => 'Naje un ned regischdriirde benudsâr schbärn',
+'protect-level-sysop' => 'Bloos adminischdraadoorn däfm',
+'protect-summary-cascade' => 'reghursiif gschbärd',
+'protect-expiring' => 'bis $2, $3 Uur (UTC)',
+'protect-cascade' => 'Reghursiife schbärâ - ale hiir af där sajdn ajbundne foorlôôchn soln aa gschbärd wärn.',
+'protect-cantedit' => 'Du ghansd ned ändan, was mär auf däa sajdn däf, wal duu hiir gôôr nigs ändârn däfsd.',
+'restriction-type' => 'Was erlaubd is:',
+'restriction-level' => 'Ausmôôs fom schbärn:',
+
+# Undelete
+'undeletelink' => 'ôôgugn/dsrighooln',
+'undeletedarticle' => 'had „[[$1]]“ widârhäärgschdeld',
+
+# Namespace form on various pages
+'namespace' => 'Nôômâraum:',
+'invert' => 'Auswaal umdreâ',
+'blanknamespace' => '(Sajdn)',
+
+# Contributions
+'contributions' => 'Ajchne bajdrääch',
+'contributions-title' => 'Bajdrääch fo „$1“',
+'mycontris' => 'Maj bajdreech',
+'contribsub2' => 'Fär $1 ($2)',
+'uctop' => '(ledsdâr schdand)',
+'month' => 'bis moonad:',
+'year' => 'bis dsum jôôr:',
+
+'sp-contributions-newbies' => 'Bloos bajdrääch fo naj Ôôgmeldâ dsajchn',
+'sp-contributions-blocklog' => 'Schbär-brodoghol',
+'sp-contributions-search' => 'Bajdreech suchng',
+'sp-contributions-username' => 'IP-adresn odär nôômâ fom Ôôgmeldn:',
+'sp-contributions-submit' => 'Suchng',
+
+# What links here
+'whatlinkshere' => 'Linggs af däj Saidn',
+'whatlinkshere-title' => 'Sajdn, di af „$1“ fârwajsn',
+'whatlinkshere-page' => 'Sajdn:',
+'linkshere' => "Dii afgfiirdn sajdn fârwajsn af ''„[[:$1]]“''':",
+'isredirect' => 'Wajdârlajdungssajdn',
+'istemplate' => 'Foorlaachn-ajbindung',
+'isimage' => 'fârwajs af des bild hiir',
+'whatlinkshere-prev' => '{{PLURAL:$1|vorhäärichâr|vorhääriche $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|nägschdâr|nägschde $1}}',
+'whatlinkshere-links' => '← fârwajse hiirhäär',
+'whatlinkshere-hideredirs' => '$1 wajdârlajdungn',
+'whatlinkshere-hidetrans' => '$1 Foorlaachn-ajbindunga',
+'whatlinkshere-hidelinks' => '$1 Fârwajse',
+'whatlinkshere-hideimages' => '$1 Bild-fârwajse',
+'whatlinkshere-filters' => 'Fildhâr',
+
+# Block/unblock
+'blockip' => 'IP-Adressn odr ôôgmeldn aus-schbärn',
+'blockip-title' => 'Bearbajdâr aus-schbärn',
+'blockip-legend' => 'IP-Adresn odr Bearbajdâr aus-schbärn',
+'ipboptions' => '2 schdund:2 hours,1 dooch:1 day,3 dooch:3 days,1 wochng:1 week,2 wochng:2 weeks,1 moonad:1 month,3 moonad:3 months,6 moonad:6 months,1 jôôr:1 year,oone dsajdschrangng:infinite',
+'ipblocklist' => 'Gschbärde IP-adresn un Ôôgmelde',
+'blocklink' => 'Schbärn',
+'unblocklink' => 'frajgeem',
+'change-blocklink' => 'Schbärn ändârn',
+'contribslink' => 'Bajdreech',
+'blocklogpage' => 'Benudsär-Schbärr-Logbuch',
+'blocklogentry' => 'had „[[$1]]“ gschbärd fir dii dsajd: $2 wii genau un wesweechn: $3',
+'unblocklogentry' => 'had dii schbärn fo „$1“ afghoom',
+'block-log-flags-nocreate' => 'Naj ôôdsmeldn is gschbärd.',
+
+# Move page
+'movepagetext' => "Mid dem fôrmulaar hiir wärd â sajdn umdaafd, midsamd alle foorichâ wärsjoona. Dii sajdn mi'm aldn nôômâ blajbd, fârwajsd danôôch awâr bloos noch af dii naje.
+Wajdârlajdunga af den aldn sajdn-nôômâ ghansd audomaadisch ghôrigiirn lasn. Wenns´d des ned magsd, gug ob's ned dsu [[Special:DoubleRedirects|dobldâ]] odär [[Special:BrokenRedirects|ghabude wajdârlajdunga]] fiird. Du musd dâfiir sorgn, das dii aldn fârwajse aa ghinfdich wajdâr fungdsjoniirn!
+
+Wen's scho â sajdn mid dem naja nôômâ gibd, wärd dii sajdn ned umdaafd wärn, es saj den, dii sajdn mi'm naja nôômâ wäär läär odär bloos â wajdârladung oone äldâre wärsjoon.
+
+Desdaweechn ghansd â beschdeende sajdn nii aus fârseen iwârschrajwn, und wen'D doch an feelâr gmachd hasd mi'm umdaafn, ghansd des dan aa oone wajdârs widâr righgengich machn.
+
+'''Achdung'''
+Wen'D des mid'râr beliibdn sajdn duusd, ghan soo a umdaaf-agdsion â hefdiche sach saj, neemlich mid folchng, di fär andâre rächd iwârraschnd sin. Magg's also bloos, wenn´sd genau waasd, was´d ôôrichsd.",
+'movepagetalktext' => "Dii droôhängnde disghusjoonssajdn wärd mid umdaafd, '''ausâr wen:'''
+*es scho undârm naja nôômâ â disghusjoonssajdn geem dääd
+*duu sechsd undn, das'd es hald ned wilsd.
+Dan musd hald was drinschded fon hand riiwârschafn odr dsamschdudârn, wen de des dôô hôôm wilsd.
+Schrajb bide den '''naja'' nôômâ fo dâr sajdn undârals '''Dsiil'' nâj un '''nen dâ grund''' fir des umgedaaf drundâr.",
+'movearticle' => 'Sajdn fârschiibm:',
+'newtitle' => 'Dôôhi:',
+'move-watch' => 'Alde un naje sajdn beoobachdn.',
+'movepagebtn' => 'Sajdn fârschiibm',
+'pagemovedsub' => 'Eds is fârschoom.',
+'movepage-moved' => "'''Dii sajdn „$1“ is edsad nach „$2“ verschoom wôrn.'''",
+'articleexists' => "Es umdaafn gäd ned, wal's dii sajdn scho gibd, soo wise naj häd haasn soln. Dengg dä´ hald an andârn nôômâ aus.",
+'talkexists' => 'Dii sajdn is fârschoom wôrn, awa baj iira disghusjoonssajdn is ned gangâ, wals dii scho mim naja nôôma gibd. Jeds musd des fo hand dsamwôrschdln.',
+'movedto' => 'fârschoom nach',
+'movetalk' => "Dii disghusjoons-sajdn aa mid fârschiim, wen's gäd",
+'1movedto2' => 'had „[[$1]]“ nach „[[$2]]“ umdaafd',
+'1movedto2_redir' => 'had „[[$1]]“ nach „[[$2]]“ fârschoom un dâbaj â wajdârlajdung ibârschriim',
+'movelogpage' => 'Umdaaf-Logbuch',
+'movereason' => 'Grund:',
+'revertmove' => 'dsrigdaafn af an aldn nôômâ',
+
+# Export
+'export' => 'Sajdn ägsbhôrdiirn',
+
+# Thumbnails
+'thumbnail-more' => 'Grässär machng',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Daj benudsâr-sajdn',
+'tooltip-pt-mytalk' => 'Daj disghusjoons-sajdn',
+'tooltip-pt-preferences' => 'Daj Âjschdelunga',
+'tooltip-pt-watchlist' => 'Dôô ghummsd dsu dâjnâr beoobachdungslisdn',
+'tooltip-pt-mycontris' => 'Dôô ghumsd dsur lisdn fo dajne bajdreech',
+'tooltip-pt-login' => "S'is gän gseen, das mä´ si ôômäld, mâ däf awâr aa soo raj",
+'tooltip-pt-logout' => 'Abmeldn',
+'tooltip-ca-talk' => 'Disghusjoon dsur sajdn hiir',
+'tooltip-ca-edit' => "Dii sajdn ghansd beärbâdn.
+Bidde gug's mi´m foorschau-gnobf ôô fôrm schbajchan",
+'tooltip-ca-addsection' => 'An naja abschnid ôôfanga',
+'tooltip-ca-viewsource' => 'Dii sajdn is gecha ändrunga gschbärd. Mär ghôô awâr den gwäl-dhägsd ôôschaua.',
+'tooltip-ca-history' => 'Friâre Fassunga fo där sajdn',
+'tooltip-ca-protect' => 'Dii sajdn schidsn',
+'tooltip-ca-delete' => 'Dii sajdn leschn',
+'tooltip-ca-move' => 'Damid daafsd dii sajdn um',
+'tooltip-ca-watch' => 'Dôômid nimsd dii sajdn undâr daj beoobachdung',
+'tooltip-ca-unwatch' => 'Mir nime beschajd geewn, wen sich uf där sajdn was duud',
+'tooltip-search' => 'In {{SITENAME}}suchng',
+'tooltip-search-go' => 'Dii sajdn suchng, dii genau soo haasd',
+'tooltip-search-fulltext' => 'Suuch nach sajdn mid dem dhägsd',
+'tooltip-p-logo' => "Uf d'haubdsajdn geen",
+'tooltip-n-mainpage' => 'Af di haubdsajdn geä',
+'tooltip-n-mainpage-description' => "Af d'haubdsajdn gea",
+'tooltip-n-portal' => 'Beschrajwung fom brojägd, was de doâ ghausch, wo de waas findsch.',
+'tooltip-n-currentevents' => 'Sich beschajd holn iwâr sachn, dii grôôd basiirn',
+'tooltip-n-recentchanges' => "Was ds'ledsch af {{SITENAME}} anärsch gmachd wôrn is",
+'tooltip-n-randompage' => 'Dsufellicha sajdn',
+'tooltip-n-help' => 'Hilfssajdn oozaichng',
+'tooltip-t-whatlinkshere' => 'Welche sajdn alle dôô häär zaing',
+'tooltip-t-recentchangeslinked' => "Was ds'ledschd gändârd wôrn is af sajdn, af dii fo hiir fârwiisn wärd",
+'tooltip-feed-rss' => 'RSS-Feed fä´ dii sajdn',
+'tooltip-feed-atom' => 'Atom-Feed fä` dii sajdn',
+'tooltip-t-contributions' => 'Dsajchn, was däär benudsâr alâs gmachd had',
+'tooltip-t-emailuser' => 'Dem ôôgneldn â E-mejl schign',
+'tooltip-t-upload' => 'Dadaia nauflôôdn',
+'tooltip-t-specialpages' => 'Lisdn fo alle Schbedsjalsajdn',
+'tooltip-t-print' => 'Dii sajdn in drugôôsichd ôôdsajchn',
+'tooltip-t-permalink' => 'Bermanendär lingh zo derä Sajdnwärsjoon',
+'tooltip-ca-nstab-main' => 'Sajdninhald dsajchn',
+'tooltip-ca-nstab-user' => 'Dii Benudsârsajdn ôôdsajchn',
+'tooltip-ca-nstab-media' => 'Dii sajdn fir dii meedjendadaj ôôdsajchn',
+'tooltip-ca-nstab-special' => 'Des is â sonda-sajdn, dii ghôôsch ned ändârn',
+'tooltip-ca-nstab-project' => 'Aaf di bhôrdaalsajdn geä´',
+'tooltip-ca-nstab-image' => 'Di sajdn fo där dadaj oozaing',
+'tooltip-ca-nstab-mediawiki' => 'Dii sischdeem-mäldung ôôdsajchn',
+'tooltip-ca-nstab-template' => 'Dii foorlaachn ôôdsajchn',
+'tooltip-ca-nstab-help' => 'Dii hilfssajdn ôôdsajchn',
+'tooltip-ca-nstab-category' => 'Dii ghadegoriin-sajdn ôôdsajchn',
+'tooltip-minoredit' => 'Dii ändrung als glaa auswajsn',
+'tooltip-save' => 'Was de gmachd hasch, jeds alâs schbajchârn',
+'tooltip-preview' => 'Forhäär ôôdsajng, was`d alles af derä Sajdn gändert hôsd. Bidde mach des, befoorsd` endgildich schbajchârsd.',
+'tooltip-diff' => 'Ôôdsajng, was´d hiir umbasdld hôsd.',
+'tooltip-compareselectedversions' => 'Enn undârschiid dswischä dswaa rausgsuchdä wärsjoona fo dera sajdn ôôzajng.',
+'tooltip-watch' => 'Dii sajdn undâr beobachdung nemâ',
+'tooltip-recreate' => 'Dii sajdn naj ôôleechn, obwool se scho môôl gleschd wôrn is.',
+'tooltip-upload' => 'Loos midm nauflaadn',
+'tooltip-rollback' => 'Hiir glign machd mid am môl alâs riggängich, was däär benudsâr dsledschd af där sajdn gmachd had.',
+'tooltip-undo' => 'Hiir glign machd dii aane ändärung riggängich un dsajchd dan ôô, wiis dan ausschaua dääd. Dann koosd aa no â dsamfassung wisoo un warum dâdsuuschrajm.',
+
+# Stylesheets
+'common.css' => '/* CSS hiir beâjflusd ale schelfn */',
+'standard.css' => "/* CSS hiir beâjflusd nôr dii Klassik-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an [[MediaWiki:Common.css]] was ändârn. */",
+'nostalgia.css' => "/* CSS hiir beâjflusd nôr dii Nostalgia-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'cologneblue.css' => "/* CSS hiir beâjflusd nôr dii Kölnisch-Blau-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'monobook.css' => "/* CSS hiir beâjflusd nôr dii Monobook-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'myskin.css' => "/* CSS hiir beâjflusd nôr dii MySkin-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'chick.css' => "/* CSS hiir beâjflusd nôr dii Küken-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'simple.css' => "/* CSS hiir beâjflusd nôr dii Simple-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'modern.css' => "/* CSS hiir beâjflusd nôr dii Modern-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */
+
+/* Dii glôôschrajwung im nawigadsjoonsberajch fârhindârd des: */
+.portlet h5,
+.portlet h6,
+#p-personal ul,
+#p-cactions li a,
+#preftoc a {
+ text-transform: none;
+}",
+'vector.css' => "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+'print.css' => '/* CSS hiir beâjflusd nôr dii drugausgaawe. */',
+'handheld.css' => '/* CSS hiir beâjflusd nôr dii handgerääde, jee nachdeem, welche schelfn in $wgHandheldStyle âjgeschdeld is. */',
+
+# Scripts
+'common.js' => '/* Des folchende JavaScript wird fir ale benudsâr glôôdn un fir ale sajdn, dii se ôôgugn. */',
+
+# Browsing diffs
+'previousdiff' => '← Dsur foorichn fârändârung',
+'nextdiff' => 'Undârschiid fo där nägsdn ändrung →',
+
+# Media information
+'file-info-size' => '($1 × $2 pigsl, dadajgrääsn: $3, MIME-tib: $4)',
+'file-nohires' => "<small>A he´äre aafleesung gibd's ghaane.</small>",
+'svg-long-desc' => '(SVG-dadaj, ufleesung: $1 × $2 pigsl, dadajgreesn: $3)',
+'show-big-image' => 'Bild in hegsdâr aufleesung',
+'show-big-image-thumb' => '<small>Greäs fo där schbigg-ôôsichd: $1 × $2 bhigsl</small>',
+
+# Bad image list
+'bad_image_list' => 'Fôrmaad:
+
+Bloos dsajln, dii mi´m dsajchn * ôôfanga, wärn berigsichdichd. Un dä ärschde linggh af dr dsajln mus dan af â uubasnde dadaj saj. Wen dahindâr noch meâ linggs ghuma, dan geldn dii als ausnôma, wo dâgeechn des - dsum bajschbiil - bild schdeen däf.',
+
+# Metadata
+'metadata' => 'Meedhaa-daadn',
+'metadata-help' => 'Dii dadaj umfasd annäre ôôgam, dii normaalârwajs fo där digidaal-ghamâraa odär fo am sghänâr häärghumma. Wen dii dadaj indswischn fârändârd wôrn is, meechn dii nimä dsum bild basn.',
+'metadata-expand' => 'Ajdslhajdn dsajchn',
+'metadata-collapse' => 'Ajdslhajdn ausblendn',
+'metadata-fields' => 'Hiir afgfiirde fäldâr fo dâ EXIF-medha-daadn wärn af alle bildbeschrajwungs-sajdn afgfiird, aa wen dii medhadaadn-dabelln ajgfalded is. Annäre sin ärschdâmôôl fârschdegd.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# EXIF tags
+'exif-imagewidth' => 'brajdn',
+'exif-imagelength' => 'Heen',
+
+# External editor support
+'edit-externally' => 'Dii dadaj mid an ägsdärna brogram ändârn',
+'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [http://www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'ale',
+'namespacesall' => 'ale',
+'monthsall' => 'alle',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Ändrunga in där beoobachdungslisdn',
+'watchlisttools-edit' => 'Beobachdungslisdn dsajchn un ändârn',
+'watchlisttools-raw' => "In där beoobachdungslisdn ds'fuâs rumworschdln",
+
+# Special:SpecialPages
+'specialpages' => 'Schbedsjaal-sajdn',
+
+);
diff --git a/languages/messages/MessagesVo.php b/languages/messages/MessagesVo.php
index 104d5479..3c15f4ee 100644
--- a/languages/messages/MessagesVo.php
+++ b/languages/messages/MessagesVo.php
@@ -219,7 +219,7 @@ $messages = array(
'category-media-header' => 'Ragivs in klad: „$1“',
'category-empty' => "''Klad at anu ninädon padis e ragivis nonikis.''",
'hidden-categories' => '{{PLURAL:$1|Klad|Klads}} peklänedöl',
-'hidden-category-category' => 'Klads peklänedöl', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Klads peklänedöl',
'category-subcat-count' => '{{PLURAL:$2|Klad at labon te donakladi sököl.|Klad at labon {{PLURAL:$1|donakladi sököl|donakladis sököl $1}}, se $2.}}',
'category-subcat-count-limited' => 'Klad at labon {{PLURAL:$1|donakladi|donakladis}} sököl.',
'category-article-count' => '{{PLURAL:$2|Klad at labon te padi sököl.|{{PLURAL:$1|Pad sököl binon|Pads sököl $1 binons}} in klad at, se $2.}}',
@@ -237,10 +237,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: SSP]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Potalised tefü fomams nulik ela MediaWiki]',
-'about' => 'Tefü',
-'article' => 'Ninädapad',
-'newwindow' => '(maifikon in fenät nulik)',
-'cancel' => 'Stöpädön',
+'about' => 'Tefü',
+'article' => 'Ninädapad',
+'newwindow' => '(maifikon in fenät nulik)',
+'cancel' => 'Stöpädön',
+'moredotdotdot' => 'Plu...',
+'mypage' => 'Pad obik',
+'mytalk' => 'Bespiks obik',
+'anontalk' => 'Bespiks ela IP at',
+'navigation' => 'Nafam',
+'and' => '&#32;e',
+
+# Cologne Blue skin
'qbfind' => 'Tuvön',
'qbbrowse' => 'Padön',
'qbedit' => 'Redakön',
@@ -248,15 +256,33 @@ $messages = array(
'qbpageinfo' => 'Yumed',
'qbmyoptions' => 'Pads obik',
'qbspecialpages' => 'Pads patik',
-'moredotdotdot' => 'Plu...',
-'mypage' => 'Pad obik',
-'mytalk' => 'Bespiks obik',
-'anontalk' => 'Bespiks ela IP at',
-'navigation' => 'Nafam',
-'and' => '&#32;e',
-
-# Metadata in edit box
-'metadata_help' => 'Metanünods:',
+'faq' => 'Säks suvo pasäköls',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Lüükön yegädi',
+'vector-action-delete' => 'Moükön',
+'vector-action-move' => 'Topätükön',
+'vector-action-protect' => 'Jelön',
+'vector-action-undelete' => 'Sämoükön',
+'vector-action-unprotect' => 'Säjelön',
+'vector-namespace-category' => 'Klad',
+'vector-namespace-help' => 'Yufapad',
+'vector-namespace-image' => 'Ragiv',
+'vector-namespace-main' => 'Pad',
+'vector-namespace-media' => 'Nünamakanädapad',
+'vector-namespace-mediawiki' => 'Nun',
+'vector-namespace-project' => 'Proyegapad',
+'vector-namespace-special' => 'Pad patik',
+'vector-namespace-talk' => 'Bespik',
+'vector-namespace-template' => 'Samafomot',
+'vector-namespace-user' => 'Gebanapad',
+'vector-view-create' => 'Jafön',
+'vector-view-edit' => 'Redakön',
+'vector-view-history' => 'Logön jenotemi',
+'vector-view-view' => 'Reidön',
+'vector-view-viewsource' => 'Logön fonäti',
+'namespaces' => 'Nemaspads',
'errorpagetitle' => 'Pöl',
'returnto' => 'Geikön lü $1.',
@@ -306,7 +332,7 @@ $messages = array(
'otherlanguages' => 'In püks votik',
'redirectedfrom' => '(Pelüodükon de pad: $1)',
'redirectpagesub' => 'Lüodükömapad',
-'lastmodifiedat' => 'Pad at pävotükon lätiküno tü düp $2, ün $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Pad at pävotükon lätiküno tü düp $2, ün $1.',
'viewcount' => 'Pad at pelogon {{PLURAL:$1|balna|$1na}}.',
'protectedpage' => 'Pad pejelöl',
'jumpto' => 'Bunön lü:',
@@ -317,7 +343,6 @@ $messages = array(
'aboutsite' => 'Tefü {{SITENAME}}',
'aboutpage' => 'Project:Tefü',
'copyright' => 'Ninäd gebidon ma el $1.',
-'copyrightpagename' => 'Kopiedagität {{SITENAME}}a',
'copyrightpage' => '{{ns:project}}:Kopiedagitäts',
'currentevents' => 'Jenots nuik',
'currentevents-url' => 'Project:Jenots nuik',
@@ -325,8 +350,6 @@ $messages = array(
'disclaimerpage' => 'Project:Gididimiedükam valemik',
'edithelp' => 'Redakamayuf',
'edithelppage' => 'Help:Redakam',
-'faq' => 'Säks suvo pasäköls',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Ninäd',
'mainpage' => 'Cifapad',
'mainpage-description' => 'Cifapad',
@@ -404,10 +427,6 @@ Steifül lätik ad gebön vüki at äbinon:
„$1“
se dunod: „$2“.
Nünodem ägesedon pökanuni: „$3: $4“',
-'noconnect' => 'Liedo vük at labon anu fikulis kaenik e no fägon ad kosädön ko zänodanünöm nünodema. <br />
-$1',
-'nodb' => 'No eplöpos ad välön nünodemi: $1',
-'cachederror' => 'Sökölos binon kopied pasetik pada pevipöl. Mögos, das no binon fomam lätikün.',
'laggedslavemode' => 'Nuned: pad ba labon votükamis brefabüik',
'readonly' => 'Vük pefärmükon',
'enterlockreason' => 'Penolös kodi löka, keninükamü täxet dula onik e dela, kü pomoükon',
@@ -433,7 +452,8 @@ Atos kösömiko jenon sekü difa- u jenotemayüm dädik (o.b. lü pad pemoüköl
'unexpected' => 'Völad no pespetöl: „$1“=„$2“.',
'formerror' => 'PÖL: no emögos ad bevobön fometi at.',
'badarticleerror' => 'Dun at no kanon paledunön su pad at.',
-'cannotdelete' => 'No emögos ad moükön padi/ragivi pevälöl. (Ba ya pemoükon fa geban votik.)',
+'cannotdelete' => 'No emögos ad moükön padi u ragivi: "$1".
+Ba ya pemoükon fa geban votik.',
'badtitle' => 'Tiäd badik',
'badtitletext' => 'Padatiäd peflagöl äbinon nelonöfik, vägik, u ba yüm bevüpükik u bevüvükik dädik. Mögos, das ninädon malati(s), kel(s) no dalon(s) pagebön ad jafön tiädis.',
'perfcached' => 'Nüns sököl ekömons se el caché e ba no binons anuik.',
@@ -466,7 +486,6 @@ Kod binon: ''$2''.",
'virus-unknownscanner' => 'program tavirudik nesëvadik:',
# Login and logout pages
-'logouttitle' => 'Senunädön oki',
'logouttext' => "'''Esenunädol oli.'''
Kanol laigebön {{SITENAME}} nennemiko, u kanol [[Special:UserLogin|nunädön oli dönu]] me gebananem ot u gebenanem votik.
@@ -474,7 +493,6 @@ Küpälolös, das pads anik ba nog pojenons äsva no esenunädol oli, jüs uklin
'welcomecreation' => '== Benokömö, o $1! ==
Kal olik pejafon.
No glömolöd ad votükön [[Special:Preferences|buükamis olik in {{SITENAME}}]].',
-'loginpagetitle' => 'Nunädön oki',
'yourname' => 'Gebananem:',
'yourpassword' => 'Letavöd:',
'yourpasswordagain' => 'Klavolös dönu letavödi',
@@ -485,6 +503,7 @@ No glömolöd ad votükön [[Special:Preferences|buükamis olik in {{SITENAME}}]
'nav-login-createaccount' => 'Nunädön oki / jafön kali',
'loginprompt' => 'Mutol mögükön „kekilis“ ad kanön nunädön oli in {{SITENAME}}.',
'userlogin' => 'Nunädön oki / jafön kali',
+'userloginnocreate' => 'Nunädön oki',
'logout' => 'Senunädön oki',
'userlogout' => 'Senunädön oki',
'notloggedin' => 'No enunädol oli',
@@ -496,25 +515,8 @@ No glömolöd ad votükön [[Special:Preferences|buükamis olik in {{SITENAME}}]
'createaccountmail' => 'me pot leäktronik',
'badretype' => 'Letavöds fa ol pepenöls no leigons.',
'userexists' => 'Gebananem at ya dabinon. Välolös, begö! nemik votik.',
-'youremail' => 'Ladet leäktronik *:',
-'username' => 'Gebananem:',
-'uid' => 'Gebanadientif:',
-'prefs-memberingroups' => 'Liman {{PLURAL:$1|grupa|grupas}}:',
-'yourrealname' => 'Nem jenöfik *:',
-'yourlanguage' => 'Pük:',
-'yournick' => 'Länem:',
-'badsig' => 'Dispenäd no lonöföl: dönulogolös eli HTML.',
-'badsiglength' => 'Dispenäd olik binon tu lunik.
-Muton labön {{PLURAL:$1|malati|malatis}} läs $1.',
-'yourgender' => 'Gen:',
-'gender-male' => 'Manik',
-'gender-female' => 'Vomik',
-'email' => 'Ladet leäktronik',
-'prefs-help-realname' => 'Nem jenöfik no binon zesüdik. If vilol givön oni, pogebon ad dasevön vobi olik.',
'loginerror' => 'Nunädamapöl',
-'prefs-help-email' => 'Ladet leäktronik no peflagon, ab dälon sedi letavöda nulik ole üf glömol letavödi olik.
-Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sävilupol dientifi olik.',
-'prefs-help-email-required' => 'Ladet leäktronik paflagon.',
+'createaccounterror' => 'Kal no pejafon: $1',
'nocookiesnew' => 'Gebanakal pejafon, ab no enunädol oli. {{SITENAME}} gebon „kekilis“ pö nunädam gebanas. Pö bevüresodanaföm olik ye geb kekilas penemogükon. Mogükolös oni e nunädolös oli me gebananem e letavöd nuliks ola.',
'nocookieslogin' => '{{SITENAME}} gebon „kekilis“ ad nunädön gebanis. Anu geb kekilas nemögon. Mögükolös onis e steifülolös nogna.',
'noname' => 'No egivol gebananemi lonöföl.',
@@ -527,8 +529,7 @@ Koräkolös tonatami nema at, u [[Special:UserLogin/signup|jafolös kali nulik]]
'nouserspecified' => 'Mutol välön gebananemi.',
'wrongpassword' => 'Letavöd neveräton. Steifülolös dönu.',
'wrongpasswordempty' => 'Letavöd vagon. Steifülolös dönu.',
-'passwordtooshort' => 'Letavöd olik no lonöfon u binon tu brefik.
-Muton binädon me {{PLURAL:$1|malat|malats}} pu $1 e difön de gebananem olik.',
+'passwordtooshort' => 'Letavöds mutons binädon me {{PLURAL:$1|malat|malats}} pu $1.',
'mailmypassword' => 'Sedön letavödi nulik',
'passwordremindertitle' => 'Letavöd nulik nelaidik in {{SITENAME}}',
'passwordremindertext' => 'Ek (luveratiko ol, se ladet-IP: $1) ebegon sedi letavöda nulik pro {{SITENAME}} ($4). Letavöd nelaidüpik pejafon pro geban: „$2“ me ninäd: „$3“. If atos ejenon ma vil olik, mutol anu nunädön oli e välön letavödi nulik. Letavöd nelaidüpik ola odulon dü {{PLURAL:$5|del bal|dels $5}}.
@@ -569,14 +570,13 @@ Kanol nedemön penedi at, üf jafam kala at binon pöl.',
'retypenew' => 'Klavolöd dönu letavödi nulik:',
'resetpass_submit' => 'Välön letavödi e nunädön omi',
'resetpass_success' => 'Letavöd olik pevotükon benosekiko! Anu sit nunädon oli...',
-'resetpass_bad_temporary' => 'Letavöd nelaidüpik no lonöföl. Ba ya evotükol letavödi olik, u ba ya ebegol letavödi nelaidüpik nulik.',
'resetpass_forbidden' => 'Letavöds no kanons pavotükön',
'resetpass-no-info' => 'Mutol nunädön oli ad logön padi at nemediko.',
'resetpass-submit-loggedin' => 'Votükön letavödi',
+'resetpass-submit-cancel' => 'Stöpädön',
'resetpass-wrong-oldpass' => 'Letavöd (laidüpik u nelaidüpik) no lonöföl.
Ba ya evotükol benosekiko letavödi olik, u ya ebegol benosekiko letavödi nelaidüpik nulik.',
'resetpass-temp-password' => 'Letavöd nelaidüpik:',
-'resetpass-logentry' => 'letavöd gebana: $1 pevotükon',
# Edit page toolbar
'bold_sample' => 'Vödem bigik',
@@ -645,7 +645,6 @@ Ladet-IP olik binon $3, e nüm blokama at binon #$5. Mäniotolös nünis löpik
'blockededitsource' => "Vödem '''redakamas olik''' pada: '''$1''' pajonon dono:",
'whitelistedittitle' => 'Mutol nunädön oli ad redakön',
'whitelistedittext' => 'Mutol $1 ad redakön padis.',
-'confirmedittitle' => 'Fümedam me pot leäktronik zesüdon ad redakön',
'confirmedittext' => 'Mutol fümedön ladeti leäktronik ola büä okanol redakön padis. Pladölos e lonöfükölos ladeti olik in [[Special:Preferences|buükams olik]].',
'nosuchsectiontitle' => 'Diläd no petuvöl',
'nosuchsectiontext' => 'Esteifülol ad redakön dilädi no dabinöli.',
@@ -664,12 +663,14 @@ If binol is pölo, välolös knopi: '''geikön''' bevüresodatävöma olik.",
'noarticletext' => 'Atimo no dabinon vödem su pad at.
Kanol [[Special:Search/{{PAGENAME}}|sukön padatiädi at]] su pads votik, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sukön in jenotaliseds tefik] u [{{fullurl:{{FULLPAGENAME}}|action=edit}} redakön padi at].',
'userpage-userdoesnotexist' => 'Gebanakal: "$1" no peregistaron. Fümükolös, va vilol jäfön/redakön padi at.',
+'userpage-userdoesnotexist-view' => 'Gebenakal: "$1" no peregistaron.',
'clearyourcache' => "'''Prudö!''' Pos dakip buükamas, mögos, das ozesüdos ad nedemön memi nelaidüpik bevüresodatävöma ad logön votükamis.
'''Mozilla / Firefox / Safari:''' kipolöd klavi: ''Shift'' dono e välolöd eli ''Reload'' (= dönulodön) me mugaparat, u dränolöd klävis: ''Ctrl-F5'' u ''Ctrl-R'' (''Command-R'' if labol eli Macintosh);
'''Konqueror:''' välolöd eli ''Reload'' (= dönulodön) me mugaparat, u dränolöd klavi: ''F5'';
'''Opera:''' vagükolöd lölöfiko memi nelaidüpik me ''Tools → Preferences'' (Stumem → Buükams).
'''Internet Explorer:''' kipolöd klavi: ''Ctrl'' dono e välolöd eli ''Refresh'' (= flifädükön) me mugaparat, u dränolöd klavis: ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Mob:''' Välolös eli „Jonön büologedi“ ad blufön eli CSS/JS nulik olik bü dakip.",
+'usercssyoucanpreview' => "'''Mob:''' Välolös eli „{{int:showpreview}}“ ad blufön eli CSS nulik olik bü dakip.",
+'userjsyoucanpreview' => "'''Mob:''' Välolös eli „{{int:showpreview}}“ ad blufön eli JS nulik olik bü dakip.",
'usercsspreview' => "'''Memolös, das anu te büologol eli CSS olik.'''
'''No nog pedakipon!'''",
'userjspreview' => "'''Memolös, das anu te blufol/büologol eli JavaScript olik, no nog pedakipon!'''",
@@ -719,9 +720,9 @@ Geban, kel efärmükon oni, egevon kodi at: $1",
'semiprotectedpagewarning' => "'''Noet:''' Pad at pefärmükon. Te gebans peregistaröl kanons redakön oni.",
'cascadeprotectedwarning' => "'''Nuned:''' Pad at pefärmükon löko (te guvans dalons redakön oni) bi binon dil {{PLURAL:$1|pada|padas}} sököl, me sökodajel {{PLURAL:$1|pejelöla|pejelölas}}:",
'titleprotectedwarning' => "'''NUNED: Pad at pejelon, dat te gebans labü [[Special:ListGroupRights|gitäts patik]] kanons jafön oni.'''",
-'templatesused' => 'Samafomots su pad at pegeböls:',
-'templatesusedpreview' => 'Samafomots in büologed at pageböls:',
-'templatesusedsection' => 'Samafomots in diläd at pageböls:',
+'templatesused' => '{{PLURAL:$1|Samafomot|Samafomots}} su pad at {{PLURAL:$1|pegeböl|pegeböls}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Samafomot|Samafomots}} in büologed at {{PLURAL:$1|pageböl|pageböls}}:',
+'templatesusedsection' => '{{PLURAL:$1|Samafomot|Samafomots}} in diläd at {{PLURAL:$1|pageböl|pageböls}}:',
'template-protected' => '(pejelon)',
'template-semiprotected' => '(dilo pejelon)',
'hiddencategories' => 'Pad at duton lü {{PLURAL:$1|klad peklänedöl 1|klads peklänedöl $1}}:',
@@ -732,13 +733,12 @@ Kanol redakön padi dabinöl, u [[Special:UserLogin|nunädön oli u jafön kali]
'permissionserrors' => 'Dälapöls',
'permissionserrorstext' => 'No dalol dunön atosi sekü {{PLURAL:$1|kod|kods}} sököl:',
'permissionserrorstext-withaction' => 'No dalol $2, sekü {{PLURAL:$1|kod|kods}} sököl:',
-'recreate-deleted-warn' => "'''NUNED: Dönujafol padi pemoüköl.'''
+'recreate-moveddeleted-warn' => "'''NUNED: Dönujafol padi pemoüköl.'''
Vätälolös, va binos pötik ad lairedakön padi at.
Jenotalised moükama pada at pajonon is as yuf.",
-'deleted-notice' => 'Pad at pemoükon.
+'moveddeleted-notice' => 'Pad at pemoükon.
Moükamajenotem pada at palisedon dono.',
-'deletelog-fulllog' => 'Logön jenotemalisedi lölik',
'edit-hook-aborted' => 'Redakam pestöpädon fa huköm.
No enunon kodi.',
'edit-gone-missing' => 'No eplöpos ad votükön padi.
@@ -780,7 +780,7 @@ Kod blokama fa el $3 pegivöl binon ''$2''",
'currentrev' => 'Fomam anuik',
'currentrev-asof' => 'Fomam nuik tü $1',
'revisionasof' => 'Fomam dätü $1',
-'revision-info' => 'Fomam timü $1 fa el $2', # Additionally available: $3: revision id
+'revision-info' => 'Fomam timü $1 fa el $2',
'previousrevision' => '←Fomam vönedikum',
'nextrevision' => 'Fomam nulikum→',
'currentrevisionlink' => 'Fomam anuik',
@@ -793,7 +793,7 @@ Kod blokama fa el $3 pegivöl binon ''$2''",
Plän: (anuik) = dif tefü fomam anuik,
(lätik) = dif tefü fomam büik, p = redakam pülik.',
'history-fieldset-title' => 'Logamajenotem',
-'deletedrev' => '[pemoüköl]',
+'history-show-deleted' => 'Te pemoüköls',
'histfirst' => 'Balid',
'histlast' => 'Lätik',
'historysize' => '({{PLURAL:$1|jölät 1|jöläts $1}})',
@@ -802,56 +802,63 @@ Plän: (anuik) = dif tefü fomam anuik,
# Revision feed
'history-feed-title' => 'Revidajenotem',
'history-feed-description' => 'Revidajenotem pada at in vük',
-'history-feed-item-nocomment' => '$1 ün $2', # user at time
+'history-feed-item-nocomment' => '$1 ün $2',
'history-feed-empty' => 'Pad pevipöl no dabinon.
Ba pemoükon se ragivs, u ba pevotanemon.
Kanol [[Special:Search|sukön]] padis nulik tefik.',
# Revision deletion
-'rev-deleted-comment' => '(küpet pemoükon)',
-'rev-deleted-user' => '(gebananem pemoükon)',
-'rev-deleted-event' => '(lisedadun pemoükon)',
-'rev-deleted-text-permission' => "Padafomam at '''pemoükon'''.
-Pats tefik ba patuvons in [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jenotalised moükamas].",
-'rev-deleted-text-view' => 'Padafomam at pemoükon se registar notidik. As guvan in {{SITENAME}}, kanol logön oni. Pats tefik ba binons in [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jenotalised moükamas].',
-'rev-delundel' => 'jonön/klänedön',
-'revisiondelete' => 'Moükön/sädunön moükami fomamas',
-'revdelete-nooldid-title' => 'Zeilafomam no lonöfon',
-'revdelete-nooldid-text' => 'U no elevälol zeilafomami(s) pro dun at, u fomam pelevälöl no dabinon, u steifülol ad klänedön fomami anuik.',
-'revdelete-toomanytargets-title' => 'Zeils tumödik',
-'revdelete-selected' => "'''{{PLURAL:$2|Fomam|Fomams}} pevalöl pada: [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Lisedajenot|Lisedajenots}} pevälöl:'''",
-'revdelete-text' => "'''Revids pemoüköl nog opubons in padajenotem, ab ninäd (vödem) onsik no gebidons publüge.'''
-
-Ninäd peklänedöl at binon ye nog lügolovik guvanes votik vüka: {{SITENAME}}, kels kanons nog votükön ninädi peklänedöl u geükön padi medü fometem at (üf miedöfükams u neletians votik no lonöfons).
-Fümedolös, das vilol dunön osi, das suemol sekis, e das dunol osi baiädü [[{{MediaWiki:Policy-url}}|dunamods lonöföl]].",
-'revdelete-legend' => 'Levälön miedükamis logova:',
-'revdelete-hide-text' => 'Klänedön vödemi revida',
-'revdelete-hide-name' => 'Klänedön duni e zeili',
-'revdelete-hide-comment' => 'Klänedön redakamaküpeti',
-'revdelete-hide-user' => 'Klänedön gebananemi u ladeti-IP redakana',
-'revdelete-hide-restricted' => 'Gebön miedükamis at i demü guvans e lökofärmükön fometi at',
-'revdelete-suppress' => 'Klänedön moükamakodis i de guvans (äsi de votikans)',
-'revdelete-hide-image' => 'Klänedön ragivaninädi',
-'revdelete-unsuppress' => 'Moükön miedükamis fomamas pegegetöl',
-'revdelete-log' => 'Kod:',
-'revdelete-submit' => 'Gebön me fomam pevälöl',
-'revdelete-logentry' => 'logov fomamas pada: [[$1]] pevotükon',
-'logdelete-logentry' => 'logov jenota: [[$1]] pevotükon',
-'revdelete-success' => "'''Logov padafomama pelonon benosekiko.'''",
-'logdelete-success' => 'Logov jenotaliseda pelonon benosekiko.',
-'revdel-restore' => 'Votükön logovi',
-'pagehist' => 'Padajenotem',
-'deletedhist' => 'Jenotem pemoüköl',
-'revdelete-content' => 'ninäd',
-'revdelete-summary' => 'plän redakama',
-'revdelete-uname' => 'gebananem',
-'revdelete-restricted' => 'miedükams pelonöfükons pro guvans',
-'revdelete-unrestricted' => 'miedükams pro guvans pemoükons',
-'revdelete-hid' => '$1 peklänedon',
-'revdelete-unhid' => '$1 pesäklänedon',
-'revdelete-log-message' => '$1 tefü {{PLURAL:$2|fomam|fomams}} $2',
-'logdelete-log-message' => '$1 tefü {{PLURAL:$2|jenot|jenots}} $2',
+'rev-deleted-comment' => '(küpet pemoükon)',
+'rev-deleted-user' => '(gebananem pemoükon)',
+'rev-deleted-event' => '(lisedadun pemoükon)',
+'rev-deleted-text-permission' => "Padafomam at '''pemoükon'''.
+Pats tefik ba patuvons in [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jenotalised moükamas].",
+'rev-deleted-text-view' => "Padafomam at '''pemoükon'''.
+As guvan, kanol logön oni; pats tefik ba binons in [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jenotalised moükamas].",
+'rev-delundel' => 'jonön/klänedön',
+'rev-showdeleted' => 'jonön',
+'revisiondelete' => 'Moükön/sädunön moükami fomamas',
+'revdelete-nooldid-title' => 'Zeilafomam no lonöfon',
+'revdelete-nooldid-text' => 'U no elevälol zeilafomami(s) pro dun at, u fomam pelevälöl no dabinon, u steifülol ad klänedön fomami anuik.',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-selected' => "'''{{PLURAL:$2|Fomam|Fomams}} pevalöl pada: [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Lisedajenot|Lisedajenots}} pevälöl:'''",
+'revdelete-text' => "'''Revids pemoüköl nog opubons in padajenotem, ab ninäd (vödem) onsik no gebidons publüge.'''
+Ninäd peklänedöl at binon ye nog lügolovik guvanes votik vüka: {{SITENAME}}, kels kanons nog votükön ninädi peklänedöl u geükön padi medü fometem at (üf miedöfükams u neletians votik no lonöfons).",
+'revdelete-legend' => 'Levälön miedükamis logova:',
+'revdelete-hide-text' => 'Klänedön vödemi revida',
+'revdelete-hide-image' => 'Klänedön ragivaninädi',
+'revdelete-hide-name' => 'Klänedön duni e zeili',
+'revdelete-hide-comment' => 'Klänedön redakamaküpeti',
+'revdelete-hide-user' => 'Klänedön gebananemi u ladeti-IP redakana',
+'revdelete-hide-restricted' => 'Gebön miedükamis at i demü guvans e lökofärmükön fometi at',
+'revdelete-radio-same' => '(no votükolös)',
+'revdelete-radio-set' => 'Si',
+'revdelete-radio-unset' => 'Nö',
+'revdelete-suppress' => 'Klänedön moükamakodis i de guvans (äsi de votikans)',
+'revdelete-unsuppress' => 'Moükön miedükamis fomamas pegegetöl',
+'revdelete-log' => 'Kod:',
+'revdelete-submit' => 'Gebön me {{PLURAL:$1|fomam pevälöl|fomams pevälöls}}',
+'revdelete-logentry' => 'logov fomamas pada: [[$1]] pevotükon',
+'logdelete-logentry' => 'logov jenota: [[$1]] pevotükon',
+'revdelete-success' => "'''Logov padafomama pelonon benosekiko.'''",
+'logdelete-success' => 'Logov jenotaliseda pelonon benosekiko.',
+'revdel-restore' => 'Votükön logovi',
+'pagehist' => 'Padajenotem',
+'deletedhist' => 'Jenotem pemoüköl',
+'revdelete-content' => 'ninäd',
+'revdelete-summary' => 'plän redakama',
+'revdelete-uname' => 'gebananem',
+'revdelete-restricted' => 'miedükams pelonöfükons pro guvans',
+'revdelete-unrestricted' => 'miedükams pro guvans pemoükons',
+'revdelete-hid' => '$1 peklänedon',
+'revdelete-unhid' => '$1 pesäklänedon',
+'revdelete-log-message' => '$1 tefü {{PLURAL:$2|fomam|fomams}} $2',
+'logdelete-log-message' => '$1 tefü {{PLURAL:$2|jenot|jenots}} $2',
+'revdelete-otherreason' => 'Kod votik/zuik:',
+'revdelete-reasonotherlist' => 'Kod votik',
+'revdelete-edit-reasonlist' => 'Redakön kodis moükama',
+'revdelete-offender' => 'Lautan fomama:',
# Suppression log
'suppressionlog' => 'Lovelogam-jenotalised',
@@ -887,67 +894,13 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'mergelogpagetext' => 'Is palisedon balamis brefabüikün jenotema pada bal ini votik.',
# Diffs
-'history-title' => 'Revidajenotem pada: "$1"',
-'difference' => '(dif vü revids)',
-'lineno' => 'Lien $1:',
-'compareselectedversions' => 'Leigodolöd fomamis pevälöl',
-'visualcomparison' => 'Leigodam ma logot',
-'wikicodecomparison' => 'Leigodam ma vödem vükik',
-'editundo' => 'sädunön',
-'diff-multi' => '({{PLURAL:$1|Revid vüik bal no pejonon|Revids vüik $1 no pejonons}}.)',
-'diff-movedto' => 'petopätükon lü $1',
-'diff-styleadded' => 'stül: $1 peläükon',
-'diff-added' => '$1 peläükon',
-'diff-changedto' => 'pevotükon ad $1',
-'diff-movedoutof' => 'petopätükon se $1',
-'diff-styleremoved' => 'stül: $1 pemoükon',
-'diff-removed' => '$1 pemoükon',
-'diff-changedfrom' => 'pevotükon se $1',
-'diff-src' => 'fonät',
-'diff-withdestination' => 'ko zeil: $1',
-'diff-with' => '&#32;ko $1 $2',
-'diff-with-final' => '&#32;e $1 $2',
-'diff-width' => 'vidot',
-'diff-height' => 'geilot',
-'diff-p' => "'''bagaf'''",
-'diff-blockquote' => "'''saitot'''",
-'diff-h1' => "'''suspenäd (nivod: 1)'''",
-'diff-h2' => "'''suspenäd (nivod: 2)'''",
-'diff-h3' => "a '''suspenäd (nivod: 3)'''",
-'diff-h4' => "'''suspenäd (nivod: 4)'''",
-'diff-h5' => "'''suspenäd (nivod: 5)'''",
-'diff-pre' => "'''vödemadilod pebüofomätüköl'''",
-'diff-div' => "'''teil'''",
-'diff-ul' => "'''lised no peleodüköl'''",
-'diff-ol' => "'''lised peleodüköl'''",
-'diff-li' => "'''lisedabinet'''",
-'diff-table' => "'''taib'''",
-'diff-tbody' => "'''taibaninäd'''",
-'diff-tr' => "'''ked'''",
-'diff-td' => "'''ziöb'''",
-'diff-th' => "'''tiäd'''",
-'diff-br' => "'''lienabreik'''",
-'diff-hr' => "'''lien horitätik'''",
-'diff-code' => "'''vödemadilod binü programakot'''",
-'diff-dl' => "'''miedetalised'''",
-'diff-dt' => "'''miedetanotod'''",
-'diff-dd' => "'''miedet'''",
-'diff-input' => "'''fometafel'''",
-'diff-form' => "'''fomet'''",
-'diff-img' => "'''magod'''",
-'diff-span' => "'''stäänöp'''",
-'diff-a' => "'''yüm'''",
-'diff-i' => "'''korsivik'''",
-'diff-b' => "'''bigik'''",
-'diff-strong' => "'''nämöfik'''",
-'diff-em' => "'''kazet'''",
-'diff-font' => "'''penät'''",
-'diff-big' => "'''gretik'''",
-'diff-del' => "'''pemoükon'''",
-'diff-tt' => "'''vidot nevotükovik'''",
-'diff-sub' => "'''pedonopenöl'''",
-'diff-sup' => "'''pelöpopenöl'''",
-'diff-strike' => "'''peduliunöl'''",
+'history-title' => 'Revidajenotem pada: "$1"',
+'difference' => '(dif vü revids)',
+'lineno' => 'Lien $1:',
+'compareselectedversions' => 'Leigodolöd fomamis pevälöl',
+'showhideselectedversions' => 'Jonön/klänedön fomamis pevälöl',
+'editundo' => 'sädunön',
+'diff-multi' => '({{PLURAL:$1|Revid vüik bal no pejonon|Revids vüik $1 no pejonons}}.)',
# Search results
'searchresults' => 'Sukaseks',
@@ -955,27 +908,24 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'searchresulttext' => 'Ad lärnön mödikumosi dö suks in {{SITENAME}}, logolös [[{{MediaWiki:Helppage}}|Suks in {{SITENAME}}]].',
'searchsubtitle' => 'Esukol padi: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pads me "$1" primöls valiks]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pads lü "$1" yumöls valiks]])',
'searchsubtitleinvalid' => "Esukol padi: '''$1'''",
-'noexactmatch' => "'''No dabinon pad tiädü \"\$1\".''' Kanol [[:\$1|jafön oni]].",
-'noexactmatch-nocreate' => "'''No dabinon pad tiädü \"\$1\".'''",
'toomanymatches' => 'Pads tu mödiks labü vöd(s) pesuköl petuvons. Sukolös vödi(s) votik.',
'titlematches' => 'Leigon ko padatiäd',
'notitlematches' => 'Leigon ko padatiäds nonik',
'textmatches' => 'Leigon ko dil padavödema',
'notextmatches' => 'Leigon ko nos in padavödem',
-'prevn' => 'büik $1',
-'nextn' => 'sököl $1',
+'prevn' => 'büik {{PLURAL:$1|$1}}',
+'nextn' => 'sököl {{PLURAL:$1|$1}}',
'prevn-title' => '{{PLURAL:$1|Sukasek|Sukaseks}} büik $1',
'nextn-title' => '{{PLURAL:$1|Sukasek|Sukaseks}} fovik $1',
'shown-title' => 'Jonön {{PLURAL:$1|sukaseki|sukasekis}} $1 a pad',
-'viewprevnext' => 'Logön padis ($1) ($2) ($3).',
+'viewprevnext' => 'Logön padis ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Sukaparamets',
'searchmenu-exists' => "'''Dabinon pad labü nem: \"[[:\$1]]\" su vük at'''",
'searchmenu-new' => "'''Jafolös padi: \"[[:\$1]]\" su vük at!'''",
'searchhelp-url' => 'Help:Ninäd',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Logön padis labü foyümot at]]',
-'searchprofile-articles' => 'Pads ninädilabik',
-'searchprofile-articles-and-proj' => 'Pads ninädilabik e proyegapads',
-'searchprofile-project' => 'Proyegapads',
+'searchprofile-articles' => 'Ninädapads',
+'searchprofile-project' => 'Yufa e Proyegapads',
'searchprofile-images' => 'Ragivs',
'searchprofile-everything' => 'Valikos',
'searchprofile-advanced' => 'Paramets pluik',
@@ -984,8 +934,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'searchprofile-images-tooltip' => 'Sukön ragivis',
'searchprofile-everything-tooltip' => 'Sukön in ninäd lölik (keninükamü bespikapads)',
'searchprofile-advanced-tooltip' => 'Sukön in nemaspads patik',
-'prefs-search-nsdefault' => 'Sukön gebölo parametemi kösömik:',
-'prefs-search-nscustom' => 'Sukön in nemaspads patik:',
'search-result-size' => '$1 ({{PLURAL:$2|vöd 1|vöds $2}})',
'search-result-score' => 'Demäd: $1%',
'search-redirect' => '(lüodüköm: $1)',
@@ -998,11 +946,11 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'search-mwsuggest-disabled' => 'nen mobs',
'search-relatedarticle' => 'Tefik',
'mwsuggest-disable' => 'Nemögükön mobis ela AJAX',
+'searcheverything-enable' => 'Sukolöd in nemaspads valik',
'searchrelated' => 'tefik',
'searchall' => 'valik',
'showingresults' => "Pajonons dono jü {{PLURAL:$1|sukasek '''1'''|sukaseks '''$1'''}}, primölo me nüm #'''$2'''.",
'showingresultsnum' => "Dono pajonons {{PLURAL:$3:|sek '''1'''|seks '''$3'''}}, primölo me nüm: '''$2'''.",
-'showingresultstotal' => "Is palisedons {{PLURAL:$4|sukasek nüm: '''$1''' se '''$3'''|sukaseks nüm: '''$1 - $2''' se '''$3'''}}",
'nonefound' => "'''Noet''': Suks jenons nomiko in nemaspads te aniks. Ad demön nemaspadis valik (keninükamü bespikapads, samafomots e r.), gebolös foyümoti: ''all:'', u nemaspadi pevilöl as foyümot.",
'search-nonefound' => 'Sukaseks nonik dabinons.',
'powersearch' => 'Suk',
@@ -1010,40 +958,31 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'powersearch-ns' => 'Sukön in nemaspads:',
'powersearch-redir' => 'Lisedön lüodükömis',
'powersearch-field' => 'Sukön',
+'powersearch-toggleall' => 'Valik',
+'powersearch-togglenone' => 'Nonik',
'search-external' => 'Suk plödik',
'searchdisabled' => 'Suk in {{SITENAME}} penemogükon. Vütimo kanol sukön yufü el Google. Demolös, das liseds onik tefü ninäd in {{SITENAME}} ba no binon anuik.',
+# Quickbar
+'qbsettings' => 'Stumem',
+'qbsettings-none' => 'Nonik',
+'qbsettings-fixedleft' => 'nedeto (fimiko)',
+'qbsettings-fixedright' => 'Deto (fimiko)',
+'qbsettings-floatingleft' => 'nedeto (vebölo)',
+'qbsettings-floatingright' => 'deto (vebölo)',
+
# Preferences page
'preferences' => 'Buükams',
'mypreferences' => 'Buükams obik',
'prefs-edits' => 'Num redakamas:',
'prefsnologin' => 'No enunädon oki',
-'prefsnologintext' => 'Nedol <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} nunädön oli]</span> büä kanol votükön gebanabuükamis.',
-'prefsreset' => 'Buükams egekömons ad stad büik peregistaröl.',
-'qbsettings' => 'Stumem',
-'qbsettings-none' => 'Nonik',
-'qbsettings-fixedleft' => 'nedeto (fimiko)',
-'qbsettings-fixedright' => 'Deto (fimiko)',
-'qbsettings-floatingleft' => 'nedeto (vebölo)',
-'qbsettings-floatingright' => 'deto (vebölo)',
+'prefsnologintext' => 'Nedol <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nunädön oli]</span> büä kanol votükön gebanabuükamis.',
'changepassword' => 'Votükön letavödi',
-'skin' => 'Fomät',
+'prefs-skin' => 'Fomät',
'skin-preview' => 'Büologed',
-'math' => 'Logot formülas',
-'dateformat' => 'Dätafomät',
+'prefs-math' => 'Logot formülas',
'datedefault' => 'Buükam nonik',
-'datetime' => 'Dät e Tim',
-'math_failure' => 'Diletam fomüla no eplöpon',
-'math_unknown_error' => 'pök nesevädik',
-'math_unknown_function' => 'dun nesevädik',
-'math_lexing_error' => 'vödidiletam no eplöpon',
-'math_syntax_error' => 'süntagapöl',
-'math_image_error' => 'Feajafam ela PNG no eplöpon;
-vestigolös stitami verätik ela latex, ela dvips, ela gs, e feajafön',
-'math_bad_tmpdir' => 'No mögos ad penön ini / jafön ragiviär(i) matematik nelaidüpik.',
-'math_bad_output' => 'No mögos ad penön ini / jafön ragiviär(i) matematik labü seks',
-'math_notexvc' => 'Program-texvc ledunovik no petuvon;
-logolös eli math/README ad givulön parametemi.',
+'prefs-datetime' => 'Dät e Tim',
'prefs-personal' => 'Gebananüns',
'prefs-rc' => 'Votükams nulik',
'prefs-watchlist' => 'Galädalised',
@@ -1053,10 +992,11 @@ logolös eli math/README ad givulön parametemi.',
'prefs-watchlist-edits-max' => '(maxumanum: 1000)',
'prefs-misc' => 'Votikos',
'prefs-resetpass' => 'Votükön letavödi',
+'prefs-rendering' => 'Selogam',
'saveprefs' => 'Dakipolöd',
'resetprefs' => 'Buükams rigik',
'restoreprefs' => 'Geikön lü paramets kösömik valik',
-'textboxsize' => 'Redakam',
+'prefs-editing' => 'Redakam',
'prefs-edit-boxsize' => 'Gretot redakamafenäta.',
'rows' => 'Kedets:',
'columns' => 'Padüls:',
@@ -1067,12 +1007,10 @@ logolös eli math/README ad givulön parametemi.',
'stub-threshold' => 'Soliad pro fomätam <a href="#" class="stub">sidayümas</a> (jöläts):',
'recentchangesdays' => 'Dels ad pajonön in votükams nulik:',
'recentchangesdays-max' => '(maxum: {{PLURAL:$1|del|dels}} $1)',
-'recentchangescount' => 'Num kösömik redakamas ad pajonön as votükams nulik, padajenotems, äsi in jenotaliseds:',
+'recentchangescount' => 'Num kösömik redakamas ad pajonön:',
'savedprefs' => 'Buükams olik pedakipons.',
'timezonelegend' => 'Timatopäd:',
-'timezonetext' => 'Num düpas, mö kel tim topik difon de tim dünanünöma (UTC).',
'localtime' => 'Tim topik:',
-'timezoneselect' => 'Timazon:',
'timezoneuseserverdefault' => 'Gebön parametemi kösömik dünanünöma',
'timezoneuseoffset' => 'Votik (nunolös difi)',
'timezoneoffset' => 'Näedot¹:',
@@ -1091,10 +1029,32 @@ logolös eli math/README ad givulön parametemi.',
'prefs-namespaces' => 'Nemaspads',
'defaultns' => 'Sukolös nomiko in nemaspads at:',
'default' => 'stad kösömik',
-'files' => 'Ragivs',
+'prefs-files' => 'Ragivs',
+'youremail' => 'Ladet leäktronik *:',
+'username' => 'Gebananem:',
+'uid' => 'Gebanadientif:',
+'prefs-memberingroups' => 'Liman {{PLURAL:$1|grupa|grupas}}:',
+'yourrealname' => 'Nem jenöfik *:',
+'yourlanguage' => 'Pük:',
+'yournick' => 'Länem:',
+'badsig' => 'Dispenäd no lonöföl: dönulogolös eli HTML.',
+'badsiglength' => 'Dispenäd olik binon tu lunik.
+Muton labön {{PLURAL:$1|malati|malatis}} läs $1.',
+'yourgender' => 'Gen:',
+'gender-male' => 'Manik',
+'gender-female' => 'Vomik',
+'email' => 'Ladet leäktronik',
+'prefs-help-realname' => 'Nem jenöfik no binon zesüdik. If vilol givön oni, pogebon ad dasevön vobi olik.',
+'prefs-help-email' => 'Ladet leäktronik no peflagon, ab dälon sedi letavöda nulik ole üf glömol letavödi olik.
+Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sävilupol dientifi olik.',
+'prefs-help-email-required' => 'Ladet leäktronik paflagon.',
+'prefs-info' => 'Nüns stabik',
+'prefs-signature' => 'Dispenäd',
+'prefs-dateformat' => 'Dätafomam',
+'prefs-diffs' => 'Difs',
# User rights
-'userrights' => 'Guvam gebanagitätas', # Not used as normal message but as header for the special page itself
+'userrights' => 'Guvam gebanagitätas',
'userrights-lookup-user' => 'Guvön gebanagrupis',
'userrights-user-editname' => 'Penolös gebananemi:',
'editusergroup' => 'Redakön Gebanagrupis',
@@ -1178,6 +1138,8 @@ logolös eli math/README ad givulön parametemi.',
'right-editprotected' => 'Bevobön padis pejelöl (nen vatafalajel)',
'right-editinterface' => 'Votükön gebanaloveikömi',
'right-editusercssjs' => 'Redakön ragivis-CSS e -JS gebanas votik',
+'right-editusercss' => 'Redakön ragivis-CSS gebanas votik',
+'right-edituserjs' => 'Redakön ragivis-JS gebanas votik',
'right-rollback' => 'Sädunön vifiko redakamis gebana lätik, kel äredakon padi semik.',
'right-markbotedits' => 'Bepenön redakamis pesädunöl as redakams ela bot',
'right-noratelimit' => 'No lobedön miedükamis',
@@ -1192,6 +1154,7 @@ logolös eli math/README ad givulön parametemi.',
'right-userrights' => 'Redakön gebanagitätis valik',
'right-userrights-interwiki' => 'Redakön gebanagitätis gebanas vükas votik',
'right-siteadmin' => 'Lökofärmükön e maifükön nünodemi',
+'right-sendemail' => 'Sedön penedis leäktronik lü gebans votik',
# User rights log
'rightslog' => 'Jenotalised gebanagitätas',
@@ -1241,6 +1204,12 @@ logolös eli math/README ad givulön parametemi.',
'recentchanges-legend' => 'Votükams nulik: paramets',
'recentchangestext' => 'Su pad at binons votükams nulikün in vüki at.',
'recentchanges-feed-description' => 'Getön votükamis nulikün in vük at me nünakanad at.',
+'recentchanges-legend-newpage' => '$1 - pad nulik',
+'recentchanges-label-newpage' => 'Redakam at päjafon pad nulik',
+'recentchanges-legend-minor' => '$1 - votükam pülik',
+'recentchanges-label-minor' => 'Atos binon redakam pülik',
+'recentchanges-legend-bot' => '$1 - votükam fa el bot',
+'recentchanges-label-bot' => 'Redakam at pädunon fa el bot',
'rcnote' => "Dono {{PLURAL:$1|binon votükam '''1'''|binons votükams '''$1'''}} lätikün {{PLURAL:$2|dela|delas '''$2'''}} lätikün, pänumädöls tü $5, $4.",
'rcnotefrom' => "Is palisedons votükams sis '''$2''' (jü '''$1''').",
'rclistfrom' => 'Jonön votükamis nulik, primölo tü düp $1',
@@ -1267,6 +1236,8 @@ logolös eli math/README ad givulön parametemi.',
# Recent changes linked
'recentchangeslinked' => 'Votükams teföl',
+'recentchangeslinked-feed' => 'Votükams teföl',
+'recentchangeslinked-toolbox' => 'Votükams teföl',
'recentchangeslinked-title' => 'Votükams tefü pad: "$1"',
'recentchangeslinked-noresult' => 'Pads ad pad at peyümöls no pevotükons ün period at.',
'recentchangeslinked-summary' => "Su pad patik at palisedons votükams padas, lü kels pad pevälöl yumon.
@@ -1278,7 +1249,6 @@ Pads [[Special:Watchlist|galädaliseda olik]] '''pakazetons'''.",
# Upload
'upload' => 'Löpükön ragivi',
'uploadbtn' => 'Löpükön ragivi',
-'reupload' => 'Löpükön dönu',
'reuploaddesc' => 'Nosükon lopükami e geikön lü löpükamafomet.',
'uploadnologin' => 'No enunädon oki',
'uploadnologintext' => 'Mutol [[Special:UserLogin|nunädön oli]] ad löpükön ragivis.',
@@ -1327,7 +1297,6 @@ Ad pladön ragivi ini pad semik, gebolös yümi fomätü:
* Nem ragiva palöpüköl: '''<tt>[[:$1]]</tt>'''
* Nem ragiva dabinöl: '''<tt>[[:$2]]</tt>'''
Välolös, begö! nemi difik.",
-'fileexists-thumb' => "<center>'''Magod dabinöl'''</center>",
'fileexists-thumbnail-yes' => "Ragiv at binon jiniko magoda gretota smalik ''(magodil)''. [[$1|thumb]]
Logolös, begö! ragivi ya dabinöli: '''<tt>[[:$1]]</tt>'''.
If ragiv ya dabinöli binon magod ot gretota rigik, no zesüdos ad löpükön magodili pluik.",
@@ -1346,7 +1315,6 @@ If nog vilol lopükön ragivi olik, geikolös e gebolös nemi votik. [[File:$1|t
'uploaddisabled' => 'Löpükam penemögükon',
'uploaddisabledtext' => 'Löpükam ragivas penemögükon.',
'uploadscripted' => 'Ragiv at ninükon eli HTML u vödis programapüka, kelis bevüresodanaföm ba opölanätäpreton',
-'uploadcorrupt' => 'Ragiv binon dädik u duton lü sot no lonöföl. Kontrololös ragivi e löpükolös oni dönu.',
'uploadvirus' => 'Ragiv at labon virudi! Pats: $1',
'sourcefilename' => 'Ragivanem rigik:',
'destfilename' => 'Ragivanem nulik:',
@@ -1367,6 +1335,7 @@ Begolös yufi [[Special:ListUsers/sysop|guvana]].',
'upload-misc-error-text' => 'Pöl nesevädik äjenon dü löpükam.
Fümedolös, begö! das el URL lonöfon e kanon palogön, e poso steifülolös nogna.
If säkäd at laibinon, kosikolös ko [[Special:ListUsers/sysop|guvan]] tefü on.',
+'upload-unknown-size' => 'Gretot nesevädik',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'No eplöpos ad rivön eli URL',
@@ -1377,6 +1346,7 @@ Kontrololös, begö! va bevüresodatopäd at jäfidon, stebedolös timüli e ste
Binosöv gudikum, if steifülolöv dönu ün tim votik läs jäfädik.',
'license' => 'Dälastad:',
+'license-header' => 'Dälastad',
'nolicense' => 'Nonik pelevälon',
'license-nopreview' => '(Büologed no gebidon)',
'upload_source_url' => ' (el URL lonöföl ä fa valans gebovik)',
@@ -1397,6 +1367,7 @@ Klikolös tiädi padüla ad votükön sökaleodi at.',
'listfiles_count' => 'Fomams',
# File description page
+'file-anchor-link' => 'Ragiv',
'filehist' => 'Jenotem ragiva',
'filehist-help' => 'Välolös däti/timi ad logön ragivi soäsä äbinon ün tim at.',
'filehist-deleteall' => 'moükön valikis',
@@ -1420,14 +1391,9 @@ Lised dono jonon {{PLURAL:$1|padayümi balid|padayümis balid $1}} te lü ragiv
'morelinkstoimage' => 'Logolös [[Special:WhatLinksHere/$1|yümis pluik]] ad ragiv at.',
'redirectstofile' => '{{PLURAL:$1|Ragiv sököl lüodükon|Ragivs sököl $1 lüodükons}} ad ragiv at:',
'duplicatesoffile' => '{{Plural:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
-'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Logolös eli $1 ad getön nünis pluik.',
-'shareduploadwiki-desc' => 'Bepenam su $1 ona us pajonon dono.',
-'shareduploadwiki-linktext' => 'bepenamapad ragiva',
-'noimage' => 'Ragiv labü nem at no dabinon, ab kanol $1.',
-'noimage-linktext' => 'löpükön bali',
+'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.',
'uploadnewversion-linktext' => 'Löpükön fomami nulik ragiva at',
-'shared-repo-from' => 'se $1', # $1 is the repository name
+'shared-repo-from' => 'se $1',
# File reversion
'filerevert' => 'Geükön padi: $1',
@@ -1477,7 +1443,7 @@ Primanünods: ninädasot/donasot, a.s. <tt>image/jpeg</tt>.',
# Random page
'randompage' => 'Pad fädik',
-'randompage-nopages' => 'Pads nonik dabinons in nemaspad: "$1".',
+'randompage-nopages' => 'Pads nonik dabinons in {{PLURAL:$2|nemaspad sököl|nemaspads sököls}}: $1.',
# Random redirect
'randomredirect' => 'Lüodüköm fädik',
@@ -1489,6 +1455,7 @@ Primanünods: ninädasot/donasot, a.s. <tt>image/jpeg</tt>.',
'statistics-header-edits' => 'Redakamastatits',
'statistics-header-views' => 'Logamastatits',
'statistics-header-users' => 'Gebanastatits',
+'statistics-header-hooks' => 'Statits votik',
'statistics-articles' => 'Pads ninädilabik',
'statistics-pages' => 'Pads',
'statistics-pages-desc' => 'Pads valik vüka at, keninükamü bespikapads, lüodüköms e r.',
@@ -1516,8 +1483,8 @@ Pad palelogon telplänovapad if gebon samafomoti, lü kel payümon pad [[MediaWi
'brokenredirects' => 'Lüodüköms dädik',
'brokenredirectstext' => 'Lüodüköms sököl dugons lü pads no dabinöls:',
-'brokenredirects-edit' => '(redakön)',
-'brokenredirects-delete' => '(moükön)',
+'brokenredirects-edit' => 'redakön',
+'brokenredirects-delete' => 'moükön',
'withoutinterwiki' => 'Pads nen yüms bevüpükik',
'withoutinterwiki-summary' => 'Pads sököl no yumons lü fomams in püks votik.',
@@ -1626,8 +1593,9 @@ Ad brefükam lisedi, kanol välön lisedasoti, gebananemi, u padi tefik.',
'special-categories-sort-abc' => 'leodükön ma lafab',
# Special:DeletedContributions
-'deletedcontributions' => 'Gebanakeblünots pemoüköl',
-'deletedcontributions-title' => 'Gebanakeblünots pemoüköl',
+'deletedcontributions' => 'Gebanakeblünots pemoüköl',
+'deletedcontributions-title' => 'Gebanakeblünots pemoüköl',
+'sp-deletedcontributions-contribs' => 'keblünots',
# Special:LinkSearch
'linksearch' => 'Yüms plödik',
@@ -1643,6 +1611,11 @@ Protoks pestütöl: <tt>$1</tt>',
'listusersfrom' => 'Jonolöd gebanis primölo me:',
'listusers-submit' => 'Jonolöd',
'listusers-noresult' => 'Geban nonik petuvon.',
+'listusers-blocked' => '(pebloköl)',
+
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Klänedolöd elis bot',
+'activeusers-hidesysops' => 'Klänedolöd guvanis',
# Special:Log/newusers
'newuserlogpage' => 'Lised gebanijafamas',
@@ -1756,7 +1729,7 @@ Kanol i geükön nunamastänis padas valik galädaliseda olik.
--
Ad votükön parametami galädaliseda olik, loglös
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Küpets e yuf pluik:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1803,8 +1776,8 @@ Prudö! Moükam onik ba osäkädükon jäfidi nünodema: {{SITENAME}}.',
'alreadyrolled' => 'No eplöpos ad sädunön redakami lätik pada: [[:$1]] fa geban: [[User:$2|$2]] ([[User talk:$2|Bespikapad]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); ek ya eredakon oni ud esädunon redakami ona.
Redakam lätik päjenükon fa geban: [[User:$3|$3]] ([[User talk:$3|Bespikapad]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redakamaplän äbinon: „''$1''“.", # only shown if there is an edit comment
-'revertpage' => 'Redakams ela [[Special:Contributions/$2|$2]] ([[User talk:$2|Bespik]]) pegeükons ad fomam ma redakam lätik gebana: [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Redakamaplän äbinon: „''$1''“.",
+'revertpage' => 'Redakams ela [[Special:Contributions/$2|$2]] ([[User talk:$2|Bespik]]) pegeükons ad fomam ma redakam lätik gebana: [[User:$1|$1]]',
'rollback-success' => 'Redakams gebana: $1 pesädunons; pad pevotükon ad fomam lätik fa geban: $2.',
'sessionfailure' => 'Jiniko ädabinon säkäd seimik pö nunädam olik.
Dun at no pelasumon ad vitön mögi, das votükams olik pogivulons gebane votik.
@@ -1825,7 +1798,6 @@ Logolös [[Special:ProtectedPages|lisedi padas pejelöl]], kö pajonons padijela
'protectexpiry' => 'Dul:',
'protect_expiry_invalid' => 'Dul no lonöfon.',
'protect_expiry_old' => 'Dul ya epasetikon.',
-'protect-unchain' => 'Mögükön dälis ad topätükön',
'protect-text' => "Kanol logön e votükön is jelanivodi pada: '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "No kanol votükön jelanivodi bi peblokol. Ekö! paramets anuik pada: '''$1''':",
'protect-locked-dblock' => "Jelanivods no kanons pavotükön sekü lökofärmükam vüka at. Ekö! paramets anuik pada: '''$1''':",
@@ -1852,7 +1824,7 @@ Ekö! parametem anuik pada: '''$1''':",
** Redakamakrigs tupöl
** Pad labü dakosäd tuik',
'protect-edit-reasonlist' => 'Redakön jelakodis',
-'protect-expiry-options' => 'düp 1:1 hour,del 1:1 day,vig 1:1 week,vigs 2:2 weeks,mul 1:1 month,muls 3:3 months,muls 6:6 months,yel 1:1 year,laidüp:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'düp 1:1 hour,del 1:1 day,vig 1:1 week,vigs 2:2 weeks,mul 1:1 month,muls 3:3 months,muls 6:6 months,yel 1:1 year,laidüp:infinite',
'restriction-type' => 'Däl:',
'restriction-level' => 'Miedükamanivod:',
'minimum-size' => 'Gretot smalikün',
@@ -1892,6 +1864,7 @@ Ba labol yümi dädik, u ba fomam pegepübon u pemoükon se registar.',
'undelete-nodiff' => 'Fomams büik no petuvons.',
'undeletebtn' => 'Sädunön moükami',
'undeletelink' => 'logön/sädunön',
+'undeleteviewlink' => 'logön',
'undeletereset' => 'Vagükolöd vali',
'undeleteinvert' => 'Väli güükön',
'undeletecomment' => 'Küpet:',
@@ -1930,7 +1903,7 @@ $1',
'contributions-title' => 'Gebanakeblünots pro $1',
'mycontris' => 'Keblünots obik',
'contribsub2' => 'Tefü $1 ($2)',
-'nocontribs' => 'Votükams nonik petuvons me paramets at.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Votükams nonik petuvons me paramets at.',
'uctop' => '(lätik)',
'month' => 'De mul (e büiks):',
'year' => 'De yel (e büiks):',
@@ -1939,6 +1912,9 @@ $1',
'sp-contributions-newbies-sub' => 'Tefü kals nulik',
'sp-contributions-newbies-title' => 'Gebanakeblünots pro kals nulik',
'sp-contributions-blocklog' => 'Jenotalised blokamas',
+'sp-contributions-deleted' => 'gebanakeblünots pemoüköl',
+'sp-contributions-talk' => 'bespik',
+'sp-contributions-userrights' => 'guvam gebanagitätas',
'sp-contributions-search' => 'Sukön keblünotis',
'sp-contributions-username' => 'Ladet-IP u gebananem:',
'sp-contributions-submit' => 'Suk',
@@ -1964,6 +1940,7 @@ $1',
# Block/unblock
'blockip' => 'Blokön gebani',
+'blockip-title' => 'Blokön gebani',
'blockip-legend' => 'Blokön gebani',
'blockiptext' => 'Gebolös padi at ad blokön redakamagitäti gebananema u ladeta-IP semikas. Atos söton padunön teiko ad vitön vandalimi, e bai [[{{MediaWiki:Policy-url}}|dunalesets {{SITENAME}}]]. Penolös dono kodi patik pro blokam (a. s., mäniotolös padis pedobüköl).',
'ipaddress' => 'Ladet-IP',
@@ -1985,7 +1962,7 @@ $1',
'ipbenableautoblock' => 'Blokön itjäfidiko ladeti-IP lätik fa geban at pegeböli, äsi ladetis-IP fovik valik, yufü kels osteifülon ad redakön',
'ipbsubmit' => 'Blokön gebani at',
'ipbother' => 'Dul votik',
-'ipboptions' => 'düps 2:2 hours,del 1:1 day,dels 3:3 days,vig 1:1 week,vigs 2:2 weeks,mul 1:1 month,muls 3:3 months,muls 6:6 months,yel 1:1 year,laidüp:infinite', # display1:time1,display2:time2,...
+'ipboptions' => 'düps 2:2 hours,del 1:1 day,dels 3:3 days,vig 1:1 week,vigs 2:2 weeks,mul 1:1 month,muls 3:3 months,muls 6:6 months,yel 1:1 year,laidüp:infinite',
'ipbotheroption' => 'dul votik',
'ipbotherreason' => 'Kod(s) votik',
'ipbhidename' => 'Klänedön gebananemi se redakams e liseds',
@@ -2014,9 +1991,10 @@ $1',
'ipblocklist-sh-tempblocks' => 'blokams nelaidüpik $1',
'ipblocklist-sh-addressblocks' => 'blokams $1 tefü ladets-IP balatik',
'ipblocklist-submit' => 'Suk',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Blokam|Blokams}} votik',
'blocklistline' => '$1, $2 äblokon $3 ($4)',
'infiniteblock' => 'laidüpo',
-'expiringblock' => 'dulon jü $1',
+'expiringblock' => 'dulon jü $1 düp $2',
'anononlyblock' => 'te nennemans',
'noautoblockblock' => 'Blokam itjäfidik penemögukon',
'createaccountblock' => 'kalijaf peblokon',
@@ -2030,7 +2008,6 @@ $1',
'contribslink' => 'keblünots',
'autoblocker' => 'Peblokon bi ladet-IP olik pegebon brefabüo fa geban: „[[User:$1|$1]]“. Kod blokama ela $1 binon: „$2“',
'blocklogpage' => 'Jenotalised blokamas',
-'blocklog-fulllog' => 'Jenotalised lölöfik blokamas',
'blocklogentry' => '"[[$1]]" peblokon dü: $2 $3',
'reblock-logentry' => 'blokamaparamets gebana: [[$1]] pevotükons, pro dul: $2 (kod: $3)',
'blocklogtext' => 'Is binon lised gebanablokamas e gebanasäblokamas. Ladets-IP itjäfidiko pebloköls no pajonons. Logolös blokamis e xilis anu lonöfölis in [[Special:IPBlockList|lised IP-blokamas]].',
@@ -2048,6 +2025,7 @@ $1',
'ipb_already_blocked' => '"$1" ya peblokon',
'ipb-needreblock' => '== Ya Peblokon ==
Geban: $1 ya peblokon. Vilol-li votükön parametis?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Blokam|Blokams}} votik',
'ipb_cant_unblock' => 'Pöl: Bokamadientif: $1 no petuvon. Ba ya pesäblokon.',
'ipb_blocked_as_range' => 'Pöl: ladet-IP $1 no peblokon stedöfiko e no kanon pasäblokön.
Peblokon ye as dil ladetema: $2, kel kanon pasäblokön.',
@@ -2108,7 +2086,7 @@ Votükam at kanon binön mu staböfik ä no paspetöl pö pad pöpedik. Suemolö
'move-watch' => 'Pladolöd padi at ini galädalised',
'movepagebtn' => 'Topätükolöd padi',
'pagemovedsub' => 'Topätükam eplöpon',
-'movepage-moved' => '\'\'\'"$1" petopätükon lü "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" petopätükon lü "$2"\'\'\'',
'movepage-moved-redirect' => 'Lüodüköm pejafon.',
'movepage-moved-noredirect' => 'Lüoküköm ye no pejafon.',
'articleexists' => 'Pad labü nem at ya dabinon, u nem fa ol pevälöl no lonöfon.
@@ -2177,8 +2155,10 @@ Ad seveigön padis, penolös tiädis in penamaspad dono, tiädi bal a kedet, e v
'allmessagestext' => 'Is binon lised sitanunas valik lonöföl in nemaspad: Sitanuns.
Gebolös [http://www.mediawiki.org/wiki/Localisation Topükami ela MediaWiki] ed el [http://translatewiki.net translatewiki.net] if vilol keblünön topükame valemik ela MediaWiki.',
'allmessagesnotsupportedDB' => "Pad at no kanon pagebön bi el '''\$wgUseDatabaseMessages''' penemögükon.",
-'allmessagesfilter' => 'Te nunanems labü:',
-'allmessagesmodified' => 'Jonolöd te pevotükölis',
+'allmessages-filter-legend' => 'Sul',
+'allmessages-filter-all' => 'Valik',
+'allmessages-language' => 'Pük:',
+'allmessages-filter-submit' => 'Golön',
# Thumbnails
'thumbnail-more' => 'Gretükön',
@@ -2261,6 +2241,7 @@ Dakipolös oni su nünöm olik e löpükolös oni isio.',
'tooltip-search-fulltext' => 'Sukön vödemi at su pads',
'tooltip-p-logo' => 'Cifapad',
'tooltip-n-mainpage' => 'Visitolös Cifapadi',
+'tooltip-n-mainpage-description' => 'Visitolös cifapadi',
'tooltip-n-portal' => 'Tefü proyek, kio kanol-li dunön, kiplado tuvön dinis',
'tooltip-n-currentevents' => 'Tuvön nünis valemik tefü jenots anuik',
'tooltip-n-recentchanges' => 'Lised votükamas nulik in vüki.',
@@ -2311,7 +2292,7 @@ Dälon läükami koda.',
# Attribution
'anonymous' => '{{PLURAL:$1|Geban|Gebans}} nennemik ela {{SITENAME}}',
'siteuser' => 'Geban ela {{SITENAME}}: $1',
-'lastmodifiedatby' => 'Pad at pävotükon lätiküno tü dÜp $1, ün $2, fa el $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Pad at pävotükon lätiküno tü dÜp $1, ün $2, fa el $3.',
'othercontribs' => 'Stabü vob gebana: $1.',
'others' => 'votiks',
'siteusers' => '{{PLURAL:$2|Geban|Gebans}} ela {{SITENAME}}: $1',
@@ -2343,6 +2324,19 @@ Pad luveratiko ninädon yümi lü bevüresodatopäd plödik in blägalised.',
'mw_math_modern' => 'Pakomandöl pro bevüresodatävöms nulädik',
'mw_math_mathml' => 'El MathML if mögos (nog sperimänt)',
+# Math errors
+'math_failure' => 'Diletam fomüla no eplöpon',
+'math_unknown_error' => 'pök nesevädik',
+'math_unknown_function' => 'dun nesevädik',
+'math_lexing_error' => 'vödidiletam no eplöpon',
+'math_syntax_error' => 'süntagapöl',
+'math_image_error' => 'Feajafam ela PNG no eplöpon;
+vestigolös stitami verätik ela latex, ela dvips, ela gs, e feajafön',
+'math_bad_tmpdir' => 'No mögos ad penön ini / jafön ragiviär(i) matematik nelaidüpik.',
+'math_bad_output' => 'No mögos ad penön ini / jafön ragiviär(i) matematik labü seks',
+'math_notexvc' => 'Program-texvc ledunovik no petuvon;
+logolös eli math/README ad givulön parametemi.',
+
# Patrolling
'markaspatrolleddiff' => 'Zepön',
'markaspatrolledtext' => 'Zepön padi at',
@@ -2377,9 +2371,6 @@ $1',
'previousdiff' => '← Dif vönädikum',
'nextdiff' => 'Dif nulikum →',
-# Visual comparison
-'visual-comparison' => 'Leigodam ma logot',
-
# Media information
'mediawarning' => "'''Nuned''': Ragiv at ba ninükon programi(s) badälik.
If ojäfidükol oni, nünömasit olik ba podämükon.",
@@ -2422,7 +2413,7 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön y
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Vidot',
@@ -2543,10 +2534,10 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön y
'exif-unknowndate' => 'Dät nesevädik',
-'exif-orientation-1' => 'Nomik', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Petülöl horitäto', # 0th row: top; 0th column: right
-'exif-orientation-3' => 'Mö 180° pefleköl', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Petülöl pendito', # 0th row: bottom; 0th column: left
+'exif-orientation-1' => 'Nomik',
+'exif-orientation-2' => 'Petülöl horitäto',
+'exif-orientation-3' => 'Mö 180° pefleköl',
+'exif-orientation-4' => 'Petülöl pendito',
'exif-planarconfiguration-1' => 'fomät grobik',
@@ -2646,7 +2637,7 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön y
'exif-gpsmeasuremode-2' => 'mafam 2-mafotik',
'exif-gpsmeasuremode-3' => 'mafam 3-mafotik',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Milmets a düp',
'exif-gpsspeed-m' => 'Liöls a düp',
'exif-gpsspeed-n' => 'Snobs',
@@ -2665,6 +2656,7 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön y
'watchlistall2' => 'valikis',
'namespacesall' => 'valik',
'monthsall' => 'valik',
+'limitall' => 'valikis',
# E-mail address confirmation
'confirmemail' => 'Fümedolös ladeti leäktronik',
@@ -2781,14 +2773,14 @@ Kanol i [[Special:Watchlist/edit|gebön redakametodi kösömik]].',
'duplicate-defaultsort' => 'Nüned: Leodükamakik kösömik: „$2“ buon bu leodükamakik kösömik büik: „$1“.',
# Special:Version
-'version' => 'Fomam', # Not used as normal message but as header for the special page itself
+'version' => 'Fomam',
'version-extensions' => 'Veitükumams pestitöl',
'version-specialpages' => 'Pads patik',
'version-other' => 'Votik',
'version-hooks' => 'Huköms',
'version-hook-name' => 'Hukömanem',
'version-hook-subscribedby' => 'Pagebon fa',
-'version-version' => 'Fomam',
+'version-version' => '(Fomam $1)',
'version-license' => 'Dälazöt',
'version-software' => 'Programs pestitöl',
'version-software-product' => 'Prodäd',
@@ -2849,4 +2841,8 @@ Penolös ragivanemi nen foyümot: „{{ns:file}}:“.',
'dberr-info' => '(No eplöpos ad kosikön ko dünanünöm nünodema: $1)',
'dberr-usegoogle' => 'Kanol sukön me el Google ün vütim.',
+# HTML forms
+'htmlform-reset' => 'Sädunön votükamis',
+'htmlform-selectorother-other' => 'Votik',
+
);
diff --git a/languages/messages/MessagesVot.php b/languages/messages/MessagesVot.php
new file mode 100644
index 00000000..41bca5c6
--- /dev/null
+++ b/languages/messages/MessagesVot.php
@@ -0,0 +1,642 @@
+<?php
+/** Votic (Vaďďa)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author 2Q
+ * @author Trần Nguyễn Minh Huy
+ */
+
+$fallback = 'fi';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Gạch chân liên kết:',
+
+# Dates
+'january' => 'janvaari',
+'february' => 'fevraaľi',
+'march' => 'martti',
+'april' => 'aprilli',
+'may_long' => 'mai',
+'june' => 'juńi',
+'july' => 'juľi',
+'august' => 'augusti',
+'september' => 'senťaabri',
+'october' => 'okťaabri',
+'november' => 'nojaabri',
+'december' => 'dekaabri',
+'january-gen' => 'janvaarii',
+'february-gen' => 'fevraalii',
+'march-gen' => 'martii',
+'april-gen' => 'aprillii',
+'may-gen' => 'maja',
+'june-gen' => 'junii',
+'july-gen' => 'juľii',
+'august-gen' => 'augustii',
+'september-gen' => 'senťaabrii',
+'october-gen' => 'okťaabrii',
+'november-gen' => 'nojaabrii',
+'december-gen' => 'dekaabrii',
+'jan' => 'janvaari',
+'feb' => 'fevraali',
+'mar' => 'martti',
+'apr' => 'aprilli',
+'may' => 'mai',
+'jun' => 'juni',
+'jul' => 'juľi',
+'aug' => 'augusti',
+'sep' => 'senťaabri',
+'oct' => 'okťaabri',
+'nov' => 'nojaabri',
+'dec' => 'dekaabri',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Gruppa|Gruppad}}',
+'category_header' => 'Tšuľľed, kummad õvad gruppaz "$1"',
+'subcategories' => 'Alagruppad',
+'hidden-categories' => '{{PLURAL:$1|Salautõttu gruppa|Salautõtud gruppad}}',
+'category-subcat-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava alagruppa.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 alagruppaa kuuluvad}} sihee gruppaa. Alagruppaďďe tšisla gruppaza on $2.}}',
+'category-article-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava tšültši.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 tšültšiä kuuluvad}} sihee gruppaa. Tšültšije tšisla gruppaza on $2.}}',
+'listingcontinuesabbrev' => 'ladvaub',
+
+'newwindow' => '(avaub uuvvõza akkunaza)',
+'cancel' => 'Otmeńoit',
+'mytalk' => 'Minu juttu',
+'navigation' => 'Valittsõmin',
+
+# Cologne Blue skin
+'qbfind' => 'Etsi',
+
+'errorpagetitle' => 'Vika',
+'returnto' => 'Mee takaz tšüľľelle $1.',
+'tagline' => 'Lähe: {{SITENAME}}',
+'help' => 'Api',
+'search' => 'Ettsü',
+'searchbutton' => 'Etsi',
+'searcharticle' => 'Mee',
+'history' => 'Tšüľľee istori',
+'history_short' => 'Istori',
+'printableversion' => 'Petšatoittõva verzija',
+'permalink' => 'Postojannoi linkki',
+'edit' => 'Muuttaa',
+'create' => 'Loo tšültši',
+'editthispage' => 'Muutu sitä tšültšiä',
+'delete' => 'Pühi',
+'protect' => 'Varjaa',
+'protect_change' => 'muutu',
+'newpage' => 'Uusi tšültši',
+'talkpage' => 'Juttu senessä tšüľľessä',
+'talkpagelinktext' => 'Juttu',
+'personaltools' => 'Õmad tööriisõd',
+'talk' => 'Juttu',
+'views' => 'Prestavleńńõd',
+'toolbox' => 'Tööriisõd',
+'otherlanguages' => 'Muilla tšeelillä',
+'redirectedfrom' => '(Mešaitõttu tšüľľeltä $1)',
+'redirectpagesub' => 'Mešaituztšültši',
+'lastmodifiedat' => 'Viimõin muutuz: $2 $1',
+'jumpto' => 'Hüppä:',
+'jumptonavigation' => 'valittsõmisiisõ',
+'jumptosearch' => 'ettsüse',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Tääteja {{GRAMMAR:elative|{{SITENAME}}}}',
+'aboutpage' => 'Project:Täätühsed',
+'copyright' => 'Sisälto on $1 litsentsii mukka svobodnoi.',
+'copyrightpage' => '{{ns:project}}:Kopiraitti',
+'disclaimers' => 'Tšeeltümin vassamizõõ',
+'disclaimerpage' => 'Project:Tšeeltümin vassamizõõ',
+'edithelp' => 'Muutuzavid',
+'edithelppage' => 'Help:Kui muuttaa tšültšiä',
+'helppage' => 'Help:Sisälto',
+'mainpage' => 'Esitšültši',
+'privacy' => 'Salaštrahuituz',
+'privacypage' => 'Project:Salaštrahuituz',
+
+'badaccess' => 'Lupa tšeeltistü',
+
+'retrievedfrom' => 'Jältšinnü adresissa "$1"',
+'youhavenewmessages' => 'Teill on $1 ($2).',
+'newmessageslink' => 'Uusiit zapiskoit',
+'newmessagesdifflink' => 'viimõin muutuz',
+'editsection' => 'muuttaa',
+'editold' => 'muuttaa',
+'editlink' => 'muuttaa',
+'viewsourcelink' => 'lähtekoodi',
+'editsectionhint' => 'Muutta alajakkoa $1',
+'toc' => 'Sisälto',
+'showtoc' => 'näüt väľľää',
+'hidetoc' => 'salauta',
+'site-rss-feed' => '$1-RSS-söötte',
+'site-atom-feed' => '$1-Atom-söötte',
+'page-rss-feed' => '"$1" RSS-söötte',
+'page-atom-feed' => '"$1" Atom-söötte',
+'red-link-title' => '$1 (tšültšiä ebõõ)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Artikkeli',
+'nstab-user' => 'Tšäüttijätšültši',
+'nstab-special' => 'Osoobennoi tšültši',
+'nstab-project' => 'Projektitšültši',
+'nstab-image' => 'Faili',
+'nstab-template' => 'Šablooni',
+'nstab-category' => 'Gruppa',
+
+# General errors
+'missing-article' => 'Tšüľľee sisältoa eb löütännü täätöbaazassa: $1 $2.
+
+Ussassi se johtub ustaŕeloi sravńoi- vai istorilinkissä rootšittulõõ tšüľľelee.
+
+Kui tšüsümüssessä ebõõ rootšittu tšültši, võib õlla õlõttõ löütännü ošipkaa sistemalla. Õõ nii üvä ilmuttõma tšüľľee adressia vikii [[Special:ListUsers/sysop|praviťeľalõõ]].',
+'missingarticle-rev' => '(verzija: $1)',
+'badtitletext' => 'Tšüzüttü artikkelizagolofkka õli vilpilliin, tühjä vai väärii linkitettü tšeelijeväliin vai vikiiväliin linkki.',
+'viewsource' => 'Lähtekoodi',
+
+# Login and logout pages
+'yourname' => 'Tšäüttijänimi:',
+'yourpassword' => 'Salasõna',
+'remembermypassword' => 'Mäleht minuu',
+'login' => 'Tširjut süäme',
+'nav-login-createaccount' => 'Tširjut süäme vai registriiroit tšäüttijässi',
+'userlogin' => 'Tširjut süäme',
+'logout' => 'Tširjut uloz',
+'userlogout' => 'Tširjut uloz',
+'nologin' => "Kui Teille veel ebõõ tšäüttijänimi, '''$1'''.",
+'nologinlink' => 'võitta loovva luguu',
+'mailmypassword' => 'Lähet uusi salasõna elektropoštiikaa',
+
+# Edit page toolbar
+'bold_sample' => 'Pimmiä teksti',
+'bold_tip' => 'Pimmiä teksti',
+'italic_sample' => 'Kursiivoi teksti',
+'italic_tip' => 'Kursiivi',
+'link_sample' => 'Linkki',
+'link_tip' => 'Sisipooliin linkki',
+'extlink_sample' => 'http://www.example.com linki nimi',
+'extlink_tip' => 'Eräpooliin linkki (mäleht http:// prefiksi)',
+'headline_sample' => 'Zagolofkka-teksti',
+'headline_tip' => 'Zagolofkka',
+'math_sample' => 'Lissä formula tänne',
+'math_tip' => 'Matematillin formula (LaTeX)',
+'nowiki_sample' => 'Lissä formattimatoo teksti tänne',
+'nowiki_tip' => 'Ignoriiroit viki formatti',
+'image_tip' => 'Kuva',
+'media_tip' => 'Faililinkki',
+'sig_tip' => 'Alatširjutuz aikamerkikaa',
+'hr_tip' => 'Gorizontalnoi viiru',
+
+# Edit pages
+'summary' => 'Turvotuz:',
+'subject' => 'Teema:',
+'minoredit' => 'Kase on peeni muutuz',
+'watchthis' => 'Lissä kattsõspiiskaa',
+'savearticle' => 'Salvo tšültši',
+'preview' => 'Prestavleńńa',
+'showpreview' => 'Näüt prestavleńńa',
+'showdiff' => 'Näüt muutussõd',
+'anoneditwarning' => 'Että õlõ süämme tširjutõnnu. Teďďee IP-adressi tširjuttanes sene tšüľľee muutuzistorisõ.',
+'summary-preview' => 'Turvotuhsõ prestavleńńa',
+'newarticle' => '(Uusi)',
+'newarticletext' => 'Sitä tšültšiä veel ebõõ.
+Võitta loovva tšüľľee tširjuttamall alla õlõvasõõ tilaa. Kui että taho loovva tšültšiä, menka takaz Web-brauzeraa "back"-napuukaa.',
+'noarticletext' => '{{GRAMMAR:inessive|{{SITENAME}}}} ebõõ sene nimissä tšültšiä.
+* Võid [[Special:Search/{{PAGENAME}}|ettsiä tšüľľee nimellä]] muilta tšüľľeltä.
+* Võid tširjuttõma uuvvõõ tšüľľee <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} {{PAGENAME}}]</span>.',
+'previewnote' => "'''Kase on ainult prestavleńńa! Tšültšiä ebõõ veel salvotõttu!'''",
+'editing' => 'Muutun $1',
+'editingsection' => 'Muuttõmizõll on õsa tšüľľess $1',
+'copyrightwarning' => "Kõik {{SITENAME}}'lle formittu saatšid katsotaa julkaistussi $2 -litsentsi mukka ($1). Kui että taho, jot Teďďee tširjutussa muutõtaa armõttomassi ja svobodno tšävvää uuvvõllõõ, elä tširjuttõga.<br />Toož, Te luppattõ, jot tširjutittä Teďďee teksti ize, vai kopiiroizitta slobodnoissa tšüľľessä.<br />'''ELÄ TŠÄÜTTEGA TETŠEJÄÕIKUSÕKAA OĎĎÕLTUIT MAŤERIIT ILMA LUPPA!'''",
+'templatesused' => 'Sell tšüľľell tšäütetüd šabloonid:',
+'templatesusedpreview' => 'Šabloonid sellä prestavleńńalla:',
+'template-protected' => '(oďďõttu)',
+'template-semiprotected' => '(varjõttu anonüümeilt ja uusilt tšäüttijilt)',
+'hiddencategories' => 'Kase tšültši kuulub {{PLURAL:$1|vahtiaavaa salautõttuu gruppaa|vahtiaavii salautõttuisõõ gruppoisõõ}}:',
+'permissionserrorstext-withaction' => 'Teill ebõõ luppa $2 {{PLURAL:$1|vahtiaavass süüss|vahtiaaviss süiss}} peräss:',
+'moveddeleted-notice' => "Kase tšültši on pühittü. Alla on sene tšüľľee pühi'istori.",
+
+# History pages
+'viewpagelogs' => 'Näüt sene tšüľľee logid',
+'currentrev-asof' => 'Nütšüin verzija $1',
+'revisionasof' => 'Verzija $1',
+'previousrevision' => '← Vanõpi verzija',
+'nextrevision' => 'Uuvvõpi verzija →',
+'currentrevisionlink' => 'Nütšüin verzija',
+'cur' => 'nütš.',
+'last' => 'entin',
+'histlegend' => "Merkid: ({{int:cur}}) = vahõ nütšüizese verzijaa, ({{int:last}}) = vahõ entiizese verzijaa, '''{{int:minoreditletter}}''' = peeni muutuz",
+'history-fieldset-title' => 'Ľistvoit muutuzistoria',
+'histfirst' => 'Kõikkõa varaizõpid',
+'histlast' => 'Kõikkõa viimõizõpid',
+
+# Revision deletion
+'rev-delundel' => 'näüt/salauta',
+'revdel-restore' => 'muutu nätšüvüss',
+
+# Merge log
+'revertmerge' => 'Kummut ühesüz',
+
+# Diffs
+'history-title' => 'Tšüľľee $1 muutuzistori',
+'difference' => '(Vahõd verzijoďďee väliz)',
+'lineno' => 'Viiru $1:',
+'compareselectedversions' => 'Võrrõõ valitsõttuit verzijoit',
+'editundo' => 'kummut',
+
+# Search results
+'searchresults' => 'Etsüü tulõmuhsõd',
+'searchresults-title' => 'Etsü tulõmuhsõd ettsüsõnalõõ "$1"',
+'searchresulttext' => 'Lisäsoobšeńńad ettsimizessä on [[{{MediaWiki:Helppage}}|praavilatšüľľellä]].',
+'searchsubtitle' => 'Etsizid fraaza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kõikõd tšüľľed, kummad alkõa fraazaakaa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõikõd tšüľľed näütteväd tšüľľelee "$1"]])',
+'searchsubtitleinvalid' => "Ettsizittä: '''$1'''",
+'notitlematches' => 'Eb löütännü miltäiss tšültšiä sene ettsüsõnaaka',
+'notextmatches' => 'Ettsisõnaa eb löütünnü tšüľľee tekstiissä',
+'prevn' => 'entiiss $1',
+'nextn' => '{{PLURAL:$1|$1}} vahtiaava →',
+'viewprevnext' => 'Näüt ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 sõna|$2 sõna}})',
+'search-redirect' => '(mešaituz $1)',
+'search-section' => '(alajako $1)',
+'search-suggest' => 'Tähetidko: $1',
+'search-interwiki-caption' => 'Sõzarprojektid',
+'search-interwiki-default' => 'tulõmuhsõd $1:',
+'search-interwiki-more' => '(lisä)',
+'search-mwsuggest-enabled' => 'tarittsõmisijõkaa',
+'search-mwsuggest-disabled' => 'tarittsõmizõtta',
+'nonefound' => "'''Zametšańńa''': Ettsü etsib anult osiss nimiruumii.
+Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taas juttutšüľľeekaa, sablooniikaa, jne.), vai tarvittõga nimiruumi niku prefiksi.",
+'powersearch' => 'Etenennü ettsü',
+'powersearch-legend' => 'Etenennü ettsü',
+'powersearch-ns' => 'Etsi nimiruumõssa:',
+'powersearch-redir' => 'Spiiska mešaitussijõ',
+'powersearch-field' => 'Etsi',
+
+# Preferences page
+'preferences' => 'Koozid',
+'mypreferences' => 'Minu koozid',
+
+# Groups
+'group-sysop' => 'Praviťeľad',
+
+'grouppage-sysop' => '{{ns:project}}:Praviťeľad',
+
+# User rights log
+'rightslog' => 'Tšäütteminõikuslogi',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'muutu sitä tšültšiä',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|muutuz|muutussõd}}',
+'recentchanges' => 'Viimõizõd muutussõd',
+'recentchanges-legend' => 'Viimass muutuhsõss valimizõd',
+'recentchanges-feed-description' => 'Sell sivull võib vahtia uutizijõ muutuhsiit.',
+'rcnote' => 'Alla on {{PLURAL:$1|ühsi muutuz|viimeiziit $1 muutussiit}} viimeize {{PLURAL:$2|ühee päivää|$2 päivää}}, $4 $5.',
+'rclistfrom' => 'Näüt uuvvõd muutuhsõd $1 alguss',
+'rcshowhideminor' => '$1 peened muutussõd',
+'rcshowhidebots' => '$1 botid',
+'rcshowhideliu' => '$1 süäme tširjutõnnud tšäüttijäd',
+'rcshowhideanons' => '$1 anonüümid tšäüttijäd',
+'rcshowhidemine' => '$1 õmad muutussõd',
+'rclinks' => 'Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.<br />$3',
+'diff' => 'vahõ',
+'hist' => 'istori',
+'hide' => 'Salauta',
+'show' => 'Näüt väľľää',
+'minoreditletter' => 'p',
+'newpageletter' => 'U',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Näüt detaaľiit (JavaScript on tarviz)',
+'rc-enhanced-hide' => 'Salauta detaaľiit',
+
+# Recent changes linked
+'recentchangeslinked' => 'Sukulaizõd muutussõd.',
+'recentchangeslinked-title' => 'Tšüľľelt $1 linkitettüďďe tšültšije muutuhsõd.',
+'recentchangeslinked-summary' => "Kase osoobennoi tšültši näütteb muutusõd tšültšillä, kummalõõ on seltä tšüľľeltä näüteltü.
+Tšüľľed, kummad õmad teďďellä [[Special:Watchlist|kattsõspiizgalla]] on tširjuttõnnu '''pimmiässi'''.",
+'recentchangeslinked-page' => 'Tšüľľee nimi:',
+'recentchangeslinked-to' => 'Näüt muutuhsõd tšültšiisee, kummall on linkki annõttuu tšültšesee',
+
+# Upload
+'upload' => 'Laajõngoit failia ülez',
+'uploadlogpage' => 'Faililogi',
+'uploadedimage' => '"[[$1]]" on laajõngoitõttu ülez',
+
+# File description page
+'filehist' => 'Failii istori',
+'filehist-help' => 'Štšolkoittõga Päivätšisla/Tšelloaika näe miltäin faili õli sell aiga pilkall.',
+'filehist-current' => 'nütšüin',
+'filehist-datetime' => 'Päivätšisla/Tšelloaika',
+'filehist-thumb' => 'Peenikuva',
+'filehist-thumbtext' => 'Peenikuva $1 verzijalõõ',
+'filehist-user' => 'Tšäüttijä',
+'filehist-dimensions' => 'Mitad',
+'filehist-comment' => 'Zametšańńa',
+'imagelinks' => 'Faililinkid',
+'linkstoimage' => 'Selle kuvallõ {{PLURAL:$1|näütteeb kase tšültši|näütteväd kaned tšüľľed}}:',
+'sharedupload' => "Kase faili on $1'lt ja muud projektõd saavad tšäüttää sitä.",
+'uploadnewversion-linktext' => 'Laajõngoit uusi verzija seness failiss ülez',
+
+# Statistics
+'statistics' => 'Staťisťikka',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|baitti|baittia}}',
+'nmembers' => '$1 {{PLURAL:$1|selttsilain|selttsilaizõd}}',
+'prefixindex' => 'Kõik tšüľľed prefiksiikaa',
+'newpages' => 'Uuvvõd tšüľľed',
+'move' => 'Liikut',
+'movethispage' => 'Liikut kase tšültši',
+'pager-newer-n' => '{{PLURAL:$1|uuvvõpi 1|uuvvõpad $1}}',
+'pager-older-n' => '{{PLURAL:$1|vanöpi 1|vanõpad $1}}',
+
+# Book sources
+'booksources' => 'Tširjalähed',
+'booksources-search-legend' => 'Etsi tširjalähteit',
+'booksources-go' => 'Mee',
+
+# Special:Log
+'log' => 'Logid',
+
+# Special:AllPages
+'allpages' => 'Kõik artikkelid',
+'alphaindexline' => '$1 ... $2',
+'prevpage' => 'Entin tšültši ($1)',
+'allpagesfrom' => 'Tšüľľelt',
+'allpagesto' => 'Tšüľľessaa',
+'allarticles' => 'Kõikõd tšüľľed',
+'allpagessubmit' => 'Mee',
+
+# Special:LinkSearch
+'linksearch' => 'Ulkopoolizõd linkid',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Uuvvõd tšäüttijäd',
+'newuserlog-create-entry' => 'Uusi tšäüttijä',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(selttsilainspiiska)',
+
+# E-mail user
+'emailuser' => 'Lähettega elektropoštia selle tšäüttijälle',
+
+# Watchlist
+'watchlist' => 'Minu kattsõspiiska',
+'mywatchlist' => 'Minu kattsõspiiska',
+'watchlistfor' => '$1',
+'addedwatch' => 'Lisättü kattsospiizgallõ',
+'addedwatchtext' => "Tšültši \"[[:\$1]]\" on lisättü Teďďee [[Special:Watchlist|kattsospiizgallõ]].
+Tšültšese ja sene juttutšültšese tehäväd tulõvaizõd muutuhsõd leeväd tšisloitõtud siäll.
+Tšültši leeb tširjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall viimeizije muutuhsijõ]].",
+'removedwatch' => 'Pantu kattsõspiizgalt poiz',
+'removedwatchtext' => 'Tšültši "[[:$1]]" on pantu [[Special:Watchlist|teďďee kattsõspiizgalt]] poiz.',
+'watch' => 'Katso',
+'watchthispage' => 'Katso sitä tšültšiä',
+'unwatch' => 'Lõpõt kattsõõmin',
+'watchlist-details' => 'Kattsõspiizgall on {{PLURAL:$1|$1 tšültši|$1 tšültšiä}} (ilma juttutšültšiit).',
+'wlshowlast' => 'Näüt viimeized $1 tunnia vai $2 päivää $3',
+'watchlist-options' => 'Kattsõspiizgaa valimizõd',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Kattsõõn…',
+'unwatching' => 'Kattsõõmizõõ lõpõttõmin…',
+
+# Delete
+'deletepage' => 'Pühi tšültši',
+'confirmdeletetext' => 'Õlõtta pühtšimässä tšüľľee vai failii ja kõigõ sene istorii. Õlka nii üvä, kõvissõga jot tahotta sitä tehä, jot saatta arvoa sledstvijäd jot pühtšimüz on [[{{MediaWiki:Policy-url}}|poolissaa]] mukka.',
+'actioncomplete' => 'Töö tehtü lõppuu',
+'deletedtext' => '"<nowiki>$1</nowiki>" on pühittü.
+Tšüľľellä $2 on spiiska viimeiziss pühtšimühsiiss.',
+'deletedarticle' => 'roottšiz tšüľľee $1',
+'dellogpage' => 'Pühitüd tšüľľed',
+'deletecomment' => 'Süü',
+'deleteotherreason' => 'Muu vai lisä süü',
+'deletereasonotherlist' => 'Muu süü',
+
+# Rollback
+'rollbacklink' => 'vääntega',
+
+# Protect
+'protectlogpage' => 'Varjõtud tšüľľed',
+'protectedarticle' => '"[[$1]]" on nüd varjõttu',
+'modifiedarticleprotection' => 'muuti tšüľľee [[$1]] varjauztasoa',
+'protectcomment' => 'Süü',
+'protectexpiry' => 'Lõpub:',
+'protect_expiry_invalid' => 'Lõppuaika eb kõlpa.',
+'protect_expiry_old' => 'Lõppuaika on meneväz.',
+'protect-text' => "Võitta kattsoa ja muuttaa tšüľľee '''<nowiki>$1</nowiki>''' lupoit.",
+'protect-locked-access' => "Että või muuttaa tšüľľee varjauztasoa. All on tšüľľee \"'''\$1'''\" nütšüized varjauztazod:",
+'protect-cascadeon' => 'Kase tšültši on varjõttu, ku on sisällütettü all {{PLURAL:$1|õlõvaa jadgotussi varjõttuhõõ tšültšese|õlõvii jadgotussi varjõttuisõ tšültšiise}}. Võitta muuttaa sene tšüľľee varjuztasoa, mutta se eb vaikuta jadgotõttuu varjuhsiise.',
+'protect-default' => 'Salli kõik tšäüttijäd',
+'protect-fallback' => 'Treebuit $1-õikuz',
+'protect-level-autoconfirmed' => 'Piättee uuvvõd ja anonüümed tšäüttijäd',
+'protect-level-sysop' => 'Ainult praviťeľad',
+'protect-summary-cascade' => 'jadgotõltu',
+'protect-expiring' => 'lõpub $1',
+'protect-cascade' => 'Varjaa jõka tšültši, kumpa on tänne tšültšesee sisällütennü.',
+'protect-cantedit' => 'Että või muuttaa tšüľľee varjauztasoa, ku tüü että saa muuttaa tšültšiä.',
+'restriction-type' => 'Rajauz',
+'restriction-level' => 'Varjauz',
+
+# Undelete
+'undeletelink' => 'näüt/vääntee',
+'undeletedarticle' => '"[[$1]]" vääneltü',
+
+# Namespace form on various pages
+'namespace' => 'Nimiruumi:',
+'invert' => 'Tšäänn nimiruumivalimin päävassaizõssi',
+'blanknamespace' => '(Artikkelid)',
+
+# Contributions
+'contributions' => 'Tšäüttijää avittamizõd',
+'contributions-title' => 'Tšäüttijää $1 avittamizõd',
+'mycontris' => 'Minu avittamizõd',
+'contribsub2' => 'Tšäüttijää $1 ($2) avittamizõd',
+'uctop' => '(ülez)',
+'month' => 'Kuu',
+'year' => 'Voosi:',
+
+'sp-contributions-newbies' => 'Näüt uusijõõ tšäüttijee muutuhsõd',
+'sp-contributions-blocklog' => 'piättelemized',
+'sp-contributions-search' => 'Etsi avittamisiit',
+'sp-contributions-username' => 'IP-adressi vai tšäüttijänimi',
+'sp-contributions-submit' => 'Etsi',
+
+# What links here
+'whatlinkshere' => 'Linkid tänne',
+'whatlinkshere-title' => 'Tšüľľed, kummad näütellä tšüľľelle "$1"',
+'whatlinkshere-page' => 'Tšültši:',
+'linkshere' => "Vahtiaavilt tšültšiilt on linkki tšüľľelle '''[[:$1]]''':",
+'isredirect' => 'mešaituztšültši',
+'istemplate' => 'sisällütüz šabloonii',
+'isimage' => 'kuvalinkki',
+'whatlinkshere-prev' => '{{PLURAL:$1|entiin tšültši|$1 entiiss tšültšiä}}',
+'whatlinkshere-next' => '{{PLURAL:$1|vahtiaava tšültši|$1 vahtiaava tšültšiä}}',
+'whatlinkshere-links' => '← linkid',
+'whatlinkshere-hideredirs' => '$1 mešaituhsõd',
+'whatlinkshere-hidetrans' => '$1 sisällütühsed',
+'whatlinkshere-hidelinks' => '$1 linkid',
+'whatlinkshere-filters' => 'Fiľtrad',
+
+# Block/unblock
+'blockip' => 'Piättee tšäüttijää',
+'ipboptions' => '2 tunnia:2 hours,1 päivä:1 day,3 päivää:3 days,1 näteľi:1 week,2 näteľiä:2 weeks,1 kuu:1 month,3 kuut:3 months,6 kuut:6 months,1 voosi:1 year,itšiin:infinite',
+'ipblocklist' => 'Piäteltüd IP-adressid ja tšäüttijänimed',
+'blocklink' => 'piättee',
+'unblocklink' => 'rootši piäsüss',
+'change-blocklink' => 'muutu piätüss',
+'contribslink' => 'avittamizõd',
+'blocklogpage' => 'Piätüzlogi',
+'blocklogentry' => 'piätteli tšäüttijää vai IP-tšislaa [[$1]]. Piättelemin lõpub $2 $3',
+'unblocklogentry' => 'rootši tšäüttijält $1 muutuzpiäsüss',
+'block-log-flags-nocreate' => 'lukuloomin piäteltü',
+
+# Move page
+'movepagetext' => "Alla õlõvall ruumõll võitta anta tšüľľelle uutt nimiä; kõik tšüľľee istori leeb liikutõttu uuvvõ nimee alle.
+Vanass tšüľľess nõizõb tulõma mešaituztšültši, kumpa näütteeb uuvvõsõ tšültšese.
+Võitta obnovoittaa tšültšese silmell lüüvvävä mešaituhsõd avtomaattisessi uuvõllõ nimelle.
+Kui että taho sitä tehävää avtomaattisessi, mälehtega ettsiää [[Special:DoubleRedirects|kahskõrtaissit]] vai [[Special:BrokenRedirects|kattšiit]] mešaituhsiit.
+Õlõtta vastuussa sihee, jot linkid näütteeväd sinne, kuhõõ ned pitäiziväd näütellää.
+
+Tšültšiä '''eb''' nõizõ liikuttama, kui uusi nimi on jo tšäütennü, muut kuiva kui tšültši on tühjä vai on mešaituz, kummall ebõõ muutuzistoria.
+See täheteb sitä, jot võitta liikuttaa tšüľľee takaz vanalle nimelle kui öhsünettä, mutta että või tširjuttaa eloz õlõvaa tšüľľee päälle.
+
+See saattab õlla suuri ja oottõmizõtoi muutuz populaarnoille tšüľľelle. Õlka nii üvä, obespetšoittõga, jot saatta arvoa sledstvijäd ennee kui liikutta tšüľľee.",
+'movepagetalktext' => "Tšültši ja sene juttutšültši leeväd liikutõtud ühez, '''va kui''':
+*Tseeľitšüľľell on eloz juttutšültši, kumpa ebõõ tühjä, vai
+*Jätättä all õlõvaa ruuoo merkkittämättä.
+
+Neill kõhtoill piättä liikuttaa vai ühissää tšüľľee tšäzi.",
+'movearticle' => 'Liikut tšültši',
+'newtitle' => 'Uusi nimi tšüľľelee',
+'move-watch' => 'Katso sitä tšültšiä',
+'movepagebtn' => 'Liikut tšültši',
+'pagemovedsub' => 'Liikka tuli valmessi',
+'movepage-moved' => '\'\'\'"$1" on liikuttu nimelee "$2"\'\'\'',
+'articleexists' => 'Tseeľitšültši on jo eloz, vai võõbornoi nimi eb kõlpa. Õlka nii üvä ja valittsõga uusi nimi.',
+'talkexists' => "'''Tšüľľee liikka tuli valmessi, a juttitšültšiä eb õli liikutõttu, ku uuvvõ zagolofkaa all on jo juttutšültši. Juttutšültšije sisälto piättä ühinessä tšäzi.'''",
+'movedto' => 'liikutõttu',
+'movetalk' => 'Liikut toož juttutšültši',
+'1movedto2' => 'Tšültši [[$1]] on liikutõttu uuvvõllõ nimõllõ [[$2]]',
+'1movedto2_redir' => 'liikuti tšüľľee [[$1]] mešaituhsõõ [[$2]] päälle',
+'movelogpage' => 'Liikkalogi',
+'movereason' => 'Süü',
+'revertmove' => 'kummut',
+
+# Export
+'export' => 'Tšültšiďďee väľľää veto',
+
+# Thumbnails
+'thumbnail-more' => 'Suurõt',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Teďďee tšäüttijätšültši',
+'tooltip-pt-mytalk' => 'Teďďee juttu-tšültši',
+'tooltip-pt-preferences' => 'Teďďee koozid',
+'tooltip-pt-watchlist' => 'Spiiska tšültšissä, kummad muutussia kattsõõtta',
+'tooltip-pt-mycontris' => 'Spiiska teďďee avittamisiit',
+'tooltip-pt-login' => 'Müü taritsõmmõ teit süäme tširjuttõma, a ebõõ tarvitõttõva',
+'tooltip-pt-logout' => 'Tširjut uloz',
+'tooltip-ca-talk' => 'Juttu sisällossa',
+'tooltip-ca-edit' => 'Tüü võittõ muuttaa sitä tšültšiä.
+Õõ nii üvä, ennee salvomiss, retsenziroittiga!',
+'tooltip-ca-addsection' => 'Lissä uusi alaõsa',
+'tooltip-ca-viewsource' => 'Kase tšültši on varjõttu.
+Että või muuttaa tšültšia, mutta võittõ kattsoa sene lähtekoodi.',
+'tooltip-ca-history' => 'Sene tšüľľee vanad verzijad',
+'tooltip-ca-protect' => 'Varjaa kase tšültši',
+'tooltip-ca-delete' => 'Pühi kase tšültši',
+'tooltip-ca-move' => 'Liikut kase tšültši',
+'tooltip-ca-watch' => 'Lissä kase tšültši kattsõspiiskalõõ',
+'tooltip-ca-unwatch' => 'Paa kase tšültši Teďďee kattsõspiizgalt poiz',
+'tooltip-search' => 'Etsi vikissa',
+'tooltip-search-go' => 'Mee tšüľľelee, kummall on vakurat sesama nimi (kui eloz on)',
+'tooltip-search-fulltext' => 'Etsi tšültšiltä sitä tekstiä',
+'tooltip-n-mainpage' => 'Mee esitšüľľelee',
+'tooltip-n-portal' => 'Juttua projektissa: Mitä tüü võittõ tehä, kuza levvette mitä',
+'tooltip-n-currentevents' => 'Lugõ soobšeńńad nütšüizess kõhtoiss',
+'tooltip-n-recentchanges' => 'Spiiska uusissa muutussissa',
+'tooltip-n-randompage' => 'Avaa tšültšia kõhtõissi',
+'tooltip-n-help' => 'Praavila',
+'tooltip-t-whatlinkshere' => 'Spiiska kõikkissa tšültšissä, kummad tänne näütellä',
+'tooltip-t-recentchangeslinked' => 'Viimõizõd muuttussõd tšültšillä, kummalõõ on siittä näüteltü',
+'tooltip-feed-rss' => 'RSS-söötte selle tšüľľelle',
+'tooltip-feed-atom' => 'Atom-söötte selle tšüľľelle',
+'tooltip-t-contributions' => 'Näüt spiiska sene tšäüttijää avittamiss',
+'tooltip-t-emailuser' => 'Lähettega elektropoštia selle tšäüttijälle',
+'tooltip-t-upload' => 'Laajõngoit failia ülez (загружать файл)',
+'tooltip-t-specialpages' => 'Spiiska kõikkissa osoobenoissa tšültšissä',
+'tooltip-t-print' => 'Sene tšüľľee petšatoittõva verzija',
+'tooltip-t-permalink' => 'Postojannoi linkki tšüľľee selle verzijalõõ',
+'tooltip-ca-nstab-main' => 'Näüt artikkelia',
+'tooltip-ca-nstab-user' => 'Näüt tšäüttijätšültši',
+'tooltip-ca-nstab-special' => 'Kase on osoobennoi tšültši, tüü ed saa sitä muuttõma',
+'tooltip-ca-nstab-project' => 'Näüt projektitšültši',
+'tooltip-ca-nstab-image' => 'Näüt failitšültši',
+'tooltip-ca-nstab-template' => 'Näüt šablooni',
+'tooltip-ca-nstab-category' => 'Näüt gruppatšültši',
+'tooltip-minoredit' => 'Merkit kase peenessi muutuhsõssi',
+'tooltip-save' => 'Salvo muutussõd',
+'tooltip-preview' => 'Retsenziroitta muutuss. Õõ nii üvä, ennee salvomiss, retsenziroittiga!',
+'tooltip-diff' => 'Näüt tehtüd muutuhsõd',
+'tooltip-compareselectedversions' => 'Näütää vahõd 2 valitsõttuďďõ verzijoďďõ väliz',
+'tooltip-watch' => 'Lissä kase tšültši kattsõspiizgallõ',
+'tooltip-rollback' => 'Vääntega tšüľľee teksti vanõmpi verzijalõõ',
+'tooltip-undo' => '"Kummut" väänteeb kasene muutusõõ ja avab artikkelii prestavleńńaa.
+Toož, võittõ tširjutta väänteüssee süü.',
+
+# Browsing diffs
+'previousdiff' => '← Vanõpi muutuz',
+'nextdiff' => 'Uuvvõpi muutuz →',
+
+# Media information
+'file-info-size' => '($1 × $2 px, $3, MIME-sortta: $4)',
+'file-nohires' => '<small>Suurõpaa kuva ebõõ.</small>',
+'svg-long-desc' => '(SVG-faili $1 × $2 px, failii suuruz: $3)',
+'show-big-image' => 'Kõrka-rezoľuuttsiin verzija',
+'show-big-image-thumb' => '<small>Prestavľeńńaa suuruz: $1 × $2 px</small>',
+
+# Bad image list
+'bad_image_list' => 'Spiizgaa formatti on:
+
+Ainult viirud, kummad alkõa merkiigaa * leeväd pantu panõlõõ.
+Esimein linkki viirulla piäb õllaa linkki kahõpäälizõlõõ faililõõ.
+Kõik muud linkid leeväd pantu panõlõõ nii ku ero.',
+
+# Metadata
+'metadata' => 'Sisältokuvõtuz',
+'metadata-help' => 'Kase faili sisältäb lisäinformatsijaa, mikä on lizättü tsifrovoi kamera vai skanera poolt.
+Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull failill.',
+'metadata-expand' => 'Näüt lontsõkait detaaľiit',
+'metadata-collapse' => 'Salauta lontsõkait detaaľiit',
+'metadata-fields' => 'Vahtiaavad platsid õvad vällez kuvatšüľľell, ku sisältotabľittsa on peenettettü.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength',
+
+# External editor support
+'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
+'edit-externally-help' => '(Kattsoga [http://www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'koko istori',
+'namespacesall' => 'kõik',
+'monthsall' => 'kõik',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Näüt muutuhsõd',
+'watchlisttools-edit' => 'Muuttaa spiiskaa',
+'watchlisttools-raw' => 'Muut lähtefaili',
+
+# Special:SpecialPages
+'specialpages' => 'Osoobenoid tšüľľed',
+
+);
diff --git a/languages/messages/MessagesVro.php b/languages/messages/MessagesVro.php
index 9c04cd40..ffca7872 100644
--- a/languages/messages/MessagesVro.php
+++ b/languages/messages/MessagesVro.php
@@ -69,6 +69,7 @@ $messages = array(
'tog-enotifminoredits' => 'Saadaq mullõ e-kiri ka väikeisi muutmiisi kotsilõ',
'tog-enotifrevealaddr' => 'Näütäq mu e-postiaadrõssit tõisilõ saadõtuin teedüssin',
'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
+'tog-oldsig' => 'Parhilladsõ alakirotusõ proomikaehus:',
'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
'tog-externaleditor' => "Pruugiq vaikimiisi välist tekstitoimõndajat (õnnõ as'atundjilõ, nõud suq puutri ümbresäädmist)",
'tog-externaldiff' => "Pruugiq vaikimiisi välist võrrõlusprogrammi (õnnõ as'atundjilõ, nõud su puutri ümbresäädmist)",
@@ -91,6 +92,13 @@ $messages = array(
'underline-never' => 'Ei kunagi',
'underline-default' => 'Võrgokaeja perrä',
+# Font style option in Special:Preferences
+'editfont-style' => 'Toimõndamiskotusõ kirätüüp:',
+'editfont-default' => 'Võrgokaeja vaikimiisisäädeq',
+'editfont-monospace' => 'Püsüsammuga font',
+'editfont-sansserif' => 'Ilostuisilda (sans-serif-) kiri',
+'editfont-serif' => 'Ilostuisiga (serif-) kiri',
+
# Dates
'sunday' => 'pühäpäiv',
'monday' => 'iispäiv',
@@ -150,7 +158,7 @@ $messages = array(
'category-media-header' => 'Kiräkotus katõgoorian "$1"',
'category-empty' => "''Seon katõgoorian olõ-i parhilla artikliid ega teedüstüid.''",
'hidden-categories' => '{{PLURAL:$1|Käkit katõgooria|Käkidüq katõgooriaq}}',
-'hidden-category-category' => 'Käkidüq katõgooriaq', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Käkidüq katõgooriaq',
'category-subcat-count' => '{{PLURAL:$2|Seol katõgoorial om õnnõ järgmäne allkatõgooria.|Seol katõgoorial {{PLURAL:$1|om järgmäne allkatõgooria|ommaq järgmädsed $1 allkatõgooriat}} (kokko $2).}}',
'category-subcat-count-limited' => 'Seol katõgoorial {{PLURAL:$1|om järgmäne allkatõgooria|ommaq järgmädsed $1 allkatõgooriaq}}.',
'category-article-count' => '{{PLURAL:$2|Seon katõgoorian om õnnõ järgmäne lehekülg.|Seon katõgoorian {{PLURAL:$1|om järgmäne lehekülg|ommaq järgmädseq $1 lehekülge}} (kokko $2).}}',
@@ -158,6 +166,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Seon katõgoorian om õnnõ järgmäne teedüstü.|{{PLURAL:$1|Järgmäne teedüstü om |Järgmädseq $1 teedüstüt ommaq}} seon katõgoorian (kokko $2).}}',
'category-file-count-limited' => '{{PLURAL:$1|Järgmäne teedüstü om|Järgmädseq $1 teedüstüt}} ommaq seon katõgoorian.',
'listingcontinuesabbrev' => 'lätt edesi',
+'index-category' => 'Indeksiga leheq',
+'noindex-category' => 'Indeksildä leheq',
'mainpagetext' => "'''MediaWiki tarkvara paika säet.'''",
'mainpagedocfooter' => 'Vikitarkvara pruukmisõ kotsilõ loeq mano:
@@ -166,10 +176,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki kõgõ küsütümbäq küsümiseq (inglüse keelen)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
-'about' => 'Pääteedüs',
-'article' => 'Sisu',
-'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
-'cancel' => 'Jätäq katski',
+'about' => 'Pääteedüs',
+'article' => 'Sisu',
+'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
+'cancel' => 'Jätäq katski',
+'moredotdotdot' => 'Viil...',
+'mypage' => 'Muq lehekülg',
+'mytalk' => 'Mu arotus',
+'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
+'navigation' => 'Juhtminõ',
+'and' => '&#32;ja',
+
+# Cologne Blue skin
'qbfind' => 'Otsiq',
'qbbrowse' => 'Kaeq',
'qbedit' => 'Toimõndaq',
@@ -177,15 +195,35 @@ $messages = array(
'qbpageinfo' => 'Leheküle teedüs',
'qbmyoptions' => 'Mu säädmiseq',
'qbspecialpages' => 'Tallitusleheküleq',
-'moredotdotdot' => 'Viil...',
-'mypage' => 'Muq lehekülg',
-'mytalk' => 'Mu arotus',
-'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
-'navigation' => 'Juhtminõ',
-'and' => '&#32;ja',
-
-# Metadata in edit box
-'metadata_help' => 'Metateedüs:',
+'faq' => 'Sagõhõhe küsüdüq küsümiseq',
+'faqpage' => 'Project:KKK',
+
+# Vector skin
+'vector-action-addsection' => 'Vahtsõ teema ülespandminõ',
+'vector-action-delete' => 'Kistudaq ärq',
+'vector-action-move' => 'Nõstaq ümbre',
+'vector-action-protect' => 'Kaidsaq',
+'vector-action-undelete' => 'Tiiq tagasi',
+'vector-action-unprotect' => 'Kaitsku-i',
+'vector-namespace-category' => 'Katõgooria',
+'vector-namespace-help' => 'Abileht',
+'vector-namespace-image' => 'Teedüstü',
+'vector-namespace-main' => 'Leht',
+'vector-namespace-media' => 'Meediäleht',
+'vector-namespace-mediawiki' => 'Tallitusteedüs',
+'vector-namespace-project' => 'Projektileht',
+'vector-namespace-special' => 'Tallituslehekülg',
+'vector-namespace-talk' => 'Arotus',
+'vector-namespace-template' => 'Näüdüs',
+'vector-namespace-user' => 'Pruukjalehekülg',
+'vector-view-create' => 'Luuq',
+'vector-view-edit' => 'Toimõndaq',
+'vector-view-history' => 'Näütäq aoluku',
+'vector-view-view' => 'Loeq',
+'vector-view-viewsource' => 'Kaeq lätteteksti',
+'actions' => 'Tallitusõq',
+'namespaces' => 'Nimeruumiq',
+'variants' => 'Tõõsõndiq',
'errorpagetitle' => 'Viga',
'returnto' => 'Tagasi lehe manoq $1.',
@@ -235,7 +273,7 @@ $messages = array(
'otherlanguages' => 'Tõisin keelin',
'redirectedfrom' => '(Ümbre saadõt artiklist $1)',
'redirectpagesub' => 'Ümbresaatmislehekülg',
-'lastmodifiedat' => 'Seo leht om viimäte muudõt $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Seo leht om viimäte muudõt $2, $1.',
'viewcount' => 'Seo lehe pääl om käüt $1 {{PLURAL:$1|kõrd|kõrda}}.',
'protectedpage' => 'Kaidsõt artikli',
'jumpto' => 'Mineq üle:',
@@ -246,7 +284,6 @@ $messages = array(
'aboutsite' => '{{SITENAME}} tutvustus',
'aboutpage' => 'Project:Pääteedüs',
'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä.',
-'copyrightpagename' => '{{SITENAME}} ja tegijäõigusõq',
'copyrightpage' => '{{ns:project}}:Tegijäõigusõq',
'currentevents' => 'Miä sünnüs',
'currentevents-url' => 'Project:Miä sünnüs',
@@ -254,8 +291,6 @@ $messages = array(
'disclaimerpage' => 'Project:Üledseq hoiatusõq',
'edithelp' => 'Toimõndamisoppus',
'edithelppage' => 'Help:Kuis_artiklit_toimõndaq',
-'faq' => 'Sagõhõhe küsüdüq küsümiseq',
-'faqpage' => 'Project:KKK',
'helppage' => 'Help:Oppus',
'mainpage' => 'Pääleht',
'mainpage-description' => 'Pääleht',
@@ -335,10 +370,6 @@ Viimäne teedüskogo perräküsümine oll\':
"$1"
ja tuu tetti funktsioonist "$2".
MySQL and\' via "$3: $4".',
-'noconnect' => "Kah'os om vikil tekniline hädä. Teedüskogoserverit saa-i kätte.<br />
-$1",
-'nodb' => 'Saa es teedüskoko $1 kätte',
-'cachederror' => 'Taa lehekülg om puhvõrdõt kopi ja ei pruugiq tuuperäst ollaq kõgõ värskimb.',
'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
'readonly' => 'Teedüskogo kirotuskaitsõ all',
'enterlockreason' => 'Kirodaq lukkupandmisõ põhjus ja ligikaudnõ vallalõvõtmisõ aig',
@@ -397,13 +428,11 @@ $2',
'virus-unknownscanner' => 'tundmalda viirusõkaidsõq:',
# Login and logout pages
-'logouttitle' => 'Nime alt välläminek',
'logouttext' => "'''Olõt nime alt vällä lännüq.'''
Võit {{SITENAME}}t ilma nimeldä edesi toimõndaq vai [[Special:UserLogin|vahtsõst sama vai tõõsõ nimega sisse minnäq]].
Tähelepandmisõs: niikavva, ku sa olõ-i tühäs tennüq uma võrgokaeja vaihõmällo, võivaq mõnõq leheküleq iks viil näüdädäq, nigu sa olõsi nimega seen.",
'welcomecreation' => '<h2>Tereq, $1!</h2><p>Su konto om valmis. Võit taa hindä perrä sisse säädäq.',
-'loginpagetitle' => 'Nimega sisseminek',
'yourname' => 'Pruukjanimi',
'yourpassword' => 'Salasõna',
'yourpasswordagain' => 'Kirodaq viilkõrd salasõna',
@@ -426,22 +455,7 @@ Tähelepandmisõs: niikavva, ku sa olõ-i tühäs tennüq uma võrgokaeja vaihõ
'badretype' => 'Kirotõduq salasõnaq ei klapiq kokko.',
'userexists' => 'Taad pruukjanimme jo pruugitas.
Valiq tõõnõ nimi.',
-'youremail' => 'Suq e-posti aadrõs *',
-'username' => 'Pruukjanimi:',
-'uid' => 'Pruukjanummõr:',
-'prefs-memberingroups' => 'Kuulus {{PLURAL:$1|rühmä|rühmihe}}:',
-'yourrealname' => 'Peris nimi *',
-'yourlanguage' => 'Pruukjapalgõ kiil:',
-'yourvariant' => 'Keelevariant:',
-'yournick' => 'Alakirotus',
-'badsig' => 'Seo alakirotus olõ-i masva.',
-'badsiglength' => "Alakirotus om pall'o pikk.
-Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
-'email' => 'e-posti aadrõs',
-'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
'loginerror' => 'Sisseminemise viga',
-'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
-'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
'nocookiesnew' => 'Pruukjakonto om valmis, a sa päse-s sisse, selle et {{SITENAME}} tarvitas pruukjidõ kimmästegemises valmistuisi. Suq võrgokaejan ommaq valmistusõq ärq keeledüq. Säeq valmistusõq lubatus ja mineq sis uma vahtsõ pruukjanime ja salasõnaga sisse.',
'nocookieslogin' => '{{SITENAME}} tarvitas pruukjidõ kimmästegemises valmistuisi. Suq võrgokaejan ommaq valmistusõq keeledüq. Säeq valmistusõq lubatus ja prooviq vahtsõst.',
'noname' => 'Võlssi kirotõt pruukjanimi.',
@@ -497,7 +511,6 @@ Oodaq vähä inne ku proovit vahtsõst.",
'retypenew' => 'Kirodaq viilkõrd vahtsõnõ salasõna',
'resetpass_submit' => 'Kirodaq salasõna ja mineq nimega sisse',
'resetpass_success' => 'Salasõna vaihtaminõ läts kõrda.',
-'resetpass_bad_temporary' => 'Taa aotlinõ salasõna kõlba-i. Sa olõt jo saanuq vahtsõ salasõna vai küsünüq vahtsõ aotlidsõ salasõna.',
'resetpass_forbidden' => 'Salasõnno saa-i muutaq.',
'resetpass-no-info' => 'Taa lehe pääle päsemises piät olõma nimega sisse lännüq.',
'resetpass-submit-loggedin' => 'Muudaq salasõnna',
@@ -577,7 +590,6 @@ Suq puutri võrgoaadrõs om parhilla $3 ja kinniqpidämise tunnusnummõr om #$5.
'blockededitsource' => "Su tett toimõndus lehe '''$1''' pääl:",
'whitelistedittitle' => 'Toimõndamisõs piät nimega sisse minemä',
'whitelistedittext' => 'Lehekülgi toimõndamisõs $1.',
-'confirmedittitle' => 'E-posti kinnütüs',
'confirmedittext' => 'Sa saa-i inne lehekülgi toimõndaq, ku olõt kinnütänüq ärq uma e-postiaadrõsi. Tuud saat tetäq uma [[Special:Preferences|säädmislehe]] pääl.',
'nosuchsectiontitle' => 'Olõ-i säänest lõiku',
'nosuchsectiontext' => 'Sa proovõq toimõndaq lõiku, midä olõ-i olõman, a ku lõiku $1 olõ-i olõman, sis olõ-i su toimõndust kohe pandaq.',
@@ -596,7 +608,8 @@ Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
'userpage-userdoesnotexist' => 'Pruukjanimme "$1" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macintoshil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq ''ctrl-f5''.",
-'usercssjsyoucanpreview' => "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.",
+'usercssyoucanpreview' => "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.",
+'userjsyoucanpreview' => "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.",
'usercsspreview' => "'''Seo um CSS-i proovikaehus. Määntsitki muutuisi olõ-i viil pästet.'''",
'userjspreview' => "'''Unõhtagu-i, et seo kujo su umast javascriptist om viil pästmäldäq!'''",
'userinvalidcssjstitle' => "'''Miildetulõtus:''' Olõ-i stiili nimega \"\$1\". Piäq meelen, et pruukja säedüq .css- and .js-leheq piät nakkama väiku algustähega.",
@@ -633,8 +646,8 @@ Ku klõpsahtat nuppi \"Pästäq\", sis pästetäs '''õnnõ''' ülembädse toim
'protectedpagewarning' => '<center><small>Taa leht om lukun. Taad saavaq toimõndaq õnnõ kõrraldajaõiguisiga pruukjaq.</small></center>',
'semiprotectedpagewarning' => 'Seod lehte saavaq muutaq õnnõ nimega sisse lännüq pruukjaq.',
'cascadeprotectedwarning' => 'Taad lehte võivaq toimõndaq õnnõ kõrraldajaõiguisiga pruukjaq, selle et taa kuulus $1 järgmädse kaidsõdu lehe hulka:',
-'templatesused' => 'Seo lehe pääl pruugiduq näüdüseq:',
-'templatesusedpreview' => 'Proovikaehusõn pruugiduq näüdüseq:',
+'templatesused' => 'Seo lehe pääl om pruugit {{PLURAL:$1|näüdüst|näüdüssit}}:',
+'templatesusedpreview' => 'Proovikaehusõn {{PLURAL:$1|pruugit näüdüs|pruugiduq näüdüseq}}:',
'templatesusedsection' => 'Seon lõigun pruugiduq näüdüseq:',
'template-protected' => '(ärqkaidsõt)',
'template-semiprotected' => '(ärqkaidsõduq nimeldä ja vahtsõq pruukjaq)',
@@ -646,7 +659,7 @@ Võit toimõndaq olõmanolõvit lehti vai [[Special:UserLogin|minnäq nimega sis
'permissionserrors' => 'Õigusõq ei klapiq',
'permissionserrorstext' => 'Sul olõ-i lubat taad tetäq, {{PLURAL:$1|tuuperäst, et|tuuperäst, et}}:',
'permissionserrorstext-withaction' => 'Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:',
-'recreate-deleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
+'recreate-moveddeleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
'edit-conflict' => 'Samaaignõ toimõndus.',
@@ -666,8 +679,9 @@ $3 kirjäpant põhjus: ''$2''",
'viewpagelogs' => 'Kaeq seo lehe muutmisnimekirjä.',
'nohistory' => 'Seo leheküle pääl ei olõq vanõmbit kujjõ.',
'currentrev' => 'Viimäne kujo',
+'currentrev-asof' => 'Viimäne kujo ($1)',
'revisionasof' => 'Kujo $1',
-'revision-info' => 'Kujo aost $1 - tennüq $2', # Additionally available: $3: revision id
+'revision-info' => 'Kujo aost $1 - tennüq $2',
'previousrevision' => '←Vanõmb kujo',
'nextrevision' => 'Vahtsõmb kujo→',
'currentrevisionlink' => 'Viimäne kujo',
@@ -680,7 +694,6 @@ $3 kirjäpant põhjus: ''$2''",
Seletüs: (viim) = lahkominegiq viimätsest kujost,
(minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ",
'history-fieldset-title' => 'Kaeq muutmiisi aoluku',
-'deletedrev' => '[kistutõt]',
'histfirst' => 'Edimädseq',
'histlast' => 'Viimädseq',
'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
@@ -689,7 +702,7 @@ Seletüs: (viim) = lahkominegiq viimätsest kujost,
# Revision feed
'history-feed-title' => 'Muutmislugu',
'history-feed-description' => 'Seo lehe muutmislugu',
-'history-feed-item-nocomment' => '$1 ($2)', # user at time
+'history-feed-item-nocomment' => '$1 ($2)',
'history-feed-empty' => 'Säänest lehte olõ-i. Taa või ollaq ärq kistutõt vai ümbre nimetet. Võit pruumiq [[Special:Search|otsiq]] lehti, miä võivaq ollaq taa lehega köüdedüq.',
# Revision deletion
@@ -697,8 +710,11 @@ Seletüs: (viim) = lahkominegiq viimätsest kujost,
'rev-deleted-user' => '(pruukjanimi ärq kistutõt)',
'rev-deleted-event' => '(kiräkotus ärq kistutõt)',
'rev-deleted-text-permission' => 'Lehe taa kujo om avaligust arhiivist ärq kistutõt.
-Lisateedüst või ollaq [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} kistutamisnimekirän].',
-'rev-deleted-text-view' => "Taa kujo om avaligust pruugist ärq kistutõt, a kõrraldajaq saavaq taad nätäq. As'a kotsilõ või teedüst olla [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} kistutusnimekirän]",
+Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kistutamisnimekirän].',
+'rev-deleted-text-view' => "Taa lehekujo om avaligust pruugist ärq kistutõt, a kõrraldajaq saavaq taad nätäq. As'a kotsilõ või teedüst olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kistutusnimekirän].",
+'rev-suppressed-text-view' => "Taa lehekujo om '''käkit''', a kõrraldajaq saavaq taad nätäq. As'a kotsilõ või teedüst olla [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} käkmisnimekirän].",
+'rev-deleted-no-diff' => 'Seod lahkominekit saa-ai kaiaq, selle et üts lehekujo om ärq kistutõt. Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kistutamisnimekirän].',
+'rev-suppressed-no-diff' => "Lahkominekit saa-ai kaiaq, selle et üts lehekujo om '''ärq kistutõt'''.",
'rev-delundel' => 'näütäq/käkiq',
'revisiondelete' => 'Kistudaq/võtaq tagasi lehe kujjõ',
'revdelete-nooldid-title' => 'Säänest otsitavat kujjo olõ-i',
@@ -708,12 +724,12 @@ Lisateedüst või ollaq [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} k
'revdelete-text' => "'''Kistudõduq kujoq ommaq olõman lehe aoluun, a näide sissu saa-i avaligult nätäq.''' Seo viki tõõsõq kõrraldajaq saavaq taad käkitüt teksti lukõq ja taa tagasi avaligult nättäväs tetäq, ku olõ-i säet muid piirdmiisi.",
'revdelete-legend' => 'Nättävüse piirdmiseq',
'revdelete-hide-text' => 'Käkiq kujo sisu',
+'revdelete-hide-image' => 'Käkiq teedüstü sissu',
'revdelete-hide-name' => 'Käkiq kujo nimi',
'revdelete-hide-comment' => 'Käkiq kokkovõtõq',
'revdelete-hide-user' => 'Käkiq toimõndaja pruukjanimi vai puutri võrgoaadrõs',
'revdelete-hide-restricted' => 'Panõq naaq piirdmiseq pääle ka kõrraldajilõ',
'revdelete-suppress' => 'Panõq teedüs lukku ka kõrraldajilõ',
-'revdelete-hide-image' => 'Käkiq teedüstü sissu',
'revdelete-unsuppress' => 'Võtaq tagasitettüisi kujjõ päält piirdmisõq maaha',
'revdelete-log' => 'Põhjus:',
'revdelete-submit' => 'Võtaq käüki valitulõ kujolõ',
@@ -745,8 +761,6 @@ Lisateedüst või ollaq [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} k
'compareselectedversions' => 'Võrdõlõq valituid kujjõ',
'editundo' => 'võtaq tagasi',
'diff-multi' => '(Kujjõ vaihõl {{PLURAL:$1|üts näütämäldä muutminõ|$1 näütämäldä muutmist}}.)',
-'diff-src' => 'läteq',
-'diff-width' => 'lakjus',
# Search results
'searchresults' => 'Otsmisõ tulõmusõq',
@@ -754,14 +768,13 @@ Lisateedüst või ollaq [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} k
'searchresulttext' => 'Lisateedüst otsmisõ kotsilõ kaeq [[{{MediaWiki:Helppage}}|{{SITENAME}} otsmisoppusõst]].',
'searchsubtitle' => 'Sa otsõt fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik kiräkotussõga "$1" päälenakkajaq leheq]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik leheq, kon om linke artiklilõ "$1"]])',
'searchsubtitleinvalid' => 'Otsminõ "$1"',
-'noexactmatch' => "'''Olõ-i lehte päälkiräga \"\$1\".''' Võit tuu [[:\$1|esiq luvvaq]].",
'titlematches' => "Artiklipäälkir'ost löüt",
'notitlematches' => "Artiklipäälkir'ost es lövväq",
'textmatches' => 'Artiklitekstest löüt',
'notextmatches' => 'Artiklitekstest es lövväq',
-'prevn' => 'minevädseq $1',
-'nextn' => 'järgmädseq $1',
-'viewprevnext' => 'Näütäq ($1 ) ($2) ($3).',
+'prevn' => '← {{PLURAL:$1|mineväne|$1 mineväst}}',
+'nextn' => '{{PLURAL:$1|järgmäne|$1 järgmäst}} →',
+'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Oppus',
'search-result-size' => '$1 ({{PLURAL:$2|1 sõna|$2 sõnna}})',
'search-redirect' => '(ümbresaatminõ $1)',
@@ -778,7 +791,6 @@ Lisateedüst või ollaq [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} k
'searchall' => 'kõik',
'showingresults' => "{{PLURAL:$1|'''Üts''' tulõmus|'''$1''' tulõmust}} (tulõmusõst '''$2''' pääle).",
'showingresultsnum' => "Näüdätäs {{PLURAL:$3|'''1''' tulõmus|'''$3''' tulõmust}} tulõmusõst #'''$2''' pääle.",
-'showingresultstotal' => "Tan {{PLURAL:$4|om tulõmus '''$1'''|ommaq tulõmusõq '''$1–$2'''}}; kokko '''$3'''.",
'nonefound' => "'''Hoiatus''': Otsitas õnnõ üten jaon nimeruumõn.
Ku tahat otsiq kõrraga kõigist nimeruumidest (ka arotuskülgi päält, näüdüssist jne) pruugiq
otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq edejakus tuu nimeruumi nimme.",
@@ -790,67 +802,72 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
'search-external' => 'Väline otsminõ',
'searchdisabled' => "{{SITENAME}} otsminõ parhillaq ei tüütäq. Niikavva, ku otsminõ jälq tüüle saa, võit pruukiq otsmisõs alanolõvat Google'i otsikasti, a näide teedüs {{SITENAME}} sisust pruugi-i ollaq alasi kõgõ värskimb.",
-# Preferences page
-'preferences' => 'Säädmine',
-'mypreferences' => 'Mu säädmiseq',
-'prefs-edits' => 'Tõimõndamiisi arv:',
-'prefsnologin' => 'Sa olõ-i nimega sisse lännüq',
-'prefsnologintext' => 'Et säädmiisi tetäq, tulõ sul [[Special:UserLogin|nimega sisse minnäq]].',
-'prefsreset' => 'Su säädmiseq ommaq puutrimälo perrä tagasi tettüq.',
+# Quickbar
'qbsettings' => 'Kipõriba säädmine',
'qbsettings-none' => 'Olõ-i',
'qbsettings-fixedleft' => 'Kõgõ kural puul',
'qbsettings-fixedright' => 'Kõgõ hüäl puul',
'qbsettings-floatingleft' => 'Ujovahe kural puul',
'qbsettings-floatingright' => 'Ujovahe hüäl puul',
-'changepassword' => 'Muudaq salasõnna',
-'skin' => 'Vällänägemine',
-'skin-preview' => 'Kaeminõ',
-'math' => 'Valõmidõ näütämine',
-'dateformat' => 'Kuupäävä muud',
-'datedefault' => 'Ütskõik',
-'datetime' => 'Kuupäiv ja kelläaig',
-'math_failure' => 'Arvosaamalda süntaks',
-'math_unknown_error' => 'Tundmalda viga',
-'math_unknown_function' => 'Tundmalda tallitus',
-'math_lexing_error' => 'Vällälugõmisviga',
-'math_syntax_error' => 'Süntaksiviga',
-'math_image_error' => 'PNG-muutus lää-s kõrda; kaeq üle, et latex, dvips, gs ja convert ommaq õigõhe paika säedüq',
-'math_bad_tmpdir' => 'Matõmaatigateksti kirotaminõ aotlistõ kausta vai taa kausta luuminõ ei lääq kõrdaq',
-'math_bad_output' => 'Matõmaatigateksti kirotaminõ välläandmiskausta vai sääntse kausta luuminõ ei lääq kõrda',
-'math_notexvc' => 'Olõ-i texvc-tüüriista; loeq tuu paikasäädmise kotsilõ math/README-st.',
-'prefs-personal' => 'Pruukjateedüs',
-'prefs-rc' => 'Perämädseq muutmisõq',
-'prefs-watchlist' => 'Perräkaemisnimekiri',
-'prefs-watchlist-days' => 'Mitmõ päävä muutmiisi näüdädäq perräkaemisnimekirän:',
-'prefs-watchlist-edits' => 'Perräkaemisnimekirän näüdätävide muutuisi hulk:',
-'prefs-misc' => 'Muuq säädmiseq',
-'saveprefs' => 'Pästäq säädmiseq ärq',
-'resetprefs' => 'Võtaq säädmiseq tagasi',
-'textboxsize' => 'Toimõnduskasti suurus',
-'rows' => 'Rito',
-'columns' => 'Tulpõ',
-'searchresultshead' => 'Otsminõ',
-'resultsperpage' => 'Tulõmuisi leheküle kotsilõ',
-'contextlines' => 'Rito tulõmusõn',
-'contextchars' => 'Konteksti pikkus ria pääl',
-'stub-threshold' => '<a href="#" class="stub">Kehväkese lehe</a> näütämispiir (baidõn):',
-'recentchangesdays' => 'Päivi, midä näüdädäq viimätsin muutmiisin',
-'recentchangescount' => 'Päälkirjo hulk viimätsin muutmiisin',
-'savedprefs' => 'Su muutmisõq ommaq pästedüq.',
-'timezonelegend' => 'Aovüü',
-'timezonetext' => 'Paikligu ao ja serveri ao (maailmaao) vaheq (tunniq).',
-'localtime' => 'Paiklik aig',
-'timezoneoffset' => 'Aovaheq',
-'servertime' => 'Serveri aig',
-'guesstimezone' => 'Võtaq aig võrgokaejast',
-'allowemail' => 'Lupaq tõisil pruukjil mullõ e-posti saataq',
-'defaultns' => 'Otsiq vaikimiisi naist nimeruumõst:',
-'default' => 'vaikimiisi',
-'files' => 'Teedüstüq',
+
+# Preferences page
+'preferences' => 'Säädmine',
+'mypreferences' => 'Mu säädmiseq',
+'prefs-edits' => 'Tõimõndamiisi arv:',
+'prefsnologin' => 'Sa olõ-i nimega sisse lännüq',
+'prefsnologintext' => 'Et säädmiisi tetäq, tulõ sul [[Special:UserLogin|nimega sisse minnäq]].',
+'changepassword' => 'Muudaq salasõnna',
+'prefs-skin' => 'Vällänägemine',
+'skin-preview' => 'Kaeminõ',
+'prefs-math' => 'Valõmidõ näütämine',
+'datedefault' => 'Ütskõik',
+'prefs-datetime' => 'Kuupäiv ja kelläaig',
+'prefs-personal' => 'Pruukjateedüs',
+'prefs-rc' => 'Perämädseq muutmisõq',
+'prefs-watchlist' => 'Perräkaemisnimekiri',
+'prefs-watchlist-days' => 'Mitmõ päävä muutmiisi näüdädäq perräkaemisnimekirän:',
+'prefs-watchlist-edits' => 'Perräkaemisnimekirän näüdätävide muutuisi hulk:',
+'prefs-misc' => 'Muuq säädmiseq',
+'saveprefs' => 'Pästäq säädmiseq ärq',
+'resetprefs' => 'Võtaq säädmiseq tagasi',
+'prefs-editing' => 'Toimõnduskasti suurus',
+'rows' => 'Rito',
+'columns' => 'Tulpõ',
+'searchresultshead' => 'Otsminõ',
+'resultsperpage' => 'Tulõmuisi leheküle kotsilõ',
+'contextlines' => 'Rito tulõmusõn',
+'contextchars' => 'Konteksti pikkus ria pääl',
+'stub-threshold' => '<a href="#" class="stub">Kehväkese lehe</a> näütämispiir (baidõn):',
+'recentchangesdays' => 'Päivi, midä näüdädäq viimätsin muutmiisin',
+'recentchangescount' => 'Päälkirjo hulk viimätsin muutmiisin',
+'savedprefs' => 'Su muutmisõq ommaq pästedüq.',
+'timezonelegend' => 'Aovüü',
+'localtime' => 'Paiklik aig',
+'timezoneoffset' => 'Aovaheq',
+'servertime' => 'Serveri aig',
+'guesstimezone' => 'Võtaq aig võrgokaejast',
+'allowemail' => 'Lupaq tõisil pruukjil mullõ e-posti saataq',
+'defaultns' => 'Otsiq vaikimiisi naist nimeruumõst:',
+'default' => 'vaikimiisi',
+'prefs-files' => 'Teedüstüq',
+'youremail' => 'Suq e-posti aadrõs *',
+'username' => 'Pruukjanimi:',
+'uid' => 'Pruukjanummõr:',
+'prefs-memberingroups' => 'Kuulus {{PLURAL:$1|rühmä|rühmihe}}:',
+'yourrealname' => 'Peris nimi *',
+'yourlanguage' => 'Pruukjapalgõ kiil:',
+'yourvariant' => 'Keelevariant:',
+'yournick' => 'Alakirotus',
+'badsig' => 'Seo alakirotus olõ-i masva.',
+'badsiglength' => "Alakirotus om pall'o pikk.
+Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
+'email' => 'e-posti aadrõs',
+'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
+'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
# User rights
-'userrights' => 'Pruukja õiguisi muutminõ', # Not used as normal message but as header for the special page itself
+'userrights' => 'Pruukja õiguisi muutminõ',
'userrights-lookup-user' => 'Pruukjaõiguisi muutminõ',
'userrights-user-editname' => 'Kirodaq pruukjanimi:',
'editusergroup' => 'Muudaq pruukjidõ rühmi',
@@ -911,6 +928,7 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
'right-bigdelete' => 'Pikä aoluuga lehti ärq kistutaq',
'right-deleterevision' => 'Kistutaq ärq ja tagasi tetäq lehti kujjõ',
'right-deletedhistory' => 'Kaiaq kistutõduid aoluukirotuisi ilma tekstilda, mink pääle nä näütäseq',
+'right-deletedtext' => 'Kaiaq kistutõdut teksti ja võrrõldaq kistutõduid kujjõ',
'right-browsearchive' => 'Otsiq kistutõduid lehti',
'right-undelete' => 'Lehti tagasi tetäq',
'right-suppressrevision' => 'Kaiaq ja tagasi tetäq kõrraldajidõ iist käkitüid kujjõ',
@@ -961,6 +979,8 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
# Recent changes linked
'recentchangeslinked' => 'Siiäq putvaq muutmisõq',
+'recentchangeslinked-feed' => 'Siiäq putvaq muutmisõq',
+'recentchangeslinked-toolbox' => 'Siiäq putvaq muutmisõq',
'recentchangeslinked-title' => 'Muutusõq noidõ lehti pääl, kohe näüdätäs lähe päält "$1"',
'recentchangeslinked-noresult' => 'Taaha putvit lehti olõ-i taa ao seen muudõt.',
'recentchangeslinked-summary' => "Taan nimekirän ommaq noidõ lehti muutmisõq, mink pääle näütäs seo lehe päält linke. Naad leheq ommaq [[Special:Watchlist|perräkaemisnimekirän]] märgidüq '''paksu kiräga'''.",
@@ -970,7 +990,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
# Upload
'upload' => 'Teedüstü üleslaatminõ',
'uploadbtn' => 'Üleslaatminõ',
-'reupload' => 'Vahtsõst üleslaatminõ',
'reuploaddesc' => 'Tagasi üleslaatmisõ vormi mano.',
'uploadnologin' => 'Sa olõ-i nimega sisse lännüq',
'uploadnologintext' => 'Kui tahat teedüstüid üles laatiq, piät [[Special:UserLogin|nimega sisse minemä]].',
@@ -1012,7 +1031,6 @@ Katso '''<tt>[[:$1]]</tt>''', ku sa olõ-i kimmäs, et tahat taad muutaq.
* Üleslaaditava teedüstü nimi: '''<tt>[[:$1]]</tt>'''
* Olõmanolõva teedüstü nimi: '''<tt>[[:$2]]</tt>'''
Ainugõnõ vaih om laendusõ suurõ/väiku algustähe man. Kaeq perrä, kas naaq ommaq üts ja tuusama teedüstü.",
-'fileexists-thumb' => "<center>'''Olõmanollõv pilt'''</center>",
'fileexists-thumbnail-yes' => "Taa paistus ollõv vähändet pilt ''(thumbnail)''. [[$1|thumb]]
Kaeq teedüstü '''<tt>[[:$1]]</tt>'''üle.
Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia eräle vähändedüt pilti üles laatiq.",
@@ -1027,7 +1045,6 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
'uploaddisabled' => 'Üleslaatminõ lää-s kõrda',
'uploaddisabledtext' => '{{SITENAME}} lupa-i parhilla teedüstüid üles laatiq.',
'uploadscripted' => 'Seol teedüstül om HTML-kuud vai skripte, minkast võrgokaeja või võlssi arvo saiaq.',
-'uploadcorrupt' => 'Teedüstü om viganõ vai om täl võlss laendus. Olõq hää, kaeq tä üle ja laadiq vahtsõst üles.',
'uploadvirus' => 'Teedüstül om viirus man! Kaeq: $1',
'sourcefilename' => 'Teedüstü nimi:',
'destfilename' => 'Teedüstü nimi vikin:',
@@ -1051,6 +1068,7 @@ Kas olõt kimmäs, et tahat taad üles laatiq? Kaeq ka sissekirotust taa teedüs
'upload-curl-error28-text' => 'Taa aadrõsi päält saa-s ao pääle vastust. Oodaq vähä ja prooviq vahtsõst.',
'license' => 'Litsents:',
+'license-header' => 'Litsents:',
'nolicense' => 'Olõ-i litsentsi valit',
'license-nopreview' => '(Saa-i kaiaq)',
'upload_source_url' => ' (avalik tüütäv võrgoaadrõs)',
@@ -1067,6 +1085,7 @@ Kas olõt kimmäs, et tahat taad üles laatiq? Kaeq ka sissekirotust taa teedüs
'listfiles_description' => 'Seletüs',
# File description page
+'file-anchor-link' => 'Pilt',
'filehist' => 'Teedüstü aolugu',
'filehist-help' => "Klõpsaq kuupäävä/kelläao pääl, et nätäq määne taa teedüstü sis oll'.",
'filehist-deleteall' => 'kistudaq kõik ärq',
@@ -1075,6 +1094,7 @@ Kas olõt kimmäs, et tahat taad üles laatiq? Kaeq ka sissekirotust taa teedüs
'filehist-current' => 'parhillanõ',
'filehist-datetime' => 'Kuupäiv/Kelläaig',
'filehist-thumb' => 'Väiku pilt',
+'filehist-thumbtext' => 'Väiku pilt $1 kujolõ',
'filehist-user' => 'Pruukja',
'filehist-dimensions' => 'Suurus',
'filehist-filesize' => 'Teedüstü suurus',
@@ -1082,11 +1102,7 @@ Kas olõt kimmäs, et tahat taad üles laatiq? Kaeq ka sissekirotust taa teedüs
'imagelinks' => 'Teedüstülingiq',
'linkstoimage' => 'Taa pildi pääle {{PLURAL:$1|näütäs lehekülg|näütäseq leheküleq}}:',
'nolinkstoimage' => 'Taa pildi pääle näütä-i ütski lehekülg.',
-'sharedupload' => 'Seo teedüstü om peri lättest $1 ni taad võivaq pruukiq ka tõõsõq vikiq.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Taa kotsilõ saa lähkümbält kaiaq $1.',
-'shareduploadwiki-linktext' => 'seletüsleheküle päält',
-'noimage' => 'Olõ-i säänest teedüstüt, võit taa esiq $1.',
-'noimage-linktext' => 'üles laatiq',
+'sharedupload' => 'Seo teedüstü om peri lättest $1 ni taad võivaq pruukiq ka tõõsõq vikiq.',
'uploadnewversion-linktext' => 'Laadiq taa teedüstü vahtsõnõ kujo',
# File reversion
@@ -1158,8 +1174,8 @@ Lehte peetäs täpsüstüslehes, ku timän om pruugit näüdüst, kohe näütäs
'brokenredirects' => 'Vigadsõq ümbresaatmisõq',
'brokenredirectstext' => 'Naaq ümbresaatmisõq näütäseq lehti pääle, midä olõ-i olõman:',
-'brokenredirects-edit' => '(toimõndaq)',
-'brokenredirects-delete' => '(kistudaq ärq)',
+'brokenredirects-edit' => 'toimõndaq',
+'brokenredirects-delete' => 'kistudaq ärq',
'withoutinterwiki' => 'Keelelingeldä leheq',
'withoutinterwiki-summary' => 'Nail lehil olõ-i linke tõisi kiili lehti pääle:',
@@ -1383,8 +1399,8 @@ Kelläaoq ummaq serveriao perrä.',
'rollbackfailed' => 'Muutmiisi tagasivõtminõ lää-s kõrda',
'cantrollback' => 'Saa-i muutmiisi tagasi pöördäq; viimäne muutja om lehe ainugõnõ toimõndaja.',
'alreadyrolled' => 'Pruukja [[User:$2|$2]] ([[User talk:$2|arotus]]) tettüid lehe [[:$1]] muutmiisi saa-i tagasi võttaq, selle et pruukja [[User:$3|$3]] ([[User talk:$3|arotus]]) om tennüq vahtsõmbit muutmiisi.',
-'editcomment' => "Toimõndamiskokkovõtõq oll': \"''\$1''\".", # only shown if there is an edit comment
-'revertpage' => 'Pruukja [[Special:Contributions/$2|$2]] ([[User_talk:$2|arotus]]) toimõndusõq pöörediq tagasi ja leht panti tagasi pruukja [[User:$1|$1]] tettü kujo pääle.', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Toimõndamiskokkovõtõq oll': \"''\$1''\".",
+'revertpage' => 'Pruukja [[Special:Contributions/$2|$2]] ([[User_talk:$2|arotus]]) toimõndusõq pöörediq tagasi ja leht panti tagasi pruukja [[User:$1|$1]] tettü kujo pääle.',
'sessionfailure' => 'Paistus ollõv määnegi hädä su toimõndamiskõrraga, tuuperäst om viimäne muutminõ egäs johtumisõs jätet tegemäldä. Vaodaq võrgokaeja "tagasi"-nuppi, laadiq üle lehekülg, kost sa tullit ja prooviq vahtsõst.',
# Protect
@@ -1399,7 +1415,6 @@ Kelläaoq ummaq serveriao perrä.',
'protectexpiry' => 'Tähtaig',
'protect_expiry_invalid' => 'Kõlbmaldaq tähtaig.',
'protect_expiry_old' => 'Tähtaig om joba läbi.',
-'protect-unchain' => 'Pruugiq tõistõ paika pandmisõ kaidsõt',
'protect-text' => "Tan saat kaiaq ja säädäq lehe '''<nowiki>$1</nowiki>''' kaitsmist.",
'protect-locked-blocked' => "Kinniqpeetült saa-i kaitsmiisi muutaq. Tan ommaq lehe '''$1''' parhilladsõq säädmiseq:",
'protect-locked-dblock' => "Kaitsmiisi saa-i muuta, selle et teedüskogo om lukun. Tan ommaq lehe '''$1''' parhilladsõq säädmiseq:",
@@ -1414,7 +1429,7 @@ Tan ommaq lehe '''$1''' parhilladsõq säädmiseq:",
'protect-expiring' => 'tähtaig $1',
'protect-cascade' => 'Laendaq kaitsmist - võtaq kaitsõ ala kõik seo lehe pääl olõvaq leheq.',
'protect-cantedit' => 'Sa tohe-i muutaq seo lehe kaitsmistasõt, selle et sul olõ-i õigust seod lehte muutaq.',
-'protect-expiry-options' => '1 hour:1 hour,1 päiv:1 day,1 nätäl:1 week,2 nädälit:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aastak:1 year,igävene:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 hour:1 hour,1 päiv:1 day,1 nätäl:1 week,2 nädälit:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aastak:1 year,igävene:infinite',
'restriction-type' => 'Luba',
'restriction-level' => 'Piirdmisastõq',
'minimum-size' => 'Kõgõ vähämb maht',
@@ -1471,7 +1486,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'contributions-title' => 'Pruukja $1 toimõndusõq',
'mycontris' => 'Mu kirotusõq',
'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
-'nocontribs' => 'Sääntsit muutmiisi es lövväq.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
'uctop' => '(kõgõ vahtsõmb)',
'month' => 'Alostõn kuust (ja varrampa):',
'year' => 'Alostõn aastagast (ja varrampa):',
@@ -1479,6 +1494,8 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'sp-contributions-newbies' => 'Näütäq õnnõ vahtsidõ pruukjidõ toimõnduisi',
'sp-contributions-newbies-sub' => 'Vahtsidõ pruukjidõ toimõndusõq',
'sp-contributions-blocklog' => 'Kinniqpidämisnimekiri',
+'sp-contributions-talk' => 'Arotus',
+'sp-contributions-userrights' => 'Pruukja õiguisi muutminõ',
'sp-contributions-search' => 'Otsiq muutmiisi',
'sp-contributions-username' => 'Puutri võrgoaadrõs vai pruukjanimi:',
'sp-contributions-submit' => 'Otsiq',
@@ -1523,7 +1540,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'ipbenableautoblock' => 'Piäq kinniq viimäne puutri võrgoaadrõs, kost pruukja om toimõnduisi tennüq, ja edespiten aadrõsiq, kost tä viil pruuv toimõnduisi tetäq.',
'ipbsubmit' => 'Piäq taa aadrõs kinniq',
'ipbother' => 'Muu tähtaig',
-'ipboptions' => '2 tunni:2 hours,1 päiv:1 day,3 päivä:3 days,1 nätäl:1 week,2 nädälälit:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aastak:1 year,igävene:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 tunni:2 hours,1 päiv:1 day,3 päivä:3 days,1 nätäl:1 week,2 nädälälit:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aastak:1 year,igävene:infinite',
'ipbotheroption' => 'Muu tähtaig',
'ipbotherreason' => 'Muu põhjus',
'ipbhidename' => 'Käkiq pruukjanimi vai puutri võrgoaadrõs ärq kinniqpidämis-, toimõndus-, ja pruukjanimekiräst',
@@ -1547,7 +1564,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'ipblocklist-submit' => 'Otsiq',
'blocklistline' => '$1 — $2 om kinniq pidänüq pruukja $3 ($4)',
'infiniteblock' => 'igäveste',
-'expiringblock' => 'tähtaig om $1',
+'expiringblock' => 'tähtaig om $1 $2',
'anononlyblock' => 'õnnõ nimeldä pruukjaq',
'noautoblockblock' => 'automaatsõ kinniqpidämiseldä',
'createaccountblock' => 'pruukjanime luuminõ kinniq pant',
@@ -1625,7 +1642,7 @@ Kui om nii, sis panõq vana arotuskülg eräle vai panõq taa kokko vahtsõ arot
'move-watch' => 'Kaeq taa lehe perrä',
'movepagebtn' => 'Panõq artikli tõistõ paika',
'pagemovedsub' => 'Artikli om tõistõ paika pant',
-'movepage-moved' => "'''$1 om pant nime ala $2'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''$1 om pant nime ala $2'''",
'articleexists' => 'Sääntse nimega artikli om jo olõman vai olõ-i lubat säänest nimme valliq. Valiq vahtsõnõ nimi.',
'talkexists' => 'Artikli om tõistõ paika pant, a arotuslehekülge saa-s pandaq, selle et vahtsõ nime all om jo arotuskülg. Panõq arotusküleq esiq kokko.',
'movedto' => 'Pant päälkirä ala:',
@@ -1666,8 +1683,6 @@ Viimädse johtumisõ kõrral võit ka pruukiq linki, nt leht {{MediaWiki:Mainpag
'allmessagestext' => 'Taan nimekirän ommaq kõik MediaWiki nimeruumi tallitusteedüseq.
Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Taad lehte saa-i pruukiq, selle et '''\$wgUseDatabaseMessages'''-säädmine om välän.",
-'allmessagesfilter' => 'Teedüsenimmi sõgluminõ:',
-'allmessagesmodified' => 'Näütäq õnnõ muudõtuid',
# Thumbnails
'thumbnail-more' => 'Suurõndaq',
@@ -1738,6 +1753,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-search-fulltext' => 'Otsiq lehti päält seod teksti',
'tooltip-p-logo' => 'Pääleht',
'tooltip-n-mainpage' => 'Mineq päälehele',
+'tooltip-n-mainpage-description' => 'Mineq päälehele',
'tooltip-n-portal' => 'Taa viki arotusõkotus',
'tooltip-n-currentevents' => 'Tiidmist tuu kotsilõ, miä parhilla sünnüs',
'tooltip-n-recentchanges' => 'Perämäidsi muutmiisi nimekiri',
@@ -1791,7 +1807,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
# Attribution
'anonymous' => '{{SITENAME}} {{PLURAL:$1|nimeldä pruukja|nimeldä pruukjaq}}',
'siteuser' => '{{SITENAME}} pruukja $1',
-'lastmodifiedatby' => "Taad lehte toimõnd' viimäte ”$3” $2 kell $1.", # $1 date, $2 time, $3 user
+'lastmodifiedatby' => "Taad lehte toimõnd' viimäte ”$3” $2 kell $1.",
'othercontribs' => 'Tennüq pruukja $1.',
'others' => 'tõõsõq',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|pruukja|pruukjaq}} $1',
@@ -1826,6 +1842,17 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'mw_math_source' => 'Alalõ hoitaq TeX (tekstikaejin)',
'mw_math_modern' => 'Vahtsõmbilõ võrgokaejilõ soovitõt',
+# Math errors
+'math_failure' => 'Arvosaamalda süntaks',
+'math_unknown_error' => 'Tundmalda viga',
+'math_unknown_function' => 'Tundmalda tallitus',
+'math_lexing_error' => 'Vällälugõmisviga',
+'math_syntax_error' => 'Süntaksiviga',
+'math_image_error' => 'PNG-muutus lää-s kõrda; kaeq üle, et latex, dvips, gs ja convert ommaq õigõhe paika säedüq',
+'math_bad_tmpdir' => 'Matõmaatigateksti kirotaminõ aotlistõ kausta vai taa kausta luuminõ ei lääq kõrdaq',
+'math_bad_output' => 'Matõmaatigateksti kirotaminõ välläandmiskausta vai sääntse kausta luuminõ ei lääq kõrda',
+'math_notexvc' => 'Olõ-i texvc-tüüriista; loeq tuu paikasäädmise kotsilõ math/README-st.',
+
# Patrolling
'markaspatrolleddiff' => 'Märgiq ülekaetus',
'markaspatrolledtext' => 'Märgiq toimõndus ülekaetus',
@@ -1887,7 +1914,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Lakjus',
@@ -2014,14 +2041,14 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-unknowndate' => 'Tundmalda kuupäiv',
-'exif-orientation-1' => 'Harilik', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Pikäle käänet', # 0th row: top; 0th column: right
-'exif-orientation-3' => '180° käänet', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => 'Pistü käänet', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => 'Käänet 90° vastapäivä ja pistü', # 0th row: left; 0th column: top
-'exif-orientation-6' => 'Käänet 90° peripäivä', # 0th row: right; 0th column: top
-'exif-orientation-7' => 'Käänet 90° peripäivä ja pistü', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => 'Käänet 90° vastapäivä', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => 'Harilik',
+'exif-orientation-2' => 'Pikäle käänet',
+'exif-orientation-3' => '180° käänet',
+'exif-orientation-4' => 'Pistü käänet',
+'exif-orientation-5' => 'Käänet 90° vastapäivä ja pistü',
+'exif-orientation-6' => 'Käänet 90° peripäivä',
+'exif-orientation-7' => 'Käänet 90° peripäivä ja pistü',
+'exif-orientation-8' => 'Käänet 90° vastapäivä',
'exif-planarconfiguration-1' => "''chunky''-formaat",
'exif-planarconfiguration-2' => "''planar''-formaat",
@@ -2131,7 +2158,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-gpsmeasuremode-2' => 'Katõmõõtmõlinõ mõõtminõ',
'exif-gpsmeasuremode-3' => 'Kolmõmõõtmõlinõ mõõtminõ',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'kilomiitrit tunnin',
'exif-gpsspeed-m' => 'miili tunnin',
'exif-gpsspeed-n' => 'sõlmõ',
@@ -2243,8 +2270,8 @@ Prooviq harilikku kaehust.',
'watchlisttools-raw' => 'Toimõndaq lätteteedüstüt',
# Special:Version
-'version' => 'Kujo', # Not used as normal message but as header for the special page itself
-'version-version' => 'Kujo',
+'version' => 'Kujo',
+'version-version' => '(Kujo $1)',
'version-software-version' => 'Kujo',
# Special:FilePath
diff --git a/languages/messages/MessagesWa.php b/languages/messages/MessagesWa.php
index 2bfe424b..e5e58141 100644
--- a/languages/messages/MessagesWa.php
+++ b/languages/messages/MessagesWa.php
@@ -37,24 +37,22 @@ $dateFormats = array(
);
$namespaceNames = array(
- NS_MEDIA => "Media", /* Media */
- NS_SPECIAL => "Sipeciås", /* Special */
- NS_MAIN => "",
- NS_TALK => "Copene", /* Talk */
- NS_USER => "Uzeu", /* User */
- NS_USER_TALK => "Uzeu_copene", /* User_talk */
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_copene',
- NS_FILE => "Imådje", /* Image */
- NS_FILE_TALK => "Imådje_copene", /* Image_talk */
- NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */
- NS_MEDIAWIKI_TALK => "MediaWiki_copene", /* MediaWiki_talk */
- NS_TEMPLATE => "Modele",
- NS_TEMPLATE_TALK => "Modele_copene",
- NS_HELP => "Aidance",
- NS_HELP_TALK => "Aidance_copene",
- NS_CATEGORY => "Categoreye",
- NS_CATEGORY_TALK => "Categoreye_copene",
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Sipeciås',
+ NS_TALK => 'Copene',
+ NS_USER => 'Uzeu',
+ NS_USER_TALK => 'Uzeu_copene',
+ NS_PROJECT_TALK => '$1_copene',
+ NS_FILE => 'Imådje',
+ NS_FILE_TALK => 'Imådje_copene',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_copene',
+ NS_TEMPLATE => 'Modele',
+ NS_TEMPLATE_TALK => 'Modele_copene',
+ NS_HELP => 'Aidance',
+ NS_HELP_TALK => 'Aidance_copene',
+ NS_CATEGORY => 'Categoreye',
+ NS_CATEGORY_TALK => 'Categoreye_copene',
);
# definixha del cogne po les limeros
@@ -181,10 +179,18 @@ $messages = array(
'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
-'about' => 'Åd fwait',
-'article' => 'Årtike',
-'newwindow' => '(drovant en on novea purnea)',
-'cancel' => 'Rinoncî',
+'about' => 'Åd fwait',
+'article' => 'Årtike',
+'newwindow' => '(drovant en on novea purnea)',
+'cancel' => 'Rinoncî',
+'moredotdotdot' => 'Co dpus...',
+'mypage' => 'Mi pådje',
+'mytalk' => 'Mi copinaedje',
+'anontalk' => 'Pådje di copene po ciste adresse IP',
+'navigation' => 'Naiviaedje',
+'and' => '&#32;eyet',
+
+# Cologne Blue skin
'qbfind' => 'Trover',
'qbbrowse' => 'Foyter',
'qbedit' => 'Candjî',
@@ -192,15 +198,6 @@ $messages = array(
'qbpageinfo' => 'Contecse',
'qbmyoptions' => 'Mes pådjes',
'qbspecialpages' => 'Pådjes sipeciåles',
-'moredotdotdot' => 'Co dpus...',
-'mypage' => 'Mi pådje',
-'mytalk' => 'Mi copinaedje',
-'anontalk' => 'Pådje di copene po ciste adresse IP',
-'navigation' => 'Naiviaedje',
-'and' => '&#32;eyet',
-
-# Metadata in edit box
-'metadata_help' => 'Meta-dnêyes :',
'errorpagetitle' => 'Aroke',
'returnto' => 'Rivni al pådje «$1».',
@@ -246,7 +243,7 @@ $messages = array(
'otherlanguages' => 'Ôtes lingaedjes',
'redirectedfrom' => '(Redjiblé di $1)',
'redirectpagesub' => 'Pådje di redjiblaedje',
-'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.',
'viewcount' => 'Cisse pådje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.',
'protectedpage' => 'Pådje protedjeye',
'jumpto' => 'Potchî a:',
@@ -257,7 +254,6 @@ $messages = array(
'aboutsite' => 'Åd fwait di {{SITENAME}}',
'aboutpage' => 'Project:Åd fwait',
'copyright' => "Li contnou est dizo l' $1.",
-'copyrightpagename' => 'Abondroets {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Abondroets',
'currentevents' => 'Actouwålités',
'currentevents-url' => 'Project:Actouwålités',
@@ -325,10 +321,6 @@ Li dierin cweraedje del båze di dnêyes di sayî esteut:
«$1»
a pårti del fonccion «$2».
MySQL a rtourné l' aroke «$3: $4».",
-'noconnect' => "Mande escuzes! Li wiki a des rujhes tecnikes pol moumint, eyet c' est nén possibe di s' raloyî al båze di dnêyes. <br />
-$1",
-'nodb' => "Dji n' sai tchoezi l' båze di dnêyes $1",
-'cachederror' => "Çou ki shût c' est ene copeye e muchete del pådje k' a stî dmandêye, et ça s' pout ki ça n' soeye nén a djoû.",
'laggedslavemode' => "Asteme: I s' pout ki l' pådje n' åye nén co les dierins candjmints.",
'internalerror' => 'Divintrinne aroke',
'filecopyerror' => "Dji n' a savou copyî l' fitchî «$1» viè «$2».",
@@ -353,7 +345,6 @@ Cweraedje: $2',
'editinginterface' => "'''Asteme:''' Vos candjîz ene pådje k' est eployeye po dner on tecse d' eterface pol programe. Les candjmints a cisse pådje ci vont-st aveur èn efet so l' eterface d' uzeu des ôtes uzeus.",
# Login and logout pages
-'logouttitle' => 'Dislodjaedje',
'logouttext' => "'''Vos vs avoz dislodjî.'''
Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén vos relodjî dizo l' minme uzeu ou dizo èn uzeu diferin.
@@ -362,7 +353,6 @@ Notez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz
Vosse conte a stî ahivé.
Èn rovyîz nén di candjî les preferinces di {{SITENAME}} a vosse môde.',
-'loginpagetitle' => 'Elodjaedje',
'yourname' => "Vosse no d' elodjaedje",
'yourpassword' => 'Vosse sicret',
'yourpasswordagain' => 'Ritapez vosse sicret',
@@ -383,18 +373,7 @@ Vosse conte a stî ahivé.
'createaccountmail' => 'pa emile',
'badretype' => 'Vos avoz dné deus screts diferins.',
'userexists' => "Li no d' uzeu ki vs avoz tchoezi est ddja eployî. Tchoezixhoz è èn ôte s' i vs plait.",
-'youremail' => 'Vost emile*',
-'username' => "No d' elodjaedje:",
-'uid' => "Limero d' l' uzeu:",
-'yourrealname' => 'Li vraiy no da vosse*',
-'yourlanguage' => "Lingaedje po l' eterface",
-'yourvariant' => 'Variante do lingaedje',
-'yournick' => 'Vosse no metou (po les sinateures)',
-'badsig' => 'Sinateure brute nén valide; verifyîz les etiketes HTML.',
-'email' => 'Emile',
-'prefs-help-realname' => '* Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
'loginerror' => "Aroke d' elodjaedje",
-'prefs-help-email' => "* Emile (opcionel): Permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
'nocookiesnew' => "Li conte a stî ahivé, mins vos n' estoz nén elodjî. {{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs avou vosse novea no d' elodjaedje eyet scret, s' i vs plait.",
'nocookieslogin' => "{{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs s' i vs plait.",
'noname' => "Vos n' avoz nén dné di no d' uzeu valide.",
@@ -460,100 +439,100 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
'hr_tip' => "Roye di coûtchî (a n' nén eployî d' trop)",
# Edit pages
-'summary' => 'Rascourti:',
-'subject' => 'Sudjet/tiestire:',
-'minoredit' => "Ci n' est k' ene tchitcheye",
-'watchthis' => 'Shuve cist årtike',
-'savearticle' => "Schaper l' pådje",
-'preview' => 'Vey divant',
-'showpreview' => 'Vey divant',
-'showlivepreview' => 'Vey divant',
-'showdiff' => 'Vey les candjmints',
-'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî. Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
-'missingsummary' => "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pådje.",
-'missingcommenttext' => "Tapez on comintaire chal pa dzo s' i vs plait.",
-'blockedtitle' => "L' uzeu est bloké",
-'blockedtext' => "Vosse no d' uzeu ou voste adresse IP a stî blokêye pa $1.
+'summary' => 'Rascourti:',
+'subject' => 'Sudjet/tiestire:',
+'minoredit' => "Ci n' est k' ene tchitcheye",
+'watchthis' => 'Shuve cist årtike',
+'savearticle' => "Schaper l' pådje",
+'preview' => 'Vey divant',
+'showpreview' => 'Vey divant',
+'showlivepreview' => 'Vey divant',
+'showdiff' => 'Vey les candjmints',
+'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî. Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+'missingsummary' => "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pådje.",
+'missingcommenttext' => "Tapez on comintaire chal pa dzo s' i vs plait.",
+'blockedtitle' => "L' uzeu est bloké",
+'blockedtext' => "Vosse no d' uzeu ou voste adresse IP a stî blokêye pa $1.
Li råjhon dnêye est:<br />''$2''<p>Vos ploz contacter $1 oudonbén onk des
[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.
Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]].
Voste adresse IP est $3. S' i vs plait racsegnoz ciste adresse IP la dins les dmandes ki vos frîz.",
-'blockedoriginalsource' => "Li sourdant di '''$1''' est håyné chal pa dzo:",
-'blockededitsource' => "Li tecse des '''candjmints da vosse''' di '''$1''' est håyné chal pa dzo:",
-'whitelistedittitle' => "S' elodjî po candjî",
-'whitelistedittext' => 'I vs fåt $1 po pleur candjî les årtikes.',
-'confirmedittitle' => 'Acertiner vost emile po candjî',
-'confirmedittext' => "I vs fåt acertiner vost emile po pleur candjî les årtikes. Dinez èn emile eyet l' acertiner dins vos [[Special:Preferences|preferinces d' uzeu]].",
-'loginreqtitle' => 'I vs fåt esse elodjî',
-'loginreqlink' => 'elodjî',
-'loginreqpagetext' => 'Vos vs divoz $1 po vey des ôtès pådjes.',
-'accmailtitle' => 'Li scret a stî evoyî.',
-'accmailtext' => 'Li scret po «$1» a stî evoyî a $2.',
-'newarticle' => '(Novea)',
-'newarticletext' => "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.
+'blockedoriginalsource' => "Li sourdant di '''$1''' est håyné chal pa dzo:",
+'blockededitsource' => "Li tecse des '''candjmints da vosse''' di '''$1''' est håyné chal pa dzo:",
+'whitelistedittitle' => "S' elodjî po candjî",
+'whitelistedittext' => 'I vs fåt $1 po pleur candjî les årtikes.',
+'confirmedittext' => "I vs fåt acertiner vost emile po pleur candjî les årtikes. Dinez èn emile eyet l' acertiner dins vos [[Special:Preferences|preferinces d' uzeu]].",
+'loginreqtitle' => 'I vs fåt esse elodjî',
+'loginreqlink' => 'elodjî',
+'loginreqpagetext' => 'Vos vs divoz $1 po vey des ôtès pådjes.',
+'accmailtitle' => 'Li scret a stî evoyî.',
+'accmailtext' => 'Li scret po «$1» a stî evoyî a $2.',
+'newarticle' => '(Novea)',
+'newarticletext' => "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.
Mins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse chal pa dzo (alez vey li [[{{MediaWiki:Helppage}}|pådje d' aidance]] po pus d' infôrmåcion).
Si vos n' voloz nén scrire cisse pådje chal, clitchîz simplumint sol boton '''En erî''' di vosse betchteu waibe po rivni al pådje di dvant.",
-'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén. Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî. Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmåkes et des messaedjes ki n' sont nén por vos. Loukîz s' i vs plait po [[Special:UserLogin|fé on novea conte ou s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
-'noarticletext' => "I gn a pol moumint nou tecse e cisse pådje chal, vos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes, oudonbén [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje].",
-'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe: '''Mozilla / Firefox / Safari:''' tchôkîz so ''Shift'' to clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-Shift-R'' (''Cmd-Shift-R'' so on Macintosh); '''IE:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''; '''Konqueror:''' simplumint clitchîz so ''Rafrister'' ou l' tape ''F5''; les uzeus d' '''Opera''' dvront motoit netyî pår leu muchete, dins ''Usteyes→Preferinces''.",
-'usercssjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea CSS/JS divant del schaper.",
-'usercsspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu, i n' a nén co stî schapé!'''",
-'userjspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje/saye di vosse JavaScript d' uzeu, i n' a nén co stî schapé!'''",
-'userinvalidcssjstitle' => "'''Asteme:''' I n' a pont d' pea lomêye «$1». Tuzez ki les pådjes .css eyet .js des uzeus eployèt des tite e ptitès letes, metans {{ns:user}}:Toto/monobook.css et nén {{ns:user}}:Toto/Monobook.css.",
-'updated' => '(Ramidré)',
-'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje, li pådje n' est nén co schapêye!'''",
-'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez di clitchî so «schaper».',
-'session_fail_preview' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.
+'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén. Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî. Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmåkes et des messaedjes ki n' sont nén por vos. Loukîz s' i vs plait po [[Special:UserLogin|fé on novea conte ou s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
+'noarticletext' => "I gn a pol moumint nou tecse e cisse pådje chal, vos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes, oudonbén [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje].",
+'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe: '''Mozilla / Firefox / Safari:''' tchôkîz so ''Shift'' to clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-Shift-R'' (''Cmd-Shift-R'' so on Macintosh); '''IE:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''; '''Konqueror:''' simplumint clitchîz so ''Rafrister'' ou l' tape ''F5''; les uzeus d' '''Opera''' dvront motoit netyî pår leu muchete, dins ''Usteyes→Preferinces''.",
+'usercssyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea CSS divant del schaper.",
+'userjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea JS divant del schaper.",
+'usercsspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu, i n' a nén co stî schapé!'''",
+'userjspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje/saye di vosse JavaScript d' uzeu, i n' a nén co stî schapé!'''",
+'userinvalidcssjstitle' => "'''Asteme:''' I n' a pont d' pea lomêye «$1». Tuzez ki les pådjes .css eyet .js des uzeus eployèt des tite e ptitès letes, metans {{ns:user}}:Toto/monobook.css et nén {{ns:user}}:Toto/Monobook.css.",
+'updated' => '(Ramidré)',
+'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje, li pådje n' est nén co schapêye!'''",
+'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez di clitchî so «schaper».',
+'session_fail_preview' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.
Rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
-'session_fail_preview_html' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.'''
+'session_fail_preview_html' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.'''
''Come ci wiki chal a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''
'''Si c' est ene saye oniesse di candjî l' pådje, rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
-'editing' => 'Candjant $1',
-'editingsection' => 'Candjant $1 (seccion)',
-'editingcomment' => 'Candjant $1 (comintaire)',
-'editconflict' => 'Ecramiaedje inte deus candjmints: $1',
-'explainconflict' => "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.
+'editing' => 'Candjant $1',
+'editingsection' => 'Candjant $1 (seccion)',
+'editingcomment' => 'Candjant $1 (comintaire)',
+'editconflict' => 'Ecramiaedje inte deus candjmints: $1',
+'explainconflict' => "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.
Li boesse di tecse do dzeur mostere li tecse del pådje come il est
pol moumint sol sierveu. Li tecse da vosse est sol boesse di tecse do dzo.
Les diferinces sont håynêyes å mitan. Vos dvoz mete vos candjmints dins
l' tecse d' asteure (å dzeur) si vos lez vloz co evoyî.
<b>Seulmint</b> li tecse do dzeur serè candjî cwand vos clitchroz sol
boton «Schaper l' pådje».<br />",
-'yourtext' => 'Li tecse da vosse',
-'storedversion' => 'Modêye sol sierveu',
-'nonunicodebrowser' => "'''ASTEME: li betchteu waibe da vosse ni sopoite nén l' ecôdaedje unicôde, cåze di çoula les caracteres nén-ASCII vont aparexhe dins l' boesse di tecse come des côdes hecsadecimås, insi vos pôroz tot l' minme candjî l' pådje.'''",
-'editingold' => "'''ASTEME: Vos estoz ki candje ene viye modêye del pådje.
+'yourtext' => 'Li tecse da vosse',
+'storedversion' => 'Modêye sol sierveu',
+'nonunicodebrowser' => "'''ASTEME: li betchteu waibe da vosse ni sopoite nén l' ecôdaedje unicôde, cåze di çoula les caracteres nén-ASCII vont aparexhe dins l' boesse di tecse come des côdes hecsadecimås, insi vos pôroz tot l' minme candjî l' pådje.'''",
+'editingold' => "'''ASTEME: Vos estoz ki candje ene viye modêye del pådje.
Si vos l' schapez, tos les candjmints k' ont stî fwaits
dispoy adon si vont piede.'''",
-'yourdiff' => 'Diferinces',
-'copyrightwarning' => "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} dvèt esse dizo l' licince $2 (loukîz $1 po pus di racsegnes).
+'yourdiff' => 'Diferinces',
+'copyrightwarning' => "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} dvèt esse dizo l' licince $2 (loukîz $1 po pus di racsegnes).
Si vos n' voloz nén ki vosse tecse poye esse candjî eyet spårdou pa tot l' minme kî, adon nel evoyîz nén chal.<br />
Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (dominne publik ou on sourdant pareymint libe).
'''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
-'copyrightwarning2' => "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} polèt esse esse candjîs ou disfacés pa des ôtes contribouweus.
+'copyrightwarning2' => "Notez ki tos les contribouwaedjes fwaits po {{SITENAME}} polèt esse esse candjîs ou disfacés pa des ôtes contribouweus.
Si vos n' voloz nén scrire des årtikes ki polèt esse candjîs pa des ôtes, adon nels evoyîz nén chal.<br />
Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (voeyoz $1 po pus di racsegnes).
'''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
-'longpagewarning' => "'''ASTEME: Cisse pådje fwait $1 kilo-octets; des
+'longpagewarning' => "'''ASTEME: Cisse pådje fwait $1 kilo-octets; des
betchteus waibes k' i gn a polèt aveut des rujhes po-z aspougnî
des pådjes k' aprepièt ou di pus di 32 ko.
Vos dvrîz tuzer a pårti l' pådje e pus ptits bokets.'''",
-'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octets, çou k' est pus ki l' macsimom di $2 kilo-octets. C' est nén possible del schaper sol sierveu.'''",
-'readonlywarning' => "'''ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.
+'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octets, çou k' est pus ki l' macsimom di $2 kilo-octets. C' est nén possible del schaper sol sierveu.'''",
+'readonlywarning' => "'''ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.
Do côp, vos n' såroz schaper vos candjmints asteure; motoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.'''",
-'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye siconte des candjmints, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''",
-'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.",
-'templatesused' => 'Modeles eployîs e cisse pådje ci:',
-'template-protected' => '(protedjî)',
-'template-semiprotected' => '(dimey-protedjî)',
-'nocreatetitle' => 'Ahivaedje di pådjes limité',
-'nocreatetext' => "Cisse waibe ci a limité l' possibilité d' ahiver des novelès pådjes. Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
-'nocreate-loggedin' => "Vos n' avoz nén l' droet d' ahiver des novelès pådjes.",
-'recreate-deleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî dsfacêye davance.'''
+'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye siconte des candjmints, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''",
+'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.",
+'templatesused' => 'Modeles eployîs e cisse pådje ci:',
+'template-protected' => '(protedjî)',
+'template-semiprotected' => '(dimey-protedjî)',
+'nocreatetitle' => 'Ahivaedje di pådjes limité',
+'nocreatetext' => "Cisse waibe ci a limité l' possibilité d' ahiver des novelès pådjes. Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
+'nocreate-loggedin' => "Vos n' avoz nén l' droet d' ahiver des novelès pådjes.",
+'recreate-moveddeleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî dsfacêye davance.'''
Tuzez bén s' el fåt vormint rahiver, tot tapant èn ouy so l' istwere del pådje :",
@@ -578,22 +557,21 @@ ki vos vloz comparer et s' tchôkîz sol tape «enter» ou clitchîz sol
boton do dzo.<br />
Ledjinde: (ast.) = diferince avou l' modêye d' asteure,
(dif.) = diferince avou l' modêye di dvant, M = candjmint mineur.",
-'deletedrev' => '[disfacé]',
'histfirst' => 'li pus vî',
'histlast' => 'li dierin',
'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
'historyempty' => '(vude)',
# Revision feed
-'history-feed-item-nocomment' => '$1 li $2', # user at time
+'history-feed-item-nocomment' => '$1 li $2',
# Revision deletion
'rev-deleted-comment' => '(comintaire oisté)',
'rev-deleted-user' => "(no d' elodjaedje oisté)",
'rev-deleted-text-permission' => 'Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-I gn a motoit des racsegnes sol [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} djournå des disfaçaedjes].',
+I gn a motoit des racsegnes sol [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} djournå des disfaçaedjes].',
'rev-deleted-text-view' => "Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-Come manaedjeu so ç' wiki ci, vos avoz l' droet del vey; i gn a motoit des detays sol [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
+Come manaedjeu so ç' wiki ci, vos avoz l' droet del vey; i gn a motoit des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
'rev-delundel' => 'mostrer/catchî',
'revisiondelete' => 'Disfacer/rapexhî des modêyes',
'revdelete-selected' => "'''Tchoezeye modêye di [[:$1]]:'''",
@@ -623,14 +601,13 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
'searchresulttext' => 'Po pus di racsegnes sol manire di fé des cweraedjes so {{SITENAME}}, loukîz [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Pol cweraedje «[[$1]]»',
'searchsubtitleinvalid' => 'Pol cweraedje «$1»',
-'noexactmatch' => "'''I n' a nole pådje avou l' tite «$1».''' Vos poloz [[:$1|ahiver cisse pådje la]].",
'titlematches' => 'Årtikes avou on tite ki corespond',
'notitlematches' => 'Nol årtike avou on tite ki corespond',
'textmatches' => 'Årtikes avou do tecse ki corespond',
'notextmatches' => 'Nol årtike avou do tecse ki corespond',
'prevn' => '$1 di dvant',
-'nextn' => '$1 shuvants',
-'viewprevnext' => 'Vey ($1) ($2) ($3).',
+'nextn' => '{{PLURAL:$1|$1}} shuvants',
+'viewprevnext' => 'Vey ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Aidance',
'search-redirect' => '(ridjiblé di $1)',
'search-interwiki-caption' => 'So les ôtes pordjets Wiki',
@@ -645,64 +622,67 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
'powersearch-redir' => 'Håyner les rdjiblaedjes',
'searchdisabled' => "Mande escuzes! Li cweraedje å dvins des årtikes a stî dismetou pol moumint, cåze ki l' sierveu est fortcherdjî. Tot ratindant, vos ploz eployî Google po fé les rcweraedjes so {{SITENAME}}, mins çoula pout esse ene miete vî.",
-# Preferences page
-'preferences' => 'Preferinces',
-'mypreferences' => 'Mes preferinces',
-'prefs-edits' => 'Nombe di candjmints:',
-'prefsnologin' => "Vos n' estoz nén elodjî",
-'prefsnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] po pleur candjî vos preferinces.',
-'prefsreset' => "Les preferinces ont stî rmetowes come d' avance a pårti des wårdêyès valixhances.",
+# Quickbar
'qbsettings' => 'Apontiaedjes pol bår di menu',
'qbsettings-none' => 'Nole bår',
'qbsettings-fixedleft' => 'Aclawêye a hintche',
'qbsettings-fixedright' => 'Aclawêye a droete',
'qbsettings-floatingleft' => 'Flotante a hintche',
'qbsettings-floatingright' => 'Flotante a droete',
-'changepassword' => "Candjî l' sicret",
-'skin' => 'Pea',
-'skin-preview' => 'vey divant',
-'math' => 'Formules matematikes',
-'dateformat' => 'Cogne del date',
-'datedefault' => 'Nole preferince',
-'datetime' => 'Cogne del date',
-'math_unknown_error' => 'aroke nén cnoxhowe',
-'math_unknown_function' => 'fonccion nén cnoxhowe',
-'math_syntax_error' => 'aroke di sintacse',
-'math_image_error' => 'Li cviersaedje e PNG a fwait berwete; verifyîz ki les programes latex, dvips, gs eyet convert ont stî astalés comifåt',
-'math_bad_tmpdir' => "Dji n' sai nén scrire ou ahiver l' ridant timporaire po les formules matematikes",
-'math_bad_output' => "Dji n' sai nén scrire ou ahiver l' ridant po les fitchîs di rexhowe des formules matematikes",
-'math_notexvc' => 'I manke li fitchî enondåve texvc; lijhoz math/README po-z apontyî.',
-'prefs-personal' => 'Dinêyes da vosse',
-'prefs-rc' => 'Håynaedje des dierins candjmints',
-'prefs-watchlist' => 'Djivêye des shuvous',
-'prefs-watchlist-days' => "Nombe di djoûs a mostrer dins l' djivêye:",
-'prefs-watchlist-edits' => "Nombe di candjmints a mostrer dins l' djivêye:",
-'prefs-misc' => 'Totes sôres',
-'saveprefs' => 'Schaper les preferinces',
-'resetprefs' => 'Rimete les prémetowès valixhances',
-'textboxsize' => 'Grandeu del boesse di tecse',
-'rows' => 'Royes',
-'columns' => 'Colones',
-'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
-'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
-'contextlines' => 'Nombe di royes a håyner po ene response',
-'contextchars' => 'Nombe di caracteres di contecse pa roye',
-'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
-'recentchangescount' => 'Nombe di tites dins les dierins candjmints',
-'savedprefs' => 'Vos preferinces ont stî schapêyes.',
-'timezonelegend' => "Coisse d' eureye",
-'timezonetext' => "¹Tapez li nombe d' eures di diferince avou l' tins univiersel (UTC).",
-'localtime' => "Håyner l' eure locåle",
-'timezoneoffset' => "Diferince d' eures¹",
-'servertime' => "L' eure sol sierveu",
-'guesstimezone' => "Prinde d' après l' betchteu",
-'allowemail' => "Permete di rçure des emiles d' ôtes uzeus",
-'defaultns' => 'Prémetous spåces di nos pol cweraedje:',
-'default' => 'prémetou',
-'files' => 'Fitchîs',
+
+# Preferences page
+'preferences' => 'Preferinces',
+'mypreferences' => 'Mes preferinces',
+'prefs-edits' => 'Nombe di candjmints:',
+'prefsnologin' => "Vos n' estoz nén elodjî",
+'prefsnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] po pleur candjî vos preferinces.',
+'changepassword' => "Candjî l' sicret",
+'prefs-skin' => 'Pea',
+'skin-preview' => 'vey divant',
+'prefs-math' => 'Formules matematikes',
+'datedefault' => 'Nole preferince',
+'prefs-datetime' => 'Cogne del date',
+'prefs-personal' => 'Dinêyes da vosse',
+'prefs-rc' => 'Håynaedje des dierins candjmints',
+'prefs-watchlist' => 'Djivêye des shuvous',
+'prefs-watchlist-days' => "Nombe di djoûs a mostrer dins l' djivêye:",
+'prefs-watchlist-edits' => "Nombe di candjmints a mostrer dins l' djivêye:",
+'prefs-misc' => 'Totes sôres',
+'saveprefs' => 'Schaper les preferinces',
+'resetprefs' => 'Rimete les prémetowès valixhances',
+'prefs-editing' => 'Grandeu del boesse di tecse',
+'rows' => 'Royes',
+'columns' => 'Colones',
+'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
+'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
+'contextlines' => 'Nombe di royes a håyner po ene response',
+'contextchars' => 'Nombe di caracteres di contecse pa roye',
+'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
+'recentchangescount' => 'Nombe di tites dins les dierins candjmints',
+'savedprefs' => 'Vos preferinces ont stî schapêyes.',
+'timezonelegend' => "Coisse d' eureye",
+'localtime' => "Håyner l' eure locåle",
+'timezoneoffset' => "Diferince d' eures¹",
+'servertime' => "L' eure sol sierveu",
+'guesstimezone' => "Prinde d' après l' betchteu",
+'allowemail' => "Permete di rçure des emiles d' ôtes uzeus",
+'defaultns' => 'Prémetous spåces di nos pol cweraedje:',
+'default' => 'prémetou',
+'prefs-files' => 'Fitchîs',
+'youremail' => 'Vost emile*',
+'username' => "No d' elodjaedje:",
+'uid' => "Limero d' l' uzeu:",
+'yourrealname' => 'Li vraiy no da vosse*',
+'yourlanguage' => "Lingaedje po l' eterface",
+'yourvariant' => 'Variante do lingaedje',
+'yournick' => 'Vosse no metou (po les sinateures)',
+'badsig' => 'Sinateure brute nén valide; verifyîz les etiketes HTML.',
+'email' => 'Emile',
+'prefs-help-realname' => '* Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
+'prefs-help-email' => "* Emile (opcionel): Permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
# User rights
-'userrights' => 'Manaedjî les liveas des uzeus', # Not used as normal message but as header for the special page itself
+'userrights' => 'Manaedjî les liveas des uzeus',
'userrights-lookup-user' => "Manaedjî les groupes d' èn uzeu",
'userrights-user-editname' => "Tapez on no d' uzeu:",
'editusergroup' => "Candjî les groupes di l' uzeu",
@@ -765,12 +745,13 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
'newsectionsummary' => '/* $1 */ novele seccion',
# Recent changes linked
-'recentchangeslinked' => 'Candjmints aloyîs',
+'recentchangeslinked' => 'Candjmints aloyîs',
+'recentchangeslinked-feed' => 'Candjmints aloyîs',
+'recentchangeslinked-toolbox' => 'Candjmints aloyîs',
# Upload
'upload' => 'Eberweter on fitchî',
'uploadbtn' => 'Eberweter',
-'reupload' => 'En erî',
'reuploaddesc' => "Rivni al pådje d' eberwetaedje.",
'uploadnologin' => 'Nén elodjî',
'uploadnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] por vos pleur eberweter des fitchîs.',
@@ -811,7 +792,6 @@ ou co po les sons
'uploaddisabled' => 'Eberwetaedje di fitchîs dismetou',
'uploaddisabledtext' => "Mande escuzes, mins l' eberwetaedje di fitchîs a stî dismetou pol moumint.",
'uploadscripted' => 'Ci fitchî ci a-st å dvins do côde HTML ou on scripe ki pôreut esse må comprin pa on betchteu waibe.',
-'uploadcorrupt' => "Li fitchî est cron oudonbén il a-st ene mwaijhe cawete. Verifyîz l' fitchî eyet l' reberweter s' i vs plait.",
'uploadvirus' => 'Li fitchî a-st on virusse! Detays: $1',
'sourcefilename' => "No d' fitchî so vosse copiutrece:",
'destfilename' => "No d' fitchî a eployî so {{SITENAME}}:",
@@ -833,6 +813,7 @@ ou co po les sons
'listfiles_description' => 'Discrijhaedje',
# File description page
+'file-anchor-link' => 'Imådje',
'filehist' => 'Istwere do fitchî',
'filehist-help' => "Clitchîz so ene date ey ene eure po vey kimint ki l' fitchî esteut adon.",
'filehist-deleteall' => 'disfacer ttafwait',
@@ -844,11 +825,9 @@ ou co po les sons
'imagelinks' => 'Loyéns viè ciste imådje chal',
'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante|Les pådjes shuvantes}} eployèt ciste imådje chal:',
'nolinkstoimage' => "I n' a nole pådje k' eploye ciste imådje chal.",
-'sharedupload' => "Ci fitchî ci est so on ridant pårtaedjî ey i s' pout k' i soeye eployî pa ds ôtes pordjets.", # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Loukîz li $1 po pus di racsegnes.',
-'shareduploadwiki-linktext' => 'pådje di discrijhaedje',
-'noimage' => "I n' a nou fitchî avou ç' no la, vos l' poloz $1",
-'noimage-linktext' => 'eberweter',
+'sharedupload' => "Ci fitchî ci est so on ridant pårtaedjî ey i s' pout k' i soeye eployî pa ds ôtes pordjets.",
+'sharedupload-desc-there' => 'Ci fitchî ci provént di $1; si pout i esse reployî dins des ôtes pordjets "Wiki". Loukîz [$2 si pådje di discrijhaedje] po-z esse mî racsegnî.',
+'sharedupload-desc-here' => 'Ci fitchî ci provént di $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pådje di discrijhaedje] låvå est håynêye cial ådzo.',
'uploadnewversion-linktext' => 'Eberweter ene nouve modêye di ci fitchî ci',
# File reversion
@@ -896,8 +875,8 @@ ou co po les sons
'brokenredirects' => 'Pierdous redjiblaedjes',
'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén.",
-'brokenredirects-edit' => '(candjî)',
-'brokenredirects-delete' => '(disfacer)',
+'brokenredirects-edit' => 'candjî',
+'brokenredirects-delete' => 'disfacer',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|octet|octets}}',
@@ -1054,7 +1033,7 @@ I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme på
--
Po candjî l\' apontiaedje di vosse djivêye a shuve, loukîz
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
Po pus d\' aidance:
{{fullurl:{{ns:help}}:Aidance}}',
@@ -1088,8 +1067,8 @@ djivêye des dierins disfaçaedjes.',
ene sakî d' ôte a ddja candjî l' årtike ou ddja rmetou l' modêye di dvant.
Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
-'editcomment' => "Li comintaire do candjmint esteut: «''$1''».", # only shown if there is an edit comment
-'revertpage' => 'Disfwait li candjmint da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Li comintaire do candjmint esteut: «''$1''».",
+'revertpage' => 'Disfwait li candjmint da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Djournå des protedjaedjes',
@@ -1100,12 +1079,11 @@ Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
'protect-legend' => "Acertinez l' protedjaedje",
'protectcomment' => 'Råjhon',
-'protect-unchain' => 'Disbloker les permissions di displaeçaedje',
'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''<nowiki>$1</nowiki>'''.",
'protect-default' => '(prémetou)',
'protect-level-autoconfirmed' => 'Bloker les uzeus nén eredjîstrés',
'protect-level-sysop' => 'Seulmint les manaedjeus',
-'protect-expiry-options' => '2 eures:2 hours,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 eures:2 hours,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
'pagesize' => '(octets)',
# Restrictions (nouns)
@@ -1154,9 +1132,11 @@ Loukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des
'contributions' => "Ovraedjes di l' uzeu",
'mycontris' => 'Mi ovraedje',
'contribsub2' => "Po l' uzeu $1 ($2)",
-'nocontribs' => "Nou candjmint di trové ki corespondreut a ç' critere la.", # Optional parameter: $1 is the user name
+'nocontribs' => "Nou candjmint di trové ki corespondreut a ç' critere la.",
-'sp-contributions-submit' => 'Cweri',
+'sp-contributions-talk' => 'Copiner',
+'sp-contributions-userrights' => 'Manaedjî les liveas des uzeus',
+'sp-contributions-submit' => 'Cweri',
# What links here
'whatlinkshere' => 'Pådjes ki loynut chal',
@@ -1185,7 +1165,7 @@ stî vandalijheyes).",
'ipbreason' => 'Råjhon',
'ipbsubmit' => 'Bloker cist uzeu',
'ipbother' => 'Ôte termene',
-'ipboptions' => '2 eures:2 hours,1 djoû:1 day,3 djoûs:3 days,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 eures:2 hours,1 djoû:1 day,3 djoûs:3 days,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
'ipbotheroption' => 'ôte',
'badipaddress' => "Nol uzeu avou ç' no la, ou adresse IP nén valide",
'blockipsuccesssub' => 'Li blocaedje a stî comifåt',
@@ -1198,7 +1178,7 @@ stî vandalijheyes).",
'ipblocklist-submit' => 'Cweri',
'blocklistline' => '$1, $2 a bloké $3 ($4)',
'infiniteblock' => 'po todi',
-'expiringblock' => "disk' å $1",
+'expiringblock' => "disk' å $1 $2",
'blocklink' => 'bloker',
'unblocklink' => 'disbloker',
'contribslink' => 'contribouwaedjes',
@@ -1287,8 +1267,6 @@ Dins ç' dierin cas, vos ploz eto eployî ene hårdêye, eg: [[{{#Special:Export
'allmessagescurrent' => 'Tecse pol moumint',
'allmessagestext' => "Çouchal est ene djivêye di tos les messaedjes k' i gn a dins l' espåce di lomaedje ''MediaWiki:''",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' n' est nén sopoirté paski '''\$wgUseDatabaseMessages''' est dismetou.",
-'allmessagesfilter' => 'Erîlêye ratourneure pol passete:',
-'allmessagesmodified' => 'Seulmint les cis candjîs',
# Thumbnails
'thumbnail-more' => 'Ragrandi',
@@ -1381,7 +1359,7 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
# Attribution
'anonymous' => '{{PLURAL:$1|Uzeu anonime|Uzeus anonimes}} di {{SITENAME}}',
'siteuser' => "Uzeu d' {{SITENAME}} «$1»",
-'lastmodifiedatby' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1 pa $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1 pa $3.',
'othercontribs' => "Båzé so l' ovraedje da $1.",
'others' => 'des ôtes',
'siteusers' => "{{PLURAL:$2|uzeu|uzeus}} d' {{SITENAME}} «$1»",
@@ -1404,6 +1382,15 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
'mw_math_modern' => 'Ricmandé po les betchteus modienes',
'mw_math_mathml' => "Eployî MathML si c' est possibe (esperimintå)",
+# Math errors
+'math_unknown_error' => 'aroke nén cnoxhowe',
+'math_unknown_function' => 'fonccion nén cnoxhowe',
+'math_syntax_error' => 'aroke di sintacse',
+'math_image_error' => 'Li cviersaedje e PNG a fwait berwete; verifyîz ki les programes latex, dvips, gs eyet convert ont stî astalés comifåt',
+'math_bad_tmpdir' => "Dji n' sai nén scrire ou ahiver l' ridant timporaire po les formules matematikes",
+'math_bad_output' => "Dji n' sai nén scrire ou ahiver l' ridant po les fitchîs di rexhowe des formules matematikes",
+'math_notexvc' => 'I manke li fitchî enondåve texvc; lijhoz math/README po-z apontyî.',
+
# Image deletion
'deletedrevision' => 'Viye modêye $1 disfacêye',
@@ -1441,7 +1428,7 @@ est raptiti. Les ôtes seront catchîs.
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Lårdjeur',
@@ -1487,8 +1474,8 @@ est raptiti. Les ôtes seront catchîs.
'exif-gpsdatestamp' => 'Date do GPS',
'exif-gpsdifferential' => 'Coridjaedje diferenciel do GPS',
-'exif-orientation-1' => 'Normå', # 0th row: top; 0th column: left
-'exif-orientation-3' => 'Tourné di 180°', # 0th row: bottom; 0th column: right
+'exif-orientation-1' => 'Normå',
+'exif-orientation-3' => 'Tourné di 180°',
'exif-componentsconfiguration-0' => "n' egzistêye nén",
@@ -1546,7 +1533,7 @@ est raptiti. Les ôtes seront catchîs.
'exif-gpslongitude-e' => 'Londjitude Ess',
'exif-gpslongitude-w' => 'Londjitude Ouwess',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km/h',
'exif-gpsspeed-m' => 'miles/h',
'exif-gpsspeed-n' => 'nuks',
@@ -1631,7 +1618,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
'watchlistedit-raw-titles' => 'Tites:',
# Special:Version
-'version' => 'Modêye des programes', # Not used as normal message but as header for the special page itself
+'version' => 'Modêye des programes',
# Special:SpecialPages
'specialpages' => 'Pådjes sipeciåles',
diff --git a/languages/messages/MessagesWar.php b/languages/messages/MessagesWar.php
index 333221a2..e18e4887 100644
--- a/languages/messages/MessagesWar.php
+++ b/languages/messages/MessagesWar.php
@@ -75,6 +75,10 @@ $messages = array(
'underline-always' => 'Pirme',
'underline-never' => 'Diri',
+# Font style option in Special:Preferences
+'editfont-sansserif' => 'Sans-serif nga agi',
+'editfont-serif' => 'Serif nga agi',
+
# Dates
'sunday' => 'Dominggo',
'monday' => 'Lunes',
@@ -134,7 +138,7 @@ $messages = array(
'category-media-header' => 'Media ha kaarangay nga "$1"',
'category-empty' => "''Ini nga kaarangay ha yana waray mga pakli o media.''",
'hidden-categories' => '{{PLURAL:$1|Tinago nga kaarangay|Tinago nga mga kaarangay}}',
-'hidden-category-category' => 'Tinago nga mga kaarangay', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Tinago nga mga kaarangay',
'category-subcat-count' => '{{PLURAL:$2|Ini nga kaarangay mayda amo la nga nasunod nga ubos-nga-kaarangay.|Ini nga kaarangay mayda han mga nasunod nga {{PLURAL:$1|ubos-nga-kaarangay|$1 nga mga ubos-nga-kaarangay}}, tikang hin $2 nga kabug-osan.}}',
'category-subcat-count-limited' => 'Ini nga kaarangay mayda han nasunod nga {{PLURAL:$1|ubos-nga-kaarangay|$1 nga mga ubos-nga-kaarangay}}.',
'category-article-count' => '{{PLURAL:$2|Ini nga kaarangay mayda han amo la nga nasunod nga pakli.|An mga nasunod nga {{PLURAL:$1|ka pakli|$1 ka mga pakli}} aada hini nga kaarangay, tikang hin $2 nga kabug-osan.}}',
@@ -152,10 +156,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Mahitungod han',
-'article' => 'Pakli hin sulod',
-'newwindow' => '(nabuklad hin bag-o nga tamboan o bintana)',
-'cancel' => 'Igkanselar',
+'about' => 'Mahitungod han',
+'article' => 'Pakli hin sulod',
+'newwindow' => '(nabuklad hin bag-o nga tamboan o bintana)',
+'cancel' => 'Igkanselar',
+'moredotdotdot' => 'Damo pa nga…',
+'mypage' => 'Akon pakli',
+'mytalk' => 'Akon paghingay',
+'anontalk' => 'Paghingay para hini nga IP',
+'navigation' => 'Paglayag',
+'and' => '&#32;ngan',
+
+# Cologne Blue skin
'qbfind' => 'Bilnga',
'qbbrowse' => 'Igdalikyat',
'qbedit' => 'Igliwat',
@@ -163,15 +175,32 @@ $messages = array(
'qbpageinfo' => 'Kontexto',
'qbmyoptions' => 'Akon mga pakli',
'qbspecialpages' => 'Mga ispisyal nga pakli',
-'moredotdotdot' => 'Damo pa nga…',
-'mypage' => 'Akon pakli',
-'mytalk' => 'Akon paghingay',
-'anontalk' => 'Paghingay para hini nga IP',
-'navigation' => 'Paglayag',
-'and' => '&#32;ngan',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'AGG',
+'faqpage' => 'Project:AGG',
+
+# Vector skin
+'vector-action-addsection' => 'Igdugang hin himangrawon',
+'vector-action-delete' => 'Para-a',
+'vector-action-move' => 'Balhina',
+'vector-action-protect' => 'Panalipda',
+'vector-action-undelete' => 'Igbalik an ginpara',
+'vector-namespace-category' => 'Kaarangay',
+'vector-namespace-help' => 'Pagbulig nga pakli',
+'vector-namespace-image' => 'Fayl',
+'vector-namespace-main' => 'Pakli',
+'vector-namespace-media' => 'Pakli hin medya',
+'vector-namespace-mediawiki' => 'Mensahe',
+'vector-namespace-project' => 'Proyekto nga pakli',
+'vector-namespace-special' => 'Nalalain nga pakli',
+'vector-namespace-talk' => 'Hiruhimangraw',
+'vector-namespace-template' => 'Plantilya',
+'vector-namespace-user' => 'Pakli hin nágámit',
+'vector-view-create' => 'Himo-a',
+'vector-view-edit' => 'Igliwat',
+'vector-view-history' => 'Kitaa an kaagi',
+'vector-view-view' => 'Basaha',
+'vector-view-viewsource' => 'Kitaa an ginkuhaan',
+'actions' => 'Mga buhat',
'errorpagetitle' => 'Sayop',
'returnto' => 'Balik ngadto ha $1.',
@@ -221,18 +250,22 @@ $messages = array(
'otherlanguages' => 'Ha iba nga mga yinaknan',
'redirectedfrom' => '(Ginredirekta tikang ha $1)',
'redirectpagesub' => 'Redirek nga pakli',
-'lastmodifiedat' => 'Ini nga pakli kataposan ginliwat dida han $1, han $2.', # $1 date, $2 time
+'lastmodifiedat' => 'Ini nga pakli kataposan ginliwat dida han $1, han $2.',
'viewcount' => 'Ini nga pakli ginkanhi hin {{PLURAL:$1|makausa|$1 ka beses}}.',
'protectedpage' => 'Ginpanalipdan nga pakli',
'jumpto' => 'Laktaw ngadto ha:',
'jumptonavigation' => 'paglayag',
'jumptosearch' => 'bilnga',
+'view-pool-error' => 'Pasayloa, an mga server diri na kaya yana nga takna.
+Damo nga nagamit in gusto sinmulod hini nga pakli.
+Alayon paghulat makadali san-o ka inmutro pagsulod hin nga pakli utro.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Mahitungod han {{SITENAME}}',
'aboutpage' => 'Project:Mahitungod han',
'copyright' => 'In sulod mabiblingan ha ilarom han $1.',
-'copyrightpagename' => '{{SITENAME}} kopirayt',
'copyrightpage' => '{{ns:project}}:Mga kopirayt',
'currentevents' => 'Mga panhitabo',
'currentevents-url' => 'Project:Mga panhitabo',
@@ -240,8 +273,6 @@ $messages = array(
'disclaimerpage' => 'Project:Kasahiran nga disclaimer',
'edithelp' => 'Bulig hin pagliwat',
'edithelppage' => 'Help:Pagliwat',
-'faq' => 'AGG',
-'faqpage' => 'Project:AGG',
'helppage' => 'Help:Sulod',
'mainpage' => 'Syahan nga Pakli',
'mainpage-description' => 'Syahan nga Pakli',
@@ -337,8 +368,6 @@ Nagbalik hin sayop an database nga "$3: $4"',
'userlogin' => 'Sakob/Pagrehistro',
'logout' => 'Gawas',
'userlogout' => 'Gawas',
-'yourlanguage' => 'Yinaknan:',
-'gender-male' => 'Lalaki',
'loginerror' => 'Sayop hin pagsakob',
'loginlanguagelabel' => 'Yinaknan: $1',
@@ -358,9 +387,9 @@ Nasaad ka liwat nga imo ini kalugaringon nga ginsurat, o ginkopya nimo ini tikan
'page_last' => 'kataposan',
# Search results
-'prevn' => 'naha-una nga $1',
-'nextn' => 'sunod nga $1',
-'viewprevnext' => 'Kitaa an ($1) ($2) ($3)',
+'prevn' => 'naha-una nga {{PLURAL:$1|$1}}',
+'nextn' => 'sunod nga {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Kitaa an ($1 {{int:pipe-separator}} $2) ($3)',
'searchhelp-url' => 'Help:Sulod',
'search-result-size' => '$1 ({{PLURAL:$2|1 nga pulong|$2 nga mga pulong}})',
'search-suggest' => 'Buot sidngon mo ba: $1',
@@ -374,10 +403,12 @@ Nasaad ka liwat nga imo ini kalugaringon nga ginsurat, o ginkopya nimo ini tikan
# Preferences page
'preferences' => 'Mga karuyag',
'mypreferences' => 'Akon mga karuyag',
-'datetime' => 'Pitsa ngan oras',
+'prefs-datetime' => 'Pitsa ngan oras',
'searchresultshead' => 'Bilnga',
'timezonelegend' => 'Zona hin oras',
'localtime' => 'Oras nga lokal',
+'yourlanguage' => 'Yinaknan:',
+'gender-male' => 'Lalaki',
# Recent changes
'recentchanges' => 'Mga kabag-ohan',
@@ -386,7 +417,9 @@ Nasaad ka liwat nga imo ini kalugaringon nga ginsurat, o ginkopya nimo ini tikan
'newpageletter' => 'B',
# Recent changes linked
-'recentchangeslinked' => 'Mga may kalabotan nga binag-o',
+'recentchangeslinked' => 'Mga may kalabotan nga binag-o',
+'recentchangeslinked-feed' => 'Mga may kalabotan nga binag-o',
+'recentchangeslinked-toolbox' => 'Mga may kalabotan nga binag-o',
# Upload
'upload' => 'Pagkarga hin file',
@@ -397,13 +430,15 @@ Nasaad ka liwat nga imo ini kalugaringon nga ginsurat, o ginkopya nimo ini tikan
'listfiles_name' => 'Ngaran',
# File description page
-'filehist-datetime' => 'Pitsa/Oras',
-'filehist-user' => 'Nagamit',
-'imagelinks' => 'Mga sumpay hin fayl',
-'linkstoimage' => 'An nasunod nga {{PLURAL:$1|pakli nasumpay|$1 mga pakli nasumpay}} hini nga fayl:',
-'nolinkstoimage' => 'Waray mga pakli nga nasumpay hini nga fayl.',
-'sharedupload' => 'Ini nga fayl tikang han $1 ngan puyde magamit ha iba nga mga proyekto.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Alayon pagkita han $1 para hin dugang nga impormasyon.',
+'file-anchor-link' => 'Fayl',
+'filehist-datetime' => 'Pitsa/Oras',
+'filehist-user' => 'Nagamit',
+'imagelinks' => 'Mga sumpay hin fayl',
+'linkstoimage' => 'An nasunod nga {{PLURAL:$1|pakli nasumpay|$1 mga pakli nasumpay}} hini nga fayl:',
+'nolinkstoimage' => 'Waray mga pakli nga nasumpay hini nga fayl.',
+'sharedupload' => 'Ini nga fayl tikang han $1 ngan puyde magamit ha iba nga mga proyekto.',
+'sharedupload-desc-there' => 'Ini nga fayl tikang han $1 ngan puyde magamit ha iba nga mga proyekto.
+Alayon pagkita han [$2 nga pakli hin pagpahayag mahitungod hini nga fayl] para hin dugang nga kasayuran.',
# Unused templates
'unusedtemplateswlh' => 'iba nga mga sumpay',
@@ -471,6 +506,8 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
# Contributions
'mycontris' => 'Akon mga ámot',
+'sp-contributions-talk' => 'Hiruhimangraw',
+
# What links here
'whatlinkshere' => 'Mga nasumpay dinhi',
@@ -525,6 +562,7 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
'watchlistall2' => 'ngatanan',
'namespacesall' => 'ngatanan',
'monthsall' => 'ngatanan',
+'limitall' => 'ngatanan',
# Delete conflict
'recreate' => 'Himo-a utro',
@@ -559,4 +597,7 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
# Database error messages
'dberr-header' => 'Ini nga wiki mayda problema',
+# HTML forms
+'htmlform-reset' => 'Igbalik an mga pinamalyuan',
+
);
diff --git a/languages/messages/MessagesWo.php b/languages/messages/MessagesWo.php
index b4f4b0da..c61fa0c3 100644
--- a/languages/messages/MessagesWo.php
+++ b/languages/messages/MessagesWo.php
@@ -108,6 +108,7 @@ $messages = array(
'tog-enotifminoredits' => 'Yónne ma ab bataaxal donte coppite yu néew lañu',
'tog-enotifrevealaddr' => 'Wone sama màkkaan bu mbëjfeppal ci bataaxali yëgle yi',
'tog-shownumberswatching' => 'Wone limu jëfandikukat yiy topp wii xët',
+'tog-oldsig' => 'Wonendig xaatim gi teew:',
'tog-fancysig' => 'Soppi sa xaatim (du am lëkkalekaay bu boppu)',
'tog-externaleditor' => 'Jëfandikoo soppikaay bu biti saa su ne',
'tog-externaldiff' => 'Jëfandiku ab méngalekaay bu biti saa su ne (ngir jëfandikukat yu xarale yi rekk, dafa laaj yenn kocc-koccal yi ci sa nosukaay)',
@@ -129,6 +130,13 @@ $messages = array(
'underline-never' => 'Mukk',
'underline-default' => 'Aju ci joowukaay bi',
+# Font style option in Special:Preferences
+'editfont-style' => 'Meliinu mbind mu barabu coppite bi:',
+'editfont-default' => 'Bi wàccaaleek joowukaay bi',
+'editfont-monospace' => 'Dayoob mbind genn dig-digal',
+'editfont-sansserif' => 'Dayoob mbind bu amul-dig',
+'editfont-serif' => 'Dayoob mbind bu am-dig',
+
# Dates
'sunday' => 'dibéer',
'monday' => 'altine',
@@ -188,7 +196,7 @@ $messages = array(
'category-media-header' => 'Jukkiy wàll wi « $1 »',
'category-empty' => "''Nii-nii wàll wii ëmbul tus, dub ron-wàll, dub jukki, dub dencukaay. ''",
'hidden-categories' => '{{PLURAL:$1|wàll bi nëbbu|wàll yi nëbbu}}',
-'hidden-category-category' => 'Wàll yi nëbbu', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Wàll yi nëbbu',
'category-subcat-count' => '{{PLURAL:$2|Wii wàll wenn ron-wàll rekk la am, di wiy toftal.| {{PLURAL:$1|Wii ron-wàll |$1 Ron-wàll yii }} bokk {{PLURAL:$1|na|nañu}} ci $2 ron-wàll yi nekk ci wii wàll.}}',
'category-subcat-count-limited' => 'Wii wàll am na {{PLURAL:$1|ron-wàll|$1 ron-wàll}}.',
'category-article-count' => '{{PLURAL:$2|Wii wàll wenn xët rekk la am, di wiy toftal.|{{PLURAL:$1|Wii xët |$1 xët yii }} bokk {{PLURAL:$1|na|nañu}} ci $2 xët yi nekk ci wii wàll.}}',
@@ -206,10 +214,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ MediaWiki]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Limu waxtaan ci liy-génn ci MediaWiki]',
-'about' => 'Ci mbirum',
-'article' => 'Jukki',
-'newwindow' => '(Day ubbeeku ci beneen palanteer)',
-'cancel' => 'Neenal',
+'about' => 'Ci mbirum',
+'article' => 'Jukki',
+'newwindow' => '(Day ubbeeku ci beneen palanteer)',
+'cancel' => 'Neenal',
+'moredotdotdot' => 'Ak yeneen...',
+'mypage' => 'Samaw xët',
+'mytalk' => 'Xëtu waxtaanuwaay',
+'anontalk' => 'Waxtaan ak bii IP',
+'navigation' => 'Joowiin',
+'and' => '&#32;ak',
+
+# Cologne Blue skin
'qbfind' => 'Seet',
'qbbrowse' => 'Lemmi',
'qbedit' => 'Soppi',
@@ -217,15 +233,35 @@ $messages = array(
'qbpageinfo' => 'Xëtuw xibaar',
'qbmyoptions' => 'Samay tànneef',
'qbspecialpages' => 'Xëti jagleel',
-'moredotdotdot' => 'Ak yeneen...',
-'mypage' => 'Samaw xët',
-'mytalk' => 'Xëtu waxtaanuwaay',
-'anontalk' => 'Waxtaan ak bii IP',
-'navigation' => 'Joowiin',
-'and' => '&#32;ak',
-
-# Metadata in edit box
-'metadata_help' => 'Jégginjoxe :',
+'faq' => 'Laaj yi ëpp',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Yokkuw tëriit',
+'vector-action-delete' => 'Far',
+'vector-action-move' => 'Tuddewaat',
+'vector-action-protect' => 'Aar',
+'vector-action-undelete' => 'Delloowaat',
+'vector-action-unprotect' => 'Aaradi',
+'vector-namespace-category' => 'Wàll',
+'vector-namespace-help' => 'Ndimbal',
+'vector-namespace-image' => 'Dencukaay',
+'vector-namespace-main' => 'Xët',
+'vector-namespace-media' => 'Xëtu xibaarukaay',
+'vector-namespace-mediawiki' => 'Bataaxal',
+'vector-namespace-project' => 'Xëtu sémb',
+'vector-namespace-special' => 'Xëtu jagleel',
+'vector-namespace-talk' => 'Diisoo',
+'vector-namespace-template' => 'Royuwaay',
+'vector-namespace-user' => 'Xëtu jëfandikukat',
+'vector-view-create' => 'Sos',
+'vector-view-edit' => 'Soppi',
+'vector-view-history' => 'Wone jaar-jaaram',
+'vector-view-view' => 'Jàng',
+'vector-view-viewsource' => 'Wone gongikuwaayam',
+'actions' => 'Jëf',
+'namespaces' => 'Barabu tur',
+'variants' => 'Wuute',
'errorpagetitle' => 'Njuumte',
'returnto' => 'Dellu ci wii xët $1.',
@@ -275,18 +311,22 @@ $messages = array(
'otherlanguages' => 'Yeneeni làkk',
'redirectedfrom' => '(Yoonalaat gu jóge $1)',
'redirectpagesub' => 'Xëtu yoonalaat',
-'lastmodifiedat' => 'Coppite bu mujj bu xët wii $1 ci $2.<br />', # $1 date, $2 time
+'lastmodifiedat' => 'Coppite bu mujj bu xët wii $1 ci $2.<br />',
'viewcount' => 'Xët wii nemmeeku nañ ko {{PLURAL:$1|$1 yoon|$1 yoon}}.',
'protectedpage' => 'Xët wees aar',
'jumpto' => 'Dem :',
'jumptonavigation' => 'Joowiin',
'jumptosearch' => 'Seet',
+'view-pool-error' => 'jéggalu, joxekaay yi dañoo xat nii-nii.
+Jëfandikukat yiy jéem a ubbi xët wii dañoo bari.
+Taaxiirlul ba ci kanam nga jéemaat.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Ci mbiri {{SITENAME}}',
'aboutpage' => 'Project:Ci mbiri',
'copyright' => 'Ëmbit laa ngi jàppandi ci $1.',
-'copyrightpagename' => 'àqu {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:Copyright',
'currentevents' => 'Luy xew',
'currentevents-url' => 'Project:Luy xew',
@@ -294,8 +334,6 @@ $messages = array(
'disclaimerpage' => 'Project:Aartu yu daj',
'edithelp' => 'Ndimbal',
'edithelppage' => 'Help:Nooy soppee aw xët',
-'faq' => 'Laaj yi ëpp',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Ndimbal',
'mainpage' => 'Xët wu njëkk',
'mainpage-description' => 'Xët wu njëkk',
@@ -377,10 +415,6 @@ Laaj bees mujje yónne dàttub njoxe bi moo doon :
« $1 »
bàyyikoo ci bii solo « $2 ».
Dàttub njoxe bi delloo bii njuumte « $3 : $4 ».',
-'noconnect' => 'Jéggalu! ngir ay tolof-tolofi xarala, fi mu ne nii dugg gi jàppandiwul. <br />
-$1',
-'nodb' => 'Falug dàttub njoxe bii di $1 antuwul',
-'cachederror' => 'Xët wii ab duppitu ndencit li la rekk, kon xéj-na beesul.',
'laggedslavemode' => 'Moytul, wii xët man naa bañ a man dékku coppite yi ñu mujjee def',
'readonly' => 'Dàttub njoxe bi dañu koo caabi',
'enterlockreason' => 'Biralal ngirtey tëj gi ak diir bi mu war a amee',
@@ -397,6 +431,7 @@ Di la sakku nga yegge ko ab [[Special:ListUsers/sysop|yorkat]] , jox ko màkkaan
'readonly_lag' => 'Dàttub njoxe bi daa caabi boppam ngir may ñaareelu joxekaay yi dap joxekaay bu njëkk bi.',
'internalerror' => 'Njuumte gu biir',
'internalerror_info' => 'Njuumte gu biir : $1',
+'fileappenderror' => 'Maneesul a yokk "$1" ci "$2".',
'filecopyerror' => 'Duppig dencukaay bii di « $1 » jëm « $2 » antuwul.',
'filerenameerror' => 'Tuddewaatug « $1 » niki « $2 » antuwul.',
'filedeleteerror' => 'Farug dencukaay bii di « $1 » antuwul.',
@@ -405,7 +440,7 @@ Di la sakku nga yegge ko ab [[Special:ListUsers/sysop|yorkat]] , jox ko màkkaan
'fileexistserror' => 'Mbind mi ci wii wayndare « $1 » antuwul : dencukaay bi am na ba noppi',
'formerror' => 'Tolof-tolof:Maneesu la yonnee mbind mi',
'badarticleerror' => 'Jii jëf defuwul ci wii xët.',
-'cannotdelete' => 'Farug xët walla dencukaay bi nga joxoñ antuwul. (xayna far gi am na keneen ku ko def ba noppi.)',
+'cannotdelete' => 'Farug xët walla dencukaay bi antuwul. (xayna keneen def na ko ba noppi.)',
'badtitle' => 'Koj bu baaxul',
'badtitletext' => 'Kojug xët wi nga laaj baaxul, amul dara walla day di kojjug diggantelàkk walla diggantesémb yu seen lonkoo baaxul. Xayna it dafa am benn walla ay araf yu ñu manuta jëfandikoo cib koj.',
'perfcached' => 'Lii ab duppitu ndencitu sumb mi la, kon xéj-na beesul.',
@@ -436,14 +471,12 @@ Ngirte li mu joxe mooy ne « ''$2'' ».",
'virus-scanfailed' => 'Saytu gi dog na (code $1)',
# Login and logout pages
-'logouttitle' => 'Génnu',
'logouttext' => "Fi mu nekk nii génn nga.'''
Man ngaa wéy di jëfandikoo {{SITENAME}} ci anam buñ la dul xamme walla nga [[Special:UserLogin|duggewaat]] ak wenn tur wi walla ak weneen.",
'welcomecreation' => '== Dalal-jàmm, $1 ! ==
Sosees na sa sàq.
Bul fatte soppi say [[Special:Preferences|{{SITENAME}} tànneef]].',
-'loginpagetitle' => 'Dugg',
'yourname' => 'Sa turu jëfandikukat',
'yourpassword' => 'Sa baatujàll',
'yourpasswordagain' => 'Bindaatal sa baatujàll',
@@ -465,23 +498,8 @@ Bul fatte soppi say [[Special:Preferences|{{SITENAME}} tànneef]].',
'createaccountmail' => 'Jaare ko ci m-bataaxal',
'badretype' => 'Baatujàll yi nga bind yemuñu.',
'userexists' => 'Turu jëfandikukat bi nga bind am na boroom ba noppi. Tànnal weneen.',
-'youremail' => 'Sa màkkaanub m-bataaxal :',
-'username' => 'Turu jëfandikukat :',
-'uid' => 'Limu Jëfandikukat :',
-'prefs-memberingroups' => 'Céru {{PLURAL:$1|mbooloo|mbooloo yu}} :',
-'yourrealname' => 'Sa tur dëgg*',
-'yourlanguage' => 'Làkk :',
-'yournick' => 'Xaatim ngir say waxtaan :',
-'badsig' => 'Xaatim gu ñumm gi baaxul; saytul sa yoonub HTML.',
-'badsiglength' => 'Sa xaatim daa gudd lool, guddaay bi warul romb {{PLURAL:màndarga|$1 màndarga}}.',
-'gender-unknown' => 'Waxeesu ko',
-'gender-male' => 'Góor',
-'gender-female' => 'Jigéen',
-'email' => 'Màkkaanub m-bataaxal',
-'prefs-help-realname' => 'Sa tur dëgg du lu manuta ñakk: soo ko ci bëgge duggal it dañ koy jëfandikoo rek ngir moomale la say cëru.',
'loginerror' => 'Njuumte ci dugg gi',
-'prefs-help-email' => 'Sa màkkaanub m-bataaxal du lu manuta ñakk: day tax rek ñu man laa yónne ab bataaxal jaare ko ci sa xëtu jëfandikukat walla yónne la baatujàll bu bees soo ko fattee, te du tax sa màkkaan gisu.',
-'prefs-help-email-required' => 'Laaj na ab màkkaanub m-bataaxal',
+'createaccounterror' => 'Sosug sàq mi antuwul: $1',
'nocookiesnew' => 'Sàqum jëfandikukat mi sosu na, waaye dugg gi antuwul. {{SITENAME}} day jëfandikoo ay cookie ngir dugg gi, waaye danga leen doxadil. Doxal leen ci sa joowukaay te duggaat ak sa tur ak sa baatujàll bi nga sos.',
'nocookieslogin' => '{{SITENAME}} day jëfandikoo ay cookie ngir dugg gi, te yaw say cookies dañoo doxadi. Doxal leen ci sa joowukaay te jéem a duggaat.',
'noname' => 'Bindoo turu jëfandikukat bi baax.',
@@ -492,7 +510,8 @@ Bul fatte soppi say [[Special:Preferences|{{SITENAME}} tànneef]].',
'nouserspecified' => 'Laaj na nga tànn ab turu jëfandikukat',
'wrongpassword' => 'Bii baatujàll baaxul. Jéemaatal.',
'wrongpasswordempty' => 'Duggaloo ab baatujàll, jéemaatal.',
-'passwordtooshort' => 'Sa baatujàll dafa gàtt. War naa am $1 araf lumu néew néew te itam wuute ag sa turu jëfandikukat.',
+'passwordtooshort' => 'Sa baatujàll war naa am lumu néew {{PLURAL:$1|1 màndarga|$1 màndarga}}.',
+'password-name-match' => 'Sa baatujàll dafa war a wuute ak sa turu jëfandikukat',
'mailmypassword' => 'Yónne ma ab baatujàll bu bees',
'passwordremindertitle' => 'Sa baatujàll bu bees ci {{SITENAME}}',
'passwordremindertext' => 'Kenn(xéj-na yaw la) ku am bii màkkaanu IP $1 moo laaj ngir ñu yónne ko ab baatujàll bu bees ngir duggam ci {{SITENAME}} ($4).
@@ -502,6 +521,7 @@ Baatujáll bii nag diirub dundam {{PLURAL:$5|fan|$5 fan}} la.
Soo doonul ki biral bii laaj, walla fattaliku nga sa baatujàll bu njëkk ba, te nammatoo koo soppi, man ngaa tankamlu bii bataaxal te wéy di jëfandikoo baatujàll bu yàgg ba.',
'noemail' => 'Bii jëfandikukat « $1 » amufi benn màkkaanub m-bataaxal.',
+'noemailcreate' => 'Laaj na nga joxe màkkaanub m-bataaxal bu baax',
'passwordsent' => 'Ab baatujàll bu bees yónne nañ ko ci màkkaanub m-bataaxal bu jëfandikukat bii di « $1 ». Jéemal a duggaat soo ko jotee.',
'blocked-mailpassword' => 'Ngir faggandiku ci yaq gi, ku ñu téye sa màkkaanu IP ba doo man a soppi dara, doo man a yónneelu baatujàll bu bees.',
'eauthentsent' => 'Yónnee nañ la ab m-bataaxalub dëggal ci màkkaanub m-bataaxal bi nga joxe. Balaa ñuy yónnee beneen m-bataaxal ci bii màkkaan, fawwu nga topp tektal yiñ la jox ngir dëggal ni yaa moom bii màkkaan.',
@@ -521,6 +541,7 @@ Ngir moytu ay yaq, benn m-bataaxalu fattali rek lañu lay yónne ci diiru {{PLUR
Baatujàll bu « $2 » mooy « $3 ». Li gën mooy nga dugg ci teel te soppi baatujàll bi.
Jéelaleel bataaxal bii su fekkee ci njuumte nga sosee mii sàq.',
+'usernamehasherror' => 'Turu jëfandikukat bi warul am mandarga yu hash',
'login-throttled' => 'Jéem ngaa dugg ay yoon te jàllul.
Ngalla néggandikul ab diir door a jéemaat.',
@@ -536,17 +557,12 @@ Ngalla néggandikul ab diir door a jéemaat.',
'retypenew' => 'Bindaatal baatujàll bu bees bi :',
'resetpass_submit' => 'Soppil baatujàll bi te dugg',
'resetpass_success' => 'Coppiteeg baatujàll bi antu na : Yaa ngi dugg...',
-'resetpass_bad_temporary' => 'Baatujàll bu diiru bi baaxul. Xéj-na ni nga soppee sa baatujàll bi moo baax, walla nga laaj baatujàll bu bees.',
'resetpass_forbidden' => 'Baatujàll bi manoo kaa soppi',
'resetpass-no-info' => 'faaw nga dugg ngir man a jot ci wii xët.',
'resetpass-submit-loggedin' => 'Soppi baatujàll bi',
'resetpass-wrong-oldpass' => 'Baatujall bu diiru walla bi teew baaxul.
Xèj-na baatujàll bi soppi nga ko ba noppi, walla xéj-na it dangaa laaj beneen baatujàll bu diiru.',
'resetpass-temp-password' => 'Baatujàll bu diiru :',
-'resetpass-log' => 'Jaar-jaaru loppanti gu baatujàll yi',
-'resetpass-logtext' => 'Lii ab limu jëfanikukat yi ab yorkat soppi seen baatujàll la.',
-'resetpass-logentry' => 'moo soppi baatujàll bu $1',
-'resetpass-comment' => 'Ngirtey loppanti gu baatujàll bi:',
# Edit page toolbar
'bold_sample' => 'Duufal mbind mi',
@@ -620,7 +636,6 @@ Sa màkkaanu IP mooy $3 xammeekaayu téye gi mooy #$5. Di la sakku nga joxe leen
'blockededitsource' => "Ëmbitu '''say coppite''' yi nga def fii '''$1''' mooy lii ci suuf:",
'whitelistedittitle' => 'Laaj na nga dugg ngir man a soppi xët wi',
'whitelistedittext' => 'Faaw nga doon $1 ngir am sañ-sañu soppi ëmbit li.',
-'confirmedittitle' => 'Laaj na nga dëggal sa m-bataaxal ngir man a soppi xët yi',
'confirmedittext' => 'Ngir man a soppi dara faaw nga dëggal sa m-bataaxal. Ngir kocc-koccal walla dëggal sa màkkaan demal ci say [[Special:Preferences|tànneef]].',
'nosuchsectiontitle' => 'Xaaj bi amul',
'nosuchsectiontext' => 'Da nga doon jéema soppi ab xaaj bu amul.',
@@ -637,9 +652,13 @@ Kon ngir xàmmee ko fàw nga jëfandikoo màkkaanub IP wam. Te màkkaanub IP jë
Su fekkee jëfandikukatu alaxam nga, te nga gis ne dees laa féetale ay kàddu yoo moomul, ngalla [[Special:UserLogin|bindu]] walla [[Special:UserLogin|dugg]] ngir benn jaxase bañatee am ëllëg .''",
'noarticletext' => 'Fi mu ne ni amul menn mbind ci xët wii; man ngaa [[Special:Search/{{PAGENAME}}|seet koju xët wi]] ci yeneen xët, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} seet ci xëtu jagleel wi ],
walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} soppi xët wii].',
+'noarticletext-nopermission' => 'Nii-nii amul menn mbind ci wii xët.
+Man nga [[Special:Search/{{PAGENAME}}|seet bii koj]] ci yeneen xët,
+walla <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nga seet ci yéenekaay yees ko féetaleel]</span>.',
'userpage-userdoesnotexist' => 'Mii sàqum jëfandikukat « $1 » du bu ku-bindu. Seetal bu baax ndax da ngaa namma sos walla soppi wii xët.',
'clearyourcache' => "'''Karmat :''' Soo dence xët wi ba noppi, faaw nga far nëmbiitu sa joowukaay ngir man a gis say coppite, te nga, su dee '''Mozilla / Firefox / Safari :''' cuq ci ''yeesal'' te bësaale ''shift'', walla nga bës ''Shift-R'' walla ''Ctrl-F5'' (Command-R ci Mac ), su dee '''Konqueror''': cuq ''yeesal'' walla nga bës ''F5''; su dee '''Opera''' faral nëbiit li (''Jumtukaay → Tànneef'') su dee '''Internet Explorer:''' cuq ci ''yeesal te bësaale ''Ctrl'' walla nga bës ''Ctrl-F5''.",
-'usercssjsyoucanpreview' => "'''Xelal :''' di la digël nga cuq ci «Wonendi» ngir gis say xobi CSS walla JavaScript yu bees laata nga leen di denc.",
+'usercssyoucanpreview' => "'''Xelal :''' di la digël nga cuq ci «Wonendi» ngir gis say xobi CSS walla JavaScript yu bees laata nga leen di denc.",
+'userjsyoucanpreview' => "'''Xelal :''' di la digël nga cuq ci «Wonendi» ngir gis say xobi CSS walla JavaScript yu bees laata nga leen di denc.",
'usercsspreview' => "Bul fatte ne lii wonendib sa CSS rekk la; dencagoo say coppite!'''",
'userjspreview' => "'''Bul fatte ne lii ab wonendib sa yoonu javaScript rekk la; dencagoo say coppite!'''",
'userinvalidcssjstitle' => "'''Moytul :''' amul genn col gu tudd « $1 ». Bul fatte ne xët yiy jeexee .css ak .js seeni koj ay araf yu tuut ñoo ciy tegu/.<br />ci misaal, {{ns:user}}:Foo/'''m'''onobook.css moo baax, waaye bii du baax {{ns:user}}:Foo/'''M'''onobook.css .",
@@ -690,8 +709,8 @@ Jëfandikukat yi nekk yorkat rekk a ko man a soppi.'''",
'semiprotectedpagewarning' => "'''Karmat :''' wii xët dañ kaa aar ba nga xam ne ñi bindu rekk a ko man a soppi.",
'cascadeprotectedwarning' => "'''MOYTUL :''' Xët wii dañ kaa aar ba nga xam ne yorkat yi rek ñoo koy man a soppi. Kaaraange googu dañ kaa def ndaxte xët wii dañ kaa dugal ci biir {{PLURAL:$1|aw xët wu ñu aar|ay xët yu ñu aar}}.",
'titleprotectedwarning' => "'''MOYTUL: wii xët dañ koo aar ba tax laaj na nga am [[Special:ListGroupRights|yenn sañ-sañ]] yi ngir man koo sos.'''",
-'templatesused' => 'Royuwaay yi nekk ci wii xët :',
-'templatesusedpreview' => 'Royuwaay yi nekk ci gii wonendi :',
+'templatesused' => '{{PLURAL:$1| Royuwaay bi| Royuwaay yi}} nekk ci wii xët :',
+'templatesusedpreview' => '{{PLURAL:$1| Royuwaay bi|Royuwaay yi}} nekk ci gii wonendi :',
'templatesusedsection' => 'Royuwaay yi ne ci bii xaaj:',
'template-protected' => '(aar)',
'template-semiprotected' => '(aar-diggu)',
@@ -702,12 +721,13 @@ Jëfandikukat yi nekk yorkat rekk a ko man a soppi.'''",
'permissionserrors' => 'Njuumte ci sañ-sañ yi',
'permissionserrorstext' => 'Amuloo sañ-sañu àggali jëf ji nga tambali, ngax {{PLURAL:$1|lii toftal|yii toftal}} :',
'permissionserrorstext-withaction' => 'Amoo sañ-sañu $2, ngir {{PLURAL:$1|lii di toftal |yii di toftal}} :',
-'recreate-deleted-warn' => "'''Moytul: yaa ngi nekk di sosaat aw xët wu ñu faroon.'''
+'recreate-moveddeleted-warn' => "'''Moytul: yaa ngi nekk di sosaat aw xët wees faroon.'''
-Wóorluwul bu baax ndax sosaat xët wi di na doon li gën. Xoolal yéenekaayu far gi ci suuf.",
-'deleted-notice' => 'Xët wii dañu koo far.
-Jaar-jaaru far bi moo ngi ci suuf ngir yeneen xibaar.',
-'deletelog-fulllog' => 'Wone jaar-jaar yépp',
+Wóorlul bu baax ndax sosaat xët wi di na doon li gën.
+Xoolal yéenekaayu far gi ci suuf.",
+'moveddeleted-notice' => 'Xët wii dañu koo far.
+Jaar-jaaru far yeek tuddewaat yi moo ngi ci suuf ngir yeneen xibaar.',
+'log-fulllog' => 'Wone yéenekaay bu matale',
'edit-hook-aborted' => 'Dogug coppite gi ak xeet yi.
Li ko waral xameesu ko',
'edit-gone-missing' => 'Yeesalug xët wi antuwul.
@@ -742,7 +762,7 @@ Ngirtey téye gi $3 joxe, mooy ne: ''$2''.",
'currentrev' => 'Sumb bi teew',
'currentrev-asof' => 'Sumb bi teew bu $1',
'revisionasof' => 'Sumb bu $1',
-'revision-info' => 'Sumb bu $1, bu: $2', # Additionally available: $3: revision id
+'revision-info' => 'Sumb bu $1, bu: $2',
'previousrevision' => '← Sumb bi jiitu',
'nextrevision' => 'Sumb bi toftal →',
'currentrevisionlink' => 'Sumb bi teew',
@@ -755,7 +775,6 @@ Ngirtey téye gi $3 joxe, mooy ne: ''$2''.",
(teew) = li mu wuuteek sumb bi teew, (jii) = li mu wuuteek sumb bi jiitu, <b>c</b> = coppite yu néewal.',
'history-fieldset-title' => 'Joowal ci jaar-jaar gi',
-'deletedrev' => '[far nañ ko]',
'histfirst' => 'Cëru yi njëkk',
'histlast' => 'Cëru yi mujj',
'historysize' => '({{PLURAL:$1|$1 byte|$1 byte}})',
@@ -764,20 +783,29 @@ Ngirtey téye gi $3 joxe, mooy ne: ''$2''.",
# Revision feed
'history-feed-title' => 'Jaar-jaaru sumb yi',
'history-feed-description' => 'Jaar-jaaru xët wi ci bii wiki',
-'history-feed-item-nocomment' => '$1 ci $2', # user at time
+'history-feed-item-nocomment' => '$1 ci $2',
'history-feed-empty' => 'Xët wi nga laaj amul. Xej-na dañ koo dindi ci dal bi walla ñu tuddewaat ko. Man nga jéem a [[Special:Search|seet ci wiki bi]] ndax ay xët yu bees am nañ fi.',
# Revision deletion
'rev-deleted-comment' => '(sanni-kàddu bi far nañ ko)',
'rev-deleted-user' => '(turu jëfandikukat bi far nañ ko)',
'rev-deleted-event' => '(duggit li far nañ ko)',
-'rev-deleted-text-permission' => "Sumb bu xët wii dañ koo '''far'''. Xoolal [{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} jaar-jaaru farte] yi ngir yeneeni xibaar.",
-'rev-deleted-text-view' => 'Bii sumb bu xët wii dañ koo far. Li nga doon yorkat moo tax nga man gis mbind mi. Saytul [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi ngir yeneeni xibaar.',
-'rev-deleted-no-diff' => "Manoo wone bii diff ndax benn ci sumb yi dañ koo '''far'''.
-Man ngaa ami xibaar ci [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi.",
-'rev-deleted-unhide-diff' => "Benn ci sumbi diff bi dañ koo '''far''''.
-Man ngaa ami xamle ci [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi.
-Li nga doon yorkat tax na nga man a [$1 xool bii diff] su la neexee.",
+'rev-deleted-text-permission' => "Sumb bu xët wii dañ koo '''far'''. Xoolal [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru farte] yi ngir yeneeni xibaar.",
+'rev-deleted-text-unhide' => "Sumb bu xët wii dañ koo '''far'''.
+Man nga am yeneeni xamle ci [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi.
+Li nga doon yorkat tax na nga man a [$1 saytu bii sumb] su la neexee.",
+'rev-suppressed-text-unhide' => "Sumb bu xët wii dees koo '''far'''.
+Saytul [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi ngir yeneeni xamle.
+Li nga doon saytukat tax na nga man a [$1 gis bii sumb] su la neexee.",
+'rev-deleted-text-view' => "Bii sumb bu xët wii dañ koo '''far'''.
+Li nga doon yorkat moo tax nga man gis mbind mi. Saytul [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi ngir yeneeni xibaar.",
+'rev-suppressed-text-view' => "Bii sumb bu wii xët dees koo '''faroon'''.
+Saytukat yi man nañu koo gis ba-tay; saytul [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi ngir yenneni xamle.",
+'rev-deleted-no-diff' => "Manoo wone gii méngale ndax benn ci sumb yi dañu koo '''far'''.
+Man ngaa ami xibaar ci [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi.",
+'rev-deleted-unhide-diff' => "Benn ci sumb yi ngay méngale dees koo '''far'''.
+Man ngaa ami xamle ci [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jaar-jaaru far] yi.
+Li nga doon yorkat tax na ba-tay nga man a [$1 gis gii wuute] su la neexee.",
'rev-delundel' => 'wone/nëbb',
'revisiondelete' => 'Far/Deloosiwaati sumb',
'revdelete-nooldid-title' => 'Waxoo ban sumb',
@@ -785,27 +813,32 @@ Li nga doon yorkat tax na nga man a [$1 xool bii diff] su la neexee.",
'revdelete-nologtype-title' => 'Joxewoo benn xeetu yéenekaay',
'revdelete-nologtype-text' => 'Waxoo ci ban xeetu yéenekaay ngay amal jëf jii.',
'revdelete-nologid-title' => 'Duggiitu yéenekaay bi baaxul',
+'revdelete-no-file' => 'Dencukaay bi amul',
+'revdelete-show-file-confirm' => 'Ndax wóor na ne bëgg ngaa wone sumb bees far bu bii dencukaay "<nowiki>$1</nowiki>" bu $2 ci $3?',
+'revdelete-show-file-submit' => 'Waaw',
'revdelete-selected' => "'''{{PLURAL:$2|Sumbum '''$1''' mi falu|Sumbi '''$1''' yi falu}} :'''",
'logdelete-selected' => "'''{{PLURAL:$1|Xew-xewu yéenekaay bi falu|Xew-xewi yéenekaay yi falu}}:'''",
'revdelete-text' => "'''Sumb yi nga far dañuy wéy di feeñ ci jaar-jaaru xët wi, waaye mbind yi ñu ëmb ñépp duñ leen man a gis.'''
-
-Yeneen yorkat yu {{SITENAME}} di nañ man a gis ëmbit yu laqu yi te loppanti leen ci benn jokkalekaay bi, su fekkee defuñu fi ay digal yu leen koy tere man a def.
-Dëgalal ne bëgg nga ko def dëgg-dëgg, te xam nga bu baax limuy jur, te it méngoo na ak [[{{MediaWiki:Policy-url}}| àtte yiñ fi taxawal]].",
+Yeneen yorkat yu {{SITENAME}} di nañ man a gis ëmbit yu laqu yi te loppanti leen ci benn jokkalekaay bi, su fekkee defuñu fi ay digal yu leen koy tere man a def.",
'revdelete-legend' => 'Taxawal ay digal ci sumb yi ñu far:',
'revdelete-hide-text' => 'Nëbb mbindum sumb bi',
+'revdelete-hide-image' => 'Nëbb ëmbiitu dencukaay bi',
'revdelete-hide-name' => 'Nëbb jëf ji ak njeexitam',
'revdelete-hide-comment' => 'Nëbb saraay coppite gi',
'revdelete-hide-user' => 'Nëbb tur walla màkkaanu IP bu soppikat bi',
'revdelete-hide-restricted' => 'Nëbb yii xibaar yorkat yi itam',
'revdelete-suppress' => 'Nëbb xibaar yi yorkat yi tamit.',
-'revdelete-hide-image' => 'Nëbb ëmbiitu dencukaay bi',
'revdelete-unsuppress' => 'Far digal yi ci sumb yees delloowaat',
'revdelete-log' => 'Ngirte :',
'revdelete-submit' => 'Def ko ci sumb bi falu',
'revdelete-logentry' => 'Gisub sumb bi soppiku na ngir [[$1]]',
'logdelete-logentry' => 'Gisub xew-xew bii [[$1]] dañ kaa soppi',
'revdelete-success' => "'''Coppiteg gisub sumb bi, baax na.'''",
+'revdelete-failure' => "'''Gisub sumb bi manoo koo soppi'''
+$1",
'logdelete-success' => "'''Gisub xew-xew bi soppiku na bu baax.'''",
+'logdelete-failure' => "'''Gisub yéenekaay bi manoo koo soppi'''
+$1",
'revdel-restore' => 'Soppi gis bi',
'pagehist' => 'Jaar-jaaru xët wi',
'deletedhist' => 'Jaar-jaaru far gi',
@@ -818,6 +851,18 @@ Dëgalal ne bëgg nga ko def dëgg-dëgg, te xam nga bu baax limuy jur, te it m
'revdelete-unhid' => 'wone $1',
'revdelete-log-message' => '$1 ngir $2 {{PLURAL:$2|sumb|sumb}}',
'logdelete-log-message' => '$1 ngir $2 {{PLURAL:$2|xew-xew|xew-xew}}',
+'revdelete-hide-current' => 'Njuumte ci nëbbug cër bi taarixam doon $2, $1: mooy sumb bi teew.
+Maneesu koo nëbb.',
+'revdelete-show-no-access' => "Njuumte ci woneg cër bi taarixam doon $2, $1: dees koo jàppe niki lees ''digal''.
+Manoo cee jot.",
+'revdelete-modify-no-access' => "Njuumte ci coppiteg cër bi taariixam doon $2, $1: dees koo jàppe niki lees ''digal''.
+Manoo cee dugg.",
+'revdelete-modify-missing' => 'Njuumte ci coppiteg cër bi xammekaayam doon $1: nekkatul ci dàttub njoxe bi!',
+'revdelete-no-change' => "'''Moytul:''' cër bi taarixam doon $2, $1 laajoon nañu ba noppi anami gisam.",
+'revdelete-concurrent-change' => 'Njuumte ci coppiteg cër bi taarixam doon $2, $1: beneen jëfandikukat moo soppi nekkiinam ci jamono ji nga koy jéem a soppi.
+Xoolal jaar-jaar yi.',
+'revdelete-only-restricted' => 'Manoo fare yii cër ci gisu yorkat yi te tànnoo lu bon-bon benn ci yeneen tànneefi far yi.',
+'revdelete-edit-reasonlist' => 'Soppi ngirtey far gi',
# Suppression log
'suppressionlog' => 'Yéenekaayu far yi',
@@ -860,58 +905,8 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
'difference' => '(Wuute gi ci sumb yi)',
'lineno' => 'Rëdd $1 :',
'compareselectedversions' => 'Méngale sumb yi nga fal',
-'visualcomparison' => 'Méngale gu gisu',
-'wikicodecomparison' => 'Méngale gu wikitexte gi',
'editundo' => 'neenal',
'diff-multi' => '({{PLURAL:$1|am sumb mu diggu feeñul|$1 sumb yu diggu feeñuñu}}.)',
-'diff-movedto' => 'mu jëm $1',
-'diff-styleadded' => 'meliin gees yokk $1',
-'diff-added' => 'yokkees na $1',
-'diff-changedto' => 'soppi nañ ko $1',
-'diff-movedoutof' => 'toppale nañ ko ci biti $1',
-'diff-styleremoved' => 'meliin gees far $1',
-'diff-removed' => '$1 far nañ ko',
-'diff-changedfrom' => 'soppi nañ ko mat na $1',
-'diff-src' => 'Gongikuwaay',
-'diff-withdestination' => 'ak bàyyikuwaay $1',
-'diff-with' => '&#32;ak $1 $2',
-'diff-with-additional' => '$1 $2',
-'diff-with-final' => '&#32;ak $1 $2',
-'diff-width' => 'yaatuwaay',
-'diff-height' => 'kawewaay',
-'diff-p' => "ab '''xise'''",
-'diff-blockquote' => "aw '''tudd'''",
-'diff-h1' => "ab '''bopp (tolluwaay 1)'''",
-'diff-h2' => "ab '''bopp (tolluwaay 2)'''",
-'diff-h3' => "ab '''bopp (tolluwaay 3)'''",
-'diff-h4' => "ab '''bopp (tolluwaay 5)'''",
-'diff-h5' => "ab '''bopp (tolluwaay 5)'''",
-'diff-div' => "ab '''séddale'''",
-'diff-ul' => "ab '''lim bu nosoodi'''",
-'diff-ol' => "ab '''lim bu nosu'''",
-'diff-li' => "ab '''limu ay jukki'''",
-'diff-table' => "ab '''alliwa'''",
-'diff-tbody' => "aw '''ëmbitu alliwa'''",
-'diff-tr' => "aw '''rëdd'''",
-'diff-td' => "ag '''kër'''",
-'diff-th' => "ab '''kaw-xët'''",
-'diff-br' => "aw '''dog'''",
-'diff-hr' => "aw '''rëdd wu tëdd'''",
-'diff-code' => "ab '''danku yoonu nosukaay'''",
-'diff-dl' => "ab '''limu ay firi'''",
-'diff-dt' => "ab '''baatu firi'''",
-'diff-dd' => "ab '''firi'''",
-'diff-input' => "ab '''duggit'''",
-'diff-img' => "ab '''nataal'''",
-'diff-a' => "ab '''lëkkalekaay'''",
-'diff-i' => "'''wengal'''",
-'diff-b' => "'''duufal'''",
-'diff-strong' => "'''duufal'''",
-'diff-font' => "'''dayoo mbind'''",
-'diff-big' => "'''réy'''",
-'diff-del' => "'''faru'''",
-'diff-tt' => "'''yaatuwaay wi taxaw'''",
-'diff-strike' => "'''rëddu-digg'''",
# Search results
'searchresults' => 'Ngértey ceet gi',
@@ -920,28 +915,25 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
'searchsubtitle' => 'Yaa ngi seet « \'\'\'[[:$1]]\'\'\' » ([[Special:Prefixindex/$1|wépp xët wu tambalee "$1"]]{{int:pipe-separator}}
[[Special:WhatLinksHere/$1|wépp xët wu lëkkalook "$1"]])',
'searchsubtitleinvalid' => 'Yaa ngi seet « $1 »',
-'noexactmatch' => "'''Amul wenn xët wu tudd « $1 » wu am.''' man ngaa [[:$1|sakk xët wi]].",
-'noexactmatch-nocreate' => "'''Amul wenn xët wu tudd« $1 ».'''",
'toomanymatches' => 'Dafa bari ay yem-yem. Soppil laaj bi.',
'titlematches' => 'Koju xët yi ñoo yam',
'notitlematches' => 'Amul benn koju xët wu yam ak ceet gi',
'textmatches' => 'Mbindu jukki yi ñoo yam.',
'notextmatches' => 'Amul benn mbindu jukki bu yam ak ceet gi.',
-'prevn' => '$1 yi jiitu',
-'nextn' => '$1 yi toftal',
+'prevn' => '{{PLURAL:$1|wi jiitu|$1 yi jiitu}}',
+'nextn' => '{{PLURAL:$1|$1}} yi toftal',
'prevn-title' => '$1 {{PLURAL:$1|ngérte bi jiitu t|ngérte yi jiitu}}',
'nextn-title' => '$1 {{PLURAL:$1|ngérte bi toftal|ngérte yi toftal}}',
'shown-title' => 'Wone $1 {{PLURAL:$1|ngérte|ngérte}} ciw xët',
-'viewprevnext' => 'Xool ($1) ($2) ($3).',
+'viewprevnext' => 'Xool ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Tànneefi ceet',
'searchmenu-exists' => "'''wenn xët wu tudd « [[:$1]] » moo am ci bii wiki'''",
'searchmenu-new' => "'''Sosal xët wii di « [[:$1|$1]] » ci bii wiki !'''",
'searchhelp-url' => 'Help:Ndimbal',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Xoolal xët wi tambalee nii]]',
-'searchprofile-articles' => 'Xëtu ëmbit',
-'searchprofile-articles-and-proj' => 'Xëtu ëmbit ak wu sémb',
-'searchprofile-project' => 'Xëtu sémb bi',
-'searchprofile-images' => 'Ŋara',
+'searchprofile-articles' => 'Xëti ëmbiit',
+'searchprofile-project' => 'Xëti Ndimbal ak Sémb',
+'searchprofile-images' => 'Barixibaarukaay',
'searchprofile-everything' => 'Lépp',
'searchprofile-advanced' => 'Ceet gu xóot',
'searchprofile-articles-tooltip' => 'Seet ci $1',
@@ -949,8 +941,6 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
'searchprofile-images-tooltip' => 'Seeti dencukaay',
'searchprofile-everything-tooltip' => 'Seet fépp (ba ci xëti waxtaanuwaay yi)',
'searchprofile-advanced-tooltip' => 'Seet ci barabi tur yi',
-'prefs-search-nsdefault' => 'Seet te jëfandikoowaale turi barab yiñ tëralnjëkk :',
-'prefs-search-nscustom' => 'Seet ci barabi tur yiñ jëmmal :',
'search-result-size' => '$1 ({{PLURAL:$2|1 baat|$2 baat}})',
'search-result-score' => 'Baaxaay: $1%',
'search-redirect' => '(jubluwaat bu jëm $1)',
@@ -963,11 +953,12 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
'search-mwsuggest-disabled' => 'ñakk xelal',
'search-relatedarticle' => 'Yeneeni ngérte',
'mwsuggest-disable' => 'Doxadil xelal yu AJAX',
+'searcheverything-enable' => 'Seet ci barabi tur yépp',
'searchrelated' => 'yeneeni ngérte',
'searchall' => 'yépp',
'showingresults' => 'Woneg <b>$1</b> {{PLURAL:$1|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
'showingresultsnum' => 'Woneg <b>$3</b> {{PLURAL:$3|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
-'showingresultstotal' => "Fii ci suuf woneg {{PLURAL:$4|ngérte '''$1'''|ngérte '''$1 – $2'''}} ci lu mat '''$3'''",
+'showingresultsheader' => "{{PLURAL:$5|Ngérte '''$1''' bu '''$3'''|Ngértey '''$1 - $2'''}} ngir '''$4'''",
'nonefound' => "<strong>Karmat</strong> : ci yenn barabi tur yi rekk lañuy seet cig tëralnjëkk.
Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti waxtaanuwaay yi, royuwaay yi, añs), walla nga jëfandikoo barabu tur bi la neek",
'search-nonefound' => 'Ceet gi jurul dara.',
@@ -976,83 +967,116 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'powersearch-ns' => 'Seet ci barabi tur yi :',
'powersearch-redir' => 'Limu jubluwaat yi',
'powersearch-field' => 'Seet',
+'powersearch-togglelabel' => 'Fal:',
+'powersearch-toggleall' => 'Yépp',
+'powersearch-togglenone' => 'Dara',
'search-external' => 'Ceet gu biti',
'searchdisabled' => 'Ceet gi ci {{SITENAME}} doxul. Ci négandiku doxal gi, man nga seet ci Google. Jàppal ne, xéj-na ëmbiti {{SITENAME}} gi ci bii seetukaay yeesaluñ leen.',
+# Quickbar
+'qbsettings' => 'Banqaasu jumtukaay',
+'qbsettings-none' => 'Kenn',
+'qbsettings-fixedleft' => 'Cammooñ',
+'qbsettings-fixedright' => 'Ndijoor',
+'qbsettings-floatingleft' => 'Ci cammooñ',
+'qbsettings-floatingright' => 'Ci ndijoor',
+
# Preferences page
-'preferences' => 'Tànneef',
-'mypreferences' => 'Samay tànneef',
-'prefs-edits' => 'Limu coppite yi:',
-'prefsnologin' => 'Duggoo',
-'prefsnologintext' => 'Laaj na nga <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} dugg]</span> ngir soppi say tànneef.',
-'prefsreset' => 'Tànneef yi loppanti nañ leen.',
-'qbsettings' => 'Banqaasu jumtukaay',
-'qbsettings-none' => 'Kenn',
-'qbsettings-fixedleft' => 'Cammooñ',
-'qbsettings-fixedright' => 'Ndijoor',
-'qbsettings-floatingleft' => 'Ci cammooñ',
-'qbsettings-floatingright' => 'Ci ndijoor',
-'changepassword' => 'Coppiteg baatujàll bi',
-'skin' => 'Melokaan',
-'skin-preview' => 'Wonendil',
-'math' => 'Xayma',
-'dateformat' => 'Dayoob taariix bi',
-'datedefault' => 'Benn tànneef',
-'datetime' => 'Taariix ak waxtu',
-'math_failure' => 'Njuumte ci xayma',
-'math_unknown_error' => 'Njuumte li xamuñ ko',
-'math_unknown_function' => 'Solo si xamuñ ko',
-'math_lexing_error' => 'Njuumteg mbindin',
-'math_syntax_error' => 'njuumtey mbindin',
-'prefs-personal' => 'Xibaar yu la ñeel',
-'prefs-rc' => 'Coppite yu mujj',
-'prefs-watchlist' => 'Limu toppte',
-'prefs-watchlist-days' => 'Limu bes yi nga koy ba ci sa limu toppte :',
-'prefs-watchlist-edits' => 'Limu coppite yi ngay wone ci limu toppte gees yaatal gi:',
-'prefs-misc' => 'Yeneeni tànneef',
-'prefs-resetpass' => 'Soppi baatujàll',
-'saveprefs' => 'Wattu',
-'resetprefs' => 'Loppanti tànneef yi',
-'restoreprefs' => 'Delloo say tànneef nañu meloon ca sag mbindu',
-'textboxsize' => 'Boyotu coppite',
-'prefs-edit-boxsize' => 'Dayoo palanteeru coppite bi.',
-'rows' => 'Rëdd:',
-'columns' => 'Kenu :',
-'searchresultshead' => 'Seet',
-'resultsperpage' => 'Limu ngérte ci xët wu ne :',
-'contextlines' => 'Limu rëdd ci tont wu ne :',
-'recentchangesdays' => 'Limu bes yi nga koy wone ci coppite yu mujj yi :',
-'recentchangesdays-max' => '(bi ëpp $1 {{PLURAL:$1|bés|bés}})',
-'recentchangescount' => 'Limu coppite yi ngay wone ci coppite yu mujj yi, xëti jaar-jaar ak dencu yi, cig tëralnjëkk :',
-'savedprefs' => 'Say tànneef wattu nañu leen.',
-'timezonelegend' => 'Waxtuw barab:',
-'timezonetext' => 'Waxtu yi dox ci diggante waxtu gu sa barab ak waxtu gu joxekaay bi (UTC).',
-'localtime' => 'Waxtuw barab:',
-'timezoneuseserverdefault' => 'Jëfandikoo waxtuw joxekaay bi',
-'timezoneuseoffset' => 'Yeneen (waxaaleel wuute gi)',
-'timezoneoffset' => 'Wuute¹ :',
-'servertime' => 'Waxtu joxekaay bi :',
-'guesstimezone' => 'Jëfandikoo waxtuw sa joowukaay',
-'timezoneregion-africa' => 'Afrig',
-'timezoneregion-america' => 'Aamerig',
-'timezoneregion-antarctica' => 'Goxub Dottub bëj-saalum',
-'timezoneregion-arctic' => 'Goxub Dottub bëj-gànnaar',
-'timezoneregion-asia' => 'Asi',
-'timezoneregion-atlantic' => 'Mbàmbulaan gu Atlas',
-'timezoneregion-australia' => 'Óstraali',
-'timezoneregion-europe' => 'Tugal',
-'timezoneregion-indian' => 'Mbàmbulaan gu End',
-'timezoneregion-pacific' => 'Mbàmbulaan gu Dal',
-'allowemail' => 'Joxeel ndigël ngir yeneeni jëfandikukat man laa yónne bataaxal',
-'prefs-searchoptions' => 'Tànneefi Ceet',
-'prefs-namespaces' => 'dig-digalub tur',
-'defaultns' => 'Seet cig tëralnjëkk ci dig-digalu tur yi:',
-'default' => 'wàccaale',
-'prefs-custom-css' => 'CSS yees jëmmal',
-'prefs-custom-js' => 'JavaScript yees jëmmal',
+'preferences' => 'Tànneef',
+'mypreferences' => 'Samay tànneef',
+'prefs-edits' => 'Limu coppite yi:',
+'prefsnologin' => 'Duggoo',
+'prefsnologintext' => 'Laaj na nga <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} dugg]</span> ngir soppi say tànneef.',
+'changepassword' => 'Coppiteg baatujàll bi',
+'prefs-skin' => 'Melokaan',
+'skin-preview' => 'Wonendil',
+'prefs-math' => 'Xayma',
+'datedefault' => 'Benn tànneef',
+'prefs-datetime' => 'Taariix ak waxtu',
+'prefs-personal' => 'Xibaar yu la ñeel',
+'prefs-rc' => 'Coppite yu mujj',
+'prefs-watchlist' => 'Limu toppte',
+'prefs-watchlist-days' => 'Limu bes yi nga koy ba ci sa limu toppte :',
+'prefs-watchlist-days-max' => '(Du weesu 7 fan)',
+'prefs-watchlist-edits' => 'Limu coppite yi ngay wone ci limu toppte gees yaatal gi:',
+'prefs-misc' => 'Yeneeni tànneef',
+'prefs-resetpass' => 'Soppi baatujàll',
+'prefs-email' => 'Tànneefi m-bataaxal',
+'saveprefs' => 'Wattu',
+'resetprefs' => 'Loppanti tànneef yi',
+'restoreprefs' => 'Delloo say tànneef nañu meloon ca sag mbindu',
+'prefs-editing' => 'Boyotu coppite',
+'prefs-edit-boxsize' => 'Dayoo palanteeru coppite bi.',
+'rows' => 'Rëdd:',
+'columns' => 'Kenu :',
+'searchresultshead' => 'Seet',
+'resultsperpage' => 'Limu ngérte ci xët wu ne :',
+'contextlines' => 'Limu rëdd ci tont wu ne :',
+'recentchangesdays' => 'Limu bes yi nga koy wone ci coppite yu mujj yi :',
+'recentchangesdays-max' => '(bi ëpp $1 {{PLURAL:$1|bés|bés}})',
+'recentchangescount' => 'Limu coppite yi ngay wone ci coppite yu mujj yi cig wàccaale:',
+'prefs-help-recentchangescount' => 'Dafa ëmb coppite yu mujj, xëti jaar-jaar yeek yéenekaay.',
+'savedprefs' => 'Say tànneef wattu nañu leen.',
+'timezonelegend' => 'Waxtuw barab:',
+'localtime' => 'Waxtuw barab:',
+'timezoneuseserverdefault' => 'Jëfandikoo waxtuw joxekaay bi',
+'timezoneuseoffset' => 'Yeneen (waxaaleel wuute gi)',
+'timezoneoffset' => 'Wuute¹ :',
+'servertime' => 'Waxtu joxekaay bi :',
+'guesstimezone' => 'Jëfandikoo waxtuw sa joowukaay',
+'timezoneregion-africa' => 'Afrig',
+'timezoneregion-america' => 'Aamerig',
+'timezoneregion-antarctica' => 'Goxub Dottub bëj-saalum',
+'timezoneregion-arctic' => 'Goxub Dottub bëj-gànnaar',
+'timezoneregion-asia' => 'Asi',
+'timezoneregion-atlantic' => 'Mbàmbulaan gu Atlas',
+'timezoneregion-australia' => 'Óstraali',
+'timezoneregion-europe' => 'Tugal',
+'timezoneregion-indian' => 'Mbàmbulaan gu End',
+'timezoneregion-pacific' => 'Mbàmbulaan gu Dal',
+'allowemail' => 'Joxeel ndigël ngir yeneeni jëfandikukat man laa yónne bataaxal',
+'prefs-searchoptions' => 'Tànneefi Ceet',
+'prefs-namespaces' => 'dig-digalub tur',
+'defaultns' => 'Walla nga seet ci barabi tur yi:',
+'default' => 'wàccaale',
+'prefs-files' => 'Dencukaay',
+'prefs-custom-css' => 'CSS yees jëmmal',
+'prefs-custom-js' => 'JavaScript yees jëmmal',
+'prefs-reset-intro' => 'Man ngaa jëfandikoo wii xët ngir delloowaat coppitey say tànneef delloo leen ci yi dal bi wàccaale. Doo ko man a neenal.',
+'prefs-emailconfirm-label' => 'Dëggalug sa m-bataaxal :',
+'prefs-textboxsize' => 'Dayoob palanteerub coppite bi',
+'youremail' => 'Sa màkkaanub m-bataaxal :',
+'username' => 'Turu jëfandikukat :',
+'uid' => 'Limu Jëfandikukat :',
+'prefs-memberingroups' => 'Céru {{PLURAL:$1|mbooloo|mbooloo yu}} :',
+'prefs-registration' => 'Taariixu sag mbindu :',
+'yourrealname' => 'Sa tur dëgg*',
+'yourlanguage' => 'Làkk :',
+'yournick' => 'Xaatim ngir say waxtaan :',
+'badsig' => 'Xaatim gu ñumm gi baaxul; saytul sa yoonub HTML.',
+'badsiglength' => 'Sa xaatim daa gudd lool, guddaay bi warul romb {{PLURAL:màndarga|$1 màndarga}}.',
+'gender-unknown' => 'Waxeesu ko',
+'gender-male' => 'Góor',
+'gender-female' => 'Jigéen',
+'email' => 'Màkkaanub m-bataaxal',
+'prefs-help-realname' => 'Sa tur dëgg du lu manuta ñakk: soo ko ci bëgge duggal it dañ koy jëfandikoo rek ngir moomale la say cëru.',
+'prefs-help-email' => 'Sa màkkaanub m-bataaxal du lu manuta ñakk: day tax rek ñu man laa yónne ab bataaxal jaare ko ci sa xëtu jëfandikukat walla yónne la baatujàll bu bees soo ko fattee, te du tax sa màkkaan gisu.',
+'prefs-help-email-required' => 'Laaj na ab màkkaanub m-bataaxal',
+'prefs-info' => 'Xibaaari dàtt',
+'prefs-i18n' => 'Digganteréewal',
+'prefs-signature' => 'Xaatim',
+'prefs-dateformat' => 'Melokaanu taariix',
+'prefs-timeoffset' => 'Wuutey waxtu',
+'prefs-advancedediting' => 'Tànneef yu xóot',
+'prefs-advancedrc' => 'Tànneef yu xóot',
+'prefs-advancedrendering' => 'Tànneef yu xóot',
+'prefs-advancedsearchoptions' => 'Tànneef yu xóot',
+'prefs-advancedwatchlist' => 'Tànneef yu xóot',
+'prefs-display' => 'Tànneefi wonewiin',
+'prefs-diffs' => 'Wuute',
# User rights
-'userrights' => 'Yorug sañ-sañu aji-sos', # Not used as normal message but as header for the special page itself
+'userrights' => 'Yorug sañ-sañu aji-sos',
'userrights-lookup-user' => 'Yorug mboolooy jëfandikukat',
'userrights-user-editname' => 'Dugal ab turu jëfandikukat :',
'editusergroup' => 'Coppiteg mboolooy Jëfandikukat',
@@ -1134,6 +1158,8 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'right-editprotected' => 'Soppi xët yees aar',
'right-editinterface' => 'Soppi jokkalekaayu jëfandikukat bi',
'right-editusercssjs' => 'Soppi dencukaay yu CSS ak JS yu yeneen jëfandikukat',
+'right-editusercss' => 'Soppi dencukaay yu CSS yu yeneen jëfandikukat',
+'right-edituserjs' => 'Soppi dencukaay yu JS yu yeneen jëfandikukat',
'right-rollback' => 'Loppanti gu gaaw gu coppite yub jëfandikukat bu mujj ci wenn xët wi',
'right-markbotedits' => 'Fésal coppite yi niki yu ab bot def',
'right-noratelimit' => 'Bu digal ci jëf am njeexiit ci yaw',
@@ -1149,6 +1175,7 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'right-siteadmin' => 'Caabi walla caabeedi dàttub njoxe bi',
'right-reset-passwords' => 'Soppi baatujàllub ay jëfandikukat',
'right-override-export-depth' => 'génne ay xët yu ëmbi xët yu lëkkaloo ba-ci xóotaay bu tolluwaayam àgg 5',
+'right-versiondetail' => 'Wone xamle yu matale ci sumbi tëriin wi',
# User rights log
'rightslog' => 'Sañ-sañi jëfandikukat',
@@ -1196,6 +1223,14 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'recentchanges-legend' => 'tànneefi coppite yu mujj',
'recentchangestext' => 'Toppal ci wii xët coppite yu mujj ci {{SITENAME}}.',
'recentchanges-feed-description' => 'Toppal coppite yu mujj yu bii wiki.',
+'recentchanges-legend-newpage' => '$1 - xët wu bees',
+'recentchanges-label-newpage' => 'Coppite gi sos na xët wu bees',
+'recentchanges-legend-minor' => '$1 - Coppite yu néewal',
+'recentchanges-label-minor' => 'Coppite gu néewal la',
+'recentchanges-legend-bot' => '$1 - coppiteb bot',
+'recentchanges-label-bot' => 'Coppite bu ab bot def',
+'recentchanges-legend-unpatrolled' => '$1 - coppite bees fugluwul',
+'recentchanges-label-unpatrolled' => 'Coppite bii kenn fugloogu ko',
'rcnote' => '{{PLURAL:$1|Lii mooy coppite bu mujj bees def|Yii ñooy coppite yu mujj yees def}} ci {{PLURAL:$2|bés bu mujj bi|<b>$2</b> bés yu mujj yi}}; njoxe yi ñoo ngi leen yeesal $5 ci $4.',
'rcnotefrom' => "Yii ñooy coppite yi dalee '''$2''' (ba '''$1''').",
'rclistfrom' => 'Wone coppite yi mujj yi dooree $1.',
@@ -1213,7 +1248,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'minoreditletter' => 'm',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'sectionlink' => '→',
'number_of_watching_users_pageview' => '[{{PLURAL:$1|jëfandikukat moo koy topp|$1 jëfandikukat ñoo koy topp}}]',
'rc_categories' => 'Digalub wàll yi (xaajale leen ak « "|" »)',
'rc_categories_any' => 'Yépp',
@@ -1224,6 +1258,8 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
# Recent changes linked
'recentchangeslinked' => 'Coppite yi ko ñeel',
+'recentchangeslinked-feed' => 'Coppite yi ko ñeel',
+'recentchangeslinked-toolbox' => 'Coppite yi ko ñeel',
'recentchangeslinked-title' => 'Coppite yi ñeel $1',
'recentchangeslinked-backlink' => '← $1',
'recentchangeslinked-noresult' => 'Benn coppite amul ci xët yi mu lëkkalool ci diir bi nga wax.',
@@ -1234,7 +1270,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
# Upload
'upload' => 'Yeb ab dencukaay',
'uploadbtn' => 'Yeb ŋara wi',
-'reupload' => 'Yebaat ko',
'uploadnologin' => 'Duggoo',
'uploadnologintext' => 'Faaw nga [[Special:UserLogin|dugg]] ngir man a yebi ŋara.',
'upload_directory_missing' => 'Wayndareb yeb bu ($1) nekku fi te joxekaayub web bi manu koo sos.',
@@ -1277,7 +1312,6 @@ Saytul '''<tt>[[:$1]]</tt>''' su dee wóoru la ne bëgg nga koo soppi.
* Turu dencukaay bi ngay yeb : '''<tt>[[:$1]]</tt>'''
* Turu dencukaay bi fi am : '''<tt>[[:$2]]</tt>'''
Tànnal weneen tur.",
-'fileexists-thumb' => "<center>'''dencukaay bi am na fi'''</center>",
'fileexists-forbidden' => 'Am na ŋara wu ni tudd ba noppi te mano koo war; Dellul ginnaaw ngir yeb ŋara wi ak weneen tur
[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'Am na ŋara wu ni tudd ba noppi ci dencuwaayu ŋara bi ñuy bokk; Dellul ginnaaw ngir yeb ŋara wi ak weneen tur. [[File:$1|thumb|center|$1]]',
@@ -1313,6 +1347,7 @@ Dila ñaan nga tànn tur wuy faramfacce dencukaay bi.",
'listfiles_count' => 'Sumb',
# File description page
+'file-anchor-link' => 'Dencukaay',
'filehist' => 'Jaar-jaaru dencukaay bi',
'filehist-help' => 'Cuqal cib taariix/waxtu ngir gis ni dencukaay bi meloon ca jamono jooju.',
'filehist-deleteall' => 'Far lépp',
@@ -1321,10 +1356,12 @@ Dila ñaan nga tànn tur wuy faramfacce dencukaay bi.",
'filehist-current' => 'teew',
'filehist-datetime' => 'Taariix ak Waxtu',
'filehist-thumb' => 'Tuutal',
+'filehist-thumbtext' => 'Tuutal gu sumb bu $1',
'filehist-user' => 'Jëfandikukat',
'filehist-dimensions' => 'Dayoo',
'filehist-filesize' => 'Dayoo ŋara wi',
'filehist-comment' => 'Saraa',
+'filehist-missing' => 'Dencukaay bi fi nekkul',
'imagelinks' => 'Xët yi am bii dencukaay',
'linkstoimage' => '{{PLURAL:$1|Xët wii ci suuf ëmb na|$1 xët yii ci suuf ëmb nañu}} bii dencukaay:',
'linkstoimage-more' => 'Lu ëpp $1 {{PLURAL:$1|xët lëkkale nañu leen|xët lëkkale nañu leen}} ak bii dencukaay.
@@ -1334,15 +1371,16 @@ Ab [[Special:WhatLinksHere/$2|lim bu mat]] jàppandi na.',
'morelinkstoimage' => 'Xool [[Special:WhatLinksHere/$1|yeneeni lëkkalekaay]] yuy jëme ci bii dencukaay.',
'redirectstofile' => '{{PLURAL:$1|dencukaay bii di toftal ab|$1 dencukaay yii di toftal ay}} jubluwaat {{PLURAL:$1|la buy|lañu yuy}} jëme ci dencukaay bii:',
'duplicatesoffile' => '{{PLURAL:$1|Dencukaay bii|$1 Dencukaay yii}} di toftal {{PLURAL:$1|ab duppitu|ay duppitu}} bii {{PLURAL:$2|la|lañu}} ([[Special:FileDuplicateSearch/$2|yeneeni faramfacce]])::',
-'sharedupload' => 'Dencukaay bii $1 la bàyyikoo, te man nañu koo jëfandikoo ci yeneen sémb.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'Xoolal $1 ngir yeneeni xamle.',
-'shareduploadwiki-desc' => 'Faramfacce gi feeñ fii ci suuf ci $1 la bàyyikoo.',
-'shareduploadwiki-linktext' => 'xëtu faramfacce wu ŋara wi',
-'noimage' => 'Amul wenn ŋara wu ni tudd wu am, waaye man ngaa $1.',
-'noimage-linktext' => 'yeb benn',
+'sharedupload' => 'Dencukaay bii $1 la bàyyikoo, te man nañu koo jëfandikoo ci yeneen sémb.',
+'sharedupload-desc-there' => 'Dencukaay bii $1 la bàyyikoo te man nañu koo jëfandikoo ci yeneen sémb.
+Saytul [$2 xëtu faramfaccewaayu dencukaay bii] ngir yeneeni xibaar.',
+'sharedupload-desc-here' => 'Dencukaay bii $1 la bàyyikoo te man nañu koo jëfandikoo ci yeneen sémb.
+Faramfacce gi ci [$2 xëtu faramfaccewaayu xët wi] lañuy wone ci suuf .',
+'filepage-nofile' => 'Amul benn dencukaay bu ni tudd.',
+'filepage-nofile-link' => 'Amul benn dencukaay bu ni tudd, waaye man nga koo [$1 yeb]',
'uploadnewversion-linktext' => 'Yeb sumb bu bees bu bii dencukaay',
-'shared-repo-from' => '$1', # $1 is the repository name
-'shared-repo' => 'ab dencu bees bokk', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '$1',
+'shared-repo' => 'ab dencu bees bokk',
# File reversion
'filerevert' => 'Loppanti $1',
@@ -1395,7 +1433,7 @@ Bul fattee seet baxam amul yeneen lëkkalekaay yu lay jëmale ci royuwaay yi bal
# Random page
'randompage' => 'Aw xët ci mbetteel',
-'randompage-nopages' => 'Amul wenn xët wu barabu turam doon « $1 ».',
+'randompage-nopages' => 'Amul xët {{PLURAL:$2| wu barabu turam| yu seen barabu tur}} doon: $1.',
# Random redirect
'randomredirect' => 'Jubluwaat cig mbetteel',
@@ -1407,6 +1445,7 @@ Bul fattee seet baxam amul yeneen lëkkalekaay yu lay jëmale ci royuwaay yi bal
'statistics-header-edits' => 'Limbari ñeel coppite yi',
'statistics-header-views' => 'Limbari ñeel saytu yi',
'statistics-header-users' => 'Limbari ñeel jëfandikukat yi',
+'statistics-header-hooks' => 'Yeneen limbari',
'statistics-articles' => 'Xëti ëmbiit',
'statistics-pages' => 'Xët',
'statistics-pages-desc' => 'Xët yépp yi ci wiki bi, xëti waxtaanuwaay yi, jubluwaat yi, añs.',
@@ -1435,8 +1474,8 @@ Léegi mi ngi jublu [[$2]].',
'brokenredirects' => 'Jubluwaat yu yaqu',
'brokenredirectstext' => 'Jubluwaat yii dañuy jëmee ciy xët yu amul :',
-'brokenredirects-edit' => '(Soppi)',
-'brokenredirects-delete' => '(dindi)',
+'brokenredirects-edit' => 'Soppi',
+'brokenredirects-delete' => 'far',
'withoutinterwiki' => 'Xët yi amul lëkkalekaay diggantey-làkk',
'withoutinterwiki-summary' => 'Xët yii amuñu lëkkalekaay yuy jëme ci yeneeni làkk:',
@@ -1539,16 +1578,17 @@ Man ngaa wàññi wone gi soo tànnee ab yéenekaay, turu jëfandikukat, walla x
# Special:Categories
'categories' => 'Wàll',
-'categoriespagetext' => 'Wàll yii di toftal dañoo ëmb ay xët walla ay ŋaray xibaarukaay.
+'categoriespagetext' => '{{PLURAL:$1|Wàll wiy|Wàll yiy}} toftal {{PLURAL:$1|dafa ëmb |dañoo ëmb}} ay xët walla xibaarukaay.
[[Special:UnusedCategories|Wáll yu këmm]] yi wonewuñu leen fi.
-Xoola itam [[Special:WantedCategories|wáll yi ñuy laaj]].',
+Xoolal itam [[Special:WantedCategories|wàll yi ñuy laaj]].',
'categoriesfrom' => 'Wone wàll yi dalee ko ci :',
'special-categories-sort-count' => 'nosee lim',
'special-categories-sort-abc' => 'nosee abajada',
# Special:DeletedContributions
-'deletedcontributions' => 'Cëru yees far',
-'deletedcontributions-title' => 'Cëru yees far',
+'deletedcontributions' => 'Cëru yees far',
+'deletedcontributions-title' => 'Cëru yees far',
+'sp-deletedcontributions-contribs' => 'cëru',
# Special:LinkSearch
'linksearch' => 'Lëkkalekaay yu biti',
@@ -1561,6 +1601,13 @@ Xoola itam [[Special:WantedCategories|wáll yi ñuy laaj]].',
'listusersfrom' => 'Wone jëfandikukat yi doore ko ci:',
'listusers-submit' => 'Wone',
'listusers-noresult' => 'Benn jëfandikukat giseesu ko',
+'listusers-blocked' => '(téyees)',
+
+# Special:ActiveUsers
+'activeusers' => 'Limu jëfandikukat yu yëngu',
+'activeusers-count' => '$1 coppite {{PLURAL:$2|bu mujj|yu mujj}}',
+'activeusers-from' => 'Wone jëfandikukat yi dalee ko ci:',
+'activeusers-noresult' => 'Benn jëfandikukat giseesu ko',
# Special:Log/newusers
'newuserlogpage' => 'Jëfandikukat yu yees yi',
@@ -1571,18 +1618,23 @@ Xoola itam [[Special:WantedCategories|wáll yi ñuy laaj]].',
'newuserlog-autocreate-entry' => 'Sáq mi sos na boppam',
# Special:ListGroupRights
-'listgrouprights' => 'Sañ-sañi mbooloom jëfandikukat mi',
-'listgrouprights-summary' => 'Lii di toftal mooy limu mboolooy jëfandikukat yi ne ci bii wiki, ak sañ-sañ yi ñu leen féetaleel.
+'listgrouprights' => 'Sañ-sañi mbooloom jëfandikukat mi',
+'listgrouprights-summary' => 'Lii di toftal mooy limu mboolooy jëfandikukat yi ne ci bii wiki, ak sañ-sañ yi ñu leen féetaleel.
Man ngaa fee gis itam [[{{MediaWiki:Listgrouprights-helppage}}|yeneen xibaar]] ñeel sañ-sañi mbooloo mu ci nekk.',
-'listgrouprights-group' => 'Mbooloo',
-'listgrouprights-rights' => 'Sañ-sañ',
-'listgrouprights-helppage' => 'Help:Sañ-sañi mbooloo yi',
-'listgrouprights-members' => '(limu cër yi)',
-'listgrouprights-right-display' => '$1 ($2)',
-'listgrouprights-addgroup' => 'Man ngaa yokk {{PLURAL:$2|mbooloo mi|mbooloo yi}} : $1',
-'listgrouprights-removegroup' => 'Man ngaa far {{PLURAL:$2|mbooloo mi|mbooloo yi}}: $1',
-'listgrouprights-addgroup-all' => 'Man ngaa yokk ci mbooloo yépp',
-'listgrouprights-removegroup-all' => 'Man ngaa faree ci mbooloo yépp',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Sañ-sañ yees joxe</span>
+* <span class="listgrouprights-revoked">Sañ-sañ yees nangu</span>',
+'listgrouprights-group' => 'Mbooloo',
+'listgrouprights-rights' => 'Sañ-sañ',
+'listgrouprights-helppage' => 'Help:Sañ-sañi mbooloo yi',
+'listgrouprights-members' => '(limu cër yi)',
+'listgrouprights-addgroup' => 'Man ngaa yokk {{PLURAL:$2|mbooloo mi|mbooloo yi}} : $1',
+'listgrouprights-removegroup' => 'Man ngaa far {{PLURAL:$2|mbooloo mi|mbooloo yi}}: $1',
+'listgrouprights-addgroup-all' => 'Man ngaa yokk ci mbooloo yépp',
+'listgrouprights-removegroup-all' => 'Man ngaa faree ci mbooloo yépp',
+'listgrouprights-addgroup-self' => 'Man ngaa yokk {{PLURAL:$2|mbooloo mi|mbooloo yi}} ci sa sàq : $1',
+'listgrouprights-removegroup-self' => 'Man ngaa far {{PLURAL:$2|mbooloo mi|mbooloo yi}} ci sa sàq: $1',
+'listgrouprights-addgroup-self-all' => 'Man ngaa yokk mbooloo yépp ci sa sàq',
+'listgrouprights-removegroup-self-all' => 'Man ngaa far mbooloo yépp ci sa sàq',
# E-mail user
'mailnologin' => 'Amul benn mákkaan boo man a yónne bataaxal bi',
@@ -1692,8 +1744,8 @@ Ki def coppite gi mooy Kenn ki masa cëru ci xët wii.',
am na keneen ku jota soppi walla loppanti xët wi.
Ki mujje soppi xët wi mooy [[User:$3|$3]] ([[User talk:$3|Waxtaan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Tënkug coppite gi mooy: « ''$1'' ».", # only shown if there is an edit comment
-'revertpage' => 'Loppantig coppite gu [[Special:Contributions/$2|$2]] ([[User talk:$2|Waxtaan]]) dello ko ci sumb mu [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "Tënkug coppite gi mooy: « ''$1'' ».",
+'revertpage' => 'Loppantig coppite gu [[Special:Contributions/$2|$2]] ([[User talk:$2|Waxtaan]]) dello ko ci sumb mu [[User:$1|$1]]',
'rollback-success' => 'Ki loppanti mooy $1 ;
Ki ko dello ci sumb mu mujj mi mooy $2.',
'sessionfailure' => 'Dafa mel ne sa dugg gi am na ay tolof-tolof ;
@@ -1716,7 +1768,6 @@ nemmeekul [[Special:ProtectedPages|limu xët yi ñu aar]] ngir gis ab lim ci xë
'protectexpiry' => 'Jeexintal :',
'protect_expiry_invalid' => 'Waxtub njeextal bi baaxul.',
'protect_expiry_old' => 'Waxtub njeextal bi weesu na.',
-'protect-unchain' => 'Caabeedi sañal tuddewaat yi',
'protect-text' => "Fii man nga fee gise ak soppi tolluwaayu kaaraange gu wii xët '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "Manoo soppi tolluwaayu kaaraange gi su ñu la téyee.
Nii la xët wi tëdde '''$1''' :",
@@ -1759,6 +1810,7 @@ Nii-nii kocc-koccalu xët wii ñooy '''$1''':",
'undelete-nodiff' => 'Giseesul benn sumb bu weesu.',
'undeletebtn' => 'Delloowaat',
'undeletelink' => 'Wone/delloowaat',
+'undeleteviewlink' => 'wone',
'undeletereset' => 'Neenal',
'undeleteinvert' => 'Jallarbi fal gi',
'undeletecomment' => 'Tënk :',
@@ -1797,7 +1849,7 @@ $1',
'contributions-title' => 'Cëru yu jëfandikukat bii di $1',
'mycontris' => 'Samay cëru',
'contribsub2' => 'Ngir $1 ($2)',
-'nocontribs' => 'Amul benn coppite bu melokaanoo nii bu ñu gis.', # Optional parameter: $1 is the user name
+'nocontribs' => 'Amul benn coppite bu melokaanoo nii bu ñu gis.',
'uctop' => '(bi mujj)',
'month' => 'Tambali ci weeru (ak yi jiitu) :',
'year' => 'Tambali ci atum (ak yi jiitu) :',
@@ -1806,7 +1858,10 @@ $1',
'sp-contributions-newbies-sub' => 'yu jëfandikukat yu yees yi',
'sp-contributions-newbies-title' => 'Cëru yu jëfandikukat yu yees yi',
'sp-contributions-blocklog' => 'Jaar-jaaru téye yi',
+'sp-contributions-deleted' => 'cëru yi ñu far',
'sp-contributions-logs' => 'Yéenekaay',
+'sp-contributions-talk' => 'waxtaan',
+'sp-contributions-userrights' => 'Yorug sañ-sañi jëfandikukat yi',
'sp-contributions-search' => 'Seet ay cëru',
'sp-contributions-username' => 'Makkaanu IP walla turu jëfandikukat :',
'sp-contributions-submit' => 'Seet',
@@ -1853,7 +1908,7 @@ $1',
'ipbenableautoblock' => 'Téye ci saa si màkkaanu IP bi mu mujje jëfandikoo, ak yeneen yi muy jëfandikoo-ji ngir amali coppite',
'ipbsubmit' => 'Téye bii jëfandikukat',
'ipbother' => 'Beneen diir:',
-'ipboptions' => '2 waxtu:2 hours,1 fan:1 day,3 fan:3 days,1 ayubés:1 week,2 ayubés:2 weeks,1 weer:1 month,3 weer:3 months,6 weer:6 months,1 at:1 year,ba-faaw:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 waxtu:2 hours,1 fan:1 day,3 fan:3 days,1 ayubés:1 week,2 ayubés:2 weeks,1 weer:1 month,3 weer:3 months,6 weer:6 months,1 at:1 year,ba-faaw:infinite',
'ipbotheroption' => 'beneen',
'ipbotherreason' => 'Yeneeni ngirte/faramfacce:',
'ipbhidename' => 'Nëbb turu jëfandikukat bi ci coppite yeek lim yi',
@@ -1883,6 +1938,7 @@ Xoolal [[Special:IPBlockList|limu IP yees téye]] ngir gis ñees téye ñépp.',
'ipblocklist-submit' => 'Ceet',
'blocklistline' => '$1, $2 moo téye $3 ($4)',
'infiniteblock' => 'Ba-faww',
+'expiringblock' => 'jeex $1 ci $2',
'anononlyblock' => 'Alaxam rek',
'noautoblockblock' => 'Téye gu boppu doxadi na',
'createaccountblock' => 'Téyeg sosug sàq mi',
@@ -1896,7 +1952,6 @@ Xoolal [[Special:IPBlockList|limu IP yees téye]] ngir gis ñees téye ñépp.',
'contribslink' => 'cëru',
'autoblocker' => 'Dañ la téye ndax sa màkkanu IP « $1 » moo ko mujje jëfandikoo. Li waral téyeg $1 mooy ne : « $2 ».',
'blocklogpage' => 'Jaar-jaaru téye yi',
-'blocklog-fulllog' => 'Yéenekaay bu matale ci téye yi',
'blocklogentry' => 'moo téye « [[$1]] » - ci diirub : $2 $3',
'reblock-logentry' => 'moo soppi anami téye gu [[$1]] ak diirub njeextal bu $2 $3',
'blocklogtext' => 'Lii ab lim la ci téye ak téyedi yu jëfandikukat yi. Màkkaani IP yi ñu téye cig boppal limuñu leen fi. yëral [[Special:IPBlockList|limu jëfandikukat yiñ téye]] ngi gis ñi ñu téye nii-nii.',
@@ -1978,7 +2033,7 @@ Ci yii anam, faww nga tuddewaat walla yokk wii xëtu waxtaanuwaay ak sa loxo, su
'move-watch' => 'Topp xët wii',
'movepagebtn' => 'Tuddewaat xët wi',
'pagemovedsub' => 'Tuddewaat gi antu na',
-'movepage-moved' => "'''« $1 »''' lañu tuddewaat '''« $2 »'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''« $1 »''' lañu tuddewaat '''« $2 »'''",
'movepage-moved-redirect' => 'Sosees na ab jubluwaat',
'movepage-moved-noredirect' => 'Sosug ab jubluwaat far nañu ko.',
'articleexists' => 'Am na ba noppi ab jukki bu am bii koj, walla koj bi nga tànn baaxul. tànnal bennen.',
@@ -2022,10 +2077,9 @@ Manoo tudewaat aw xët ci wenn tur wi.',
'export-addcat' => 'Yokk',
# Namespace 8 related
-'allmessagesname' => 'Turu tool bi',
-'allmessagescurrent' => 'Bataaxal bi fi nekk',
-'allmessagestext' => "Lii mo'y limu bataaxal yëpp yi am ci biir MediaWiki",
-'allmessagesmodified' => 'Wone coppite yi rek',
+'allmessagesname' => 'Turu tool bi',
+'allmessagescurrent' => 'Bataaxal bi fi nekk',
+'allmessagestext' => "Lii mo'y limu bataaxal yëpp yi am ci biir MediaWiki",
# Thumbnails
'thumbnail-more' => 'Ngandal',
@@ -2057,6 +2111,7 @@ Manoo tudewaat aw xët ci wenn tur wi.',
'tooltip-search-fulltext' => 'Seet xët yi ëmb kàddu gi',
'tooltip-p-logo' => 'Xët wu njëkk',
'tooltip-n-mainpage' => 'Nemmeeku xët wu njëkk wi',
+'tooltip-n-mainpage-description' => 'Nemmeku xët wu njëkk wi',
'tooltip-n-portal' => 'Ngir xam dara ci mbiri sémb bi, noo ci mana jàppe',
'tooltip-n-currentevents' => 'Xibaar ci xew-xew yu teew yi',
'tooltip-n-recentchanges' => 'Limu coppite yi mujj ci wiki bi',
@@ -2124,7 +2179,7 @@ Dafay tax nga man a bind ngirte li ci boyotu tënk bi.',
# Attribution
'anonymous' => 'Benn walla ay jëfandikukat yu binduwul yu {{SITENAME}}',
'siteuser' => '$1, Jëfandikukatu {{SITENAME}}',
-'lastmodifiedatby' => '$3 moo mujje soppi xët wi ci $1, ci $2.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => '$3 moo mujje soppi xët wi ci $1, ci $2.',
'othercontribs' => 'Mi ngi dàttu ci liggéeyu $1.',
'others' => 'yeneen',
'siteusers' => '$1, Jëfandikukat yu {{SITENAME}}',
@@ -2139,13 +2194,17 @@ Dafay tax nga man a bind ngirte li ci boyotu tënk bi.',
# Math options
'mw_math_html' => 'HTML su manee ne, lu ko moy PNG',
+# Math errors
+'math_failure' => 'Njuumte ci xayma',
+'math_unknown_error' => 'Njuumte li xamuñ ko',
+'math_unknown_function' => 'Solo si xamuñ ko',
+'math_lexing_error' => 'Njuumteg mbindin',
+'math_syntax_error' => 'njuumtey mbindin',
+
# Browsing diffs
'previousdiff' => '← Coppite yi gën a yàgg',
'nextdiff' => 'Coppite yi mujj →',
-# Visual comparison
-'visual-comparison' => 'Méngale gu gisu',
-
# Media information
'file-info' => 'Réyaayu file bi : $1, type MIME : $2',
'file-info-size' => '($1 × $2 pixels, réyaayu file bi : $3, type MIME : $4)',
@@ -2175,7 +2234,7 @@ Lëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maa
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Yaatuwaay',
diff --git a/languages/messages/MessagesWuu.php b/languages/messages/MessagesWuu.php
index a9df5704..3ee50d3e 100644
--- a/languages/messages/MessagesWuu.php
+++ b/languages/messages/MessagesWuu.php
@@ -44,6 +44,7 @@ $messages = array(
'tog-enotifminoredits' => '页面有细微修改个辰光也发邮件通知我',
'tog-enotifrevealaddr' => '来拉通知邮件列表里向显示我个邮件地址',
'tog-shownumberswatching' => '显示监控此页个用户数目',
+'tog-oldsig' => '现在签名个预览:',
'tog-fancysig' => '拿签名当成wiki文本(弗产生自动链接)',
'tog-externaleditor' => '默认使用外部编辑器(仅供高手使用,需要来许电脑上作出特殊设置)',
'tog-externaldiff' => '默认使用外部分析(仅供高手使用,需要来许电脑上作出特殊设置)',
@@ -65,6 +66,13 @@ $messages = array(
'underline-never' => '从来弗',
'underline-default' => '浏览器默认',
+# Font style option in Special:Preferences
+'editfont-style' => '编辑区字体样式:',
+'editfont-default' => '浏览器默认',
+'editfont-monospace' => '等宽字体',
+'editfont-sansserif' => 'Sans-serif字体',
+'editfont-serif' => 'Serif字体',
+
# Dates
'sunday' => '礼拜天',
'monday' => '礼拜一',
@@ -124,7 +132,7 @@ $messages = array(
'category-media-header' => '"$1"分类中里向个媒体',
'category-empty' => "''迭只分类里向还弗曾包含任何文章咾媒体。''",
'hidden-categories' => '$1隐藏分类',
-'hidden-category-category' => '隐藏分类', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隐藏分类',
'category-subcat-count' => '{{PLURAL:$2|此分类仅有下列一只子分类。|此分类包含下列$1只子分类,共计$2只子分类。}}',
'category-subcat-count-limited' => '迭只分类包含下底$1只子分类。',
'category-article-count' => '{{PLURAL:$2|迭只分类只有下底一只页面。|迭只分类包含下底$1只页面,共计$2只页面。}}',
@@ -132,6 +140,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|箇只分类只有下底一只文件。|箇只分类包含下底$1只文件,共计$2只文件。}}',
'category-file-count-limited' => '迭只分类包含下底$1只文件。',
'listingcontinuesabbrev' => '续',
+'index-category' => '索引拉许个页面',
+'noindex-category' => '弗曾索引拉许个页面',
'mainpagetext' => "'''MediaWiki安装成功哉!'''",
'mainpagedocfooter' => '请访问[http://meta.wikimedia.org/wiki/Help:Contents 用户手册]以获得使用此维基软件个信息!
@@ -141,10 +151,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常见问题解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布邮件列表]',
-'about' => '关于',
-'article' => '内容页面',
-'newwindow' => '(垃拉新窗口里向开开来)',
-'cancel' => '取消',
+'about' => '关于',
+'article' => '内容页面',
+'newwindow' => '(垃拉新窗口里向开开来)',
+'cancel' => '取消',
+'moredotdotdot' => '还有...',
+'mypage' => '我个页面',
+'mytalk' => '我个讨论',
+'anontalk' => '箇只IP个言论',
+'navigation' => '导航',
+'and' => '&#32;搭仔',
+
+# Cologne Blue skin
'qbfind' => '寻',
'qbbrowse' => '浏览',
'qbedit' => '编辑',
@@ -152,12 +170,35 @@ $messages = array(
'qbpageinfo' => '上下文',
'qbmyoptions' => '我个选项',
'qbspecialpages' => '特殊页面',
-'moredotdotdot' => '还有...',
-'mypage' => '我个页面',
-'mytalk' => '我个讨论',
-'anontalk' => '箇只IP个言论',
-'navigation' => '导航',
-'and' => '&#32;搭仔',
+'faq' => 'FAQs',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => '加入话题',
+'vector-action-delete' => '删除',
+'vector-action-move' => '移动',
+'vector-action-protect' => '保护',
+'vector-action-undelete' => '反删除',
+'vector-action-unprotect' => '反保护',
+'vector-namespace-category' => '分类',
+'vector-namespace-help' => '帮助页',
+'vector-namespace-image' => '文件',
+'vector-namespace-main' => '页面',
+'vector-namespace-media' => '媒体页面',
+'vector-namespace-mediawiki' => '讯息',
+'vector-namespace-project' => '项目页面',
+'vector-namespace-special' => '特殊页面',
+'vector-namespace-talk' => '讨论',
+'vector-namespace-template' => '模板',
+'vector-namespace-user' => '用户页面',
+'vector-view-create' => '创建',
+'vector-view-edit' => '编辑',
+'vector-view-history' => '望历史',
+'vector-view-view' => '阅读',
+'vector-view-viewsource' => '查看源码',
+'actions' => '动作',
+'namespaces' => '名字空间',
+'variants' => '变量',
'errorpagetitle' => '错误',
'returnto' => '回转到$1。',
@@ -207,12 +248,15 @@ $messages = array(
'otherlanguages' => '别样闲话版本',
'redirectedfrom' => '($1重定向来个)',
'redirectpagesub' => '重定向页',
-'lastmodifiedat' => '箇只页面最近修订垃拉$1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '箇只页面最近修订垃拉$1 $2。',
'viewcount' => '迭只页面已经拨浏览过$1趟。',
'protectedpage' => '保护拉许个页面',
'jumpto' => '跳转到:',
'jumptonavigation' => '导航',
'jumptosearch' => '搜寻',
+'view-pool-error' => '弗好意思,服务器现在过载,请等歇再访问。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '关于{{SITENAME}}',
@@ -225,8 +269,6 @@ $messages = array(
'disclaimerpage' => 'Project:免责声明',
'edithelp' => '编辑帮助',
'edithelppage' => 'Help:如何编辑页面',
-'faq' => 'FAQs',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:目录',
'mainpage' => '封面',
'mainpage-description' => '封面',
@@ -316,6 +358,8 @@ $messages = array(
'readonly_lag' => '从数据库服务器垃拉从主服务器上更新,数据库已经拨自动锁定',
'internalerror' => '内部错误',
'internalerror_info' => '内部错误:$1',
+'fileappenderrorread' => '当附加时无法读取"$1"。',
+'fileappenderror' => '“$1”附加到“$2”弗来三。',
'filecopyerror' => '弗好拿文件“$1”复制到“$2”。',
'filerenameerror' => '拿文件“$1”重命名为“$2”失败。',
'filedeleteerror' => '弗好删除文件“$1”。',
@@ -325,6 +369,8 @@ $messages = array(
'unexpected' => '非正常值:“$1”=“$2”。',
'formerror' => '错误:提交表单失败',
'badarticleerror' => '呒处垃拉箇只页面进行箇只操作。',
+'cannotdelete' => '无处删除页面或图像 "$1"。
+渠作兴已经拨别人家删除脱哉。',
'badtitle' => '该只标题弗来三',
'badtitletext' => '所请求页面个标题是无效个、弗存在,跨语言或跨wiki链接个标题错误。渠作兴包含一只或多只弗好用拉标题里向字符。',
'perfcached' => '下底是缓存数据,箇咾作兴弗是顶新个:',
@@ -355,7 +401,6 @@ $2',
'virus-unknownscanner' => '未知个反病毒扫描器:',
# Login and logout pages
-'logouttitle' => '用户登出',
'logouttext' => "侬已经登出哉。'''
侬可以继续匿名使用{{SITENAME}} ,也可以再次以相同或者两样个用户名[[Special:UserLogin|登录]]。
@@ -363,7 +408,6 @@ $2',
'welcomecreation' => '== 欢迎侬, $1! ==
侬个户头已经建立好哉。弗要忘记脱设定侬个[[Special:Preferences|{{SITENAME}}的个人参数]]噢。',
-'loginpagetitle' => '用户登录',
'yourname' => '用户名:',
'yourpassword' => '密码:',
'yourpasswordagain' => '再拍一遍密码:',
@@ -374,6 +418,7 @@ $2',
'nav-login-createaccount' => '登录 / 开户',
'loginprompt' => '定规要启用仔缓存(cookies)倷再好登录到{{SITENAME}}。',
'userlogin' => '登录 / 新开户头',
+'userloginnocreate' => '登录',
'logout' => '登出',
'userlogout' => '登出',
'notloggedin' => '弗曾登录',
@@ -385,18 +430,8 @@ $2',
'createaccountmail' => '通过 e-mail',
'badretype' => '倷输入个密码搭倪个档案弗配。',
'userexists' => '箇只ID已经拨注册脱哉。请重新再拣个用户名。',
-'youremail' => '电子邮件:',
-'username' => '用户名:',
-'uid' => '用户号:',
-'yourrealname' => '真实姓名:',
-'yourlanguage' => '语言:',
-'yournick' => '绰号:',
-'badsig' => '无效原始签名;检查 HTML 标签。',
-'email' => '电子邮件',
'loginerror' => '登录错误',
-'prefs-help-email' => '电子邮件是备选个,垃拉侬忘记密码个情况下头可以用得来重置密码。
-侬也可以让别人家通过侬个用户页或者讨论页来联系侬。',
-'prefs-help-email-required' => '需要电子邮件地址。',
+'createaccounterror' => '无法建立账户:$1',
'nocookiesnew' => '侬个账户创建成功!Cookies像煞拨侬关拉许,请开开来再登录。',
'nocookieslogin' => '本站利用Cookies进行用户登录,侬个Cookies像煞关拉许,请开开来再登录。',
'noname' => '用户名无效。',
@@ -405,8 +440,11 @@ $2',
'nosuchuser' => '寻弗着用户“$1”。用户名是大小写敏感外加区分繁简体个。请检查拼写,或者[[Special:UserLogin/signup|开只新账户]]。',
'nosuchusershort' => '无没叫“<nowiki>$1</nowiki>”个用户。请检查侬个输入。',
'nouserspecified' => '侬必须选个用户名。',
+'login-userblocked' => '箇个用户拨封锁拉许。弗允许登录。',
'wrongpassword' => '密码弗对。请侬再试试看。',
'wrongpasswordempty' => '密码为空,请重试。',
+'passwordtooshort' => '密码起码要$1个字符。',
+'password-name-match' => '密码弗好搭户名一样。',
'mailmypassword' => '拿新密码寄拨我',
'passwordremindertitle' => '{{SITENAME}} 个临时新密码',
'passwordremindertext' => '有人(作兴是侬,来自IP地址$1)已经请求{{SITENAME}}个新密码($4)。
@@ -417,6 +455,7 @@ $2',
假使箇只请求弗是侬发起个,或者侬已经拿密码想起来外加弗准备改脱渠,
侬可以忽略此消息并继续使用侬个旧密码。',
'noemail' => '用户"$1"弗曾登记电子邮件地址。',
+'noemailcreate' => '侬要提供只有效个电子邮件地址',
'passwordsent' => '用户"$1"个新密码已经寄往登记个电子邮件地址。
请收着仔再登录。',
'blocked-mailpassword' => '侬个IP地址处于查封状态,弗允许编辑,为仔安全起见,密码恢复功能已经禁用。',
@@ -435,9 +474,11 @@ $2',
'createaccount-text' => '有人垃拉{{SITENAME}}里向利用侬个邮箱创建仔一只叫 "$2" 个新帐户($4),密码是 "$3" 。侬应该立即登录并更改密码。
如果箇个账户创建错误个说话,侬可以忽略此信息。',
+'usernamehasherror' => '用户名里向弗好包含hash字符',
'login-throttled' => '登录尝试忒多哉。
请等脱歇再试。',
'loginlanguagelabel' => '语言:$1',
+'suspicious-userlogout' => '侬登出个要求已经拨回头脱,因为渠可能是由已损坏个浏览器或者缓存代理传送个。',
# Password reset dialog
'resetpass' => '更改密码',
@@ -452,6 +493,7 @@ $2',
'resetpass_forbidden' => '密码弗好更改',
'resetpass-no-info' => '侬必须登录仔再好直接进入箇只页面。',
'resetpass-submit-loggedin' => '更改密码',
+'resetpass-submit-cancel' => '取消',
'resetpass-wrong-oldpass' => '无效个临时或者现有密码。
侬作兴已经成功拿密码改脱,或者已经请求一个新个临时密码。',
'resetpass-temp-password' => '临时密码:',
@@ -539,12 +581,19 @@ $2',
要是倷是弗用心到该搭个说话,只要点击倷浏览器个'''返回'''揿钮。",
'anontalkpagetext' => "---- ''箇是一个还弗曾建立账户个匿名用户个讨论页, 箇咾我伲只好用IP地址来搭渠联络。该IP地址可能由几名用户共享。如果侬是一名匿名用户并认为箇只页面高头个评语搭侬弗搭界,请 [[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]来避免垃拉将来搭其他匿名用户混淆。''",
'noarticletext' => '箇只页面目前呒没内容。侬可以垃拉其他页面高头[[Special:Search/{{PAGENAME}}|搜索此页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑此页]。</span>',
+'noarticletext-nopermission' => '箇只页面目前呒没内容,侬可以垃拉其它页[[Special:Search/{{PAGENAME}}|搜索此页标题]],
+或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有关日志]</span>。',
'userpage-userdoesnotexist' => '用户账户“$1”弗曾创建。请垃拉创建/编辑迭个页面前头先检查一记。',
+'userpage-userdoesnotexist-view' => '用户账户“$1”弗曾创建。',
+'blocked-notice-logextract' => '箇位用户箇歇畀封锁垃许。
+下头有最近个封锁纪录以供参考:',
'clearyourcache' => "'''注意:垃拉保存之后,侬必须清除浏览器个缓存再好看见所作出个改变。'''
'''Mozilla / Firefox / Safari''':揿牢''Shift''再点击''刷新'',或揿''Ctrl-F5''或''Ctrl-R''(垃拉Macintosh上揿 ''Command-R'');
'''Konqueror''':只需点击''刷新''或揿''F5'';
'''Opera''':垃拉 ''工具→首选项''里向完整清除渠拉个缓存,或揿''Alt-F5'';
'''Internet Explorer''':揿牢''Ctrl''再点击''刷新'',或揿''Ctrl-F5''。",
+'usercssyoucanpreview' => "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 CSS 。",
+'userjsyoucanpreview' => "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 JavaScript 。",
'usercsspreview' => "'''注意侬只是垃许预览侬个 CSS。'''
'''还弗曾保存!'''",
'userjspreview' => "'''注意侬只是垃许测试/预览侬个 JavaScript。'''
@@ -591,16 +640,34 @@ $2',
'readonlywarning' => "'''警告:数据库锁定垃许维护,侬箇歇弗好保存侬个修改。'''侬作兴希望先拿本段文字复制并保存到文本文件,等歇再修改。
管理员有如下解释:$1",
+'protectedpagewarning' => "'''警告:此页已经畀保护,只有拥有管理员权限个用户再好修改。'''
+最近个日志垃拉下底提供以便参考:",
+'semiprotectedpagewarning' => "'''注意:''' 本页面畀锁定,仅限注册用户编辑。
+最近个日志垃拉下底提供以便参考:",
'cascadeprotectedwarning' => '警告:本页已经畀保护,只有拥有管理员权限个用户再好修改,因为本页已畀下底眼连锁保护个{{PLURAL:$1|一只|多只}}页面所包含:',
+'titleprotectedwarning' => "'''警告:本页面已畀锁定,需要[[Special:ListGroupRights|指定权限]]方可创建。'''
+最近个日志垃拉下底提供以便参考:",
+'templatesused' => '{{PLURAL:$1|只模板}}垃拉本页使用:',
+'templatesusedpreview' => '{{PLURAL:$1|只模板}}垃拉箇趟预览里向拨使用:',
+'templatesusedsection' => '垃拉箇只段落里向使用个{{PLURAL:$1|模板|模板}}有:',
'template-protected' => '(保护)',
'template-semiprotected' => '(半保护垃许)',
'hiddencategories' => '箇只页面是属于$1个隐藏分类个成员:',
'nocreatetitle' => '创建页面受限',
'nocreatetext' => '{{SITENAME}}限制了创建新页面功能。侬可以返回并编辑已有个页面,或者[[Special:UserLogin|登录或创建新账户]]。',
'nocreate-loggedin' => '侬呒没权限创建新页面。',
+'sectioneditnotsupported-title' => '段落编辑弗支持',
+'sectioneditnotsupported-text' => '此页面弗支持编辑段落。',
'permissionserrors' => '权限错误',
'permissionserrorstext' => '为仔下头个{{PLURAL:$1|原因|原因}}咾侬无权进行箇只操作:',
'permissionserrorstext-withaction' => '为仔下头个{{PLURAL:$1|原因|原因}}咾侬无权进行$2操作:',
+'recreate-moveddeleted-warn' => "'''警告: 侬现在重新创建一只之前曾经删除过歇个页面。'''
+
+侬应该要考虑考虑继续编辑箇只页面是否合适。
+为方便起见,箇只页面个删除记录提供垃拉下底:",
+'moveddeleted-notice' => '箇只页面已经删除。
+箇只页面个删除搭移动日志提供垃拉下头以便参考。',
+'log-fulllog' => '查看完整日志',
'edit-hook-aborted' => '编辑畀钩子取消。
渠弗曾畀出解释。',
'edit-gone-missing' => '弗好更新页面。
@@ -623,6 +690,7 @@ $2',
'post-expand-template-argument-category' => '包含忽略模板参数个页面',
'parser-template-loop-warning' => '检测着模板循环:[[$1]]',
'parser-template-recursion-depth-warning' => '模板递归深度超限($1)',
+'language-converter-depth-warning' => '字词转换器深度超限($1)',
# "Undo" feature
'undo-success' => '箇只编辑可以撤销。
@@ -641,6 +709,9 @@ $3封禁个原因是''$2''",
'viewpagelogs' => '查看该页面日志',
'nohistory' => '该只页面呒拨编辑历史。',
'currentrev' => '最新修订版本',
+'currentrev-asof' => '于$1个最新修订版',
+'revisionasof' => '垃拉$1所作出个修订版',
+'revision-info' => '垃拉$1由$2所作修订版本',
'previousrevision' => '←再旧版',
'nextrevision' => '新点个版本→',
'currentrevisionlink' => '最新修订',
@@ -651,62 +722,118 @@ $3封禁个原因是''$2''",
'page_last' => '压末',
'histlegend' => '选择比较版本:标记要比较个两只版本,回车或者揿页面底里个揿钮。<br /> 图例:(当前) = 搭当前版本有啥两样, (上个) = 搭上个版本有啥两样,小 = 小改动。',
'history-fieldset-title' => '浏览历史',
-'deletedrev' => '[已删]',
+'history-show-deleted' => '仅限已经删除个',
'histfirst' => '顶早',
'histlast' => '顶晏',
'historysize' => '($1字节)',
'historyempty' => '(空)',
# Revision feed
-'history-feed-title' => '校订历史',
-'history-feed-description' => 'wiki里向本页个修订历史',
-'history-feed-empty' => '请求个页面弗存在。渠作兴已畀删除或重命名。
+'history-feed-title' => '校订历史',
+'history-feed-description' => 'wiki里向本页个修订历史',
+'history-feed-item-nocomment' => '$1垃拉$2',
+'history-feed-empty' => '请求个页面弗存在。渠作兴已畀删除或重命名。
尝试[[Special:Search|搜索本站]]获得相关新建页面。',
# Revision deletion
-'rev-deleted-comment' => '(备注已删除)',
-'rev-deleted-user' => '(用户名已删除)',
-'rev-deleted-event' => '(日志动作已删除)',
-'rev-delundel' => '显示/囥脱',
-'revisiondelete' => '删除 / 反删除修订',
-'revdelete-nooldid-title' => '无效个目标修订',
-'revdelete-nooldid-text' => '侬还弗曾指定一个目标修订去进行箇只功能、
+'rev-deleted-comment' => '(备注已删除)',
+'rev-deleted-user' => '(用户名已删除)',
+'rev-deleted-event' => '(日志动作已删除)',
+'rev-deleted-user-contribs' => '[用户名或IP地址已删除 - 垃贡献里向囥脱编辑]',
+'rev-deleted-text-permission' => "箇只页面修订已畀'''删除'''。
+垃拉[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]里向可以寻着详细信息。",
+'rev-deleted-text-unhide' => "箇只页面修订已经畀'''删除'''。
+垃拉[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]里向可以寻着详细信息。
+作为管理员,如果侬想继续个闲话,侬可以仍旧[$1 查看箇趟修订]。",
+'rev-suppressed-text-unhide' => "箇只页面修订已经畀'''废止'''。
+垃拉[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 废止日志]里向可以寻着详细信息。
+作为管理员,如果侬想继续个闲话,侬可以仍旧[$1 查看箇趟修订]。",
+'rev-deleted-text-view' => "箇只页面修订已经畀'''删除'''。作为管理员,侬可以查看渠;
+垃拉[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]里向可以寻着详细信息。",
+'rev-suppressed-text-view' => "箇只页面修订已经畀'''废止'''。作为管理员,侬可以查看渠;
+垃拉[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]里向可以寻着详细信息。",
+'rev-deleted-no-diff' => "因为其中一趟修订已畀'''删除''',侬弗可以查看差异。
+垃拉[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]里向可以寻着更多信息。",
+'rev-suppressed-no-diff' => "箇只页面个其中一趟修订已经畀'''删除''',箇咾弗可以查看箇趟修订。",
+'rev-deleted-unhide-diff' => "箇只页面个其中一趟修订已经畀'''删除'''。
+垃拉[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]里向可以寻着更多信息。
+作为管理员,如果侬想继续个闲话,侬仍旧可以[$1 查看箇趟修订]。",
+'rev-suppressed-unhide-diff' => "箇只页面个其中一趟修订已经拨'''废止'''。
+垃拉[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]里向可以寻着更多资料。
+作为管理员,如果侬想继续个闲话,侬可以仍旧[$1 查看箇趟修订]。",
+'rev-deleted-diff-view' => "差异里向个一趟修订已拨'''删除'''。
+作为管理员,侬可以查看箇个差异。详细信息可垃拉[{{fullurl: {{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]里向寻着。",
+'rev-suppressed-diff-view' => "差异里向个一趟修订已拨'''废止'''。
+作为管理员,侬可以查看箇个差异。详细信息可垃拉[{{fullurl: {{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]里向寻着。",
+'rev-delundel' => '显示/囥脱',
+'rev-showdeleted' => '显示',
+'revisiondelete' => '删除 / 反删除修订',
+'revdelete-nooldid-title' => '无效个目标修订',
+'revdelete-nooldid-text' => '侬还弗曾指定一个目标修订去进行箇只功能、
所指定个修订弗存在,或者侬尝试去隐藏现时个修订。',
-'revdelete-nologtype-title' => '呒没指定日志类型',
-'revdelete-nologtype-text' => '侬还弗曾指定一种日志类型来进行箇只动作。',
-'revdelete-nologid-title' => '无效日志记录',
-'revdelete-nologid-text' => '侬还弗曾指定一只目标日志事件去进行箇只功能,或者指定个记录弗存在。',
-'revdelete-selected' => "'''选取'''[[:$1]]'''个$2趟修订:'''",
-'logdelete-selected' => "'''选取'''$1'''个日志事件:'''",
-'revdelete-suppress-text' => "'''只有'''出现下头眼情况再应阻止访问:
+'revdelete-nologtype-title' => '呒没指定日志类型',
+'revdelete-nologtype-text' => '侬还弗曾指定一种日志类型来进行箇只动作。',
+'revdelete-nologid-title' => '无效日志记录',
+'revdelete-nologid-text' => '侬还弗曾指定一只目标日志事件去进行箇只功能,或者指定个记录弗存在。',
+'revdelete-no-file' => '指定文件弗存在。',
+'revdelete-show-file-confirm' => '侬阿是真个要查看文件“<nowiki>$1</nowiki>”垃拉$2 $3已经删除个修订?',
+'revdelete-show-file-submit' => '是',
+'revdelete-selected' => "'''选取'''[[:$1]]'''个$2趟修订:'''",
+'logdelete-selected' => "'''选取'''$1'''个日志事件:'''",
+'revdelete-text' => "'''删脱个修订仍然将显示拉页面历史里向, 不过渠拉个文本内容公众已经弗好访问。'''
+垃拉{{SITENAME}}个其他管理员将仍旧好访问隐藏个内容并通过与此相同个界面恢复删除,除非站点工作者添加了附加限制。",
+'revdelete-confirm' => '假使侬想箇能介做个闲话,请确认侬已经清爽箇能介做个后果,外加箇个程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-suppress-text' => "'''只有'''出现下头眼情况再应阻止访问:
* 弗适合个个人信息
*: ''家庭地址、电话号码、身份证号码等。''",
-'revdelete-legend' => '设置可见性之限制',
-'revdelete-hide-text' => '隐藏修订文本',
-'revdelete-hide-name' => '隐藏动作搭仔目标',
-'revdelete-hide-comment' => '隐藏编辑备注',
-'revdelete-hide-user' => '隐藏编辑者个用户名/IP地址',
-'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
-'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
-'revdelete-hide-image' => '隐藏文件内容',
-'revdelete-unsuppress' => '垃拉已恢复个修订里向移除限制',
-'revdelete-log' => '理由:',
-'revdelete-logentry' => '[[$1]]个修订可见性已更改',
-'logdelete-logentry' => '[[$1]]个事件可见性已更改',
-'revdelete-success' => "'''修订个可见性已经成功更新。'''",
-'logdelete-success' => "'''事件个可见性已经成功设置。'''",
-'revdel-restore' => '更改可见性',
-'pagehist' => '页面历史',
-'deletedhist' => '已删除之历史',
-'revdelete-content' => '内容',
-'revdelete-summary' => '编辑摘要',
-'revdelete-uname' => '用户名',
-'revdelete-restricted' => '已将限制应用到管理员',
-'revdelete-unrestricted' => '已移除对管理员个限制',
-'revdelete-hid' => '囥脱 $1',
-'revdelete-unhid' => '显示 $1',
-'revdelete-log-message' => '$1个$2次修订',
-'logdelete-log-message' => '$1个$2项事件',
+'revdelete-legend' => '设置可见性之限制',
+'revdelete-hide-text' => '隐藏修订文本',
+'revdelete-hide-image' => '隐藏文件内容',
+'revdelete-hide-name' => '隐藏动作搭仔目标',
+'revdelete-hide-comment' => '隐藏编辑备注',
+'revdelete-hide-user' => '隐藏编辑者个用户名/IP地址',
+'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
+'revdelete-radio-same' => '(弗要更改)',
+'revdelete-radio-set' => '是',
+'revdelete-radio-unset' => '否',
+'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
+'revdelete-unsuppress' => '垃拉已恢复个修订里向移除限制',
+'revdelete-log' => '理由:',
+'revdelete-submit' => '应用于拣中个{{PLURAL:$1|修订}}',
+'revdelete-logentry' => '[[$1]]个修订可见性已更改',
+'logdelete-logentry' => '[[$1]]个事件可见性已更改',
+'revdelete-success' => "'''修订个可见性已经成功更新。'''",
+'revdelete-failure' => "'''修订个可见性无法更新:'''
+$1",
+'logdelete-success' => "'''事件个可见性已经成功设置。'''",
+'logdelete-failure' => "'''事件个可见性无法设置:'''
+$1",
+'revdel-restore' => '更改可见性',
+'pagehist' => '页面历史',
+'deletedhist' => '已删除之历史',
+'revdelete-content' => '内容',
+'revdelete-summary' => '编辑摘要',
+'revdelete-uname' => '用户名',
+'revdelete-restricted' => '已将限制应用到管理员',
+'revdelete-unrestricted' => '已移除对管理员个限制',
+'revdelete-hid' => '囥脱 $1',
+'revdelete-unhid' => '显示 $1',
+'revdelete-log-message' => '$1个$2次修订',
+'logdelete-log-message' => '$1个$2项事件',
+'revdelete-hide-current' => '隐藏于$1 $2之项目错误:箇个是当前个修订,弗可以隐藏。',
+'revdelete-show-no-access' => '显示于$1 $2之项目错误:箇只项目已经标示为"已限制",侬对渠并无通行权。',
+'revdelete-modify-no-access' => '更改于$1 $2之项目错误:箇个项目已经标示为"已限制",侬对渠并无通行权。',
+'revdelete-modify-missing' => '更改项目ID $1错误:数据库里寻弗着!',
+'revdelete-no-change' => '警告:于$1 $2之项目已经请求仔可见性设置。',
+'revdelete-concurrent-change' => '更改于$1 $2之项目错误:我伲尝试更改渠个设置个辰光,已经拨别人家更改过。请检查纪录。',
+'revdelete-only-restricted' => '隐藏$1 $2个项目个辰光发生错误:侬弗好垃拉选择仔另一可见性选项后废止管理员查看该项目。',
+'revdelete-reason-dropdown' => '*常用删除理由
+** 侵犯版权
+** 弗适合个个人资料',
+'revdelete-otherreason' => '别个/附加理由:',
+'revdelete-reasonotherlist' => '别个理由',
+'revdelete-edit-reasonlist' => '编辑删除理由',
+'revdelete-offender' => '修订作者:',
# Suppression log
'suppressionlog' => '阻止日志',
@@ -743,12 +870,13 @@ $3封禁个原因是''$2''",
'mergelogpagetext' => '下底是只最近发生个页面历史合并个记录列表。',
# Diffs
-'history-title' => '“$1”个修订历史',
-'difference' => '(修订版本间差异)',
-'lineno' => '第$1行:',
-'compareselectedversions' => '比较选中个版本',
-'editundo' => '撤销',
-'diff-multi' => '($1个中途个修订版本无没显示。)',
+'history-title' => '“$1”个修订历史',
+'difference' => '(修订版本间差异)',
+'lineno' => '第$1行:',
+'compareselectedversions' => '比较选中个版本',
+'showhideselectedversions' => '显示/囥脱选定修订版本',
+'editundo' => '撤销',
+'diff-multi' => '($1个中途个修订版本无没显示。)',
# Search results
'searchresults' => '搜索结果',
@@ -756,23 +884,25 @@ $3封禁个原因是''$2''",
'searchresulttext' => '更加全面个关于拉{{SITENAME}}里向搜索个信息,请倷看[[{{MediaWiki:Helppage}}:搜索|搜索{{SITENAME}}]]。',
'searchsubtitle' => '搜索\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 打头个页面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有链接到“$1”个页面]])',
'searchsubtitleinvalid' => "倷搜寻 '''$1'''",
-'noexactmatch' => "''呒拨叫\"\$1\"个页面啘。''' 倷可以[[:\$1|建立俚]]。",
'toomanymatches' => '匹配结果忒多哉,请尝试弗同个查询关键词',
'titlematches' => '页面标题匹配',
'notitlematches' => '寻弗着匹配个页面标题',
'textmatches' => '页面内容匹配',
'notextmatches' => '呒没匹配个页面文本',
'prevn' => '上个 $1',
-'nextn' => '下个 $1',
+'nextn' => '下个 {{PLURAL:$1|$1}}',
'prevn-title' => '前$1项结果',
'nextn-title' => '后$1项结果',
'shown-title' => '每页显示$1项结果',
-'viewprevnext' => '查看 ($1) ($2) ($3)',
+'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
'searchmenu-legend' => '搜索选项',
'searchmenu-exists' => "'''垃拉箇只wiki高头已经有只页面叫“[[:$1]]”哉'''",
'searchmenu-new' => "'''垃拉该wiki里向新建页面“[[:$1]]”!'''",
'searchhelp-url' => 'Help:目录',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|浏览带箇只前缀个页面]]',
+'searchprofile-articles' => '内容页面',
+'searchprofile-project' => '帮助搭仔项目页面',
+'searchprofile-images' => '多媒体',
'searchprofile-everything' => '全部',
'searchprofile-advanced' => '高级',
'searchprofile-articles-tooltip' => '垃拉$1里向搜索',
@@ -792,10 +922,12 @@ $3封禁个原因是''$2''",
'search-mwsuggest-disabled' => ' 呒没建议',
'search-relatedarticle' => '相关',
'mwsuggest-disable' => '禁用AJAX建议',
+'searcheverything-enable' => '垃拉所有名字空间里向搜索',
'searchrelated' => '相关',
'searchall' => '所有',
'showingresults' => '下头显示从第<b>$2</b>条开始个<b>$1</b>条结果:',
'showingresultsnum' => '下头显示从第<b>$2</b>条开始个<b>$3</b>条结果:',
+'showingresultsheader' => "对'''$4'''个{{PLURAL:$5|第'''$1'''至第'''$3'''项结果|第'''$1-$2'''项,共'''$3'''项结果}}",
'nonefound' => "'''注意''':只默认搜索部分名字空间个页面。尝试垃拉侬个搜索语句前头添加“all:”前缀,箇能介好搜索全部页面(包括讨论页、模板咾啥),或者亦可使用所需名字空间作为前缀。",
'search-nonefound' => '寻弗着搭查询匹配个记录',
'powersearch' => '高级搜索',
@@ -803,65 +935,90 @@ $3封禁个原因是''$2''",
'powersearch-ns' => '垃拉箇眼名字空间里向搜索:',
'powersearch-redir' => '重定向列表',
'powersearch-field' => '搜索',
+'powersearch-togglelabel' => '选择:',
+'powersearch-toggleall' => '全选',
+'powersearch-togglenone' => '侪弗选',
'search-external' => '外部搜索',
'searchdisabled' => '{{SITENAME}}个搜索已禁用。侬可以暂时使用Google搜索,须注意渠拉索引个{{SITENAME}}内容作兴会过时。',
+# Quickbar
+'qbsettings' => '快速导航排',
+'qbsettings-none' => '呒',
+'qbsettings-fixedleft' => '左许固定',
+'qbsettings-fixedright' => '右许固定',
+'qbsettings-floatingleft' => '左许氽移',
+'qbsettings-floatingright' => '右许氽移',
+
# Preferences page
-'preferences' => '偏好',
-'mypreferences' => '个人设置',
-'prefs-edits' => '编辑数量:',
-'prefsnologin' => '朆登录',
-'qbsettings' => '快速导航排',
-'qbsettings-none' => '呒',
-'qbsettings-fixedleft' => '左许固定',
-'qbsettings-fixedright' => '右许固定',
-'qbsettings-floatingleft' => '左许氽移',
-'qbsettings-floatingright' => '右许氽移',
-'changepassword' => '改密码',
-'skin' => '皮肤',
-'skin-preview' => '预览',
-'math' => '数学公式',
-'datedefault' => '呒拨偏好',
-'datetime' => '日脚搭仔辰光',
-'prefs-personal' => '用户档案',
-'prefs-rc' => '近段辰光个改动',
-'prefs-watchlist' => '监控列表',
-'prefs-watchlist-days' => '勒拉监控列表里向显示个日数:',
-'prefs-watchlist-edits' => '勒拉扩展个监控列表里向显示个编辑趟数:',
-'prefs-misc' => '杂项',
-'prefs-resetpass' => '更改密码',
-'saveprefs' => '保存',
-'resetprefs' => '清除弗曾保存个更改',
-'restoreprefs' => '恢复所有默认设置',
-'textboxsize' => '编辑',
-'prefs-edit-boxsize' => '编辑框尺寸',
-'rows' => '行:',
-'columns' => '列:',
-'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
-'contextlines' => '每链显示行数:',
-'contextchars' => '每行显示字数:',
-'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
-'recentchangesdays' => '最近更改里向个显示日数:',
-'recentchangescount' => '近段辰光个改动标题数:',
-'savedprefs' => '倷个偏好已经保存哉。',
-'timezonelegend' => '时区:',
-'localtime' => '当地辰光:',
-'timezoneuseserverdefault' => '使用服务器默认值',
-'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
-'servertime' => '服务器辰光:',
-'guesstimezone' => '从浏览器填写',
-'timezoneregion-africa' => '非洲',
-'timezoneregion-america' => '美洲',
-'timezoneregion-antarctica' => '南极洲',
-'timezoneregion-arctic' => '北极',
-'timezoneregion-asia' => '亚洲',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => '澳洲',
-'allowemail' => '接受别个用户个电子邮件',
-'default' => '默认',
-'files' => '文件',
+'preferences' => '偏好',
+'mypreferences' => '个人设置',
+'prefs-edits' => '编辑数量:',
+'prefsnologin' => '朆登录',
+'prefsnologintext' => '侬必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>再好设置个人参数。',
+'changepassword' => '改密码',
+'prefs-skin' => '皮肤',
+'skin-preview' => '预览',
+'prefs-math' => '数学公式',
+'datedefault' => '呒拨偏好',
+'prefs-datetime' => '日脚搭仔辰光',
+'prefs-personal' => '用户档案',
+'prefs-rc' => '近段辰光个改动',
+'prefs-watchlist' => '监控列表',
+'prefs-watchlist-days' => '勒拉监控列表里向显示个日数:',
+'prefs-watchlist-days-max' => '顶长7日天',
+'prefs-watchlist-edits' => '勒拉扩展个监控列表里向显示个编辑趟数:',
+'prefs-watchlist-edits-max' => '顶多:1000',
+'prefs-watchlist-token' => '监控列表记认:',
+'prefs-misc' => '杂项',
+'prefs-resetpass' => '更改密码',
+'prefs-email' => '邮箱选项',
+'prefs-rendering' => '外观',
+'saveprefs' => '保存',
+'resetprefs' => '清除弗曾保存个更改',
+'restoreprefs' => '恢复所有默认设置',
+'prefs-editing' => '编辑',
+'prefs-edit-boxsize' => '编辑框尺寸',
+'rows' => '行:',
+'columns' => '列:',
+'searchresultshead' => '搜索',
+'resultsperpage' => '每页显示链接数:',
+'contextlines' => '每链显示行数:',
+'contextchars' => '每行显示字数:',
+'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
+'recentchangesdays' => '最近更改里向个显示日数:',
+'recentchangesdays-max' => '最长 $1 日',
+'recentchangescount' => '默认显示个编辑数:',
+'prefs-help-recentchangescount' => '箇个包括近段辰光个改动、页面历史以及日志。',
+'prefs-help-watchlist-token' => '此栏填写个密钥可以生成侬监视列表个RSS源。任何知晓本栏密钥个人侪好阅读侬个监视列表,因此请使用安全数值。箇搭已提供一只随机生成个数值供侬挑拣:$1',
+'savedprefs' => '倷个偏好已经保存哉。',
+'timezonelegend' => '时区:',
+'localtime' => '当地辰光:',
+'timezoneuseserverdefault' => '使用服务器默认值',
+'timezoneuseoffset' => '其它(指定时差)',
+'timezoneoffset' => '时差¹:',
+'servertime' => '服务器辰光:',
+'guesstimezone' => '从浏览器填写',
+'timezoneregion-africa' => '非洲',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => '南极洲',
+'timezoneregion-arctic' => '北极',
+'timezoneregion-asia' => '亚洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳洲',
+'allowemail' => '接受别个用户个电子邮件',
+'default' => '默认',
+'prefs-files' => '文件',
+'youremail' => '电子邮件:',
+'username' => '用户名:',
+'uid' => '用户号:',
+'yourrealname' => '真实姓名:',
+'yourlanguage' => '语言:',
+'yournick' => '绰号:',
+'badsig' => '无效原始签名;检查 HTML 标签。',
+'email' => '电子邮件',
+'prefs-help-email' => '电子邮件是备选个,垃拉侬忘记密码个情况下头可以用得来重置密码。
+侬也可以让别人家通过侬个用户页或者讨论页来联系侬。',
+'prefs-help-email-required' => '需要电子邮件地址。',
# User rights
'userrights-user-editname' => '输入用户名:',
@@ -914,6 +1071,8 @@ $3封禁个原因是''$2''",
# Recent changes linked
'recentchangeslinked' => '搭界个改动',
+'recentchangeslinked-feed' => '搭界个改动',
+'recentchangeslinked-toolbox' => '搭界个改动',
'recentchangeslinked-title' => '搭“$1”有关个改动',
'recentchangeslinked-summary' => "迭只页面列示个是对链到某只指定页面个页面近段辰光个修订(或者是对指定分类个成员)。
垃拉[[Special:Watchlist|侬个监控列表]]里向个页面会得以'''粗体'''显示。",
@@ -923,7 +1082,6 @@ $3封禁个原因是''$2''",
# Upload
'upload' => '上载文物',
'uploadbtn' => '上载文件',
-'reupload' => '重新上载',
'uploadnologin' => '朆登录',
'uploadnologintext' => '倷板定要[[Special:UserLogin|登录]]仔再好上载文件。',
'uploaderror' => '上载出错',
@@ -962,6 +1120,7 @@ $3封禁个原因是''$2''",
'listfiles_description' => '描述',
# File description page
+'file-anchor-link' => '文物',
'filehist' => '文件历史',
'filehist-help' => '点击日脚/辰光查看当时出现过歇个文件。',
'filehist-deleteall' => '全删',
@@ -970,16 +1129,14 @@ $3封禁个原因是''$2''",
'filehist-current' => '当前',
'filehist-datetime' => '日脚 / 辰光',
'filehist-thumb' => '微缩图',
+'filehist-thumbtext' => '于$1个缩图版本',
'filehist-user' => '用户',
'filehist-dimensions' => '维度',
'filehist-comment' => '备注',
'imagelinks' => '文件链接',
'linkstoimage' => '下头$1只页面链接到本文件:',
'nolinkstoimage' => '呒拨页面链接到该只文件。',
-'sharedupload' => '箇只文件来源于$1,渠作兴垃拉其它项目当中拨应用。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => '文件描述页面',
-'noimage' => '呒拨叫该个名字个文件,倷可以$1。',
-'noimage-linktext' => '上载俚',
+'sharedupload' => '箇只文件来源于$1,渠作兴垃拉其它项目当中拨应用。',
'uploadnewversion-linktext' => '上载该文件个新版',
# File reversion
@@ -1010,8 +1167,8 @@ $3封禁个原因是''$2''",
'brokenredirects' => '坏脱个重定向',
'brokenredirectstext' => '下底个重定向链到弗存在个页面:',
-'brokenredirects-edit' => '(编辑)',
-'brokenredirects-delete' => '(删除)',
+'brokenredirects-edit' => '编辑',
+'brokenredirects-delete' => '删除',
# Miscellaneous special pages
'nbytes' => '$1字节',
@@ -1137,7 +1294,7 @@ $3封禁个原因是''$2''",
'rollback_short' => '恢复',
'rollbacklink' => '恢复',
'rollbackfailed' => '恢复失败',
-'revertpage' => '恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => '恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本',
# Protect
'protectlogpage' => '保护日志',
@@ -1190,6 +1347,7 @@ $3封禁个原因是''$2''",
'sp-contributions-newbies' => '仅显示新用户个贡献',
'sp-contributions-blocklog' => '查封记录',
+'sp-contributions-talk' => '讲张',
'sp-contributions-search' => '搜索贡献记录',
'sp-contributions-username' => 'IP地址或用户名:',
'sp-contributions-submit' => '寻',
@@ -1219,7 +1377,7 @@ $3封禁个原因是''$2''",
'ipbreasonotherlist' => '其它原因',
'ipbsubmit' => '封杀该个用户',
'ipbother' => '其它时间:',
-'ipboptions' => '2个钟头:2 hours,1日天:1 day,3日天:3 days,1个礼拜:1 week,2个礼拜:2 weeks,1个号头:1 month,3个号头:3 months,6个号头:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2个钟头:2 hours,1日天:1 day,3日天:3 days,1个礼拜:1 week,2个礼拜:2 weeks,1个号头:1 month,3个号头:3 months,6个号头:6 months,1年:1 year,永久:infinite',
'badipaddress' => '无效 IP 地址',
'ipblocklist' => '封禁拉许个IP地址搭仔用户名',
'infiniteblock' => '永远',
@@ -1258,7 +1416,7 @@ $3封禁个原因是''$2''",
'move-watch' => '监控来源以及目标页',
'movepagebtn' => '页面移动',
'pagemovedsub' => '移动成功',
-'movepage-moved' => "'''“$1”已经移动到“$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''“$1”已经移动到“$2”'''",
'articleexists' => '叫箇只名字个页面已经有垃许哉,要么侬拣个名字是无效个。请重新拣只名字。',
'cantmove-titleprotected' => '侬弗可以移动迭个页面到个个位置,因为迭个新标题已经拨保护拉许以防止创建。',
'talkexists' => '页面本身移动成功,
@@ -1284,8 +1442,6 @@ $3封禁个原因是''$2''",
'allmessagescurrent' => '当前文本',
'allmessagestext' => '该个是MediaWiki名字空间里可用个系统音讯列表。',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' 呒处显示,因为 '''\$wgUseDatabaseMessages''' 关勒浪。",
-'allmessagesfilter' => '音讯名字过滤:',
-'allmessagesmodified' => '只显示修订过个',
# Thumbnails
'thumbnail-more' => '放大',
@@ -1315,6 +1471,7 @@ $3封禁个原因是''$2''",
'tooltip-search-fulltext' => '寻包含箇星文本个页面',
'tooltip-p-logo' => '封面',
'tooltip-n-mainpage' => '进入封面',
+'tooltip-n-mainpage-description' => '翻到簿面',
'tooltip-n-portal' => '关于本计划,好做眼啥,应该哪能做法子',
'tooltip-n-currentevents' => '查寻当前事件个背景信息',
'tooltip-n-recentchanges' => '列出近段辰光个改动',
@@ -1404,7 +1561,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-artist' => '作者',
@@ -1415,7 +1572,7 @@ Variants for Chinese language
'exif-contrast-2' => '高',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '公里每小时',
'exif-gpsspeed-m' => '英里每小时',
@@ -1450,6 +1607,7 @@ Variants for Chinese language
# Separators for various lists, etc.
'comma-separator' => '、',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上一页',
@@ -1477,7 +1635,7 @@ Variants for Chinese language
'watchlisttools-raw' => '编辑源监控列表',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
# Special:FilePath
'filepath' => '文件路径',
diff --git a/languages/messages/MessagesXal.php b/languages/messages/MessagesXal.php
index 353f1f09..e1720ee9 100644
--- a/languages/messages/MessagesXal.php
+++ b/languages/messages/MessagesXal.php
@@ -12,28 +12,44 @@
* @author לערי ריינהארט
*/
+$fallback = 'ru';
+
+$fallback8bitEncoding = "windows-1251";
+
$namespaceNames = array(
NS_MEDIA => 'Аһар',
- NS_SPECIAL => 'Көдлхнə',
- NS_MAIN => '',
- NS_TALK => 'Ухалвр',
- NS_USER => 'Орлцач',
- NS_USER_TALK => 'Орлцачна_тускар_ухалвр',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1_тускар_ухалвр',
- NS_FILE => 'Зург',
- NS_FILE_TALK => 'Зургин_тускар_ухалвр',
+ NS_SPECIAL => 'Көдлхнә',
+ NS_TALK => 'Меткән',
+ NS_USER => 'Демнч',
+ NS_USER_TALK => 'Демнчна_туск_меткән',
+ NS_PROJECT_TALK => '$1_туск_меткән',
+ NS_FILE => 'Боомг',
+ NS_FILE_TALK => 'Боомгин_туск_меткән',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_тускар_ухалвр',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_туск_меткән',
NS_TEMPLATE => 'Зура',
- NS_TEMPLATE_TALK => 'Зуран_тускар_ухалвр',
- NS_HELP => 'Цəəлһлһн',
- NS_HELP_TALK => 'Цəəлһлһин_тускар_ухалвр',
- NS_CATEGORY => 'Янз',
- NS_CATEGORY_TALK => 'Янзин_тускар_ухалвр',
+ NS_TEMPLATE_TALK => 'Зуран_туск_меткән',
+ NS_HELP => 'Цәәлһлһн',
+ NS_HELP_TALK => 'Цәәлһлһин_туск_меткән',
+ NS_CATEGORY => 'Әәшл',
+ NS_CATEGORY_TALK => 'Әәшлин_туск_меткән',
);
-$fallback8bitEncoding = "windows-1251";
+$namespaceAliases = array(
+ 'Көдлхнə' => NS_SPECIAL,
+ 'Ухалвр' => NS_TALK,
+ 'Орлцач' => NS_USER,
+ 'Орлцачна_тускар_ухалвр' => NS_USER_TALK,
+ '$1_тускар_ухалвр' => NS_PROJECT_TALK,
+ 'Зург' => NS_FILE,
+ 'Зургин_тускар_ухалвр' => NS_FILE_TALK,
+ 'MediaWiki_тускар_ухалвр' => NS_MEDIAWIKI_TALK,
+ 'Зуран_тускар_ухалвр' => NS_TEMPLATE_TALK,
+ 'Цəəлһлһн' => NS_HELP,
+ 'Цəəлһлһин_тускар_ухалвр' => NS_HELP_TALK,
+ 'Янз' => NS_CATEGORY,
+ 'Янзин_тускар_ухалвр' => NS_CATEGORY_TALK,
+);
$messages = array(
# User preference toggles
@@ -66,6 +82,7 @@ $messages = array(
'tog-enotifminoredits' => 'Баһ сольлһн болв чигн болхла, нанд e-mail бичг йовулх',
'tog-enotifrevealaddr' => 'Мини e-mail хайг зәңгллһнә бичгт үзүлх',
'tog-shownumberswatching' => 'Тер халх шинҗлдг демнчнрин то үзүлх',
+'tog-oldsig' => 'Бәәдг тәвсн һарна хәләвр:',
'tog-fancysig' => 'Эврән тәвсн һарна бики темдлһн (авто заалһта уга)',
'tog-externaleditor' => 'Һаза чикллгч олзлх (һанцхн эрдмчнрт, тана тоолцврт шишлң көг кергтә)',
'tog-externaldiff' => 'Һаза йилһән үзүлдг програм олзлх (һанцхн эрдмчнрт, тана тоолцврт шишлң көг кергтә)',
@@ -87,6 +104,13 @@ $messages = array(
'underline-never' => 'Кезәчн болшго',
'underline-default' => 'Хәләгчин таасн',
+# Font style option in Special:Preferences
+'editfont-style' => 'Чикллһнә цаасна үзг-кевин янз:',
+'editfont-default' => 'Хәләлгчин көгәс',
+'editfont-monospace' => 'Даңгин уудмта үзг-кев',
+'editfont-sansserif' => 'Онь уга үзг-кев',
+'editfont-serif' => 'Оньта үзг-кев',
+
# Dates
'sunday' => 'Нарн',
'monday' => 'Сарң',
@@ -146,7 +170,7 @@ $messages = array(
'category-media-header' => '«$1» әәшлд бәәдг боомгуд',
'category-empty' => "''Тер әәшл хоосн болҗана.''",
'hidden-categories' => '{{PLURAL:$1|Бултулсн әәшл|Бултулсн әәшлүд}}',
-'hidden-category-category' => 'Бултулсн әәшлүд', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Бултулсн әәшлүд',
'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд үзүлв|$1 баһар әәшлүд}} $2 ут туршдан үзүлв.}}',
'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхиг үзүлв|$1 халхсиг үзүлв|$1 халхсиг үзүлв}}, $2 ут туршдан.}}',
@@ -154,6 +178,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Тер әәшлд һанцхн халх болҗана.|Терүнәс {{PLURAL:$1|нег боомг үзүлсн|$1 боомгуд үзүлсн}} $2 ут туршдан.}}',
'category-file-count-limited' => 'Эн {{PLURAL:$1|боомг|$1 боомгуд}} тер әәшлд болҗана.',
'listingcontinuesabbrev' => '(цааранднь)',
+'index-category' => 'Индекссн халхс',
+'noindex-category' => 'Индекссн биш халхс',
'mainpagetext' => "Йовудта Mediawiki гүүлһүдә тәвллһн.'''",
'mainpagedocfooter' => 'Тер бики закллһна теткүл ю кеһәд олзлх туск [http://meta.wikimedia.org/wiki/Help:Contents көтлвр] дастн.
@@ -163,10 +189,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki туск ЮмБи]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki шинҗллһнә бүрткл]',
-'about' => 'Тодлҗ бичлһн',
-'article' => 'Зүүл',
-'newwindow' => '(шин терзд)',
-'cancel' => 'Уга кех',
+'about' => 'Тодлҗ бичлһн',
+'article' => 'Зүүл',
+'newwindow' => '(шин терзд)',
+'cancel' => 'Уга кех',
+'moredotdotdot' => 'Цааранднь...',
+'mypage' => 'Мини эврә халх',
+'mytalk' => 'Күүндлһн бәәрм',
+'anontalk' => 'IP хайгна күндллһн',
+'navigation' => 'Орм медлһн',
+'and' => '&#32;болн',
+
+# Cologne Blue skin
'qbfind' => 'Хәәлһн',
'qbbrowse' => 'Гүүһәд хәләх',
'qbedit' => 'Чиклх',
@@ -174,15 +208,35 @@ $messages = array(
'qbpageinfo' => 'Халхин туск',
'qbmyoptions' => 'Тана халхс',
'qbspecialpages' => 'Көдлхнә халхс',
-'moredotdotdot' => 'Цааранднь...',
-'mypage' => 'Мини эврә халх',
-'mytalk' => 'Күүндлһн бәәрм',
-'anontalk' => 'IP хайгна күндллһн',
-'navigation' => 'Орм медлһн',
-'and' => '&#32;болн',
-
-# Metadata in edit box
-'metadata_help' => 'Мета өггцн:',
+'faq' => 'Юм би',
+'faqpage' => 'Project:Юм би',
+
+# Vector skin
+'vector-action-addsection' => 'Төриг немх',
+'vector-action-delete' => 'Һарһх',
+'vector-action-move' => 'Көндәх',
+'vector-action-protect' => 'Харсх',
+'vector-action-undelete' => 'Һарһх биш',
+'vector-action-unprotect' => 'Харсх биш',
+'vector-namespace-category' => 'Әәшл',
+'vector-namespace-help' => 'Цәәлһлһнә халх',
+'vector-namespace-image' => 'Боомг',
+'vector-namespace-main' => 'Халх',
+'vector-namespace-media' => 'Аһарин халх',
+'vector-namespace-mediawiki' => 'Зәңг',
+'vector-namespace-project' => 'Төслин халх',
+'vector-namespace-special' => 'Көдлхнә халх',
+'vector-namespace-talk' => 'Меткән',
+'vector-namespace-template' => 'Кевләр',
+'vector-namespace-user' => 'Демнчна халх',
+'vector-view-create' => 'Бүтәх',
+'vector-view-edit' => 'Чиклх',
+'vector-view-history' => 'Тууҗин хәләвр',
+'vector-view-view' => 'Умшлһн',
+'vector-view-viewsource' => 'Темдгллһнә хәләвр',
+'actions' => 'Үүлд',
+'namespaces' => 'Нернә ус',
+'variants' => 'Суңһлтс',
'errorpagetitle' => 'Эндү',
'returnto' => '«$1» тал хәрү ирх.',
@@ -232,12 +286,17 @@ $messages = array(
'otherlanguages' => 'Талдан келәр',
'redirectedfrom' => '($1 гидг һазрас авч одсмн)',
'redirectpagesub' => 'Авч оддг халх',
-'lastmodifiedat' => 'Тер халх эн цагт сүл чикләд болҗ: $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Тер халх эн цагт сүл чикләд болҗ: $2, $1.',
'viewcount' => 'Тер халхд $1 {{PLURAL:$1|дәкҗ|дәкҗ|дәкҗ}} орҗ.',
'protectedpage' => 'Харссн халх',
'jumpto' => 'Тал ирх:',
'jumptonavigation' => 'Һазр медлһн',
'jumptosearch' => 'хәәлһн',
+'view-pool-error' => 'Гемим тәвтн, ода серверүд хар-хату көдлмштә.
+Дегд дала күн тер халх үзхәр бәәнә.
+Буйн болтха, бәәҗәһәд дәкәд арһ хәәтн.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} тускар',
@@ -250,13 +309,12 @@ $messages = array(
'disclaimerpage' => 'Project:Даарас эс зөвшәрлһн',
'edithelp' => 'Чикллһнә дөң',
'edithelppage' => 'Help:Чикллһн',
-'faq' => 'Юм би',
-'faqpage' => 'Project:Юм би',
'helppage' => 'Help:Һарг',
'mainpage' => 'Нүр халх',
'mainpage-description' => 'Нүр халх',
'policy-url' => 'Project:Бодлһн',
'portal' => 'Бүрдәцин хург',
+'portal-url' => 'Project:Бүрдәцин хург',
'privacy' => 'Нууцин бодлһн',
'privacypage' => 'Project:Нууцин бодлһн',
@@ -372,6 +430,7 @@ $messages = array(
'nav-login-createaccount' => 'Харһх / бичгдлһн кех',
'loginprompt' => '{{SITENAME}} тал орлһна төлә, та «cookies» олзлдг кергтә.',
'userlogin' => 'Орх аль бичгдлһиг бүтәх',
+'userloginnocreate' => 'Харһх',
'logout' => 'Һарх',
'userlogout' => 'Һарх',
'notloggedin' => 'Та орв биш',
@@ -383,21 +442,8 @@ $messages = array(
'createaccountmail' => 'электрона улаһар',
'userexists' => 'Эн нер олзлдг юмн.
Буйн болтха, талдан нернь автн.',
-'youremail' => 'E-mail хайг:',
-'username' => 'Демнчна нер:',
-'uid' => 'Демнчна тойг (ID):',
-'prefs-memberingroups' => '{{PLURAL:$1|Багин|Багдудин}} хүв:',
-'yourrealname' => 'Үнн нерн:',
-'yourlanguage' => 'Бәәдлин келн:',
-'yourgender' => 'Киисн:',
-'gender-unknown' => 'Бичсн уга',
-'gender-male' => 'Эр',
-'gender-female' => 'Эм',
-'prefs-help-gender' => 'Эн дәкәд бәәдг: чик күндллһн тоолвртар төлә. Эн өггцн цуг әмтнә болх.',
-'email' => 'E-mail хайг',
-'prefs-help-realname' => 'Үнн нернь та эврә дурар бичнәт. Бичлхлә, эн тәвсн һарт элзлдг бәәх.',
'loginerror' => 'Орлһна эндү',
-'prefs-help-email' => 'E-mail хайг та эврә дурар бичнәт. Бичхлә, тадн шин түлкүр үгиг бичгәр йовулсн өгҗ чаднат (мартхла). Тадн дәкәд талдан улсд тана күндллһнә халхар күндлҗ зөв өгҗ чаднат, тана E-mail үзүләд уга.',
+'createaccounterror' => 'Бичгдлһиг бүтәх болшго: $1',
'noname' => 'Та зөвтә демнчна нернь бичв уга.',
'loginsuccesstitle' => 'Йовудта орлһн',
'loginsuccess' => "''' Тадн ода «$1» нертә {{SITENAME}} гидг нерәдлһтә төсвд бәәнәт.'''",
@@ -408,10 +454,13 @@ $messages = array(
'nosuchusershort' => '«<nowiki>$1</nowiki>» гидг нерәдлһтә демнч бәәшго.
Бичлһиг шүүтн.',
'nouserspecified' => 'Та демнчна нернь бичх йостав.',
+'login-userblocked' => 'Тер демнч бүслсн, харһад орҗ болшго бәәнә.',
'wrongpassword' => 'Та буру нууц үг бичв.
Дәкәд арһ хәәтн.',
'wrongpasswordempty' => 'Та хоосн нууц үгиг бичв.
Дәкәд арһ хәәтн.',
+'passwordtooshort' => 'Нууц үг баһар биш $1 {{PLURAL:$1|үзгтә|үзгүдта|үзгүдта}} бәәх йоста.',
+'password-name-match' => 'Нууц үг денмнчна нертә әдл биш бәәх йоста.',
'mailmypassword' => 'Шин нууц үгиг E-mail бичгәр йовулҗ',
'accountcreated' => 'Бичгдллһн бүтәв.',
'loginlanguagelabel' => 'Келн: $1',
@@ -424,6 +473,7 @@ $messages = array(
'retypenew' => 'Шин нууц үгиг дәкәд бичтн:',
'resetpass_success' => 'Тана нууц үгиг йовудта сольв! Та ода орнат...',
'resetpass-submit-loggedin' => 'Нууц үгиг сольх',
+'resetpass-submit-cancel' => 'Уга кех',
# Edit page toolbar
'bold_sample' => 'Тарһн бичг',
@@ -467,6 +517,8 @@ $messages = array(
Та эн һазрт эндүһәр бәәхлә, '''Хәрү''' дарциг дартн.",
'noarticletext' => "Эн халх хоосн. Та [[Special:Search/{{PAGENAME}}|эн нернә сананд орулһна хәәх]] , <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} бүртклин бичгт хәәх], аль '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} бүтәх]'''</span>.",
'clearyourcache' => "'''Оньган өгтн:''' Кесн сольлһн үзхәр, тана хәләлгчин кеш цеврүлтн: '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari''': ''Cmd+Shift+R'', '''Konqueror''': ''F5'', '''Opera''': ''Tools→Preferences'' менүһәс.",
+'usercssyoucanpreview' => "'''Селвг:''' тана шин CSS боомг шүүҗ хадһлар, «Хәләвр» товч олзлтн.",
+'userjsyoucanpreview' => "'''Селвг:''' тана шин JS боомг шүүҗ хадһлар, «Хәләвр» товч олзлтн.",
'usercsspreview' => "'''Тана CSS боомгин мел хәләвр бәәдг тускар тодлтн, тер ода чигн хадһлсн уга!'''",
'userjspreview' => "'''Тана JavaScript боомгин мел хәләвр бәәдг тускар тодлтн. Тана сольлһн ода чигн хадһлсн уга!'''",
'userinvalidcssjstitle' => "'''Оньг өгтн:''' «$1» гидг нерәдлһтә хувцнь олҗ биш. Күүнә .css болн .js халхс һанцхн бичкн үзгүдтә бичсн кергтә, үлгүрнь «{{ns:user}}:Болвчн/monobook.css»; «{{ns:user}}:Болвчн/Monobook.css» - буру.",
@@ -485,7 +537,10 @@ $messages = array(
'yourdiff' => 'Йилһән',
'copyrightwarning' => "Буйн болтха, цуг өгүллһн {{SITENAME}} төлә $2 гидг закаһар кесн, тоолсн бәәдг тускар тодлтн (Дәкәд өггцд төлә $1 хәләтн). Та тана бичсн чилклсн аль делгрңсн бәәҗ седхлә биш, эн ормд бичә бичтн.<br /> Дәкәд та маднд эн эврәнь бичсн, күмн әмтнә хазас аль цацу сул медснәс бәәдг үгән өгнәт. '''Зөвән авхла уга, харссн бичсн күүнә көдлмш бичә тәвтн!'''",
'copyrightwarning2' => "Буйн болтха, цуг өгүллһн {{SITENAME}} төлә чиклсн аль һарһсн бәәдг чадта тускар тодлтн. Та тана бичсн чилклсн аль делгрңсн бәәҗ седхлә биш, эн ормд бичә бичтн.<br /> Дәкәд та маднд эн эврәнь бичсн, күмн әмтнә хазас аль цацу сул медснәс бәәдг үгән өгнәт ($1 хәләтн). '''Зөвән авхла уга, харссн бичсн күүнә көдлмш бичә тәвтн!'''",
-'templatesused' => 'Зурад эн халхд олзлсн:',
+'semiprotectedpagewarning' => "'''Оньган өгтн:''' тер халх харссн болҗана, тер учрар эниг бичгдлһтә демнчнр һанцхн чиклҗ чадна.
+Нөкд төлә, эн шидрә сеткүлин бичвр:",
+'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|зурас|зурас}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
'template-protected' => '(харссн)',
'template-semiprotected' => '(зәрм харссн)',
'hiddencategories' => 'Эн халх тер $1 {{PLURAL:$1|бултулсн әәшләс|бултулсн әәшлүдәс|бултулсн әәшлүдәс}}:',
@@ -497,6 +552,8 @@ $messages = array(
# History pages
'viewpagelogs' => 'Тер халхна сеткүлдүд үзүлх',
+'currentrev-asof' => 'Ода болсн янз ($1)',
+'revisionasof' => 'Тер цагин янз: $1',
'previousrevision' => '← Урдк янз',
'nextrevision' => 'Дарук янз →',
'currentrevisionlink' => 'Ода болсн янз',
@@ -512,9 +569,14 @@ $messages = array(
'historyempty' => '(хоосн)',
# Revision deletion
-'rev-delundel' => 'үзүлх/бултулх',
-'revdel-restore' => 'Үзгдллһиг сольх',
-'pagehist' => 'Халхна тууҗ',
+'rev-delundel' => 'үзүлх/бултулх',
+'rev-showdeleted' => 'үзүлх',
+'revdelete-show-file-submit' => 'Тиим',
+'revdelete-radio-set' => 'Ээ',
+'revdelete-radio-unset' => 'Уга',
+'revdel-restore' => 'Үзгдллһиг сольх',
+'pagehist' => 'Халхна тууҗ',
+'revdelete-otherreason' => 'Талдан/дәкәд учр:',
# History merging
'mergehistory-reason' => 'Учр:',
@@ -535,12 +597,14 @@ $messages = array(
'searchresulttext' => 'Дәкәд өггцна төлә, [[{{MediaWiki:Helppage}}|дөң өггдг һазрт]] хәләтн.',
'searchsubtitle' => '«[[:$1]]» сурвра ([[Special:Prefixindex/$1|эн нертә эклсн халхс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|эн нерт заадг]])',
'searchsubtitleinvalid' => "Тадн '''$1''' төлә хәәләт",
-'noexactmatch' => "'''\"\$1\" гидг нертә халх бәәшго.'''
-Та энгиг [[:\$1|бүтәж чаднат]].",
-'noexactmatch-nocreate' => "'''«$1» гидг нертә халх бәәшго.'''",
'notitlematches' => 'Нернә ирлцлһн уга',
'notextmatches' => 'Әдл бичг халхд уга',
-'viewprevnext' => 'Гүүһәд хәләх ($1 ) ($2) ($3)',
+'prevn' => 'урдк {{PLURAL:$1|$1}}',
+'nextn' => 'дарук {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Гүүһәд хәләх ($1 {{int:pipe-separator}} $2) ($3)',
+'searchprofile-articles' => 'Зүүлс',
+'searchprofile-project' => 'Цәәлһлһнә болн төсвин халхс',
+'searchprofile-images' => 'Үзгдл-соңсвр',
'searchprofile-everything' => 'Цуһар',
'searchprofile-articles-tooltip' => '$1 гидг зүүлд хәәх',
'searchprofile-project-tooltip' => '$1 гидг төсвд хәәх',
@@ -556,6 +620,7 @@ $messages = array(
'search-mwsuggest-enabled' => 'селвгтә',
'search-mwsuggest-disabled' => 'селвг уга',
'mwsuggest-disable' => 'AJAX селвг унтрах',
+'searcheverything-enable' => 'Цуг нернә ууд хәәх',
'searchall' => 'цуг',
'nonefound' => "'''Нүдлтн''': Мел зәрм нернә у талд урдаснь хәәсмн.
''all:'' гидг эклц немтн та һазр болһнд хәәх.",
@@ -564,49 +629,86 @@ $messages = array(
'powersearch-ns' => 'Эн нернә у дотран хәәх:',
'powersearch-redir' => 'Авч одлһуд үзүлх',
'powersearch-field' => 'Хәәх',
+'powersearch-togglenone' => 'Уга',
+
+# Quickbar
+'qbsettings' => 'Ормин самбр',
# Preferences page
-'preferences' => 'Дурллһн',
-'mypreferences' => 'Көгүд',
-'prefs-edits' => 'Чикллһнә то:',
-'prefsnologin' => 'Та харһв биш',
-'qbsettings' => 'Ормин самбр',
-'changepassword' => 'Нууц үгиг сольҗ',
-'skin-preview' => 'Хәләвр',
-'datedefault' => 'Келхлә уга',
-'prefs-personal' => 'Демнчна көгүд',
-'prefs-rc' => 'Шидрә сольлһн',
-'prefs-watchlist' => 'Шинҗллһнә сеткүл',
-'prefs-watchlist-days' => 'Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:',
-'prefs-misc' => 'Талдан',
-'prefs-resetpass' => 'Нууц угиг сольҗ',
-'saveprefs' => 'Хадһлх',
-'restoreprefs' => 'Цуг эклцин көгүдиг босхҗ тохрар',
-'rows' => 'Мөрд:',
-'columns' => 'Бахд:',
-'resultsperpage' => 'Халхд бәәдг олсн бичврин то:',
-'savedprefs' => 'Тана көгүдиг хадһлв.',
-'timezonelegend' => 'Часин бүс:',
-'localtime' => 'Бәәрн һазра цаг:',
-'timezoneuseserverdefault' => 'Серверинь олзлх',
-'timezoneuseoffset' => 'Талдан (көндллһн заатн)',
-'timezoneoffset' => 'Көндллһн¹:',
-'servertime' => 'Серверин цаг:',
-'guesstimezone' => 'Хәләлгчәс авх',
-'timezoneregion-africa' => 'Априк',
-'timezoneregion-america' => 'Америк',
-'timezoneregion-antarctica' => 'Антарктик',
-'timezoneregion-arctic' => 'Арктик',
-'timezoneregion-asia' => 'Азь',
-'timezoneregion-atlantic' => 'Атлантин дала',
-'timezoneregion-australia' => 'Австрал',
-'timezoneregion-europe' => 'Европ',
-'timezoneregion-indian' => 'Энетекгин дала',
-'timezoneregion-pacific' => 'Номһн дала',
-'prefs-searchoptions' => 'Хәәлһнә көг',
-'prefs-namespaces' => 'Нернә ус',
-'prefs-custom-css' => 'Онц CSS',
-'prefs-custom-js' => 'Онц JS',
+'preferences' => 'Дурллһн',
+'mypreferences' => 'Көгүд',
+'prefs-edits' => 'Чикллһнә то:',
+'prefsnologin' => 'Та харһв биш',
+'prefsnologintext' => 'Та <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} харһх]</span> кергтә, тегәд көгүдиг сольҗ чаднат.',
+'changepassword' => 'Нууц үгиг сольҗ',
+'prefs-skin' => 'Хувцнь',
+'skin-preview' => 'Хәләвр',
+'prefs-math' => 'Тетшкүлүд',
+'datedefault' => 'Келхлә уга',
+'prefs-datetime' => 'Цаг хуһцан',
+'prefs-personal' => 'Демнчна көгүд',
+'prefs-rc' => 'Шидрә сольлһн',
+'prefs-watchlist' => 'Шинҗллһнә сеткүл',
+'prefs-watchlist-days' => 'Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:',
+'prefs-watchlist-days-max' => '(ик гисн 7 хонг)',
+'prefs-misc' => 'Талдан',
+'prefs-resetpass' => 'Нууц угиг сольҗ',
+'prefs-email' => "E-mail'ын көгүд",
+'prefs-rendering' => 'Һазад бәәдл',
+'saveprefs' => 'Хадһлх',
+'restoreprefs' => 'Цуг эклцин көгүдиг босхҗ тохрар',
+'prefs-editing' => 'Чикллһн',
+'rows' => 'Мөрд:',
+'columns' => 'Бахд:',
+'resultsperpage' => 'Халхд бәәдг олсн бичврин то:',
+'savedprefs' => 'Тана көгүдиг хадһлв.',
+'timezonelegend' => 'Часин бүс:',
+'localtime' => 'Бәәрн һазра цаг:',
+'timezoneuseserverdefault' => 'Серверинь олзлх',
+'timezoneuseoffset' => 'Талдан (көндллһн заатн)',
+'timezoneoffset' => 'Көндллһн¹:',
+'servertime' => 'Серверин цаг:',
+'guesstimezone' => 'Хәләлгчәс авх',
+'timezoneregion-africa' => 'Априк',
+'timezoneregion-america' => 'Америк',
+'timezoneregion-antarctica' => 'Антарктик',
+'timezoneregion-arctic' => 'Арктик',
+'timezoneregion-asia' => 'Азь',
+'timezoneregion-atlantic' => 'Атлантин дала',
+'timezoneregion-australia' => 'Австрал',
+'timezoneregion-europe' => 'Европ',
+'timezoneregion-indian' => 'Энетекгин дала',
+'timezoneregion-pacific' => 'Номһн дала',
+'prefs-searchoptions' => 'Хәәлһнә көг',
+'prefs-namespaces' => 'Нернә ус',
+'prefs-custom-css' => 'Онц CSS',
+'prefs-custom-js' => 'Онц JS',
+'prefs-emailconfirm-label' => 'E-mail батлһн:',
+'youremail' => 'E-mail хайг:',
+'username' => 'Демнчна нер:',
+'uid' => 'Демнчна тойг (ID):',
+'prefs-memberingroups' => '{{PLURAL:$1|Багин|Багдудин}} хүв:',
+'prefs-registration' => 'Темдглҗ бүртклһнә цаг:',
+'yourrealname' => 'Үнн нерн:',
+'yourlanguage' => 'Бәәдлин келн:',
+'yournick' => 'Тәвсн һар:',
+'prefs-help-signature' => 'Меткән халхна бичсн бичгт «<nowiki>~~~~</nowiki>» немәд һаран тәвх кергтә. Тер үзгүд тана тәвсн һарт болн цагин бичлгт болулх.',
+'yourgender' => 'Киисн:',
+'gender-unknown' => 'Бичсн уга',
+'gender-male' => 'Эр',
+'gender-female' => 'Эм',
+'prefs-help-gender' => 'Эн дәкәд бәәдг: чик күндллһн тоолвртар төлә. Эн өггцн цуг әмтнә болх.',
+'email' => 'E-mail хайг',
+'prefs-help-realname' => 'Үнн нернь та эврә дурар бичнәт. Бичлхлә, эн тәвсн һарт элзлдг бәәх.',
+'prefs-help-email' => 'E-mail хайг та эврә дурар бичнәт. Бичхлә, тадн шин түлкүр үгиг бичгәр йовулсн өгҗ чаднат (мартхла). Тадн дәкәд талдан улсд тана күндллһнә халхар күндлҗ зөв өгҗ чаднат, тана E-mail үзүләд уга.',
+'prefs-i18n' => 'Олн орни бәәлһн',
+'prefs-signature' => 'Тәвсн һаран',
+'prefs-advancedediting' => 'Дәкәд көгүд',
+'prefs-advancedrc' => 'Дәкәд көгүд',
+'prefs-advancedrendering' => 'Дәкәд көгүд',
+'prefs-advancedsearchoptions' => 'Дәкәд көгүд',
+'prefs-advancedwatchlist' => 'Дәкәд көгүд',
+'prefs-diffs' => 'Йилһәс',
# User rights
'userrights-reason' => 'Учр:',
@@ -645,6 +747,13 @@ $messages = array(
'recentchanges-legend' => 'Шидрә сольлһна көгүд',
'recentchangestext' => 'Эн цагин дараһар бичсн шидрә сольлһн',
'recentchanges-feed-description' => 'Эн зәңгллһд шидрә хүврһд шинҗлх.',
+'recentchanges-label-legend' => 'Тәәлвр: $1.',
+'recentchanges-legend-newpage' => '$1 — шин халх',
+'recentchanges-label-newpage' => 'Тер үүләр шин халх бүтәв',
+'recentchanges-legend-minor' => '$1 — баһ сольлһн',
+'recentchanges-label-minor' => 'Эн баһ чинртә сольлһн',
+'recentchanges-legend-bot' => '$1 — көдлврә сольлһн',
+'recentchanges-label-bot' => 'Эн сольлһн көдлвр (робот) кехв',
'rcnote' => "{{PLURAL:$1|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн}}, '''$2''' өдрә, $5 $4 цагин.",
'rclistfrom' => 'Тер цагас авн сольлһн үзүлх: $1.',
'rcshowhideminor' => 'баһ чикллһиг $1',
@@ -666,6 +775,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'Садн чикллһн',
+'recentchangeslinked-feed' => 'Садта чикллһн',
+'recentchangeslinked-toolbox' => 'Садта чикллһн',
'recentchangeslinked-title' => '$1 садта сольлһн',
'recentchangeslinked-noresult' => 'Садта халх заасн цагт сольсн уга',
'recentchangeslinked-summary' => "Эн тер халх заалдг халхсин (аль тер янзин халхсин) шидрә сольлһн.
@@ -686,7 +797,8 @@ $messages = array(
'savefile' => 'Хадһлх',
'uploadedimage' => '«[[$1]]» тәвв',
-'license' => 'Закан:',
+'license' => 'Закан:',
+'license-header' => 'Закан:',
# Special:ListFiles
'imgfile' => 'боомг',
@@ -699,6 +811,7 @@ $messages = array(
'listfiles_count' => 'Янзс',
# File description page
+'file-anchor-link' => 'Боомг',
'filehist' => 'Боомгин тууҗ',
'filehist-help' => 'Боомгин өңгрсн цагин янз хәләх, цагиг дартн.',
'filehist-deleteall' => 'цуг һарһх',
@@ -706,12 +819,13 @@ $messages = array(
'filehist-current' => 'ода цагин',
'filehist-datetime' => 'Өдр/цаг',
'filehist-thumb' => 'Зураллһн',
+'filehist-thumbtext' => '$1 янзин зураллһн',
'filehist-user' => 'Демнч',
'filehist-dimensions' => 'Юмна кир',
'filehist-comment' => 'Аҗгллһн',
'imagelinks' => 'Боомгд заалһуд',
'linkstoimage' => '{{PLURAL:$1|Эн $1 халх|Эн $1 халхс|Эн $1 халхс}} тер боомгд заалдг бәәнә:',
-'sharedupload' => 'Эн боомг $1 ормас. Териг талдан төсвд олзлҗ болх.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
+'sharedupload' => 'Эн боомг $1 ормас. Териг талдан төсвд олзлҗ болх.',
'uploadnewversion-linktext' => 'Тер боомгин шин һарц тәвх',
# Random page
@@ -737,6 +851,9 @@ $messages = array(
'statistics-users-active-desc' => '{{PLURAL:$1|$1 өдрт|$1 өдрмүдт|$1 өдрмүдт}} болв чигн үүл кесн демнчнр',
'statistics-mostpopular' => 'Маш хәләсн халхс',
+'brokenredirects-edit' => 'чиклх',
+'brokenredirects-delete' => 'һарһх',
+
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байд|байдуд|байдуд}}',
'nmembers' => '$1 {{PLURAL:$1|мөч|мөчин|мөчүд}}',
@@ -797,8 +914,30 @@ $messages = array(
'watching' => 'Шинҗллһнә бүтлклд немлһн...',
'unwatching' => 'Шинҗлһнә бүрткләс һарһлһн...',
-'changed' => 'сольв',
-'created' => 'бүтәв',
+'changed' => 'сольв',
+'created' => 'бүтәв',
+'enotif_body' => 'Мендвт, күндтә $WATCHINGUSERNAME,
+
+$PAGEEDITDATE цагт {{SITENAME}} төсвин $PAGETITLE халхиг $PAGEEDITOR $CHANGEDORCREATED. Ода болсн халхна янз үзҗ седхлә, $PAGETITLE_URL хәләтн.
+
+$NEWPAGE
+
+Сольлһнә учр-утх: $PAGESUMMARY $PAGEMINOREDIT
+
+Сольлчд бичг йовуллһн:
+e-mail\'ар $PAGEEDITOR_EMAIL
+бикиһәр $PAGEEDITOR_WIKI
+
+Эн халх орхла биш, терүнә дәкәд сольлһн болхла, медүллһн бәәх уга. Тааһар шинҗлсн халхс сольлһна туск медүллһн унтраҗ чаднат.
+
+ {{grammar:genitive|{{SITENAME}}}} зәңгллһнә церглт
+
+--
+Тана шинҗллһнә сеткүлин көгүдиг сольҗ седхлә, эниг дахтн:
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+Хәрү холва болн тус:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Эн халхиг һарһҗ',
@@ -832,7 +971,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
'protectexpiry' => 'Өңгрнә:',
'protect_expiry_invalid' => 'Буру өңгрллһнә цаг',
'protect_expiry_old' => 'Өңгрллһнә цаг бәәв.',
-'protect-unchain' => 'Көндллһиг зөвшәх.',
'protect-text' => "Энд та '''<nowiki>$1</nowiki>''' халхин харсллһна кемҗән хәләҗ, хүврлҗ чаднат.",
'protect-locked-access' => "Эн халхна харсллһна кемҗән сольҗ, тана бичгдлһна зөв тату.
Ода болсн '''$1''' халхна көгүд:",
@@ -873,6 +1011,8 @@ $2 шидрә һарһлһна төлә хәләтн.',
'sp-contributions-newbies' => 'Шин бичгдлһтә кесн демнлһн һанцхн үзүлх',
'sp-contributions-blocklog' => 'бүсллһнә сеткүл',
+'sp-contributions-deleted' => 'һарһсн демнчна сольлһн',
+'sp-contributions-talk' => 'меткән',
'sp-contributions-search' => 'Демнлһиг хәәлһн',
'sp-contributions-username' => 'IP хайг аль нернь:',
'sp-contributions-submit' => 'Хәәлһн',
@@ -899,7 +1039,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'ipadressorusername' => 'IP хайг аль демнчна нернь:',
'ipbreason' => 'Учр:',
'ipbreasonotherlist' => 'Талдан учр',
-'ipboptions' => '2 часуд:2 hours,1 өдр:1 day,3 өдрмүд:3 days,1 долан хонг:1 week,2 долан хонгуд:2 weeks,1 сар:1 month,3 сармуд:3 months,6 сармуд:6 months,1 җил:1 year,мөнк:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 часуд:2 hours,1 өдр:1 day,3 өдрмүд:3 days,1 долан хонг:1 week,2 долан хонгуд:2 weeks,1 сар:1 month,3 сармуд:3 months,6 сармуд:6 months,1 җил:1 year,мөнк:infinite',
'ipblocklist' => 'Бүслсн IP хайгуд болн демнчнр',
'blocklink' => 'бүслх',
'unblocklink' => 'бүслх биш',
@@ -934,7 +1074,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'move-watch' => 'Эн халхиг шинҗлх',
'movepagebtn' => 'Халхиг йовулх',
'pagemovedsub' => 'Йовудта йовуллһн',
-'movepage-moved' => "'''«$1» халх шин нернь («$2») өгв'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''«$1» халх шин нернь («$2») өгв'''",
'articleexists' => 'Тер нерәдлһтә халх бәәнә, аль та буру нернь суңһвт.
Буйн болтха, талдан нернь өгтн.',
'talkexists' => "'''Халхин йовудта көндллһн. Болв, ухалвр халх көндәх болшго. Юнгад гихлә, эн нерәдлһтә халх бәәнә. Буйн болтха, териг һарар неҗәлтн.'''",
@@ -951,6 +1091,10 @@ $2 шидрә һарһлһна төлә хәләтн.',
'export-addcat' => 'Немх',
'export-addns' => 'Немх',
+# Namespace 8 related
+'allmessages-filter-all' => 'Цуг',
+'allmessages-language' => 'Келн:',
+
# Thumbnails
'thumbnail-more' => 'Икдүлх',
@@ -979,6 +1123,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'tooltip-search-fulltext' => 'Эн бичәтә халхс хәәх',
'tooltip-p-logo' => 'Нүр халхд орх',
'tooltip-n-mainpage' => 'Һол халхд орх',
+'tooltip-n-mainpage-description' => 'Нүр халхд орх',
'tooltip-n-portal' => 'Төслин туск; та ю кеҗ чаднат; орм медлһн',
'tooltip-n-currentevents' => 'Ода болсн зәңгсин бурткл',
'tooltip-n-recentchanges' => 'Шидрә сольлһна бүрткл',
@@ -1024,6 +1169,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'svg-long-desc' => '(SVG боомг, $1 × $2 мет цегтә, боомгин кемҗән: $3)',
'show-big-image' => 'Күцц чинр',
'show-big-image-thumb' => '<small>Урдаснь хәләврин кемҗән: $1 × $2 цегтә</small>',
+'file-info-gif-looped' => 'билцгсн',
# Bad image list
'bad_image_list' => 'Эн темдглһн кергтә:
@@ -1044,7 +1190,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'Өргн',
@@ -1072,8 +1218,8 @@ $2 шидрә һарһлһна төлә хәләтн.',
'exif-gpslongitude' => 'Утлт',
'exif-gpsaltitude' => 'Теңгсәс өндр',
-'exif-orientation-1' => 'Кирин', # 0th row: top; 0th column: left
-'exif-orientation-2' => 'Теңгрин хормаһар туссн', # 0th row: top; 0th column: right
+'exif-orientation-1' => 'Кирин',
+'exif-orientation-2' => 'Теңгрин хормаһар туссн',
# External editor support
'edit-externally' => 'Эн боомгиг һаза заклһар чиклх',
@@ -1085,6 +1231,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'watchlistall2' => 'цуг',
'namespacesall' => 'цуг',
'monthsall' => 'цуг',
+'limitall' => 'цуг',
# action=purge
'confirm_purge_button' => 'Тиим',
@@ -1153,4 +1300,8 @@ $2 шидрә һарһлһна төлә хәләтн.',
'blankpage' => 'Хоосн халх',
'intentionallyblankpage' => 'Тер халх хоосн күслтә бәәнә.',
+# HTML forms
+'htmlform-reset' => 'Сольлһиг уга кех',
+'htmlform-selectorother-other' => 'Талдан',
+
);
diff --git a/languages/messages/MessagesXh.php b/languages/messages/MessagesXh.php
index d12c53b6..8d9580af 100644
--- a/languages/messages/MessagesXh.php
+++ b/languages/messages/MessagesXh.php
@@ -45,10 +45,12 @@ $messages = array(
'december-gen' => 'Eyo Mnga',
'may' => 'EkaCanzibe',
-'article' => 'Inqaku',
+'article' => 'Inqaku',
+'mypage' => 'Inqaku yam',
+'mytalk' => 'Inthetho yam',
+
+# Cologne Blue skin
'qbspecialpages' => 'Amaphepha Abalulekileyo',
-'mypage' => 'Inqaku yam',
-'mytalk' => 'Inthetho yam',
'help' => 'Uncedo',
'search' => 'Khangela',
@@ -88,7 +90,6 @@ I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENA
'yourpasswordagain' => 'Faka kwakhona igama elifihlakeleyo:',
'remembermypassword' => 'Khumbula igama lam elifihlakeleyo kule Khompyutha',
'createaccount' => 'Vula I Account',
-'username' => 'Igama lelungu:',
'loginlanguagelabel' => 'Ulwimi: $1',
# Edit pages
@@ -105,13 +106,16 @@ I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENA
# Preferences page
'mypreferences' => 'Ezithandwa ndim',
'searchresultshead' => 'Khangela',
+'username' => 'Igama lelungu:',
# Recent changes
'recentchanges' => 'Utshitsho olusandokwenziwa',
'minoreditletter' => 'nc',
# Recent changes linked
-'recentchangeslinked' => 'Utsitsho olufana nolu',
+'recentchangeslinked' => 'Utsitsho olufana nolu',
+'recentchangeslinked-feed' => 'Utsitsho olufana nolu',
+'recentchangeslinked-toolbox' => 'Utsitsho olufana nolu',
# Upload
'upload' => 'Faka Ifile',
@@ -139,6 +143,7 @@ I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENA
'contributions' => 'Imisebenzi ye lungu',
'mycontris' => 'Inkxaso yam',
+'sp-contributions-talk' => 'Inthetho',
'sp-contributions-submit' => 'Khangela',
# Block/unblock
diff --git a/languages/messages/MessagesXmf.php b/languages/messages/MessagesXmf.php
index 09066d73..34ed562f 100644
--- a/languages/messages/MessagesXmf.php
+++ b/languages/messages/MessagesXmf.php
@@ -88,21 +88,31 @@ $messages = array(
'category-subcat-count' => '{{PLURAL:$2|თე კატეგორია იკათუანს ხვალო ათე გიმენკატეგორიას.|თე კატეგორიას მოჩამილი რე $1 გიმენკატეგორია $2-შე.}}',
'listingcontinuesabbrev' => 'გინძარ.',
-'about' => '-შენი',
-'article' => 'სტატია',
-'newwindow' => '(ახალ ოჭკორიეშა)',
-'cancel' => 'გაუქვება',
+'about' => '-შენი',
+'article' => 'სტატია',
+'newwindow' => '(ახალ ოჭკორიეშა)',
+'cancel' => 'გაუქვება',
+'moredotdotdot' => 'სრულო...',
+'mypage' => 'ჩქიმ ხასილა',
+'mytalk' => 'ჩქიმ სხუნუა',
+'navigation' => 'ნავიგაცია',
+'and' => '&#32;დო',
+
+# Cologne Blue skin
'qbfind' => 'მიგორე',
'qbedit' => 'რედაქტირება',
'qbpageoptions' => 'თენა ხასილა',
'qbpageinfo' => 'კონტექსტ',
'qbmyoptions' => 'ჩქიმ ხასილეფ',
'qbspecialpages' => 'სპეციალურ ხასილეფ',
-'moredotdotdot' => 'სრულო...',
-'mypage' => 'ჩქიმ ხასილა',
-'mytalk' => 'ჩქიმ სხუნუა',
-'navigation' => 'ნავიგაცია',
-'and' => '&#32;დო',
+
+# Vector skin
+'vector-namespace-category' => 'კატეგორია',
+'vector-namespace-main' => 'ხასილა',
+'vector-namespace-special' => 'სპეციალური ხასილა',
+'vector-view-create' => 'დორსხუაფა',
+'vector-view-edit' => 'რედაქტირაფა',
+'vector-view-viewsource' => 'ქიძირე წყუ',
'errorpagetitle' => 'შეცთომა',
'returnto' => 'დირთი $1-შა',
@@ -136,7 +146,7 @@ $messages = array(
'otherlanguages' => 'შხვა ნინალეფს',
'redirectedfrom' => '(გინოღალულ რე $1-იშე)',
'redirectpagesub' => 'გინოწურაფა ხასილას',
-'lastmodifiedat' => 'თე ხასილაქ ბოლოს გეახალუ $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'თე ხასილაქ ბოლოს გეახალუ $2, $1.',
'jumpto' => 'გეგნორთ:',
'jumptonavigation' => 'ნავიგაცია',
'jumptosearch' => 'გორუა',
@@ -213,8 +223,6 @@ $messages = array(
'nologinlink' => 'გონწყით ანგარიშ',
'gotaccount' => "უკვე რეგისტრირებულ რეთ? '''$1'''",
'gotaccountlink' => 'მინულა',
-'yourrealname' => 'ნანდულ სახელ *',
-'yourlanguage' => 'ნინა:',
'loginsuccess' => "'''ასე მიშულირ რეთ {{SITENAME}}-ს მუჭოთ \"\$1\".'''",
'nouserspecified' => 'საჭირო რე მახვარებელიშ სახელიშ მიშაჭარუა.',
'mailmypassword' => 'ახალ პაროლიშ მოჯღონა',
@@ -285,7 +293,7 @@ $messages = array(
'hiddencategories' => 'თე ხასილა ეკორცხილი რე $1 ფულირი კატეგორიას.',
'nocreatetext' => 'თე ხასილას ვა შილებე ახალ ხასილაშ გექიმინუა დორცხუაფილ ვარიაშ გეშა. თქვა შეგილებუნა კინორთა დო გექიმინელ ხასილაშ რედაქტირაფა, ვარა [[სპეციალურ:Userlogin|მიშულა დო ანგარიშიშ დორცხუაფა]]',
'permissionserrorstext-withaction' => 'თქვა ვა გიღუნა ამ ქიმინობაშ - $2 ღოლამაშ ნებართვა თე გეყვენჯი $1 მიზეზით:',
-'recreate-deleted-warn' => "'''გართხილება: თქვა კინე ახალშო დუთმარცხუანთ ხასილას, ნამუქუთ ორდო ილასუნ'''
+'recreate-moveddeleted-warn' => "'''გართხილება: თქვა კინე ახალშო დუთმარცხუანთ ხასილას, ნამუქუთ ორდო ილასუნ'''
რთხინთ, დეფირქათ, მისაღეფ რე დო ვარ თე ხასილაშ რედაქტირაფაშ გოგინძორაფა.
ინფორმაციაშო თუდოლე მოჩამილიე თე ხასილაშ ლასუაშ ისტორია:",
@@ -294,7 +302,7 @@ $messages = array(
'viewpagelogs' => 'თე ხასილაშა სარეგისტრაციე ჟურნალეფიშ ძირაფა',
'currentrev' => 'მიმალ გიშანწყუალა',
'revisionasof' => '$1-იშ ვერსია',
-'revision-info' => '$1-იშ ვერსია, $2-იშ მიშაღალირ', # Additionally available: $3: revision id
+'revision-info' => '$1-იშ ვერსია, $2-იშ მიშაღალირ',
'previousrevision' => '←ჯვეშ ვერსია',
'nextrevision' => 'უკულ ვერსია→',
'currentrevisionlink' => 'მიმალ ვერსია',
@@ -314,7 +322,7 @@ $messages = array(
# Revision feed
'history-feed-title' => 'რედაქტირებიშ ისტორია',
'history-feed-description' => 'თენა გვერდიშ რედაქტირებეფიშ ისტორია ვიკის',
-'history-feed-item-nocomment' => '$1 $2-ს', # user at time
+'history-feed-item-nocomment' => '$1 $2-ს',
# Revision deletion
'rev-delundel' => 'ძირაფა/ტყობინაფა',
@@ -336,11 +344,10 @@ $messages = array(
'searchresulttext' => 'უმოსი ინფორმაციაშენ {{SITENAME}}-შ ოგორუშენ რთხინთ ძირათინ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'თქვა დოგორით \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ირი ხასილა, დოჭყაფილი "$1"-ით]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ირი ხასილა, ბინუთ"$1"-შა]])',
'searchsubtitleinvalid' => "თქვა მიგორეთ '''$1'''",
-'noexactmatch' => "'''ხასილა თე სახელით \"\$1\" ვაარსეენს.''' თქვა შეილებნა [[:\$1|თე გვერდიშ ღოლამა]].",
'notitlematches' => 'ვა უხუჯანს ნამუთინი ხასილაშ ჯოხო',
'prevn' => 'წოხლენ $1',
-'nextn' => 'უკულ $1',
-'viewprevnext' => 'ქოძირ ($1) ($2) ($3).',
+'nextn' => 'უკულ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ქოძირ ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:მოხვარა',
'search-result-size' => '$1 ($2 ზიტყვა)',
'search-redirect' => '(გინოწურაფა $1)',
@@ -361,6 +368,8 @@ $messages = array(
# Preferences page
'preferences' => 'კონფიგურაცია',
'mypreferences' => 'ჩქიმ კონფიგურაცია',
+'yourrealname' => 'ნანდულ სახელ *',
+'yourlanguage' => 'ნინა:',
# Groups
'group-sysop' => 'ადმინისტრატორეფი',
@@ -399,6 +408,8 @@ $messages = array(
# Recent changes linked
'recentchangeslinked' => 'აკოხვალამირ თირაფეფ',
+'recentchangeslinked-feed' => 'აკოხვალამირ თირაფეფ',
+'recentchangeslinked-toolbox' => 'აკოხვალამირ თირაფეფ',
'recentchangeslinked-title' => '"$1"-წკუმა მებუნაფილ თირაფეფი',
'recentchangeslinked-noresult' => 'წურაფილ პერიოდს თირაფეფ აკოხვალამირ ხასილეფს ვა ჸოფერენ.',
'recentchangeslinked-summary' => "ენა რე მეწურაფილი ხასილაწკუმა (ვარა მეწურაფილი კატეგორიაშ მაკათურეფწკუმა) გინორცხუაფილი ხასილეფს ბოლო დროს ღოლამირი გოთირუეფიშ სია.
@@ -416,6 +427,7 @@ $messages = array(
'listfiles_name' => 'სახელ',
# File description page
+'file-anchor-link' => 'ფაილი',
'filehist' => 'ფაილიშ ისტორია',
'filehist-help' => 'ქოგეუნჭირით ბორჯის, ნამდა ქოძირათ ფაილი თეშ, მუჭოთ თინა თიწკუმა კილეძირედუ.',
'filehist-current' => 'მიმალ',
@@ -428,8 +440,7 @@ $messages = array(
'imagelinks' => 'ფაილეფიშ ბინუეფი',
'linkstoimage' => 'გეჸვენჯი {{PLURAL:$1|ხასილა|ხასილეფ}} მორცხუ თე ფაილს',
'nolinkstoimage' => 'ვა რე თე ფაილწკუმა მერსხილ ხასილეფ.',
-'sharedupload' => 'თენა ფაილ გეთებულ რე საართო სარგებლობაშოთ დო შილებე თიში გიმორინაფა შხვა პროექტეფს.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'noimage' => 'ფაილ თე სახელით ვაარსეენც, თქვან შეგილებუნთ $1.',
+'sharedupload' => 'თენა ფაილ გეთებულ რე საართო სარგებლობაშოთ დო შილებე თიში გიმორინაფა შხვა პროექტეფს.',
# MIME search
'mimesearch' => 'MIME გორუა',
@@ -529,13 +540,12 @@ $messages = array(
'prot_1movedto2' => '[[$1]] გინოღალირიე ხასილაშა [[$2]]',
'protectcomment' => 'საბაბი',
'protectexpiry' => 'ვადა',
-'protect-unchain' => 'გინოღალას ალობას ბლოკიშ მონწყუმა',
'protect-default' => '(სტანდარტულ)',
'protect-fallback' => 'საჭიროე "$1"-იშ ულაფა',
'protect-level-autoconfirmed' => 'ვარეგისტრირებულ მახვარებელეფიშ დაბლოკვა',
'protect-level-sysop' => 'ხვალე ადმინისტრატორეფ',
'protect-summary-cascade' => 'იერარქიულ',
-'protect-expiry-options' => '2 საათი:2 hours,1 დღა:1 დღა,1 მარა:1 week,2 მარა:2 weeks,1 თუთა:1 month,3 თუთა:3 months,6 თუთა:6 months,1 წანა:1 year,განუსაზღვრელი ვადით:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '2 საათი:2 hours,1 დღა:1 დღა,1 მარა:1 week,2 მარა:2 weeks,1 თუთა:1 month,3 თუთა:3 months,6 თუთა:6 months,1 წანა:1 year,განუსაზღვრელი ვადით:infinite',
'restriction-type' => 'ულაფა',
# Undelete
@@ -560,6 +570,7 @@ $messages = array(
'sp-contributions-newbies-sub' => 'ახალეფშოთ',
'sp-contributions-blocklog' => 'ბლოკირებაშ ისტორია',
+'sp-contributions-talk' => 'სხუნუა',
'sp-contributions-search' => 'წილიშ გორუა',
'sp-contributions-username' => 'IP მიოწურაფუ ვარა მოხვარეშ ჯოხო:',
'sp-contributions-submit' => 'გორუა',
@@ -582,7 +593,7 @@ $messages = array(
# Block/unblock
'blockip' => 'მახვარებელიშ ვარა IP მისამართიშ ბლოკირება',
-'ipboptions' => '2 საათი:2 hours,1 დღა:1 დღა,3 დღა:3 დღალეფ,1 მარა:1 week,2 მარა:2 weeks,1 თუთა:1 month,3 თუთა:3 months,6 თუთა:6 months,1 წანა:1 year,განუსაზღვრელი ვადით:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 საათი:2 hours,1 დღა:1 დღა,3 დღა:3 დღალეფ,1 მარა:1 week,2 მარა:2 weeks,1 თუთა:1 month,3 თუთა:3 months,6 თუთა:6 months,1 წანა:1 year,განუსაზღვრელი ვადით:infinite',
'ipbotheroption' => 'შხვა',
'ipblocklist-submit' => 'გორუა',
'blocklink' => 'ბლოკირაფა',
@@ -600,7 +611,7 @@ $messages = array(
'move-watch' => 'თე ხასილაშ კონტროლ',
'movepagebtn' => 'ხასილაშ გინოღალა',
'pagemovedsub' => 'გინოღალა რსულებულ რე',
-'movepage-moved' => '\'\'\'"$1" გინოღალულ რე "$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" გინოღალულ რე "$2"\'\'\'',
'movedto' => 'გინაღალულ რე',
'movetalk' => 'აკოხვალამირ სხუნუაშ გინოღალა',
'1movedto2' => '[[$1]] გინოღალირიე ხასილაშა [[$2]]',
@@ -721,7 +732,7 @@ $messages = array(
'watchlisttools-raw' => 'კონტროლიშ ერკებულიშ რედაქტირაფა ტექსტიშ ფორმატის',
# Special:Version
-'version' => 'ვერსია', # Not used as normal message but as header for the special page itself
+'version' => 'ვერსია',
# Special:SpecialPages
'specialpages' => 'სპეციალურ ხასილეფ',
diff --git a/languages/messages/MessagesYdd.php b/languages/messages/MessagesYdd.php
deleted file mode 100644
index ec3a4a2b..00000000
--- a/languages/messages/MessagesYdd.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-/** Eastern Yiddish (מיזרח־ייִדיש)
- *
- * @ingroup Language
- * @file
- *
- */
-
-$rtl = true;
-$fallback = 'yi';
diff --git a/languages/messages/MessagesYi.php b/languages/messages/MessagesYi.php
index 0ef09dc2..4f932410 100644
--- a/languages/messages/MessagesYi.php
+++ b/languages/messages/MessagesYi.php
@@ -114,6 +114,7 @@ $specialPageAliases = array(
'Search' => array( 'זוכן' ),
'Withoutinterwiki' => array( 'בלעטער אָן אינטערוויקי' ),
'Blankpage' => array( 'ליידיגער בלאט' ),
+ 'Tags' => array( 'טאגן' ),
);
$defaultUserOptionOverrides = array(
@@ -123,21 +124,31 @@ $defaultUserOptionOverrides = array(
$magicWords = array(
'redirect' => array( '0', '#ווייטערפירן', '#הפניה', '#REDIRECT' ),
- 'toc' => array( '0', '__אינהאלט__', '__תוכן__', '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
+ 'notoc' => array( '0', '__קיין_אינהאלט_טאבעלע__', '__ללא_תוכן_עניינים__', '__ללא_תוכן__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__קיין_גאלעריע__', '__ללא_גלריה__', '__NOGALLERY__' ),
+ 'toc' => array( '0', '__אינהאלט__', '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__נישט_רעדאקטירן__', '__ללא_עריכה__', '__NOEDITSECTION__' ),
+ 'numberofarticles' => array( '1', 'צאל ארטיקלען', 'מספר ערכים', 'NUMBEROFARTICLES' ),
'pagename' => array( '1', 'בלאטנאמען', 'שם הדף', 'PAGENAME' ),
'namespace' => array( '1', 'נאמענטייל', 'מרחב השם', 'NAMESPACE' ),
'fullpagename' => array( '1', 'פולבלאטנאמען', 'שם הדף המלא', 'FULLPAGENAME' ),
'subpagename' => array( '1', 'אונטערבלאטנאמען', 'שם דף המשנה', 'SUBPAGENAME' ),
- 'subst' => array( '0', 'ס:', 'ס:', 'SUBST:' ),
+ 'talkpagename' => array( '1', 'רעדנבלאטנאמען', 'שם דף השיחה', 'TALKPAGENAME' ),
+ 'subst' => array( '0', 'ס:', 'SUBST:' ),
'img_thumbnail' => array( '1', 'קליין', 'ממוזער', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'קליין=$1', 'ממוזער=$1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_manualthumb' => array( '1', 'קליין=$1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'רעכטס', 'ימין', 'right' ),
'img_left' => array( '1', 'לינקס', 'שמאל', 'left' ),
+ 'img_none' => array( '1', 'אן', 'ללא', 'none' ),
'img_center' => array( '1', 'צענטער', 'מרכז', 'center', 'centre' ),
+ 'img_sub' => array( '1', 'אונטער', 'תחתי', 'sub' ),
'plural' => array( '0', 'מערצאל:', 'רבים:', 'PLURAL:' ),
- 'displaytitle' => array( '1', 'ווייזן קעפל', 'כותרת תצוגה', 'כותרת תצוגה', 'DISPLAYTITLE' ),
- 'language' => array( '0', '#שפראך:', '#שפה:', '#שפה:', '#LANGUAGE:' ),
+ 'fullurl' => array( '0', 'פֿולער נאמען:', 'כתובת מלאה:', 'FULLURL:' ),
+ 'raw' => array( '0', 'רוי:', 'ללא עיבוד:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'ווייזן קעפל', 'כותרת תצוגה', 'DISPLAYTITLE' ),
+ 'language' => array( '0', '#שפראך:', '#שפה:', '#LANGUAGE:' ),
'defaultsort' => array( '1', 'גרונטסארטיר:', 'מיון רגיל:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'pagesize' => array( '1', 'בלאטגרייס', 'גודל דף', 'PAGESIZE' ),
);
$messages = array(
@@ -171,6 +182,7 @@ $messages = array(
'tog-enotifminoredits' => 'שיקט מיר ע-פאסט אויך פֿאַר מינערדיקע רעדאַקטירונגען פֿון בלעטער',
'tog-enotifrevealaddr' => 'דעק אויף מיין בליצפאסט אדרעס אין פאסט מודעות',
'tog-shownumberswatching' => 'ווייזן דעם נומער פון בלאט אויפֿפאסערס',
+'tog-oldsig' => 'פאראויסדיגער ווייזונג פונעם איצטיגער אונטערשריפט:',
'tog-fancysig' => 'באַהאַנדלן אונטערשריפט אַלס וויקיטעקסט (אָן אויטאמאטישן לינק)',
'tog-externaleditor' => 'ניצט א דרויסנדיגן רעדאקטירער גרונטלעך (נאר פֿאר מומחים, דאס פֿאדערט באזונדערע קאמפיוטער שטעלונגען)',
'tog-externaldiff' => 'ניצט א דרויסנדיגן פֿארגלייכער גרונטלעך (נאר פֿאר מומחים, דאס פֿאדערט באזונדערע קאמפיוטער שטעלונגען)',
@@ -193,6 +205,13 @@ $messages = array(
'underline-never' => 'קיינמאל',
'underline-default' => 'בלעטערער גרונטשטעלונג',
+# Font style option in Special:Preferences
+'editfont-style' => 'רעדאקטירונג פאנט סטיל:',
+'editfont-default' => 'בלעטערער גרונט־אויסווייל',
+'editfont-monospace' => 'פֿאנט מיט באשטימטער ברייט',
+'editfont-sansserif' => 'פאנטס אן קיין תגים (sans-serif)',
+'editfont-serif' => 'סעריף שריפֿט',
+
# Dates
'sunday' => 'זונטאג',
'monday' => 'מאָנטיג',
@@ -252,7 +271,7 @@ $messages = array(
'category-media-header' => 'מעדיע אין קאטעגאריע "$1"',
'category-empty' => "'''די קאטעגאריע האט נישט קיין בלעטער אדער מעדיע.'''",
'hidden-categories' => '{{PLURAL:$1|באהאלטענע קאטעגאריע|באהאלטענע קאטעגאריעס}}',
-'hidden-category-category' => 'באהאלטענע קאטעגאריעס', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'באהאלטענע קאטעגאריעס',
'category-subcat-count' => '{{PLURAL:$2|די קאטעגאריע האט נאר די פֿאלגנדע אונטער-קאטעגאריע|די קאטעגאריע האט די פֿאלגנדע {{PLURAL:$1|אונטער-קאטעגאריע|$1 אונטער-קאטעגאריעס}}, פֿון $2 קאטעגאריעס אינגאנצן}}.',
'category-subcat-count-limited' => 'די קאטעגאריע האט די פאלגנדע {{PLURAL:$1|אונטערקאטעגאריע|$1 אונטערקאטעגאריעס}}.',
'category-article-count' => '{{PLURAL:$2|די קאטעגאריע האט נאר דעם פֿאלגנדן בלאט|די קאטעגאריע האט {{PLURAL:$1| דעם פֿאלגנדן בלאט|די פֿאלגנדע $1 בלעטער}}, פֿון $2 אינגאנצן}}.',
@@ -260,6 +279,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|די קאטעגאריע האט נאר די פֿאלגנדע טעקע|די קאטעגאריע האט די פֿאלגנדע {{PLURAL:$1| טעקע|$1 טעקעס}}, פֿון $2 אינגאנצן}}.',
'category-file-count-limited' => 'די פֿאלגנדע {{PLURAL:$1|טעקע|$1 טעקעס}} זענען אין דער דאזיגע קאטעגאריע.',
'listingcontinuesabbrev' => '(המשך)',
+'index-category' => 'אינדעקסירטע בלעטער',
+'noindex-category' => 'אומאינדעקסירטע בלעטער',
'mainpagetext' => "'''מעדיעוויקי אינסטאלירט מיט דערפאלג.'''",
'mainpagedocfooter' => "גיט זיך אן עצה מיט [http://meta.wikimedia.org/wiki/Help:Contents באניצער'ס וועגווײַזער] פֿאר אינפֿארמאציע וויאזוי זיך באנוצן מיט וויקי ווייכוואַרג.
@@ -269,10 +290,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ אפֿט געפֿרעגטע שאלות]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce מעדיעוויקי באפֿרײַאונג פאסטליסטע]",
-'about' => 'וועגן',
-'article' => 'אינהאלט בלאט',
-'newwindow' => '(עפֿנט זיך אין א נײַעם פענסטער)',
-'cancel' => 'זיי מבטל',
+'about' => 'וועגן',
+'article' => 'אינהאלט בלאט',
+'newwindow' => '(עפֿנט זיך אין א נײַעם פענסטער)',
+'cancel' => 'זיי מבטל',
+'moredotdotdot' => 'נאך…',
+'mypage' => 'מײַן בלאט',
+'mytalk' => 'מײַן שמועס',
+'anontalk' => 'דאס רעדן פון דעם IP',
+'navigation' => 'נאַוויגאַציע',
+'and' => '&#32;און',
+
+# Cologne Blue skin
'qbfind' => 'טרעף',
'qbbrowse' => 'בלעטערט',
'qbedit' => 'ענדערן',
@@ -280,15 +309,35 @@ $messages = array(
'qbpageinfo' => 'קאנטעקסט',
'qbmyoptions' => 'מיינע בלעטער',
'qbspecialpages' => 'ספעציעלע בלעטער',
-'moredotdotdot' => 'נאך…',
-'mypage' => 'מײַן בלאט',
-'mytalk' => 'מײַן שמועס',
-'anontalk' => 'דאס רעדן פון דעם IP',
-'navigation' => 'נאַוויגאַציע',
-'and' => '&#32;און',
-
-# Metadata in edit box
-'metadata_help' => 'מעטאַ־דאַטן:',
+'faq' => 'מערסטע געפרעגטע פראגעס',
+'faqpage' => 'Project:מערסטע געפרעגט פראגעס',
+
+# Vector skin
+'vector-action-addsection' => 'צושטעלן טעמע',
+'vector-action-delete' => 'אויסמעקן',
+'vector-action-move' => 'באַוועגן',
+'vector-action-protect' => 'שיצן',
+'vector-action-undelete' => 'מבטל זיין אויסמעקן',
+'vector-action-unprotect' => 'אראפנעמען שיץ',
+'vector-namespace-category' => 'קאַטעגאָריע',
+'vector-namespace-help' => 'הילף בלאַט',
+'vector-namespace-image' => 'טעקע',
+'vector-namespace-main' => 'בלאַט',
+'vector-namespace-media' => 'מעדיע בלאַט',
+'vector-namespace-mediawiki' => 'מודעה',
+'vector-namespace-project' => 'פּראָיעקט בלאַט',
+'vector-namespace-special' => 'באַזונדערער בלאַט',
+'vector-namespace-talk' => 'שמועס',
+'vector-namespace-template' => 'מוסטער',
+'vector-namespace-user' => 'באַניצער בלאַט',
+'vector-view-create' => 'שאַפֿן',
+'vector-view-edit' => 'רעדאַקטירן',
+'vector-view-history' => 'ווײַזן היסטאָריע',
+'vector-view-view' => 'לייענען',
+'vector-view-viewsource' => 'ווײַזן מקור',
+'actions' => 'אַקציעס',
+'namespaces' => 'נאָמענטיילן',
+'variants' => 'װאַריאַנטן',
'errorpagetitle' => 'פֿעלער',
'returnto' => 'צוריקקערן צו $1.',
@@ -338,18 +387,22 @@ $messages = array(
'otherlanguages' => 'אין אַנדערע שפראַכן',
'redirectedfrom' => '(אַריבערגעפֿירט פון $1)',
'redirectpagesub' => 'ווייטערפירן בלאט',
-'lastmodifiedat' => 'דער בלאט איז לעצט געווארן מאדיפיצירט $2, $1.', # $1 date, $2 time
+'lastmodifiedat' => 'דער בלאט איז לעצט געווארן מאדיפיצירט $2, $1.',
'viewcount' => 'דער בלאט איז געווארן געליינט {{PLURAL:$1|איין מאל|$1 מאל}}.',
'protectedpage' => 'באשיצטער בלאט',
'jumpto' => 'שפּרינג צו:',
'jumptonavigation' => 'נאַוויגאַציע',
'jumptosearch' => 'זוכן',
+'view-pool-error' => 'אנטשולדיגט, די סערווערס זענען איבערגעפילט איצט.
+צופיל באניצער פרובירן צו ליינען דעם בלאט.
+ביטע ווארטן א ביסל צייט בעפאר איר פרובירט ווידער אריינגיין אינעם בלאט.
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'וועגן {{SITENAME}}',
'aboutpage' => 'Project:וועגן',
'copyright' => 'דער אינהאַלט איז בארעכטיגט אונטער $1.',
-'copyrightpagename' => 'קאפירעכטן פון {{SITENAME}}',
'copyrightpage' => '{{ns:project}}:קאפירעכטן',
'currentevents' => 'אקטועלע געשעענישן',
'currentevents-url' => 'Project:אקטועלע געשענישען',
@@ -357,8 +410,6 @@ $messages = array(
'disclaimerpage' => 'Project:געזעצליכע אויפֿקלערונג',
'edithelp' => 'הילף וויאזוי צו ענדערן',
'edithelppage' => 'Help:ענדערן',
-'faq' => 'מערסטע געפרעגטע פראגעס',
-'faqpage' => 'Project:מערסטע געפרעגט פראגעס',
'helppage' => 'Help:אינהאַלט',
'mainpage' => 'הויפט זייט',
'mainpage-description' => 'הויפט זייט',
@@ -441,9 +492,6 @@ $messages = array(
"$1"
פון דער פונקציע "$2".
דאטנבאזע האט צוריקגעגעבן גרייז "$3: $4".',
-'noconnect' => 'אנטשולדיגט! די וויקי גייט דורך איצט טעכנישע פראבלעמען און קען זיך נישט באהעפטן צו דער דאטנבאזע.<br />$1',
-'nodb' => 'קען נישט אויסוויילן דאטעבאזע $1',
-'cachederror' => 'ווײַטער איז א געקאַשטע קאפיע פונעם געבעטענעם בלאט, וואס איז אפשר נאך נישט דערהײַנטיגט.',
'laggedslavemode' => 'ווארענונג: בלאט טוט מעגליך נישט אנטהאלטן לעצטיגע דערהײַנטיגונגען.',
'readonly' => 'דאַטנבאַזע פאַרשפאַרט',
'enterlockreason' => 'שטעלט א סיבה פארן אפשפאר, אריינגערעכנט א געשאצטער צייט אויף ווען דאס וועט זיך צוריקעפענען די פארשפארונג.',
@@ -461,6 +509,8 @@ $messages = array(
'readonly_lag' => 'די דאטעבאזע איז געווארן אויטאמטיש אפגעשפארט כדי צו דערמעגליכן פאר די אונטער דאטע באזע סערווערס צו ווערן דערהיינטיגט פון דעם אויבער סערווער.',
'internalerror' => 'אינערווייניגער פֿעלער',
'internalerror_info' => 'אינערווייניגער פֿעלער: $1',
+'fileappenderrorread' => 'קען נישט לייענען "$1" בײַם צוגעבן.',
+'fileappenderror' => 'האט נישט געקענט צולייגן "$1" צו "$2".',
'filecopyerror' => 'קאפי "$1" צו "$2" איז נישט דורך.',
'filerenameerror' => 'נאמען טויש פֿאַר "$1" צו "$2" איז נישט אדורכגעגאנגען.',
'filedeleteerror' => 'אויסמעקן "$1" נישט דורך.',
@@ -470,7 +520,8 @@ $messages = array(
'unexpected' => 'אומערווארטערטער ווערד: "$1"="$2"',
'formerror' => 'פֿעלער: קען נישט שיקן פֿארעם.',
'badarticleerror' => 'מען קען נישט טאן די אקציע וואס איר ווילט אויף דעם בלאט.',
-'cannotdelete' => 'אויסמעקן דעם בלאט אדער די טעקע האט נישט מצליח געווען. (עס איז מעגליך אז דאס איז שוין געווארן אויסגעמעקט דורך אן אנדערן.)',
+'cannotdelete' => 'נישט געווען מעגלעך אויסמעקן דעם בלאט אדער די טעקע "$1".
+קען זיין אז דאס איז שוין געווארן אויסגעמעקט דורך אן אנדערן.',
'badtitle' => 'שלעכט קעפל',
'badtitletext' => "דאס קעפל פון דעם געזוכטן בלאט איז געווען אומגעזעצליך, ליידיג, אן אינטערשפראך אדער אינטערוויקי לינק וואס פאסט נישט, אדער אנטהאט כאראקטערס וואס מ'קען נישט ניצן אין א קעפל.",
'perfcached' => "די פאלגנדע דאטן זענען גענומען פונעם 'זאַפאַס' און מעגלעך נישט אקטועל.",
@@ -505,13 +556,11 @@ $2',
'virus-unknownscanner' => 'אומבאוואוסטער אנטי־ווירוס:',
# Login and logout pages
-'logouttitle' => 'באנוצער ארויסלאגירן',
'logouttext' => "'''איר האָט זיך ארויסלאָגירט.'''
איר קענט ממשיך זיין ניצן {{SITENAME}} אַנאנים, אדער איר קענט [[Special:UserLogin|צוריק אריינלאגירן]] מיט דעם זעלבן אדער אן אנדער באַניצער נאָמען. באמערקט אז געוויסע בלעטער קענען זיך ווייטער ארויסשטעלן אזוי ווי ווען איר זענט אריינלאגירט, ביז איר וועט אויסליידיגן דעם בלעטערער זאפאס.",
'welcomecreation' => '== ברוך הבא, $1! ==
אייער קאנטע איז באשאפן געווארן. נישט פארגעסן צו ענדערן אייערע [[Special:Preferences|{{SITENAME}} פרעפֿערענצן]].',
-'loginpagetitle' => 'באנוצער לאגירן',
'yourname' => 'באַניצער נאָמען:',
'yourpassword' => 'פאסווארט',
'yourpasswordagain' => 'ווידער אריינקלאפן פאסווארט',
@@ -522,6 +571,7 @@ $2',
'nav-login-createaccount' => 'ארײַנלאָגירן / זיך אײַנשרײַבן',
'loginprompt' => 'איר מוסט ערלויבן קיכלעך ("cookies") אויף צו אַרײַנלאָגירן אינעם {{SITENAME}}.',
'userlogin' => 'ארײַנלאָגירן / זיך אײַנשרײַבן',
+'userloginnocreate' => 'אַרײַנלאגירן',
'logout' => 'אַרױסלאָגירן',
'userlogout' => 'אַרױסלאָגירן',
'notloggedin' => 'נישט איינגעשריבן',
@@ -533,27 +583,8 @@ $2',
'createaccountmail' => 'דורך ע-פאסט',
'badretype' => 'די פאסווערטער וואס איר האט אריינגעלייגט זענען נישט אייניג.',
'userexists' => 'דער באַנוצער נאָמען איז שוין אין באַנוץ. ביטע קלײַב אױס אַן אַנדער נאָמען.',
-'youremail' => 'ע-פאסט:',
-'username' => 'באַנוצער־נאָמען:',
-'uid' => 'באַנוצער־נומער:',
-'prefs-memberingroups' => 'מיטגליד אין {{PLURAL:$1|גרופע|גרופעס}}:',
-'yourrealname' => 'עכטער נאמען *:',
-'yourlanguage' => 'שפּראַך:',
-'yourvariant' => 'װאַריאַנט',
-'yournick' => 'חתימה:',
-'badsig' => 'נישט גילטיקער רויער אונטערשריפט. ביטע קאנטראלירט די HTML טאַגן.',
-'badsiglength' => 'אונטערשריפט צו לאנג; מוז זיין ווינציגער פון {{PLURAL:$1|איין אות|$1 אותיות}}.',
-'yourgender' => 'מין:',
-'gender-unknown' => 'נישט ספעציפֿיצירט',
-'gender-male' => 'זכר',
-'gender-female' => 'נקבה',
-'prefs-help-gender' => 'אפציאנאַל: באניצט בכדי דאס ווייכוואַרג זאל אײַך אַדרעסירן מיטן געהעריגן מין פֿארעם. די אינפֿארמאַציע ווערט ידוע צו אַלעמען.',
-'email' => 'ע-פאסט',
-'prefs-help-realname' => '* עכטער נאמען (אפציאנאל): אויב וועט איר אויסוועלן צוצישטעלן דאס, וועט גענוצט ווערן צו געבן אטריביאציע צו אייער ארבייט.',
'loginerror' => 'לאגירן פֿעלער',
-'prefs-help-email' => 'ע-פאסט אדרעס איז ברירהדיק, אבער עס דערמעגליכט אז מען קען אייך שיקן א ניי פאסווארט טאמער איר פֿארגעסט דאס אלטע.
-איר קענט אויך לאזן אנדערע צו קאנטאקטן אייך דורך אייער באניצער אדער באניצער רעדן בלאט אן ארויסגעבן אייער אידענטיטעט.',
-'prefs-help-email-required' => 'בליצפאסט אדרעס באדארפט.',
+'createaccounterror' => 'האט נישט געקענט שאַפֿן קאנטע: $1',
'nocookiesnew' => 'די באניצער קאנטע איז באשאפן, אבער איר זענט נישט אריינלאגירט.
{{SITENAME}} ניצט קוקיס אריינצולאגירן באניצערס.
איר האט קוקיס נישט-ערמעגלעכט. ביטע ערמעגלעכט זיי, דאן טוט אריינלאגירן מיט אייער באניצער נאמען און פאסווארט.',
@@ -566,9 +597,11 @@ $2',
קוקט איבער אייער אויסלייג, אדער [[Special:UserLogin/signup|באשאפֿט א נייע קאנטע]].',
'nosuchusershort' => 'נישטא קיין באנוצער מיטן נאמען "<nowiki>$1</nowiki>". קוק איבער דיין ספעלונג.',
'nouserspecified' => 'איר ברויכט ספעציפיזירן א באנוצער-נאמען.',
+'login-userblocked' => 'דער באַניצער איז בלאקירט. ארײַנלאגירן נישט ערלויבט.',
'wrongpassword' => 'אומריכטיגע פאסווארט אריינגעלייגט, ביטע פרובירט נאכאמאל.',
'wrongpasswordempty' => 'פאסווארט אריינגעלייגט איז געווען ליידיג, ביטע פרובירט נאכאמאל.',
-'passwordtooshort' => 'אײַער פאַסווארט איז נישט גילטיג אדער צו קורץ. עס דארף האבן כאטש {{PLURAL:$1|איין כאַראַקטער|$1 כאַראַקטערס}} און זײַן אנדערש ווי דער באַניצער-נאמען.',
+'passwordtooshort' => 'פאַסווערטער מוזן זײַן כאטש {{PLURAL:$1|איין כאַראַקטער|$1 כאַראַקטערס}}.',
+'password-name-match' => 'אײַער פאַסווארט מוז זײַן אנדערש פון אײַער באַניצער נאָמען.',
'mailmypassword' => 'שיקט מיין נייע פאסווארט',
'passwordremindertitle' => 'ניי צייטווייליג פאסווארט פאר {{SITENAME}}',
'passwordremindertext' => 'עמעצער (מסתמא איר, פֿון IP אדרעס $1)
@@ -579,6 +612,7 @@ $2',
אויב איינער אנדערשט האט געמאכט די ביטע, אדער איר האט יא געדענקט אייער פאסווארט און איר טוט מער נישט באגערן דאס צו טוישן, קענט איר איגנארירן די מעלדונג און ווייטער ניצן אייער אלטע פאַסווארט.',
'noemail' => 'ס\'איז נישט רעקארדירט קיין אי-מעיל אדרעס פאר באנוצער "$1".',
+'noemailcreate' => 'איר דאַרפֿט פֿאַרזארגן א גילטיגן ע-פאסט אַדרעס',
'passwordsent' => 'א ניי פאסווארט איז געשיקט געווארן צום ע-פאסט אדרעס רעגיסטרירט פאר "$1".
ביטע ווידער אריינלאגירן נאך דעם וואס איר באקומט עס.',
'blocked-mailpassword' => 'אייער איי פי אדרעס איז בלאקירט צו רעדאקטירן, דערוועגן זענט איר נישט ערלויבט צו באניצן מיטן פאסווארט ווידעראויפלעבונג פֿונקציע כדי צו פארמיידן סיסטעם קרומבאניץ.',
@@ -600,9 +634,11 @@ $2',
'createaccount-text' => 'עמעצער האט באשאפֿן א קאנטע פֿאר אייער ע-פאסט אדרעס אין {{SITENAME}} ($4) מיטן נאמען "$2" און פאסווארט "$3". איר דארפט אצינד איינלאגירן און ענדערן דאס פאסווארט.
איר קענט איגנארירן די מעלדונג, ווען די קאנטע איז באשאפֿן בטעות.',
+'usernamehasherror' => 'באַניצער נאמען טאָר נישט אַנטהאַלטן קיין לייטער סימבאל',
'login-throttled' => 'איר האט געפרוווט צופֿיל מאל אריינלאגירן.
זייט אזוי גוט און וואַרט איידער איר פרוווט נאכאמאל.',
'loginlanguagelabel' => 'שפראך: $1',
+'suspicious-userlogout' => ' אײַער בקשה אַרויסלאָגירן זיך איז אפגעלייגט געווארן ווייַל אייגנטלעך איז זי געשיקט דורך אַ צעבראכענעם בלעטערער אָדער א פראקסי מיט א זאפאס.',
# Password reset dialog
'resetpass' => 'ענדערן קאנטע פאסווארט',
@@ -614,17 +650,13 @@ $2',
'retypenew' => 'ווידער שרײַבן פאַסווארט:',
'resetpass_submit' => 'שטעלן פאסווארט און אריינלאגירן',
'resetpass_success' => 'אייער פאַסווארט איז געטוישט געווארן מיט דערפֿאלג! איצט טוט מען אייך אריינלאגירן…',
-'resetpass_bad_temporary' => 'אומריכטיג צייטווייליג פאַסווארט. איר האט מעגליך שוין מצליח געווען צו טוישן אייער פאַסווארט אדער געבעטן א ניי צייטווייליג פאַסווארט.',
'resetpass_forbidden' => 'פאסווערטער קענען נישט ווערן געטוישט',
'resetpass-no-info' => 'איר דארפֿט זיין אריינלאגירט צוצוקומען גלייך צו דעם דאזיגן בלאט.',
'resetpass-submit-loggedin' => 'טוישן פאסווארט',
+'resetpass-submit-cancel' => 'אַנולירן',
'resetpass-wrong-oldpass' => 'אומגילטיג צײַטווײַליק אדער לויפֿיק פאַסווארט.
איר האט מעגלעך שוין געטוישט אייער פאַסווארט מיט הצלחה אדער געבעטן א נײַ צײַטווײַליק פאַסווארט.',
'resetpass-temp-password' => 'צײַטווייליק פאַסווארט:',
-'resetpass-log' => 'פאַסווארט צוריקשטעלן לאג',
-'resetpass-logtext' => 'דאָ אונטן איז א ליסטע פֿון באַניצער וואס א סיסאפ האט צוריקגעזעצט זייער פאַסווארט.',
-'resetpass-logentry' => 'געטוישט דאס פאַסווארט פֿאַר $1',
-'resetpass-comment' => "סיבה פֿאַרוואָס מ'האט צוריקגעזעצט פאַסווארט:",
# Edit page toolbar
'bold_sample' => 'טייפּט דאָ אַריין די טעקסט זאל זיין דיק',
@@ -698,7 +730,6 @@ $2',
'blockededitsource' => "די טעקסט פון '''אייערע ענדערונגן''' צו '''$1''' ווערט געוויזן אונטן:",
'whitelistedittitle' => 'אַרײַנלאגירן פֿאַרלאַנגט צו ענדערן',
'whitelistedittext' => 'איר ברויכט צו $1 צו ענדערן בלעטער.',
-'confirmedittitle' => 'איר דארפט באשטעטיגן אייער בליצפאסט אדרעס כדי צו רעדאקטירן',
'confirmedittext' => 'אויף אייך ליגט קודם די פֿליכט צו באשטעטיגן אייער ע־פאסט אדרעס איידער איר רעדאַקטירט בלעטער.
ביטע שטעלט און באשטעטיגט אייער ע־פאסט אדרעס דורך אייערע [[Special:Preferences|באַניצער פרעפֿערענצן]] .',
'nosuchsectiontitle' => 'נישט געפֿינען אָפטיילונג',
@@ -720,7 +751,13 @@ $2',
איר קענט [[Special:Search/{{PAGENAME}}|זוכן דעם בלאט טיטל]] אין אנדערע בלעטער,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} זוכן די רעלעוואנטע לאגביכער],
אדער [{{fullurl:{{FULLPAGENAME}}|action=edit}} רעדאַקטירן דעם בלאט].',
+'noarticletext-nopermission' => 'דערווײַל איז נישט פאַראַן קיין שום טעקסט אין דעם בלאַט.
+איר קענט [[Special:Search/{{PAGENAME}}| זוכן דעם בלאט טיטל]] אין אנדערע בלעטער,
+אדער <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} נאָכזוכן די רעלעוואנטע לאגביכער]</span>.',
'userpage-userdoesnotexist' => 'באניצער קאנטע "$1" איז נישט אײַנגעשריבן. קוקט איבער צי איר ווילט שאפֿן/רעדאקטירן דעם בלאט.',
+'userpage-userdoesnotexist-view' => 'באניצער קאנטע "$1" איז נישט איינגעשריבן.',
+'blocked-notice-logextract' => 'דער באַניצער איז דערווייַל פֿאַרשפאַרט.
+די לעצטע בלאָקירן לאג אַקציע איז צוגעשטעלט אונטן:',
'clearyourcache' => "'''אכטונג: נאכן אויפֿהיטן, ברויכט איר אפשר נאך אריבערגיין דעם בלעטערס קאש זיכרון (cache) צו זען די ענדערונגען.'''
'''מאזילא/סאפֿארי/פֿייערפוקס:''' האלט אראפ ''שיפֿט'' בשעתן דרוקן ''Reload'', אדער דרוקט ''Ctrl-F5'' אדער ''Ctrl-R'' (אויף א מאקינטאש ''Cmd-R'');
@@ -730,7 +767,8 @@ $2',
'''אינטערנעט עקספלארער''': האלט ''Ctrl'' בשעתן קליקן ''Refresh'', אדער דרוקט ''Ctrl-F5'';
'''אפערע:''' מען ליידיגט אויס דעם קאש אין ''Tools → Preferences'' (''העדפות'' > ''כלים'')",
-'usercssjsyoucanpreview' => "'''טיפ:''' נוצט דעם 'ווייז פאראויסדיגע ווייזונג' באטאן צו אויספרובירן אייער CSS/JS בעפאר אפהיטן.",
+'usercssyoucanpreview' => "'''טיפ:''' נוצט דאס {{int:showpreview}} קנעפל אויספרובירן אייער CSS בעפאר אפהיטן.",
+'userjsyoucanpreview' => "'''טיפ:''' נוצט דאס {{int:showpreview}} קנעפל אויספרובירן אייער JavaScript בעפאר אפהיטן.",
'usercsspreview' => "'''געדענקט אז איר טוט בלויז פאראויס זען אייער באניצער CSS.'''
'''ער איז דערווייל נאכנישט אויפֿגעהיטן!'''",
'userjspreview' => "'''געדענקט אז איר טוט בלויז טעסטן\\פאראויסזעהן אייער באנוצער JavaScript, עס איז דערווייל נאכנישט אפגעהיטן!'''",
@@ -777,13 +815,16 @@ $2',
ממילא וועט איר נישט קענען אפהיטן אייערע ענדערונגען אצינד. איר קענט קאפירן און ארײַנלייגן דעם טעקסט אריין צו א טעקסט טעקע און דאס דארטן אפהיטן פאר שפעטער.'''
דער אדמיניסטראטאר וואס האט זי פארשלאסן האט מסביר געווען אזוי: $1",
-'protectedpagewarning' => "'''ווארענונג: דער בלאט איז געווארן פארשפארט אז בלויז באניצערס מיט סיסאפ פריווילעגיעס קענען אים ענדערן.'''",
-'semiprotectedpagewarning' => "'''באמערקונג:''' דער דאזיגער בלאט איז פֿארשפארט אז בלויז איינגעשריבענע באניצערס קענען אים ענדערן.",
+'protectedpagewarning' => "'''ווארענונג: דער בלאט איז געווארן פארשפארט אז בלויז באניצערס מיט סיסאפ פריווילעגיעס קענען אים ענדערן.'''
+די פארגאנגענע לאגבוך באשרײַבונג ווערט געוויזן דא:",
+'semiprotectedpagewarning' => "'''באמערקונג:''' דער דאזיגער בלאַט איז פֿאַרשפאַרט אז בלויז איינגעשריבענע באניצערס קענען אים ענדערן.
+די פֿאַרגאַנגענע לאגבוך באשרײַבונג ווערט געוויזן דאָ:",
'cascadeprotectedwarning' => "'''ווארענונג:''' דער בלאט איז פארשפארט אז בלויז סיסאפן קענען אים ענדערן, וויבאלד ער איז איינגעשלאסן אין {{PLURAL:$1| דעם פאלגנדן בלאט, וואס איז|די פאלגנדע בלעטער, וואס זענען}} קאסקאד באשיצט:",
-'titleprotectedwarning' => "'''אזהרה: דער בלאט איז פֿארשלאסן טא דארף מען נאר [[Special:ListGroupRights|ספעציפֿישע רעכטן]] צו שאפֿן אים.'''",
-'templatesused' => 'מוסטערן באנוצט אויף דעם בלאט:',
-'templatesusedpreview' => 'באַנוצטע מוסטערן אין דעם פֿאָראױסדיקע אױסקוק:',
-'templatesusedsection' => 'מוסטערן באנוצט אין דעם אפטיילונג:',
+'titleprotectedwarning' => "'''אזהרה: דער בלאט איז פֿארשפאַרט טא דארף מען [[Special:ListGroupRights|ספעציפֿישע רעכטן]] צו שאפֿן אים.'''
+די פֿאַרגאַנגענע לאגבוך באשרײַבונג ווערט געוויזן דאָ:",
+'templatesused' => '{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אויף דעם בלאט:',
+'templatesusedpreview' => '{{PLURAL:$1|מוסטער| מוסטערן}} באַניצט אין דעם פֿאָראױסדיקן אױסקוק:',
+'templatesusedsection' => '{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אין דעם אפטיילונג:',
'template-protected' => '(באשיצט)',
'template-semiprotected' => '(טיילווייז באשיצט)',
'hiddencategories' => 'דער דאזיגער בלאט געהערט צו {{PLURAL:$1|איין באהאלטענער קאטעגאריע|$1 באהאלטענע קאטעגאריעס}}:',
@@ -792,16 +833,18 @@ $2',
'nocreatetext' => 'די סייט האט באגרעניצט די מעגליכקייט צו באשאפן נייע בלעטער.
איר קענט צוריקגיין און ענדערן די עקזיסטירנדע בלאט, אדער [[Special:UserLogin|לאגירט זיך אריין און באשאפט א קאנטע]].',
'nocreate-loggedin' => 'איר זענט נישט ערלויבט צו שאַפֿן נײַע בלעטער.',
+'sectioneditnotsupported-title' => 'רעדאקטירן אפטיילונגען נישט געשטיצט.',
+'sectioneditnotsupported-text' => 'רעדאַקטירן אָפטיילונגען נישט געשטיצט אויף דעם בלאַט',
'permissionserrors' => 'ערלויבענישן פעילערס',
'permissionserrorstext' => 'איר זענט נישט ערלויבט צו טון דאס, פֿאַר {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:',
'permissionserrorstext-withaction' => 'איר זענט נישט ערלויבט צו $2, וועגן {{PLURAL:$1|דער פֿאלגנדער סיבה| די פֿאלגנדע סיבות}}:',
-'recreate-deleted-warn' => "'''ווארענונג: איר שאפט א נייעם בלאט וואס איז שוין איינמאל געווארן אויסגעמעקט.'''
+'recreate-moveddeleted-warn' => "'''ווארענונג: איר שאפט א נייעם בלאט וואס איז שוין איינמאל געווארן אויסגעמעקט.'''
-באטראכט צי ס'איז פאסיג ווייטער רעדאקטירן דעם בלאט.
-דאס אויסמעקן לאג־בוך ווערט געוויזן דא:",
-'deleted-notice' => 'דער בלאט איז געווארן אויסגעמעקט.
-דאס אויסמעקן לאג-בוך פונעם בלאט איז געוויזן דא אונטן.',
-'deletelog-fulllog' => 'זען דאס פֿולע לאג-בוך',
+איר זאלט איבערטראכטן צי עס פאַסט רעדאַקטירן דעם בלאַט ווײַטער.
+די אויסמעקן און באַוועגן לאגביכער ווערן געוויזן דא:",
+'moveddeleted-notice' => 'דער בלאט איז געווארן אויסגעמעקט.
+די אויסמעקן און באַוועגן לאגביכער פונעם בלאט ווערן געוויזן דא אונטן.',
+'log-fulllog' => 'באַקוקן פֿולן לאגבוך',
'edit-hook-aborted' => 'רעדאַקטירונג אַנולירט דורך Hook.
נישטא קיין הסבר.',
'edit-gone-missing' => "נישט מעגלעך צו דערהיינטיגן דעם בלאט.
@@ -823,6 +866,7 @@ $2',
'post-expand-template-argument-category' => 'בלעטער וואס זענען פון דעם ארויסגעלאזט געווארן טאמפלעיט פאראמעטערס',
'parser-template-loop-warning' => 'מוסטער שלייף געטראפן: [[$1]]',
'parser-template-recursion-depth-warning' => 'מוסטער רעקורסיע טיף מאקסימום איבערגעשטיגן ($1)',
+'language-converter-depth-warning' => 'אַריבער דעם שפּראַך קאַנווערטער טיף לימיט ($1)',
# "Undo" feature
'undo-success' => 'די ענדערונג קען ווערן מבוטל. ביטע נאכקוקן די פארגלייך פון אונטן צו זיין זיכער אז דאס איז וואס איר ווילט טאן, און דערנאך היט-אפ די ענדערונגן פון אונטן צו ענדיגן דאס בטל מאכן די ענדערונג.',
@@ -840,7 +884,7 @@ $2',
'currentrev' => 'איצטיגע ווערסיע',
'currentrev-asof' => 'לויפיקע רעוויזיע פון $1',
'revisionasof' => 'רעוויזיע ביי $1',
-'revision-info' => 'רעוויזיע ביי $1 פון $2', # Additionally available: $3: revision id
+'revision-info' => 'רעוויזיע ביי $1 פון $2',
'previousrevision' => '→ עלטערער ווערסיע',
'nextrevision' => 'נייע ווערסיע ←',
'currentrevisionlink' => 'איצטיגע ווערסיע',
@@ -852,7 +896,7 @@ $2',
'histlegend' => "פֿארגלייכן אויסקלויב: צייכנט די קנעפלעך פֿון די ווערסיעס צו פֿארגלײַכן, און קלאפט Enter אדער דאס קנעפל '''{{int:compareselectedversions}}'''.<br />
שליסל: '''({{int:cur}})''' = אונטערשייד פֿון לויפֿיגער ווערסיע, '''({{int:last}})''' = אונטערשייד פֿון פֿריערדיגער ווערסיע, '''({{int:last}})''' = מינערדיקע רעדאקטירונג",
'history-fieldset-title' => 'בלעטערט די היסטאריע',
-'deletedrev' => '[אויסגעמעקט]',
+'history-show-deleted' => 'נאר אויסגעמעקט',
'histfirst' => 'ערשטע',
'histlast' => 'לעצטיגע',
'historysize' => '({{PLURAL:$1|1 בייט|$1 בייטן}})',
@@ -861,60 +905,92 @@ $2',
# Revision feed
'history-feed-title' => 'ווערסיע היסטאריע',
'history-feed-description' => 'ווערסיע היסטאריע פאר דעם בלאט אויפן וויקי',
-'history-feed-item-nocomment' => '$1 אין $2', # user at time
+'history-feed-item-nocomment' => '$1 אין $2',
'history-feed-empty' => 'דער געבעטענער בלאט עקזעסטירט נישט.
עס איז מעגליך אויסגעמעקט געווארן פון די וויקי, אדער די נאמען געטוישט.
פרובירט [[Special:Search|צו זיכן אין וויקי]] נאך רעלאווענטע נייע בלעטער.',
# Revision deletion
-'rev-deleted-comment' => '(אנמערקונג אראפגענומען)',
-'rev-deleted-user' => '(באנוצער נאמען אראפגענומען)',
-'rev-deleted-event' => '(לאגירן אקציע אראפגענומען)',
-'rev-deleted-text-permission' => "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.
+'rev-deleted-comment' => '(אנמערקונג אראפגענומען)',
+'rev-deleted-user' => '(באנוצער נאמען אראפגענומען)',
+'rev-deleted-event' => '(לאגירן אקציע אראפגענומען)',
+'rev-deleted-user-contribs' => '[באַניצער נאָמען אָדער IP אַדרעס אראפגענומען - רעדאַקטירונג פֿאַרבאָרגן פֿון בייַשטייַערונגען]',
+'rev-deleted-text-permission' => "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.
+עס איז מעגלעך דא נאך פרטים אין דעם
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].",
+'rev-deleted-text-unhide' => "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.
עס איז מעגלעך דא נאך פרטים אין דעם
-[{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].",
-'rev-deleted-text-view' => "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט'''.
-אלס סיסאפ קענט איר באַקוקן די רעוויזיע; עס איז מעגליך דא נאך דעטאלן אינעם [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג בוך].",
-'rev-delundel' => 'ווייז/באהאלט',
-'revisiondelete' => 'אויסמעקן\\צוריקשטעלן רעוויזיעס',
-'revdelete-nooldid-title' => 'ציל ווערסיע נישט גילטיג',
-'revdelete-nooldid-text' => 'איר האט נישט ספעציפירט קיין ציל ווערסיע דורצוכפירן די פונקציע.',
-'revdelete-nologtype-title' => 'קיין לאג טיפ נישט געקליבן',
-'revdelete-nologtype-text' => 'איר האט נישט ספעציפֿירט קיין לאג טיפ דורצוכפֿירן די פֿונקציע.',
-'revdelete-toomanytargets-title' => 'צופֿיל צילן',
-'revdelete-toomanytargets-text' => 'איר האט ספעציפֿירט צו פֿיל טיפן צילן אויף וואס אויסצופֿירן די פעולה.',
-'revdelete-nologid-title' => 'אומגילטיגער לאג־פֿאַרשרײַב',
-'revdelete-selected' => "'''{{PLURAL:$2|אויסדערוויילטע ווערסיע| אויסדערוויילטע ווערסיעס}} פון [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1| אויסדערוויילטע לאג אקציע|אויסדערוויילטע לאג אקציעס}}:'''",
-'revdelete-suppress-text' => "באהאלטן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגענדע פעלער:
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].
+אלס סיסאפ קענט איר נאך [$1 באקוקן די רעוויזיע] אויב איר ווילט גיין ווײַטער.",
+'rev-suppressed-text-unhide' => "די בלאט רעוויזיע איז געווארן '''באהאלטן'''.
+עס איז מעגלעך דא נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} באהעלטעניש לאג].
+אלס סיסאפ קענט איר נאך [$1 באקוקן די רעוויזיע] אויב איר ווילט גיין ווײַטער.",
+'rev-deleted-text-view' => "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.
+אלס סיסאפ קענט איר זען זי;
+עס איז מעגלעך דא נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].",
+'rev-suppressed-text-view' => "די בלאט רעוויזיע איז געווארן '''באהאלטן '''.
+אלס סיסאפ קענט איר זען זי;
+עס איז מעגלעך דא נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} באהעלטעניש לאג].",
+'rev-delundel' => 'ווייז/באהאלט',
+'rev-showdeleted' => 'ווײַזן',
+'revisiondelete' => 'אויסמעקן\\צוריקשטעלן רעוויזיעס',
+'revdelete-nooldid-title' => 'ציל ווערסיע נישט גילטיג',
+'revdelete-nooldid-text' => 'איר האט נישט ספעציפירט קיין ציל ווערסיע דורצוכפירן די פונקציע.',
+'revdelete-nologtype-title' => 'קיין לאג טיפ נישט געקליבן',
+'revdelete-nologtype-text' => 'איר האט נישט ספעציפֿירט קיין לאג טיפ דורצוכפֿירן די פֿונקציע.',
+'revdelete-nologid-title' => 'אומגילטיגער לאג־פֿאַרשרײַב',
+'revdelete-no-file' => 'די טעקע ספעציפֿירט עקזיסטירט נישט.',
+'revdelete-show-file-confirm' => 'צי זענט איר זעכער איר ווילט באַקוקן אן אויסגעמעקטע רעוויזיע פון דער טעקע "<nowiki>$1</nowiki>" פון $2 בשעה $3?',
+'revdelete-show-file-submit' => 'יא',
+'revdelete-selected' => "'''{{PLURAL:$2|אויסדערוויילטע ווערסיע| אויסדערוויילטע ווערסיעס}} פון [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1| אויסדערוויילטע לאג אקציע|אויסדערוויילטע לאג אקציעס}}:'''",
+'revdelete-suppress-text' => "באהאלטן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגענדע פעלער:
* אויפדעקונג פון פריוואטקייט אינפארמאציע
* ''היים אדרעסן, טעלעפאן נומערן, אדער סאשעל סעקיורעטי, א.א.וו.:'''",
-'revdelete-legend' => 'שטעלט ווייזונג באגרענעצונגען',
-'revdelete-hide-text' => 'באהאלט אינהאלט פון ווערסיע',
-'revdelete-hide-name' => 'באהאלט אקציע און ציל',
-'revdelete-hide-comment' => 'באהאלט ענדערן הערה',
-'revdelete-hide-user' => "באהאלט רעדאקטער'ס באנוצער-נאמען/איי.פי.",
-'revdelete-hide-restricted' => 'באהאלט אינפארמאציע אויך פון אדמיניסטראטורן פונקט ווי פשוטע באנוצער',
-'revdelete-suppress' => 'באַהאַלטן אינפֿארמאַציע פון אַדמיניסטראַטארן ווי אויך אנדערע',
-'revdelete-hide-image' => 'באהאלט טעקע אינהאלט',
-'revdelete-unsuppress' => 'טוה אפ באגרענעצונגן אין גענדערטע רעוויזיעס',
-'revdelete-log' => 'אורזאַך:',
-'revdelete-logentry' => 'געענדרט רעוויזיע זעבארקייט פון [[$1]]',
-'logdelete-logentry' => 'געענדרט פאסירונג זעבארקייט פון [[$1]]',
-'revdelete-success' => "'''רעוויזיע זעבאַרקייט דערפֿאלגרייך דערהײַנטיקט.'''",
-'logdelete-success' => "'''לאג באהאלטן איז סוקסעספול איינגעשטעלט.'''",
-'revdel-restore' => 'טויש די זעבארקייט',
-'pagehist' => 'בלאט היסטאריע',
-'deletedhist' => 'אויסגעמעקטע ווערסיעס',
-'revdelete-content' => 'אינהאלט',
-'revdelete-summary' => 'רעדאקטירונג קיצור',
-'revdelete-uname' => 'באניצער נאמען',
-'revdelete-restricted' => 'פארמערט באגרעניצונגען פאר סיסאפן',
-'revdelete-unrestricted' => 'אוועקגענומען באגרעניצונגען פאר סיסאפן',
-'revdelete-hid' => 'באהאלטן $1',
-'revdelete-unhid' => 'מבטל געווען באהאלטן $1',
-'revdelete-log-message' => '$1 פֿאר {{PLURAL:$2|איין רעוויזיע|$2 רעוויזיעס}}',
-'logdelete-log-message' => '$1 פֿאר {{PLURAL:$2|איין פאסירונג|$2 פאסירונגען}}',
+'revdelete-legend' => 'שטעלט ווייזונג באגרענעצונגען',
+'revdelete-hide-text' => 'באהאלט אינהאלט פון ווערסיע',
+'revdelete-hide-image' => 'באהאלט טעקע אינהאלט',
+'revdelete-hide-name' => 'באהאלט אקציע און ציל',
+'revdelete-hide-comment' => 'באהאלט ענדערן הערה',
+'revdelete-hide-user' => "באהאלט רעדאקטער'ס באנוצער-נאמען/איי.פי.",
+'revdelete-hide-restricted' => 'באהאלט אינפארמאציע אויך פון אדמיניסטראטורן פונקט ווי פשוטע באנוצער',
+'revdelete-radio-same' => '(נישט ענדערן)',
+'revdelete-radio-set' => 'יא',
+'revdelete-radio-unset' => 'ניין',
+'revdelete-suppress' => 'באַהאַלטן אינפֿארמאַציע פון אַדמיניסטראַטארן ווי אויך אנדערע',
+'revdelete-unsuppress' => 'טוה אפ באגרענעצונגן אין גענדערטע רעוויזיעס',
+'revdelete-log' => 'אורזאַך:',
+'revdelete-submit' => 'צושטעלן צו {{PLURAL:$1|סעלעקטירטער רעוויזיע| סעלעקטירטע רעוויזיעס}}',
+'revdelete-logentry' => 'געענדרט רעוויזיע זעבארקייט פון [[$1]]',
+'logdelete-logentry' => 'געענדרט פאסירונג זעבארקייט פון [[$1]]',
+'revdelete-success' => "'''רעוויזיע זעבאַרקייט דערפֿאלגרייך דערהײַנטיקט.'''",
+'revdelete-failure' => "'''נישט מעגלעך צו דערהײַנטיקן רעוויזיע זעבאַרקייט:'''
+$1",
+'logdelete-success' => "'''לאג באהאלטן איז סוקסעספול איינגעשטעלט.'''",
+'logdelete-failure' => "'''נישט מעגלעך צו שטעלן לאג זעבאַרקייט:'''
+$1",
+'revdel-restore' => 'טויש די זעבארקייט',
+'pagehist' => 'בלאט היסטאריע',
+'deletedhist' => 'אויסגעמעקטע ווערסיעס',
+'revdelete-content' => 'אינהאלט',
+'revdelete-summary' => 'רעדאקטירונג קיצור',
+'revdelete-uname' => 'באניצער נאמען',
+'revdelete-restricted' => 'פארמערט באגרעניצונגען פאר סיסאפן',
+'revdelete-unrestricted' => 'אוועקגענומען באגרעניצונגען פאר סיסאפן',
+'revdelete-hid' => 'באהאלטן $1',
+'revdelete-unhid' => 'מבטל געווען באהאלטן $1',
+'revdelete-log-message' => '$1 פֿאר {{PLURAL:$2|איין רעוויזיע|$2 רעוויזיעס}}',
+'logdelete-log-message' => '$1 פֿאר {{PLURAL:$2|איין פאסירונג|$2 פאסירונגען}}',
+'revdelete-modify-missing' => 'פֿעלער בײַ מאדיפֿיצירן דעם איינס ID $1: ער פֿעלט פֿון דער דאַטנבאַזע the database!',
+'revdelete-only-restricted' => 'פֿעלער בײַם באַהאַלטן דאס איינסל פֿון $2, $1: איר קענט נישט באהאלטן פרטים פון אַדמיניסטראטורן נאר אויב איר וויילט אויס איינע פון די אַנדערע באַהאַלטן ברירות.',
+'revdelete-reason-dropdown' => '*אלגעמיינע אויסמעקן סיבות
+** קאפירעכט ברעכן
+** פערזענלעכע אינפֿארמאציע
+** אינפארמאציע מעגלעך צו זיין לשון הרע',
+'revdelete-otherreason' => 'אנדער/צוגעגעבענע סיבה:',
+'revdelete-reasonotherlist' => 'אנדער סיבה',
+'revdelete-edit-reasonlist' => 'רעדאַקטירן אויסמעקן סיבות',
+'revdelete-offender' => 'רעוויזיע מחבר:',
# Suppression log
'suppressionlog' => 'באהאלטונגען לאג',
@@ -946,66 +1022,13 @@ $2',
'mergelogpagetext' => "אונטן איז א ליסטע פון לעצטנסדיגע צונויפגיסונגען פון איין בלאט'ס היסטאריע אין א צווייטער.",
# Diffs
-'history-title' => 'רעוויזיע היסטאריע פֿון $1',
-'difference' => '(אונטערשייד צווישן ווערסיעס)',
-'lineno' => 'שורה $1:',
-'compareselectedversions' => 'פארגלייך סעלעקטירטע ווערסיעס',
-'visualcomparison' => 'זעהבארע פארגלייך',
-'wikicodecomparison' => 'וויקיטעקסט פֿאַרגלייכונג',
-'editundo' => 'אַנולירן',
-'diff-multi' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} נישט געוויזן.)',
-'diff-movedto' => 'אריבערגעפֿירט צו $1',
-'diff-styleadded' => '$1 סטיל צוגעלייגט',
-'diff-added' => '$1 צוגעלייגט',
-'diff-changedto' => 'געענדערט צו $1',
-'diff-movedoutof' => 'אריבערגעפֿירט פֿון $1',
-'diff-styleremoved' => '$1 סטיל אוועקגענומען',
-'diff-removed' => '$1 אוועקגענומען',
-'diff-changedfrom' => 'געענדערט פֿון $1',
-'diff-src' => 'מקור',
-'diff-withdestination' => 'מיט ציל $1',
-'diff-with' => '&#32;מיט $1 $2',
-'diff-with-final' => '&#32;און $1 $2',
-'diff-width' => 'ברייט',
-'diff-height' => 'הייך',
-'diff-p' => "א '''פאַראַגראַף'''",
-'diff-blockquote' => "אַ '''ציטאַט'''",
-'diff-h1' => "'''קעפל (שטאפל 1)'''",
-'diff-h2' => "'''קעפל (שטאפל 2)'''",
-'diff-h3' => "'''קעפל (שטאפל 3)'''",
-'diff-h4' => "'''קעפל (שטאפל 4)'''",
-'diff-h5' => "'''קעפל (שטאפל 5)'''",
-'diff-pre' => "אַ '''פֿארמאַטירטער בלאק'''",
-'diff-div' => "אַן '''אָפטייל'''",
-'diff-ul' => "אן '''אומסארטירטע ליסטע'''",
-'diff-ol' => "א '''סארטירטע ליסטע'''",
-'diff-li' => "א '''ליסטע עלעמענט'''",
-'diff-table' => "א '''טאבעלע'''",
-'diff-tbody' => "א ''' טבלה'ס תוכן'''",
-'diff-tr' => "א '''שורה'''",
-'diff-td' => "א '''צעל'''",
-'diff-th' => "אַ '''קעפל'''",
-'diff-br' => "'''אראפגיין א שורה'''",
-'diff-hr' => "א '''האריזאטאלישער שטריך'''",
-'diff-code' => "א '''קאמפיוטער קאוד בלאקירונג'''",
-'diff-dl' => "א '''דעפאניציע ליסטע'''",
-'diff-dt' => "א '''דעפאניציע טערמין'''",
-'diff-dd' => "א '''דעפאניציע'''",
-'diff-form' => "א '''פארעם'''",
-'diff-img' => "אַ '''בילד'''",
-'diff-span' => "א '''שטיק'''",
-'diff-a' => "א '''לינק'''",
-'diff-i' => "'''גענייגט'''",
-'diff-b' => "'''דיק'''",
-'diff-strong' => "'''שטארק'''",
-'diff-em' => "'''טעקסט געדרוקט'''",
-'diff-font' => "'''פאנט'''",
-'diff-big' => "'''גרויס'''",
-'diff-del' => "'''אויסגעמעקט'''",
-'diff-tt' => "'''פאראכטענע ברייטקייט'''",
-'diff-sub' => "'''אונטערשטער שריפט'''",
-'diff-sup' => "'''אויבערשטער שריפט'''",
-'diff-strike' => "'''שטראך איבער'''",
+'history-title' => 'רעוויזיע היסטאריע פֿון $1',
+'difference' => '(אונטערשייד צווישן ווערסיעס)',
+'lineno' => 'שורה $1:',
+'compareselectedversions' => 'פארגלייך סעלעקטירטע ווערסיעס',
+'showhideselectedversions' => 'ווײַזן/באַהאַלטן געקליבענע רעוויזיעס',
+'editundo' => 'אַנולירן',
+'diff-multi' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} נישט געוויזן.)',
# Search results
'searchresults' => 'זוכן רעזולטאטן',
@@ -1013,28 +1036,25 @@ $2',
'searchresulttext' => 'לערנען מער ווי צו זוכן אין {{SITENAME}}, זעט [[{{MediaWiki:Helppage}}|{{int:help}}]]',
'searchsubtitle' => 'איר האט געזוכט \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|אלע בלעטער וואס הייבן אן "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|אלע בלעטער וואס פֿאַרבינדן צו "$1"]])',
'searchsubtitleinvalid' => "'''$1''' איר האט געזוכט",
-'noexactmatch' => 'דערווייל איז נאָך נישטאָ א בלאט מיט דעם טיטל.<br /> איר זײַט געלאדנט [[:$1|אויפשרייבן א נייעם בלאט]].',
-'noexactmatch-nocreate' => 'נישטא קיין בלאט מיטן קעפל "$1".',
'toomanymatches' => 'צו פֿיל רעזולטאַטן, ביטע פרואווט אן אנדער זוך',
'titlematches' => 'בלאט קעפל שטימט',
'notitlematches' => 'קיין שום בלאט האט נישט א צוגעפאסט קעפל',
'textmatches' => 'בלעטער מיט פאסענדע אינהאלט',
'notextmatches' => 'נישטא קיין בלעטער מיט פאסענדע אינהאלט',
-'prevn' => '$1 פריערדיגע',
-'nextn' => '$1 קומענדיגע',
+'prevn' => '{{PLURAL:$1|פֿריערדיקער|$1 פֿריערדיקע}}',
+'nextn' => '{{PLURAL:$1|$1}} קומענדיגע',
'prevn-title' => '{{PLURAL:$1|פֿריערדיגער $1 רעזולטאַט|פֿריערדיגע $1 רעזולטאַטן}}',
'nextn-title' => '{{PLURAL:$1|קומענדיקער רעזולטאַט|קומענדיקע $1 רעזולטאַטן}}',
'shown-title' => 'ווײַזן $1 {{PLURAL:$1|רעזולטאַט| רעזולטאַטן}} אויף א בלאַט',
-'viewprevnext' => 'קוקט אויף ($1) ($2) ($3)',
+'viewprevnext' => 'קוקט אויף ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'זוכן ברירות',
'searchmenu-exists' => "'''ס'איז פֿאַראַן א בלאַט מיטן נאמען \"[[:\$1]]\" אין דער וויקי'''",
'searchmenu-new' => "'''באַשאַפֿן דעם בלאַט \"[[:\$1]]\" אויף דער וויקי'''",
'searchhelp-url' => 'Help:אינהאַלט',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|בלעטערן בלעטער מיט דעם פרעפֿיקס]]',
'searchprofile-articles' => 'אינהאלט בלעטער',
-'searchprofile-articles-and-proj' => 'אינהאַלט און פראיעקט בלעטער',
-'searchprofile-project' => 'פראיעקט בלעטער',
-'searchprofile-images' => 'טעקעס',
+'searchprofile-project' => 'הילף און פראיעקט בלעטער',
+'searchprofile-images' => 'מולטימעדיע',
'searchprofile-everything' => 'אלץ',
'searchprofile-advanced' => 'פֿארגעשריטן',
'searchprofile-articles-tooltip' => 'זוכן אין $1',
@@ -1054,11 +1074,12 @@ $2',
'search-mwsuggest-disabled' => 'אן פארשלאגן',
'search-relatedarticle' => 'פארבינדן',
'mwsuggest-disable' => 'בטל מאכן פארשלאגן AJAX',
+'searcheverything-enable' => 'זוכן אין אלע נאמענטיילן',
'searchrelated' => 'פארבינדן',
'searchall' => 'אלץ',
'showingresults' => "ווייזן ביז {{PLURAL:$1|רעזולטאט '''איינס'''|'''$1''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
'showingresultsnum' => "ווייזן {{PLURAL:$3|רעזולטאט '''איינס'''|'''$3''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
-'showingresultstotal' => "ווײַזן {{PLURAL:$4| רעזולטאט '''$1''' פֿון '''$3'''| רעזולטאטן '''$1 - $2''' פֿון '''$3'''}}",
+'showingresultsheader' => "{{PLURAL:$5|רעזולטאַט '''$1''' פֿון '''$3'''| רעזולטאַטן '''$1 - $2''' פֿון '''$3'''}} פֿאַר '''$4'''",
'nonefound' => "''' אכטונג''': בלויז אין טייל נאמענטיילן ווערט געזוכט גרונטלעך.
איר קענט שרייבן'''all:''' בעפאר דער זוך טערמין כדי צו זוכן אין אלע בלעטער (אריינגערעכנט שמועס בלעטער, מוסטערן, א.א.וו.), אדער שרייבן בעפארן זוך-טערמין דעם נאמענטייל וואס איר זענט אינטערסירט דערין.",
'search-nonefound' => 'נישטא קיין רעזולטאטן פֿאַר דער שאלה.',
@@ -1067,101 +1088,145 @@ $2',
'powersearch-ns' => 'זוכן אין נאמענטיילן:',
'powersearch-redir' => 'ווײַז ווײַטערפֿירונג בלעטער',
'powersearch-field' => 'זוך',
+'powersearch-togglelabel' => 'קאנטראלירן:',
+'powersearch-toggleall' => 'אלע',
+'powersearch-togglenone' => 'קיין',
'search-external' => 'דרויסנדיק זוכן',
+# Quickbar
+'qbsettings' => 'גיכפאַס',
+'qbsettings-none' => 'גארנישט',
+'qbsettings-fixedleft' => 'קבוע לינקס',
+'qbsettings-fixedright' => 'קבוע רעכטס',
+'qbsettings-floatingleft' => 'שווימנדיג לינקס',
+'qbsettings-floatingright' => 'שווימנדיג רעכטס',
+
# Preferences page
-'preferences' => 'פרעפֿערענצן',
-'mypreferences' => 'פּרעפֿערענצן',
-'prefs-edits' => 'צאָל ענדערונגען:',
-'prefsnologin' => 'נישט אריינלאגירט',
-'prefsnologintext' => 'איר דארפט זיין <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} אריינלאגירט]</span> כדי צו ענדערן באניצער פרעפֿערענצן.',
-'qbsettings' => 'גיכפאַס',
-'qbsettings-none' => 'גארנישט',
-'qbsettings-fixedleft' => 'קבוע לינקס',
-'qbsettings-fixedright' => 'קבוע רעכטס',
-'qbsettings-floatingleft' => 'שווימנדיג לינקס',
-'qbsettings-floatingright' => 'שווימנדיג רעכטס',
-'changepassword' => 'טוישן פאַסווארט',
-'skin' => 'סקין',
-'skin-preview' => 'פארויסדיגע ווייזונג',
-'math' => 'פאָרמאַל',
-'dateformat' => 'דאטום פארמאט',
-'datedefault' => 'נישטא קיין פרעפערענץ',
-'datetime' => 'דאטום און צייט',
-'math_unknown_error' => 'אומבאַקאַנטער פֿעלער',
-'math_unknown_function' => 'אומבאַקאַנטע פֿונקציע',
-'math_syntax_error' => 'סינטאקס גרייז',
-'prefs-personal' => 'באַנוצער פראָפֿיל',
-'prefs-rc' => 'לעצטע ענדערונגען',
-'prefs-watchlist' => 'אויפפאסונג ליסטע',
-'prefs-watchlist-days' => 'טעג צו ווייזן אין דער אויפפאסונג ליסטע:',
-'prefs-watchlist-days-max' => '(מאקסימום 7 טעג)',
-'prefs-watchlist-edits' => 'מאַקסימום נומער פון נײַע ענדערונגען צו ווייַזן אין פֿאַרברייטערטער אויפֿפאַסונג ליסטע:',
-'prefs-watchlist-edits-max' => '(מאקסימום צאל: 1000)',
-'prefs-misc' => 'פֿאַרשידנס',
-'prefs-resetpass' => 'טוישן פאַסווארט',
-'saveprefs' => 'אויפֿהיטן',
-'resetprefs' => 'אוועקנעמען נישט-אויפגעהיטענע ענדערונגען',
-'restoreprefs' => 'צוריקשטעלן אלע גרונטלעכע שטעלונגען',
-'textboxsize' => 'באַאַרבעטן',
-'prefs-edit-boxsize' => 'גרויס פונעם רעדאקטירונג פענסטער.',
-'rows' => 'שורות:',
-'columns' => 'עמודים:',
-'searchresultshead' => 'זוכן',
-'resultsperpage' => 'צאל טרעפֿן אין א בלאַט:',
-'contextlines' => 'שורות פער רעזולטאט',
-'contextchars' => 'קאנטעקסט פער שורה',
-'stub-threshold' => 'שוועל פֿאַר <a href="#" class="stub">שטומף לינק</a> פֿאָרמאַטירונג (בייטן):',
-'recentchangesdays' => 'צאל פון טעג צו ווייזן אין די לעצטע ענדערונגן:',
-'recentchangescount' => 'די צאָל רעדאַקטירונגען צו ווײַזן גרונטלעך אין די לעצטע ענדערונגען , בלאט היסטאריעס און לאג־ביכער:',
-'savedprefs' => 'אייערע פרעפערענצן איז אפגעהיטן געווארן.',
-'timezonelegend' => 'צײַט זאנע:',
-'localtime' => 'לאקאלע צייט:',
-'timezoneselect' => 'צײַט זאנע:',
-'timezoneuseserverdefault' => 'ניצן סערווירער גרונט',
-'timezoneuseoffset' => 'אַנדער (ספעציפֿירט אונטערשייד)',
-'timezoneoffset' => 'אונטערשייד¹:',
-'servertime' => 'סארווער צײַט:',
-'guesstimezone' => 'אנפֿילן פֿון בלעטערער',
-'timezoneregion-africa' => 'אפריקע',
-'timezoneregion-america' => 'אמעריקע',
-'timezoneregion-antarctica' => 'אנטארקטיקע',
-'timezoneregion-arctic' => 'ארקטיק',
-'timezoneregion-asia' => 'אזיע',
-'timezoneregion-atlantic' => 'אטלאנטישער אקעאן',
-'timezoneregion-australia' => 'אויסטראליע',
-'timezoneregion-europe' => 'אייראפע',
-'timezoneregion-indian' => 'אינדישער אקעאן',
-'timezoneregion-pacific' => 'פאציפישער אקעאן',
-'allowemail' => 'ערלויבן אנדערע צו שיקן אײַך ע־פאסט',
-'prefs-searchoptions' => 'ברירות פאר זוכן',
-'prefs-namespaces' => 'נאָמענטיילן',
-'defaultns' => 'זוך אין דעם נאמענטייל אלס גרונט אויסקלייב:',
-'default' => 'גרונטלעך',
-'files' => 'טעקעס',
-'prefs-custom-css' => 'באַניצער דעפֿינירט CSS',
-'prefs-custom-js' => 'באַניצער דעפֿינירט JS',
+'preferences' => 'פרעפֿערענצן',
+'mypreferences' => 'פּרעפֿערענצן',
+'prefs-edits' => 'צאָל ענדערונגען:',
+'prefsnologin' => 'נישט אריינלאגירט',
+'prefsnologintext' => 'איר דארפט זיין <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} אריינלאגירט]</span> כדי צו ענדערן באניצער פרעפֿערענצן.',
+'changepassword' => 'טוישן פאַסווארט',
+'prefs-skin' => 'סקין',
+'skin-preview' => 'פארויסדיגע ווייזונג',
+'prefs-math' => 'פאָרמאַל',
+'datedefault' => 'נישטא קיין פרעפערענץ',
+'prefs-datetime' => 'דאטום און צייט',
+'prefs-personal' => 'באַנוצער פראָפֿיל',
+'prefs-rc' => 'לעצטע ענדערונגען',
+'prefs-watchlist' => 'אויפפאסונג ליסטע',
+'prefs-watchlist-days' => 'טעג צו ווייזן אין דער אויפפאסונג ליסטע:',
+'prefs-watchlist-days-max' => '(מאקסימום 7 טעג)',
+'prefs-watchlist-edits' => 'מאַקסימום נומער פון נײַע ענדערונגען צו ווייַזן אין פֿאַרברייטערטער אויפֿפאַסונג ליסטע:',
+'prefs-watchlist-edits-max' => '(מאקסימום צאל: 1000)',
+'prefs-watchlist-token' => 'אויפֿפאַסונג ליסטע סימן:',
+'prefs-misc' => 'פֿאַרשידנס',
+'prefs-resetpass' => 'טוישן פאַסווארט',
+'prefs-email' => 'ע־פאסט אפציעס',
+'prefs-rendering' => 'אויסזען',
+'saveprefs' => 'אויפֿהיטן',
+'resetprefs' => 'אוועקנעמען נישט-אויפגעהיטענע ענדערונגען',
+'restoreprefs' => 'צוריקשטעלן אלע גרונטלעכע שטעלונגען',
+'prefs-editing' => 'באַאַרבעטן',
+'prefs-edit-boxsize' => 'גרויס פונעם רעדאקטירונג פענסטער.',
+'rows' => 'שורות:',
+'columns' => 'עמודים:',
+'searchresultshead' => 'זוכן',
+'resultsperpage' => 'צאל טרעפֿן אין א בלאַט:',
+'contextlines' => 'שורות פער רעזולטאט',
+'contextchars' => 'קאנטעקסט פער שורה',
+'stub-threshold' => 'שוועל פֿאַר <a href="#" class="stub">שטומף לינק</a> פֿאָרמאַטירונג (בייטן):',
+'recentchangesdays' => 'צאל פון טעג צו ווייזן אין די לעצטע ענדערונגן:',
+'recentchangesdays-max' => 'מאַקסימום $1 {{PLURAL:$1|טאָג|טעג}}',
+'recentchangescount' => 'די צאָל רעדאַקטירונגען צו ווײַזן גרונטלעך:',
+'prefs-help-recentchangescount' => 'כולל לעצטע ענדערונגען, בלאַט היסטאָריעס, און לאָגביכער.',
+'savedprefs' => 'אייערע פרעפערענצן איז אפגעהיטן געווארן.',
+'timezonelegend' => 'צײַט זאנע:',
+'localtime' => 'לאקאלע צייט:',
+'timezoneuseserverdefault' => 'ניצן סערווירער גרונט',
+'timezoneuseoffset' => 'אַנדער (ספעציפֿירט אונטערשייד)',
+'timezoneoffset' => 'אונטערשייד¹:',
+'servertime' => 'סארווער צײַט:',
+'guesstimezone' => 'אנפֿילן פֿון בלעטערער',
+'timezoneregion-africa' => 'אפריקע',
+'timezoneregion-america' => 'אמעריקע',
+'timezoneregion-antarctica' => 'אנטארקטיקע',
+'timezoneregion-arctic' => 'ארקטיק',
+'timezoneregion-asia' => 'אזיע',
+'timezoneregion-atlantic' => 'אטלאנטישער אקעאן',
+'timezoneregion-australia' => 'אויסטראליע',
+'timezoneregion-europe' => 'אייראפע',
+'timezoneregion-indian' => 'אינדישער אקעאן',
+'timezoneregion-pacific' => 'פאציפישער אקעאן',
+'allowemail' => 'ערלויבן אנדערע צו שיקן אײַך ע־פאסט',
+'prefs-searchoptions' => 'ברירות פאר זוכן',
+'prefs-namespaces' => 'נאָמענטיילן',
+'defaultns' => 'אנדערשט זוך אין די נאמענטיילן:',
+'default' => 'גרונטלעך',
+'prefs-files' => 'טעקעס',
+'prefs-custom-css' => 'באַניצער דעפֿינירט CSS',
+'prefs-custom-js' => 'באַניצער דעפֿינירט JS',
+'prefs-reset-intro' => 'איר קענט ניצן דעם בלאַט צוריקצושטעלן אײַערע פרעפֿערענצן גרונטלעך פֿאַרן ארט. to reset your preferences to the site defaults.
+מען קען דאָס נישט אַנולירן.',
+'prefs-emailconfirm-label' => 'ע-פאסט באַשטעטיקונג:',
+'prefs-textboxsize' => 'גרייס פֿון רעדאַקטירונג פֿענסטער',
+'youremail' => 'ע-פאסט:',
+'username' => 'באַנוצער־נאָמען:',
+'uid' => 'באַנוצער־נומער:',
+'prefs-memberingroups' => 'מיטגליד אין {{PLURAL:$1|גרופע|גרופעס}}:',
+'prefs-registration' => 'אײַנשרײַבן צײַט:',
+'yourrealname' => 'עכטער נאמען *:',
+'yourlanguage' => 'שפּראַך:',
+'yourvariant' => 'װאַריאַנט',
+'yournick' => 'חתימה:',
+'prefs-help-signature' => 'באַמערקונגען אויף רעדן בלעטער זאָלן זיין אונטערגעשריבן מיט "<nowiki> ~ ~ ~ ~ </nowiki>" וואָס וועט ווערן פֿאַרוואַנדלט אין אײַער חתימה מיט א צײַטשטעמפל.',
+'badsig' => 'נישט גילטיקער רויער אונטערשריפט. ביטע קאנטראלירט די HTML טאַגן.',
+'badsiglength' => 'אונטערשריפט צו לאנג; מוז זיין ווינציגער פון {{PLURAL:$1|איין אות|$1 אותיות}}.',
+'yourgender' => 'מין:',
+'gender-unknown' => 'נישט ספעציפֿיצירט',
+'gender-male' => 'זכר',
+'gender-female' => 'נקבה',
+'prefs-help-gender' => 'אפציאנאַל: באניצט בכדי דאס ווייכוואַרג זאל אײַך אַדרעסירן מיטן געהעריגן מין פֿארעם. די אינפֿארמאַציע ווערט ידוע צו אַלעמען.',
+'email' => 'ע-פאסט',
+'prefs-help-realname' => '* עכטער נאמען (אפציאנאל): אויב וועט איר אויסוועלן צוצישטעלן דאס, וועט גענוצט ווערן צו געבן אטריביאציע צו אייער ארבייט.',
+'prefs-help-email' => 'ע-פאסט אדרעס איז ברירהדיק, אבער עס דערמעגליכט אז מען קען אייך שיקן א ניי פאסווארט טאמער איר פֿארגעסט דאס אלטע.
+איר קענט אויך לאזן אנדערע צו קאנטאקטן אייך דורך אייער באניצער אדער באניצער רעדן בלאט אן ארויסגעבן אייער אידענטיטעט.',
+'prefs-help-email-required' => 'בליצפאסט אדרעס באדארפט.',
+'prefs-info' => 'גרונטלעכע אינפֿארמאַציע',
+'prefs-i18n' => 'אינטערנאַציאנאַליזאַציע',
+'prefs-signature' => 'אונטערשריפֿט',
+'prefs-dateformat' => 'דאַטע פֿארמאַט',
+'prefs-timeoffset' => 'צײַט אונטערשייד',
+'prefs-advancedediting' => 'אדוואנסירטע אפציעס',
+'prefs-advancedrc' => 'אדוואנסירטע אפציעס',
+'prefs-advancedrendering' => 'אדוואנסירטע אפציעס',
+'prefs-advancedsearchoptions' => 'אדוואנסירטע אפציעס',
+'prefs-advancedwatchlist' => 'אדוואנסירטע אפציעס',
+'prefs-display' => 'ווייז אפציעס',
+'prefs-diffs' => 'צווישנשיידן',
# User rights
-'userrights' => 'באנוצער רעכטן פארוואלטערשאפט', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => 'פֿאַרוואַלטן באניצער גרופעס',
-'userrights-user-editname' => 'לייגט אריין א באנוצער-נאמען:',
-'editusergroup' => 'עדיט באנוצער גרופעס',
-'editinguser' => "ענדערן באניצער רעכטן פון באניצער user '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'רעדאַקטירן באַניצער גרופעס',
-'saveusergroups' => 'אָפהיטן באַניצער גרופעס',
-'userrights-groupsmember' => 'מיטגליד פון:',
-'userrights-groups-help' => 'איר מעגט ענדערן די גרופעס צו וועמען דער באַניצער געהערט:
+'userrights' => 'באנוצער רעכטן פארוואלטערשאפט',
+'userrights-lookup-user' => 'פֿאַרוואַלטן באניצער גרופעס',
+'userrights-user-editname' => 'לייגט אריין א באנוצער-נאמען:',
+'editusergroup' => 'עדיט באנוצער גרופעס',
+'editinguser' => "ענדערן באניצער רעכטן פון באניצער user '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'רעדאַקטירן באַניצער גרופעס',
+'saveusergroups' => 'אָפהיטן באַניצער גרופעס',
+'userrights-groupsmember' => 'מיטגליד פון:',
+'userrights-groupsmember-auto' => 'אויטאמטישער מיטגליד פֿון:',
+'userrights-groups-help' => 'איר מעגט ענדערן די גרופעס צו וועמען דער באַניצער געהערט:
*א מאַרקירט קעסטל באַדײַט אָז דער באַניצער איז א מיטגליד אין דער גרופע.
* אַן אוממאַרקירט קעסטל באַדײַט אָז דער באַניצער איז נישט קיין מיטגליד אין דער גרופע.
* א * ווײַזט אַז איר קענט נישט אַראפנעמען די גרופע נאָך דעם וואָט איר האט זי צוגעלייגט, אדער פֿאַרקערט.',
-'userrights-reason' => 'אורזאַך:',
-'userrights-no-interwiki' => 'איר האט נישט קיין ערלויבניש צו רעדאַקטירן באַניצער רעכטן אויף אַנדערע וויקיס.',
-'userrights-nodatabase' => 'דאַטנבאַזע $1 אדער עקזיסטירט נישט אדער איז נישט ארטיק.',
-'userrights-nologin' => 'איר דאַרפֿט [[Special:UserLogin| אַרײַנלאגירן]] מיט א סיסאפ קאנטע צו באַשטימען באַניצער רעכטן.',
-'userrights-notallowed' => 'אייער קאנטע האט נישט קיין ערלויבניש צו באשטימען באניצער רעכטן.',
-'userrights-changeable-col' => 'גרופעס איר קענט ענדערן',
-'userrights-unchangeable-col' => 'גרופעס איר קענט נישט ענדערן',
+'userrights-reason' => 'אורזאַך:',
+'userrights-no-interwiki' => 'איר האט נישט קיין ערלויבניש צו רעדאַקטירן באַניצער רעכטן אויף אַנדערע וויקיס.',
+'userrights-nodatabase' => 'דאַטנבאַזע $1 אדער עקזיסטירט נישט אדער איז נישט ארטיק.',
+'userrights-nologin' => 'איר דאַרפֿט [[Special:UserLogin| אַרײַנלאגירן]] מיט א סיסאפ קאנטע צו באַשטימען באַניצער רעכטן.',
+'userrights-notallowed' => 'אייער קאנטע האט נישט קיין ערלויבניש צו באשטימען באניצער רעכטן.',
+'userrights-changeable-col' => 'גרופעס איר קענט ענדערן',
+'userrights-unchangeable-col' => 'גרופעס איר קענט נישט ענדערן',
# Groups
'group' => 'גרופע:',
@@ -1207,6 +1272,7 @@ $2',
'right-bigdelete' => 'אויסמעקן בלעטער מיט לאַנגע היסטאריעס',
'right-deleterevision' => 'מעקן און צוריקשטעלן ספעציפישע רעוויזיעס פון בלעטער',
'right-deletedhistory' => 'אײַערע אויסגעמעקטע היסטאריע פֿאַרשרײַבונגען, אן זייער אסאציאירטן טעקסט',
+'right-deletedtext' => 'באַקוקן אויסגעמעקטן טעקסט און ענדערונגען צווישן אויסגעמעקטע ווערסיעס',
'right-browsearchive' => 'זוכן אויסגעמעקטע בלעטער',
'right-undelete' => 'צוריקשטעלן א בלאט',
'right-suppressrevision' => 'קוק-איבער און דריי-צוריק רעוויזיעס באהאלטן פון אדימיניסטראטורן',
@@ -1215,6 +1281,8 @@ $2',
'right-blockemail' => 'בלאקירן א באַניצער פֿון שיקן ע־פאסט',
'right-editinterface' => 'רעדאַקטירן די באַניצער אייבערפֿלאַך',
'right-editusercssjs' => 'רעדאַקטירן אַנדערע באַניצערס CSS און JS טעקעס',
+'right-editusercss' => 'רעדאַקטירן אַנדערע באַניצערס CSS טעקעס',
+'right-edituserjs' => 'רעדאַקטירן אַנדערע באַניצערס JS טעקעס',
'right-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
'right-import' => 'אימפארטירן בלעטער פון אנדערע וויקיס',
'right-importupload' => 'אימפארטירן בלעטער דורך ארויפֿלאָדן טעקע',
@@ -1226,6 +1294,7 @@ $2',
'right-userrights-interwiki' => 'רעדאַקטירן באַניצער רעכטן פֿון באַניצער אויף אנדערע וויקיס',
'right-siteadmin' => 'פארשליס און שליס-אויף די דאטעבאזע',
'right-reset-passwords' => 'צוריקשטעלן אַנדערע באַניצערס פאַסווערטער',
+'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
# User rights log
'rightslog' => 'באַניצער רעכטן לאג',
@@ -1272,6 +1341,15 @@ $2',
'recentchanges-legend' => 'ברירות פאר לעצטע ענדערונגען',
'recentchangestext' => 'גיי נאך די לעצטע ענדערונגען צו דער וויקי אויף דעם בלאט.',
'recentchanges-feed-description' => 'גייט נאך די לעצטע ענדערונגען צו דער וויקי אין דעם בלאט.',
+'recentchanges-label-legend' => 'לעגענדע: $1.',
+'recentchanges-legend-newpage' => '$1 - נײַער בלאַט',
+'recentchanges-label-newpage' => 'די רעדאַקטירונג האט באשאפֿן א נײַעם בלאַט',
+'recentchanges-legend-minor' => '$1 - מינערדיקע רעדאַקטירונג',
+'recentchanges-label-minor' => 'דאָס איז אַ מינערדיקע רעדאַקטירונג',
+'recentchanges-legend-bot' => '$1 - באט רעדאַקטירונג',
+'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
+'recentchanges-legend-unpatrolled' => '$1 - אומפאַטראלירטע רעדאַקטירונג',
+'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
'rcnote' => "אונטן {{PLURAL:$1|איז '''1''' ענדערונג|זײַנען די לעצטע '''$1''' ענדערונגען}} אין {{PLURAL:$2|דעם לעצטן טאג|די לעצטע $2 טעג}}, ביז $5, $4.",
'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
@@ -1298,6 +1376,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => 'פֿאַרבונדענע ענדערונגען',
+'recentchangeslinked-feed' => 'פֿאַרבונדענע ענדערונגען',
+'recentchangeslinked-toolbox' => 'פֿאַרבונדענע ענדערונגען',
'recentchangeslinked-title' => 'ענדערונגען פֿארבונדן מיט $1',
'recentchangeslinked-noresult' => 'נישט געווען קיין ענדערונגען אין פֿארבונדענע בלעטער אין דער תקופה.',
'recentchangeslinked-summary' => "אט א רשימה פון נייע ענדערונגען צו בלעטער פארבונדן פון א ספעציפישן בלאט (אדער מיטגליד בלעטער פון א ספעציפישער קאטעגאריע).
@@ -1308,7 +1388,7 @@ $2',
# Upload
'upload' => 'אַרױפֿלאָדן בילדער/טעקעס',
'uploadbtn' => 'אַרױפֿלאָדן טעקע',
-'reupload' => 'ווידער ארויפֿלאָדן',
+'upload-tryagain' => 'פֿאָרלייגן מאדיפֿיצירטע טעקע באַשרײַבונג',
'uploadnologin' => 'נישט אַרײַנלאגירט',
'uploadnologintext' => 'איר מוזט זײַן [[Special:UserLogin| אַרײַנלאָָגירט]] כדי ארויפֿצולאָדן טעקעס',
'uploaderror' => 'אַרויפֿלאָדן פֿעלער',
@@ -1347,10 +1427,10 @@ $2',
ביטע קוקט איבער צי איר ווילט ארויפֿלאדן די דאזיקע טעקע.',
'fileexists' => "א טעקע מיט דעם נאָמען עקזיסטירט שוין, ביטע זײַט בודק '''<tt>[[:$1]]</tt>''' ווען איר זענט נישט זיכער אַז איר ווילט זי ענדערן.
[[$1|thumb]]",
-'fileexists-thumb' => "<center>'''עקזיסטירנדע טעקע'''</center>",
'file-exists-duplicate' => 'די טעקע איז א דופליקאַט פון די פֿאלגנדע {{PLURAL:$1|טעקע|טעקעס}}:',
'successfulupload' => 'דערפֿאלגרייכער ארויפֿלאָד',
'uploadwarning' => 'אַרויפֿלאָדן וואָרענונג',
+'uploadwarning-text' => 'זײַט אַזוי גוט מאדיפֿיצירן די טעקע באַשרייבונג און פרובירט נאכאַמאָל.',
'savefile' => 'טעקע אױפֿהיטן',
'uploadedimage' => 'אַרױפֿגעלאָדן "[[$1]]"',
'overwroteimage' => 'אַרויפֿגעלאָדן א נײַע ווערסיע פון "[[$1]]"',
@@ -1358,19 +1438,39 @@ $2',
'uploaddisabledtext' => 'אַרויפֿלאָדן טעקעס נישט דערמעגלעכט אצינד.',
'uploadscripted' => 'די טעקע האט א סקריפט אדער HTML קאד וואס קען ווערן פֿאלש אויסגעטייטשט דורך א בלעטערער',
'uploadvirus' => 'די טעקע האָט אַ ווירוס! פרטים: <div style="direction:rtl;">$1</div>',
+'upload-source' => 'מקור טעקע',
'sourcefilename' => 'מקור טעקע נאמען:',
+'sourceurl' => 'מקור URL:',
'destfilename' => 'ציל טעקע נאמען:',
'upload-maxfilesize' => 'מאַקסימום טעקע גרייס: $1',
+'upload-description' => 'טעקע שילדערונג',
+'upload-options' => "אַרויפֿלאָדן ברירה'ס",
'watchthisupload' => 'אויפֿפאַסן דעם בלאט',
-'upload-proto-error' => 'פאלשער פראטאקאל',
-'upload-file-error' => 'אינערליכער פעלער',
-'upload-misc-error' => 'אומבאַוואוסטער ארויפֿלאָדן גרײַז',
+'upload-proto-error' => 'פאלשער פראטאקאל',
+'upload-file-error' => 'אינערליכער פעלער',
+'upload-misc-error' => 'אומבאַוואוסטער ארויפֿלאָדן גרײַז',
+'upload-too-many-redirects' => 'דער URL אַנטהאַלט צופֿיל ווײַטערפֿירונגען.',
+'upload-unknown-size' => 'אומוויסנדע גרייס',
+'upload-http-error' => 'א HTTP גרײַז האט פאַסירט: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'צוטריט אָפגעזאָגט',
+'img-auth-nologinnWL' => 'איר זענט נישט ארײַנלאגירט און "$1" איז נישט אין דער ווײַסער ליסטע.',
+'img-auth-nofile' => 'טעקע "$1" עקזיסטירט נישט.',
+'img-auth-streaming' => 'שטראָמען $1.',
+
+# HTTP errors
+'http-invalid-url' => 'אומגילטיג URL: $1',
+'http-curl-error' => 'גרײַז בײַם ברענגען URL: $1',
+'http-host-unreachable' => "מ'קען נישט דערגרייכן דעם URL",
+'http-bad-status' => "ס'איז געווען א פראבלעם ביים HTTP פֿאַרלאַנג: $1 $2",
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => "מ'קען נישט דערגרייכן URL",
'license' => 'ליצענץ:',
+'license-header' => 'ליצענץ:',
'nolicense' => 'גארנישט',
'license-nopreview' => '(פֿאראויסקוק נישט פֿאַראַן)',
'upload_source_file' => '(א טעקע אויף אײַער קאמפיוטער)',
@@ -1387,38 +1487,42 @@ $2',
'listfiles_count' => 'ווערסיעס',
# File description page
-'filehist' => 'היסטאריע פֿון דער טעקע',
-'filehist-help' => 'קליקט אויף א דאטע/צײַט צו זען דאס בילד אזוי ווי עס איז דעמאלסט געווען',
-'filehist-deleteall' => 'אויסמעקן אלץ',
-'filehist-deleteone' => 'אויסמעקן',
-'filehist-revert' => 'צוריקשטעלן',
-'filehist-current' => 'לויפיק',
-'filehist-datetime' => 'דאטע/צײַט',
-'filehist-thumb' => 'געמינערטע בילד',
-'filehist-thumbtext' => 'געמינערטע בילד פֿאַר דער װערסיע פֿון דער דאַטע $1',
-'filehist-nothumb' => 'קיין פֿאַרקלענערט בילד',
-'filehist-user' => 'באניצער',
-'filehist-dimensions' => 'געמעסטן',
-'filehist-filesize' => 'טעקע גרייס',
-'filehist-comment' => 'באמערקונג',
-'imagelinks' => 'פֿאַרבינדונגען צום בילד',
-'linkstoimage' => '{{PLURAL:$1|דער פאלגנדער בלאט ניצט|די פאלגנדע בלעטער ניצן}} דאס דאזיגע בילד:',
-'linkstoimage-more' => "מער ווי $1 {{PLURAL:$1|בלאַט פֿאַרבינדט|בלעטער פֿאַרבינדן}} צו דער דאזיגער טעקע.
+'file-anchor-link' => 'בילד טעקע',
+'filehist' => 'היסטאריע פֿון דער טעקע',
+'filehist-help' => 'קליקט אויף א דאטע/צײַט צו זען דאס בילד אזוי ווי עס איז דעמאלסט געווען',
+'filehist-deleteall' => 'אויסמעקן אלץ',
+'filehist-deleteone' => 'אויסמעקן',
+'filehist-revert' => 'צוריקשטעלן',
+'filehist-current' => 'לויפיק',
+'filehist-datetime' => 'דאטע/צײַט',
+'filehist-thumb' => 'געמינערטע בילד',
+'filehist-thumbtext' => 'געמינערטע בילד פֿאַר דער װערסיע פֿון דער דאַטע $1',
+'filehist-nothumb' => 'קיין פֿאַרקלענערט בילד',
+'filehist-user' => 'באניצער',
+'filehist-dimensions' => 'געמעסטן',
+'filehist-filesize' => 'טעקע גרייס',
+'filehist-comment' => 'באמערקונג',
+'filehist-missing' => 'טעקע פעלט',
+'imagelinks' => 'פֿאַרבינדונגען צום בילד',
+'linkstoimage' => '{{PLURAL:$1|דער פאלגנדער בלאט ניצט|די פאלגנדע בלעטער ניצן}} דאס דאזיגע בילד:',
+'linkstoimage-more' => "מער ווי $1 {{PLURAL:$1|בלאַט פֿאַרבינדט|בלעטער פֿאַרבינדן}} צו דער דאזיגער טעקע.
די פֿאלגנדע ליסטע ווײַזט {{PLURAL:$1|דעם ערשטן בלאַט לינק|די ערשטע $1 בלאַט לינקען}} צו דער טעקע.
ס'איז פֿאַראַן[[Special:WhatLinksHere/$2|פֿולע רשימה]].",
-'nolinkstoimage' => 'נישטא קיין בלעטער וואס ניצן דאס דאזיגע בילד.',
-'morelinkstoimage' => 'באַקוקן [[Special:WhatLinksHere/$1|מער לינקען]] צו דער טעקע.',
-'redirectstofile' => 'די פֿאלגנדע {{PLURAL:$1|טעקע פֿירט אריבער|$1 טעקעס פֿירן אריבער}} צו דער דאזיגער טעקע:',
-'duplicatesoffile' => 'די פֿאלגנדע {{PLURAL:$1|טעקע דופליקירט|$1 טעקעס דופליקירן}} די דאזיגע טעקע ([[Special:FileDuplicateSearch/$2|נאך פרטים]]):',
-'sharedupload' => 'די טעקע איז פֿון $1 און מען מעג זי ניצן אין אנדערע פראיעקטן.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => 'זעט דעם $1 פֿאר מער אינפֿארמאציע.',
-'shareduploadwiki-desc' => 'די באשרייבונג אין איר $1 ווערט געוויזן אונטן.',
-'shareduploadwiki-linktext' => 'טעקע באשרייבונג בלאט',
-'noimage' => "ס'איז נישטא א טעקע מיט דעם נאמען, איר קענט אבער $1.",
-'noimage-linktext' => 'ארויפלאדן א טעקע',
-'uploadnewversion-linktext' => 'ארויפֿלאדן א נײַע ווערסיע פֿוו דער טעקע',
-'shared-repo-from' => 'פֿון $1', # $1 is the repository name
-'shared-repo' => 'א געמיינזאַמער זאַפאַס', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => 'נישטא קיין בלעטער וואס ניצן דאס דאזיגע בילד.',
+'morelinkstoimage' => 'באַקוקן [[Special:WhatLinksHere/$1|מער לינקען]] צו דער טעקע.',
+'redirectstofile' => 'די פֿאלגנדע {{PLURAL:$1|טעקע פֿירט אריבער|$1 טעקעס פֿירן אריבער}} צו דער דאזיגער טעקע:',
+'duplicatesoffile' => 'די פֿאלגנדע {{PLURAL:$1|טעקע דופליקירט|$1 טעקעס דופליקירן}} די דאזיגע טעקע ([[Special:FileDuplicateSearch/$2|נאך פרטים]]):',
+'sharedupload' => 'די טעקע איז פֿון $1 און מען מעג זי ניצן אין אנדערע פראיעקטן.',
+'sharedupload-desc-there' => 'די טעקע איז פֿון $1 און מען מעג זי ניצן אין אנדערע פראיעקטן.
+זעט דעם [$2 טעקע באשרייבונג בלאט] פאר מער אינפארמאציע.',
+'sharedupload-desc-here' => 'די טעקע איז פֿון $1 און מען מעג זי ניצן אין אנדערע פראיעקטן.
+די באשרייבונג פון איר [$2 טעקע באשרייבונג בלאט] דארט ווערן געוויזן אונטן.',
+'filepage-nofile' => 'עס עקזיסטירט נישט קיין טעקע מיט דעם נאמען.',
+'filepage-nofile-link' => 'עס עקזיסטירט נישט קיין טעקע מיט דעם נאמען, אבער איר קענט זי [$1 ארויפֿלאָדן].',
+'uploadnewversion-linktext' => 'ארויפֿלאדן א נײַע ווערסיע פֿוו דער טעקע',
+'shared-repo-from' => 'פֿון $1',
+'shared-repo' => 'א געמיינזאַמער זאַפאַס',
+'shared-repo-name-wikimediacommons' => 'וויקימעדיע קאמאנס',
# File reversion
'filerevert' => 'צוריקדרייען $1',
@@ -1464,7 +1568,7 @@ $2',
# Random page
'randompage' => 'צופֿעליגער אַרטיקל',
-'randompage-nopages' => 'נישטא קיין בלעטער אין נאמענטייל "$1".',
+'randompage-nopages' => 'נישטא קיין בלעטער אין {{PLURAL:$2|דעם פאלגנדן נאמענטייל |די פאלגנדע נאמענטיילן}} "$1".',
# Random redirect
'randomredirect' => 'צופֿעליק ווײַטערפֿירן',
@@ -1476,6 +1580,7 @@ $2',
'statistics-header-edits' => 'רעדאקטירן סטאַטיסטיק',
'statistics-header-views' => 'זען סטאטיסטיק',
'statistics-header-users' => 'באניצער סטאטיסטיק',
+'statistics-header-hooks' => 'אנדערע סטאטיסטיק',
'statistics-articles' => 'אינהאלט בלעטער',
'statistics-pages' => 'בלעטער',
'statistics-pages-desc' => 'אלע בלעטער אין דער וויקי, כולל רעדן בלעטער, ווייטערפירונגען, אא"וו',
@@ -1503,8 +1608,8 @@ $2',
'brokenredirects' => 'צעבראָכענע ווײַטערפֿירונגען',
'brokenredirectstext' => 'די פֿאלגנדע ווײַטערפֿירונגען פֿאַרבינדן צו בלעטער וואס עקזיסטירן נאך נישט:',
-'brokenredirects-edit' => '(ענדערן)',
-'brokenredirects-delete' => '(אויסמעקן)',
+'brokenredirects-edit' => 'ענדערן',
+'brokenredirects-delete' => 'אויסמעקן',
'withoutinterwiki' => 'בלעטער אן שפראך פֿארבינדונגען',
'withoutinterwiki-summary' => 'די פֿאלגנדע בלעטער פֿאַרבינדן נישט מיט אַנדערע שפראַך ווערסיעס',
@@ -1608,7 +1713,7 @@ $2',
# Special:Categories
'categories' => 'קאַטעגאָריעס',
-'categoriespagetext' => 'די פאלגענדע קאַטעגאָריעס אנטהאלטן בלעטער אדער מעדיע.
+'categoriespagetext' => 'די פֿאלגענדע {{PLURAL:$1| קאַטעגאָריע אַנטהאַלט|קאַטעגאָריעס אַנטהאַלטן}} בלעטער אדער מעדיע.
[[Special:UnusedCategories|אומבאַניצטע קאַטעגאריעס]] זענען נישט געוויזן דא.
זעט אויך [[Special:WantedCategories|געזוכטע קאַטעגאריעס]].',
'categoriesfrom' => 'ווײַזן קאַטעגאריעס אָנהייבנדיג פֿון:',
@@ -1616,8 +1721,9 @@ $2',
'special-categories-sort-abc' => 'סארטירן אַלפֿאַבעטיש',
# Special:DeletedContributions
-'deletedcontributions' => 'אויסגעמעקטע באַניצער בײַשטײַערונגען',
-'deletedcontributions-title' => 'אויסגעמעקטע באַניצער בײַשטײַערונגען',
+'deletedcontributions' => 'אויסגעמעקטע באַניצער בײַשטײַערונגען',
+'deletedcontributions-title' => 'אויסגעמעקטע באַניצער בײַשטײַערונגען',
+'sp-deletedcontributions-contribs' => 'בײַשטײַערונגען',
# Special:LinkSearch
'linksearch' => 'דרויסנדע לינקען',
@@ -1629,6 +1735,16 @@ $2',
'listusersfrom' => 'ווײַזן באניצער אנהייבנדיג פון:',
'listusers-submit' => 'ווײַז',
'listusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
+'listusers-blocked' => '(בלאקירט)',
+
+# Special:ActiveUsers
+'activeusers' => 'ליסטע פֿון אַקטיווע באַניצער',
+'activeusers-intro' => 'דאָס איז א ליסטע פֿון באַניצער וואָס זענען געווען אַקטיוו אינערהאָלב $1 {{PLURAL:$1|דעם לעצטן טאָג|די לעצטע $1 טעג}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|באַאַרבעטונג|באַאַרבעטונגען}} אין {{PLURAL:$3|דעם לעצטן טאָג|די לעצטע $3 טעג}}',
+'activeusers-from' => 'ווײַזן באַניצער אָנהייבנדיג פון:',
+'activeusers-hidebots' => 'באַהאַלטן באטן',
+'activeusers-hidesysops' => 'באַהאַלטן סיסאפן',
+'activeusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
# Special:Log/newusers
'newuserlogpage' => 'נייע באַניצערס לאָג-בוך',
@@ -1639,17 +1755,21 @@ $2',
'newuserlog-autocreate-entry' => 'קאנטע באַשאַפֿן אויטאמאַטיש',
# Special:ListGroupRights
-'listgrouprights' => 'באַניצער גרופע רעכטן',
-'listgrouprights-summary' => "פֿאלגנד איז א רשימה פֿון באַניצער גרופעס דעפֿינירט אויף דער דאָזיקער וויקי, מיט זײַערע אַסאציאירטע צוטריט רעכטן.
+'listgrouprights' => 'באַניצער גרופע רעכטן',
+'listgrouprights-summary' => "פֿאלגנד איז א רשימה פֿון באַניצער גרופעס דעפֿינירט אויף דער דאָזיקער וויקי, מיט זײַערע אַסאציאירטע צוטריט רעכטן.
ס'קען זײַן [[{{MediaWiki:Listgrouprights-helppage}}|מער אינפֿארמאַציע]] וועגן איינציקע רעכטן.",
-'listgrouprights-group' => 'גרופע',
-'listgrouprights-rights' => 'רעכטן',
-'listgrouprights-helppage' => 'Help: גרופע רעכטן',
-'listgrouprights-members' => '(רשימה פֿון מיטגלידער)',
-'listgrouprights-addgroup' => 'קען צולייגן {{PLURAL:$2|גרופע|גרופעס}}: $1',
-'listgrouprights-removegroup' => 'קען אראפנעמען {{PLURAL:$2|גרופע|גרופעס}}: $1',
-'listgrouprights-addgroup-all' => 'רשות צוצולייגן אלע גרופעס',
-'listgrouprights-removegroup-all' => 'רשות אוועקצונעמען אלע גרופעס',
+'listgrouprights-group' => 'גרופע',
+'listgrouprights-rights' => 'רעכטן',
+'listgrouprights-helppage' => 'Help: גרופע רעכטן',
+'listgrouprights-members' => '(רשימה פֿון מיטגלידער)',
+'listgrouprights-addgroup' => 'קען צולייגן {{PLURAL:$2|גרופע|גרופעס}}: $1',
+'listgrouprights-removegroup' => 'קען אראפנעמען {{PLURAL:$2|גרופע|גרופעס}}: $1',
+'listgrouprights-addgroup-all' => 'רשות צוצולייגן אלע גרופעס',
+'listgrouprights-removegroup-all' => 'רשות אוועקצונעמען אלע גרופעס',
+'listgrouprights-addgroup-self' => 'צולייגן {{PLURAL:$2|גרופע|גרופעס}} צו אייגענער קאנטע: $1',
+'listgrouprights-removegroup-self' => 'א§ראָפנעמען {{PLURAL:$2|גרופּע |גרופּעס}} פון אייגענער קאנטע: $1',
+'listgrouprights-addgroup-self-all' => 'צולייגן אַלע גרופעס צו אייגענער קאנטע',
+'listgrouprights-removegroup-self-all' => 'אראָפנעמען אַלע גרופעס פֿון אייגענער קאנטע',
# E-mail user
'mailnologin' => 'נישטא קיין אדרעס צו שיקן',
@@ -1723,7 +1843,7 @@ $2',
'enotif_lastvisited' => 'זעה $1 פאר אלע ענדערונגען זינט אייער לעצטער וויזיט.',
'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
-'enotif_body' => 'לכבוד $WATCHINGUSERNAME,
+'enotif_body' => 'טײַערער $WATCHINGUSERNAME,
דער {{SITENAME}} בלאט $PAGETITLE איז געווארן $CHANGEDORCREATED אום $PAGEEDITDATE דורך $PAGEEDITOR, זעט $PAGETITLE_URL פאר דער איצטיגער ווערסיע.
@@ -1741,7 +1861,10 @@ $NEWPAGE
--
צו ענדערן אייער אויפֿפאסונג ליסטע, באזוכט
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+כדי אויסמעקן דעם בלאט פון אײַער אויפֿפאַסונג ליסטע, באַזוכט
+$UNWATCHURL
פאר מער הילף:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1756,11 +1879,12 @@ $NEWPAGE
'delete-confirm' => 'אויסמעקן $1',
'delete-backlink' => '→ $1',
'delete-legend' => 'אויסמעקן',
-'historywarning' => 'אכטונג – איר גייט אויסמעקן א בלאט מיט א היסטאריע פֿון פֿריערדיגע ווערסיעס:',
+'historywarning' => 'אכטונג – איר גייט אויסמעקן א בלאט וואָס האט א היסטאריע מיט $1 {{PLURAL:$1|ווערסיע|ווערסיעס}}:',
'confirmdeletetext' => 'איר גייט איצט אויסמעקן א בלאט צוזאַמען מיט זײַן גאנצע היסטאריע.
ביטע באשטעטיגט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט פולערהייט די קאנסקווענסן פון דעם אַקט, און אז דאס איז אין איינקלאנג מיט [[{{MediaWiki:Policy-url}}|דער פאליסי]].',
'actioncomplete' => 'די אַקציע אָט זיך דורכגעפֿירט',
+'actionfailed' => 'אקציע דורכגעפאלן',
'deletedtext' => '"<nowiki>$1</nowiki>" אויסגעמעקט.
זעט $2 פֿאַר א רשימה פֿון לעצטיגע אויסמעקונגען.',
'deletedarticle' => 'אויסגעמעקט "[[$1]]"',
@@ -1792,8 +1916,8 @@ $NEWPAGE
אן אנדערער האט שוין געענדערט אדער צוריקגעדרייט דעם בלאט.
די לעצטע ענדערונג צום בלאַט איז געווען פון [[User:$3|$3]] ([[User talk:$3|רעדן]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "קורץ ווארט איז געווען: \"'''\$1'''\".", # only shown if there is an edit comment
-'revertpage' => 'רעדאַקטירונגען פֿון [[Special:Contributions/$2|$2]] צוריקגענומען ([[User talk:$2|רעדן]]) צו דער לעצטער ווערסיע פֿון [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "קורץ ווארט איז געווען: \"'''\$1'''\".",
+'revertpage' => 'רעדאַקטירונגען פֿון [[Special:Contributions/$2|$2]] צוריקגענומען ([[User talk:$2|רעדן]]) צו דער לעצטער ווערסיע פֿון [[User:$1|$1]]',
'rollback-success' => 'צוריקגעדרייט רעדאַקטירונגען פֿון $1 צו דער לעצטע ווערסיע פֿון $2',
'sessionfailure' => "ווײַזט אויס אז ס'איז דא א פראבלעם מיט אייער ארײַנלאגירן; די פעולה איז געווארן אנולירט צו פֿאַרהיטן קעגן פֿאַרשטעלן אייער סעסיע. זייט אזוי גוט און גייט צוריק צום פֿריערדיקן בלאט, און פרובירט נאכאַמאָל.",
@@ -1810,7 +1934,7 @@ $NEWPAGE
'protectexpiry' => 'גייט אויס:',
'protect_expiry_invalid' => 'אויסגיין צײַט אומגילטיג.',
'protect_expiry_old' => 'שוין דערנאך דער אויסגיין צײַט.',
-'protect-unchain' => 'אויפֿשליסן באוועגונג הרשאות',
+'protect-unchain-permissions' => 'אויפֿשליסן נאך שיץ אפציעס',
'protect-text' => "איר מעגט זען און ענדערן דעם שוץ ניווא דא פֿארן בלאט '''<nowiki>$1</nowiki>'''.",
'protect-locked-blocked' => "איר קען נישט ענדערן דעם שוץ ניווא בעת ווען איר זענט בלאקירט.
פֿאלגנד זענען די לויפֿיגע שטעלונגען פֿארן בלאט '''$1''':",
@@ -1839,7 +1963,7 @@ $NEWPAGE
** אומנוציקער רעדאקטירונג קריג
** שטארק געניצטער בלאט',
'protect-edit-reasonlist' => 'רעדאַקטירן שיצן סיבות',
-'protect-expiry-options' => 'שעה:1 hour,טאג:1 day,וואך:1 week,וואכן:2 weeks,חודש:1 month,דריי חדשים:3 months,זעקס חדשים:6 months,יאר:1 year,אייביג:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => 'שעה:1 hour,טאג:1 day,וואך:1 week,וואכן:2 weeks,חודש:1 month,דריי חדשים:3 months,זעקס חדשים:6 months,יאר:1 year,אייביג:infinite',
'restriction-type' => 'ערלויבניש:',
'restriction-level' => 'באַשיצונג ניווא:',
'minimum-size' => 'מינימום גרייס',
@@ -1874,6 +1998,7 @@ $NEWPAGE
'undelete-nodiff' => 'קיין פֿריערדיגע באַאַרבעטונג נישט געטראפֿן.',
'undeletebtn' => 'צוריקשטעלן',
'undeletelink' => 'קוקן/צוריקשטעלן',
+'undeleteviewlink' => 'באַקוקן',
'undeletereset' => 'צוריקשטעלן',
'undeleteinvert' => 'איבערקערן דעם אויסקלויב',
'undeletecomment' => 'אורזאַך:',
@@ -1901,19 +2026,23 @@ $NEWPAGE
'contributions-title' => 'בײַשטײַערונגען פֿון באַניצער $1',
'mycontris' => 'מײַנע בײַשטײַערונגען',
'contribsub2' => 'וועגן $1 ($2)',
-'nocontribs' => 'נישט געטראפן קיין ענדערונגען צוזאמעגעפאסט מיט די קריטעריעס.', # Optional parameter: $1 is the user name
+'nocontribs' => 'נישט געטראפן קיין ענדערונגען צוזאמעגעפאסט מיט די קריטעריעס.',
'uctop' => '(לעצטע)',
'month' => 'ביז חודש:',
'year' => 'ביז יאר:',
-'sp-contributions-newbies' => 'ווײַזן בײַשטײַערונגען נאר פֿון נײַע באַניצערס',
-'sp-contributions-newbies-sub' => 'פאר נייע קאנטעס',
-'sp-contributions-newbies-title' => 'בײַשטײַערונגען פֿון נײַע באַניצערס',
-'sp-contributions-blocklog' => 'בלאקירן לאג',
-'sp-contributions-logs' => 'לאגביכער',
-'sp-contributions-search' => 'זוכן בײַשטײַערונגען',
-'sp-contributions-username' => 'באניצער נאמען אדער IP אדרעס:',
-'sp-contributions-submit' => 'זוכן',
+'sp-contributions-newbies' => 'ווײַזן בײַשטײַערונגען נאר פֿון נײַע באַניצערס',
+'sp-contributions-newbies-sub' => 'פאר נייע קאנטעס',
+'sp-contributions-newbies-title' => 'בײַשטײַערונגען פֿון נײַע באַניצערס',
+'sp-contributions-blocklog' => 'בלאקירן לאג',
+'sp-contributions-deleted' => 'אויסגעמעקטע באַניצער בײַשטײַערונגען',
+'sp-contributions-logs' => 'לאגביכער',
+'sp-contributions-talk' => 'שמועס',
+'sp-contributions-userrights' => 'באַניצער רעכטן פֿאַרוואַלטונג',
+'sp-contributions-blocked-notice' => 'דער באַניצער איז אַצינד בלאקירט. פֿאלגנד איז די לעצטע אַקציע אינעם פֿאַרשפאַרונג לאגבוך:',
+'sp-contributions-search' => 'זוכן בײַשטײַערונגען',
+'sp-contributions-username' => 'באניצער נאמען אדער IP אדרעס:',
+'sp-contributions-submit' => 'זוכן',
# What links here
'whatlinkshere' => 'װאָס פֿאַרבינדט אַהער',
@@ -1936,6 +2065,7 @@ $NEWPAGE
# Block/unblock
'blockip' => 'באניצער ארויסטרייבן',
+'blockip-title' => 'בלאקירן באַניצער',
'blockip-legend' => 'בלאקירן באַניצער',
'blockiptext' => "באניצט די פארעם דא אונטן כדי צו בלאקירן שרײַבן רעכטן פֿון איינגעשריבענע באניצער אדער סתם ספעציפישע איי פי אדרעסן.
@@ -1970,7 +2100,7 @@ $NEWPAGE
3 מאָנאַטן:3 months,
6 מאָנאַטן:6 months,
1 יאָר:1 year,
-אויף אייביק:infinite', # display1:time1,display2:time2,...
+אויף אייביק:infinite',
'ipbotheroption' => 'אַנדער',
'ipbotherreason' => 'אנדער/נאך א סיבה:',
'ipbhidename' => 'באַהאַלטן באַניצער נאָמען פֿון רעדאַקטירונגען און רשימות',
@@ -1991,9 +2121,11 @@ $NEWPAGE
'ipblocklist-legend' => 'געפֿינען א בלאקירטן באניצער',
'ipblocklist-username' => 'באניצער נאמען אדער IP אדרעס:',
'ipblocklist-submit' => 'זוכן',
+'ipblocklist-localblock' => 'לאקאַלע בלאקירונג',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|אַנדער בלאקירונג|אַנדערע בלאקירונגען}}',
'blocklistline' => '$1 $2 האט פֿאַרשפאַרט $3 ($4)',
'infiniteblock' => 'אויף אייביק',
-'expiringblock' => 'גייט אויס $1',
+'expiringblock' => 'גייט אויס אום $1 $2',
'anononlyblock' => 'אנינאנימעס בלויז',
'noautoblockblock' => 'אויטאבלאק אומאַקטיווירט',
'createaccountblock' => 'קאנטע באשאפֿן בלאקירט',
@@ -2007,7 +2139,10 @@ $NEWPAGE
'contribslink' => 'באַניצערס בײַשטײַערונגען',
'autoblocker' => 'דו ביסט געבלאקט אטאמאטיק ווייל דו טיילסט זיך די IP אדרעס מיט [[User:$1|$1]]. דער סיבה וואס איז אנגעבען געווארן [[User:$1|$1]] איז: "$2".',
'blocklogpage' => 'בלאקירן לאג',
-'blocklog-fulllog' => 'פילער בלאקירונגן לאג',
+'blocklog-showlog' => '{{GENDER:$1|דער באַניצער|די באַניצערין}} איז שוין געווארן פֿאַרשפאַרט אַמאָל.
+דער בלאקירונג לאג איז צוגעשטעלט אונטן:',
+'blocklog-showsuppresslog' => '{{GENDER:$1|דער באַניצער|די באַניצערין}} איז שוין געווארן פֿאַרשפאַרט און פֿאַרבארגט אַמאָל.
+דער פֿאַרשטיקונג לאג איז צוגעשטעלט אונטן:',
'blocklogentry' => 'בלאקירט "[[$1]]" אויף אַ תקופה פון $2 $3',
'reblock-logentry' => 'גענדערט די בלאקירונג דעפיניציעס פון [[$1]] מיטן צייט אפלויף פון $2 $3',
'blocklogtext' => 'דאס איז א לאג בוך פון אלע בלאקירונגען און באפרייונגען פֿון באניצערס. איי פי אדרעסן וואס זענען בלאקירט אויטאמאטיש ווערן נישט אויסגערעכענט דא.
@@ -2025,6 +2160,7 @@ $NEWPAGE
'ipb_already_blocked' => '"$1" איז שוין בלאקירט',
'ipb-needreblock' => '== שוין בלאקירט ==
$1 איז שוין בלאקירט. צי ווילט איר טוישן די באַצייכנונגען?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|אנדער בלאקירונג|אנדערע בלאקירונגען}}',
'ipb_cant_unblock' => "פעילער: בלאק איי.די. $1 געפינט זיך נישט. ס'מעגליך שוין באפרייט געווארן.",
'ip_range_invalid' => 'אומריכטיגער IP גרייך.',
'blockme' => 'בלאקירט מיך',
@@ -2076,7 +2212,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'move-watch' => 'אויפֿפאַסן אויף דעם בלאַט',
'movepagebtn' => 'באוועגן',
'pagemovedsub' => 'באַוועגט מיט הצלחה',
-'movepage-moved' => 'דער בלאט "$1" איז אריבערגעפֿירט געווארן צו "$2".', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => 'דער בלאט "$1" איז אריבערגעפֿירט געווארן צו "$2".',
'movepage-moved-redirect' => 'ווײַטערפֿירונג געשאַפֿן.',
'movepage-moved-noredirect' => 'שאַפֿן א ווײַטערפֿירונג פֿאַרשטיקט.',
'articleexists' => 'א בלאט מיט דעם נאמען עקזיסטירט שוין, אדער די נאמען וואס איר האט אויסגעוועילט איז נישט געזעצליך.
@@ -2136,18 +2272,24 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'export-pagelinks' => 'אײַנשליסן פֿאַרבונדענע בלעטער ביז א טיף פֿון:',
# Namespace 8 related
-'allmessages' => 'סיסטעם מעלדונגען',
-'allmessagesname' => 'נאָמען',
-'allmessagesdefault' => 'גרונטלעכער טעקסט',
-'allmessagescurrent' => 'איצטיגער טעקסט',
-'allmessagestext' => 'אט דאס איז א ליסטע פון אלע סיסטעם מעלדונגען וואס זענען פאראן אין דעם {{ns:mediawiki}} נאמענטייל, וואס באדינען דעם אויפהאלט פונעם סייט.
+'allmessages' => 'סיסטעם מעלדונגען',
+'allmessagesname' => 'נאָמען',
+'allmessagesdefault' => 'גרונטלעכער טעקסט',
+'allmessagescurrent' => 'איצטיגער טעקסט',
+'allmessagestext' => 'אט דאס איז א ליסטע פון אלע סיסטעם מעלדונגען וואס זענען פאראן אין דעם {{ns:mediawiki}} נאמענטייל, וואס באדינען דעם אויפהאלט פונעם סייט.
סיסאפן קענען ענדערן די מעלדונגען דורך דרוקן אויפן נאמען פון דער מעלדונג.
ביטע באזוכט [http://www.mediawiki.org/wiki/Localisation מעדיעוויקי לאקאליזאציע] און [http://translatewiki.net בעטאוויקי] אויב איר ווילט ביישטייערן צו דער גענערישער מעדיעוויקי לאקאליזאציע.',
-'allmessagesnotsupportedDB' => 'מען קען זיך נישט באניצן מיט דעם בלאט וויבאלד די $wgUseDatabseMessages איז געווארן בטל.',
-'allmessagesfilter' => 'מעלדונג נאמען פֿילטער:',
-'allmessagesmodified' => 'ווײַזן נאר מאדיפֿיצירטע',
+'allmessagesnotsupportedDB' => 'מען קען זיך נישט באניצן מיט דעם בלאט וויבאלד די $wgUseDatabseMessages איז געווארן בטל.',
+'allmessages-filter-legend' => 'פילטער',
+'allmessages-filter' => 'פֿילטערן לויטן סטאטוס פון מעלדונג:',
+'allmessages-filter-unmodified' => 'נישט מאדיפֿיצירט',
+'allmessages-filter-all' => 'אלע',
+'allmessages-filter-modified' => 'מאדיפֿיצירט',
+'allmessages-prefix' => 'פֿילטערן לויט פרעפֿיקס',
+'allmessages-language' => 'שפראַך:',
+'allmessages-filter-submit' => 'צייגן',
# Thumbnails
'thumbnail-more' => 'פארגרעסער',
@@ -2157,6 +2299,8 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'djvu_no_xml' => "מ'קען נישט באקומען דעם XML פֿאַר דער DjVu טעקע",
'thumbnail_invalid_params' => 'אומגילטיגע קליינבילד פאראמעטערס',
'thumbnail_dest_directory' => "מ'קען נישט שאפֿן דעם ציל קארטאטעק",
+'thumbnail_image-type' => 'בילד טיפ נישט געשטיצט',
+'thumbnail_image-missing' => 'טעקע פֿעלט אייגנטלעך: $1',
# Special:Import
'import' => 'אימפארטירן בלעטער',
@@ -2218,6 +2362,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'tooltip-ca-viewsource' => 'דאס איז א פֿארשלאסענער בלאט, איר קענט נאר באַקוקן זיין מקור',
'tooltip-ca-history' => 'פריערדיגע ווערסיעס פון דעם בלאט.',
'tooltip-ca-protect' => 'באשיצט דעם בלאט',
+'tooltip-ca-unprotect' => 'אומבאַשיצן דעם בלאַט',
'tooltip-ca-delete' => 'אויסמעקן דעם בלאט',
'tooltip-ca-undelete' => 'צוריק דרייען די ענדערונגען פון דעם בלאט פארן מעקן',
'tooltip-ca-move' => 'באוועגט דעם בלאט',
@@ -2228,6 +2373,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'tooltip-search-fulltext' => 'זוכט דעם טעקסט אין די בלעטער',
'tooltip-p-logo' => 'הויפט זייט',
'tooltip-n-mainpage' => 'באַזוכט דעם הויפּט־זײַט',
+'tooltip-n-mainpage-description' => 'באַזוכן דעם הויפט בלאַט',
'tooltip-n-portal' => 'גייט אריין אין די געמיינדע צו שמועסן',
'tooltip-n-currentevents' => 'מער אינפארמאציע איבער אקטועלע געשענישען',
'tooltip-n-recentchanges' => 'ליסטע פון לעצטע ענדערונגען',
@@ -2267,6 +2413,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
# Stylesheets
'common.css' => '/* CSS געשריבן דא וועט אפילירן און באיינפלוסן אלע סקינס */',
'monobook.css' => '/* סטייל דא געלייגט וועט באיינפלוסן די בעקגראונד Monobook בלויז */',
+'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן Vector סקין */',
# Scripts
'common.js' => '/* אלע סקריפטן פון JavaScript דא געשריבן וועט לויפן פאר אלע באנוצער ווען זיי וועלן לאדירן דעם בלאט */',
@@ -2274,10 +2421,12 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
# Attribution
'anonymous' => '{{PLURAL:$1|אַנאנימער באַניצער| אַנאנימע באַניצערס}} פֿון {{SITENAME}}',
'siteuser' => 'באַניצער {{SITENAME}} $1',
-'lastmodifiedatby' => 'די לעצטע ענדערונג פֿון דעם בלאַט איז געווען $2, $1 דורך $3.', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}} אַנאנימער באַניצער $1',
+'lastmodifiedatby' => 'די לעצטע ענדערונג פֿון דעם בלאַט איז געווען $2, $1 דורך $3.',
'othercontribs' => 'באזירט אויף ארבעט פון $1.',
'others' => 'אנדערע',
'siteusers' => '{{PLURAL:$2|באַניצער| באַניצערס}} {{SITENAME}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2| אַנאנימער באַניצער|אַנאנימע באַניצער}} $1',
'creditspage' => 'בלאט קרעדיטס',
# Spam protection
@@ -2289,11 +2438,16 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'infosubtitle' => 'אינפארמאציע וועגן בלאט',
'numedits' => 'צאל פון רעדאקציעס (בלאט): $1',
+# Math errors
+'math_unknown_error' => 'אומבאַקאַנטער פֿעלער',
+'math_unknown_function' => 'אומבאַקאַנטע פֿונקציע',
+'math_syntax_error' => 'סינטאקס גרייז',
+
# Patrolling
'markaspatrolleddiff' => 'באצייכנען אלס פאטראלירט',
'markaspatrolledtext' => 'באצייכנען בלאט אלס פאטראלירט',
'markedaspatrolled' => 'באצייכנט אלס פאטראלירט',
-'markedaspatrolledtext' => 'די אויסגעקליבענע ענדערונג איז געצייכנט געווארן אלס פאַטארלירט.',
+'markedaspatrolledtext' => 'די אויסגעקליבענע ענדערונג פֿון [[:$1]] איז געצייכנט געווארן אלס פאַטארלירט.',
'rcpatroldisabled' => 'פאַטראלירן ענדערונגען איז מבוטל געווארן',
'rcpatroldisabledtext' => 'די לעצטע ענדערונגען פאַטראלירן אייגנקייט איז אצינד בטל.',
'markedaspatrollederror' => 'נישט מעגלעך צו צייכענען אלס פאַטראלירט',
@@ -2327,6 +2481,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'svg-long-desc' => '(טעקע SVG, נאמינעל: $1 × $2 פיקסעלן, טעקע גרייס: $3)',
'show-big-image' => 'בילד מיט דער גרעסטער רעזאלוציע',
'show-big-image-thumb' => '<small>גרייס פון דער ווײַזונג: $1 × $2 פיקסעלן</small>',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ראם|ראמען}}',
# Special:NewFiles
'newimages' => 'גאַלעריע פֿון נײַע בילדער',
@@ -2363,7 +2518,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => 'ברייט',
@@ -2443,7 +2598,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'exif-unknowndate' => 'אומבאַוואוסטע דאַטע',
-'exif-orientation-1' => 'נארמאַל', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'נארמאַל',
'exif-componentsconfiguration-0' => "ס'עקזיסטירט נישט.",
@@ -2505,7 +2660,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'exif-gpslongitude-e' => 'מזרח לענג',
'exif-gpslongitude-w' => 'מערב לענג',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'ק"מ אין א שעה',
'exif-gpsspeed-m' => 'מייל פער שעה',
'exif-gpsspeed-n' => 'ים מײַלן א שעה',
@@ -2524,6 +2679,7 @@ $1 איז שוין בלאקירט. צי ווילט איר טוישן די באַ
'watchlistall2' => 'אַלע',
'namespacesall' => 'אַלע',
'monthsall' => 'אלע',
+'limitall' => 'אַלע',
# E-mail address confirmation
'confirmemail' => 'באַשטעטיקט בליצפּאָסט אַדרעס',
@@ -2654,11 +2810,11 @@ $5
'duplicate-defaultsort' => '\'\'\'ווארענונג:\'\'\' גרונט סארטשליסל "$2" פֿאָרט איבערן פֿריערדיגן גרונט סארטשליסל "$1".',
# Special:Version
-'version' => 'ווערסיע', # Not used as normal message but as header for the special page itself
+'version' => 'ווערסיע',
'version-specialpages' => 'ספעציעלע בלעטער',
'version-variables' => 'וואַריאַבלען',
'version-other' => 'אנדער',
-'version-version' => 'ווערסיע',
+'version-version' => '(ווערסיע $1)',
'version-software-product' => 'פראדוקט',
'version-software-version' => 'ווערסיע',
@@ -2705,4 +2861,10 @@ $5
'dberr-problems' => 'אנטשולדיגט! דער דאזיקער סייט האט טעכנישע פראבלעמען.',
'dberr-again' => 'וואַרט א פאָר מינוט און לאָדנט אָן ווידער.',
+# HTML forms
+'htmlform-float-invalid' => 'דער ווערט וואָס איר האט ספעציפֿירט איז נישט קיין צאל.',
+'htmlform-submit' => 'איינגעבן',
+'htmlform-reset' => 'צוריקשטעלן ענדערונגען',
+'htmlform-selectorother-other' => 'אנדער',
+
);
diff --git a/languages/messages/MessagesYo.php b/languages/messages/MessagesYo.php
index b9484f9e..f146c276 100644
--- a/languages/messages/MessagesYo.php
+++ b/languages/messages/MessagesYo.php
@@ -19,8 +19,8 @@ $namespaceNames = array(
NS_USER => 'Oníṣe',
NS_USER_TALK => 'Ọ̀rọ̀_oníṣe',
NS_PROJECT_TALK => 'Ọ̀rọ̀_$1',
- NS_FILE => 'Àwòrán',
- NS_FILE_TALK => 'Ọ̀rọ̀_àwòrán',
+ NS_FILE => 'Fáìlì',
+ NS_FILE_TALK => 'Ọ̀rọ̀_fáìlì',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Ọ̀rọ̀_mediaWiki',
NS_TEMPLATE => 'Àdàkọ',
@@ -31,6 +31,11 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Ọ̀rọ̀_ẹ̀ka',
);
+$namespaceAliases = array(
+ 'Àwòrán' => NS_FILE,
+ 'Ọ̀rọ̀_àwòrán' => NS_FILE_TALK,
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Fàlàsí àwọn ijápọ̀:',
@@ -61,6 +66,7 @@ $messages = array(
'tog-enotifminoredits' => 'Fi e-mail ránṣẹ́ sími bákannà fún àtúnṣe kékékèé sí ojúewé',
'tog-enotifrevealaddr' => "Ṣ'àfihàn àdírẹ́ẹ̀sì e-mail mi nínú àwọn ìránṣẹ́ e-mail",
'tog-shownumberswatching' => "S'àfihàn iye àwọn oníṣe tí wọn tẹjú mọ́ọ",
+'tog-oldsig' => 'Ìgbéwò ìtọwọ́bọ̀wé tó wà:',
'tog-fancysig' => 'Ṣe ìtọwọ́bọ̀wé bíi ìkọ wiki (láìní ìjápọ̀ fúnrararẹ̀)',
'tog-forceeditsummary' => 'Kìlọ̀ fún mi tí àkótán àtúnṣe bá jẹ́ òfo',
'tog-watchlisthideown' => 'Ìbòmọ́lẹ̀ àwọn àtúnṣe mi nínú ìmójútó',
@@ -75,6 +81,10 @@ $messages = array(
'underline-always' => 'Nígbà gbogbo',
'underline-never' => 'Rárá',
+# Font style option in Special:Preferences
+'editfont-sansserif' => 'Fọnti san-sẹrif',
+'editfont-serif' => 'Fọnti sẹrif',
+
# Dates
'sunday' => 'Ọjọ́àìkú',
'monday' => 'Ọjọ́ajé',
@@ -134,7 +144,7 @@ $messages = array(
'category-media-header' => 'Amóunmáwòrán nínú ẹ̀ka "$1"',
'category-empty' => "''Lọ́wọ́lọ́wọ́ ẹ̀ka yìí kò ní ojúewé tàbí amóhùnmáwòrán kankan.''",
'hidden-categories' => '{{PLURAL:$1|Ẹ̀ka bíbòmọ́lẹ̀|Áwọn ẹ̀ka bíbòmọ́lẹ̀}}',
-'hidden-category-category' => 'Àwọn ẹ̀ka ìbòmọ́lẹ̀', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Àwọn ẹ̀ka ìbòmọ́lẹ̀',
'category-subcat-count' => '{{PLURAL:$2|Ẹ̀ka yìí ní ẹ̀kà abẹ́ ìsàlẹ̀ yìí nìkan|Ẹ̀ka yìí ní {{PLURAL:$1|ẹ̀kà abẹ́ ìsàlẹ̀ yìí|àwọn ẹ̀kà abẹ́ $1 ìsàlẹ̀ wọ̀nyí}}, nínú àpapọ̀ $2.}}',
'category-subcat-count-limited' => 'Ẹ̀ka yìí ní {{PLURAL:$1|ẹ̀kà abẹ́ yìí|àwọn ẹ̀kà abẹ́ $1 wọ̀nyí}}.',
'category-article-count' => '{{PLURAL:$2|Ẹ̀ka yìí ní ojúewé kan péré.|{{PLURAL:$1|Ojúewé kan yìí nìkan|Àwọn ojúewé $1 yìí}} lówà nínú èka yìí, nínú àpapọ̀ $2.}}',
@@ -142,6 +152,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Ẹ̀ka yìí ní fáìlì ìsàlẹ̀ yìí nìkan. |{{PLURAL:$1|Fáìlì ìsàlẹ̀ yìí|Àwọn fáìlì $1 ìsàlẹ̀ yìí ni wọ́n}} wà nínú ẹ̀ka yìí, nínú àpapọ̀ iye $2.}}',
'category-file-count-limited' => '{{PLURAL:$1|Fáìlì yìí|Àwọn fáìlì $1 yìí}} wà nìnú ẹ̀ka yìí.',
'listingcontinuesabbrev' => 'tẹ̀síwájú',
+'index-category' => 'Àwọn ojúewé títọ́kasí',
+'noindex-category' => 'Àwọn ojúewé àìjẹ́ títọ́kasí',
'mainpagedocfooter' => "Ẹ ṣàbẹ̀wò sí [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] fún ìfitólétí nípa líló atòlànà wíkì.
@@ -150,25 +162,51 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-'about' => 'Nípa',
-'article' => 'Ojúewé àkóónú',
-'newwindow' => '(yíò sí nínú fèrèsè tuntun)',
-'cancel' => 'Fagilé',
+'about' => 'Nípa',
+'article' => 'Ojúewé àkóónú',
+'newwindow' => '(yíò sí nínú fèrèsè tuntun)',
+'cancel' => 'Fagilé',
+'moredotdotdot' => 'Ẹ̀kúnrẹ́rẹ́...',
+'mypage' => 'Ojúewé mi',
+'mytalk' => 'Ọ̀rọ̀ mi',
+'anontalk' => 'Ọ̀rọ̀ fún IP yí',
+'navigation' => 'Atọ́ka',
+'and' => '&#32;àti',
+
+# Cologne Blue skin
'qbfind' => 'Wíwárí',
'qbbrowse' => 'Ìṣíwò',
'qbedit' => 'Àtúnṣe',
'qbpageoptions' => 'Ojúewé yi',
'qbmyoptions' => 'Àwọn ojúewé mi',
'qbspecialpages' => 'Àwọn ojúewé pàtàkì',
-'moredotdotdot' => 'Ẹ̀kúnrẹ́rẹ́...',
-'mypage' => 'Ojúewé mi',
-'mytalk' => 'Ọ̀rọ̀ mi',
-'anontalk' => 'Ọ̀rọ̀ fún IP yí',
-'navigation' => 'Atọ́ka',
-'and' => '&#32;àti',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Àfikún orí-ọ̀rọ̀',
+'vector-action-delete' => 'Ìparẹ́',
+'vector-action-move' => 'Yípò',
+'vector-action-protect' => 'Àbò',
+'vector-action-unprotect' => 'Ìjáwọ́ àbò',
+'vector-namespace-category' => 'Ẹ̀ka',
+'vector-namespace-help' => 'Ojúewé ìrànwọ́',
+'vector-namespace-image' => 'Fáìlì',
+'vector-namespace-main' => 'Ojúewé',
+'vector-namespace-media' => 'Ojúewé amóhùnmáwòrán',
+'vector-namespace-mediawiki' => 'Ìránṣẹ́',
+'vector-namespace-project' => 'Ojúewé iṣẹ́-ọwọ́',
+'vector-namespace-special' => 'Ojúewé pàtàkì',
+'vector-namespace-talk' => 'Ìfọ̀rọ̀wérọ̀',
+'vector-namespace-template' => 'Àdàkọ',
+'vector-namespace-user' => 'Ojúewé oníṣe',
+'vector-view-create' => "Ṣ'èdá",
+'vector-view-edit' => 'Àtúnṣe',
+'vector-view-history' => 'Wo ìtàn',
+'vector-view-view' => 'Kíkà',
+'vector-view-viewsource' => 'Wo àmìọ̀rọ̀',
+'actions' => 'Àwọn ìgbéṣe',
+'namespaces' => 'Àwọn orúkọàyè',
'errorpagetitle' => 'Àsìṣe',
'returnto' => 'Padà sí $1.',
@@ -219,7 +257,7 @@ $messages = array(
'otherlanguages' => 'Àwọn èdè míràn',
'redirectedfrom' => '(Àtúnjúwe láti $1)',
'redirectpagesub' => 'Ojúewé àtúnjúwe',
-'lastmodifiedat' => 'Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ago $2, ọjọ́ọdún $1.', # $1 date, $2 time
+'lastmodifiedat' => 'Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ago $2, ọjọ́ọdún $1.',
'viewcount' => 'A ti wo ojúewé yi ni {{PLURAL:$1|ẹ̀kan péré|iye ìgbà $1}}.',
'protectedpage' => 'Ojúewé ajẹ́dídáàbòbò',
'jumpto' => 'Lọ sí:',
@@ -230,7 +268,6 @@ $messages = array(
'aboutsite' => 'Nípa {{SITENAME}}',
'aboutpage' => 'Project:Nípa',
'copyright' => 'Gbogbo ohun inú ibí yìí wà lábẹ́ $1.',
-'copyrightpagename' => '{{SITENAME}} ẹ̀tọ́àwòkọ',
'copyrightpage' => '{{ns:project}}:Ẹ̀tọ́àwòko',
'currentevents' => 'Ìṣẹ̀lẹ̀ lọ́wọ́lọ́wọ́',
'currentevents-url' => 'Project:Ìṣẹ̀lẹ̀ lọ́wọ́lọ́wọ́',
@@ -238,8 +275,6 @@ $messages = array(
'disclaimerpage' => 'Project:Ìkìlọ̀ gbogbo',
'edithelp' => 'Ìrànlọ́wọ́ fún àtúnṣe',
'edithelppage' => 'Help:Àtúnṣe',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:Àwon àkóónú',
'mainpage' => 'Ojúewé Àkọ́kọ́',
'mainpage-description' => 'Ojúewé Àkọ́kọ́',
@@ -307,10 +342,6 @@ $messages = array(
# General errors
'error' => 'Àsìṣe',
'databaseerror' => 'Àsìṣe ibùdó dátà',
-'noconnect' => 'Àforíjì! Wiki yìí nkojú ìṣòro iṣẹ́-ẹ̀rọ nítorí bẹ́ẹ̀ kò le è ránṣẹ́ sí ẹ̀rọ-ìpèsè fún ibùdó ìpèsè.<br />
-$1',
-'nodb' => 'Kò ṣe é ṣe láti yàn ibùdó ìpèsè $1',
-'cachederror' => 'Èyí ni àwòkọ láti cache fún ojúewé tí ẹ tọrọ, ó ṣe é ṣe kó ti yàtọ̀ níìsinyìí.',
'laggedslavemode' => "'''Ìkìlọ̀:''' Ojúewé náà le mọ́ nìí àwọn àtúnṣe tuntun.",
'readonly' => 'Títìpa ibùdó dátà',
'enterlockreason' => 'Ẹ ṣàlàyé ìtìpa náà, àti ìgbàtí ẹ rò pé ìtìpa náà yíò kúrò.',
@@ -324,6 +355,7 @@ Tí kì bá ṣe bẹ́ẹ̀, ó lè jẹ́ pé ẹ ti rí àsìṣe nínú atò
'missingarticle-diff' => '(Ìyàtọ̀: $1, $2)',
'internalerror' => 'Àsìṣe inú',
'internalerror_info' => 'Àsìṣe inú: $1',
+'fileappenderror' => 'Kò le so "$1" pọ̀ mọ́ "$2".',
'filecopyerror' => 'Àwòkọ faili "$1" sí "$2" kò ṣe é ṣe.',
'filerenameerror' => 'Àtúnsọlórúkọ fáìlì "$1" sí "$2" kò ṣe é ṣe.',
'filedeleteerror' => 'Ìparẹ́ fáìlì "$1" kò ṣe é ṣe.',
@@ -333,6 +365,8 @@ Tí kì bá ṣe bẹ́ẹ̀, ó lè jẹ́ pé ẹ ti rí àsìṣe nínú atò
'unexpected' => 'Iye àìretí: "$1"="$2".',
'formerror' => 'Àsìṣe: fọ́ọ̀mù kò ṣe fi ránṣẹ́',
'badarticleerror' => 'Ìgbéṣẹ̀ yìí kò ṣe é ṣe lórí ojúewé yìí.',
+'cannotdelete' => 'Ojúewé tàbí fáìlì "$1" kò ṣe é parẹ́.
+Oníṣe mìíràn le ti paárẹ́.',
'badtitle' => 'Àkọ́lé burúkú',
'badtitletext' => 'Àkọlé ojúewé tí ẹ bèrè fún kò ní ìbáramu, jẹ́ òfo, tàbí áṣìṣe wà nínú ìjápọ̀ àkọlé láàrin èdè tàbí láàrin wiki.
Ó ṣe é ṣe kó jẹ́pé ó ní ìkan tàbí ọ̀pọ̀ àmi-lẹ́tà tí kò ṣe é lò nínú àkọlé.',
@@ -362,100 +396,83 @@ Tí kì bá ṣe bẹ́ẹ̀, ó lè jẹ́ pé ẹ ti rí àsìṣe nínú atò
'virus-unknownscanner' => 'ògùn-kòkòrò àìmọ̀:',
# Login and logout pages
-'logouttitle' => 'Ibọsóde oníṣe',
-'logouttext' => "'''Ẹ ti bọ́sọ́de.'''
+'logouttext' => "'''Ẹ ti bọ́sọ́de.'''
Ẹ le tẹ̀síwájú sí ní lo {{SITENAME}} láìmorúkọ yín, tàbí kí ẹ [[Special:UserLogin|padà wọlé]] bí ẹnikanan tàbí ẹlòmíràn.
Àkíyèsí wípé àwọn ojúewé kan le hàn b'ígbà tójẹ́pé ẹ sì wọlé títí tí ẹ ó fi jọ̀wọ́ cache browser yín.",
-'welcomecreation' => "== Ẹ kú àbọ̀, $1! ==
+'welcomecreation' => "== Ẹ kú àbọ̀, $1! ==
A ti ṣ'èdá àpamọ́ yín.
Ẹ mọ́ gbàgbé l'áti ṣ'àtúnṣe àwọn [[Special:Preferences|{{SITENAME}} ìfẹ́ràn]] yín.",
-'loginpagetitle' => 'Ìwọlé oníṣe',
-'yourname' => 'Orúkọ oníṣe (username):',
-'yourpassword' => 'Ọ̀rọ̀ìpamọ́:',
-'yourpasswordagain' => 'Kọ ọ̀rọ̀ìpamọ́ lẹ́ẹ̀kansí:',
-'remembermypassword' => "Sè'rántí ọ̀rọ̀ìpamí mi lórí kọmputa yi (cookies)",
-'yourdomainname' => 'Domain yín:',
-'login' => 'Ìwọlé',
-'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
-'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
-'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
-'logout' => 'Ìbọ́sóde',
-'userlogout' => 'Ìbọ́sóde',
-'notloggedin' => "Ẹ kò tí w'ọlé",
-'nologin' => "Ṣé ẹ fẹ́ wọlé? '''$1'''.",
-'nologinlink' => 'Ìforúkọsílẹ̀',
-'createaccount' => 'Ẹ fi orúkọ sílẹ̀',
-'gotaccount' => "Ṣé ẹ ti ní àpamọ́ tẹ́lẹ̀? '''$1'''.",
-'gotaccountlink' => "Ẹ w'ọlé",
-'createaccountmail' => 'pẹ̀lú e-mail',
-'badretype' => 'Àwọn ọ̀rọ̀ìpamọ́ tí ẹ kọ kò jọ ra wọn.',
-'userexists' => 'Orúkọ oníṣe tí ẹ mú jẹ́ ti ẹlòmíràn.
+'yourname' => 'Orúkọ oníṣe (username):',
+'yourpassword' => 'Ọ̀rọ̀ìpamọ́:',
+'yourpasswordagain' => 'Kọ ọ̀rọ̀ìpamọ́ lẹ́ẹ̀kansí:',
+'remembermypassword' => "Sè'rántí ọ̀rọ̀ìpamí mi lórí kọmputa yi (cookies)",
+'yourdomainname' => 'Domain yín:',
+'login' => 'Ìwọlé',
+'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
+'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
+'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
+'userloginnocreate' => 'Ìwọlé',
+'logout' => 'Ìbọ́sóde',
+'userlogout' => 'Ìbọ́sóde',
+'notloggedin' => "Ẹ kò tí w'ọlé",
+'nologin' => "Ṣé ẹ fẹ́ wọlé? '''$1'''.",
+'nologinlink' => 'Ìforúkọsílẹ̀',
+'createaccount' => 'Ẹ fi orúkọ sílẹ̀',
+'gotaccount' => "Ṣé ẹ ti ní àpamọ́ tẹ́lẹ̀? '''$1'''.",
+'gotaccountlink' => "Ẹ w'ọlé",
+'createaccountmail' => 'pẹ̀lú e-mail',
+'badretype' => 'Àwọn ọ̀rọ̀ìpamọ́ tí ẹ kọ kò jọ ra wọn.',
+'userexists' => 'Orúkọ oníṣe tí ẹ mú jẹ́ ti ẹlòmíràn.
Ẹjọ̀wọ́ ẹ yan orúkọ mìíràn tó yàtọ̀.',
-'youremail' => 'E-mail:',
-'username' => 'Orúkọ oníṣe:',
-'uid' => 'Nọmba ìdámọ̀ fún oníṣe:',
-'prefs-memberingroups' => 'Ọ̀kan nínú {{PLURAL:$1|ẹgbẹ́|àwọn ẹgbẹ́}}:',
-'yourrealname' => 'Orúkọ ganangan:',
-'yourlanguage' => 'Èdè:',
-'yournick' => 'Ìtọwọ́bọ̀:',
-'badsiglength' => 'Ìtọwọ́bọ̀ yín ti gùnjù.
-Kò gbodọ̀ ju $1 {{PLURAL:$1|àmìlẹ́tà|àwọn àmìlẹ́tà}} lọ.',
-'yourgender' => 'Akọmbábo:',
-'gender-unknown' => 'Àláìtọ́kasí',
-'gender-male' => 'Akọ',
-'gender-female' => 'Abo',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Orúkọ gangan kò pọndandan.
-Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
-'loginerror' => 'Àsìṣe ìwọlé',
-'prefs-help-email' => 'Àdírẹ́ẹ̀sì e-mail yín kò ṣe dandan, ṣùgbọ́n yíò jẹ́ kí á le fi ọ̀rọ̀ìpamọ́ tuntun ránṣẹ́ sí yín tí ẹ bá gbàgbé ọ̀rọ̀ìpamọ́.
-Bákannáà ẹ le è yàn láti jẹ́ kí àwọn ẹlòmíràn kó báyiín sọ̀rọ̀ láti ojúewé oníṣe tàbí ojúewé ọ̀rọ̀ yín láìfi taani yín hàn.',
-'prefs-help-email-required' => 'E-mail ṣe dandan.',
-'nocookiesnew' => 'A ti dá àpamọ́ oníṣe, ṣugbọ́n ẹ kò tíì wọlé.
+'loginerror' => 'Àsìṣe ìwọlé',
+'createaccounterror' => 'Kò le dá àkópamọ́: $1',
+'nocookiesnew' => 'A ti dá àpamọ́ oníṣe, ṣugbọ́n ẹ kò tíì wọlé.
{{SITENAME}} ún lo cookies láti gba àwọn oníṣe wọlé.
Ẹ ti dínà sí cookies.
Ẹjọ̀wọ́ ẹ fún cookies láàyè kí ẹ tó wọlé pẹ̀lú orúkọ oníṣe àti ọ̀rọ̀ìpamọ́ tuntun yín.',
-'nocookieslogin' => '{{SITENAME}} ún lo cookies láti gba àwọn oníṣe wọlé.
+'nocookieslogin' => '{{SITENAME}} ún lo cookies láti gba àwọn oníṣe wọlé.
Ẹ ti dínà sí cookies.
Ẹjọ̀wọ́ ẹ fún cookies láàyè kí ẹ tún tó gbìyànjú láti wọlé.',
-'noname' => 'Ẹ kò tọ́kasí orúkọ oníṣe tó ní ìbámu.',
-'loginsuccesstitle' => 'Ìwọlé ti yọrí sí rere',
-'loginsuccess' => "'''Ẹ ti wọlé sínú {{SITENAME}} gẹ́gẹ́ bi \"\$1\".'''",
-'nosuchuser' => 'Kò sí oníṣe kankan pẹ̀lú orúkọ "$1".
+'noname' => 'Ẹ kò tọ́kasí orúkọ oníṣe tó ní ìbámu.',
+'loginsuccesstitle' => 'Ìwọlé ti yọrí sí rere',
+'loginsuccess' => "'''Ẹ ti wọlé sínú {{SITENAME}} gẹ́gẹ́ bi \"\$1\".'''",
+'nosuchuser' => 'Kò sí oníṣe kankan pẹ̀lú orúkọ "$1".
Àwọn lẹ́tà àwọn orúkọ oníṣe gbọ́dọ̀ jẹ́ irúkanna.
Ẹ yẹ lẹ́tà yín wò, tàbí [[Special:UserLogin/signup|kí ẹ dá àkópamọ́ tuntun]].',
-'nosuchusershort' => "Kò sí oníṣe t'ón jẹ́ <nowiki>$1</nowiki>.
+'nosuchusershort' => "Kò sí oníṣe t'ón jẹ́ <nowiki>$1</nowiki>.
Ẹ yẹ lẹ́tà ọ̀rọ̀ yín wò.",
-'nouserspecified' => 'Ẹ gbọ́dọ̀ tọ́kasí orúkọ oníṣe kan.',
-'wrongpassword' => 'Ọ̀rọ̀ìpamọ́ tí ẹ kìbọlé kòtọ́.
+'nouserspecified' => 'Ẹ gbọ́dọ̀ tọ́kasí orúkọ oníṣe kan.',
+'login-userblocked' => 'Oníṣe yìí jẹ́ dídínà. Ìwọlé kò jẹ́ gbígbà láyè.',
+'wrongpassword' => 'Ọ̀rọ̀ìpamọ́ tí ẹ kìbọlé kòtọ́.
Ẹ jọ̀wọ́ ẹ gbìyànjú lẹ́ẹ̀kansí.',
-'wrongpasswordempty' => 'Ọ̀ròìpamọ́ jẹ́ òfo.
+'wrongpasswordempty' => 'Ọ̀ròìpamọ́ jẹ́ òfo.
Ẹ gbìyànjú lẹ́ ẹ̀kan síi.',
-'passwordtooshort' => 'Ọ̀rọ̀ìpamọ́ yín jẹ́ aláìtọ́ tàbí ó kúrú ju bóṣe yẹ lọ.
-Kò gbọ́dọ̀ dín ju {{PLURAL:$1|àmìlẹ́tà kan|àmìlẹ́tà $1}} lọ, kí ó sì yàtọ̀ sí orúkọ oníṣe yín.',
-'mailmypassword' => 'Ìfiránṣẹ́ ọ̀rọ̀ìpamọ́ tuntun',
-'passwordremindertitle' => 'Ọ̀rọ̀ìpamọ́ tuntun fún ìgbà díẹ̀ fún {{SITENAME}}',
-'passwordremindertext' => 'Ẹnìkan (ó ṣe é ṣe kó jẹ́ ẹ̀yin gan, láti àdírẹ́ẹ̀sì IP $1) bèrè fún
+'passwordtooshort' => 'Ọ̀rọ̀ìpamọ́ kò gbọ́dọ̀ dín ju {{PLURAL:$1|àmìlẹ́tà kan|àmìlẹ́tà $1}} lọ.',
+'password-name-match' => 'Ọ̀rọ̀ìpamọ́ yín gbọ́dọ̀ yàtọ̀ sí orúkọ oníṣe yín.',
+'mailmypassword' => 'Ìfiránṣẹ́ ọ̀rọ̀ìpamọ́ tuntun',
+'passwordremindertitle' => 'Ọ̀rọ̀ìpamọ́ tuntun fún ìgbà díẹ̀ fún {{SITENAME}}',
+'passwordremindertext' => 'Ẹnìkan (ó ṣe é ṣe kó jẹ́ ẹ̀yin gan, láti àdírẹ́ẹ̀sì IP $1) bèrè fún
ọ̀rọ̀ìpamọ́ tuntun fùn {{SITENAME}} ($4). A ti ṣ\'èdá ọ̀rọ̀ìpamọ́ ìgbádíẹ̀ fún
oníṣe "$2" bẹ́ ẹ̀ sì ni a ti ṣ\'ètò rẹ̀ sí "$3". Tó bá jẹ́ pé èrò yín nuhun, ẹ gbúdọ̀ wọlé
kí ẹ yan ọ̀rọ̀ìpamọ́ tuntun ní ìsinsìnyí. Ọ̀rọ̀ìpamọ́ ìgbàdíẹ̀ yín yíò parí lẹ́yìn ọjọ́ {{PLURAL:$5|kan|$5}}.
Tó bá jẹ́ pé ẹlòmíràn ni ò ṣe ìtọrọ yìí, tábí pé ẹ ti rántí ọ̀rọ̀ìpamọ́ yín,
tí ẹ kò sì fẹ́ yípadà mọ́, ẹ mọ́ kọbiara sí ìránṣẹ́ yìí.',
-'noemail' => 'Kò sí àkọsílẹ̀ àdírẹ́ẹ̀sì e-mail fún oníṣe "$1".',
-'passwordsent' => 'A ti fi ọ̀rọ̀ìpamọ́ tuntun ránṣẹ́ sí ojúọ̀nà e-mail tí a fisílẹ̀ fún "$1".
+'noemail' => 'Kò sí àkọsílẹ̀ àdírẹ́ẹ̀sì e-mail fún oníṣe "$1".',
+'noemailcreate' => 'Ẹ gbọ́dọ̀ pèsè àdírẹ́ẹ̀sì e-mail títọ́',
+'passwordsent' => 'A ti fi ọ̀rọ̀ìpamọ́ tuntun ránṣẹ́ sí ojúọ̀nà e-mail tí a fisílẹ̀ fún "$1".
Ẹ jọ̀wọ́ ẹ padà wọlé tí ẹ bá ti gbàá.',
-'eauthentsent' => 'A ti fi e-mail ìmúdájú ránṣẹ́ sí àdírẹ́ẹ̀sì e-mail tí ẹ fi sílẹ̀.
+'eauthentsent' => 'A ti fi e-mail ìmúdájú ránṣẹ́ sí àdírẹ́ẹ̀sì e-mail tí ẹ fi sílẹ̀.
Kí á tó fi e-mail mìíràn ránṣẹ́ sí àkópamọ́ yìí, ẹ gbọ́dọ̀ tẹ̀lé àwọn ìlànà inú e-mail ọ̀ún, láti múdájú pé àkópamọ́ ọ̀ún jẹ́ ti yín lóòótọ́.',
-'mailerror' => 'Àsìṣe ìfiránṣẹ́: $1',
-'emailauthenticated' => 'Àdírẹ́ẹ̀sì e-mail yín ti fidájú ní ago $3 ọjọ́ $2.',
-'emailconfirmlink' => 'Ìmúdájú àdírẹ́ẹ̀sì e-mail yín',
-'accountcreated' => 'Ẹ ti fi orúkọ sílẹ̀',
-'accountcreatedtext' => "A ti ṣ'èdá àkópamọ́ oniṣe fún $1.",
-'createaccount-title' => 'Ìforúkọ sílẹ̀ fún {{SITENAME}}',
-'loginlanguagelabel' => 'Èdè: $1',
+'mailerror' => 'Àsìṣe ìfiránṣẹ́: $1',
+'emailauthenticated' => 'Àdírẹ́ẹ̀sì e-mail yín ti fidájú ní ago $3 ọjọ́ $2.',
+'emailconfirmlink' => 'Ìmúdájú àdírẹ́ẹ̀sì e-mail yín',
+'accountcreated' => 'Ẹ ti fi orúkọ sílẹ̀',
+'accountcreatedtext' => "A ti ṣ'èdá àkópamọ́ oniṣe fún $1.",
+'createaccount-title' => 'Ìforúkọ sílẹ̀ fún {{SITENAME}}',
+'loginlanguagelabel' => 'Èdè: $1',
# Password reset dialog
'resetpass' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
@@ -468,6 +485,7 @@ Kí á tó fi e-mail mìíràn ránṣẹ́ sí àkópamọ́ yìí, ẹ gbọ́
'resetpass_forbidden' => 'Àwọn ọ̀rọ̀ìpamọ́ kò ṣe é yípadà',
'resetpass-no-info' => 'Ẹ gbọ́dọ̀ wọlẹ́ láti le lọ sí ojúewé yìí tààrà.',
'resetpass-submit-loggedin' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
+'resetpass-submit-cancel' => 'Fagilé',
'resetpass-temp-password' => 'Ọ̀rọ̀ìpamọ́ fún ìgbà díẹ̀',
# Edit page toolbar
@@ -528,7 +546,6 @@ Ojúọ̀nà IP yín lọ́wọ́lọ́wọ́ ni $3, bẹ́ ẹ̀ sì ni ID fún
'blockededitsource' => "Ìkọ̀wé fún '''àwọn atúnṣe yín''' sí '''$1''' hàn nísàlẹ̀ yìí:",
'whitelistedittitle' => "Ìwọlé ṣe dandan láti ṣ'àtúnṣe",
'whitelistedittext' => "Ẹ gbọ́dọ̀ $1 láti ṣ'àtúnṣe àwọn ojúewé.",
-'confirmedittitle' => "Ìmúdájú e-mail ṣe dandan láti ṣ'àtúnṣe",
'confirmedittext' => "Ẹ gbọ́dọ̀ ṣe ìmúdájú àdírẹ́ẹ̀sì e-mail yín kí ẹ tó le è mọ ṣ'àtúnṣe àwọn ojúewé.
Ẹjọ̀wọ́ ẹ ṣètò bẹ́ sìni ki ẹ fọwọ́sí àdírẹ́ẹ̀sì e-mail nínú [[Special:Preferences|àwọn ìfẹ́ràn ọníṣe]] yín.",
'nosuchsectiontitle' => 'Kò le rí abala báun',
@@ -550,7 +567,11 @@ T'óbá sepé àsìse ló gbé yin dé bi, ẹ kọn bọ́tìnì ìpadàsẹ́y
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wá àkọọ́lẹ̀ rẹ̀], tàbí [{{fullurl:{{FULLPAGENAME}}|action=edit}} kí ẹ ṣ\'àtúnṣe ojúewé òún]</span>.',
'userpage-userdoesnotexist' => 'Àkópamọ́ oníṣe "$1" kò tíì jẹ́ fíforúkọsílẹ̀.
Ẹjọ̀wọ́ ẹ ṣ\'àgbéyẹ̀wò bóyá ẹ fẹ́ dá/ṣàtúnṣe ojúewé yìí.',
-'usercssjsyoucanpreview' => "<strong>Ìmọ̀ràn:</strong> Ẹ lo bọ́tìnì 'Àyẹ̀wò' láti ṣe ìdánwò CSS/JS tuntun yín kí ẹ tó múupamọ́.",
+'userpage-userdoesnotexist-view' => 'Àpamọ́ oníṣe "$1" kò jẹ́ fífilórúkọsílẹ̀.',
+'blocked-notice-logextract' => 'Lọ́wọ́lọ́wọ́ oníṣe yìí jẹ́ dídílọ́nà.
+Àkọsílẹ̀ ìdínà àìpẹ́ nìyí nísàlẹ̀ fún ìtọ́kasí:',
+'usercssyoucanpreview' => "'''Ìrànlọ́wọ́:''' Ẹ lo bọ́tìnì \"{{int:showpreview}}\" fún dídánwò CSS tuntun yín kí ẹ tó múupamọ́.",
+'userjsyoucanpreview' => "'''Ìrànlọ́wọ́:''' Ẹ lo bọ́tìnì \"{{int:showpreview}}\" fún dídánwò JavaScript tuntun yín kí ẹ tó múupamọ́.",
'usercsspreview' => "''''Ẹ mọ́ gbàgbé pé àkọ́yẹ̀wò CSS oníṣe yín nìyí.'''
'''Kò tíì jẹ́ mímúpamọ́!'''",
'updated' => '(Sísọdọ̀tun)',
@@ -576,9 +597,13 @@ Bákannà ẹ tún ṣèlérí fún wa wípé ẹ̀yin lẹkọ́ fúnra arayín
Ẹ jọ̀wọ́ ẹ rò ó wò bóyá ẹ lè fọ́ ojúewé ọ̀ún sí abala kéékèké.'''",
'longpageerror' => "'''Àsìṣe: Ìkọ̀wé tí ẹ fisílẹ̀ gùn tó $1 Kilobytes, èyí gùn ju $2 kilobytes lọ tó jẹ́ àjà.'''
Kò ṣe é múpamọ́.",
-'templatesused' => 'Àwọn àdàkọ tí a lò lórí ojúewé yìí:',
-'templatesusedpreview' => 'Àwọn àdàkọ tí a lò nìnú àgbéyẹ́wò yìí:',
-'templatesusedsection' => 'Àwọn àdàkọ lílò nínú abala yìí:',
+'protectedpagewarning' => "'''Ìkìlọ̀: Ojúewé yìí ti jẹ́ títìpa, nítoríẹ̀ àwọn alámòjútó nìkan ni wọ́n ní ẹ̀tọ́ láti ṣàtúnṣe rẹ̀.'''
+Àkọọ́lẹ̀ àìpẹ́ nìyí nísàlẹ̀ fún ìtọ́kasí:",
+'semiprotectedpagewarning' => "'''Àkíyèsí:''' Ojúewé yìí ti jẹ́ títìpa nítoríẹ̀ àwọn oníṣe tí wọ́n ti forúkọsílẹ̀ nìkan ni wọ́n le ṣàtúnṣe rẹ̀.
+Àkọọ́lẹ̀ àìpẹ́ nìyí nísàlẹ̀ fún ìtọ́kasí.",
+'templatesused' => '{{PLURAL:$1|Àdàkọ|Àwọn àdàkọ}} tí a lò lórí ojúewé yìí:',
+'templatesusedpreview' => '{{PLURAL:$1|Àdàkọ|Àwọn àdàkọ}} tí a lò nìnú àkọ́yẹ́wò yìí:',
+'templatesusedsection' => '{{PLURAL:$1|Àdàkọ|Àwọn àdàkọ}} tí a lò nínú abala yìí:',
'template-protected' => '(aláàbò)',
'template-semiprotected' => '(aláàbò díẹ̀)',
'hiddencategories' => 'Ojúewé yìí jẹ́ ìkan nínú {{PLURAL:$1|ẹ̀ka bíbòmọ́lẹ̀ 1|àwọn ẹ̀ka bíbòmọ́lẹ̀ $1}}:',
@@ -586,16 +611,17 @@ Kò ṣe é múpamọ́.",
'nocreatetext' => "{{SITENAME}} ti pààlà ààyè láti ṣ'èdá ojúewé tuntun.
Ẹ le padà sẹ́yìn kí ẹ ṣ'àtúnṣe ojúewé tó wà, tàbí [[Special:UserLogin|kí ẹ wọlé tàbí kí ẹ ṣ'èdá àpamọ́]].",
'nocreate-loggedin' => "Ẹ kò ní ìyọ̀nda láti ṣe'dá ojúewé tuntun.",
+'sectioneditnotsupported-title' => 'Ko sí títìlẹ́yìn àtúnṣe abala',
+'sectioneditnotsupported-text' => 'Ko sí títìlẹ́yìn àtúnṣe abala lórí ojúewé yìí.',
'permissionserrors' => 'Àṣìṣe ìyọ̀nda',
'permissionserrorstext' => 'Ẹ kò ní ìyọ̀nda láti ṣè yí nítorí {{PLURAL:$1|ìdí ìsàlẹ̀ yìí|àwọn ìdí ìsàlẹ̀ wọ̀nyí}}:',
'permissionserrorstext-withaction' => 'Ẹ kò ní ìyọ̀nda láti $2, fún {{PLURAL:$1|ìdí yìí|àwọn ìdí wọ̀nyí}}:',
-'recreate-deleted-warn' => "'''Ìkìlọ̀: Ẹ̀ ún ṣ'èdá ojúewé tí a ti parẹ́ tẹ́lẹ̀.'''
+'recreate-moveddeleted-warn' => "'''Ìkìlọ̀: Ẹ̀ ún ṣ'èdá ojúewé tí a ti parẹ́ tẹ́lẹ̀.'''
Ẹ gbọ́dọ̀ gberò bóyá ó bójúmu láti tẹ̀síwájú pẹ̀lú àtúnṣe ojúewé yìí.
-Àkọsílẹ̀ ìparẹ́ nìyí fún ìrọ̀rùn:",
-'deleted-notice' => 'A ti pa ojúewé yìí rẹ́.
-Àkọsílẹ̀ ìparẹ́ fún ojúewé náà wà nísàlẹ̀ fún ìtọ́ka.',
-'deletelog-fulllog' => 'Ìfihàn gbogbo àkọọ́lẹ̀',
+Àkọsílẹ̀ ìparẹ́ àti ìyípò fún ojúewé yìí nìyí fún ìrọ̀rùn:",
+'moveddeleted-notice' => 'Ojúewé yìí tijẹ́ píparẹ́.
+Àkọọ́lẹ̀ ìparẹ́ àti ìyípò fún ojúewé náà wà nísàlẹ̀ fún ìtákasí.',
'edit-hook-aborted' => 'Hook ti ṣe ìdádúró àtúnṣe.
Kò ṣe àlàyé kankan.',
'edit-gone-missing' => 'A kò le ṣe títúnṣe ojúewé.
@@ -623,7 +649,7 @@ Kò ṣe àlàyé kankan.',
'currentrev' => 'Àtúnyẹ̀wò ìsinsìnyí',
'currentrev-asof' => 'Àtúnyẹ̀wò lọ́wọ́lọ́wọ́ ní $1',
'revisionasof' => 'Àtúnyẹ̀wò ní $1',
-'revision-info' => "Àtúnyẹ̀wò ní $1 l'átọwọ́ $2", # Additionally available: $3: revision id
+'revision-info' => "Àtúnyẹ̀wò ní $1 l'átọwọ́ $2",
'previousrevision' => '← Àtúnyẹ̀wò tópẹ́ju',
'nextrevision' => 'Àtúnyẹ̀wò tótuntunju →',
'currentrevisionlink' => 'Àtúnyẹ̀wò ìsinsìnyí',
@@ -635,7 +661,7 @@ Kò ṣe àlàyé kankan.',
'histlegend' => "Àṣàyàn ìyàtọ̀: ẹ fagi sínú àpótí àwọn átúnyẹ̀wò tí ẹ fẹ́ ṣàfiwè, lẹ́yìn náà ẹ tẹ enter tàbí bọ́tìnì ìsàlẹ̀.<br />
Àlàyé: '''({{int:cur}})''' = ìyàtọ̀ sí àtúnyẹ̀wò tìsinyìí, '''({{int:last}})''' = ìyàtọ̀ sí àtúnyẹ̀wò tókọjá, '''{{int:minoreditletter}}''' = àtúnṣe kékeré.",
'history-fieldset-title' => 'Ìṣíwò ìwé ìtàn àtúnṣe',
-'deletedrev' => '[tiparẹ́]',
+'history-show-deleted' => 'Ajẹ́píparẹ́ níkan',
'histfirst' => 'Pípẹ́jùlọ',
'histlast' => 'Tuntunjùlọ',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -644,45 +670,49 @@ Kò ṣe àlàyé kankan.',
# Revision feed
'history-feed-title' => 'Ìtàn àtúnyẹ̀wò',
'history-feed-description' => 'Ìtàn àtúnyẹ̀wò fún ojúewé yìí ní orí wiki',
-'history-feed-item-nocomment' => '$1 ní $2', # user at time
+'history-feed-item-nocomment' => '$1 ní $2',
'history-feed-empty' => 'Ojúewé tí ẹ tọrọ fún kò sí.
Ó ṣe é ṣe kó ti jẹ́ píparẹ́ kúrò nínú wiki náà, tàbí kó ti jẹ́ títúnṣọlórùkọ.
Ẹ gbìyànjú láti [[Special:Search|wá inú wiki náà]] fún àwọn ojúewé tóbáramu.',
# Revision deletion
-'rev-deleted-comment' => '(àríwí ti jẹ́ yíyọkúrò)',
-'rev-deleted-user' => '(orúkọ oníṣe ti jẹ́ yíyọkúrò)',
-'rev-deleted-event' => '(àkọọ́lẹ̀ ti jẹ́ yíyọkúrò)',
-'rev-deleted-text-permission' => "Àtúnyẹ̀wò ojúewé yìí tí jẹ́ '''píparẹ́'''.
-Ẹ̀kúnrẹ́rẹ́ ṣe é ṣe kó wà nínú
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} àkọọ́lẹ̀ ìparẹ́].",
-'rev-deleted-text-view' => "Àtúnyẹ̀wò ojúewé yìí tí jẹ́ '''píparẹ́'''.
-Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é ṣe kó wà nínú
-[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} àkọọ́lẹ̀ ìparẹ́].",
-'rev-delundel' => 'fihàn/bòmọ́lẹ̀',
-'revisiondelete' => 'Ṣe ìparẹ́/àìparẹ́ àwọn àtúnyẹ̀wò',
-'revdelete-nooldid-title' => 'Wíwá àtúnyẹ̀wò tíkòtọ́',
-'revdelete-nologid-title' => 'Àkọọ́lẹ̀ ìṣẹ̀lẹ̀ tíkòtọ́',
-'revdelete-selected' => "'''{{PLURAL:$2|Àtúnyẹ̀wò síṣàyàn|Àwọn àtúnyẹ̀wò síṣàyàn}} fún [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Àkọọ́lẹ̀ ìṣẹ̀lẹ̀ síṣàyàn|Àwọn àkọọ́lẹ̀ ìṣẹ̀lẹ̀ síṣàyàn}}:'''",
-'revdelete-hide-text' => 'Ìbòmọ́lẹ̀ ìkọ̀ àtúnyẹ̀wò',
-'revdelete-hide-name' => 'Ìbòmọ́lẹ̀ ìgbéṣe àti wíwá',
-'revdelete-hide-comment' => 'Ìbòmọ́lẹ̀ àríwí àtúnṣe',
-'revdelete-hide-user' => 'Ìbòmọ́lẹ̀ orúkọ oníṣe/IP olóòtú',
-'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
-'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
-'revdelete-hide-image' => 'Ìbòmọ́lẹ̀ àkóónú fáìlì',
-'revdelete-log' => 'Ìdíẹ̀:',
-'revdel-restore' => 'ìyípadà ìríran',
-'pagehist' => 'Ìtàn ojúewé',
-'deletedhist' => 'Ìtàn ìparẹ́',
-'revdelete-content' => 'àkóónú',
-'revdelete-summary' => 'àkótán àtúnṣe',
-'revdelete-uname' => 'orúkọ oníṣe',
-'revdelete-hid' => 'ìbòmọ́lẹ̀ $1',
-'revdelete-unhid' => 'ìfihàn $1',
-'revdelete-log-message' => '$1 fún $2 {{PLURAL:$2|àtúnyẹ̀wò|àwọn àtúnyẹ̀wò}}',
-'logdelete-log-message' => '$1 fún $2 {{PLURAL:$2|ìṣẹ̀lẹ̀|àwọn ìṣẹ̀lẹ̀}}',
+'rev-deleted-comment' => '(àríwí ti jẹ́ yíyọkúrò)',
+'rev-deleted-user' => '(orúkọ oníṣe ti jẹ́ yíyọkúrò)',
+'rev-deleted-event' => '(àkọọ́lẹ̀ ti jẹ́ yíyọkúrò)',
+'rev-delundel' => 'fihàn/bòmọ́lẹ̀',
+'rev-showdeleted' => 'fihàn',
+'revisiondelete' => 'Ṣe ìparẹ́/àìparẹ́ àwọn àtúnyẹ̀wò',
+'revdelete-nooldid-title' => 'Wíwá àtúnyẹ̀wò tíkòtọ́',
+'revdelete-nologid-title' => 'Àkọọ́lẹ̀ ìṣẹ̀lẹ̀ tíkòtọ́',
+'revdelete-no-file' => 'Fáìlì tójẹ́ títọ́kasí kò sí.',
+'revdelete-show-file-submit' => 'Bẹ́ẹ̀ni',
+'revdelete-selected' => "'''{{PLURAL:$2|Àtúnyẹ̀wò síṣàyàn|Àwọn àtúnyẹ̀wò síṣàyàn}} fún [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Àkọọ́lẹ̀ ìṣẹ̀lẹ̀ síṣàyàn|Àwọn àkọọ́lẹ̀ ìṣẹ̀lẹ̀ síṣàyàn}}:'''",
+'revdelete-hide-text' => 'Ìbòmọ́lẹ̀ ìkọ̀ àtúnyẹ̀wò',
+'revdelete-hide-image' => 'Ìbòmọ́lẹ̀ àkóónú fáìlì',
+'revdelete-hide-name' => 'Ìbòmọ́lẹ̀ ìgbéṣe àti wíwá',
+'revdelete-hide-comment' => 'Ìbòmọ́lẹ̀ àríwí àtúnṣe',
+'revdelete-hide-user' => 'Ìbòmọ́lẹ̀ orúkọ oníṣe/IP olóòtú',
+'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
+'revdelete-radio-same' => '(láì yípadà)',
+'revdelete-radio-set' => 'Bẹ́ẹ̀ni',
+'revdelete-radio-unset' => 'Bẹ́ẹ̀kọ́',
+'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
+'revdelete-log' => 'Ìdíẹ̀:',
+'revdel-restore' => 'ìyípadà ìríran',
+'pagehist' => 'Ìtàn ojúewé',
+'deletedhist' => 'Ìtàn ìparẹ́',
+'revdelete-content' => 'àkóónú',
+'revdelete-summary' => 'àkótán àtúnṣe',
+'revdelete-uname' => 'orúkọ oníṣe',
+'revdelete-hid' => 'ìbòmọ́lẹ̀ $1',
+'revdelete-unhid' => 'ìfihàn $1',
+'revdelete-log-message' => '$1 fún $2 {{PLURAL:$2|àtúnyẹ̀wò|àwọn àtúnyẹ̀wò}}',
+'logdelete-log-message' => '$1 fún $2 {{PLURAL:$2|ìṣẹ̀lẹ̀|àwọn ìṣẹ̀lẹ̀}}',
+'revdelete-otherreason' => 'Ìdíẹ̀ míràn/àfikún',
+'revdelete-reasonotherlist' => 'Ìdí míràn',
+'revdelete-edit-reasonlist' => 'Àtúnṣe àwọn ìdí ìparẹ́',
+'revdelete-offender' => 'Olùdákọ àtúnyẹ̀wò:',
# History merging
'mergehistory' => 'Ìdàpọ̀ àwọn ìtàn ojúewé',
@@ -705,60 +735,12 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'revertmerge' => 'Ìdápadà ìdàpọ̀',
# Diffs
-'history-title' => 'Ìtàn àtúnyẹ̀wò fún "$1"',
-'difference' => '(Ìyàtọ̀ láàrin àwọn àtúnyẹ́wò)',
-'lineno' => 'Ìlà $1:',
-'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
-'visualcomparison' => 'Ìfiwéra wíwò',
-'wikicodecomparison' => 'Ìfiwéra wikitext',
-'editundo' => 'dápadà',
-'diff-movedto' => 'tiyípò sí $1',
-'diff-styleadded' => '$1 style ti jẹ́ ríròpọ̀',
-'diff-added' => '$1 ti jẹ́ ríròpọ̀',
-'diff-changedto' => 'ti yípadà sí $1',
-'diff-movedoutof' => 'ti yípò kúrò nínúu $1',
-'diff-styleremoved' => '$1 ti jẹ́ yíyọkúrò',
-'diff-removed' => '$1 ti jẹ́ yíyọkúrò',
-'diff-changedfrom' => 'ti yípadà láti $1',
-'diff-src' => 'ibi orísun',
-'diff-withdestination' => 'pẹ̀lú ibi ìdópin $1',
-'diff-with' => '&#32;pẹ̀lú $1 $2',
-'diff-with-final' => '&#32;àti $1 $2',
-'diff-width' => 'fífẹ̀sí',
-'diff-height' => 'gígasí',
-'diff-p' => "'''gbólóhùn ọ̀rọ̀''' kan",
-'diff-blockquote' => "'''ìyọ́lò ọ̀rọ̀''' kan",
-'diff-h1' => "'''oríọ̀rọ̀ (ìpele 1)''' kan",
-'diff-h2' => "'''oríọ̀rọ̀ (ìpele 2)''' kan",
-'diff-h3' => "'''oríọ̀rọ̀ (ìpele 3)''' kan",
-'diff-h4' => "'''oríọ̀rọ̀ (ìpele 4)''' kan",
-'diff-h5' => "'''oríọ̀rọ̀ (ìpele 5)''' kan",
-'diff-div' => "'''ìpín''' kan",
-'diff-ul' => "''''àkójọ aláìlétò''' kan",
-'diff-ol' => "'''àkójọ elétò''' kan",
-'diff-li' => "'''ohun aláàkójọ''' kan",
-'diff-table' => "'''tábìlì''' kan",
-'diff-tbody' => "'''àkóónú tábìlì''' kan",
-'diff-tr' => "'''ìtẹ̀lé gbọlọjọ''' kan",
-'diff-td' => "'''ìhámọ́''' kan",
-'diff-th' => "'''orí-ọ̀rọ̀''' kan",
-'diff-br' => "'''ààyè''' kan",
-'diff-hr' => "'''ìlà gbọlọjọ''' kan",
-'diff-code' => "'''apá àmìọ̀rọ̀ kọ̀mpútà''' kan",
-'diff-dl' => "'''àkójọ àwọn ìtumọ̀''' kan",
-'diff-dt' => "'''ọ̀rọ̀ ìtumọ̀''' kan",
-'diff-dd' => "'''ìtumọ̀''' kan",
-'diff-input' => "'''ìmúwọlẹ́''' kan",
-'diff-form' => "'''fọ́ọ̀mù''' kan",
-'diff-img' => "'''àwòrán''' kan",
-'diff-span' => "'''ìfẹ̀''' kan",
-'diff-a' => "'''ìjápọ̀''' kan",
-'diff-b' => "'''kedere'''",
-'diff-strong' => "'''gbàngbà'''",
-'diff-em' => "'''àtẹnumọ́'''",
-'diff-font' => "'''fọ́ntì'''",
-'diff-big' => "'''títóbi'''",
-'diff-del' => "'''píparẹ́'''",
+'history-title' => 'Ìtàn àtúnyẹ̀wò fún "$1"',
+'difference' => '(Ìyàtọ̀ láàrin àwọn àtúnyẹ́wò)',
+'lineno' => 'Ìlà $1:',
+'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
+'showhideselectedversions' => 'Ìfihàn/ìbòmọ́lẹ̀ àwọn àtúnyẹ̀wò ṣíṣàyàn',
+'editundo' => 'dápadà',
# Search results
'searchresults' => 'Àwọn èsì àwárí',
@@ -766,29 +748,25 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'searchresulttext' => 'Fún ẹ̀kúnrẹ́rẹ́ nípa ṣíṣe ìwárí {{SITENAME}}, ẹ̀ wo [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'Ẹ ṣ\'àwáàrí fun \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gbogbo ojúewé tó bẹ̀rẹ̀ pẹ̀lu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gbogbo ojúewé tó jápọ̀ mọ́ "$1"]])',
'searchsubtitleinvalid' => "Ẹ ti ṣ'àwáàrí fun '''$1'''",
-'noexactmatch' => "'''Kò sí ojúewé pẹ̀lú àkọlé \"\$1\".'''
-Ẹ le [[:\$1|ṣ'èdá ojúewé yìí]].",
-'noexactmatch-nocreate' => "'''Kò sí ojúewé pẹ̀lú àkọlé \"\$1\".'''",
'toomanymatches' => 'Àwọn ìbáramu ti pọ̀jù, ẹ jọ̀wọ́ ẹ gbìyànjú lọ́nà mìíràn',
'titlematches' => 'Àkọlé ojúewé báramu',
'notitlematches' => 'Kò sí àkọlé ojúewé tóbáramu',
'textmatches' => 'Ọ̀rọ̀ ojúewé tóbáramu:',
'notextmatches' => 'Kò sí ọ̀rọ̀ ojúewé tóbáramu',
-'prevn' => 'titẹ́lẹ̀ $1',
-'nextn' => 'tókàn $1',
+'prevn' => '{{PLURAL:$1|$1}} tókọjá',
+'nextn' => '{{PLURAL:$1|$1}} tókàn',
'prevn-title' => '{{PLURAL:$1|Èsì $1 sẹ́yìn|Àwọn èsì $1 sẹ́yìn}}',
'nextn-title' => '{{PLURAL:$1|Èsì $1 tóúnbọ̀|Àwọn èsì $1 tóúnbọ̀}}',
'shown-title' => '{{PLURAL:$1|Ìfihàn èsì $1|Ìfihàn àwọn èsì $1}} nínú ojúewé kọ̀ọ̀kan',
-'viewprevnext' => 'Ẹ wo ($1) ($2) ($3)',
+'viewprevnext' => 'Ẹ wo ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Àwọn àṣàyàn àwáàrí',
'searchmenu-exists' => "'''Ojúewé tó ún jẹ́ \"[[:\$1]]\" wà lórí wiki yìí'''",
'searchmenu-new' => "'''Dá ojúewé \"[[:\$1]]\" sí orí wiki yìí!'''",
'searchhelp-url' => 'Help:Àwon àkóónú',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ẹ lọ sí àwọn ojúewé tí wọ́n ní àsopọ̀ yìí]]',
-'searchprofile-articles' => 'Àwọn ojúewé àkóónú',
-'searchprofile-articles-and-proj' => 'Àwọn ojúewé àkóónú àti iṣẹ́-ọwọ́',
-'searchprofile-project' => 'Àwọn ojúewé iṣẹ́-ọwọ́',
-'searchprofile-images' => 'Àwọn faili',
+'searchprofile-articles' => 'Àwọn ojúewé Àkóónú',
+'searchprofile-project' => 'Àwọn ojúewé Ìrànwọ́ àti Iṣẹ́-ọwọ́',
+'searchprofile-images' => 'Amóhùnmáwòrán',
'searchprofile-everything' => 'Èyíkéyìí',
'searchprofile-advanced' => 'Onígíga',
'searchprofile-articles-tooltip' => 'Ṣàwáàrí nínú $1',
@@ -796,7 +774,6 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'searchprofile-images-tooltip' => 'Ṣàwáàrí fún faili',
'searchprofile-everything-tooltip' => 'Ṣàwáàrí nínú gbogbo àkóónú (pẹ̀lú àwọn ojúewé ọ̀rọ̀)',
'searchprofile-advanced-tooltip' => 'Ṣàwáàrí nínú àwọn orúkọàyè pàtó',
-'prefs-search-nscustom' => 'Ṣàwáàrí àwọn orúkọàyè pàtó:',
'search-result-size' => '$1 ({{PLURAL:$2|ọ̀rọ̀ 1|àwọn ọ̀rọ̀ $2}})',
'search-result-score' => 'Ìbáramu: $1%',
'search-redirect' => '(àtúnjúwe $1)',
@@ -813,7 +790,7 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'searchall' => 'gbogbo',
'showingresults' => "Ìfihàn nísàlẹ̀ títí dé {{PLURAL:$1|èsì '''1'''|àwọn èsì '''$1'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
'showingresultsnum' => "Ìfihàn nísàlẹ̀ {{PLURAL:$3|èsì '''1'''|àwọn èsì '''$3'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
-'showingresultstotal' => "Ìfihàn {{PLURAL:$4|èsì '''$1''' nínú '''$3'''|àwọn èsì '''$1 - $2''' nínú '''$3'''}} ní sàlẹ̀",
+'showingresultsheader' => "{{PLURAL:$5|Èsì '''$1''' nínú ''''$3'''|Àwọn èsì '''$1 - $2''' nínú '''$3'''}} fún '''$4'''",
'nonefound' => "'''Àkíyèsí''': Àwọn orúkọàyè mélòó níkan ni wọ́n jẹ́ wíwárí látìbẹ̀rẹ̀.
Ẹ ṣàlẹ̀mọ́wájú ìtọrọ yín pẹ̀lú ''gbogbo'' láti ṣàwárí gbogbo àkóónú (nínú àwọn ojúewé ọ̀rọ̀, àwọn àdàkọ, a.bẹ.bẹ.lọ), tàbí kí ẹ lo orúkọàyè tóyẹ gẹ́gẹ́ bíi àlẹ̀mọ́wájú.",
'search-nonefound' => 'Kò sí àwọn èsì kankan tóbáramu mọ́ ìtọrọ.',
@@ -822,59 +799,100 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'powersearch-ns' => 'Àwárí nínú orúkọàyè:',
'powersearch-redir' => 'Àkójọ àwọn àtúnjúwe',
'powersearch-field' => 'Àwáàrí fún',
+'powersearch-togglelabel' => 'Ìyẹ̀wò:',
+'powersearch-toggleall' => 'Gbogbo wọn',
+'powersearch-togglenone' => 'Ìkankan',
'search-external' => 'Àwárí lóde',
+# Quickbar
+'qbsettings-none' => 'Ìkankan',
+
# Preferences page
-'preferences' => 'Àwọn ìfẹ́ràn',
-'mypreferences' => 'Àwọn ìfẹ́ràn mi',
-'prefs-edits' => 'Iye àwọn àtúnṣe:',
-'prefsnologin' => 'Ẹ kò tíì wọlé',
-'prefsnologintext' => 'Ẹ gbọ́dọ̀ <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} wọlé]</span> láti to àwọn ìfẹ́ràn oníṣe.',
-'qbsettings-none' => 'Ìkankan',
-'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
-'skin' => 'Skin (Àwọ̀)',
-'skin-preview' => 'Àkọ́yẹ̀wò',
-'math' => 'Math',
-'dateformat' => 'Irú déétì',
-'datedefault' => 'Kò sí ìfẹ́ràn',
-'datetime' => 'Déétì àti àkókò',
-'math_unknown_error' => 'àsiṣe àwámárìdí',
-'math_unknown_function' => 'ìfiṣe àwámárìdí',
-'math_lexing_error' => 'àsiṣe òye ọ̀rọ̀',
-'prefs-personal' => 'Ọ̀rọ̀ nípa oníṣe',
-'prefs-rc' => 'Àwọn àtúnṣe tuntun',
-'prefs-watchlist' => 'Ìmójútó',
-'prefs-watchlist-days' => 'Ọjọ́ láti fihàn nínú ìmójútó:',
-'prefs-watchlist-edits' => 'Iye àwọn àtúnṣe láti fìhàn nínú ìmójútó kíkúnrẹ́rẹ́:',
-'prefs-misc' => 'Oríṣiríṣi',
-'prefs-resetpass' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
-'saveprefs' => 'Ìmúpamọ́',
-'resetprefs' => 'Ìpalẹ̀mọ́ àwọn àyípadà àìmúpamọ́',
-'restoreprefs' => 'Ìdápadà áwọn ìtò àtìbẹ̀rẹ̀',
-'textboxsize' => 'Àtúnṣe sí',
-'prefs-edit-boxsize' => 'Ìtóbi fèrèsé àtúnṣe',
-'rows' => 'Àwọn ìtẹ̀lé gbọlọjọ:',
-'columns' => 'Àwọn ìtẹ̀lé gogoro:',
-'searchresultshead' => 'Àwárí',
-'resultsperpage' => 'Àwọn èsì ní ojúewé kọ̀ọ̀kan:',
-'contextlines' => 'Ìye ìlà lórí èsì kọ̀ọ̀kan:',
-'recentchangesdays' => 'Iye ọjọ́ láti fihàn nínú àwọn àtúnṣe tuntun:',
-'savedprefs' => 'Àwọn ìfẹ́ràn yín ti jẹ́mímúpapọ́.',
-'localtime' => 'Àkókò ìbílẹ̀:',
-'timezoneoffset' => 'Ìyàtọ̀¹:',
-'servertime' => 'Àsìkò ẹ̀rọ-ìwọ̀fà:',
-'timezoneregion-africa' => 'Áfríkà',
-'timezoneregion-america' => 'Amẹ́ríkà',
-'timezoneregion-asia' => 'Ásíà',
-'timezoneregion-atlantic' => 'Òkun Atlantiki',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Òkun India',
-'allowemail' => 'Ìgbàláyè e-mail látọ̀dọ̀ àwọn oníṣe mìíràn',
-'prefs-searchoptions' => 'Àwọn àṣàyàn àwáàrí',
-'prefs-namespaces' => 'Àwọn orúkọàyè',
-'default' => 'níbẹ̀rẹ̀',
-'files' => 'Àwọn faili',
+'preferences' => 'Àwọn ìfẹ́ràn',
+'mypreferences' => 'Àwọn ìfẹ́ràn mi',
+'prefs-edits' => 'Iye àwọn àtúnṣe:',
+'prefsnologin' => 'Ẹ kò tíì wọlé',
+'prefsnologintext' => 'Ẹ gbọ́dọ̀ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} wọlé]</span> láti to àwọn ìfẹ́ràn oníṣe.',
+'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
+'prefs-skin' => 'Skin (Àwọ̀)',
+'skin-preview' => 'Àkọ́yẹ̀wò',
+'prefs-math' => 'Ìṣirò',
+'datedefault' => 'Kò sí ìfẹ́ràn',
+'prefs-datetime' => 'Ọjọ́ọdún àti àkókò',
+'prefs-personal' => 'Ọ̀rọ̀ nípa oníṣe',
+'prefs-rc' => 'Àwọn àtúnṣe tuntun',
+'prefs-watchlist' => 'Ìmójútó',
+'prefs-watchlist-days' => 'Ọjọ́ láti fihàn nínú ìmójútó:',
+'prefs-watchlist-days-max' => 'Púpọ̀jùlọ ọjọ́ 7',
+'prefs-watchlist-edits' => 'Iye àwọn àtúnṣe láti fìhàn nínú ìmójútó kíkúnrẹ́rẹ́:',
+'prefs-watchlist-edits-max' => 'Iye púpọ̀jùlọ: 1000',
+'prefs-misc' => 'Oríṣiríṣi',
+'prefs-resetpass' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
+'prefs-email' => 'Àwọn àṣàyàn e-mail',
+'prefs-rendering' => 'Wíwò',
+'saveprefs' => 'Ìmúpamọ́',
+'resetprefs' => 'Ìpalẹ̀mọ́ àwọn àyípadà àìmúpamọ́',
+'restoreprefs' => 'Ìdápadà áwọn ìtò àtìbẹ̀rẹ̀',
+'prefs-editing' => 'Àtúnṣe ṣíṣẹ',
+'prefs-edit-boxsize' => 'Ìtóbi fèrèsé àtúnṣe',
+'rows' => 'Àwọn ìtẹ̀lé gbọlọjọ:',
+'columns' => 'Àwọn ìtẹ̀lé gogoro:',
+'searchresultshead' => 'Àwárí',
+'resultsperpage' => 'Àwọn èsì ní ojúewé kọ̀ọ̀kan:',
+'contextlines' => 'Ìye ìlà lórí èsì kọ̀ọ̀kan:',
+'recentchangesdays' => 'Iye ọjọ́ láti fihàn nínú àwọn àtúnṣe tuntun:',
+'recentchangesdays-max' => 'Púpọ̀jùlọ {{PLURAL:$1|ọjọ́|ọjọ́}} $1',
+'recentchangescount' => 'Iye àtúnṣe láti fihàn látìbẹ̀rẹ̀:',
+'savedprefs' => 'Àwọn ìfẹ́ràn yín ti jẹ́mímúpapọ́.',
+'localtime' => 'Àkókò ìbílẹ̀:',
+'timezoneoffset' => 'Ìyàtọ̀¹:',
+'servertime' => 'Àsìkò ẹ̀rọ-ìwọ̀fà:',
+'timezoneregion-africa' => 'Áfríkà',
+'timezoneregion-america' => 'Amẹ́ríkà',
+'timezoneregion-asia' => 'Ásíà',
+'timezoneregion-atlantic' => 'Òkun Atlantiki',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europe',
+'timezoneregion-indian' => 'Òkun India',
+'allowemail' => 'Ìgbàláyè e-mail látọ̀dọ̀ àwọn oníṣe mìíràn',
+'prefs-searchoptions' => 'Àwọn àṣàyàn àwáàrí',
+'prefs-namespaces' => 'Àwọn orúkọàyè',
+'default' => 'níbẹ̀rẹ̀',
+'prefs-files' => 'Àwọn faili',
+'prefs-emailconfirm-label' => 'E-mail ìmúdájú:',
+'prefs-textboxsize' => 'Ìtóbi fèrèsé àtúnṣe',
+'youremail' => 'E-mail:',
+'username' => 'Orúkọ oníṣe:',
+'uid' => 'Nọmba ìdámọ̀ fún oníṣe:',
+'prefs-memberingroups' => 'Ọ̀kan nínú {{PLURAL:$1|ẹgbẹ́|àwọn ẹgbẹ́}}:',
+'prefs-registration' => 'Àsìkò ìforúkọsílẹ́:',
+'yourrealname' => 'Orúkọ ganangan:',
+'yourlanguage' => 'Èdè:',
+'yournick' => 'Ìtọwọ́bọ̀wé tuntun:',
+'badsiglength' => 'Ìtọwọ́bọ̀ yín ti gùnjù.
+Kò gbodọ̀ ju $1 {{PLURAL:$1|àmìlẹ́tà|àwọn àmìlẹ́tà}} lọ.',
+'yourgender' => 'Akọmbábo:',
+'gender-unknown' => 'Àláìtọ́kasí',
+'gender-male' => 'Akọ',
+'gender-female' => 'Abo',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Orúkọ gangan kò pọndandan.
+Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
+'prefs-help-email' => 'Àdírẹ́ẹ̀sì e-mail yín kò ṣe dandan, ṣùgbọ́n yíò jẹ́ kí á le fi ọ̀rọ̀ìpamọ́ tuntun ránṣẹ́ sí yín tí ẹ bá gbàgbé ọ̀rọ̀ìpamọ́.
+Bákannáà ẹ le è yàn láti jẹ́ kí àwọn ẹlòmíràn kó báyiín sọ̀rọ̀ láti ojúewé oníṣe tàbí ojúewé ọ̀rọ̀ yín láìfi taani yín hàn.',
+'prefs-help-email-required' => 'E-mail ṣe dandan.',
+'prefs-info' => 'Ìfitónilétí tóṣekókó',
+'prefs-i18n' => 'Ìṣekáríayé',
+'prefs-signature' => 'Ìtọwọ́bọ̀wé',
+'prefs-dateformat' => 'Irú ọjọ́ọdún',
+'prefs-timeoffset' => 'Ìyàtọ̀ àsìkò',
+'prefs-advancedediting' => 'Àwọn àṣàyàn onígíga',
+'prefs-advancedrc' => 'Àwọn àṣàyàn onígíga',
+'prefs-advancedrendering' => 'Àwọn àṣàyàn onígíga',
+'prefs-advancedsearchoptions' => 'Àwọn àṣàyàn onígíga',
+'prefs-advancedwatchlist' => 'Àwọn àṣàyàn onígíga',
+'prefs-display' => 'Ìfihàn àwọn àṣàyàn',
+'prefs-diffs' => 'Àwọn ìyàtọ̀',
# User rights
'userrights-user-editname' => 'Ẹ tẹ orúkọ oníṣe kan:',
@@ -922,6 +940,8 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'right-upload_by_url' => 'Ìrùsókè àwọn faili láti URL kan',
'right-delete' => 'Pa àwọn ojúewé rẹ́',
'right-editusercssjs' => 'Àtúnṣe àwọn fáìlì CSS àti JS ti àwọn oníṣe mìíràn',
+'right-editusercss' => 'Àtúnṣe àwọn fáìlì CSS ti àwọn oníṣe mìíràn',
+'right-edituserjs' => 'Àtúnṣe àwọn fáìlì JS ti àwọn oníṣe mìíràn',
# User rights log
'rightslog' => 'Àwọn ẹ̀tọ́ oníṣe',
@@ -957,6 +977,13 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'recentchanges' => 'Àwọn àtúnṣe tuntun',
'recentchanges-legend' => 'Àwọn àṣàyàn fún àtúnṣe tuntun',
'recentchanges-feed-description' => 'Ẹ tẹ̀ lé àwọn àtúnṣe àìpẹ́ ọjọ́ sí wiki nínú àkótán feed yìí.',
+'recentchanges-label-legend' => 'Àlàyé: $1.',
+'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
+'recentchanges-label-newpage' => 'Àtúnṣe yìí dá ojúewé tuntun',
+'recentchanges-legend-minor' => '$1 - àtúnṣe kékeré',
+'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
+'recentchanges-legend-bot' => '$1 - àtúnṣe bọt',
+'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
'rcnote' => "Lábẹ́ yìí ni {{PLURAL:$1|àtúnṣe '''kan'''|àwọn àtúnṣe '''$1'''}} tó kẹ̀yìn ní ọjọ́ '''$2''' sẹ́yìn, ní ago $5, ọjọ́ $4.",
'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
@@ -982,6 +1009,8 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
# Recent changes linked
'recentchangeslinked' => 'Àtúnṣe tó báramu',
+'recentchangeslinked-feed' => 'Àtúnṣe tó báramu',
+'recentchangeslinked-toolbox' => 'Àtúnṣe tó báramu',
'recentchangeslinked-title' => 'Àtúnṣe tó báramu mọ́ "$1"',
'recentchangeslinked-noresult' => 'Kò sí ìyàtọ̀ nínú àwọn ojúewé ìjápọ̀ láàrin ìgbà tí ẹ sọ.',
'recentchangeslinked-summary' => "Àkójọ àwọn àtúnṣe tí a sẹ̀sẹ̀ ṣe sí àwọn ojúewé tó jápọ̀ wá láti ojúewé pàtó kan (tàbí sí ìkan nìnú ẹ̀ka pàtó kan).
@@ -992,7 +1021,6 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
# Upload
'upload' => 'Ìrùsókè fáìlì',
'uploadbtn' => 'Ìrùsókè fáìlì',
-'reupload' => 'Àtún-rùsókè',
'uploadnologin' => 'Ẹ kò tíì wọlé',
'uploadnologintext' => 'Ẹ gbọ́dọ̀ [[Special:UserLogin|wọlè]] láti rùsókè faili.',
'uploaderror' => 'Àsìse ìrùsókè',
@@ -1016,15 +1044,27 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'uploadwarning' => 'Ìkìlọ̀ ìrùsókè',
'savefile' => 'Ìmúpamọ́ fáìlì',
'uploadedimage' => '"[[$1]]" ti jẹ́rírùsókè',
+'upload-source' => 'Fáìlì ìsun',
'sourcefilename' => 'Orúkọ fáìlì orísun:',
+'sourceurl' => 'Orísun URL:',
'destfilename' => 'Ìdópin orúkọ fáìlì:',
+'upload-description' => 'Ìjúwe fáìlì',
+
+'upload-file-error' => 'Àsiṣe ínú',
+'upload-too-many-redirects' => 'URL náà ní àwọn àtúnjúwe pípọ̀jùlọ',
+'upload-http-error' => 'Àṣìṣe HTTP ti ṣẹlẹ̀: $1',
-'upload-file-error' => 'Àsiṣe ínú',
+# img_auth script messages
+'img-auth-nofile' => 'Fáìlì "$1" kò sí.',
+
+# HTTP errors
+'http-read-error' => 'Àṣìṣe kíkà HTTP.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'Kò le jámọ́ URL',
'license' => 'Ìwé àṣẹ:',
+'license-header' => 'Ìwé àṣẹ',
'upload_source_file' => '(fáìlì lórí kọ̀mpútà yín)',
# Special:ListFiles
@@ -1038,6 +1078,7 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'listfiles_count' => 'Àwọn àyẹ̀wò',
# File description page
+'file-anchor-link' => 'Fáìlì',
'filehist' => 'Ìtàn fáìlì',
'filehist-help' => 'Ẹ kan kliki lórí ọjọ́ọdún/àkókò kan láti wo fáìlì ọ̀ún bó ṣe hàn ní àkókò na.',
'filehist-deleteall' => 'ìparẹ́ gbogbo wọn',
@@ -1045,6 +1086,7 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'filehist-current' => 'lọ́wọ́',
'filehist-datetime' => 'Ọjọ́ọdún/Àkókò',
'filehist-thumb' => 'Àwòrán kékeré',
+'filehist-thumbtext' => 'Àwòrán kékeré fún ní $1',
'filehist-nothumb' => 'Kò sí àwòrán kékeré',
'filehist-user' => 'Oníṣe',
'filehist-dimensions' => 'Àwọn ìwọ̀n',
@@ -1053,12 +1095,11 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'imagelinks' => 'Àwọn ìjápọ̀ fáìlì',
'linkstoimage' => '{{PLURAL:$1|Ojúewé kan yìí|Àwọn ojúewé $1 wọ̀nyí}} jápọ̀ mọ́ fáìlì yí:',
'nolinkstoimage' => 'Kò sí ojúewé tó jápọ̀ mọ́ fáìlì yìí.',
-'sharedupload' => 'Fáìlì yìí jẹ́ ìrùsókè láti $1 à ṣì le pin pẹ̀lú àwọn iṣẹ́owọ́ mìíràn tí wọ́n n lòó.', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki-linktext' => 'ojúewé ìjúwe faili',
-'noimage' => 'Kò sí faili tí únjẹ́ báun, sùgbọ́n ẹ le ẹ̀ $1.',
-'noimage-linktext' => 'Ìrùsókè ẹyọkan',
+'sharedupload' => 'Fáìlì yìí jẹ́ ìrùsókè láti $1 à ṣì le pin pẹ̀lú àwọn iṣẹ́owọ́ mìíràn tí wọ́n n lòó.',
+'filepage-nofile' => 'Kò sí fáìlì pẹ̀lú orúkọ yìí.',
+'filepage-nofile-link' => 'Kò sí fáìlì pẹ̀lú orúkọ yìí, sùgbọ́n ẹ le [$1 rùúsókè].',
'uploadnewversion-linktext' => 'Ẹ ṣe ìrùsókè àtúnṣe tuntun fáìlì yìí',
-'shared-repo-from' => 'láti $1', # $1 is the repository name
+'shared-repo-from' => 'láti $1',
# File reversion
'filerevert-comment' => 'Ìdíẹ̀:',
@@ -1114,8 +1155,8 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
Ó ti ṣe àtúnjúwe sí [[$2]].',
'brokenredirects' => 'Àwọn àtúnjúwe tótigé',
-'brokenredirects-edit' => '(àtúnṣe)',
-'brokenredirects-delete' => '(paárẹ́)',
+'brokenredirects-edit' => 'àtúnṣe',
+'brokenredirects-delete' => 'ìparẹ́',
'withoutinterwiki' => 'Àwọn ojúewé tí kò ní ìjápọ̀ èdè',
'withoutinterwiki-submit' => 'Ìfihàn',
@@ -1196,7 +1237,8 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'special-categories-sort-abc' => 'títò bíi lẹ́tà',
# Special:DeletedContributions
-'deletedcontributions-title' => 'Àwọn àfikún ajẹ́píparẹ́ oníṣe',
+'deletedcontributions-title' => 'Àwọn àfikún ajẹ́píparẹ́ oníṣe',
+'sp-deletedcontributions-contribs' => 'àwọn àfikún',
# Special:LinkSearch
'linksearch' => "Àwọn ìjápọ̀ s'íta",
@@ -1208,6 +1250,13 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
'listusersfrom' => 'Ìfihàn àwọn oníṣe nípa bíbẹ̀rẹ̀ láti',
'listusers-submit' => 'Ìfihan',
'listusers-noresult' => 'Kò rí oníṣe kankan.',
+'listusers-blocked' => '(dídínà)',
+
+# Special:ActiveUsers
+'activeusers-count' => '{{PLURAL:$1|Àtúnṣe|Àwọn àtúnṣe}} $1 ní {{PLURAL:$3|ọjọ́|ọjọ́}} $3 sẹ́yìn',
+'activeusers-hidebots' => 'Ìbòmọ́lẹ̀ àwọn bọt',
+'activeusers-hidesysops' => 'Ìbòmọ́lẹ̀ àwọn olùmójútó',
+'activeusers-noresult' => 'Kò rí oníṣe kankan.',
# Special:Log/newusers
'newuserlogpage' => 'Àkọsílẹ̀ ìdá oníṣe',
@@ -1217,6 +1266,8 @@ Gẹ́gẹ́ bíi alámùójútó ẹ le wòó; ẹ̀kúnrẹ́rẹ́ ṣe é
# Special:ListGroupRights
'listgrouprights' => 'Àwọn ẹ̀tọ́ ẹgbẹ́ oníṣe',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Ẹ̀tọ́ tó ní</span>
+* <span class="listgrouprights-revoked">Ẹ̀tọ́ tí kò ní mọ́</span>',
'listgrouprights-group' => 'Ẹgbẹ́',
'listgrouprights-rights' => 'Àwọn ẹ̀tọ́',
'listgrouprights-helppage' => 'Help:Àwọn ẹ̀tọ́ ẹgbẹ́',
@@ -1278,11 +1329,12 @@ A óò ṣ'àkójọ àwọn àtúnṣe ọjọ́wajú sí ojúewé yìí àti o
'exblank' => 'ojúewé jẹ́ òfo',
'delete-confirm' => 'Ìparẹ́ "$1"',
'delete-legend' => 'Paárẹ́',
-'historywarning' => 'Ìkìlọ̀: Ojúewé tí ẹ fẹ́ parẹ́ ní ìtàn:',
+'historywarning' => "'''Ìkìlọ̀:''' Ojúewé tí ẹ fẹ́ parẹ́ ní ìtàn pẹ̀lú {{PLURAL:$1|àtúnyẹ̀wò|àwọn àtúnyẹ̀wò}} $1:",
'confirmdeletetext' => 'Ẹ ti fẹ́ ṣe ìparẹ́ ojúewé kan pọ̀mọ́ gbogbo ìtàn rẹ̀.
Ẹ jọ̀wọ́ ẹ fìdájú pé èyí ni èrò yín, pé ohun tí yíò ṣẹlẹ̀ yé yín, àti pé ẹ ún ṣe èyí gẹ́gẹ́ bí
[[{{MediaWiki:Policy-url}}|ìlànà]] ṣe làá kalẹ̀.',
'actioncomplete' => 'Ìmúṣe ti parí',
+'actionfailed' => 'Ìkùnà ìgbéṣe',
'deletedtext' => 'A ti pa "<nowiki>$1</nowiki>" rẹ́.
Ẹ wo $2 fún àkọọ́lẹ̀ àwọn ìparẹ́ àìpẹ́.',
'deletedarticle' => 'A ti pa "[[$1]]" rẹ́',
@@ -1311,7 +1363,6 @@ A óò ṣ'àkójọ àwọn àtúnṣe ọjọ́wajú sí ojúewé yìí àti o
'protectexpiry' => 'Ìparí:',
'protect_expiry_invalid' => 'Àkókò ìparí kò ní ìbámu.',
'protect_expiry_old' => 'Ìgbà tó ti kọjá ni ìparí.',
-'protect-unchain' => 'Ṣíṣí ìyọ̀nda láti yípò',
'protect-text' => "Ẹ lè wo, bẹ́ ẹ̀ sìni ẹ lè ṣ'àtúnṣe ibi àbò níbí fún ojúewé '''<nowiki>$1</nowiki>'''.",
'protect-locked-access' => "Àpamọ́ yín kò ní àyè láti ṣ'àtúnṣe àwọn ibi àbò.
Bí a ṣe to ojúewé '''$1''' nì yí:",
@@ -1330,7 +1381,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'protect-othertime-op' => 'àkókò míràn',
'protect-otherreason' => 'Ìdí míràn/àfikún:',
'protect-otherreason-op' => 'Ìdí míràn',
-'protect-expiry-options' => '1 wákàtí:1 hour,1 ọjọ́:1 day,1 ọ̀ṣẹ̀:1 week,2 ọ̀ṣẹ̀:2 weeks,1 osù:1 month,3 osù:3 months,6 osù:6 months,1 ọdún:1 year,láìlópin:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1 wákàtí:1 hour,1 ọjọ́:1 day,1 ọ̀ṣẹ̀:1 week,2 ọ̀ṣẹ̀:2 weeks,1 osù:1 month,3 osù:3 months,6 osù:6 months,1 ọdún:1 year,láìlópin:infinite',
'restriction-type' => 'Ìyọ̀nda:',
'restriction-level' => 'Ibi ìpààlà:',
'minimum-size' => 'Ìtóbi kíkéréjúlọ',
@@ -1352,6 +1403,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'undelete-nodiff' => 'Kò rí àtúnyẹ̀wò tẹ́lẹ̀ kankan.',
'undeletebtn' => 'Dápadà',
'undeletelink' => 'wò/dápadà',
+'undeleteviewlink' => 'wo',
'undeletereset' => 'Ìtúnṣètò',
'undeletecomment' => 'Ìdíẹ̀:',
'undeletedarticle' => 'a ti dá "[[$1]]" padà',
@@ -1376,6 +1428,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'sp-contributions-newbies' => 'Àfihàn àwọn àfikún àwọn àpamọ́ tuntun nìkan',
'sp-contributions-newbies-sub' => 'Fún àwọn àpamọ́ tuntun',
'sp-contributions-blocklog' => 'Àkọsílẹ̀ ìdínà',
+'sp-contributions-talk' => 'ọ̀rọ̀',
'sp-contributions-search' => 'Àwáàrí fún àwọn àfikún',
'sp-contributions-username' => 'Àdírẹ́ẹ̀sì IP tàbí orúkọ oníṣe:',
'sp-contributions-submit' => 'Ṣàwárí',
@@ -1399,6 +1452,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
# Block/unblock
'blockip' => 'Dínà oníṣe',
+'blockip-title' => 'Ìdínà oníṣẹ',
'blockip-legend' => 'Ìdínà oníṣẹ',
'ipaddress' => 'Àdírẹ́ẹ̀sì IP',
'ipadressorusername' => 'Àdírẹ́ẹ̀sì IP tàbí orúkọ oníṣe:',
@@ -1407,7 +1461,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'ipbreasonotherlist' => 'Ìdí mìíràn',
'ipbsubmit' => 'Dínà oníṣe yìí',
'ipbother' => 'Àkókò míràn:',
-'ipboptions' => '2 wákàtí:2 hours,1 ọjọ́:1 day,3 ọjọ́:3 days,1 ọ̀ṣẹ̀:1 week,2 ọ̀ṣẹ̀:2 weeks,1 osù:1 month,3 osù:3 months,6 osù:6 months,1 ọdún:1 year,àílópin:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2 wákàtí:2 hours,1 ọjọ́:1 day,3 ọjọ́:3 days,1 ọ̀ṣẹ̀:1 week,2 ọ̀ṣẹ̀:2 weeks,1 osù:1 month,3 osù:3 months,6 osù:6 months,1 ọdún:1 year,àílópin:infinite',
'ipbotheroption' => 'òmíràn',
'ipbotherreason' => 'Ìdí míràn/àfikún:',
'ipbhidename' => 'Ìbómọ́lẹ̀ orúkọ oníṣe nínú àwọn àtúnṣe àti àwọn àkójọ',
@@ -1415,8 +1469,10 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'ipb-blocklist-contribs' => 'Àwọn àfikún fún $1',
'ipblocklist' => 'Àwọn àdírẹ́ẹ̀sì IP àti orúkọ ọníṣe tí a dínà',
'ipblocklist-submit' => 'Ṣàwárí',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ìdínà|Àwọn ìdínà}} mííràn',
'blocklistline' => '$1, $2 ti dínà $3 ($4)',
'infiniteblock' => 'àìlópin',
+'expiringblock' => 'yíò parí ní ọjọ́ $1 ní ago $2',
'anononlyblock' => 'aláìlórúkọ nìkan',
'ipblocklist-empty' => 'Àkójọ ìdínà jẹ́ òfo.',
'blocklink' => 'dínà',
@@ -1433,6 +1489,7 @@ Bí a ṣe to ojúewé '''$1''' nì yí:",
'ipb-needreblock' => '== Dídèlọ́nà tẹ́lẹ̀ ==
"$1" jẹ́ dídèlọ́nà tẹ́lẹ̀
Ṣé ẹ fẹ́ yí àwọn ìtò yí padà?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Ìdínà|Àwọn ìdínà}} mìíràn',
'blockme' => 'Dínà mi',
'proxyblocksuccess' => 'Ṣetán',
@@ -1469,7 +1526,7 @@ Tí ó bá jẹ́ báhun, ẹ gbúdọ̀ ṣe ìyípò rẹ̀ fúnra yín.",
'move-watch' => 'Mójútó ojúewé yìí',
'movepagebtn' => 'Yípò ojúewé',
'pagemovedsub' => 'Ìyípò ti já sí rere',
-'movepage-moved' => '\'\'\'"$1" ti yípò sí "$2"\'\'\'.', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1" ti yípò sí "$2"\'\'\'.',
'movepage-moved-redirect' => 'Àtúndarí ti jẹ́ dídá.',
'articleexists' => 'Ojúewé pẹ̀lú orúkọ un wà tẹ́lẹ̀, tàbí kójẹ́pé orúkọ tí ẹ yàn kò ní ìbámu.
Ẹ jọ̀wọ́ ẹ yan orúkọ mìíràn.',
@@ -1504,9 +1561,12 @@ Ojúewé àdésí "[[:$1]]" wà tẹ́lẹ̀tẹ́lẹ̀.
'export-templates' => 'Ìmúpọ̀ àwọn àdàkọ',
# Namespace 8 related
-'allmessages' => 'Àwọn ìránṣẹ́ sistẹmu',
-'allmessagesname' => 'Orúkọ',
-'allmessagescurrent' => 'Ìkọ ìránṣẹ́ lọ́wọ́',
+'allmessages' => 'Àwọn ìránṣẹ́ sistẹmu',
+'allmessagesname' => 'Orúkọ',
+'allmessagescurrent' => 'Ìkọ ìránṣẹ́ lọ́wọ́',
+'allmessages-filter-all' => 'Gbogbo wọn',
+'allmessages-language' => 'Èdè:',
+'allmessages-filter-submit' => 'Lọ',
# Thumbnails
'thumbnail-more' => 'Ìmútóbi',
@@ -1552,6 +1612,7 @@ Ojúewé àdésí "[[:$1]]" wà tẹ́lẹ̀tẹ́lẹ̀.
'tooltip-search-fulltext' => 'Ṣe àwáàrí nínú àwọn ojúewé fún ìkọ yìí',
'tooltip-p-logo' => 'Ojúewé Àkọ́kọ́',
'tooltip-n-mainpage' => 'Ẹ ṣe àbẹ̀wò sí Ojúewé Àkọ́kọ́',
+'tooltip-n-mainpage-description' => 'Àbẹ̀wò sí ojúewé àkọ́kọ́',
'tooltip-n-portal' => 'Ẹ̀kúnrẹ́rẹ́ nípa iṣẹ́ọwọ́ yìí',
'tooltip-n-currentevents' => 'Ìròhìn lọ́wọ́lọ́wọ́',
'tooltip-n-recentchanges' => 'Àkójọ àwọn àtúnṣe tuntun nínú wiki.',
@@ -1588,7 +1649,7 @@ Ojúewé àdésí "[[:$1]]" wà tẹ́lẹ̀tẹ́lẹ̀.
# Attribution
'anonymous' => '{{PLURAL:$1|Oníṣe|Àwọn oníṣe}} aláìlórúkọ ti {{SITENAME}}',
'siteuser' => 'Oníṣe $1 lórí {{SITENAME}}',
-'lastmodifiedatby' => 'Ìgbà tí a ṣe àtúnṣe sí ojúewé yìí gbẹ̀yín ni $2, $1 látọwọ́ $3.', # $1 date, $2 time, $3 user
+'lastmodifiedatby' => 'Ìgbà tí a ṣe àtúnṣe sí ojúewé yìí gbẹ̀yín ni $2, $1 látọwọ́ $3.',
'others' => 'àwọn mìíràn',
# Info page
@@ -1596,6 +1657,11 @@ Ojúewé àdésí "[[:$1]]" wà tẹ́lẹ̀tẹ́lẹ̀.
'numedits' => 'Íyé áwon àtúnṣe (ojúewé): $1',
'numtalkedits' => 'Íyé áwon àtúnṣe (ojúewé ìfọ̀rọ̀wérọ̀): $1',
+# Math errors
+'math_unknown_error' => 'àsiṣe àwámárìdí',
+'math_unknown_function' => 'ìfiṣe àwámárìdí',
+'math_lexing_error' => 'àsiṣe òye ọ̀rọ̀',
+
# Browsing diffs
'previousdiff' => '← Àtúnṣe tópẹ́jù',
'nextdiff' => 'Àtúnṣe tótuntunjù →',
@@ -1609,6 +1675,7 @@ Ojúewé àdésí "[[:$1]]" wà tẹ́lẹ̀tẹ́lẹ̀.
'svg-long-desc' => '(faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3)',
'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
'show-big-image-thumb' => '<small>Ìtóbi àkọ́kọ́yẹ̀wò yìí: $1 × $2 pixels</small>',
+'file-info-gif-looped' => 'lílọ́po',
# Special:NewFiles
'newimages' => 'Ọ̀dẹ̀dẹ̀ àwòrán àwọn faili tuntun',
@@ -1639,7 +1706,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
* exposuretime
* fnumber
* isospeedratings
-* focallength", # Do not translate list items
+* focallength",
# EXIF tags
'exif-imagewidth' => 'Fífẹ̀sí',
@@ -1660,6 +1727,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
'watchlistall2' => 'gbogbo',
'namespacesall' => 'gbogbo',
'monthsall' => 'gbogbo',
+'limitall' => 'gbogbo',
# E-mail address confirmation
'confirmemail' => "Ṣè'múdájú àdírẹ́ẹ̀sì e-mail",
@@ -1706,7 +1774,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
'watchlisttools-raw' => "Ẹ ṣ'àtúnṣe àkójọ ìmójútó látìbẹ̀rẹ̀",
# Special:Version
-'version' => 'Àtúnṣe', # Not used as normal message but as header for the special page itself
+'version' => 'Àtúnṣe',
'version-specialpages' => 'Àwọn ojúewé pàtàkì',
'version-other' => 'Òmíràn',
'version-license' => 'Ìwé àṣẹ',
@@ -1738,4 +1806,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
# Database error messages
'dberr-header' => 'Wiki yìí ní ìsòro',
+# HTML forms
+'htmlform-selectorother-other' => 'Òmíràn',
+
);
diff --git a/languages/messages/MessagesYue.php b/languages/messages/MessagesYue.php
index a4908aa4..f5f15f7a 100644
--- a/languages/messages/MessagesYue.php
+++ b/languages/messages/MessagesYue.php
@@ -53,24 +53,22 @@ $dateFormats = array(
);
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Special',
- NS_MAIN => '',
- NS_TALK => 'Talk',
- NS_USER => 'User',
- NS_USER_TALK => 'User_talk',
- # NS_PROJECT => $wgMetaNamespace,
- NS_PROJECT_TALK => '$1_talk',
- NS_FILE => 'File',
- NS_FILE_TALK => 'File_talk',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Template_talk',
- NS_HELP => 'Help',
- NS_HELP_TALK => 'Help_talk',
- NS_CATEGORY => 'Category',
- NS_CATEGORY_TALK => 'Category_talk',
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_TALK => 'Talk',
+ NS_USER => 'User',
+ NS_USER_TALK => 'User_talk',
+ NS_PROJECT_TALK => '$1_talk',
+ NS_FILE => 'File',
+ NS_FILE_TALK => 'File_talk',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Help_talk',
+ NS_CATEGORY => 'Category',
+ NS_CATEGORY_TALK => 'Category_talk',
);
$namespaceAliases = array(
@@ -174,6 +172,7 @@ $messages = array(
'tog-enotifminoredits' => '小修改都要電郵通知我',
'tog-enotifrevealaddr' => '喺電郵通知信上面話畀人聽我嘅電郵地址',
'tog-shownumberswatching' => '顯示有幾多人監視',
+'tog-oldsig' => '原有簽名嘅預覽:',
'tog-fancysig' => '將簽名以維基字對待(冇自動連結)',
'tog-externaleditor' => '預設用外掛編輯器(高階者專用,需要響你部電腦度做一啲特別設定)',
'tog-externaldiff' => '預設用外掛比較器(高階者專用,需要響你部電腦度做一啲特別設定)',
@@ -197,6 +196,13 @@ $messages = array(
'underline-never' => '永不',
'underline-default' => '瀏覽器預設',
+# Font style option in Special:Preferences
+'editfont-style' => '編輯區字型樣式:',
+'editfont-default' => '瀏覽器預設',
+'editfont-monospace' => '固定間距字型',
+'editfont-sansserif' => '無腳字型',
+'editfont-serif' => '有腳字型',
+
# Dates
'sunday' => '星期日',
'monday' => '星期一',
@@ -256,7 +262,7 @@ $messages = array(
'category-media-header' => ' "$1" 類嘅媒體',
'category-empty' => "''呢類無任何版或媒體檔。''",
'hidden-categories' => '屬於$1隱類',
-'hidden-category-category' => '隱藏類', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隱藏類',
'category-subcat-count' => '{{PLURAL:$2|呢類淨係有下面嘅細類。|呢類有下面嘅$1個細類,總共有$2類。}}',
'category-subcat-count-limited' => '呢個類別入邊有$1個細類別。',
'category-article-count' => '{{PLURAL:$2|呢類淨係有下面嘅版。|呢類有下面嘅$1版,總共有$2版。}}',
@@ -264,6 +270,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|呢類淨係有下面嘅檔案。|呢類有下面嘅$1個檔案,總共有$2個檔案。}}',
'category-file-count-limited' => '呢個類別入邊有$1個檔案。',
'listingcontinuesabbrev' => '續',
+'index-category' => '做咗索引嘅版',
+'noindex-category' => '未做索引嘅版',
'mainpagetext' => "'''MediaWiki已經裝好。'''",
'mainpagedocfooter' => '參閱[http://meta.wikimedia.org/wiki/Help:Contents 用戶指引](英),裏面有資料講點用wiki軟件。
@@ -273,10 +281,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見問題](英)
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件名單](英)',
-'about' => '關於',
-'article' => '內容頁',
-'newwindow' => '(響新視窗度打開)',
-'cancel' => '取消',
+'about' => '關於',
+'article' => '內容頁',
+'newwindow' => '(響新視窗度打開)',
+'cancel' => '取消',
+'moredotdotdot' => '更多...',
+'mypage' => '我嘅頁',
+'mytalk' => '傾偈',
+'anontalk' => '同呢個 IP 傾偈',
+'navigation' => '導航',
+'and' => '同埋',
+
+# Cologne Blue skin
'qbfind' => '搵嘢',
'qbbrowse' => '瀏覽',
'qbedit' => '編輯',
@@ -284,15 +300,35 @@ $messages = array(
'qbpageinfo' => '附近文字',
'qbmyoptions' => '我嘅選項',
'qbspecialpages' => '特別頁',
-'moredotdotdot' => '更多...',
-'mypage' => '我嘅頁',
-'mytalk' => '傾偈',
-'anontalk' => '同呢個 IP 傾偈',
-'navigation' => '導航',
-'and' => '同埋',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => '加主題',
+'vector-action-delete' => '刪除',
+'vector-action-move' => '移動',
+'vector-action-protect' => '保護',
+'vector-action-undelete' => '去睇刪除咗嘅頁面',
+'vector-action-unprotect' => '解除保護',
+'vector-namespace-category' => '分類',
+'vector-namespace-help' => '幫助頁',
+'vector-namespace-image' => '檔案',
+'vector-namespace-main' => '版',
+'vector-namespace-media' => '媒體頁',
+'vector-namespace-mediawiki' => '信息',
+'vector-namespace-project' => '計劃頁',
+'vector-namespace-special' => '特別頁',
+'vector-namespace-talk' => '討論',
+'vector-namespace-template' => '模',
+'vector-namespace-user' => '用戶頁',
+'vector-view-create' => '建立',
+'vector-view-edit' => '編輯',
+'vector-view-history' => '睇吓歷史',
+'vector-view-view' => '閱',
+'vector-view-viewsource' => '睇吓原始碼',
+'actions' => '動作',
+'namespaces' => '空間名',
+'variants' => '變換',
'errorpagetitle' => '錯誤',
'returnto' => '返去$1 。',
@@ -342,18 +378,22 @@ $messages = array(
'otherlanguages' => '第啲語言',
'redirectedfrom' => '(由$1跳轉過來)',
'redirectpagesub' => '跳轉頁',
-'lastmodifiedat' => '呢一頁嘅最後修改係響$1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '呢一頁嘅最後修改係響$1 $2。',
'viewcount' => '呢一頁已經有$1人次睇過。',
'protectedpage' => '受保護頁',
'jumpto' => '跳去:',
'jumptonavigation' => '定向',
'jumptosearch' => '搵嘢',
+'view-pool-error' => '對唔住,個伺服器響呢段時間超出咗負荷。
+太多用戶試過去睇呢一版。
+響再睇呢一版之前請等多一陣。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '關於{{SITENAME}}',
'aboutpage' => 'Project:關於',
'copyright' => '響版度嘅內容係根據$1嘅條款發佈。',
-'copyrightpagename' => '{{SITENAME}}版權',
'copyrightpage' => '{{ns:project}}:版權',
'currentevents' => '最近發生嘅事',
'currentevents-url' => 'Project:最近發生嘅事',
@@ -361,8 +401,6 @@ $messages = array(
'disclaimerpage' => 'Project:一般免責聲明',
'edithelp' => '編輯協助',
'edithelppage' => 'Help:編輯',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
'helppage' => 'Help:目錄',
'mainpage' => '頭版',
'mainpage-description' => '頭版',
@@ -442,10 +480,6 @@ $messages = array(
"$1"
於 "$2"功能中。
數據庫嘅錯誤回應 "$3: $4"',
-'noconnect' => '對唔住!Wiki 而家有啲技術問題,連唔上資料庫伺服器。<br />
-$1',
-'nodb' => '伺服器 $1 唔選得',
-'cachederror' => '以下係已請求頁嘅快取複本,內容可能唔係最新嘅。',
'laggedslavemode' => '警告:呢頁可能未包括最新嘅更新。',
'readonly' => '資料庫鎖咗',
'enterlockreason' => '輸入鎖資料庫嘅原因,同埋預計幾耐後會解鎖',
@@ -463,6 +497,8 @@ $1',
'readonly_lag' => '當從伺服器追緊主伺服器時,資料庫會自動被鎖',
'internalerror' => '內部錯誤',
'internalerror_info' => '內部錯誤: $1',
+'fileappenderrorread' => '當附加嗰陣讀唔到 "$1"。',
+'fileappenderror' => '附加唔到 "$1" 去 "$2"。',
'filecopyerror' => '檔案 "$1" 抄唔到去 "$2"。',
'filerenameerror' => '檔案 "$1" 唔改得做 "$2"。',
'filedeleteerror' => '檔案 "$1" 唔刪得。',
@@ -472,7 +508,8 @@ $1',
'unexpected' => '意外數值。 "$1"="$2"。',
'formerror' => '錯誤:表格交唔到',
'badarticleerror' => '喺呢頁唔可以做呢個動作。',
-'cannotdelete' => '指定嗰頁或檔案唔刪得。(可能已經刪咗。)',
+'cannotdelete' => '頁或檔案 "$1" 唔刪得。
+可能已經畀另一位刪咗。',
'badtitle' => '錯嘅標題',
'badtitletext' => '要求嘅標題唔啱、空白,跨語言或者跨維基連結標題錯誤。亦可能係標題包括咗一個或多過一個字元。',
'perfcached' => '以下嘅資料係嚟自快取,可能唔係最新嘅。',
@@ -502,7 +539,6 @@ $1',
'virus-unknownscanner' => '未知嘅防病毒:',
# Login and logout pages
-'logouttitle' => '用戶登出',
'logouttext' => "'''你而家已經登出咗。'''
你重可以用匿名身份用{{SITENAME}},又或者[[Special:UserLogin|重新登入]]。
@@ -510,7 +546,6 @@ $1',
'welcomecreation' => '== 歡迎, $1! ==
你個戶口已經起好。唔好唔記得去改改你嘅[[Special:Preferences|{{SITENAME}}喜好設定]]喎。',
-'loginpagetitle' => '用戶登入',
'yourname' => '用戶名:',
'yourpassword' => '密碼:',
'yourpasswordagain' => '再輸入密碼:',
@@ -521,6 +556,7 @@ $1',
'nav-login-createaccount' => '登入/開新戶口',
'loginprompt' => '你一定要開咗 cookies 先登入到{{SITENAME}}。',
'userlogin' => '登入/開新戶口',
+'userloginnocreate' => '登入',
'logout' => '登出',
'userlogout' => '登出',
'notloggedin' => '未登入',
@@ -532,28 +568,8 @@ $1',
'createaccountmail' => '用電郵',
'badretype' => '你入嘅密碼唔一致。',
'userexists' => '你入嘅用戶名已經有人用咗,唔該揀過個名啦。',
-'youremail' => '電郵:',
-'username' => '用戶名:',
-'uid' => '用戶 ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|一|多}}組嘅成員:',
-'yourrealname' => '真名:',
-'yourlanguage' => '話:',
-'yourvariant' => '變換:',
-'yournick' => '花名:',
-'badsig' => '無效嘅程式碼簽名。檢查吓 HTML 有無錯。',
-'badsiglength' => '你嘅花名太長喇。
-唔長得過$1個字元。',
-'yourgender' => '性別:',
-'gender-unknown' => '未指定',
-'gender-male' => '男',
-'gender-female' => '女',
-'prefs-help-gender' => '可選: 用嚟整軟件性別指定。呢項資料將會被公開。',
-'email' => '電郵',
-'prefs-help-realname' => '真名可以唔填。
-如果你畀埋佢,有需要嘅時候會用佢來標示你嘅工夫。',
'loginerror' => '登入錯誤',
-'prefs-help-email' => '電郵地址可以唔填,但當你唔記得咗你個密碼嗰陣需要利用電郵地址將新密碼重設寄番畀你。亦可以響人哋唔知你電郵地址嘅情況之下都可以聯絡你。',
-'prefs-help-email-required' => '需要電郵地址。',
+'createaccounterror' => '開唔到戶口:$1',
'nocookiesnew' => '已經開咗戶口,但你未登入。 {{SITENAME}} 要用 cookies 嚟登入。你已經熄咗佢。請你開咗再試。',
'nocookieslogin' => '{{SITENAME}} 登入要開 cookies。熄咗佢。請你開咗再試。',
'noname' => '你未指定一個有效嘅用戶名。',
@@ -564,9 +580,11 @@ $1',
請檢查你個名嘅輸入方法,或者[[Special:UserLogin/signup|建立一個新嘅戶口]]。',
'nosuchusershort' => '呢度冇叫做 "<nowiki>$1</nowiki>"嘅用戶。 請檢查你個名嘅輸入方法。',
'nouserspecified' => '你需要指定一個用戶名。',
+'login-userblocked' => '呢位用戶封鎖咗。唔容許登入。',
'wrongpassword' => '密碼唔啱,麻煩你再試多次。',
'wrongpasswordempty' => '你都未入密碼,唔該再試多次啦。',
-'passwordtooshort' => '你嘅密碼唔啱或者太短。佢最少要有$1個半形字元,同埋要唔同你嘅用戶名。',
+'passwordtooshort' => '你嘅密碼最少要有$1個半形字元。',
+'password-name-match' => '你嘅密碼一定要同你嘅用戶名唔一樣。',
'mailmypassword' => '寄個新密碼',
'passwordremindertitle' => '{{SITENAME}}嘅新臨時密碼',
'passwordremindertext' => '有人(可能係你,IP 位置 $1)
@@ -579,6 +597,7 @@ $1',
又或者你記得返你嘅密碼而又唔想再轉,
你可以唔使理呢個信息,繼續用舊密碼。',
'noemail' => '呢度冇用戶 "$1" 嘅電郵地址。',
+'noemailcreate' => '你需要提供一個有效嘅電郵地址',
'passwordsent' => '新嘅密碼已經寄咗畀呢位用戶 "$1" 嘅電郵地址。收到之後請重新登入。',
'blocked-mailpassword' => '你嘅IP地址被鎖住,唔可以用密碼復原功能以防止濫用。',
'eauthentsent' => '確認電郵已經傳送到指定嘅電郵地址。喺其它嘅郵件傳送到呢個戶口之前,你需要按電郵嘅指示,嚟確認呢個戶口真係屬於你嘅。',
@@ -597,8 +616,10 @@ $1',
'createaccount-text' => '有人響{{SITENAME}}度用咗你個電郵開咗個名叫 "$2" 嘅新戶口 ($4),密碼係 "$3" 。你應該而家登入,改埋個密碼。
如果個戶口係開錯咗嘅話,你可以唔埋呢篇信。',
+'usernamehasherror' => '用戶名唔可以包含切細字元',
'login-throttled' => '你已經試咗太多次登入動作。請等多一陣再試過。',
'loginlanguagelabel' => '語言:$1',
+'suspicious-userlogout' => '你去登出嘅要求已經拒絕咗,因為佢可能由壞咗嘅瀏覽器或者快取代理傳送。',
# Password reset dialog
'resetpass' => '改密碼',
@@ -611,18 +632,13 @@ $1',
'resetpass_submit' => '設定密碼同登入',
'resetpass_success' => '你嘅密碼已經成功噉改咗!
而家幫你登入緊...',
-'resetpass_bad_temporary' => '無效嘅臨時密碼。
-你可能已經成功咁更改你嘅密碼,又或者重新請求過一個新嘅臨時密碼。',
'resetpass_forbidden' => '唔可以更改密碼',
'resetpass-no-info' => '你一定要登入咗去直接入來呢一版。',
'resetpass-submit-loggedin' => '改密碼',
+'resetpass-submit-cancel' => '取消',
'resetpass-wrong-oldpass' => '無效嘅臨時或現有嘅密碼。
你可能已經成功咁更改你嘅密碼,又或者重新請求過一個新嘅臨時密碼。',
'resetpass-temp-password' => '臨時密碼:',
-'resetpass-log' => '密碼重設日誌',
-'resetpass-logtext' => '下面係由管理員重設用戶密碼嘅日誌。',
-'resetpass-logentry' => '改咗$1嘅密碼',
-'resetpass-comment' => '改密碼嘅原因:',
# Edit page toolbar
'bold_sample' => '粗體字',
@@ -692,7 +708,6 @@ $1',
'blockededitsource' => "有關'''你'''對'''$1'''嘅'''編輯'''文字響下面列示:",
'whitelistedittitle' => '需要登入之後先至可以編輯',
'whitelistedittext' => '你需要$1去編輯呢頁。',
-'confirmedittitle' => '要用電郵確定咗先可以改',
'confirmedittext' => '你個電郵地址要確定咗先可以編輯。唔該先去[[Special:Preferences|喜好設定]]填咗電郵地址,並做埋確認手續。',
'nosuchsectiontitle' => '搵唔到呢個小節',
'nosuchsectiontext' => '你嘗試編輯嘅小節並唔存在。
@@ -712,13 +727,19 @@ $1',
'noarticletext' => '喺呢一頁而家並冇任何嘅文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌],
或者[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯呢一版]</span>。',
+'noarticletext-nopermission' => '喺呢一頁而家並冇任何嘅文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],
+或者<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌]</span>。',
'userpage-userdoesnotexist' => '用戶戶口"$1"重未開。請響䦒/編輯呢版之前先檢查一下。',
+'userpage-userdoesnotexist-view' => '用戶戶口"$1"重未開。',
+'blocked-notice-logextract' => '呢位用戶而家被封鎖緊。
+下面有最近嘅封鎖紀錄以供參考:',
'clearyourcache' => "'''注意:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。'''
'''Mozilla / Firefox / Safari:''' 㩒住''Shift''掣再撳''重新載入'',又或者㩒''Ctrl-F5''或者''Ctrl-R''(喺Macintosh㩒''Command-R''掣);
'''Konqueror:''' 就咁以撳個''重載''掣,又或者㩒''F5'';
'''Opera:'''喺''工具→喜好設定''之中清佢哋嘅快取,又或者㩒''Alt-F5'';
'''Internet Explorer:''' 㩒住''Ctrl''掣再撳''重新整理'',又或者㩒''Ctrl-F5''掣。",
-'usercssjsyoucanpreview' => "'''提示:'''響儲存前,用「顯示預覽」個掣嚟測試你嘅新CSS/JS。",
+'usercssyoucanpreview' => "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新CSS。",
+'userjsyoucanpreview' => "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新JavaScript。",
'usercsspreview' => "'''請注意你而家只係預覽緊你嘅用戶CSS樣式表。'''
'''內容仍未儲存!'''",
'userjspreview' => "'''請注意你而家只係測試/預覽緊你定義嘅JavaScript。'''
@@ -766,13 +787,16 @@ $1',
'readonlywarning' => "'''錯誤:料庫已經鎖住咗,以便定期保養。而家你唔可以儲起你嘅編輯。'''你可以儲啲文字落一份文字檔先。
管理員嘅解釋: $1",
-'protectedpagewarning' => "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''",
-'semiprotectedpagewarning' => "'''注意:'''呢一頁已經鎖咗,只有已經註冊嘅用戶先至可以改。",
+'protectedpagewarning' => "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''
+最近嘅日誌響下面提供以便參考:",
+'semiprotectedpagewarning' => "'''注意:'''呢一頁已經鎖咗,只有已經註冊嘅用戶先至可以改。
+最近嘅日誌響下面提供以便參考:",
'cascadeprotectedwarning' => "'''警告:'''呢一頁已經鎖咗,只有管理員權限嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
-'titleprotectedwarning' => "'''警告:呢一版已經鎖咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''",
-'templatesused' => '喺呢一頁所用嘅模:',
-'templatesusedpreview' => '喺呢一次預覽所用嘅模:',
-'templatesusedsection' => '喺呢一小節所用嘅模:',
+'titleprotectedwarning' => "'''警告:呢一版已經鎖咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''
+最近嘅日誌響下面提供以便參考:",
+'templatesused' => '呢版用嘅模{{PLURAL:$1|模|模}}:',
+'templatesusedpreview' => '呢一次預覽裏面,用咗下面呢啲{{PLURAL:$1|模|模}}:',
+'templatesusedsection' => '呢一節用咗嘅{{PLURAL:$1|模|模}}:',
'template-protected' => '(保護)',
'template-semiprotected' => '(半保護)',
'hiddencategories' => '呢一版係屬於$1個隱藏類嘅成員:',
@@ -781,16 +805,18 @@ $1',
'nocreatetext' => '{{SITENAME}}已經限制咗起新版嘅能力。
你可以番轉頭去編輯一啲已經存在嘅頁面,或者[[Special:UserLogin|登入或開個新戶口]]。',
'nocreate-loggedin' => '你並無許可權去開新版。',
+'sectioneditnotsupported-title' => '唔支援逐改段',
+'sectioneditnotsupported-text' => '呢版唔支援逐改段。',
'permissionserrors' => '權限錯誤',
'permissionserrorstext' => '根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做呢樣嘢:',
'permissionserrorstext-withaction' => '根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做$2:',
-'recreate-deleted-warn' => "'''警告: 你而家重開一版係先前曾經刪除過嘅。'''
+'recreate-moveddeleted-warn' => "'''警告: 你而家重開一版係先前曾經刪除過嘅。'''
你應該要考慮吓繼續編輯呢一版係唔係適合嘅。
-為咗方便起見,呢一版嘅刪除記錄已經響下面提供:",
-'deleted-notice' => '呢一版已經刪除咗。
-呢版嘅刪除日誌響下面提供咗以便參考。',
-'deletelog-fulllog' => '去睇成個日誌',
+為咗方便起見,呢一版嘅刪除同搬版記錄已經響下面提供:",
+'moveddeleted-notice' => '呢一版已經刪除咗。
+呢版嘅刪除同搬版日誌響下面提供咗以便參考。',
+'log-fulllog' => '睇成個日誌',
'edit-hook-aborted' => '編輯由鈎取消咗。
佢無畀到解釋。',
'edit-gone-missing' => '唔能夠更新頁。
@@ -813,6 +839,7 @@ $1',
'post-expand-template-argument-category' => '包含住略過模參數嘅版',
'parser-template-loop-warning' => '已偵測迴模: [[$1]]',
'parser-template-recursion-depth-warning' => '迴模深度限制超過咗 ($1)',
+'language-converter-depth-warning' => '字體變換器深度限制超過咗 ($1)',
# "Undo" feature
'undo-success' => '呢個編輯可以取消。請檢查一下個差異去確認呢個係你要去做嘅,跟住儲存下面嘅更改去完成編輯。',
@@ -830,9 +857,9 @@ $1',
'viewpagelogs' => '睇呢頁嘅日誌',
'nohistory' => '呢版冇歷史。',
'currentrev' => '最新嘅修訂',
-'currentrev-asof' => '響 $1 嘅家下修訂',
+'currentrev-asof' => '響 $1 嘅最新修訂',
'revisionasof' => '喺$1嘅修訂',
-'revision-info' => '喺$1嘅修訂;修訂自$2', # Additionally available: $3: revision id
+'revision-info' => '喺$1嘅修訂;修訂自$2',
'previousrevision' => '←之前嘅修訂',
'nextrevision' => '新啲嘅修訂→',
'currentrevisionlink' => '最新嘅修訂版本',
@@ -844,7 +871,7 @@ $1',
'histlegend' => "選擇唔同版本:響兩個唔同版本嘅圓框分別撳一下,再撳最底的「比較被選修訂」掣以作比較。<br />
說明:'''({{int:cur}})'''= 同最新修訂版本嘅差別,'''({{int:last}})'''= 同前一個修訂版本嘅差別,'''{{int:minoreditletter}}''' = 小修改。",
'history-fieldset-title' => '瀏覽歷史',
-'deletedrev' => '[刪除咗]',
+'history-show-deleted' => '只顯示刪除咗嘅',
'histfirst' => '最早',
'histlast' => '最近',
'historysize' => '($1 {{PLURAL:$1|byte|bytes}})',
@@ -853,71 +880,112 @@ $1',
# Revision feed
'history-feed-title' => '修訂歷史',
'history-feed-description' => '響哩個wiki嘅哩一頁嘅修訂歷史',
-'history-feed-item-nocomment' => '$1 響 $2', # user at time
+'history-feed-item-nocomment' => '$1 響 $2',
'history-feed-empty' => '要求嘅頁面並唔存在。
佢可能響哩個 wiki 度刪除咗或者改咗名。
試吓[[Special:Search|響哩個wiki度搵]]有關新頁面嘅資料。',
# Revision deletion
-'rev-deleted-comment' => '(評論已經移除咗)',
-'rev-deleted-user' => '(用戶名已經移除咗)',
-'rev-deleted-event' => '(日誌動作已經移除咗)',
-'rev-deleted-text-permission' => "呢頁嘅修訂已經被'''洗咗'''。
-喺[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 刪除日誌]裏面可能會有更詳細嘅資料。",
-'rev-deleted-text-view' => "呢頁嘅修訂已經'''洗咗'''。
+'rev-deleted-comment' => '(評論已經移除咗)',
+'rev-deleted-user' => '(用戶名已經移除咗)',
+'rev-deleted-event' => '(日誌動作已經移除咗)',
+'rev-deleted-user-contribs' => '[用戶名或IP地址拎走咗 - 響貢獻度隱藏咗編輯]',
+'rev-deleted-text-permission' => "呢頁嘅修訂已經被'''洗咗'''。
+喺[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。",
+'rev-deleted-text-unhide' => "呢頁嘅修訂已經被'''洗咗'''。
+喺[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。
+作為管理員,如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
+'rev-suppressed-text-unhide' => "呢頁嘅修訂已經被'''廢止咗'''。
+喺[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。
+作為管理員,如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
+'rev-deleted-text-view' => "呢頁嘅修訂已經'''洗咗'''。
+作為嘅管理員,你可以去睇吓佢;
+喺[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。",
+'rev-suppressed-text-view' => "呢頁嘅修訂已經'''廢止咗'''。
作為嘅管理員,你可以去睇吓佢;
-喺[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可能會有更詳細嘅資料。",
-'rev-deleted-no-diff' => "因為其中一次修訂'''洗咗''',你唔可以睇呢個差異。
-響[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]度可能有更多嘅資料。",
-'rev-deleted-unhide-diff' => "呢頁嘅其中一次修訂已經'''洗咗'''。
-喺[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可能會有更詳細嘅資料。
+喺[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。",
+'rev-deleted-no-diff' => "因為其中一次修訂'''洗咗''',你唔可以睇呢個差異。
+響[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]度可以搵到更多嘅資料。",
+'rev-suppressed-no-diff' => "由於呢頁嘅其中一次修訂已經'''刪除咗''',你唔可以睇呢次修訂。",
+'rev-deleted-unhide-diff' => "呢頁嘅其中一次修訂已經'''洗咗'''。
+喺[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。
作為管理員,如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
-'rev-delundel' => '顯示/隱藏',
-'revisiondelete' => '刪除/反刪除修訂',
-'revdelete-nooldid-title' => '無效嘅目標修訂',
-'revdelete-nooldid-text' => '講清用邊個修訂去做呢樣嘢、
+'rev-suppressed-unhide-diff' => "呢頁嘅其中一次修訂已經'''廢止咗'''。
+喺[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。
+作為管理員,如果你想繼續嘅話,可以仍然[$1 睇番呢次修訂]。",
+'rev-deleted-diff-view' => "呢個差異嘅其中一次修訂已經'''刪除咗'''。
+作為管理員你可以去睇呢個差異;喺[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]裏面可以搵到更詳細嘅資料。",
+'rev-suppressed-diff-view' => "呢個差異嘅其中一次修訂已經'''廢止咗'''。
+作為管理員你可以去睇呢個差異;喺[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]裏面可以搵到更詳細嘅資料。",
+'rev-delundel' => '顯示/隱藏',
+'rev-showdeleted' => '顯示',
+'revisiondelete' => '刪除/反刪除修訂',
+'revdelete-nooldid-title' => '無效嘅目標修訂',
+'revdelete-nooldid-text' => '講清用邊個修訂去做呢樣嘢、
所指定嘅修訂唔存在,或者你試緊去隱藏現時嘅修訂。',
-'revdelete-nologtype-title' => '無畀到紀錄類型',
-'revdelete-nologtype-text' => '你未指定一種紀錄類型去做呢個動作。',
-'revdelete-toomanytargets-title' => '太多目標',
-'revdelete-toomanytargets-text' => '你指定咗太多嘅目標去做呢個動作。',
-'revdelete-nologid-title' => '無效嘅日誌項目',
-'revdelete-nologid-text' => '你未指定一個目標日誌項目去進行呢個動作或者指定嘅項目唔存在。',
-'revdelete-selected' => "'''揀[[:$1]]嘅$2次修訂:'''",
-'logdelete-selected' => "'''揀[[:$1]]嘅日誌事件:'''",
-'revdelete-text' => "'''刪除咗嘅修訂係會仍然出現喺個頁面歷史以及日誌度,但係佢哋嘅文字內容係唔可以供公眾瀏覽。'''
-其他喺{{SITENAME}}嘅管理員仍然可以睇已經隱藏咗嘅內容,同埋可以透過同一個介面去反刪除佢,除非已經設定咗附加嘅限制。
-請確認你肯定去做嘅話,你就要明白到後果,同埋呢個程序符合[[{{MediaWiki:Policy-url}}|政策]]。",
-'revdelete-suppress-text' => "壓制'''只'''應該響下面嘅情況之下進行:
+'revdelete-nologtype-title' => '無畀到紀錄類型',
+'revdelete-nologtype-text' => '你未指定一種紀錄類型去做呢個動作。',
+'revdelete-nologid-title' => '無效嘅日誌項目',
+'revdelete-nologid-text' => '你未指定一個目標日誌項目去進行呢個動作或者指定嘅項目唔存在。',
+'revdelete-no-file' => '指定嘅檔案未存在。',
+'revdelete-show-file-confirm' => '你係咪真係想去睇響$2 $3刪咗 "$1" 嘅檔案修訂?',
+'revdelete-show-file-submit' => '係',
+'revdelete-selected' => "'''揀[[:$1]]嘅$2次修訂:'''",
+'logdelete-selected' => "'''揀[[:$1]]嘅日誌事件:'''",
+'revdelete-text' => "'''刪除咗嘅修訂係會仍然出現喺個頁面歷史以及日誌度,但係佢哋嘅文字內容係唔可以供公眾瀏覽。'''
+其他喺{{SITENAME}}嘅管理員仍然可以睇已經隱藏咗嘅內容,同埋可以透過同一個介面去反刪除佢,除非已經設定咗附加嘅限制。",
+'revdelete-confirm' => '請確認你肯定去做嘅話,你就要明白到後果,同埋呢個程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-suppress-text' => "壓制'''只'''應該響下面嘅情況之下進行:
* 唔合適嘅個人資料
*: ''屋企地址、電話號碼、社群保安號碼等。''",
-'revdelete-legend' => '設定可見性嘅限制',
-'revdelete-hide-text' => '隱藏修訂嘅文字',
-'revdelete-hide-name' => '隱藏動作同目標',
-'revdelete-hide-comment' => '隱藏編輯註解',
-'revdelete-hide-user' => '隱藏編輯者嘅用戶名/IP地址',
-'revdelete-hide-restricted' => '同時壓制由操作員以及其他用戶的資料',
-'revdelete-suppress' => '同時壓制由操作員以及其他用戶的資料',
-'revdelete-hide-image' => '隱藏檔案內容',
-'revdelete-unsuppress' => '響已經恢復咗嘅修訂度移除限制',
-'revdelete-log' => '原因:',
-'revdelete-submit' => '應用到已經選取嘅修訂',
-'revdelete-logentry' => '已經更改[[$1]]嘅修訂可見性',
-'logdelete-logentry' => '已經更改[[$1]]嘅事件可見性',
-'revdelete-success' => "'''已經成功設定修訂嘅可見性。'''",
-'logdelete-success' => "'''事件可見性已經成功噉更新。'''",
-'revdel-restore' => '改可見性',
-'pagehist' => '頁面歷史',
-'deletedhist' => '刪除咗嘅歷史',
-'revdelete-content' => '內容',
-'revdelete-summary' => '編輯摘要',
-'revdelete-uname' => '用戶名',
-'revdelete-restricted' => '已經應用限制到操作員',
-'revdelete-unrestricted' => '已經拎走對於操作員嘅限制',
-'revdelete-hid' => '隱藏 $1',
-'revdelete-unhid' => '唔隱藏 $1',
-'revdelete-log-message' => '$1嘅$2次修訂',
-'logdelete-log-message' => '$1嘅$2個事件',
+'revdelete-legend' => '設定可見性嘅限制',
+'revdelete-hide-text' => '隱藏修訂嘅文字',
+'revdelete-hide-image' => '隱藏檔案內容',
+'revdelete-hide-name' => '隱藏動作同目標',
+'revdelete-hide-comment' => '隱藏編輯註解',
+'revdelete-hide-user' => '隱藏編輯者嘅用戶名/IP地址',
+'revdelete-hide-restricted' => '同時壓制由操作員以及其他用戶的資料',
+'revdelete-radio-same' => '(唔改)',
+'revdelete-radio-set' => '好',
+'revdelete-radio-unset' => '唔好',
+'revdelete-suppress' => '同時壓制由操作員以及其他用戶的資料',
+'revdelete-unsuppress' => '響已經恢復咗嘅修訂度移除限制',
+'revdelete-log' => '原因:',
+'revdelete-submit' => '應用到已經選取嘅{{PLURAL:$1|修訂}}',
+'revdelete-logentry' => '已經更改[[$1]]嘅修訂可見性',
+'logdelete-logentry' => '已經更改[[$1]]嘅事件可見性',
+'revdelete-success' => "'''已經成功設定修訂嘅可見性。'''",
+'revdelete-failure' => "'''修訂可見性更新唔到:'''
+$1",
+'logdelete-success' => "'''事件可見性已經成功噉更新。'''",
+'logdelete-failure' => "'''事件可見性唔能夠更新:'''
+$1",
+'revdel-restore' => '改可見性',
+'pagehist' => '頁面歷史',
+'deletedhist' => '刪除咗嘅歷史',
+'revdelete-content' => '內容',
+'revdelete-summary' => '編輯摘要',
+'revdelete-uname' => '用戶名',
+'revdelete-restricted' => '已經應用限制到操作員',
+'revdelete-unrestricted' => '已經拎走對於操作員嘅限制',
+'revdelete-hid' => '隱藏 $1',
+'revdelete-unhid' => '唔隱藏 $1',
+'revdelete-log-message' => '$1嘅$2次修訂',
+'logdelete-log-message' => '$1嘅$2個事件',
+'revdelete-hide-current' => '隱藏緊響$1 $2嘅項目錯誤:呢個係現時嘅修訂,唔可以隱藏。',
+'revdelete-show-no-access' => '顯示緊響$1 $2嘅項目錯誤:呢個項目標示咗做"限制咗",你對佢無通行權。',
+'revdelete-modify-no-access' => '改緊響$1 $2嘅項目錯誤:呢個項目標示咗做"限制咗",你對佢無通行權。',
+'revdelete-modify-missing' => '改緊項目ID $1錯誤:佢響資料庫度唔見咗!',
+'revdelete-no-change' => '警告:響$1 $2嘅項目已經請求咗可見性設定。',
+'revdelete-concurrent-change' => '改緊響$1 $2嘅項目錯誤:當我哋試吓改佢嘅設定嗰陣,已經畀另一啲人改過。請檢查紀錄。',
+'revdelete-only-restricted' => '隱藏項目響$1 $2嘅項目:你唔可以廢止由管理員檢視,而唔同時再揀另外其中一個可見性選項。',
+'revdelete-reason-dropdown' => '*常用刪除原因
+** 侵犯版權
+** 唔合適嘅個人資料',
+'revdelete-otherreason' => '其它/附加的原因:',
+'revdelete-reasonotherlist' => '其它原因',
+'revdelete-edit-reasonlist' => '編輯刪除原因',
+'revdelete-offender' => '修訂著者:',
# Suppression log
'suppressionlog' => '廢止日誌',
@@ -954,67 +1022,13 @@ $1',
'mergelogpagetext' => '下面係一個最近由一版嘅修訂記錄合併到另一個嘅一覽。',
# Diffs
-'history-title' => '"$1"嘅修訂歷史',
-'difference' => '(修訂之間嘅差異)',
-'lineno' => '第$1行:',
-'compareselectedversions' => '比較被選嘅修訂',
-'visualcomparison' => '可見比較',
-'wikicodecomparison' => 'Wikitext比較',
-'editundo' => '復原',
-'diff-multi' => '($1個中途嘅修訂冇顯示到)',
-'diff-movedto' => '搬到去$1',
-'diff-styleadded' => '加咗$1樣式表',
-'diff-added' => '加咗$1',
-'diff-changedto' => '改到$1',
-'diff-movedoutof' => '拎走自$1',
-'diff-styleremoved' => '拎走咗$1樣式表',
-'diff-removed' => '拎走咗$1',
-'diff-changedfrom' => '改自$1',
-'diff-src' => '源碼',
-'diff-withdestination' => '跟$1目的地',
-'diff-with' => '跟 $1 $2',
-'diff-with-final' => '同 $1 $2',
-'diff-width' => '闊',
-'diff-height' => '高',
-'diff-p' => '段落',
-'diff-blockquote' => '語錄',
-'diff-h1' => '標題(1級)',
-'diff-h2' => '標題(2級)',
-'diff-h3' => '標題(3級)',
-'diff-h4' => '標題(4級)',
-'diff-h5' => '標題(5級)',
-'diff-pre' => '預先設定嘅塊',
-'diff-div' => '部',
-'diff-ul' => '未排列嘅表',
-'diff-ol' => '排列咗嘅表',
-'diff-li' => '表項目',
-'diff-table' => '表',
-'diff-tbody' => '表內容',
-'diff-tr' => '行',
-'diff-td' => '格',
-'diff-th' => '表頭',
-'diff-br' => '斷行',
-'diff-hr' => '橫綫',
-'diff-code' => '電腦碼塊',
-'diff-dl' => '定義表',
-'diff-dt' => '定義字',
-'diff-dd' => '解釋',
-'diff-input' => '輸入',
-'diff-form' => '表',
-'diff-img' => '圖像',
-'diff-span' => '樣式',
-'diff-a' => '連結',
-'diff-i' => '斜體',
-'diff-b' => '粗體',
-'diff-strong' => '強調',
-'diff-em' => '重點',
-'diff-font' => '字體',
-'diff-big' => '大',
-'diff-del' => '刪咗',
-'diff-tt' => '固定闊度',
-'diff-sub' => '下標',
-'diff-sup' => '上標',
-'diff-strike' => '刪除綫',
+'history-title' => '"$1"嘅修訂歷史',
+'difference' => '(修訂之間嘅差異)',
+'lineno' => '第$1行:',
+'compareselectedversions' => '比較被選嘅修訂',
+'showhideselectedversions' => '顯示/隱藏揀咗嘅修訂',
+'editundo' => '復原',
+'diff-multi' => '($1個中途嘅修訂冇顯示到)',
# Search results
'searchresults' => '搵嘢結果',
@@ -1022,28 +1036,25 @@ $1',
'searchresulttext' => '有關搵{{SITENAME}}嘅更多資料請參考[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => '你利用\'\'\'[[:$1]]\'\'\'搵 ([[Special:Prefixindex/$1|全部由 "$1" 開始嘅頁]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|全部連去 "$1" 嘅頁]])',
'searchsubtitleinvalid' => "你利用'''$1'''搵",
-'noexactmatch' => "'''搵唔到到標題為\"\$1\"嘅頁面。''' 你可以而家[[:\$1|開呢個新頁]]。",
-'noexactmatch-nocreate' => "'''搵唔到到標題為\"\$1\"嘅頁面。'''",
'toomanymatches' => '太多嘅配合搵到,請試吓一個唔同嘅查詢',
'titlematches' => '頁面標題符合',
'notitlematches' => '冇頁面嘅標題符合',
'textmatches' => '頁面文字符合',
'notextmatches' => '冇頁面文字符合',
'prevn' => '前$1',
-'nextn' => '後$1',
+'nextn' => '後{{PLURAL:$1|$1}}',
'prevn-title' => '前$1項結果',
'nextn-title' => '後$1項結果',
'shown-title' => '每版顯示$1項結果',
-'viewprevnext' => '去睇 ($1) ($2) ($3)',
+'viewprevnext' => '去睇 ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => '搵嘢選項',
'searchmenu-exists' => "'''響呢個wiki度有一版叫做\"[[:\$1]]\"'''",
'searchmenu-new' => "'''響呢個wiki度開呢版\"[[:\$1]]\"!'''",
'searchhelp-url' => 'Help:目錄',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去睇以呢個做開頭嘅版]]',
'searchprofile-articles' => '內容頁',
-'searchprofile-articles-and-proj' => '內容同專題頁',
-'searchprofile-project' => '專題頁',
-'searchprofile-images' => '檔案',
+'searchprofile-project' => '幫手同計劃頁',
+'searchprofile-images' => '多媒體',
'searchprofile-everything' => '全部嘢',
'searchprofile-advanced' => '進階',
'searchprofile-articles-tooltip' => '響$1度搵',
@@ -1051,8 +1062,6 @@ $1',
'searchprofile-images-tooltip' => '搵檔案',
'searchprofile-everything-tooltip' => '搵全部嘢(包埋討論版)',
'searchprofile-advanced-tooltip' => '響自定空間名度搵',
-'prefs-search-nsdefault' => '用預設值搵:',
-'prefs-search-nscustom' => '搵自定空間名:',
'search-result-size' => '$1 ($2個字)',
'search-result-score' => '相關度: $1%',
'search-redirect' => '(跳轉 $1)',
@@ -1065,11 +1074,12 @@ $1',
'search-mwsuggest-disabled' => '無建議',
'search-relatedarticle' => '有關',
'mwsuggest-disable' => '停用AJAX建議',
+'searcheverything-enable' => '搵全部空間名',
'searchrelated' => '有關',
'searchall' => '全部',
'showingresults' => "'自#'''$2'''起顯示最多'''$1'''個結果。",
'showingresultsnum' => "自#'''$2'''起顯示'''$3'''個結果。",
-'showingresultstotal' => "下面顯示緊由第'''$1{{PLURAL:$4|| - $2}}'''項,總共'''$3'''項嘅結果",
+'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
'nonefound' => "'''注意''': 只有一啲空間名係會作預設搵嘢。試吓''all:''去搵全部嘅嘢(包埋討論版、模等),或用需要嘅空間名做前綴。",
'search-nonefound' => '響個查詢度無結果配合。',
'powersearch' => '進階搵嘢',
@@ -1077,111 +1087,149 @@ $1',
'powersearch-ns' => '喺以下嘅空間名度搵:',
'powersearch-redir' => '彈去清單',
'powersearch-field' => '搵',
+'powersearch-togglelabel' => '查:',
+'powersearch-toggleall' => '全部',
+'powersearch-togglenone' => '無',
'search-external' => '出面搵嘢',
'searchdisabled' => '{{SITENAME}}嘅搜尋功能已經關閉。你可以利用Google嚟搵。不過佢哋對{{SITENAME}}嘅索引可能唔係最新嘅。',
+# Quickbar
+'qbsettings' => '快捷列',
+'qbsettings-none' => '無',
+'qbsettings-fixedleft' => '左邊固定',
+'qbsettings-fixedright' => '右邊固定',
+'qbsettings-floatingleft' => '左邊浮動',
+'qbsettings-floatingright' => '右邊浮動',
+
# Preferences page
-'preferences' => '喜好設定',
-'mypreferences' => '安排與架生',
-'prefs-edits' => '編輯數:',
-'prefsnologin' => '重未登入',
-'prefsnologintext' => '你一定要去<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} 登入]</span>設定好用戶喜好值先。',
-'prefsreset' => '喜好設定已經從儲存空間中重設。',
-'qbsettings' => '快捷列',
-'qbsettings-none' => '無',
-'qbsettings-fixedleft' => '左邊固定',
-'qbsettings-fixedright' => '右邊固定',
-'qbsettings-floatingleft' => '左邊浮動',
-'qbsettings-floatingright' => '右邊浮動',
-'changepassword' => '改密碼',
-'skin' => '畫面',
-'skin-preview' => '預覽',
-'math' => '數',
-'dateformat' => '日期格式',
-'datedefault' => '冇喜好',
-'datetime' => '日期同埋時間',
-'math_failure' => '語法拼砌失敗',
-'math_unknown_error' => '唔知錯乜',
-'math_unknown_function' => '唔知乜函數',
-'math_lexing_error' => 'lexing錯誤',
-'math_syntax_error' => '語法錯誤',
-'math_image_error' => 'PNG 轉換失敗;檢查latex、dvips、gs同埋convert係唔係已經正確咁樣安裝',
-'math_bad_tmpdir' => '唔能夠寫入或建立臨時數目錄',
-'math_bad_output' => '唔能夠寫入或建立輸出數目錄',
-'math_notexvc' => 'texvc 執行檔已經遺失;請睇睇 math/README 去較吓。',
-'prefs-personal' => '用戶簡介',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '監視清單',
-'prefs-watchlist-days' => '監視清單嘅顯示日數:',
-'prefs-watchlist-days-max' => '(最多 7 日)',
-'prefs-watchlist-edits' => '喺加強版監視清單度嘅最多顯示更改數:',
-'prefs-watchlist-edits-max' => '(最多數量: 1000)',
-'prefs-misc' => '雜項',
-'prefs-resetpass' => '改密碼',
-'saveprefs' => '儲存',
-'resetprefs' => '清除未保存嘅更改',
-'restoreprefs' => '恢復全部預設設定',
-'textboxsize' => '編輯中',
-'prefs-edit-boxsize' => '編輯框大細',
-'rows' => '列:',
-'columns' => '行:',
-'searchresultshead' => '搵嘢',
-'resultsperpage' => '每頁顯示嘅擊中數:',
-'contextlines' => '每一擊顯示嘅行數:',
-'contextchars' => '每一行嘅字數:',
-'stub-threshold' => '<a href="#" class="stub">楔位連結</a>格式門檻 (bytes):',
-'recentchangesdays' => '最近更改中嘅顯示日數:',
-'recentchangesdays-max' => '(最多 $1 日)',
-'recentchangescount' => '最近更改、版紀錄同日誌中嘅預設編輯數:',
-'savedprefs' => '你嘅喜好設定已經儲存。',
-'timezonelegend' => '時區:',
-'timezonetext' => '¹你嘅本地時間同伺服器時間 (UTC) 之間嘅差,以鐘頭為單位。',
-'localtime' => '本地時間:',
-'timezoneselect' => '時區:',
-'timezoneuseserverdefault' => '用伺服器預設值',
-'timezoneuseoffset' => '其它 (指定偏移)',
-'timezoneoffset' => '偏移¹:',
-'servertime' => '伺機器時間:',
-'guesstimezone' => '由瀏覽器填上',
-'timezoneregion-africa' => '非洲',
-'timezoneregion-america' => '美洲',
-'timezoneregion-antarctica' => '南極洲',
-'timezoneregion-arctic' => '北極',
-'timezoneregion-asia' => '亞洲',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => '澳洲',
-'timezoneregion-europe' => '歐洲',
-'timezoneregion-indian' => '印度洋',
-'timezoneregion-pacific' => '太平洋',
-'allowemail' => '由其它用戶啟用電子郵件',
-'prefs-searchoptions' => '搵嘢選項',
-'prefs-namespaces' => '空間名',
-'defaultns' => '預設喺呢啲空間名搵嘢:',
-'default' => '預設',
-'files' => '檔案',
-'prefs-custom-css' => '自定 CSS',
-'prefs-custom-js' => '自定 JavaScript',
+'preferences' => '喜好設定',
+'mypreferences' => '安排與架生',
+'prefs-edits' => '編輯數:',
+'prefsnologin' => '重未登入',
+'prefsnologintext' => '你一定要去<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>設定好用戶喜好值先。',
+'changepassword' => '改密碼',
+'prefs-skin' => '畫面',
+'skin-preview' => '預覽',
+'prefs-math' => '數',
+'datedefault' => '冇喜好',
+'prefs-datetime' => '日期同埋時間',
+'prefs-personal' => '用戶簡介',
+'prefs-rc' => '最近更改',
+'prefs-watchlist' => '監視清單',
+'prefs-watchlist-days' => '監視清單嘅顯示日數:',
+'prefs-watchlist-days-max' => '最多 7 日',
+'prefs-watchlist-edits' => '喺加強版監視清單度嘅最多顯示更改數:',
+'prefs-watchlist-edits-max' => '最多數量: 1000',
+'prefs-watchlist-token' => '監視清單幣:',
+'prefs-misc' => '雜項',
+'prefs-resetpass' => '改密碼',
+'prefs-email' => '電郵選項',
+'prefs-rendering' => '外觀',
+'saveprefs' => '儲存',
+'resetprefs' => '清除未保存嘅更改',
+'restoreprefs' => '恢復全部預設設定',
+'prefs-editing' => '編輯中',
+'prefs-edit-boxsize' => '編輯框大細',
+'rows' => '列:',
+'columns' => '行:',
+'searchresultshead' => '搵嘢',
+'resultsperpage' => '每頁顯示嘅擊中數:',
+'contextlines' => '每一擊顯示嘅行數:',
+'contextchars' => '每一行嘅字數:',
+'stub-threshold' => '<a href="#" class="stub">楔位連結</a>格式門檻 (bytes):',
+'recentchangesdays' => '最近更改中嘅顯示日數:',
+'recentchangesdays-max' => '最多 $1 日',
+'recentchangescount' => '預設顯示嘅編輯數:',
+'prefs-help-recentchangescount' => '呢個包埋最近修改、頁歷史同埋日誌紀錄。',
+'prefs-help-watchlist-token' => '響呢欄加入一個秘密匙會生成一個對你監視清單嘅RSS源。
+任何一位知道響呢個欄位嘅匙會睇到你嘅監視清單,請揀一個安全嘅值。
+呢度有一個任意生成嘅值,你係可以去揀嘅: $1',
+'savedprefs' => '你嘅喜好設定已經儲存。',
+'timezonelegend' => '時區:',
+'localtime' => '本地時間:',
+'timezoneuseserverdefault' => '用伺服器預設值',
+'timezoneuseoffset' => '其它 (指定偏移)',
+'timezoneoffset' => '偏移¹:',
+'servertime' => '伺機器時間:',
+'guesstimezone' => '由瀏覽器填上',
+'timezoneregion-africa' => '非洲',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => '南極洲',
+'timezoneregion-arctic' => '北極',
+'timezoneregion-asia' => '亞洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳洲',
+'timezoneregion-europe' => '歐洲',
+'timezoneregion-indian' => '印度洋',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => '由其它用戶啟用電子郵件',
+'prefs-searchoptions' => '搵嘢選項',
+'prefs-namespaces' => '空間名',
+'defaultns' => '否則喺呢啲空間名搵嘢:',
+'default' => '預設',
+'prefs-files' => '檔案',
+'prefs-custom-css' => '自定 CSS',
+'prefs-custom-js' => '自定 JavaScript',
+'prefs-reset-intro' => '你可以用呢版去重設你嘅喜好設定到網站預設值。呢個動作無得番轉頭。',
+'prefs-emailconfirm-label' => '電郵確認:',
+'prefs-textboxsize' => '編輯窗大細',
+'youremail' => '電郵:',
+'username' => '用戶名:',
+'uid' => '用戶 ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|一|多}}組嘅成員:',
+'prefs-registration' => '註冊時間:',
+'yourrealname' => '真名:',
+'yourlanguage' => '話:',
+'yourvariant' => '變換:',
+'yournick' => '新花名:',
+'prefs-help-signature' => '響討論版嘅評論應該要用 "<nowiki>~~~~</nowiki>" 簽名,噉就會轉做你嘅簽名同埋一個時間截記。',
+'badsig' => '無效嘅程式碼簽名。檢查吓 HTML 有無錯。',
+'badsiglength' => '你嘅花名太長喇。
+唔長得過$1個字元。',
+'yourgender' => '性別:',
+'gender-unknown' => '未指定',
+'gender-male' => '男',
+'gender-female' => '女',
+'prefs-help-gender' => '可選: 用嚟整軟件性別指定。呢項資料將會被公開。',
+'email' => '電郵',
+'prefs-help-realname' => '真名可以唔填。
+如果你畀埋佢,有需要嘅時候會用佢來標示你嘅工夫。',
+'prefs-help-email' => '電郵地址可以唔填,但當你唔記得咗你個密碼嗰陣需要利用電郵地址將新密碼重設寄番畀你。亦可以響人哋唔知你電郵地址嘅情況之下都可以聯絡你。',
+'prefs-help-email-required' => '需要電郵地址。',
+'prefs-info' => '基本資料',
+'prefs-i18n' => '國際化',
+'prefs-signature' => '簽名',
+'prefs-dateformat' => '日期格式',
+'prefs-timeoffset' => '時間偏移',
+'prefs-advancedediting' => '進階選項',
+'prefs-advancedrc' => '進階選項',
+'prefs-advancedrendering' => '進階選項',
+'prefs-advancedsearchoptions' => '進階選項',
+'prefs-advancedwatchlist' => '進階選項',
+'prefs-display' => '顯示選項',
+'prefs-diffs' => '差異',
# User rights
-'userrights' => '用戶權限管理', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '管理用戶組',
-'userrights-user-editname' => '輸入一個用戶名:',
-'editusergroup' => '編輯用戶組',
-'editinguser' => "改緊用戶'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 嘅用戶權限",
-'userrights-editusergroup' => '編輯用戶組',
-'saveusergroups' => '儲存用戶組',
-'userrights-groupsmember' => '屬於:',
-'userrights-groups-help' => '你可以改呢位用戶所屬嘅組:
+'userrights' => '用戶權限管理',
+'userrights-lookup-user' => '管理用戶組',
+'userrights-user-editname' => '輸入一個用戶名:',
+'editusergroup' => '編輯用戶組',
+'editinguser' => "改緊用戶'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 嘅用戶權限",
+'userrights-editusergroup' => '編輯用戶組',
+'saveusergroups' => '儲存用戶組',
+'userrights-groupsmember' => '屬於:',
+'userrights-groupsmember-auto' => '固有屬於:',
+'userrights-groups-help' => '你可以改呢位用戶所屬嘅組:
* 剔咗嘅盒代表個用戶係屬於嗰組。
* 未剔嘅盒代表個用戶唔係屬於嗰組。
* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。',
-'userrights-reason' => '原因:',
-'userrights-no-interwiki' => '你並無權限去編輯響其它wiki嘅用戶權限。',
-'userrights-nodatabase' => '資料庫$1唔存在或者唔係本地嘅。',
-'userrights-nologin' => '你一定要以操作員戶口[[Special:UserLogin|登入]]咗之後先可以指定用戶權限。',
-'userrights-notallowed' => '你嘅戶口無權限去指定用戶權限。',
-'userrights-changeable-col' => '你可以改嘅組',
-'userrights-unchangeable-col' => '你唔可以改嘅組',
+'userrights-reason' => '原因:',
+'userrights-no-interwiki' => '你並無權限去編輯響其它wiki嘅用戶權限。',
+'userrights-nodatabase' => '資料庫$1唔存在或者唔係本地嘅。',
+'userrights-nologin' => '你一定要以操作員戶口[[Special:UserLogin|登入]]咗之後先可以指定用戶權限。',
+'userrights-notallowed' => '你嘅戶口無權限去指定用戶權限。',
+'userrights-changeable-col' => '你可以改嘅組',
+'userrights-unchangeable-col' => '你唔可以改嘅組',
# Groups
'group' => '組:',
@@ -1234,6 +1282,7 @@ $1',
'right-bigdelete' => '刪大量歷史嘅版',
'right-deleterevision' => '刪同反刪版嘅指定修訂',
'right-deletedhistory' => '睇刪咗嘅項目,唔包同埋嘅字',
+'right-deletedtext' => '睇刪咗嘅修訂度嘅已刪嘅字同更改',
'right-browsearchive' => '搵刪咗嘅版',
'right-undelete' => '反刪版',
'right-suppressrevision' => '睇同恢復由操作員隱藏嘅修訂',
@@ -1247,6 +1296,8 @@ $1',
'right-editprotected' => '編輯保護版(無連串保護)',
'right-editinterface' => '編輯用戶界面',
'right-editusercssjs' => '編輯其他用戶嘅CSS同埋JavaScript檔',
+'right-editusercss' => '編輯其他用戶嘅CSS檔',
+'right-edituserjs' => '編輯其他用戶嘅JavaScript檔',
'right-rollback' => '快速反轉上位用戶對某一版嘅編輯',
'right-markbotedits' => '標示反轉編輯做機械人編輯',
'right-noratelimit' => '唔受利用率限制影響',
@@ -1263,6 +1314,8 @@ $1',
'right-siteadmin' => '鎖同解鎖資料庫',
'right-reset-passwords' => '重設其他用戶嘅密碼',
'right-override-export-depth' => '倒出包含有五層深連版嘅頁面',
+'right-versiondetail' => '顯示伸展軟件版本嘅資料',
+'right-sendemail' => '寄電郵畀其他用戶',
# User rights log
'rightslog' => '用戶權限日誌',
@@ -1312,6 +1365,15 @@ $1',
'recentchanges-legend' => '最近更改選項',
'recentchangestext' => '追蹤對哩一個 wiki 嘅最後更改。',
'recentchanges-feed-description' => '追蹤對哩一個 wiki 度呢個集合嘅最後更改。',
+'recentchanges-label-legend' => '圖例: $1',
+'recentchanges-legend-newpage' => '$1 - 新版',
+'recentchanges-label-newpage' => '呢次編輯開咗一個新版',
+'recentchanges-legend-minor' => '$1 - 細編輯',
+'recentchanges-label-minor' => '呢個係一個細編輯',
+'recentchanges-legend-bot' => '$1 - 機械人編輯',
+'recentchanges-label-bot' => '呢次編輯係由機械人進行',
+'recentchanges-legend-unpatrolled' => '$1 - 未巡查過嘅編輯',
+'recentchanges-label-unpatrolled' => '呢次編輯重未巡查過',
'rcnote' => "以下係響$4 $5,近'''$2'''日嘅最後'''$1'''次修改。",
'rcnotefrom' => "以下係自'''$2'''嘅更改(顯示到'''$1''')。",
'rclistfrom' => '顯示由$1嘅新更改',
@@ -1338,6 +1400,8 @@ $1',
# Recent changes linked
'recentchangeslinked' => '連結頁嘅更改',
+'recentchangeslinked-feed' => '連結頁嘅更改',
+'recentchangeslinked-toolbox' => '連結頁嘅更改',
'recentchangeslinked-title' => '對「$1」有關嘅更改',
'recentchangeslinked-noresult' => '響呢一段時間內連結頁並無更改。',
'recentchangeslinked-summary' => "呢一個特別頁列示咗''由''所畀到嘅一版連結到頁嘅最近更改(或者係指定分類嘅成員)。
@@ -1348,8 +1412,8 @@ $1',
# Upload
'upload' => '上載檔案',
'uploadbtn' => '上載檔案',
-'reupload' => '再上載',
'reuploaddesc' => '取消上載再返到去上載表格',
+'upload-tryagain' => '遞交改咗嘅檔案描述',
'uploadnologin' => '重未登入',
'uploadnologintext' => '你必須先[[Special:UserLogin|登入]]去上載檔案。',
'upload_directory_missing' => '嗰個上載嘅目錄 ($1) 唔見咗,唔可以由網頁伺服器建立。',
@@ -1381,6 +1445,7 @@ $1',
'minlength1' => '檔名必須最少要有一個字。',
'illegalfilename' => '檔名「$1」含有頁面標題所唔允許嘅字。請試下改檔名再上載。',
'badfilename' => '檔名已經更改成「$1」。',
+'filetype-mime-mismatch' => '檔案擴展名唔搭MIME類型。',
'filetype-badmime' => '「$1」嘅MIME類型檔案係唔容許上載嘅。',
'filetype-bad-ie-mime' => '唔可以上載呢個檔案,因為 Internet Explorer 會將佢偵測做 "$1",佢係一種唔容許同埋有潛在危險性嘅檔案類型。',
'filetype-unwanted-type' => "'''\".\$1\"'''係一種唔需要嘅檔案類型。
@@ -1398,7 +1463,6 @@ $1',
* 上載檔案嘅檔名: '''<tt>[[:$1]]</tt>'''
* 現有檔案嘅檔名: '''<tt>[[:$2]]</tt>'''
請揀一個唔同嘅名。",
-'fileexists-thumb' => "<center>'''已經存在嘅檔案'''</center>",
'fileexists-thumbnail-yes' => "呢個檔案好似係一幅圖像縮細咗嘅版本''(縮圖)''。 [[$1|thumb]]
請檢查清楚個檔案'''<tt>[[:$1]]</tt>'''。
如果檢查咗嘅檔案係同原本幅圖個大細係一樣嘅話,就唔使再上載多一幅縮圖。",
@@ -1411,6 +1475,7 @@ $1',
'file-deleted-duplicate' => '一個同名嘅檔案 ([[$1]]) 響之前刪除過。你應該響重新上載之前檢查一下嗰個檔案嘅刪除紀錄。',
'successfulupload' => '成功嘅上載',
'uploadwarning' => '上載警告',
+'uploadwarning-text' => '請修改下面嘅檔案描述再重試。',
'savefile' => '儲存檔案',
'uploadedimage' => '上載咗"[[$1]]"',
'overwroteimage' => '已經上載咗"[[$1]]"嘅新版本',
@@ -1418,12 +1483,15 @@ $1',
'uploaddisabledtext' => '檔案上載已經停用。',
'php-uploaddisabledtext' => 'PHP 檔案上載已經停用。請檢查 file_uploads 設定。',
'uploadscripted' => '呢個檔案包含可能會誤被瀏覽器解釋執行嘅 HTML 或 script 代碼。',
-'uploadcorrupt' => '呢個檔案已損壞或係用咗錯誤嘅副檔名。請檢查吓個檔案,然後再試下上載多次。',
'uploadvirus' => '呢個檔案有病毒!
詳情:$1',
+'upload-source' => '來源檔案',
'sourcefilename' => '來源檔名:',
+'sourceurl' => '來源網址:',
'destfilename' => '目標檔名:',
'upload-maxfilesize' => '檔案最大限制大細: $1',
+'upload-description' => '檔案描述',
+'upload-options' => '上載選項',
'watchthisupload' => '監視呢個檔案',
'filewasdeleted' => '呢個檔案所使用嘅名曾經上載後,跟住就刪除咗。你應該響重新上載佢之前檢查吓$1。',
'upload-wasdeleted' => "'''警告: 你而家上載嘅一個檔案係先前曾經刪除過嘅。'''
@@ -1432,12 +1500,43 @@ $1',
為咗方便起見,呢個檔案嘅刪除記錄已經響下面提供:",
'filename-bad-prefix' => "你上載嘅檔名係以'''\"\$1\"'''做開頭,通常呢種無含意嘅檔名係響數碼相機度自動編排。請響你個檔案度揀過一個更加有意義嘅檔名。",
-'upload-proto-error' => '唔正確嘅協議',
-'upload-proto-error-text' => '遙遠上載需要一個以 <code>http://</code> 或者 <code>ftp://</code> 作為開頭嘅URL。',
-'upload-file-error' => '內部錯誤',
-'upload-file-error-text' => '當響伺服器度建立一個暫存檔時發生咗一個內部錯誤。請聯絡一位[[Special:ListUsers/sysop|管理員]]。',
-'upload-misc-error' => '未知嘅上載錯誤',
-'upload-misc-error-text' => '響上載時發生咗未知嘅錯誤。請確認輸入咗嘅URL係可以訪問嘅,之後再試多一次。如果重有問題嘅話,請聯絡一位[[Special:ListUsers/sysop|管理員]]。',
+'upload-proto-error' => '唔正確嘅協議',
+'upload-proto-error-text' => '遙遠上載需要一個以 <code>http://</code> 或者 <code>ftp://</code> 作為開頭嘅URL。',
+'upload-file-error' => '內部錯誤',
+'upload-file-error-text' => '當響伺服器度建立一個暫存檔時發生咗一個內部錯誤。請聯絡一位[[Special:ListUsers/sysop|管理員]]。',
+'upload-misc-error' => '未知嘅上載錯誤',
+'upload-misc-error-text' => '響上載時發生咗未知嘅錯誤。請確認輸入咗嘅URL係可以訪問嘅,之後再試多一次。如果重有問題嘅話,請聯絡一位[[Special:ListUsers/sysop|管理員]]。',
+'upload-too-many-redirects' => '個URL有太多跳轉',
+'upload-unknown-size' => '未知嘅大細',
+'upload-http-error' => '一個HTTP錯誤發生咗: $1',
+
+# img_auth script messages
+'img-auth-accessdenied' => '拒絕通行',
+'img-auth-nopathinfo' => 'PATH_INFO唔見咗。
+你嘅伺服器重未設定呢個資料。
+佢可能係CGI為本,唔支援img_auth。
+睇吓 http://www.mediawiki.org/wiki/Manual:Image_Authorization。',
+'img-auth-notindir' => '所請求嘅路徑唔響個已經設定咗嘅上載目錄。',
+'img-auth-badtitle' => '唔能夠由"$1"整一個有效標題。',
+'img-auth-nologinnWL' => '你而家無登入,"$1"唔響個白名單度。',
+'img-auth-nofile' => '檔案"$1"唔存在。',
+'img-auth-isdir' => '你試過通行一個目錄"$1"。
+只係可以通行檔案。',
+'img-auth-streaming' => '串流緊"$1"。',
+'img-auth-public' => 'img_auth.php 嘅功能係由一個公共 wiki 度輸出檔案。
+呢個 wiki 係設定咗做一個公共 wiki。
+基於保安最佳化,img_auth.php已經停用咗。',
+'img-auth-noread' => '用戶無通行去讀"$1"。',
+
+# HTTP errors
+'http-invalid-url' => '無效嘅URL:$1',
+'http-invalid-scheme' => '有 "$1" 嘅URL唔支援。',
+'http-request-error' => '有個未知嘅錯誤令HTTP請求失敗。',
+'http-read-error' => 'HTTP讀取錯誤。',
+'http-timed-out' => 'HTTP請求已過時。',
+'http-curl-error' => '擷取URL嗰陣出錯:$1',
+'http-host-unreachable' => '到唔到URL。',
+'http-bad-status' => '當做緊HTTP請求嗰陣出現咗問題:$1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => '唔可以到嗰個URL',
@@ -1446,6 +1545,7 @@ $1',
'upload-curl-error28-text' => '個網站用咗太多時間回應。請檢查個網站已經係上咗綫,等多一陣然後再試過。你可以響冇咁繁忙嘅時間再試。',
'license' => '協議:',
+'license-header' => '協議',
'nolicense' => '未揀',
'license-nopreview' => '(無預覽可以用得到)',
'upload_source_url' => ' (啱嘅,公開嘅網址)',
@@ -1466,6 +1566,7 @@ $1',
'listfiles_count' => '版本',
# File description page
+'file-anchor-link' => '檔案',
'filehist' => '檔案歷史',
'filehist-help' => '撳個日期/時間去睇響嗰個時間出現過嘅檔案。',
'filehist-deleteall' => '刪除全部',
@@ -1480,6 +1581,7 @@ $1',
'filehist-dimensions' => '尺寸',
'filehist-filesize' => '檔案大細',
'filehist-comment' => '註解',
+'filehist-missing' => '檔案遺失',
'imagelinks' => '檔案連結',
'linkstoimage' => '以下嘅$1個頁面連結到呢個檔案:',
'linkstoimage-more' => '多過$1版連過去呢個檔案。
@@ -1489,15 +1591,16 @@ $1',
'morelinkstoimage' => '去睇連到呢個檔案嘅[[Special:WhatLinksHere/$1|更多連結]]。',
'redirectstofile' => '下面嘅$1個檔案跳轉到呢個檔案:',
'duplicatesoffile' => '下面嘅$1個檔案係同呢個檔案重覆 ([[Special:FileDuplicateSearch/$2|更多細節]]):',
-'sharedupload' => '呢個檔案係出自$1,可以喺其他計劃中使用。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '更多資訊請睇$1。',
-'shareduploadwiki-desc' => '佢響嗰邊嘅$1描述響下面度顯示。',
-'shareduploadwiki-linktext' => '檔案描述頁面',
-'noimage' => '冇同名嘅檔案存在,你可以$1。',
-'noimage-linktext' => '上載一個',
+'sharedupload' => '呢個檔案係出自$1,可以喺其他計劃中使用。',
+'sharedupload-desc-there' => '呢個檔案係出自$1,可以喺其他計劃中使用。
+更多資訊請睇[$2 檔案描述頁]。',
+'sharedupload-desc-here' => '呢個檔案係出自$1,可以喺其他計劃中使用。
+佢響嗰邊嘅[$2 檔案描述頁]響下面度顯示。',
+'filepage-nofile' => '冇同名嘅檔案存在。',
+'filepage-nofile-link' => '冇同名嘅檔案存在,但係你可以[$1 上載佢]。',
'uploadnewversion-linktext' => '上載呢個檔案嘅一個新版本',
-'shared-repo-from' => '出自 $1', # $1 is the repository name
-'shared-repo' => '一個共用檔案庫', # used when shared-repo-NAME does not exist
+'shared-repo-from' => '出自 $1',
+'shared-repo' => '一個共用檔案庫',
# File reversion
'filerevert' => '回復$1',
@@ -1527,6 +1630,7 @@ $1',
** 侵犯版權
** 重覆檔案',
'filedelete-edit-reasonlist' => '編輯刪除原因',
+'filedelete-maintenance' => '響維護嗰陣已經暫時停用檔案刪除同恢復。',
# MIME search
'mimesearch' => 'MIME 搜尋',
@@ -1547,7 +1651,7 @@ $1',
# Random page
'randompage' => '隨便一版',
-'randompage-nopages' => '響 "$1" 空間名度搵唔到一版。',
+'randompage-nopages' => '響下面嘅{{PLURAL:$2|空間名}}度搵唔到一版: $1',
# Random redirect
'randomredirect' => '隨便彈',
@@ -1559,6 +1663,7 @@ $1',
'statistics-header-edits' => '編輯統計',
'statistics-header-views' => '參看統計',
'statistics-header-users' => '用戶統計',
+'statistics-header-hooks' => '其它統計',
'statistics-articles' => '內容頁',
'statistics-pages' => '頁',
'statistics-pages-desc' => '響wiki上嘅全部頁,包埋討論頁、跳轉等',
@@ -1586,8 +1691,8 @@ Template:搞清楚',
'brokenredirects' => '破碎嘅跳轉',
'brokenredirectstext' => '以下嘅跳轉係指向唔存在嘅頁面:',
-'brokenredirects-edit' => '(編輯)',
-'brokenredirects-delete' => '(刪除)',
+'brokenredirects-edit' => '編輯',
+'brokenredirects-delete' => '刪除',
'withoutinterwiki' => '無語言連結嘅頁',
'withoutinterwiki-summary' => '以下嘅頁面係重未有連結到其它嘅語言版本。',
@@ -1693,7 +1798,7 @@ Template:搞清楚',
# Special:Categories
'categories' => '類',
-'categoriespagetext' => '下面嘅類有版或媒體。
+'categoriespagetext' => '下面嘅{{PLURAL:$1|類}}有版或媒體。
[[Special:UnusedCategories|未用類]]唔會響呢度列示。
請同時參閱[[Special:WantedCategories|需要嘅分類]]。',
'categoriesfrom' => '顯示由呢項起嘅類:',
@@ -1701,8 +1806,9 @@ Template:搞清楚',
'special-categories-sort-abc' => '跟字母排',
# Special:DeletedContributions
-'deletedcontributions' => '已經刪除咗嘅用戶貢獻',
-'deletedcontributions-title' => '已經刪除咗嘅用戶貢獻',
+'deletedcontributions' => '已經刪除咗嘅用戶貢獻',
+'deletedcontributions-title' => '已經刪除咗嘅用戶貢獻',
+'sp-deletedcontributions-contribs' => '貢獻',
# Special:LinkSearch
'linksearch' => '外部連結',
@@ -1718,6 +1824,16 @@ Template:搞清楚',
'listusersfrom' => '顯示由呢個字開始嘅用戶:',
'listusers-submit' => '顯示',
'listusers-noresult' => '搵唔到用戶。',
+'listusers-blocked' => '(封鎖咗)',
+
+# Special:ActiveUsers
+'activeusers' => '活躍用戶名單',
+'activeusers-intro' => '呢個係響最近$1日之內有一啲動作嘅用戶名單。',
+'activeusers-count' => '響$3日之內嘅$1次編輯',
+'activeusers-from' => '顯示用戶開始於:',
+'activeusers-hidebots' => '隱藏機械人',
+'activeusers-hidesysops' => '隱藏管理員',
+'activeusers-noresult' => '搵唔到用戶。',
# Special:Log/newusers
'newuserlogpage' => '使用者開戶記錄',
@@ -1728,17 +1844,23 @@ Template:搞清楚',
'newuserlog-autocreate-entry' => '自動建立咗戶口',
# Special:ListGroupRights
-'listgrouprights' => '用戶組權限',
-'listgrouprights-summary' => '下面係一個響呢個wiki定義咗嘅用戶權限一覽,同埋佢哋嘅存取權。
+'listgrouprights' => '用戶組權限',
+'listgrouprights-summary' => '下面係一個響呢個wiki定義咗嘅用戶權限一覽,同埋佢哋嘅存取權。
更多有關個別權限嘅[[{{MediaWiki:Listgrouprights-helppage}}|更多細節]]可以響嗰度搵到。',
-'listgrouprights-group' => '組',
-'listgrouprights-rights' => '權',
-'listgrouprights-helppage' => 'Help:組權限',
-'listgrouprights-members' => '(成員名單)',
-'listgrouprights-addgroup' => '加入嘅{{PLURAL:$2|一|多}}組: $1',
-'listgrouprights-removegroup' => '拎走嘅{{PLURAL:$2|一|多}}組: $1',
-'listgrouprights-addgroup-all' => '加入全部組',
-'listgrouprights-removegroup-all' => '拎走全部組',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">畀咗嘅權限</span>
+* <span class="listgrouprights-revoked">拎咗嘅權限</span>',
+'listgrouprights-group' => '組',
+'listgrouprights-rights' => '權',
+'listgrouprights-helppage' => 'Help:組權限',
+'listgrouprights-members' => '(成員名單)',
+'listgrouprights-addgroup' => '加入嘅{{PLURAL:$2|一|多}}組: $1',
+'listgrouprights-removegroup' => '拎走嘅{{PLURAL:$2|一|多}}組: $1',
+'listgrouprights-addgroup-all' => '加入全部組',
+'listgrouprights-removegroup-all' => '拎走全部組',
+'listgrouprights-addgroup-self' => '加入嘅{{PLURAL:$2|一|多}}組到自己嘅戶口: $1',
+'listgrouprights-removegroup-self' => '響自己嘅戶口度拎走嘅{{PLURAL:$2|一|多}}組: $1',
+'listgrouprights-addgroup-self-all' => '加入全部組到自己嘅戶口度',
+'listgrouprights-removegroup-self-all' => '響自己嘅戶口度可以拎走全部組',
# E-mail user
'mailnologin' => '冇傳送地址',
@@ -1810,7 +1932,7 @@ Template:搞清楚',
'enotif_lastvisited' => '你上次視察以嚟嘅修改請睇$1。',
'enotif_lastdiff' => '睇$1去睇吓呢一次更改。',
'enotif_anon_editor' => '匿名用戶$1',
-'enotif_body' => '$WATCHINGUSERNAME先生/小姐你好,
+'enotif_body' => '$WATCHINGUSERNAME先生/小姐你好,
{{SITENAME}}嘅頁面$PAGETITLE已經由$PAGEEDITOR喺$PAGEEDITDATE$CHANGEDORCREATED,現時修訂請睇$PAGETITLE_URL。
@@ -1827,7 +1949,9 @@ wiki: $PAGEEDITOR_WIKI
{{SITENAME}}通知系統
--
-要修改你嘅監視清單設定,請睇{{fullurl:{{ns:special}}:Watchlist/edit}}
+要修改你嘅監視清單設定,請睇{{fullurl:{{#special:Watchlist}}/edit}}
+
+要刪除你嘅監視清單度嘅呢一版,請睇$UNWATCHURL
回饋及更多幫助:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1841,10 +1965,11 @@ wiki: $PAGEEDITOR_WIKI
'exblank' => '頁面之前係空嘅',
'delete-confirm' => '刪除"$1"',
'delete-legend' => '刪除',
-'historywarning' => '警告:你要刪除嘅頁面有歷史版本:',
+'historywarning' => '警告:你要刪除嘅頁面有大約$1次嘅修訂:',
'confirmdeletetext' => '你準備刪除一個頁面或者圖像,包括佢嘅所有歷史版本。
請確認你打算噉做,而且你知道後果係點,加上確認你噉做冇違反到[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => '操作完成',
+'actionfailed' => '操作失敗',
'deletedtext' => '"<nowiki>$1</nowiki>"已經刪除。最近嘅刪除記錄請睇$2。',
'deletedarticle' => '已經刪除"[[$1]]"',
'suppressedarticle' => '已經廢止"[[$1]]"',
@@ -1864,18 +1989,19 @@ wiki: $PAGEEDITOR_WIKI
'delete-warning-toobig' => '呢一版有一個好大量嘅編輯歷史,過咗$1次修訂。刪除佢可能會擾亂{{SITENAME}}嘅資料庫操作;響繼續嗰陣請小心。',
# Rollback
-'rollback' => '反轉修改',
-'rollback_short' => '反轉',
-'rollbacklink' => '反轉',
-'rollbackfailed' => '反轉唔到',
-'cantrollback' => '反轉唔到;上一位貢獻者係唯一修改過呢版嘅人。',
-'alreadyrolled' => '無法反轉[[User:$2|$2]]([[User talk:$2|留言]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])對[[:$1]]嘅最後編輯;有人已經修改過或者反轉咗呢個頁面。
+'rollback' => '反轉修改',
+'rollback_short' => '反轉',
+'rollbacklink' => '反轉',
+'rollbackfailed' => '反轉唔到',
+'cantrollback' => '反轉唔到;上一位貢獻者係唯一修改過呢版嘅人。',
+'alreadyrolled' => '無法反轉[[User:$2|$2]]([[User talk:$2|留言]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])對[[:$1]]嘅最後編輯;有人已經修改過或者反轉咗呢個頁面。
上次對呢版嘅編輯係由[[User:$3|$3]]([[User talk:$3|留言]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])做嘅。',
-'editcomment' => "編輯摘要係:「'''$1'''」。", # only shown if there is an edit comment
-'revertpage' => '已經反轉由[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])所寫嘅編輯到[[User:$1|$1]]嘅最後修訂。', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '已經反轉由$1所寫嘅編輯;恢復到$2嘅最後修訂。',
-'sessionfailure' => '你嘅登入會話 (session) 好似有啲問題;
+'editcomment' => "編輯摘要係:「'''$1'''」。",
+'revertpage' => '已經反轉由[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])所寫嘅編輯到[[User:$1|$1]]嘅最後修訂。',
+'revertpage-nouser' => '已經反轉由(刪咗用戶名)所寫嘅編輯到[[User:$1|$1]]所寫嘅最後修訂。',
+'rollback-success' => '已經反轉由$1所寫嘅編輯;恢復到$2嘅最後修訂。',
+'sessionfailure' => '你嘅登入會話 (session) 好似有啲問題;
為咗防止會話劫持,呢個操作已經取消。
請返去之前嗰版,重新載入嗰版然後再試。',
@@ -1893,7 +2019,7 @@ wiki: $PAGEEDITOR_WIKI
'protectexpiry' => '到期:',
'protect_expiry_invalid' => '到期時間唔正確。',
'protect_expiry_old' => '到期時間係響之前過去嘅。',
-'protect-unchain' => '解除移動權限嘅鎖定',
+'protect-unchain-permissions' => '解除更多嘅保護選項',
'protect-text' => "你可以喺呢度睇到同修改頁面'''<nowiki>$1</nowiki>'''嘅保護等級。",
'protect-locked-blocked' => "當你響被封鎖嗰陣唔可以改呢版嘅保護等級。
呢個係'''$1'''版嘅現時設定:",
@@ -1922,7 +2048,7 @@ wiki: $PAGEEDITOR_WIKI
** 反生產性編輯戰
** 高流量頁',
'protect-edit-reasonlist' => '編輯保護原因',
-'protect-expiry-options' => '一個鐘頭:1 hour,一日:1 day,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,終身:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '一個鐘頭:1 hour,一日:1 day,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,終身:infinite',
'restriction-type' => '許可:',
'restriction-level' => '限制等級:',
'minimum-size' => '最小大細',
@@ -1959,6 +2085,7 @@ wiki: $PAGEEDITOR_WIKI
'undelete-nodiff' => '搵唔到之前嘅修訂。',
'undeletebtn' => '救返',
'undeletelink' => '睇/救',
+'undeleteviewlink' => '睇',
'undeletereset' => '重設',
'undeleteinvert' => '反選',
'undeletecomment' => '原因:',
@@ -1996,19 +2123,24 @@ $1',
'contributions-title' => '$1嘅用戶貢獻',
'mycontris' => '個人貢獻',
'contribsub2' => '$1嘅貢獻 ($2)',
-'nocontribs' => '搵唔到符合呢啲條件嘅修改。', # Optional parameter: $1 is the user name
+'nocontribs' => '搵唔到符合呢啲條件嘅修改。',
'uctop' => '(最頂)',
'month' => '由呢個月 (同更早):',
'year' => '由呢一年 (同更早):',
-'sp-contributions-newbies' => '只顯示新戶口嘅貢獻',
-'sp-contributions-newbies-sub' => '新戶口嘅貢獻',
-'sp-contributions-newbies-title' => '新戶口嘅用戶貢獻',
-'sp-contributions-blocklog' => '封鎖日誌',
-'sp-contributions-logs' => '日誌',
-'sp-contributions-search' => '搵貢獻',
-'sp-contributions-username' => 'IP地址或用戶名:',
-'sp-contributions-submit' => '搵',
+'sp-contributions-newbies' => '只顯示新戶口嘅貢獻',
+'sp-contributions-newbies-sub' => '新戶口嘅貢獻',
+'sp-contributions-newbies-title' => '新戶口嘅用戶貢獻',
+'sp-contributions-blocklog' => '封鎖日誌',
+'sp-contributions-deleted' => '已經刪除咗嘅用戶貢獻',
+'sp-contributions-logs' => '日誌',
+'sp-contributions-talk' => '傾偈',
+'sp-contributions-userrights' => '用戶權限管理',
+'sp-contributions-blocked-notice' => '呢位用戶現時封鎖緊。
+最近嘅封鎖日誌項目響下面提供以便參考:',
+'sp-contributions-search' => '搵貢獻',
+'sp-contributions-username' => 'IP地址或用戶名:',
+'sp-contributions-submit' => '搵',
# What links here
'whatlinkshere' => '有乜嘢連結來呢度',
@@ -2031,6 +2163,7 @@ $1',
# Block/unblock
'blockip' => '封鎖用戶',
+'blockip-title' => '封鎖用戶',
'blockip-legend' => '封鎖用戶',
'blockiptext' => '使用以下嘅表格嚟去阻止指定嘅IP地址或用戶名嘅寫權限。
僅當僅當為咗避免有版畀人惡意破壞嘅時候先可以使用,而且唔可以違反[[{{MediaWiki:Policy-url}}|政策]]。
@@ -2054,7 +2187,7 @@ $1',
'ipbenableautoblock' => '自動封鎖呢個用戶上次用過嘅IP地址,同埋佢地做過編輯嘅IP地址',
'ipbsubmit' => '封鎖呢位用戶',
'ipbother' => '其它時間:',
-'ipboptions' => '兩個鐘頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,終身:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '兩個鐘頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,終身:infinite',
'ipbotheroption' => '其它',
'ipbotherreason' => '其它/附加嘅原因:',
'ipbhidename' => '響編輯同名單度隱藏用戶名',
@@ -2083,9 +2216,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1次暫時封鎖',
'ipblocklist-sh-addressblocks' => '$1次單IP封鎖',
'ipblocklist-submit' => '搵',
+'ipblocklist-localblock' => '本地封鎖',
+'ipblocklist-otherblocks' => '其它{{PLURAL:$1|封鎖|封鎖}}',
'blocklistline' => '$1,$2已經封鎖咗$3($4)',
'infiniteblock' => '不設期限',
-'expiringblock' => '$1 期滿',
+'expiringblock' => '$1 $2 期滿',
'anononlyblock' => '只限匿名',
'noautoblockblock' => '自動封鎖已經停用',
'createaccountblock' => '封咗開新戶口',
@@ -2099,7 +2234,8 @@ $1',
'contribslink' => '貢獻',
'autoblocker' => '已經自動封鎖,因為你嘅IP地址冇幾耐之前"[[User:$1|$1]]"使用過。$1\\嘅封鎖原因係: 「$2」',
'blocklogpage' => '封鎖日誌',
-'blocklog-fulllog' => '成個封鎖日誌',
+'blocklog-showlog' => '呢位用戶已經響之前被封鎖過。響下面提供咗封鎖紀錄以便參考:',
+'blocklog-showsuppresslog' => '呢位用戶已經響之前被封鎖同隱藏過。響下面提供咗廢止紀錄以便參考:',
'blocklogentry' => '已封鎖[[$1]],到期時間為$2 $3',
'reblock-logentry' => '已改[[$1]]嘅封鎖設定,到期時間為$2 $3',
'blocklogtext' => '呢個係封鎖同埋解封動作嘅日誌。自動封鎖IP地址嘅動作冇列出嚟。去[[Special:IPBlockList|IP封鎖名單]]睇現時生效嘅封鎖名單',
@@ -2118,9 +2254,11 @@ $1',
'ipb_already_blocked' => '"$1"已經封鎖咗',
'ipb-needreblock' => '== 已經封鎖咗 ==
$1已經被封鎖。你係咪想更改呢個設定?',
+'ipb-otherblocks-header' => '其它{{PLURAL:$1|封鎖|封鎖}}',
'ipb_cant_unblock' => '錯誤:搵唔到封鎖ID$1。可能已經解封咗。',
'ipb_blocked_as_range' => '錯誤:個IP $1 無直接封鎖,唔可以解封。但係佢係響 $2 嘅封鎖範圍之內,嗰段範圍係可以解封嘅。',
'ip_range_invalid' => '無效嘅IP範圍',
+'ip_range_toolarge' => '大過 /$1 嘅封鎖範圍係唔容許嘅。',
'blockme' => '封鎖我',
'proxyblocker' => 'Proxy 封鎖器',
'proxyblocker-disabled' => '呢個功能已經停用。',
@@ -2129,6 +2267,8 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'sorbsreason' => '你嘅IP地址已經畀響{{SITENAME}}度用嘅DNSBL列咗做公開代理。',
'sorbs_create_account_reason' => '你嘅IP地址已經畀響{{SITENAME}}度用嘅DNSBL列咗做公開代理。你唔可以開新戶口。',
'cant-block-while-blocked' => '當你被封鎖嗰陣唔可以封鎖其他用戶。',
+'cant-see-hidden-user' => '你試緊封鎖嘅用戶已經封鎖咗或者隱藏咗。
+你而家冇隱藏用戶嘅權限,你唔可以睇或者改呢位用戶嘅封鎖。',
# Developer tools
'lockdb' => '鎖定資料庫',
@@ -2169,6 +2309,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
喺呢啲情況下,需要嘅話你唯有手動搬同合併個頁。",
'movearticle' => '搬頁:',
+'moveuserpage-warning' => "'''警告:'''你將會搬一個用戶版。請留意嗰版搬咗之後個用戶係''唔會''改名。",
'movenologin' => '未登入',
'movenologintext' => '你要係註冊用戶而且要[[Special:UserLogin|登入]]咗先可以搬頁',
'movenotallowed' => '你並無權限去搬版。',
@@ -2179,7 +2320,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'move-watch' => '睇實來源同埋目標版',
'movepagebtn' => '搬頁',
'pagemovedsub' => '搬頁成功',
-'movepage-moved' => '\'\'\'"$1"已經搬到去"$2"\'\'\'', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => '\'\'\'"$1"已經搬到去"$2"\'\'\'',
'movepage-moved-redirect' => '一個跳轉已經開咗。',
'movepage-moved-noredirect' => '已經壓制開個跳轉。',
'articleexists' => '已經有頁面叫嗰個名,或者你揀嘅名唔合法。請揀過第二個名。',
@@ -2220,6 +2361,14 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'imageinvalidfilename' => '個目標檔名係無效嘅',
'fix-double-redirects' => '更新指到原先標題嘅任何跳轉',
'move-leave-redirect' => '留底跳轉',
+'protectedpagemovewarning' => "'''警告:'''呢一版已經鎖咗,淨係得有管理員權限嘅用戶先至可以去搬佢。
+最近嘅日誌響下面提供以便參考:",
+'semiprotectedpagemovewarning' => "'''留意:'''呢一版已經鎖咗,淨係畀註冊咗嘅用戶去搬佢。
+最近嘅日誌響下面提供以便參考:",
+'move-over-sharedrepo' => '== 檔案已經存在 ==
+[[:$1]]已經響共有資源存在,將檔案移動到呢個標題會覆蓋共有資源度嘅檔案。',
+'file-exists-sharedrepo' => '同名檔案已於共享資源存在。
+請選擇另一個檔名。',
# Export
'export' => '倒出/導出/匯出(Export)頁面',
@@ -2241,15 +2390,21 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'export-pagelinks' => '包含到一個深度嘅連結版:',
# Namespace 8 related
-'allmessages' => '系統信息',
-'allmessagesname' => '名稱',
-'allmessagesdefault' => '預設訊息文字',
-'allmessagescurrent' => '現時訊息文字',
-'allmessagestext' => '以下係 MediaWiki 空間名入邊現有系統信息嘅清單。
+'allmessages' => '系統信息',
+'allmessagesname' => '名稱',
+'allmessagesdefault' => '預設訊息文字',
+'allmessagescurrent' => '現時訊息文字',
+'allmessagestext' => '以下係 MediaWiki 空間名入邊現有系統信息嘅清單。
如果想貢獻正宗嘅MediaWiki本地化嘅話,請參閱[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]同埋[http://translatewiki.net translatewiki.net]。',
-'allmessagesnotsupportedDB' => "呢一版唔可以用,因為'''\$wgUseDatabaseMessages'''已經閂咗。",
-'allmessagesfilter' => '信息名過濾(器):',
-'allmessagesmodified' => '只顯示修改過嘅',
+'allmessagesnotsupportedDB' => "呢一版唔可以用,因為'''\$wgUseDatabaseMessages'''已經閂咗。",
+'allmessages-filter-legend' => '過濾',
+'allmessages-filter' => '以自定狀況過濾:',
+'allmessages-filter-unmodified' => '未改過',
+'allmessages-filter-all' => '全部',
+'allmessages-filter-modified' => '改過',
+'allmessages-prefix' => '以前綴過濾:',
+'allmessages-language' => '語言:',
+'allmessages-filter-submit' => '去',
# Thumbnails
'thumbnail-more' => '放大',
@@ -2259,6 +2414,9 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'djvu_no_xml' => '唔能夠響DjVu檔度攞個XML',
'thumbnail_invalid_params' => '唔正確嘅縮圖參數',
'thumbnail_dest_directory' => '唔能夠開目標目錄',
+'thumbnail_image-type' => '圖像類型唔支援',
+'thumbnail_gd-library' => '未完成嘅GD設定: 功能唔見咗 $1',
+'thumbnail_image-missing' => '檔案似乎唔見咗: $1',
# Special:Import
'import' => '倒入頁面',
@@ -2323,6 +2481,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'tooltip-ca-viewsource' => '呢一頁已經被保護。你可以睇吓呢一頁呢原始碼。',
'tooltip-ca-history' => '呢一頁之前嘅修訂',
'tooltip-ca-protect' => '保護呢一頁',
+'tooltip-ca-unprotect' => '唔再保護呢一頁',
'tooltip-ca-delete' => '刪除呢一頁',
'tooltip-ca-undelete' => '將呢個頁面還原到被刪除之前嘅狀態',
'tooltip-ca-move' => '移動呢一頁',
@@ -2333,6 +2492,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'tooltip-search-fulltext' => '搵呢個文字嘅版',
'tooltip-p-logo' => '睇頭版',
'tooltip-n-mainpage' => '睇頭版',
+'tooltip-n-mainpage-description' => '睇頭版',
'tooltip-n-portal' => '關於呢個計劃,你可以做乜,應該要點做',
'tooltip-n-currentevents' => '提供而家發生嘅事嘅背景資料',
'tooltip-n-recentchanges' => '列出呢個 wiki 中嘅最近修改',
@@ -2379,6 +2539,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'chick.css' => '/* 響呢度放 CSS 碼去改用戶用嘅俏畫面 */',
'simple.css' => '/* 響呢度放 CSS 碼去改用戶用嘅簡單畫面 */',
'modern.css' => '/* 響呢度放 CSS 碼去改用戶用嘅摩登畫面 */',
+'vector.css' => '/* 響呢度放 CSS 碼去改用戶用嘅域達畫面 */',
'print.css' => '/* 響呢度放 CSS 碼去改打印輸出 */',
'handheld.css' => '/* 響呢度放 CSS 碼去改響 $wgHandheldStyle 設定手提裝置畫面 */',
@@ -2392,6 +2553,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'chick.js' => '/* 響每一次個頁面載入時,用俏畫面嘅用戶都會載入呢度任何嘅JavaScript */',
'simple.js' => '/* 響每一次個頁面載入時,用簡單畫面嘅用戶都會載入呢度任何嘅JavaScript */',
'modern.js' => '/* 響每一次個頁面載入時,用摩登畫面嘅用戶都會載入呢度任何嘅JavaScript */',
+'vector.js' => '/* 響每一次個頁面載入時,用域達畫面嘅用戶都會載入呢度任何嘅JavaScript */',
# Metadata
'nodublincore' => 'Dublin Core RDF metadata 已經喺呢一個伺服器上停用。',
@@ -2401,10 +2563,12 @@ $1已經被封鎖。你係咪想更改呢個設定?',
# Attribution
'anonymous' => '{{SITENAME}}嘅匿名{{PLURAL:$1|用戶|用戶}}',
'siteuser' => '{{SITENAME}}嘅用戶$1',
-'lastmodifiedatby' => '呢一頁最後響 $1 $2 畀 $3 修改。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}嘅匿名用戶$1',
+'lastmodifiedatby' => '呢一頁最後響 $1 $2 畀 $3 修改。',
'othercontribs' => '以$1嘅作品為基礎。',
'others' => '其他',
'siteusers' => '{{SITENAME}}嘅{{PLURAL:$2|用戶|用戶}}$1',
+'anonusers' => '{{SITENAME}}嘅匿名{{PLURAL:$2|用戶|用戶}} $1',
'creditspage' => '頁面信譽',
'nocredits' => '呢一頁並無任何嘅信譽資料可以提供。',
@@ -2434,6 +2598,7 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'skinname-chick' => '俏',
'skinname-simple' => '簡單',
'skinname-modern' => '摩登',
+'skinname-vector' => 'Vector',
# Math options
'mw_math_png' => '全部用PNG表示',
@@ -2443,11 +2608,22 @@ $1已經被封鎖。你係咪想更改呢個設定?',
'mw_math_modern' => '新式瀏覽器嘅建議選項',
'mw_math_mathml' => '可以嘅話用MathML(實驗中)',
+# Math errors
+'math_failure' => '語法拼砌失敗',
+'math_unknown_error' => '唔知錯乜',
+'math_unknown_function' => '唔知乜函數',
+'math_lexing_error' => 'lexing錯誤',
+'math_syntax_error' => '語法錯誤',
+'math_image_error' => 'PNG 轉換失敗;檢查latex、dvips、gs同埋convert係唔係已經正確咁樣安裝',
+'math_bad_tmpdir' => '唔能夠寫入或建立臨時數目錄',
+'math_bad_output' => '唔能夠寫入或建立輸出數目錄',
+'math_notexvc' => 'texvc 執行檔已經遺失;請睇睇 math/README 去較吓。',
+
# Patrolling
'markaspatrolleddiff' => '標示為已巡查嘅',
'markaspatrolledtext' => '標示呢版做查咗嘅',
'markedaspatrolled' => '已經標示做已巡查嘅',
-'markedaspatrolledtext' => '已經選擇咗嘅修訂已經標示咗做已巡查嘅。',
+'markedaspatrolledtext' => '已經選擇咗[[:$1]]嘅修訂已經標示咗做已巡查嘅。',
'rcpatroldisabled' => '最近修改巡查已經停用',
'rcpatroldisabledtext' => '最近修改嘅巡查功能現時停用中。',
'markedaspatrollederror' => '唔可以標示做已巡查嘅',
@@ -2477,13 +2653,10 @@ $1',
'previousdiff' => '← 上一個差異',
'nextdiff' => '下一個差異 →',
-# Visual comparison
-'visual-comparison' => '可見比較',
-
# Media information
'mediawarning' => "'''警告''':呢個檔案類型可能有一啲惡意嘅程式編碼。
如果執行佢嘅話,你嘅系統可能會被波及。",
-'imagemaxsize' => '限制檔案述頁中嘅圖像細到:',
+'imagemaxsize' => "圖像大細限制:<br />''(用響檔案描述頁)''",
'thumbsize' => '縮圖大細:',
'widthheightpage' => '$1×$2, $3版',
'file-info' => '(檔案大細:$1 ,MIME類型:$2)',
@@ -2492,6 +2665,8 @@ $1',
'svg-long-desc' => '(SVG檔案,表面大細: $1 × $2 像素,檔案大細:$3)',
'show-big-image' => '完整解像度',
'show-big-image-thumb' => '<small>呢個預覽嘅大細: $1 × $2 像素</small>',
+'file-info-gif-looped' => '循環',
+'file-info-gif-frames' => '$1格',
# Special:NewFiles
'newimages' => '新檔案畫廊',
@@ -2552,7 +2727,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '闊',
@@ -2680,14 +2855,14 @@ Variants for Chinese language
'exif-unknowndate' => '未知日期',
-'exif-orientation-1' => '正常', # 0th row: top; 0th column: left
-'exif-orientation-2' => '左右倒轉', # 0th row: top; 0th column: right
-'exif-orientation-3' => '轉一百八十度', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '上下倒轉', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '逆時針轉九十度,再上下倒轉', # 0th row: left; 0th column: top
-'exif-orientation-6' => '順時針轉九十度', # 0th row: right; 0th column: top
-'exif-orientation-7' => '順時針轉九十度,再上下倒轉', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '逆時針轉九十度', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '正常',
+'exif-orientation-2' => '左右倒轉',
+'exif-orientation-3' => '轉一百八十度',
+'exif-orientation-4' => '上下倒轉',
+'exif-orientation-5' => '逆時針轉九十度,再上下倒轉',
+'exif-orientation-6' => '順時針轉九十度',
+'exif-orientation-7' => '順時針轉九十度,再上下倒轉',
+'exif-orientation-8' => '逆時針轉九十度',
'exif-planarconfiguration-1' => 'chunky 格式',
'exif-planarconfiguration-2' => 'planar 格式',
@@ -2809,7 +2984,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => '二維量度',
'exif-gpsmeasuremode-3' => '三維量度',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '千米/小時',
'exif-gpsspeed-m' => '英里/小時',
'exif-gpsspeed-n' => '浬/小時',
@@ -2828,6 +3003,7 @@ Variants for Chinese language
'watchlistall2' => '全部',
'namespacesall' => '全部',
'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '確認電郵地址',
@@ -2847,7 +3023,7 @@ Variants for Chinese language
'confirmemail_loggedin' => '你嘅電郵地址現已得到確認。',
'confirmemail_error' => '儲存你嘅確認資料嘅時候有小小嘢發生咗意外。',
'confirmemail_subject' => '{{SITENAME}}電郵地址確認',
-'confirmemail_body' => '有人(好有可能係嚟自你嘅IP地址 $1)已經用呢個電郵地址喺{{SITENAME}}度註冊咗帳戶"$2"
+'confirmemail_body' => '有人(好有可能係嚟自你嘅IP地址 $1)已經用呢個電郵地址喺{{SITENAME}}度註冊咗帳戶"$2"。
要確認呢個帳戶的而且確屬於你同埋啟用{{SITENAME}}嘅電郵功能,請喺你嘅瀏覽器度打開呢條連結:
@@ -2889,6 +3065,7 @@ $1',
# Separators for various lists, etc.
'comma-separator' => '、',
'word-separator' => '',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上一版',
@@ -2952,7 +3129,7 @@ $1',
'duplicate-defaultsort' => '警告: 預設嘅排序鍵 "$2" 覆蓋之前嘅預設排序鍵 "$1"。',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
'version-extensions' => '裝咗嘅擴展',
'version-specialpages' => '特別頁',
'version-parserhooks' => '語法鈎',
@@ -2966,7 +3143,7 @@ $1',
'version-skin-extension-functions' => '畫面擴展函數',
'version-hook-name' => '鈎名',
'version-hook-subscribedby' => '利用於',
-'version-version' => '版本',
+'version-version' => '(版本 $1)',
'version-license' => '牌照',
'version-software' => '裝咗嘅軟件',
'version-software-product' => '產品',
@@ -3047,4 +3224,15 @@ $1',
'dberr-outofdate' => '留意佢哋索引嘅內容可能會過時。',
'dberr-cachederror' => '呢個係所要求版嘅快取複本,可能會過時。',
+# HTML forms
+'htmlform-invalid-input' => '響你嘅輸入度有一啲問題',
+'htmlform-select-badoption' => '你所指定嘅值唔係一個有效嘅選項。',
+'htmlform-int-invalid' => '你所指定嘅值唔係一個整數。',
+'htmlform-float-invalid' => '你所指定嘅值唔係一個數字。',
+'htmlform-int-toolow' => '你所指定嘅值低過最細值$1',
+'htmlform-int-toohigh' => '你所指定嘅值高過最大值$1',
+'htmlform-submit' => '遞交',
+'htmlform-reset' => '復原更改',
+'htmlform-selectorother-other' => '其它',
+
);
diff --git a/languages/messages/MessagesZa.php b/languages/messages/MessagesZa.php
index 1d8be600..df39ba6c 100644
--- a/languages/messages/MessagesZa.php
+++ b/languages/messages/MessagesZa.php
@@ -72,15 +72,34 @@ $messages = array(
'pagecategories' => '{{PLURAL:$1$1 aen|faendingz|faendingz}}',
'subcategories' => 'Faendingz lwgsai',
-'about' => 'Gvendaengz',
-'article' => 'Banjbienj',
-'cancel' => 'Fwtqfex',
+'about' => 'Gvendaengz',
+'article' => 'Banjbienj',
+'cancel' => 'Fwtqfex',
+'mytalk' => 'Gaeq gou gangj',
+'navigation' => 'Dazzaeuh',
+
+# Cologne Blue skin
'qbfind' => 'Ra',
'qbedit' => 'Gaij',
'qbmyoptions' => 'Yieb gou',
'qbspecialpages' => 'Doenghmae daegxsei',
-'mytalk' => 'Gaeq gou gangj',
-'navigation' => 'Dazzaeuh',
+'faq' => 'Cam caeuq dap',
+'faqpage' => 'Project:Cam caeuq dap',
+
+# Vector skin
+'vector-action-delete' => 'Ca',
+'vector-action-move' => 'Daen',
+'vector-action-protect' => 'Bauj',
+'vector-namespace-category' => 'Faendingz',
+'vector-namespace-help' => 'Yieb bangcoh',
+'vector-namespace-image' => 'Vwnzgen',
+'vector-namespace-main' => 'Yieb',
+'vector-namespace-media' => 'Yieb moizdij',
+'vector-namespace-mediawiki' => 'Siusik',
+'vector-namespace-template' => 'Mozbanj',
+'vector-view-create' => 'Laeb',
+'vector-view-edit' => 'gaij',
+'vector-view-history' => 'Cazyawj lizsij',
'errorpagetitle' => 'Loengloek',
'tagline' => 'okcih {{SITENAME}}',
@@ -117,8 +136,6 @@ $messages = array(
'disclaimerpage' => 'Project:Itbuen mienxcwz',
'edithelp' => 'Caeuq mungz san-zonz',
'edithelppage' => 'Help:gaij',
-'faq' => 'Cam caeuq dap',
-'faqpage' => 'Project:Cam caeuq dap',
'helppage' => 'Help:moegloeg',
'mainpage' => 'Yiebdaeuz',
'mainpage-description' => 'Yiebdeauz',
@@ -166,7 +183,6 @@ $messages = array(
'userlogout' => 'Doiq ok',
'notloggedin' => 'Maengx laezhaej',
'nologinlink' => 'Laeb bouxdeiz',
-'username' => 'Ciu bouxdeiz:',
# Edit pages
'summary' => 'Saegmangj:',
@@ -195,6 +211,7 @@ $messages = array(
'mypreferences' => 'Doenghgaeq gou hae',
'prefsnologin' => 'Maengx laezhaej',
'searchresultshead' => 'Cwmh',
+'username' => 'Ciu bouxdeiz:',
'group-user-member' => 'Bouxsawjyungq',
diff --git a/languages/messages/MessagesZea.php b/languages/messages/MessagesZea.php
index e3d4002c..a6ca2733 100644
--- a/languages/messages/MessagesZea.php
+++ b/languages/messages/MessagesZea.php
@@ -9,6 +9,7 @@
*
* @author Adnergje
* @author NJ
+ * @author Purodha
* @author Rob Church <robchur@gmail.com>
* @author Steinbach
* @author Troefkaart
@@ -24,11 +25,9 @@ $fallback = 'nl';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Speciaol',
- NS_MAIN => '',
NS_TALK => 'Overleg',
NS_USER => 'Gebruker',
NS_USER_TALK => 'Overleg_gebruker',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => 'Overleg_$1',
NS_FILE => 'Plaetje',
NS_FILE_TALK => 'Overleg_plaetje',
@@ -147,7 +146,7 @@ $messages = array(
'category-media-header' => 'Media in categorie "$1".',
'category-empty' => "''Deêze categorie bevat hin pahina’s of media.''",
'hidden-categories' => 'Verborhen {{PLURAL:$1|categorie|categorieën}}',
-'hidden-category-category' => 'Verborhen categorieën', # Name of the category where hidden categories will be listed
+'hidden-category-category' => 'Verborhen categorieën',
'category-subcat-count' => '{{PLURAL:$2|Deêze categorie ei de volhende ondercategorie.|Deêze categorie ei de volhende {{PLURAL:$1|ondercategorie|$1 ondercategorieën}}, van een totaol van $2.}}',
'category-subcat-count-limited' => 'Deêze categorie ei de volhende {{PLURAL:$1|ondercategorie|$1 ondercategorieën}}.',
'category-article-count' => "{{PLURAL:$2|Deêze categorie bevat de volhende pahina.|Deêze categorie bevat de volhende {{PLURAL:$1|pahina|$1 pahina's}}, van in totaol $2.}}",
@@ -165,10 +164,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ Veehestelde vraehen (FAQ)]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailienglieste voe ankondigiengen van nieuwe versies]",
-'about' => 'Info',
-'article' => 'Artikel',
-'newwindow' => '(opent een nieuw scherm)',
-'cancel' => 'Afbreke',
+'about' => 'Info',
+'article' => 'Artikel',
+'newwindow' => '(opent een nieuw scherm)',
+'cancel' => 'Afbreke',
+'moredotdotdot' => 'Meêr …',
+'mypage' => 'Mien gebrukerspagina',
+'mytalk' => 'Mien overleg',
+'anontalk' => 'Discussie vò dit IP-adres',
+'navigation' => 'Navigaotie',
+'and' => '&#32;en',
+
+# Cologne Blue skin
'qbfind' => 'Zoeken',
'qbbrowse' => 'Blaeren',
'qbedit' => 'Bewerk',
@@ -176,15 +183,8 @@ $messages = array(
'qbpageinfo' => 'Pagina-informaotie',
'qbmyoptions' => 'Mien opties',
'qbspecialpages' => 'Speciaole pahina’s',
-'moredotdotdot' => 'Meêr …',
-'mypage' => 'Mien gebrukerspagina',
-'mytalk' => 'Mien overleg',
-'anontalk' => 'Discussie vò dit IP-adres',
-'navigation' => 'Navigaotie',
-'and' => '&#32;en',
-
-# Metadata in edit box
-'metadata_help' => 'Metadata:',
+'faq' => 'FAQ (veehestelde vraehen)',
+'faqpage' => 'Project:Veehestelde vraehen',
'errorpagetitle' => 'Fout',
'returnto' => 'Trug nae $1.',
@@ -234,7 +234,7 @@ $messages = array(
'otherlanguages' => 'In aore taelen',
'redirectedfrom' => '(Deurverwezen vanaf $1)',
'redirectpagesub' => 'Deurverwiespagina',
-'lastmodifiedat' => "Deêze bladzie is vò 't lèst bewerkt op $1 om $2.", # $1 date, $2 time
+'lastmodifiedat' => "Deêze bladzie is vò 't lèst bewerkt op $1 om $2.",
'viewcount' => 'Deêze pagina is {{PLURAL:$1|1 keêr|$1 keêr}} bekeken.',
'protectedpage' => 'Beschermde bladzie',
'jumpto' => 'Hi nae:',
@@ -245,7 +245,6 @@ $messages = array(
'aboutsite' => 'Over {{SITENAME}}',
'aboutpage' => 'Project:Info',
'copyright' => 'Den inoud is beschikbaer onder de $1.',
-'copyrightpagename' => '{{SITENAME}} auteursrechen',
'copyrightpage' => '{{ns:project}}:Auteursrechen',
'currentevents' => "In 't nieuws",
'currentevents-url' => "Project:In 't nieuws",
@@ -253,8 +252,6 @@ $messages = array(
'disclaimerpage' => 'Project:Alhemeên voebehoud',
'edithelp' => "Ulpe bie't bewerken",
'edithelppage' => 'Help:Bewerken',
-'faq' => 'FAQ (veehestelde vraehen)',
-'faqpage' => 'Project:Veehestelde vraehen',
'helppage' => 'Help:Inoud',
'mainpage' => 'Vòblad',
'mainpage-description' => 'Vòblad',
@@ -330,10 +327,6 @@ MySQL haf de foutmeldieng “<tt>$3: $4</tt>”.",
“$1”
vanuut de functie “$2”.
MySQL haf de volhende foutmeldieng: “$3: $4”",
-'noconnect' => 'Sorry! De wiki ondervin technische moeilijkheden en kan de database nie bereiken. <br />
-$1',
-'nodb' => 'Kon database $1 nie selecteren',
-'cachederror' => 'Deêze pahina is een kopie uut de cache en kan verouwerd zien.',
'laggedslavemode' => "Waerschuwieng: de pahina zou verouwerd kunn'n zien.",
'readonly' => 'Database heblokkeerd',
'enterlockreason' => 'Heef een reeën op voe de blokkaode en heef op wunnir a die warschijnlijk wor opeheven',
@@ -381,7 +374,6 @@ $2",
De heheven reeën is ''$2''.",
# Login and logout pages
-'logouttitle' => 'Gebruker afmelden',
'logouttext' => "'''Je bin noe ofemeld.'''
Je kan {{SITENAME}} noe anoniem gebruken of wee anmelden as dezelven of een aore gebruker.
@@ -389,7 +381,6 @@ Meuhlijk worn nog een antal pagina's weereheven asof a je anemeld bin totda je d
'welcomecreation' => '== Welkom, $1! ==
Jen account is anemikt.
Vergeet nie je [[Special:Preferences|vòkeuren voe {{SITENAME}}]] an te passen.',
-'loginpagetitle' => 'Gebrukersnaem',
'yourname' => 'Gebrukersnaem',
'yourpassword' => 'Wachtwoôrd',
'yourpasswordagain' => 'Heef je wachtwoôrd opnieuw in:',
@@ -412,19 +403,7 @@ Vergeet nie je [[Special:Preferences|vòkeuren voe {{SITENAME}}]] an te passen.'
'badretype' => 'De wachtwoôrden die-a je ingegeven typ bin nie eênder.',
'userexists' => 'De hekozen gebrukersnaem is a in gebruuk.
Kies asjeblieft een aore naem.',
-'youremail' => 'Jen e-mailadres:',
-'username' => 'Gebrukersnaem:',
-'uid' => 'Gebrukersnummer:',
-'yourrealname' => 'Jen echen naam:',
-'yourlanguage' => 'Taele:',
-'yournick' => 'Tekst voe onderteêkenienge:',
-'badsig' => 'Ongeldege andteêkenienge; kiek de [[HTML]]-expressies nae.',
-'badsiglength' => 'Te lange naem; ie mag uut maximaol $1 {{PLURAL:$1|letter|letters}} bestae.',
-'email' => 'E-mail',
-'prefs-help-realname' => 'Echen naem is opsjoneel, a je dezen opgeef kan deêze naem gebruukt worn om je erkennieng te heven voe je werk.',
'loginerror' => 'Anmeldfout',
-'prefs-help-email' => "E-mailadres is opsjoneel, mè stel aore in staet contact mie je op te neem'n via je gebrukers- of overlegpagina zonder da je jen identiteit priesheef.",
-'prefs-help-email-required' => 'Iervoe is een e-mailadres noôdig.',
'nocookiesnew' => "De gebruker is anemikt mè nie anemeld.
{{SITENAME}} gebruuk cookies voe 't anmelden van gebrukers.
Schaokel die asjeblieft in en meld dinae an mie je nieuwe gebrukersnaem en wachtwoôrd.",
@@ -472,16 +451,15 @@ Neheer dit bericht as deêze gebruker zonder joe medeweten is anemikt.',
'loginlanguagelabel' => 'Taele: $1',
# Password reset dialog
-'resetpass' => "Wachtwoôrd herinstell'n",
-'resetpass_announce' => "Je bin anemeld mie een tiedelijke code die a je per e-mail is toe-ezon'n. Voer een nieuw wachtwoôrd in om 't anmelden te voltooien:",
-'resetpass_header' => "Wachtwoôrd herinstell'n",
-'oldpassword' => 'Udihe wachtwoôrd:',
-'newpassword' => 'Nieuw wachtwoôrd:',
-'retypenew' => 'Herhaolieng nieuwe wachtwoôrd:',
-'resetpass_submit' => "Wachtwoôrd instell'n en anmelden",
-'resetpass_success' => 'Je wachtwoord is ewiezigd. Bezig mie anmelden ...',
-'resetpass_bad_temporary' => 'Onheldig tiedelijk wachtwoôrd. Je ei je wachtwoôrd a ewiezigd of een nieuw tiedelijk wachtwoôrd anevrogen.',
-'resetpass_forbidden' => "Wachtwoôrden kunn'n op {{SITENAME}} nie ewiezigd worn",
+'resetpass' => "Wachtwoôrd herinstell'n",
+'resetpass_announce' => "Je bin anemeld mie een tiedelijke code die a je per e-mail is toe-ezon'n. Voer een nieuw wachtwoôrd in om 't anmelden te voltooien:",
+'resetpass_header' => "Wachtwoôrd herinstell'n",
+'oldpassword' => 'Udihe wachtwoôrd:',
+'newpassword' => 'Nieuw wachtwoôrd:',
+'retypenew' => 'Herhaolieng nieuwe wachtwoôrd:',
+'resetpass_submit' => "Wachtwoôrd instell'n en anmelden",
+'resetpass_success' => 'Je wachtwoord is ewiezigd. Bezig mie anmelden ...',
+'resetpass_forbidden' => "Wachtwoôrden kunn'n op {{SITENAME}} nie ewiezigd worn",
# Edit page toolbar
'bold_sample' => 'Vette tekst',
@@ -504,23 +482,23 @@ Neheer dit bericht as deêze gebruker zonder joe medeweten is anemikt.',
'hr_tip' => 'Horizontaele lien (gebruuk spaerzaem)',
# Edit pages
-'summary' => 'Saemenvatting:',
-'subject' => 'Onderwerp/kop:',
-'minoredit' => 'Dit is een kleine wieziging',
-'watchthis' => 'Volg deêze bladzie',
-'savearticle' => 'Bewaer bladzie',
-'preview' => 'Naekieken',
-'showpreview' => 'Naekieke',
-'showlivepreview' => 'Bewerkieng ter controle bekieken',
-'showdiff' => 'Bekiek veranderiengen',
-'anoneditwarning' => "'''Waerschuwienge:''' Je bin nie angemolde. Je IP-adres komt in de bewerkiengsgeschiedenisse van deêze bladzie te staen.",
-'missingsummary' => "'''Herinnerieng:''' je ei hin saemenvattieng opeheven voe je bewerkieng. A je nog een keêr op ''Pagina opslaen'' klik wor de bewerkieng zonder saemenvattieng opeslogen.",
-'missingcommenttext' => 'Plek jen opmerkieng asjeblieft ieronder.',
-'missingcommentheader' => "'''Let op:''' Je ei hin onderwerp/kop voe deêze opmerkieng opeheven. A je opnieuw op \"opslaen\" klik, wor je wieziging zonder een onderwerp/kop opeslogen.",
-'summary-preview' => 'Saemenvattieng naekieken:',
-'subject-preview' => 'Naekieken onderwerp/kop:',
-'blockedtitle' => 'Gebruker is geblokkeerd',
-'blockedtext' => "'''Je gebruker of IP-adres is eblokkeerd.'''
+'summary' => 'Saemenvatting:',
+'subject' => 'Onderwerp/kop:',
+'minoredit' => 'Dit is een kleine wieziging',
+'watchthis' => 'Volg deêze bladzie',
+'savearticle' => 'Bewaer bladzie',
+'preview' => 'Naekieken',
+'showpreview' => 'Naekieke',
+'showlivepreview' => 'Bewerkieng ter controle bekieken',
+'showdiff' => 'Bekiek veranderiengen',
+'anoneditwarning' => "'''Waerschuwienge:''' Je bin nie angemolde. Je IP-adres komt in de bewerkiengsgeschiedenisse van deêze bladzie te staen.",
+'missingsummary' => "'''Herinnerieng:''' je ei hin saemenvattieng opeheven voe je bewerkieng. A je nog een keêr op ''Pagina opslaen'' klik wor de bewerkieng zonder saemenvattieng opeslogen.",
+'missingcommenttext' => 'Plek jen opmerkieng asjeblieft ieronder.',
+'missingcommentheader' => "'''Let op:''' Je ei hin onderwerp/kop voe deêze opmerkieng opeheven. A je opnieuw op \"opslaen\" klik, wor je wieziging zonder een onderwerp/kop opeslogen.",
+'summary-preview' => 'Saemenvattieng naekieken:',
+'subject-preview' => 'Naekieken onderwerp/kop:',
+'blockedtitle' => 'Gebruker is geblokkeerd',
+'blockedtext' => "'''Je gebruker of IP-adres is eblokkeerd.'''
De blokkaode is uutevoerd deur $1.
De opeheven reeën is ''$2''.
@@ -532,7 +510,7 @@ De opeheven reeën is ''$2''.
Je kan contact opnemen mie $1 of een aore [[{{MediaWiki:Grouppage-sysop}}|opzichter]] om de blokkaode te bespreken.
Je kan hin gebruuk maeken van de functie 'e-mail deêze gebruker', tenzie a je een heldig e-mailadres ei opeheven in je [[Special:Preferences|vòkeuren]] en 't gebruuk van deêze functie nie eblokkeerd is.
Je udihe IP-adres is $3 en 't blokkaodenummer is #$5. Vermeld beie hehevens a je erhens op deêze blokkaode wil reaheern.",
-'autoblockedtext' => "Jen IP-adres is automaotisch eblokkeerd, omda 't is gebruukt deur een aore gebruker, die a is eblokkeerd deur $1.
+'autoblockedtext' => "Jen IP-adres is automaotisch eblokkeerd, omda 't is gebruukt deur een aore gebruker, die a is eblokkeerd deur $1.
De opeheven reeën is:
:''$2''
@@ -544,31 +522,30 @@ Je kan deêze blokkaode bespreken mie $1 of een aore [[{{MediaWiki:Grouppage-sys
Je kan hin gebruuk maeken van de functie 'e-mail deêze gebruker', tenzie a je een heldig e-mailadres ei opeheven in je [[Special:Preferences|vòkeuren]] en 't gebruuk van deêze functie nie is eblokkeerd.
Je blokkaodenummer is #$5.
Vermeld dat a je erhens over deêze blokkaode wil reaheern.",
-'blockednoreason' => 'hin reeën opeheven',
-'blockedoriginalsource' => "De brontekst van '''$1''' staet ieronder:",
-'blockededitsource' => "D'n tekst van '''joen biedragen''' an '''$1''' staet ieronder:",
-'whitelistedittitle' => 'Voe bewerken is anmelden verplicht',
-'whitelistedittext' => "Je mò $1 om pagina's te bewerken.",
-'confirmedittitle' => 'E-mailbevestigieng is verplicht voeda je kan bewerken',
-'confirmedittext' => "Je mò jen e-mailadres bevestihen voe da je kan bewerken.
+'blockednoreason' => 'hin reeën opeheven',
+'blockedoriginalsource' => "De brontekst van '''$1''' staet ieronder:",
+'blockededitsource' => "D'n tekst van '''joen biedragen''' an '''$1''' staet ieronder:",
+'whitelistedittitle' => 'Voe bewerken is anmelden verplicht',
+'whitelistedittext' => "Je mò $1 om pagina's te bewerken.",
+'confirmedittext' => "Je mò jen e-mailadres bevestihen voe da je kan bewerken.
Voer jen e-mailadres in en bevestig 't via [[Special:Preferences|je vòkeuren]].",
-'nosuchsectiontitle' => 'Deêze subkop besti nie',
-'nosuchsectiontext' => 'Je probeern een subkop te bewerken die a nie besti.',
-'loginreqtitle' => 'Anmelden verplicht',
-'loginreqlink' => 'anmelden',
-'loginreqpagetext' => "$1 is verplicht om aore pagina's te kunn'n ziene.",
-'accmailtitle' => 'Wachtwoord verstierd.',
-'accmailtext' => "'t Wachtwoord vò $1 is nae $2 opgestierd.",
-'newarticle' => '(Nieuw)',
-'newarticletext' => "Deêze pagina besti nie. Typ in 't onderstaende veld om de pagina an te maeken (meêr informatie sti op de [[{{MediaWiki:Helppage}}|ulppagina]]).
+'nosuchsectiontitle' => 'Deêze subkop besti nie',
+'nosuchsectiontext' => 'Je probeern een subkop te bewerken die a nie besti.',
+'loginreqtitle' => 'Anmelden verplicht',
+'loginreqlink' => 'anmelden',
+'loginreqpagetext' => "$1 is verplicht om aore pagina's te kunn'n ziene.",
+'accmailtitle' => 'Wachtwoord verstierd.',
+'accmailtext' => "'t Wachtwoord vò $1 is nae $2 opgestierd.",
+'newarticle' => '(Nieuw)',
+'newarticletext' => "Deêze pagina besti nie. Typ in 't onderstaende veld om de pagina an te maeken (meêr informatie sti op de [[{{MediaWiki:Helppage}}|ulppagina]]).
Gebruuk de knoppe '''vorige''' in je browser as je ier per ongeluk terecht bin ekomm'n.",
-'anontalkpagetext' => "----''Dit is de overlegbladzie vò 'n anonieme gebruker die-a gin inlognaem eit of 'm nie gebruukt.
+'anontalkpagetext' => "----''Dit is de overlegbladzie vò 'n anonieme gebruker die-a gin inlognaem eit of 'm nie gebruukt.
Zien/eur IP-adres kan deu meêr as eên gebruker gebruukt ore.
A je 'n bericht gekrege è dat-a dudelik nie an joe gericht is, ka je 't beste [[Special:UserLogin|jen eige anmelde]] om zukke verwarrienge in 't vervolg te vòkommen.''",
-'noarticletext' => 'Deêze pagina bevat hin tekst.
+'noarticletext' => 'Deêze pagina bevat hin tekst.
Je kan [[Special:Search/{{PAGENAME}}|ni deêze term zoeken]] in aore pagina\'s of <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} deêze pagina bewerken]</span>.',
-'userpage-userdoesnotexist' => 'Je bewerk een gebrukerspagina van een gebruker die a nie besti (gebruker "$1"). Controleer of a je deêze pagina wè wil anmaeken/bewerken.',
-'clearyourcache' => '\'\'\'Let op!\'\'\' Leeg je cache naeda je de wiezigiengen ei opeslogen.
+'userpage-userdoesnotexist' => 'Je bewerk een gebrukerspagina van een gebruker die a nie besti (gebruker "$1"). Controleer of a je deêze pagina wè wil anmaeken/bewerken.',
+'clearyourcache' => '\'\'\'Let op!\'\'\' Leeg je cache naeda je de wiezigiengen ei opeslogen.
{| border="1" cellpadding="3" class=toccolours style="border: 1px #AAAAAA solid; border-collapse: collapse;"
| Mozilla/Safari/Konqueror || CTRL-SHIFT-R
@@ -581,71 +558,72 @@ Je kan [[Special:Search/{{PAGENAME}}|ni deêze term zoeken]] in aore pagina\'s o
|-
| Konqueror || F5
|}',
-'usercssjsyoucanpreview' => "'''Tip:''' Gebruuk de knoppe 'Naekieken' om je nieuwe CSS/JS te tessen voe da je opsli.",
-'usercsspreview' => "'''Dit is alleên een voeôvertonieng van je persoônlijke CSS, dezen is nog nie opeslogen!'''",
-'userjspreview' => "'''Let op: je test noe je persoônlijke JavaScript. De pagina is nie opeslogen!'''",
-'userinvalidcssjstitle' => "'''Waerschuwieng:''' der is hin skin \"\$1\". Let op: jen eihen .css- en .js-pagina's behunnen mie een kleine letter, buvobbeld {{ns:user}}:Naem/monobook.css in plekke van {{ns:user}}:Naem/Monobook.css.",
-'updated' => '(Biehewerkt)',
-'note' => "'''Opmerkieng:'''",
-'previewnote' => "'''Let op: dit is een controlepagina; je tekst is nie opeslogen!'''",
-'previewconflict' => "Deêze voevertoônieng heef an oe a de tekst in 't bovenste veld deruut zie a je die opsli.",
-'session_fail_preview' => "'''Sorry! Je bewerkieng is nie verwerkt, omdan de sessiehehevens verloorn zien ehaen.
+'usercssyoucanpreview' => "'''Tip:''' Gebruuk de knoppe 'Naekieken' om je nieuwe CSS te tessen voe da je opsli.",
+'userjsyoucanpreview' => "'''Tip:''' Gebruuk de knoppe 'Naekieken' om je nieuwe JS te tessen voe da je opsli.",
+'usercsspreview' => "'''Dit is alleên een voeôvertonieng van je persoônlijke CSS, dezen is nog nie opeslogen!'''",
+'userjspreview' => "'''Let op: je test noe je persoônlijke JavaScript. De pagina is nie opeslogen!'''",
+'userinvalidcssjstitle' => "'''Waerschuwieng:''' der is hin skin \"\$1\". Let op: jen eihen .css- en .js-pagina's behunnen mie een kleine letter, buvobbeld {{ns:user}}:Naem/monobook.css in plekke van {{ns:user}}:Naem/Monobook.css.",
+'updated' => '(Biehewerkt)',
+'note' => "'''Opmerkieng:'''",
+'previewnote' => "'''Let op: dit is een controlepagina; je tekst is nie opeslogen!'''",
+'previewconflict' => "Deêze voevertoônieng heef an oe a de tekst in 't bovenste veld deruut zie a je die opsli.",
+'session_fail_preview' => "'''Sorry! Je bewerkieng is nie verwerkt, omdan de sessiehehevens verloorn zien ehaen.
Probeer 't opnieuw. A 't dan nog nie luk, mel jen eihen dan of en wee an.'''",
-'session_fail_preview_html' => "'''Sorry! Je bewerkieng is nie verwerkt, omdan sessiehehevens verloren zien ehaene.'''
+'session_fail_preview_html' => "'''Sorry! Je bewerkieng is nie verwerkt, omdan sessiehehevens verloren zien ehaene.'''
''Omda in {{SITENAME}} ruwe HTML is ineschaokeld, is een voevertoônieng nie meuhlijk as beschermieng tehen anvall'n mie JavaScript.''
'''A dit een lehitieme bewerkieng is, probeer 't dan opnieuw. A 't dan nog nie luk, mel jen eihen dan of en wee an.'''",
-'token_suffix_mismatch' => "'''Je bewerkieng is eweiherd omda je browser de leesteêkens in 't bewerkiengstoken onjuust ei behandeld.
+'token_suffix_mismatch' => "'''Je bewerkieng is eweiherd omda je browser de leesteêkens in 't bewerkiengstoken onjuust ei behandeld.
De bewerkieng is eweiherd om vermienkieng van de paginatekst te voorkomm'n.
Dit gebeur soms a der een webhebaseerde proxydienst wor gebruukt die a fout'n bevat.'''",
-'editing' => 'Bezig mie bewerken van $1',
-'editingsection' => 'Bezig mie bewerken van $1 (deêlpagina)',
-'editingcomment' => 'Bezig mie bewerken van $1 (opmerkieng)',
-'editconflict' => 'Bewerkiengsconflict: $1',
-'explainconflict' => "Een aore gebruker ei deêze pagina bewerkt sins a je mie je bewerkieng bin behonnen.
+'editing' => 'Bezig mie bewerken van $1',
+'editingsection' => 'Bezig mie bewerken van $1 (deêlpagina)',
+'editingcomment' => 'Bezig mie bewerken van $1 (opmerkieng)',
+'editconflict' => 'Bewerkiengsconflict: $1',
+'explainconflict' => "Een aore gebruker ei deêze pagina bewerkt sins a je mie je bewerkieng bin behonnen.
In 't bovenste deêl van 't venster sti de tekst van de udihe pagina.
Je bewerkieng sti in 't onderste hedeêlte.
Je dien je bewerkiengen in te voehen in de bestaende tekst.
<b>Alleên</b> de tekst in 't bovenste hedeêlte wor opeslogen a je op \"Pagina opslaen\" klik.<br />",
-'yourtext' => 'Joe tekst',
-'storedversion' => 'Opeslogen versie',
-'nonunicodebrowser' => "'''WAERSCHUWIENG: Je browser kan nie hoed overwig mie unicode.
+'yourtext' => 'Joe tekst',
+'storedversion' => 'Opeslogen versie',
+'nonunicodebrowser' => "'''WAERSCHUWIENG: Je browser kan nie hoed overwig mie unicode.
Iermie wor deur de MediaWiki-software rekenienge ehouwen zoda je toch zonder probleemn pagina's kan bewerken: nie-ASCII karakters worn in 't bewerkiengsveld weereheven as hexadecimale codes.'''",
-'editingold' => "'''WAARSCHUWING!
+'editingold' => "'''WAARSCHUWING!
Je bewerk een ouwe versie van deêze pagina.
A je je bewerkieng opsli, haen aolle wiezigiengen die an nae deêze versie emikt zien verloorn.'''",
-'yourdiff' => 'Wiezigiengen',
-'copyrightwarning' => "Opelet: Aolle biedraegen an {{SITENAME}} worn eacht te zien vrie'eheven onder de $2 (zie $1 voe details).
+'yourdiff' => 'Wiezigiengen',
+'copyrightwarning' => "Opelet: Aolle biedraegen an {{SITENAME}} worn eacht te zien vrie'eheven onder de $2 (zie $1 voe details).
A je nie wil da je tekst deur aore ni believen bewerkt en verspreid kan worn, kies dan nie voe 'Pagina Opslaen'.<br />
Ierbie beloof je ons ok da je deêze tekst zelf eschreven ei, of overenomen uut een vrieë, openbaere bron.<br />
'''GEBRUUK HIN MATERIAOL DAT A BESCHERMD WOR DEUR AUTEURSRECHT, TENZIE A JE DIVOE TOESTEMMIENG EI!'''",
-'copyrightwarning2' => "Al je biedraehen an {{SITENAME}} kunn'n bewerkt, ewiezigd of verwiederd worn deur aore gebrukers.
+'copyrightwarning2' => "Al je biedraehen an {{SITENAME}} kunn'n bewerkt, ewiezigd of verwiederd worn deur aore gebrukers.
A je nie wil dan je teksen rihoreus anepast worn deur aore, plek ze ier dan nie.<br />
Je beloof ok da je de oôrspronkelijke auteur bin van dit materiaol, of da je 't ei ekopieerd uut een bron in 't publieke domein, of een soôrthelieke vrieë bron (zie $1 voor details).
'''GEBRUUK HIN MATERIAOL DAT A BESCHERMD WOR DEUR AUTEURSRECHT, TENZIE A JE DIVOE TOESTEMMIENG EI!'''",
-'longpagewarning' => "'''WAERSCHUWIENG: Deêze pagina is $1 kilobyte hroôt; sommihe browsers èn probleemn mie 't bewerken van pagina's die an hrotter zien dan 32 kb. Misschien kan deêze pagina esplitst worn in kleinere deêln.'''",
-'longpageerror' => "'''FOUT: de tekst die a je ei toe'evoegd is $1 kilobyte hroôt, wat a hrotter is dan 't maximum van $2 kilobyte.
+'longpagewarning' => "'''WAERSCHUWIENG: Deêze pagina is $1 kilobyte hroôt; sommihe browsers èn probleemn mie 't bewerken van pagina's die an hrotter zien dan 32 kb. Misschien kan deêze pagina esplitst worn in kleinere deêln.'''",
+'longpageerror' => "'''FOUT: de tekst die a je ei toe'evoegd is $1 kilobyte hroôt, wat a hrotter is dan 't maximum van $2 kilobyte.
Opslaene is nie meuhlijk.'''",
-'readonlywarning' => "'''WAERSCHUWIENG: de database is eblokkeerd voe onderoud, dus je kan dezen noe nie opslaen.
+'readonlywarning' => "'''WAERSCHUWIENG: de database is eblokkeerd voe onderoud, dus je kan dezen noe nie opslaen.
't Is misschien verstandig om je tekst tiedelijk in een tekstbestand op te slaene om dit te bewaeren ve wunnir a de blokkerieng van de database opeheven is.'''",
-'protectedpagewarning' => "'''WAERSCHUWIENG! Deêze beveiligde pagina kan allin deur gebrukers mie beheêrdersrechten bewerkt worn.'''",
-'semiprotectedpagewarning' => "'''Let op:''' deêze pagina is beveiligd en kan allaen deur herehistreerde gebrukers bewerkt worn.",
-'cascadeprotectedwarning' => "'''Waerschuwieng:''' Deêze pagina is beveiligd en kan allin deur beheêrders bewerkt worn, omda dezen is openomen in de volhende {{PLURAL:$1|pagina|pagina's}} die a beveiligd {{PLURAL:$1|is|zien}} mie de cascade-optie:",
-'titleprotectedwarning' => "'''WAERSCHUWIENG: Deêze pagina is beveiligd zodan allaen ienkele gebrukers 't kunn'n anmaeken.'''",
-'templatesused' => "Op deêze pagina gebruukte sjabloon'n:",
-'templatesusedpreview' => "Sjabloon'n gebruukt in deêze voevertoônieng:",
-'templatesusedsection' => "Sjabloon'n die an gebruukt worn in deêze subkop:",
-'template-protected' => '(beveiligd)',
-'template-semiprotected' => '(semi-beveiligd)',
-'hiddencategories' => 'Deêze pagina val in de volhende verborhen {{PLURAL:$1|categorie|categorieën}}:',
-'nocreatetitle' => "'t Anmaeken van pagina's is beperkt",
-'nocreatetext' => "{{SITENAME}} ei de meuhlijkeid om nieuwe pagina's an te maeken beperkt.
+'protectedpagewarning' => "'''WAERSCHUWIENG! Deêze beveiligde pagina kan allin deur gebrukers mie beheêrdersrechten bewerkt worn.'''",
+'semiprotectedpagewarning' => "'''Let op:''' deêze pagina is beveiligd en kan allaen deur herehistreerde gebrukers bewerkt worn.",
+'cascadeprotectedwarning' => "'''Waerschuwieng:''' Deêze pagina is beveiligd en kan allin deur beheêrders bewerkt worn, omda dezen is openomen in de volhende {{PLURAL:$1|pagina|pagina's}} die a beveiligd {{PLURAL:$1|is|zien}} mie de cascade-optie:",
+'titleprotectedwarning' => "'''WAERSCHUWIENG: Deêze pagina is beveiligd zodan allaen ienkele gebrukers 't kunn'n anmaeken.'''",
+'templatesused' => "Op deêze pagina gebruukte sjabloon'n:",
+'templatesusedpreview' => "Sjabloon'n gebruukt in deêze voevertoônieng:",
+'templatesusedsection' => "Sjabloon'n die an gebruukt worn in deêze subkop:",
+'template-protected' => '(beveiligd)',
+'template-semiprotected' => '(semi-beveiligd)',
+'hiddencategories' => 'Deêze pagina val in de volhende verborhen {{PLURAL:$1|categorie|categorieën}}:',
+'nocreatetitle' => "'t Anmaeken van pagina's is beperkt",
+'nocreatetext' => "{{SITENAME}} ei de meuhlijkeid om nieuwe pagina's an te maeken beperkt.
Je kan a bestaende pagina's wiezigen, of je kan [[Special:UserLogin|jen eihen anmelden of een gebruker anmaeken]].",
-'nocreate-loggedin' => "Je kan hin nieuwe pagina's anmaeken.",
-'permissionserrors' => "Fout'n in rechen",
-'permissionserrorstext' => "Je ei hin rechen om dit te doene wehens de volhende {{PLURAL:$1|reeën|reden'n}}:",
-'recreate-deleted-warn' => "'''Waerschuwieng: je bin bezig mie 't anmaeken van een pagina die a in 't verleeën verwiederd is.'''
+'nocreate-loggedin' => "Je kan hin nieuwe pagina's anmaeken.",
+'permissionserrors' => "Fout'n in rechen",
+'permissionserrorstext' => "Je ei hin rechen om dit te doene wehens de volhende {{PLURAL:$1|reeën|reden'n}}:",
+'recreate-moveddeleted-warn' => "'''Waerschuwieng: je bin bezig mie 't anmaeken van een pagina die a in 't verleeën verwiederd is.'''
Overweeg of a 't terecht is dat je vadder werk an deêze pagina. Voe je hemak sti ieronder 't verwiederiengslogboek van deêze pagina:",
@@ -671,7 +649,7 @@ De deur $3 opeheven reeën is ''$2''",
'nohistory' => 'Deêze pagina is nie bewerkt.',
'currentrev' => 'Udihe versie',
'revisionasof' => 'Versie op $1',
-'revision-info' => 'Versie op $1 van $2', # Additionally available: $3: revision id
+'revision-info' => 'Versie op $1 van $2',
'previousrevision' => '←Ouwere versie',
'nextrevision' => 'Nieuwere versie→',
'currentrevisionlink' => 'Udihe versie',
@@ -682,7 +660,6 @@ De deur $3 opeheven reeën is ''$2''",
'page_last' => 'lèste',
'histlegend' => "Selectie voe diff: sillecteer de te verheliek'n versies en toets ENTER of de knoppe onderan.<br />
Verklaerieng afkortiengen: (udig) = verschil mie udihe versie, (vorihe) = verschil mie voorhaende versie, k = kleine wiezigieng",
-'deletedrev' => '[verwiederd]',
'histfirst' => 'Oussen',
'histlast' => 'Nieuwsen',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -691,7 +668,7 @@ Verklaerieng afkortiengen: (udig) = verschil mie udihe versie, (vorihe) = versch
# Revision feed
'history-feed-title' => 'Bewerkiengsgeschiedenisse',
'history-feed-description' => 'Bewerkiengsoverzicht voe deêze pagina op de wiki',
-'history-feed-item-nocomment' => '$1 op $2', # user at time
+'history-feed-item-nocomment' => '$1 op $2',
'history-feed-empty' => "De evrogen pagina besti nie.
Misschien is een verwiederd of hernoemd.
[[Special:Search|Deurzoek de wiki]] voe rillevante pagina's.",
@@ -701,10 +678,10 @@ Misschien is een verwiederd of hernoemd.
'rev-deleted-user' => '(gebruker verwiederd)',
'rev-deleted-event' => '(logboekrehel verwiederd)',
'rev-deleted-text-permission' => "Deêze bewerkieng van de pagina is verwiederd uut de publieke archieven.
-Der kunn'n details anwezig zien in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}}verwiederiengslogboek].",
+Der kunn'n details anwezig zien in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}verwiederiengslogboek].",
'rev-deleted-text-view' => "Deêze bewerkieng van de pagina is verwiederd uut de publieke archieven.
As opzichter van {{SITENAME}} kan je dezen ziene;
-der kunn'n details anwezig zien in 't [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} verwiederiengslogboek].",
+der kunn'n details anwezig zien in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verwiederiengslogboek].",
'rev-delundel' => 'weerheven/verberhen',
'revisiondelete' => 'Versies verwiederen/trugplekken',
'revdelete-nooldid-title' => 'Hin doelversie',
@@ -716,12 +693,12 @@ der kunn'n details anwezig zien in 't [{{fullurl:Special:Log/delete|page={{FULLP
Aore opzichters van {{SITENAME}} kunn'n de verborhen inoud benadern en de verwiederieng onedaene maeken mie de ulpe van dit scherm, tenzie an der anvull'nde beperkiengen heln die an zien inesteld deur de systeembeheêrder.",
'revdelete-legend' => "Zichbaereidsbeperkiengen instell'n",
'revdelete-hide-text' => 'De bewerkte tekst verberhen',
+'revdelete-hide-image' => 'Bestandsinoud verberhen',
'revdelete-hide-name' => 'Actie en doel verberhen',
'revdelete-hide-comment' => 'De bewerkiengssaemenvattieng verberhen',
'revdelete-hide-user' => 'Gebrukersnaem/IP van de gebruker verberhen',
'revdelete-hide-restricted' => 'Deêze beperkiengen toepassen op opzichters en dezen interface ofsluten',
'revdelete-suppress' => "Hehevens voe zòwè opzichters as aore onderdrukk'n",
-'revdelete-hide-image' => 'Bestandsinoud verberhen',
'revdelete-unsuppress' => 'Beperkiengen op terugezette wiezigiengen verwiederen',
'revdelete-log' => 'Opmerkieng in logboek:',
'revdelete-submit' => 'Toepassen op de hesillecteerde bewerkieng',
@@ -786,16 +763,14 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
'searchresulttext' => 'Voe meêr informaotie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:ulpe}}]].',
'searchsubtitle' => "Je zoch ni '''[[:$1]]'''",
'searchsubtitleinvalid' => 'Voe zoekopdracht "$1"',
-'noexactmatch' => "'''Der besti hin pagina henaemd \"\$1\".''' Je kan dezen [[:\$1|anmaeken]].",
-'noexactmatch-nocreate' => "'''Der besti hin pagina genaemd \"\$1\".'''",
'toomanymatches' => 'Der waeren te vee resultaoten. Probeer asjeblieft een aore zoekopdracht.',
'titlematches' => 'Overeênkomst mie onderwerp',
'notitlematches' => "Hin resultaoten evon'n",
'textmatches' => 'Overeênkomst mie inoud',
'notextmatches' => "Hin pagina's evon'n",
'prevn' => 'vorrege $1',
-'nextn' => 'volhende $1',
-'viewprevnext' => 'Bekiek ($1) ($2) ($3).',
+'nextn' => 'volhende {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Bekiek ($1 {{int:pipe-separator}} $2) ($3).',
'searchhelp-url' => 'Help:Inoud',
'search-result-size' => '$1 ({{PLURAL:$2|1 woôrd|$2 woôrn}})',
'search-result-score' => 'Rillevantie: $1%',
@@ -805,7 +780,6 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
'searchall' => 'aolle',
'showingresults' => "Ieronder {{PLURAL:$1|sti '''1''' resultaot|staen '''$1''' resultaoten}} vanof #'''$2'''.",
'showingresultsnum' => "Ieronder {{PLURAL:$3|sti '''1''' resultaot|staen '''$3''' resultaoten}} vanof #'''$2'''.",
-'showingresultstotal' => "Ieronder worn de resultaoten '''$1 tot $2''' van '''$3''' weereheven",
'nonefound' => "'''Opmerkieng''': mislukte zoekopdrachten worn vaok veroôrzaekt deur zoekn ni vee voekomm'nde woôrn as \"van\" en \"de\", die an nie in de indexen worn openoom'n, of deur meêr dan eên zoekterm op te heven. Allin pagina's die an aolle zoektermen bevatt'n worn openoom'n in de resultaoten.",
'powersearch' => 'Uutebreid zoeken',
'powersearch-legend' => 'Uutebreid zoeken',
@@ -814,67 +788,69 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
Je kan gebruuk maeken van Google.
De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
-# Preferences page
-'preferences' => 'Vòkeuren',
-'mypreferences' => 'Mien vòkeuren',
-'prefs-edits' => 'Antal bewerkiengen:',
-'prefsnologin' => 'Nie anemeld',
-'prefsnologintext' => 'Je mò <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} anemeld]</span> zien om je vòkeuren te kunn\'n instell\'n.',
-'prefsreset' => 'Standardvòkeuren zien hersteld.',
+# Quickbar
'qbsettings' => 'Menubalke',
'qbsettings-none' => 'Uuteschaokeld',
'qbsettings-fixedleft' => 'Lienks vast',
'qbsettings-fixedright' => 'Rechs vast',
'qbsettings-floatingleft' => 'Lienks zwevend',
'qbsettings-floatingright' => 'Rechs zwevend',
-'changepassword' => 'Wachtwoôrd wiezigen',
-'skin' => 'Vurmhevieng',
-'skin-preview' => 'Voevertoônienge',
-'math' => 'Formules',
-'dateformat' => 'Datumopmaek',
-'datedefault' => 'Hin vòkeur',
-'datetime' => 'Daotum en tied',
-'math_failure' => 'Parsen mislukt',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende functie',
-'math_lexing_error' => 'lexicohraofische fout',
-'math_syntax_error' => 'syntactische fout',
-'math_image_error' => 'PNG-omzettieng is mislukt. Hi nae of an latex, dvips en gs correct heïnstalleerd zien en zet om',
-'math_bad_tmpdir' => "De map voe tiedelijke bestan'n voe wiskundihe formules besti nie of kan nie emikt worn",
-'math_bad_output' => "De map voe bestan'n mie wiskundihe formules besti nie of kan nie emikt worn.",
-'math_notexvc' => "Kan 't prohramma texvc nie vin'n; stel aolles in volhens de beschrievieng in math/README.",
-'prefs-personal' => 'Gebrukersprofiel',
-'prefs-rc' => 'Juust angepast',
-'prefs-watchlist' => 'Volglieste',
-'prefs-watchlist-days' => 'Daehen weer te heven in de volglieste:',
-'prefs-watchlist-edits' => 'Maximaol antal bewerkiengen in de uutebreide volglieste:',
-'prefs-misc' => 'Rest',
-'saveprefs' => 'Opslaene',
-'resetprefs' => 'Nie opeslogen wiezigiengen herstellen',
-'textboxsize' => 'Bewerken',
-'rows' => 'Rehels:',
-'columns' => "Kolomm'n:",
-'searchresultshead' => 'Zoek',
-'resultsperpage' => "Resultaot'n per pagina:",
-'contextlines' => 'Rehels per resultaot:',
-'contextchars' => 'Context per rehel:',
-'stub-threshold' => 'Drempel voe markerieng <a href="#" class="stub">stompje</a>:',
-'recentchangesdays' => 'Antal daehen weer te heven in Juust angepast:',
-'recentchangescount' => "Antal pagina's in Juust angepast:",
-'savedprefs' => 'Je vòkeuren zien opeslogen.',
-'timezonelegend' => 'Tiedzône',
-'timezonetext' => "¹'t Antal uurn dat a je plaetselijke tied afwiek van de servertied (UTC).",
-'localtime' => 'Lokaole tied',
-'timezoneoffset' => 'Tiedsverschil¹',
-'servertime' => 'Servertied',
-'guesstimezone' => 'Vanuut de browser toevoehen',
-'allowemail' => 'Laet e-mail van aore gebrukers toe.',
-'defaultns' => "Standard in deêze naemruum'n zoeken:",
-'default' => 'standard',
-'files' => "Bestan'n",
+
+# Preferences page
+'preferences' => 'Vòkeuren',
+'mypreferences' => 'Mien vòkeuren',
+'prefs-edits' => 'Antal bewerkiengen:',
+'prefsnologin' => 'Nie anemeld',
+'prefsnologintext' => 'Je mò <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} anemeld]</span> zien om je vòkeuren te kunn\'n instell\'n.',
+'changepassword' => 'Wachtwoôrd wiezigen',
+'prefs-skin' => 'Vurmhevieng',
+'skin-preview' => 'Voevertoônienge',
+'prefs-math' => 'Formules',
+'datedefault' => 'Hin vòkeur',
+'prefs-datetime' => 'Daotum en tied',
+'prefs-personal' => 'Gebrukersprofiel',
+'prefs-rc' => 'Juust angepast',
+'prefs-watchlist' => 'Volglieste',
+'prefs-watchlist-days' => 'Daehen weer te heven in de volglieste:',
+'prefs-watchlist-edits' => 'Maximaol antal bewerkiengen in de uutebreide volglieste:',
+'prefs-misc' => 'Rest',
+'saveprefs' => 'Opslaene',
+'resetprefs' => 'Nie opeslogen wiezigiengen herstellen',
+'prefs-editing' => 'Bewerken',
+'rows' => 'Rehels:',
+'columns' => "Kolomm'n:",
+'searchresultshead' => 'Zoek',
+'resultsperpage' => "Resultaot'n per pagina:",
+'contextlines' => 'Rehels per resultaot:',
+'contextchars' => 'Context per rehel:',
+'stub-threshold' => 'Drempel voe markerieng <a href="#" class="stub">stompje</a>:',
+'recentchangesdays' => 'Antal daehen weer te heven in Juust angepast:',
+'recentchangescount' => "Antal pagina's in Juust angepast:",
+'savedprefs' => 'Je vòkeuren zien opeslogen.',
+'timezonelegend' => 'Tiedzône',
+'localtime' => 'Lokaole tied',
+'timezoneoffset' => 'Tiedsverschil¹',
+'servertime' => 'Servertied',
+'guesstimezone' => 'Vanuut de browser toevoehen',
+'allowemail' => 'Laet e-mail van aore gebrukers toe.',
+'defaultns' => "Standard in deêze naemruum'n zoeken:",
+'default' => 'standard',
+'prefs-files' => "Bestan'n",
+'youremail' => 'Jen e-mailadres:',
+'username' => 'Gebrukersnaem:',
+'uid' => 'Gebrukersnummer:',
+'yourrealname' => 'Jen echen naam:',
+'yourlanguage' => 'Taele:',
+'yournick' => 'Tekst voe onderteêkenienge:',
+'badsig' => 'Ongeldege andteêkenienge; kiek de [[HTML]]-expressies nae.',
+'badsiglength' => 'Te lange naem; ie mag uut maximaol $1 {{PLURAL:$1|letter|letters}} bestae.',
+'email' => 'E-mail',
+'prefs-help-realname' => 'Echen naem is opsjoneel, a je dezen opgeef kan deêze naem gebruukt worn om je erkennieng te heven voe je werk.',
+'prefs-help-email' => "E-mailadres is opsjoneel, mè stel aore in staet contact mie je op te neem'n via je gebrukers- of overlegpagina zonder da je jen identiteit priesheef.",
+'prefs-help-email-required' => 'Iervoe is een e-mailadres noôdig.',
# User rights
-'userrights' => 'Gebrukersrechenbeheer', # Not used as normal message but as header for the special page itself
+'userrights' => 'Gebrukersrechenbeheer',
'userrights-lookup-user' => "Gebrukershroep'n beheern",
'userrights-user-editname' => 'Voer een gebrukersnaem in:',
'editusergroup' => "Gebrukershroep'n wiezigen",
@@ -949,6 +925,8 @@ Een nie anekruusd vienkvakje beteêken da de gebruker hin lid is van de hroep.",
# Recent changes linked
'recentchangeslinked' => 'Gerelateerde bewerkiengen',
+'recentchangeslinked-feed' => 'Gerelateerde bewerkiengen',
+'recentchangeslinked-toolbox' => 'Gerelateerde bewerkiengen',
'recentchangeslinked-title' => 'Wiezigiengen verwant an "$1"',
'recentchangeslinked-noresult' => "Der zien hin bewerkiengen in de heheven periode ewist op de pagina's die an vanaf ier elienkt worn.",
'recentchangeslinked-page' => 'Paginanaem:',
@@ -957,7 +935,6 @@ Een nie anekruusd vienkvakje beteêken da de gebruker hin lid is van de hroep.",
# Upload
'upload' => 'Upload bestand',
'uploadbtn' => "Bestand upload'n",
-'reupload' => "Opnieuw upload'n",
'reuploaddesc' => "Upload annuleern en teruggaene ni 't uploadformelier",
'uploadnologin' => 'Nie anemeld',
'uploadnologintext' => "Je mò [[Special:UserLogin|anemeld]] zien
@@ -992,6 +969,9 @@ De lèste lienk is bedoeld voe mediabestan'n die an hin plaetje zien.",
'badfilename' => 'Bestandsnaem is veranderd nae "$1".',
'watchthisupload' => 'Volg deêze bladzie',
+# File description page
+'file-anchor-link' => 'Bestand',
+
# Random page
'randompage' => 'Bladzie op goed geluk',
@@ -1064,7 +1044,7 @@ A je de bladzie laeter weêr van je volglieste afaele wil, klik dan op \"nie me
# Rollback
'alreadyrolled' => 'De lèste bewerkienge op [[$1]] deu [[User:$2|$2]] ([[User talk:$2|Overleggienge]]) kan nie vrommegedraoid ore; iemand aors eit de bladzie al bewerkt of ersteld.
De lèste bewerkienge wier gedaen deu [[User:$3|$3]] ([[User talk:$3|Overleggienge]]).',
-'revertpage' => 'Wiezigingen deur [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) teruggedraoid nae de lèste versie van [[User:$1|$1]]', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'revertpage' => 'Wiezigingen deur [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) teruggedraoid nae de lèste versie van [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Beschermlogboek',
@@ -1081,6 +1061,9 @@ De lèste bewerkienge wier gedaen deu [[User:$3|$3]] ([[User talk:$3|Overleggien
'contributions' => 'Biedraegen gebruker',
'mycontris' => 'Mien biedraegen',
+'sp-contributions-talk' => 'Overleg',
+'sp-contributions-userrights' => 'Gebrukersrechenbeheer',
+
# What links here
'whatlinkshere' => 'Links nae deze bladzie',
@@ -1120,8 +1103,6 @@ Kiest 'n aore naem.",
'allmessagescurrent' => 'Tekst van noe',
'allmessagestext' => "Dit is 'n liest van aolle systeemteksten die-an in de MediaWiki-naemruumte stae.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' kan nie gebruukt ore om'at '''\$wgUseDatabaseMessages''' uutgeschaekeld staet.",
-'allmessagesfilter' => 'Zoek nae systeemteksten mee...',
-'allmessagesmodified' => 'Laet alleêne de veranderde teksten zieë',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Mien gebrukersbladzie',
@@ -1138,6 +1119,17 @@ Kiest 'n aore naem.",
'tooltip-n-recentchanges' => 'Bekiek wat-a juust veranderd is op deêze wiki',
'tooltip-watch' => 'Voeg deêze bladzie toe an de volglieste',
+# Math errors
+'math_failure' => 'Parsen mislukt',
+'math_unknown_error' => 'onbekende fout',
+'math_unknown_function' => 'onbekende functie',
+'math_lexing_error' => 'lexicohraofische fout',
+'math_syntax_error' => 'syntactische fout',
+'math_image_error' => 'PNG-omzettieng is mislukt. Hi nae of an latex, dvips en gs correct heïnstalleerd zien en zet om',
+'math_bad_tmpdir' => "De map voe tiedelijke bestan'n voe wiskundihe formules besti nie of kan nie emikt worn",
+'math_bad_output' => "De map voe bestan'n mie wiskundihe formules besti nie of kan nie emikt worn.",
+'math_notexvc' => "Kan 't prohramma texvc nie vin'n; stel aolles in volhens de beschrievieng in math/README.",
+
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aol',
'namespacesall' => 'aol',
diff --git a/languages/messages/MessagesZh.php b/languages/messages/MessagesZh.php
index 7890aac3..ec71c8ef 100644
--- a/languages/messages/MessagesZh.php
+++ b/languages/messages/MessagesZh.php
@@ -19,11 +19,9 @@ $fallback = 'zh-hans';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
- NS_MAIN => '',
NS_TALK => 'Talk',
NS_USER => 'User',
NS_USER_TALK => 'User_talk',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1_talk',
NS_FILE => 'File',
NS_FILE_TALK => 'File_talk',
@@ -34,7 +32,7 @@ $namespaceNames = array(
NS_HELP => 'Help',
NS_HELP_TALK => 'Help_talk',
NS_CATEGORY => 'Category',
- NS_CATEGORY_TALK => 'Category_talk'
+ NS_CATEGORY_TALK => 'Category_talk',
);
$namespaceAliases = array(
@@ -105,10 +103,9 @@ $specialPageAliases = array(
'Preferences' => array( '参数设置', '參數設置' ),
'Watchlist' => array( '监视列表', '監視列表' ),
'Recentchanges' => array( '最近更改' ),
- 'Recentchangeslinked' => array( '链出更改', '鏈出更改', '連出更改', '连出更改' ),
'Upload' => array( '上传文件', '上傳檔案', '上載檔案', '上载档案' ),
'Listfiles' => array( '文件列表', '檔案列表', '档案列表' ),
- 'Newimages' => array( '新建文件', '新建檔案', '新建档案'),
+ 'Newimages' => array( '新建文件', '新建檔案', '新建档案' ),
'Listusers' => array( '用户列表', '用戶列表' ),
'Listgrouprights' => array( '群组权限', '群組權限' ),
'Statistics' => array( '统计信息', '統計信息', '統計资讯', '统计资讯' ),
@@ -117,16 +114,16 @@ $specialPageAliases = array(
'Uncategorizedpages' => array( '未归类页面', '未歸類頁面' ),
'Uncategorizedcategories' => array( '未归类分类', '未歸類分類' ),
'Uncategorizedimages' => array( '未归类文件', '未歸類文件', '未歸類檔案', '未归类档案' ),
- 'Uncategorizedtemplates' => array( '未归类模版', '未歸類模板' ),
+ 'Uncategorizedtemplates' => array( '未归类模板', '未歸類模板' ),
'Unusedcategories' => array( '未使用分类', '未使用分類' ),
'Unusedimages' => array( '未使用文件', '未使用檔案', '未使用档案' ),
'Wantedpages' => array( '待撰页面', '待撰頁面' ),
'Wantedcategories' => array( '待撰分类', '待撰分類' ),
'Wantedfiles' => array( '需要的文件', '需要的檔案', '需要的档案' ),
- 'Wantedtemplates' => array( '需要的模板', '需要的模板' ),
+ 'Wantedtemplates' => array( '需要的模板' ),
'Mostlinked' => array( '最多链接页面', '最多連結頁面' ),
'Mostlinkedcategories' => array( '最多链接分类', '最多連結分類' ),
- 'Mostlinkedtemplates' => array( '最多链接模版', '最多連結模板' ),
+ 'Mostlinkedtemplates' => array( '最多链接模板', '最多連結模板' ),
'Mostimages' => array( '最多链接文件', '最多鏈接文件', '最多連結檔案', '最多连结档案' ),
'Mostcategories' => array( '最多分类页面', '最多分類頁面' ),
'Mostrevisions' => array( '最多修订页面', '最多修訂頁面' ),
@@ -140,12 +137,13 @@ $specialPageAliases = array(
'Protectedtitles' => array( '已保护标题', '已保護標題' ),
'Allpages' => array( '所有页面', '所有頁面' ),
'Prefixindex' => array( '前缀索引', '前綴索引' ),
- 'Ipblocklist' => array( '封禁列表', '封禁列表' ),
+ 'Ipblocklist' => array( '封禁列表' ),
'Specialpages' => array( '特殊页面', '特殊頁面' ),
'Contributions' => array( '用户贡献', '用戶貢獻' ),
'Emailuser' => array( '电邮用户', '電郵用戶' ),
'Confirmemail' => array( '确认电子邮件', '確認電子郵件' ),
'Whatlinkshere' => array( '链入页面', '鏈入頁面', '連入頁面', '连入页面' ),
+ 'Recentchangeslinked' => array( '链出更改', '鏈出更改', '連出更改', '连出更改' ),
'Movepage' => array( '移动页面', '移動頁面' ),
'Booksources' => array( '网络书源', '網絡書源', '網路書源', '网路书源' ),
'Categories' => array( '页面分类', '頁面分類' ),
diff --git a/languages/messages/MessagesZh_classical.php b/languages/messages/MessagesZh_classical.php
index 572b1bae..a58df396 100644
--- a/languages/messages/MessagesZh_classical.php
+++ b/languages/messages/MessagesZh_classical.php
@@ -2,6 +2,9 @@
/** Classical Chinese (文言)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesZh_cn.php b/languages/messages/MessagesZh_cn.php
index 802b0f2b..19b1d4eb 100644
--- a/languages/messages/MessagesZh_cn.php
+++ b/languages/messages/MessagesZh_cn.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author PhiLiP
* @author Wong128hk
*/
@@ -20,7 +21,4 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'portal' => '社区入口',
-# Move page
-'move-redirect-suppressed' => '已禁止重新定向',
-
);
diff --git a/languages/messages/MessagesZh_hans.php b/languages/messages/MessagesZh_hans.php
index 40cd26ef..9692a5ba 100644
--- a/languages/messages/MessagesZh_hans.php
+++ b/languages/messages/MessagesZh_hans.php
@@ -9,9 +9,11 @@
*
* @author Bencmq
* @author Biŋhai
+ * @author Franklsf95
* @author Gaoxuewei
* @author Gzdavidwong
* @author Horacewai2
+ * @author Jidanni
* @author Jimmy xu wrk
* @author KaiesTse
* @author Liangent
@@ -20,20 +22,20 @@
* @author O
* @author Onecountry
* @author PhiLiP
- * @author Philip
* @author Shinjiman
+ * @author Shizhao
* @author Wmr89502270
* @author Wong128hk
*/
+$fallback8bitEncoding = 'windows-936';
+
$namespaceNames = array(
NS_MEDIA => '媒体',
NS_SPECIAL => '特殊',
- NS_MAIN => '',
NS_TALK => '讨论',
NS_USER => '用户',
NS_USER_TALK => '用户讨论',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1讨论',
NS_FILE => '文件',
NS_FILE_TALK => '文件讨论',
@@ -44,7 +46,7 @@ $namespaceNames = array(
NS_HELP => '帮助',
NS_HELP_TALK => '帮助讨论',
NS_CATEGORY => '分类',
- NS_CATEGORY_TALK => '分类讨论'
+ NS_CATEGORY_TALK => '分类讨论',
);
$namespaceAliases = array(
@@ -82,13 +84,13 @@ $namespaceAliases = array(
$specialPageAliases = array(
'DoubleRedirects' => array( '双重重定向页面' ),
'BrokenRedirects' => array( '损坏的重定向页' ),
+ 'Disambiguations' => array( '消歧义页' ),
'Userlogin' => array( '用户登录' ),
'Userlogout' => array( '用户登出' ),
'CreateAccount' => array( '创建账户' ),
'Preferences' => array( '参数设置' ),
'Watchlist' => array( '监视列表' ),
'Recentchanges' => array( '最近更改' ),
- 'Recentchangeslinked' => array( '链出更改' ),
'Upload' => array( '上传文件' ),
'Listfiles' => array( '文件列表' ),
'Newimages' => array( '新建文件' ),
@@ -100,7 +102,7 @@ $specialPageAliases = array(
'Uncategorizedpages' => array( '未归类页面' ),
'Uncategorizedcategories' => array( '未归类分类' ),
'Uncategorizedimages' => array( '未归类文件' ),
- 'Uncategorizedtemplates' => array( '未归类模版' ),
+ 'Uncategorizedtemplates' => array( '未归类模板' ),
'Unusedcategories' => array( '未使用分类' ),
'Unusedimages' => array( '未使用文件' ),
'Wantedpages' => array( '待撰页面' ),
@@ -109,7 +111,7 @@ $specialPageAliases = array(
'Wantedtemplates' => array( '需要的模板' ),
'Mostlinked' => array( '最多链接页面' ),
'Mostlinkedcategories' => array( '最多链接分类' ),
- 'Mostlinkedtemplates' => array( '最多链接模版' ),
+ 'Mostlinkedtemplates' => array( '最多链接模板' ),
'Mostimages' => array( '最多链接文件' ),
'Mostcategories' => array( '最多分类页面' ),
'Mostrevisions' => array( '最多修订页面' ),
@@ -129,18 +131,28 @@ $specialPageAliases = array(
'Emailuser' => array( '电邮用户' ),
'Confirmemail' => array( '确认电子邮件' ),
'Whatlinkshere' => array( '链入页面' ),
+ 'Recentchangeslinked' => array( '链出更改' ),
'Movepage' => array( '移动页面' ),
+ 'Blockme' => array( '封禁我' ),
'Booksources' => array( '网络书源' ),
'Categories' => array( '页面分类' ),
'Export' => array( '导出页面' ),
'Version' => array( '版本信息' ),
'Allmessages' => array( '所有信息' ),
'Log' => array( '日志' ),
+ 'Blockip' => array( '查封用户' ),
'Undelete' => array( '恢复被删页面' ),
'Import' => array( '导入页面' ),
+ 'Lockdb' => array( '锁定数据库' ),
+ 'Unlockdb' => array( '解除数据库锁定' ),
'Userrights' => array( '用户权限' ),
'MIMEsearch' => array( 'MIME搜索' ),
+ 'FileDuplicateSearch' => array( '搜索重复文件' ),
+ 'Unwatchedpages' => array( '未被监视的页面' ),
+ 'Listredirects' => array( '重定向页面列表' ),
+ 'Revisiondelete' => array( '删除或恢复版本' ),
'Unusedtemplates' => array( '未使用模板' ),
+ 'Randomredirect' => array( '随机重定向页面' ),
'Mypage' => array( '我的用户页' ),
'Mytalk' => array( '我的讨论页' ),
'Mycontributions' => array( '我的贡献' ),
@@ -149,13 +161,19 @@ $specialPageAliases = array(
'Popularpages' => array( '热点页面' ),
'Search' => array( '搜索' ),
'Resetpass' => array( '修改密码' ),
+ 'Withoutinterwiki' => array( '没有跨语言链接的页面' ),
'MergeHistory' => array( '合并历史' ),
'Filepath' => array( '文件路径' ),
'Invalidateemail' => array( '不可识别的电邮地址' ),
'Blankpage' => array( '空白页面' ),
+ 'LinkSearch' => array( '搜索网页链接' ),
'DeletedContributions' => array( '已删除的用户贡献' ),
+ 'Tags' => array( '标签' ),
+ 'Activeusers' => array( '活跃用户' ),
);
+$linkTrail = '/^()(.*)$/sD';
+
$extraUserToggles = array(
'nolangconversion',
);
@@ -175,6 +193,8 @@ $bookstoreList = array(
'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1',
'亚马逊' => 'http://www.amazon.com/exec/obidos/ISBN=$1',
+ '卓越亚马逊' => 'http://www.amazon.cn/mn/advancedSearchApp?isbn=$1',
+ '当当网' => 'http://search.dangdang.com/search.aspx?key=$1',
'博客来书店' => 'http://www.books.com.tw/exep/prod/booksfile.php?item=$1',
'三民书店' => 'http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1',
'天下书店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1',
@@ -212,6 +232,7 @@ $messages = array(
'tog-enotifminoredits' => '在页面有小修改时也发邮件通知我',
'tog-enotifrevealaddr' => '在通知电子邮件列表中显示我的电子邮件地址',
'tog-shownumberswatching' => '显示监视此页的用户数',
+'tog-oldsig' => '原有签名的预览:',
'tog-fancysig' => '将签名以wiki文本对待(不产生自动链接)',
'tog-externaleditor' => '默认使用外部编辑器(供高级用户使用,需要在您的计算机上作出一些特别设置)',
'tog-externaldiff' => '默认使用外部差异分析(供高级用户使用,需要在您的计算机上作出一些特别设置)',
@@ -235,6 +256,13 @@ $messages = array(
'underline-never' => '从不使用',
'underline-default' => '浏览器默认',
+# Font style option in Special:Preferences
+'editfont-style' => '编辑区字体样式:',
+'editfont-default' => '浏览器默认',
+'editfont-monospace' => '等宽字体',
+'editfont-sansserif' => '非衬线字体',
+'editfont-serif' => '衬线字体',
+
# Dates
'sunday' => '星期日',
'monday' => '星期一',
@@ -294,7 +322,7 @@ $messages = array(
'category-media-header' => '分类“$1”的媒体',
'category-empty' => "''这个分类中尚未包含任何页面或媒体。''",
'hidden-categories' => '$1个隐藏分类',
-'hidden-category-category' => '隐藏分类', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隐藏分类',
'category-subcat-count' => '{{PLURAL:$2|此分类只有下列一个子分类。|此分类包含下列$1个子分类,共有$2个子分类。}}',
'category-subcat-count-limited' => '此分类包含下列$1个子分类。',
'category-article-count' => '{{PLURAL:$2|此分类只有下列一个页面。|此分类包含下列$1个页面,共有$2个页面。}}',
@@ -302,6 +330,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|此分类只有下列一个文件。|此分类包含下列$1个文件,共有$2个文件。}}',
'category-file-count-limited' => '此分类包含下列$1个文件。',
'listingcontinuesabbrev' => '续',
+'index-category' => '已做索引的页面',
+'noindex-category' => '未做索引的页面',
'mainpagetext' => "'''已成功安装 MediaWiki。'''",
'mainpagedocfooter' => '请访问 [http://meta.wikimedia.org/wiki/Help:Contents 用户手册] 以获得使用此 wiki 软件的信息!
@@ -312,10 +342,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ/zh-hans MediaWiki 常见问题解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布邮件列表]',
-'about' => '关于',
-'article' => '内容页面',
-'newwindow' => '(在新窗口中打开)',
-'cancel' => '取消',
+'about' => '关于',
+'article' => '内容页面',
+'newwindow' => '(在新窗口中打开)',
+'cancel' => '取消',
+'moredotdotdot' => '更多……',
+'mypage' => '我的页面',
+'mytalk' => '讨论页',
+'anontalk' => '该IP的对话页',
+'navigation' => '导航',
+'and' => '和',
+
+# Cologne Blue skin
'qbfind' => '查找',
'qbbrowse' => '浏览',
'qbedit' => '编辑',
@@ -323,15 +361,35 @@ $messages = array(
'qbpageinfo' => '页面信息',
'qbmyoptions' => '我的选项',
'qbspecialpages' => '特殊页面',
-'moredotdotdot' => '更多……',
-'mypage' => '我的页面',
-'mytalk' => '讨论页',
-'anontalk' => '该IP的对话页',
-'navigation' => '导航',
-'and' => '和',
-
-# Metadata in edit box
-'metadata_help' => '元数据:',
+'faq' => '常见问题解答',
+'faqpage' => 'Project:常见问题解答',
+
+# Vector skin
+'vector-action-addsection' => '加入主题',
+'vector-action-delete' => '删除',
+'vector-action-move' => '移动',
+'vector-action-protect' => '保护',
+'vector-action-undelete' => '恢复被删页面',
+'vector-action-unprotect' => '解除保护',
+'vector-namespace-category' => '分类',
+'vector-namespace-help' => '帮助页面',
+'vector-namespace-image' => '文件',
+'vector-namespace-main' => '页面',
+'vector-namespace-media' => '媒体页面',
+'vector-namespace-mediawiki' => '信息',
+'vector-namespace-project' => '计划页面',
+'vector-namespace-special' => '特殊页面',
+'vector-namespace-talk' => '讨论',
+'vector-namespace-template' => '模板',
+'vector-namespace-user' => '用户页面',
+'vector-view-create' => '创建',
+'vector-view-edit' => '编辑',
+'vector-view-history' => '查看历史',
+'vector-view-view' => '阅读',
+'vector-view-viewsource' => '查看源代码',
+'actions' => '动作',
+'namespaces' => '名字空间',
+'variants' => '变换',
'errorpagetitle' => '错误',
'returnto' => '返回到$1。',
@@ -381,18 +439,20 @@ $messages = array(
'otherlanguages' => '其他语言',
'redirectedfrom' => '(重定向自$1)',
'redirectpagesub' => '重定向页面',
-'lastmodifiedat' => '此页面最后修订于$1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '此页面最后修订于$1 $2。',
'viewcount' => '此页面已被浏览过$1次。',
'protectedpage' => '已保护页面',
'jumpto' => '跳转到:',
'jumptonavigation' => '导航',
'jumptosearch' => '搜索',
+'view-pool-error' => '抱歉,服务器在此时已超出负荷;这是由于过多用户试图查看该页面引起的。请在再次尝试访问前稍待片刻。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '关于{{SITENAME}}',
'aboutpage' => 'Project:关于',
'copyright' => '本站的全部文本内容在$1之条款下提供。',
-'copyrightpagename' => '{{SITENAME}}版权',
'copyrightpage' => '{{ns:project}}:版权信息',
'currentevents' => '当前事件',
'currentevents-url' => 'Project:当前事件',
@@ -400,8 +460,6 @@ $messages = array(
'disclaimerpage' => 'Project:免责声明',
'edithelp' => '编辑帮助',
'edithelppage' => 'Help:如何编辑页面',
-'faq' => '常见问题解答',
-'faqpage' => 'Project:常见问题解答',
'helppage' => 'Help:目录',
'mainpage' => '首页',
'mainpage-description' => '首页',
@@ -474,10 +532,6 @@ $messages = array(
'dberrortextcl' => '发生了数据库查询语法错误。最后一次数据库查询指令是:
“$1”
来自函数“$2”内。数据库返回错误“$3: $4”。',
-'noconnect' => '抱歉!网站遇到一些技术问题,无法连接数据库服务器。<br />
-$1',
-'nodb' => '无法选择数据库$1',
-'cachederror' => '以下页面是缓存中的副本,未必是最新版本。',
'laggedslavemode' => "'''警告''':页面可能未包含最近的更新。",
'readonly' => '数据库被锁定',
'enterlockreason' => '请输入锁定的原因,包括预计重新开放的时间',
@@ -495,6 +549,8 @@ $1',
'readonly_lag' => '从数据库服务器正在从主服务器上更新,数据库已被自动锁定',
'internalerror' => '内部错误',
'internalerror_info' => '内部错误:$1',
+'fileappenderrorread' => '当附加时无法读取"$1"。',
+'fileappenderror' => '无法将“$1”附加到“$2”。',
'filecopyerror' => '无法将文件“$1”复制到“$2”。',
'filerenameerror' => '无法将文件“$1”重命名为“$2”。',
'filedeleteerror' => '无法删除文件“$1”。',
@@ -504,7 +560,8 @@ $1',
'unexpected' => '非正常值:“$1”=“$2”。',
'formerror' => '错误:无法提交表单',
'badarticleerror' => '无法在此页进行该操作。',
-'cannotdelete' => '无法删除选定的页面或图片(它可能已经被其他人删除了)。',
+'cannotdelete' => '无法删除页面或图像 "$1"。
+它可能已被其他人删除了。',
'badtitle' => '错误的标题',
'badtitletext' => '所请求页面的标题是无效的、不存在,跨语言或跨wiki链接的标题错误。它可能包含一个或更多的不能用于标题的字符。',
'perfcached' => '下列是缓存数据,因此可能不是最新的:',
@@ -535,7 +592,6 @@ $2',
'virus-unknownscanner' => '未知的反病毒扫描器:',
# Login and logout pages
-'logouttitle' => '退出',
'logouttext' => "'''您现在已经退出。'''
您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份[[Special:UserLogin|登录]]。
@@ -543,7 +599,6 @@ $2',
'welcomecreation' => '== 欢迎,$1! ==
您的账户已经建立。
不要忘记设置[[Special:Preferences|{{SITENAME}}的个人参数]]。',
-'loginpagetitle' => '用户登录',
'yourname' => '用户名:',
'yourpassword' => '密码:',
'yourpasswordagain' => '再次输入密码:',
@@ -554,6 +609,7 @@ $2',
'nav-login-createaccount' => '登录/创建账户',
'loginprompt' => '您必须启用Cookies才能登录{{SITENAME}}。',
'userlogin' => '登录/创建账户',
+'userloginnocreate' => '登录',
'logout' => '退出',
'userlogout' => '退出',
'notloggedin' => '未登录',
@@ -565,28 +621,8 @@ $2',
'createaccountmail' => '通过电子邮件',
'badretype' => '您所输入的密码并不相同。',
'userexists' => '您所输入的用户名称已经存在,请另选一个名称。',
-'youremail' => '电子邮件:',
-'username' => '用户名:',
-'uid' => '用户ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|一|多}}组的成员:',
-'yourrealname' => '真实姓名:',
-'yourlanguage' => '界面语言:',
-'yourvariant' => '字体变换:',
-'yournick' => '签名:',
-'badsig' => '错误的原始签名。请检查HTML标签。',
-'badsiglength' => '签名过长。
-它的长度不可超过$1个字符。',
-'yourgender' => '性别:',
-'gender-unknown' => '未指定',
-'gender-male' => '男',
-'gender-female' => '女',
-'prefs-help-gender' => '可选:用以软件中的性别指定。此项资料将会被公开。',
-'email' => '电子邮箱',
-'prefs-help-realname' => '真实姓名为选填项。
-如果提供,可用于贡献署名。',
'loginerror' => '登录错误',
-'prefs-help-email' => '电子邮件为选填项,但是在重设密码时,需要用电子邮件将密码寄给您。你可以选择让别的用户通过用户页或用户讨论页与你联系,这样可不公开您的身份。',
-'prefs-help-email-required' => '需要电子邮件地址。',
+'createaccounterror' => '无法建立账户:$1',
'nocookiesnew' => '已成功创建新账户!侦测到您已关闭Cookies,请开启它并登录。',
'nocookieslogin' => '本站利用Cookies进行用户登录,侦测到您已关闭Cookies,请开启它并重新登录。',
'noname' => '你没有输入有效的用户名。',
@@ -595,9 +631,11 @@ $2',
'nosuchuser' => '找不到用户“$1”。用户名是大小写敏感且区分繁简体的。请检查您的拼写,或者[[Special:UserLogin/signup|建立一个新账户]]。',
'nosuchusershort' => '没有一个名为“<nowiki>$1</nowiki>”的用户。请检查您输入的文字是否有错误。',
'nouserspecified' => '你需要指定一个用户名。',
+'login-userblocked' => '这位用户已被封锁。不容许登录。',
'wrongpassword' => '您输入的密码错误,请再试一次。',
'wrongpasswordempty' => '您没有输入密码,请重试!',
-'passwordtooshort' => '您的密码不正确或太短,不能少于$1个字元,而且必须跟用户名不同。',
+'passwordtooshort' => '您的密码至少需要$1个字符。',
+'password-name-match' => '您的密码必须和您的用户名不相同。',
'mailmypassword' => '将新密码寄给我',
'passwordremindertitle' => '{{SITENAME}}的新临时密码',
'passwordremindertext' => '有人(可能是您,来自IP地址$1)已请求{{SITENAME}}的新密码($4)。
@@ -608,6 +646,7 @@ $2',
如果是其他人发出了该请求,或者您已经记起了您的密码并不准备改变它,
您可以忽略此消息并继续使用您的旧密码。',
'noemail' => '用户"$1"没有登记电子邮件地址。',
+'noemailcreate' => '您需要提供一个有效的电子邮件地址',
'passwordsent' => '用户"$1"的新密码已经寄往所登记的电子邮件地址。
请在收到后再登录。',
'blocked-mailpassword' => '您的IP地址处于查封状态而不允许编辑,为了安全起见,密码恢复功能已被禁用。',
@@ -626,9 +665,11 @@ $2',
'createaccount-text' => '有人在{{SITENAME}}中利用您的邮箱创建了一个名为 "$2" 的新帐户($4),密码是 "$3" 。您应该立即登录并更改密码。
如果该账户创建错误的话,您可以忽略此信息。',
+'usernamehasherror' => '用户名称不可以包含切细字符',
'login-throttled' => '您已经尝试多次的登录动作。
请稍等多一会再试。',
'loginlanguagelabel' => '语言:$1',
+'suspicious-userlogout' => '您登出的要求已经被拒绝,因为它可能是由已损坏的浏览器或者缓存代理传送。',
# Password reset dialog
'resetpass' => '更改密码',
@@ -641,18 +682,13 @@ $2',
'resetpass_submit' => '设定密码并登录',
'resetpass_success' => '您的密码已经被成功更改!
现在正为您登录...',
-'resetpass_bad_temporary' => '无效的临时密码。
-您可能已成功地更改了您的密码,或者已经请求一个新的临时密码。',
'resetpass_forbidden' => '无法更改密码',
'resetpass-no-info' => '您必须登录后直接进入这个页面。',
'resetpass-submit-loggedin' => '更改密码',
+'resetpass-submit-cancel' => '取消',
'resetpass-wrong-oldpass' => '无效的临时或现有的密码。
您可能已成功地更改了您的密码,或者已经请求一个新的临时密码。',
'resetpass-temp-password' => '临时密码:',
-'resetpass-log' => '密码重设日志',
-'resetpass-logtext' => '以下是由管理员重设他们密码的日志。',
-'resetpass-logentry' => '已更改$1的密码',
-'resetpass-comment' => '更改密码的理由:',
# Edit page toolbar
'bold_sample' => '粗体文字',
@@ -723,7 +759,6 @@ $2',
'blockededitsource' => "你对'''$1'''进行'''编辑'''的文字如下:",
'whitelistedittitle' => '登录后才可编辑',
'whitelistedittext' => '您必须先$1才可编辑页面。',
-'confirmedittitle' => '邮件确认后才可编辑',
'confirmedittext' => '在编辑此页之前您必须确认您的邮箱地址。请通过[[Special:Preferences|参数设置]]设置并验证您的邮箱地址。',
'nosuchsectiontitle' => '没有这个段落',
'nosuchsectiontext' => '您尝试编辑的章节并不存在。
@@ -739,13 +774,19 @@ $2',
如果您是不小心来到此页面,直接点击您浏览器中的“返回”按钮返回。',
'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
'noarticletext' => '此页面目前没有内容。您可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索此页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑此页]。</span>',
+'noarticletext-nopermission' => '此页目前没有内容,您可以在其它页[[Special:Search/{{PAGENAME}}|搜索此页标题]],
+或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有关日志]</span>。',
'userpage-userdoesnotexist' => '用户账户“$1”未曾创建。请在创建/编辑这个页面前先检查一下。',
+'userpage-userdoesnotexist-view' => '用户账户“$1”未曾创建。',
+'blocked-notice-logextract' => '这位用户现正被封锁。
+下面有最近的封锁纪录以供参考:',
'clearyourcache' => "'''注意:在保存以后,您必须清除浏览器的缓存才能看到所作出的改变。'''
'''Mozilla / Firefox / Safari''':按住''Shift''再点击''刷新'',或按下''Ctrl-F5''或''Ctrl-R''(在Macintosh上按下''Command-R'');
'''Konqueror''':只需点击''刷新''或按下''F5'';
'''Opera''':在''工具→首选项''中完整清除它们的缓存,或按下''Alt-F5'';
'''Internet Explorer''':按住''Ctrl''再点击''刷新'',或按下''Ctrl-F5''。",
-'usercssjsyoucanpreview' => "'''提示:''' 在保存前请用“显示预览”按钮来测试您新的 CSS/JS 。",
+'usercssyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
+'userjsyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
'usercsspreview' => "'''注意您只是在预览您的个人 CSS。'''
'''还没有保存!'''",
'userjspreview' => "'''注意您只是在测试/预览您的个人 JavaScript。'''
@@ -793,13 +834,16 @@ $2',
'readonlywarning' => "'''警告:数据库被锁定以进行维护,所以您目前将无法保存您的修改。'''您或许希望将本段文字先复制并保存到文本文件,并在稍后进行修改。
锁定数据库的管理员有如下解释:$1",
-'protectedpagewarning' => "'''警告:此页已经被保护,只有拥有管理员权限的用户才可修改。'''",
-'semiprotectedpagewarning' => "'''注意:''' 本页面被锁定,仅限注册用户编辑。",
+'protectedpagewarning' => "'''警告:此页已经被保护,只有拥有管理员权限的用户才可修改。'''
+最近的日志在下面提供以便参考:",
+'semiprotectedpagewarning' => "'''注意:''' 本页面被锁定,仅限注册用户编辑。
+最近的日志在下面提供以便参考:",
'cascadeprotectedwarning' => '警告:本页已经被保护,只有拥有管理员权限的用户才可修改,因为本页已被以下连锁保护的{{PLURAL:$1|一个|多个}}页面所包含:',
-'titleprotectedwarning' => "'''警告:本页面已被锁上,需要[[Special:ListGroupRights|指定权限]]方可创建。'''",
-'templatesused' => '在这个页面上使用的模板有:',
-'templatesusedpreview' => '此次预览中使用的模板有:',
-'templatesusedsection' => '在这个段落上使用的模板有:',
+'titleprotectedwarning' => "'''警告:本页面已被锁上,需要[[Special:ListGroupRights|指定权限]]方可创建。'''
+最近的日志在下面提供以便参考:",
+'templatesused' => '在这个页面上使用的{{PLURAL:$1|模板|模板}}有:',
+'templatesusedpreview' => '此次预览中使用的{{PLURAL:$1|模板|模板}}有:',
+'templatesusedsection' => '在这个段落上使用的{{PLURAL:$1|模板|模板}}有:',
'template-protected' => '(保护)',
'template-semiprotected' => '(半保护)',
'hiddencategories' => '这个页面是属于$1个隐藏分类的成员:',
@@ -807,16 +851,18 @@ $2',
'nocreatetitle' => '创建页面受限',
'nocreatetext' => '{{SITENAME}}限制了创建新页面的功能。你可以返回并编辑已有的页面,或者[[Special:UserLogin|登录或创建新账户]]。',
'nocreate-loggedin' => '您并无权限去创建新页面。',
+'sectioneditnotsupported-title' => '不支持编辑段落',
+'sectioneditnotsupported-text' => '此页面不支持编辑段落。',
'permissionserrors' => '权限错误',
'permissionserrorstext' => '根据以下的{{PLURAL:$1|原因|原因}},您并无权限去做以下的动作:',
'permissionserrorstext-withaction' => '根据以下的{{PLURAL:$1|原因|原因}},您无权限进行$2操作:',
-'recreate-deleted-warn' => "'''警告: 你现在重新创建一个先前曾经删除过的页面。'''
+'recreate-moveddeleted-warn' => "'''警告: 你现在重新创建一个先前曾经删除过的页面。'''
你应该要考虑一下继续编辑这一个页面是否合适。
为方便起见,这一个页面的删除记录已经在下面提供:",
-'deleted-notice' => '这个页面已经删除。
-这个页面的删除日志已在下面提供以便参考。',
-'deletelog-fulllog' => '查看整个日志',
+'moveddeleted-notice' => '这个页面已经删除。
+这个页面的删除和移动日志已在下面提供以便参考。',
+'log-fulllog' => '查看完整日志',
'edit-hook-aborted' => '编辑被钩取消。
它并无给出解释。',
'edit-gone-missing' => '不能更新页面。
@@ -839,6 +885,7 @@ $2',
'post-expand-template-argument-category' => '包含着略过模板参数的页面',
'parser-template-loop-warning' => '检查到模板循环:[[$1]]',
'parser-template-recursion-depth-warning' => '模板递归深度越限($1)',
+'language-converter-depth-warning' => '字词转换器深度越限($1)',
# "Undo" feature
'undo-success' => '此编辑可以被撤销。请检查以下比较以核实这正是您想做的,然后保存以下更改完成撤销编辑。',
@@ -856,9 +903,9 @@ $2',
'viewpagelogs' => '查看此页面的日志',
'nohistory' => '此页没有修订记录。',
'currentrev' => '最新修订版本',
-'currentrev-asof' => '在$1的当前修订版本',
+'currentrev-asof' => '在$1的最新修订版本',
'revisionasof' => '在$1所做的修订版本',
-'revision-info' => '在$1由$2所做的修订版本', # Additionally available: $3: revision id
+'revision-info' => '在$1由$2所做的修订版本',
'previousrevision' => '←上一修订',
'nextrevision' => '下一修订→',
'currentrevisionlink' => '最新修订',
@@ -870,7 +917,7 @@ $2',
'histlegend' => "差异选择:标记要比较修订版本的单选按钮并点击底部的按钮进行比较。<br />
说明:'''({{int:cur}})''' 指与最新修订版本比较,'''({{int:last}})''' 指与前一个修订版本比较,'''{{int:minoreditletter}}''' = 小修改。",
'history-fieldset-title' => '浏览历史',
-'deletedrev' => '[已删除]',
+'history-show-deleted' => '仅已删除的',
'histfirst' => '最早版本',
'histlast' => '最新版本',
'historysize' => '($1字节)',
@@ -879,69 +926,109 @@ $2',
# Revision feed
'history-feed-title' => '修订历史',
'history-feed-description' => '本站上此页的修订历史',
-'history-feed-item-nocomment' => '$1在$2', # user at time
+'history-feed-item-nocomment' => '$1在$2',
'history-feed-empty' => '所请求的页面不存在。它可能已被删除或重命名。
尝试[[Special:Search|搜索本站]]获得相关的新建页面。',
# Revision deletion
-'rev-deleted-comment' => '(注释已移除)',
-'rev-deleted-user' => '(用户名已移除)',
-'rev-deleted-event' => '(日志动作已移除)',
-'rev-deleted-text-permission' => "该页面修订已经被'''删除'''。
-在[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 删除日志]中您可能会查看到详细的信息。",
-'rev-deleted-text-view' => "该页面修订已经被'''删除'''。作为管理员,您可以查看它;
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 删除日志]中您可能会查看到详细的信息。",
-'rev-deleted-no-diff' => "因为其中一次修订'''删除''',您不可以查看这个差异。
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可能有更多的信息。",
-'rev-deleted-unhide-diff' => "该页面的其中一次修订已经被'''删除'''。
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可能有更多的信息。
+'rev-deleted-comment' => '(注释已移除)',
+'rev-deleted-user' => '(用户名已移除)',
+'rev-deleted-event' => '(日志动作已移除)',
+'rev-deleted-user-contribs' => '[用户名或IP地址已移除 - 从贡献中隐藏编辑]',
+'rev-deleted-text-permission' => "该页面修订已被'''删除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]中可以找到详细的信息。",
+'rev-deleted-text-unhide' => "该页面修订已经被'''删除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]中可以找到详细的信息。
作为管理员,如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
-'rev-delundel' => '显示/隐藏',
-'revisiondelete' => '删除/恢复删除修订',
-'revdelete-nooldid-title' => '无效的目标修订',
-'revdelete-nooldid-text' => '您尚未指定一个目标修订去进行这个功能、
+'rev-suppressed-text-unhide' => "该页面修订已经被'''废止'''。
+在[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 废止日志]中可以找到详细的信息。
+作为管理员,如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
+'rev-deleted-text-view' => "该页面修订已经被'''删除'''。作为管理员,您可以查看它;
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到详细的信息。",
+'rev-suppressed-text-view' => "该页面修订已经被'''废止'''。作为管理员,您可以查看它;
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]中可以找到详细的信息。",
+'rev-deleted-no-diff' => "因为其中一次修订已被'''删除''',您不可以查看这个差异。
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到更多的信息。",
+'rev-suppressed-no-diff' => "该页面的其中一次修订已经被'''删除''',你不可以查看这次的修订。",
+'rev-deleted-unhide-diff' => "该页面的其中一次修订已经被'''删除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到更多的信息。
+作为管理员,如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
+'rev-suppressed-unhide-diff' => "该页面的其中一次修订已经被'''废止'''。
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]中可以找到更多的资料。
+作为管理员,如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
+'rev-deleted-diff-view' => "差异中的一次修订已被'''删除'''。
+作为管理员,您可以查看此差异。详细信息可在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中找到。",
+'rev-suppressed-diff-view' => "差异中的一次修订已被'''废止'''。
+作为管理员,您可以查看此差异。详细信息可在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]中找到。",
+'rev-delundel' => '显示/隐藏',
+'rev-showdeleted' => '显示',
+'revisiondelete' => '删除/恢复删除修订',
+'revdelete-nooldid-title' => '无效的目标修订',
+'revdelete-nooldid-text' => '您尚未指定一个目标修订去进行这个功能、
所指定的修订不存在,或者您尝试去隐藏现时的修订。',
-'revdelete-nologtype-title' => '没有给出日志类型',
-'revdelete-nologtype-text' => '您尚未指定一种日志类型去做这个动作。',
-'revdelete-toomanytargets-title' => '过多的目标',
-'revdelete-toomanytargets-text' => '您指定了过多的目标去做这个动作。',
-'revdelete-nologid-title' => '无效的日志项目',
-'revdelete-nologid-text' => '您尚未指定一个目标日志项目去进行这个动作或指定的项目不存在。',
-'revdelete-selected' => "'''选取'''[[:$1]]'''的$2次修订:'''",
-'logdelete-selected' => "'''选取'''$1'''的日志项目:'''",
-'revdelete-text' => "'''删除的修订仍将显示在页面历史中, 但它们的文本内容已不能被公众访问。'''
-在{{SITENAME}}的其他管理员将仍能访问隐藏的内容并通过与此相同的界面恢复删除,除非站点工作者进行了一些附加的限制。
-请确认您肯定去做的话,您就要明白到后果,以及这个程序符合[[{{MediaWiki:Policy-url}}|政策]]。",
-'revdelete-suppress-text' => "'''只有'''出现以下的情况下才应阻止访问:
+'revdelete-nologtype-title' => '没有给出日志类型',
+'revdelete-nologtype-text' => '您尚未指定一种日志类型去做这个动作。',
+'revdelete-nologid-title' => '无效的日志项目',
+'revdelete-nologid-text' => '您尚未指定一个目标日志项目去进行这个动作或指定的项目不存在。',
+'revdelete-no-file' => '指定的文件不存在。',
+'revdelete-show-file-confirm' => '你是否真的要查看文件“<nowiki>$1</nowiki>”在$2 $3时的已删除修订?',
+'revdelete-show-file-submit' => '是',
+'revdelete-selected' => "'''选取'''[[:$1]]'''的$2次修订:'''",
+'logdelete-selected' => "'''选取'''$1'''的日志项目:'''",
+'revdelete-text' => "'''删除的修订仍将显示在页面历史中, 但它们的文本内容已不能被公众访问。'''
+在{{SITENAME}}的其他管理员将仍能访问隐藏的内容并通过与此相同的界面恢复删除,除非站点工作者进行了一些附加的限制。",
+'revdelete-confirm' => '请确认您肯定去做的话,您就要明白到后果,以及这个程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-suppress-text' => "'''只有'''出现以下的情况下才应阻止访问:
* 不合适的个人信息
*: ''家庭地址、电话号码、身份证号码等。''",
-'revdelete-legend' => '设置可见性之限制',
-'revdelete-hide-text' => '隐藏修订文本',
-'revdelete-hide-name' => '隐藏动作和目标',
-'revdelete-hide-comment' => '隐藏编辑摘要',
-'revdelete-hide-user' => '隐藏编辑者的用户名/IP地址',
-'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
-'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
-'revdelete-hide-image' => '隐藏文件内容',
-'revdelete-unsuppress' => '在已恢复的修订中移除限制',
-'revdelete-log' => '理由:',
-'revdelete-submit' => '应用于选中的修订',
-'revdelete-logentry' => '[[$1]]的修订可见性已更改',
-'logdelete-logentry' => '[[$1]]的事件可见性已更改',
-'revdelete-success' => "'''修订的可见性已经成功更新。'''",
-'logdelete-success' => "'''事件的可见性已经成功设置。'''",
-'revdel-restore' => '更改可见性',
-'pagehist' => '页面历史',
-'deletedhist' => '已删除之历史',
-'revdelete-content' => '内容',
-'revdelete-summary' => '编辑摘要',
-'revdelete-uname' => '用户名',
-'revdelete-restricted' => '已将限制应用到管理员',
-'revdelete-unrestricted' => '已移除对管理员的限制',
-'revdelete-hid' => '隐藏 $1',
-'revdelete-unhid' => '不隐藏 $1',
-'revdelete-log-message' => '$1的$2次修订',
-'logdelete-log-message' => '$1的$2项事件',
+'revdelete-legend' => '设置可见性之限制',
+'revdelete-hide-text' => '隐藏修订文本',
+'revdelete-hide-image' => '隐藏文件内容',
+'revdelete-hide-name' => '隐藏动作和目标',
+'revdelete-hide-comment' => '隐藏编辑摘要',
+'revdelete-hide-user' => '隐藏编辑者的用户名/IP地址',
+'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
+'revdelete-radio-same' => '(勿更改)',
+'revdelete-radio-set' => '是',
+'revdelete-radio-unset' => '否',
+'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
+'revdelete-unsuppress' => '在已恢复的修订中移除限制',
+'revdelete-log' => '理由:',
+'revdelete-submit' => '应用于选中的{{PLURAL:$1|修订}}',
+'revdelete-logentry' => '[[$1]]的修订可见性已更改',
+'logdelete-logentry' => '[[$1]]的事件可见性已更改',
+'revdelete-success' => "'''修订的可见性已经成功更新。'''",
+'revdelete-failure' => "'''修订的可见性无法更新:'''
+$1",
+'logdelete-success' => "'''事件的可见性已经成功设置。'''",
+'logdelete-failure' => "'''事件的可见性无法设置:'''
+$1",
+'revdel-restore' => '更改可见性',
+'pagehist' => '页面历史',
+'deletedhist' => '已删除之历史',
+'revdelete-content' => '内容',
+'revdelete-summary' => '编辑摘要',
+'revdelete-uname' => '用户名',
+'revdelete-restricted' => '已将限制应用到管理员',
+'revdelete-unrestricted' => '已移除对管理员的限制',
+'revdelete-hid' => '隐藏 $1',
+'revdelete-unhid' => '不隐藏 $1',
+'revdelete-log-message' => '$1的$2次修订',
+'logdelete-log-message' => '$1的$2项事件',
+'revdelete-hide-current' => '正在隐藏于$1 $2之项目错误:这个是现时的修订,不可以隐藏。',
+'revdelete-show-no-access' => '正在显示于$1 $2之项目错误:这个项目已经标示为"已限制",您对它并无通行权。',
+'revdelete-modify-no-access' => '正在更改于$1 $2之项目错误:这个项目已经标示为"已限制",您对它并无通行权。',
+'revdelete-modify-missing' => '正在更改项目ID $1错误:它在资料库中遗失!',
+'revdelete-no-change' => '警告:于$1 $2之项目已经请求了可见性的设置。',
+'revdelete-concurrent-change' => '正在更改于$1 $2之项目错误:当我们尝试更改它的设置时,已经被另一些人更改过。请检查纪录。',
+'revdelete-only-restricted' => '在隐藏$1 $2的项目时发生错误:您不能在选择了另一可见性选项后废止管理员查看该项目。',
+'revdelete-reason-dropdown' => '*常用删除理由
+** 侵犯版权
+** 不合适的个人资料',
+'revdelete-otherreason' => '其它/附加的理由:',
+'revdelete-reasonotherlist' => '其它理由',
+'revdelete-edit-reasonlist' => '编辑删除埋由',
+'revdelete-offender' => '修订著者:',
# Suppression log
'suppressionlog' => '阻止日志',
@@ -978,67 +1065,13 @@ $2',
'mergelogpagetext' => '以下是一个最近由一个页面的修订历史合并到另一个页面的列表。',
# Diffs
-'history-title' => '“$1”的修订历史',
-'difference' => '(修订版本间差异)',
-'lineno' => '第$1行:',
-'compareselectedversions' => '比较选定的修订版本',
-'visualcomparison' => '可见比较',
-'wikicodecomparison' => 'Wikitext比较',
-'editundo' => '撤销',
-'diff-multi' => '($1个中途的修订版本没有显示)',
-'diff-movedto' => '移动到$1',
-'diff-styleadded' => '已加入$1样式表',
-'diff-added' => '已加入$1',
-'diff-changedto' => '更改到$1',
-'diff-movedoutof' => '移除自$1',
-'diff-styleremoved' => '已移除$1样式表',
-'diff-removed' => '已移除$1',
-'diff-changedfrom' => '更改自$1',
-'diff-src' => '源码',
-'diff-withdestination' => '跟$1目的地',
-'diff-with' => '跟 $1 $2',
-'diff-with-final' => '和 $1 $2',
-'diff-width' => '宽',
-'diff-height' => '高',
-'diff-p' => "'''段落'''",
-'diff-blockquote' => "'''引言'''",
-'diff-h1' => "'''标题(1级)'''",
-'diff-h2' => "'''标题(2级)'''",
-'diff-h3' => "'''标题(3级)'''",
-'diff-h4' => "'''标题(4级)'''",
-'diff-h5' => "'''标题(5级)'''",
-'diff-pre' => "'''PRE预格式化块'''",
-'diff-div' => "'''DIV区'''",
-'diff-ul' => "'''无序列表'''",
-'diff-ol' => "'''有序列表'''",
-'diff-li' => "'''表项目'''",
-'diff-table' => "'''表'''",
-'diff-tbody' => "'''表内容'''",
-'diff-tr' => "'''行'''",
-'diff-td' => "'''格'''",
-'diff-th' => "'''表头'''",
-'diff-br' => "'''换行'''",
-'diff-hr' => "'''水平线'''",
-'diff-code' => "'''计算机代码块'''",
-'diff-dl' => "'''定义列表'''",
-'diff-dt' => "'''定义词'''",
-'diff-dd' => "'''解释'''",
-'diff-input' => "'''输入'''元素",
-'diff-form' => "'''表单'''元素",
-'diff-img' => "'''图像'''",
-'diff-span' => "'''SPAN内联区'''",
-'diff-a' => "'''链接'''",
-'diff-i' => "'''斜体'''",
-'diff-b' => "'''粗体'''",
-'diff-strong' => "'''强调'''",
-'diff-em' => "'''重点'''",
-'diff-font' => "'''字体'''",
-'diff-big' => "'''大'''",
-'diff-del' => "'''已删除'''",
-'diff-tt' => "'''固定宽度'''",
-'diff-sub' => "'''下标'''",
-'diff-sup' => "'''上标'''",
-'diff-strike' => "'''删除线'''",
+'history-title' => '“$1”的修订历史',
+'difference' => '(修订版本间差异)',
+'lineno' => '第$1行:',
+'compareselectedversions' => '比较选定的修订版本',
+'showhideselectedversions' => '显示/隐藏选定的修订版本',
+'editundo' => '撤销',
+'diff-multi' => '($1个中途的修订版本没有显示)',
# Search results
'searchresults' => '搜索结果',
@@ -1046,9 +1079,6 @@ $2',
'searchresulttext' => '有关搜索{{SITENAME}}的更多信息,参见[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => '搜索\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 开头的页面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有链接到“$1”的页面]])',
'searchsubtitleinvalid' => "搜索'''$1'''",
-'noexactmatch' => "'''未找到标题为“$1”的页面。'''
-您可以考虑[[:$1|创建此页面]]。",
-'noexactmatch-nocreate' => "'''未找到标题为“$1”的页面。'''",
'toomanymatches' => '返回的匹配结果过多,请尝试不同的查询词',
'titlematches' => '页面标题匹配',
'notitlematches' => '没有找到匹配页面题目',
@@ -1059,16 +1089,15 @@ $2',
'prevn-title' => '前$1项结果',
'nextn-title' => '后$1项结果',
'shown-title' => '每页显示$1项结果',
-'viewprevnext' => '查看($1)($2)($3)',
+'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
'searchmenu-legend' => '搜索选项',
'searchmenu-exists' => "'''在该wiki上已有页面名叫“[[:$1]]”'''",
'searchmenu-new' => "'''在该wiki上新建页面“[[:$1]]”!'''",
'searchhelp-url' => 'Help:目录',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去浏览以此为首的页面]]',
'searchprofile-articles' => '内容页面',
-'searchprofile-articles-and-proj' => '内容和专题页面',
-'searchprofile-project' => '专题页面',
-'searchprofile-images' => '文件',
+'searchprofile-project' => '帮助和计划页面',
+'searchprofile-images' => '多媒体',
'searchprofile-everything' => '全部',
'searchprofile-advanced' => '高级',
'searchprofile-articles-tooltip' => '在$1中搜索',
@@ -1076,8 +1105,6 @@ $2',
'searchprofile-images-tooltip' => '搜索文件',
'searchprofile-everything-tooltip' => '搜索全部(包括讨论页面)',
'searchprofile-advanced-tooltip' => '在自定义的名字空间中搜索',
-'prefs-search-nsdefault' => '使用默认值搜索:',
-'prefs-search-nscustom' => '搜索自定义名字空间:',
'search-result-size' => '$1($2个字)',
'search-result-score' => '相关度:$1%',
'search-redirect' => '(重定向 $1)',
@@ -1090,11 +1117,12 @@ $2',
'search-mwsuggest-disabled' => '无建议',
'search-relatedarticle' => '相关',
'mwsuggest-disable' => '禁用AJAX建议',
+'searcheverything-enable' => '在所有名字空间中搜索',
'searchrelated' => '相关',
'searchall' => '所有',
'showingresults' => '下面显示从第<b>$2</b>条开始的<b>$1</b>条结果:',
'showingresultsnum' => '下面显示从第<b>$2</b>条开始的<b>$3</b>条结果:',
-'showingresultstotal' => "下面显示从第'''$1{{PLURAL:$4|| - $2}}'''项,总共'''$3'''项之结果",
+'showingresultsheader' => "对'''$4'''的{{PLURAL:$5|第'''$1'''至第'''$3'''项结果|第'''$1-$2'''项,共'''$3'''项结果}}",
'nonefound' => "'''注意''':只有部分名字空间的页面会被默认搜索。尝试在您的搜索语句前添加“all:”前缀,这样可以搜索全部页面(包括讨论页、模板等),或者亦可使用所需名字空间作为前缀。",
'search-nonefound' => '找不到和查询相匹配的结果。',
'powersearch' => '高级搜索',
@@ -1102,111 +1130,147 @@ $2',
'powersearch-ns' => '在以下的名字空间中搜索:',
'powersearch-redir' => '重定向列表',
'powersearch-field' => '搜索',
+'powersearch-togglelabel' => '选择:',
+'powersearch-toggleall' => '全选',
+'powersearch-togglenone' => '全不选',
'search-external' => '外部搜索',
'searchdisabled' => '{{SITENAME}}的搜索已被禁用。您可以暂时使用Google进行搜索,须注意他们索引的{{SITENAME}}内容可能会过时。',
+# Quickbar
+'qbsettings' => '快速导航栏',
+'qbsettings-none' => '无',
+'qbsettings-fixedleft' => '左侧固定',
+'qbsettings-fixedright' => '右侧固定',
+'qbsettings-floatingleft' => '左侧漂移',
+'qbsettings-floatingright' => '右侧漂移',
+
# Preferences page
-'preferences' => '参数设置',
-'mypreferences' => '设置',
-'prefs-edits' => '编辑数量:',
-'prefsnologin' => '尚未登录',
-'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} 登录]</span>才能设置个人参数。',
-'prefsreset' => '参数已被重新设置。',
-'qbsettings' => '快速导航栏',
-'qbsettings-none' => '无',
-'qbsettings-fixedleft' => '左侧固定',
-'qbsettings-fixedright' => '右侧固定',
-'qbsettings-floatingleft' => '左侧漂移',
-'qbsettings-floatingright' => '右侧漂移',
-'changepassword' => '更改密码',
-'skin' => '皮肤',
-'skin-preview' => '预览',
-'math' => '数学公式',
-'dateformat' => '日期格式',
-'datedefault' => '默认值',
-'datetime' => '日期和时间',
-'math_failure' => '解析失败',
-'math_unknown_error' => '未知错误',
-'math_unknown_function' => '未知函数',
-'math_lexing_error' => '句法错误',
-'math_syntax_error' => '语法错误',
-'math_image_error' => 'PNG转换失败;请检查是否正确安装了latex、dvips、gs和convert',
-'math_bad_tmpdir' => '无法写入或建立数学公式临时目录',
-'math_bad_output' => '无法写入或建立数学公式输出目录',
-'math_notexvc' => '无法执行texvc;请参照math/README进行配置。',
-'prefs-personal' => '用户资料',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '监视列表',
-'prefs-watchlist-days' => '监视列表中显示记录的天数:',
-'prefs-watchlist-days-max' => '(最多7天)',
-'prefs-watchlist-edits' => '在增强的监视列表中显示最多更改次数:',
-'prefs-watchlist-edits-max' => '(最多数量:1000)',
-'prefs-misc' => '杂项',
-'prefs-resetpass' => '更改密码',
-'saveprefs' => '保存',
-'resetprefs' => '清除未保存的更改',
-'restoreprefs' => '恢复所有默认设置',
-'textboxsize' => '编辑',
-'prefs-edit-boxsize' => '编辑框尺寸',
-'rows' => '行:',
-'columns' => '列:',
-'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
-'contextlines' => '每链显示行数:',
-'contextchars' => '每行显示字数:',
-'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
-'recentchangesdays' => '最近更改中的显示日数:',
-'recentchangesdays-max' => '(最大 $1 日)',
-'recentchangescount' => '最近更改、页面历史及日志页面中的默认编辑数:',
-'savedprefs' => '您的个人参数设置已经保存。',
-'timezonelegend' => '时区:',
-'timezonetext' => '¹输入当地时间与服务器时间(UTC)的时差。',
-'localtime' => '当地时间:',
-'timezoneselect' => '时区:',
-'timezoneuseserverdefault' => '使用服务器默认值',
-'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
-'servertime' => '服务器时间:',
-'guesstimezone' => '从浏览器填写',
-'timezoneregion-africa' => '非洲',
-'timezoneregion-america' => '美洲',
-'timezoneregion-antarctica' => '南极洲',
-'timezoneregion-arctic' => '北极',
-'timezoneregion-asia' => '亚洲',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => '澳大利亚',
-'timezoneregion-europe' => '欧洲',
-'timezoneregion-indian' => '印度洋',
-'timezoneregion-pacific' => '太平洋',
-'allowemail' => '接受来自其他用户的邮件',
-'prefs-searchoptions' => '搜索选项',
-'prefs-namespaces' => '名字空间',
-'defaultns' => '默认搜索的名字空间',
-'default' => '默认',
-'files' => '文件',
-'prefs-custom-css' => '自定义CSS',
-'prefs-custom-js' => '自定义JavaScript',
+'preferences' => '参数设置',
+'mypreferences' => '设置',
+'prefs-edits' => '编辑数量:',
+'prefsnologin' => '尚未登录',
+'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>才能设置个人参数。',
+'changepassword' => '更改密码',
+'prefs-skin' => '皮肤',
+'skin-preview' => '预览',
+'prefs-math' => '数学公式',
+'datedefault' => '默认值',
+'prefs-datetime' => '日期和时间',
+'prefs-personal' => '用户资料',
+'prefs-rc' => '最近更改',
+'prefs-watchlist' => '监视列表',
+'prefs-watchlist-days' => '监视列表中显示记录的天数:',
+'prefs-watchlist-days-max' => '最多7天',
+'prefs-watchlist-edits' => '在增强的监视列表中显示最多更改次数:',
+'prefs-watchlist-edits-max' => '最多数量:1000',
+'prefs-watchlist-token' => '监视列表权标:',
+'prefs-misc' => '杂项',
+'prefs-resetpass' => '更改密码',
+'prefs-email' => '邮箱选项',
+'prefs-rendering' => '外观',
+'saveprefs' => '保存',
+'resetprefs' => '清除未保存的更改',
+'restoreprefs' => '恢复所有默认设置',
+'prefs-editing' => '编辑',
+'prefs-edit-boxsize' => '编辑框尺寸',
+'rows' => '行:',
+'columns' => '列:',
+'searchresultshead' => '搜索',
+'resultsperpage' => '每页显示链接数:',
+'contextlines' => '每链显示行数:',
+'contextchars' => '每行显示字数:',
+'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
+'recentchangesdays' => '最近更改中的显示日数:',
+'recentchangesdays-max' => '最大 $1 日',
+'recentchangescount' => '默认显示的编辑数:',
+'prefs-help-recentchangescount' => '这个包括最近更改、页面历史以及日志。',
+'prefs-help-watchlist-token' => '此栏填写的密钥可以生成您监视列表的RSS源。任何知晓本栏密钥的人都能阅读您的监视列表,因此请使用安全的数值。这里已提供了一个随机生成的数值供您选择:$1',
+'savedprefs' => '您的个人参数设置已经保存。',
+'timezonelegend' => '时区:',
+'localtime' => '当地时间:',
+'timezoneuseserverdefault' => '使用服务器默认值',
+'timezoneuseoffset' => '其它(指定时差)',
+'timezoneoffset' => '时差¹:',
+'servertime' => '服务器时间:',
+'guesstimezone' => '从浏览器填写',
+'timezoneregion-africa' => '非洲',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => '南极洲',
+'timezoneregion-arctic' => '北极',
+'timezoneregion-asia' => '亚洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳大利亚',
+'timezoneregion-europe' => '欧洲',
+'timezoneregion-indian' => '印度洋',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => '接受来自其他用户的邮件',
+'prefs-searchoptions' => '搜索选项',
+'prefs-namespaces' => '名字空间',
+'defaultns' => '否则在这些名字空间搜索:',
+'default' => '默认',
+'prefs-files' => '文件',
+'prefs-custom-css' => '自定义CSS',
+'prefs-custom-js' => '自定义JavaScript',
+'prefs-reset-intro' => '您可以利用这个页面去重设您的参数设置到网站默认值。这个动作无法复原。',
+'prefs-emailconfirm-label' => '电子邮件确认:',
+'prefs-textboxsize' => '编辑框大小',
+'youremail' => '电子邮件:',
+'username' => '用户名:',
+'uid' => '用户ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|一|多}}组的成员:',
+'prefs-registration' => '注册时间:',
+'yourrealname' => '真实姓名:',
+'yourlanguage' => '界面语言:',
+'yourvariant' => '字体变换:',
+'yournick' => '新签名:',
+'prefs-help-signature' => '在讨论页上的发言应该使用“<nowiki>~~~~</nowiki>”签名,它会被自动转换成你的签名并附带时间戳。',
+'badsig' => '错误的原始签名。请检查HTML标签。',
+'badsiglength' => '签名过长。
+它的长度不可超过$1个字符。',
+'yourgender' => '性别:',
+'gender-unknown' => '未指定',
+'gender-male' => '男',
+'gender-female' => '女',
+'prefs-help-gender' => '可选:用以软件中的性别指定。此项资料将会被公开。',
+'email' => '电子邮箱',
+'prefs-help-realname' => '真实姓名为选填项。
+如果提供,可用于贡献署名。',
+'prefs-help-email' => '电子邮件为选填项,但是在重设密码时,需要用电子邮件将密码寄给您。你可以选择让别的用户通过用户页或用户讨论页与你联系,这样可不公开您的身份。',
+'prefs-help-email-required' => '需要电子邮件地址。',
+'prefs-info' => '基本资料',
+'prefs-i18n' => '国际化',
+'prefs-signature' => '签名',
+'prefs-dateformat' => '日期格式',
+'prefs-timeoffset' => '时差',
+'prefs-advancedediting' => '高级选项',
+'prefs-advancedrc' => '高级选项',
+'prefs-advancedrendering' => '高级选项',
+'prefs-advancedsearchoptions' => '高级选项',
+'prefs-advancedwatchlist' => '高级选项',
+'prefs-display' => '显示选项',
+'prefs-diffs' => '差异',
# User rights
-'userrights' => '用户权限管理', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '管理用户群组',
-'userrights-user-editname' => '输入用户名:',
-'editusergroup' => '编辑用户群组',
-'editinguser' => "正在更改用户'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 的用户权限",
-'userrights-editusergroup' => '编辑用户群组',
-'saveusergroups' => '存储用户群组',
-'userrights-groupsmember' => '隶属于:',
-'userrights-groups-help' => '您可以改动这位用户所属的组群:
+'userrights' => '用户权限管理',
+'userrights-lookup-user' => '管理用户群组',
+'userrights-user-editname' => '输入用户名:',
+'editusergroup' => '编辑用户群组',
+'editinguser' => "正在更改用户'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 的用户权限",
+'userrights-editusergroup' => '编辑用户群组',
+'saveusergroups' => '存储用户群组',
+'userrights-groupsmember' => '隶属于:',
+'userrights-groupsmember-auto' => '固有隶属于:',
+'userrights-groups-help' => '您可以改动这位用户所属的组群:
* 已剔选的核取方块代表该用户属于该组群。
* 未剔选的核取方块代表该用户不是属于该组群。
* 有 * 项目表示一旦您加入该群组之后便不能移除它,反之亦然。',
-'userrights-reason' => '原因:',
-'userrights-no-interwiki' => '您并没有权限去编辑在其它wiki上的用户权限。',
-'userrights-nodatabase' => '数据库$1不存在或并非为本地的。',
-'userrights-nologin' => '您必须要以管理员帐户[[Special:UserLogin|登录]]之后才可以指定用户权限。',
-'userrights-notallowed' => '您的帐户无权限去指定用户权限。',
-'userrights-changeable-col' => '您可以更改的组群',
-'userrights-unchangeable-col' => '您不可以更改的组群',
+'userrights-reason' => '原因:',
+'userrights-no-interwiki' => '您并没有权限去编辑在其它wiki上的用户权限。',
+'userrights-nodatabase' => '数据库$1不存在或并非为本地的。',
+'userrights-nologin' => '您必须要以管理员帐户[[Special:UserLogin|登录]]之后才可以指定用户权限。',
+'userrights-notallowed' => '您的帐户无权限去指定用户权限。',
+'userrights-changeable-col' => '您可以更改的组群',
+'userrights-unchangeable-col' => '您不可以更改的组群',
# Groups
'group' => '群组:',
@@ -1259,6 +1323,7 @@ $2',
'right-bigdelete' => '删除大量历史之页面',
'right-deleterevision' => '删除及同反删除页面中的指定修订',
'right-deletedhistory' => '查看已删除的历史项目,不含关联的文本',
+'right-deletedtext' => '查看已删除修订中之已删除的字以及更改',
'right-browsearchive' => '搜索已删除之页面',
'right-undelete' => '反删除页面',
'right-suppressrevision' => '查看和恢复由管理员隐藏的修订',
@@ -1272,6 +1337,8 @@ $2',
'right-editprotected' => '编辑保护页面(无连锁保护)',
'right-editinterface' => '编辑用户接口',
'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
+'right-editusercss' => '编辑其他用户的CSS文件',
+'right-edituserjs' => '编辑其他用户的JavaScript文件',
'right-rollback' => '快速回退上一位用户对特定页面的编辑',
'right-markbotedits' => '标示复原编辑作机械人编辑',
'right-noratelimit' => '没有使用频率限制',
@@ -1288,6 +1355,8 @@ $2',
'right-siteadmin' => '锁定和解除锁定数据库',
'right-reset-passwords' => '重设其他用户的密码',
'right-override-export-depth' => '导出含有五层深度链接页面之页面',
+'right-versiondetail' => '显示延伸软件版本的资料',
+'right-sendemail' => '发电子邮件给其他用户',
# User rights log
'rightslog' => '用户权限日志',
@@ -1337,6 +1406,15 @@ $2',
'recentchanges-legend' => '最近更改选项',
'recentchangestext' => '跟踪这个wiki上的最新更改。',
'recentchanges-feed-description' => '跟踪此订阅在 wiki 上的最近更改。',
+'recentchanges-label-legend' => '图例: $1',
+'recentchanges-legend-newpage' => '$1 - 新页面',
+'recentchanges-label-newpage' => '这次编辑建立了一个新页面',
+'recentchanges-legend-minor' => '$1 - 小编辑',
+'recentchanges-label-minor' => '这是一个小编辑',
+'recentchanges-legend-bot' => '$1 - 机器人编辑',
+'recentchanges-label-bot' => '这次编辑是由机器人进行',
+'recentchanges-legend-unpatrolled' => '$1 - 未巡查过的编辑',
+'recentchanges-label-unpatrolled' => '这次编辑尚未巡查过',
'rcnote' => "以下是在$4 $5,最近'''$2'''天内的'''$1'''次最近更改记录:",
'rcnotefrom' => "以下是自'''$2'''的更改(最多显示'''$1'''):",
'rclistfrom' => '显示自$1以来的新更改',
@@ -1363,6 +1441,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => '链出更改',
+'recentchangeslinked-feed' => '链出更改',
+'recentchangeslinked-toolbox' => '链出更改',
'recentchangeslinked-title' => '对于“$1”有关的链出更改',
'recentchangeslinked-noresult' => '在这一段时间中链接的页面并无更改。',
'recentchangeslinked-summary' => "这一个特殊页面列示''由''所给出的一个页面之链接到页面的最近更改(或者是对于指定分类的成员)。
@@ -1373,8 +1453,8 @@ $2',
# Upload
'upload' => '上传文件',
'uploadbtn' => '上传文件',
-'reupload' => '重新上传',
'reuploaddesc' => '取消上传并返回上传表单',
+'upload-tryagain' => '提交修改后的文件描述',
'uploadnologin' => '未登录',
'uploadnologintext' => '您必须先[[Special:UserLogin|登录]]才能上传文件。',
'upload_directory_missing' => '上传目录($1)遗失,不能由网页服务器建立。',
@@ -1406,6 +1486,7 @@ $2',
'minlength1' => '文件名字必须至少有一个字母。',
'illegalfilename' => '文件名「$1」包含有页面标题所禁止的字符。请改名后重新上传。',
'badfilename' => '文件名已被改为“$1”。',
+'filetype-mime-mismatch' => '文件扩展名不配MIME类型。',
'filetype-badmime' => 'MIME类别"$1"不是容许的文件格式。',
'filetype-bad-ie-mime' => '不可以上传这个文件,因为 Internet Explorer 会将它侦测为 "$1",它是一种不容许以及有潜在危险性之文件类型。',
'filetype-unwanted-type' => "'''\".\$1\"'''是一种不需要的文件类型。
@@ -1425,7 +1506,6 @@ $2',
* 上传文件的文件名:'''<tt>[[:$1]]</tt>'''
* 现有文件的文件名:'''<tt>[[:$2]]</tt>'''
请选择一个不同的名字。",
-'fileexists-thumb' => "<center>'''已经存在的文件'''</center>",
'fileexists-thumbnail-yes' => "此文件可能是另一幅图像的缩小版本''(缩略图)''。 [[$1|thumb]]
请仔细检查该文件'''<tt>[[:$1]]</tt>'''。
如果被检查文件与原始大小的图像是同一幅图像,您无需上传多余的缩略图。",
@@ -1438,6 +1518,7 @@ $2',
'file-deleted-duplicate' => '一个相同名称的文件 ([[$1]]) 在先前删除过。您应该在重新上传之前检查一下该文件之删除纪录。',
'successfulupload' => '上传成功',
'uploadwarning' => '上传警告',
+'uploadwarning-text' => '请修改以下的文件描述并重试。',
'savefile' => '保存文件',
'uploadedimage' => '已上传“[[$1]]”',
'overwroteimage' => '已上传“[[$1]]”的新版本',
@@ -1445,12 +1526,15 @@ $2',
'uploaddisabledtext' => '文件上传不可用。',
'php-uploaddisabledtext' => 'PHP 文件上传已经停用。请检查 file_uploads 设置。',
'uploadscripted' => '该文件包含可能被网络浏览器错误解释的 HTML 或脚本代码。',
-'uploadcorrupt' => '该文件包含或具有一个不正确的扩展名。请检查此文件并重新上传。',
'uploadvirus' => '该文件包含病毒!
详情:$1',
+'upload-source' => '来源文件',
'sourcefilename' => '源文件名:',
+'sourceurl' => '来源网址:',
'destfilename' => '目标文件名:',
'upload-maxfilesize' => '文件最大限制大小: $1',
+'upload-description' => '文件描述',
+'upload-options' => '上传选项',
'watchthisupload' => '监视这个文件',
'filewasdeleted' => '之前已经有一个同名文件被上传后又被删除了。在上传此文件之前您需要检查$1。',
'upload-wasdeleted' => "'''警告:您现在重新上传一个先前曾经删除过的文件。'''
@@ -1459,12 +1543,37 @@ $2',
为方便起见,这一个文件的删除记录已经在下面提供:",
'filename-bad-prefix' => '您上传的文件名称是以<strong>“$1”</strong>作为开头,通常这种没有含意的文件名称是由数码相机中自动编排。请在您的文件中重新选择一个更加有意义的文件名称。',
-'upload-proto-error' => '协议错误',
-'upload-proto-error-text' => '远程上传要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 开头。',
-'upload-file-error' => '内部错误',
-'upload-file-error-text' => '当试图在服务器上创建临时文件时发生内部错误。请与[[Special:ListUsers/sysop|管理员]]联系。',
-'upload-misc-error' => '未知的上传错误',
-'upload-misc-error-text' => '在上传时发生未知的错误。请确认您使用了正确并可访问的URL,然后进行重试。如果问题仍然存在,请与[[Special:ListUsers/sysop|管理员]]联系。',
+'upload-proto-error' => '协议错误',
+'upload-proto-error-text' => '远程上传要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 开头。',
+'upload-file-error' => '内部错误',
+'upload-file-error-text' => '当试图在服务器上创建临时文件时发生内部错误。请与[[Special:ListUsers/sysop|管理员]]联系。',
+'upload-misc-error' => '未知的上传错误',
+'upload-misc-error-text' => '在上传时发生未知的错误。请确认您使用了正确并可访问的URL,然后进行重试。如果问题仍然存在,请与[[Special:ListUsers/sysop|管理员]]联系。',
+'upload-too-many-redirects' => '在网址中有太多重新定向',
+'upload-unknown-size' => '未知大小',
+'upload-http-error' => '发生HTTP错误:$1',
+
+# img_auth script messages
+'img-auth-accessdenied' => '拒绝访问',
+'img-auth-nopathinfo' => 'PATH_INFO遗失。您的服务器尚未设置传送该信息。它可能是基于CGI的,因而不支持img_auth。参见http://www.mediawiki.org/wiki/Manual:Image_Authorization<nowiki></nowiki>。',
+'img-auth-notindir' => '在已设置的上传目录中找不到请求的路径。',
+'img-auth-badtitle' => '无法为“$1”创建合法的标题。',
+'img-auth-nologinnWL' => '您尚未登录,且“$1”不在白名单上。',
+'img-auth-nofile' => '文件“$1”不存在。',
+'img-auth-isdir' => '您正试图访问目录“$1”。您只能访问文件。',
+'img-auth-streaming' => '流式化“$1”中。',
+'img-auth-public' => 'img_auth.php的功能是从私有wiki输出文件。但本wiki已被设置为公共wiki。出于安全考虑,img_auth.php已被停用。',
+'img-auth-noread' => '用户无权读取“$1”。',
+
+# HTTP errors
+'http-invalid-url' => '无效URL:$1',
+'http-invalid-scheme' => '不支持带有“$1”的URL',
+'http-request-error' => '未知的错误令到HTTP请求失败。',
+'http-read-error' => 'HTTP读取错误。',
+'http-timed-out' => 'HTTP请求已过时。',
+'http-curl-error' => '撷取URL时出错:$1',
+'http-host-unreachable' => '无法到达URL。',
+'http-bad-status' => '进行HTTP请求时出现问题:$1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => '无法访问URL',
@@ -1473,6 +1582,7 @@ $2',
'upload-curl-error28-text' => '站点响应时间过长。请检查此网站的访问是否正常,过一会再进行尝试。您可能需要在网络访问空闲时间再次进行尝试。',
'license' => '授权:',
+'license-header' => '授权',
'nolicense' => '未选定',
'license-nopreview' => '(无预览可用)',
'upload_source_url' => '(有效、可以公开访问的URL)',
@@ -1493,38 +1603,42 @@ $2',
'listfiles_count' => '版本',
# File description page
-'filehist' => '文件历史',
-'filehist-help' => '点击日期/时间以查看当时出现过的文件。',
-'filehist-deleteall' => '删除全部',
-'filehist-deleteone' => '删除',
-'filehist-revert' => '恢复',
-'filehist-current' => '当前',
-'filehist-datetime' => '日期/时间',
-'filehist-thumb' => '缩图',
-'filehist-thumbtext' => '于$1的缩图版本',
-'filehist-nothumb' => '没有缩图',
-'filehist-user' => '用户',
-'filehist-dimensions' => '维度',
-'filehist-filesize' => '文件大小',
-'filehist-comment' => '注解',
-'imagelinks' => '文件链接',
-'linkstoimage' => '以下的$1个页面链接到本文件:',
-'linkstoimage-more' => '多于$1个页面连接到这个文件。
+'file-anchor-link' => '文件',
+'filehist' => '文件历史',
+'filehist-help' => '点击日期/时间以查看当时出现过的文件。',
+'filehist-deleteall' => '删除全部',
+'filehist-deleteone' => '删除',
+'filehist-revert' => '恢复',
+'filehist-current' => '当前',
+'filehist-datetime' => '日期/时间',
+'filehist-thumb' => '缩图',
+'filehist-thumbtext' => '于$1的缩图版本',
+'filehist-nothumb' => '没有缩图',
+'filehist-user' => '用户',
+'filehist-dimensions' => '维度',
+'filehist-filesize' => '文件大小',
+'filehist-comment' => '注解',
+'filehist-missing' => '文件遗失',
+'imagelinks' => '文件链接',
+'linkstoimage' => '以下的$1个页面链接到本文件:',
+'linkstoimage-more' => '多于$1个页面连接到这个文件。
下面的列表只列示了连去这个文件的最首$1个页面。
一个[[Special:WhatLinksHere/$2|完整的列表]]可以提供。',
-'nolinkstoimage' => '没有页面链接到本文件。',
-'morelinkstoimage' => '查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。',
-'redirectstofile' => '以下的$1个文件重新定向到这个文件:',
-'duplicatesoffile' => '以下的$1个文件跟这个文件重复([[Special:FileDuplicateSearch/$2|更多细节]]):',
-'sharedupload' => '该文件来自于$1,它可能在其它计划项目中被应用。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '请参阅在共享文件库上的$1以了解其相关信息。',
-'shareduploadwiki-desc' => '它在$1那边上的描述于下面显示。',
-'shareduploadwiki-linktext' => '文件描述页面',
-'noimage' => '不存在此名称的文件,但您可以$1。',
-'noimage-linktext' => '上传一个',
-'uploadnewversion-linktext' => '上传该文件的新版本',
-'shared-repo-from' => '出自$1', # $1 is the repository name
-'shared-repo' => '一个共用文件库', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => '没有页面链接到本文件。',
+'morelinkstoimage' => '查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。',
+'redirectstofile' => '以下的$1个文件重新定向到这个文件:',
+'duplicatesoffile' => '以下的$1个文件跟这个文件重复([[Special:FileDuplicateSearch/$2|更多细节]]):',
+'sharedupload' => '该文件来自于$1,它可能在其它计划项目中被应用。',
+'sharedupload-desc-there' => '该文件来自于$1,它可能在其它计划项目中被应用。
+请参阅在[$2 文件描述页面]以了解其相关信息。',
+'sharedupload-desc-here' => '该文件来自于$1,它可能在其它计划项目中被应用。
+它在[$2 文件描述页面]那边上的描述于下面显示。',
+'filepage-nofile' => '不存在此名称的文件。',
+'filepage-nofile-link' => '不存在此名称的文件,但您可以[$1 上传它]。',
+'uploadnewversion-linktext' => '上传该文件的新版本',
+'shared-repo-from' => '出自$1',
+'shared-repo' => '一个共用文件库',
+'shared-repo-name-wikimediacommons' => '维基共享资源',
# File reversion
'filerevert' => '恢复$1',
@@ -1554,6 +1668,7 @@ $2',
** 侵犯版权
** 重复文件',
'filedelete-edit-reasonlist' => '编辑删除埋由',
+'filedelete-maintenance' => '当在维护时已经暂时停用文件删除和恢复。',
# MIME search
'mimesearch' => 'MIME 搜索',
@@ -1574,7 +1689,7 @@ $2',
# Random page
'randompage' => '随机页面',
-'randompage-nopages' => '在 "$1" 名字空间中没有页面。',
+'randompage-nopages' => '在以下的{{PLURAL:$2|名字空间}}中没有页面:$1',
# Random redirect
'randomredirect' => '随机重定向页面',
@@ -1586,6 +1701,7 @@ $2',
'statistics-header-edits' => '编辑统计',
'statistics-header-views' => '查看统计',
'statistics-header-users' => '用户统计',
+'statistics-header-hooks' => '其它统计',
'statistics-articles' => '内容页面',
'statistics-pages' => '页面',
'statistics-pages-desc' => '在wiki上的所有页面,包括对话页面、重新定向等',
@@ -1617,8 +1733,8 @@ Template:消除歧義',
'brokenredirects' => '损坏的重定向页',
'brokenredirectstext' => '以下的重定向页面指向的是不存在的页面:',
-'brokenredirects-edit' => '(编辑)',
-'brokenredirects-delete' => '(删除)',
+'brokenredirects-edit' => '编辑',
+'brokenredirects-delete' => '删除',
'withoutinterwiki' => '未有语言链接的页面',
'withoutinterwiki-summary' => '以下的页面是未有语言链接到其它语言版本。',
@@ -1725,7 +1841,7 @@ Template:消除歧義',
# Special:Categories
'categories' => '页面分类',
-'categoriespagetext' => '以下的分类中包含了页面或媒体。
+'categoriespagetext' => '以下的{{PLURAL:$1|分类}}中包含了页面或媒体。
[[Special:UnusedCategories|未用分类]]不会在这里列示。
请同时参阅[[Special:WantedCategories|需要的分类]]。',
'categoriesfrom' => '显示由此项起之分类:',
@@ -1733,8 +1849,9 @@ Template:消除歧義',
'special-categories-sort-abc' => '按字母排列',
# Special:DeletedContributions
-'deletedcontributions' => '已删除的用户贡献',
-'deletedcontributions-title' => '已删除的用户贡献',
+'deletedcontributions' => '已删除的用户贡献',
+'deletedcontributions-title' => '已删除的用户贡献',
+'sp-deletedcontributions-contribs' => '贡献',
# Special:LinkSearch
'linksearch' => '外部链接',
@@ -1750,6 +1867,16 @@ Template:消除歧義',
'listusersfrom' => '给定显示用户条件:',
'listusers-submit' => '显示',
'listusers-noresult' => '找不到用户。',
+'listusers-blocked' => '(已封锁)',
+
+# Special:ActiveUsers
+'activeusers' => '活跃用户列表',
+'activeusers-intro' => '这个列表列出了最近$1天进行过操作的用户。',
+'activeusers-count' => '最近$3天编辑了$1次',
+'activeusers-from' => '显示用户开始于:',
+'activeusers-hidebots' => '隐藏机器人',
+'activeusers-hidesysops' => '隐藏管理员',
+'activeusers-noresult' => '找不到用户。',
# Special:Log/newusers
'newuserlogpage' => '用户创建日志',
@@ -1760,17 +1887,23 @@ Template:消除歧義',
'newuserlog-autocreate-entry' => '已自动建立账户',
# Special:ListGroupRights
-'listgrouprights' => '用户群组权限',
-'listgrouprights-summary' => '以下面是一个在这个wiki中定义出来的用户权限列表,以及它们的访问权。
+'listgrouprights' => '用户群组权限',
+'listgrouprights-summary' => '以下面是一个在这个wiki中定义出来的用户权限列表,以及它们的访问权。
更多有关个别权限的细节可以在[[{{MediaWiki:Listgrouprights-helppage}}|这里]]找到。',
-'listgrouprights-group' => '群组',
-'listgrouprights-rights' => '权限',
-'listgrouprights-helppage' => 'Help:群组权限',
-'listgrouprights-members' => '(成员列表)',
-'listgrouprights-addgroup' => '加入的{{PLURAL:$2|一个|多个}}群组:$1',
-'listgrouprights-removegroup' => '移除的{{PLURAL:$2|一个|多个}}群组:$1',
-'listgrouprights-addgroup-all' => '加入所有群组',
-'listgrouprights-removegroup-all' => '移除所有群组',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">已授予的权限</span>
+* <span class="listgrouprights-revoked">已撤除的权限</span>',
+'listgrouprights-group' => '群组',
+'listgrouprights-rights' => '权限',
+'listgrouprights-helppage' => 'Help:群组权限',
+'listgrouprights-members' => '(成员列表)',
+'listgrouprights-addgroup' => '加入的{{PLURAL:$2|一个|多个}}群组:$1',
+'listgrouprights-removegroup' => '移除的{{PLURAL:$2|一个|多个}}群组:$1',
+'listgrouprights-addgroup-all' => '加入所有群组',
+'listgrouprights-removegroup-all' => '移除所有群组',
+'listgrouprights-addgroup-self' => '在自己的账户中加入的{{PLURAL:$2|一个|多个}}群组: $1',
+'listgrouprights-removegroup-self' => '在自己的账户中移除的{{PLURAL:$2|一个|多个}}群组: $1',
+'listgrouprights-addgroup-self-all' => '在自己的账户中加入所有群组',
+'listgrouprights-removegroup-self-all' => '在自己的账户中移除所有群组',
# E-mail user
'mailnologin' => '无电邮地址',
@@ -1843,7 +1976,7 @@ Template:消除歧義',
'enotif_lastvisited' => '查看您上次访问后的所有更改请访问$1。',
'enotif_lastdiff' => '检视更改请访问$1。',
'enotif_anon_editor' => '匿名用户$1',
-'enotif_body' => '亲爱的 $WATCHINGUSERNAME,
+'enotif_body' => '亲爱的 $WATCHINGUSERNAME,
$PAGEEDITOR已经在$PAGEEDITDATE$CHANGEDORCREATED{{SITENAME}}的$PAGETITLE页面,请到$PAGETITLE_URL查看当前修订版本。
@@ -1863,7 +1996,10 @@ $NEWPAGE
--
要改变您的监视列表设置,请访问
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+要删除您监视列表中的该页面,请访问
+$UNWATCHURL
反馈和进一步的帮助:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1877,10 +2013,11 @@ $NEWPAGE
'exblank' => '页面为空',
'delete-confirm' => '删除“$1”',
'delete-legend' => '删除',
-'historywarning' => '警告:您将要删除的页内含有历史',
+'historywarning' => '警告:您将要删除的页面有约$1个{{PLURAL:$1|修订|修订}}版本的历史:',
'confirmdeletetext' => '您即将删除一个页面或图像以及其历史。
请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => '操作完成',
+'actionfailed' => '操作失败',
'deletedtext' => '"<nowiki>$1</nowiki>"已经被删除。最近删除的记录请参见$2。',
'deletedarticle' => '已删除“[[$1]]”',
'suppressedarticle' => '已废止"[[$1]]"',
@@ -1900,19 +2037,20 @@ $NEWPAGE
'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
# Rollback
-'rollback' => '回退编辑',
-'rollback_short' => '回退',
-'rollbacklink' => '回退',
-'rollbackfailed' => '回退失败',
-'cantrollback' => '无法恢复编辑;最后的贡献者是本文的唯一作者。',
-'alreadyrolled' => '无法回退由[[User:$2|$2]]([[User talk:$2|讨论]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]在[[:$1]]上的编辑;其他人已经编辑或者回退了该页。
+'rollback' => '回退编辑',
+'rollback_short' => '回退',
+'rollbacklink' => '回退',
+'rollbackfailed' => '回退失败',
+'cantrollback' => '无法恢复编辑;最后的贡献者是本文的唯一作者。',
+'alreadyrolled' => '无法回退由[[User:$2|$2]]([[User talk:$2|讨论]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]在[[:$1]]上的编辑;其他人已经编辑或者回退了该页。
该页最后的编辑者是[[User:$3|$3]]([[User talk:$3|讨论]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
-'editcomment' => '编辑摘要:"<i>$1</i>"。', # only shown if there is an edit comment
-'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|对话]])的编辑至[[User:$1|$1]]的最后一个修订版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '已恢复$1的编辑;
+'editcomment' => '编辑摘要:"<i>$1</i>"。',
+'revertpage' => '已恢复[[Special:Contributions/$2|$2]]([[User talk:$2|对话]])的编辑至[[User:$1|$1]]的最后一个修订版本',
+'revertpage-nouser' => '恢复由(移除了的用户名)的编辑到[[User:$1|$1]]的最后一个修订版本',
+'rollback-success' => '已恢复$1的编辑;
更改回$2的最后修订版本。',
-'sessionfailure' => '似乎您的登录会话有问题;
+'sessionfailure' => '似乎您的登录会话有问题;
为了防止会话劫持,这个操作已经被取消。
请返回先前的页面,重新载入该页面,然后重试。',
@@ -1930,7 +2068,7 @@ $NEWPAGE
'protectexpiry' => '到期:',
'protect_expiry_invalid' => '输入的终止时间无效。',
'protect_expiry_old' => '终止时间已过去。',
-'protect-unchain' => '移动权限解锁',
+'protect-unchain-permissions' => '解除锁定更多的保护选项',
'protect-text' => '你可以在这里浏览和修改对页面<strong><nowiki>$1</nowiki></strong>的保护级别。',
'protect-locked-blocked' => '您不能在被查封时更改保护级别。
以下是<strong>$1</strong>现时的保护级别:',
@@ -1959,7 +2097,7 @@ $NEWPAGE
** 无意义的编辑战
** 高流量页面',
'protect-edit-reasonlist' => '编辑保护理由',
-'protect-expiry-options' => '1小时:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1小时:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,永久:infinite',
'restriction-type' => '权限:',
'restriction-level' => '限制级别:',
'minimum-size' => '最小大小',
@@ -1996,6 +2134,7 @@ $NEWPAGE
'undelete-nodiff' => '找不到先前的修订版本。',
'undeletebtn' => '恢复',
'undeletelink' => '查看/恢复',
+'undeleteviewlink' => '查看',
'undeletereset' => '重置',
'undeleteinvert' => '反向选择',
'undeletecomment' => '理由:',
@@ -2033,19 +2172,24 @@ $1',
'contributions-title' => '$1的用户贡献',
'mycontris' => '贡献',
'contribsub2' => '$1的贡献 ($2)',
-'nocontribs' => '没有找到符合特征的更改。', # Optional parameter: $1 is the user name
+'nocontribs' => '没有找到符合特征的更改。',
'uctop' => '(最新修改)',
'month' => '从该月份 (或更早):',
'year' => '从该年份 (或更早):',
-'sp-contributions-newbies' => '只显示新创建之用户的贡献',
-'sp-contributions-newbies-sub' => '新手',
-'sp-contributions-newbies-title' => '新手的用户贡献',
-'sp-contributions-blocklog' => '封禁日志',
-'sp-contributions-logs' => '日志',
-'sp-contributions-search' => '搜索贡献记录',
-'sp-contributions-username' => 'IP地址或用户名称:',
-'sp-contributions-submit' => '搜索',
+'sp-contributions-newbies' => '只显示新创建之用户的贡献',
+'sp-contributions-newbies-sub' => '新手',
+'sp-contributions-newbies-title' => '新手的用户贡献',
+'sp-contributions-blocklog' => '封禁日志',
+'sp-contributions-deleted' => '已删除的用户贡献',
+'sp-contributions-logs' => '日志',
+'sp-contributions-talk' => '对话',
+'sp-contributions-userrights' => '用户权限管理',
+'sp-contributions-blocked-notice' => '这位用户现时正在被封锁中。
+最近的封锁日志项目在下面提供以便参考:',
+'sp-contributions-search' => '搜索贡献记录',
+'sp-contributions-username' => 'IP地址或用户名称:',
+'sp-contributions-submit' => '搜索',
# What links here
'whatlinkshere' => '链入页面',
@@ -2068,6 +2212,7 @@ $1',
# Block/unblock
'blockip' => '封禁用户',
+'blockip-title' => '封禁用户',
'blockip-legend' => '封禁用户',
'blockiptext' => '使用下方的表单来禁止来自特定IP地址或用户名的写访问。
只有在为了防止破坏,并符合[[{{MediaWiki:Policy-url}}|方针]]的情况下才可采取此行动。
@@ -2091,7 +2236,7 @@ $1',
'ipbenableautoblock' => '自动查封此用户最后所用的IP地址,以及后来试图编辑所用的所有地址',
'ipbsubmit' => '查封该地址',
'ipbother' => '其它时间:',
-'ipboptions' => '2小时:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2小时:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,永久:infinite',
'ipbotheroption' => '其他',
'ipbotherreason' => '其它/附带原因:',
'ipbhidename' => '在编辑及列表中隐藏用户名',
@@ -2120,9 +2265,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1临时封锁',
'ipblocklist-sh-addressblocks' => '$1单IP封锁',
'ipblocklist-submit' => '搜索',
+'ipblocklist-localblock' => '本地封锁',
+'ipblocklist-otherblocks' => '其他{{PLURAL:$1|封锁|封锁}}',
'blocklistline' => '$1,$3被$2查封($4)',
'infiniteblock' => '永久',
-'expiringblock' => '$1 到期',
+'expiringblock' => '$1 $2 到期',
'anononlyblock' => '仅限匿名用户',
'noautoblockblock' => '禁用自动查封',
'createaccountblock' => '禁止创建账户',
@@ -2137,7 +2284,8 @@ $1',
'autoblocker' => '因为您与“[[User:$1|$1]]”共享一个IP地址而被自动查封。
$1被封禁的理由是“$2”',
'blocklogpage' => '查封日志',
-'blocklog-fulllog' => '完整查封日志',
+'blocklog-showlog' => '这位用户曾经被封锁过。在下列提供封锁日志以便参考:',
+'blocklog-showsuppresslog' => '这位用户曾经被封锁和隐藏过。在下列提供废止日志以便参考:',
'blocklogentry' => '“[[$1]]”已被查封,终止时间为$2 $3',
'reblock-logentry' => '更改[[$1]]的封禁設定時間 $2 $3',
'blocklogtext' => '这是关于用户查封和解封操作的日志。
@@ -2157,9 +2305,11 @@ $1被封禁的理由是“$2”',
'ipb_already_blocked' => '已经封锁"$1"',
'ipb-needreblock' => '== 已经封锁 ==
$1已经被封锁。您是否想更改这个设置?',
+'ipb-otherblocks-header' => '其他{{PLURAL:$1|封锁|封锁}}',
'ipb_cant_unblock' => '错误:找不到查封ID$1。可能已经解除封禁。',
'ipb_blocked_as_range' => '错误:该IP $1 无直接查封,不可以解除封禁。但是它是在 $2 的查封范围之内,该段范围是可以解除封禁的。',
'ip_range_invalid' => '无效的IP范围。',
+'ip_range_toolarge' => '大于 /$1 的封锁范围是不容许的。',
'blockme' => '禁封我',
'proxyblocker' => '代理封锁器',
'proxyblocker-disabled' => '这个功能已经禁用。',
@@ -2168,6 +2318,8 @@ $1已经被封锁。您是否想更改这个设置?',
'sorbsreason' => '您的IP地址在{{SITENAME}}中被 DNSBL 列为属于开放代理服务器。',
'sorbs_create_account_reason' => '由于您的IP地址在{{SITENAME}}中被 DNSBL 列为属于开放代理服务器,所以您不能创建新账户。',
'cant-block-while-blocked' => '当您被封锁时不可以封锁其他用户。',
+'cant-see-hidden-user' => '您现正尝试封锁的用户已经被封锁或隐藏。
+您现在没有隐藏用户的权限,您不可以查看或者编辑这位用户的封锁。',
# Developer tools
'lockdb' => '锁定数据库',
@@ -2212,6 +2364,7 @@ $1已经被封锁。您是否想更改这个设置?',
在这些情况下,您在必要时必须手工移动或合并页面。",
'movearticle' => '移动页面:',
+'moveuserpage-warning' => "'''警告:'''您将会移动一个用户页面。请留意该页面在移动后该用户的名字是''不会''变更的。",
'movenologin' => '未登录',
'movenologintext' => '您必须是一名登记用户并且[[Special:UserLogin|登录]]
后才可移动一个页面。',
@@ -2223,7 +2376,7 @@ $1已经被封锁。您是否想更改这个设置?',
'move-watch' => '监视来源以及目标页',
'movepagebtn' => '移动页面',
'pagemovedsub' => '移动成功',
-'movepage-moved' => "'''“$1”已经移动到“$2”'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''“$1”已经移动到“$2”'''",
'movepage-moved-redirect' => '一个重新定向已经被创建。',
'movepage-moved-noredirect' => '已阻止建立重定向。',
'articleexists' => '该名字的页面已经存在,或者您选择的名字无效。请再选一个名字。',
@@ -2265,6 +2418,14 @@ $1已经被封锁。您是否想更改这个设置?',
'imageinvalidfilename' => '目标文件名称无效',
'fix-double-redirects' => '更新所有指向原始标题的重定向',
'move-leave-redirect' => '保留重定向',
+'protectedpagemovewarning' => "'''警告:'''这个页面已经被锁上,只有拥有管理员权限的用户才可以移动它。
+最近的日志在下面提供以便参考:",
+'semiprotectedpagemovewarning' => "'''注意:'''这个页面已经被锁上,只有已经注册的用户才可以移动它。
+最近的日志在下面提供以便参考:",
+'move-over-sharedrepo' => '== 文件已存在 ==
+[[:$1]]已于共享资源存在,将文件移动到此标题会覆盖共享资源中的文件。',
+'file-exists-sharedrepo' => '同名文件已于共享资源存在。
+请选择另一个文件名。',
# Export
'export' => '导出页面',
@@ -2288,15 +2449,21 @@ $1已经被封锁。您是否想更改这个设置?',
'export-pagelinks' => '包含链接页面的搜索深度:',
# Namespace 8 related
-'allmessages' => '系统界面',
-'allmessagesname' => '名称',
-'allmessagesdefault' => '默认的信息文字',
-'allmessagescurrent' => '现时的信息文字',
-'allmessagestext' => '这里列出所有可定制的系统界面。
+'allmessages' => '系统界面',
+'allmessagesname' => '名称',
+'allmessagesdefault' => '默认的信息文字',
+'allmessagescurrent' => '现时的信息文字',
+'allmessagestext' => '这里列出所有可定制的系统界面。
如果想贡献通用的MediaWiki本地化的话,请参阅[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]以及[http://translatewiki.net translatewiki.net]。',
-'allmessagesnotsupportedDB' => "这个页面无法使用,因为'''\$wgUseDatabaseMessages'''已被设置关闭。",
-'allmessagesfilter' => '按消息名称筛选:',
-'allmessagesmodified' => '仅显示已修改的',
+'allmessagesnotsupportedDB' => "这个页面无法使用,因为'''\$wgUseDatabaseMessages'''已被设置关闭。",
+'allmessages-filter-legend' => '过滤',
+'allmessages-filter' => '以自定状况过滤:',
+'allmessages-filter-unmodified' => '未修改',
+'allmessages-filter-all' => '所有',
+'allmessages-filter-modified' => '曾修改',
+'allmessages-prefix' => '以前缀过滤:',
+'allmessages-language' => '语言:',
+'allmessages-filter-submit' => '进入',
# Thumbnails
'thumbnail-more' => '放大',
@@ -2306,6 +2473,9 @@ $1已经被封锁。您是否想更改这个设置?',
'djvu_no_xml' => '无法在DjVu文件中获取XML',
'thumbnail_invalid_params' => '不正确的缩略图参数',
'thumbnail_dest_directory' => '无法建立目标目录',
+'thumbnail_image-type' => '图像类型不支持',
+'thumbnail_gd-library' => '未完成的GD设置:功能遗失 $1',
+'thumbnail_image-missing' => '文件似乎遗失:$1',
# Special:Import
'import' => '导入页面',
@@ -2370,6 +2540,7 @@ $1已经被封锁。您是否想更改这个设置?',
'tooltip-ca-viewsource' => '该页面已被保护。你可以查看该页源码。',
'tooltip-ca-history' => '此页面的早前修订版本',
'tooltip-ca-protect' => '保护此页',
+'tooltip-ca-unprotect' => '解除保护此页',
'tooltip-ca-delete' => '删除此页',
'tooltip-ca-undelete' => '将这个页面恢复到被删除以前的状态',
'tooltip-ca-move' => '移动此页',
@@ -2380,6 +2551,7 @@ $1已经被封锁。您是否想更改这个设置?',
'tooltip-search-fulltext' => '搜索该文字的页面',
'tooltip-p-logo' => '访问首页',
'tooltip-n-mainpage' => '访问首页',
+'tooltip-n-mainpage-description' => '访问首页',
'tooltip-n-portal' => '关于本计划,您可以做什么,应该如何做',
'tooltip-n-currentevents' => '查找当前事件的背景信息',
'tooltip-n-recentchanges' => '列出该网站的最近修改',
@@ -2426,6 +2598,7 @@ $1已经被封锁。您是否想更改这个设置?',
'chick.css' => '/* 此处的 CSS 将影响使用 Chick 皮肤的用户 */',
'simple.css' => '/* 此处的 CSS 将影响使用 Simple 皮肤的用户 */',
'modern.css' => '/* 此处的 CSS 将影响使用 Modern 皮肤的用户 */',
+'vector.css' => '/* 此处的 CSS 将影响使用 Vector 皮肤的用户 */',
'print.css' => '/* 此处的 CSS 将影响打印输出 */',
'handheld.css' => '/* 此处的 CSS 将影响在 $wgHandheldStyle 设置手提装置面板 */',
@@ -2439,6 +2612,7 @@ $1已经被封锁。您是否想更改这个设置?',
'chick.js' => '/* 此处的JavaScript将加载于使用Chick皮肤的用户 */',
'simple.js' => '/* 此处的JavaScript将加载于使用Simple皮肤的用户 */',
'modern.js' => '/* 此处的JavaScript将加载于使用Modern皮肤的用户 */',
+'vector.js' => '/* 此处的JavaScript将加载于使用Vector皮肤的用户 */',
# Metadata
'nodublincore' => 'Dublin Core RDF 元数据在该服务器不可用。',
@@ -2448,10 +2622,12 @@ $1已经被封锁。您是否想更改这个设置?',
# Attribution
'anonymous' => '{{SITENAME}}的匿名{{PLURAL:$1|用户|用户}}',
'siteuser' => '{{SITENAME}}用户$1',
-'lastmodifiedatby' => '此页由$3于$1 $2的最后更改。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}匿名用户$1',
+'lastmodifiedatby' => '此页由$3于$1 $2的最后更改。',
'othercontribs' => '在$1的工作基础上。',
'others' => '其他',
'siteusers' => '{{SITENAME}}{{PLURAL:$2|用户|用户}}$1',
+'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|用户|用户}}$1',
'creditspage' => '页面致谢',
'nocredits' => '该页没有致谢名单信息。',
@@ -2485,11 +2661,22 @@ $1已经被封锁。您是否想更改这个设置?',
'mw_math_modern' => '推荐为新版浏览器使用',
'mw_math_mathml' => '尽可能使用MathML(试验中)',
+# Math errors
+'math_failure' => '解析失败',
+'math_unknown_error' => '未知错误',
+'math_unknown_function' => '未知函数',
+'math_lexing_error' => '句法错误',
+'math_syntax_error' => '语法错误',
+'math_image_error' => 'PNG转换失败;请检查是否正确安装了latex、dvips、gs和convert',
+'math_bad_tmpdir' => '无法写入或建立数学公式临时目录',
+'math_bad_output' => '无法写入或建立数学公式输出目录',
+'math_notexvc' => '无法执行texvc;请参照math/README进行配置。',
+
# Patrolling
'markaspatrolleddiff' => '标记为已巡查',
'markaspatrolledtext' => '标记此页面为已巡查',
'markedaspatrolled' => '标记为已检查',
-'markedaspatrolledtext' => '选定的版本已被标记为已检查。',
+'markedaspatrolledtext' => '[[:$1]]的已选中修订版本已被标识为已巡查。',
'rcpatroldisabled' => '最新更改检查被关闭',
'rcpatroldisabledtext' => '最新更改检查的功能目前已关闭。',
'markedaspatrollederror' => '不能标志为已检查',
@@ -2519,13 +2706,10 @@ $1',
'previousdiff' => '←上一版本',
'nextdiff' => '下一版本→',
-# Visual comparison
-'visual-comparison' => '可见比较',
-
# Media information
'mediawarning' => "'''警告''':该文件类型可能包含恶意代码。
运行它可能对您的系统带来危险。",
-'imagemaxsize' => '在文件描述页对图像大小限制为:',
+'imagemaxsize' => "图像大小限制:<br />''(用于文件描述页面)''",
'thumbsize' => '缩略图大小:',
'widthheightpage' => '$1×$2,$3页',
'file-info' => '(文件大小:$1,MIME类型:$2)',
@@ -2534,6 +2718,8 @@ $1',
'svg-long-desc' => '(SVG文件,名义大小:$1×$2像素,文件大小:$3)',
'show-big-image' => '完整分辨率',
'show-big-image-thumb' => '<small>这幅缩略图的分辨率:$1×$2像素</small>',
+'file-info-gif-looped' => '循环',
+'file-info-gif-frames' => '$1帧',
# Special:NewFiles
'newimages' => '新建图像画廊',
@@ -2582,7 +2768,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '宽度',
@@ -2709,14 +2895,14 @@ Variants for Chinese language
'exif-unknowndate' => '未知的日期',
-'exif-orientation-1' => '标准', # 0th row: top; 0th column: left
-'exif-orientation-2' => '水平翻转', # 0th row: top; 0th column: right
-'exif-orientation-3' => '旋转180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '垂直翻转', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '逆时针旋转90°并垂直翻转', # 0th row: left; 0th column: top
-'exif-orientation-6' => '顺时针旋转90°', # 0th row: right; 0th column: top
-'exif-orientation-7' => '顺时针旋转90°并垂直翻转', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '逆时针旋转90°', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '标准',
+'exif-orientation-2' => '水平翻转',
+'exif-orientation-3' => '旋转180°',
+'exif-orientation-4' => '垂直翻转',
+'exif-orientation-5' => '逆时针旋转90°并垂直翻转',
+'exif-orientation-6' => '顺时针旋转90°',
+'exif-orientation-7' => '顺时针旋转90°并垂直翻转',
+'exif-orientation-8' => '逆时针旋转90°',
'exif-planarconfiguration-1' => '矮胖格式',
'exif-planarconfiguration-2' => '平面格式',
@@ -2838,7 +3024,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => '二维测量',
'exif-gpsmeasuremode-3' => '三维测量',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '千米每小时',
'exif-gpsspeed-m' => '英里每小时',
'exif-gpsspeed-n' => '海里每小时(节)',
@@ -2857,6 +3043,7 @@ Variants for Chinese language
'watchlistall2' => '全部',
'namespacesall' => '全部',
'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '确认邮箱地址',
@@ -2921,6 +3108,7 @@ $1',
# Separators for various lists, etc.
'comma-separator' => '、',
'word-separator' => '',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上一页',
@@ -2989,7 +3177,7 @@ $1',
'duplicate-defaultsort' => '警告:默认的排序键“$2”覆盖先前的默认排序键“$1”。',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
'version-extensions' => '已安装插件',
'version-specialpages' => '特殊页面',
'version-parserhooks' => '解析器钩',
@@ -3003,7 +3191,7 @@ $1',
'version-skin-extension-functions' => '皮肤扩展函数',
'version-hook-name' => '钩名',
'version-hook-subscribedby' => '署名',
-'version-version' => '版本',
+'version-version' => '(版本$1)',
'version-license' => '授权',
'version-software' => '已安装软件',
'version-software-product' => '产品',
@@ -3084,4 +3272,15 @@ $1',
'dberr-outofdate' => '须注意他们索引出来的内容可能不是最新的。',
'dberr-cachederror' => '这是所请求页面的缓存副本,可能不是最新的。',
+# HTML forms
+'htmlform-invalid-input' => '您输入的内容存在问题',
+'htmlform-select-badoption' => '您所指定的值不是有效的选项。',
+'htmlform-int-invalid' => '您所指定的值不是一个整数。',
+'htmlform-float-invalid' => '您所指定的值不是一个数字。',
+'htmlform-int-toolow' => '您所指定的值低于最小值$1',
+'htmlform-int-toohigh' => '您所指定的值高于最大值$1',
+'htmlform-submit' => '提交',
+'htmlform-reset' => '撤销更改',
+'htmlform-selectorother-other' => '其他',
+
);
diff --git a/languages/messages/MessagesZh_hant.php b/languages/messages/MessagesZh_hant.php
index 7af2d2f4..3bd380ab 100644
--- a/languages/messages/MessagesZh_hant.php
+++ b/languages/messages/MessagesZh_hant.php
@@ -10,8 +10,10 @@
* @author Alexsh
* @author Bencmq
* @author FireJackey
+ * @author Gaoxuewei
* @author Hakka
* @author Horacewai2
+ * @author Jidanni
* @author KaiesTse
* @author Liangent
* @author Mark85296341
@@ -27,14 +29,14 @@
$fallback = 'zh-hans';
+$fallback8bitEncoding = 'windows-950';
+
$namespaceNames = array(
NS_MEDIA => '媒體',
NS_SPECIAL => '特殊',
- NS_MAIN => '',
NS_TALK => '討論',
NS_USER => '用戶',
NS_USER_TALK => '用戶討論',
- # NS_PROJECT set by $wgMetaNamespace
NS_PROJECT_TALK => '$1討論',
NS_FILE => '檔案',
NS_FILE_TALK => '檔案討論',
@@ -45,7 +47,7 @@ $namespaceNames = array(
NS_HELP => '幫助',
NS_HELP_TALK => '幫助討論',
NS_CATEGORY => '分類',
- NS_CATEGORY_TALK => '分類討論'
+ NS_CATEGORY_TALK => '分類討論',
);
$namespaceAliases = array(
@@ -86,35 +88,35 @@ $namespaceAliases = array(
$specialPageAliases = array(
'DoubleRedirects' => array( '雙重重定向頁面' ),
'BrokenRedirects' => array( '損壞的重定向頁' ),
- 'Userlogin' => array( '用戶登入' ),
+ 'Disambiguations' => array( '消歧義頁' ),
+ 'Userlogin' => array( '用戶登錄' ),
'Userlogout' => array( '用戶登出' ),
- 'CreateAccount' => array( '創建帳戶' ),
+ 'CreateAccount' => array( '創建賬戶' ),
'Preferences' => array( '參數設置' ),
'Watchlist' => array( '監視列表' ),
'Recentchanges' => array( '最近更改' ),
- 'Recentchangeslinked' => array( '連出更改' ),
- 'Upload' => array( '上載檔案' ),
- 'Listfiles' => array( '檔案列表' ),
- 'Newimages' => array( '新建檔案' ),
+ 'Upload' => array( '上傳文件' ),
+ 'Listfiles' => array( '文件列表' ),
+ 'Newimages' => array( '新建文件' ),
'Listusers' => array( '用戶列表' ),
'Listgrouprights' => array( '群組權限' ),
- 'Statistics' => array( '統計资讯' ),
+ 'Statistics' => array( '統計信息' ),
'Randompage' => array( '隨機頁面' ),
'Lonelypages' => array( '孤立頁面' ),
'Uncategorizedpages' => array( '未歸類頁面' ),
'Uncategorizedcategories' => array( '未歸類分類' ),
- 'Uncategorizedimages' => array( '未歸類檔案' ),
+ 'Uncategorizedimages' => array( '未歸類文件' ),
'Uncategorizedtemplates' => array( '未歸類模板' ),
'Unusedcategories' => array( '未使用分類' ),
- 'Unusedimages' => array( '未使用檔案' ),
+ 'Unusedimages' => array( '未使用文件' ),
'Wantedpages' => array( '待撰頁面' ),
'Wantedcategories' => array( '待撰分類' ),
- 'Wantedfiles' => array( '需要的檔案' ),
+ 'Wantedfiles' => array( '需要的文件' ),
'Wantedtemplates' => array( '需要的模板' ),
- 'Mostlinked' => array( '最多連結頁面' ),
- 'Mostlinkedcategories' => array( '最多連結分類' ),
- 'Mostlinkedtemplates' => array( '最多連結模板' ),
- 'Mostimages' => array( '最多連結檔案' ),
+ 'Mostlinked' => array( '最多鏈接頁面' ),
+ 'Mostlinkedcategories' => array( '最多鏈接分類' ),
+ 'Mostlinkedtemplates' => array( '最多鏈接模板' ),
+ 'Mostimages' => array( '最多鏈接文件' ),
'Mostcategories' => array( '最多分類頁面' ),
'Mostrevisions' => array( '最多修訂頁面' ),
'Fewestrevisions' => array( '最少修訂頁面' ),
@@ -122,7 +124,7 @@ $specialPageAliases = array(
'Longpages' => array( '長頁面' ),
'Newpages' => array( '最新頁面' ),
'Ancientpages' => array( '最早頁面' ),
- 'Deadendpages' => array( '斷連頁面' ),
+ 'Deadendpages' => array( '斷鏈頁面' ),
'Protectedpages' => array( '已保護頁面' ),
'Protectedtitles' => array( '已保護標題' ),
'Allpages' => array( '所有頁面' ),
@@ -132,32 +134,46 @@ $specialPageAliases = array(
'Contributions' => array( '用戶貢獻' ),
'Emailuser' => array( '電郵用戶' ),
'Confirmemail' => array( '確認電子郵件' ),
- 'Whatlinkshere' => array( '連入頁面' ),
+ 'Whatlinkshere' => array( '鏈入頁面' ),
+ 'Recentchangeslinked' => array( '鏈出更改' ),
'Movepage' => array( '移動頁面' ),
- 'Booksources' => array( '網路書源' ),
+ 'Blockme' => array( '封禁我' ),
+ 'Booksources' => array( '網絡書源' ),
'Categories' => array( '頁面分類' ),
'Export' => array( '導出頁面' ),
- 'Version' => array( '版本資訊' ),
- 'Allmessages' => array( '所有訊息' ),
+ 'Version' => array( '版本信息' ),
+ 'Allmessages' => array( '所有信息' ),
'Log' => array( '日誌' ),
+ 'Blockip' => array( '查封用戶' ),
'Undelete' => array( '恢復被刪頁面' ),
'Import' => array( '導入頁面' ),
+ 'Lockdb' => array( '鎖定數據庫' ),
+ 'Unlockdb' => array( '解除數據庫鎖定' ),
'Userrights' => array( '用戶權限' ),
- 'MIMEsearch' => array( 'MIME搜尋' ),
+ 'MIMEsearch' => array( 'MIME搜索' ),
+ 'FileDuplicateSearch' => array( '搜索重複文件' ),
+ 'Unwatchedpages' => array( '未被監視的頁面' ),
+ 'Listredirects' => array( '重定向頁面列表' ),
+ 'Revisiondelete' => array( '刪除或恢復版本' ),
'Unusedtemplates' => array( '未使用模板' ),
+ 'Randomredirect' => array( '隨機重定向頁面' ),
'Mypage' => array( '我的用戶頁' ),
'Mytalk' => array( '我的討論頁' ),
'Mycontributions' => array( '我的貢獻' ),
'Listadmins' => array( '管理員列表' ),
'Listbots' => array( '機器人列表' ),
'Popularpages' => array( '熱點頁面' ),
- 'Search' => array( '搜尋' ),
+ 'Search' => array( '搜索' ),
'Resetpass' => array( '修改密碼' ),
+ 'Withoutinterwiki' => array( '沒有跨語言鏈接的頁面' ),
'MergeHistory' => array( '合併歷史' ),
- 'Filepath' => array( '檔案路徑' ),
+ 'Filepath' => array( '文件路徑' ),
'Invalidateemail' => array( '不可識別的電郵地址' ),
'Blankpage' => array( '空白頁面' ),
+ 'LinkSearch' => array( '搜索網頁鏈接' ),
'DeletedContributions' => array( '已刪除的用戶貢獻' ),
+ 'Tags' => array( '標籤' ),
+ 'Activeusers' => array( '活躍用戶' ),
);
$bookstoreList = array(
@@ -198,6 +214,7 @@ $messages = array(
'tog-enotifminoredits' => '即使是頁面的小修改也向我發電子郵件',
'tog-enotifrevealaddr' => '在通知電子郵件中顯示我的電子郵件位址',
'tog-shownumberswatching' => '顯示監視用戶的數目',
+'tog-oldsig' => '原有簽名的預覽:',
'tog-fancysig' => '將簽名以維基文字對待 (不產生自動連結)',
'tog-externaleditor' => '預設使用外部編輯器 (進階者專用,需要在您的電腦上作出一些特別設定)',
'tog-externaldiff' => '預設使用外部差異分析 (進階者專用,需要在您的電腦上作出一些特別設定)',
@@ -221,6 +238,13 @@ $messages = array(
'underline-never' => '從不使用',
'underline-default' => '瀏覽器預設',
+# Font style option in Special:Preferences
+'editfont-style' => '編輯區字型樣式:',
+'editfont-default' => '瀏覽器預設',
+'editfont-monospace' => '固定間距字型',
+'editfont-sansserif' => '無襯線字型',
+'editfont-serif' => '襯線字型',
+
# Dates
'sunday' => '星期日',
'monday' => '星期一',
@@ -280,7 +304,7 @@ $messages = array(
'category-media-header' => '"$1"分類中的媒體',
'category-empty' => "''這個分類中尚未包含任何頁面或媒體。''",
'hidden-categories' => '$1個隱藏分類',
-'hidden-category-category' => '隱藏分類', # Name of the category where hidden categories will be listed
+'hidden-category-category' => '隱藏分類',
'category-subcat-count' => '{{PLURAL:$2|這個分類中只有以下的附分類。|這個分類中有以下的$1個附分類,共有$2個附分類。}}',
'category-subcat-count-limited' => '這個分類下有$1個附分類。',
'category-article-count' => '{{PLURAL:$2|這個分類中只有以下的頁面。|這個分類中有以下的$1個頁面,共有$2個頁面。}}',
@@ -288,6 +312,8 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|這個分類中只有以下的檔案。|這個分類中有以下的$1個檔案,共有$2個檔案。}}',
'category-file-count-limited' => '這個分類下有$1個檔案。',
'listingcontinuesabbrev' => '續',
+'index-category' => '已做索引的頁面',
+'noindex-category' => '未做索引的頁面',
'mainpagetext' => "'''已成功安裝 MediaWiki。'''",
'mainpagedocfooter' => '請參閱 [http://meta.wikimedia.org/wiki/Help:Contents 用戶手冊] 以獲得使用此 wiki 軟件的訊息!
@@ -298,10 +324,18 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見問題解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
-'about' => '關於',
-'article' => '內容頁面',
-'newwindow' => '(在新視窗中打開)',
-'cancel' => '取消',
+'about' => '關於',
+'article' => '內容頁面',
+'newwindow' => '(在新視窗中打開)',
+'cancel' => '取消',
+'moredotdotdot' => '更多...',
+'mypage' => '我的頁面',
+'mytalk' => '我的對話頁',
+'anontalk' => '該IP的對話頁',
+'navigation' => '導航',
+'and' => '和',
+
+# Cologne Blue skin
'qbfind' => '尋找',
'qbbrowse' => '瀏覽',
'qbedit' => '編輯',
@@ -309,15 +343,35 @@ $messages = array(
'qbpageinfo' => '頁面訊息',
'qbmyoptions' => '我的選項',
'qbspecialpages' => '特殊頁面',
-'moredotdotdot' => '更多...',
-'mypage' => '我的頁面',
-'mytalk' => '我的對話頁',
-'anontalk' => '該IP的對話頁',
-'navigation' => '導航',
-'and' => '和',
-
-# Metadata in edit box
-'metadata_help' => '元數據:',
+'faq' => '常見問題解答',
+'faqpage' => 'Project:常見問題解答',
+
+# Vector skin
+'vector-action-addsection' => '加入主題',
+'vector-action-delete' => '刪除',
+'vector-action-move' => '移動',
+'vector-action-protect' => '保護',
+'vector-action-undelete' => '恢復被刪頁面',
+'vector-action-unprotect' => '解除保護',
+'vector-namespace-category' => '分類',
+'vector-namespace-help' => '幫助頁面',
+'vector-namespace-image' => '檔案',
+'vector-namespace-main' => '頁面',
+'vector-namespace-media' => '媒體頁面',
+'vector-namespace-mediawiki' => '界面',
+'vector-namespace-project' => '計劃頁面',
+'vector-namespace-special' => '特殊頁面',
+'vector-namespace-talk' => '討論',
+'vector-namespace-template' => '模板',
+'vector-namespace-user' => '用戶頁面',
+'vector-view-create' => '建立',
+'vector-view-edit' => '編輯',
+'vector-view-history' => '檢視歷史',
+'vector-view-view' => '閱讀',
+'vector-view-viewsource' => '檢視原始碼',
+'actions' => '動作',
+'namespaces' => '名字空間',
+'variants' => '變換',
'errorpagetitle' => '錯誤',
'returnto' => '返回到$1。',
@@ -367,18 +421,22 @@ $messages = array(
'otherlanguages' => '其它語言',
'redirectedfrom' => '(重定向自$1)',
'redirectpagesub' => '重定向頁面',
-'lastmodifiedat' => '這頁的最後修訂在 $1 $2。', # $1 date, $2 time
+'lastmodifiedat' => '這頁的最後修訂在 $1 $2。',
'viewcount' => '本頁面已經被瀏覽$1次。',
'protectedpage' => '被保護頁',
'jumpto' => '跳轉到:',
'jumptonavigation' => '導航',
'jumptosearch' => '搜索',
+'view-pool-error' => '抱歉,伺服器在這段時間中已經超出負荷。
+太多用戶嘗試檢視這個頁面。
+在嘗試訪問這個頁面之前請再稍等一會。
+
+$1',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '關於{{SITENAME}}',
'aboutpage' => 'Project:關於',
'copyright' => '本站的全部文本內容在$1之條款下提供。',
-'copyrightpagename' => '{{SITENAME}}版權',
'copyrightpage' => '{{ns:project}}:版權訊息',
'currentevents' => '現時事件',
'currentevents-url' => 'Project:現時事件',
@@ -386,14 +444,12 @@ $messages = array(
'disclaimerpage' => 'Project:一般免責聲明',
'edithelp' => '編輯幫助',
'edithelppage' => 'Help:如何編輯頁面',
-'faq' => '常見問題解答',
-'faqpage' => 'Project:常見問題解答',
'helppage' => 'Help:目錄',
'mainpage' => '首頁',
'mainpage-description' => '首頁',
'policy-url' => 'Project:方針',
'portal' => '社群入口',
-'portal-url' => 'Project:社區',
+'portal-url' => 'Project:社群入口',
'privacy' => '隱私政策',
'privacypage' => 'Project:隱私政策',
@@ -467,10 +523,6 @@ $messages = array(
「$1」
來自於函數「$2」。
數據庫返回錯誤「$3: $4」。',
-'noconnect' => '抱歉!網站遇到一些技術問題,無法連接數據庫伺服器。<br />
-$1',
-'nodb' => '無法選擇資料庫 $1',
-'cachederror' => '以下頁面是快取中的副本,未必是最新版本。',
'laggedslavemode' => '警告: 頁面可能不包含最近的更新。',
'readonly' => '資料庫禁止訪問',
'enterlockreason' => '請輸入禁止訪問原因, 包括估計重新開放的時間',
@@ -488,6 +540,8 @@ $1',
'readonly_lag' => '附屬資料庫伺服器正在將快取更新到主伺服器,資料庫已被自動鎖定',
'internalerror' => '內部錯誤',
'internalerror_info' => '內部錯誤: $1',
+'fileappenderrorread' => '當附加時無法讀取"$1"。',
+'fileappenderror' => '不能附加"$1"到"$2"。',
'filecopyerror' => '無法複製檔案"$1"到"$2"。',
'filerenameerror' => '無法重新命名檔案"$1"到"$2"。',
'filedeleteerror' => '無法刪除檔案"$1"。',
@@ -497,7 +551,8 @@ $1',
'unexpected' => '不正常值:"$1"="$2"。',
'formerror' => '錯誤:無法提交表單',
'badarticleerror' => '無法在此頁進行該操作。',
-'cannotdelete' => '無法刪除選定的頁面或圖片(它可能已經被其他人刪除了)。',
+'cannotdelete' => '無法刪除頁面或圖片"$1"。
+它可能已經被其他人刪除了。',
'badtitle' => '錯誤的標題',
'badtitletext' => '所請求頁面的標題是無效的、不存在,跨語言或跨wiki鏈接的標題錯誤。它可能包含一個或更多的不能用於標題的字符。',
'perfcached' => '下列是快取資料,因此可能不是最新的:',
@@ -528,7 +583,6 @@ $2',
'virus-unknownscanner' => '未知的防病毒:',
# Login and logout pages
-'logouttitle' => '用戶退出',
'logouttext' => '您已經登出。
您可以以匿名方式繼續使用{{SITENAME}},或以相同或不同用戶身份[[Special:UserLogin|登入]]。
@@ -536,7 +590,6 @@ $2',
'welcomecreation' => '== 歡迎,$1! ==
您的帳號已經建立。
不要忘記設置[[Special:Preferences|{{SITENAME}}的個人參數]]。',
-'loginpagetitle' => '用戶登入',
'yourname' => '您的用戶名:',
'yourpassword' => '您的密碼:',
'yourpasswordagain' => '再次輸入密碼:',
@@ -547,6 +600,7 @@ $2',
'nav-login-createaccount' => '登入/建立新賬號',
'loginprompt' => '您必須允許瀏覽器紀錄Cookie才能成功登入 {{SITENAME}} 並順利進行操作',
'userlogin' => '登入/建立新賬號',
+'userloginnocreate' => '登入',
'logout' => '登出',
'userlogout' => '登出',
'notloggedin' => '未登入',
@@ -558,28 +612,8 @@ $2',
'createaccountmail' => '通過電郵',
'badretype' => '您所輸入的密碼並不相同。',
'userexists' => '您所輸入的用戶名稱已經存在,請另選一個名稱。',
-'youremail' => '電子郵件:',
-'username' => '用戶名:',
-'uid' => '用戶ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|一|多}}組的成員:',
-'yourrealname' => '真實姓名:',
-'yourlanguage' => '介面語言:',
-'yourvariant' => '字體變換:',
-'yournick' => '簽名:',
-'badsig' => '錯誤的原始簽名。請檢查HTML標籤。',
-'badsiglength' => '您的簽名過長。
-它的長度不可超過$1個字元。',
-'yourgender' => '性別:',
-'gender-unknown' => '未指定',
-'gender-male' => '男',
-'gender-female' => '女',
-'prefs-help-gender' => '可選: 用以軟件中的性別指定。此項資料將會被公開。',
-'email' => '電子郵件',
-'prefs-help-realname' => '真實姓名是可選的。
-如果您選擇提供它,那它便用以對您的貢獻署名。',
'loginerror' => '登入錯誤',
-'prefs-help-email' => '電子郵件是可選的,但當您忘記您的個密碼時需要將新密碼重設寄回給您。您亦可以在您沒有公開自己的用戶身分時透過您的用戶頁或用戶討論頁與您聯繫。',
-'prefs-help-email-required' => '需要電子郵件地址。',
+'createaccounterror' => '無法建立賬戶:$1',
'nocookiesnew' => '已成功創建新賬戶!偵測到您已關閉 Cookies,請開啟它並登入。',
'nocookieslogin' => '本站利用 Cookies 進行用戶登入,偵測到您已關閉 Cookies,請開啟它並重新登入。',
'noname' => '{{GENDER:|你|妳|你}}沒有輸入一個有效的用戶名。',
@@ -590,9 +624,11 @@ $2',
檢查您的拼寫,或者用下面的表格[[Special:UserLogin/signup|建立一個新賬號]]。',
'nosuchusershort' => '沒有一個名為「<nowiki>$1</nowiki>」的用戶。請檢查您輸入的文字是否有錯誤。',
'nouserspecified' => '{{GENDER:|你|妳|你}}需要指定一個用戶名。',
+'login-userblocked' => '這位用戶已被封鎖。不容許登入。',
'wrongpassword' => '您輸入的密碼錯誤,請再試一次。',
'wrongpasswordempty' => '沒有輸入密碼!請重試。',
-'passwordtooshort' => '您的密碼不正確或太短,不能少於$1個字元,而且必須跟用戶名不同。',
+'passwordtooshort' => '您的密碼不能少於$1個字元。',
+'password-name-match' => '您的密碼必須跟您的用戶名不相同。',
'mailmypassword' => '將新密碼寄給我',
'passwordremindertitle' => '{{SITENAME}}的新臨時密碼',
'passwordremindertext' => '有人(可能是您,來自IP位址$1)已請求{{SITENAME}}的新密碼 ($4)。
@@ -603,6 +639,7 @@ $2',
如果是其他人發出了該請求,或者您已經記起了您的密碼並不準備改變它,
您可以忽略此消息並繼續使用您的舊密碼。',
'noemail' => '用戶"$1"沒有登記電子郵件地址。',
+'noemailcreate' => '您需要提供一個有效的電子郵件地址',
'passwordsent' => '用戶"$1"的新密碼已經寄往所登記的電子郵件地址。
請在收到後再登入。',
'blocked-mailpassword' => '您的IP地址處於查封狀態而不允許編輯,為了安全起見,密碼恢復功能已被禁用。',
@@ -622,9 +659,11 @@ $2',
'createaccount-text' => '有人在{{SITENAME}}中利用您的電郵創建了一個名為 "$2" 的新帳戶($4),密碼是 "$3" 。您應該立即登入並更改密碼。
如果該帳戶建立錯誤的話,您可以忽略此訊息。',
+'usernamehasherror' => '用戶名稱不可以包含切細字元',
'login-throttled' => '您已經嘗試多次的登入動作。
請稍等多一會再試。',
'loginlanguagelabel' => '語言: $1',
+'suspicious-userlogout' => '您登出的要求已經被拒絕,因為它可能是由已損壞的瀏覽器或者快取代理傳送。',
# Password reset dialog
'resetpass' => '更改密碼',
@@ -637,18 +676,13 @@ $2',
'resetpass_submit' => '設定密碼並登入',
'resetpass_success' => '您的密碼已經被成功更改!
現在正為您登入...',
-'resetpass_bad_temporary' => '無效的臨時密碼。
-您可能已成功地更改了您的密碼,或者已經請求一個新的臨時密碼。',
'resetpass_forbidden' => '無法更改密碼',
'resetpass-no-info' => '您必須登入後直接進入這個頁面。',
'resetpass-submit-loggedin' => '更改密碼',
+'resetpass-submit-cancel' => '取消',
'resetpass-wrong-oldpass' => '無效的臨時或現有的密碼。
您可能已成功地更改了您的密碼,或者已經請求一個新的臨時密碼。',
'resetpass-temp-password' => '臨時密碼:',
-'resetpass-log' => '密碼重設日誌',
-'resetpass-logtext' => '以下是由管理員重設他們密碼的日誌。',
-'resetpass-logentry' => '已更改$1的密碼',
-'resetpass-comment' => '更改密碼的理由:',
# Edit page toolbar
'bold_sample' => '粗體文字',
@@ -718,7 +752,6 @@ $2',
'blockededitsource' => "{{GENDER:|你|妳|你}}對'''$1'''進行'''編輯'''的文字如下:",
'whitelistedittitle' => '登入後才可編輯',
'whitelistedittext' => '您必須先$1才可編輯頁面。',
-'confirmedittitle' => '郵件確認後才可編輯',
'confirmedittext' => '在編輯此頁之前您必須確認您的郵箱位址。請透過[[Special:Preferences|參數設定]]設定並驗証您的郵箱位址。',
'nosuchsectiontitle' => '找不到段落',
'nosuchsectiontext' => '您嘗試編輯的章節並不存在。
@@ -738,13 +771,19 @@ $2',
'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜索此頁標題]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有關日誌],
或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此頁]</span>。',
+'noarticletext-nopermission' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜索此頁標題]],
+或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有關日誌]</span>。',
'userpage-userdoesnotexist' => '未曾創建用戶名「$1」。請在創建/編輯這個頁面前先檢查一下。',
+'userpage-userdoesnotexist-view' => '未曾創建用戶名「$1」。',
+'blocked-notice-logextract' => '這位用戶現正被封鎖。
+下面有最近的封鎖紀錄以供參考:',
'clearyourcache' => "'''注意:在儲存以後,您必須清除瀏覽器的快取才能看到所作出的改變。'''
'''Mozilla / Firefox / Safari''': 按著 ''Shift'' 再點擊''重新整理'',或按下''Ctrl-F5''或''Ctrl-R''(在Macintosh上按下''Command-R'');
'''Konqueror''': 只需點擊 ''重新整理''或按下''F5'';
'''Opera''': 在 ''工具→設定'' 中完整地清除它們的快取,或按下''Alt-F5'';
'''Internet Explorer''': 按著 ''Ctrl'' 再點擊 ''重新整理'',或按下 ''Ctrl-F5''。",
-'usercssjsyoucanpreview' => "'''提示:''' 在保存前請用'顯示預覽'按鈕來測試您新的 CSS/JS 。",
+'usercssyoucanpreview' => "'''提示:''' 在保存前請用「{{int:showpreview}}」按鈕來測試您新的 CSS 。",
+'userjsyoucanpreview' => "'''提示:''' 在保存前請用「{{int:showpreview}}」按鈕來測試您新的 JavaScript 。",
'usercsspreview' => "'''注意您只是在預覽您的個人 CSS。'''
'''還沒有儲存﹗'''",
'userjspreview' => "'''注意您只是在測試/預覽您的個人 JavaScript。'''
@@ -793,13 +832,16 @@ $2',
'readonlywarning' => "'''警告: 資料庫被鎖定以進行維護,所以您目前將無法保存您的修改。'''您或許希望先將本段文字複製並保存到文字文件,然後等一會兒再修改。
鎖定資料庫的管理員有如下解釋:$1",
-'protectedpagewarning' => "'''警告: 本頁已經被保護,只有擁有管理員許可權的用戶才可修改。'''",
-'semiprotectedpagewarning' => "'''注意:''' 本頁面被鎖定,僅限註冊用戶編輯。",
+'protectedpagewarning' => "'''警告: 本頁已經被保護,只有擁有管理員許可權的用戶才可修改。'''
+最近的日誌在下面提供以便參考:",
+'semiprotectedpagewarning' => "'''注意:''' 本頁面被鎖定,僅限註冊用戶編輯。
+最近的日誌在下面提供以便參考:",
'cascadeprotectedwarning' => '警告: 本頁已經被保護,只有擁有管理員權限的用戶才可修改,因為本頁已被以下連鎖保護的{{PLURAL:$1|一個|多個}}頁面所包含:',
-'titleprotectedwarning' => "'''警告: 本頁面已被鎖上,需要[[Special:ListGroupRights|指定權限]]方可創建。'''",
-'templatesused' => '在這個頁面上使用的模板有:',
-'templatesusedpreview' => '此次預覽中使用的模板有:',
-'templatesusedsection' => '在這個段落上使用的模板有:',
+'titleprotectedwarning' => "'''警告: 本頁面已被鎖上,需要[[Special:ListGroupRights|指定權限]]方可創建。'''
+最近的日誌在下面提供以便參考:",
+'templatesused' => '此頁面包含以下{{PLURAL:$1|模板|模板}}:',
+'templatesusedpreview' => '此次預覽中使用的{{PLURAL:$1|模板|模板}}有:',
+'templatesusedsection' => '在這個段落上使用的{{PLURAL:$1|模板|模板}}有:',
'template-protected' => '(保護)',
'template-semiprotected' => '(半保護)',
'hiddencategories' => '這個頁面是屬於$1個隱藏分類的成員:',
@@ -807,16 +849,18 @@ $2',
'nocreatetitle' => '創建頁面受限',
'nocreatetext' => '{{SITENAME}}限制了創建新頁面的功能。{{GENDER:|你|妳|你}}可以返回並編輯已有的頁面,或者[[Special:UserLogin|登錄或創建新賬戶]]。',
'nocreate-loggedin' => '您並無許可權去創建新頁面。',
+'sectioneditnotsupported-title' => '不支持段落編輯',
+'sectioneditnotsupported-text' => '此頁面不支持段落編輯。',
'permissionserrors' => '權限錯誤',
'permissionserrorstext' => '根據以下的{{PLURAL:$1|原因|原因}},您並無權限去做以下的動作:',
'permissionserrorstext-withaction' => '根據以下的{{PLURAL:$1|原因|原因}},您並無權限去做$2:',
-'recreate-deleted-warn' => "'''警告: 你現在重新創建一個先前曾經刪除過的頁面。'''
+'recreate-moveddeleted-warn' => "'''警告: {{GENDER:|你|妳|你}}現在重新創建一個先前曾經刪除過的頁面。'''
-你應該要考慮一下繼續編輯這一個頁面是否合適。
+{{GENDER:|你|妳|你}}應該要考慮一下繼續編輯這一個頁面是否合適。
為方便起見,這一個頁面的刪除記錄已經在下面提供:",
-'deleted-notice' => '這個頁面已經刪除。
-這個頁面的刪除日誌已在下面提供以便參考。',
-'deletelog-fulllog' => '查看整個日誌',
+'moveddeleted-notice' => '這個頁面已經刪除。
+這個頁面的刪除和移動日誌已在下面提供以便參考。',
+'log-fulllog' => '檢視完整日誌',
'edit-hook-aborted' => '編輯被鈎取消。
它並無給出解釋。',
'edit-gone-missing' => '不能更新頁面。
@@ -839,6 +883,7 @@ $2',
'post-expand-template-argument-category' => '包含着略過模板參數的頁面',
'parser-template-loop-warning' => '已偵測迴歸模板: [[$1]]',
'parser-template-recursion-depth-warning' => '已超過迴歸模板深度限制 ($1)',
+'language-converter-depth-warning' => '已超過字詞轉換器深度限制($1)',
# "Undo" feature
'undo-success' => '該編輯可以被撤銷。請檢查以下對比以核實這正是您想做的,然後儲存以下更改以完成撤銷編輯。',
@@ -856,9 +901,9 @@ $2',
'viewpagelogs' => '查詢這個頁面的日誌',
'nohistory' => '沒有本頁的修訂記錄。',
'currentrev' => '最新修訂版本',
-'currentrev-asof' => '在$1的當前修訂版本',
+'currentrev-asof' => '在$1的最新修訂版本',
'revisionasof' => '在$1所做的修訂版本',
-'revision-info' => '在$1由$2所做的修訂版本', # Additionally available: $3: revision id
+'revision-info' => '在$1由$2所做的修訂版本',
'previousrevision' => '←上一修訂',
'nextrevision' => '下一修訂→',
'currentrevisionlink' => '最新修訂',
@@ -870,7 +915,7 @@ $2',
'histlegend' => "差異選擇: 標記要比較修訂版本的單選按鈕並點擊底部的按鈕進行比較。<br />
說明: '''({{int:cur}})''' 指與最新修訂版本比較,'''({{int:last}})''' 指與前一個修訂修訂版本比較,'''{{int:minoreditletter}}''' = 小修改。",
'history-fieldset-title' => '瀏覽歷史',
-'deletedrev' => '[已刪除]',
+'history-show-deleted' => '僅已刪除的',
'histfirst' => '最早版本',
'histlast' => '最新版本',
'historysize' => '($1 位元組)',
@@ -879,69 +924,109 @@ $2',
# Revision feed
'history-feed-title' => '修訂歷史',
'history-feed-description' => '本站上此頁的修訂歷史',
-'history-feed-item-nocomment' => '$1在$2', # user at time
+'history-feed-item-nocomment' => '$1在$2',
'history-feed-empty' => '所請求的頁面不存在。它可能已被刪除或重新命名。
嘗試[[Special:Search|搜索本站]]獲得相關的新建頁面。',
# Revision deletion
-'rev-deleted-comment' => '(註釋已移除)',
-'rev-deleted-user' => '(用戶名已移除)',
-'rev-deleted-event' => '(日誌動作已移除)',
-'rev-deleted-text-permission' => "該頁面修訂已經被'''刪除'''。
-在[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。",
-'rev-deleted-text-view' => "該頁面修訂已經被'''刪除'''。作為管理員,您可以檢視它;
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。",
-'rev-deleted-no-diff' => "因為其中一次修訂'''刪除''',您不可以查看這個差異。
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可能有更多的資料。",
-'rev-deleted-unhide-diff' => "該頁面的其中一次修訂已經被'''刪除'''。
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可能有更多的資料。
-作為管理員,如果您想繼續的話,您可以仍然[$1 去查看這次修訂]。",
-'rev-delundel' => '顯示/隱藏',
-'revisiondelete' => '刪除/恢復刪除修訂',
-'revdelete-nooldid-title' => '無效的目標修訂',
-'revdelete-nooldid-text' => '您尚未指定一個目標修訂去進行這個功能、
+'rev-deleted-comment' => '(註釋已移除)',
+'rev-deleted-user' => '(用戶名已移除)',
+'rev-deleted-event' => '(日誌動作已移除)',
+'rev-deleted-user-contribs' => '[用戶名或IP地址已移除 - 從貢獻中隱藏編輯]',
+'rev-deleted-text-permission' => "該頁面修訂已被'''刪除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]中可以找到詳細的訊息。",
+'rev-deleted-text-unhide' => "該頁面修訂已經被'''刪除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]中可以找到詳細的訊息。
+作為管理員,如果您想繼續的話,您可以仍然[$1 去檢視這次修訂]。",
+'rev-suppressed-text-unhide' => "該頁面修訂已經被'''廢止'''。
+在[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 廢止日誌]中可以找到詳細的訊息。
+作為管理員,如果您想繼續的話,您可以仍然[$1 去檢視這次修訂]。",
+'rev-deleted-text-view' => "該頁面修訂已經被'''刪除'''。作為管理員,您可以檢視它;
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可以找到詳細的訊息。",
+'rev-suppressed-text-view' => "該頁面修訂已經被'''廢止'''。作為管理員,您可以檢視它;
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]中可以找到詳細的訊息。",
+'rev-deleted-no-diff' => "因為其中一次修訂已被'''刪除''',您不可以檢視這個差異。
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可以找到更多的資料。",
+'rev-suppressed-no-diff' => "該頁面的其中一次修訂已經被'''刪除''',你不可以查看這次的修訂。",
+'rev-deleted-unhide-diff' => "該頁面的其中一次修訂已經被'''刪除'''。
+在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可以找到更多的資料。
+作為管理員,如果您想繼續的話,您可以仍然[$1 去檢視這次修訂]。",
+'rev-suppressed-unhide-diff' => "該頁面的其中一次修訂已經被'''廢止'''。
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]中可以找到更多的資料。
+作為管理員,如果您想繼續的話,您可以仍然[$1 去檢視這次修訂]。",
+'rev-deleted-diff-view' => "差異中的一次修訂已被'''刪除'''。
+作為管理員,您可以檢視此差異。詳細訊息可在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中找到。",
+'rev-suppressed-diff-view' => "差異中的一次修訂已被'''廢止'''。
+作為管理員,您可以檢視此差異。詳細訊息可在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 廢止日誌]中找到。",
+'rev-delundel' => '顯示/隱藏',
+'rev-showdeleted' => '顯示',
+'revisiondelete' => '刪除/恢復刪除修訂',
+'revdelete-nooldid-title' => '無效的目標修訂',
+'revdelete-nooldid-text' => '您尚未指定一個目標修訂去進行這個功能、
所指定的修訂不存在,或者您嘗試去隱藏現時的修訂。',
-'revdelete-nologtype-title' => '沒有給出日誌類型',
-'revdelete-nologtype-text' => '您尚未指定一種日誌類型去做這個動作。',
-'revdelete-toomanytargets-title' => '過多的目標',
-'revdelete-toomanytargets-text' => '您指定了過多的目標去做這個動作。',
-'revdelete-nologid-title' => '無效的日誌項目',
-'revdelete-nologid-text' => '您尚未指定一個目標日誌項目去進行這個動作或指定的項目不存在。',
-'revdelete-selected' => "'''選取[[:$1]]的$2次修訂:'''",
-'logdelete-selected' => "'''選取'''$1'''的日誌項目:'''",
-'revdelete-text' => "'''刪除的修訂仍將顯示在頁面歷史中, 但它們的文字內容已不能被公眾訪問。'''
-在{{SITENAME}}的其他管理員將仍能訪問隱藏的內容並透過與此相同的介面恢復刪除,除非網站工作者進行了一些附加的限制。
-請確認您肯定去做的話,您就要明白到後果,以及這個程序符合[[{{MediaWiki:Policy-url}}|政策]]。",
-'revdelete-suppress-text' => "壓制'''只'''應在以下的情況下進行:
+'revdelete-nologtype-title' => '沒有給出日誌類型',
+'revdelete-nologtype-text' => '您尚未指定一種日誌類型去做這個動作。',
+'revdelete-nologid-title' => '無效的日誌項目',
+'revdelete-nologid-text' => '您尚未指定一個目標日誌項目去進行這個動作或指定的項目不存在。',
+'revdelete-no-file' => '指定的檔案不存在。',
+'revdelete-show-file-confirm' => '{{GENDER:|你|妳|你}}是否真的是想去檢視於$2 $3刪除 "$1" 的檔案修訂?',
+'revdelete-show-file-submit' => '是',
+'revdelete-selected' => "'''選取[[:$1]]的$2次修訂:'''",
+'logdelete-selected' => "'''選取'''$1'''的日誌項目:'''",
+'revdelete-text' => "'''刪除的修訂仍將顯示在頁面歷史中, 但它們的文字內容已不能被公眾訪問。'''
+在{{SITENAME}}的其他管理員將仍能訪問隱藏的內容並透過與此相同的介面恢復刪除,除非網站工作者進行了一些附加的限制。",
+'revdelete-confirm' => '請確認您肯定去做的話,您就要明白到後果,以及這個程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-suppress-text' => "壓制'''只'''應在以下的情況下進行:
* 不合適的個人資料
*: ''住家地址、電話號碼、社群保安號碼等。''",
-'revdelete-legend' => '設定可見性之限制',
-'revdelete-hide-text' => '隱藏修訂文字',
-'revdelete-hide-name' => '隱藏動作和目標',
-'revdelete-hide-comment' => '隱藏編輯摘要',
-'revdelete-hide-user' => '隱藏編輯者的用戶名/IP地址',
-'revdelete-hide-restricted' => '同時廢止由操作員以及其他用戶的資料',
-'revdelete-suppress' => '同時廢止由操作員以及其他用戶的資料',
-'revdelete-hide-image' => '隱藏檔案內容',
-'revdelete-unsuppress' => '在已恢復的修訂中移除限制',
-'revdelete-log' => '理由:',
-'revdelete-submit' => '應用於選取的修訂',
-'revdelete-logentry' => '[[$1]]的修訂可見性已更改',
-'logdelete-logentry' => '[[$1]]的事件可見性已更改',
-'revdelete-success' => "'''修訂的可見性已經成功更新。'''",
-'logdelete-success' => "'''事件的可見性已經成功設定。'''",
-'revdel-restore' => '更改可見性',
-'pagehist' => '頁面歷史',
-'deletedhist' => '已刪除之歷史',
-'revdelete-content' => '內容',
-'revdelete-summary' => '編輯摘要',
-'revdelete-uname' => '用戶名',
-'revdelete-restricted' => '已應用限制至操作員',
-'revdelete-unrestricted' => '已移除對於操作員的限制',
-'revdelete-hid' => '隱藏 $1',
-'revdelete-unhid' => '不隱藏 $1',
-'revdelete-log-message' => '$1的$2次修訂',
-'logdelete-log-message' => '$1的$2項事件',
+'revdelete-legend' => '設定可見性之限制',
+'revdelete-hide-text' => '隱藏修訂文字',
+'revdelete-hide-image' => '隱藏檔案內容',
+'revdelete-hide-name' => '隱藏動作和目標',
+'revdelete-hide-comment' => '隱藏編輯摘要',
+'revdelete-hide-user' => '隱藏編輯者的用戶名/IP地址',
+'revdelete-hide-restricted' => '同時廢止由操作員以及其他用戶的資料',
+'revdelete-radio-same' => '(勿更改)',
+'revdelete-radio-set' => '是',
+'revdelete-radio-unset' => '否',
+'revdelete-suppress' => '同時廢止由操作員以及其他用戶的資料',
+'revdelete-unsuppress' => '在已恢復的修訂中移除限制',
+'revdelete-log' => '理由:',
+'revdelete-submit' => '應用於選取的{{PLURAL:$1|修訂}}',
+'revdelete-logentry' => '[[$1]]的修訂可見性已更改',
+'logdelete-logentry' => '[[$1]]的事件可見性已更改',
+'revdelete-success' => "'''修訂的可見性已經成功更新。'''",
+'revdelete-failure' => "'''修訂的可見性無法更新:'''
+$1",
+'logdelete-success' => "'''事件的可見性已經成功設定。'''",
+'logdelete-failure' => "'''事件的可見性無法設定:'''
+$1",
+'revdel-restore' => '更改可見性',
+'pagehist' => '頁面歷史',
+'deletedhist' => '已刪除之歷史',
+'revdelete-content' => '內容',
+'revdelete-summary' => '編輯摘要',
+'revdelete-uname' => '用戶名',
+'revdelete-restricted' => '已應用限制至操作員',
+'revdelete-unrestricted' => '已移除對於操作員的限制',
+'revdelete-hid' => '隱藏 $1',
+'revdelete-unhid' => '不隱藏 $1',
+'revdelete-log-message' => '$1的$2次修訂',
+'logdelete-log-message' => '$1的$2項事件',
+'revdelete-hide-current' => '正在隱藏於$1 $2之項目錯誤:這個是現時的修訂,不可以隱藏。',
+'revdelete-show-no-access' => '正在顯示於$1 $2之項目錯誤:這個項目已經標示為"已限制",您對它並無通行權。',
+'revdelete-modify-no-access' => '正在更改於$1 $2之項目錯誤:這個項目已經標示為"已限制",您對它並無通行權。',
+'revdelete-modify-missing' => '正在更改項目ID $1錯誤:它在資料庫中遺失!',
+'revdelete-no-change' => '警告:於$1 $2之項目已經請求了可見性的設定。',
+'revdelete-concurrent-change' => '正在更改於$1 $2之項目錯誤:當我們嘗試更改它的設定時,已經被另一些人更改過。請檢查紀錄。',
+'revdelete-only-restricted' => '在隱藏$1 $2的項目時發生錯誤:您不能在選擇了另一可見性選項後廢止管理員查看該項目。',
+'revdelete-reason-dropdown' => '*常用刪除理由
+** 侵犯版權
+** 不合適的個人資料',
+'revdelete-otherreason' => '其它/附加的理由:',
+'revdelete-reasonotherlist' => '其它理由',
+'revdelete-edit-reasonlist' => '編輯刪除埋由',
+'revdelete-offender' => '修訂著者:',
# Suppression log
'suppressionlog' => '廢止日誌',
@@ -978,67 +1063,13 @@ $2',
'mergelogpagetext' => '以下是一個最近由一個頁面的修訂歷史合併到另一個頁面的列表。',
# Diffs
-'history-title' => '「$1」的修訂歷史',
-'difference' => '(修訂版本間差異)',
-'lineno' => '第$1行:',
-'compareselectedversions' => '比較選定的修訂版本',
-'visualcomparison' => '可見比較',
-'wikicodecomparison' => 'Wikitext比較',
-'editundo' => '撤銷',
-'diff-multi' => '($1個中途的修訂版本沒有顯示)',
-'diff-movedto' => '移動到$1',
-'diff-styleadded' => '已加入$1樣式表',
-'diff-added' => '已加入$1',
-'diff-changedto' => '更改到$1',
-'diff-movedoutof' => '移除自$1',
-'diff-styleremoved' => '已移除$1樣式表',
-'diff-removed' => '已移除$1',
-'diff-changedfrom' => '更改自$1',
-'diff-src' => '源碼',
-'diff-withdestination' => '跟$1目的地',
-'diff-with' => '跟 $1 $2',
-'diff-with-final' => '和 $1 $2',
-'diff-width' => '闊',
-'diff-height' => '高',
-'diff-p' => '段落',
-'diff-blockquote' => '語錄',
-'diff-h1' => '標題(1級)',
-'diff-h2' => '標題(2級)',
-'diff-h3' => '標題(3級)',
-'diff-h4' => '標題(4級)',
-'diff-h5' => '標題(5級)',
-'diff-pre' => '預先設定的方塊',
-'diff-div' => '部分',
-'diff-ul' => '未排列的表',
-'diff-ol' => '已排列的表',
-'diff-li' => '表項目',
-'diff-table' => '表',
-'diff-tbody' => '表內容',
-'diff-tr' => '行',
-'diff-td' => '格',
-'diff-th' => '表頭',
-'diff-br' => '斷行',
-'diff-hr' => '橫線',
-'diff-code' => '電腦碼方塊',
-'diff-dl' => '定義表',
-'diff-dt' => '定義字',
-'diff-dd' => '解釋',
-'diff-input' => '輸入',
-'diff-form' => '表',
-'diff-img' => '圖片',
-'diff-span' => '樣式',
-'diff-a' => '連結',
-'diff-i' => '斜體',
-'diff-b' => '粗體',
-'diff-strong' => '強調',
-'diff-em' => '重點',
-'diff-font' => '字體',
-'diff-big' => '大',
-'diff-del' => '已刪除',
-'diff-tt' => '固定闊度',
-'diff-sub' => '下標',
-'diff-sup' => '上標',
-'diff-strike' => '刪除線',
+'history-title' => '「$1」的修訂歷史',
+'difference' => '(修訂版本間差異)',
+'lineno' => '第$1行:',
+'compareselectedversions' => '比較選定的修訂版本',
+'showhideselectedversions' => '顯示/隱藏選定的修訂版本',
+'editundo' => '撤銷',
+'diff-multi' => '($1個中途的修訂版本沒有顯示)',
# Search results
'searchresults' => '搜索結果',
@@ -1046,28 +1077,25 @@ $2',
'searchresulttext' => '有關搜索{{SITENAME}}的更多詳情,參見[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
'searchsubtitle' => '查詢\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 開頭的頁面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有鏈接到 "$1" 的頁面]])',
'searchsubtitleinvalid' => '查詢"$1"',
-'noexactmatch' => "'''沒找到標題為\"\$1\"的頁面。''' 您可以[[:\$1|創建此頁面]]。",
-'noexactmatch-nocreate' => "'''沒找到標題為\"\$1\"的頁面。'''",
'toomanymatches' => '過多的匹配已回應,請嘗試一個不同的查詢',
'titlematches' => '頁面題目相符',
'notitlematches' => '沒有找到匹配頁面題目',
'textmatches' => '頁面內容相符',
'notextmatches' => '沒有頁面內容匹配',
'prevn' => '前$1個',
-'nextn' => '後$1個',
+'nextn' => '後{{PLURAL:$1|$1}}個',
'prevn-title' => '前$1項結果',
'nextn-title' => '後$1項結果',
'shown-title' => '每頁顯示$1項結果',
-'viewprevnext' => '檢視 ($1) ($2) ($3)',
+'viewprevnext' => '檢視 ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => '搜尋選項',
'searchmenu-exists' => "'''在這個wiki上有一頁面叫做\"[[:\$1]]\"'''",
'searchmenu-new' => "'''在這個wiki上新建這個頁面\"[[:\$1]]\"!'''",
'searchhelp-url' => 'Help:目錄',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去瀏覽以此為首的頁面]]',
'searchprofile-articles' => '內容頁面',
-'searchprofile-articles-and-proj' => '內容和專題頁面',
-'searchprofile-project' => '專題頁面',
-'searchprofile-images' => '檔案',
+'searchprofile-project' => '幫助和計劃頁面',
+'searchprofile-images' => '多媒體',
'searchprofile-everything' => '全部',
'searchprofile-advanced' => '進階',
'searchprofile-articles-tooltip' => '在$1中搜尋',
@@ -1075,8 +1103,6 @@ $2',
'searchprofile-images-tooltip' => '搜尋檔案',
'searchprofile-everything-tooltip' => '搜尋全部(包括討論頁面)',
'searchprofile-advanced-tooltip' => '在自定名字空間中度搜尋',
-'prefs-search-nsdefault' => '使用預設值搜尋:',
-'prefs-search-nscustom' => '搜尋自定名字空間:',
'search-result-size' => '$1 ($2個字)',
'search-result-score' => '相關度: $1%',
'search-redirect' => '(重定向 $1)',
@@ -1089,11 +1115,12 @@ $2',
'search-mwsuggest-disabled' => '無建議',
'search-relatedarticle' => '相關',
'mwsuggest-disable' => '停用AJAX建議',
+'searcheverything-enable' => '在所有名字空間中搜尋',
'searchrelated' => '相關',
'searchall' => '所有',
'showingresults' => '下面顯示從第<b>$2</b>條開始的<b>$1</b>條結果:',
'showingresultsnum' => '下面顯示從第<b>$2</b>條開始的<b>$3</b>條結果:',
-'showingresultstotal' => "下面顯示從第'''$1{{PLURAL:$4|| - $2}}'''項,總共'''$3'''項之結果",
+'showingresultsheader' => "對'''$4'''的{{PLURAL:$5|第'''$1'''至第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
'nonefound' => "'''注意''': 只有一些名字空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名字空間作為前綴。",
'search-nonefound' => '在查詢中無結果配合。',
'powersearch' => '進階搜索',
@@ -1101,111 +1128,149 @@ $2',
'powersearch-ns' => '在以下的名字空間中搜尋:',
'powersearch-redir' => '重新定向清單',
'powersearch-field' => '搜尋',
+'powersearch-togglelabel' => '核取:',
+'powersearch-toggleall' => '所有',
+'powersearch-togglenone' => '無',
'search-external' => '外部搜索',
'searchdisabled' => '{{SITENAME}}由於性能方面的原因,全文搜索已被暫時停用。您可以暫時透過Google搜索。請留意他們的索引可能會過時。',
+# Quickbar
+'qbsettings' => '快速導航條',
+'qbsettings-none' => '無',
+'qbsettings-fixedleft' => '左側固定',
+'qbsettings-fixedright' => '右側固定',
+'qbsettings-floatingleft' => '左側漂移',
+'qbsettings-floatingright' => '右側漂移',
+
# Preferences page
-'preferences' => '參數設定',
-'mypreferences' => '我的參數設定',
-'prefs-edits' => '編輯數量:',
-'prefsnologin' => '還未登入',
-'prefsnologintext' => '您必須先<span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} 登入]</span>才能設置個人參數。',
-'prefsreset' => '參數已重新設置。',
-'qbsettings' => '快速導航條',
-'qbsettings-none' => '無',
-'qbsettings-fixedleft' => '左側固定',
-'qbsettings-fixedright' => '右側固定',
-'qbsettings-floatingleft' => '左側漂移',
-'qbsettings-floatingright' => '右側漂移',
-'changepassword' => '更改密碼',
-'skin' => '面板',
-'skin-preview' => '預覽',
-'math' => '數學公式',
-'dateformat' => '日期格式',
-'datedefault' => '預設值',
-'datetime' => '日期和時間',
-'math_failure' => '解析失敗',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => '句法錯誤',
-'math_syntax_error' => '語法錯誤',
-'math_image_error' => 'PNG 轉換失敗;請檢查是否正確安裝了 latex, dvips, gs 和 convert',
-'math_bad_tmpdir' => '無法寫入或建立數學公式臨時目錄',
-'math_bad_output' => '無法寫入或建立數學公式輸出目錄',
-'math_notexvc' => '無法執行"texvc";請參照 math/README 進行配置。',
-'prefs-personal' => '用戶資料',
-'prefs-rc' => '最近更改',
-'prefs-watchlist' => '監視列表',
-'prefs-watchlist-days' => '監視列表中顯示記錄的天數:',
-'prefs-watchlist-days-max' => '(最大7天)',
-'prefs-watchlist-edits' => '在增強的監視列表中顯示的最多更改次數:',
-'prefs-watchlist-edits-max' => '(最多數量: 1000)',
-'prefs-misc' => '雜項',
-'prefs-resetpass' => '更改密碼',
-'saveprefs' => '保存',
-'resetprefs' => '清除未保存的更改',
-'restoreprefs' => '恢復所有預設設定',
-'textboxsize' => '編輯',
-'prefs-edit-boxsize' => '編輯框尺寸',
-'rows' => '列:',
-'columns' => '欄:',
-'searchresultshead' => '搜索結果設定',
-'resultsperpage' => '每頁顯示連結數',
-'contextlines' => '每連結行數:',
-'contextchars' => '每行字數:',
-'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
-'recentchangesdays' => '最近更改中的顯示日數:',
-'recentchangesdays-max' => '(最大 $1 日)',
-'recentchangescount' => '最近更改、頁面歷史及日誌頁面中的預設編輯數:',
-'savedprefs' => '您的個人參數設置已經保存。',
-'timezonelegend' => '時區:',
-'timezonetext' => '¹輸入當地時間與伺服器時間(UTC)的時差。',
-'localtime' => '當地時間:',
-'timezoneselect' => '時區:',
-'timezoneuseserverdefault' => '使用伺服器預設值',
-'timezoneuseoffset' => '其它 (指定偏移)',
-'timezoneoffset' => '時差¹:',
-'servertime' => '伺服器時間:',
-'guesstimezone' => '從瀏覽器填寫',
-'timezoneregion-africa' => '非洲',
-'timezoneregion-america' => '美洲',
-'timezoneregion-antarctica' => '南極洲',
-'timezoneregion-arctic' => '北極',
-'timezoneregion-asia' => '亞洲',
-'timezoneregion-atlantic' => '大西洋',
-'timezoneregion-australia' => '澳洲',
-'timezoneregion-europe' => '歐洲',
-'timezoneregion-indian' => '印度洋',
-'timezoneregion-pacific' => '太平洋',
-'allowemail' => '接受來自其他用戶的郵件',
-'prefs-searchoptions' => '搜尋選項',
-'prefs-namespaces' => '頁面名稱空間',
-'defaultns' => '預設搜索的名字空間',
-'default' => '預設',
-'files' => '檔案',
-'prefs-custom-css' => '自定CSS',
-'prefs-custom-js' => '自定JavaScript',
+'preferences' => '參數設定',
+'mypreferences' => '我的參數設定',
+'prefs-edits' => '編輯數量:',
+'prefsnologin' => '還未登入',
+'prefsnologintext' => '您必須先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>才能設置個人參數。',
+'changepassword' => '更改密碼',
+'prefs-skin' => '面板',
+'skin-preview' => '預覽',
+'prefs-math' => '數學公式',
+'datedefault' => '預設值',
+'prefs-datetime' => '日期和時間',
+'prefs-personal' => '用戶資料',
+'prefs-rc' => '最近更改',
+'prefs-watchlist' => '監視列表',
+'prefs-watchlist-days' => '監視列表中顯示記錄的天數:',
+'prefs-watchlist-days-max' => '最大7天',
+'prefs-watchlist-edits' => '在增強的監視列表中顯示的最多更改次數:',
+'prefs-watchlist-edits-max' => '最多數量: 1000',
+'prefs-watchlist-token' => '監視列表密鑰:',
+'prefs-misc' => '雜項',
+'prefs-resetpass' => '更改密碼',
+'prefs-email' => '電郵選項',
+'prefs-rendering' => '外觀',
+'saveprefs' => '保存',
+'resetprefs' => '清除未保存的更改',
+'restoreprefs' => '恢復所有預設設定',
+'prefs-editing' => '編輯',
+'prefs-edit-boxsize' => '編輯框尺寸',
+'rows' => '列:',
+'columns' => '欄:',
+'searchresultshead' => '搜索結果設定',
+'resultsperpage' => '每頁顯示連結數',
+'contextlines' => '每連結行數:',
+'contextchars' => '每行字數:',
+'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
+'recentchangesdays' => '最近更改中的顯示日數:',
+'recentchangesdays-max' => '最大 $1 日',
+'recentchangescount' => '預設顯示的編輯數:',
+'prefs-help-recentchangescount' => '這個包括最近更改、頁面歷史以及日誌。',
+'prefs-help-watchlist-token' => '在這欄加入一個秘密鑰會生成一個對您監視列表中的RSS源。
+任何一位知道在這個欄位上的匙可以閱讀到您的監視列表,請選擇一個安全的值。
+這裏有一個任意生成的值,供您選擇:$1',
+'savedprefs' => '您的個人參數設置已經保存。',
+'timezonelegend' => '時區:',
+'localtime' => '當地時間:',
+'timezoneuseserverdefault' => '使用伺服器預設值',
+'timezoneuseoffset' => '其它 (指定偏移)',
+'timezoneoffset' => '時差¹:',
+'servertime' => '伺服器時間:',
+'guesstimezone' => '從瀏覽器填寫',
+'timezoneregion-africa' => '非洲',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => '南極洲',
+'timezoneregion-arctic' => '北極',
+'timezoneregion-asia' => '亞洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳洲',
+'timezoneregion-europe' => '歐洲',
+'timezoneregion-indian' => '印度洋',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => '接受來自其他用戶的郵件',
+'prefs-searchoptions' => '搜尋選項',
+'prefs-namespaces' => '頁面名稱空間',
+'defaultns' => '否則在這些名字空間搜索:',
+'default' => '預設',
+'prefs-files' => '檔案',
+'prefs-custom-css' => '自定CSS',
+'prefs-custom-js' => '自定JavaScript',
+'prefs-reset-intro' => '您可以利用這個頁面去重設您的參數設置到網站預設值。這個動作無法復原。',
+'prefs-emailconfirm-label' => '電子郵件確認:',
+'prefs-textboxsize' => '編輯框大小',
+'youremail' => '電子郵件:',
+'username' => '用戶名:',
+'uid' => '用戶ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|一|多}}組的成員:',
+'prefs-registration' => '註冊時間:',
+'yourrealname' => '真實姓名:',
+'yourlanguage' => '介面語言:',
+'yourvariant' => '字體變換:',
+'yournick' => '新簽名:',
+'prefs-help-signature' => '在討論頁面上的評論應該要用 "<nowiki>~~~~</nowiki>" 簽名,這樣便會轉換成{{GENDER:|你|妳|你}}的簽名以及一個時間截記。',
+'badsig' => '錯誤的原始簽名。請檢查HTML標籤。',
+'badsiglength' => '您的簽名過長。
+它的長度不可超過$1個字元。',
+'yourgender' => '性別:',
+'gender-unknown' => '未指定',
+'gender-male' => '男',
+'gender-female' => '女',
+'prefs-help-gender' => '可選: 用以軟件中的性別指定。此項資料將會被公開。',
+'email' => '電子郵件',
+'prefs-help-realname' => '真實姓名是可選的。
+如果您選擇提供它,那它便用以對您的貢獻署名。',
+'prefs-help-email' => '電子郵件是可選的,但當您忘記您的個密碼時需要將新密碼重設寄回給您。您亦可以在您沒有公開自己的用戶身分時透過您的用戶頁或用戶討論頁與您聯繫。',
+'prefs-help-email-required' => '需要電子郵件地址。',
+'prefs-info' => '基本資料',
+'prefs-i18n' => '國際化',
+'prefs-signature' => '簽名',
+'prefs-dateformat' => '日期格式',
+'prefs-timeoffset' => '時間偏移',
+'prefs-advancedediting' => '進階選項',
+'prefs-advancedrc' => '進階選項',
+'prefs-advancedrendering' => '進階選項',
+'prefs-advancedsearchoptions' => '進階選項',
+'prefs-advancedwatchlist' => '進階選項',
+'prefs-display' => '顯示選項',
+'prefs-diffs' => '差異',
# User rights
-'userrights' => '用戶權限管理', # Not used as normal message but as header for the special page itself
-'userrights-lookup-user' => '管理用戶群組',
-'userrights-user-editname' => '輸入用戶名:',
-'editusergroup' => '編輯用戶群組',
-'editinguser' => "正在更改用戶'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 的用戶權限",
-'userrights-editusergroup' => '編輯用戶群組',
-'saveusergroups' => '保存用戶群組',
-'userrights-groupsmember' => '屬於:',
-'userrights-groups-help' => '您可以改動這位用戶所屬的群組:
+'userrights' => '用戶權限管理',
+'userrights-lookup-user' => '管理用戶群組',
+'userrights-user-editname' => '輸入用戶名:',
+'editusergroup' => '編輯用戶群組',
+'editinguser' => "正在更改用戶'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) 的用戶權限",
+'userrights-editusergroup' => '編輯用戶群組',
+'saveusergroups' => '保存用戶群組',
+'userrights-groupsmember' => '屬於:',
+'userrights-groupsmember-auto' => '固有屬於:',
+'userrights-groups-help' => '您可以改動這位用戶所屬的群組:
* 已剔選的核取方塊代表該用戶屬於該群組。
* 未剔選的核取方塊代表該用戶不是屬於該群組。
* 有 * 項目表示一旦您加入該群組之後便不能移除它,反之亦然。',
-'userrights-reason' => '原因:',
-'userrights-no-interwiki' => '您並沒有權限去編輯在其它wiki上的用戶權限。',
-'userrights-nodatabase' => '資料庫$1不存在或並非為本地的。',
-'userrights-nologin' => '您必須要以操作員帳戶[[Special:UserLogin|登入]]之後才可以指定用戶權限。',
-'userrights-notallowed' => '您的帳戶無權限去指定用戶權限。',
-'userrights-changeable-col' => '您可以更改的群組',
-'userrights-unchangeable-col' => '您不可以更改的群組',
+'userrights-reason' => '原因:',
+'userrights-no-interwiki' => '您並沒有權限去編輯在其它wiki上的用戶權限。',
+'userrights-nodatabase' => '資料庫$1不存在或並非為本地的。',
+'userrights-nologin' => '您必須要以操作員帳戶[[Special:UserLogin|登入]]之後才可以指定用戶權限。',
+'userrights-notallowed' => '您的帳戶無權限去指定用戶權限。',
+'userrights-changeable-col' => '您可以更改的群組',
+'userrights-unchangeable-col' => '您不可以更改的群組',
# Groups
'group' => '群組:',
@@ -1258,6 +1323,7 @@ $2',
'right-bigdelete' => '刪除大量歷史之頁面',
'right-deleterevision' => '刪除及同反刪除頁面中的指定修訂',
'right-deletedhistory' => '檢視已刪除之歷史項目,不含關聯的文本',
+'right-deletedtext' => '檢視已刪除修訂中之已刪除的字以及更改',
'right-browsearchive' => '搜尋已刪除之頁面',
'right-undelete' => '反刪除頁面',
'right-suppressrevision' => '檢視及恢復由操作員隱藏之修訂',
@@ -1271,6 +1337,8 @@ $2',
'right-editprotected' => '編輯保護頁面(無連鎖保護)',
'right-editinterface' => '編輯用戶界面',
'right-editusercssjs' => '編輯其他用戶的CSS和JavaScript檔案',
+'right-editusercss' => '編輯其他用戶的CSS檔案',
+'right-edituserjs' => '編輯其他用戶的JavaScript檔案',
'right-rollback' => '快速復原上位用戶對某一頁面之編輯',
'right-markbotedits' => '標示復原編輯作機械人編輯',
'right-noratelimit' => '沒有使用頻率限制',
@@ -1287,6 +1355,8 @@ $2',
'right-siteadmin' => '鎖定和解除鎖定資料庫',
'right-reset-passwords' => '重設其他用戶的密碼',
'right-override-export-depth' => '匯出含有五層深度連結頁面之頁面',
+'right-versiondetail' => '顯示延伸軟件版本的資料',
+'right-sendemail' => '發電子郵件給其他用戶',
# User rights log
'rightslog' => '用戶權限日誌',
@@ -1336,8 +1406,17 @@ $2',
'recentchanges-legend' => '最近更改選項',
'recentchangestext' => '跟蹤這個wiki上的最新更改。',
'recentchanges-feed-description' => '跟蹤此訂閱在 wiki 上的最近更改。',
+'recentchanges-label-legend' => '圖例: $1',
+'recentchanges-legend-newpage' => '$1 - 新頁面',
+'recentchanges-label-newpage' => '這次編輯建立了一個新頁面',
+'recentchanges-legend-minor' => '$1 - 小編輯',
+'recentchanges-label-minor' => '這是一個小編輯',
+'recentchanges-legend-bot' => '$1 - 機器人編輯',
+'recentchanges-label-bot' => '這次編輯是由機器人進行',
+'recentchanges-legend-unpatrolled' => '$1 - 未巡查過的編輯',
+'recentchanges-label-unpatrolled' => '這次編輯尚未巡查過',
'rcnote' => "以下是在$4 $5,最近'''$2'''天內的'''$1'''次最近更改記錄:",
-'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
+'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
'rclistfrom' => '顯示自$1以來的新更改',
'rcshowhideminor' => '$1小編輯',
'rcshowhidebots' => '$1機器人的編輯',
@@ -1362,6 +1441,8 @@ $2',
# Recent changes linked
'recentchangeslinked' => '鏈出更改',
+'recentchangeslinked-feed' => '鏈出更改',
+'recentchangeslinked-toolbox' => '鏈出更改',
'recentchangeslinked-title' => '對於「$1」有關的鏈出更改',
'recentchangeslinked-noresult' => '在這一段時間中連結的頁面並無更改。',
'recentchangeslinked-summary' => "這一個特殊頁面列示''由''所給出的一個頁面之連結到頁面的最近更改(或者是對於指定分類的成員)。
@@ -1372,8 +1453,8 @@ $2',
# Upload
'upload' => '上傳檔案',
'uploadbtn' => '上傳檔案',
-'reupload' => '重新上載',
'reuploaddesc' => '取消上載並返回上載表單',
+'upload-tryagain' => '提交修改後的檔案描述',
'uploadnologin' => '未登入',
'uploadnologintext' => '您必須先[[Special:UserLogin|登入]]
才能上載檔案。',
@@ -1406,6 +1487,7 @@ $2',
'minlength1' => '檔案名字必須至少有一個字母。',
'illegalfilename' => '檔案名“$1”包含有頁面標題所禁止的字符。請改名後重新上傳。',
'badfilename' => '檔案名已被改為「$1」。',
+'filetype-mime-mismatch' => '檔案擴展名不配MIME類型。',
'filetype-badmime' => 'MIME類別"$1"不是容許的檔案格式。',
'filetype-bad-ie-mime' => '不可以上傳這個檔案,因為 Internet Explorer 會將它偵測為 "$1",它是一種不容許以及有潛在危險性之檔案類型。',
'filetype-unwanted-type' => "'''\".\$1\"'''是一種不需要的檔案類型。
@@ -1423,7 +1505,6 @@ $2',
* 上載檔案的檔名: '''<tt>[[:$1]]</tt>'''
* 現有檔案的檔名: '''<tt>[[:$2]]</tt>'''
請選擇一個不同的名字。",
-'fileexists-thumb' => "<center>'''已經存在的檔案'''</center>",
'fileexists-thumbnail-yes' => "這個檔案好像是一幅圖片的縮圖版本''(縮圖)''。 [[$1|thumb]]
請檢查清楚該檔案'''<tt>[[:$1]]</tt>'''。
如果檢查後的檔案是同原本圖片的大小是一樣的話,就不用再上載多一幅縮圖。",
@@ -1436,6 +1517,7 @@ $2',
'file-deleted-duplicate' => '一個相同名稱的檔案 ([[$1]]) 在先前刪除過。您應該在重新上傳之前檢查一下該檔案之刪除紀錄。',
'successfulupload' => '上傳成功',
'uploadwarning' => '上載警告',
+'uploadwarning-text' => '請修改以下的檔案描述並重試。',
'savefile' => '保存檔案',
'uploadedimage' => '已上載「[[$1]]」',
'overwroteimage' => '已經上載"[[$1]]"的新版本',
@@ -1443,12 +1525,15 @@ $2',
'uploaddisabledtext' => '檔案上傳不可用。',
'php-uploaddisabledtext' => 'PHP 檔案上載已經停用。請檢查 file_uploads 設定。',
'uploadscripted' => '該檔案包含可能被網路瀏覽器錯誤解釋的 HTML 或腳本代碼。',
-'uploadcorrupt' => '該檔案包含或具有一個不正確的擴展名。請檢查此檔案並重新上傳。',
'uploadvirus' => '該檔案包含有病毒!
詳情: $1',
+'upload-source' => '來源檔案',
'sourcefilename' => '來源檔案名:',
+'sourceurl' => '來源網址:',
'destfilename' => '目標檔案名:',
'upload-maxfilesize' => '檔案最大限制大小: $1',
+'upload-description' => '檔案描述',
+'upload-options' => '上載選項',
'watchthisupload' => '監視這個檔案',
'filewasdeleted' => '之前已經有一個同名檔案被上傳後又被刪除了。在上傳此檔案之前您需要檢查$1。',
'upload-wasdeleted' => "'''警告: 您現在重新上傳一個先前曾經刪除過的檔案。'''
@@ -1457,12 +1542,43 @@ $2',
為方便起見,這一個檔案的刪除記錄已經在下面提供:",
'filename-bad-prefix' => "您上傳的檔案名稱是以'''「$1」'''作為開頭,通常這種沒有含意的檔案名稱是由數碼相機中自動編排。請在您的檔案中重新選擇一個更加有意義的檔案名稱。",
-'upload-proto-error' => '協議錯誤',
-'upload-proto-error-text' => '遠程上傳要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 開頭。',
-'upload-file-error' => '內部錯誤',
-'upload-file-error-text' => '當試圖在伺服器上創建臨時檔案時發生內部錯誤。請與[[Special:ListUsers/sysop|管理員]]聯繫。',
-'upload-misc-error' => '未知的上傳錯誤',
-'upload-misc-error-text' => '在上傳時發生未知的錯誤。請驗証使用了正確並可訪問的 URL,然後進行重試。如果問題仍然存在,請與[[Special:ListUsers/sysop|管理員]]聯繫。',
+'upload-proto-error' => '協議錯誤',
+'upload-proto-error-text' => '遠程上傳要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 開頭。',
+'upload-file-error' => '內部錯誤',
+'upload-file-error-text' => '當試圖在伺服器上創建臨時檔案時發生內部錯誤。請與[[Special:ListUsers/sysop|管理員]]聯繫。',
+'upload-misc-error' => '未知的上傳錯誤',
+'upload-misc-error-text' => '在上傳時發生未知的錯誤。請驗証使用了正確並可訪問的 URL,然後進行重試。如果問題仍然存在,請與[[Special:ListUsers/sysop|管理員]]聯繫。',
+'upload-too-many-redirects' => '在網址中有太多重新定向',
+'upload-unknown-size' => '未知的大小',
+'upload-http-error' => '已發生一個HTTP錯誤:$1',
+
+# img_auth script messages
+'img-auth-accessdenied' => '拒絕存取',
+'img-auth-nopathinfo' => 'PATH_INFO遺失。
+您的伺服器還沒有設定這個資料。
+它可能是以CGI為本,不支援img_auth。
+參閱http://www.mediawiki.org/wiki/Manual:Image_Authorization。',
+'img-auth-notindir' => '所請求的路徑不在已經設定的上載目錄。',
+'img-auth-badtitle' => '不能夠由"$1"建立一個有效標題。',
+'img-auth-nologinnWL' => '您而家並未登入,"$1"不在白名單上。',
+'img-auth-nofile' => '檔案"$1"不存在。',
+'img-auth-isdir' => '您嘗試過存取一個目錄"$1"。
+只是可以存取檔案。',
+'img-auth-streaming' => '串流中"$1"。',
+'img-auth-public' => 'img_auth.php的功能是由一個公共wiki中輸出檔案。
+這個wiki是已經設定做一個公共wiki。
+基於保安最佳化,img_auth.php已經停用。',
+'img-auth-noread' => '用戶無存取權去讀"$1"。',
+
+# HTTP errors
+'http-invalid-url' => '無效的URL:$1',
+'http-invalid-scheme' => '不支援含有「$1」的URL。',
+'http-request-error' => '未知的錯誤令到HTTP請求失敗。',
+'http-read-error' => 'HTTP讀取錯誤。',
+'http-timed-out' => 'HTTP請求已過時。',
+'http-curl-error' => '擷取URL時出錯:$1',
+'http-host-unreachable' => '無法到達URL。',
+'http-bad-status' => '進行HTTP請求時出現問題:$1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => '無法訪問 URL',
@@ -1471,6 +1587,7 @@ $2',
'upload-curl-error28-text' => '網站回應時間過長。請檢查此網站的訪問是否正常,過一會再進行嘗試。您可能需要在網路訪問空閒時間再次進行嘗試。',
'license' => '授權:',
+'license-header' => '授權',
'nolicense' => '未選定',
'license-nopreview' => '(無預覽可用)',
'upload_source_url' => ' (一個有效的,可公開訪問的 URL)',
@@ -1491,38 +1608,42 @@ $2',
'listfiles_count' => '版本',
# File description page
-'filehist' => '檔案歷史',
-'filehist-help' => '點擊日期/時間以檢視當時出現過的檔案。',
-'filehist-deleteall' => '刪除全部',
-'filehist-deleteone' => '刪除',
-'filehist-revert' => '恢復',
-'filehist-current' => '目前',
-'filehist-datetime' => '日期/時間',
-'filehist-thumb' => '縮圖',
-'filehist-thumbtext' => '於$1的縮圖版本',
-'filehist-nothumb' => '沒有縮圖',
-'filehist-user' => '用戶',
-'filehist-dimensions' => '維度',
-'filehist-filesize' => '檔案大小',
-'filehist-comment' => '註解',
-'imagelinks' => '檔案連結',
-'linkstoimage' => '以下的$1個頁面連接到本檔案:',
-'linkstoimage-more' => '多於$1個頁面連接到這個檔案。
+'file-anchor-link' => '檔案',
+'filehist' => '檔案歷史',
+'filehist-help' => '點擊日期/時間以檢視當時出現過的檔案。',
+'filehist-deleteall' => '刪除全部',
+'filehist-deleteone' => '刪除',
+'filehist-revert' => '恢復',
+'filehist-current' => '目前',
+'filehist-datetime' => '日期/時間',
+'filehist-thumb' => '縮圖',
+'filehist-thumbtext' => '於$1的縮圖版本',
+'filehist-nothumb' => '沒有縮圖',
+'filehist-user' => '用戶',
+'filehist-dimensions' => '維度',
+'filehist-filesize' => '檔案大小',
+'filehist-comment' => '註解',
+'filehist-missing' => '檔案遺失',
+'imagelinks' => '檔案連結',
+'linkstoimage' => '以下的$1個頁面連接到本檔案:',
+'linkstoimage-more' => '多於$1個頁面連接到這個檔案。
下面的清單只列示了連去這個檔案的最首$1個頁面。
一個[[Special:WhatLinksHere/$2|完整的清單]]可以提供。',
-'nolinkstoimage' => '沒有頁面連接到本檔案。',
-'morelinkstoimage' => '檢視連接到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。',
-'redirectstofile' => '以下的$1個檔案重新定向到這個檔案:',
-'duplicatesoffile' => '以下的$1個檔案跟這個檔案重覆([[Special:FileDuplicateSearch/$2|更多細節]]):',
-'sharedupload' => '該檔案來自於$1,它可能在其它計劃項目中被應用。', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '請參閱在共享檔案庫上的$1以了解其相關資訊。',
-'shareduploadwiki-desc' => '它在$1那邊上的描述於下面顯示。',
-'shareduploadwiki-linktext' => '檔案描述頁面',
-'noimage' => '不存在此名稱的檔案,但您可以$1。',
-'noimage-linktext' => '上傳一個',
-'uploadnewversion-linktext' => '上傳該檔案的新版本',
-'shared-repo-from' => '出自$1', # $1 is the repository name
-'shared-repo' => '一個共用檔案庫', # used when shared-repo-NAME does not exist
+'nolinkstoimage' => '沒有頁面連接到本檔案。',
+'morelinkstoimage' => '檢視連接到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。',
+'redirectstofile' => '以下的$1個檔案重新定向到這個檔案:',
+'duplicatesoffile' => '以下的$1個檔案跟這個檔案重覆([[Special:FileDuplicateSearch/$2|更多細節]]):',
+'sharedupload' => '該檔案來自於$1,它可能在其它計劃項目中被應用。',
+'sharedupload-desc-there' => '該檔案來自於$1,它可能在其它計劃項目中被應用。
+請參閱在[$2 檔案描述頁面]以了解其相關資訊。',
+'sharedupload-desc-here' => '該檔案來自於$1,它可能在其它計劃項目中被應用。
+它在[$2 檔案描述頁面]那邊上的描述於下面顯示。',
+'filepage-nofile' => '不存在此名稱的檔案。',
+'filepage-nofile-link' => '不存在此名稱的檔案,但您可以[$1 上傳它]。',
+'uploadnewversion-linktext' => '上傳該檔案的新版本',
+'shared-repo-from' => '出自$1',
+'shared-repo' => '一個共用檔案庫',
+'shared-repo-name-wikimediacommons' => '維基共享資源',
# File reversion
'filerevert' => '恢復$1',
@@ -1552,6 +1673,7 @@ $2',
** 侵犯版權
** 重覆檔案',
'filedelete-edit-reasonlist' => '編輯刪除埋由',
+'filedelete-maintenance' => '當在維護時已經暫時停用檔案刪除和恢復。',
# MIME search
'mimesearch' => 'MIME 搜索',
@@ -1572,7 +1694,7 @@ $2',
# Random page
'randompage' => '隨機頁面',
-'randompage-nopages' => '在 "$1" 名字空間中沒有頁面。',
+'randompage-nopages' => '在以下的{{PLURAL:$2|名字空間}}中沒有頁面:$1',
# Random redirect
'randomredirect' => '隨機重定向頁面',
@@ -1584,6 +1706,7 @@ $2',
'statistics-header-edits' => '編輯統計',
'statistics-header-views' => '檢視統計',
'statistics-header-users' => '用戶統計',
+'statistics-header-hooks' => '其它統計',
'statistics-articles' => '內容頁面',
'statistics-pages' => '頁面',
'statistics-pages-desc' => '在wiki上的所有頁面,包括對話頁面、重新定向等',
@@ -1616,8 +1739,8 @@ Template:消除歧義',
'brokenredirects' => '損壞的重定向頁',
'brokenredirectstext' => '以下的重定向頁指向的是不存在的頁面:',
-'brokenredirects-edit' => '(編輯)',
-'brokenredirects-delete' => '(刪除)',
+'brokenredirects-edit' => '編輯',
+'brokenredirects-delete' => '刪除',
'withoutinterwiki' => '未有語言鏈接的頁面',
'withoutinterwiki-summary' => '以下的頁面是未有語言鏈接到其它語言版本。',
@@ -1723,7 +1846,7 @@ Template:消除歧義',
# Special:Categories
'categories' => '頁面分類',
-'categoriespagetext' => '以下的分類中包含了頁面或媒體。
+'categoriespagetext' => '以下的{{PLURAL:$1|分類}}中包含了頁面或媒體。
[[Special:UnusedCategories|未用分類]]不會在這裏列示。
請同時參閱[[Special:WantedCategories|需要的分類]]。',
'categoriesfrom' => '顯示由此項起之分類:',
@@ -1731,8 +1854,9 @@ Template:消除歧義',
'special-categories-sort-abc' => '按字母排列',
# Special:DeletedContributions
-'deletedcontributions' => '已刪除的用戶貢獻',
-'deletedcontributions-title' => '已刪除的用戶貢獻',
+'deletedcontributions' => '已刪除的用戶貢獻',
+'deletedcontributions-title' => '已刪除的用戶貢獻',
+'sp-deletedcontributions-contribs' => '貢獻',
# Special:LinkSearch
'linksearch' => '外部連結',
@@ -1748,6 +1872,16 @@ Template:消除歧義',
'listusersfrom' => '給定顯示用戶條件:',
'listusers-submit' => '顯示',
'listusers-noresult' => '找不到用戶。',
+'listusers-blocked' => '(已封鎖)',
+
+# Special:ActiveUsers
+'activeusers' => '活躍用戶列表',
+'activeusers-intro' => '這個是在最近$1天之內有一些動作的用戶列表。',
+'activeusers-count' => '於$3天內的$1次編輯',
+'activeusers-from' => '顯示用戶開始於:',
+'activeusers-hidebots' => '隱藏機器人',
+'activeusers-hidesysops' => '隱藏管理員',
+'activeusers-noresult' => '找不到用戶。',
# Special:Log/newusers
'newuserlogpage' => '新進用戶名冊',
@@ -1758,17 +1892,23 @@ Template:消除歧義',
'newuserlog-autocreate-entry' => '已自動建立賬戶',
# Special:ListGroupRights
-'listgrouprights' => '用戶群組權限',
-'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
+'listgrouprights' => '用戶群組權限',
+'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
更多有關個別權限的細節可以在[[{{MediaWiki:Listgrouprights-helppage}}|這裏]]找到。',
-'listgrouprights-group' => '群組',
-'listgrouprights-rights' => '權限',
-'listgrouprights-helppage' => 'Help:群組權限',
-'listgrouprights-members' => '(成員清單)',
-'listgrouprights-addgroup' => '加入的{{PLURAL:$2|一個|多個}}群組: $1',
-'listgrouprights-removegroup' => '移除的{{PLURAL:$2|一個|多個}}群組: $1',
-'listgrouprights-addgroup-all' => '入所有群組',
-'listgrouprights-removegroup-all' => '移除所有群組',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">已授予的權限</span>
+* <span class="listgrouprights-revoked">已撤除的權限</span>',
+'listgrouprights-group' => '群組',
+'listgrouprights-rights' => '權限',
+'listgrouprights-helppage' => 'Help:群組權限',
+'listgrouprights-members' => '(成員清單)',
+'listgrouprights-addgroup' => '加入的{{PLURAL:$2|一個|多個}}群組: $1',
+'listgrouprights-removegroup' => '移除的{{PLURAL:$2|一個|多個}}群組: $1',
+'listgrouprights-addgroup-all' => '入所有群組',
+'listgrouprights-removegroup-all' => '移除所有群組',
+'listgrouprights-addgroup-self' => '在自己的賬戶中加入的{{PLURAL:$2|一個|多個}}群組: $1',
+'listgrouprights-removegroup-self' => '在自己的賬戶中移除的{{PLURAL:$2|一個|多個}}群組: $1',
+'listgrouprights-addgroup-self-all' => '在自己的賬戶中加入所有群組',
+'listgrouprights-removegroup-self-all' => '在自己的賬戶中移除所有群組',
# E-mail user
'mailnologin' => '無電郵地址',
@@ -1842,9 +1982,9 @@ Template:消除歧義',
'enotif_lastvisited' => '檢視您上次訪問後的所有更改請參閱$1。',
'enotif_lastdiff' => '檢視更改請參閱$1。',
'enotif_anon_editor' => '匿名用戶$1',
-'enotif_body' => '親愛的 $WATCHINGUSERNAME,
+'enotif_body' => '親愛的 $WATCHINGUSERNAME,
-$PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}的 $PAGETITLE 頁面,請到 $PAGETITLE_URL 檢視當前修訂版本。
+$PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}的 $PAGETITLE 頁面,請到 $PAGETITLE_URL 檢視目前修訂版本。
$NEWPAGE
@@ -1862,7 +2002,10 @@ $NEWPAGE
--
要改變您的監視列表設定,請參閱
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
+
+要刪除您監視清單中的該頁面,請參閱
+$UNWATCHURL
回饋和進一步的幫助:
{{fullurl:{{MediaWiki:Helppage}}}}',
@@ -1876,10 +2019,11 @@ $NEWPAGE
'exblank' => '頁面為空',
'delete-confirm' => '刪除「$1」',
'delete-legend' => '刪除',
-'historywarning' => '警告: 您將要刪除的頁內含有歷史',
+'historywarning' => "'''警告: '''您將要刪除的頁內含有約$1次{{PLURAL:$1|修訂|修訂}}的歷史:",
'confirmdeletetext' => '您即將刪除一個頁面或圖片以及其歷史。
請確定您要進行此項操作,並且了解其後果,同時您的行為符合[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => '操作完成',
+'actionfailed' => '操作失敗',
'deletedtext' => '「<nowiki>$1</nowiki>」已經被刪除。最近刪除的記錄請參見$2。',
'deletedarticle' => '已刪除「[[$1]]」',
'suppressedarticle' => '已廢止「[[$1]]」',
@@ -1899,19 +2043,20 @@ $NEWPAGE
'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
# Rollback
-'rollback' => '恢復編輯',
-'rollback_short' => '恢復',
-'rollbacklink' => '恢復',
-'rollbackfailed' => '無法恢復',
-'cantrollback' => '無法恢復編輯;最後的貢獻者是本文的唯一作者。',
-'alreadyrolled' => '無法回退由[[User:$2|$2]]([[User talk:$2|討論]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]在[[:$1]]上的編輯;其他人已經編輯或者回退了該頁。
+'rollback' => '恢復編輯',
+'rollback_short' => '恢復',
+'rollbacklink' => '恢復',
+'rollbackfailed' => '無法恢復',
+'cantrollback' => '無法恢復編輯;最後的貢獻者是本文的唯一作者。',
+'alreadyrolled' => '無法回退由[[User:$2|$2]]([[User talk:$2|討論]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]在[[:$1]]上的編輯;其他人已經編輯或者回退了該頁。
該頁最後的編輯者是[[User:$3|$3]]([[User talk:$3|討論]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
-'editcomment' => "編輯摘要: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => '已恢復由[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])的編輯至[[User:$1|$1]]的最後一個修訂版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
-'rollback-success' => '已恢復$1的編輯;
+'editcomment' => "編輯摘要: \"''\$1''\"。",
+'revertpage' => '已恢復由[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])的編輯至[[User:$1|$1]]的最後一個修訂版本',
+'revertpage-nouser' => '恢復由(移除了的用戶名)的編輯到[[User:$1|$1]]的最後一個修訂版本',
+'rollback-success' => '已恢復$1的編輯;
更改回$2的最後修訂版本。',
-'sessionfailure' => '似乎您的登錄會話有問題;
+'sessionfailure' => '似乎您的登錄會話有問題;
為了防止會話劫持,這個操作已經被取消。
請返回先前的頁面,重新載入該頁面,然後重試。',
@@ -1929,7 +2074,7 @@ $NEWPAGE
'protectexpiry' => '到期:',
'protect_expiry_invalid' => '輸入的終止時間無效。',
'protect_expiry_old' => '終止時間已過去。',
-'protect-unchain' => '移動權限解鎖',
+'protect-unchain-permissions' => '解除鎖定更多的保護選項',
'protect-text' => "{{GENDER:|你|妳|你}}可以在這裡瀏覽和修改對頁面'''<nowiki>$1</nowiki>'''的保護級別。",
'protect-locked-blocked' => "您不能在被查封時更改保護級別。
以下是'''$1'''現時的保護級別:",
@@ -1958,7 +2103,7 @@ $NEWPAGE
** 反生產性編輯戰
** 高流量頁面',
'protect-edit-reasonlist' => '編輯保護理由',
-'protect-expiry-options' => '1小時:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'protect-expiry-options' => '1小時:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite',
'restriction-type' => '權限:',
'restriction-level' => '限制級別:',
'minimum-size' => '最小大小',
@@ -1997,6 +2142,7 @@ $NEWPAGE
'undelete-nodiff' => '找不到先前的修訂版本。',
'undeletebtn' => '恢復',
'undeletelink' => '檢視/恢復',
+'undeleteviewlink' => '檢視',
'undeletereset' => '重設',
'undeleteinvert' => '反向選擇',
'undeletecomment' => '理由:',
@@ -2032,19 +2178,24 @@ $1',
'contributions-title' => '$1的用戶貢獻',
'mycontris' => '我的貢獻',
'contribsub2' => '$1的貢獻 ($2)',
-'nocontribs' => '沒有找到符合特徵的更改。', # Optional parameter: $1 is the user name
+'nocontribs' => '沒有找到符合特徵的更改。',
'uctop' => '(最新修改)',
'month' => '從該月份 (或更早):',
'year' => '從該年份 (或更早):',
-'sp-contributions-newbies' => '只顯示新建立之用戶的貢獻',
-'sp-contributions-newbies-sub' => '新手',
-'sp-contributions-newbies-title' => '新手的用戶貢獻',
-'sp-contributions-blocklog' => '封禁記錄',
-'sp-contributions-logs' => '日誌',
-'sp-contributions-search' => '搜尋貢獻記錄',
-'sp-contributions-username' => 'IP位址或用戶名稱:',
-'sp-contributions-submit' => '搜尋',
+'sp-contributions-newbies' => '只顯示新建立之用戶的貢獻',
+'sp-contributions-newbies-sub' => '新手',
+'sp-contributions-newbies-title' => '新手的用戶貢獻',
+'sp-contributions-blocklog' => '封禁記錄',
+'sp-contributions-deleted' => '已刪除的用戶貢獻',
+'sp-contributions-logs' => '日誌',
+'sp-contributions-talk' => '對話',
+'sp-contributions-userrights' => '用戶權限管理',
+'sp-contributions-blocked-notice' => '這位用戶現時正在被封鎖中。
+最近的封鎖日誌項目在下面提供以便參考:',
+'sp-contributions-search' => '搜尋貢獻記錄',
+'sp-contributions-username' => 'IP位址或用戶名稱:',
+'sp-contributions-submit' => '搜尋',
# What links here
'whatlinkshere' => '鏈入頁面',
@@ -2067,6 +2218,7 @@ $1',
# Block/unblock
'blockip' => '封禁用戶',
+'blockip-title' => '封禁用戶',
'blockip-legend' => '查封用戶',
'blockiptext' => '用下面的表單來禁止來自某一特定IP地址的修改許可權。
只有在為防止破壞,及符合[[{{MediaWiki:Policy-url}}|守則]]的情況下才可採取此行動。
@@ -2090,7 +2242,7 @@ $1',
'ipbenableautoblock' => '自動查封此用戶最後所用的IP位址,以及後來試圖編輯所用的所有位址',
'ipbsubmit' => '查封該地址',
'ipbother' => '其它時間:',
-'ipboptions' => '2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
+'ipboptions' => '2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite',
'ipbotheroption' => '其它',
'ipbotherreason' => '其它/附帶原因:',
'ipbhidename' => '在編輯及列表中隱藏用戶名',
@@ -2119,9 +2271,11 @@ $1',
'ipblocklist-sh-tempblocks' => '$1臨時封鎖',
'ipblocklist-sh-addressblocks' => '$1單IP封鎖',
'ipblocklist-submit' => '搜尋',
+'ipblocklist-localblock' => '本地封鎖',
+'ipblocklist-otherblocks' => '其它{{PLURAL:$1|封鎖|封鎖}}',
'blocklistline' => '$1,$3被$2查封($4)',
'infiniteblock' => '永久',
-'expiringblock' => '$1 到期',
+'expiringblock' => '$1 $2 到期',
'anononlyblock' => '僅限匿名用戶',
'noautoblockblock' => '禁用自動查封',
'createaccountblock' => '禁止創建賬戶',
@@ -2136,7 +2290,8 @@ $1',
'autoblocker' => '因為您與“[[User:$1|$1]]”共享一個IP地址而被自動查封。
$1被封禁的理由是“$2”',
'blocklogpage' => '查封日誌',
-'blocklog-fulllog' => '完整封鎖記錄',
+'blocklog-showlog' => '這位用戶曾經被封鎖過。在下列提供封鎖記錄以便參考:',
+'blocklog-showsuppresslog' => '這位用戶曾經被封鎖和隱藏過。在下列提供廢止記錄以便參考:',
'blocklogentry' => '“[[$1]]”已被查封,終止時間為$2 $3',
'reblock-logentry' => '更改[[$1]]的封禁設定時間 $2 $3',
'blocklogtext' => '這是關於用戶封禁和解除封禁操作的記錄。被自動封禁的IP地址沒有被列出。請參閱[[Special:IPBlockList|被查封的IP地址和用戶列表]]。',
@@ -2155,9 +2310,11 @@ $1被封禁的理由是“$2”',
'ipb_already_blocked' => '已經封鎖"$1"',
'ipb-needreblock' => '== 已經封鎖 ==
$1已經被封鎖。您是否想更改這個設定?',
+'ipb-otherblocks-header' => '其它{{PLURAL:$1|封鎖|封鎖}}',
'ipb_cant_unblock' => '錯誤: 找不到查封ID$1。可能已經解除封禁。',
'ipb_blocked_as_range' => '錯誤: 該IP $1 無直接查封,不可以解除封禁。但是它是在 $2 的查封範圍之內,該段範圍是可以解除封禁的。',
'ip_range_invalid' => '無效的IP範圍。',
+'ip_range_toolarge' => '大於 /$1 的封鎖範圍是不容許的。',
'blockme' => '查封我',
'proxyblocker' => '代理封鎖器',
'proxyblocker-disabled' => '這個功能已經停用。',
@@ -2166,6 +2323,8 @@ $1已經被封鎖。您是否想更改這個設定?',
'sorbsreason' => '您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。',
'sorbs_create_account_reason' => '由於您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器,所以您無法建立帳號。',
'cant-block-while-blocked' => '當您被封鎖時不可以封鎖其他用戶。',
+'cant-see-hidden-user' => '您現正嘗試封鎖的用戶已經被封鎖或隱藏。
+您現在沒有隱藏用戶的權限,您不可以檢視或者編輯這位用戶的封鎖。',
# Developer tools
'lockdb' => '禁止更改資料庫',
@@ -2211,6 +2370,7 @@ $1已經被封鎖。您是否想更改這個設定?',
在這些情況下,您在必要時必須手工移動或合併頁面。",
'movearticle' => '移動頁面:',
+'moveuserpage-warning' => "'''警告:'''您將會移動一個用戶頁面。請留意該頁面在移動後該用戶的名字是''不會''變更的。",
'movenologin' => '未登入',
'movenologintext' => '您必須是一名登記用戶並且[[Special:UserLogin|登入]]
後才可移動一個頁面。',
@@ -2222,7 +2382,7 @@ $1已經被封鎖。您是否想更改這個設定?',
'move-watch' => '監視來源以及目標頁',
'movepagebtn' => '移動頁面',
'pagemovedsub' => '移動成功',
-'movepage-moved' => "'''「$1」已經移動到「$2」'''", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
+'movepage-moved' => "'''「$1」已經移動到「$2」'''",
'movepage-moved-redirect' => '一個重新定向已經被創建。',
'movepage-moved-noredirect' => '已經壓制創建重新定向。',
'articleexists' => '該名字的頁面已經存在,或者您選擇的名字無效。請再選一個名字。',
@@ -2264,6 +2424,14 @@ $1已經被封鎖。您是否想更改這個設定?',
'imageinvalidfilename' => '目標檔案名稱是無效的',
'fix-double-redirects' => '更新指到原先標題的任何重新定向',
'move-leave-redirect' => '留下重新定向',
+'protectedpagemovewarning' => "'''警告:'''這個頁面已經被鎖上,只有擁有管理員權限的用戶才可以移動它。
+最近的日誌在下面提供以便參考:",
+'semiprotectedpagemovewarning' => "'''注意:'''這個頁面已經被鎖上,只有已經註冊的用戶才可以移動它。
+最近的日誌在下面提供以便參考:",
+'move-over-sharedrepo' => '== 檔案已存在 ==
+[[:$1]]已於共享資源存在,將檔案移動到此標題會覆蓋共享資源中的檔案。',
+'file-exists-sharedrepo' => '同名檔案已於共享資源存在。
+請選擇另一個檔案名。',
# Export
'export' => '匯出頁面',
@@ -2287,15 +2455,21 @@ $1已經被封鎖。您是否想更改這個設定?',
'export-pagelinks' => '包含到這個深度連結之頁面:',
# Namespace 8 related
-'allmessages' => '系統界面',
-'allmessagesname' => '名稱',
-'allmessagesdefault' => '預設的訊息文字',
-'allmessagescurrent' => '現時的訊息文字',
-'allmessagestext' => '這裡列出所有可定製的系統界面。
+'allmessages' => '系統界面',
+'allmessagesname' => '名稱',
+'allmessagesdefault' => '預設的訊息文字',
+'allmessagescurrent' => '現時的訊息文字',
+'allmessagestext' => '這裡列出所有可定製的系統界面。
如果想貢獻正宗的MediaWiki本地化的話,請參閱[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]以及[http://translatewiki.net translatewiki.net]。',
-'allmessagesnotsupportedDB' => "這個頁面無法使用,因為'''\$wgUseDatabaseMessages'''已被設定關閉。",
-'allmessagesfilter' => '按消息名稱篩選:',
-'allmessagesmodified' => '僅顯示修改過的',
+'allmessagesnotsupportedDB' => "這個頁面無法使用,因為'''\$wgUseDatabaseMessages'''已被設定關閉。",
+'allmessages-filter-legend' => '過濾',
+'allmessages-filter' => '以自定狀況過濾:',
+'allmessages-filter-unmodified' => '未修改',
+'allmessages-filter-all' => '所有',
+'allmessages-filter-modified' => '曾修改',
+'allmessages-prefix' => '以前綴過濾:',
+'allmessages-language' => '語言:',
+'allmessages-filter-submit' => '往',
# Thumbnails
'thumbnail-more' => '放大',
@@ -2305,6 +2479,9 @@ $1已經被封鎖。您是否想更改這個設定?',
'djvu_no_xml' => '無法在DjVu檔案中擷取XML',
'thumbnail_invalid_params' => '不正確的縮圖參數',
'thumbnail_dest_directory' => '無法建立目標目錄',
+'thumbnail_image-type' => '圖片類型不支援',
+'thumbnail_gd-library' => '未完成的GD設定: 功能遺失 $1',
+'thumbnail_image-missing' => '檔案似乎遺失: $1',
# Special:Import
'import' => '匯入頁面',
@@ -2369,6 +2546,7 @@ $1已經被封鎖。您是否想更改這個設定?',
'tooltip-ca-viewsource' => '該頁面已被保護。{{GENDER:|你|妳|你}}可以檢視該頁原始碼。',
'tooltip-ca-history' => '本頁面的早前修訂版本',
'tooltip-ca-protect' => '保護這個頁面',
+'tooltip-ca-unprotect' => '解除保護這個頁面',
'tooltip-ca-delete' => '刪除本頁',
'tooltip-ca-undelete' => '將這個頁面恢復到被刪除以前的狀態',
'tooltip-ca-move' => '移動本頁',
@@ -2379,6 +2557,7 @@ $1已經被封鎖。您是否想更改這個設定?',
'tooltip-search-fulltext' => '搜尋該文字的頁面',
'tooltip-p-logo' => '訪問首頁',
'tooltip-n-mainpage' => '訪問首頁',
+'tooltip-n-mainpage-description' => '訪問首頁',
'tooltip-n-portal' => '關於本計劃、{{GENDER:|你|妳|你}}可以做什麼、應該如何做',
'tooltip-n-currentevents' => '提供目前新聞事件的背景資料',
'tooltip-n-recentchanges' => '列出該網站中的最近修改',
@@ -2425,6 +2604,7 @@ $1已經被封鎖。您是否想更改這個設定?',
'chick.css' => '/* 此處的 CSS 將影響使用 Chick 面板的用戶 */',
'simple.css' => '/* 此處的 CSS 將影響使用 Simple 面板的用戶 */',
'modern.css' => '/* 此處的 CSS 將影響使用 Modern 面板的用戶 */',
+'vector.css' => '/* 此處的 CSS 將影響使用 Vector 面板的用戶 */',
'print.css' => '/* 此處的 CSS 將影響打印輸出 */',
'handheld.css' => '/* 此處的 CSS 將影響在 $wgHandheldStyle 設定手提裝置面板 */',
@@ -2438,6 +2618,7 @@ $1已經被封鎖。您是否想更改這個設定?',
'chick.js' => '/* 此處的JavaScript將載入於使用Chick面板的用戶 */',
'simple.js' => '/* 此處的JavaScript將載入於使用Simple面板的用戶 */',
'modern.js' => '/* 此處的JavaScript將載入於使用Modern面板的用戶 */',
+'vector.js' => '/* 此處的JavaScript將載入於使用Vector面板的用戶 */',
# Metadata
'nodublincore' => 'Dublin Core RDF 元數據在該伺服器不可使用。',
@@ -2447,10 +2628,12 @@ $1已經被封鎖。您是否想更改這個設定?',
# Attribution
'anonymous' => '{{SITENAME}}的匿名{{PLURAL:$1|用戶|用戶}}',
'siteuser' => '{{SITENAME}}用戶$1',
-'lastmodifiedatby' => '此頁由$3於$1 $2的最後更改。', # $1 date, $2 time, $3 user
+'anonuser' => '{{SITENAME}}匿名用戶$1',
+'lastmodifiedatby' => '此頁由$3於$1 $2的最後更改。',
'othercontribs' => '在$1的工作基礎上。',
'others' => '其他',
'siteusers' => '{{SITENAME}}{{PLURAL:$2|用戶|用戶}}$1',
+'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|用戶|用戶}}$1',
'creditspage' => '頁面致謝',
'nocredits' => '該頁沒有致謝名單訊息。',
@@ -2485,11 +2668,22 @@ $1已經被封鎖。您是否想更改這個設定?',
'mw_math_modern' => '推薦為新版瀏覽器使用',
'mw_math_mathml' => '儘可能使用MathML (試驗中)',
+# Math errors
+'math_failure' => '解析失敗',
+'math_unknown_error' => '未知錯誤',
+'math_unknown_function' => '未知函數',
+'math_lexing_error' => '句法錯誤',
+'math_syntax_error' => '語法錯誤',
+'math_image_error' => 'PNG 轉換失敗;請檢查是否正確安裝了 latex, dvips, gs 和 convert',
+'math_bad_tmpdir' => '無法寫入或建立數學公式臨時目錄',
+'math_bad_output' => '無法寫入或建立數學公式輸出目錄',
+'math_notexvc' => '無法執行"texvc";請參照 math/README 進行配置。',
+
# Patrolling
'markaspatrolleddiff' => '標記為已巡查',
'markaspatrolledtext' => '標記此頁面為已巡查',
'markedaspatrolled' => '標記為已檢查',
-'markedaspatrolledtext' => '選定的版本已被標記為已檢查。',
+'markedaspatrolledtext' => '[[:$1]]的已選定修訂版本已被標識為已巡查。',
'rcpatroldisabled' => '最新更改檢查被關閉',
'rcpatroldisabledtext' => '最新更改檢查的功能目前已關閉。',
'markedaspatrollederror' => '不能標誌為已檢查',
@@ -2519,13 +2713,10 @@ $1',
'previousdiff' => '←上一版本',
'nextdiff' => '下一版本→',
-# Visual comparison
-'visual-comparison' => '可見比較',
-
# Media information
'mediawarning' => "'''警告''': 該檔案類型可能包含惡意代碼。
執行它可能對您的系統帶來危險。",
-'imagemaxsize' => '在圖片描述頁對檔案大小限制為:',
+'imagemaxsize' => "影像大小限制:<br />''(用在檔案描述頁面中)''",
'thumbsize' => '略圖大小:',
'widthheightpage' => '$1×$2, $3頁',
'file-info' => '(檔案大小: $1, MIME 類型: $2)',
@@ -2534,6 +2725,8 @@ $1',
'svg-long-desc' => '(SVG檔案,表面大小: $1 × $2 像素,檔案大小:$3)',
'show-big-image' => '完整解像度',
'show-big-image-thumb' => '<small>這幅縮圖的解像度: $1 × $2 像素</small>',
+'file-info-gif-looped' => '循環',
+'file-info-gif-frames' => '$1幀',
# Special:NewFiles
'newimages' => '新建圖片畫廊',
@@ -2582,7 +2775,7 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength', # Do not translate list items
+* focallength',
# EXIF tags
'exif-imagewidth' => '寬度',
@@ -2709,14 +2902,14 @@ Variants for Chinese language
'exif-unknowndate' => '未知的日期',
-'exif-orientation-1' => '標準', # 0th row: top; 0th column: left
-'exif-orientation-2' => '水準翻轉', # 0th row: top; 0th column: right
-'exif-orientation-3' => '旋轉180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '垂直翻轉', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '旋轉90° 逆時針並垂直翻轉', # 0th row: left; 0th column: top
-'exif-orientation-6' => '旋轉90° 順時針', # 0th row: right; 0th column: top
-'exif-orientation-7' => '旋轉90° 順時針並垂直翻轉', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '旋轉90° 逆時針', # 0th row: left; 0th column: bottom
+'exif-orientation-1' => '標準',
+'exif-orientation-2' => '水準翻轉',
+'exif-orientation-3' => '旋轉180°',
+'exif-orientation-4' => '垂直翻轉',
+'exif-orientation-5' => '旋轉90° 逆時針並垂直翻轉',
+'exif-orientation-6' => '旋轉90° 順時針',
+'exif-orientation-7' => '旋轉90° 順時針並垂直翻轉',
+'exif-orientation-8' => '旋轉90° 逆時針',
'exif-planarconfiguration-1' => '矮胖格式',
'exif-planarconfiguration-2' => '平面格式',
@@ -2838,7 +3031,7 @@ Variants for Chinese language
'exif-gpsmeasuremode-2' => '二維測量',
'exif-gpsmeasuremode-3' => '三維測量',
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => '公里每小時',
'exif-gpsspeed-m' => '英里每小時',
'exif-gpsspeed-n' => '海里每小時(節)',
@@ -2857,6 +3050,7 @@ Variants for Chinese language
'watchlistall2' => '全部',
'namespacesall' => '全部',
'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '確認郵箱位址',
@@ -2878,9 +3072,9 @@ Variants for Chinese language
'confirmemail_loggedin' => '您的郵箱位址現下已被確認。',
'confirmemail_error' => '{{GENDER:|你|妳|你}}的確認過程發生錯誤。',
'confirmemail_subject' => '{{SITENAME}}郵箱位址確認',
-'confirmemail_body' => '擁有IP位址$1的用戶(可能是您)在{{SITENAME}}創建了帳戶"$2",並提交了您的電子郵箱位址。
+'confirmemail_body' => '擁有IP位址$1的用戶(可能是您)在{{SITENAME}}創建了賬戶"$2",並提交了您的電子郵箱位址。
-請確認這個帳戶是屬於您的,並同時啟用在{{SITENAME}}上的
+請確認這個賬戶是屬於您的,並同時啟用在{{SITENAME}}上的
電子郵件功能。請在瀏覽器中打開下面的連結:
$3
@@ -2921,6 +3115,7 @@ $1',
# Separators for various lists, etc.
'comma-separator' => '、',
'word-separator' => '',
+'parentheses' => '($1)',
# Multipage image navigation
'imgmultipageprev' => '← 上一頁',
@@ -2987,7 +3182,7 @@ $1',
'duplicate-defaultsort' => '警告: 預設的排序鍵 "$2" 覆蓋先前的預設排序鍵 "$1"。',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
+'version' => '版本',
'version-extensions' => '已經安裝的擴展',
'version-specialpages' => '特殊頁面',
'version-parserhooks' => '語法鈎',
@@ -3001,7 +3196,7 @@ $1',
'version-skin-extension-functions' => '面版擴展函數',
'version-hook-name' => '鈎名',
'version-hook-subscribedby' => '利用於',
-'version-version' => '版本',
+'version-version' => '(版本 $1)',
'version-license' => '授權',
'version-software' => '已經安裝的軟件',
'version-software-product' => '產品',
@@ -3082,4 +3277,15 @@ $1',
'dberr-outofdate' => '留意他們索引出來之內容可能不是最新的。',
'dberr-cachederror' => '這個是所要求出來的快取複本,可能不是最新的。',
+# HTML forms
+'htmlform-invalid-input' => '您輸入的內容存在問題',
+'htmlform-select-badoption' => '您所指定的值不是有效的選項。',
+'htmlform-int-invalid' => '您所指定的值不是一個整數。',
+'htmlform-float-invalid' => '您所指定的值不是一個數字。',
+'htmlform-int-toolow' => '您所指定的值低於最小值$1',
+'htmlform-int-toohigh' => '您所指定的值高於最大值$1',
+'htmlform-submit' => '遞交',
+'htmlform-reset' => '撤銷更改',
+'htmlform-selectorother-other' => '其它',
+
);
diff --git a/languages/messages/MessagesZh_hk.php b/languages/messages/MessagesZh_hk.php
index 82062591..ee10aa51 100644
--- a/languages/messages/MessagesZh_hk.php
+++ b/languages/messages/MessagesZh_hk.php
@@ -7,67 +7,76 @@
* @ingroup Language
* @file
*
+ * @author Kayau
* @author PhiLiP
* @author Wong128hk
+ * @author Yukiseaside
* @author Yuyu
*/
$fallback = 'zh-hant';
+$fallback8bitEncoding = 'Big5-HKSCS';
+
$messages = array(
# User preference toggles
'tog-watchlisthidebots' => '監視列表中隱藏機械人的編輯',
-'tog-norollbackdiff' => '進行回退後略過差異比較',
# Dates
-'sunday' => '星期日',
-'monday' => '星期一',
-'tuesday' => '星期二',
-'wednesday' => '星期三',
-'thursday' => '星期四',
-'friday' => '星期五',
-'saturday' => '星期六',
-'sun' => '日',
-'mon' => '一',
-'tue' => '二',
-'wed' => '三',
-'thu' => '四',
-'fri' => '五',
-'sat' => '六',
-'january' => '1月',
-'february' => '2月',
-'march' => '3月',
-'april' => '4月',
-'may_long' => '5月',
-'june' => '6月',
-'july' => '7月',
-'august' => '8月',
-'september' => '9月',
-'october' => '10月',
-'november' => '11月',
-'december' => '12月',
-'january-gen' => '一月',
-'february-gen' => '二月',
-'march-gen' => '三月',
-'april-gen' => '四月',
-'may-gen' => '五月',
-'june-gen' => '六月',
-'july-gen' => '七月',
-'august-gen' => '八月',
-'september-gen' => '九月',
-'october-gen' => '十月',
-'november-gen' => '十一月',
-'december-gen' => '十二月',
-'jan' => '1月',
+'january' => '一月',
+'february' => '二月',
+'march' => '三月',
+'april' => '四月',
+'may_long' => '五月',
+'june' => '六月',
+'july' => '七月',
+'august' => '八月',
+'september' => '九月',
+'october' => '十月',
+'november' => '十一月',
+'december' => '十二月',
+
+'navigation' => '導航',
+'tagline' => '從 {{SITENAME}}',
+'search' => '搜尋',
+'searchbutton' => '搜尋',
+'searcharticle' => '進入',
'printableversion' => '可打印版',
+'permalink' => '永久連接',
'print' => '打印',
+'edit' => '編輯',
+'talkpagelinktext' => '對話',
+'personaltools' => '個人工具',
+'toolbox' => '工具箱',
+'jumpto' => '跳到:',
+'jumptonavigation' => '導航',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '關於 {{SITENAME}}',
+'aboutpage' => 'Project:關於我們',
+'mainpage' => '首頁',
'portal' => '社群入口',
'privacy' => '私隱政策',
'privacypage' => 'Project:私隱政策',
+'editsectionhint' => '編輯段落: $1',
+'red-link-title' => '$1 (頁面不存在)',
+
+# Login and logout pages
+'nav-login-createaccount' => '登入/創造帳戶',
+
+# Revision deletion
+'revdelete-suppress-text' => "壓制'''只'''應用於以下的情況:
+* 不合適的個人資料
+*: ''地址、電話號碼、身份證號碼等。''",
+
+# Diffs
+'editundo' => '回退',
+
+# Search results
+'search-mwsuggest-disabled' => '沒有意見',
+
# Groups
'group-bot' => '機械人',
@@ -76,15 +85,29 @@ $messages = array(
'grouppage-bot' => '{{ns:project}}:機械人',
# Recent changes
-'rcshowhidebots' => '$1機械人的編輯',
+'recentchanges-legend-bot' => '$1 - 機械人編輯',
+'recentchanges-label-bot' => '這次編輯是由機械人進行',
+'rcshowhidebots' => '$1機械人的編輯',
-# Move page
-'move-redirect-suppressed' => '已禁止重新定向',
+# Special:ActiveUsers
+'activeusers-hidebots' => '隱藏機械人',
+
+# Block/unblock
+'contribslink' => '貢獻',
# Tooltip help for the actions
-'tooltip-t-print' => '這個頁面的可打印版本',
+'tooltip-search' => '搜尋 {{SITENAME}}',
+'tooltip-search-go' => '若是真有其頁,則進入相同名字的頁面',
+'tooltip-search-fulltext' => '在此頁面內搜尋此文字',
+'tooltip-n-mainpage' => '回到首頁',
+'tooltip-n-mainpage-description' => '回到首頁',
+'tooltip-n-randompage' => '跳到一個隨機抽取的頁面',
+'tooltip-t-print' => '這個頁面的可打印版本',
# Special:NewFiles
'showhidebots' => '($1機械人)',
+# Special:SpecialPages
+'specialpages' => '特殊頁面',
+
);
diff --git a/languages/messages/MessagesZh_min_nan.php b/languages/messages/MessagesZh_min_nan.php
index d4574cbf..23b4f924 100644
--- a/languages/messages/MessagesZh_min_nan.php
+++ b/languages/messages/MessagesZh_min_nan.php
@@ -1,6 +1,9 @@
<?php
/** Min Nan (Bân-lâm-gú/閩南話)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesZh_mo.php b/languages/messages/MessagesZh_mo.php
index 986a074b..6772ef0a 100644
--- a/languages/messages/MessagesZh_mo.php
+++ b/languages/messages/MessagesZh_mo.php
@@ -1,6 +1,9 @@
<?php
/** ‪Chinese (Macau) (‪中文(澳門)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesZh_my.php b/languages/messages/MessagesZh_my.php
index 69336742..a27ed45f 100644
--- a/languages/messages/MessagesZh_my.php
+++ b/languages/messages/MessagesZh_my.php
@@ -1,6 +1,9 @@
<?php
/** ‪Chinese (Malaysia)‬ (‪中文(马来西亚)‬)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesZh_sg.php b/languages/messages/MessagesZh_sg.php
index efd12a1f..31dd8341 100644
--- a/languages/messages/MessagesZh_sg.php
+++ b/languages/messages/MessagesZh_sg.php
@@ -21,7 +21,4 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'portal' => '社区入口',
-# Move page
-'move-redirect-suppressed' => '已禁止重新定向',
-
);
diff --git a/languages/messages/MessagesZh_tw.php b/languages/messages/MessagesZh_tw.php
index 725f890b..22beeb35 100644
--- a/languages/messages/MessagesZh_tw.php
+++ b/languages/messages/MessagesZh_tw.php
@@ -18,27 +18,80 @@
* @author לערי ריינהארט
*/
+$specialPageAliases = array(
+ 'Disambiguations' => array( '消歧義頁' ),
+ 'Recentchanges' => array( '近期變動' ),
+ 'Ancientpages' => array( '最舊頁面' ),
+ 'Blockme' => array( '封禁我' ),
+ 'Blockip' => array( '查封用戶' ),
+ 'Lockdb' => array( '鎖定數據庫' ),
+ 'Unlockdb' => array( '解除數據庫鎖定' ),
+ 'FileDuplicateSearch' => array( '搜索重復文件' ),
+ 'Unwatchedpages' => array( '未被監視的頁面' ),
+ 'Listredirects' => array( '重定向頁面列表' ),
+ 'Revisiondelete' => array( '刪除或恢復版本' ),
+ 'Randomredirect' => array( '隨機重定向頁面' ),
+ 'Withoutinterwiki' => array( '沒有跨語言鏈接的頁面' ),
+ 'LinkSearch' => array( '搜索網頁鏈接' ),
+);
+
$fallback = 'zh-hant';
$namespaceNames = array(
- NS_MEDIA => '媒體',
- NS_SPECIAL => '特殊',
- NS_MAIN => '',
- NS_TALK => '討論',
NS_USER => '使用者',
NS_USER_TALK => '使用者討論',
- # NS_PROJECT set by $wgMetaNamespace
- NS_PROJECT_TALK => '$1討論',
- NS_FILE => '圖片',
- NS_FILE_TALK => '圖片討論',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
- NS_TEMPLATE => '模板',
- NS_TEMPLATE_TALK => '模板討論',
NS_HELP => '使用說明',
NS_HELP_TALK => '使用說明討論',
- NS_CATEGORY => '分類',
- NS_CATEGORY_TALK => '分類討論'
+);
+
+$namespaceAliases = array(
+ 'Image' => NS_FILE,
+ 'Image_talk' => NS_FILE_TALK,
+ "圖片" => NS_FILE,
+ "圖片討論" => NS_FILE_TALK,
+);
+
+$datePreferences = array(
+ 'default',
+ 'minguo',
+ 'minguo shorttext',
+ 'minguo text',
+ 'minguo fulltext',
+ 'CNS 7648',
+ 'CNS 7648 compact',
+ 'ISO 8601',
+);
+
+$defaultDateFormat = 'zh';
+
+$dateFormats = array(
+ 'zh time' => 'H:i',
+ 'zh date' => 'Y年n月j日 (l)',
+ 'zh both' => 'Y年n月j日 (D) H:i',
+
+ 'minguo time' => 'H:i',
+ 'minguo date' => 'xoY年n月j日 (l)',
+ 'minguo both' => 'xoY年n月j日 (D) H:i',
+
+ 'minguo shorttext time' => 'H:i',
+ 'minguo shorttext date' => '民xoY年n月j日 (l)',
+ 'minguo shorttext both' => '民xoY年n月j日 (D) H:i',
+
+ 'minguo text time' => 'H:i',
+ 'minguo text date' => '民國xoY年n月j日 (l)',
+ 'minguo text both' => '民國xoY年n月j日 (D) H:i',
+
+ 'minguo fulltext time' => 'H:i',
+ 'minguo fulltext date' => '中華民國xoY年n月j日 (l)',
+ 'minguo fulltext both' => '中華民國xoY年n月j日 (D) H:i',
+
+ 'CNS 7648 time' => 'H:i',
+ 'CNS 7648 date' => '"R.O.C." xoY-m-d (l)',
+ 'CNS 7648 both' => '"R.O.C." xoY-m-d (D) H:i',
+
+ 'CNS 7648 compact time' => 'H:i',
+ 'CNS 7648 compact date' => '"ROC" xoY-m-d (l)',
+ 'CNS 7648 compact both' => '"ROC" xoY-m-d (D) H:i',
);
$messages = array(
@@ -46,30 +99,16 @@ $messages = array(
'tog-underline' => '連結標注底線',
'tog-hideminor' => '近期變動中隱藏細微修改',
'tog-usenewrc' => '增強版近期變動 (JavaScript)',
-'tog-watchcreations' => '將我建立的頁面加入監視列表',
-'tog-watchdefault' => '將我更改的頁面加入監視列表',
-'tog-watchmoves' => '將我移動的頁面加入監視列表',
-'tog-watchdeletion' => '將我刪除的頁面加入監視列表',
'tog-minordefault' => '預設將編輯設定為細微修改',
'tog-enotifwatchlistpages' => '當我監視的頁面改變時發電子郵件給我',
'tog-shownumberswatching' => '顯示監視數目',
'tog-uselivepreview' => '使用即時預覽 (JavaScript) (試驗中)',
'tog-watchlisthideminor' => '監視列表中隱藏細微修改',
'tog-ccmeonemails' => '當我寄電子郵件給其他使用者時,也寄一份複本到我的信箱。',
-'tog-norollbackdiff' => '進行回退後略過差異比較',
# Categories related messages
-'category_header' => '類別「$1」中的頁面',
-'subcategories' => '子分類',
-'category-media-header' => '"$1"分類中的媒體',
-'category-empty' => "''這個分類中尚未包含任何頁面或媒體。''",
-'hidden-category-category' => '隱藏分類', # Name of the category where hidden categories will be listed
-'category-subcat-count' => '{{PLURAL:$2|這個分類中只有以下的附分類。|這個分類中有以下的$1個附分類,共有$2個附分類。}}',
-'category-subcat-count-limited' => '這個分類下有$1個子分類。',
-'category-article-count' => '{{PLURAL:$2|這個分類中只有以下的頁面。|這個分類中有以下的$1個頁面,共有$2個頁面。}}',
-'listingcontinuesabbrev' => '續',
-
-'mainpagetext' => "<big>'''已成功安裝 MediaWiki。'''</big>",
+'subcategories' => '子分類',
+
'mainpagedocfooter' => '請參閱 [http://meta.wikimedia.org/wiki/Help:Contents 使用者手冊] 以獲得使用此 wiki 軟體的訊息!
== 入門 ==
@@ -78,264 +117,74 @@ $messages = array(
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見問題解答]
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
-'about' => '關於',
-'article' => '頁面',
-'newwindow' => '(在新視窗中打開)',
-'cancel' => '取消',
-'qbfind' => '尋找',
-'qbbrowse' => '瀏覽',
-'qbedit' => '編輯',
-'qbpageoptions' => '頁面選項',
-'qbpageinfo' => '頁面訊息',
-'qbmyoptions' => '我的選項',
-'qbspecialpages' => '特殊頁面',
-'moredotdotdot' => '更多...',
-'mypage' => '我的頁面',
-'mytalk' => '我的對話頁',
-'anontalk' => '該IP的對話頁',
-'navigation' => '導航',
-'and' => '&#32;和',
-
-# Metadata in edit box
-'metadata_help' => '元數據:',
-
-'errorpagetitle' => '錯誤',
-'returnto' => '返回到$1。',
-'tagline' => '出自{{SITENAME}}',
-'help' => '使用說明',
-'search' => '搜尋',
-'searchbutton' => '搜尋',
-'go' => '進入',
-'searcharticle' => '進入',
-'history' => '修訂記錄',
-'history_short' => '歷史',
-'updatedmarker' => '我上次訪問以來的修改',
-'info_short' => '資訊',
-'printableversion' => '可列印版',
-'permalink' => '永久連結',
-'print' => '列印',
-'edit' => '編輯',
-'editthispage' => '編輯本頁',
-'delete' => '刪除',
-'deletethispage' => '刪除本頁',
-'undelete_short' => '反刪除$1項修訂',
-'protect' => '保護',
-'protect_change' => '更改保護',
-'protectthispage' => '保護本頁',
-'unprotect' => '解除保護',
-'unprotectthispage' => '解除此頁保護',
-'newpage' => '新頁面',
-'talkpage' => '討論本頁',
-'talkpagelinktext' => '對話',
-'specialpage' => '特殊頁面',
-'personaltools' => '個人工具',
-'postcomment' => '發表評論',
-'articlepage' => '查看頁面',
-'talk' => '討論',
-'views' => '檢視',
-'toolbox' => '工具箱',
-'userpage' => '檢視使用者頁面',
-'projectpage' => '檢視計畫頁面',
-'imagepage' => '查看圖片頁面',
-'mediawikipage' => '檢視使用者介面訊息',
-'templatepage' => '檢視模板頁面',
-'viewhelppage' => '檢視說明頁面',
-'categorypage' => '檢視分類頁面',
-'viewtalkpage' => '檢視討論頁面',
-'otherlanguages' => '其它語言',
-'redirectedfrom' => '(重定向自$1)',
-'redirectpagesub' => '重定向頁面',
-'lastmodifiedat' => '本頁最後更動時間在 $1 $2。', # $1 date, $2 time
-'viewcount' => '本頁面已經被瀏覽$1次。',
-'protectedpage' => '被保護頁',
-'jumpto' => '跳轉到:',
-'jumptonavigation' => '導航',
-'jumptosearch' => '搜尋',
+'help' => '使用說明',
+'search' => '搜尋',
+'history' => '修訂記錄',
+'protect_change' => '更改保護',
+'postcomment' => '發表評論',
+'userpage' => '檢視使用者頁面',
+'projectpage' => '檢視計畫頁面',
+'lastmodifiedat' => '本頁最後更動時間在 $1 $2。',
+'jumptosearch' => '搜尋',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => '關於{{SITENAME}}',
-'aboutpage' => 'Project:關於',
-'copyright' => '本站的文字內容除另有聲明外,全部以 $1 條款授權使用。',
-'copyrightpagename' => '{{SITENAME}}版權',
-'copyrightpage' => '{{ns:project}}:版權訊息',
-'currentevents' => '現時事件',
-'currentevents-url' => 'Project:現時事件',
-'disclaimers' => '免責聲明',
-'disclaimerpage' => 'Project:一般免責聲明',
-'edithelp' => '編輯說明',
-'edithelppage' => 'Help:如何編輯頁面',
-'faq' => '常見問題解答',
-'faqpage' => 'Project:常見問題解答',
-'helppage' => 'Help:目錄',
-'mainpage' => '首頁',
-'mainpage-description' => '首頁',
-'policy-url' => 'Project:方針',
-'portal' => '社群入口',
-'portal-url' => 'Project:社群入口',
-'privacy' => '隱私政策',
-'privacypage' => 'Project:隱私政策',
-
-'badaccess' => '權限錯誤',
-'badaccess-group0' => '您剛才的請求不允許執行。',
+'copyright' => '本站的文字內容除另有聲明外,全部以 $1 條款授權使用。',
+'edithelp' => '編輯說明',
+'portal' => '社群入口',
+'portal-url' => 'Project:社群入口',
+
'badaccess-groups' => '您剛才的請求只有{{PLURAL:$2|這個|這些}}使用者組的使用者才能使用: $1',
-'versionrequired' => '需要MediaWiki $1 版',
-'versionrequiredtext' => '需要版本$1的 MediaWiki 才能使用此頁。參見[[Special:Version|版本頁]]。',
-
-'retrievedfrom' => '取自"$1"',
-'youhavenewmessages' => '您有$1($2)。',
-'newmessageslink' => '新訊息',
-'newmessagesdifflink' => '上次更改',
-'youhavenewmessagesmulti' => '您在 $1 有一條新訊息',
-'editsection' => '編輯',
-'editold' => '編輯',
-'editsectionhint' => '編輯段落: $1',
-'toc' => '目錄',
-'showtoc' => '顯示',
-'hidetoc' => '隱藏',
-'thisisdeleted' => '檢視或復原$1?',
-'viewdeleted' => '檢視$1',
-'restorelink' => '$1個被刪除的版本',
-'feedlinks' => '訂閱:',
-'feed-invalid' => '無效的訂閱類型。',
-'site-rss-feed' => '訂閱 $1 的 RSS 資料來源',
-'site-atom-feed' => '訂閱 $1 的 Atom 資料來源',
-'page-rss-feed' => '訂閱「$1」的 RSS 資料來源',
-'page-atom-feed' => '訂閱「$1」的 Atom 資料來源',
+'thisisdeleted' => '檢視或復原$1?',
+'site-rss-feed' => '訂閱 $1 的 RSS 資料來源',
+'site-atom-feed' => '訂閱 $1 的 Atom 資料來源',
+'page-rss-feed' => '訂閱「$1」的 RSS 資料來源',
+'page-atom-feed' => '訂閱「$1」的 Atom 資料來源',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => '頁面',
'nstab-user' => '使用者頁面',
-'nstab-media' => '媒體頁面',
-'nstab-special' => '特殊頁面',
'nstab-project' => '計畫頁面',
-'nstab-image' => '檔案',
'nstab-mediawiki' => '介面',
-'nstab-template' => '模板',
'nstab-help' => '說明頁面',
-'nstab-category' => '分類',
# Main script and global functions
-'nosuchaction' => '這個命令不存在',
-'nosuchactiontext' => '這個wiki無法識別URL請求的命令',
-'nosuchspecialpage' => '此特殊頁面不存在',
-'nospecialpagetext' => "<big>'''您請求的特殊頁面無效。'''</big>
-
-[[Special:SpecialPages]]載有所有有效特殊頁面的列表。",
+'nosuchactiontext' => '這個wiki無法識別URL請求的命令',
# General errors
-'error' => '錯誤',
-'databaseerror' => '資料庫錯誤',
-'dberrortext' => '發生資料庫查詢語法錯誤。
-可能是由於軟體自身的錯誤所引起。
-最後一次資料庫查詢指令是:
-<blockquote><tt>$1</tt></blockquote>
-來自於函數 "<tt>$2</tt>"。
-MySQL返回錯誤 "<tt>$3: $4</tt>"。',
-'dberrortextcl' => '發生了一個資料庫查詢語法錯誤。
-最後一次的資料庫查詢是:
-「$1」
-來自於函數「$2」。
-MySQL返回錯誤「$3: $4」。',
-'noconnect' => '無法在$1上連接資料庫',
-'nodb' => '無法選擇資料庫 $1',
-'cachederror' => '以下頁面是快取中的副本,未必是最新版本。',
-'laggedslavemode' => '警告: 頁面可能不包含最近的更新。',
-'readonly' => '資料庫禁止訪問',
-'enterlockreason' => '請輸入禁止訪問原因, 包括估計重新開放的時間',
'readonlytext' => '資料庫目前禁止輸入新內容及更改,
這很可能是由於資料庫正在維修,之後即可復原。
管理員有如下解釋:
<p>$1</p>',
-'readonly_lag' => '附屬資料庫伺服器正在將快取更新到主伺服器,資料庫已被自動鎖定',
-'internalerror' => '內部錯誤',
-'internalerror_info' => '內部錯誤: $1',
-'filecopyerror' => '無法複製檔案"$1"到"$2"。',
-'filerenameerror' => '無法重新命名檔案"$1"到"$2"。',
-'filedeleteerror' => '無法刪除檔案"$1"。',
-'directorycreateerror' => '無法建立目錄"$1"。',
-'filenotfound' => '找不到檔案"$1"。',
-'fileexistserror' => '無法寫入檔案"$1": 檔案已存在',
-'unexpected' => '不正常值:"$1"="$2"。',
-'formerror' => '錯誤:無法提交表單',
-'badarticleerror' => '無法在本頁上進行此項操作。',
'cannotdelete' => '無法刪除選定的頁面或圖片(它可能已經被其他人刪除了)。',
-'badtitle' => '錯誤的標題',
-'badtitletext' => '所請求頁面的標題是無效的、不存在,跨語言或跨wiki連結的標題錯誤。',
-'perfcached' => '下列是快取資料,因此可能不是最新的:',
-'perfcachedts' => '下列是快取資料,其最後更新時間是$1。',
-'querypage-no-updates' => '當前禁止對此頁面進行更新。此處的資料將不能被立即重新整理。',
-'wrong_wfQuery_params' => '錯誤的參數導致wfQuery()<br />函數:$1<br />查詢:$2',
-'viewsource' => '原始碼',
-'viewsourcefor' => '$1的原始碼',
-'actionthrottled' => '動作已壓制',
'actionthrottledtext' => '系統因為反垃圾編輯的考量,禁止如此頻繁地修改資料,請數分鐘後再嘗試。',
-'protectedpagetext' => '該頁面已被鎖定以防止編輯。',
'viewsourcetext' => '你可以檢視並複製本頁面的原始碼。',
-'protectedinterface' => '該頁提供了軟體的介面文字,它已被鎖定以防止隨意的修改。',
'editinginterface' => "'''警告:''' 您正在編輯的頁面是用於提供軟體的介面文字。改變此頁將影響其他使用者的介面外觀。",
-'sqlhidden' => '(隱藏SQL查詢)',
-'cascadeprotected' => '這個頁面已經被保護,因為這個頁面被以下已標註"聯鎖保護"的{{PLURAL:$1|一個|多個}}被保護頁面包含:
-$2',
-'namespaceprotected' => "您並沒有權限編輯'''$1'''名字空間的頁面。",
'customcssjsprotected' => '您並無許可權去編輯這個頁面,因為它包含了另一位使用者的個人設定。',
'ns-specialprotected' => '在{{ns:special}}名字空間中的頁面是不可以編輯的。',
# Login and logout pages
-'logouttitle' => '使用者退出',
'logouttext' => '您現在已經退出。
您可以繼續以匿名方式使用{{SITENAME}},或再次以相同或不同使用者身份登入。',
'welcomecreation' => '<h2>歡迎,$1!</h2><p>您的帳號已經建立,不要忘記設定{{SITENAME}}個人參數。</p>',
-'loginpagetitle' => '使用者登入',
'yourname' => '您的使用者名:',
-'yourpassword' => '您的密碼:',
-'yourpasswordagain' => '再次輸入密碼:',
-'remembermypassword' => '下次登入記住密碼。',
-'yourdomainname' => '您的網域:',
-'externaldberror' => '這可能是由於驗證資料庫錯誤或您被禁止更新您的外部帳號。',
-'login' => '登入',
'nav-login-createaccount' => '登入/建立新帳號',
-'loginprompt' => '您必須允許瀏覽器紀錄Cookie才能成功登入 {{SITENAME}} 並順利進行操作',
'userlogin' => '登入/建立新帳號',
-'logout' => '登出',
-'userlogout' => '登出',
-'notloggedin' => '未登入',
'nologin' => '您還沒有帳號嗎?$1。',
'nologinlink' => '建立新帳號',
'createaccount' => '建立新帳號',
'gotaccount' => '已經擁有帳號?$1。',
-'gotaccountlink' => '登入',
-'createaccountmail' => '通過e-Mail',
'badretype' => '你所輸入的密碼並不相同。',
'userexists' => '您所輸入的使用者名稱已經存在,請另選一個。',
-'youremail' => '電子郵件:',
-'username' => '使用者名:',
-'uid' => '使用者ID:',
-'yourrealname' => '真實姓名:',
-'yourlanguage' => '介面語言:',
-'yourvariant' => '字體變換:',
-'yournick' => '暱稱:',
-'badsig' => '錯誤的原始簽名;請檢查HTML標籤。',
-'badsiglength' => '暱稱過長;它的長度必須在$1個字元以下。',
-'email' => '電子郵件',
-'prefs-help-realname' => '真實姓名是選填的,如果您選擇提供它,那它便用以對您的貢獻署名。',
-'loginerror' => '登入錯誤',
-'prefs-help-email' => '電子郵件是選填的,但當啟用它後可以在您沒有公開自己的使用者身分時透過您的使用者頁或使用者討論頁與您聯繫。',
-'prefs-help-email-required' => '需要電子郵件地址。',
'nocookiesnew' => '已成功建立新帳號!偵測到您已關閉 Cookies,請開啟它並登入。',
'nocookieslogin' => '本站利用 Cookies 進行使用者登入,偵測到您已關閉 Cookies,請開啟它並重新登入。',
'noname' => '你沒有輸入一個有效的使用者帳號。',
-'loginsuccesstitle' => '登入成功',
'loginsuccess' => '你現在以 "$1"的身份登入{{SITENAME}}。',
'nosuchuser' => '找不到使用者 "$1"。
檢查您的拼寫,或者用下面的表格[[Special:UserLogin/signup|建立一個新帳號]]。',
'nosuchusershort' => '沒有一個名為「<nowiki>$1</nowiki>」的使用者。請檢查您輸入的文字是否有錯誤。',
'nouserspecified' => '你需要指定一個使用者帳號。',
-'wrongpassword' => '您輸入的密碼錯誤,請再試一次。',
-'wrongpasswordempty' => '沒有輸入密碼!請重試。',
'passwordtooshort' => '您的密碼不正確或太短,不能少於$1個字元,而且必須跟使用者名不同。',
-'mailmypassword' => '將新密碼寄給我',
'passwordremindertitle' => '{{SITENAME}}密碼提醒',
'passwordremindertext' => '有人(可能是您,來自IP位址$1)要求我們將新的{{SITENAME}} ($4) 的登入密碼寄給您。使用者"$2"的密碼現在是"$3"。請立即登入並更改密碼。如果是其他人發出了該請求,或者您已經記起了您的密碼並不準備改變它,您可以忽略此消息並繼續使用您的舊密碼。',
'noemail' => '使用者"$1"沒有登記電子郵件地址。',
@@ -343,8 +192,6 @@ $2',
請在收到後再登入。',
'blocked-mailpassword' => '由於這個使用者被封鎖,我們暫時禁止您請求申請新密碼。造成不便敬請見諒',
'eauthentsent' => '一封確認信已經發送到所示的地址。在發送其它郵件到此帳號前,您必須首先依照這封信中的指導確認這個電子郵件信箱真實有效。',
-'throttled-mailpassword' => '密碼提醒已經在前$1小時內發送。為防止濫用,限定在$1小時內僅發送一次密碼提醒。',
-'mailerror' => '發送郵件錯誤: $1',
'acct_creation_throttle_hit' => '對不起,您已經註冊了$1帳號。你不能再註冊了。',
'emailauthenticated' => '您的電子郵件地址已經於$1確認有效。',
'emailnotauthenticated' => '您的電子郵件地址<strong>還沒被認證</strong>。以下功能將不會發送任何郵件。',
@@ -357,147 +204,63 @@ $2',
'createaccount-text' => '有人在{{SITENAME}}中為 $2 建立了一個新帳號($4)。 "$2" 的密碼是 "$3" 。您應該立即登入並更改密碼。
如果該帳號建立錯誤的話,您可以忽略此訊息。',
-'loginlanguagelabel' => '語言: $1',
# Password reset dialog
-'resetpass' => '重設帳號密碼',
-'resetpass_announce' => '您是透過臨時發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
-'resetpass_text' => '<!-- 在此處加入文字 -->',
-'resetpass_header' => '重設密碼',
-'oldpassword' => '舊密碼',
-'newpassword' => '新密碼',
-'retypenew' => '確認密碼:',
-'resetpass_submit' => '設定密碼並登入',
-'resetpass_success' => '您的密碼已經被成功更改﹗現下正為您登入...',
-'resetpass_bad_temporary' => '無效的臨時密碼。您可能已成功地更改了您的密碼,或者需要請求一個新的臨時密碼。',
-'resetpass_forbidden' => '無法在此 wiki 上更改密碼',
+'resetpass' => '重設帳號密碼',
+'resetpass_announce' => '您是透過臨時發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
+'resetpass_header' => '重設密碼',
+'oldpassword' => '舊密碼',
+'newpassword' => '新密碼',
+'resetpass_success' => '您的密碼已經被成功更改﹗現下正為您登入...',
+'resetpass_forbidden' => '無法在此 wiki 上更改密碼',
# Edit page toolbar
-'bold_sample' => '粗體文字',
-'bold_tip' => '粗體文字',
-'italic_sample' => '斜體文字',
-'italic_tip' => '斜體文字',
-'link_sample' => '連結標題',
-'link_tip' => '內部連結',
-'extlink_sample' => 'http://www.example.com 連結標題',
-'extlink_tip' => '外部連結(加前綴 http://)',
-'headline_sample' => '大標題文字',
-'headline_tip' => '2級標題文字',
-'math_sample' => '在此插入數學公式',
-'math_tip' => '插入數學公式 (LaTeX)',
-'nowiki_sample' => '在此插入非格式文字',
-'nowiki_tip' => '插入非格式文字',
-'image_tip' => '嵌入圖片',
-'media_tip' => '媒體檔案連結',
-'sig_tip' => '帶有時間的簽名',
-'hr_tip' => '水平線 (小心使用)',
+'image_tip' => '嵌入圖片',
+'media_tip' => '媒體檔案連結',
# Edit pages
-'summary' => '摘要',
-'subject' => '主題:',
-'minoredit' => '這是一個細微修改',
-'watchthis' => '監視本頁',
-'savearticle' => '保存本頁',
-'preview' => '預覽',
-'showpreview' => '顯示預覽',
-'showlivepreview' => '即時預覽',
-'showdiff' => '顯示差異',
-'anoneditwarning' => "'''警告:'''您沒有登錄,您的IP位址將記錄在此頁的編輯歷史中。",
-'missingsummary' => "'''提示:''' 您沒有提供一個編輯摘要。如果您再次單擊儲存,您的編輯將不帶編輯摘要儲存。",
-'missingcommenttext' => '請在下面輸入評論。',
-'missingcommentheader' => "'''提示:''' 您沒有為此評論提供一個標題。如果您再次單擊儲存,您的編輯將不帶標題儲存。",
-'summary-preview' => '摘要預覽:',
-'subject-preview' => '主題/標題預覽:',
-'blockedtitle' => '使用者被封鎖',
-'blockednoreason' => '無給出原因',
-'blockedoriginalsource' => "以下是'''$1'''的原始碼:",
-'blockededitsource' => "你對'''$1'''進行'''編輯'''的文字如下:",
-'whitelistedittitle' => '登入後才可編輯',
-'whitelistedittext' => '您必須先$1才可編輯頁面。',
-'confirmedittitle' => '郵件確認後才可編輯',
-'confirmedittext' => '在編輯此頁之前您必須確認您的電子郵件地址。請透過[[Special:Preferences|參數設定]]設定並驗証您的電子郵件地址。',
-'nosuchsectiontitle' => '沒有這個段落',
-'nosuchsectiontext' => '您嘗試編輯的段落並不存在。在這裡是無第$1個段落,所以是沒有一個地方去儲存你的編輯。',
-'loginreqtitle' => '需要登入',
-'loginreqlink' => '登入',
-'loginreqpagetext' => '您必須$1才能檢視其它頁面。',
-'accmailtitle' => '密碼已寄出',
-'accmailtext' => "'$1'的密碼已經寄到$2。",
-'newarticle' => '(新)',
-'newarticletext' => '您進入了一個尚未建立的頁面。
+'summary' => '摘要',
+'minoredit' => '這是一個細微修改',
+'blockedtitle' => '使用者被封鎖',
+'confirmedittext' => '在編輯此頁之前您必須確認您的電子郵件地址。請透過[[Special:Preferences|參數設定]]設定並驗証您的電子郵件地址。',
+'accmailtext' => "'$1'的密碼已經寄到$2。",
+'newarticletext' => '您進入了一個尚未建立的頁面。
要建立該頁面,請在下面的編輯框中輸入內容(詳情參見[[{{MediaWiki:Helppage}}|說明]])。
如果您是不小心來到此頁面,直接點擊您瀏覽器中的"返回"按鈕返回。',
-'anontalkpagetext' => "---- ''這是一個還未建立帳號的匿名使用者的對話頁。我們因此只能用IP地址來與他/她聯絡。該IP地址可能由幾名使用者共享。如果您是一名匿名使用者並認為本頁上的評語與您無關,請[[Special:UserLogin|建立新帳號或登入]]以避免在未來於其他匿名使用者混淆。''",
-'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜尋此頁標題]]或[{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} 編輯此頁]。',
-'userpage-userdoesnotexist' => '使用者帳號「$1」未曾建立。請在建立/編輯這個頁面前先檢查一下。',
-'clearyourcache' => "'''注意:''' 在儲存以後, 您必須清除瀏覽器的快取才能看到所作出的改變。 '''Mozilla / Firefox / Safari:''' 按著 ''Shift'' 再點擊''重新整理''(或按下''Ctrl-Shift-R'',在蘋果Mac上按下''Cmd-Shift-R'');'''IE:''' 按著 ''Ctrl'' 再點擊 ''重新整理'',或按下 ''Ctrl-F5'';'''Konqueror:''' 只需點擊 ''重新整理'';'''Opera:''' 使用者需要在 ''工具-設定'' 中完整地清除它們的快取。",
-'usercssjsyoucanpreview' => "'''提示:''' 在保存前請用'顯示預覽'按鈕來測試您新的 CSS/JS 。",
-'usercsspreview' => "'''注意您只是在預覽您的個人 CSS, 還沒有儲存﹗'''",
-'userjspreview' => "'''注意您只是在測試/預覽您的個人 JavaScript,還沒有儲存﹗'''",
-'userinvalidcssjstitle' => "'''警告:''' 不存在面板\"\$1\"。注意自訂的 .css 和 .js 頁要使用小寫標題,例如,{{ns:user}}:Foo/monobook.css 不同於 {{ns:user}}:Foo/Monobook.css。",
-'updated' => '(已更新)',
-'note' => "'''注意:'''",
-'previewnote' => "'''請記住這只是預覽,內容還未保存!'''",
-'previewconflict' => '這個預覽顯示了上面文字編輯區中的內容。它將在你選擇保存後出現。',
-'session_fail_preview' => "'''很抱歉!由於部份資料遺失,我們無法處理您的編輯。請再試一次,如果仍然失敗,請登出後重新登入。'''",
-'session_fail_preview_html' => "'''很抱歉!部份資料已遺失,我們無法處理您的編輯。''''''如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。'''",
-'token_suffix_mismatch' => "'''由於您使用者端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。
+'anontalkpagetext' => "---- ''這是一個還未建立帳號的匿名使用者的對話頁。我們因此只能用IP地址來與他/她聯絡。該IP地址可能由幾名使用者共享。如果您是一名匿名使用者並認為本頁上的評語與您無關,請[[Special:UserLogin|建立新帳號或登入]]以避免在未來於其他匿名使用者混淆。''",
+'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜尋此頁標題]]或[{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} 編輯此頁]。',
+'userpage-userdoesnotexist' => '使用者帳號「$1」未曾建立。請在建立/編輯這個頁面前先檢查一下。',
+'clearyourcache' => "'''注意:''' 在儲存以後, 您必須清除瀏覽器的快取才能看到所作出的改變。 '''Mozilla / Firefox / Safari:''' 按著 ''Shift'' 再點擊''重新整理''(或按下''Ctrl-Shift-R'',在蘋果Mac上按下''Cmd-Shift-R'');'''IE:''' 按著 ''Ctrl'' 再點擊 ''重新整理'',或按下 ''Ctrl-F5'';'''Konqueror:''' 只需點擊 ''重新整理'';'''Opera:''' 使用者需要在 ''工具-設定'' 中完整地清除它們的快取。",
+'usercsspreview' => "'''注意您只是在預覽您的個人 CSS, 還沒有儲存﹗'''",
+'userjspreview' => "'''注意您只是在測試/預覽您的個人 JavaScript,還沒有儲存﹗'''",
+'previewnote' => "'''請記住這只是預覽,內容還未保存!'''",
+'session_fail_preview' => "'''很抱歉!由於部份資料遺失,我們無法處理您的編輯。請再試一次,如果仍然失敗,請登出後重新登入。'''",
+'session_fail_preview_html' => "'''很抱歉!部份資料已遺失,我們無法處理您的編輯。''''''如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。'''",
+'token_suffix_mismatch' => "'''由於您使用者端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。
這種情況通常出現於使用含有很多臭蟲、以網路為主的匿名代理服務的時候。'''",
-'editing' => '正在編輯$1',
-'editingsection' => '正在編輯$1 (段落)',
-'editingcomment' => '正在編輯$1 (評論)',
-'editconflict' => '編輯衝突:$1',
-'explainconflict' => '有人在你開始編輯後更改了頁面。
-上面的文字框內顯示的是目前本頁的內容。
-你所做的修改顯示在下面的文字框中。
-你應當將你所做的修改加入現有的內容中。
-<b>只有</b>在上面文字框中的內容會在你點擊"保存頁面"後被保存。<br />',
-'yourtext' => '您的文字',
-'storedversion' => '已保存版本',
-'nonunicodebrowser' => "'''警告: 您的瀏覽器不相容Unicode編碼。這裡有一個工作區將使您能安全地編輯頁面: 非ASCII字元將以十六進製編碼模式出現在編輯框中。'''",
-'editingold' => "'''警告:你正在編輯的是本頁的舊版本。
+'editingcomment' => '正在編輯$1 (評論)',
+'storedversion' => '已保存版本',
+'nonunicodebrowser' => "'''警告: 您的瀏覽器不相容Unicode編碼。這裡有一個工作區將使您能安全地編輯頁面: 非ASCII字元將以十六進製編碼模式出現在編輯框中。'''",
+'editingold' => "'''警告:你正在編輯的是本頁的舊版本。
如果你保存它的話,在本版本之後的任何修改都會遺失。'''",
-'yourdiff' => '差異',
-'copyrightwarning' => "請注意您對{{SITENAME}}的所有貢獻都被認為是在$2下發佈,請查看在$1的細節。
-如果您不希望您的文字被任意修改和再散佈,請不要提交。<br />
-您同時也要向我們保證您所提交的內容是您自己所作,或得自一個不受版權保護或相似自由的來源。
-'''不要在未獲授權的情況下發表!'''<br />",
-'copyrightwarning2' => "請注意您對{{SITENAME}}的所有貢獻
-都可能被其他貢獻者編輯,修改或刪除。
-如果您不希望您的文字被任意修改和再散佈,請不要提交。<br />
-您同時也要向我們保證您所提交的內容是您自己所作,或得自一個不受版權保護或相似自由的來源(參閱$1的細節)。
-'''不要在未獲授權的情況下發表!'''",
-'longpagewarning' => "'''警告: 本頁長度達$1 kB;一些瀏覽器將無法編輯長過32KB頁面。請考慮將本文切割成幾個小段落。'''",
-'longpageerror' => "'''錯誤: 您所提交的文字長度有$1KB,這大於$2KB的最大值。該文字不能被儲存。'''",
-'protectedpagewarning' => "'''警告: 本頁已經被保護,只有擁有管理員許可權的使用者才可修改。'''",
-'semiprotectedpagewarning' => "'''注意:''' 本頁面被鎖定,僅限註冊使用者編輯。",
-'cascadeprotectedwarning' => '警告: 本頁已經被保護,只有擁有管理員權限的使用者才可修改,因為本頁已被以下連鎖保護的{{PLURAL:$1|一個|多個}}頁面所包含:',
-'templatesused' => '在這個頁面上使用的模板有:',
-'templatesusedpreview' => '此次預覽中使用的模板有:',
-'templatesusedsection' => '在這個段落上使用的模板有:',
-'template-protected' => '(保護)',
-'template-semiprotected' => '(半保護)',
-'edittools' => '<!-- 此處的文字將被顯示在以下編輯和上傳表單中。 -->',
-'nocreatetitle' => '建立頁面受限',
-'nocreatetext' => '此網站限制了建立新頁面的功能。你可以返回並編輯已有的頁面,或者[[Special:UserLogin|登錄或建立新帳號]]。',
-'nocreate-loggedin' => '您在這個wiki中並無許可權去建立新頁面。',
-'permissionserrors' => '權限錯誤',
-'permissionserrorstext' => '根據以下的{{PLURAL:$1|原因|原因}},您並無權限去做以下的動作:',
-'recreate-deleted-warn' => "'''警告: 你現在重新建立一個先前曾經刪除過的頁面。'''
+'longpagewarning' => "'''警告: 本頁長度達$1 kB;一些瀏覽器將無法編輯長過32KB頁面。請考慮將本文切割成幾個小段落。'''",
+'longpageerror' => "'''錯誤: 您所提交的文字長度有$1KB,這大於$2KB的最大值。該文字不能被儲存。'''",
+'protectedpagewarning' => "'''警告: 本頁已經被保護,只有擁有管理員許可權的使用者才可修改。'''",
+'semiprotectedpagewarning' => "'''注意:''' 本頁面被鎖定,僅限註冊使用者編輯。",
+'cascadeprotectedwarning' => '警告: 本頁已經被保護,只有擁有管理員權限的使用者才可修改,因為本頁已被以下連鎖保護的{{PLURAL:$1|一個|多個}}頁面所包含:',
+'nocreatetitle' => '建立頁面受限',
+'nocreatetext' => '此網站限制了建立新頁面的功能。你可以返回並編輯已有的頁面,或者[[Special:UserLogin|登錄或建立新帳號]]。',
+'nocreate-loggedin' => '您在這個wiki中並無許可權去建立新頁面。',
+'recreate-moveddeleted-warn' => "'''警告: 你現在重新建立一個先前曾經刪除過的頁面。'''
你應該要考慮一下繼續編輯這一個頁面是否合適。
為方便起見,這一個頁面的刪除記錄已經在下面提供:",
-'edit-hook-aborted' => '編輯被鉤取消。
+'edit-hook-aborted' => '編輯被鉤取消。
它並無給出解釋。',
# Parser/template warnings
'post-expand-template-argument-category' => '包含著略過模板參數的頁面',
-# "Undo" feature
-'undo-success' => '該編輯可以被撤銷。請檢查以下對比以核實這正是您想做的,然後儲存以下更改以完成撤銷編輯。',
-'undo-failure' => '由於中途的編輯不一致,此編輯不能撤銷。',
-'undo-summary' => '取消由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])所作出的修訂 $1',
-
# Account creation failure
'cantcreateaccounttitle' => '無法建立帳號',
'cantcreateaccount-text' => "從這個IP地址 (<b>$1</b>) 建立帳號已經被[[User:$3|$3]]禁止。
@@ -505,254 +268,127 @@ $2',
當中被$3封鎖的原因是''$2''",
# History pages
-'viewpagelogs' => '查詢這個頁面的日誌',
-'nohistory' => '沒有本頁的修訂記錄。',
-'currentrev' => '當前修訂版本',
-'revisionasof' => '在$1所做的修訂版本',
-'revision-info' => '在$1由$2所做的修訂版本', # Additionally available: $3: revision id
-'previousrevision' => '←上一修訂',
-'nextrevision' => '下一修訂→',
-'currentrevisionlink' => '當前修訂',
-'cur' => '當前',
-'next' => '後繼',
-'last' => '先前',
-'page_first' => '最前',
-'page_last' => '最後',
-'histlegend' => '差異選擇: 標記要比較版本的單選按鈕並點擊底部的按鈕進行比較。<br />
+'histlegend' => '差異選擇: 標記要比較版本的單選按鈕並點擊底部的按鈕進行比較。<br />
說明: (目前) 指與目前版本比較,(先前) 指與前一個修訂版本比較,小 = 細微修改。',
-'deletedrev' => '[已刪除]',
-'histfirst' => '最早版本',
-'histlast' => '最新版本',
-'historysize' => '($1 位元組)',
-'historyempty' => '(空)',
# Revision feed
-'history-feed-title' => '修訂沿革',
-'history-feed-description' => '本站上此頁的修訂沿革',
-'history-feed-item-nocomment' => '$1在$2', # user at time
-'history-feed-empty' => '所請求的頁面不存在。它可能已被刪除或重新命名。
+'history-feed-title' => '修訂沿革',
+'history-feed-description' => '本站上此頁的修訂沿革',
+'history-feed-empty' => '所請求的頁面不存在。它可能已被刪除或重新命名。
嘗試[[Special:Search|搜尋本站]]獲得相關的新建頁面。',
# Revision deletion
-'rev-deleted-comment' => '(註釋已移除)',
'rev-deleted-user' => '(使用者名已移除)',
'rev-deleted-event' => '(項目已移除)',
'rev-deleted-text-permission' => '該頁面修訂已經被從公共文件中移除。
-在[{{fullurl:Special:Log/delete|page={{PAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
+在[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
'rev-deleted-text-view' => '該頁面修訂已經被從公共文件中移除。作為此網站的管理員,您可以檢視它;
-在[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
-'rev-delundel' => '顯示/隱藏',
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
'revisiondelete' => '刪除/復原刪除修訂',
'revdelete-nooldid-title' => '沒有目標修訂',
'revdelete-nooldid-text' => '您沒有指定此操作的目標修訂。',
-'revdelete-selected' => "'''選取'''$1'''的$2次修訂:'''",
'logdelete-selected' => "'''選取的$1個日誌項目:'''",
'revdelete-text' => "'''刪除的修訂仍將顯示在修訂記錄中, 但它們的文字內容已不能被公眾訪問。'''
在此網站的其他管理員將仍能訪問隱藏的內容並透過與此相同的介面復原刪除,除非網站工作者進行了一些附加的限制。",
'revdelete-legend' => '設定修訂限制:',
-'revdelete-hide-text' => '隱藏修訂文字',
-'revdelete-hide-name' => '隱藏動作和目標',
-'revdelete-hide-comment' => '隱藏編輯說明',
'revdelete-hide-user' => '隱藏編輯者的使用者名/IP',
'revdelete-hide-restricted' => '將此限制同樣應用於管理員',
'revdelete-suppress' => '同時壓制由操作員以及其他使用者的資料',
-'revdelete-hide-image' => '隱藏檔案內容',
'revdelete-unsuppress' => '在已復原的修訂中移除限制',
-'revdelete-log' => '日誌註釋:',
-'revdelete-submit' => '應用於選取的修訂',
-'revdelete-logentry' => '[[$1]]的修訂可見性已更改',
-'logdelete-logentry' => '[[$1]]的事件可見性已更改',
'revdelete-success' => '修訂的可見性已經成功設定。',
'logdelete-success' => '事件的可見性已經成功設定。',
# History merging
-'mergehistory' => '合併修訂記錄',
-'mergehistory-header' => "這一頁可以講您合併一個來源頁面的歷史到另一個新頁面中。
+'mergehistory' => '合併修訂記錄',
+'mergehistory-header' => "這一頁可以講您合併一個來源頁面的歷史到另一個新頁面中。
請確認這次更改會繼續保留該頁面先前的歷史版本。
'''最少該來源頁面的現時修訂必定會保持。'''",
-'mergehistory-box' => '合併兩個頁面的修訂:',
-'mergehistory-from' => '來源頁面:',
-'mergehistory-into' => '目的頁面:',
-'mergehistory-list' => '可以合併的編輯歷史',
-'mergehistory-merge' => '以下[[:$1]]的修訂可以合併到[[:$2]]。用該選項按鈕欄去合併只有在指定時間以前所建立的修訂。要留意的是使用導航連結便會重設這一欄。',
-'mergehistory-go' => '顯示可以合併的編輯',
-'mergehistory-submit' => '合併修訂',
-'mergehistory-empty' => '沒有修訂可以合併',
-'mergehistory-success' => '[[:$1]]的$3次修訂已經成功地合併到[[:$2]]。',
-'mergehistory-fail' => '不可以進行歷史合併,請重新檢查該頁面以及時間參數。',
+'mergehistory-merge' => '以下[[:$1]]的修訂可以合併到[[:$2]]。用該選項按鈕欄去合併只有在指定時間以前所建立的修訂。要留意的是使用導航連結便會重設這一欄。',
# Merge log
-'mergelog' => '合併日誌',
-'pagemerge-logentry' => '已合併[[$1]]到[[$2]] (修訂截至$3)',
-'revertmerge' => '解除合併',
-'mergelogpagetext' => '以下是一個最近由一個頁面的修訂沿革合併到另一個頁面的列表。',
+'mergelogpagetext' => '以下是一個最近由一個頁面的修訂沿革合併到另一個頁面的列表。',
# Diffs
'history-title' => '「$1」的修訂沿革',
-'difference' => '(修訂版本間差異)',
-'lineno' => '第$1行:',
'compareselectedversions' => '比較選定的版本',
-'editundo' => '撤銷',
-'diff-multi' => '($1個中途的修訂版本沒有顯示。)',
# Search results
-'searchresults' => '搜尋結果',
-'searchresulttext' => '有關搜尋{{SITENAME}}的更多詳情,參見[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => '查詢"[[:$1]]"',
-'searchsubtitleinvalid' => '查詢"$1"',
-'noexactmatch' => "'''沒找到標題為\"\$1\"的頁面。''' 您可以[[:\$1|建立此頁面]]。",
-'titlematches' => '頁面題目相符',
-'notitlematches' => '沒有找到匹配頁面題目',
-'textmatches' => '頁面內容相符',
-'notextmatches' => '沒有頁面內容匹配',
-'prevn' => '前$1個',
-'nextn' => '後$1個',
-'viewprevnext' => '檢視 ($1) ($2) ($3)',
-'searchhelp-url' => 'Help:目錄',
-'showingresults' => '下面顯示從第<b>$2</b>條開始的<b>$1</b>條結果:',
-'showingresultsnum' => '下面顯示從第<b>$2</b>條開始的<b>$3</b>條結果:',
-'nonefound' => '<strong>注意:</strong>失敗的搜尋往往是由於試圖搜尋諸如「的」或「和」之類的常見字所引起。',
-'powersearch' => '搜尋',
-'searchdisabled' => '{{SITENAME}}由於性能方面的原因,全文搜尋已被暫時停用。您可以暫時透過Google搜尋。請留意他們的索引可能會過時。',
+'searchresults' => '搜尋結果',
+'searchresulttext' => '有關搜尋{{SITENAME}}的更多詳情,參見[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
+'searchsubtitle' => '查詢"[[:$1]]"',
+'nonefound' => '<strong>注意:</strong>失敗的搜尋往往是由於試圖搜尋諸如「的」或「和」之類的常見字所引起。',
+'powersearch' => '搜尋',
+'searchdisabled' => '{{SITENAME}}由於性能方面的原因,全文搜尋已被暫時停用。您可以暫時透過Google搜尋。請留意他們的索引可能會過時。',
# Preferences page
-'preferences' => '偏好設定',
-'mypreferences' => '我的偏好設定',
-'prefs-edits' => '編輯數量:',
-'prefsnologin' => '還未登入',
-'prefsnologintext' => '您必須先[[Special:UserLogin|登入]]才能設置個人參數。',
-'prefsreset' => '參數已重新設置。',
-'qbsettings' => '快速導航條',
-'qbsettings-none' => '無',
-'qbsettings-fixedleft' => '左側固定',
-'qbsettings-fixedright' => '右側固定',
-'qbsettings-floatingleft' => '左側漂移',
-'qbsettings-floatingright' => '右側漂移',
-'changepassword' => '更改密碼',
-'skin' => '面板',
-'skin-preview' => '預覽',
-'math' => '數學公式',
-'dateformat' => '日期格式',
-'datedefault' => '預設值',
-'datetime' => '日期和時間',
-'math_failure' => '解析失敗',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => '句法錯誤',
-'math_syntax_error' => '語法錯誤',
-'math_image_error' => 'PNG 轉換失敗;請檢查是否正確安裝了 latex, dvips, gs 和 convert',
-'math_bad_tmpdir' => '無法寫入或建立數學公式臨時目錄',
-'math_bad_output' => '無法寫入或建立數學公式輸出目錄',
-'math_notexvc' => '無法執行"texvc";請參照 math/README 進行配置。',
-'prefs-personal' => '使用者資料',
-'prefs-rc' => '近期變動',
-'prefs-watchlist' => '監視列表',
-'prefs-watchlist-days' => '監視列表中顯示記錄的最長天數:',
-'prefs-watchlist-edits' => '在增強的監視列表中顯示的最多更改次數:',
-'prefs-misc' => '雜項',
-'saveprefs' => '保存偏好設定',
-'resetprefs' => '重設參數',
-'textboxsize' => '編輯',
-'rows' => '列:',
-'columns' => '欄:',
-'searchresultshead' => '搜尋結果設定',
-'resultsperpage' => '每頁顯示連結數',
-'contextlines' => '每連結行數:',
-'contextchars' => '每行字數:',
-'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
-'recentchangesdays' => '近期變動中的顯示日數:',
-'recentchangescount' => '近期變動中的編輯數:',
-'savedprefs' => '您的個人偏好設定已經保存。',
-'timezonelegend' => '時區',
-'timezonetext' => '輸入當地時間與伺服器時間(UTC)的時差。',
-'localtime' => '當地時間',
-'timezoneoffset' => '時差¹',
-'servertime' => '伺服器時間',
-'guesstimezone' => '從瀏覽器填寫',
-'allowemail' => '接受來自其他使用者的郵件',
-'defaultns' => '預設搜尋的名字空間',
-'default' => '預設',
-'files' => '檔案',
+'preferences' => '偏好設定',
+'mypreferences' => '我的偏好設定',
+'prefsnologintext' => '您必須先[[Special:UserLogin|登入]]才能設定個人參數。',
+'prefs-personal' => '使用者資料',
+'prefs-rc' => '近期變動',
+'prefs-watchlist-days' => '監視列表中顯示記錄的最長天數:',
+'saveprefs' => '保存偏好設定',
+'resetprefs' => '重設參數',
+'searchresultshead' => '搜尋結果設定',
+'recentchangesdays' => '近期變動中的顯示日數:',
+'recentchangescount' => '近期變動中的編輯數:',
+'savedprefs' => '您的個人偏好設定已經保存。',
+'timezonelegend' => '時區',
+'localtime' => '當地時間',
+'timezoneoffset' => '時差¹',
+'servertime' => '伺服器時間',
+'allowemail' => '接受來自其他使用者的郵件',
+'defaultns' => '預設搜尋的名字空間',
+'username' => '使用者名:',
+'uid' => '使用者ID:',
+'yournick' => '暱稱:',
+'badsig' => '錯誤的原始簽名;請檢查HTML標籤。',
+'badsiglength' => '暱稱過長;它的長度必須在$1個字元以下。',
+'prefs-help-realname' => '真實姓名是選填的,如果您選擇提供它,那它便用以對您的貢獻署名。',
+'prefs-help-email' => '電子郵件是選填的,但當啟用它後可以在您沒有公開自己的使用者身分時透過您的使用者頁或使用者討論頁與您聯繫。',
# User rights
-'userrights' => '使用者權限管理', # Not used as normal message but as header for the special page itself
+'userrights' => '使用者權限管理',
'userrights-lookup-user' => '管理使用者群組',
'userrights-user-editname' => '輸入使用者帳號:',
'editusergroup' => '編輯使用者群組',
'editinguser' => "正在編輯使用者'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
'userrights-editusergroup' => '編輯使用者群組',
'saveusergroups' => '保存使用者群組',
-'userrights-groupsmember' => '屬於:',
-'userrights-reason' => '更改原因:',
# Groups
-'group' => '群組:',
'group-autoconfirmed' => '自動確認使用者',
-'group-bot' => '機器人',
-'group-sysop' => '操作員',
-'group-bureaucrat' => '行政員',
-'group-all' => '(全部)',
'group-autoconfirmed-member' => '自動確認使用者',
-'group-bot-member' => '機器人',
-'group-sysop-member' => '操作員',
-'group-bureaucrat-member' => '行政員',
'grouppage-autoconfirmed' => '{{ns:project}}:自動確認使用者',
-'grouppage-bot' => '{{ns:project}}:機器人',
-'grouppage-sysop' => '{{ns:project}}:操作員',
-'grouppage-bureaucrat' => '{{ns:project}}:行政員',
# User rights log
-'rightslog' => '使用者權限日誌',
-'rightslogtext' => '以下記錄了使用者權限的更改記錄。',
-'rightslogentry' => '將 $1 的權限從 $2 改為 $3',
-'rightsnone' => '(無)',
+'rightslog' => '使用者權限日誌',
+'rightslogtext' => '以下記錄了使用者權限的更改記錄。',
# Recent changes
-'nchanges' => '$1次更改',
'recentchanges' => '近期變動',
-'recentchangestext' => '跟蹤這個wiki上的最新更改。',
'recentchanges-feed-description' => '跟蹤此訂閱在 wiki 上的近期變動。',
'rcnotefrom' => '下面是自<b>$2</b>(最多顯示<b>$1</b>):',
-'rclistfrom' => '顯示自$1以來的新更改',
'rcshowhideminor' => '$1細微修改',
'rcshowhidebots' => '$1機器人的編輯',
'rcshowhideliu' => '$1具名使用者的編輯',
'rcshowhideanons' => '$1匿名使用者的編輯',
'rcshowhidepatr' => ' $1檢查過的編輯',
-'rcshowhidemine' => '$1我的編輯',
-'rclinks' => '顯示最近$2天內最新的$1次改動。<br />$3',
-'diff' => '差異',
-'hist' => '歷史',
-'hide' => '隱藏',
-'show' => '顯示',
-'minoreditletter' => '小',
-'newpageletter' => '新',
-'boteditletter' => '機',
'number_of_watching_users_pageview' => '[$1個關注使用者]',
-'rc_categories' => '分類界限(以"|"分割)',
-'rc_categories_any' => '任意',
-'newsectionsummary' => '/* $1 */ 新段落',
# Recent changes linked
-'recentchangeslinked' => '相關頁面修訂記錄',
-'recentchangeslinked-title' => '$1 內連結頁面的修訂記錄',
-'recentchangeslinked-noresult' => '在這一段時間中連結的頁面並無更改。',
-'recentchangeslinked-summary' => "這一個特殊頁面列示這一頁連出頁面的近期變動。在您監視列表中的頁面會以'''粗體'''表示。",
+'recentchangeslinked' => '相關頁面修訂記錄',
+'recentchangeslinked-feed' => '相關頁面修訂記錄',
+'recentchangeslinked-toolbox' => '相關頁面修訂記錄',
+'recentchangeslinked-title' => '$1 內連結頁面的修訂記錄',
+'recentchangeslinked-summary' => "這一個特殊頁面列示這一頁連出頁面的近期變動。在您監視列表中的頁面會以'''粗體'''表示。",
# Upload
-'upload' => '上傳檔案',
-'uploadbtn' => '上傳檔案',
-'reupload' => '重新上載',
'reuploaddesc' => '返回上載表單。',
-'uploadnologin' => '未登入',
-'uploadnologintext' => '您必須先[[Special:UserLogin|登入]]
-才能上載檔案。',
-'upload_directory_read_only' => '上傳目錄($1)不存在或無寫權限。',
-'uploaderror' => '上載錯誤',
'uploadtext' => "使用下面的表單來上傳用在頁面內新的圖片檔案。
要檢視或搜尋以前上傳的圖片
可以進入[[Special:FileList|圖片清單]],
@@ -762,31 +398,10 @@ $2',
'''<nowiki>[[</nowiki>{{ns:file}}:file.jpg<nowiki>]]</nowiki>''',
'''<nowiki>[[</nowiki>{{ns:file}}:file.png|替換文字<nowiki>]]</nowiki>''' 或
'''<nowiki>[[</nowiki>{{ns:media}}:file.ogg<nowiki>]]</nowiki>'''。",
-'uploadlog' => '上載紀錄',
-'uploadlogpage' => '上載紀錄',
'uploadlogpagetext' => '以下是最近上載的檔案的一覽表。',
-'filename' => '檔案名',
-'filedesc' => '檔案描述',
-'fileuploadsummary' => '檔案描述:',
-'filestatus' => '版權狀態:',
-'filesource' => '來源:',
-'uploadedfiles' => '已上載檔案',
'ignorewarning' => '忽略警告並儲存檔案。',
-'ignorewarnings' => '忽略所有警告',
-'minlength1' => '檔案名字必須至少有一個字母。',
'illegalfilename' => '檔案名"$1"包含有頁面標題所禁止的字符。請改名後重新上傳。',
'badfilename' => '檔案名已被改為"$1"。',
-'filetype-badmime' => 'MIME類別"$1"不是容許的檔案格式。',
-'filetype-missing' => '該檔案名稱並沒有副檔名 (像 ".jpg")。',
-'large-file' => '建議檔案大小不能超過 $1;本檔案大小為 $2。',
-'largefileserver' => '這個檔案的大小比伺服器配置允許的大小還要大。',
-'emptyfile' => '您所上傳的檔案不存在。這可能是由於檔案名鍵入錯誤。請檢查您是否真的要上傳此檔案。',
-'fileexists' => "已存在相同名稱的檔案,如果您無法確定您是否要改變它,請檢查'''<tt>$1</tt>'''。",
-'fileexists-extension' => "一個相似檔名的檔案已經存在:<br />
-上載檔案的檔名: '''<tt>$1</tt>'''<br />
-現有檔案的檔名: '''<tt>$2</tt>'''<br />
-請選擇一個不同的名字。",
-'fileexists-thumb' => "<center>'''已經存在的圖片'''</center>",
'fileexists-thumbnail-yes' => "這個檔案好像是一幅圖片的縮圖版本''(縮圖)''。 [[$1|thumb]]
請檢查清楚該檔案'''<tt>[[:$1]]</tt>'''。
如果檢查後的檔案是同原本圖片的大小是一樣的話,就不用再上載多一幅縮圖。",
@@ -794,238 +409,87 @@ $2',
如果你有該圖片的完整大小,如不是請再修改檔名。",
'fileexists-forbidden' => '已存在相同名稱的檔案;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => '在共享檔案庫中已存在此名稱的檔案;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
-'successfulupload' => '上傳成功',
-'uploadwarning' => '上載警告',
-'savefile' => '保存檔案',
-'uploadedimage' => '已上載"[[$1]]"',
-'overwroteimage' => '已經上載"[[$1]]"的新版本',
-'uploaddisabled' => '無法上傳',
'uploaddisabledtext' => '檔案上傳在此網站不可用。',
-'uploadscripted' => '該檔案包含可能被網路瀏覽器錯誤解釋的 HTML 或腳本代碼。',
-'uploadcorrupt' => '該檔案包含或具有一個不正確的擴展名。請檢查此檔案並重新上傳。',
-'uploadvirus' => '該檔案包含有病毒!詳情: $1',
-'sourcefilename' => '來源檔案名:',
-'destfilename' => '目標檔案名:',
'watchthisupload' => '監視此頁',
-'filewasdeleted' => '之前已經有一個同名檔案被上傳後又被刪除了。在上傳此檔案之前您需要檢查$1。',
-'upload-wasdeleted' => "'''警告: 您現在重新上傳一個先前曾經刪除過的檔案。'''
-
-您應該要考慮一下繼續上傳一個檔案頁面是否合適。
-為方便起見,這一個檔案的刪除記錄已經在下面提供:",
-'filename-bad-prefix' => "您上傳的檔案名稱是以'''「$1」'''作為開頭,通常這種沒有含意的檔案名稱是由數碼相機中自動編排。請在您的檔案中重新選擇一個更加有意義的檔案名稱。",
-
-'upload-proto-error' => '協訂錯誤',
-'upload-proto-error-text' => '遠程上傳要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 開頭。',
-'upload-file-error' => '內部錯誤',
-'upload-file-error-text' => '當試圖在伺服器上建立臨時檔案時發生內部錯誤。請與系統管理員聯繫。',
-'upload-misc-error' => '未知的上傳錯誤',
-'upload-misc-error-text' => '在上傳時發生未知的錯誤. 請驗証使用了正確並可訪問的 URL,然後進行重試。如果問題仍然存在,請與系統管理員聯繫。',
-
-# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => '無法訪問 URL',
-'upload-curl-error6-text' => '無法訪問所提供的 URL。請再次檢查該 URL 是否正確,並且網站的訪問是否正常。',
-'upload-curl-error28' => '上傳超時',
-'upload-curl-error28-text' => '網站回應時間過長。請檢查此網站的訪問是否正常,過一會再進行嘗試。您可能需要在網路訪問空閒時間再次進行嘗試。',
-
-'license' => '授權:',
-'nolicense' => '未選定',
-'license-nopreview' => '(無預覽可用)',
-'upload_source_url' => ' (一個有效的,可公開訪問的 URL)',
-'upload_source_file' => ' (在您電腦上的一個檔案)',
+
+'upload-proto-error' => '協訂錯誤',
+'upload-file-error-text' => '當試圖在伺服器上建立臨時檔案時發生內部錯誤。請與系統管理員聯繫。',
+'upload-misc-error-text' => '在上傳時發生未知的錯誤. 請驗証使用了正確並可訪問的 URL,然後進行重試。如果問題仍然存在,請與系統管理員聯繫。',
# Special:ListFiles
-'listfiles_search_for' => '按圖片名稱搜尋:',
-'imgfile' => '檔案',
-'listfiles' => '檔案列表',
-'listfiles_date' => '日期',
-'listfiles_name' => '名稱',
-'listfiles_user' => '使用者',
-'listfiles_size' => '大小',
-'listfiles_description' => '描述',
+'listfiles_search_for' => '按圖片名稱搜尋:',
+'listfiles_user' => '使用者',
# File description page
-'filehist' => '檔案歷史',
-'filehist-help' => '點擊日期/時間以檢視當時出現過的檔案。',
-'filehist-deleteall' => '刪除全部',
-'filehist-deleteone' => '刪除這個',
-'filehist-revert' => '復原',
-'filehist-current' => '當前',
-'filehist-datetime' => '日期/時間',
-'filehist-user' => '使用者',
-'filehist-dimensions' => '維度',
-'filehist-filesize' => '檔案大小',
-'filehist-comment' => '註解',
-'imagelinks' => '連結',
-'nolinkstoimage' => '沒有頁面連接到本檔案。',
-'sharedupload' => '該檔案是一個共享上傳,它可能在其它項目中被應用。 $2', # $1 is the repo name, $2 is shareduploadwiki(-desc)
-'shareduploadwiki' => '請參閱$1以了解其相關資訊。',
-'shareduploadwiki-linktext' => '檔案描述頁面',
-'noimage' => '不存在此名稱的檔案,您可以$1。',
-'noimage-linktext' => '上傳它',
-'uploadnewversion-linktext' => '上傳該檔案的新版本',
+'filehist-deleteone' => '刪除這個',
+'filehist-revert' => '復原',
+'filehist-user' => '使用者',
+'imagelinks' => '連結',
# File reversion
'filerevert' => '復原$1',
'filerevert-legend' => '復原檔案',
'filerevert-intro' => '<span class="plainlinks">您現正在復原\'\'\'[[Media:$1|$1]]\'\'\'到[$4 於$2 $3的版本]。</span>',
-'filerevert-comment' => '註解:',
'filerevert-defaultcomment' => '已經復原到於$1 $2的版本',
'filerevert-submit' => '復原',
'filerevert-success' => '<span class="plainlinks">\'\'\'[[Media:$1|$1]]\'\'\'已經復原到[$4 於$2 $3的版本]。</span>',
-'filerevert-badversion' => '這個檔案所提供的時間截記並無先前的本地版本。',
# File deletion
-'filedelete' => '刪除$1',
-'filedelete-legend' => '刪除檔案',
'filedelete-intro' => "您現正刪除'''[[Media:$1|$1]]'''。",
'filedelete-intro-old' => '<span class="plainlinks">你現正刪除\'\'\'[[Media:$1|$1]]\'\'\'於[$4 $2 $3]的版本。</span>',
'filedelete-comment' => '註解:',
-'filedelete-submit' => '刪除',
-'filedelete-success' => "'''$1'''已經刪除。",
'filedelete-nofile' => "'''$1'''在這個網站中不存在。",
'filedelete-nofile-old' => "在已指定屬性的情況下,這裡沒有'''$1'''於 $2 $3 的版本。",
# MIME search
-'mimesearch' => 'MIME 搜尋',
-'mimesearch-summary' => '本頁面啟用檔案MIME類型過濾器。輸入︰內容類型/子類型,如 <tt>image/jpeg</tt>。',
-'mimetype' => 'MIME 類型:',
-'download' => '下載',
-
-# Unwatched pages
-'unwatchedpages' => '未被監視的頁面',
-
-# List redirects
-'listredirects' => '重定向頁面清單',
+'mimesearch' => 'MIME 搜尋',
# Unused templates
-'unusedtemplates' => '未使用的模板',
'unusedtemplatestext' => '本頁面列出模板名字空間下所有未被其他頁面使用的頁面。請在刪除這些模板前檢查其他鏈入該模板的頁面。',
-'unusedtemplateswlh' => '其他連結',
# Random page
-'randompage' => '隨機頁面',
'randompage-nopages' => '在這個名字空間中沒有頁面。',
# Random redirect
-'randomredirect' => '隨機重定向頁面',
'randomredirect-nopages' => '在這個名字空間中沒有重定向頁面。',
# Statistics
-'statistics' => '統計',
'statistics-header-users' => '使用者統計',
-'statistics-mostpopular' => '被查閱次數最多的頁面',
'disambiguations' => '消歧義',
-'disambiguationspage' => 'Template:disambig
-Template:消含糊
-Template:消除含糊
-Template:消歧义
-Template:消除歧义
-Template:消歧義
-Template:消除歧義',
'disambiguations-text' => '以下的頁面都有到<b>消歧義頁</b>的鏈接,
但它們應該是連到適當的標題。<br />
個頁面會被視為消含糊頁如果它是連自[[MediaWiki:Disambiguationspage]]。',
-'doubleredirects' => '雙重重定向頁面',
-'doubleredirectstext' => '這一頁列出所有重定向頁面重定向到另一個重定向頁的頁面。每一行都包含到第一和第二個重定向頁面的鏈接,以及第二個重定向頁面的目標,通常顯示的都會是"真正"的目標頁面,也就是第一個重定向頁面應該指向的頁面。',
-
-'brokenredirects' => '損壞的重定向頁',
-'brokenredirectstext' => '以下的重定向頁指向的是不存在的頁面:',
-'brokenredirects-edit' => '(編輯)',
-'brokenredirects-delete' => '(刪除)',
-
-'withoutinterwiki' => '未有語言鏈接的頁面',
'withoutinterwiki-summary' => '以下的頁面是未有語言鏈接到其它語言版本:',
-'fewestrevisions' => '最少修訂的頁面',
-
# Miscellaneous special pages
-'nbytes' => '$1位元組',
-'ncategories' => '$1個分類',
-'nlinks' => '$1個連結',
-'nmembers' => '$1個成員',
-'nrevisions' => '$1個修訂',
-'nviews' => '$1次瀏覽',
-'specialpage-empty' => '這個報告的結果為空。',
-'lonelypages' => '孤立頁面',
-'lonelypagestext' => '以下頁面尚未被這個wiki中的其它頁面連結。',
-'uncategorizedpages' => '待分類頁面',
-'uncategorizedcategories' => '待分類類別',
-'uncategorizedimages' => '待分類圖片',
-'uncategorizedtemplates' => '待分類模版',
-'unusedcategories' => '未使用的分類',
-'unusedimages' => '未使用圖片',
-'popularpages' => '熱門頁面',
-'wantedcategories' => '需要的分類',
-'wantedpages' => '待撰頁面',
-'mostlinked' => '最多連結頁面',
-'mostlinkedcategories' => '最多連結分類',
-'mostlinkedtemplates' => '最多連結模版',
-'mostcategories' => '最多分類頁面',
-'mostimages' => '最多連結圖片',
-'mostrevisions' => '最多修訂頁面',
-'prefixindex' => '前綴索引',
-'shortpages' => '短頁面',
-'longpages' => '長頁面',
-'deadendpages' => '斷鏈頁面',
-'deadendpagestext' => '以下頁面沒有連結到這個wiki中的其它頁面。',
-'protectedpages' => '已保護頁面',
-'protectedpagestext' => '以下頁面已經被保護以防止移動或編輯',
-'protectedpagesempty' => '在這些參數下沒有頁面正在保護。',
-'listusers' => '使用者列表',
-'newpages' => '最新頁面',
-'newpages-username' => '使用者帳號:',
-'ancientpages' => '最舊頁面',
-'move' => '移動',
-'movethispage' => '移動本頁',
-'unusedimagestext' => '請注意其它網站可能直接透過 URL 連結此圖片,所以這裡列出的圖片有可能依然被使用。',
-'unusedcategoriestext' => '雖然沒有被其它頁面或者分類所採用,但列表中的分類頁依然存在。',
-'notargettitle' => '無目標',
-'notargettext' => '您還沒有指定一個目標頁面或使用者以進行此項操作。',
-
-# Book sources
-'booksources' => '網路書源',
-'booksources-search-legend' => '尋找網路書源',
-'booksources-go' => '送出',
-'booksources-text' => '以下是一份銷售新書或二手書的列表,並可能有你正尋找的書的進一步訊息:',
+'lonelypagestext' => '以下頁面尚未被這個wiki中的其它頁面連結。',
+'uncategorizedimages' => '待分類圖片',
+'unusedimages' => '未使用圖片',
+'popularpages' => '熱門頁面',
+'mostimages' => '最多連結圖片',
+'prefixindex' => '前綴索引',
+'deadendpagestext' => '以下頁面沒有連結到這個wiki中的其它頁面。',
+'listusers' => '使用者列表',
+'newpages-username' => '使用者帳號:',
+'unusedimagestext' => '請注意其它網站可能直接透過 URL 連結此圖片,所以這裡列出的圖片有可能依然被使用。',
+'notargettext' => '您還沒有指定一個目標頁面或使用者以進行此項操作。',
# Special:Log
-'specialloguserlabel' => '使用者:',
-'speciallogtitlelabel' => '標題:',
-'log' => '日誌',
-'all-logs-page' => '所有日誌',
-'alllogstext' => '綜合顯示上傳、刪除、保護、封鎖以及站務日誌。',
-'logempty' => '在日誌中不存在匹配項。',
-'log-title-wildcard' => '搜尋以這個文字開始的標題',
-
-# Special:AllPages
-'allpages' => '所有頁面',
-'alphaindexline' => '$1 到 $2',
-'nextpage' => '下一頁($1)',
-'prevpage' => '上一頁($1)',
-'allpagesfrom' => '顯示從此處開始的頁面:',
-'allarticles' => '所有頁面',
-'allinnamespace' => '所有頁面(屬於$1名字空間)',
-'allnotinnamespace' => '所有頁面(不屬於$1名字空間)',
-'allpagesprev' => '前',
-'allpagesnext' => '後',
-'allpagessubmit' => '提交',
-'allpagesprefix' => '顯示具有此前綴(名字空間)的頁面:',
-'allpagesbadtitle' => '給定的頁面標題是非法的,或者具有一個內部語言或內部 wiki 的前綴。它可能包含一個或更多的不能用於標題的字元。',
-'allpages-bad-ns' => '在{{SITENAME}}中沒有一個叫做"$1"的名字空間。',
+'specialloguserlabel' => '使用者:',
+'alllogstext' => '綜合顯示上傳、刪除、保護、封鎖以及站務日誌。',
# Special:Categories
-'categories' => '頁面分類',
-'categoriespagetext' => '以下列出所有的頁面分類。',
-'special-categories-sort-count' => '按數量排列',
-'special-categories-sort-abc' => '按字母排列',
+'categoriespagetext' => '以下列出所有的頁面分類。',
# Special:ListUsers
'listusersfrom' => '給定顯示使用者條件:',
-'listusers-submit' => '顯示',
'listusers-noresult' => '找不到使用者。',
+# Special:ActiveUsers
+'activeusers-hidebots' => '隱藏機器人',
+
# E-mail user
'mailnologin' => '無E-mail地址',
'mailnologintext' => '您必須先[[Special:UserLogin|登入]]
@@ -1034,70 +498,27 @@ Template:消除歧義',
'emailuser' => 'E-mail該使用者',
'emailpage' => 'E-mail使用者',
'emailpagetext' => '如果該使用者已經在他或她的偏好設定頁中輸入了有效的e-mail地址,以下的表格將寄一個訊息給該使用者。您在您偏好設定中所輸入的e-mail地址將出現在郵件「發件人」一欄中,這樣該使用者就可以回覆您。',
-'usermailererror' => '目標郵件地址返回錯誤:',
-'defemailsubject' => '{{SITENAME}}電子郵件',
-'noemailtitle' => '無e-mail地址',
'noemailtext' => '該使用者還沒有指定一個有效的e-mail地址,
或者選擇不接受來自其他使用者的e-mail。',
'emailfrom' => '發件人',
'emailto' => '收件人',
'emailsubject' => '主題',
'emailmessage' => '訊息',
-'emailsend' => '發送',
'emailccme' => '將我的消息的副本發送一份到我的E-mail信箱。',
-'emailccsubject' => '將您的訊息複製到 $1: $2',
-'emailsent' => '電子郵件已發送',
-'emailsenttext' => '您的電子郵件已經發出。',
# Watchlist
-'watchlist' => '監視列表',
-'mywatchlist' => '我的監視列表',
-'watchlistfor' => "('''$1'''的監視列表)",
-'nowatchlist' => '您的監視列表為空。',
-'watchlistanontext' => '請$1以檢視或編輯您的監視列表。',
-'watchnologin' => '未登入',
-'watchnologintext' => '您必須先[[Special:UserLogin|登入]]
-才能更改您的監視列表',
-'addedwatch' => '加入到監視列表',
-'addedwatchtext' => "頁面\"[[:\$1]]\"已經被加入到您的[[Special:Watchlist|監視清單]]中。
+'addedwatchtext' => "頁面\"[[:\$1]]\"已經被加入到您的[[Special:Watchlist|監視清單]]中。
將來有關此頁面及其討論頁的任何修改將會在那裡列出,
而且還會在[[Special:RecentChanges|近期變動]]中
以'''粗體'''形式列出以使起更容易識別。",
-'removedwatch' => '已停止監視',
-'removedwatchtext' => '頁面「[[:$1]]」已經從您的監視頁面中移除。',
-'watch' => '監視',
-'watchthispage' => '監視本頁',
-'unwatch' => '取消監視',
-'unwatchthispage' => '停止監視',
-'notanarticle' => '不是頁面',
-'watchnochange' => '在顯示的時間段內您所監視的頁面沒有更改。',
-'watchlist-details' => '不包含討論頁,您的監視列表共有 $1 頁。',
-'wlheader-enotif' => '* 已經啟動電子郵件通知功能。',
-'wlheader-showupdated' => "* 在你上次檢視後有被修改過的頁面會顯示為'''粗體'''",
-'watchmethod-recent' => '檢查被監視頁面的最近編輯',
-'watchmethod-list' => '檢查最近編輯的被監視頁面',
-'watchlistcontains' => '您的監視列表包含$1個頁面。',
-'iteminvalidname' => "頁面'$1'錯誤,無效命名...",
-'wlnote' => '以下是最近<b>$2</b>小時內的最後$1次修改。',
-'wlshowlast' => '顯示最近$1小時;$2天;$3的修改。',
-
-# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '正在監視...',
-'unwatching' => '正在停止監視...',
-
-'enotif_mailer' => '{{SITENAME}}郵件通知器',
-'enotif_reset' => '將所有頁面標為已閱讀',
-'enotif_newpagetext' => '這是新建頁面。',
+'removedwatchtext' => '頁面「[[:$1]]」已經從您的監視頁面中移除。',
+'watchlist-details' => '不包含討論頁,您的監視列表共有 $1 頁。',
+
'enotif_impersonal_salutation' => '{{SITENAME}}使用者',
-'changed' => '修改了',
-'created' => '建立了',
-'enotif_subject' => '{{SITENAME}}有頁面 $PAGETITLE 被 $PAGEEDITOR $CHANGEDORCREATED',
-'enotif_lastvisited' => '檢視您上次訪問後的所有更改請參閱$1。',
-'enotif_lastdiff' => '檢視更改請參閱$1。',
'enotif_anon_editor' => '匿名使用者$1',
'enotif_body' => '親愛的 $WATCHINGUSERNAME,
-$PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}的 $PAGETITLE 頁面,請到 $PAGETITLE_URL 檢視當前版本。
+$PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}的 $PAGETITLE 頁面,請到 $PAGETITLE_URL 檢視目前版本。
$NEWPAGE
@@ -1115,38 +536,21 @@ $NEWPAGE
--
要改變您的監視列表設定,請參閱
-{{fullurl:{{ns:special}}:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
回饋和進一步的說明:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
-'deletepage' => '刪除頁面',
-'confirm' => '確認',
-'excontent' => '內容為: "$1"',
-'excontentauthor' => '內容為: "$1" (而且唯一貢獻者為"$2")',
-'exbeforeblank' => '被清空前的內容為: "$1"',
-'exblank' => '頁面為空',
-'historywarning' => '警告: 您將要刪除的頁內含有歷史',
-'confirmdeletetext' => '您即將從資料庫中永遠刪除一個頁面或圖片以及其歷史。
+'confirmdeletetext' => '您即將從資料庫中永遠刪除一個頁面或圖片以及其歷史。
請確定您要進行此項操作,並且了解其後果,同時您的行為符合[[{{MediaWiki:Policy-url}}]]。',
-'actioncomplete' => '操作完成',
-'deletedtext' => '「<nowiki>$1</nowiki>」已經被刪除。
+'deletedtext' => '「<nowiki>$1</nowiki>」已經被刪除。
最近刪除的紀錄請參見$2。',
-'deletedarticle' => '已刪除「$1」',
-'dellogpage' => '刪除紀錄',
-'dellogpagetext' => '以下是最近刪除的紀錄列表。
+'deletedarticle' => '已刪除「$1」',
+'dellogpagetext' => '以下是最近刪除的紀錄列表。
所有的時間都是使用伺服器時間。',
-'deletionlog' => '刪除紀錄',
-'reverted' => '復原到早期版本',
-'deletecomment' => '原因:',
-'deleteotherreason' => '其它/附加的理由:',
-'deletereasonotherlist' => '其它理由',
-'deletereason-dropdown' => '
-*常用刪除理由
-** 作者請求
-** 侵犯版權
-** 破壞',
+'reverted' => '復原到早期版本',
+'deletecomment' => '原因:',
# Rollback
'rollback' => '復原',
@@ -1158,137 +562,60 @@ $NEWPAGE
其他人已經編輯或是復原了該頁。
最後編輯者: [[User:$3|$3]] ([[User talk:$3|討論]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
-'editcomment' => "編輯說明: \"''\$1''\"。", # only shown if there is an edit comment
-'revertpage' => '復原由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])的編輯;更改回[[User:$1|$1]]的最後一個版本', # Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from
+'editcomment' => "編輯說明: \"''\$1''\"。",
+'revertpage' => '復原由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])的編輯;更改回[[User:$1|$1]]的最後一個版本',
'rollback-success' => '復原由$1的編輯;更改回$2的最後一個版本。',
-'sessionfailure' => '您的登入資訊似乎有問題,為防止此該訊息被攔截,本次操作已經取消,請按「上一頁」重新載入。',
# Protect
-'protectlogpage' => '保護日誌',
-'protectlogtext' => '下面是頁面鎖定和取消鎖定的列表。請參考[[Special:ProtectedPages|保護頁面清單]]以檢視當前進行的頁面保護。',
-'protectedarticle' => '已保護"[[$1]]"',
-'modifiedarticleprotection' => '已經更改 "[[$1]]" 的保護等級',
-'unprotectedarticle' => '已解除保護"[[$1]]"',
'protect-title' => '正在保護"$1"',
-'prot_1movedto2' => '[[$1]]移動到[[$2]]',
-'protectcomment' => '註解:',
-'protectexpiry' => '到期:',
-'protect_expiry_invalid' => '輸入的終止時間無效。',
-'protect_expiry_old' => '終止時間已過去。',
-'protect-unchain' => '移動權限解鎖',
-'protect-text' => "你可以在這裡瀏覽和修改對頁面'''<nowiki>$1</nowiki>'''的保護級別。",
'protect-locked-blocked' => "您不能在被封鎖時更改保護級別。
以下是'''$1'''現時的保護級別:",
-'protect-locked-dblock' => "在資料庫鎖定時無法更改保護級別。
-以下是'''$1'''現時的保護級別:",
'protect-locked-access' => "您的帳號權限不能修改保護級別。
以下是'''$1'''現時的保護級別:",
'protect-cascadeon' => '以下的{{PLURAL:$1|一個|多個}}頁面包含著本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護,未能編輯。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。',
'protect-default' => '(預設)',
-'protect-fallback' => '需要"$1"的許可',
'protect-level-autoconfirmed' => '禁止未註冊使用者',
-'protect-level-sysop' => '僅操作員',
-'protect-summary-cascade' => '連鎖',
-'protect-expiring' => '終止於 $1 (UTC)',
-'protect-cascade' => '保護本頁中包含的頁面 (連鎖保護)',
-'protect-expiry-options' => '2小時:2 hours,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
-'restriction-type' => '權限:',
-'restriction-level' => '限制級別:',
-'minimum-size' => '最小大小',
+'protect-expiry-options' => '2小時:2 hours,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite',
'maximum-size' => '最大大小',
-'pagesize' => '(位元組)',
-
-# Restrictions (nouns)
-'restriction-edit' => '編輯',
-'restriction-move' => '移動',
-
-# Restriction levels
-'restriction-level-sysop' => '全保護',
-'restriction-level-autoconfirmed' => '半保護',
-'restriction-level-all' => '任何級別',
# Undelete
'undelete' => '復原被刪頁面',
'undeletepage' => '瀏覽及復原被刪頁面',
-'viewdeletedpage' => '檢視被刪除的頁面',
'undeletepagetext' => '以下頁面已經被刪除,但依然在檔案中並可以被復原。
檔案庫可能被定時清理。',
'undeleteextrahelp' => "復原整個頁面時,請清除所有複選框後按 '''''復原''''' 。 復原特定版本時,請選擇相應版本前的複選框後按'''''復原''''' 。按 '''''重設''''' 將清除評論內容及所有複選框。",
-'undeleterevisions' => '$1版本存檔',
'undeletehistory' => '如果您復原了該頁面,所有版本都會被復原到修訂沿革中。
如果本頁刪除後有一個同名的新頁面建立,被復原的版本將會稱為較新的歷史。',
'undeleterevdel' => '如果把最新修訂部份刪除,反刪除便無法進行。如果遇到這種情況,您必須反選或反隱藏最新已刪除的修訂。對於您沒有權限去檢視的修訂是無法復原的。',
'undeletehistorynoadmin' => '這個頁面已經被刪除,刪除原因顯示在下方編輯摘要中。被刪除前的所有修訂版本,連同刪除前貢獻使用者等等細節只有管理員可以看見。',
'undelete-revision' => '刪除$1時由$3(在$2)所編寫的修訂版本:',
'undeleterevision-missing' => '此版本的內容不正確或已經遺失。可能連結錯誤、被移除或已經被復原。',
-'undelete-nodiff' => '找不到先前的修訂版本。',
'undeletebtn' => '復原',
-'undeletereset' => '重設',
-'undeletecomment' => '原因',
'undeletedarticle' => '已經復原「$1」',
'undeletedrevisions' => '$1個修訂版本已經復原',
'undeletedrevisions-files' => '$1 個版本和 $2 個檔案被復原',
'undeletedfiles' => '$1 個檔案被復原',
'cannotundelete' => '復原失敗;可能之前已經被其他人復原。',
'undeletedpage' => "'''$1已經被復原''' 請參考[[Special:Log/delete|刪除日誌]]來查詢刪除及復原記錄。",
-'undelete-header' => '如要查詢最近的記錄請參閱[[Special:Log/delete|刪除日誌]]。',
-'undelete-search-box' => '搜尋已刪除頁面',
-'undelete-search-prefix' => '顯示頁面自:',
-'undelete-search-submit' => '搜尋',
-'undelete-no-results' => '刪除記錄裡沒有符合的結果。',
-'undelete-filename-mismatch' => '不能刪除帶有時間截記的檔案修訂 $1: 檔案不匹配',
-'undelete-bad-store-key' => '不能刪除帶有時間截記的檔案修訂 $1: 檔案於刪除前遺失。',
-'undelete-cleanup-error' => '刪除無用的存檔檔案 "$1" 時發生錯誤。',
'undelete-missing-filearchive' => '由於檔案存檔 ID $1 不在資料庫中,不能在檔案存檔中復原。它可能已經反刪除了。',
-'undelete-error-short' => '反刪除檔案時發生錯誤: $1',
-'undelete-error-long' => '當進行反刪除檔案時遇到錯誤:
-
-$1',
-
-# Namespace form on various pages
-'namespace' => '名字空間:',
-'invert' => '反向選擇',
-'blanknamespace' => '(主)',
# Contributions
'contributions' => '使用者編修記錄',
'mycontris' => '我的編修記錄',
'contribsub2' => '$1的編修記錄 ($2)',
-'nocontribs' => '沒有找到符合特徵的更改。', # Optional parameter: $1 is the user name
'uctop' => ' (最新修改)',
-'month' => '從該月份 (或更早):',
-'year' => '從該年份 (或更早):',
-'sp-contributions-newbies' => '只顯示新建立之使用者的編修記錄',
-'sp-contributions-newbies-sub' => '新手',
-'sp-contributions-blocklog' => '封鎖記錄',
-'sp-contributions-search' => '搜尋貢獻記錄',
-'sp-contributions-username' => 'IP位址或使用者名稱:',
-'sp-contributions-submit' => '搜尋',
+'sp-contributions-newbies' => '只顯示新建立之使用者的編修記錄',
+'sp-contributions-blocklog' => '封鎖記錄',
+'sp-contributions-userrights' => '使用者權限管理',
+'sp-contributions-username' => 'IP位址或使用者名稱:',
# What links here
-'whatlinkshere' => '鏈入頁面',
'whatlinkshere-title' => '鏈接到$1的頁面',
-'whatlinkshere-page' => '頁面:',
-'linkshere' => '以下頁面連結到[[:$1]]:',
-'nolinkshere' => '沒有頁面連結到[[:$1]]。',
-'nolinkshere-ns' => '在所選的名字空間內沒有頁面鏈接到[[:$1]]。',
-'isredirect' => '重定向頁',
-'istemplate' => '包含',
-'whatlinkshere-prev' => '前$1個',
-'whatlinkshere-next' => '後$1個',
-'whatlinkshere-links' => '← 鏈入',
# Block/unblock
'blockip' => '封鎖使用者',
-'blockiptext' => '用下面的表單來禁止來自某一特定IP地址的修改許可權。
-只有在為防止破壞,及符合[[{{MediaWiki:Policy-url}}|守則]]的情況下才可採取此行動。
-請在下面輸入一個具體的理由(例如引述一個被破壞的頁面)。',
-'ipaddress' => 'IP地址:',
'ipadressorusername' => 'IP地址或使用者名:',
-'ipbexpiry' => '期限:',
-'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其它原因',
'ipbreason-dropdown' => '*一般的封鎖理由
** 屢次增加不實資料
** 刪除頁面內容
@@ -1302,12 +629,7 @@ $1',
'ipbemailban' => '阻止使用者傳送E-mail',
'ipbenableautoblock' => '自動封鎖此使用者最後所用的IP位址,以及後來試圖編輯所用的所有位址',
'ipbsubmit' => '封鎖該地址',
-'ipbother' => '其它時間:',
-'ipboptions' => '2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite', # display1:time1,display2:time2,...
-'ipbotheroption' => '其它',
-'ipbotherreason' => '其它/附帶原因:',
'ipbhidename' => '在封鎖日誌、活躍封鎖列表以及使用者列表中隱藏使用者名/IP',
-'badipaddress' => 'IP地址不正確。',
'blockipsuccesssub' => '封鎖成功',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]已經被封鎖。
<br />參看[[Special:IPBlockList|被封IP地址列表]]以覆審封鎖。',
@@ -1320,68 +642,34 @@ $1',
'ipusubmit' => '解除禁封',
'unblocked' => '[[User:$1|$1]] 的封鎖已經解除。',
'unblocked-id' => '封鎖 $1 已經被移除',
-'ipblocklist' => '被封IP地址列表',
'ipblocklist-legend' => '搜尋一位已經被封鎖的使用者',
'ipblocklist-username' => '使用者名稱或IP地址:',
-'ipblocklist-submit' => '搜尋',
-'blocklistline' => '$1,$2禁封$3 ($4)',
-'infiniteblock' => '永久',
-'expiringblock' => '$1 到期',
'anononlyblock' => '僅限匿名使用者',
'noautoblockblock' => '禁用自動封鎖',
'createaccountblock' => '禁止建立帳號',
-'emailblock' => '禁止電子郵件',
'ipblocklist-empty' => '封鎖列表為空。',
'ipblocklist-no-results' => '所要求的IP地址/使用者名沒有被封鎖。',
'blocklink' => '禁封',
-'unblocklink' => '解除禁封',
-'contribslink' => '貢獻',
-'autoblocker' => '你的IP和被封了的 "$1" 是一樣的。封鎖原因: "$2".',
-'blocklogpage' => '封鎖記錄',
'blocklogentry' => '[[$1]]已被封鎖 $3 ,終止時間為$2',
'blocklogtext' => '這是關於使用者封鎖和解除封鎖操作的記錄。被自動封鎖的IP地址沒有被列出。請參閱[[Special:IPBlockList|被封鎖的IP地址和使用者列表]]。',
-'unblocklogentry' => '[[$1]]已被解封',
'block-log-flags-anononly' => '僅限匿名使用者',
'block-log-flags-nocreate' => '禁止此IP/使用者建立新帳號',
'block-log-flags-noautoblock' => '停用自動封鎖',
-'block-log-flags-noemail' => '禁止電子郵件',
'range_block_disabled' => '只有管理員才能建立禁止封鎖的範圍。',
-'ipb_expiry_invalid' => '無效的終止時間。',
-'ipb_already_blocked' => '已經封鎖"$1"',
'ipb_cant_unblock' => '錯誤: 找不到封鎖ID$1。可能已經解除封鎖。',
'ipb_blocked_as_range' => '錯誤: 該IP $1 無直接封鎖,不可以解除封鎖。但是它是在 $2 的封鎖範圍之內,該段範圍是可以解除封鎖的。',
-'ip_range_invalid' => '無效的IP範圍。\\n',
'blockme' => '封鎖我',
-'proxyblocker' => '代理封鎖器',
-'proxyblocker-disabled' => '這個功能已經停用。',
-'proxyblockreason' => '您的IP位址是一個開放的代理,它已經被封鎖。請聯繫您的網際網路服務提供商或技術支援者並告知告知他們該嚴重的安全問題。',
-'proxyblocksuccess' => '完成。\\n',
'sorbsreason' => '您的IP位址被 DNSBL列為屬於開放代理服務器.',
'sorbs_create_account_reason' => '由於您的IP位址被 DNSBL列為屬於開放代理服務器,所以您無法建立帳號。',
# Developer tools
-'lockdb' => '禁止更改資料庫',
-'unlockdb' => '開放更改資料庫',
-'lockdbtext' => '鎖住資料庫將禁止所有使用者進行編輯頁面、更改參數、編輯監視列表以及其他需要更改資料庫的操作。
+'lockdbtext' => '鎖住資料庫將禁止所有使用者進行編輯頁面、更改參數、編輯監視列表以及其他需要更改資料庫的操作。
請確認您的決定,並且保證您在維護工作結束後會重新開放資料庫。',
-'unlockdbtext' => '開放資料庫將會復原所有使用者進行編輯頁面、修改參數、編輯監視列表以及其他需要更改資料庫的操作。
+'unlockdbtext' => '開放資料庫將會復原所有使用者進行編輯頁面、修改參數、編輯監視列表以及其他需要更改資料庫的操作。
請確認您的決定。',
-'lockconfirm' => '是的,我確實想要封鎖資料庫。',
-'unlockconfirm' => '是的,我確實想要開放資料庫。',
-'lockbtn' => '資料庫上鎖',
-'unlockbtn' => '開放資料庫',
-'locknoconfirm' => '您並沒有勾選確認按鈕。',
-'lockdbsuccesssub' => '資料庫成功上鎖',
-'unlockdbsuccesssub' => '資料庫開放',
-'lockdbsuccesstext' => '{{SITENAME}}資料庫已經上鎖。
-<br />請記住在維護完成後重新開放資料庫。',
-'unlockdbsuccesstext' => '{{SITENAME}}資料庫重新開放。',
-'lockfilenotwritable' => '資料庫鎖定檔案不可寫入。要鎖定和解鎖資料庫,該檔案必須對網路伺服器可寫入。',
-'databasenotlocked' => '資料庫沒有鎖定。',
# Move page
-'move-page-legend' => '移動頁面',
-'movepagetext' => "用下面的表單來重新命名一個頁面,並將其修訂沿革同時移動到新頁面。
+'movepagetext' => "用下面的表單來重新命名一個頁面,並將其修訂沿革同時移動到新頁面。
老的頁面將成為新頁面的重定向頁。
連結到老頁面的連結並不會自動更改;
請檢查雙重或損壞重定向連結。
@@ -1395,265 +683,97 @@ $1',
<b>警告!</b>
對一個經常被訪問的頁面而言這可能是一個重大與唐突的更改;
請在行動前先了結其所可能帶來的後果。",
-'movepagetalktext' => "有關的對話頁(如果有的話)將被自動與該頁面一起移動,'''除非''':
-*您將頁面移動到不同的名字空間;
-*新頁面已經有一個包含內容的對話頁,或者
-*您不勾選下面的覆選框。
-
-在這些情況下,您在必要時必須手工移動或合併頁面。",
-'movearticle' => '移動頁面:',
-'movenologin' => '未登入',
-'movenologintext' => '您必須是一名登記使用者並且[[Special:UserLogin|登入]]
+'movenologintext' => '您必須是一名登記使用者並且[[Special:UserLogin|登入]]
後才可移動一個頁面。',
-'movenotallowed' => '您在這個wiki中度並沒有許可權去移動頁面。',
-'newtitle' => '新標題:',
-'move-watch' => '監視此頁',
-'movepagebtn' => '移動頁面',
-'pagemovedsub' => '移動成功',
-'movepage-moved' => "<big>'''「$1」已經移動到「$2」'''</big>", # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
-'articleexists' => '該名字的頁面已經存在,或者您選擇的名字無效。請再選一個名字。',
-'talkexists' => '頁面本身移動成功,
-但是由於新標題下已經有對話頁存在,所以對話頁無法移動。請手工合併兩個頁面。',
-'movedto' => '移動到',
-'movetalk' => '如果可能的話,請同時移動對話頁。',
-'1movedto2' => '[[$1]]移動到[[$2]]',
-'1movedto2_redir' => '[[$1]]透過重定向移動到[[$2]]',
-'move-redirect-suppressed' => '已禁止重新定向',
-'movelogpage' => '移動日誌',
-'movelogpagetext' => '以下是已經移動的頁面清單:',
-'movereason' => '原因',
-'revertmove' => '復原該移動',
-'delete_and_move' => '刪除並移動',
-'delete_and_move_text' => '==需要刪除==
-
-目標頁面"[[:$1]]"已經存在。你確認需要刪除原頁面並以進行移動嗎?',
-'delete_and_move_confirm' => '是的,刪除此頁面',
-'delete_and_move_reason' => '刪除以便移動',
-'selfmove' => '原始標題與目標標題相同,您不能移動一頁覆蓋本身。',
+'movenotallowed' => '您在這個wiki中度並沒有許可權去移動頁面。',
+'movetalk' => '如果可能的話,請同時移動對話頁。',
+'movelogpagetext' => '以下是已經移動的頁面清單:',
+'revertmove' => '復原該移動',
# Export
-'export' => '匯出頁面',
-'exporttext' => '您可以將特定頁面或一組頁面的文字以及編輯歷史以 XML 格式匯出;這樣可以將有關頁面透過"[[Special:Import|匯入頁面]]"頁面匯入到另一個運行 MediaWiki 的網站。
+'exporttext' => '您可以將特定頁面或一組頁面的文字以及編輯歷史以 XML 格式匯出;這樣可以將有關頁面透過"[[Special:Import|匯入頁面]]"頁面匯入到另一個運行 MediaWiki 的網站。
要匯出頁面,請在下面的文字框中輸入頁面標題,每行一個標題,
並選擇你是否需要匯出帶有修訂記錄的以前的版本,
或是只選擇匯出帶有最後一次編輯訊息的目前版本。
此外你還可以利用連結匯出檔案,例如你可以使用[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]匯出"[[{{MediaWiki:Mainpage}}]]"頁面。',
-'exportcuronly' => '僅包含當前的修訂,而不是全部的歷史。',
-'exportnohistory' => "----
-'''注意:''' 由於性能原因,從此表單匯出頁面的全部歷史已被停用。",
-'export-submit' => '匯出',
-'export-addcattext' => '由分類中加入頁面:',
-'export-addcat' => '加入',
-'export-download' => '提供一個檔案以供另存',
+'export-download' => '提供一個檔案以供另存',
# Namespace 8 related
'allmessages' => '系統介面',
-'allmessagesname' => '名稱',
-'allmessagesdefault' => '預設的文字',
-'allmessagescurrent' => '當前的文字',
'allmessagestext' => '這裡列出所有可定製的系統介面。',
'allmessagesnotsupportedDB' => '系統介面功能處於關閉狀態 (wgUseDatabaseMessages)。',
-'allmessagesfilter' => '正則表達式過濾條件:',
-'allmessagesmodified' => '僅顯示修改過的',
# Thumbnails
-'thumbnail-more' => '放大',
-'filemissing' => '無法找到檔案',
-'thumbnail_error' => '建立縮圖錯誤: $1',
-'djvu_page_error' => 'DjVu頁面超出範圍',
-'djvu_no_xml' => '無法在DjVu檔案中擷取XML',
-'thumbnail_invalid_params' => '不正確的縮圖參數',
-'thumbnail_dest_directory' => '無法建立目標目錄',
+'thumbnail_error' => '建立縮圖錯誤: $1',
# Special:Import
-'import' => '匯入頁面',
-'importinterwiki' => '跨 wiki 匯入',
-'import-interwiki-text' => '選擇一個 wiki 和頁面標題以進行匯入。
-修訂日期和編輯者名字將同時被儲存。
-所有的跨 wiki 匯入操作被記錄在[[Special:Log/import|匯入日誌]]。',
'import-interwiki-history' => '複製此頁的所有歷史版本',
-'import-interwiki-submit' => '匯入',
'import-interwiki-namespace' => '將頁面轉移到名字空間:',
-'import-comment' => '註解:',
'importtext' => '請使用 Special:Export 功能從源 wiki 匯出檔案,儲存到您的磁片並上傳到這裡。',
-'importstart' => '正在匯入頁面...',
-'import-revision-count' => '$1個修訂',
-'importnopages' => '沒有匯入的頁面。',
'importfailed' => '匯入失敗: $1',
-'importunknownsource' => '未知的源匯入類型',
-'importcantopen' => '無法打開匯入檔案',
-'importbadinterwiki' => '損壞的內部 wiki 連結',
-'importnotext' => '空或沒有文字',
'importsuccess' => '匯入成功﹗',
'importhistoryconflict' => '存在衝突的修訂沿革(可能在之前已經匯入過此頁面)',
-'importnosources' => '跨Wiki匯入源沒有定義,同時不允許直接的歷史上傳。',
-'importnofile' => '沒有上傳匯入檔案。',
-
-# Import log
-'importlogpage' => '匯入日誌',
-'importlogpagetext' => '來自其它 wiki 的行政性的帶編輯歷史匯入頁面。',
-'import-logentry-upload' => '透過檔案上傳匯入的$1',
-'import-logentry-upload-detail' => '$1個修訂',
-'import-logentry-interwiki' => '跨 wiki $1',
-'import-logentry-interwiki-detail' => '來自$2的$1個修訂',
# Tooltip help for the actions
'tooltip-pt-userpage' => '我的使用者頁',
'tooltip-pt-anonuserpage' => '您編輯本站所用IP的對應使用者頁',
'tooltip-pt-mytalk' => '我的對話頁',
-'tooltip-pt-anontalk' => '對於來自此IP地址編輯的對話',
'tooltip-pt-preferences' => '我的偏好設定',
'tooltip-pt-watchlist' => '我的監視列表',
'tooltip-pt-mycontris' => '我的編修記錄',
-'tooltip-pt-login' => '建議您登入,儘管並非必須。',
-'tooltip-pt-anonlogin' => '建議您登入,儘管並非必須。',
-'tooltip-pt-logout' => '登出',
-'tooltip-ca-talk' => '關於頁面正文的討論',
-'tooltip-ca-edit' => '您可以編輯此頁,請在保存之前先預覽一下。',
'tooltip-ca-addsection' => '於本討論頁增加新的討論主題',
-'tooltip-ca-viewsource' => '該頁面已被保護。你可以查看該頁原始碼。',
'tooltip-ca-history' => '本頁面的早前版本。',
-'tooltip-ca-protect' => '保護該頁面',
-'tooltip-ca-delete' => '刪除本頁',
'tooltip-ca-undelete' => '將這個頁面復原到被刪除以前的狀態',
-'tooltip-ca-move' => '移動本頁',
-'tooltip-ca-watch' => '將此頁面加入監視列表',
-'tooltip-ca-unwatch' => '將此頁面從監視列表中移除',
-'tooltip-search' => '搜尋該網站',
-'tooltip-search-go' => '如果相同的標題存在的話便直接前往該頁面',
-'tooltip-search-fulltext' => '搜尋該文字的頁面',
'tooltip-p-logo' => '首頁',
-'tooltip-n-mainpage' => '訪問首頁',
-'tooltip-n-portal' => '關於本計劃、你可以做什麼、應該如何做',
-'tooltip-n-currentevents' => '提供當前新聞事件的背景資料',
-'tooltip-n-recentchanges' => '列出該網站中的最近修改',
-'tooltip-n-randompage' => '隨機載入一個頁面',
'tooltip-n-help' => '尋求說明',
-'tooltip-t-whatlinkshere' => '列出所有與本頁相鏈的頁面',
-'tooltip-t-recentchangeslinked' => '頁面鏈出所有頁面的更改',
'tooltip-feed-rss' => '訂閱本修訂記錄的RSS資訊',
'tooltip-feed-atom' => '訂閱本修訂記錄的Atom訊息',
'tooltip-t-contributions' => '檢視該使用者的編修記錄',
'tooltip-t-emailuser' => '向該使用者發送電子郵件',
'tooltip-t-upload' => '上傳圖片或多媒體檔',
-'tooltip-t-specialpages' => '全部特殊頁面的列表',
-'tooltip-t-print' => '這個頁面的可列印版本',
'tooltip-t-permalink' => '這個頁面版本的永久連結',
-'tooltip-ca-nstab-main' => '查看頁面內容',
'tooltip-ca-nstab-user' => '檢視使用者頁',
-'tooltip-ca-nstab-media' => '查看多媒體檔案資訊頁面',
-'tooltip-ca-nstab-special' => '本頁面會隨著資料庫的數據即時更新,任何人均不能直接編輯',
-'tooltip-ca-nstab-project' => '查看項目頁面',
'tooltip-ca-nstab-image' => '查詢圖片頁面',
-'tooltip-ca-nstab-mediawiki' => '查看系統資訊',
'tooltip-ca-nstab-template' => '檢視模板',
'tooltip-ca-nstab-help' => '檢視說明頁面',
'tooltip-ca-nstab-category' => '檢視分類頁面',
'tooltip-minoredit' => '標記為細微修改',
-'tooltip-save' => '保存您的修改',
-'tooltip-preview' => '預覽您的編輯,請先使用本功能再保存!',
-'tooltip-diff' => '顯示您對頁面的貢獻',
'tooltip-compareselectedversions' => '檢視本頁被點選的兩個版本間的差異',
-'tooltip-watch' => '將此頁加入您的監視列表',
-'tooltip-recreate' => '重建該頁面,無論是否被刪除。',
-'tooltip-upload' => '開始上傳',
'tooltip-rollback' => '『{{int:rollbacklink}}』可以一按恢復上一位貢獻者對這個頁面的編輯',
'tooltip-undo' => '『{{int:editundo}}』可以在編輯模式上開啟編輯表格以便復原。它容許在摘要中加入原因。',
-# Stylesheets
-'common.css' => '/* 此處的 CSS 將應用於所有的面板 */',
-'monobook.css' => '/* 此處的 CSS 將影響使用 Monobook 面板的使用者 */',
-
-# Scripts
-'common.js' => '/* 此處的JavaScript將載入於所有使用者每一個頁面。 */',
-'monobook.js' => '/* 已經不再使用;請用[[MediaWiki:common.js]] */',
-
-# Metadata
-'nodublincore' => 'Dublin Core RDF 元數據在該伺服器不可使用。',
-'nocreativecommons' => 'Creative Commons RDF 元數據在該伺服器不可使用。',
-'notacceptable' => '該網站伺服器不能提供您的客戶端能識別的數據格式。',
-
# Attribution
-'anonymous' => '{{SITENAME}}的匿名{{PLURAL:$1|使用者|使用者}}',
-'siteuser' => '{{SITENAME}}使用者$1',
-'lastmodifiedatby' => '此頁由$3於$1 $2的最後更改。', # $1 date, $2 time, $3 user
-'othercontribs' => '在$1的工作基礎上。',
-'others' => '其他',
-'siteusers' => '{{SITENAME}}{{PLURAL:$2|使用者|使用者}}$1',
-'creditspage' => '頁面致謝',
-'nocredits' => '該頁沒有致謝名單訊息。',
+'anonymous' => '{{SITENAME}}的匿名{{PLURAL:$1|使用者|使用者}}',
+'siteuser' => '{{SITENAME}}使用者$1',
+'anonuser' => '{{SITENAME}}匿名使用者$1',
+'siteusers' => '{{SITENAME}}{{PLURAL:$2|使用者|使用者}}$1',
+'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|使用者|使用者}}$1',
# Spam protection
-'spamprotectiontitle' => '垃圾過濾器',
-'spamprotectiontext' => '垃圾過濾器禁止保存您剛才提交的頁面,這可能是由於您所加入的外部網站連結所產生的問題。',
-'spamprotectionmatch' => '觸發了我們的垃圾過濾器的文本如下:$1',
-'spambot_username' => 'MediaWiki 廣告清除',
-'spam_reverting' => '復原到不包含連結至$1的最近版本',
-'spam_blanking' => '所有包含連結至$1的修訂,清空',
-
-# Info page
-'infosubtitle' => '頁面訊息',
-'numedits' => '編輯數 (頁面): $1',
-'numtalkedits' => '編輯數 (討論頁): $1',
-'numwatchers' => '監視者數目: $1',
-'numauthors' => '作者數量 (頁面): $1',
-'numtalkauthors' => '作者數量 (討論頁): $1',
-
-# Skin names
-'skinname-standard' => '標準',
-'skinname-nostalgia' => '懷舊',
-'skinname-cologneblue' => '科隆香水藍',
+'spamprotectiontext' => '垃圾過濾器禁止保存您剛才提交的頁面,這可能是由於您所加入的外部網站連結所產生的問題。',
+'spam_reverting' => '復原到不包含連結至$1的最近版本',
# Math options
'mw_math_png' => '永遠使用PNG圖片',
'mw_math_simple' => '如果是簡單的公式使用HTML,否則使用PNG圖片',
'mw_math_html' => '如果可以用HTML,否則用PNG圖片',
-'mw_math_source' => '顯示為TeX代碼 (使用文字瀏覽器時)',
-'mw_math_modern' => '推薦為新版瀏覽器使用',
-'mw_math_mathml' => '儘可能使用MathML (試驗中)',
# Patrolling
-'markaspatrolleddiff' => '標記為已檢查',
-'markaspatrolledtext' => '標記此頁面為已檢查',
-'markedaspatrolled' => '標記為已檢查',
-'markedaspatrolledtext' => '選定的版本已被標記為已檢查.',
-'rcpatroldisabled' => '最新更改檢查被關閉',
-'rcpatroldisabledtext' => '最新更改檢查的功能目前已關閉。',
-'markedaspatrollederror' => '不能標誌為已檢查',
-'markedaspatrollederrortext' => '你需要指定某個版本才能標誌為已檢查。',
-'markedaspatrollederror-noautopatrol' => '您無法將你自己所作的更改標記為已檢查。',
+'markedaspatrolledtext' => '選定的版本已被標記為已檢查.',
# Patrol log
'patrol-log-page' => '巡查記錄',
'patrol-log-line' => '已經標示$1/$2版做已巡查的$3',
-'patrol-log-auto' => '(自動)',
-
-# Image deletion
-'deletedrevision' => '已刪除舊版本$1',
-'filedeleteerror-short' => '刪除檔案發生錯誤: $1',
-'filedeleteerror-long' => '當刪除檔案時遇到錯誤:
-
-$1',
-'filedelete-missing' => '因為檔案 "$1" 不存在,所以它不可以刪除。',
-'filedelete-old-unregistered' => '所指定的檔案修訂 "$1" 在資料庫中不存在。',
-'filedelete-current-unregistered' => '所指定的檔案 "$1" 在資料庫中不存在。',
-'filedelete-archive-read-only' => '存檔目錄 "$1" 在網頁伺服器中不可寫。',
# Browsing diffs
'previousdiff' => '←上一個',
'nextdiff' => '下一個→',
# Media information
-'mediawarning' => "'''警告''': 該檔案可能包含惡意代碼,執行它可能對您的系統帶來危險。<hr />",
'imagemaxsize' => '在圖片描述頁對圖片大小限制為:',
-'thumbsize' => '略圖大小:',
-'widthheightpage' => '$1×$2, $3頁',
-'file-info' => '(檔案大小: $1, MIME 類型: $2)',
-'file-info-size' => '($1 × $2 像素,檔案大小:$3 ,MIME類型:$4)',
'file-nohires' => '<small>無更高解析度可提供。</small>',
-'svg-long-desc' => '(SVG檔案,表面大小: $1 × $2 像素,檔案大小:$3)',
'show-big-image' => '完整解析度',
'show-big-image-thumb' => '<small>這幅縮圖的解析度: $1 × $2 像素</small>',
@@ -1662,8 +782,6 @@ $1',
'imagelisttext' => '以下是按$2排列的$1個檔案列表。',
'showhidebots' => '(機器人$1)',
'noimages' => '無可檢視圖片。',
-'ilsubmit' => '搜尋',
-'bydate' => '按日期',
# Bad image list
'bad_image_list' => '請根據以下的格式去編寫:
@@ -1677,347 +795,63 @@ To disable showing a particular link, set it to 'disable', e.g.
'variantname-zh-sg' => 'disable',
Variants for Chinese language
*/
-'variantname-zh-cn' => '大陸簡體',
'variantname-zh-tw' => '台灣繁體',
-'variantname-zh-hk' => '香港繁體',
-'variantname-zh-sg' => '新加坡簡體',
-'variantname-zh' => '不轉換',
# Metadata
-'metadata' => '元數據',
-'metadata-help' => '此檔案中包含有擴展的訊息。這些訊息可能是由數位相機或掃描儀在建立或數字化過程中所添加的。
+'metadata-help' => '此檔案中包含有擴展的訊息。這些訊息可能是由數位相機或掃描儀在建立或數字化過程中所添加的。
如果此檔案的源檔案已經被修改,一些訊息在修改後的檔案中將不能完全反映出來。',
-'metadata-expand' => '顯示詳細資料',
-'metadata-collapse' => '隱藏詳細資料',
-'metadata-fields' => '在本訊息中所列出的 EXIF 元數據域將包含在圖片顯示頁面,
-當元數據表損壞時只顯示以下訊息,其他的元數據預設為隱藏。
-* make
-* model
-* datetimeoriginal
-* exposuretime
-* fnumber
-* focallength', # Do not translate list items
# EXIF tags
-'exif-imagewidth' => '寬度',
-'exif-imagelength' => '高度',
-'exif-bitspersample' => '每像素位元數',
-'exif-compression' => '壓縮方案',
-'exif-photometricinterpretation' => '像素合成',
-'exif-orientation' => '方位',
-'exif-samplesperpixel' => '像素數',
-'exif-planarconfiguration' => '數據排列',
-'exif-ycbcrsubsampling' => '黃色對洋紅二次抽樣比率',
-'exif-ycbcrpositioning' => '黃色和洋紅配置',
-'exif-xresolution' => '水準解析度',
-'exif-yresolution' => '垂直解析度',
-'exif-resolutionunit' => 'X 軸與 Y 軸解析度單位',
-'exif-stripoffsets' => '圖片數據區',
-'exif-rowsperstrip' => '每帶行數',
-'exif-stripbytecounts' => '每壓縮帶位元組數',
-'exif-jpeginterchangeformat' => 'JPEG SOI 偏移',
-'exif-jpeginterchangeformatlength' => 'JPEG 數據位元組',
-'exif-transferfunction' => '轉移功能',
-'exif-whitepoint' => '白點色度',
-'exif-primarychromaticities' => '主要色度',
-'exif-ycbcrcoefficients' => '顏色空間轉換矩陣系數',
-'exif-referenceblackwhite' => '黑白參照值對',
-'exif-datetime' => '檔案更改日期和時間',
-'exif-imagedescription' => '圖片標題',
-'exif-make' => '照相機製造商',
-'exif-model' => '照相機型號',
-'exif-software' => '所用軟體',
-'exif-artist' => '作者',
-'exif-copyright' => '版權所有者',
-'exif-exifversion' => 'Exif 版本',
-'exif-flashpixversion' => '支援的 Flashpix 版本',
-'exif-colorspace' => '顏色空間',
-'exif-componentsconfiguration' => '每分量含義',
-'exif-compressedbitsperpixel' => '圖片壓縮模式',
-'exif-pixelydimension' => '有效圖片寬度',
-'exif-pixelxdimension' => '有效圖片高度',
-'exif-makernote' => '製造商註釋',
-'exif-usercomment' => '使用者註釋',
-'exif-relatedsoundfile' => '相關的音頻檔案',
-'exif-datetimeoriginal' => '數據產生時間',
-'exif-datetimedigitized' => '數字化處理時間',
-'exif-subsectime' => '日期時間秒',
-'exif-subsectimeoriginal' => '原始日期時間秒',
-'exif-subsectimedigitized' => '數字化日期時間秒',
-'exif-exposuretime' => '曝光時間',
-'exif-exposuretime-format' => '$1 秒 ($2)',
-'exif-fnumber' => '光圈(F值)',
-'exif-exposureprogram' => '曝光模式',
-'exif-spectralsensitivity' => '感光',
-'exif-isospeedratings' => 'ISO 速率',
-'exif-oecf' => '光電轉換因子',
-'exif-shutterspeedvalue' => '快門速度',
-'exif-aperturevalue' => '光圈',
-'exif-brightnessvalue' => '亮度',
-'exif-exposurebiasvalue' => '曝光補償',
-'exif-maxaperturevalue' => '最大陸地光圈',
-'exif-subjectdistance' => '物距',
-'exif-meteringmode' => '測量模式',
-'exif-lightsource' => '光源',
-'exif-flash' => '閃光燈',
-'exif-focallength' => '焦距',
-'exif-subjectarea' => '主體區域',
-'exif-flashenergy' => '閃光燈強度',
-'exif-spatialfrequencyresponse' => '空間頻率附應',
-'exif-focalplanexresolution' => 'X軸焦平面解析度',
-'exif-focalplaneyresolution' => 'Y軸焦平面解析度',
-'exif-focalplaneresolutionunit' => '焦平面解析度單位',
-'exif-subjectlocation' => '主題位置',
-'exif-exposureindex' => '曝光指數',
-'exif-sensingmethod' => '感光模式',
-'exif-filesource' => '檔案源',
-'exif-scenetype' => '場景類型',
-'exif-cfapattern' => 'CFA 模式',
-'exif-customrendered' => '自定義圖片處理',
-'exif-exposuremode' => '曝光模式',
-'exif-whitebalance' => '白平衡',
-'exif-digitalzoomratio' => '數字變焦比率',
-'exif-focallengthin35mmfilm' => '35毫米膠片焦距',
-'exif-scenecapturetype' => '情景拍攝類型',
-'exif-gaincontrol' => '場景控制',
-'exif-contrast' => '對比度',
-'exif-saturation' => '飽和度',
-'exif-sharpness' => '銳化',
-'exif-devicesettingdescription' => '設備設定描述',
-'exif-subjectdistancerange' => '主體距離範圍',
-'exif-imageuniqueid' => '唯一圖片ID',
-'exif-gpsversionid' => 'GPS 標籤(tag)版本',
-'exif-gpslatituderef' => '北緯或南緯',
-'exif-gpslatitude' => '緯度',
-'exif-gpslongituderef' => '東經或西經',
-'exif-gpslongitude' => '經度',
-'exif-gpsaltituderef' => '海拔正負參照',
-'exif-gpsaltitude' => '海拔',
-'exif-gpstimestamp' => 'GPS 時間(原子時鐘)',
-'exif-gpssatellites' => '測量使用的衛星',
-'exif-gpsstatus' => '接收器狀態',
-'exif-gpsmeasuremode' => '測量模式',
-'exif-gpsdop' => '測量精度',
-'exif-gpsspeedref' => '速度單位',
-'exif-gpsspeed' => 'GPS 接收器速度',
-'exif-gpstrackref' => '運動方位參照',
-'exif-gpstrack' => '運動方位',
-'exif-gpsimgdirectionref' => '圖片方位參照',
-'exif-gpsimgdirection' => '圖片方位',
-'exif-gpsmapdatum' => '使用地理測繪數據',
-'exif-gpsdestlatituderef' => '目標緯度參照',
-'exif-gpsdestlatitude' => '目標緯度',
-'exif-gpsdestlongituderef' => '目標經度的參照',
-'exif-gpsdestlongitude' => '目標經度',
-'exif-gpsdestbearingref' => '目標方位參照',
-'exif-gpsdestbearing' => '目標方位',
-'exif-gpsdestdistanceref' => '目標距離參照',
-'exif-gpsdestdistance' => '目標距離',
-'exif-gpsprocessingmethod' => 'GPS 處理方法名稱',
-'exif-gpsareainformation' => 'GPS 區域名稱',
-'exif-gpsdatestamp' => 'GPS 日期',
-'exif-gpsdifferential' => 'GPS 差動修正',
-
-# EXIF attributes
-'exif-compression-1' => '未壓縮',
-
-'exif-unknowndate' => '未知的日期',
-
-'exif-orientation-1' => '標準', # 0th row: top; 0th column: left
-'exif-orientation-2' => '水準翻轉', # 0th row: top; 0th column: right
-'exif-orientation-3' => '旋轉180°', # 0th row: bottom; 0th column: right
-'exif-orientation-4' => '垂直翻轉', # 0th row: bottom; 0th column: left
-'exif-orientation-5' => '旋轉90° 逆時針並垂直翻轉', # 0th row: left; 0th column: top
-'exif-orientation-6' => '旋轉90° 順時針', # 0th row: right; 0th column: top
-'exif-orientation-7' => '旋轉90° 順時針並垂直翻轉', # 0th row: right; 0th column: bottom
-'exif-orientation-8' => '旋轉90° 逆時針', # 0th row: left; 0th column: bottom
-
-'exif-planarconfiguration-1' => '矮胖格式',
-'exif-planarconfiguration-2' => '平面格式',
-
-'exif-componentsconfiguration-0' => '不存在',
-
-'exif-exposureprogram-0' => '未定義',
-'exif-exposureprogram-1' => '手動',
-'exif-exposureprogram-2' => '標準程式',
-'exif-exposureprogram-3' => '光圈優先模式',
-'exif-exposureprogram-4' => '快門優先模式',
-'exif-exposureprogram-5' => '藝術程式(景深優先)',
-'exif-exposureprogram-6' => '運動程式(快速快門速度優先)',
-'exif-exposureprogram-7' => '肖像模式(適用於背景在焦距以外的近距攝影)',
-'exif-exposureprogram-8' => '風景模式(適用於背景在焦距上的風景照片)',
-
-'exif-subjectdistance-value' => '$1米',
-
-'exif-meteringmode-0' => '未知',
-'exif-meteringmode-1' => '平均水準',
-'exif-meteringmode-2' => '中心加權平均測量',
-'exif-meteringmode-3' => '點測',
-'exif-meteringmode-4' => '多點測',
-'exif-meteringmode-5' => '模式測量',
-'exif-meteringmode-6' => '局部測量',
-'exif-meteringmode-255' => '其它',
-
-'exif-lightsource-0' => '未知',
-'exif-lightsource-1' => '日光燈',
-'exif-lightsource-2' => '螢光燈',
-'exif-lightsource-3' => '鎢絲燈(白熾燈)',
-'exif-lightsource-4' => '閃光燈',
-'exif-lightsource-9' => '晴天',
-'exif-lightsource-10' => '多雲',
-'exif-lightsource-11' => '深色調陰影',
-'exif-lightsource-12' => '日光螢光燈(色溫 D 5700 7100K)',
-'exif-lightsource-13' => '日溫白色螢光燈(N 4600 5400K)',
-'exif-lightsource-14' => '冷白色螢光燈(W 3900 4500K)',
-'exif-lightsource-15' => '白色螢光 (WW 3200 3700K)',
-'exif-lightsource-17' => '標準燈光A',
-'exif-lightsource-18' => '標準燈光B',
-'exif-lightsource-19' => '標準燈光C',
-'exif-lightsource-24' => 'ISO攝影棚鎢燈',
-'exif-lightsource-255' => '其他光源',
-
-'exif-focalplaneresolutionunit-2' => '英寸',
-
-'exif-sensingmethod-1' => '未定義',
-'exif-sensingmethod-2' => '一塊彩色區域傳感器',
-'exif-sensingmethod-3' => '兩塊彩色區域傳感器',
-'exif-sensingmethod-4' => '三塊彩色區域傳感器',
-'exif-sensingmethod-5' => '連續彩色區域傳感器',
-'exif-sensingmethod-7' => '三線傳感器',
-'exif-sensingmethod-8' => '連續彩色線性傳感器',
-
-'exif-scenetype-1' => '直接照像圖片',
-
-'exif-customrendered-0' => '標準處理',
-'exif-customrendered-1' => '自定義處理',
-
-'exif-exposuremode-0' => '自動曝光',
-'exif-exposuremode-1' => '手動曝光',
-'exif-exposuremode-2' => '自動曝光感知調節',
-
-'exif-whitebalance-0' => '自動白平衡',
-'exif-whitebalance-1' => '手動白平衡',
-
-'exif-scenecapturetype-0' => '標準',
-'exif-scenecapturetype-1' => '風景',
-'exif-scenecapturetype-2' => '肖像',
-'exif-scenecapturetype-3' => '夜景',
-
-'exif-gaincontrol-0' => '無',
-'exif-gaincontrol-1' => '低增益',
-'exif-gaincontrol-2' => '高增益',
-'exif-gaincontrol-3' => '低減益',
-'exif-gaincontrol-4' => '高減益',
-
-'exif-contrast-0' => '標準',
-'exif-contrast-1' => '低',
-'exif-contrast-2' => '高',
-
-'exif-saturation-0' => '標準',
-'exif-saturation-1' => '低飽和度',
-'exif-saturation-2' => '高飽和度',
-
-'exif-sharpness-0' => '標準',
-'exif-sharpness-1' => '低',
-'exif-sharpness-2' => '高',
-
-'exif-subjectdistancerange-0' => '未知',
-'exif-subjectdistancerange-1' => '自動處理程式(宏)',
-'exif-subjectdistancerange-2' => '近景',
-'exif-subjectdistancerange-3' => '遠景',
-
-# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
-'exif-gpslatitude-n' => '北緯',
-'exif-gpslatitude-s' => '南緯',
-
-# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
-'exif-gpslongitude-e' => '東經',
-'exif-gpslongitude-w' => '西經',
-
-'exif-gpsstatus-a' => '測量過程',
-'exif-gpsstatus-v' => '互動測量',
-
-'exif-gpsmeasuremode-2' => '二維測量',
-'exif-gpsmeasuremode-3' => '三維測量',
-
-# Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
-'exif-gpsspeed-k' => '公里每小時',
-'exif-gpsspeed-m' => '英里每小時',
-'exif-gpsspeed-n' => '海里每小時(節)',
-
-# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
-'exif-gpsdirection-t' => '真方位',
-'exif-gpsdirection-m' => '地磁方位',
+'exif-bitspersample' => '每像素位元數',
+'exif-photometricinterpretation' => '像素合成',
+'exif-samplesperpixel' => '像素數',
+'exif-xresolution' => '水準解析度',
+'exif-yresolution' => '垂直解析度',
+'exif-resolutionunit' => 'X 軸與 Y 軸解析度單位',
+'exif-stripoffsets' => '圖片數據區',
+'exif-imagedescription' => '圖片標題',
+'exif-compressedbitsperpixel' => '圖片壓縮模式',
+'exif-pixelydimension' => '有效圖片寬度',
+'exif-pixelxdimension' => '有效圖片高度',
+'exif-usercomment' => '使用者註釋',
+'exif-focalplanexresolution' => 'X軸焦平面解析度',
+'exif-focalplaneyresolution' => 'Y軸焦平面解析度',
+'exif-focalplaneresolutionunit' => '焦平面解析度單位',
+'exif-customrendered' => '自定義圖片處理',
+'exif-imageuniqueid' => '唯一圖片ID',
+'exif-gpsimgdirectionref' => '圖片方位參照',
+'exif-gpsimgdirection' => '圖片方位',
+
+'exif-lightsource-2' => '螢光燈',
+'exif-lightsource-12' => '日光螢光燈(色溫 D 5700 7100K)',
+'exif-lightsource-13' => '日溫白色螢光燈(N 4600 5400K)',
+'exif-lightsource-14' => '冷白色螢光燈(W 3900 4500K)',
+'exif-lightsource-15' => '白色螢光 (WW 3200 3700K)',
# External editor support
-'edit-externally' => '用外部程式編輯此檔案',
'edit-externally-help' => '請參見[http://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊。',
-# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
-
# E-mail address confirmation
'confirmemail' => '確認電子郵件地址',
'confirmemail_noemail' => '您沒有在您的[[Special:Preferences|使用者設定]]裡面輸入一個有效的 email 位址。',
'confirmemail_text' => '此網站要求您在使用郵件功能之前驗證您的電子郵件地址。
點擊以下按鈕可向您的郵箱發送一封確認郵件。該郵件包含有一行代碼連結;
請在您的瀏覽器中加載此連結以確認您的電子郵件地址是有效的。',
-'confirmemail_pending' => '一個確認代碼已經被發送到您的郵箱,您可能需要等幾分鐘才能收到。如果無法收到,請在申請一個新的確認碼!',
-'confirmemail_send' => '郵發確認代碼',
-'confirmemail_sent' => '確認郵件已發送。',
-'confirmemail_oncreate' => '一個確認代碼已經被發送到您的郵箱。該代碼並不要求您進行登錄,
-但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。',
'confirmemail_sendfailed' => '不能發送確認郵件,請檢查電子郵件地址是否包含非法字元。
郵件傳送員回應: $1',
-'confirmemail_invalid' => '無效的確認碼,該代碼可能已經過期。',
'confirmemail_needlogin' => '您需要$1以確認您的電子郵件地址。',
'confirmemail_success' => '您的郵箱已經被確認。您現下可以登錄並使用此網站了。',
'confirmemail_loggedin' => '您的電子郵件地址現下已被確認。',
-'confirmemail_error' => '你的確認過程發生錯誤。',
'confirmemail_subject' => '{{SITENAME}}電子郵件地址確認',
# Scary transclusion
-'scarytranscludedisabled' => '[跨wiki轉換代碼不可用]',
-'scarytranscludefailed' => '[抱歉,模板$1讀取失敗]',
-'scarytranscludetoolong' => '[抱歉,URL 地址太長]',
-
-# Trackbacks
-'trackbackbox' => '此頁面的引用:<br />
-$1',
-'trackbackremove' => '([$1刪除])',
-'trackbacklink' => '迴響',
-'trackbackdeleteok' => 'Trackback 刪除成功。',
+'scarytranscludefailed' => '[抱歉,模板$1讀取失敗]',
+'scarytranscludetoolong' => '[抱歉,URL 地址太長]',
# Delete conflict
-'deletedwhileediting' => '警告: 此頁在您開始編輯之後已經被刪除﹗',
-'confirmrecreate' => '在您編輯這個頁面後,使用者[[User:$1|$1]]([[User talk:$1|對話]])以下列原因刪除了這個頁面: $2。請在重新建立頁面前三思。',
-'recreate' => '重建',
-
-# action=purge
-'confirm_purge_button' => '確定',
-'confirm-purge-top' => '要清除此頁面的快取嗎?',
-
-# Multipage image navigation
-'imgmultipageprev' => '← 上一頁',
-'imgmultipagenext' => '下一頁 →',
-'imgmultigo' => '確定!',
-
-# Table pager
-'ascending_abbrev' => '遞增',
-'descending_abbrev' => '遞減',
-'table_pager_next' => '下一頁',
-'table_pager_prev' => '上一頁',
-'table_pager_first' => '第一頁',
-'table_pager_last' => '最末頁',
-'table_pager_limit' => '每頁顯示 $1 筆記錄',
-'table_pager_limit_submit' => '送出',
-'table_pager_empty' => '沒有結果',
+'confirmrecreate' => '在您編輯這個頁面後,使用者[[User:$1|$1]]([[User talk:$1|對話]])以下列原因刪除了這個頁面: $2。請在重新建立頁面前三思。',
# Auto-summaries
'autosumm-blank' => '移除所有頁面內容',
@@ -2025,49 +859,13 @@ $1',
'autoredircomment' => '正在重定向到 [[$1]]',
'autosumm-new' => '新頁面: $1',
-# Size units
-'size-bytes' => '$1 位元組',
-
# Live preview
-'livepreview-loading' => '正在載入…',
-'livepreview-ready' => '正在載入… 完成!',
-'livepreview-failed' => '即時預覽失敗! 嘗試標準預覽。',
-'livepreview-error' => '連接失敗: $1 "$2" 嘗試標準預覽。',
-
-# Friendlier slave lag warnings
-'lag-warn-normal' => '過去$1秒內的更改未必會在這個清單中顯示。',
-'lag-warn-high' => '由於資料庫的過度延遲,過去$1秒內的更改未必會在這個清單中顯示。',
-
-# Watchlist editor
-'watchlistedit-numitems' => '您的監視列表中共有$1個標題,當中不包括對話頁面。',
-'watchlistedit-noitems' => '您的監視列表並無標題。',
-'watchlistedit-normal-title' => '編輯監視列表',
-'watchlistedit-normal-legend' => '從監視列表中移除標題',
-'watchlistedit-normal-explain' => '在您的監視列表中的標題在下面顯示。要移除一個標題,在它前面剔一下,接著點擊移除標題。您亦都可以[[Special:Watchlist/raw|編輯原始監視列表]]。',
-'watchlistedit-normal-submit' => '移除標題',
-'watchlistedit-normal-done' => '$1個標題已經從您的監視列表中移除:',
-'watchlistedit-raw-title' => '編輯原始監視列表',
-'watchlistedit-raw-legend' => '編輯原始監視列表',
-'watchlistedit-raw-explain' => '您的監視列表中的標題在下面顯示,同時亦都可以透過編輯這個表去加入以及移除標題;一行一個標題。當完成以後,點擊更新監視列表。你亦都可以去用[[Special:Watchlist/edit|標準編輯器]]。',
-'watchlistedit-raw-titles' => '標題:',
-'watchlistedit-raw-submit' => '更新監視列表',
-'watchlistedit-raw-done' => '您的監視列表已經更新。',
-'watchlistedit-raw-added' => '已經加入了$1個標題:',
-'watchlistedit-raw-removed' => '已經移除了$1個標題:',
-
-# Watchlist editing tools
-'watchlisttools-view' => '檢視有關更改',
-'watchlisttools-edit' => '檢視並編輯監視列表',
-'watchlisttools-raw' => '編輯原始監視列表',
+'livepreview-failed' => '即時預覽失敗! 嘗試標準預覽。',
# Special:Version
-'version' => '版本', # Not used as normal message but as header for the special page itself
'version-parserhooks' => '語法鉤',
'version-hooks' => '鉤',
'version-parser-function-hooks' => '語法函數鉤',
'version-hook-name' => '鉤名',
-# Special:SpecialPages
-'specialpages' => '特殊頁面',
-
);
diff --git a/languages/messages/MessagesZh_yue.php b/languages/messages/MessagesZh_yue.php
index 1dcfd26a..a2848f40 100644
--- a/languages/messages/MessagesZh_yue.php
+++ b/languages/messages/MessagesZh_yue.php
@@ -1,6 +1,9 @@
<?php
/** Cantonese (粵語/廣東話)
*
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
* @ingroup Language
* @file
*
diff --git a/languages/messages/MessagesZu.php b/languages/messages/MessagesZu.php
index 67e0771d..6a431813 100644
--- a/languages/messages/MessagesZu.php
+++ b/languages/messages/MessagesZu.php
@@ -36,15 +36,17 @@ $messages = array(
'may' => 'uMeyi',
'cancel' => 'Nqamula',
+'moredotdotdot' => 'Amanye...',
+'mypage' => 'Ikhasi lami',
+'mytalk' => 'Ingxoxo yami',
+'navigation' => 'Ukuqondiswa kwemikhumbi',
+
+# Cologne Blue skin
'qbfind' => 'Thola',
'qbbrowse' => 'Cinga',
'qbedit' => 'Ukuhlela',
'qbpageoptions' => 'Leli khasi',
'qbmyoptions' => 'Amakhasi ami',
-'moredotdotdot' => 'Amanye...',
-'mypage' => 'Ikhasi lami',
-'mytalk' => 'Ingxoxo yami',
-'navigation' => 'Ukuqondiswa kwemikhumbi',
'errorpagetitle' => 'Icala',
'help' => 'Usizo',
@@ -119,10 +121,6 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'nologinlink' => 'Dala ikhawundi',
'createaccount' => 'Dala ikhawundi',
'gotaccountlink' => 'Ngena',
-'username' => 'Isiga:',
-'yourrealname' => 'Igama eliqinisileyo',
-'yourlanguage' => 'Ulimi:',
-'email' => 'Iposi likagesi',
'loginsuccesstitle' => 'Ubengena',
'nosuchuser' => 'Akukho umsebenzisi unegama "$1". Hlola umbhalo wakho, noma dala ikhawundi elisha.',
'nosuchusershort' => 'Akukho umsebenzisi unegama "<nowiki>$1</nowiki>". Hlola umbhalo wakho.',
@@ -167,17 +165,23 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'searchhelp-url' => 'Help:Isiqikili',
'powersearch' => 'Sesha',
+# Quickbar
+'qbsettings' => 'Imeniyu',
+
# Preferences page
'preferences' => 'Amakhethelo',
'mypreferences' => 'Amakhethelo ami',
'prefsnologin' => 'Awungenile',
-'qbsettings' => 'Imeniyu',
'changepassword' => 'Guqula izwi elingenangozi',
-'math' => 'Izibalo',
+'prefs-math' => 'Izibalo',
'saveprefs' => 'Saveprefs',
'searchresultshead' => 'Sesha',
'timezonelegend' => 'Isifunda sasikhathi',
'localtime' => 'Isikhathi siyalapha',
+'username' => 'Isiga:',
+'yourrealname' => 'Igama eliqinisileyo',
+'yourlanguage' => 'Ulimi:',
+'email' => 'Iposi likagesi',
# Recent changes
'recentchanges' => 'Izinguquko ezimanje',
@@ -185,7 +189,9 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'show' => 'Bukisa',
# Recent changes linked
-'recentchangeslinked' => 'Izinguquko ezilandiweyo',
+'recentchangeslinked' => 'Izinguquko ezilandiweyo',
+'recentchangeslinked-feed' => 'Izinguquko ezilandiweyo',
+'recentchangeslinked-toolbox' => 'Izinguquko ezilandiweyo',
# Upload
'upload' => 'Layisha ifayili',
@@ -197,9 +203,8 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'nolicense' => 'Ubekhetha lutho',
# File description page
+'file-anchor-link' => 'Ifayela',
'nolinkstoimage' => 'Akukho amakhasi akhomba kuleli fayela.',
-'noimage' => 'Akukho ifayela elinaleli gama, unga $1.',
-'noimage-linktext' => 'Layisha',
# Random page
'randompage' => 'Ikhasi elingaphandle kokucabanga',
@@ -320,7 +325,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'exif-artist' => 'Umbhali',
'exif-sharpness' => 'Ububukhali',
-'exif-orientation-1' => 'Kuphelele', # 0th row: top; 0th column: left
+'exif-orientation-1' => 'Kuphelele',
'exif-meteringmode-5' => 'Umhlobiso',
diff --git a/maintenance/7zip.inc b/maintenance/7zip.inc
new file mode 100644
index 00000000..617083bf
--- /dev/null
+++ b/maintenance/7zip.inc
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Stream wrapper around 7za filter program.
+ * Required since we can't pass an open file resource to XMLReader->open()
+ * which is used for the text prefetch.
+ *
+ * @ingroup Maintenance
+ */
+class SevenZipStream {
+ var $stream;
+
+ private function stripPath( $path ) {
+ $prefix = 'mediawiki.compress.7z://';
+ return substr( $path, strlen( $prefix ) );
+ }
+
+ function stream_open( $path, $mode, $options, &$opened_path ) {
+ if( $mode[0] == 'r' ) {
+ $options = 'e -bd -so';
+ } elseif( $mode[0] == 'w' ) {
+ $options = 'a -bd -si';
+ } else {
+ return false;
+ }
+ $arg = wfEscapeShellArg( $this->stripPath( $path ) );
+ $command = "7za $options $arg";
+ if( !wfIsWindows() ) {
+ // Suppress the stupid messages on stderr
+ $command .= ' 2>/dev/null';
+ }
+ $this->stream = popen( $command, $mode );
+ return ($this->stream !== false);
+ }
+
+ function url_stat( $path, $flags ) {
+ return stat( $this->stripPath( $path ) );
+ }
+
+ // This is all so lame; there should be a default class we can extend
+
+ function stream_close() {
+ return fclose( $this->stream );
+ }
+
+ function stream_flush() {
+ return fflush( $this->stream );
+ }
+
+ function stream_read( $count ) {
+ return fread( $this->stream, $count );
+ }
+
+ function stream_write( $data ) {
+ return fwrite( $this->stream, $data );
+ }
+
+ function stream_tell() {
+ return ftell( $this->stream );
+ }
+
+ function stream_eof() {
+ return feof( $this->stream );
+ }
+
+ function stream_seek( $offset, $whence ) {
+ return fseek( $this->stream, $offset, $whence );
+ }
+}
+stream_wrapper_register( 'mediawiki.compress.7z', 'SevenZipStream' ); \ No newline at end of file
diff --git a/maintenance/Doxyfile b/maintenance/Doxyfile
index cdc748d8..db737bff 100644
--- a/maintenance/Doxyfile
+++ b/maintenance/Doxyfile
@@ -135,7 +135,7 @@ FILE_PATTERNS = *.c \
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = YES
-EXCLUDE_PATTERNS = LocalSettings.php AdminSettings.php
+EXCLUDE_PATTERNS = LocalSettings.php AdminSettings.php .svn {{EXCLUDE}}
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
diff --git a/maintenance/FiveUpgrade.inc b/maintenance/FiveUpgrade.inc
index b041a436..be0112e9 100644
--- a/maintenance/FiveUpgrade.inc
+++ b/maintenance/FiveUpgrade.inc
@@ -526,7 +526,7 @@ class FiveUpgrade {
} else {
global $IP;
$this->log( 'adding iw_trans...' );
- dbsource( $IP . '/maintenance/archives/patch-interwiki-trans.sql', $this->dbw );
+ $this->dbw->sourceFile( $IP . '/maintenance/archives/patch-interwiki-trans.sql' );
$this->log( 'added iw_trans.' );
}
diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php
new file mode 100644
index 00000000..277278c0
--- /dev/null
+++ b/maintenance/Maintenance.php
@@ -0,0 +1,860 @@
+<?php
+/**
+ * @file
+ * @ingroup Maintenance
+ * @defgroup Maintenance Maintenance
+ */
+
+// Define this so scripts can easily find doMaintenance.php
+define( 'DO_MAINTENANCE', dirname( __FILE__ ) . '/doMaintenance.php' );
+$maintClass = false;
+
+// Make sure we're on PHP5 or better
+if( version_compare( PHP_VERSION, '5.0.0' ) < 0 ) {
+ echo( "Sorry! This version of MediaWiki requires PHP 5; you are running " .
+ PHP_VERSION . ".\n\n" .
+ "If you are sure you already have PHP 5 installed, it may be installed\n" .
+ "in a different path from PHP 4. Check with your system administrator.\n" );
+ die();
+}
+
+/**
+ * Abstract maintenance class for quickly writing and churning out
+ * maintenance scripts with minimal effort. All that _must_ be defined
+ * is the execute() method. See docs/maintenance.txt for more info
+ * and a quick demo of how to use it.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @author Chad Horohoe <chad@anyonecanedit.org>
+ * @since 1.16
+ * @ingroup Maintenance
+ */
+abstract class Maintenance {
+
+ /**
+ * Constants for DB access type
+ * @see Maintenance::getDbType()
+ */
+ const DB_NONE = 0;
+ const DB_STD = 1;
+ const DB_ADMIN = 2;
+
+ // Const for getStdin()
+ const STDIN_ALL = 'all';
+
+ // This is the desired params
+ protected $mParams = array();
+
+ // Array of desired args
+ protected $mArgList = array();
+
+ // This is the list of options that were actually passed
+ protected $mOptions = array();
+
+ // This is the list of arguments that were actually passed
+ protected $mArgs = array();
+
+ // Name of the script currently running
+ protected $mSelf;
+
+ // Special vars for params that are always used
+ protected $mQuiet = false;
+ protected $mDbUser, $mDbPass;
+
+ // A description of the script, children should change this
+ protected $mDescription = '';
+
+ // Have we already loaded our user input?
+ protected $mInputLoaded = false;
+
+ // Batch size. If a script supports this, they should set
+ // a default with setBatchSize()
+ protected $mBatchSize = null;
+
+ /**
+ * List of all the core maintenance scripts. This is added
+ * to scripts added by extensions in $wgMaintenanceScripts
+ * and returned by getMaintenanceScripts()
+ */
+ protected static $mCoreScripts = null;
+
+ /**
+ * Default constructor. Children should call this if implementing
+ * their own constructors
+ */
+ public function __construct() {
+ $this->addDefaultParams();
+ register_shutdown_function( array( $this, 'outputChanneled' ), false );
+ }
+
+ /**
+ * Do the actual work. All child classes will need to implement this
+ */
+ abstract public function execute();
+
+ /**
+ * Add a parameter to the script. Will be displayed on --help
+ * with the associated description
+ *
+ * @param $name String The name of the param (help, version, etc)
+ * @param $description String The description of the param to show on --help
+ * @param $required boolean Is the param required?
+ * @param $withArg Boolean Is an argument required with this option?
+ */
+ protected function addOption( $name, $description, $required = false, $withArg = false ) {
+ $this->mParams[$name] = array( 'desc' => $description, 'require' => $required, 'withArg' => $withArg );
+ }
+
+ /**
+ * Checks to see if a particular param exists.
+ * @param $name String The name of the param
+ * @return boolean
+ */
+ protected function hasOption( $name ) {
+ return isset( $this->mOptions[$name] );
+ }
+
+ /**
+ * Get an option, or return the default
+ * @param $name String The name of the param
+ * @param $default mixed Anything you want, default null
+ * @return mixed
+ */
+ protected function getOption( $name, $default = null ) {
+ if( $this->hasOption( $name ) ) {
+ return $this->mOptions[$name];
+ } else {
+ // Set it so we don't have to provide the default again
+ $this->mOptions[$name] = $default;
+ return $this->mOptions[$name];
+ }
+ }
+
+ /**
+ * Add some args that are needed
+ * @param $arg String Name of the arg, like 'start'
+ * @param $description String Short description of the arg
+ * @param $required Boolean Is this required?
+ */
+ protected function addArg( $arg, $description, $required = true ) {
+ $this->mArgList[] = array(
+ 'name' => $arg,
+ 'desc' => $description,
+ 'require' => $required
+ );
+ }
+
+ /**
+ * Does a given argument exist?
+ * @param $argId int The integer value (from zero) for the arg
+ * @return boolean
+ */
+ protected function hasArg( $argId = 0 ) {
+ return isset( $this->mArgs[$argId] );
+ }
+
+ /**
+ * Get an argument.
+ * @param $argId int The integer value (from zero) for the arg
+ * @param $default mixed The default if it doesn't exist
+ * @return mixed
+ */
+ protected function getArg( $argId = 0, $default = null ) {
+ return $this->hasArg( $argId ) ? $this->mArgs[$argId] : $default;
+ }
+
+ /**
+ * Set the batch size.
+ * @param $s int The number of operations to do in a batch
+ */
+ protected function setBatchSize( $s = 0 ) {
+ $this->mBatchSize = $s;
+ }
+
+ /**
+ * Get the script's name
+ * @return String
+ */
+ public function getName() {
+ return $this->mSelf;
+ }
+
+ /**
+ * Return input from stdin.
+ * @param $length int The number of bytes to read. If null,
+ * just return the handle. Maintenance::STDIN_ALL returns
+ * the full length
+ * @return mixed
+ */
+ protected function getStdin( $len = null ) {
+ if ( $len == Maintenance::STDIN_ALL )
+ return file_get_contents( 'php://stdin' );
+ $f = fopen( 'php://stdin', 'rt' );
+ if( !$len )
+ return $f;
+ $input = fgets( $f, $len );
+ fclose( $f );
+ return rtrim( $input );
+ }
+
+ /**
+ * Throw some output to the user. Scripts can call this with no fears,
+ * as we handle all --quiet stuff here
+ * @param $out String The text to show to the user
+ * @param $channel Mixed Unique identifier for the channel. See function outputChanneled.
+ */
+ protected function output( $out, $channel = null ) {
+ if( $this->mQuiet ) {
+ return;
+ }
+ if ( $channel === null ) {
+ $f = fopen( 'php://stdout', 'w' );
+ fwrite( $f, $out );
+ fclose( $f );
+ }
+ else {
+ $out = preg_replace( '/\n\z/', '', $out );
+ $this->outputChanneled( $out, $channel );
+ }
+ }
+
+ /**
+ * Throw an error to the user. Doesn't respect --quiet, so don't use
+ * this for non-error output
+ * @param $err String The error to display
+ * @param $die boolean If true, go ahead and die out.
+ */
+ protected function error( $err, $die = false ) {
+ $this->outputChanneled( false );
+ if ( php_sapi_name() == 'cli' ) {
+ fwrite( STDERR, $err . "\n" );
+ } else {
+ $f = fopen( 'php://stderr', 'w' );
+ fwrite( $f, $err . "\n" );
+ fclose( $f );
+ }
+ if( $die ) die();
+ }
+
+ private $atLineStart = true;
+ private $lastChannel = null;
+
+ /**
+ * Message outputter with channeled message support. Messages on the
+ * same channel are concatenated, but any intervening messages in another
+ * channel start a new line.
+ * @param $msg String The message without trailing newline
+ * @param $channel Channel identifier or null for no channel. Channel comparison uses ===.
+ */
+ public function outputChanneled( $msg, $channel = null ) {
+ $handle = fopen( 'php://stdout', 'w' );
+
+ if ( $msg === false ) {
+ // For cleanup
+ if ( !$this->atLineStart ) fwrite( $handle, "\n" );
+ fclose( $handle );
+ return;
+ }
+
+ // End the current line if necessary
+ if ( !$this->atLineStart && $channel !== $this->lastChannel ) {
+ fwrite( $handle, "\n" );
+ }
+
+ fwrite( $handle, $msg );
+
+ $this->atLineStart = false;
+ if ( $channel === null ) {
+ // For unchanneled messages, output trailing newline immediately
+ fwrite( $handle, "\n" );
+ $this->atLineStart = true;
+ }
+ $this->lastChannel = $channel;
+
+ // Cleanup handle
+ fclose( $handle );
+ }
+
+ /**
+ * Does the script need different DB access? By default, we give Maintenance
+ * scripts normal rights to the DB. Sometimes, a script needs admin rights
+ * access for a reason and sometimes they want no access. Subclasses should
+ * override and return one of the following values, as needed:
+ * Maintenance::DB_NONE - For no DB access at all
+ * Maintenance::DB_STD - For normal DB access, default
+ * Maintenance::DB_ADMIN - For admin DB access
+ * @return int
+ */
+ public function getDbType() {
+ return Maintenance::DB_STD;
+ }
+
+ /**
+ * Add the default parameters to the scripts
+ */
+ protected function addDefaultParams() {
+ $this->addOption( 'help', "Display this help message" );
+ $this->addOption( 'quiet', "Whether to supress non-error output" );
+ $this->addOption( 'conf', "Location of LocalSettings.php, if not default", false, true );
+ $this->addOption( 'wiki', "For specifying the wiki ID", false, true );
+ $this->addOption( 'globals', "Output globals at the end of processing for debugging" );
+ // If we support a DB, show the options
+ if( $this->getDbType() > 0 ) {
+ $this->addOption( 'dbuser', "The DB user to use for this script", false, true );
+ $this->addOption( 'dbpass', "The password to use for this script", false, true );
+ }
+ // If we support $mBatchSize, show the option
+ if( $this->mBatchSize ) {
+ $this->addOption( 'batch-size', 'Run this many operations ' .
+ 'per batch, default: ' . $this->mBatchSize , false, true );
+ }
+ }
+
+ /**
+ * Run a child maintenance script. Pass all of the current arguments
+ * to it.
+ * @param $maintClass String A name of a child maintenance class
+ * @param $classFile String Full path of where the child is
+ * @return Maintenance child
+ */
+ protected function runChild( $maintClass, $classFile = null ) {
+ // If we haven't already specified, kill setup procedures
+ // for child scripts, we've already got a sane environment
+ self::disableSetup();
+
+ // Make sure the class is loaded first
+ if( !class_exists( $maintClass ) ) {
+ if( $classFile ) {
+ require_once( $classFile );
+ }
+ if( !class_exists( $maintClass ) ) {
+ $this->error( "Cannot spawn child: $maintClass" );
+ }
+ }
+
+ $child = new $maintClass();
+ $child->loadParamsAndArgs( $this->mSelf, $this->mOptions, $this->mArgs );
+ return $child;
+ }
+
+ /**
+ * Disable Setup.php mostly
+ */
+ protected static function disableSetup() {
+ if( !defined( 'MW_NO_SETUP' ) )
+ define( 'MW_NO_SETUP', true );
+ }
+
+ /**
+ * Do some sanity checking and basic setup
+ */
+ public function setup() {
+ global $IP, $wgCommandLineMode, $wgRequestTime;
+
+ # Abort if called from a web server
+ if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
+ $this->error( "This script must be run from the command line", true );
+ }
+
+ # Make sure we can handle script parameters
+ if( !ini_get( 'register_argc_argv' ) ) {
+ $this->error( "Cannot get command line arguments, register_argc_argv is set to false", true );
+ }
+
+ if( version_compare( phpversion(), '5.2.4' ) >= 0 ) {
+ // Send PHP warnings and errors to stderr instead of stdout.
+ // This aids in diagnosing problems, while keeping messages
+ // out of redirected output.
+ if( ini_get( 'display_errors' ) ) {
+ ini_set( 'display_errors', 'stderr' );
+ }
+
+ // Don't touch the setting on earlier versions of PHP,
+ // as setting it would disable output if you'd wanted it.
+
+ // Note that exceptions are also sent to stderr when
+ // command-line mode is on, regardless of PHP version.
+ }
+
+ # Set the memory limit
+ # Note we need to set it again later in cache LocalSettings changed it
+ ini_set( 'memory_limit', $this->memoryLimit() );
+
+ # Set max execution time to 0 (no limit). PHP.net says that
+ # "When running PHP from the command line the default setting is 0."
+ # But sometimes this doesn't seem to be the case.
+ ini_set( 'max_execution_time', 0 );
+
+ $wgRequestTime = microtime( true );
+
+ # Define us as being in MediaWiki
+ define( 'MEDIAWIKI', true );
+
+ # Setup $IP, using MW_INSTALL_PATH if it exists
+ $IP = strval( getenv( 'MW_INSTALL_PATH' ) ) !== ''
+ ? getenv( 'MW_INSTALL_PATH' )
+ : realpath( dirname( __FILE__ ) . '/..' );
+
+ $wgCommandLineMode = true;
+ # Turn off output buffering if it's on
+ @ob_end_flush();
+
+ $this->loadParamsAndArgs();
+ $this->maybeHelp();
+ $this->validateParamsAndArgs();
+ }
+
+ /**
+ * Normally we disable the memory_limit when running admin scripts.
+ * Some scripts may wish to actually set a limit, however, to avoid
+ * blowing up unexpectedly.
+ */
+ public function memoryLimit() {
+ return -1;
+ }
+
+ /**
+ * Clear all params and arguments.
+ */
+ public function clearParamsAndArgs() {
+ $this->mOptions = array();
+ $this->mArgs = array();
+ $this->mInputLoaded = false;
+ }
+
+ /**
+ * Process command line arguments
+ * $mOptions becomes an array with keys set to the option names
+ * $mArgs becomes a zero-based array containing the non-option arguments
+ *
+ * @param $self String The name of the script, if any
+ * @param $opts Array An array of options, in form of key=>value
+ * @param $args Array An array of command line arguments
+ */
+ public function loadParamsAndArgs( $self = null, $opts = null, $args = null ) {
+ # If we were given opts or args, set those and return early
+ if( $self ) {
+ $this->mSelf = $self;
+ $this->mInputLoaded = true;
+ }
+ if( $opts ) {
+ $this->mOptions = $opts;
+ $this->mInputLoaded = true;
+ }
+ if( $args ) {
+ $this->mArgs = $args;
+ $this->mInputLoaded = true;
+ }
+
+ # If we've already loaded input (either by user values or from $argv)
+ # skip on loading it again. The array_shift() will corrupt values if
+ # it's run again and again
+ if( $this->mInputLoaded ) {
+ $this->loadSpecialVars();
+ return;
+ }
+
+ global $argv;
+ $this->mSelf = array_shift( $argv );
+
+ $options = array();
+ $args = array();
+
+ # Parse arguments
+ for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
+ if ( $arg == '--' ) {
+ # End of options, remainder should be considered arguments
+ $arg = next( $argv );
+ while( $arg !== false ) {
+ $args[] = $arg;
+ $arg = next( $argv );
+ }
+ break;
+ } elseif ( substr( $arg, 0, 2 ) == '--' ) {
+ # Long options
+ $option = substr( $arg, 2 );
+ if ( isset( $this->mParams[$option] ) && $this->mParams[$option]['withArg'] ) {
+ $param = next( $argv );
+ if ( $param === false ) {
+ $this->error( "\nERROR: $option needs a value after it\n" );
+ $this->maybeHelp( true );
+ }
+ $options[$option] = $param;
+ } else {
+ $bits = explode( '=', $option, 2 );
+ if( count( $bits ) > 1 ) {
+ $option = $bits[0];
+ $param = $bits[1];
+ } else {
+ $param = 1;
+ }
+ $options[$option] = $param;
+ }
+ } elseif ( substr( $arg, 0, 1 ) == '-' ) {
+ # Short options
+ for ( $p=1; $p<strlen( $arg ); $p++ ) {
+ $option = $arg{$p};
+ if ( isset( $this->mParams[$option]['withArg'] ) && $this->mParams[$option]['withArg'] ) {
+ $param = next( $argv );
+ if ( $param === false ) {
+ $this->error( "\nERROR: $option needs a value after it\n" );
+ $this->maybeHelp( true );
+ }
+ $options[$option] = $param;
+ } else {
+ $options[$option] = 1;
+ }
+ }
+ } else {
+ $args[] = $arg;
+ }
+ }
+
+ $this->mOptions = $options;
+ $this->mArgs = $args;
+ $this->loadSpecialVars();
+ $this->mInputLoaded = true;
+ }
+
+ /**
+ * Run some validation checks on the params, etc
+ */
+ protected function validateParamsAndArgs() {
+ $die = false;
+ # Check to make sure we've got all the required options
+ foreach( $this->mParams as $opt => $info ) {
+ if( $info['require'] && !$this->hasOption( $opt ) ) {
+ $this->error( "Param $opt required!" );
+ $die = true;
+ }
+ }
+ # Check arg list too
+ foreach( $this->mArgList as $k => $info ) {
+ if( $info['require'] && !$this->hasArg($k) ) {
+ $this->error( "Argument <" . $info['name'] . "> required!" );
+ $die = true;
+ }
+ }
+
+ if( $die ) $this->maybeHelp( true );
+ }
+
+ /**
+ * Handle the special variables that are global to all scripts
+ */
+ protected function loadSpecialVars() {
+ if( $this->hasOption( 'dbuser' ) )
+ $this->mDbUser = $this->getOption( 'dbuser' );
+ if( $this->hasOption( 'dbpass' ) )
+ $this->mDbPass = $this->getOption( 'dbpass' );
+ if( $this->hasOption( 'quiet' ) )
+ $this->mQuiet = true;
+ if( $this->hasOption( 'batch-size' ) )
+ $this->mBatchSize = $this->getOption( 'batch-size' );
+ }
+
+ /**
+ * Maybe show the help.
+ * @param $force boolean Whether to force the help to show, default false
+ */
+ protected function maybeHelp( $force = false ) {
+ $screenWidth = 80; // TODO: Caculate this!
+ $tab = " ";
+ $descWidth = $screenWidth - ( 2 * strlen( $tab ) );
+
+ ksort( $this->mParams );
+ if( $this->hasOption( 'help' ) || $force ) {
+ $this->mQuiet = false;
+
+ if( $this->mDescription ) {
+ $this->output( "\n" . $this->mDescription . "\n" );
+ }
+ $output = "\nUsage: php " . basename( $this->mSelf );
+ if( $this->mParams ) {
+ $output .= " [--" . implode( array_keys( $this->mParams ), "|--" ) . "]";
+ }
+ if( $this->mArgList ) {
+ $output .= " <";
+ foreach( $this->mArgList as $k => $arg ) {
+ $output .= $arg['name'] . ">";
+ if( $k < count( $this->mArgList ) - 1 )
+ $output .= " <";
+ }
+ }
+ $this->output( "$output\n" );
+ foreach( $this->mParams as $par => $info ) {
+ $this->output( wordwrap( "$tab$par : " . $info['desc'], $descWidth,
+ "\n$tab$tab" ) . "\n" );
+ }
+ foreach( $this->mArgList as $info ) {
+ $this->output( wordwrap( "$tab<" . $info['name'] . "> : " .
+ $info['desc'], $descWidth, "\n$tab$tab" ) . "\n" );
+ }
+ die( 1 );
+ }
+ }
+
+ /**
+ * Handle some last-minute setup here.
+ */
+ public function finalSetup() {
+ global $wgCommandLineMode, $wgShowSQLErrors;
+ global $wgTitle, $wgProfiling, $IP, $wgDBadminuser, $wgDBadminpassword;
+ global $wgDBuser, $wgDBpassword, $wgDBservers, $wgLBFactoryConf;
+
+ # Turn off output buffering again, it might have been turned on in the settings files
+ if( ob_get_level() ) {
+ ob_end_flush();
+ }
+ # Same with these
+ $wgCommandLineMode = true;
+
+ # If these were passed, use them
+ if( $this->mDbUser )
+ $wgDBadminuser = $this->mDbUser;
+ if( $this->mDbPass )
+ $wgDBadminpassword = $this->mDbPass;
+
+ if ( $this->getDbType() == self::DB_ADMIN && isset( $wgDBadminuser ) ) {
+ $wgDBuser = $wgDBadminuser;
+ $wgDBpassword = $wgDBadminpassword;
+
+ if( $wgDBservers ) {
+ foreach ( $wgDBservers as $i => $server ) {
+ $wgDBservers[$i]['user'] = $wgDBuser;
+ $wgDBservers[$i]['password'] = $wgDBpassword;
+ }
+ }
+ if( isset( $wgLBFactoryConf['serverTemplate'] ) ) {
+ $wgLBFactoryConf['serverTemplate']['user'] = $wgDBuser;
+ $wgLBFactoryConf['serverTemplate']['password'] = $wgDBpassword;
+ }
+ }
+
+ if ( defined( 'MW_CMDLINE_CALLBACK' ) ) {
+ $fn = MW_CMDLINE_CALLBACK;
+ $fn();
+ }
+
+ $wgShowSQLErrors = true;
+ @set_time_limit( 0 );
+ ini_set( 'memory_limit', $this->memoryLimit() );
+
+ $wgProfiling = false; // only for Profiler.php mode; avoids OOM errors
+ }
+
+ /**
+ * Potentially debug globals. Originally a feature only
+ * for refreshLinks
+ */
+ public function globals() {
+ if( $this->hasOption( 'globals' ) ) {
+ print_r( $GLOBALS );
+ }
+ }
+
+ /**
+ * Do setup specific to WMF
+ */
+ public function loadWikimediaSettings() {
+ global $IP, $wgNoDBParam, $wgUseNormalUser, $wgConf, $site, $lang;
+
+ if ( empty( $wgNoDBParam ) ) {
+ # Check if we were passed a db name
+ if ( isset( $this->mOptions['wiki'] ) ) {
+ $db = $this->mOptions['wiki'];
+ } else {
+ $db = array_shift( $this->mArgs );
+ }
+ list( $site, $lang ) = $wgConf->siteFromDB( $db );
+
+ # If not, work out the language and site the old way
+ if ( is_null( $site ) || is_null( $lang ) ) {
+ if ( !$db ) {
+ $lang = 'aa';
+ } else {
+ $lang = $db;
+ }
+ if ( isset( $this->mArgs[0] ) ) {
+ $site = array_shift( $this->mArgs );
+ } else {
+ $site = 'wikipedia';
+ }
+ }
+ } else {
+ $lang = 'aa';
+ $site = 'wikipedia';
+ }
+
+ # This is for the IRC scripts, which now run as the apache user
+ # The apache user doesn't have access to the wikiadmin_pass command
+ if ( $_ENV['USER'] == 'apache' ) {
+ #if ( posix_geteuid() == 48 ) {
+ $wgUseNormalUser = true;
+ }
+
+ putenv( 'wikilang=' . $lang );
+
+ $DP = $IP;
+ ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
+
+ if ( $lang == 'test' && $site == 'wikipedia' ) {
+ define( 'TESTWIKI', 1 );
+ }
+ }
+
+ /**
+ * Generic setup for most installs. Returns the location of LocalSettings
+ * @return String
+ */
+ public function loadSettings() {
+ global $wgWikiFarm, $wgCommandLineMode, $IP, $DP;
+
+ $wgWikiFarm = false;
+ if ( isset( $this->mOptions['conf'] ) ) {
+ $settingsFile = $this->mOptions['conf'];
+ } else {
+ $settingsFile = "$IP/LocalSettings.php";
+ }
+ if ( isset( $this->mOptions['wiki'] ) ) {
+ $bits = explode( '-', $this->mOptions['wiki'] );
+ if ( count( $bits ) == 1 ) {
+ $bits[] = '';
+ }
+ define( 'MW_DB', $bits[0] );
+ define( 'MW_PREFIX', $bits[1] );
+ }
+
+ if ( !is_readable( $settingsFile ) ) {
+ $this->error( "A copy of your installation's LocalSettings.php\n" .
+ "must exist and be readable in the source directory.", true );
+ }
+ $wgCommandLineMode = true;
+ $DP = $IP;
+ return $settingsFile;
+ }
+
+ /**
+ * Support function for cleaning up redundant text records
+ * @param $delete boolean Whether or not to actually delete the records
+ * @author Rob Church <robchur@gmail.com>
+ */
+ protected function purgeRedundantText( $delete = true ) {
+ # Data should come off the master, wrapped in a transaction
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
+ $tbl_arc = $dbw->tableName( 'archive' );
+ $tbl_rev = $dbw->tableName( 'revision' );
+ $tbl_txt = $dbw->tableName( 'text' );
+
+ # Get "active" text records from the revisions table
+ $this->output( "Searching for active text records in revisions table..." );
+ $res = $dbw->query( "SELECT DISTINCT rev_text_id FROM $tbl_rev" );
+ foreach( $res as $row ) {
+ $cur[] = $row->rev_text_id;
+ }
+ $this->output( "done.\n" );
+
+ # Get "active" text records from the archive table
+ $this->output( "Searching for active text records in archive table..." );
+ $res = $dbw->query( "SELECT DISTINCT ar_text_id FROM $tbl_arc" );
+ foreach( $res as $row ) {
+ $cur[] = $row->ar_text_id;
+ }
+ $this->output( "done.\n" );
+
+ # Get the IDs of all text records not in these sets
+ $this->output( "Searching for inactive text records..." );
+ $set = implode( ', ', $cur );
+ $res = $dbw->query( "SELECT old_id FROM $tbl_txt WHERE old_id NOT IN ( $set )" );
+ $old = array();
+ foreach( $res as $row ) {
+ $old[] = $row->old_id;
+ }
+ $this->output( "done.\n" );
+
+ # Inform the user of what we're going to do
+ $count = count( $old );
+ $this->output( "$count inactive items found.\n" );
+
+ # Delete as appropriate
+ if( $delete && $count ) {
+ $this->output( "Deleting..." );
+ $set = implode( ', ', $old );
+ $dbw->query( "DELETE FROM $tbl_txt WHERE old_id IN ( $set )" );
+ $this->output( "done.\n" );
+ }
+
+ # Done
+ $dbw->commit();
+ }
+
+ /**
+ * Get the maintenance directory.
+ */
+ protected function getDir() {
+ return dirname( __FILE__ );
+ }
+
+ /**
+ * Get the list of available maintenance scripts. Note
+ * that if you call this _before_ calling doMaintenance
+ * you won't have any extensions in it yet
+ * @return array
+ */
+ public static function getMaintenanceScripts() {
+ global $wgMaintenanceScripts;
+ return $wgMaintenanceScripts + self::getCoreScripts();
+ }
+
+ /**
+ * Return all of the core maintenance scripts
+ * @return array
+ */
+ protected static function getCoreScripts() {
+ if( !self::$mCoreScripts ) {
+ self::disableSetup();
+ $paths = array(
+ dirname( __FILE__ ),
+ dirname( __FILE__ ) . '/gearman',
+ dirname( __FILE__ ) . '/language',
+ dirname( __FILE__ ) . '/storage',
+ );
+ self::$mCoreScripts = array();
+ foreach( $paths as $p ) {
+ $handle = opendir( $p );
+ while( ( $file = readdir( $handle ) ) !== false ) {
+ if( $file == 'Maintenance.php' )
+ continue;
+ $file = $p . '/' . $file;
+ if( is_dir( $file ) || !strpos( $file, '.php' ) ||
+ ( strpos( file_get_contents( $file ), '$maintClass' ) === false ) ) {
+ continue;
+ }
+ require( $file );
+ $vars = get_defined_vars();
+ if( array_key_exists( 'maintClass', $vars ) ) {
+ self::$mCoreScripts[$vars['maintClass']] = $file;
+ }
+ }
+ closedir( $handle );
+ }
+ }
+ return self::$mCoreScripts;
+ }
+}
diff --git a/maintenance/README b/maintenance/README
index e2215c1d..d6e76917 100644
--- a/maintenance/README
+++ b/maintenance/README
@@ -10,8 +10,8 @@ proper installation.
Certain scripts will require elevated access to the database. In order to
provide this, first create a MySQL user with "all" permissions on the wiki
-database, and then place their username and password in an AdminSettings.php
-file in the directory above. See AdminSettings.sample for specifics on this.
+database, and then set $wgDBadminuser and $wgDBadminpassword in your
+LocalSettings.php
=== Brief explanation of files ===
@@ -94,7 +94,7 @@ installations.
Immediately complete all jobs in the job queue
stats.php
- Show all statistics stored in memcached
+ Show all statistics stored in the cache
undelete.php
Undelete all revisions of a page
diff --git a/maintenance/addwiki.php b/maintenance/addwiki.php
index ebe52f2e..0cb4d74a 100644
--- a/maintenance/addwiki.php
+++ b/maintenance/addwiki.php
@@ -1,104 +1,163 @@
<?php
/**
+ * @defgroup Wikimedia Wikimedia
+ */
+
+/**
* Add a new wiki
* Wikimedia specific!
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
-$wgNoDBParam = true;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require_once( "commandLine.inc" );
-require_once( "rebuildInterwiki.inc" );
-require_once( "languages/Names.php" );
-if ( count( $args ) != 3 ) {
- wfDie( "Usage: php addwiki.php <language> <site> <dbname>\nThe site for Wikipedia is 'wikipedia'.\n" );
-}
+class AddWiki extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Add a new wiki to the family. Wikimedia specific!";
+ $this->addArg( 'language', 'Language code of new site' );
+ $this->addArg( 'site', 'Type of site' );
+ $this->addArg( 'dbname', 'Name of database to create' );
+ }
-addWiki( $args[0], $args[1], $args[2] );
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-# -----------------------------------------------------------------
+ public function execute() {
+ global $IP, $wgLanguageNames, $wgDefaultExternalStore, $wgNoDBParam;
-function addWiki( $lang, $site, $dbName )
-{
- global $IP, $wgLanguageNames, $wgDefaultExternalStore;
+ $wgNoDBParam = true;
+ $lang = $this->getArg(0);
+ $site = $this->getArg(1);
+ $dbName = $this->getArg(2);
- if ( !isset( $wgLanguageNames[$lang] ) ) {
- print "Language $lang not found in \$wgLanguageNames\n";
- return;
- }
- $name = $wgLanguageNames[$lang];
+ if ( !isset( $wgLanguageNames[$lang] ) ) {
+ $this->error( "Language $lang not found in \$wgLanguageNames", true );
+ }
+ $name = $wgLanguageNames[$lang];
- $dbw = wfGetDB( DB_MASTER );
- $common = "/home/wikipedia/common";
- $maintenance = "$IP/maintenance";
+ $dbw = wfGetDB( DB_MASTER );
+ $common = "/home/wikipedia/common";
- print "Creating database $dbName for $lang.$site ($name)\n";
-
- # Set up the database
- $dbw->query( "SET table_type=Innodb" );
- $dbw->query( "CREATE DATABASE $dbName" );
- $dbw->selectDB( $dbName );
-
- print "Initialising tables\n";
- dbsource( "$maintenance/tables.sql", $dbw );
- dbsource( "$IP/extensions/OAI/update_table.sql", $dbw );
- dbsource( "$IP/extensions/AntiSpoof/sql/patch-antispoof.mysql.sql", $dbw );
- dbsource( "$IP/extensions/CheckUser/cu_changes.sql", $dbw );
- dbsource( "$IP/extensions/CheckUser/cu_log.sql", $dbw );
- dbsource( "$IP/extensions/TitleKey/titlekey.sql", $dbw );
- dbsource( "$IP/extensions/Oversight/hidden.sql", $dbw );
- dbsource( "$IP/extensions/GlobalBlocking/localdb_patches/setup-global_block_whitelist.sql", $dbw );
-
- $dbw->query( "INSERT INTO site_stats(ss_row_id) VALUES (1)" );
-
- # Initialise external storage
- if ( is_array( $wgDefaultExternalStore ) ) {
- $stores = $wgDefaultExternalStore;
- } elseif ( $stores ) {
- $stores = array( $wgDefaultExternalStore );
- } else {
- $stores = array();
- }
- if ( count( $stores ) ) {
- require_once( 'ExternalStoreDB.php' );
- print "Initialising external storage $store...\n";
- global $wgDBuser, $wgDBpassword, $wgExternalServers;
- foreach ( $stores as $storeURL ) {
- $m = array();
- if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
- continue;
+ $this->output( "Creating database $dbName for $lang.$site ($name)\n" );
+
+ # Set up the database
+ $dbw->query( "SET table_type=Innodb" );
+ $dbw->query( "CREATE DATABASE $dbName" );
+ $dbw->selectDB( $dbName );
+
+ $this->output( "Initialising tables\n" );
+ $dbw->sourceFile( $this->getDir() . '/tables.sql' );
+ $dbw->sourceFile( "$IP/extensions/OAI/update_table.sql" );
+ $dbw->sourceFile( "$IP/extensions/AntiSpoof/sql/patch-antispoof.mysql.sql" );
+ $dbw->sourceFile( "$IP/extensions/CheckUser/cu_changes.sql" );
+ $dbw->sourceFile( "$IP/extensions/CheckUser/cu_log.sql" );
+ $dbw->sourceFile( "$IP/extensions/TitleKey/titlekey.sql" );
+ $dbw->sourceFile( "$IP/extensions/Oversight/hidden.sql" );
+ $dbw->sourceFile( "$IP/extensions/GlobalBlocking/localdb_patches/setup-global_block_whitelist.sql" );
+ $dbw->sourceFile( "$IP/extensions/AbuseFilter/abusefilter.tables.sql" );
+ $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/PrefStats/PrefStats.sql" );
+ $dbw->sourceFile( "$IP/extensions/ProofreadPage/ProofreadPage.sql" );
+ $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql" );
+ $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql" );
+ $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/UserDailyContribs/UserDailyContribs.sql" );
+
+ $dbw->query( "INSERT INTO site_stats(ss_row_id) VALUES (1)" );
+
+ # Initialise external storage
+ if ( is_array( $wgDefaultExternalStore ) ) {
+ $stores = $wgDefaultExternalStore;
+ } elseif ( $stores ) {
+ $stores = array( $wgDefaultExternalStore );
+ } else {
+ $stores = array();
+ }
+ if ( count( $stores ) ) {
+ global $wgDBuser, $wgDBpassword, $wgExternalServers;
+ foreach ( $stores as $storeURL ) {
+ $m = array();
+ if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
+ continue;
+ }
+
+ $cluster = $m[1];
+ $this->output( "Initialising external storage $cluster...\n" );
+
+ # Hack
+ $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
+ $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
+
+ $store = new ExternalStoreDB;
+ $extdb = $store->getMaster( $cluster );
+ $extdb->query( "SET table_type=InnoDB" );
+ $extdb->query( "CREATE DATABASE $dbName" );
+ $extdb->selectDB( $dbName );
+
+ # Hack x2
+ $blobsTable = $store->getTable( $extdb );
+ $sedCmd = "sed s/blobs\\\\\\>/$blobsTable/ " . $this->getDir() . "/storage/blobs.sql";
+ $blobsFile = popen( $sedCmd, 'r' );
+ $extdb->sourceStream( $blobsFile );
+ pclose( $blobsFile );
+ $extdb->commit();
}
-
- $cluster = $m[1];
-
- # Hack
- $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
- $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
-
- $store = new ExternalStoreDB;
- $extdb =& $store->getMaster( $cluster );
- $extdb->query( "SET table_type=InnoDB" );
- $extdb->query( "CREATE DATABASE $dbName" );
- $extdb->selectDB( $dbName );
- dbsource( "$maintenance/storage/blobs.sql", $extdb );
- $extdb->immediateCommit();
}
- }
- global $wgTitle, $wgArticle;
- $wgTitle = Title::newFromText( wfMsgWeirdKey( "mainpage/$lang" ) );
- print "Writing main page to " . $wgTitle->getPrefixedDBkey() . "\n";
- $wgArticle = new Article( $wgTitle );
- $ucsite = ucfirst( $site );
+ global $wgTitle, $wgArticle;
+ $wgTitle = Title::newFromText( wfMsgWeirdKey( "mainpage/$lang" ) );
+ $this->output( "Writing main page to " . $wgTitle->getPrefixedDBkey() . "\n" );
+ $wgArticle = new Article( $wgTitle );
+ $ucsite = ucfirst( $site );
+
+ $wgArticle->insertNewArticle( $this->getFirstArticle( $ucsite, $name ), '', false, false );
+
+ $this->output( "Adding to dblists\n" );
+
+ # Add to dblist
+ $file = fopen( "$common/all.dblist", "a" );
+ fwrite( $file, "$dbName\n" );
+ fclose( $file );
+
+ # Update the sublists
+ shell_exec("cd $common && ./refresh-dblist");
+
+ #print "Constructing interwiki SQL\n";
+ # Rebuild interwiki tables
+ #passthru( '/home/wikipedia/conf/interwiki/update' );
- $wgArticle->insertNewArticle( <<<EOT
+ $this->output( "Script ended. You still have to:
+ * Add any required settings in InitialiseSettings.php
+ * Run sync-common-all
+ * Run /home/wikipedia/conf/interwiki/update
+ " );
+ }
+
+ private function getFirstArticle( $ucsite, $name ) {
+ return <<<EOT
==This subdomain is reserved for the creation of a [[wikimedia:Our projects|$ucsite]] in '''[[w:en:{$name}|{$name}]]''' language==
* Please '''do not start editing''' this new site. This site has a test project on the [[incubator:|Wikimedia Incubator]] (or on the [[betawikiversity:|BetaWikiversity]] or on the [[oldwikisource:|Old Wikisource]]) and it will be imported to here.
-* If you would like to help translating the interface to this language, please do not translate here, but go to [[betawiki:|Betawiki]], a special wiki for translating the interface. That way everyone can use it on every wiki using the [[mw:|same software]].
+* If you would like to help translating the interface to this language, please do not translate here, but go to [[translatewiki:|translatewiki]], a special wiki for translating the interface. That way everyone can use it on every wiki using the [[mw:|same software]].
* For information about how to edit and for other general help, see [[m:Help:Contents|Help on Wikimedia's Meta-Wiki]] or [[mw:Help:Contents|Help on MediaWiki.org]].
@@ -116,135 +175,280 @@ function addWiki( $lang, $site, $dbName )
See Wikimedia's [[m:|Meta-Wiki]] for the coordination of these projects.
[[aa:]]
+[[ab:]]
+[[ace:]]
[[af:]]
+[[ak:]]
[[als:]]
+[[am:]]
+[[an:]]
+[[ang:]]
[[ar:]]
-[[de:]]
-[[en:]]
+[[arc:]]
+[[arz:]]
[[as:]]
[[ast:]]
+[[av:]]
[[ay:]]
[[az:]]
+[[ba:]]
+[[bar:]]
+[[bat-smg:]]
[[bcl:]]
[[be:]]
+[[be-x-old:]]
[[bg:]]
+[[bh:]]
+[[bi:]]
+[[bm:]]
[[bn:]]
[[bo:]]
+[[bpy:]]
+[[br:]]
[[bs:]]
-[[cs:]]
+[[bug:]]
+[[bxr:]]
+[[ca:]]
+[[cbk-zam:]]
+[[cdo:]]
+[[ce:]]
+[[ceb:]]
+[[ch:]]
+[[cho:]]
+[[chr:]]
+[[chy:]]
+[[ckb:]]
[[co:]]
+[[cr:]]
+[[crh:]]
[[cs:]]
+[[csb:]]
+[[cu:]]
+[[cv:]]
[[cy:]]
[[da:]]
+[[de:]]
+[[diq:]]
+[[dk:]]
+[[dsb:]]
+[[dv:]]
+[[dz:]]
+[[ee:]]
[[el:]]
+[[eml:]]
+[[en:]]
[[eo:]]
[[es:]]
[[et:]]
[[eu:]]
+[[ext:]]
[[fa:]]
+[[ff:]]
[[fi:]]
+[[fiu-vro:]]
+[[fj:]]
+[[fo:]]
[[fr:]]
+[[frp:]]
+[[fur:]]
[[fy:]]
[[ga:]]
+[[gan:]]
+[[gd:]]
[[gl:]]
+[[glk:]]
[[gn:]]
+[[got:]]
[[gu:]]
+[[gv:]]
+[[ha:]]
+[[hak:]]
+[[haw:]]
[[he:]]
[[hi:]]
+[[hif:]]
+[[ho:]]
[[hr:]]
[[hsb:]]
+[[ht:]]
+[[hu:]]
[[hy:]]
+[[hz:]]
[[ia:]]
[[id:]]
+[[ie:]]
+[[ig:]]
+[[ii:]]
+[[ik:]]
+[[ilo:]]
+[[io:]]
[[is:]]
[[it:]]
+[[iu:]]
[[ja:]]
+[[jbo:]]
+[[jv:]]
[[ka:]]
+[[kaa:]]
+[[kab:]]
+[[kg:]]
+[[ki:]]
+[[kj:]]
[[kk:]]
+[[kl:]]
[[km:]]
[[kn:]]
[[ko:]]
+[[kr:]]
[[ks:]]
+[[ksh:]]
[[ku:]]
+[[kv:]]
+[[kw:]]
[[ky:]]
[[la:]]
+[[lad:]]
+[[lb:]]
+[[lbe:]]
+[[lg:]]
+[[li:]]
+[[lij:]]
+[[lmo:]]
[[ln:]]
[[lo:]]
[[lt:]]
[[lv:]]
-[[hu:]]
+[[map-bms:]]
+[[mdf:]]
+[[mg:]]
+[[mh:]]
+[[mhr:]]
[[mi:]]
[[mk:]]
[[ml:]]
[[mn:]]
+[[mo:]]
[[mr:]]
[[ms:]]
[[mt:]]
+[[mus:]]
+[[mwl:]]
[[my:]]
+[[myv:]]
+[[mzn:]]
[[na:]]
-[[nah:]]
+[[nan:]]
+[[nap:]]
[[nds:]]
+[[nds-nl:]]
[[ne:]]
+[[new:]]
+[[ng:]]
[[nl:]]
+[[nn:]]
[[no:]]
+[[nov:]]
+[[nrm:]]
+[[nv:]]
+[[ny:]]
[[oc:]]
[[om:]]
+[[or:]]
+[[os:]]
[[pa:]]
+[[pag:]]
+[[pam:]]
+[[pap:]]
+[[pdc:]]
+[[pi:]]
+[[pih:]]
[[pl:]]
+[[pms:]]
+[[pnt:]]
+[[pnb:]]
[[ps:]]
[[pt:]]
[[qu:]]
+[[rm:]]
+[[rmy:]]
+[[rn:]]
[[ro:]]
+[[roa-rup:]]
+[[roa-tara:]]
[[ru:]]
+[[rw:]]
[[sa:]]
+[[sah:]]
+[[sc:]]
+[[scn:]]
+[[sco:]]
+[[sd:]]
+[[se:]]
+[[sg:]]
+[[sh:]]
[[si:]]
+[[simple:]]
[[sk:]]
[[sl:]]
+[[sm:]]
+[[sn:]]
+[[so:]]
[[sq:]]
[[sr:]]
+[[srn:]]
+[[ss:]]
+[[st:]]
+[[stq:]]
+[[su:]]
[[sv:]]
[[sw:]]
+[[szl:]]
[[ta:]]
[[te:]]
+[[tet:]]
[[tg:]]
[[th:]]
+[[ti:]]
[[tk:]]
[[tl:]]
+[[tn:]]
+[[to:]]
+[[tpi:]]
[[tr:]]
+[[ts:]]
[[tt:]]
+[[tum:]]
+[[tw:]]
+[[ty:]]
+[[udm:]]
[[ug:]]
[[uk:]]
[[ur:]]
[[uz:]]
+[[ve:]]
+[[vec:]]
[[vi:]]
+[[vls:]]
[[vo:]]
+[[wa:]]
+[[war:]]
+[[wo:]]
+[[wuu:]]
+[[xal:]]
[[xh:]]
+[[yi:]]
[[yo:]]
[[za:]]
+[[zea:]]
[[zh:]]
+[[zh-classical:]]
+[[zh-min-nan:]]
+[[zh-yue:]]
[[zu:]]
-EOT
-, '', false, false );
-
- print "Adding to dblists\n";
-
- # Add to dblist
- $file = fopen( "$common/all.dblist", "a" );
- fwrite( $file, "$dbName\n" );
- fclose( $file );
-
- # Update the sublists
- shell_exec("cd $common && ./refresh-dblist");
-
- #print "Constructing interwiki SQL\n";
- # Rebuild interwiki tables
- #passthru( '/home/wikipedia/conf/interwiki/update' );
-
- print "Script ended. You still have to:
-* Add any required settings in InitialiseSettings.php
-* Run sync-common-all
-* Run /home/wikipedia/conf/interwiki/update
-";
+EOT;
+ }
}
+$maintClass = "AddWiki";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/apache-ampersand.diff b/maintenance/apache-ampersand.diff
deleted file mode 100644
index f281ce15..00000000
--- a/maintenance/apache-ampersand.diff
+++ /dev/null
@@ -1,53 +0,0 @@
---- orig/apache_1.3.26/src/modules/standard/mod_rewrite.h Wed Mar 13 13:05:34 2002
-+++ apache_1.3.26/src/modules/standard/mod_rewrite.h Tue Oct 15 14:07:21 2002
-@@ -447,6 +447,7 @@
- static char *rewrite_mapfunc_toupper(request_rec *r, char *key);
- static char *rewrite_mapfunc_tolower(request_rec *r, char *key);
- static char *rewrite_mapfunc_escape(request_rec *r, char *key);
-+static char *rewrite_mapfunc_ampescape(request_rec *r, char *key);
- static char *rewrite_mapfunc_unescape(request_rec *r, char *key);
- static char *select_random_value_part(request_rec *r, char *value);
- static void rewrite_rand_init(void);
---- orig/apache_1.3.26/src/modules/standard/mod_rewrite.c Wed May 29 10:39:23 2002
-+++ apache_1.3.26/src/modules/standard/mod_rewrite.c Tue Oct 15 14:07:49 2002
-@@ -502,6 +502,9 @@
- else if (strcmp(a2+4, "unescape") == 0) {
- new->func = rewrite_mapfunc_unescape;
- }
-+ else if (strcmp(a2+4, "ampescape") == 0) {
-+ new->func = rewrite_mapfunc_ampescape;
-+ }
- else if (sconf->state == ENGINE_ENABLED) {
- return ap_pstrcat(cmd->pool, "RewriteMap: internal map not found:",
- a2+4, NULL);
-@@ -2982,6 +2985,30 @@
-
- value = ap_escape_uri(r->pool, key);
- return value;
-+}
-+
-+static char *rewrite_mapfunc_ampescape(request_rec *r, char *key)
-+{
-+ /* We only need to escape the ampersand */
-+ char *copy = ap_palloc(r->pool, 3 * strlen(key) + 3);
-+ const unsigned char *s = (const unsigned char *)key;
-+ unsigned char *d = (unsigned char *)copy;
-+ unsigned c;
-+
-+ while ((c = *s)) {
-+ if (c == '&') {
-+ *d++ = '%';
-+ *d++ = '2';
-+ *d++ = '6';
-+ }
-+ else {
-+ *d++ = c;
-+ }
-+ ++s;
-+ }
-+ *d = '\0';
-+
-+ return copy;
- }
-
- static char *rewrite_mapfunc_unescape(request_rec *r, char *key)
diff --git a/maintenance/archives/patch-change_tag-indexes.sql b/maintenance/archives/patch-change_tag-indexes.sql
new file mode 100644
index 00000000..9f8d8f80
--- /dev/null
+++ b/maintenance/archives/patch-change_tag-indexes.sql
@@ -0,0 +1,21 @@
+--
+-- Rename indexes on change_tag from implicit to explicit names
+--
+
+DROP INDEX ct_rc_id ON /*_*/change_tag;
+DROP INDEX ct_log_id ON /*_*/change_tag;
+DROP INDEX ct_rev_id ON /*_*/change_tag;
+DROP INDEX ct_tag ON /*_*/change_tag;
+
+DROP INDEX ts_rc_id ON /*_*/tag_summary;
+DROP INDEX ts_log_id ON /*_*/tag_summary;
+DROP INDEX ts_rev_id ON /*_*/tag_summary;
+
+CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
+CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+
+CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
diff --git a/maintenance/archives/patch-eu_local_id.sql b/maintenance/archives/patch-eu_local_id.sql
new file mode 100644
index 00000000..bb59d067
--- /dev/null
+++ b/maintenance/archives/patch-eu_local_id.sql
@@ -0,0 +1,3 @@
+ALTER TABLE /*_*/external_user
+CHANGE COLUMN eu_wiki_id
+eu_local_id int unsigned NOT NULL;
diff --git a/maintenance/archives/patch-external_user.sql b/maintenance/archives/patch-external_user.sql
new file mode 100644
index 00000000..176b46d4
--- /dev/null
+++ b/maintenance/archives/patch-external_user.sql
@@ -0,0 +1,9 @@
+CREATE TABLE /*_*/external_user (
+ -- Foreign key to user_id
+ eu_local_id int unsigned NOT NULL PRIMARY KEY,
+
+ -- Some opaque identifier provided by the external database
+ eu_external_id varchar(255) binary NOT NULL
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
diff --git a/maintenance/archives/patch-filearhive-user-index.sql b/maintenance/archives/patch-filearchive-user-index.sql
index c79000ad..c79000ad 100644
--- a/maintenance/archives/patch-filearhive-user-index.sql
+++ b/maintenance/archives/patch-filearchive-user-index.sql
diff --git a/maintenance/archives/patch-job.sql b/maintenance/archives/patch-job.sql
index a1f9094f..c9199efb 100644
--- a/maintenance/archives/patch-job.sql
+++ b/maintenance/archives/patch-job.sql
@@ -1,9 +1,9 @@
-
-- Jobs performed by parallel apache threads or a command-line daemon
-CREATE TABLE /*$wgDBprefix*/job (
- job_id int unsigned NOT NULL auto_increment,
+CREATE TABLE /*_*/job (
+ job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
- -- Command name, currently only refreshLinks is defined
+ -- Command name
+ -- Limited to 60 to prevent key length overflow
job_cmd varbinary(60) NOT NULL default '',
-- Namespace and title to act on
@@ -12,9 +12,9 @@ CREATE TABLE /*$wgDBprefix*/job (
job_title varchar(255) binary NOT NULL,
-- Any other parameters to the command
- -- Presently unused, format undefined
- job_params blob NOT NULL,
-
- PRIMARY KEY job_id (job_id),
- KEY (job_cmd, job_namespace, job_title)
+ -- Stored as a PHP serialized array, or an empty string if there are no parameters
+ job_params blob NOT NULL
) /*$wgDBTableOptions*/;
+
+CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
+
diff --git a/maintenance/archives/patch-l10n_cache.sql b/maintenance/archives/patch-l10n_cache.sql
new file mode 100644
index 00000000..4c865d71
--- /dev/null
+++ b/maintenance/archives/patch-l10n_cache.sql
@@ -0,0 +1,8 @@
+-- Table for storing localisation data
+CREATE TABLE /*_*/l10n_cache (
+ lc_lang varbinary(32) NOT NULL,
+ lc_key varchar(255) NOT NULL,
+ lc_value mediumblob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
+
diff --git a/maintenance/archives/patch-log_search-rename-index.sql b/maintenance/archives/patch-log_search-rename-index.sql
new file mode 100644
index 00000000..41e051d8
--- /dev/null
+++ b/maintenance/archives/patch-log_search-rename-index.sql
@@ -0,0 +1,7 @@
+-- Rename the primary unique index from PRIMARY to ls_field_val
+-- This is for MySQL only and is necessary only for databases which were updated
+-- between MW 1.16 development revisions r50567 and r51465.
+ALTER TABLE /*_*/log_search
+ DROP PRIMARY KEY,
+ ADD UNIQUE INDEX ls_field_val (ls_field,ls_value,ls_log_id);
+
diff --git a/maintenance/archives/patch-log_search.sql b/maintenance/archives/patch-log_search.sql
new file mode 100644
index 00000000..8d92030b
--- /dev/null
+++ b/maintenance/archives/patch-log_search.sql
@@ -0,0 +1,10 @@
+CREATE TABLE /*_*/log_search (
+ -- The type of ID (rev ID, log ID, rev timestamp, username)
+ ls_field varbinary(32) NOT NULL,
+ -- The value of the ID
+ ls_value varchar(255) NOT NULL,
+ -- Key to log_id
+ ls_log_id int unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id);
+CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
diff --git a/maintenance/archives/patch-log_user_text.sql b/maintenance/archives/patch-log_user_text.sql
index dffbe8be..9a783d87 100644
--- a/maintenance/archives/patch-log_user_text.sql
+++ b/maintenance/archives/patch-log_user_text.sql
@@ -1,7 +1,8 @@
ALTER TABLE /*$wgDBprefix*/logging
ADD log_user_text varchar(255) binary NOT NULL default '',
- ADD log_target_id int unsigned NULL,
+ ADD log_page int unsigned NULL,
CHANGE log_type log_type varbinary(32) NOT NULL,
CHANGE log_action log_action varbinary(32) NOT NULL;
-CREATE INDEX /*i*/user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
diff --git a/maintenance/archives/patch-mime_minor_length.sql b/maintenance/archives/patch-mime_minor_length.sql
new file mode 100644
index 00000000..3a3c5c4f
--- /dev/null
+++ b/maintenance/archives/patch-mime_minor_length.sql
@@ -0,0 +1,10 @@
+ALTER TABLE /*_*/filearchive
+ MODIFY COLUMN fa_minor_mime varbinary(100) default "unknown";
+
+ALTER TABLE /*_*/image
+ MODIFY COLUMN img_minor_mime varbinary(100) NOT NULL default "unknown";
+
+ALTER TABLE /*_*/oldimage
+ MODIFY COLUMN oi_minor_mime varbinary(100) NOT NULL default "unknown";
+
+INSERT INTO /*_*/updatelog VALUES ('mime_minor_length'); \ No newline at end of file
diff --git a/maintenance/archives/patch-rd_interwiki.sql b/maintenance/archives/patch-rd_interwiki.sql
new file mode 100644
index 00000000..a12f1a7d
--- /dev/null
+++ b/maintenance/archives/patch-rd_interwiki.sql
@@ -0,0 +1,6 @@
+-- Add interwiki and fragment columns to redirect table
+
+ALTER TABLE /*$wgDBprefix*/redirect
+ ADD rd_interwiki varchar(32) default NULL,
+ ADD rd_fragment varchar(255) binary default NULL;
+
diff --git a/maintenance/archives/patch-tc-timestamp.sql b/maintenance/archives/patch-tc-timestamp.sql
new file mode 100644
index 00000000..4d90cf34
--- /dev/null
+++ b/maintenance/archives/patch-tc-timestamp.sql
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/transcache MODIFY tc_time binary(14);
+UPDATE /*_*/transcache SET tc_time = DATE_FORMAT(FROM_UNIXTIME(tc_time), "%Y%c%d%H%i%s");
+
+INSERT INTO /*_*/updatelog VALUES ('convert transcache field');
diff --git a/maintenance/archives/patch-transcache.sql b/maintenance/archives/patch-transcache.sql
index d0731697..70870efa 100644
--- a/maintenance/archives/patch-transcache.sql
+++ b/maintenance/archives/patch-transcache.sql
@@ -1,7 +1,7 @@
CREATE TABLE /*$wgDBprefix*/transcache (
tc_url varbinary(255) NOT NULL,
tc_contents TEXT,
- tc_time INT NOT NULL,
+ tc_time binary(14) NOT NULL,
UNIQUE INDEX tc_url_idx(tc_url)
) /*$wgDBTableOptions*/;
diff --git a/maintenance/archives/patch-user_properties.sql b/maintenance/archives/patch-user_properties.sql
new file mode 100644
index 00000000..e30e00dc
--- /dev/null
+++ b/maintenance/archives/patch-user_properties.sql
@@ -0,0 +1,22 @@
+--
+-- User preferences and perhaps other fun stuff. :)
+-- Replaces the old user.user_options blob, with a couple nice properties:
+--
+-- 1) We only store non-default settings, so changes to the defauls
+-- are now reflected for everybody, not just new accounts.
+-- 2) We can more easily do bulk lookups, statistics, or modifications of
+-- saved options since it's a sane table structure.
+--
+CREATE TABLE /*_*/user_properties(
+ -- Foreign key to user.user_id
+ up_user int not null,
+
+ -- Name of the option being saved. This is indexed for bulk lookup.
+ up_property varbinary(32) not null,
+
+ -- Property value as a string.
+ up_value blob
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/user_properties_user_property on /*_*/user_properties (up_user,up_property);
+CREATE INDEX /*i*/user_properties_property on /*_*/user_properties (up_property);
diff --git a/maintenance/archives/populateSha1.php b/maintenance/archives/populateSha1.php
deleted file mode 100644
index 487d3bad..00000000
--- a/maintenance/archives/populateSha1.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Optional upgrade script to populate the img_sha1 field
- *
- * @file
- * @ingroup MaintenanceArchive
- */
-
-$optionsWithArgs = array( 'method' );
-require_once( dirname(__FILE__).'/../commandLine.inc' );
-$method = isset( $options['method'] ) ? $options['method'] : 'normal';
-
-$t = -microtime( true );
-$fname = 'populateSha1.php';
-$dbw = wfGetDB( DB_MASTER );
-$res = $dbw->select( 'image', array( 'img_name' ), array( 'img_sha1' => '' ), $fname );
-$imageTable = $dbw->tableName( 'image' );
-$oldimageTable = $dbw->tableName( 'oldimage' );
-$batch = array();
-
-$cmd = 'mysql -u' . wfEscapeShellArg( $wgDBuser ) .
- ' -h' . wfEscapeShellArg( $wgDBserver ) .
- ' -p' . wfEscapeShellArg( $wgDBpassword, $wgDBname );
-if ( $method == 'pipe' ) {
- echo "Using pipe method\n";
- $pipe = popen( $cmd, 'w' );
-}
-
-$numRows = $res->numRows();
-$i = 0;
-foreach ( $res as $row ) {
- if ( $i % 100 == 0 ) {
- printf( "Done %d of %d, %5.3f%% \r", $i, $numRows, $i / $numRows * 100 );
- wfWaitForSlaves( 5 );
- }
- $file = wfLocalFile( $row->img_name );
- if ( !$file ) {
- continue;
- }
- $sha1 = File::sha1Base36( $file->getPath() );
- if ( strval( $sha1 ) !== '' ) {
- $sql = "UPDATE $imageTable SET img_sha1=" . $dbw->addQuotes( $sha1 ) .
- " WHERE img_name=" . $dbw->addQuotes( $row->img_name );
- if ( $method == 'pipe' ) {
- fwrite( $pipe, "$sql;\n" );
- } else {
- $dbw->query( $sql, $fname );
- }
- }
- $i++;
-}
-if ( $method == 'pipe' ) {
- fflush( $pipe );
- pclose( $pipe );
-}
-$t += microtime( true );
-printf( "\nDone %d files in %.1f seconds\n", $numRows, $t );
-
-?>
diff --git a/maintenance/archives/rebuildRecentchanges.inc b/maintenance/archives/rebuildRecentchanges.inc
deleted file mode 100644
index 65ba560c..00000000
--- a/maintenance/archives/rebuildRecentchanges.inc
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * Rebuild recent changes table
- *
- * @file
- * @deprecated
- * @ingroup MaintenanceArchive
- * @defgroup MaintenanceArchive MaintenanceArchive
- */
-
-/** */
-function rebuildRecentChangesTable()
-{
- $sql = "DROP TABLE IF EXISTS recentchanges";
- wfQuery( $sql );
-
- $sql = "CREATE TABLE recentchanges (
- rc_timestamp varchar(14) binary NOT NULL default '',
- rc_cur_time varchar(14) binary NOT NULL default '',
- rc_user int(10) unsigned NOT NULL default '0',
- rc_user_text varchar(255) binary NOT NULL default '',
- rc_namespace tinyint(3) unsigned NOT NULL default '0',
- rc_title varchar(255) binary NOT NULL default '',
- rc_comment varchar(255) binary NOT NULL default '',
- rc_minor tinyint(3) unsigned NOT NULL default '0',
- rc_new tinyint(3) unsigned NOT NULL default '0',
- rc_cur_id int(10) unsigned NOT NULL default '0',
- rc_this_oldid int(10) unsigned NOT NULL default '0',
- rc_last_oldid int(10) unsigned NOT NULL default '0',
- INDEX rc_cur_id (rc_cur_id),
- INDEX rc_cur_time (rc_cur_time),
- INDEX rc_timestamp (rc_timestamp),
- INDEX rc_namespace (rc_namespace),
- INDEX rc_title (rc_title)
-) ENGINE=MyISAM PACK_KEYS=1;";
- wfQuery( $sql );
-
- print( "Loading from CUR table...\n" );
-
- $sql = "INSERT INTO recentchanges (rc_timestamp,rc_cur_time,rc_user," .
- "rc_user_text,rc_namespace,rc_title,rc_comment,rc_minor,rc_new," .
- "rc_cur_id,rc_this_oldid,rc_last_oldid) SELECT cur_timestamp," .
- "cur_timestamp,cur_user,cur_user_text,cur_namespace,cur_title," .
- "cur_comment,cur_minor_edit,cur_is_new,cur_id,0,0 FROM cur " .
- "ORDER BY cur_timestamp DESC LIMIT 5000";
- wfQuery( $sql );
-
- print( "Loading from OLD table...\n" );
-
- $sql = "INSERT INTO recentchanges (rc_timestamp,rc_cur_time,rc_user," .
- "rc_user_text,rc_namespace,rc_title,rc_comment,rc_minor,rc_new," .
- "rc_cur_id,rc_this_oldid,rc_last_oldid) SELECT old_timestamp,''," .
- "old_user,old_user_text,old_namespace,old_title,old_comment," .
- "old_minor_edit,0,0,old_id,0 FROM old ORDER BY old_timestamp " .
- "DESC LIMIT 5000";
- wfQuery( $sql );
-
- $sql = "SELECT rc_timestamp FROM recentchanges " .
- "ORDER BY rc_timestamp DESC LIMIT 5000,1";
- $res = wfQuery( $sql );
- $obj = wfFetchObject( $res );
- $ts = $obj->rc_timestamp;
-
- $sql = "DELETE FROM recentchanges WHERE rc_timestamp < '{$ts}'";
- wfQuery( $sql );
-
- rebuildRecentChangesTablePass2();
-}
-
-function rebuildRecentChangesTablePass2()
-{
- $ns = $id = $count = 0;
- $title = $ct = "";
-
- print( "Updating links...\n" );
-
- $sql = "SELECT rc_namespace,rc_title,rc_timestamp FROM recentchanges " .
- "ORDER BY rc_namespace,rc_title,rc_timestamp DESC";
- $res = wfQuery( $sql );
-
- while ( $obj = wfFetchObject( $res ) ) {
- if ( ! ( $ns == $obj->rc_namespace &&
- 0 == strcmp( $title, wfStrencode( $obj->rc_title ) ) ) ) {
-
- $ns = $obj->rc_namespace;
- $title = wfStrencode( $obj->rc_title );
-
- $sql = "SELECT cur_id,cur_timestamp FROM cur WHERE " .
- "cur_namespace={$ns} AND cur_title='{$title}'";
- $res2 = wfQuery( $sql );
- $obj2 = wfFetchObject( $res2 );
-
- $id = $obj2->cur_id;
- $ct = $obj2->cur_timestamp;
- }
- $sql = "SELECT old_id FROM old WHERE old_namespace={$ns} " .
- "AND old_title='{$title}' AND old_timestamp < '" .
- "{$obj->rc_timestamp}' ORDER BY old_timestamp DESC LIMIT 1";
- $res2 = wfQuery( $sql );
-
- if ( 0 != wfNumRows( $res2 ) ) {
- $obj2 = wfFetchObject( $res2 );
-
- $sql = "UPDATE recentchanges SET rc_cur_id={$id},rc_cur_time=" .
- "'{$ct}',rc_last_oldid={$obj2->old_id} WHERE " .
- "rc_namespace={$ns} AND rc_title='{$title}' AND " .
- "rc_timestamp='{$obj->rc_timestamp}'";
- wfQuery( $sql );
- } else {
- $sql = "UPDATE recentchanges SET rc_cur_id={$id},rc_cur_time=" .
- "'{$ct}' WHERE rc_namespace={$ns} AND rc_title='{$title}' " .
- "AND rc_timestamp='{$obj->rc_timestamp}'";
- wfQuery( $sql );
- }
-
- if ( 0 == ( ++$count % 500 ) ) {
- printf( "%d records processed.\n", $count );
- }
- }
-}
-
-
-?>
diff --git a/maintenance/archives/upgradeWatchlist.php b/maintenance/archives/upgradeWatchlist.php
deleted file mode 100644
index 9788aa56..00000000
--- a/maintenance/archives/upgradeWatchlist.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * @file
- * @deprecated
- * @ingroup MaintenanceArchive
- */
-
-/** */
-print "This script is obsolete!";
-print "It is retained in the source here in case some of its
-code might be useful for ad-hoc conversion tasks, but it is
-not maintained and probably won't even work as is.";
-exit();
-
-# Convert watchlists to new format
-
-global $IP;
-require_once( "../LocalSettings.php" );
-require_once( "$IP/Setup.php" );
-
-$wgTitle = Title::newFromText( "Rebuild links script" );
-set_time_limit(0);
-
-$wgDBuser = "wikiadmin";
-$wgDBpassword = $wgDBadminpassword;
-
-$sql = "DROP TABLE IF EXISTS watchlist";
-wfQuery( $sql, DB_MASTER );
-$sql = "CREATE TABLE watchlist (
- wl_user int(5) unsigned NOT NULL,
- wl_page int(8) unsigned NOT NULL,
- UNIQUE KEY (wl_user, wl_page)
-) ENGINE=MyISAM PACK_KEYS=1";
-wfQuery( $sql, DB_MASTER );
-
-$lc = new LinkCache;
-
-# Now, convert!
-$sql = "SELECT user_id,user_watch FROM user";
-$res = wfQuery( $sql, DB_SLAVE );
-$nu = wfNumRows( $res );
-$sql = "INSERT into watchlist (wl_user,wl_page) VALUES ";
-$i = $n = 0;
-while( $row = wfFetchObject( $res ) ) {
- $list = explode( "\n", $row->user_watch );
- $bits = array();
- foreach( $list as $title ) {
- if( $id = $lc->addLink( $title ) and ! $bits[$id]++) {
- $sql .= ($i++ ? "," : "") . "({$row->user_id},{$id})";
- }
- }
- if( ($n++ % 100) == 0 ) echo "$n of $nu users done...\n";
-}
-echo "$n users done.\n";
-if( $i ) {
- wfQuery( $sql, DB_MASTER );
-}
-
-
-# Add index
-# is this necessary?
-$sql = "ALTER TABLE watchlist
- ADD INDEX wl_user (wl_user),
- ADD INDEX wl_page (wl_page)";
-#wfQuery( $sql, DB_MASTER );
-
-
diff --git a/maintenance/attachLatest.php b/maintenance/attachLatest.php
index 8d680afa..67f3088b 100644
--- a/maintenance/attachLatest.php
+++ b/maintenance/attachLatest.php
@@ -1,8 +1,8 @@
<?php
-// quick hackjob to fix damages imports on wikisource
-// page records have page_latest wrong
-
/**
+ * quick hackjob to fix damages imports on wikisource
+ * page records have page_latest wrong
+ *
* Copyright (C) 2005 Brion Vibber <brion@pobox.com>
* http://www.mediawiki.org/
*
@@ -21,53 +21,61 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-
-$fixit = isset( $options['fix'] );
-$fname = 'attachLatest';
-
-echo "Looking for pages with page_latest set to 0...\n";
-$dbw = wfGetDB( DB_MASTER );
-$result = $dbw->select( 'page',
- array( 'page_id', 'page_namespace', 'page_title' ),
- array( 'page_latest' => 0 ),
- $fname );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$n = 0;
-while( $row = $dbw->fetchObject( $result ) ) {
- $pageId = intval( $row->page_id );
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $name = $title->getPrefixedText();
- $latestTime = $dbw->selectField( 'revision',
- 'MAX(rev_timestamp)',
- array( 'rev_page' => $pageId ),
- $fname );
- if( !$latestTime ) {
- echo wfWikiID()." $pageId [[$name]] can't find latest rev time?!\n";
- continue;
+class AttachLatest extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( "fix", "Actually fix the entries, will dry run otherwise" );
+ $this->mDescription = "Fix page_latest entries in the page table";
}
+
+ public function execute() {
+ $this->output( "Looking for pages with page_latest set to 0...\n" );
+ $dbw = wfGetDB( DB_MASTER );
+ $result = $dbw->select( 'page',
+ array( 'page_id', 'page_namespace', 'page_title' ),
+ array( 'page_latest' => 0 ),
+ __METHOD__ );
- $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime );
- if( is_null( $revision ) ) {
- echo wfWikiID()." $pageId [[$name]] latest time $latestTime, can't find revision id\n";
- continue;
+ $n = 0;
+ foreach( $result as $row ) {
+ $pageId = intval( $row->page_id );
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $name = $title->getPrefixedText();
+ $latestTime = $dbw->selectField( 'revision',
+ 'MAX(rev_timestamp)',
+ array( 'rev_page' => $pageId ),
+ __METHOD__ );
+ if( !$latestTime ) {
+ $this->output( wfWikiID()." $pageId [[$name]] can't find latest rev time?!\n" );
+ continue;
+ }
+
+ $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime );
+ if( is_null( $revision ) ) {
+ $this->output( wfWikiID()." $pageId [[$name]] latest time $latestTime, can't find revision id\n" );
+ continue;
+ }
+ $id = $revision->getId();
+ $this->output( wfWikiID()." $pageId [[$name]] latest time $latestTime, rev id $id\n" );
+ if( $this->hasOption('fix') ) {
+ $article = new Article( $title );
+ $article->updateRevisionOn( $dbw, $revision );
+ }
+ $n++;
+ }
+ $dbw->freeResult( $result );
+ $this->output( "Done! Processed $n pages.\n" );
+ if( !$this->hasOption('fix') ) {
+ $this->output( "This was a dry run; rerun with --fix to update page_latest.\n" );
+ }
}
- $id = $revision->getId();
- echo wfWikiID()." $pageId [[$name]] latest time $latestTime, rev id $id\n";
- if( $fixit ) {
- $article = new Article( $title );
- $article->updateRevisionOn( $dbw, $revision );
- }
- $n++;
-}
-$dbw->freeResult( $result );
-echo "Done! Processed $n pages.\n";
-if( !$fixit ) {
- echo "This was a dry run; rerun with --fix to update page_latest.\n";
}
-
+$maintClass = "AttachLatest";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/attribute.php b/maintenance/attribute.php
deleted file mode 100644
index 63f19435..00000000
--- a/maintenance/attribute.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-/**
- * Script for re-attributing edits
- * Use reassingEdits.php
- *
- * @file
- * @ingroup Maintenance
- */
-
-/** */
-require_once( "commandLine.inc" );
-
-# Parameters
-if ( count( $args ) < 2 ) {
- print "Not enough parameters\n";
- if ( $wgWikiFarm ) {
- print "Usage: php attribute.php <language> <site> <source> <destination>\n";
- } else {
- print "Usage: php attribute.php <source> <destination>\n";
- }
- exit;
-}
-
-$source = $args[0];
-$dest = $args[1];
-
-$dbr = wfGetDB( DB_SLAVE );
-extract( $dbr->tableNames( 'page', 'revision','user' ));
-$eSource = $dbr->strencode( $source );
-$eDest = $dbr->strencode( $dest );
-
-# Get user id
-$res = $dbr->query( "SELECT user_id FROM $user WHERE user_name='$eDest'" );
-$row = $dbr->fetchObject( $res );
-if ( !$row ) {
- print "Warning: the target name \"$dest\" does not exist";
- $uid = 0;
-} else {
- $uid = $row->user_id;
-}
-
-# Initialise files
-$logfile = fopen( "attribute.log", "a" );
-$sqlfile = fopen( "attribute.sql", "a" );
-
-fwrite( $logfile, "* $source &rarr; $dest\n" );
-
-fwrite( $sqlfile,
-"-- Changing attribution SQL file
--- Generated with attribute.php
--- $source -> $dest ($uid)
-");
-
-$omitTitle = "Wikipedia:Changing_attribution_for_an_edit";
-
-# Get revisions
-print "\nPage revisions\n\n";
-
-$res = $dbr->query( "SELECT page_namespace, page_title, rev_id, rev_timestamp
-FROM $revision,$page
-WHERE rev_user_text='$eSource' and rev_page=page_id" );
-$row = $dbr->fetchObject( $res );
-
-if ( $row ) {
-/*
- if ( $row->old_title=='Votes_for_deletion' && $row->old_namespace == 4 ) {
- # We don't have that long
- break;
- }
-*/
- fwrite( $logfile, "**Revision IDs: " );
- fwrite( $sqlfile, "UPDATE $revision SET rev_user=$uid, rev_user_text='$eDest' WHERE rev_id IN (\n" );
-
- for ( $first=true; $row; $row = $dbr->fetchObject( $res ) ) {
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $fullTitle = $title->getPrefixedDbKey();
- if ( $fullTitle == $omitTitle ) {
- continue;
- }
-
- print "$fullTitle\n";
- $url = $title->getFullUrl( "oldid={$row->rev_id}" );
-
- # Output
- fwrite( $sqlfile, " " );
- if ( $first ) {
- $first = false;
- } else {
- fwrite( $sqlfile, ", " );
- fwrite( $logfile, ", " );
- }
-
- fwrite( $sqlfile, "{$row->rev_id} -- $url\n" );
- fwrite( $logfile, "[$url {$row->rev_id}]" );
-
- }
- fwrite( $sqlfile, ");\n" );
- fwrite( $logfile, "\n" );
-}
-
-print "\n";
-
-fclose( $sqlfile );
-fclose( $logfile );
-
-
diff --git a/maintenance/backup.inc b/maintenance/backup.inc
index e2e5363e..30bd0d88 100644
--- a/maintenance/backup.inc
+++ b/maintenance/backup.inc
@@ -232,13 +232,13 @@ class BackupDumper {
$this->startTime = wfTime();
}
+ /**
+ * @fixme the --server parameter is currently not respected, as it doesn't seem
+ * terribly easy to ask the load balancer for a particular connection by name.
+ */
function backupDb() {
- global $wgDBadminuser, $wgDBadminpassword;
- global $wgDBname, $wgDebugDumpSql, $wgDBtype;
- $flags = ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT; // god-damn hack
-
- $class = 'Database' . ucfirst($wgDBtype);
- $db = new $class( $this->backupServer(), $wgDBadminuser, $wgDBadminpassword, $wgDBname, false, $flags );
+ $this->lb = wfGetLBFactory()->newMainLB();
+ $db = $this->lb->getConnection( DB_SLAVE, 'backup' );
// Discourage the server from disconnecting us if it takes a long time
// to read out the big ol' batch query.
@@ -246,6 +246,12 @@ class BackupDumper {
return $db;
}
+
+ function __destruct() {
+ if( isset( $this->lb ) ) {
+ $this->lb->closeAll();
+ }
+ }
function backupServer() {
global $wgDBserver;
diff --git a/maintenance/benchmarkPurge.php b/maintenance/benchmarkPurge.php
index 796e1da2..d167cf92 100644
--- a/maintenance/benchmarkPurge.php
+++ b/maintenance/benchmarkPurge.php
@@ -2,78 +2,105 @@
/**
* Squid purge benchmark script
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-/** */
-require_once( "commandLine.inc" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-/**
- * Run a bunch of URLs through SquidUpdate::purge()
- * to benchmark Squid response times.
- * @param $urls array A bunch of URLs to purge
- * @param $trials int How many times to run the test?
- */
-function benchSquid( $urls, $trials = 1 ) {
- $start = wfTime();
- for( $i = 0; $i < $trials; $i++) {
- SquidUpdate::purge( $urls );
+class BenchmarkPurge extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( "count", "How many URLs to feed to Squid for purging", false, true );
+ $this->mDescription = "Benchmark the Squid purge functions.";
}
- $delta = wfTime() - $start;
- $pertrial = $delta / $trials;
- $pertitle = $pertrial / count( $urls );
- return sprintf( "%4d titles in %6.2fms (%6.2fms each)",
- count( $urls ), $pertrial * 1000.0, $pertitle * 1000.0 );
-}
-
-/**
- * Get an array of randomUrl()'s.
- * @param $length int How many urls to add to the array
- */
-function randomUrlList( $length ) {
- $list = array();
- for( $i = 0; $i < $length; $i++ ) {
- $list[] = randomUrl();
+
+ public function execute() {
+ global $wgUseSquid;
+ if( !$wgUseSquid ) {
+ $this->error( "Squid purge benchmark doesn't do much without squid support on.". true );
+ } else {
+ $this->output( "There are " . count( $wgSquidServers ) . " defined squid servers:\n" );
+ if( $this->hasOption( 'count' ) ) {
+ $lengths = array( intval( $this->getOption('count') ) );
+ } else {
+ $lengths = array( 1, 10, 100 );
+ }
+ foreach( $lengths as $length ) {
+ $urls = $this->randomUrlList( $length );
+ $trial = $this->benchSquid( $urls );
+ $this->output( $trial . "\n" );
+ }
+ }
}
- return $list;
-}
-
-/**
- * Return a random URL of the wiki. Not necessarily an actual title in the
- * database, but at least a URL that looks like one.
- */
-function randomUrl() {
- global $wgServer, $wgArticlePath;
- return $wgServer . str_replace( '$1', randomTitle(), $wgArticlePath );
-}
-
-/**
- * Create a random title string (not necessarily a Title object).
- * For use with randomUrl().
- */
-function randomTitle() {
- $str = '';
- $length = mt_rand( 1, 20 );
- for( $i = 0; $i < $length; $i++ ) {
- $str .= chr( mt_rand( ord('a'), ord('z') ) );
+
+ /**
+ * Run a bunch of URLs through SquidUpdate::purge()
+ * to benchmark Squid response times.
+ * @param $urls array A bunch of URLs to purge
+ * @param $trials int How many times to run the test?
+ */
+ private function benchSquid( $urls, $trials = 1 ) {
+ $start = wfTime();
+ for( $i = 0; $i < $trials; $i++) {
+ SquidUpdate::purge( $urls );
+ }
+ $delta = wfTime() - $start;
+ $pertrial = $delta / $trials;
+ $pertitle = $pertrial / count( $urls );
+ return sprintf( "%4d titles in %6.2fms (%6.2fms each)",
+ count( $urls ), $pertrial * 1000.0, $pertitle * 1000.0 );
}
- return ucfirst( $str );
-}
-
-if( !$wgUseSquid ) {
- wfDie( "Squid purge benchmark doesn't do much without squid support on.\n" );
-} else {
- printf( "There are %d defined squid servers:\n", count( $wgSquidServers ) );
- #echo implode( "\n", $wgSquidServers ) . "\n";
- if( isset( $options['count'] ) ) {
- $lengths = array( intval( $options['count'] ) );
- } else {
- $lengths = array( 1, 10, 100 );
+
+ /**
+ * Get an array of randomUrl()'s.
+ * @param $length int How many urls to add to the array
+ */
+ private function randomUrlList( $length ) {
+ $list = array();
+ for( $i = 0; $i < $length; $i++ ) {
+ $list[] = $this->randomUrl();
+ }
+ return $list;
}
- foreach( $lengths as $length ) {
- $urls = randomUrlList( $length );
- $trial = benchSquid( $urls );
- print "$trial\n";
+
+ /**
+ * Return a random URL of the wiki. Not necessarily an actual title in the
+ * database, but at least a URL that looks like one.
+ */
+ private function randomUrl() {
+ global $wgServer, $wgArticlePath;
+ return $wgServer . str_replace( '$1', $this->randomTitle(), $wgArticlePath );
+ }
+
+ /**
+ * Create a random title string (not necessarily a Title object).
+ * For use with randomUrl().
+ */
+ private function randomTitle() {
+ $str = '';
+ $length = mt_rand( 1, 20 );
+ for( $i = 0; $i < $length; $i++ ) {
+ $str .= chr( mt_rand( ord('a'), ord('z') ) );
+ }
+ return ucfirst( $str );
}
}
+
+$maintClass = "BenchmarkPurge";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/changePassword.php b/maintenance/changePassword.php
index 0fe8c0be..fbc3fa76 100644
--- a/maintenance/changePassword.php
+++ b/maintenance/changePassword.php
@@ -2,55 +2,51 @@
/**
* Change the password of a given user
*
- * @file
- * @ingroup Maintenance
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
*
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
* @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- */
-
-$optionsWithArgs = array( 'user', 'password' );
-require_once 'commandLine.inc';
-
-$USAGE =
- "Usage: php changePassword.php [--user=user --password=password | --help]\n" .
- "\toptions:\n" .
- "\t\t--help show this message\n" .
- "\t\t--user the username to operate on\n" .
- "\t\t--password the password to use\n";
-
-if( in_array( '--help', $argv ) )
- wfDie( $USAGE );
-
-$cp = new ChangePassword( @$options['user'], @$options['password'] );
-$cp->main();
-
-/**
* @ingroup Maintenance
*/
-class ChangePassword {
- var $dbw;
- var $user, $password;
-
- function ChangePassword( $user, $password ) {
- global $USAGE;
- if( !strlen( $user ) or !strlen( $password ) ) {
- wfDie( $USAGE );
- }
-
- $this->user = User::newFromName( $user );
- if ( !$this->user->getId() ) {
- die ( "No such user: $user\n" );
- }
- $this->password = $password;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
- $this->dbw = wfGetDB( DB_MASTER );
+class ChangePassword extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( "user", "The username to operate on", true, true );
+ $this->addOption( "password", "The password to use", true, true );
+ $this->mDescription = "Change a user's password";
}
-
- function main() {
- $this->user->setPassword( $this->password );
- $this->user->saveSettings();
+
+ public function execute() {
+ $user = User::newFromName( $this->getOption('user') );
+ if( !$user->getId() ) {
+ $this->error( "No such user: " . $this->getOption('user'), true );
+ }
+ try {
+ $user->setPassword( $this->getOption('password') );
+ $user->saveSettings();
+ $this->output( "Password set for " . $user->getName() . "\n" );
+ } catch( PasswordError $pwe ) {
+ $this->error( $pwe->getText(), true );
+ }
}
}
+
+$maintClass = "ChangePassword";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/checkAutoLoader.php b/maintenance/checkAutoLoader.php
index 554395ca..9c8f29e3 100644
--- a/maintenance/checkAutoLoader.php
+++ b/maintenance/checkAutoLoader.php
@@ -1,29 +1,57 @@
<?php
-if ( php_sapi_name() != 'cli' ) exit;
+/**
+ * Check the autoloader
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
-$IP = dirname(__FILE__) .'/..';
-require( "$IP/includes/AutoLoader.php" );
-$files = array_unique( $wgAutoloadLocalClasses );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-foreach ( $files as $file ) {
- if( function_exists( 'parsekit_compile_file' ) ){
- $parseInfo = parsekit_compile_file( "$IP/$file" );
- $classes = array_keys( $parseInfo['class_table'] );
- } else {
- $contents = file_get_contents( "$IP/$file" );
- $m = array();
- preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
- $classes = $m[1];
+class CheckAutoLoader extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "AutoLoader sanity checks";
}
- foreach ( $classes as $class ) {
- if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
- //printf( "%-50s Unlisted, in %s\n", $class, $file );
- echo " '$class' => '$file',\n";
- } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
- echo "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n";
+ public function execute() {
+ global $wgAutoloadLocalClasses, $IP;
+ $files = array_unique( $wgAutoloadLocalClasses );
+
+ foreach( $files as $file ) {
+ if( function_exists( 'parsekit_compile_file' ) ){
+ $parseInfo = parsekit_compile_file( "$IP/$file" );
+ $classes = array_keys( $parseInfo['class_table'] );
+ } else {
+ $contents = file_get_contents( "$IP/$file" );
+ $m = array();
+ preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
+ $classes = $m[1];
+ }
+ foreach ( $classes as $class ) {
+ if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
+ //printf( "%-50s Unlisted, in %s\n", $class, $file );
+ $this->output( "\t'$class' => '$file',\n" );
+ } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
+ $this->output( "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n" );
+ }
+ }
}
}
-
}
-
+$maintClass = "CheckAutoLoader";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/checkBadRedirects.php b/maintenance/checkBadRedirects.php
index 48a4b0e6..32f04f45 100644
--- a/maintenance/checkBadRedirects.php
+++ b/maintenance/checkBadRedirects.php
@@ -1,30 +1,59 @@
<?php
+/**
+ * CheckBadRedirects - See if pages marked as being redirects
+ * really are.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require "commandLine.inc";
-
-echo "Fetching redirects...\n";
-$dbr = wfGetDB( DB_SLAVE );
-$result = $dbr->select(
- array( 'page' ),
- array( 'page_namespace','page_title', 'page_latest' ),
- array( 'page_is_redirect' => 1 ) );
-
-$count = $result->numRows();
-echo "Found $count total redirects.\n";
-echo "Looking for bad redirects:\n";
-echo "\n";
+class CheckBadRedirects extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Look for bad redirects";
+ }
-foreach( $result as $row ) {
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $rev = Revision::newFromId( $row->page_latest );
- if( $rev ) {
- $target = Title::newFromRedirect( $rev->getText() );
- if( !$target ) {
- echo $title->getPrefixedText();
- echo "\n";
+ public function execute() {
+ $this->output( "Fetching redirects...\n" );
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->select(
+ array( 'page' ),
+ array( 'page_namespace','page_title', 'page_latest' ),
+ array( 'page_is_redirect' => 1 ) );
+
+ $count = $result->numRows();
+ $this->output( "Found $count total redirects.\n" .
+ "Looking for bad redirects:\n\n" );
+
+ foreach( $result as $row ) {
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $rev = Revision::newFromId( $row->page_latest );
+ if( $rev ) {
+ $target = Title::newFromRedirect( $rev->getText() );
+ if( !$target ) {
+ $this->output( $title->getPrefixedText() . "\n" );
+ }
+ }
}
+ $this->output( "\ndone.\n" );
}
}
-echo "\n";
-echo "done.\n";
+$maintClass = "CheckBadRedirects";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/checkImages.php b/maintenance/checkImages.php
index 378caa34..5dcaac28 100644
--- a/maintenance/checkImages.php
+++ b/maintenance/checkImages.php
@@ -1,51 +1,82 @@
<?php
+/**
+ * Check images to see if they exist, are readable, etc etc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require( 'commandLine.inc' );
+class CheckImages extends Maintenance {
-$batchSize = 1000;
-$start = '';
-$dbr = wfGetDB( DB_SLAVE );
-$localRepo = RepoGroup::singleton()->getLocalRepo();
-
-$numImages = 0;
-$numGood = 0;
-
-do {
- $res = $dbr->select( 'image', '*', array( 'img_name > ' . $dbr->addQuotes( $start ) ),
- 'checkImages.php', array( 'LIMIT' => $batchSize ) );
- foreach ( $res as $row ) {
- $numImages++;
- $start = $row->img_name;
- $file = $localRepo->newFileFromRow( $row );
- $path = $file->getPath();
- if ( !$path ) {
- echo "{$row->img_name}: not locally accessible\n";
- continue;
- }
- $stat = @stat( $file->getPath() );
- if ( !$stat ) {
- echo "{$row->img_name}: missing\n";
- continue;
- }
-
- if ( $stat['mode'] & 040000 ) {
- echo "{$row->img_name}: is a directory\n";
- continue;
- }
-
- if ( $stat['size'] == 0 && $row->img_size != 0 ) {
- echo "{$row->img_name}: truncated, was {$row->img_size}\n";
- continue;
- }
-
- if ( $stat['size'] != $row->img_size ) {
- echo "{$row->img_name}: size mismatch DB={$row->img_size}, actual={$stat['size']}\n";
- continue;
- }
-
- $numGood++;
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Check images to see if they exist, are readable, etc";
+ $this->setBatchSize( 1000 );
}
+
+ public function execute() {
+ $start = '';
+ $dbr = wfGetDB( DB_SLAVE );
-} while ( $res->numRows() );
+ $numImages = 0;
+ $numGood = 0;
+
+ do {
+ $res = $dbr->select( 'image', '*', array( 'img_name > ' . $dbr->addQuotes( $start ) ),
+ __METHOD__, array( 'LIMIT' => $this->mBatchSize ) );
+ foreach ( $res as $row ) {
+ $numImages++;
+ $start = $row->img_name;
+ $file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
+ $path = $file->getPath();
+ if ( !$path ) {
+ $this->output( "{$row->img_name}: not locally accessible\n" );
+ continue;
+ }
+ $stat = @stat( $file->getPath() );
+ if ( !$stat ) {
+ $this->output( "{$row->img_name}: missing\n" );
+ continue;
+ }
+
+ if ( $stat['mode'] & 040000 ) {
+ $this->output( "{$row->img_name}: is a directory\n" );
+ continue;
+ }
+
+ if ( $stat['size'] == 0 && $row->img_size != 0 ) {
+ $this->output( "{$row->img_name}: truncated, was {$row->img_size}\n" );
+ continue;
+ }
+
+ if ( $stat['size'] != $row->img_size ) {
+ $this->output( "{$row->img_name}: size mismatch DB={$row->img_size}, actual={$stat['size']}\n" );
+ continue;
+ }
+
+ $numGood++;
+ }
+
+ } while ( $res->numRows() );
+
+ $this->output( "Good images: $numGood/$numImages\n" );
+ }
+}
-echo "Good images: $numGood/$numImages\n";
+$maintClass = "CheckImages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/checkSyntax.php b/maintenance/checkSyntax.php
new file mode 100644
index 00000000..22832dce
--- /dev/null
+++ b/maintenance/checkSyntax.php
@@ -0,0 +1,296 @@
+<?php
+/**
+ * Check syntax of all PHP files in MediaWiki
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class CheckSyntax extends Maintenance {
+
+ // List of files we're going to check
+ private $mFiles = array(), $mFailures = array(), $mWarnings = array();
+ private $mIgnorePaths = array(), $mNoStyleCheckPaths = array();
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Check syntax for all PHP files in MediaWiki";
+ $this->addOption( 'with-extensions', 'Also recurse the extensions folder' );
+ $this->addOption( 'path', 'Specific path (file or directory) to check, either with absolute path or relative to the root of this MediaWiki installation',
+ false, true);
+ $this->addOption( 'list-file', 'Text file containing list of files or directories to check', false, true);
+ $this->addOption( 'modified', 'Check only files that were modified (requires SVN command-line client)' );
+ $this->addOption( 'syntax-only', 'Check for syntax validity only, skip code style warnings' );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ $this->buildFileList();
+
+ // ParseKit is broken on PHP 5.3+, disabled until this is fixed
+ $useParseKit = function_exists( 'parsekit_compile_file' ) && version_compare( PHP_VERSION, '5.3', '<' );
+
+ $str = 'Checking syntax (using ' . ( $useParseKit ?
+ 'parsekit)' : ' php -l, this can take a long time)' );
+ $this->output( $str );
+ foreach( $this->mFiles as $f ) {
+ if( $useParseKit ) {
+ $this->checkFileWithParsekit( $f );
+ } else {
+ $this->checkFileWithCli( $f );
+ }
+ if( !$this->hasOption( 'syntax-only' ) ) {
+ $this->checkForMistakes( $f );
+ }
+ }
+ $this->output( "\nDone! " . count( $this->mFiles ) . " files checked, " .
+ count( $this->mFailures ) . " failures and " . count( $this->mWarnings ) .
+ " warnings found\n" );
+ }
+
+ /**
+ * Build the list of files we'll check for syntax errors
+ */
+ private function buildFileList() {
+ global $IP;
+
+ $this->mIgnorePaths = array(
+ // Compat stuff, explodes on PHP 5.3
+ "includes/NamespaceCompat.php$",
+ "DiscussionThreading/REV",
+ );
+
+ $this->mNoStyleCheckPaths = array(
+ // Third-party code we don't care about
+ "/activemq_stomp/",
+ "EmailPage/phpMailer",
+ "FCKeditor/fckeditor/",
+ '\bphplot-',
+ "/svggraph/",
+ "\bjsmin.php$",
+ "OggHandler/PEAR/",
+ "QPoll/Excel/",
+ "/geshi/",
+ "/smarty/",
+ );
+
+ if ( $this->hasOption( 'path' ) ) {
+ $path = $this->getOption( 'path' );
+ if ( !$this->addPath( $path ) ) {
+ $this->error( "Error: can't find file or directory $path\n", true );
+ }
+ return; // process only this path
+ } elseif ( $this->hasOption( 'list-file' ) ) {
+ $file = $this->getOption( 'list-file' );
+ $f = @fopen( $file, 'r' );
+ if ( !$f ) {
+ $this->error( "Can't open file $file\n", true );
+ }
+ while( $path = trim( fgets( $f ) ) ) {
+ $this->addPath( $path );
+ }
+ fclose( $f );
+ return;
+ } elseif ( $this->hasOption( 'modified' ) ) {
+ $this->output( "Retrieving list from Subversion... " );
+ $parentDir = wfEscapeShellArg( dirname( __FILE__ ) . '/..' );
+ $output = wfShellExec( "svn status --ignore-externals $parentDir", $retval );
+ if ( $retval ) {
+ $this->error( "Error retrieving list from Subversion!\n", true );
+ } else {
+ $this->output( "done\n" );
+ }
+
+ preg_match_all( '/^\s*[AM].{7}(.*?)\r?$/m', $output, $matches );
+ foreach ( $matches[1] as $file ) {
+ if ( self::isSuitableFile( $file ) && !is_dir( $file ) ) {
+ $this->mFiles[] = $file;
+ }
+ }
+ return;
+ }
+
+ $this->output( 'Building file list...', 'listfiles' );
+
+ // Only check files in these directories.
+ // Don't just put $IP, because the recursive dir thingie goes into all subdirs
+ $dirs = array(
+ $IP . '/includes',
+ $IP . '/config',
+ $IP . '/languages',
+ $IP . '/maintenance',
+ $IP . '/skins',
+ );
+ if( $this->hasOption( 'with-extensions' ) ) {
+ $dirs[] = $IP . '/extensions';
+ }
+
+ foreach( $dirs as $d ) {
+ $this->addDirectoryContent( $d );
+ }
+
+ // Manually add two user-editable files that are usually sources of problems
+ if ( file_exists( "$IP/LocalSettings.php" ) ) {
+ $this->mFiles[] = "$IP/LocalSettings.php";
+ }
+ if ( file_exists( "$IP/AdminSettings.php" ) ) {
+ $this->mFiles[] = "$IP/AdminSettings.php";
+ }
+
+ $this->output( 'done.', 'listfiles' );
+ }
+
+ /**
+ * Returns true if $file is of a type we can check
+ */
+ private function isSuitableFile( $file ) {
+ $ext = pathinfo( $file, PATHINFO_EXTENSION );
+ if ( $ext != 'php' && $ext != 'inc' && $ext != 'php5' )
+ return false;
+ foreach( $this->mIgnorePaths as $regex ) {
+ $m = array();
+ if ( preg_match( "~{$regex}~", $file, $m ) )
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Add given path to file list, searching it in include path if needed
+ */
+ private function addPath( $path ) {
+ global $IP;
+ return $this->addFileOrDir( $path ) || $this->addFileOrDir( "$IP/$path" );
+ }
+
+ /**
+ * Add given file to file list, or, if it's a directory, add its content
+ */
+ private function addFileOrDir( $path ) {
+ if ( is_dir( $path ) ) {
+ $this->addDirectoryContent( $path );
+ } elseif ( file_exists( $path ) ) {
+ $this->mFiles[] = $path;
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Add all suitable files in given directory or its subdirectories to the file list
+ *
+ * @param $dir String: directory to process
+ */
+ private function addDirectoryContent( $dir ) {
+ $iterator = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator( $dir ),
+ RecursiveIteratorIterator::SELF_FIRST
+ );
+ foreach ( $iterator as $file ) {
+ if ( $this->isSuitableFile( $file->getRealPath() ) ) {
+ $this->mFiles[] = $file->getRealPath();
+ }
+ }
+ }
+
+ /**
+ * Check a file for syntax errors using Parsekit. Shamelessly stolen
+ * from tools/lint.php by TimStarling
+ * @param $file String Path to a file to check for syntax errors
+ * @return boolean
+ */
+ private function checkFileWithParsekit( $file ) {
+ static $okErrors = array(
+ 'Redefining already defined constructor',
+ 'Assigning the return value of new by reference is deprecated',
+ );
+ $errors = array();
+ parsekit_compile_file( $file, $errors, PARSEKIT_SIMPLE );
+ $ret = true;
+ if ( $errors ) {
+ foreach ( $errors as $error ) {
+ foreach ( $okErrors as $okError ) {
+ if ( substr( $error['errstr'], 0, strlen( $okError ) ) == $okError ) {
+ continue 2;
+ }
+ }
+ $ret = false;
+ $this->output( "Error in $file line {$error['lineno']}: {$error['errstr']}\n" );
+ $this->mFailures[$file] = $errors;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * Check a file for syntax errors using php -l
+ * @param $file String Path to a file to check for syntax errors
+ * @return boolean
+ */
+ private function checkFileWithCli( $file ) {
+ $res = exec( 'php -l ' . wfEscapeShellArg( $file ) );
+ if( strpos( $res, 'No syntax errors detected' ) === false ) {
+ $this->mFailures[$file] = $res;
+ $this->output( $res . "\n" );
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Check a file for non-fatal coding errors, such as byte-order marks in the beginning
+ * or pointless ?> closing tags at the end.
+ *
+ * @param $file String String Path to a file to check for errors
+ * @return boolean
+ */
+ private function checkForMistakes( $file ) {
+ foreach( $this->mNoStyleCheckPaths as $regex ) {
+ $m = array();
+ if ( preg_match( "~{$regex}~", $file, $m ) )
+ return;
+ }
+
+ $text = file_get_contents( $file );
+
+ $this->checkRegex( $file, $text, '/^[\s\r\n]+<\?/', 'leading whitespace' );
+ $this->checkRegex( $file, $text, '/\?>[\s\r\n]*$/', 'trailing ?>' );
+ $this->checkRegex( $file, $text, '/^[\xFF\xFE\xEF]/', 'byte-order mark' );
+ }
+
+ private function checkRegex( $file, $text, $regex, $desc ) {
+ if ( !preg_match( $regex, $text ) ) {
+ return;
+ }
+
+ if ( !isset( $this->mWarnings[$file] ) ) {
+ $this->mWarnings[$file] = array();
+ }
+ $this->mWarnings[$file][] = $desc;
+ $this->output( "Warning in file $file: $desc found.\n" );
+ }
+}
+
+$maintClass = "CheckSyntax";
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/checkUsernames.php b/maintenance/checkUsernames.php
index 77565b99..85a3d157 100644
--- a/maintenance/checkUsernames.php
+++ b/maintenance/checkUsernames.php
@@ -3,40 +3,52 @@
* This script verifies that database usernames are actually valid.
* An existing usernames can become invalid if User::isValidUserName()
* is altered or if we change the $wgMaxNameChars
- * @file
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-error_reporting(E_ALL ^ E_NOTICE);
-require_once 'commandLine.inc';
-class checkUsernames {
- var $stderr, $log;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
- function checkUsernames() {
- $this->stderr = fopen( 'php://stderr', 'wt' );
+class CheckUsernames extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Verify that database usernames are actually valid";
}
- function main() {
- $fname = 'checkUsernames::main';
+ function execute() {
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'user',
array( 'user_id', 'user_name' ),
null,
- $fname
+ __METHOD__
);
- while ( $row = $dbr->fetchObject( $res ) ) {
+ foreach ( $res as $row ) {
if ( ! User::isValidUserName( $row->user_name ) ) {
- $out = sprintf( "%s: %6d: '%s'\n", wfWikiID(), $row->user_id, $row->user_name );
- fwrite( $this->stderr, $out );
+ $this->error( sprintf( "%s: %6d: '%s'\n", wfWikiID(), $row->user_id, $row->user_name ) );
wfDebugLog( 'checkUsernames', $out );
}
}
}
}
-$cun = new checkUsernames();
-$cun->main();
-
+$maintClass = "CheckUsernames";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/cleanupCaps.php b/maintenance/cleanupCaps.php
index 46ca18d6..6a48ea83 100644
--- a/maintenance/cleanupCaps.php
+++ b/maintenance/cleanupCaps.php
@@ -24,38 +24,35 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @author Brion Vibber <brion at pobox.com>
* @ingroup maintenance
*/
-$optionsWithArgs = array( 'namespace' );
+require_once( dirname(__FILE__) . '/cleanupTable.inc' );
-require_once( 'commandLine.inc' );
-require_once( 'cleanupTable.inc' );
-
-/**
- * @ingroup Maintenance
- */
class CapsCleanup extends TableCleanup {
- function __construct( $dryrun = false, $namespace = 0 ) {
- parent::__construct( 'page', $dryrun );
- $this->namespace = intval( $namespace );
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script to cleanup capitalization";
+ $this->addOption( 'namespace', 'Namespace number to run caps cleanup on', false, true );
}
- function cleanup() {
- global $wgCapitalLinks;
- if( $wgCapitalLinks ) {
- echo "\$wgCapitalLinks is on -- no need for caps links cleanup.\n";
- return false;
- }
+ public function execute() {
+ global $wgCapitalLinks, $wgUser;
+ $this->namespace = intval( $this->getOption( 'namespace', 0 ) );
+ $this->dryrun = $this->hasOption( 'dry-run' );
+ $wgUser->setName( 'Conversion script' );
+ if( $wgCapitalLinks )
+ $this->error( "\$wgCapitalLinks is on -- no need for caps links cleanup.", true );
- $this->runTable( $this->targetTable,
- 'WHERE page_namespace=' . $this->namespace,
- array( &$this, 'processPage' ) );
+ $this->runTable( array(
+ 'table' => 'page',
+ 'conds' => array( 'page_namespace' => $this->namespace ),
+ 'index' => 'page_id',
+ 'callback' => 'processRow' ) );
}
- function processPage( $row ) {
+ protected function processRow( $row ) {
global $wgContLang;
$current = Title::makeTitle( $row->page_namespace, $row->page_title );
@@ -63,42 +60,38 @@ class CapsCleanup extends TableCleanup {
$upper = $row->page_title;
$lower = $wgContLang->lcfirst( $row->page_title );
if( $upper == $lower ) {
- $this->log( "\"$display\" already lowercase." );
+ $this->output( "\"$display\" already lowercase.\n" );
return $this->progress( 0 );
}
$target = Title::makeTitle( $row->page_namespace, $lower );
$targetDisplay = $target->getPrefixedText();
if( $target->exists() ) {
- $this->log( "\"$display\" skipped; \"$targetDisplay\" already exists" );
+ $this->output( "\"$display\" skipped; \"$targetDisplay\" already exists\n" );
return $this->progress( 0 );
}
if( $this->dryrun ) {
- $this->log( "\"$display\" -> \"$targetDisplay\": DRY RUN, NOT MOVED" );
+ $this->output( "\"$display\" -> \"$targetDisplay\": DRY RUN, NOT MOVED\n" );
$ok = true;
} else {
$ok = $current->moveTo( $target, false, 'Converting page titles to lowercase' );
- $this->log( "\"$display\" -> \"$targetDisplay\": $ok" );
+ $this->output( "\"$display\" -> \"$targetDisplay\": $ok\n" );
}
if( $ok === true ) {
$this->progress( 1 );
-
if( $row->page_namespace == $this->namespace ) {
$talk = $target->getTalkPage();
$row->page_namespace = $talk->getNamespace();
if( $talk->exists() ) {
- return $this->processPage( $row );
+ return $this->processRow( $row );
}
}
} else {
$this->progress( 0 );
}
}
-
}
-$wgUser->setName( 'Conversion script' );
-$ns = isset( $options['namespace'] ) ? $options['namespace'] : 0;
-$caps = new CapsCleanup( isset( $options['dry-run'] ), $ns );
-$caps->cleanup();
+$maintClass = "CapsCleanup";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/cleanupImages.php b/maintenance/cleanupImages.php
index 00903f22..db13f4c9 100644
--- a/maintenance/cleanupImages.php
+++ b/maintenance/cleanupImages.php
@@ -24,23 +24,26 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @author Brion Vibber <brion at pobox.com>
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-require_once( 'cleanupTable.inc' );
+require_once( dirname(__FILE__) . '/cleanupTable.inc' );
-/**
- * @ingroup Maintenance
- */
class ImageCleanup extends TableCleanup {
- function __construct( $dryrun = false ) {
- parent::__construct( 'image', $dryrun );
+ protected $defaultParams = array(
+ 'table' => 'image',
+ 'conds' => array(),
+ 'index' => 'img_name',
+ 'callback' => 'processRow',
+ );
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script to clean up broken, unparseable upload filenames";
}
- function processPage( $row ) {
+ protected function processRow( $row ) {
global $wgContLang;
$source = $row->img_name;
@@ -62,12 +65,12 @@ class ImageCleanup extends TableCleanup {
$cleaned = $wgContLang->checkTitleEncoding( $cleaned );
// Many of remainder look like non-normalized unicode
- $cleaned = UtfNormal::cleanUp( $cleaned );
+ $cleaned = $wgContLang->normalize( $cleaned );
$title = Title::makeTitleSafe( NS_FILE, $cleaned );
if( is_null( $title ) ) {
- $this->log( "page $source ($cleaned) is illegal." );
+ $this->output( "page $source ($cleaned) is illegal.\n" );
$safe = $this->buildSafeTitle( $cleaned );
if( $safe === false )
return $this->progress( 0 );
@@ -77,19 +80,19 @@ class ImageCleanup extends TableCleanup {
if( $title->getDBkey() !== $source ) {
$munged = $title->getDBkey();
- $this->log( "page $source ($munged) doesn't match self." );
+ $this->output( "page $source ($munged) doesn't match self.\n" );
$this->pokeFile( $source, $munged );
return $this->progress( 1 );
}
$this->progress( 0 );
}
-
- function killRow( $name ) {
+
+ private function killRow( $name ) {
if( $this->dryrun ) {
- $this->log( "DRY RUN: would delete bogus row '$name'" );
+ $this->output( "DRY RUN: would delete bogus row '$name'\n" );
} else {
- $this->log( "deleting bogus row '$name'" );
+ $this->output( "deleting bogus row '$name'\n" );
$db = wfGetDB( DB_MASTER );
$db->delete( 'image',
array( 'img_name' => $name ),
@@ -97,37 +100,55 @@ class ImageCleanup extends TableCleanup {
}
}
- function filePath( $name ) {
+ private function filePath( $name ) {
if ( !isset( $this->repo ) ) {
$this->repo = RepoGroup::singleton()->getLocalRepo();
}
return $this->repo->getRootDirectory() . '/' . $this->repo->getHashPath( $name ) . $name;
}
+
+ private function imageExists( $name, $db ) {
+ return $db->selectField( 'image', '1', array( 'img_name' => $name ), __METHOD__ );
+ }
+
+ private function pageExists( $name, $db ) {
+ return $db->selectField( 'page', '1', array( 'page_namespace' => NS_FILE, 'page_title' => $name ), __METHOD__ );
+ }
- function pokeFile( $orig, $new ) {
+ private function pokeFile( $orig, $new ) {
$path = $this->filePath( $orig );
if( !file_exists( $path ) ) {
- $this->log( "missing file: $path" );
+ $this->output( "missing file: $path\n" );
return $this->killRow( $orig );
}
$db = wfGetDB( DB_MASTER );
+
+ /*
+ * To prevent key collisions in the update() statements below,
+ * if the target title exists in the image table, or if both the
+ * original and target titles exist in the page table, append
+ * increasing version numbers until the target title exists in
+ * neither. (See also bug 16916.)
+ */
$version = 0;
$final = $new;
+ $conflict = ( $this->imageExists( $final, $db ) ||
+ ( $this->pageExists( $orig, $db ) && $this->pageExists( $final, $db ) ) );
- while( $db->selectField( 'image', 'img_name', array( 'img_name' => $final ), __METHOD__ ) ||
- Title::makeTitle( NS_FILE, $final )->exists() ) {
- $this->log( "Rename conflicts with '$final'..." );
+ while( $conflict ) {
+ $this->output( "Rename conflicts with '$final'...\n" );
$version++;
$final = $this->appendTitle( $new, "_$version" );
+ $conflict = ( $this->imageExists( $final, $db ) || $this->pageExists( $final, $db ) );
}
$finalPath = $this->filePath( $final );
if( $this->dryrun ) {
- $this->log( "DRY RUN: would rename $path to $finalPath" );
+ $this->output( "DRY RUN: would rename $path to $finalPath\n" );
} else {
- $this->log( "renaming $path to $finalPath" );
+ $this->output( "renaming $path to $finalPath\n" );
// XXX: should this use File::move()? FIXME?
$db->begin();
$db->update( 'image',
@@ -153,18 +174,18 @@ class ImageCleanup extends TableCleanup {
if( rename( $path, $finalPath ) ) {
$db->commit();
} else {
- $this->log( "RENAME FAILED" );
+ $this->error( "RENAME FAILED" );
$db->rollback();
}
}
}
-
- function appendTitle( $name, $suffix ) {
+
+ private function appendTitle( $name, $suffix ) {
return preg_replace( '/^(.*)(\..*?)$/',
"\\1$suffix\\2", $name );
}
-
- function buildSafeTitle( $name ) {
+
+ private function buildSafeTitle( $name ) {
global $wgLegalTitleChars;
$x = preg_replace_callback(
"/([^$wgLegalTitleChars]|~)/",
@@ -173,7 +194,7 @@ class ImageCleanup extends TableCleanup {
$test = Title::makeTitleSafe( NS_FILE, $x );
if( is_null( $test ) || $test->getDBkey() !== $x ) {
- $this->log( "Unable to generate safe title from '$name', got '$x'" );
+ $this->error( "Unable to generate safe title from '$name', got '$x'" );
return false;
}
@@ -181,8 +202,5 @@ class ImageCleanup extends TableCleanup {
}
}
-$wgUser->setName( 'Conversion script' );
-$caps = new ImageCleanup( !isset( $options['fix'] ) );
-$caps->cleanup();
-
-
+$maintClass = "ImageCleanup";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/cleanupSpam.php b/maintenance/cleanupSpam.php
index eb9bd914..e78ffe41 100644
--- a/maintenance/cleanupSpam.php
+++ b/maintenance/cleanupSpam.php
@@ -1,114 +1,133 @@
<?php
/**
- * @file
+ * Cleanup all spam from a given hostname
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-require_once( "$IP/includes/LinkFilter.php" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-function cleanupArticle( $id, $domain ) {
- $title = Title::newFromID( $id );
- if ( !$title ) {
- print "Internal error: no page for ID $id\n";
- return;
+class CleanupSpam extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Cleanup all spam from a given hostname";
+ $this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
+ $this->addArg( 'hostname', 'Hostname that was spamming' );
}
- print $title->getPrefixedDBkey() . " ...";
- $rev = Revision::newFromTitle( $title );
- $revId = $rev->getId();
- $currentRevId = $revId;
-
- while ( $rev && LinkFilter::matchEntry( $rev->getText() , $domain ) ) {
- # Revision::getPrevious can't be used in this way before MW 1.6 (Revision.php 1.26)
- #$rev = $rev->getPrevious();
- $revId = $title->getPreviousRevisionID( $revId );
- if ( $revId ) {
- $rev = Revision::newFromTitle( $title, $revId );
- } else {
- $rev = false;
+ public function execute() {
+ global $wgLocalDatabases;
+
+ $username = wfMsg( 'spambot_username' );
+ $wgUser = User::newFromName( $username );
+ // Create the user if necessary
+ if ( !$wgUser->getId() ) {
+ $wgUser->addToDatabase();
}
- }
- if ( $revId == $currentRevId ) {
- // The regex didn't match the current article text
- // This happens e.g. when a link comes from a template rather than the page itself
- print "False match\n";
- } else {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->immediateBegin();
- if ( !$rev ) {
- // Didn't find a non-spammy revision, blank the page
- print "blanking\n";
- $article = new Article( $title );
- $article->updateArticle( '', wfMsg( 'spam_blanking', $domain ),
- false, false );
+ $spec = $this->getArg();
+ $like = LinkFilter::makeLikeArray( $spec );
+ if ( !$like ) {
+ $this->error( "Not a valid hostname specification: $spec", true );
+ }
+
+ if ( $this->hasOption('all') ) {
+ // Clean up spam on all wikis
+ $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
+ $found = false;
+ foreach ( $wgLocalDatabases as $wikiID ) {
+ $dbr = wfGetDB( DB_SLAVE, array(), $wikiID );
+ $count = $dbr->selectField( 'externallinks', 'COUNT(*)',
+ array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ );
+ if ( $count ) {
+ $found = true;
+ passthru( "php cleanupSpam.php --wiki='$wikiID' $spec | sed 's/^/$wikiID: /'" );
+ }
+ }
+ if ( $found ) {
+ $this->output( "All done\n" );
+ } else {
+ $this->output( "None found\n" );
+ }
} else {
- // Revert to this revision
- print "reverting\n";
- $article = new Article( $title );
- $article->updateArticle( $rev->getText(), wfMsg( 'spam_reverting', $domain ), false, false );
+ // Clean up spam on this wiki
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'externallinks', array( 'DISTINCT el_from' ),
+ array( 'el_index' . $dbr->buildLike( $like ) ), __METHOD__ );
+ $count = $dbr->numRows( $res );
+ $this->output( "Found $count articles containing $spec\n" );
+ foreach ( $res as $row ) {
+ $this->cleanupArticle( $row->el_from, $spec );
+ }
+ if ( $count ) {
+ $this->output( "Done\n" );
+ }
}
- $dbw->immediateCommit();
- wfDoUpdates();
}
-}
-//------------------------------------------------------------------------------
-
-
-
-$username = wfMsg( 'spambot_username' );
-$fname = $username;
-$wgUser = User::newFromName( $username );
-// Create the user if necessary
-if ( !$wgUser->getId() ) {
- $wgUser->addToDatabase();
-}
-
-if ( !isset( $args[0] ) ) {
- print "Usage: php cleanupSpam.php <hostname>\n";
- exit(1);
-}
-$spec = $args[0];
-$like = LinkFilter::makeLike( $spec );
-if ( !$like ) {
- print "Not a valid hostname specification: $spec\n";
- exit(1);
-}
-
-$dbr = wfGetDB( DB_SLAVE );
-
-if ( isset($options['all']) ) {
- // Clean up spam on all wikis
- $dbr = wfGetDB( DB_SLAVE );
- print "Finding spam on " . count($wgLocalDatabases) . " wikis\n";
- $found = false;
- foreach ( $wgLocalDatabases as $db ) {
- $count = $dbr->selectField( "`$db`.externallinks", 'COUNT(*)',
- array( 'el_index LIKE ' . $dbr->addQuotes( $like ) ), $fname );
- if ( $count ) {
- $found = true;
- passthru( "php cleanupSpam.php $db $spec | sed s/^/$db: /" );
+ private function cleanupArticle( $id, $domain ) {
+ $title = Title::newFromID( $id );
+ if ( !$title ) {
+ $this->error( "Internal error: no page for ID $id" );
+ return;
+ }
+
+ $this->output( $title->getPrefixedDBkey() . " ..." );
+ $rev = Revision::newFromTitle( $title );
+ $revId = $rev->getId();
+ $currentRevId = $revId;
+
+ while ( $rev && LinkFilter::matchEntry( $rev->getText() , $domain ) ) {
+ # Revision::getPrevious can't be used in this way before MW 1.6 (Revision.php 1.26)
+ #$rev = $rev->getPrevious();
+ $revId = $title->getPreviousRevisionID( $revId );
+ if ( $revId ) {
+ $rev = Revision::newFromTitle( $title, $revId );
+ } else {
+ $rev = false;
+ }
+ }
+ if ( $revId == $currentRevId ) {
+ // The regex didn't match the current article text
+ // This happens e.g. when a link comes from a template rather than the page itself
+ $this->output( "False match\n" );
+ } else {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ if ( !$rev ) {
+ // Didn't find a non-spammy revision, blank the page
+ $this->output( "blanking\n" );
+ $article = new Article( $title );
+ $article->updateArticle( '', wfMsg( 'spam_blanking', $domain ),
+ false, false );
+
+ } else {
+ // Revert to this revision
+ $this->output( "reverting\n" );
+ $article = new Article( $title );
+ $article->updateArticle( $rev->getText(), wfMsg( 'spam_reverting', $domain ), false, false );
+ }
+ $dbw->commit();
+ wfDoUpdates();
}
- }
- if ( $found ) {
- print "All done\n";
- } else {
- print "None found\n";
- }
-} else {
- // Clean up spam on this wiki
- $res = $dbr->select( 'externallinks', array( 'DISTINCT el_from' ),
- array( 'el_index LIKE ' . $dbr->addQuotes( $like ) ), $fname );
- $count = $dbr->numRows( $res );
- print "Found $count articles containing $spec\n";
- while ( $row = $dbr->fetchObject( $res ) ) {
- cleanupArticle( $row->el_from, $spec );
- }
- if ( $count ) {
- print "Done\n";
}
}
-
+$maintClass = "CleanupSpam";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/cleanupTable.inc b/maintenance/cleanupTable.inc
index 75699c52..3549a9a1 100644
--- a/maintenance/cleanupTable.inc
+++ b/maintenance/cleanupTable.inc
@@ -1,31 +1,58 @@
<?php
-
-require_once( 'FiveUpgrade.inc' );
-
/**
+ * Generic table cleanup class. Already subclasses maintenance
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-abstract class TableCleanup extends FiveUpgrade {
- function __construct( $table, $dryrun = false ) {
- parent::__construct();
- $this->targetTable = $table;
- $this->maxLag = 10; # if slaves are lagged more than 10 secs, wait
- $this->dryrun = $dryrun;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class TableCleanup extends Maintenance {
+ protected $defaultParams = array(
+ 'table' => 'page',
+ 'conds' => array(),
+ 'index' => 'page_id',
+ 'callback' => 'processRow',
+ );
+
+ protected $dryrun = false;
+ protected $maxLag = 10; # if slaves are lagged more than 10 secs, wait
+ public $batchSize = 100;
+ public $reportInterval = 100;
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'dry-run', 'Perform a dry run' );
}
- function cleanup() {
+ public function execute() {
+ global $wgUser;
+ $wgUser->setName( 'Conversion script' );
+ $this->dryrun = $this->hasOption( 'dry-run' );
if( $this->dryrun ) {
- echo "Checking for bad titles...\n";
+ $this->output( "Checking for bad titles...\n" );
} else {
- echo "Checking and fixing bad titles...\n";
+ $this->output( "Checking and fixing bad titles...\n" );
}
- $this->runTable( $this->targetTable,
- '', //'WHERE page_namespace=0',
- array( $this, 'processPage' ) );
+ $this->runTable( $this->defaultParams );
}
- function init( $count, $table ) {
+ protected function init( $count, $table ) {
$this->processed = 0;
$this->updated = 0;
$this->count = $count;
@@ -33,10 +60,10 @@ abstract class TableCleanup extends FiveUpgrade {
$this->table = $table;
}
- function progress( $updated ) {
+ protected function progress( $updated ) {
$this->updated += $updated;
$this->processed++;
- if( $this->processed % 100 != 0 ) {
+ if( $this->processed % $this->reportInterval != 0 ) {
return;
}
$portion = $this->processed / $this->count;
@@ -47,39 +74,89 @@ abstract class TableCleanup extends FiveUpgrade {
$estimatedTotalTime = $delta / $portion;
$eta = $this->startTime + $estimatedTotalTime;
- printf( "%s %s: %6.2f%% done on %s; ETA %s [%d/%d] %.2f/sec <%.2f%% updated>\n",
- wfWikiID(),
- wfTimestamp( TS_DB, intval( $now ) ),
- $portion * 100.0,
- $this->table,
- wfTimestamp( TS_DB, intval( $eta ) ),
- $this->processed,
- $this->count,
- $this->processed / $delta,
- $updateRate * 100.0 );
+ $this->output(
+ sprintf( "%s %s: %6.2f%% done on %s; ETA %s [%d/%d] %.2f/sec <%.2f%% updated>\n",
+ wfWikiID(),
+ wfTimestamp( TS_DB, intval( $now ) ),
+ $portion * 100.0,
+ $this->table,
+ wfTimestamp( TS_DB, intval( $eta ) ),
+ $this->processed,
+ $this->count,
+ $this->processed / $delta,
+ $updateRate * 100.0
+ )
+ );
flush();
}
- function runTable( $table, $where, $callback ) {
- $count = $this->dbw->selectField( $table, 'count(*)', '', __METHOD__ );
+ public function runTable( $params ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ if ( array_diff( array_keys( $params ),
+ array( 'table', 'conds', 'index', 'callback' ) ) )
+ {
+ throw new MWException( __METHOD__.': Missing parameter ' . implode( ', ', $params ) );
+ }
+
+ $table = $params['table'];
+ $count = $dbr->selectField( $table, 'count(*)', $params['conds'], __METHOD__ );
$this->init( $count, $table );
- $this->log( "Processing $table..." );
+ $this->output( "Processing $table...\n" );
- $tableName = $this->dbr->tableName( $table );
- $sql = "SELECT * FROM $tableName $where";
- $result = $this->dbr->query( $sql, __METHOD__ );
- foreach( $result as $row ) {
- call_user_func( $callback, $row );
+ $index = (array)$params['index'];
+ $indexConds = array();
+ $options = array(
+ 'ORDER BY' => implode( ',', $index ),
+ 'LIMIT' => $this->batchSize
+ );
+ $callback = array( $this, $params['callback'] );
+
+ while ( true ) {
+ $conds = array_merge( $params['conds'], $indexConds );
+ $res = $dbr->select( $table, '*', $conds, __METHOD__, $options );
+ if ( !$res->numRows() ) {
+ // Done
+ break;
+ }
+
+ foreach ( $res as $row ) {
+ call_user_func( $callback, $row );
+ }
+
+ if ( $res->numRows() < $this->batchSize ) {
+ // Done
+ break;
+ }
+
+ // Update the conditions to select the next batch.
+ // Construct a condition string by starting with the least significant part
+ // of the index, and adding more significant parts progressively to the left
+ // of the string.
+ $nextCond = '';
+ foreach ( array_reverse( $index ) as $field ) {
+ $encValue = $dbr->addQuotes( $row->$field );
+ if ( $nextCond === '' ) {
+ $nextCond = "$field > $encValue";
+ } else {
+ $nextCond = "$field > $encValue OR ($field = $encValue AND ($nextCond))";
+ }
+ }
+ $indexConds = array( $nextCond );
}
- $this->log( "Finished $table... $this->updated of $this->processed rows updated" );
- $result->free();
+
+ $this->output( "Finished $table... $this->updated of $this->processed rows updated\n" );
}
- function hexChar( $matches ) {
+ protected function hexChar( $matches ) {
return sprintf( "\\x%02x", ord( $matches[1] ) );
}
-
- abstract function processPage( $row );
-
}
+
+class TableCleanupTest extends TableCleanup {
+ function processRow( $row ) {
+ $this->progress( mt_rand( 0, 1 ) );
+ }
+}
+
diff --git a/maintenance/cleanupTitles.php b/maintenance/cleanupTitles.php
index 4d76ac7a..ed714b2d 100644
--- a/maintenance/cleanupTitles.php
+++ b/maintenance/cleanupTitles.php
@@ -24,49 +24,47 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @author Brion Vibber <brion at pobox.com>
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-require_once( 'cleanupTable.inc' );
+require_once( dirname(__FILE__) . '/cleanupTable.inc' );
-/**
- * @ingroup Maintenance
- */
class TitleCleanup extends TableCleanup {
- function __construct( $dryrun = false ) {
- parent::__construct( 'page', $dryrun );
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script to clean up broken, unparseable titles";
}
- function processPage( $row ) {
- $current = Title::makeTitle( $row->page_namespace, $row->page_title );
- $display = $current->getPrefixedText();
-
- $verified = UtfNormal::cleanUp( $display );
-
+ protected function processRow( $row ) {
+ global $wgContLang;
+ $display = Title::makeName( $row->page_namespace, $row->page_title );
+ $verified = $wgContLang->normalize( $display );
$title = Title::newFromText( $verified );
- if( !is_null( $title ) && $title->equals( $current ) && $title->canExist() ) {
+ if( !is_null( $title )
+ && $title->canExist()
+ && $title->getNamespace() == $row->page_namespace
+ && $title->getDBkey() === $row->page_title )
+ {
return $this->progress( 0 ); // all is fine
}
if( $row->page_namespace == NS_FILE && $this->fileExists( $row->page_title ) ) {
- $this->log( "file $row->page_title needs cleanup, please run cleanupImages.php." );
+ $this->output( "file $row->page_title needs cleanup, please run cleanupImages.php.\n" );
return $this->progress( 0 );
} elseif( is_null( $title ) ) {
- $this->log( "page $row->page_id ($display) is illegal." );
+ $this->output( "page $row->page_id ($display) is illegal.\n" );
$this->moveIllegalPage( $row );
return $this->progress( 1 );
} else {
- $this->log( "page $row->page_id ($display) doesn't match self." );
+ $this->output( "page $row->page_id ($display) doesn't match self.\n" );
$this->moveInconsistentPage( $row, $title );
return $this->progress( 1 );
}
}
- function fileExists( $name ) {
+ protected function fileExists( $name ) {
// XXX: Doesn't actually check for file existence, just presence of image record.
// This is reasonable, since cleanupImages.php only iterates over the image table.
$dbr = wfGetDB( DB_SLAVE );
@@ -74,7 +72,7 @@ class TitleCleanup extends TableCleanup {
return $row !== false;
}
- function moveIllegalPage( $row ) {
+ protected function moveIllegalPage( $row ) {
$legal = 'A-Za-z0-9_/\\\\-';
$legalized = preg_replace_callback( "!([^$legal])!",
array( &$this, 'hexChar' ),
@@ -86,28 +84,28 @@ class TitleCleanup extends TableCleanup {
$title = Title::newFromText( $legalized );
if( is_null( $title ) ) {
$clean = 'Broken/id:' . $row->page_id;
- $this->log( "Couldn't legalize; form '$legalized' still invalid; using '$clean'" );
+ $this->output( "Couldn't legalize; form '$legalized' still invalid; using '$clean'\n" );
$title = Title::newFromText( $clean );
} elseif( $title->exists() ) {
$clean = 'Broken/id:' . $row->page_id;
- $this->log( "Legalized for '$legalized' exists; using '$clean'" );
+ $this->output( "Legalized for '$legalized' exists; using '$clean'\n" );
$title = Title::newFromText( $clean );
}
$dest = $title->getDBkey();
if( $this->dryrun ) {
- $this->log( "DRY RUN: would rename $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')" );
+ $this->output( "DRY RUN: would rename $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')\n" );
} else {
- $this->log( "renaming $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')" );
+ $this->output( "renaming $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')\n" );
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'page',
array( 'page_title' => $dest ),
array( 'page_id' => $row->page_id ),
- 'cleanupTitles::moveInconsistentPage' );
+ __METHOD__ );
}
}
- function moveInconsistentPage( $row, $title ) {
+ protected function moveInconsistentPage( $row, $title ) {
if( $title->exists() || $title->getInterwiki() ) {
if( $title->getInterwiki() ) {
$prior = $title->getPrefixedDbKey();
@@ -118,20 +116,20 @@ class TitleCleanup extends TableCleanup {
$verified = Title::makeTitleSafe( $row->page_namespace, $clean );
if( $verified->exists() ) {
$blah = "Broken/id:" . $row->page_id;
- $this->log( "Couldn't legalize; form '$clean' exists; using '$blah'" );
+ $this->output( "Couldn't legalize; form '$clean' exists; using '$blah'\n" );
$verified = Title::makeTitleSafe( $row->page_namespace, $blah );
}
$title = $verified;
}
if( is_null( $title ) ) {
- wfDie( "Something awry; empty title.\n" );
+ $this->error( "Something awry; empty title.", true );
}
$ns = $title->getNamespace();
$dest = $title->getDBkey();
if( $this->dryrun ) {
- $this->log( "DRY RUN: would rename $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')" );
+ $this->output( "DRY RUN: would rename $row->page_id ($row->page_namespace,'$row->page_title') to ($row->page_namespace,'$dest')\n" );
} else {
- $this->log( "renaming $row->page_id ($row->page_namespace,'$row->page_title') to ($ns,'$dest')" );
+ $this->output( "renaming $row->page_id ($row->page_namespace,'$row->page_title') to ($ns,'$dest')\n" );
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'page',
array(
@@ -139,15 +137,12 @@ class TitleCleanup extends TableCleanup {
'page_title' => $dest
),
array( 'page_id' => $row->page_id ),
- 'cleanupTitles::moveInconsistentPage' );
+ __METHOD__ );
$linkCache = LinkCache::singleton();
$linkCache->clear();
}
}
}
-$wgUser->setName( 'Conversion script' );
-$caps = new TitleCleanup( !isset( $options['fix'] ) );
-$caps->cleanup();
-
-
+$maintClass = "TitleCleanup";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/cleanupWatchlist.php b/maintenance/cleanupWatchlist.php
index bfc3a1e2..ed84b268 100644
--- a/maintenance/cleanupWatchlist.php
+++ b/maintenance/cleanupWatchlist.php
@@ -24,54 +24,64 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @author Brion Vibber <brion at pobox.com>
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-require_once( 'cleanupTable.inc' );
+require_once( dirname(__FILE__) . '/cleanupTable.inc' );
-/**
- * @ingroup Maintenance
- */
class WatchlistCleanup extends TableCleanup {
- function __construct( $dryrun = false ) {
- parent::__construct( 'watchlist', $dryrun );
+ protected $defaultParams = array(
+ 'table' => 'watchlist',
+ 'index' => array( 'wl_user', 'wl_namespace', 'wl_title' ),
+ 'conds' => array(),
+ 'callback' => 'processRow'
+ );
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script to remove broken, unparseable titles in the Watchlist";
+ $this->addOption( 'fix', 'Actually remove entries; without will only report.' );
+ }
+
+ function execute() {
+ if ( !$this->hasOption( 'fix' ) ) {
+ $this->output( "Dry run only: use --fix to enable updates\n" );
+ }
+ parent::execute();
}
- function processPage( $row ) {
+ protected function processRow( $row ) {
+ global $wgContLang;
$current = Title::makeTitle( $row->wl_namespace, $row->wl_title );
$display = $current->getPrefixedText();
-
- $verified = UtfNormal::cleanUp( $display );
-
+ $verified = $wgContLang->normalize( $display );
$title = Title::newFromText( $verified );
if( $row->wl_user == 0 || is_null( $title ) || !$title->equals( $current ) ) {
- $this->log( "invalid watch by {$row->wl_user} for ({$row->wl_namespace}, \"{$row->wl_title}\")" );
- $this->removeWatch( $row );
- return $this->progress( 1 );
+ $this->output( "invalid watch by {$row->wl_user} for ({$row->wl_namespace}, \"{$row->wl_title}\")\n" );
+ $updated = $this->removeWatch( $row );
+ $this->progress( $updated );
+ return;
}
-
$this->progress( 0 );
}
-
- function removeWatch( $row ) {
- if( !$this->dryrun ) {
+
+ private function removeWatch( $row ) {
+ if( !$this->dryrun && $this->hasOption( 'fix' ) ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'watchlist', array(
'wl_user' => $row->wl_user,
'wl_namespace' => $row->wl_namespace,
'wl_title' => $row->wl_title ),
__METHOD__ );
- $this->log( '- removed' );
+ $this->output( "- removed\n" );
+ return 1;
+ } else {
+ return 0;
}
}
}
-$wgUser->setName( 'Conversion script' );
-$caps = new WatchlistCleanup( !isset( $options['fix'] ) );
-$caps->cleanup();
-
-
+$maintClass = "WatchlistCleanup";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/clear_interwiki_cache.php b/maintenance/clear_interwiki_cache.php
index ce154779..a3510a06 100644
--- a/maintenance/clear_interwiki_cache.php
+++ b/maintenance/clear_interwiki_cache.php
@@ -1,27 +1,53 @@
<?php
/**
* This script is used to clear the interwiki links for ALL languages in
- * memcached.
+ * the cache.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @ingroup Maintenance
*/
-/** */
-require_once('commandLine.inc');
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$dbr = wfGetDB( DB_SLAVE );
-$res = $dbr->select( 'interwiki', array( 'iw_prefix' ), false );
-$prefixes = array();
-while ( $row = $dbr->fetchObject( $res ) ) {
- $prefixes[] = $row->iw_prefix;
-}
+class ClearInterwikiCache extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Clear all interwiki links for all languages from the cache";
+ }
+
+ public function execute() {
+ global $wgLocalDatabases, $wgMemc;
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'interwiki', array( 'iw_prefix' ), false );
+ $prefixes = array();
+ foreach ( $res as $row ) {
+ $prefixes[] = $row->iw_prefix;
+ }
-foreach ( $wgLocalDatabases as $db ) {
- print "$db ";
- foreach ( $prefixes as $prefix ) {
- $wgMemc->delete("$db:interwiki:$prefix");
+ foreach ( $wgLocalDatabases as $db ) {
+ $this->output( "$db..." );
+ foreach ( $prefixes as $prefix ) {
+ $wgMemc->delete("$db:interwiki:$prefix");
+ }
+ $this->output( "done\n" );
+ }
}
}
-print "\n";
+$maintClass = "ClearInterwikiCache";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/clear_stats.php b/maintenance/clear_stats.php
index 4cacd74c..6a6a4981 100644
--- a/maintenance/clear_stats.php
+++ b/maintenance/clear_stats.php
@@ -1,38 +1,53 @@
<?php
/**
- * This script remove all statistics tracking from memcached
+ * This script remove all statistics tracking from the cache
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once('commandLine.inc');
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-foreach ( $wgLocalDatabases as $db ) {
- noisyDelete("$db:stats:request_with_session");
- noisyDelete("$db:stats:request_without_session");
- noisyDelete("$db:stats:pcache_hit");
- noisyDelete("$db:stats:pcache_miss_invalid");
- noisyDelete("$db:stats:pcache_miss_expired");
- noisyDelete("$db:stats:pcache_miss_absent");
- noisyDelete("$db:stats:pcache_miss_stub");
- noisyDelete("$db:stats:image_cache_hit");
- noisyDelete("$db:stats:image_cache_miss");
- noisyDelete("$db:stats:image_cache_update");
- noisyDelete("$db:stats:diff_cache_hit");
- noisyDelete("$db:stats:diff_cache_miss");
- noisyDelete("$db:stats:diff_uncacheable");
-}
+class clear_stats extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Remove all statistics tracking from the cache";
+ }
-function noisyDelete( $key ) {
- global $wgMemc;
- /*
- print "$key ";
- if ( $wgMemc->delete($key) ) {
- print "deleted\n";
- } else {
- print "FAILED\n";
- }*/
- $wgMemc->delete($key);
+ public function execute() {
+ global $wgLocalDatabases, $wgMemc;
+ foreach ( $wgLocalDatabases as $db ) {
+ $wgMemc->delete("$db:stats:request_with_session");
+ $wgMemc->delete("$db:stats:request_without_session");
+ $wgMemc->delete("$db:stats:pcache_hit");
+ $wgMemc->delete("$db:stats:pcache_miss_invalid");
+ $wgMemc->delete("$db:stats:pcache_miss_expired");
+ $wgMemc->delete("$db:stats:pcache_miss_absent");
+ $wgMemc->delete("$db:stats:pcache_miss_stub");
+ $wgMemc->delete("$db:stats:image_cache_hit");
+ $wgMemc->delete("$db:stats:image_cache_miss");
+ $wgMemc->delete("$db:stats:image_cache_update");
+ $wgMemc->delete("$db:stats:diff_cache_hit");
+ $wgMemc->delete("$db:stats:diff_cache_miss");
+ $wgMemc->delete("$db:stats:diff_uncacheable");
+ }
+ }
}
+$maintClass = "clear_stats";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/commandLine.inc b/maintenance/commandLine.inc
index e83a1916..332527ba 100644
--- a/maintenance/commandLine.inc
+++ b/maintenance/commandLine.inc
@@ -1,261 +1,46 @@
<?php
+
/**
- * @file
- * @todo document
- * @ingroup Maintenance
- * @defgroup Maintenance Maintenance
+ * Backwards-compatibility wrapper for old-style maintenance scripts
*/
-
-$wgRequestTime = microtime(true);
-
-/** */
-# Abort if called from a web server
-if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
- print "This script must be run from the command line\n";
- exit();
-}
-
-if( version_compare( PHP_VERSION, '5.0.0' ) < 0 ) {
- print "Sorry! This version of MediaWiki requires PHP 5; you are running " .
- PHP_VERSION . ".\n\n" .
- "If you are sure you already have PHP 5 installed, it may be " .
- "installed\n" .
- "in a different path from PHP 4. Check with your system administrator.\n";
- die( -1 );
-}
-
-define('MEDIAWIKI',true);
-
-# Process command line arguments
-# $options becomes an array with keys set to the option names
-# $optionsWithArgs is an array of GNU-style options that take an argument. The arguments are returned
-# in the values of $options.
-# $args becomes a zero-based array containing the non-option arguments
+require( dirname(__FILE__) . '/Maintenance.php' );
if ( !isset( $optionsWithArgs ) ) {
- $optionsWithArgs = array();
+ $optionsWithArgs = array();
}
-$optionsWithArgs[] = 'conf'; # For specifying the location of LocalSettings.php
-$optionsWithArgs[] = 'aconf'; # As above for AdminSettings.php
-$optionsWithArgs[] = 'wiki'; # For specifying the wiki ID
-
-$self = array_shift( $argv );
-$IP = strval( getenv('MW_INSTALL_PATH') ) !== ''
- ? getenv('MW_INSTALL_PATH')
- : realpath( dirname( __FILE__ ) . '/..' );
-#chdir( $IP );
-require_once( "$IP/StartProfiler.php" );
-$options = array();
-$args = array();
-
-
-# Parse arguments
-for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
- if ( $arg == '--' ) {
- # End of options, remainder should be considered arguments
- $arg = next( $argv );
- while( $arg !== false ) {
- $args[] = $arg;
- $arg = next( $argv );
- }
- break;
- } elseif ( substr( $arg, 0, 2 ) == '--' ) {
- # Long options
- $option = substr( $arg, 2 );
- if ( in_array( $option, $optionsWithArgs ) ) {
- $param = next( $argv );
- if ( $param === false ) {
- echo "$arg needs a value after it\n";
- die( -1 );
- }
- $options[$option] = $param;
- } else {
- $bits = explode( '=', $option, 2 );
- if( count( $bits ) > 1 ) {
- $option = $bits[0];
- $param = $bits[1];
- } else {
- $param = 1;
- }
- $options[$option] = $param;
+class CommandLineInc extends Maintenance {
+ public function __construct() {
+ global $optionsWithArgs;
+ parent::__construct();
+ foreach ( $optionsWithArgs as $name ) {
+ $this->addOption( $name, '', false, true );
}
- } elseif ( substr( $arg, 0, 1 ) == '-' ) {
- # Short options
- for ( $p=1; $p<strlen( $arg ); $p++ ) {
- $option = $arg{$p};
- if ( in_array( $option, $optionsWithArgs ) ) {
- $param = next( $argv );
- if ( $param === false ) {
- echo "$arg needs a value after it\n";
- die( -1 );
- }
- $options[$option] = $param;
- } else {
- $options[$option] = 1;
- }
- }
- } else {
- $args[] = $arg;
}
-}
-
-
-# General initialisation
-
-$wgCommandLineMode = true;
-# Turn off output buffering if it's on
-@ob_end_flush();
-$sep = PATH_SEPARATOR;
-
-if (!isset( $wgUseNormalUser ) ) {
- $wgUseNormalUser = false;
-}
-
-if ( file_exists( dirname(__FILE__).'/wikimedia-mode' ) ) {
- $wgWikiFarm = true;
- $cluster = 'pmtpa';
- require_once( "$IP/includes/AutoLoader.php" );
- require_once( "$IP/includes/SiteConfiguration.php" );
-
- # Get $wgConf
- require( "$IP/wgConf.php" );
- if ( empty( $wgNoDBParam ) ) {
- # Check if we were passed a db name
- if ( isset( $options['wiki'] ) ) {
- $db = $options['wiki'];
- } else {
- $db = array_shift( $args );
- }
- list( $site, $lang ) = $wgConf->siteFromDB( $db );
+ public function getDbType() {
+ global $wgUseNormalUser;
- # If not, work out the language and site the old way
- if ( is_null( $site ) || is_null( $lang ) ) {
- if ( !$db ) {
- $lang = 'aa';
- } else {
- $lang = $db;
- }
- if ( isset( $args[0] ) ) {
- $site = array_shift( $args );
- } else {
- $site = 'wikipedia';
- }
- }
- } else {
- $lang = 'aa';
- $site = 'wikipedia';
+ return ( isset( $wgUseNormalUser ) && $wgUseNormalUser ) ?
+ Maintenance::DB_STD : Maintenance::DB_ADMIN;
}
- # This is for the IRC scripts, which now run as the apache user
- # The apache user doesn't have access to the wikiadmin_pass command
- if ( $_ENV['USER'] == 'apache' ) {
- #if ( posix_geteuid() == 48 ) {
- $wgUseNormalUser = true;
+ /**
+ * No help, it would just be misleading since it misses custom options
+ */
+ protected function maybeHelp( $force = false ) {
+ if ( !$force )
+ return;
+ parent::maybeHelp( true );
}
- putenv( 'wikilang='.$lang);
-
- $DP = $IP;
- ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
-
- if ( $lang == 'test' && $site == 'wikipedia' ) {
- define( 'TESTWIKI', 1 );
- }
-
- #require_once( $IP.'/includes/ProfilerStub.php' );
- require( $IP.'/includes/Defines.php' );
- require( $IP.'/CommonSettings.php' );
- if ( !$wgUseNormalUser ) {
- require( $IP.'/AdminSettings.php' );
- }
-} else {
- $wgWikiFarm = false;
- if ( isset( $options['conf'] ) ) {
- $settingsFile = $options['conf'];
- } else {
- $settingsFile = "$IP/LocalSettings.php";
- }
- if ( isset( $options['wiki'] ) ) {
- $bits = explode( '-', $options['wiki'] );
- if ( count( $bits ) == 1 ) {
- $bits[] = '';
- }
- define( 'MW_DB', $bits[0] );
- define( 'MW_PREFIX', $bits[1] );
- }
-
- if ( ! is_readable( $settingsFile ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist and be readable in the source directory.\n";
- exit( 1 );
- }
- $wgCommandLineMode = true;
- $DP = $IP;
- require_once( "$IP/includes/AutoLoader.php" );
- #require_once( $IP.'/includes/ProfilerStub.php' );
- require_once( $IP.'/includes/Defines.php' );
- require_once( $settingsFile );
- /* ini_set( 'include_path', ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" ); */
-
- $adminSettings = isset( $options['aconf'] )
- ? $options['aconf']
- : "{$IP}/AdminSettings.php";
- if( is_readable( $adminSettings ) )
- require_once( $adminSettings );
-
-}
-
-# Turn off output buffering again, it might have been turned on in the settings files
-if( ob_get_level() ) {
- ob_end_flush();
-}
-# Same with these
-$wgCommandLineMode = true;
-
-if ( empty( $wgUseNormalUser ) && isset( $wgDBadminuser ) ) {
- $wgDBuser = $wgDBadminuser;
- $wgDBpassword = $wgDBadminpassword;
-
- if( $wgDBservers ) {
- foreach ( $wgDBservers as $i => $server ) {
- $wgDBservers[$i]['user'] = $wgDBuser;
- $wgDBservers[$i]['password'] = $wgDBpassword;
- }
- }
- if( isset( $wgLBFactoryConf['serverTemplate'] ) ) {
- $wgLBFactoryConf['serverTemplate']['user'] = $wgDBuser;
- $wgLBFactoryConf['serverTemplate']['password'] = $wgDBpassword;
- }
-}
-
-if ( defined( 'MW_CMDLINE_CALLBACK' ) ) {
- $fn = MW_CMDLINE_CALLBACK;
- $fn();
-}
-
-ini_set( 'memory_limit', -1 );
-
-if( version_compare( phpversion(), '5.2.4' ) >= 0 ) {
- // Send PHP warnings and errors to stderr instead of stdout.
- // This aids in diagnosing problems, while keeping messages
- // out of redirected output.
- if( ini_get( 'display_errors' ) ) {
- ini_set( 'display_errors', 'stderr' );
+ public function execute() {
+ global $args, $options;
+ $args = $this->mArgs;
+ $options = $this->mOptions;
}
-
- // Don't touch the setting on earlier versions of PHP,
- // as setting it would disable output if you'd wanted it.
-
- // Note that exceptions are also sent to stderr when
- // command-line mode is on, regardless of PHP version.
}
-$wgShowSQLErrors = true;
-require_once( "$IP/includes/Setup.php" );
-require_once( "$IP/install-utils.inc" );
-$wgTitle = null; # Much much faster startup than creating a title object
-@set_time_limit(0);
+$maintClass = 'CommandLineInc';
+require( DO_MAINTENANCE );
-$wgProfiling = false; // only for Profiler.php mode; avoids OOM errors
diff --git a/maintenance/convertLinks.inc b/maintenance/convertLinks.inc
index 4aff81ed..7c7b8aff 100644
--- a/maintenance/convertLinks.inc
+++ b/maintenance/convertLinks.inc
@@ -45,8 +45,10 @@ function convertLinks() {
$dbw = wfGetDB( DB_MASTER );
list ($cur, $links, $links_temp, $links_backup) = $dbw->tableNamesN( 'cur', 'links', 'links_temp', 'links_backup' );
-
- $res = $dbw->query( "SELECT l_from FROM $links LIMIT 1" );
+
+ // Get database-agnostic limit clause
+ $sql_limit = $dbw->limitResult( "SELECT l_from FROM $links", 1 );
+ $res = $dbw->query( $sql_limit );
if ( $dbw->fieldType( $res, 0 ) == "int" ) {
wfOut( "Schema already converted\n" );
return;
diff --git a/maintenance/convertLinks.php b/maintenance/convertLinks.php
index e86d1e7c..415662a0 100644
--- a/maintenance/convertLinks.php
+++ b/maintenance/convertLinks.php
@@ -3,12 +3,241 @@
* Convert from the old links schema (string->ID) to the new schema (ID->ID)
* The wiki should be put into read-only mode while this script executes
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-/** */
-require_once( "commandLine.inc" );
-require_once( "convertLinks.inc" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class ConvertLinks extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Convert from the old links schema (string->ID) to the new schema (ID->ID)
+The wiki should be put into read-only mode while this script executes";
+ }
+
+ public function execute() {
+ global $wgDBtype;
+ if( $wgDBtype == 'postgres' ) {
+ $this->output( "Links table already ok on Postgres.\n" );
+ return;
+ }
+
+ $this->output( "Converting links table to ID-ID...\n" );
+
+ global $wgLang, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
+ global $noKeys, $logPerformance, $fh;
+
+ $tuplesAdded = $numBadLinks = $curRowsRead = 0; #counters etc
+ $totalTuplesInserted = 0; # total tuples INSERTed into links_temp
+
+ $reportCurReadProgress = true; #whether or not to give progress reports while reading IDs from cur table
+ $curReadReportInterval = 1000; #number of rows between progress reports
+
+ $reportLinksConvProgress = true; #whether or not to give progress reports during conversion
+ $linksConvInsertInterval = 1000; #number of rows per INSERT
+
+ $initialRowOffset = 0;
+ #$finalRowOffset = 0; # not used yet; highest row number from links table to process
+
+ # Overwrite the old links table with the new one. If this is set to false,
+ # the new table will be left at links_temp.
+ $overwriteLinksTable = true;
+
+ # Don't create keys, and so allow duplicates in the new links table.
+ # This gives a huge speed improvement for very large links tables which are MyISAM. (What about InnoDB?)
+ $noKeys = false;
+
+
+ $logPerformance = false; # output performance data to a file
+ $perfLogFilename = "convLinksPerf.txt";
+ #--------------------------------------------------------------------
+
+ $dbw = wfGetDB( DB_MASTER );
+ list ($cur, $links, $links_temp, $links_backup) = $dbw->tableNamesN( 'cur', 'links', 'links_temp', 'links_backup' );
+
+ $res = $dbw->query( "SELECT l_from FROM $links LIMIT 1" );
+ if ( $dbw->fieldType( $res, 0 ) == "int" ) {
+ $this->output( "Schema already converted\n" );
+ return;
+ }
+
+ $res = $dbw->query( "SELECT COUNT(*) AS count FROM $links" );
+ $row = $dbw->fetchObject($res);
+ $numRows = $row->count;
+ $dbw->freeResult( $res );
+
+ if ( $numRows == 0 ) {
+ $this->output( "Updating schema (no rows to convert)...\n" );
+ $this->createTempTable();
+ } else {
+ if ( $logPerformance ) { $fh = fopen ( $perfLogFilename, "w" ); }
+ $baseTime = $startTime = $this->getMicroTime();
+ # Create a title -> cur_id map
+ $this->output( "Loading IDs from $cur table...\n" );
+ $this->performanceLog ( "Reading $numRows rows from cur table...\n" );
+ $this->performanceLog ( "rows read vs seconds elapsed:\n" );
+
+ $dbw->bufferResults( false );
+ $res = $dbw->query( "SELECT cur_namespace,cur_title,cur_id FROM $cur" );
+ $ids = array();
+
+ while ( $row = $dbw->fetchObject( $res ) ) {
+ $title = $row->cur_title;
+ if ( $row->cur_namespace ) {
+ $title = $wgLang->getNsText( $row->cur_namespace ) . ":$title";
+ }
+ $ids[$title] = $row->cur_id;
+ $curRowsRead++;
+ if ($reportCurReadProgress) {
+ if (($curRowsRead % $curReadReportInterval) == 0) {
+ $this->performanceLog( $curRowsRead . " " . ($this->getMicroTime() - $baseTime) . "\n" );
+ $this->output( "\t$curRowsRead rows of $cur table read.\n" );
+ }
+ }
+ }
+ $dbw->freeResult( $res );
+ $dbw->bufferResults( true );
+ $this->output( "Finished loading IDs.\n\n" );
+ $this->performanceLog( "Took " . ($this->getMicroTime() - $baseTime) . " seconds to load IDs.\n\n" );
+ #--------------------------------------------------------------------
+
+ # Now, step through the links table (in chunks of $linksConvInsertInterval rows),
+ # convert, and write to the new table.
+ $this->createTempTable();
+ $this->performanceLog( "Resetting timer.\n\n" );
+ $baseTime = $this->getMicroTime();
+ $this->output( "Processing $numRows rows from $links table...\n" );
+ $this->performanceLog( "Processing $numRows rows from $links table...\n" );
+ $this->performanceLog( "rows inserted vs seconds elapsed:\n" );
+
+ for ($rowOffset = $initialRowOffset; $rowOffset < $numRows; $rowOffset += $linksConvInsertInterval) {
+ $sqlRead = "SELECT * FROM $links ";
+ $sqlRead = $dbw->limitResult($sqlRead, $linksConvInsertInterval,$rowOffset);
+ $res = $dbw->query($sqlRead);
+ if ( $noKeys ) {
+ $sqlWrite = array("INSERT INTO $links_temp (l_from,l_to) VALUES ");
+ } else {
+ $sqlWrite = array("INSERT IGNORE INTO $links_temp (l_from,l_to) VALUES ");
+ }
+
+ $tuplesAdded = 0; # no tuples added to INSERT yet
+ while ( $row = $dbw->fetchObject($res) ) {
+ $fromTitle = $row->l_from;
+ if ( array_key_exists( $fromTitle, $ids ) ) { # valid title
+ $from = $ids[$fromTitle];
+ $to = $row->l_to;
+ if ( $tuplesAdded != 0 ) {
+ $sqlWrite[] = ",";
+ }
+ $sqlWrite[] = "($from,$to)";
+ $tuplesAdded++;
+ } else { # invalid title
+ $numBadLinks++;
+ }
+ }
+ $dbw->freeResult($res);
+ #$this->output( "rowOffset: $rowOffset\ttuplesAdded: $tuplesAdded\tnumBadLinks: $numBadLinks\n" );
+ if ( $tuplesAdded != 0 ) {
+ if ($reportLinksConvProgress) {
+ $this->output( "Inserting $tuplesAdded tuples into $links_temp..." );
+ }
+ $dbw->query( implode("",$sqlWrite) );
+ $totalTuplesInserted += $tuplesAdded;
+ if ($reportLinksConvProgress)
+ $this->output( " done. Total $totalTuplesInserted tuples inserted.\n" );
+ $this->performanceLog( $totalTuplesInserted . " " . ($this->getMicroTime() - $baseTime) . "\n" );
+ }
+ }
+ $this->output( "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n\n" );
+ $this->performanceLog( "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n" );
+ $this->performanceLog( "Total execution time: " . ($this->getMicroTime() - $startTime) . " seconds.\n" );
+ if ( $logPerformance ) { fclose ( $fh ); }
+ }
+ #--------------------------------------------------------------------
+
+ if ( $overwriteLinksTable ) {
+ $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
+ if (!($dbConn->isOpen())) {
+ $this->output( "Opening connection to database failed.\n" );
+ return;
+ }
+ # Check for existing links_backup, and delete it if it exists.
+ $this->output( "Dropping backup links table if it exists..." );
+ $dbConn->query( "DROP TABLE IF EXISTS $links_backup", DB_MASTER);
+ $this->output( " done.\n" );
+
+ # Swap in the new table, and move old links table to links_backup
+ $this->output( "Swapping tables '$links' to '$links_backup'; '$links_temp' to '$links'..." );
+ $dbConn->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", DB_MASTER );
+ $this->output( " done.\n\n" );
+
+ $dbConn->close();
+ $this->output( "Conversion complete. The old table remains at $links_backup;\n" );
+ $this->output( "delete at your leisure.\n" );
+ } else {
+ $this->output( "Conversion complete. The converted table is at $links_temp;\n" );
+ $this->output( "the original links table is unchanged.\n" );
+ }
+ }
+
+ private function createTempTable() {
+ global $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
+ global $noKeys;
+ $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
+
+ if (!($dbConn->isOpen())) {
+ $this->output( "Opening connection to database failed.\n" );
+ return;
+ }
+ $links_temp = $dbConn->tableName( 'links_temp' );
+
+ $this->output( "Dropping temporary links table if it exists..." );
+ $dbConn->query( "DROP TABLE IF EXISTS $links_temp");
+ $this->output( " done.\n" );
+
+ $this->output( "Creating temporary links table..." );
+ if ( $noKeys ) {
+ $dbConn->query( "CREATE TABLE $links_temp ( " .
+ "l_from int(8) unsigned NOT NULL default '0', " .
+ "l_to int(8) unsigned NOT NULL default '0')");
+ } else {
+ $dbConn->query( "CREATE TABLE $links_temp ( " .
+ "l_from int(8) unsigned NOT NULL default '0', " .
+ "l_to int(8) unsigned NOT NULL default '0', " .
+ "UNIQUE KEY l_from(l_from,l_to), " .
+ "KEY (l_to))");
+ }
+ $this->output( " done.\n\n" );
+ }
+
+ private function performanceLog( $text ) {
+ global $logPerformance, $fh;
+ if ( $logPerformance ) {
+ fwrite( $fh, $text );
+ }
+ }
+
+ private function getMicroTime() { # return time in seconds, with microsecond accuracy
+ list($usec, $sec) = explode(" ", microtime());
+ return ((float)$usec + (float)$sec);
+ }
+}
-convertLinks();
+$maintClass = "ConvertLinks";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/convertUserOptions.php b/maintenance/convertUserOptions.php
new file mode 100644
index 00000000..657a82c1
--- /dev/null
+++ b/maintenance/convertUserOptions.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Do each user sequentially, since accounts can't be deleted
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class ConvertUserOptions extends Maintenance {
+
+ private $mConversionCount = 0;
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Convert user options from old to new system";
+ }
+
+ public function execute() {
+ $this->output( "Beginning batch conversion of user options.\n" );
+ $id = 0;
+ $dbw = wfGetDB( DB_MASTER );
+
+ while ($id !== null) {
+ $idCond = 'user_id>'.$dbw->addQuotes( $id );
+ $optCond = "user_options!=".$dbw->addQuotes( '' ); // For compatibility
+ $res = $dbw->select( 'user', '*',
+ array( $optCond, $idCond ), __METHOD__,
+ array( 'LIMIT' => 50, 'FOR UPDATE' ) );
+ $id = $this->convertOptionBatch( $res, $dbw );
+ $dbw->commit();
+
+ wfWaitForSlaves( 1 );
+
+ if ($id)
+ $this->output( "--Converted to ID $id\n" );
+ }
+ $this->output( "Conversion done. Converted " . $this->mConversionCount . " user records.\n" );
+ }
+
+ function convertOptionBatch( $res, $dbw ) {
+ $id = null;
+ foreach ( $res as $row ) {
+ $this->mConversionCount++;
+
+ $u = User::newFromRow( $row );
+
+ $u->saveSettings();
+ $id = $row->user_id;
+ }
+
+ return $id;
+ }
+}
+
+$maintClass = "ConvertUserOptions";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/counter.php b/maintenance/counter.php
deleted file mode 100644
index 67575ec1..00000000
--- a/maintenance/counter.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/**
- * Helper file for update.php
- *
- * @file
- * @ingroup Maintenance
- */
-
-function print_c($last, $current) {
- echo str_repeat( chr(8), strlen( $last ) ) . $current;
-}
-
diff --git a/maintenance/createAndPromote.php b/maintenance/createAndPromote.php
index a5a8f88d..391d1226 100644
--- a/maintenance/createAndPromote.php
+++ b/maintenance/createAndPromote.php
@@ -3,66 +3,73 @@
/**
* Maintenance script to create an account and grant it administrator rights
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-$options = array( 'help', 'bureaucrat' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( isset( $options['help'] ) ) {
- showHelp();
- exit( 1 );
-}
+class CreateAndPromote extends Maintenance {
-if( count( $args ) < 2 ) {
- echo( "Please provide a username and password for the new account.\n" );
- die( 1 );
-}
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Create a new user account with administrator rights";
+ $this->addOption( "bureaucrat", "Grant the account bureaucrat rights" );
+ $this->addArg( "username", "Username of new user" );
+ $this->addArg( "password", "Password to set" );
+ }
-$username = $args[0];
-$password = $args[1];
+ public function execute() {
+ $username = $this->getArg(0);
+ $password = $this->getArg(1);
+
+ $this->output( wfWikiID() . ": Creating and promoting User:{$username}..." );
+
+ $user = User::newFromName( $username );
+ if( !is_object( $user ) ) {
+ $this->error( "invalid username.", true );
+ } elseif( 0 != $user->idForName() ) {
+ $this->error( "account exists.", true );
+ }
-echo( wfWikiID() . ": Creating and promoting User:{$username}..." );
+ # Try to set the password
+ try {
+ $user->setPassword( $password );
+ } catch( PasswordError $pwe ) {
+ $this->error( $pwe->getText(), true );
+ }
-# Validate username and check it doesn't exist
-$user = User::newFromName( $username );
-if( !is_object( $user ) ) {
- echo( "invalid username.\n" );
- die( 1 );
-} elseif( 0 != $user->idForName() ) {
- echo( "account exists.\n" );
- die( 1 );
+ # Insert the account into the database
+ $user->addToDatabase();
+ $user->saveSettings();
+
+ # Promote user
+ $user->addGroup( 'sysop' );
+ if( $this->hasOption( 'bureaucrat' ) )
+ $user->addGroup( 'bureaucrat' );
+
+ # Increment site_stats.ss_users
+ $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
+ $ssu->doUpdate();
+
+ $this->output( "done.\n" );
+ }
}
-# Insert the account into the database
-$user->addToDatabase();
-$user->setPassword( $password );
-$user->saveSettings();
-
-# Promote user
-$user->addGroup( 'sysop' );
-if( isset( $option['bureaucrat'] ) )
- $user->addGroup( 'bureaucrat' );
-
-# Increment site_stats.ss_users
-$ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
-$ssu->doUpdate();
-
-echo( "done.\n" );
-
-function showHelp() {
- echo( <<<EOT
-Create a new user account with administrator rights
-
-USAGE: php createAndPromote.php [--bureaucrat|--help] <username> <password>
-
- --bureaucrat
- Grant the account bureaucrat rights
- --help
- Show this help information
-
-EOT
- );
-} \ No newline at end of file
+$maintClass = "CreateAndPromote";
+require_once( DO_MAINTENANCE ); \ No newline at end of file
diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc
deleted file mode 100644
index da1c14d5..00000000
--- a/maintenance/deleteArchivedFiles.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/**
- * Support functions for the deleteArchivedFiles script
- *
- * @file
- * @ingroup Maintenance
- * @author Aaron Schulz
- */
-
-require_once( "$IP/includes/FileStore.php" );
-require_once( "$IP/includes/filerepo/File.php" );
-
-function DeleteArchivedFiles( $delete = false ) {
-
- # Data should come off the master, wrapped in a transaction
- $dbw = wfGetDB( DB_MASTER );
-
- $transaction = new FSTransaction();
- if( !FileStore::lock() ) {
- wfDebug( __METHOD__.": failed to acquire file store lock, aborting\n" );
- return false;
- }
-
- $tbl_arch = $dbw->tableName( 'filearchive' );
-
- # Get "active" revisions from the filearchive table
- echo( "Searching for and deleting archived files...\n" );
- $res = $dbw->query( "SELECT fa_id,fa_storage_group,fa_storage_key FROM $tbl_arch" );
- while( $row = $dbw->fetchObject( $res ) ) {
- $key = $row->fa_storage_key;
- $group = $row->fa_storage_group;
- $id = $row->fa_id;
-
- $store = FileStore::get( $group );
- if( $store ) {
- $path = $store->filePath( $key );
- $sha1 = substr( $key, 0, strcspn( $key, '.' ) );
- $inuse = $dbw->selectField( 'oldimage', '1',
- array( 'oi_sha1' => $sha1,
- 'oi_deleted & '.File::DELETED_FILE => File::DELETED_FILE ),
- __METHOD__, array( 'FOR UPDATE' ) );
- if ( $path && file_exists($path) && !$inuse ) {
- $transaction->addCommit( FSTransaction::DELETE_FILE, $path );
- $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" );
- } else {
- echo( "Notice - file '$key' not found in group '$group'\n" );
- }
- } else {
- echo( "Notice - invalid file storage group '$group' for file '$key'\n" );
- }
- }
- echo( "done.\n" );
-
- $transaction->commit();
-}
diff --git a/maintenance/deleteArchivedFiles.php b/maintenance/deleteArchivedFiles.php
index 97dc5824..af4bbb74 100644
--- a/maintenance/deleteArchivedFiles.php
+++ b/maintenance/deleteArchivedFiles.php
@@ -3,29 +3,80 @@
/**
* Delete archived (non-current) files from the database
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Aaron Schulz
* Based on deleteOldRevisions.php by Rob Church
*/
-$options = array( 'delete', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'deleteArchivedFiles.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-echo( "Delete Archived Images\n\n" );
-
-if( @$options['help'] ) {
- ShowUsage();
-} else {
- DeleteArchivedFiles( @$options['delete'] );
-}
+class DeleteArchivedFiles extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Deletes all archived images.";
+ $this->addOption( 'delete', 'Perform the deletion' );
+ $this->addOption( 'force', 'Force deletion of rows from filearchive' );
+ }
-function ShowUsage() {
- echo( "Deletes all archived images.\n\n" );
- echo( "These images will no longer be restorable.\n\n" );
- echo( "Usage: php deleteArchivedRevisions.php [--delete|--help]\n\n" );
- echo( "delete : Performs the deletion\n" );
- echo( " help : Show this usage information\n" );
+ public function execute() {
+ if( !$this->hasOption('delete') ) {
+ $this->output( "Use --delete to actually confirm this script\n" );
+ return;
+ }
+ $force = $this->hasOption( 'force' );
+ # Data should come off the master, wrapped in a transaction
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ $tbl_arch = $dbw->tableName( 'filearchive' );
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ # Get "active" revisions from the filearchive table
+ $this->output( "Searching for and deleting archived files...\n" );
+ $res = $dbw->query( "SELECT fa_id,fa_storage_group,fa_storage_key FROM $tbl_arch" );
+ $count = 0;
+ foreach( $res as $row ) {
+ $key = $row->fa_storage_key;
+ $group = $row->fa_storage_group;
+ $id = $row->fa_id;
+ $path = $repo->getZonePath( 'deleted' ).'/'.$repo->getDeletedHashPath($key).$key;
+ $sha1 = substr( $key, 0, strcspn( $key, '.' ) );
+ // Check if the file is used anywhere...
+ $inuse = $dbw->selectField( 'oldimage', '1',
+ array( 'oi_sha1' => $sha1,
+ 'oi_deleted & '.File::DELETED_FILE => File::DELETED_FILE ),
+ __METHOD__,
+ array( 'FOR UPDATE' )
+ );
+ if ( $path && file_exists($path) && !$inuse ) {
+ unlink($path); // delete
+ $count++;
+ $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" );
+ } else {
+ $this->output( "Notice - file '$key' not found in group '$group'\n" );
+ if ( $force ) {
+ $this->output( "Got --force, deleting DB entry\n" );
+ $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" );
+ }
+ }
+ }
+ $dbw->commit();
+ $this->output( "Done! [$count file(s)]\n" );
+ }
}
+$maintClass = "DeleteArchivedFiles";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteArchivedRevisions.inc b/maintenance/deleteArchivedRevisions.inc
deleted file mode 100644
index 67e4c5a2..00000000
--- a/maintenance/deleteArchivedRevisions.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * Support functions for the deleteArchivedRevisions script
- *
- * @file
- * @ingroup Maintenance
- * @author Aaron Schulz
- */
-
-require_once( 'purgeOldText.inc' );
-
-function DeleteArchivedRevisions( $delete = false ) {
-
- # Data should come off the master, wrapped in a transaction
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- $tbl_arch = $dbw->tableName( 'archive' );
- # Delete as appropriate
- echo( "Deleting archived revisions..." );
- $dbw->query( "TRUNCATE TABLE $tbl_arch" );
- echo( "done.\n" );
-
- $delete = $dbw->affectedRows() != 0;
-
- # This bit's done
- # Purge redundant text records
- $dbw->commit();
- if( $delete ) {
- PurgeRedundantText( true );
- }
-
-}
diff --git a/maintenance/deleteArchivedRevisions.php b/maintenance/deleteArchivedRevisions.php
index 87eebfad..c3f8bf11 100644
--- a/maintenance/deleteArchivedRevisions.php
+++ b/maintenance/deleteArchivedRevisions.php
@@ -3,29 +3,66 @@
/**
* Delete archived (deleted from public) revisions from the database
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Aaron Schulz
* Shamelessly stolen from deleteOldRevisions.php by Rob Church :)
*/
-$options = array( 'delete', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'deleteArchivedRevisions.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-echo( "Delete Archived Revisions\n\n" );
-
-if( @$options['help'] ) {
- ShowUsage();
-} else {
- DeleteArchivedRevisions( @$options['delete'] );
-}
+class DeleteArchivedRevisions extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Deletes all archived revisions\nThese revisions will no longer be restorable";
+ $this->addOption( 'delete', 'Performs the deletion' );
+ }
-function ShowUsage() {
- echo( "Deletes all archived revisions.\n\n" );
- echo( "These revisions will no longer be restorable.\n\n" );
- echo( "Usage: php deleteArchivedRevisions.php [--delete|--help]\n\n" );
- echo( "delete : Performs the deletion\n" );
- echo( " help : Show this usage information\n" );
+ public function execute() {
+ $this->output( "Delete archived revisions\n\n" );
+ # Data should come off the master, wrapped in a transaction
+ $dbw = wfGetDB( DB_MASTER );
+ if( $this->hasOption('delete') ) {
+ $dbw->begin();
+
+ $tbl_arch = $dbw->tableName( 'archive' );
+
+ # Delete as appropriate
+ $this->output( "Deleting archived revisions... " );
+ $dbw->query( "TRUNCATE TABLE $tbl_arch" );
+
+ $count = $dbw->affectedRows();
+ $deletedRows = $count != 0;
+
+ $this->output( "done. $count revisions deleted.\n" );
+
+ # This bit's done
+ # Purge redundant text records
+ $dbw->commit();
+ if( $deletedRows ) {
+ $this->purgeRedundantText( true );
+ }
+ } else {
+ $res = $dbw->selectRow( 'archive', 'COUNT(*) as count', array(), __FUNCTION__ );
+ $this->output( "Found {$res->count} revisions to delete.\n" );
+ $this->output( "Please run the script again with the --delete option to really delete the revisions.\n" );
+ }
+ }
}
+$maintClass = "DeleteArchivedRevisions";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteBatch.php b/maintenance/deleteBatch.php
index 5aeea781..56afd86c 100644
--- a/maintenance/deleteBatch.php
+++ b/maintenance/deleteBatch.php
@@ -1,5 +1,4 @@
<?php
-
/**
* Deletes a batch of pages
* Usage: php deleteBatch.php [-u <user>] [-r <reason>] [-i <interval>] [listfile]
@@ -10,89 +9,104 @@
* <reason> is the delete reason
* <interval> is the number of seconds to sleep for after each delete
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-
-$oldCwd = getcwd();
-$optionsWithArgs = array( 'u', 'r', 'i' );
-require_once( 'commandLine.inc' );
-
-chdir( $oldCwd );
-
-# Options processing
-
-$filename = 'php://stdin';
-$user = 'Delete page script';
-$reason = '';
-$interval = 0;
-
-if ( isset( $args[0] ) ) {
- $filename = $args[0];
-}
-if ( isset( $options['u'] ) ) {
- $user = $options['u'];
-}
-if ( isset( $options['r'] ) ) {
- $reason = $options['r'];
-}
-if ( isset( $options['i'] ) ) {
- $interval = $options['i'];
-}
-
-$wgUser = User::newFromName( $user );
-
-
-# Setup complete, now start
-
-$file = fopen( $filename, 'r' );
-if ( !$file ) {
- print "Unable to read file, exiting\n";
- exit;
-}
-
-$dbw = wfGetDB( DB_MASTER );
-
-for ( $linenum = 1; !feof( $file ); $linenum++ ) {
- $line = trim( fgets( $file ) );
- if ( $line == '' ) {
- continue;
- }
- $page = Title::newFromText( $line );
- if ( is_null( $page ) ) {
- print "Invalid title '$line' on line $linenum\n";
- continue;
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class DeleteBatch extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Deletes a batch of pages";
+ $this->addOption( 'u', "User to perform deletion", false, true );
+ $this->addOption( 'r', "Reason to delete page", false, true );
+ $this->addOption( 'i', "Interval to sleep between deletions" );
+ $this->addArg( 'listfile', 'File with titles to delete, separated by newlines', false );
}
- if( !$page->exists() ) {
- print "Skipping nonexistent page '$line'\n";
- continue;
- }
-
-
- print $page->getPrefixedText();
- $dbw->begin();
- if( $page->getNamespace() == NS_FILE ) {
- $art = new ImagePage( $page );
- $img = wfFindFile( $art->mTitle );
- if( !$img || !$img->delete( $reason ) ) {
- print "FAILED to delete image file... ";
+
+ public function execute() {
+ global $wgUser;
+
+ # Change to current working directory
+ $oldCwd = getcwd();
+ chdir( $oldCwd );
+
+ # Options processing
+ $user = $this->getOption( 'u', 'Delete page script' );
+ $reason = $this->getOption( 'r', '' );
+ $interval = $this->getOption( 'i', 0 );
+ if( $this->hasArg() ) {
+ $file = fopen( $this->getArg(), 'r' );
+ } else {
+ $file = $this->getStdin();
}
- } else {
- $art = new Article( $page );
- }
- $success = $art->doDeleteArticle( $reason );
- $dbw->immediateCommit();
- if ( $success ) {
- print "\n";
- } else {
- print " FAILED to delete image page\n";
- }
- if ( $interval ) {
- sleep( $interval );
+ # Setup
+ if( !$file ) {
+ $this->error( "Unable to read file, exiting", true );
+ }
+ $wgUser = User::newFromName( $user );
+ $dbw = wfGetDB( DB_MASTER );
+
+ # Handle each entry
+ for ( $linenum = 1; !feof( $file ); $linenum++ ) {
+ $line = trim( fgets( $file ) );
+ if ( $line == '' ) {
+ continue;
+ }
+ $page = Title::newFromText( $line );
+ if ( is_null( $page ) ) {
+ $this->output( "Invalid title '$line' on line $linenum\n" );
+ continue;
+ }
+ if( !$page->exists() ) {
+ $this->output( "Skipping nonexistent page '$line'\n" );
+ continue;
+ }
+
+
+ $this->output( $page->getPrefixedText() );
+ $dbw->begin();
+ if( $page->getNamespace() == NS_FILE ) {
+ $art = new ImagePage( $page );
+ $img = wfFindFile( $art->mTitle );
+ if( !$img || !$img->delete( $reason ) ) {
+ $this->output( "FAILED to delete image file... " );
+ }
+ } else {
+ $art = new Article( $page );
+ }
+ $success = $art->doDeleteArticle( $reason );
+ $dbw->commit();
+ if ( $success ) {
+ $this->output( "\n" );
+ } else {
+ $this->output( " FAILED to delete article\n" );
+ }
+
+ if ( $interval ) {
+ sleep( $interval );
+ }
+ wfWaitForSlaves( 5 );
+}
}
- wfWaitForSlaves( 5 );
}
-
-
+$maintClass = "DeleteBatch";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteDefaultMessages.php b/maintenance/deleteDefaultMessages.php
index 77e85741..3f0e1b1c 100644
--- a/maintenance/deleteDefaultMessages.php
+++ b/maintenance/deleteDefaultMessages.php
@@ -1,48 +1,72 @@
<?php
-
/**
* Deletes all pages in the MediaWiki namespace which were last edited by
* "MediaWiki default".
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-if ( !defined( 'MEDIAWIKI' ) ) {
- require_once( 'commandLine.inc' );
- deleteDefaultMessages();
-}
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-function deleteDefaultMessages() {
- $user = 'MediaWiki default';
- $reason = 'No longer required';
+class DeleteDefaultMessages extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Deletes all pages in the MediaWiki namespace" .
+ " which were last edited by \"MediaWiki default\"";
+ }
- global $wgUser;
- $wgUser = User::newFromName( $user );
- $wgUser->addGroup( 'bot' );
+ public function execute() {
+ self::reallyExecute();
+ }
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( array( 'page', 'revision' ),
- array( 'page_namespace', 'page_title' ),
- array(
- 'page_namespace' => NS_MEDIAWIKI,
- 'page_latest=rev_id',
- 'rev_user_text' => 'MediaWiki default',
- )
- );
-
- $dbw = wfGetDB( DB_MASTER );
-
- while ( $row = $dbr->fetchObject( $res ) ) {
- if ( function_exists( 'wfWaitForSlaves' ) ) {
- wfWaitForSlaves( 5 );
+ public static function reallyExecute() {
+ $user = 'MediaWiki default';
+ $reason = 'No longer required';
+
+ global $wgUser;
+ $wgUser = User::newFromName( $user );
+ $wgUser->addGroup( 'bot' );
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'page', 'revision' ),
+ array( 'page_namespace', 'page_title' ),
+ array(
+ 'page_namespace' => NS_MEDIAWIKI,
+ 'page_latest=rev_id',
+ 'rev_user_text' => 'MediaWiki default',
+ )
+ );
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ foreach ( $res as $row ) {
+ if ( function_exists( 'wfWaitForSlaves' ) ) {
+ wfWaitForSlaves( 5 );
+ }
+ $dbw->ping();
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $article = new Article( $title );
+ $dbw->begin();
+ $article->doDeleteArticle( $reason );
+ $dbw->commit();
}
- $dbw->ping();
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $article = new Article( $title );
- $dbw->begin();
- $article->doDeleteArticle( $reason );
- $dbw->commit();
}
}
+$maintClass = "DeleteDefaultMessages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteImageMemcached.php b/maintenance/deleteImageMemcached.php
index 2c3afa86..9becddb8 100644
--- a/maintenance/deleteImageMemcached.php
+++ b/maintenance/deleteImageMemcached.php
@@ -1,33 +1,43 @@
<?php
/**
- * This script delete image information from memcached.
+ * This script delete image information from the cache.
*
* Usage example:
- * php deleteImageMemcached.php --until "2005-09-05 00:00:00" --sleep 0 --report 10
+ * php deleteImageMemcached.php --until "2005-09-05 00:00:00" --sleep 0
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @ingroup Maintenance
*/
-$optionsWithArgs = array( 'until', 'sleep', 'report' );
-
-require_once 'commandLine.inc';
-
-/**
- * @ingroup Maintenance
- */
-class DeleteImageCache {
- var $until, $sleep, $report;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
- function DeleteImageCache( $until, $sleep, $report ) {
- $this->until = $until;
- $this->sleep = $sleep;
- $this->report = $report;
+class DeleteImageCache extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Delete image information from the cache";
+ $this->addOption( 'sleep', 'How many seconds to sleep between deletions', true, true );
+ $this->addOption( 'until', 'Timestamp to delete all entries prior to', true, true );
}
- function main() {
+ public function execute() {
global $wgMemc;
- $fname = 'DeleteImageCache::main';
+
+ $until = preg_replace( "/[^\d]/", '', $this->getOption('until') );
+ $sleep = (int)$this->getOption('sleep') * 1000; // milliseconds
ini_set( 'display_errors', false );
@@ -35,38 +45,31 @@ class DeleteImageCache {
$res = $dbr->select( 'image',
array( 'img_name' ),
- array( "img_timestamp < {$this->until}" ),
- $fname
+ array( "img_timestamp < {$until}" ),
+ __METHOD__
);
$i = 0;
$total = $this->getImageCount();
- while ( $row = $dbr->fetchObject( $res ) ) {
+ foreach ( $res as $row ) {
if ($i % $this->report == 0)
- printf("%s: %13s done (%s)\n", wfWikiID(), "$i/$total", wfPercent( $i / $total * 100 ));
+ $this->output( sprintf("%s: %13s done (%s)\n", wfWikiID(), "$i/$total", wfPercent( $i / $total * 100 ) ) );
$md5 = md5( $row->img_name );
$wgMemc->delete( wfMemcKey( 'Image', $md5 ) );
- if ($this->sleep != 0)
- usleep( $this->sleep );
+ if ($sleep != 0)
+ usleep( $sleep );
++$i;
}
}
- function getImageCount() {
- $fname = 'DeleteImageCache::getImageCount';
-
+ private function getImageCount() {
$dbr = wfGetDB( DB_SLAVE );
- return $dbr->selectField( 'image', 'COUNT(*)', array(), $fname );
+ return $dbr->selectField( 'image', 'COUNT(*)', array(), __METHOD__ );
}
}
-$until = preg_replace( "/[^\d]/", '', $options['until'] );
-$sleep = (int)$options['sleep'] * 1000; // milliseconds
-$report = (int)$options['report'];
-
-$dic = new DeleteImageCache( $until, $sleep, $report );
-$dic->main();
-
+$maintClass = "DeleteImageCache";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteOldRevisions.inc b/maintenance/deleteOldRevisions.inc
deleted file mode 100644
index b681b9d0..00000000
--- a/maintenance/deleteOldRevisions.inc
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Support functions for the deleteOldRevisions script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-require_once( 'purgeOldText.inc' );
-
-function DeleteOldRevisions( $delete = false, $args = array() ) {
-
- # Data should come off the master, wrapped in a transaction
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- $tbl_pag = $dbw->tableName( 'page' );
- $tbl_rev = $dbw->tableName( 'revision' );
-
- $pageIdClause = '';
- $revPageClause = '';
-
- # If a list of page_ids was provided, limit results to that set of page_ids
- if ( sizeof( $args ) > 0 ) {
- $pageIdList = implode( ',', $args );
- $pageIdClause = " WHERE page_id IN ({$pageIdList})";
- $revPageClause = " AND rev_page IN ({$pageIdList})";
- echo( "Limiting to {$tbl_pag}.page_id IN ({$pageIdList})\n" );
- }
-
- # Get "active" revisions from the page table
- echo( "Searching for active revisions..." );
- $res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" );
- while( $row = $dbw->fetchObject( $res ) ) {
- $cur[] = $row->page_latest;
- }
- echo( "done.\n" );
-
- # Get all revisions that aren't in this set
- echo( "Searching for inactive revisions..." );
- $set = implode( ', ', $cur );
- $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_id NOT IN ( $set ){$revPageClause}" );
- while( $row = $dbw->fetchObject( $res ) ) {
- $old[] = $row->rev_id;
- }
- echo( "done.\n" );
-
- # Inform the user of what we're going to do
- $count = count( $old );
- echo( "$count old revisions found.\n" );
-
- # Delete as appropriate
- if( $delete && $count ) {
- echo( "Deleting..." );
- $set = implode( ', ', $old );
- $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
- echo( "done.\n" );
- }
-
- # This bit's done
- # Purge redundant text records
- $dbw->commit();
- if( $delete ) {
- PurgeRedundantText( true );
- }
-
-}
diff --git a/maintenance/deleteOldRevisions.php b/maintenance/deleteOldRevisions.php
index c283c607..1f4dc4c9 100644
--- a/maintenance/deleteOldRevisions.php
+++ b/maintenance/deleteOldRevisions.php
@@ -3,27 +3,99 @@
/**
* Delete old (non-current) revisions from the database
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-$options = array( 'delete', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'deleteOldRevisions.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-echo( "Delete Old Revisions\n\n" );
+class DeleteOldRevisions extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Delete old (non-current) revisions from the database";
+ $this->addOption( 'delete', 'Actually perform the deletion' );
+ $this->addOption( 'page_id', 'List of page ids to work on', false );
+ }
+
+ public function execute() {
+ $this->output( "Delete old revisions\n\n" );
+ $this->doDelete( $this->hasOption( 'delete' ), $this->mArgs );
+ }
+
+ function doDelete( $delete = false, $args = array() ) {
-if( @$options['help'] ) {
- ShowUsage();
-} else {
- DeleteOldRevisions( @$options['delete'], $args );
+ # Data should come off the master, wrapped in a transaction
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
+ $tbl_pag = $dbw->tableName( 'page' );
+ $tbl_rev = $dbw->tableName( 'revision' );
+
+ $pageIdClause = '';
+ $revPageClause = '';
+
+ # If a list of page_ids was provided, limit results to that set of page_ids
+ if ( sizeof( $args ) > 0 ) {
+ $pageIdList = implode( ',', $args );
+ $pageIdClause = " WHERE page_id IN ({$pageIdList})";
+ $revPageClause = " AND rev_page IN ({$pageIdList})";
+ $this->output( "Limiting to {$tbl_pag}.page_id IN ({$pageIdList})\n" );
+ }
+
+ # Get "active" revisions from the page table
+ $this->output( "Searching for active revisions..." );
+ $res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" );
+ foreach( $res as $row ) {
+ $cur[] = $row->page_latest;
+ }
+ $this->output( "done.\n" );
+
+ # Get all revisions that aren't in this set
+ $old = array();
+ $this->output( "Searching for inactive revisions..." );
+ $set = implode( ', ', $cur );
+ $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_id NOT IN ( $set ){$revPageClause}" );
+ foreach( $res as $row ) {
+ $old[] = $row->rev_id;
+ }
+ $this->output( "done.\n" );
+
+ # Inform the user of what we're going to do
+ $count = count( $old );
+ $this->output( "$count old revisions found.\n" );
+
+ # Delete as appropriate
+ if( $delete && $count ) {
+ $this->output( "Deleting..." );
+ $set = implode( ', ', $old );
+ $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
+ $this->output( "done.\n" );
+ }
+
+ # This bit's done
+ # Purge redundant text records
+ $dbw->commit();
+ if( $delete ) {
+ $this->purgeRedundantText( true );
+ }
+ }
}
-function ShowUsage() {
- echo( "Deletes non-current revisions from the database.\n\n" );
- echo( "Usage: php deleteOldRevisions.php [--delete|--help] [<page_id> ...]\n\n" );
- echo( "delete : Performs the deletion\n" );
- echo( " help : Show this usage information\n" );
-}
+$maintClass = "DeleteOldRevisions";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteOrphanedRevisions.inc.php b/maintenance/deleteOrphanedRevisions.inc.php
deleted file mode 100644
index 6678d5b8..00000000
--- a/maintenance/deleteOrphanedRevisions.inc.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * Support functions for the deleteOrphanedRevisions maintenance script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-/**
- * Delete one or more revisions from the database
- * Do this inside a transaction
- *
- * @param $id Array of revision id values
- * @param $db Database class (needs to be a master)
- */
-function deleteRevisions( $id, &$dbw ) {
- if( !is_array( $id ) )
- $id = array( $id );
- $dbw->delete( 'revision', array( 'rev_id' => $id ), 'deleteRevision' );
-}
-
-/**
- * Spit out script usage information and exit
- */
-function showUsage() {
- echo( "Finds revisions which refer to nonexisting pages and deletes them from the database\n" );
- echo( "USAGE: php deleteOrphanedRevisions.php [--report]\n\n" );
- echo( " --report : Prints out a count of affected revisions but doesn't delete them\n\n" );
-}
-
diff --git a/maintenance/deleteOrphanedRevisions.php b/maintenance/deleteOrphanedRevisions.php
index 78441f8e..1146befb 100644
--- a/maintenance/deleteOrphanedRevisions.php
+++ b/maintenance/deleteOrphanedRevisions.php
@@ -4,51 +4,87 @@
* Maintenance script to delete revisions which refer to a nonexisting page
* Sometimes manual deletion done in a rush leaves crap in the database
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
* @todo More efficient cleanup of text records
*/
-
-$options = array( 'report', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'deleteOrphanedRevisions.inc.php' );
-echo( "Delete Orphaned Revisions\n" );
-
-if( isset( $options['help'] ) )
- showUsage();
-
-$report = isset( $options['report'] );
-
-$dbw = wfGetDB( DB_MASTER );
-$dbw->immediateBegin();
-extract( $dbw->tableNames( 'page', 'revision' ) );
-
-# Find all the orphaned revisions
-echo( "Checking for orphaned revisions..." );
-$sql = "SELECT rev_id FROM {$revision} LEFT JOIN {$page} ON rev_page = page_id WHERE page_namespace IS NULL";
-$res = $dbw->query( $sql, 'deleteOrphanedRevisions' );
-
-# Stash 'em all up for deletion (if needed)
-while( $row = $dbw->fetchObject( $res ) )
- $revisions[] = $row->rev_id;
-$dbw->freeResult( $res );
-$count = count( $revisions );
-echo( "found {$count}.\n" );
-
-# Nothing to do?
-if( $report || $count == 0 ) {
- $dbw->immediateCommit();
- exit();
-}
-# Delete each revision
-echo( "Deleting..." );
-deleteRevisions( $revisions, $dbw );
-echo( "done.\n" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class DeleteOrphanedRevisions extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Maintenance script to delete revisions which refer to a nonexisting page";
+ $this->addOption( 'report', 'Prints out a count of affected revisions but doesn\'t delete them' );
+ }
+
+ public function execute() {
+ $this->output( "Delete Orphaned Revisions\n" );
+
+ $report = $this->hasOption('report');
+
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ list( $page, $revision ) = $dbw->tableNamesN( 'page', 'revision' );
+
+ # Find all the orphaned revisions
+ $this->output( "Checking for orphaned revisions..." );
+ $sql = "SELECT rev_id FROM {$revision} LEFT JOIN {$page} ON rev_page = page_id WHERE page_namespace IS NULL";
+ $res = $dbw->query( $sql, 'deleteOrphanedRevisions' );
+
+ # Stash 'em all up for deletion (if needed)
+ $revisions = array();
+ foreach( $res as $row )
+ $revisions[] = $row->rev_id;
+ $dbw->freeResult( $res );
+ $count = count( $revisions );
+ $this->output( "found {$count}.\n" );
+
+ # Nothing to do?
+ if( $report || $count == 0 ) {
+ $dbw->commit();
+ exit(0);
+ }
+
+ # Delete each revision
+ $this->output( "Deleting..." );
+ $this->deleteRevs( $revisions, $dbw );
+ $this->output( "done.\n" );
+
+ # Close the transaction and call the script to purge unused text records
+ $dbw->commit();
+ $this->purgeRedundantText( true );
+ }
+
+ /**
+ * Delete one or more revisions from the database
+ * Do this inside a transaction
+ *
+ * @param $id Array of revision id values
+ * @param $db Database class (needs to be a master)
+ */
+ private function deleteRevs( $id, &$dbw ) {
+ if( !is_array( $id ) )
+ $id = array( $id );
+ $dbw->delete( 'revision', array( 'rev_id' => $id ), __METHOD__ );
+ }
+}
-# Close the transaction and call the script to purge unused text records
-$dbw->immediateCommit();
-require_once( 'purgeOldText.inc' );
-PurgeRedundantText( true );
+$maintClass = "DeleteOrphanedRevisions";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteRevision.php b/maintenance/deleteRevision.php
index 0c203ab0..5dc0b59f 100644
--- a/maintenance/deleteRevision.php
+++ b/maintenance/deleteRevision.php
@@ -2,46 +2,80 @@
/**
* Delete one or more revisions by moving them to the archive table.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
-
-$dbw = wfGetDB( DB_MASTER );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if ( count( $args ) == 0 ) {
- echo "Usage: php deleteRevision.php <revid> [<revid> ...]\n";
- exit(1);
-}
-
-echo "Deleting revision(s) " . implode( ',', $args ) . " from ".wfWikiID()."...\n";
+class DeleteRevision extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Delete one or more revisions by moving them to the archive table";
+ }
+
+ public function execute() {
+ if( count( $this->mArgs ) == 0 ) {
+ $this->error( "No revisions specified", true );
+ }
-$affected = 0;
-foreach ( $args as $revID ) {
- $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
- array(
- 'ar_namespace' => 'page_namespace',
- 'ar_title' => 'page_title',
- 'ar_comment' => 'rev_comment',
- 'ar_user' => 'rev_user',
- 'ar_user_text' => 'rev_user_text',
- 'ar_timestamp' => 'rev_timestamp',
- 'ar_minor_edit' => 'rev_minor_edit',
- 'ar_rev_id' => 'rev_id',
- 'ar_text_id' => 'rev_text_id',
- ), array(
- 'rev_id' => $revID,
- 'page_id = rev_page'
- ), $fname
- );
- if ( !$dbw->affectedRows() ) {
- echo "Revision $revID not found\n";
- } else {
- $affected += $dbw->affectedRows();
- $dbw->delete( 'revision', array( 'rev_id' => $revID ) );
+ $this->output( "Deleting revision(s) " . implode( ',', $this->mArgs ) .
+ " from " . wfWikiID() . "...\n" );
+ $dbw = wfGetDB( DB_MASTER );
+
+ $affected = 0;
+ foreach ( $this->mArgs as $revID ) {
+ $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
+ array(
+ 'ar_namespace' => 'page_namespace',
+ 'ar_title' => 'page_title',
+ 'ar_page_id' => 'page_id',
+ 'ar_comment' => 'rev_comment',
+ 'ar_user' => 'rev_user',
+ 'ar_user_text' => 'rev_user_text',
+ 'ar_timestamp' => 'rev_timestamp',
+ 'ar_minor_edit' => 'rev_minor_edit',
+ 'ar_rev_id' => 'rev_id',
+ 'ar_text_id' => 'rev_text_id',
+ 'ar_deleted' => 'rev_deleted',
+ 'ar_len' => 'rev_len',
+ ), array(
+ 'rev_id' => $revID,
+ 'page_id = rev_page'
+ ), __METHOD__
+ );
+ if ( !$dbw->affectedRows() ) {
+ $this->output( "Revision $revID not found\n" );
+ } else {
+ $affected += $dbw->affectedRows();
+ $pageID = $dbw->selectField( 'revision', 'rev_page', array( 'rev_id' => $revID ), __METHOD__ );
+ $pageLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), __METHOD__ );
+ $dbw->delete( 'revision', array( 'rev_id' => $revID ) );
+ if ( $pageLatest == $revID ) {
+ // Database integrity
+ $newLatest = $dbw->selectField( 'revision', 'rev_id', array( 'rev_page' => $pageID ), __METHOD__, array( 'ORDER BY' => 'rev_timestamp DESC' ) );
+ $dbw->update( 'page', array( 'page_latest' => $newLatest ), array( 'page_id' => $pageID ), __METHOD__ );
+ }
+ }
+ }
+ $this->output( "Deleted $affected revisions\n" );
}
}
-print "Deleted $affected revisions\n";
-
+$maintClass = "DeleteRevision";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/deleteSelfExternals.php b/maintenance/deleteSelfExternals.php
new file mode 100644
index 00000000..1ab2839e
--- /dev/null
+++ b/maintenance/deleteSelfExternals.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * We want to make this whole thing as seamless as possible to the
+ * end-user. Unfortunately, we can't do _all_ of the work in the class
+ * because A) included files are not in global scope, but in the scope
+ * of their caller, and B) MediaWiki has way too many globals. So instead
+ * we'll kinda fake it, and do the requires() inline. <3 PHP
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( "Maintenance.php" );
+
+
+class DeleteSelfExternals extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Delete self-references to $wgServer from externallinks';
+ $this->mBatchSize = 1000;
+ }
+
+ public function execute() {
+ global $wgServer;
+ $this->output( "Deleting self externals from $wgServer\n" );
+ $db = wfGetDB(DB_MASTER);
+ while (1) {
+ wfWaitForSlaves( 2 );
+ $db->commit();
+ $q = $db->limitResult( "DELETE /* deleteSelfExternals */ FROM externallinks WHERE el_to"
+ . $db->buildLike( $wgServer . '/', $db->anyString() ), $this->mBatchSize );
+ $this->output( "Deleting a batch\n" );
+ $db->query($q);
+ if (!$db->affectedRows()) exit(0);
+ }
+ }
+}
+
+$maintClass = "DeleteSelfExternals";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/doMaintenance.php b/maintenance/doMaintenance.php
new file mode 100644
index 00000000..008c5b87
--- /dev/null
+++ b/maintenance/doMaintenance.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ * We want to make this whole thing as seamless as possible to the
+ * end-user. Unfortunately, we can't do _all_ of the work in the class
+ * because A) included files are not in global scope, but in the scope
+ * of their caller, and B) MediaWiki has way too many globals. So instead
+ * we'll kinda fake it, and do the requires() inline. <3 PHP
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @author Chad Horohoe <chad@anyonecanedit.org>
+ * @file
+ * @ingroup Maintenance
+ */
+
+if ( !defined( 'DO_MAINTENANCE' ) ) {
+ echo "This file must be included after Maintenance.php\n";
+ exit( 1 );
+}
+
+if( !$maintClass || !class_exists( $maintClass ) ) {
+ echo "\$maintClass is not set or is set to a non-existent class.\n";
+ exit( 1 );
+}
+
+if( defined( 'MW_NO_SETUP' ) ) {
+ return;
+}
+
+// Get an object to start us off
+$maintenance = new $maintClass();
+
+// Basic sanity checks and such
+$maintenance->setup();
+
+// We used to call this variable $self, but it was moved
+// to $maintenance->mSelf. Keep that here for b/c
+$self = $maintenance->getName();
+
+# Setup the profiler
+if ( file_exists( "$IP/StartProfiler.php" ) ) {
+ require_once( "$IP/StartProfiler.php" );
+} else {
+ require_once( "$IP/includes/ProfilerStub.php" );
+}
+
+// Some other requires
+require_once( "$IP/includes/AutoLoader.php" );
+require_once( "$IP/includes/Defines.php" );
+
+// Load settings, using wikimedia-mode if needed
+// Fixme: replace this hack with general farm-friendly code
+if( file_exists( "$IP/wmf-config/wikimedia-mode" ) ) {
+ # TODO FIXME! Wikimedia-specific stuff needs to go away to an ext
+ # Maybe a hook?
+ global $cluster;
+ $wgWikiFarm = true;
+ $cluster = 'pmtpa';
+ require_once( "$IP/includes/SiteConfiguration.php" );
+ require( "$IP/wmf-config/wgConf.php" );
+ $maintenance->loadWikimediaSettings();
+ require( $IP.'/wmf-config/CommonSettings.php' );
+} else {
+ require_once( $maintenance->loadSettings() );
+}
+if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
+ is_readable( "$IP/AdminSettings.php" ) )
+{
+ require( "$IP/AdminSettings.php" );
+}
+$maintenance->finalSetup();
+// Some last includes
+require_once( "$IP/includes/Setup.php" );
+require_once( "$IP/maintenance/install-utils.inc" );
+
+// Much much faster startup than creating a title object
+$wgTitle = null;
+
+// Do the work
+try {
+ $maintenance->execute();
+
+ // Potentially debug globals
+ $maintenance->globals();
+} catch( MWException $mwe ) {
+ echo( $mwe->getText() );
+ exit( 1 );
+}
+
diff --git a/maintenance/dumpBackup.php b/maintenance/dumpBackup.php
index 0e28734c..3f4530ed 100644
--- a/maintenance/dumpBackup.php
+++ b/maintenance/dumpBackup.php
@@ -26,7 +26,7 @@ $originalDir = getcwd();
$optionsWithArgs = array( 'pagelist', 'start', 'end' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
require_once( 'backup.inc' );
$dumper = new BackupDumper( $argv );
@@ -69,30 +69,30 @@ if( isset( $options['full'] ) ) {
$dumper->dump( WikiExporter::LOGS );
} else {
$dumper->progress( <<<ENDS
-This script dumps the wiki page database into an XML interchange wrapper
-format for export or backup.
+This script dumps the wiki page or logging database into an
+XML interchange wrapper format for export or backup.
XML output is sent to stdout; progress reports are sent to stderr.
Usage: php dumpBackup.php <action> [<options>]
Actions:
- --full Dump complete history of every page.
- --current Includes only the latest revision of each page.
- --logs Dump action logs for every page.
+ --full Dump all revisions of every page.
+ --current Dump only the latest revision of every page.
+ --logs Dump all log events.
Options:
--quiet Don't dump status reports to stderr.
--report=n Report position and speed after every n pages processed.
(Default: 100)
--server=h Force reading from MySQL server h
- --start=n Start from page_id n
- --end=n Stop before page_id n (exclusive)
+ --start=n Start from page_id or log_id n
+ --end=n Stop before page_id or log_id n (exclusive)
--skip-header Don't output the <mediawiki> header
--skip-footer Don't output the </mediawiki> footer
--stub Don't perform old_text lookups; for 2-pass dump
--uploads Include upload records (experimental)
-Fancy stuff:
+Fancy stuff: (Works? Add examples please.)
--plugin=<class>[:<file>] Load a dump plugin class
--output=<type>:<file> Begin a filtered output stream;
<type>s: file, gzip, bzip2, 7zip
@@ -101,5 +101,3 @@ Fancy stuff:
ENDS
);
}
-
-
diff --git a/maintenance/dumpInterwiki.inc b/maintenance/dumpInterwiki.inc
index 481e21cc..c366b08c 100644
--- a/maintenance/dumpInterwiki.inc
+++ b/maintenance/dumpInterwiki.inc
@@ -6,6 +6,7 @@
* @file
* @todo document
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
/**
@@ -201,7 +202,7 @@ function makeLink( $entry, $source ) {
array_key_exists($entry['iw_prefix'],$prefixRewrites[$source]))
$entry['iw_prefix'] = $prefixRewrites[$source][$entry['iw_prefix']];
if ($dbFile)
- dba_insert("{$source}:{$entry['iw_prefix']}", trim("{$entry['iw_local']} {$entry['iw_url']}"),$dbFile);
+ $dbFile->set( "{$source}:{$entry['iw_prefix']}", trim("{$entry['iw_local']} {$entry['iw_url']}") );
else
print "{$source}:{$entry['iw_prefix']} {$entry['iw_url']} {$entry['iw_local']}\n";
diff --git a/maintenance/dumpInterwiki.php b/maintenance/dumpInterwiki.php
index f5f22f3c..045e393b 100644
--- a/maintenance/dumpInterwiki.php
+++ b/maintenance/dumpInterwiki.php
@@ -6,20 +6,21 @@
* @file
* @todo document
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
/** */
$oldCwd = getcwd();
$optionsWithArgs = array( "o" );
-require( "commandLine.inc" );
-require( "dumpInterwiki.inc" );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
+require( dirname(__FILE__)."/dumpInterwiki.inc" );
chdir( $oldCwd );
# Output
if ( isset( $options['o'] ) ) {
# To database specified with -o
- $dbFile = dba_open( $options['o'], "n", "cdb_make" );
+ $dbFile = CdbWriter::open( $options['o'] );
}
getRebuildInterwikiDump();
diff --git a/maintenance/dumpLinks.php b/maintenance/dumpLinks.php
index 65dfac64..529cd1aa 100644
--- a/maintenance/dumpLinks.php
+++ b/maintenance/dumpLinks.php
@@ -26,38 +26,48 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @ingroup Mainatenance
*/
-require_once 'commandLine.inc';
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$dbr = wfGetDB( DB_SLAVE );
-$result = $dbr->select( array( 'pagelinks', 'page' ),
- array(
- 'page_id',
- 'page_namespace',
- 'page_title',
- 'pl_namespace',
- 'pl_title' ),
- array( 'page_id=pl_from' ),
- 'dumpLinks',
- array( 'ORDER BY' => 'page_id' ) );
+class DumpLinks extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Quick demo hack to generate a plaintext link dump";
+ }
-$lastPage = null;
-while( $row = $dbr->fetchObject( $result ) ) {
- if( $lastPage != $row->page_id ) {
- if( isset( $lastPage ) ) {
- print "\n";
+ public function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->select( array( 'pagelinks', 'page' ),
+ array(
+ 'page_id',
+ 'page_namespace',
+ 'page_title',
+ 'pl_namespace',
+ 'pl_title' ),
+ array( 'page_id=pl_from' ),
+ __METHOD__,
+ array( 'ORDER BY' => 'page_id' ) );
+
+ $lastPage = null;
+ foreach( $result as $row ) {
+ if( $lastPage != $row->page_id ) {
+ if( isset( $lastPage ) ) {
+ $this->output( "\n" );
+ }
+ $page = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $this->output( $page->getPrefixedUrl() );
+ $lastPage = $row->page_id;
+ }
+ $link = Title::makeTitle( $row->pl_namespace, $row->pl_title );
+ $this->output( " " . $link->getPrefixedUrl() );
}
- $page = Title::makeTitle( $row->page_namespace, $row->page_title );
- print $page->getPrefixedUrl();
- $lastPage = $row->page_id;
+ if( isset( $lastPage ) )
+ $this->output( "\n" );
}
- $link = Title::makeTitle( $row->pl_namespace, $row->pl_title );
- print " " . $link->getPrefixedUrl();
}
-if( isset( $lastPage ) )
- print "\n";
+$maintClass = "DumpLinks";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/dumpSisterSites.php b/maintenance/dumpSisterSites.php
index 2a7369c0..d9fd28a6 100644
--- a/maintenance/dumpSisterSites.php
+++ b/maintenance/dumpSisterSites.php
@@ -21,29 +21,36 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @file
- * @ingroup SpecialPage
+ * @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$dbr = wfGetDB( DB_SLAVE );
-$dbr->bufferResults( false );
-$result = $dbr->select( 'page',
- array( 'page_namespace', 'page_title' ),
- array(
- 'page_namespace' => NS_MAIN,
- 'page_is_redirect' => 0,
- ),
- 'dumpSisterSites' );
+class DumpSisterSites extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Quickie page name dump script for SisterSites usage";
+ }
+
+ public function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $dbr->bufferResults( false );
+ $result = $dbr->select( 'page',
+ array( 'page_namespace', 'page_title' ),
+ array( 'page_namespace' => NS_MAIN,
+ 'page_is_redirect' => 0,
+ ),
+ __METHOD__ );
-while( $row = $dbr->fetchObject( $result ) ) {
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $url = $title->getFullUrl();
- $text = $title->getPrefixedText();
- echo "$url $text\n";
+ foreach( $result as $row ) {
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $url = $title->getFullUrl();
+ $text = $title->getPrefixedText();
+ $this->output( "$url $text\n" );
+ }
+ $dbr->freeResult( $result );
+ }
}
-$dbr->freeResult( $result );
-
-
+$maintClass = "DumpSisterSites";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/dumpTextPass.php b/maintenance/dumpTextPass.php
index e85fe421..2e639e68 100644
--- a/maintenance/dumpTextPass.php
+++ b/maintenance/dumpTextPass.php
@@ -24,79 +24,10 @@
$originalDir = getcwd();
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
require_once( 'backup.inc' );
/**
- * Stream wrapper around 7za filter program.
- * Required since we can't pass an open file resource to XMLReader->open()
- * which is used for the text prefetch.
- *
- * @ingroup Maintenance
- */
-class SevenZipStream {
- var $stream;
-
- private function stripPath( $path ) {
- $prefix = 'mediawiki.compress.7z://';
- return substr( $path, strlen( $prefix ) );
- }
-
- function stream_open( $path, $mode, $options, &$opened_path ) {
- if( $mode{0} == 'r' ) {
- $options = 'e -bd -so';
- } elseif( $mode{0} == 'w' ) {
- $options = 'a -bd -si';
- } else {
- return false;
- }
- $arg = wfEscapeShellArg( $this->stripPath( $path ) );
- $command = "7za $options $arg";
- if( !wfIsWindows() ) {
- // Suppress the stupid messages on stderr
- $command .= ' 2>/dev/null';
- }
- $this->stream = popen( $command, $mode );
- return ($this->stream !== false);
- }
-
- function url_stat( $path, $flags ) {
- return stat( $this->stripPath( $path ) );
- }
-
- // This is all so lame; there should be a default class we can extend
-
- function stream_close() {
- return fclose( $this->stream );
- }
-
- function stream_flush() {
- return fflush( $this->stream );
- }
-
- function stream_read( $count ) {
- return fread( $this->stream, $count );
- }
-
- function stream_write( $data ) {
- return fwrite( $this->stream, $data );
- }
-
- function stream_tell() {
- return ftell( $this->stream );
- }
-
- function stream_eof() {
- return feof( $this->stream );
- }
-
- function stream_seek( $offset, $whence ) {
- return fseek( $this->stream, $offset, $whence );
- }
-}
-stream_wrapper_register( 'mediawiki.compress.7z', 'SevenZipStream' );
-
-/**
* @ingroup Maintenance
*/
class TextPassDumper extends BackupDumper {
@@ -305,6 +236,7 @@ class TextPassDumper extends BackupDumper {
* May throw a database error if, say, the server dies during query.
*/
private function getTextDb( $id ) {
+ global $wgContLang;
$id = intval( $id );
$row = $this->db->selectRow( 'text',
array( 'old_text', 'old_flags' ),
@@ -315,7 +247,7 @@ class TextPassDumper extends BackupDumper {
return false;
}
$stripped = str_replace( "\r", "", $text );
- $normalized = UtfNormal::cleanUp( $stripped );
+ $normalized = $wgContLang->normalize( $stripped );
return $normalized;
}
@@ -390,6 +322,8 @@ class TextPassDumper extends BackupDumper {
}
private function getTextSpawnedOnce( $id ) {
+ global $wgContLang;
+
$ok = fwrite( $this->spawnWrite, "$id\n" );
//$this->progress( ">> $id" );
if( !$ok ) return false;
@@ -408,7 +342,7 @@ class TextPassDumper extends BackupDumper {
// Subprocess may not send everything at once, we have to loop.
while( $nbytes > strlen( $text ) ) {
$buffer = fread( $this->spawnRead, $nbytes - strlen( $text ) );
- if( $text === false ) break;
+ if( $buffer === false ) break;
$text .= $buffer;
}
@@ -420,7 +354,7 @@ class TextPassDumper extends BackupDumper {
// Do normalization in the dump thread...
$stripped = str_replace( "\r", "", $text );
- $normalized = UtfNormal::cleanUp( $stripped );
+ $normalized = $wgContLang->normalize( $stripped );
return $normalized;
}
diff --git a/maintenance/dumpUploads.php b/maintenance/dumpUploads.php
index c237feee..c8f1667b 100644
--- a/maintenance/dumpUploads.php
+++ b/maintenance/dumpUploads.php
@@ -1,37 +1,55 @@
<?php
/**
- * @file
+ * Dump a the list of files uploaded, for feeding to tar or similar
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once 'commandLine.inc';
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-class UploadDumper {
- function __construct( $args ) {
+class UploadDumper extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Generates list of uploaded files which can be fed to tar or similar.
+By default, outputs relative paths against the parent directory of \$wgUploadDirectory.";
+ $this->addOption( 'base', 'Set base relative path instead of wiki include root', false, true );
+ $this->addOption( 'local', 'List all local files, used or not. No shared files included' );
+ $this->addOption( 'used', 'Skip local images that are not used' );
+ $this->addOption( 'shared', 'Include images used from shared repository' );
+ }
+
+ public function execute() {
global $IP, $wgUseSharedUploads;
$this->mAction = 'fetchLocal';
- $this->mBasePath = $IP;
+ $this->mBasePath = $this->getOption( 'base', $IP );
$this->mShared = false;
$this->mSharedSupplement = false;
-
- if( isset( $args['help'] ) ) {
- $this->mAction = 'help';
- }
-
- if( isset( $args['base'] ) ) {
- $this->mBasePath = $args['base'];
- }
-
- if( isset( $args['local'] ) ) {
+
+ if( $this->hasOption('local') ) {
$this->mAction = 'fetchLocal';
}
- if( isset( $args['used'] ) ) {
+ if( $this->hasOption('used') ) {
$this->mAction = 'fetchUsed';
}
- if( isset( $args['shared'] ) ) {
- if( isset( $args['used'] ) ) {
+ if( $this->hasOption('shared') ) {
+ if( $this->hasOption('used') ) {
// Include shared-repo files in the used check
$this->mShared = true;
} else {
@@ -39,34 +57,12 @@ class UploadDumper {
$this->mSharedSupplement = true;
}
}
- }
-
- function run() {
$this->{$this->mAction}( $this->mShared );
if( $this->mSharedSupplement ) {
$this->fetchUsed( true );
}
}
-
- function help() {
- echo <<<END
-Generates list of uploaded files which can be fed to tar or similar.
-By default, outputs relative paths against the parent directory of
-\$wgUploadDirectory.
-Usage:
-php dumpUploads.php [options] > list-o-files.txt
-
-Options:
---base=<path> Set base relative path instead of wiki include root
-
---local List all local files, used or not. No shared files included.
---used Skip local images that are not used
---shared Include images used from shared repository
-
-END;
- }
-
/**
* Fetch a list of all or used images from a particular image source.
* @param string $table
@@ -89,7 +85,7 @@ END;
}
$dbr->freeResult( $result );
}
-
+
function fetchLocal( $shared ) {
$dbr = wfGetDB( DB_SLAVE );
$result = $dbr->select( 'image',
@@ -108,17 +104,16 @@ END;
if( $file && $this->filterItem( $file, $shared ) ) {
$filename = $file->getFullPath();
$rel = wfRelativePath( $filename, $this->mBasePath );
- echo "$rel\n";
+ $this->output( "$rel\n" );
} else {
wfDebug( __METHOD__ . ": base file? $name\n" );
}
}
-
+
function filterItem( $file, $shared ) {
return $shared || $file->isLocal();
}
}
-$dumper = new UploadDumper( $options );
-$dumper->run();
-
+$maintClass = "UploadDumper";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/edit.php b/maintenance/edit.php
index 64178045..8d0068c3 100644
--- a/maintenance/edit.php
+++ b/maintenance/edit.php
@@ -1,77 +1,89 @@
<?php
/**
- * @file
+ * Make an edit
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$optionsWithArgs = array( 'u', 's' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require_once( 'commandLine.inc' );
+class EditCLI extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Edit an article from the command line, text is from stdin";
+ $this->addOption( 'u', 'Username', false, true );
+ $this->addOption( 's', 'Edit summary', false, true );
+ $this->addOption( 'm', 'Minor edit' );
+ $this->addOption( 'b', 'Bot edit' );
+ $this->addOption( 'a', 'Enable autosummary' );
+ $this->addOption( 'no-rc', 'Do not show the change in recent changes' );
+ $this->addArg( 'title', 'Title of article to edit' );
+ }
-if ( count( $args ) == 0 || isset( $options['help'] ) ) {
- print <<<EOT
-Edit an article from the command line
+ public function execute() {
+ global $wgUser, $wgTitle, $wgArticle;
-Usage: php edit.php [options...] <title>
-
-Options:
- -u <user> Username
- -s <summary> Edit summary
- -m Minor edit
- -b Bot (hidden) edit
- -a Enable autosummary
- --no-rc Do not show the change in recent changes
-
-If the specified user does not exist, it will be created.
-The text for the edit will be read from stdin.
-
-EOT;
- exit( 1 );
-}
-
-$userName = isset( $options['u'] ) ? $options['u'] : 'Maintenance script';
-$summary = isset( $options['s'] ) ? $options['s'] : '';
-$minor = isset( $options['m'] );
-$bot = isset( $options['b'] );
-$autoSummary = isset( $options['a'] );
-$noRC = isset( $options['no-rc'] );
-
-$wgUser = User::newFromName( $userName );
-if ( !$wgUser ) {
- print "Invalid username\n";
- exit( 1 );
-}
-if ( $wgUser->isAnon() ) {
- $wgUser->addToDatabase();
+ $userName = $this->getOption( 'u', 'Maintenance script' );
+ $summary = $this->getOption( 's', '' );
+ $minor = $this->hasOption( 'm' );
+ $bot = $this->hasOption( 'b' );
+ $autoSummary = $this->hasOption( 'a' );
+ $noRC = $this->hasOption( 'no-rc' );
+
+ $wgUser = User::newFromName( $userName );
+ if ( !$wgUser ) {
+ $this->error( "Invalid username", true );
+ }
+ if ( $wgUser->isAnon() ) {
+ $wgUser->addToDatabase();
+ }
+
+ $wgTitle = Title::newFromText( $this->getArg() );
+ if ( !$wgTitle ) {
+ $this->error( "Invalid title", true );
+ }
+
+ $wgArticle = new Article( $wgTitle );
+
+ # Read the text
+ $text = $this->getStdin( Maintenance::STDIN_ALL );
+
+ # Do the edit
+ $this->output( "Saving... " );
+ $status = $wgArticle->doEdit( $text, $summary,
+ ( $minor ? EDIT_MINOR : 0 ) |
+ ( $bot ? EDIT_FORCE_BOT : 0 ) |
+ ( $autoSummary ? EDIT_AUTOSUMMARY : 0 ) |
+ ( $noRC ? EDIT_SUPPRESS_RC : 0 ) );
+ if ( $status->isOK() ) {
+ $this->output( "done\n" );
+ $exit = 0;
+ } else {
+ $this->output( "failed\n" );
+ $exit = 1;
+ }
+ if ( !$status->isGood() ) {
+ $this->output( $status->getWikiText() . "\n" );
+ }
+ exit( $exit );
+ }
}
-$wgTitle = Title::newFromText( $args[0] );
-if ( !$wgTitle ) {
- print "Invalid title\n";
- exit( 1 );
-}
-
-$wgArticle = new Article( $wgTitle );
-
-# Read the text
-$text = file_get_contents( 'php://stdin' );
-
-# Do the edit
-print "Saving... ";
-$status = $wgArticle->doEdit( $text, $summary,
- ( $minor ? EDIT_MINOR : 0 ) |
- ( $bot ? EDIT_FORCE_BOT : 0 ) |
- ( $autoSummary ? EDIT_AUTOSUMMARY : 0 ) |
- ( $noRC ? EDIT_SUPPRESS_RC : 0 ) );
-if ( $status->isOK() ) {
- print "done\n";
- $exit = 0;
-} else {
- print "failed\n";
- $exit = 1;
-}
-if ( !$status->isGood() ) {
- print $status->getWikiText() . "\n";
-}
-exit( $exit );
+$maintClass = "EditCLI";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/fetchInterwiki.pl b/maintenance/fetchInterwiki.pl
deleted file mode 100644
index cb56a6df..00000000
--- a/maintenance/fetchInterwiki.pl
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env perl
-# Copyright (C) 2005 Ævar Arnfjörð Bjarmason
-use strict;
-use warnings;
-use Socket;
-
-# Conf
-my $map = &get(&url('http://usemod.com/intermap.txt'));
-
-# --- #
-my $cont;
-my @map = split /\n/, $map;
-
-$cont .= '<?php
-# Note: this file is generated by maintenance/fetchInterwiki.pl
-# Edit and rerun that script rather than modifying this directly.
-
-/* private */ $wgValidInterwikis = array(
-';
-
-$cont .= "\t# The usemod interwiki map\n";
-for (my $i=0;$i<=$#map;++$i) {
- my ($name, $url) = $map[$i] =~ m#^([^ ]+) (.+)#i;
- $cont .= "\t'$name' => '$url\$1',\n";
-}
-
-my @iso = qw(
-aa ab af als am ar as ay az ba be bg bh bi bn bo bs ca chr co cs csb cy da de dk:da dz el en eo
-es et eu fa fi fj fo fr fy ga gd gl gn gu gv ha he hi hr hu hy ia id ik io is it iu ja jv ka kk
-kl km kn ko ks ku ky la lo lt lv mg mi mk ml mn mo mr ms my na nah nb nds ne nl no oc om or pa
-pl ps pt qu rm rn ro ru rw sa sd sg sh si sk sl sm sn so sq sr ss st su sv sw ta te tg th ti tk
-tl tn to tp tpi tr ts tt tw ug uk ur uz vi vo wa wo xh yi yo za zh zh-cn zh-tw zu);
-
-$cont .= '
- # Some custom additions:
- "ReVo" => "http://purl.org/NET/voko/revo/art/$1.html",
- # eg [[ReVo:cerami]], [[ReVo:astero]] - note X-sensitive!
- "EcheI" => "http://www.ikso.net/cgi-bin/wiki.pl?$1",
- "E\\xc4\\x89eI" => "http://www.ikso.net/cgi-bin/wiki.pl?$1",
- "UnuMondo" => "http://unumondo.com/cgi-bin/wiki.pl?$1", # X-sensitive!
- "JEFO" => "http://esperanto.jeunes.free.fr/vikio/index.php?$1",
- "PMEG" => "http://www.bertilow.com/pmeg/$1.php",
- # ekz [[PMEG:gramatiko/kunligaj vortetoj/au]]
- "EnciclopediaLibre" => "http://enciclopedia.us.es/wiki.phtml?title=$1",
-
- # Wikipedia-specific stuff:
- # Special cases
- "w" => "http://www.wikipedia.org/wiki/$1",
- "m" => "http://meta.wikipedia.org/wiki/$1",
- "meta" => "http://meta.wikipedia.org/wiki/$1",
- "sep11" => "http://sep11.wikipedia.org/wiki/$1",
- "simple"=> "http://simple.wikipedia.com/wiki.cgi?$1",
- "wiktionary" => "http://wiktionary.wikipedia.org/wiki/$1",
- "PageHistory" => "http://www.wikipedia.org/w/wiki.phtml?title=$1&action=history",
- "UserContributions" => "http://www.wikipedia.org/w/wiki.phtml?title=Special:Contributions&target=$1",
- "BackLinks" => "http://www.wikipedia.org/w/wiki.phtml?title=Special:Whatlinkshere&target=$1",
-
- # ISO 639 2-letter language codes
-';
-
-for(my $i=0; $i<=$#iso;++$i) {
- my @arr = split /:/, $iso[$i];
- $cont .= "\t";
- $cont .= "'$arr[0]' => 'http://";
-
- if ($arr[1]) {
- $cont .= $arr[1];
- } else {
- $cont .= $arr[0];
- }
- $cont .= ".wikipedia.org/wiki/\$1',\n";
-}
-
-$cont .= '
-);
-?>
-';
-
-open IW, ">Interwiki.php";
-print IW $cont;
-close IW;
-
-sub get {
- my ($host, $url) = @_;
- my $cont;
- my $eat;
-
- my $proto = getprotobyname('tcp');
- socket(Socket, AF_INET, SOCK_STREAM, $proto);
- my $iaddr = inet_aton("$host");
- my $port = getservbyname('http', 'tcp');
- my $sin = sockaddr_in($port, $iaddr);
- connect(Socket, $sin);
- send Socket, "GET $url HTTP/1.0\r\nHost: $host\r\n\r\n",0;
- while (<Socket>) {
- $cont .= $_ if $eat; # mmm, food
- ++$eat if ($_ =~ /^(\n|\r\n|)$/);
- }
- return $cont;
-}
-
-sub url {my ($server, $path) = $_[0] =~ m#.*(?=//)//([^/]*)(.*)#g;}
diff --git a/maintenance/fetchText.php b/maintenance/fetchText.php
index 91b78be3..746ef8ad 100644
--- a/maintenance/fetchText.php
+++ b/maintenance/fetchText.php
@@ -2,38 +2,66 @@
/**
* Communications protocol...
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require "commandLine.inc";
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$db = wfGetDB( DB_SLAVE );
-$stdin = fopen( "php://stdin", "rt" );
-while( !feof( $stdin ) ) {
- $line = fgets( $stdin );
- if( $line === false ) {
- // We appear to have lost contact...
- break;
+class FetchText extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Fetch the revision text from an old_id";
}
- $textId = intval( $line );
- $text = doGetText( $db, $textId );
- echo strlen( $text ) . "\n";
- echo $text;
-}
-/**
- * May throw a database error if, say, the server dies during query.
- */
-function doGetText( $db, $id ) {
- $id = intval( $id );
- $row = $db->selectRow( 'text',
- array( 'old_text', 'old_flags' ),
- array( 'old_id' => $id ),
- 'TextPassDumper::getText' );
- $text = Revision::getRevisionText( $row );
- if( $text === false ) {
- return false;
+ public function execute() {
+ $db = wfGetDB( DB_SLAVE );
+ $stdin = $this->getStdin();
+ while( !feof( $stdin ) ) {
+ $line = fgets( $stdin );
+ if( $line === false ) {
+ // We appear to have lost contact...
+ break;
+ }
+ $textId = intval( $line );
+ $text = $this->doGetText( $db, $textId );
+ $this->output( strlen( $text ) . "\n". $text );
+ }
+ }
+
+ /**
+ * May throw a database error if, say, the server dies during query.
+ * @param $db Database object
+ * @param $id int The old_id
+ * @return String
+ */
+ private function doGetText( $db, $id ) {
+ $id = intval( $id );
+ $row = $db->selectRow( 'text',
+ array( 'old_text', 'old_flags' ),
+ array( 'old_id' => $id ),
+ 'TextPassDumper::getText' );
+ $text = Revision::getRevisionText( $row );
+ if( $text === false ) {
+ return false;
+ }
+ return $text;
}
- return $text;
}
+
+$maintClass = "FetchText";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/findhooks.php b/maintenance/findhooks.php
index 64fe9a54..13236b6b 100644
--- a/maintenance/findhooks.php
+++ b/maintenance/findhooks.php
@@ -12,7 +12,21 @@
*
* Any instance of wfRunHooks that doesn't meet these parameters will be noted.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*
* @author Ashar Voultoiz <hashar@altern.org>
@@ -20,139 +34,174 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public Licence 2.0 or later
*/
-/** This is a command line script*/
-require('commandLine.inc');
-# GLOBALS
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$doc = $IP . '/docs/hooks.txt';
-$pathinc = array(
- $IP.'/',
- $IP.'/includes/',
- $IP.'/includes/api/',
- $IP.'/includes/db/',
- $IP.'/includes/diff/',
- $IP.'/includes/filerepo/',
- $IP.'/includes/parser/',
- $IP.'/includes/specials/',
- $IP.'/languages/',
- $IP.'/maintenance/',
- $IP.'/skins/',
-);
-
-# FUNCTIONS
+class FindHooks extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Find hooks that are undocumented, missing, or just plain wrong";
+ $this->addOption( 'online', 'Check against mediawiki.org hook documentation' );
+ }
-/**
- * @return array of documented hooks
- */
-function getHooksFromDoc() {
- global $doc, $options;
- $m = array();
- if( isset( $options['online'] ) ){
- $content = Http::get( 'http://www.mediawiki.org/w/index.php?title=Manual:Hooks&action=raw' );
- preg_match_all( '/\[\[\/([a-zA-Z0-9-_:]+)\|/', $content, $m );
- } else {
- $content = file_get_contents( $doc );
- preg_match_all( "/\n'(.*?)'/", $content, $m );
+ public function getDbType() {
+ return Maintenance::DB_NONE;
}
- return array_unique( $m[1] );
-}
-/**
- * Get hooks from a PHP file
- * @param $file Full filename to the PHP file.
- * @return array of hooks found.
- */
-function getHooksFromFile( $file ) {
- $content = file_get_contents( $file );
- $m = array();
- preg_match_all( '/wfRunHooks\(\s*([\'"])(.*?)\1/', $content, $m);
- return $m[2];
-}
+ public function execute() {
+ global $IP;
-/**
- * Get hooks from the source code.
- * @param $path Directory where the include files can be found
- * @return array of hooks found.
- */
-function getHooksFromPath( $path ) {
- $hooks = array();
- if( $dh = opendir($path) ) {
- while(($file = readdir($dh)) !== false) {
- if( filetype($path.$file) == 'file' ) {
- $hooks = array_merge( $hooks, getHooksFromFile($path.$file) );
+ $documented = $this->getHooksFromDoc( $IP . '/docs/hooks.txt' );
+ $potential = array();
+ $bad = array();
+ $pathinc = array(
+ $IP.'/',
+ $IP.'/includes/',
+ $IP.'/includes/api/',
+ $IP.'/includes/db/',
+ $IP.'/includes/diff/',
+ $IP.'/includes/filerepo/',
+ $IP.'/includes/parser/',
+ $IP.'/includes/search/',
+ $IP.'/includes/specials/',
+ $IP.'/includes/upload/',
+ $IP.'/languages/',
+ $IP.'/maintenance/',
+ $IP.'/skins/',
+ );
+
+ foreach( $pathinc as $dir ) {
+ $potential = array_merge( $potential, $this->getHooksFromPath( $dir ) );
+ $bad = array_merge( $bad, $this->getBadHooksFromPath( $dir ) );
+ }
+
+ $potential = array_unique( $potential );
+ $bad = array_unique( $bad );
+ $todo = array_diff( $potential, $documented );
+ $deprecated = array_diff( $documented, $potential );
+
+ // let's show the results:
+ $this->printArray('Undocumented', $todo );
+ $this->printArray('Documented and not found', $deprecated );
+ $this->printArray('Unclear hook calls', $bad );
+
+ if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
+ $this->output( "Looks good!\n" );
+ }
+
+ /**
+ * Get the hook documentation, either locally or from mediawiki.org
+ * @return array of documented hooks
+ */
+ private function getHooksFromDoc( $doc ) {
+ if( $this->hasOption( 'online' ) ){
+ // All hooks
+ $allhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&cmlimit=500&format=php' );
+ $allhookdata = unserialize( $allhookdata );
+ $allhooks = array();
+ foreach( $allhookdata['query']['categorymembers'] as $page ) {
+ $found = preg_match( '/Manual\:Hooks\/([a-zA-Z0-9- :]+)/', $page['title'], $matches );
+ if( $found ) {
+ $hook = str_replace( ' ', '_', $matches[1] );
+ $allhooks[] = $hook;
+ }
+ }
+ // Removed hooks
+ $oldhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Removed_hooks&cmlimit=500&format=php' );
+ $oldhookdata = unserialize( $oldhookdata );
+ $removed = array();
+ foreach( $oldhookdata['query']['categorymembers'] as $page ) {
+ $found = preg_match( '/Manual\:Hooks\/([a-zA-Z0-9- :]+)/', $page['title'], $matches );
+ if( $found ) {
+ $hook = str_replace( ' ', '_', $matches[1] );
+ $removed[] = $hook;
+ }
}
+ return array_diff( $allhooks, $removed );
+ } else {
+ $m = array();
+ $content = file_get_contents( $doc );
+ preg_match_all( "/\n'(.*?)'/", $content, $m );
+ return array_unique( $m[1] );
}
- closedir($dh);
}
- return $hooks;
-}
-/**
- * Get bad hooks (where the hook name could not be determined) from a PHP file
- * @param $file Full filename to the PHP file.
- * @return array of bad wfRunHooks() lines
- */
-function getBadHooksFromFile( $file ) {
- $content = file_get_contents( $file );
- $m = array();
- # We want to skip the "function wfRunHooks()" one. :)
- preg_match_all( '/(?<!function )wfRunHooks\(\s*[^\s\'"].*/', $content, $m);
- $list = array();
- foreach( $m[0] as $match ){
- $list[] = $match . "(" . $file . ")";
+ /**
+ * Get hooks from a PHP file
+ * @param $file Full filename to the PHP file.
+ * @return array of hooks found.
+ */
+ private function getHooksFromFile( $file ) {
+ $content = file_get_contents( $file );
+ $m = array();
+ preg_match_all( '/wfRunHooks\(\s*([\'"])(.*?)\1/', $content, $m);
+ return $m[2];
}
- return $list;
-}
-/**
- * Get bad hooks from the source code.
- * @param $path Directory where the include files can be found
- * @return array of bad wfRunHooks() lines
- */
-function getBadHooksFromPath( $path ) {
- $hooks = array();
- if( $dh = opendir($path) ) {
- while(($file = readdir($dh)) !== false) {
- # We don't want to read this file as it contains bad calls to wfRunHooks()
- if( filetype( $path.$file ) == 'file' && !$path.$file == __FILE__ ) {
- $hooks = array_merge( $hooks, getBadHooksFromFile($path.$file) );
+ /**
+ * Get hooks from the source code.
+ * @param $path Directory where the include files can be found
+ * @return array of hooks found.
+ */
+ private function getHooksFromPath( $path ) {
+ $hooks = array();
+ if( $dh = opendir($path) ) {
+ while(($file = readdir($dh)) !== false) {
+ if( filetype($path.$file) == 'file' ) {
+ $hooks = array_merge( $hooks, $this->getHooksFromFile($path.$file) );
+ }
}
+ closedir($dh);
}
- closedir($dh);
+ return $hooks;
}
- return $hooks;
-}
-/**
- * Nicely output the array
- * @param $msg A message to show before the value
- * @param $arr An array
- * @param $sort Boolean : wheter to sort the array (Default: true)
- */
-function printArray( $msg, $arr, $sort = true ) {
- if($sort) asort($arr);
- foreach($arr as $v) echo "$msg: $v\n";
-}
+ /**
+ * Get bad hooks (where the hook name could not be determined) from a PHP file
+ * @param $file Full filename to the PHP file.
+ * @return array of bad wfRunHooks() lines
+ */
+ private function getBadHooksFromFile( $file ) {
+ $content = file_get_contents( $file );
+ $m = array();
+ # We want to skip the "function wfRunHooks()" one. :)
+ preg_match_all( '/(?<!function )wfRunHooks\(\s*[^\s\'"].*/', $content, $m);
+ $list = array();
+ foreach( $m[0] as $match ){
+ $list[] = $match . "(" . $file . ")";
+ }
+ return $list;
+ }
-# MAIN
+ /**
+ * Get bad hooks from the source code.
+ * @param $path Directory where the include files can be found
+ * @return array of bad wfRunHooks() lines
+ */
+ private function getBadHooksFromPath( $path ) {
+ $hooks = array();
+ if( $dh = opendir($path) ) {
+ while(($file = readdir($dh)) !== false) {
+ # We don't want to read this file as it contains bad calls to wfRunHooks()
+ if( filetype( $path.$file ) == 'file' && !$path.$file == __FILE__ ) {
+ $hooks = array_merge( $hooks, $this->getBadHooksFromFile($path.$file) );
+ }
+ }
+ closedir($dh);
+ }
+ return $hooks;
+ }
-$documented = getHooksFromDoc($doc);
-$potential = array();
-$bad = array();
-foreach( $pathinc as $dir ) {
- $potential = array_merge( $potential, getHooksFromPath( $dir ) );
- $bad = array_merge( $bad, getBadHooksFromPath( $dir ) );
+ /**
+ * Nicely output the array
+ * @param $msg A message to show before the value
+ * @param $arr An array
+ * @param $sort Boolean : wheter to sort the array (Default: true)
+ */
+ private function printArray( $msg, $arr, $sort = true ) {
+ if($sort) asort($arr);
+ foreach($arr as $v) $this->output( "$msg: $v\n" );
+ }
}
-$potential = array_unique( $potential );
-$bad = array_unique( $bad );
-$todo = array_diff( $potential, $documented );
-$deprecated = array_diff( $documented, $potential );
-
-// let's show the results:
-printArray('undocumented', $todo );
-printArray('not found', $deprecated );
-printArray('unclear hook calls', $bad );
-
-if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
- echo "Looks good!\n";
+$maintClass = "FindHooks";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/fixSlaveDesync.php b/maintenance/fixSlaveDesync.php
index 7817bc56..c585beb1 100644
--- a/maintenance/fixSlaveDesync.php
+++ b/maintenance/fixSlaveDesync.php
@@ -1,196 +1,217 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$wgUseRootUser = true;
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-//$wgDebugLogFile = '/dev/stdout';
+class FixSlaveDesync extends Maintenance {
+ public function __construct() {
+ global $wgUseRootUser;
+ $wgUseRootUser = true;
-$slaveIndexes = array();
-for ( $i = 1; $i < count( $wgDBservers ); $i++ ) {
- if ( wfGetLB()->isNonZeroLoad( $i ) ) {
- $slaveIndexes[] = $i;
+ parent::__construct();
+ $this->mDescription = "";
+
}
-}
-/*
-foreach ( wfGetLB()->mServers as $i => $server ) {
- wfGetLB()->mServers[$i]['flags'] |= DBO_DEBUG;
-}*/
-$reportingInterval = 1000;
-
-if ( isset( $args[0] ) ) {
- desyncFixPage( $args[0] );
-} else {
- $dbw = wfGetDB( DB_MASTER );
- $maxPage = $dbw->selectField( 'page', 'MAX(page_id)', false, 'fixDesync.php' );
- $corrupt = findPageLatestCorruption();
- foreach ( $corrupt as $id => $dummy ) {
- desyncFixPage( $id );
- }
- /*
- for ( $i=1; $i <= $maxPage; $i++ ) {
- desyncFixPage( $i );
- if ( !($i % $reportingInterval) ) {
- print "$i\n";
+
+ public function execute() {
+ global $slaveIndexes, $wgDBservers;
+ $slaveIndexes = array();
+ for ( $i = 1; $i < count( $wgDBservers ); $i++ ) {
+ if ( wfGetLB()->isNonZeroLoad( $i ) ) {
+ $slaveIndexes[] = $i;
+ }
}
- }*/
-}
-function findPageLatestCorruption() {
- $desync = array();
- $n = 0;
- $dbw = wfGetDB( DB_MASTER );
- $masterIDs = array();
- $res = $dbw->select( 'page', array( 'page_id', 'page_latest' ), array( 'page_id<6054123' ), __METHOD__ );
- print "Number of pages: " . $dbw->numRows( $res ) . "\n";
- while ( $row = $dbw->fetchObject( $res ) ) {
- $masterIDs[$row->page_id] = $row->page_latest;
- if ( !( ++$n % 10000 ) ) {
- print "$n\r";
+ if ( $this->hasArg() ) {
+ $this->desyncFixPage( $this->getArg() );
+ } else {
+ $dbw = wfGetDB( DB_MASTER );
+ $maxPage = $dbw->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
+ $corrupt = $this->findPageLatestCorruption();
+ foreach ( $corrupt as $id => $dummy ) {
+ $this->desyncFixPage( $id );
+ }
}
}
- print "\n";
- $dbw->freeResult( $res );
-
- global $slaveIndexes;
- foreach ( $slaveIndexes as $i ) {
- $db = wfGetDB( $i );
- $res = $db->select( 'page', array( 'page_id', 'page_latest' ), array( 'page_id<6054123' ), __METHOD__ );
- while ( $row = $db->fetchObject( $res ) ) {
- if ( isset( $masterIDs[$row->page_id] ) && $masterIDs[$row->page_id] != $row->page_latest ) {
- $desync[$row->page_id] = true;
- print $row->page_id . "\t";
+
+ /**
+ * Find all pages that have a corrupted page_latest
+ * @return array
+ */
+ private function findPageLatestCorruption() {
+ $desync = array();
+ $n = 0;
+ $dbw = wfGetDB( DB_MASTER );
+ $masterIDs = array();
+ $res = $dbw->select( 'page', array( 'page_id', 'page_latest' ), array( 'page_id<6054123' ), __METHOD__ );
+ $this->output( "Number of pages: " . $dbw->numRows( $res ) . "\n" );
+ foreach ( $res as $row ) {
+ $masterIDs[$row->page_id] = $row->page_latest;
+ if ( !( ++$n % 10000 ) ) {
+ $this->output( "$n\r" );
}
}
- $db->freeResult( $res );
+ $this->output( "\n" );
+ $dbw->freeResult( $res );
+
+ global $slaveIndexes;
+ foreach ( $slaveIndexes as $i ) {
+ $db = wfGetDB( $i );
+ $res = $db->select( 'page', array( 'page_id', 'page_latest' ), array( 'page_id<6054123' ), __METHOD__ );
+ foreach ( $res as $row ) {
+ if ( isset( $masterIDs[$row->page_id] ) && $masterIDs[$row->page_id] != $row->page_latest ) {
+ $desync[$row->page_id] = true;
+ $this->output( $row->page_id . "\t" );
+ }
+ }
+ $db->freeResult( $res );
+ }
+ $this->output( "\n" );
+ return $desync;
}
- print "\n";
- return $desync;
-}
-function desyncFixPage( $pageID ) {
- global $slaveIndexes;
- $fname = 'desyncFixPage';
+ /**
+ * Fix a broken page entry
+ * @param $pageID int The page_id to fix
+ */
+ private function desyncFixPage( $pageID ) {
+ global $slaveIndexes;
- # Check for a corrupted page_latest
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
- $realLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ),
- $fname, 'FOR UPDATE' );
- #list( $masterFile, $masterPos ) = $dbw->getMasterPos();
- $found = false;
- foreach ( $slaveIndexes as $i ) {
- $db = wfGetDB( $i );
- /*
- if ( !$db->masterPosWait( $masterFile, $masterPos, 10 ) ) {
- echo "Slave is too lagged, aborting\n";
- $dbw->commit();
- sleep(10);
- return;
- }*/
- $latest = $db->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), $fname );
- $max = $db->selectField( 'revision', 'MAX(rev_id)', false, $fname );
- if ( $latest != $realLatest && $realLatest < $max ) {
- print "page_latest corrupted in page $pageID, server $i\n";
- $found = true;
- break;
+ # Check for a corrupted page_latest
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ $realLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ),
+ __METHOD__, 'FOR UPDATE' );
+ #list( $masterFile, $masterPos ) = $dbw->getMasterPos();
+ $found = false;
+ foreach ( $slaveIndexes as $i ) {
+ $db = wfGetDB( $i );
+ /*
+ if ( !$db->masterPosWait( $masterFile, $masterPos, 10 ) ) {
+ $this->output( "Slave is too lagged, aborting\n" );
+ $dbw->commit();
+ sleep(10);
+ return;
+ }*/
+ $latest = $db->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), __METHOD__ );
+ $max = $db->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
+ if ( $latest != $realLatest && $realLatest < $max ) {
+ $this->output( "page_latest corrupted in page $pageID, server $i\n" );
+ $found = true;
+ break;
+ }
+ }
+ if ( !$found ) {
+ $this->output( "page_id $pageID seems fine\n" );
+ $dbw->commit();
+ return;
}
- }
- if ( !$found ) {
- print "page_id $pageID seems fine\n";
- $dbw->commit();
- return;
- }
- # Find the missing revisions
- $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ),
- $fname, 'FOR UPDATE' );
- $masterIDs = array();
- while ( $row = $dbw->fetchObject( $res ) ) {
- $masterIDs[] = $row->rev_id;
- }
- $dbw->freeResult( $res );
+ # Find the missing revisions
+ $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ),
+ __METHOD__, 'FOR UPDATE' );
+ $masterIDs = array();
+ foreach ( $res as $row ) {
+ $masterIDs[] = $row->rev_id;
+ }
+ $dbw->freeResult( $res );
- $res = $db->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), $fname );
- $slaveIDs = array();
- while ( $row = $db->fetchObject( $res ) ) {
- $slaveIDs[] = $row->rev_id;
- }
- $db->freeResult( $res );
- if ( count( $masterIDs ) < count( $slaveIDs ) ) {
- $missingIDs = array_diff( $slaveIDs, $masterIDs );
- if ( count( $missingIDs ) ) {
- print "Found " . count( $missingIDs ) . " lost in master, copying from slave... ";
- $dbFrom = $db;
- $found = true;
- $toMaster = true;
- } else {
- $found = false;
+ $res = $db->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), __METHOD__ );
+ $slaveIDs = array();
+ foreach ( $res as $row ) {
+ $slaveIDs[] = $row->rev_id;
}
- } else {
- $missingIDs = array_diff( $masterIDs, $slaveIDs );
- if ( count( $missingIDs ) ) {
- print "Found " . count( $missingIDs ) . " missing revision(s), copying from master... ";
- $dbFrom = $dbw;
- $found = true;
- $toMaster = false;
+ $db->freeResult( $res );
+ if ( count( $masterIDs ) < count( $slaveIDs ) ) {
+ $missingIDs = array_diff( $slaveIDs, $masterIDs );
+ if ( count( $missingIDs ) ) {
+ $this->output( "Found " . count( $missingIDs ) . " lost in master, copying from slave... " );
+ $dbFrom = $db;
+ $found = true;
+ $toMaster = true;
+ } else {
+ $found = false;
+ }
} else {
- $found = false;
+ $missingIDs = array_diff( $masterIDs, $slaveIDs );
+ if ( count( $missingIDs ) ) {
+ $this->output( "Found " . count( $missingIDs ) . " missing revision(s), copying from master... " );
+ $dbFrom = $dbw;
+ $found = true;
+ $toMaster = false;
+ } else {
+ $found = false;
+ }
}
- }
- if ( $found ) {
- foreach ( $missingIDs as $rid ) {
- print "$rid ";
- # Revision
- $row = $dbFrom->selectRow( 'revision', '*', array( 'rev_id' => $rid ), $fname );
- if ( $toMaster ) {
- $id = $dbw->selectField( 'revision', 'rev_id', array( 'rev_id' => $rid ),
- $fname, 'FOR UPDATE' );
- if ( $id ) {
- echo "Revision already exists\n";
- $found = false;
- break;
+ if ( $found ) {
+ foreach ( $missingIDs as $rid ) {
+ $this->output( "$rid " );
+ # Revision
+ $row = $dbFrom->selectRow( 'revision', '*', array( 'rev_id' => $rid ), __METHOD__ );
+ if ( $toMaster ) {
+ $id = $dbw->selectField( 'revision', 'rev_id', array( 'rev_id' => $rid ),
+ __METHOD__, 'FOR UPDATE' );
+ if ( $id ) {
+ $this->output( "Revision already exists\n" );
+ $found = false;
+ break;
+ } else {
+ $dbw->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
+ }
} else {
- $dbw->insert( 'revision', get_object_vars( $row ), $fname, 'IGNORE' );
+ foreach ( $slaveIndexes as $i ) {
+ $db = wfGetDB( $i );
+ $db->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
+ }
}
- } else {
- foreach ( $slaveIndexes as $i ) {
- $db = wfGetDB( $i );
- $db->insert( 'revision', get_object_vars( $row ), $fname, 'IGNORE' );
+
+ # Text
+ $row = $dbFrom->selectRow( 'text', '*', array( 'old_id' => $row->rev_text_id ), __METHOD__ );
+ if ( $toMaster ) {
+ $dbw->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
+ } else {
+ foreach ( $slaveIndexes as $i ) {
+ $db = wfGetDB( $i );
+ $db->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
+ }
}
}
+ $this->output( "done\n" );
+ }
- # Text
- $row = $dbFrom->selectRow( 'text', '*', array( 'old_id' => $row->rev_text_id ), $fname );
+ if ( $found ) {
+ $this->output( "Fixing page_latest... " );
if ( $toMaster ) {
- $dbw->insert( 'text', get_object_vars( $row ), $fname, 'IGNORE' );
+ #$dbw->update( 'page', array( 'page_latest' => $realLatest ), array( 'page_id' => $pageID ), __METHOD__ );
} else {
foreach ( $slaveIndexes as $i ) {
$db = wfGetDB( $i );
- $db->insert( 'text', get_object_vars( $row ), $fname, 'IGNORE' );
+ $db->update( 'page', array( 'page_latest' => $realLatest ), array( 'page_id' => $pageID ), __METHOD__ );
}
}
+ $this->output( "done\n" );
}
- print "done\n";
- }
-
- if ( $found ) {
- print "Fixing page_latest... ";
- if ( $toMaster ) {
- #$dbw->update( 'page', array( 'page_latest' => $realLatest ), array( 'page_id' => $pageID ), $fname );
- } else {
- foreach ( $slaveIndexes as $i ) {
- $db = wfGetDB( $i );
- $db->update( 'page', array( 'page_latest' => $realLatest ), array( 'page_id' => $pageID ), $fname );
- }
- }
- print "done\n";
+ $dbw->commit();
}
- $dbw->commit();
}
-
+$maintClass = "FixSlaveDesync";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/fixTimestamps.php b/maintenance/fixTimestamps.php
index f6794141..ea102fb8 100644
--- a/maintenance/fixTimestamps.php
+++ b/maintenance/fixTimestamps.php
@@ -6,101 +6,117 @@
* and must bracket the damage. There must be a majority of good timestamps in the
* search period.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-
-require_once( 'commandLine.inc' );
-
-if ( count( $args ) < 3 ) {
- echo "Usage: php fixTimestamps.php <offset in hours> <start time> <end time>\n";
- exit(1);
-}
-
-$offset = $args[0] * 3600;
-$start = $args[1];
-$end = $args[2];
-$fname = 'fixTimestamps.php';
-$grace = 60; // maximum normal clock offset
-
-# Find bounding revision IDs
-$dbw = wfGetDB( DB_MASTER );
-$revisionTable = $dbw->tableName( 'revision' );
-$res = $dbw->query( "SELECT MIN(rev_id) as minrev, MAX(rev_id) as maxrev FROM $revisionTable " .
- "WHERE rev_timestamp BETWEEN '{$start}' AND '{$end}'", $fname );
-$row = $dbw->fetchObject( $res );
-
-if ( is_null( $row->minrev ) ) {
- echo "No revisions in search period.\n";
- exit(0);
-}
-
-$minRev = $row->minrev;
-$maxRev = $row->maxrev;
-
-# Select all timestamps and IDs
-$sql = "SELECT rev_id, rev_timestamp FROM $revisionTable " .
- "WHERE rev_id BETWEEN $minRev AND $maxRev";
-if ( $offset > 0 ) {
- $sql .= " ORDER BY rev_id DESC";
- $expectedSign = -1;
-} else {
- $expectedSign = 1;
-}
-
-$res = $dbw->query( $sql, $fname );
-
-$lastNormal = 0;
-$badRevs = array();
-$numGoodRevs = 0;
-
-while ( $row = $dbw->fetchObject( $res ) ) {
- $timestamp = wfTimestamp( TS_UNIX, $row->rev_timestamp );
- $delta = $timestamp - $lastNormal;
- $sign = $delta == 0 ? 0 : $delta / abs( $delta );
- if ( $sign == 0 || $sign == $expectedSign ) {
- // Monotonic change
- $lastNormal = $timestamp;
- ++ $numGoodRevs;
- continue;
- } elseif ( abs( $delta ) <= $grace ) {
- // Non-monotonic change within grace interval
- ++ $numGoodRevs;
- continue;
- } else {
- // Non-monotonic change larger than grace interval
- $badRevs[] = $row->rev_id;
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class FixTimestamps extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "";
+ $this->addArg( 'offset', '' );
+ $this->addArg( 'start', 'Starting timestamp' );
+ $this->addArg( 'end', 'Ending timestamp' );
}
-}
-$dbw->freeResult( $res );
-
-$numBadRevs = count( $badRevs );
-if ( $numBadRevs > $numGoodRevs ) {
- echo
-"The majority of revisions in the search interval are marked as bad.
-Are you sure the offset ($offset) has the right sign? Positive means the clock
-was incorrectly set forward, negative means the clock was incorrectly set back.
-
-If the offset is right, then increase the search interval until there are enough
-good revisions to provide a majority reference.
-";
-
- exit(1);
-} elseif ( $numBadRevs == 0 ) {
- echo "No bad revisions found.\n";
- exit(0);
+ public function execute() {
+ $offset = $this->getArg(0) * 3600;
+ $start = $this->getArg(1);
+ $end = $this->getArg(2);
+ $grace = 60; // maximum normal clock offset
+
+ # Find bounding revision IDs
+ $dbw = wfGetDB( DB_MASTER );
+ $revisionTable = $dbw->tableName( 'revision' );
+ $res = $dbw->query( "SELECT MIN(rev_id) as minrev, MAX(rev_id) as maxrev FROM $revisionTable " .
+ "WHERE rev_timestamp BETWEEN '{$start}' AND '{$end}'", __METHOD__ );
+ $row = $dbw->fetchObject( $res );
+
+ if ( is_null( $row->minrev ) ) {
+ $this->error( "No revisions in search period.", true );
+ }
+
+ $minRev = $row->minrev;
+ $maxRev = $row->maxrev;
+
+ # Select all timestamps and IDs
+ $sql = "SELECT rev_id, rev_timestamp FROM $revisionTable " .
+ "WHERE rev_id BETWEEN $minRev AND $maxRev";
+ if ( $offset > 0 ) {
+ $sql .= " ORDER BY rev_id DESC";
+ $expectedSign = -1;
+ } else {
+ $expectedSign = 1;
+ }
+
+ $res = $dbw->query( $sql, __METHOD__ );
+
+ $lastNormal = 0;
+ $badRevs = array();
+ $numGoodRevs = 0;
+
+ foreach ( $res as $row ) {
+ $timestamp = wfTimestamp( TS_UNIX, $row->rev_timestamp );
+ $delta = $timestamp - $lastNormal;
+ $sign = $delta == 0 ? 0 : $delta / abs( $delta );
+ if ( $sign == 0 || $sign == $expectedSign ) {
+ // Monotonic change
+ $lastNormal = $timestamp;
+ ++ $numGoodRevs;
+ continue;
+ } elseif ( abs( $delta ) <= $grace ) {
+ // Non-monotonic change within grace interval
+ ++ $numGoodRevs;
+ continue;
+ } else {
+ // Non-monotonic change larger than grace interval
+ $badRevs[] = $row->rev_id;
+ }
+ }
+ $dbw->freeResult( $res );
+
+ $numBadRevs = count( $badRevs );
+ if ( $numBadRevs > $numGoodRevs ) {
+ $this->error(
+ "The majority of revisions in the search interval are marked as bad.
+
+ Are you sure the offset ($offset) has the right sign? Positive means the clock
+ was incorrectly set forward, negative means the clock was incorrectly set back.
+
+ If the offset is right, then increase the search interval until there are enough
+ good revisions to provide a majority reference.", true );
+ } elseif ( $numBadRevs == 0 ) {
+ $this->output( "No bad revisions found.\n" );
+ exit(0);
+ }
+
+ $this->output( sprintf( "Fixing %d revisions (%.2f%% of revisions in search interval)\n",
+ $numBadRevs, $numBadRevs / ($numGoodRevs + $numBadRevs) * 100 ) );
+
+ $fixup = -$offset;
+ $sql = "UPDATE $revisionTable " .
+ "SET rev_timestamp=DATE_FORMAT(DATE_ADD(rev_timestamp, INTERVAL $fixup SECOND), '%Y%m%d%H%i%s') " .
+ "WHERE rev_id IN (" . $dbw->makeList( $badRevs ) . ')';
+ $dbw->query( $sql, __METHOD__ );
+ $this->output( "Done\n" );
+ }
}
-printf( "Fixing %d revisions (%.2f%% of revisions in search interval)\n",
- $numBadRevs, $numBadRevs / ($numGoodRevs + $numBadRevs) * 100 );
-
-$fixup = -$offset;
-$sql = "UPDATE $revisionTable " .
- "SET rev_timestamp=DATE_FORMAT(DATE_ADD(rev_timestamp, INTERVAL $fixup SECOND), '%Y%m%d%H%i%s') " .
- "WHERE rev_id IN (" . $dbw->makeList( $badRevs ) . ')';
-//echo "$sql\n";
-$dbw->query( $sql, $fname );
-echo "Done\n";
-
-
+$maintClass = "FixTimestamps";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/fixUserRegistration.php b/maintenance/fixUserRegistration.php
index eb5b7f7d..d3305358 100644
--- a/maintenance/fixUserRegistration.php
+++ b/maintenance/fixUserRegistration.php
@@ -3,32 +3,53 @@
* Fix the user_registration field.
* In particular, for values which are NULL, set them to the date of the first edit
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$fname = 'fixUserRegistration.php';
-
-$dbr = wfGetDB( DB_SLAVE );
-$dbw = wfGetDB( DB_MASTER );
+class FixUserRegistration extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Fix the user_registration field";
+ }
-// Get user IDs which need fixing
-$res = $dbr->select( 'user', 'user_id', 'user_registration IS NULL', $fname );
+ public function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $dbw = wfGetDB( DB_MASTER );
-while ( $row = $dbr->fetchObject( $res ) ) {
- $id = $row->user_id;
- // Get first edit time
- $timestamp = $dbr->selectField( 'revision', 'MIN(rev_timestamp)', array( 'rev_user' => $id ), $fname );
- // Update
- if ( !empty( $timestamp ) ) {
- $dbw->update( 'user', array( 'user_registration' => $timestamp ), array( 'user_id' => $id ), $fname );
- print "$id $timestamp\n";
- } else {
- print "$id NULL\n";
+ // Get user IDs which need fixing
+ $res = $dbr->select( 'user', 'user_id', 'user_registration IS NULL', __METHOD__ );
+ foreach ( $res as $row ) {
+ $id = $row->user_id;
+ // Get first edit time
+ $timestamp = $dbr->selectField( 'revision', 'MIN(rev_timestamp)', array( 'rev_user' => $id ), __METHOD__ );
+ // Update
+ if ( !empty( $timestamp ) ) {
+ $dbw->update( 'user', array( 'user_registration' => $timestamp ), array( 'user_id' => $id ), __METHOD__ );
+ $this->output( "$id $timestamp\n" );
+ } else {
+ $this->output( "$id NULL\n" );
+ }
+ }
+ $this->output( "\n" );
}
}
-print "\n";
-
+$maintClass = "FixUserRegistration";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/fuzz-tester.php b/maintenance/fuzz-tester.php
index 9c1ddaff..6d8c57f2 100644
--- a/maintenance/fuzz-tester.php
+++ b/maintenance/fuzz-tester.php
@@ -138,7 +138,7 @@ Wiki configuration for testing:
}
// --------- End ---------
- Also add/change this in AdminSettings.php:
+ Also add/change this in LocalSettings.php:
// --------- Start ---------
$wgEnableProfileInfo = true;
$wgDBserver = "localhost"; // replace with DB server hostname
@@ -169,7 +169,7 @@ TODO:
/////////////////////////// COMMAND LINE HELP ////////////////////////////////////
// This is a command line script, load MediaWiki env (gives command line options);
-require('commandLine.inc');
+require_once( dirname(__FILE__) . '/commandLine.inc' );
// if the user asked for an explanation of command line options.
if ( isset( $options["help"] ) ) {
@@ -1320,7 +1320,7 @@ class viewPageTest extends pageTest {
"nds-nl", "nl", "nn", "no", "non", "nv", "oc", "or", "os", "pa",
"pl", "pms", "ps", "pt", "pt-br", "qu", "rmy", "ro", "ru", "sc",
"sd", "sk", "sl", "sq", "sr", "sr-ec", "sr-el",
- "su", "sv", "ta", "te", "th", "tlh", "tr", "tt", "ty", "tyv", "udm",
+ "su", "sv", "ta", "te", "th", "tr", "tt", "ty", "tyv", "udm",
"ug", "uk", "ur", "utf8", "vec", "vi", "wa", "xal", "yi", "za",
"zh", "zh-cn", "zh-hk", "zh-sg", "zh-tw", "zh-tw") ),
"returnto" => wikiFuzz::makeFuzz(2),
@@ -2447,7 +2447,7 @@ function validateHTML($text) {
if (curl_error($ch)) {
trigger_error("Curl error #: " . curl_errno($ch) . " - " . curl_error ($ch) );
print "Curl error #: " . curl_errno($ch) . " - " . curl_error ($ch) . " - exiting.\n";
- exit();
+ exit(1);
}
curl_close ($ch);
diff --git a/maintenance/gearman/gearman.inc b/maintenance/gearman/gearman.inc
index a2a4018a..514b9bac 100644
--- a/maintenance/gearman/gearman.inc
+++ b/maintenance/gearman/gearman.inc
@@ -12,7 +12,7 @@ class MWGearmanJob extends Net_Gearman_Job_Common {
socket_close( $this->conn );
# Close some more sockets
- wfGetLBFactory()->shutdown();
+ LBFactory::destroyInstance();
global $wgMemc;
$wgMemc->disconnect_all();
diff --git a/maintenance/gearman/gearmanWorker.php b/maintenance/gearman/gearmanWorker.php
index 0b26ff9f..d6f3949f 100644
--- a/maintenance/gearman/gearmanWorker.php
+++ b/maintenance/gearman/gearmanWorker.php
@@ -4,6 +4,8 @@ $optionsWithArgs = array( 'fake-job', 'procs' );
require( dirname(__FILE__).'/../commandLine.inc' );
require( dirname(__FILE__).'/gearman.inc' );
+ini_set('memory_limit', '150M' );
+
if ( isset( $options['procs'] ) ) {
$procs = $options['procs'];
if ( $procs < 1 || $procs > 1000 ) {
diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php
index 737c4eba..8ca79341 100644
--- a/maintenance/generateSitemap.php
+++ b/maintenance/generateSitemap.php
@@ -4,6 +4,21 @@ define( 'GS_TALK', -1 );
/**
* Creates a sitemap for the site
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*
* @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
@@ -16,7 +31,9 @@ define( 'GS_TALK', -1 );
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
-class GenerateSitemap {
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class GenerateSitemap extends Maintenance {
/**
* The maximum amount of urls in a sitemap file
*
@@ -68,29 +85,7 @@ class GenerateSitemap {
*
* @var array
*/
- var $priorities = array(
- // Custom main namespaces
- GS_MAIN => '0.5',
- // Custom talk namesspaces
- GS_TALK => '0.1',
- // MediaWiki standard namespaces
- NS_MAIN => '1.0',
- NS_TALK => '0.1',
- NS_USER => '0.5',
- NS_USER_TALK => '0.1',
- NS_PROJECT => '0.5',
- NS_PROJECT_TALK => '0.1',
- NS_FILE => '0.5',
- NS_FILE_TALK => '0.1',
- NS_MEDIAWIKI => '0.0',
- NS_MEDIAWIKI_TALK => '0.1',
- NS_TEMPLATE => '0.0',
- NS_TEMPLATE_TALK => '0.1',
- NS_HELP => '0.5',
- NS_HELP_TALK => '0.1',
- NS_CATEGORY => '0.5',
- NS_CATEGORY_TALK => '0.1',
- );
+ var $priorities = array();
/**
* A one-dimensional array of namespaces in the wiki
@@ -129,36 +124,58 @@ class GenerateSitemap {
var $file;
/**
- * A resource pointing to php://stderr
- *
- * @var resource
+ * Constructor
*/
- var $stderr;
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Creates a sitemap for the site";
+ $this->addOption( 'fspath', 'The file system path to save to, e.g. /tmp/sitemap' .
+ "\n\t\tdefaults to current directory", false, true );
+ $this->addOption( 'server', "The protocol and server name to use in URLs, e.g.\n" .
+ "\t\thttp://en.wikipedia.org. This is sometimes necessary because\n" .
+ "\t\tserver name detection may fail in command line scripts.", false, true );
+ $this->addOption( 'compress', 'Compress the sitemap files, can take value yes|no, default yes', false, true );
+ }
/**
- * Constructor
- *
- * @param string $fspath The path to prepend to the filenames, used to
- * save them somewhere else than in the root directory
- * @param string $path The path to append to the domain name
- * @param bool $compress Whether to compress the sitemap files
+ * Execute
*/
- function GenerateSitemap( $fspath, $compress ) {
+ public function execute() {
global $wgScriptPath;
-
+ $this->setNamespacePriorities();
$this->url_limit = 50000;
$this->size_limit = pow( 2, 20 ) * 10;
- $this->fspath = self::init_path( $fspath );
-
- $this->compress = $compress;
-
- $this->stderr = fopen( 'php://stderr', 'wt' );
+ $this->fspath = self::init_path( $this->getOption( 'fspath', getcwd() ) );
+ $this->compress = $this->getOption( 'compress', 'yes' ) !== 'no';
$this->dbr = wfGetDB( DB_SLAVE );
$this->generateNamespaces();
$this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() );
-
-
$this->findex = fopen( "{$this->fspath}sitemap-index-" . wfWikiID() . ".xml", 'wb' );
+ $this->main();
+ }
+
+ private function setNamespacePriorities() {
+ // Custom main namespaces
+ $this->priorities[GS_MAIN] = '0.5';
+ // Custom talk namesspaces
+ $this->priorities[GS_TALK] = '0.1';
+ // MediaWiki standard namespaces
+ $this->priorities[NS_MAIN] = '1.0';
+ $this->priorities[NS_TALK] = '0.1';
+ $this->priorities[NS_USER] = '0.5';
+ $this->priorities[NS_USER_TALK] = '0.1';
+ $this->priorities[NS_PROJECT] = '0.5';
+ $this->priorities[NS_PROJECT_TALK] = '0.1';
+ $this->priorities[NS_FILE] = '0.5';
+ $this->priorities[NS_FILE_TALK] = '0.1';
+ $this->priorities[NS_MEDIAWIKI] = '0.0';
+ $this->priorities[NS_MEDIAWIKI_TALK] = '0.1';
+ $this->priorities[NS_TEMPLATE] = '0.0';
+ $this->priorities[NS_TEMPLATE_TALK] = '0.1';
+ $this->priorities[NS_HELP] = '0.5';
+ $this->priorities[NS_HELP_TALK] = '0.1';
+ $this->priorities[NS_CATEGORY] = '0.5';
+ $this->priorities[NS_CATEGORY_TALK] = '0.1';
}
/**
@@ -170,7 +187,7 @@ class GenerateSitemap {
}
# Create directory if needed
if( $fspath && !is_dir( $fspath ) ) {
- mkdir( $fspath, 0755 ) or die("Can not create directory $fspath.\n");
+ wfMkdirParents( $fspath ) or die("Can not create directory $fspath.\n");
}
return realpath( $fspath ). DIRECTORY_SEPARATOR ;
@@ -180,8 +197,6 @@ class GenerateSitemap {
* Generate a one-dimensional array of existing namespaces
*/
function generateNamespaces() {
- $fname = 'GenerateSitemap::generateNamespaces';
-
// Only generate for specific namespaces if $wgSitemapNamespaces is an array.
global $wgSitemapNamespaces;
if( is_array( $wgSitemapNamespaces ) ) {
@@ -192,14 +207,14 @@ class GenerateSitemap {
$res = $this->dbr->select( 'page',
array( 'page_namespace' ),
array(),
- $fname,
+ __METHOD__,
array(
'GROUP BY' => 'page_namespace',
'ORDER BY' => 'page_namespace',
)
);
- while ( $row = $this->dbr->fetchObject( $res ) )
+ foreach ( $res as $row )
$this->namespaces[] = $row->page_namespace;
}
@@ -236,8 +251,6 @@ class GenerateSitemap {
* @return resource
*/
function getPageRes( $namespace ) {
- $fname = 'GenerateSitemap::getPageRes';
-
return $this->dbr->select( 'page',
array(
'page_namespace',
@@ -245,7 +258,7 @@ class GenerateSitemap {
'page_touched',
),
array( 'page_namespace' => $namespace ),
- $fname
+ __METHOD__
);
}
@@ -267,8 +280,8 @@ class GenerateSitemap {
$i = $smcount = 0;
$fns = $wgContLang->getFormattedNsText( $namespace );
- $this->debug( "$namespace ($fns)" );
- while ( $row = $this->dbr->fetchObject( $res ) ) {
+ $this->output( "$namespace ($fns)" );
+ foreach ( $res as $row ) {
if ( $i++ === 0 || $i === $this->url_limit + 1 || $length + $this->limit[1] + $this->limit[2] > $this->size_limit ) {
if ( $this->file !== false ) {
$this->write( $this->file, $this->closeFile() );
@@ -278,7 +291,7 @@ class GenerateSitemap {
$this->file = $this->open( $this->fspath . $filename, 'wb' );
$this->write( $this->file, $this->openFile() );
fwrite( $this->findex, $this->indexEntry( $filename ) );
- $this->debug( "\t$this->fspath$filename" );
+ $this->output( "\t$this->fspath$filename\n" );
$length = $this->limit[0];
$i = 1;
}
@@ -450,13 +463,6 @@ class GenerateSitemap {
}
/**
- * Write a string to stderr followed by a UNIX newline
- */
- function debug( $str ) {
- fwrite( $this->stderr, "$str\n" );
- }
-
- /**
* Populate $this->limit
*/
function generateLimit( $namespace ) {
@@ -470,31 +476,5 @@ class GenerateSitemap {
}
}
-if ( in_array( '--help', $argv ) ) {
- echo <<<EOT
-Usage: php generateSitemap.php [options]
- --help show this message
-
- --fspath=<path> The file system path to save to, e.g /tmp/sitemap
- Saves to current directory if not given.
-
- --server=<server> The protocol and server name to use in URLs, e.g.
- http://en.wikipedia.org. This is sometimes necessary because
- server name detection may fail in command line scripts.
-
- --compress=[yes|no] compress the sitemap files, default yes
-
-EOT;
- die( -1 );
-}
-
-$optionsWithArgs = array( 'fspath', 'server', 'compress' );
-require_once( dirname( __FILE__ ) . '/commandLine.inc' );
-
-if ( isset( $options['server'] ) ) {
- $wgServer = $options['server'];
-}
-
-$gs = new GenerateSitemap( @$options['fspath'], @$options['compress'] !== 'no' );
-$gs->main();
-
+$maintClass = "GenerateSitemap";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/getLagTimes.php b/maintenance/getLagTimes.php
index 0f750caf..bc14ae71 100644
--- a/maintenance/getLagTimes.php
+++ b/maintenance/getLagTimes.php
@@ -1,29 +1,54 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require 'commandLine.inc';
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$lb = wfGetLB();
+class GetLagTimes extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Dump replication lag times";
+ }
+
+ public function execute() {
+ $lb = wfGetLB();
-if( $lb->getServerCount() == 1 ) {
- echo "This script dumps replication lag times, but you don't seem to have\n";
- echo "a multi-host db server configuration.\n";
-} else {
- $lags = $lb->getLagTimes();
- foreach( $lags as $n => $lag ) {
- $host = $lb->getServerName( $n );
- if( IP::isValid( $host ) ) {
- $ip = $host;
- $host = gethostbyaddr( $host );
+ if( $lb->getServerCount() == 1 ) {
+ $this->error( "This script dumps replication lag times, but you don't seem to have\n"
+ . "a multi-host db server configuration." );
} else {
- $ip = gethostbyname( $host );
+ $lags = $lb->getLagTimes();
+ foreach( $lags as $n => $lag ) {
+ $host = $lb->getServerName( $n );
+ if( IP::isValid( $host ) ) {
+ $ip = $host;
+ $host = gethostbyaddr( $host );
+ } else {
+ $ip = gethostbyname( $host );
+ }
+ $starLen = min( intval( $lag ), 40 );
+ $stars = str_repeat( '*', $starLen );
+ $this->output( sprintf( "%10s %20s %3d %s\n", $ip, $host, $lag, $stars ) );
+ }
}
- $starLen = min( intval( $lag ), 40 );
- $stars = str_repeat( '*', $starLen );
- printf( "%10s %20s %3d %s\n", $ip, $host, $lag, $stars );
}
}
+$maintClass = "GetLagTimes";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/getSlaveServer.php b/maintenance/getSlaveServer.php
index 25258267..eac97a59 100644
--- a/maintenance/getSlaveServer.php
+++ b/maintenance/getSlaveServer.php
@@ -2,27 +2,49 @@
/**
* This script reports the hostname of a slave server.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require_once( dirname(__FILE__).'/commandLine.inc' );
-
-if ( $wgAllDBsAreLocalhost ) {
- # Can't fool the backup script
- print "localhost\n";
- exit;
+class GetSlaveServer extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( "group", "Query group to check specifically" );
+ $this->mDescription = "Report the hostname of a slave server";
+ }
+ public function execute() {
+ global $wgAllDBsAreLocalhost;
+ if( $wgAllDBsAreLocalhost ) {
+ $host = 'localhost';
+ } else {
+ if( $this->hasOption('group') ) {
+ $db = wfGetDB( DB_SLAVE, $this->getOption('group') );
+ $host = $db->getServer();
+ } else {
+ $lb = wfGetLB();
+ $i = $lb->getReaderIndex();
+ $host = $lb->getServerName( $i );
+ }
+ }
+ $this->output( "$host\n" );
+ }
}
-if( isset( $options['group'] ) ) {
- $db = wfGetDB( DB_SLAVE, $options['group'] );
- $host = $db->getServer();
-} else {
- $lb = wfGetLB();
- $i = $lb->getReaderIndex();
- $host = $lb->getServerName( $i );
-}
-
-print "$host\n";
-
-
+$maintClass = "GetSlaveServer";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/getText.php b/maintenance/getText.php
new file mode 100644
index 00000000..6326267d
--- /dev/null
+++ b/maintenance/getText.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Outputs page text to stdout, useful for command-line editing automation.
+ * Example: php getText.php "page title" | sed -e '...' | php edit.php "page title"
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class GetTextMaint extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Outputs page text to stdout';
+ $this->addOption( 'show-private', 'Show the text even if it\'s not available to the public' );
+ $this->addArg( 'title', 'Page title' );
+ }
+
+ public function execute() {
+ $this->db = wfGetDB( DB_SLAVE );
+
+ $titleText = $this->getArg( 0 );
+ $title = Title::newFromText( $titleText );
+ if ( !$title ) {
+ $this->error( "$titleText is not a valid title.\n", true );
+ }
+
+ $rev = Revision::newFromTitle( $title );
+ if ( !$rev ) {
+ $titleText = $title->getPrefixedText();
+ $this->error( "Page $titleText does not exist.\n", true );
+ }
+ $text = $rev->getText( $this->hasOption('show-private') ? Revision::RAW : Revision::FOR_PUBLIC );
+ if ( $text === false ) {
+ $titleText = $title->getPrefixedText();
+ $this->error( "Couldn't extract the text from $titleText.\n", true );
+ }
+ $this->output( $text );
+ }
+}
+
+$maintClass = "GetTextMaint";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/httpSessionDownload.php b/maintenance/httpSessionDownload.php
new file mode 100644
index 00000000..cab6e872
--- /dev/null
+++ b/maintenance/httpSessionDownload.php
@@ -0,0 +1,57 @@
+<?php
+/*
+ * Simple entry point to initiate a background download
+ *
+ * arguments:
+ * --sid {$session_id} --usk {$upload_session_key} --wiki {wfWikiId()}
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class HttpSessionDownload extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Simple entry point to initiate a background download";
+ $this->addOption( 'sid', 'Session ID', true, true );
+ $this->addOption( 'usk', 'Upload session key', true, true );
+ }
+
+ public function execute() {
+ wfProfileIn(__METHOD__);
+
+ //run the download:
+ Http::doSessionIdDownload( $this->getOption('sid'), $this->getOption('usk') );
+
+ // close up shop:
+ // Execute any deferred updates
+ wfDoUpdates();
+
+ // Log what the user did, for book-keeping purposes.
+ wfLogProfilingData();
+
+ // Shut down the database before exit
+ wfGetLBFactory()->shutdown();
+
+ wfProfileOut(__METHOD__);
+ }
+}
+
+$maintClass = "HttpSessionDownload";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/ibm_db2/README b/maintenance/ibm_db2/README
index 4a2c0f60..3c3f381c 100644
--- a/maintenance/ibm_db2/README
+++ b/maintenance/ibm_db2/README
@@ -1,41 +1,3 @@
-== Syntax differences between other databases and IBM DB2 ==
-{| border cellspacing=0 cellpadding=4
-!MySQL!!IBM DB2
-|-
-
-|SELECT 1 FROM $table LIMIT 1
-|SELECT COUNT(*) FROM SYSIBM.SYSTABLES ST
-WHERE ST.NAME = '$table' AND ST.CREATOR = '$schema'
-|-
-|MySQL code tries to read one row and interprets lack of error as proof of existence.
-|DB2 code counts the number of TABLES of that name in the database. There ought to be 1 for it to exist.
-|-
-|BEGIN
-|(implicit)
-|-
-|TEXT
-|VARCHAR(255) or CLOB
-|-
-|TIMESTAMPTZ
-|TIMESTAMP
-|-
-|BYTEA
-|VARGRAPHIC(255)
-|-
-|DEFAULT nextval('some_kind_of_sequence'),
-|GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1),
-|-
-|CIDR
-|VARCHAR(255)
-|-
-|LIMIT 10
-|FETCH FIRST 10 ROWS ONLY
-|-
-|ROLLBACK TO
-|ROLLBACK TO SAVEPOINT
-|-
-|RELEASE
-|RELEASE SAVEPOINT
-|}
== See also ==
+*[http://www.mediawiki.org/wiki/Manual:IBM_DB2 Installation instructions]
*[http://ca.php.net/manual/en/function.db2-connect.php PHP Manual for DB2 functions] \ No newline at end of file
diff --git a/maintenance/ibm_db2/tables.sql b/maintenance/ibm_db2/tables.sql
index 5e91102d..71c161c6 100644
--- a/maintenance/ibm_db2/tables.sql
+++ b/maintenance/ibm_db2/tables.sql
@@ -5,98 +5,110 @@
-- not have to run it by itself unless doing a manual install.
-- This is the IBM DB2 version.
-- For information about each table, please see the notes in maintenance/tables.sql
--- Please make sure all dollar-quoting uses $mw$ at the start of the line
--- TODO: Change CHAR/SMALLINT to BOOL (still used in a non-bool fashion in PHP code)
-
-
-CREATE SEQUENCE user_user_id_seq AS INTEGER START WITH 0 INCREMENT BY 1;
-CREATE TABLE mwuser ( -- replace reserved word 'user'
- user_id INTEGER NOT NULL PRIMARY KEY, -- DEFAULT nextval('user_user_id_seq'),
+CREATE TABLE user (
+ user_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
user_name VARCHAR(255) NOT NULL UNIQUE,
user_real_name VARCHAR(255),
- user_password clob(1K),
- user_newpassword clob(1K),
- user_newpass_time TIMESTAMP,
+ user_password VARCHAR(1024),
+ user_newpassword VARCHAR(1024),
+ user_newpass_time TIMESTAMP(3),
user_token VARCHAR(255),
- user_email VARCHAR(255),
+ user_email VARCHAR(1024),
user_email_token VARCHAR(255),
- user_email_token_expires TIMESTAMP,
- user_email_authenticated TIMESTAMP,
- user_options CLOB(64K),
- user_touched TIMESTAMP,
- user_registration TIMESTAMP,
+ user_email_token_expires TIMESTAMP(3),
+ user_email_authenticated TIMESTAMP(3),
+ -- obsolete, replace by user_properties table
+ user_options CLOB(64K) INLINE LENGTH 4096,
+ user_touched TIMESTAMP(3),
+ user_registration TIMESTAMP(3),
user_editcount INTEGER
);
-CREATE INDEX user_email_token_idx ON mwuser (user_email_token);
+CREATE INDEX user_email_token_idx ON user (user_email_token);
+--leonsp:
+CREATE UNIQUE INDEX user_include_idx
+ ON user(user_id)
+ INCLUDE (user_name, user_real_name, user_password, user_newpassword, user_newpass_time, user_token,
+ user_email, user_email_token, user_email_token_expires, user_email_authenticated,
+ user_touched, user_registration, user_editcount);
-- Create a dummy user to satisfy fk contraints especially with revisions
-INSERT INTO mwuser
- VALUES (NEXTVAL FOR user_user_id_seq,'Anonymous','', NULL,NULL,CURRENT_TIMESTAMP,NULL, NULL,NULL,NULL,NULL, NULL,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,0);
+INSERT INTO user(
+user_name, user_real_name, user_password, user_newpassword, user_newpass_time,
+user_email, user_email_authenticated, user_options, user_token, user_registration, user_editcount)
+VALUES (
+'Anonymous','', NULL, NULL, CURRENT_TIMESTAMP,
+NULL, NULL, NULL, NULL, CURRENT_timestamp, 0);
+
CREATE TABLE user_groups (
- ug_user INTEGER REFERENCES mwuser(user_id) ON DELETE CASCADE,
+ ug_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE CASCADE,
ug_group VARCHAR(255) NOT NULL
);
CREATE UNIQUE INDEX user_groups_unique ON user_groups (ug_user, ug_group);
+--leonsp:
+CREATE UNIQUE INDEX user_groups_include_idx
+ ON user_groups(ug_user)
+ INCLUDE (ug_group);
+
CREATE TABLE user_newtalk (
- user_id INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
- user_ip VARCHAR(255),
- user_last_timestamp TIMESTAMP
+ -- registered users key
+ user_id BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE CASCADE,
+ -- anonymous users key
+ user_ip VARCHAR(40),
+ user_last_timestamp TIMESTAMP(3)
);
CREATE INDEX user_newtalk_id_idx ON user_newtalk (user_id);
CREATE INDEX user_newtalk_ip_idx ON user_newtalk (user_ip);
+--leonsp:
+CREATE UNIQUE INDEX user_newtalk_include_idx
+ ON user_newtalk(user_id, user_ip)
+ INCLUDE (user_last_timestamp);
-CREATE SEQUENCE page_page_id_seq;
CREATE TABLE page (
- page_id INTEGER NOT NULL PRIMARY KEY, -- DEFAULT NEXT VALUE FOR user_user_id_seq,
+ page_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
page_namespace SMALLINT NOT NULL,
page_title VARCHAR(255) NOT NULL,
- page_restrictions clob(1K),
+ page_restrictions VARCHAR(1024),
page_counter BIGINT NOT NULL DEFAULT 0,
page_is_redirect SMALLINT NOT NULL DEFAULT 0,
page_is_new SMALLINT NOT NULL DEFAULT 0,
page_random NUMERIC(15,14) NOT NULL,
- page_touched TIMESTAMP,
- page_latest INTEGER NOT NULL, -- FK?
- page_len INTEGER NOT NULL
+ page_touched TIMESTAMP(3),
+ page_latest BIGINT NOT NULL, -- FK?
+ page_len BIGINT NOT NULL
);
CREATE UNIQUE INDEX page_unique_name ON page (page_namespace, page_title);
---CREATE INDEX page_main_title ON page (page_title) WHERE page_namespace = 0;
---CREATE INDEX page_talk_title ON page (page_title) WHERE page_namespace = 1;
---CREATE INDEX page_user_title ON page (page_title) WHERE page_namespace = 2;
---CREATE INDEX page_utalk_title ON page (page_title) WHERE page_namespace = 3;
---CREATE INDEX page_project_title ON page (page_title) WHERE page_namespace = 4;
CREATE INDEX page_random_idx ON page (page_random);
CREATE INDEX page_len_idx ON page (page_len);
+--leonsp:
+CREATE UNIQUE INDEX page_id_include
+ ON page (page_id)
+ INCLUDE (page_namespace, page_title, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len);
+CREATE UNIQUE INDEX page_name_include
+ ON page (page_namespace, page_title)
+ INCLUDE (page_id, page_restrictions, page_counter, page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len);
---CREATE FUNCTION page_deleted() RETURNS TRIGGER LANGUAGE plpgsql AS
---$mw$
---BEGIN
---DELETE FROM recentchanges WHERE rc_namespace = OLD.page_namespace AND rc_title = OLD.page_title;
---RETURN NULL;
---END;
---$mw$;
---CREATE TRIGGER page_deleted AFTER DELETE ON page
--- FOR EACH ROW EXECUTE PROCEDURE page_deleted();
-
-CREATE SEQUENCE rev_rev_id_val;
CREATE TABLE revision (
- rev_id INTEGER NOT NULL UNIQUE, --DEFAULT nextval('rev_rev_id_val'),
- rev_page INTEGER REFERENCES page (page_id) ON DELETE CASCADE,
- rev_text_id INTEGER, -- FK
- rev_comment clob(1K), -- changed from VARCHAR(255)
- rev_user INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE RESTRICT,
- rev_user_text VARCHAR(255) NOT NULL,
- rev_timestamp TIMESTAMP NOT NULL,
- rev_minor_edit SMALLINT NOT NULL DEFAULT 0,
- rev_deleted SMALLINT NOT NULL DEFAULT 0,
- rev_len INTEGER,
- rev_parent_id INTEGER
+ rev_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+ rev_page BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page (page_id) ON DELETE CASCADE,
+ rev_text_id BIGINT, -- FK
+ rev_comment VARCHAR(1024),
+ rev_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE RESTRICT,
+ rev_user_text VARCHAR(255) NOT NULL,
+ rev_timestamp TIMESTAMP(3) NOT NULL,
+ rev_minor_edit SMALLINT NOT NULL DEFAULT 0,
+ rev_deleted SMALLINT NOT NULL DEFAULT 0,
+ rev_len BIGINT,
+ rev_parent_id BIGINT DEFAULT NULL
);
CREATE UNIQUE INDEX revision_unique ON revision (rev_page, rev_id);
CREATE INDEX rev_text_id_idx ON revision (rev_text_id);
@@ -105,34 +117,41 @@ CREATE INDEX rev_user_idx ON revision (rev_user);
CREATE INDEX rev_user_text_idx ON revision (rev_user_text);
-CREATE SEQUENCE text_old_id_val;
-CREATE TABLE pagecontent ( -- replaces reserved word 'text'
- old_id INTEGER NOT NULL,
+
+CREATE TABLE text ( -- replaces reserved word 'text'
+ --old_id INTEGER NOT NULL,
+ old_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
--PRIMARY KEY DEFAULT nextval('text_old_id_val'),
- old_text CLOB(16M),
- old_flags clob(1K)
+ old_text CLOB(16M) INLINE LENGTH 4096,
+ old_flags VARCHAR(1024)
);
-CREATE SEQUENCE pr_id_val;
+
CREATE TABLE page_restrictions (
- pr_id INTEGER NOT NULL UNIQUE,
- --DEFAULT nextval('pr_id_val'),
- pr_page INTEGER NOT NULL
+ --pr_id INTEGER NOT NULL UNIQUE, --DEFAULT nextval('pr_id_val'),
+ --pr_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+ pr_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+ pr_page INTEGER NOT NULL DEFAULT 0,
--(used to be nullable)
- REFERENCES page (page_id) ON DELETE CASCADE,
- pr_type VARCHAR(255) NOT NULL,
- pr_level VARCHAR(255) NOT NULL,
+ -- REFERENCES page (page_id) ON DELETE CASCADE,
+ pr_type VARCHAR(60) NOT NULL,
+ pr_level VARCHAR(60) NOT NULL,
pr_cascade SMALLINT NOT NULL,
pr_user INTEGER,
- pr_expiry TIMESTAMP,
- PRIMARY KEY (pr_page, pr_type)
+ pr_expiry TIMESTAMP(3)
+ --PRIMARY KEY (pr_page, pr_type)
);
--ALTER TABLE page_restrictions ADD CONSTRAINT page_restrictions_pk PRIMARY KEY (pr_page,pr_type);
+CREATE UNIQUE INDEX pr_pagetype ON page_restrictions (pr_page,pr_type);
+CREATE INDEX pr_typelevel ON page_restrictions (pr_type,pr_level);
+CREATE INDEX pr_level ON page_restrictions (pr_level);
+CREATE INDEX pr_cascade ON page_restrictions (pr_cascade);
CREATE TABLE page_props (
- pp_page INTEGER NOT NULL REFERENCES page (page_id) ON DELETE CASCADE,
+ pp_page INTEGER NOT NULL DEFAULT 0,
+ -- REFERENCES page (page_id) ON DELETE CASCADE,
pp_propname VARCHAR(255) NOT NULL,
- pp_value CLOB(64K) NOT NULL,
+ pp_value CLOB(64K) INLINE LENGTH 4096 NOT NULL,
PRIMARY KEY (pp_page,pp_propname)
);
--ALTER TABLE page_props ADD CONSTRAINT page_props_pk PRIMARY KEY (pp_page,pp_propname);
@@ -143,19 +162,21 @@ CREATE INDEX page_props_propname ON page_props (pp_propname);
CREATE TABLE archive (
ar_namespace SMALLINT NOT NULL,
ar_title VARCHAR(255) NOT NULL,
- ar_text CLOB(16M),
- ar_page_id INTEGER,
- ar_parent_id INTEGER,
- ar_comment clob(1K),
- ar_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
+ ar_text CLOB(16M) INLINE LENGTH 4096,
+ ar_comment VARCHAR(1024),
+ ar_user BIGINT NOT NULL,
+ -- no foreign keys in MySQL
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
ar_user_text VARCHAR(255) NOT NULL,
- ar_timestamp TIMESTAMP NOT NULL,
+ ar_timestamp TIMESTAMP(3) NOT NULL,
ar_minor_edit SMALLINT NOT NULL DEFAULT 0,
- ar_flags clob(1K),
+ ar_flags VARCHAR(1024),
ar_rev_id INTEGER,
ar_text_id INTEGER,
ar_deleted SMALLINT NOT NULL DEFAULT 0,
- ar_len INTEGER
+ ar_len INTEGER,
+ ar_page_id INTEGER,
+ ar_parent_id INTEGER
);
CREATE INDEX archive_name_title_timestamp ON archive (ar_namespace,ar_title,ar_timestamp);
CREATE INDEX archive_user_text ON archive (ar_user_text);
@@ -163,38 +184,49 @@ CREATE INDEX archive_user_text ON archive (ar_user_text);
CREATE TABLE redirect (
- rd_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- rd_namespace SMALLINT NOT NULL,
- rd_title VARCHAR(255) NOT NULL
+ rd_from BIGINT NOT NULL PRIMARY KEY,
+ --REFERENCES page(page_id) ON DELETE CASCADE,
+ rd_namespace SMALLINT NOT NULL DEFAULT 0,
+ rd_title VARCHAR(255) NOT NULL DEFAULT '',
+ rd_interwiki varchar(32),
+ rd_fragment VARCHAR(255)
);
CREATE INDEX redirect_ns_title ON redirect (rd_namespace,rd_title,rd_from);
CREATE TABLE pagelinks (
- pl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
+ pl_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
pl_namespace SMALLINT NOT NULL,
pl_title VARCHAR(255) NOT NULL
);
CREATE UNIQUE INDEX pagelink_unique ON pagelinks (pl_from,pl_namespace,pl_title);
CREATE TABLE templatelinks (
- tl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
+ tl_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
tl_namespace SMALLINT NOT NULL,
tl_title VARCHAR(255) NOT NULL
);
CREATE UNIQUE INDEX templatelinks_unique ON templatelinks (tl_namespace,tl_title,tl_from);
+CREATE UNIQUE INDEX tl_from_idx ON templatelinks (tl_from,tl_namespace,tl_title);
CREATE TABLE imagelinks (
- il_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
+ il_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
il_to VARCHAR(255) NOT NULL
);
-CREATE UNIQUE INDEX il_from ON imagelinks (il_to,il_from);
+CREATE UNIQUE INDEX il_from_idx ON imagelinks (il_to,il_from);
+CREATE UNIQUE INDEX il_to_idx ON imagelinks (il_from,il_to);
CREATE TABLE categorylinks (
- cl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
+ cl_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
cl_to VARCHAR(255) NOT NULL,
- cl_sortkey VARCHAR(255),
- cl_timestamp TIMESTAMP NOT NULL
+ -- cl_sortkey has to be at least 86 wide
+ -- in order to be compatible with the old MySQL schema from MW 1.10
+ cl_sortkey VARCHAR(86),
+ cl_timestamp TIMESTAMP(3) NOT NULL
);
CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to);
CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from);
@@ -202,16 +234,38 @@ CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from);
CREATE TABLE externallinks (
- el_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- el_to VARCHAR(255) NOT NULL,
- el_index VARCHAR(255) NOT NULL
+ el_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
+ el_to VARCHAR(1024) NOT NULL,
+ el_index VARCHAR(1024) NOT NULL
);
CREATE INDEX externallinks_from_to ON externallinks (el_from,el_to);
CREATE INDEX externallinks_index ON externallinks (el_index);
+
+--
+-- Track external user accounts, if ExternalAuth is used
+--
+CREATE TABLE external_user (
+ -- Foreign key to user_id
+ eu_local_id BIGINT NOT NULL PRIMARY KEY,
+
+ -- Some opaque identifier provided by the external database
+ eu_external_id VARCHAR(255) NOT NULL
+);
+CREATE UNIQUE INDEX eu_external_id_idx
+ ON external_user (eu_external_id)
+ INCLUDE (eu_local_id);
+CREATE UNIQUE INDEX eu_local_id_idx
+ ON external_user (eu_local_id)
+ INCLUDE (eu_external_id);
+
+
+
CREATE TABLE langlinks (
- ll_from INTEGER NOT NULL REFERENCES page (page_id) ON DELETE CASCADE,
- ll_lang VARCHAR(255),
+ ll_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page (page_id) ON DELETE CASCADE,
+ ll_lang VARCHAR(20),
ll_title VARCHAR(255)
);
CREATE UNIQUE INDEX langlinks_unique ON langlinks (ll_from,ll_lang);
@@ -219,12 +273,13 @@ CREATE INDEX langlinks_lang_title ON langlinks (ll_lang,ll_title);
CREATE TABLE site_stats (
- ss_row_id INTEGER NOT NULL UNIQUE,
- ss_total_views INTEGER DEFAULT 0,
- ss_total_edits INTEGER DEFAULT 0,
- ss_good_articles INTEGER DEFAULT 0,
+ ss_row_id BIGINT NOT NULL UNIQUE,
+ ss_total_views BIGINT DEFAULT 0,
+ ss_total_edits BIGINT DEFAULT 0,
+ ss_good_articles BIGINT DEFAULT 0,
ss_total_pages INTEGER DEFAULT -1,
ss_users INTEGER DEFAULT -1,
+ ss_active_users INTEGER DEFAULT -1,
ss_admins INTEGER DEFAULT -1,
ss_images INTEGER DEFAULT 0
);
@@ -233,25 +288,27 @@ CREATE TABLE hitcounter (
hc_id BIGINT NOT NULL
);
-CREATE SEQUENCE ipblocks_ipb_id_val;
CREATE TABLE ipblocks (
ipb_id INTEGER NOT NULL PRIMARY KEY,
--DEFAULT nextval('ipblocks_ipb_id_val'),
- ipb_address VARCHAR(255),
- ipb_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
- ipb_by INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
+ ipb_address VARCHAR(1024),
+ ipb_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ ipb_by BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE CASCADE,
ipb_by_text VARCHAR(255) NOT NULL DEFAULT '',
- ipb_reason VARCHAR(255) NOT NULL,
- ipb_timestamp TIMESTAMP NOT NULL,
+ ipb_reason VARCHAR(1024) NOT NULL,
+ ipb_timestamp TIMESTAMP(3) NOT NULL,
ipb_auto SMALLINT NOT NULL DEFAULT 0,
ipb_anon_only SMALLINT NOT NULL DEFAULT 0,
ipb_create_account SMALLINT NOT NULL DEFAULT 1,
ipb_enable_autoblock SMALLINT NOT NULL DEFAULT 1,
- ipb_expiry TIMESTAMP NOT NULL,
- ipb_range_start VARCHAR(255),
- ipb_range_end VARCHAR(255),
+ ipb_expiry TIMESTAMP(3) NOT NULL,
+ ipb_range_start VARCHAR(1024),
+ ipb_range_end VARCHAR(1024),
ipb_deleted SMALLINT NOT NULL DEFAULT 0,
- ipb_block_email SMALLINT NOT NULL DEFAULT 0
+ ipb_block_email SMALLINT NOT NULL DEFAULT 0,
+ ipb_allow_usertalk SMALLINT NOT NULL DEFAULT 0
);
CREATE INDEX ipb_address ON ipblocks (ipb_address);
@@ -262,18 +319,19 @@ CREATE INDEX ipb_range ON ipblocks (ipb_range_start,ipb_range_end);
CREATE TABLE image (
img_name VARCHAR(255) NOT NULL PRIMARY KEY,
- img_size INTEGER NOT NULL,
+ img_size BIGINT NOT NULL,
img_width INTEGER NOT NULL,
img_height INTEGER NOT NULL,
- img_metadata CLOB(16M) NOT NULL DEFAULT '',
+ img_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
img_bits SMALLINT,
img_media_type VARCHAR(255),
img_major_mime VARCHAR(255) DEFAULT 'unknown',
- img_minor_mime VARCHAR(255) DEFAULT 'unknown',
- img_description clob(1K) NOT NULL DEFAULT '',
- img_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
+ img_minor_mime VARCHAR(32) DEFAULT 'unknown',
+ img_description VARCHAR(1024) NOT NULL DEFAULT '',
+ img_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
img_user_text VARCHAR(255) NOT NULL DEFAULT '',
- img_timestamp TIMESTAMP,
+ img_timestamp TIMESTAMP(3),
img_sha1 VARCHAR(255) NOT NULL DEFAULT ''
);
CREATE INDEX img_size_idx ON image (img_size);
@@ -281,23 +339,24 @@ CREATE INDEX img_timestamp_idx ON image (img_timestamp);
CREATE INDEX img_sha1 ON image (img_sha1);
CREATE TABLE oldimage (
- oi_name VARCHAR(255) NOT NULL,
+ oi_name VARCHAR(255) NOT NULL DEFAULT '',
oi_archive_name VARCHAR(255) NOT NULL,
- oi_size INTEGER NOT NULL,
+ oi_size BIGINT NOT NULL,
oi_width INTEGER NOT NULL,
oi_height INTEGER NOT NULL,
oi_bits SMALLINT NOT NULL,
- oi_description clob(1K),
- oi_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
+ oi_description VARCHAR(1024),
+ oi_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
oi_user_text VARCHAR(255) NOT NULL,
- oi_timestamp TIMESTAMP NOT NULL,
- oi_metadata CLOB(16M) NOT NULL DEFAULT '',
+ oi_timestamp TIMESTAMP(3) NOT NULL,
+ oi_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
oi_media_type VARCHAR(255) ,
oi_major_mime VARCHAR(255) NOT NULL DEFAULT 'unknown',
oi_minor_mime VARCHAR(255) NOT NULL DEFAULT 'unknown',
oi_deleted SMALLINT NOT NULL DEFAULT 0,
- oi_sha1 VARCHAR(255) NOT NULL DEFAULT '',
- FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE
+ oi_sha1 VARCHAR(255) NOT NULL DEFAULT ''
+ --FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE
);
--ALTER TABLE oldimage ADD CONSTRAINT oldimage_oi_name_fkey_cascade FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE;
CREATE INDEX oi_name_timestamp ON oldimage (oi_name,oi_timestamp);
@@ -305,29 +364,31 @@ CREATE INDEX oi_name_archive_name ON oldimage (oi_name,oi_archive_name);
CREATE INDEX oi_sha1 ON oldimage (oi_sha1);
-CREATE SEQUENCE filearchive_fa_id_seq;
+
CREATE TABLE filearchive (
fa_id INTEGER NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('filearchive_fa_id_seq'),
fa_name VARCHAR(255) NOT NULL,
fa_archive_name VARCHAR(255),
fa_storage_group VARCHAR(255),
- fa_storage_key VARCHAR(255),
- fa_deleted_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
- fa_deleted_timestamp TIMESTAMP NOT NULL,
+ fa_storage_key VARCHAR(64) DEFAULT '',
+ fa_deleted_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ fa_deleted_timestamp TIMESTAMP(3) NOT NULL,
fa_deleted_reason VARCHAR(255),
- fa_size INTEGER NOT NULL,
+ fa_size BIGINT NOT NULL,
fa_width INTEGER NOT NULL,
fa_height INTEGER NOT NULL,
- fa_metadata CLOB(16M) NOT NULL DEFAULT '',
+ fa_metadata CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
fa_bits SMALLINT,
fa_media_type VARCHAR(255),
fa_major_mime VARCHAR(255) DEFAULT 'unknown',
fa_minor_mime VARCHAR(255) DEFAULT 'unknown',
- fa_description clob(1K) NOT NULL,
- fa_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
+ fa_description VARCHAR(1024) NOT NULL,
+ fa_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
fa_user_text VARCHAR(255) NOT NULL,
- fa_timestamp TIMESTAMP,
+ fa_timestamp TIMESTAMP(3),
fa_deleted SMALLINT NOT NULL DEFAULT 0
);
CREATE INDEX fa_name_time ON filearchive (fa_name, fa_timestamp);
@@ -335,13 +396,14 @@ CREATE INDEX fa_dupe ON filearchive (fa_storage_group, fa_storage_key);
CREATE INDEX fa_notime ON filearchive (fa_deleted_timestamp);
CREATE INDEX fa_nouser ON filearchive (fa_deleted_user);
-CREATE SEQUENCE rc_rc_id_seq;
+
CREATE TABLE recentchanges (
rc_id INTEGER NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('rc_rc_id_seq'),
- rc_timestamp TIMESTAMP NOT NULL,
- rc_cur_time TIMESTAMP NOT NULL,
- rc_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
+ rc_timestamp TIMESTAMP(3) NOT NULL,
+ rc_cur_time TIMESTAMP(3) NOT NULL,
+ rc_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
rc_user_text VARCHAR(255) NOT NULL,
rc_namespace SMALLINT NOT NULL,
rc_title VARCHAR(255) NOT NULL,
@@ -349,21 +411,23 @@ CREATE TABLE recentchanges (
rc_minor SMALLINT NOT NULL DEFAULT 0,
rc_bot SMALLINT NOT NULL DEFAULT 0,
rc_new SMALLINT NOT NULL DEFAULT 0,
- rc_cur_id INTEGER REFERENCES page(page_id) ON DELETE SET NULL,
- rc_this_oldid INTEGER NOT NULL,
- rc_last_oldid INTEGER NOT NULL,
+ rc_cur_id BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE SET NULL,
+ rc_this_oldid BIGINT NOT NULL,
+ rc_last_oldid BIGINT NOT NULL,
rc_type SMALLINT NOT NULL DEFAULT 0,
rc_moved_to_ns SMALLINT,
rc_moved_to_title VARCHAR(255),
rc_patrolled SMALLINT NOT NULL DEFAULT 0,
- rc_ip VARCHAR(255), -- was CIDR type
+ rc_ip VARCHAR(40), -- was CIDR type
rc_old_len INTEGER,
rc_new_len INTEGER,
rc_deleted SMALLINT NOT NULL DEFAULT 0,
- rc_logid INTEGER NOT NULL DEFAULT 0,
+ rc_logid BIGINT NOT NULL DEFAULT 0,
rc_log_type VARCHAR(255),
rc_log_action VARCHAR(255),
- rc_params CLOB(64K)
+ rc_params CLOB(64K) INLINE LENGTH 4096
+
);
CREATE INDEX rc_timestamp ON recentchanges (rc_timestamp);
CREATE INDEX rc_namespace_title ON recentchanges (rc_namespace, rc_title);
@@ -374,26 +438,27 @@ CREATE INDEX rc_ip ON recentchanges (rc_ip);
CREATE TABLE watchlist (
- wl_user INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
+ wl_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE CASCADE,
wl_namespace SMALLINT NOT NULL DEFAULT 0,
wl_title VARCHAR(255) NOT NULL,
- wl_notificationtimestamp TIMESTAMP
+ wl_notificationtimestamp TIMESTAMP(3)
);
CREATE UNIQUE INDEX wl_user_namespace_title ON watchlist (wl_namespace, wl_title, wl_user);
CREATE TABLE math (
- math_inputhash VARGRAPHIC(255) NOT NULL UNIQUE,
- math_outputhash VARGRAPHIC(255) NOT NULL,
+ math_inputhash VARCHAR(16) FOR BIT DATA NOT NULL UNIQUE,
+ math_outputhash VARCHAR(16) FOR BIT DATA NOT NULL,
math_html_conservativeness SMALLINT NOT NULL,
- math_html VARCHAR(255),
- math_mathml VARCHAR(255)
+ math_html CLOB(64K) INLINE LENGTH 4096,
+ math_mathml CLOB(64K) INLINE LENGTH 4096
);
CREATE TABLE interwiki (
- iw_prefix VARCHAR(255) NOT NULL UNIQUE,
- iw_url CLOB(64K) NOT NULL,
+ iw_prefix VARCHAR(32) NOT NULL UNIQUE,
+ iw_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
iw_local SMALLINT NOT NULL,
iw_trans SMALLINT NOT NULL DEFAULT 0
);
@@ -401,8 +466,8 @@ CREATE TABLE interwiki (
CREATE TABLE querycache (
qc_type VARCHAR(255) NOT NULL,
- qc_value INTEGER NOT NULL,
- qc_namespace SMALLINT NOT NULL,
+ qc_value BIGINT NOT NULL,
+ qc_namespace INTEGER NOT NULL,
qc_title VARCHAR(255) NOT NULL
);
CREATE INDEX querycache_type_value ON querycache (qc_type, qc_value);
@@ -411,13 +476,13 @@ CREATE INDEX querycache_type_value ON querycache (qc_type, qc_value);
CREATE TABLE querycache_info (
qci_type VARCHAR(255) UNIQUE NOT NULL,
- qci_timestamp TIMESTAMP
+ qci_timestamp TIMESTAMP(3)
);
CREATE TABLE querycachetwo (
qcc_type VARCHAR(255) NOT NULL,
- qcc_value INTEGER NOT NULL DEFAULT 0,
+ qcc_value BIGINT NOT NULL DEFAULT 0,
qcc_namespace INTEGER NOT NULL DEFAULT 0,
qcc_title VARCHAR(255) NOT NULL DEFAULT '',
qcc_namespacetwo INTEGER NOT NULL DEFAULT 0,
@@ -429,8 +494,8 @@ CREATE INDEX querycachetwo_titletwo ON querycachetwo (qcc_type,qcc_namespacetw
CREATE TABLE objectcache (
keyname VARCHAR(255) NOT NULL UNIQUE, -- was nullable
- value CLOB(16M) NOT NULL DEFAULT '',
- exptime TIMESTAMP NOT NULL
+ value CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
+ exptime TIMESTAMP(3) NOT NULL
);
CREATE INDEX objectcacache_exptime ON objectcache (exptime);
@@ -438,49 +503,57 @@ CREATE INDEX objectcacache_exptime ON objectcache (exptime);
CREATE TABLE transcache (
tc_url VARCHAR(255) NOT NULL UNIQUE,
- tc_contents VARCHAR(255) NOT NULL,
- tc_time TIMESTAMP NOT NULL
+ tc_contents CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ tc_time TIMESTAMP(3) NOT NULL
);
-CREATE SEQUENCE log_log_id_seq;
+
CREATE TABLE logging (
- log_id INTEGER NOT NULL PRIMARY KEY,
+ log_id BIGINT NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('log_log_id_seq'),
- log_type VARCHAR(255) NOT NULL,
- log_action VARCHAR(255) NOT NULL,
- log_timestamp TIMESTAMP NOT NULL,
- log_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
- log_namespace SMALLINT NOT NULL,
- log_title VARCHAR(255) NOT NULL,
- log_comment VARCHAR(255),
- log_params CLOB(64K),
- log_deleted SMALLINT NOT NULL DEFAULT 0
+ log_type VARCHAR(32) NOT NULL,
+ log_action VARCHAR(32) NOT NULL,
+ log_timestamp TIMESTAMP(3) NOT NULL,
+ log_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ -- Name of the user who performed this action
+ log_user_text VARCHAR(255) NOT NULL default '',
+ log_namespace SMALLINT NOT NULL,
+ log_title VARCHAR(255) NOT NULL,
+ log_page BIGINT,
+ log_comment VARCHAR(255),
+ log_params CLOB(64K) INLINE LENGTH 4096,
+ log_deleted SMALLINT NOT NULL DEFAULT 0
);
CREATE INDEX logging_type_name ON logging (log_type, log_timestamp);
CREATE INDEX logging_user_time ON logging (log_timestamp, log_user);
CREATE INDEX logging_page_time ON logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX log_user_type_time ON logging (log_user, log_type, log_timestamp);
+CREATE INDEX log_page_id_time ON logging (log_page,log_timestamp);
+
+
-CREATE SEQUENCE trackbacks_tb_id_seq;
CREATE TABLE trackbacks (
tb_id INTEGER NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('trackbacks_tb_id_seq'),
- tb_page INTEGER REFERENCES page(page_id) ON DELETE CASCADE,
+ -- foreign key also in MySQL
+ tb_page INTEGER REFERENCES page(page_id) ON DELETE CASCADE,
tb_title VARCHAR(255) NOT NULL,
- tb_url CLOB(64K) NOT NULL,
- tb_ex VARCHAR(255),
+ tb_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ tb_ex CLOB(64K) INLINE LENGTH 4096,
tb_name VARCHAR(255)
);
CREATE INDEX trackback_page ON trackbacks (tb_page);
-CREATE SEQUENCE job_job_id_seq;
+
CREATE TABLE job (
- job_id INTEGER NOT NULL PRIMARY KEY,
+ job_id BIGINT NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('job_job_id_seq'),
job_cmd VARCHAR(255) NOT NULL,
job_namespace SMALLINT NOT NULL,
job_title VARCHAR(255) NOT NULL,
- job_params CLOB(64K) NOT NULL
+ job_params CLOB(64K) INLINE LENGTH 4096 NOT NULL
);
CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
@@ -504,7 +577,7 @@ CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
-- FOR EACH ROW EXECUTE PROCEDURE ts2_page_title();
---ALTER TABLE pagecontent ADD textvector tsvector;
+--ALTER TABLE text ADD textvector tsvector;
--CREATE FUNCTION ts2_page_text() RETURNS TRIGGER LANGUAGE plpgsql AS
--$mw$
--BEGIN
@@ -517,14 +590,14 @@ CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
--END;
--$mw$;
---CREATE TRIGGER ts2_page_text BEFORE INSERT OR UPDATE ON pagecontent
+--CREATE TRIGGER ts2_page_text BEFORE INSERT OR UPDATE ON text
-- FOR EACH ROW EXECUTE PROCEDURE ts2_page_text();
-- These are added by the setup script due to version compatibility issues
-- If using 8.1, we switch from "gin" to "gist"
--CREATE INDEX ts2_page_title ON page USING gin(titlevector);
---CREATE INDEX ts2_page_text ON pagecontent USING gin(textvector);
+--CREATE INDEX ts2_page_text ON text USING gin(textvector);
--TODO
--CREATE FUNCTION add_interwiki (TEXT,INT,SMALLINT) RETURNS INT LANGUAGE SQL AS
@@ -536,7 +609,7 @@ CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
-- hack implementation
-- should be replaced with OmniFind, Contains(), etc
CREATE TABLE searchindex (
- si_page int NOT NULL,
+ si_page BIGINT NOT NULL,
si_title varchar(255) NOT NULL default '',
si_text clob NOT NULL
);
@@ -552,13 +625,14 @@ CREATE TABLE profiling (
CREATE UNIQUE INDEX pf_name_server ON profiling (pf_name, pf_server);
CREATE TABLE protected_titles (
- pt_namespace SMALLINT NOT NULL,
+ pt_namespace INTEGER NOT NULL,
pt_title VARCHAR(255) NOT NULL,
- pt_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
- pt_reason clob(1K),
- pt_timestamp TIMESTAMP NOT NULL,
- pt_expiry TIMESTAMP ,
- pt_create_perm VARCHAR(255) NOT NULL DEFAULT ''
+ pt_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ pt_reason VARCHAR(1024),
+ pt_timestamp TIMESTAMP(3) NOT NULL,
+ pt_expiry TIMESTAMP(3) ,
+ pt_create_perm VARCHAR(60) NOT NULL DEFAULT ''
);
CREATE UNIQUE INDEX protected_titles_unique ON protected_titles(pt_namespace, pt_title);
@@ -568,7 +642,7 @@ CREATE TABLE updatelog (
ul_key VARCHAR(255) NOT NULL PRIMARY KEY
);
-CREATE SEQUENCE category_id_seq;
+
CREATE TABLE category (
cat_id INTEGER NOT NULL PRIMARY KEY,
--PRIMARY KEY DEFAULT nextval('category_id_seq'),
@@ -581,24 +655,101 @@ CREATE TABLE category (
CREATE UNIQUE INDEX category_title ON category(cat_title);
CREATE INDEX category_pages ON category(cat_pages);
+-- added for 1.15
+
+-- A table to track tags for revisions, logs and recent changes.
+CREATE TABLE change_tag (
+ ct_rc_id INTEGER,
+ ct_log_id INTEGER,
+ ct_rev_id INTEGER,
+ ct_tag varchar(255) NOT NULL,
+ ct_params CLOB(64K) INLINE LENGTH 4096
+);
+CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX change_tag_log_tag ON change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag (ct_rev_id,ct_tag);
+-- Covering index, so we can pull all the info only out of the index.
+CREATE INDEX change_tag_tag_id ON change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+
+
+-- Rollup table to pull a LIST of tags simply
+CREATE TABLE tag_summary (
+ ts_rc_id INTEGER,
+ ts_log_id INTEGER,
+ ts_rev_id INTEGER,
+ ts_tags CLOB(64K) INLINE LENGTH 4096 NOT NULL
+);
+CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary (ts_log_id);
+CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary (ts_rev_id);
+
+
+CREATE TABLE valid_tag (
+ vt_tag varchar(255) NOT NULL PRIMARY KEY
+);
+
+--
+-- User preferences and perhaps other fun stuff. :)
+-- Replaces the old user.user_options blob, with a couple nice properties:
+--
+-- 1) We only store non-default settings, so changes to the defaults
+-- are now reflected for everybody, not just new accounts.
+-- 2) We can more easily do bulk lookups, statistics, or modifications of
+-- saved options since it's a sane table structure.
+--
+CREATE TABLE user_properties (
+ -- Foreign key to user.user_id
+ up_user BIGINT NOT NULL,
+
+ -- Name of the option being saved. This is indexed for bulk lookup.
+ up_property VARCHAR(32) FOR BIT DATA NOT NULL,
+
+ -- Property value as a string.
+ up_value CLOB(64K) INLINE LENGTH 4096
+);
+CREATE UNIQUE INDEX user_properties_user_property ON user_properties (up_user,up_property);
+CREATE INDEX user_properties_property ON user_properties (up_property);
+
+CREATE TABLE log_search (
+ -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
+ ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
+ -- The value of the ID
+ ls_value varchar(255) NOT NULL,
+ -- Key to log_id
+ ls_log_id BIGINT NOT NULL default 0
+);
+CREATE UNIQUE INDEX ls_field_val ON log_search (ls_field,ls_value,ls_log_id);
+CREATE INDEX ls_log_id ON log_search (ls_log_id);
+
CREATE TABLE mediawiki_version (
- type VARCHAR(255) NOT NULL,
- mw_version VARCHAR(255) NOT NULL,
- notes VARCHAR(255) ,
+ type VARCHAR(1024) NOT NULL,
+ mw_version VARCHAR(1024) NOT NULL,
+ notes VARCHAR(1024) ,
- pg_version VARCHAR(255) ,
- pg_dbname VARCHAR(255) ,
- pg_user VARCHAR(255) ,
- pg_port VARCHAR(255) ,
- mw_schema VARCHAR(255) ,
- ts2_schema VARCHAR(255) ,
- ctype VARCHAR(255) ,
+ pg_version VARCHAR(1024) ,
+ pg_dbname VARCHAR(1024) ,
+ pg_user VARCHAR(1024) ,
+ pg_port VARCHAR(1024) ,
+ mw_schema VARCHAR(1024) ,
+ ts2_schema VARCHAR(1024) ,
+ ctype VARCHAR(1024) ,
- sql_version VARCHAR(255) ,
- sql_date VARCHAR(255) ,
- cdate TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP
+ sql_version VARCHAR(1024) ,
+ sql_date VARCHAR(1024) ,
+ cdate TIMESTAMP(3) NOT NULL DEFAULT CURRENT TIMESTAMP
);
INSERT INTO mediawiki_version (type,mw_version,sql_version,sql_date)
VALUES ('Creation','??','$LastChangedRevision: 34049 $','$LastChangedDate: 2008-04-30 10:20:36 -0400 (Wed, 30 Apr 2008) $');
+-- Table for storing localisation data
+CREATE TABLE l10n_cache (
+ -- Language code
+ lc_lang VARCHAR(32) NOT NULL,
+ -- Cache key
+ lc_key VARCHAR(255) NOT NULL,
+ -- Value
+ lc_value CLOB(16M) INLINE LENGTH 4096 NOT NULL
+);
+CREATE INDEX lc_lang_key ON l10n_cache (lc_lang, lc_key);
+
diff --git a/maintenance/importDump.php b/maintenance/importDump.php
index eb51126a..714d76d8 100644
--- a/maintenance/importDump.php
+++ b/maintenance/importDump.php
@@ -24,7 +24,7 @@
$optionsWithArgs = array( 'report' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
/**
* @ingroup Maintenance
@@ -115,10 +115,19 @@ class BackupReader {
}
function importFromFile( $filename ) {
+ $t = true;
if( preg_match( '/\.gz$/', $filename ) ) {
$filename = 'compress.zlib://' . $filename;
}
- $file = fopen( $filename, 'rt' );
+ elseif( preg_match( '/\.bz2$/', $filename ) ) {
+ $filename = 'compress.bzip2://' . $filename;
+ }
+ elseif( preg_match( '/\.7z$/', $filename ) ) {
+ $filename = 'mediawiki.compress.7z://' . $filename;
+ $t = false;
+ }
+
+ $file = fopen( $filename, $t ? 'rt' : 't' ); //our 7zip wrapper uses popen, which seems not to like two-letter modes
return $this->importFromHandle( $file );
}
diff --git a/maintenance/importImages.inc.php b/maintenance/importImages.inc
index 290f3c07..7bb50eb8 100644
--- a/maintenance/importImages.inc.php
+++ b/maintenance/importImages.inc
@@ -6,6 +6,7 @@
* @file
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
+ * @author Mij <mij@bitchx.it>
*/
/**
@@ -18,6 +19,7 @@
function findFiles( $dir, $exts ) {
if( is_dir( $dir ) ) {
if( $dhl = opendir( $dir ) ) {
+ $files = array();
while( ( $file = readdir( $dhl ) ) !== false ) {
if( is_file( $dir . '/' . $file ) ) {
list( /* $name */, $ext ) = splitFilename( $dir . '/' . $file );
@@ -27,10 +29,10 @@ function findFiles( $dir, $exts ) {
}
return $files;
} else {
- return false;
+ return array();
}
} else {
- return false;
+ return array();
}
}
@@ -85,4 +87,26 @@ function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
}
return false;
-} \ No newline at end of file
+}
+
+# FIXME: Access the api in a saner way and performing just one query (preferably batching files too).
+function getFileCommentFromSourceWiki($wiki_host, $file) {
+ $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
+ $body = Http::get($url);
+ if (preg_match('#<ii comment="([^"]*)" />#', $body, $matches) == 0) {
+ return false;
+ }
+
+ return html_entity_decode( $matches[1] );
+}
+
+function getFileUserFromSourceWiki($wiki_host, $file) {
+ $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
+ $body = Http::get($url);
+ if (preg_match('#<ii user="([^"]*)" />#', $body, $matches) == 0) {
+ return false;
+ }
+
+ return html_entity_decode( $matches[1] );
+}
+
diff --git a/maintenance/importImages.php b/maintenance/importImages.php
index 7997b0d5..f0dd388a 100644
--- a/maintenance/importImages.php
+++ b/maintenance/importImages.php
@@ -2,17 +2,25 @@
/**
* Maintenance script to import one or more images from the local file system into
- * the wiki without using the web-based interface
+ * the wiki without using the web-based interface.
+ *
+ * "Smart import" additions:
+ * - aim: preserve the essential metadata (user, description) when importing medias from an existing wiki
+ * - process:
+ * - interface with the source wiki, don't use bare files only (see --source-wiki-url).
+ * - fetch metadata from source wiki for each file to import.
+ * - commit the fetched metadata to the destination wiki while submitting.
*
* @file
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
+ * @author Mij <mij@bitchx.it>
*/
-$optionsWithArgs = array( 'extensions', 'comment', 'comment-file', 'comment-ext', 'user', 'license' );
-require_once( 'commandLine.inc' );
-require_once( 'importImages.inc.php' );
-$added = $skipped = $overwritten = 0;
+$optionsWithArgs = array( 'extensions', 'comment', 'comment-file', 'comment-ext', 'user', 'license', 'sleep', 'limit', 'from', 'source-wiki-url' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
+require_once( dirname(__FILE__) . '/importImages.inc' );
+$processed = $added = $ignored = $skipped = $overwritten = $failed = 0;
echo( "Import Images\n\n" );
@@ -25,7 +33,7 @@ if( count( $args ) > 0 ) {
if (isset($options['protect']) && isset($options['unprotect']))
die("Cannot specify both protect and unprotect. Only 1 is allowed.\n");
- if ($options['protect'] == 1)
+if (isset($options['protect']) && $options['protect'] == 1)
die("You must specify a protection option.\n");
# Prepare the list of allowed extensions
@@ -45,8 +53,27 @@ if( count( $args ) > 0 ) {
$user = User::newFromName( 'Maintenance script' );
$wgUser = $user;
+ # Get block check. If a value is given, this specified how often the check is performed
+ if ( isset( $options['check-userblock'] ) ) {
+ if ( !$options['check-userblock'] ) $checkUserBlock = 1;
+ else $checkUserBlock = (int)$options['check-userblock'];
+ } else {
+ $checkUserBlock = false;
+ }
+
+ # Get --from
+ $from = @$options['from'];
+
+ # Get sleep time.
+ $sleep = @$options['sleep'];
+ if ( $sleep ) $sleep = (int)$sleep;
+
+ # Get limit number
+ $limit = @$options['limit'];
+ if ( $limit ) $limit = (int)$limit;
+
# Get the upload comment
- $comment = 'Importing image file';
+ $comment = NULL;
if ( isset( $options['comment-file'] ) ) {
$comment = file_get_contents( $options['comment-file'] );
@@ -76,6 +103,23 @@ if( count( $args ) > 0 ) {
continue;
}
+ if ( $from ) {
+ if ( $from == $title->getDBkey() ) {
+ $from = NULL;
+ } else {
+ $ignored++;
+ continue;
+ }
+ }
+
+ if ( $checkUserBlock && ( ( $processed % $checkUserBlock ) == 0 ) ) {
+ $user->clearInstanceCache( 'name' ); //reload from DB!
+ if ( $user->isBlocked() ) {
+ echo( $user->getName() . " was blocked! Aborting.\n" );
+ break;
+ }
+ }
+
# Check existence
$image = wfLocalFile( $title );
if( $image->exists() ) {
@@ -88,36 +132,73 @@ if( count( $args ) > 0 ) {
continue;
}
} else {
- echo( "Importing {$base}..." );
- $svar = 'added';
- }
+ if ( isset( $options['skip-dupes'] ) ) {
+ $repo = $image->getRepo();
+ $sha1 = File::sha1Base36( $file ); #XXX: we end up calculating this again when actually uploading. that sucks.
- # Find comment text
- $commentText = false;
+ $dupes = $repo->findBySha1( $sha1 );
- if ( $commentExt ) {
- $f = findAuxFile( $file, $commentExt );
- if ( !$f ) {
- echo( " No comment file with extension {$commentExt} found for {$file}, using default comment. " );
- } else {
- $commentText = file_get_contents( $f );
- if ( !$f ) {
- echo( " Failed to load comment file {$f}, using default comment. " );
+ if ( $dupes ) {
+ echo( "{$base} already exists as " . $dupes[0]->getName() . ", skipping\n" );
+ $skipped++;
+ continue;
}
}
- }
- if ( !$commentText ) {
- $commentText = $comment;
+ echo( "Importing {$base}..." );
+ $svar = 'added';
}
+ if (isset( $options['source-wiki-url'])) {
+ /* find comment text directly from source wiki, through MW's API */
+ $real_comment = getFileCommentFromSourceWiki($options['source-wiki-url'], $base);
+ if ($real_comment === false)
+ $commentText = $comment;
+ else
+ $commentText = $real_comment;
+
+ /* find user directly from source wiki, through MW's API */
+ $real_user = getFileUserFromSourceWiki($options['source-wiki-url'], $base);
+ if ($real_user === false) {
+ $wgUser = $user;
+ } else {
+ $wgUser = User::newFromName($real_user);
+ if ($wgUser === false) {
+ # user does not exist in target wiki
+ echo ("failed: user '$real_user' does not exist in target wiki.");
+ continue;
+ }
+ }
+ } else {
+ # Find comment text
+ $commentText = false;
+
+ if ( $commentExt ) {
+ $f = findAuxFile( $file, $commentExt );
+ if ( !$f ) {
+ echo( " No comment file with extension {$commentExt} found for {$file}, using default comment. " );
+ } else {
+ $commentText = file_get_contents( $f );
+ if ( !$f ) {
+ echo( " Failed to load comment file {$f}, using default comment. " );
+ }
+ }
+ }
+
+ if ( !$commentText ) {
+ $commentText = $comment;
+ }
+ }
+
+
# Import the file
if ( isset( $options['dry'] ) ) {
- echo( " publishing {$file}... " );
+ echo( " publishing {$file} by '" . $wgUser->getName() . "', comment '$commentText'... " );
} else {
$archive = $image->publish( $file );
if( WikiError::isError( $archive ) || !$archive->isGood() ) {
echo( "failed.\n" );
+ $failed++;
continue;
}
}
@@ -141,7 +222,6 @@ if( count( $args ) > 0 ) {
}
- $$svar++;
if ( isset( $options['dry'] ) ) {
echo( "done.\n" );
} else if ( $image->recordUpload( $archive->value, $commentText, $license ) ) {
@@ -164,14 +244,24 @@ if( count( $args ) > 0 ) {
} else {
echo( "failed.\n" );
+ $svar = 'failed';
}
+ $$svar++;
+ $processed++;
+
+ if ( $limit && $processed >= $limit )
+ break;
+
+ if ( $sleep )
+ sleep( $sleep );
}
# Print out some statistics
echo( "\n" );
- foreach( array( 'count' => 'Found', 'added' => 'Added',
- 'skipped' => 'Skipped', 'overwritten' => 'Overwritten' ) as $var => $desc ) {
+ foreach( array( 'count' => 'Found', 'limit' => 'Limit', 'ignored' => 'Ignored',
+ 'added' => 'Added', 'skipped' => 'Skipped', 'overwritten' => 'Overwritten',
+ 'failed' => 'Failed' ) as $var => $desc ) {
if( $$var > 0 )
echo( "{$desc}: {$$var}\n" );
}
@@ -184,14 +274,14 @@ if( count( $args ) > 0 ) {
showUsage();
}
-exit();
+exit(0);
function showUsage( $reason = false ) {
if( $reason ) {
echo( $reason . "\n" );
}
- echo <<<END
+ echo <<<TEXT
Imports images and other media files into the wiki
USAGE: php importImages.php [options] <dir>
@@ -199,17 +289,25 @@ USAGE: php importImages.php [options] <dir>
Options:
--extensions=<exts> Comma-separated list of allowable extensions, defaults to \$wgFileExtensions
---overwrite Overwrite existing images if a conflicting-named image is found
+--overwrite Overwrite existing images with the same name (default is to skip them)
+--limit=<num> Limit the number of images to process. Ignored or skipped images are not counted.
+--from=<name> Ignore all files until the one with the given name. Useful for resuming
+ aborted imports. <name> should be the file's canonical database form.
+--skip-dupes Skip images that were already uploaded under a different name (check SHA1)
+--sleep=<sec> Sleep between files. Useful mostly for debugging.
--user=<username> Set username of uploader, default 'Maintenance script'
---comment=<text> Set upload summary comment, default 'Importing image file'
+--check-userblock Check if the user got blocked during import.
+--comment=<text> Set upload summary comment, default 'Importing image file'.
--comment-file=<file> Set upload summary comment the the content of <file>.
--comment-ext=<ext> Causes the comment for each file to be loaded from a file with the same name
- but the extension <ext>.
+ but the extension <ext>. If a global comment is also given, it is appended.
--license=<code> Use an optional license template
--dry Dry run, don't import anything
--protect=<protect> Specify the protect value (autoconfirmed,sysop)
--unprotect Unprotects all uploaded images
+--source-wiki-url if specified, take User and Comment data for each imported file from this URL.
+ For example, --source-wiki-url="http://en.wikipedia.org/"
-END;
- exit();
-} \ No newline at end of file
+TEXT;
+ exit(1);
+}
diff --git a/maintenance/importLogs.inc b/maintenance/importLogs.inc
deleted file mode 100644
index a008e6c7..00000000
--- a/maintenance/importLogs.inc
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
-
-/**
- * Attempt to import existing log pages into the log tables.
- *
- * Not yet complete.
- *
- * @file
- * @todo document
- * @ingroup Maintenance
- */
-
-/** */
-require_once( 'GlobalFunctions.php' );
-require_once( 'Database.php' );
-require_once( 'Article.php' );
-require_once( 'LogPage.php' );
-
-/**
- * Log importer
- * @todo document
- * @ingroup Maintenance
- */
-class LogImporter {
- var $dummy = false;
-
- function LogImporter( $type ) {
- $this->type = $type;
- $this->db = wfGetDB( DB_MASTER );
- $this->actions = $this->setupActions();
- }
-
- function setupActions() {
- $actions = array();
- foreach( LogPage::validActions( $this->type ) as $action ) {
- $key = "{$this->type}/$action";
- $actions[$key] = $this->makeLineRegexp( $this->type, $action );
- }
- return $actions;
- }
-
- function makeLineRegexp( $type, $action ) {
- $linkRegexp = '(?:\[\[)?([^|\]]+?)(?:\|[^\]]+?)?(?:\]\])?';
- $linkRegexp2 = '\[\[([^|\]]+?)(?:\|[^\]]+?)?\]\]';
-
- $text = LogPage::actionText( $type, $action );
- $text = preg_quote( $text, '/' );
- $text = str_replace( '\$1', $linkRegexp, $text );
- $text = '^(.*?) ' . $linkRegexp2 . ' ' . $text;
- $text .= '(?: <em>\((.*)\)<\/em>)?';
- $text = "/$text/";
- return $text;
- }
-
- function importText( $text ) {
- if( $this->dummy ) {
- print $text;
- var_dump( $this->actions );
- }
- $lines = explode( '<li>', $text );
- foreach( $lines as $line ) {
- $matches = array();
- if( preg_match( '!^(.*)</li>!', $line, $matches ) ) {
- $this->importLine( $matches[1] );
- }
- }
- }
-
- function fixDate( $date ) {
- # Yuck! Parsing multilingual date formats??!!!!???!!??!
- # 01:55, 23 Aug 2004 - won't take in strtotimr
- # "Aug 23 2004 01:55" - seems ok
- # TODO: multilingual attempt to extract from the data in Language
- $matches = array();
- if( preg_match( '/^(\d+:\d+(?::\d+)?), (.*)$/', $date, $matches ) ) {
- $date = $matches[2] . ' ' . $matches[1];
- }
- $n = strtotime( $date ) + date("Z");
- # print gmdate( 'D, d M Y H:i:s T', $n ) . "\n";
- $timestamp = wfTimestamp( TS_MW, $n );
- return $timestamp;
- }
-
- function importLine( $line ) {
- foreach( $this->actions as $action => $regexp ) {
- $matches = array();
- if( preg_match( $regexp, $line, $matches ) ) {
- if( $this->dummy ) {
- #var_dump( $matches );
- }
- $date = $this->fixDate( $matches[1] );
- $user = Title::newFromText( $matches[2] );
- $target = Title::newFromText( $matches[3] );
- if( isset( $matches[4] ) ) {
- $comment = $matches[4];
- } else {
- $comment = '';
- }
-
- $insert = array(
- 'log_type' => $this->type,
- 'log_action' => preg_replace( '!^.*/!', '', $action ),
- 'log_timestamp' => $date,
- 'log_user' => intval( User::idFromName( $user->getText() ) ),
- 'log_namespace' => $target->getNamespace(),
- 'log_title' => $target->getDBkey(),
- 'log_comment' => wfUnescapeWikiText( $comment ),
- );
- if( $this->dummy ) {
- var_dump( $insert );
- } else {
- # FIXME: avoid duplicates!
- $this->db->insert( 'logging', $insert );
- }
- break;
- }
- }
- }
-}
-
-function wfUnescapeWikiText( $text ) {
- $text = str_replace(
- array( '&#91;', '&#124;', '&#39;', 'ISBN&#32;', '&#58;//' , "\n&#61;", '&#123;&#123;' ),
- array( '[', '|', "'", 'ISBN ' , '://' , "\n=", '{{' ),
- $text );
- return $text;
-}
diff --git a/maintenance/importLogs.php b/maintenance/importLogs.php
deleted file mode 100644
index 059c2f17..00000000
--- a/maintenance/importLogs.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * @todo document
- * @file
- * @ingroup Maintenance
- */
-
-/** */
-require_once( "commandLine.inc" );
-require_once( "importLogs.inc" );
-
-#print $text;
-#exit();
-
-foreach( LogPage::validTypes() as $type ) {
- if( $type == '' ) continue;
-
- $page = LogPage::logName( $type );
- $log = new Article( Title::makeTitleSafe( NS_PROJECT, $page ) );
- $text = $log->fetchContent();
-
- $importer = new LogImporter( $type );
- $importer->dummy = true;
- $importer->importText( $text );
-}
-
-
diff --git a/maintenance/importTextFile.php b/maintenance/importTextFile.php
index bfb852e0..955d01f4 100644
--- a/maintenance/importTextFile.php
+++ b/maintenance/importTextFile.php
@@ -11,7 +11,7 @@
$options = array( 'help', 'nooverwrite', 'norc' );
$optionsWithArgs = array( 'title', 'user', 'comment' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
echo( "Import Text File\n\n" );
if( count( $args ) < 1 || isset( $options['help'] ) ) {
@@ -23,7 +23,7 @@ if( count( $args ) < 1 || isset( $options['help'] ) ) {
if( is_file( $filename ) ) {
$title = isset( $options['title'] ) ? $options['title'] : titleFromFilename( $filename );
- $title = Title::newFromUrl( $title );
+ $title = Title::newFromURL( $title );
if( is_object( $title ) ) {
diff --git a/maintenance/importUseModWiki.php b/maintenance/importUseModWiki.php
index 05a4c78c..0d014145 100644
--- a/maintenance/importUseModWiki.php
+++ b/maintenance/importUseModWiki.php
@@ -59,7 +59,7 @@ function importPages()
global $wgRootDirectory;
$gt = '>';
- echo <<<END
+ echo <<<XML
<?xml version="1.0" encoding="UTF-8" ?$gt
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.1/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -69,7 +69,7 @@ function importPages()
xml:lang="en">
<!-- generated by importUseModWiki.php -->
-END;
+XML;
$letters = array(
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
@@ -79,10 +79,10 @@ END;
if( is_dir( $dir ) )
importPageDirectory( $dir );
}
- echo <<<END
+ echo <<<XML
</mediawiki>
-END;
+XML;
}
function importPageDirectory( $dir, $prefix = "" )
@@ -227,11 +227,11 @@ function importPage( $title )
*/
$revisions = array( $page );
}
- $xml = <<<END
+ $xml = <<<XML
<page>
<title>$newtitle</title>
-END;
+XML;
# History
$revisions = array_merge( $revisions, fetchKeptPages( $title ) );
@@ -247,7 +247,7 @@ END;
$timestamp = xmlsafe( timestamp2ISO8601( $rev->ts ) );
$comment = xmlsafe( recodeText( $rev->summary ) );
- $xml .= <<<END
+ $xml .= <<<XML
<revision>
<timestamp>$timestamp</timestamp>
<contributor><username>$username</username></contributor>
@@ -256,7 +256,7 @@ END;
<text>$text</text>
</revision>
-END;
+XML;
}
$xml .= "</page>\n\n";
return $xml;
diff --git a/maintenance/initEditCount.php b/maintenance/initEditCount.php
index d26349bb..b7301643 100644
--- a/maintenance/initEditCount.php
+++ b/maintenance/initEditCount.php
@@ -1,89 +1,108 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once "commandLine.inc";
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( isset( $options['help'] ) ) {
- die( "Batch-recalculate user_editcount fields from the revision table.
-Options:
- --quick Force the update to be done in a single query.
- --background Force replication-friendly mode; may be inefficient but
- avoids locking tables or lagging slaves with large updates;
- calculates counts on a slave if possible.
+class InitEditCount extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'quick', 'Force the update to be done in a single query' );
+ $this->addOption( 'background', 'Force replication-friendly mode; may be inefficient but
+ avoids locking tables or lagging slaves with large updates;
+ calculates counts on a slave if possible.
Background mode will be automatically used if the server is MySQL 4.0
(which does not support subqueries) or if multiple servers are listed
-in \$wgDBservers, usually indicating a replication environment.
+in $wgDBservers, usually indicating a replication environment.' );
+ $this->mDescription = "Batch-recalculate user_editcount fields from the revision table";
+ }
-");
-}
-$dbw = wfGetDB( DB_MASTER );
-$user = $dbw->tableName( 'user' );
-$revision = $dbw->tableName( 'revision' );
+ public function execute() {
+ global $wgDBservers;
+ $dbw = wfGetDB( DB_MASTER );
+ $user = $dbw->tableName( 'user' );
+ $revision = $dbw->tableName( 'revision' );
-$dbver = $dbw->getServerVersion();
+ $dbver = $dbw->getServerVersion();
-// Autodetect mode...
-$backgroundMode = count( $wgDBservers ) > 1 ||
- ($dbw instanceof DatabaseMySql && version_compare( $dbver, '4.1' ) < 0);
+ // Autodetect mode...
+ $backgroundMode = count( $wgDBservers ) > 1 ||
+ ($dbw instanceof DatabaseMySql && version_compare( $dbver, '4.1' ) < 0);
+
+ if( $this->hasOption('background') ) {
+ $backgroundMode = true;
+ } elseif( $this->hasOption('quick') ) {
+ $backgroundMode = false;
+ }
-if( isset( $options['background'] ) ) {
- $backgroundMode = true;
-} elseif( isset( $options['quick'] ) ) {
- $backgroundMode = false;
-}
+ if( $backgroundMode ) {
+ $this->output( "Using replication-friendly background mode...\n" );
-if( $backgroundMode ) {
- echo "Using replication-friendly background mode...\n";
-
- $dbr = wfGetDB( DB_SLAVE );
- $chunkSize = 100;
- $lastUser = $dbr->selectField( 'user', 'MAX(user_id)', '', __FUNCTION__ );
-
- $start = microtime( true );
- $migrated = 0;
- for( $min = 0; $min <= $lastUser; $min += $chunkSize ) {
- $max = $min + $chunkSize;
- $result = $dbr->query(
- "SELECT
- user_id,
- COUNT(rev_user) AS user_editcount
- FROM $user
- LEFT OUTER JOIN $revision ON user_id=rev_user
- WHERE user_id > $min AND user_id <= $max
- GROUP BY user_id",
- __FUNCTION__ );
-
- while( $row = $dbr->fetchObject( $result ) ) {
- $dbw->update( 'user',
- array( 'user_editcount' => $row->user_editcount ),
- array( 'user_id' => $row->user_id ),
- __FUNCTION__ );
- ++$migrated;
+ $dbr = wfGetDB( DB_SLAVE );
+ $chunkSize = 100;
+ $lastUser = $dbr->selectField( 'user', 'MAX(user_id)', '', __METHOD__ );
+
+ $start = microtime( true );
+ $migrated = 0;
+ for( $min = 0; $min <= $lastUser; $min += $chunkSize ) {
+ $max = $min + $chunkSize;
+ $result = $dbr->query(
+ "SELECT
+ user_id,
+ COUNT(rev_user) AS user_editcount
+ FROM $user
+ LEFT OUTER JOIN $revision ON user_id=rev_user
+ WHERE user_id > $min AND user_id <= $max
+ GROUP BY user_id",
+ __METHOD__ );
+
+ foreach( $result as $row ) {
+ $dbw->update( 'user',
+ array( 'user_editcount' => $row->user_editcount ),
+ array( 'user_id' => $row->user_id ),
+ __METHOD__ );
+ ++$migrated;
+ }
+ $dbr->freeResult( $result );
+
+ $delta = microtime( true ) - $start;
+ $rate = ($delta == 0.0) ? 0.0 : $migrated / $delta;
+ $this->output( sprintf( "%s %d (%0.1f%%) done in %0.1f secs (%0.3f accounts/sec).\n",
+ wfWikiID(),
+ $migrated,
+ min( $max, $lastUser ) / $lastUser * 100.0,
+ $delta,
+ $rate ) );
+
+ wfWaitForSlaves( 10 );
+ }
+ } else {
+ // Subselect should work on modern MySQLs etc
+ $this->output( "Using single-query mode...\n" );
+ $sql = "UPDATE $user SET user_editcount=(SELECT COUNT(*) FROM $revision WHERE rev_user=user_id)";
+ $dbw->query( $sql );
}
- $dbr->freeResult( $result );
-
- $delta = microtime( true ) - $start;
- $rate = ($delta == 0.0) ? 0.0 : $migrated / $delta;
- printf( "%s %d (%0.1f%%) done in %0.1f secs (%0.3f accounts/sec).\n",
- $wgDBname,
- $migrated,
- min( $max, $lastUser ) / $lastUser * 100.0,
- $delta,
- $rate );
-
- wfWaitForSlaves( 10 );
+
+ $this->output( "Done!\n" );
}
-} else {
- // Subselect should work on modern MySQLs etc
- echo "Using single-query mode...\n";
- $sql = "UPDATE $user SET user_editcount=(SELECT COUNT(*) FROM $revision WHERE rev_user=user_id)";
- $dbw->query( $sql );
}
-echo "Done!\n";
-
-
+$maintClass = "InitEditCount";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/initStats.inc b/maintenance/initStats.inc
deleted file mode 100644
index b1660ce2..00000000
--- a/maintenance/initStats.inc
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup Maintenance
- */
-
-function wfInitStats( $options=array() ) {
- $dbr = wfGetDB( DB_SLAVE );
-
- wfOut( "Counting total edits..." );
- $edits = $dbr->selectField( 'revision', 'COUNT(*)', '', __METHOD__ );
- $edits += $dbr->selectField( 'archive', 'COUNT(*)', '', __METHOD__ );
- wfOut( "{$edits}\nCounting number of articles..." );
-
- global $wgContentNamespaces;
- $good = $dbr->selectField( 'page', 'COUNT(*)', array( 'page_namespace' => $wgContentNamespaces, 'page_is_redirect' => 0, 'page_len > 0' ), __METHOD__ );
- wfOut( "{$good}\nCounting total pages..." );
-
- $pages = $dbr->selectField( 'page', 'COUNT(*)', '', __METHOD__ );
- wfOut( "{$pages}\nCounting number of users..." );
-
- $users = $dbr->selectField( 'user', 'COUNT(*)', '', __METHOD__ );
- wfOut( "{$users}\nCounting number of admins..." );
-
- $admin = $dbr->selectField( 'user_groups', 'COUNT(*)', array( 'ug_group' => 'sysop' ), __METHOD__ );
- wfOut( "{$admin}\nCounting number of images..." );
-
- $image = $dbr->selectField( 'image', 'COUNT(*)', '', __METHOD__ );
- wfOut( "{$image}\n" );
-
- if( !isset( $options['noviews'] ) ) {
- wfOut( "Counting total page views..." );
- $views = $dbr->selectField( 'page', 'SUM(page_counter)', '', __METHOD__ );
- wfOut( "{$views}\n" );
- }
-
- wfOut( "\nUpdating site statistics..." );
-
- $dbw = wfGetDB( DB_MASTER );
- $values = array( 'ss_total_edits' => $edits,
- 'ss_good_articles' => $good,
- 'ss_total_pages' => $pages,
- 'ss_users' => $users,
- 'ss_admins' => $admin,
- 'ss_images' => $image );
- $conds = array( 'ss_row_id' => 1 );
- $views = array( 'ss_total_views' => isset( $views ) ? $views : 0 );
-
- if( isset( $options['update'] ) ) {
- $dbw->update( 'site_stats', $values, $conds, __METHOD__ );
- } else {
- $dbw->delete( 'site_stats', $conds, __METHOD__ );
- $dbw->insert( 'site_stats', array_merge( $values, $conds, $views ), __METHOD__ );
- }
-
- wfOut( "done.\n" );
-}
diff --git a/maintenance/initStats.php b/maintenance/initStats.php
index d206c202..b92d46c5 100644
--- a/maintenance/initStats.php
+++ b/maintenance/initStats.php
@@ -3,29 +3,82 @@
/**
* Maintenance script to re-initialise or update the site statistics table
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Brion Vibber
* @author Rob Church <robchur@gmail.com>
* @licence GNU General Public Licence 2.0 or later
*/
-
-$options = array( 'help', 'update', 'noviews' );
-require_once( 'commandLine.inc' );
-echo( "Refresh Site Statistics\n\n" );
-
-if( isset( $options['help'] ) ) {
- showHelp();
- exit();
-}
-require "$IP/maintenance/initStats.inc";
-wfInitStats( $options );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class InitStats extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Re-initialise the site statistics tables";
+ $this->addOption( 'update', 'Update the existing statistics (preserves the ss_total_views field)' );
+ $this->addOption( 'noviews', "Don't update the page view counter" );
+ $this->addOption( 'active', 'Also update active users count' );
+ $this->addOption( 'use-master', 'Count using the master database' );
+ }
+
+ public function execute() {
+ $this->output( "Refresh Site Statistics\n\n" );
+ $counter = new SiteStatsInit( $this->hasOption( 'use-master' ) );
+
+ $this->output( "Counting total edits..." );
+ $edits = $counter->edits();
+ $this->output( "{$edits}\nCounting number of articles..." );
+
+ $good = $counter->articles();
+ $this->output( "{$good}\nCounting total pages..." );
+
+ $pages = $counter->pages();
+ $this->output( "{$pages}\nCounting number of users..." );
+
+ $users = $counter->users();
+ $this->output( "{$users}\nCounting number of images..." );
+
+ $image = $counter->files();
+ $this->output( "{$image}\n" );
+
+ if( !$this->hasOption('noviews') ) {
+ $this->output( "Counting total page views..." );
+ $views = $counter->views();
+ $this->output( "{$views}\n" );
+ }
+
+ if( $this->hasOption( 'active' ) ) {
+ $this->output( "Counting active users..." );
+ $active = SiteStatsUpdate::cacheUpdate();
+ $this->output( "{$active}\n" );
+ }
+
+ $this->output( "\nUpdating site statistics..." );
+
+ if( $this->hasOption( 'update' ) ) {
+ $counter->update();
+ } else {
+ $counter->refresh();
+ }
-function showHelp() {
- echo( "Re-initialise the site statistics tables.\n\n" );
- echo( "Usage: php initStats.php [--update|--noviews]\n\n" );
- echo( " --update : Update the existing statistics (preserves the ss_total_views field)\n" );
- echo( "--noviews : Don't update the page view counter\n\n" );
+ $this->output( "done.\n" );
+ }
}
+$maintClass = "InitStats";
+require_once( DO_MAINTENANCE );
diff --git a/install-utils.inc b/maintenance/install-utils.inc
index 36465b64..f2d48e9a 100644
--- a/install-utils.inc
+++ b/maintenance/install-utils.inc
@@ -14,35 +14,24 @@ function install_version_checks() {
if( !function_exists( 'version_compare' ) ) {
# version_compare was introduced in 4.1.0
- echo "Your PHP version is much too old; 4.0.x will _not_ work. 5.0.0 or higher is required. ABORTING.\n";
- die( -1 );
+ echo "Your PHP version is much too old; 4.0.x will _not_ work. 5.1.0 or higher is required. ABORTING.\n";
+ die( 1 );
}
- if( version_compare( phpversion(), '5.0.0' ) < 0 ) {
- echo "PHP 5.0.0 or higher is required. If PHP 5 is available only when \n".
+ if( version_compare( phpversion(), '5.1.0' ) < 0 ) {
+ echo "PHP 5.1.0 or higher is required. If PHP 5 is available only when \n".
"PHP files have a .php5 extension, please navigate to <a href=\"index.php5\">index.php5</a> \n".
"to continue installation. ABORTING.\n";
- die( -1 );
- }
-
- // Test for PHP bug which breaks PHP 5.0.x on 64-bit...
- // As of 1.8 this breaks lots of common operations instead
- // of just some rare ones like export.
- $borked = str_replace( 'a', 'b', array( -1 => -1 ) );
- if( !isset( $borked[-1] ) ) {
- echo "PHP 5.0.x is buggy on your 64-bit system; you must upgrade to PHP 5.1.x\n" .
- "or higher. ABORTING. (http://bugs.php.net/bug.php?id=34879 for details)\n";
- die( -1 );
- }
-
+ die( 1 );
+ }
+
$test = new PhpXmlBugTester();
if( !$test->ok ) {
echo "Your system has a combination of PHP and libxml2 versions which is buggy\n" .
"and can cause hidden data corruption in MediaWiki and other web apps.\n" .
"Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later!\n" .
"ABORTING (http://bugs.php.net/bug.php?id=45996 for details).\n";
- die( -1 );
+ die( 1 );
}
-
$test = new PhpRefCallBugTester;
$test->execute();
@@ -51,7 +40,7 @@ function install_version_checks() {
"reference parameters to __call. Upgrade to PHP 5.3.2 or higher, or \n" .
"downgrade to PHP 5.3.0 to fix this.\n" .
"ABORTING (see http://bugs.php.net/bug.php?id=50394 for details)\n";
- die( -1 );
+ die( 1 );
}
global $wgCommandLineMode;
@@ -60,53 +49,24 @@ function install_version_checks() {
@set_time_limit( 0 );
}
-function copyfile( $sdir, $name, $ddir, $perms = 0664 ) {
- copyfileto( $sdir, $name, $ddir, $name, $perms );
-}
-
-function copyfileto( $sdir, $sname, $ddir, $dname, $perms = 0664 ) {
- global $wgInstallOwner, $wgInstallGroup;
-
- $d = "{$ddir}/{$dname}";
- if ( copy( "{$sdir}/{$sname}", $d ) ) {
- if ( isset( $wgInstallOwner ) ) { chown( $d, $wgInstallOwner ); }
- if ( isset( $wgInstallGroup ) ) { chgrp( $d, $wgInstallGroup ); }
- chmod( $d, $perms );
- # print "Copied \"{$sname}\" to \"{$d}\".\n";
- } else {
- print "Failed to copy file \"{$sname}\" to \"{$ddir}/{$dname}\".\n";
- exit();
- }
-}
-
-function copydirectory( $source, $dest ) {
- $handle = opendir( $source );
- while ( false !== ( $f = readdir( $handle ) ) ) {
- $fullname = "$source/$f";
- if ( $f{0} != '.' && is_file( $fullname ) ) {
- copyfile( $source, $f, $dest );
- }
- }
-}
-
/**
* Test for PHP+libxml2 bug which breaks XML input subtly with certain versions.
* http://bugs.php.net/bug.php?id=45996
* Known fixed with PHP 5.2.9 + libxml2-2.7.3
*/
class PhpXmlBugTester {
- var $parsedData = '';
- var $ok = false;
- function __construct() {
+ private $parsedData = '';
+ public $ok = false;
+ public function __construct() {
$charData = '<b>c</b>';
$xml = '<a>' . htmlspecialchars( $charData ) . '</a>';
-
+
$parser = xml_parser_create();
xml_set_character_data_handler( $parser, array( $this, 'chardata' ) );
$parsedOk = xml_parse($parser, $xml, true);
$this->ok = $parsedOk && ($this->parsedData == $charData);
}
- function chardata($parser, $data) {
+ public function chardata($parser, $data) {
$this->parsedData .= $data;
}
}
@@ -149,22 +109,68 @@ function readconsole( $prompt = '' ) {
return readline( $prompt );
} else {
if ( $isatty ) {
- print $prompt;
- }
- if ( feof( STDIN ) ) {
- return false;
+ $st = readlineEmulation( $prompt );
+ } else {
+ if ( feof( STDIN ) ) {
+ $st = false;
+ } else {
+ $st = fgets(STDIN, 1024);
+ }
}
- $st = fgets(STDIN, 1024);
if ($st === false) return false;
$resp = trim( $st );
return $resp;
}
}
+function findExecutable( $name ) {
+ $paths = explode( PATH_SEPARATOR, getenv( "PATH" ) );
+ foreach( $paths as $path ) {
+ $full = $path . DIRECTORY_SEPARATOR . $name;
+ if( file_exists( $full ) ) {
+ if( wfIsWindows() || is_executable( $full ) ) {
+ return $full;
+ }
+ }
+ }
+ return false;
+}
+
+function readlineEmulation( $prompt ) {
+ $bash = "bash";
+ if( !wfIsWindows() && findExecutable( $bash ) ) {
+ $retval = false;
+ $encPrompt = wfEscapeShellArg( $prompt );
+ $command = "read -er -p $encPrompt && echo \"\$REPLY\"";
+ $encCommand = wfEscapeShellArg( $command );
+ $line = wfShellExec( "$bash -c $encCommand", $retval );
+
+ if( $retval == 0 ) {
+ return $line;
+ } elseif( $retval == 127 ) {
+ // Couldn't execute bash even though we thought we saw it.
+ // Shell probably spit out an error message, sorry :(
+ // Fall through to fgets()...
+ } else {
+ // EOF/ctrl+D
+ return false;
+ }
+ }
+
+ // Fallback... we'll have no editing controls, EWWW
+ if ( feof( STDIN ) ) {
+ return false;
+ }
+ print $prompt;
+ return fgets(STDIN, 1024);
+}
+
+
#
# Read and execute SQL commands from a file
#
function dbsource( $fname, $db = false ) {
+ wfDeprecated( __METHOD__ );
if ( !$db ) {
// Try $wgDatabase, which is used in the install and update scripts
global $wgDatabase;
diff --git a/maintenance/installExtension.php b/maintenance/installExtension.php
index d5c4f4be..ea4c191c 100644
--- a/maintenance/installExtension.php
+++ b/maintenance/installExtension.php
@@ -23,7 +23,7 @@
$optionsWithArgs = array( 'target', 'repository', 'repos' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
define('EXTINST_NOPATCH', 0);
define('EXTINST_WRITEPATCH', 6);
diff --git a/maintenance/interwiki.sql b/maintenance/interwiki.sql
index 2521d381..2ce0e23f 100644
--- a/maintenance/interwiki.sql
+++ b/maintenance/interwiki.sql
@@ -39,13 +39,14 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1',0),
('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1',0),
('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1',0),
-('mediazilla','http://bugzilla.wikipedia.org/$1',1),
+('mediazilla','https://bugzilla.wikimedia.org/$1',1),
('mediawikiwiki','http://www.mediawiki.org/wiki/$1',0),
('memoryalpha','http://www.memory-alpha.org/en/index.php/$1',0),
('metawiki','http://sunir.org/apps/meta.pl?$1',0),
('metawikipedia','http://meta.wikimedia.org/wiki/$1',0),
('moinmoin','http://purl.net/wiki/moin/$1',0),
('mozillawiki','http://wiki.mozilla.org/index.php/$1',0),
+('mw','http://www.mediawiki.org/wiki/$1',0),
('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1',0),
('openfacts','http://openfacts.berlios.de/index.phtml?title=$1',0),
('openwiki','http://openwiki.com/?$1',0),
@@ -79,19 +80,20 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('wiki','http://c2.com/cgi/wiki?$1',0),
('wikia','http://www.wikia.com/wiki/$1',0),
('wikibooks','http://en.wikibooks.org/wiki/$1',1),
-('wikicities','http://www.wikicities.com/index.php/$1',0),
+('wikicities','http://www.wikia.com/wiki/$1',0),
('wikif1','http://www.wikif1.org/$1',0),
('wikihow','http://www.wikihow.com/$1',0),
('wikinfo','http://www.wikinfo.org/index.php/$1',0),
('wikimedia','http://wikimediafoundation.org/wiki/$1',0),
-('wikiquote','http://en.wikiquote.org/wiki/$1',1),
('wikinews','http://en.wikinews.org/wiki/$1',1),
-('wikisource','http://sources.wikipedia.org/wiki/$1',1),
-('wikispecies','http://species.wikipedia.org/wiki/$1',1),
+('wikiquote','http://en.wikiquote.org/wiki/$1',1),
+('wikipedia', 'http://en.wikipedia.org/wiki/$1', 1),
+('wikisource','http://wikisource.org/wiki/$1',1),
+('wikispecies','http://species.wikimedia.org/wiki/$1',1),
('wikitravel','http://wikitravel.org/en/$1',0),
+('wikiversity','http://en.wikiversity.org/wiki/$1',1),
+('wikt','http://en.wiktionary.org/wiki/$1',1),
('wiktionary','http://en.wiktionary.org/wiki/$1',1),
-('wikipedia', 'http://en.wikipedia.org/wiki/$1', 1),
('wlug','http://www.wlug.org.nz/$1',0),
('zwiki','http://zwiki.org/$1',0),
-('zzz wiki','http://wiki.zzz.ee/index.php/$1',0),
-('wikt','http://en.wiktionary.org/wiki/$1',1);
+('zzz wiki','http://wiki.zzz.ee/index.php/$1',0);
diff --git a/maintenance/lag.php b/maintenance/lag.php
new file mode 100644
index 00000000..47b4c47b
--- /dev/null
+++ b/maintenance/lag.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Shows database lag
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class DatabaseLag extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Shows database lag";
+ $this->addOption( 'r', "Don't exit immediately, but show the lag every 5 seconds" );
+ }
+
+ public function execute() {
+ if ( $this->hasOption( 'r' ) ) {
+ $lb = wfGetLB();
+ echo 'time ';
+ for( $i = 1; $i < $lb->getServerCount(); $i++ ) {
+ $hostname = $lb->getServerName( $i );
+ printf( "%-12s ", $hostname );
+ }
+ echo "\n";
+
+ while( 1 ) {
+ $lb->clearLagTimeCache();
+ $lags = $lb->getLagTimes();
+ unset( $lags[0] );
+ echo gmdate( 'H:i:s' ) . ' ';
+ foreach( $lags as $i => $lag ) {
+ printf( "%-12s " , $lag === false ? 'false' : $lag );
+ }
+ echo "\n";
+ sleep( 5 );
+ }
+ } else {
+ $lb = wfGetLB();
+ $lags = $lb->getLagTimes();
+ foreach( $lags as $i => $lag ) {
+ $name = $lb->getServerName( $i );
+ $this->output( sprintf( "%-20s %s\n" , $name, $lag === false ? 'false' : $lag ) );
+ }
+ }
+ }
+}
+
+$maintClass = "DatabaseLag";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/StatOutputs.php b/maintenance/language/StatOutputs.php
index b41278b4..169a4d41 100644
--- a/maintenance/language/StatOutputs.php
+++ b/maintenance/language/StatOutputs.php
@@ -32,7 +32,7 @@ class statsOutput {
class wikiStatsOutput extends statsOutput {
function heading() {
global $IP;
- $version = SpecialVersion::getVersion( $IP );
+ $version = SpecialVersion::getVersion( 'nodb' );
echo "'''Statistics are based on:''' <code>" . $version . "</code>\n\n";
echo "'''Note:''' These statistics can be generated by running <code>php maintenance/language/transstat.php</code>.\n\n";
echo "For additional information on specific languages (the message names, the actual problems, etc.), run <code>php maintenance/language/checkLanguage.php --lang=foo</code>.\n\n";
@@ -72,18 +72,6 @@ class wikiStatsOutput extends statsOutput {
}
}
-/** Outputs WikiText and appends category and text only used for Meta-Wiki */
-class metawikiStatsOutput extends wikiStatsOutput {
- function heading() {
- echo "See [[MediaWiki localisation]] to learn how you can help translating MediaWiki.\n\n";
- parent::heading();
- }
- function footer() {
- parent::footer();
- echo "\n[[Category:Localisation|Statistics]]\n";
- }
-}
-
/** Output text. To be used on a terminal for example. */
class textStatsOutput extends statsOutput {
function element( $in, $heading = false ) {
diff --git a/maintenance/language/alltrans.php b/maintenance/language/alltrans.php
index 67c870e6..420386fd 100644
--- a/maintenance/language/alltrans.php
+++ b/maintenance/language/alltrans.php
@@ -1,16 +1,40 @@
<?php
/**
- * @file
- * @ingroup MaintenanceLanguage
- *
* Get all the translations messages, as defined in the English language file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup MaintenanceLanguage
*/
-require_once( dirname(__FILE__).'/../commandLine.inc' );
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
-$wgEnglishMessages = array_keys( Language::getMessagesFor( 'en' ) );
-foreach( $wgEnglishMessages as $key ) {
- echo "$key\n";
-}
+class AllTrans extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Get all messages as defined by the English language file";
+ }
+ public function execute() {
+ $wgEnglishMessages = array_keys( Language::getMessagesFor( 'en' ) );
+ foreach( $wgEnglishMessages as $key ) {
+ $this->output( "$key\n" );
+ }
+ }
+}
+$maintClass = "AllTrans";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/checkDupeMessages.php b/maintenance/language/checkDupeMessages.php
new file mode 100644
index 00000000..81eafccf
--- /dev/null
+++ b/maintenance/language/checkDupeMessages.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * @todo document
+ * @file
+ * @ingroup MaintenanceLanguage
+ */
+
+require_once( dirname(__FILE__).'/../commandLine.inc' );
+$messagesDir = dirname(__FILE__).'/../../languages/messages/';
+$runTest = false;
+$run = false;
+$runMode = 'text';
+
+// Check parameters
+if ( isset( $options['lang'] ) && isset( $options['clang'] )) {
+ if (!isset( $options['mode'] )) {
+ $runMode = 'text';
+ } else {
+ if (!strcmp($options['mode'],'wiki')) {
+ $runMode = 'wiki';
+ } else if (!strcmp($options['mode'],'php')) {
+ $runMode = 'php';
+ } else if (!strcmp($options['mode'],'raw')) {
+ $runMode = 'raw';
+ } else {
+ }
+ }
+ $runTest = true;
+} else {
+ echo <<<TEXT
+Run this script to print out the duplicates against a message array.
+Parameters:
+ * lang: Language code to be checked.
+ * clang: Language code to be compared.
+Options:
+ * mode: Output format, can be either:
+ * text: Text output on the console (default)
+ * wiki: Wiki format, with * at beginning of each line
+ * php: Output text as PHP syntax in a array $dupeMessages
+ * raw: Raw output for duplicates
+TEXT;
+}
+
+// Check file exists
+if ( $runTest ) {
+ $langCode = $options['lang'];
+ $langCodeC = $options['clang'];
+ $langCodeF = ucfirst(strtolower(preg_replace('/-/','_',$langCode)));
+ $langCodeFC = ucfirst(strtolower(preg_replace('/-/','_',$langCodeC)));
+ $messagesFile = $messagesDir.'Messages'.$langCodeF.'.php';
+ $messagesFileC = $messagesDir.'Messages'.$langCodeFC.'.php';
+ if (file_exists($messagesFile) && file_exists($messagesFileC)) {
+ $run = true;
+ }
+ else {
+ echo "Messages file(s) could not be found.\nMake sure both files are exists.\n";
+ }
+}
+
+// Run to check the dupes
+if ( $run ) {
+ if (!strcmp($runMode,'wiki')) {
+ $runMode = 'wiki';
+ } else if (!strcmp($runMode,'raw')) {
+ $runMode = 'raw';
+ }
+ include( $messagesFile );
+ $messageExist = isset($messages);
+ if ($messageExist)
+ $wgMessages[$langCode] = $messages;
+ include( $messagesFileC );
+ $messageCExist = isset($messages);
+ if ($messageCExist)
+ $wgMessages[$langCodeC] = $messages;
+ $count = 0;
+
+ if (($messageExist) && ($messageCExist)) {
+
+ if (!strcmp($runMode,'php')) {
+ print("<?php\n");
+ print('$dupeMessages = array('."\n");
+ }
+ foreach ($wgMessages[$langCodeC] as $key => $value) {
+ foreach ($wgMessages[$langCode] as $ckey => $cvalue) {
+ if (!strcmp($key,$ckey)) {
+ if ((!strcmp($key,$ckey)) && (!strcmp($value,$cvalue))) {
+ if (!strcmp($runMode,'raw')) {
+ print("$key\n");
+ } else if (!strcmp($runMode,'php')) {
+ print("'$key' => '',\n");
+ } else if (!strcmp($runMode,'wiki')) {
+ $uKey = ucfirst($key);
+ print("* MediaWiki:$uKey/$langCode\n");
+ } else {
+ print("* $key\n");
+ }
+ $count++;
+ }
+ }
+ }
+ }
+ if (!strcmp($runMode,'php')) {
+ print(");\n");
+ }
+ if (!strcmp($runMode,'text')) {
+ if ($count == 1) {
+ echo "\nThere are $count duplicated message in $langCode, against to $langCodeC.\n";
+ } else {
+ echo "\nThere are $count duplicated messages in $langCode, against to $langCodeC.\n";
+ }
+ }
+ } else {
+ if (!$messageExist)
+ echo "There are no messages defined in $langCode.\n";
+ if (!$messageCExist)
+ echo "There are no messages defined in $langCodeC.\n";
+ }
+}
diff --git a/maintenance/language/checkExtensions.php b/maintenance/language/checkExtensions.php
index ab6f9ba8..ed1855c1 100644
--- a/maintenance/language/checkExtensions.php
+++ b/maintenance/language/checkExtensions.php
@@ -11,13 +11,13 @@ require_once( 'languages.inc' );
require_once( 'checkLanguage.inc' );
if( !class_exists( 'MessageGroups' ) || !class_exists( 'PremadeMediawikiExtensionGroups' ) ) {
- echo <<<END
+ echo <<<TEXT
Please add the Translate extension to LocalSettings.php, and enable the extension groups:
require_once( 'extensions/Translate/Translate.php' );
\$wgTranslateEC = array_keys( \$wgTranslateAC );
If you still get this message, update Translate to its latest version.
-END;
+TEXT;
exit(-1);
}
diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc
index 52281b57..fc77aad3 100644
--- a/maintenance/language/checkLanguage.inc
+++ b/maintenance/language/checkLanguage.inc
@@ -7,6 +7,7 @@ class CheckLanguageCLI {
protected $code = null;
protected $level = 2;
protected $doLinks = false;
+ protected $linksPrefix = '';
protected $wikiCode = 'en';
protected $checkAll = false;
protected $output = 'plain';
@@ -24,7 +25,7 @@ class CheckLanguageCLI {
public function __construct( Array $options ) {
if ( isset( $options['help'] ) ) {
echo $this->help();
- exit();
+ exit(1);
}
if ( isset( $options['lang'] ) ) {
@@ -42,6 +43,10 @@ class CheckLanguageCLI {
$this->includeExif = !isset( $options['noexif'] );
$this->checkAll = isset( $options['all'] );
+ if ( isset( $options['prefix'] ) ) {
+ $this->linksPrefix = $options['prefix'];
+ }
+
if ( isset( $options['wikilang'] ) ) {
$this->wikiCode = $options['wikilang'];
}
@@ -190,6 +195,7 @@ Parameters:
* help: Show this help.
* level: Show the following display level (default: 2).
* links: Link the message values (default off).
+ * prefix: prefix to add to links.
* wikilang: For the links, what is the content language of the wiki to display the output in (default en).
* whitelist: Do only the following checks (form: code,code).
* blacklist: Don't do the following checks (form: code,code).
@@ -292,7 +298,7 @@ ENDS;
foreach ( $this->checks as $check ) {
if ( isset( $checkBlacklist[$code] ) &&
in_array( $check, $checkBlacklist[$code] ) ) {
- $result[$check] = array();
+ $results[$check] = array();
continue;
}
@@ -316,9 +322,9 @@ ENDS;
if ( $this->doLinks ) {
$displayKey = ucfirst( $key );
if ( $code == $this->wikiCode ) {
- return "[[MediaWiki:$displayKey|$key]]";
+ return "[[{$this->linksPrefix}MediaWiki:$displayKey|$key]]";
} else {
- return "[[MediaWiki:$displayKey/$code|$key]]";
+ return "[[{$this->linksPrefix}MediaWiki:$displayKey/$code|$key]]";
}
} else {
return $key;
@@ -378,7 +384,7 @@ ENDS;
function outputWiki() {
global $wgContLang, $IP;
$detailText = '';
- $rows[] = '! Language !! Code !! Total !! ' . implode( ' !! ', $this->checks );
+ $rows[] = '! Language !! Code !! Total !! ' . implode( ' !! ', array_diff( $this->checks, $this->nonMessageChecks() ) );
foreach ( $this->results as $code => $results ) {
$detailTextForLang = "==$code==\n";
$numbers = array();
@@ -418,7 +424,7 @@ ENDS;
$tableRows = implode( "\n|-\n", $rows );
- $version = SpecialVersion::getVersion( $IP );
+ $version = SpecialVersion::getVersion( 'nodb' );
echo <<<EOL
'''Check results are for:''' <code>$version</code>
@@ -459,7 +465,7 @@ class CheckExtensionsCLI extends CheckLanguageCLI {
public function __construct( Array $options, $extension ) {
if ( isset( $options['help'] ) ) {
echo $this->help();
- exit();
+ exit(1);
}
if ( isset( $options['lang'] ) ) {
@@ -587,7 +593,7 @@ Check codes (ideally, all of them should result 0; all the checks are executed b
* untranslated: Messages which are required to translate, but are not translated.
* duplicate: Messages which translation equal to fallback
* obsolete: Messages which are untranslatable, but translated.
- * variables: Messages without variables which should be used, or with variables which shouldn't be used.
+ * variables: Messages without variables which should be used, or with variables which should not be used.
* empty: Empty messages.
* whitespace: Messages which have trailing whitespace.
* xhtml: Messages which are not well-formed XHTML (checks only few common errors).
@@ -645,25 +651,40 @@ ENDS;
# Blacklist some checks for some languages
$checkBlacklist = array(
#'code' => array( 'check1', 'check2' ... )
+'az' => array( 'plural' ),
+'bo' => array( 'plural' ),
+'dz' => array( 'plural' ),
+'id' => array( 'plural' ),
+'fa' => array( 'plural' ),
'gan' => array( 'plural' ),
+'gan-hans' => array( 'plural' ),
+'gan-hant' => array( 'plural' ),
'gn' => array( 'plural' ),
'hak' => array( 'plural' ),
'hu' => array( 'plural' ),
'ja' => array( 'plural' ), // Does not use plural
+'jv' => array( 'plural' ),
'ka' => array( 'plural' ),
'kk-arab' => array( 'plural' ),
'kk-cyrl' => array( 'plural' ),
'kk-latn' => array( 'plural' ),
+'km' => array( 'plural' ),
+'kn' => array( 'plural' ),
'ko' => array( 'plural' ),
+'lzh' => array( 'plural' ),
'mn' => array( 'plural' ),
'ms' => array( 'plural' ),
-'my' => array( 'chars' ), // Uses a lot zwnj
+'my' => array( 'plural', 'chars' ), // Uses a lot zwnj
'sah' => array( 'plural' ),
'sq' => array( 'plural' ),
'tet' => array( 'plural' ),
'th' => array( 'plural' ),
+'to' => array( 'plural' ),
+'tr' => array( 'plural' ),
+'vi' => array( 'plural' ),
'wuu' => array( 'plural' ),
'xmf' => array( 'plural' ),
+'yo' => array( 'plural' ),
'yue' => array( 'plural' ),
'zh' => array( 'plural' ),
'zh-classical' => array( 'plural' ),
diff --git a/maintenance/language/countMessages.php b/maintenance/language/countMessages.php
index 7d16915a..826c43cb 100644
--- a/maintenance/language/countMessages.php
+++ b/maintenance/language/countMessages.php
@@ -1,40 +1,65 @@
<?php
+/**
+ * Count how many messages we have defined for each language.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup MaintenanceLanguage
+ */
-require_once( dirname(__FILE__).'/../commandLine.inc' );
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
-global $IP;
-
-if ( !isset( $args[0] ) ) {
- $dir = "$IP/languages/messages";
-} else {
- $dir = $args[0];
-}
-
-$total = 0;
-$nonZero = 0;
-foreach ( glob( "$dir/*.php" ) as $file ) {
- $baseName = basename( $file );
- if( !preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $baseName, $m ) ) {
- continue;
+class CountMessages extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Count how many messages we have defined for each language";
}
- $code = str_replace( '_', '-', strtolower( $m[1] ) );
- $numMessages = wfGetNumMessages( $file );
- //print "$code: $numMessages\n";
- $total += $numMessages;
- if ( $numMessages > 0 ) {
- $nonZero ++;
+
+ public function execute() {
+ global $IP;
+ $dir = $this->getArg( 0, "$IP/languages/messages" );
+ $total = 0;
+ $nonZero = 0;
+ foreach ( glob( "$dir/*.php" ) as $file ) {
+ $baseName = basename( $file );
+ if( !preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $baseName, $m ) ) {
+ continue;
+ }
+ $code = str_replace( '_', '-', strtolower( $m[1] ) );
+ $numMessages = $this->getNumMessages( $file );
+ //print "$code: $numMessages\n";
+ $total += $numMessages;
+ if ( $numMessages > 0 ) {
+ $nonZero ++;
+ }
+ }
+ $this->output( "\nTotal: $total\n" );
+ $this->output( "Languages: $nonZero\n" );
}
-}
-print "\nTotal: $total\n";
-print "Languages: $nonZero\n";
-function wfGetNumMessages( $file ) {
- // Separate function to limit scope
- require( $file );
- if ( isset( $messages ) ) {
- return count( $messages );
- } else {
- return 0;
+ private function getNumMessages( $file ) {
+ // Separate function to limit scope
+ require( $file );
+ if ( isset( $messages ) ) {
+ return count( $messages );
+ } else {
+ return 0;
+ }
}
}
+$maintClass = "CountMessages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/date-formats.php b/maintenance/language/date-formats.php
index 834d2bd8..54a6a26d 100644
--- a/maintenance/language/date-formats.php
+++ b/maintenance/language/date-formats.php
@@ -1,50 +1,76 @@
<?php
/**
- * @file
+ * Test various language time and date functions
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup MaintenanceLanguage
*/
-$ts = '20010115123456';
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
-
-$IP = dirname( __FILE__ ) . '/../..';
-require_once( "$IP/maintenance/commandLine.inc" );
+class DateFormats extends Maintenance {
-foreach ( glob( "$IP/languages/messages/Messages*.php" ) as $filename ) {
- $base = basename( $filename );
- $m = array();
- if ( !preg_match( '/Messages(.*)\.php$/', $base, $m ) ) {
- continue;
- }
- $code = str_replace( '_', '-', strtolower( $m[1] ) );
- print "$code ";
- $lang = Language::factory( $code );
- $prefs = $lang->getDatePreferences();
- if ( !$prefs ) {
- $prefs = array( 'default' );
- }
- print "date: ";
- foreach ( $prefs as $index => $pref ) {
- if ( $index > 0 ) {
- print ' | ';
- }
- print $lang->date( $ts, false, $pref );
- }
- print "\n$code time: ";
- foreach ( $prefs as $index => $pref ) {
- if ( $index > 0 ) {
- print ' | ';
- }
- print $lang->time( $ts, false, $pref );
+ private $ts = '20010115123456';
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Test various language time and date functions";
}
- print "\n$code both: ";
- foreach ( $prefs as $index => $pref ) {
- if ( $index > 0 ) {
- print ' | ';
+
+ public function execute() {
+ global $IP;
+ foreach ( glob( "$IP/languages/messages/Messages*.php" ) as $filename ) {
+ $base = basename( $filename );
+ $m = array();
+ if ( !preg_match( '/Messages(.*)\.php$/', $base, $m ) ) {
+ continue;
+ }
+ $code = str_replace( '_', '-', strtolower( $m[1] ) );
+ $this->output( "$code " );
+ $lang = Language::factory( $code );
+ $prefs = $lang->getDatePreferences();
+ if ( !$prefs ) {
+ $prefs = array( 'default' );
+ }
+ $this->output( "date: " );
+ foreach ( $prefs as $index => $pref ) {
+ if ( $index > 0 ) {
+ $this->output( ' | ' );
+ }
+ $this->output( $lang->date( $this->ts, false, $pref ) );
+ }
+ $this->output( "\n$code time: " );
+ foreach ( $prefs as $index => $pref ) {
+ if ( $index > 0 ) {
+ $this->output( ' | ' );
+ }
+ $this->output( $lang->time( $this->ts, false, $pref ) );
+ }
+ $this->output( "\n$code both: " );
+ foreach ( $prefs as $index => $pref ) {
+ if ( $index > 0 ) {
+ $this->output( ' | ' );
+ }
+ $this->output( $lang->timeanddate( $this->ts, false, $pref ) );
+ }
+ $this->output( "\n\n" );
}
- print $lang->timeanddate( $ts, false, $pref );
}
- print "\n\n";
}
-
+$maintClass = "DateFormats";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/diffLanguage.php b/maintenance/language/diffLanguage.php
index 9d395b3c..bbdb8653 100644
--- a/maintenance/language/diffLanguage.php
+++ b/maintenance/language/diffLanguage.php
@@ -69,7 +69,7 @@ function ucfirstlcrest($string) {
/**
* Return a $wgAllmessages array shipped in MediaWiki
- * @param string $languageCode Formated language code
+ * @param $languageCode String: formated language code
* @return array The MediaWiki default $wgAllMessages array requested
*/
function getMediawikiMessages($languageCode = 'En') {
@@ -93,8 +93,8 @@ function getMediawikiMessages($languageCode = 'En') {
/**
* Return a $wgAllmessages array in a given file. Language of the array
* need to be given cause we can not detect which language it provides
- * @param string $filename Filename of the file containing a message array
- * @param string $languageCode Language of the external array
+ * @param $filename String: filename of the file containing a message array
+ * @param $languageCode String: language of the external array
* @return array A $wgAllMessages array from an external file.
*/
function getExternalMessages($filename, $languageCode) {
diff --git a/maintenance/language/digit2html.php b/maintenance/language/digit2html.php
index b020d812..54630af0 100644
--- a/maintenance/language/digit2html.php
+++ b/maintenance/language/digit2html.php
@@ -1,29 +1,61 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup MaintenanceLanguage
*/
-require( '../commandLine.inc' );
+require_once( dirname(__FILE__).'/../Maintenance.php' );
-# A list of unicode numerals is available at:
-# http://www.fileformat.info/info/unicode/category/Nd/list.htm
-$langs = array( 'Ar', 'As', 'Bh', 'Bo', 'Dz', 'Fa', 'Gu', 'Hi', 'Km', 'Kn', 'Ks', 'Lo', 'Ml', 'Mr', 'Ne', 'New', 'Or', 'Pa', 'Pi', 'Sa' );
+class Digit2Html extends Maintenance {
-foreach( $langs as $code ) {
- $filename = Language::getMessagesFileName( $code );
- echo "Loading language [$code] ... ";
- unset( $digitTransformTable );
- require_once( $filename );
- if( !isset( $digitTransformTable ) ) {
- print "\$digitTransformTable not found\n";
- continue;
+ # A list of unicode numerals is available at:
+ # http://www.fileformat.info/info/unicode/category/Nd/list.htm
+ private $mLangs = array(
+ 'Ar', 'As', 'Bh', 'Bo', 'Dz',
+ 'Fa', 'Gu', 'Hi', 'Km', 'Kn',
+ 'Ks', 'Lo', 'Ml', 'Mr', 'Ne',
+ 'New', 'Or', 'Pa', 'Pi', 'Sa'
+ );
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Check digit transformation";
}
- print "OK\n\$digitTransformTable = array(\n";
- foreach( $digitTransformTable as $latin => $translation ) {
- $htmlent = utf8ToHexSequence( $translation );
- print "'$latin' => '$translation', # &#x$htmlent;\n";
+ public function execute() {
+ foreach( $this->mLangs as $code ) {
+ $filename = Language::getMessagesFileName( $code );
+ $this->output( "Loading language [$code] ... " );
+ unset( $digitTransformTable );
+ require_once( $filename );
+ if( !isset( $digitTransformTable ) ) {
+ $this->error( "\$digitTransformTable not found for lang: $code" );
+ continue;
+ }
+
+ $this->output( "OK\n\$digitTransformTable = array(\n" );
+ foreach( $digitTransformTable as $latin => $translation ) {
+ $htmlent = utf8ToHexSequence( $translation );
+ $this->output( "'$latin' => '$translation', # &#x$htmlent;\n" );
+ }
+ $this->output( ");\n" );
+ }
}
- print ");\n";
}
+
+$maintClass = "Digit2Html";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/dumpMessages.php b/maintenance/language/dumpMessages.php
index 35aeeb75..a0f0a9ab 100644
--- a/maintenance/language/dumpMessages.php
+++ b/maintenance/language/dumpMessages.php
@@ -1,18 +1,44 @@
<?php
/**
- * @todo document
- * @file
+ * Dump an entire language, using the keys from English
+ * so we get all the values, not just the customized ones
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup MaintenanceLanguage
+ * @todo Make this more useful, right now just dumps $wgContentLang
*/
-/** */
-require_once( dirname(__FILE__).'/../commandLine.inc' );
-$messages = array();
-$wgEnglishMessages = array_keys( Language::getMessagesFor( 'en' ) );
-foreach ( $wgEnglishMessages as $key ) {
- $messages[$key] = wfMsg( $key );
-}
-print "MediaWiki $wgVersion language file\n";
-print serialize( $messages );
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
+class DumpMessages extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Dump an entire language, using the keys from English";
+ }
+
+ public function execute() {
+ $messages = array();
+ foreach ( array_keys( Language::getMessagesFor( 'en' ) ) as $key ) {
+ $messages[$key] = wfMsg( $key );
+ }
+ $this->output( "MediaWiki $wgVersion language file\n" );
+ $this->output( serialize( $messages ) );
+ }
+}
+$maintClass = "DumpMessages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/generateNormalizerData.php b/maintenance/language/generateNormalizerData.php
new file mode 100644
index 00000000..d6b7aaa6
--- /dev/null
+++ b/maintenance/language/generateNormalizerData.php
@@ -0,0 +1,137 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
+
+require_once( dirname( __FILE__ ) . '/../../includes/normal/UtfNormalUtil.php' );
+
+/**
+ * Generates normalizer data files for Arabic and Malayalam.
+ * For NFC see includes/normal.
+ */
+class GenerateNormalizerData extends Maintenance {
+ var $dataFile;
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+ 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+ }
+
+ public function execute() {
+ if ( !$this->hasOption( 'unicode-data-file' ) ) {
+ $this->dataFile = 'UnicodeData.txt';
+ if ( !file_exists( $this->dataFile ) ) {
+ $this->error( "Unable to find UnicodeData.txt. Please specify its location with --unicode-data-file=<FILE>" );
+ exit( 1 );
+ }
+ } else {
+ $this->dataFile = $this->getOption( 'unicode-data-file' );
+ if ( !file_exists( $this->dataFile ) ) {
+ $this->error( 'Unable to find the specified data file.' );
+ exit( 1 );
+ }
+ }
+
+ $this->generateArabic();
+ $this->generateMalayalam();
+ }
+
+ function generateArabic() {
+ $file = fopen( $this->dataFile, 'r' );
+ if ( !$file ) {
+ $this->error( 'Unable to open the data file.' );
+ exit( 1 );
+ }
+
+ // For the file format, see http://www.unicode.org/reports/tr44/
+ $fieldNames = array(
+ 'Code',
+ 'Name',
+ 'General_Category',
+ 'Canonical_Combining_Class',
+ 'Bidi_Class',
+ 'Decomposition_Type_Mapping',
+ 'Numeric_Type_Value',
+ 'Bidi_Mirrored',
+ 'Unicode_1_Name',
+ 'ISO_Comment',
+ 'Simple_Uppercase_Mapping',
+ 'Simple_Lowercase_Mapping',
+ 'Simple_Titlecase_Mapping'
+ );
+
+ $pairs = array();
+
+ $lineNum = 0;
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ ++$lineNum;
+
+ # Strip comments
+ $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+ if ( $line === '' ) {
+ continue;
+ }
+
+ # Split fields
+ $numberedData = explode( ';', $line );
+ $data = array();
+ foreach ( $fieldNames as $number => $name ) {
+ $data[$name] = $numberedData[$number];
+ }
+
+ $code = base_convert( $data['Code'], 16, 10 );
+ if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
+ || ( $code >= 0xFE70 && $code <= 0xFEFF ) ) # Arabic presentation forms B
+ {
+ if ( $data['Decomposition_Type_Mapping'] === '' ) {
+ // No decomposition
+ continue;
+ }
+ if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
+ $data['Decomposition_Type_Mapping'], $m ) )
+ {
+ $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
+ $this->error( $line );
+ continue;
+ }
+
+ $source = hexSequenceToUtf8( $data['Code'] );
+ $dest = hexSequenceToUtf8( $m[2] );
+ $pairs[$source] = $dest;
+ }
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
+ echo "ar: " . count( $pairs ) . " pairs written.\n";
+ }
+
+ function generateMalayalam() {
+ $hexPairs = array(
+ # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
+ '0D23 0D4D 200D' => '0D7A',
+ '0D28 0D4D 200D' => '0D7B',
+ '0D30 0D4D 200D' => '0D7C',
+ '0D32 0D4D 200D' => '0D7D',
+ '0D33 0D4D 200D' => '0D7E',
+
+ # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
+ '0D15 0D4D 200D' => '0D7F',
+ );
+
+ $pairs = array();
+ foreach ( $hexPairs as $hexSource => $hexDest ) {
+ $source = hexSequenceToUtf8( $hexSource );
+ $dest = hexSequenceToUtf8( $hexDest );
+ $pairs[$source] = $dest;
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
+ echo "ml: " . count( $pairs ) . " pairs written.\n";
+ }
+}
+
+$maintClass = 'GenerateNormalizerData';
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/language/lang2po.php b/maintenance/language/lang2po.php
index 1009ed6c..c7484d63 100644
--- a/maintenance/language/lang2po.php
+++ b/maintenance/language/lang2po.php
@@ -6,15 +6,27 @@
* - generate .po header
* - fix escaping of \
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup MaintenanceLanguage
*/
-$optionsWithArgs[] = 'lang';
-
/** This is a command line script */
-require_once(dirname(__FILE__).'/../commandLine.inc');
-require_once(dirname(__FILE__).'/languages.inc');
+require_once(dirname(__FILE__) . '/../Maintenance.php' );
+require_once(dirname(__FILE__) . '/languages.inc' );
define('ALL_LANGUAGES', true);
define('XGETTEXT_BIN', 'xgettext');
@@ -26,28 +38,45 @@ define('MSGMERGE_OPTIONS', ' -v ');
define('LOCALE_OUTPUT_DIR', $IP.'/locale');
+class Lang2Po extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "";
+ $this->addOption( 'lang', 'a lang code you want to generate a .po for (default: all langs)', false, true );
+ }
-if( isset($options['help']) ) { usage(); wfDie(); }
-// default output is WikiText
-if( !isset($options['lang']) ) { $options['lang'] = ALL_LANGUAGES; }
-
-function usage() {
-print <<<END
-Usage: php lang2po.php [--help] [--lang=<langcode>] [--stdout]
- --help: this message.
- --lang: a lang code you want to generate a .po for (default: all languages).
-
-END;
-}
-
+ public function execute() {
+ // Generate a template .pot based on source tree
+ $this->output( "Getting 'gettext' default messages from sources:" );
+ $this->generatePot();
+ $this->output( "done.\n" );
+
+
+ $langTool = new languages();
+ if( $this->getOption( 'lang', ALL_LANGUAGES ) === ALL_LANGUAGES ) {
+ $codes = $langTool->getLanguages();
+ } else {
+ $codes = array( $this->getOption( 'lang' ) );
+ }
+
+ // Do all languages
+ foreach ( $codes as $langcode) {
+ $this->output( "Loading messages for $langcode:\n" );
+ if( !$this->generatePo($langcode, $langTool->getMessages($langcode) ) ) {
+ $this->error( "ERROR: Failed to write file." );
+ } else {
+ $this->output( "Applying template:" );
+ $this->applyPot($langcode);
+ }
+ }
+ }
-/**
- * Return a dummy header for later edition.
- * @return string A dummy header
- */
-function poHeader() {
-return
-'# SOME DESCRIPTIVE TITLE.
+ /**
+ * Return a dummy header for later edition.
+ * @return string A dummy header
+ */
+ private function poHeader() {
+ return '# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2005 MediaWiki
# This file is distributed under the same license as the MediaWiki package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
@@ -65,94 +94,72 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
';
-}
-
-/**
- * generate and write a file in .po format.
- *
- * @param string $langcode Code of a language it will process.
- * @param array &$messages Array containing the various messages.
- * @return string Filename where stuff got saved or false.
- */
-function generatePo($langcode, $messages) {
- $data = poHeader();
-
- // Generate .po entries
- foreach($messages['all'] as $identifier => $content) {
- $data .= "msgid \"$identifier\"\n";
-
- // Escape backslashes
- $tmp = str_replace('\\', '\\\\', $content);
- // Escape doublelquotes
- $tmp = preg_replace( "/(?<!\\\\)\"/", '\"', $tmp);
- // Rewrite multilines to gettext format
- $tmp = str_replace("\n", "\"\n\"", $tmp);
-
- $data .= 'msgstr "'. $tmp . "\"\n\n";
}
- // Write the content to a file in locale/XX/messages.po
- $dir = LOCALE_OUTPUT_DIR.'/'.$langcode;
- if( !is_dir($dir) ) { mkdir( $dir, 0770 ); }
- $filename = $dir.'/fromlanguagefile.po';
-
- $file = fopen( $filename , 'wb' );
- if( fwrite( $file, $data ) ) {
- fclose( $file );
- return $filename;
- } else {
- fclose( $file );
- return false;
+ /**
+ * generate and write a file in .po format.
+ *
+ * @param string $langcode Code of a language it will process.
+ * @param array &$messages Array containing the various messages.
+ * @return string Filename where stuff got saved or false.
+ */
+ private function generatePo($langcode, $messages) {
+ $data = $this->poHeader();
+
+ // Generate .po entries
+ foreach( $messages['all'] as $identifier => $content ) {
+ $data .= "msgid \"$identifier\"\n";
+
+ // Escape backslashes
+ $tmp = str_replace('\\', '\\\\', $content);
+ // Escape doublelquotes
+ $tmp = preg_replace( "/(?<!\\\\)\"/", '\"', $tmp);
+ // Rewrite multilines to gettext format
+ $tmp = str_replace("\n", "\"\n\"", $tmp);
+
+ $data .= 'msgstr "'. $tmp . "\"\n\n";
+ }
+
+ // Write the content to a file in locale/XX/messages.po
+ $dir = LOCALE_OUTPUT_DIR.'/'.$langcode;
+ if( !is_dir($dir) ) { mkdir( $dir, 0770 ); }
+ $filename = $dir.'/fromlanguagefile.po';
+
+ $file = fopen( $filename , 'wb' );
+ if( fwrite( $file, $data ) ) {
+ fclose( $file );
+ return $filename;
+ } else {
+ fclose( $file );
+ return false;
+ }
}
-}
-
-function generatePot() {
- global $IP;
- $curdir = getcwd();
- chdir($IP);
- exec( XGETTEXT_BIN
- .' '.XGETTEXT_OPTIONS
- .' -o '.LOCALE_OUTPUT_DIR.'/wfMsg.pot'
- .' includes/*php'
- );
- chdir($curdir);
-}
-
-function applyPot($langcode) {
- $langdir = LOCALE_OUTPUT_DIR.'/'.$langcode;
-
- $from = $langdir.'/fromlanguagefile.po';
- $pot = LOCALE_OUTPUT_DIR.'/wfMsg.pot';
- $dest = $langdir.'/messages.po';
- // Merge template and generate file to get final .po
- exec(MSGMERGE_BIN.MSGMERGE_OPTIONS." $from $pot -o $dest ");
- // delete no more needed file
-// unlink($from);
-}
-
-// Generate a template .pot based on source tree
-echo "Getting 'gettext' default messages from sources:";
-generatePot();
-echo "done.\n";
-
-
-$langTool = new languages();
-
-if( $options['lang'] === ALL_LANGUAGES ) {
- $codes = $langTool->getLanguages();
-} else {
- $codes = array( $options['lang'] );
-}
-
-// Do all languages
-foreach ( $codes as $langcode) {
- echo "Loading messages for $langcode:\n";
- if( ! generatePo($langcode, $langTool->getMessages($langcode) ) ) {
- echo "ERROR: Failed to write file.\n";
- } else {
- echo "Applying template:";
- applyPot($langcode);
+ private function generatePot() {
+ global $IP;
+ $curdir = getcwd();
+ chdir($IP);
+ exec( XGETTEXT_BIN
+ .' '.XGETTEXT_OPTIONS
+ .' -o '.LOCALE_OUTPUT_DIR.'/wfMsg.pot'
+ .' includes/*php'
+ );
+ chdir($curdir);
+ }
+
+ private function applyPot($langcode) {
+ $langdir = LOCALE_OUTPUT_DIR.'/'.$langcode;
+
+ $from = $langdir.'/fromlanguagefile.po';
+ $pot = LOCALE_OUTPUT_DIR.'/wfMsg.pot';
+ $dest = $langdir.'/messages.po';
+
+ // Merge template and generate file to get final .po
+ exec(MSGMERGE_BIN.MSGMERGE_OPTIONS." $from $pot -o $dest ");
+ // delete no more needed file
+ // unlink($from);
}
}
+$maintClass = "Lang2Po";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/langmemusage.php b/maintenance/language/langmemusage.php
index 9bfb3cdc..71135474 100644
--- a/maintenance/language/langmemusage.php
+++ b/maintenance/language/langmemusage.php
@@ -3,31 +3,57 @@
* Dumb program that tries to get the memory usage
* for each language file.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup MaintenanceLanguage
*/
/** This is a command line script */
-require_once(dirname(__FILE__).'/../commandLine.inc');
-require_once(dirname(__FILE__).'/languages.inc');
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
+require_once( dirname(__FILE__) . '/languages.inc' );
-$langtool = new languages();
+class LangMemUsage extends Maintenance {
-if ( ! function_exists( 'memory_get_usage' ) )
- wfDie( "You must compile PHP with --enable-memory-limit\n" );
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Dumb program that tries to get the memory usage\n" .
+ "for each language file";
+ }
-$memlast = $memstart = memory_get_usage();
+ public function execute() {
+ if ( !function_exists( 'memory_get_usage' ) )
+ $this->error( "You must compile PHP with --enable-memory-limit", true );
-print 'Base memory usage: '.$memstart."\n";
+ $langtool = new languages();
+ $memlast = $memstart = memory_get_usage();
-foreach ( $langtool->getLanguages() as $langcode ) {
- Language::factory( $langcode );
- $memstep = memory_get_usage();
- printf( "%12s: %d\n", $langcode, ($memstep- $memlast) );
- $memlast = $memstep;
-}
+ $this->output( "Base memory usage: $memstart\n" );
+
+ foreach ( $langtool->getLanguages() as $langcode ) {
+ Language::factory( $langcode );
+ $memstep = memory_get_usage();
+ $this->output( sprintf( "%12s: %d\n", $langcode, ($memstep- $memlast) ) );
+ $memlast = $memstep;
+ }
-$memend = memory_get_usage();
+ $memend = memory_get_usage();
-echo ' Total Usage: '.($memend - $memstart)."\n";
+ $this->output( ' Total Usage: '.($memend - $memstart)."\n" );
+ }
+}
+$maintClass = "LangMemUsage";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/language/languages.inc b/maintenance/language/languages.inc
index 6159e844..98464292 100644
--- a/maintenance/language/languages.inc
+++ b/maintenance/language/languages.inc
@@ -14,6 +14,7 @@ class languages {
protected $mRawMessages; # Raw list of the messages in each language
protected $mMessages; # Messages in each language (except for English), divided to groups
+ protected $mFallback; # Fallback language in each language
protected $mGeneralMessages; # General messages in English, divided to groups
protected $mIgnoredMessages; # All the messages which should be exist only in the English file
protected $mOptionalMessages; # All the messages which may be translated or not, depending on the language
@@ -76,6 +77,7 @@ class languages {
*/
protected function loadFile( $code ) {
if ( isset( $this->mRawMessages[$code] ) &&
+ isset( $this->mFallback[$code] ) &&
isset( $this->mNamespaceNames[$code] ) &&
isset( $this->mNamespaceAliases[$code] ) &&
isset( $this->mMagicWords[$code] ) &&
@@ -83,6 +85,7 @@ class languages {
return;
}
$this->mRawMessages[$code] = array();
+ $this->mFallback[$code] = '';
$this->mNamespaceNames[$code] = array();
$this->mNamespaceAliases[$code] = array();
$this->mMagicWords[$code] = array();
@@ -93,6 +96,9 @@ class languages {
if ( isset( $messages ) ) {
$this->mRawMessages[$code] = $messages;
}
+ if ( isset( $fallback ) ) {
+ $this->mFallback[$code] = $fallback;
+ }
if ( isset( $namespaceNames ) ) {
$this->mNamespaceNames[$code] = $namespaceNames;
}
@@ -207,6 +213,18 @@ class languages {
}
/**
+ * Get fallback language code for a specific language.
+ *
+ * @param $code The language code.
+ *
+ * @return Fallback code.
+ */
+ public function getFallback( $code ) {
+ $this->loadFile( $code );
+ return $this->mFallback[$code];
+ }
+
+ /**
* Get namespace names for a specific language.
*
* @param $code The language code.
diff --git a/maintenance/language/makeMessageDB.php b/maintenance/language/makeMessageDB.php
deleted file mode 100644
index f853b395..00000000
--- a/maintenance/language/makeMessageDB.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * Proof of principle script
- */
-
-require( dirname( __FILE__ ) . '/../commandLine.inc' );
-
-$obj = new MakeMessagesDB;
-$obj->run();
-
-class MakeMessagesDB {
-
- function run() {
- global $wgExtensionMessagesFiles, $wgMessageCache, $IP;
-
- $nameHash = md5( implode( "\n", array_keys( $wgExtensionMessagesFiles ) ) );
- $dir = "$IP/cache/ext-msgs";
- wfMkdirParents( $dir );
- $db = dba_open( "$dir/$nameHash.cdb", 'n', 'cdb' );
- if ( !$db ) {
- echo "Cannot open DB file\n";
- exit( 1 );
- }
-
- # Load extension messages
- foreach ( $wgExtensionMessagesFiles as $file ) {
- $messages = $magicWords = array();
- require( $file );
- foreach ( $messages as $lang => $unused ) {
- $wgMessageCache->processMessagesArray( $messages, $lang );
- }
- }
-
- # Write them to the file
- foreach ( $wgMessageCache->mExtensionMessages as $lang => $messages ) {
- foreach ( $messages as $key => $text ) {
- dba_insert( "$lang:$key", $text, $db );
- }
- }
-
- dba_close( $db );
- }
-}
-
diff --git a/maintenance/language/messageTypes.inc b/maintenance/language/messageTypes.inc
index d155db94..9b979b19 100644
--- a/maintenance/language/messageTypes.inc
+++ b/maintenance/language/messageTypes.inc
@@ -25,6 +25,7 @@ $wgIgnoredMessages = array(
'accesskey-ca-viewsource',
'accesskey-ca-history',
'accesskey-ca-protect',
+ 'accesskey-ca-unprotect',
'accesskey-ca-delete',
'accesskey-ca-undelete',
'accesskey-ca-move',
@@ -35,6 +36,7 @@ $wgIgnoredMessages = array(
'accesskey-search-fulltext',
'accesskey-p-logo',
'accesskey-n-mainpage',
+ 'accesskey-n-mainpage-description',
'accesskey-n-portal',
'accesskey-n-currentevents',
'accesskey-n-recentchanges',
@@ -65,10 +67,10 @@ $wgIgnoredMessages = array(
'accesskey-preview',
'accesskey-diff',
'accesskey-compareselectedversions',
- 'accesskey-visualcomparison',
'accesskey-watch',
'accesskey-upload',
'addsection',
+ 'talkpageheader',
'anonnotice',
'autoblock_whitelist',
'searchmenu-help',
@@ -152,8 +154,12 @@ $wgIgnoredMessages = array(
'fewestrevisions-summary',
'upload-summary',
'newuserlogentry',
- 'restrictlogpage',
'wantedtemplates-summary',
+ 'activeusers-summary',
+ 'search-summary',
+ 'editpage-tos-summary',
+ 'addsection-preload',
+ 'addsection-editintro',
);
/** Optional messages, which may be translated only if changed in the target language. */
@@ -208,6 +214,7 @@ $wgOptionalMessages = array(
'skinname-chick',
'skinname-simple',
'skinname-modern',
+ 'skinname-vector',
'common.css',
'standard.css',
'nostalgia.css',
@@ -217,6 +224,7 @@ $wgOptionalMessages = array(
'chick.css',
'simple.css',
'modern.css',
+ 'vector.css',
'print.css',
'handheld.css',
'common.js',
@@ -228,6 +236,7 @@ $wgOptionalMessages = array(
'chick.js',
'simple.js',
'modern.js',
+ 'vector.js',
'widthheight',
'exif-fnumber-format',
'exif-focallength-format',
@@ -320,6 +329,7 @@ $wgOptionalMessages = array(
'hebrew-calendar-m10-gen',
'hebrew-calendar-m11-gen',
'hebrew-calendar-m12-gen',
+ 'version-svn-revision',
'catseparator',
'semicolon-separator',
'comma-separator',
@@ -328,15 +338,21 @@ $wgOptionalMessages = array(
'word-separator',
'ellipsis',
'percent',
+ 'parentheses',
'autocomment-prefix',
'listgrouprights-right-display',
+ 'listgrouprights-right-revoked',
'timezone-utc',
'whatlinkshere-backlink',
'recentchangeslinked-backlink',
+ 'unpatrolledletter',
'diff-with-additional',
'pagetitle-view-mainpage',
'trackback',
'trackbackexcerpt',
+ 'prefs-registration-date-time',
+ 'prefs-memberingroups-type',
+ 'shared-repo-name-wikimediacommons',
);
/** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
@@ -559,6 +575,8 @@ $wgEXIFMessages = array(
'exif-gpslatitude-s',
'exif-gpslongitude-e',
'exif-gpslongitude-w',
+ 'exif-gpsaltitude-0',
+ 'exif-gpsaltitude-1',
'exif-gpsstatus-a',
'exif-gpsstatus-v',
'exif-gpsmeasuremode-2',
@@ -566,6 +584,9 @@ $wgEXIFMessages = array(
'exif-gpsspeed-k',
'exif-gpsspeed-m',
'exif-gpsspeed-n',
+ 'exif-gpsdestdistance-k',
+ 'exif-gpsdestdistance-m',
+ 'exif-gpsdestdistance-n',
'exif-gpsdirection-t',
'exif-gpsdirection-m',
);
diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc
index fb22bc9c..25bc8fd0 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
@@ -41,6 +41,7 @@ $wgMessageStructure = array(
'tog-enotifminoredits',
'tog-enotifrevealaddr',
'tog-shownumberswatching',
+ 'tog-oldsig',
'tog-fancysig',
'tog-externaleditor',
'tog-externaldiff',
@@ -65,6 +66,13 @@ $wgMessageStructure = array(
'underline-never',
'underline-default',
),
+ 'editfont' => array(
+ 'editfont-style',
+ 'editfont-default',
+ 'editfont-monospace',
+ 'editfont-sansserif',
+ 'editfont-serif',
+ ),
'dates' => array(
'sunday',
'monday',
@@ -133,6 +141,8 @@ $wgMessageStructure = array(
'category-file-count',
'category-file-count-limited',
'listingcontinuesabbrev',
+ 'index-category',
+ 'noindex-category',
),
'mainpage' => array(
'linkprefix',
@@ -144,6 +154,14 @@ $wgMessageStructure = array(
'article',
'newwindow',
'cancel',
+ 'moredotdotdot',
+ 'mypage',
+ 'mytalk',
+ 'anontalk',
+ 'navigation',
+ 'and',
+ ),
+ 'cologneblue' => array(
'qbfind',
'qbbrowse',
'qbedit',
@@ -151,15 +169,37 @@ $wgMessageStructure = array(
'qbpageinfo',
'qbmyoptions',
'qbspecialpages',
- 'moredotdotdot',
- 'mypage',
- 'mytalk',
- 'anontalk',
- 'navigation',
- 'and',
+ 'faq',
+ 'faqpage',
+ 'sitetitle',
+ 'sitesubtitle',
),
- 'metadata_help' => array(
- 'metadata_help',
+ 'vector' => array(
+ 'vector-action-addsection',
+ 'vector-action-delete',
+ 'vector-action-move',
+ 'vector-action-protect',
+ 'vector-action-undelete',
+ 'vector-action-unprotect',
+ 'vector-namespace-category',
+ 'vector-namespace-help',
+ 'vector-namespace-image',
+ 'vector-namespace-main',
+ 'vector-namespace-media',
+ 'vector-namespace-mediawiki',
+ 'vector-namespace-project',
+ 'vector-namespace-special',
+ 'vector-namespace-talk',
+ 'vector-namespace-template',
+ 'vector-namespace-user',
+ 'vector-view-create',
+ 'vector-view-edit',
+ 'vector-view-history',
+ 'vector-view-view',
+ 'vector-view-viewsource',
+ 'actions',
+ 'namespaces',
+ 'variants',
),
'miscellaneous2' => array(
'errorpagetitle',
@@ -211,18 +251,19 @@ $wgMessageStructure = array(
'otherlanguages',
'redirectedfrom',
'redirectpagesub',
+ 'talkpageheader',
'lastmodifiedat',
'viewcount',
'protectedpage',
'jumpto',
'jumptonavigation',
'jumptosearch',
+ 'view-pool-error',
),
'links' => array(
'aboutsite',
'aboutpage',
'copyright',
- 'copyrightpagename',
'copyrightpage',
'currentevents',
'currentevents-url',
@@ -230,8 +271,6 @@ $wgMessageStructure = array(
'disclaimerpage',
'edithelp',
'edithelppage',
- 'faq',
- 'faqpage',
'help',
'helppage',
'mainpage',
@@ -253,10 +292,8 @@ $wgMessageStructure = array(
),
'miscellaneous3' => array(
'ok',
- 'sitetitle',
'pagetitle',
'pagetitle-view-mainpage',
- 'sitesubtitle',
'retrievedfrom',
'youhavenewmessages',
'newmessageslink',
@@ -313,9 +350,6 @@ $wgMessageStructure = array(
'databaseerror',
'dberrortext',
'dberrortextcl',
- 'noconnect',
- 'nodb',
- 'cachederror',
'laggedslavemode',
'readonly',
'enterlockreason',
@@ -326,6 +360,8 @@ $wgMessageStructure = array(
'readonly_lag',
'internalerror',
'internalerror_info',
+ 'fileappenderrorread',
+ 'fileappenderror',
'filecopyerror',
'filerenameerror',
'filedeleteerror',
@@ -363,10 +399,8 @@ $wgMessageStructure = array(
'virus-unknownscanner',
),
'login' => array(
- 'logouttitle',
'logouttext',
'welcomecreation',
- 'loginpagetitle',
'yourname',
'yourpassword',
'yourpasswordagain',
@@ -377,6 +411,7 @@ $wgMessageStructure = array(
'nav-login-createaccount',
'loginprompt',
'userlogin',
+ 'userloginnocreate',
'logout',
'userlogout',
'notloggedin',
@@ -388,26 +423,8 @@ $wgMessageStructure = array(
'createaccountmail',
'badretype',
'userexists',
- 'youremail',
- 'username',
- 'uid',
- 'prefs-memberingroups',
- 'yourrealname',
- 'yourlanguage',
- 'yourvariant',
- 'yournick',
- 'badsig',
- 'badsiglength',
- 'yourgender',
- 'gender-unknown',
- 'gender-male',
- 'gender-female',
- 'prefs-help-gender',
- 'email',
- 'prefs-help-realname',
'loginerror',
- 'prefs-help-email',
- 'prefs-help-email-required',
+ 'createaccounterror',
'nocookiesnew',
'nocookieslogin',
'noname',
@@ -416,13 +433,16 @@ $wgMessageStructure = array(
'nosuchuser',
'nosuchusershort',
'nouserspecified',
+ 'login-userblocked',
'wrongpassword',
'wrongpasswordempty',
'passwordtooshort',
+ 'password-name-match',
'mailmypassword',
'passwordremindertitle',
'passwordremindertext',
'noemail',
+ 'noemailcreate',
'passwordsent',
'blocked-mailpassword',
'eauthentsent',
@@ -441,9 +461,11 @@ $wgMessageStructure = array(
'accountcreatedtext',
'createaccount-title',
'createaccount-text',
+ 'usernamehasherror',
'login-throttled',
'loginlanguagelabel',
'loginlanguagelinks',
+ 'suspicious-userlogout',
),
'resetpass' => array(
'resetpass',
@@ -455,16 +477,12 @@ $wgMessageStructure = array(
'retypenew',
'resetpass_submit',
'resetpass_success',
- 'resetpass_bad_temporary',
'resetpass_forbidden',
'resetpass-no-info',
'resetpass-submit-loggedin',
+ 'resetpass-submit-cancel',
'resetpass-wrong-oldpass',
'resetpass-temp-password',
- 'resetpass-log',
- 'resetpass-logtext',
- 'resetpass-logentry',
- 'resetpass-comment',
),
'toolbar' => array(
'bold_sample',
@@ -512,7 +530,6 @@ $wgMessageStructure = array(
'blockededitsource',
'whitelistedittitle',
'whitelistedittext',
- 'confirmedittitle',
'confirmedittext',
'nosuchsectiontitle',
'nosuchsectiontext',
@@ -527,10 +544,14 @@ $wgMessageStructure = array(
'talkpagetext',
'anontalkpagetext',
'noarticletext',
+ 'noarticletext-nopermission',
'noarticletextanon',
'userpage-userdoesnotexist',
+ 'userpage-userdoesnotexist-view',
+ 'blocked-notice-logextract',
'clearyourcache',
- 'usercssjsyoucanpreview',
+ 'usercssyoucanpreview',
+ 'userjsyoucanpreview',
'usercsspreview',
'userjspreview',
'userinvalidcssjstitle',
@@ -553,6 +574,7 @@ $wgMessageStructure = array(
'yourdiff',
'copyrightwarning',
'copyrightwarning2',
+ 'editpage-tos-summary',
'longpagewarning',
'longpageerror',
'readonlywarning',
@@ -570,17 +592,21 @@ $wgMessageStructure = array(
'nocreatetitle',
'nocreatetext',
'nocreate-loggedin',
+ 'sectioneditnotsupported-title',
+ 'sectioneditnotsupported-text',
'permissionserrors',
'permissionserrorstext',
'permissionserrorstext-withaction',
- 'recreate-deleted-warn',
- 'deleted-notice',
- 'deletelog-fulllog',
+ 'recreate-moveddeleted-warn',
+ 'moveddeleted-notice',
+ 'log-fulllog',
'edit-hook-aborted',
'edit-gone-missing',
'edit-conflict',
'edit-no-change',
'edit-already-exists',
+ 'addsection-preload',
+ 'addsection-editintro',
),
'parserwarnings' => array(
'expensive-parserfunction-warning',
@@ -591,6 +617,7 @@ $wgMessageStructure = array(
'post-expand-template-argument-category',
'parser-template-loop-warning',
'parser-template-recursion-depth-warning',
+ 'language-converter-depth-warning',
),
'undo' => array(
'undo-success',
@@ -622,8 +649,8 @@ $wgMessageStructure = array(
'page_last',
'histlegend',
'history-fieldset-title',
+ 'history-show-deleted',
'history_copyright',
- 'deletedrev',
'histfirst',
'histlast',
'historysize',
@@ -639,32 +666,46 @@ $wgMessageStructure = array(
'rev-deleted-comment',
'rev-deleted-user',
'rev-deleted-event',
+ 'rev-deleted-user-contribs',
'rev-deleted-text-permission',
+ 'rev-deleted-text-unhide',
+ 'rev-suppressed-text-unhide',
'rev-deleted-text-view',
+ 'rev-suppressed-text-view',
'rev-deleted-no-diff',
+ 'rev-suppressed-no-diff',
'rev-deleted-unhide-diff',
+ 'rev-suppressed-unhide-diff',
+ 'rev-deleted-diff-view',
+ 'rev-suppressed-diff-view',
'rev-delundel',
+ 'rev-showdeleted',
'revisiondelete',
'revdelete-nooldid-title',
'revdelete-nooldid-text',
'revdelete-nologtype-title',
'revdelete-nologtype-text',
- 'revdelete-toomanytargets-title',
- 'revdelete-toomanytargets-text',
'revdelete-nologid-title',
'revdelete-nologid-text',
+ 'revdelete-no-file',
+ 'revdelete-show-file-confirm',
+ 'revdelete-show-file-submit',
'revdelete-selected',
'logdelete-selected',
'revdelete-text',
+ 'revdelete-confirm',
'revdelete-suppress-text',
'revdelete-legend',
'revdelete-hide-text',
+ 'revdelete-hide-image',
'revdelete-hide-name',
'revdelete-hide-comment',
'revdelete-hide-user',
'revdelete-hide-restricted',
+ 'revdelete-radio-same',
+ 'revdelete-radio-set',
+ 'revdelete-radio-unset',
'revdelete-suppress',
- 'revdelete-hide-image',
'revdelete-unsuppress',
'revdelete-log',
'revdelete-submit',
@@ -673,7 +714,9 @@ $wgMessageStructure = array(
'revdelete-logaction',
'logdelete-logaction',
'revdelete-success',
+ 'revdelete-failure',
'logdelete-success',
+ 'logdelete-failure',
'revdel-restore',
'pagehist',
'deletedhist',
@@ -686,6 +729,18 @@ $wgMessageStructure = array(
'revdelete-unhid',
'revdelete-log-message',
'logdelete-log-message',
+ 'revdelete-hide-current',
+ 'revdelete-show-no-access',
+ 'revdelete-modify-no-access',
+ 'revdelete-modify-missing',
+ 'revdelete-no-change',
+ 'revdelete-concurrent-change',
+ 'revdelete-only-restricted',
+ 'revdelete-reason-dropdown',
+ 'revdelete-otherreason',
+ 'revdelete-reasonotherlist',
+ 'revdelete-edit-reasonlist',
+ 'revdelete-offender',
),
'suppression' => array(
'suppressionlog',
@@ -724,73 +779,17 @@ $wgMessageStructure = array(
'difference',
'lineno',
'compareselectedversions',
- 'visualcomparison',
- 'wikicodecomparison',
+ 'showhideselectedversions',
'editundo',
'diff-multi',
- 'diff-movedto',
- 'diff-styleadded',
- 'diff-added',
- 'diff-changedto',
- 'diff-movedoutof',
- 'diff-styleremoved',
- 'diff-removed',
- 'diff-changedfrom',
- 'diff-src',
- 'diff-withdestination',
- 'diff-with',
- 'diff-with-additional',
- 'diff-with-final',
- 'diff-width',
- 'diff-height',
- 'diff-p',
- 'diff-blockquote',
- 'diff-h1',
- 'diff-h2',
- 'diff-h3',
- 'diff-h4',
- 'diff-h5',
- 'diff-pre',
- 'diff-div',
- 'diff-ul',
- 'diff-ol',
- 'diff-li',
- 'diff-table',
- 'diff-tbody',
- 'diff-tr',
- 'diff-td',
- 'diff-th',
- 'diff-br',
- 'diff-hr',
- 'diff-code',
- 'diff-dl',
- 'diff-dt',
- 'diff-dd',
- 'diff-input',
- 'diff-form',
- 'diff-img',
- 'diff-span',
- 'diff-a',
- 'diff-i',
- 'diff-b',
- 'diff-strong',
- 'diff-em',
- 'diff-font',
- 'diff-big',
- 'diff-del',
- 'diff-tt',
- 'diff-sub',
- 'diff-sup',
- 'diff-strike',
),
'search' => array(
+ 'search-summary',
'searchresults',
'searchresults-title',
'searchresulttext',
'searchsubtitle',
'searchsubtitleinvalid',
- 'noexactmatch',
- 'noexactmatch-nocreate',
'toomanymatches',
'titlematches',
'notitlematches',
@@ -809,7 +808,6 @@ $wgMessageStructure = array(
'searchmenu-prefix',
'searchmenu-help',
'searchprofile-articles',
- 'searchprofile-articles-and-proj',
'searchprofile-project',
'searchprofile-images',
'searchprofile-everything',
@@ -819,8 +817,6 @@ $wgMessageStructure = array(
'searchprofile-images-tooltip',
'searchprofile-everything-tooltip',
'searchprofile-advanced-tooltip',
- 'prefs-search-nsdefault',
- 'prefs-search-nscustom',
'search-result-size',
'search-result-score',
'search-redirect',
@@ -834,11 +830,12 @@ $wgMessageStructure = array(
'search-mwsuggest-disabled',
'search-relatedarticle',
'mwsuggest-disable',
+ 'searcheverything-enable',
'searchrelated',
'searchall',
'showingresults',
'showingresultsnum',
- 'showingresultstotal',
+ 'showingresultsheader',
'nonefound',
'search-nonefound',
'powersearch',
@@ -846,6 +843,9 @@ $wgMessageStructure = array(
'powersearch-ns',
'powersearch-redir',
'powersearch-field',
+ 'powersearch-togglelabel',
+ 'powersearch-toggleall',
+ 'powersearch-togglenone',
'search-external',
'searchdisabled',
'googlesearch',
@@ -853,6 +853,14 @@ $wgMessageStructure = array(
'opensearch' => array(
'opensearch-desc',
),
+ 'quickbar' => array(
+ 'qbsettings',
+ 'qbsettings-none',
+ 'qbsettings-fixedleft',
+ 'qbsettings-fixedright',
+ 'qbsettings-floatingleft',
+ 'qbsettings-floatingright',
+ ),
'preferences' => array(
'preferences',
'preferences-summary',
@@ -860,29 +868,12 @@ $wgMessageStructure = array(
'prefs-edits',
'prefsnologin',
'prefsnologintext',
- 'prefsreset',
- 'qbsettings',
- 'qbsettings-none',
- 'qbsettings-fixedleft',
- 'qbsettings-fixedright',
- 'qbsettings-floatingleft',
- 'qbsettings-floatingright',
'changepassword',
- 'skin',
+ 'prefs-skin',
'skin-preview',
- 'math',
- 'dateformat',
+ 'prefs-math',
'datedefault',
- 'datetime',
- 'math_failure',
- 'math_unknown_error',
- 'math_unknown_function',
- 'math_lexing_error',
- 'math_syntax_error',
- 'math_image_error',
- 'math_bad_tmpdir',
- 'math_bad_output',
- 'math_notexvc',
+ 'prefs-datetime',
'prefs-personal',
'prefs-rc',
'prefs-watchlist',
@@ -890,12 +881,15 @@ $wgMessageStructure = array(
'prefs-watchlist-days-max',
'prefs-watchlist-edits',
'prefs-watchlist-edits-max',
- 'prefs-misc',
+ 'prefs-watchlist-token',
+ 'prefs-misc', // continue checking if used from here on (r49916)
'prefs-resetpass',
+ 'prefs-email',
+ 'prefs-rendering',
'saveprefs',
'resetprefs',
'restoreprefs',
- 'textboxsize',
+ 'prefs-editing',
'prefs-edit-boxsize',
'rows',
'columns',
@@ -907,11 +901,11 @@ $wgMessageStructure = array(
'recentchangesdays',
'recentchangesdays-max',
'recentchangescount',
+ 'prefs-help-recentchangescount',
+ 'prefs-help-watchlist-token',
'savedprefs',
'timezonelegend',
- 'timezonetext',
'localtime',
- 'timezoneselect',
'timezoneuseserverdefault',
'timezoneuseoffset',
'timezoneoffset',
@@ -933,9 +927,47 @@ $wgMessageStructure = array(
'defaultns',
'default',
'defaultns',
- 'files',
+ 'prefs-files',
'prefs-custom-css',
'prefs-custom-js',
+ 'prefs-reset-intro',
+ 'prefs-emailconfirm-label',
+ 'prefs-textboxsize',
+ 'youremail',
+ 'username',
+ 'uid',
+ 'prefs-memberingroups',
+ 'prefs-memberingroups-type',
+ 'prefs-registration',
+ 'prefs-registration-date-time',
+ 'yourrealname',
+ 'yourlanguage',
+ 'yourvariant',
+ 'yournick',
+ 'prefs-help-signature',
+ 'badsig',
+ 'badsiglength',
+ 'yourgender',
+ 'gender-unknown',
+ 'gender-male',
+ 'gender-female',
+ 'prefs-help-gender',
+ 'email',
+ 'prefs-help-realname',
+ 'prefs-help-email',
+ 'prefs-help-email-required',
+ 'prefs-info',
+ 'prefs-i18n',
+ 'prefs-signature',
+ 'prefs-dateformat',
+ 'prefs-timeoffset',
+ 'prefs-advancedediting',
+ 'prefs-advancedrc',
+ 'prefs-advancedrendering',
+ 'prefs-advancedsearchoptions',
+ 'prefs-advancedwatchlist',
+ 'prefs-display',
+ 'prefs-diffs',
),
'userrights' => array(
'userrights',
@@ -947,6 +979,7 @@ $wgMessageStructure = array(
'userrights-editusergroup',
'saveusergroups',
'userrights-groupsmember',
+ 'userrights-groupsmember-auto',
'userrights-groups-help',
'userrights-reason',
'userrights-no-interwiki',
@@ -1010,6 +1043,7 @@ $wgMessageStructure = array(
'right-bigdelete',
'right-deleterevision',
'right-deletedhistory',
+ 'right-deletedtext',
'right-browsearchive',
'right-undelete',
'right-suppressrevision',
@@ -1023,6 +1057,8 @@ $wgMessageStructure = array(
'right-editprotected',
'right-editinterface',
'right-editusercssjs',
+ 'right-editusercss',
+ 'right-edituserjs',
'right-rollback',
'right-markbotedits',
'right-noratelimit',
@@ -1039,6 +1075,8 @@ $wgMessageStructure = array(
'right-siteadmin',
'right-reset-passwords',
'right-override-export-depth',
+ 'right-versiondetail',
+ 'right-sendemail',
),
'rightslog' => array(
'rightslog',
@@ -1089,6 +1127,15 @@ $wgMessageStructure = array(
'recentchanges-legend',
'recentchangestext',
'recentchanges-feed-description',
+ 'recentchanges-label-legend',
+ 'recentchanges-legend-newpage',
+ 'recentchanges-label-newpage',
+ 'recentchanges-legend-minor',
+ 'recentchanges-label-minor',
+ 'recentchanges-legend-bot',
+ 'recentchanges-label-bot',
+ 'recentchanges-legend-unpatrolled',
+ 'recentchanges-label-unpatrolled',
'rcnote',
'rcnotefrom',
'rclistfrom',
@@ -1106,6 +1153,7 @@ $wgMessageStructure = array(
'minoreditletter',
'newpageletter',
'boteditletter',
+ 'unpatrolledletter',
'sectionlink',
'number_of_watching_users_RCview',
'number_of_watching_users_pageview',
@@ -1118,6 +1166,8 @@ $wgMessageStructure = array(
),
'recentchangeslinked' => array(
'recentchangeslinked',
+ 'recentchangeslinked-feed',
+ 'recentchangeslinked-toolbox',
'recentchangeslinked-title',
'recentchangeslinked-backlink',
'recentchangeslinked-noresult',
@@ -1128,8 +1178,8 @@ $wgMessageStructure = array(
'upload' => array(
'upload',
'uploadbtn',
- 'reupload',
'reuploaddesc',
+ 'upload-tryagain',
'uploadnologin',
'uploadnologintext',
'upload_directory_missing',
@@ -1156,6 +1206,7 @@ $wgMessageStructure = array(
'minlength1',
'illegalfilename',
'badfilename',
+ 'filetype-mime-mismatch',
'filetype-badmime',
'filetype-bad-ie-mime',
'filetype-unwanted-type',
@@ -1167,7 +1218,6 @@ $wgMessageStructure = array(
'fileexists',
'filepageexists',
'fileexists-extension',
- 'fileexists-thumb',
'fileexists-thumbnail-yes',
'file-thumbnail-no',
'fileexists-forbidden',
@@ -1176,6 +1226,7 @@ $wgMessageStructure = array(
'file-deleted-duplicate',
'successfulupload',
'uploadwarning',
+ 'uploadwarning-text',
'savefile',
'uploadedimage',
'overwroteimage',
@@ -1183,11 +1234,14 @@ $wgMessageStructure = array(
'uploaddisabledtext',
'php-uploaddisabledtext',
'uploadscripted',
- 'uploadcorrupt',
'uploadvirus',
+ 'upload-source',
'sourcefilename',
+ 'sourceurl',
'destfilename',
'upload-maxfilesize',
+ 'upload-description',
+ 'upload-options',
'watchthisupload',
'filewasdeleted',
'upload-wasdeleted',
@@ -1201,7 +1255,36 @@ $wgMessageStructure = array(
'upload-file-error-text',
'upload-misc-error',
'upload-misc-error-text',
+ 'upload-too-many-redirects',
+ 'upload-unknown-size',
+ 'upload-http-error',
),
+
+ 'img-auth' => array(
+ 'img-auth-accessdenied',
+ 'img-auth-desc',
+ 'img-auth-nopathinfo',
+ 'img-auth-notindir',
+ 'img-auth-badtitle',
+ 'img-auth-nologinnWL',
+ 'img-auth-nofile',
+ 'img-auth-isdir',
+ 'img-auth-streaming',
+ 'img-auth-public',
+ 'img-auth-noread',
+ ),
+
+ 'http-errors' => array(
+ 'http-invalid-url',
+ 'http-invalid-scheme',
+ 'http-request-error',
+ 'http-read-error',
+ 'http-timed-out',
+ 'http-curl-error',
+ 'http-host-unreachable',
+ 'http-bad-status',
+ ),
+
'upload-curl-errors' => array(
'upload-curl-error6',
'upload-curl-error6-text',
@@ -1210,6 +1293,7 @@ $wgMessageStructure = array(
),
'licenses' => array(
'license',
+ 'license-header',
'nolicense',
'licenses',
'license-nopreview',
@@ -1229,6 +1313,7 @@ $wgMessageStructure = array(
'listfiles_count',
),
'filedescription' => array(
+ 'file-anchor-link',
'filehist',
'filehist-help',
'filehist-deleteall',
@@ -1243,6 +1328,7 @@ $wgMessageStructure = array(
'filehist-dimensions',
'filehist-filesize',
'filehist-comment',
+ 'filehist-missing',
'imagelinks',
'linkstoimage',
'linkstoimage-more',
@@ -1251,15 +1337,15 @@ $wgMessageStructure = array(
'redirectstofile',
'duplicatesoffile',
'sharedupload',
- 'shareduploadwiki',
- 'shareduploadwiki-desc',
- 'shareduploadwiki-linktext',
+ 'sharedupload-desc-there',
+ 'sharedupload-desc-here',
'shareddescriptionfollows',
- 'noimage',
- 'noimage-linktext',
+ 'filepage-nofile',
+ 'filepage-nofile-link',
'uploadnewversion-linktext',
'shared-repo-from',
'shared-repo',
+ 'shared-repo-name-wikimediacommons',
),
'filerevert' => array(
'filerevert',
@@ -1288,6 +1374,7 @@ $wgMessageStructure = array(
'filedelete-reason-otherlist',
'filedelete-reason-dropdown',
'filedelete-edit-reasonlist',
+ 'filedelete-maintenance',
),
'mimesearch' => array(
'mimesearch',
@@ -1325,6 +1412,7 @@ $wgMessageStructure = array(
'statistics-header-edits',
'statistics-header-views',
'statistics-header-users',
+ 'statistics-header-hooks',
'statistics-articles',
'statistics-pages',
'statistics-pages-desc',
@@ -1508,6 +1596,7 @@ $wgMessageStructure = array(
'deletedcontribs' => array(
'deletedcontributions',
'deletedcontributions-title',
+ 'sp-deletedcontributions-contribs',
),
'linksearch' => array(
'linksearch',
@@ -1522,6 +1611,18 @@ $wgMessageStructure = array(
'listusersfrom',
'listusers-submit',
'listusers-noresult',
+ 'listusers-blocked',
+ ),
+ 'activeusers' => array(
+ 'activeusers',
+ 'activeusers-summary',
+ 'activeusers-intro',
+ 'activeusers-count',
+ 'activeusers-from',
+ 'activeusers-hidebots',
+ 'activeusers-hidesysops',
+ 'activeusers-submit',
+ 'activeusers-noresult',
),
'newuserlog' => array(
'newuserlogpage',
@@ -1535,15 +1636,22 @@ $wgMessageStructure = array(
'listgrouprights' => array(
'listgrouprights',
'listgrouprights-summary',
+ 'listgrouprights-key',
'listgrouprights-group',
'listgrouprights-rights',
'listgrouprights-helppage',
'listgrouprights-members',
'listgrouprights-right-display',
+ 'listgrouprights-right-revoked',
'listgrouprights-addgroup',
'listgrouprights-removegroup',
'listgrouprights-addgroup-all',
'listgrouprights-removegroup-all',
+ 'listgrouprights-addgroup-self',
+ 'listgrouprights-removegroup-self',
+ 'listgrouprights-addgroup-self-all',
+ 'listgrouprights-removegroup-self-all',
+
),
'emailuser' => array(
'mailnologin',
@@ -1629,6 +1737,7 @@ $wgMessageStructure = array(
'historywarning',
'confirmdeletetext',
'actioncomplete',
+ 'actionfailed',
'deletedtext',
'deletedarticle',
'suppressedarticle',
@@ -1653,6 +1762,7 @@ $wgMessageStructure = array(
'alreadyrolled',
'editcomment',
'revertpage',
+ 'revertpage-nouser',
'rollback-success',
'sessionfailure',
),
@@ -1671,7 +1781,7 @@ $wgMessageStructure = array(
'protectexpiry',
'protect_expiry_invalid',
'protect_expiry_old',
- 'protect-unchain',
+ 'protect-unchain-permissions',
'protect-text',
'protect-locked-blocked',
'protect-locked-dblock',
@@ -1728,6 +1838,7 @@ $wgMessageStructure = array(
'undelete-nodiff',
'undeletebtn',
'undeletelink',
+ 'undeleteviewlink',
'undeletereset',
'undeleteinvert',
'undeletecomment',
@@ -1771,7 +1882,11 @@ $wgMessageStructure = array(
'sp-contributions-newbies-sub',
'sp-contributions-newbies-title',
'sp-contributions-blocklog',
+ 'sp-contributions-deleted',
'sp-contributions-logs',
+ 'sp-contributions-talk',
+ 'sp-contributions-userrights',
+ 'sp-contributions-blocked-notice',
'sp-contributions-search',
'sp-contributions-username',
'sp-contributions-submit',
@@ -1802,6 +1917,7 @@ $wgMessageStructure = array(
),
'block' => array(
'blockip',
+ 'blockip-title',
'blockip-legend',
'blockiptext',
'ipaddress',
@@ -1845,6 +1961,8 @@ $wgMessageStructure = array(
'ipblocklist-sh-addressblocks',
'ipblocklist-summary',
'ipblocklist-submit',
+ 'ipblocklist-localblock',
+ 'ipblocklist-otherblocks',
'blocklistline',
'infiniteblock',
'expiringblock',
@@ -1861,7 +1979,8 @@ $wgMessageStructure = array(
'contribslink',
'autoblocker',
'blocklogpage',
- 'blocklog-fulllog',
+ 'blocklog-showlog',
+ 'blocklog-showsuppresslog',
'blocklogentry',
'reblock-logentry',
'blocklogtext',
@@ -1879,9 +1998,11 @@ $wgMessageStructure = array(
'ipb_hide_invalid',
'ipb_already_blocked',
'ipb-needreblock',
+ 'ipb-otherblocks-header',
'ipb_cant_unblock',
'ipb_blocked_as_range',
'ip_range_invalid',
+ 'ip_range_toolarge',
'blockme',
'proxyblocker',
'proxyblocker-disabled',
@@ -1891,6 +2012,7 @@ $wgMessageStructure = array(
'sorbsreason',
'sorbs_create_account_reason',
'cant-block-while-blocked',
+ 'cant-see-hidden-user'
),
'developertools' => array(
'lockdb',
@@ -1916,6 +2038,7 @@ $wgMessageStructure = array(
'movepagetext',
'movepagetalktext',
'movearticle',
+ 'moveuserpage-warning',
'movenologin',
'movenologintext',
'movenotallowed',
@@ -1966,6 +2089,10 @@ $wgMessageStructure = array(
'imageinvalidfilename',
'fix-double-redirects',
'move-leave-redirect',
+ 'protectedpagemovewarning',
+ 'semiprotectedpagemovewarning',
+ 'move-over-sharedrepo',
+ 'file-exists-sharedrepo',
),
'export' => array(
'export',
@@ -1988,8 +2115,14 @@ $wgMessageStructure = array(
'allmessagescurrent',
'allmessagestext',
'allmessagesnotsupportedDB',
- 'allmessagesfilter',
- 'allmessagesmodified',
+ 'allmessages-filter-legend',
+ 'allmessages-filter',
+ 'allmessages-filter-unmodified',
+ 'allmessages-filter-all',
+ 'allmessages-filter-modified',
+ 'allmessages-prefix',
+ 'allmessages-language',
+ 'allmessages-filter-submit',
),
'thumbnails' => array(
'thumbnail-more',
@@ -1999,6 +2132,9 @@ $wgMessageStructure = array(
'djvu_no_xml',
'thumbnail_invalid_params',
'thumbnail_dest_directory',
+ 'thumbnail_image-type',
+ 'thumbnail_gd-library',
+ 'thumbnail_image-missing',
),
'import' => array(
'import',
@@ -2060,6 +2196,7 @@ $wgMessageStructure = array(
'accesskey-ca-viewsource',
'accesskey-ca-history',
'accesskey-ca-protect',
+ 'accesskey-ca-unprotect',
'accesskey-ca-delete',
'accesskey-ca-undelete',
'accesskey-ca-move',
@@ -2070,6 +2207,7 @@ $wgMessageStructure = array(
'accesskey-search-fulltext',
'accesskey-p-logo',
'accesskey-n-mainpage',
+ 'accesskey-n-mainpage-description',
'accesskey-n-portal',
'accesskey-n-currentevents',
'accesskey-n-recentchanges',
@@ -2101,7 +2239,6 @@ $wgMessageStructure = array(
'accesskey-preview',
'accesskey-diff',
'accesskey-compareselectedversions',
- 'accesskey-visualcomparison',
'accesskey-watch',
'accesskey-upload',
),
@@ -2122,6 +2259,7 @@ $wgMessageStructure = array(
'tooltip-ca-viewsource',
'tooltip-ca-history',
'tooltip-ca-protect',
+ 'tooltip-ca-unprotect',
'tooltip-ca-delete',
'tooltip-ca-undelete',
'tooltip-ca-move',
@@ -2132,6 +2270,7 @@ $wgMessageStructure = array(
'tooltip-search-fulltext',
'tooltip-p-logo',
'tooltip-n-mainpage',
+ 'tooltip-n-mainpage-description',
'tooltip-n-portal',
'tooltip-n-currentevents',
'tooltip-n-recentchanges',
@@ -2179,6 +2318,7 @@ $wgMessageStructure = array(
'chick.css',
'simple.css',
'modern.css',
+ 'vector.css',
'print.css',
'handheld.css',
),
@@ -2192,6 +2332,7 @@ $wgMessageStructure = array(
'chick.js',
'simple.js',
'modern.js',
+ 'vector.js',
),
'metadata_cc' => array(
'nodublincore',
@@ -2201,10 +2342,12 @@ $wgMessageStructure = array(
'attribution' => array(
'anonymous',
'siteuser',
+ 'anonuser',
'lastmodifiedatby',
'othercontribs',
'others',
'siteusers',
+ 'anonusers',
'creditspage',
'nocredits',
),
@@ -2233,6 +2376,7 @@ $wgMessageStructure = array(
'skinname-chick',
'skinname-simple',
'skinname-modern',
+ 'skinname-vector',
),
'math' => array(
'mw_math_png',
@@ -2242,6 +2386,17 @@ $wgMessageStructure = array(
'mw_math_modern',
'mw_math_mathml',
),
+ 'matherrors' => array(
+ 'math_failure',
+ 'math_unknown_error',
+ 'math_unknown_function',
+ 'math_lexing_error',
+ 'math_syntax_error',
+ 'math_image_error',
+ 'math_bad_tmpdir',
+ 'math_bad_output',
+ 'math_notexvc',
+ ),
'patrolling' => array(
'markaspatrolleddiff',
'markaspatrolledlink',
@@ -2275,9 +2430,6 @@ $wgMessageStructure = array(
'previousdiff',
'nextdiff',
),
- 'visual-comparison' => array(
- 'visual-comparison',
- ),
'media-info' => array(
'mediawarning',
'imagemaxsize',
@@ -2290,6 +2442,8 @@ $wgMessageStructure = array(
'svg-long-desc',
'show-big-image',
'show-big-image-thumb',
+ 'file-info-gif-looped',
+ 'file-info-gif-frames',
),
'newfiles' => array(
'newimages',
@@ -2687,6 +2841,7 @@ $wgMessageStructure = array(
'watchlistall2',
'namespacesall',
'monthsall',
+ 'limitall',
),
'confirmemail' => array(
'confirmemail',
@@ -2743,6 +2898,7 @@ $wgMessageStructure = array(
'word-separator',
'ellipsis',
'percent',
+ 'parentheses',
),
'imgmulti' => array(
'imgmultipageprev',
@@ -2891,6 +3047,7 @@ $wgMessageStructure = array(
'version-hook-name',
'version-hook-subscribedby',
'version-version',
+ 'version-svn-revision',
'version-license',
'version-software',
'version-software-product',
@@ -2958,6 +3115,17 @@ $wgMessageStructure = array(
'dberr-outofdate',
'dberr-cachederror',
),
+ 'html-forms' => array(
+ 'htmlform-invalid-input',
+ 'htmlform-select-badoption',
+ 'htmlform-int-invalid',
+ 'htmlform-float-invalid',
+ 'htmlform-int-toolow',
+ 'htmlform-int-toohigh',
+ 'htmlform-submit',
+ 'htmlform-reset',
+ 'htmlform-selectorother-other',
+ ),
);
/** Comments for each block */
@@ -2970,11 +3138,13 @@ XHTML id it should only appear once and include characters that are legal
XHTML id names.",
'toggles' => 'User preference toggles',
'underline' => '',
+ 'editfont' => 'Font style option in Special:Preferences',
'dates' => 'Dates',
'categorypages' => 'Categories related messages',
'mainpage' => '',
'miscellaneous1' => '',
- 'metadata_help' => 'Metadata in edit box',
+ 'cologneblue' => 'Cologne Blue skin',
+ 'vector' => 'Vector skin',
'miscellaneous2' => '',
'links' => 'All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).',
'badaccess' => '',
@@ -3000,6 +3170,7 @@ XHTML id names.",
'diffs' => 'Diffs',
'search' => 'Search results',
'opensearch' => 'OpenSearch description',
+ 'quickbar' => 'Quickbar',
'preferences' => 'Preferences page',
'userrights' => 'User rights',
'group' => 'Groups',
@@ -3012,6 +3183,8 @@ XHTML id names.",
'recentchangeslinked' => 'Recent changes linked',
'upload' => 'Upload',
'upload-errors' => '',
+ 'img-auth' => 'img_auth script messages',
+ 'http-errors' => 'HTTP errors',
'upload-curl-errors' => 'Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>',
'licenses' => '',
'filelist' => 'Special:ListFiles',
@@ -3039,6 +3212,7 @@ XHTML id names.",
'deletedcontribs' => 'Special:DeletedContributions',
'linksearch' => 'Special:LinkSearch',
'listusers' => 'Special:ListUsers',
+ 'activeusers' => 'Special:ActiveUsers',
'newuserlog' => 'Special:Log/newusers',
'listgrouprights' => 'Special:ListGroupRights',
'emailuser' => 'E-mail user',
@@ -3073,6 +3247,7 @@ XHTML id names.",
'info' => 'Info page',
'skin' => 'Skin names',
'math' => 'Math options',
+ 'matherrors' => 'Math errors',
'patrolling' => 'Patrolling',
'patrol-log' => 'Patrol log',
'imagedeletion' => 'Image deletion',
@@ -3089,7 +3264,6 @@ Variants for Chinese language",
'variantname-kk' => 'Variants for Kazakh language',
'variantname-ku' => 'Variants for Kurdish language',
'variantname-tg' => 'Variants for Tajiki language',
- 'visual-comparison' => 'Visual comparison',
'media-info' => 'Media information',
'metadata' => 'Metadata',
'exif' => 'EXIF tags',
@@ -3124,7 +3298,7 @@ Variants for Chinese language",
'exif-gpslongitude' => 'Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef',
'exif-gpsstatus' => '',
'exif-gpsmeasuremode' => '',
- 'exif-gpsspeed' => 'Pseudotags used for GPSSpeedRef and GPSDestDistanceRef',
+ 'exif-gpsspeed' => 'Pseudotags used for GPSSpeedRef',
'exif-gpsdirection' => 'Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef',
'edit-externally' => 'External editor support',
'all' => "'all' in various places, this might be different for inflected languages",
@@ -3157,35 +3331,5 @@ Variants for Chinese language",
'external_images' => 'External image whitelist',
'special-tags' => 'Special:Tags',
'db-error-messages' => 'Database error messages',
-);
-
-/** Short comments for standalone messages */
-$wgMessageComments = array(
- 'hidden-category-category' => 'Name of the category where hidden categories will be listed',
- 'lastmodifiedat' => '$1 date, $2 time',
- 'sitenotice' => 'the equivalent to wgSiteNotice',
- 'history-feed-item-nocomment' => 'user at time',
- 'sharedupload' => '$1 is the repo name, $2 is shareduploadwiki(-desc)',
- 'shared-repo-from' => '$1 is the repository name',
- 'shared-repo' => 'used when shared-repo-NAME does not exist',
- 'editcomment' => 'only shown if there is an edit comment',
- 'revertpage' => 'Additionally available: $3: revid of the revision reverted to, $4: timestamp of the revision reverted to, $5: revid of the revision reverted from, $6: timestamp of the revision reverted from',
- 'lastmodifiedatby' => '$1 date, $2 time, $3 user',
- 'exif-orientation-1' => '0th row: top; 0th column: left',
- 'exif-orientation-2' => '0th row: top; 0th column: right',
- 'exif-orientation-3' => '0th row: bottom; 0th column: right',
- 'exif-orientation-4' => '0th row: bottom; 0th column: left',
- 'exif-orientation-5' => '0th row: left; 0th column: top',
- 'exif-orientation-6' => '0th row: right; 0th column: top',
- 'exif-orientation-7' => '0th row: right; 0th column: bottom',
- 'exif-orientation-8' => '0th row: left; 0th column: bottom',
- 'movepage-moved' => 'The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.',
- 'ipboptions' => 'display1:time1,display2:time2,...',
- 'protect-expiry-options' => 'display1:time1,display2:time2,...',
- 'metadata-fields' => 'Do not translate list items',
- 'version' => 'Not used as normal message but as header for the special page itself',
- 'userrights' => 'Not used as normal message but as header for the special page itself',
- 'revision-info' => 'Additionally available: $3: revision id',
- 'revision-info-current' => 'Available parameters: $1: timestamp; $2: userlinks; $3: revision id',
- 'nocontribs' => 'Optional parameter: $1 is the user name',
+ 'html-forms' => 'HTML forms',
);
diff --git a/maintenance/language/rebuildLanguage.php b/maintenance/language/rebuildLanguage.php
index 91fda3f4..6c624ca3 100644
--- a/maintenance/language/rebuildLanguage.php
+++ b/maintenance/language/rebuildLanguage.php
@@ -17,18 +17,50 @@ require_once( 'writeMessagesArray.inc' );
* @param $code The language code.
* @param $write Write to the messages file?
* @param $listUnknown List the unknown messages?
- * @param $removeUnKnown Remove the unknown messages?
+ * @param $removeUnknown Remove the unknown messages?
+ * @param $removeDupes Remove the duplicated messages?
+ * @param $dupeMsgSource The source file intended to remove from the array.
*/
-function rebuildLanguage( $code, $write, $listUnknown, $removeUnknown ) {
+function rebuildLanguage( $code, $write, $listUnknown, $removeUnknown, $removeDupes, $dupeMsgSource ) {
global $wgLanguages;
$messages = $wgLanguages->getMessages( $code );
$messages = $messages['all'];
+ if ($removeDupes) {
+ $messages = removeDupes( $messages, $dupeMsgSource );
+ }
MessageWriter::writeMessagesToFile( $messages, $code, $write, $listUnknown, $removeUnknown );
}
+/**
+ * Remove duplicates from a message array.
+ *
+ * @param $oldMsgArray The input message array.
+ * @param $dupeMsgSource The source file path for duplicates.
+ * @return $newMsgArray The output message array, with duplicates removed.
+ */
+function removeDupes( $oldMsgArray, $dupeMsgSource ) {
+ if (file_exists($dupeMsgSource)) {
+ include($dupeMsgSource);
+ if (!isset($dupeMessages)) {
+ echo("There are no duplicated messages in the source file provided.");
+ exit(1);
+ }
+ } else {
+ echo ("The specified file $dupeMsgSource cannot be found.");
+ exit(1);
+ }
+ $newMsgArray = $oldMsgArray;
+ foreach ($oldMsgArray as $key => $value) {
+ if ( array_key_exists( $key, $dupeMessages ) ) {
+ unset($newMsgArray[$key]);
+ }
+ }
+ return $newMsgArray;
+}
+
# Show help
if ( isset( $options['help'] ) ) {
- echo <<<END
+ echo <<<TEXT
Run this script to rewrite the messages array in the files languages/messages/MessagesXX.php.
Parameters:
* lang: Language code (default: the installation default language). You can also specify "all" to check all the languages.
@@ -37,9 +69,10 @@ Options:
* dry-run: Do not write the array to the file.
* no-unknown: Do not list the unknown messages.
* remove-unknown: Remove unknown messages.
+ * remove-duplicates: Remove duplicated messages based on a PHP source file.
-END;
- exit();
+TEXT;
+ exit(1);
}
# Get the language code
@@ -49,10 +82,18 @@ if ( isset( $options['lang'] ) ) {
$wgCode = $wgContLang->getCode();
}
+# Get the duplicate message source
+if ( isset( $options['remove-duplicates'] ) && ( strcmp( $options['remove-duplicates'], '' ) ) ) {
+ $wgDupeMessageSource = $options['remove-duplicates'];
+} else {
+ $wgDupeMessageSource = '';
+}
+
# Get the options
$wgWriteToFile = !isset( $options['dry-run'] );
$wgListUnknownMessages = !isset( $options['no-unknown'] );
$wgRemoveUnknownMessages = isset( $options['remove-unknown'] );
+$wgRemoveDuplicateMessages = isset( $options['remove-duplicates'] );
# Get language objects
$wgLanguages = new languages();
@@ -60,8 +101,8 @@ $wgLanguages = new languages();
# Write all the language
if ( $wgCode == 'all' ) {
foreach ( $wgLanguages->getLanguages() as $language ) {
- rebuildLanguage( $language, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages );
+ rebuildLanguage( $language, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource );
}
} else {
- rebuildLanguage( $wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages );
+ rebuildLanguage( $wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource );
}
diff --git a/maintenance/language/transstat.php b/maintenance/language/transstat.php
index b433abb4..eeded34e 100644
--- a/maintenance/language/transstat.php
+++ b/maintenance/language/transstat.php
@@ -9,7 +9,7 @@
* @author Ashar Voultoiz <thoane@altern.org>
*
* Output is posted from time to time on:
- * http://meta.wikimedia.org/wiki/Localization_statistics
+ * http://www.mediawiki.org/wiki/Localisation_statistics
*/
$optionsWithArgs = array( 'output' );
@@ -29,18 +29,17 @@ if ( !isset( $options['output'] ) ) {
/** Print a usage message*/
function showUsage() {
- print <<<END
+ print <<<TEXT
Usage: php transstat.php [--help] [--output=csv|text|wiki]
--help : this helpful message
--output : select an output engine one of:
* 'csv' : Comma Separated Values.
* 'wiki' : MediaWiki syntax (default).
- * 'metawiki' : MediaWiki syntax used for Meta-Wiki.
* 'text' : Text with tabs.
Example: php maintenance/transstat.php --output=text
-END;
- exit();
+TEXT;
+ exit(1);
}
@@ -48,16 +47,13 @@ END;
# Select an output engine
switch ( $options['output'] ) {
case 'wiki':
- $wgOut = new wikiStatsOutput();
- break;
- case 'metawiki':
- $wgOut = new metawikiStatsOutput();
+ $output = new wikiStatsOutput();
break;
case 'text':
- $wgOut = new textStatsOutput();
+ $output = new textStatsOutput();
break;
case 'csv':
- $wgOut = new csvStatsOutput();
+ $output = new csvStatsOutput();
break;
default:
showUsage();
@@ -67,17 +63,18 @@ switch ( $options['output'] ) {
$wgLanguages = new languages();
# Header
-$wgOut->heading();
-$wgOut->blockstart();
-$wgOut->element( 'Language', true );
-$wgOut->element( 'Code', true );
-$wgOut->element( 'Translated', true );
-$wgOut->element( '%', true );
-$wgOut->element( 'Obsolete', true );
-$wgOut->element( '%', true );
-$wgOut->element( 'Problematic', true );
-$wgOut->element( '%', true );
-$wgOut->blockend();
+$output->heading();
+$output->blockstart();
+$output->element( 'Language', true );
+$output->element( 'Code', true );
+$output->element( 'Fallback', true );
+$output->element( 'Translated', true );
+$output->element( '%', true );
+$output->element( 'Obsolete', true );
+$output->element( '%', true );
+$output->element( 'Problematic', true );
+$output->element( '%', true );
+$output->blockend();
$wgGeneralMessages = $wgLanguages->getGeneralMessages();
$wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] );
@@ -90,34 +87,36 @@ foreach ( $wgLanguages->getLanguages() as $code ) {
# Calculate the numbers
$language = $wgContLang->getLanguageName( $code );
+ $fallback = $wgLanguages->getFallback( $code );
$messages = $wgLanguages->getMessages( $code );
$messagesNumber = count( $messages['translated'] );
$requiredMessagesNumber = count( $messages['required'] );
- $requiredMessagesPercent = $wgOut->formatPercent( $requiredMessagesNumber, $wgRequiredMessagesNumber );
+ $requiredMessagesPercent = $output->formatPercent( $requiredMessagesNumber, $wgRequiredMessagesNumber );
$obsoleteMessagesNumber = count( $messages['obsolete'] );
- $obsoleteMessagesPercent = $wgOut->formatPercent( $obsoleteMessagesNumber, $messagesNumber, true );
+ $obsoleteMessagesPercent = $output->formatPercent( $obsoleteMessagesNumber, $messagesNumber, true );
$messagesWithMismatchVariables = $wgLanguages->getMessagesWithMismatchVariables( $code );
$emptyMessages = $wgLanguages->getEmptyMessages( $code );
$messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
$nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
$messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code );
$problematicMessagesNumber = count( array_unique( array_merge( $messagesWithMismatchVariables, $emptyMessages, $messagesWithWhitespace, $nonXHTMLMessages, $messagesWithWrongChars ) ) );
- $problematicMessagesPercent = $wgOut->formatPercent( $problematicMessagesNumber, $messagesNumber, true );
+ $problematicMessagesPercent = $output->formatPercent( $problematicMessagesNumber, $messagesNumber, true );
# Output them
- $wgOut->blockstart();
- $wgOut->element( "$language" );
- $wgOut->element( "$code" );
- $wgOut->element( "$requiredMessagesNumber/$wgRequiredMessagesNumber" );
- $wgOut->element( $requiredMessagesPercent );
- $wgOut->element( "$obsoleteMessagesNumber/$messagesNumber" );
- $wgOut->element( $obsoleteMessagesPercent );
- $wgOut->element( "$problematicMessagesNumber/$messagesNumber" );
- $wgOut->element( $problematicMessagesPercent );
- $wgOut->blockend();
+ $output->blockstart();
+ $output->element( "$language" );
+ $output->element( "$code" );
+ $output->element( "$fallback" );
+ $output->element( "$requiredMessagesNumber/$wgRequiredMessagesNumber" );
+ $output->element( $requiredMessagesPercent );
+ $output->element( "$obsoleteMessagesNumber/$messagesNumber" );
+ $output->element( $obsoleteMessagesPercent );
+ $output->element( "$problematicMessagesNumber/$messagesNumber" );
+ $output->element( $problematicMessagesPercent );
+ $output->blockend();
}
# Footer
-$wgOut->footer();
+$output->footer();
diff --git a/maintenance/language/writeMessagesArray.inc b/maintenance/language/writeMessagesArray.inc
index 3a279cb6..e28a5c04 100644
--- a/maintenance/language/writeMessagesArray.inc
+++ b/maintenance/language/writeMessagesArray.inc
@@ -15,7 +15,6 @@ class MessageWriter {
static $messageStructure;
static $blockComments;
- static $messageComments;
static $ignoredMessages;
static $optionalMessages;
@@ -79,13 +78,11 @@ class MessageWriter {
require( $dir . '/messages.inc' );
self::$messageStructure = $wgMessageStructure;
self::$blockComments = $wgBlockComments;
- self::$messageComments = $wgMessageComments;
require( $dir . '/messageTypes.inc' );
self::$ignoredMessages = $wgIgnoredMessages;
self::$optionalMessages = $wgOptionalMessages;
-
# Sort messages to blocks
$sortedMessages['unknown'] = $messages;
foreach( self::$messageStructure as $blockName => $block ) {
@@ -113,7 +110,7 @@ class MessageWriter {
$ignored = array();
$optional = array();
}
- $comments = self::makeComments( array_keys($messages), self::$messageComments, $ignored, $optional );
+ $comments = self::makeComments( array_keys( $messages ), $ignored, $optional );
# Write the block
$messagesText .= self::writeMessagesBlock( self::$blockComments[$block], $messages, $comments );
@@ -134,33 +131,19 @@ class MessageWriter {
* Generates an array of comments for messages.
*
* @param $messages Key of messages.
- * @param $comments Comments for messages, indexed by key.
* @param $ignored List of ingored message keys.
* @param $optional List of optional message keys.
*/
- public static function makeComments( $messages, $comments, $ignored, $optional ) {
+ public static function makeComments( $messages, $ignored, $optional ) {
# Comment collector
$commentArray = array();
# List of keys only
foreach( $messages as $key ) {
- $commentsForKey = array();
-
- # Add descriptive comment for this message if there is one
- if( array_key_exists( $key, $comments ) ) {
- $commentsForKey[] = $comments[$key];
- }
-
- # For translator information only
if( in_array( $key, $ignored ) ) {
- $commentsForKey[] = self::$ignoredComment;
+ $commentArray[$key] = ' # ' . self::$ignoredComment;
} elseif( in_array( $key, $optional ) ) {
- $commentsForKey[] = self::$optionalComment;
- }
-
- # Format one or more comments nicely and store in array
- if( count( $commentsForKey ) ) {
- $commentArray[$key] = ' # ' . implode( '; ', $commentsForKey );
+ $commentArray[$key] = ' # ' . self::$optionalComment;
}
}
diff --git a/maintenance/mcc.php b/maintenance/mcc.php
index 53645df8..e90266ae 100644
--- a/maintenance/mcc.php
+++ b/maintenance/mcc.php
@@ -8,64 +8,36 @@
*/
/** */
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
-$mcc = new memcached( array('persistant' => true/*, 'debug' => true*/) );
+$mcc = new MWMemcached( array('persistant' => true/*, 'debug' => true*/) );
$mcc->set_servers( $wgMemCachedServers );
#$mcc->set_debug( true );
function mccShowHelp($command) {
-
- if(! $command ) { $command = 'fullhelp'; }
- $onlyone = true;
-
- switch ( $command ) {
-
- case 'fullhelp':
- // will show help for all commands
- $onlyone = false;
-
- case 'get':
- print "get: grabs something\n";
- if($onlyone) { break; }
-
- case 'getsock':
- print "getsock: lists sockets\n";
- if($onlyone) { break; }
-
- case 'set':
- print "set: changes something\n";
- if($onlyone) { break; }
-
- case 'delete':
- print "delete: deletes something\n";
- if($onlyone) { break; }
-
- case 'history':
- print "history: show command line history\n";
- if($onlyone) { break; }
-
- case 'server':
- print "server: show current memcached server\n";
- if($onlyone) { break; }
-
- case 'dumpmcc':
- print "dumpmcc: shows the whole thing\n";
- if($onlyone) { break; }
-
- case 'exit':
- case 'quit':
- print "exit or quit: exit mcc\n";
- if($onlyone) { break; }
-
- case 'help':
- print "help: help about a command\n";
- if($onlyone) { break; }
-
- default:
- if($onlyone) {
- print "$command: command does not exist or no help for it\n";
- }
+ $commandList = array(
+ 'get' => 'grabs something',
+ 'getsock' => 'lists sockets',
+ 'set' => 'changes something',
+ 'delete' => 'deletes something',
+ 'history' => 'show command line history',
+ 'server' => 'show current memcached server',
+ 'dumpmcc' => 'shows the whole thing',
+ 'exit' => 'exit mcc',
+ 'quit' => 'exit mcc',
+ 'help' => 'help about a command',
+ );
+ if( !$command ) {
+ $command = 'fullhelp';
+ }
+ if( $command === 'fullhelp' ) {
+ foreach( $commandList as $cmd => $desc ) {
+ print "$cmd: $desc\n";
+ }
+ } elseif( isset( $commandList[$command] ) ) {
+ print "$command: $commandList[$command]\n";
+ } else {
+ print "$command: command does not exist or no help for it\n";
}
}
@@ -114,6 +86,10 @@ do {
break;
case 'server':
+ if ( $mcc->_single_sock !== null ) {
+ print $mcc->_single_sock . "\n";
+ break;
+ }
$res = $mcc->get( $args[0] );
$hv = $mcc->_hashfunc( $args[0] );
for ( $i = 0; $i < 3; $i++ ) {
@@ -176,5 +152,3 @@ do {
}
}
} while ( !$quit );
-
-
diff --git a/maintenance/mctest.php b/maintenance/mctest.php
index aef6d6db..3667cb93 100644
--- a/maintenance/mctest.php
+++ b/maintenance/mctest.php
@@ -3,63 +3,81 @@
* This script makes several 'set', 'incr' and 'get' requests on every
* memcached server and shows a report.
*
- * $Id: mctest.php 37886 2008-07-21 17:06:35Z greg $
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$optionsWithArgs = array( 'i' );
-
-require_once('commandLine.inc');
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-function microtime_float()
-{
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
-}
-
-
-#$wgDebugLogFile = '/dev/stdout';
+class mcTest extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Makes several 'set', 'incr' and 'get' requests on every"
+ . " memcached server and shows a report";
+ $this->addOption( 'i', 'Number of iterations', false, true );
+ $this->addArg( 'server', 'Memcached server to test', false );
+ }
-if ( isset( $args[0] ) ) {
- $wgMemCachedServers = array( $args[0] );
-}
-if ( isset( $options['i'] ) ) {
- $iterations = $options['i'];
-} else {
- $iterations = 100;
-}
+ public function execute() {
+ global $wgMemCachedServers;
-foreach ( $wgMemCachedServers as $server ) {
- print "$server ";
- $mcc = new MemCachedClientforWiki( array('persistant' => true) );
- $mcc->set_servers( array( $server ) );
- $set = 0;
- $incr = 0;
- $get = 0;
- $time_start=microtime_float();
- for ( $i=1; $i<=$iterations; $i++ ) {
- if ( !is_null( $mcc->set( "test$i", $i ) ) ) {
- $set++;
- }
- }
+ $iterations = $this->getOption( 'i', 100 );
+ if( $this->hasArg() )
+ $wgMemCachedServers = array( $this->getArg() );
- for ( $i=1; $i<=$iterations; $i++ ) {
- if ( !is_null( $mcc->incr( "test$i", $i ) ) ) {
- $incr++;
+ foreach ( $wgMemCachedServers as $server ) {
+ $this->output( $server . " " );
+ $mcc = new MemCachedClientforWiki( array('persistant' => true) );
+ $mcc->set_servers( array( $server ) );
+ $set = 0;
+ $incr = 0;
+ $get = 0;
+ $time_start = $this->microtime_float();
+ for ( $i=1; $i<=$iterations; $i++ ) {
+ if ( !is_null( $mcc->set( "test$i", $i ) ) ) {
+ $set++;
+ }
+ }
+ for ( $i=1; $i<=$iterations; $i++ ) {
+ if ( !is_null( $mcc->incr( "test$i", $i ) ) ) {
+ $incr++;
+ }
+ }
+ for ( $i=1; $i<=$iterations; $i++ ) {
+ $value = $mcc->get( "test$i" );
+ if ( $value == $i*2 ) {
+ $get++;
+ }
+ }
+ $exectime = $this->microtime_float() - $time_start;
+
+ $this->output( "set: $set incr: $incr get: $get time: $exectime\n" );
}
}
- for ( $i=1; $i<=$iterations; $i++ ) {
- $value = $mcc->get( "test$i" );
- if ( $value == $i*2 ) {
- $get++;
- }
+ /**
+ * Return microtime() as a float
+ * @return float
+ */
+ private function microtime_float() {
+ list($usec, $sec) = explode(" ", microtime());
+ return ((float)$usec + (float)$sec);
}
- $exectime=microtime_float()-$time_start;
-
- print "set: $set incr: $incr get: $get time: $exectime\n";
}
-
-
+$maintClass = "mcTest";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/mergeMessageFileList.php b/maintenance/mergeMessageFileList.php
new file mode 100644
index 00000000..57d9ebb0
--- /dev/null
+++ b/maintenance/mergeMessageFileList.php
@@ -0,0 +1,72 @@
+<?php
+
+# Start from scratch
+define( 'MW_NO_EXTENSION_MESSAGES', 1 );
+
+require_once( dirname( __FILE__ ).'/Maintenance.php' );
+$maintClass = 'MergeMessageFileList';
+$mmfl = false;
+class MergeMessageFileList extends Maintenance {
+
+ function __construct() {
+ $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', false, true );
+ $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
+ $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' .
+ 'single array containing all message files.';
+ }
+
+ public function execute() {
+ global $IP, $mmfl;
+ if ( !$this->hasOption( 'list-file' ) ) {
+ $this->error( 'The --list-file option must be specified.' );
+ return;
+ }
+
+ $lines = file( $this->getOption( 'list-file' ) );
+ if ( $lines === false ) {
+ $this->error( 'Unable to open list file.' );
+ }
+ $mmfl = array( 'setupFiles' => array_map( 'trim', $lines ) );
+ if ( $this->hasOption( 'output' ) ) {
+ $mmfl['output'] = $this->getOption( 'output' );
+ }
+ }
+}
+
+require_once( DO_MAINTENANCE );
+
+foreach ( $mmfl['setupFiles'] as $fileName ) {
+ if ( strval( $fileName ) === '' ) {
+ continue;
+ }
+ $fileName = str_replace( '$IP', $IP, $fileName );
+ fwrite( STDERR, "Loading data from $fileName\n" );
+ include_once( $fileName );
+}
+fwrite( STDERR, "\n" );
+$s =
+ "<" . "?php\n" .
+ "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
+ "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
+ '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n" .
+ '$wgExtensionAliasesFiles = ' . var_export( $wgExtensionAliasesFiles, true ) . ";\n";
+
+$dirs = array(
+ $IP,
+ dirname( dirname( __FILE__ ) ),
+ realpath( $IP )
+);
+
+foreach ( $dirs as $dir ) {
+ $s = preg_replace(
+ "/'" . preg_quote( $dir, '/' ) . "([^']*)'/",
+ '"$IP\1"',
+ $s );
+}
+
+if ( isset( $mmfl['output'] ) ) {
+ file_put_contents( $mmfl['output'], $s );
+} else {
+ echo $s;
+}
+
diff --git a/maintenance/migrateUserGroup.php b/maintenance/migrateUserGroup.php
new file mode 100644
index 00000000..6d584f7d
--- /dev/null
+++ b/maintenance/migrateUserGroup.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Re-assign users from an old group to a new one
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class MigrateUserGroup extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Re-assign users from an old group to a new one";
+ $this->addArg( 'oldgroup', 'Old user group key', true );
+ $this->addArg( 'newgroup', 'New user group key', true );
+ $this->setBatchSize( 200 );
+ }
+
+ public function execute() {
+ $count = 0;
+ $oldGroup = $this->getArg( 0 );
+ $newGroup = $this->getArg( 1 );
+ $dbw = wfGetDB( DB_MASTER );
+ $start = $dbw->selectField( 'user_groups', 'MIN(ug_user)',
+ array('ug_group' => $oldGroup), __FUNCTION__ );
+ $end = $dbw->selectField( 'user_groups', 'MAX(ug_user)',
+ array('ug_group' => $oldGroup), __FUNCTION__ );
+ if( $start === null ) {
+ $this->error( "Nothing to do - no users in the '$oldGroup' group", true );
+ }
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+ // Migrate users over in batches...
+ while( $blockEnd <= $end ) {
+ $this->output( "Doing users $blockStart to $blockEnd\n" );
+ $dbw->begin();
+ $dbw->update( 'user_groups',
+ array('ug_group' => $newGroup),
+ array('ug_group' => $oldGroup,
+ "ug_user BETWEEN $blockStart AND $blockEnd" )
+ );
+ $count += $dbw->affectedRows();
+ $dbw->commit();
+ $blockStart += $this->mBatchSize;
+ $blockEnd += $this->mBatchSize;
+ wfWaitForSlaves( 5 );
+ }
+ $this->output( "Done! $count user(s) in group '$oldGroup' are now in '$newGroup' instead.\n" );
+ }
+}
+
+$maintClass = "MigrateUserGroup";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/minify.php b/maintenance/minify.php
new file mode 100644
index 00000000..601a4d67
--- /dev/null
+++ b/maintenance/minify.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Minify a file or set of files
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class MinifyScript extends Maintenance {
+ var $outDir;
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'outfile',
+ 'File for output. Only a single file may be specified for input.',
+ false, true );
+ $this->addOption( 'outdir',
+ "Directory for output. If this is not specified, and neither is --outfile, then the\n" .
+ "output files will be sent to the same directories as the input files.",
+ false, true );
+ $this->mDescription = "Minify a file or set of files.\n\n" .
+ "If --outfile is not specified, then the output file names will have a .min extension\n" .
+ "added, e.g. jquery.js -> jquery.min.js.";
+
+ }
+
+ public function execute() {
+ if ( !count( $this->mArgs ) ) {
+ $this->error( "minify.php: At least one input file must be specified." );
+ exit( 1 );
+ }
+
+ if ( $this->hasOption( 'outfile' ) ) {
+ if ( count( $this->mArgs ) > 1 ) {
+ $this->error( '--outfile may only be used with a single input file.' );
+ exit( 1 );
+ }
+
+ // Minify one file
+ $this->minify( $this->getArg( 0 ), $this->getOption( 'outfile' ) );
+ return;
+ }
+
+ $outDir = $this->getOption( 'outdir', false );
+
+ foreach ( $this->mArgs as $arg ) {
+ $inPath = realpath( $arg );
+ $inName = basename( $inPath );
+ $inDir = dirname( $inPath );
+
+ if ( strpos( $inName, '.min.' ) !== false ) {
+ echo "Skipping $inName\n";
+ continue;
+ }
+
+ if ( !file_exists( $inPath ) ) {
+ $this->error( "File does not exist: $arg" );
+ exit( 1 );
+ }
+
+ $extension = $this->getExtension( $inName );
+ $outName = substr( $inName, 0, -strlen( $extension ) ) . 'min.' . $extension;
+ if ( $outDir === false ) {
+ $outPath = $inDir . '/' . $outName;
+ } else {
+ $outPath = $outDir . '/' . $outName;
+ }
+
+ $this->minify( $inPath, $outPath );
+ }
+ }
+
+ public function getExtension( $fileName ) {
+ $dotPos = strrpos( $fileName, '.' );
+ if ( $dotPos === false ) {
+ $this->error( "No file extension, cannot determine type: $arg" );
+ exit( 1 );
+ }
+ return substr( $fileName, $dotPos + 1 );
+ }
+
+ public function minify( $inPath, $outPath ) {
+ $extension = $this->getExtension( $inPath );
+ echo basename( $inPath ) . ' -> ' . basename( $outPath ) . '...';
+
+ $inText = file_get_contents( $inPath );
+ if ( $inText === false ) {
+ $this->error( "Unable to open file $inPath for reading." );
+ exit( 1 );
+ }
+ $outFile = fopen( $outPath, 'w' );
+ if ( !$outFile ) {
+ $this->error( "Unable to open file $outPath for writing." );
+ exit( 1 );
+ }
+
+ switch ( $extension ) {
+ case 'js':
+ $outText = JSMin::minify( $inText );
+ break;
+ default:
+ $this->error( "No minifier defined for extension \"$extension\"" );
+ }
+
+ fwrite( $outFile, $outText );
+ fclose( $outFile );
+ echo " ok\n";
+ }
+}
+
+$maintClass = 'MinifyScript';
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/moveBatch.php b/maintenance/moveBatch.php
index 67d513ed..d1d3193b 100644
--- a/maintenance/moveBatch.php
+++ b/maintenance/moveBatch.php
@@ -1,9 +1,22 @@
<?php
-
/**
* Maintenance script to move a batch of pages
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Tim Starling
*
@@ -20,78 +33,78 @@
* e.g. immobile_namespace for namespaces which can't be moved
*/
-$oldCwd = getcwd();
-$optionsWithArgs = array( 'u', 'r', 'i' );
-require_once( 'commandLine.inc' );
-
-chdir( $oldCwd );
-
-# Options processing
-
-$filename = 'php://stdin';
-$user = 'Move page script';
-$reason = '';
-$interval = 0;
-
-if ( isset( $args[0] ) ) {
- $filename = $args[0];
-}
-if ( isset( $options['u'] ) ) {
- $user = $options['u'];
-}
-if ( isset( $options['r'] ) ) {
- $reason = $options['r'];
-}
-if ( isset( $options['i'] ) ) {
- $interval = $options['i'];
-}
-
-$wgUser = User::newFromName( $user );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-
-# Setup complete, now start
-
-$file = fopen( $filename, 'r' );
-if ( !$file ) {
- print "Unable to read file, exiting\n";
- exit;
-}
-
-$dbw = wfGetDB( DB_MASTER );
-
-for ( $linenum = 1; !feof( $file ); $linenum++ ) {
- $line = fgets( $file );
- if ( $line === false ) {
- break;
- }
- $parts = array_map( 'trim', explode( '|', $line ) );
- if ( count( $parts ) != 2 ) {
- print "Error on line $linenum, no pipe character\n";
- continue;
+class MoveBatch extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Moves a batch of pages";
+ $this->addOption( 'u', "User to perform move", false, true );
+ $this->addOption( 'r', "Reason to move page", false, true );
+ $this->addOption( 'i', "Interval to sleep between moves" );
+ $this->addArg( 'listfile', 'List of pages to move, newline delimited', false );
}
- $source = Title::newFromText( $parts[0] );
- $dest = Title::newFromText( $parts[1] );
- if ( is_null( $source ) || is_null( $dest ) ) {
- print "Invalid title on line $linenum\n";
- continue;
+
+ public function execute() {
+ global $wgUser;
+
+ # Change to current working directory
+ $oldCwd = getcwd();
+ chdir( $oldCwd );
+
+ # Options processing
+ $user = $this->getOption( 'u', 'Move page script' );
+ $reason = $this->getOption( 'r', '' );
+ $interval = $this->getOption( 'i', 0 );
+ if( $this->hasArg() ) {
+ $file = fopen( $this->getArg(), 'r' );
+ } else {
+ $file = $this->getStdin();
+ }
+
+ # Setup
+ if( !$file ) {
+ $this->error( "Unable to read file, exiting", true );
+ }
+ $wgUser = User::newFromName( $user );
+
+ # Setup complete, now start
+ $dbw = wfGetDB( DB_MASTER );
+ for ( $linenum = 1; !feof( $file ); $linenum++ ) {
+ $line = fgets( $file );
+ if ( $line === false ) {
+ break;
+ }
+ $parts = array_map( 'trim', explode( '|', $line ) );
+ if ( count( $parts ) != 2 ) {
+ $this->error( "Error on line $linenum, no pipe character" );
+ continue;
+ }
+ $source = Title::newFromText( $parts[0] );
+ $dest = Title::newFromText( $parts[1] );
+ if ( is_null( $source ) || is_null( $dest ) ) {
+ $this->error( "Invalid title on line $linenum" );
+ continue;
+ }
+
+
+ $this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() );
+ $dbw->begin();
+ $err = $source->moveTo( $dest, false, $reason );
+ if( $err !== true ) {
+ $msg = array_shift( $err[0] );
+ $this->output( "\nFAILED: " . wfMsg( $msg, $err[0] ) );
+ }
+ $dbw->commit();
+ $this->output( "\n" );
+
+ if ( $interval ) {
+ sleep( $interval );
+ }
+ wfWaitForSlaves( 5 );
+ }
}
-
-
- print $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText();
- $dbw->begin();
- $err = $source->moveTo( $dest, false, $reason );
- if( $err !== true ) {
- $msg = array_shift( $err[0] );
- print "\nFAILED: " . wfMsg( $msg, $err[0] );
- }
- $dbw->immediateCommit();
- print "\n";
-
- if ( $interval ) {
- sleep( $interval );
- }
- wfWaitForSlaves( 5 );
}
-
-
+$maintClass = "MoveBatch";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/mwdocgen.php b/maintenance/mwdocgen.php
index 378229e0..b91922c3 100644
--- a/maintenance/mwdocgen.php
+++ b/maintenance/mwdocgen.php
@@ -61,6 +61,7 @@ $mwPathS = $mwPath.'skins/';
/** Variable to get user input */
$input = '';
+$exclude = '';
#
# Functions
@@ -128,8 +129,10 @@ function getSvnRevision( $dir ) {
* @param $currentVersion String: Version number of the software
* @param $svnstat String: path to the svnstat file
* @param $input String: Path to analyze.
+ * @param $exclude String: Additionals path regex to exlcude
+ * (LocalSettings.php, AdminSettings.php and .svn directories are always excluded)
*/
-function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input ){
+function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude ){
global $tmpPath;
$template = file_get_contents( $doxygenTemplate );
@@ -141,6 +144,7 @@ function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath,
'{{CURRENT_VERSION}}' => $currentVersion,
'{{SVNSTAT}}' => $svnstat,
'{{INPUT}}' => $input,
+ '{{EXCLUDE}}' => $exclude,
);
$tmpCfg = str_replace( array_keys( $replacements ), array_values( $replacements ), $template );
$tmpFileName = $tmpPath . 'mwdocgen'. rand() .'.tmp';
@@ -168,6 +172,7 @@ if( is_array( $argv ) && isset( $argv[1] ) ) {
$file = $argv[2];
}
break;
+ case '--no-extensions': $input = 6; break;
}
}
@@ -182,6 +187,7 @@ Several documentation possibilities:
3 : only maintenance
4 : only skins
5 : only a given file
+ 6 : all but the extensions directory
OPTIONS;
while ( !is_numeric($input) )
{
@@ -203,6 +209,9 @@ case 5:
$file = readaline( "Enter file name $mwPath" );
}
$input = $mwPath.$file;
+case 6:
+ $input = $mwPath;
+ $exclude = 'extensions';
}
$versionNumber = getSvnRevision( $input );
@@ -213,7 +222,7 @@ if( $versionNumber === false ){ #Not using subversion ?
$version = "trunk (r$versionNumber)";
}
-$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input );
+$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $exclude );
$command = $doxygenBin . ' ' . $generatedConf;
echo <<<TEXT
@@ -233,6 +242,6 @@ echo <<<TEXT
Doxygen execution finished.
Check above for possible errors.
-You might want to deleted the temporary file $generatedConf
+You might want to delete the temporary file $generatedConf
TEXT;
diff --git a/maintenance/namespace2sql.php b/maintenance/namespace2sql.php
deleted file mode 100644
index 43a8cc64..00000000
--- a/maintenance/namespace2sql.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Print SQL to insert namespace names into database.
- * This source code is in the public domain.
- *
- * @file
- * @ingroup Maintenance
- */
-
-require_once( "commandLine.inc" );
-
-for ($i = -2; $i < 16; ++$i) {
- $nsname = mysql_escape_string( $wgLang->getNsText( $i ) );
- $dbname = mysql_escape_string( $wgDBname );
- print "INSERT INTO ns_name(ns_db, ns_num, ns_name) VALUES('$dbname', $i, '$nsname');\n";
-}
-
-
diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php
index c5b3ce96..dd29558c 100644
--- a/maintenance/namespaceDupes.php
+++ b/maintenance/namespaceDupes.php
@@ -1,54 +1,71 @@
<?php
-# Copyright (C) 2005-2007 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
-
/**
- * @file
+ * Check for articles to fix after adding/deleting namespaces
+ *
+ * Copyright (C) 2005-2007 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$options = array( 'fix', 'suffix', 'help' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-/** */
-require_once( 'commandLine.inc' );
+class NamespaceConflictChecker extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "";
+ $this->addOption( 'fix', 'Attempt to automatically fix errors' );
+ $this->addOption( 'suffix', "Dupes will be renamed with correct namespace with\n" .
+ "\t\t<text> Appended after the article name", false, true );
+ $this->addOption( 'prefix', "Do an explicit check for the given title prefix\n" .
+ "\t\tappended after the article name", false, true );
+ }
-if(isset( $options['help'] ) ) {
-print <<<ENDS
-usage: namespaceDupes.php [--fix] [--suffix=<text>] [--help]
- --help : this help message
- --fix : attempt to automatically fix errors
- --suffix=<text> : dupes will be renamed with correct namespace with <text>
- appended after the article name.
- --prefix=<text> : Do an explicit check for the given title prefix
- in place of the standard namespace list.
- --verbose : Display output for checked namespaces without conflicts
+ public function execute() {
+ global $wgTitle;
-ENDS;
-die;
-}
+ $this->db = wfGetDB( DB_MASTER );
+ $wgTitle = Title::newFromText( 'Namespace title conflict cleanup script' );
-class NamespaceConflictChecker {
- function NamespaceConflictChecker( $db, $verbose=false ) {
- $this->db = $db;
- $this->verbose = $verbose;
+ $fix = $this->hasOption( 'fix' );
+ $suffix = $this->getOption( 'suffix', '' );
+ $prefix = $this->getOption( 'prefix', '' );
+ $key = intval( $this->getOption( 'key', 0 ) );
+
+ if( $prefix ) {
+ $retval = $this->checkPrefix( $key, $prefix, $fix, $suffix );
+ } else {
+ $retval = $this->checkAll( $fix, $suffix );
+ }
+
+ if( $retval ) {
+ $this->output( "\nLooks good!\n" );
+ } else {
+ $this->output( "\nOh noeees\n" );
+ }
}
- function checkAll( $fix, $suffix = '' ) {
+ /**
+ * @todo Document
+ * @param $fix bool Whether or not to fix broken entries
+ * @param $suffix String Suffix to append to renamed articles
+ */
+ private function checkAll( $fix, $suffix = '' ) {
global $wgContLang, $wgNamespaceAliases, $wgCanonicalNamespaceNames;
global $wgCapitalLinks;
@@ -76,7 +93,7 @@ class NamespaceConflictChecker {
foreach( $wgNamespaceAliases as $name => $ns ) {
$spaces[$name] = $ns;
}
- foreach( $wgContLang->namespaceAliases as $name => $ns ) {
+ foreach( $wgContLang->getNamespaceAliases() as $name => $ns ) {
$spaces[$name] = $ns;
}
@@ -112,35 +129,36 @@ class NamespaceConflictChecker {
}
return $ok;
}
-
+
+ /**
+ * Get the interwiki list
+ * @todo Needs to respect interwiki cache!
+ * @return array
+ */
private function getInterwikiList() {
$result = $this->db->select( 'interwiki', array( 'iw_prefix' ) );
- while( $row = $this->db->fetchObject( $result ) ) {
+ $prefixes = array();
+ foreach( $result as $row ) {
$prefixes[] = $row->iw_prefix;
}
$this->db->freeResult( $result );
return $prefixes;
}
- function checkNamespace( $ns, $name, $fix, $suffix = '' ) {
- if( $ns == 0 ) {
- $header = "Checking interwiki prefix: \"$name\"\n";
- } else {
- $header = "Checking namespace $ns: \"$name\"\n";
- }
-
+ /**
+ * @todo Document
+ * @param $ns int A namespace id
+ * @param $name String
+ * @param $fix bool Whether to fix broken entries
+ * @param $suffix String Suffix to append to renamed articles
+ */
+ private function checkNamespace( $ns, $name, $fix, $suffix = '' ) {
$conflicts = $this->getConflicts( $ns, $name );
$count = count( $conflicts );
if( $count == 0 ) {
- if( $this->verbose ) {
- echo $header;
- echo "... no conflicts detected!\n";
- }
return true;
}
- echo $header;
- echo "... $count conflicts detected:\n";
$ok = true;
foreach( $conflicts as $row ) {
$resolvable = $this->reportConflict( $row, $suffix );
@@ -155,23 +173,28 @@ class NamespaceConflictChecker {
/**
* @todo: do this for reals
*/
- function checkPrefix( $key, $prefix, $fix, $suffix = '' ) {
- echo "Checking prefix \"$prefix\" vs namespace $key\n";
+ private function checkPrefix( $key, $prefix, $fix, $suffix = '' ) {
+ $this->output( "Checking prefix \"$prefix\" vs namespace $key\n" );
return $this->checkNamespace( $key, $prefix, $fix, $suffix );
}
- function getConflicts( $ns, $name ) {
+ /**
+ * Find pages in mainspace that have a prefix of the new namespace
+ * so we know titles that will need migrating
+ * @param $ns int Namespace id (id for new namespace?)
+ * @param $name String Prefix that is being made a namespace
+ */
+ private function getConflicts( $ns, $name ) {
$page = 'page';
$table = $this->db->tableName( $page );
$prefix = $this->db->strencode( $name );
- $likeprefix = str_replace( '_', '\\_', $prefix);
$encNamespace = $this->db->addQuotes( $ns );
$titleSql = "TRIM(LEADING '$prefix:' FROM {$page}_title)";
if( $ns == 0 ) {
// An interwiki; try an alternate encoding with '-' for ':'
- $titleSql = "CONCAT('$prefix-',$titleSql)";
+ $titleSql = $this->db->buildConcat( array( "'$prefix-'", $titleSql ) );
}
$sql = "SELECT {$page}_id AS id,
@@ -180,12 +203,12 @@ class NamespaceConflictChecker {
$titleSql AS title
FROM {$table}
WHERE {$page}_namespace=0
- AND {$page}_title LIKE '$likeprefix:%'";
+ AND {$page}_title " . $this->db->buildLike( $name . ':', $this->db->anyString() );
- $result = $this->db->query( $sql, 'NamespaceConflictChecker::getConflicts' );
+ $result = $this->db->query( $sql, __METHOD__ );
$set = array();
- while( $row = $this->db->fetchObject( $result ) ) {
+ foreach( $result as $row ) {
$set[] = $row;
}
$this->db->freeResult( $result );
@@ -193,104 +216,89 @@ class NamespaceConflictChecker {
return $set;
}
- function reportConflict( $row, $suffix ) {
+ /**
+ * Report any conflicts we find
+ */
+ private function reportConflict( $row, $suffix ) {
$newTitle = Title::makeTitleSafe( $row->namespace, $row->title );
if( is_null($newTitle) || !$newTitle->canExist() ) {
// Title is also an illegal title...
// For the moment we'll let these slide to cleanupTitles or whoever.
- printf( "... %d (0,\"%s\")\n",
+ $this->output( sprintf( "... %d (0,\"%s\")\n",
$row->id,
- $row->oldtitle );
- echo "... *** cannot resolve automatically; illegal title ***\n";
+ $row->oldtitle ) );
+ $this->output( "... *** cannot resolve automatically; illegal title ***\n" );
return false;
}
-
- printf( "... %d (0,\"%s\") -> (%d,\"%s\") [[%s]]\n",
+
+ $this->output( sprintf( "... %d (0,\"%s\") -> (%d,\"%s\") [[%s]]\n",
$row->id,
$row->oldtitle,
$newTitle->getNamespace(),
$newTitle->getDBkey(),
- $newTitle->getPrefixedText() );
+ $newTitle->getPrefixedText() ) );
$id = $newTitle->getArticleId();
if( $id ) {
- echo "... *** cannot resolve automatically; page exists with ID $id ***\n";
+ $this->output( "... *** cannot resolve automatically; page exists with ID $id ***\n" );
return false;
} else {
return true;
}
}
- function resolveConflict( $row, $resolvable, $suffix ) {
+ /**
+ * Resolve any conflicts
+ * @param $row Row from the page table to fix
+ * @param $resolveable bool
+ * @param $suffix String Suffix to append to the fixed page
+ */
+ private function resolveConflict( $row, $resolvable, $suffix ) {
if( !$resolvable ) {
- echo "... *** old title {$row->title}\n";
+ $this->output( "... *** old title {$row->title}\n" );
while( true ) {
$row->title .= $suffix;
- echo "... *** new title {$row->title}\n";
+ $this->output( "... *** new title {$row->title}\n" );
$title = Title::makeTitleSafe( $row->namespace, $row->title );
if ( ! $title ) {
- echo "... !!! invalid title\n";
+ $this->output( "... !!! invalid title\n" );
return false;
}
if ( $id = $title->getArticleId() ) {
- echo "... *** page exists with ID $id ***\n";
+ $this->output( "... *** page exists with ID $id ***\n" );
} else {
break;
}
}
- echo "... *** using suffixed form [[" . $title->getPrefixedText() . "]] ***\n";
- }
- $tables = array( 'page' );
- foreach( $tables as $table ) {
- $this->resolveConflictOn( $row, $table );
+ $this->output( "... *** using suffixed form [[" . $title->getPrefixedText() . "]] ***\n" );
}
+ $this->resolveConflictOn( $row, 'page', 'page' );
return true;
}
- function resolveConflictOn( $row, $table ) {
- echo "... resolving on $table... ";
+ /**
+ * Resolve a given conflict
+ * @param $row Row from the old broken entry
+ * @param $table String Table to update
+ * @param $prefix String Prefix for column name, like page or ar
+ */
+ private function resolveConflictOn( $row, $table, $prefix ) {
+ $this->output( "... resolving on $table... " );
$newTitle = Title::makeTitleSafe( $row->namespace, $row->title );
$this->db->update( $table,
array(
- "{$table}_namespace" => $newTitle->getNamespace(),
- "{$table}_title" => $newTitle->getDBkey(),
+ "{$prefix}_namespace" => $newTitle->getNamespace(),
+ "{$prefix}_title" => $newTitle->getDBkey(),
),
array(
- "{$table}_namespace" => 0,
- "{$table}_title" => $row->oldtitle,
+ "{$prefix}_namespace" => 0,
+ "{$prefix}_title" => $row->oldtitle,
),
__METHOD__ );
- echo "ok.\n";
+ $this->output( "ok.\n" );
return true;
}
}
-
-
-
-$wgTitle = Title::newFromText( 'Namespace title conflict cleanup script' );
-
-$verbose = isset( $options['verbose'] );
-$fix = isset( $options['fix'] );
-$suffix = isset( $options['suffix'] ) ? $options['suffix'] : '';
-$prefix = isset( $options['prefix'] ) ? $options['prefix'] : '';
-$key = isset( $options['key'] ) ? intval( $options['key'] ) : 0;
-
-$dbw = wfGetDB( DB_MASTER );
-$duper = new NamespaceConflictChecker( $dbw, $verbose );
-
-if( $prefix ) {
- $retval = $duper->checkPrefix( $key, $prefix, $fix, $suffix );
-} else {
- $retval = $duper->checkAll( $fix, $suffix );
-}
-
-if( $retval ) {
- echo "\nLooks good!\n";
- exit( 0 );
-} else {
- echo "\nOh noeees\n";
- exit( -1 );
-}
-
-
+$maintClass = "NamespaceConflictChecker";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/nextJobDB.php b/maintenance/nextJobDB.php
index 6af5cbec..75855bb3 100644
--- a/maintenance/nextJobDB.php
+++ b/maintenance/nextJobDB.php
@@ -2,59 +2,102 @@
/**
* Pick a database that has pending jobs
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @todo Make this work on PostgreSQL and maybe other database servers
* @ingroup Maintenance
*/
-$options = array( 'type' );
-
-require_once( 'commandLine.inc' );
-
-$type = isset($options['type'])
- ? $options['type']
- : false;
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$mckey = $type === false
- ? "jobqueue:dbs"
- : "jobqueue:dbs:$type";
-
-$pendingDBs = $wgMemc->get( $mckey );
-if ( !$pendingDBs ) {
- $pendingDBs = array();
- # Cross-reference DBs by master DB server
- $dbsByMaster = array();
- foreach ( $wgLocalDatabases as $db ) {
- $lb = wfGetLB( $db );
- $dbsByMaster[$lb->getServerName(0)][] = $db;
+class nextJobDB extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Pick a database that has pending jobs";
+ $this->addOption( 'type', "The type of job to search for", false, true );
}
- foreach ( $dbsByMaster as $master => $dbs ) {
- $dbConn = wfGetDB( DB_MASTER, array(), $dbs[0] );
- $stype = $dbConn->addQuotes($type);
+ public function execute() {
+ global $wgMemc;
+ $type = $this->getOption( 'type', false );
+ $mckey = $type === false
+ ? "jobqueue:dbs"
+ : "jobqueue:dbs:$type";
+ $pendingDBs = $wgMemc->get( $mckey );
- # Padding row for MySQL bug
- $sql = "(SELECT '-------------------------------------------')";
- foreach ( $dbs as $dbName ) {
- if ( $sql != '' ) {
- $sql .= ' UNION ';
- }
- if ($type === false)
- $sql .= "(SELECT '$dbName' FROM `$dbName`.job LIMIT 1)";
- else
- $sql .= "(SELECT '$dbName' FROM `$dbName`.job WHERE job_cmd=$stype LIMIT 1)";
+ # If we didn't get it from the cache
+ if( !$pendingDBs ) {
+ $pendingDBs = $this->getPendingDbs( $type );
+ $wgMemc->get( $mckey, $pendingDBs, 300 );
}
- $res = $dbConn->query( $sql, 'nextJobDB.php' );
- $row = $dbConn->fetchRow( $res ); // discard padding row
- while ( $row = $dbConn->fetchRow( $res ) ) {
- $pendingDBs[] = $row[0];
+ # If we've got a pending job in a db, display it.
+ if ( $pendingDBs ) {
+ $this->output( $pendingDBs[mt_rand(0, count( $pendingDBs ) - 1)] );
}
}
- $wgMemc->set( $mckey, $pendingDBs, 300 );
-}
+ /**
+ * Get all databases that have a pending job
+ * @param $type String Job type
+ * @return array
+ */
+ private function getPendingDbs( $type ) {
+ global $wgLocalDatabases;
+ $pendingDBs = array();
+ # Cross-reference DBs by master DB server
+ $dbsByMaster = array();
+ foreach ( $wgLocalDatabases as $db ) {
+ $lb = wfGetLB( $db );
+ $dbsByMaster[$lb->getServerName(0)][] = $db;
+ }
-if ( $pendingDBs ) {
- echo $pendingDBs[mt_rand(0, count( $pendingDBs ) - 1)];
-}
+ foreach ( $dbsByMaster as $master => $dbs ) {
+ $dbConn = wfGetDB( DB_MASTER, array(), $dbs[0] );
+ $stype = $dbConn->addQuotes( $type );
+
+ # Padding row for MySQL bug
+ $sql = "(SELECT '-------------------------------------------' as db)";
+ foreach ( $dbs as $wikiId ) {
+ if ( $sql != '' ) {
+ $sql .= ' UNION ';
+ }
+ list( $dbName, $tablePrefix ) = wfSplitWikiID( $wikiId );
+ $dbConn->tablePrefix( $tablePrefix );
+ $jobTable = $dbConn->tableName( 'job' );
+
+ if ( $type === false )
+ $sql .= "(SELECT '$wikiId' as db FROM $dbName.$jobTable LIMIT 1)";
+ else
+ $sql .= "(SELECT '$wikiId' as db FROM $dbName.$jobTable WHERE job_cmd=$stype LIMIT 1)";
+ }
+ $res = $dbConn->query( $sql, __METHOD__ );
+ $first = true;
+ foreach ( $res as $row ) {
+ if ( $first ) {
+ // discard padding row
+ $first = false;
+ continue;
+ }
+ $pendingDBs[] = $row->db;
+ }
+ }
+ return $pendingDBs;
+ }
+}
+$maintClass = "nextJobDb";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/nukeNS.php b/maintenance/nukeNS.php
index 4f9fe926..21e921fe 100644
--- a/maintenance/nukeNS.php
+++ b/maintenance/nukeNS.php
@@ -13,96 +13,102 @@
* back up your DB if there's anything in the MediaWiki that is important to
* you.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Steve Sanbeg
* based on nukePage by Rob Church
*/
-require_once( 'commandLine.inc' );
-require_once( 'nukePage.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$ns = NS_MEDIAWIKI;
-$delete = false;
+class NukeNS extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Remove pages with only 1 revision from any namespace";
+ $this->addOption( 'delete', "Actually delete the page" );
+ $this->addOption( 'ns', 'Namespace to delete from, default NS_MEDIAWIKI', false, true );
+ }
-if (isset($options['ns']))
-{
- $ns = $options['ns'];
-}
+ public function execute() {
+ $ns = $this->getOption( 'ns', NS_MEDIAWIKI );
+ $delete = $this->getOption( 'delete', false );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
-if (isset( $options['delete'] ) and $options['delete'])
-{
- $delete = true;
-}
+ $tbl_pag = $dbw->tableName( 'page' );
+ $tbl_rev = $dbw->tableName( 'revision' );
+ $res = $dbw->query( "SELECT page_title FROM $tbl_pag WHERE page_namespace = $ns" );
+ $n_deleted = 0;
-NukeNS( $ns, $delete);
+ foreach( $res as $row ) {
+ //echo "$ns_name:".$row->page_title, "\n";
+ $title = Title::makeTitle( $ns, $row->page_title );
+ $id = $title->getArticleID();
-function NukeNS($ns_no, $delete) {
+ // Get corresponding revisions
+ $res2 = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" );
+ $revs = array();
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- $tbl_pag = $dbw->tableName( 'page' );
- $tbl_rev = $dbw->tableName( 'revision' );
- $res = $dbw->query( "SELECT page_title FROM $tbl_pag WHERE page_namespace = $ns_no" );
+ foreach( $res2 as $row2 ) {
+ $revs[] = $row2->rev_id;
+ }
+ $count = count( $revs );
- $n_deleted = 0;
-
- while( $row = $dbw->fetchObject( $res ) ) {
- //echo "$ns_name:".$row->page_title, "\n";
- $title = Title::newFromText($row->page_title, $ns_no);
- $id = $title->getArticleID();
+ //skip anything that looks modified (i.e. multiple revs)
+ if ( $count == 1 ) {
+ #echo $title->getPrefixedText(), "\t", $count, "\n";
+ $this->output( "delete: " . $title->getPrefixedText() . "\n" );
- // Get corresponding revisions
- $res2 = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" );
- $revs = array();
-
- while( $row2 = $dbw->fetchObject( $res2 ) ) {
- $revs[] = $row2->rev_id;
- }
- $count = count( $revs );
+ //as much as I hate to cut & paste this, it's a little different, and
+ //I already have the id & revs
+ if( $delete ) {
+ $dbw->query( "DELETE FROM $tbl_pag WHERE page_id = $id" );
+ $dbw->commit();
+ // Delete revisions as appropriate
+ $child = $this->runChild( 'NukePage', 'NukePage.php' );
+ $child->deleteRevisions( $revs );
+ $this->purgeRedundantText( true );
+ $n_deleted ++;
+ }
+ } else {
+ $this->output( "skip: " . $title->getPrefixedText() . "\n" );
+ }
+ }
+ $dbw->commit();
- //skip anything that looks modified (i.e. multiple revs)
- if (($count == 1)) {
- #echo $title->getPrefixedText(), "\t", $count, "\n";
- echo "delete: ", $title->getPrefixedText(), "\n";
-
- //as much as I hate to cut & paste this, it's a little different, and
- //I already have the id & revs
-
- if( $delete ) {
- $dbw->query( "DELETE FROM $tbl_pag WHERE page_id = $id" );
- $dbw->commit();
- // Delete revisions as appropriate
- DeleteRevisions( $revs );
- PurgeRedundantText( true );
- $n_deleted ++;
- }
- } else {
- echo "skip: ", $title->getPrefixedText(), "\n";
- }
-
-
- }
- $dbw->commit();
-
- if ($n_deleted > 0) {
- #update statistics - better to decrement existing count, or just count
- #the page table?
- $pages = $dbw->selectField('site_stats', 'ss_total_pages');
- $pages -= $n_deleted;
- $dbw->update( 'site_stats',
- array('ss_total_pages' => $pages ),
- array( 'ss_row_id' => 1),
- __METHOD__ );
-
- }
-
- if (!$delete) {
- echo( "To update the database, run the script with the --delete option.\n" );
- }
-
+ if ( $n_deleted > 0 ) {
+ #update statistics - better to decrement existing count, or just count
+ #the page table?
+ $pages = $dbw->selectField( 'site_stats', 'ss_total_pages' );
+ $pages -= $n_deleted;
+ $dbw->update(
+ 'site_stats',
+ array( 'ss_total_pages' => $pages ),
+ array( 'ss_row_id' => 1 ),
+ __METHOD__
+ );
+ }
+
+ if ( !$delete ) {
+ $this->output( "To update the database, run the script with the --delete option.\n" );
+ }
+ }
}
-
+$maintClass = "NukeNS";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/nukePage.inc b/maintenance/nukePage.inc
deleted file mode 100644
index a19c6df6..00000000
--- a/maintenance/nukePage.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/**
- * Support functions for the nukeArticle script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-require_once( 'purgeOldText.inc' );
-
-function NukePage( $name, $delete = false ) {
-
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- $tbl_pag = $dbw->tableName( 'page' );
- $tbl_rec = $dbw->tableName( 'recentchanges' );
- $tbl_rev = $dbw->tableName( 'revision' );
-
- # Get page ID
- echo( "Searching for \"$name\"..." );
- $title = Title::newFromText( $name );
- if( $title ) {
- $id = $title->getArticleID();
- $real = $title->getPrefixedText();
- $isGoodArticle = $title->isContentPage();
- echo( "found \"$real\" with ID $id.\n" );
-
- # Get corresponding revisions
- echo( "Searching for revisions..." );
- $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" );
- while( $row = $dbw->fetchObject( $res ) ) {
- $revs[] = $row->rev_id;
- }
- $count = count( $revs );
- echo( "found $count.\n" );
-
- # Delete the page record and associated recent changes entries
- if( $delete ) {
- echo( "Deleting page record..." );
- $dbw->query( "DELETE FROM $tbl_pag WHERE page_id = $id" );
- echo( "done.\n" );
- echo( "Cleaning up recent changes..." );
- $dbw->query( "DELETE FROM $tbl_rec WHERE rc_cur_id = $id" );
- echo( "done.\n" );
- }
-
- $dbw->commit();
-
- # Delete revisions as appropriate
- if( $delete && $count ) {
- echo( "Deleting revisions..." );
- DeleteRevisions( $revs );
- echo( "done.\n" );
- PurgeRedundantText( true );
- }
-
- # Update stats as appropriate
- if ( $delete ) {
- echo( "Updating site stats..." );
- $ga = $isGoodArticle ? -1 : 0; // if it was good, decrement that too
- $stats = new SiteStatsUpdate( 0, -$count, $ga, -1 );
- $stats->doUpdate();
- echo( "done.\n" );
- }
-
-
- } else {
- echo( "not found in database.\n" );
- $dbw->commit();
- }
-
-}
-
-function DeleteRevisions( $ids ) {
-
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- $tbl_rev = $dbw->tableName( 'revision' );
-
- $set = implode( ', ', $ids );
- $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
-
- $dbw->commit();
-
-}
-
-?> \ No newline at end of file
diff --git a/maintenance/nukePage.php b/maintenance/nukePage.php
index b3bfc762..16ff2e40 100644
--- a/maintenance/nukePage.php
+++ b/maintenance/nukePage.php
@@ -1,29 +1,113 @@
<?php
-
/**
* Erase a page record from the database
* Irreversible (can't use standard undelete) and does not update link tables
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-require_once( 'commandLine.inc' );
-require_once( 'nukePage.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-echo( "Erase Page Record\n\n" );
+class NukePage extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Remove a page record from the database";
+ $this->addOption( 'delete', "Actually delete the page" );
+ $this->addArg( 'title', 'Title to delete' );
+ }
-if( isset( $args[0] ) ) {
- NukePage( $args[0], true );
-} else {
- ShowUsage();
-}
+ public function execute() {
+
+ $name = $this->getArg();
+ $delete = $this->getOption( 'delete', false );
+
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
+ $tbl_pag = $dbw->tableName( 'page' );
+ $tbl_rec = $dbw->tableName( 'recentchanges' );
+ $tbl_rev = $dbw->tableName( 'revision' );
+
+ # Get page ID
+ $this->output( "Searching for \"$name\"..." );
+ $title = Title::newFromText( $name );
+ if( $title ) {
+ $id = $title->getArticleID();
+ $real = $title->getPrefixedText();
+ $isGoodArticle = $title->isContentPage();
+ $this->output( "found \"$real\" with ID $id.\n" );
+
+ # Get corresponding revisions
+ $this->output( "Searching for revisions..." );
+ $res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" );
+ foreach( $res as $row ) {
+ $revs[] = $row->rev_id;
+ }
+ $count = count( $revs );
+ $this->output( "found $count.\n" );
+
+ # Delete the page record and associated recent changes entries
+ if( $delete ) {
+ $this->output( "Deleting page record..." );
+ $dbw->query( "DELETE FROM $tbl_pag WHERE page_id = $id" );
+ $this->output( "done.\n" );
+ $this->output( "Cleaning up recent changes..." );
+ $dbw->query( "DELETE FROM $tbl_rec WHERE rc_cur_id = $id" );
+ $this->output( "done.\n" );
+ }
+
+ $dbw->commit();
+
+ # Delete revisions as appropriate
+ if( $delete && $count ) {
+ $this->output( "Deleting revisions..." );
+ $this->deleteRevisions( $revs );
+ $this->output( "done.\n" );
+ $this->purgeRedundantText( true );
+ }
+
+ # Update stats as appropriate
+ if ( $delete ) {
+ $this->output( "Updating site stats..." );
+ $ga = $isGoodArticle ? -1 : 0; // if it was good, decrement that too
+ $stats = new SiteStatsUpdate( 0, -$count, $ga, -1 );
+ $stats->doUpdate();
+ $this->output( "done.\n" );
+ }
+ } else {
+ $this->output( "not found in database.\n" );
+ $dbw->commit();
+ }
+ }
+
+ public function deleteRevisions( $ids ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
+ $tbl_rev = $dbw->tableName( 'revision' );
+
+ $set = implode( ', ', $ids );
+ $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
-/** Show script usage information */
-function ShowUsage() {
- echo( "Remove a page record from the database.\n\n" );
- echo( "Usage: php nukePage.php <title>\n\n" );
- echo( " <title> : Page title; spaces escaped with underscores\n\n" );
+ $dbw->commit();
+ }
}
+$maintClass = "NukePage";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/ora/patch_seq_names_pre1.16.sql b/maintenance/ora/patch_seq_names_pre1.16.sql
new file mode 100644
index 00000000..5346b141
--- /dev/null
+++ b/maintenance/ora/patch_seq_names_pre1.16.sql
@@ -0,0 +1,8 @@
+-- script for renameing sequence names to conform with <table>_<field>_seq format
+RENAME rev_rev_id_val TO revision_rev_id_seq;
+RENAME text_old_id_val TO text_old_id_seq;
+RENAME category_id_seq TO category_cat_id_seq;
+RENAME ipblocks_ipb_id_val TO ipblocks_ipb_id_seq;
+RENAME rc_rc_id_seq TO recentchanges_rc_id_seq;
+RENAME log_log_id_seq TO logging_log_id_seq;
+RENAME pr_id_val TO page_restrictions_pr_id_seq; \ No newline at end of file
diff --git a/maintenance/ora/tables.sql b/maintenance/ora/tables.sql
index 6d4b8ed5..d2d1a21b 100644
--- a/maintenance/ora/tables.sql
+++ b/maintenance/ora/tables.sql
@@ -1,443 +1,794 @@
--- SQL to create the initial tables for the MediaWiki database.
--- This is read and executed by the install script; you should
--- not have to run it by itself unless doing a manual install.
--- This is the Oracle version (based on PostgreSQL schema).
--- For information about each table, please see the notes in maintenance/tables.sql
+-- defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}';
+define mw_prefix='{$wgDBprefix}';
-CREATE SEQUENCE user_user_id_seq MINVALUE 0 START WITH 0;
-CREATE TABLE mwuser ( -- replace reserved word 'user'
- user_id INTEGER NOT NULL PRIMARY KEY,
- user_name VARCHAR(255) NOT NULL UNIQUE,
- user_real_name CLOB,
- user_password CLOB,
- user_newpassword CLOB,
- user_newpass_time TIMESTAMP WITH TIME ZONE,
- user_token CHAR(32),
- user_email CLOB,
- user_email_token CHAR(32),
- user_email_token_expires TIMESTAMP WITH TIME ZONE,
- user_email_authenticated TIMESTAMP WITH TIME ZONE,
+CREATE SEQUENCE user_user_id_seq MINVALUE 0 START WITH 0;
+CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user'
+ user_id NUMBER NOT NULL,
+ user_name VARCHAR2(255) NOT NULL,
+ user_real_name VARCHAR2(512),
+ user_password VARCHAR2(255),
+ user_newpassword VARCHAR2(255),
+ user_newpass_time TIMESTAMP(6) WITH TIME ZONE,
+ user_token VARCHAR2(32),
+ user_email VARCHAR2(255),
+ user_email_token VARCHAR2(32),
+ user_email_token_expires TIMESTAMP(6) WITH TIME ZONE,
+ user_email_authenticated TIMESTAMP(6) WITH TIME ZONE,
user_options CLOB,
- user_touched TIMESTAMP WITH TIME ZONE,
- user_registration TIMESTAMP WITH TIME ZONE,
- user_editcount INTEGER
+ user_touched TIMESTAMP(6) WITH TIME ZONE,
+ user_registration TIMESTAMP(6) WITH TIME ZONE,
+ user_editcount NUMBER
);
-CREATE INDEX user_email_token_idx ON mwuser (user_email_token);
+ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (user_id);
+CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name);
+CREATE INDEX &mw_prefix.mwuser_i01 ON &mw_prefix.mwuser (user_email_token);
-- Create a dummy user to satisfy fk contraints especially with revisions
-INSERT INTO mwuser
+INSERT INTO &mw_prefix.mwuser
VALUES (user_user_id_seq.nextval,'Anonymous','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, '', current_timestamp, current_timestamp, 0);
-CREATE TABLE user_groups (
- ug_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
- ug_group CHAR(16) NOT NULL
+CREATE TABLE &mw_prefix.user_groups (
+ ug_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ ug_group VARCHAR2(16) NOT NULL
);
-CREATE UNIQUE INDEX user_groups_unique ON user_groups (ug_user, ug_group);
+CREATE UNIQUE INDEX &mw_prefix.user_groups_u01 ON &mw_prefix.user_groups (ug_user,ug_group);
+CREATE INDEX &mw_prefix.user_groups_i01 ON &mw_prefix.user_groups (ug_group);
-CREATE TABLE user_newtalk (
- user_id INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
- user_ip VARCHAR(40) NULL
+CREATE TABLE &mw_prefix.user_newtalk (
+ user_id NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ user_ip VARCHAR2(40) NULL,
+ user_last_timestamp TIMESTAMP(6) WITH TIME ZONE
);
-CREATE INDEX user_newtalk_id_idx ON user_newtalk (user_id);
-CREATE INDEX user_newtalk_ip_idx ON user_newtalk (user_ip);
+CREATE INDEX &mw_prefix.user_newtalk_i01 ON &mw_prefix.user_newtalk (user_id);
+CREATE INDEX &mw_prefix.user_newtalk_i02 ON &mw_prefix.user_newtalk (user_ip);
-CREATE SEQUENCE page_page_id_seq;
-CREATE TABLE page (
- page_id INTEGER NOT NULL PRIMARY KEY,
- page_namespace SMALLINT NOT NULL,
- page_title VARCHAR(255) NOT NULL,
- page_restrictions CLOB,
- page_counter INTEGER DEFAULT 0 NOT NULL,
- page_is_redirect CHAR DEFAULT 0 NOT NULL,
- page_is_new CHAR DEFAULT 0 NOT NULL,
- page_random NUMERIC(15,14) NOT NULL,
- page_touched TIMESTAMP WITH TIME ZONE,
- page_latest INTEGER NOT NULL, -- FK?
- page_len INTEGER NOT NULL
-);
-CREATE UNIQUE INDEX page_unique_name ON page (page_namespace, page_title);
-CREATE INDEX page_random_idx ON page (page_random);
-CREATE INDEX page_len_idx ON page (page_len);
-
-CREATE TRIGGER page_set_random BEFORE INSERT ON page
- FOR EACH ROW WHEN (new.page_random IS NULL)
- BEGIN
- SELECT dbms_random.value INTO :new.page_random FROM dual;
- END;
-/
-
-CREATE SEQUENCE rev_rev_id_val;
-CREATE TABLE revision (
- rev_id INTEGER NOT NULL PRIMARY KEY,
- rev_page INTEGER NULL REFERENCES page (page_id) ON DELETE CASCADE,
- rev_text_id INTEGER NULL, -- FK
- rev_comment CLOB,
- rev_user INTEGER NOT NULL REFERENCES mwuser(user_id),
- rev_user_text VARCHAR(255) NOT NULL,
- rev_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- rev_minor_edit CHAR DEFAULT '0' NOT NULL,
- rev_deleted CHAR DEFAULT '0' NOT NULL,
- rev_len INTEGER NULL,
- rev_parent_id INTEGER DEFAULT NULL
-);
-CREATE UNIQUE INDEX revision_unique ON revision (rev_page, rev_id);
-CREATE INDEX rev_text_id_idx ON revision (rev_text_id);
-CREATE INDEX rev_timestamp_idx ON revision (rev_timestamp);
-CREATE INDEX rev_user_idx ON revision (rev_user);
-CREATE INDEX rev_user_text_idx ON revision (rev_user_text);
-
-
-CREATE SEQUENCE text_old_id_val;
-CREATE TABLE pagecontent ( -- replaces reserved word 'text'
- old_id INTEGER NOT NULL PRIMARY KEY,
- old_text CLOB,
- old_flags CLOB
+CREATE TABLE &mw_prefix.user_properties (
+ up_user NUMBER NOT NULL,
+ up_property VARCHAR2(32) NOT NULL,
+ up_value CLOB
);
+CREATE UNIQUE INDEX &mw_prefix.user_properties_u01 on &mw_prefix.user_properties (up_user,up_property);
+CREATE INDEX &mw_prefix.user_properties_i01 on &mw_prefix.user_properties (up_property);
-CREATE SEQUENCE pr_id_val;
-CREATE TABLE page_restrictions (
- pr_id INTEGER NOT NULL UNIQUE,
- pr_page INTEGER NULL REFERENCES page (page_id) ON DELETE CASCADE,
- pr_type VARCHAR(255) NOT NULL,
- pr_level VARCHAR(255) NOT NULL,
- pr_cascade SMALLINT NOT NULL,
- pr_user INTEGER NULL,
- pr_expiry TIMESTAMP WITH TIME ZONE NULL
+CREATE SEQUENCE page_page_id_seq;
+CREATE TABLE &mw_prefix.page (
+ page_id NUMBER NOT NULL,
+ page_namespace NUMBER NOT NULL,
+ page_title VARCHAR2(255) NOT NULL,
+ page_restrictions VARCHAR2(255),
+ page_counter NUMBER DEFAULT 0 NOT NULL,
+ page_is_redirect CHAR(1) DEFAULT 0 NOT NULL,
+ page_is_new CHAR(1) DEFAULT 0 NOT NULL,
+ page_random NUMBER(15,14) NOT NULL,
+ page_touched TIMESTAMP(6) WITH TIME ZONE,
+ page_latest NUMBER NOT NULL, -- FK?
+ page_len NUMBER NOT NULL
+);
+ALTER TABLE &mw_prefix.page ADD CONSTRAINT &mw_prefix.page_pk PRIMARY KEY (page_id);
+CREATE UNIQUE INDEX &mw_prefix.page_u01 ON &mw_prefix.page (page_namespace,page_title);
+CREATE INDEX &mw_prefix.page_i01 ON &mw_prefix.page (page_random);
+CREATE INDEX &mw_prefix.page_i02 ON &mw_prefix.page (page_len);
+
+/*$mw$*/
+CREATE TRIGGER &mw_prefix.page_set_random BEFORE INSERT ON &mw_prefix.page
+ FOR EACH ROW WHEN (new.page_random IS NULL)
+BEGIN
+ SELECT dbms_random.value INTO :NEW.page_random FROM dual;
+END;
+/*$mw$*/
+
+CREATE SEQUENCE revision_rev_id_seq;
+CREATE TABLE &mw_prefix.revision (
+ rev_id NUMBER NOT NULL,
+ rev_page NUMBER NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ rev_text_id NUMBER NULL,
+ rev_comment VARCHAR2(255),
+ rev_user NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id),
+ rev_user_text VARCHAR2(255) NOT NULL,
+ rev_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ rev_minor_edit CHAR(1) DEFAULT '0' NOT NULL,
+ rev_deleted CHAR(1) DEFAULT '0' NOT NULL,
+ rev_len NUMBER NULL,
+ rev_parent_id NUMBER DEFAULT NULL
+);
+ALTER TABLE &mw_prefix.revision ADD CONSTRAINT &mw_prefix.revision_pk PRIMARY KEY (rev_id);
+CREATE UNIQUE INDEX &mw_prefix.revision_u01 ON &mw_prefix.revision (rev_page, rev_id);
+CREATE INDEX &mw_prefix.revision_i01 ON &mw_prefix.revision (rev_timestamp);
+CREATE INDEX &mw_prefix.revision_i02 ON &mw_prefix.revision (rev_page,rev_timestamp);
+CREATE INDEX &mw_prefix.revision_i03 ON &mw_prefix.revision (rev_user,rev_timestamp);
+CREATE INDEX &mw_prefix.revision_i04 ON &mw_prefix.revision (rev_user_text,rev_timestamp);
+
+CREATE SEQUENCE text_old_id_seq;
+CREATE TABLE &mw_prefix.pagecontent ( -- replaces reserved word 'text'
+ old_id NUMBER NOT NULL,
+ old_text CLOB,
+ old_flags VARCHAR2(255)
);
-ALTER TABLE page_restrictions ADD CONSTRAINT page_restrictions_pk PRIMARY KEY (pr_page,pr_type);
+ALTER TABLE &mw_prefix.pagecontent ADD CONSTRAINT &mw_prefix.pagecontent_pk PRIMARY KEY (old_id);
-CREATE TABLE archive (
- ar_namespace SMALLINT NOT NULL,
- ar_title VARCHAR(255) NOT NULL,
+CREATE TABLE &mw_prefix.archive (
+ ar_namespace NUMBER NOT NULL,
+ ar_title VARCHAR2(255) NOT NULL,
ar_text CLOB,
- ar_comment CLOB,
- ar_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- ar_user_text CLOB NOT NULL,
- ar_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- ar_minor_edit CHAR DEFAULT '0' NOT NULL,
- ar_flags CLOB,
- ar_rev_id INTEGER,
- ar_text_id INTEGER,
- ar_deleted INTEGER DEFAULT '0' NOT NULL
-);
-CREATE INDEX archive_name_title_timestamp ON archive (ar_namespace,ar_title,ar_timestamp);
-
-CREATE TABLE redirect (
- rd_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- rd_namespace SMALLINT NOT NULL,
- rd_title VARCHAR(255) NOT NULL
-);
-CREATE INDEX redirect_ns_title ON redirect (rd_namespace,rd_title,rd_from);
-
-
-CREATE TABLE pagelinks (
- pl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- pl_namespace SMALLINT NOT NULL,
- pl_title VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX pagelink_unique ON pagelinks (pl_from,pl_namespace,pl_title);
-
-CREATE TABLE templatelinks (
- tl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- tl_namespace INTEGER NOT NULL,
- tl_title VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX templatelinks_unique ON templatelinks (tl_namespace,tl_title,tl_from);
-
-CREATE TABLE imagelinks (
- il_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- il_to VARCHAR(255) NOT NULL
-);
-CREATE UNIQUE INDEX il_from ON imagelinks (il_to,il_from);
-
-CREATE TABLE categorylinks (
- cl_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- cl_to VARCHAR(255) NOT NULL,
- cl_sortkey VARCHAR(86),
- cl_timestamp TIMESTAMP WITH TIME ZONE NOT NULL
-);
-CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to);
-CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey);
-
-CREATE TABLE externallinks (
- el_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
- el_to VARCHAR(2048) NOT NULL,
- el_index CLOB NOT NULL
-);
--- XXX CREATE INDEX externallinks_from_to ON externallinks (el_from,el_to);
--- XXX CREATE INDEX externallinks_index ON externallinks (el_index);
-
-CREATE TABLE langlinks (
- ll_from INTEGER NOT NULL REFERENCES page (page_id) ON DELETE CASCADE,
- ll_lang VARCHAR(10),
- ll_title VARCHAR(255)
-);
-CREATE UNIQUE INDEX langlinks_unique ON langlinks (ll_from,ll_lang);
-CREATE INDEX langlinks_lang_title ON langlinks (ll_lang,ll_title);
-
-
-CREATE TABLE site_stats (
- ss_row_id INTEGER NOT NULL UNIQUE,
- ss_total_views INTEGER DEFAULT 0,
- ss_total_edits INTEGER DEFAULT 0,
- ss_good_articles INTEGER DEFAULT 0,
- ss_total_pages INTEGER DEFAULT -1,
- ss_users INTEGER DEFAULT -1,
- ss_admins INTEGER DEFAULT -1,
- ss_images INTEGER DEFAULT 0
-);
-
-CREATE TABLE hitcounter (
- hc_id INTEGER NOT NULL
-);
-
-
-CREATE SEQUENCE ipblocks_ipb_id_val;
-CREATE TABLE ipblocks (
- ipb_id INTEGER NOT NULL PRIMARY KEY,
- ipb_address VARCHAR(255) NULL,
- ipb_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- ipb_by INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
- ipb_reason VARCHAR(255) NOT NULL,
- ipb_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- ipb_auto CHAR DEFAULT '0' NOT NULL,
- ipb_anon_only CHAR DEFAULT '0' NOT NULL,
- ipb_create_account CHAR DEFAULT '1' NOT NULL,
- ipb_enable_autoblock CHAR DEFAULT '1' NOT NULL,
- ipb_expiry TIMESTAMP WITH TIME ZONE NOT NULL,
- ipb_range_start CHAR(8),
- ipb_range_end CHAR(8),
- ipb_deleted INTEGER DEFAULT '0' NOT NULL
-);
-CREATE INDEX ipb_address ON ipblocks (ipb_address);
-CREATE INDEX ipb_user ON ipblocks (ipb_user);
-CREATE INDEX ipb_range ON ipblocks (ipb_range_start,ipb_range_end);
-
-
-CREATE TABLE image (
- img_name VARCHAR(255) NOT NULL PRIMARY KEY,
- img_size INTEGER NOT NULL,
- img_width INTEGER NOT NULL,
- img_height INTEGER NOT NULL,
+ ar_comment VARCHAR2(255),
+ ar_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ ar_user_text VARCHAR2(255) NOT NULL,
+ ar_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ ar_minor_edit CHAR(1) DEFAULT '0' NOT NULL,
+ ar_flags VARCHAR2(255),
+ ar_rev_id NUMBER,
+ ar_text_id NUMBER,
+ ar_deleted NUMBER DEFAULT '0' NOT NULL,
+ ar_len NUMBER,
+ ar_page_id NUMBER,
+ ar_parent_id NUMBER
+);
+CREATE INDEX &mw_prefix.archive_i01 ON &mw_prefix.archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX &mw_prefix.archive_i02 ON &mw_prefix.archive (ar_user_text,ar_timestamp);
+
+
+CREATE TABLE &mw_prefix.pagelinks (
+ pl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ pl_namespace NUMBER NOT NULL,
+ pl_title VARCHAR2(255) NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.pagelinks_u01 ON &mw_prefix.pagelinks (pl_from,pl_namespace,pl_title);
+CREATE UNIQUE INDEX &mw_prefix.pagelinks_u02 ON &mw_prefix.pagelinks (pl_namespace,pl_title,pl_from);
+
+CREATE TABLE &mw_prefix.templatelinks (
+ tl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ tl_namespace NUMBER NOT NULL,
+ tl_title VARCHAR2(255) NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.templatelinks_u01 ON &mw_prefix.templatelinks (tl_from,tl_namespace,tl_title);
+CREATE UNIQUE INDEX &mw_prefix.templatelinks_u02 ON &mw_prefix.templatelinks (tl_namespace,tl_title,tl_from);
+
+CREATE TABLE &mw_prefix.imagelinks (
+ il_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ il_to VARCHAR2(255) NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.imagelinks_u01 ON &mw_prefix.imagelinks (il_from,il_to);
+CREATE UNIQUE INDEX &mw_prefix.imagelinks_u02 ON &mw_prefix.imagelinks (il_to,il_from);
+
+
+CREATE TABLE &mw_prefix.categorylinks (
+ cl_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ cl_to VARCHAR2(255) NOT NULL,
+ cl_sortkey VARCHAR2(255),
+ cl_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.categorylinks_u01 ON &mw_prefix.categorylinks (cl_from,cl_to);
+CREATE INDEX &mw_prefix.categorylinks_i01 ON &mw_prefix.categorylinks (cl_to,cl_sortkey,cl_from);
+CREATE INDEX &mw_prefix.categorylinks_i02 ON &mw_prefix.categorylinks (cl_to,cl_timestamp);
+
+CREATE SEQUENCE category_cat_id_seq;
+CREATE TABLE &mw_prefix.category (
+ cat_id NUMBER NOT NULL,
+ cat_title VARCHAR2(255) NOT NULL,
+ cat_pages NUMBER DEFAULT 0 NOT NULL,
+ cat_subcats NUMBER DEFAULT 0 NOT NULL,
+ cat_files NUMBER DEFAULT 0 NOT NULL,
+ cat_hidden NUMBER DEFAULT 0 NOT NULL
+);
+ALTER TABLE &mw_prefix.category ADD CONSTRAINT &mw_prefix.category_pk PRIMARY KEY (cat_id);
+CREATE UNIQUE INDEX &mw_prefix.category_u01 ON &mw_prefix.category (cat_title);
+CREATE INDEX &mw_prefix.category_i01 ON &mw_prefix.category (cat_pages);
+
+CREATE TABLE &mw_prefix.externallinks (
+ el_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ el_to VARCHAR2(2048) NOT NULL,
+ el_index VARCHAR2(2048) NOT NULL
+);
+CREATE INDEX &mw_prefix.externallinks_i01 ON &mw_prefix.externallinks (el_from, el_to);
+CREATE INDEX &mw_prefix.externallinks_i02 ON &mw_prefix.externallinks (el_to, el_from);
+CREATE INDEX &mw_prefix.externallinks_i03 ON &mw_prefix.externallinks (el_index);
+
+CREATE TABLE &mw_prefix.external_user (
+ eu_local_id NUMBER NOT NULL,
+ eu_external_id varchar2(255) NOT NULL
+);
+ALTER TABLE &mw_prefix.external_user ADD CONSTRAINT &mw_prefix.external_user_pk PRIMARY KEY (eu_local_id);
+CREATE UNIQUE INDEX &mw_prefix.external_user_u01 ON &mw_prefix.external_user (eu_external_id);
+
+CREATE TABLE &mw_prefix.langlinks (
+ ll_from NUMBER NOT NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ ll_lang VARCHAR2(20),
+ ll_title VARCHAR2(255)
+);
+CREATE UNIQUE INDEX &mw_prefix.langlinks_u01 ON &mw_prefix.langlinks (ll_from, ll_lang);
+CREATE INDEX &mw_prefix.langlinks_i01 ON &mw_prefix.langlinks (ll_lang, ll_title);
+
+CREATE TABLE &mw_prefix.site_stats (
+ ss_row_id NUMBER NOT NULL ,
+ ss_total_views NUMBER DEFAULT 0,
+ ss_total_edits NUMBER DEFAULT 0,
+ ss_good_articles NUMBER DEFAULT 0,
+ ss_total_pages NUMBER DEFAULT -1,
+ ss_users NUMBER DEFAULT -1,
+ ss_active_users NUMBER DEFAULT -1,
+ ss_admins NUMBER DEFAULT -1,
+ ss_images NUMBER DEFAULT 0
+);
+CREATE UNIQUE INDEX &mw_prefix.site_stats_u01 ON &mw_prefix.site_stats (ss_row_id);
+
+CREATE TABLE &mw_prefix.hitcounter (
+ hc_id NUMBER NOT NULL
+);
+
+CREATE SEQUENCE ipblocks_ipb_id_seq;
+CREATE TABLE &mw_prefix.ipblocks (
+ ipb_id NUMBER NOT NULL,
+ ipb_address VARCHAR2(255) NULL,
+ ipb_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ ipb_by NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ ipb_by_text VARCHAR2(255) NOT NULL,
+ ipb_reason VARCHAR2(255) NOT NULL,
+ ipb_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ ipb_auto CHAR(1) DEFAULT '0' NOT NULL,
+ ipb_anon_only CHAR(1) DEFAULT '0' NOT NULL,
+ ipb_create_account CHAR(1) DEFAULT '1' NOT NULL,
+ ipb_enable_autoblock CHAR(1) DEFAULT '1' NOT NULL,
+ ipb_expiry TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ ipb_range_start VARCHAR2(255),
+ ipb_range_end VARCHAR2(255),
+ ipb_deleted CHAR(1) DEFAULT '0' NOT NULL,
+ ipb_block_email CHAR(1) DEFAULT '0' NOT NULL,
+ ipb_allow_usertalk CHAR(1) DEFAULT '0' NOT NULL
+);
+ALTER TABLE &mw_prefix.ipblocks ADD CONSTRAINT &mw_prefix.ipblocks_pk PRIMARY KEY (ipb_id);
+CREATE UNIQUE INDEX &mw_prefix.ipblocks_u01 ON &mw_prefix.ipblocks (ipb_address, ipb_user, ipb_auto, ipb_anon_only);
+CREATE INDEX &mw_prefix.ipblocks_i01 ON &mw_prefix.ipblocks (ipb_user);
+CREATE INDEX &mw_prefix.ipblocks_i02 ON &mw_prefix.ipblocks (ipb_range_start, ipb_range_end);
+CREATE INDEX &mw_prefix.ipblocks_i03 ON &mw_prefix.ipblocks (ipb_timestamp);
+CREATE INDEX &mw_prefix.ipblocks_i04 ON &mw_prefix.ipblocks (ipb_expiry);
+
+CREATE TABLE &mw_prefix.image (
+ img_name VARCHAR2(255) NOT NULL,
+ img_size NUMBER NOT NULL,
+ img_width NUMBER NOT NULL,
+ img_height NUMBER NOT NULL,
img_metadata CLOB,
- img_bits SMALLINT,
- img_media_type CLOB,
- img_major_mime CLOB DEFAULT 'unknown',
- img_minor_mime CLOB DEFAULT 'unknown',
- img_description CLOB,
- img_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- img_user_text CLOB NOT NULL,
- img_timestamp TIMESTAMP WITH TIME ZONE
-);
-CREATE INDEX img_size_idx ON image (img_size);
-CREATE INDEX img_timestamp_idx ON image (img_timestamp);
-
-CREATE TABLE oldimage (
- oi_name VARCHAR(255) NOT NULL REFERENCES image(img_name),
- oi_archive_name VARCHAR(255),
- oi_size INTEGER NOT NULL,
- oi_width INTEGER NOT NULL,
- oi_height INTEGER NOT NULL,
- oi_bits SMALLINT NOT NULL,
- oi_description CLOB,
- oi_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- oi_user_text CLOB NOT NULL,
- oi_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- oi_metadata CLOB,
- oi_media_type VARCHAR(10) DEFAULT NULL,
- oi_major_mime VARCHAR(11) DEFAULT 'unknown',
- oi_minor_mime VARCHAR(32) DEFAULT 'unknown',
- oi_deleted INTEGER DEFAULT 0 NOT NULL
-);
-CREATE INDEX oi_name_timestamp ON oldimage (oi_name,oi_timestamp);
-CREATE INDEX oi_name_archive_name ON oldimage (oi_name,oi_archive_name);
+ img_bits NUMBER,
+ img_media_type VARCHAR2(32),
+ img_major_mime VARCHAR2(32) DEFAULT 'unknown',
+ img_minor_mime VARCHAR2(100) DEFAULT 'unknown',
+ img_description VARCHAR2(255),
+ img_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ img_user_text VARCHAR2(255) NOT NULL,
+ img_timestamp TIMESTAMP(6) WITH TIME ZONE,
+ img_sha1 VARCHAR2(32)
+);
+ALTER TABLE &mw_prefix.image ADD CONSTRAINT &mw_prefix.image_pk PRIMARY KEY (img_name);
+CREATE INDEX &mw_prefix.image_i01 ON &mw_prefix.image (img_user_text,img_timestamp);
+CREATE INDEX &mw_prefix.image_i02 ON &mw_prefix.image (img_size);
+CREATE INDEX &mw_prefix.image_i03 ON &mw_prefix.image (img_timestamp);
+CREATE INDEX &mw_prefix.image_i04 ON &mw_prefix.image (img_sha1);
+
+
+CREATE TABLE &mw_prefix.oldimage (
+ oi_name VARCHAR2(255) NOT NULL REFERENCES &mw_prefix.image(img_name),
+ oi_archive_name VARCHAR2(255),
+ oi_size NUMBER NOT NULL,
+ oi_width NUMBER NOT NULL,
+ oi_height NUMBER NOT NULL,
+ oi_bits NUMBER NOT NULL,
+ oi_description VARCHAR2(255),
+ oi_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ oi_user_text VARCHAR2(255) NOT NULL,
+ oi_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ oi_metadata CLOB,
+ oi_media_type VARCHAR2(32) DEFAULT NULL,
+ oi_major_mime VARCHAR2(32) DEFAULT 'unknown',
+ oi_minor_mime VARCHAR2(100) DEFAULT 'unknown',
+ oi_deleted NUMBER DEFAULT 0 NOT NULL,
+ oi_sha1 VARCHAR2(32)
+);
+CREATE INDEX &mw_prefix.oldimage_i01 ON &mw_prefix.oldimage (oi_user_text,oi_timestamp);
+CREATE INDEX &mw_prefix.oldimage_i02 ON &mw_prefix.oldimage (oi_name,oi_timestamp);
+CREATE INDEX &mw_prefix.oldimage_i03 ON &mw_prefix.oldimage (oi_name,oi_archive_name);
+CREATE INDEX &mw_prefix.oldimage_i04 ON &mw_prefix.oldimage (oi_sha1);
+
CREATE SEQUENCE filearchive_fa_id_seq;
-CREATE TABLE filearchive (
- fa_id INTEGER NOT NULL PRIMARY KEY,
- fa_name VARCHAR(255) NOT NULL,
- fa_archive_name VARCHAR(255),
- fa_storage_group VARCHAR(16),
- fa_storage_key CHAR(64),
- fa_deleted_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- fa_deleted_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
+CREATE TABLE &mw_prefix.filearchive (
+ fa_id NUMBER NOT NULL,
+ fa_name VARCHAR2(255) NOT NULL,
+ fa_archive_name VARCHAR2(255),
+ fa_storage_group VARCHAR2(16),
+ fa_storage_key VARCHAR2(64),
+ fa_deleted_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ fa_deleted_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
fa_deleted_reason CLOB,
- fa_size SMALLINT NOT NULL,
- fa_width SMALLINT NOT NULL,
- fa_height SMALLINT NOT NULL,
+ fa_size NUMBER NOT NULL,
+ fa_width NUMBER NOT NULL,
+ fa_height NUMBER NOT NULL,
fa_metadata CLOB,
- fa_bits SMALLINT,
- fa_media_type CLOB,
- fa_major_mime CLOB DEFAULT 'unknown',
- fa_minor_mime CLOB DEFAULT 'unknown',
- fa_description CLOB NOT NULL,
- fa_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- fa_user_text CLOB NOT NULL,
- fa_timestamp TIMESTAMP WITH TIME ZONE,
- fa_deleted INTEGER DEFAULT '0' NOT NULL
-);
-CREATE INDEX fa_name_time ON filearchive (fa_name, fa_timestamp);
-CREATE INDEX fa_dupe ON filearchive (fa_storage_group, fa_storage_key);
-CREATE INDEX fa_notime ON filearchive (fa_deleted_timestamp);
-CREATE INDEX fa_nouser ON filearchive (fa_deleted_user);
-
-
-CREATE SEQUENCE rc_rc_id_seq;
-CREATE TABLE recentchanges (
- rc_id INTEGER NOT NULL PRIMARY KEY,
- rc_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- rc_cur_time TIMESTAMP WITH TIME ZONE NOT NULL,
- rc_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
- rc_user_text CLOB NOT NULL,
- rc_namespace SMALLINT NOT NULL,
- rc_title VARCHAR(255) NOT NULL,
- rc_comment VARCHAR(255),
- rc_minor CHAR DEFAULT '0' NOT NULL,
- rc_bot CHAR DEFAULT '0' NOT NULL,
- rc_new CHAR DEFAULT '0' NOT NULL,
- rc_cur_id INTEGER NULL REFERENCES page(page_id) ON DELETE SET NULL,
- rc_this_oldid INTEGER NOT NULL,
- rc_last_oldid INTEGER NOT NULL,
- rc_type CHAR DEFAULT '0' NOT NULL,
- rc_moved_to_ns SMALLINT,
- rc_moved_to_title CLOB,
- rc_patrolled CHAR DEFAULT '0' NOT NULL,
- rc_ip VARCHAR(15),
- rc_old_len INTEGER,
- rc_new_len INTEGER,
- rc_deleted INTEGER DEFAULT '0' NOT NULL,
- rc_logid INTEGER DEFAULT '0' NOT NULL,
- rc_log_type CLOB,
- rc_log_action CLOB,
- rc_params CLOB
-);
-CREATE INDEX rc_timestamp ON recentchanges (rc_timestamp);
-CREATE INDEX rc_namespace_title ON recentchanges (rc_namespace, rc_title);
-CREATE INDEX rc_cur_id ON recentchanges (rc_cur_id);
-CREATE INDEX new_name_timestamp ON recentchanges (rc_new, rc_namespace, rc_timestamp);
-CREATE INDEX rc_ip ON recentchanges (rc_ip);
-
-
-CREATE TABLE watchlist (
- wl_user INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
- wl_namespace SMALLINT DEFAULT 0 NOT NULL,
- wl_title VARCHAR(255) NOT NULL,
- wl_notificationtimestamp TIMESTAMP WITH TIME ZONE
-);
-CREATE UNIQUE INDEX wl_user_namespace_title ON watchlist (wl_namespace, wl_title, wl_user);
-
-
-CREATE TABLE math (
- math_inputhash VARCHAR(16) NOT NULL UNIQUE,
- math_outputhash VARCHAR(16) NOT NULL,
- math_html_conservativeness SMALLINT NOT NULL,
+ fa_bits NUMBER,
+ fa_media_type VARCHAR2(32) DEFAULT NULL,
+ fa_major_mime VARCHAR2(32) DEFAULT 'unknown',
+ fa_minor_mime VARCHAR2(100) DEFAULT 'unknown',
+ fa_description VARCHAR2(255),
+ fa_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ fa_user_text VARCHAR2(255) NOT NULL,
+ fa_timestamp TIMESTAMP(6) WITH TIME ZONE,
+ fa_deleted NUMBER DEFAULT '0' NOT NULL
+);
+ALTER TABLE &mw_prefix.filearchive ADD CONSTRAINT &mw_prefix.filearchive_pk PRIMARY KEY (fa_id);
+CREATE INDEX &mw_prefix.filearchive_i01 ON &mw_prefix.filearchive (fa_name, fa_timestamp);
+CREATE INDEX &mw_prefix.filearchive_i02 ON &mw_prefix.filearchive (fa_storage_group, fa_storage_key);
+CREATE INDEX &mw_prefix.filearchive_i03 ON &mw_prefix.filearchive (fa_deleted_timestamp);
+CREATE INDEX &mw_prefix.filearchive_i04 ON &mw_prefix.filearchive (fa_user_text,fa_timestamp);
+
+CREATE SEQUENCE recentchanges_rc_id_seq;
+CREATE TABLE &mw_prefix.recentchanges (
+ rc_id NUMBER NOT NULL,
+ rc_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ rc_cur_time TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ rc_user NUMBER NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ rc_user_text VARCHAR2(255) NOT NULL,
+ rc_namespace NUMBER NOT NULL,
+ rc_title VARCHAR2(255) NOT NULL,
+ rc_comment VARCHAR2(255),
+ rc_minor CHAR(1) DEFAULT '0' NOT NULL,
+ rc_bot CHAR(1) DEFAULT '0' NOT NULL,
+ rc_new CHAR(1) DEFAULT '0' NOT NULL,
+ rc_cur_id NUMBER NULL REFERENCES &mw_prefix.page(page_id) ON DELETE SET NULL,
+ rc_this_oldid NUMBER NOT NULL,
+ rc_last_oldid NUMBER NOT NULL,
+ rc_type CHAR(1) DEFAULT '0' NOT NULL,
+ rc_moved_to_ns NUMBER,
+ rc_moved_to_title VARCHAR2(255),
+ rc_patrolled CHAR(1) DEFAULT '0' NOT NULL,
+ rc_ip VARCHAR2(15),
+ rc_old_len NUMBER,
+ rc_new_len NUMBER,
+ rc_deleted NUMBER DEFAULT '0' NOT NULL,
+ rc_logid NUMBER DEFAULT '0' NOT NULL,
+ rc_log_type VARCHAR2(255),
+ rc_log_action VARCHAR2(255),
+ rc_params CLOB
+);
+ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_pk PRIMARY KEY (rc_id);
+CREATE INDEX &mw_prefix.recentchanges_i01 ON &mw_prefix.recentchanges (rc_timestamp);
+CREATE INDEX &mw_prefix.recentchanges_i02 ON &mw_prefix.recentchanges (rc_namespace, rc_title);
+CREATE INDEX &mw_prefix.recentchanges_i03 ON &mw_prefix.recentchanges (rc_cur_id);
+CREATE INDEX &mw_prefix.recentchanges_i04 ON &mw_prefix.recentchanges (rc_new,rc_namespace,rc_timestamp);
+CREATE INDEX &mw_prefix.recentchanges_i05 ON &mw_prefix.recentchanges (rc_ip);
+CREATE INDEX &mw_prefix.recentchanges_i06 ON &mw_prefix.recentchanges (rc_namespace, rc_user_text);
+CREATE INDEX &mw_prefix.recentchanges_i07 ON &mw_prefix.recentchanges (rc_user_text, rc_timestamp);
+
+CREATE TABLE &mw_prefix.watchlist (
+ wl_user NUMBER NOT NULL REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE,
+ wl_namespace NUMBER DEFAULT 0 NOT NULL,
+ wl_title VARCHAR2(255) NOT NULL,
+ wl_notificationtimestamp TIMESTAMP(6) WITH TIME ZONE
+);
+CREATE UNIQUE INDEX &mw_prefix.watchlist_u01 ON &mw_prefix.watchlist (wl_user, wl_namespace, wl_title);
+CREATE INDEX &mw_prefix.watchlist_i01 ON &mw_prefix.watchlist (wl_namespace, wl_title);
+
+
+CREATE TABLE &mw_prefix.math (
+ math_inputhash VARCHAR2(32) NOT NULL,
+ math_outputhash VARCHAR2(32) NOT NULL,
+ math_html_conservativeness NUMBER NOT NULL,
math_html CLOB,
math_mathml CLOB
);
+CREATE UNIQUE INDEX &mw_prefix.math_u01 ON &mw_prefix.math (math_inputhash);
-
-CREATE TABLE interwiki (
- iw_prefix VARCHAR(32) NOT NULL UNIQUE,
- iw_url VARCHAR(127) NOT NULL,
- iw_local CHAR NOT NULL,
- iw_trans CHAR DEFAULT '0' NOT NULL
-);
-
-CREATE TABLE querycache (
- qc_type CHAR(32) NOT NULL,
- qc_value SMALLINT NOT NULL,
- qc_namespace SMALLINT NOT NULL,
- qc_title CHAR(255) NOT NULL
+CREATE TABLE &mw_prefix.searchindex (
+ si_page NUMBER NOT NULL,
+ si_title VARCHAR2(255) DEFAULT '' NOT NULL,
+ si_text CLOB NOT NULL
);
-CREATE INDEX querycache_type_value ON querycache (qc_type, qc_value);
+CREATE UNIQUE INDEX &mw_prefix.searchindex_u01 ON &mw_prefix.searchindex (si_page);
-CREATE TABLE querycache_info (
- qci_type VARCHAR(32) UNIQUE,
- qci_timestamp TIMESTAMP WITH TIME ZONE NULL
+CREATE TABLE &mw_prefix.interwiki (
+ iw_prefix VARCHAR2(32) NOT NULL,
+ iw_url VARCHAR2(127) NOT NULL,
+ iw_local CHAR(1) NOT NULL,
+ iw_trans CHAR(1) DEFAULT '0' NOT NULL
);
+CREATE UNIQUE INDEX &mw_prefix.interwiki_u01 ON &mw_prefix.interwiki (iw_prefix);
-CREATE TABLE querycachetwo (
- qcc_type CHAR(32) NOT NULL,
- qcc_value SMALLINT DEFAULT 0 NOT NULL,
- qcc_namespace INTEGER DEFAULT 0 NOT NULL,
- qcc_title CHAR(255) DEFAULT '' NOT NULL,
- qcc_namespacetwo INTEGER DEFAULT 0 NOT NULL,
- qcc_titletwo CHAR(255) DEFAULT '' NOT NULL
+CREATE TABLE &mw_prefix.querycache (
+ qc_type VARCHAR2(32) NOT NULL,
+ qc_value NUMBER NOT NULL,
+ qc_namespace NUMBER NOT NULL,
+ qc_title VARCHAR2(255) NOT NULL
);
-CREATE INDEX querycachetwo_type_value ON querycachetwo (qcc_type, qcc_value);
-CREATE INDEX querycachetwo_title ON querycachetwo (qcc_type,qcc_namespace,qcc_title);
-CREATE INDEX querycachetwo_titletwo ON querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
-
+CREATE INDEX &mw_prefix.querycache_u01 ON &mw_prefix.querycache (qc_type,qc_value);
-CREATE TABLE objectcache (
- keyname CHAR(255) UNIQUE,
+CREATE TABLE &mw_prefix.objectcache (
+ keyname VARCHAR2(255) ,
value BLOB,
- exptime TIMESTAMP WITH TIME ZONE NOT NULL
+ exptime TIMESTAMP(6) WITH TIME ZONE NOT NULL
);
-CREATE INDEX objectcacache_exptime ON objectcache (exptime);
+CREATE INDEX &mw_prefix.objectcache_i01 ON &mw_prefix.objectcache (exptime);
-CREATE TABLE transcache (
- tc_url VARCHAR(255) NOT NULL UNIQUE,
+CREATE TABLE &mw_prefix.transcache (
+ tc_url VARCHAR2(255) NOT NULL,
tc_contents CLOB NOT NULL,
- tc_time TIMESTAMP WITH TIME ZONE NOT NULL
+ tc_time TIMESTAMP(6) WITH TIME ZONE NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.transcache_u01 ON &mw_prefix.transcache (tc_url);
+
+
+CREATE SEQUENCE logging_log_id_seq;
+CREATE TABLE &mw_prefix.logging (
+ log_id NUMBER NOT NULL,
+ log_type VARCHAR2(10) NOT NULL,
+ log_action VARCHAR2(10) NOT NULL,
+ log_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ log_user NUMBER REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL,
+ log_user_text VARCHAR2(255),
+ log_namespace NUMBER NOT NULL,
+ log_title VARCHAR2(255) NOT NULL,
+ log_page NUMBER,
+ log_comment VARCHAR2(255),
+ log_params CLOB,
+ log_deleted NUMBER DEFAULT '0' NOT NULL
);
+ALTER TABLE &mw_prefix.logging ADD CONSTRAINT &mw_prefix.logging_pk PRIMARY KEY (log_id);
+CREATE INDEX &mw_prefix.logging_i01 ON &mw_prefix.logging (log_type, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i02 ON &mw_prefix.logging (log_user, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i03 ON &mw_prefix.logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i04 ON &mw_prefix.logging (log_timestamp);
-
-CREATE SEQUENCE log_log_id_seq;
-CREATE TABLE logging (
- log_type VARCHAR(10) NOT NULL,
- log_action VARCHAR(10) NOT NULL,
- log_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
- log_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL,
- log_namespace SMALLINT NOT NULL,
- log_title VARCHAR(255) NOT NULL,
- log_comment VARCHAR(255),
- log_params CLOB,
- log_deleted INTEGER DEFAULT '0' NOT NULL,
- log_id INTEGER NOT NULL PRIMARY KEY
+CREATE TABLE &mw_prefix.log_search (
+ ls_field VARCHAR2(32) NOT NULL,
+ ls_value VARCHAR2(255) NOT NULL,
+ ls_log_id NuMBER DEFAULT 0 NOT NULL
);
-CREATE INDEX logging_type_name ON logging (log_type, log_timestamp);
-CREATE INDEX logging_user_time ON logging (log_timestamp, log_user);
-CREATE INDEX logging_page_time ON logging (log_namespace, log_title, log_timestamp);
+ALTER TABLE &mw_prefix.log_search ADD CONSTRAINT log_search_pk PRIMARY KEY (ls_field,ls_value,ls_log_id);
+CREATE INDEX &mw_prefix.log_search_i01 ON &mw_prefix.log_search (ls_log_id);
CREATE SEQUENCE trackbacks_tb_id_seq;
-CREATE TABLE trackbacks (
- tb_id INTEGER NOT NULL PRIMARY KEY,
- tb_page INTEGER REFERENCES page(page_id) ON DELETE CASCADE,
- tb_title VARCHAR(255) NOT NULL,
- tb_url VARCHAR(255) NOT NULL,
+CREATE TABLE &mw_prefix.trackbacks (
+ tb_id NUMBER NOT NULL,
+ tb_page NUMBER REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ tb_title VARCHAR2(255) NOT NULL,
+ tb_url VARCHAR2(255) NOT NULL,
tb_ex CLOB,
- tb_name VARCHAR(255)
+ tb_name VARCHAR2(255)
);
-CREATE INDEX trackback_page ON trackbacks (tb_page);
+ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_pk PRIMARY KEY (tb_id);
+CREATE INDEX &mw_prefix.trackbacks_i01 ON &mw_prefix.trackbacks (tb_page);
CREATE SEQUENCE job_job_id_seq;
-CREATE TABLE job (
- job_id INTEGER NOT NULL PRIMARY KEY,
- job_cmd VARCHAR(255) NOT NULL,
- job_namespace SMALLINT NOT NULL,
- job_title VARCHAR(255) NOT NULL,
+CREATE TABLE &mw_prefix.job (
+ job_id NUMBER NOT NULL,
+ job_cmd VARCHAR2(60) NOT NULL,
+ job_namespace NUMBER NOT NULL,
+ job_title VARCHAR2(255) NOT NULL,
job_params CLOB NOT NULL
);
-CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
+ALTER TABLE &mw_prefix.job ADD CONSTRAINT &mw_prefix.job_pk PRIMARY KEY (job_id);
+CREATE INDEX &mw_prefix.job_i01 ON &mw_prefix.job (job_cmd, job_namespace, job_title);
+
+CREATE TABLE &mw_prefix.querycache_info (
+ qci_type VARCHAR2(32) NOT NULL,
+ qci_timestamp TIMESTAMP(6) WITH TIME ZONE NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.querycache_info_u01 ON &mw_prefix.querycache_info (qci_type);
+
+CREATE TABLE &mw_prefix.redirect (
+ rd_from NUMBER NOT NULL REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE,
+ rd_namespace NUMBER NOT NULL,
+ rd_title VARCHAR2(255) NOT NULL,
+ rd_interwiki VARCHAR2(32),
+ rd_fragment VARCHAR2(255)
+);
+CREATE INDEX &mw_prefix.redirect_i01 ON &mw_prefix.redirect (rd_namespace,rd_title,rd_from);
+
+CREATE TABLE &mw_prefix.querycachetwo (
+ qcc_type VARCHAR2(32) NOT NULL,
+ qcc_value NUMBER DEFAULT 0 NOT NULL,
+ qcc_namespace NUMBER DEFAULT 0 NOT NULL,
+ qcc_title VARCHAR2(255) DEFAULT '' NOT NULL,
+ qcc_namespacetwo NUMBER DEFAULT 0 NOT NULL,
+ qcc_titletwo VARCHAR2(255) DEFAULT '' NOT NULL
+);
+CREATE INDEX &mw_prefix.querycachetwo_i01 ON &mw_prefix.querycachetwo (qcc_type,qcc_value);
+CREATE INDEX &mw_prefix.querycachetwo_i02 ON &mw_prefix.querycachetwo (qcc_type,qcc_namespace,qcc_title);
+CREATE INDEX &mw_prefix.querycachetwo_i03 ON &mw_prefix.querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
+
+CREATE SEQUENCE page_restrictions_pr_id_seq;
+CREATE TABLE &mw_prefix.page_restrictions (
+ pr_id NUMBER NOT NULL,
+ pr_page NUMBER NULL REFERENCES &mw_prefix.page (page_id) ON DELETE CASCADE,
+ pr_type VARCHAR2(255) NOT NULL,
+ pr_level VARCHAR2(255) NOT NULL,
+ pr_cascade NUMBER NOT NULL,
+ pr_user NUMBER NULL,
+ pr_expiry TIMESTAMP(6) WITH TIME ZONE NULL
+);
+ALTER TABLE &mw_prefix.page_restrictions ADD CONSTRAINT &mw_prefix.page_restrictions_pk PRIMARY KEY (pr_page,pr_type);
+CREATE INDEX &mw_prefix.page_restrictions_i01 ON &mw_prefix.page_restrictions (pr_type,pr_level);
+CREATE INDEX &mw_prefix.page_restrictions_i02 ON &mw_prefix.page_restrictions (pr_level);
+CREATE INDEX &mw_prefix.page_restrictions_i03 ON &mw_prefix.page_restrictions (pr_cascade);
+
+CREATE TABLE &mw_prefix.protected_titles (
+ pt_namespace NUMBER NOT NULL,
+ pt_title VARCHAR2(255) NOT NULL,
+ pt_user NUMBER NOT NULL,
+ pt_reason VARCHAR2(255),
+ pt_timestamp TIMESTAMP(6) WITH TIME ZONE NOT NULL,
+ pt_expiry VARCHAR2(14) NOT NULL,
+ pt_create_perm VARCHAR2(60) NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.protected_titles_u01 ON &mw_prefix.protected_titles (pt_namespace,pt_title);
+CREATE INDEX &mw_prefix.protected_titles_i01 ON &mw_prefix.protected_titles (pt_timestamp);
+
+CREATE TABLE &mw_prefix.page_props (
+ pp_page NUMBER NOT NULL,
+ pp_propname VARCHAR2(60) NOT NULL,
+ pp_value BLOB NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.page_props_u01 ON &mw_prefix.page_props (pp_page,pp_propname);
+
+
+CREATE TABLE &mw_prefix.updatelog (
+ ul_key VARCHAR2(255) NOT NULL
+);
+ALTER TABLE &mw_prefix.updatelog ADD CONSTRAINT &mw_prefix.updatelog_pk PRIMARY KEY (ul_key);
+
+CREATE TABLE &mw_prefix.change_tag (
+ ct_rc_id NUMBER NULL,
+ ct_log_id NUMBER NULL,
+ ct_rev_id NUMBER NULL,
+ ct_tag VARCHAR2(255) NOT NULL,
+ ct_params BLOB NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.change_tag_u01 ON &mw_prefix.change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX &mw_prefix.change_tag_u02 ON &mw_prefix.change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX &mw_prefix.change_tag_u03 ON &mw_prefix.change_tag (ct_rev_id,ct_tag);
+CREATE INDEX &mw_prefix.change_tag_i01 ON &mw_prefix.change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+
+CREATE TABLE &mw_prefix.tag_summary (
+ ts_rc_id NUMBER NULL,
+ ts_log_id NUMBER NULL,
+ ts_rev_id NUMBER NULL,
+ ts_tags BLOB NOT NULL
+);
+CREATE UNIQUE INDEX &mw_prefix.tag_summary_u01 ON &mw_prefix.tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX &mw_prefix.tag_summary_u02 ON &mw_prefix.tag_summary (ts_log_id);
+CREATE UNIQUE INDEX &mw_prefix.tag_summary_u03 ON &mw_prefix.tag_summary (ts_rev_id);
+
+CREATE TABLE &mw_prefix.valid_tag (
+ vt_tag VARCHAR2(255) NOT NULL
+);
+ALTER TABLE &mw_prefix.valid_tag ADD CONSTRAINT &mw_prefix.valid_tag_pk PRIMARY KEY (vt_tag);
-- This table is not used unless profiling is turned on
---CREATE TABLE profiling (
--- pf_count INTEGER DEFAULT 0 NOT NULL,
+--CREATE TABLE &mw_prefix.profiling (
+-- pf_count NUMBER DEFAULT 0 NOT NULL,
-- pf_time NUMERIC(18,10) DEFAULT 0 NOT NULL,
-- pf_name CLOB NOT NULL,
-- pf_server CLOB NULL
--);
---CREATE UNIQUE INDEX pf_name_server ON profiling (pf_name, pf_server);
-
-CREATE TABLE searchindex (
- si_page INTEGER UNIQUE NOT NULL,
- si_title VARCHAR(255) DEFAULT '' NOT NULL,
- si_text CLOB NOT NULL
-);
-
-
-CREATE INDEX si_title_idx ON searchindex(si_title) INDEXTYPE IS ctxsys.context;
-CREATE INDEX si_text_idx ON searchindex(si_text) INDEXTYPE IS ctxsys.context;
+--CREATE UNIQUE INDEX &mw_prefix.profiling_u01 ON &mw_prefix.profiling (pf_name, pf_server);
+
+CREATE INDEX si_title_idx ON &mw_prefix.searchindex(si_title) INDEXTYPE IS ctxsys.context;
+CREATE INDEX si_text_idx ON &mw_prefix.searchindex(si_text) INDEXTYPE IS ctxsys.context;
+
+CREATE TABLE &mw_prefix.l10n_cache (
+ lc_lang varchar2(32) NOT NULL,
+ lc_key varchar2(255) NOT NULL,
+ lc_value clob NOT NULL
+);
+CREATE INDEX &mw_prefix.l10n_cache_u01 ON &mw_prefix.l10n_cache (lc_lang, lc_key);
+
+-- do not prefix this table as it breaks parserTests
+CREATE TABLE wiki_field_info_full (
+table_name VARCHAR2(35) NOT NULL,
+column_name VARCHAR2(35) NOT NULL,
+data_default VARCHAR2(4000),
+data_length NUMBER NOT NULL,
+data_type VARCHAR2(106),
+not_null CHAR(1) NOT NULL,
+prim NUMBER(1),
+uniq NUMBER(1),
+nonuniq NUMBER(1)
+);
+ALTER TABLE wiki_field_info_full ADD CONSTRAINT wiki_field_info_full_pk PRIMARY KEY (table_name, column_name);
+
+/*$mw$*/
+CREATE PROCEDURE fill_wiki_info IS
+ BEGIN
+ DELETE wiki_field_info_full;
+
+ FOR x_rec IN (SELECT t.table_name table_name, t.column_name,
+ t.data_default, t.data_length, t.data_type,
+ DECODE (t.nullable, 'Y', '1', 'N', '0') not_null,
+ (SELECT 1
+ FROM user_cons_columns ucc,
+ user_constraints uc
+ WHERE ucc.table_name = t.table_name
+ AND ucc.column_name = t.column_name
+ AND uc.constraint_name = ucc.constraint_name
+ AND uc.constraint_type = 'P'
+ AND ROWNUM < 2) prim,
+ (SELECT 1
+ FROM user_ind_columns uic,
+ user_indexes ui
+ WHERE uic.table_name = t.table_name
+ AND uic.column_name = t.column_name
+ AND ui.index_name = uic.index_name
+ AND ui.uniqueness = 'UNIQUE'
+ AND ROWNUM < 2) uniq,
+ (SELECT 1
+ FROM user_ind_columns uic,
+ user_indexes ui
+ WHERE uic.table_name = t.table_name
+ AND uic.column_name = t.column_name
+ AND ui.index_name = uic.index_name
+ AND ui.uniqueness = 'NONUNIQUE'
+ AND ROWNUM < 2) nonuniq
+ FROM user_tab_columns t, user_tables ut
+ WHERE ut.table_name = t.table_name)
+ LOOP
+ INSERT INTO wiki_field_info_full
+ (table_name, column_name,
+ data_default, data_length,
+ data_type, not_null, prim,
+ uniq, nonuniq
+ )
+ VALUES (x_rec.table_name, x_rec.column_name,
+ x_rec.data_default, x_rec.data_length,
+ x_rec.data_type, x_rec.not_null, x_rec.prim,
+ x_rec.uniq, x_rec.nonuniq
+ );
+ END LOOP;
+ COMMIT;
+END;
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE PROCEDURE duplicate_table(p_tabname IN VARCHAR2,
+ p_oldprefix IN VARCHAR2,
+ p_newprefix IN VARCHAR2,
+ p_temporary IN BOOLEAN) IS
+ e_table_not_exist EXCEPTION;
+ PRAGMA EXCEPTION_INIT(e_table_not_exist, -00942);
+BEGIN
+ BEGIN
+ EXECUTE IMMEDIATE 'DROP TABLE ' || p_newprefix || p_tabname ||
+ ' CASCADE CONSTRAINTS';
+ EXCEPTION
+ WHEN e_table_not_exist THEN
+ NULL;
+ END;
+ IF (p_temporary) THEN
+ EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE ' || p_newprefix ||
+ p_tabname || ' AS SELECT * FROM ' || p_oldprefix ||
+ p_tabname || ' WHERE ROWNUM = 0';
+ ELSE
+ EXECUTE IMMEDIATE 'CREATE TABLE ' || p_newprefix || p_tabname ||
+ ' AS SELECT * FROM ' || p_oldprefix || p_tabname ||
+ ' WHERE ROWNUM = 0';
+ END IF;
+ FOR rc IN (SELECT column_name, data_default
+ FROM user_tab_columns
+ WHERE table_name = p_oldprefix || p_tabname
+ AND data_default IS NOT NULL) LOOP
+ EXECUTE IMMEDIATE 'ALTER TABLE ' || p_newprefix || p_tabname ||
+ ' MODIFY ' || rc.column_name || ' DEFAULT ' ||
+ substr(rc.data_default, 1, 2000);
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('CONSTRAINT',
+ constraint_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || constraint_name || '"',
+ '"' || p_newprefix || constraint_name || '"') DDLVC2,
+ constraint_name
+ FROM user_constraints uc
+ WHERE table_name = p_oldprefix || p_tabname
+ AND constraint_type = 'P') LOOP
+ dbms_output.put_line(SUBSTR(rc.ddlvc2,
+ 1,
+ INSTR(rc.ddlvc2, 'PCTFREE') - 1));
+ EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('REF_CONSTRAINT',
+ constraint_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix) DDLVC2,
+ constraint_name
+ FROM user_constraints uc
+ WHERE table_name = p_oldprefix || p_tabname
+ AND constraint_type = 'R') LOOP
+ EXECUTE IMMEDIATE rc.ddlvc2;
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
+ index_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || index_name || '"',
+ '"' || p_newprefix || index_name || '"') DDLVC2,
+ index_name
+ FROM user_indexes ui
+ WHERE table_name = p_oldprefix || p_tabname
+ AND index_type != 'LOB'
+ AND NOT EXISTS
+ (SELECT NULL
+ FROM user_constraints
+ WHERE table_name = ui.table_name
+ AND constraint_name = ui.index_name)) LOOP
+ EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(UPPER(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('TRIGGER',
+ trigger_name),
+ 32767,
+ 1)),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ ' ON ' || p_oldprefix || p_tabname,
+ ' ON ' || p_newprefix || p_tabname) DDLVC2,
+ trigger_name
+ FROM user_triggers
+ WHERE table_name = p_oldprefix || p_tabname) LOOP
+ EXECUTE IMMEDIATE SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'ALTER ') - 1);
+ END LOOP;
+END;
+/*$mw$*/
+
+/*$mw$*/
+BEGIN
+ fill_wiki_info;
+END;
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE FUNCTION BITOR (x IN NUMBER, y IN NUMBER) RETURN NUMBER AS
+BEGIN
+ RETURN (x + y - BITAND(x, y));
+END;
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE FUNCTION BITNOT (x IN NUMBER) RETURN NUMBER AS
+BEGIN
+ RETURN (4294967295 - x);
+END;
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE TYPE GET_OUTPUT_TYPE IS TABLE OF VARCHAR2(255);
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE FUNCTION GET_OUTPUT_LINES RETURN GET_OUTPUT_TYPE PIPELINED AS
+ v_line VARCHAR2(255);
+ v_status INTEGER := 0;
+BEGIN
+
+ LOOP
+ DBMS_OUTPUT.GET_LINE(v_line, v_status);
+ IF (v_status = 0) THEN RETURN; END IF;
+ PIPE ROW (v_line);
+ END LOOP;
+ RETURN;
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN;
+END;
+/*$mw$*/
+
+/*$mw$*/
+CREATE OR REPLACE FUNCTION GET_SEQUENCE_VALUE(seq IN VARCHAR2) RETURN NUMBER AS
+ v_value NUMBER;
+BEGIN
+ EXECUTE IMMEDIATE 'SELECT '||seq||'.NEXTVAL INTO :outVar FROM DUAL' INTO v_value;
+ RETURN v_value;
+END;
+/*$mw$*/
diff --git a/maintenance/ora/user.sql b/maintenance/ora/user.sql
new file mode 100644
index 00000000..d54acf39
--- /dev/null
+++ b/maintenance/ora/user.sql
@@ -0,0 +1,16 @@
+-- defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}';
+define wiki_user='{$wgDBuser}';
+define wiki_pass='{$wgDBpassword}';
+define def_ts='{$wgDBOracleDefTS}';
+define temp_ts='{$wgDBOracleTempTS}';
+
+create user &wiki_user. identified by &wiki_pass. default tablespace &def_ts. temporary tablespace &temp_ts. quota unlimited on &def_ts.;
+grant connect, resource to &wiki_user.;
+grant alter session to &wiki_user.;
+grant ctxapp to &wiki_user.;
+grant execute on ctx_ddl to &wiki_user.;
+grant create view to &wiki_user.;
+grant create synonym to &wiki_user.;
+grant create table to &wiki_user.;
+grant create sequence to &wiki_user.;
+grant create trigger to &wiki_user.;
diff --git a/maintenance/orphans.php b/maintenance/orphans.php
index 480b7220..67403e43 100644
--- a/maintenance/orphans.php
+++ b/maintenance/orphans.php
@@ -1,206 +1,237 @@
<?php
-# Copyright (C) 2005 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
-
/**
* Look for 'orphan' revisions hooked to pages which don't exist
* And 'childless' pages with no revisions.
* Then, kill the poor widows and orphans.
* Man this is depressing.
*
- * @file
+ * Copyright (C) 2005 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @author <brion@pobox.com>
* @ingroup Maintenance
*/
-$options = array( 'fix' );
-
-/** */
-require_once( 'commandLine.inc' );
-$wgTitle = Title::newFromText( 'Orphan revision cleanup script' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-checkOrphans( isset( $options['fix'] ) );
-checkSeparation( isset( $options['fix'] ) );
-#checkWidows( isset( $options['fix'] ) );
-
-# ------
-
-function checkOrphans( $fix ) {
- $dbw = wfGetDB( DB_MASTER );
- $page = $dbw->tableName( 'page' );
- $revision = $dbw->tableName( 'revision' );
-
- if( $fix ) {
- $dbw->query( "LOCK TABLES $page WRITE, $revision WRITE" );
+class Orphans extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Look for 'orphan' revisions hooked to pages which don't exist\n" .
+ "And 'childless' pages with no revisions\n" .
+ "Then, kill the poor widows and orphans\n" .
+ "Man this is depressing";
+ $this->addOption( 'fix', 'Actually fix broken entries' );
}
- echo "Checking for orphan revision table entries... (this may take a while on a large wiki)\n";
- $result = $dbw->query( "
- SELECT *
- FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id
- WHERE page_id IS NULL
- ");
- $orphans = $dbw->numRows( $result );
- if( $orphans > 0 ) {
- global $wgContLang;
- echo "$orphans orphan revisions...\n";
- printf( "%10s %10s %14s %20s %s\n", 'rev_id', 'rev_page', 'rev_timestamp', 'rev_user_text', 'rev_comment' );
- while( $row = $dbw->fetchObject( $result ) ) {
- $comment = ( $row->rev_comment == '' )
- ? ''
- : '(' . $wgContLang->truncate( $row->rev_comment, 40 ) . ')';
- printf( "%10d %10d %14s %20s %s\n",
- $row->rev_id,
- $row->rev_page,
- $row->rev_timestamp,
- $wgContLang->truncate( $row->rev_user_text, 17 ),
- $comment );
- if( $fix ) {
- $dbw->delete( 'revision', array( 'rev_id' => $row->rev_id ) );
- }
- }
- if( !$fix ) {
- echo "Run again with --fix to remove these entries automatically.\n";
- }
- } else {
- echo "No orphans! Yay!\n";
+ public function execute() {
+ global $wgTitle;
+ $wgTitle = Title::newFromText( 'Orphan revision cleanup script' );
+ $this->checkOrphans( $this->hasOption( 'fix' ) );
+ $this->checkSeparation( $this->hasOption( 'fix' ) );
+ # Does not work yet, do not use
+ # $this->checkWidows( $this->hasOption( 'fix' ) );
}
- if( $fix ) {
- $dbw->query( "UNLOCK TABLES" );
- }
-}
-
-/**
- * @todo DON'T USE THIS YET! It will remove entries which have children,
- * but which aren't properly attached (eg if page_latest is bogus
- * but valid revisions do exist)
- */
-function checkWidows( $fix ) {
- $dbw = wfGetDB( DB_MASTER );
- $page = $dbw->tableName( 'page' );
- $revision = $dbw->tableName( 'revision' );
-
- if( $fix ) {
- $dbw->query( "LOCK TABLES $page WRITE, $revision WRITE" );
+ /**
+ * Lock the appropriate tables for the script
+ * @param $db Database object
+ * @param $extraTable String The name of any extra tables to lock (eg: text)
+ */
+ private function lockTables( &$db, $extraTable = null ) {
+ $tbls = array( 'page', 'revision', 'redirect' );
+ if( $extraTable )
+ $tbls[] = $extraTable;
+ $db->lockTables( array(), $tbls, __METHOD__, false );
}
- echo "\nChecking for childless page table entries... (this may take a while on a large wiki)\n";
- $result = $dbw->query( "
- SELECT *
- FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
- WHERE rev_id IS NULL
- ");
- $widows = $dbw->numRows( $result );
- if( $widows > 0 ) {
- global $wgContLang;
- echo "$widows childless pages...\n";
- printf( "%10s %11s %2s %s\n", 'page_id', 'page_latest', 'ns', 'page_title' );
- while( $row = $dbw->fetchObject( $result ) ) {
- printf( "%10d %11d %2d %s\n",
- $row->page_id,
- $row->page_latest,
- $row->page_namespace,
- $row->page_title );
- if( $fix ) {
- $dbw->delete( 'page', array( 'page_id' => $row->page_id ) );
+ /**
+ * Check for orphan revisions
+ * @param $fix bool Whether to fix broken revisions when found
+ */
+ private function checkOrphans( $fix ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $page = $dbw->tableName( 'page' );
+ $revision = $dbw->tableName( 'revision' );
+
+ if( $fix ) {
+ $this->lockTables( $dbw );
+ }
+
+ $this->output( "Checking for orphan revision table entries... (this may take a while on a large wiki)\n" );
+ $result = $dbw->query( "
+ SELECT *
+ FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id
+ WHERE page_id IS NULL
+ ");
+ $orphans = $dbw->numRows( $result );
+ if( $orphans > 0 ) {
+ global $wgContLang;
+ $this->output( "$orphans orphan revisions...\n" );
+ $this->output( sprintf( "%10s %10s %14s %20s %s\n", 'rev_id', 'rev_page', 'rev_timestamp', 'rev_user_text', 'rev_comment' ) );
+ foreach( $result as $row ) {
+ $comment = ( $row->rev_comment == '' )
+ ? ''
+ : '(' . $wgContLang->truncate( $row->rev_comment, 40 ) . ')';
+ $this->output( sprintf( "%10d %10d %14s %20s %s\n",
+ $row->rev_id,
+ $row->rev_page,
+ $row->rev_timestamp,
+ $wgContLang->truncate( $row->rev_user_text, 17 ),
+ $comment ) );
+ if( $fix ) {
+ $dbw->delete( 'revision', array( 'rev_id' => $row->rev_id ) );
+ }
+ }
+ if( !$fix ) {
+ $this->output( "Run again with --fix to remove these entries automatically.\n" );
}
+ } else {
+ $this->output( "No orphans! Yay!\n" );
}
- if( !$fix ) {
- echo "Run again with --fix to remove these entries automatically.\n";
+
+ if( $fix ) {
+ $dbw->unlockTables();
}
- } else {
- echo "No childless pages! Yay!\n";
- }
-
- if( $fix ) {
- $dbw->query( "UNLOCK TABLES" );
}
-}
-
-
-function checkSeparation( $fix ) {
- $dbw = wfGetDB( DB_MASTER );
- $page = $dbw->tableName( 'page' );
- $revision = $dbw->tableName( 'revision' );
- $text = $dbw->tableName( 'text' );
- if( $fix ) {
- $dbw->query( "LOCK TABLES $page WRITE, $revision WRITE, $text WRITE" );
- }
+ /**
+ * @param $fix bool
+ * @todo DON'T USE THIS YET! It will remove entries which have children,
+ * but which aren't properly attached (eg if page_latest is bogus
+ * but valid revisions do exist)
+ */
+ private function checkWidows( $fix ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $page = $dbw->tableName( 'page' );
+ $revision = $dbw->tableName( 'revision' );
+
+ if( $fix ) {
+ $this->lockTables( $dbw );
+ }
- echo "\nChecking for pages whose page_latest links are incorrect... (this may take a while on a large wiki)\n";
- $result = $dbw->query( "
- SELECT *
- FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
- ");
- $found = 0;
- while( $row = $dbw->fetchObject( $result ) ) {
- $result2 = $dbw->query( "
- SELECT MAX(rev_timestamp) as max_timestamp
- FROM $revision
- WHERE rev_page=$row->page_id
- " );
- $row2 = $dbw->fetchObject( $result2 );
- $dbw->freeResult( $result2 );
- if( $row2 ) {
- if( $row->rev_timestamp != $row2->max_timestamp ) {
- if( $found == 0 ) {
- printf( "%10s %10s %14s %14s\n",
- 'page_id', 'rev_id', 'timestamp', 'max timestamp' );
- }
- ++$found;
- printf( "%10d %10d %14s %14s\n",
+ $this->output( "\nChecking for childless page table entries... (this may take a while on a large wiki)\n" );
+ $result = $dbw->query( "
+ SELECT *
+ FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
+ WHERE rev_id IS NULL
+ ");
+ $widows = $dbw->numRows( $result );
+ if( $widows > 0 ) {
+ global $wgContLang;
+ $this->output( "$widows childless pages...\n" );
+ $this->output( sprintf( "%10s %11s %2s %s\n", 'page_id', 'page_latest', 'ns', 'page_title' ) );
+ foreach( $result as $row ) {
+ printf( "%10d %11d %2d %s\n",
$row->page_id,
$row->page_latest,
- $row->rev_timestamp,
- $row2->max_timestamp );
+ $row->page_namespace,
+ $row->page_title );
if( $fix ) {
- # ...
- $maxId = $dbw->selectField(
- 'revision',
- 'rev_id',
- array(
- 'rev_page' => $row->page_id,
- 'rev_timestamp' => $row2->max_timestamp ) );
- echo "... updating to revision $maxId\n";
- $maxRev = Revision::newFromId( $maxId );
- $title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $article = new Article( $title );
- $article->updateRevisionOn( $dbw, $maxRev );
+ $dbw->delete( 'page', array( 'page_id' => $row->page_id ) );
}
}
+ if( !$fix ) {
+ $this->output( "Run again with --fix to remove these entries automatically.\n" );
+ }
} else {
- echo "wtf\n";
+ $this->output( "No childless pages! Yay!\n" );
+ }
+
+ if( $fix ) {
+ $dbw->unlockTables();
}
}
- if( $found ) {
- echo "Found $found pages with incorrect latest revision.\n";
- } else {
- echo "No pages with incorrect latest revision. Yay!\n";
- }
- if( !$fix && $found > 0 ) {
- echo "Run again with --fix to remove these entries automatically.\n";
- }
-
- if( $fix ) {
- $dbw->query( "UNLOCK TABLES" );
+ /**
+ * Check for pages where page_latest is wrong
+ * @param $fix bool Whether to fix broken entries
+ */
+ private function checkSeparation( $fix ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $page = $dbw->tableName( 'page' );
+ $revision = $dbw->tableName( 'revision' );
+ $text = $dbw->tableName( 'text' );
+
+ if( $fix ) {
+ $dbw->lockTables( $dbw, 'text' );
+ }
+
+ $this->output( "\nChecking for pages whose page_latest links are incorrect... (this may take a while on a large wiki)\n" );
+ $result = $dbw->query( "
+ SELECT *
+ FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
+ ");
+ $found = 0;
+ foreach( $result as $row ) {
+ $result2 = $dbw->query( "
+ SELECT MAX(rev_timestamp) as max_timestamp
+ FROM $revision
+ WHERE rev_page=$row->page_id
+ " );
+ $row2 = $dbw->fetchObject( $result2 );
+ $dbw->freeResult( $result2 );
+ if( $row2 ) {
+ if( $row->rev_timestamp != $row2->max_timestamp ) {
+ if( $found == 0 ) {
+ $this->output( sprintf( "%10s %10s %14s %14s\n",
+ 'page_id', 'rev_id', 'timestamp', 'max timestamp' ) );
+ }
+ ++$found;
+ $this->output( sprintf( "%10d %10d %14s %14s\n",
+ $row->page_id,
+ $row->page_latest,
+ $row->rev_timestamp,
+ $row2->max_timestamp ) );
+ if( $fix ) {
+ # ...
+ $maxId = $dbw->selectField(
+ 'revision',
+ 'rev_id',
+ array(
+ 'rev_page' => $row->page_id,
+ 'rev_timestamp' => $row2->max_timestamp ) );
+ $this->output( "... updating to revision $maxId\n" );
+ $maxRev = Revision::newFromId( $maxId );
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $article = new Article( $title );
+ $article->updateRevisionOn( $dbw, $maxRev );
+ }
+ }
+ } else {
+ $this->output( "wtf\n" );
+ }
+ }
+
+ if( $found ) {
+ $this->output( "Found $found pages with incorrect latest revision.\n" );
+ } else {
+ $this->output( "No pages with incorrect latest revision. Yay!\n" );
+ }
+ if( !$fix && $found > 0 ) {
+ $this->output( "Run again with --fix to remove these entries automatically.\n" );
+ }
+
+ if( $fix ) {
+ $dbw->unlockTables();
+ }
}
}
+$maintClass = "Orphans";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/ourusers.php b/maintenance/ourusers.php
index a7a3132b..3b5da447 100644
--- a/maintenance/ourusers.php
+++ b/maintenance/ourusers.php
@@ -9,6 +9,7 @@
* @todo document
* @file
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
/** */
diff --git a/maintenance/parserTests.inc b/maintenance/parserTests.inc
index b689fc1b..6526da90 100644
--- a/maintenance/parserTests.inc
+++ b/maintenance/parserTests.inc
@@ -1,5 +1,5 @@
<?php
-# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# Copyright (C) 2004, 2010 Brion Vibber <brion@pobox.com>
# http://www.mediawiki.org/
#
# This program is free software; you can redistribute it and/or modify
@@ -25,10 +25,12 @@
*/
/** */
-$options = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record' );
-$optionsWithArgs = array( 'regex', 'seed' );
+$options = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record', 'run-disabled' );
+$optionsWithArgs = array( 'regex', 'seed', 'setversion' );
-require_once( 'commandLine.inc' );
+if ( !defined( "NO_COMMAND_LINE" ) ) {
+ require_once( dirname(__FILE__) . '/commandLine.inc' );
+}
require_once( "$IP/maintenance/parserTestsParserHook.php" );
require_once( "$IP/maintenance/parserTestsStaticParserHook.php" );
require_once( "$IP/maintenance/parserTestsParserTime.php" );
@@ -97,7 +99,7 @@ class ParserTest {
isset( $options['quiet'] )
&& ( isset( $options['record'] )
|| isset( $options['compare'] ) ) ); // redundant output
-
+
$this->showOutput = isset( $options['show-output'] );
@@ -116,6 +118,10 @@ class ParserTest {
$this->recorder = new DbTestRecorder( $this );
} elseif( isset( $options['compare'] ) ) {
$this->recorder = new DbTestPreviewer( $this );
+ } elseif( isset( $options['upload'] ) ) {
+ $this->recorder = new RemoteTestRecorder( $this );
+ } elseif( class_exists( 'PHPUnitTestRecorder' ) ) {
+ $this->recorder = new PHPUnitTestRecorder( $this );
} else {
$this->recorder = new TestRecorder( $this );
}
@@ -125,6 +131,8 @@ class ParserTest {
$this->fuzzSeed = intval( $options['seed'] ) - 1;
}
+ $this->runDisabled = isset( $options['run-disabled'] );
+
$this->hooks = array();
$this->functionHooks = array();
}
@@ -132,7 +140,7 @@ class ParserTest {
/**
* Remove last character if it is a newline
*/
- private function chomp($s) {
+ public function chomp($s) {
if (substr($s, -1) === "\n") {
return substr($s, 0, -1);
}
@@ -270,7 +278,8 @@ class ParserTest {
$this->setupDatabase();
$ok = true;
foreach( $filenames as $filename ) {
- $ok = $this->runFile( $filename ) && $ok;
+ $tests = new TestFileIterator( $filename, $this );
+ $ok = $this->runTests( $tests ) && $ok;
}
$this->teardownDatabase();
$this->recorder->report();
@@ -278,118 +287,17 @@ class ParserTest {
return $ok;
}
- private function runFile( $filename ) {
- $infile = fopen( $filename, 'rt' );
- if( !$infile ) {
- wfDie( "Couldn't open $filename\n" );
- } else {
- global $IP;
- $relative = wfRelativePath( $filename, $IP );
- $this->showRunFile( $relative );
- }
-
- $data = array();
- $section = null;
- $n = 0;
+ function runTests($tests) {
$ok = true;
- while( false !== ($line = fgets( $infile ) ) ) {
- $n++;
- $matches = array();
- if( preg_match( '/^!!\s*(\w+)/', $line, $matches ) ) {
- $section = strtolower( $matches[1] );
- if( $section == 'endarticle') {
- if( !isset( $data['text'] ) ) {
- wfDie( "'endarticle' without 'text' at line $n of $filename\n" );
- }
- if( !isset( $data['article'] ) ) {
- wfDie( "'endarticle' without 'article' at line $n of $filename\n" );
- }
- $this->addArticle($this->chomp($data['article']), $this->chomp($data['text']), $n);
- $data = array();
- $section = null;
- continue;
- }
- if( $section == 'endhooks' ) {
- if( !isset( $data['hooks'] ) ) {
- wfDie( "'endhooks' without 'hooks' at line $n of $filename\n" );
- }
- foreach( explode( "\n", $data['hooks'] ) as $line ) {
- $line = trim( $line );
- if( $line ) {
- $this->requireHook( $line );
- }
- }
- $data = array();
- $section = null;
- continue;
- }
- if( $section == 'endfunctionhooks' ) {
- if( !isset( $data['functionhooks'] ) ) {
- wfDie( "'endfunctionhooks' without 'functionhooks' at line $n of $filename\n" );
- }
- foreach( explode( "\n", $data['functionhooks'] ) as $line ) {
- $line = trim( $line );
- if( $line ) {
- $this->requireFunctionHook( $line );
- }
- }
- $data = array();
- $section = null;
- continue;
- }
- if( $section == 'end' ) {
- if( !isset( $data['test'] ) ) {
- wfDie( "'end' without 'test' at line $n of $filename\n" );
- }
- if( !isset( $data['input'] ) ) {
- wfDie( "'end' without 'input' at line $n of $filename\n" );
- }
- if( !isset( $data['result'] ) ) {
- wfDie( "'end' without 'result' at line $n of $filename\n" );
- }
- if( !isset( $data['options'] ) ) {
- $data['options'] = '';
- }
- else {
- $data['options'] = $this->chomp( $data['options'] );
- }
- if (!isset( $data['config'] ) )
- $data['config'] = '';
-
- if (preg_match('/\\bdisabled\\b/i', $data['options'])
- || !preg_match("/{$this->regex}/i", $data['test'])) {
- # disabled test
- $data = array();
- $section = null;
- continue;
- }
- $result = $this->runTest(
- $this->chomp( $data['test'] ),
- $this->chomp( $data['input'] ),
- $this->chomp( $data['result'] ),
- $this->chomp( $data['options'] ),
- $this->chomp( $data['config'] )
- );
- $ok = $ok && $result;
- $this->recorder->record( $this->chomp( $data['test'] ), $result );
- $data = array();
- $section = null;
- continue;
- }
- if ( isset ($data[$section] ) ) {
- wfDie( "duplicate section '$section' at line $n of $filename\n" );
- }
- $data[$section] = '';
- continue;
- }
- if( $section ) {
- $data[$section] .= $line;
- }
+ foreach($tests as $i => $t) {
+ $result =
+ $this->runTest($t['test'], $t['input'], $t['result'], $t['options'], $t['config']);
+ $ok = $ok && $result;
+ $this->recorder->record( $t['test'], $result );
}
if ( $this->showProgress ) {
print "\n";
}
- return $ok;
}
/**
@@ -419,52 +327,56 @@ class ParserTest {
* @param string $result Result to output
* @return bool
*/
- private function runTest( $desc, $input, $result, $opts, $config ) {
+ public function runTest( $desc, $input, $result, $opts, $config ) {
if( $this->showProgress ) {
$this->showTesting( $desc );
}
+ $opts = $this->parseOptions( $opts );
$this->setupGlobals($opts, $config);
$user = new User();
$options = ParserOptions::newFromUser( $user );
- if (preg_match('/\\bmath\\b/i', $opts)) {
- # XXX this should probably be done by the ParserOptions
- $options->setUseTex(true);
- }
-
$m = array();
- if (preg_match('/title=\[\[(.*)\]\]/', $opts, $m)) {
- $titleText = $m[1];
+ if (isset( $opts['title'] ) ) {
+ $titleText = $opts['title'];
}
else {
$titleText = 'Parser test';
}
- $noxml = (bool)preg_match( '~\\b noxml \\b~x', $opts );
+ $noxml = isset( $opts['noxml'] );
+ $local = isset( $opts['local'] );
$parser = $this->getParser();
- $title =& Title::makeTitle( NS_MAIN, $titleText );
+ $title = Title::newFromText( $titleText );
$matches = array();
- if (preg_match('/\\bpst\\b/i', $opts)) {
+ if( isset( $opts['pst'] ) ) {
$out = $parser->preSaveTransform( $input, $title, $user, $options );
- } elseif (preg_match('/\\bmsg\\b/i', $opts)) {
+ } elseif( isset( $opts['msg'] ) ) {
$out = $parser->transformMsg( $input, $options );
- } elseif( preg_match( '/\\bsection=([\w-]+)\b/i', $opts, $matches ) ) {
- $section = $matches[1];
+ } elseif( isset( $opts['section'] ) ) {
+ $section = $opts['section'];
$out = $parser->getSection( $input, $section );
- } elseif( preg_match( '/\\breplace=([\w-]+),"(.*?)"/i', $opts, $matches ) ) {
- $section = $matches[1];
- $replace = $matches[2];
+ } elseif( isset( $opts['replace'] ) ) {
+ $section = $opts['replace'][0];
+ $replace = $opts['replace'][1];
$out = $parser->replaceSection( $input, $section, $replace );
+ } elseif( isset( $opts['comment'] ) ) {
+ $linker = $user->getSkin();
+ $out = $linker->formatComment( $input, $title, $local );
} else {
$output = $parser->parse( $input, $title, $options, true, true, 1337 );
$out = $output->getText();
- if (preg_match('/\\bill\\b/i', $opts)) {
+ if ( isset( $opts['showtitle'] ) ) {
+ if($output->getTitleText()) $title = $output->getTitleText();
+ $out = "$title\n$out";
+ }
+ if (isset( $opts['ill'] ) ) {
$out = $this->tidy( implode( ' ', $output->getLanguageLinks() ) );
- } else if (preg_match('/\\bcat\\b/i', $opts)) {
+ } elseif( isset( $opts['cat'] ) ) {
global $wgOut;
$wgOut->addCategoryLinks($output->getCategories());
$cats = $wgOut->getCategoryLinks();
@@ -478,6 +390,7 @@ class ParserTest {
$result = $this->tidy($result);
}
+
$this->teardownGlobals();
if( $result === $out && ( $noxml === true || $this->wellFormed( $out ) ) ) {
@@ -490,37 +403,104 @@ class ParserTest {
/**
* Use a regex to find out the value of an option
- * @param $regex A regex, the first group will be the value returned
- * @param $opts Options line to look in
- * @param $defaults Default value returned if the regex does not match
+ * @param $key name of option val to retrieve
+ * @param $opts Options array to look in
+ * @param $defaults Default value returned if not found
*/
- private static function getOptionValue( $regex, $opts, $default ) {
- $m = array();
- if( preg_match( $regex, $opts, $m ) ) {
- return $m[1];
+ private static function getOptionValue( $key, $opts, $default ) {
+ $key = strtolower( $key );
+ if( isset( $opts[$key] ) ) {
+ return $opts[$key];
} else {
return $default;
}
}
+ private function parseOptions( $instring ) {
+ $opts = array();
+ $lines = explode( "\n", $instring );
+ // foo
+ // foo=bar
+ // foo="bar baz"
+ // foo=[[bar baz]]
+ // foo=bar,"baz quux"
+ $regex = '/\b
+ ([\w-]+) # Key
+ \b
+ (?:\s*
+ = # First sub-value
+ \s*
+ (
+ "
+ [^"]* # Quoted val
+ "
+ |
+ \[\[
+ [^]]* # Link target
+ \]\]
+ |
+ [\w-]+ # Plain word
+ )
+ (?:\s*
+ , # Sub-vals 1..N
+ \s*
+ (
+ "[^"]*" # Quoted val
+ |
+ \[\[[^]]*\]\] # Link target
+ |
+ [\w-]+ # Plain word
+ )
+ )*
+ )?
+ /x';
+
+ if( preg_match_all( $regex, $instring, $matches, PREG_SET_ORDER ) ) {
+ foreach( $matches as $bits ) {
+ $match = array_shift( $bits );
+ $key = strtolower( array_shift( $bits ) );
+ if( count( $bits ) == 0 ) {
+ $opts[$key] = true;
+ } elseif( count( $bits ) == 1 ) {
+ $opts[$key] = $this->cleanupOption( array_shift( $bits ) );
+ } else {
+ // Array!
+ $opts[$key] = array_map( array( $this, 'cleanupOption' ), $bits );
+ }
+ }
+ }
+ return $opts;
+ }
+
+ private function cleanupOption( $opt ) {
+ if( substr( $opt, 0, 1 ) == '"' ) {
+ return substr( $opt, 1, -1 );
+ }
+ if( substr( $opt, 0, 2 ) == '[[' ) {
+ return substr( $opt, 2, -2 );
+ }
+ return $opt;
+ }
+
/**
* Set up the global variables for a consistent environment for each test.
* Ideally this should replace the global configuration entirely.
*/
private function setupGlobals($opts = '', $config = '') {
+ global $wgDBtype;
if( !isset( $this->uploadDir ) ) {
$this->uploadDir = $this->setupUploadDir();
}
# Find out values for some special options.
$lang =
- self::getOptionValue( '/language=([a-z]+(?:_[a-z]+)?)/', $opts, 'en' );
+ self::getOptionValue( 'language', $opts, 'en' );
$variant =
- self::getOptionValue( '/variant=([a-z]+(?:-[a-z]+)?)/', $opts, false );
+ self::getOptionValue( 'variant', $opts, false );
$maxtoclevel =
- self::getOptionValue( '/wgMaxTocLevel=(\d+)/', $opts, 999 );
- $linkHolderBatchSize =
- self::getOptionValue( '/wgLinkHolderBatchSize=(\d+)/', $opts, 1000 );
+ self::getOptionValue( 'wgMaxTocLevel', $opts, 999 );
+ $linkHolderBatchSize =
+ self::getOptionValue( 'wgLinkHolderBatchSize', $opts, 1000 );
$settings = array(
'wgServer' => 'http://localhost',
@@ -539,20 +519,22 @@ class ParserTest {
'wgEnableUploads' => true,
'wgStyleSheetPath' => '/skins',
'wgSitename' => 'MediaWiki',
- 'wgServerName' => 'Britney Spears',
+ 'wgServerName' => 'Britney-Spears',
'wgLanguageCode' => $lang,
'wgContLanguageCode' => $lang,
- 'wgDBprefix' => 'parsertest_',
- 'wgRawHtml' => preg_match('/\\brawhtml\\b/i', $opts),
+ 'wgDBprefix' => $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_',
+ 'wgRawHtml' => isset( $opts['rawhtml'] ),
'wgLang' => null,
'wgContLang' => null,
- 'wgNamespacesWithSubpages' => array( 0 => preg_match('/\\bsubpage\\b/i', $opts)),
+ 'wgNamespacesWithSubpages' => array( 0 => isset( $opts['subpage'] ) ),
'wgMaxTocLevel' => $maxtoclevel,
'wgCapitalLinks' => true,
'wgNoFollowLinks' => true,
'wgNoFollowDomainExceptions' => array(),
'wgThumbnailScriptPath' => false,
- 'wgUseTeX' => false,
+ 'wgUseImageResize' => false,
+ 'wgUseTeX' => isset( $opts['math'] ),
+ 'wgMathDirectory' => $this->uploadDir . '/math',
'wgLocaltimezone' => 'UTC',
'wgAllowExternalImages' => true,
'wgUseTidy' => false,
@@ -569,32 +551,38 @@ class ParserTest {
'wgDefaultExternalStore' => array(),
'wgForeignFileRepos' => array(),
'wgLinkHolderBatchSize' => $linkHolderBatchSize,
- 'wgEnforceHtmlIds' => true,
+ 'wgExperimentalHtmlIds' => false,
'wgExternalLinkTarget' => false,
'wgAlwaysUseTidy' => false,
- );
+ 'wgHtml5' => true,
+ 'wgWellFormedXml' => true,
+ 'wgAllowMicrodataAttributes' => true,
+ );
if ($config) {
$configLines = explode( "\n", $config );
-
+
foreach( $configLines as $line ) {
list( $var, $value ) = explode( '=', $line, 2 );
-
+
$settings[$var] = eval("return $value;" );
}
}
-
+
$this->savedGlobals = array();
foreach( $settings as $var => $val ) {
- $this->savedGlobals[$var] = $GLOBALS[$var];
+ if( array_key_exists( $var, $GLOBALS ) ) {
+ $this->savedGlobals[$var] = $GLOBALS[$var];
+ }
$GLOBALS[$var] = $val;
}
$langObj = Language::factory( $lang );
$GLOBALS['wgLang'] = $langObj;
$GLOBALS['wgContLang'] = $langObj;
$GLOBALS['wgMemc'] = new FakeMemCachedClient;
+ $GLOBALS['wgOut'] = new OutputPage;
- //$GLOBALS['wgMessageCache'] = new MessageCache( new BagOStuff(), false, 0, $GLOBALS['wgDBname'] );
+ MagicWord::clearCache();
global $wgUser;
$wgUser = new User();
@@ -611,13 +599,13 @@ class ParserTest {
'categorylinks', 'templatelinks', 'externallinks', 'langlinks',
'site_stats', 'hitcounter', 'ipblocks', 'image', 'oldimage',
'recentchanges', 'watchlist', 'math', 'interwiki',
- 'querycache', 'objectcache', 'job', 'redirect', 'querycachetwo',
+ 'querycache', 'objectcache', 'job', 'l10n_cache', 'redirect', 'querycachetwo',
'archive', 'user_groups', 'page_props', 'category'
);
- if ($wgDBtype === 'mysql')
+ if ($wgDBtype === 'mysql')
array_push( $tables, 'searchindex' );
-
+
// Allow extensions to add to the list of tables to duplicate;
// may be necessary if they hook into page save or other code
// which will require them while running tests.
@@ -631,12 +619,12 @@ class ParserTest {
* Currently this will only be done once per run, and any changes to
* the db will be visible to later tests in the run.
*/
- private function setupDatabase() {
+ function setupDatabase() {
global $wgDBprefix, $wgDBtype;
if ( $this->databaseSetupDone ) {
return;
}
- if ( $wgDBprefix === 'parsertest_' ) {
+ if ( $wgDBprefix === 'parsertest_' || ($wgDBtype == 'oracle' && $wgDBprefix === 'pt_')) {
throw new MWException( 'setupDatabase should be called before setupGlobals' );
}
$this->databaseSetupDone = true;
@@ -649,59 +637,30 @@ class ParserTest {
$this->useTemporaryTables = false;
}
- $temporary = $this->useTemporaryTables ? 'TEMPORARY' : '';
+ $temporary = $this->useTemporaryTables || $wgDBtype == 'postgres';
$db = wfGetDB( DB_MASTER );
$tables = $this->listTables();
- if ( !( $wgDBtype == 'mysql' && strcmp( $db->getServerVersion(), '4.1' ) < 0 ) ) {
- # Database that supports CREATE TABLE ... LIKE
-
- if( $wgDBtype == 'postgres' ) {
- $def = 'INCLUDING DEFAULTS';
- $temporary = 'TEMPORARY';
- } else {
- $def = '';
- }
- foreach ( $tables as $tbl ) {
- # Clean up from previous aborted run. So that table escaping
- # works correctly across DB engines, we need to change the pre-
- # fix back and forth so tableName() works right.
- $this->changePrefix( $this->oldTablePrefix );
- $oldTableName = $db->tableName( $tbl );
- $this->changePrefix( 'parsertest_' );
- $newTableName = $db->tableName( $tbl );
-
- if ( $db->tableExists( $tbl ) && $wgDBtype != 'postgres' ) {
- $db->query( "DROP TABLE $newTableName" );
- }
- # Create new table
- $db->query( "CREATE $temporary TABLE $newTableName (LIKE $oldTableName $def)" );
- }
- } else {
- # Hack for MySQL versions < 4.1, which don't support
- # "CREATE TABLE ... LIKE". Note that
- # "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
- # would not create the indexes we need....
- #
- # Note that we don't bother changing around the prefixes here be-
- # cause we know we're using MySQL anyway.
- foreach ($tables as $tbl) {
- $oldTableName = $db->tableName( $tbl );
- $res = $db->query("SHOW CREATE TABLE $oldTableName");
- $row = $db->fetchRow($res);
- $create = $row[1];
- $create_tmp = preg_replace('/CREATE TABLE `(.*?)`/',
- "CREATE $temporary TABLE `parsertest_$tbl`", $create);
- if ($create === $create_tmp) {
- # Couldn't do replacement
- wfDie("could not create temporary table $tbl");
- }
- $db->query($create_tmp);
+ foreach ( $tables as $tbl ) {
+ # Clean up from previous aborted run. So that table escaping
+ # works correctly across DB engines, we need to change the pre-
+ # fix back and forth so tableName() works right.
+ $this->changePrefix( $this->oldTablePrefix );
+ $oldTableName = $db->tableName( $tbl );
+ $this->changePrefix( $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_' );
+ $newTableName = $db->tableName( $tbl );
+
+ if ( $db->tableExists( $tbl ) && $wgDBtype != 'postgres' && $wgDBtype != 'oracle' ) {
+ $db->query( "DROP TABLE $newTableName" );
}
+ # Create new table
+ $db->duplicateTableStructure( $oldTableName, $newTableName, $temporary );
}
+ if ($wgDBtype == 'oracle')
+ $db->query('BEGIN FILL_WIKI_INFO; END;');
- $this->changePrefix( 'parsertest_' );
+ $this->changePrefix( $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_' );
# Hack: insert a few Wikipedia in-project interwiki prefixes,
# for testing inter-language links
@@ -726,6 +685,21 @@ class ParserTest {
'iw_local' => 1 ),
) );
+
+ if ($wgDBtype == 'oracle') {
+ # Insert 0 and 1 user_ids to prevent FK violations
+
+ #Anonymous user
+ $db->insert( 'user', array(
+ 'user_id' => 0,
+ 'user_name' => 'Anonymous') );
+
+ # Hack-on-Hack: Insert a test user to be able to insert an image
+ $db->insert( 'user', array(
+ 'user_id' => 1,
+ 'user_name' => 'Tester') );
+ }
+
# Hack: Insert an image to work with
$db->insert( 'image', array(
'img_name' => 'Foobar.jpg',
@@ -743,8 +717,32 @@ class ParserTest {
'img_metadata' => serialize( array() ),
) );
+ # This image will be blacklisted in [[MediaWiki:Bad image list]]
+ $db->insert( 'image', array(
+ 'img_name' => 'Bad.jpg',
+ 'img_size' => 12345,
+ 'img_description' => 'zomgnotcensored',
+ 'img_user' => 1,
+ 'img_user_text' => 'WikiSysop',
+ 'img_timestamp' => $db->timestamp( '20010115123500' ),
+ 'img_width' => 320,
+ 'img_height' => 240,
+ 'img_bits' => 24,
+ 'img_media_type' => MEDIATYPE_BITMAP,
+ 'img_major_mime' => "image",
+ 'img_minor_mime' => "jpeg",
+ 'img_metadata' => serialize( array() ),
+ ) );
+
# Update certain things in site_stats
- $db->insert( 'site_stats', array( 'ss_row_id' => 1, 'ss_images' => 1, 'ss_good_articles' => 1 ) );
+ $db->insert( 'site_stats', array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ) );
+
+ # Reinitialise the LocalisationCache to match the database state
+ Language::getLocalisationCache()->unloadAll();
+
+ # Make a new message cache
+ global $wgMessageCache, $wgMemc;
+ $wgMessageCache = new MessageCache( $wgMemc, true, 3600, '' );
}
/**
@@ -765,7 +763,7 @@ class ParserTest {
}
private function teardownDatabase() {
- global $wgDBprefix;
+ global $wgDBtype;
if ( !$this->databaseSetupDone ) {
return;
}
@@ -780,10 +778,14 @@ class ParserTest {
$tables = $this->listTables();
$db = wfGetDB( DB_MASTER );
foreach ( $tables as $table ) {
- $db->query( "DROP TABLE `parsertest_$table`" );
- }*/
+ $sql = $wgDBtype == 'oracle' ? "DROP TABLE pt_$table DROP CONSTRAINTS" : "DROP TABLE `parsertest_$table`";
+ $db->query( $sql );
+ }
+ if ($wgDBtype == 'oracle')
+ $db->query('BEGIN FILL_WIKI_INFO; END;');
+ */
}
-
+
/**
* Create a dummy uploads directory which will contain a couple
* of files in order to pass existence tests.
@@ -807,6 +809,9 @@ class ParserTest {
}
wfMkdirParents( $dir . '/3/3a' );
copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+
+ wfMkdirParents( $dir . '/0/09' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
return $dir;
}
@@ -816,7 +821,6 @@ class ParserTest {
*/
private function teardownGlobals() {
RepoGroup::destroySingleton();
- FileCache::destroySingleton();
LinkCache::singleton()->clear();
foreach( $this->savedGlobals as $var => $val ) {
$GLOBALS[$var] = $val;
@@ -843,6 +847,10 @@ class ParserTest {
"$dir/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg",
"$dir/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg",
"$dir/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg",
+
+ "$dir/0/09/Bad.jpg",
+
+ "$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
)
);
@@ -855,7 +863,14 @@ class ParserTest {
"$dir/thumb/3/3a/Foobar.jpg",
"$dir/thumb/3/3a",
"$dir/thumb/3",
+
+ "$dir/0/09/",
+ "$dir/0/",
"$dir/thumb",
+ "$dir/math/f/a/5",
+ "$dir/math/f/a",
+ "$dir/math/f",
+ "$dir/math",
"$dir",
)
);
@@ -993,7 +1008,7 @@ class ParserTest {
*
* @param String $path
*/
- protected function showRunFile( $path ){
+ public function showRunFile( $path ){
print $this->term->color( 1 ) .
"Reading tests from \"$path\"..." .
$this->term->reset() .
@@ -1006,7 +1021,7 @@ class ParserTest {
* @param string $text the article text
* @param int $line the input line number, for reporting errors
*/
- private function addArticle($name, $text, $line) {
+ public function addArticle($name, $text, $line) {
$this->setupGlobals();
$title = Title::newFromText( $name );
if ( is_null($title) ) {
@@ -1015,11 +1030,12 @@ class ParserTest {
$aid = $title->getArticleID( GAID_FOR_UPDATE );
if ($aid != 0) {
- wfDie( "duplicate article at line $line\n" );
+ wfDie( "duplicate article '$name' at line $line\n" );
}
$art = new Article($title);
$art->insertNewArticle($text, '', false, false );
+
$this->teardownGlobals();
}
@@ -1029,8 +1045,9 @@ class ParserTest {
* die a painful dead to warn the others.
* @param string $name
*/
- private function requireHook( $name ) {
+ public function requireHook( $name ) {
global $wgParser;
+ $wgParser->firstCallInit( ); //make sure hooks are loaded.
if( isset( $wgParser->mTagHooks[$name] ) ) {
$this->hooks[$name] = $wgParser->mTagHooks[$name];
} else {
@@ -1046,6 +1063,7 @@ class ParserTest {
*/
private function requireFunctionHook( $name ) {
global $wgParser;
+ $wgParser->firstCallInit( ); //make sure hooks are loaded.
if( isset( $wgParser->mFunctionHooks[$name] ) ) {
$this->functionHooks[$name] = $wgParser->mFunctionHooks[$name];
} else {
@@ -1222,11 +1240,11 @@ class DbTestPreviewer extends TestRecorder {
* and all that fun stuff
*/
function start() {
- global $wgDBtype, $wgDBprefix;
+ global $wgDBtype;
parent::start();
- if( ! $this->db->tableExists( 'testrun' )
- or ! $this->db->tableExists( 'testitem' ) )
+ if( ! $this->db->tableExists( 'testrun' )
+ or ! $this->db->tableExists( 'testitem' ) )
{
print "WARNING> `testrun` table not found in database.\n";
$this->prevRun = false;
@@ -1262,7 +1280,7 @@ class DbTestPreviewer extends TestRecorder {
$res = $this->db->select( 'testitem', array( 'ti_name', 'ti_success' ),
array( 'ti_run' => $this->prevRun ), __METHOD__ );
foreach ( $res as $row ) {
- if ( !$this->parent->regex
+ if ( !$this->parent->regex
|| preg_match( "/{$this->parent->regex}/i", $row->ti_name ) )
{
$prevResults[$row->ti_name] = $row->ti_success;
@@ -1335,7 +1353,7 @@ class DbTestPreviewer extends TestRecorder {
// Otherwise, this test has previous recorded results.
// See when this test last had a different result to what we're seeing now.
- $conds = array(
+ $conds = array(
'ti_name' => $testname,
'ti_success' => ($after == 'f' ? "1" : "0") );
if ( $this->curRun ) {
@@ -1395,26 +1413,29 @@ class DbTestRecorder extends DbTestPreviewer {
* and all that fun stuff
*/
function start() {
- global $wgDBtype, $wgDBprefix;
+ global $wgDBtype, $options;
$this->db->begin();
- if( ! $this->db->tableExists( 'testrun' )
- or ! $this->db->tableExists( 'testitem' ) )
+ if( ! $this->db->tableExists( 'testrun' )
+ or ! $this->db->tableExists( 'testitem' ) )
{
print "WARNING> `testrun` table not found in database. Trying to create table.\n";
if ($wgDBtype === 'postgres')
$this->db->sourceFile( dirname(__FILE__) . '/testRunner.postgres.sql' );
+ elseif ($wgDBtype === 'oracle')
+ $this->db->sourceFile( dirname(__FILE__) . '/testRunner.ora.sql' );
else
$this->db->sourceFile( dirname(__FILE__) . '/testRunner.sql' );
echo "OK, resuming.\n";
}
-
+
parent::start();
$this->db->insert( 'testrun',
array(
'tr_date' => $this->db->timestamp(),
- 'tr_mw_version' => SpecialVersion::getVersion(),
+ 'tr_mw_version' => isset( $options['setversion'] ) ?
+ $options['setversion'] : SpecialVersion::getVersion(),
'tr_php_version' => phpversion(),
'tr_db_version' => $this->db->getServerVersion(),
'tr_uname' => php_uname()
@@ -1442,3 +1463,257 @@ class DbTestRecorder extends DbTestPreviewer {
__METHOD__ );
}
}
+
+class RemoteTestRecorder extends TestRecorder {
+ function start() {
+ parent::start();
+ $this->results = array();
+ $this->ping( 'running' );
+ }
+
+ function record( $test, $result ) {
+ parent::record( $test, $result );
+ $this->results[$test] = (bool)$result;
+ }
+
+ function end() {
+ $this->ping( 'complete', $this->results );
+ parent::end();
+ }
+
+ /**
+ * Inform a CodeReview instance that we've started or completed a test run...
+ * @param $remote array: info on remote target
+ * @param $status string: "running" - tell it we've started
+ * "complete" - provide test results array
+ * "abort" - something went horribly awry
+ * @param $data array of test name => true/false
+ */
+ function ping( $status, $results=false ) {
+ global $wgParserTestRemote, $IP;
+
+ $remote = $wgParserTestRemote;
+ $revId = SpecialVersion::getSvnRevision( $IP );
+ $jsonResults = json_encode( $results );
+
+ if( !$remote ) {
+ print "Can't do remote upload without configuring \$wgParserTestRemote!\n";
+ exit( 1 );
+ }
+
+ // Generate a hash MAC to validate our credentials
+ $message = array(
+ $remote['repo'],
+ $remote['suite'],
+ $revId,
+ $status,
+ );
+ if( $status == "complete" ) {
+ $message[] = $jsonResults;
+ }
+ $hmac = hash_hmac( "sha1", implode( "|", $message ), $remote['secret'] );
+
+ $postData = array(
+ 'action' => 'codetestupload',
+ 'format' => 'json',
+ 'repo' => $remote['repo'],
+ 'suite' => $remote['suite'],
+ 'rev' => $revId,
+ 'status' => $status,
+ 'hmac' => $hmac,
+ );
+ if( $status == "complete" ) {
+ $postData['results'] = $jsonResults;
+ }
+ $response = $this->post( $remote['api-url'], $postData );
+
+ if( $response === false ) {
+ print "CodeReview info upload failed to reach server.\n";
+ exit( 1 );
+ }
+ $responseData = json_decode( $response, true );
+ if( !is_array( $responseData ) ) {
+ print "CodeReview API response not recognized...\n";
+ wfDebug( "Unrecognized CodeReview API response: $response\n" );
+ exit( 1 );
+ }
+ if( isset( $responseData['error'] ) ) {
+ $code = $responseData['error']['code'];
+ $info = $responseData['error']['info'];
+ print "CodeReview info upload failed: $code $info\n";
+ exit( 1 );
+ }
+ }
+
+ function post( $url, $data ) {
+ return Http::post( $url, array( 'postData' => $data) );
+ }
+}
+
+class TestFileIterator implements Iterator {
+ private $file;
+ private $fh;
+ private $parser;
+ private $index = 0;
+ private $test;
+ private $lineNum;
+ private $eof;
+
+ function __construct( $file, $parser = null ) {
+ global $IP;
+
+ $this->file = $file;
+ $this->fh = fopen($this->file, "rt");
+ if( !$this->fh ) {
+ wfDie( "Couldn't open file '$file'\n" );
+ }
+
+ $this->parser = $parser;
+
+ if( $this->parser ) $this->parser->showRunFile( wfRelativePath( $this->file, $IP ) );
+ $this->lineNum = $this->index = 0;
+ }
+
+ function setParser( ParserTest $parser ) {
+ $this->parser = $parser;
+ }
+
+ function rewind() {
+ if(fseek($this->fh, 0)) {
+ wfDie( "Couldn't fseek to the start of '$filename'\n" );
+ }
+ $this->index = 0;
+ $this->lineNum = 0;
+ $this->eof = false;
+ $this->readNextTest();
+
+ return true;
+ }
+
+ function current() {
+ return $this->test;
+ }
+
+ function key() {
+ return $this->index;
+ }
+
+ function next() {
+ if($this->readNextTest()) {
+ $this->index++;
+ return true;
+ } else {
+ $this->eof = true;
+ }
+ }
+
+ function valid() {
+ return $this->eof != true;
+ }
+
+ function readNextTest() {
+ $data = array();
+ $section = null;
+
+ while( false !== ($line = fgets( $this->fh ) ) ) {
+ $this->lineNum++;
+ $matches = array();
+ if( preg_match( '/^!!\s*(\w+)/', $line, $matches ) ) {
+ $section = strtolower( $matches[1] );
+ if( $section == 'endarticle') {
+ if( !isset( $data['text'] ) ) {
+ wfDie( "'endarticle' without 'text' at line {$this->lineNum} of $filename\n" );
+ }
+ if( !isset( $data['article'] ) ) {
+ wfDie( "'endarticle' without 'article' at line {$this->lineNum} of $filename\n" );
+ }
+ if( $this->parser ) $this->parser->addArticle($this->parser->chomp($data['article']), $this->parser->chomp($data['text']),
+ $this->lineNum);
+ $data = array();
+ $section = null;
+ continue;
+ }
+ if( $section == 'endhooks' ) {
+ if( !isset( $data['hooks'] ) ) {
+ wfDie( "'endhooks' without 'hooks' at line {$this->lineNum} of $filename\n" );
+ }
+ foreach( explode( "\n", $data['hooks'] ) as $line ) {
+ $line = trim( $line );
+ if( $line ) {
+ if( $this->parser ) $this->parser->requireHook( $line );
+ }
+ }
+ $data = array();
+ $section = null;
+ continue;
+ }
+ if( $section == 'endfunctionhooks' ) {
+ if( !isset( $data['functionhooks'] ) ) {
+ wfDie( "'endfunctionhooks' without 'functionhooks' at line {$this->lineNum} of $filename\n" );
+ }
+ foreach( explode( "\n", $data['functionhooks'] ) as $line ) {
+ $line = trim( $line );
+ if( $line ) {
+ if( $this->parser ) $this->parser->requireFunctionHook( $line );
+ }
+ }
+ $data = array();
+ $section = null;
+ continue;
+ }
+ if( $section == 'end' ) {
+ if( !isset( $data['test'] ) ) {
+ wfDie( "'end' without 'test' at line {$this->lineNum} of $filename\n" );
+ }
+ if( !isset( $data['input'] ) ) {
+ wfDie( "'end' without 'input' at line {$this->lineNum} of $filename\n" );
+ }
+ if( !isset( $data['result'] ) ) {
+ wfDie( "'end' without 'result' at line {$this->lineNum} of $filename\n" );
+ }
+ if( !isset( $data['options'] ) ) {
+ $data['options'] = '';
+ }
+ if (!isset( $data['config'] ) )
+ $data['config'] = '';
+
+ if ( $this->parser && (preg_match('/\\bdisabled\\b/i', $data['options'])
+ || !preg_match("/{$this->parser->regex}/i", $data['test'])) && !$this->parser->runDisabled ) {
+ # disabled test
+ $data = array();
+ $section = null;
+ continue;
+ }
+ if ( $this->parser &&
+ preg_match('/\\bmath\\b/i', $data['options']) && !$this->parser->savedGlobals['wgUseTeX'] ) {
+ # don't run math tests if $wgUseTeX is set to false in LocalSettings
+ $data = array();
+ $section = null;
+ continue;
+ }
+
+ if( $this->parser ) {
+ $this->test = array(
+ 'test' => $this->parser->chomp( $data['test'] ),
+ 'input' => $this->parser->chomp( $data['input'] ),
+ 'result' => $this->parser->chomp( $data['result'] ),
+ 'options' => $this->parser->chomp( $data['options'] ),
+ 'config' => $this->parser->chomp( $data['config'] ) );
+ } else {
+ $this->test['test'] = $data['test'];
+ }
+ return true;
+ }
+ if ( isset ($data[$section] ) ) {
+ wfDie( "duplicate section '$section' at line {$this->lineNum} of $filename\n" );
+ }
+ $data[$section] = '';
+ continue;
+ }
+ if( $section ) {
+ $data[$section] .= $line;
+ }
+ }
+ return false;
+ }
+} \ No newline at end of file
diff --git a/maintenance/parserTests.php b/maintenance/parserTests.php
index 9a1a4807..78530716 100644
--- a/maintenance/parserTests.php
+++ b/maintenance/parserTests.php
@@ -40,16 +40,29 @@ Options:
--file=<testfile> Run test cases from a custom file instead of parserTests.txt
--record Record tests in database
--compare Compare with recorded results, without updating the database.
+ --setversion When using --record, set the version string to use (useful
+ with git-svn so that you can get the exact revision)
--keep-uploads Re-use the same upload directory for each test, don't delete it
--fuzz Do a fuzz test instead of a normal test
--seed <n> Start the fuzz test from the specified seed
--help Show this help message
-
+ --run-disabled run disabled tests
+ --upload Upload test results to remote wiki (per \$wgParserTestRemote)
ENDS;
exit( 0 );
}
+# Cases of weird db corruption were encountered when running tests on earlyish
+# versions of SQLite
+if ( $wgDBtype == 'sqlite' ) {
+ $db = wfGetDB( DB_MASTER );
+ $version = $db->getServerVersion();
+ if ( version_compare( $version, '3.6' ) < 0 ) {
+ die( "Parser tests require SQLite version 3.6 or later, you have $version\n" );
+ }
+}
+
# There is a convention that the parser should never
# refer to $wgTitle directly, but instead use the title
# passed to it.
diff --git a/maintenance/parserTests.txt b/maintenance/parserTests.txt
index 2d3907d8..500341d1 100644
--- a/maintenance/parserTests.txt
+++ b/maintenance/parserTests.txt
@@ -1,4 +1,4 @@
-# MediaWiki Parser test cases
+# MediaWiki Parser test cases
# Some taken from http://meta.wikimedia.org/wiki/Parser_testing
# All (C) their respective authors and released under the GPL
#
@@ -21,6 +21,9 @@
# language=XXX set content language to XXX for this test
# variant=XXX set the variant of language for this test (eg zh-tw)
# disabled do not run test
+# showtitle make the first line the title
+# comment run through Linker::formatComment() instead of main parser
+# local format section links in edit comment text as local links
#
# For testing purposes, temporary articles can created:
# !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle
@@ -441,7 +444,7 @@ Definition list with URL link
!! input
; http://example.com/ : definition
!! result
-<dl><dt> <a href="http://example.com/" class="external free" title="http://example.com/" rel="nofollow">http://example.com/</a>&nbsp;</dt><dd> definition
+<dl><dt> <a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a>&nbsp;</dt><dd> definition
</dd></dl>
!! end
@@ -451,7 +454,7 @@ Definition list with bracketed URL link
!! input
;[http://www.example.com/ Example]:Something about it
!! result
-<dl><dt><a href="http://www.example.com/" class="external text" title="http://www.example.com/" rel="nofollow">Example</a></dt><dd>Something about it
+<dl><dt><a href="http://www.example.com/" class="external text" rel="nofollow">Example</a></dt><dd>Something about it
</dd></dl>
!! end
@@ -472,7 +475,7 @@ Definition list with news link containing colon
!! input
; news:alt.wikipedia.rox: This isn't even a real newsgroup!
!! result
-<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" title="news:alt.wikipedia.rox" rel="nofollow">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
+<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" rel="nofollow">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
</dd></dl>
!! end
@@ -482,7 +485,7 @@ Malformed definition list with colon
!! input
; news:alt.wikipedia.rox -- don't crash or enter an infinite loop
!! result
-<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" title="news:alt.wikipedia.rox" rel="nofollow">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
+<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" rel="nofollow">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
</dt></dl>
!! end
@@ -492,7 +495,7 @@ Definition lists: colon in external link text
!! input
; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
!! result
-<dl><dt> <a href="http://www.wikipedia2.org/" class="external text" title="http://www.wikipedia2.org/" rel="nofollow">Wikipedia&nbsp;: The Next Generation</a></dt><dd> OK, I made that up
+<dl><dt> <a href="http://www.wikipedia2.org/" class="external text" rel="nofollow">Wikipedia&nbsp;: The Next Generation</a></dt><dd> OK, I made that up
</dd></dl>
!! end
@@ -527,7 +530,7 @@ External links: non-bracketed
!! input
Non-bracketed: http://example.com
!! result
-<p>Non-bracketed: <a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a>
+<p>Non-bracketed: <a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>
</p>
!! end
@@ -538,9 +541,9 @@ Numbered: [http://example.com]
Numbered: [http://example.net]
Numbered: [http://example.com]
!! result
-<p>Numbered: <a href="http://example.com" class="external autonumber" title="http://example.com" rel="nofollow">[1]</a>
-Numbered: <a href="http://example.net" class="external autonumber" title="http://example.net" rel="nofollow">[2]</a>
-Numbered: <a href="http://example.com" class="external autonumber" title="http://example.com" rel="nofollow">[3]</a>
+<p>Numbered: <a href="http://example.com" class="external autonumber" rel="nofollow">[1]</a>
+Numbered: <a href="http://example.net" class="external autonumber" rel="nofollow">[2]</a>
+Numbered: <a href="http://example.com" class="external autonumber" rel="nofollow">[3]</a>
</p>
!!end
@@ -549,7 +552,7 @@ External links: specified text
!! input
Specified text: [http://example.com link]
!! result
-<p>Specified text: <a href="http://example.com" class="external text" title="http://example.com" rel="nofollow">link</a>
+<p>Specified text: <a href="http://example.com" class="external text" rel="nofollow">link</a>
</p>
!!end
@@ -558,7 +561,7 @@ External links: trail
!! input
Linktrails should not work for external links: [http://example.com link]s
!! result
-<p>Linktrails should not work for external links: <a href="http://example.com" class="external text" title="http://example.com" rel="nofollow">link</a>s
+<p>Linktrails should not work for external links: <a href="http://example.com" class="external text" rel="nofollow">link</a>s
</p>
!! end
@@ -567,7 +570,7 @@ External links: dollar sign in URL
!! input
http://example.com/1$2345
!! result
-<p><a href="http://example.com/1$2345" class="external free" title="http://example.com/1$2345" rel="nofollow">http://example.com/1$2345</a>
+<p><a href="http://example.com/1$2345" class="external free" rel="nofollow">http://example.com/1$2345</a>
</p>
!! end
@@ -576,7 +579,7 @@ External links: dollar sign in URL (named)
!! input
[http://example.com/1$2345]
!! result
-<p><a href="http://example.com/1$2345" class="external autonumber" title="http://example.com/1$2345" rel="nofollow">[1]</a>
+<p><a href="http://example.com/1$2345" class="external autonumber" rel="nofollow">[1]</a>
</p>
!!end
@@ -585,7 +588,7 @@ External links: open square bracket forbidden in URL (bug 4377)
!! input
http://example.com/1[2345
!! result
-<p><a href="http://example.com/1" class="external free" title="http://example.com/1" rel="nofollow">http://example.com/1</a>[2345
+<p><a href="http://example.com/1" class="external free" rel="nofollow">http://example.com/1</a>[2345
</p>
!! end
@@ -594,7 +597,7 @@ External links: open square bracket forbidden in URL (named) (bug 4377)
!! input
[http://example.com/1[2345]
!! result
-<p><a href="http://example.com/1" class="external text" title="http://example.com/1" rel="nofollow">[2345</a>
+<p><a href="http://example.com/1" class="external text" rel="nofollow">[2345</a>
</p>
!!end
@@ -603,7 +606,7 @@ External links: nowiki in URL link text (bug 6230)
!!input
[http://example.com/ <nowiki>''example site''</nowiki>]
!! result
-<p><a href="http://example.com/" class="external text" title="http://example.com/" rel="nofollow">''example site''</a>
+<p><a href="http://example.com/" class="external text" rel="nofollow">''example site''</a>
</p>
!! end
@@ -613,7 +616,7 @@ External links: newline forbidden in text (bug 6230 regression check)
[http://example.com/ first
second]
!! result
-<p>[<a href="http://example.com/" class="external free" title="http://example.com/" rel="nofollow">http://example.com/</a> first
+<p>[<a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a> first
second]
</p>
!!end
@@ -641,7 +644,7 @@ Link to non-http image, no img tag
!! input
Link to non-http image, no img tag: ftp://example.com/test.jpg
!! result
-<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class="external free" title="ftp://example.com/test.jpg" rel="nofollow">ftp://example.com/test.jpg</a>
+<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class="external free" rel="nofollow">ftp://example.com/test.jpg</a>
</p>
!! end
@@ -650,7 +653,7 @@ External links: terminating separator
!! input
Terminating separator: http://example.com/thing,
!! result
-<p>Terminating separator: <a href="http://example.com/thing" class="external free" title="http://example.com/thing" rel="nofollow">http://example.com/thing</a>,
+<p>Terminating separator: <a href="http://example.com/thing" class="external free" rel="nofollow">http://example.com/thing</a>,
</p>
!! end
@@ -659,7 +662,7 @@ External links: intervening separator
!! input
Intervening separator: http://example.com/1,2,3
!! result
-<p>Intervening separator: <a href="http://example.com/1,2,3" class="external free" title="http://example.com/1,2,3" rel="nofollow">http://example.com/1,2,3</a>
+<p>Intervening separator: <a href="http://example.com/1,2,3" class="external free" rel="nofollow">http://example.com/1,2,3</a>
</p>
!! end
@@ -668,7 +671,7 @@ External links: old bug with URL in query
!! input
Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
!! result
-<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class="external text" title="http://example.com/thing?url=http://example.com" rel="nofollow">link</a>
+<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class="external text" rel="nofollow">link</a>
</p>
!! end
@@ -677,7 +680,7 @@ External links: old URL-in-URL bug, mixed protocols
!! input
And again with mixed protocols: [ftp://example.com?url=http://example.com link]
!! result
-<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class="external text" title="ftp://example.com?url=http://example.com" rel="nofollow">link</a>
+<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class="external text" rel="nofollow">link</a>
</p>
!!end
@@ -686,7 +689,7 @@ External links: URL in text
!! input
URL in text: [http://example.com http://example.com]
!! result
-<p>URL in text: <a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a>
+<p>URL in text: <a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>
</p>
!! end
@@ -695,7 +698,7 @@ External links: Clickable images
!! input
ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
!! result
-<p>ja-style clickable images: <a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
+<p>ja-style clickable images: <a href="http://example.com" class="external text" rel="nofollow"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
</p>
!!end
@@ -704,7 +707,7 @@ External links: raw ampersand
!! input
Old &amp; use: http://x&y
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external free" title="http://x&amp;y" rel="nofollow">http://x&amp;y</a>
+<p>Old &amp; use: <a href="http://x&amp;y" class="external free" rel="nofollow">http://x&amp;y</a>
</p>
!! end
@@ -713,7 +716,7 @@ External links: encoded ampersand
!! input
Old &amp; use: http://x&amp;y
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external free" title="http://x&amp;y" rel="nofollow">http://x&amp;y</a>
+<p>Old &amp; use: <a href="http://x&amp;y" class="external free" rel="nofollow">http://x&amp;y</a>
</p>
!! end
@@ -722,7 +725,7 @@ External links: encoded equals (bug 6102)
!! input
http://example.com/?foo&#61;bar
!! result
-<p><a href="http://example.com/?foo=bar" class="external free" title="http://example.com/?foo=bar" rel="nofollow">http://example.com/?foo=bar</a>
+<p><a href="http://example.com/?foo=bar" class="external free" rel="nofollow">http://example.com/?foo=bar</a>
</p>
!! end
@@ -731,7 +734,7 @@ External links: [raw ampersand]
!! input
Old &amp; use: [http://x&y]
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" title="http://x&amp;y" rel="nofollow">[1]</a>
+<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -740,7 +743,7 @@ External links: [encoded ampersand]
!! input
Old &amp; use: [http://x&amp;y]
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" title="http://x&amp;y" rel="nofollow">[1]</a>
+<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -749,7 +752,7 @@ External links: [encoded equals] (bug 6102)
!! input
[http://example.com/?foo&#61;bar]
!! result
-<p><a href="http://example.com/?foo=bar" class="external autonumber" title="http://example.com/?foo=bar" rel="nofollow">[1]</a>
+<p><a href="http://example.com/?foo=bar" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -758,7 +761,7 @@ External links: [IDN ignored character reference in hostname; strip it right off
!! input
[http://e&zwnj;xample.com/]
!! result
-<p><a href="http://example.com/" class="external autonumber" title="http://example.com/" rel="nofollow">[1]</a>
+<p><a href="http://example.com/" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -767,7 +770,7 @@ External links: IDN ignored character reference in hostname; strip it right off
!! input
http://e&zwnj;xample.com/
!! result
-<p><a href="http://example.com/" class="external free" title="http://example.com/" rel="nofollow">http://example.com/</a>
+<p><a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a>
</p>
!! end
@@ -776,7 +779,7 @@ External links: www.jpeg.org (bug 554)
!! input
http://www.jpeg.org
!!result
-<p><a href="http://www.jpeg.org" class="external free" title="http://www.jpeg.org" rel="nofollow">http://www.jpeg.org</a>
+<p><a href="http://www.jpeg.org" class="external free" rel="nofollow">http://www.jpeg.org</a>
</p>
!! end
@@ -785,7 +788,7 @@ External links: URL within URL (original bug 2)
!! input
[http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
!! result
-<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class="external autonumber" title="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" rel="nofollow">[1]</a>
+<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -794,7 +797,7 @@ BUG 361: URL inside bracketed URL
!! input
[http://www.example.com/foo http://www.example.com/bar]
!! result
-<p><a href="http://www.example.com/foo" class="external text" title="http://www.example.com/foo" rel="nofollow">http://www.example.com/bar</a>
+<p><a href="http://www.example.com/foo" class="external text" rel="nofollow">http://www.example.com/bar</a>
</p>
!! end
@@ -803,7 +806,7 @@ BUG 361: URL within URL, not bracketed
!! input
http://www.example.com/foo?=http://www.example.com/bar
!! result
-<p><a href="http://www.example.com/foo?=http://www.example.com/bar" class="external free" title="http://www.example.com/foo?=http://www.example.com/bar" rel="nofollow">http://www.example.com/foo?=http://www.example.com/bar</a>
+<p><a href="http://www.example.com/foo?=http://www.example.com/bar" class="external free" rel="nofollow">http://www.example.com/foo?=http://www.example.com/bar</a>
</p>
!! end
@@ -812,7 +815,7 @@ BUG 289: ">"-token in URL-tail
!! input
http://www.example.com/<hello>
!! result
-<p><a href="http://www.example.com/" class="external free" title="http://www.example.com/" rel="nofollow">http://www.example.com/</a>&lt;hello&gt;
+<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a>&lt;hello&gt;
</p>
!!end
@@ -821,7 +824,7 @@ BUG 289: literal ">"-token in URL-tail
!! input
http://www.example.com/<b>html</b>
!! result
-<p><a href="http://www.example.com/" class="external free" title="http://www.example.com/" rel="nofollow">http://www.example.com/</a><b>html</b>
+<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a><b>html</b>
</p>
!!end
@@ -830,7 +833,7 @@ BUG 289: ">"-token in bracketed URL
!! input
[http://www.example.com/<hello> stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" title="http://www.example.com/" rel="nofollow">&lt;hello&gt; stuff</a>
+<p><a href="http://www.example.com/" class="external text" rel="nofollow">&lt;hello&gt; stuff</a>
</p>
!!end
@@ -839,7 +842,7 @@ BUG 289: literal ">"-token in bracketed URL
!! input
[http://www.example.com/<b>html</b> stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" title="http://www.example.com/" rel="nofollow"><b>html</b> stuff</a>
+<p><a href="http://www.example.com/" class="external text" rel="nofollow"><b>html</b> stuff</a>
</p>
!!end
@@ -848,7 +851,7 @@ BUG 289: literal double quote at end of URL
!! input
http://www.example.com/"hello"
!! result
-<p><a href="http://www.example.com/" class="external free" title="http://www.example.com/" rel="nofollow">http://www.example.com/</a>"hello"
+<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a>"hello"
</p>
!!end
@@ -857,7 +860,7 @@ BUG 289: literal double quote in bracketed URL
!! input
[http://www.example.com/"hello" stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" title="http://www.example.com/" rel="nofollow">"hello" stuff</a>
+<p><a href="http://www.example.com/" class="external text" rel="nofollow">"hello" stuff</a>
</p>
!!end
@@ -869,7 +872,7 @@ disabled
!! input
[http://www.example.com test]
!! result
-<p>[<a href="http://www.example.com" class="external free" title="http://www.example.com" rel="nofollow">http://www.example.com</a> test]
+<p>[<a href="http://www.example.com" class="external free" rel="nofollow">http://www.example.com</a> test]
</p>
!! end
@@ -878,7 +881,7 @@ External links: multiple legal whitespace is fine, Magnus. Don't break it please
!! input
[http://www.example.com test]
!! result
-<p><a href="http://www.example.com" class="external text" title="http://www.example.com" rel="nofollow">test</a>
+<p><a href="http://www.example.com" class="external text" rel="nofollow">test</a>
</p>
!! end
@@ -887,7 +890,7 @@ External links: wiki links within external link (Bug 3695)
!! input
[http://example.com [[wikilink]] embedded in ext link]
!! result
-<p><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"> embedded in ext link</a>
+<p><a href="http://example.com" class="external text" rel="nofollow"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a href="http://example.com" class="external text" rel="nofollow"> embedded in ext link</a>
</p>
!! end
@@ -912,11 +915,11 @@ Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
''Something [http://example.com mixed''''', even bold]'''
'''''Now [http://example.com both''''']
!! result
-<p><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><i>text</i></a>
-<a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><b>text</b></a>
-<i>Something </i><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><i>in italic</i></a>
-<i>Something </i><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><i>mixed</i><b>, even bold</b></a>
-<i><b>Now </b></i><a href="http://example.com" class="external text" title="http://example.com" rel="nofollow"><i><b>both</b></i></a>
+<p><a href="http://example.com" class="external text" rel="nofollow"><i>text</i></a>
+<a href="http://example.com" class="external text" rel="nofollow"><b>text</b></a>
+<i>Something </i><a href="http://example.com" class="external text" rel="nofollow"><i>in italic</i></a>
+<i>Something </i><a href="http://example.com" class="external text" rel="nofollow"><i>mixed</i><b>, even bold</b></a>
+<i><b>Now </b></i><a href="http://example.com" class="external text" rel="nofollow"><i><b>both</b></i></a>
</p>
!! end
@@ -926,7 +929,7 @@ Bug 4781: %26 in URL
!! input
http://www.example.com/?title=AT%26T
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external free" title="http://www.example.com/?title=AT%26T" rel="nofollow">http://www.example.com/?title=AT%26T</a>
+<p><a href="http://www.example.com/?title=AT%26T" class="external free" rel="nofollow">http://www.example.com/?title=AT%26T</a>
</p>
!! end
@@ -935,7 +938,7 @@ Bug 4781, 5267: %26 in URL
!! input
http://www.example.com/?title=100%25_Bran
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external free" title="http://www.example.com/?title=100%25_Bran" rel="nofollow">http://www.example.com/?title=100%25_Bran</a>
+<p><a href="http://www.example.com/?title=100%25_Bran" class="external free" rel="nofollow">http://www.example.com/?title=100%25_Bran</a>
</p>
!! end
@@ -944,7 +947,7 @@ Bug 4781, 5267: %28, %29 in URL
!! input
http://www.example.com/?title=Ben-Hur_%281959_film%29
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external free" title="http://www.example.com/?title=Ben-Hur_%281959_film%29" rel="nofollow">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
+<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external free" rel="nofollow">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
</p>
!! end
@@ -954,7 +957,7 @@ Bug 4781: %26 in autonumber URL
!! input
[http://www.example.com/?title=AT%26T]
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external autonumber" title="http://www.example.com/?title=AT%26T" rel="nofollow">[1]</a>
+<p><a href="http://www.example.com/?title=AT%26T" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -963,7 +966,7 @@ Bug 4781, 5267: %26 in autonumber URL
!! input
[http://www.example.com/?title=100%25_Bran]
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external autonumber" title="http://www.example.com/?title=100%25_Bran" rel="nofollow">[1]</a>
+<p><a href="http://www.example.com/?title=100%25_Bran" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -972,7 +975,7 @@ Bug 4781, 5267: %28, %29 in autonumber URL
!! input
[http://www.example.com/?title=Ben-Hur_%281959_film%29]
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external autonumber" title="http://www.example.com/?title=Ben-Hur_%281959_film%29" rel="nofollow">[1]</a>
+<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external autonumber" rel="nofollow">[1]</a>
</p>
!! end
@@ -982,7 +985,7 @@ Bug 4781: %26 in bracketed URL
!! input
[http://www.example.com/?title=AT%26T link]
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external text" title="http://www.example.com/?title=AT%26T" rel="nofollow">link</a>
+<p><a href="http://www.example.com/?title=AT%26T" class="external text" rel="nofollow">link</a>
</p>
!! end
@@ -991,7 +994,7 @@ Bug 4781, 5267: %26 in bracketed URL
!! input
[http://www.example.com/?title=100%25_Bran link]
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external text" title="http://www.example.com/?title=100%25_Bran" rel="nofollow">link</a>
+<p><a href="http://www.example.com/?title=100%25_Bran" class="external text" rel="nofollow">link</a>
</p>
!! end
@@ -1000,7 +1003,7 @@ Bug 4781, 5267: %28, %29 in bracketed URL
!! input
[http://www.example.com/?title=Ben-Hur_%281959_film%29 link]
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external text" title="http://www.example.com/?title=Ben-Hur_%281959_film%29" rel="nofollow">link</a>
+<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external text" rel="nofollow">link</a>
</p>
!! end
@@ -1009,7 +1012,7 @@ External link containing double-single-quotes in text '' (bug 4598 sanity check)
!! input
Some [http://example.com/ pretty ''italics'' and stuff]!
!! result
-<p>Some <a href="http://example.com/" class="external text" title="http://example.com/" rel="nofollow">pretty <i>italics</i> and stuff</a>!
+<p>Some <a href="http://example.com/" class="external text" rel="nofollow">pretty <i>italics</i> and stuff</a>!
</p>
!! end
@@ -1018,7 +1021,7 @@ External link containing double-single-quotes in text embedded in italics (bug 4
!! input
''Some [http://example.com/ pretty ''italics'' and stuff]!''
!! result
-<p><i>Some </i><a href="http://example.com/" class="external text" title="http://example.com/" rel="nofollow"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
+<p><i>Some </i><a href="http://example.com/" class="external text" rel="nofollow"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
</p>
!! end
@@ -1269,6 +1272,8 @@ Invalid attributes in table cell (bug 1830)
# specified here is now valid XML, which is an improvement . . .
!! test
Table security: embedded pipes (http://lists.wikimedia.org/mailman/htdig/wikitech-l/2006-April/022293.html)
+!! options
+disabled
!! input
{|
| |[ftp://|x||]" onmouseover="alert(document.cookie)">test
@@ -1454,7 +1459,7 @@ Example for such a section: == < ==
!! input
[[%23%3c]][[%23%3e]]
!! result
-<p><a href="#.3C" title="">#&lt;</a><a href="#.3E" title="">#&gt;</a>
+<p><a href="#.3C">#&lt;</a><a href="#.3E">#&gt;</a>
</p>
!! end
@@ -1469,6 +1474,8 @@ Link containing "<#" and ">#" as a hex sequences
!! test
Link containing double-single-quotes '' (bug 4598)
+!! options
+disabled
!! input
[[Lista d''e paise d''o munno]]
!! result
@@ -1499,7 +1506,7 @@ Plain link to URL
!! input
[[http://www.example.com]]
!! result
-<p>[<a href="http://www.example.com" class="external autonumber" title="http://www.example.com" rel="nofollow">[1]</a>]
+<p>[<a href="http://www.example.com" class="external autonumber" rel="nofollow">[1]</a>]
</p>
!! end
@@ -1510,7 +1517,7 @@ Plain link to URL
# ----
# I'm changing it to match the current output--it arguably makes more
# sense in the light of the test above. Old expected result was:
-#<p>Piped link to URL: <a href="/index.php?title=Http://www.example.com&amp;action=edit" class="new" title="Http://www.example.com">an example URL</a>
+#<p>Piped link to URL: <a href="/index.php?title=Http://www.example.com&amp;action=edit" class="new">an example URL</a>
#</p>
# But I think this test is bordering on "garbage in, garbage out" anyway.
# -- wtm
@@ -1519,7 +1526,7 @@ Piped link to URL
!! input
Piped link to URL: [[http://www.example.com|an example URL]]
!! result
-<p>Piped link to URL: [<a href="http://www.example.com|an" class="external text" title="http://www.example.com|an" rel="nofollow">example URL</a>]
+<p>Piped link to URL: [<a href="http://www.example.com|an" class="external text" rel="nofollow">example URL</a>]
</p>
!! end
@@ -1591,6 +1598,16 @@ title=[[0]]
</p>
!! end
+!! test
+Non-breaking spaces in title
+!! input
+[[&nbsp; Main &nbsp; Page &nbsp;]]
+!! result
+<p><a href="/wiki/Main_Page" title="Main Page">&nbsp; Main &nbsp; Page &nbsp;</a>
+</p>
+!!end
+
+
###
### Interwiki links (see maintenance/interwiki.sql)
###
@@ -1946,7 +1963,6 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
Magic Word: {{NAMESPACE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-disabled # FIXME
!! input
{{NAMESPACE}}
!! result
@@ -1958,7 +1974,6 @@ disabled # FIXME
Magic Word: {{NAMESPACEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-disabled # FIXME
!! input
{{NAMESPACEE}}
!! result
@@ -1980,7 +1995,7 @@ Magic Word: {{NUMBEROFFILES}}
!! input
{{NUMBEROFFILES}}
!! result
-<p>1
+<p>2
</p>
!! end
@@ -1988,7 +2003,6 @@ Magic Word: {{NUMBEROFFILES}}
Magic Word: {{PAGENAME}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-disabled # FIXME
!! input
{{PAGENAME}}
!! result
@@ -2003,7 +2017,7 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
!! input
{{PAGENAMEE}}
!! result
-<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
+<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
@@ -2030,7 +2044,7 @@ Magic Word: {{SERVER}}
!! input
{{SERVER}}
!! result
-<p><a href="http://localhost" class="external free" title="http://localhost" rel="nofollow">http://localhost</a>
+<p><a href="http://localhost" class="external free" rel="nofollow">http://localhost</a>
</p>
!! end
@@ -2039,7 +2053,7 @@ Magic Word: {{SERVERNAME}}
!! input
{{SERVERNAME}}
!! result
-<p>Britney Spears
+<p>Britney-Spears
</p>
!! end
@@ -2180,7 +2194,7 @@ Magic links: RFC (bug 479)
!! input
RFC 822
!! result
-<p><a href="http://tools.ietf.org/html/rfc822" class="external" title="http://tools.ietf.org/html/rfc822">RFC 822</a>
+<p><a href="http://tools.ietf.org/html/rfc822" class="external mw-magiclink-rfc">RFC 822</a>
</p>
!! end
@@ -2189,7 +2203,7 @@ Magic links: ISBN (bug 1937)
!! input
ISBN 0-306-40615-2
!! result
-<p><a href="/wiki/Special:BookSources/0306406152" class="internal">ISBN 0-306-40615-2</a>
+<p><a href="/wiki/Special:BookSources/0306406152" class="internal mw-magiclink-isbn">ISBN 0-306-40615-2</a>
</p>
!! end
@@ -2198,7 +2212,7 @@ Magic links: PMID incorrectly converts space to underscore
!! input
PMID 1234
!! result
-<p><a href="http://www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" class="external" title="http://www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
+<p><a href="http://www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" class="external mw-magiclink-pmid">PMID 1234</a>
</p>
!! end
@@ -2681,8 +2695,8 @@ Bug 6563: Edit link generation for section shown by <includeonly>
!! input
{{includeonly section}}
!! result
-<a name="Includeonly_section" id="Includeonly_section"></a><h2><span class="editsection">[<a href="/index.php?title=Template:Includeonly_section&amp;action=edit&amp;section=T-1" title="Template:Includeonly section">edit</a>]</span> <span class="mw-headline">Includeonly section</span></h2>
-<a name="Section_T-1" id="Section_T-1"></a><h2><span class="editsection">[<a href="/index.php?title=Template:Includeonly_section&amp;action=edit&amp;section=T-2" title="Template:Includeonly section">edit</a>]</span> <span class="mw-headline">Section T-1</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Template:Includeonly_section&amp;action=edit&amp;section=T-1" title="Template:Includeonly section">edit</a>]</span> <span class="mw-headline" id="Includeonly_section">Includeonly section</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Template:Includeonly_section&amp;action=edit&amp;section=T-2" title="Template:Includeonly section">edit</a>]</span> <span class="mw-headline" id="Section_T-1">Section T-1</span></h2>
!! end
@@ -2708,7 +2722,7 @@ Bug 6563: Edit link generation for section suppressed by <includeonly>
</includeonly>
==Section 1==
!! result
-<a name="Section_1" id="Section_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section 1">edit</a>]</span> <span class="mw-headline">Section 1</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section 1">edit</a>]</span> <span class="mw-headline" id="Section_1">Section 1</span></h2>
!! end
@@ -2918,6 +2932,46 @@ pst
Foo
!! end
+!! article
+Template:SubstTest
+!!text
+{{<includeonly>subst:</includeonly>Includes}}
+!! endarticle
+
+!! article
+Template:SafeSubstTest
+!! text
+{{<includeonly>safesubst:</includeonly>Includes}}
+!! endarticle
+
+!! test
+bug 22297: safesubst: works during PST
+!! options
+pst
+!! input
+{{subst:SafeSubstTest}}{{safesubst:SubstTest}}
+!! result
+FoobarFoobar
+!! end
+
+!! test
+bug 22297: safesubst: works during normal parse
+!! input
+{{SafeSubstTest}}
+!! result
+<p>Foobar
+</p>
+!! end
+
+!! test:
+subst: does not work during normal parse
+!! input
+{{SubstTest}}
+!! result
+<p>{{subst:Includes}}
+</p>
+!! end
+
!! test
pre-save transform: context links ("pipe trick")
!! options
@@ -3130,7 +3184,7 @@ Simple image
!! input
[[Image:foobar.jpg]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Image:foobar.jpg"><img alt="Image:foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3139,7 +3193,7 @@ Right-aligned image
!! input
[[Image:foobar.jpg|right]]
!! result
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
!! end
@@ -3148,7 +3202,7 @@ Simple image (using File: namespace, now canonical)
!! input
[[File:foobar.jpg]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="File:foobar.jpg"><img alt="File:foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3157,7 +3211,7 @@ Image with caption
!! input
[[Image:foobar.jpg|right|Caption text]]
!! result
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a></div>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
!! end
@@ -3166,7 +3220,7 @@ Image with link parameter, wiki target
!! input
[[Image:foobar.jpg|link=Target page]]
!! result
-<p><a href="/wiki/Target_page" title="Target page"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/Target_page" title="Target page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3175,7 +3229,7 @@ Image with link parameter, URL target
!! input
[[Image:foobar.jpg|link=http://example.com/]]
!! result
-<p><a href="http://example.com/"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3184,7 +3238,25 @@ Image with empty link parameter
!! input
[[Image:foobar.jpg|link=]]
!! result
-<p><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" />
+<p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
+</p>
+!! end
+
+!! test
+Image with link parameter (wiki target) and unnamed parameter
+!! input
+[[Image:foobar.jpg|link=Target page|Title]]
+!! result
+<p><a href="/wiki/Target_page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+!! end
+
+!! test
+Image with link parameter (URL target) and unnamed parameter
+!! input
+[[Image:foobar.jpg|link=http://example.com/|Title]]
+!! result
+<p><a href="http://example.com/" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3195,7 +3267,7 @@ Image with frame and link
!! input
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
!! result
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image" title="This is a test image Main Page"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! end
@@ -3204,7 +3276,7 @@ Image with frame and link and explicit alt
!! input
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
!! result
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image" title="This is a test image Main Page"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! end
@@ -3213,7 +3285,7 @@ Image with wiki markup in implicit alt
!! input
[[Image:Foobar.jpg|testing '''bold''' in alt]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3222,7 +3294,7 @@ Image with wiki markup in explicit alt
!! input
[[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3238,11 +3310,20 @@ Add test with existing image page
!! end
!! test
+bug 18784 Link to non-existent image page with caption should use caption as link text
+!! input
+[[:Image:test|caption]]
+!! result
+<p><a href="/index.php?title=File:Test&amp;action=edit&amp;redlink=1" class="new" title="File:Test (page does not exist)">caption</a>
+</p>
+!! end
+
+!! test
Frameless image caption with a free URL
!! input
[[Image:foobar.jpg|http://example.com]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3251,7 +3332,7 @@ Thumbnail image caption with a free URL
!! input
[[Image:foobar.jpg|thumb|http://example.com]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a></div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a></div></div></div>
!! end
@@ -3260,7 +3341,7 @@ Thumbnail image caption with a free URL and explicit alt
!! input
[[Image:foobar.jpg|thumb|http://example.com|alt=Alteration]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a></div></div></div>
!! end
@@ -3269,7 +3350,7 @@ BUG 1887: A ISBN with a thumbnail
!! input
[[Image:foobar.jpg|thumb|ISBN 1235467890]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="ISBN 1235467890"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal">ISBN 1235467890</a></div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
!! end
@@ -3278,7 +3359,7 @@ BUG 1887: A RFC with a thumbnail
!! input
[[Image:foobar.jpg|thumb|This is RFC 12354]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="This is RFC 12354"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a href="http://tools.ietf.org/html/rfc12354" class="external" title="http://tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a href="http://tools.ietf.org/html/rfc12354" class="external mw-magiclink-rfc">RFC 12354</a></div></div></div>
!! end
@@ -3287,7 +3368,7 @@ BUG 1887: A mailto link with a thumbnail
!! input
[[Image:foobar.jpg|thumb|Please mailto:nobody@example.com]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="Please mailto:nobody@example.com"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a href="mailto:nobody@example.com" class="external free" title="mailto:nobody@example.com" rel="nofollow">mailto:nobody@example.com</a></div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a href="mailto:nobody@example.com" class="external free" rel="nofollow">mailto:nobody@example.com</a></div></div></div>
!! end
@@ -3297,7 +3378,7 @@ so math is not stripped and turns up as escaped &lt;math&gt; tags.
!! input
[[Image:foobar.jpg|thumb|<math>2+2</math>]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="&lt;math&gt;2+2&lt;/math&gt;"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>&lt;math&gt;2+2&lt;/math&gt;</div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>&lt;math&gt;2+2&lt;/math&gt;</div></div></div>
!! end
@@ -3308,7 +3389,7 @@ math
!! input
[[Image:foobar.jpg|thumb|<math>2+2</math>]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="2 + 2"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><span class="texhtml">2 + 2</span></div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><span class="texhtml">2 + 2</span></div></div></div>
!! end
@@ -3318,7 +3399,7 @@ BUG 648: Frameless image caption with a link
!! input
[[Image:foobar.jpg|text with a [[link]] in it]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3327,7 +3408,7 @@ BUG 648: Frameless image caption with a link (suffix)
!! input
[[Image:foobar.jpg|text with a [[link]]foo in it]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3336,7 +3417,7 @@ BUG 648: Frameless image caption with an interwiki link
!! input
[[Image:foobar.jpg|text with a [[MeatBall:Link]] in it]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3345,7 +3426,7 @@ BUG 648: Frameless image caption with a piped interwiki link
!! input
[[Image:foobar.jpg|text with a [[MeatBall:Link|link]] in it]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3354,7 +3435,7 @@ Escape HTML special chars in image alt text
!! input
[[Image:foobar.jpg|& < > "]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3363,7 +3444,7 @@ BUG 499: Alt text should have &#1234;, not &amp;1234;
!! input
[[Image:foobar.jpg|&#9792;]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
@@ -3381,7 +3462,7 @@ Image caption containing another image
!! input
[[Image:Foobar.jpg|thumb|This is a caption with another [[Image:icon.png|image]] inside it!]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="This is a caption with another File:Icon.png inside it!"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption with another <a href="/index.php?title=Special:Upload&amp;wpDestFile=Icon.png" class="new" title="File:Icon.png">File:Icon.png</a> inside it!</div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption with another <a href="/index.php?title=Special:Upload&amp;wpDestFile=Icon.png" class="new" title="File:Icon.png">image</a> inside it!</div></div></div>
!! end
@@ -3391,7 +3472,7 @@ Image caption containing a newline
[[Image:Foobar.jpg|This
*is some text]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
@@ -3401,7 +3482,7 @@ Bug 3090: External links other than http: in image captions
!! input
[[Image:Foobar.jpg|thumb|200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image" title="This caption has irc and Secure ext links in it."><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a href="irc://example.net" class="external text" title="irc://example.net" rel="nofollow">irc</a> and <a href="https://example.com" class="external text" title="https://example.com" rel="nofollow">Secure</a> ext links in it.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="200" height="23" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a href="irc://example.net" class="external text" rel="nofollow">irc</a> and <a href="https://example.com" class="external text" rel="nofollow">Secure</a> ext links in it.</div></div></div>
!! end
@@ -3471,7 +3552,7 @@ Link to category
!! input
[[:Category:MediaWiki User's Guide]]
!! result
-<p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User&#39;s Guide">Category:MediaWiki User's Guide</a>
+<p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
</p>
!! end
@@ -3482,7 +3563,7 @@ cat
!! input
[[Category:MediaWiki User's Guide]]
!! result
-<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User&#039;s Guide">MediaWiki User's Guide</a>
+<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
!! test
@@ -3523,13 +3604,13 @@ More
===Smaller headline===
Blah blah
!! result
-<a name="Headline_1" id="Headline_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a>]</span> <span class="mw-headline"> Headline 1 </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a>]</span> <span class="mw-headline" id="Headline_1"> Headline 1 </span></h2>
<p>Some text
</p>
-<a name="Headline_2" id="Headline_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Headline 2">edit</a>]</span> <span class="mw-headline">Headline 2</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Headline 2">edit</a>]</span> <span class="mw-headline" id="Headline_2">Headline 2</span></h2>
<p>More
</p>
-<a name="Smaller_headline" id="Smaller_headline"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Smaller headline">edit</a>]</span> <span class="mw-headline">Smaller headline</span></h3>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Smaller headline">edit</a>]</span> <span class="mw-headline" id="Smaller_headline">Smaller headline</span></h3>
<p>Blah blah
</p>
!! end
@@ -3546,36 +3627,36 @@ Section headings with TOC
Some text
===Another headline===
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
<ul>
-<li class="toclevel-2"><a href="#Subheadline_1"><span class="tocnumber">1.1</span> <span class="toctext">Subheadline 1</span></a>
+<li class="toclevel-2 tocsection-2"><a href="#Subheadline_1"><span class="tocnumber">1.1</span> <span class="toctext">Subheadline 1</span></a>
<ul>
-<li class="toclevel-3"><a href="#Skipping_a_level"><span class="tocnumber">1.1.1</span> <span class="toctext">Skipping a level</span></a>
+<li class="toclevel-3 tocsection-3"><a href="#Skipping_a_level"><span class="tocnumber">1.1.1</span> <span class="toctext">Skipping a level</span></a>
<ul>
-<li class="toclevel-4"><a href="#Skipping_a_level_2"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Skipping a level</span></a></li>
+<li class="toclevel-4 tocsection-4"><a href="#Skipping_a_level_2"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Skipping a level</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
-<li class="toclevel-1"><a href="#Headline_2"><span class="tocnumber">2</span> <span class="toctext">Headline 2</span></a>
+<li class="toclevel-1 tocsection-5"><a href="#Headline_2"><span class="tocnumber">2</span> <span class="toctext">Headline 2</span></a>
<ul>
-<li class="toclevel-2"><a href="#Another_headline"><span class="tocnumber">2.1</span> <span class="toctext">Another headline</span></a></li>
+<li class="toclevel-2 tocsection-6"><a href="#Another_headline"><span class="tocnumber">2.1</span> <span class="toctext">Another headline</span></a></li>
</ul>
</li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="Headline_1" id="Headline_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a>]</span> <span class="mw-headline"> Headline 1 </span></h2>
-<a name="Subheadline_1" id="Subheadline_1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Subheadline 1">edit</a>]</span> <span class="mw-headline"> Subheadline 1 </span></h3>
-<a name="Skipping_a_level" id="Skipping_a_level"></a><h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Skipping a level">edit</a>]</span> <span class="mw-headline"> Skipping a level </span></h5>
-<a name="Skipping_a_level_2" id="Skipping_a_level_2"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Skipping a level">edit</a>]</span> <span class="mw-headline"> Skipping a level </span></h6>
-<a name="Headline_2" id="Headline_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Headline 2">edit</a>]</span> <span class="mw-headline"> Headline 2 </span></h2>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a>]</span> <span class="mw-headline" id="Headline_1"> Headline 1 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Subheadline 1">edit</a>]</span> <span class="mw-headline" id="Subheadline_1"> Subheadline 1 </span></h3>
+<h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Skipping a level">edit</a>]</span> <span class="mw-headline" id="Skipping_a_level"> Skipping a level </span></h5>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Skipping a level">edit</a>]</span> <span class="mw-headline" id="Skipping_a_level_2"> Skipping a level </span></h6>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Headline 2">edit</a>]</span> <span class="mw-headline" id="Headline_2"> Headline 2 </span></h2>
<p>Some text
</p>
-<a name="Another_headline" id="Another_headline"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Another headline">edit</a>]</span> <span class="mw-headline">Another headline</span></h3>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Another headline">edit</a>]</span> <span class="mw-headline" id="Another_headline">Another headline</span></h3>
!! end
@@ -3594,23 +3675,23 @@ Handling of sections up to level 6 and beyond
========= Level 9 Heading=========
========== Level 10 Heading==========
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
<ul>
-<li class="toclevel-2"><a href="#Level_2_Heading"><span class="tocnumber">1.1</span> <span class="toctext">Level 2 Heading</span></a>
+<li class="toclevel-2 tocsection-2"><a href="#Level_2_Heading"><span class="tocnumber">1.1</span> <span class="toctext">Level 2 Heading</span></a>
<ul>
-<li class="toclevel-3"><a href="#Level_3_Heading"><span class="tocnumber">1.1.1</span> <span class="toctext">Level 3 Heading</span></a>
+<li class="toclevel-3 tocsection-3"><a href="#Level_3_Heading"><span class="tocnumber">1.1.1</span> <span class="toctext">Level 3 Heading</span></a>
<ul>
-<li class="toclevel-4"><a href="#Level_4_Heading"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Level 4 Heading</span></a>
+<li class="toclevel-4 tocsection-4"><a href="#Level_4_Heading"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Level 4 Heading</span></a>
<ul>
-<li class="toclevel-5"><a href="#Level_5_Heading"><span class="tocnumber">1.1.1.1.1</span> <span class="toctext">Level 5 Heading</span></a>
+<li class="toclevel-5 tocsection-5"><a href="#Level_5_Heading"><span class="tocnumber">1.1.1.1.1</span> <span class="toctext">Level 5 Heading</span></a>
<ul>
-<li class="toclevel-6"><a href="#Level_6_Heading"><span class="tocnumber">1.1.1.1.1.1</span> <span class="toctext">Level 6 Heading</span></a></li>
-<li class="toclevel-6"><a href="#.3D_Level_7_Heading.3D"><span class="tocnumber">1.1.1.1.1.2</span> <span class="toctext">= Level 7 Heading=</span></a></li>
-<li class="toclevel-6"><a href="#.3D.3D_Level_8_Heading.3D.3D"><span class="tocnumber">1.1.1.1.1.3</span> <span class="toctext">== Level 8 Heading==</span></a></li>
-<li class="toclevel-6"><a href="#.3D.3D.3D_Level_9_Heading.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.4</span> <span class="toctext">=== Level 9 Heading===</span></a></li>
-<li class="toclevel-6"><a href="#.3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.5</span> <span class="toctext">==== Level 10 Heading====</span></a></li>
+<li class="toclevel-6 tocsection-6"><a href="#Level_6_Heading"><span class="tocnumber">1.1.1.1.1.1</span> <span class="toctext">Level 6 Heading</span></a></li>
+<li class="toclevel-6 tocsection-7"><a href="#.3D_Level_7_Heading.3D"><span class="tocnumber">1.1.1.1.1.2</span> <span class="toctext">= Level 7 Heading=</span></a></li>
+<li class="toclevel-6 tocsection-8"><a href="#.3D.3D_Level_8_Heading.3D.3D"><span class="tocnumber">1.1.1.1.1.3</span> <span class="toctext">== Level 8 Heading==</span></a></li>
+<li class="toclevel-6 tocsection-9"><a href="#.3D.3D.3D_Level_9_Heading.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.4</span> <span class="toctext">=== Level 9 Heading===</span></a></li>
+<li class="toclevel-6 tocsection-10"><a href="#.3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.5</span> <span class="toctext">==== Level 10 Heading====</span></a></li>
</ul>
</li>
</ul>
@@ -3622,17 +3703,17 @@ Handling of sections up to level 6 and beyond
</ul>
</li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="Level_1_Heading" id="Level_1_Heading"></a><h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Level 1 Heading">edit</a>]</span> <span class="mw-headline"> Level 1 Heading</span></h1>
-<a name="Level_2_Heading" id="Level_2_Heading"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Level 2 Heading">edit</a>]</span> <span class="mw-headline"> Level 2 Heading</span></h2>
-<a name="Level_3_Heading" id="Level_3_Heading"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Level 3 Heading">edit</a>]</span> <span class="mw-headline"> Level 3 Heading</span></h3>
-<a name="Level_4_Heading" id="Level_4_Heading"></a><h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Level 4 Heading">edit</a>]</span> <span class="mw-headline"> Level 4 Heading</span></h4>
-<a name="Level_5_Heading" id="Level_5_Heading"></a><h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Level 5 Heading">edit</a>]</span> <span class="mw-headline"> Level 5 Heading</span></h5>
-<a name="Level_6_Heading" id="Level_6_Heading"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Level 6 Heading">edit</a>]</span> <span class="mw-headline"> Level 6 Heading</span></h6>
-<a name=".3D_Level_7_Heading.3D" id=".3D_Level_7_Heading.3D"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=7" title="Edit section: = Level 7 Heading=">edit</a>]</span> <span class="mw-headline">= Level 7 Heading=</span></h6>
-<a name=".3D.3D_Level_8_Heading.3D.3D" id=".3D.3D_Level_8_Heading.3D.3D"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=8" title="Edit section: == Level 8 Heading==">edit</a>]</span> <span class="mw-headline">== Level 8 Heading==</span></h6>
-<a name=".3D.3D.3D_Level_9_Heading.3D.3D.3D" id=".3D.3D.3D_Level_9_Heading.3D.3D.3D"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=9" title="Edit section: === Level 9 Heading===">edit</a>]</span> <span class="mw-headline">=== Level 9 Heading===</span></h6>
-<a name=".3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D" id=".3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=10" title="Edit section: ==== Level 10 Heading====">edit</a>]</span> <span class="mw-headline">==== Level 10 Heading====</span></h6>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Level 1 Heading">edit</a>]</span> <span class="mw-headline" id="Level_1_Heading"> Level 1 Heading</span></h1>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Level 2 Heading">edit</a>]</span> <span class="mw-headline" id="Level_2_Heading"> Level 2 Heading</span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Level 3 Heading">edit</a>]</span> <span class="mw-headline" id="Level_3_Heading"> Level 3 Heading</span></h3>
+<h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Level 4 Heading">edit</a>]</span> <span class="mw-headline" id="Level_4_Heading"> Level 4 Heading</span></h4>
+<h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Level 5 Heading">edit</a>]</span> <span class="mw-headline" id="Level_5_Heading"> Level 5 Heading</span></h5>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Level 6 Heading">edit</a>]</span> <span class="mw-headline" id="Level_6_Heading"> Level 6 Heading</span></h6>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=7" title="Edit section: = Level 7 Heading=">edit</a>]</span> <span class="mw-headline" id=".3D_Level_7_Heading.3D">= Level 7 Heading=</span></h6>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=8" title="Edit section: == Level 8 Heading==">edit</a>]</span> <span class="mw-headline" id=".3D.3D_Level_8_Heading.3D.3D">== Level 8 Heading==</span></h6>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=9" title="Edit section: === Level 9 Heading===">edit</a>]</span> <span class="mw-headline" id=".3D.3D.3D_Level_9_Heading.3D.3D.3D">=== Level 9 Heading===</span></h6>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=10" title="Edit section: ==== Level 10 Heading====">edit</a>]</span> <span class="mw-headline" id=".3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D">==== Level 10 Heading====</span></h6>
!! end
@@ -3646,31 +3727,31 @@ TOC regression (bug 9764)
== title 2 ==
=== title 2.1 ===
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
<ul>
-<li class="toclevel-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a>
+<li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a>
<ul>
-<li class="toclevel-3"><a href="#title_1.1.1"><span class="tocnumber">1.1.1</span> <span class="toctext">title 1.1.1</span></a></li>
+<li class="toclevel-3 tocsection-3"><a href="#title_1.1.1"><span class="tocnumber">1.1.1</span> <span class="toctext">title 1.1.1</span></a></li>
</ul>
</li>
-<li class="toclevel-2"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
+<li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
</ul>
</li>
-<li class="toclevel-1"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
+<li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
<ul>
-<li class="toclevel-2"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
+<li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
</ul>
</li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="title_1" id="title_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline"> title 1 </span></h2>
-<a name="title_1.1" id="title_1.1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline"> title 1.1 </span></h3>
-<a name="title_1.1.1" id="title_1.1.1"></a><h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a>]</span> <span class="mw-headline"> title 1.1.1 </span></h4>
-<a name="title_1.2" id="title_1.2"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a>]</span> <span class="mw-headline"> title 1.2 </span></h3>
-<a name="title_2" id="title_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline"> title 2 </span></h2>
-<a name="title_2.1" id="title_2.1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a>]</span> <span class="mw-headline"> title 2.1 </span></h3>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline" id="title_1"> title 1 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline" id="title_1.1"> title 1.1 </span></h3>
+<h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a>]</span> <span class="mw-headline" id="title_1.1.1"> title 1.1.1 </span></h4>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a>]</span> <span class="mw-headline" id="title_1.2"> title 1.2 </span></h3>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline" id="title_2"> title 2 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a>]</span> <span class="mw-headline" id="title_2.1"> title 2.1 </span></h3>
!! end
@@ -3686,27 +3767,27 @@ wgMaxTocLevel=3
== title 2 ==
=== title 2.1 ===
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
<ul>
-<li class="toclevel-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
-<li class="toclevel-2"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
+<li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
+<li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
</ul>
</li>
-<li class="toclevel-1"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
+<li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
<ul>
-<li class="toclevel-2"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
+<li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
</ul>
</li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="title_1" id="title_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline"> title 1 </span></h2>
-<a name="title_1.1" id="title_1.1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline"> title 1.1 </span></h3>
-<a name="title_1.1.1" id="title_1.1.1"></a><h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a>]</span> <span class="mw-headline"> title 1.1.1 </span></h4>
-<a name="title_1.2" id="title_1.2"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a>]</span> <span class="mw-headline"> title 1.2 </span></h3>
-<a name="title_2" id="title_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline"> title 2 </span></h2>
-<a name="title_2.1" id="title_2.1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a>]</span> <span class="mw-headline"> title 2.1 </span></h3>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline" id="title_1"> title 1 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline" id="title_1.1"> title 1.1 </span></h3>
+<h4><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a>]</span> <span class="mw-headline" id="title_1.1.1"> title 1.1.1 </span></h4>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a>]</span> <span class="mw-headline" id="title_1.2"> title 1.2 </span></h3>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline" id="title_2"> title 2 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a>]</span> <span class="mw-headline" id="title_2.1"> title 2.1 </span></h3>
!! end
@@ -3716,8 +3797,8 @@ Resolving duplicate section names
== Foo bar ==
== Foo bar ==
!! result
-<a name="Foo_bar" id="Foo_bar"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline"> Foo bar </span></h2>
-<a name="Foo_bar_2" id="Foo_bar_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline"> Foo bar </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline" id="Foo_bar"> Foo bar </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline" id="Foo_bar_2"> Foo bar </span></h2>
!! end
@@ -3727,8 +3808,8 @@ Resolving duplicate section names with differing case (bug 10721)
== Foo bar ==
== Foo Bar ==
!! result
-<a name="Foo_bar" id="Foo_bar"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline"> Foo bar </span></h2>
-<a name="Foo_Bar_2" id="Foo_Bar_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a>]</span> <span class="mw-headline"> Foo Bar </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a>]</span> <span class="mw-headline" id="Foo_bar"> Foo bar </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a>]</span> <span class="mw-headline" id="Foo_Bar_2"> Foo Bar </span></h2>
!! end
@@ -3747,10 +3828,10 @@ __NOTOC__
{{sections}}
==Section 4==
!! result
-<a name="Section_0" id="Section_0"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section 0">edit</a>]</span> <span class="mw-headline">Section 0</span></h2>
-<a name="Section_1" id="Section_1"></a><h3><span class="editsection">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=T-1" title="Template:Sections">edit</a>]</span> <span class="mw-headline">Section 1</span></h3>
-<a name="Section_2" id="Section_2"></a><h2><span class="editsection">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=T-2" title="Template:Sections">edit</a>]</span> <span class="mw-headline">Section 2</span></h2>
-<a name="Section_4" id="Section_4"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Section 4">edit</a>]</span> <span class="mw-headline">Section 4</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section 0">edit</a>]</span> <span class="mw-headline" id="Section_0">Section 0</span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=T-1" title="Template:Sections">edit</a>]</span> <span class="mw-headline" id="Section_1">Section 1</span></h3>
+<h2><span class="editsection">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=T-2" title="Template:Sections">edit</a>]</span> <span class="mw-headline" id="Section_2">Section 2</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Section 4">edit</a>]</span> <span class="mw-headline" id="Section_4">Section 4</span></h2>
!! end
@@ -3761,8 +3842,8 @@ __NOEDITSECTION__
==Section 1==
==Section 2==
!! result
-<a name="Section_1" id="Section_1"></a><h2> <span class="mw-headline">Section 1</span></h2>
-<a name="Section_2" id="Section_2"></a><h2> <span class="mw-headline">Section 2</span></h2>
+<h2> <span class="mw-headline" id="Section_1">Section 1</span></h2>
+<h2> <span class="mw-headline" id="Section_2">Section 2</span></h2>
!! end
@@ -3771,7 +3852,7 @@ Link inside a section heading
!! input
==Section with a [[Main Page|link]] in it==
!! result
-<a name="Section_with_a_link_in_it" id="Section_with_a_link_in_it"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section with a link in it">edit</a>]</span> <span class="mw-headline">Section with a <a href="/wiki/Main_Page" title="Main Page">link</a> in it</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Section with a link in it">edit</a>]</span> <span class="mw-headline" id="Section_with_a_link_in_it">Section with a <a href="/wiki/Main_Page" title="Main Page">link</a> in it</span></h2>
!! end
@@ -3783,19 +3864,19 @@ __TOC__
=== title 1.1 ===
== title 2 ==
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
<ul>
-<li class="toclevel-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
+<li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
</ul>
</li>
-<li class="toclevel-1"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
+<li class="toclevel-1 tocsection-3"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="title_1" id="title_1"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline"> title 1 </span></h2>
-<a name="title_1.1" id="title_1.1"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline"> title 1.1 </span></h3>
-<a name="title_2" id="title_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline"> title 2 </span></h2>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a>]</span> <span class="mw-headline" id="title_1"> title 1 </span></h2>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a>]</span> <span class="mw-headline" id="title_1.1"> title 1.1 </span></h3>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 2">edit</a>]</span> <span class="mw-headline" id="title_2"> title 2 </span></h2>
!! end
@@ -3804,7 +3885,7 @@ BUG 1219 URL next to image (good)
!! input
http://example.com [[Image:foobar.jpg]]
!! result
-<p><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image" title="Image:foobar.jpg"><img alt="Image:foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
@@ -3813,7 +3894,7 @@ BUG 1219 URL next to image (broken)
!! input
http://example.com[[Image:foobar.jpg]]
!! result
-<p><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image" title="Image:foobar.jpg"><img alt="Image:foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a>
+<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
@@ -3822,7 +3903,7 @@ Bug 1186 news: in the middle of text
!! input
http://en.wikinews.org/wiki/Wikinews:Workplace
!! result
-<p><a href="http://en.wikinews.org/wiki/Wikinews:Workplace" class="external free" title="http://en.wikinews.org/wiki/Wikinews:Workplace" rel="nofollow">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
+<p><a href="http://en.wikinews.org/wiki/Wikinews:Workplace" class="external free" rel="nofollow">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
</p>
!!end
@@ -4679,7 +4760,7 @@ Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id=
!! input
<span id="æ: v">byte</span>[[#æ: v|backlink]]
!! result
-<p><span id=".C3.A6:_v">byte</span><a href="#.C3.A6:_v" title="">backlink</a>
+<p><span id=".C3.A6:_v">byte</span><a href="#.C3.A6:_v">backlink</a>
</p>
!! end
@@ -4784,6 +4865,8 @@ HTML bullet list, closed tags (bug 5497)
!! test
HTML bullet list, unclosed tags (bug 5497)
+!! options
+disabled
!! input
<ul>
<li>One
@@ -4814,6 +4897,8 @@ HTML ordered list, closed tags (bug 5497)
!! test
HTML ordered list, unclosed tags (bug 5497)
+!! options
+disabled
!! input
<ol>
<li>One
@@ -4854,6 +4939,8 @@ HTML nested bullet list, closed tags (bug 5497)
!! test
HTML nested bullet list, open tags (bug 5497)
+!! options
+disabled
!! input
<ul>
<li>One
@@ -4902,6 +4989,8 @@ HTML nested ordered list, closed tags (bug 5497)
!! test
HTML nested ordered list, open tags (bug 5497)
+!! options
+disabled
!! input
<ol>
<li>One
@@ -4945,11 +5034,11 @@ ftp://inlineftp
mailto:inline@mail.tld
!! result
-<p><a href="http://first/" class="external autonumber" title="http://first/" rel="nofollow">[1]</a> <a href="http://second" class="external autonumber" title="http://second" rel="nofollow">[2]</a> <a href="ftp://ftp" class="external autonumber" title="ftp://ftp" rel="nofollow">[3]</a>
-</p><p><a href="ftp://inlineftp" class="external free" title="ftp://inlineftp" rel="nofollow">ftp://inlineftp</a>
-</p><p><a href="mailto:enclosed@mail.tld" class="external text" title="mailto:enclosed@mail.tld" rel="nofollow">With target</a>
-</p><p><a href="mailto:enclosed@mail.tld" class="external autonumber" title="mailto:enclosed@mail.tld" rel="nofollow">[4]</a>
-</p><p><a href="mailto:inline@mail.tld" class="external free" title="mailto:inline@mail.tld" rel="nofollow">mailto:inline@mail.tld</a>
+<p><a href="http://first/" class="external autonumber" rel="nofollow">[1]</a> <a href="http://second" class="external autonumber" rel="nofollow">[2]</a> <a href="ftp://ftp" class="external autonumber" rel="nofollow">[3]</a>
+</p><p><a href="ftp://inlineftp" class="external free" rel="nofollow">ftp://inlineftp</a>
+</p><p><a href="mailto:enclosed@mail.tld" class="external text" rel="nofollow">With target</a>
+</p><p><a href="mailto:enclosed@mail.tld" class="external autonumber" rel="nofollow">[4]</a>
+</p><p><a href="mailto:inline@mail.tld" class="external free" rel="nofollow">mailto:inline@mail.tld</a>
</p>
!! end
@@ -4980,12 +5069,12 @@ Fuzz testing: Parser14
== onmouseover= ==
http://__TOC__
!! result
-<a name="onmouseover.3D" id="onmouseover.3D"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a>]</span> <span class="mw-headline"> onmouseover= </span></h2>
-http://<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a>]</span> <span class="mw-headline" id="onmouseover.3D"> onmouseover= </span></h2>
+http://<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
+<li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
!! end
@@ -4995,7 +5084,7 @@ Fuzz testing: Parser14-table
==a==
{| STYLE=__TOC__
!! result
-<a name="a" id="a"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: a">edit</a>]</span> <span class="mw-headline">a</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: a">edit</a>]</span> <span class="mw-headline" id="a">a</span></h2>
<table style="&#95;_TOC&#95;_">
<tr><td></td></tr>
</table>
@@ -5029,7 +5118,7 @@ Fuzz testing: Parser21
!! result
<table>
<tr>
-<th> <a href="irc://{{ftp://a" class="external free" title="irc://{{ftp://a" rel="nofollow">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
+<th> <a href="irc://{{ftp://a" class="external free" rel="nofollow">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
</th><td>
</td>
</tr>
@@ -5044,7 +5133,7 @@ http://===r:::https://b
{|
!!result
-<p><a href="http://===r:::https://b" class="external free" title="http://===r:::https://b" rel="nofollow">http://===r:::https://b</a>
+<p><a href="http://===r:::https://b" class="external free" rel="nofollow">http://===r:::https://b</a>
</p>
<table>
<tr><td></td></tr>
@@ -5108,7 +5197,7 @@ Fuzz testing: URL adjacent extension (with space, clean)
!! input
http://example.com <nowiki>junk</nowiki>
!! result
-<p><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a> junk
+<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a> junk
</p>
!!end
@@ -5118,7 +5207,7 @@ Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
!! input
http://example.com<nowiki>junk</nowiki>
!! result
-<p><a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a>junk
+<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>junk
</p>
!!end
@@ -5128,7 +5217,7 @@ Fuzz testing: URL adjacent extension (no space, dirty; pre)
!! input
http://example.com<pre>junk</pre>
!! result
-<a href="http://example.com" class="external free" title="http://example.com" rel="nofollow">http://example.com</a><pre>junk</pre>
+<a href="http://example.com" class="external free" rel="nofollow">http://example.com</a><pre>junk</pre>
!!end
@@ -5218,6 +5307,8 @@ New wiki paragraph
!! test
Inline HTML vs wiki block nesting
+!! options
+disabled
!! input
<b>Bold paragraph
@@ -6136,7 +6227,7 @@ Handling of &#x0A; in URLs
!! input
**irc://&#x0A;a
!! result
-<ul><li><ul><li><a href="irc://%0Aa" class="external free" title="irc://%0Aa" rel="nofollow">irc://%0Aa</a>
+<ul><li><ul><li><a href="irc://%0Aa" class="external free" rel="nofollow">irc://%0Aa</a>
</li></ul>
</li></ul>
@@ -6246,7 +6337,7 @@ image4 |300px| centre
<td><div class="gallerybox" style="width: 155px;">
<div style="height: 152px;">Image5.svg</div>
<div class="gallerytext">
-<p><a href="http://///////" class="external free" title="http://///////" rel="nofollow">http://///////</a>
+<p><a href="http://///////" class="external free" rel="nofollow">http://///////</a>
</p>
</div>
</div></td>
@@ -6284,7 +6375,7 @@ ISBN code coverage
!! input
ISBN 978-0-1234-56&#x20;789
!! result
-<p><a href="/wiki/Special:BookSources/9780123456" class="internal">ISBN 978-0-1234-56</a>&#x20;789
+<p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a>&#x20;789
</p>
!! end
@@ -6302,7 +6393,7 @@ Double ISBN
!! input
ISBN ISBN 1234567890
!! result
-<p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal">ISBN 1234567890</a>
+<p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
</p>
!! end
@@ -6311,7 +6402,7 @@ Double RFC
!! input
RFC RFC 1234
!! result
-<p>RFC <a href="http://tools.ietf.org/html/rfc1234" class="external" title="http://tools.ietf.org/html/rfc1234">RFC 1234</a>
+<p>RFC <a href="http://tools.ietf.org/html/rfc1234" class="external mw-magiclink-rfc">RFC 1234</a>
</p>
!! end
@@ -6329,7 +6420,7 @@ RFC code coverage
!! input
RFC 983&#x20;987
!! result
-<p><a href="http://tools.ietf.org/html/rfc983" class="external" title="http://tools.ietf.org/html/rfc983">RFC 983</a>&#x20;987
+<p><a href="http://tools.ietf.org/html/rfc983" class="external mw-magiclink-rfc">RFC 983</a>&#x20;987
</p>
!! end
@@ -6338,7 +6429,7 @@ Centre-aligned image
!! input
[[Image:foobar.jpg|centre]]
!! result
-<div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a></div></div>
+<div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div></div>
!!end
@@ -6347,7 +6438,7 @@ None-aligned image
!! input
[[Image:foobar.jpg|none]]
!! result
-<div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" border="0" /></a></div>
+<div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
!!end
@@ -6356,7 +6447,7 @@ Width + Height sized image (using px) (height is ignored)
!! input
[[Image:foobar.jpg|640x480px]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="640" height="73" /></a>
</p>
!!end
@@ -6365,7 +6456,7 @@ Width-sized image (using px, no following whitespace)
!! input
[[Image:foobar.jpg|640px]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="640" height="73" /></a>
</p>
!!end
@@ -6374,7 +6465,7 @@ Width-sized image (using px, with following whitespace - test regression from r3
!! input
[[Image:foobar.jpg|640px ]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="640" height="73" /></a>
</p>
!!end
@@ -6383,7 +6474,7 @@ Width-sized image (using px, with preceding whitespace - test regression from r3
!! input
[[Image:foobar.jpg| 640px]]
!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image" title="Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" border="0" /></a>
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="640" height="73" /></a>
</p>
!!end
@@ -6401,6 +6492,8 @@ Another italics / bold test
# ...<dd> </dt></dl> </dd...
!! test
dt/dd/dl test
+!! options
+disabled
!! input
:;;;::
!! result
@@ -6418,10 +6511,12 @@ dt/dd/dl test
# Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "</a>" tag.
!! test
Images with the "|" character in the comment
+!! options
+disabled
!! input
[[image:Foobar.jpg|thumb|An [http://test/?param1=|left|&param2=|x external] URL]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="An external URL"><img alt="An external URL" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a href="http://test/?param1=|left|&amp;param2=|x" class="external text" title="http://test/?param1=|left|&amp;param2=|x" rel="nofollow">external</a> URL</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="An external URL" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a href="http://test/?param1=|left|&amp;param2=|x" class="external text" rel="nofollow">external</a> URL</div></div></div>
!!end
@@ -6578,7 +6673,7 @@ Inclusion of !userCanEdit() content
!! input
{{MediaWiki:Fake}}
!! result
-<a name="header" id="header"></a><h2><span class="editsection">[<a href="/index.php?title=MediaWiki:Fake&amp;action=edit&amp;section=T-1" title="MediaWiki:Fake">edit</a>]</span> <span class="mw-headline">header</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=MediaWiki:Fake&amp;action=edit&amp;section=T-1" title="MediaWiki:Fake">edit</a>]</span> <span class="mw-headline" id="header">header</span></h2>
!! end
@@ -6593,28 +6688,28 @@ Out-of-order TOC heading levels
=====5=====
==2==
!! result
-<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
+<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
-<li class="toclevel-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
+<li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
<ul>
-<li class="toclevel-2"><a href="#6"><span class="tocnumber">1.1</span> <span class="toctext">6</span></a></li>
-<li class="toclevel-2"><a href="#3"><span class="tocnumber">1.2</span> <span class="toctext">3</span></a></li>
+<li class="toclevel-2 tocsection-2"><a href="#6"><span class="tocnumber">1.1</span> <span class="toctext">6</span></a></li>
+<li class="toclevel-2 tocsection-3"><a href="#3"><span class="tocnumber">1.2</span> <span class="toctext">3</span></a></li>
</ul>
</li>
-<li class="toclevel-1"><a href="#1"><span class="tocnumber">2</span> <span class="toctext">1</span></a>
+<li class="toclevel-1 tocsection-4"><a href="#1"><span class="tocnumber">2</span> <span class="toctext">1</span></a>
<ul>
-<li class="toclevel-2"><a href="#5"><span class="tocnumber">2.1</span> <span class="toctext">5</span></a></li>
-<li class="toclevel-2"><a href="#2_2"><span class="tocnumber">2.2</span> <span class="toctext">2</span></a></li>
+<li class="toclevel-2 tocsection-5"><a href="#5"><span class="tocnumber">2.1</span> <span class="toctext">5</span></a></li>
+<li class="toclevel-2 tocsection-6"><a href="#2_2"><span class="tocnumber">2.2</span> <span class="toctext">2</span></a></li>
</ul>
</li>
</ul>
-</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
-<a name="2" id="2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: 2">edit</a>]</span> <span class="mw-headline">2</span></h2>
-<a name="6" id="6"></a><h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: 6">edit</a>]</span> <span class="mw-headline">6</span></h6>
-<a name="3" id="3"></a><h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: 3">edit</a>]</span> <span class="mw-headline">3</span></h3>
-<a name="1" id="1"></a><h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: 1">edit</a>]</span> <span class="mw-headline">1</span></h1>
-<a name="5" id="5"></a><h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: 5">edit</a>]</span> <span class="mw-headline">5</span></h5>
-<a name="2_2" id="2_2"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: 2">edit</a>]</span> <span class="mw-headline">2</span></h2>
+</td></tr></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: 2">edit</a>]</span> <span class="mw-headline" id="2">2</span></h2>
+<h6><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: 6">edit</a>]</span> <span class="mw-headline" id="6">6</span></h6>
+<h3><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: 3">edit</a>]</span> <span class="mw-headline" id="3">3</span></h3>
+<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: 1">edit</a>]</span> <span class="mw-headline" id="1">1</span></h1>
+<h5><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: 5">edit</a>]</span> <span class="mw-headline" id="5">5</span></h5>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: 2">edit</a>]</span> <span class="mw-headline" id="2_2">2</span></h2>
!! end
@@ -6634,7 +6729,7 @@ ISBN with space-delimited number
!! input
ISBN 92 9017 032 8
!! result
-<p><a href="/wiki/Special:BookSources/9290170328" class="internal">ISBN 92 9017 032 8</a>
+<p><a href="/wiki/Special:BookSources/9290170328" class="internal mw-magiclink-isbn">ISBN 92 9017 032 8</a>
</p>
!! end
@@ -6659,7 +6754,7 @@ ISBN 1234567890
ISBN 12345678901
!! result
<p>ISBN 123456789
-</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal">ISBN 1234567890</a>
+</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
</p><p>ISBN 12345678901
</p>
!! end
@@ -6672,22 +6767,13 @@ ISBN 1-234-56789-0 - 2006
ISBN 1 234 56789 0 - 2006
!! result
-<p><a href="/wiki/Special:BookSources/1234567890" class="internal">ISBN 1-234-56789-0</a> - 2006
-</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal">ISBN 1 234 56789 0</a> - 2006
+<p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1-234-56789-0</a> - 2006
+</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1 234 56789 0</a> - 2006
</p>
!! end
!! test
-Pages in namespace (Magic word disabled currently)
-!! input
-{{PAGESINNAMESPACE:}}
-!! result
-
-!! end
-
-
-!! test
anchorencode
!! input
{{anchorencode:foo bar©#%n}}
@@ -6799,9 +6885,9 @@ Simple category in language variants
!! options
language=sr cat
!! input
-[[:Category:МедиаWики Усер'с Гуиде]]
+[[Category:МедиаWики Усер'с Гуиде]]
!! result
-<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User&#039;s Guide">MediaWiki User's Guide</a>
+<a href="/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:MediaWiki_User%27s_Guide" title="Категорија:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
@@ -6860,7 +6946,7 @@ language=sr variant=sr-ec
!! input
== -{Naslov}- ==
!! result
-<a name="-.7BNaslov.7D-" id="-.7BNaslov.7D-"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Уреди део: Naslov">уреди</a>]</span> <span class="mw-headline"> Naslov </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Уреди део: Naslov">уреди</a>]</span> <span class="mw-headline" id="-.7BNaslov.7D-"> Naslov </span></h2>
!! end
@@ -6878,28 +6964,58 @@ language=zh variant=zh-tw
!! test
-Adding explicit session-wise language variant mapping (A flag)
+Explicit session-wise language variant mapping (A flag and - flag)
!! options
language=zh variant=zh-tw
!! input
--{A|zh:China;zh-tw:Taiwan}- is China
+Taiwan is not China.
+But -{A|zh:China;zh-tw:Taiwan}- is China,
+(This-{-|zh:China;zh-tw:Taiwan}- should be stripped!)
+and -{China}- is China.
!! result
-<p>Taiwan is Taiwan
+<p>Taiwan is not China.
+But Taiwan is Taiwan,
+(This should be stripped!)
+and China is China.
</p>
!! end
+!! test
+Explicit session-wise language variant mapping (H flag for hide)
+!! options
+language=zh variant=zh-tw
+!! input
+(This-{H|zh:China;zh-tw:Taiwan}- should be stripped!)
+Taiwan is China.
+!! result
+<p>(This should be stripped!)
+Taiwan is Taiwan.
+</p>
+!! end
!! test
Adding explicit conversion rule for title (T flag)
!! options
-language=zh variant=zh-tw
+language=zh variant=zh-tw showtitle
!! input
Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
!! result
+Taiwan
<p>Should be stripped!
</p>
!! end
+!! test
+Testing that changing the language variant here in the tests actually works
+!! options
+language=zh variant=zh showtitle
+!! input
+Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
+!! result
+China
+<p>Should be stripped!
+</p>
+!! end
!! test
Raw output of variant escape tags (R flag)
@@ -6912,6 +7028,16 @@ Raw: -{R|zh:China;zh-tw:Taiwan}-
</p>
!! end
+!! test
+Nested using of manual convert syntax
+!! options
+language=zh variant=zh-hk
+!! input
+Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-!
+!! result
+<p>Nested: Hello Hong Kong!
+</p>
+!! end
!! test
Do not convert roman numbers to language variants
@@ -6924,6 +7050,28 @@ Fridrih IV je car.
</p>
!! end
+!! test
+Unclosed language converter markup "-{"
+!! options
+language=sr
+!! input
+-{T|hello
+!! result
+<p>-{T|hello
+</p>
+!! end
+
+!! test
+Don't convert raw rule "-{R|=&gt;}-" to "=>"
+!! options
+language=sr
+!! input
+-{R|=&gt;}-
+!! result
+<p>=&gt;
+</p>
+!!end
+
!!article
Template:Bullet
!!text
@@ -6992,6 +7140,32 @@ Bug 5678: Double-parsed template invocation
!! end
!! test
+Case insensitivity of parser functions for non-ASCII characters (bug 8143)
+!! options
+language=cs
+title=[[Main Page]]
+!! input
+{{PRVNÍVELKÉ:ěščř}}
+{{prvnívelké:ěščř}}
+{{PRVNÍMALÉ:ěščř}}
+{{prvnímalé:ěščř}}
+{{MALÁ:ěščř}}
+{{malá:ěščř}}
+{{VELKÁ:ěščř}}
+{{velká:ěščř}}
+!! result
+<p>Ěščř
+Ěščř
+ěščř
+ěščř
+ěščř
+ěščř
+ĚŠČŘ
+ĚŠČŘ
+</p>
+!! end
+
+!! test
Morwen/13: Unclosed link followed by heading
!! input
[[link
@@ -6999,7 +7173,7 @@ Morwen/13: Unclosed link followed by heading
!! result
<p>[[link
</p>
-<a name="heading" id="heading"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a>]</span> <span class="mw-headline">heading</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a>]</span> <span class="mw-headline" id="heading">heading</span></h2>
!! end
@@ -7011,7 +7185,7 @@ HHP2.1: Heuristics for headings in preprocessor parenthetical structures
!! result
<p>{{foo|
</p>
-<a name="heading" id="heading"></a><h1> <span class="mw-headline">heading</span></h1>
+<h1> <span class="mw-headline" id="heading">heading</span></h1>
!! end
@@ -7023,7 +7197,7 @@ HHP2.2: Heuristics for headings in preprocessor parenthetical structures
!! result
<p>{{foo|
</p>
-<a name="heading" id="heading"></a><h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a>]</span> <span class="mw-headline">heading</span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a>]</span> <span class="mw-headline" id="heading">heading</span></h2>
!! end
@@ -7099,6 +7273,8 @@ Line two
# Bug 6200: <blockquote> should behave like <div> with respect to line breaks
!! test
Bug 6200: paragraphs inside blockquotes (no extra line breaks)
+!! options
+disabled
!! input
<blockquote>Line one
@@ -7111,6 +7287,8 @@ Line two</blockquote>
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on open)
+!! options
+disabled
!! input
<blockquote>
Line one
@@ -7126,6 +7304,8 @@ Line two</blockquote>
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on close)
+!! options
+disabled
!! input
<blockquote>Line one
@@ -7141,6 +7321,8 @@ Line two
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on open and close)
+!! options
+disabled
!! input
<blockquote>
Line one
@@ -7235,7 +7417,7 @@ Free external link invading image caption
!! input
[[Image:Foobar.jpg|thumb|http://x|hello]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image" title="hello"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" border="0" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>hello</div></div></div>
+<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/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>hello</div></div></div>
!! end
@@ -7246,7 +7428,7 @@ language=fa
!! input
[http://en.wikipedia.org/]
!! result
-<p><a href="http://en.wikipedia.org/" class="external autonumber" title="http://en.wikipedia.org/" rel="nofollow">[۱]</a>
+<p><a href="http://en.wikipedia.org/" class="external autonumber" rel="nofollow">[۱]</a>
</p>
!! end
@@ -7306,12 +7488,268 @@ wgUseDynamicDates=false
!! result
<p><a href="/index.php?title=2009-03-24&amp;action=edit&amp;redlink=1" class="new" title="2009-03-24 (page does not exist)">2009-03-24</a>
</p>
-!!end
+!! end
+
+!! test
+Spacing of numbers in formatted dates
+!! input
+{{#formatdate:January 15}}
+!! result
+<p><span class="mw-formatted-date" title="01-15">January 15</span>
+</p>
+!! end
+
+!! test
+Spacing of numbers in formatted dates (linked)
+!! config
+wgUseDynamicDates=true
+!! input
+[[January 15]]
+!! result
+<p><span class="mw-formatted-date" title="01-15"><a href="/index.php?title=January_15&amp;action=edit&amp;redlink=1" class="new" title="January 15 (page does not exist)">January 15</a></span>
+</p>
+!! end
#
#
#
+#
+# Edit comments
+#
+
+!! test
+Edit comment with link
+!! options
+comment
+!! input
+I like the [[Main Page]] a lot
+!! result
+I like the <a href="/wiki/Main_Page" title="Main Page">Main Page</a> a lot
+!!end
+
+!! test
+Edit comment with link and link text
+!! options
+comment
+!! input
+I like the [[Main Page|best pages]] a lot
+!! result
+I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
+!!end
+
+!! test
+Edit comment with link and link text with suffix
+!! options
+comment
+!! input
+I like the [[Main Page|best page]]s a lot
+!! result
+I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
+!!end
+
+!! test
+Edit comment with section link (non-local, eg in history list)
+!! options
+comment title=[[Main Page]]
+!! input
+/* External links */ removed bogus entries
+!! result
+<span class="autocomment"><a href="/wiki/Main_Page#External_links" title="Main Page">→</a>External links: </span> removed bogus entries
+!!end
+
+!! test
+Edit comment with section link (local, eg in diff view)
+!! options
+comment local title=[[Main Page]]
+!! input
+/* External links */ removed bogus entries
+!! result
+<span class="autocomment"><a href="#External_links">→</a>External links: </span> removed bogus entries
+!!end
+
+!! test
+Edit comment with subpage link (bug 14080)
+!! options
+comment
+subpage
+title=[[Subpage test]]
+!! input
+Poked at a [[/subpage]] here...
+!! result
+Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a> here...
+!!end
+
+!! test
+Edit comment with subpage link and link text (bug 14080)
+!! options
+comment
+subpage
+title=[[Subpage test]]
+!! input
+Poked at a [[/subpage|neat little page]] here...
+!! result
+Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">neat little page</a> here...
+!!end
+
+!! test
+Edit comment with bogus subpage link in non-subpage NS (bug 14080)
+!! options
+comment
+title=[[Subpage test]]
+!! input
+Poked at a [[/subpage]] here...
+!! result
+Poked at a <a href="/index.php?title=/subpage&amp;action=edit&amp;redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> here...
+!!end
+
+!! test
+Edit comment with bare anchor link (local, as on diff)
+!! options
+comment
+local
+title=[[Main Page]]
+!!input
+[[#section]]
+!! result
+<a href="#section">#section</a>
+!! end
+
+!! test
+Edit comment with bare anchor link (non-local, as on history)
+!! options
+comment
+title=[[Main Page]]
+!!input
+[[#section]]
+!! result
+<a href="/wiki/Main_Page#section" title="Main Page">#section</a>
+!! end
+
+!!article
+MediaWiki:bad image list
+!!text
+* [[File:Bad.jpg]] except [[Nasty page]]
+!!endarticle
+
+!! test
+Bad images - basic functionality
+!! input
+[[File:Bad.jpg]]
+!! result
+!! end
+
+!! test
+Bad images - bug 16039: text after bad image disappears
+!! input
+Foo bar
+[[File:Bad.jpg]]
+Bar foo
+!! result
+<p>Foo bar
+</p><p>Bar foo
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) no displaytitle
+!! options
+showtitle
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=false
+!! input
+this is not the the title
+!! result
+Parser test
+<p>this is not the the title
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) RestrictDisplayTitle=false
+!! options
+showtitle
+title=[[Screen]]
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=false
+!! input
+this is not the the title
+{{DISPLAYTITLE:whatever}}
+!! result
+whatever
+<p>this is not the the title
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true mismatch
+!! options
+showtitle
+title=[[Screen]]
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=true
+!! input
+this is not the the title
+{{DISPLAYTITLE:whatever}}
+!! result
+Screen
+<p>this is not the the title
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true matching
+!! options
+showtitle
+title=[[Screen]]
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=true
+!! input
+this is not the the title
+{{DISPLAYTITLE:screen}}
+!! result
+screen
+<p>this is not the the title
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) AllowDisplayTitle=false
+!! options
+showtitle
+title=[[Screen]]
+!! config
+wgAllowDisplayTitle=false
+!! input
+this is not the the title
+{{DISPLAYTITLE:screen}}
+!! result
+Screen
+<p>this is not the the title
+<a href="/index.php?title=Template:DISPLAYTITLE:screen&amp;action=edit&amp;redlink=1" class="new" title="Template:DISPLAYTITLE:screen (page does not exist)">Template:DISPLAYTITLE:screen</a>
+</p>
+!! end
+
+!! test
+Verify that displaytitle works (bug #22501) AllowDisplayTitle=false no DISPLAYTITLE
+!! options
+showtitle
+title=[[Screen]]
+!! config
+wgAllowDisplayTitle=false
+!! input
+this is not the the title
+!! result
+Screen
+<p>this is not the the title
+</p>
+!! end
+
+
TODO:
more images
more tables
diff --git a/maintenance/patchSql.php b/maintenance/patchSql.php
index 42380eea..69cb0f56 100644
--- a/maintenance/patchSql.php
+++ b/maintenance/patchSql.php
@@ -3,34 +3,57 @@
* Manually run an SQL patch outside of the general updaters.
* This ensures that the DB options (charset, prefix, engine) are correctly set.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once 'commandLine.inc';
-require_once "$IP/maintenance/updaters.inc";
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class PatchSql extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Run an SQL file into the DB, replacing prefix and charset vars";
+ $this->addArg( 'patch-name', 'Name of the patch file, either full path or in maintenance/archives' );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-if( $args ) {
- foreach( $args as $arg ) {
- $files = array(
- $arg,
- archive( $arg ),
- archive( "patch-$arg.sql" ),
- );
- foreach( $files as $file ) {
- if( file_exists( $file ) ) {
- echo "$file ...\n";
- dbsource( $file );
- continue 2;
+ public function execute() {
+ $dbw = wfGetDB( DB_MASTER );
+ foreach( $this->mArgs as $arg ) {
+ $files = array(
+ $arg,
+ DatabaseBase::patchPath( $arg ),
+ DatabaseBase::patchPath( "patch-$arg.sql" ),
+ );
+ foreach( $files as $file ) {
+ if( file_exists( $file ) ) {
+ $this->output( "$file ...\n" );
+ $dbw->sourceFile( $file );
+ continue 2;
+ }
}
+ $this->error( "Could not find $arg\n" );
}
- echo "Could not find $arg\n";
+ $this->output( "done.\n" );
}
- echo "done.\n";
-} else {
- echo "Run an SQL file into the DB, replacing prefix and charset vars.\n";
- echo "Usage:\n";
- echo " php maintenance/patchSql.php file1.sql file2.sql ...\n";
- echo "\n";
- echo "Paths in maintenance/archive are automatically expanded if a local file isn't found.\n";
}
+
+$maintClass = "PatchSql";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/populateCategory.php b/maintenance/populateCategory.php
index 1dca7b74..bf84bb0a 100644
--- a/maintenance/populateCategory.php
+++ b/maintenance/populateCategory.php
@@ -7,11 +7,16 @@
$optionsWithArgs = array( 'begin', 'max-slave-lag', 'throttle' );
-require_once "commandLine.inc";
-require_once "populateCategory.inc";
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( isset( $options['help'] ) ) {
- echo <<<TEXT
+
+class PopulateCategory extends Maintenance {
+
+ const REPORTING_INTERVAL = 1000;
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = <<<TEXT
This script will populate the category table, added in MediaWiki 1.13. It will
print out progress indicators every 1000 categories it adds to the table. The
script is perfectly safe to run on large, live wikis, and running it multiple
@@ -25,29 +30,98 @@ added after the software update and so will be populated anyway.
When the script has finished, it will make a note of this in the database, and
will not run again without the --force option.
-
-Usage:
- php populateCategory.php [--max-slave-lag <seconds>] [--begin <name>]
-[--throttle <seconds>] [--force]
-
- --begin: Only do categories whose names are alphabetically after the pro-
-vided name. Default: empty (start from beginning).
- --max-slave-lag: If slave lag exceeds this many seconds, wait until it
-drops before continuing. Default: 10.
- --throttle: Wait this many milliseconds after each category. Default: 0.
- --force: Run regardless of whether the database says it's been run already.
-
TEXT;
- exit( 0 );
-}
+ $this->addOption( 'begin', 'Only do categories whose names are alphabetically after the provided name', false, true );
+ $this->addOption( 'max-slave-lag', 'If slave lag exceeds this many seconds, wait until it drops before continuing. Default: 10', false, true );
+ $this->addOption( 'throttle', 'Wait this many milliseconds after each category. Default: 0', false, true );
+ $this->addOption( 'force', 'Run regardless of whether the database says it\'s been run already' );
+ }
+
+ public function execute() {
+ $begin = $this->getOption( 'begin', '' );
+ $maxSlaveLag = $this->getOption( 'max-slave-lag', 10 );
+ $throttle = $this->getOption( 'throttle', 0 );
+ $force = $this->getOption( 'force', false );
+ $this->doPopulateCategory( $begin, $maxSlaveLag, $throttle, $force );
+ }
-$defaults = array(
- 'begin' => '',
- 'max-slave-lag' => 10,
- 'throttle' => 0,
- 'force' => false
-);
-$options = array_merge( $defaults, $options );
+ private function doPopulateCategory( $begin, $maxlag, $throttle, $force ) {
+ $dbw = wfGetDB( DB_MASTER );
+
+ if( !$force ) {
+ $row = $dbw->selectRow(
+ 'updatelog',
+ '1',
+ array( 'ul_key' => 'populate category' ),
+ __FUNCTION__
+ );
+ if( $row ) {
+ $this->output( "Category table already populated. Use php ".
+ "maintenance/populateCategory.php\n--force from the command line ".
+ "to override.\n" );
+ return true;
+ }
+ }
+
+ $maxlag = intval( $maxlag );
+ $throttle = intval( $throttle );
+ $force = (bool)$force;
+ if( $begin !== '' ) {
+ $where = 'cl_to > '.$dbw->addQuotes( $begin );
+ } else {
+ $where = null;
+ }
+ $i = 0;
+
+ while( true ) {
+ # Find which category to update
+ $row = $dbw->selectRow(
+ 'categorylinks',
+ 'cl_to',
+ $where,
+ __FUNCTION__,
+ array(
+ 'ORDER BY' => 'cl_to'
+ )
+ );
+ if( !$row ) {
+ # Done, hopefully.
+ break;
+ }
+ $name = $row->cl_to;
+ $where = 'cl_to > '.$dbw->addQuotes( $name );
+
+ # Use the row to update the category count
+ $cat = Category::newFromName( $name );
+ if( !is_object( $cat ) ) {
+ $this->output( "The category named $name is not valid?!\n" );
+ } else {
+ $cat->refreshCounts();
+ }
+
+ ++$i;
+ if( !($i % self::REPORTING_INTERVAL) ) {
+ $this->output( "$name\n" );
+ wfWaitForSlaves( $maxlag );
+ }
+ usleep( $throttle*1000 );
+ }
+
+ if( $dbw->insert(
+ 'updatelog',
+ array( 'ul_key' => 'populate category' ),
+ __FUNCTION__,
+ 'IGNORE'
+ )
+ ) {
+ wfOut( "Category population complete.\n" );
+ return true;
+ } else {
+ wfOut( "Could not insert category population row.\n" );
+ return false;
+ }
+ }
+}
-populateCategory( $options['begin'], $options['max-slave-lag'],
- $options['throttle'], $options['force'] );
+$maintClass = "PopulateCategory";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/populateLogSearch.inc b/maintenance/populateLogSearch.inc
new file mode 100644
index 00000000..b5e34fb7
--- /dev/null
+++ b/maintenance/populateLogSearch.inc
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Makes the required database updates for log display in Special:RevisionDelete
+ *
+ * Run via update.php or directly through populateLogSearch.php
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+define( 'LOG_SEARCH_BATCH_SIZE', 300 );
+
+function migrate_log_params( $db ) {
+ $start = $db->selectField( 'logging', 'MIN(log_id)', false, __FUNCTION__ );
+ if( !$start ) {
+ echo "Nothing to do.\n";
+ return true;
+ }
+ $end = $db->selectField( 'logging', 'MAX(log_id)', false, __FUNCTION__ );
+
+ # Do remaining chunk
+ $end += LOG_SEARCH_BATCH_SIZE - 1;
+ $blockStart = $start;
+ $blockEnd = $start + LOG_SEARCH_BATCH_SIZE - 1;
+ while( $blockEnd <= $end ) {
+ echo "...doing log_id from $blockStart to $blockEnd\n";
+ $cond = array("log_id BETWEEN $blockStart AND $blockEnd");
+ # Applicable log types
+ $cond['log_type'] = array('delete','suppress');
+ $res = $db->select( 'logging', '*', $cond, __FUNCTION__ );
+ $batch = array();
+ while( $row = $db->fetchObject( $res ) ) {
+ // RevisionDelete logs - revisions
+ if( LogEventsList::typeAction( $row, array('delete','suppress'), 'revision' ) ) {
+ $params = LogPage::extractParams( $row->log_params );
+ // Param format: <urlparam> <item CSV> [<ofield> <nfield>]
+ if( count($params) >= 2 ) {
+ $field = RevisionDeleter::getRelationType($params[0]);
+ // B/C, the params may start with a title key
+ if( $field == null ) {
+ array_shift($params);
+ $field = RevisionDeleter::getRelationType($params[0]);
+ }
+ if( $field == null ) {
+ echo "Invalid param type for $row->log_id\n";
+ continue; // skip this row
+ }
+ $items = explode(',',$params[1]);
+ $log = new LogPage( $row->log_type );
+ $log->addRelations( $field, $items, $row->log_id );
+ }
+ // RevisionDelete logs - log events
+ } else if( LogEventsList::typeAction( $row, array('delete','suppress'), 'event' ) ) {
+ $params = LogPage::extractParams( $row->log_params );
+ // Param format: <item CSV> [<ofield> <nfield>]
+ if( count($params) >= 1 ) {
+ $items = explode(',',$params[0]);
+ $log = new LogPage( $row->log_type );
+ $log->addRelations( 'log_id', $items, $row->log_id );
+ }
+ }
+ }
+ $blockStart += LOG_SEARCH_BATCH_SIZE;
+ $blockEnd += LOG_SEARCH_BATCH_SIZE;
+ wfWaitForSlaves( 5 );
+ }
+ if( $db->insert(
+ 'updatelog',
+ array( 'ul_key' => 'populate log_search' ),
+ __FUNCTION__,
+ 'IGNORE'
+ )
+ ) {
+ wfOut( "log_search population complete.\n" );
+ return true;
+ } else {
+ wfOut( "Could not insert log_search population row.\n" );
+ return false;
+ }
+}
diff --git a/maintenance/populateLogSearch.php b/maintenance/populateLogSearch.php
new file mode 100644
index 00000000..b045104e
--- /dev/null
+++ b/maintenance/populateLogSearch.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Makes the required database updates for populating the
+ * log_search table retroactively
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class PopulateLogSearch extends Maintenance {
+
+ const LOG_SEARCH_BATCH_SIZE = 100;
+
+ static $tableMap = array('rev' => 'revision', 'fa' => 'filearchive', 'oi' => 'oldimage', 'ar' => 'archive');
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Migrate log params to new table and index for searching";
+ }
+
+ public function execute() {
+ $db = wfGetDB( DB_MASTER );
+ if ( !$db->tableExists( 'log_search' ) ) {
+ $this->error( "log_search does not exist", true );
+ }
+ $start = $db->selectField( 'logging', 'MIN(log_id)', false, __FUNCTION__ );
+ if( !$start ) {
+ $this->output( "Nothing to do.\n" );
+ return true;
+ }
+ $end = $db->selectField( 'logging', 'MAX(log_id)', false, __FUNCTION__ );
+
+ # Do remaining chunk
+ $end += self::LOG_SEARCH_BATCH_SIZE - 1;
+ $blockStart = $start;
+ $blockEnd = $start + self::LOG_SEARCH_BATCH_SIZE - 1;
+
+ $delTypes = array('delete','suppress'); // revisiondelete types
+ while( $blockEnd <= $end ) {
+ $this->output( "...doing log_id from $blockStart to $blockEnd\n" );
+ $cond = "log_id BETWEEN $blockStart AND $blockEnd";
+ $res = $db->select( 'logging', '*', $cond, __FUNCTION__ );
+ $batch = array();
+ foreach( $res as $row ) {
+ // RevisionDelete logs - revisions
+ if( LogEventsList::typeAction( $row, $delTypes, 'revision' ) ) {
+ $params = LogPage::extractParams( $row->log_params );
+ // Param format: <urlparam> <item CSV> [<ofield> <nfield>]
+ if( count($params) < 2 ) continue; // bad row?
+ $field = RevisionDeleter::getRelationType($params[0]);
+ // B/C, the params may start with a title key (<title> <urlparam> <CSV>)
+ if( $field == null ) {
+ array_shift($params); // remove title param
+ $field = RevisionDeleter::getRelationType($params[0]);
+ if( $field == null ) {
+ $this->output( "Invalid param type for {$row->log_id}\n" );
+ continue; // skip this row
+ } else {
+ // Clean up the row...
+ $db->update( 'logging',
+ array('log_params' => implode(',',$params) ),
+ array('log_id' => $row->log_id ) );
+ }
+ }
+ $items = explode(',',$params[1]);
+ $log = new LogPage( $row->log_type );
+ // Add item relations...
+ $log->addRelations( $field, $items, $row->log_id );
+ // Determine what table to query...
+ $prefix = substr( $field, 0, strpos($field,'_') ); // db prefix
+ if( !isset(self::$tableMap[$prefix]) )
+ continue; // bad row?
+ $table = self::$tableMap[$prefix];
+ $userField = $prefix.'_user';
+ $userTextField = $prefix.'_user_text';
+ // Add item author relations...
+ $userIds = $userIPs = array();
+ $sres = $db->select( $table,
+ array($userField,$userTextField),
+ array($field => $items)
+ );
+ foreach( $sres as $srow ) {
+ if( $srow->$userField > 0 )
+ $userIds[] = intval($srow->$userField);
+ else if( $srow->$userTextField != '' )
+ $userIPs[] = $srow->$userTextField;
+ }
+ // Add item author relations...
+ $log->addRelations( 'target_author_id', $userIds, $row->log_id );
+ $log->addRelations( 'target_author_ip', $userIPs, $row->log_id );
+ // RevisionDelete logs - log events
+ } else if( LogEventsList::typeAction( $row, $delTypes, 'event' ) ) {
+ $params = LogPage::extractParams( $row->log_params );
+ // Param format: <item CSV> [<ofield> <nfield>]
+ if( count($params) < 1 ) continue; // bad row
+ $items = explode( ',', $params[0] );
+ $log = new LogPage( $row->log_type );
+ // Add item relations...
+ $log->addRelations( 'log_id', $items, $row->log_id );
+ // Add item author relations...
+ $userIds = $userIPs = array();
+ $sres = $db->select( 'logging',
+ array('log_user','log_user_text'),
+ array('log_id' => $items)
+ );
+ foreach( $sres as $srow ) {
+ if( $srow->log_user > 0 )
+ $userIds[] = intval($srow->log_user);
+ else if( IP::isIPAddress($srow->log_user_text) )
+ $userIPs[] = $srow->log_user_text;
+ }
+ $log->addRelations( 'target_author_id', $userIds, $row->log_id );
+ $log->addRelations( 'target_author_ip', $userIPs, $row->log_id );
+ }
+ }
+ $blockStart += self::LOG_SEARCH_BATCH_SIZE;
+ $blockEnd += self::LOG_SEARCH_BATCH_SIZE;
+ wfWaitForSlaves( 5 );
+ }
+ if( $db->insert(
+ 'updatelog',
+ array( 'ul_key' => 'populate log_search' ),
+ __FUNCTION__,
+ 'IGNORE'
+ )
+ ) {
+ $this->output( "log_search population complete.\n" );
+ return true;
+ } else {
+ $this->output( "Could not insert log_search population row.\n" );
+ return false;
+ }
+ }
+}
+
+$maintClass = "PopulateLogSearch";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/populateLogUsertext.php b/maintenance/populateLogUsertext.php
new file mode 100644
index 00000000..a491b2b0
--- /dev/null
+++ b/maintenance/populateLogUsertext.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Makes the required database updates for Special:ProtectedPages
+ * to show all protected pages, even ones before the page restrictions
+ * schema change. All remaining page_restriction column values are moved
+ * to the new table.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class PopulateLogUsertext extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Populates the log_user_text";
+ $this->setBatchSize( 100 );
+ }
+
+ public function execute() {
+ $db = wfGetDB( DB_MASTER );
+ $start = $db->selectField( 'logging', 'MIN(log_id)', false, __METHOD__ );
+ if( !$start ) {
+ $this->output( "Nothing to do.\n" );
+ return true;
+ }
+ $end = $db->selectField( 'logging', 'MAX(log_id)', false, __METHOD__ );
+
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+ while( $blockEnd <= $end ) {
+ $this->output( "...doing log_id from $blockStart to $blockEnd\n" );
+ $cond = "log_id BETWEEN $blockStart AND $blockEnd AND log_user = user_id";
+ $res = $db->select( array('logging','user'),
+ array('log_id','user_name'), $cond, __METHOD__ );
+ $batch = array();
+ $db->begin();
+ foreach( $res as $row ) {
+ $db->update( 'logging', array('log_user_text' => $row->user_name),
+ array('log_id' => $row->log_id), __METHOD__ );
+ }
+ $db->commit();
+ $blockStart += $this->mBatchSize;
+ $blockEnd += $this->mBatchSize;
+ wfWaitForSlaves( 5 );
+ }
+ if( $db->insert(
+ 'updatelog',
+ array( 'ul_key' => 'populate log_usertext' ),
+ __METHOD__,
+ 'IGNORE'
+ )
+ ) {
+ $this->output( "log_usertext population complete.\n" );
+ return true;
+ } else {
+ $this->output( "Could not insert log_usertext population row.\n" );
+ return false;
+ }
+ }
+}
+
+$maintClass = "PopulateLogUsertext";
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/populateParentId.php b/maintenance/populateParentId.php
index 01730033..bf81cb68 100644
--- a/maintenance/populateParentId.php
+++ b/maintenance/populateParentId.php
@@ -1,18 +1,119 @@
<?php
-
/*
* Makes the required database updates for rev_parent_id
* to be of any use. It can be used for some simple tracking
* and to find new page edits by users.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
*/
-require_once 'commandLine.inc';
-require_once 'populateParentId.inc';
-
-$db =& wfGetDB( DB_MASTER );
-if ( !$db->tableExists( 'revision' ) ) {
- echo "revision table does not exist\n";
- exit( 1 );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class PopulateParentId extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Populates rev_parent_id";
+ $this->setBatchSize( 200 );
+ }
+
+ public function execute() {
+ $db = wfGetDB( DB_MASTER );
+ if ( !$db->tableExists( 'revision' ) ) {
+ $this->error( "revision table does not exist", true );
+ }
+ $this->output( "Populating rev_parent_id column\n" );
+ $start = $db->selectField( 'revision', 'MIN(rev_id)', false, __FUNCTION__ );
+ $end = $db->selectField( 'revision', 'MAX(rev_id)', false, __FUNCTION__ );
+ if( is_null( $start ) || is_null( $end ) ){
+ $this->output( "...revision table seems to be empty.\n" );
+ $db->insert( 'updatelog',
+ array( 'ul_key' => 'populate rev_parent_id' ),
+ __METHOD__,
+ 'IGNORE' );
+ return;
+ }
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = intval( $start );
+ $blockEnd = intval( $start ) + $this->mBatchSize - 1;
+ $count = 0;
+ $changed = 0;
+ while( $blockEnd <= $end ) {
+ $this->output( "...doing rev_id from $blockStart to $blockEnd\n" );
+ $cond = "rev_id BETWEEN $blockStart AND $blockEnd";
+ $res = $db->select( 'revision',
+ array('rev_id','rev_page','rev_timestamp','rev_parent_id'),
+ $cond, __METHOD__ );
+ # Go through and update rev_parent_id from these rows.
+ # Assume that the previous revision of the title was
+ # the original previous revision of the title when the
+ # edit was made...
+ foreach( $res as $row ) {
+ # First, check rows with the same timestamp other than this one
+ # with a smaller rev ID. The highest ID "wins". This avoids loops
+ # as timestamp can only decrease and never loops with IDs (from parent to parent)
+ $previousID = $db->selectField( 'revision', 'rev_id',
+ array( 'rev_page' => $row->rev_page, 'rev_timestamp' => $row->rev_timestamp,
+ "rev_id < " . intval( $row->rev_id ) ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_id DESC' ) );
+ # If there are none, check the the highest ID with a lower timestamp
+ if( !$previousID ) {
+ # Get the highest older timestamp
+ $lastTimestamp = $db->selectField( 'revision', 'rev_timestamp',
+ array( 'rev_page' => $row->rev_page, "rev_timestamp < " . $db->addQuotes( $row->rev_timestamp ) ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_timestamp DESC' ) );
+ # If there is one, let the highest rev ID win
+ if( $lastTimestamp ) {
+ $previousID = $db->selectField( 'revision', 'rev_id',
+ array( 'rev_page' => $row->rev_page, 'rev_timestamp' => $lastTimestamp ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_id DESC' ) );
+ }
+ }
+ $previousID = intval($previousID);
+ if( $previousID != $row->rev_parent_id )
+ $changed++;
+ # Update the row...
+ $db->update( 'revision',
+ array( 'rev_parent_id' => $previousID ),
+ array( 'rev_id' => $row->rev_id ),
+ __METHOD__ );
+ $count++;
+ }
+ $blockStart += $this->mBatchSize - 1;
+ $blockEnd += $this->mBatchSize - 1;
+ wfWaitForSlaves( 5 );
+ }
+ $logged = $db->insert( 'updatelog',
+ array( 'ul_key' => 'populate rev_parent_id' ),
+ __METHOD__,
+ 'IGNORE' );
+ if( $logged ) {
+ $this->output( "rev_parent_id population complete ... {$count} rows [{$changed} changed]\n" );
+ return true;
+ } else {
+ $this->output( "Could not insert rev_parent_id population row.\n" );
+ return false;
+ }
+ }
}
-populate_rev_parent_id( $db );
+$maintClass = "PopulateParentId";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/populateSha1.php b/maintenance/populateSha1.php
new file mode 100644
index 00000000..72ef9461
--- /dev/null
+++ b/maintenance/populateSha1.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Optional upgrade script to populate the img_sha1 field
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__).'/Maintenance.php' );
+
+class PopulateSha1 extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Populate the img_sha1 field";
+ $this->addOption( 'method', "Use 'pipe' to pipe to mysql command line,\n" .
+ "\t\tdefault uses Database class", false, true );
+ $this->addOption( 'file', 'Fix for a specific file, without File: namespace prefixed', false, true );
+ }
+
+ public function execute() {
+ $method = $this->getOption( 'method', 'normal' );
+ $file = $this->getOption( 'file' );
+
+ $t = -microtime( true );
+ $dbw = wfGetDB( DB_MASTER );
+ if( $file ) {
+ $res = $dbw->selectRow(
+ 'image',
+ array( 'img_name' ),
+ array( 'img_name' => $dbw->addQuotes( $file ) ),
+ __METHOD__
+ );
+ if( !$res ) {
+ $this->error( "No such file: $file", true );
+ return;
+ }
+ } else {
+ $res = $dbw->select( 'image', array( 'img_name' ), array( 'img_sha1' => '' ), __METHOD__ );
+ }
+ $imageTable = $dbw->tableName( 'image' );
+ $oldimageTable = $dbw->tableName( 'oldimage' );
+ $batch = array();
+
+ if ( $method == 'pipe' ) {
+ // @fixme kill this and replace with a second unbuffered DB connection.
+ global $wgDBuser, $wgDBserver, $wgDBpassword, $wgDBname;
+ $cmd = 'mysql -u' . wfEscapeShellArg( $wgDBuser ) .
+ ' -h' . wfEscapeShellArg( $wgDBserver ) .
+ ' -p' . wfEscapeShellArg( $wgDBpassword, $wgDBname );
+ $this->output( "Using pipe method\n" );
+ $pipe = popen( $cmd, 'w' );
+ }
+
+ $numRows = $res->numRows();
+ $i = 0;
+ foreach ( $res as $row ) {
+ if ( $i % 100 == 0 ) {
+ $this->output( sprintf( "Done %d of %d, %5.3f%% \r", $i, $numRows, $i / $numRows * 100 ) );
+ wfWaitForSlaves( 5 );
+ }
+ $file = wfLocalFile( $row->img_name );
+ if ( !$file ) {
+ continue;
+ }
+ $sha1 = File::sha1Base36( $file->getPath() );
+ if ( strval( $sha1 ) !== '' ) {
+ $sql = "UPDATE $imageTable SET img_sha1=" . $dbw->addQuotes( $sha1 ) .
+ " WHERE img_name=" . $dbw->addQuotes( $row->img_name );
+ if ( $method == 'pipe' ) {
+ fwrite( $pipe, "$sql;\n" );
+ } else {
+ $dbw->query( $sql, __METHOD__ );
+ }
+ }
+ $i++;
+ }
+ if ( $method == 'pipe' ) {
+ fflush( $pipe );
+ pclose( $pipe );
+ }
+ $t += microtime( true );
+ $this->output( sprintf( "\nDone %d files in %.1f seconds\n", $numRows, $t ) );
+ }
+}
+
+$maintClass = "PopulateSha1";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/postgres/archives/patch-l10n_cache.sql b/maintenance/postgres/archives/patch-l10n_cache.sql
new file mode 100644
index 00000000..9b39b1b7
--- /dev/null
+++ b/maintenance/postgres/archives/patch-l10n_cache.sql
@@ -0,0 +1,8 @@
+CREATE TABLE l10n_cache (
+ lc_lang TEXT NOT NULL,
+ lc_key TEXT NOT NULL,
+ lc_value TEXT NOT NULL
+);
+CREATE INDEX l10n_cache_lc_lang_key ON l10n_cache (lc_lang, lc_key);
+
+
diff --git a/maintenance/postgres/archives/patch-log_search.sql b/maintenance/postgres/archives/patch-log_search.sql
new file mode 100644
index 00000000..20a61fd7
--- /dev/null
+++ b/maintenance/postgres/archives/patch-log_search.sql
@@ -0,0 +1,9 @@
+
+CREATE TABLE log_search (
+ ls_field TEXT NOT NULL,
+ ls_value TEXT NOT NULL,
+ ls_log_id INTEGER NOT NULL DEFAULT 0
+);
+
+ALTER TABLE log_search ADD CONSTRAINT log_search_pk PRIMARY KEY(ls_field, ls_value, ls_log_id);
+CREATE INDEX ls_log_id ON log_search (ls_log_id);
diff --git a/maintenance/postgres/archives/patch-update_sequences.sql b/maintenance/postgres/archives/patch-update_sequences.sql
new file mode 100644
index 00000000..a3d30681
--- /dev/null
+++ b/maintenance/postgres/archives/patch-update_sequences.sql
@@ -0,0 +1,20 @@
+ALTER SEQUENCE rev_rev_id_val RENAME TO revision_rev_id_seq;
+ALTER TABLE revision ALTER COLUMN rev_id SET DEFAULT NEXTVAL('revision_rev_id_seq');
+
+ALTER SEQUENCE text_old_id_val RENAME TO text_old_id_seq;
+ALTER TABLE pagecontent ALTER COLUMN old_id SET DEFAULT nextval('text_old_id_seq');
+
+ALTER SEQUENCE category_id_seq RENAME TO category_cat_id_seq;
+ALTER TABLE category ALTER COLUMN cat_id SET DEFAULT nextval('category_cat_id_seq');
+
+ALTER SEQUENCE ipblocks_ipb_id_val RENAME TO ipblocks_ipb_id_seq;
+ALTER TABLE ipblocks ALTER COLUMN ipb_id SET DEFAULT nextval('ipblocks_ipb_id_seq');
+
+ALTER SEQUENCE rc_rc_id_seq RENAME TO recentchanges_rc_id_seq;
+ALTER TABLE recentchanges ALTER COLUMN rc_id SET DEFAULT nextval('recentchanges_rc_id_seq');
+
+ALTER SEQUENCE log_log_id_seq RENAME TO logging_log_id_seq;
+ALTER TABLE logging ALTER COLUMN log_id SET DEFAULT nextval('logging_log_id_seq');
+
+ALTER SEQUENCE pr_id_val RENAME TO page_restrictions_pr_id_seq;
+ALTER TABLE page_restrictions ALTER COLUMN pr_id SET DEFAULT nextval('page_restrictions_pr_id_seq');
diff --git a/maintenance/postgres/archives/patch-user_properties.sql b/maintenance/postgres/archives/patch-user_properties.sql
new file mode 100644
index 00000000..b40fa85f
--- /dev/null
+++ b/maintenance/postgres/archives/patch-user_properties.sql
@@ -0,0 +1,8 @@
+CREATE TABLE user_properties(
+ up_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
+ up_property TEXT NOT NULL,
+ up_value TEXT
+);
+
+CREATE UNIQUE INDEX user_properties_user_property on user_properties (up_user,up_property);
+CREATE INDEX user_properties_property on user_properties (up_property);
diff --git a/maintenance/postgres/compare_schemas.pl b/maintenance/postgres/compare_schemas.pl
index 850244ba..9bddf504 100644
--- a/maintenance/postgres/compare_schemas.pl
+++ b/maintenance/postgres/compare_schemas.pl
@@ -129,6 +129,8 @@ sub parse_sql {
}
elsif (m{^CREATE (?:UNIQUE )?(?:FULLTEXT )?INDEX /\*i\*/(\w+) ON /\*_\*/(\w+) \((.+?)\);}) {
}
+ elsif (m{^\s*PRIMARY KEY \([\w,]+\)}) {
+ }
else {
die "Cannot parse line $. of $oldfile:\n$_\n";
}
@@ -258,6 +260,9 @@ while (<$newfh>) {
}
$lastcomma = $3 ? 1 : 0;
}
+ elsif (m{^\s*PRIMARY KEY \([\w,]+\)}) {
+ $lastcomma = 0;
+ }
else {
die "Cannot parse line $. of $new:\n$_\n";
}
@@ -302,7 +307,8 @@ ar_comment tinyblob TEXT
fa_description tinyblob TEXT
img_description tinyblob TEXT
ipb_reason tinyblob TEXT
-log_action varbinary(10) TEXT
+log_action varbinary(32) TEXT
+log_type varbinary(32) TEXT
oi_description tinyblob TEXT
rev_comment tinyblob TEXT
rc_log_action varbinary(255) TEXT
@@ -318,12 +324,17 @@ ipb_address tinyblob TEXT # IP address or username
ipb_range_end tinyblob TEXT # hexadecimal
ipb_range_start tinyblob TEXT # hexadecimal
img_minor_mime varbinary(32) TEXT
+lc_lang varbinary(32) TEXT
+lc_value varbinary(32) TEXT
+
img_sha1 varbinary(32) TEXT
job_cmd varbinary(60) TEXT # Should we limit to 60 as well?
keyname varbinary(255) TEXT # No tablename prefix (objectcache)
ll_lang varbinary(20) TEXT # Language code
+lc_value mediumblob TEXT
log_params blob TEXT # LF separated list of args
log_type varbinary(10) TEXT
+ls_field varbinary(32) TEXT
oi_minor_mime varbinary(32) TEXT
oi_sha1 varbinary(32) TEXT
old_flags tinyblob TEXT
@@ -343,6 +354,8 @@ rc_params blob TEXT
rlc_to_blob blob TEXT
ts_tags blob TEXT
ug_group varbinary(16) TEXT
+up_property varbinary(32) TEXT
+up_value blob TEXT
user_email_token binary(32) TEXT
user_ip varbinary(40) TEXT
user_newpassword tinyblob TEXT
diff --git a/maintenance/postgres/mediawiki_mysql2postgres.pl b/maintenance/postgres/mediawiki_mysql2postgres.pl
index a3b17f94..220c779b 100644
--- a/maintenance/postgres/mediawiki_mysql2postgres.pl
+++ b/maintenance/postgres/mediawiki_mysql2postgres.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
## Convert data from a MySQL mediawiki database into a Postgres mediawiki database
-## svn: $Id: mediawiki_mysql2postgres.pl 43845 2008-11-22 06:44:45Z greg $
+## svn: $Id: mediawiki_mysql2postgres.pl 59489 2009-11-27 15:34:54Z greg $
## NOTE: It is probably easier to dump your wiki using maintenance/dumpBackup.php
## and then import it with maintenance/importDump.php
@@ -181,7 +181,7 @@ $MYSQLSOCKET and $conninfo .= "\n-- socket $MYSQLSOCKET";
print qq{
-- Dump of MySQL Mediawiki tables for import into a Postgres Mediawiki schema
-- Performed by the program: $0
--- Version: $VERSION (subversion }.q{$LastChangedRevision: 43845 $}.qq{)
+-- Version: $VERSION (subversion }.q{$LastChangedRevision: 59489 $}.qq{)
-- Author: Greg Sabino Mullane <greg\@turnstep.com> Comments welcome
--
-- This file was created: $now
@@ -416,7 +416,7 @@ SELECT setval('page_page_id_seq', 1+coalesce(max(page_id),0),false) FROM pa
SELECT setval('pr_id_val', 1+coalesce(max(pr_id) ,0),false) FROM page_restrictions;
SELECT setval('rc_rc_id_seq', 1+coalesce(max(rc_id) ,0),false) FROM recentchanges;
SELECT setval('rev_rev_id_val', 1+coalesce(max(rev_id) ,0),false) FROM revision;
-SELECT setval('text_old_id_val', 1+coalesce(max(old_id) ,0),false) FROM pagecontent;
+SELECT setval('text_old_id_seq', 1+coalesce(max(old_id) ,0),false) FROM pagecontent;
SELECT setval('trackbacks_tb_id_seq', 1+coalesce(max(tb_id) ,0),false) FROM trackbacks;
SELECT setval('user_user_id_seq', 1+coalesce(max(user_id),0),false) FROM mwuser;
};
diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql
index 23e8b596..38b607d9 100644
--- a/maintenance/postgres/tables.sql
+++ b/maintenance/postgres/tables.sql
@@ -82,9 +82,9 @@ $mw$;
CREATE TRIGGER page_deleted AFTER DELETE ON page
FOR EACH ROW EXECUTE PROCEDURE page_deleted();
-CREATE SEQUENCE rev_rev_id_val;
+CREATE SEQUENCE revision_rev_id_seq;
CREATE TABLE revision (
- rev_id INTEGER NOT NULL UNIQUE DEFAULT nextval('rev_rev_id_val'),
+ rev_id INTEGER NOT NULL UNIQUE DEFAULT nextval('revision_rev_id_seq'),
rev_page INTEGER NULL REFERENCES page (page_id) ON DELETE CASCADE,
rev_text_id INTEGER NULL, -- FK
rev_comment TEXT,
@@ -103,17 +103,17 @@ CREATE INDEX rev_user_idx ON revision (rev_user);
CREATE INDEX rev_user_text_idx ON revision (rev_user_text);
-CREATE SEQUENCE text_old_id_val;
+CREATE SEQUENCE text_old_id_seq;
CREATE TABLE pagecontent ( -- replaces reserved word 'text'
- old_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('text_old_id_val'),
+ old_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('text_old_id_seq'),
old_text TEXT,
old_flags TEXT
);
-CREATE SEQUENCE pr_id_val;
+CREATE SEQUENCE page_restrictions_pr_id_seq;
CREATE TABLE page_restrictions (
- pr_id INTEGER NOT NULL UNIQUE DEFAULT nextval('pr_id_val'),
+ pr_id INTEGER NOT NULL UNIQUE DEFAULT nextval('page_restrictions_pr_id_seq'),
pr_page INTEGER NULL REFERENCES page (page_id) ON DELETE CASCADE,
pr_type TEXT NOT NULL,
pr_level TEXT NOT NULL,
@@ -155,7 +155,9 @@ CREATE INDEX archive_user_text ON archive (ar_user_text);
CREATE TABLE redirect (
rd_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE,
rd_namespace SMALLINT NOT NULL,
- rd_title TEXT NOT NULL
+ rd_title TEXT NOT NULL,
+ rd_interwiki TEXT NULL,
+ rd_fragment TEXT NULL
);
CREATE INDEX redirect_ns_title ON redirect (rd_namespace,rd_title,rd_from);
@@ -198,6 +200,13 @@ CREATE TABLE externallinks (
CREATE INDEX externallinks_from_to ON externallinks (el_from,el_to);
CREATE INDEX externallinks_index ON externallinks (el_index);
+CREATE TABLE external_user (
+ eu_local_id INTEGER NOT NULL PRIMARY KEY,
+ eu_external_id TEXT
+);
+
+CREATE UNIQUE INDEX eu_external_id ON external_user (eu_external_id);
+
CREATE TABLE langlinks (
ll_from INTEGER NOT NULL REFERENCES page (page_id) ON DELETE CASCADE,
ll_lang TEXT,
@@ -224,9 +233,9 @@ CREATE TABLE hitcounter (
);
-CREATE SEQUENCE ipblocks_ipb_id_val;
+CREATE SEQUENCE ipblocks_ipb_id_seq;
CREATE TABLE ipblocks (
- ipb_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('ipblocks_ipb_id_val'),
+ ipb_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('ipblocks_ipb_id_seq'),
ipb_address TEXT NULL,
ipb_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
ipb_by INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
@@ -288,7 +297,7 @@ CREATE TABLE oldimage (
oi_deleted SMALLINT NOT NULL DEFAULT 0,
oi_sha1 TEXT NOT NULL DEFAULT ''
);
-ALTER TABLE oldimage ADD CONSTRAINT oldimage_oi_name_fkey_cascade FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE;
+ALTER TABLE oldimage ADD CONSTRAINT oldimage_oi_name_fkey_cascaded FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE INDEX oi_name_timestamp ON oldimage (oi_name,oi_timestamp);
CREATE INDEX oi_name_archive_name ON oldimage (oi_name,oi_archive_name);
CREATE INDEX oi_sha1 ON oldimage (oi_sha1);
@@ -324,9 +333,9 @@ CREATE INDEX fa_notime ON filearchive (fa_deleted_timestamp);
CREATE INDEX fa_nouser ON filearchive (fa_deleted_user);
-CREATE SEQUENCE rc_rc_id_seq;
+CREATE SEQUENCE recentchanges_rc_id_seq;
CREATE TABLE recentchanges (
- rc_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('rc_rc_id_seq'),
+ rc_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('recentchanges_rc_id_seq'),
rc_timestamp TIMESTAMPTZ NOT NULL,
rc_cur_time TIMESTAMPTZ NOT NULL,
rc_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL,
@@ -426,9 +435,9 @@ CREATE TABLE transcache (
);
-CREATE SEQUENCE log_log_id_seq;
+CREATE SEQUENCE logging_log_id_seq;
CREATE TABLE logging (
- log_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('log_log_id_seq'),
+ log_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('logging_log_id_seq'),
log_type TEXT NOT NULL,
log_action TEXT NOT NULL,
log_timestamp TIMESTAMPTZ NOT NULL,
@@ -437,12 +446,24 @@ CREATE TABLE logging (
log_title TEXT NOT NULL,
log_comment TEXT,
log_params TEXT,
- log_deleted SMALLINT NOT NULL DEFAULT 0
+ log_deleted SMALLINT NOT NULL DEFAULT 0,
+ log_user_text TEXT NOT NULL DEFAULT '',
+ log_page INTEGER
);
CREATE INDEX logging_type_name ON logging (log_type, log_timestamp);
CREATE INDEX logging_user_time ON logging (log_timestamp, log_user);
CREATE INDEX logging_page_time ON logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX logging_times ON logging (log_timestamp);
+CREATE INDEX logging_user_type_time ON logging (log_user, log_type, log_timestamp);
+CREATE INDEX logging_page_id_time ON logging (log_page, log_timestamp);
+CREATE TABLE log_search (
+ ls_field TEXT NOT NULL,
+ ls_value TEXT NOT NULL,
+ ls_log_id INTEGER NOT NULL DEFAULT 0,
+ PRIMARY KEY (ls_field,ls_value,ls_log_id)
+);
+CREATE INDEX ls_log_id ON log_search (ls_log_id);
CREATE SEQUENCE trackbacks_tb_id_seq;
CREATE TABLE trackbacks (
@@ -542,9 +563,9 @@ CREATE TABLE updatelog (
);
-CREATE SEQUENCE category_id_seq;
+CREATE SEQUENCE category_cat_id_seq;
CREATE TABLE category (
- cat_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('category_id_seq'),
+ cat_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('category_cat_id_seq'),
cat_title TEXT NOT NULL,
cat_pages INTEGER NOT NULL DEFAULT 0,
cat_subcats INTEGER NOT NULL DEFAULT 0,
@@ -580,6 +601,14 @@ CREATE TABLE valid_tag (
vt_tag TEXT NOT NULL PRIMARY KEY
);
+CREATE TABLE user_properties (
+ up_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE,
+ up_property TEXT NOT NULL,
+ up_value TEXT
+);
+CREATE UNIQUE INDEX user_properties_user_property ON user_properties (up_user,up_property);
+CREATE INDEX user_properties_property ON user_properties (up_property);
+
CREATE TABLE mediawiki_version (
type TEXT NOT NULL,
mw_version TEXT NOT NULL,
@@ -599,5 +628,11 @@ CREATE TABLE mediawiki_version (
);
INSERT INTO mediawiki_version (type,mw_version,sql_version,sql_date)
- VALUES ('Creation','??','$LastChangedRevision: 48615 $','$LastChangedDate: 2009-03-20 12:15:41 +1100 (Fri, 20 Mar 2009) $');
+ VALUES ('Creation','??','$LastChangedRevision: 59842 $','$LastChangedDate: 2009-12-09 06:32:17 +1100 (Wed, 09 Dec 2009) $');
+CREATE TABLE l10n_cache (
+ lc_lang TEXT NOT NULL,
+ lc_key TEXT NOT NULL,
+ lc_value TEXT NOT NULL
+);
+CREATE INDEX l10n_cache_lc_lang_key ON l10n_cache (lc_lang, lc_key);
diff --git a/maintenance/preprocessorFuzzTest.php b/maintenance/preprocessorFuzzTest.php
index 34960e01..c271b117 100644
--- a/maintenance/preprocessorFuzzTest.php
+++ b/maintenance/preprocessorFuzzTest.php
@@ -4,7 +4,7 @@
* @ingroup Maintenance
*/
-require_once( dirname( __FILE__ ). '/../maintenance/commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
$wgHooks['BeforeParserFetchTemplateAndtitle'][] = 'PPFuzzTester::templateHook';
@@ -102,7 +102,8 @@ class PPFuzzTester {
// This resolves a few differences between the old preprocessor and the
// XML-based one, which doesn't like illegals and converts line endings.
// It's done by the MW UI, so it's a reasonably legitimate thing to do.
- $s = UtfNormal::cleanUp( $s );
+ global $wgContLang;
+ $s = $wgContLang->normalize( $s );
return $s;
}
diff --git a/maintenance/protect.php b/maintenance/protect.php
new file mode 100644
index 00000000..126707a7
--- /dev/null
+++ b/maintenance/protect.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class Protect extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Protect or unprotect an article from the command line.";
+ $this->addOption( 'unprotect', 'Removes protection' );
+ $this->addOption( 'semiprotect', 'Adds semi-protection' );
+ $this->addOption( 'u', 'Username to protect with', false, true );
+ $this->addOption( 'r', 'Reason for un/protection', false, true );
+ }
+
+ public function execute() {
+ global $wgUser, $wgTitle, $wgArticle;
+
+ $userName = $this->getOption( 'u', 'Maintenance script' );
+ $reason = $this->getOption( 'r', '' );
+
+ $protection = "sysop";
+ if ( $this->hasOption('semiprotect') ) {
+ $protection = "autoconfirmed";
+ } elseif ( $this->hasOption('unprotect') ) {
+ $protection = "";
+ }
+
+ $wgUser = User::newFromName( $userName );
+ $restrictions = array( 'edit' => $protection, 'move' => $protection );
+
+ $wgTitle = Title::newFromText( $this->getArg() );
+ if ( !$wgTitle ) {
+ $this->error( "Invalid title", true );
+ }
+
+ $wgArticle = new Article( $wgTitle );
+
+ # un/protect the article
+ $this->output( "Updating protection status... " );
+ $success = $wgArticle->updateRestrictions($restrictions, $reason);
+ if ( $success ) {
+ $this->output( "done\n" );
+ } else {
+ $this->output( "failed\n" );
+ }
+ }
+}
+
+$maintClass = "Protect";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/purgeList.php b/maintenance/purgeList.php
index ab8ff9fb..7168a203 100644
--- a/maintenance/purgeList.php
+++ b/maintenance/purgeList.php
@@ -2,38 +2,62 @@
/**
* Send purge requests for listed pages to squid
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( "commandLine.inc" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class PurgeList extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Send purge requests for listed pages to squid";
+ }
-$stdin = fopen( "php://stdin", "rt" );
-$urls = array();
+ public function execute() {
+ $stdin = $this->getStdin();
+ $urls = array();
-while( !feof( $stdin ) ) {
- $page = trim( fgets( $stdin ) );
- if ( substr( $page, 0, 7 ) == 'http://' ) {
- $urls[] = $page;
- } elseif( $page !== '' ) {
- $title = Title::newFromText( $page );
- if( $title ) {
- $url = $title->getFullUrl();
- echo "$url\n";
- $urls[] = $url;
- if( isset( $options['purge'] ) ) {
- $title->invalidateCache();
+ while( !feof( $stdin ) ) {
+ $page = trim( fgets( $stdin ) );
+ if ( substr( $page, 0, 7 ) == 'http://' ) {
+ $urls[] = $page;
+ } elseif( $page !== '' ) {
+ $title = Title::newFromText( $page );
+ if( $title ) {
+ $url = $title->getFullUrl();
+ $this->output( "$url\n" );
+ $urls[] = $url;
+ if( isset( $options['purge'] ) ) {
+ $title->invalidateCache();
+ }
+ } else {
+ $this->output( "(Invalid title '$page')\n" );
+ }
}
- } else {
- echo "(Invalid title '$page')\n";
}
- }
-}
-
-echo "Purging " . count( $urls ) . " urls...\n";
-$u = new SquidUpdate( $urls );
-$u->doUpdate();
-echo "Done!\n";
+ $this->output( "Purging " . count( $urls ) . " urls...\n" );
+ $u = new SquidUpdate( $urls );
+ $u->doUpdate();
+ $this->output( "Done!\n" );
+ }
+}
+$maintClass = "PurgeList";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/purgeOldText.inc b/maintenance/purgeOldText.inc
index e41c374d..0bd5f2eb 100644
--- a/maintenance/purgeOldText.inc
+++ b/maintenance/purgeOldText.inc
@@ -20,7 +20,7 @@ function PurgeRedundantText( $delete = false ) {
# Get "active" text records from the revisions table
echo( "Searching for active text records in revisions table..." );
- $res = $dbw->query( "SELECT DISTINCTROW rev_text_id FROM $tbl_rev" );
+ $res = $dbw->query( "SELECT DISTINCT rev_text_id FROM $tbl_rev" );
while( $row = $dbw->fetchObject( $res ) ) {
$cur[] = $row->rev_text_id;
}
@@ -28,7 +28,7 @@ function PurgeRedundantText( $delete = false ) {
# Get "active" text records from the archive table
echo( "Searching for active text records in archive table..." );
- $res = $dbw->query( "SELECT DISTINCTROW ar_text_id FROM $tbl_arc" );
+ $res = $dbw->query( "SELECT DISTINCT ar_text_id FROM $tbl_arc" );
while( $row = $dbw->fetchObject( $res ) ) {
$cur[] = $row->ar_text_id;
}
diff --git a/maintenance/purgeOldText.php b/maintenance/purgeOldText.php
index 4a4be482..9621cb39 100644
--- a/maintenance/purgeOldText.php
+++ b/maintenance/purgeOldText.php
@@ -1,29 +1,39 @@
<?php
-
/**
* Purge old text records from the database
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-$options = array( 'purge', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'purgeOldText.inc' );
-
-echo( "Purge Old Text\n\n" );
-
-if( @$options['help'] ) {
- ShowUsage();
-} else {
- PurgeRedundantText( @$options['purge'] );
-}
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-function ShowUsage() {
- echo( "Prunes unused text records from the database.\n\n" );
- echo( "Usage: php purgeOldText.php [--purge]\n\n" );
- echo( "purge : Performs the deletion\n" );
- echo( " help : Show this usage information\n" );
+class PurgeOldText extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Purge old text records from the database";
+ $this->addOption( 'purge', 'Performs the deletion' );
+ }
+
+ public function execute() {
+ $this->purgeRedundantText( $this->hasOption('purge') );
+ }
}
+$maintClass = "PurgeOldText";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/reassignEdits.inc.php b/maintenance/reassignEdits.inc.php
deleted file mode 100644
index e68b4cf5..00000000
--- a/maintenance/reassignEdits.inc.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/**
- * Support functions for the reassignEdits script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- * @licence GNU General Public Licence 2.0 or later
- */
-
-/**
- * Reassign edits from one user to another
- *
- * @param $from User to take edits from
- * @param $to User to assign edits to
- * @param $rc Update the recent changes table
- * @param $report Don't change things; just echo numbers
- * @return integer Number of entries changed, or that would be changed
- */
-function reassignEdits( &$from, &$to, $rc = false, $report = false ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->immediateBegin();
- $fname = 'reassignEdits';
-
- # Count things
- out( "Checking current edits..." );
- $res = $dbw->select( 'revision', 'COUNT(*) AS count', userConditions( $from, 'rev_user', 'rev_user_text' ), $fname );
- $row = $dbw->fetchObject( $res );
- $cur = $row->count;
- out( "found {$cur}.\n" );
-
- out( "Checking deleted edits..." );
- $res = $dbw->select( 'archive', 'COUNT(*) AS count', userConditions( $from, 'ar_user', 'ar_user_text' ), $fname );
- $row = $dbw->fetchObject( $res );
- $del = $row->count;
- out( "found {$del}.\n" );
-
- # Don't count recent changes if we're not supposed to
- if( $rc ) {
- out( "Checking recent changes..." );
- $res = $dbw->select( 'recentchanges', 'COUNT(*) AS count', userConditions( $from, 'rc_user', 'rc_user_text' ), $fname );
- $row = $dbw->fetchObject( $res );
- $rec = $row->count;
- out( "found {$rec}.\n" );
- } else {
- $rec = 0;
- }
-
- $total = $cur + $del + $rec;
- out( "\nTotal entries to change: {$total}\n" );
-
- if( !$report ) {
- if( $total ) {
- # Reassign edits
- out( "\nReassigning current edits..." );
- $res = $dbw->update( 'revision', userSpecification( $to, 'rev_user', 'rev_user_text' ), userConditions( $from, 'rev_user', 'rev_user_text' ), $fname );
- out( "done.\nReassigning deleted edits..." );
- $res = $dbw->update( 'archive', userSpecification( $to, 'ar_user', 'ar_user_text' ), userConditions( $from, 'ar_user', 'ar_user_text' ), $fname );
- out( "done.\n" );
- # Update recent changes if required
- if( $rc ) {
- out( "Updating recent changes..." );
- $res = $dbw->update( 'recentchanges', userSpecification( $to, 'rc_user', 'rc_user_text' ), userConditions( $from, 'rc_user', 'rc_user_text' ), $fname );
- out( "done.\n" );
- }
- }
- }
-
- $dbw->immediateCommit();
- return (int)$total;
-}
-
-/**
- * Return the most efficient set of user conditions
- * i.e. a user => id mapping, or a user_text => text mapping
- *
- * @param $user User for the condition
- * @param $idfield Field name containing the identifier
- * @param $utfield Field name containing the user text
- * @return array
- */
-function userConditions( &$user, $idfield, $utfield ) {
- return $user->getId() ? array( $idfield => $user->getId() ) : array( $utfield => $user->getName() );
-}
-
-/**
- * Return user specifications
- * i.e. user => id, user_text => text
- *
- * @param $user User for the spec
- * @param $idfield Field name containing the identifier
- * @param $utfield Field name containing the user text
- * @return array
- */
-function userSpecification( &$user, $idfield, $utfield ) {
- return array( $idfield => $user->getId(), $utfield => $user->getName() );
-}
-
-/**
- * Echo output if $wgSilent is off
- *
- * @param $output Output to echo
- * @return bool True if the output was echoed
- */
-function out( $output ) {
- global $wgSilent;
- if( !$wgSilent ) {
- echo( $output );
- return true;
- } else {
- return false;
- }
-}
-
-/**
- * Mutator for $wgSilent
- *
- * @param $silent Switch on $wgSilent
- */
-function silent( $silent = true ) {
- global $wgSilent;
- $wgSilent = $silent;
-}
-
-/**
- * Initialise the user object
- *
- * @param $username Username or IP address
- * @return User
- */
-function initialiseUser( $username ) {
- if( User::isIP( $username ) ) {
- $user = new User();
- $user->setId( 0 );
- $user->setName( $username );
- } else {
- $user = User::newFromName( $username );
- }
- $user->load();
- return $user;
-}
-
diff --git a/maintenance/reassignEdits.php b/maintenance/reassignEdits.php
index 0d640202..e595e5b3 100644
--- a/maintenance/reassignEdits.php
+++ b/maintenance/reassignEdits.php
@@ -1,56 +1,169 @@
<?php
-
/**
* Reassign edits from a user or IP address to another user
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
* @licence GNU General Public Licence 2.0 or later
*/
-$options = array( 'force', 'norc', 'quiet', 'report' );
-require_once( 'commandLine.inc' );
-require_once( 'reassignEdits.inc.php' );
-
-# Set silent mode; --report overrides --quiet
-if( !@$options['report'] && @$options['quiet'] )
- setSilent();
-
-out( "Reassign Edits\n\n" );
-
-if( @$args[0] && @$args[1] ) {
-
- # Set up the users involved
- $from =& initialiseUser( $args[0] );
- $to =& initialiseUser( $args[1] );
-
- # If the target doesn't exist, and --force is not set, stop here
- if( $to->getId() || @$options['force'] ) {
- # Reassign the edits
- $report = @$options['report'];
- $count = reassignEdits( $from, $to, !@$options['norc'], $report );
- # If reporting, and there were items, advise the user to run without --report
- if( $report )
- out( "Run the script again without --report to update.\n" );
- } else {
- $ton = $to->getName();
- echo( "User '{$ton}' not found.\n" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class ReassignEdits extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Reassign edits from one user to another";
+ $this->addOption( "force", "Reassign even if the target user doesn't exist" );
+ $this->addOption( "norc", "Don't update the recent changes table" );
+ $this->addOption( "report", "Print out details of what would be changed, but don't update it" );
+ $this->addArg( 'from', 'Old user to take edits from' );
+ $this->addArg( 'to', 'New user to give edits to' );
}
-} else {
- ShowUsage();
-}
+ public function execute() {
+ if( $this->hasArg(0) && $this->hasArg(1) ) {
+ # Set up the users involved
+ $from = $this->initialiseUser( $this->getArg(0) );
+ $to = $this->initialiseUser( $this->getArg(1) );
+
+ # If the target doesn't exist, and --force is not set, stop here
+ if( $to->getId() || $this->hasOption('force') ) {
+ # Reassign the edits
+ $report = $this->hasOption('report');
+ $count = $this->doReassignEdits( $from, $to, !$this->hasOption('norc'), $report );
+ # If reporting, and there were items, advise the user to run without --report
+ if( $report )
+ $this->output( "Run the script again without --report to update.\n" );
+ } else {
+ $ton = $to->getName();
+ $this->error( "User '{$ton}' not found." );
+ }
+ }
+ }
+
+ /**
+ * Reassign edits from one user to another
+ *
+ * @param $from User to take edits from
+ * @param $to User to assign edits to
+ * @param $rc Update the recent changes table
+ * @param $report Don't change things; just echo numbers
+ * @return integer Number of entries changed, or that would be changed
+ */
+ private function doReassignEdits( &$from, &$to, $rc = false, $report = false ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
+ # Count things
+ $this->output( "Checking current edits..." );
+ $res = $dbw->select( 'revision', 'COUNT(*) AS count', $this->userConditions( $from, 'rev_user', 'rev_user_text' ), __METHOD__ );
+ $row = $dbw->fetchObject( $res );
+ $cur = $row->count;
+ $this->output( "found {$cur}.\n" );
+
+ $this->output( "Checking deleted edits..." );
+ $res = $dbw->select( 'archive', 'COUNT(*) AS count', $this->userConditions( $from, 'ar_user', 'ar_user_text' ), __METHOD__ );
+ $row = $dbw->fetchObject( $res );
+ $del = $row->count;
+ $this->output( "found {$del}.\n" );
+
+ # Don't count recent changes if we're not supposed to
+ if( $rc ) {
+ $this->output( "Checking recent changes..." );
+ $res = $dbw->select( 'recentchanges', 'COUNT(*) AS count', $this->userConditions( $from, 'rc_user', 'rc_user_text' ), __METHOD__ );
+ $row = $dbw->fetchObject( $res );
+ $rec = $row->count;
+ $this->output( "found {$rec}.\n" );
+ } else {
+ $rec = 0;
+ }
+
+ $total = $cur + $del + $rec;
+ $this->output( "\nTotal entries to change: {$total}\n" );
+
+ if( !$report ) {
+ if( $total ) {
+ # Reassign edits
+ $this->output( "\nReassigning current edits..." );
+ $res = $dbw->update( 'revision', $this->userSpecification( $to, 'rev_user', 'rev_user_text' ), $this->userConditions( $from, 'rev_user', 'rev_user_text' ), __METHOD__ );
+ $this->output( "done.\nReassigning deleted edits..." );
+ $res = $dbw->update( 'archive', $this->userSpecification( $to, 'ar_user', 'ar_user_text' ), $this->userConditions( $from, 'ar_user', 'ar_user_text' ), __METHOD__ );
+ $this->output( "done.\n" );
+ # Update recent changes if required
+ if( $rc ) {
+ $this->output( "Updating recent changes..." );
+ $res = $dbw->update( 'recentchanges', $this->userSpecification( $to, 'rc_user', 'rc_user_text' ), $this->userConditions( $from, 'rc_user', 'rc_user_text' ), __METHOD__ );
+ $this->output( "done.\n" );
+ }
+ }
+ }
+
+ $dbw->commit();
+ return (int)$total;
+ }
+
+ /**
+ * Return the most efficient set of user conditions
+ * i.e. a user => id mapping, or a user_text => text mapping
+ *
+ * @param $user User for the condition
+ * @param $idfield Field name containing the identifier
+ * @param $utfield Field name containing the user text
+ * @return array
+ */
+ private function userConditions( &$user, $idfield, $utfield ) {
+ return $user->getId() ? array( $idfield => $user->getId() ) : array( $utfield => $user->getName() );
+ }
+
+ /**
+ * Return user specifications
+ * i.e. user => id, user_text => text
+ *
+ * @param $user User for the spec
+ * @param $idfield Field name containing the identifier
+ * @param $utfield Field name containing the user text
+ * @return array
+ */
+ private function userSpecification( &$user, $idfield, $utfield ) {
+ return array( $idfield => $user->getId(), $utfield => $user->getName() );
+ }
+
+ /**
+ * Initialise the user object
+ *
+ * @param $username Username or IP address
+ * @return User
+ */
+ private function initialiseUser( $username ) {
+ if( User::isIP( $username ) ) {
+ $user = new User();
+ $user->setId( 0 );
+ $user->setName( $username );
+ } else {
+ $user = User::newFromName( $username );
+ }
+ $user->load();
+ return $user;
+ }
+
-/** Show script usage information */
-function ShowUsage() {
- echo( "Reassign edits from one user to another.\n\n" );
- echo( "Usage: php reassignEdits.php [--force|--quiet|--norc|--report] <from> <to>\n\n" );
- echo( " <from> : Name of the user to assign edits from\n" );
- echo( " <to> : Name of the user to assign edits to\n" );
- echo( " --force : Reassign even if the target user doesn't exist\n" );
- echo( " --quiet : Don't print status information (except for errors)\n" );
- echo( " --norc : Don't update the recent changes table\n" );
- echo( " --report : Print out details of what would be changed, but don't update it\n\n" );
}
+$maintClass = "ReassignEdits";
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/rebuildFileCache.php b/maintenance/rebuildFileCache.php
index 8c01b90f..2a4e4884 100644
--- a/maintenance/rebuildFileCache.php
+++ b/maintenance/rebuildFileCache.php
@@ -2,91 +2,124 @@
/**
* Build file cache for content pages
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-/** */
-require_once( "commandLine.inc" );
-if( !$wgUseFileCache ) {
- echo "Nothing to do -- \$wgUseFileCache is disabled.\n";
- exit(0);
-}
-$wgDisableCounters = false; // no real hits here
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$start = isset($args[0]) ? intval($args[0]) : 0;
-$overwrite = isset( $args[1] ) && $args[1] === 'overwrite';
-echo "Building content page file cache from page {$start}!\n";
-echo "Format: <start> [overwrite]\n";
+class RebuildFileCache extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Build file cache for content pages";
+ $this->addArg( 'start', 'Page_id to start from', true );
+ $this->addArg( 'overwrite', 'Refresh page cache', false );
+ $this->setBatchSize( 100 );
+ }
-$dbr = wfGetDB( DB_SLAVE );
-$start = $start > 0 ? $start : $dbr->selectField( 'page', 'MIN(page_id)', false, __FUNCTION__ );
-$end = $dbr->selectField( 'page', 'MAX(page_id)', false, __FUNCTION__ );
-if( !$start ) {
- die("Nothing to do.\n");
-}
+ public function execute() {
+ global $wgUseFileCache, $wgDisableCounters, $wgContentNamespaces;
+ global $wgTitle, $wgArticle, $wgOut, $wgUser;
+ if( !$wgUseFileCache ) {
+ $this->error( "Nothing to do -- \$wgUseFileCache is disabled.", true );
+ }
+ $wgDisableCounters = false;
+ $start = $this->getArg( 0, "0" );
+ if( !ctype_digit($start) ) {
+ $this->error( "Invalid value for start parameter.", true );
+ }
+ $start = intval($start);
+ $overwrite = $this->hasArg(1) && $this->getArg(1) === 'overwrite';
+ $this->output( "Building content page file cache from page {$start}!\n" );
-$_SERVER['HTTP_ACCEPT_ENCODING'] = 'bgzip'; // hack, no real client
-OutputPage::setEncodings(); # Not really used yet
+ $dbr = wfGetDB( DB_SLAVE );
+ $start = $start > 0 ? $start : $dbr->selectField( 'page', 'MIN(page_id)', false, __FUNCTION__ );
+ $end = $dbr->selectField( 'page', 'MAX(page_id)', false, __FUNCTION__ );
+ if( !$start ) {
+ $this->error( "Nothing to do.", true );
+ }
-$BATCH_SIZE = 100;
-# Do remaining chunk
-$end += $BATCH_SIZE - 1;
-$blockStart = $start;
-$blockEnd = $start + $BATCH_SIZE - 1;
+ $_SERVER['HTTP_ACCEPT_ENCODING'] = 'bgzip'; // hack, no real client
+ OutputPage::setEncodings(); # Not really used yet
-$dbw = wfGetDB( DB_MASTER );
-// Go through each page and save the output
-while( $blockEnd <= $end ) {
- // Get the pages
- $res = $dbr->select( 'page', array('page_namespace','page_title','page_id'),
- array('page_namespace' => $wgContentNamespaces,
- "page_id BETWEEN $blockStart AND $blockEnd" ),
- array('ORDER BY' => 'page_id ASC','USE INDEX' => 'PRIMARY')
- );
- while( $row = $dbr->fetchObject( $res ) ) {
- $rebuilt = false;
- $wgTitle = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
- if( null == $wgTitle ) {
- echo "Page {$row->page_id} bad title\n";
- continue; // broken title?
- }
- $wgArticle = new Article( $wgTitle );
- // If the article is cacheable, then load it
- if( $wgArticle->isFileCacheable() ) {
- $cache = new HTMLFileCache( $wgTitle );
- if( $cache->isFileCacheGood() ) {
- if( $overwrite ) {
- $rebuilt = true;
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+
+ $dbw = wfGetDB( DB_MASTER );
+ // Go through each page and save the output
+ while( $blockEnd <= $end ) {
+ // Get the pages
+ $res = $dbr->select( 'page', array('page_namespace','page_title','page_id'),
+ array('page_namespace' => $wgContentNamespaces,
+ "page_id BETWEEN $blockStart AND $blockEnd" ),
+ array('ORDER BY' => 'page_id ASC','USE INDEX' => 'PRIMARY')
+ );
+ foreach( $res as $row ) {
+ $rebuilt = false;
+ $wgTitle = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
+ if( null == $wgTitle ) {
+ $this->output( "Page {$row->page_id} has bad title\n" );
+ continue; // broken title?
+ }
+ $wgOut->setTitle( $wgTitle ); // set display title
+ $wgUser->getSkin( $wgTitle ); // set skin title
+ $wgArticle = new Article( $wgTitle );
+ // If the article is cacheable, then load it
+ if( $wgArticle->isFileCacheable() ) {
+ $cache = new HTMLFileCache( $wgTitle );
+ if( $cache->isFileCacheGood() ) {
+ if( $overwrite ) {
+ $rebuilt = true;
+ } else {
+ $this->output( "Page {$row->page_id} already cached\n" );
+ continue; // done already!
+ }
+ }
+ ob_start( array(&$cache, 'saveToFileCache' ) ); // save on ob_end_clean()
+ $wgUseFileCache = false; // hack, we don't want $wgArticle fiddling with filecache
+ $wgArticle->view();
+ @$wgOut->output(); // header notices
+ $wgUseFileCache = true;
+ ob_end_clean(); // clear buffer
+ $wgOut = new OutputPage(); // empty out any output page garbage
+ if( $rebuilt )
+ $this->output( "Re-cached page {$row->page_id}\n" );
+ else
+ $this->output( "Cached page {$row->page_id}\n" );
} else {
- echo "Page {$row->page_id} already cached\n";
- continue; // done already!
+ $this->output( "Page {$row->page_id} not cacheable\n" );
}
+ $dbw->commit(); // commit any changes
}
- ob_start( array(&$cache, 'saveToFileCache' ) ); // save on ob_end_clean()
- $wgUseFileCache = false; // hack, we don't want $wgArticle fiddling with filecache
- $wgArticle->view();
- @$wgOut->output(); // header notices
- $wgUseFileCache = true;
- ob_end_clean(); // clear buffer
- $wgOut = new OutputPage(); // empty out any output page garbage
- if( $rebuilt )
- echo "Re-cached page {$row->page_id}\n";
- else
- echo "Cached page {$row->page_id}\n";
- } else {
- echo "Page {$row->page_id} not cacheable\n";
+ $blockStart += $this->mBatchSize;
+ $blockEnd += $this->mBatchSize;
+ wfWaitForSlaves( 5 );
}
- $dbw->commit(); // commit any changes
+ $this->output( "Done!\n" );
+
+ // Remove these to be safe
+ if( isset($wgTitle) )
+ unset($wgTitle);
+ if( isset($wgArticle) )
+ unset($wgArticle);
}
- $blockStart += $BATCH_SIZE;
- $blockEnd += $BATCH_SIZE;
- wfWaitForSlaves( 5 );
}
-echo "Done!\n";
-// Remove these to be safe
-if( isset($wgTitle) )
- unset($wgTitle);
-if( isset($wgArticle) )
- unset($wgArticle);
+$maintClass = "RebuildFileCache";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rebuildImages.php b/maintenance/rebuildImages.php
index 46b5d0ed..0d3bdb3f 100644
--- a/maintenance/rebuildImages.php
+++ b/maintenance/rebuildImages.php
@@ -32,7 +32,7 @@
$options = array( 'missing', 'dry-run' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
require_once( 'FiveUpgrade.inc' );
class ImageBuilder extends FiveUpgrade {
@@ -104,7 +104,7 @@ class ImageBuilder extends FiveUpgrade {
$result = $this->dbr->query( $sql, $fname );
while( $row = $this->dbr->fetchObject( $result ) ) {
- $update = call_user_func( $callback, $row );
+ $update = call_user_func( $callback, $row, null );
if( $update ) {
$this->progress( 1 );
} else {
@@ -120,7 +120,7 @@ class ImageBuilder extends FiveUpgrade {
$this->buildTable( 'image', 'img_name', $callback );
}
- function imageCallback( $row ) {
+ function imageCallback( $row, $copy ) {
// Create a File object from the row
// This will also upgrade it
$file = $this->getRepo()->newFileFromRow( $row );
@@ -132,7 +132,7 @@ class ImageBuilder extends FiveUpgrade {
array( &$this, 'oldimageCallback' ) );
}
- function oldimageCallback( $row ) {
+ function oldimageCallback( $row, $copy ) {
// Create a File object from the row
// This will also upgrade it
if ( $row->oi_archive_name == '' ) {
diff --git a/maintenance/rebuildInterwiki.inc b/maintenance/rebuildInterwiki.inc
index 923c25a9..93261f86 100644
--- a/maintenance/rebuildInterwiki.inc
+++ b/maintenance/rebuildInterwiki.inc
@@ -6,6 +6,7 @@
* @file
* @todo document
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
/**
diff --git a/maintenance/rebuildInterwiki.php b/maintenance/rebuildInterwiki.php
index 8a25ce3c..d3f3a4d2 100644
--- a/maintenance/rebuildInterwiki.php
+++ b/maintenance/rebuildInterwiki.php
@@ -6,13 +6,14 @@
* @file
* @todo document
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
/** */
$oldCwd = getcwd();
$optionsWithArgs = array( "d" );
-require( "commandLine.inc" );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
require( "rebuildInterwiki.inc" );
chdir( $oldCwd );
diff --git a/maintenance/rebuildLocalisationCache.php b/maintenance/rebuildLocalisationCache.php
new file mode 100644
index 00000000..1c517415
--- /dev/null
+++ b/maintenance/rebuildLocalisationCache.php
@@ -0,0 +1,133 @@
+<?php
+
+/**
+ * Rebuild the localisation cache. Useful if you disabled automatic updates
+ * using $wgLocalisationCacheConf['manualRecache'] = true;
+ *
+ * Usage:
+ * php rebuildLocalisationCache.php [--force] [--threads=N]
+ *
+ * Use --force to rebuild all files, even the ones that are not out of date.
+ * Use --threads=N to fork more threads.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class RebuildLocalisationCache extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rebuild the localisation cache";
+ $this->addOption( 'force', 'Rebuild all files, even ones not out of date' );
+ $this->addOption( 'threads', 'Fork more than one thread', false, true );
+ }
+
+ public function memoryLimit() {
+ return '200M';
+ }
+
+ public function execute() {
+ global $wgLocalisationCacheConf;
+
+ $force = $this->hasOption('force');
+ $threads = $this->getOption( 'threads', 1 );
+ if( $threads < 1 || $threads != intval( $threads ) ) {
+ $this->output( "Invalid thread count specified; running single-threaded.\n" );
+ $threads = 1;
+ }
+ if( $threads > 1 && wfIsWindows() ) {
+ $this->output( "Threaded rebuild is not supported on Windows; running single-threaded.\n" );
+ $threads = 1;
+ }
+ if( $threads > 1 && !function_exists( 'pcntl_fork' ) ) {
+ $this->output( "PHP pcntl extension is not present; running single-threaded.\n" );
+ $threads = 1;
+ }
+
+ $conf = $wgLocalisationCacheConf;
+ $conf['manualRecache'] = false; // Allow fallbacks to create CDB files
+ if ( $force ) {
+ $conf['forceRecache'] = true;
+ }
+ $lc = new LocalisationCache_BulkLoad( $conf );
+
+ $codes = array_keys( Language::getLanguageNames( true ) );
+ sort( $codes );
+
+ // Initialise and split into chunks
+ $numRebuilt = 0;
+ $total = count($codes);
+ $chunks = array_chunk( $codes, ceil(count($codes)/$threads) );
+ $pids = array();
+ foreach ( $chunks as $codes ) {
+ // Do not fork for only one thread
+ $pid = ( $threads > 1 ) ? pcntl_fork() : -1;
+
+ if ( $pid === 0 ) {
+ // Child, reseed because there is no bug in PHP:
+ // http://bugs.php.net/bug.php?id=42465
+ mt_srand(getmypid());
+ $numRebuilt = $this->doRebuild( $codes, $lc, $force );
+ // Abuse the exit value for the count of rebuild languages
+ exit($numRebuilt);
+ } elseif ($pid === -1) {
+ // Fork failed or one thread, do it serialized
+ $numRebuilt += $this->doRebuild( $codes, $lc, $force );
+ } else {
+ // Main thread
+ $pids[] = $pid;
+ }
+ }
+ // Wait for all children
+ foreach ( $pids as $pid ) {
+ $status = 0;
+ pcntl_waitpid($pid, $status);
+ // Fetch the count from the return value
+ $numRebuilt += pcntl_wexitstatus($status);
+ }
+
+ $this->output( "$numRebuilt languages rebuilt out of $total\n" );
+ if ( $numRebuilt === 0 ) {
+ $this->output( "Use --force to rebuild the caches which are still fresh.\n" );
+ }
+ }
+
+ /**
+ * Helper function to rebuild list of languages codes. Prints the code
+ * for each language which is rebuilt.
+ * @param $codes list List of language codes to rebuild.
+ * @param $lc object Instance of LocalisationCache_BulkLoad (?)
+ * @param $force bool Rebuild up-to-date languages
+ * @return int Number of rebuilt languages
+ */
+ private function doRebuild( $codes, $lc, $force ) {
+ $numRebuilt = 0;
+ foreach ( $codes as $code ) {
+ if ( $force || $lc->isExpired( $code ) ) {
+ $this->output( "Rebuilding $code...\n" );
+ $lc->recache( $code );
+ $numRebuilt++;
+ }
+ }
+ return $numRebuilt;
+ }
+}
+
+$maintClass = "RebuildLocalisationCache";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rebuildall.php b/maintenance/rebuildall.php
index ca7e4c06..a2c1be93 100644
--- a/maintenance/rebuildall.php
+++ b/maintenance/rebuildall.php
@@ -3,40 +3,54 @@
* Rebuild link tracking tables from scratch. This takes several
* hours, depending on the database size and server configuration.
*
- * @file
- * @todo document
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-/** */
-require_once( "commandLine.inc" );
-
-#require_once( "rebuildlinks.inc" );
-require_once( "refreshLinks.inc" );
-require_once( "rebuildtextindex.inc" );
-require_once( "rebuildrecentchanges.inc" );
-
-$dbclass = 'Database' . ucfirst( $wgDBtype ) ;
-$database = new $dbclass( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
-
-if ($wgDBtype == 'mysql') {
- print "** Rebuilding fulltext search index (if you abort this will break searching; run this script again to fix):\n";
- dropTextIndex( $database );
- rebuildTextIndex( $database );
- createTextIndex( $database );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class RebuildAll extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rebuild links, text index and recent changes";
+ }
+
+ public function execute() {
+ global $wgDBtype;
+ // Rebuild the text index
+ if ( $wgDBtype != 'postgres' ) {
+ $this->output( "** Rebuilding fulltext search index (if you abort this will break searching; run this script again to fix):\n" );
+ $rebuildText = $this->runChild( 'RebuildTextIndex', 'rebuildtextindex.php' );
+ $rebuildText->execute();
+ }
+
+ // Rebuild RC
+ $this->output( "\n\n** Rebuilding recentchanges table:\n" );
+ $rebuildRC = $this->runChild( 'RebuildRecentchanges', 'rebuildrecentchanges.php' );
+ $rebuildRC->execute();
+
+ // Rebuild link tables
+ $this->output( "\n\n** Rebuilding links tables -- this can take a long time. It should be safe to abort via ctrl+C if you get bored.\n" );
+ $rebuildLinks = $this->runChild( 'RefreshLinks', 'refreshLinks.php' );
+ $rebuildLinks->execute();
+
+ $this->output( "Done.\n" );
+ }
}
-print "\n\n** Rebuilding recentchanges table:\n";
-rebuildRecentChangesTable();
-
-# Doesn't work anymore
-# rebuildLinkTables();
-
-# Use the slow incomplete one instead. It's designed to work in the background
-print "\n\n** Rebuilding links tables -- this can take a long time. It should be safe to abort via ctrl+C if you get bored.\n";
-refreshLinks( 1 );
-
-print "Done.\n";
-exit();
-
-
+$maintClass = "RebuildAll";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rebuildmessages.php b/maintenance/rebuildmessages.php
index b0adc875..546d5214 100644
--- a/maintenance/rebuildmessages.php
+++ b/maintenance/rebuildmessages.php
@@ -1,22 +1,50 @@
<?php
/**
- * This script purges all language messages from memcached
- * @file
+ * This script purges all language messages from the cache
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( $wgLocalDatabases ) {
- $databases = $wgLocalDatabases;
-} else {
- $databases = array( $wgDBname );
-}
+class RebuildMessages extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Purge all language messages from the cache";
+ }
-foreach( $databases as $db ) {
- echo "Deleting message cache for {$db}... ";
- $messageMemc->delete( "{$db}:messages" );
- if( $wgEnableSidebarCache )
- $messageMemc->delete( "{$db}:sidebar" );
- echo "Deleted\n";
+ public function execute() {
+ global $wgLocalDatabases, $wgDBname, $wgEnableSidebarCache, $messageMemc;
+ if( $wgLocalDatabases ) {
+ $databases = $wgLocalDatabases;
+ } else {
+ $databases = array( $wgDBname );
+ }
+
+ foreach( $databases as $db ) {
+ $this->output( "Deleting message cache for {$db}... " );
+ $messageMemc->delete( "{$db}:messages" );
+ if( $wgEnableSidebarCache )
+ $messageMemc->delete( "{$db}:sidebar" );
+ $this->output( "Deleted\n" );
+ }
+ }
}
+
+$maintClass = "RebuildMessages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rebuildrecentchanges.inc b/maintenance/rebuildrecentchanges.inc
deleted file mode 100644
index f846d2b7..00000000
--- a/maintenance/rebuildrecentchanges.inc
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * Rebuild recent changes table.
- *
- * @file
- * @todo document
- * @ingroup Maintenance
- */
-
-/** Public entry; more passes might come in! :) */
-function rebuildRecentChangesTable() {
- rebuildRecentChangesTablePass1();
- rebuildRecentChangesTablePass2();
- rebuildRecentChangesTablePass3();
- rebuildRecentChangesTablePass4();
-}
-
-/** */
-function rebuildRecentChangesTablePass1()
-{
- $dbw = wfGetDB( DB_MASTER );
-
- $dbw->delete( 'recentchanges', '*' );
-
- print( "Loading from page and revision tables...\n" );
-
- global $wgRCMaxAge;
-
- print( '$wgRCMaxAge=' . $wgRCMaxAge );
- $days = $wgRCMaxAge / 24 / 3600;
- if ( intval($days) == $days ) {
- print( " (" . $days . " days)\n" );
- } else {
- print( " (approx. " . intval($days) . " days)\n" );
- }
-
- $cutoff = time() - $wgRCMaxAge;
- $dbw->insertSelect( 'recentchanges', array( 'page', 'revision' ),
- array(
- 'rc_timestamp' => 'rev_timestamp',
- 'rc_cur_time' => 'rev_timestamp',
- 'rc_user' => 'rev_user',
- 'rc_user_text' => 'rev_user_text',
- 'rc_namespace' => 'page_namespace',
- 'rc_title' => 'page_title',
- 'rc_comment' => 'rev_comment',
- 'rc_minor' => 'rev_minor_edit',
- 'rc_bot' => 0,
- 'rc_new' => 'page_is_new',
- 'rc_cur_id' => 'page_id',
- 'rc_this_oldid' => 'rev_id',
- 'rc_last_oldid' => 0, // is this ok?
- 'rc_type' => $dbw->conditional( 'page_is_new != 0', RC_NEW, RC_EDIT ),
- 'rc_deleted' => 'rev_deleted'
- ), array(
- 'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
- 'rev_page=page_id'
- ), __METHOD__,
- array(), // INSERT options
- array( 'ORDER BY' => 'rev_timestamp DESC', 'LIMIT' => 5000 ) // SELECT options
- );
-}
-
-function rebuildRecentChangesTablePass2()
-{
- $dbw = wfGetDB( DB_MASTER );
- list ($recentchanges, $revision) = $dbw->tableNamesN( 'recentchanges', 'revision' );
-
- print( "Updating links and size differences...\n" );
-
- # Fill in the rc_last_oldid field, which points to the previous edit
- $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
- "ORDER BY rc_cur_id,rc_timestamp";
- $res = $dbw->query( $sql, DB_MASTER );
-
- $lastCurId = 0;
- $lastOldId = 0;
- while ( $obj = $dbw->fetchObject( $res ) ) {
- $new = 0;
- if( $obj->rc_cur_id != $lastCurId ) {
- # Switch! Look up the previous last edit, if any
- $lastCurId = intval( $obj->rc_cur_id );
- $emit = $obj->rc_timestamp;
- $sql2 = "SELECT rev_id,rev_len FROM $revision " .
- "WHERE rev_page={$lastCurId} ".
- "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC LIMIT 1";
- $res2 = $dbw->query( $sql2 );
- if( $row = $dbw->fetchObject( $res2 ) ) {
- $lastOldId = intval($row->rev_id);
- # Grab the last text size if available
- $lastSize = !is_null($row->rev_len) ? intval($row->rev_len) : 'NULL';
- } else {
- # No previous edit
- $lastOldId = 0;
- $lastSize = 'NULL';
- $new = 1; // probably true
- }
- $dbw->freeResult( $res2 );
- }
- if( $lastCurId == 0 ) {
- print "Uhhh, something wrong? No curid\n";
- } else {
- # Grab the entry's text size
- $size = $dbw->selectField( 'revision', 'rev_len', array('rev_id' => $obj->rc_this_oldid ) );
- $size = !is_null($size) ? intval($size) : 'NULL';
-
- $sql3 = "UPDATE $recentchanges SET rc_last_oldid=$lastOldId,rc_new=$new,rc_type=$new," .
- "rc_old_len=$lastSize,rc_new_len=$size " .
- "WHERE rc_cur_id={$lastCurId} AND rc_this_oldid={$obj->rc_this_oldid}";
- $dbw->query( $sql3 );
-
- $lastOldId = intval( $obj->rc_this_oldid );
- }
- }
- $dbw->freeResult( $res );
-}
-
-function rebuildRecentChangesTablePass3()
-{
- $dbw = wfGetDB( DB_MASTER );
-
- print( "Loading from user, page, and logging tables...\n" );
-
- global $wgRCMaxAge;
- // Some logs don't go in RC. This can't really detect all of those.
- // At least do the basics logs for a standard install...
- // FIXME: this needs to be maintained
- $basicRCLogs = array(
- 'block',
- 'protect',
- 'rights',
- 'delete',
- 'upload',
- 'move',
- 'import',
- 'merge' );
- // Escape...blah blah
- $selectLogs = array();
- foreach( $basicRCLogs as $logtype ) {
- $safetype = $dbw->strencode( $logtype );
- $selectLogs[] = "'$safetype'";
- }
-
- $cutoff = time() - $wgRCMaxAge;
- $dbw->insertSelect( 'recentchanges', array( 'logging', 'page', 'user' ),
- array(
- 'rc_timestamp' => 'log_timestamp',
- 'rc_cur_time' => 'log_timestamp',
- 'rc_user' => 'log_user',
- 'rc_user_text' => 'user_name',
- 'rc_namespace' => 'log_namespace',
- 'rc_title' => 'log_title',
- 'rc_comment' => 'log_comment',
- 'rc_minor' => 0,
- 'rc_bot' => 0,
- 'rc_patrolled' => 1,
- 'rc_new' => 0,
- 'rc_this_oldid' => 0,
- 'rc_last_oldid' => 0,
- 'rc_type' => RC_LOG,
- 'rc_cur_id' => 'page_id',
- 'rc_log_type' => 'log_type',
- 'rc_log_action' => 'log_action',
- 'rc_logid' => 'log_id',
- 'rc_params' => 'log_params',
- 'rc_deleted' => 'log_deleted'
- ), array(
- 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
- 'log_user=user_id',
- 'log_namespace=page_namespace',
- 'log_title=page_title',
- 'log_type IN(' . implode(',',$selectLogs) . ')'
- ), __METHOD__,
- array(), // INSERT options
- array( 'ORDER BY' => 'log_timestamp DESC', 'LIMIT' => 5000 ) // SELECT options
- );
-}
-
-function rebuildRecentChangesTablePass4()
-{
- global $wgGroupPermissions, $wgUseRCPatrol;
-
- $dbw = wfGetDB( DB_MASTER );
-
- list($recentchanges,$usergroups,$user) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
-
- $botgroups = $autopatrolgroups = array();
- foreach( $wgGroupPermissions as $group => $rights ) {
- if( isset( $rights['bot'] ) && $rights['bot'] == true ) {
- $botgroups[] = $dbw->addQuotes( $group );
- }
- if( $wgUseRCPatrol && isset( $rights['autopatrol'] ) && $rights['autopatrol'] == true ) {
- $autopatrolgroups[] = $dbw->addQuotes( $group );
- }
- }
- # Flag our recent bot edits
- if( !empty($botgroups) ) {
- $botwhere = implode(',',$botgroups);
- $botusers = array();
-
- print( "Flagging bot account edits...\n" );
-
- # Find all users that are bots
- $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
- "WHERE ug_group IN($botwhere) AND user_id = ug_user";
- $res = $dbw->query( $sql, DB_MASTER );
-
- while( $obj = $dbw->fetchObject( $res ) ) {
- $botusers[] = $dbw->addQuotes( $obj->user_name );
- }
- # Fill in the rc_bot field
- if( !empty($botusers) ) {
- $botwhere = implode(',',$botusers);
- $sql2 = "UPDATE $recentchanges SET rc_bot=1 " .
- "WHERE rc_user_text IN($botwhere)";
- $dbw->query( $sql2 );
- }
- }
- global $wgMiserMode;
- # Flag our recent autopatrolled edits
- if( !$wgMiserMode && !empty($autopatrolgroups) ) {
- $patrolwhere = implode(',',$autopatrolgroups);
- $patrolusers = array();
-
- print( "Flagging auto-patrolled edits...\n" );
-
- # Find all users in RC with autopatrol rights
- $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
- "WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
- $res = $dbw->query( $sql, DB_MASTER );
-
- while( $obj = $dbw->fetchObject( $res ) ) {
- $patrolusers[] = $dbw->addQuotes( $obj->user_name );
- }
-
- # Fill in the rc_patrolled field
- if( !empty($patrolusers) ) {
- $patrolwhere = implode(',',$patrolusers);
- $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " .
- "WHERE rc_user_text IN($patrolwhere)";
- $dbw->query( $sql2 );
- }
- }
-
- $dbw->freeResult( $res );
-}
diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php
index 9311d0fa..6c76dc59 100644
--- a/maintenance/rebuildrecentchanges.php
+++ b/maintenance/rebuildrecentchanges.php
@@ -3,22 +3,292 @@
* Rebuild link tracking tables from scratch. This takes several
* hours, depending on the database size and server configuration.
*
- * @file
- * @todo document
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
+ * @todo Document
*/
-/** */
-require_once( "commandLine.inc" );
-require_once( "rebuildrecentchanges.inc" );
-$wgTitle = Title::newFromText( "Rebuild recent changes script" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class RebuildRecentchanges extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rebuild recent changes";
+ }
+
+ public function execute() {
+ global $wgTitle;
+ $wgTitle = Title::newFromText( "Rebuild recent changes script" );
+ $this->rebuildRecentChangesTablePass1();
+ $this->rebuildRecentChangesTablePass2();
+ $this->rebuildRecentChangesTablePass3();
+ $this->rebuildRecentChangesTablePass4();
+ $this->purgeFeeds();
+ $this->output( "Done.\n" );
+ }
+
+ /**
+ * Rebuild pass 1
+ * DOCUMENT ME!
+ */
+ function rebuildRecentChangesTablePass1()
+ {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->delete( 'recentchanges', '*' );
+
+ $this->output( "Loading from page and revision tables...\n" );
+
+ global $wgRCMaxAge;
+
+ $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
+ $days = $wgRCMaxAge / 24 / 3600;
+ if ( intval($days) == $days ) {
+ $this->output( " (" . $days . " days)\n" );
+ } else {
+ $this->output( " (approx. " . intval($days) . " days)\n" );
+ }
+
+ $cutoff = time() - $wgRCMaxAge;
+ $dbw->insertSelect( 'recentchanges', array( 'page', 'revision' ),
+ array(
+ 'rc_timestamp' => 'rev_timestamp',
+ 'rc_cur_time' => 'rev_timestamp',
+ 'rc_user' => 'rev_user',
+ 'rc_user_text' => 'rev_user_text',
+ 'rc_namespace' => 'page_namespace',
+ 'rc_title' => 'page_title',
+ 'rc_comment' => 'rev_comment',
+ 'rc_minor' => 'rev_minor_edit',
+ 'rc_bot' => 0,
+ 'rc_new' => 'page_is_new',
+ 'rc_cur_id' => 'page_id',
+ 'rc_this_oldid' => 'rev_id',
+ 'rc_last_oldid' => 0, // is this ok?
+ 'rc_type' => $dbw->conditional( 'page_is_new != 0', RC_NEW, RC_EDIT ),
+ 'rc_deleted' => 'rev_deleted'
+ ), array(
+ 'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+ 'rev_page=page_id'
+ ), __METHOD__,
+ array(), // INSERT options
+ array( 'ORDER BY' => 'rev_timestamp DESC', 'LIMIT' => 5000 ) // SELECT options
+ );
+ }
+
+ /**
+ * Rebuild pass 2
+ * DOCUMENT ME!
+ */
+ private function rebuildRecentChangesTablePass2() {
+ $dbw = wfGetDB( DB_MASTER );
+ list ($recentchanges, $revision) = $dbw->tableNamesN( 'recentchanges', 'revision' );
+
+ $this->output( "Updating links and size differences...\n" );
+
+ # Fill in the rc_last_oldid field, which points to the previous edit
+ $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
+ "ORDER BY rc_cur_id,rc_timestamp";
+ $res = $dbw->query( $sql, DB_MASTER );
+
+ $lastCurId = 0;
+ $lastOldId = 0;
+ foreach ( $res as $obj ) {
+ $new = 0;
+ if( $obj->rc_cur_id != $lastCurId ) {
+ # Switch! Look up the previous last edit, if any
+ $lastCurId = intval( $obj->rc_cur_id );
+ $emit = $obj->rc_timestamp;
+ $sql2 = "SELECT rev_id,rev_len FROM $revision " .
+ "WHERE rev_page={$lastCurId} ".
+ "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC";
+ $sql2 = $dbw->limitResult($sql2, 1, false);
+ $res2 = $dbw->query( $sql2 );
+ if( $row = $dbw->fetchObject( $res2 ) ) {
+ $lastOldId = intval($row->rev_id);
+ # Grab the last text size if available
+ $lastSize = !is_null($row->rev_len) ? intval($row->rev_len) : 'NULL';
+ } else {
+ # No previous edit
+ $lastOldId = 0;
+ $lastSize = 'NULL';
+ $new = 1; // probably true
+ }
+ $dbw->freeResult( $res2 );
+ }
+ if( $lastCurId == 0 ) {
+ $this->output( "Uhhh, something wrong? No curid\n" );
+ } else {
+ # Grab the entry's text size
+ $size = $dbw->selectField( 'revision', 'rev_len', array('rev_id' => $obj->rc_this_oldid ) );
+ $size = !is_null($size) ? intval($size) : 'NULL';
+
+ $sql3 = "UPDATE $recentchanges SET rc_last_oldid=$lastOldId,rc_new=$new,rc_type=$new," .
+ "rc_old_len=$lastSize,rc_new_len=$size " .
+ "WHERE rc_cur_id={$lastCurId} AND rc_this_oldid={$obj->rc_this_oldid}";
+ $dbw->query( $sql3 );
+
+ $lastOldId = intval( $obj->rc_this_oldid );
+ $lastSize = $size;
+ }
+ }
+ $dbw->freeResult( $res );
+ }
+
+ /**
+ * Rebuild pass 3
+ * DOCUMENT ME!
+ */
+ private function rebuildRecentChangesTablePass3() {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $this->output( "Loading from user, page, and logging tables...\n" );
+
+ global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
+ // Some logs don't go in RC. This should check for that
+ $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
+
+ // Escape...blah blah
+ $selectLogs = array();
+ foreach( $basicRCLogs as $logtype ) {
+ $safetype = $dbw->strencode( $logtype );
+ $selectLogs[] = "'$safetype'";
+ }
+
+ $cutoff = time() - $wgRCMaxAge;
+ list($logging, $page) = $dbw->tableNamesN( 'logging', 'page' );
+ $dbw->insertSelect( 'recentchanges', array( 'user', "$logging LEFT JOIN $page ON (log_namespace=page_namespace AND log_title=page_title)" ),
+ array(
+ 'rc_timestamp' => 'log_timestamp',
+ 'rc_cur_time' => 'log_timestamp',
+ 'rc_user' => 'log_user',
+ 'rc_user_text' => 'user_name',
+ 'rc_namespace' => 'log_namespace',
+ 'rc_title' => 'log_title',
+ 'rc_comment' => 'log_comment',
+ 'rc_minor' => 0,
+ 'rc_bot' => 0,
+ 'rc_patrolled' => 1,
+ 'rc_new' => 0,
+ 'rc_this_oldid' => 0,
+ 'rc_last_oldid' => 0,
+ 'rc_type' => RC_LOG,
+ 'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
+ 'rc_log_type' => 'log_type',
+ 'rc_log_action' => 'log_action',
+ 'rc_logid' => 'log_id',
+ 'rc_params' => 'log_params',
+ 'rc_deleted' => 'log_deleted'
+ ), array(
+ 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+ 'log_user=user_id',
+ 'log_type IN(' . implode(',',$selectLogs) . ')'
+ ), __METHOD__,
+ array(), // INSERT options
+ array( 'ORDER BY' => 'log_timestamp DESC', 'LIMIT' => 5000 ) // SELECT options
+ );
+ }
+
+ /**
+ * Rebuild pass 4
+ * DOCUMENT ME!
+ */
+ private function rebuildRecentChangesTablePass4() {
+ global $wgGroupPermissions, $wgUseRCPatrol;
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ list($recentchanges,$usergroups,$user) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
+
+ $botgroups = $autopatrolgroups = array();
+ foreach( $wgGroupPermissions as $group => $rights ) {
+ if( isset( $rights['bot'] ) && $rights['bot'] == true ) {
+ $botgroups[] = $dbw->addQuotes( $group );
+ }
+ if( $wgUseRCPatrol && isset( $rights['autopatrol'] ) && $rights['autopatrol'] == true ) {
+ $autopatrolgroups[] = $dbw->addQuotes( $group );
+ }
+ }
+ # Flag our recent bot edits
+ if( !empty($botgroups) ) {
+ $botwhere = implode(',',$botgroups);
+ $botusers = array();
+
+ $this->output( "Flagging bot account edits...\n" );
+
+ # Find all users that are bots
+ $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
+ "WHERE ug_group IN($botwhere) AND user_id = ug_user";
+ $res = $dbw->query( $sql, DB_MASTER );
+
+ foreach( $res as $obj ) {
+ $botusers[] = $dbw->addQuotes( $obj->user_name );
+ }
+ # Fill in the rc_bot field
+ if( !empty($botusers) ) {
+ $botwhere = implode(',',$botusers);
+ $sql2 = "UPDATE $recentchanges SET rc_bot=1 " .
+ "WHERE rc_user_text IN($botwhere)";
+ $dbw->query( $sql2 );
+ }
+ }
+ global $wgMiserMode;
+ # Flag our recent autopatrolled edits
+ if( !$wgMiserMode && !empty($autopatrolgroups) ) {
+ $patrolwhere = implode(',',$autopatrolgroups);
+ $patrolusers = array();
+
+ $this->output( "Flagging auto-patrolled edits...\n" );
+
+ # Find all users in RC with autopatrol rights
+ $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
+ "WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
+ $res = $dbw->query( $sql, DB_MASTER );
+
+ foreach( $res as $obj ) {
+ $patrolusers[] = $dbw->addQuotes( $obj->user_name );
+ }
+
+ # Fill in the rc_patrolled field
+ if( !empty($patrolusers) ) {
+ $patrolwhere = implode(',',$patrolusers);
+ $sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " .
+ "WHERE rc_user_text IN($patrolwhere)";
+ $dbw->query( $sql2 );
+ }
+ }
+
+ $dbw->freeResult( $res );
+ }
-$wgDBuser = $wgDBadminuser;
-$wgDBpassword = $wgDBadminpassword;
+ /**
+ * Purge cached feeds in $messageMemc
+ */
+ private function purgeFeeds() {
+ global $wgFeedClasses, $messageMemc;
-rebuildRecentChangesTable();
+ $this->output( "Deleting feed timestamps.\n" );
-print "Done.\n";
-exit();
+ foreach( $wgFeedClasses as $feed => $className ) {
+ $messageMemc->delete( wfMemcKey( 'rcfeed', $feed, 'timestamp' ) ); # Good enough for now.
+ }
+ }
+}
+$maintClass = "RebuildRecentchanges";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rebuildtextindex.inc b/maintenance/rebuildtextindex.inc
deleted file mode 100644
index 0f58fffa..00000000
--- a/maintenance/rebuildtextindex.inc
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-require_once 'counter.php';
-/**
- * Rebuild the fulltext search indexes. This may take a while
- * depending on the database size and server configuration.
- *
- * Rebuilding is faster if you drop the index and recreate it,
- * but that will prevent searches from working while it runs.
- *
- * @file
- * @todo document
- * @ingroup Maintenance
- */
-
-/** */
-define( "RTI_CHUNK_SIZE", 500 );
-
-function dropTextIndex( &$database )
-{
- $searchindex = $database->tableName( 'searchindex' );
- if ( $database->indexExists( "searchindex", "si_title" ) ) {
- echo "Dropping index...\n";
- $sql = "ALTER TABLE $searchindex DROP INDEX si_title, DROP INDEX si_text";
- $database->query($sql, "dropTextIndex" );
- }
-}
-
-function createTextIndex( &$database )
-{
- $searchindex = $database->tableName( 'searchindex' );
- echo "\nRebuild the index...\n";
- $sql = "ALTER TABLE $searchindex ADD FULLTEXT si_title (si_title), " .
- "ADD FULLTEXT si_text (si_text)";
- $database->query($sql, "createTextIndex" );
-}
-
-function rebuildTextIndex( &$database )
-{
- list ($page, $revision, $text, $searchindex) = $database->tableNamesN( 'page', 'revision', 'text', 'searchindex' );
-
- $sql = "SELECT MAX(page_id) AS count FROM $page";
- $res = $database->query($sql, "rebuildTextIndex" );
- $s = $database->fetchObject($res);
- $count = $s->count;
- echo "Rebuilding index fields for {$count} pages...\n";
- $n = 0;
-
- while ( $n < $count ) {
- print_c( $n - 1, $n);
- $end = $n + RTI_CHUNK_SIZE - 1;
- $sql = "SELECT page_id, page_namespace, page_title, old_flags, old_text
- FROM $page, $revision, $text
- WHERE page_id BETWEEN $n AND $end
- AND page_latest=rev_id
- AND rev_text_id=old_id";
- $res = $database->query($sql, "rebuildTextIndex" );
-
- while( $s = $database->fetchObject($res) ) {
- $revtext = Revision::getRevisionText( $s );
- $u = new SearchUpdate( $s->page_id, $s->page_title, $revtext );
- $u->doUpdate();
- }
- $database->freeResult( $res );
- $n += RTI_CHUNK_SIZE;
- }
-}
diff --git a/maintenance/rebuildtextindex.php b/maintenance/rebuildtextindex.php
index 73dca87f..4521c6f5 100644
--- a/maintenance/rebuildtextindex.php
+++ b/maintenance/rebuildtextindex.php
@@ -1,33 +1,129 @@
<?php
/**
- * Rebuild search index table from scratch. This takes several
+ * Rebuild search index table from scratch. This may take several
* hours, depending on the database size and server configuration.
*
- * This is only for MySQL (see bug 9905).
* Postgres is trigger-based and should never need rebuilding.
*
- * @file
- * @todo document
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
+ * @todo document
*/
-/** */
-require_once( "commandLine.inc" );
-require_once( "rebuildtextindex.inc" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$database = wfGetDB( DB_MASTER );
-if( !$database instanceof DatabaseMysql ) {
- print "This script is only for MySQL.\n";
- exit();
-}
+class RebuildTextIndex extends Maintenance {
+ const RTI_CHUNK_SIZE = 500;
+ private $db;
-$wgTitle = Title::newFromText( "Rebuild text index script" );
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rebuild search index table from scratch";
+ }
-dropTextIndex( $database );
-rebuildTextIndex( $database );
-createTextIndex( $database );
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-print "Done.\n";
-exit();
+ public function execute() {
+ global $wgTitle, $wgDBtype;
+ // Shouldn't be needed for Postgres
+ if ( $wgDBtype == 'postgres' ) {
+ $this->error( "This script is not needed when using Postgres.\n", true );
+ }
+
+ $this->db = wfGetDB( DB_MASTER );
+ $wgTitle = Title::newFromText( "Rebuild text index script" );
+
+ if ( $wgDBtype == 'mysql' ) {
+ $this->dropMysqlTextIndex();
+ $this->populateSearchIndex();
+ $this->createMysqlTextIndex();
+ } else {
+ $this->clearSearchIndex();
+ $this->populateSearchIndex();
+ }
+
+ $this->output( "Done.\n" );
+ }
+
+ /**
+ * Populates the search index with content from all pages
+ */
+ protected function populateSearchIndex() {
+ $res = $this->db->select( 'page', 'MAX(page_id) AS count' );
+ $s = $this->db->fetchObject($res);
+ $count = $s->count;
+ $this->output( "Rebuilding index fields for {$count} pages...\n" );
+ $n = 0;
+
+ while ( $n < $count ) {
+ $this->output( $n . "\n" );
+ $end = $n + self::RTI_CHUNK_SIZE - 1;
+
+ $res = $this->db->select( array( 'page', 'revision', 'text' ),
+ array( 'page_id', 'page_namespace', 'page_title', 'old_flags', 'old_text' ),
+ array( "page_id BETWEEN $n AND $end", 'page_latest = rev_id', 'rev_text_id = old_id' ),
+ __METHOD__
+ );
+
+ foreach( $res as $s ) {
+ $revtext = Revision::getRevisionText( $s );
+ $u = new SearchUpdate( $s->page_id, $s->page_title, $revtext );
+ $u->doUpdate();
+ }
+ $this->db->freeResult( $res );
+ $n += self::RTI_CHUNK_SIZE;
+ }
+ }
+
+ /**
+ * (MySQL only) Drops fulltext index before populating the table.
+ */
+ private function dropMysqlTextIndex() {
+ $searchindex = $this->db->tableName( 'searchindex' );
+ if ( $this->db->indexExists( 'searchindex', 'si_title' ) ) {
+ $this->output( "Dropping index...\n" );
+ $sql = "ALTER TABLE $searchindex DROP INDEX si_title, DROP INDEX si_text";
+ $this->db->query($sql, __METHOD__ );
+ }
+ }
+
+ /**
+ * (MySQL only) Adds back fulltext index after populating the table.
+ */
+ private function createMysqlTextIndex() {
+ $searchindex = $this->db->tableName( 'searchindex' );
+ $this->output( "\nRebuild the index...\n" );
+ $sql = "ALTER TABLE $searchindex ADD FULLTEXT si_title (si_title), " .
+ "ADD FULLTEXT si_text (si_text)";
+ $this->db->query( $sql, __METHOD__ );
+ }
+
+ /**
+ * Deletes everything from search index.
+ */
+ private function clearSearchIndex() {
+ $this->output( 'Clearing searchindex table...' );
+ $this->db->delete( 'searchindex', '*', __METHOD__ );
+ $this->output( "Done\n" );
+ }
+}
+$maintClass = "RebuildTextIndex";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/refreshImageCount.php b/maintenance/refreshImageCount.php
index 14f842b9..44794cc7 100644
--- a/maintenance/refreshImageCount.php
+++ b/maintenance/refreshImageCount.php
@@ -3,27 +3,52 @@
* Quickie hack; patch-ss_images.sql uses variables which don't
* replicate properly.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-require_once( "commandLine.inc" );
-
-$dbw = wfGetDB( DB_MASTER );
-
-// Load the current value from the master
-$count = $dbw->selectField( 'site_stats', 'ss_images' );
-
-echo wfWikiID().": forcing ss_images to $count\n";
-
-// First set to NULL so that it changes on the master
-$dbw->update( 'site_stats',
- array( 'ss_images' => null ),
- array( 'ss_row_id' => 1 ) );
-
-// Now this update will be forced to go out
-$dbw->update( 'site_stats',
- array( 'ss_images' => $count ),
- array( 'ss_row_id' => 1 ) );
-
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class RefreshImageCount extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Resets ss_image count, forcing slaves to pick it up.";
+ }
+
+ public function execute() {
+ $dbw = wfGetDB( DB_MASTER );
+
+ // Load the current value from the master
+ $count = $dbw->selectField( 'site_stats', 'ss_images' );
+
+ $this->output( wfWikiID() . ": forcing ss_images to $count\n" );
+
+ // First set to NULL so that it changes on the master
+ $dbw->update( 'site_stats',
+ array( 'ss_images' => null ),
+ array( 'ss_row_id' => 1 ) );
+
+ // Now this update will be forced to go out
+ $dbw->update( 'site_stats',
+ array( 'ss_images' => $count ),
+ array( 'ss_row_id' => 1 ) );
+ }
+}
+
+$maintClass = "RefreshImageCount";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/refreshLinks.inc b/maintenance/refreshLinks.inc
deleted file mode 100644
index b7d531c7..00000000
--- a/maintenance/refreshLinks.inc
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * @todo document
- * @file
- * @ingroup Maintenance
- */
-
-function refreshLinks( $start, $newOnly = false, $maxLag = false, $end = 0, $redirectsOnly = false, $oldRedirectsOnly = false ) {
- global $wgUser, $wgParser, $wgUseTidy;
-
- $reportingInterval = 100;
- $fname = 'refreshLinks';
- $dbr = wfGetDB( DB_SLAVE );
- $start = intval( $start );
-
- # Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway)
- $wgUser->setOption('math', MW_MATH_SOURCE);
-
- # Don't generate extension images (e.g. Timeline)
- if( method_exists( $wgParser, "clearTagHooks" ) ) {
- $wgParser->clearTagHooks();
- }
-
- # Don't use HTML tidy
- $wgUseTidy = false;
-
- $what = $redirectsOnly ? "redirects" : "links";
-
- if( $oldRedirectsOnly ) {
- # This entire code path is cut-and-pasted from below. Hurrah.
- $res = $dbr->query(
- "SELECT page_id ".
- "FROM page ".
- "LEFT JOIN redirect ON page_id=rd_from ".
- "WHERE page_is_redirect=1 AND rd_from IS NULL AND ".
- ($end == 0 ? "page_id >= $start"
- : "page_id BETWEEN $start AND $end"),
- $fname
- );
- $num = $dbr->numRows( $res );
- print "Refreshing $num old redirects from $start...\n";
-
- while( $row = $dbr->fetchObject( $res ) ) {
- if ( !( ++$i % $reportingInterval ) ) {
- print "$i\n";
- wfWaitForSlaves( $maxLag );
- }
- fixRedirect( $row->page_id );
- }
- } elseif( $newOnly ) {
- print "Refreshing $what from ";
- $res = $dbr->select( 'page',
- array( 'page_id' ),
- array(
- 'page_is_new' => 1,
- "page_id >= $start" ),
- $fname
- );
- $num = $dbr->numRows( $res );
- print "$num new articles...\n";
-
- $i = 0;
- while ( $row = $dbr->fetchObject( $res ) ) {
- if ( !( ++$i % $reportingInterval ) ) {
- print "$i\n";
- wfWaitForSlaves( $maxLag );
- }
- if($redirectsOnly)
- fixRedirect( $row->page_id );
- else
- fixLinksFromArticle( $row->page_id );
- }
- } else {
- print "Refreshing $what table.\n";
- if ( !$end ) {
- $end = $dbr->selectField( 'page', 'max(page_id)', false );
- }
- print("Starting from page_id $start of $end.\n");
-
- for ($id = $start; $id <= $end; $id++) {
-
- if ( !($id % $reportingInterval) ) {
- print "$id\n";
- wfWaitForSlaves( $maxLag );
- }
- if($redirectsOnly)
- fixRedirect( $id );
- else
- fixLinksFromArticle( $id );
- }
- }
-}
-
-function fixRedirect( $id ){
- global $wgTitle, $wgArticle;
-
- $wgTitle = Title::newFromID( $id );
- $dbw = wfGetDB( DB_MASTER );
-
- if ( is_null( $wgTitle ) ) {
- return;
- }
- $wgArticle = new Article($wgTitle);
-
- $rt = $wgArticle->followRedirect();
-
- if($rt == false || !is_object($rt))
- return;
-
- $wgArticle->updateRedirectOn($dbw,$rt);
-}
-
-function fixLinksFromArticle( $id ) {
- global $wgTitle, $wgParser;
-
- $wgTitle = Title::newFromID( $id );
- $dbw = wfGetDB( DB_MASTER );
-
- $linkCache =& LinkCache::singleton();
- $linkCache->clear();
-
- if ( is_null( $wgTitle ) ) {
- return;
- }
- $dbw->begin();
-
- $revision = Revision::newFromTitle( $wgTitle );
- if ( !$revision ) {
- return;
- }
-
- $options = new ParserOptions;
- $parserOutput = $wgParser->parse( $revision->getText(), $wgTitle, $options, true, true, $revision->getId() );
- $update = new LinksUpdate( $wgTitle, $parserOutput, false );
- $update->doUpdate();
- $dbw->immediateCommit();
-}
-
-/*
- * Removes non-existing links from pages from pagelinks, imagelinks,
- * categorylinks, templatelinks and externallinks tables.
- *
- * @param $maxLag
- * @param $batchSize The size of deletion batches
- *
- * @author Merlijn van Deen <valhallasw@arctus.nl>
- */
-function deleteLinksFromNonexistent( $maxLag = 0, $batchSize = 100 ) {
- wfWaitForSlaves( $maxLag );
-
- $dbw = wfGetDB( DB_MASTER );
-
- $lb = wfGetLBFactory()->newMainLB();
- $dbr = $lb->getConnection( DB_SLAVE );
- $dbr->bufferResults( false );
-
- $linksTables = array( // table name => page_id field
- 'pagelinks' => 'pl_from',
- 'imagelinks' => 'il_from',
- 'categorylinks' => 'cl_from',
- 'templatelinks' => 'tl_from',
- 'externallinks' => 'el_from',
- );
-
- foreach ( $linksTables as $table => $field ) {
- print "Retrieving illegal entries from $table... ";
-
- // SELECT DISTINCT( $field ) FROM $table LEFT JOIN page ON $field=page_id WHERE page_id IS NULL;
- $results = $dbr->select( array( $table, 'page' ),
- $field,
- array('page_id' => null ),
- __METHOD__,
- 'DISTINCT',
- array( 'page' => array( 'LEFT JOIN', "$field=page_id"))
- );
-
- $counter = 0;
- $list = array();
- print "0..";
-
- foreach( $results as $row ) {
- $counter++;
- $list[] = $row->$field;
- if ( ( $counter % $batchSize ) == 0 ) {
- wfWaitForSlaves(5);
- $dbw->delete( $table, array( $field => $list ), __METHOD__ );
-
- print $counter . "..";
- $list = array();
- }
- }
-
- print $counter;
- if (count($list) > 0) {
- $dbw->delete( $table, array( $field => $list ), __METHOD__ );
- }
-
- print "\n";
- }
-
- $lb->closeAll();
-}
diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php
index c7667520..863dd022 100644
--- a/maintenance/refreshLinks.php
+++ b/maintenance/refreshLinks.php
@@ -1,56 +1,283 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-/** */
-$optionsWithArgs = array('batch-size', 'm', 'e' );
-
-require_once( "commandLine.inc" );
-require_once( "refreshLinks.inc" );
-
-if( isset( $options['help'] ) ) {
- echo <<<TEXT
-Usage:
- php refreshLinks.php --help
- php refreshLinks.php [<start>] [-e <end>] [-m <maxlag>] [--dfn-only]
- [--batch-size <size>] [--new-only] [--redirects-only]
- php refreshLinks.php [<start>] [-e <end>] [-m <maxlag>] --old-redirects-only
-
- --help : This help message
- --dfn-only : Delete links from nonexistent articles only
- --batch-size <number> : The delete batch size when removing links from
- nonexistent articles (defaults to 100)
- --new-only : Only affect articles with just a single edit
- --redirects-only : Only fix redirects, not all links
- --old-redirects-only : Only fix redirects with no redirect table entry
- -m <number> : Maximum replication lag
- <start> : First page id to refresh
- -e <number> : Last page id to refresh
-
-TEXT;
- exit(0);
-}
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-error_reporting( E_ALL & (~E_NOTICE) );
+class RefreshLinks extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Refresh link tables";
+ $this->addOption( 'dfn-only', 'Delete links from nonexistent articles only' );
+ $this->addOption( 'new-only', 'Only affect articles with just a single edit' );
+ $this->addOption( 'redirects-only', 'Only fix redirects, not all links' );
+ $this->addOption( 'old-redirects-only', 'Only fix redirects with no redirect table entry' );
+ $this->addOption( 'm', 'Maximum replication lag', false, true );
+ $this->addOption( 'e', 'Last page id to refresh', false, true );
+ $this->addArg( 'start', 'Page_id to start from, default 1', false );
+ $this->setBatchSize( 100 );
+ }
-if ( !$options['dfn-only'] ) {
- if ( isset( $args[0] ) ) {
- $start = (int)$args[0];
- } else {
- $start = 1;
+ public function execute() {
+ if( !$this->hasOption( 'dfn-only' ) ) {
+ $start = $this->getArg( 0, 1 );
+ $new = $this->getOption( 'new-only', false );
+ $max = $this->getOption( 'm', false );
+ $end = $this->getOption( 'e', 0 );
+ $redir = $this->getOption( 'redirects-only', false );
+ $oldRedir = $this->getOption( 'old-redirects-only', false );
+ $this->doRefreshLinks( $start, $new, $max, $end, $redir, $oldRedir );
+ }
+ $this->deleteLinksFromNonexistent( $max, $this->mBatchSize );
}
- refreshLinks( $start, $options['new-only'], $options['m'], $options['e'], $options['redirects-only'], $options['old-redirects-only'] );
-}
+ /**
+ * Do the actual link refreshing.
+ * @param $start int Page_id to start from
+ * @param $newOnly bool Only do pages with 1 edit
+ * @param $maxLag int Max DB replication lag
+ * @param $end int Page_id to stop at
+ * @param $redirectsOnly bool Only fix redirects
+ * @param $oldRedirectsOnly bool Only fix redirects without redirect entries
+ */
+ private function doRefreshLinks( $start, $newOnly = false, $maxLag = false,
+ $end = 0, $redirectsOnly = false, $oldRedirectsOnly = false ) {
+ global $wgUser, $wgParser, $wgUseTidy;
-if ( !isset( $options['batch-size'] ) ) {
- $options['batch-size'] = 100;
-}
+ $reportingInterval = 100;
+ $dbr = wfGetDB( DB_SLAVE );
+ $start = intval( $start );
+
+ # Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway)
+ $wgUser->setOption('math', MW_MATH_SOURCE);
+
+ # Don't generate extension images (e.g. Timeline)
+ if( method_exists( $wgParser, "clearTagHooks" ) ) {
+ $wgParser->clearTagHooks();
+ }
+
+ # Don't use HTML tidy
+ $wgUseTidy = false;
+
+ $what = $redirectsOnly ? "redirects" : "links";
+
+ if( $oldRedirectsOnly ) {
+ # This entire code path is cut-and-pasted from below. Hurrah.
+ $res = $dbr->query(
+ "SELECT page_id ".
+ "FROM page ".
+ "LEFT JOIN redirect ON page_id=rd_from ".
+ "WHERE page_is_redirect=1 AND rd_from IS NULL AND ".
+ ($end == 0 ? "page_id >= $start"
+ : "page_id BETWEEN $start AND $end"),
+ __METHOD__
+ );
+ $num = $dbr->numRows( $res );
+ $this->output( "Refreshing $num old redirects from $start...\n" );
+
+ foreach( $res as $row ) {
+ if ( !( ++$i % $reportingInterval ) ) {
+ $this->output( "$i\n" );
+ wfWaitForSlaves( $maxLag );
+ }
+ $this->fixRedirect( $row->page_id );
+ }
+ } elseif( $newOnly ) {
+ $this->output( "Refreshing $what from " );
+ $res = $dbr->select( 'page',
+ array( 'page_id' ),
+ array(
+ 'page_is_new' => 1,
+ "page_id >= $start" ),
+ __METHOD__
+ );
+ $num = $dbr->numRows( $res );
+ $this->output( "$num new articles...\n" );
+
+ $i = 0;
+ foreach ( $res as $row ) {
+ if ( !( ++$i % $reportingInterval ) ) {
+ $this->output( "$i\n" );
+ wfWaitForSlaves( $maxLag );
+ }
+ if($redirectsOnly)
+ $this->fixRedirect( $row->page_id );
+ else
+ $this->fixLinksFromArticle( $row->page_id );
+ }
+ } else {
+ if ( !$end ) {
+ $maxPage = $dbr->selectField( 'page', 'max(page_id)', false );
+ $maxRD = $dbr->selectField( 'redirect', 'max(rd_from)', false );
+ $end = max( $maxPage, $maxRD );
+ }
+ $this->output( "Refreshing redirects table.\n" );
+ $this->output( "Starting from page_id $start of $end.\n" );
+
+ for ($id = $start; $id <= $end; $id++) {
+
+ if ( !($id % $reportingInterval) ) {
+ $this->output( "$id\n" );
+ wfWaitForSlaves( $maxLag );
+ }
+ $this->fixRedirect( $id );
+ }
+
+ if(!$redirectsOnly) {
+ $this->output( "Refreshing links table.\n" );
+ $this->output( "Starting from page_id $start of $end.\n" );
+
+ for ($id = $start; $id <= $end; $id++) {
+
+ if ( !($id % $reportingInterval) ) {
+ $this->output( "$id\n" );
+ wfWaitForSlaves( $maxLag );
+ }
+ $this->fixLinksFromArticle( $id );
+ }
+ }
+ }
+ }
+
+ /**
+ * Update the redirect entry for a given page
+ * @param $id int The page_id of the redirect
+ */
+ private function fixRedirect( $id ){
+ global $wgTitle, $wgArticle;
+
+ $wgTitle = Title::newFromID( $id );
+ $dbw = wfGetDB( DB_MASTER );
+
+ if ( is_null( $wgTitle ) ) {
+ // This page doesn't exist (any more)
+ // Delete any redirect table entry for it
+ $dbw->delete( 'redirect', array( 'rd_from' => $id ),
+ __METHOD__ );
+ return;
+ }
+ $wgArticle = new Article($wgTitle);
+
+ $rt = $wgArticle->followRedirect();
+
+ if($rt == false || !is_object($rt)) {
+ // $wgTitle is not a redirect
+ // Delete any redirect table entry for it
+ $dbw->delete( 'redirect', array( 'rd_from' => $id ),
+ __METHOD__ );
+ } else {
+ $wgArticle->updateRedirectOn($dbw,$rt);
+ }
+ }
+
+ /**
+ * Run LinksUpdate for all links on a given page_id
+ * @param $id int The page_id
+ */
+ private function fixLinksFromArticle( $id ) {
+ global $wgTitle, $wgParser;
-deleteLinksFromNonexistent($options['m'], $options['batch-size']);
+ $wgTitle = Title::newFromID( $id );
+ $dbw = wfGetDB( DB_MASTER );
-if ( $options['globals'] ) {
- print_r( $GLOBALS );
+ $linkCache =& LinkCache::singleton();
+ $linkCache->clear();
+
+ if ( is_null( $wgTitle ) ) {
+ return;
+ }
+ $dbw->begin();
+
+ $revision = Revision::newFromTitle( $wgTitle );
+ if ( !$revision ) {
+ return;
+ }
+
+ $options = new ParserOptions;
+ $parserOutput = $wgParser->parse( $revision->getText(), $wgTitle, $options, true, true, $revision->getId() );
+ $update = new LinksUpdate( $wgTitle, $parserOutput, false );
+ $update->doUpdate();
+ $dbw->commit();
+ }
+
+ /*
+ * Removes non-existing links from pages from pagelinks, imagelinks,
+ * categorylinks, templatelinks and externallinks tables.
+ *
+ * @param $maxLag
+ * @param $batchSize The size of deletion batches
+ *
+ * @author Merlijn van Deen <valhallasw@arctus.nl>
+ */
+ private function deleteLinksFromNonexistent( $maxLag = 0, $batchSize = 100 ) {
+ wfWaitForSlaves( $maxLag );
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ $lb = wfGetLBFactory()->newMainLB();
+ $dbr = $lb->getConnection( DB_SLAVE );
+ $dbr->bufferResults( false );
+
+ $linksTables = array( // table name => page_id field
+ 'pagelinks' => 'pl_from',
+ 'imagelinks' => 'il_from',
+ 'categorylinks' => 'cl_from',
+ 'templatelinks' => 'tl_from',
+ 'externallinks' => 'el_from',
+ );
+
+ foreach ( $linksTables as $table => $field ) {
+ $this->output( "Retrieving illegal entries from $table... " );
+
+ // SELECT DISTINCT( $field ) FROM $table LEFT JOIN page ON $field=page_id WHERE page_id IS NULL;
+ $results = $dbr->select( array( $table, 'page' ),
+ $field,
+ array('page_id' => null ),
+ __METHOD__,
+ 'DISTINCT',
+ array( 'page' => array( 'LEFT JOIN', "$field=page_id"))
+ );
+
+ $counter = 0;
+ $list = array();
+ $this->output( "0.." );
+
+ foreach( $results as $row ) {
+ $counter++;
+ $list[] = $row->$field;
+ if ( ( $counter % $batchSize ) == 0 ) {
+ wfWaitForSlaves(5);
+ $dbw->delete( $table, array( $field => $list ), __METHOD__ );
+
+ $this->output( $counter . ".." );
+ $list = array();
+ }
+ }
+ $this->output( $counter );
+ if (count($list) > 0) {
+ $dbw->delete( $table, array( $field => $list ), __METHOD__ );
+ }
+ $this->output( "\n" );
+ }
+ $lb->closeAll();
+ }
}
+
+$maintClass = 'RefreshLinks';
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/removeUnusedAccounts.inc b/maintenance/removeUnusedAccounts.inc
deleted file mode 100644
index 02c07c1f..00000000
--- a/maintenance/removeUnusedAccounts.inc
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/**
- * Support functions for the removeUnusedAccounts maintenance script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-/**
- * Could the specified user account be deemed inactive?
- * (No edits, no deleted edits, no log entries, no current/old uploads)
- *
- * @param $id User's ID
- * @param $master Perform checking on the master
- * @return bool
- */
-function isInactiveAccount( $id, $master = false ) {
- $dbo = wfGetDB( $master ? DB_MASTER : DB_SLAVE );
- $fname = 'isInactiveAccount';
- $checks = array( 'revision' => 'rev', 'archive' => 'ar', 'logging' => 'log',
- 'image' => 'img', 'oldimage' => 'oi' );
- $count = 0;
-
- $dbo->immediateBegin();
- foreach( $checks as $table => $fprefix ) {
- $conds = array( $fprefix . '_user' => $id );
- $count += (int)$dbo->selectField( $table, 'COUNT(*)', $conds, $fname );
- }
- $dbo->immediateCommit();
-
- return $count == 0;
-}
-
-/**
- * Show help for the maintenance script
- */
-function showHelp() {
- echo( "Delete unused user accounts from the database.\n\n" );
- echo( "USAGE: php removeUnusedAccounts.php [--delete]\n\n" );
- echo( " --delete : Delete accounts which are discovered to be inactive\n" );
- echo( " --ignore-touched=x : Ignore accounts touched within the lasts x days\n" );
- echo( " --ignore-groups=x,y : Ignore accounts within these groups\n" );
- echo( "\n" );
-}
diff --git a/maintenance/removeUnusedAccounts.php b/maintenance/removeUnusedAccounts.php
index 419955b0..7b0535b7 100644
--- a/maintenance/removeUnusedAccounts.php
+++ b/maintenance/removeUnusedAccounts.php
@@ -3,68 +3,108 @@
* Remove unused user accounts from the database
* An unused account is one which has made no edits
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-$options = array( 'help', 'delete' );
-require_once( 'commandLine.inc' );
-require_once( 'removeUnusedAccounts.inc' );
-echo( "Remove Unused Accounts\n\n" );
-$fname = 'removeUnusedAccounts';
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( isset( $options['help'] ) ) {
- showHelp();
- exit();
-}
+class RemoveUnusedAccounts extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'delete', 'Actually delete the account' );
+ $this->addOption( 'ignore-groups', 'List of comma-separated groups to exclude', false, true );
+ $this->addOption( 'ignore-touched', 'Skip accounts touched in last N days', false, true );
+ }
+
+ public function execute() {
-# Do an initial scan for inactive accounts and report the result
-echo( "Checking for unused user accounts...\n" );
-$del = array();
-$dbr = wfGetDB( DB_SLAVE );
-$res = $dbr->select( 'user', array( 'user_id', 'user_name', 'user_touched' ), '', $fname );
-if( isset( $options['ignore-groups'] ) ) {
- $excludedGroups = explode( ',', $options['ignore-groups'] );
-} else { $excludedGroups = array(); }
-$touchedSeconds = 0;
-if( isset( $options['ignore-touched'] ) ) {
- $touchedParamError = 0;
- if( ctype_digit( $options['ignore-touched'] ) ) {
- if( $options['ignore-touched'] <= 0 ) {
- $touchedParamError = 1;
+ $this->output( "Remove unused accounts\n\n" );
+
+ # Do an initial scan for inactive accounts and report the result
+ $this->output( "Checking for unused user accounts...\n" );
+ $del = array();
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'user', array( 'user_id', 'user_name', 'user_touched' ), '', __METHOD__ );
+ if( $this->hasOption('ignore-groups') ) {
+ $excludedGroups = explode( ',', $this->getOption('ignore-groups') );
+ } else {
+ $excludedGroups = array();
}
- } else { $touchedParamError = 1; }
- if( $touchedParamError == 1 ) {
- die( "Please put a valid positive integer on the --ignore-touched parameter.\n" );
- } else { $touchedSeconds = 86400 * $options['ignore-touched']; }
-}
-while( $row = $dbr->fetchObject( $res ) ) {
- # Check the account, but ignore it if it's within a $excludedGroups group or if it's touched within the $touchedSeconds seconds.
- $instance = User::newFromId( $row->user_id );
- if( count( array_intersect( $instance->getEffectiveGroups(), $excludedGroups ) ) == 0
- && isInactiveAccount( $row->user_id, true )
- && wfTimestamp( TS_UNIX, $row->user_touched ) < wfTimestamp( TS_UNIX, time() - $touchedSeconds )
- ) {
- # Inactive; print out the name and flag it
- $del[] = $row->user_id;
- echo( $row->user_name . "\n" );
+ $touched = $this->getOption( 'ignore-touched', "1" );
+ if( !ctype_digit( $touched ) ) {
+ $this->error( "Please put a valid positive integer on the --ignore-touched parameter.", true );
+ }
+ $touchedSeconds = 86400 * $touched;
+ foreach( $res as $row ) {
+ # Check the account, but ignore it if it's within a $excludedGroups group or if it's touched within the $touchedSeconds seconds.
+ $instance = User::newFromId( $row->user_id );
+ if( count( array_intersect( $instance->getEffectiveGroups(), $excludedGroups ) ) == 0
+ && $this->isInactiveAccount( $row->user_id, true )
+ && wfTimestamp( TS_UNIX, $row->user_touched ) < wfTimestamp( TS_UNIX, time() - $touchedSeconds )
+ ) {
+ # Inactive; print out the name and flag it
+ $del[] = $row->user_id;
+ $this->output( $row->user_name . "\n" );
+ }
+ }
+ $count = count( $del );
+ $this->output( "...found {$count}.\n" );
+
+ # If required, go back and delete each marked account
+ if( $count > 0 && $this->hasOption('delete') ) {
+ $this->output( "\nDeleting inactive accounts..." );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->delete( 'user', array( 'user_id' => $del ), __METHOD__ );
+ $this->output( "done.\n" );
+ # Update the site_stats.ss_users field
+ $users = $dbw->selectField( 'user', 'COUNT(*)', array(), __METHOD__ );
+ $dbw->update( 'site_stats', array( 'ss_users' => $users ), array( 'ss_row_id' => 1 ), __METHOD__ );
+ } elseif( $count > 0 ) {
+ $this->output( "\nRun the script again with --delete to remove them from the database.\n" );
+ }
+ $this->output( "\n" );
+ }
+
+ /**
+ * Could the specified user account be deemed inactive?
+ * (No edits, no deleted edits, no log entries, no current/old uploads)
+ *
+ * @param $id User's ID
+ * @param $master Perform checking on the master
+ * @return bool
+ */
+ private function isInactiveAccount( $id, $master = false ) {
+ $dbo = wfGetDB( $master ? DB_MASTER : DB_SLAVE );
+ $checks = array( 'revision' => 'rev', 'archive' => 'ar', 'logging' => 'log',
+ 'image' => 'img', 'oldimage' => 'oi' );
+ $count = 0;
+
+ $dbo->begin();
+ foreach( $checks as $table => $fprefix ) {
+ $conds = array( $fprefix . '_user' => $id );
+ $count += (int)$dbo->selectField( $table, 'COUNT(*)', $conds, __METHOD__ );
+ }
+ $dbo->commit();
+
+ return $count == 0;
}
}
-$count = count( $del );
-echo( "...found {$count}.\n" );
-# If required, go back and delete each marked account
-if( $count > 0 && isset( $options['delete'] ) ) {
- echo( "\nDeleting inactive accounts..." );
- $dbw = wfGetDB( DB_MASTER );
- $dbw->delete( 'user', array( 'user_id' => $del ), $fname );
- echo( "done.\n" );
- # Update the site_stats.ss_users field
- $users = $dbw->selectField( 'user', 'COUNT(*)', array(), $fname );
- $dbw->update( 'site_stats', array( 'ss_users' => $users ), array( 'ss_row_id' => 1 ), $fname );
-} else {
- if( $count > 0 )
- echo( "\nRun the script again with --delete to remove them from the database.\n" );
-}
-echo( "\n" );
+$maintClass = "RemoveUnusedAccounts";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/renameDbPrefix.php b/maintenance/renameDbPrefix.php
index 17568b4a..f73db508 100644
--- a/maintenance/renameDbPrefix.php
+++ b/maintenance/renameDbPrefix.php
@@ -1,68 +1,85 @@
<?php
/**
- * Run this script to after changing $wgDBPrefix on a wiki.
+ * Run this script to after changing $wgDBprefix on a wiki.
* The wiki will have to get downtime to do this correctly.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$optionsWithArgs = array('old','new','help');
-
-require_once( 'commandLine.inc' );
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( @$options['help'] || !isset($options['old']) || !isset($options['new']) ) {
- print "usage:updateSpecialPages.php [--help] [--old x] [new y]\n";
- print " --help : this help message\n";
- print " --old x : old db prefix x\n";
- print " --old 0 : EMPTY old db prefix x\n";
- print " --new y : new db prefix y\n";
- print " --new 0 : EMPTY new db prefix\n";
- wfDie();
-}
-
-// Allow for no old prefix
-if( $options['old'] === '0' ) {
- $old = '';
-} else {
- // Use nice safe, sane, prefixes
- preg_match( '/^[a-zA-Z]+_$/', $options['old'], $m );
- $old = isset($m[0]) ? $m[0] : false;
-}
-// Allow for no new prefix
-if( $options['new'] === '0' ) {
- $new = '';
-} else {
- // Use nice safe, sane, prefixes
- preg_match( '/^[a-zA-Z]+_$/', $options['new'], $m );
- $new = isset($m[0]) ? $m[0] : false;
-}
-
-if( $old===false || $new===false ) {
- print "Invalid prefix!\n";
- wfDie();
-}
-if( $old === $new ) {
- print "Same prefix. Nothing to rename!\n";
- wfDie();
-}
+class RenameDbPrefix extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( "old", "Old db prefix [0 for none]", true, true );
+ $this->addOption( "new", "New db prefix [0 for none]", true, true );
+ }
-print "Renaming DB prefix for tables of $wgDBname from '$old' to '$new'\n";
-$count = 0;
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-$dbw = wfGetDB( DB_MASTER );
-$res = $dbw->query( "SHOW TABLES LIKE '".$dbw->escapeLike($old)."%'" );
-foreach( $res as $row ) {
- // XXX: odd syntax. MySQL outputs an oddly cased "Tables of X"
- // sort of message. Best not to try $row->x stuff...
- $fields = get_object_vars( $row );
- // Silly for loop over one field...
- foreach( $fields as $resName => $table ) {
- // $old should be regexp safe ([a-zA-Z_])
- $newTable = preg_replace( '/^'.$old.'/',$new,$table);
- print "Renaming table $table to $newTable\n";
- $dbw->query( "RENAME TABLE $table TO $newTable" );
+ public function execute() {
+ // Allow for no old prefix
+ if( $this->getOption( 'old', 0 ) === '0' ) {
+ $old = '';
+ } else {
+ // Use nice safe, sane, prefixes
+ preg_match( '/^[a-zA-Z]+_$/', $this->getOption('old'), $m );
+ $old = isset( $m[0] ) ? $m[0] : false;
+ }
+ // Allow for no new prefix
+ if( $this->getOption( 'new', 0 ) === '0' ) {
+ $new = '';
+ } else {
+ // Use nice safe, sane, prefixes
+ preg_match( '/^[a-zA-Z]+_$/', $this->getOption('new'), $m );
+ $new = isset( $m[0] ) ? $m[0] : false;
+ }
+
+ if( $old === false || $new === false ) {
+ $this->error( "Invalid prefix!", true );
+ }
+ if( $old === $new ) {
+ $this->output( "Same prefix. Nothing to rename!\n", true );
+ }
+
+ $this->output( "Renaming DB prefix for tables of $wgDBname from '$old' to '$new'\n" );
+ $count = 0;
+
+ $dbw = wfGetDB( DB_MASTER );
+ $res = $dbw->query( "SHOW TABLES LIKE '".$dbw->escapeLike( $old )."%'" );
+ foreach( $res as $row ) {
+ // XXX: odd syntax. MySQL outputs an oddly cased "Tables of X"
+ // sort of message. Best not to try $row->x stuff...
+ $fields = get_object_vars( $row );
+ // Silly for loop over one field...
+ foreach( $fields as $resName => $table ) {
+ // $old should be regexp safe ([a-zA-Z_])
+ $newTable = preg_replace( '/^'.$old.'/', $new, $table );
+ $this->output( "Renaming table $table to $newTable\n" );
+ $dbw->query( "RENAME TABLE $table TO $newTable" );
+ }
+ $count++;
+ }
+ $this->output( "Done! [$count tables]\n" );
}
- $count++;
}
-print "Done! [$count tables]\n";
+$maintClass = "RenameDbPrefix";
+require_once( DO_MAINTENANCE ); \ No newline at end of file
diff --git a/maintenance/renamewiki.php b/maintenance/renamewiki.php
index 66de326b..36437bea 100644
--- a/maintenance/renamewiki.php
+++ b/maintenance/renamewiki.php
@@ -3,60 +3,87 @@
* Why yes, this *is* another special-purpose Wikimedia maintenance script!
* Should be fixed up and generalized.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
-require_once( "commandLine.inc" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if ( count( $args ) != 2 ) {
- wfDie( "Rename external storage dbs and leave a new one...\n" .
- "Usage: php renamewiki.php <olddb> <newdb>\n" );
-}
+class RenameWiki extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rename external storage dbs and leave a new one";
+ $this->addArg( 'olddb', 'Old DB name' );
+ $this->addArg( 'newdb', 'New DB name' );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-list( $from, $to ) = $args;
+ public function execute() {
+ global $wgDefaultExternalStore;
-echo "Renaming blob tables in ES from $from to $to...\n";
-echo "Sleeping 5 seconds...";
-sleep(5);
-echo "\n";
+ # Setup
+ $from = $this->getArg( 0 );
+ $to = $this->getArg( 1 );
+ $this->output( "Renaming blob tables in ES from $from to $to...\n" );
+ $this->output( "Sleeping 5 seconds...\n" );
+ sleep(5);
-$maintenance = "$IP/maintenance";
+ # Initialise external storage
+ if ( is_array( $wgDefaultExternalStore ) ) {
+ $stores = $wgDefaultExternalStore;
+ } elseif ( $wgDefaultExternalStore ) {
+ $stores = array( $wgDefaultExternalStore );
+ } else {
+ $stores = array();
+ }
-# Initialise external storage
-if ( is_array( $wgDefaultExternalStore ) ) {
- $stores = $wgDefaultExternalStore;
-} elseif ( $wgDefaultExternalStore ) {
- $stores = array( $wgDefaultExternalStore );
-} else {
- $stores = array();
-}
-if ( count( $stores ) ) {
- require_once( 'ExternalStoreDB.php' );
- print "Initialising external storage $store...\n";
- global $wgDBuser, $wgDBpassword, $wgExternalServers;
- foreach ( $stores as $storeURL ) {
- $m = array();
- if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
- continue;
+ if ( count( $stores ) ) {
+ $this->output( "Initialising external storage $store...\n" );
+ global $wgDBuser, $wgDBpassword, $wgExternalServers;
+ foreach ( $stores as $storeURL ) {
+ $m = array();
+ if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
+ continue;
+ }
+
+ $cluster = $m[1];
+
+ # Hack
+ $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
+ $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
+
+ $store = new ExternalStoreDB;
+ $extdb =& $store->getMaster( $cluster );
+ $extdb->query( "SET table_type=InnoDB" );
+ $extdb->query( "CREATE DATABASE {$to}" );
+ $extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" );
+ $extdb->selectDB( $from );
+ $extdb->sourceFile( $this->getDir() . '/storage/blobs.sql' );
+ $extdb->commit();
+ }
}
-
- $cluster = $m[1];
-
- # Hack
- $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
- $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
-
- $store = new ExternalStoreDB;
- $extdb =& $store->getMaster( $cluster );
- $extdb->query( "SET table_type=InnoDB" );
- $extdb->query( "CREATE DATABASE {$to}" );
- $extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" );
- $extdb->selectDB( $from );
- dbsource( "$maintenance/storage/blobs.sql", $extdb );
- $extdb->immediateCommit();
+ $this->output( "done.\n" );
}
}
-echo "done.\n";
-
+$maintClass = "RenameWiki";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/renderDump.php b/maintenance/renderDump.php
index 97797792..d36953f8 100644
--- a/maintenance/renderDump.php
+++ b/maintenance/renderDump.php
@@ -27,42 +27,61 @@
* @file
* @ingroup Maintenance
*/
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-$optionsWithArgs = array( 'report' );
+class DumpRenderer extends Maintenance {
-require_once( 'commandLine.inc' );
+ private $count = 0;
+ private $outputDirectory, $startTime;
-class DumpRenderer {
- function __construct( $dir ) {
- $this->stderr = fopen( "php://stderr", "wt" );
- $this->outputDirectory = $dir;
- $this->count = 0;
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Take page text out of an XML dump file and render basic HTML out to files";
+ $this->addOption( 'output-dir', 'The directory to output the HTML files to', true, true );
}
- function handleRevision( $rev ) {
+ public function execute() {
+ $this->outputDirectory = $this->getOption( 'output-dir' );
+ $this->startTime = wfTime();
+
+ $source = new ImportStreamSource( $this->getStdin() );
+ $importer = new WikiImporter( $source );
+
+ $importer->setRevisionCallback(
+ array( &$this, 'handleRevision' ) );
+
+ return $importer->doImport();
+ }
+
+ /**
+ * Callback function for each revision, turn into HTML and save
+ * @param $rev Revision
+ */
+ private function handleRevision( $rev ) {
$title = $rev->getTitle();
if (!$title) {
- fprintf( $this->stderr, "Got bogus revision with null title!" );
+ $this->error( "Got bogus revision with null title!" );
return;
}
$display = $title->getPrefixedText();
-
+
$this->count++;
-
+
$sanitized = rawurlencode( $display );
$filename = sprintf( "%s/wiki-%07d-%s.html",
$this->outputDirectory,
$this->count,
$sanitized );
- fprintf( $this->stderr, "%s\n", $filename, $display );
-
- // fixme
+ $this->output( sprintf( $this->stderr, "%s\n", $filename, $display ) );
+
+ // fixme (what?)
$user = new User();
$parser = new Parser();
$options = ParserOptions::newFromUser( $user );
-
+
$output = $parser->parse( $rev->getText(), $title, $options );
-
+
file_put_contents( $filename,
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " .
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" .
@@ -76,27 +95,7 @@ class DumpRenderer {
"</body>\n" .
"</html>" );
}
-
- function run() {
- $this->startTime = wfTime();
-
- $file = fopen( 'php://stdin', 'rt' );
- $source = new ImportStreamSource( $file );
- $importer = new WikiImporter( $source );
-
- $importer->setRevisionCallback(
- array( &$this, 'handleRevision' ) );
-
- return $importer->doImport();
- }
}
-if( isset( $options['output-dir'] ) ) {
- $dir = $options['output-dir'];
-} else {
- wfDie( "Must use --output-dir=/some/dir\n" );
-}
-$render = new DumpRenderer( $dir );
-$render->run();
-
-
+$maintClass = "DumpRenderer";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/rollbackEdits.php b/maintenance/rollbackEdits.php
new file mode 100644
index 00000000..5d6a80a4
--- /dev/null
+++ b/maintenance/rollbackEdits.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Rollback all edits by a given user or IP provided they're the most
+ * recent edit (just like real rollback)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class RollbackEdits extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Rollback all edits by a given user or IP provided they're the most recent edit";
+ $this->addOption( 'titles', 'A list of titles, none means all titles where the given user is the most recent', false, true );
+ $this->addOption( 'user', 'A user or IP to rollback all edits for', true, true );
+ $this->addOption( 'summary', 'Edit summary to use', false, true );
+ $this->addOption( 'bot', 'Mark the edits as bot' );
+ }
+
+ public function execute() {
+ $user = $this->getOption( 'user' );
+ $username = User::isIP( $user ) ? $user : User::getCanonicalName( $user );
+ if( !$username ) {
+ $this->error( 'Invalid username', true );
+ }
+
+ $bot = $this->hasOption( 'bot' );
+ $summary = $this->getOption( 'summary', $this->mSelf . ' mass rollback' );
+ $titles = array();
+ $results = array();
+ if( $this->hasOption( 'titles' ) ) {
+ foreach( explode( '|', $this->getOption( 'titles' ) ) as $title ) {
+ $t = Title::newFromText( $title );
+ if( !$t ) {
+ $this->error( 'Invalid title, ' . $title );
+ } else {
+ $titles[] = $t;
+ }
+ }
+ } else {
+ $titles = $this->getRollbackTitles( $user );
+ }
+
+ if( !$titles ) {
+ $this->output( 'No suitable titles to be rolled back' );
+ return;
+ }
+
+ foreach( $titles as $t ) {
+ $a = new Article( $t );
+ $this->output( 'Processing ' . $t->getPrefixedText() . '...' );
+ if( !$a->commitRollback( $user, $summary, $bot, $results ) ) {
+ $this->output( "done\n" );
+ } else {
+ $this->output( "failed\n" );
+ }
+ }
+ }
+
+ /**
+ * Get all pages that should be rolled back for a given user
+ * @param $user String a name to check against rev_user_text
+ */
+ private function getRollbackTitles( $user ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $titles = array();
+ $results = $dbr->select(
+ array( 'page', 'revision' ),
+ array( 'page_namespace', 'page_title' ),
+ array( 'page_latest = rev_id', 'rev_user_text' => $user ),
+ __METHOD__
+ );
+ while( $row = $dbr->fetchObject( $results ) ) {
+ $titles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
+ }
+ return $titles;
+ }
+}
+
+$maintClass = 'RollbackEdits';
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/runBatchedQuery.php b/maintenance/runBatchedQuery.php
new file mode 100644
index 00000000..03c56aa9
--- /dev/null
+++ b/maintenance/runBatchedQuery.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Run a database query in batches and wait for slaves. This is used on large
+ * wikis to prevent replication lag from going through the roof when executing
+ * large write queries.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class BatchedQueryRunner extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Run a query repeatedly until it affects 0 rows, and wait for slaves in between.\n" .
+ "NOTE: You need to set a LIMIT clause yourself.";
+ $this->addOption( 'wait', "Wait for replication lag to go down to this value. Default: 5", false, true );
+ }
+
+ public function execute() {
+ if ( !$this->hasArg() )
+ $this->error( "No query specified. Specify the query as a command line parameter.", true );
+
+ $query = $this->getArg();
+ $wait = $this->getOption( 'wait', 5 );
+ $n = 1;
+ $dbw = wfGetDb( DB_MASTER );
+ do {
+ $this->output( "Batch $n: " );
+ $n++;
+ $dbw->query( $query );
+ $affected = $dbw->affectedRows();
+ $this->output( "$affected rows\n" );
+ wfWaitForSlaves( $wait );
+ } while ( $affected > 0 );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
+}
+
+
+$maintClass = "BatchedQueryRunner";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/runJobs.php b/maintenance/runJobs.php
index 1340a857..e03bf5d1 100644
--- a/maintenance/runJobs.php
+++ b/maintenance/runJobs.php
@@ -6,75 +6,98 @@
* --maxjobs <num> (default 10000)
* --type <job_cmd>
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$optionsWithArgs = array( 'maxjobs', 'type', 'procs' );
-$wgUseNormalUser = true;
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if ( isset( $options['procs'] ) ) {
- $procs = intval( $options['procs'] );
- if ( $procs < 1 || $procs > 1000 ) {
- echo "Invalid argument to --procs\n";
- exit( 1 );
+class RunJobs extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Run pending jobs";
+ $this->addOption( 'maxjobs', 'Maximum number of jobs to run', false, true );
+ $this->addOption( 'type', 'Type of job to run', false, true );
+ $this->addOption( 'procs', 'Number of processes to use', false, true );
}
- $fc = new ForkController( $procs );
- if ( $fc->start( $procs ) != 'child' ) {
- exit( 0 );
+
+ public function memoryLimit() {
+ // Don't eat all memory on the machine if we get a bad job.
+ return "150M";
}
-}
-
-if ( isset( $options['maxjobs'] ) ) {
- $maxJobs = $options['maxjobs'];
-} else {
- $maxJobs = 10000;
-}
-
-$type = false;
-if ( isset( $options['type'] ) )
- $type = $options['type'];
-
-$wgTitle = Title::newFromText( 'RunJobs.php' );
-$dbw = wfGetDB( DB_MASTER );
-$n = 0;
-$conds = '';
-if ($type !== false)
- $conds = "job_cmd = " . $dbw->addQuotes($type);
-
-while ( $dbw->selectField( 'job', 'job_id', $conds, 'runJobs.php' ) ) {
- $offset=0;
- for (;;) {
- $job = ($type == false) ?
- Job::pop($offset)
- : Job::pop_type($type);
-
- if ($job == false)
- break;
-
- wfWaitForSlaves( 5 );
- $t = microtime( true );
- $offset=$job->id;
- $status = $job->run();
- $t = microtime( true ) - $t;
- $timeMs = intval( $t * 1000 );
- if ( !$status ) {
- runJobsLog( $job->toString() . " t=$timeMs error={$job->error}" );
- } else {
- runJobsLog( $job->toString() . " t=$timeMs good" );
+ public function execute() {
+ global $wgTitle;
+ if ( $this->hasOption( 'procs' ) ) {
+ $procs = intval( $this->getOption('procs') );
+ if ( $procs < 1 || $procs > 1000 ) {
+ $this->error( "Invalid argument to --procs", true );
+ }
+ $fc = new ForkController( $procs );
+ if ( $fc->start( $procs ) != 'child' ) {
+ exit( 0 );
+ }
}
- if ( $maxJobs && ++$n > $maxJobs ) {
- break 2;
+ $maxJobs = $this->getOption( 'maxjobs', 10000 );
+ $type = $this->getOption( 'type', false );
+ $wgTitle = Title::newFromText( 'RunJobs.php' );
+ $dbw = wfGetDB( DB_MASTER );
+ $n = 0;
+ $conds = '';
+ if ($type !== false)
+ $conds = "job_cmd = " . $dbw->addQuotes($type);
+
+ while ( $dbw->selectField( 'job', 'job_id', $conds, 'runJobs.php' ) ) {
+ $offset=0;
+ for (;;) {
+ $job = ($type == false) ?
+ Job::pop($offset)
+ : Job::pop_type($type);
+
+ if ($job == false)
+ break;
+
+ wfWaitForSlaves( 5 );
+ $t = microtime( true );
+ $offset=$job->id;
+ $status = $job->run();
+ $t = microtime( true ) - $t;
+ $timeMs = intval( $t * 1000 );
+ if ( !$status ) {
+ $this->runJobsLog( $job->toString() . " t=$timeMs error={$job->error}" );
+ } else {
+ $this->runJobsLog( $job->toString() . " t=$timeMs good" );
+ }
+ if ( $maxJobs && ++$n > $maxJobs ) {
+ break 2;
+ }
+ }
}
}
-}
-
-function runJobsLog( $msg ) {
- print wfTimestamp( TS_DB ) . " $msg\n";
- wfDebugLog( 'runJobs', $msg );
+ /**
+ * Log the job message
+ * @param $msg String The message to log
+ */
+ private function runJobsLog( $msg ) {
+ $this->output( wfTimestamp( TS_DB ) . " $msg\n" );
+ wfDebugLog( 'runJobs', $msg );
+ }
}
-
+$maintClass = "RunJobs";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/showJobs.php b/maintenance/showJobs.php
index 6e38c854..b385c50a 100644
--- a/maintenance/showJobs.php
+++ b/maintenance/showJobs.php
@@ -4,15 +4,52 @@
*
* Report number of jobs currently waiting in master database.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Tim Starling
* @author Ashar Voultoiz
*/
-require_once( 'commandLine.inc' );
-
-$dbw = wfGetDB( DB_MASTER );
-$count = $dbw->selectField( 'job', 'count(*)', '', 'runJobs.php' );
-print $count."\n";
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+class ShowJobs extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Show number of jobs waiting in master database";
+ $this->addOption( 'group', 'Show number of jobs per job type' );
+ }
+ public function execute() {
+ $dbw = wfGetDB( DB_MASTER );
+ if ( $this->hasOption( 'group' ) ) {
+ $res = $dbw->select(
+ 'job',
+ array( 'job_cmd', 'count(*) as count' ),
+ array(),
+ __METHOD__,
+ array( 'GROUP BY' => 'job_cmd' )
+ );
+ foreach( $res as $row ) {
+ $this->output( $row->job_cmd . ': ' . $row->count . "\n" );
+ }
+ } else {
+ $this->output( $dbw->selectField( 'job', 'count(*)', '', __METHOD__ ) . "\n" );
+ }
+ }
+}
+$maintClass = "ShowJobs";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/showStats.php b/maintenance/showStats.php
index ef13f654..dfce3613 100644
--- a/maintenance/showStats.php
+++ b/maintenance/showStats.php
@@ -4,7 +4,21 @@
* Maintenance script to show the cached statistics.
* Give out the same output as [[Special:Statistics]]
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Ashar Voultoiz <hashar@altern.org>
* Based on initStats.php by:
@@ -14,35 +28,41 @@
* @license GNU General Public License 2.0 or later
*/
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-#
-# Configuration
-#
-$fields = array(
- 'ss_total_views' => 'Total views',
- 'ss_total_edits' => 'Total edits',
- 'ss_good_articles' => 'Number of articles',
- 'ss_total_pages' => 'Total pages',
- 'ss_users' => 'Number of users',
- 'ss_admins' => 'Number of admins',
- 'ss_images' => 'Number of images',
-);
-
-// Get cached stats from slave database
-$dbr = wfGetDB( DB_SLAVE );
-$fname = 'showStats';
-$stats = $dbr->selectRow( 'site_stats', '*', '' );
-
-// Get maximum size for each column
-$max_length_value = $max_length_desc = 0;
-foreach( $fields as $field => $desc ) {
- $max_length_value = max( $max_length_value, strlen( $stats->$field ) );
- $max_length_desc = max( $max_length_desc , strlen( $desc )) ;
+class ShowStats extends Maintenance {
+ public function __construct() {
+ $this->mDescription = "Show the cached statistics";
+ }
+ public function execute() {
+ $fields = array(
+ 'ss_total_views' => 'Total views',
+ 'ss_total_edits' => 'Total edits',
+ 'ss_good_articles' => 'Number of articles',
+ 'ss_total_pages' => 'Total pages',
+ 'ss_users' => 'Number of users',
+ 'ss_admins' => 'Number of admins',
+ 'ss_images' => 'Number of images',
+ );
+
+ // Get cached stats from slave database
+ $dbr = wfGetDB( DB_SLAVE );
+ $stats = $dbr->selectRow( 'site_stats', '*', '', __METHOD__ );
+
+ // Get maximum size for each column
+ $max_length_value = $max_length_desc = 0;
+ foreach( $fields as $field => $desc ) {
+ $max_length_value = max( $max_length_value, strlen( $stats->$field ) );
+ $max_length_desc = max( $max_length_desc , strlen( $desc )) ;
+ }
+
+ // Show them
+ foreach( $fields as $field => $desc ) {
+ $this->output( sprintf( "%-{$max_length_desc}s: %{$max_length_value}d\n", $desc, $stats->$field ) );
+ }
+ }
}
-// Show them
-foreach( $fields as $field => $desc ) {
- printf( "%-{$max_length_desc}s: %{$max_length_value}d\n", $desc, $stats->$field );
-}
+$maintClass = "ShowStats";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/sql.php b/maintenance/sql.php
index ab6546b9..fd4be19a 100644
--- a/maintenance/sql.php
+++ b/maintenance/sql.php
@@ -3,42 +3,78 @@
* Send SQL queries from the specified file to the database, performing
* variable replacement along the way.
*
- * @file
- * @ingroup Database Maintenance
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
*/
-require_once( dirname(__FILE__) . '/' . 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if ( isset( $options['help'] ) ) {
- echo "Send SQL queries to a MediaWiki database.\nUsage: php sql.php [<file>]\n";
- exit( 1 );
-}
+class MwSql extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Send SQL queries to a MediaWiki database";
+ }
-if ( isset( $args[0] ) ) {
- $fileName = $args[0];
- $file = fopen( $fileName, 'r' );
- $promptCallback = false;
-} else {
- $file = STDIN;
- $promptObject = new SqlPromptPrinter( "> " );
- $promptCallback = $promptObject->cb();
-}
+ public function execute() {
+ if ( $this->hasArg() ) {
+ $fileName = $this->getArg();
+ $file = fopen( $fileName, 'r' );
+ $promptCallback = false;
+ } else {
+ $file = $this->getStdin();
+ $promptObject = new SqlPromptPrinter( "> " );
+ $promptCallback = $promptObject->cb();
+ }
+
+ if ( !$file )
+ $this->error( "Unable to open input file", true );
-if ( !$file ) {
- echo "Unable to open input file\n";
- exit( 1 );
-}
+ $dbw = wfGetDB( DB_MASTER );
+ $error = $dbw->sourceStream( $file, $promptCallback, array( $this, 'sqlPrintResult' ) );
+ if ( $error !== true ) {
+ $this->error( $error, true );
+ } else {
+ exit( 0 );
+ }
+ }
-$dbw =& wfGetDB( DB_MASTER );
-$error = $dbw->sourceStream( $file, $promptCallback, 'sqlPrintResult' );
-if ( $error !== true ) {
- echo $error;
- exit( 1 );
-} else {
- exit( 0 );
+ /**
+ * Print the results, callback for $db->sourceStream()
+ * @param $res The results object
+ * @param $db Database object
+ */
+ public function sqlPrintResult( $res, $db ) {
+ if ( !$res ) {
+ // Do nothing
+ } elseif ( is_object( $res ) && $res->numRows() ) {
+ foreach ( $res as $row ) {
+ $this->output( print_r( $row, true ) );
+ }
+ } else {
+ $affected = $db->affectedRows();
+ $this->output( "Query OK, $affected row(s) affected\n" );
+ }
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
}
-//-----------------------------------------------------------------------------
class SqlPromptPrinter {
function __construct( $prompt ) {
$this->prompt = $prompt;
@@ -53,17 +89,5 @@ class SqlPromptPrinter {
}
}
-function sqlPrintResult( $res, $db ) {
- if ( !$res ) {
- // Do nothing
- } elseif ( is_object( $res ) && $res->numRows() ) {
- while ( $row = $res->fetchObject() ) {
- print_r( $row );
- }
- } else {
- $affected = $db->affectedRows();
- echo "Query OK, $affected row(s) affected\n";
- }
-}
-
-
+$maintClass = "MwSql";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/sqlite.php b/maintenance/sqlite.php
new file mode 100644
index 00000000..8886fe74
--- /dev/null
+++ b/maintenance/sqlite.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Performs some operations specific to SQLite database backend
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+
+class SqliteMaintenance extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Performs some operations specific to SQLite database backend";
+ $this->addOption( 'vacuum', 'Clean up database by removing deleted pages. Decreases database file size' );
+ $this->addOption( 'integrity', 'Check database for integrity' );
+ $this->addOption( 'backup-to', 'Backup database to the given file', false, true );
+ }
+
+ /**
+ * While we use database connection, this simple lie prevents useless --dbpass and
+ * --dbuser options from appearing in help message for this script.
+ */
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ global $wgDBtype;
+
+ if ( $wgDBtype != 'sqlite' ) {
+ $this->error( "This maintenance script requires a SQLite database.\n" );
+ return;
+ }
+
+ $this->db = wfGetDB( DB_MASTER );
+
+ if ( $this->hasOption( 'vacuum' ) ) {
+ $this->vacuum();
+ }
+
+ if ( $this->hasOption( 'integrity' ) ) {
+ $this->integrityCheck();
+ }
+
+ if ( $this->hasOption( 'backup-to' ) ) {
+ $this->backup( $this->getOption( 'backup-to' ) );
+ }
+ }
+
+ private function vacuum() {
+ $prevSize = filesize( $this->db->mDatabaseFile );
+ if ( $prevSize == 0 ) {
+ $this->error( "Can't vacuum an empty database.\n", true );
+ }
+
+ $this->output( 'VACUUM: ' );
+ if ( $this->db->query( 'VACUUM' ) ) {
+ clearstatcache();
+ $newSize = filesize( $this->db->mDatabaseFile );
+ $this->output( sprintf( "Database size was %d, now %d (%.1f%% reduction).\n",
+ $prevSize, $newSize, ( $prevSize - $newSize) * 100.0 / $prevSize ) );
+ } else {
+ $this->output( 'Error\n' );
+ }
+ }
+
+ private function integrityCheck() {
+ $this->output( "Performing database integrity checks:\n" );
+ $res = $this->db->query( 'PRAGMA integrity_check' );
+
+ if ( !$res || $res->numRows() == 0 ) {
+ $this->error( "Error: integrity check query returned nothing.\n" );
+ return;
+ }
+
+ foreach ( $res as $row ) {
+ $this->output( $row->integrity_check );
+ }
+ }
+
+ private function backup( $fileName ) {
+ $this->output( "Backing up database:\n Locking..." );
+ $this->db->query( 'BEGIN IMMEDIATE TRANSACTION', __METHOD__ );
+ $ourFile = $this->db->mDatabaseFile;
+ $this->output( " Copying database file $ourFile to $fileName... " );
+ wfSuppressWarnings( false );
+ if ( !copy( $ourFile, $fileName ) ) {
+ $err = error_get_last();
+ $this->error( " {$err['message']}" );
+ }
+ wfSuppressWarnings( true );
+ $this->output( " Releasing lock...\n" );
+ $this->db->query( 'COMMIT TRANSACTION', __METHOD__ );
+ }
+}
+
+$maintClass = "SqliteMaintenance";
+require_once( DO_MAINTENANCE ); \ No newline at end of file
diff --git a/maintenance/sqlite/archives/initial-indexes.sql b/maintenance/sqlite/archives/initial-indexes.sql
index a88b7a26..f0851163 100644
--- a/maintenance/sqlite/archives/initial-indexes.sql
+++ b/maintenance/sqlite/archives/initial-indexes.sql
@@ -4,8 +4,7 @@
-- the CREATE INDEX statement will fail if there are duplicate values.
--
-- Ignore duplicates, several tables will have them (e.g. bug 16966) but in
--- most cases it's harmless to discard them. We'll keep the old tables with
--- duplicates in so that the user can recover them in case of disaster.
+-- most cases it's harmless to discard them.
--------------------------------------------------------------------------------
-- Drop temporary tables from aborted runs
@@ -296,41 +295,41 @@ INSERT OR IGNORE INTO /*_*/page_props_tmp SELECT * FROM /*_*/page_props;
-- Do the table renames
--------------------------------------------------------------------------------
-ALTER TABLE /*_*/user RENAME TO /*_*/user_old_13;
+DROP TABLE /*_*/user;
ALTER TABLE /*_*/user_tmp RENAME TO /*_*/user;
-ALTER TABLE /*_*/user_groups RENAME TO /*_*/user_groups_old_13;
+DROP TABLE /*_*/user_groups;
ALTER TABLE /*_*/user_groups_tmp RENAME TO /*_*/user_groups;
-ALTER TABLE /*_*/page RENAME TO /*_*/page_old_13;
+DROP TABLE /*_*/page;
ALTER TABLE /*_*/page_tmp RENAME TO /*_*/page;
-ALTER TABLE /*_*/revision RENAME TO /*_*/revision_old_13;
+DROP TABLE /*_*/revision;
ALTER TABLE /*_*/revision_tmp RENAME TO /*_*/revision;
-ALTER TABLE /*_*/pagelinks RENAME TO /*_*/pagelinks_old_13;
+DROP TABLE /*_*/pagelinks;
ALTER TABLE /*_*/pagelinks_tmp RENAME TO /*_*/pagelinks;
-ALTER TABLE /*_*/templatelinks RENAME TO /*_*/templatelinks_old_13;
+DROP TABLE /*_*/templatelinks;
ALTER TABLE /*_*/templatelinks_tmp RENAME TO /*_*/templatelinks;
-ALTER TABLE /*_*/imagelinks RENAME TO /*_*/imagelinks_old_13;
+DROP TABLE /*_*/imagelinks;
ALTER TABLE /*_*/imagelinks_tmp RENAME TO /*_*/imagelinks;
-ALTER TABLE /*_*/categorylinks RENAME TO /*_*/categorylinks_old_13;
+DROP TABLE /*_*/categorylinks;
ALTER TABLE /*_*/categorylinks_tmp RENAME TO /*_*/categorylinks;
-ALTER TABLE /*_*/category RENAME TO /*_*/category_old_13;
+DROP TABLE /*_*/category;
ALTER TABLE /*_*/category_tmp RENAME TO /*_*/category;
-ALTER TABLE /*_*/langlinks RENAME TO /*_*/langlinks_old_13;
+DROP TABLE /*_*/langlinks;
ALTER TABLE /*_*/langlinks_tmp RENAME TO /*_*/langlinks;
-ALTER TABLE /*_*/site_stats RENAME TO /*_*/site_stats_old_13;
+DROP TABLE /*_*/site_stats;
ALTER TABLE /*_*/site_stats_tmp RENAME TO /*_*/site_stats;
-ALTER TABLE /*_*/ipblocks RENAME TO /*_*/ipblocks_old_13;
+DROP TABLE /*_*/ipblocks;
ALTER TABLE /*_*/ipblocks_tmp RENAME TO /*_*/ipblocks;
-ALTER TABLE /*_*/watchlist RENAME TO /*_*/watchlist_old_13;
+DROP TABLE /*_*/watchlist;
ALTER TABLE /*_*/watchlist_tmp RENAME TO /*_*/watchlist;
-ALTER TABLE /*_*/math RENAME TO /*_*/math_old_13;
+DROP TABLE /*_*/math;
ALTER TABLE /*_*/math_tmp RENAME TO /*_*/math;
-ALTER TABLE /*_*/interwiki RENAME TO /*_*/interwiki_old_13;
+DROP TABLE /*_*/interwiki;
ALTER TABLE /*_*/interwiki_tmp RENAME TO /*_*/interwiki;
-ALTER TABLE /*_*/page_restrictions RENAME TO /*_*/page_restrictions_old_13;
+DROP TABLE /*_*/page_restrictions;
ALTER TABLE /*_*/page_restrictions_tmp RENAME TO /*_*/page_restrictions;
-ALTER TABLE /*_*/protected_titles RENAME TO /*_*/protected_titles_old_13;
+DROP TABLE /*_*/protected_titles;
ALTER TABLE /*_*/protected_titles_tmp RENAME TO /*_*/protected_titles;
-ALTER TABLE /*_*/page_props RENAME TO /*_*/page_props_old_13;
+DROP TABLE /*_*/page_props;
ALTER TABLE /*_*/page_props_tmp RENAME TO /*_*/page_props;
--------------------------------------------------------------------------------
diff --git a/maintenance/sqlite/archives/patch-log_user_text.sql b/maintenance/sqlite/archives/patch-log_user_text.sql
new file mode 100644
index 00000000..c7fcc75f
--- /dev/null
+++ b/maintenance/sqlite/archives/patch-log_user_text.sql
@@ -0,0 +1,5 @@
+ALTER TABLE /*$wgDBprefix*/logging ADD COLUMN log_user_text TEXT NOT NULL default '';
+ALTER TABLE /*$wgDBprefix*/logging ADD COLUMN log_page INTEGER NULL;
+
+CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
diff --git a/maintenance/sqlite/archives/patch-rd_interwiki.sql b/maintenance/sqlite/archives/patch-rd_interwiki.sql
new file mode 100644
index 00000000..ae4870a4
--- /dev/null
+++ b/maintenance/sqlite/archives/patch-rd_interwiki.sql
@@ -0,0 +1,5 @@
+-- Add interwiki and fragment columns to redirect table
+
+ALTER TABLE /*$wgDBprefix*/redirect ADD COLUMN rd_interwiki TEXT default NULL;
+ALTER TABLE /*$wgDBprefix*/redirect ADD COLUMN rd_fragment TEXT default NULL;
+
diff --git a/maintenance/sqlite/archives/patch-tc-timestamp.sql b/maintenance/sqlite/archives/patch-tc-timestamp.sql
new file mode 100644
index 00000000..551a5f1c
--- /dev/null
+++ b/maintenance/sqlite/archives/patch-tc-timestamp.sql
@@ -0,0 +1,3 @@
+UPDATE /*_*/transcache SET tc_time = strftime('%Y%m%d%H%M%S', datetime(tc_time, 'unixepoch'));
+
+INSERT INTO /*_*/updatelog VALUES ('convert transcache field');
diff --git a/maintenance/sqlite/archives/searchindex-fts3.sql b/maintenance/sqlite/archives/searchindex-fts3.sql
new file mode 100644
index 00000000..c3a86894
--- /dev/null
+++ b/maintenance/sqlite/archives/searchindex-fts3.sql
@@ -0,0 +1,18 @@
+-- Patch that introduces fulltext search capabilities to SQLite schema
+-- Requires that SQLite must be compiled with FTS3 module (comes with core amalgamation).
+-- See http://sqlite.org/fts3.html for details of syntax.
+-- Will fail if FTS3 is not present,
+DROP TABLE IF EXISTS /*_*/searchindex;
+CREATE VIRTUAL TABLE /*_*/searchindex USING FTS3(
+ -- Key to page_id
+ -- Disabled, instead we use the built-in rowid column
+ -- si_page INTEGER NOT NULL,
+
+ -- Munged version of title
+ si_title,
+
+ -- Munged version of body text
+ si_text
+);
+
+INSERT INTO /*_*/updatelog VALUES ('fts3'); \ No newline at end of file
diff --git a/maintenance/sqlite/archives/searchindex-no-fts.sql b/maintenance/sqlite/archives/searchindex-no-fts.sql
new file mode 100644
index 00000000..bc014b3d
--- /dev/null
+++ b/maintenance/sqlite/archives/searchindex-no-fts.sql
@@ -0,0 +1,25 @@
+-- Searchindex table definition for cases when no full-text search SQLite module is present
+-- (currently, only FTS3 is supported).
+-- Use it if you are moving your database from environment with FTS support
+-- to environment without it.
+
+DROP TABLE IF EXISTS /*_*/searchindex;
+
+-- These are pieces of FTS3-enabled searchindex
+DROP TABLE IF EXISTS /*_*/searchindex_content;
+DROP TABLE IF EXISTS /*_*/searchindex_segdir;
+DROP TABLE IF EXISTS /*_*/searchindex_segments;
+
+CREATE TABLE /*_*/searchindex (
+ -- Key to page_id
+ -- Disabled, instead we use the built-in rowid column
+ -- si_page INTEGER NOT NULL,
+
+ -- Munged version of title
+ si_title TEXT,
+
+ -- Munged version of body text
+ si_text TEXT
+);
+
+DELETE FROM /*_*/updatelog WHERE ul_key='fts3'; \ No newline at end of file
diff --git a/maintenance/stats.php b/maintenance/stats.php
index 00f79ded..e20c345a 100644
--- a/maintenance/stats.php
+++ b/maintenance/stats.php
@@ -1,58 +1,89 @@
<?php
/**
- * Show statistics from memcached
+ * Show statistics from the cache
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
*
- * @file
* @ingroup Maintenance
*/
-require_once('commandLine.inc');
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( get_class( $wgMemc ) == 'FakeMemCachedClient' ) {
- die("You are running FakeMemCachedClient, I can not provide any statistics.\n");
-}
-$session = intval($wgMemc->get(wfMemcKey('stats','request_with_session')));
-$noSession = intval($wgMemc->get(wfMemcKey('stats','request_without_session')));
-$total = $session + $noSession;
-if ( $total == 0 ) {
- die("You either have no stats or memcached isn't running. Aborting.\n");
+class CacheStats extends Maintenance {
+
+ public function __construct() {
+ $this->mDescription = "Show statistics from the cache";
+ }
+
+ public function execute() {
+ global $wgMemc;
+
+ // Can't do stats if
+ if( get_class( $wgMemc ) == 'FakeMemCachedClient' ) {
+ $this->error( "You are running FakeMemCachedClient, I can not provide any statistics.", true );
+ }
+ $session = intval($wgMemc->get(wfMemcKey('stats','request_with_session')));
+ $noSession = intval($wgMemc->get(wfMemcKey('stats','request_without_session')));
+ $total = $session + $noSession;
+ if ( $total == 0 ) {
+ $this->error( "You either have no stats or the cache isn't running. Aborting.", true );
+ }
+ $this->output( "Requests\n" );
+ $this->output( sprintf( "with session: %-10d %6.2f%%\n", $session, $session/$total*100 ) );
+ $this->output( sprintf( "without session: %-10d %6.2f%%\n", $noSession, $noSession/$total*100 ) );
+ $this->output( sprintf( "total: %-10d %6.2f%%\n", $total, 100 ) );
+
+
+ $this->output( "\nParser cache\n" );
+ $hits = intval($wgMemc->get(wfMemcKey('stats','pcache_hit')));
+ $invalid = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_invalid')));
+ $expired = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_expired')));
+ $absent = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_absent')));
+ $stub = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_stub')));
+ $total = $hits + $invalid + $expired + $absent + $stub;
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 ) );
+ $this->output( sprintf( "invalid: %-10d %6.2f%%\n", $invalid, $invalid/$total*100 ) );
+ $this->output( sprintf( "expired: %-10d %6.2f%%\n", $expired, $expired/$total*100 ) );
+ $this->output( sprintf( "absent: %-10d %6.2f%%\n", $absent, $absent/$total*100 ) );
+ $this->output( sprintf( "stub threshold: %-10d %6.2f%%\n", $stub, $stub/$total*100 ) );
+ $this->output( sprintf( "total: %-10d %6.2f%%\n", $total, 100 ) );
+
+ $hits = intval($wgMemc->get(wfMemcKey('stats','image_cache_hit')));
+ $misses = intval($wgMemc->get(wfMemcKey('stats','image_cache_miss')));
+ $updates = intval($wgMemc->get(wfMemcKey('stats','image_cache_update')));
+ $total = $hits + $misses;
+ $this->output("\nImage cache\n");
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 ) );
+ $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses/$total*100 ) );
+ $this->output( sprintf( "updates: %-10d\n", $updates ) );
+
+ $hits = intval($wgMemc->get(wfMemcKey('stats','diff_cache_hit')));
+ $misses = intval($wgMemc->get(wfMemcKey('stats','diff_cache_miss')));
+ $uncacheable = intval($wgMemc->get(wfMemcKey('stats','diff_uncacheable')));
+ $total = $hits + $misses + $uncacheable;
+ $this->output("\nDiff cache\n");
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 ) );
+ $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses/$total*100 ) );
+ $this->output( sprintf( "uncacheable: %-10d %6.2f%%\n", $uncacheable, $uncacheable/$total*100 ) );
+ }
}
-print "Requests\n";
-printf( "with session: %-10d %6.2f%%\n", $session, $session/$total*100 );
-printf( "without session: %-10d %6.2f%%\n", $noSession, $noSession/$total*100 );
-printf( "total: %-10d %6.2f%%\n", $total, 100 );
-
-
-print "\nParser cache\n";
-$hits = intval($wgMemc->get(wfMemcKey('stats','pcache_hit')));
-$invalid = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_invalid')));
-$expired = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_expired')));
-$absent = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_absent')));
-$stub = intval($wgMemc->get(wfMemcKey('stats','pcache_miss_stub')));
-$total = $hits + $invalid + $expired + $absent + $stub;
-printf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 );
-printf( "invalid: %-10d %6.2f%%\n", $invalid, $invalid/$total*100 );
-printf( "expired: %-10d %6.2f%%\n", $expired, $expired/$total*100 );
-printf( "absent: %-10d %6.2f%%\n", $absent, $absent/$total*100 );
-printf( "stub threshold: %-10d %6.2f%%\n", $stub, $stub/$total*100 );
-printf( "total: %-10d %6.2f%%\n", $total, 100 );
-
-$hits = intval($wgMemc->get(wfMemcKey('stats','image_cache_hit')));
-$misses = intval($wgMemc->get(wfMemcKey('stats','image_cache_miss')));
-$updates = intval($wgMemc->get(wfMemcKey('stats','image_cache_update')));
-$total = $hits + $misses;
-print("\nImage cache\n");
-printf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 );
-printf( "misses: %-10d %6.2f%%\n", $misses, $misses/$total*100 );
-printf( "updates: %-10d\n", $updates );
-
-$hits = intval($wgMemc->get(wfMemcKey('stats','diff_cache_hit')));
-$misses = intval($wgMemc->get(wfMemcKey('stats','diff_cache_miss')));
-$uncacheable = intval($wgMemc->get(wfMemcKey('stats','diff_uncacheable')));
-$total = $hits + $misses + $uncacheable;
-print("\nDiff cache\n");
-printf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 );
-printf( "misses: %-10d %6.2f%%\n", $misses, $misses/$total*100 );
-printf( "uncacheable: %-10d %6.2f%%\n", $uncacheable, $uncacheable/$total*100 );
+
+$maintClass = "CacheStats";
+require_once( DO_MAINTENANCE );
+
+
diff --git a/maintenance/storage/compressOld.inc b/maintenance/storage/compressOld.inc
index fb8cc422..981cfda5 100644
--- a/maintenance/storage/compressOld.inc
+++ b/maintenance/storage/compressOld.inc
@@ -57,7 +57,8 @@ function compressPage( $row, $extdb ) {
'old_text' => $compress
), array( /* WHERE */
'old_id' => $row->old_id
- ), $fname, 'LIMIT 1'
+ ), $fname,
+ array( 'LIMIT' => 1 )
);
return true;
}
@@ -104,7 +105,8 @@ function compressWithConcat( $startId, $maxChunkSize, $beginDate,
# overwriting bulk storage concat rows. Don't compress external references, because
# the script doesn't yet delete rows from external storage.
$conds = array(
- "old_flags NOT LIKE '%object%' AND old_flags NOT LIKE '%external%'");
+ 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'object', $dbr->anyString() ) . ' AND old_flags NOT '
+ . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ) );
if ( $beginDate ) {
if ( !preg_match( '/^\d{14}$/', $beginDate ) ) {
diff --git a/maintenance/storage/compressOld.php b/maintenance/storage/compressOld.php
index 6f8b48eb..7ff102a5 100644
--- a/maintenance/storage/compressOld.php
+++ b/maintenance/storage/compressOld.php
@@ -68,6 +68,6 @@ if ( $success ) {
print "Done.\n";
}
-exit();
+exit(0);
diff --git a/maintenance/storage/dumpRev.php b/maintenance/storage/dumpRev.php
index c84d8aa5..95404244 100644
--- a/maintenance/storage/dumpRev.php
+++ b/maintenance/storage/dumpRev.php
@@ -1,56 +1,79 @@
<?php
/**
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance ExternalStorage
*/
-require_once( dirname(__FILE__) . '/../commandLine.inc' );
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
-$wgDebugLogFile = '/dev/stdout';
-
-
-$dbr = wfGetDB( DB_SLAVE );
-$row = $dbr->selectRow(
- array( 'text', 'revision' ),
- array( 'old_flags', 'old_text' ),
- array( 'old_id=rev_text_id', 'rev_id' => $args[0] )
-);
-if ( !$row ) {
- print "Row not found\n";
- exit;
-}
+class DumpRev extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addArg( 'rev-id', 'Revision ID', true );
+ }
-$flags = explode( ',', $row->old_flags );
-$text = $row->old_text;
-if ( in_array( 'external', $flags ) ) {
- print "External $text\n";
- if ( preg_match( '!^DB://(\w+)/(\w+)/(\w+)$!', $text, $m ) ) {
- $es = ExternalStore::getStoreObject( 'DB' );
- $blob = $es->fetchBlob( $m[1], $m[2], $m[3] );
- if ( strtolower( get_class( $blob ) ) == 'concatenatedgziphistoryblob' ) {
- print "Found external CGZ\n";
- $blob->uncompress();
- print "Items: (" . implode( ', ', array_keys( $blob->mItems ) ) . ")\n";
- $text = $blob->getItem( $m[3] );
+ public function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $row = $dbr->selectRow(
+ array( 'text', 'revision' ),
+ array( 'old_flags', 'old_text' ),
+ array( 'old_id=rev_text_id', 'rev_id' => $this->getArg() )
+ );
+ if ( !$row ) {
+ $this->error( "Row not found", true );
+ }
+
+ $flags = explode( ',', $row->old_flags );
+ $text = $row->old_text;
+ if ( in_array( 'external', $flags ) ) {
+ $this->output( "External $text\n" );
+ if ( preg_match( '!^DB://(\w+)/(\w+)/(\w+)$!', $text, $m ) ) {
+ $es = ExternalStore::getStoreObject( 'DB' );
+ $blob = $es->fetchBlob( $m[1], $m[2], $m[3] );
+ if ( strtolower( get_class( $blob ) ) == 'concatenatedgziphistoryblob' ) {
+ $this->output( "Found external CGZ\n" );
+ $blob->uncompress();
+ $this->output( "Items: (" . implode( ', ', array_keys( $blob->mItems ) ) . ")\n" );
+ $text = $blob->getItem( $m[3] );
+ } else {
+ $this->output( "CGZ expected at $text, got " . gettype( $blob ) . "\n" );
+ $text = $blob;
+ }
+ } else {
+ $this->output( "External plain $text\n" );
+ $text = ExternalStore::fetchFromURL( $text );
+ }
+ }
+ if ( in_array( 'gzip', $flags ) ) {
+ $text = gzinflate( $text );
+ }
+ if ( in_array( 'object', $flags ) ) {
+ $obj = unserialize( $text );
+ $text = $obj->getText();
+ }
+
+ if ( is_object( $text ) ) {
+ $this->error( "Unexpectedly got object of type: " . get_class( $text ) );
} else {
- print "CGZ expected at $text, got " . gettype( $blob ) . "\n";
- $text = $blob;
+ $this->output( "Text length: " . strlen( $text ) ."\n" );
+ $this->output( substr( $text, 0, 100 ) . "\n" );
}
- } else {
- print "External plain $text\n";
- $text = ExternalStore::fetchFromURL( $text );
}
}
-if ( in_array( 'gzip', $flags ) ) {
- $text = gzinflate( $text );
-}
-if ( in_array( 'object', $flags ) ) {
- $text = unserialize( $text );
-}
-if ( is_object( $text ) ) {
- print "Unexpectedly got object of type: " . get_class( $text ) . "\n";
-} else {
- print "Text length: " . strlen( $text ) ."\n";
- print substr( $text, 0, 100 ) . "\n";
-}
+$maintClass = "DumpRev";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/storage/fixBug20757.php b/maintenance/storage/fixBug20757.php
new file mode 100644
index 00000000..922d4725
--- /dev/null
+++ b/maintenance/storage/fixBug20757.php
@@ -0,0 +1,314 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
+
+class FixBug20757 extends Maintenance {
+ var $batchSize = 10000;
+ var $mapCache = array();
+ var $mapCacheSize = 0;
+ var $maxMapCacheSize = 1000000;
+
+ function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Script to fix bug 20757 assuming that blob_tracking is intact';
+ $this->addOption( 'dry-run', 'Report only' );
+ $this->addOption( 'start', 'old_id to start at', false, true );
+ }
+
+ function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dryRun = $this->getOption( 'dry-run' );
+ if ( $dryRun ) {
+ print "Dry run only.\n";
+ }
+
+ $startId = $this->getOption( 'start', 0 );
+ $numGood = 0;
+ $numFixed = 0;
+ $numBad = 0;
+
+ $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
+
+ while ( true ) {
+ print "ID: $startId / $totalRevs\r";
+
+ $res = $dbr->select(
+ 'text',
+ array( 'old_id', 'old_flags', 'old_text' ),
+ array(
+ 'old_id > ' . intval( $startId ),
+ 'old_flags LIKE \'%object%\' AND old_flags NOT LIKE \'%external%\'',
+ 'LOWER(CONVERT(LEFT(old_text,22) USING latin1)) = \'o:15:"historyblobstub"\'',
+ ),
+ __METHOD__,
+ array(
+ 'ORDER BY' => 'old_id',
+ 'LIMIT' => $this->batchSize,
+ )
+ );
+
+ if ( !$res->numRows() ) {
+ break;
+ }
+
+ $secondaryIds = array();
+ $stubs = array();
+
+ foreach ( $res as $row ) {
+ $startId = $row->old_id;
+
+ // Basic sanity checks
+ $obj = unserialize( $row->old_text );
+ if ( $obj === false ) {
+ print "{$row->old_id}: unrecoverable: cannot unserialize\n";
+ ++$numBad;
+ continue;
+ }
+
+ if ( !is_object( $obj ) ) {
+ print "{$row->old_id}: unrecoverable: unserialized to type " .
+ gettype( $obj ) . ", possible double-serialization\n";
+ ++$numBad;
+ continue;
+ }
+
+ if ( strtolower( get_class( $obj ) ) !== 'historyblobstub' ) {
+ print "{$row->old_id}: unrecoverable: unexpected object class " .
+ get_class( $obj ) . "\n";
+ ++$numBad;
+ continue;
+ }
+
+ // Process flags
+ $flags = explode( ',', $row->old_flags );
+ if ( in_array( 'utf-8', $flags ) || in_array( 'utf8', $flags ) ) {
+ $legacyEncoding = false;
+ } else {
+ $legacyEncoding = true;
+ }
+
+ // Queue the stub for future batch processing
+ $id = intval( $obj->mOldId );
+ $secondaryIds[] = $id;
+ $stubs[$row->old_id] = array(
+ 'legacyEncoding' => $legacyEncoding,
+ 'secondaryId' => $id,
+ 'hash' => $obj->mHash,
+ );
+ }
+
+ $secondaryIds = array_unique( $secondaryIds );
+
+ if ( !count( $secondaryIds ) ) {
+ continue;
+ }
+
+ // Run the batch query on blob_tracking
+ $res = $dbr->select(
+ 'blob_tracking',
+ '*',
+ array(
+ 'bt_text_id' => $secondaryIds,
+ ),
+ __METHOD__
+ );
+ $trackedBlobs = array();
+ foreach ( $res as $row ) {
+ $trackedBlobs[$row->bt_text_id] = $row;
+ }
+
+ // Process the stubs
+ $stubsToFix = array();
+ foreach ( $stubs as $primaryId => $stub ) {
+ $secondaryId = $stub['secondaryId'];
+ if ( !isset( $trackedBlobs[$secondaryId] ) ) {
+ // No tracked blob. Work out what went wrong
+ $secondaryRow = $dbr->selectRow(
+ 'text',
+ array( 'old_flags', 'old_text' ),
+ array( 'old_id' => $secondaryId ),
+ __METHOD__
+ );
+ if ( !$secondaryRow ) {
+ print "$primaryId: unrecoverable: secondary row is missing\n";
+ ++$numBad;
+ } elseif ( $this->isUnbrokenStub( $stub, $secondaryRow ) ) {
+ // Not broken yet, and not in the tracked clusters so it won't get
+ // broken by the current RCT run.
+ ++$numGood;
+ } elseif ( strpos( $secondaryRow->old_flags, 'external' ) !== false ) {
+ print "$primaryId: unrecoverable: secondary gone to {$secondaryRow->old_text}\n";
+ ++$numBad;
+ } else {
+ print "$primaryId: unrecoverable: miscellaneous corruption of secondary row\n";
+ ++$numBad;
+ }
+ unset( $stubs[$primaryId] );
+ continue;
+ }
+ $trackRow = $trackedBlobs[$secondaryId];
+
+ // Check that the specified text really is available in the tracked source row
+ $url = "DB://{$trackRow->bt_cluster}/{$trackRow->bt_blob_id}/{$stub['hash']}";
+ $text = ExternalStore::fetchFromURL( $url );
+ if ( $text === false ) {
+ print "$primaryId: unrecoverable: source text missing\n";
+ ++$numBad;
+ unset( $stubs[$primaryId] );
+ continue;
+ }
+ if ( md5( $text ) !== $stub['hash'] ) {
+ print "$primaryId: unrecoverable: content hashes do not match\n";
+ ++$numBad;
+ unset( $stubs[$primaryId] );
+ continue;
+ }
+
+ // Find the page_id and rev_id
+ // The page is probably the same as the page of the secondary row
+ $pageId = intval( $trackRow->bt_page );
+ if ( !$pageId ) {
+ $revId = $pageId = 0;
+ } else {
+ $revId = $this->findTextIdInPage( $pageId, $primaryId );
+ if ( !$revId ) {
+ // Actually an orphan
+ $pageId = $revId = 0;
+ }
+ }
+
+ $newFlags = $stub['legacyEncoding'] ? 'external' : 'external,utf-8';
+
+ if ( !$dryRun ) {
+ // Reset the text row to point to the original copy
+ $dbw->begin();
+ $dbw->update(
+ 'text',
+ // SET
+ array(
+ 'old_flags' => $newFlags,
+ 'old_text' => $url
+ ),
+ // WHERE
+ array( 'old_id' => $primaryId ),
+ __METHOD__
+ );
+
+ // Add a blob_tracking row so that the new reference can be recompressed
+ // without needing to run trackBlobs.php again
+ $dbw->insert( 'blob_tracking',
+ array(
+ 'bt_page' => $pageId,
+ 'bt_rev_id' => $revId,
+ 'bt_text_id' => $primaryId,
+ 'bt_cluster' => $trackRow->bt_cluster,
+ 'bt_blob_id' => $trackRow->bt_blob_id,
+ 'bt_cgz_hash' => $stub['hash'],
+ 'bt_new_url' => null,
+ 'bt_moved' => 0,
+ ),
+ __METHOD__
+ );
+ $dbw->commit();
+ $this->waitForSlaves();
+ }
+
+ print "$primaryId: resolved to $url\n";
+ ++$numFixed;
+ }
+ }
+
+ print "\n";
+ print "Fixed: $numFixed\n";
+ print "Unrecoverable: $numBad\n";
+ print "Good stubs: $numGood\n";
+ }
+
+ function waitForSlaves() {
+ static $iteration = 0;
+ ++$iteration;
+ if ( ++$iteration > 50 == 0 ) {
+ wfWaitForSlaves( 5 );
+ $iteration = 0;
+ }
+ }
+
+ function findTextIdInPage( $pageId, $textId ) {
+ $ids = $this->getRevTextMap( $pageId );
+ if ( !isset( $ids[$textId] ) ) {
+ return null;
+ } else {
+ return $ids[$textId];
+ }
+ }
+
+ function getRevTextMap( $pageId ) {
+ if ( !isset( $this->mapCache[$pageId] ) ) {
+ // Limit cache size
+ while ( $this->mapCacheSize > $this->maxMapCacheSize ) {
+ $key = key( $this->mapCache );
+ $this->mapCacheSize -= count( $this->mapCache[$key] );
+ unset( $this->mapCache[$key] );
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $map = array();
+ $res = $dbr->select( 'revision',
+ array( 'rev_id', 'rev_text_id' ),
+ array( 'rev_page' => $pageId ),
+ __METHOD__
+ );
+ foreach ( $res as $row ) {
+ $map[$row->rev_text_id] = $row->rev_id;
+ }
+ $this->mapCache[$pageId] = $map;
+ $this->mapCacheSize += count( $map );
+ }
+ return $this->mapCache[$pageId];
+ }
+
+ /**
+ * This is based on part of HistoryBlobStub::getText().
+ * Determine if the text can be retrieved from the row in the normal way.
+ */
+ function isUnbrokenStub( $stub, $secondaryRow ) {
+ $flags = explode( ',', $secondaryRow->old_flags );
+ $text = $secondaryRow->old_text;
+ if( in_array( 'external', $flags ) ) {
+ $url = $text;
+ @list( /* $proto */ , $path ) = explode( '://', $url, 2 );
+ if ( $path == "" ) {
+ return false;
+ }
+ $text = ExternalStore::fetchFromUrl( $url );
+ }
+ if( !in_array( 'object', $flags ) ) {
+ return false;
+ }
+
+ if( in_array( 'gzip', $flags ) ) {
+ $obj = unserialize( gzinflate( $text ) );
+ } else {
+ $obj = unserialize( $text );
+ }
+
+ if( !is_object( $obj ) ) {
+ // Correct for old double-serialization bug.
+ $obj = unserialize( $obj );
+ }
+
+ if ( !is_object( $obj ) ) {
+ return false;
+ }
+
+ $obj->uncompress();
+ $text = $obj->getItem( $stub['hash'] );
+ return $text !== false;
+ }
+}
+
+$maintClass = 'FixBug20757';
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/storage/make-blobs b/maintenance/storage/make-blobs
index 9eb7e83e..36cf9ced 100755
--- a/maintenance/storage/make-blobs
+++ b/maintenance/storage/make-blobs
@@ -1,11 +1,16 @@
#!/bin/bash
-if [ X$2 == X ];then
- echo 'Usage: make-blobs <server> <db>'
+if [ -z $2 ];then
+ echo 'Usage: make-blobs <server> <db> [<table name>]'
exit 1
fi
+if [ -z $3 ]; then
+ table=blobs
+else
+ table=$3
+fi
echo "CREATE DATABASE $2" | mysql -u wikiadmin -p`wikiadmin_pass` -h $1 && \
-mysql -u wikiadmin -p`wikiadmin_pass` -h $1 $2 < blobs.sql
+sed "s/blobs\>/$table/" blobs.sql | mysql -u wikiadmin -p`wikiadmin_pass` -h $1 $2
diff --git a/maintenance/storage/moveToExternal.php b/maintenance/storage/moveToExternal.php
index a8b2f93b..dc11856a 100644
--- a/maintenance/storage/moveToExternal.php
+++ b/maintenance/storage/moveToExternal.php
@@ -62,7 +62,7 @@ function moveToExternal( $cluster, $maxID, $minID = 1 ) {
$res = $dbr->select( 'text', array( 'old_id', 'old_flags', 'old_text' ),
array(
"old_id BETWEEN $blockStart AND $blockEnd",
- "old_flags NOT LIKE '%external%'",
+ 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ),
), $fname );
while ( $row = $dbr->fetchObject( $res ) ) {
# Resolve stubs
diff --git a/maintenance/storage/orphanStats.php b/maintenance/storage/orphanStats.php
index afea815e..63f9025b 100644
--- a/maintenance/storage/orphanStats.php
+++ b/maintenance/storage/orphanStats.php
@@ -2,21 +2,43 @@
/**
* Show some statistics on the blob_orphans table, created with trackBlobs.php
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance ExternalStorage
*/
-require_once( dirname(__FILE__).'/../commandLine.inc' );
+require_once( dirname(__FILE__) . '/../Maintenance.php' );
-$stats = new OrphanStats;
-$stats->execute();
+class OrphanStats extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "how some statistics on the blob_orphans table, created with trackBlobs.php";
+ }
-class OrphanStats {
- function getDB( $cluster ) {
+ private function getDB( $cluster ) {
$lb = wfGetLBFactory()->getExternalLB( $cluster );
return $lb->getConnection( DB_SLAVE );
}
- function execute() {
+ public function execute() {
$extDBs = array();
$dbr = wfGetDB( DB_SLAVE );
+ if( !$dbr->tableExists( 'blob_orphans' ) ) {
+ $this->error( "blob_orphans doesn't seem to exist, need to run trackBlobs.php first", true );
+ }
$res = $dbr->select( 'blob_orphans', '*', false, __METHOD__ );
$num = 0;
@@ -36,11 +58,14 @@ class OrphanStats {
}
unset( $res );
- echo "Number of orphans: $num\n";
+ $this->output( "Number of orphans: $num\n" );
if ( $num > 0 ) {
- echo "Average size: " . round( $totalSize / $num, 0 ) . " bytes\n" .
+ $this->output( "Average size: " . round( $totalSize / $num, 0 ) . " bytes\n" .
"Max size: $maxSize\n" .
- "Number of unique texts: " . count( $hashes ) . "\n";
+ "Number of unique texts: " . count( $hashes ) . "\n" );
}
}
}
+
+$maintClass = "OrphanStats";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/storage/recompressTracked.php b/maintenance/storage/recompressTracked.php
index d8d2e4ef..e43dbe5c 100644
--- a/maintenance/storage/recompressTracked.php
+++ b/maintenance/storage/recompressTracked.php
@@ -31,11 +31,13 @@ class RecompressTracked {
var $copyOnly = false;
var $isChild = false;
var $slaveId = false;
+ var $noCount = false;
var $debugLog, $infoLog, $criticalLog;
var $store;
static $optionsWithArgs = array( 'procs', 'slave-id', 'debug-log', 'info-log', 'critical-log' );
static $cmdLineOptionMap = array(
+ 'no-count' => 'noCount',
'procs' => 'numProcs',
'copy-only' => 'copyOnly',
'child' => 'isChild',
@@ -259,12 +261,16 @@ class RecompressTracked {
$dbr = wfGetDB( DB_SLAVE );
$i = 0;
$startId = 0;
- $numPages = $dbr->selectField( 'blob_tracking',
- 'COUNT(DISTINCT bt_page)',
- # A condition is required so that this query uses the index
- array( 'bt_moved' => 0 ),
- __METHOD__
- );
+ if ( $this->noCount ) {
+ $numPages = '[unknown]';
+ } else {
+ $numPages = $dbr->selectField( 'blob_tracking',
+ 'COUNT(DISTINCT bt_page)',
+ # A condition is required so that this query uses the index
+ array( 'bt_moved' => 0 ),
+ __METHOD__
+ );
+ }
if ( $this->copyOnly ) {
$this->info( "Copying pages..." );
} else {
@@ -310,7 +316,7 @@ class RecompressTracked {
if ( $current == $end || $this->numBatches >= $this->reportingInterval ) {
$this->numBatches = 0;
$this->info( "$label: $current / $end" );
- wfWaitForSlaves( 5 );
+ $this->waitForSlaves();
}
}
@@ -321,12 +327,16 @@ class RecompressTracked {
$dbr = wfGetDB( DB_SLAVE );
$startId = 0;
$i = 0;
- $numOrphans = $dbr->selectField( 'blob_tracking',
- 'COUNT(DISTINCT bt_text_id)',
- array( 'bt_moved' => 0, 'bt_page' => 0 ),
- __METHOD__ );
- if ( !$numOrphans ) {
- return;
+ if ( $this->noCount ) {
+ $numOrphans = '[unknown]';
+ } else {
+ $numOrphans = $dbr->selectField( 'blob_tracking',
+ 'COUNT(DISTINCT bt_text_id)',
+ array( 'bt_moved' => 0, 'bt_page' => 0 ),
+ __METHOD__ );
+ if ( !$numOrphans ) {
+ return;
+ }
}
if ( $this->copyOnly ) {
$this->info( "Copying orphans..." );
@@ -404,7 +414,7 @@ class RecompressTracked {
case 'quit':
return;
}
- wfWaitForSlaves( 5 );
+ $this->waitForSlaves();
}
}
@@ -469,6 +479,7 @@ class RecompressTracked {
$this->debug( "$titleText: committing blob with " . $trx->getSize() . " items" );
$trx->commit();
$trx = new CgzCopyTransaction( $this, $this->pageBlobClass );
+ $this->waitForSlaves();
}
}
$startId = $row->bt_text_id;
@@ -545,6 +556,9 @@ class RecompressTracked {
$this->debug( 'Incomplete: ' . $res->numRows() . ' rows' );
foreach ( $res as $row ) {
$this->moveTextRow( $row->bt_text_id, $row->bt_new_url );
+ if ( $row->bt_text_id % 10 == 0 ) {
+ $this->waitForSlaves();
+ }
}
$startId = $row->bt_text_id;
}
@@ -604,11 +618,26 @@ class RecompressTracked {
$this->debug( "[orphan]: committing blob with " . $trx->getSize() . " rows" );
$trx->commit();
$trx = new CgzCopyTransaction( $this, $this->orphanBlobClass );
+ $this->waitForSlaves();
}
}
$this->debug( "[orphan]: committing blob with " . $trx->getSize() . " rows" );
$trx->commit();
}
+
+ /**
+ * Wait for slaves (quietly)
+ */
+ function waitForSlaves() {
+ $lb = wfGetLB();
+ while ( true ) {
+ list( $host, $maxLag ) = $lb->getMaxLag();
+ if ( $maxLag < 2 ) {
+ break;
+ }
+ sleep( 5 );
+ }
+ }
}
/**
diff --git a/maintenance/storage/resolveStubs.php b/maintenance/storage/resolveStubs.php
index 3db9e480..346151e9 100644
--- a/maintenance/storage/resolveStubs.php
+++ b/maintenance/storage/resolveStubs.php
@@ -35,11 +35,9 @@ function resolveStubs() {
$res = $dbr->select( 'text', array( 'old_id', 'old_text', 'old_flags' ),
"old_id>=$start AND old_id<=$end " .
- # Using a more restrictive flag set for now, until I do some more analysis -- TS
- #"AND old_flags LIKE '%object%' AND old_flags NOT LIKE '%external%' ".
-
- "AND old_flags='object' " .
- "AND LOWER(LEFT(old_text,22)) = 'O:15:\"historyblobstub\"'", $fname );
+ "AND old_flags LIKE '%object%' AND old_flags NOT LIKE '%external%' ".
+ 'AND LOWER(CONVERT(LEFT(old_text,22) USING latin1)) = \'o:15:"historyblobstub"\'',
+ $fname );
while ( $row = $dbr->fetchObject( $res ) ) {
resolveStub( $row->old_id, $row->old_text, $row->old_flags );
}
@@ -69,7 +67,7 @@ function resolveStub( $id, $stubText, $flags ) {
# Get the (maybe) external row
$externalRow = $dbr->selectRow( 'text', array( 'old_text' ),
- array( 'old_id' => $stub->mOldId, "old_flags LIKE '%external%'" ),
+ array( 'old_id' => $stub->mOldId, 'old_flags' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ) ),
$fname
);
diff --git a/maintenance/storage/storageTypeStats.php b/maintenance/storage/storageTypeStats.php
new file mode 100644
index 00000000..85858620
--- /dev/null
+++ b/maintenance/storage/storageTypeStats.php
@@ -0,0 +1,98 @@
+<?php
+
+require_once( dirname(__FILE__).'/../Maintenance.php' );
+
+class StorageTypeStats extends Maintenance {
+ function execute() {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $endId = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
+ if ( !$endId ) {
+ echo "No text rows!\n";
+ exit( 1 );
+ }
+
+ $rangeStart = 0;
+ $binSize = intval( pow( 10, floor( log10( $endId ) ) - 3 ) );
+ if ( $binSize < 100 ) {
+ $binSize = 100;
+ }
+ echo "Using bin size of $binSize\n";
+
+ $stats = array();
+
+ $classSql = <<<SQL
+ IF(old_flags LIKE '%external%',
+ IF(old_text REGEXP '^DB://[[:alnum:]]+/[0-9]+/[0-9a-f]{32}$',
+ 'CGZ pointer',
+ IF(old_text REGEXP '^DB://[[:alnum:]]+/[0-9]+/[0-9]{1,6}$',
+ 'DHB pointer',
+ IF(old_text REGEXP '^DB://[[:alnum:]]+/[0-9]+$',
+ 'simple pointer',
+ 'UNKNOWN pointer'
+ )
+ )
+ ),
+ IF(old_flags LIKE '%object%',
+ TRIM('"' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(old_text, ':', 3), ':', -1)),
+ '[none]'
+ )
+ )
+SQL;
+
+ for ( $rangeStart = 0; $rangeStart < $endId; $rangeStart += $binSize ) {
+ if ( $rangeStart / $binSize % 10 == 0 ) {
+ echo "$rangeStart\r";
+ }
+ $res = $dbr->select(
+ 'text',
+ array(
+ 'old_flags',
+ "$classSql AS class",
+ 'COUNT(*) as count',
+ ),
+ array(
+ 'old_id >= ' . intval( $rangeStart ),
+ 'old_id < ' . intval( $rangeStart + $binSize )
+ ),
+ __METHOD__,
+ array( 'GROUP BY' => 'old_flags, class' )
+ );
+
+ foreach ( $res as $row ) {
+ $flags = $row->old_flags;
+ if ( $flags === '' ) {
+ $flags = '[none]';
+ }
+ $class = $row->class;
+ $count = $row->count;
+ if ( !isset( $stats[$flags][$class] ) ) {
+ $stats[$flags][$class] = array(
+ 'count' => 0,
+ 'first' => $rangeStart,
+ 'last' => 0
+ );
+ }
+ $entry =& $stats[$flags][$class];
+ $entry['count'] += $count;
+ $entry['last'] = max( $entry['last'], $rangeStart + $binSize );
+ unset( $entry );
+ }
+ }
+ echo "\n\n";
+
+ $format = "%-29s %-39s %-19s %-29s\n";
+ printf( $format, "Flags", "Class", "Count", "old_id range" );
+ echo str_repeat( '-', 120 ) . "\n";
+ foreach ( $stats as $flags => $flagStats ) {
+ foreach ( $flagStats as $class => $entry ) {
+ printf( $format, $flags, $class, $entry['count'],
+ sprintf( "%-13d - %-13d", $entry['first'], $entry['last'] ) );
+ }
+ }
+ }
+}
+
+$maintClass = 'StorageTypeStats';
+require_once( DO_MAINTENANCE );
+
diff --git a/maintenance/storage/trackBlobs.php b/maintenance/storage/trackBlobs.php
index 0f25fb94..63327d53 100644
--- a/maintenance/storage/trackBlobs.php
+++ b/maintenance/storage/trackBlobs.php
@@ -12,6 +12,7 @@ if ( count( $args ) < 1 ) {
}
$tracker = new TrackBlobs( $args );
$tracker->run();
+echo "All done.\n";
class TrackBlobs {
var $clusters, $textClause;
@@ -59,7 +60,7 @@ class TrackBlobs {
if ( $this->textClause != '' ) {
$this->textClause .= ' OR ';
}
- $this->textClause .= 'old_text LIKE ' . $dbr->addQuotes( $dbr->escapeLike( "DB://$cluster/" ) . '%' );
+ $this->textClause .= 'old_text' . $dbr->buildLike( "DB://$cluster/", $dbr->anyString() );
}
}
return $this->textClause;
@@ -72,7 +73,7 @@ class TrackBlobs {
return array(
'cluster' => $m[1],
'id' => intval( $m[2] ),
- 'hash' => isset( $m[3] ) ? $m[2] : null
+ 'hash' => isset( $m[3] ) ? $m[3] : null
);
}
@@ -98,7 +99,7 @@ class TrackBlobs {
'rev_id > ' . $dbr->addQuotes( $startId ),
'rev_text_id=old_id',
$textClause,
- "old_flags LIKE '%external%'",
+ 'old_flags ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ),
),
__METHOD__,
array(
@@ -174,7 +175,7 @@ class TrackBlobs {
array(
'old_id>' . $dbr->addQuotes( $startId ),
$textClause,
- "old_flags LIKE '%external%'",
+ 'old_flags ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ),
'bt_text_id IS NULL'
),
__METHOD__,
@@ -263,6 +264,10 @@ class TrackBlobs {
if ( is_null( $table ) ) {
$table = 'blobs';
}
+ if ( !$extDB->tableExists( $table ) ) {
+ echo "No blobs table on cluster $cluster\n";
+ continue;
+ }
$startId = 0;
$batchesDone = 0;
$actualBlobs = gmp_init( 0 );
@@ -300,6 +305,7 @@ class TrackBlobs {
// Traverse the orphan list
$insertBatch = array();
$id = 0;
+ $numOrphans = 0;
while ( true ) {
$id = gmp_scan1( $orphans, $id );
if ( $id == -1 ) {
@@ -309,12 +315,18 @@ class TrackBlobs {
'bo_cluster' => $cluster,
'bo_blob_id' => $id
);
+ if ( count( $insertBatch ) > $this->batchSize ) {
+ $dbw->insert( 'blob_orphans', $insertBatch, __METHOD__ );
+ $insertBatch = array();
+ }
+
++$id;
+ ++$numOrphans;
}
-
- // Insert the batch
- echo "Found " . count( $insertBatch ) . " orphan(s) in $cluster\n";
- $dbw->insert( 'blob_orphans', $insertBatch, __METHOD__ );
+ if ( $insertBatch ) {
+ $dbw->insert( 'blob_orphans', $insertBatch, __METHOD__ );
+ }
+ echo "Found $numOrphans orphan(s) in $cluster\n";
}
}
}
diff --git a/maintenance/tables.sql b/maintenance/tables.sql
index 3b1e8eb7..0809f4b6 100644
--- a/maintenance/tables.sql
+++ b/maintenance/tables.sql
@@ -86,6 +86,8 @@ CREATE TABLE /*_*/user (
-- Newline-separated list of name=value defining the user
-- preferences
+ -- Now obsolete in favour of user_properties table;
+ -- old values will be migrated from here transparently.
user_options blob NOT NULL,
-- This is a timestamp which is updated when a user
@@ -160,8 +162,10 @@ CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
+--
-- Stores notifications of user talk page changes, for the display
-- of the "you have new messages" box
+--
CREATE TABLE /*_*/user_newtalk (
-- Key to user.user_id
user_id int NOT NULL default 0,
@@ -179,6 +183,29 @@ CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
--
+-- User preferences and perhaps other fun stuff. :)
+-- Replaces the old user.user_options blob, with a couple nice properties:
+--
+-- 1) We only store non-default settings, so changes to the defauls
+-- are now reflected for everybody, not just new accounts.
+-- 2) We can more easily do bulk lookups, statistics, or modifications of
+-- saved options since it's a sane table structure.
+--
+CREATE TABLE /*_*/user_properties (
+ -- Foreign key to user.user_id
+ up_user int NOT NULL,
+
+ -- Name of the option being saved. This is indexed for bulk lookup.
+ up_property varbinary(32) NOT NULL,
+
+ -- Property value as a string.
+ up_value blob
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/user_properties_user_property ON /*_*/user_properties (up_user,up_property);
+CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property);
+
+--
-- Core of the wiki: each page has an entry here which identifies
-- it by title and contains some essential metadata.
--
@@ -548,6 +575,20 @@ CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+--
+-- Track external user accounts, if ExternalAuth is used
+--
+CREATE TABLE /*_*/external_user (
+ -- Foreign key to user_id
+ eu_local_id int unsigned NOT NULL PRIMARY KEY,
+
+ -- Some opaque identifier provided by the external database
+ eu_external_id varchar(255) binary NOT NULL
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
+
+
--
-- Track interlanguage links
--
@@ -723,7 +764,7 @@ CREATE TABLE /*_*/image (
-- the minor parts are not required to adher to any standard
-- but should be consistent throughout the database
-- see http://www.iana.org/assignments/media-types/
- img_minor_mime varbinary(32) NOT NULL default "unknown",
+ img_minor_mime varbinary(100) NOT NULL default "unknown",
-- Description field as entered by the uploader.
-- This is displayed in image upload history and logs.
@@ -775,7 +816,7 @@ CREATE TABLE /*_*/oldimage (
oi_metadata mediumblob NOT NULL,
oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
- oi_minor_mime varbinary(32) NOT NULL default "unknown",
+ oi_minor_mime varbinary(100) NOT NULL default "unknown",
oi_deleted tinyint unsigned NOT NULL default 0,
oi_sha1 varbinary(32) NOT NULL default ''
) /*$wgDBTableOptions*/;
@@ -825,7 +866,7 @@ CREATE TABLE /*_*/filearchive (
fa_bits int default 0,
fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") default "unknown",
- fa_minor_mime varbinary(32) default "unknown",
+ fa_minor_mime varbinary(100) default "unknown",
fa_description tinyblob,
fa_user int unsigned default 0,
fa_user_text varchar(255) binary,
@@ -1054,7 +1095,7 @@ CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime);
CREATE TABLE /*_*/transcache (
tc_url varbinary(255) NOT NULL,
tc_contents text,
- tc_time int NOT NULL
+ tc_time binary(14) NOT NULL
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url);
@@ -1067,8 +1108,8 @@ CREATE TABLE /*_*/logging (
-- Symbolic keys for the general log type and the action type
-- within the log. The output format will be controlled by the
-- action field, but only the type controls categorization.
- log_type varbinary(10) NOT NULL default '',
- log_action varbinary(10) NOT NULL default '',
+ log_type varbinary(32) NOT NULL default '',
+ log_action varbinary(32) NOT NULL default '',
-- Timestamp. Duh.
log_timestamp binary(14) NOT NULL default '19700101000000',
@@ -1076,10 +1117,14 @@ CREATE TABLE /*_*/logging (
-- The user who performed this action; key to user_id
log_user int unsigned NOT NULL default 0,
+ -- Name of the user who performed this action
+ log_user_text varchar(255) binary NOT NULL default '',
+
-- Key to the page affected. Where a user is the target,
-- this will point to the user page.
log_namespace int NOT NULL default 0,
log_title varchar(255) binary NOT NULL default '',
+ log_page int unsigned NULL,
-- Freeform text. Interpreted as edit history comments.
log_comment varchar(255) NOT NULL default '',
@@ -1095,6 +1140,20 @@ CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
+
+
+CREATE TABLE /*_*/log_search (
+ -- The type of ID (rev ID, log ID, rev timestamp, username)
+ ls_field varbinary(32) NOT NULL,
+ -- The value of the ID
+ ls_value varchar(255) NOT NULL,
+ -- Key to log_id
+ ls_log_id int unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id);
+CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
CREATE TABLE /*_*/trackbacks (
@@ -1126,7 +1185,7 @@ CREATE TABLE /*_*/job (
job_params blob NOT NULL
) /*$wgDBTableOptions*/;
-CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title);
+CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
-- Details of updates to cached special pages
@@ -1152,7 +1211,9 @@ CREATE TABLE /*_*/redirect (
-- and deletions may refer to different page records as time
-- goes by.
rd_namespace int NOT NULL default 0,
- rd_title varchar(255) binary NOT NULL default ''
+ rd_title varchar(255) binary NOT NULL default '',
+ rd_interwiki varchar(32) default NULL,
+ rd_fragment varchar(255) binary default NULL
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
@@ -1237,10 +1298,15 @@ CREATE TABLE /*_*/updatelog (
-- A table to track tags for revisions, logs and recent changes.
CREATE TABLE /*_*/change_tag (
+ -- RCID for the change
ct_rc_id int NULL,
+ -- LOGID for the change
ct_log_id int NULL,
+ -- REVID for the change
ct_rev_id int NULL,
+ -- Tag applied
ct_tag varchar(255) NOT NULL,
+ -- Parameters for the tag, presently unused
ct_params blob NULL
) /*$wgDBTableOptions*/;
@@ -1251,11 +1317,16 @@ CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT that only works on MySQL 4.1+
+-- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
+-- that only works on MySQL 4.1+
CREATE TABLE /*_*/tag_summary (
+ -- RCID for the change
ts_rc_id int NULL,
+ -- LOGID for the change
ts_log_id int NULL,
+ -- REVID for the change
ts_rev_id int NULL,
+ -- Comma-separated list of tags
ts_tags blob NOT NULL
) /*$wgDBTableOptions*/;
@@ -1268,5 +1339,15 @@ CREATE TABLE /*_*/valid_tag (
vt_tag varchar(255) NOT NULL PRIMARY KEY
) /*$wgDBTableOptions*/;
+-- Table for storing localisation data
+CREATE TABLE /*_*/l10n_cache (
+ -- Language code
+ lc_lang varbinary(32) NOT NULL,
+ -- Cache key
+ lc_key varchar(255) NOT NULL,
+ -- Value
+ lc_value mediumblob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
-- vim: sw=2 sts=2 et
diff --git a/maintenance/testRunner.ora.sql b/maintenance/testRunner.ora.sql
new file mode 100644
index 00000000..6e3e1b7c
--- /dev/null
+++ b/maintenance/testRunner.ora.sql
@@ -0,0 +1,37 @@
+--
+-- Optional tables for parserTests recording mode
+-- With --record option, success data will be saved to these tables,
+-- and comparisons of what's changed from the previous run will be
+-- displayed at the end of each run.
+--
+-- defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}';
+define mw_prefix='{$wgDBprefix}';
+
+DROP TABLE &mw_prefix.testitem CASCADE CONSTRAINTS;
+DROP TABLE &mw_prefix.testrun CASCADE CONSTRAINTS;
+
+CREATE SEQUENCE testrun_tr_id_seq;
+CREATE TABLE &mw_prefix.testrun (
+ tr_id NUMBER NOT NULL,
+ tr_date DATE,
+ tr_mw_version BLOB,
+ tr_php_version BLOB,
+ tr_db_version BLOB,
+ tr_uname BLOB,
+);
+ALTER TABLE &mw_prefix.testrun ADD CONSTRAINT &mw_prefix.testrun_pk PRIMARY KEY (tr_id);
+CREATE OR REPLACE TRIGGER &mw_prefix.testrun_bir
+BEFORE UPDATE FOR EACH ROW
+ON &mw_prefix.testrun
+BEGIN
+ SELECT testrun_tr_id_seq.NEXTVAL into :NEW.tr_id FROM dual;
+END;
+
+CREATE TABLE /*$wgDBprefix*/testitem (
+ ti_run NUMBER NOT NULL REFERENCES &mw_prefix.testrun (tr_id) ON DELETE CASCADE,
+ ti_name VARCHAR22(255),
+ ti_success NUMBER(1)
+);
+CREATE UNIQUE INDEX &mw_prefix.testitem_u01 ON &mw_prefix.testitem (ti_run, ti_name);
+CREATE UNIQUE INDEX &mw_prefix.testitem_u01 ON &mw_prefix.testitem (ti_run, ti_success);
+
diff --git a/tests/.svnignore b/maintenance/tests/.svnignore
index 20cb61e9..20cb61e9 100644
--- a/tests/.svnignore
+++ b/maintenance/tests/.svnignore
diff --git a/maintenance/tests/ApiSetup.php b/maintenance/tests/ApiSetup.php
new file mode 100644
index 00000000..549d8aef
--- /dev/null
+++ b/maintenance/tests/ApiSetup.php
@@ -0,0 +1,39 @@
+<?php
+
+abstract class ApiSetup extends PHPUnit_Framework_TestCase {
+ protected static $userName;
+ protected static $passWord;
+ protected static $user;
+ protected static $apiUrl;
+
+ function setup() {
+ global $wgServerName, $wgServer, $wgContLang, $wgAuth, $wgScriptPath,
+ $wgScriptExtension, $wgMemc, $wgRequest;
+
+ self::$apiUrl = $wgServer.$wgScriptPath."/api".$wgScriptExtension;
+
+ $wgMemc = new FakeMemCachedClient;
+ $wgContLang = Language::factory( 'en' );
+ $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
+ $wgRequest = new FauxRequest(array());
+ self::setupUser();
+ }
+
+ static function setupUser() {
+ if ( self::$user == NULL ) {
+ self::$userName = "Useruser";
+ self::$passWord = User::randomPassword();
+
+ self::$user = User::newFromName(self::$userName);
+ if ( !self::$user->getID() ) {
+ self::$user = User::createNew(self::$userName, array(
+ "password" => self::$passWord,
+ "email" => "test@example.com",
+ "real_name" => "Test User"));
+ } else {
+ self::$user->setPassword(self::$passWord);
+ }
+ self::$user->saveSettings();
+ }
+ }
+}
diff --git a/maintenance/tests/ApiTest.php b/maintenance/tests/ApiTest.php
new file mode 100644
index 00000000..d098b1a2
--- /dev/null
+++ b/maintenance/tests/ApiTest.php
@@ -0,0 +1,164 @@
+<?php
+
+require_once( "ApiSetup.php" );
+
+class MockApi extends ApiBase {
+ public function execute() {}
+ public function getVersion() {}
+
+ public function __construct() {}
+
+ public function getAllowedParams() {
+ $params = array(
+ 'filename' => null,
+ 'enablechunks' => false,
+ 'sessionkey' => null,
+ );
+ }
+
+
+}
+
+
+class ApiTest extends ApiSetup {
+
+ function setup() {
+ parent::setup();
+ }
+
+ function testRequireOnlyOneParameterDefault() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter(array("filename" => "foo.txt",
+ "enablechunks" => false), "filename", "enablechunks"));
+ }
+
+ /**
+ * @expectedException UsageException
+ */
+ function testRequireOnlyOneParameterZero() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter(array("filename" => "foo.txt",
+ "enablechunks" => 0), "filename", "enablechunks"));
+ }
+
+ /**
+ * @expectedException UsageException
+ */
+ function testRequireOnlyOneParameterTrue() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter(array("filename" => "foo.txt",
+ "enablechunks" => true), "filename", "enablechunks"));
+ }
+
+ function testApi() {
+ if(!isset($wgServername) || !isset($wgServer)) {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ /* Haven't thought about test ordering yet -- but this depends on HttpTest.php */
+ $resp = Http::get( self::$apiUrl . "?format=xml" );
+
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $resp );
+ $this->assertNotType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ }
+
+ function testApiLoginNoName() {
+ if(!isset($wgServername) || !isset($wgServer)) {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ $resp = Http::post( self::$apiUrl . "?action=login&format=xml",
+ array( "postData" => array(
+ "lgname" => "",
+ "lgpassword" => self::$passWord ) ) );
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $resp );
+ $this->assertNotType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $a = $sxe->login[0]->attributes()->result;
+ $this->assertEquals( ' result="NoName"', $a->asXML() );
+ }
+
+ function testApiLoginBadPass() {
+ if(!isset($wgServername) || !isset($wgServer)) {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ $resp = Http::post( self::$apiUrl . "?action=login&format=xml",
+ array( "postData" => array(
+ "lgname" => self::$userName,
+ "lgpassword" => "bad" ) ) );
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $resp );
+ $this->assertNotType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $a = $sxe->login[0]->attributes()->result;
+ $this->assertEquals( ' result="WrongPass"', $a->asXML() );
+ }
+
+ function testApiLoginGoodPass() {
+ if(!isset($wgServername) || !isset($wgServer)) {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ $resp = Http::post( self::$apiUrl . "?action=login&format=xml",
+ array( "postData" => array(
+ "lgname" => self::$userName,
+ "lgpassword" => self::$passWord ) ) );
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $resp );
+ $this->assertNotType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $a = $sxe->login[0]->attributes()->result;
+ $this->assertEquals( ' result="Success"', $a->asXML() );
+ }
+
+ function testApiGotCookie() {
+ global $wgScriptPath, $wgServerName;
+
+ if(!isset($wgServername) || !isset($wgServer)) {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ $req = HttpRequest::factory( self::$apiUrl . "?action=login&format=xml",
+ array( "method" => "POST",
+ "postData" => array( "lgname" => self::$userName,
+ "lgpassword" => self::$passWord ) ) );
+ $req->execute();
+ $cj = $req->getCookieJar();
+ $this->assertRegexp( '/_session=[^;]*; .*UserID=[0-9]*; .*UserName=' . self::$userName . '; .*Token=/',
+ $cj->serializeToHttpRequest( $wgScriptPath, $wgServerName ) );
+
+
+ return $cj;
+ }
+
+ /**
+ * @depends testApiGotCookie
+ */
+ function testApiListPages(CookieJar $cj) {
+ $this->markTestIncomplete("Not done with this yet");
+
+ if($wgServerName == "localhost" || $wgServer == "http://localhost") {
+ $this->markTestIncomplete('This test needs $wgServerName and $wgServer to '.
+ 'be set in LocalSettings.php');
+ }
+ $req = HttpRequest::factory( self::$apiUrl . "?action=query&format=xml&prop=revisions&".
+ "titles=Main%20Page&rvprop=timestamp|user|comment|content" );
+ $req->setCookieJar($cj);
+ $req->execute();
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $req->getContent() );
+ $this->assertNotType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $a = $sxe->query[0]->pages[0]->page[0]->attributes();
+ }
+}
diff --git a/maintenance/tests/CdbTest.php b/maintenance/tests/CdbTest.php
new file mode 100644
index 00000000..444229e7
--- /dev/null
+++ b/maintenance/tests/CdbTest.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * Test the CDB reader/writer
+ */
+
+class CdbTest extends PHPUnit_Framework_TestCase {
+
+ public function setup() {
+ if ( !CdbReader::haveExtension() ) {
+ $this->markTestIncomplete( 'This test requires native CDB support to be present.' );
+ }
+ }
+
+ public function testCdb() {
+ $w1 = new CdbWriter_PHP( 'php.cdb' );
+ $w2 = new CdbWriter_DBA( 'dba.cdb' );
+
+ $data = array();
+ for ( $i = 0; $i < 1000; $i++ ) {
+ $key = $this->randomString();
+ $value = $this->randomString();
+ $w1->set( $key, $value );
+ $w2->set( $key, $value );
+
+ if ( !isset( $data[$key] ) ) {
+ $data[$key] = $value;
+ }
+ }
+
+ $w1->close();
+ $w2->close();
+
+ $this->assertEquals(
+ md5_file( 'dba.cdb' ),
+ md5_file( 'php.cdb' ),
+ 'same hash'
+ );
+
+ $r1 = new CdbReader_PHP( 'php.cdb' );
+ $r2 = new CdbReader_DBA( 'dba.cdb' );
+
+ foreach ( $data as $key => $value ) {
+ if ( $key === '' ) {
+ // Known bug
+ continue;
+ }
+ $v1 = $r1->get( $key );
+ $v2 = $r2->get( $key );
+
+ $v1 = $v1 === false ? '(not found)' : $v1;
+ $v2 = $v2 === false ? '(not found)' : $v2;
+
+ #cdbAssert( 'Mismatch', $key, $v1, $v2 );
+ $this->cdbAssert( "PHP error", $key, $v1, $value );
+ $this->cdbAssert( "DBA error", $key, $v2, $value );
+ }
+
+ unlink( 'dba.cdb' );
+ unlink( 'php.cdb' );
+ }
+
+ private function randomString() {
+ $len = mt_rand( 0, 10 );
+ $s = '';
+ for ( $j = 0; $j < $len; $j++ ) {
+ $s .= chr( mt_rand( 0, 255 ) );
+ }
+ return $s;
+ }
+
+ private function cdbAssert( $msg, $key, $v1, $v2 ) {
+ $this->assertEquals(
+ $v2,
+ $v1,
+ $msg . ', k=' . bin2hex( $key )
+ );
+ }
+}
diff --git a/maintenance/tests/DatabaseSqliteTest.php b/maintenance/tests/DatabaseSqliteTest.php
new file mode 100644
index 00000000..011ef798
--- /dev/null
+++ b/maintenance/tests/DatabaseSqliteTest.php
@@ -0,0 +1,57 @@
+<?php
+
+class MockDatabaseSqlite extends DatabaseSqliteStandalone {
+ var $lastQuery;
+
+ function __construct( ) {
+ parent::__construct( '' );
+ }
+
+ function query( $sql, $fname = '', $tempIgnore = false ) {
+ $this->lastQuery = $sql;
+ return true;
+ }
+
+ function replaceVars( $s ) {
+ return parent::replaceVars( $s );
+ }
+}
+
+class DatabaseSqliteTest extends PHPUnit_Framework_TestCase {
+ var $db;
+
+ function setup() {
+ if ( !extension_loaded( 'pdo_sqlite' ) ) {
+ $this->markTestIncomplete( 'No SQLite support detected' );
+ }
+ $this->db = new MockDatabaseSqlite();
+ }
+
+ function replaceVars( $sql ) {
+ // normalize spacing to hide implementation details
+ return preg_replace( '/\s+/', ' ', $this->db->replaceVars( $sql ) );
+ }
+
+ function testReplaceVars() {
+ $this->assertEquals( 'foo', $this->replaceVars( 'foo' ), "Don't break anything accidentally" );
+
+ $this->assertEquals( "CREATE TABLE /**/foo (foo_key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
+ . "foo_name TEXT NOT NULL DEFAULT '', foo_int INTEGER, foo_int2 INTEGER );",
+ $this->replaceVars( "CREATE TABLE /**/foo (foo_key int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ foo_name varchar(255) binary NOT NULL DEFAULT '', foo_int tinyint( 8 ), foo_int2 int(16) ) ENGINE=MyISAM;" )
+ );
+
+ $this->assertEquals( "CREATE TABLE foo ( foo_binary1 BLOB, foo_binary2 BLOB );",
+ $this->replaceVars( "CREATE TABLE foo ( foo_binary1 binary(16), foo_binary2 varbinary(32) );" )
+ );
+
+ $this->assertEquals( "CREATE TABLE text ( text_foo TEXT );",
+ $this->replaceVars( "CREATE TABLE text ( text_foo tinytext );" ),
+ 'Table name changed'
+ );
+
+ $this->assertEquals( "ALTER TABLE foo ADD COLUMN foo_bar INTEGER DEFAULT 42",
+ $this->replaceVars( "ALTER TABLE foo\nADD COLUMN foo_bar int(10) unsigned DEFAULT 42")
+ );
+ }
+} \ No newline at end of file
diff --git a/tests/DatabaseTest.php b/maintenance/tests/DatabaseTest.php
index db46ad60..aa50de2e 100644
--- a/tests/DatabaseTest.php
+++ b/maintenance/tests/DatabaseTest.php
@@ -8,9 +8,11 @@ class DatabaseTest extends PHPUnit_Framework_TestCase {
}
function testAddQuotesNull() {
- $this->assertEquals(
- 'NULL',
- $this->db->addQuotes( NULL ) );
+ $check = "NULL";
+ if ( $this->db->getType() === 'sqlite' ) {
+ $check = "''";
+ }
+ $this->assertEquals( $check, $this->db->addQuotes( null ) );
}
function testAddQuotesInt() {
@@ -35,8 +37,12 @@ class DatabaseTest extends PHPUnit_Framework_TestCase {
}
function testAddQuotesStringQuote() {
+ $check = "'string''s cause trouble'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "'string\'s cause trouble'";
+ }
$this->assertEquals(
- "'string\'s cause trouble'",
+ $check,
$this->db->addQuotes( "string's cause trouble" ) );
}
@@ -52,18 +58,24 @@ class DatabaseTest extends PHPUnit_Framework_TestCase {
$sql = $this->db->fillPrepared(
'SELECT * FROM cur WHERE cur_namespace=? AND cur_title=?',
array( 4, "Snicker's_paradox" ) );
- $this->assertEquals(
- "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker\'s_paradox'",
- $sql);
+
+ $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker''s_paradox'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker\'s_paradox'";
+ }
+ $this->assertEquals( $check, $sql );
}
function testFillPreparedBang() {
$sql = $this->db->fillPrepared(
'SELECT user_id FROM ! WHERE user_name=?',
array( '"user"', "Slash's Dot" ) );
- $this->assertEquals(
- "SELECT user_id FROM \"user\" WHERE user_name='Slash\'s Dot'",
- $sql);
+
+ $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash''s Dot'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash\'s Dot'";
+ }
+ $this->assertEquals( $check, $sql );
}
function testFillPreparedRaw() {
diff --git a/tests/GlobalTest.php b/maintenance/tests/GlobalTest.php
index ec694241..ec694241 100644
--- a/tests/GlobalTest.php
+++ b/maintenance/tests/GlobalTest.php
diff --git a/maintenance/tests/HttpTest.php b/maintenance/tests/HttpTest.php
new file mode 100644
index 00000000..83734910
--- /dev/null
+++ b/maintenance/tests/HttpTest.php
@@ -0,0 +1,567 @@
+<?php
+
+class MockCookie extends Cookie {
+ public function canServeDomain($arg) { return parent::canServeDomain($arg); }
+ public function canServePath($arg) { return parent::canServePath($arg); }
+ public function isUnExpired() { return parent::isUnExpired(); }
+}
+
+class HttpTest extends PhpUnit_Framework_TestCase {
+ static $content;
+ static $headers;
+ static $has_curl;
+ static $has_fopen;
+ static $has_proxy = false;
+ static $proxy = "http://hulk:8080/";
+ var $test_geturl = array(
+ "http://www.example.com/",
+ "http://pecl.php.net/feeds/pkg_apc.rss",
+ "http://toolserver.org/~jan/poll/dev/main.php?page=wiki_output&id=3",
+ "http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw",
+ "http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&format=php",
+ );
+ var $test_requesturl = array( "http://en.wikipedia.org/wiki/Special:Export/User:MarkAHershberger" );
+
+ var $test_posturl = array( "http://www.comp.leeds.ac.uk/cgi-bin/Perl/environment-example" => "review=test" );
+
+ function setup() {
+ putenv("http_proxy"); /* Remove any proxy env var, so curl doesn't get confused */
+ if ( is_array( self::$content ) ) {
+ return;
+ }
+ self::$has_curl = function_exists( 'curl_init' );
+ self::$has_fopen = wfIniGetBool( 'allow_url_fopen' );
+
+ if ( !file_exists("/usr/bin/curl") ) {
+ $this->markTestIncomplete("This test requires the curl binary at /usr/bin/curl. If you have curl, please file a bug on this test, or, better yet, provide a patch.");
+ }
+
+ $content = tempnam( wfTempDir(), "" );
+ $headers = tempnam( wfTempDir(), "" );
+ if ( !$content && !$headers ) {
+ die( "Couldn't create temp file!" );
+ }
+
+ // This probably isn't the best test for a proxy, but it works on my system!
+ system("curl -0 -o $content -s ".self::$proxy);
+ $out = file_get_contents( $content );
+ if( $out ) {
+ self::$has_proxy = true;
+ }
+
+ /* Maybe use wget instead of curl here ... just to use a different codebase? */
+ foreach ( $this->test_geturl as $u ) {
+ system( "curl -0 -s -D $headers '$u' -o $content" );
+ self::$content["GET $u"] = file_get_contents( $content );
+ self::$headers["GET $u"] = file_get_contents( $headers );
+ }
+ foreach ( $this->test_requesturl as $u ) {
+ system( "curl -0 -s -X POST -H 'Content-Length: 0' -D $headers '$u' -o $content" );
+ self::$content["POST $u"] = file_get_contents( $content );
+ self::$headers["POST $u"] = file_get_contents( $headers );
+ }
+ foreach ( $this->test_posturl as $u => $postData ) {
+ system( "curl -0 -s -X POST -d '$postData' -D $headers '$u' -o $content" );
+ self::$content["POST $u => $postData"] = file_get_contents( $content );
+ self::$headers["POST $u => $postData"] = file_get_contents( $headers );
+ }
+ unlink( $content );
+ unlink( $headers );
+ }
+
+
+ function testInstantiation() {
+ Http::$httpEngine = false;
+
+ $r = HttpRequest::factory("http://www.example.com/");
+ if ( self::$has_curl ) {
+ $this->assertThat($r, $this->isInstanceOf( 'CurlHttpRequest' ));
+ } else {
+ $this->assertThat($r, $this->isInstanceOf( 'PhpHttpRequest' ));
+ }
+ unset($r);
+
+ if( !self::$has_fopen ) {
+ $this->setExpectedException( 'MWException' );
+ }
+ Http::$httpEngine = 'php';
+ $r = HttpRequest::factory("http://www.example.com/");
+ $this->assertThat($r, $this->isInstanceOf( 'PhpHttpRequest' ));
+ unset($r);
+
+ if( !self::$has_curl ) {
+ $this->setExpectedException( 'MWException' );
+ }
+ Http::$httpEngine = 'curl';
+ $r = HttpRequest::factory("http://www.example.com/");
+ if( self::$has_curl ) {
+ $this->assertThat($r, $this->isInstanceOf( 'CurlHttpRequest' ));
+ }
+ }
+
+ function runHTTPFailureChecks() {
+ // Each of the following requests should result in a failure.
+
+ $timeout = 1;
+ $start_time = time();
+ $r = HTTP::get( "http://www.example.com:1/", $timeout);
+ $end_time = time();
+ $this->assertLessThan($timeout+2, $end_time - $start_time,
+ "Request took less than {$timeout}s via ".Http::$httpEngine);
+ $this->assertEquals($r, false, "false -- what we get on error from Http::get()");
+
+ $r = HTTP::get( "http://www.example.com/this-file-does-not-exist", $timeout);
+ $this->assertFalse($r, "False on 404s");
+
+
+ $r = HttpRequest::factory( "http://www.example.com/this-file-does-not-exist" );
+ $er = $r->execute();
+ if ( is_a($r, 'PhpHttpRequest') && version_compare( '5.2.10', phpversion(), '>' ) ) {
+ $this->assertRegexp("/HTTP request failed/", $er->getWikiText());
+ } else {
+ $this->assertRegexp("/404 Not Found/", $er->getWikiText());
+ }
+ }
+
+ function testFailureDefault() {
+ Http::$httpEngine = false;
+ self::runHTTPFailureChecks();
+ }
+
+ function testFailurePhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ self::runHTTPFailureChecks();
+ }
+
+ function testFailureCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ self::runHTTPFailureChecks();
+ }
+
+ /* ./phase3/includes/Import.php:1108: $data = Http::request( $method, $url ); */
+ /* ./includes/Import.php:1124: $link = Title::newFromText( "$interwiki:Special:Export/$page" ); */
+ /* ./includes/Import.php:1134: return ImportStreamSource::newFromURL( $url, "POST" ); */
+ function runHTTPRequests($proxy=null) {
+ $opt = array();
+
+ if($proxy) {
+ $opt['proxy'] = $proxy;
+ } elseif( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ /* no postData here because the only request I could find in code so far didn't have any */
+ foreach ( $this->test_requesturl as $u ) {
+ $r = Http::request( "POST", $u, $opt );
+ $this->assertEquals( self::$content["POST $u"], "$r", "POST $u with ".Http::$httpEngine );
+ }
+ }
+
+ function testRequestDefault() {
+ Http::$httpEngine = false;
+ self::runHTTPRequests();
+ }
+
+ function testRequestPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ self::runHTTPRequests();
+ }
+
+ function testRequestCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ self::runHTTPRequests();
+ }
+
+ /* ./extensions/SpamBlacklist/SpamBlacklist_body.php:164: $httpText = Http::get( $fileName ); */
+ /* ./extensions/ApiSVGProxy/ApiSVGProxy.body.php:44: $contents = Http::get( $file->getFullUrl() ); */
+ /* ./extensions/BookInformation/drivers/IsbnDb.php:24: if( ( $xml = Http::get( $uri ) ) !== false ) { */
+ /* ./extensions/BookInformation/drivers/Amazon.php:23: if( ( $xml = Http::get( $uri ) ) !== false ) { */
+ /* ./extensions/TitleBlacklist/TitleBlacklist.list.php:217: $result = Http::get( $url ); */
+ /* ./extensions/TSPoll/TSPoll.php:68: $get_server = Http::get( 'http://toolserver.org/~jan/poll/dev/main.php?page=wiki_output&id='.$id ); */
+ /* ./extensions/TSPoll/TSPoll.php:70: $get_server = Http::get( 'http://toolserver.org/~jan/poll/main.php?page=wiki_output&id='.$id ); */
+ /* ./extensions/DoubleWiki/DoubleWiki.php:56: $translation = Http::get( $url.$sep.'action=render' ); */
+ /* ./extensions/ExternalPages/ExternalPages_body.php:177: $serializedText = Http::get( $this->mPageURL ); */
+ /* ./extensions/Translate/utils/TranslationHelpers.php:143: $suggestions = Http::get( $url, $timeout ); */
+ /* ./extensions/Translate/SpecialImportTranslations.php:169: $filedata = Http::get( $url ); ; */
+ /* ./extensions/Translate/TranslateEditAddons.php:338: $suggestions = Http::get( $url, $timeout ); */
+ /* ./extensions/SecurePoll/includes/user/Auth.php:283: $value = Http::get( $url, 20, $curlParams ); */
+ /* ./extensions/DumpHTML/dumpHTML.inc:778: $contents = Http::get( $url ); */
+ /* ./extensions/DumpHTML/dumpHTML.inc:1298: $contents = Http::get( $sourceUrl ); */
+ /* ./extensions/DumpHTML/dumpHTML.inc:1373: $contents = Http::get( $sourceUrl ); */
+ /* ./phase3/maintenance/rebuildInterwiki.inc:101: $intermap = Http::get( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 ); */
+ /* ./phase3/maintenance/findhooks.php:98: $allhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&cmlimit=500&format=php' ); */
+ /* ./phase3/maintenance/findhooks.php:109: $oldhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Removed_hooks&cmlimit=500&format=php' ); */
+ /* ./phase3/maintenance/dumpInterwiki.inc:95: $intermap = Http::get( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 ); */
+ /* ./phase3/includes/parser/Parser.php:3204: $text = Http::get($url); */
+ /* ./phase3/includes/filerepo/ForeignAPIRepo.php:131: $data = Http::get( $url ); */
+ /* ./phase3/includes/filerepo/ForeignAPIRepo.php:205: $thumb = Http::get( $foreignUrl ); */
+ /* ./phase3/includes/filerepo/File.php:1105: $res = Http::get( $renderUrl ); */
+ /* ./phase3/includes/GlobalFunctions.php:2760: * @deprecated Use Http::get() instead */
+ /* ./phase3/includes/GlobalFunctions.php:2764: return Http::get( $url ); */
+ /* ./phase3/includes/ExternalStoreHttp.php:18: $ret = Http::get( $url ); */
+ /* ./phase3/includes/Import.php:357: $data = Http::get( $src ); */
+ /* ./extensions/ExternalData/ED_Utils.php:291: return Http::get( $url, 'default', array(CURLOPT_SSL_VERIFYPEER => false) ); */
+ /* ./extensions/ExternalData/ED_Utils.php:293: return Http::get( $url ); */
+ /* ./extensions/ExternalData/ED_Utils.php:306: $page = Http::get( $url, 'default', array(CURLOPT_SSL_VERIFYPEER => false) ); */
+ /* ./extensions/ExternalData/ED_Utils.php:308: $page = Http::get( $url ); */
+ /* ./extensions/CodeReview/backend/Subversion.php:320: $blob = Http::get( $target, $this->mTimeout ); */
+ /* ./extensions/AmazonPlus/AmazonPlus.php:214: $this->response = Http::get( $urlstr ); */
+ /* ./extensions/StaticWiki/StaticWiki.php:24: $text = Http::get( $url ) ; */
+ /* ./extensions/StaticWiki/StaticWiki.php:64: $history = Http::get ( $wgStaticWikiExternalSite . "index.php?title=" . urlencode ( $url_title ) . "&action=history" ) ; */
+ /* ./extensions/Configure/scripts/findSettings.php:126: $cont = Http::get( "http://www.mediawiki.org/w/index.php?title={$page}&action=raw" ); */
+ /* ./extensions/TorBlock/TorBlock.class.php:148: $data = Http::get( $url ); */
+ /* ./extensions/HoneypotIntegration/HoneypotIntegration.class.php:60: $data = Http::get( $wgHoneypotURLSource, 'default', */
+ /* ./extensions/SemanticForms/includes/SF_Utils.inc:378: $page_contents = Http::get($url); */
+ /* ./extensions/LocalisationUpdate/LocalisationUpdate.class.php:172: $basefilecontents = Http::get( $basefile ); */
+ /* ./extensions/APC/SpecialAPC.php:245: $rss = Http::get( 'http://pecl.php.net/feeds/pkg_apc.rss' ); */
+ /* ./extensions/Interlanguage/Interlanguage.php:56: $a = Http::get( $url ); */
+ /* ./extensions/MWSearch/MWSearch_body.php:492: $data = Http::get( $searchUrl, $wgLuceneSearchTimeout, $httpOpts); */
+ function runHTTPGets($proxy=null) {
+ $opt = array();
+
+ if($proxy) {
+ $opt['proxy'] = $proxy;
+ } elseif( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ foreach ( $this->test_geturl as $u ) {
+ $r = Http::get( $u, 30, $opt ); /* timeout of 30s */
+ $this->assertEquals( self::$content["GET $u"], "$r", "Get $u with ".Http::$httpEngine );
+ }
+ }
+
+ function testGetDefault() {
+ Http::$httpEngine = false;
+ self::runHTTPGets();
+ }
+
+ function testGetPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ self::runHTTPGets();
+ }
+
+ function testGetCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ self::runHTTPGets();
+ }
+
+ /* ./phase3/maintenance/parserTests.inc:1618: return Http::post( $url, array( 'postData' => wfArrayToCGI( $data ) ) ); */
+ function runHTTPPosts($proxy=null) {
+ $opt = array();
+
+ if($proxy) {
+ $opt['proxy'] = $proxy;
+ } elseif( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ foreach ( $this->test_posturl as $u => $postData ) {
+ $opt['postData'] = $postData;
+ $r = Http::post( $u, $opt );
+ $this->assertEquals( self::$content["POST $u => $postData"], "$r",
+ "POST $u (postData=$postData) with ".Http::$httpEngine );
+ }
+ }
+
+ function testPostDefault() {
+ Http::$httpEngine = false;
+ self::runHTTPPosts();
+ }
+
+ function testPostPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ self::runHTTPPosts();
+ }
+
+ function testPostCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ self::runHTTPPosts();
+ }
+
+ function runProxyRequests() {
+ if(!self::$has_proxy) {
+ $this->markTestIncomplete( "This test requires a proxy." );
+ }
+ self::runHTTPGets(self::$proxy);
+ self::runHTTPPosts(self::$proxy);
+ self::runHTTPRequests(self::$proxy);
+
+ // Set false here to do noProxy
+ self::runHTTPGets(false);
+ self::runHTTPPosts(false);
+ self::runHTTPRequests(false);
+ }
+
+ function testProxyDefault() {
+ Http::$httpEngine = false;
+ self::runProxyRequests();
+ }
+
+ function testProxyPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = 'php';
+ self::runProxyRequests();
+ }
+
+ function testProxyCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = 'curl';
+ self::runProxyRequests();
+ }
+
+ function testIsLocalUrl() {
+ }
+
+ /* ./extensions/DonationInterface/payflowpro_gateway/payflowpro_gateway.body.php:559: $user_agent = Http::userAgent(); */
+ function testUserAgent() {
+ }
+
+ function testIsValidUrl() {
+ }
+
+ function testValidateCookieDomain() {
+ $this->assertFalse( Cookie::validateCookieDomain( "co.uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( ".co.uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "gov.uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( ".gov.uk" ) );
+ $this->assertTrue( Cookie::validateCookieDomain( "supermarket.uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( ".uk" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "127.0.0." ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "127." ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "127.0.0.1." ) );
+ $this->assertTrue( Cookie::validateCookieDomain( "127.0.0.1" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "333.0.0.1" ) );
+ $this->assertTrue( Cookie::validateCookieDomain( "example.com" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "example.com." ) );
+ $this->assertTrue( Cookie::validateCookieDomain( ".example.com" ) );
+
+ $this->assertTrue( Cookie::validateCookieDomain( ".example.com", "www.example.com" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "example.com", "www.example.com" ) );
+ $this->assertTrue( Cookie::validateCookieDomain( "127.0.0.1", "127.0.0.1" ) );
+ $this->assertFalse( Cookie::validateCookieDomain( "127.0.0.1", "localhost" ) );
+
+
+ }
+
+ function testSetCooke() {
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "ac.th",
+ "path" => "/path/",
+ ) );
+ $this->assertFalse($c->canServeDomain("ac.th"));
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "example.com",
+ "path" => "/path/",
+ ) );
+
+ $this->assertTrue($c->canServeDomain("example.com"));
+ $this->assertFalse($c->canServeDomain("www.example.com"));
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ ) );
+
+ $this->assertFalse($c->canServeDomain("www.example.net"));
+ $this->assertFalse($c->canServeDomain("example.com"));
+ $this->assertTrue($c->canServeDomain("www.example.com"));
+
+ $this->assertFalse($c->canServePath("/"));
+ $this->assertFalse($c->canServePath("/bogus/path/"));
+ $this->assertFalse($c->canServePath("/path"));
+ $this->assertTrue($c->canServePath("/path/"));
+
+ $this->assertTrue($c->isUnExpired());
+
+ $this->assertEquals("", $c->serializeToHttpRequest("/path/", "www.example.net"));
+ $this->assertEquals("", $c->serializeToHttpRequest("/", "www.example.com"));
+ $this->assertEquals("name=value", $c->serializeToHttpRequest("/path/", "www.example.com"));
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "www.example.com",
+ "path" => "/path/",
+ ) );
+ $this->assertFalse($c->canServeDomain("example.com"));
+ $this->assertFalse($c->canServeDomain("www.example.net"));
+ $this->assertTrue($c->canServeDomain("www.example.com"));
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+ $this->assertFalse($c->isUnExpired());
+ $this->assertEquals("", $c->serializeToHttpRequest("/path/", "www.example.com"));
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ "expires" => "+1 day",
+ ) );
+ $this->assertTrue($c->isUnExpired());
+ $this->assertEquals("name=value", $c->serializeToHttpRequest("/path/", "www.example.com"));
+ }
+
+ function testCookieJarSetCookie() {
+ $cj = new CookieJar;
+ $cj->setCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ ) );
+ $cj->setCookie( "name2", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/sub",
+ ) );
+ $cj->setCookie( "name3", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/",
+ ) );
+ $cj->setCookie( "name4", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ ) );
+ $cj->setCookie( "name5", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+
+ $this->assertEquals("name4=value", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+ $this->assertEquals("name3=value", $cj->serializeToHttpRequest("/", "www.example.com"));
+ $this->assertEquals("name=value; name3=value", $cj->serializeToHttpRequest("/path/", "www.example.com"));
+
+ $cj->setCookie( "name5", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "+1 day",
+ ) );
+ $this->assertEquals("name4=value; name5=value", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+
+ $cj->setCookie( "name4", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+ $this->assertEquals("name5=value", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+ }
+
+ function testParseResponseHeader() {
+ $cj = new CookieJar;
+
+ $h[] = "Set-Cookie: name4=value; domain=.example.com; path=/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[0], "www.example.com" );
+ $this->assertEquals("name4=value", $cj->serializeToHttpRequest("/", "www.example.com"));
+
+ $h[] = "name4=value2; domain=.example.com; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[1], "www.example.com" );
+ $this->assertEquals("", $cj->serializeToHttpRequest("/", "www.example.com"));
+ $this->assertEquals("name4=value2", $cj->serializeToHttpRequest("/path/", "www.example.com"));
+
+ $h[] = "name5=value3; domain=.example.com; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[2], "www.example.com" );
+ $this->assertEquals("name4=value2; name5=value3", $cj->serializeToHttpRequest("/path/", "www.example.com"));
+
+ $h[] = "name6=value3; domain=.example.net; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[3], "www.example.com" );
+ $this->assertEquals("", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+
+ $h[] = "name6=value0; domain=.example.net; path=/path/; expires=Mon, 09-Dec-1999 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[4], "www.example.net" );
+ $this->assertEquals("", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+
+ $h[] = "name6=value4; domain=.example.net; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[5], "www.example.net" );
+ $this->assertEquals("name6=value4", $cj->serializeToHttpRequest("/path/", "www.example.net"));
+ }
+
+ function runCookieRequests() {
+ $r = HttpRequest::factory( "http://www.php.net/manual" );
+ $r->execute();
+
+ $jar = $r->getCookieJar();
+ $this->assertThat( $jar, $this->isInstanceOf( 'CookieJar' ) );
+
+ if ( is_a($r, 'PhpHttpRequest') && version_compare( '5.1.7', phpversion(), '>' ) ) {
+ $this->markTestSkipped( 'Redirection fails or crashes PHP on 5.1.6 and prior' );
+ }
+ $serialized = $jar->serializeToHttpRequest( "/search?q=test", "www.php.net" );
+ $this->assertRegExp( '/\bCOUNTRY=[^=;]+/', $serialized );
+ $this->assertRegExp( '/\bLAST_LANG=[^=;]+/', $serialized );
+ $this->assertEquals( '', $jar->serializeToHttpRequest( "/search?q=test", "www.php.com" ) );
+ }
+
+ function testCookieRequestDefault() {
+ Http::$httpEngine = false;
+ self::runCookieRequests();
+ }
+ function testCookieRequestPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = 'php';
+ self::runCookieRequests();
+ }
+ function testCookieRequestCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = 'curl';
+ self::runCookieRequests();
+ }
+} \ No newline at end of file
diff --git a/maintenance/tests/IPTest.php b/maintenance/tests/IPTest.php
new file mode 100644
index 00000000..9db77f72
--- /dev/null
+++ b/maintenance/tests/IPTest.php
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Tests for IP validity functions. Ported from /t/inc/IP.t by avar.
+ */
+
+class IPTest extends PHPUnit_Framework_TestCase {
+
+ public function testValidIPs() {
+ foreach ( range( 0, 255 ) as $i ) {
+ $a = sprintf( "%03d", $i );
+ $b = sprintf( "%02d", $i );
+ $c = sprintf( "%01d", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f.$f.$f.$f";
+ $this->assertTrue( IP::isValid( $ip ) , "$ip is a valid IPv4 address" );
+ }
+ }
+ }
+
+ public function testInvalidIPs() {
+ foreach ( range( 256, 999 ) as $i ) {
+ $a = sprintf( "%03d", $i );
+ $b = sprintf( "%02d", $i );
+ $c = sprintf( "%01d", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f.$f.$f.$f";
+ $this->assertFalse( IP::isValid( $ip ), "$ip is not a valid IPv4 address" );
+ }
+ }
+ }
+
+ public function testBogusIPs() {
+ $invalid = array(
+ 'www.xn--var-xla.net',
+ '216.17.184.G',
+ '216.17.184.1.',
+ '216.17.184',
+ '216.17.184.',
+ '256.17.184.1'
+ );
+ foreach ( $invalid as $i ) {
+ $this->assertFalse( IP::isValid( $i ), "$i is an invalid IPv4 address" );
+ }
+ }
+
+ public function testPrivateIPs() {
+ $private = array( '10.0.0.1', '172.16.0.1', '192.168.0.1' );
+ foreach ( $private as $p ) {
+ $this->assertFalse( IP::isPublic( $p ), "$p is not a public IP address" );
+ }
+ }
+}
diff --git a/tests/ImageFunctionsTest.php b/maintenance/tests/ImageFunctionsTest.php
index 9794a2a2..9794a2a2 100644
--- a/tests/ImageFunctionsTest.php
+++ b/maintenance/tests/ImageFunctionsTest.php
diff --git a/maintenance/tests/LanguageConverterTest.php b/maintenance/tests/LanguageConverterTest.php
new file mode 100644
index 00000000..22b396e7
--- /dev/null
+++ b/maintenance/tests/LanguageConverterTest.php
@@ -0,0 +1,148 @@
+<?php
+
+class LanguageConverterTest extends PHPUnit_Framework_TestCase {
+ protected $lang = null;
+ protected $lc = null;
+
+ function setUp() {
+ global $wgMemc, $wgRequest, $wgUser, $wgContLang;
+
+ $wgUser = new User;
+ $wgRequest = new FauxRequest(array());
+ $wgMemc = new FakeMemCachedClient;
+ $wgContLang = Language::factory( 'tg' );
+ $this->lang = new LanguageTest();
+ $this->lc = new TestConverter( $this->lang, 'tg',
+ array( 'tg', 'tg-latn' ) );
+ }
+
+ function tearDown() {
+ global $wgMemc;
+ unset($wgMemc);
+ unset($this->lc);
+ unset($this->lang);
+ }
+
+ function testGetPreferredVariantDefaults() {
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantHeaders() {
+ global $wgRequest;
+ $wgRequest->setHeader('Accept-Language', 'tg-latn');
+
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantHeaderWeight() {
+ global $wgRequest;
+ $wgRequest->setHeader('Accept-Language', 'tg;q=1');
+
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantHeaderWeight2() {
+ global $wgRequest;
+ $wgRequest->setHeader('Accept-Language', 'tg-latn;q=1');
+
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantHeaderMulti() {
+ global $wgRequest;
+ $wgRequest->setHeader('Accept-Language', 'en, tg-latn;q=1');
+
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantUserOption() {
+ global $wgUser;
+
+ $wgUser = new User;
+ $wgUser->setId(1);
+ $wgUser->setOption('variant', 'tg-latn');
+
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantHeaderUserVsUrl() {
+ global $wgRequest, $wgUser, $wgContLang;
+
+ $wgContLang = Language::factory( 'tg-latn' );
+ $wgRequest->setVal('variant', 'tg');
+ $wgUser = User::newFromId("admin");
+ $wgUser->setId(1);
+ $wgUser->setOption('variant', 'tg-latn'); // The user's data is ignored
+ // because the variant is set in the URL.
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(true, true));
+ }
+
+
+ function testGetPreferredVariantDefaultLanguageVariant() {
+ global $wgDefaultLanguageVariant;
+
+ $wgDefaultLanguageVariant = 'tg-latn';
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, true));
+ }
+
+ function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
+ global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
+
+ $wgContLang = Language::factory( 'tg-latn' );
+ $wgDefaultLanguageVariant = 'tg';
+ $wgRequest->setVal('variant', null);
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, false));
+ $this->assertEquals('tg', $this->lc->getPreferredVariant(false, true));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, false));
+ $this->assertEquals('tg-latn', $this->lc->getPreferredVariant(true, true));
+ }
+}
+
+/**
+ * Test converter (from Tajiki to latin orthography)
+ */
+class TestConverter extends LanguageConverter {
+ private $table = array(
+ 'б' => 'b',
+ 'в' => 'v',
+ 'г' => 'g',
+ );
+
+ function loadDefaultTables() {
+ $this->mTables = array(
+ 'tg-latn' => new ReplacementArray( $this->table ),
+ 'tg' => new ReplacementArray()
+ );
+ }
+
+}
+
+class LanguageTest extends Language {
+ function __construct() {
+ parent::__construct();
+ $variants = array( 'tg', 'tg-latn' );
+ $this->mConverter = new TestConverter( $this, 'tg', $variants );
+ }
+}
diff --git a/maintenance/tests/LicensesTest.php b/maintenance/tests/LicensesTest.php
new file mode 100644
index 00000000..c5357f89
--- /dev/null
+++ b/maintenance/tests/LicensesTest.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @group Broken
+ */
+class LicensesTest extends PHPUnit_Framework_TestCase {
+
+ function testLicenses() {
+ $str = "
+* Free licenses:
+** GFLD|Debian disagrees
+";
+
+ $lc = new Licenses( $str );
+ $this->assertTrue( is_a( $lc, 'Licenses' ), 'Correct class' );
+ }
+} \ No newline at end of file
diff --git a/tests/LocalFileTest.php b/maintenance/tests/LocalFileTest.php
index 335b8bbe..e57798be 100644
--- a/tests/LocalFileTest.php
+++ b/maintenance/tests/LocalFileTest.php
@@ -6,6 +6,8 @@
class LocalFileTest extends PHPUnit_Framework_TestCase {
function setUp() {
+ global $wgContLang;
+ $wgContLang = new Language;
$info = array(
'name' => 'test',
'directory' => '/testdir',
@@ -21,6 +23,11 @@ class LocalFileTest extends PHPUnit_Framework_TestCase {
$this->file_lc = $this->repo_lc->newFile( 'test!' );
}
+ function tearDown() {
+ global $wgContLang;
+ unset($wgContLang);
+ }
+
function testGetHashPath() {
$this->assertEquals( '', $this->file_hl0->getHashPath() );
$this->assertEquals( 'a/a2/', $this->file_hl2->getHashPath() );
@@ -75,10 +82,10 @@ class LocalFileTest extends PHPUnit_Framework_TestCase {
}
function testGetThumbVirtualUrl() {
- $this->assertEquals( 'mwrepo://test/public/thumb/Test%21', $this->file_hl0->getThumbVirtualUrl() );
- $this->assertEquals( 'mwrepo://test/public/thumb/a/a2/Test%21', $this->file_hl2->getThumbVirtualUrl() );
- $this->assertEquals( 'mwrepo://test/public/thumb/Test%21/%21', $this->file_hl0->getThumbVirtualUrl( '!' ) );
- $this->assertEquals( 'mwrepo://test/public/thumb/a/a2/Test%21/%21', $this->file_hl2->getThumbVirtualUrl( '!' ) );
+ $this->assertEquals( 'mwrepo://test/thumb/Test%21', $this->file_hl0->getThumbVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21', $this->file_hl2->getThumbVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/thumb/Test%21/%21', $this->file_hl0->getThumbVirtualUrl( '!' ) );
+ $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21/%21', $this->file_hl2->getThumbVirtualUrl( '!' ) );
}
function testGetUrl() {
diff --git a/maintenance/tests/Makefile b/maintenance/tests/Makefile
new file mode 100644
index 00000000..b2c0fb71
--- /dev/null
+++ b/maintenance/tests/Makefile
@@ -0,0 +1,23 @@
+# See
+# http://lists.wikimedia.org/pipermail/wikitech-l/2010-February/046657.html
+# for why prove(1) is the default target and not phpunit(1)
+
+.PHONY: help test
+all test: tap
+
+tap:
+ prove -e 'phpunit --tap' *Test*.php
+
+phpunit:
+ phpunit
+
+install:
+ pear channel-discover pear.phpunit.de
+ pear install phpunit/PHPUnit
+
+help:
+ # Options:
+ # test (default) Run the tests individually through Test::Harness's prove(1)
+ # phpunit Run all the tests with phpunit
+ # install Install PHPUnit from phpunit.de
+ # help You're looking at it!
diff --git a/maintenance/tests/MediaWikiParserTest.php b/maintenance/tests/MediaWikiParserTest.php
new file mode 100644
index 00000000..a545b3bb
--- /dev/null
+++ b/maintenance/tests/MediaWikiParserTest.php
@@ -0,0 +1,283 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+global $IP;
+define( "NO_COMMAND_LINE", 1 );
+define( "PARSER_TESTS", "$IP/maintenance/parserTests.txt" );
+
+require_once( "$IP/maintenance/parserTests.inc" );
+
+class PHPUnitTestRecorder extends TestRecorder {
+
+ function record( $test, $result ) {
+ $this->total++;
+ $this->success += $result;
+
+ }
+
+ function reportPercentage( $success, $total ) {}
+}
+
+class MediaWikiParserTestSuite extends PHPUnit_Framework_TestSuite {
+#implements PHPUnit_Framework_SelfDescribing {
+ static private $count;
+ static public $parser;
+ static public $iter;
+
+ public static function suite() {
+ $suite = new PHPUnit_Framework_TestSuite();
+
+ self::$iter = new TestFileIterator( PARSER_TESTS );
+
+ foreach(self::$iter as $i => $test) {
+ $suite->addTest(new ParserUnitTest($i, $test['test']));
+ self::$count++;
+ }
+ unset($tests);
+
+ self::$parser = new PTShell;
+ self::$iter->setParser(self::$parser);
+ self::$parser->recorder->start();
+ self::$parser->setupDatabase();
+ self::$iter->rewind();
+ /* } */
+ /* function setUp() { */
+ global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgDeferredUpdateList,
+ $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
+ $wgMessageCache, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $parserMemc,
+ $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
+ $wgNamespacesWithSubpages, $wgThumbnailScriptPath, $wgScriptPath,
+ $wgArticlePath, $wgStyleSheetPath, $wgScript, $wgStylePath;
+
+ $wgScript = '/index.php';
+ $wgScriptPath = '/';
+ $wgArticlePath = '/wiki/$1';
+ $wgStyleSheetPath = '/skins';
+ $wgStylePath = '/skins';
+ $wgThumbnailScriptPath = false;
+ $wgLocalFileRepo = array(
+ 'class' => 'LocalRepo',
+ 'name' => 'local',
+ 'directory' => '',
+ 'url' => 'http://example.com/images',
+ 'hashLevels' => 2,
+ 'transformVia404' => false,
+ );
+ $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface';
+ $wgNamespaceAliases['Image'] = NS_FILE;
+ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
+
+
+ $wgEnableParserCache = false;
+ $wgDeferredUpdateList = array();
+ $wgMemc =& wfGetMainCache();
+ $messageMemc =& wfGetMessageCacheStorage();
+ $parserMemc =& wfGetParserCacheStorage();
+
+ $wgContLang = new StubContLang;
+ $wgUser = new StubUser;
+ $wgLang = new StubUserLang;
+ $wgOut = new StubObject( 'wgOut', 'OutputPage' );
+ $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+ $wgRequest = new WebRequest;
+
+ $wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache',
+ array( $messageMemc, $wgUseDatabaseMessages,
+ $wgMsgCacheExpiry, wfWikiID() ) );
+ if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins";
+
+ return $suite;
+ }
+
+ public function tearDown() {
+ $this->teardownDatabase();
+ $this->recorder->report();
+ $this->recorder->end();
+ $this->teardownUploadDir($this->uploadDir);
+ }
+
+ public function count() {return self::$count;}
+
+ public function toString() {
+ return "MediaWiki Parser Tests";
+ }
+
+
+ private $db;
+ private $uploadDir;
+ private $keepUploads;
+ /**
+ * Remove the dummy uploads directory
+ */
+ private function teardownUploadDir( $dir ) {
+ if ( $this->keepUploads ) {
+ return;
+ }
+
+ // delete the files first, then the dirs.
+ self::deleteFiles(
+ array (
+ "$dir/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg",
+
+ "$dir/0/09/Bad.jpg",
+ )
+ );
+
+ self::deleteDirs(
+ array (
+ "$dir/3/3a",
+ "$dir/3",
+ "$dir/thumb/6/65",
+ "$dir/thumb/6",
+ "$dir/thumb/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a",
+ "$dir/thumb/3",
+
+ "$dir/0/09/",
+ "$dir/0/",
+
+ "$dir/thumb",
+ "$dir",
+ )
+ );
+ }
+
+ /**
+ * Delete the specified files, if they exist.
+ * @param array $files full paths to files to delete.
+ */
+ private static function deleteFiles( $files ) {
+ foreach( $files as $file ) {
+ if( file_exists( $file ) ) {
+ unlink( $file );
+ }
+ }
+ }
+ /**
+ * Delete the specified directories, if they exist. Must be empty.
+ * @param array $dirs full paths to directories to delete.
+ */
+ private static function deleteDirs( $dirs ) {
+ foreach( $dirs as $dir ) {
+ if( is_dir( $dir ) ) {
+ rmdir( $dir );
+ }
+ }
+ }
+
+ /**
+ * Create a dummy uploads directory which will contain a couple
+ * of files in order to pass existence tests.
+ * @return string The directory
+ */
+ private function setupUploadDir() {
+ global $IP;
+ if ( $this->keepUploads ) {
+ $dir = wfTempDir() . '/mwParser-images';
+ if ( is_dir( $dir ) ) {
+ return $dir;
+ }
+ } else {
+ $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images";
+ }
+
+ wfDebug( "Creating upload directory $dir\n" );
+ if ( file_exists( $dir ) ) {
+ wfDebug( "Already exists!\n" );
+ return $dir;
+ }
+ wfMkdirParents( $dir . '/3/3a' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+
+ wfMkdirParents( $dir . '/0/09' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
+ return $dir;
+ }
+}
+
+class ParserUnitTest extends PHPUnit_Framework_TestCase {
+ private $number = 0;
+ private $test = "";
+
+ public function __construct($number, $test) {
+ $this->number = $number;
+ $this->test = $test;
+ }
+
+ function count() {return 1;}
+
+ public function run(PHPUnit_Framework_TestResult $result = NULL) {
+ PHPUnit_Framework_Assert::resetCount();
+ if ($result === NULL) {
+ $result = new PHPUnit_Framework_TestResult;
+ }
+
+ $t = MediaWikiParserTestSuite::$iter->current();
+ $k = MediaWikiParserTestSuite::$iter->key();
+
+ if(!MediaWikiParserTestSuite::$iter->valid()) {
+ return;
+ }
+
+ // The only way this should happen is if the parserTest.txt
+ // file were modified while the script is running.
+ if($k != $this->number) {
+ $i = $this->number;
+ wfDie("I got confused!\n");
+ }
+
+ $result->startTest($this);
+ PHPUnit_Util_Timer::start();
+
+ $r = false;
+ try {
+ $r = MediaWikiParserTestSuite::$parser->runTest(
+ $t['test'], $t['input'], $t['result'], $t['options'], $t['config']
+ );
+ PHPUnit_Framework_Assert::assertTrue(true, $t['test']);
+ }
+ catch (PHPUnit_Framework_AssertionFailedError $e) {
+ $result->addFailure($this, $e, PHPUnit_Util_Timer::stop());
+ }
+ catch (Exception $e) {
+ $result->addError($this, $e, PHPUnit_Util_Timer::stop());
+ }
+ PHPUnit_Framework_Assert::assertTrue(true, $t['test']);
+
+ $result->endTest($this, PHPUnit_Util_Timer::stop());
+
+ MediaWikiParserTestSuite::$parser->recorder->record($t['test'], $r);
+ MediaWikiParserTestSuite::$iter->next();
+ $this->addToAssertionCount(PHPUnit_Framework_Assert::getCount());
+
+ return $result;
+ }
+
+}
+
+class PTShell extends ParserTest {
+ function showTesting( $desc ) {
+ }
+
+ function showRunFile( $path ) {
+ }
+
+ function showSuccess( $desc ) {
+ PHPUnit_Framework_Assert::assertTrue(true, $desc);
+ return true;
+ }
+
+ function showFailure( $desc, $expected, $got ) {
+ PHPUnit_Framework_Assert::assertEquals($expected, $got, $desc);
+ }
+
+}
+
+
diff --git a/maintenance/tests/MediaWiki_Setup.php b/maintenance/tests/MediaWiki_Setup.php
new file mode 100644
index 00000000..e7acc338
--- /dev/null
+++ b/maintenance/tests/MediaWiki_Setup.php
@@ -0,0 +1,28 @@
+<?php
+
+abstract class MediaWiki_Setup extends PHPUnit_Framework_TestCase {
+
+ protected function buildTestDatabase( $tables ) {
+ global $wgDBprefix;
+
+ $db = wfGetDB( DB_MASTER );
+ $oldTableNames = array();
+ foreach( $tables as $table )
+ $oldTableNames[$table] = $db->tableName( $table );
+ $db->tablePrefix( 'parsertest_' );
+
+ if( $db->isOpen() ) {
+ foreach ( $tables as $tbl ) {
+ $newTableName = $db->tableName( $tbl );
+ $tableName = $oldTableNames[$tbl];
+ $db->query( "DROP TABLE IF EXISTS $newTableName", __METHOD__ );
+ $db->duplicateTableStructure( $tableName, $newTableName, __METHOD__ );
+ }
+ return $db;
+ } else {
+ // Something amiss
+ return null;
+ }
+ }
+}
+
diff --git a/maintenance/tests/README b/maintenance/tests/README
new file mode 100644
index 00000000..b52e790e
--- /dev/null
+++ b/maintenance/tests/README
@@ -0,0 +1,24 @@
+Some quickie unit tests done with the PHPUnit testing framework. To run the
+test suite, run 'make test' in this dir. This directly invokes 'phpunit.'
+
+PHPUnit is no longer maintained by PEAR. To get the current version of
+PHPUnit, first uninstall any old version of PHPUnit or PHPUnit2 from PEAR,
+then install the current version from phpunit.de like this:
+
+# pear channel-discover pear.phpunit.de
+# pear install phpunit/PHPUnit
+
+You also may wish to install this via your normal package mechanism:
+
+# aptitude install phpunit
+ - or -
+# yum install phpunit
+
+Notes:
+- Label currently broken tests in the group Broken and they will not
+ be run by phpunit. You can add them to the group by putting the
+ following comment at the top of the file:
+ /**
+ * @group Broken
+ */
+- Need to fix some broken tests
diff --git a/tests/ArticleTest.php b/maintenance/tests/RevisionTest.php
index a65e1ee3..78fcc7c3 100644
--- a/tests/ArticleTest.php
+++ b/maintenance/tests/RevisionTest.php
@@ -1,9 +1,11 @@
<?php
-class ArticleTest extends PHPUnit_Framework_TestCase {
+class RevisionTest extends PHPUnit_Framework_TestCase {
var $saveGlobals = array();
function setUp() {
+ global $wgContLang;
+ $wgContLang = Language::factory( 'en' );
$globalSet = array(
'wgLegacyEncoding' => false,
'wgCompressRevisions' => false,
@@ -80,6 +82,7 @@ class ArticleTest extends PHPUnit_Framework_TestCase {
}
function testCompressRevisionTextUtf8() {
+ $row = new stdClass;
$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
$row->old_flags = Revision::compressRevisionText( $row->old_text );
$this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
@@ -94,6 +97,7 @@ class ArticleTest extends PHPUnit_Framework_TestCase {
function testCompressRevisionTextUtf8Gzip() {
$GLOBALS['wgCompressRevisions'] = true;
+ $row = new stdClass;
$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
$row->old_flags = Revision::compressRevisionText( $row->old_text );
$this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
diff --git a/maintenance/tests/SanitizerTest.php b/maintenance/tests/SanitizerTest.php
new file mode 100644
index 00000000..8a2287d5
--- /dev/null
+++ b/maintenance/tests/SanitizerTest.php
@@ -0,0 +1,73 @@
+<?php
+
+
+class SanitizerTest extends PHPUnit_Framework_TestCase {
+
+ function setUp() {
+ AutoLoader::loadClass( 'Sanitizer' );
+ }
+
+ function testDecodeNamedEntities() {
+ $this->assertEquals(
+ "\xc3\xa9cole",
+ Sanitizer::decodeCharReferences( '&eacute;cole' ),
+ 'decode named entities'
+ );
+ }
+
+ function testDecodeNumericEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+ Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
+ 'decode numeric entities'
+ );
+ }
+
+ function testDecodeMixedEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+ Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
+ 'decode mixed numeric/named entities'
+ );
+ }
+
+ function testDecodeMixedComplexEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
+ Sanitizer::decodeCharReferences(
+ "&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
+ ),
+ 'decode mixed complex entities'
+ );
+ }
+
+ function testInvalidAmpersand() {
+ $this->assertEquals(
+ 'a & b',
+ Sanitizer::decodeCharReferences( 'a & b' ),
+ 'Invalid ampersand'
+ );
+ }
+
+ function testInvalidEntities() {
+ $this->assertEquals(
+ '&foo;',
+ Sanitizer::decodeCharReferences( '&foo;' ),
+ 'Invalid named entity'
+ );
+ }
+
+ function testInvalidNumberedEntities() {
+ $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered entity' );
+ }
+
+ function testSelfClosingTag() {
+ $GLOBALS['wgUseTidy'] = false;
+ $this->assertEquals(
+ '<div>Hello world</div>',
+ Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
+ 'Self-closing closing div'
+ );
+ }
+}
+
diff --git a/tests/SearchEngineTest.php b/maintenance/tests/SearchEngineTest.php
index 0ae14bdd..0cae2d42 100644
--- a/tests/SearchEngineTest.php
+++ b/maintenance/tests/SearchEngineTest.php
@@ -1,13 +1,15 @@
<?php
-require_once 'MediaWiki_TestCase.php';
+require_once( 'MediaWiki_Setup.php' );
-/** @todo document */
-class SearchEngineTest extends MediaWiki_TestCase {
+/**
+ * @group Stub
+ */
+class SearchEngineTest extends MediaWiki_Setup {
var $db, $search;
function insertSearchData() {
- $this->db->safeQuery( <<<END
+ $this->db->safeQuery( <<<SQL
INSERT INTO ! (page_id,page_namespace,page_title,page_latest)
VALUES (1, 0, 'Main_Page', 1),
(2, 1, 'Main_Page', 2),
@@ -19,9 +21,9 @@ class SearchEngineTest extends MediaWiki_TestCase {
(8, 0, 'Thppt', 8),
(9, 0, 'Alan_Smithee', 9),
(10, 0, 'Pages', 10)
-END
+SQL
, $this->db->tableName( 'page' ) );
- $this->db->safeQuery( <<<END
+ $this->db->safeQuery( <<<SQL
INSERT INTO ! (rev_id,rev_page)
VALUES (1, 1),
(2, 2),
@@ -33,9 +35,9 @@ END
(8, 8),
(9, 9),
(10, 10)
-END
+SQL
, $this->db->tableName( 'revision' ) );
- $this->db->safeQuery( <<<END
+ $this->db->safeQuery( <<<SQL
INSERT INTO ! (old_id,old_text)
VALUES (1, 'This is a main page'),
(2, 'This is a talk page to the main page, see [[smithee]]'),
@@ -47,9 +49,9 @@ END
(8, 'Blah blah'),
(9, 'yum'),
(10,'are food')
-END
+SQL
, $this->db->tableName( 'text' ) );
- $this->db->safeQuery( <<<END
+ $this->db->safeQuery( <<<SQL
INSERT INTO ! (si_page,si_title,si_text)
VALUES (1, 'main page', 'this is a main page'),
(2, 'main page', 'this is a talk page to the main page, see smithee'),
@@ -61,11 +63,11 @@ END
(8, 'thppt', 'blah blah'),
(9, 'alan smithee', 'yum'),
(10, 'pages', 'are food')
-END
+SQL
, $this->db->tableName( 'searchindex' ) );
}
- function fetchIds( &$results ) {
+ function fetchIds( $results ) {
$matches = array();
while( $row = $results->next() ) {
$matches[] = $row->getTitle()->getPrefixedText();
@@ -79,55 +81,55 @@ END
}
function testTextSearch() {
- $this->assertFalse( is_null( $this->db ), "Can't find a database to test with." );
- if( !is_null( $this->db ) ) {
- $this->assertEquals(
- array( 'Smithee' ),
- $this->fetchIds( $this->search->searchText( 'smithee' ) ),
- "Plain search failed" );
+ if( is_null( $this->db ) ) {
+ $this->markTestIncomplete( "Can't find a database to test with." );
}
+ $this->assertEquals(
+ array( 'Smithee' ),
+ $this->fetchIds( $this->search->searchText( 'smithee' ) ),
+ "Plain search failed" );
}
function testTextPowerSearch() {
- $this->assertFalse( is_null( $this->db ), "Can't find a database to test with." );
- if( !is_null( $this->db ) ) {
- $this->search->setNamespaces( array( 0, 1, 4 ) );
- $this->assertEquals(
- array(
- 'Smithee',
- 'Talk:Main Page',
- ),
- $this->fetchIds( $this->search->searchText( 'smithee' ) ),
- "Power search failed" );
+ if( is_null( $this->db ) ) {
+ $this->markTestIncomplete( "Can't find a database to test with." );
}
+ $this->search->setNamespaces( array( 0, 1, 4 ) );
+ $this->assertEquals(
+ array(
+ 'Smithee',
+ 'Talk:Main Page',
+ ),
+ $this->fetchIds( $this->search->searchText( 'smithee' ) ),
+ "Power search failed" );
}
function testTitleSearch() {
- $this->assertFalse( is_null( $this->db ), "Can't find a database to test with." );
- if( !is_null( $this->db ) ) {
- $this->assertEquals(
- array(
- 'Alan Smithee',
- 'Smithee',
- ),
- $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
- "Title search failed" );
+ if( is_null( $this->db ) ) {
+ $this->markTestIncomplete( "Can't find a database to test with." );
}
+ $this->assertEquals(
+ array(
+ 'Alan Smithee',
+ 'Smithee',
+ ),
+ $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
+ "Title search failed" );
}
function testTextTitlePowerSearch() {
- $this->assertFalse( is_null( $this->db ), "Can't find a database to test with." );
- if( !is_null( $this->db ) ) {
- $this->search->setNamespaces( array( 0, 1, 4 ) );
- $this->assertEquals(
- array(
- 'Alan Smithee',
- 'Smithee',
- 'Talk:Smithee',
- ),
- $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
- "Title power search failed" );
+ if( is_null( $this->db ) ) {
+ $this->markTestIncomplete( "Can't find a database to test with." );
}
+ $this->search->setNamespaces( array( 0, 1, 4 ) );
+ $this->assertEquals(
+ array(
+ 'Alan Smithee',
+ 'Smithee',
+ 'Talk:Smithee',
+ ),
+ $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
+ "Title power search failed" );
}
}
diff --git a/tests/SearchMySQL4Test.php b/maintenance/tests/SearchMySQLTest.php
index 0f3a4c2c..526f6216 100644
--- a/tests/SearchMySQL4Test.php
+++ b/maintenance/tests/SearchMySQLTest.php
@@ -1,31 +1,26 @@
<?php
require_once( 'SearchEngineTest.php' );
-class SearchMySQL4Test extends SearchEngineTest {
+class SearchMySQLTest extends SearchEngineTest {
var $db;
- function __construct( $name ) {
- parent::__construct( $name );
- }
-
function setUp() {
$GLOBALS['wgContLang'] = new Language;
$this->db = $this->buildTestDatabase(
- array( 'page', 'revision', 'text', 'searchindex' ) );
+ array( 'page', 'revision', 'text', 'searchindex', 'user' ) );
if( $this->db ) {
$this->insertSearchData();
}
- $this->search = new SearchMySQL4( $this->db );
+ $this->search = new SearchMySQL( $this->db );
}
function tearDown() {
if( !is_null( $this->db ) ) {
- $this->db->close();
+ wfGetLB()->closeConnecton( $this->db );
}
unset( $this->db );
unset( $this->search );
}
-
}
diff --git a/maintenance/tests/SearchUpdateTest.php b/maintenance/tests/SearchUpdateTest.php
new file mode 100644
index 00000000..d21319a4
--- /dev/null
+++ b/maintenance/tests/SearchUpdateTest.php
@@ -0,0 +1,103 @@
+<?php
+
+class DatabaseMock extends DatabaseBase {
+ function __construct( $server = false, $user = false, $password = false, $dbName = false,
+ $failFunction = false, $flags = 0, $tablePrefix = 'get from global' )
+ {
+ $this->mConn = true;
+ $this->mOpened = true;
+ }
+
+ function open( $server, $user, $password, $dbName ) { return true; }
+ function doQuery( $sql ) {}
+ function fetchObject( $res ) {}
+ function fetchRow( $res ) {}
+ function numRows( $res ) {}
+ function numFields( $res ) {}
+ function fieldName( $res, $n ) {}
+ function insertId() {}
+ function dataSeek( $res, $row ) {}
+ function lastErrno() { return 0; }
+ function lastError() { return ''; }
+ function affectedRows() {}
+ function fieldInfo( $table, $field ) {}
+ function strencode( $s ) {}
+ function getSoftwareLink() {}
+ function getServerVersion() {}
+ function getType() {}
+}
+
+class MockSearch extends SearchEngine {
+ public static $id;
+ public static $title;
+ public static $text;
+
+ public function __construct( $db ) {
+ }
+
+ public function update( $id, $title, $text ) {
+ self::$id = $id;
+ self::$title = $title;
+ self::$text = $text;
+ }
+}
+
+class SearchUpdateTest extends PHPUnit_Framework_TestCase {
+
+ function update( $text, $title = 'Test', $id = 1 ) {
+ $u = new SearchUpdate( $id, $title, $text );
+ $u->doUpdate();
+ return array( MockSearch::$title, MockSearch::$text );
+ }
+
+ function updateText( $text ) {
+ list( $title, $resultText ) = $this->update( $text );
+ $resultText = trim( $resultText ); // abstract from some implementation details
+ return $resultText;
+ }
+
+ function setUp() {
+ global $wgSearchType, $wgDBtype, $wgLBFactoryConf, $wgDBservers;
+ $wgSearchType = 'MockSearch';
+ $wgDBtype = 'mock';
+ $wgLBFactoryConf['class'] = 'LBFactory_Simple';
+ $wgDBservers = null;
+ LBFactory::destroyInstance();
+ }
+
+ function tearDown() {
+ LBFactory::destroyInstance();
+ }
+
+ function testUpdateText() {
+ $this->assertEquals(
+ 'test',
+ $this->updateText( '<div>TeSt</div>' ),
+ 'HTML stripped, text lowercased'
+ );
+
+ $this->assertEquals(
+ 'foo bar boz quux',
+ $this->updateText( <<<EOT
+<table style="color:red; font-size:100px">
+ <tr class="scary"><td><div>foo</div></td><tr>bar</td></tr>
+ <tr><td>boz</td><tr>quux</td></tr>
+</table>
+EOT
+ ), 'Stripping HTML tables' );
+
+ $this->assertEquals(
+ 'a b',
+ $this->updateText( 'a > b' ),
+ 'Handle unclosed tags'
+ );
+
+ $text = str_pad( "foo <barbarbar \n", 10000, 'x' );
+
+ $this->assertNotEquals(
+ '',
+ $this->updateText( $text ),
+ 'Bug 18609'
+ );
+ }
+}
diff --git a/maintenance/tests/SiteConfigurationTest.php b/maintenance/tests/SiteConfigurationTest.php
new file mode 100644
index 00000000..791b6fe5
--- /dev/null
+++ b/maintenance/tests/SiteConfigurationTest.php
@@ -0,0 +1,311 @@
+<?php
+
+function getSiteParams( $conf, $wiki ) {
+ $site = null;
+ $lang = null;
+ foreach( $conf->suffixes as $suffix ) {
+ if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
+ $site = $suffix;
+ $lang = substr( $wiki, 0, -strlen( $suffix ) );
+ break;
+ }
+ }
+ return array(
+ 'suffix' => $site,
+ 'lang' => $lang,
+ 'params' => array(
+ 'lang' => $lang,
+ 'site' => $site,
+ 'wiki' => $wiki,
+ ),
+ 'tags' => array( 'tag' ),
+ );
+}
+
+class SiteConfigurationTest extends PHPUnit_Framework_TestCase {
+ var $mConf;
+
+ function setUp() {
+ $this->mConf = new SiteConfiguration;
+
+ $this->mConf->suffixes = array( 'wiki' );
+ $this->mConf->wikis = array( 'enwiki', 'dewiki', 'frwiki' );
+ $this->mConf->settings = array(
+ 'simple' => array(
+ 'wiki' => 'wiki',
+ 'tag' => 'tag',
+ 'enwiki' => 'enwiki',
+ 'dewiki' => 'dewiki',
+ 'frwiki' => 'frwiki',
+ ),
+
+ 'fallback' => array(
+ 'default' => 'default',
+ 'wiki' => 'wiki',
+ 'tag' => 'tag',
+ ),
+
+ 'params' => array(
+ 'default' => '$lang $site $wiki',
+ ),
+
+ '+global' => array(
+ 'wiki' => array(
+ 'wiki' => 'wiki',
+ ),
+ 'tag' => array(
+ 'tag' => 'tag',
+ ),
+ 'enwiki' => array(
+ 'enwiki' => 'enwiki',
+ ),
+ 'dewiki' => array(
+ 'dewiki' => 'dewiki',
+ ),
+ 'frwiki' => array(
+ 'frwiki' => 'frwiki',
+ ),
+ ),
+
+ 'merge' => array(
+ '+wiki' => array(
+ 'wiki' => 'wiki',
+ ),
+ '+tag' => array(
+ 'tag' => 'tag',
+ ),
+ 'default' => array(
+ 'default' => 'default',
+ ),
+ '+enwiki' => array(
+ 'enwiki' => 'enwiki',
+ ),
+ '+dewiki' => array(
+ 'dewiki' => 'dewiki',
+ ),
+ '+frwiki' => array(
+ 'frwiki' => 'frwiki',
+ ),
+ ),
+ );
+
+ $GLOBALS['global'] = array( 'global' => 'global' );
+ }
+
+
+ function testSiteFromDB() {
+ $this->assertEquals(
+ array( 'wikipedia', 'en' ),
+ $this->mConf->siteFromDB( 'enwiki' ),
+ 'siteFromDB()'
+ );
+ $this->assertEquals(
+ array( 'wikipedia', '' ),
+ $this->mConf->siteFromDB( 'wiki' ),
+ 'siteFromDB() on a suffix'
+ );
+ $this->assertEquals(
+ array( null, null ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() on a non-existing wiki'
+ );
+
+ $this->mConf->suffixes = array( 'wiki', '' );
+ $this->assertEquals(
+ array( '', 'wikien' ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() on a non-existing wiki (2)'
+ );
+ }
+
+ function testGetLocalDatabases() {
+ $this->assertEquals(
+ array( 'enwiki', 'dewiki', 'frwiki' ),
+ $this->mConf->getLocalDatabases(),
+ 'getLocalDatabases()'
+ );
+ }
+
+ function testGet() {
+ $this->assertEquals(
+ 'enwiki',
+ $this->mConf->get( 'simple', 'enwiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki'
+ );
+ $this->assertEquals(
+ 'dewiki',
+ $this->mConf->get( 'simple', 'dewiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ 'frwiki',
+ $this->mConf->get( 'simple', 'frwiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'simple', 'wiki', 'wiki' ),
+ 'get(): simple setting on an suffix'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'simple', 'eswiki', 'wiki' ),
+ 'get(): simple setting on an non-existing wiki'
+ );
+
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'enwiki', 'wiki' ),
+ 'get(): fallback setting on an existing wiki'
+ );
+ $this->assertEquals(
+ 'tag',
+ $this->mConf->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an existing wiki (with wiki tag)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'wiki', 'wiki' ),
+ 'get(): fallback setting on an suffix'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an suffix (with wiki tag)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'eswiki', 'wiki' ),
+ 'get(): fallback setting on an non-existing wiki'
+ );
+ $this->assertEquals(
+ 'tag',
+ $this->mConf->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an non-existing wiki (with wiki tag)'
+ );
+
+ $common = array( 'wiki' => 'wiki', 'default' => 'default' );
+ $commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
+ $this->assertEquals(
+ array( 'enwiki' => 'enwiki' ) + $common,
+ $this->mConf->get( 'merge', 'enwiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki'
+ );
+ $this->assertEquals(
+ array( 'enwiki' => 'enwiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (with tag)'
+ );
+ $this->assertEquals(
+ array( 'dewiki' => 'dewiki' ) + $common,
+ $this->mConf->get( 'merge', 'dewiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ array( 'dewiki' => 'dewiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (2) (with tag)'
+ );
+ $this->assertEquals(
+ array( 'frwiki' => 'frwiki' ) + $common,
+ $this->mConf->get( 'merge', 'frwiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ array( 'frwiki' => 'frwiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (3) (with tag)'
+ );
+ $this->assertEquals(
+ array( 'wiki' => 'wiki' ) + $common,
+ $this->mConf->get( 'merge', 'wiki', 'wiki' ),
+ 'get(): merging setting on an suffix'
+ );
+ $this->assertEquals(
+ array( 'wiki' => 'wiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an suffix (with tag)'
+ );
+ $this->assertEquals(
+ $common,
+ $this->mConf->get( 'merge', 'eswiki', 'wiki' ),
+ 'get(): merging setting on an non-existing wiki'
+ );
+ $this->assertEquals(
+ $commonTag,
+ $this->mConf->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an non-existing wiki (with tag)'
+ );
+ }
+
+ function testSiteFromDBWithCallback() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $this->assertEquals(
+ array( 'wiki', 'en' ),
+ $this->mConf->siteFromDB( 'enwiki' ),
+ 'siteFromDB() with callback'
+ );
+ $this->assertEquals(
+ array( 'wiki', '' ),
+ $this->mConf->siteFromDB( 'wiki' ),
+ 'siteFromDB() with callback on a suffix'
+ );
+ $this->assertEquals(
+ array( null, null ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() with callback on a non-existing wiki'
+ );
+ }
+
+ function testParamReplacement() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $this->assertEquals(
+ 'en wiki enwiki',
+ $this->mConf->get( 'params', 'enwiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki'
+ );
+ $this->assertEquals(
+ 'de wiki dewiki',
+ $this->mConf->get( 'params', 'dewiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ 'fr wiki frwiki',
+ $this->mConf->get( 'params', 'frwiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ ' wiki wiki',
+ $this->mConf->get( 'params', 'wiki', 'wiki' ),
+ 'get(): parameter replacement on an suffix'
+ );
+ $this->assertEquals(
+ 'es wiki eswiki',
+ $this->mConf->get( 'params', 'eswiki', 'wiki' ),
+ 'get(): parameter replacement on an non-existing wiki'
+ );
+ }
+
+ function testGetAll() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $getall = array(
+ 'simple' => 'enwiki',
+ 'fallback' => 'tag',
+ 'params' => 'en wiki enwiki',
+ 'global' => array( 'enwiki' => 'enwiki' ) + $GLOBALS['global'],
+ 'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
+ );
+ $this->assertEquals( $getall, $this->mConf->getAll( 'enwiki' ), 'getAll()' );
+
+ $this->mConf->extractAllGlobals( 'enwiki', 'wiki' );
+
+ $this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
+ $this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
+ $this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
+ $this->assertEquals( $getall['global'], $GLOBALS['global'], 'extractAllGlobals(): merging with global' );
+ $this->assertEquals( $getall['merge'], $GLOBALS['merge'], 'extractAllGlobals(): merging setting' );
+ }
+}
diff --git a/maintenance/tests/TimeAdjustTest.php b/maintenance/tests/TimeAdjustTest.php
new file mode 100644
index 00000000..bbd697bf
--- /dev/null
+++ b/maintenance/tests/TimeAdjustTest.php
@@ -0,0 +1,40 @@
+<?php
+
+class TimeAdjustTest extends PHPUnit_Framework_TestCase {
+
+ public function setUp() {
+ $this->iniSet( 'precision', 15 );
+ }
+
+ # Test offset usage for a given language::userAdjust
+ function testUserAdjust() {
+ global $wgLocalTZoffset, $wgContLang, $wgUser;
+
+ $wgContLang = $en = Language::factory( 'en' );
+
+ # Collection of parameters for Language_t_Offset.
+ # Format: date to be formatted, localTZoffset value, expected date
+ $userAdjust_tests = array(
+ array( 20061231235959, 0, 20061231235959 ),
+ array( 20061231235959, 5, 20070101000459 ),
+ array( 20061231235959, 15, 20070101001459 ),
+ array( 20061231235959, 60, 20070101005959 ),
+ array( 20061231235959, 90, 20070101012959 ),
+ array( 20061231235959, 120, 20070101015959 ),
+ array( 20061231235959, 540, 20070101085959 ),
+ array( 20061231235959, -5, 20061231235459 ),
+ array( 20061231235959, -30, 20061231232959 ),
+ array( 20061231235959, -60, 20061231225959 ),
+ );
+
+ foreach( $userAdjust_tests as $data ) {
+ $wgLocalTZoffset = $data[1];
+
+ $this->assertEquals(
+ strval( $data[2] ),
+ strval( $en->userAdjust( $data[0], '' ) ),
+ "User adjust {$data[0]} by {$data[1]} minutes should give {$data[2]}"
+ );
+ }
+ }
+}
diff --git a/maintenance/tests/TitleTest.php b/maintenance/tests/TitleTest.php
new file mode 100644
index 00000000..5b42c1c5
--- /dev/null
+++ b/maintenance/tests/TitleTest.php
@@ -0,0 +1,17 @@
+<?php
+
+class TitleTest extends PHPUnit_Framework_TestCase {
+
+ function testLegalChars() {
+ $titlechars = Title::legalChars();
+
+ foreach ( range( 1, 255 ) as $num ) {
+ $chr = chr( $num );
+ if ( strpos( "#[]{}<>|", $chr ) !== false || preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
+ $this->assertFalse( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is not a valid titlechar" );
+ } else {
+ $this->assertTrue( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is a valid titlechar" );
+ }
+ }
+ }
+}
diff --git a/maintenance/tests/XmlTest.php b/maintenance/tests/XmlTest.php
new file mode 100644
index 00000000..330e60c6
--- /dev/null
+++ b/maintenance/tests/XmlTest.php
@@ -0,0 +1,115 @@
+<?php
+
+class XmlTest extends PHPUnit_Framework_TestCase {
+
+ function testElementOpen() {
+ $this->assertEquals(
+ '<element>',
+ Xml::element( 'element', null, null ),
+ 'Opening element with no attributes'
+ );
+ }
+
+ function testElementEmpty() {
+ $this->assertEquals(
+ '<element />',
+ Xml::element( 'element', null, '' ),
+ 'Terminated empty element'
+ );
+ }
+
+ function testElementEscaping() {
+ $this->assertEquals(
+ '<element>hello &lt;there&gt; you &amp; you</element>',
+ Xml::element( 'element', null, 'hello <there> you & you' ),
+ 'Element with no attributes and content that needs escaping'
+ );
+ }
+
+ function testElementAttributes() {
+ $this->assertEquals(
+ '<element key="value" <>="&lt;&gt;">',
+ Xml::element( 'element', array( 'key' => 'value', '<>' => '<>' ), null ),
+ 'Element attributes, keys are not escaped'
+ );
+ }
+
+ function testOpenElement() {
+ $this->assertEquals(
+ '<element k="v">',
+ Xml::openElement( 'element', array( 'k' => 'v' ) ),
+ 'openElement() shortcut'
+ );
+ }
+
+ function testCloseElement() {
+ $this->assertEquals( '</element>', Xml::closeElement( 'element' ), 'closeElement() shortcut' );
+ }
+
+ #
+ # textarea
+ #
+ function testTextareaNoContent() {
+ $this->assertEquals(
+ '<textarea name="name" id="name" cols="40" rows="5"></textarea>',
+ Xml::textarea( 'name', '' ),
+ 'textarea() with not content'
+ );
+ }
+
+ function testTextareaAttribs() {
+ $this->assertEquals(
+ '<textarea name="name" id="name" cols="20" rows="10">&lt;txt&gt;</textarea>',
+ Xml::textarea( 'name', '<txt>', 20, 10 ),
+ 'textarea() with custom attribs'
+ );
+ }
+
+ #
+ # JS
+ #
+ function testEscapeJsStringSpecialChars() {
+ $this->assertEquals(
+ '\\\\\r\n',
+ Xml::escapeJsString( "\\\r\n" ),
+ 'escapeJsString() with special characters'
+ );
+ }
+
+ function testEncodeJsVarBoolean() {
+ $this->assertEquals(
+ 'true',
+ Xml::encodeJsVar( true ),
+ 'encodeJsVar() with boolean'
+ );
+ }
+
+ function testEncodeJsVarNull() {
+ $this->assertEquals(
+ 'null',
+ Xml::encodeJsVar( null ),
+ 'encodeJsVar() with null'
+ );
+ }
+
+ function testEncodeJsVarArray() {
+ $this->assertEquals(
+ '["a", 1]',
+ Xml::encodeJsVar( array( 'a', 1 ) ),
+ 'encodeJsVar() with array'
+ );
+ $this->assertEquals(
+ '{"a": "a", "b": 1}',
+ Xml::encodeJsVar( array( 'a' => 'a', 'b' => 1 ) ),
+ 'encodeJsVar() with associative array'
+ );
+ }
+
+ function testEncodeJsVarObject() {
+ $this->assertEquals(
+ '{"a": "a", "b": 1}',
+ Xml::encodeJsVar( (object)array( 'a' => 'a', 'b' => 1 ) ),
+ 'encodeJsVar() with object'
+ );
+ }
+}
diff --git a/maintenance/tests/bootstrap.php b/maintenance/tests/bootstrap.php
new file mode 100644
index 00000000..019bee07
--- /dev/null
+++ b/maintenance/tests/bootstrap.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * Set up the MediaWiki environment when running tests with "phpunit" command
+ *
+ * Warning: this file is not included from global scope!
+ * @file
+ */
+
+global $wgCommandLineMode, $IP, $optionsWithArgs;
+$IP = dirname( dirname( dirname( __FILE__ ) ) );
+define( 'MW_PHPUNIT_TEST', true );
+
+require_once( "$IP/maintenance/commandLine.inc" );
+
diff --git a/maintenance/tests/phpunit.xml b/maintenance/tests/phpunit.xml
new file mode 100644
index 00000000..ce7d44f5
--- /dev/null
+++ b/maintenance/tests/phpunit.xml
@@ -0,0 +1,17 @@
+<!-- See http://www.phpunit.de/manual/3.3/en/appendixes.configuration.html -->
+<phpunit bootstrap="./bootstrap.php"
+ colors="false"
+ stopOnFailure="false">
+ <!-- convertErrorsToExceptions="true" -->
+ <!-- convertNoticesToExceptions="true" -->
+ <!-- convertWarningsToExceptions="true" -->
+ <testsuite name="MediaWiki Test Suite">
+ <directory>.</directory>
+ </testsuite>
+ <groups>
+ <exclude>
+ <group>Broken</group>
+ <group>Stub</group>
+ </exclude>
+ </groups>
+</phpunit> \ No newline at end of file
diff --git a/tests/test-prefetch-current.xml b/maintenance/tests/test-prefetch-current.xml
index a4c8bda3..a4c8bda3 100644
--- a/tests/test-prefetch-current.xml
+++ b/maintenance/tests/test-prefetch-current.xml
diff --git a/tests/test-prefetch-previous.xml b/maintenance/tests/test-prefetch-previous.xml
index 95eb82dd..95eb82dd 100644
--- a/tests/test-prefetch-previous.xml
+++ b/maintenance/tests/test-prefetch-previous.xml
diff --git a/tests/test-prefetch-stub.xml b/maintenance/tests/test-prefetch-stub.xml
index 59d43d2f..59d43d2f 100644
--- a/tests/test-prefetch-stub.xml
+++ b/maintenance/tests/test-prefetch-stub.xml
diff --git a/maintenance/undelete.php b/maintenance/undelete.php
index b7b7df97..099ea88d 100644
--- a/maintenance/undelete.php
+++ b/maintenance/undelete.php
@@ -6,34 +6,35 @@
* @ingroup Maintenance
*/
-$usage = <<<EOT
-Undelete a page
-Usage: php undelete.php [-u <user>] [-r <reason>] <pagename>
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-EOT;
+class Undelete extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Undelete a page";
+ $this->addOption( 'u', 'The user to perform the undeletion', false, true );
+ $this->addOption( 'r', 'The reason to undelete', false, true );
+ $this->addArg( 'pagename', 'Page to undelete' );
+ }
-$optionsWithArgs = array( 'u', 'r' );
-require_once( 'commandLine.inc' );
+ public function execute() {
+ global $wgUser;
-$user = 'Command line script';
-$reason = '';
+ $user = $this->getOption( 'u', 'Command line script' );
+ $reason = $this->getOption( 'r', '' );
+ $pageName = $this->getArg();
-if ( isset( $options['u'] ) ) {
- $user = $options['u'];
+ $title = Title::newFromText( $pageName );
+ if ( !$title ) {
+ $this->error( "Invalid title", true );
+ }
+ $wgUser = User::newFromName( $user );
+ $archive = new PageArchive( $title );
+ $this->output( "Undeleting " . $title->getPrefixedDBkey() . '...' );
+ $archive->undelete( array(), $reason );
+ $this->output( "done\n" );
+ }
}
-if ( isset( $options['r'] ) ) {
- $reason = $options['r'];
-}
-$pageName = @$args[0];
-$title = Title::newFromText( $pageName );
-if ( !$title ) {
- echo $usage;
- exit( 1 );
-}
-$wgUser = User::newFromName( $user );
-$archive = new PageArchive( $title );
-echo "Undeleting " . $title->getPrefixedDBkey() . '...';
-$archive->undelete( array(), $reason );
-echo "done\n";
-
+$maintClass = "Undelete";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/update.php b/maintenance/update.php
index 3f484137..5977a4c1 100644
--- a/maintenance/update.php
+++ b/maintenance/update.php
@@ -1,5 +1,4 @@
<?php
-require_once 'counter.php';
/**
* Run all updaters.
*
@@ -11,49 +10,32 @@ require_once 'counter.php';
*/
/** */
+define( 'MW_CMDLINE_CALLBACK', 'wfSetupUpdateScript' );
$wgUseMasterForMaintenance = true;
-$options = array( 'quick', 'nopurge' );
-require_once( "commandLine.inc" );
-require_once( "updaters.inc" );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
+require( "updaters.inc" );
+
$wgTitle = Title::newFromText( "MediaWiki database updater" );
-$dbclass = 'Database' . ucfirst( $wgDBtype ) ;
echo( "MediaWiki {$wgVersion} Updater\n\n" );
-install_version_checks();
-
-# Do a pre-emptive check to ensure we've got credentials supplied
-# We can't, at this stage, check them, but we can detect their absence,
-# which seems to cause most of the problems people whinge about
-if( !isset( $wgDBadminuser ) || !isset( $wgDBadminpassword ) ) {
- echo( "No superuser credentials could be found. Please provide the details\n" );
- echo( "of a user with appropriate permissions to update the database. See\n" );
- echo( "AdminSettings.sample for more details.\n\n" );
- exit();
+if( !isset( $options['skip-compat-checks'] ) ) {
+ install_version_checks();
+} else {
+ print "Skipping compatibility checks, proceed at your own risk (Ctrl+C to abort)\n";
+ wfCountdown(5);
}
# Attempt to connect to the database as a privileged user
# This will vomit up an error if there are permissions problems
-$wgDatabase = new $dbclass( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname, 1 );
-
-if( !$wgDatabase->isOpen() ) {
- # Appears to have failed
- echo( "A connection to the database could not be established. Check the\n" );
- echo( "values of \$wgDBadminuser and \$wgDBadminpassword.\n" );
- exit();
-}
+$wgDatabase = wfGetDB( DB_MASTER );
print "Going to run database updates for ".wfWikiID()."\n";
print "Depending on the size of your database this may take a while!\n";
if( !isset( $options['quick'] ) ) {
- print "Abort with control-c in the next five seconds... ";
-
- for ($i = 6; $i >= 1;) {
- print_c($i, --$i);
- sleep(1);
- }
- echo "\n";
+ print "Abort with control-c in the next five seconds (skip this countdown with --quick) ... ";
+ wfCountDown( 5 );
}
$shared = isset( $options['doshared'] );
@@ -63,4 +45,16 @@ do_all_updates( $shared, $purge );
print "Done.\n";
-
+function wfSetupUpdateScript() {
+ global $wgLocalisationCacheConf;
+
+ # Don't try to access the database
+ # This needs to be disabled early since extensions will try to use the l10n
+ # cache from $wgExtensionSetupFunctions (bug 20471)
+ $wgLocalisationCacheConf = array(
+ 'class' => 'LocalisationCache',
+ 'storeClass' => 'LCStore_Null',
+ 'storeDirectory' => false,
+ 'manualRecache' => false,
+ );
+}
diff --git a/maintenance/updateArticleCount.inc.php b/maintenance/updateArticleCount.inc.php
deleted file mode 100644
index a847a2ed..00000000
--- a/maintenance/updateArticleCount.inc.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-/**
- * Support class for the updateArticleCount.php maintenance script
- *
- * @file
- * @ingroup Maintenance
- * @author Rob Church <robchur@gmail.com>
- */
-
-class ArticleCounter {
-
- var $dbr;
- var $namespaces;
-
- function ArticleCounter() {
- global $wgContentNamespaces;
- $this->namespaces = $wgContentNamespaces;
- $this->dbr = wfGetDB( DB_SLAVE );
- }
-
- /**
- * Produce a comma-delimited set of namespaces
- * Includes paranoia
- *
- * @return string
- */
- function makeNsSet() {
- foreach( $this->namespaces as $namespace )
- $namespaces[] = intval( $namespace );
- return implode( ', ', $namespaces );
- }
-
- /**
- * Produce SQL for the query
- *
- * @return string
- */
- function makeSql() {
- list( $page, $pagelinks ) = $this->dbr->tableNamesN( 'page', 'pagelinks' );
- $nsset = $this->makeNsSet();
- return "SELECT COUNT(DISTINCT page_namespace, page_title) AS pagecount " .
- "FROM $page, $pagelinks " .
- "WHERE pl_from=page_id and page_namespace IN ( $nsset ) " .
- "AND page_is_redirect = 0 AND page_len > 0";
- }
-
- /**
- * Count the number of valid content pages in the wiki
- *
- * @return mixed Integer, or false if there's a problem
- */
- function count() {
- $res = $this->dbr->query( $this->makeSql(), __METHOD__ );
- $row = $this->dbr->fetchObject( $res );
- $this->dbr->freeResult( $res );
- return $row->pagecount;
- }
-
-}
-
-
diff --git a/maintenance/updateArticleCount.php b/maintenance/updateArticleCount.php
index a24984a8..e6818458 100644
--- a/maintenance/updateArticleCount.php
+++ b/maintenance/updateArticleCount.php
@@ -3,38 +3,99 @@
* Maintenance script to provide a better count of the number of articles
* and update the site statistics table, if desired
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/
-$options = array( 'update', 'help' );
-require_once( 'commandLine.inc' );
-require_once( 'updateArticleCount.inc.php' );
-echo( "Update Article Count\n\n" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-if( isset( $options['help'] ) && $options['help'] ) {
- echo( "Usage: php updateArticleCount.php [--update]\n\n" );
- echo( "--update : Update site statistics table\n" );
- exit( 0 );
-}
+class UpdateArticleCount extends Maintenance {
+
+ // Content namespaces
+ private $namespaces;
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Count of the number of articles and update the site statistics table";
+ $this->addOption( 'update', 'Update the site_stats table with the new count' );
+ }
+
+ public function execute() {
+ global $wgContentNamespaces;
+ $this->namespaces = $wgContentNamespaces;
+ $this->output( "Counting articles..." );
+ $result = $this->count();
+
+ if( $result !== false ) {
+ $this->output( "found {$result}.\n" );
+ if( $this->hasOption( 'update' ) ) {
+ $this->output( "Updating site statistics table... " );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ );
+ $this->output( "done.\n" );
+ } else {
+ $this->output( "To update the site statistics table, run the script with the --update option.\n" );
+ }
+ } else {
+ $this->output( "failed.\n" );
+ }
+ }
+
+ /**
+ * Produce a comma-delimited set of namespaces
+ * Includes paranoia
+ *
+ * @return string
+ */
+ private function makeNsSet() {
+ foreach( $this->namespaces as $namespace )
+ $namespaces[] = intval( $namespace );
+ return implode( ', ', $namespaces );
+ }
+
+ /**
+ * Produce SQL for the query
+ *
+ * @param $dbr Database handle
+ * @return string
+ */
+ private function makeSql( $dbr ) {
+ list( $page, $pagelinks ) = $dbr->tableNamesN( 'page', 'pagelinks' );
+ $nsset = $this->makeNsSet();
+ return "SELECT COUNT(DISTINCT page_id) AS pagecount " .
+ "FROM $page, $pagelinks " .
+ "WHERE pl_from=page_id and page_namespace IN ( $nsset ) " .
+ "AND page_is_redirect = 0 AND page_len > 0";
+ }
-echo( "Counting articles..." );
-$counter = new ArticleCounter();
-$result = $counter->count();
-
-if( $result !== false ) {
- echo( "found {$result}.\n" );
- if( isset( $options['update'] ) && $options['update'] ) {
- echo( "Updating site statistics table... " );
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ );
- echo( "done.\n" );
- } else {
- echo( "To update the site statistics table, run the script with the --update option.\n" );
+ /**
+ * Count the number of valid content pages in the wiki
+ *
+ * @return mixed Integer, or false if there's a problem
+ */
+ private function count() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->query( $this->makeSql( $dbr ), __METHOD__ );
+ $row = $dbr->fetchObject( $res );
+ $dbr->freeResult( $res );
+ return $row ? $row->pagecount : false;
}
-} else {
- echo( "failed.\n" );
}
-echo( "\n" );
+$maintClass = "UpdateArticleCount";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/updateRestrictions.php b/maintenance/updateRestrictions.php
index 59879eaa..80e98fd0 100644
--- a/maintenance/updateRestrictions.php
+++ b/maintenance/updateRestrictions.php
@@ -5,88 +5,106 @@
* schema change. All remaining page_restriction column values are moved
* to the new table.
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-define( 'BATCH_SIZE', 100 );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require_once 'commandLine.inc';
-
-$db =& wfGetDB( DB_MASTER );
-if ( !$db->tableExists( 'page_restrictions' ) ) {
- echo "page_restrictions does not exist\n";
- exit( 1 );
-}
+class UpdateRestrictions extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Updates page_restrictions table from old page_restriction column";
+ $this->setBatchSize( 100 );
+ }
-migrate_page_restrictions( $db );
+ public function execute() {
+ $db = wfGetDB( DB_MASTER );
+ if( !$db->tableExists( 'page_restrictions' ) ) {
+ $this->error( "page_restrictions table does not exist", true );
+ }
-function migrate_page_restrictions( $db ) {
- $start = $db->selectField( 'page', 'MIN(page_id)', false, __FUNCTION__ );
- if( !$start ) {
- die("Nothing to do.\n");
- }
- $end = $db->selectField( 'page', 'MAX(page_id)', false, __FUNCTION__ );
+ $start = $db->selectField( 'page', 'MIN(page_id)', false, __METHOD__ );
+ if( !$start ) {
+ $this->error( "Nothing to do.", true );
+ }
+ $end = $db->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
- # Do remaining chunk
- $end += BATCH_SIZE - 1;
- $blockStart = $start;
- $blockEnd = $start + BATCH_SIZE - 1;
- $encodedExpiry = 'infinity';
- while( $blockEnd <= $end ) {
- echo "...doing page_id from $blockStart to $blockEnd\n";
- $cond = "page_id BETWEEN $blockStart AND $blockEnd AND page_restrictions !=''";
- $res = $db->select( 'page', array('page_id','page_namespace','page_restrictions'), $cond, __FUNCTION__ );
- $batch = array();
- while( $row = $db->fetchObject( $res ) ) {
- $oldRestrictions = array();
- foreach( explode( ':', trim( $row->page_restrictions ) ) as $restrict ) {
- $temp = explode( '=', trim( $restrict ) );
- // Make sure we are not settings restrictions to ""
- if( count($temp) == 1 && $temp[0] ) {
- // old old format should be treated as edit/move restriction
- $oldRestrictions["edit"] = trim( $temp[0] );
- $oldRestrictions["move"] = trim( $temp[0] );
- } else if( $temp[1] ) {
- $oldRestrictions[$temp[0]] = trim( $temp[1] );
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+ $encodedExpiry = 'infinity';
+ while( $blockEnd <= $end ) {
+ $this->output( "...doing page_id from $blockStart to $blockEnd\n" );
+ $cond = "page_id BETWEEN $blockStart AND $blockEnd AND page_restrictions !=''";
+ $res = $db->select( 'page', array('page_id','page_namespace','page_restrictions'), $cond, __METHOD__ );
+ $batch = array();
+ foreach( $res as $row ) {
+ $oldRestrictions = array();
+ foreach( explode( ':', trim( $row->page_restrictions ) ) as $restrict ) {
+ $temp = explode( '=', trim( $restrict ) );
+ // Make sure we are not settings restrictions to ""
+ if( count($temp) == 1 && $temp[0] ) {
+ // old old format should be treated as edit/move restriction
+ $oldRestrictions["edit"] = trim( $temp[0] );
+ $oldRestrictions["move"] = trim( $temp[0] );
+ } else if( $temp[1] ) {
+ $oldRestrictions[$temp[0]] = trim( $temp[1] );
+ }
+ }
+ # Clear invalid columns
+ if( $row->page_namespace == NS_MEDIAWIKI ) {
+ $db->update( 'page', array( 'page_restrictions' => '' ),
+ array( 'page_id' => $row->page_id ), __FUNCTION__ );
+ $this->output( "...removed dead page_restrictions column for page {$row->page_id}\n" );
+ }
+ # Update restrictions table
+ foreach( $oldRestrictions as $action => $restrictions ) {
+ $batch[] = array(
+ 'pr_page' => $row->page_id,
+ 'pr_type' => $action,
+ 'pr_level' => $restrictions,
+ 'pr_cascade' => 0,
+ 'pr_expiry' => $encodedExpiry
+ );
}
}
- # Clear invalid columns
- if( $row->page_namespace == NS_MEDIAWIKI ) {
- $db->update( 'page', array( 'page_restrictions' => '' ),
- array( 'page_id' => $row->page_id ), __FUNCTION__ );
- echo "...removed dead page_restrictions column for page {$row->page_id}\n";
- }
- # Update restrictions table
- foreach( $oldRestrictions as $action => $restrictions ) {
- $batch[] = array(
- 'pr_page' => $row->page_id,
- 'pr_type' => $action,
- 'pr_level' => $restrictions,
- 'pr_cascade' => 0,
- 'pr_expiry' => $encodedExpiry
- );
- }
- }
- # We use insert() and not replace() as Article.php replaces
- # page_restrictions with '' when protected in the restrictions table
- if ( count( $batch ) ) {
- $ok = $db->deadlockLoop( array( $db, 'insert' ), 'page_restrictions',
- $batch, __FUNCTION__, array( 'IGNORE' ) );
- if( !$ok ) {
- throw new MWException( "Deadlock loop failed wtf :(" );
+ # We use insert() and not replace() as Article.php replaces
+ # page_restrictions with '' when protected in the restrictions table
+ if ( count( $batch ) ) {
+ $ok = $db->deadlockLoop( array( $db, 'insert' ), 'page_restrictions',
+ $batch, __FUNCTION__, array( 'IGNORE' ) );
+ if( !$ok ) {
+ throw new MWException( "Deadlock loop failed wtf :(" );
+ }
}
+ $blockStart += $this->mBatchSize - 1;
+ $blockEnd += $this->mBatchSize - 1;
+ wfWaitForSlaves( 5 );
}
- $blockStart += BATCH_SIZE - 1;
- $blockEnd += BATCH_SIZE - 1;
- wfWaitForSlaves( 5 );
+ $this->output( "...removing dead rows from page_restrictions\n" );
+ // Kill any broken rows from previous imports
+ $db->delete( 'page_restrictions', array( 'pr_level' => '' ) );
+ // Kill other invalid rows
+ $db->deleteJoin( 'page_restrictions', 'page', 'pr_page', 'page_id', array('page_namespace' => NS_MEDIAWIKI) );
+ $this->output( "...Done!\n" );
}
- echo "...removing dead rows from page_restrictions\n";
- // Kill any broken rows from previous imports
- $db->delete( 'page_restrictions', array( 'pr_level' => '' ) );
- // Kill other invalid rows
- $db->deleteJoin( 'page_restrictions', 'page', 'pr_page', 'page_id', array('page_namespace' => NS_MEDIAWIKI) );
- echo "...Done!\n";
}
-
+$maintClass = "UpdateRestrictions";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/updateSearchIndex.inc b/maintenance/updateSearchIndex.inc
deleted file mode 100644
index 0cac4508..00000000
--- a/maintenance/updateSearchIndex.inc
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup Maintenance
- */
-
-/** */
-function updateSearchIndex( $start, $end, $maxLockTime, $quiet ) {
- global $wgQuiet;
- global $wgDisableSearchUpdate;
-
- $fname = "updateSearchIndex";
-
- $wgQuiet = $quiet;
- $wgDisableSearchUpdate = false;
-
- $dbw = wfGetDB( DB_MASTER );
- $recentchanges = $dbw->tableName( 'recentchanges' );
-
- output( "Updating searchindex between $start and $end\n" );
-
- # Select entries from recentchanges which are on top and between the specified times
- $start = $dbw->strencode( $start );
- $end = $dbw->strencode( $end );
-
- $page = $dbw->tableName( 'page' );
- $sql = "SELECT rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title FROM $recentchanges
- JOIN $page ON rc_cur_id=page_id AND rc_this_oldid=page_latest
- WHERE rc_timestamp BETWEEN '$start' AND '$end'
- ";
- $res = $dbw->query( $sql, $fname );
-
-
- # Lock searchindex
- if ( $maxLockTime ) {
- output( " --- Waiting for lock ---" );
- lockSearchindex( $dbw );
- $lockTime = time();
- output( "\n" );
- }
-
- # Loop through the results and do a search update
- while ( $row = $dbw->fetchObject( $res ) ) {
- # Allow reads to be processed
- if ( $maxLockTime && time() > $lockTime + $maxLockTime ) {
- output( " --- Relocking ---" );
- relockSearchindex( $dbw );
- $lockTime = time();
- output( "\n" );
- }
- if ( $row->rc_type == RC_LOG ) {
- continue;
- } elseif ( $row->rc_type == RC_MOVE || $row->rc_type == RC_MOVE_OVER_REDIRECT ) {
- # Rename searchindex entry
- $titleObj = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
- $title = $titleObj->getPrefixedDBkey();
- output( "$title..." );
- $u = new SearchUpdate( $row->rc_cur_id, $title, false );
- output( "\n" );
- } else {
- // Get current revision
- $rev = Revision::loadFromPageId( $dbw, $row->rc_cur_id );
- if( $rev ) {
- $titleObj = $rev->getTitle();
- $title = $titleObj->getPrefixedDBkey();
- output( $title );
- # Update searchindex
- $u = new SearchUpdate( $row->rc_cur_id, $titleObj->getText(), $rev->getText() );
- $u->doUpdate();
- output( "\n" );
- }
- }
- }
-
- # Unlock searchindex
- if ( $maxLockTime ) {
- output( " --- Unlocking --" );
- unlockSearchindex( $dbw );
- output( "\n" );
- }
- output( "Done\n" );
-}
-
-function lockSearchindex( &$db ) {
- $write = array( 'searchindex' );
- $read = array( 'page', 'revision', 'text', 'interwiki' );
- $items = array();
-
- foreach( $write as $table ) {
- $items[] = $db->tableName( $table ) . ' LOW_PRIORITY WRITE';
- }
- foreach( $read as $table ) {
- $items[] = $db->tableName( $table ) . ' READ';
- }
- $sql = "LOCK TABLES " . implode( ',', $items );
- $db->query( $sql, 'updateSearchIndex.inc ' . __METHOD__ );
-}
-
-function unlockSearchindex( &$db ) {
- $db->query( "UNLOCK TABLES", 'updateSearchIndex.inc ' . __METHOD__ );
-}
-
-# Unlock and lock again
-# Since the lock is low-priority, queued reads will be able to complete
-function relockSearchindex( &$db ) {
- unlockSearchindex( $db );
- lockSearchindex( $db );
-}
-
-function output( $text ) {
- global $wgQuiet;
- if ( !$wgQuiet ) {
- print $text;
- }
-}
diff --git a/maintenance/updateSearchIndex.php b/maintenance/updateSearchIndex.php
index f51617bb..152ce1b6 100644
--- a/maintenance/updateSearchIndex.php
+++ b/maintenance/updateSearchIndex.php
@@ -5,53 +5,169 @@
* Usage: php updateSearchIndex.php [-s START] [-e END] [-p POSFILE] [-l LOCKTIME] [-q]
* Where START is the starting timestamp
* END is the ending timestamp
- * POSFILE is a file to load timestamps from and save them to, searchUpdate.pos by default
- * LOCKTIME is how long the searchindex and cur tables will be locked for
+ * POSFILE is a file to load timestamps from and save them to, searchUpdate.WIKI_ID.pos by default
+ * LOCKTIME is how long the searchindex and revision tables will be locked for
* -q means quiet
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-/** */
-$optionsWithArgs = array( 's', 'e', 'p' );
+class UpdateSearchIndex extends Maintenance {
-require_once( 'commandLine.inc' );
-require_once( 'updateSearchIndex.inc' );
-
-if ( isset( $options['p'] ) ) {
- $posFile = $options['p'];
-} else {
- $posFile = 'searchUpdate.pos';
-}
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script for periodic off-peak updating of the search index";
+ $this->addOption( 's', 'starting timestamp', false, true );
+ $this->addOption( 'e', 'Ending timestamp', false, true );
+ $this->addOption( 'p', 'File for saving/loading timestamps, searchUpdate.WIKI_ID.pos by default', false, true );
+ $this->addOption( 'l', 'How long the searchindex and revision tables will be locked for', false, true );
+ }
-if ( isset( $options['e'] ) ) {
- $end = $options['e'];
-} else {
- $end = wfTimestampNow();
-}
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
-if ( isset( $options['s'] ) ) {
- $start = $options['s'];
-} else {
- $start = @file_get_contents( $posFile );
- if ( !$start ) {
- $start = wfTimestamp( TS_MW, time() - 86400 );
+ public function execute() {
+ $posFile = $this->getOption( 'p', 'searchUpdate.' . wfWikiId() . '.pos' );
+ $end = $this->getOption( 'e', wfTimestampNow() );
+ if ( $this->hasOption( 's' ) ) {
+ $start = $this->getOption('s');
+ } elseif( is_readable( 'searchUpdate.pos' ) ) {
+ # B/c to the old position file name which was hardcoded
+ # We can safely delete the file when we're done though.
+ $start = file_get_contents( 'searchUpdate.pos' );
+ unlink( 'searchUpdate.pos' );
+ } else {
+ $start = @file_get_contents( $posFile );
+ if ( !$start ) {
+ $start = wfTimestamp( TS_MW, time() - 86400 );
+ }
+ }
+ $lockTime = $this->getOption( 'l', 20 );
+
+ $this->doUpdateSearchIndex( $start, $end, $lockTime );
+ $file = fopen( $posFile, 'w' );
+ fwrite( $file, $end );
+ fclose( $file );
}
-}
+
+ private function doUpdateSearchIndex( $start, $end, $maxLockTime ) {
+ global $wgDisableSearchUpdate;
-if ( isset( $options['l'] ) ) {
- $lockTime = $options['l'];
-} else {
- $lockTime = 20;
-}
+ $wgDisableSearchUpdate = false;
+
+ $dbw = wfGetDB( DB_MASTER );
+ $recentchanges = $dbw->tableName( 'recentchanges' );
-$quiet = (bool)(@$options['q']);
+ $this->output( "Updating searchindex between $start and $end\n" );
-updateSearchIndex( $start, $end, $lockTime, $quiet );
+ # Select entries from recentchanges which are on top and between the specified times
+ $start = $dbw->timestamp( $start );
+ $end = $dbw->timestamp( $end );
-$file = fopen( $posFile, 'w' );
-fwrite( $file, $end );
-fclose( $file );
+ $page = $dbw->tableName( 'page' );
+ $sql = "SELECT rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title FROM $recentchanges
+ JOIN $page ON rc_cur_id=page_id AND rc_this_oldid=page_latest
+ WHERE rc_timestamp BETWEEN '$start' AND '$end'
+ ";
+ $res = $dbw->query( $sql, __METHOD__ );
+ # Lock searchindex
+ if ( $maxLockTime ) {
+ $this->output( " --- Waiting for lock ---" );
+ $this->lockSearchindex( $dbw );
+ $lockTime = time();
+ $this->output( "\n" );
+ }
+
+ # Loop through the results and do a search update
+ foreach ( $res as $row ) {
+ # Allow reads to be processed
+ if ( $maxLockTime && time() > $lockTime + $maxLockTime ) {
+ $this->output( " --- Relocking ---" );
+ $this->relockSearchindex( $dbw );
+ $lockTime = time();
+ $this->output( "\n" );
+ }
+ if ( $row->rc_type == RC_LOG ) {
+ continue;
+ } elseif ( $row->rc_type == RC_MOVE || $row->rc_type == RC_MOVE_OVER_REDIRECT ) {
+ # Rename searchindex entry
+ $titleObj = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
+ $title = $titleObj->getPrefixedDBkey();
+ $this->output( "$title..." );
+ $u = new SearchUpdate( $row->rc_cur_id, $title, false );
+ $this->output( "\n" );
+ } else {
+ // Get current revision
+ $rev = Revision::loadFromPageId( $dbw, $row->rc_cur_id );
+ if( $rev ) {
+ $titleObj = $rev->getTitle();
+ $title = $titleObj->getPrefixedDBkey();
+ $this->output( $title );
+ # Update searchindex
+ $u = new SearchUpdate( $row->rc_cur_id, $titleObj->getText(), $rev->getText() );
+ $u->doUpdate();
+ $this->output( "\n" );
+ }
+ }
+ }
+
+ # Unlock searchindex
+ if ( $maxLockTime ) {
+ $this->output( " --- Unlocking --" );
+ $this->unlockSearchindex( $dbw );
+ $this->output( "\n" );
+ }
+ $this->output( "Done\n" );
+ }
+
+ /**
+ * Lock the search index
+ * @param &$db Database object
+ */
+ private function lockSearchindex( &$db ) {
+ $write = array( 'searchindex' );
+ $read = array( 'page', 'revision', 'text', 'interwiki' );
+ $db->lockTables( $read, $write, 'updateSearchIndex.php ' . __METHOD__ );
+ }
+
+ /**
+ * Unlock the tables
+ * @param &$db Database object
+ */
+ private function unlockSearchindex( &$db ) {
+ $db->unlockTables( 'updateSearchIndex.php ' . __METHOD__ );
+ }
+
+ /**
+ * Unlock and lock again
+ * Since the lock is low-priority, queued reads will be able to complete
+ * @param &$db Database object
+ */
+ private function relockSearchindex( &$db ) {
+ $this->unlockSearchindex( $db );
+ $this->lockSearchindex( $db );
+ }
+}
+
+$maintClass = "UpdateSearchIndex";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/updateSpecialPages.php b/maintenance/updateSpecialPages.php
index 3eaa6205..aaad3714 100644
--- a/maintenance/updateSpecialPages.php
+++ b/maintenance/updateSpecialPages.php
@@ -3,117 +3,136 @@
* Run this script periodically if you have miser mode enabled, to refresh the
* caches
*
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
*/
-$options = array('only','help');
+
+require_once( dirname(__FILE__) . '/Maintenance.php' );
-require_once( 'commandLine.inc' );
+class UpdateSpecialPages extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'list', 'List special page names' );
+ $this->addOption( 'only', 'Only update "page". Ex: --only=BrokenRedirects', false, true );
+ $this->addOption( 'override', 'Also update pages that have updates disabled' );
+ }
-require_once( "$IP/includes/SpecialPage.php" );
-require_once( "$IP/includes/QueryPage.php" );
+ public function execute() {
+ global $IP, $wgOut, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
+ $wgOut->disable();
+ $dbw = wfGetDB( DB_MASTER );
-if(@$options['help']) {
- print "usage:updateSpecialPages.php [--help] [--only=page]\n";
- print " --help : this help message\n";
- print " --list : list special pages names\n";
- print " --only=page : only update 'page'. Ex: --only=BrokenRedirects\n";
- print " --override : update even pages which have had updates disabled\n";
- wfDie();
-}
+ foreach( $wgSpecialPageCacheUpdates as $special => $call ) {
+ if( !is_callable($call) ) {
+ $this->error( "Uncallable function $call!" );
+ continue;
+ }
+ $t1 = explode( ' ', microtime() );
+ call_user_func( $call, $dbw );
+ $t2 = explode( ' ', microtime() );
+ $this->output( sprintf( '%-30s ', $special ) );
+ $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
+ $hours = intval( $elapsed / 3600 );
+ $minutes = intval( $elapsed % 3600 / 60 );
+ $seconds = $elapsed - $hours * 3600 - $minutes * 60;
+ if ( $hours ) {
+ $this->output( $hours . 'h ' );
+ }
+ if ( $minutes ) {
+ $this->output( $minutes . 'm ' );
+ }
+ $this->output( sprintf( "completed in %.2fs\n", $seconds ) );
+ # Wait for the slave to catch up
+ wfWaitForSlaves( 5 );
+ }
-$wgOut->disable();
-$dbw = wfGetDB( DB_MASTER );
+ // This is needed to initialise $wgQueryPages
+ require_once( "$IP/includes/QueryPage.php" );
-foreach( $wgSpecialPageCacheUpdates as $special => $call ) {
- if( !is_callable($call) ) {
- print "Uncallable function $call!\n";
- continue;
- }
- $t1 = explode( ' ', microtime() );
- call_user_func( $call, $dbw );
- $t2 = explode( ' ', microtime() );
- printf( '%-30s ', $special );
- $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
- $hours = intval( $elapsed / 3600 );
- $minutes = intval( $elapsed % 3600 / 60 );
- $seconds = $elapsed - $hours * 3600 - $minutes * 60;
- if ( $hours ) {
- print $hours . 'h ';
- }
- if ( $minutes ) {
- print $minutes . 'm ';
- }
- printf( "completed in %.2fs\n", $seconds );
- # Wait for the slave to catch up
- wfWaitForSlaves( 5 );
-}
+ foreach( $wgQueryPages as $page ) {
+ @list( $class, $special, $limit ) = $page;
-foreach( $wgQueryPages as $page ) {
- @list( $class, $special, $limit ) = $page;
+ # --list : just show the name of pages
+ if( $this->hasOption('list') ) {
+ $this->output( "$special\n" );
+ continue;
+ }
- # --list : just show the name of pages
- if( @$options['list'] ) {
- print "$special\n";
- continue;
- }
+ if ( !$this->hasOption('override') && $wgDisableQueryPageUpdate && in_array( $special, $wgDisableQueryPageUpdate ) ) {
+ $this->output( sprintf( "%-30s disabled\n", $special ) );
+ continue;
+ }
- if ( !isset( $options['override'] ) && $wgDisableQueryPageUpdate && in_array( $special, $wgDisableQueryPageUpdate ) ) {
- printf("%-30s disabled\n", $special);
- continue;
- }
+ $specialObj = SpecialPage::getPage( $special );
+ if ( !$specialObj ) {
+ $this->output( "No such special page: $special\n" );
+ exit;
+ }
+ if ( !class_exists( $class ) ) {
+ $file = $specialObj->getFile();
+ require_once( $file );
+ }
+ $queryPage = new $class;
- $specialObj = SpecialPage::getPage( $special );
- if ( !$specialObj ) {
- print "No such special page: $special\n";
- exit;
- }
- if ( !class_exists( $class ) ) {
- $file = $specialObj->getFile();
- require_once( $file );
- }
- $queryPage = new $class;
+ if( !$this->hasOption('only') || $this->getOption('only') == $queryPage->getName() ) {
+ $this->output( sprintf( '%-30s ', $special ) );
+ if ( $queryPage->isExpensive() ) {
+ $t1 = explode( ' ', microtime() );
+ # Do the query
+ $num = $queryPage->recache( $limit === null ? $wgQueryCacheLimit : $limit );
+ $t2 = explode( ' ', microtime() );
+ if ( $num === false ) {
+ $this->output( "FAILED: database error\n" );
+ } else {
+ $this->output( "got $num rows in " );
- if( !isset($options['only']) or $options['only'] == $queryPage->getName() ) {
- printf( '%-30s ', $special );
- if ( $queryPage->isExpensive() ) {
- $t1 = explode( ' ', microtime() );
- # Do the query
- $num = $queryPage->recache( $limit === null ? $wgQueryCacheLimit : $limit );
- $t2 = explode( ' ', microtime() );
- if ( $num === false ) {
- print "FAILED: database error\n";
- } else {
- print "got $num rows in ";
-
- $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
- $hours = intval( $elapsed / 3600 );
- $minutes = intval( $elapsed % 3600 / 60 );
- $seconds = $elapsed - $hours * 3600 - $minutes * 60;
- if ( $hours ) {
- print $hours . 'h ';
- }
- if ( $minutes ) {
- print $minutes . 'm ';
+ $elapsed = ($t2[0] - $t1[0]) + ($t2[1] - $t1[1]);
+ $hours = intval( $elapsed / 3600 );
+ $minutes = intval( $elapsed % 3600 / 60 );
+ $seconds = $elapsed - $hours * 3600 - $minutes * 60;
+ if ( $hours ) {
+ $this->output( $hours . 'h ' );
+ }
+ if ( $minutes ) {
+ $this->output( $minutes . 'm ' );
+ }
+ $this->output( sprintf( "%.2fs\n", $seconds ) );
+ }
+ # Reopen any connections that have closed
+ if ( !wfGetLB()->pingAll()) {
+ $this->output( "\n" );
+ do {
+ $this->error( "Connection failed, reconnecting in 10 seconds..." );
+ sleep( 10 );
+ } while ( !wfGetLB()->pingAll() );
+ $this->output( "Reconnected\n\n" );
+ } else {
+ # Commit the results
+ $dbw->commit();
+ }
+ # Wait for the slave to catch up
+ wfWaitForSlaves( 5 );
+ } else {
+ $this->output( "cheap, skipped\n" );
}
- printf( "%.2fs\n", $seconds );
- }
- # Reopen any connections that have closed
- if ( !wfGetLB()->pingAll()) {
- print "\n";
- do {
- print "Connection failed, reconnecting in 10 seconds...\n";
- sleep(10);
- } while ( !wfGetLB()->pingAll() );
- print "Reconnected\n\n";
- } else {
- # Commit the results
- $dbw->immediateCommit();
- }
- # Wait for the slave to catch up
- wfWaitForSlaves( 5 );
- } else {
- print "cheap, skipped\n";
+ }
}
}
}
+
+$maintClass = "UpdateSpecialPages";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc
index 36ac5e37..81c260fc 100644
--- a/maintenance/updaters.inc
+++ b/maintenance/updaters.inc
@@ -11,12 +11,11 @@ if ( !defined( 'MEDIAWIKI' ) ) {
require_once 'convertLinks.inc';
require_once 'userDupes.inc';
-require_once 'deleteDefaultMessages.php';
# Extension updates
require_once( "$IP/includes/Hooks.php" );
/**
- * List of update functions to call for each DB type, in sequence. First item
+ * List of update functions to call for each DB type, in sequence. First item
* is function name, rest are parameters to pass.
*/
$wgUpdates = array(
@@ -30,7 +29,7 @@ $wgUpdates = array(
// do_linkscc_update obsolete
array( 'add_table', 'hitcounter', 'patch-hitcounter.sql' ),
array( 'add_field', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ),
-
+
// 1.3
array( 'add_field', 'user', 'user_real_name', 'patch-user-realname.sql' ),
array( 'add_table', 'querycache', 'patch-querycache.sql' ),
@@ -40,7 +39,7 @@ $wgUpdates = array(
array( 'do_old_links_update' ),
array( 'fix_ancient_imagelinks' ),
array( 'add_field', 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ),
-
+
// 1.4
array( 'do_image_name_unique_update' ),
array( 'add_field', 'recentchanges', 'rc_id', 'patch-rc_id.sql' ),
@@ -54,7 +53,7 @@ $wgUpdates = array(
array( 'do_watchlist_update' ),
array( 'do_user_update' ),
// do_copy_newtalk_to_watchlist obsolete
-
+
// 1.5
array( 'do_schema_restructuring' ),
array( 'add_field', 'logging', 'log_params', 'patch-log_params.sql' ),
@@ -79,7 +78,7 @@ $wgUpdates = array(
array( 'add_table', 'transcache', 'patch-transcache.sql' ),
array( 'add_field', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ),
array( 'add_table', 'trackbacks', 'patch-trackbacks.sql' ),
-
+
// 1.6
array( 'do_watchlist_null' ),
// do_image_index_update obsolete
@@ -96,16 +95,16 @@ $wgUpdates = array(
array( 'add_table', 'filearchive', 'patch-filearchive.sql' ),
array( 'add_field', 'ipblocks', 'ipb_anon_only', 'patch-ipb_anon_only.sql' ),
array( 'do_rc_indices_update' ),
-
+
// 1.9
array( 'add_field', 'user', 'user_newpass_time', 'patch-user_newpass_time.sql' ),
array( 'add_table', 'redirect', 'patch-redirect.sql' ),
- array( 'add_table', 'querycachetwo', 'patch-querycachetwo.sql' ),
+ array( 'add_table', 'querycachetwo', 'patch-querycachetwo.sql' ),
array( 'add_field', 'ipblocks', 'ipb_enable_autoblock', 'patch-ipb_optional_autoblock.sql' ),
array( 'do_backlinking_indices_update' ),
array( 'add_field', 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ),
array( 'add_field', 'user', 'user_editcount', 'patch-user_editcount.sql' ),
-
+
// 1.10
array( 'do_restrictions_update' ),
array( 'add_field', 'logging', 'log_id', 'patch-log_id.sql' ),
@@ -118,7 +117,7 @@ $wgUpdates = array(
array( 'add_field', 'ipblocks', 'ipb_deleted', 'patch-ipb_deleted.sql' ),
array( 'add_field', 'filearchive', 'fa_deleted', 'patch-fa_deleted.sql' ),
array( 'add_field', 'archive', 'ar_len', 'patch-ar_len.sql' ),
-
+
// 1.11
array( 'add_field', 'ipblocks', 'ipb_block_email', 'patch-ipb_emailban.sql' ),
array( 'do_categorylinks_indices_update' ),
@@ -131,7 +130,7 @@ $wgUpdates = array(
// 1.12
array( 'add_table', 'protected_titles', 'patch-protected_titles.sql' ),
-
+
// 1.13
array( 'add_field', 'ipblocks', 'ipb_by_text', 'patch-ipb_by_text.sql' ),
array( 'add_table', 'page_props', 'patch-page_props.sql' ),
@@ -144,30 +143,60 @@ $wgUpdates = array(
array( 'check_bin', 'protected_titles', 'pt_title', 'patch-pt_title-encoding.sql', ),
array( 'maybe_do_profiling_memory_update' ),
array( 'do_filearchive_indices_update' ),
-
+
// 1.14
- array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
+ array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
array( 'do_active_users_init' ),
- array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
- array( 'do_unique_pl_tl_il' ),
+ array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
// 1.15
- array( 'add_table', 'change_tag', 'patch-change_tag.sql' ),
- array( 'add_table', 'tag_summary', 'patch-change_tag.sql' ),
- array( 'add_table', 'valid_tag', 'patch-change_tag.sql' ),
+ array( 'do_unique_pl_tl_il' ),
+ array( 'add_table', 'change_tag', 'patch-change_tag.sql' ),
+ array( 'add_table', 'tag_summary', 'patch-change_tag.sql' ),
+ array( 'add_table', 'valid_tag', 'patch-change_tag.sql' ),
+
+ // 1.16
+ array( 'add_table', 'user_properties', 'patch-user_properties.sql' ),
+ array( 'add_table', 'log_search', 'patch-log_search.sql' ),
+ array( 'do_log_search_population' ),
+ array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
+ array( 'add_table', 'l10n_cache', 'patch-l10n_cache.sql' ),
+ array( 'add_table', 'external_user', 'patch-external_user.sql' ),
+ array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
+ array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
+ array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
+ array( 'do_update_transcache_field' ),
+ // A field changed name mid-release cycle, so fix it for anyone using
+ // trunk
+ array( 'rename_eu_wiki_id' ),
+ array( 'do_update_mime_minor_field' ),
),
'sqlite' => array(
// 1.14
- array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
+ array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
array( 'do_active_users_init' ),
- array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
+ array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
array( 'sqlite_initial_indexes' ),
// 1.15
- array( 'add_table', 'change_tag', 'patch-change_tag.sql' ),
- array( 'add_table', 'tag_summary', 'patch-change_tag.sql' ),
- array( 'add_table', 'valid_tag', 'patch-change_tag.sql' ),
+ array( 'add_table', 'change_tag', 'patch-change_tag.sql' ),
+ array( 'add_table', 'tag_summary', 'patch-change_tag.sql' ),
+ array( 'add_table', 'valid_tag', 'patch-change_tag.sql' ),
+
+ // 1.16
+ array( 'add_table', 'user_properties', 'patch-user_properties.sql' ),
+ array( 'add_table', 'log_search', 'patch-log_search.sql' ),
+ array( 'do_log_search_population' ),
+ array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
+ array( 'add_table', 'l10n_cache', 'patch-l10n_cache.sql' ),
+ array( 'add_table', 'external_user', 'patch-external_user.sql' ),
+ array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
+ array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
+ array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
+ array( 'do_update_transcache_field' ),
+ // version-independent searchindex setup, added in 1.16
+ array( 'sqlite_setup_searchindex' ),
),
);
@@ -176,8 +205,10 @@ $wgUpdates = array(
# $wgDBtype should be checked to specifiy the proper file
$wgExtNewTables = array(); // table, dir
$wgExtNewFields = array(); // table, column, dir
-$wgExtPGNewFields = array(); // table, column attributes; for PostgreSQL
+$wgExtPGNewFields = array(); // table, column, column attributes; for PostgreSQL
+$wgExtPGAlteredFields = array(); // table, column, new type, conversion method; for PostgreSQL
$wgExtNewIndexes = array(); // table, index, dir
+$wgExtModifiedFields = array(); //table, index, dir
# Helper function: check if the given key is present in the updatelog table.
# Obviously, only use this for updates that occur after the updatelog table was
@@ -200,7 +231,7 @@ function rename_table( $from, $to, $patch ) {
wfOut( "...can't move table $from to $to, $to already exists.\n" );
} else {
wfOut( "Moving table $from to $to..." );
- dbsource( archive($patch), $wgDatabase );
+ $wgDatabase->sourceFile( archive($patch) );
wfOut( "ok\n" );
}
} else {
@@ -217,14 +248,33 @@ function add_table( $name, $patch, $fullpath=false ) {
} else {
wfOut( "Creating $name table..." );
if( $fullpath ) {
- dbsource( $patch, $wgDatabase );
+ $wgDatabase->sourceFile( $patch );
+ } else {
+ $wgDatabase->sourceFile( archive($patch) );
+ }
+ wfOut( "ok\n" );
+ }
+}
+
+function modify_field($table, $field, $patch, $fullpath=false){
+ global $wgDatabase;
+ if ( !$wgDatabase->tableExists( $table ) ) {
+ wfOut( "...$table table does not exist, skipping modify field patch\n" );
+ } elseif (! $wgDatabase->fieldExists( $table, $field ) ) {
+ wfOut( "...$field field does not exist in $table table, skipping modify field patch\n" );
+ } else {
+ wfOut( "Modifying $field field of table $table..." );
+ if( $fullpath ) {
+ $wgDatabase->sourceFile( $patch );
} else {
- dbsource( archive($patch), $wgDatabase );
+ $wgDatabase->sourceFile( archive($patch) );
}
wfOut( "ok\n" );
}
}
+
+
function add_field( $table, $field, $patch, $fullpath=false ) {
global $wgDatabase;
if ( !$wgDatabase->tableExists( $table ) ) {
@@ -234,9 +284,9 @@ function add_field( $table, $field, $patch, $fullpath=false ) {
} else {
wfOut( "Adding $field field to table $table..." );
if( $fullpath ) {
- dbsource( $patch, $wgDatabase );
+ $wgDatabase->sourceFile( $patch );
} else {
- dbsource( archive($patch), $wgDatabase );
+ $wgDatabase->sourceFile( archive($patch) );
}
wfOut( "ok\n" );
}
@@ -249,9 +299,9 @@ function add_index( $table, $index, $patch, $fullpath=false ) {
} else {
wfOut( "Adding $index key to table $table... " );
if( $fullpath ) {
- dbsource( $patch, $wgDatabase );
+ $wgDatabase->sourceFile( $patch );
} else {
- dbsource( archive($patch), $wgDatabase );
+ $wgDatabase->sourceFile( archive($patch) );
}
wfOut( "ok\n" );
}
@@ -265,10 +315,10 @@ function do_interwiki_update() {
return true;
}
wfOut( "Creating interwiki table: " );
- dbsource( archive("patch-interwiki.sql") );
+ $wgDatabase->sourceFile( archive("patch-interwiki.sql") );
wfOut( "ok\n" );
wfOut( "Adding default interwiki definitions: " );
- dbsource( "$IP/maintenance/interwiki.sql" );
+ $wgDatabase->sourceFile( "$IP/maintenance/interwiki.sql" );
wfOut( "ok\n" );
}
@@ -278,7 +328,7 @@ function do_index_update() {
$meta = $wgDatabase->fieldInfo( "recentchanges", "rc_timestamp" );
if( !$meta->isMultipleKey() ) {
wfOut( "Updating indexes to 20031107: " );
- dbsource( archive("patch-indexes.sql") );
+ $wgDatabase->sourceFile( archive("patch-indexes.sql") );
wfOut( "ok\n" );
return true;
}
@@ -292,7 +342,7 @@ function do_image_index_update() {
$meta = $wgDatabase->fieldInfo( "image", "img_major_mime" );
if( !$meta->isMultipleKey() ) {
wfOut( "Updating indexes to 20050912: " );
- dbsource( archive("patch-mimesearch-indexes.sql") );
+ $wgDatabase->sourceFile( archive("patch-mimesearch-indexes.sql") );
wfOut( "ok\n" );
return true;
}
@@ -306,7 +356,7 @@ function do_image_name_unique_update() {
wfOut( "...image primary key already set.\n" );
} else {
wfOut( "Making img_name the primary key... " );
- dbsource( archive("patch-image_name_primary.sql"), $wgDatabase );
+ $wgDatabase->sourceFile( archive("patch-image_name_primary.sql") );
wfOut( "ok\n" );
}
}
@@ -317,7 +367,7 @@ function do_logging_timestamp_index() {
wfOut( "...timestamp key on logging already exists.\n" );
} else {
wfOut( "Adding timestamp key on logging table... " );
- dbsource( archive("patch-logging-times-index.sql"), $wgDatabase );
+ $wgDatabase->sourceFile( archive("patch-logging-times-index.sql") );
wfOut( "ok\n" );
}
}
@@ -328,7 +378,7 @@ function do_archive_user_index() {
wfOut( "...usertext,timestamp key on archive already exists.\n" );
} else {
wfOut( "Adding usertext,timestamp key on archive table... " );
- dbsource( archive("patch-archive-user-index.sql"), $wgDatabase );
+ $wgDatabase->sourceFile( archive("patch-archive-user-index.sql") );
wfOut( "ok\n" );
}
}
@@ -339,7 +389,7 @@ function do_image_user_index() {
wfOut( "...usertext,timestamp key on image already exists.\n" );
} else {
wfOut( "Adding usertext,timestamp key on image table... " );
- dbsource( archive("patch-image-user-index.sql"), $wgDatabase );
+ $wgDatabase->sourceFile( archive("patch-image-user-index.sql") );
wfOut( "ok\n" );
}
}
@@ -350,7 +400,7 @@ function do_oldimage_user_index() {
wfOut( "...usertext,timestamp key on oldimage already exists.\n" );
} else {
wfOut( "Adding usertext,timestamp key on oldimage table... " );
- dbsource( archive("patch-oldimage-user-index.sql"), $wgDatabase );
+ $wgDatabase->sourceFile( archive("patch-oldimage-user-index.sql") );
wfOut( "ok\n" );
}
}
@@ -363,7 +413,7 @@ function do_watchlist_update() {
} else {
wfOut( "Adding wl_notificationtimestamp field for email notification management." );
/* ALTER TABLE watchlist ADD (wl_notificationtimestamp varchar(14) binary NOT NULL default '0'); */
- dbsource( archive( 'patch-email-notification.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-email-notification.sql' ) );
wfOut( "ok\n" );
}
# Check if we need to add talk page rows to the watchlist
@@ -373,7 +423,7 @@ function do_watchlist_update() {
wfOut( "Adding missing watchlist talk page rows... " );
flush();
- $wgDatabase->insertSelect( 'watchlist', 'watchlist',
+ $wgDatabase->insertSelect( 'watchlist', 'watchlist',
array(
'wl_user' => 'wl_user',
'wl_namespace' => 'wl_namespace | 1',
@@ -388,7 +438,7 @@ function do_watchlist_update() {
function do_copy_newtalk_to_watchlist() {
global $wgDatabase;
- global $wgCommandLineMode; # this needs to be saved while getID() and getName() are called
+ global $wgCommandLineMode; # this needs to be saved while getID() and getName() are called
$res = $wgDatabase->safeQuery( 'SELECT user_id, user_ip FROM !',
$wgDatabase->tableName( 'user_newtalk' ) );
@@ -402,10 +452,10 @@ function do_copy_newtalk_to_watchlist() {
if ($user->isIP($wluser->user_ip)) { # do only if it really looks like an IP number (double checked)
$wgDatabase->replace( 'watchlist',
array(array('wl_user','wl_namespace', 'wl_title', 'wl_notificationtimestamp' )),
- array('wl_user' => 0,
- 'wl_namespace' => NS_USER_TALK,
- 'wl_title' => $wluser->user_ip,
- 'wl_notificationtimestamp' => '19700101000000'
+ array('wl_user' => 0,
+ 'wl_namespace' => NS_USER_TALK,
+ 'wl_title' => $wluser->user_ip,
+ 'wl_notificationtimestamp' => '19700101000000'
), 'updaters.inc::do_watchlist_update2'
);
}
@@ -413,10 +463,10 @@ function do_copy_newtalk_to_watchlist() {
$user->setID($wluser->user_id);
$wgDatabase->replace( 'watchlist',
array(array('wl_user','wl_namespace', 'wl_title', 'wl_notificationtimestamp' )),
- array('wl_user' => $user->getID(),
- 'wl_namespace' => NS_USER_TALK,
- 'wl_title' => $user->getName(),
- 'wl_notificationtimestamp' => '19700101000000'
+ array('wl_user' => $user->getID(),
+ 'wl_namespace' => NS_USER_TALK,
+ 'wl_title' => $user->getName(),
+ 'wl_notificationtimestamp' => '19700101000000'
), 'updaters.inc::do_watchlist_update3'
);
}
@@ -429,7 +479,7 @@ function do_user_update() {
global $wgDatabase;
if( $wgDatabase->fieldExists( 'user', 'user_emailauthenticationtimestamp' ) ) {
wfOut( "User table contains old email authentication field. Dropping... " );
- dbsource( archive( 'patch-email-authentication.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-email-authentication.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "...user table does not contain old email authentication field.\n" );
@@ -453,7 +503,7 @@ function check_bin( $table, $field, $patchFile ) {
wfOut( "$table table has correct $field encoding.\n" );
} else {
wfOut( "Fixing $field encoding on $table table... " );
- dbsource( archive( $patchFile ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( $patchFile ) );
wfOut( "ok\n" );
}
}
@@ -530,40 +580,40 @@ function do_schema_restructuring() {
wfOut( wfTimestamp( TS_DB ) );
wfOut( "......Creating tables.\n" );
$wgDatabase->query("CREATE TABLE $page (
- page_id int(8) unsigned NOT NULL auto_increment,
- page_namespace int NOT NULL,
- page_title varchar(255) binary NOT NULL,
- page_restrictions tinyblob NOT NULL,
- page_counter bigint(20) unsigned NOT NULL default '0',
- page_is_redirect tinyint(1) unsigned NOT NULL default '0',
- page_is_new tinyint(1) unsigned NOT NULL default '0',
- page_random real unsigned NOT NULL,
- page_touched char(14) binary NOT NULL default '',
- page_latest int(8) unsigned NOT NULL,
- page_len int(8) unsigned NOT NULL,
-
- PRIMARY KEY page_id (page_id),
- UNIQUE INDEX name_title (page_namespace,page_title),
- INDEX (page_random),
- INDEX (page_len)
+ page_id int(8) unsigned NOT NULL auto_increment,
+ page_namespace int NOT NULL,
+ page_title varchar(255) binary NOT NULL,
+ page_restrictions tinyblob NOT NULL,
+ page_counter bigint(20) unsigned NOT NULL default '0',
+ page_is_redirect tinyint(1) unsigned NOT NULL default '0',
+ page_is_new tinyint(1) unsigned NOT NULL default '0',
+ page_random real unsigned NOT NULL,
+ page_touched char(14) binary NOT NULL default '',
+ page_latest int(8) unsigned NOT NULL,
+ page_len int(8) unsigned NOT NULL,
+
+ PRIMARY KEY page_id (page_id),
+ UNIQUE INDEX name_title (page_namespace,page_title),
+ INDEX (page_random),
+ INDEX (page_len)
) ENGINE=InnoDB", $fname );
$wgDatabase->query("CREATE TABLE $revision (
- rev_id int(8) unsigned NOT NULL auto_increment,
- rev_page int(8) unsigned NOT NULL,
- rev_comment tinyblob NOT NULL,
- rev_user int(5) unsigned NOT NULL default '0',
- rev_user_text varchar(255) binary NOT NULL default '',
- rev_timestamp char(14) binary NOT NULL default '',
- rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
+ rev_id int(8) unsigned NOT NULL auto_increment,
+ rev_page int(8) unsigned NOT NULL,
+ rev_comment tinyblob NOT NULL,
+ rev_user int(5) unsigned NOT NULL default '0',
+ rev_user_text varchar(255) binary NOT NULL default '',
+ rev_timestamp char(14) binary NOT NULL default '',
+ rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
rev_deleted tinyint(1) unsigned NOT NULL default '0',
rev_len int(8) unsigned,
rev_parent_id int(8) unsigned default NULL,
- PRIMARY KEY rev_page_id (rev_page, rev_id),
- UNIQUE INDEX rev_id (rev_id),
- INDEX rev_timestamp (rev_timestamp),
- INDEX page_timestamp (rev_page,rev_timestamp),
- INDEX user_timestamp (rev_user,rev_timestamp),
- INDEX usertext_timestamp (rev_user_text,rev_timestamp)
+ PRIMARY KEY rev_page_id (rev_page, rev_id),
+ UNIQUE INDEX rev_id (rev_id),
+ INDEX rev_timestamp (rev_timestamp),
+ INDEX page_timestamp (rev_page,rev_timestamp),
+ INDEX user_timestamp (rev_user,rev_timestamp),
+ INDEX usertext_timestamp (rev_user_text,rev_timestamp)
) ENGINE=InnoDB", $fname );
wfOut( wfTimestamp( TS_DB ) );
@@ -590,26 +640,26 @@ function do_schema_restructuring() {
$cur_flags = "''";
}
$wgDatabase->query( "INSERT INTO $old (old_namespace, old_title, old_text, old_comment, old_user, old_user_text,
- old_timestamp, old_minor_edit, old_flags)
- SELECT cur_namespace, cur_title, $cur_text, cur_comment, cur_user, cur_user_text, cur_timestamp, cur_minor_edit, $cur_flags
- FROM $cur", $fname );
+ old_timestamp, old_minor_edit, old_flags)
+ SELECT cur_namespace, cur_title, $cur_text, cur_comment, cur_user, cur_user_text, cur_timestamp, cur_minor_edit, $cur_flags
+ FROM $cur", $fname );
wfOut( wfTimestamp( TS_DB ) );
wfOut( "......Setting up revision table.\n" );
$wgDatabase->query( "INSERT INTO $revision (rev_id, rev_page, rev_comment, rev_user, rev_user_text, rev_timestamp,
- rev_minor_edit)
+ rev_minor_edit)
SELECT old_id, cur_id, old_comment, old_user, old_user_text,
- old_timestamp, old_minor_edit
+ old_timestamp, old_minor_edit
FROM $old,$cur WHERE old_namespace=cur_namespace AND old_title=cur_title", $fname );
wfOut( wfTimestamp( TS_DB ) );
wfOut( "......Setting up page table.\n" );
$wgDatabase->query( "INSERT INTO $page (page_id, page_namespace, page_title, page_restrictions, page_counter,
- page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len)
- SELECT cur_id, cur_namespace, cur_title, cur_restrictions, cur_counter, cur_is_redirect, cur_is_new,
- cur_random, cur_touched, rev_id, LENGTH(cur_text)
- FROM $cur,$revision
- WHERE cur_id=rev_page AND rev_timestamp=cur_timestamp AND rev_id > {$maxold}", $fname );
+ page_is_redirect, page_is_new, page_random, page_touched, page_latest, page_len)
+ SELECT cur_id, cur_namespace, cur_title, cur_restrictions, cur_counter, cur_is_redirect, cur_is_new,
+ cur_random, cur_touched, rev_id, LENGTH(cur_text)
+ FROM $cur,$revision
+ WHERE cur_id=rev_page AND rev_timestamp=cur_timestamp AND rev_id > {$maxold}", $fname );
wfOut( wfTimestamp( TS_DB ) );
wfOut( "......Unlocking tables.\n" );
@@ -628,7 +678,7 @@ function do_inverse_timestamp() {
global $wgDatabase;
if( $wgDatabase->fieldExists( 'revision', 'inverse_timestamp' ) ) {
wfOut( "Removing revision.inverse_timestamp and fixing indexes... " );
- dbsource( archive( 'patch-inverse_timestamp.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-inverse_timestamp.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "revision timestamp indexes already up to 2005-03-13\n" );
@@ -641,7 +691,7 @@ function do_text_id() {
wfOut( "...rev_text_id already in place.\n" );
} else {
wfOut( "Adding rev_text_id field... " );
- dbsource( archive( 'patch-rev_text_id.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-rev_text_id.sql' ) );
wfOut( "ok\n" );
}
}
@@ -690,7 +740,7 @@ function do_pagelinks_update() {
wfOut( "...already have pagelinks table.\n" );
} else {
wfOut( "Converting links and brokenlinks tables to pagelinks... " );
- dbsource( archive( 'patch-pagelinks.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-pagelinks.sql' ) );
wfOut( "ok\n" );
flush();
@@ -729,7 +779,7 @@ function do_drop_img_type() {
if( $wgDatabase->fieldExists( 'image', 'img_type' ) ) {
wfOut( "Dropping unused img_type field in image table... " );
- dbsource( archive( 'patch-drop_img_type.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-drop_img_type.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "No img_type field in image table; Good.\n" );
@@ -751,7 +801,7 @@ function fix_ancient_imagelinks() {
if ( $info && $info->type() === 'string' ) {
wfOut( "Fixing ancient broken imagelinks table.\n" );
wfOut( "NOTE: you will have to run maintenance/refreshLinks.php after this.\n" );
- dbsource( archive( 'patch-fix-il_from.sql' ) );
+ $wgDatabase->sourceFile( archive( 'patch-fix-il_from.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "...il_from OK\n" );
@@ -768,7 +818,7 @@ function do_user_unique_update() {
wfOut( "WARNING: This next step will probably fail due to unfixed duplicates...\n" );
}
wfOut( "Adding unique index on user_name... " );
- dbsource( archive( 'patch-user_nameindex.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-user_nameindex.sql' ) );
wfOut( "ok\n" );
}
}
@@ -783,13 +833,13 @@ function do_user_groups_update() {
}
wfOut( "Adding user_groups table... " );
- dbsource( archive( 'patch-user_groups.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-user_groups.sql' ) );
wfOut( "ok\n" );
if( !$wgDatabase->tableExists( 'user_rights' ) ) {
if( $wgDatabase->fieldExists( 'user', 'user_rights' ) ) {
wfOut( "Upgrading from a 1.3 or older database? Breaking out user_rights for conversion..." );
- dbsource( archive( 'patch-user_rights.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-user_rights.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "*** WARNING: couldn't locate user_rights table or field for upgrade.\n" );
@@ -835,7 +885,7 @@ function do_user_groups_reformat() {
wfOut( "ok\n" );
wfOut( "Re-adding fresh user_groups table... " );
- dbsource( archive( 'patch-user_groups.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-user_groups.sql' ) );
wfOut( "ok\n" );
wfOut( "***\n" );
@@ -856,7 +906,7 @@ function do_watchlist_null() {
if( !$info->nullable() ) {
wfOut( "Making wl_notificationtimestamp nullable... " );
- dbsource( archive( 'patch-watchlist-null.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-watchlist-null.sql' ) );
wfOut( "ok\n" );
} else {
wfOut( "...wl_notificationtimestamp is already nullable.\n" );
@@ -888,7 +938,7 @@ function do_templatelinks_update() {
return;
}
wfOut( "Creating templatelinks table...\n" );
- dbsource( archive('patch-templatelinks.sql'), $wgDatabase );
+ $wgDatabase->sourceFile( archive('patch-templatelinks.sql') );
wfOut( "Populating...\n" );
if ( isset( $wgLoadBalancer ) && $wgLoadBalancer->getServerCount() > 1 ) {
// Slow, replication-friendly update
@@ -939,12 +989,12 @@ function do_rc_indices_update() {
'rc_ns_usertext' => 'patch-recentchanges-utindex.sql',
'rc_user_text' => 'patch-rc_user_text-index.sql',
);
-
+
foreach( $indexes as $index => $patch ) {
$info = $wgDatabase->indexInfo( 'recentchanges', $index, __METHOD__ );
if( !$info ) {
wfOut( "...index `{$index}` not found; adding..." );
- dbsource( archive( $patch ) );
+ $wgDatabase->sourceFile( archive( $patch ) );
wfOut( "done.\n" );
} else {
wfOut( "...index `{$index}` seems ok.\n" );
@@ -969,21 +1019,23 @@ function index_has_field($table, $index, $field) {
}
function do_backlinking_indices_update() {
+ global $wgDatabase;
wfOut( "Checking for backlinking indices...\n" );
if (!index_has_field('pagelinks', 'pl_namespace', 'pl_from') ||
!index_has_field('templatelinks', 'tl_namespace', 'tl_from') ||
!index_has_field('imagelinks', 'il_to', 'il_from'))
- {
- dbsource( archive( 'patch-backlinkindexes.sql' ) );
+ {
+ $wgDatabase->sourceFile( archive( 'patch-backlinkindexes.sql' ) );
wfOut( "...backlinking indices updated\n" );
}
}
function do_categorylinks_indices_update() {
+ global $wgDatabase;
wfOut( "Checking for categorylinks indices...\n" );
if (!index_has_field('categorylinks', 'cl_sortkey', 'cl_from'))
- {
- dbsource( archive( 'patch-categorylinksindex.sql' ) );
+ {
+ $wgDatabase->sourceFile( archive( 'patch-categorylinksindex.sql' ) );
wfOut( "...categorylinks indices updated\n" );
}
}
@@ -993,8 +1045,8 @@ function do_filearchive_indices_update() {
wfOut( "Checking filearchive indices...\n" );
$info = $wgDatabase->indexInfo( 'filearchive', 'fa_user_timestamp', __METHOD__ );
if ( !$info )
- {
- dbsource( archive( 'patch-filearhive-user-index.sql' ) );
+ {
+ $wgDatabase->sourceFile( archive( 'patch-filearchive-user-index.sql' ) );
wfOut( "...filearchive indices updated\n" );
}
}
@@ -1007,7 +1059,7 @@ function maybe_do_profiling_memory_update() {
wfOut( "profiling table has pf_memory field.\n" );
} else {
wfOut( "Adding pf_memory field to table profiling..." );
- dbsource( archive( 'patch-profiling-memory.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-profiling-memory.sql' ) );
wfOut( "ok\n" );
}
}
@@ -1025,21 +1077,18 @@ function do_stats_init() {
wfOut( "ok.\n" );
return;
}
-
- global $IP;
- require_once "$IP/maintenance/initStats.inc";
- wfInitStats();
+ SiteStatsInit::doAllAndCommit( false );
}
function do_active_users_init() {
global $wgDatabase;
$activeUsers = $wgDatabase->selectField( 'site_stats', 'ss_active_users', false, __METHOD__ );
if( $activeUsers == -1 ) {
- $activeUsers = $wgDatabase->selectField( 'recentchanges',
+ $activeUsers = $wgDatabase->selectField( 'recentchanges',
'COUNT( DISTINCT rc_user_text )',
- array( 'rc_user != 0', 'rc_bot' => 0, "rc_log_type != 'newusers'" ), __METHOD__
+ array( 'rc_user != 0', 'rc_bot' => 0, "rc_log_type != 'newusers'" ), __METHOD__
);
- $wgDatabase->update( 'site_stats',
+ $wgDatabase->update( 'site_stats',
array( 'ss_active_users' => intval($activeUsers) ),
array( 'ss_row_id' => 1 ), __METHOD__, array( 'LIMIT' => 1 )
);
@@ -1057,7 +1106,7 @@ function purge_cache() {
}
function do_all_updates( $shared = false, $purge = true ) {
- global $wgNewTables, $wgNewFields, $wgRenamedTables, $wgSharedDB, $wgSharedTables, $wgDatabase, $wgDBtype, $IP;
+ global $wgNewTables, $wgExtModifiedFields, $wgNewFields, $wgRenamedTables, $wgSharedDB, $wgSharedTables, $wgDatabase, $wgDBtype, $IP;
wfRunHooks('LoadExtensionSchemaUpdates');
@@ -1067,7 +1116,7 @@ function do_all_updates( $shared = false, $purge = true ) {
do_postgres_updates();
return;
}
-
+
# Run core updates in sequence...
global $wgUpdates;
if ( isset( $wgUpdates[$wgDBtype] ) ) {
@@ -1077,7 +1126,7 @@ function do_all_updates( $shared = false, $purge = true ) {
flush();
}
}
-
+
/// @fixme clean up this mess too!
global $wgExtNewTables, $wgExtNewFields, $wgExtNewIndexes;
# Add missing extension tables
@@ -1097,14 +1146,23 @@ function do_all_updates( $shared = false, $purge = true ) {
add_index( $fieldRecord[0], $fieldRecord[1], $fieldRecord[2], true );
flush();
}
+ # Add modified extension fields
+ foreach ( $wgExtModifiedFields as $fieldRecord ) {
+ modify_field($fieldRecord[0], $fieldRecord[1], $fieldRecord[2], true);
+ flush();
+ }
- wfOut( "Deleting old default messages (this may take a long time!)..." );
- deleteDefaultMessages();
+ wfOut( "Deleting old default messages (this may take a long time!)..." );
+ if( !defined( 'MW_NO_SETUP' ) ) {
+ define( 'MW_NO_SETUP', true );
+ }
+ require_once 'deleteDefaultMessages.php';
+ DeleteDefaultMessages::reallyExecute();
wfOut( "Done\n" );
-
+
do_stats_init();
-
+
if( $purge ) {
purge_cache();
}
@@ -1134,8 +1192,8 @@ function do_restrictions_update() {
wfOut( "...$name table already exists.\n" );
} else {
wfOut( "Creating $name table..." );
- dbsource( archive($patch), $wgDatabase );
- dbsource( archive($patch2), $wgDatabase );
+ $wgDatabase->sourceFile( archive($patch) );
+ $wgDatabase->sourceFile( archive($patch2) );
wfOut( "ok\n" );
wfOut( "Migrating old restrictions to new table..." );
@@ -1180,7 +1238,7 @@ function do_restrictions_update() {
$wgDatabase->update( 'page', array ( 'page_restrictions' => ''), array( 'page_id' => $id ), __METHOD__ );
}
-
+
foreach( $restrictions as $type => $level ) {
$wgDatabase->insert( 'page_restrictions', array ( 'pr_page' => $id,
'pr_type' => $type,
@@ -1214,7 +1272,7 @@ function do_populate_parent_id() {
return;
}
require_once( 'populateParentId.inc' );
-
+
global $wgDatabase;
populate_rev_parent_id( $wgDatabase );
}
@@ -1231,6 +1289,23 @@ function sqlite_initial_indexes() {
wfOut( "done\n" );
}
+function sqlite_setup_searchindex() {
+ global $wgDatabase;
+ $module = $wgDatabase->getFulltextSearchModule();
+ $fts3tTable = update_row_exists( 'fts3' );
+ if ( $fts3tTable && !$module ) {
+ wfOut( '...PHP is missing FTS3 support, downgrading tables...' );
+ $wgDatabase->sourceFile( archive( 'searchindex-no-fts.sql' ) );
+ wfOut( "done\n" );
+ } elseif ( !$fts3tTable && $module == 'FTS3' ) {
+ wfOut( '...adding FTS3 search capabilities...' );
+ $wgDatabase->sourceFile( archive( 'searchindex-fts3.sql' ) );
+ wfOut( "done\n" );
+ } else {
+ wfOut( "...fulltext search table appears to be in order.\n" );
+ }
+}
+
function do_unique_pl_tl_il() {
global $wgDatabase;
$info = $wgDatabase->indexInfo( 'pagelinks', 'pl_namespace' );
@@ -1238,23 +1313,72 @@ function do_unique_pl_tl_il() {
wfOut( "...pl_namespace, tl_namespace, il_to indices are already UNIQUE.\n" );
} else {
wfOut( "Making pl_namespace, tl_namespace and il_to indices UNIQUE... " );
- dbsource( archive( 'patch-pl-tl-il-unique.sql' ), $wgDatabase );
+ $wgDatabase->sourceFile( archive( 'patch-pl-tl-il-unique.sql' ) );
wfOut( "ok\n" );
}
}
+function do_log_search_population() {
+ global $wgDatabase;
+ if( update_row_exists( 'populate log_search' ) ) {
+ wfOut( "...log_search table already populated.\n" );
+ return;
+ }
+ require_once( 'populateLogSearch.inc' );
+ wfOut(
+"Populating log_search table, printing progress markers. For large\n" .
+"databases, you may want to hit Ctrl-C and do this manually with\n" .
+"maintenance/populateLogSearch.php.\n" );
+ migrate_log_params( $wgDatabase );
+ wfOut( "Done populating log_search table.\n" );
+}
+
+function rename_eu_wiki_id() {
+ global $wgDatabase;
+ wfOut( "Renaming eu_wiki_id -> eu_local_id... " );
+ if ( $wgDatabase->fieldExists( 'external_user', 'eu_local_id' ) ) {
+ wfOut( "already done.\n" );
+ return;
+ }
+ $wgDatabase->sourceFile( archive( 'patch-eu_local_id.sql' ) );
+ wfOut( "ok\n" );
+}
+
+function do_update_transcache_field() {
+ global $wgDatabase;
+ if( update_row_exists( 'convert transcache field' ) ) {
+ wfOut( "...transcache tc_time already converted.\n" );
+ return;
+ } else {
+ wfOut( "Converting tc_time from UNIX epoch to MediaWiki timestamp... " );
+ $wgDatabase->sourceFile( archive( 'patch-tc-timestamp.sql' ) );
+ wfOut( "ok\n" );
+ }
+}
+
+function do_update_mime_minor_field() {
+ if ( update_row_exists( 'mime_minor_length' ) ) {
+ wfOut( "*_mime_minor fields are already long enough.\n" );
+ } else {
+ global $wgDatabase;
+ wfOut( "Altering all *_mime_minor fields to 100 bytes in size ... " );
+ $wgDatabase->sourceFile( archive( 'patch-mime_minor_length.sql' ) );
+ wfOut( "ok\n" );
+ }
+}
+
+
+
/***********************************************************************
- * Start PG crap
+ * Start PG stuff
* TODO: merge with above
***********************************************************************/
-function
-pg_describe_table($table)
-{
-global $wgDatabase, $wgDBmwschema;
+function pg_describe_table($table) {
+ global $wgDatabase, $wgDBmwschema;
$q = <<<END
SELECT attname, attnum FROM pg_namespace, pg_class, pg_attribute
- WHERE pg_class.relnamespace = pg_namespace.oid
+ WHERE pg_class.relnamespace = pg_namespace.oid
AND attrelid=pg_class.oid AND attnum > 0
AND relname=%s AND nspname=%s
END;
@@ -1266,7 +1390,7 @@ END;
$cols = array();
while ($r = $wgDatabase->fetchRow($res)) {
- $cols[] = array(
+ $cols[] = array(
"name" => $r[0],
"ord" => $r[1],
);
@@ -1274,10 +1398,8 @@ END;
return $cols;
}
-function
-pg_describe_index($idx)
-{
-global $wgDatabase, $wgDBmwschema;
+function pg_describe_index($idx) {
+ global $wgDatabase, $wgDBmwschema;
// first fetch the key (which is a list of columns ords) and
// the table the index applies to (an oid)
@@ -1325,10 +1447,8 @@ END;
return $colnames;
}
-function
-pg_index_exists($table, $index)
-{
-global $wgDatabase, $wgDBmwschema;
+function pg_index_exists($table, $index) {
+ global $wgDatabase, $wgDBmwschema;
$exists = $wgDatabase->selectField("pg_indexes", "indexname",
array( "indexname" => $index,
"tablename" => $table,
@@ -1336,10 +1456,8 @@ global $wgDatabase, $wgDBmwschema;
return $exists === $index;
}
-function
-pg_fkey_deltype($fkey)
-{
-global $wgDatabase, $wgDBmwschema;
+function pg_fkey_deltype($fkey) {
+ global $wgDatabase, $wgDBmwschema;
$q = <<<END
SELECT confdeltype FROM pg_constraint, pg_namespace
WHERE connamespace=pg_namespace.oid
@@ -1354,10 +1472,8 @@ END;
return $row[0];
}
-function
-pg_rule_def($table, $rule)
-{
-global $wgDatabase, $wgDBmwschema;
+function pg_rule_def($table, $rule) {
+ global $wgDatabase, $wgDBmwschema;
$q = <<<END
SELECT definition FROM pg_rules
WHERE schemaname = %s
@@ -1439,8 +1555,8 @@ function do_postgres_updates() {
}
$newsequences = array(
- "log_log_id_seq",
- "pr_id_val",
+ "logging_log_id_seq",
+ "page_restrictions_pr_id_seq",
);
$newtables = array(
@@ -1456,8 +1572,11 @@ function do_postgres_updates() {
array("redirect", "patch-redirect.sql"),
array("updatelog", "patch-updatelog.sql"),
array('change_tag', 'patch-change_tag.sql'),
- array('tag_summary', 'patch-change_tag.sql'),
- array('valid_tag', 'patch-change_tag.sql'),
+ array('tag_summary', 'patch-change_tag.sql'),
+ array('valid_tag', 'patch-change_tag.sql'),
+ array('user_properties', 'patch-user_properties.sql'),
+ array('log_search', 'patch-log_search.sql'),
+ array('l10n_cache', 'patch-l10n_cache.sql'),
);
$newcols = array(
@@ -1475,7 +1594,7 @@ function do_postgres_updates() {
array("ipblocks", "ipb_enable_autoblock", "SMALLINT NOT NULL DEFAULT 1"),
array("filearchive", "fa_deleted", "SMALLINT NOT NULL DEFAULT 0"),
array("logging", "log_deleted", "SMALLINT NOT NULL DEFAULT 0"),
- array("logging", "log_id", "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('log_log_id_seq')"),
+ array("logging", "log_id", "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('logging_log_id_seq')"),
array("logging", "log_params", "TEXT"),
array("mwuser", "user_editcount", "INTEGER"),
array("mwuser", "user_hidden", "SMALLINT NOT NULL DEFAULT 0"),
@@ -1486,20 +1605,24 @@ function do_postgres_updates() {
array("oldimage", "oi_metadata", "BYTEA NOT NULL DEFAULT ''"),
array("oldimage", "oi_minor_mime", "TEXT NOT NULL DEFAULT 'unknown'"),
array("oldimage", "oi_sha1", "TEXT NOT NULL DEFAULT ''"),
- array("page_restrictions", "pr_id", "INTEGER NOT NULL UNIQUE DEFAULT nextval('pr_id_val')"),
+ array("page_restrictions", "pr_id", "INTEGER NOT NULL UNIQUE DEFAULT nextval('page_restrictions_pr_id_val')"),
array("profiling", "pf_memory", "NUMERIC(18,10) NOT NULL DEFAULT 0"),
array("recentchanges", "rc_deleted", "SMALLINT NOT NULL DEFAULT 0"),
array("recentchanges", "rc_log_action", "TEXT"),
- array("recentchanges", "rc_log_type", "TEXT"),
- array("recentchanges", "rc_logid", "INTEGER NOT NULL DEFAULT 0"),
+ array("recentchanges", "rc_log_type", "TEXT"),
+ array("recentchanges", "rc_logid", "INTEGER NOT NULL DEFAULT 0"),
array("recentchanges", "rc_new_len", "INTEGER"),
array("recentchanges", "rc_old_len", "INTEGER"),
array("recentchanges", "rc_params", "TEXT"),
+ array("redirect", "rd_interwiki", "TEXT NULL"),
+ array("redirect", "rd_fragment", "TEXT NULL"),
array("revision", "rev_deleted", "SMALLINT NOT NULL DEFAULT 0"),
array("revision", "rev_len", "INTEGER"),
array("revision", "rev_parent_id", "INTEGER DEFAULT NULL"),
array("site_stats", "ss_active_users", "INTEGER DEFAULT '-1'"),
array("user_newtalk", "user_last_timestamp", "TIMESTAMPTZ"),
+ array("logging", "log_user_text", "TEXT NOT NULL DEFAULT ''"),
+ array("logging", "log_page", "INTEGER"),
);
@@ -1568,19 +1691,26 @@ function do_postgres_updates() {
array("recentchanges", "rc_timestamp_bot", "(rc_timestamp) WHERE rc_bot = 0"),
array("templatelinks", "templatelinks_from", "(tl_from)"),
array("watchlist", "wl_user", "(wl_user)"),
+ array("logging", "logging_user_type_time", "(log_user, log_type, log_timestamp)"),
+ array("logging", "logging_page_id_time", "(log_page,log_timestamp)"),
);
$newrules = array(
);
+ #Check new sequences, rename if needed
foreach ($newsequences as $ns) {
- if ($wgDatabase->sequenceExists($ns)) {
- wfOut( "... sequence \"$ns\" already exists\n" );
+ if( $wgDatabase->sequenceExists('pr_id_val') ) {
+ wfOut( "Updating sequence names\n" );
+ $wgDatabase->sourceFile(archive('patch-update_sequences.sql'));
+ continue;
+ } elseif ( $wgDatabase->sequenceExists('page_restrictions_pr_id_seq') ) {
+ wfOut( "... sequences already updated\n" );
continue;
+ } else {
+ wfOut( "Creating sequence \"$ns\"\n" );
+ $wgDatabase->query("CREATE SEQUENCE $ns");
}
-
- wfOut( "Creating sequence \"$ns\"\n" );
- $wgDatabase->query("CREATE SEQUENCE $ns");
}
foreach ($newtables as $nt) {
@@ -1590,7 +1720,7 @@ function do_postgres_updates() {
}
wfOut( "Creating table \"$nt[0]\"\n" );
- dbsource(archive($nt[1]));
+ $wgDatabase->sourceFile(archive($nt[1]));
}
## Needed before newcols
@@ -1604,7 +1734,7 @@ function do_postgres_updates() {
wfOut( "Dropping rule \"archive_delete\"\n" );
$wgDatabase->query("DROP RULE archive_delete ON archive");
}
- dbsource(archive("patch-remove-archive2.sql"));
+ $wgDatabase->sourceFile(archive("patch-remove-archive2.sql"));
}
else
wfOut( "... obsolete table \"archive2\" does not exist\n" );
@@ -1699,21 +1829,27 @@ function do_postgres_updates() {
continue;
}
wfOut( "Adding rule \"$nr[1]\" to table \"$nr[0]\"\n" );
- dbsource(archive($nr[2]));
+ $wgDatabase->sourceFile(archive($nr[2]));
}
- if ($wgDatabase->hasConstraint("oldimage_oi_name_fkey")) {
- wfOut( "Making foreign key on table \"oldimage\" (to image) a cascade delete\n" );
- $wgDatabase->query( "ALTER TABLE oldimage DROP CONSTRAINT oldimage_oi_name_fkey" );
- $wgDatabase->query( "ALTER TABLE oldimage ADD CONSTRAINT oldimage_oi_name_fkey_cascade ".
- "FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE" );
+ if ($wgDatabase->hasConstraint("oldimage_oi_name_fkey_cascaded")) {
+ wfOut( "... table \"oldimage\" has correct cascading delete/update foreign key to image\n" );
+ }
+ else {
+ if ($wgDatabase->hasConstraint("oldimage_oi_name_fkey")) {
+ $wgDatabase->query( "ALTER TABLE oldimage DROP CONSTRAINT oldimage_oi_name_fkey" );
+ }
+ if ($wgDatabase->hasConstraint("oldimage_oi_name_fkey_cascade")) {
+ $wgDatabase->query( "ALTER TABLE oldimage DROP CONSTRAINT oldimage_oi_name_fkey_cascade" );
+ }
+ wfOut( "Making foreign key on table \"oldimage\" (to image) a cascade delete/update\n" );
+ $wgDatabase->query( "ALTER TABLE oldimage ADD CONSTRAINT oldimage_oi_name_fkey_cascaded ".
+ "FOREIGN KEY (oi_name) REFERENCES image(img_name) ON DELETE CASCADE ON UPDATE CASCADE" );
}
- else
- wfOut( "... table \"oldimage\" has correct cascade delete foreign key to image\n" );
if (!$wgDatabase->triggerExists("page", "page_deleted")) {
wfOut( "Adding function and trigger \"page_deleted\" to table \"page\"\n" );
- dbsource(archive('patch-page_deleted.sql'));
+ $wgDatabase->sourceFile(archive('patch-page_deleted.sql'));
}
else
wfOut( "... table \"page\" has \"page_deleted\" trigger\n" );
@@ -1721,7 +1857,7 @@ function do_postgres_updates() {
$fi = $wgDatabase->fieldInfo("recentchanges", "rc_cur_id");
if (!$fi->nullable()) {
wfOut( "Removing NOT NULL constraint from \"recentchanges.rc_cur_id\"\n" );
- dbsource(archive('patch-rc_cur_id-not-null.sql'));
+ $wgDatabase->sourceFile(archive('patch-rc_cur_id-not-null.sql'));
}
else
wfOut( "... column \"recentchanges.rc_cur_id\" has a NOT NULL constraint\n" );
@@ -1747,7 +1883,7 @@ function do_postgres_updates() {
}
else {
wfOut( "Changing constraint \"revision_rev_user_fkey\" to ON DELETE RESTRICT\n" );
- dbsource(archive('patch-revision_rev_user_fkey.sql'));
+ $wgDatabase->sourceFile(archive('patch-revision_rev_user_fkey.sql'));
}
# Fix ipb_address index
@@ -1760,10 +1896,10 @@ function do_postgres_updates() {
}
else {
wfOut( "Adding ipb_address_unique index\n" );
- dbsource(archive('patch-ipb_address_unique.sql'));
+ $wgDatabase->sourceFile(archive('patch-ipb_address_unique.sql'));
}
- global $wgExtNewTables, $wgExtPGNewFields, $wgExtNewIndexes;
+ global $wgExtNewTables, $wgExtPGNewFields, $wgExtPGAlteredFields, $wgExtNewIndexes;
# Add missing extension tables
foreach ( $wgExtNewTables as $nt ) {
if ($wgDatabase->tableExists($nt[0])) {
@@ -1771,7 +1907,7 @@ function do_postgres_updates() {
continue;
}
wfOut( "Creating table \"$nt[0]\"\n" );
- dbsource($nt[1]);
+ $wgDatabase->sourceFile($nt[1]);
}
# Add missing extension fields
foreach ( $wgExtPGNewFields as $nc ) {
@@ -1783,6 +1919,26 @@ function do_postgres_updates() {
wfOut( "Adding column \"$nc[0].$nc[1]\"\n" );
$wgDatabase->query( "ALTER TABLE $nc[0] ADD $nc[1] $nc[2]" );
}
+ # Change altered columns
+ foreach ( $wgExtPGAlteredFields as $nc ) {
+ $fi = $wgDatabase->fieldInfo($nc[0], $nc[1]);
+ if (is_null($fi)) {
+ wfOut( "WARNING! Column \"$nc[0].$nc[1]\" does not exist but had an alter request! Please report this.\n" );
+ continue;
+ }
+ $oldtype = $fi->type();
+ $newtype = strtolower( $nc[2] );
+ if ($oldtype === $newtype) {
+ wfOut( "... column \"$nc[0].$nc[1]\" has correct type of \"$newtype\"\n" );
+ continue;
+ }
+ $command = "ALTER TABLE $nc[0] ALTER $nc[1] TYPE $nc[2]";
+ if ( isset( $nc[3] ) ) {
+ $command .= " USING $nc[3]";
+ }
+ wfOut( "Altering column \"$nc[0].$nc[1]\" from type \"$oldtype\" to \"$newtype\"\n" );
+ $wgDatabase->query( $command );
+ }
# Add missing extension indexes
foreach ( $wgExtNewIndexes as $ni ) {
if (pg_index_exists($ni[0], $ni[1])) {
@@ -1794,18 +1950,18 @@ function do_postgres_updates() {
$wgDatabase->query( "CREATE INDEX $ni[1] ON $ni[0] $ni[2]" );
}
else {
- dbsource($ni[2]);
+ $wgDatabase->sourceFile($ni[2]);
}
}
# Tweak the page_title tsearch2 trigger to filter out slashes
# This is create or replace, so harmless to call if not needed
- dbsource(archive('patch-ts2pagetitle.sql'));
+ $wgDatabase->sourceFile(archive('patch-ts2pagetitle.sql'));
## If the server is 8.3 or higher, rewrite the tsearch2 triggers
## in case they have the old 'default' versions
if ( $numver >= 8.3 )
- dbsource(archive('patch-tsearch2funcs.sql'));
+ $wgDatabase->sourceFile(archive('patch-tsearch2funcs.sql'));
## Put a new row in the mediawiki_version table
$wgDatabase->insert( 'mediawiki_version',
@@ -1814,8 +1970,8 @@ function do_postgres_updates() {
'ctype' => 'U',
'mw_version' => $wgVersion,
'pg_version' => $version,
- 'sql_version' => '$LastChangedRevision: 60080 $',
- 'sql_date' => '$LastChangedDate: 2009-12-16 04:24:12 +1100 (Wed, 16 Dec 2009) $',
+ 'sql_version' => '$LastChangedRevision: 62877 $',
+ 'sql_date' => '$LastChangedDate: 2010-02-24 01:13:36 +1100 (Wed, 24 Feb 2010) $',
) );
return;
}
diff --git a/maintenance/upgrade1_5.php b/maintenance/upgrade1_5.php
index 32634b67..4834a4a1 100644
--- a/maintenance/upgrade1_5.php
+++ b/maintenance/upgrade1_5.php
@@ -15,7 +15,7 @@
$options = array( 'step', 'noimages' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
require_once( 'FiveUpgrade.inc' );
echo "ATTENTION: This script is for upgrades from 1.4 to 1.5 (NOT 1.15) in very special cases.\n";
diff --git a/maintenance/userOptions.inc b/maintenance/userOptions.inc
index 00278f51..d660019d 100644
--- a/maintenance/userOptions.inc
+++ b/maintenance/userOptions.inc
@@ -8,7 +8,7 @@
$options = array( 'list', 'nowarn', 'quiet', 'usage', 'dry' );
$optionsWithArgs = array( 'old', 'new' );
-require_once( 'commandLine.inc' );
+require_once( dirname(__FILE__) . '/commandLine.inc' );
/**
* @ingroup Maintenance
@@ -246,13 +246,7 @@ Users with option <$this->mAnOption> = '$this->mOldValue' will be made to use '$
Abort with control-c in the next five seconds....
WARN;
- require('counter.php');
- for ($i=6;$i>=1;) {
- print_c($i, --$i);
- sleep(1);
- }
- print "\n";
-
+ wfCountDown( 5 );
return true;
}
diff --git a/maintenance/users.sql b/maintenance/users.sql
index 755bf9f7..1db32ae2 100644
--- a/maintenance/users.sql
+++ b/maintenance/users.sql
@@ -4,9 +4,9 @@
-- from local settings.
--
-GRANT DELETE,INSERT,SELECT,UPDATE,CREATE TEMPORARY TABLES ON `{$wgDBname}`.*
+GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
TO '{$wgDBuser}'@'%' IDENTIFIED BY '{$wgDBpassword}';
-GRANT DELETE,INSERT,SELECT,UPDATE,CREATE TEMPORARY TABLES ON `{$wgDBname}`.*
+GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
TO '{$wgDBuser}'@localhost IDENTIFIED BY '{$wgDBpassword}';
-GRANT DELETE,INSERT,SELECT,UPDATE,CREATE TEMPORARY TABLES ON `{$wgDBname}`.*
+GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
TO '{$wgDBuser}'@localhost.localdomain IDENTIFIED BY '{$wgDBpassword}';
diff --git a/maintenance/waitForSlave.php b/maintenance/waitForSlave.php
index 309d0e7d..f2a532c9 100644
--- a/maintenance/waitForSlave.php
+++ b/maintenance/waitForSlave.php
@@ -1,15 +1,34 @@
<?php
/**
- * @see wfWaitForSlaves()
- * @file
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
+ * @see wfWaitForSlaves()
*/
-require_once( "commandLine.inc" );
-if ( isset( $args[0] ) ) {
- wfWaitForSlaves($args[0]);
-} else {
- wfWaitForSlaves(10);
-}
+require_once( dirname(__FILE__) . '/Maintenance.php' );
+class WaitForSlave extends Maintenance {
+ public function __construct() {
+ $this->addArg( 'maxlag', 'How long to wait for the slaves, default 10 seconds', false );
+ }
+ public function execute() {
+ wfWaitForSlaves( $this->getArg( 0, 10 ) );
+ }
+}
+$maintClass = "WaitForSlave";
+require_once( DO_MAINTENANCE );
diff --git a/maintenance/wikipedia-interwiki.sql b/maintenance/wikipedia-interwiki.sql
index 5c0857b5..f683439e 100644
--- a/maintenance/wikipedia-interwiki.sql
+++ b/maintenance/wikipedia-interwiki.sql
@@ -13,6 +13,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
-- An alphabetical list of Wikipedia sites:
('aa','http://aa.wikipedia.org/wiki/$1',1),
('ab','http://ab.wikipedia.org/wiki/$1',1),
+('ace','http://ace.wikipedia.org/wiki/$1',1),
('af','http://af.wikipedia.org/wiki/$1',1),
('ak','http://ak.wikipedia.org/wiki/$1',1),
('als','http://als.wikipedia.org/wiki/$1',1),
@@ -21,6 +22,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('ang','http://ang.wikipedia.org/wiki/$1',1),
('ar','http://ar.wikipedia.org/wiki/$1',1),
('arc','http://arc.wikipedia.org/wiki/$1',1),
+('arz','http://arz.wikipedia.org/wiki/$1',1),
('as','http://as.wikipedia.org/wiki/$1',1),
('ast','http://ast.wikipedia.org/wiki/$1',1),
('av','http://av.wikipedia.org/wiki/$1',1),
@@ -52,6 +54,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('cho','http://cho.wikipedia.org/wiki/$1',1),
('chr','http://chr.wikipedia.org/wiki/$1',1),
('chy','http://chy.wikipedia.org/wiki/$1',1),
+('ckb','http://ckb.wikipedia.org/wiki/$1',1),
('co','http://co.wikipedia.org/wiki/$1',1),
('cr','http://cr.wikipedia.org/wiki/$1',1),
('crh','http://crh.wikipedia.org/wiki/$1',1),
@@ -154,6 +157,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('mdf','http://mdf.wikipedia.org/wiki/$1',1),
('mg','http://mg.wikipedia.org/wiki/$1',1),
('mh','http://mh.wikipedia.org/wiki/$1',1),
+('mhr','http://mhr.wikipedia.org/wiki/$1',1),
('mi','http://mi.wikipedia.org/wiki/$1',1),
('minnan','http://zh-min-nan.wikipedia.org/wiki/$1',1),
('mk','http://mk.wikipedia.org/wiki/$1',1),
@@ -164,6 +168,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('ms','http://ms.wikipedia.org/wiki/$1',1),
('mt','http://mt.wikipedia.org/wiki/$1',1),
('mus','http://mus.wikipedia.org/wiki/$1',1),
+('mwl','http://mwl.wikipedia.org/wiki/$1',1),
('my','http://my.wikipedia.org/wiki/$1',1),
('myv','http://myv.wikipedia.org/wiki/$1',1),
('mzn','http://mzn.wikipedia.org/wiki/$1',1),
@@ -196,6 +201,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('pih','http://pih.wikipedia.org/wiki/$1',1),
('pl','http://pl.wikipedia.org/wiki/$1',1),
('pms','http://pms.wikipedia.org/wiki/$1',1),
+('pnb','http://pnb.wikipedia.org/wiki/$1',1),
('ps','http://ps.wikipedia.org/wiki/$1',1),
('pt','http://pt.wikipedia.org/wiki/$1',1),
('qu','http://qu.wikipedia.org/wiki/$1',1),
@@ -242,7 +248,6 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('ti','http://ti.wikipedia.org/wiki/$1',1),
('tk','http://tk.wikipedia.org/wiki/$1',1),
('tl','http://tl.wikipedia.org/wiki/$1',1),
-('tlh','http://tlh.wikipedia.org/wiki/$1',1),
('tn','http://tn.wikipedia.org/wiki/$1',1),
('to','http://to.wikipedia.org/wiki/$1',1),
('tokipona','http://tokipona.wikipedia.org/wiki/$1',1),
diff --git a/math/README b/math/README
index 069be750..d0e21648 100644
--- a/math/README
+++ b/math/README
@@ -48,13 +48,13 @@ Just Works. It can be run manually for testing or for use in another app.
=== Command-line parameters ===
- texvc <temp directory> <output directory> <TeX code> <encoding>
+ texvc <temp directory> <output directory> <TeX code> <encoding> <color>
Be sure to properly quote the TeX code!
Example:
- texvc /home/wiki/tmp /home/wiki/math "y=x+2" iso-8859-1
+ texvc /home/wiki/tmp /home/wiki/math "y=x+2" iso-8859-1 "rgb 1.0 1.0 1.0"
=== Output format ===
diff --git a/math/render.ml b/math/render.ml
index 67ecab8d..f1673555 100644
--- a/math/render.ml
+++ b/math/render.ml
@@ -5,11 +5,11 @@ let cmd_convert tmpprefix finalpath = "convert -quality 100 -density 120 " ^ tmp
(* Putting -bg Transparent in dvipng's arguments will give full-alpha transparency *)
(* Note that IE have problems with such PNGs and need an additional javascript snippet *)
(* Putting -bg transparent in dvipng's arguments will give binary transparency *)
-let cmd_dvipng tmpprefix finalpath = "dvipng -gamma 1.5 -D 120 -T tight --strict " ^ tmpprefix ^ ".dvi -o " ^ finalpath ^ " >/dev/null 2>/dev/null"
+let cmd_dvipng tmpprefix finalpath backcolor = "dvipng -bg \'" ^ backcolor ^ "\' -gamma 1.5 -D 120 -T tight --strict " ^ tmpprefix ^ ".dvi -o " ^ finalpath ^ " >/dev/null 2>/dev/null"
exception ExternalCommandFailure of string
-let render tmppath finalpath outtex md5 =
+let render tmppath finalpath outtex md5 backcolor =
let tmpprefix0 = (string_of_int (Unix.getpid ()))^"_"^md5 in
let tmpprefix = (tmppath^"/"^tmpprefix0) in
let unlink_all () =
@@ -30,7 +30,7 @@ let render tmppath finalpath outtex md5 =
close_out f;
if Util.run_in_other_directory tmppath (cmd_latex tmpprefix0) != 0
then (unlink_all (); raise (ExternalCommandFailure "latex"))
- else if (Sys.command (cmd_dvipng tmpprefix (finalpath^"/"^md5^".png")) != 0)
+ else if (Sys.command (cmd_dvipng tmpprefix (finalpath^"/"^md5^".png") backcolor) != 0)
then (if (Sys.command (cmd_dvips tmpprefix) != 0)
then (unlink_all (); raise (ExternalCommandFailure "dvips"))
else if (Sys.command (cmd_convert tmpprefix (finalpath^"/"^md5^".png")) != 0)
diff --git a/math/texutil.ml b/math/texutil.ml
index 7355bd64..ad4fce10 100644
--- a/math/texutil.ml
+++ b/math/texutil.ml
@@ -481,7 +481,7 @@ let find = function
| "\\underbrace" -> LITERAL (TEX_ONLY "\\underbrace ")
| "\\overleftarrow" -> LITERAL (TEX_ONLY "\\overleftarrow ")
| "\\overrightarrow" -> LITERAL (TEX_ONLY "\\overrightarrow ")
- | "\\overleftrightarrow"->LITERAL (TEX_ONLY "\\overleftrightarrow ")
+ | "\\overleftrightarrow"-> (tex_use_ams(); LITERAL (TEX_ONLY "\\overleftrightarrow "))
| "\\check" -> FUN_AR1 "\\check "
| "\\acute" -> FUN_AR1 "\\acute "
| "\\grave" -> FUN_AR1 "\\grave "
@@ -733,4 +733,6 @@ let find = function
| "\\vbox" -> raise (Failure "malformatted \\vbox")
| "\\hbox" -> raise (Failure "malformatted \\hbox")
| "\\color" -> (tex_use_color (); LITERAL (TEX_ONLY "\\color"))
+ | "\\pagecolor" -> (tex_use_color (); LITERAL (TEX_ONLY "\\pagecolor"))
+ | "\\definecolor" -> (tex_use_color (); LITERAL (TEX_ONLY "\\definecolor"))
| s -> raise (Illegal_tex_function s)
diff --git a/math/texvc.ml b/math/texvc.ml
index abddd3d0..38a7e93b 100644
--- a/math/texvc.ml
+++ b/math/texvc.ml
@@ -3,7 +3,7 @@ let lexer_token_safe lexbuf =
try Lexer.token lexbuf
with Failure s -> raise (LexerException s)
-let render tmppath finalpath tree =
+let render tmppath finalpath tree backcolor =
let outtex = Util.mapjoin Texutil.render_tex tree in
let md5 = Digest.to_hex (Digest.string outtex) in
begin
@@ -19,11 +19,11 @@ let render tmppath finalpath tree =
| Some h,Html.LIBERAL,Some m -> "L" ^ md5 ^ h ^ "\000" ^ m
| None,_,Some m -> "X" ^ md5 ^ m
);
- Render.render tmppath finalpath outtex md5
+ Render.render tmppath finalpath outtex md5 backcolor
end
let _ =
Texutil.set_encoding (try Sys.argv.(4) with _ -> "UTF-8");
- try render Sys.argv.(1) Sys.argv.(2) (Parser.tex_expr lexer_token_safe (Lexing.from_string Sys.argv.(3)))
+ try render Sys.argv.(1) Sys.argv.(2) (Parser.tex_expr lexer_token_safe (Lexing.from_string Sys.argv.(3))) (try Sys.argv.(5) with _ -> "rgb 1.0 1.0 1.0")
with Parsing.Parse_error -> print_string "S"
| LexerException _ -> print_string "E"
| Texutil.Illegal_tex_function s -> print_string ("F" ^ s)
diff --git a/php5.php5 b/php5.php5
index fd7f2182..44f51133 100644
--- a/php5.php5
+++ b/php5.php5
@@ -7,5 +7,3 @@
if ( version_compare( phpversion(), '5.0.0' ) >= 0 ) {
echo 'y'.'e'.'s';
}
-
-?>
diff --git a/profileinfo.php b/profileinfo.php
index 01e3f0aa..d7ae5b8c 100644
--- a/profileinfo.php
+++ b/profileinfo.php
@@ -1,13 +1,9 @@
<?php
ini_set( 'zlib.output_compression', 'off' );
-$wgDBadminuser = $wgDBadminpassword = $wgDBserver = $wgDBname = $wgDBprefix = false;
$wgEnableProfileInfo = $wgProfileToDatabase = false;
-define( 'MW_NO_SETUP', 1 );
require_once( './includes/WebStart.php' );
-@include_once( './AdminSettings.php' );
-require_once( './includes/GlobalFunctions.php' );
?>
<!--
@@ -68,22 +64,15 @@ require_once( './includes/GlobalFunctions.php' );
<body>
<?php
-if (!$wgEnableProfileInfo) {
+if ( !$wgEnableProfileInfo ) {
echo "<p>Disabled</p>\n";
echo "</body></html>";
exit( 1 );
}
-foreach (array("wgDBadminuser", "wgDBadminpassword", "wgDBserver", "wgDBname") as $var)
- if ($$var === false) {
- echo "AdminSettings.php not correct\n";
- exit( 1 );
- }
-
-
$expand = array();
-if (isset($_REQUEST['expand']))
- foreach(explode(",", $_REQUEST['expand']) as $f)
+if ( isset( $_REQUEST['expand'] ) )
+ foreach( explode( ',', $_REQUEST['expand'] ) as $f )
$expand[$f] = true;
class profile_point {
@@ -92,7 +81,7 @@ class profile_point {
var $time;
var $children;
- function profile_point($name, $count, $time, $memory ) {
+ function profile_point( $name, $count, $time, $memory ) {
$this->name = $name;
$this->count = $count;
$this->time = $time;
@@ -100,35 +89,35 @@ class profile_point {
$this->children = array();
}
- function add_child($child) {
+ function add_child( $child ) {
$this->children[] = $child;
}
function display($indent = 0.0) {
global $expand, $totaltime, $totalmemory, $totalcount;
- usort($this->children, "compare_point");
+ usort( $this->children, 'compare_point' );
$extet = '';
- if (isset($expand[$this->name()]))
+ if ( isset( $expand[$this->name()] ) )
$ex = true;
else $ex = false;
- if (!$ex) {
- if (count($this->children)) {
- $url = getEscapedProfileUrl(false, false, $expand + array($this->name() => true));
+ if ( !$ex ) {
+ if ( count( $this->children ) ) {
+ $url = getEscapedProfileUrl( false, false, $expand + array( $this->name() => true ) );
$extet = " <a href=\"$url\">[+]</a>";
} else $extet = '';
} else {
$e = array();
- foreach ($expand as $name => $ep)
- if ($name != $this->name())
- $e += array($name => $ep);
+ foreach ( $expand as $name => $ep )
+ if ( $name != $this->name() )
+ $e += array( $name => $ep );
- $extet = " <a href=\"" . getEscapedProfileUrl(false, false, $e) . "\">[&ndash;]</a>";
+ $extet = " <a href=\"" . getEscapedProfileUrl( false, false, $e ) . "\">[&ndash;]</a>";
}
?>
<tr>
<td class="name" style="padding-left: <?php echo $indent ?>em;">
- <?php echo htmlspecialchars($this->name()) . $extet ?>
+ <?php echo htmlspecialchars( $this->name() ) . $extet ?>
</td>
<td class="timep"><?php echo @wfPercent( $this->time() / $totaltime * 100 ) ?></td>
<td class="memoryp"><?php echo @wfPercent( $this->memory() / $totalmemory * 100 ) ?></td>
@@ -140,9 +129,9 @@ class profile_point {
<td class="mpr"><?php echo @round( sprintf( '%.2f' ,$this->memory() / $totalcount / 1024 ), 2 ) ?></td>
</tr>
<?php
- if ($ex) {
- foreach ($this->children as $child) {
- $child->display($indent + 2);
+ if ( $ex ) {
+ foreach ( $this->children as $child ) {
+ $child->display( $indent + 2 );
}
}
}
@@ -164,38 +153,38 @@ class profile_point {
}
function timePerCall() {
- return @($this->time / $this->count);
+ return @( $this->time / $this->count );
}
function memoryPerCall() {
- return @($this->memory / $this->count);
+ return @( $this->memory / $this->count );
}
function callsPerRequest() {
global $totalcount;
- return @($this->count / $totalcount);
+ return @( $this->count / $totalcount );
}
function timePerRequest() {
global $totalcount;
- return @($this->time / $totalcount);
+ return @( $this->time / $totalcount );
}
function memoryPerRequest() {
global $totalcount;
- return @($this->memory / $totalcount);
+ return @( $this->memory / $totalcount );
}
function fmttime() {
- return sprintf("%5.02f", $this->time);
+ return sprintf( "%5.02f", $this->time );
}
};
-function compare_point($a, $b) {
+function compare_point( $a, $b ) {
global $sort;
- switch ($sort) {
+ switch ( $sort ) {
case "name":
- return strcmp($a->name(), $b->name());
+ return strcmp( $a->name(), $b->name() );
case "time":
return $a->time() > $b->time() ? -1 : 1;
case "memory":
@@ -215,26 +204,23 @@ function compare_point($a, $b) {
}
}
-$sorts = array("time","memory","count","calls_per_req","name","time_per_call","memory_per_call","time_per_req","memory_per_req");
+$sorts = array( 'time', 'memory', 'count', 'calls_per_req', 'name',
+ 'time_per_call', 'memory_per_call', 'time_per_req', 'memory_per_req' );
$sort = 'time';
-if (isset($_REQUEST['sort']) && in_array($_REQUEST['sort'], $sorts))
+if ( isset( $_REQUEST['sort'] ) && in_array( $_REQUEST['sort'], $sorts ) )
$sort = $_REQUEST['sort'];
-$dbh = mysql_connect($wgDBserver, $wgDBadminuser, $wgDBadminpassword)
- or die("mysql server failed: " . mysql_error());
-mysql_select_db($wgDBname, $dbh) or die(mysql_error($dbh));
-$res = mysql_query("
- SELECT pf_count, pf_time, pf_memory, pf_name
- FROM {$wgDBprefix}profiling
- ORDER BY pf_name ASC
-", $dbh) or die("query failed: " . mysql_error());
-if (isset($_REQUEST['filter']))
+$dbr = wfGetDB( DB_SLAVE );
+$res = $dbr->select( 'profiling', '*', array(), 'profileinfo.php', array( 'ORDER BY' => 'pf_name ASC' ) );
+
+if (isset( $_REQUEST['filter'] ) )
$filter = $_REQUEST['filter'];
-else $filter = '';
+else
+ $filter = '';
?>
-<form method="profiling.php">
+<form method="get" action="profileinfo.php">
<p>
<input type="text" name="filter" value="<?php echo htmlspecialchars($filter)?>"/>
<input type="hidden" name="sort" value="<?php echo htmlspecialchars($sort)?>"/>
@@ -245,15 +231,15 @@ else $filter = '';
<table cellspacing="0" border="1">
<tr id="top">
-<th><a href="<?php echo getEscapedProfileUrl(false, "name") ?>">Name</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "time") ?>">Time (%)</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "memory") ?>">Memory (%)</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "count") ?>">Count</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "calls_per_req") ?>">Calls/req</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "time_per_call") ?>">ms/call</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "memory_per_call") ?>">kb/call</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "time_per_req") ?>">ms/req</a></th>
-<th><a href="<?php echo getEscapedProfileUrl(false, "memory_per_req") ?>">kb/req</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'name' ) ?>">Name</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'time' ) ?>">Time (%)</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'memory' ) ?>">Memory (%)</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'count' ) ?>">Count</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'calls_per_req' ) ?>">Calls/req</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_call' ) ?>">ms/call</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_call' ) ?>">kb/call</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'time_per_req' ) ?>">ms/req</a></th>
+<th><a href="<?php echo getEscapedProfileUrl( false, 'memory_per_req' ) ?>">kb/req</a></th>
</tr>
<?php
$totaltime = 0.0;
@@ -281,21 +267,21 @@ $queries = array();
$sqltotal = 0.0;
$last = false;
-while (($o = mysql_fetch_object($res)) !== false) {
- $next = new profile_point($o->pf_name, $o->pf_count, $o->pf_time, $o->pf_memory);
+foreach( $res as $o ) {
+ $next = new profile_point( $o->pf_name, $o->pf_count, $o->pf_time, $o->pf_memory );
if( $next->name() == '-total' ) {
$totaltime = $next->time();
$totalcount = $next->count();
$totalmemory = $next->memory();
}
- if ($last !== false) {
- if (preg_match("/^".preg_quote($last->name(), "/")."/", $next->name())) {
+ if ( $last !== false ) {
+ if ( preg_match( "/^".preg_quote( $last->name(), "/" )."/", $next->name() ) ) {
$last->add_child($next);
continue;
}
}
$last = $next;
- if (preg_match("/^query: /", $next->name()) || preg_match("/^query-m: /", $next->name())) {
+ if ( preg_match( "/^query: /", $next->name() ) || preg_match( "/^query-m: /", $next->name() ) ) {
$sqltotal += $next->time();
$queries[] = $next;
} else {
@@ -303,15 +289,15 @@ while (($o = mysql_fetch_object($res)) !== false) {
}
}
-$s = new profile_point("SQL Queries", 0, $sqltotal, 0, 0);
-foreach ($queries as $q)
+$s = new profile_point( "SQL Queries", 0, $sqltotal, 0, 0 );
+foreach ( $queries as $q )
$s->add_child($q);
$points[] = $s;
-usort($points, "compare_point");
+usort( $points, "compare_point" );
-foreach ($points as $point) {
- if (strlen($filter) && !strstr($point->name(), $filter))
+foreach ( $points as $point ) {
+ if ( strlen( $filter ) && !strstr( $point->name(), $filter ) )
continue;
$point->display();
@@ -321,11 +307,5 @@ foreach ($points as $point) {
<p>Total time: <tt><?php printf("%5.02f", $totaltime) ?></tt></p>
<p>Total memory: <tt><?php printf("%5.02f", $totalmemory / 1024 ) ?></tt></p>
-<?php
-
-mysql_free_result($res);
-mysql_close($dbh);
-
-?>
</body>
</html>
diff --git a/redirect.phtml b/redirect.phtml
index 79e3cea6..3e430bff 100644
--- a/redirect.phtml
+++ b/redirect.phtml
@@ -1,4 +1,3 @@
<?php
// stub file for compatibility with older versions
include_once('./redirect.php');
-?> \ No newline at end of file
diff --git a/serialized/Makefile b/serialized/Makefile
index fcdcbff7..062155b6 100644
--- a/serialized/Makefile
+++ b/serialized/Makefile
@@ -1,20 +1,12 @@
-MESSAGE_SOURCES=$(wildcard ../languages/messages/Messages*.php)
-MESSAGE_TARGETS=$(patsubst ../languages/messages/Messages%.php, Messages%.ser, $(MESSAGE_SOURCES))
SPECIAL_TARGETS=Utf8Case.ser
-ALL_TARGETS=$(MESSAGE_TARGETS) $(SPECIAL_TARGETS)
-DIST_TARGETS=$(SPECIAL_TARGETS) \
- MessagesDe.ser \
- MessagesEn.ser \
- MessagesFr.ser \
- MessagesJa.ser \
- MessagesNl.ser \
- MessagesPl.ser \
- MessagesSv.ser
+ALL_TARGETS=$(SPECIAL_TARGETS)
+DIST_TARGETS=$(SPECIAL_TARGETS)
.PHONY: all dist clean
all: $(ALL_TARGETS)
+ @echo 'Warning: messages are no longer serialized by this makefile.'
dist: $(DIST_TARGETS)
@@ -24,5 +16,3 @@ clean:
Utf8Case.ser : ../includes/normal/Utf8Case.php
php serialize.php -o $@ $<
-Messages%.ser : ../languages/messages/Messages%.php ../languages/messages/MessagesEn.php
- php serialize-localisation.php -o $@ $<
diff --git a/serialized/README b/serialized/README
deleted file mode 100644
index eae9c527..00000000
--- a/serialized/README
+++ /dev/null
@@ -1,37 +0,0 @@
-This directory contains data files in the format of PHP's serialize() function.
-The source data are typically array literals in PHP source files. We have
-observed that unserialize(file_get_contents(...)) is faster than executing such
-a file from an oparray cache like APC, and very much faster than loading it by
-parsing the source file without such a cache. It should also be faster than
-loading the data across the network with memcached, as long as you are careful
-to put your MediaWiki root directory on a local hard drive rather than on NFS.
-This is a good idea for performance in any case.
-
-To generate all data files:
-
- cd /path/to/wiki/serialized
- make
-
-This requires GNU Make. At present, the only serialized data file which is
-strictly required is Utf8Case.ser. This contains UTF-8 case conversion tables,
-which have essentially never changed since MediaWiki was invented.
-
-The Messages*.ser files are localisation files, containing user interface text
-and various other data related to language-specific behaviour. Because they
-are merged with the fallback language (usually English) before caching, they
-are all quite large, about 140 KB each at the time of writing. If you generate
-all of them, they take up about 20 MB. Hence, I don't expect we will include
-all of them in the release tarballs. However, to obtain optimum performance,
-YOU SHOULD GENERATE ALL THE LOCALISATION FILES THAT YOU WILL BE USING ON YOUR
-WIKIS.
-
-You can generate individual files by typing a command such as:
- cd /path/to/wiki/serialized
- make MessagesAr.ser
-
-If you change a Messages*.php source file, you must recompile any serialized
-data files which are present. If you change MessagesEn.php, this will
-invalidate *all* Messages*.ser files.
-
-I think we should distribute a few Messages*.ser files in the release tarballs,
-specifically the ones created by "make dist".
diff --git a/serialized/normalize-ar.ser b/serialized/normalize-ar.ser
new file mode 100644
index 00000000..2a7f1222
--- /dev/null
+++ b/serialized/normalize-ar.ser
@@ -0,0 +1 @@
+a:731:{s:3:"ﭐ";s:2:"ٱ";s:3:"ﭑ";s:2:"ٱ";s:3:"ﭒ";s:2:"ٻ";s:3:"ﭓ";s:2:"ٻ";s:3:"ﭔ";s:2:"ٻ";s:3:"ﭕ";s:2:"ٻ";s:3:"ﭖ";s:2:"پ";s:3:"ﭗ";s:2:"پ";s:3:"ﭘ";s:2:"پ";s:3:"ﭙ";s:2:"پ";s:3:"ﭚ";s:2:"ڀ";s:3:"ﭛ";s:2:"ڀ";s:3:"ﭜ";s:2:"ڀ";s:3:"ﭝ";s:2:"ڀ";s:3:"ﭞ";s:2:"ٺ";s:3:"ﭟ";s:2:"ٺ";s:3:"ﭠ";s:2:"ٺ";s:3:"ﭡ";s:2:"ٺ";s:3:"ﭢ";s:2:"ٿ";s:3:"ﭣ";s:2:"ٿ";s:3:"ﭤ";s:2:"ٿ";s:3:"ﭥ";s:2:"ٿ";s:3:"ﭦ";s:2:"ٹ";s:3:"ﭧ";s:2:"ٹ";s:3:"ﭨ";s:2:"ٹ";s:3:"ﭩ";s:2:"ٹ";s:3:"ﭪ";s:2:"ڤ";s:3:"ﭫ";s:2:"ڤ";s:3:"ﭬ";s:2:"ڤ";s:3:"ﭭ";s:2:"ڤ";s:3:"ﭮ";s:2:"ڦ";s:3:"ﭯ";s:2:"ڦ";s:3:"ﭰ";s:2:"ڦ";s:3:"ﭱ";s:2:"ڦ";s:3:"ﭲ";s:2:"ڄ";s:3:"ﭳ";s:2:"ڄ";s:3:"ﭴ";s:2:"ڄ";s:3:"ﭵ";s:2:"ڄ";s:3:"ﭶ";s:2:"ڃ";s:3:"ﭷ";s:2:"ڃ";s:3:"ﭸ";s:2:"ڃ";s:3:"ﭹ";s:2:"ڃ";s:3:"ﭺ";s:2:"چ";s:3:"ﭻ";s:2:"چ";s:3:"ﭼ";s:2:"چ";s:3:"ﭽ";s:2:"چ";s:3:"ﭾ";s:2:"ڇ";s:3:"ﭿ";s:2:"ڇ";s:3:"ﮀ";s:2:"ڇ";s:3:"ﮁ";s:2:"ڇ";s:3:"ﮂ";s:2:"ڍ";s:3:"ﮃ";s:2:"ڍ";s:3:"ﮄ";s:2:"ڌ";s:3:"ﮅ";s:2:"ڌ";s:3:"ﮆ";s:2:"ڎ";s:3:"ﮇ";s:2:"ڎ";s:3:"ﮈ";s:2:"ڈ";s:3:"ﮉ";s:2:"ڈ";s:3:"ﮊ";s:2:"ژ";s:3:"ﮋ";s:2:"ژ";s:3:"ﮌ";s:2:"ڑ";s:3:"ﮍ";s:2:"ڑ";s:3:"ﮎ";s:2:"ک";s:3:"ﮏ";s:2:"ک";s:3:"ﮐ";s:2:"ک";s:3:"ﮑ";s:2:"ک";s:3:"ﮒ";s:2:"گ";s:3:"ﮓ";s:2:"گ";s:3:"ﮔ";s:2:"گ";s:3:"ﮕ";s:2:"گ";s:3:"ﮖ";s:2:"ڳ";s:3:"ﮗ";s:2:"ڳ";s:3:"ﮘ";s:2:"ڳ";s:3:"ﮙ";s:2:"ڳ";s:3:"ﮚ";s:2:"ڱ";s:3:"ﮛ";s:2:"ڱ";s:3:"ﮜ";s:2:"ڱ";s:3:"ﮝ";s:2:"ڱ";s:3:"ﮞ";s:2:"ں";s:3:"ﮟ";s:2:"ں";s:3:"ﮠ";s:2:"ڻ";s:3:"ﮡ";s:2:"ڻ";s:3:"ﮢ";s:2:"ڻ";s:3:"ﮣ";s:2:"ڻ";s:3:"ﮤ";s:2:"ۀ";s:3:"ﮥ";s:2:"ۀ";s:3:"ﮦ";s:2:"ہ";s:3:"ﮧ";s:2:"ہ";s:3:"ﮨ";s:2:"ہ";s:3:"ﮩ";s:2:"ہ";s:3:"ﮪ";s:2:"ھ";s:3:"ﮫ";s:2:"ھ";s:3:"ﮬ";s:2:"ھ";s:3:"ﮭ";s:2:"ھ";s:3:"ﮮ";s:2:"ے";s:3:"ﮯ";s:2:"ے";s:3:"ﮰ";s:2:"ۓ";s:3:"ﮱ";s:2:"ۓ";s:3:"ﯓ";s:2:"ڭ";s:3:"ﯔ";s:2:"ڭ";s:3:"ﯕ";s:2:"ڭ";s:3:"ﯖ";s:2:"ڭ";s:3:"ﯗ";s:2:"ۇ";s:3:"ﯘ";s:2:"ۇ";s:3:"ﯙ";s:2:"ۆ";s:3:"ﯚ";s:2:"ۆ";s:3:"ﯛ";s:2:"ۈ";s:3:"ﯜ";s:2:"ۈ";s:3:"ﯝ";s:2:"ٷ";s:3:"ﯞ";s:2:"ۋ";s:3:"ﯟ";s:2:"ۋ";s:3:"ﯠ";s:2:"ۅ";s:3:"ﯡ";s:2:"ۅ";s:3:"ﯢ";s:2:"ۉ";s:3:"ﯣ";s:2:"ۉ";s:3:"ﯤ";s:2:"ې";s:3:"ﯥ";s:2:"ې";s:3:"ﯦ";s:2:"ې";s:3:"ﯧ";s:2:"ې";s:3:"ﯨ";s:2:"ى";s:3:"ﯩ";s:2:"ى";s:3:"ﯪ";s:4:"ئا";s:3:"ﯫ";s:4:"ئا";s:3:"ﯬ";s:4:"ئە";s:3:"ﯭ";s:4:"ئە";s:3:"ﯮ";s:4:"ئو";s:3:"ﯯ";s:4:"ئو";s:3:"ﯰ";s:4:"ئۇ";s:3:"ﯱ";s:4:"ئۇ";s:3:"ﯲ";s:4:"ئۆ";s:3:"ﯳ";s:4:"ئۆ";s:3:"ﯴ";s:4:"ئۈ";s:3:"ﯵ";s:4:"ئۈ";s:3:"ﯶ";s:4:"ئې";s:3:"ﯷ";s:4:"ئې";s:3:"ﯸ";s:4:"ئې";s:3:"ﯹ";s:4:"ئى";s:3:"ﯺ";s:4:"ئى";s:3:"ﯻ";s:4:"ئى";s:3:"ﯼ";s:2:"ی";s:3:"ﯽ";s:2:"ی";s:3:"ﯾ";s:2:"ی";s:3:"ﯿ";s:2:"ی";s:3:"ﰀ";s:4:"ئج";s:3:"ﰁ";s:4:"ئح";s:3:"ﰂ";s:4:"ئم";s:3:"ﰃ";s:4:"ئى";s:3:"ﰄ";s:4:"ئي";s:3:"ﰅ";s:4:"بج";s:3:"ﰆ";s:4:"بح";s:3:"ﰇ";s:4:"بخ";s:3:"ﰈ";s:4:"بم";s:3:"ﰉ";s:4:"بى";s:3:"ﰊ";s:4:"بي";s:3:"ﰋ";s:4:"تج";s:3:"ﰌ";s:4:"تح";s:3:"ﰍ";s:4:"تخ";s:3:"ﰎ";s:4:"تم";s:3:"ﰏ";s:4:"تى";s:3:"ﰐ";s:4:"تي";s:3:"ﰑ";s:4:"ثج";s:3:"ﰒ";s:4:"ثم";s:3:"ﰓ";s:4:"ثى";s:3:"ﰔ";s:4:"ثي";s:3:"ﰕ";s:4:"جح";s:3:"ﰖ";s:4:"جم";s:3:"ﰗ";s:4:"حج";s:3:"ﰘ";s:4:"حم";s:3:"ﰙ";s:4:"خج";s:3:"ﰚ";s:4:"خح";s:3:"ﰛ";s:4:"خم";s:3:"ﰜ";s:4:"سج";s:3:"ﰝ";s:4:"سح";s:3:"ﰞ";s:4:"سخ";s:3:"ﰟ";s:4:"سم";s:3:"ﰠ";s:4:"صح";s:3:"ﰡ";s:4:"صم";s:3:"ﰢ";s:4:"ضج";s:3:"ﰣ";s:4:"ضح";s:3:"ﰤ";s:4:"ضخ";s:3:"ﰥ";s:4:"ضم";s:3:"ﰦ";s:4:"طح";s:3:"ﰧ";s:4:"طم";s:3:"ﰨ";s:4:"ظم";s:3:"ﰩ";s:4:"عج";s:3:"ﰪ";s:4:"عم";s:3:"ﰫ";s:4:"غج";s:3:"ﰬ";s:4:"غم";s:3:"ﰭ";s:4:"فج";s:3:"ﰮ";s:4:"فح";s:3:"ﰯ";s:4:"فخ";s:3:"ﰰ";s:4:"فم";s:3:"ﰱ";s:4:"فى";s:3:"ﰲ";s:4:"في";s:3:"ﰳ";s:4:"قح";s:3:"ﰴ";s:4:"قم";s:3:"ﰵ";s:4:"قى";s:3:"ﰶ";s:4:"قي";s:3:"ﰷ";s:4:"كا";s:3:"ﰸ";s:4:"كج";s:3:"ﰹ";s:4:"كح";s:3:"ﰺ";s:4:"كخ";s:3:"ﰻ";s:4:"كل";s:3:"ﰼ";s:4:"كم";s:3:"ﰽ";s:4:"كى";s:3:"ﰾ";s:4:"كي";s:3:"ﰿ";s:4:"لج";s:3:"ﱀ";s:4:"لح";s:3:"ﱁ";s:4:"لخ";s:3:"ﱂ";s:4:"لم";s:3:"ﱃ";s:4:"لى";s:3:"ﱄ";s:4:"لي";s:3:"ﱅ";s:4:"مج";s:3:"ﱆ";s:4:"مح";s:3:"ﱇ";s:4:"مخ";s:3:"ﱈ";s:4:"مم";s:3:"ﱉ";s:4:"مى";s:3:"ﱊ";s:4:"مي";s:3:"ﱋ";s:4:"نج";s:3:"ﱌ";s:4:"نح";s:3:"ﱍ";s:4:"نخ";s:3:"ﱎ";s:4:"نم";s:3:"ﱏ";s:4:"نى";s:3:"ﱐ";s:4:"ني";s:3:"ﱑ";s:4:"هج";s:3:"ﱒ";s:4:"هم";s:3:"ﱓ";s:4:"هى";s:3:"ﱔ";s:4:"هي";s:3:"ﱕ";s:4:"يج";s:3:"ﱖ";s:4:"يح";s:3:"ﱗ";s:4:"يخ";s:3:"ﱘ";s:4:"يم";s:3:"ﱙ";s:4:"يى";s:3:"ﱚ";s:4:"يي";s:3:"ﱛ";s:4:"ذٰ";s:3:"ﱜ";s:4:"رٰ";s:3:"ﱝ";s:4:"ىٰ";s:3:"ﱞ";s:5:" ٌّ";s:3:"ﱟ";s:5:" ٍّ";s:3:"ﱠ";s:5:" َّ";s:3:"ﱡ";s:5:" ُّ";s:3:"ﱢ";s:5:" ِّ";s:3:"ﱣ";s:5:" ّٰ";s:3:"ﱤ";s:4:"ئر";s:3:"ﱥ";s:4:"ئز";s:3:"ﱦ";s:4:"ئم";s:3:"ﱧ";s:4:"ئن";s:3:"ﱨ";s:4:"ئى";s:3:"ﱩ";s:4:"ئي";s:3:"ﱪ";s:4:"بر";s:3:"ﱫ";s:4:"بز";s:3:"ﱬ";s:4:"بم";s:3:"ﱭ";s:4:"بن";s:3:"ﱮ";s:4:"بى";s:3:"ﱯ";s:4:"بي";s:3:"ﱰ";s:4:"تر";s:3:"ﱱ";s:4:"تز";s:3:"ﱲ";s:4:"تم";s:3:"ﱳ";s:4:"تن";s:3:"ﱴ";s:4:"تى";s:3:"ﱵ";s:4:"تي";s:3:"ﱶ";s:4:"ثر";s:3:"ﱷ";s:4:"ثز";s:3:"ﱸ";s:4:"ثم";s:3:"ﱹ";s:4:"ثن";s:3:"ﱺ";s:4:"ثى";s:3:"ﱻ";s:4:"ثي";s:3:"ﱼ";s:4:"فى";s:3:"ﱽ";s:4:"في";s:3:"ﱾ";s:4:"قى";s:3:"ﱿ";s:4:"قي";s:3:"ﲀ";s:4:"كا";s:3:"ﲁ";s:4:"كل";s:3:"ﲂ";s:4:"كم";s:3:"ﲃ";s:4:"كى";s:3:"ﲄ";s:4:"كي";s:3:"ﲅ";s:4:"لم";s:3:"ﲆ";s:4:"لى";s:3:"ﲇ";s:4:"لي";s:3:"ﲈ";s:4:"ما";s:3:"ﲉ";s:4:"مم";s:3:"ﲊ";s:4:"نر";s:3:"ﲋ";s:4:"نز";s:3:"ﲌ";s:4:"نم";s:3:"ﲍ";s:4:"نن";s:3:"ﲎ";s:4:"نى";s:3:"ﲏ";s:4:"ني";s:3:"ﲐ";s:4:"ىٰ";s:3:"ﲑ";s:4:"ير";s:3:"ﲒ";s:4:"يز";s:3:"ﲓ";s:4:"يم";s:3:"ﲔ";s:4:"ين";s:3:"ﲕ";s:4:"يى";s:3:"ﲖ";s:4:"يي";s:3:"ﲗ";s:4:"ئج";s:3:"ﲘ";s:4:"ئح";s:3:"ﲙ";s:4:"ئخ";s:3:"ﲚ";s:4:"ئم";s:3:"ﲛ";s:4:"ئه";s:3:"ﲜ";s:4:"بج";s:3:"ﲝ";s:4:"بح";s:3:"ﲞ";s:4:"بخ";s:3:"ﲟ";s:4:"بم";s:3:"ﲠ";s:4:"به";s:3:"ﲡ";s:4:"تج";s:3:"ﲢ";s:4:"تح";s:3:"ﲣ";s:4:"تخ";s:3:"ﲤ";s:4:"تم";s:3:"ﲥ";s:4:"ته";s:3:"ﲦ";s:4:"ثم";s:3:"ﲧ";s:4:"جح";s:3:"ﲨ";s:4:"جم";s:3:"ﲩ";s:4:"حج";s:3:"ﲪ";s:4:"حم";s:3:"ﲫ";s:4:"خج";s:3:"ﲬ";s:4:"خم";s:3:"ﲭ";s:4:"سج";s:3:"ﲮ";s:4:"سح";s:3:"ﲯ";s:4:"سخ";s:3:"ﲰ";s:4:"سم";s:3:"ﲱ";s:4:"صح";s:3:"ﲲ";s:4:"صخ";s:3:"ﲳ";s:4:"صم";s:3:"ﲴ";s:4:"ضج";s:3:"ﲵ";s:4:"ضح";s:3:"ﲶ";s:4:"ضخ";s:3:"ﲷ";s:4:"ضم";s:3:"ﲸ";s:4:"طح";s:3:"ﲹ";s:4:"ظم";s:3:"ﲺ";s:4:"عج";s:3:"ﲻ";s:4:"عم";s:3:"ﲼ";s:4:"غج";s:3:"ﲽ";s:4:"غم";s:3:"ﲾ";s:4:"فج";s:3:"ﲿ";s:4:"فح";s:3:"ﳀ";s:4:"فخ";s:3:"ﳁ";s:4:"فم";s:3:"ﳂ";s:4:"قح";s:3:"ﳃ";s:4:"قم";s:3:"ﳄ";s:4:"كج";s:3:"ﳅ";s:4:"كح";s:3:"ﳆ";s:4:"كخ";s:3:"ﳇ";s:4:"كل";s:3:"ﳈ";s:4:"كم";s:3:"ﳉ";s:4:"لج";s:3:"ﳊ";s:4:"لح";s:3:"ﳋ";s:4:"لخ";s:3:"ﳌ";s:4:"لم";s:3:"ﳍ";s:4:"له";s:3:"ﳎ";s:4:"مج";s:3:"ﳏ";s:4:"مح";s:3:"ﳐ";s:4:"مخ";s:3:"ﳑ";s:4:"مم";s:3:"ﳒ";s:4:"نج";s:3:"ﳓ";s:4:"نح";s:3:"ﳔ";s:4:"نخ";s:3:"ﳕ";s:4:"نم";s:3:"ﳖ";s:4:"نه";s:3:"ﳗ";s:4:"هج";s:3:"ﳘ";s:4:"هم";s:3:"ﳙ";s:4:"هٰ";s:3:"ﳚ";s:4:"يج";s:3:"ﳛ";s:4:"يح";s:3:"ﳜ";s:4:"يخ";s:3:"ﳝ";s:4:"يم";s:3:"ﳞ";s:4:"يه";s:3:"ﳟ";s:4:"ئم";s:3:"ﳠ";s:4:"ئه";s:3:"ﳡ";s:4:"بم";s:3:"ﳢ";s:4:"به";s:3:"ﳣ";s:4:"تم";s:3:"ﳤ";s:4:"ته";s:3:"ﳥ";s:4:"ثم";s:3:"ﳦ";s:4:"ثه";s:3:"ﳧ";s:4:"سم";s:3:"ﳨ";s:4:"سه";s:3:"ﳩ";s:4:"شم";s:3:"ﳪ";s:4:"شه";s:3:"ﳫ";s:4:"كل";s:3:"ﳬ";s:4:"كم";s:3:"ﳭ";s:4:"لم";s:3:"ﳮ";s:4:"نم";s:3:"ﳯ";s:4:"نه";s:3:"ﳰ";s:4:"يم";s:3:"ﳱ";s:4:"يه";s:3:"ﳲ";s:6:"ـَّ";s:3:"ﳳ";s:6:"ـُّ";s:3:"ﳴ";s:6:"ـِّ";s:3:"ﳵ";s:4:"طى";s:3:"ﳶ";s:4:"طي";s:3:"ﳷ";s:4:"عى";s:3:"ﳸ";s:4:"عي";s:3:"ﳹ";s:4:"غى";s:3:"ﳺ";s:4:"غي";s:3:"ﳻ";s:4:"سى";s:3:"ﳼ";s:4:"سي";s:3:"ﳽ";s:4:"شى";s:3:"ﳾ";s:4:"شي";s:3:"ﳿ";s:4:"حى";s:3:"ﴀ";s:4:"حي";s:3:"ﴁ";s:4:"جى";s:3:"ﴂ";s:4:"جي";s:3:"ﴃ";s:4:"خى";s:3:"ﴄ";s:4:"خي";s:3:"ﴅ";s:4:"صى";s:3:"ﴆ";s:4:"صي";s:3:"ﴇ";s:4:"ضى";s:3:"ﴈ";s:4:"ضي";s:3:"ﴉ";s:4:"شج";s:3:"ﴊ";s:4:"شح";s:3:"ﴋ";s:4:"شخ";s:3:"ﴌ";s:4:"شم";s:3:"ﴍ";s:4:"شر";s:3:"ﴎ";s:4:"سر";s:3:"ﴏ";s:4:"صر";s:3:"ﴐ";s:4:"ضر";s:3:"ﴑ";s:4:"طى";s:3:"ﴒ";s:4:"طي";s:3:"ﴓ";s:4:"عى";s:3:"ﴔ";s:4:"عي";s:3:"ﴕ";s:4:"غى";s:3:"ﴖ";s:4:"غي";s:3:"ﴗ";s:4:"سى";s:3:"ﴘ";s:4:"سي";s:3:"ﴙ";s:4:"شى";s:3:"ﴚ";s:4:"شي";s:3:"ﴛ";s:4:"حى";s:3:"ﴜ";s:4:"حي";s:3:"ﴝ";s:4:"جى";s:3:"ﴞ";s:4:"جي";s:3:"ﴟ";s:4:"خى";s:3:"ﴠ";s:4:"خي";s:3:"ﴡ";s:4:"صى";s:3:"ﴢ";s:4:"صي";s:3:"ﴣ";s:4:"ضى";s:3:"ﴤ";s:4:"ضي";s:3:"ﴥ";s:4:"شج";s:3:"ﴦ";s:4:"شح";s:3:"ﴧ";s:4:"شخ";s:3:"ﴨ";s:4:"شم";s:3:"ﴩ";s:4:"شر";s:3:"ﴪ";s:4:"سر";s:3:"ﴫ";s:4:"صر";s:3:"ﴬ";s:4:"ضر";s:3:"ﴭ";s:4:"شج";s:3:"ﴮ";s:4:"شح";s:3:"ﴯ";s:4:"شخ";s:3:"ﴰ";s:4:"شم";s:3:"ﴱ";s:4:"سه";s:3:"ﴲ";s:4:"شه";s:3:"ﴳ";s:4:"طم";s:3:"ﴴ";s:4:"سج";s:3:"ﴵ";s:4:"سح";s:3:"ﴶ";s:4:"سخ";s:3:"ﴷ";s:4:"شج";s:3:"ﴸ";s:4:"شح";s:3:"ﴹ";s:4:"شخ";s:3:"ﴺ";s:4:"طم";s:3:"ﴻ";s:4:"ظم";s:3:"ﴼ";s:4:"اً";s:3:"ﴽ";s:4:"اً";s:3:"ﵐ";s:6:"تجم";s:3:"ﵑ";s:6:"تحج";s:3:"ﵒ";s:6:"تحج";s:3:"ﵓ";s:6:"تحم";s:3:"ﵔ";s:6:"تخم";s:3:"ﵕ";s:6:"تمج";s:3:"ﵖ";s:6:"تمح";s:3:"ﵗ";s:6:"تمخ";s:3:"ﵘ";s:6:"جمح";s:3:"ﵙ";s:6:"جمح";s:3:"ﵚ";s:6:"حمي";s:3:"ﵛ";s:6:"حمى";s:3:"ﵜ";s:6:"سحج";s:3:"ﵝ";s:6:"سجح";s:3:"ﵞ";s:6:"سجى";s:3:"ﵟ";s:6:"سمح";s:3:"ﵠ";s:6:"سمح";s:3:"ﵡ";s:6:"سمج";s:3:"ﵢ";s:6:"سمم";s:3:"ﵣ";s:6:"سمم";s:3:"ﵤ";s:6:"صحح";s:3:"ﵥ";s:6:"صحح";s:3:"ﵦ";s:6:"صمم";s:3:"ﵧ";s:6:"شحم";s:3:"ﵨ";s:6:"شحم";s:3:"ﵩ";s:6:"شجي";s:3:"ﵪ";s:6:"شمخ";s:3:"ﵫ";s:6:"شمخ";s:3:"ﵬ";s:6:"شمم";s:3:"ﵭ";s:6:"شمم";s:3:"ﵮ";s:6:"ضحى";s:3:"ﵯ";s:6:"ضخم";s:3:"ﵰ";s:6:"ضخم";s:3:"ﵱ";s:6:"طمح";s:3:"ﵲ";s:6:"طمح";s:3:"ﵳ";s:6:"طمم";s:3:"ﵴ";s:6:"طمي";s:3:"ﵵ";s:6:"عجم";s:3:"ﵶ";s:6:"عمم";s:3:"ﵷ";s:6:"عمم";s:3:"ﵸ";s:6:"عمى";s:3:"ﵹ";s:6:"غمم";s:3:"ﵺ";s:6:"غمي";s:3:"ﵻ";s:6:"غمى";s:3:"ﵼ";s:6:"فخم";s:3:"ﵽ";s:6:"فخم";s:3:"ﵾ";s:6:"قمح";s:3:"ﵿ";s:6:"قمم";s:3:"ﶀ";s:6:"لحم";s:3:"ﶁ";s:6:"لحي";s:3:"ﶂ";s:6:"لحى";s:3:"ﶃ";s:6:"لجج";s:3:"ﶄ";s:6:"لجج";s:3:"ﶅ";s:6:"لخم";s:3:"ﶆ";s:6:"لخم";s:3:"ﶇ";s:6:"لمح";s:3:"ﶈ";s:6:"لمح";s:3:"ﶉ";s:6:"محج";s:3:"ﶊ";s:6:"محم";s:3:"ﶋ";s:6:"محي";s:3:"ﶌ";s:6:"مجح";s:3:"ﶍ";s:6:"مجم";s:3:"ﶎ";s:6:"مخج";s:3:"ﶏ";s:6:"مخم";s:3:"ﶒ";s:6:"مجخ";s:3:"ﶓ";s:6:"همج";s:3:"ﶔ";s:6:"همم";s:3:"ﶕ";s:6:"نحم";s:3:"ﶖ";s:6:"نحى";s:3:"ﶗ";s:6:"نجم";s:3:"ﶘ";s:6:"نجم";s:3:"ﶙ";s:6:"نجى";s:3:"ﶚ";s:6:"نمي";s:3:"ﶛ";s:6:"نمى";s:3:"ﶜ";s:6:"يمم";s:3:"ﶝ";s:6:"يمم";s:3:"ﶞ";s:6:"بخي";s:3:"ﶟ";s:6:"تجي";s:3:"ﶠ";s:6:"تجى";s:3:"ﶡ";s:6:"تخي";s:3:"ﶢ";s:6:"تخى";s:3:"ﶣ";s:6:"تمي";s:3:"ﶤ";s:6:"تمى";s:3:"ﶥ";s:6:"جمي";s:3:"ﶦ";s:6:"جحى";s:3:"ﶧ";s:6:"جمى";s:3:"ﶨ";s:6:"سخى";s:3:"ﶩ";s:6:"صحي";s:3:"ﶪ";s:6:"شحي";s:3:"ﶫ";s:6:"ضحي";s:3:"ﶬ";s:6:"لجي";s:3:"ﶭ";s:6:"لمي";s:3:"ﶮ";s:6:"يحي";s:3:"ﶯ";s:6:"يجي";s:3:"ﶰ";s:6:"يمي";s:3:"ﶱ";s:6:"ممي";s:3:"ﶲ";s:6:"قمي";s:3:"ﶳ";s:6:"نحي";s:3:"ﶴ";s:6:"قمح";s:3:"ﶵ";s:6:"لحم";s:3:"ﶶ";s:6:"عمي";s:3:"ﶷ";s:6:"كمي";s:3:"ﶸ";s:6:"نجح";s:3:"ﶹ";s:6:"مخي";s:3:"ﶺ";s:6:"لجم";s:3:"ﶻ";s:6:"كمم";s:3:"ﶼ";s:6:"لجم";s:3:"ﶽ";s:6:"نجح";s:3:"ﶾ";s:6:"جحي";s:3:"ﶿ";s:6:"حجي";s:3:"ﷀ";s:6:"مجي";s:3:"ﷁ";s:6:"فمي";s:3:"ﷂ";s:6:"بحي";s:3:"ﷃ";s:6:"كمم";s:3:"ﷄ";s:6:"عجم";s:3:"ﷅ";s:6:"صمم";s:3:"ﷆ";s:6:"سخي";s:3:"ﷇ";s:6:"نجي";s:3:"ﷰ";s:6:"صلے";s:3:"ﷱ";s:6:"قلے";s:3:"ﷲ";s:8:"الله";s:3:"ﷳ";s:8:"اكبر";s:3:"ﷴ";s:8:"محمد";s:3:"ﷵ";s:8:"صلعم";s:3:"ﷶ";s:8:"رسول";s:3:"ﷷ";s:8:"عليه";s:3:"ﷸ";s:8:"وسلم";s:3:"ﷹ";s:6:"صلى";s:3:"ﷺ";s:33:"صلى الله عليه وسلم";s:3:"ﷻ";s:15:"جل جلاله";s:3:"﷼";s:8:"ریال";s:3:"ﹰ";s:3:" ً";s:3:"ﹱ";s:4:"ـً";s:3:"ﹲ";s:3:" ٌ";s:3:"ﹴ";s:3:" ٍ";s:3:"ﹶ";s:3:" َ";s:3:"ﹷ";s:4:"ـَ";s:3:"ﹸ";s:3:" ُ";s:3:"ﹹ";s:4:"ـُ";s:3:"ﹺ";s:3:" ِ";s:3:"ﹻ";s:4:"ـِ";s:3:"ﹼ";s:3:" ّ";s:3:"ﹽ";s:4:"ـّ";s:3:"ﹾ";s:3:" ْ";s:3:"ﹿ";s:4:"ـْ";s:3:"ﺀ";s:2:"ء";s:3:"ﺁ";s:2:"آ";s:3:"ﺂ";s:2:"آ";s:3:"ﺃ";s:2:"أ";s:3:"ﺄ";s:2:"أ";s:3:"ﺅ";s:2:"ؤ";s:3:"ﺆ";s:2:"ؤ";s:3:"ﺇ";s:2:"إ";s:3:"ﺈ";s:2:"إ";s:3:"ﺉ";s:2:"ئ";s:3:"ﺊ";s:2:"ئ";s:3:"ﺋ";s:2:"ئ";s:3:"ﺌ";s:2:"ئ";s:3:"ﺍ";s:2:"ا";s:3:"ﺎ";s:2:"ا";s:3:"ﺏ";s:2:"ب";s:3:"ﺐ";s:2:"ب";s:3:"ﺑ";s:2:"ب";s:3:"ﺒ";s:2:"ب";s:3:"ﺓ";s:2:"ة";s:3:"ﺔ";s:2:"ة";s:3:"ﺕ";s:2:"ت";s:3:"ﺖ";s:2:"ت";s:3:"ﺗ";s:2:"ت";s:3:"ﺘ";s:2:"ت";s:3:"ﺙ";s:2:"ث";s:3:"ﺚ";s:2:"ث";s:3:"ﺛ";s:2:"ث";s:3:"ﺜ";s:2:"ث";s:3:"ﺝ";s:2:"ج";s:3:"ﺞ";s:2:"ج";s:3:"ﺟ";s:2:"ج";s:3:"ﺠ";s:2:"ج";s:3:"ﺡ";s:2:"ح";s:3:"ﺢ";s:2:"ح";s:3:"ﺣ";s:2:"ح";s:3:"ﺤ";s:2:"ح";s:3:"ﺥ";s:2:"خ";s:3:"ﺦ";s:2:"خ";s:3:"ﺧ";s:2:"خ";s:3:"ﺨ";s:2:"خ";s:3:"ﺩ";s:2:"د";s:3:"ﺪ";s:2:"د";s:3:"ﺫ";s:2:"ذ";s:3:"ﺬ";s:2:"ذ";s:3:"ﺭ";s:2:"ر";s:3:"ﺮ";s:2:"ر";s:3:"ﺯ";s:2:"ز";s:3:"ﺰ";s:2:"ز";s:3:"ﺱ";s:2:"س";s:3:"ﺲ";s:2:"س";s:3:"ﺳ";s:2:"س";s:3:"ﺴ";s:2:"س";s:3:"ﺵ";s:2:"ش";s:3:"ﺶ";s:2:"ش";s:3:"ﺷ";s:2:"ش";s:3:"ﺸ";s:2:"ش";s:3:"ﺹ";s:2:"ص";s:3:"ﺺ";s:2:"ص";s:3:"ﺻ";s:2:"ص";s:3:"ﺼ";s:2:"ص";s:3:"ﺽ";s:2:"ض";s:3:"ﺾ";s:2:"ض";s:3:"ﺿ";s:2:"ض";s:3:"ﻀ";s:2:"ض";s:3:"ﻁ";s:2:"ط";s:3:"ﻂ";s:2:"ط";s:3:"ﻃ";s:2:"ط";s:3:"ﻄ";s:2:"ط";s:3:"ﻅ";s:2:"ظ";s:3:"ﻆ";s:2:"ظ";s:3:"ﻇ";s:2:"ظ";s:3:"ﻈ";s:2:"ظ";s:3:"ﻉ";s:2:"ع";s:3:"ﻊ";s:2:"ع";s:3:"ﻋ";s:2:"ع";s:3:"ﻌ";s:2:"ع";s:3:"ﻍ";s:2:"غ";s:3:"ﻎ";s:2:"غ";s:3:"ﻏ";s:2:"غ";s:3:"ﻐ";s:2:"غ";s:3:"ﻑ";s:2:"ف";s:3:"ﻒ";s:2:"ف";s:3:"ﻓ";s:2:"ف";s:3:"ﻔ";s:2:"ف";s:3:"ﻕ";s:2:"ق";s:3:"ﻖ";s:2:"ق";s:3:"ﻗ";s:2:"ق";s:3:"ﻘ";s:2:"ق";s:3:"ﻙ";s:2:"ك";s:3:"ﻚ";s:2:"ك";s:3:"ﻛ";s:2:"ك";s:3:"ﻜ";s:2:"ك";s:3:"ﻝ";s:2:"ل";s:3:"ﻞ";s:2:"ل";s:3:"ﻟ";s:2:"ل";s:3:"ﻠ";s:2:"ل";s:3:"ﻡ";s:2:"م";s:3:"ﻢ";s:2:"م";s:3:"ﻣ";s:2:"م";s:3:"ﻤ";s:2:"م";s:3:"ﻥ";s:2:"ن";s:3:"ﻦ";s:2:"ن";s:3:"ﻧ";s:2:"ن";s:3:"ﻨ";s:2:"ن";s:3:"ﻩ";s:2:"ه";s:3:"ﻪ";s:2:"ه";s:3:"ﻫ";s:2:"ه";s:3:"ﻬ";s:2:"ه";s:3:"ﻭ";s:2:"و";s:3:"ﻮ";s:2:"و";s:3:"ﻯ";s:2:"ى";s:3:"ﻰ";s:2:"ى";s:3:"ﻱ";s:2:"ي";s:3:"ﻲ";s:2:"ي";s:3:"ﻳ";s:2:"ي";s:3:"ﻴ";s:2:"ي";s:3:"ﻵ";s:4:"لآ";s:3:"ﻶ";s:4:"لآ";s:3:"ﻷ";s:4:"لأ";s:3:"ﻸ";s:4:"لأ";s:3:"ﻹ";s:4:"لإ";s:3:"ﻺ";s:4:"لإ";s:3:"ﻻ";s:4:"لا";s:3:"ﻼ";s:4:"لا";} \ No newline at end of file
diff --git a/serialized/normalize-ml.ser b/serialized/normalize-ml.ser
new file mode 100644
index 00000000..b27a217c
--- /dev/null
+++ b/serialized/normalize-ml.ser
@@ -0,0 +1 @@
+a:6:{s:9:"ണ്‍";s:3:"ൺ";s:9:"ന്‍";s:3:"ൻ";s:9:"ര്‍";s:3:"ർ";s:9:"ല്‍";s:3:"ൽ";s:9:"ള്‍";s:3:"ൾ";s:9:"ക്‍";s:3:"ൿ";} \ No newline at end of file
diff --git a/serialized/serialize-localisation.php b/serialized/serialize-localisation.php
deleted file mode 100644
index 9801b823..00000000
--- a/serialized/serialize-localisation.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-$wgNoDBParam = true;
-$optionsWithArgs = array( 'o' );
-require_once( dirname(__FILE__).'/../maintenance/commandLine.inc' );
-require_once( dirname(__FILE__).'/serialize.php' );
-
-$stderr = fopen( 'php://stderr', 'w' );
-if ( !isset( $args[0] ) ) {
- fwrite( $stderr, "No input file specified\n" );
- exit( 1 );
-}
-$file = $args[0];
-$code = str_replace( 'Messages', '', basename( $file ) );
-$code = str_replace( '.php', '', $code );
-$code = strtolower( str_replace( '_', '-', $code ) );
-
-$localisation = Language::getLocalisationArray( $code, true );
-if ( wfIsWindows() ) {
- $localisation = unixLineEndings( $localisation );
-}
-
-if ( isset( $options['o'] ) ) {
- $out = fopen( $options['o'], 'wb' );
- if ( !$out ) {
- fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" );
- exit( 1 );
- }
-} else {
- $out = fopen( 'php://stdout', 'wb' );
-}
-
-fwrite( $out, serialize( $localisation ) );
-
-
diff --git a/skins/ArchLinux.php b/skins/ArchLinux.php
index 511e20f6..ec17c343 100644
--- a/skins/ArchLinux.php
+++ b/skins/ArchLinux.php
@@ -17,12 +17,8 @@ if( !defined( 'MEDIAWIKI' ) )
*/
class SkinArchLinux extends SkinTemplate {
/** Using archlinux. */
- function initPage( OutputPage $out ) {
- parent::initPage( $out );
- $this->skinname = 'archlinux';
- $this->stylename = 'archlinux';
- $this->template = 'ArchLinuxTemplate';
- }
+ var $skinname = 'archlinux', $stylename = 'archlinux',
+ $template = 'ArchLinuxTemplate', $useHeadElement = true;
function setupSkinUserCss( OutputPage $out ) {
global $wgHandheldStyle;
@@ -70,104 +66,69 @@ class ArchLinuxTemplate extends QuickTemplate {
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
-?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
- foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
- ?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
- } ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
- <head>
- <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
- <?php $this->html('headlinks') ?>
- <title><?php $this->text('pagetitle') ?></title>
- <?php $this->html('csslinks') ?>
-
- <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
- <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-
- <?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
-
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
- <!-- Head Scripts -->
-<?php $this->html('headscripts') ?>
-<?php if($this->data['jsvarurl']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl') ?>"><!-- site js --></script>
-<?php } ?>
-<?php if($this->data['pagecss']) { ?>
- <style type="text/css"><?php $this->html('pagecss') ?></style>
-<?php }
- if($this->data['usercss']) { ?>
- <style type="text/css"><?php $this->html('usercss') ?></style>
-<?php }
- if($this->data['userjs']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
-<?php }
- if($this->data['userjsprev']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
-<?php }
- if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- </head>
-<body<?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
-<?php if($this->data['body_onload']) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
- class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
+ $this->html( 'headelement' );
- <?php if (empty($_REQUEST['printable'])) {?>
- <div id="archnavbar"><!-- Arch Linux global navigation bar -->
- <div id="archnavbarlogo">
- <p><a id="logo" href="<?php if (isset($wgArchHome)) { echo $wgArchHome; } ?>"></a></p>
- </div>
- <div id="archnavbarmenu">
- <ul id="archnavbarlist">
- <?php
- if (isset($wgArchNavBar)) {
- foreach ($wgArchNavBar as $name => $url) {
- if ((isset($wgArchNavBarSelected) && $this->data['title'] == $name && in_array($name, $wgArchNavBarSelected))
- || (!(isset($wgArchNavBarSelected) && in_array($this->data['title'], $wgArchNavBarSelected)) && isset($wgArchNavBarSelectedDefault) && $name == $wgArchNavBarSelectedDefault)) {
- $anbClass = ' class="anb-selected"';
- } else {
- $anbClass = '';
- }
- echo '<li id="anb-'.strtolower($name).'"'.$anbClass.'><a href="'.$url.'">'.$name.'</a></li>';
+if (empty($_REQUEST['printable'])) {?>
+<div id="archnavbar"><!-- Arch Linux global navigation bar -->
+ <div id="archnavbarlogo">
+ <p><a id="logo" href="<?php if (isset($wgArchHome)) { echo $wgArchHome; } ?>"></a></p>
+ </div>
+ <div id="archnavbarmenu">
+ <ul id="archnavbarlist">
+ <?php
+ if (isset($wgArchNavBar)) {
+ foreach ($wgArchNavBar as $name => $url) {
+ if ((isset($wgArchNavBarSelected) && $this->data['title'] == $name && in_array($name, $wgArchNavBarSelected))
+ || (!(isset($wgArchNavBarSelected) && in_array($this->data['title'], $wgArchNavBarSelected)) && isset($wgArchNavBarSelectedDefault) && $name == $wgArchNavBarSelectedDefault)) {
+ $anbClass = ' class="anb-selected"';
+ } else {
+ $anbClass = '';
}
+ echo '<li id="anb-'.strtolower($name).'"'.$anbClass.'><a href="'.$url.'">'.$name.'</a></li>';
}
- ?>
- </ul>
- </div>
- </div><!-- #archnavbar -->
- <?php } ?>
-
- <div id="globalWrapper">
- <div id="column-content">
- <div id="content">
- <a name="top" id="top"></a>
- <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <h1 id="firstHeading" class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
- <div id="bodyContent">
- <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
- <div id="contentSub"><?php $this->html('subtitle') ?></div>
- <?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?>
- <?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk') ?></div><?php } ?>
- <?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
- <!-- start content -->
- <?php $this->html('bodytext') ?>
- <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
- <!-- end content -->
- <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
- <div class="visualClear"></div>
- </div>
+ }
+ ?>
+ </ul>
</div>
- </div>
- <div id="column-one">
+</div><!-- #archnavbar -->
+<?php }
+
+?><div id="globalWrapper">
+<div id="column-content"><div id="content" <?php $this->html("specialpageattributes") ?>>
+ <a id="top"></a>
+ <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+
+ <h1 id="firstHeading" class="firstHeading"><?php $this->html('title') ?></h1>
+ <div id="bodyContent">
+ <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
+ <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
+<?php if($this->data['undelete']) { ?>
+ <div id="contentSub2"><?php $this->html('undelete') ?></div>
+<?php } ?><?php if($this->data['newtalk'] ) { ?>
+ <div class="usermessage"><?php $this->html('newtalk') ?></div>
+<?php } ?><?php if($this->data['showjumplinks']) { ?>
+ <div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
+<?php } ?>
+ <!-- start content -->
+<?php $this->html('bodytext') ?>
+ <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
+ <!-- end content -->
+ <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
+ <div class="visualClear"></div>
+ </div>
+</div></div>
+<div id="column-one"<?php $this->html('userlangattributes') ?>>
<div id="p-cactions" class="portlet">
<h5><?php $this->msg('views') ?></h5>
<div class="pBody">
- <ul>
- <?php foreach($this->data['content_actions'] as $key => $tab) {
+ <ul><?php
+ foreach($this->data['content_actions'] as $key => $tab) {
echo '
<li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
if( $tab['class'] ) {
echo ' class="'.htmlspecialchars($tab['class']).'"';
}
- echo'><a href="'.htmlspecialchars($tab['href']).'"';
+ echo '><a href="'.htmlspecialchars($tab['href']).'"';
# We don't want to give the watch tab an accesskey if the
# page is being edited, because that conflicts with the
# accesskey on the watch checkbox. We also don't want to
@@ -182,13 +143,14 @@ class ArchLinuxTemplate extends QuickTemplate {
}
echo '>'.htmlspecialchars($tab['text']).'</a></li>';
} ?>
+
</ul>
</div>
</div>
<div class="portlet" id="p-personal">
<h5><?php $this->msg('personaltools') ?></h5>
<div class="pBody">
- <ul>
+ <ul<?php $this->html('userlangattributes') ?>>
<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
@@ -223,16 +185,16 @@ class ArchLinuxTemplate extends QuickTemplate {
}
}
?>
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <div id="footer">
+</div><!-- end of the left (by default at least) column -->
+<div class="visualClear"></div>
+<div id="footer"<?php $this->html('userlangattributes') ?>>
<?php
- if($this->data['poweredbyico']) { ?>
- <div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
-<?php }
- if($this->data['copyrightico']) { ?>
- <div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
-<?php }
+if($this->data['poweredbyico']) { ?>
+ <div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
+<?php }
+if($this->data['copyrightico']) { ?>
+ <div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
+<?php }
// Generate additional footer links
$footerlinks = array(
@@ -246,18 +208,18 @@ class ArchLinuxTemplate extends QuickTemplate {
}
}
if ( count( $validFooterLinks ) > 0 ) {
-?> <ul id="f-list">
+?> <ul id="f-list">
<?php
foreach( $validFooterLinks as $aLink ) {
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
+?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
<?php }
}
?>
- </ul>
+ </ul>
<?php }
?>
- </div>
+</div>
</div>
<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
<?php $this->html('reporttime') ?>
@@ -279,17 +241,23 @@ class ArchLinuxTemplate extends QuickTemplate {
<div id="p-search" class="portlet">
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
<div id="searchBody" class="pBody">
- <form action="<?php $this->text('wgScript') ?>" id="searchform"><div>
+ <form action="<?php $this->text('wgScript') ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
- <input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
- if( isset( $this->data['search'] ) ) {
- ?> value="<?php $this->text('search') ?>"<?php } ?> />
+ <?php
+ echo Html::input( 'search',
+ isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
+ array(
+ 'id' => 'searchInput',
+ 'title' => $this->skin->titleAttrib( 'search' ),
+ 'accesskey' => $this->skin->accesskey( 'search' )
+ ) ); ?>
+
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&nbsp;
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
- </div></form>
+ </form>
</div>
</div>
<?php
@@ -311,10 +279,10 @@ class ArchLinuxTemplate extends QuickTemplate {
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
<li id="t-recentchangeslinked"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
+ ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
<?php }
}
- if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
+ if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
<li id="t-trackbacklink"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
@@ -360,7 +328,7 @@ class ArchLinuxTemplate extends QuickTemplate {
if( $this->data['language_urls'] ) {
?>
<div id="p-lang" class="portlet">
- <h5><?php $this->msg('otherlanguages') ?></h5>
+ <h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
<div class="pBody">
<ul>
<?php foreach($this->data['language_urls'] as $langlink) { ?>
@@ -378,7 +346,7 @@ class ArchLinuxTemplate extends QuickTemplate {
function customBox( $bar, $cont ) {
?>
<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
- <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
+ <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
<div class='pBody'>
<?php if ( is_array( $cont ) ) { ?>
<ul>
@@ -397,7 +365,6 @@ class ArchLinuxTemplate extends QuickTemplate {
</div>
<?php
}
-
} // end of class
diff --git a/skins/Chick.php b/skins/Chick.php
index a95a72ce..c8eb8152 100644
--- a/skins/Chick.php
+++ b/skins/Chick.php
@@ -1,8 +1,8 @@
<?php
/**
- * See docs/skin.txt
+ * Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
+ * given at the bottom of the page instead, as in the unstyled MySkin.
*
- * @todo document
* @file
* @ingroup Skins
*/
@@ -14,16 +14,12 @@ if( !defined( 'MEDIAWIKI' ) )
require_once( dirname(__FILE__) . '/MonoBook.php' );
/**
- * @todo document
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
* @ingroup Skins
*/
class SkinChick extends SkinTemplate {
- function initPage( OutputPage $out ) {
- SkinTemplate::initPage( $out );
- $this->skinname = 'chick';
- $this->stylename = 'chick';
- $this->template = 'MonoBookTemplate';
- }
+ var $skinname = 'chick', $stylename = 'chick',
+ $template = 'MonoBookTemplate', $useHeadElement = true;
function setupSkinUserCss( OutputPage $out ){
parent::setupSkinUserCss( $out );
@@ -34,5 +30,3 @@ class SkinChick extends SkinTemplate {
$out->addStyle( 'chick/IE60Fixes.css', 'screen,handheld', 'IE 6' );
}
}
-
-
diff --git a/skins/CologneBlue.php b/skins/CologneBlue.php
index c650cbee..a7aac8a0 100644
--- a/skins/CologneBlue.php
+++ b/skins/CologneBlue.php
@@ -1,14 +1,15 @@
<?php
/**
- * See docs/skin.txt
+ * Cologne Blue: A nicer-looking alternative to Standard.
*
* @todo document
* @file
* @ingroup Skins
*/
-if( !defined( 'MEDIAWIKI' ) )
+if( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
+}
/**
* @todo document
@@ -19,37 +20,38 @@ class SkinCologneBlue extends Skin {
function getStylesheet() {
return 'common/cologneblue.css';
}
+
function getSkinName() {
- return "cologneblue";
+ return 'cologneblue';
}
function doBeforeContent() {
-
- $s = "";
$qb = $this->qbSetting();
$mainPageObj = Title::newMainPage();
- $s .= "\n<div id='content'>\n<div id='topbar'>" .
- "<table width='100%' border='0' cellspacing='0' cellpadding='8'><tr>";
+ $s = "\n<div id='content'>\n<div id='topbar'>" .
+ '<table width="100%" border="0" cellspacing="0" cellpadding="8"><tr>';
- $s .= "<td class='top' align='left' valign='middle' nowrap='nowrap'>";
- $s .= "<a href=\"" . $mainPageObj->escapeLocalURL() . "\">";
- $s .= "<span id='sitetitle'>" . wfMsg( "sitetitle" ) . "</span></a>";
+ $s .= '<td class="top" align="left" valign="middle" nowrap="nowrap">';
+ $s .= '<a href="' . $mainPageObj->escapeLocalURL() . '">';
+ $s .= '<span id="sitetitle">' . wfMsg( 'sitetitle' ) . '</span></a>';
- $s .= "</td><td class='top' align='right' valign='bottom' width='100%'>";
+ $s .= '</td><td class="top" align="right" valign="bottom" width="100%">';
$s .= $this->sysLinks();
- $s .= "</td></tr><tr><td valign='top'>";
+ $s .= '</td></tr><tr><td valign="top">';
- $s .= "<font size='-1'><span id='sitesub'>";
- $s .= htmlspecialchars( wfMsg( "sitesubtitle" ) ) . "</span></font>";
- $s .= "</td><td align='right'>" ;
+ $s .= '<font size="-1"><span id="sitesub">';
+ $s .= htmlspecialchars( wfMsg( 'sitesubtitle' ) ) . '</span></font>';
+ $s .= '</td><td align="right">';
- $s .= "<font size='-1'><span id='langlinks'>" ;
- $s .= str_replace ( "<br />" , "" , $this->otherLanguages() );
+ $s .= '<font size="-1"><span id="langlinks">';
+ $s .= str_replace( '<br />', '', $this->otherLanguages() );
$cat = $this->getCategoryLinks();
- if( $cat ) $s .= "<br />$cat\n";
- $s .= "<br />" . $this->pageTitleLinks();
- $s .= "</span></font>";
+ if( $cat ) {
+ $s .= "<br />$cat\n";
+ }
+ $s .= '<br />' . $this->pageTitleLinks();
+ $s .= '</span></font>';
$s .= "</td></tr></table>\n";
@@ -64,37 +66,44 @@ class SkinCologneBlue extends Skin {
return $s;
}
- function doAfterContent()
- {
- global $wgOut, $wgLang;
+ function doAfterContent(){
+ global $wgLang;
$s = "\n</div><br clear='all' />\n";
$s .= "\n<div id='footer'>";
- $s .= "<table width='98%' border='0' cellspacing='0'><tr>";
+ $s .= '<table width="98%" border="0" cellspacing="0"><tr>';
$qb = $this->qbSetting();
if ( 1 == $qb || 3 == $qb ) { # Left
$s .= $this->getQuickbarCompensator();
}
- $s .= "<td class='bottom' align='center' valign='top'>";
+ $s .= '<td class="bottom" align="center" valign="top">';
$s .= $this->bottomLinks();
$s .= $wgLang->pipeList( array(
- "\n<br />" . $this->makeKnownLinkObj( Title::newMainPage() ),
+ "\n<br />" . $this->link(
+ Title::newMainPage(),
+ null,
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ),
$this->aboutLink(),
- $this->searchForm( wfMsg( "qbfind" ) )
+ $this->searchForm( wfMsg( 'qbfind' ) )
) );
$s .= "\n<br />" . $this->pageStats();
- $s .= "</td>";
+ $s .= '</td>';
if ( 2 == $qb ) { # Right
$s .= $this->getQuickbarCompensator();
}
$s .= "</tr></table>\n</div>\n</div>\n";
- if ( 0 != $qb ) { $s .= $this->quickBar(); }
+ if ( 0 != $qb ) {
+ $s .= $this->quickBar();
+ }
return $s;
}
@@ -104,42 +113,51 @@ class SkinCologneBlue extends Skin {
if ( 2 == $qb ) { # Right
$s .= "#quickbar { position: absolute; right: 4px; }\n" .
- "#article { margin-left: 4px; margin-right: 148px; }\n";
- } else if ( 1 == $qb ) {
+ "#article { margin-left: 4px; margin-right: 148px; }\n";
+ } elseif ( 1 == $qb ) {
$s .= "#quickbar { position: absolute; left: 4px; }\n" .
- "#article { margin-left: 148px; margin-right: 4px; }\n";
- } else if ( 3 == $qb ) { # Floating left
+ "#article { margin-left: 148px; margin-right: 4px; }\n";
+ } elseif ( 3 == $qb ) { # Floating left
$s .= "#quickbar { position:absolute; left:4px } \n" .
- "#topbar { margin-left: 148px }\n" .
- "#article { margin-left:148px; margin-right: 4px; } \n" .
- "body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;} \n"; # Hides from IE
- } else if ( 4 == $qb ) { # Floating right
+ "#topbar { margin-left: 148px }\n" .
+ "#article { margin-left:148px; margin-right: 4px; } \n" .
+ "body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;} \n"; # Hides from IE
+ } elseif ( 4 == $qb ) { # Floating right
$s .= "#quickbar { position: fixed; right: 4px; } \n" .
- "#topbar { margin-right: 148px }\n" .
- "#article { margin-right: 148px; margin-left: 4px; } \n" .
- "body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto ;bottom:4px;} \n"; # Hides from IE
+ "#topbar { margin-right: 148px }\n" .
+ "#article { margin-right: 148px; margin-left: 4px; } \n" .
+ "body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto ;bottom:4px;} \n"; # Hides from IE
}
return $s;
}
function sysLinks() {
- global $wgUser, $wgLang, $wgContLang, $wgTitle;
- $li = $wgContLang->specialPage("Userlogin");
- $lo = $wgContLang->specialPage("Userlogout");
+ global $wgUser, $wgLang, $wgContLang;
+ $li = SpecialPage::getTitleFor( 'Userlogin' );
+ $lo = SpecialPage::getTitleFor( 'Userlogout' );
- $rt = $wgTitle->getPrefixedURL();
+ $rt = $this->mTitle->getPrefixedURL();
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
- $q = "";
+ $q = array();
} else {
- $q = "returnto={$rt}";
+ $q = array( 'returnto' => $rt );
}
$s = array(
$this->mainPageLink(),
- $this->makeKnownLink( wfMsgForContent( "aboutpage" ), wfMsg( "about" ) ),
- $this->makeKnownLink( wfMsgForContent( "helppage" ), wfMsg( "help" ) ),
- $this->makeKnownLink( wfMsgForContent( "faqpage" ), wfMsg("faq") ),
- $this->specialLink( "specialpages" )
+ $this->linkKnown(
+ Title::newFromText( wfMsgForContent( 'aboutpage' ) ),
+ wfMsg( 'about' )
+ ),
+ $this->linkKnown(
+ Title::newFromText( wfMsgForContent( 'helppage' ) ),
+ wfMsg( 'help' )
+ ),
+ $this->linkKnown(
+ Title::newFromText( wfMsgForContent( 'faqpage' ) ),
+ wfMsg( 'faq' )
+ ),
+ $this->specialLink( 'specialpages' )
);
/* show links to different language variants */
@@ -150,9 +168,19 @@ class SkinCologneBlue extends Skin {
$s[] = $this->extensionTabLinks();
}
if ( $wgUser->isLoggedIn() ) {
- $s[] = $this->makeKnownLink( $lo, wfMsg( "logout" ), $q );
+ $s[] = $this->linkKnown(
+ $lo,
+ wfMsg( 'logout' ),
+ array(),
+ $q
+ );
} else {
- $s[] = $this->makeKnownLink( $li, wfMsg( "login" ), $q );
+ $s[] = $this->linkKnown(
+ $li,
+ wfMsg( 'login' ),
+ array(),
+ $q
+ );
}
return $wgLang->pipeList( $s );
@@ -162,19 +190,18 @@ class SkinCologneBlue extends Skin {
* Compute the sidebar
* @access private
*/
- function quickBar()
- {
- global $wgOut, $wgTitle, $wgUser, $wgLang, $wgContLang, $wgEnableUploads;
+ function quickBar(){
+ global $wgOut, $wgUser, $wgEnableUploads;
- $tns=$wgTitle->getNamespace();
+ $tns = $this->mTitle->getNamespace();
$s = "\n<div id='quickbar'>";
- $sep = "<br />";
- $s .= $this->menuHead( "qbfind" );
+ $sep = '<br />';
+ $s .= $this->menuHead( 'qbfind' );
$s .= $this->searchForm();
- $s .= $this->menuHead( "qbbrowse" );
+ $s .= $this->menuHead( 'qbbrowse' );
# Use the first heading from the Monobook sidebar as the "browse" section
$bar = $this->buildSidebar();
@@ -191,46 +218,49 @@ class SkinCologneBlue extends Skin {
}
if ( $wgOut->isArticle() ) {
- $s .= $this->menuHead( "qbedit" );
- $s .= "<strong>" . $this->editThisPage() . "</strong>";
+ $s .= $this->menuHead( 'qbedit' );
+ $s .= '<strong>' . $this->editThisPage() . '</strong>';
- $s .= $sep . $this->makeKnownLink( wfMsgForContent( "edithelppage" ), wfMsg( "edithelp" ) );
+ $s .= $sep . $this->linkKnown(
+ Title::newFromText( wfMsgForContent( 'edithelppage' ) ),
+ wfMsg( 'edithelp' )
+ );
if( $wgUser->isLoggedIn() ) {
$s .= $sep . $this->moveThisPage();
}
- if ( $wgUser->isAllowed('delete') ) {
+ if ( $wgUser->isAllowed( 'delete' ) ) {
$dtp = $this->deleteThisPage();
- if ( "" != $dtp ) {
+ if ( $dtp != '' ) {
$s .= $sep . $dtp;
}
}
- if ( $wgUser->isAllowed('protect') ) {
+ if ( $wgUser->isAllowed( 'protect' ) ) {
$ptp = $this->protectThisPage();
- if ( "" != $ptp ) {
+ if ( $ptp != '' ) {
$s .= $sep . $ptp;
}
}
$s .= $sep;
- $s .= $this->menuHead( "qbpageoptions" );
+ $s .= $this->menuHead( 'qbpageoptions' );
$s .= $this->talkLink()
- . $sep . $this->commentLink()
- . $sep . $this->printableLink();
+ . $sep . $this->commentLink()
+ . $sep . $this->printableLink();
if ( $wgUser->isLoggedIn() ) {
$s .= $sep . $this->watchThisPage();
}
$s .= $sep;
- $s .= $this->menuHead("qbpageinfo")
- . $this->historyLink()
- . $sep . $this->whatLinksHere()
- . $sep . $this->watchPageLinksLink();
+ $s .= $this->menuHead( 'qbpageinfo' )
+ . $this->historyLink()
+ . $sep . $this->whatLinksHere()
+ . $sep . $this->watchPageLinksLink();
if( $tns == NS_USER || $tns == NS_USER_TALK ) {
- $id=User::idFromName($wgTitle->getText());
- if ($id != 0) {
+ $id = User::idFromName( $this->mTitle->getText() );
+ if( $id != 0 ) {
$s .= $sep . $this->userContribsLink();
if( $this->showEmailUser( $id ) ) {
$s .= $sep . $this->emailUserLink();
@@ -240,72 +270,92 @@ class SkinCologneBlue extends Skin {
$s .= $sep;
}
- $s .= $this->menuHead( "qbmyoptions" );
+ $s .= $this->menuHead( 'qbmyoptions' );
if ( $wgUser->isLoggedIn() ) {
$name = $wgUser->getName();
- $tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(),
- wfMsg( 'mytalk' ) );
+ $tl = $this->link(
+ $wgUser->getTalkPage(),
+ wfMsg( 'mytalk' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
if ( $wgUser->getNewtalk() ) {
- $tl .= " *";
+ $tl .= ' *';
}
- $s .= $this->makeKnownLinkObj( $wgUser->getUserPage(),
- wfMsg( "mypage" ) )
- . $sep . $tl
- . $sep . $this->specialLink( "watchlist" )
- . $sep . $this->makeKnownLinkObj( SpecialPage::getSafeTitleFor( "Contributions", $wgUser->getName() ),
- wfMsg( "mycontris" ) )
- . $sep . $this->specialLink( "preferences" )
- . $sep . $this->specialLink( "userlogout" );
+ $s .= $this->link(
+ $wgUser->getUserPage(),
+ wfMsg( 'mypage' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . $sep . $tl . $sep . $this->specialLink( 'watchlist' )
+ . $sep .
+ $this->link(
+ SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
+ wfMsg( 'mycontris' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ ) . $sep . $this->specialLink( 'preferences' )
+ . $sep . $this->specialLink( 'userlogout' );
} else {
- $s .= $this->specialLink( "userlogin" );
+ $s .= $this->specialLink( 'userlogin' );
}
- $s .= $this->menuHead( "qbspecialpages" )
- . $this->specialLink( "newpages" )
- . $sep . $this->specialLink( "listfiles" )
- . $sep . $this->specialLink( "statistics" );
+ $s .= $this->menuHead( 'qbspecialpages' )
+ . $this->specialLink( 'newpages' )
+ . $sep . $this->specialLink( 'listfiles' )
+ . $sep . $this->specialLink( 'statistics' );
if ( $wgUser->isLoggedIn() && $wgEnableUploads ) {
- $s .= $sep . $this->specialLink( "upload" );
+ $s .= $sep . $this->specialLink( 'upload' );
}
+
global $wgSiteSupportPage;
- if( $wgSiteSupportPage) {
- $s .= $sep."<a href=\"".htmlspecialchars($wgSiteSupportPage)."\" class =\"internal\">"
- .wfMsg( "sitesupport" )."</a>";
+
+ if( $wgSiteSupportPage ) {
+ $s .= $sep . '<a href="' . htmlspecialchars( $wgSiteSupportPage ) . '" class="internal">'
+ . wfMsg( 'sitesupport' ) . '</a>';
}
- $s .= $sep . $this->makeKnownLinkObj(
+ $s .= $sep . $this->link(
SpecialPage::getTitleFor( 'Specialpages' ),
- wfMsg( 'moredotdotdot' ) );
+ wfMsg( 'moredotdotdot' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
$s .= $sep . "\n</div>\n";
return $s;
}
- function menuHead( $key )
- {
+ function menuHead( $key ) {
$s = "\n<h6>" . wfMsg( $key ) . "</h6>";
return $s;
}
- function searchForm( $label = "" )
- {
+ function searchForm( $label = '' ) {
global $wgRequest, $wgUseTwoButtonsSearchForm;
$search = $wgRequest->getText( 'search' );
$action = $this->escapeSearchLink();
$s = "<form id=\"searchform{$this->searchboxes}\" method=\"get\" class=\"inline\" action=\"$action\">";
- if ( "" != $label ) { $s .= "{$label}: "; }
+ if( $label != '' ) {
+ $s .= "{$label}: ";
+ }
$s .= "<input type='text' id=\"searchInput{$this->searchboxes}\" class=\"mw-searchInput\" name=\"search\" size=\"14\" value=\""
- . htmlspecialchars(substr($search,0,256)) . "\" /><br />"
- . "<input type='submit' id=\"searchGoButton{$this->searchboxes}\" class=\"searchButton\" name=\"go\" value=\"" . htmlspecialchars( wfMsg( "searcharticle" ) ) . "\" />";
-
- if ($wgUseTwoButtonsSearchForm)
- $s .= "<input type='submit' id=\"mw-searchButton{$this->searchboxes}\" class=\"searchButton\" name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( "search" ) ) . "\" />\n";
- else
- $s .= '<div><a href="$action" rel="search">' . wfMsg ('powersearch-legend') . "</a></div>\n";
-
+ . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" /><br />"
+ . "<input type='submit' id=\"searchGoButton{$this->searchboxes}\" class=\"searchButton\" name=\"go\" value=\"" . htmlspecialchars( wfMsg( 'searcharticle' ) ) . "\" />";
+
+ if( $wgUseTwoButtonsSearchForm ) {
+ $s .= "<input type='submit' id=\"mw-searchButton{$this->searchboxes}\" class=\"searchButton\" name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( 'search' ) ) . "\" />\n";
+ } else {
+ $s .= '<div><a href="' . $action . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a></div>\n";
+ }
+
$s .= '</form>';
// Ensure unique id's for search boxes made after the first
@@ -314,5 +364,3 @@ class SkinCologneBlue extends Skin {
return $s;
}
}
-
-
diff --git a/skins/Modern.php b/skins/Modern.php
index 6b6651d1..ef1b1a1e 100644
--- a/skins/Modern.php
+++ b/skins/Modern.php
@@ -16,8 +16,11 @@ if( !defined( 'MEDIAWIKI' ) )
* @ingroup Skins
*/
class SkinModern extends SkinTemplate {
+ var $skinname = 'modern', $stylename = 'modern',
+ $template = 'ModernTemplate', $useHeadElement = true;
+
/*
- * We don't like the default getPoweredBy, the icon clashes with the
+ * We don't like the default getPoweredBy, the icon clashes with the
* skin L&F.
*/
function getPoweredBy() {
@@ -25,14 +28,9 @@ class SkinModern extends SkinTemplate {
return "<div class='mw_poweredby'>Powered by MediaWiki $wgVersion</div>";
}
- function initPage( OutputPage $out ) {
- parent::initPage( $out );
- $this->skinname = 'modern';
- $this->stylename = 'modern';
- $this->template = 'ModernTemplate';
- }
-
function setupSkinUserCss( OutputPage $out ){
+ global $wgStyleVersion, $wgJsMimeType, $wgStylePath;
+
// Do not call parent::setupSkinUserCss(), we have our own print style
$out->addStyle( 'common/shared.css', 'screen' );
$out->addStyle( 'modern/main.css', 'screen' );
@@ -56,53 +54,18 @@ class ModernTemplate extends QuickTemplate {
* @access private
*/
function execute() {
- global $wgRequest;
+ global $wgRequest, $wgOut;
$this->skin = $skin = $this->data['skin'];
$action = $wgRequest->getText( 'action' );
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
-?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
- foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
- ?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
- } ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
- <head>
- <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
- <?php $this->html('headlinks') ?>
- <title><?php $this->text('pagetitle') ?></title>
- <?php $this->html('csslinks') ?>
- <!--[if lt IE 7]><meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-
- <?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
-
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
- <!-- Head Scripts -->
-<?php $this->html('headscripts') ?>
-<?php if($this->data['jsvarurl' ]) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"><!-- site js --></script>
-<?php } ?>
-<?php if($this->data['pagecss' ]) { ?>
- <style type="text/css"><?php $this->html('pagecss' ) ?></style>
-<?php }
- if($this->data['usercss' ]) { ?>
- <style type="text/css"><?php $this->html('usercss' ) ?></style>
-<?php }
- if($this->data['userjs' ]) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
-<?php }
- if($this->data['userjsprev']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
-<?php }
- if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- </head>
-<body<?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
-<?php if($this->data['body_onload' ]) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
- class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
+ $this->html( 'headelement' );
+?>
<!-- heading -->
- <div id="mw_header"><h1 id="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1></div>
+ <div id="mw_header"><h1 id="firstHeading"><?php $this->html('title') ?></h1></div>
<div id="mw_main">
<div id="mw_contentwrapper">
@@ -141,9 +104,9 @@ class ModernTemplate extends QuickTemplate {
<!-- contentholder does nothing by default, but it allows users to style the text inside
the content area without affecting the meaning of 'em' in #mw_content, which is used
for the margins -->
- <div id="mw_contentholder">
+ <div id="mw_contentholder" <?php $this->html("specialpageattributes") ?>>
<div class='mw-topboxes'>
- <div id="mw-js-message" style="display:none;"></div>
+ <div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes')?>></div>
<div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div>
<?php if($this->data['newtalk'] ) {
?><div class="usermessage mw-topbox"><?php $this->html('newtalk') ?></div>
@@ -153,7 +116,7 @@ class ModernTemplate extends QuickTemplate {
<?php } ?>
</div>
- <div id="contentSub"><?php $this->html('subtitle') ?></div>
+ <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
<?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?>
<?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#mw_portlets"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
@@ -166,11 +129,11 @@ class ModernTemplate extends QuickTemplate {
</div><!-- mw_content -->
</div><!-- mw_contentwrapper -->
- <div id="mw_portlets">
+ <div id="mw_portlets"<?php $this->html("userlangattributes") ?>>
<!-- portlets -->
- <?php
- $sidebar = $this->data['sidebar'];
+ <?php
+ $sidebar = $this->data['sidebar'];
if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
@@ -213,8 +176,8 @@ class ModernTemplate extends QuickTemplate {
</div>
- <!-- footer -->
- <div id="footer">
+ <!-- footer -->
+ <div id="footer"<?php $this->html('userlangattributes') ?>>
<ul id="f-list">
<?php
$footerlinks = array(
@@ -251,7 +214,7 @@ class ModernTemplate extends QuickTemplate {
<div id="p-search" class="portlet">
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
<div id="searchBody" class="pBody">
- <form action="<?php $this->text('wgScript') ?>" id="searchform"><div>
+ <form action="<?php $this->text('wgScript') ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
<input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
if( isset( $this->data['search'] ) ) {
@@ -261,9 +224,9 @@ class ModernTemplate extends QuickTemplate {
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
- </div></form>
- </div><!-- pBody -->
- </div><!-- portlet -->
+ </form>
+ </div>
+ </div>
<?php
}
@@ -284,7 +247,7 @@ class ModernTemplate extends QuickTemplate {
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
<li id="t-recentchangeslinked"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
+ ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
<?php }
}
if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
@@ -320,18 +283,17 @@ class ModernTemplate extends QuickTemplate {
}
wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
-?> </ul>
- </div><!-- pBody -->
- </div><!-- portlet -->
+?>
+ </ul>
+ </div>
+ </div>
<?php
}
/*************************************************************************************************/
function languageBox() {
+ if( $this->data['language_urls'] ) {
?>
- <!-- languages -->
-<?php
- if( $this->data['language_urls'] ) { ?>
<div id="p-lang" class="portlet">
<h5><?php $this->msg('otherlanguages') ?></h5>
<div class="pBody">
@@ -341,8 +303,8 @@ class ModernTemplate extends QuickTemplate {
?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
<?php } ?>
</ul>
- </div><!-- pBody -->
- </div><!-- portlet -->
+ </div>
+ </div>
<?php
}
}
@@ -364,12 +326,13 @@ class ModernTemplate extends QuickTemplate {
<?php } else {
# allow raw HTML block to be defined by extensions
print $cont;
- }
+ }
?>
- </div><!-- pBody -->
- </div><!-- portlet -->
+ </div>
+ </div>
<?php
}
} // end of class
-?>
+
+
diff --git a/skins/MonoBook.php b/skins/MonoBook.php
index 2312de0f..fdc1684d 100644
--- a/skins/MonoBook.php
+++ b/skins/MonoBook.php
@@ -20,13 +20,8 @@ if( !defined( 'MEDIAWIKI' ) )
*/
class SkinMonoBook extends SkinTemplate {
/** Using monobook. */
- function initPage( OutputPage $out ) {
- parent::initPage( $out );
- $this->skinname = 'monobook';
- $this->stylename = 'monobook';
- $this->template = 'MonoBookTemplate';
-
- }
+ var $skinname = 'monobook', $stylename = 'monobook',
+ $template = 'MonoBookTemplate', $useHeadElement = true;
function setupSkinUserCss( OutputPage $out ) {
global $wgHandheldStyle;
@@ -46,6 +41,7 @@ class SkinMonoBook extends SkinTemplate {
$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
$out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
+
}
}
@@ -65,84 +61,50 @@ class MonoBookTemplate extends QuickTemplate {
*/
function execute() {
global $wgRequest;
+
$this->skin = $skin = $this->data['skin'];
$action = $wgRequest->getText( 'action' );
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
-?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
- foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
- ?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
- } ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
- <head>
- <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
- <?php $this->html('headlinks') ?>
- <title><?php $this->text('pagetitle') ?></title>
- <?php $this->html('csslinks') ?>
-
- <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
- <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-
- <?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
+ $this->html( 'headelement' );
+?><div id="globalWrapper">
+<div id="column-content"><div id="content" <?php $this->html("specialpageattributes") ?>>
+ <a id="top"></a>
+ <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
- <!-- Head Scripts -->
-<?php $this->html('headscripts') ?>
-<?php if($this->data['jsvarurl']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl') ?>"><!-- site js --></script>
-<?php } ?>
-<?php if($this->data['pagecss']) { ?>
- <style type="text/css"><?php $this->html('pagecss') ?></style>
-<?php }
- if($this->data['usercss']) { ?>
- <style type="text/css"><?php $this->html('usercss') ?></style>
-<?php }
- if($this->data['userjs']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
-<?php }
- if($this->data['userjsprev']) { ?>
- <script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
-<?php }
- if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- </head>
-<body<?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
-<?php if($this->data['body_onload']) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
- class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
- <div id="globalWrapper">
- <div id="column-content">
- <div id="content">
- <a name="top" id="top"></a>
- <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <h1 id="firstHeading" class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
- <div id="bodyContent">
- <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
- <div id="contentSub"><?php $this->html('subtitle') ?></div>
- <?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?>
- <?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk') ?></div><?php } ?>
- <?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
- <!-- start content -->
- <?php $this->html('bodytext') ?>
- <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
- <!-- end content -->
- <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
- <div class="visualClear"></div>
- </div>
+ <h1 id="firstHeading" class="firstHeading"><?php $this->html('title') ?></h1>
+ <div id="bodyContent">
+ <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
+ <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
+<?php if($this->data['undelete']) { ?>
+ <div id="contentSub2"><?php $this->html('undelete') ?></div>
+<?php } ?><?php if($this->data['newtalk'] ) { ?>
+ <div class="usermessage"><?php $this->html('newtalk') ?></div>
+<?php } ?><?php if($this->data['showjumplinks']) { ?>
+ <div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
+<?php } ?>
+ <!-- start content -->
+<?php $this->html('bodytext') ?>
+ <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
+ <!-- end content -->
+ <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
+ <div class="visualClear"></div>
</div>
- </div>
- <div id="column-one">
+</div></div>
+<div id="column-one"<?php $this->html('userlangattributes') ?>>
<div id="p-cactions" class="portlet">
<h5><?php $this->msg('views') ?></h5>
<div class="pBody">
- <ul>
- <?php foreach($this->data['content_actions'] as $key => $tab) {
+ <ul><?php
+ foreach($this->data['content_actions'] as $key => $tab) {
echo '
<li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
if( $tab['class'] ) {
echo ' class="'.htmlspecialchars($tab['class']).'"';
}
- echo'><a href="'.htmlspecialchars($tab['href']).'"';
+ echo '><a href="'.htmlspecialchars($tab['href']).'"';
# We don't want to give the watch tab an accesskey if the
# page is being edited, because that conflicts with the
# accesskey on the watch checkbox. We also don't want to
@@ -157,13 +119,14 @@ class MonoBookTemplate extends QuickTemplate {
}
echo '>'.htmlspecialchars($tab['text']).'</a></li>';
} ?>
+
</ul>
</div>
</div>
<div class="portlet" id="p-personal">
<h5><?php $this->msg('personaltools') ?></h5>
<div class="pBody">
- <ul>
+ <ul<?php $this->html('userlangattributes') ?>>
<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
@@ -198,16 +161,16 @@ class MonoBookTemplate extends QuickTemplate {
}
}
?>
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <div id="footer">
+</div><!-- end of the left (by default at least) column -->
+<div class="visualClear"></div>
+<div id="footer"<?php $this->html('userlangattributes') ?>>
<?php
- if($this->data['poweredbyico']) { ?>
- <div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
-<?php }
- if($this->data['copyrightico']) { ?>
- <div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
-<?php }
+if($this->data['poweredbyico']) { ?>
+ <div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
+<?php }
+if($this->data['copyrightico']) { ?>
+ <div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
+<?php }
// Generate additional footer links
$footerlinks = array(
@@ -221,18 +184,18 @@ class MonoBookTemplate extends QuickTemplate {
}
}
if ( count( $validFooterLinks ) > 0 ) {
-?> <ul id="f-list">
+?> <ul id="f-list">
<?php
foreach( $validFooterLinks as $aLink ) {
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
+?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
<?php }
}
?>
- </ul>
+ </ul>
<?php }
?>
- </div>
+</div>
</div>
<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
<?php $this->html('reporttime') ?>
@@ -254,17 +217,23 @@ class MonoBookTemplate extends QuickTemplate {
<div id="p-search" class="portlet">
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
<div id="searchBody" class="pBody">
- <form action="<?php $this->text('wgScript') ?>" id="searchform"><div>
+ <form action="<?php $this->text('wgScript') ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
- <input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
- if( isset( $this->data['search'] ) ) {
- ?> value="<?php $this->text('search') ?>"<?php } ?> />
+ <?php
+ echo Html::input( 'search',
+ isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
+ array(
+ 'id' => 'searchInput',
+ 'title' => $this->skin->titleAttrib( 'search' ),
+ 'accesskey' => $this->skin->accesskey( 'search' )
+ ) ); ?>
+
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&nbsp;
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
- </div></form>
+ </form>
</div>
</div>
<?php
@@ -286,10 +255,10 @@ class MonoBookTemplate extends QuickTemplate {
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
<li id="t-recentchangeslinked"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
+ ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
<?php }
}
- if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
+ if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
<li id="t-trackbacklink"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
@@ -335,7 +304,7 @@ class MonoBookTemplate extends QuickTemplate {
if( $this->data['language_urls'] ) {
?>
<div id="p-lang" class="portlet">
- <h5><?php $this->msg('otherlanguages') ?></h5>
+ <h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
<div class="pBody">
<ul>
<?php foreach($this->data['language_urls'] as $langlink) { ?>
@@ -353,7 +322,7 @@ class MonoBookTemplate extends QuickTemplate {
function customBox( $bar, $cont ) {
?>
<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
- <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
+ <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
<div class='pBody'>
<?php if ( is_array( $cont ) ) { ?>
<ul>
@@ -372,7 +341,6 @@ class MonoBookTemplate extends QuickTemplate {
</div>
<?php
}
-
} // end of class
diff --git a/skins/MySkin.php b/skins/MySkin.php
index 46098454..8859a71a 100644
--- a/skins/MySkin.php
+++ b/skins/MySkin.php
@@ -1,8 +1,8 @@
<?php
/**
- * See docs/skin.txt
+ * MySkin: Monobook without the CSS. The idea is that you
+ * customise it using user or site CSS
*
- * @todo document
* @file
* @ingroup Skins
*/
@@ -11,14 +11,10 @@ if( !defined( 'MEDIAWIKI' ) )
die( -1 );
/**
- * @todo document
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
* @ingroup Skins
*/
class SkinMySkin extends SkinTemplate {
- function initPage( OutputPage $out ) {
- parent::initPage( $out );
- $this->skinname = 'myskin';
- $this->stylename = 'myskin';
- $this->template = 'MonoBookTemplate';
- }
+ var $skinname = 'myskin', $stylename = 'myskin',
+ $template = 'MonoBookTemplate', $useHeadElement = true;
}
diff --git a/skins/Nostalgia.php b/skins/Nostalgia.php
index d4dee0f4..d4f3f06f 100644
--- a/skins/Nostalgia.php
+++ b/skins/Nostalgia.php
@@ -1,14 +1,14 @@
<?php
/**
- * See docs/skin.txt
+ * Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
*
- * @todo document
* @file
* @ingroup Skins
*/
-if( !defined( 'MEDIAWIKI' ) )
+if( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
+}
/**
* @todo document
@@ -19,18 +19,19 @@ class SkinNostalgia extends Skin {
function getStylesheet() {
return 'common/nostalgia.css';
}
+
function getSkinName() {
- return "nostalgia";
+ return 'nostalgia';
}
function doBeforeContent() {
$s = "\n<div id='content'>\n<div id='top'>\n";
- $s .= "<div id=\"logo\">".$this->logoText( "right" )."</div>";
+ $s .= '<div id="logo">' . $this->logoText( 'right' ) . '</div>';
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() . "\n";
- $s .= "<div id=\"topbar\">";
+ $s .= '<div id="topbar">';
$s .= $this->topLinks() . "\n<br />";
$notice = wfGetSiteNotice();
@@ -40,10 +41,14 @@ class SkinNostalgia extends Skin {
$s .= $this->pageTitleLinks();
$ol = $this->otherLanguages();
- if($ol) $s .= "<br />" . $ol;
+ if( $ol ) {
+ $s .= '<br />' . $ol;
+ }
$cat = $this->getCategoryLinks();
- if($cat) $s .= "<br />" . $cat;
+ if( $cat ) {
+ $s .= '<br />' . $cat;
+ }
$s .= "<br clear='all' /></div><hr />\n</div>\n";
$s .= "\n<div id='article'>";
@@ -79,7 +84,7 @@ class SkinNostalgia extends Skin {
$s .= $sep . $this->specialLink( 'watchlist' );
/* show my contributions link */
$s .= $sep . $this->link(
- SpecialPage::getSafeTitleFor( "Contributions", $wgUser->getName() ),
+ SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
wfMsgHtml( 'mycontris' ) );
/* show my preferences link */
$s .= $sep . $this->specialLink( 'preferences' );
@@ -104,13 +109,11 @@ class SkinNostalgia extends Skin {
$s .= $this->bottomLinks();
$s .= "\n<br />" . $this->pageStats();
$s .= "\n<br />" . $this->mainPageLink()
- . " | " . $this->aboutLink()
- . " | " . $this->searchForm();
+ . ' | ' . $this->aboutLink()
+ . ' | ' . $this->searchForm();
$s .= "\n</div>\n</div>\n";
return $s;
}
}
-
-
diff --git a/skins/Simple.php b/skins/Simple.php
index b26f50d0..416dc3f6 100644
--- a/skins/Simple.php
+++ b/skins/Simple.php
@@ -1,8 +1,8 @@
<?php
/**
- * See docs/skin.txt
+ * Simple: A lightweight skin with a simple white-background sidebar and no
+ * top bar.
*
- * @todo document
* @file
* @ingroup Skins
*/
@@ -14,34 +14,29 @@ if( !defined( 'MEDIAWIKI' ) )
require_once( dirname(__FILE__) . '/MonoBook.php' );
/**
- * @todo document
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
* @ingroup Skins
*/
class SkinSimple extends SkinTemplate {
- function initPage( OutputPage $out ) {
- SkinTemplate::initPage( $out );
- $this->skinname = 'simple';
- $this->stylename = 'simple';
- $this->template = 'MonoBookTemplate';
- }
+ var $skinname = 'simple', $stylename = 'simple',
+ $template = 'MonoBookTemplate', $useHeadElement = true;
function setupSkinUserCss( OutputPage $out ){
$out->addStyle( 'simple/main.css', 'screen' );
$out->addStyle( 'simple/rtl.css', '', '', 'rtl' );
-
}
function reallyGenerateUserStylesheet() {
global $wgUser;
$s = '';
- if (($undopt = $wgUser->getOption("underline")) != 2) {
+ if( ( $undopt = $wgUser->getOption( 'underline' ) ) != 2 ) {
$underline = $undopt ? 'underline' : 'none';
$s .= "a { text-decoration: $underline; }\n";
}
- if ($wgUser->getOption('highlightbroken')) {
+ if( $wgUser->getOption( 'highlightbroken' ) ) {
$s .= "a.new, #quickbar a.new { text-decoration: line-through; }\n";
} else {
- $s .= <<<END
+ $s .= <<<CSS
a.new, #quickbar a.new,
a.stub, #quickbar a.stub {
color: inherit;
@@ -57,19 +52,17 @@ a.stub:after, #quickbar a.stub:after {
color: #772233;
text-decoration: $underline;
}
-END;
+CSS;
}
- if ($wgUser->getOption('justify')) {
+ if( $wgUser->getOption( 'justify' ) ) {
$s .= "#article, #bodyContent { text-align: justify; }\n";
}
- if (!$wgUser->getOption('showtoc')) {
+ if( !$wgUser->getOption( 'showtoc' ) ) {
$s .= "#toc { display: none; }\n";
}
- if (!$wgUser->getOption('editsection')) {
+ if( !$wgUser->getOption( 'editsection' ) ) {
$s .= ".editsection { display: none; }\n";
}
return $s;
}
}
-
-
diff --git a/skins/Skin.sample b/skins/Skin.sample
deleted file mode 100644
index c011c143..00000000
--- a/skins/Skin.sample
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-# Your class extension is defined there.
-#
-# Do NOT use PHPTal with this sample, if you want PHPTal support have a look at
-# the other sample : SkinPHPTal.sample.
-#
-# The class name MUST begin with 'Skin' and the rest is the name of the file
-# excluding '.php'
-# This file is named Skin.sample (but it should end with php). So the
-# class name will be 'Skin' . 'Skin'
-
-class SkinSkin extends Skin {
-# Override method below
-#
-
-}
-
-}
-?>
diff --git a/skins/Standard.php b/skins/Standard.php
index 694bc5e3..e57cfaf9 100644
--- a/skins/Standard.php
+++ b/skins/Standard.php
@@ -1,14 +1,14 @@
<?php
/**
- * See docs/skin.txt
+ * Standard (a.k.a. Classic) skin: old MediaWiki default skin
*
- * @todo document
* @file
* @ingroup Skins
*/
-if( !defined( 'MEDIAWIKI' ) )
+if( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
+}
/**
* @todo document
@@ -19,24 +19,10 @@ class SkinStandard extends Skin {
/**
*
*/
- function getHeadScripts( $allowUserJs ) {
- global $wgStylePath, $wgJsMimeType, $wgStyleVersion;
-
- $s = parent::getHeadScripts( $allowUserJs );
- if ( 3 == $this->qbSetting() ) { # Floating left
- $s .= "<script language='javascript' type='$wgJsMimeType' " .
- "src='{$wgStylePath}/common/sticky.js?$wgStyleVersion'></script>\n";
- }
- return $s;
- }
-
- /**
- *
- */
function setupSkinUserCss( OutputPage $out ){
if ( 3 == $this->qbSetting() ) { # Floating left
$out->addStyle( 'common/quickbar.css' );
- } else if ( 4 == $this->qbSetting() ) { # Floating right
+ } elseif ( 4 == $this->qbSetting() ) { # Floating right
$out->addStyle( 'common/quickbar-right.css' );
}
parent::setupSkinUserCss( $out );
@@ -51,60 +37,44 @@ class SkinStandard extends Skin {
if ( 2 == $qb ) { # Right
$s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
- "border-left: 2px solid #000000; }\n" .
- "#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }\n";
- } else if ( 1 == $qb || 3 == $qb ) {
+ "border-left: 2px solid #000000; }\n" .
+ "#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }\n";
+ } elseif ( 1 == $qb || 3 == $qb ) {
$s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
- "border-right: 1px solid gray; }\n" .
- "#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }\n";
- } else if ( 4 == $qb) {
+ "border-right: 1px solid gray; }\n" .
+ "#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }\n";
+ } elseif ( 4 == $qb ) {
$s .= "#quickbar { border-right: 1px solid gray; }\n" .
- "#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }\n";
+ "#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }\n";
}
return $s;
}
- /**
- *
- */
- function getBodyOptions() {
- $a = parent::getBodyOptions();
-
- if ( 3 == $this->qbSetting() ) { # Floating left
- $qb = "setup(\"quickbar\")";
- if($a["onload"]) {
- $a["onload"] .= ";$qb";
- } else {
- $a["onload"] = $qb;
- }
- }
- return $a;
- }
-
function doAfterContent() {
global $wgContLang, $wgLang;
- $fname = 'SkinStandard::doAfterContent';
- wfProfileIn( $fname );
- wfProfileIn( $fname.'-1' );
+ wfProfileIn( __METHOD__ );
+ wfProfileIn( __METHOD__ . '-1' );
$s = "\n</div><br style=\"clear:both\" />\n";
$s .= "\n<div id='footer'>";
$s .= '<table border="0" cellspacing="0"><tr>';
- wfProfileOut( $fname.'-1' );
- wfProfileIn( $fname.'-2' );
+ wfProfileOut( __METHOD__ . '-1' );
+ wfProfileIn( __METHOD__ . '-2' );
$qb = $this->qbSetting();
- $shove = ($qb != 0);
- $left = ($qb == 1 || $qb == 3);
- if($wgContLang->isRTL()) $left = !$left;
+ $shove = ( $qb != 0 );
+ $left = ( $qb == 1 || $qb == 3 );
+ if( $wgContLang->isRTL() ) {
+ $left = !$left;
+ }
if ( $shove && $left ) { # Left
- $s .= $this->getQuickbarCompensator();
+ $s .= $this->getQuickbarCompensator();
}
- wfProfileOut( $fname.'-2' );
- wfProfileIn( $fname.'-3' );
- $l = $wgContLang->isRTL() ? 'right' : 'left';
+ wfProfileOut( __METHOD__ . '-2' );
+ wfProfileIn( __METHOD__ . '-3' );
+ $l = $wgContLang->alignStart();
$s .= "<td class='bottom' align='$l' valign='top'>";
$s .= $this->bottomLinks();
@@ -113,32 +83,33 @@ class SkinStandard extends Skin {
$this->aboutLink(),
$this->specialLink( 'recentchanges' ),
$this->searchForm() ) )
- . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
+ . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
- $s .= "</td>";
+ $s .= '</td>';
if ( $shove && !$left ) { # Right
$s .= $this->getQuickbarCompensator();
}
$s .= "</tr></table>\n</div>\n</div>\n";
- wfProfileOut( $fname.'-3' );
- wfProfileIn( $fname.'-4' );
- if ( 0 != $qb ) { $s .= $this->quickBar(); }
- wfProfileOut( $fname.'-4' );
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ . '-3' );
+ wfProfileIn( __METHOD__ . '-4' );
+ if ( 0 != $qb ) {
+ $s .= $this->quickBar();
+ }
+ wfProfileOut( __METHOD__ . '-4' );
+ wfProfileOut( __METHOD__ );
return $s;
}
function quickBar() {
- global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang;
+ global $wgOut, $wgUser, $wgRequest, $wgContLang;
global $wgEnableUploads, $wgRemoteUploads;
- $fname = 'Skin::quickBar';
- wfProfileIn( $fname );
+ wfProfileIn( __METHOD__ );
$action = $wgRequest->getText( 'action' );
$wpPreview = $wgRequest->getBool( 'wpPreview' );
- $tns=$wgTitle->getNamespace();
+ $tns = $this->mTitle->getNamespace();
$s = "\n<div id='quickbar'>";
$s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
@@ -161,18 +132,22 @@ class SkinStandard extends Skin {
if( $wgUser->isLoggedIn() ) {
$s.= $this->specialLink( 'watchlist' ) ;
- $s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ),
- wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
+ $s .= $sep . $this->linkKnown(
+ SpecialPage::getTitleFor( 'Contributions' ),
+ wfMsg( 'mycontris' ),
+ array(),
+ array( 'target' => $wgUser->getName() )
+ );
}
// only show watchlist link if logged in
$s .= "\n<hr class='sep' />";
- $articleExists = $wgTitle->getArticleId();
- if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
- if($wgOut->isArticle()) {
+ $articleExists = $this->mTitle->getArticleId();
+ if ( $wgOut->isArticle() || $action == 'edit' || $action == 'history' || $wpPreview ) {
+ if( $wgOut->isArticle() ) {
$s .= '<strong>' . $this->editThisPage() . '</strong>';
} else { # backlink to the article in edit or history mode
- if($articleExists){ # no backlink if no article
- switch($tns) {
+ if( $articleExists ){ # no backlink if no article
+ switch( $tns ) {
case NS_TALK:
case NS_USER_TALK:
case NS_PROJECT_TALK:
@@ -208,29 +183,40 @@ class SkinStandard extends Skin {
$text = wfMsg( 'categorypage' );
break;
default:
- $text= wfMsg( 'articlepage' );
+ $text = wfMsg( 'articlepage' );
}
- $link = $wgTitle->getText();
- if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary
- $link = $nstext . ':' . $link ;
+ $link = $this->mTitle->getText();
+ if( $nstext = $wgContLang->getNsText( $tns ) ) { # add namespace if necessary
+ $link = $nstext . ':' . $link;
}
- $s .= $this->makeLink( $link, $text );
- } elseif( $wgTitle->getNamespace() != NS_SPECIAL ) {
+ $s .= $this->link(
+ Title::newFromText( $link ),
+ $text
+ );
+ } elseif( $this->mTitle->getNamespace() != NS_SPECIAL ) {
# we just throw in a "New page" text to tell the user that he's in edit mode,
# and to avoid messing with the separator that is prepended to the next item
- $s .= '<strong>' . wfMsg('newpage') . '</strong>';
+ $s .= '<strong>' . wfMsg( 'newpage' ) . '</strong>';
}
-
}
# "Post a comment" link
- if( ( $wgTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
- $s .= '<br />' . $this->makeKnownLinkObj( $wgTitle, wfMsg( 'postcomment' ), 'action=edit&section=new' );
-
+ if( ( $this->mTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
+ $s .= '<br />' . $this->link(
+ $this->mTitle,
+ wfMsg( 'postcomment' ),
+ array(),
+ array(
+ 'action' => 'edit',
+ 'section' => 'new'
+ ),
+ array( 'known', 'noclasses' )
+ );
+
#if( $tns%2 && $action!='edit' && !$wpPreview) {
- #$s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit&section=new');
+ #$s.= '<br />'.$this->linkKnown( Title::newFromText( $wgTitle->getPrefixedText() ),wfMsg('postcomment'),array(),array('action'=>'edit','section'=>'new'));
#}
/*
@@ -239,33 +225,34 @@ class SkinStandard extends Skin {
article with "Watch this article" checkbox disabled, the article is transparently
unwatched. Therefore we do not show the "Watch this page" link in edit mode
*/
- if ( $wgUser->isLoggedIn() && $articleExists) {
- if($action!='edit' && $action != 'submit' )
- {
+ if ( $wgUser->isLoggedIn() && $articleExists ) {
+ if( $action != 'edit' && $action != 'submit' ) {
$s .= $sep . $this->watchThisPage();
}
- if ( $wgTitle->userCan( 'edit' ) )
+ if ( $this->mTitle->userCan( 'edit' ) )
$s .= $sep . $this->moveThisPage();
}
- if ( $wgUser->isAllowed('delete') and $articleExists ) {
+ if ( $wgUser->isAllowed( 'delete' ) && $articleExists ) {
$s .= $sep . $this->deleteThisPage() .
$sep . $this->protectThisPage();
}
$s .= $sep . $this->talkLink();
- if ($articleExists && $action !='history') {
+ if( $articleExists && $action != 'history' ) {
$s .= $sep . $this->historyLink();
}
- $s.=$sep . $this->whatLinksHere();
+ $s .= $sep . $this->whatLinksHere();
- if($wgOut->isArticleRelated()) {
+ if( $wgOut->isArticleRelated() ) {
$s .= $sep . $this->watchPageLinksLink();
}
- if ( NS_USER == $wgTitle->getNamespace()
- || $wgTitle->getNamespace() == NS_USER_TALK ) {
+ if (
+ NS_USER == $this->mTitle->getNamespace() ||
+ $this->mTitle->getNamespace() == NS_USER_TALK
+ ) {
- $id=User::idFromName($wgTitle->getText());
- $ip=User::isIP($wgTitle->getText());
+ $id = User::idFromName( $this->mTitle->getText() );
+ $ip = User::isIP( $this->mTitle->getText() );
if( $id || $ip ){
$s .= $sep . $this->userContribsLink();
@@ -289,9 +276,8 @@ class SkinStandard extends Skin {
}
$s .= "\n<br /></div>\n";
- wfProfileOut( $fname );
+ wfProfileOut( __METHOD__ );
return $s;
}
-
}
diff --git a/skins/Vector.deps.php b/skins/Vector.deps.php
new file mode 100644
index 00000000..7a8c2881
--- /dev/null
+++ b/skins/Vector.deps.php
@@ -0,0 +1,11 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// MonoBook.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
+
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
diff --git a/skins/Vector.php b/skins/Vector.php
new file mode 100644
index 00000000..b678b7e3
--- /dev/null
+++ b/skins/Vector.php
@@ -0,0 +1,767 @@
+<?php
+/**
+ * Vector - Branch of MonoBook which has many usability improvements and
+ * somewhat cleaner code.
+ *
+ * @todo document
+ * @file
+ * @ingroup Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+ die( -1 );
+
+/**
+ * SkinTemplate class for Vector skin
+ * @ingroup Skins
+ */
+class SkinVector extends SkinTemplate {
+
+ /* Functions */
+ var $skinname = 'vector', $stylename = 'vector',
+ $template = 'VectorTemplate', $useHeadElement = true;
+
+ /**
+ * Initializes output page and sets up skin-specific parameters
+ * @param object $out Output page object to initialize
+ */
+ public function initPage( OutputPage $out ) {
+ global $wgStylePath, $wgJsMimeType, $wgStyleVersion, $wgScriptPath, $wgVectorExtraStyles;
+
+ parent::initPage( $out );
+
+ // Append skin-specific styles
+ $out->addStyle( 'vector/main-rtl.css', 'screen', '', 'rtl' );
+ $out->addStyle( 'vector/main-ltr.css', 'screen', '', 'ltr' );
+ // Append CSS which includes IE only behavior fixes for hover support -
+ // this is better than including this in a CSS fille since it doesn't
+ // wait for the CSS file to load before fetching the HTC file.
+ $out->addScript(
+ '<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
+ $wgStylePath .
+ '/vector/csshover.htc")}</style><![endif]-->'
+ );
+ // Add extra stylesheets
+ // THIS IS ONLY USEFUL FOR EXPERIMENTING WITH DIFFERNT STYLE OPTIONS! THIS WILL BE REMOVED IN THE NEAR FUTURE.
+ if ( is_array( $wgVectorExtraStyles ) ) {
+ foreach ( $wgVectorExtraStyles as $style ) {
+ $out->addStyle( 'vector/' . $style, 'screen' );
+ }
+ }
+ }
+ /**
+ * Builds a structured array of links used for tabs and menus
+ * @return array
+ * @private
+ */
+ function buildNavigationUrls() {
+ global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest, $wgArticle, $wgStylePath;
+ global $wgDisableLangConversion, $wgVectorUseIconWatch;
+
+ wfProfileIn( __METHOD__ );
+
+ $links = array(
+ 'namespaces' => array(),
+ 'views' => array(),
+ 'actions' => array(),
+ 'variants' => array()
+ );
+
+ // Detects parameters
+ $action = $wgRequest->getVal( 'action', 'view' );
+ $section = $wgRequest->getVal( 'section' );
+
+ // Checks if page is some kind of content
+ if( $this->iscontent ) {
+
+ // Gets page objects for the related namespaces
+ $subjectPage = $this->mTitle->getSubjectPage();
+ $talkPage = $this->mTitle->getTalkPage();
+
+ // Determines if this is a talk page
+ $isTalk = $this->mTitle->isTalkPage();
+
+ // Generates XML IDs from namespace names
+ $subjectId = $this->mTitle->getNamespaceKey( '' );
+
+ if ( $subjectId == 'main' ) {
+ $talkId = 'talk';
+ } else {
+ $talkId = "{$subjectId}_talk";
+ }
+ $currentId = $isTalk ? $talkId : $subjectId;
+
+ // Adds namespace links
+ $links['namespaces'][$subjectId] = $this->tabAction(
+ $subjectPage, 'vector-namespace-' . $subjectId, !$isTalk, '', true
+ );
+ $links['namespaces'][$subjectId]['context'] = 'subject';
+ $links['namespaces'][$talkId] = $this->tabAction(
+ $talkPage, 'vector-namespace-talk', $isTalk, '', true
+ );
+ $links['namespaces'][$talkId]['context'] = 'talk';
+
+ // Adds view view link
+ if ( $this->mTitle->exists() ) {
+ $links['views']['view'] = $this->tabAction(
+ $isTalk ? $talkPage : $subjectPage,
+ 'vector-view-view', ( $action == 'view' ), '', true
+ );
+ }
+
+ wfProfileIn( __METHOD__ . '-edit' );
+
+ // Checks if user can...
+ if (
+ // edit the current page
+ $this->mTitle->quickUserCan( 'edit' ) &&
+ (
+ // if it exists
+ $this->mTitle->exists() ||
+ // or they can create one here
+ $this->mTitle->quickUserCan( 'create' )
+ )
+ ) {
+ // Builds CSS class for talk page links
+ $isTalkClass = $isTalk ? ' istalk' : '';
+
+ // Determines if we're in edit mode
+ $selected = (
+ ( $action == 'edit' || $action == 'submit' ) &&
+ ( $section != 'new' )
+ );
+ $links['views']['edit'] = array(
+ 'class' => ( $selected ? 'selected' : '' ) . $isTalkClass,
+ 'text' => $this->mTitle->exists()
+ ? wfMsg( 'vector-view-edit' )
+ : wfMsg( 'vector-view-create' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( $this->editUrlOptions() )
+ );
+ // Checks if this is a current rev of talk page and we should show a new
+ // section link
+ if ( ( $isTalk && $wgArticle->isCurrent() ) || ( $wgOut->showNewSectionLink() ) ) {
+ // Checks if we should ever show a new section link
+ if ( !$wgOut->forceHideNewSectionLink() ) {
+ // Adds new section link
+ //$links['actions']['addsection']
+ $links['views']['addsection'] = array(
+ 'class' => 'collapsible ' . ( $section == 'new' ? 'selected' : false ),
+ 'text' => wfMsg( 'vector-action-addsection' ),
+ 'href' => $this->mTitle->getLocalUrl(
+ 'action=edit&section=new'
+ )
+ );
+ }
+ }
+ // Checks if the page is known (some kind of viewable content)
+ } elseif ( $this->mTitle->isKnown() ) {
+ // Adds view source view link
+ $links['views']['viewsource'] = array(
+ 'class' => ( $action == 'edit' ) ? 'selected' : false,
+ 'text' => wfMsg( 'vector-view-viewsource' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( $this->editUrlOptions() )
+ );
+ }
+ wfProfileOut( __METHOD__ . '-edit' );
+
+ wfProfileIn( __METHOD__ . '-live' );
+
+ // Checks if the page exists
+ if ( $this->mTitle->exists() ) {
+ // Adds history view link
+ $links['views']['history'] = array(
+ 'class' => 'collapsible ' . ( ($action == 'history') ? 'selected' : false ),
+ 'text' => wfMsg( 'vector-view-history' ),
+ 'href' => $this->mTitle->getLocalUrl( 'action=history' ),
+ 'rel' => 'archives',
+ );
+
+ if( $wgUser->isAllowed( 'delete' ) ) {
+ $links['actions']['delete'] = array(
+ 'class' => ($action == 'delete') ? 'selected' : false,
+ 'text' => wfMsg( 'vector-action-delete' ),
+ 'href' => $this->mTitle->getLocalUrl( 'action=delete' )
+ );
+ }
+ if ( $this->mTitle->quickUserCan( 'move' ) ) {
+ $moveTitle = SpecialPage::getTitleFor(
+ 'Movepage', $this->thispage
+ );
+ $links['actions']['move'] = array(
+ 'class' => $this->mTitle->isSpecial( 'Movepage' ) ?
+ 'selected' : false,
+ 'text' => wfMsg( 'vector-action-move' ),
+ 'href' => $moveTitle->getLocalUrl()
+ );
+ }
+
+ if (
+ $this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
+ $wgUser->isAllowed( 'protect' )
+ ) {
+ if ( !$this->mTitle->isProtected() ){
+ $links['actions']['protect'] = array(
+ 'class' => ($action == 'protect') ?
+ 'selected' : false,
+ 'text' => wfMsg( 'vector-action-protect' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( 'action=protect' )
+ );
+
+ } else {
+ $links['actions']['unprotect'] = array(
+ 'class' => ($action == 'unprotect') ?
+ 'selected' : false,
+ 'text' => wfMsg( 'vector-action-unprotect' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( 'action=unprotect' )
+ );
+ }
+ }
+ } else {
+ // article doesn't exist or is deleted
+ if (
+ $wgUser->isAllowed( 'deletedhistory' ) &&
+ $wgUser->isAllowed( 'undelete' )
+ ) {
+ if( $n = $this->mTitle->isDeleted() ) {
+ $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
+ $links['actions']['undelete'] = array(
+ 'class' => false,
+ 'text' => wfMsgExt(
+ 'vector-action-undelete',
+ array( 'parsemag' ),
+ $wgLang->formatNum( $n )
+ ),
+ 'href' => $undelTitle->getLocalUrl(
+ 'target=' . urlencode( $this->thispage )
+ )
+ );
+ }
+ }
+
+ if (
+ $this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
+ $wgUser->isAllowed( 'protect' )
+ ) {
+ if ( !$this->mTitle->getRestrictions( 'create' ) ) {
+ $links['actions']['protect'] = array(
+ 'class' => ($action == 'protect') ?
+ 'selected' : false,
+ 'text' => wfMsg( 'vector-action-protect' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( 'action=protect' )
+ );
+
+ } else {
+ $links['actions']['unprotect'] = array(
+ 'class' => ($action == 'unprotect') ?
+ 'selected' : false,
+ 'text' => wfMsg( 'vector-action-unprotect' ),
+ 'href' =>
+ $this->mTitle->getLocalUrl( 'action=unprotect' )
+ );
+ }
+ }
+ }
+ wfProfileOut( __METHOD__ . '-live' );
+ /**
+ * The following actions use messages which, if made particular to
+ * the Vector skin, would break the Ajax code which makes this
+ * action happen entirely inline. Skin::makeGlobalVariablesScript
+ * defines a set of messages in a javascript object - and these
+ * messages are assumed to be global for all skins. Without making
+ * a change to that procedure these messages will have to remain as
+ * the global versions.
+ */
+ // Checks if the user is logged in
+ if ( $this->loggedin ) {
+ if ( $wgVectorUseIconWatch ) {
+ $class = 'icon ';
+ $place = 'views';
+ } else {
+ $class = '';
+ $place = 'actions';
+ }
+ $mode = $this->mTitle->userIsWatching() ? 'unwatch' : 'watch';
+ $links[$place][$mode] = array(
+ 'class' => $class . ( ( $action == 'watch' || $action == 'unwatch' ) ? ' selected' : false ),
+ 'text' => wfMsg( $mode ), // uses 'watch' or 'unwatch' message
+ 'href' => $this->mTitle->getLocalUrl( 'action=' . $mode )
+ );
+ }
+ // This is instead of SkinTemplateTabs - which uses a flat array
+ wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$links ) );
+
+ // If it's not content, it's got to be a special page
+ } else {
+ $links['namespaces']['special'] = array(
+ 'class' => 'selected',
+ 'text' => wfMsg( 'vector-namespace-special' ),
+ 'href' => $wgRequest->getRequestURL()
+ );
+ }
+
+ // Gets list of language variants
+ $variants = $wgContLang->getVariants();
+ // Checks that language conversion is enabled and variants exist
+ if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
+ // Gets preferred variant
+ $preferred = $wgContLang->getPreferredVariant();
+ // Loops over each variant
+ foreach( $variants as $code ) {
+ // Gets variant name from language code
+ $varname = $wgContLang->getVariantname( $code );
+ // Checks if the variant is marked as disabled
+ if( $varname == 'disable' ) {
+ // Skips this variant
+ continue;
+ }
+ // Appends variant link
+ $links['variants'][] = array(
+ 'class' => ( $code == $preferred ) ? 'selected' : false,
+ 'text' => $varname,
+ 'href' => $this->mTitle->getLocalURL( '', $code )
+ );
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+
+ return $links;
+ }
+}
+
+/**
+ * QuickTemplate class for Vector skin
+ * @ingroup Skins
+ */
+class VectorTemplate extends QuickTemplate {
+
+ /* Members */
+
+ /**
+ * @var Cached skin object
+ */
+ var $skin;
+
+ /* Functions */
+
+ /**
+ * Outputs the entire contents of the XHTML page
+ */
+ public function execute() {
+ global $wgRequest, $wgOut, $wgContLang;
+
+ $this->skin = $this->data['skin'];
+ $action = $wgRequest->getText( 'action' );
+
+ // Build additional attributes for navigation urls
+ $nav = $this->skin->buildNavigationUrls();
+ foreach ( $nav as $section => $links ) {
+ foreach ( $links as $key => $link ) {
+ $xmlID = $key;
+ if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
+ $xmlID = 'ca-nstab-' . $xmlID;
+ } else if ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
+ $xmlID = 'ca-talk';
+ } else {
+ $xmlID = 'ca-' . $xmlID;
+ }
+ $nav[$section][$key]['attributes'] =
+ ' id="' . Sanitizer::escapeId( $xmlID ) . '"';
+ if ( $nav[$section][$key]['class'] ) {
+ $nav[$section][$key]['attributes'] .=
+ ' class="' . htmlspecialchars( $link['class'] ) . '"';
+ unset( $nav[$section][$key]['class'] );
+ }
+ // We don't want to give the watch tab an accesskey if the page
+ // is being edited, because that conflicts with the accesskey on
+ // the watch checkbox. We also don't want to give the edit tab
+ // an accesskey, because that's fairly superfluous and conflicts
+ // with an accesskey (Ctrl-E) often used for editing in Safari.
+ if (
+ in_array( $action, array( 'edit', 'submit' ) ) &&
+ in_array( $key, array( 'edit', 'watch', 'unwatch' ) )
+ ) {
+ $nav[$section][$key]['key'] =
+ $this->skin->tooltip( $xmlID );
+ } else {
+ $nav[$section][$key]['key'] =
+ $this->skin->tooltipAndAccesskey( $xmlID );
+ }
+ }
+ }
+ $this->data['namespace_urls'] = $nav['namespaces'];
+ $this->data['view_urls'] = $nav['views'];
+ $this->data['action_urls'] = $nav['actions'];
+ $this->data['variant_urls'] = $nav['variants'];
+ // Build additional attributes for personal_urls
+ foreach ( $this->data['personal_urls'] as $key => $item) {
+ $this->data['personal_urls'][$key]['attributes'] =
+ ' id="' . Sanitizer::escapeId( "pt-$key" ) . '"';
+ if ( isset( $item['active'] ) && $item['active'] ) {
+ $this->data['personal_urls'][$key]['attributes'] .=
+ ' class="active"';
+ }
+ $this->data['personal_urls'][$key]['key'] =
+ $this->skin->tooltipAndAccesskey('pt-'.$key);
+ }
+
+ // Generate additional footer links
+ $footerlinks = array(
+ 'info' => array(
+ 'lastmod',
+ 'viewcount',
+ 'numberofwatchingusers',
+ 'credits',
+ 'copyright',
+ 'tagline',
+ ),
+ 'places' => array(
+ 'privacy',
+ 'about',
+ 'disclaimer',
+ ),
+ );
+ // Reduce footer links down to only those which are being used
+ $validFooterLinks = array();
+ foreach( $footerlinks as $category => $links ) {
+ $validFooterLinks[$category] = array();
+ foreach( $links as $link ) {
+ if( isset( $this->data[$link] ) && $this->data[$link] ) {
+ $validFooterLinks[$category][] = $link;
+ }
+ }
+ }
+ // Reverse horizontally rendered navigation elements
+ if ( $wgContLang->isRTL() ) {
+ $this->data['view_urls'] =
+ array_reverse( $this->data['view_urls'] );
+ $this->data['namespace_urls'] =
+ array_reverse( $this->data['namespace_urls'] );
+ $this->data['personal_urls'] =
+ array_reverse( $this->data['personal_urls'] );
+ }
+ // Output HTML Page
+ $this->html( 'headelement' );
+?>
+ <div id="mw-page-base" class="noprint"></div>
+ <div id="mw-head-base" class="noprint"></div>
+ <!-- content -->
+ <div id="content" <?php $this->html('specialpageattributes') ?>>
+ <a id="top"></a>
+ <div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes') ?>></div>
+ <?php if ( $this->data['sitenotice'] ): ?>
+ <!-- sitenotice -->
+ <div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
+ <!-- /sitenotice -->
+ <?php endif; ?>
+ <!-- firstHeading -->
+ <h1 id="firstHeading" class="firstHeading"><?php $this->html( 'title' ) ?></h1>
+ <!-- /firstHeading -->
+ <!-- bodyContent -->
+ <div id="bodyContent">
+ <!-- tagline -->
+ <h3 id="siteSub"><?php $this->msg( 'tagline' ) ?></h3>
+ <!-- /tagline -->
+ <!-- subtitle -->
+ <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html( 'subtitle' ) ?></div>
+ <!-- /subtitle -->
+ <?php if ( $this->data['undelete'] ): ?>
+ <!-- undelete -->
+ <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
+ <!-- /undelete -->
+ <?php endif; ?>
+ <?php if($this->data['newtalk'] ): ?>
+ <!-- newtalk -->
+ <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
+ <!-- /newtalk -->
+ <?php endif; ?>
+ <?php if ( $this->data['showjumplinks'] ): ?>
+ <!-- jumpto -->
+ <div id="jump-to-nav">
+ <?php $this->msg( 'jumpto' ) ?> <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a>,
+ <a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
+ </div>
+ <!-- /jumpto -->
+ <?php endif; ?>
+ <!-- bodytext -->
+ <?php $this->html( 'bodytext' ) ?>
+ <!-- /bodytext -->
+ <?php if ( $this->data['catlinks'] ): ?>
+ <!-- catlinks -->
+ <?php $this->html( 'catlinks' ); ?>
+ <!-- /catlinks -->
+ <?php endif; ?>
+ <?php if ( $this->data['dataAfterContent'] ): ?>
+ <!-- dataAfterContent -->
+ <?php $this->html( 'dataAfterContent' ); ?>
+ <!-- /dataAfterContent -->
+ <?php endif; ?>
+ <div class="visualClear"></div>
+ </div>
+ <!-- /bodyContent -->
+ </div>
+ <!-- /content -->
+ <!-- header -->
+ <div id="mw-head" class="noprint">
+ <?php $this->renderNavigation( 'PERSONAL' ); ?>
+ <div id="left-navigation">
+ <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
+ </div>
+ <div id="right-navigation">
+ <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
+ </div>
+ </div>
+ <!-- /header -->
+ <!-- panel -->
+ <div id="mw-panel" class="noprint">
+ <!-- logo -->
+ <div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo $this->skin->tooltipAndAccesskey( 'p-logo' ) ?>></a></div>
+ <!-- /logo -->
+ <?php $this->renderPortals( $this->data['sidebar'] ); ?>
+ </div>
+ <!-- /panel -->
+ <!-- footer -->
+ <div id="footer"<?php $this->html('userlangattributes') ?>>
+ <?php foreach( $validFooterLinks as $category => $links ): ?>
+ <?php if ( count( $links ) > 0 ): ?>
+ <ul id="footer-<?php echo $category ?>">
+ <?php foreach( $links as $link ): ?>
+ <?php if( isset( $this->data[$link] ) && $this->data[$link] ): ?>
+ <li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ <ul id="footer-icons" class="noprint">
+ <?php if ( $this->data['poweredbyico'] ): ?>
+ <li id="footer-icon-poweredby"><?php $this->html( 'poweredbyico' ) ?></li>
+ <?php endif; ?>
+ <?php if ( $this->data['copyrightico'] ): ?>
+ <li id="footer-icon-copyright"><?php $this->html( 'copyrightico' ) ?></li>
+ <?php endif; ?>
+ </ul>
+ <div style="clear:both"></div>
+ </div>
+ <!-- /footer -->
+ <!-- fixalpha -->
+ <script type="<?php $this->text('jsmimetype') ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
+ <!-- /fixalpha -->
+ <?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
+ <?php $this->html( 'reporttime' ) ?>
+ <?php if ( $this->data['debug'] ): ?>
+ <!-- Debug output: <?php $this->text( 'debug' ); ?> -->
+ <?php endif; ?>
+ </body>
+</html>
+<?php
+ }
+
+ /**
+ * Render a series of portals
+ */
+ private function renderPortals( $portals ) {
+ // Force the rendering of the following portals
+ if ( !isset( $portals['SEARCH'] ) ) $portals['SEARCH'] = true;
+ if ( !isset( $portals['TOOLBOX'] ) ) $portals['TOOLBOX'] = true;
+ if ( !isset( $portals['LANGUAGES'] ) ) $portals['LANGUAGES'] = true;
+ // Render portals
+ foreach ( $portals as $name => $content ) {
+ echo "\n<!-- {$name} -->\n";
+ switch( $name ) {
+ case 'SEARCH':
+ break;
+ case 'TOOLBOX':
+?>
+<div class="portal" id="p-tb">
+ <h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'toolbox' ) ?></h5>
+ <div class="body">
+ <ul>
+ <?php if( $this->data['notspecialpage'] ): ?>
+ <li id="t-whatlinkshere"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['whatlinkshere']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-whatlinkshere' ) ?>><?php $this->msg( 'whatlinkshere' ) ?></a></li>
+ <?php if( $this->data['nav_urls']['recentchangeslinked'] ): ?>
+ <li id="t-recentchangeslinked"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['recentchangeslinked']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-recentchangeslinked' ) ?>><?php $this->msg( 'recentchangeslinked-toolbox' ) ?></a></li>
+ <?php endif; ?>
+ <?php endif; ?>
+ <?php if( isset( $this->data['nav_urls']['trackbacklink'] ) ): ?>
+ <li id="t-trackbacklink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['trackbacklink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-trackbacklink' ) ?>><?php $this->msg( 'trackbacklink' ) ?></a></li>
+ <?php endif; ?>
+ <?php if( $this->data['feeds']): ?>
+ <li id="feedlinks">
+ <?php foreach( $this->data['feeds'] as $key => $feed ): ?>
+ <a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php echo htmlspecialchars( $feed['href'] ) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey( 'feed-' . $key ) ?>><?php echo htmlspecialchars( $feed['text'] ) ?></a>
+ <?php endforeach; ?>
+ </li>
+ <?php endif; ?>
+ <?php foreach( array( 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages' ) as $special ): ?>
+ <?php if( $this->data['nav_urls'][$special]): ?>
+ <li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars( $this->data['nav_urls'][$special]['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-' . $special ) ?>><?php $this->msg( $special ) ?></a></li>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ <?php if( !empty( $this->data['nav_urls']['print']['href'] ) ): ?>
+ <li id="t-print"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['print']['href'] ) ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey( 't-print' ) ?>><?php $this->msg( 'printableversion' ) ?></a></li>
+ <?php endif; ?>
+ <?php if ( !empty( $this->data['nav_urls']['permalink']['href'] ) ): ?>
+ <li id="t-permalink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['permalink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-permalink' ) ?>><?php $this->msg( 'permalink' ) ?></a></li>
+ <?php elseif ( $this->data['nav_urls']['permalink']['href'] === '' ): ?>
+ <li id="t-ispermalink"<?php echo $this->skin->tooltip( 't-ispermalink' ) ?>><?php $this->msg( 'permalink' ) ?></li>
+ <?php endif; ?>
+ <?php wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) ); ?>
+ </ul>
+ </div>
+</div>
+<?php
+ break;
+ case 'LANGUAGES':
+ if ( $this->data['language_urls'] ) {
+?>
+<div class="portal" id="p-lang">
+ <h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'otherlanguages' ) ?></h5>
+ <div class="body">
+ <ul>
+ <?php foreach ( $this->data['language_urls'] as $langlink ): ?>
+ <li class="<?php echo htmlspecialchars( $langlink['class'] ) ?>"><a href="<?php echo htmlspecialchars( $langlink['href'] ) ?>"><?php echo $langlink['text'] ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+</div>
+<?php
+ }
+ break;
+ default:
+?>
+<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo $this->skin->tooltip( 'p-' . $name ) ?>>
+ <h5<?php $this->html('userlangattributes') ?>><?php $out = wfMsg( $name ); if ( wfEmptyMsg( $name, $out ) ) echo htmlspecialchars( $name ); else echo htmlspecialchars( $out ); ?></h5>
+ <div class="body">
+ <?php if ( is_array( $content ) ): ?>
+ <ul>
+ <?php foreach( $content as $key => $val ): ?>
+ <li id="<?php echo Sanitizer::escapeId( $val['id'] ) ?>"<?php if ( $val['active'] ): ?> class="active" <?php endif; ?>><a href="<?php echo htmlspecialchars( $val['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( $val['id'] ) ?>><?php echo htmlspecialchars( $val['text'] ) ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php else: ?>
+ <?php echo $content; /* Allow raw HTML block to be defined by extensions */ ?>
+ <?php endif; ?>
+ </div>
+</div>
+<?php
+ break;
+ }
+ echo "\n<!-- /{$name} -->\n";
+ }
+ }
+
+ /**
+ * Render one or more navigations elements by name, automatically reveresed
+ * when UI is in RTL mode
+ */
+ private function renderNavigation( $elements ) {
+ global $wgContLang, $wgVectorUseSimpleSearch, $wgStylePath;
+
+ // If only one element was given, wrap it in an array, allowing more
+ // flexible arguments
+ if ( !is_array( $elements ) ) {
+ $elements = array( $elements );
+ // If there's a series of elements, reverse them when in RTL mode
+ } else if ( $wgContLang->isRTL() ) {
+ $elements = array_reverse( $elements );
+ }
+ // Render elements
+ foreach ( $elements as $name => $element ) {
+ echo "\n<!-- {$name} -->\n";
+ switch ( $element ) {
+ case 'NAMESPACES':
+?>
+<div id="p-namespaces" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+ <h5><?php $this->msg('namespaces') ?></h5>
+ <ul<?php $this->html('userlangattributes') ?>>
+ <?php foreach ($this->data['namespace_urls'] as $key => $link ): ?>
+ <li <?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><span><?php echo htmlspecialchars( $link['text'] ) ?></span></a></li>
+ <?php endforeach; ?>
+ </ul>
+</div>
+<?php
+ break;
+ case 'VARIANTS':
+?>
+<div id="p-variants" class="vectorMenu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+ <h5><span><?php $this->msg('variants') ?></span><a href="#"></a></h5>
+ <div class="menu">
+ <ul<?php $this->html('userlangattributes') ?>>
+ <?php foreach ($this->data['variant_urls'] as $key => $link ): ?>
+ <li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+</div>
+<?php
+ break;
+ case 'VIEWS':
+?>
+<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+ <h5><?php $this->msg('views') ?></h5>
+ <ul<?php $this->html('userlangattributes') ?>>
+ <?php foreach ($this->data['view_urls'] as $key => $link ): ?>
+ <li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo (array_key_exists('img',$link) ? '<img src="'.$link['img'].'" alt="'.$link['text'].'" />' : '<span>'.htmlspecialchars( $link['text'] ).'</span>') ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+</div>
+<?php
+ break;
+ case 'ACTIONS':
+?>
+<div id="p-cactions" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+ <h5><span><?php $this->msg('actions') ?></span><a href="#"></a></h5>
+ <div class="menu">
+ <ul<?php $this->html('userlangattributes') ?>>
+ <?php foreach ($this->data['action_urls'] as $key => $link ): ?>
+ <li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+</div>
+<?php
+ break;
+ case 'PERSONAL':
+?>
+<div id="p-personal" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+ <h5><?php $this->msg('personaltools') ?></h5>
+ <ul<?php $this->html('userlangattributes') ?>>
+ <?php foreach($this->data['personal_urls'] as $key => $item): ?>
+ <li <?php echo $item['attributes'] ?>><a href="<?php echo htmlspecialchars($item['href']) ?>"<?php echo $item['key'] ?><?php if(!empty($item['class'])): ?> class="<?php echo htmlspecialchars($item['class']) ?>"<?php endif; ?>><?php echo htmlspecialchars($item['text']) ?></a></li>
+ <?php endforeach; ?>
+ </ul>
+</div>
+<?php
+ break;
+ case 'SEARCH':
+?>
+<div id="p-search">
+ <h5<?php $this->html('userlangattributes') ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
+ <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
+ <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
+ <?php if ( $wgVectorUseSimpleSearch ): ?>
+ <div id="simpleSearch">
+ <input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
+ <button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>>&nbsp;</button>
+ </div>
+ <?php else: ?>
+ <input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
+ <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg( 'searcharticle' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> />
+ <input type="submit" name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg( 'searchbutton' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
+ <?php endif; ?>
+ </form>
+</div>
+<?php
+
+ break;
+ }
+ echo "\n<!-- /{$name} -->\n";
+ }
+ }
+}
diff --git a/skins/archlinux/IEMacFixes.css b/skins/archlinux/IEMacFixes.css
deleted file mode 100644
index f1b05719..00000000
--- a/skins/archlinux/IEMacFixes.css
+++ /dev/null
@@ -1,44 +0,0 @@
-/* IE/Mac only fix stylesheet, imported from main.css */
-#portal-column-content {
- margin: 0 0 4.8em 0;
- float: none;
-}
-#portal-column-content #content {
- z-index: 0;
-}
-#portal-column-one {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 3;
-}
-#portal-footer {
- margin-left: 12em;
-}
-/*
-#portlet-contentViews {
- top: 0.6em !important;
- left: 14.5em !important;
-}
-*/
-#portlet-contentViews li,
-#portlet-contentViews .selected {
- border: none !important;
-}
-#portlet-contentViews li a {
- border: 1px solid #aaaaaa;
- border-bottom: none;
-}
-#portlet-contentViews li.selected a {
- border: 1px solid #fabd23;
- border-bottom: none;
-}
-/* no background images */
-li#personaltools-userpage,
-li#personaltools-login/* */ {
- background: none;
- padding-left: none;
-}
-#mactest {
- color: green;
-}
diff --git a/skins/archlinux/discussionitem_icon.gif b/skins/archlinux/discussionitem_icon.gif
index baec471a..e3ca6d9e 100644
--- a/skins/archlinux/discussionitem_icon.gif
+++ b/skins/archlinux/discussionitem_icon.gif
Binary files differ
diff --git a/skins/archlinux/file_icon.gif b/skins/archlinux/file_icon.gif
index 847f6485..69dbeaf7 100644
--- a/skins/archlinux/file_icon.gif
+++ b/skins/archlinux/file_icon.gif
Binary files differ
diff --git a/skins/archlinux/link_icon.gif b/skins/archlinux/link_icon.gif
index 815ccb1b..168c1a2f 100644
--- a/skins/archlinux/link_icon.gif
+++ b/skins/archlinux/link_icon.gif
Binary files differ
diff --git a/skins/archlinux/lock_icon.gif b/skins/archlinux/lock_icon.gif
index 8a87e283..f71cd9b8 100644
--- a/skins/archlinux/lock_icon.gif
+++ b/skins/archlinux/lock_icon.gif
Binary files differ
diff --git a/skins/archlinux/magnify-clip.png b/skins/archlinux/magnify-clip.png
index 992aa2e3..ffd7637f 100644
--- a/skins/archlinux/magnify-clip.png
+++ b/skins/archlinux/magnify-clip.png
Binary files differ
diff --git a/skins/archlinux/mail_icon.gif b/skins/archlinux/mail_icon.gif
index 50a87a9a..cf5680d9 100644
--- a/skins/archlinux/mail_icon.gif
+++ b/skins/archlinux/mail_icon.gif
Binary files differ
diff --git a/skins/archlinux/main.css b/skins/archlinux/main.css
index d6a67c1e..727355bb 100644
--- a/skins/archlinux/main.css
+++ b/skins/archlinux/main.css
@@ -54,9 +54,6 @@ body {
margin: 0;
padding: 0;
}
-.visualClear {
- clear: both;
-}
/* general styles */
@@ -281,43 +278,12 @@ span.subpages {
#siteNotice {
text-align: center;
font-size: 95%;
- padding: 0 .9em;
+ padding: 0 0.9em;
}
#siteNotice p {
margin: 0;
padding: 0;
}
-.success {
- color: green;
- font-size: larger;
-}
-.error {
- color: red;
- font-size: larger;
-}
-.errorbox, .successbox {
- font-size: larger;
- border: 2px solid;
- padding: .5em 1em;
- float: left;
- margin-bottom: 2em;
- color: #000;
-}
-.errorbox {
- border-color: red;
- background-color: #fff2f2;
-}
-.successbox {
- border-color: green;
- background-color: #dfd;
-}
-.errorbox h2, .successbox h2 {
- font-size: 1em;
- font-weight: bold;
- display: inline;
- margin: 0 .5em 0 0;
- border: none;
-}
.catlinks {
border: 1px solid #aaa;
@@ -525,35 +491,34 @@ table.rimage {
** this is css3, the validator doesn't like it when validating as css2
*/
#bodyContent a.external,
-#bodyContent a[href ^="gopher://"] {
+#bodyContent a.external[href ^="gopher://"] {
background: url(external.png) center right no-repeat;
padding: 0 13px;
}
.rtl #bodyContent a.external,
-.rtl #bodyContent a[href ^="gopher://"] {
+.rtl #bodyContent a.external[href ^="gopher://"] {
background-image: url(external-rtl.png);
}
-#bodyContent a[href ^="https://"],
+#bodyContent a.external[href ^="https://"],
.link-https {
background: url(lock_icon.gif) center right no-repeat;
padding: 0 16px;
}
-#bodyContent a[href ^="mailto:"],
+#bodyContent a.external[href ^="mailto:"],
.link-mailto {
background: url(mail_icon.gif) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="news://"] {
+#bodyContent a.external[href ^="news://"] {
background: url(news_icon.png) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="ftp://"],
+#bodyContent a.external[href ^="ftp://"],
.link-ftp {
background: url(file_icon.gif) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="irc://"],
-#bodyContent a.extiw[href ^="irc://"],
+#bodyContent a.external[href ^="irc://"],
.link-irc {
background: url(discussionitem_icon.gif) center right no-repeat;
padding: 0 18px;
@@ -604,18 +569,10 @@ table.rimage {
#bodyContent a.extiw,
#bodyContent a.extiw:active {
color: #36b;
- background: none;
- padding: 0;
}
#bodyContent a.external {
color: #36b;
}
-/* this can be used in the content area to switch off
-special external link styling */
-#bodyContent .plainlinks a {
- background: none !important;
- padding: 0 !important;
-}
/*
** Structural Elements
*/
@@ -920,6 +877,14 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
z-index: 3;
}
+/* Override text-transform on languages where capitalization is significant */
+.capitalize-all-nouns .portlet h5,
+.capitalize-all-nouns .portlet h6,
+.capitalize-all-nouns #p-personal ul,
+.capitalize-all-nouns #p-cactions ul li a {
+ text-transform: none;
+}
+
/* TODO: #t-iscite is only used by the Cite extension, come up with some
* system which allows extensions to add to this file on the fly
*/
@@ -956,6 +921,13 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
height: 1%;
}
+.mw-htmlform-submit {
+ font-weight: bold;
+ padding-left: .3em;
+ padding-right: .3em;
+ margin-right: 2em;
+}
+
/* js pref toc */
#preftoc {
margin: 0;
@@ -1005,10 +977,6 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
cursor: default;
text-decoration: none;
}
-#prefcontrol {
- padding-top: 2em;
- clear: both;
-}
#preferences {
margin: 0;
border: 1px solid #aaa;
@@ -1021,11 +989,7 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
padding: 0;
margin: 0;
}
-.prefsection fieldset {
- border: 1px solid #aaa;
- float: left;
- margin-right: 2em;
-}
+
.prefsection legend {
font-weight: bold;
}
@@ -1035,16 +999,11 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
.mainLegend {
display: none;
}
-div.prefsectiontip {
+td.htmlform-tip {
font-size: x-small;
padding: .2em 2em;
color: #666;
}
-.btnSavePrefs {
- font-weight: bold;
- padding-left: .3em;
- padding-right: .3em;
-}
.preferences-login {
clear: both;
@@ -1162,20 +1121,9 @@ div#userloginForm .captcha {
display: none;
}
-.not-patrolled {
- background-color: #ffa;
-}
+
div.patrollink {
clear: both;
- font-size: 75%;
- text-align: right;
-}
-span.newpage, span.minor, span.bot {
- font-weight: bold;
-}
-span.unpatrolled {
- font-weight: bold;
- color: red;
}
.sharedUploadNotice {
@@ -1187,66 +1135,14 @@ span.updatedmarker {
background-color: #0f0;
}
-table.gallery {
- border: 1px solid #ccc;
- margin: 2px;
- padding: 2px;
- background-color: white;
-}
-
-table.gallery tr {
- vertical-align: top;
-}
-
-table.gallery td {
- vertical-align: top;
- background-color: #f9f9f9;
- border: solid 2px white;
-}
-/* Keep this temporarily so that cached pages will display right */
-table.gallery td.galleryheader {
- text-align: center;
- font-weight: bold;
-}
-table.gallery caption {
- font-weight: bold;
-}
-
-div.gallerybox {
- margin: 2px;
-}
-
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #ccc;
- margin: 2px;
-}
-
-div.gallerytext {
- overflow: hidden;
- font-size: 94%;
- padding: 2px 4px;
-}
-
-span.comment {
- font-style: italic;
-}
-
-span.changedby {
- font-size: 95%;
-}
-
.previewnote {
- text-indent: 3em;
color: #c00;
- border-bottom: 1px solid #aaa;
- padding-bottom: 1em;
margin-bottom: 1em;
}
.previewnote p {
- margin: 0;
- padding: 0;
+ text-indent: 3em;
+ margin: 0.8em 0;
}
.editExternally {
@@ -1268,69 +1164,6 @@ span.changedby {
text-indent: -2em;
}
-/* Classes for EXIF data display */
-table.mw_metadata {
- font-size: 0.8em;
- margin-left: 0.5em;
- margin-bottom: 0.5em;
- width: 300px;
-}
-
-table.mw_metadata caption {
- font-weight: bold;
-}
-
-table.mw_metadata th {
- font-weight: normal;
-}
-
-table.mw_metadata td {
- padding: 0.1em;
-}
-
-table.mw_metadata {
- border: none;
- border-collapse: collapse;
-}
-
-table.mw_metadata td, table.mw_metadata th {
- text-align: center;
- border: 1px solid #aaaaaa;
- padding-left: 0.1em;
- padding-right: 0.1em;
-}
-
-table.mw_metadata th {
- background-color: #f9f9f9;
-}
-
-table.mw_metadata td {
- background-color: #fcfcfc;
-}
-
-table.collapsed tr.collapsable {
- display: none;
-}
-
-
-/* filetoc */
-ul#filetoc {
- text-align: center;
- border: 1px solid #aaaaaa;
- background-color: #f9f9f9;
- padding: 5px;
- font-size: 95%;
- margin-bottom: 0.5em;
- margin-left: 0;
- margin-right: 0;
-}
-
-#filetoc li {
- display: inline;
- list-style-type: none;
- padding-right: 2em;
-}
-
input#wpSummary {
width: 80%;
}
@@ -1368,32 +1201,6 @@ p.revision_saved {
font-weight:bold;
}
-#mw_trackbacks {
- border: solid 1px #bbbbff;
- background-color: #eeeeff;
- padding: 0.2em;
-}
-
-
-/* Allmessages table */
-
-#allmessagestable th {
- background-color: #b2b2ff;
-}
-
-#allmessagestable tr.orig {
- background-color: #ffe2e2;
-}
-
-#allmessagestable tr.new {
- background-color: #e2ffe2;
-}
-
-#allmessagestable tr.def {
- background-color: #f0f0ff;
-}
-
-
/* noarticletext */
div.noarticletext {
border: 1px solid #ccc;
@@ -1457,53 +1264,6 @@ table.multipageimage td {
text-align: center;
}
-/** Special:Version */
-
-table#sv-ext, table#sv-hooks, table#sv-software {
- margin: 1em;
- padding:0em;
-}
-
-#sv-ext td, #sv-hooks td, #sv-software td,
-#sv-ext th, #sv-hooks th, #sv-software th {
- border: 1px solid #A0A0A0;
- padding: 0 0.15em 0 0.15em;
-}
-#sv-ext th, #sv-hooks th, #sv-software th {
- background-color: #F0F0F0;
- color: black;
- padding: 0 0.15em 0 0.15em;
-}
-tr.sv-space{
- height: 0.8em;
- border:none;
-}
-tr.sv-space td { display: none; }
-
-/*
- Table pager (e.g. Special:Imagelist)
- - remove underlines from the navigation link
- - collapse borders
- - set the borders to outsets (similar to Special:Allmessages)
- - remove line wrapping for all td and th, set background color
- - restore line wrapping for the last two table cells (description and size)
-*/
-.TablePager { min-width: 80%; }
-.TablePager_nav a { text-decoration: none; }
-.TablePager { border-collapse: collapse; }
-.TablePager, .TablePager td, .TablePager th {
- border: 1px solid #aaaaaa;
- padding: 0 0.15em 0 0.15em;
-}
-.TablePager th { background-color: #eeeeff }
-.TablePager td { background-color: #ffffff }
-.TablePager tr:hover td { background-color: #eeeeff }
-
-.imagelist td, .imagelist th { white-space: nowrap }
-.imagelist .TablePager_col_links { background-color: #eeeeff }
-.imagelist .TablePager_col_img_description { white-space: normal }
-.imagelist th.TablePager_sort { background-color: #ccccff }
-
.templatesUsed { margin-top: 1.5em; }
.mw-summary-preview {
@@ -1537,24 +1297,12 @@ div.mw-lag-warn-high {
font-size: 90%;
}
-/** Special:Search stuff */
-div#mw-search-interwiki-caption {
- text-align: center;
- font-weight: bold;
- font-size: 95%;
-}
-
-.mw-search-interwiki-project {
- font-size: 97%;
- text-align: left;
- padding-left: 0.2em;
- padding-right: 0.15em;
- padding-bottom: 0.2em;
- padding-top: 0.15em;
- background: #cae8ff;
-}
-
/* God-damned hack for the crappy layout */
.os-suggest {
font-size: 127%;
}
+
+/* Sometimes people don't want personal tools to be lowercase! */
+.no-text-transform {
+ text-transform: none;
+}
diff --git a/skins/archlinux/rtl.css b/skins/archlinux/rtl.css
index 9b8e4f44..b9bf43c0 100644
--- a/skins/archlinux/rtl.css
+++ b/skins/archlinux/rtl.css
@@ -211,7 +211,6 @@ input#wpSave, input#wpDiff {
}
#userlogin {
- float: right;
margin: 0 0 1em 3em;
}
/* Convenience links to edit block, delete and protect reasons */
@@ -228,20 +227,25 @@ table.filehistory th {
text-align: right;
}
+/* Special:Allpages styling */
+td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
+ text-align: left;
+}
+
+/* Special:Prefixindex styling */
+td#mw-prefixindex-nav-form {
+ text-align: left;
+}
+
/**
* Lists:
* The following lines don't have a visible effect on non-Gecko browsers
* They fix a problem ith Gecko browsers rendering lists to the right of
* left-floated objects in an RTL layout.
*/
-html > body div#bodyContent ul {
+html > body div#article ul {
display: table;
}
html > body div#bodyContent ul#filetoc {
display: block;
}
-/* Special:Prefixindex styling */
-td#mw-prefixindex-nav-form {
- text-align: left;
-}
-
diff --git a/skins/archlinux/user.gif b/skins/archlinux/user.gif
index c9c9ab96..34b4839d 100644
--- a/skins/archlinux/user.gif
+++ b/skins/archlinux/user.gif
Binary files differ
diff --git a/skins/archlinux/video.png b/skins/archlinux/video.png
index 38103dac..fadc4c9b 100644
--- a/skins/archlinux/video.png
+++ b/skins/archlinux/video.png
Binary files differ
diff --git a/skins/archlinux/wiki.png b/skins/archlinux/wiki.png
index 69fce988..44389389 100644
--- a/skins/archlinux/wiki.png
+++ b/skins/archlinux/wiki.png
Binary files differ
diff --git a/skins/chick/main.css b/skins/chick/main.css
index fde03301..ac61b91b 100644
--- a/skins/chick/main.css
+++ b/skins/chick/main.css
@@ -7,10 +7,11 @@
*/
body {
- font-family: sans-serif;
- color: Black;
- margin: 0;
- padding: 0.3em;
+ font-family: sans-serif;
+ color: black;
+ background: white;
+ margin: 0;
+ padding: 0.3em;
}
a { color: #002bb8; }
@@ -23,32 +24,32 @@ a.new:visited,
#p-personal a.new:visited { color:#a55858; }
img {
- border: none;
- vertical-align: middle;
+ border: none;
+ vertical-align: middle;
}
p {
- margin: 0.4em 0em 0.5em 0em;
- line-height: 1.5em;
+ margin: 0.4em 0em 0.5em 0em;
+ line-height: 1.5em;
}
p img { margin: 0; }
hr {
- height: 1px;
- color: #aaaaaa;
- background-color: #aaaaaa;
- border: 0;
- margin: 0.2em 0 0.2em 0;
+ height: 1px;
+ color: #aaaaaa;
+ background-color: #aaaaaa;
+ border: 0;
+ margin: 0.2em 0 0.2em 0;
}
h1, h2, h3, h4, h5, h6 {
- color: Black;
- background: none;
- font-weight: normal;
- margin: 0;
- padding-top: 0.5em;
- padding-bottom: 0.17em;
- border-bottom: 1px solid #aaaaaa;
+ color: black;
+ background: none;
+ font-weight: normal;
+ margin: 0;
+ padding-top: 0.5em;
+ padding-bottom: 0.17em;
+ border-bottom: 1px solid #aaaaaa;
}
.editsection {
font-weight: normal;
@@ -58,8 +59,8 @@ h1 .editsection { font-size: 53.2%; }
h2 { font-size: 150%; }
h2 .editsection { font-size: 66.7%; }
h3, h4, h5, h6 {
- border-bottom: none;
- font-weight: bold;
+ border-bottom: none;
+ font-weight: bold;
}
h3 { font-size: 132%; }
h3 .editsection { font-size: 75.8%; }
@@ -70,97 +71,97 @@ h6 { font-size: 80%; }
h6 .editsection { font-size: 125%; }
ul {
- line-height: 1.5em;
- margin: 0.3em 0 0 1.5em;
- padding:0;
+ line-height: 1.5em;
+ margin: 0.3em 0 0 1.5em;
+ padding:0;
}
ol {
- line-height: 1.5em;
- margin: 0.3em 0 0 3.2em;
- padding:0;
- list-style-image: none;
+ line-height: 1.5em;
+ margin: 0.3em 0 0 3.2em;
+ padding:0;
+ list-style-image: none;
}
li { margin-bottom: 0.1em; }
dt {
- font-weight: bold;
- margin-bottom: 0.1em;
+ font-weight: bold;
+ margin-bottom: 0.1em;
}
dl{
- margin-top: 0.2em;
- margin-bottom: 0.5em;
+ margin-top: 0.2em;
+ margin-bottom: 0.5em;
}
dd {
- line-height: 1.5em;
- margin-left: 2em;
- margin-bottom: 0.1em;
+ line-height: 1.5em;
+ margin-left: 2em;
+ margin-bottom: 0.1em;
}
fieldset {
- border: 1px solid #2f6fab;
- margin: 1em 0em 1em 0em;
- padding: 0em 1em 1em 1em;
- line-height: 1.5em;
+ border: 1px solid #2f6fab;
+ margin: 1em 0em 1em 0em;
+ padding: 0em 1em 1em 1em;
+ line-height: 1.5em;
}
legend {
- background: White;
- padding: 0.5em;
- font-size: 95%;
+ background: white;
+ padding: 0.5em;
+ font-size: 95%;
}
form {
- border: none;
- margin: 0;
+ border: none;
+ margin: 0;
}
textarea {
- border: 1px solid #2f6fab;
- color: Black;
- background-color: white;
- width: 100%;
- padding: 0.1em;
- overflow: auto;
+ border: 1px solid #2f6fab;
+ color: black;
+ background-color: white;
+ width: 100%;
+ padding: 0.1em;
+ overflow: auto;
}
/* hide this from ie/mac and konq2.2 */
@media All {
- head:first-child+body input {
- visibility: visible;
- border: 1px solid #2f6fab;
- color: Black;
- background-color: white;
- vertical-align: middle;
- padding: 0.2em;
- }
+ head:first-child+body input {
+ visibility: visible;
+ border: 1px solid #2f6fab;
+ color: black;
+ background-color: white;
+ vertical-align: middle;
+ padding: 0.2em;
+ }
}
input.historysubmit {
- padding: 0 0.3em 0.3em 0.3em !important;
- font-size: 94%;
- cursor: pointer;
- height: 1.7em !important;
- margin-left: 1.6em;
+ padding: 0 0.3em 0.3em 0.3em !important;
+ font-size: 94%;
+ cursor: pointer;
+ height: 1.7em !important;
+ margin-left: 1.6em;
}
input[type="radio"],
input[type="checkbox"] { border:none; }
select {
- border: 1px solid #2f6fab;
- color: Black;
- vertical-align: top;
+ border: 1px solid #2f6fab;
+ color: black;
+ vertical-align: top;
}
abbr, acronym, .explain {
- border-bottom: 1px dotted Black;
- color: Black;
- background: none;
- cursor: help;
+ border-bottom: 1px dotted black;
+ color: black;
+ background: none;
+ cursor: help;
}
q {
- font-family: Times, "Times New Roman", serif;
- font-style: italic;
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
}
code { background-color: #f9f9f9; }
pre {
- padding: 1em;
- border: 1px dashed #2f6fab;
- color: Black;
- background-color: #f9f9f9;
- line-height: 1.1em;
+ padding: 1em;
+ border: 1px dashed #2f6fab;
+ color: black;
+ background-color: #f9f9f9;
+ line-height: 1.1em;
}
/*
@@ -174,36 +175,36 @@ span.subpages { display: block; }
#bodyContent h3,
#bodyContent h4,
#bodyContent h5 {
- margin-bottom: 0.3em;
+ margin-bottom: 0.3em;
}
#firstHeading { margin-bottom:0.1em; }
/* user notification thing */
.usermessage {
- background-color: #ffce7b;
- border: 1px solid #ffa500;
- color: Black;
- font-weight: bold;
- margin: 0.1em 0 0 0;
- padding: 2px 5px;
- vertical-align: middle;
+ background-color: #ffce7b;
+ border: 1px solid #ffa500;
+ color: black;
+ font-weight: bold;
+ margin: 0.1em 0 0 0;
+ padding: 2px 5px;
+ vertical-align: middle;
}
#siteNotice {
- text-align: center;
- font-size: 95%;
- padding: 0 0.9em 0 0.9em;
+ text-align: center;
+ font-size: 95%;
+ padding: 0 0.9em 0 0.9em;
}
#siteNotice p { margin: 0; padding: 0; }
.error {
- color: red;
- font-size: larger;
+ color: red;
+ font-size: larger;
}
.catlinks {
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding: 2px 5px;
- margin: 0.1em 0 0 0;
- clear: both;
+ border:1px solid #aaaaaa;
+ background-color:#f9f9f9;
+ padding: 2px 5px;
+ margin: 0.1em 0 0 0;
+ clear: both;
}
.catlinks { margin: 0; padding: 0; }
@@ -211,28 +212,28 @@ span.subpages { display: block; }
/* currently unused, intended to be used by a metadata box
in the bottom-right corner of the content area */
.documentDescription {
- /* The summary text describing the document */
- font-weight: bold;
- display: block;
- margin: 1em 0em;
- line-height: 1.5em;
+ /* The summary text describing the document */
+ font-weight: bold;
+ display: block;
+ margin: 1em 0em;
+ line-height: 1.5em;
}
.documentByLine {
- text-align: right;
- font-size: 90%;
- clear: both;
- font-weight: normal;
- color: #76797c;
+ text-align: right;
+ font-size: 90%;
+ clear: both;
+ font-weight: normal;
+ color: #76797c;
}
/* emulate center */
.center {
- width: 100%;
- text-align: center;
+ width: 100%;
+ text-align: center;
}
*.center * {
- margin-left: auto;
- margin-right: auto;
+ margin-left: auto;
+ margin-right: auto;
}
/* small for tables and similar */
.small, .small * { font-size: 94%; }
@@ -243,88 +244,88 @@ table.small { font-size: 100% }
*/
#toc {
- /*border:1px solid #2f6fab;*/
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding:5px;
- font-size: 95%;
+ /*border:1px solid #2f6fab;*/
+ border:1px solid #aaaaaa;
+ background-color:#f9f9f9;
+ padding:5px;
+ font-size: 95%;
}
#toc ul { margin-left: 2em; }
#toc .toctoggle { font-size: 94%; }
#toc .editsection {
- margin-top: 0.7em;
- font-size: 94%;
+ margin-top: 0.7em;
+ font-size: 94%;
}
/* images */
div.floatright, table.floatright {
- clear: right;
- float: right;
- margin: 0;
- position: relative;
- border: 0.5em solid White;
- border-width: 0.5em 0 0.8em 1.4em;
+ clear: right;
+ float: right;
+ margin: 0;
+ position: relative;
+ border: 0.5em solid white;
+ border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic; }
div.floatleft, table.floatleft {
- float: left;
- clear: left;
- margin: 0.3em 0.5em 0.5em 0;
- position: relative;
- border: 0.5em solid White;
- border-width: 0.5em 1.4em 0.8em 0;
+ float: left;
+ clear: left;
+ margin: 0.3em 0.5em 0.5em 0;
+ position: relative;
+ border: 0.5em solid white;
+ border-width: 0.5em 1.4em 0.8em 0;
}
div.floatleft p { font-style: italic; }
/* thumbnails */
div.thumb {
- margin-bottom: 0.5em;
- border-style: solid; border-color: White;
- width: auto;
-}
-div.thumb div {
- border:1px solid #cccccc;
- padding: 3px !important;
- background-color:#f9f9f9;
- font-size: 94%;
- text-align: center;
- overflow: hidden;
-}
-div.thumb div a img {
- border:1px solid #cccccc;
-}
-div.thumb div div.thumbcaption {
- border: none;
- text-align: left;
- line-height: 1.4em;
- padding: 0.3em 0 0.1em 0;
+ margin-bottom: 0.5em;
+ border-style: solid; border-color: white;
+ width: auto;
+}
+div.thumbinner {
+ border:1px solid #cccccc;
+ padding: 3px !important;
+ background-color:#f9f9f9;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border:1px solid #cccccc;
+}
+html .thumbcaption {
+ border: none;
+ text-align: left;
+ line-height: 1.4em;
+ padding: 0.3em 0 0.1em 0;
}
div.magnify {
- float: right;
- border: none !important;
- background: none !important;
+ float: right;
+ border: none !important;
+ background: none !important;
}
div.magnify a, div.magnify img {
- display: block;
- border: none !important;
- background: none !important;
+ display: block;
+ border: none !important;
+ background: none !important;
}
div.tright {
- clear: right;
- float: right;
- border-width: 0.5em 0 0.8em 1.4em;
+ clear: right;
+ float: right;
+ border-width: 0.5em 0 0.8em 1.4em;
}
div.tleft {
- float: left;
- clear: left;
- margin-right:0.5em;
- border-width: 0.5em 1.4em 0.8em 0;
+ float: left;
+ clear: left;
+ margin-right:0.5em;
+ border-width: 0.5em 1.4em 0.8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
.hiddenStructure {
- display: none;
+ display: none;
}
/*
@@ -337,26 +338,26 @@ img.thumbborder {
*/
/* table standards */
table.rimage {
- float:right;
- position:relative;
- margin-left:1em;
- margin-bottom:1em;
- text-align:center;
+ float:right;
+ position:relative;
+ margin-left:1em;
+ margin-bottom:1em;
+ text-align:center;
}
.toccolours {
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding:5px;
- font-size: 95%;
+ border:1px solid #aaaaaa;
+ background-color:#f9f9f9;
+ padding:5px;
+ font-size: 95%;
}
/*
** edit views etc
*/
.special li {
- line-height: 1.4em;
- margin: 0;
- padding: 0;
+ line-height: 1.4em;
+ margin: 0;
+ padding: 0;
}
a.external { color: #3366bb; }
@@ -376,51 +377,18 @@ div.patrollink {
font-size: 75%;
text-align: right;
}
-span.newpage, span.minor {
- font-weight: bold;
-}
span.updatedmarker {
color:black;
background-color:#00FF00;
}
-table.gallery {
- border: 1px solid #cccccc;
- margin: 2px;
- padding: 2px;
- background-color:#ffffff;
-}
-
-table.gallery tr {
- vertical-align:top;
-}
-
-table.gallery td {
- vertical-align:top;
- background-color:#f9f9f9;
- border: solid 2px white;
-}
-
div.gallerybox {
- margin: 2px;
- width: 150px;
+ width: 150px;
}
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #cccccc;
- margin: 2px;
-}
-
-div.gallerytext {
- overflow: hidden;
- font-size: 94%;
- padding: 2px 4px;
-}
-
#xjump-to-nav {
- display: none;
+ display: none;
}
.templatesUsed { margin-top: 1.5em; }
@@ -440,4 +408,4 @@ div.gallerytext {
}
#f-poweredbyico, #f-copyrightico {
display: inline;
-} \ No newline at end of file
+}
diff --git a/skins/common/IE80Fixes.css b/skins/common/IE80Fixes.css
new file mode 100644
index 00000000..b6360f60
--- /dev/null
+++ b/skins/common/IE80Fixes.css
@@ -0,0 +1,15 @@
+/**
+ * Fixes textarea scrolling bug (bug #19334). The bug only occurs when a
+ * percentage width is given, so instead of width: 100%, use min-width: 100%;
+ * max-width: 100%. We also need to give a fixed width for the actual width
+ * property for the hack to work, although the actual value (500px here) ends
+ * up being ignored; min/max-width take precedence.
+ *
+ * More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/
+ */
+#wpTextbox1 {
+ height: 390px;
+ width: 500px;
+ min-width: 100%;
+ max-width: 100%;
+}
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js
index f85f506c..762d7a78 100644
--- a/skins/common/IEFixes.js
+++ b/skins/common/IEFixes.js
@@ -1,127 +1,128 @@
// IE fixes javascript
-var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
+var isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
var doneIETransform;
var doneIEAlphaFix;
-if (document.attachEvent)
- document.attachEvent('onreadystatechange', hookit);
+if ( document.attachEvent ) {
+ document.attachEvent( 'onreadystatechange', hookit );
+}
function hookit() {
- if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
- doneIETransform = true;
- relativeforfloats();
- fixalpha();
- }
+ if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
+ doneIETransform = true;
+ relativeforfloats();
+ fixalpha();
+ }
}
// png alpha transparency fixes
-function fixalpha() {
- // bg
- if (isMSIE55 && !doneIEAlphaFix)
- {
- var plogo = document.getElementById('p-logo');
- if (!plogo) return;
-
- var logoa = plogo.getElementsByTagName('a')[0];
- if (!logoa) return;
-
- var bg = logoa.currentStyle.backgroundImage;
- var imageUrl = bg.substring(5, bg.length-2);
-
- doneIEAlphaFix = true;
-
- if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
- var logospan = logoa.appendChild(document.createElement('span'));
-
- logoa.style.backgroundImage = 'none';
- logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
- logospan.style.height = '100%';
- logospan.style.position = 'absolute';
- logospan.style.width = logoa.currentStyle.width;
- logospan.style.cursor = 'hand';
- // Center image with hack for IE5.5
- if (document.documentElement.dir == "rtl")
- {
- logospan.style.right = '50%';
- logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
- }
- else
- {
- logospan.style.left = '50%';
- logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
- }
- logospan.style.top = '50%';
- logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
-
- var linkFix = logoa.appendChild(logoa.cloneNode());
- linkFix.style.position = 'absolute';
- linkFix.style.height = '100%';
- linkFix.style.width = '100%';
- }
- }
+function fixalpha( logoId ) {
+ // bg
+ if ( isMSIE55 && !doneIEAlphaFix ) {
+ var plogo = document.getElementById( logoId || 'p-logo' );
+ if ( !plogo ) {
+ return;
+ }
+
+ var logoa = plogo.getElementsByTagName('a')[0];
+ if ( !logoa ) {
+ return;
+ }
+
+ var bg = logoa.currentStyle.backgroundImage;
+ var imageUrl = bg.substring( 5, bg.length - 2 );
+
+ doneIEAlphaFix = true;
+
+ if ( imageUrl.substr( imageUrl.length - 4 ).toLowerCase() == '.png' ) {
+ var logospan = logoa.appendChild( document.createElement( 'span' ) );
+
+ logoa.style.backgroundImage = 'none';
+ logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
+ logospan.style.height = '100%';
+ logospan.style.position = 'absolute';
+ logospan.style.width = logoa.currentStyle.width;
+ logospan.style.cursor = 'hand';
+ // Center image with hack for IE5.5
+ if ( document.documentElement.dir == 'rtl' ) {
+ logospan.style.right = '50%';
+ logospan.style.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
+ } else {
+ logospan.style.left = '50%';
+ logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
+ }
+ logospan.style.top = '50%';
+ logospan.style.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
+
+ var linkFix = logoa.appendChild( logoa.cloneNode() );
+ linkFix.style.position = 'absolute';
+ linkFix.style.height = '100%';
+ linkFix.style.width = '100%';
+ }
+ }
}
// fix ie6 disappering float bug
function relativeforfloats() {
- var bc = document.getElementById('bodyContent');
- if (bc) {
- var tables = bc.getElementsByTagName('table');
- var divs = bc.getElementsByTagName('div');
- }
- setrelative(tables);
- setrelative(divs);
+ var bc = document.getElementById( 'bodyContent' );
+ if ( bc ) {
+ var tables = bc.getElementsByTagName( 'table' );
+ var divs = bc.getElementsByTagName( 'div' );
+ }
+ setrelative( tables );
+ setrelative( divs );
}
-function setrelative (nodes) {
- var i = 0;
- while (i < nodes.length) {
- if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
- (nodes[i].align && nodes[i].align != ('none'))) &&
- (!nodes[i].style.position || nodes[i].style.position != 'relative')))
- {
- nodes[i].style.position = 'relative';
- }
- i++;
- }
+function setrelative( nodes ) {
+ var i = 0;
+ while ( i < nodes.length ) {
+ if( ( ( nodes[i].style.float && nodes[i].style.float != ( 'none' ) ||
+ ( nodes[i].align && nodes[i].align != ( 'none' ) ) ) &&
+ ( !nodes[i].style.position || nodes[i].style.position != 'relative' ) ) )
+ {
+ nodes[i].style.position = 'relative';
+ }
+ i++;
+ }
}
-
// Expand links for printing
-
-String.prototype.hasClass = function(classWanted)
-{
- var classArr = this.split(/\s/);
- for (var i=0; i<classArr.length; i++)
- if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true;
- return false;
+String.prototype.hasClass = function( classWanted ) {
+ var classArr = this.split(/\s/);
+ for ( var i = 0; i < classArr.length; i++ ) {
+ if ( classArr[i].toLowerCase() == classWanted.toLowerCase() ) {
+ return true;
+ }
+ }
+ return false;
}
var expandedURLs;
-onbeforeprint = function() {
- expandedURLs = [];
-
- var contentEl = document.getElementById("content");
-
- if (contentEl)
- {
- var allLinks = contentEl.getElementsByTagName("a");
-
- for (var i=0; i < allLinks.length; i++) {
- if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) {
- var expandedLink = document.createElement("span");
- var expandedText = document.createTextNode(" (" + allLinks[i].href + ")");
- expandedLink.appendChild(expandedText);
- allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling);
- expandedURLs[i] = expandedLink;
- }
- }
- }
+onbeforeprint = function() {
+ expandedURLs = [];
+
+ var contentEl = document.getElementById( 'content' );
+
+ if ( contentEl ) {
+ var allLinks = contentEl.getElementsByTagName( 'a' );
+
+ for ( var i = 0; i < allLinks.length; i++ ) {
+ if ( allLinks[i].className.hasClass( 'external' ) && !allLinks[i].className.hasClass( 'free' ) ) {
+ var expandedLink = document.createElement( 'span' );
+ var expandedText = document.createTextNode( ' (' + allLinks[i].href + ')' );
+ expandedLink.appendChild( expandedText );
+ allLinks[i].parentNode.insertBefore( expandedLink, allLinks[i].nextSibling );
+ expandedURLs[i] = expandedLink;
+ }
+ }
+ }
}
-onafterprint = function()
-{
- for (var i=0; i < expandedURLs.length; i++)
- if (expandedURLs[i])
- expandedURLs[i].removeNode(true);
+onafterprint = function() {
+ for ( var i = 0; i < expandedURLs.length; i++ ) {
+ if ( expandedURLs[i] ) {
+ expandedURLs[i].removeNode( true );
+ }
+ }
}
diff --git a/skins/common/Makefile b/skins/common/Makefile
new file mode 100644
index 00000000..56e60bd4
--- /dev/null
+++ b/skins/common/Makefile
@@ -0,0 +1,2 @@
+jquery.min.js: jquery.js
+ php ../../maintenance/minify.php $< --outfile $@
diff --git a/skins/common/ajaxwatch.js b/skins/common/ajaxwatch.js
index c8d90b80..7f546014 100644
--- a/skins/common/ajaxwatch.js
+++ b/skins/common/ajaxwatch.js
@@ -2,7 +2,7 @@
// * ajax.js:
/*extern sajax_init_object, sajax_do_call */
// * wikibits.js:
- /*extern changeText, akeytt, hookEvent, jsMsg */
+ /*extern changeText, hookEvent, jsMsg */
// These should have been initialized in the generated js
/*extern wgAjaxWatch, wgPageName */
@@ -12,7 +12,9 @@ if(typeof wgAjaxWatch === "undefined" || !wgAjaxWatch) {
watchMsg: "Watch",
unwatchMsg: "Unwatch",
watchingMsg: "Watching...",
- unwatchingMsg: "Unwatching..."
+ unwatchingMsg: "Unwatching...",
+ 'tooltip-ca-watchMsg': "Add this page to your watchlist",
+ 'tooltip-ca-unwatchMsg': "Remove this page from your watchlist"
};
}
@@ -21,17 +23,36 @@ wgAjaxWatch.watching = false; // currently watching page
wgAjaxWatch.inprogress = false; // ajax request in progress
wgAjaxWatch.timeoutID = null; // see wgAjaxWatch.ajaxCall
wgAjaxWatch.watchLinks = []; // "watch"/"unwatch" links
+wgAjaxWatch.iconMode = false; // new icon driven functionality
+wgAjaxWatch.imgBasePath = ""; // base img path derived from icons on load
-wgAjaxWatch.setLinkText = function(newText) {
- for (i = 0; i < wgAjaxWatch.watchLinks.length; i++) {
- changeText(wgAjaxWatch.watchLinks[i], newText);
+wgAjaxWatch.setLinkText = function( newText ) {
+ if( wgAjaxWatch.iconMode ) {
+ for ( i = 0; i < wgAjaxWatch.watchLinks.length; i++ ) {
+ wgAjaxWatch.watchLinks[i].firstChild.alt = newText;
+ if ( newText == wgAjaxWatch.watchingMsg || newText == wgAjaxWatch.unwatchingMsg ) {
+ wgAjaxWatch.watchLinks[i].className += ' loading';
+ } else if ( newText == wgAjaxWatch.watchMsg || newText == wgAjaxWatch.unwatchMsg ) {
+ wgAjaxWatch.watchLinks[i].className =
+ wgAjaxWatch.watchLinks[i].className.replace( /loading/i, '' );
+ // update the title text on the link
+ var keyCommand = wgAjaxWatch.watchLinks[i].title.match( /\[.*?\]$/ ) ?
+ wgAjaxWatch.watchLinks[i].title.match( /\[.*?\]$/ )[0] : "";
+ wgAjaxWatch.watchLinks[i].title = ( newText == wgAjaxWatch.watchMsg ?
+ wgAjaxWatch['tooltip-ca-watchMsg'] : wgAjaxWatch['tooltip-ca-unwatchMsg'] )
+ + " " + keyCommand;
+ }
+ }
+ } else {
+ for ( i = 0; i < wgAjaxWatch.watchLinks.length; i++ ) {
+ changeText( wgAjaxWatch.watchLinks[i], newText );
+ }
}
};
-wgAjaxWatch.setLinkID = function(newId) {
+wgAjaxWatch.setLinkID = function( newId ) {
// We can only set the first one
- wgAjaxWatch.watchLinks[0].setAttribute( 'id', newId );
- akeytt(newId); // update tooltips for Monobook
+ wgAjaxWatch.watchLinks[0].parentNode.setAttribute( 'id', newId );
};
wgAjaxWatch.setHref = function( string ) {
@@ -112,27 +133,33 @@ wgAjaxWatch.processResult = function(request) {
wgAjaxWatch.onLoad = function() {
// This document structure hardcoding sucks. We should make a class and
// toss all this out the window.
+
var el1 = document.getElementById("ca-unwatch");
var el2 = null;
- if (!el1) {
+ if ( !el1 ) {
el1 = document.getElementById("mw-unwatch-link1");
el2 = document.getElementById("mw-unwatch-link2");
}
- if(el1) {
+ if( el1 ) {
wgAjaxWatch.watching = true;
} else {
wgAjaxWatch.watching = false;
el1 = document.getElementById("ca-watch");
- if (!el1) {
+ if ( !el1 ) {
el1 = document.getElementById("mw-watch-link1");
el2 = document.getElementById("mw-watch-link2");
}
- if(!el1) {
+ if( !el1 ) {
wgAjaxWatch.supported = false;
return;
}
}
-
+
+ // Detect if the watch/unwatch feature is in icon mode
+ if ( el1.className.match( /icon/i ) ) {
+ wgAjaxWatch.iconMode = true;
+ }
+
// The id can be either for the parent (Monobook-based) or the element
// itself (non-Monobook)
wgAjaxWatch.watchLinks.push( el1.tagName.toLowerCase() == "a"
diff --git a/skins/common/allmessages.js b/skins/common/allmessages.js
deleted file mode 100644
index 9f07a481..00000000
--- a/skins/common/allmessages.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var allmessages_nodelist = false;
-var allmessages_modified = false;
-var allmessages_timeout = false;
-var allmessages_running = false;
-
-function allmessagesmodified() {
- allmessages_modified = !allmessages_modified;
- allmessagesfilter();
-}
-
-function allmessagesfilter() {
- if ( allmessages_timeout )
- window.clearTimeout( allmessages_timeout );
-
- if ( !allmessages_running )
- allmessages_timeout = window.setTimeout( 'allmessagesfilter_do();', 500 );
-}
-
-function allmessagesfilter_do() {
- if ( !allmessages_nodelist )
- return;
-
- var text = document.getElementById('allmessagesinput').value.toLowerCase();
- var nodef = allmessages_modified;
-
- allmessages_running = true;
-
- for ( var name in allmessages_nodelist ) {
- var nodes = allmessages_nodelist[name];
- var display = ( name.toLowerCase().indexOf( text ) == -1 ? 'none' : '' );
-
- for ( var i = 0; i < nodes.length; i++)
- nodes[i].style.display =
- ( nodes[i].className == "def" && nodef
- ? 'none' : display );
- }
-
- if ( text != document.getElementById('allmessagesinput').value.toLowerCase() ||
- nodef != allmessages_modified )
- allmessagesfilter_do(); // repeat
-
- allmessages_running = false;
-}
-
-function allmessagesfilter_init() {
- if ( allmessages_nodelist )
- return;
-
- var nodelist = new Array();
- var templist = new Array();
-
- var table = document.getElementById('allmessagestable');
- if ( !table ) return;
-
- var rows = document.getElementsByTagName('tr');
- for ( var i = 0; i < rows.length; i++ ) {
- var id = rows[i].getAttribute('id')
- if ( id && id.substring(0,16) != 'sp-allmessages-r' ) continue;
- templist[ id ] = rows[i];
- }
-
- var spans = table.getElementsByTagName('span');
- for ( var i = 0; i < spans.length; i++ ) {
- var id = spans[i].getAttribute('id')
- if ( id && id.substring(0,17) != 'sp-allmessages-i-' ) continue;
- if ( !spans[i].firstChild || spans[i].firstChild.nodeType != 3 ) continue;
-
- var nodes = new Array();
- var row1 = templist[ id.replace('i', 'r1') ];
- var row2 = templist[ id.replace('i', 'r2') ];
-
- if ( row1 ) nodes[nodes.length] = row1;
- if ( row2 ) nodes[nodes.length] = row2;
- nodelist[ spans[i].firstChild.nodeValue ] = nodes;
- }
-
- var k = document.getElementById('allmessagesfilter');
- if (k) { k.style.display = ''; }
-
- allmessages_nodelist = nodelist;
-}
-
-hookEvent( "load", allmessagesfilter_init );
diff --git a/skins/common/block.js b/skins/common/block.js
index 90211efa..ad04f810 100644
--- a/skins/common/block.js
+++ b/skins/common/block.js
@@ -1,19 +1,19 @@
-addOnloadHook(considerChangingExpiryFocus);
+addOnloadHook( considerChangingExpiryFocus );
function considerChangingExpiryFocus() {
- if (!document.getElementById) {
+ if ( !document.getElementById ) {
return;
}
- var drop = document.getElementById('wpBlockExpiry');
- if (!drop) {
+ var drop = document.getElementById( 'wpBlockExpiry' );
+ if ( !drop ) {
return;
}
- var field = document.getElementById('wpBlockOther');
- if (!field) {
+ var field = document.getElementById( 'wpBlockOther' );
+ if ( !field ) {
return;
}
var opt = drop.value;
- if (opt == 'other') {
+ if ( opt == 'other' ) {
field.style.display = '';
} else {
field.style.display = 'none';
@@ -21,39 +21,36 @@ function considerChangingExpiryFocus() {
}
function updateBlockOptions() {
- if (!document.getElementById)
+ if ( !document.getElementById ) {
return;
+ }
- var target = document.getElementById('mw-bi-target');
- if (!target)
+ var target = document.getElementById( 'mw-bi-target' );
+ if ( !target ) {
return;
+ }
var addy = target.value;
var isEmpty = addy.match(/^\s*$/);
var isIp = addy.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|:(:[0-9A-Fa-f]{1,4}){1,7}|[0-9A-Fa-f]{1,4}(:{1,2}[0-9A-Fa-f]{1,4}|::$){1,7})(\/\d+)?$/);
var isIpRange = isIp && addy.match(/\/\d+$/);
- var anonymousRow = document.getElementById('wpAnonOnlyRow');
+ var anonymousRow = document.getElementById( 'wpAnonOnlyRow' );
if( anonymousRow ) {
- anonymousRow.style.display = (!isIp && !isEmpty) ? 'none' : '';
+ anonymousRow.style.display = ( !isIp && !isEmpty ) ? 'none' : '';
}
- var autoblockRow = document.getElementById('wpEnableAutoblockRow');
+ var autoblockRow = document.getElementById( 'wpEnableAutoblockRow' );
if( autoblockRow ) {
autoblockRow.style.display = isIp && !isEmpty ? 'none' : '';
}
-
- var emailblockRow = document.getElementById('wpEnableEmailBan');
- if( emailblockRow ) {
- emailblockRow.style.display = isIp && !isEmpty ? 'none' : '';
- }
- var hideuserRow = document.getElementById('wpEnableHideUser');
+ var hideuserRow = document.getElementById( 'wpEnableHideUser' );
if( hideuserRow ) {
hideuserRow.style.display = isIp && !isEmpty ? 'none' : '';
}
- var watchuserRow = document.getElementById('wpEnableWatchUser');
+ var watchuserRow = document.getElementById( 'wpEnableWatchUser' );
if( watchuserRow ) {
watchuserRow.style.display = isIpRange && !isEmpty ? 'none' : '';
}
diff --git a/skins/common/commonPrint.css b/skins/common/commonPrint.css
index ecf146de..0932fcea 100644
--- a/skins/common/commonPrint.css
+++ b/skins/common/commonPrint.css
@@ -48,17 +48,17 @@ div.thumb {
width: auto;
overflow: hidden;
}
-div.thumb div {
+div.thumbinner {
border:1px solid #cccccc;
padding: 3px !important;
background-color:#f9f9f9;
font-size: 94%;
text-align: center;
}
-div.thumb div a img {
+html .thumbimage {
border:1px solid #cccccc;
}
-div.thumb div div.thumbcaption {
+html .thumbcaption {
border: none;
padding: 0.3em 0 0.1em 0;
}
@@ -108,7 +108,8 @@ div#f-copyrightico,
li#viewcount,
li#about,
li#disclaimer,
-li#privacy {
+li#privacy,
+#mw-hidden-catlinks {
/* Hides all the elements irrelevant for printing */
display: none;
}
@@ -211,33 +212,14 @@ span.texhtml { font-family: serif; }
#siteNotice { display: none; }
-table.gallery {
- border: 1px solid #cccccc;
- margin: 2px;
- padding: 2px;
- background-color:#ffffff;
-}
-
-table.gallery tr {
- vertical-align:top;
-}
-
div.gallerybox {
- border: 1px solid #cccccc;
- margin: 2px;
- background-color:#f9f9f9;
- width: 150px;
+ border: 1px solid #cccccc;
+ background-color:#f9f9f9;
+ width: 150px;
}
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #cccccc;
- margin: 2px;
-}
-
div.gallerytext {
- font-size: 94%;
- padding: 2px 4px;
+ overflow: visible;
}
/*
diff --git a/skins/common/common_rtl.css b/skins/common/common_rtl.css
index 4f075ae3..2e8bb980 100644
--- a/skins/common/common_rtl.css
+++ b/skins/common/common_rtl.css
@@ -1,6 +1,7 @@
/*
* This file contains CSS settings common to RTL wikis use the old
* pre-Monobook skins Wikistandard, Nostalgia and CologneBlue
+ * NOTE: This file is not used in Monobook!
*/
/* js pref toc */
@@ -30,7 +31,8 @@ div.tleft, div.floatleft {
}
/* Convenience links to edit block, delete and protect reasons */
p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
+p.mw-filedelete-editreasons, p.mw-delete-editreasons,
+p.mw-revdel-editreasons {
float: left;
}
table.filehistory th {
@@ -46,6 +48,9 @@ table.filehistory th {
html > body div#article ul {
display: table;
}
+html > body div#bodyContent ul#filetoc {
+ display: block;
+}
/* feed links */
a.feedlink {
diff --git a/skins/common/edit.js b/skins/common/edit.js
index 945059e0..423205f8 100644
--- a/skins/common/edit.js
+++ b/skins/common/edit.js
@@ -1,137 +1,163 @@
+var currentFocused;
+
// this function generates the actual toolbar buttons with localized text
// we use it to avoid creating the toolbar where javascript is not enabled
-function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+function addButton( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
// Don't generate buttons for browsers which don't fully
// support it.
- mwEditButtons[mwEditButtons.length] =
- {"imageId": imageId,
- "imageFile": imageFile,
- "speedTip": speedTip,
- "tagOpen": tagOpen,
- "tagClose": tagClose,
- "sampleText": sampleText};
+ mwEditButtons.push({
+ 'imageId': imageId,
+ 'imageFile': imageFile,
+ 'speedTip': speedTip,
+ 'tagOpen': tagOpen,
+ 'tagClose': tagClose,
+ 'sampleText': sampleText
+ });
}
// this function generates the actual toolbar buttons with localized text
-// we use it to avoid creating the toolbar where javascript is not enabled
-function mwInsertEditButton(parent, item) {
- var image = document.createElement("img");
+// we use it to avoid creating the toolbar where JavaScript is not enabled
+function mwInsertEditButton( parent, item ) {
+ var image = document.createElement( 'img' );
image.width = 23;
image.height = 22;
- image.className = "mw-toolbar-editbutton";
- if (item.imageId) image.id = item.imageId;
+ image.className = 'mw-toolbar-editbutton';
+ if ( item.imageId ) {
+ image.id = item.imageId;
+ }
image.src = item.imageFile;
image.border = 0;
image.alt = item.speedTip;
image.title = item.speedTip;
- image.style.cursor = "pointer";
+ image.style.cursor = 'pointer';
image.onclick = function() {
- insertTags(item.tagOpen, item.tagClose, item.sampleText);
+ insertTags( item.tagOpen, item.tagClose, item.sampleText );
+ // click tracking
+ if ( ( typeof $j != 'undefined' ) && ( typeof $j.trackAction != 'undefined' ) ) {
+ $j.trackAction( 'oldedit.' + item.speedTip.replace(/ /g, "-") );
+ }
return false;
};
- parent.appendChild(image);
+ parent.appendChild( image );
return true;
}
function mwSetupToolbar() {
- var toolbar = document.getElementById('toolbar');
- if (!toolbar) { return false; }
-
- var textbox = document.getElementById('wpTextbox1');
- if (!textbox) { return false; }
+ var toolbar = document.getElementById( 'toolbar' );
+ if ( !toolbar ) {
+ return false;
+ }
// Don't generate buttons for browsers which don't fully
// support it.
- if (!(document.selection && document.selection.createRange)
- && textbox.selectionStart === null) {
+ // but don't assume wpTextbox1 is always here
+ var textboxes = document.getElementsByTagName( 'textarea' );
+ if ( !textboxes.length ) {
+ // No toolbar if we can't find any textarea
return false;
}
-
- for (var i = 0; i < mwEditButtons.length; i++) {
- mwInsertEditButton(toolbar, mwEditButtons[i]);
+ // Only check for selection capability if the textarea is visible - errors will occur otherwise - just because
+ // the textarea is not visible, doesn't mean we shouldn't build out the toolbar though - it might have been replaced
+ // with some other kind of control
+ if ( textboxes[0].style.display != 'none' ) {
+ if ( !( document.selection && document.selection.createRange )
+ && textboxes[0].selectionStart === null ) {
+ return false;
+ }
+ }
+ for ( var i = 0; i < mwEditButtons.length; i++ ) {
+ mwInsertEditButton( toolbar, mwEditButtons[i] );
}
- for (var i = 0; i < mwCustomEditButtons.length; i++) {
- mwInsertEditButton(toolbar, mwCustomEditButtons[i]);
+ for ( var i = 0; i < mwCustomEditButtons.length; i++ ) {
+ mwInsertEditButton( toolbar, mwCustomEditButtons[i] );
}
return true;
}
// apply tagOpen/tagClose to selection in textarea,
// use sampleText instead of selection if there is none
-function insertTags(tagOpen, tagClose, sampleText) {
+function insertTags( tagOpen, tagClose, sampleText ) {
+ if ( typeof $j != 'undefined' && typeof $j.fn.textSelection != 'undefined' &&
+ ( currentFocused.nodeName.toLowerCase() == 'iframe' || currentFocused.id == 'wpTextbox1' ) ) {
+ $j( '#wpTextbox1' ).textSelection(
+ 'encapsulateSelection', { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
+ );
+ return;
+ }
var txtarea;
- if (document.editform) {
- txtarea = document.editform.wpTextbox1;
+ if ( document.editform ) {
+ txtarea = currentFocused;
} else {
// some alternate form? take the first one we can find
- var areas = document.getElementsByTagName('textarea');
+ var areas = document.getElementsByTagName( 'textarea' );
txtarea = areas[0];
}
var selText, isSample = false;
- if (document.selection && document.selection.createRange) { // IE/Opera
-
- //save window scroll position
- if (document.documentElement && document.documentElement.scrollTop)
+ if ( document.selection && document.selection.createRange ) { // IE/Opera
+ // save window scroll position
+ if ( document.documentElement && document.documentElement.scrollTop ) {
var winScroll = document.documentElement.scrollTop
- else if (document.body)
+ } else if ( document.body ) {
var winScroll = document.body.scrollTop;
- //get current selection
+ }
+ // get current selection
txtarea.focus();
var range = document.selection.createRange();
selText = range.text;
- //insert tags
+ // insert tags
checkSelectedText();
range.text = tagOpen + selText + tagClose;
- //mark sample text as selected
- if (isSample && range.moveStart) {
- if (window.opera)
+ // mark sample text as selected
+ if ( isSample && range.moveStart ) {
+ if ( window.opera ) {
tagClose = tagClose.replace(/\n/g,'');
- range.moveStart('character', - tagClose.length - selText.length);
- range.moveEnd('character', - tagClose.length);
+ }
+ range.moveStart('character', - tagClose.length - selText.length);
+ range.moveEnd('character', - tagClose.length);
}
- range.select();
- //restore window scroll position
- if (document.documentElement && document.documentElement.scrollTop)
- document.documentElement.scrollTop = winScroll
- else if (document.body)
+ range.select();
+ // restore window scroll position
+ if ( document.documentElement && document.documentElement.scrollTop ) {
+ document.documentElement.scrollTop = winScroll;
+ } else if ( document.body ) {
document.body.scrollTop = winScroll;
+ }
- } else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla
-
- //save textarea scroll position
+ } else if ( txtarea.selectionStart || txtarea.selectionStart == '0' ) { // Mozilla
+ // save textarea scroll position
var textScroll = txtarea.scrollTop;
- //get current selection
+ // get current selection
txtarea.focus();
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
- selText = txtarea.value.substring(startPos, endPos);
- //insert tags
+ selText = txtarea.value.substring( startPos, endPos );
+ // insert tags
checkSelectedText();
txtarea.value = txtarea.value.substring(0, startPos)
+ tagOpen + selText + tagClose
+ txtarea.value.substring(endPos, txtarea.value.length);
- //set new selection
- if (isSample) {
+ // set new selection
+ if ( isSample ) {
txtarea.selectionStart = startPos + tagOpen.length;
txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
} else {
txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
txtarea.selectionEnd = txtarea.selectionStart;
}
- //restore textarea scroll position
+ // restore textarea scroll position
txtarea.scrollTop = textScroll;
- }
+ }
- function checkSelectedText(){
- if (!selText) {
+ function checkSelectedText() {
+ if ( !selText ) {
selText = sampleText;
isSample = true;
- } else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
+ } else if ( selText.charAt(selText.length - 1) == ' ' ) { // exclude ending space char
selText = selText.substring(0, selText.length - 1);
- tagClose += ' '
- }
+ tagClose += ' ';
+ }
}
}
@@ -144,13 +170,62 @@ function scrollEditBox() {
var editBox = document.getElementById( 'wpTextbox1' );
var scrollTop = document.getElementById( 'wpScrolltop' );
var editForm = document.getElementById( 'editform' );
- if( editBox && scrollTop ) {
- if( scrollTop.value )
+ if( editForm && editBox && scrollTop ) {
+ if( scrollTop.value ) {
editBox.scrollTop = scrollTop.value;
+ }
addHandler( editForm, 'submit', function() {
- document.getElementById( 'wpScrolltop' ).value = document.getElementById( 'wpTextbox1' ).scrollTop;
+ scrollTop.value = editBox.scrollTop;
} );
}
}
hookEvent( 'load', scrollEditBox );
hookEvent( 'load', mwSetupToolbar );
+hookEvent( 'load', function() {
+ currentFocused = document.getElementById( 'wpTextbox1' );
+ // http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
+ // focus does not bubble normally, but using a trick we can do event delegation
+ // on the focus event on all text inputs to make the toolbox usable on all of them
+ var editForm = document.getElementById( 'editform' );
+ if ( !editForm ) {
+ return;
+ }
+ function onfocus( e ) {
+ var elm = e.target || e.srcElement;
+ if ( !elm ) {
+ return;
+ }
+ var tagName = elm.tagName.toLowerCase();
+ var type = elm.type || '';
+ if ( tagName !== 'textarea' && tagName !== 'input' ) {
+ return;
+ }
+ if ( tagName === 'input' && type.toLowerCase() !== 'text' ) {
+ return;
+ }
+
+ currentFocused = elm;
+ }
+
+ if ( editForm.addEventListener ) {
+ // Gecko, WebKit, Opera, etc... (all standards compliant browsers)
+ editForm.addEventListener( 'focus', onfocus, true ); // This MUST be true to work
+ } else if ( editForm.attachEvent ) {
+ // IE needs a specific trick here since it doesn't support the standard
+ editForm.attachEvent( 'onfocusin', function() { onfocus( event ); } );
+ }
+
+ // HACK: make currentFocused work with the usability iframe
+ // With proper focus detection support (HTML 5!) this'll be much cleaner
+ if ( typeof $j != 'undefined' ) {
+ var iframe = $j( '.wikiEditor-ui-text iframe' );
+ if ( iframe.length > 0 ) {
+ $j( iframe.get( 0 ).contentWindow.document )
+ .add( iframe.get( 0 ).contentWindow.document.body ) // for IE
+ .focus( function() { currentFocused = iframe.get( 0 ); } );
+ }
+ }
+
+ editForm
+} );
+
diff --git a/skins/common/history.js b/skins/common/history.js
index 6a84b997..02651225 100644
--- a/skins/common/history.js
+++ b/skins/common/history.js
@@ -67,20 +67,19 @@ function diffcheck() {
} else {
inputs[1].style.visibility = 'visible';
}
- lis[i].className = lis[i].classNameOriginal;
+ if ( typeof lis[i].classNameOriginal != 'undefined' ) {
+ lis[i].className = lis[i].classNameOriginal;
+ }
}
}
}
return true;
}
-// page history stuff
-// attach event handlers to the input elements on history page
+// Attach event handlers to the input elements on history page
function histrowinit() {
var hf = document.getElementById('pagehistory');
- if (!hf) {
- return;
- }
+ if (!hf) return;
var lis = hf.getElementsByTagName('li');
for (var i = 0; i < lis.length; i++) {
var inputs = historyRadios(lis[i]);
diff --git a/skins/common/htmlform.js b/skins/common/htmlform.js
new file mode 100644
index 00000000..2045ab48
--- /dev/null
+++ b/skins/common/htmlform.js
@@ -0,0 +1,40 @@
+// Find select-or-other fields.
+addOnloadHook( function() {
+ var fields = getElementsByClassName( document, 'select', 'mw-htmlform-select-or-other' );
+
+ for( var i = 0; i < fields.length; i++ ) {
+ var select = fields[i];
+
+ addHandler( select, 'change', htmlforms.selectOrOtherSelectChanged );
+
+ // Use a fake 'e' to update it.
+ htmlforms.selectOrOtherSelectChanged( { 'target': select } );
+ }
+} );
+
+var htmlforms = {
+ 'selectOrOtherSelectChanged' : function( e ) {
+ var select;
+ if ( !e ) {
+ e = window.event;
+ }
+ if ( e.target ) {
+ select = e.target;
+ } else if ( e.srcElement ) {
+ select = e.srcElement;
+ }
+ if ( select.nodeType == 3 ) { // defeat Safari bug
+ select = select.parentNode;
+ }
+
+ var id = select.id;
+ var textbox = document.getElementById( id + '-other' );
+
+ if ( select.value == 'other' ) {
+ textbox.disabled = false;
+ } else {
+ textbox.disabled = true;
+ }
+ }
+}
+
diff --git a/skins/common/images/Arr_.png b/skins/common/images/Arr_.png
index 83fafc74..8d8d5d9c 100644
--- a/skins/common/images/Arr_.png
+++ b/skins/common/images/Arr_.png
Binary files differ
diff --git a/skins/common/images/Arr_r.xcf b/skins/common/images/Arr_r.xcf
deleted file mode 100644
index 83b7b2a8..00000000
--- a/skins/common/images/Arr_r.xcf
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/Arr_u.png b/skins/common/images/Arr_u.png
index b8e3b6c6..75909865 100644
--- a/skins/common/images/Arr_u.png
+++ b/skins/common/images/Arr_u.png
Binary files differ
diff --git a/skins/common/images/Zoom_sans.gif b/skins/common/images/Zoom_sans.gif
index 6ba0adca..56a49de8 100644
--- a/skins/common/images/Zoom_sans.gif
+++ b/skins/common/images/Zoom_sans.gif
Binary files differ
diff --git a/skins/common/images/add.png b/skins/common/images/add.png
new file mode 100644
index 00000000..5b051f64
--- /dev/null
+++ b/skins/common/images/add.png
Binary files differ
diff --git a/skins/common/images/ajax-loader.gif b/skins/common/images/ajax-loader.gif
new file mode 100644
index 00000000..3288d103
--- /dev/null
+++ b/skins/common/images/ajax-loader.gif
Binary files differ
diff --git a/skins/common/images/arrow_first.svg b/skins/common/images/arrow_first.svg
deleted file mode 100644
index c1d8e364..00000000
--- a/skins/common/images/arrow_first.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="512.85712"
- height="600"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- sodipodi:docbase="C:\htdocs\w\skins\common\images"
- sodipodi:docname="big_arrow_first.svg"
- inkscape:export-filename="C:\htdocs\w\skins\common\images\big_arrow_left.png"
- inkscape:export-xdpi="5.0520902"
- inkscape:export-ydpi="5.0520902">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.35"
- inkscape:cx="375"
- inkscape:cy="520"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="600.24px"
- height="600.88px"
- inkscape:window-width="853"
- inkscape:window-height="573"
- inkscape:window-x="66"
- inkscape:window-y="87" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-239.3783,-208.0743)">
- <path
- sodipodi:type="star"
- style="fill:#00a;fill-opacity:1;fill-rule:evenodd;stroke:#00a;stroke-width:10.35552788;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1874"
- sodipodi:sides="3"
- sodipodi:cx="94.285713"
- sodipodi:cy="343.79074"
- sodipodi:r1="75.484825"
- sodipodi:r2="37.742413"
- sodipodi:arg1="1.056345"
- sodipodi:arg2="2.1035426"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="M 131.42857,409.50502 L 18.804046,343.10026 L 132.62452,278.76694 L 131.42857,409.50502 z "
- transform="matrix(3.596688,0,0,4.278606,254.9147,-964.348)" />
- <rect
- style="fill:#00a;fill-opacity:1;stroke:#00a;stroke-width:39.31948471;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3737"
- width="20.680517"
- height="560.68054"
- x="259.03799"
- y="227.73401" />
- </g>
-</svg>
diff --git a/skins/common/images/arrow_left.svg b/skins/common/images/arrow_left.svg
deleted file mode 100644
index bd4bbc74..00000000
--- a/skins/common/images/arrow_left.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="450"
- height="600"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- sodipodi:docbase="C:\htdocs\w\skins\common\images"
- sodipodi:docname="big_arrow_left.svg"
- inkscape:export-filename="C:\htdocs\w\skins\common\images\big_arrow_left.png"
- inkscape:export-xdpi="5.0520902"
- inkscape:export-ydpi="5.0520902">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.35"
- inkscape:cx="375"
- inkscape:cy="520"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="600.24px"
- height="600.88px"
- inkscape:window-width="853"
- inkscape:window-height="573"
- inkscape:window-x="66"
- inkscape:window-y="87" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-302.2354,-208.0743)">
- <path
- sodipodi:type="star"
- style="fill:#00a;fill-opacity:1;fill-rule:evenodd;stroke:#00a;stroke-width:10.35552788;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1874"
- sodipodi:sides="3"
- sodipodi:cx="94.285713"
- sodipodi:cy="343.79074"
- sodipodi:r1="75.484825"
- sodipodi:r2="37.742413"
- sodipodi:arg1="1.056345"
- sodipodi:arg2="2.1035426"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="M 131.42857,409.50502 L 18.804046,343.10026 L 132.62452,278.76694 L 131.42857,409.50502 z "
- transform="matrix(3.596688,0,0,4.278606,254.9147,-964.348)" />
- </g>
-</svg>
diff --git a/skins/common/images/be-tarask/button_bold.png b/skins/common/images/be-tarask/button_bold.png
index f662c76c..d02aeeeb 100644
--- a/skins/common/images/be-tarask/button_bold.png
+++ b/skins/common/images/be-tarask/button_bold.png
Binary files differ
diff --git a/skins/common/images/be-tarask/button_italic.png b/skins/common/images/be-tarask/button_italic.png
index 88e1b3bb..d93e9f87 100644
--- a/skins/common/images/be-tarask/button_italic.png
+++ b/skins/common/images/be-tarask/button_italic.png
Binary files differ
diff --git a/skins/common/images/be-tarask/button_link.png b/skins/common/images/be-tarask/button_link.png
index f68d5d56..07bc6a19 100644
--- a/skins/common/images/be-tarask/button_link.png
+++ b/skins/common/images/be-tarask/button_link.png
Binary files differ
diff --git a/skins/common/images/button_bold.png b/skins/common/images/button_bold.png
index 5e52deed..2827dba0 100644
--- a/skins/common/images/button_bold.png
+++ b/skins/common/images/button_bold.png
Binary files differ
diff --git a/skins/common/images/button_extlink.png b/skins/common/images/button_extlink.png
index 12ec5f2e..e551e47e 100644
--- a/skins/common/images/button_extlink.png
+++ b/skins/common/images/button_extlink.png
Binary files differ
diff --git a/skins/common/images/button_headline.png b/skins/common/images/button_headline.png
index aa0ca540..9867c365 100644
--- a/skins/common/images/button_headline.png
+++ b/skins/common/images/button_headline.png
Binary files differ
diff --git a/skins/common/images/button_hr.png b/skins/common/images/button_hr.png
index 19cfc480..7f21402a 100644
--- a/skins/common/images/button_hr.png
+++ b/skins/common/images/button_hr.png
Binary files differ
diff --git a/skins/common/images/button_image.png b/skins/common/images/button_image.png
index 6c3c3308..abd47dde 100644
--- a/skins/common/images/button_image.png
+++ b/skins/common/images/button_image.png
Binary files differ
diff --git a/skins/common/images/button_italic.png b/skins/common/images/button_italic.png
index 96b1fb9f..f248fa93 100644
--- a/skins/common/images/button_italic.png
+++ b/skins/common/images/button_italic.png
Binary files differ
diff --git a/skins/common/images/button_link.png b/skins/common/images/button_link.png
index e9507b97..cc72b523 100644
--- a/skins/common/images/button_link.png
+++ b/skins/common/images/button_link.png
Binary files differ
diff --git a/skins/common/images/button_math.png b/skins/common/images/button_math.png
index e91fb613..507e4b51 100644
--- a/skins/common/images/button_math.png
+++ b/skins/common/images/button_math.png
Binary files differ
diff --git a/skins/common/images/button_media.png b/skins/common/images/button_media.png
index 02070790..56b1b239 100644
--- a/skins/common/images/button_media.png
+++ b/skins/common/images/button_media.png
Binary files differ
diff --git a/skins/common/images/button_nowiki.png b/skins/common/images/button_nowiki.png
index 7b2d5392..321a2cb4 100644
--- a/skins/common/images/button_nowiki.png
+++ b/skins/common/images/button_nowiki.png
Binary files differ
diff --git a/skins/common/images/button_sig.png b/skins/common/images/button_sig.png
index ef3a46d2..39de3b67 100644
--- a/skins/common/images/button_sig.png
+++ b/skins/common/images/button_sig.png
Binary files differ
diff --git a/skins/common/images/button_template.png b/skins/common/images/button_template.png
index 8e9cc267..ebbca3cf 100644
--- a/skins/common/images/button_template.png
+++ b/skins/common/images/button_template.png
Binary files differ
diff --git a/skins/common/images/cyrl/button_italic.png b/skins/common/images/cyrl/button_italic.png
index f5e588ec..f79170fd 100644
--- a/skins/common/images/cyrl/button_italic.png
+++ b/skins/common/images/cyrl/button_italic.png
Binary files differ
diff --git a/skins/common/images/cyrl/button_link.png b/skins/common/images/cyrl/button_link.png
index a690cb35..aa28e85a 100644
--- a/skins/common/images/cyrl/button_link.png
+++ b/skins/common/images/cyrl/button_link.png
Binary files differ
diff --git a/skins/common/images/de/button_bold.png b/skins/common/images/de/button_bold.png
index 8386828d..32a22800 100644
--- a/skins/common/images/de/button_bold.png
+++ b/skins/common/images/de/button_bold.png
Binary files differ
diff --git a/skins/common/images/de/button_italic.png b/skins/common/images/de/button_italic.png
index ec719998..875eb2a1 100644
--- a/skins/common/images/de/button_italic.png
+++ b/skins/common/images/de/button_italic.png
Binary files differ
diff --git a/skins/common/images/fa/button_bold.png b/skins/common/images/fa/button_bold.png
index 2f269a8d..49680152 100644
--- a/skins/common/images/fa/button_bold.png
+++ b/skins/common/images/fa/button_bold.png
Binary files differ
diff --git a/skins/common/images/fa/button_headline.png b/skins/common/images/fa/button_headline.png
index ef9d109f..9d62767e 100644
--- a/skins/common/images/fa/button_headline.png
+++ b/skins/common/images/fa/button_headline.png
Binary files differ
diff --git a/skins/common/images/fa/button_italic.png b/skins/common/images/fa/button_italic.png
index 84985848..fc9faf3d 100644
--- a/skins/common/images/fa/button_italic.png
+++ b/skins/common/images/fa/button_italic.png
Binary files differ
diff --git a/skins/common/images/fa/button_link.png b/skins/common/images/fa/button_link.png
index 4ad5ef56..de56a5c3 100644
--- a/skins/common/images/fa/button_link.png
+++ b/skins/common/images/fa/button_link.png
Binary files differ
diff --git a/skins/common/images/fileicon.xcf b/skins/common/images/fileicon.xcf
deleted file mode 100644
index 85a0a610..00000000
--- a/skins/common/images/fileicon.xcf
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/gnu-fdl.png b/skins/common/images/gnu-fdl.png
index 1371aba8..10915329 100644
--- a/skins/common/images/gnu-fdl.png
+++ b/skins/common/images/gnu-fdl.png
Binary files differ
diff --git a/skins/common/images/gnu-fdl.xcf b/skins/common/images/gnu-fdl.xcf
deleted file mode 100644
index 364440dd..00000000
--- a/skins/common/images/gnu-fdl.xcf
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/icons/fileicon-c.png b/skins/common/images/icons/fileicon-c.png
index 6da6916e..f7984fa0 100644
--- a/skins/common/images/icons/fileicon-c.png
+++ b/skins/common/images/icons/fileicon-c.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-cpp.png b/skins/common/images/icons/fileicon-cpp.png
index ba54e77f..0a9b4cbc 100644
--- a/skins/common/images/icons/fileicon-cpp.png
+++ b/skins/common/images/icons/fileicon-cpp.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-deb.png b/skins/common/images/icons/fileicon-deb.png
index ac1e2cf9..605bea17 100644
--- a/skins/common/images/icons/fileicon-deb.png
+++ b/skins/common/images/icons/fileicon-deb.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-djvu.png b/skins/common/images/icons/fileicon-djvu.png
index 2e1e2c9b..3eaca1f8 100644
--- a/skins/common/images/icons/fileicon-djvu.png
+++ b/skins/common/images/icons/fileicon-djvu.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-dvi.png b/skins/common/images/icons/fileicon-dvi.png
index 6c7aa1a1..790ec41b 100644
--- a/skins/common/images/icons/fileicon-dvi.png
+++ b/skins/common/images/icons/fileicon-dvi.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-exe.png b/skins/common/images/icons/fileicon-exe.png
index 6ccf1821..f310ad0d 100644
--- a/skins/common/images/icons/fileicon-exe.png
+++ b/skins/common/images/icons/fileicon-exe.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-h.png b/skins/common/images/icons/fileicon-h.png
index d091afff..cf158528 100644
--- a/skins/common/images/icons/fileicon-h.png
+++ b/skins/common/images/icons/fileicon-h.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-html.png b/skins/common/images/icons/fileicon-html.png
index 7c479525..1c3a1588 100644
--- a/skins/common/images/icons/fileicon-html.png
+++ b/skins/common/images/icons/fileicon-html.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-iso.png b/skins/common/images/icons/fileicon-iso.png
index b4192e9e..74b06615 100644
--- a/skins/common/images/icons/fileicon-iso.png
+++ b/skins/common/images/icons/fileicon-iso.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-java.png b/skins/common/images/icons/fileicon-java.png
index 757c6aec..730ab232 100644
--- a/skins/common/images/icons/fileicon-java.png
+++ b/skins/common/images/icons/fileicon-java.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-mid.png b/skins/common/images/icons/fileicon-mid.png
index aa826070..5254418e 100644
--- a/skins/common/images/icons/fileicon-mid.png
+++ b/skins/common/images/icons/fileicon-mid.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-mov.png b/skins/common/images/icons/fileicon-mov.png
index 2c0da0d8..37e479aa 100644
--- a/skins/common/images/icons/fileicon-mov.png
+++ b/skins/common/images/icons/fileicon-mov.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-o.png b/skins/common/images/icons/fileicon-o.png
index bf051cb8..24ac2cc5 100644
--- a/skins/common/images/icons/fileicon-o.png
+++ b/skins/common/images/icons/fileicon-o.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-ogg.png b/skins/common/images/icons/fileicon-ogg.png
index b8ba7714..c50d1ee8 100644
--- a/skins/common/images/icons/fileicon-ogg.png
+++ b/skins/common/images/icons/fileicon-ogg.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-pdf.png b/skins/common/images/icons/fileicon-pdf.png
index ee39b6c3..c195c761 100644
--- a/skins/common/images/icons/fileicon-pdf.png
+++ b/skins/common/images/icons/fileicon-pdf.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-ps.png b/skins/common/images/icons/fileicon-ps.png
index f1f504d7..342a84ee 100644
--- a/skins/common/images/icons/fileicon-ps.png
+++ b/skins/common/images/icons/fileicon-ps.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-rm.png b/skins/common/images/icons/fileicon-rm.png
index 5ba04e5a..534dbeb2 100644
--- a/skins/common/images/icons/fileicon-rm.png
+++ b/skins/common/images/icons/fileicon-rm.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-rpm.png b/skins/common/images/icons/fileicon-rpm.png
index 0f1c3b87..aab3ec39 100644
--- a/skins/common/images/icons/fileicon-rpm.png
+++ b/skins/common/images/icons/fileicon-rpm.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-svg.png b/skins/common/images/icons/fileicon-svg.png
index 8dc6d30f..16a666f3 100644
--- a/skins/common/images/icons/fileicon-svg.png
+++ b/skins/common/images/icons/fileicon-svg.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-tar.png b/skins/common/images/icons/fileicon-tar.png
index a4b15d7f..7266b5b5 100644
--- a/skins/common/images/icons/fileicon-tar.png
+++ b/skins/common/images/icons/fileicon-tar.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-tex.png b/skins/common/images/icons/fileicon-tex.png
index ee8c0226..55187918 100644
--- a/skins/common/images/icons/fileicon-tex.png
+++ b/skins/common/images/icons/fileicon-tex.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-ttf.png b/skins/common/images/icons/fileicon-ttf.png
index 1b53066e..13bd7ced 100644
--- a/skins/common/images/icons/fileicon-ttf.png
+++ b/skins/common/images/icons/fileicon-ttf.png
Binary files differ
diff --git a/skins/common/images/icons/fileicon-txt.png b/skins/common/images/icons/fileicon-txt.png
index 76e98909..bec58b4e 100644
--- a/skins/common/images/icons/fileicon-txt.png
+++ b/skins/common/images/icons/fileicon-txt.png
Binary files differ
diff --git a/skins/common/images/ksh/button_S_italic.png b/skins/common/images/ksh/button_S_italic.png
index 0761a1e1..00000a3c 100644
--- a/skins/common/images/ksh/button_S_italic.png
+++ b/skins/common/images/ksh/button_S_italic.png
Binary files differ
diff --git a/skins/common/images/link_icon.gif b/skins/common/images/link_icon.gif
index 815ccb1b..168c1a2f 100644
--- a/skins/common/images/link_icon.gif
+++ b/skins/common/images/link_icon.gif
Binary files differ
diff --git a/skins/common/images/magnify-clip.png b/skins/common/images/magnify-clip.png
index 50abcb68..00a9cee1 100644
--- a/skins/common/images/magnify-clip.png
+++ b/skins/common/images/magnify-clip.png
Binary files differ
diff --git a/skins/common/images/mediawiki-small.xcf b/skins/common/images/mediawiki-small.xcf
deleted file mode 100644
index 75355171..00000000
--- a/skins/common/images/mediawiki-small.xcf
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/mediawiki.png b/skins/common/images/mediawiki.png
index 69fce988..0f35886a 100644
--- a/skins/common/images/mediawiki.png
+++ b/skins/common/images/mediawiki.png
Binary files differ
diff --git a/skins/common/images/poweredby_mediawiki_88x31.png b/skins/common/images/poweredby_mediawiki_88x31.png
index ce1765d1..3714414f 100644
--- a/skins/common/images/poweredby_mediawiki_88x31.png
+++ b/skins/common/images/poweredby_mediawiki_88x31.png
Binary files differ
diff --git a/skins/common/images/public-domain.png b/skins/common/images/public-domain.png
index e5fb33ce..f51f5602 100644
--- a/skins/common/images/public-domain.png
+++ b/skins/common/images/public-domain.png
Binary files differ
diff --git a/skins/common/images/redirectltr.png b/skins/common/images/redirectltr.png
index 9110ca13..bcf5742c 100644
--- a/skins/common/images/redirectltr.png
+++ b/skins/common/images/redirectltr.png
Binary files differ
diff --git a/skins/common/images/redirectrtl.png b/skins/common/images/redirectrtl.png
index 60fd59d3..8d99841a 100644
--- a/skins/common/images/redirectrtl.png
+++ b/skins/common/images/redirectrtl.png
Binary files differ
diff --git a/skins/common/images/remove.png b/skins/common/images/remove.png
new file mode 100644
index 00000000..0cbf7d73
--- /dev/null
+++ b/skins/common/images/remove.png
Binary files differ
diff --git a/skins/common/images/sort_down.gif b/skins/common/images/sort_down.gif
index 5ff08160..d97e8285 100644
--- a/skins/common/images/sort_down.gif
+++ b/skins/common/images/sort_down.gif
Binary files differ
diff --git a/skins/common/images/sort_none.gif b/skins/common/images/sort_none.gif
index 6bb02824..edd07e58 100644
--- a/skins/common/images/sort_none.gif
+++ b/skins/common/images/sort_none.gif
Binary files differ
diff --git a/skins/common/images/sort_up.gif b/skins/common/images/sort_up.gif
index 53002968..488cf279 100644
--- a/skins/common/images/sort_up.gif
+++ b/skins/common/images/sort_up.gif
Binary files differ
diff --git a/skins/common/images/spinner.gif b/skins/common/images/spinner.gif
index bdd59d52..37d3a43d 100644
--- a/skins/common/images/spinner.gif
+++ b/skins/common/images/spinner.gif
Binary files differ
diff --git a/skins/common/images/wiki.png b/skins/common/images/wiki.png
index 49913f6a..4f1dc263 100644
--- a/skins/common/images/wiki.png
+++ b/skins/common/images/wiki.png
Binary files differ
diff --git a/skins/common/jquery.js b/skins/common/jquery.js
new file mode 100644
index 00000000..c25ee31c
--- /dev/null
+++ b/skins/common/jquery.js
@@ -0,0 +1,4384 @@
+/*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){
+
+var
+ // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] )
+ selector = jQuery.clean( [ match[1] ], context );
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById( match[3] );
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem && elem.id != match[3] )
+ return jQuery().find( selector );
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery( elem || [] );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery( context ).find( selector );
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) )
+ return jQuery( document ).ready( selector );
+
+ // Make sure that old selector state is passed along
+ if ( selector.selector && selector.context ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.isArray( selector ) ?
+ selector :
+ jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.2",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ Array.prototype.slice.call( this ) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery( elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function( elems ) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply( this, elems );
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem
+ , this );
+ },
+
+ attr: function( name, value, type ) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if ( typeof name === "string" )
+ if ( value === undefined )
+ return this[0] && jQuery[ type || "attr" ]( this[0], name );
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i){
+ // Set all the styles
+ for ( name in options )
+ jQuery.attr(
+ type ?
+ this.style :
+ this,
+ name, jQuery.prop( this, options[ name ], type, i, name )
+ );
+ });
+ },
+
+ css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
+ return this.attr( key, value, "curCSS" );
+ },
+
+ text: function( text ) {
+ if ( typeof text !== "object" && text != null )
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+
+ var ret = "";
+
+ jQuery.each( text || this, function(){
+ jQuery.each( this.childNodes, function(){
+ if ( this.nodeType != 8 )
+ ret += this.nodeType != 1 ?
+ this.nodeValue :
+ jQuery.fn.text( [ this ] );
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function( html ) {
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).clone();
+
+ if ( this[0].parentNode )
+ wrap.insertBefore( this[0] );
+
+ wrap.map(function(){
+ var elem = this;
+
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ return this.each(function(){
+ jQuery( this ).contents().wrapAll( html );
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function(){
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.appendChild( elem );
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.insertBefore( elem, this.firstChild );
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this );
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery( [] );
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: [].push,
+ sort: [].sort,
+ splice: [].splice,
+
+ find: function( selector ) {
+ if ( this.length === 1 ) {
+ var ret = this.pushStack( [], "find", selector );
+ ret.length = 0;
+ jQuery.find( selector, this[0], ret );
+ return ret;
+ } else {
+ return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
+ return jQuery.find( selector, elem );
+ })), "find", selector );
+ }
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function(){
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML;
+ if ( !html ) {
+ var div = this.ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ var orig = this.find("*").andSelf(), i = 0;
+
+ ret.find("*").andSelf().each(function(){
+ if ( this.nodeName !== orig[i].nodeName )
+ return;
+
+ var events = jQuery.data( orig[i], "events" );
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+
+ i++;
+ });
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function( selector ) {
+ return this.pushStack(
+ jQuery.isFunction( selector ) &&
+ jQuery.grep(this, function(elem, i){
+ return selector.call( elem, i );
+ }) ||
+
+ jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
+ return elem.nodeType === 1;
+ }) ), "filter", selector );
+ },
+
+ closest: function( selector ) {
+ var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
+ closer = 0;
+
+ return this.map(function(){
+ var cur = this;
+ while ( cur && cur.ownerDocument ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
+ jQuery.data(cur, "closest", closer);
+ return cur;
+ }
+ cur = cur.parentNode;
+ closer++;
+ }
+ });
+ },
+
+ not: function( selector ) {
+ if ( typeof selector === "string" )
+ // test special case where just one selector is passed in
+ if ( isSimple.test( selector ) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
+ });
+ },
+
+ add: function( selector ) {
+ return this.pushStack( jQuery.unique( jQuery.merge(
+ this.get(),
+ typeof selector === "string" ?
+ jQuery( selector ) :
+ jQuery.makeArray( selector )
+ )));
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ },
+
+ hasClass: function( selector ) {
+ return !!selector && this.is( "." + selector );
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one )
+ return value;
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if ( typeof value === "number" )
+ value += '';
+
+ return this.each(function(){
+ if ( this.nodeType != 1 )
+ return;
+
+ if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
+ this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+ jQuery.inArray(this.name, value) >= 0);
+
+ else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(value);
+
+ jQuery( "option", this ).each(function(){
+ this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+ jQuery.inArray( this.text, values ) >= 0);
+ });
+
+ if ( !values.length )
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function( value ) {
+ return value === undefined ?
+ (this[0] ?
+ this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
+ null) :
+ this.empty().append( value );
+ },
+
+ replaceWith: function( value ) {
+ return this.after( value ).remove();
+ },
+
+ eq: function( i ) {
+ return this.slice( i, +i + 1 );
+ },
+
+ slice: function() {
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function(elem, i){
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
+
+ domManip: function( args, table, callback ) {
+ if ( this[0] ) {
+ var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
+ scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
+ first = fragment.firstChild;
+
+ if ( first )
+ for ( var i = 0, l = this.length; i < l; i++ )
+ callback.call( root(this[i], first), this.length > 1 || i > 0 ?
+ fragment.cloneNode(true) : fragment );
+
+ if ( scripts )
+ jQuery.each( scripts, evalScript );
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+function evalScript( i, elem ) {
+ if ( elem.src )
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+
+ if ( elem.parentNode )
+ elem.parentNode.removeChild( elem );
+}
+
+function now(){
+ return +new Date;
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) )
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if ( length == i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ )
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null )
+ // Extend the base object
+ for ( var name in options ) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy )
+ continue;
+
+ // Recurse if we're merging object values
+ if ( deep && copy && typeof copy === "object" && !copy.nodeType )
+ target[ name ] = jQuery.extend( deep,
+ // Never move original objects, clone them
+ src || ( copy.length != null ? [ ] : { } )
+ , copy );
+
+ // Don't bring in undefined values
+ else if ( copy !== undefined )
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep )
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function( elem ) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && /\S/.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if ( jQuery.support.scriptEval )
+ script.appendChild( document.createTextNode( data ) );
+ else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0, length = object.length;
+
+ if ( args ) {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.apply( object[ name ], args ) === false )
+ break;
+ } else
+ for ( ; i < length; )
+ if ( callback.apply( object[ i++ ], args ) === false )
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.call( object[ name ], name, object[ name ] ) === false )
+ break;
+ } else
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+ }
+
+ return object;
+ },
+
+ prop: function( elem, value, type, i, name ) {
+ // Handle executable functions
+ if ( jQuery.isFunction( value ) )
+ value = value.call( elem, i );
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
+ value + "px" :
+ value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function( elem, classNames ) {
+ jQuery.each((classNames || "").split(/\s+/), function(i, className){
+ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
+ elem.className += (elem.className ? " " : "") + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function( elem, classNames ) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined ?
+ jQuery.grep(elem.className.split(/\s+/), function(className){
+ return !jQuery.className.has( classNames, className );
+ }).join(" ") :
+ "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function( elem, className ) {
+ return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options )
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name == "width" || name == "height" ) {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" )
+ return;
+
+ jQuery.each( which, function() {
+ if ( !extra )
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ if ( extra === "margin" )
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ else
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 )
+ getWH();
+ else
+ jQuery.swap( elem, props, getWH );
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if ( name == "opacity" && !jQuery.support.opacity ) {
+ ret = jQuery.attr( style, "opacity" );
+
+ return ret == "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( name.match( /float/i ) )
+ name = styleFloat;
+
+ if ( !force && style && style[ name ] )
+ ret = style[ name ];
+
+ else if ( defaultView.getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( name.match( /float/i ) )
+ name = "float";
+
+ name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+ try{
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+ }catch(e){
+ // Error in getting computedStyle
+ }
+ if ( computedStyle )
+ ret = computedStyle.getPropertyValue( name );
+
+ // We should always get a number back from opacity
+ if ( name == "opacity" && ret == "" )
+ ret = "1";
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function( elems, context, fragment ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" )
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if ( match )
+ return [ context.createElement( match[1] ) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem){
+ if ( typeof elem === "number" )
+ elem += '';
+
+ if ( !elem )
+ return;
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
+ all :
+ front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+
+ var wrap =
+ // option or optgroup
+ !tags.indexOf("<opt") &&
+ [ 1, "<select multiple='multiple'>", "</select>" ] ||
+
+ !tags.indexOf("<leg") &&
+ [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+ [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr") &&
+ [ 2, "<table><tbody>", "</tbody></table>" ] ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+ [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+
+ !tags.indexOf("<col") &&
+ [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize &&
+ [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( wrap[0]-- )
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = /<tbody/i.test(elem),
+ tbody = !tags.indexOf("<table") && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j )
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
+ div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType )
+ ret.push( elem );
+ else
+ ret = jQuery.merge( ret, elem );
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 )
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ fragment.appendChild( ret[i] );
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function( elem, name, value ) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var notxml = !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ // IE elem.getAttribute passes even for style
+ if ( elem.tagName ) {
+
+ // These attributes require special treatment
+ var special = /href|src|style/.test( name );
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name == "selected" && elem.parentNode )
+ elem.parentNode.selectedIndex;
+
+ // If applicable, access the attribute via the DOM 0 way
+ if ( name in elem && notxml && !special ) {
+ if ( set ){
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
+ throw "type property can't be changed";
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
+ return elem.getAttributeNode( name ).nodeValue;
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name == "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
+ ? 0
+ : elem.nodeName.match(/^(a|area)$/i) && elem.href
+ ? 0
+ : undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name == "style" )
+ return jQuery.attr( elem.style, "cssText", value );
+
+ if ( set )
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special
+ // Some attributes require a special call on IE
+ ? elem.getAttribute( name, 2 )
+ : elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name == "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
+ (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+ }
+
+ return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
+ "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ if ( set && value != 'NaNpx' && value != 'nullpx' ) // Patched by Trevor, see http://is.gd/5NXiD
+ elem[ name ] = value;
+
+ return elem[ name ];
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( /^\s+|\s+$/g, "" );
+ },
+
+ makeArray: function( array ) {
+ var ret = [];
+
+ if( array != null ){
+ var i = array.length;
+ // The window, strings (and functions) also have 'length'
+ if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
+ ret[0] = array;
+ else
+ while( i )
+ ret[--i] = array[i];
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ for ( var i = 0, length = array.length; i < length; i++ )
+ // Use === because on IE, window == document
+ if ( array[ i ] === elem )
+ return i;
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+ var i = 0, elem, pos = first.length;
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if ( !jQuery.support.getAll ) {
+ while ( (elem = second[ i++ ]) != null )
+ if ( elem.nodeType != 8 )
+ first[ pos++ ] = elem;
+
+ } else
+ while ( (elem = second[ i++ ]) != null )
+ first[ pos++ ] = elem;
+
+ return first;
+ },
+
+ unique: function( array ) {
+ var ret = [], done = {};
+
+ try {
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ var id = jQuery.data( array[ i ] );
+
+ if ( !done[ id ] ) {
+ done[ id ] = true;
+ ret.push( array[ i ] );
+ }
+ }
+
+ } catch( e ) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ )
+ if ( !inv != !callback( elems[ i ], i ) )
+ ret.push( elems[ i ] );
+
+ return ret;
+ },
+
+ map: function( elems, callback ) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ var value = callback( elems[ i ], i );
+
+ if ( value != null )
+ ret[ ret.length ] = value;
+ }
+
+ return ret.concat.apply( [], ret );
+ }
+});
+
+// Use of jQuery.browser is deprecated.
+// It's included for backwards compatibility and plugins,
+// although they should work to migrate away.
+
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+ version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
+ safari: /webkit/.test( userAgent ),
+ opera: /opera/.test( userAgent ),
+ msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
+ mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+};
+
+jQuery.each({
+ parent: function(elem){return elem.parentNode;},
+ parents: function(elem){return jQuery.dir(elem,"parentNode");},
+ next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+ prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+ nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+ prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+ siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+ children: function(elem){return jQuery.sibling(elem.firstChild);},
+ contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
+}, function(name, fn){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = jQuery.map( this, fn );
+
+ if ( selector && typeof selector == "string" )
+ ret = jQuery.multiFilter( selector, ret );
+
+ return this.pushStack( jQuery.unique( ret ), name, selector );
+ };
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function(name, original){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector );
+
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, selector );
+ };
+});
+
+jQuery.each({
+ removeAttr: function( name ) {
+ jQuery.attr( this, name, "" );
+ if (this.nodeType == 1)
+ this.removeAttribute( name );
+ },
+
+ addClass: function( classNames ) {
+ jQuery.className.add( this, classNames );
+ },
+
+ removeClass: function( classNames ) {
+ jQuery.className.remove( this, classNames );
+ },
+
+ toggleClass: function( classNames, state ) {
+ if( typeof state !== "boolean" )
+ state = !jQuery.className.has( this, classNames );
+ jQuery.className[ state ? "add" : "remove" ]( this, classNames );
+ },
+
+ remove: function( selector ) {
+ if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
+ // Prevent memory leaks
+ jQuery( "*", this ).add([this]).each(function(){
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild( this );
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(this).children().remove();
+
+ // Remove any remaining nodes
+ while ( this.firstChild )
+ this.removeChild( this.firstChild );
+ }
+}, function(name, fn){
+ jQuery.fn[ name ] = function(){
+ return this.each( fn, arguments );
+ };
+});
+
+// Helper function used by the dimensions and offset modules
+function num(elem, prop) {
+ return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
+}
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ data: function( elem, name, data ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if ( !id )
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if ( name && !jQuery.cache[ id ] )
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined )
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ?
+ jQuery.cache[ id ][ name ] :
+ id;
+ },
+
+ removeData: function( elem, name ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( jQuery.cache[ id ] ) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for ( name in jQuery.cache[ id ] )
+ break;
+
+ if ( !name )
+ jQuery.removeData( elem );
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e){
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if ( elem.removeAttribute )
+ elem.removeAttribute( expando );
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+ queue: function( elem, type, data ) {
+ if ( elem ){
+
+ type = (type || "fx") + "queue";
+
+ var q = jQuery.data( elem, type );
+
+ if ( !q || jQuery.isArray(data) )
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+ else if( data )
+ q.push( data );
+
+ }
+ return q;
+ },
+
+ dequeue: function( elem, type ){
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ if( !type || type === "fx" )
+ fn = queue[0];
+
+ if( fn !== undefined )
+ fn.call(elem);
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ){
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length )
+ data = jQuery.data( this[0], key );
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+ jQuery.data( this, key, value );
+ });
+ },
+
+ removeData: function( key ){
+ return this.each(function(){
+ jQuery.removeData( this, key );
+ });
+ },
+ queue: function(type, data){
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined )
+ return jQuery.queue( this[0], type );
+
+ return this.each(function(){
+ var queue = jQuery.queue( this, type, data );
+
+ if( type == "fx" && queue.length == 1 )
+ queue[0].call(this);
+ });
+ },
+ dequeue: function(type){
+ return this.each(function(){
+ jQuery.dequeue( this, type );
+ });
+ }
+});/*!
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+ done = 0,
+ toString = Object.prototype.toString;
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 )
+ return [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+
+ // Reset the position of the chunker regexp (start from head)
+ chunker.lastIndex = 0;
+
+ while ( (m = chunker.exec(selector)) !== null ) {
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = RegExp.rightContext;
+ break;
+ }
+ }
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] )
+ selector += parts.shift();
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
+ set = Sizzle.filter( ret.expr, ret.set );
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ throw "Syntax error, unrecognized expression: " + (cur || selector);
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context.nodeType === 1 ) {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, context, results, seed );
+
+ if ( sortOrder ) {
+ hasDuplicate = false;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set, match;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.match[ type ].exec( expr )) ) {
+ var left = RegExp.leftContext;
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+ var filter = Expr.filter[ type ], found, item;
+ anyFound = false;
+
+ if ( curLoop == result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr == old ) {
+ if ( anyFound == null ) {
+ throw "Syntax error, unrecognized expression: " + expr;
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ },
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag && !isXML ) {
+ part = part.toUpperCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string";
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = isXML ? part : part.toUpperCase();
+
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName === part ? parent : false;
+ }
+ }
+ } else {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context, isXML){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
+ if ( !inplace )
+ result.push( elem );
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ for ( var i = 0; curLoop[i] === false; i++ ){}
+ return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+ },
+ CHILD: function(match){
+ if ( match[1] == "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return /h\d/i.test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+ },
+ input: function(elem){
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 == i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 == i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var i = 0, l = not.length; i < l; i++ ) {
+ if ( not[i] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while (node = node.previousSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ if ( type == 'first') return true;
+ node = elem;
+ case 'last':
+ while (node = node.nextSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first == 1 && last == 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first == 0 ) {
+ return diff == 0;
+ } else {
+ return ( diff % first == 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value != check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes );
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var i = 0, l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( var i = 0; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( "sourceIndex" in document.documentElement ) {
+ sortOrder = function( a, b ) {
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.createRange ) {
+ sortOrder = function( a, b ) {
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+ aRange.selectNode(a);
+ aRange.collapse(true);
+ bRange.selectNode(b);
+ bRange.collapse(true);
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("form"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<input name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( !!document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+})();
+
+if ( document.querySelectorAll ) (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ Sizzle.find = oldSizzle.find;
+ Sizzle.filter = oldSizzle.filter;
+ Sizzle.selectors = oldSizzle.selectors;
+ Sizzle.matches = oldSizzle.matches;
+})();
+
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+ var div = document.createElement("div");
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ if ( div.getElementsByClassName("e").length === 0 )
+ return;
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 )
+ return;
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+var contains = document.compareDocumentPosition ? function(a, b){
+ return a.compareDocumentPosition(b) & 16;
+} : function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && isXML( elem.ownerDocument );
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.filter = Sizzle.filter;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+
+Sizzle.selectors.filters.hidden = function(elem){
+ return elem.offsetWidth === 0 || elem.offsetHeight === 0;
+};
+
+Sizzle.selectors.filters.visible = function(elem){
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0;
+};
+
+Sizzle.selectors.filters.animated = function(elem){
+ return jQuery.grep(jQuery.timers, function(fn){
+ return elem === fn.elem;
+ }).length;
+};
+
+jQuery.multiFilter = function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return Sizzle.matches(expr, elems);
+};
+
+jQuery.dir = function( elem, dir ){
+ var matched = [], cur = elem[dir];
+ while ( cur && cur != document ) {
+ if ( cur.nodeType == 1 )
+ matched.push( cur );
+ cur = cur[dir];
+ }
+ return matched;
+};
+
+jQuery.nth = function(cur, result, dir, elem){
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] )
+ if ( cur.nodeType == 1 && ++num == result )
+ break;
+
+ return cur;
+};
+
+jQuery.sibling = function(n, elem){
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType == 1 && n != elem )
+ r.push( n );
+ }
+
+ return r;
+};
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && elem != window )
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid )
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if ( data !== undefined ) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = this.proxy( fn );
+
+ // Store data in unique handler
+ handler.data = data;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply(arguments.callee.elem, arguments) :
+ undefined;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ handler.type = namespaces.slice().sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false);
+ else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if ( events ) {
+ // Unbind all events for the element
+ if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
+ for ( var type in events )
+ this.remove( elem, type + (types || "") );
+ else {
+ // types is actually an event object here
+ if ( types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type){
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ if ( events[type] ) {
+ // remove the given handler for the given type
+ if ( handler )
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for ( var handle in events[type] )
+ // Handle the removal of namespaced events
+ if ( namespace.test(events[type][handle].type) )
+ delete events[type][handle];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+
+ // remove generic event handler if no more handlers exist
+ for ( ret in events[type] ) break;
+ if ( !ret ) {
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
+ else if (elem.detachEvent)
+ elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for ( ret in events ) break;
+ if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) handle.elem = null;
+ jQuery.removeData( elem, "events" );
+ jQuery.removeData( elem, "handle" );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem, bubbling ) {
+ // Event object or event type
+ var type = event.type || event;
+
+ if( !bubbling ){
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[type] )
+ jQuery.each( jQuery.cache, function(){
+ if ( this.events && this.events[type] )
+ jQuery.event.trigger( event, data, this.handle.elem );
+ });
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
+ return undefined;
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data);
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data(elem, "handle");
+ if ( handle )
+ handle.apply( elem, data );
+
+ // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+ if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+ event.result = false;
+
+ // Trigger the native events (except for clicks on links)
+ if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {}
+ }
+
+ this.triggered = false;
+
+ if ( !event.isPropagationStopped() ) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if ( parent )
+ jQuery.event.trigger(event, data, parent, true);
+ }
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[event.type];
+
+ for ( var j in handlers ) {
+ var handler = handlers[j];
+
+ // Filter the functions by class
+ if ( all || namespace.test(handler.type) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply(this, arguments);
+
+ if( ret !== undefined ){
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if( event.isImmediatePropagationStopped() )
+ break;
+
+ }
+ }
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function(event) {
+ if ( event[expando] )
+ return event;
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ){
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target )
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType == 3 )
+ event.target = event.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement )
+ event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey )
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button )
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ proxy: function( fn, proxy ){
+ proxy = proxy || function(){ return fn.apply(this, arguments); };
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: bindReady,
+ teardown: function() {}
+ }
+ },
+
+ specialAll: {
+ live: {
+ setup: function( selector, namespaces ){
+ jQuery.event.add( this, namespaces[0], liveHandler );
+ },
+ teardown: function( namespaces ){
+ if ( namespaces.length ) {
+ var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
+
+ jQuery.each( (jQuery.data(this, "events").live || {}), function(){
+ if ( name.test(this.type) )
+ remove++;
+ });
+
+ if ( remove < 1 )
+ jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+ }
+ }
+ }
+};
+
+jQuery.Event = function( src ){
+ // Allow instantiation without the 'new' keyword
+ if( !this.preventDefault )
+ return new jQuery.Event(src);
+
+ // Event object
+ if( src && src.type ){
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ }else
+ this.type = src;
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[expando] = true;
+};
+
+function returnFalse(){
+ return false;
+}
+function returnTrue(){
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if preventDefault exists run it on the original event
+ if (e.preventDefault)
+ e.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if stopPropagation exists run it on the original event
+ if (e.stopPropagation)
+ e.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation:function(){
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function(event) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while ( parent && parent != this )
+ try { parent = parent.parentNode; }
+ catch(e) { parent = this; }
+
+ if( parent != this ){
+ // set the correct event type
+ event.type = event.data;
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+};
+
+jQuery.each({
+ mouseover: 'mouseenter',
+ mouseout: 'mouseleave'
+}, function( orig, fix ){
+ jQuery.event.special[ fix ] = {
+ setup: function(){
+ jQuery.event.add( this, orig, withinElement, fix );
+ },
+ teardown: function(){
+ jQuery.event.remove( this, orig, withinElement );
+ }
+ };
+});
+
+jQuery.fn.extend({
+ bind: function( type, data, fn ) {
+ return type == "unload" ? this.one(type, data, fn) : this.each(function(){
+ jQuery.event.add( this, type, fn || data, fn && data );
+ });
+ },
+
+ one: function( type, data, fn ) {
+ var one = jQuery.event.proxy( fn || data, function(event) {
+ jQuery(this).unbind(event, one);
+ return (fn || data).apply( this, arguments );
+ });
+ return this.each(function(){
+ jQuery.event.add( this, type, one, fn && data);
+ });
+ },
+
+ unbind: function( type, fn ) {
+ return this.each(function(){
+ jQuery.event.remove( this, type, fn );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function(){
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if( this[0] ){
+ var event = jQuery.Event(type);
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while( i < args.length )
+ jQuery.event.proxy( fn, args[i++] );
+
+ return this.click( jQuery.event.proxy( fn, function(event) {
+ // Figure out which function to execute
+ this.lastToggle = ( this.lastToggle || 0 ) % i;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ this.lastToggle++ ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.mouseenter(fnOver).mouseleave(fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady )
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push( fn );
+
+ return this;
+ },
+
+ live: function( type, fn ){
+ var proxy = jQuery.event.proxy( fn );
+ proxy.guid += this.selector + type;
+
+ jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+
+ return this;
+ },
+
+ die: function( type, fn ){
+ jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
+ return this;
+ }
+});
+
+function liveHandler( event ){
+ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
+ stop = true,
+ elems = [];
+
+ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
+ if ( check.test(fn.type) ) {
+ var elem = jQuery(event.target).closest(fn.data)[0];
+ if ( elem )
+ elems.push({ elem: elem, fn: fn });
+ }
+ });
+
+ elems.sort(function(a,b) {
+ return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
+ });
+
+ jQuery.each(elems, function(){
+ if ( this.fn.call(this.elem, event, this.fn.data) === false )
+ return (stop = false);
+ });
+
+ return stop;
+}
+
+function liveConvert(type, selector){
+ return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
+}
+
+jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( jQuery.readyList ) {
+ // Execute all of them
+ jQuery.each( jQuery.readyList, function(){
+ this.call( document, jQuery );
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+});
+
+var readyBound = false;
+
+function bindReady(){
+ if ( readyBound ) return;
+ readyBound = true;
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", function(){
+ document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
+ jQuery.ready();
+ }, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", function(){
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", arguments.callee );
+ jQuery.ready();
+ }
+ });
+
+ // If IE and not an iframe
+ // continually check to see if the document is ready
+ if ( document.documentElement.doScroll && window == window.top ) (function(){
+ if ( jQuery.isReady ) return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( arguments.callee, 0 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add( window, "load", jQuery.ready );
+}
+
+jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
+ "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
+ "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn){
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+});
+
+// Prevent memory leaks in IE
+// And prevent errors on refresh with events like mouseover in other browsers
+// Window isn't included so as not to unbind existing unload events
+jQuery( window ).bind( 'unload', function(){
+ for ( var id in jQuery.cache )
+ // Skip the window
+ if ( id != 1 && jQuery.cache[ id ].handle )
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+});
+(function(){
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+
+ div.style.display = "none";
+ div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType == 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that you can get all elements in an <object> element
+ // IE 7 always returns no results
+ objectAll: !!div.getElementsByTagName("object")[0]
+ .getElementsByTagName("*").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ opacity: a.style.opacity === "0.5",
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Will be defined later
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e){}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function(){
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", arguments.callee);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function(){
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+ });
+})();
+
+var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ tabindex: "tabIndex"
+};
+jQuery.fn.extend({
+ // Keep a copy of the old load
+ _load: jQuery.fn.load,
+
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" )
+ return this._load( url );
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if( typeof params === "object" ) {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ if( callback )
+ self.each( callback, [res.responseText, status, res] );
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ (this.checked || /select|textarea/i.test(this.nodeName) ||
+ /text|hidden|password|search/i.test(this.type));
+ })
+ .map(function(i, elem){
+ var val = jQuery(this).val();
+ return val == null ? null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function(val, i){
+ return {name: elem.name, value: val};
+ }) :
+ {name: elem.name, value: val};
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+ jQuery.fn[o] = function(f){
+ return this.bind(o, f);
+ };
+});
+
+var jsc = now();
+
+jQuery.extend({
+
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was ommited
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr:function(){
+ return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function( s ) {
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ var jsonp, jsre = /=\?(&|$)/g, status, data,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" )
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType == "jsonp" ) {
+ if ( type == "GET" ) {
+ if ( !s.url.match(jsre) )
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ } else if ( !s.data || !s.data.match(jsre) )
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data )
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp){
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try{ delete window[ jsonp ]; } catch(e){}
+ if ( head )
+ head.removeChild( script );
+ };
+ }
+
+ if ( s.dataType == "script" && s.cache == null )
+ s.cache = false;
+
+ if ( s.cache === false && type == "GET" ) {
+ var ts = now();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type == "GET" ) {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ )
+ jQuery.event.trigger( "ajaxStart" );
+
+ // Matches an absolute URL, and saves the domain
+ var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType == "script" && type == "GET" && parts
+ && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
+
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ success();
+ complete();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ head.removeChild( script );
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if( s.username )
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data )
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if ( s.ifModified )
+ xhr.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*" :
+ s.accepts._default );
+ } catch(e){}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global )
+ jQuery.event.trigger("ajaxSend", [xhr, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout){
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" ? "timeout" :
+ !jQuery.httpSuccess( xhr ) ? "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
+ "success";
+
+ if ( status == "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status == "success" ) {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xhr.getResponseHeader("Last-Modified");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && modRes )
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if ( !jsonp )
+ success();
+ } else
+ jQuery.handleError(s, xhr, status);
+
+ // Fire the complete handlers
+ complete();
+
+ if ( isTimeout )
+ xhr.abort();
+
+ // Stop memory leaks
+ if ( s.async )
+ xhr = null;
+ }
+ };
+
+ if ( s.async ) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if ( s.timeout > 0 )
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone )
+ onreadystatechange( "timeout" );
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async )
+ onreadystatechange();
+
+ function success(){
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+ }
+
+ function complete(){
+ // Process result
+ if ( s.complete )
+ s.complete(xhr, status);
+
+ // The request was completed
+ if ( s.global )
+ jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) s.error( xhr, status, e );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol == "file:" ||
+ ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
+ } catch(e){}
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ try {
+ var xhrRes = xhr.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
+ } catch(e){}
+ return false;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type"),
+ xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.tagName == "parsererror" )
+ throw "parsererror";
+
+ // Allow a pre-filtering function to sanitize the response
+ // s != null is checked to keep backwards compatibility
+ if( s && s.dataFilter )
+ data = s.dataFilter( data, type );
+
+ // The filter can actually parse the response
+ if( typeof data === "string" ){
+
+ // If the type is "script", eval it in global context
+ if ( type == "script" )
+ jQuery.globalEval( data );
+
+ // Get the JavaScript object, if JSON is used.
+ if ( type == "json" )
+ data = window["eval"]("(" + data + ")");
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a ) {
+ var s = [ ];
+
+ function add( key, value ){
+ s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
+ };
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if ( jQuery.isArray(a) || a.jquery )
+ // Serialize the form elements
+ jQuery.each( a, function(){
+ add( this.name, this.value );
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for ( var j in a )
+ // If the value is an array then the key names need to be repeated
+ if ( jQuery.isArray(a[j]) )
+ jQuery.each( a[j], function(){
+ add( j, this );
+ });
+ else
+ add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+});
+var elemdisplay = {},
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+function genFx( type, num ){
+ var obj = {};
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
+ obj[ this ] = type;
+ });
+ return obj;
+}
+
+jQuery.fn.extend({
+ show: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("show", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if ( jQuery.css(this[i], "display") === "none" ) {
+ var tagName = this[i].tagName, display;
+
+ if ( elemdisplay[ tagName ] ) {
+ display = elemdisplay[ tagName ];
+ } else {
+ var elem = jQuery("<" + tagName + " />").appendTo("body");
+
+ display = elem.css("display");
+ if ( display === "none" )
+ display = "block";
+
+ elem.remove();
+
+ elemdisplay[ tagName ] = display;
+ }
+
+ jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("hide", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+ if ( !old && old !== "none" )
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2 ){
+ var bool = typeof fn === "boolean";
+
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
+ this._toggle.apply( this, arguments ) :
+ fn == null || bool ?
+ this.each(function(){
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ }) :
+ this.animate(genFx("toggle", 3), fn, fn2);
+ },
+
+ fadeTo: function(speed,to,callback){
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each" : "queue" ](function(){
+
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+ return opt.complete.call(this);
+
+ if ( ( p == "height" || p == "width" ) && this.style ) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if ( opt.overflow != null )
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function(name, val){
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( /toggle|show|hide/.test(val) )
+ e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+ else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit != "px" ) {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] )
+ end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+
+ e.custom( start, end, unit );
+ } else
+ e.custom( start, val, "" );
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd){
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function(){
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- )
+ if ( timers[i].elem == this ) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ){
+ jQuery.fn[ name ] = function( speed, callback ){
+ return this.animate( props, speed, callback );
+ };
+});
+
+jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function(){
+ if ( opt.queue !== false )
+ jQuery(this).dequeue();
+ if ( jQuery.isFunction( opt.old ) )
+ opt.old.call( this );
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig )
+ options.orig = {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function(){
+ if ( this.options.step )
+ this.options.step.call( this.elem, this.now, this );
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+ // Set display property to block for height/width animations
+ if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force){
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit){
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(function(){
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval( timerId );
+ timerId = undefined;
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd){
+ var t = now();
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if ( this.options.display != null ) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if ( jQuery.css(this.elem, "display") == "none" )
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide )
+ jQuery(this.elem).hide();
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show )
+ for ( var p in this.options.curAnim )
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+};
+
+jQuery.extend( jQuery.fx, {
+ speeds:{
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+ step: {
+
+ opacity: function(fx){
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+if ( document.documentElement["getBoundingClientRect"] )
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ return { top: top, left: left };
+ };
+else
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ jQuery.offset.initialized || jQuery.offset.initialize();
+
+ var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ computedStyle = defaultView.getComputedStyle(elem, null);
+ top -= elem.scrollTop, left -= elem.scrollLeft;
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop, left += elem.offsetLeft;
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ }
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
+ top += body.offsetTop,
+ left += body.offsetLeft;
+
+ if ( prevComputedStyle.position === "fixed" )
+ top += Math.max(docElem.scrollTop, body.scrollTop),
+ left += Math.max(docElem.scrollLeft, body.scrollLeft);
+
+ return { top: top, left: left };
+ };
+
+jQuery.offset = {
+ initialize: function() {
+ if ( this.initialized ) return;
+ var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
+ html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+
+ rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
+ for ( prop in rules ) container.style[prop] = rules[prop];
+
+ container.innerHTML = html;
+ body.insertBefore(container, body.firstChild);
+ innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ body.style.marginTop = '1px';
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
+ body.style.marginTop = bodyMarginTop;
+
+ body.removeChild(container);
+ this.initialized = true;
+ },
+
+ bodyOffset: function(body) {
+ jQuery.offset.initialized || jQuery.offset.initialize();
+ var top = body.offsetTop, left = body.offsetLeft;
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
+ top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
+ left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+ return { top: top, left: left };
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ var left = 0, top = 0, results;
+
+ if ( this[0] ) {
+ // Get *real* offsetParent
+ var offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= num( this, 'marginTop' );
+ offset.left -= num( this, 'marginLeft' );
+
+ // Add offsetParent borders
+ parentOffset.top += num( offsetParent, 'borderTopWidth' );
+ parentOffset.left += num( offsetParent, 'borderLeftWidth' );
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },
+
+ offsetParent: function() {
+ var offsetParent = this[0].offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
+ offsetParent = offsetParent.offsetParent;
+ return jQuery(offsetParent);
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ['Left', 'Top'], function(i, name) {
+ var method = 'scroll' + name;
+
+ jQuery.fn[ method ] = function(val) {
+ if (!this[0]) return null;
+
+ return val !== undefined ?
+
+ // Set the scroll offset
+ this.each(function() {
+ this == window || this == document ?
+ window.scrollTo(
+ !i ? val : jQuery(window).scrollLeft(),
+ i ? val : jQuery(window).scrollTop()
+ ) :
+ this[ method ] = val;
+ }) :
+
+ // Return the scroll offset
+ this[0] == window || this[0] == document ?
+ self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
+ jQuery.boxModel && document.documentElement[ method ] ||
+ document.body[ method ] :
+ this[0][ method ];
+ };
+});
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function(i, name){
+
+ var tl = i ? "Left" : "Top", // top or left
+ br = i ? "Right" : "Bottom", // bottom or right
+ lower = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function(){
+ return this[0] ?
+ jQuery.css( this[0], lower, false, "padding" ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function(margin) {
+ return this[0] ?
+ jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+ null;
+ };
+
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ return this[0] == window ?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
+ document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document ?
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ document.documentElement["client" + name],
+ document.body["scroll" + name], document.documentElement["scroll" + name],
+ document.body["offset" + name], document.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ (this.length ? jQuery.css( this[0], type ) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+})();
+
+/**
+ * Add a suitable MW-specific alias
+ */
+$j = jQuery.noConflict();
+
diff --git a/skins/common/jquery.min.js b/skins/common/jquery.min.js
new file mode 100644
index 00000000..d872c9f0
--- /dev/null
+++ b/skins/common/jquery.min.js
@@ -0,0 +1,433 @@
+
+(function(){var
+window=this,undefined,_jQuery=window.jQuery,_$=window.$,jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);},quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,isSimple=/^.[^:#\[\.,]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;this.context=selector;return this;}
+if(typeof selector==="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])
+selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem&&elem.id!=match[3])
+return jQuery().find(selector);var ret=jQuery(elem||[]);ret.context=document;ret.selector=selector;return ret;}}else
+return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))
+return jQuery(document).ready(selector);if(selector.selector&&selector.context){this.selector=selector.selector;this.context=selector.context;}
+return this.setArray(jQuery.isArray(selector)?selector:jQuery.makeArray(selector));},selector:"",jquery:"1.3.2",size:function(){return this.length;},get:function(num){return num===undefined?Array.prototype.slice.call(this):this[num];},pushStack:function(elems,name,selector){var ret=jQuery(elems);ret.prevObject=this;ret.context=this.context;if(name==="find")
+ret.selector=this.selector+(this.selector?" ":"")+selector;else if(name)
+ret.selector=this.selector+"."+name+"("+selector+")";return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(typeof name==="string")
+if(value===undefined)
+return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}
+return this.each(function(i){for(name in options)
+jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)
+value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!=="object"&&text!=null)
+return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)
+ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).clone();if(this[0].parentNode)
+wrap.insertBefore(this[0]);wrap.map(function(){var elem=this;while(elem.firstChild)
+elem=elem.firstChild;return elem;}).append(this);}
+return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType==1)
+this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType==1)
+this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},push:[].push,sort:[].sort,splice:[].splice,find:function(selector){if(this.length===1){var ret=this.pushStack([],"find",selector);ret.length=0;jQuery.find(selector,this[0],ret);return ret;}else{return this.pushStack(jQuery.unique(jQuery.map(this,function(elem){return jQuery.find(selector,elem);})),"find",selector);}},clone:function(events){var ret=this.map(function(){if(!jQuery.support.noCloneEvent&&!jQuery.isXMLDoc(this)){var html=this.outerHTML;if(!html){var div=this.ownerDocument.createElement("div");div.appendChild(this.cloneNode(true));html=div.innerHTML;}
+return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0];}else
+return this.cloneNode(true);});if(events===true){var orig=this.find("*").andSelf(),i=0;ret.find("*").andSelf().each(function(){if(this.nodeName!==orig[i].nodeName)
+return;var events=jQuery.data(orig[i],"events");for(var type in events){for(var handler in events[type]){jQuery.event.add(this,type,events[type][handler],events[type][handler].data);}}
+i++;});}
+return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,jQuery.grep(this,function(elem){return elem.nodeType===1;})),"filter",selector);},closest:function(selector){var pos=jQuery.expr.match.POS.test(selector)?jQuery(selector):null,closer=0;return this.map(function(){var cur=this;while(cur&&cur.ownerDocument){if(pos?pos.index(cur)>-1:jQuery(cur).is(selector)){jQuery.data(cur,"closest",closer);return cur;}
+cur=cur.parentNode;closer++;}});},not:function(selector){if(typeof selector==="string")
+if(isSimple.test(selector))
+return this.pushStack(jQuery.multiFilter(selector,this,true),"not",selector);else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector==="string"?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return!!selector&&this.is("."+selector);},val:function(value){if(value===undefined){var elem=this[0];if(elem){if(jQuery.nodeName(elem,'option'))
+return(elem.attributes.value||{}).specified?elem.value:elem.text;if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)
+return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery(option).val();if(one)
+return value;values.push(value);}}
+return values;}
+return(elem.value||"").replace(/\r/g,"");}
+return undefined;}
+if(typeof value==="number")
+value+='';return this.each(function(){if(this.nodeType!=1)
+return;if(jQuery.isArray(value)&&/radio|checkbox/.test(this.type))
+this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)
+this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value===undefined?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,+i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},domManip:function(args,table,callback){if(this[0]){var fragment=(this[0].ownerDocument||this[0]).createDocumentFragment(),scripts=jQuery.clean(args,(this[0].ownerDocument||this[0]),fragment),first=fragment.firstChild;if(first)
+for(var i=0,l=this.length;i<l;i++)
+callback.call(root(this[i],first),this.length>1||i>0?fragment.cloneNode(true):fragment);if(scripts)
+jQuery.each(scripts,evalScript);}
+return this;function root(elem,cur){return table&&jQuery.nodeName(elem,"table")&&jQuery.nodeName(cur,"tr")?(elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody"))):elem;}}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)
+jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)
+elem.parentNode.removeChild(elem);}
+function now(){return+new Date;}
+jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(typeof target==="boolean"){deep=target;target=arguments[1]||{};i=2;}
+if(typeof target!=="object"&&!jQuery.isFunction(target))
+target={};if(length==i){target=this;--i;}
+for(;i<length;i++)
+if((options=arguments[i])!=null)
+for(var name in options){var src=target[name],copy=options[name];if(target===copy)
+continue;if(deep&&copy&&typeof copy==="object"&&!copy.nodeType)
+target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)
+target[name]=copy;}
+return target;};var exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{},toString=Object.prototype.toString;jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)
+window.jQuery=_jQuery;return jQuery;},isFunction:function(obj){return toString.call(obj)==="[object Function]";},isArray:function(obj){return toString.call(obj)==="[object Array]";},isXMLDoc:function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&jQuery.isXMLDoc(elem.ownerDocument);},globalEval:function(data){if(data&&/\S/.test(data)){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.support.scriptEval)
+script.appendChild(document.createTextNode(data));else
+script.text=data;head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length===undefined){for(name in object)
+if(callback.apply(object[name],args)===false)
+break;}else
+for(;i<length;)
+if(callback.apply(object[i++],args)===false)
+break;}else{if(length===undefined){for(name in object)
+if(callback.call(object[name],name,object[name])===false)
+break;}else
+for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}
+return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))
+value=value.call(elem,i);return typeof value==="number"&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))
+elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)
+elem.className=classNames!==undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return elem&&jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}
+callback.call(elem);for(var name in options)
+elem.style[name]=old[name];},css:function(elem,name,force,extra){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;if(extra==="border")
+return;jQuery.each(which,function(){if(!extra)
+val-=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;if(extra==="margin")
+val+=parseFloat(jQuery.curCSS(elem,"margin"+this,true))||0;else
+val-=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});}
+if(elem.offsetWidth!==0)
+getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,Math.round(val));}
+return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;if(name=="opacity"&&!jQuery.support.opacity){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}
+if(name.match(/float/i))
+name=styleFloat;if(!force&&style&&style[name])
+ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))
+name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();try{var computedStyle=defaultView.getComputedStyle(elem,null);}catch(e){}
+if(computedStyle)
+ret=computedStyle.getPropertyValue(name);if(name=="opacity"&&ret=="")
+ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}
+return ret;},clean:function(elems,context,fragment){context=context||document;if(typeof context.createElement==="undefined")
+context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;if(!fragment&&elems.length===1&&typeof elems[0]==="string"){var match=/^<(\w+)\s*\/?>$/.exec(elems[0]);if(match)
+return[context.createElement(match[1])];}
+var ret=[],scripts=[],div=context.createElement("div");jQuery.each(elems,function(i,elem){if(typeof elem==="number")
+elem+='';if(!elem)
+return;if(typeof elem==="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=elem.replace(/^\s+/,"").substring(0,10).toLowerCase();var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!jQuery.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)
+div=div.lastChild;if(!jQuery.support.tbody){var hasBody=/<tbody/i.test(elem),tbody=!tags.indexOf("<table")&&!hasBody?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&!hasBody?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)
+if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)
+tbody[j].parentNode.removeChild(tbody[j]);}
+if(!jQuery.support.leadingWhitespace&&/^\s/.test(elem))
+div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);elem=jQuery.makeArray(div.childNodes);}
+if(elem.nodeType)
+ret.push(elem);else
+ret=jQuery.merge(ret,elem);});if(fragment){for(var i=0;ret[i];i++){if(jQuery.nodeName(ret[i],"script")&&(!ret[i].type||ret[i].type.toLowerCase()==="text/javascript")){scripts.push(ret[i].parentNode?ret[i].parentNode.removeChild(ret[i]):ret[i]);}else{if(ret[i].nodeType===1)
+ret.splice.apply(ret,[i+1,0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))));fragment.appendChild(ret[i]);}}
+return scripts;}
+return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)
+return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&elem.parentNode)
+elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)
+throw"type property can't be changed";elem[name]=value;}
+if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))
+return elem.getAttributeNode(name).nodeValue;if(name=="tabIndex"){var attributeNode=elem.getAttributeNode("tabIndex");return attributeNode&&attributeNode.specified?attributeNode.value:elem.nodeName.match(/(button|input|object|select|textarea)/i)?0:elem.nodeName.match(/^(a|area)$/i)&&elem.href?0:undefined;}
+return elem[name];}
+if(!jQuery.support.style&&notxml&&name=="style")
+return jQuery.attr(elem.style,"cssText",value);if(set)
+elem.setAttribute(name,""+value);var attr=!jQuery.support.hrefNormalized&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}
+if(!jQuery.support.opacity&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+
+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}
+return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}
+name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set&&value!='NaNpx'&&value!='nullpx')
+elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||typeof array==="string"||jQuery.isFunction(array)||array.setInterval)
+ret[0]=array;else
+while(i)
+ret[--i]=array[i];}
+return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)
+if(array[i]===elem)
+return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(!jQuery.support.getAll){while((elem=second[i++])!=null)
+if(elem.nodeType!=8)
+first[pos++]=elem;}else
+while((elem=second[i++])!=null)
+first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}
+return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)
+if(!inv!=!callback(elems[i],i))
+ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)
+ret[ret.length]=value;}
+return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,'0'])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")
+ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret),name,selector);};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var ret=[],insert=jQuery(selector);for(var i=0,l=insert.length;i<l;i++){var elems=(i>0?this.clone(true):this).get();jQuery.fn[original].apply(jQuery(insert[i]),elems);ret=ret.concat(elems);}
+return this.pushStack(ret,name,selector);};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)
+this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames,state){if(typeof state!=="boolean")
+state=!jQuery.className.has(this,classNames);jQuery.className[state?"add":"remove"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).length){jQuery("*",this).add([this]).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)
+this.parentNode.removeChild(this);}},empty:function(){jQuery(this).children().remove();while(this.firstChild)
+this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}
+var expando="jQuery"+now(),uuid=0,windowData={};jQuery.extend({cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)
+id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])
+jQuery.cache[id]={};if(data!==undefined)
+jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])
+break;if(!name)
+jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)
+elem.removeAttribute(expando);}
+delete jQuery.cache[id];}},queue:function(elem,type,data){if(elem){type=(type||"fx")+"queue";var q=jQuery.data(elem,type);if(!q||jQuery.isArray(data))
+q=jQuery.data(elem,type,jQuery.makeArray(data));else if(data)
+q.push(data);}
+return q;},dequeue:function(elem,type){var queue=jQuery.queue(elem,type),fn=queue.shift();if(!type||type==="fx")
+fn=queue[0];if(fn!==undefined)
+fn.call(elem);}});jQuery.fn.extend({data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)
+data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},queue:function(type,data){if(typeof type!=="string"){data=type;type="fx";}
+if(data===undefined)
+return jQuery.queue(this[0],type);return this.each(function(){var queue=jQuery.queue(this,type,data);if(type=="fx"&&queue.length==1)
+queue[0].call(this);});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});}});(function(){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,done=0,toString=Object.prototype.toString;var Sizzle=function(selector,context,results,seed){results=results||[];context=context||document;if(context.nodeType!==1&&context.nodeType!==9)
+return[];if(!selector||typeof selector!=="string"){return results;}
+var parts=[],m,set,checkSet,check,mode,extra,prune=true;chunker.lastIndex=0;while((m=chunker.exec(selector))!==null){parts.push(m[1]);if(m[2]){extra=RegExp.rightContext;break;}}
+if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context);}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);while(parts.length){selector=parts.shift();if(Expr.relative[selector])
+selector+=parts.shift();set=posProcess(selector,set);}}}else{var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&context.parentNode?context.parentNode:context,isXML(context));set=Sizzle.filter(ret.expr,ret.set);if(parts.length>0){checkSet=makeArray(set);}else{prune=false;}
+while(parts.length){var cur=parts.pop(),pop=cur;if(!Expr.relative[cur]){cur="";}else{pop=parts.pop();}
+if(pop==null){pop=context;}
+Expr.relative[cur](checkSet,pop,isXML(context));}}
+if(!checkSet){checkSet=set;}
+if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector);}
+if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet);}else if(context.nodeType===1){for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]);}}}else{for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]);}}}}else{makeArray(checkSet,results);}
+if(extra){Sizzle(extra,context,results,seed);if(sortOrder){hasDuplicate=false;results.sort(sortOrder);if(hasDuplicate){for(var i=1;i<results.length;i++){if(results[i]===results[i-1]){results.splice(i--,1);}}}}}
+return results;};Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set);};Sizzle.find=function(expr,context,isXML){var set,match;if(!expr){return[];}
+for(var i=0,l=Expr.order.length;i<l;i++){var type=Expr.order[i],match;if((match=Expr.match[type].exec(expr))){var left=RegExp.leftContext;if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");set=Expr.find[type](match,context,isXML);if(set!=null){expr=expr.replace(Expr.match[type],"");break;}}}}
+if(!set){set=context.getElementsByTagName("*");}
+return{set:set,expr:expr};};Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;anyFound=false;if(curLoop==result){result=[];}
+if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);if(!match){anyFound=found=true;}else if(match===true){continue;}}
+if(match){for(var i=0;(item=curLoop[i])!=null;i++){if(item){found=filter(item,match,i,curLoop);var pass=not^!!found;if(inplace&&found!=null){if(pass){anyFound=true;}else{curLoop[i]=false;}}else if(pass){result.push(item);anyFound=true;}}}}
+if(found!==undefined){if(!inplace){curLoop=result;}
+expr=expr.replace(Expr.match[type],"");if(!anyFound){return[];}
+break;}}}
+if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr;}else{break;}}
+old=expr;}
+return curLoop;};var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href");}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;if(isTag&&!isXML){part=part.toUpperCase();}
+for(var i=0,l=checkSet.length,elem;i<l;i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}
+checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part;}}
+if(isPartStrNotTag){Sizzle.filter(part,checkSet,true);}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var parent=elem.parentNode;checkSet[i]=parent.nodeName===part?parent:false;}}}else{for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part;}}
+if(isPartStr){Sizzle.filter(part,checkSet,true);}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck;}
+checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML);},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck;}
+checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML);}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?[m]:[];}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);for(var i=0,l=results.length;i<l;i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i]);}}
+return ret.length===0?null:ret;}},TAG:function(match,context){return context.getElementsByTagName(match[1]);}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";if(isXML){return match;}
+for(var i=0,elem;(elem=curLoop[i])!=null;i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace)
+result.push(elem);}else if(inplace){curLoop[i]=false;}}}
+return false;},ID:function(match){return match[1].replace(/\\/g,"");},TAG:function(match,curLoop){for(var i=0;curLoop[i]===false;i++){}
+return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase();},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);match[2]=(test[1]+(test[2]||1))-0;match[3]=test[3]-0;}
+match[0]=done++;return match;},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name];}
+if(match[2]==="~="){match[4]=" "+match[4]+" ";}
+return match;},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if(match[3].match(chunker).length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop);}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);if(!inplace){result.push.apply(result,ret);}
+return false;}}else if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true;}
+return match;},POS:function(match){match.unshift(true);return match;}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden";},disabled:function(elem){return elem.disabled===true;},checked:function(elem){return elem.checked===true;},selected:function(elem){elem.parentNode.selectedIndex;return elem.selected===true;},parent:function(elem){return!!elem.firstChild;},empty:function(elem){return!elem.firstChild;},has:function(elem,i,match){return!!Sizzle(match[3],elem).length;},header:function(elem){return/h\d/i.test(elem.nodeName);},text:function(elem){return"text"===elem.type;},radio:function(elem){return"radio"===elem.type;},checkbox:function(elem){return"checkbox"===elem.type;},file:function(elem){return"file"===elem.type;},password:function(elem){return"password"===elem.type;},submit:function(elem){return"submit"===elem.type;},image:function(elem){return"image"===elem.type;},reset:function(elem){return"reset"===elem.type;},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON";},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName);}},setFilters:{first:function(elem,i){return i===0;},last:function(elem,i,match,array){return i===array.length-1;},even:function(elem,i){return i%2===0;},odd:function(elem,i){return i%2===1;},lt:function(elem,i,match){return i<match[3]-0;},gt:function(elem,i,match){return i>match[3]-0;},nth:function(elem,i,match){return match[3]-0==i;},eq:function(elem,i,match){return match[3]-0==i;}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];if(filter){return filter(elem,i,match,array);}else if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0;}else if(name==="not"){var not=match[3];for(var i=0,l=not.length;i<l;i++){if(not[i]===elem){return false;}}
+return true;}},CHILD:function(elem,match){var type=match[1],node=elem;switch(type){case'only':case'first':while(node=node.previousSibling){if(node.nodeType===1)return false;}
+if(type=='first')return true;node=elem;case'last':while(node=node.nextSibling){if(node.nodeType===1)return false;}
+return true;case'nth':var first=match[2],last=match[3];if(first==1&&last==0){return true;}
+var doneName=match[0],parent=elem.parentNode;if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;for(node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count;}}
+parent.sizcache=doneName;}
+var diff=elem.nodeIndex-last;if(first==0){return diff==0;}else{return(diff%first==0&&diff/first>=0);}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match;},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match;},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1;},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false;},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];if(filter){return filter(elem,i,match,array);}}}};var origPOS=Expr.match.POS;for(var type in Expr.match){Expr.match[type]=RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);}
+var makeArray=function(array,results){array=Array.prototype.slice.call(array);if(results){results.push.apply(results,array);return results;}
+return array;};try{Array.prototype.slice.call(document.documentElement.childNodes);}catch(e){makeArray=function(array,results){var ret=results||[];if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array);}else{if(typeof array.length==="number"){for(var i=0,l=array.length;i<l;i++){ret.push(array[i]);}}else{for(var i=0;array[i];i++){ret.push(array[i]);}}}
+return ret;};}
+var sortOrder;if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;if(ret===0){hasDuplicate=true;}
+return ret;};}else if("sourceIndex"in document.documentElement){sortOrder=function(a,b){var ret=a.sourceIndex-b.sourceIndex;if(ret===0){hasDuplicate=true;}
+return ret;};}else if(document.createRange){sortOrder=function(a,b){var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();aRange.selectNode(a);aRange.collapse(true);bRange.selectNode(b);bRange.collapse(true);var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);if(ret===0){hasDuplicate=true;}
+return ret;};}
+(function(){var form=document.createElement("form"),id="script"+(new Date).getTime();form.innerHTML="<input name='"+id+"'/>";var root=document.documentElement;root.insertBefore(form,root.firstChild);if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[];}};Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return elem.nodeType===1&&node&&node.nodeValue===match;};}
+root.removeChild(form);})();(function(){var div=document.createElement("div");div.appendChild(document.createComment(""));if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);if(match[1]==="*"){var tmp=[];for(var i=0;results[i];i++){if(results[i].nodeType===1){tmp.push(results[i]);}}
+results=tmp;}
+return results;};}
+div.innerHTML="<a href='#'></a>";if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2);};}})();if(document.querySelectorAll)(function(){var oldSizzle=Sizzle,div=document.createElement("div");div.innerHTML="<p class='TEST'></p>";if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return;}
+Sizzle=function(query,context,extra,seed){context=context||document;if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra);}catch(e){}}
+return oldSizzle(query,context,extra,seed);};Sizzle.find=oldSizzle.find;Sizzle.filter=oldSizzle.filter;Sizzle.selectors=oldSizzle.selectors;Sizzle.matches=oldSizzle.matches;})();if(document.getElementsByClassName&&document.documentElement.getElementsByClassName)(function(){var div=document.createElement("div");div.innerHTML="<div class='test e'></div><div class='test'></div>";if(div.getElementsByClassName("e").length===0)
+return;div.lastChild.className="e";if(div.getElementsByClassName("e").length===1)
+return;Expr.order.splice(1,0,"CLASS");Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]);}};})();function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i;}
+elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
+if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;elem.sizset=i;}
+if(elem.nodeName===cur){match=elem;break;}
+elem=elem[dir];}
+checkSet[i]=match;}}}
+function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i;}
+elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
+if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;elem.sizset=i;}
+if(typeof cur!=="string"){if(elem===cur){match=true;break;}}else if(Sizzle.filter(cur,[elem]).length>0){match=elem;break;}}
+elem=elem[dir];}
+checkSet[i]=match;}}}
+var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16;}:function(a,b){return a!==b&&(a.contains?a.contains(b):true);};var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&isXML(elem.ownerDocument);};var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];selector=selector.replace(Expr.match.PSEUDO,"");}
+selector=Expr.relative[selector]?selector+"*":selector;for(var i=0,l=root.length;i<l;i++){Sizzle(selector,root[i],tmpSet);}
+return Sizzle.filter(later,tmpSet);};jQuery.find=Sizzle;jQuery.filter=Sizzle.filter;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.filters;Sizzle.selectors.filters.hidden=function(elem){return elem.offsetWidth===0||elem.offsetHeight===0;};Sizzle.selectors.filters.visible=function(elem){return elem.offsetWidth>0||elem.offsetHeight>0;};Sizzle.selectors.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};jQuery.multiFilter=function(expr,elems,not){if(not){expr=":not("+expr+")";}
+return Sizzle.matches(expr,elems);};jQuery.dir=function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)
+matched.push(cur);cur=cur[dir];}
+return matched;};jQuery.nth=function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])
+if(cur.nodeType==1&&++num==result)
+break;return cur;};jQuery.sibling=function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)
+r.push(n);}
+return r;};return;window.Sizzle=Sizzle;})();jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)
+return;if(elem.setInterval&&elem!=window)
+elem=window;if(!handler.guid)
+handler.guid=this.guid++;if(data!==undefined){var fn=handler;handler=this.proxy(fn);handler.data=data;}
+var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){return typeof jQuery!=="undefined"&&!jQuery.event.triggered?jQuery.event.handle.apply(arguments.callee.elem,arguments):undefined;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var namespaces=type.split(".");type=namespaces.shift();handler.type=namespaces.slice().sort().join(".");var handlers=events[type];if(jQuery.event.specialAll[type])
+jQuery.event.specialAll[type].setup.call(elem,data,namespaces);if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem,data,namespaces)===false){if(elem.addEventListener)
+elem.addEventListener(type,handle,false);else if(elem.attachEvent)
+elem.attachEvent("on"+type,handle);}}
+handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)
+return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types===undefined||(typeof types==="string"&&types.charAt(0)=="."))
+for(var type in events)
+this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}
+jQuery.each(types.split(/\s+/),function(index,type){var namespaces=type.split(".");type=namespaces.shift();var namespace=RegExp("(^|\\.)"+namespaces.slice().sort().join(".*\\.")+"(\\.|$)");if(events[type]){if(handler)
+delete events[type][handler.guid];else
+for(var handle in events[type])
+if(namespace.test(events[type][handle].type))
+delete events[type][handle];if(jQuery.event.specialAll[type])
+jQuery.event.specialAll[type].teardown.call(elem,namespaces);for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem,namespaces)===false){if(elem.removeEventListener)
+elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)
+elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}
+ret=null;delete events[type];}}});}
+for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(event,data,elem,bubbling){var type=event.type||event;if(!bubbling){event=typeof event==="object"?event[expando]?event:jQuery.extend(jQuery.Event(type),event):jQuery.Event(type);if(type.indexOf("!")>=0){event.type=type=type.slice(0,-1);event.exclusive=true;}
+if(!elem){event.stopPropagation();if(this.global[type])
+jQuery.each(jQuery.cache,function(){if(this.events&&this.events[type])
+jQuery.event.trigger(event,data,this.handle.elem);});}
+if(!elem||elem.nodeType==3||elem.nodeType==8)
+return undefined;event.result=undefined;event.target=elem;data=jQuery.makeArray(data);data.unshift(event);}
+event.currentTarget=elem;var handle=jQuery.data(elem,"handle");if(handle)
+handle.apply(elem,data);if((!elem[type]||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)
+event.result=false;if(!bubbling&&elem[type]&&!event.isDefaultPrevented()&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}
+this.triggered=false;if(!event.isPropagationStopped()){var parent=elem.parentNode||elem.ownerDocument;if(parent)
+jQuery.event.trigger(event,data,parent,true);}},handle:function(event){var all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);event.currentTarget=this;var namespaces=event.type.split(".");event.type=namespaces.shift();all=!namespaces.length&&!event.exclusive;var namespace=RegExp("(^|\\.)"+namespaces.slice().sort().join(".*\\.")+"(\\.|$)");handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||namespace.test(handler.type)){event.handler=handler;event.data=handler.data;var ret=handler.apply(this,arguments);if(ret!==undefined){event.result=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}
+if(event.isImmediatePropagationStopped())
+break;}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(event){if(event[expando])
+return event;var originalEvent=event;event=jQuery.Event(originalEvent);for(var i=this.props.length,prop;i;){prop=this.props[--i];event[prop]=originalEvent[prop];}
+if(!event.target)
+event.target=event.srcElement||document;if(event.target.nodeType==3)
+event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)
+event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}
+if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))
+event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)
+event.metaKey=event.ctrlKey;if(!event.which&&event.button)
+event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy=proxy||function(){return fn.apply(this,arguments);};proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:bindReady,teardown:function(){}}},specialAll:{live:{setup:function(selector,namespaces){jQuery.event.add(this,namespaces[0],liveHandler);},teardown:function(namespaces){if(namespaces.length){var remove=0,name=RegExp("(^|\\.)"+namespaces[0]+"(\\.|$)");jQuery.each((jQuery.data(this,"events").live||{}),function(){if(name.test(this.type))
+remove++;});if(remove<1)
+jQuery.event.remove(this,namespaces[0],liveHandler);}}}}};jQuery.Event=function(src){if(!this.preventDefault)
+return new jQuery.Event(src);if(src&&src.type){this.originalEvent=src;this.type=src.type;}else
+this.type=src;this.timeStamp=now();this[expando]=true;};function returnFalse(){return false;}
+function returnTrue(){return true;}
+jQuery.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e)
+return;if(e.preventDefault)
+e.preventDefault();e.returnValue=false;},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e)
+return;if(e.stopPropagation)
+e.stopPropagation();e.cancelBubble=true;},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation();},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};var withinElement=function(event){var parent=event.relatedTarget;while(parent&&parent!=this)
+try{parent=parent.parentNode;}
+catch(e){parent=this;}
+if(parent!=this){event.type=event.data;jQuery.event.handle.apply(this,arguments);}};jQuery.each({mouseover:'mouseenter',mouseout:'mouseleave'},function(orig,fix){jQuery.event.special[fix]={setup:function(){jQuery.event.add(this,orig,withinElement,fix);},teardown:function(){jQuery.event.remove(this,orig,withinElement);}};});jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){if(this[0]){var event=jQuery.Event(type);event.preventDefault();event.stopPropagation();jQuery.event.trigger(event,data,this[0]);return event.result;}},toggle:function(fn){var args=arguments,i=1;while(i<args.length)
+jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)
+fn.call(document,jQuery);else
+jQuery.readyList.push(fn);return this;},live:function(type,fn){var proxy=jQuery.event.proxy(fn);proxy.guid+=this.selector+type;jQuery(document).bind(liveConvert(type,this.selector),this.selector,proxy);return this;},die:function(type,fn){jQuery(document).unbind(liveConvert(type,this.selector),fn?{guid:fn.guid+this.selector+type}:null);return this;}});function liveHandler(event){var check=RegExp("(^|\\.)"+event.type+"(\\.|$)"),stop=true,elems=[];jQuery.each(jQuery.data(this,"events").live||[],function(i,fn){if(check.test(fn.type)){var elem=jQuery(event.target).closest(fn.data)[0];if(elem)
+elems.push({elem:elem,fn:fn});}});elems.sort(function(a,b){return jQuery.data(a.elem,"closest")-jQuery.data(b.elem,"closest");});jQuery.each(elems,function(){if(this.fn.call(this.elem,event,this.fn.data)===false)
+return(stop=false);});return stop;}
+function liveConvert(type,selector){return["live",type,selector.replace(/\./g,"`").replace(/ /g,"|")].join(".");}
+jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document,jQuery);});jQuery.readyList=null;}
+jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);jQuery.ready();},false);}else if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);jQuery.ready();}});if(document.documentElement.doScroll&&window==window.top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}
+jQuery.ready();})();}
+jQuery.event.add(window,"load",jQuery.ready);}
+jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,"+"change,select,submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});jQuery(window).bind('unload',function(){for(var id in jQuery.cache)
+if(id!=1&&jQuery.cache[id].handle)
+jQuery.event.remove(jQuery.cache[id].handle.elem);});(function(){jQuery.support={};var root=document.documentElement,script=document.createElement("script"),div=document.createElement("div"),id="script"+(new Date).getTime();div.style.display="none";div.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var all=div.getElementsByTagName("*"),a=div.getElementsByTagName("a")[0];if(!all||!all.length||!a){return;}
+jQuery.support={leadingWhitespace:div.firstChild.nodeType==3,tbody:!div.getElementsByTagName("tbody").length,objectAll:!!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!div.getElementsByTagName("link").length,style:/red/.test(a.getAttribute("style")),hrefNormalized:a.getAttribute("href")==="/a",opacity:a.style.opacity==="0.5",cssFloat:!!a.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};script.type="text/javascript";try{script.appendChild(document.createTextNode("window."+id+"=1;"));}catch(e){}
+root.insertBefore(script,root.firstChild);if(window[id]){jQuery.support.scriptEval=true;delete window[id];}
+root.removeChild(script);if(div.attachEvent&&div.fireEvent){div.attachEvent("onclick",function(){jQuery.support.noCloneEvent=false;div.detachEvent("onclick",arguments.callee);});div.cloneNode(true).fireEvent("onclick");}
+jQuery(function(){var div=document.createElement("div");div.style.width=div.style.paddingLeft="1px";document.body.appendChild(div);jQuery.boxModel=jQuery.support.boxModel=div.offsetWidth===2;document.body.removeChild(div).style.display='none';});})();var styleFloat=jQuery.support.cssFloat?"cssFloat":"styleFloat";jQuery.props={"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!=="string")
+return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}
+var type="GET";if(params)
+if(jQuery.isFunction(params)){callback=params;params=null;}else if(typeof params==="object"){params=jQuery.param(params);type="POST";}
+var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")
+self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);if(callback)
+self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return this.elements?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}
+return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}
+return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!=="string")
+s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))
+s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))
+s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}
+if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)
+s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}
+if(head)
+head.removeChild(script);};}
+if(s.dataType=="script"&&s.cache==null)
+s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}
+if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}
+if(s.global&&!jQuery.active++)
+jQuery.event.trigger("ajaxStart");var parts=/^(\w+:)?\/\/([^\/?#]+)/.exec(s.url);if(s.dataType=="script"&&type=="GET"&&parts&&(parts[1]&&parts[1]!=location.protocol||parts[2]!=location.host)){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)
+script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();script.onload=script.onreadystatechange=null;head.removeChild(script);}};}
+head.appendChild(script);return undefined;}
+var requestDone=false;var xhr=s.xhr();if(s.username)
+xhr.open(type,s.url,s.async,s.username,s.password);else
+xhr.open(type,s.url,s.async);try{if(s.data)
+xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)
+xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}
+if(s.beforeSend&&s.beforeSend(xhr,s)===false){if(s.global&&!--jQuery.active)
+jQuery.event.trigger("ajaxStop");xhr.abort();return false;}
+if(s.global)
+jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(xhr.readyState==0){if(ival){clearInterval(ival);ival=null;if(s.global&&!--jQuery.active)
+jQuery.event.trigger("ajaxStop");}}else if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}
+status=isTimeout=="timeout"?"timeout":!jQuery.httpSuccess(xhr)?"error":s.ifModified&&jQuery.httpNotModified(xhr,s.url)?"notmodified":"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s);}catch(e){status="parsererror";}}
+if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}
+if(s.ifModified&&modRes)
+jQuery.lastModified[s.url]=modRes;if(!jsonp)
+success();}else
+jQuery.handleError(s,xhr,status);complete();if(isTimeout)
+xhr.abort();if(s.async)
+xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)
+setTimeout(function(){if(xhr&&!requestDone)
+onreadystatechange("timeout");},s.timeout);}
+try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}
+if(!s.async)
+onreadystatechange();function success(){if(s.success)
+s.success(data,status);if(s.global)
+jQuery.event.trigger("ajaxSuccess",[xhr,s]);}
+function complete(){if(s.complete)
+s.complete(xhr,status);if(s.global)
+jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)
+jQuery.event.trigger("ajaxStop");}
+return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)
+jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223;}catch(e){}
+return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url];}catch(e){}
+return false;},httpData:function(xhr,type,s){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")
+throw"parsererror";if(s&&s.dataFilter)
+data=s.dataFilter(data,type);if(typeof data==="string"){if(type=="script")
+jQuery.globalEval(data);if(type=="json")
+data=window["eval"]("("+data+")");}
+return data;},param:function(a){var s=[];function add(key,value){s[s.length]=encodeURIComponent(key)+'='+encodeURIComponent(value);};if(jQuery.isArray(a)||a.jquery)
+jQuery.each(a,function(){add(this.name,this.value);});else
+for(var j in a)
+if(jQuery.isArray(a[j]))
+jQuery.each(a[j],function(){add(j,this);});else
+add(j,jQuery.isFunction(a[j])?a[j]():a[j]);return s.join("&").replace(/%20/g,"+");}});var elemdisplay={},timerId,fxAttrs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function genFx(type,num){var obj={};jQuery.each(fxAttrs.concat.apply([],fxAttrs.slice(0,num)),function(){obj[this]=type;});return obj;}
+jQuery.fn.extend({show:function(speed,callback){if(speed){return this.animate(genFx("show",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");this[i].style.display=old||"";if(jQuery.css(this[i],"display")==="none"){var tagName=this[i].tagName,display;if(elemdisplay[tagName]){display=elemdisplay[tagName];}else{var elem=jQuery("<"+tagName+" />").appendTo("body");display=elem.css("display");if(display==="none")
+display="block";elem.remove();elemdisplay[tagName]=display;}
+jQuery.data(this[i],"olddisplay",display);}}
+for(var i=0,l=this.length;i<l;i++){this[i].style.display=jQuery.data(this[i],"olddisplay")||"";}
+return this;}},hide:function(speed,callback){if(speed){return this.animate(genFx("hide",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");if(!old&&old!=="none")
+jQuery.data(this[i],"olddisplay",jQuery.css(this[i],"display"));}
+for(var i=0,l=this.length;i<l;i++){this[i].style.display="none";}
+return this;}},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){var bool=typeof fn==="boolean";return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn==null||bool?this.each(function(){var state=bool?fn:jQuery(this).is(":hidden");jQuery(this)[state?"show":"hide"]();}):this.animate(genFx("toggle",3),fn,fn2);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){var opt=jQuery.extend({},optall),p,hidden=this.nodeType==1&&jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)
+return opt.complete.call(this);if((p=="height"||p=="width")&&this.style){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}
+if(opt.overflow!=null)
+this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))
+e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}
+if(parts[1])
+end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
+e.custom(start,val,"");}});return true;});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)
+this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)
+if(timers[i].elem==this){if(gotoEnd)
+timers[i](true);timers.splice(i,1);}});if(!gotoEnd)
+this.dequeue();return this;}});jQuery.each({slideDown:genFx("show",1),slideUp:genFx("hide",1),slideToggle:genFx("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(name,props){jQuery.fn[name]=function(speed,callback){return this.animate(props,speed,callback);};});jQuery.extend({speed:function(speed,easing,fn){var opt=typeof speed==="object"?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:jQuery.fx.speeds[opt.duration]||jQuery.fx.speeds._default;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)
+jQuery(this).dequeue();if(jQuery.isFunction(opt.old))
+opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)
+options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)
+this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style)
+this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))
+return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;var self=this;function t(gotoEnd){return self.step(gotoEnd);}
+t.elem=this.elem;if(t()&&jQuery.timers.push(t)&&!timerId){timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)
+if(!timers[i]())
+timers.splice(i--,1);if(!timers.length){clearInterval(timerId);timerId=undefined;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)
+if(this.options.curAnim[i]!==true)
+done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")
+this.elem.style.display="block";}
+if(this.options.hide)
+jQuery(this.elem).hide();if(this.options.hide||this.options.show)
+for(var p in this.options.curAnim)
+jQuery.attr(this.elem.style,p,this.options.orig[p]);this.options.complete.call(this.elem);}
+return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}
+return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){if(fx.elem.style&&fx.elem.style[fx.prop]!=null)
+fx.elem.style[fx.prop]=fx.now+fx.unit;else
+fx.elem[fx.prop]=fx.now;}}});if(document.documentElement["getBoundingClientRect"])
+jQuery.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return jQuery.offset.bodyOffset(this[0]);var box=this[0].getBoundingClientRect(),doc=this[0].ownerDocument,body=doc.body,docElem=doc.documentElement,clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,top=box.top+(self.pageYOffset||jQuery.boxModel&&docElem.scrollTop||body.scrollTop)-clientTop,left=box.left+(self.pageXOffset||jQuery.boxModel&&docElem.scrollLeft||body.scrollLeft)-clientLeft;return{top:top,left:left};};else
+jQuery.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return jQuery.offset.bodyOffset(this[0]);jQuery.offset.initialized||jQuery.offset.initialize();var elem=this[0],offsetParent=elem.offsetParent,prevOffsetParent=elem,doc=elem.ownerDocument,computedStyle,docElem=doc.documentElement,body=doc.body,defaultView=doc.defaultView,prevComputedStyle=defaultView.getComputedStyle(elem,null),top=elem.offsetTop,left=elem.offsetLeft;while((elem=elem.parentNode)&&elem!==body&&elem!==docElem){computedStyle=defaultView.getComputedStyle(elem,null);top-=elem.scrollTop,left-=elem.scrollLeft;if(elem===offsetParent){top+=elem.offsetTop,left+=elem.offsetLeft;if(jQuery.offset.doesNotAddBorder&&!(jQuery.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(elem.tagName)))
+top+=parseInt(computedStyle.borderTopWidth,10)||0,left+=parseInt(computedStyle.borderLeftWidth,10)||0;prevOffsetParent=offsetParent,offsetParent=elem.offsetParent;}
+if(jQuery.offset.subtractsBorderForOverflowNotVisible&&computedStyle.overflow!=="visible")
+top+=parseInt(computedStyle.borderTopWidth,10)||0,left+=parseInt(computedStyle.borderLeftWidth,10)||0;prevComputedStyle=computedStyle;}
+if(prevComputedStyle.position==="relative"||prevComputedStyle.position==="static")
+top+=body.offsetTop,left+=body.offsetLeft;if(prevComputedStyle.position==="fixed")
+top+=Math.max(docElem.scrollTop,body.scrollTop),left+=Math.max(docElem.scrollLeft,body.scrollLeft);return{top:top,left:left};};jQuery.offset={initialize:function(){if(this.initialized)return;var body=document.body,container=document.createElement('div'),innerDiv,checkDiv,table,td,rules,prop,bodyMarginTop=body.style.marginTop,html='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';rules={position:'absolute',top:0,left:0,margin:0,border:0,width:'1px',height:'1px',visibility:'hidden'};for(prop in rules)container.style[prop]=rules[prop];container.innerHTML=html;body.insertBefore(container,body.firstChild);innerDiv=container.firstChild,checkDiv=innerDiv.firstChild,td=innerDiv.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(checkDiv.offsetTop!==5);this.doesAddBorderForTableAndCells=(td.offsetTop===5);innerDiv.style.overflow='hidden',innerDiv.style.position='relative';this.subtractsBorderForOverflowNotVisible=(checkDiv.offsetTop===-5);body.style.marginTop='1px';this.doesNotIncludeMarginInBodyOffset=(body.offsetTop===0);body.style.marginTop=bodyMarginTop;body.removeChild(container);this.initialized=true;},bodyOffset:function(body){jQuery.offset.initialized||jQuery.offset.initialize();var top=body.offsetTop,left=body.offsetLeft;if(jQuery.offset.doesNotIncludeMarginInBodyOffset)
+top+=parseInt(jQuery.curCSS(body,'marginTop',true),10)||0,left+=parseInt(jQuery.curCSS(body,'marginLeft',true),10)||0;return{top:top,left:left};}};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}
+return results;},offsetParent:function(){var offsetParent=this[0].offsetParent||document.body;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))
+offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return null;return val!==undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom",lower=name.toLowerCase();jQuery.fn["inner"+name]=function(){return this[0]?jQuery.css(this[0],lower,false,"padding"):null;};jQuery.fn["outer"+name]=function(margin){return this[0]?jQuery.css(this[0],lower,false,margin?"margin":"border"):null;};var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(document.documentElement["client"+name],document.body["scroll"+name],document.documentElement["scroll"+name],document.body["offset"+name],document.documentElement["offset"+name]):size===undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,typeof size==="string"?size:size+"px");};});})();$j=jQuery.noConflict(); \ No newline at end of file
diff --git a/skins/common/metadata.js b/skins/common/metadata.js
index a73b6937..86fc6bd4 100644
--- a/skins/common/metadata.js
+++ b/skins/common/metadata.js
@@ -3,42 +3,42 @@
// Add an expand/collapse link and collapse by default if set to
// (with JS disabled, user will see all items)
//
-// attachMetadataToggle("mw_metadata", "More...", "Fewer...");
+// attachMetadataToggle('mw_metadata', 'More...', 'Fewer...');
-
-function attachMetadataToggle(tableId, showText, hideText) {
- if (document.createTextNode) {
- var box = document.getElementById(tableId);
- if (!box)
+function attachMetadataToggle( tableId, showText, hideText ) {
+ if ( document.createTextNode ) {
+ var box = document.getElementById( tableId );
+ if ( !box ) {
return false;
+ }
var tbody = box.getElementsByTagName('tbody')[0];
- var row = document.createElement('tr');
+ var row = document.createElement( 'tr' );
- var col = document.createElement('td');
+ var col = document.createElement( 'td' );
col.colSpan = 2;
- var link = document.createElement('a');
+ var link = document.createElement( 'a' );
link.href = '#';
link.onclick = function() {
- if (box.className == 'mw_metadata collapsed') {
- changeText(link, hideText);
+ if ( box.className == 'mw_metadata collapsed' ) {
+ changeText( link, hideText );
box.className = 'mw_metadata expanded';
} else {
- changeText(link, showText);
+ changeText( link, showText );
box.className = 'mw_metadata collapsed';
}
return false;
- }
+ };
- var text = document.createTextNode(hideText);
+ var text = document.createTextNode( hideText );
- link.appendChild(text);
- col.appendChild(link);
- row.appendChild(col);
- tbody.appendChild(row);
+ link.appendChild( text );
+ col.appendChild( link );
+ row.appendChild( col );
+ tbody.appendChild( row );
// And collapse!
link.onclick();
diff --git a/skins/common/mwsuggest.js b/skins/common/mwsuggest.js
index 061a6451..8f638c47 100644
--- a/skins/common/mwsuggest.js
+++ b/skins/common/mwsuggest.js
@@ -13,7 +13,6 @@ var os_map = {};
var os_cache = {};
// global variables for suggest_keypress
var os_cur_keypressed = 0;
-var os_last_keypress = 0;
var os_keypressed_count = 0;
// type: Timer
var os_timer = null;
@@ -41,34 +40,33 @@ var os_animation_delay = 30;
var os_container_max_width = 2;
// currently active animation timer
var os_animation_timer = null;
+/**
+ * <datalist> is a new HTML5 element that allows you to manually supply
+ * suggestion lists and have them rendered according to the right platform
+ * conventions. However, the only shipping browser as of early 2010 is Opera,
+ * and that has a fatal problem: the suggestion lags behind what the user types
+ * by one keypress. (Reported as DSK-276870 to Opera's secret bug tracker.)
+ * The code here otherwise seems to work, though, so this can be flipped on
+ * (maybe with a UA check) when some browser has a better implementation.
+ */
+// var os_use_datalist = 'list' in document.createElement( 'input' );
+var os_use_datalist = false;
/** Timeout timer class that will fetch the results */
-function os_Timer(id,r,query){
+function os_Timer( id, r, query ) {
this.id = id;
this.r = r;
this.query = query;
}
-/** Timer user to animate expansion/contraction of container width */
-function os_AnimationTimer(r, target){
- this.r = r;
- var current = document.getElementById(r.container).offsetWidth;
- this.inc = Math.round((target-current) / os_animation_steps);
- if(this.inc < os_animation_min_step && this.inc >=0)
- this.inc = os_animation_min_step; // minimal animation step
- if(this.inc > -os_animation_min_step && this.inc <0)
- this.inc = -os_animation_min_step;
- this.target = target;
-}
-
/** Property class for single search box */
-function os_Results(name, formname){
+function os_Results( name, formname ) {
this.searchform = formname; // id of the searchform
this.searchbox = name; // id of the searchbox
- this.container = name+"Suggest"; // div that holds results
- this.resultTable = name+"Result"; // id base for the result table (+num = table row)
- this.resultText = name+"ResultText"; // id base for the spans within result tables (+num)
- this.toggle = name+"Toggle"; // div that has the toggle (enable/disable) link
+ this.container = name + 'Suggest'; // div that holds results
+ this.resultTable = name + 'Result'; // id base for the result table (+num = table row)
+ this.resultText = name + 'ResultText'; // id base for the spans within result tables (+num)
+ this.toggle = name + 'Toggle'; // div that has the toggle (enable/disable) link
this.query = null; // last processed query
this.results = null; // parsed titles
this.resultCount = 0; // number of results
@@ -78,774 +76,920 @@ function os_Results(name, formname){
this.containerRow = 0; // height of result field in the container
this.containerTotal = 0; // total height of the container will all results
this.visible = false; // if container is visible
+ this.stayHidden = false; // don't try to show if lost focus
+}
+
+/** Timer user to animate expansion/contraction of container width */
+function os_AnimationTimer( r, target ) {
+ this.r = r;
+ var current = document.getElementById(r.container).offsetWidth;
+ this.inc = Math.round( ( target - current ) / os_animation_steps );
+ if( this.inc < os_animation_min_step && this.inc >=0 ) {
+ this.inc = os_animation_min_step; // minimal animation step
+ }
+ if( this.inc > -os_animation_min_step && this.inc < 0 ) {
+ this.inc = -os_animation_min_step;
+ }
+ this.target = target;
+}
+
+/******************
+ * Initialization
+ ******************/
+
+/** Initialization, call upon page onload */
+function os_MWSuggestInit() {
+ for( i = 0; i < os_autoload_inputs.length; i++ ) {
+ var id = os_autoload_inputs[i];
+ var form = os_autoload_forms[i];
+ element = document.getElementById( id );
+ if( element != null ) {
+ os_initHandlers( id, form, element );
+ }
+ }
+}
+
+/** Init Result objects and event handlers */
+function os_initHandlers( name, formname, element ) {
+ var r = new os_Results( name, formname );
+ // event handler
+ os_hookEvent( element, 'keyup', function( event ) { os_eventKeyup( event ); } );
+ os_hookEvent( element, 'keydown', function( event ) { os_eventKeydown( event ); } );
+ os_hookEvent( element, 'keypress', function( event ) { os_eventKeypress( event ); } );
+ if ( !os_use_datalist ) {
+ // These are needed for the div hack to hide it if the user blurs.
+ os_hookEvent( element, 'blur', function( event ) { os_eventBlur( event ); } );
+ os_hookEvent( element, 'focus', function( event ) { os_eventFocus( event ); } );
+ // We don't want browser auto-suggestions interfering with our div, but
+ // autocomplete must be on for datalist to work (at least in Opera
+ // 10.10).
+ element.setAttribute( 'autocomplete', 'off' );
+ }
+ // stopping handler
+ os_hookEvent( document.getElementById( formname ), 'submit', function( event ) { return os_eventOnsubmit( event ); } );
+ os_map[name] = r;
+ // toggle link
+ if( document.getElementById( r.toggle ) == null ) {
+ // TODO: disable this while we figure out a way for this to work in all browsers
+ /* if( name == 'searchInput' ) {
+ // special case: place above the main search box
+ var t = os_createToggle( r, 'os-suggest-toggle' );
+ var searchBody = document.getElementById( 'searchBody' );
+ var first = searchBody.parentNode.firstChild.nextSibling.appendChild(t);
+ } else {
+ // default: place below search box to the right
+ var t = os_createToggle( r, 'os-suggest-toggle-def' );
+ var top = element.offsetTop + element.offsetHeight;
+ var left = element.offsetLeft + element.offsetWidth;
+ t.style.position = 'absolute';
+ t.style.top = top + 'px';
+ t.style.left = left + 'px';
+ element.parentNode.appendChild( t );
+ // only now width gets calculated, shift right
+ left -= t.offsetWidth;
+ t.style.left = left + 'px';
+ t.style.visibility = 'visible';
+ } */
+ }
+
+}
+
+function os_hookEvent( element, hookName, hookFunct ) {
+ if ( element.addEventListener ) {
+ element.addEventListener( hookName, hookFunct, false );
+ } else if ( window.attachEvent ) {
+ element.attachEvent( 'on' + hookName, hookFunct );
+ }
+}
+
+/********************
+ * Keyboard events
+ ********************/
+
+/** Event handler that will fetch results on keyup */
+function os_eventKeyup( e ) {
+ var targ = os_getTarget( e );
+ var r = os_map[targ.id];
+ if( r == null ) {
+ return; // not our event
+ }
+
+ // some browsers won't generate keypressed for arrow keys, catch it
+ if( os_keypressed_count == 0 ) {
+ os_processKey( r, os_cur_keypressed, targ );
+ }
+ var query = targ.value;
+ os_fetchResults( r, query, os_search_timeout );
+}
+
+/** catch arrows up/down and escape to hide the suggestions */
+function os_processKey( r, keypressed, targ ) {
+ if ( keypressed == 40 && !r.visible && os_timer == null ) {
+ // If the user hits the down arrow, fetch results immediately if none
+ // are already displayed.
+ r.query = '';
+ os_fetchResults( r, targ.value, 0 );
+ }
+ // Otherwise, if we're not using datalist, we need to handle scrolling and
+ // so on.
+ if ( os_use_datalist ) {
+ return;
+ }
+ if ( keypressed == 40 ) { // Arrow Down
+ if ( r.visible ) {
+ os_changeHighlight( r, r.selected, r.selected + 1, true );
+ }
+ } else if ( keypressed == 38 ) { // Arrow Up
+ if ( r.visible ) {
+ os_changeHighlight( r, r.selected, r.selected - 1, true );
+ }
+ } else if( keypressed == 27 ) { // Escape
+ document.getElementById( r.searchbox ).value = r.original;
+ r.query = r.original;
+ os_hideResults( r );
+ } else if( r.query != document.getElementById( r.searchbox ).value ) {
+ // os_hideResults( r ); // don't show old suggestions
+ }
}
-/** Hide results div */
-function os_hideResults(r){
- var c = document.getElementById(r.container);
- if(c != null)
- c.style.visibility = "hidden";
+/** When keys is held down use a timer to output regular events */
+function os_eventKeypress( e ) {
+ var targ = os_getTarget( e );
+ var r = os_map[targ.id];
+ if( r == null ) {
+ return; // not our event
+ }
+
+ var keypressed = os_cur_keypressed;
+
+ os_keypressed_count++;
+ os_processKey( r, keypressed, targ );
+}
+
+/** Catch the key code (Firefox bug) */
+function os_eventKeydown( e ) {
+ if ( !e ) {
+ e = window.event;
+ }
+ var targ = os_getTarget( e );
+ var r = os_map[targ.id];
+ if( r == null ) {
+ return; // not our event
+ }
+
+ os_mouse_moved = false;
+
+ os_cur_keypressed = ( e.keyCode == undefined ) ? e.which : e.keyCode;
+ os_keypressed_count = 0;
+}
+
+
+/** When the form is submitted hide everything, cancel updates... */
+function os_eventOnsubmit( e ) {
+ var targ = os_getTarget( e );
+
+ os_is_stopped = true;
+ // kill timed requests
+ if( os_timer != null && os_timer.id != null ) {
+ clearTimeout( os_timer.id );
+ os_timer = null;
+ }
+ // Hide all suggestions
+ for( i = 0; i < os_autoload_inputs.length; i++ ) {
+ var r = os_map[os_autoload_inputs[i]];
+ if( r != null ) {
+ var b = document.getElementById( r.searchform );
+ if( b != null && b == targ ) {
+ // set query value so the handler won't try to fetch additional results
+ r.query = document.getElementById( r.searchbox ).value;
+ }
+ os_hideResults( r );
+ }
+ }
+ return true;
+}
+
+
+
+/** Hide results from the user, either making the div visibility=hidden or
+ * detaching the datalist from the input. */
+function os_hideResults( r ) {
+ if ( os_use_datalist ) {
+ document.getElementById( r.searchbox ).setAttribute( 'list', '' );
+ } else {
+ var c = document.getElementById( r.container );
+ if ( c != null ) {
+ c.style.visibility = 'hidden';
+ }
+ }
r.visible = false;
r.selected = -1;
}
+function os_decodeValue( value ) {
+ if ( decodeURIComponent ) {
+ return decodeURIComponent( value );
+ }
+ if( unescape ) {
+ return unescape( value );
+ }
+ return null;
+}
+
+function os_encodeQuery( value ) {
+ if ( encodeURIComponent ) {
+ return encodeURIComponent( value );
+ }
+ if( escape ) {
+ return escape( value );
+ }
+ return null;
+}
+
+/** Handles data from XMLHttpRequest, and updates the suggest results */
+function os_updateResults( r, query, text, cacheKey ) {
+ os_cache[cacheKey] = text;
+ r.query = query;
+ r.original = query;
+ if( text == '' ) {
+ r.results = null;
+ r.resultCount = 0;
+ os_hideResults( r );
+ } else {
+ try {
+ var p = eval( '(' + text + ')' ); // simple json parse, could do a safer one
+ if( p.length < 2 || p[1].length == 0 ) {
+ r.results = null;
+ r.resultCount = 0;
+ os_hideResults( r );
+ return;
+ }
+ if ( os_use_datalist ) {
+ os_setupDatalist( r, p[1] );
+ } else {
+ os_setupDiv( r, p[1] );
+ }
+ } catch( e ) {
+ // bad response from server or such
+ os_hideResults( r );
+ os_cache[cacheKey] = null;
+ }
+ }
+}
+
+/**
+ * Create and populate a <datalist>.
+ *
+ * @param r os_Result object
+ * @param results Array of the new results to replace existing ones
+ */
+function os_setupDatalist( r, results ) {
+ var s = document.getElementById( r.searchbox );
+ var c = document.getElementById( r.container );
+ if ( c == null ) {
+ c = document.createElement( 'datalist' );
+ c.setAttribute( 'id', r.container );
+ document.body.appendChild( c );
+ } else {
+ c.innerHTML = '';
+ }
+ s.setAttribute( 'list', r.container );
+
+ r.results = new Array();
+ r.resultCount = results.length;
+ r.visible = true;
+ for ( i = 0; i < results.length; i++ ) {
+ var title = os_decodeValue( results[i] );
+ var opt = document.createElement( 'option' );
+ opt.value = title;
+ r.results[i] = title;
+ c.appendChild( opt );
+ }
+}
+
+/** Fetch namespaces from checkboxes or hidden fields in the search form,
+ if none defined use wgSearchNamespaces global */
+function os_getNamespaces( r ) {
+ var namespaces = '';
+ var elements = document.forms[r.searchform].elements;
+ for( i = 0; i < elements.length; i++ ) {
+ var name = elements[i].name;
+ if( typeof name != 'undefined' && name.length > 2 && name[0] == 'n' &&
+ name[1] == 's' && (
+ ( elements[i].type == 'checkbox' && elements[i].checked ) ||
+ ( elements[i].type == 'hidden' && elements[i].value == '1' )
+ )
+ ) {
+ if( namespaces != '' ) {
+ namespaces += '|';
+ }
+ namespaces += name.substring( 2 );
+ }
+ }
+ if( namespaces == '' ) {
+ namespaces = wgSearchNamespaces.join('|');
+ }
+ return namespaces;
+}
+
+/** Update results if user hasn't already typed something else */
+function os_updateIfRelevant( r, query, text, cacheKey ) {
+ var t = document.getElementById( r.searchbox );
+ if( t != null && t.value == query ) { // check if response is still relevant
+ os_updateResults( r, query, text, cacheKey );
+ }
+ r.query = query;
+}
+
+/** Fetch results after some timeout */
+function os_delayedFetch() {
+ if( os_timer == null ) {
+ return;
+ }
+ var r = os_timer.r;
+ var query = os_timer.query;
+ os_timer = null;
+ var path = wgMWSuggestTemplate.replace( "{namespaces}", os_getNamespaces( r ) )
+ .replace( "{dbname}", wgDBname )
+ .replace( "{searchTerms}", os_encodeQuery( query ) );
+
+ // try to get from cache, if not fetch using ajax
+ var cached = os_cache[path];
+ if( cached != null && cached != undefined ) {
+ os_updateIfRelevant( r, query, cached, path );
+ } else {
+ var xmlhttp = sajax_init_object();
+ if( xmlhttp ) {
+ try {
+ xmlhttp.open( 'GET', path, true );
+ xmlhttp.onreadystatechange = function() {
+ if ( xmlhttp.readyState == 4 && typeof os_updateIfRelevant == 'function' ) {
+ os_updateIfRelevant( r, query, xmlhttp.responseText, path );
+ }
+ };
+ xmlhttp.send( null );
+ } catch ( e ) {
+ if ( window.location.hostname == 'localhost' ) {
+ alert( "Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing." );
+ }
+ throw e;
+ }
+ }
+ }
+}
+
+/** Init timed update via os_delayedUpdate() */
+function os_fetchResults( r, query, timeout ) {
+ if( query == '' ) {
+ r.query = '';
+ os_hideResults( r );
+ return;
+ } else if( query == r.query ) {
+ return; // no change
+ }
+
+ os_is_stopped = false; // make sure we're running
+
+ // cancel any pending fetches
+ if( os_timer != null && os_timer.id != null ) {
+ clearTimeout( os_timer.id );
+ }
+ // schedule delayed fetching of results
+ if( timeout != 0 ) {
+ os_timer = new os_Timer( setTimeout( "os_delayedFetch()", timeout ), r, query );
+ } else {
+ os_timer = new os_Timer( null, r, query );
+ os_delayedFetch(); // do it now!
+ }
+}
+
+/** Find event target */
+function os_getTarget( e ) {
+ if ( !e ) {
+ e = window.event;
+ }
+ if ( e.target ) {
+ return e.target;
+ } else if ( e.srcElement ) {
+ return e.srcElement;
+ } else {
+ return null;
+ }
+}
+
+/** Check if x is a valid integer */
+function os_isNumber( x ) {
+ if( x == '' || isNaN( x ) ) {
+ return false;
+ }
+ for( var i = 0; i < x.length; i++ ) {
+ var c = x.charAt( i );
+ if( !( c >= '0' && c <= '9' ) ) {
+ return false;
+ }
+ }
+ return true;
+}
+
+/** Call this to enable suggestions on input (id=inputId), on a form (name=formName) */
+function os_enableSuggestionsOn( inputId, formName ) {
+ os_initHandlers( inputId, formName, document.getElementById( inputId ) );
+}
+
+/** Call this to disable suggestios on input box (id=inputId) */
+function os_disableSuggestionsOn( inputId ) {
+ r = os_map[inputId];
+ if( r != null ) {
+ // cancel/hide results
+ os_timer = null;
+ os_hideResults( r );
+ // turn autocomplete on !
+ document.getElementById( inputId ).setAttribute( 'autocomplete', 'on' );
+ // remove descriptor
+ os_map[inputId] = null;
+ }
+
+ // Remove the element from the os_autoload_* arrays
+ var index = os_autoload_inputs.indexOf( inputId );
+ if ( index >= 0 ) {
+ os_autoload_inputs[index] = os_autoload_forms[index] = '';
+ }
+}
+
+/************************************************
+ * Div-only functions (irrelevant for datalist)
+ ************************************************/
+
+/** Event: loss of focus of input box */
+function os_eventBlur( e ) {
+ var targ = os_getTarget( e );
+ var r = os_map[targ.id];
+ if( r == null ) {
+ return; // not our event
+ }
+ if( !os_mouse_pressed ) {
+ os_hideResults( r );
+ // force canvas to stay hidden
+ r.stayHidden = true;
+ // cancel any pending fetches
+ if( os_timer != null && os_timer.id != null ) {
+ clearTimeout( os_timer.id );
+ }
+ os_timer = null;
+ }
+}
+
+/** Event: focus (catch only when stopped) */
+function os_eventFocus( e ) {
+ var targ = os_getTarget( e );
+ var r = os_map[targ.id];
+ if( r == null ) {
+ return; // not our event
+ }
+ r.stayHidden = false;
+}
+
+/**
+ * Create and populate a <div>, for non-<datalist>-supporting browsers.
+ *
+ * @param r os_Result object
+ * @param results Array of the new results to replace existing ones
+ */
+function os_setupDiv( r, results ) {
+ var c = document.getElementById( r.container );
+ if ( c == null ) {
+ c = os_createContainer( r );
+ }
+ c.innerHTML = os_createResultTable( r, results );
+ // init container table sizes
+ var t = document.getElementById( r.resultTable );
+ r.containerTotal = t.offsetHeight;
+ r.containerRow = t.offsetHeight / r.resultCount;
+ os_fitContainer( r );
+ os_trimResultText( r );
+ os_showResults( r );
+}
+
+/** Create the result table to be placed in the container div */
+function os_createResultTable( r, results ) {
+ var c = document.getElementById( r.container );
+ var width = c.offsetWidth - os_operaWidthFix( c.offsetWidth );
+ var html = '<table class="os-suggest-results" id="' + r.resultTable + '" style="width: ' + width + 'px;">';
+ r.results = new Array();
+ r.resultCount = results.length;
+ for( i = 0; i < results.length; i++ ) {
+ var title = os_decodeValue( results[i] );
+ r.results[i] = title;
+ html += '<tr><td class="os-suggest-result" id="' + r.resultTable + i + '"><span id="' + r.resultText + i + '">' + title + '</span></td></tr>';
+ }
+ html += '</table>';
+ return html;
+}
+
/** Show results div */
-function os_showResults(r){
- if(os_is_stopped)
+function os_showResults( r ) {
+ if( os_is_stopped ) {
+ return;
+ }
+ if( r.stayHidden ) {
return;
- os_fitContainer(r);
- var c = document.getElementById(r.container);
+ }
+ os_fitContainer( r );
+ var c = document.getElementById( r.container );
r.selected = -1;
- if(c != null){
+ if( c != null ) {
c.scrollTop = 0;
- c.style.visibility = "visible";
+ c.style.visibility = 'visible';
r.visible = true;
}
}
-function os_operaWidthFix(x){
- // TODO: better css2 incompatibility detection here
- if(is_opera || is_khtml || navigator.userAgent.toLowerCase().indexOf('firefox/1')!=-1){
- return 30; // opera&konqueror & old firefox don't understand overflow-x, estimate scrollbar width
+function os_operaWidthFix( x ) {
+ // For browsers that don't understand overflow-x, estimate scrollbar width
+ if( typeof document.body.style.overflowX != 'string' ) {
+ return 30;
}
return 0;
}
-function os_encodeQuery(value){
- if (encodeURIComponent) {
- return encodeURIComponent(value);
- }
- if(escape) {
- return escape(value);
- }
- return null;
-}
-function os_decodeValue(value){
- if (decodeURIComponent) {
- return decodeURIComponent(value);
- }
- if(unescape){
- return unescape(value);
- }
- return null;
-}
-
/** Brower-dependent functions to find window inner size, and scroll status */
function f_clientWidth() {
- return f_filterResults (
+ return f_filterResults(
window.innerWidth ? window.innerWidth : 0,
document.documentElement ? document.documentElement.clientWidth : 0,
document.body ? document.body.clientWidth : 0
);
}
+
function f_clientHeight() {
- return f_filterResults (
+ return f_filterResults(
window.innerHeight ? window.innerHeight : 0,
document.documentElement ? document.documentElement.clientHeight : 0,
document.body ? document.body.clientHeight : 0
);
}
+
function f_scrollLeft() {
- return f_filterResults (
+ return f_filterResults(
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
+
function f_scrollTop() {
- return f_filterResults (
+ return f_filterResults(
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
-function f_filterResults(n_win, n_docel, n_body) {
+
+function f_filterResults( n_win, n_docel, n_body ) {
var n_result = n_win ? n_win : 0;
- if (n_docel && (!n_result || (n_result > n_docel)))
+ if ( n_docel && ( !n_result || ( n_result > n_docel ) ) ) {
n_result = n_docel;
- return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
+ }
+ return n_body && ( !n_result || ( n_result > n_body ) ) ? n_body : n_result;
}
/** Get the height available for the results container */
-function os_availableHeight(r){
- var absTop = document.getElementById(r.container).style.top;
- var px = absTop.lastIndexOf("px");
- if(px > 0)
- absTop = absTop.substring(0,px);
- return f_clientHeight() - (absTop - f_scrollTop());
+function os_availableHeight( r ) {
+ var absTop = document.getElementById( r.container ).style.top;
+ var px = absTop.lastIndexOf( 'px' );
+ if( px > 0 ) {
+ absTop = absTop.substring( 0, px );
+ }
+ return f_clientHeight() - ( absTop - f_scrollTop() );
}
-
/** Get element absolute position {left,top} */
-function os_getElementPosition(elemID){
- var offsetTrail = document.getElementById(elemID);
+function os_getElementPosition( elemID ) {
+ var offsetTrail = document.getElementById( elemID );
var offsetLeft = 0;
var offsetTop = 0;
- while (offsetTrail){
+ while ( offsetTrail ) {
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
- if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined'){
+ if ( navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined' ) {
offsetLeft += document.body.leftMargin;
offsetTop += document.body.topMargin;
}
- return {left:offsetLeft,top:offsetTop};
+ return { left:offsetLeft, top:offsetTop };
}
/** Create the container div that will hold the suggested titles */
-function os_createContainer(r){
- var c = document.createElement("div");
- var s = document.getElementById(r.searchbox);
- var pos = os_getElementPosition(r.searchbox);
+function os_createContainer( r ) {
+ var c = document.createElement( 'div' );
+ var s = document.getElementById( r.searchbox );
+ var pos = os_getElementPosition( r.searchbox );
var left = pos.left;
var top = pos.top + s.offsetHeight;
- c.className = "os-suggest";
- c.setAttribute("id", r.container);
- document.body.appendChild(c);
+ c.className = 'os-suggest';
+ c.setAttribute( 'id', r.container );
+ document.body.appendChild( c );
// dynamically generated style params
// IE workaround, cannot explicitely set "style" attribute
- c = document.getElementById(r.container);
- c.style.top = top+"px";
- c.style.left = left+"px";
- c.style.width = s.offsetWidth+"px";
+ c = document.getElementById( r.container );
+ c.style.top = top + 'px';
+ c.style.left = left + 'px';
+ c.style.width = s.offsetWidth + 'px';
// mouse event handlers
- c.onmouseover = function(event) { os_eventMouseover(r.searchbox, event); };
- c.onmousemove = function(event) { os_eventMousemove(r.searchbox, event); };
- c.onmousedown = function(event) { return os_eventMousedown(r.searchbox, event); };
- c.onmouseup = function(event) { os_eventMouseup(r.searchbox, event); };
+ c.onmouseover = function( event ) { os_eventMouseover( r.searchbox, event ); };
+ c.onmousemove = function( event ) { os_eventMousemove( r.searchbox, event ); };
+ c.onmousedown = function( event ) { return os_eventMousedown( r.searchbox, event ); };
+ c.onmouseup = function( event ) { os_eventMouseup( r.searchbox, event ); };
return c;
}
/** change container height to fit to screen */
-function os_fitContainer(r){
- var c = document.getElementById(r.container);
- var h = os_availableHeight(r) - 20;
+function os_fitContainer( r ) {
+ var c = document.getElementById( r.container );
+ var h = os_availableHeight( r ) - 20;
var inc = r.containerRow;
- h = parseInt(h/inc) * inc;
- if(h < (2 * inc) && r.resultCount > 1) // min: two results
+ h = parseInt( h / inc ) * inc;
+ if( h < ( 2 * inc ) && r.resultCount > 1 ) { // min: two results
h = 2 * inc;
- if((h/inc) > os_max_lines_per_suggest )
+ }
+ if( ( h / inc ) > os_max_lines_per_suggest ) {
h = inc * os_max_lines_per_suggest;
- if(h < r.containerTotal){
- c.style.height = h +"px";
- r.containerCount = parseInt(Math.round(h/inc));
- } else{
- c.style.height = r.containerTotal+"px";
+ }
+ if( h < r.containerTotal ) {
+ c.style.height = h + 'px';
+ r.containerCount = parseInt( Math.round( h / inc ) );
+ } else {
+ c.style.height = r.containerTotal + 'px';
r.containerCount = r.resultCount;
}
}
+
/** If some entries are longer than the box, replace text with "..." */
-function os_trimResultText(r){
+function os_trimResultText( r ) {
// find max width, first see if we could expand the container to fit it
var maxW = 0;
- for(var i=0;i<r.resultCount;i++){
- var e = document.getElementById(r.resultText+i);
- if(e.offsetWidth > maxW)
+ for( var i = 0; i < r.resultCount; i++ ) {
+ var e = document.getElementById( r.resultText + i );
+ if( e.offsetWidth > maxW ) {
maxW = e.offsetWidth;
+ }
}
- var w = document.getElementById(r.container).offsetWidth;
+ var w = document.getElementById( r.container ).offsetWidth;
var fix = 0;
- if(r.containerCount < r.resultCount){
+ if( r.containerCount < r.resultCount ) {
fix = 20; // give 20px for scrollbar
- } else
- fix = os_operaWidthFix(w);
- if(fix < 4)
+ } else {
+ fix = os_operaWidthFix( w );
+ }
+ if( fix < 4 ) {
fix = 4; // basic padding
+ }
maxW += fix;
// resize container to fit more data if permitted
- var normW = document.getElementById(r.searchbox).offsetWidth;
+ var normW = document.getElementById( r.searchbox ).offsetWidth;
var prop = maxW / normW;
- if(prop > os_container_max_width)
+ if( prop > os_container_max_width ) {
prop = os_container_max_width;
- else if(prop < 1)
+ } else if( prop < 1 ) {
prop = 1;
+ }
var newW = Math.round( normW * prop );
- if( w != newW ){
+ if( w != newW ) {
w = newW;
- if( os_animation_timer != null )
- clearInterval(os_animation_timer.id)
- os_animation_timer = new os_AnimationTimer(r,w);
- os_animation_timer.id = setInterval("os_animateChangeWidth()",os_animation_delay);
+ if( os_animation_timer != null ) {
+ clearInterval( os_animation_timer.id );
+ }
+ os_animation_timer = new os_AnimationTimer( r, w );
+ os_animation_timer.id = setInterval( "os_animateChangeWidth()", os_animation_delay );
w -= fix; // this much is reserved
}
// trim results
- if(w < 10)
+ if( w < 10 ) {
return;
- for(var i=0;i<r.resultCount;i++){
- var e = document.getElementById(r.resultText+i);
+ }
+ for( var i = 0; i < r.resultCount; i++ ) {
+ var e = document.getElementById( r.resultText + i );
var replace = 1;
- var lastW = e.offsetWidth+1;
+ var lastW = e.offsetWidth + 1;
var iteration = 0;
var changedText = false;
- while(e.offsetWidth > w && (e.offsetWidth < lastW || iteration<2)){
+ while( e.offsetWidth > w && ( e.offsetWidth < lastW || iteration < 2 ) ) {
changedText = true;
lastW = e.offsetWidth;
var l = e.innerHTML;
- e.innerHTML = l.substring(0,l.length-replace)+"...";
+ e.innerHTML = l.substring( 0, l.length - replace ) + '...';
iteration++;
replace = 4; // how many chars to replace
}
- if(changedText){
+ if( changedText ) {
// show hint for trimmed titles
- document.getElementById(r.resultTable+i).setAttribute("title",r.results[i]);
+ document.getElementById( r.resultTable + i ).setAttribute( 'title', r.results[i] );
}
}
}
/** Invoked on timer to animate change in container width */
-function os_animateChangeWidth(){
+function os_animateChangeWidth() {
var r = os_animation_timer.r;
- var c = document.getElementById(r.container);
+ var c = document.getElementById( r.container );
var w = c.offsetWidth;
- var normW = document.getElementById(r.searchbox).offsetWidth;
- var normL = os_getElementPosition(r.searchbox).left;
+ var normW = document.getElementById( r.searchbox ).offsetWidth;
+ var normL = os_getElementPosition( r.searchbox ).left;
var inc = os_animation_timer.inc;
var target = os_animation_timer.target;
var nw = w + inc;
- if( (inc > 0 && nw >= target) || (inc <= 0 && nw <= target) ){
+ if( ( inc > 0 && nw >= target ) || ( inc <= 0 && nw <= target ) ) {
// finished !
- c.style.width = target+"px";
- clearInterval(os_animation_timer.id)
+ c.style.width = target + 'px';
+ clearInterval( os_animation_timer.id );
os_animation_timer = null;
- } else{
+ } else {
// in-progress
- c.style.width = nw+"px";
- if(document.documentElement.dir == "rtl")
- c.style.left = (normL + normW + (target - nw) - os_animation_timer.target - 1)+"px";
- }
-}
-
-/** Handles data from XMLHttpRequest, and updates the suggest results */
-function os_updateResults(r, query, text, cacheKey){
- os_cache[cacheKey] = text;
- r.query = query;
- r.original = query;
- if(text == ""){
- r.results = null;
- r.resultCount = 0;
- os_hideResults(r);
- } else{
- try {
- var p = eval('('+text+')'); // simple json parse, could do a safer one
- if(p.length<2 || p[1].length == 0){
- r.results = null;
- r.resultCount = 0;
- os_hideResults(r);
- return;
- }
- var c = document.getElementById(r.container);
- if(c == null)
- c = os_createContainer(r);
- c.innerHTML = os_createResultTable(r,p[1]);
- // init container table sizes
- var t = document.getElementById(r.resultTable);
- r.containerTotal = t.offsetHeight;
- r.containerRow = t.offsetHeight / r.resultCount;
- os_fitContainer(r);
- os_trimResultText(r);
- os_showResults(r);
- } catch(e){
- // bad response from server or such
- os_hideResults(r);
- os_cache[cacheKey] = null;
+ c.style.width = nw + 'px';
+ if( document.documentElement.dir == 'rtl' ) {
+ c.style.left = ( normL + normW + ( target - nw ) - os_animation_timer.target - 1 ) + 'px';
}
}
}
-/** Create the result table to be placed in the container div */
-function os_createResultTable(r, results){
- var c = document.getElementById(r.container);
- var width = c.offsetWidth - os_operaWidthFix(c.offsetWidth);
- var html = "<table class=\"os-suggest-results\" id=\""+r.resultTable+"\" style=\"width: "+width+"px;\">";
- r.results = new Array();
- r.resultCount = results.length;
- for(i=0;i<results.length;i++){
- var title = os_decodeValue(results[i]);
- r.results[i] = title;
- html += "<tr><td class=\"os-suggest-result\" id=\""+r.resultTable+i+"\"><span id=\""+r.resultText+i+"\">"+title+"</span></td></tr>";
+/** Change the highlighted row (i.e. suggestion), from position cur to next */
+function os_changeHighlight( r, cur, next, updateSearchBox ) {
+ if ( next >= r.resultCount ) {
+ next = r.resultCount - 1;
+ }
+ if ( next < -1 ) {
+ next = -1;
+ }
+ r.selected = next;
+ if ( cur == next ) {
+ return; // nothing to do.
}
- html+="</table>"
- return html;
-}
-/** Fetch namespaces from checkboxes or hidden fields in the search form,
- if none defined use wgSearchNamespaces global */
-function os_getNamespaces(r){
- var namespaces = "";
- var elements = document.forms[r.searchform].elements;
- for(i=0; i < elements.length; i++){
- var name = elements[i].name;
- if(typeof name != 'undefined' && name.length > 2
- && name[0]=='n' && name[1]=='s'
- && ((elements[i].type=='checkbox' && elements[i].checked)
- || (elements[i].type=='hidden' && elements[i].value=="1")) ){
- if(namespaces!="")
- namespaces+="|";
- namespaces+=name.substring(2);
+ if( cur >= 0 ) {
+ var curRow = document.getElementById( r.resultTable + cur );
+ if( curRow != null ) {
+ curRow.className = 'os-suggest-result';
}
}
- if(namespaces == "")
- namespaces = wgSearchNamespaces.join("|");
- return namespaces;
-}
-
-/** Update results if user hasn't already typed something else */
-function os_updateIfRelevant(r, query, text, cacheKey){
- var t = document.getElementById(r.searchbox);
- if(t != null && t.value == query){ // check if response is still relevant
- os_updateResults(r, query, text, cacheKey);
+ var newText;
+ if( next >= 0 ) {
+ var nextRow = document.getElementById( r.resultTable + next );
+ if( nextRow != null ) {
+ nextRow.className = os_HighlightClass();
+ }
+ newText = r.results[next];
+ } else {
+ newText = r.original;
}
- r.query = query;
-}
-
-/** Fetch results after some timeout */
-function os_delayedFetch(){
- if(os_timer == null)
- return;
- var r = os_timer.r;
- var query = os_timer.query;
- os_timer = null;
- var path = wgMWSuggestTemplate.replace("{namespaces}",os_getNamespaces(r))
- .replace("{dbname}",wgDBname)
- .replace("{searchTerms}",os_encodeQuery(query));
- // try to get from cache, if not fetch using ajax
- var cached = os_cache[path];
- if(cached != null){
- os_updateIfRelevant(r, query, cached, path);
- } else{
- var xmlhttp = sajax_init_object();
- if(xmlhttp){
- try {
- xmlhttp.open("GET", path, true);
- xmlhttp.onreadystatechange=function(){
- if (xmlhttp.readyState==4 && typeof os_updateIfRelevant == 'function') {
- os_updateIfRelevant(r, query, xmlhttp.responseText, path);
- }
- };
- xmlhttp.send(null);
- } catch (e) {
- if (window.location.hostname == "localhost") {
- alert("Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing.");
- }
- throw e;
- }
+ // adjust the scrollbar if any
+ if( r.containerCount < r.resultCount ) {
+ var c = document.getElementById( r.container );
+ var vStart = c.scrollTop / r.containerRow;
+ var vEnd = vStart + r.containerCount;
+ if( next < vStart ) {
+ c.scrollTop = next * r.containerRow;
+ } else if( next >= vEnd ) {
+ c.scrollTop = ( next - r.containerCount + 1 ) * r.containerRow;
}
}
-}
-
-/** Init timed update via os_delayedUpdate() */
-function os_fetchResults(r, query, timeout){
- if(query == ""){
- os_hideResults(r);
- return;
- } else if(query == r.query)
- return; // no change
-
- os_is_stopped = false; // make sure we're running
- /* var cacheKey = wgDBname+":"+query;
- var cached = os_cache[cacheKey];
- if(cached != null){
- os_updateResults(r,wgDBname,query,cached);
- return;
- } */
-
- // cancel any pending fetches
- if(os_timer != null && os_timer.id != null)
- clearTimeout(os_timer.id);
- // schedule delayed fetching of results
- if(timeout != 0){
- os_timer = new os_Timer(setTimeout("os_delayedFetch()",timeout),r,query);
- } else{
- os_timer = new os_Timer(null,r,query);
- os_delayedFetch(); // do it now!
+ // update the contents of the search box
+ if( updateSearchBox ) {
+ os_updateSearchQuery( r, newText );
}
-
-}
-/** Change the highlighted row (i.e. suggestion), from position cur to next */
-function os_changeHighlight(r, cur, next, updateSearchBox){
- if (next >= r.resultCount)
- next = r.resultCount-1;
- if (next < -1)
- next = -1;
- r.selected = next;
- if (cur == next)
- return; // nothing to do.
-
- if(cur >= 0){
- var curRow = document.getElementById(r.resultTable + cur);
- if(curRow != null)
- curRow.className = "os-suggest-result";
- }
- var newText;
- if(next >= 0){
- var nextRow = document.getElementById(r.resultTable + next);
- if(nextRow != null)
- nextRow.className = os_HighlightClass();
- newText = r.results[next];
- } else
- newText = r.original;
-
- // adjust the scrollbar if any
- if(r.containerCount < r.resultCount){
- var c = document.getElementById(r.container);
- var vStart = c.scrollTop / r.containerRow;
- var vEnd = vStart + r.containerCount;
- if(next < vStart)
- c.scrollTop = next * r.containerRow;
- else if(next >= vEnd)
- c.scrollTop = (next - r.containerCount + 1) * r.containerRow;
- }
-
- // update the contents of the search box
- if(updateSearchBox){
- os_updateSearchQuery(r,newText);
- }
}
function os_HighlightClass() {
var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/);
- if (match) {
- var webKitVersion = parseInt(match[1]);
- if (webKitVersion < 523) {
+ if ( match ) {
+ var webKitVersion = parseInt( match[1] );
+ if ( webKitVersion < 523 ) {
// CSS system highlight colors broken on old Safari
// https://bugs.webkit.org/show_bug.cgi?id=6129
// Safari 3.0.4, 3.1 known ok
- return "os-suggest-result-hl-webkit";
+ return 'os-suggest-result-hl-webkit';
}
}
- return "os-suggest-result-hl";
+ return 'os-suggest-result-hl';
}
-function os_updateSearchQuery(r,newText){
- document.getElementById(r.searchbox).value = newText;
- r.query = newText;
-}
-
-/** Find event target */
-function os_getTarget(e){
- if (!e) e = window.event;
- if (e.target) return e.target;
- else if (e.srcElement) return e.srcElement;
- else return null;
+function os_updateSearchQuery( r, newText ) {
+ document.getElementById( r.searchbox ).value = newText;
+ r.query = newText;
}
-
-/********************
- * Keyboard events
- ********************/
-
-/** Event handler that will fetch results on keyup */
-function os_eventKeyup(e){
- var targ = os_getTarget(e);
- var r = os_map[targ.id];
- if(r == null)
- return; // not our event
-
- // some browsers won't generate keypressed for arrow keys, catch it
- if(os_keypressed_count == 0){
- os_processKey(r,os_cur_keypressed,targ);
- }
- var query = targ.value;
- os_fetchResults(r,query,os_search_timeout);
-}
-
-/** catch arrows up/down and escape to hide the suggestions */
-function os_processKey(r,keypressed,targ){
- if (keypressed == 40){ // Arrow Down
- if (r.visible) {
- os_changeHighlight(r, r.selected, r.selected+1, true);
- } else if(os_timer == null){
- // user wants to get suggestions now
- r.query = "";
- os_fetchResults(r,targ.value,0);
- }
- } else if (keypressed == 38){ // Arrow Up
- if (r.visible){
- os_changeHighlight(r, r.selected, r.selected-1, true);
- }
- } else if(keypressed == 27){ // Escape
- document.getElementById(r.searchbox).value = r.original;
- r.query = r.original;
- os_hideResults(r);
- } else if(r.query != document.getElementById(r.searchbox).value){
- // os_hideResults(r); // don't show old suggestions
- }
-}
-
-/** When keys is held down use a timer to output regular events */
-function os_eventKeypress(e){
- var targ = os_getTarget(e);
- var r = os_map[targ.id];
- if(r == null)
- return; // not our event
-
- var keypressed = os_cur_keypressed;
- if(keypressed == 38 || keypressed == 40){
- var d = new Date()
- var now = d.getTime();
- if(now - os_last_keypress < 120){
- os_last_keypress = now;
- return;
- }
- }
-
- os_keypressed_count++;
- os_processKey(r,keypressed,targ);
-}
-
-/** Catch the key code (Firefox bug) */
-function os_eventKeydown(e){
- if (!e) e = window.event;
- var targ = os_getTarget(e);
- var r = os_map[targ.id];
- if(r == null)
- return; // not our event
-
- os_mouse_moved = false;
-
- os_cur_keypressed = (e.keyCode == undefined) ? e.which : e.keyCode;
- os_last_keypress = 0;
- os_keypressed_count = 0;
-}
-
-/** Event: loss of focus of input box */
-function os_eventBlur(e){
- var targ = os_getTarget(e);
- var r = os_map[targ.id];
- if(r == null)
- return; // not our event
- if(!os_mouse_pressed)
- os_hideResults(r);
-}
-
-/** Event: focus (catch only when stopped) */
-function os_eventFocus(e){
- // nothing happens here?
-}
-
-
-
/********************
* Mouse events
********************/
/** Mouse over the container */
-function os_eventMouseover(srcId, e){
- var targ = os_getTarget(e);
+function os_eventMouseover( srcId, e ) {
+ var targ = os_getTarget( e );
var r = os_map[srcId];
- if(r == null || !os_mouse_moved)
+ if( r == null || !os_mouse_moved ) {
return; // not our event
- var num = os_getNumberSuffix(targ.id);
- if(num >= 0)
- os_changeHighlight(r,r.selected,num,false);
-
+ }
+ var num = os_getNumberSuffix( targ.id );
+ if( num >= 0 ) {
+ os_changeHighlight( r, r.selected, num, false );
+ }
}
/* Get row where the event occured (from its id) */
-function os_getNumberSuffix(id){
- var num = id.substring(id.length-2);
- if( ! (num.charAt(0) >= '0' && num.charAt(0) <= '9') )
- num = num.substring(1);
- if(os_isNumber(num))
- return parseInt(num);
- else
+function os_getNumberSuffix( id ) {
+ var num = id.substring( id.length - 2 );
+ if( !( num.charAt( 0 ) >= '0' && num.charAt( 0 ) <= '9' ) ) {
+ num = num.substring( 1 );
+ }
+ if( os_isNumber( num ) ) {
+ return parseInt( num );
+ } else {
return -1;
+ }
}
/** Save mouse move as last action */
-function os_eventMousemove(srcId, e){
+function os_eventMousemove( srcId, e ) {
os_mouse_moved = true;
}
-/** Mouse button held down, register possible click */
-function os_eventMousedown(srcId, e){
- var targ = os_getTarget(e);
+/** Mouse button held down, register possible click */
+function os_eventMousedown( srcId, e ) {
+ var targ = os_getTarget( e );
var r = os_map[srcId];
- if(r == null)
+ if( r == null ) {
return; // not our event
- var num = os_getNumberSuffix(targ.id);
+ }
+ var num = os_getNumberSuffix( targ.id );
os_mouse_pressed = true;
- if(num >= 0){
+ if( num >= 0 ) {
os_mouse_num = num;
- // os_updateSearchQuery(r,r.results[num]);
+ // os_updateSearchQuery( r, r.results[num] );
}
// keep the focus on the search field
- document.getElementById(r.searchbox).focus();
+ document.getElementById( r.searchbox ).focus();
return false; // prevents selection
}
/** Mouse button released, check for click on some row */
-function os_eventMouseup(srcId, e){
- var targ = os_getTarget(e);
+function os_eventMouseup( srcId, e ) {
+ var targ = os_getTarget( e );
var r = os_map[srcId];
- if(r == null)
+ if( r == null ) {
return; // not our event
- var num = os_getNumberSuffix(targ.id);
+ }
+ var num = os_getNumberSuffix( targ.id );
- if(num >= 0 && os_mouse_num == num){
- os_updateSearchQuery(r,r.results[num]);
- os_hideResults(r);
- document.getElementById(r.searchform).submit();
+ if( num >= 0 && os_mouse_num == num ) {
+ os_updateSearchQuery( r, r.results[num] );
+ os_hideResults( r );
+ document.getElementById( r.searchform ).submit();
}
os_mouse_pressed = false;
// keep the focus on the search field
- document.getElementById(r.searchbox).focus();
+ document.getElementById( r.searchbox ).focus();
}
-/** Check if x is a valid integer */
-function os_isNumber(x){
- if(x == "" || isNaN(x))
- return false;
- for(var i=0;i<x.length;i++){
- var c = x.charAt(i);
- if( ! (c >= '0' && c <= '9') )
- return false;
- }
- return true;
-}
-
-
-/** When the form is submitted hide everything, cancel updates... */
-function os_eventOnsubmit(e){
- var targ = os_getTarget(e);
-
- os_is_stopped = true;
- // kill timed requests
- if(os_timer != null && os_timer.id != null){
- clearTimeout(os_timer.id);
- os_timer = null;
- }
- // Hide all suggestions
- for(i=0;i<os_autoload_inputs.length;i++){
- var r = os_map[os_autoload_inputs[i]];
- if(r != null){
- var b = document.getElementById(r.searchform);
- if(b != null && b == targ){
- // set query value so the handler won't try to fetch additional results
- r.query = document.getElementById(r.searchbox).value;
- }
- os_hideResults(r);
- }
- }
- return true;
-}
-
-function os_hookEvent(element, hookName, hookFunct) {
- if (element.addEventListener) {
- element.addEventListener(hookName, hookFunct, false);
- } else if (window.attachEvent) {
- element.attachEvent("on" + hookName, hookFunct);
- }
-}
-
-/** Init Result objects and event handlers */
-function os_initHandlers(name, formname, element){
- var r = new os_Results(name, formname);
- // event handler
- os_hookEvent(element, "keyup", function(event) { os_eventKeyup(event); });
- os_hookEvent(element, "keydown", function(event) { os_eventKeydown(event); });
- os_hookEvent(element, "keypress", function(event) { os_eventKeypress(event); });
- os_hookEvent(element, "blur", function(event) { os_eventBlur(event); });
- os_hookEvent(element, "focus", function(event) { os_eventFocus(event); });
- element.setAttribute("autocomplete","off");
- // stopping handler
- os_hookEvent(document.getElementById(formname), "submit", function(event){ return os_eventOnsubmit(event); });
- os_map[name] = r;
- // toggle link
- if(document.getElementById(r.toggle) == null){
- // TODO: disable this while we figure out a way for this to work in all browsers
- /* if(name=='searchInput'){
- // special case: place above the main search box
- var t = os_createToggle(r,"os-suggest-toggle");
- var searchBody = document.getElementById('searchBody');
- var first = searchBody.parentNode.firstChild.nextSibling.appendChild(t);
- } else{
- // default: place below search box to the right
- var t = os_createToggle(r,"os-suggest-toggle-def");
- var top = element.offsetTop + element.offsetHeight;
- var left = element.offsetLeft + element.offsetWidth;
- t.style.position = "absolute";
- t.style.top = top + "px";
- t.style.left = left + "px";
- element.parentNode.appendChild(t);
- // only now width gets calculated, shift right
- left -= t.offsetWidth;
- t.style.left = left + "px";
- t.style.visibility = "visible";
- } */
- }
-
-}
+/** Toggle stuff seems to be dead code? */
/** Return the span element that contains the toggle link */
-function os_createToggle(r,className){
- var t = document.createElement("span");
+function os_createToggle( r, className ) {
+ var t = document.createElement( 'span' );
t.className = className;
- t.setAttribute("id", r.toggle);
- var link = document.createElement("a");
- link.setAttribute("href","javascript:void(0);");
- link.onclick = function(){ os_toggle(r.searchbox,r.searchform) };
- var msg = document.createTextNode(wgMWSuggestMessages[0]);
- link.appendChild(msg);
- t.appendChild(link);
+ t.setAttribute( 'id', r.toggle );
+ var link = document.createElement( 'a' );
+ link.setAttribute( 'href', 'javascript:void(0);' );
+ link.onclick = function() { os_toggle( r.searchbox, r.searchform ); };
+ var msg = document.createTextNode( wgMWSuggestMessages[0] );
+ link.appendChild( msg );
+ t.appendChild( link );
return t;
}
/** Call when user clicks on some of the toggle links */
-function os_toggle(inputId,formName){
+function os_toggle( inputId, formName ) {
r = os_map[inputId];
var msg = '';
- if(r == null){
- os_enableSuggestionsOn(inputId,formName);
+ if( r == null ) {
+ os_enableSuggestionsOn( inputId, formName );
r = os_map[inputId];
msg = wgMWSuggestMessages[0];
} else{
- os_disableSuggestionsOn(inputId,formName);
+ os_disableSuggestionsOn( inputId, formName );
msg = wgMWSuggestMessages[1];
}
// change message
- var link = document.getElementById(r.toggle).firstChild;
- link.replaceChild(document.createTextNode(msg),link.firstChild);
-}
-
-/** Call this to enable suggestions on input (id=inputId), on a form (name=formName) */
-function os_enableSuggestionsOn(inputId, formName){
- os_initHandlers( inputId, formName, document.getElementById(inputId) );
-}
-
-/** Call this to disable suggestios on input box (id=inputId) */
-function os_disableSuggestionsOn(inputId){
- r = os_map[inputId];
- if(r != null){
- // cancel/hide results
- os_timer = null;
- os_hideResults(r);
- // turn autocomplete on !
- document.getElementById(inputId).setAttribute("autocomplete","on");
- // remove descriptor
- os_map[inputId] = null;
- }
-}
-
-/** Initialization, call upon page onload */
-function os_MWSuggestInit() {
- for(i=0;i<os_autoload_inputs.length;i++){
- var id = os_autoload_inputs[i];
- var form = os_autoload_forms[i];
- element = document.getElementById( id );
- if(element != null)
- os_initHandlers(id,form,element);
- }
+ var link = document.getElementById( r.toggle ).firstChild;
+ link.replaceChild( document.createTextNode( msg ), link.firstChild );
}
-hookEvent("load", os_MWSuggestInit);
+hookEvent( 'load', os_MWSuggestInit );
diff --git a/skins/common/oldshared.css b/skins/common/oldshared.css
index 3acd5e23..1bd1544e 100644
--- a/skins/common/oldshared.css
+++ b/skins/common/oldshared.css
@@ -144,6 +144,9 @@ img { border: none; }
}
/* preference page with js-genrated toc */
+#mw-pref-clear {
+ clear: both;
+}
#preftoc {
float: left;
margin: 1em 1em 1em 1em;
@@ -159,12 +162,12 @@ img { border: none; }
display: block;
color: #005189;
}
-#prefcontrol {
+.mw-prefs-buttons {
clear: left;
float: left;
margin-top: 1em;
}
-div.prefsectiontip {
+div.htmlform-tip {
font-size: 94%;
margin-top: 0.4em;
color: #666;
@@ -214,38 +217,8 @@ span.updatedmarker {
background-color:#00FF00;
}
-table.gallery {
- border: 1px solid #cccccc;
- margin: 2px;
- padding: 2px;
- background-color:#ffffff;
-}
-
-table.gallery tr {
- vertical-align:top;
-}
-
-table.gallery td {
- vertical-align:top;
- background-color:#f9f9f9;
- border: solid 2px white;
-}
-
div.gallerybox {
- margin: 2px;
- width: 150px;
-}
-
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #cccccc;
- margin: 2px;
-}
-
-div.gallerytext {
- overflow: hidden;
- font-size: 94%;
- padding: 2px 4px;
+ width: 150px;
}
span.comment {
@@ -319,12 +292,6 @@ table.collapsed tr.collapsable {
clear: both;
}
-#mw_trackbacks {
- border: solid 1px #bbbbff;
- background-color: #eeeeff;
- padding: 0.2em;
-}
-
/* Allmessages table */
#allmessagestable th {
@@ -347,15 +314,6 @@ table.collapsed tr.collapsable {
display: none;
}
-/* Keep this temporarily so that cached pages will display right */
-table.gallery td.galleryheader {
- text-align: center;
- font-weight: bold;
-}
-table.gallery caption {
- font-weight: bold;
-}
-
div.multipageimagenavbox {
border: solid 1px silver;
padding: 4px;
@@ -416,3 +374,10 @@ table.multipageimage td {
form#specialpages {
display: inline;
}
+
+body {
+ background-color: #ffffec;
+}
+body.ns-0 {
+ background-color: white;
+}
diff --git a/skins/common/prefs.js b/skins/common/prefs.js
index c2554c00..ca55632c 100644
--- a/skins/common/prefs.js
+++ b/skins/common/prefs.js
@@ -1,73 +1,74 @@
-
// generate toc from prefs form, fold sections
// XXX: needs testing on IE/Mac and safari
// more comments to follow
function tabbedprefs() {
- var prefform = document.getElementById('preferences');
- if (!prefform || !document.createElement) {
+ var prefform = document.getElementById( 'preferences' );
+ if ( !prefform || !document.createElement ) {
return;
}
- if (prefform.nodeName.toLowerCase() == 'a') {
+ if ( prefform.nodeName.toLowerCase() == 'a' ) {
return; // Occasional IE problem
}
prefform.className = prefform.className + 'jsprefs';
var sections = [];
var children = prefform.childNodes;
var seci = 0;
- for (var i = 0; i < children.length; i++) {
- if (children[i].nodeName.toLowerCase() == 'fieldset') {
+ for ( var i = 0; i < children.length; i++ ) {
+ if ( children[i].nodeName.toLowerCase() == 'fieldset' ) {
children[i].id = 'prefsection-' + seci;
children[i].className = 'prefsection';
- if (is_opera || is_khtml) {
+ if ( is_opera ) {
children[i].className = 'prefsection operaprefsection';
}
var legends = children[i].getElementsByTagName('legend');
sections[seci] = {};
- if (legends[0]) legends[0].className = 'mainLegend';
- if (legends[0] && legends[0].firstChild.nodeValue) {
+ if ( legends[0] ) {
+ legends[0].className = 'mainLegend';
+ }
+ if ( legends[0] && legends[0].firstChild.nodeValue ) {
sections[seci].text = legends[0].firstChild.nodeValue;
} else {
sections[seci].text = '# ' + seci;
}
sections[seci].secid = children[i].id;
seci++;
- if (sections.length != 1) {
+ if ( sections.length != 1 ) {
children[i].style.display = 'none';
} else {
var selectedid = children[i].id;
}
}
}
- var toc = document.createElement('ul');
+ var toc = document.createElement( 'ul' );
toc.id = 'preftoc';
toc.selectedid = selectedid;
- for (i = 0; i < sections.length; i++) {
- var li = document.createElement('li');
- if (i === 0) {
+ for ( i = 0; i < sections.length; i++ ) {
+ var li = document.createElement( 'li' );
+ if ( i === 0 ) {
li.className = 'selected';
}
- var a = document.createElement('a');
+ var a = document.createElement( 'a' );
a.href = '#' + sections[i].secid;
a.onmousedown = a.onclick = uncoversection;
- a.appendChild(document.createTextNode(sections[i].text));
+ a.appendChild( document.createTextNode( sections[i].text ) );
a.secid = sections[i].secid;
- li.appendChild(a);
- toc.appendChild(li);
+ li.appendChild( a );
+ toc.appendChild( li );
}
- prefform.parentNode.insertBefore(toc, prefform.parentNode.childNodes[0]);
- document.getElementById('prefsubmit').id = 'prefcontrol';
+ prefform.parentNode.insertBefore( toc, prefform.parentNode.childNodes[0] );
+ document.getElementById( 'prefsubmit' ).id = 'prefcontrol';
}
function uncoversection() {
var oldsecid = this.parentNode.parentNode.selectedid;
- var newsec = document.getElementById(this.secid);
- if (oldsecid != this.secid) {
- var ul = document.getElementById('preftoc');
- document.getElementById(oldsecid).style.display = 'none';
+ var newsec = document.getElementById( this.secid );
+ if ( oldsecid != this.secid ) {
+ var ul = document.getElementById( 'preftoc' );
+ document.getElementById( oldsecid ).style.display = 'none';
newsec.style.display = 'block';
ul.selectedid = this.secid;
- var lis = ul.getElementsByTagName('li');
- for (var i = 0; i< lis.length; i++) {
+ var lis = ul.getElementsByTagName( 'li' );
+ for ( var i = 0; i< lis.length; i++ ) {
lis[i].className = '';
}
this.parentNode.className = 'selected';
@@ -77,25 +78,29 @@ function uncoversection() {
// Timezone stuff
// tz in format [+-]HHMM
-function checkTimezone(tz, msg) {
+function checkTimezone( tz, msg ) {
var localclock = new Date();
// returns negative offset from GMT in minutes
var tzRaw = localclock.getTimezoneOffset();
- var tzHour = Math.floor( Math.abs(tzRaw) / 60);
- var tzMin = Math.abs(tzRaw) % 60;
- var tzString = ((tzRaw >= 0) ? "-" : "+") + ((tzHour < 10) ? "0" : "") + tzHour + ((tzMin < 10) ? "0" : "") + tzMin;
- if (tz != tzString) {
+ var tzHour = Math.floor( Math.abs( tzRaw ) / 60 );
+ var tzMin = Math.abs( tzRaw ) % 60;
+ var tzString = ( ( tzRaw >= 0 ) ? '-' : '+' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
+ if ( tz != tzString ) {
var junk = msg.split('$1');
- document.write(junk[0] + "UTC" + tzString + junk[1]);
+ document.write( junk[0] + 'UTC' + tzString + junk[1] );
}
}
-function unhidetzbutton() {
- var tzb = document.getElementById('guesstimezonebutton');
- if (tzb) {
- tzb.style.display = 'inline';
+function timezoneSetup() {
+ var tzSelect = document.getElementById( 'mw-input-timecorrection' );
+ var tzTextbox = document.getElementById( 'mw-input-timecorrection-other' );
+
+ if ( tzSelect && tzTextbox ) {
+ addHandler( tzSelect, 'change', function( e ) { updateTimezoneSelection( false ); } );
+ addHandler( tzTextbox, 'blur', function( e ) { updateTimezoneSelection( true ); } );
}
- updateTimezoneSelection(false);
+
+ updateTimezoneSelection( false );
}
// in [-]HH:MM format...
@@ -105,60 +110,108 @@ function fetchTimezone() {
var localclock = new Date();
// returns negative offset from GMT in minutes
var tzRaw = localclock.getTimezoneOffset();
- var tzHour = Math.floor( Math.abs(tzRaw) / 60);
- var tzMin = Math.abs(tzRaw) % 60;
- var tzString = ((tzRaw >= 0) ? "-" : "") + ((tzHour < 10) ? "0" : "") + tzHour +
- ":" + ((tzMin < 10) ? "0" : "") + tzMin;
+ var tzHour = Math.floor( Math.abs( tzRaw ) / 60 );
+ var tzMin = Math.abs( tzRaw ) % 60;
+ var tzString = ( ( tzRaw >= 0 ) ? '-' : '' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
+ ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
return tzString;
}
-function guessTimezone(box) {
- document.getElementsByName("wpHourDiff")[0].value = fetchTimezone();
- updateTimezoneSelection(true);
+function guessTimezone() {
+ var textbox = document.getElementById( 'mw-input-timecorrection-other' );
+ var selector = document.getElementById( 'mw-input-timecorrection' );
+
+ selector.value = 'other';
+ textbox.value = fetchTimezone();
+ textbox.disabled = false; // The changed handler doesn't trip, obviously.
+ updateTimezoneSelection( true );
}
-function updateTimezoneSelection(force_offset) {
- var wpTimeZone = document.getElementsByName("wpTimeZone")[0];
- var wpHourDiff = document.getElementsByName("wpHourDiff")[0];
- var wpLocalTime = document.getElementById("wpLocalTime");
- var wpServerTime = document.getElementsByName("wpServerTime")[0];
+function updateTimezoneSelection( force_offset ) {
+ var selector = document.getElementById( 'mw-input-timecorrection' );
+
+ if ( selector.value == 'guess' ) {
+ return guessTimezone();
+ }
+
+ var textbox = document.getElementById( 'mw-input-timecorrection-other' );
+ var localtimeHolder = document.getElementById( 'wpLocalTime' );
+ var servertime = document.getElementsByName( 'wpServerTime' )[0].value;
var minDiff = 0;
- if (force_offset) wpTimeZone.selectedIndex = 1;
- if (wpTimeZone.selectedIndex == 1) {
- wpHourDiff.disabled = false;
- var diffArr = wpHourDiff.value.split(':');
- if (diffArr.length == 1) {
- minDiff = parseInt(diffArr[0], 10) * 60;
+ // Compatibility code.
+ if ( !selector.value ) {
+ selector.value = selector.options[selector.selectedIndex].value;
+ }
+
+ // Handle force_offset
+ if ( force_offset ) {
+ selector.value = 'other';
+ }
+
+ // Get min_diff
+ if ( selector.value == 'other' ) {
+ // Grab data from the textbox, parse it.
+ var diffArr = textbox.value.split(':');
+ if ( diffArr.length == 1 ) {
+ // Specification is of the form [-]XX
+ minDiff = parseInt( diffArr[0], 10 ) * 60;
} else {
- minDiff = Math.abs(parseInt(diffArr[0], 10))*60 + parseInt(diffArr[1], 10);
- if (parseInt(diffArr[0], 10) < 0) minDiff = -minDiff;
+ // Specification is of the form [-]XX:XX
+ minDiff = Math.abs( parseInt( diffArr[0], 10 ) ) * 60 + parseInt( diffArr[1], 10 );
+ if ( parseInt( diffArr[0], 10 ) < 0 ) {
+ minDiff = -minDiff;
+ }
}
} else {
- wpHourDiff.disabled = true;
- var diffArr = wpTimeZone.options[wpTimeZone.selectedIndex].value.split('|');
- minDiff = parseInt(diffArr[1], 10);
+ // Grab data from the selector value
+ var diffArr = selector.value.split('|');
+ minDiff = parseInt( diffArr[1], 10 );
+ }
+
+ // Gracefully handle non-numbers.
+ if ( isNaN( minDiff ) ) {
+ minDiff = 0;
+ }
+
+ // Determine local time from server time and minutes difference, for display.
+ var localTime = parseInt( servertime, 10 ) + minDiff;
+
+ // Bring time within the [0,1440) range.
+ while ( localTime < 0 ) {
+ localTime += 1440;
+ }
+ while ( localTime >= 1440 ) {
+ localTime -= 1440;
}
- if (isNaN(minDiff)) minDiff = 0;
- var localTime = parseInt(wpServerTime.value, 10) + minDiff;
- while (localTime < 0) localTime += 1440;
- while (localTime >= 1440) localTime -= 1440;
- var hour = String(Math.floor(localTime/60));
- if (hour.length<2) hour = '0'+hour;
+ // Split to hour and minute
+ var hour = String( Math.floor( localTime / 60 ) );
+ if ( hour.length < 2 ) {
+ hour = '0' + hour;
+ }
var min = String(localTime%60);
- if (min.length<2) min = '0'+min;
- changeText(wpLocalTime, hour+':'+min);
+ if ( min.length < 2 ) {
+ min = '0' + min;
+ }
+ changeText( localtimeHolder, hour + ':' + min );
- if (wpTimeZone.selectedIndex != 1) {
- hour = String(Math.abs(Math.floor(minDiff/60)));
- if (hour.length<2) hour = '0'+hour;
- if (minDiff < 0) hour = '-'+hour;
+ // If the user selected from the drop-down, fill the offset field.
+ if ( selector.value != 'other' ) {
+ hour = String( Math.abs( Math.floor( minDiff / 60 ) ) );
+ if ( hour.length < 2 ) {
+ hour = '0' + hour;
+ }
+ if ( minDiff < 0 ) {
+ hour = '-' + hour;
+ }
min = String(minDiff%60);
- if (min.length<2) min = '0'+min;
- wpHourDiff.value = hour+':'+min;
+ if ( min.length < 2 ) {
+ min = '0' + min;
+ }
+ textbox.value = hour + ':' + min;
}
}
-hookEvent("load", unhidetzbutton);
-hookEvent("load", tabbedprefs);
+addOnloadHook( timezoneSetup );
+addOnloadHook( tabbedprefs );
diff --git a/skins/common/preview.js b/skins/common/preview.js
index faf611f0..db5633d0 100644
--- a/skins/common/preview.js
+++ b/skins/common/preview.js
@@ -1,175 +1,53 @@
/**
* Live preview script for MediaWiki
- *
- * 2007-04-25 – Nikerabbit:
- * Worked around text cutoff in mozilla-based browsers
- * Support for categories
*/
+function doLivePreview( e ) {
+ e.preventDefault();
+ var previewText = $j('#wpTextbox1').val();
-lpIdPreview = 'wikiPreview';
-lpIdCategories = 'catlinks';
-lpIdDiff = 'wikiDiff';
-
-/*
- * Returns XMLHttpRequest based on browser support or null
- */
-function openXMLHttpRequest() {
- if( window.XMLHttpRequest ) {
- return new XMLHttpRequest();
- } else if( window.ActiveXObject && navigator.platform != 'MacPPC' ) {
- // IE/Mac has an ActiveXObject but it doesn't work.
- return new ActiveXObject("Microsoft.XMLHTTP");
- } else {
- return null;
- }
-}
-
-/**
- * Returns true if could open the request,
- * false otherwise (eg no browser support).
- */
-function lpDoPreview(text, postUrl) {
- lpRequest = openXMLHttpRequest();
- if( !lpRequest ) return false;
-
- lpRequest.onreadystatechange = lpStatusUpdate;
- lpRequest.open("POST", postUrl, true);
-
- var postData = 'wpTextbox1=' + encodeURIComponent(text);
- lpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- lpRequest.send(postData);
- return true;
-}
-
-function lpStatusUpdate() {
-
- /* We are at some stage of loading */
- if (lpRequest.readyState > 0 && lpRequest.readyState < 4) {
- notify(i18n(wgLivepreviewMessageLoading));
- }
-
- /* Not loaded yet */
- if(lpRequest.readyState != 4) {
- return;
- }
-
- /* We got response, bug it not what we wanted */
- if( lpRequest.status != 200 ) {
- var keys = new Array();
- keys[0] = lpRequest.status;
- keys[1] = lpRequest.statusText;
- window.alert(i18n(wgLivepreviewMessageError, keys));
- lpShowNormalPreview();
- return;
- }
-
- /* All good */
- dismissNotify(i18n(wgLivepreviewMessageReady), 750);
+ var editToken = $j( '[name="wpEditToken"]' ).attr( 'value' );
+ var editTime = $j( '[name="wpEdittime"]' ).attr( 'value' );
+ var startTime = $j( '[name="wpStarttime"]' ).attr( 'value' );
+ var postData = { 'action' : 'submit', 'wpTextbox1' : previewText, 'wpPreview' : true,
+ 'wpEditToken' : editToken, 'wpEdittime': editTime, 'wpStarttime': startTime, 'title' : wgPageName };
- var XMLObject = lpRequest.responseXML.documentElement;
-
-
- /* Work around Firefox (Gecko?) limitation where it shows only the first 4096
- * bytes of data. Ref: http://www.thescripts.com/forum/thread482760.html
- */
- XMLObject.normalize();
-
- var previewElement = XMLObject.getElementsByTagName('preview')[0];
- var categoryElement = XMLObject.getElementsByTagName('category')[0];
+ // Hide active diff, used templates, old preview if shown
+ var copyElements = ['#wikiPreview', '.templatesUsed', '.hiddencats',
+ '#catlinks'];
+ var copySelector = copyElements.join(',');
- /* Hide the active diff if it exists */
- var diff = document.getElementById(lpIdDiff);
- if ( diff ) { diff.style.display = 'none'; }
-
- /* Inject preview */
- var previewContainer = document.getElementById( lpIdPreview );
- if ( previewContainer && previewElement ) {
- previewContainer.innerHTML = previewElement.firstChild.data;
- previewContainer.style.display = 'block';
- } else {
- /* Should never happen */
- window.alert(i18n(wgLivepreviewMessageFailed));
- lpShowNormalPreview();
- return;
- }
-
-
- /* Inject categories */
- var categoryContainer = document.getElementById( lpIdCategories );
- if ( categoryElement && categoryElement.firstChild ) {
- if ( categoryContainer ) {
- categoryContainer.innerHTML = categoryElement.firstChild.data;
- /* May be hidden */
- categoryContainer.style.display = 'block';
- } else {
- /* Just dump them somewhere */
- /* previewContainer.innerHTML += categoryElement.firstChild.data;*/
- }
- } else {
- /* Nothing to show, hide old data */
- if ( categoryContainer ) {
- categoryContainer.style.display = 'none';
- }
- }
-
-}
-
-function lpShowNormalPreview() {
- var fallback = document.getElementById('wpPreview');
- if ( fallback ) { fallback.style.display = 'inline'; }
-}
-
-
-// TODO: move elsewhere
-/* Small non-intrusive popup which can be used for example to notify the user
- * about completed AJAX action. Supports only one notify at a time.
- */
-function notify(message) {
- var notifyElement = document.getElementById('mw-js-notify');
- if ( !notifyElement ) {
- createNotify();
- var notifyElement = document.getElementById('mw-js-notify');
- }
- notifyElement.style.display = 'block';
- notifyElement.innerHTML = message;
-}
-
-function dismissNotify(message, timeout) {
- var notifyElement = document.getElementById('mw-js-notify');
- if ( notifyElement ) {
- if ( timeout == 0 ) {
- notifyElement.style.display = 'none';
- } else {
- notify(message);
- setTimeout("dismissNotify('', 0)", timeout);
- }
- }
-}
-
-function createNotify() {
- var div = document.createElement("div");
- var txt = '###PLACEHOLDER###'
- var txtNode = document.createTextNode(txt);
- div.appendChild(txtNode);
- div.id = 'mw-js-notify';
- // TODO: move styles to css
- div.setAttribute('style',
- 'display: none; position: fixed; bottom: 0px; right: 0px; color: white; background-color: DarkRed; z-index: 5; padding: 0.1em 1em 0.1em 1em; font-size: 120%;');
- var body = document.getElementsByTagName('body')[0];
- body.appendChild(div);
+ $j.each( copyElements, function(k,v) { $j(v).fadeOut('fast'); } );
+
+ // Display a loading graphic
+ var loadSpinner = $j('<div class="mw-ajax-loader"/>');
+ $j('#wikiPreview').before( loadSpinner );
+
+ var page = $j('<div/>');
+ page.load( wgScript+'?action=submit '+copySelector,
+ postData,
+ function() {
+
+ for( var i=0; i<copyElements.length; ++i) {
+ // For all the specified elements, find the elements in the loaded page
+ // and the real page, empty the element in the real page, and fill it
+ // with the content of the loaded page
+ var copyContent = page.find( copyElements[i] ).contents();
+ $j(copyElements[i]).empty().append( copyContent );
+ var newClasses = page.find( copyElements[i] ).attr('class');
+ $j(copyElements[i]).attr( 'class', newClasses );
+ }
+
+ $j.each( copyElements, function(k,v) {
+ // Don't belligerently show elements that are supposed to be hidden
+ $j(v).fadeIn( 'fast', function() { $j(this).css('display', ''); } );
+ } );
+
+ loadSpinner.remove();
+ } );
}
-
-
-/* Helper function similar to wfMsgReplaceArgs() */
-function i18n(message, keys) {
- var localMessage = message;
- if ( !keys ) { return localMessage; }
- for( var i = 0; i < keys.length; i++) {
- var myregexp = new RegExp("\\$"+(i+1), 'g');
- localMessage = localMessage.replace(myregexp, keys[i]);
- }
- return localMessage;
-} \ No newline at end of file
+$j(document).ready( function() {
+ $j('#wpPreview').click( doLivePreview );
+} );
diff --git a/skins/common/protect.js b/skins/common/protect.js
index d9650c82..e037f08a 100644
--- a/skins/common/protect.js
+++ b/skins/common/protect.js
@@ -22,7 +22,7 @@ var ProtectionForm = {
var boxbody = box.getElementsByTagName('tbody')[0]
var row = document.createElement( 'tr' );
- boxbody.insertBefore( row, boxbody.firstChild );
+ boxbody.insertBefore( row, boxbody.firstChild.nextSibling );
this.existingMatch = opts.existingMatch;
diff --git a/skins/common/search.js b/skins/common/search.js
new file mode 100644
index 00000000..ff114291
--- /dev/null
+++ b/skins/common/search.js
@@ -0,0 +1,50 @@
+// JS specific to Special:Search
+
+// change the search link to what user entered
+function mwSearchHeaderClick( obj ) {
+ var searchbox = document.getElementById( 'searchText' );
+ if( searchbox === null ) {
+ searchbox = document.getElementById( 'powerSearchText' );
+ }
+ if( searchbox === null ) {
+ return; // should always have either normal or advanced search
+ }
+
+ var searchterm = searchbox.value;
+ var parts = obj.href.split( 'search=' );
+ var lastpart = '';
+ var prefix = 'search=';
+ if( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
+ lastpart = parts[1].substring( parts[1].indexOf('&') );
+ } else {
+ prefix = '&search=';
+ }
+ obj.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
+}
+
+function mwToggleSearchCheckboxes( btn ) {
+ if( !document.getElementById ) {
+ return;
+ }
+
+ var nsInputs = document.getElementById( 'powersearch' ).getElementsByTagName( 'input' );
+ var isChecked = false;
+
+ for ( var i = 0; i < nsInputs.length; i++ ) {
+ var pattern = /^ns/;
+ if ( ( nsInputs[i].type == 'checkbox' ) && ( pattern.test( nsInputs[i].name ) ) ) {
+ switch ( btn ) {
+ case 'none':
+ if ( nsInputs[i].checked ) {
+ nsInputs[i].checked = false;
+ }
+ break;
+ case 'all':
+ if ( !nsInputs[i].checked ) {
+ nsInputs[i].checked = true;
+ }
+ break;
+ }
+ }
+ }
+}
diff --git a/skins/common/shared.css b/skins/common/shared.css
index bb08c648..674d3626 100644
--- a/skins/common/shared.css
+++ b/skins/common/shared.css
@@ -3,8 +3,22 @@
* careful what you put in here, since what looks good in one skin may not in
* another, but don't ignore the poor non-Monobook users either.
*/
-.mw-plusminus-null { color: #aaa; }
+/* Colored watchlist and recent changes numbers */
+.mw-plusminus-pos { color: #006400; } /* dark green */
+.mw-plusminus-neg { color: #8b0000; } /* dark red */
+.mw-plusminus-null { color: #aaa; } /* gray */
+
+/* Comment and username portions of RC entries */
+span.comment {
+ font-style: italic;
+}
+
+span.changedby {
+ font-size: 95%;
+}
+
+/* Math */
.texvc { direction: ltr; unicode-bidi: embed; }
img.tex { vertical-align: middle; }
span.texhtml { font-family: serif; }
@@ -32,16 +46,13 @@ div#mw-js-message {
/**
* File histories
*/
-table.filehistory {
- border:1px solid #ccc;
- border-collapse:collapse;
+h2#filehistory {
+ clear: both;
}
table.filehistory th,
table.filehistory td {
- padding: 0 0.2em 0 0.2em;
vertical-align:top;
- border:1px solid #ccc;
}
table.filehistory th {
text-align: left;
@@ -65,6 +76,23 @@ li span.deleted, span.history-deleted {
}
/**
+ * Patrol stuff
+ */
+.not-patrolled {
+ background-color: #ffa;
+}
+
+.unpatrolled {
+ font-weight: bold;
+ color: red;
+}
+
+div.patrollink {
+ font-size: 75%;
+ text-align: right;
+}
+
+/**
* Forms
*/
body.ltr td.mw-label { text-align: right; }
@@ -75,8 +103,12 @@ body.rtl td.mw-input { text-align: right; }
body.rtl td.mw-submit { text-align: right; }
td.mw-label { vertical-align: top; }
+.prefsection td.mw-label { width: 20%; }
+.prefsection table { width: 100%; }
td.mw-submit { white-space: nowrap; }
+table.mw-htmlform-nolabel td.mw-label { width: 0 !important; }
+
/**
* Image captions
*/
@@ -94,25 +126,151 @@ body.ltr .magnify { float:right; }
/* Convenience links to edit block, delete and protect reasons */
p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
+p.mw-filedelete-editreasons, p.mw-delete-editreasons,
+p.mw-revdel-editreasons {
font-size: 90%;
float: right;
}
/* Search results */
+.searchresults {
+}
+
+.searchresults p {
+ margin-left: 0.4em;
+ margin-top: 1em;
+ margin-bottom: 1.2em;
+}
+
div.searchresult {
font-size: 95%;
width:38em;
}
+
+.mw-search-results {
+ margin-left: 0.4em;
+}
+
.mw-search-results li {
padding-bottom: 1em;
list-style:none;
+ list-style-image:none;
+}
+.mw-search-results li a {
+ font-size: 108%;
}
+
.mw-search-result-data {
color: green;
font-size: 97%;
}
+.mw-search-formheader {
+ background-color: #f3f3f3;
+ margin-top: 1em;
+ border: 1px solid silver;
+}
+.mw-search-formheader div.search-types {
+ float:left;
+ padding-left: 0.25em;
+}
+.rtl .mw-search-formheader div.search-types {
+ float: right;
+}
+.mw-search-formheader div.search-types ul {
+ margin: 0 !important;
+ padding: 0 !important;
+ list-style: none !important;
+}
+.mw-search-formheader div.search-types ul li {
+ float: left;
+ margin: 0;
+ padding: 0;
+}
+.mw-search-formheader div.search-types ul li a {
+ display: block;
+ padding: 0.5em;
+}
+.mw-search-formheader div.search-types ul li.current a {
+ color: #333333;
+ cursor: default;
+}
+.mw-search-formheader div.search-types ul li.current a:hover {
+ text-decoration: none;
+}
+.mw-search-formheader div.results-info {
+ float: right;
+ padding: 0.5em;
+ padding-right: 0.75em;
+}
+.mw-search-formheader div.results-info ul {
+ margin: 0 !important;
+ padding: 0 !important;
+ list-style: none !important;
+}
+.mw-search-formheader div.results-info ul li {
+ float: right;
+ margin: 0;
+ padding: 0;
+}
+fieldset#mw-searchoptions {
+ margin: 0;
+ padding-left: 0.75em !important;
+ padding-right: 0.75em !important;
+ padding-bottom: 0.5em !important;
+ padding-top: 0.5em !important;
+ border: none;
+ background-color: #f9f9f9;
+ border: 1px solid silver !important;
+ border-top-width: 0 !important;
+}
+fieldset#mw-searchoptions legend {
+ display: none;
+}
+fieldset#mw-searchoptions h4 {
+ padding: 0;
+ margin: 0;
+ float: left;
+}
+.rtl fieldset#mw-searchoptions h4 {
+ float: right;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox {
+ float: right;
+}
+.rtl fieldset#mw-searchoptions div#mw-search-togglebox {
+ float: left;
+}
+
+fieldset#mw-searchoptions div#mw-search-togglebox label {
+ margin-right: 0.25em;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox input {
+ margin-left: 0.25em;
+}
+fieldset#mw-searchoptions table {
+ float: left;
+ margin-right: 3em;
+}
+fieldset#mw-searchoptions table td {
+ padding-right: 1em;
+}
+.rtl fieldset#mw-searchoptions table td {
+ padding-left: 1em;
+ padding-right: 0;
+}
+body.rtl fieldset#mw-searchoptions table {
+ margin-right: 0;
+ margin-left: 3em;
+ float: right;
+}
+fieldset#mw-searchoptions div.divider {
+ clear: both;
+ border-bottom: 1px solid #DDDDDD;
+ padding-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
td#mw-search-menu {
padding-left:6em;
font-size:85%;
@@ -127,6 +285,10 @@ div#mw-search-interwiki {
margin-top: 2ex;
}
+.rtl div#mw-search-interwiki {
+ float: left;
+}
+
div#mw-search-interwiki li {
font-size: 95%;
}
@@ -136,14 +298,38 @@ div#mw-search-interwiki li {
font-size: 90%;
}
+.rtl .mw-search-interwiki-more {
+ float: left;
+}
+
+div#mw-search-interwiki-caption {
+ text-align: center;
+ font-weight: bold;
+ font-size: 95%;
+}
+
+.mw-search-interwiki-project {
+ font-size: 97%;
+ text-align: left;
+ padding-left: 0.2em;
+ padding-right: 0.15em;
+ padding-bottom: 0.2em;
+ padding-top: 0.15em;
+ background-color:#ececec;
+ border-top:1px solid #BBBBBB;
+}
+
+.rtl .mw-search-interwiki-project {
+ text-align: right;
+}
+
span.searchalttitle {
font-size: 95%;
}
div.searchdidyoumean {
font-size: 127%;
- margin-bottom: 1ex;
- margin-top: 1ex;
+ margin-top: 0.8em;
/* Note that this color won't affect the link, as desired. */
color: #c00;
}
@@ -156,14 +342,28 @@ div.searchdidyoumean em {
font-weight: bold;
}
-div.searchresults {
- border:1px solid darkblue;
- padding-top: 10px;
- padding-bottom: 10px;
- padding-left: 20px;
- padding-right: 20px;
+table#mw-search-top-table {
+ background-color: transparent;
}
+
+/*
+ * Advanced PowerSearch box
+ */
+
+td#mw-search-togglebox {
+ text-align: right;
+}
+
+table#mw-search-powertable {
+ width:100%;
+}
+
+form#powersearch {
+ clear: both;
+}
+
+
/*
* UserRights stuff
*/
@@ -175,48 +375,47 @@ table.mw-userrights-groups * td,table.mw-userrights-groups * th {
padding-right: 1.5em;
}
-/*
+/*
* OpenSearch ajax suggestions
*/
.os-suggest {
- overflow: auto;
- overflow-x: hidden;
+ overflow: auto;
+ overflow-x: hidden;
position: absolute;
top: 0px;
left: 0px;
width: 0px;
- background-color: white;
+ background-color: white;
background-color: Window;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
- z-index:99;
- visibility:hidden;
- font-size:95%;
+ z-index:99;
+ font-size:95%;
}
table.os-suggest-results {
font-size: 95%;
- cursor: pointer;
+ cursor: pointer;
border: 0;
border-collapse: collapse;
width: 100%;
}
-td.os-suggest-result, td.os-suggest-result-hl {
+.os-suggest-result, .os-suggest-result-hl {
white-space: nowrap;
- background-color: white;
+ background-color: white;
background-color: Window;
color: black;
color: WindowText;
padding: 2px;
}
-td.os-suggest-result-hl,
-td.os-suggest-result-hl-webkit {
- background-color: #4C59A6;
+.os-suggest-result-hl,
+.os-suggest-result-hl-webkit {
+ background-color: #4C59A6;
color: white;
}
-td.os-suggest-result-hl {
+.os-suggest-result-hl {
/* System colors are misimplemented in Safari 3.0 and earlier,
making highlighted text illegible... */
background-color: Highlight;
@@ -224,7 +423,7 @@ td.os-suggest-result-hl {
}
.os-suggest-toggle {
- position: relative;
+ position: relative;
left: 1ex;
font-size: 65%;
}
@@ -250,30 +449,23 @@ td.os-suggest-result-hl {
border: 1px dashed #aaa;
}
-/*
- * Special:ListGroupRights styling
- * Special:Statistics styling
- * Special:Tags styling
-*/
+/** Generic minor/bot/newpage styling */
+.newpage, .minor, .bot {
+ font-weight: bold;
+}
-table.mw-listgrouprights-table,
-table.mw-statistics-table,
-table.mw-tags-table {
- border: 1px solid #ccc;
- border-collapse: collapse;
+/* Special:Contributions styling */
+.mw-uctop {
+ font-weight: bold;
}
+/* Special:ListGroupRights styling */
table.mw-listgrouprights-table tr {
vertical-align: top;
}
+.listgrouprights-revoked { text-decoration: line-through; }
-table.mw-listgrouprights-table td, table.mw-listgrouprights-table th,
-table.mw-statistics-table td, table.mw-statistics-table th,
-table.mw-tags-table td, table.mw-tags-table th {
- padding: 0.5em 0.2em 0.5em 0.2em;
- border: 1px solid #ccc;
-}
-
+/* Special:Statistics styling */
td.mw-statistics-numbers {
text-align: right;
}
@@ -300,6 +492,26 @@ td#mw-emailuser-sender, td#mw-emailuser-recipient {
font-weight: bold;
}
+/* Special:Allpages styling */
+table.allpageslist {
+ background-color: transparent;
+}
+table.mw-allpages-table-form, table.mw-allpages-table-chunk {
+ background-color: transparent;
+ width: 100%;
+}
+td.mw-allpages-alphaindexline {
+ text-align: right;
+}
+td.mw-allpages-nav, p.mw-allpages-nav {
+ text-align: right;
+ font-size: smaller;
+ margin-bottom: 1em;
+}
+table.mw-allpages-table-form tr {
+ vertical-align: top;
+}
+
/* Special:Prefixindex styling */
table#mw-prefixindex-list-table,
table#mw-prefixindex-nav-table {
@@ -323,6 +535,7 @@ div.mw-warning-with-logexcerpt {
padding: 3px;
margin-bottom: 3px;
border: 2px solid #2F6FAB;
+ clear: both;
}
div.mw-warning-with-logexcerpt ul li {
font-size: 90%;
@@ -331,8 +544,16 @@ div.mw-warning-with-logexcerpt ul li {
/* (show/hide) revision deletion links */
span.mw-revdelundel-link,
strong.mw-revdelundel-link {
- font-family: monospace;
- font-size: smaller;
+ font-size: 90%;
+}
+span.mw-revdelundel-hidden,
+input.mw-revdelundel-hidden {
+ visibility: hidden;
+}
+
+td.mw-revdel-checkbox, th.mw-revdel-checkbox {
+ padding-right: 10px;
+ text-align: center;
}
/* feed links */
@@ -340,3 +561,271 @@ a.feedlink {
background: url("images/feed-icon.png") center left no-repeat;
padding-left: 16px;
}
+
+/* Plainlinks - this can be used to switch
+ * off special external link styling */
+.plainlinks a {
+ background: none !important;
+ padding: 0 !important;
+}
+
+/* wikitable class for skinning normal tables */
+table.wikitable {
+ margin: 1em 1em 1em 0;
+ background: #f9f9f9;
+ border: 1px #aaa solid;
+ border-collapse: collapse;
+}
+.wikitable th, .wikitable td {
+ border: 1px #aaa solid;
+ padding: 0.2em;
+}
+.wikitable th {
+ background: #f2f2f2;
+ text-align: center;
+}
+.wikitable caption {
+ font-weight: bold;
+}
+
+/* hide initially collapsed collapsable tables */
+table.collapsed tr.collapsable {
+ display: none;
+}
+
+/* success and error messages */
+.success {
+ color: green;
+ font-size: larger;
+}
+.error {
+ color: red;
+ font-size: larger;
+}
+.errorbox, .successbox {
+ font-size: larger;
+ border: 2px solid;
+ padding: .5em 1em;
+ float: left;
+ margin-bottom: 2em;
+ color: #000;
+}
+.errorbox {
+ border-color: red;
+ background-color: #fff2f2;
+}
+.successbox {
+ border-color: green;
+ background-color: #dfd;
+}
+.errorbox h2, .successbox h2 {
+ font-size: 1em;
+ font-weight: bold;
+ display: inline;
+ margin: 0 .5em 0 0;
+ border: none;
+}
+
+.visualClear {
+ clear: both;
+}
+
+#mw_trackbacks {
+ border: solid 1px #bbbbff;
+ background-color: #eeeeff;
+ padding: 0.2em;
+}
+
+/*
+ Table pager (e.g. Special:Imagelist)
+ - remove underlines from the navigation link
+ - collapse borders
+ - set the borders to outsets (similar to Special:Allmessages)
+ - remove line wrapping for all td and th, set background color
+ - restore line wrapping for the last two table cells (description and size)
+*/
+.TablePager { min-width: 80%; }
+.TablePager_nav a { text-decoration: none; }
+.TablePager { border-collapse: collapse; }
+.TablePager, .TablePager td, .TablePager th {
+ border: 1px solid #aaaaaa;
+ padding: 0 0.15em 0 0.15em;
+}
+.TablePager th { background-color: #eeeeff }
+.TablePager td { background-color: #ffffff }
+.TablePager tr:hover td { background-color: #eeeeff }
+
+.imagelist td, .imagelist th { white-space: nowrap }
+.imagelist .TablePager_col_links { background-color: #eeeeff }
+.imagelist .TablePager_col_img_description { white-space: normal }
+.imagelist th.TablePager_sort { background-color: #ccccff }
+
+ /* Allmessages table */
+#mw-allmessagestable .allmessages-customised td.am_default {
+ background-color: #fcffc4;
+}
+
+#mw-allmessagestable tr.allmessages-customised:hover td.am_default {
+ background-color: #faff90;
+}
+
+#mw-allmessagestable td.am_actual {
+ background-color: #e2ffe2;
+}
+
+#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual {
+ background-color: #b1ffb1;
+}
+
+/* filetoc */
+ul#filetoc {
+ text-align: center;
+ border: 1px solid #aaaaaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+ margin-bottom: 0.5em;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+#filetoc li {
+ display: inline;
+ list-style-type: none;
+ padding-right: 2em;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+ font-size: 0.8em;
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
+ width: 300px;
+}
+
+table.mw_metadata caption {
+ font-weight: bold;
+}
+
+table.mw_metadata th {
+ font-weight: normal;
+}
+
+table.mw_metadata td {
+ padding: 0.1em;
+}
+
+table.mw_metadata {
+ border: none;
+ border-collapse: collapse;
+}
+
+table.mw_metadata td, table.mw_metadata th {
+ text-align: center;
+ border: 1px solid #aaaaaa;
+ padding-left: 0.1em;
+ padding-right: 0.1em;
+}
+
+table.mw_metadata th {
+ background-color: #f9f9f9;
+}
+
+table.mw_metadata td {
+ background-color: #fcfcfc;
+}
+
+/* Galleries */
+table.gallery {
+ border: 1px solid #ccc;
+ margin: 2px;
+ padding: 2px;
+ background-color: white;
+}
+
+table.gallery tr {
+ vertical-align: top;
+}
+
+table.gallery td {
+ vertical-align: top;
+ background-color: #f9f9f9;
+ border: solid 2px white;
+}
+table.gallery caption {
+ font-weight: bold;
+}
+
+div.gallerybox {
+ margin: 2px;
+}
+
+div.gallerybox div.thumb {
+ text-align: center;
+ border: 1px solid #ccc;
+ margin: 2px;
+}
+
+div.gallerytext {
+ overflow: hidden;
+ font-size: 94%;
+ padding: 2px 4px;
+}
+
+table.mw-enhanced-rc {
+ background: none;
+ border:0;
+ border-spacing:0;
+}
+td.mw-enhanced-rc {
+ white-space:nowrap;
+ padding:0;
+ vertical-align:top;
+ font-family:monospace
+}
+
+#mw-addcategory-prompt {
+ display: inline;
+ margin-left: 1em;
+}
+
+#mw-addcategory-prompt input {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+}
+
+.mw-remove-category {
+ padding: 8px;
+ background-image: url(images/remove.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+
+.mw-ajax-addcategory {
+ padding-left: 20px;
+ background-image: url(images/add.png);
+ background-position: left center;
+ background-repeat: no-repeat;
+}
+
+.mw-ajax-loader {
+ background-image: url(images/ajax-loader.gif);
+ background-position: center center;
+ background-repeat: no-repeat;
+ padding: 16px;
+ position: relative;
+ top: -16px;
+}
+
+.mw-small-spinner {
+ padding: 10px !important;
+ margin-right: 0.6em;
+ background-image: url(images/spinner.gif);
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+
+/* Sort arrows added by SortableTables */
+a.sortheader {
+ margin: 0 0.3em;
+}
diff --git a/skins/common/sticky.js b/skins/common/sticky.js
deleted file mode 100644
index a4904c03..00000000
--- a/skins/common/sticky.js
+++ /dev/null
@@ -1,124 +0,0 @@
-// Make a layer that stays in the same place on screen when scrolling the browser window.
-// Version 1.2
-// See http://www.mark.ac/help for browser support.
-
-var mySticky;
-var theLayer;
-
-// Setup variables for sliding.
-// lastY and staticYOffset should match your CSS top definition.
-
-lastY=10;YOffset=0;staticYOffset=10;refreshMS=25;
-
-
-// Setup function that runs when the page loads.
- function setup(eID){
- bw=new checkBrowser;
- if(bw.ns4||bw.opera){MM_reloadPage(true);}
- var noFix=bw.ie4||bw.ns4||(bw.macie50)?true:false;
- if (window.attachEvent){fix_bind()}
- else if(noFix){
- if(bw.ns6){document.getElementById(eID).style.position="absolute";}
- if(bw.macie50){document.getElementById(eID).style.position="absolute";document.getElementById(eID).style.backgroundColor="#ccffcc";}
- if(bw.ns6&&YOffset==0){YOffset=-15}
- mySticky=new makeLayerObj(eID);
- layerSlide(eID)}
- else{
- mySticky=new makeLayerObj(eID);
- mySticky.css.position="fixed";}
-
- if(!mySticky){mySticky=new makeLayerObj(eID);}
- //mySticky.css.visibility="visible";
- }
-
-
-// -------------------------
-// emulate css 'position: fixed' in IE5+ Win
-// code by aclover@1value.com
- fix_elements = new Array();
-
- function fix_event(){
- var i;
- for (i=0; i < fix_elements.length; i++){
- fix_elements[i].style.left = parseInt(fix_elements[i].fix_left)+document.getElementsByTagName('html')[0].scrollLeft+document.getElementsByTagName('body')[0].scrollLeft+'px';
- fix_elements[i].style.top = parseInt(fix_elements[i].fix_top)+document.getElementsByTagName('html')[0].scrollTop+document.getElementsByTagName('body')[0].scrollTop+'px';
- }
- }
-
- function fix_bind(){
- var i;
- for (i=0; i < document.all.length; i++){
- if (document.all[i].currentStyle.position=='fixed'){
- document.all[i].fix_left = document.all[i].currentStyle.left;
- document.all[i].fix_top = document.all[i].currentStyle.top;
- document.all[i].style.position = 'absolute';
- fix_elements[fix_elements.length] = document.all[i];
- window.attachEvent('onscroll', fix_event);
- window.attachEvent('onresize', fix_event);
- }
- }
- }
-// -------------------------
-
-
-// -------------------------
-// DHTML menu sliding. Requires checkBrowser()
-// Based on source at http://www.simplythebest.net/
- function layerSlide(layerID) {
- if(bw.dhtml){
- if(!mySticky){mySticky=new makeLayerObj(layerID);}
- if (bw.ns) {winY = window.pageYOffset;}
- else if (bw.ie) {winY = document.body.scrollTop;}
- if (bw.ie||bw.ns) {
- if (winY!=lastY&&winY>YOffset-staticYOffset){smooth = .3 * (winY - lastY - YOffset + staticYOffset);}
- else if (YOffset-staticYOffset+lastY>YOffset-staticYOffset){smooth = .3 * (winY - lastY - (YOffset-(YOffset-winY)));}
- else{smooth=0}
- if(smooth > 0) {smooth = Math.ceil(smooth);}
- else{smooth = Math.floor(smooth);}
- if (bw.ie){mySticky.css.pixelTop+=smooth;}
- else if (bw.ns){mySticky.css.top=parseInt(mySticky.css.top)+smooth;}
- lastY = lastY+smooth;
- top.window.status=new Date()
- setTimeout('layerSlide("'+layerID+'")', refreshMS)}}}
-// -------------------------
-
-// Netscape 4.x browser resize fix
- function MM_reloadPage(init) {
- if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
- document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; top.onresize=MM_reloadPage; }}
- else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) {location.reload();}}
-
-// Create browser-independent layer and browser objects
- function makeLayerObj(eID){
- if(document.getElementById){this.css=document.getElementById(eID).style}
- else if(document.layers){this.css=document.layers[eID];}
- else if(document.all){this.css=document.all[eID].style;}
- return this
- }
-
- function checkBrowser(){
- this.ver=navigator.appVersion;
- this.name=navigator.appName;
- this.mac=(navigator.platform.toLowerCase().indexOf('mac')>-1)?true:false;
- this.opera=(navigator.userAgent.toLowerCase().indexOf('opera')>-1)?true:false;
- this.dom=document.getElementById?true:false;
- this.ns=(this.name=='Netscape');
- this.ie4=(document.all && !this.dom)?true:false;
- this.ie=(this.name =='Microsoft Internet Explorer'&&!this.opera)?true:false;
- this.ie5=(this.ie && (navigator.userAgent.indexOf("MSIE 5")!=-1))?true:false;
- this.macie50=(this.mac&&this.ie5&&(navigator.userAgent.indexOf("MSIE 5.0")!=-1))?true:false
- this.ns4=(this.ns && parseInt(this.ver) == 4)?true:false;
- this.ns6=((this.name=="Netscape")&&(parseInt(this.ver)==5))?true:false
- this.standards=document.getElementById?true:false;
- this.dhtml=this.standards||this.ie4||this.ns4;
- }
-
- function showMe(eID){
- myFloater=new makeLayerObj(eID)
- myFloater.css.visibility="visible";
- }
-
- function hideMe(eID){
- myFloater=new makeLayerObj(eID)
- myFloater.css.visibility="hidden";
- }
diff --git a/skins/common/upload.js b/skins/common/upload.js
index d1cf4b3e..f40f62e6 100644
--- a/skins/common/upload.js
+++ b/skins/common/upload.js
@@ -11,9 +11,19 @@ function licenseSelectorCheck() {
wgUploadLicenseObj.fetchPreview( selection );
}
-function licenseSelectorFixup() {
- // for MSIE/Mac; non-breaking spaces cause the <option> not to render
- // but, for some reason, setting the text to itself works
+function wgUploadSetup() {
+ // Disable URL box if the URL copy upload source type is not selected
+ var e = document.getElementById( 'wpSourceTypeURL' );
+ if( e ) {
+ if( !e.checked ) {
+ var ein = document.getElementById( 'wpUploadFileURL' );
+ if(ein)
+ ein.setAttribute( 'disabled', 'disabled' );
+ }
+ }
+
+ // For MSIE/Mac: non-breaking spaces cause the <option> not to render.
+ // But for some reason, setting the text to itself works
var selector = document.getElementById("wpLicense");
if (selector) {
var ua = navigator.userAgent;
@@ -24,6 +34,96 @@ function licenseSelectorFixup() {
}
}
}
+
+ // Toggle source type
+ var sourceTypeCheckboxes = document.getElementsByName( 'wpSourceType' );
+ for ( var i = 0; i < sourceTypeCheckboxes.length; i++ ) {
+ sourceTypeCheckboxes[i].onchange = toggleUploadInputs;
+ }
+
+ // AJAX wpDestFile warnings
+ if ( wgAjaxUploadDestCheck ) {
+ // Insert an event handler that fetches upload warnings when wpDestFile
+ // has been changed
+ document.getElementById( 'wpDestFile' ).onchange = function ( e ) {
+ wgUploadWarningObj.checkNow(this.value);
+ };
+ // Insert a row where the warnings will be displayed just below the
+ // wpDestFile row
+ var optionsTable = document.getElementById( 'mw-htmlform-description' ).tBodies[0];
+ var row = optionsTable.insertRow( 1 );
+ var td = document.createElement( 'td' );
+ td.id = 'wpDestFile-warning';
+ td.colSpan = 2;
+
+ row.appendChild( td );
+ }
+
+ if ( wgAjaxLicensePreview ) {
+ // License selector check
+ document.getElementById( 'wpLicense' ).onchange = licenseSelectorCheck;
+
+ // License selector table row
+ var wpLicense = document.getElementById( 'wpLicense' );
+ var wpLicenseRow = wpLicense.parentNode.parentNode;
+ var wpLicenseTbody = wpLicenseRow.parentNode;
+
+ var row = document.createElement( 'tr' );
+ var td = document.createElement( 'td' );
+ row.appendChild( td );
+ td = document.createElement( 'td' );
+ td.id = 'mw-license-preview';
+ row.appendChild( td );
+
+ wpLicenseTbody.insertBefore( row, wpLicenseRow.nextSibling );
+ }
+
+
+ // fillDestFile setup
+ for ( var i = 0; i < wgUploadSourceIds.length; i++ )
+ document.getElementById( wgUploadSourceIds[i] ).onchange = function (e) {
+ fillDestFilename( this.id );
+ };
+}
+
+/**
+ * Iterate over all upload source fields and disable all except the selected one.
+ *
+ * @param enabledId The id of the selected radio button
+ * @return emptiness
+ */
+function toggleUploadInputs() {
+ // Iterate over all rows with UploadSourceField
+ var rows;
+ if ( document.getElementsByClassName ) {
+ rows = document.getElementsByClassName( 'mw-htmlform-field-UploadSourceField' );
+ } else {
+ // Older browsers don't support getElementsByClassName
+ rows = new Array();
+
+ var allRows = document.getElementsByTagName( 'tr' );
+ for ( var i = 0; i < allRows.length; i++ ) {
+ if ( allRows[i].className == 'mw-htmlform-field-UploadSourceField' )
+ rows.push( allRows[i] );
+ }
+ }
+
+ for ( var i = 0; i < rows.length; i++ ) {
+ var inputs = rows[i].getElementsByTagName( 'input' );
+
+ // Check if this row is selected
+ var isChecked = true; // Default true in case wpSourceType is not found
+ for ( var j = 0; j < inputs.length; j++ ) {
+ if ( inputs[j].name == 'wpSourceType' )
+ isChecked = inputs[j].checked;
+ }
+
+ // Disable all unselected rows
+ for ( var j = 0; j < inputs.length; j++ ) {
+ if ( inputs[j].type != 'radio')
+ inputs[j].disabled = !isChecked;
+ }
+ }
}
var wgUploadWarningObj = {
@@ -43,7 +143,7 @@ var wgUploadWarningObj = {
this.nameToCheck = destFile.value ;
- // Clear timer
+ // Clear timer
if ( this.timeoutID ) {
window.clearTimeout( this.timeoutID );
}
@@ -66,17 +166,17 @@ var wgUploadWarningObj = {
this.nameToCheck = fname;
this.timeout();
},
-
+
'timeout' : function() {
if ( !wgAjaxUploadDestCheck || !sajax_init_object() ) return;
injectSpinner( document.getElementById( 'wpDestFile' ), 'destcheck' );
- // Get variables into local scope so that they will be preserved for the
- // anonymous callback. fileName is copied so that multiple overlapping
+ // Get variables into local scope so that they will be preserved for the
+ // anonymous callback. fileName is copied so that multiple overlapping
// ajax requests can be supported.
var obj = this;
var fileName = this.nameToCheck;
- sajax_do_call( 'UploadForm::ajaxGetExistsWarning', [this.nameToCheck],
+ sajax_do_call( 'SpecialUpload::ajaxGetExistsWarning', [this.nameToCheck],
function (result) {
obj.processResult(result, fileName)
}
@@ -91,18 +191,19 @@ var wgUploadWarningObj = {
'setWarning' : function (warning) {
var warningElt = document.getElementById( 'wpDestFile-warning' );
- var ackElt = document.getElementById( 'wpDestFileWarningAck' );
- this.setInnerHTML(warningElt, warning);
+ var ackElt = document.getElementsByName( 'wpDestFileWarningAck' );
- // Set a value in the form indicating that the warning is acknowledged and
+ this.setInnerHTML(warningElt, warning);
+
+ // Set a value in the form indicating that the warning is acknowledged and
// doesn't need to be redisplayed post-upload
if ( warning == '' || warning == '&nbsp;' ) {
- ackElt.value = '';
+ ackElt[0].value = '';
} else {
- ackElt.value = '1';
+ ackElt[0].value = '1';
}
- },
+ },
'setInnerHTML' : function (element, text) {
// Check for no change to avoid flicker in IE 7
if (element.innerHTML != text) {
@@ -118,6 +219,13 @@ function fillDestFilename(id) {
if (!document.getElementById) {
return;
}
+ // Remove any previously flagged errors
+ var e = document.getElementById( 'mw-upload-permitted' );
+ if( e ) e.className = '';
+
+ var e = document.getElementById( 'mw-upload-prohibited' );
+ if( e ) e.className = '';
+
var path = document.getElementById(id).value;
// Find trailing part
var slash = path.lastIndexOf('/');
@@ -131,7 +239,40 @@ function fillDestFilename(id) {
fname = path.substring(backslash+1, 10000);
}
+ // Clear the filename if it does not have a valid extension.
+ // URLs are less likely to have a useful extension, so don't include them in the
+ // extension check.
+ if( wgFileExtensions && id != 'wpUploadFileURL' ) {
+ var found = false;
+ if( fname.lastIndexOf( '.' ) != -1 ) {
+ var ext = fname.substr( fname.lastIndexOf( '.' ) + 1 );
+ for( var i = 0; i < wgFileExtensions.length; i++ ) {
+ if( wgFileExtensions[i].toLowerCase() == ext.toLowerCase() ) {
+ found = true;
+ break;
+ }
+ }
+ }
+ if( !found ) {
+ // Not a valid extension
+ // Clear the upload and set mw-upload-permitted to error
+ document.getElementById(id).value = '';
+ var e = document.getElementById( 'mw-upload-permitted' );
+ if( e ) e.className = 'error';
+
+ var e = document.getElementById( 'mw-upload-prohibited' );
+ if( e ) e.className = 'error';
+
+ // Clear wpDestFile as well
+ var e = document.getElementById( 'wpDestFile' )
+ if( e ) e.value = '';
+
+ return false;
+ }
+ }
+
// Capitalise first letter and replace spaces by underscores
+ // FIXME: $wgCapitalizedNamespaces
fname = fname.charAt(0).toUpperCase().concat(fname.substring(1,10000)).replace(/ /g, '_');
// Output result
@@ -154,11 +295,11 @@ function toggleFilenameFiller() {
}
var wgUploadLicenseObj = {
-
+
'responseCache' : { '' : '' },
'fetchPreview': function( license ) {
- if( !wgAjaxLicensePreview || !sajax_init_object() ) return;
+ if( !wgAjaxLicensePreview ) return;
for (cached in this.responseCache) {
if (cached == license) {
this.showPreview( this.responseCache[license] );
@@ -166,17 +307,29 @@ var wgUploadLicenseObj = {
}
}
injectSpinner( document.getElementById( 'wpLicense' ), 'license' );
- sajax_do_call( 'UploadForm::ajaxGetLicensePreview', [license],
- function( result ) {
- wgUploadLicenseObj.processResult( result, license );
- }
- );
+
+ var title = document.getElementById('wpDestFile').value;
+ if ( !title ) title = 'File:Sample.jpg';
+
+ var url = wgScriptPath + '/api' + wgScriptExtension
+ + '?action=parse&text={{' + encodeURIComponent( license ) + '}}'
+ + '&title=' + encodeURIComponent( title )
+ + '&prop=text&pst&format=json';
+
+ var req = sajax_init_object();
+ req.onreadystatechange = function() {
+ if ( req.readyState == 4 && req.status == 200 )
+ wgUploadLicenseObj.processResult( eval( '(' + req.responseText + ')' ), license );
+ };
+ req.open( 'GET', url, true );
+ req.send( '' );
},
'processResult' : function( result, license ) {
removeSpinner( 'license' );
- this.showPreview( result.responseText );
- this.responseCache[license] = result.responseText;
+ this.responseCache[license] = result['parse']['text']['*'];
+ this.showPreview( this.responseCache[license] );
+
},
'showPreview' : function( preview ) {
@@ -184,7 +337,7 @@ var wgUploadLicenseObj = {
if( previewPanel.innerHTML != preview )
previewPanel.innerHTML = preview;
}
-
+
}
-addOnloadHook( licenseSelectorFixup ); \ No newline at end of file
+addOnloadHook( wgUploadSetup );
diff --git a/skins/common/wikibits.js b/skins/common/wikibits.js
index 82fe033e..acdd7281 100644
--- a/skins/common/wikibits.js
+++ b/skins/common/wikibits.js
@@ -12,7 +12,7 @@ if (webkit_match) {
}
// For accesskeys; note that FF3+ is included here!
var is_ff2 = /firefox\/[2-9]|minefield\/3/.test( clientPC );
-var is_ff2_ = /firefox\/2/.test( clientPC );
+var ff2_bugs = /firefox\/2/.test( clientPC );
// These aren't used here, but some custom scripts rely on them
var is_ff2_win = is_ff2 && clientPC.indexOf('windows') != -1;
var is_ff2_x11 = is_ff2 && clientPC.indexOf('x11') != -1;
@@ -20,7 +20,18 @@ if (clientPC.indexOf('opera') != -1) {
var is_opera = true;
var is_opera_preseven = window.opera && !document.childNodes;
var is_opera_seven = window.opera && document.childNodes;
- var is_opera_95 = /opera\/(9.[5-9]|[1-9][0-9])/.test( clientPC );
+ var is_opera_95 = /opera\/(9\.[5-9]|[1-9][0-9])/.test( clientPC );
+ var opera6_bugs = is_opera_preseven;
+ var opera7_bugs = is_opera_seven && !is_opera_95;
+ var opera95_bugs = /opera\/(9\.5)/.test( clientPC );
+}
+// As recommended by <http://msdn.microsoft.com/en-us/library/ms537509.aspx>,
+// avoiding false positives from moronic extensions that append to the IE UA
+// string (bug 23171)
+var ie6_bugs = false;
+if ( /MSIE ([0-9]{1,}[\.0-9]{0,})/.exec( clientPC ) != null
+&& parseFloat( RegExp.$1 ) <= 6.0 ) {
+ ie6_bugs = true;
}
// Global external objects used by this script.
@@ -33,170 +44,187 @@ if (!window.onloadFuncts) {
var onloadFuncts = [];
}
-function addOnloadHook(hookFunct) {
+function addOnloadHook( hookFunct ) {
// Allows add-on scripts to add onload functions
- if(!doneOnloadHook) {
+ if( !doneOnloadHook ) {
onloadFuncts[onloadFuncts.length] = hookFunct;
} else {
hookFunct(); // bug in MSIE script loading
}
}
-function hookEvent(hookName, hookFunct) {
- addHandler(window, hookName, hookFunct);
+function hookEvent( hookName, hookFunct ) {
+ addHandler( window, hookName, hookFunct );
}
-function importScript(page) {
+function importScript( page ) {
+ // TODO: might want to introduce a utility function to match wfUrlencode() in PHP
var uri = wgScript + '?title=' +
- encodeURIComponent(page.replace(/ /g,'_')).replace('%2F','/').replace('%3A',':') +
+ encodeURIComponent(page.replace(/ /g,'_')).replace(/%2F/ig,'/').replace(/%3A/ig,':') +
'&action=raw&ctype=text/javascript';
- return importScriptURI(uri);
+ return importScriptURI( uri );
}
-
+
var loadedScripts = {}; // included-scripts tracker
-function importScriptURI(url) {
- if (loadedScripts[url]) {
+function importScriptURI( url ) {
+ if ( loadedScripts[url] ) {
return null;
}
loadedScripts[url] = true;
- var s = document.createElement('script');
- s.setAttribute('src',url);
- s.setAttribute('type','text/javascript');
- document.getElementsByTagName('head')[0].appendChild(s);
+ var s = document.createElement( 'script' );
+ s.setAttribute( 'src', url );
+ s.setAttribute( 'type', 'text/javascript' );
+ document.getElementsByTagName('head')[0].appendChild( s );
return s;
}
-
-function importStylesheet(page) {
- return importStylesheetURI(wgScript + '?action=raw&ctype=text/css&title=' + encodeURIComponent(page.replace(/ /g,'_')));
+
+function importStylesheet( page ) {
+ return importStylesheetURI( wgScript + '?action=raw&ctype=text/css&title=' + encodeURIComponent( page.replace(/ /g,'_') ) );
}
-
-function importStylesheetURI(url) {
- return document.createStyleSheet ? document.createStyleSheet(url) : appendCSS('@import "' + url + '";');
+
+function importStylesheetURI( url, media ) {
+ var l = document.createElement( 'link' );
+ l.type = 'text/css';
+ l.rel = 'stylesheet';
+ l.href = url;
+ if( media ) {
+ l.media = media;
+ }
+ document.getElementsByTagName('head')[0].appendChild( l );
+ return l;
}
-
-function appendCSS(text) {
- var s = document.createElement('style');
+
+function appendCSS( text ) {
+ var s = document.createElement( 'style' );
s.type = 'text/css';
s.rel = 'stylesheet';
- if (s.styleSheet) s.styleSheet.cssText = text //IE
- else s.appendChild(document.createTextNode(text + '')) //Safari sometimes borks on null
- document.getElementsByTagName('head')[0].appendChild(s);
+ if ( s.styleSheet ) {
+ s.styleSheet.cssText = text; // IE
+ } else {
+ s.appendChild( document.createTextNode( text + '' ) ); // Safari sometimes borks on null
+ }
+ document.getElementsByTagName('head')[0].appendChild( s );
return s;
}
-// special stylesheet links
-if (typeof stylepath != 'undefined' && typeof skin != 'undefined') {
- if (is_opera_preseven) {
- importStylesheetURI(stylepath+'/'+skin+'/Opera6Fixes.css');
- } else if (is_opera_seven && !is_opera_95) {
- importStylesheetURI(stylepath+'/'+skin+'/Opera7Fixes.css');
- } else if (is_opera_95) {
- importStylesheetURI(stylepath+'/'+skin+'/Opera9Fixes.css');
- } else if (is_ff2_) {
- importStylesheetURI(stylepath+'/'+skin+'/FF2Fixes.css');
+// Special stylesheet links for Monobook only (see bug 14717)
+if ( typeof stylepath != 'undefined' && skin == 'monobook' ) {
+ if ( opera6_bugs ) {
+ importStylesheetURI( stylepath + '/' + skin + '/Opera6Fixes.css' );
+ } else if ( opera7_bugs ) {
+ importStylesheetURI( stylepath + '/' + skin + '/Opera7Fixes.css' );
+ } else if ( opera95_bugs ) {
+ importStylesheetURI( stylepath + '/' + skin + '/Opera9Fixes.css' );
+ } else if ( ff2_bugs ) {
+ importStylesheetURI( stylepath + '/' + skin + '/FF2Fixes.css' );
}
}
-if (wgBreakFrames) {
+
+if ( wgBreakFrames ) {
// Un-trap us from framesets
- if (window.top != window) {
+ if ( window.top != window ) {
window.top.location = window.location;
}
}
function showTocToggle() {
- if (document.createTextNode) {
+ if ( document.createTextNode ) {
// Uses DOM calls to avoid document.write + XHTML issues
- var linkHolder = document.getElementById('toctitle');
- if (!linkHolder) {
+ var linkHolder = document.getElementById( 'toctitle' );
+ var existingLink = document.getElementById( 'togglelink' );
+ if ( !linkHolder || existingLink ) {
+ // Don't add the toggle link twice
return;
}
- var outerSpan = document.createElement('span');
+ var outerSpan = document.createElement( 'span' );
outerSpan.className = 'toctoggle';
- var toggleLink = document.createElement('a');
+ var toggleLink = document.createElement( 'a' );
toggleLink.id = 'togglelink';
toggleLink.className = 'internal';
toggleLink.href = 'javascript:toggleToc()';
- toggleLink.appendChild(document.createTextNode(tocHideText));
+ toggleLink.appendChild( document.createTextNode( tocHideText ) );
- outerSpan.appendChild(document.createTextNode('['));
- outerSpan.appendChild(toggleLink);
- outerSpan.appendChild(document.createTextNode(']'));
+ outerSpan.appendChild( document.createTextNode( '[' ) );
+ outerSpan.appendChild( toggleLink );
+ outerSpan.appendChild( document.createTextNode( ']' ) );
- linkHolder.appendChild(document.createTextNode(' '));
- linkHolder.appendChild(outerSpan);
+ linkHolder.appendChild( document.createTextNode( ' ' ) );
+ linkHolder.appendChild( outerSpan );
- var cookiePos = document.cookie.indexOf("hidetoc=");
- if (cookiePos > -1 && document.cookie.charAt(cookiePos + 8) == 1) {
+ var cookiePos = document.cookie.indexOf( "hidetoc=" );
+ if ( cookiePos > -1 && document.cookie.charAt( cookiePos + 8 ) == 1 ) {
toggleToc();
}
}
}
-function changeText(el, newText) {
+function changeText( el, newText ) {
// Safari work around
- if (el.innerText) {
+ if ( el.innerText ) {
el.innerText = newText;
- } else if (el.firstChild && el.firstChild.nodeValue) {
+ } else if ( el.firstChild && el.firstChild.nodeValue ) {
el.firstChild.nodeValue = newText;
}
}
function toggleToc() {
+ var tocmain = document.getElementById( 'toc' );
var toc = document.getElementById('toc').getElementsByTagName('ul')[0];
- var toggleLink = document.getElementById('togglelink');
+ var toggleLink = document.getElementById( 'togglelink' );
- if (toc && toggleLink && toc.style.display == 'none') {
- changeText(toggleLink, tocHideText);
+ if ( toc && toggleLink && toc.style.display == 'none' ) {
+ changeText( toggleLink, tocHideText );
toc.style.display = 'block';
document.cookie = "hidetoc=0";
+ tocmain.className = 'toc';
} else {
- changeText(toggleLink, tocShowText);
+ changeText( toggleLink, tocShowText );
toc.style.display = 'none';
document.cookie = "hidetoc=1";
+ tocmain.className = 'toc tochidden';
}
}
var mwEditButtons = [];
var mwCustomEditButtons = []; // eg to add in MediaWiki:Common.js
-function escapeQuotes(text) {
- var re = new RegExp("'","g");
- text = text.replace(re,"\\'");
- re = new RegExp("\\n","g");
- text = text.replace(re,"\\n");
- return escapeQuotesHTML(text);
-}
-
-function escapeQuotesHTML(text) {
- var re = new RegExp('&',"g");
- text = text.replace(re,"&amp;");
- re = new RegExp('"',"g");
- text = text.replace(re,"&quot;");
- re = new RegExp('<',"g");
- text = text.replace(re,"&lt;");
- re = new RegExp('>',"g");
- text = text.replace(re,"&gt;");
- return text;
+function escapeQuotes( text ) {
+ var re = new RegExp( "'", "g" );
+ text = text.replace( re, "\\'" );
+ re = new RegExp( "\\n", "g" );
+ text = text.replace( re, "\\n" );
+ return escapeQuotesHTML( text );
}
+function escapeQuotesHTML( text ) {
+ var re = new RegExp( '&', "g" );
+ text = text.replace( re, "&amp;" );
+ re = new RegExp( '"', "g" );
+ text = text.replace( re, "&quot;" );
+ re = new RegExp( '<', "g" );
+ text = text.replace( re, "&lt;" );
+ re = new RegExp( '>', "g" );
+ text = text.replace( re, "&gt;" );
+ return text;
+}
/**
* Set the accesskey prefix based on browser detection.
*/
var tooltipAccessKeyPrefix = 'alt-';
-if (is_opera) {
+if ( is_opera ) {
tooltipAccessKeyPrefix = 'shift-esc-';
-} else if (!is_safari_win && is_safari && webkit_version > 526) {
+} else if ( !is_safari_win && is_safari && webkit_version > 526 ) {
tooltipAccessKeyPrefix = 'ctrl-alt-';
-} else if (!is_safari_win && (is_safari
+} else if ( !is_safari_win && ( is_safari
|| clientPC.indexOf('mac') != -1
- || clientPC.indexOf('konqueror') != -1 )) {
+ || clientPC.indexOf('konqueror') != -1 ) ) {
tooltipAccessKeyPrefix = 'ctrl-';
-} else if (is_ff2) {
+} else if ( is_ff2 ) {
tooltipAccessKeyPrefix = 'alt-shift-';
}
var tooltipAccessKeyRegexp = /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/;
@@ -211,23 +239,32 @@ var tooltipAccessKeyRegexp = /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/;
*/
function updateTooltipAccessKeys( nodeList ) {
if ( !nodeList ) {
- // skins without a "column-one" element don't seem to have links with accesskeys either
- var columnOne = document.getElementById("column-one");
- if ( columnOne )
- updateTooltipAccessKeys( columnOne.getElementsByTagName("a") );
+ // Rather than scan all links on the whole page, we can just scan these
+ // containers which contain the relevant links. This is really just an
+ // optimization technique.
+ var linkContainers = [
+ 'column-one', // Monobook and Modern
+ 'mw-head', 'mw-panel', 'p-logo' // Vector
+ ];
+ for ( var i in linkContainers ) {
+ var linkContainer = document.getElementById( linkContainers[i] );
+ if ( linkContainer ) {
+ updateTooltipAccessKeys( linkContainer.getElementsByTagName( 'a' ) );
+ }
+ }
// these are rare enough that no such optimization is needed
- updateTooltipAccessKeys( document.getElementsByTagName("input") );
- updateTooltipAccessKeys( document.getElementsByTagName("label") );
+ updateTooltipAccessKeys( document.getElementsByTagName( 'input' ) );
+ updateTooltipAccessKeys( document.getElementsByTagName( 'label' ) );
return;
}
for ( var i = 0; i < nodeList.length; i++ ) {
var element = nodeList[i];
- var tip = element.getAttribute("title");
- if ( tip && tooltipAccessKeyRegexp.exec(tip) ) {
+ var tip = element.getAttribute( 'title' );
+ if ( tip && tooltipAccessKeyRegexp.exec( tip ) ) {
tip = tip.replace(tooltipAccessKeyRegexp,
- "["+tooltipAccessKeyPrefix+"$5]");
- element.setAttribute("title", tip );
+ '[' + tooltipAccessKeyPrefix + "$5]");
+ element.setAttribute( 'title', tip );
}
}
}
@@ -260,54 +297,75 @@ function updateTooltipAccessKeys( nodeList ) {
*
* @return Node -- the DOM node of the new item (an LI element) or null
*/
-function addPortletLink(portlet, href, text, id, tooltip, accesskey, nextnode) {
- var node = document.getElementById(portlet);
- if ( !node ) return null;
- node = node.getElementsByTagName( "ul" )[0];
- if ( !node ) return null;
-
- var link = document.createElement( "a" );
- link.appendChild( document.createTextNode( text ) );
+function addPortletLink( portlet, href, text, id, tooltip, accesskey, nextnode ) {
+ var root = document.getElementById( portlet );
+ if ( !root ) {
+ return null;
+ }
+ var node = root.getElementsByTagName( 'ul' )[0];
+ if ( !node ) {
+ return null;
+ }
+
+ // unhide portlet if it was hidden before
+ root.className = root.className.replace( /(^| )emptyPortlet( |$)/, "$2" );
+
+ var span = document.createElement( 'span' );
+ span.appendChild( document.createTextNode( text ) );
+
+ var link = document.createElement( 'a' );
+ link.appendChild( span );
link.href = href;
- var item = document.createElement( "li" );
+ var item = document.createElement( 'li' );
item.appendChild( link );
- if ( id ) item.id = id;
+ if ( id ) {
+ item.id = id;
+ }
if ( accesskey ) {
- link.setAttribute( "accesskey", accesskey );
- tooltip += " ["+accesskey+"]";
+ link.setAttribute( 'accesskey', accesskey );
+ tooltip += ' [' + accesskey + ']';
}
if ( tooltip ) {
- link.setAttribute( "title", tooltip );
+ link.setAttribute( 'title', tooltip );
}
if ( accesskey && tooltip ) {
updateTooltipAccessKeys( new Array( link ) );
}
- if ( nextnode && nextnode.parentNode == node )
+ if ( nextnode && nextnode.parentNode == node ) {
node.insertBefore( item, nextnode );
- else
+ } else {
node.appendChild( item ); // IE compatibility (?)
+ }
return item;
}
-function getInnerText(el) {
- if (typeof el == "string") return el;
- if (typeof el == "undefined") { return el };
- if (el.textContent) return el.textContent; // not needed but it is faster
- if (el.innerText) return el.innerText; // IE doesn't have textContent
- var str = "";
+function getInnerText( el ) {
+ if ( typeof el == 'string' ) {
+ return el;
+ }
+ if ( typeof el == 'undefined' ) {
+ return el;
+ }
+ if ( el.textContent ) {
+ return el.textContent; // not needed but it is faster
+ }
+ if ( el.innerText ) {
+ return el.innerText; // IE doesn't have textContent
+ }
+ var str = '';
var cs = el.childNodes;
var l = cs.length;
- for (var i = 0; i < l; i++) {
- switch (cs[i].nodeType) {
- case 1: //ELEMENT_NODE
- str += ts_getInnerText(cs[i]);
+ for ( var i = 0; i < l; i++ ) {
+ switch ( cs[i].nodeType ) {
+ case 1: // ELEMENT_NODE
+ str += ts_getInnerText( cs[i] );
break;
- case 3: //TEXT_NODE
+ case 3: // TEXT_NODE
str += cs[i].nodeValue;
break;
}
@@ -315,63 +373,9 @@ function getInnerText(el) {
return str;
}
-
-/**
- * Set up accesskeys/tooltips from the deprecated ta array. If doId
- * is specified, only set up for that id. Note that this function is
- * deprecated and will not be supported indefinitely -- use
- * updateTooltipAccessKey() instead.
- *
- * @param mixed doId string or null
- */
+/* Dummy for deprecated function */
+window.ta = [];
function akeytt( doId ) {
- // A lot of user scripts (and some of the code below) break if
- // ta isn't defined, so we make sure it is. Explictly using
- // window.ta avoids a "ta is not defined" error.
- if (!window.ta) window.ta = new Array;
-
- // Make a local, possibly restricted, copy to avoid clobbering
- // the original.
- var ta;
- if ( doId ) {
- ta = [doId];
- } else {
- ta = window.ta;
- }
-
- // Now deal with evil deprecated ta
- var watchCheckboxExists = document.getElementById( 'wpWatchthis' ) ? true : false;
- for (var id in ta) {
- var n = document.getElementById(id);
- if (n) {
- var a = null;
- var ak = '';
- // Are we putting accesskey in it
- if (ta[id][0].length > 0) {
- // Is this object a object? If not assume it's the next child.
-
- if (n.nodeName.toLowerCase() == "a") {
- a = n;
- } else {
- a = n.childNodes[0];
- }
- // Don't add an accesskey for the watch tab if the watch
- // checkbox is also available.
- if (a && ((id != 'ca-watch' && id != 'ca-unwatch') || !watchCheckboxExists)) {
- a.accessKey = ta[id][0];
- ak = ' ['+tooltipAccessKeyPrefix+ta[id][0]+']';
- }
- } else {
- // We don't care what type the object is when assigning tooltip
- a = n;
- ak = '';
- }
-
- if (a) {
- a.title = ta[id][1]+ak;
- }
- }
- }
}
var checkboxes;
@@ -380,21 +384,25 @@ var lastCheckbox;
function setupCheckboxShiftClick() {
checkboxes = [];
lastCheckbox = null;
- var inputs = document.getElementsByTagName('input');
- addCheckboxClickHandlers(inputs);
+ var inputs = document.getElementsByTagName( 'input' );
+ addCheckboxClickHandlers( inputs );
}
-function addCheckboxClickHandlers(inputs, start) {
- if ( !start) start = 0;
+function addCheckboxClickHandlers( inputs, start ) {
+ if ( !start ) {
+ start = 0;
+ }
var finish = start + 250;
- if ( finish > inputs.length )
+ if ( finish > inputs.length ) {
finish = inputs.length;
+ }
for ( var i = start; i < finish; i++ ) {
var cb = inputs[i];
- if ( !cb.type || cb.type.toLowerCase() != 'checkbox' )
+ if ( !cb.type || cb.type.toLowerCase() != 'checkbox' ) {
continue;
+ }
var end = checkboxes.length;
checkboxes[end] = cb;
cb.index = end;
@@ -402,14 +410,14 @@ function addCheckboxClickHandlers(inputs, start) {
}
if ( finish < inputs.length ) {
- setTimeout( function () {
- addCheckboxClickHandlers(inputs, finish);
+ setTimeout( function() {
+ addCheckboxClickHandlers( inputs, finish );
}, 200 );
}
}
-function checkboxClickHandler(e) {
- if (typeof e == 'undefined') {
+function checkboxClickHandler( e ) {
+ if ( typeof e == 'undefined' ) {
e = window.event;
}
if ( !e.shiftKey || lastCheckbox === null ) {
@@ -425,28 +433,16 @@ function checkboxClickHandler(e) {
start = lastCheckbox;
finish = this.index - 1;
}
- for (var i = start; i <= finish; ++i ) {
+ for ( var i = start; i <= finish; ++i ) {
checkboxes[i].checked = endState;
+ if( i > start && typeof checkboxes[i].onchange == 'function' ) {
+ checkboxes[i].onchange(); // fire triggers
+ }
}
lastCheckbox = this.index;
return true;
}
-function toggle_element_activation(ida,idb) {
- if (!document.getElementById) {
- return;
- }
- document.getElementById(ida).disabled=true;
- document.getElementById(idb).disabled=false;
-}
-
-function toggle_element_check(ida,idb) {
- if (!document.getElementById) {
- return;
- }
- document.getElementById(ida).checked=true;
- document.getElementById(idb).checked=false;
-}
/*
Written by Jonathan Snook, http://www.snook.ca/jonathan
@@ -454,68 +450,71 @@ function toggle_element_check(ida,idb) {
Author says "The credit comment is all it takes, no license. Go crazy with it!:-)"
From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
*/
-function getElementsByClassName(oElm, strTagName, oClassNames){
+function getElementsByClassName( oElm, strTagName, oClassNames ) {
var arrReturnElements = new Array();
- if ( typeof( oElm.getElementsByClassName ) == "function" ) {
+ if ( typeof( oElm.getElementsByClassName ) == 'function' ) {
/* Use a native implementation where possible FF3, Saf3.2, Opera 9.5 */
var arrNativeReturn = oElm.getElementsByClassName( oClassNames );
- if ( strTagName == "*" )
+ if ( strTagName == '*' ) {
return arrNativeReturn;
- for ( var h=0; h < arrNativeReturn.length; h++ ) {
- if( arrNativeReturn[h].tagName.toLowerCase() == strTagName.toLowerCase() )
+ }
+ for ( var h = 0; h < arrNativeReturn.length; h++ ) {
+ if( arrNativeReturn[h].tagName.toLowerCase() == strTagName.toLowerCase() ) {
arrReturnElements[arrReturnElements.length] = arrNativeReturn[h];
+ }
}
return arrReturnElements;
}
- var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
+ var arrElements = ( strTagName == '*' && oElm.all ) ? oElm.all : oElm.getElementsByTagName( strTagName );
var arrRegExpClassNames = new Array();
- if(typeof oClassNames == "object"){
- for(var i=0; i<oClassNames.length; i++){
+ if( typeof oClassNames == 'object' ) {
+ for( var i = 0; i < oClassNames.length; i++ ) {
arrRegExpClassNames[arrRegExpClassNames.length] =
new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)");
}
- }
- else{
+ } else {
arrRegExpClassNames[arrRegExpClassNames.length] =
new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)");
}
var oElement;
var bMatchesAll;
- for(var j=0; j<arrElements.length; j++){
+ for( var j = 0; j < arrElements.length; j++ ) {
oElement = arrElements[j];
bMatchesAll = true;
- for(var k=0; k<arrRegExpClassNames.length; k++){
- if(!arrRegExpClassNames[k].test(oElement.className)){
+ for( var k = 0; k < arrRegExpClassNames.length; k++ ) {
+ if( !arrRegExpClassNames[k].test( oElement.className ) ) {
bMatchesAll = false;
break;
}
}
- if(bMatchesAll){
+ if( bMatchesAll ) {
arrReturnElements[arrReturnElements.length] = oElement;
}
}
- return (arrReturnElements)
+ return ( arrReturnElements );
}
-function redirectToFragment(fragment) {
+function redirectToFragment( fragment ) {
var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/);
- if (match) {
- var webKitVersion = parseInt(match[1]);
- if (webKitVersion < 420) {
+ if ( match ) {
+ var webKitVersion = parseInt( match[1] );
+ if ( webKitVersion < 420 ) {
// Released Safari w/ WebKit 418.9.1 messes up horribly
// Nightlies of 420+ are ok
return;
}
}
- if (is_gecko) {
+ if ( is_gecko ) {
// Mozilla needs to wait until after load, otherwise the window doesn't scroll
- addOnloadHook(function () {
- if (window.location.hash == "")
+ addOnloadHook(function() {
+ if ( window.location.hash == '' ) {
window.location.hash = fragment;
+ }
});
} else {
- if (window.location.hash == "")
+ if ( window.location.hash == '' ) {
window.location.hash = fragment;
+ }
}
}
@@ -530,11 +529,11 @@ function redirectToFragment(fragment) {
* @todo support all accepted date formats (bug 8226)
*/
-var ts_image_path = stylepath+"/common/images/";
-var ts_image_up = "sort_up.gif";
-var ts_image_down = "sort_down.gif";
-var ts_image_none = "sort_none.gif";
-var ts_europeandate = wgContentLanguage != "en"; // The non-American-inclined can change to "true"
+var ts_image_path = stylepath + '/common/images/';
+var ts_image_up = 'sort_up.gif';
+var ts_image_down = 'sort_down.gif';
+var ts_image_none = 'sort_none.gif';
+var ts_europeandate = wgContentLanguage != 'en'; // The non-American-inclined can change to "true"
var ts_alternate_row_colors = false;
var ts_number_transform_table = null;
var ts_number_regex = null;
@@ -542,33 +541,34 @@ var ts_number_regex = null;
function sortables_init() {
var idnum = 0;
// Find all tables with class sortable and make them sortable
- var tables = getElementsByClassName(document, "table", "sortable");
- for (var ti = 0; ti < tables.length ; ti++) {
- if (!tables[ti].id) {
- tables[ti].setAttribute('id','sortable_table_id_'+idnum);
+ var tables = getElementsByClassName( document, 'table', 'sortable' );
+ for ( var ti = 0; ti < tables.length ; ti++ ) {
+ if ( !tables[ti].id ) {
+ tables[ti].setAttribute( 'id', 'sortable_table_id_' + idnum );
++idnum;
}
- ts_makeSortable(tables[ti]);
+ ts_makeSortable( tables[ti] );
}
}
-function ts_makeSortable(table) {
+function ts_makeSortable( table ) {
var firstRow;
- if (table.rows && table.rows.length > 0) {
- if (table.tHead && table.tHead.rows.length > 0) {
+ if ( table.rows && table.rows.length > 0 ) {
+ if ( table.tHead && table.tHead.rows.length > 0 ) {
firstRow = table.tHead.rows[table.tHead.rows.length-1];
} else {
firstRow = table.rows[0];
}
}
- if (!firstRow) return;
+ if ( !firstRow ) {
+ return;
+ }
// We have a first row: assume it's the header, and make its contents clickable links
- for (var i = 0; i < firstRow.cells.length; i++) {
+ for ( var i = 0; i < firstRow.cells.length; i++ ) {
var cell = firstRow.cells[i];
- if ((" "+cell.className+" ").indexOf(" unsortable ") == -1) {
- cell.innerHTML += '&nbsp;&nbsp;'
- + '<a href="#" class="sortheader" '
+ if ( (' ' + cell.className + ' ').indexOf(' unsortable ') == -1 ) {
+ cell.innerHTML += '<a href="#" class="sortheader" '
+ 'onclick="ts_resortTable(this);return false;">'
+ '<span class="sortarrow">'
+ '<img src="'
@@ -577,16 +577,16 @@ function ts_makeSortable(table) {
+ '" alt="&darr;"/></span></a>';
}
}
- if (ts_alternate_row_colors) {
- ts_alternate(table);
+ if ( ts_alternate_row_colors ) {
+ ts_alternate( table );
}
}
-function ts_getInnerText(el) {
+function ts_getInnerText( el ) {
return getInnerText( el );
}
-function ts_resortTable(lnk) {
+function ts_resortTable( lnk ) {
// get the span
var span = lnk.getElementsByTagName('span')[0];
@@ -595,104 +595,118 @@ function ts_resortTable(lnk) {
var column = td.cellIndex;
var table = tr.parentNode;
- while (table && !(table.tagName && table.tagName.toLowerCase() == 'table'))
+ while ( table && !( table.tagName && table.tagName.toLowerCase() == 'table' ) ) {
table = table.parentNode;
- if (!table) return;
+ }
+ if ( !table ) {
+ return;
+ }
- if (table.rows.length <= 1) return;
+ if ( table.rows.length <= 1 ) {
+ return;
+ }
// Generate the number transform table if it's not done already
- if (ts_number_transform_table == null) {
+ if ( ts_number_transform_table === null ) {
ts_initTransformTable();
}
// Work out a type for the column
// Skip the first row if that's where the headings are
- var rowStart = (table.tHead && table.tHead.rows.length > 0 ? 0 : 1);
+ var rowStart = ( table.tHead && table.tHead.rows.length > 0 ? 0 : 1 );
- var itm = "";
- for (var i = rowStart; i < table.rows.length; i++) {
- if (table.rows[i].cells.length > column) {
+ var itm = '';
+ for ( var i = rowStart; i < table.rows.length; i++ ) {
+ if ( table.rows[i].cells.length > column ) {
itm = ts_getInnerText(table.rows[i].cells[column]);
- itm = itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, "");
- if (itm != "") break;
+ itm = itm.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '');
+ if ( itm != '' ) {
+ break;
+ }
}
}
// TODO: bug 8226, localised date formats
var sortfn = ts_sort_generic;
var preprocessor = ts_toLowerCase;
- if (/^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/.test(itm)) {
+ if ( /^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
- } else if (/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/.test(itm)) {
+ } else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
- } else if (/^\d\d[\/.-]\d\d[\/.-]\d\d$/.test(itm)) {
+ } else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
- // pound dollar euro yen currency cents
- } else if (/(^[\u00a3$\u20ac\u00a4\u00a5]|\u00a2$)/.test(itm)) {
+ // (minus sign)([pound dollar euro yen currency]|cents)
+ } else if ( /(^([-\u2212] *)?[\u00a3$\u20ac\u00a4\u00a5]|\u00a2$)/.test( itm ) ) {
preprocessor = ts_currencyToSortKey;
- } else if (ts_number_regex.test(itm)) {
+ } else if ( ts_number_regex.test( itm ) ) {
preprocessor = ts_parseFloat;
}
- var reverse = (span.getAttribute("sortdir") == 'down');
+ var reverse = ( span.getAttribute( 'sortdir' ) == 'down' );
var newRows = new Array();
var staticRows = new Array();
- for (var j = rowStart; j < table.rows.length; j++) {
+ for ( var j = rowStart; j < table.rows.length; j++ ) {
var row = table.rows[j];
- if((" "+row.className+" ").indexOf(" unsortable ") < 0) {
- var keyText = ts_getInnerText(row.cells[column]);
- var oldIndex = (reverse ? -j : j);
- var preprocessed = preprocessor( keyText );
+ if( (' ' + row.className + ' ').indexOf(' unsortable ') < 0 ) {
+ var keyText = ts_getInnerText( row.cells[column] );
+ if( keyText === undefined ) {
+ keyText = '';
+ }
+ var oldIndex = ( reverse ? -j : j );
+ var preprocessed = preprocessor( keyText.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '') );
- newRows[newRows.length] = new Array(row, preprocessed, oldIndex);
- } else staticRows[staticRows.length] = new Array(row, false, j-rowStart);
+ newRows[newRows.length] = new Array( row, preprocessed, oldIndex );
+ } else {
+ staticRows[staticRows.length] = new Array( row, false, j-rowStart );
+ }
}
- newRows.sort(sortfn);
+ newRows.sort( sortfn );
var arrowHTML;
- if (reverse) {
- arrowHTML = '<img src="'+ ts_image_path + ts_image_down + '" alt="&darr;"/>';
+ if ( reverse ) {
+ arrowHTML = '<img src="' + ts_image_path + ts_image_down + '" alt="&darr;"/>';
newRows.reverse();
- span.setAttribute('sortdir','up');
+ span.setAttribute( 'sortdir', 'up' );
} else {
- arrowHTML = '<img src="'+ ts_image_path + ts_image_up + '" alt="&uarr;"/>';
- span.setAttribute('sortdir','down');
+ arrowHTML = '<img src="' + ts_image_path + ts_image_up + '" alt="&uarr;"/>';
+ span.setAttribute( 'sortdir', 'down' );
}
- for (var i = 0; i < staticRows.length; i++) {
+ for ( var i = 0; i < staticRows.length; i++ ) {
var row = staticRows[i];
- newRows.splice(row[2], 0, row);
+ newRows.splice( row[2], 0, row );
}
// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
// don't do sortbottom rows
- for (var i = 0; i < newRows.length; i++) {
- if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") == -1)
- table.tBodies[0].appendChild(newRows[i][0]);
+ for ( var i = 0; i < newRows.length; i++ ) {
+ if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') == -1 ) {
+ table.tBodies[0].appendChild( newRows[i][0] );
+ }
}
// do sortbottom rows only
- for (var i = 0; i < newRows.length; i++) {
- if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") != -1)
- table.tBodies[0].appendChild(newRows[i][0]);
+ for ( var i = 0; i < newRows.length; i++ ) {
+ if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') != -1 ) {
+ table.tBodies[0].appendChild( newRows[i][0] );
+ }
}
// Delete any other arrows there may be showing
- var spans = getElementsByClassName(tr, "span", "sortarrow");
- for (var i = 0; i < spans.length; i++) {
- spans[i].innerHTML = '<img src="'+ ts_image_path + ts_image_none + '" alt="&darr;"/>';
+ var spans = getElementsByClassName( tr, 'span', 'sortarrow' );
+ for ( var i = 0; i < spans.length; i++ ) {
+ spans[i].innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/>';
}
span.innerHTML = arrowHTML;
- if (ts_alternate_row_colors) {
- ts_alternate(table);
+ if ( ts_alternate_row_colors ) {
+ ts_alternate( table );
}
}
function ts_initTransformTable() {
- if ( typeof wgSeparatorTransformTable == "undefined"
+ if ( typeof wgSeparatorTransformTable == 'undefined'
|| ( wgSeparatorTransformTable[0] == '' && wgDigitTransformTable[2] == '' ) )
{
digitClass = "[0-9,.]";
@@ -703,13 +717,13 @@ function ts_initTransformTable() {
// Separators
ascii = wgSeparatorTransformTable[0].split("\t");
localised = wgSeparatorTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
+ for ( var i = 0; i < ascii.length; i++ ) {
ts_number_transform_table[localised[i]] = ascii[i];
}
// Digits
ascii = wgDigitTransformTable[0].split("\t");
localised = wgDigitTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
+ for ( var i = 0; i < ascii.length; i++ ) {
ts_number_transform_table[localised[i]] = ascii[i];
}
@@ -718,11 +732,11 @@ function ts_initTransformTable() {
maxDigitLength = 1;
for ( var digit in ts_number_transform_table ) {
// Escape regex metacharacters
- digits.push(
+ digits.push(
digit.replace( /[\\\\$\*\+\?\.\(\)\|\{\}\[\]\-]/,
function( s ) { return '\\' + s; } )
);
- if (digit.length > maxDigitLength) {
+ if ( digit.length > maxDigitLength ) {
maxDigitLength = digit.length;
}
}
@@ -737,9 +751,9 @@ function ts_initTransformTable() {
// if percents and regular numbers aren't being mixed.
ts_number_regex = new RegExp(
"^(" +
- "[+-]?[0-9][0-9,]*(\\.[0-9,]*)?(E[+-]?[0-9][0-9,]*)?" + // Fortran-style scientific
+ "[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + // Fortran-style scientific
"|" +
- "[+-]?" + digitClass + "+%?" + // Generic localised
+ "[-+\u2212]?" + digitClass + "+%?" + // Generic localised
")$", "i"
);
}
@@ -748,57 +762,81 @@ function ts_toLowerCase( s ) {
return s.toLowerCase();
}
-function ts_dateToSortKey(date) {
+function ts_dateToSortKey( date ) {
// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
- if (date.length == 11) {
- switch (date.substr(3,3).toLowerCase()) {
- case "jan": var month = "01"; break;
- case "feb": var month = "02"; break;
- case "mar": var month = "03"; break;
- case "apr": var month = "04"; break;
- case "may": var month = "05"; break;
- case "jun": var month = "06"; break;
- case "jul": var month = "07"; break;
- case "aug": var month = "08"; break;
- case "sep": var month = "09"; break;
- case "oct": var month = "10"; break;
- case "nov": var month = "11"; break;
- case "dec": var month = "12"; break;
- // default: var month = "00";
- }
- return date.substr(7,4)+month+date.substr(0,2);
- } else if (date.length == 10) {
- if (ts_europeandate == false) {
- return date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
+ if ( date.length == 11 ) {
+ switch ( date.substr( 3, 3 ).toLowerCase() ) {
+ case 'jan':
+ var month = '01';
+ break;
+ case 'feb':
+ var month = '02';
+ break;
+ case 'mar':
+ var month = '03';
+ break;
+ case 'apr':
+ var month = '04';
+ break;
+ case 'may':
+ var month = '05';
+ break;
+ case 'jun':
+ var month = '06';
+ break;
+ case 'jul':
+ var month = '07';
+ break;
+ case 'aug':
+ var month = '08';
+ break;
+ case 'sep':
+ var month = '09';
+ break;
+ case 'oct':
+ var month = '10';
+ break;
+ case 'nov':
+ var month = '11';
+ break;
+ case 'dec':
+ var month = '12';
+ break;
+ // default: var month = '00';
+ }
+ return date.substr( 7, 4 ) + month + date.substr( 0, 2 );
+ } else if ( date.length == 10 ) {
+ if ( ts_europeandate == false ) {
+ return date.substr( 6, 4 ) + date.substr( 0, 2 ) + date.substr( 3, 2 );
} else {
- return date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
+ return date.substr( 6, 4 ) + date.substr( 3, 2 ) + date.substr( 0, 2 );
}
- } else if (date.length == 8) {
- yr = date.substr(6,2);
- if (parseInt(yr) < 50) {
- yr = '20'+yr;
- } else {
- yr = '19'+yr;
+ } else if ( date.length == 8 ) {
+ yr = date.substr( 6, 2 );
+ if ( parseInt( yr ) < 50 ) {
+ yr = '20' + yr;
+ } else {
+ yr = '19' + yr;
}
- if (ts_europeandate == true) {
- return yr+date.substr(3,2)+date.substr(0,2);
+ if ( ts_europeandate == true ) {
+ return yr + date.substr( 3, 2 ) + date.substr( 0, 2 );
} else {
- return yr+date.substr(0,2)+date.substr(3,2);
+ return yr + date.substr( 0, 2 ) + date.substr( 3, 2 );
}
}
- return "00000000";
+ return '00000000';
}
function ts_parseFloat( s ) {
if ( !s ) {
return 0;
}
- if (ts_number_transform_table != false) {
+ if ( ts_number_transform_table != false ) {
var newNum = '', c;
-
+
for ( var p = 0; p < s.length; p++ ) {
c = s.charAt( p );
- if (c in ts_number_transform_table) {
+ if ( c in ts_number_transform_table ) {
newNum += ts_number_transform_table[c];
} else {
newNum += c;
@@ -806,37 +844,37 @@ function ts_parseFloat( s ) {
}
s = newNum;
}
-
- num = parseFloat(s.replace(/,/g, ""));
- return (isNaN(num) ? 0 : num);
+ num = parseFloat( s.replace(/[, ]/g, '').replace("\u2212", '-') );
+ return ( isNaN( num ) ? -Infinity : num );
}
function ts_currencyToSortKey( s ) {
- return ts_parseFloat(s.replace(/[^0-9.,]/g,''));
+ return ts_parseFloat(s.replace(/[^-\u22120-9.,]/g,''));
}
-function ts_sort_generic(a, b) {
+function ts_sort_generic( a, b ) {
return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : a[2] - b[2];
}
-function ts_alternate(table) {
+function ts_alternate( table ) {
// Take object table and get all it's tbodies.
- var tableBodies = table.getElementsByTagName("tbody");
+ var tableBodies = table.getElementsByTagName( 'tbody' );
// Loop through these tbodies
- for (var i = 0; i < tableBodies.length; i++) {
+ for ( var i = 0; i < tableBodies.length; i++ ) {
// Take the tbody, and get all it's rows
- var tableRows = tableBodies[i].getElementsByTagName("tr");
+ var tableRows = tableBodies[i].getElementsByTagName( 'tr' );
// Loop through these rows
// Start at 1 because we want to leave the heading row untouched
- for (var j = 0; j < tableRows.length; j++) {
+ for ( var j = 0; j < tableRows.length; j++ ) {
// Check if j is even, and apply classes for both possible results
- var oldClasses = tableRows[j].className.split(" ");
- var newClassName = "";
- for (var k = 0; k < oldClasses.length; k++) {
- if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd")
- newClassName += oldClasses[k] + " ";
+ var oldClasses = tableRows[j].className.split(' ');
+ var newClassName = '';
+ for ( var k = 0; k < oldClasses.length; k++ ) {
+ if ( oldClasses[k] != '' && oldClasses[k] != 'even' && oldClasses[k] != 'odd' ) {
+ newClassName += oldClasses[k] + ' ';
+ }
}
- tableRows[j].className = newClassName + (j % 2 == 0 ? "even" : "odd");
+ tableRows[j].className = newClassName + ( j % 2 == 0 ? 'even' : 'odd' );
}
}
}
@@ -844,8 +882,8 @@ function ts_alternate(table) {
/*
* End of table sorting code
*/
-
-
+
+
/**
* Add a cute little box at the top of the screen to inform the user of
* something, replacing any preexisting message.
@@ -872,7 +910,7 @@ function jsMsg( message, className ) {
messageDiv,
document.getElementById( 'content' ).firstChild
);
- } else if ( document.getElementById('content')
+ } else if ( document.getElementById( 'content' )
&& document.getElementById( 'article' ) ) {
// Non-Monobook but still recognizable (old-style)
document.getElementById( 'article').insertBefore(
@@ -887,15 +925,15 @@ function jsMsg( message, className ) {
messageDiv.setAttribute( 'id', 'mw-js-message' );
messageDiv.style.display = 'block';
if( className ) {
- messageDiv.setAttribute( 'class', 'mw-js-message-'+className );
+ messageDiv.setAttribute( 'class', 'mw-js-message-' + className );
}
-
- if (typeof message === 'object') {
- while (messageDiv.hasChildNodes()) // Remove old content
- messageDiv.removeChild(messageDiv.firstChild);
- messageDiv.appendChild (message); // Append new content
- }
- else {
+
+ if ( typeof message === 'object' ) {
+ while ( messageDiv.hasChildNodes() ) { // Remove old content
+ messageDiv.removeChild( messageDiv.firstChild );
+ }
+ messageDiv.appendChild( message ); // Append new content
+ } else {
messageDiv.innerHTML = message;
}
return true;
@@ -908,10 +946,10 @@ function jsMsg( message, className ) {
* @param id Identifier string (for use with removeSpinner(), below)
*/
function injectSpinner( element, id ) {
- var spinner = document.createElement( "img" );
- spinner.id = "mw-spinner-" + id;
- spinner.src = stylepath + "/common/images/spinner.gif";
- spinner.alt = spinner.title = "...";
+ var spinner = document.createElement( 'img' );
+ spinner.id = 'mw-spinner-' + id;
+ spinner.src = stylepath + '/common/images/spinner.gif';
+ spinner.alt = spinner.title = '...';
if( element.nextSibling ) {
element.parentNode.insertBefore( spinner, element.nextSibling );
} else {
@@ -925,7 +963,7 @@ function injectSpinner( element, id ) {
* @param id Identifier string
*/
function removeSpinner( id ) {
- var spinner = document.getElementById( "mw-spinner-" + id );
+ var spinner = document.getElementById( 'mw-spinner-' + id );
if( spinner ) {
spinner.parentNode.removeChild( spinner );
}
@@ -933,7 +971,7 @@ function removeSpinner( id ) {
function runOnloadHook() {
// don't run anything below this for non-dom browsers
- if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) {
+ if ( doneOnloadHook || !( document.getElementById && document.getElementsByTagName ) ) {
return;
}
@@ -942,12 +980,11 @@ function runOnloadHook() {
doneOnloadHook = true;
updateTooltipAccessKeys( null );
- akeytt( null );
setupCheckboxShiftClick();
sortables_init();
// Run any added-on functions
- for (var i = 0; i < onloadFuncts.length; i++) {
+ for ( var i = 0; i < onloadFuncts.length; i++ ) {
onloadFuncts[i]();
}
}
@@ -991,6 +1028,15 @@ function removeHandler( element, remove, handler ) {
element.detachEvent( 'on' + remove, handler );
}
}
-//note: all skins should call runOnloadHook() at the end of html output,
+// note: all skins should call runOnloadHook() at the end of html output,
// so the below should be redundant. It's there just in case.
-hookEvent("load", runOnloadHook);
+hookEvent( 'load', runOnloadHook );
+
+if ( ie6_bugs ) {
+ importScriptURI( stylepath + '/common/IEFixes.js' );
+}
+
+// For future use.
+mw = {};
+
+
diff --git a/skins/disabled/MonoBook.tpl b/skins/disabled/MonoBook.tpl
deleted file mode 100644
index 58bc4f5c..00000000
--- a/skins/disabled/MonoBook.tpl
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{lang}" lang="{lang}" dir="{dir}">
-<head>
- <meta http-equiv="Content-Type" content="{~ mimetype}; charset={~ charset}" />
- {headlinks}
- {headscripts}
- <title>{pagetitle}</title>
- <style type="text/css" media="screen, projection">/*<![CDATA[*/ @import "{~ stylepath}/{~ stylename}/main.css?5"; /*]]>*/</style>
- <link rel="stylesheet" type="text/css" {if notprintable {media="print"}} href="{~ stylepath}/common/commonPrint.css" />
- <!--[if lt IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE50Fixes.css";</style><![endif]-->
- <!--[if IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE55Fixes.css";</style><![endif]-->
- <!--[if IE 6]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE60Fixes.css";</style><![endif]-->
- <!--[if IE 7]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE70Fixes.css?1";</style><![endif]-->
- <!--[if lt IE 7]><script type="{jsmimetype}" src="{~ stylepath}/common/IEFixes.js"></script>
- <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
- <script type="{jsmimetype}">var skin = '{~ skinname}';var stylepath = '{~ stylepath}';</script>
- <script type="{jsmimetype}" src="{~ stylepath}/common/wikibits.js"><!-- wikibits js --></script>
- {if jsvarurl {<script type="{jsmimetype}" src="{jsvarurl}"><!-- site js --></script>}}
- {if pagecss {<style type="text/css">{pagecss}</style>}}
- {usercss}
- {sitecss}
- {gencss}
- {if userjs {<script type="{jsmimetype}" src="{userjs}"></script>}}
- {if userjsprev {<script type="{jsmimetype}">{userjsprev}</script>}}
- {trackbackhtml}
-</head>
-<body {if body_ondblclick {ondblclick="{body_ondblclick}"}} {if body_onload {onload="{body_onload}" }} class="{~ nsclass} {~ dir}">
-<div id="globalWrapper">
- <div id="column-content">
- <div id="content">
- <a name="top" id="top"></a>
- {if sitenotice {<div id="siteNotice">{sitenotice}</div> }}
- <h1 class="firstHeading">{title}</h1>
- <div id="bodyContent">
- <h3 id="siteSub">{msg {tagline}}</h3>
- <div id="contentSub">{subtitle}</div>
- {if undelete {<div id="contentSub2"><span class="subpages">{undelete}</span></div> }}
- {if newtalk {<div class="usermessage">{newtalk}</div> }}
- {if showjumplinks {
- <div id="jump-to-nav">{msg {jumpto}} <a href="#column-one">{msg {jumptonavigation}}</a>,
- <a href="#searchInput">{msg {jumptosearch}}</a></div>
- }}
- <!-- start content -->
- {bodytext}
- {if catlinks {<div id="catlinks">{catlinks}</div> }}
- <!-- end content -->
- <div class="visualClear"></div>
- </div>
- </div>
- </div>
- <div id="column-one">
- <div id="p-cactions" class="portlet">
- <h5>{msg {views}}</h5>
- <ul>
- {if is_special {
- <li id="ca-article" class="selected"><a href="{request_url}">{msg {specialpage}}</a></li>
- } {
- <li id="ca-{nskey}" {selecttab {subject} subject_newclass}><a href="{subject_url}">{msg nskey}</a></li>
- <li id="ca-talk" {selecttab {talk} talk_newclass}><a href="{talk_url}">{msg {talk}}</a></li>
- {if can_edit {
- {if is_talk {
- <li id="ca-edit" {selecttab {edit} {istalk}}><a href="{edit_url}">{msg {edit}}</a></li>
- <li id="ca-addsection" {selecttab {addsection}}><a href="{localurl {action=edit&section=new}}">{msg {addsection}}</a></li>
- } {
- <li id="ca-edit" {selecttab {edit}}><a href="{edit_url}">{msg {edit}}</a></li>
- }}
- } {
- <li id="ca-viewsource" {selecttab {edit}}><a href="{edit_url}">{msg {viewsource}}</a></li>
- }}
-
- {if article_exists {
- <li id="ca-history" {selecttab {history}}><a href="{localurl {action=history}}">{msg {history_short}}</a></li>
- {if {{ is_allowed {protect} }} {
- {if is_ns_mediawiki {} {
- {if is_protected {
- <li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=unprotect}}">{msg {unprotect}}</a></li>
- } {
- <li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=protect}}">{msg {protect}}</a></li>
- }}
- }}
- }}
-
- {if {{ is_allowed {delete} }} {
- <li id="ca-delete" {selecttab {delete}}><a href="{localurl {action=delete}}">{msg {delete}}</a></li>
- }}
- {if {{ is_allowed {move} }} {
- {if can_move {
- <li id="ca-move" {selecttab {move}}><a href="{move_url}">{msg {move}}</a></li>
- }}
- }}
- {if is_loggedin {
- {if is_watching {
- <li id="ca-unwatch" {selecttab {watch}}><a href="{localurl {action=unwatch}}">{msg {unwatch}}</a></li>
- } {
- <li id="ca-watch" {selecttab {watch}}><a href="{localurl {action=watch}}">{msg {watch}}</a></li>
- }}
- }}
- }}
- }}
- {extratabs {<li id="ca-$id" $class><a href="$href">$text</a></li>}}
- </ul>
- </div>
- <div class="portlet" id="p-personal">
- <h5>{msg {personaltools}}</h5>
- <div class="pBody">
- <ul>
- {personal_urls { <li id="pt-$key" $classactive ><a href="$href" $class>$text</a></li> }}
- </ul>
- </div>
- </div>
- <div class="portlet" id="p-logo">
- <a style="background-image: url({~ logopath});" href="{mainpage}" title="{msg {mainpage}}"></a>
- </div>
- <script type="{jsmimetype}"> if (window.isMSIE55) fixalpha(); </script>
- {sidebar {
- <div class='portlet' id="p-$bar">
- <h5>$barname</h5>
- <div class='pBody'>
- <ul>
- } {
- </ul>
- </div>
- </div>
- } {<li id="$id" $classactive><a href="$href">$text</a></li>
- }
- }
-
- <div id="p-search" class="portlet">
- <h5><label for="searchInput">{msg {search}}</label></h5>
- <div id="searchBody" class="pBody">
- <form action="{searchaction}" id="searchform"><div>
- <input id="searchInput" name="search" type="text" {
- }{if {{fallbackmsg {accesskey-search} {} }} {accesskey="{fallbackmsg {accesskey-search} {} }"}}{
- }{if search { value="{search}"}} />
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="{msg {go}}" />&nbsp;
- <input type='submit' name="fulltext" class="searchButton" value="{msg {search}}" />
- </div></form>
- </div>
- </div>
- <div class="portlet" id="p-tb">
- <h5>{msg {toolbox}}</h5>
- <div class="pBody">
- <ul>
- {if notspecialpage {<li id="t-whatlinkshere"><a href="{nav_whatlinkshere}">{msg {whatlinkshere}}</a></li> }}
- {if article_exists {<li id="t-recentchangeslinked"><a href="{nav_recentchangeslinked}">{msg {recentchangeslinked}}</a></li> }}
- {if nav_trackbacklink {<li id="t-trackbacklink"><a href="{nav_trackbacklink}">{msg {trackbacklink}}</a></li>}}
- {if feeds
- {<li id="feedlinks">{feeds {<span id="feed-$key"><a href="$href">$text</a>&nbsp;</span>}}
- </li>}}
- {if is_userpage {
- <li id="t-contributions"><a href="{nav_contributions}">{msg {contributions}}</a></li>
- {if {{is_allowed {block}}} {<li id="t-blockip"><a href="{nav_blockip}">{msg {blockip}}</a></li>}}
- {if is_loggedin {<li id="t-emailuser"><a href="{nav_emailuser}">{msg {emailuser}}</a></li>}}
- }}
- {if nav_upload {<li id="t-upload"><a href="{nav_upload}">{msg {upload}}</a></li>}}
- {if nav_specialpages {<li id="t-specialpages"><a href="{nav_specialpages}">{msg {specialpages}}</a></li>}}
- {if nav_print {<li id="t-print"><a href="{nav_print}">{msg {printableversion}}</a></li>}}
- {if nav_permalink {<li id="t-permalink"><a href="{nav_permalink}">{msg {permalink}}</a></li>}}
- {if is_permalink {<li id="t-ispermalink">{msg {permalink}}</li>}}
-
- {toolboxend}
- </ul>
- </div>
- </div>
- {language_urls {
- <div id="p-lang" class="portlet">
- <h5>{msg {otherlanguages}}</h5>
- <div class="pBody">
- <ul>
- $body
- </ul>
- </div>
- </div>
- } {
- <li class="$class"><a href="$href">$text</a></li>
- }}
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <div id="footer">
- {if poweredbyico { <div id="f-poweredbyico">{poweredbyico}</div> }}
- {if copyrightico { <div id="f-copyrightico">{copyrightico}</div> }}
-
- <ul id="f-list">
- {if lastmod { <li id="lastmod">{lastmod}</li> }}
- {if viewcount { <li id="viewcount">{viewcount}</li> }}
- {if numberofwatchingusers { <li id="numberofwatchingusers">{numberofwatchingusers}</li> }}
- {if credits { <li id="credits">{credits}</li> }}
- {if is_currentview { <li id="copyright">{normalcopyright}</li> }}
- {if usehistorycopyright { <li id="copyright">{historycopyright}</li> }}
- {if privacy { <li id="privacy">{privacy}</li> }}
- {if about { <li id="about">{about}</li> }}
- {if disclaimer { <li id="disclaimer">{disclaimer}</li> }}
- {if tagline { <li id="tagline">{tagline}</li> }}
- </ul>
- </div>
- <script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
-</div>
-{reporttime}
-{if {} { vim: set syn=html ts=2 : }}
-</body></html>
diff --git a/skins/disabled/MonoBookCBT.php b/skins/disabled/MonoBookCBT.php
deleted file mode 100644
index 0d693a86..00000000
--- a/skins/disabled/MonoBookCBT.php
+++ /dev/null
@@ -1,1389 +0,0 @@
-<?php
-
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( "This file is part of MediaWiki, it is not a valid entry point\n" );
-}
-
-require_once( 'includes/cbt/CBTProcessor.php' );
-require_once( 'includes/cbt/CBTCompiler.php' );
-require_once( 'includes/SkinTemplate.php' );
-
-/**
- * MonoBook clone using the new dependency-tracking template processor.
- * EXPERIMENTAL - use only for testing and profiling at this stage.
- *
- * See includes/cbt/README for an explanation.
- *
- * The main thing that's missing is cache invalidation, on change of:
- * * messages
- * * user preferences
- * * source template
- * * source code and configuration files
- *
- * The other thing is that lots of dependencies that are declared in the callbacks
- * are not intelligently handled. There's some room for improvement there.
- *
- * The class is derived from SkinTemplate, but that's only temporary. Eventually
- * it'll be derived from Skin, and I've avoided using SkinTemplate functions as
- * much as possible. In fact, the only SkinTemplate dependencies I know of at the
- * moment are the functions to generate the gen=css and gen=js files.
- *
- */
-class SkinMonoBookCBT extends SkinTemplate {
- var $mOut, $mTitle;
- var $mStyleName = 'monobook';
- var $mCompiling = false;
- var $mFunctionCache = array();
-
- /******************************************************
- * General functions *
- ******************************************************/
-
- /** Execute the template and write out the result */
- function outputPage( &$out ) {
- echo $this->execute( $out );
- }
-
- function execute( &$out ) {
- global $wgTitle, $wgStyleDirectory, $wgParserCacheType;
- $fname = 'SkinMonoBookCBT::execute';
- wfProfileIn( $fname );
- wfProfileIn( "$fname-setup" );
- Skin::initPage( $out );
-
- $this->mOut =& $out;
- $this->mTitle =& $wgTitle;
-
- $sourceFile = "$wgStyleDirectory/MonoBook.tpl";
-
- wfProfileOut( "$fname-setup" );
-
- if ( $wgParserCacheType == CACHE_NONE ) {
- $template = file_get_contents( $sourceFile );
- $text = $this->executeTemplate( $template );
- } else {
- $compiled = $this->getCompiledTemplate( $sourceFile );
-
- wfProfileIn( "$fname-eval" );
- $text = eval( $compiled );
- wfProfileOut( "$fname-eval" );
- }
- wfProfileOut( $fname );
- return $text;
- }
-
- function getCompiledTemplate( $sourceFile ) {
- global $wgDBname, $wgMemc, $wgRequest, $wgUser, $parserMemc;
- $fname = 'SkinMonoBookCBT::getCompiledTemplate';
-
- $expiry = 3600;
-
- // Sandbox template execution
- if ( $this->mCompiling ) {
- return;
- }
-
- wfProfileIn( $fname );
-
- // Is the request an ordinary page view?
- if ( $wgRequest->wasPosted() ||
- count( array_diff( array_keys( $_GET ), array( 'title', 'useskin', 'recompile' ) ) ) != 0 )
- {
- $type = 'nonview';
- } else {
- $type = 'view';
- }
-
- // Per-user compiled template
- // Put all logged-out users on the same cache key
- $cacheKey = "$wgDBname:monobookcbt:$type:" . $wgUser->getId();
-
- $recompile = $wgRequest->getVal( 'recompile' );
- if ( $recompile == 'user' ) {
- $recompileUser = true;
- $recompileGeneric = false;
- } elseif ( $recompile ) {
- $recompileUser = true;
- $recompileGeneric = true;
- } else {
- $recompileUser = false;
- $recompileGeneric = false;
- }
-
- if ( !$recompileUser ) {
- $php = $parserMemc->get( $cacheKey );
- }
- if ( $recompileUser || !$php ) {
- if ( $wgUser->isLoggedIn() ) {
- // Perform staged compilation
- // First compile a generic template for all logged-in users
- $genericKey = "$wgDBname:monobookcbt:$type:loggedin";
- if ( !$recompileGeneric ) {
- $template = $parserMemc->get( $genericKey );
- }
- if ( $recompileGeneric || !$template ) {
- $template = file_get_contents( $sourceFile );
- $ignore = array( 'loggedin', '!loggedin dynamic' );
- if ( $type == 'view' ) {
- $ignore[] = 'nonview dynamic';
- }
- $template = $this->compileTemplate( $template, $ignore );
- $parserMemc->set( $genericKey, $template, $expiry );
- }
- } else {
- $template = file_get_contents( $sourceFile );
- }
-
- $ignore = array( 'lang', 'loggedin', 'user' );
- if ( $wgUser->isLoggedIn() ) {
- $ignore[] = '!loggedin dynamic';
- } else {
- $ignore[] = 'loggedin dynamic';
- }
- if ( $type == 'view' ) {
- $ignore[] = 'nonview dynamic';
- }
- $compiled = $this->compileTemplate( $template, $ignore );
-
- // Reduce whitespace
- // This is done here instead of in CBTProcessor because we can be
- // more sure it is safe here.
- $compiled = preg_replace( '/^[ \t]+/m', '', $compiled );
- $compiled = preg_replace( '/[\r\n]+/', "\n", $compiled );
-
- // Compile to PHP
- $compiler = new CBTCompiler( $compiled );
- $ret = $compiler->compile();
- if ( $ret !== true ) {
- echo $ret;
- wfErrorExit();
- }
- $php = $compiler->generatePHP( '$this' );
-
- $parserMemc->set( $cacheKey, $php, $expiry );
- }
- wfProfileOut( $fname );
- return $php;
- }
-
- function compileTemplate( $template, $ignore ) {
- $tp = new CBTProcessor( $template, $this, $ignore );
- $tp->mFunctionCache = $this->mFunctionCache;
-
- $this->mCompiling = true;
- $compiled = $tp->compile();
- $this->mCompiling = false;
-
- if ( $tp->getLastError() ) {
- // If there was a compile error, don't save the template
- // Instead just print the error and exit
- echo $compiled;
- wfErrorExit();
- }
- $this->mFunctionCache = $tp->mFunctionCache;
- return $compiled;
- }
-
- function executeTemplate( $template ) {
- $fname = 'SkinMonoBookCBT::executeTemplate';
- wfProfileIn( $fname );
- $tp = new CBTProcessor( $template, $this );
- $tp->mFunctionCache = $this->mFunctionCache;
-
- $this->mCompiling = true;
- $text = $tp->execute();
- $this->mCompiling = false;
-
- $this->mFunctionCache = $tp->mFunctionCache;
- wfProfileOut( $fname );
- return $text;
- }
-
- /******************************************************
- * Callbacks *
- ******************************************************/
-
- function lang() { return $GLOBALS['wgContLanguageCode']; }
-
- function dir() {
- global $wgContLang;
- return $wgContLang->isRTL() ? 'rtl' : 'ltr';
- }
-
- function mimetype() { return $GLOBALS['wgMimeType']; }
- function charset() { return $GLOBALS['wgOutputEncoding']; }
- function headlinks() {
- return cbt_value( $this->mOut->getHeadLinks(), 'dynamic' );
- }
- function headscripts() {
- return cbt_value( $this->mOut->getScript(), 'dynamic' );
- }
-
- function pagetitle() {
- return cbt_value( $this->mOut->getHTMLTitle(), array( 'title', 'lang' ) );
- }
-
- function stylepath() { return $GLOBALS['wgStylePath']; }
- function stylename() { return $this->mStyleName; }
-
- function notprintable() {
- global $wgRequest;
- return cbt_value( !$wgRequest->getBool( 'printable' ), 'nonview dynamic' );
- }
-
- function jsmimetype() { return $GLOBALS['wgJsMimeType']; }
-
- function jsvarurl() {
- global $wgUseSiteJs, $wgUser;
- if ( !$wgUseSiteJs ) return '';
-
- if ( $wgUser->isLoggedIn() ) {
- $url = self::makeUrl( '-','action=raw&smaxage=0&gen=js' );
- } else {
- $url = self::makeUrl( '-','action=raw&gen=js' );
- }
- return cbt_value( $url, 'loggedin' );
- }
-
- function pagecss() {
- global $wgHooks;
-
- $out = false;
- wfRunHooks( 'SkinTemplateSetupPageCss', array( &$out ) );
-
- // Unknown dependencies
- return cbt_value( $out, 'dynamic' );
- }
-
- function usercss() {
- if ( $this->isCssPreview() ) {
- global $wgRequest;
- $usercss = $this->makeStylesheetCdata( $wgRequest->getText('wpTextbox1') );
- } else {
- $usercss = $this->makeStylesheetLink( self::makeUrl($this->getUserPageText() .
- '/'.$this->mStyleName.'.css', 'action=raw&ctype=text/css' ) );
- }
-
- // Dynamic when not an ordinary page view, also depends on the username
- return cbt_value( $usercss, array( 'nonview dynamic', 'user' ) );
- }
-
- function sitecss() {
- global $wgUseSiteCss;
- if ( !$wgUseSiteCss ) {
- return '';
- }
-
- global $wgSquidMaxage, $wgContLang, $wgStylePath;
-
- $query = "action=raw&ctype=text/css&smaxage=$wgSquidMaxage";
-
- $sitecss = '';
- if ( $wgContLang->isRTL() ) {
- $sitecss .= $this->makeStylesheetLink( $wgStylePath . '/' . $this->mStyleName . '/rtl.css' ) . "\n";
- }
-
- $sitecss .= $this->makeStylesheetLink( self::makeNSUrl( 'Common.css', $query, NS_MEDIAWIKI ) ) . "\n";
- $sitecss .= $this->makeStylesheetLink( self::makeNSUrl( ucfirst( $this->mStyleName ) . '.css', $query, NS_MEDIAWIKI ) ) . "\n";
-
- // No deps
- return $sitecss;
- }
-
- function gencss() {
- global $wgUseSiteCss;
- if ( !$wgUseSiteCss ) return '';
-
- global $wgSquidMaxage, $wgUser, $wgAllowUserCss;
- if ( $this->isCssPreview() ) {
- $siteargs = '&smaxage=0&maxage=0';
- } else {
- $siteargs = '&maxage=' . $wgSquidMaxage;
- }
- if ( $wgAllowUserCss && $wgUser->isLoggedIn() ) {
- $siteargs .= '&ts={user_touched}';
- $isTemplate = true;
- } else {
- $isTemplate = false;
- }
-
- $link = $this->makeStylesheetLink( self::makeUrl('-','action=raw&gen=css' . $siteargs) ) . "\n";
-
- if ( $wgAllowUserCss ) {
- $deps = 'loggedin';
- } else {
- $deps = array();
- }
- return cbt_value( $link, $deps, $isTemplate );
- }
-
- function user_touched() {
- global $wgUser;
- return cbt_value( $wgUser->mTouched, 'dynamic' );
- }
-
- function userjs() {
- global $wgAllowUserJs, $wgJsMimeType;
- if ( !$wgAllowUserJs ) return '';
-
- if ( $this->isJsPreview() ) {
- $url = '';
- } else {
- $url = self::makeUrl($this->getUserPageText().'/'.$this->mStyleName.'.js', 'action=raw&ctype='.$wgJsMimeType.'&dontcountme=s');
- }
- return cbt_value( $url, array( 'nonview dynamic', 'user' ) );
- }
-
- function userjsprev() {
- global $wgAllowUserJs, $wgRequest;
- if ( !$wgAllowUserJs ) return '';
- if ( $this->isJsPreview() ) {
- $js = '/*<![CDATA[*/ ' . $wgRequest->getText('wpTextbox1') . ' /*]]>*/';
- } else {
- $js = '';
- }
- return cbt_value( $js, array( 'nonview dynamic' ) );
- }
-
- function trackbackhtml() {
- global $wgUseTrackbacks;
- if ( !$wgUseTrackbacks ) return '';
-
- if ( $this->mOut->isArticleRelated() ) {
- $tb = $this->mTitle->trackbackRDF();
- } else {
- $tb = '';
- }
- return cbt_value( $tb, 'dynamic' );
- }
-
- function body_ondblclick() {
- global $wgUser;
- if( $this->isEditable() && $wgUser->getOption("editondblclick") ) {
- $js = 'document.location = "' . $this->getEditUrl() .'";';
- } else {
- $js = '';
- }
-
- if ( User::getDefaultOption('editondblclick') ) {
- return cbt_value( $js, 'user', 'title' );
- } else {
- // Optimise away for logged-out users
- return cbt_value( $js, 'loggedin dynamic' );
- }
- }
-
- function body_onload() {
- global $wgUser;
- if ( $this->isEditable() && $wgUser->getOption( 'editsectiononrightclick' ) ) {
- $js = 'setupRightClickEdit()';
- } else {
- $js = '';
- }
- return cbt_value( $js, 'loggedin dynamic' );
- }
-
- function nsclass() {
- return cbt_value( 'ns-' . $this->mTitle->getNamespace(), 'title' );
- }
-
- function sitenotice() {
- // Perhaps this could be given special dependencies using our knowledge of what
- // wfGetSiteNotice() depends on.
- return cbt_value( wfGetSiteNotice(), 'dynamic' );
- }
-
- function title() {
- return cbt_value( $this->mOut->getPageTitle(), array( 'title', 'lang' ) );
- }
-
- function title_urlform() {
- return cbt_value( $this->getThisTitleUrlForm(), 'title' );
- }
-
- function title_userurl() {
- return cbt_value( urlencode( $this->mTitle->getDBkey() ), 'title' );
- }
-
- function subtitle() {
- $subpagestr = $this->subPageSubtitle();
- if ( !empty( $subpagestr ) ) {
- $s = '<span class="subpages">'.$subpagestr.'</span>'.$this->mOut->getSubtitle();
- } else {
- $s = $this->mOut->getSubtitle();
- }
- return cbt_value( $s, array( 'title', 'nonview dynamic' ) );
- }
-
- function undelete() {
- return cbt_value( $this->getUndeleteLink(), array( 'title', 'lang' ) );
- }
-
- function newtalk() {
- global $wgUser, $wgDBname;
- $newtalks = $wgUser->getNewMessageLinks();
-
- if (count($newtalks) == 1 && $newtalks[0]["wiki"] === $wgDBname) {
- $usertitle = $this->getUserPageTitle();
- $usertalktitle = $usertitle->getTalkPage();
- if( !$usertalktitle->equals( $this->mTitle ) ) {
- $ntl = wfMsg( 'youhavenewmessages',
- $this->makeKnownLinkObj(
- $usertalktitle,
- wfMsgHtml( 'newmessageslink' ),
- 'redirect=no'
- ),
- $this->makeKnownLinkObj(
- $usertalktitle,
- wfMsgHtml( 'newmessagesdifflink' ),
- 'diff=cur'
- )
- );
- # Disable Cache
- $this->mOut->setSquidMaxage(0);
- }
- } else if (count($newtalks)) {
- $sep = str_replace("_", " ", wfMsgHtml("newtalkseparator"));
- $msgs = array();
- foreach ($newtalks as $newtalk) {
- $msgs[] = wfElement("a",
- array('href' => $newtalk["link"]), $newtalk["wiki"]);
- }
- $parts = implode($sep, $msgs);
- $ntl = wfMsgHtml('youhavenewmessagesmulti', $parts);
- $this->mOut->setSquidMaxage(0);
- } else {
- $ntl = '';
- }
- return cbt_value( $ntl, 'dynamic' );
- }
-
- function showjumplinks() {
- global $wgUser;
- return cbt_value( $wgUser->getOption( 'showjumplinks' ) ? 'true' : '', 'user' );
- }
-
- function bodytext() {
- return cbt_value( $this->mOut->getHTML(), 'dynamic' );
- }
-
- function catlinks() {
- if ( !isset( $this->mCatlinks ) ) {
- $this->mCatlinks = $this->getCategories();
- }
- return cbt_value( $this->mCatlinks, 'dynamic' );
- }
-
- function extratabs( $itemTemplate ) {
- global $wgContLang, $wgDisableLangConversion;
-
- $etpl = cbt_escape( $itemTemplate );
-
- /* show links to different language variants */
- $variants = $wgContLang->getVariants();
- $s = '';
- if ( !$wgDisableLangConversion && count( $wgContLang->getVariants() ) > 1 ) {
- $vcount=0;
- foreach ( $variants as $code ) {
- $name = $wgContLang->getVariantname( $code );
- if ( $name == 'disable' ) {
- continue;
- }
- $code = cbt_escape( $code );
- $name = cbt_escape( $name );
- $s .= "{ca_variant {{$code}} {{$name}} {{$vcount}} {{$etpl}}}\n";
- $vcount ++;
- }
- }
- return cbt_value( $s, array(), true );
- }
-
- function is_special() { return cbt_value( $this->mTitle->getNamespace() == NS_SPECIAL, 'title' ); }
- function can_edit() { return cbt_value( (string)($this->mTitle->userCan( 'edit' )), 'dynamic' ); }
- function can_move() { return cbt_value( (string)($this->mTitle->userCan( 'move' )), 'dynamic' ); }
- function is_talk() { return cbt_value( (string)($this->mTitle->isTalkPage()), 'title' ); }
- function is_protected() { return cbt_value( (string)$this->mTitle->isProtected(), 'dynamic' ); }
- function nskey() { return cbt_value( $this->mTitle->getNamespaceKey(), 'title' ); }
-
- function request_url() {
- global $wgRequest;
- return cbt_value( $wgRequest->getRequestURL(), 'dynamic' );
- }
-
- function subject_url() {
- $title = $this->getSubjectPage();
- if ( $title->exists() ) {
- $url = $title->getLocalUrl();
- } else {
- $url = $title->getLocalUrl( 'action=edit' );
- }
- return cbt_value( $url, 'title' );
- }
-
- function talk_url() {
- $title = $this->getTalkPage();
- if ( $title->exists() ) {
- $url = $title->getLocalUrl();
- } else {
- $url = $title->getLocalUrl( 'action=edit' );
- }
- return cbt_value( $url, 'title' );
- }
-
- function edit_url() {
- return cbt_value( $this->getEditUrl(), array( 'title', 'nonview dynamic' ) );
- }
-
- function move_url() {
- return cbt_value( $this->makeSpecialParamUrl( 'Movepage' ), array(), true );
- }
-
- function localurl( $query ) {
- return cbt_value( $this->mTitle->getLocalURL( $query ), 'title' );
- }
-
- function selecttab( $tab, $extraclass = '' ) {
- if ( !isset( $this->mSelectedTab ) ) {
- $prevent_active_tabs = false ;
- wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this , &$preventActiveTabs ) );
-
- $actionTabs = array(
- 'edit' => 'edit',
- 'submit' => 'edit',
- 'history' => 'history',
- 'protect' => 'protect',
- 'unprotect' => 'protect',
- 'delete' => 'delete',
- 'watch' => 'watch',
- 'unwatch' => 'watch',
- );
- if ( $preventActiveTabs ) {
- $this->mSelectedTab = false;
- } else {
- $action = $this->getAction();
- $section = $this->getSection();
-
- if ( isset( $actionTabs[$action] ) ) {
- $this->mSelectedTab = $actionTabs[$action];
-
- if ( $this->mSelectedTab == 'edit' && $section == 'new' ) {
- $this->mSelectedTab = 'addsection';
- }
- } elseif ( $this->mTitle->isTalkPage() ) {
- $this->mSelectedTab = 'talk';
- } else {
- $this->mSelectedTab = 'subject';
- }
- }
- }
- if ( $extraclass ) {
- if ( $this->mSelectedTab == $tab ) {
- $s = 'class="selected ' . htmlspecialchars( $extraclass ) . '"';
- } else {
- $s = 'class="' . htmlspecialchars( $extraclass ) . '"';
- }
- } else {
- if ( $this->mSelectedTab == $tab ) {
- $s = 'class="selected"';
- } else {
- $s = '';
- }
- }
- return cbt_value( $s, array( 'nonview dynamic', 'title' ) );
- }
-
- function subject_newclass() {
- $title = $this->getSubjectPage();
- $class = $title->exists() ? '' : 'new';
- return cbt_value( $class, 'dynamic' );
- }
-
- function talk_newclass() {
- $title = $this->getTalkPage();
- $class = $title->exists() ? '' : 'new';
- return cbt_value( $class, 'dynamic' );
- }
-
- function ca_variant( $code, $name, $index, $template ) {
- global $wgContLang;
- $selected = ($code == $wgContLang->getPreferredVariant());
- $action = $this->getAction();
- $actstr = '';
- if( $action )
- $actstr = 'action=' . $action . '&';
- $s = strtr( $template, array(
- '$id' => htmlspecialchars( 'varlang-' . $index ),
- '$class' => $selected ? 'class="selected"' : '',
- '$text' => $name,
- '$href' => htmlspecialchars( $this->mTitle->getLocalUrl( $actstr . 'variant=' . $code ) )
- ));
- return cbt_value( $s, 'dynamic' );
- }
-
- function is_watching() {
- return cbt_value( (string)$this->mTitle->userIsWatching(), array( 'dynamic' ) );
- }
-
-
- function personal_urls( $itemTemplate ) {
- global $wgShowIPinHeader, $wgContLang;
-
- # Split this function up into many small functions, to obtain the
- # best specificity in the dependencies of each one. The template below
- # has no dependencies, so its generation, and any static subfunctions,
- # can be optimised away.
- $etpl = cbt_escape( $itemTemplate );
- $s = "
- {userpage {{$etpl}}}
- {mytalk {{$etpl}}}
- {preferences {{$etpl}}}
- {watchlist {{$etpl}}}
- {mycontris {{$etpl}}}
- {logout {{$etpl}}}
- ";
-
- if ( $wgShowIPinHeader ) {
- $s .= "
- {anonuserpage {{$etpl}}}
- {anontalk {{$etpl}}}
- {anonlogin {{$etpl}}}
- ";
- } else {
- $s .= "{login {{$etpl}}}\n";
- }
- // No dependencies
- return cbt_value( $s, array(), true /*this is a template*/ );
- }
-
- function userpage( $itemTemplate ) {
- global $wgUser;
- if ( $this->isLoggedIn() ) {
- $userPage = $this->getUserPageTitle();
- $s = $this->makeTemplateLink( $itemTemplate, 'userpage', $userPage, $wgUser->getName() );
- } else {
- $s = '';
- }
- return cbt_value( $s, 'user' );
- }
-
- function mytalk( $itemTemplate ) {
- global $wgUser;
- if ( $this->isLoggedIn() ) {
- $userPage = $this->getUserPageTitle();
- $talkPage = $userPage->getTalkPage();
- $s = $this->makeTemplateLink( $itemTemplate, 'mytalk', $talkPage, wfMsg('mytalk') );
- } else {
- $s = '';
- }
- return cbt_value( $s, 'user' );
- }
-
- function preferences( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'preferences',
- 'Preferences', wfMsg( 'preferences' ) );
- } else {
- $s = '';
- }
- return cbt_value( $s, array( 'loggedin', 'lang' ) );
- }
-
- function watchlist( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'watchlist',
- 'Watchlist', wfMsg( 'watchlist' ) );
- } else {
- $s = '';
- }
- return cbt_value( $s, array( 'loggedin', 'lang' ) );
- }
-
- function mycontris( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- global $wgUser;
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'mycontris',
- "Contributions/" . $wgUser->getTitleKey(), wfMsg('mycontris') );
- } else {
- $s = '';
- }
- return cbt_value( $s, 'user' );
- }
-
- function logout( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'logout',
- 'Userlogout', wfMsg( 'userlogout' ),
- $this->mTitle->getNamespace() === NS_SPECIAL && $this->mTitle->getText() === 'Preferences'
- ? '' : "returnto=" . $this->mTitle->getPrefixedURL() );
- } else {
- $s = '';
- }
- return cbt_value( $s, 'loggedin dynamic' );
- }
-
- function anonuserpage( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = '';
- } else {
- global $wgUser;
- $userPage = $this->getUserPageTitle();
- $s = $this->makeTemplateLink( $itemTemplate, 'userpage', $userPage, $wgUser->getName() );
- }
- return cbt_value( $s, '!loggedin dynamic' );
- }
-
- function anontalk( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = '';
- } else {
- $userPage = $this->getUserPageTitle();
- $talkPage = $userPage->getTalkPage();
- $s = $this->makeTemplateLink( $itemTemplate, 'mytalk', $talkPage, wfMsg('anontalk') );
- }
- return cbt_value( $s, '!loggedin dynamic' );
- }
-
- function anonlogin( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = '';
- } else {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'anonlogin', 'Userlogin',
- wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
- }
- return cbt_value( $s, '!loggedin dynamic' );
- }
-
- function login( $itemTemplate ) {
- if ( $this->isLoggedIn() ) {
- $s = '';
- } else {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'login', 'Userlogin',
- wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
- }
- return cbt_value( $s, '!loggedin dynamic' );
- }
-
- function logopath() { return $GLOBALS['wgLogo']; }
- function mainpage() { return self::makeMainPageUrl(); }
-
- function sidebar( $startSection, $endSection, $innerTpl ) {
- $s = '';
- $lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
- $firstSection = true;
- foreach ($lines as $line) {
- if (strpos($line, '*') !== 0)
- continue;
- if (strpos($line, '**') !== 0) {
- $bar = trim($line, '* ');
- $name = wfMsg( $bar );
- if (wfEmptyMsg($bar, $name)) {
- $name = $bar;
- }
- if ( $firstSection ) {
- $firstSection = false;
- } else {
- $s .= $endSection;
- }
- $s .= strtr( $startSection,
- array(
- '$bar' => htmlspecialchars( $bar ),
- '$barname' => $name
- ) );
- } else {
- if (strpos($line, '|') !== false) { // sanity check
- $line = explode( '|' , trim($line, '* '), 2 );
- $link = wfMsgForContent( $line[0] );
- if ($link == '-')
- continue;
- if (wfEmptyMsg($line[1], $text = wfMsg($line[1])))
- $text = $line[1];
- if (wfEmptyMsg($line[0], $link))
- $link = $line[0];
- $href = self::makeInternalOrExternalUrl( $link );
-
- $s .= strtr( $innerTpl,
- array(
- '$text' => htmlspecialchars( $text ),
- '$href' => htmlspecialchars( $href ),
- '$id' => htmlspecialchars( 'n-' . strtr($line[1], ' ', '-') ),
- '$classactive' => ''
- ) );
- } else { continue; }
- }
- }
- if ( !$firstSection ) {
- $s .= $endSection;
- }
-
- // Depends on user language only
- return cbt_value( $s, 'lang' );
- }
-
- function searchaction() {
- // Static link
- return $this->getSearchLink();
- }
-
- function search() {
- global $wgRequest;
- return cbt_value( trim( $this->getSearch() ), 'special dynamic' );
- }
-
- function notspecialpage() {
- return cbt_value( $this->mTitle->getNamespace() != NS_SPECIAL, 'special' );
- }
-
- function nav_whatlinkshere() {
- return cbt_value( $this->makeSpecialParamUrl('Whatlinkshere' ), array(), true );
- }
-
- function article_exists() {
- return cbt_value( (string)($this->mTitle->getArticleId() !== 0), 'title' );
- }
-
- function nav_recentchangeslinked() {
- return cbt_value( $this->makeSpecialParamUrl('Recentchangeslinked' ), array(), true );
- }
-
- function feeds( $itemTemplate = '' ) {
- if ( !$this->mOut->isSyndicated() ) {
- $feeds = '';
- } elseif ( $itemTemplate == '' ) {
- // boolean only required
- $feeds = 'true';
- } else {
- $feeds = '';
- global $wgFeedClasses, $wgRequest;
- foreach( $wgFeedClasses as $format => $class ) {
- $feeds .= strtr( $itemTemplate,
- array(
- '$key' => htmlspecialchars( $format ),
- '$text' => $format,
- '$href' => $wgRequest->appendQuery( "feed=$format" )
- ) );
- }
- }
- return cbt_value( $feeds, 'special dynamic' );
- }
-
- function is_userpage() {
- list( $id, $ip ) = $this->getUserPageIdIp();
- return cbt_value( (string)($id || $ip), 'title' );
- }
-
- function is_ns_mediawiki() {
- return cbt_value( (string)$this->mTitle->getNamespace() == NS_MEDIAWIKI, 'title' );
- }
-
- function is_loggedin() {
- global $wgUser;
- return cbt_value( (string)($wgUser->isLoggedIn()), 'loggedin' );
- }
-
- function nav_contributions() {
- $url = $this->makeSpecialParamUrl( 'Contributions', '', '{title_userurl}' );
- return cbt_value( $url, array(), true );
- }
-
- function is_allowed( $right ) {
- global $wgUser;
- return cbt_value( (string)$wgUser->isAllowed( $right ), 'user' );
- }
-
- function nav_blockip() {
- $url = $this->makeSpecialParamUrl( 'Blockip', '', '{title_userurl}' );
- return cbt_value( $url, array(), true );
- }
-
- function nav_emailuser() {
- global $wgEnableEmail, $wgEnableUserEmail, $wgUser;
- if ( !$wgEnableEmail || !$wgEnableUserEmail ) return '';
-
- $url = $this->makeSpecialParamUrl( 'Emailuser', '', '{title_userurl}' );
- return cbt_value( $url, array(), true );
- }
-
- function nav_upload() {
- global $wgEnableUploads, $wgUploadNavigationUrl;
- if ( !$wgEnableUploads ) {
- return '';
- } elseif ( $wgUploadNavigationUrl ) {
- return $wgUploadNavigationUrl;
- } else {
- return self::makeSpecialUrl('Upload');
- }
- }
-
- function nav_specialpages() {
- return self::makeSpecialUrl('Specialpages');
- }
-
- function nav_print() {
- global $wgRequest, $wgArticle;
- $action = $this->getAction();
- $url = '';
- if( $this->mTitle->getNamespace() !== NS_SPECIAL
- && ($action == '' || $action == 'view' || $action == 'purge' ) )
- {
- $revid = $wgArticle->getLatest();
- if ( $revid != 0 ) {
- $url = $wgRequest->appendQuery( 'printable=yes' );
- }
- }
- return cbt_value( $url, array( 'nonview dynamic', 'title' ) );
- }
-
- function nav_permalink() {
- $url = (string)$this->getPermalink();
- return cbt_value( $url, 'dynamic' );
- }
-
- function nav_trackbacklink() {
- global $wgUseTrackbacks;
- if ( !$wgUseTrackbacks ) return '';
-
- return cbt_value( $this->mTitle->trackbackURL(), 'title' );
- }
-
- function is_permalink() {
- return cbt_value( (string)($this->getPermalink() === false), 'nonview dynamic' );
- }
-
- function toolboxend() {
- // This is where the MonoBookTemplateToolboxEnd hook went in the old skin
- return '';
- }
-
- function language_urls( $outer, $inner ) {
- global $wgHideInterlanguageLinks, $wgOut, $wgContLang;
- if ( $wgHideInterlanguageLinks ) return '';
-
- $links = $wgOut->getLanguageLinks();
- $s = '';
- if ( count( $links ) ) {
- foreach( $links as $l ) {
- $tmp = explode( ':', $l, 2 );
- $nt = Title::newFromText( $l );
- $s .= strtr( $inner,
- array(
- '$class' => htmlspecialchars( 'interwiki-' . $tmp[0] ),
- '$href' => htmlspecialchars( $nt->getFullURL() ),
- '$text' => ($wgContLang->getLanguageName( $nt->getInterwiki() ) != ''?
- $wgContLang->getLanguageName( $nt->getInterwiki() ) : $l ),
- )
- );
- }
- $s = str_replace( '$body', $s, $outer );
- }
- return cbt_value( $s, 'dynamic' );
- }
-
- function poweredbyico() { return $this->getPoweredBy(); }
- function copyrightico() { return $this->getCopyrightIcon(); }
-
- function lastmod() {
- global $wgMaxCredits;
- if ( $wgMaxCredits ) return '';
-
- if ( !isset( $this->mLastmod ) ) {
- if ( $this->isCurrentArticleView() ) {
- $this->mLastmod = $this->lastModified();
- } else {
- $this->mLastmod = '';
- }
- }
- return cbt_value( $this->mLastmod, 'dynamic' );
- }
-
- function viewcount() {
- global $wgDisableCounters;
- if ( $wgDisableCounters ) return '';
-
- global $wgLang, $wgArticle;
- if ( is_object( $wgArticle ) ) {
- $viewcount = $wgLang->formatNum( $wgArticle->getCount() );
- if ( $viewcount ) {
- $viewcount = wfMsg( "viewcount", $viewcount );
- } else {
- $viewcount = '';
- }
- } else {
- $viewcount = '';
- }
- return cbt_value( $viewcount, 'dynamic' );
- }
-
- function numberofwatchingusers() {
- global $wgPageShowWatchingUsers;
- if ( !$wgPageShowWatchingUsers ) return '';
-
- $dbr = wfGetDB( DB_SLAVE );
- extract( $dbr->tableNames( 'watchlist' ) );
- $sql = "SELECT COUNT(*) AS n FROM $watchlist
- WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBkey()) .
- "' AND wl_namespace=" . $this->mTitle->getNamespace() ;
- $res = $dbr->query( $sql, 'SkinTemplate::outputPage');
- $row = $dbr->fetchObject( $res );
- $num = $row->n;
- if ($num > 0) {
- $s = wfMsg('number_of_watching_users_pageview', $num);
- } else {
- $s = '';
- }
- return cbt_value( $s, 'dynamic' );
- }
-
- function credits() {
- global $wgMaxCredits;
- if ( !$wgMaxCredits ) return '';
-
- if ( $this->isCurrentArticleView() ) {
- require_once("Credits.php");
- global $wgArticle, $wgShowCreditsIfMax;
- $credits = getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax);
- } else {
- $credits = '';
- }
- return cbt_value( $credits, 'view dynamic' );
- }
-
- function normalcopyright() {
- return $this->getCopyright( 'normal' );
- }
-
- function historycopyright() {
- return $this->getCopyright( 'history' );
- }
-
- function is_currentview() {
- global $wgRequest;
- return cbt_value( (string)$this->isCurrentArticleView(), 'view' );
- }
-
- function usehistorycopyright() {
- global $wgRequest;
- if ( wfMsgForContent( 'history_copyright' ) == '-' ) return '';
-
- $oldid = $this->getOldId();
- $diff = $this->getDiff();
- $use = (string)(!is_null( $oldid ) && is_null( $diff ));
- return cbt_value( $use, 'nonview dynamic' );
- }
-
- function privacy() {
- return cbt_value( $this->privacyLink(), 'lang' );
- }
- function about() {
- return cbt_value( $this->aboutLink(), 'lang' );
- }
- function disclaimer() {
- return cbt_value( $this->disclaimerLink(), 'lang' );
- }
- function tagline() {
- # A reference to this tag existed in the old MonoBook.php, but the
- # template data wasn't set anywhere
- return '';
- }
- function reporttime() {
- return cbt_value( $this->mOut->reportTime(), 'dynamic' );
- }
-
- function msg( $name ) {
- return cbt_value( wfMsg( $name ), 'lang' );
- }
-
- function fallbackmsg( $name, $fallback ) {
- $text = wfMsg( $name );
- if ( wfEmptyMsg( $name, $text ) ) {
- $text = $fallback;
- }
- return cbt_value( $text, 'lang' );
- }
-
- /******************************************************
- * Utility functions *
- ******************************************************/
-
- /** Return true if this request is a valid, secure CSS preview */
- function isCssPreview() {
- if ( !isset( $this->mCssPreview ) ) {
- global $wgRequest, $wgAllowUserCss, $wgUser;
- $this->mCssPreview =
- $wgAllowUserCss &&
- $wgUser->isLoggedIn() &&
- $this->mTitle->isCssSubpage() &&
- $this->userCanPreview( $this->getAction() );
- }
- return $this->mCssPreview;
- }
-
- /** Return true if this request is a valid, secure JS preview */
- function isJsPreview() {
- if ( !isset( $this->mJsPreview ) ) {
- global $wgRequest, $wgAllowUserJs, $wgUser;
- $this->mJsPreview =
- $wgAllowUserJs &&
- $wgUser->isLoggedIn() &&
- $this->mTitle->isJsSubpage() &&
- $this->userCanPreview( $this->getAction() );
- }
- return $this->mJsPreview;
- }
-
- /** Get the title of the $wgUser's user page */
- function getUserPageTitle() {
- if ( !isset( $this->mUserPageTitle ) ) {
- global $wgUser;
- $this->mUserPageTitle = $wgUser->getUserPage();
- }
- return $this->mUserPageTitle;
- }
-
- /** Get the text of the user page title */
- function getUserPageText() {
- if ( !isset( $this->mUserPageText ) ) {
- $userPage = $this->getUserPageTitle();
- $this->mUserPageText = $userPage->getPrefixedText();
- }
- return $this->mUserPageText;
- }
-
- /** Make an HTML element for a stylesheet link */
- function makeStylesheetLink( $url ) {
- return '<link rel="stylesheet" type="text/css" href="' . htmlspecialchars( $url ) . "\"/>";
- }
-
- /** Make an XHTML element for inline CSS */
- function makeStylesheetCdata( $style ) {
- return "<style type=\"text/css\"> /*<![CDATA[*/ {$style} /*]]>*/ </style>";
- }
-
- /** Get the edit URL for this page */
- function getEditUrl() {
- if ( !isset( $this->mEditUrl ) ) {
- $this->mEditUrl = $this->mTitle->getLocalUrl( $this->editUrlOptions() );
- }
- return $this->mEditUrl;
- }
-
- /** Get the prefixed DB key for this page */
- function getThisPDBK() {
- if ( !isset( $this->mThisPDBK ) ) {
- $this->mThisPDBK = $this->mTitle->getPrefixedDbKey();
- }
- return $this->mThisPDBK;
- }
-
- function getThisTitleUrlForm() {
- if ( !isset( $this->mThisTitleUrlForm ) ) {
- $this->mThisTitleUrlForm = $this->mTitle->getPrefixedURL();
- }
- return $this->mThisTitleUrlForm;
- }
-
- /**
- * If the current page is a user page, get the user's ID and IP. Otherwise return array(0,false)
- */
- function getUserPageIdIp() {
- if ( !isset( $this->mUserPageId ) ) {
- if( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
- $this->mUserPageId = User::idFromName($this->mTitle->getText());
- $this->mUserPageIp = User::isIP($this->mTitle->getText());
- } else {
- $this->mUserPageId = 0;
- $this->mUserPageIp = false;
- }
- }
- return array( $this->mUserPageId, $this->mUserPageIp );
- }
-
- /**
- * Returns a permalink URL, or false if the current page is already a
- * permalink, or blank if a permalink shouldn't be displayed
- */
- function getPermalink() {
- if ( !isset( $this->mPermalink ) ) {
- global $wgRequest, $wgArticle;
- $action = $this->getAction();
- $oldid = $this->getOldId();
- $url = '';
- if( $this->mTitle->getNamespace() !== NS_SPECIAL
- && $this->mTitle->getArticleId() != 0
- && ($action == '' || $action == 'view' || $action == 'purge' ) )
- {
- if ( !$oldid ) {
- $revid = $wgArticle->getLatest();
- $url = $this->mTitle->getLocalURL( "oldid=$revid" );
- } else {
- $url = false;
- }
- } else {
- $url = '';
- }
- }
- return $url;
- }
-
- /**
- * Returns true if the current page is an article, not a special page,
- * and we are viewing a revision, not a diff
- */
- function isArticleView() {
- global $wgOut, $wgArticle, $wgRequest;
- if ( !isset( $this->mIsArticleView ) ) {
- $oldid = $this->getOldId();
- $diff = $this->getDiff();
- $this->mIsArticleView = $wgOut->isArticle() and
- (!is_null( $oldid ) or is_null( $diff )) and 0 != $wgArticle->getID();
- }
- return $this->mIsArticleView;
- }
-
- function isCurrentArticleView() {
- if ( !isset( $this->mIsCurrentArticleView ) ) {
- global $wgOut, $wgArticle, $wgRequest;
- $oldid = $this->getOldId();
- $this->mIsCurrentArticleView = $wgOut->isArticle() && is_null( $oldid ) && 0 != $wgArticle->getID();
- }
- return $this->mIsCurrentArticleView;
- }
-
-
- /**
- * Return true if the current page is editable; if edit section on right
- * click should be enabled.
- */
- function isEditable() {
- global $wgRequest;
- $action = $this->getAction();
- return ($this->mTitle->getNamespace() != NS_SPECIAL and !($action == 'edit' or $action == 'submit'));
- }
-
- /** Return true if the user is logged in */
- function isLoggedIn() {
- global $wgUser;
- return $wgUser->isLoggedIn();
- }
-
- /** Get the local URL of the current page */
- function getPageUrl() {
- if ( !isset( $this->mPageUrl ) ) {
- $this->mPageUrl = $this->mTitle->getLocalURL();
- }
- return $this->mPageUrl;
- }
-
- /** Make a link to a title using a template */
- function makeTemplateLink( $template, $key, $title, $text ) {
- $url = $title->getLocalUrl();
- return strtr( $template,
- array(
- '$key' => $key,
- '$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
- '$class' => $title->getArticleID() == 0 ? 'class="new"' : '',
- '$href' => htmlspecialchars( $url ),
- '$text' => $text
- ) );
- }
-
- /** Make a link to a URL using a template */
- function makeTemplateLinkUrl( $template, $key, $url, $text ) {
- return strtr( $template,
- array(
- '$key' => $key,
- '$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
- '$class' => '',
- '$href' => htmlspecialchars( $url ),
- '$text' => $text
- ) );
- }
-
- /** Make a link to a special page using a template */
- function makeSpecialTemplateLink( $template, $key, $specialName, $text, $query = '' ) {
- $url = self::makeSpecialUrl( $specialName, $query );
- // Ignore the query when comparing
- $active = ($this->mTitle->getNamespace() == NS_SPECIAL && $this->mTitle->getDBkey() == $specialName);
- return strtr( $template,
- array(
- '$key' => $key,
- '$classactive' => $active ? 'class="active"' : '',
- '$class' => '',
- '$href' => htmlspecialchars( $url ),
- '$text' => $text
- ) );
- }
-
- function loadRequestValues() {
- global $wgRequest;
- $this->mAction = $wgRequest->getText( 'action' );
- $this->mOldId = $wgRequest->getVal( 'oldid' );
- $this->mDiff = $wgRequest->getVal( 'diff' );
- $this->mSection = $wgRequest->getVal( 'section' );
- $this->mSearch = $wgRequest->getVal( 'search' );
- $this->mRequestValuesLoaded = true;
- }
-
-
-
- /** Get the action parameter of the request */
- function getAction() {
- if ( !isset( $this->mRequestValuesLoaded ) ) {
- $this->loadRequestValues();
- }
- return $this->mAction;
- }
-
- /** Get the oldid parameter */
- function getOldId() {
- if ( !isset( $this->mRequestValuesLoaded ) ) {
- $this->loadRequestValues();
- }
- return $this->mOldId;
- }
-
- /** Get the diff parameter */
- function getDiff() {
- if ( !isset( $this->mRequestValuesLoaded ) ) {
- $this->loadRequestValues();
- }
- return $this->mDiff;
- }
-
- function getSection() {
- if ( !isset( $this->mRequestValuesLoaded ) ) {
- $this->loadRequestValues();
- }
- return $this->mSection;
- }
-
- function getSearch() {
- if ( !isset( $this->mRequestValuesLoaded ) ) {
- $this->loadRequestValues();
- }
- return $this->mSearch;
- }
-
- /** Make a special page URL of the form [[Special:Somepage/{title_urlform}]] */
- function makeSpecialParamUrl( $name, $query = '', $param = '{title_urlform}' ) {
- // Abuse makeTitle's lax validity checking to slip a control character into the URL
- $title = Title::makeTitle( NS_SPECIAL, "$name/\x1a" );
- $url = cbt_escape( $title->getLocalURL( $query ) );
- // Now replace it with the parameter
- return str_replace( '%1A', $param, $url );
- }
-
- function getSubjectPage() {
- if ( !isset( $this->mSubjectPage ) ) {
- $this->mSubjectPage = $this->mTitle->getSubjectPage();
- }
- return $this->mSubjectPage;
- }
-
- function getTalkPage() {
- if ( !isset( $this->mTalkPage ) ) {
- $this->mTalkPage = $this->mTitle->getTalkPage();
- }
- return $this->mTalkPage;
- }
-}
-
diff --git a/skins/modern/discussionitem_icon.gif b/skins/modern/discussionitem_icon.gif
index baec471a..e3ca6d9e 100644
--- a/skins/modern/discussionitem_icon.gif
+++ b/skins/modern/discussionitem_icon.gif
Binary files differ
diff --git a/skins/modern/file_icon.gif b/skins/modern/file_icon.gif
index 847f6485..69dbeaf7 100644
--- a/skins/modern/file_icon.gif
+++ b/skins/modern/file_icon.gif
Binary files differ
diff --git a/skins/modern/link_icon.gif b/skins/modern/link_icon.gif
index 815ccb1b..168c1a2f 100644
--- a/skins/modern/link_icon.gif
+++ b/skins/modern/link_icon.gif
Binary files differ
diff --git a/skins/modern/lock_icon.gif b/skins/modern/lock_icon.gif
index 8a87e283..82844033 100644
--- a/skins/modern/lock_icon.gif
+++ b/skins/modern/lock_icon.gif
Binary files differ
diff --git a/skins/modern/mail_icon.gif b/skins/modern/mail_icon.gif
index 50a87a9a..cf5680d9 100644
--- a/skins/modern/mail_icon.gif
+++ b/skins/modern/mail_icon.gif
Binary files differ
diff --git a/skins/modern/main.css b/skins/modern/main.css
index 80ef008c..a25b6b59 100644
--- a/skins/modern/main.css
+++ b/skins/modern/main.css
@@ -153,7 +153,7 @@ textarea {
}
#searchInput {
- display: block;
+ width: 85%;
margin-left: auto;
margin-right: auto;
}
@@ -368,7 +368,7 @@ h1, h2 {
display: none;
}
-.prefsectiontip {
+.htmlform-tip {
font-size: x-small;
padding: .2em 2em;
color: #666;
@@ -396,6 +396,10 @@ h1, h2 {
color: white;
}
+#mw-pref-clear {
+ clear: both;
+}
+
#mw_content a.external,
#mw_content a[href ^="gopher://"] {
background: url(external.png) center right no-repeat;
@@ -531,12 +535,6 @@ img.thumbborder {
.hiddenStructure {
display: none;
}
-
-#mw_content .plainlinks a {
- background: none !important;
- padding: 0 !important;
-}
-
.mw-warning {
border: 1px solid #aaa;
background-color: #f9f9f9;
@@ -607,15 +605,10 @@ img.thumbborder {
.catlinks {
border: solid 1px #bbbbbb;
background-color: #f0f0f0;
- padding: 0.5em 0.5em 0.5em 0.5em;
+ padding: 0.1em 0.3em 0.1em 0.3em;
margin: 0 0 0 0;
}
-.catlinks {
- margin: 0 0 0 0;
- padding: 0 0 0 0;
-}
-
#mw_header h1,
#p-personal,
#p-cactions {
@@ -644,21 +637,6 @@ img.thumbborder {
display: none;
}
-.not-patrolled {
- background-color: #ffa;
-}
-div.patrollink {
- font-size: 75%;
- text-align: right;
-}
-span.newpage, span.minor, span.bot {
- font-weight: bold;
-}
-span.unpatrolled {
- font-weight: bold;
- color: red;
-}
-
.sharedUploadNotice {
font-style: italic;
}
@@ -668,55 +646,6 @@ span.updatedmarker {
background-color: #0f0;
}
-table.gallery {
- border: 1px solid #ccc;
- margin: 2px;
- padding: 2px;
- background-color: white;
-}
-
-table.gallery tr {
- vertical-align: top;
-}
-
-table.gallery td {
- vertical-align: top;
- background-color: #f9f9f9;
- border: solid 2px white;
-}
-/* Keep this temporarily so that cached pages will display right */
-table.gallery td.galleryheader {
- text-align: center;
- font-weight: bold;
-}
-table.gallery caption {
- font-weight: bold;
-}
-
-div.gallerybox {
- margin: 2px;
-}
-
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #ccc;
- margin: 2px;
-}
-
-div.gallerytext {
- overflow: hidden;
- font-size: 94%;
- padding: 2px 4px;
-}
-
-span.comment {
- font-style: italic;
-}
-
-span.changedby {
- font-size: 95%;
-}
-
.previewnote {
text-indent: 3em;
color: #c00;
@@ -749,69 +678,10 @@ span.changedby {
text-indent: -2em;
}
-/* Classes for EXIF data display */
-table.mw_metadata {
- font-size: 0.8em;
- margin-left: 0.5em;
- margin-bottom: 0.5em;
- width: 300px;
-}
-
-table.mw_metadata caption {
- font-weight: bold;
-}
-
-table.mw_metadata th {
- font-weight: normal;
-}
-
-table.mw_metadata td {
- padding: 0.1em;
-}
-
-table.mw_metadata {
- border: none;
- border-collapse: collapse;
-}
-
-table.mw_metadata td, table.mw_metadata th {
- text-align: center;
- border: 1px solid #aaaaaa;
- padding-left: 0.1em;
- padding-right: 0.1em;
-}
-
-table.mw_metadata th {
- background-color: #f9f9f9;
-}
-
-table.mw_metadata td {
- background-color: #fcfcfc;
-}
-
table.collapsed tr.collapsable {
display: none;
}
-
-/* filetoc */
-ul#filetoc {
- text-align: center;
- border: 1px solid #aaaaaa;
- background-color: #f9f9f9;
- padding: 5px;
- font-size: 95%;
- margin-bottom: 0.5em;
- margin-left: 0;
- margin-right: 0;
-}
-
-#filetoc li {
- display: inline;
- list-style-type: none;
- padding-right: 2em;
-}
-
input#wpSummary {
width: 80%;
}
@@ -849,32 +719,6 @@ p.revision_saved {
font-weight:bold;
}
-#mw_trackbacks {
- border: solid 1px #bbbbff;
- background-color: #eeeeff;
- padding: 0.2em;
-}
-
-
-/* Allmessages table */
-
-#allmessagestable th {
- background-color: #b2b2ff;
-}
-
-#allmessagestable tr.orig {
- background-color: #ffe2e2;
-}
-
-#allmessagestable tr.new {
- background-color: #e2ffe2;
-}
-
-#allmessagestable tr.def {
- background-color: #f0f0ff;
-}
-
-
/* noarticletext */
div.noarticletext {
border: 1px solid #ccc;
@@ -934,29 +778,6 @@ table.multipageimage td {
text-align: center;
}
-/** Special:Version */
-
-table#sv-ext, table#sv-hooks, table#sv-software {
- margin: 1em;
- padding:0em;
-}
-
-#sv-ext td, #sv-hooks td, #sv-software td,
-#sv-ext th, #sv-hooks th, #sv-software th {
- border: 1px solid #A0A0A0;
- padding: 0 0.15em 0 0.15em;
-}
-#sv-ext th, #sv-hooks th, #sv-software th {
- background-color: #F0F0F0;
- color: black;
- padding: 0 0.15em 0 0.15em;
-}
-tr.sv-space{
- height: 0.8em;
- border:none;
-}
-tr.sv-space td { display: none; }
-
/*
Table pager (e.g. Special:Imagelist)
- remove underlines from the navigation link
diff --git a/skins/modern/rtl.css b/skins/modern/rtl.css
index d2dcacec..72210480 100644
--- a/skins/modern/rtl.css
+++ b/skins/modern/rtl.css
@@ -79,7 +79,6 @@ input#wpSave, input#wpDiff {
}
#userlogin {
- float: right;
margin: 0 0 1em 3em;
}
/* Convenience links to edit block, delete and protect reasons */
@@ -152,6 +151,11 @@ html > body div#mw_contentholder ul#filetoc {
display: block;
}
+/* Special:Allpages styling */
+td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
+ text-align: left;
+}
+
/* Special:Prefixindex styling */
td#mw-prefixindex-nav-form {
text-align: left;
diff --git a/skins/monobook/IEMacFixes.css b/skins/monobook/IEMacFixes.css
deleted file mode 100644
index f1b05719..00000000
--- a/skins/monobook/IEMacFixes.css
+++ /dev/null
@@ -1,44 +0,0 @@
-/* IE/Mac only fix stylesheet, imported from main.css */
-#portal-column-content {
- margin: 0 0 4.8em 0;
- float: none;
-}
-#portal-column-content #content {
- z-index: 0;
-}
-#portal-column-one {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 3;
-}
-#portal-footer {
- margin-left: 12em;
-}
-/*
-#portlet-contentViews {
- top: 0.6em !important;
- left: 14.5em !important;
-}
-*/
-#portlet-contentViews li,
-#portlet-contentViews .selected {
- border: none !important;
-}
-#portlet-contentViews li a {
- border: 1px solid #aaaaaa;
- border-bottom: none;
-}
-#portlet-contentViews li.selected a {
- border: 1px solid #fabd23;
- border-bottom: none;
-}
-/* no background images */
-li#personaltools-userpage,
-li#personaltools-login/* */ {
- background: none;
- padding-left: none;
-}
-#mactest {
- color: green;
-}
diff --git a/skins/monobook/discussionitem_icon.gif b/skins/monobook/discussionitem_icon.gif
index baec471a..e3ca6d9e 100644
--- a/skins/monobook/discussionitem_icon.gif
+++ b/skins/monobook/discussionitem_icon.gif
Binary files differ
diff --git a/skins/monobook/file_icon.gif b/skins/monobook/file_icon.gif
index 847f6485..69dbeaf7 100644
--- a/skins/monobook/file_icon.gif
+++ b/skins/monobook/file_icon.gif
Binary files differ
diff --git a/skins/monobook/link_icon.gif b/skins/monobook/link_icon.gif
index 815ccb1b..168c1a2f 100644
--- a/skins/monobook/link_icon.gif
+++ b/skins/monobook/link_icon.gif
Binary files differ
diff --git a/skins/monobook/lock_icon.gif b/skins/monobook/lock_icon.gif
index 8a87e283..f71cd9b8 100644
--- a/skins/monobook/lock_icon.gif
+++ b/skins/monobook/lock_icon.gif
Binary files differ
diff --git a/skins/monobook/magnify-clip.png b/skins/monobook/magnify-clip.png
index 992aa2e3..ffd7637f 100644
--- a/skins/monobook/magnify-clip.png
+++ b/skins/monobook/magnify-clip.png
Binary files differ
diff --git a/skins/monobook/mail_icon.gif b/skins/monobook/mail_icon.gif
index 50a87a9a..cf5680d9 100644
--- a/skins/monobook/mail_icon.gif
+++ b/skins/monobook/mail_icon.gif
Binary files differ
diff --git a/skins/monobook/main.css b/skins/monobook/main.css
index d6a67c1e..727355bb 100644
--- a/skins/monobook/main.css
+++ b/skins/monobook/main.css
@@ -54,9 +54,6 @@ body {
margin: 0;
padding: 0;
}
-.visualClear {
- clear: both;
-}
/* general styles */
@@ -281,43 +278,12 @@ span.subpages {
#siteNotice {
text-align: center;
font-size: 95%;
- padding: 0 .9em;
+ padding: 0 0.9em;
}
#siteNotice p {
margin: 0;
padding: 0;
}
-.success {
- color: green;
- font-size: larger;
-}
-.error {
- color: red;
- font-size: larger;
-}
-.errorbox, .successbox {
- font-size: larger;
- border: 2px solid;
- padding: .5em 1em;
- float: left;
- margin-bottom: 2em;
- color: #000;
-}
-.errorbox {
- border-color: red;
- background-color: #fff2f2;
-}
-.successbox {
- border-color: green;
- background-color: #dfd;
-}
-.errorbox h2, .successbox h2 {
- font-size: 1em;
- font-weight: bold;
- display: inline;
- margin: 0 .5em 0 0;
- border: none;
-}
.catlinks {
border: 1px solid #aaa;
@@ -525,35 +491,34 @@ table.rimage {
** this is css3, the validator doesn't like it when validating as css2
*/
#bodyContent a.external,
-#bodyContent a[href ^="gopher://"] {
+#bodyContent a.external[href ^="gopher://"] {
background: url(external.png) center right no-repeat;
padding: 0 13px;
}
.rtl #bodyContent a.external,
-.rtl #bodyContent a[href ^="gopher://"] {
+.rtl #bodyContent a.external[href ^="gopher://"] {
background-image: url(external-rtl.png);
}
-#bodyContent a[href ^="https://"],
+#bodyContent a.external[href ^="https://"],
.link-https {
background: url(lock_icon.gif) center right no-repeat;
padding: 0 16px;
}
-#bodyContent a[href ^="mailto:"],
+#bodyContent a.external[href ^="mailto:"],
.link-mailto {
background: url(mail_icon.gif) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="news://"] {
+#bodyContent a.external[href ^="news://"] {
background: url(news_icon.png) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="ftp://"],
+#bodyContent a.external[href ^="ftp://"],
.link-ftp {
background: url(file_icon.gif) center right no-repeat;
padding: 0 18px;
}
-#bodyContent a[href ^="irc://"],
-#bodyContent a.extiw[href ^="irc://"],
+#bodyContent a.external[href ^="irc://"],
.link-irc {
background: url(discussionitem_icon.gif) center right no-repeat;
padding: 0 18px;
@@ -604,18 +569,10 @@ table.rimage {
#bodyContent a.extiw,
#bodyContent a.extiw:active {
color: #36b;
- background: none;
- padding: 0;
}
#bodyContent a.external {
color: #36b;
}
-/* this can be used in the content area to switch off
-special external link styling */
-#bodyContent .plainlinks a {
- background: none !important;
- padding: 0 !important;
-}
/*
** Structural Elements
*/
@@ -920,6 +877,14 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
z-index: 3;
}
+/* Override text-transform on languages where capitalization is significant */
+.capitalize-all-nouns .portlet h5,
+.capitalize-all-nouns .portlet h6,
+.capitalize-all-nouns #p-personal ul,
+.capitalize-all-nouns #p-cactions ul li a {
+ text-transform: none;
+}
+
/* TODO: #t-iscite is only used by the Cite extension, come up with some
* system which allows extensions to add to this file on the fly
*/
@@ -956,6 +921,13 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
height: 1%;
}
+.mw-htmlform-submit {
+ font-weight: bold;
+ padding-left: .3em;
+ padding-right: .3em;
+ margin-right: 2em;
+}
+
/* js pref toc */
#preftoc {
margin: 0;
@@ -1005,10 +977,6 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
cursor: default;
text-decoration: none;
}
-#prefcontrol {
- padding-top: 2em;
- clear: both;
-}
#preferences {
margin: 0;
border: 1px solid #aaa;
@@ -1021,11 +989,7 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
padding: 0;
margin: 0;
}
-.prefsection fieldset {
- border: 1px solid #aaa;
- float: left;
- margin-right: 2em;
-}
+
.prefsection legend {
font-weight: bold;
}
@@ -1035,16 +999,11 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
.mainLegend {
display: none;
}
-div.prefsectiontip {
+td.htmlform-tip {
font-size: x-small;
padding: .2em 2em;
color: #666;
}
-.btnSavePrefs {
- font-weight: bold;
- padding-left: .3em;
- padding-right: .3em;
-}
.preferences-login {
clear: both;
@@ -1162,20 +1121,9 @@ div#userloginForm .captcha {
display: none;
}
-.not-patrolled {
- background-color: #ffa;
-}
+
div.patrollink {
clear: both;
- font-size: 75%;
- text-align: right;
-}
-span.newpage, span.minor, span.bot {
- font-weight: bold;
-}
-span.unpatrolled {
- font-weight: bold;
- color: red;
}
.sharedUploadNotice {
@@ -1187,66 +1135,14 @@ span.updatedmarker {
background-color: #0f0;
}
-table.gallery {
- border: 1px solid #ccc;
- margin: 2px;
- padding: 2px;
- background-color: white;
-}
-
-table.gallery tr {
- vertical-align: top;
-}
-
-table.gallery td {
- vertical-align: top;
- background-color: #f9f9f9;
- border: solid 2px white;
-}
-/* Keep this temporarily so that cached pages will display right */
-table.gallery td.galleryheader {
- text-align: center;
- font-weight: bold;
-}
-table.gallery caption {
- font-weight: bold;
-}
-
-div.gallerybox {
- margin: 2px;
-}
-
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #ccc;
- margin: 2px;
-}
-
-div.gallerytext {
- overflow: hidden;
- font-size: 94%;
- padding: 2px 4px;
-}
-
-span.comment {
- font-style: italic;
-}
-
-span.changedby {
- font-size: 95%;
-}
-
.previewnote {
- text-indent: 3em;
color: #c00;
- border-bottom: 1px solid #aaa;
- padding-bottom: 1em;
margin-bottom: 1em;
}
.previewnote p {
- margin: 0;
- padding: 0;
+ text-indent: 3em;
+ margin: 0.8em 0;
}
.editExternally {
@@ -1268,69 +1164,6 @@ span.changedby {
text-indent: -2em;
}
-/* Classes for EXIF data display */
-table.mw_metadata {
- font-size: 0.8em;
- margin-left: 0.5em;
- margin-bottom: 0.5em;
- width: 300px;
-}
-
-table.mw_metadata caption {
- font-weight: bold;
-}
-
-table.mw_metadata th {
- font-weight: normal;
-}
-
-table.mw_metadata td {
- padding: 0.1em;
-}
-
-table.mw_metadata {
- border: none;
- border-collapse: collapse;
-}
-
-table.mw_metadata td, table.mw_metadata th {
- text-align: center;
- border: 1px solid #aaaaaa;
- padding-left: 0.1em;
- padding-right: 0.1em;
-}
-
-table.mw_metadata th {
- background-color: #f9f9f9;
-}
-
-table.mw_metadata td {
- background-color: #fcfcfc;
-}
-
-table.collapsed tr.collapsable {
- display: none;
-}
-
-
-/* filetoc */
-ul#filetoc {
- text-align: center;
- border: 1px solid #aaaaaa;
- background-color: #f9f9f9;
- padding: 5px;
- font-size: 95%;
- margin-bottom: 0.5em;
- margin-left: 0;
- margin-right: 0;
-}
-
-#filetoc li {
- display: inline;
- list-style-type: none;
- padding-right: 2em;
-}
-
input#wpSummary {
width: 80%;
}
@@ -1368,32 +1201,6 @@ p.revision_saved {
font-weight:bold;
}
-#mw_trackbacks {
- border: solid 1px #bbbbff;
- background-color: #eeeeff;
- padding: 0.2em;
-}
-
-
-/* Allmessages table */
-
-#allmessagestable th {
- background-color: #b2b2ff;
-}
-
-#allmessagestable tr.orig {
- background-color: #ffe2e2;
-}
-
-#allmessagestable tr.new {
- background-color: #e2ffe2;
-}
-
-#allmessagestable tr.def {
- background-color: #f0f0ff;
-}
-
-
/* noarticletext */
div.noarticletext {
border: 1px solid #ccc;
@@ -1457,53 +1264,6 @@ table.multipageimage td {
text-align: center;
}
-/** Special:Version */
-
-table#sv-ext, table#sv-hooks, table#sv-software {
- margin: 1em;
- padding:0em;
-}
-
-#sv-ext td, #sv-hooks td, #sv-software td,
-#sv-ext th, #sv-hooks th, #sv-software th {
- border: 1px solid #A0A0A0;
- padding: 0 0.15em 0 0.15em;
-}
-#sv-ext th, #sv-hooks th, #sv-software th {
- background-color: #F0F0F0;
- color: black;
- padding: 0 0.15em 0 0.15em;
-}
-tr.sv-space{
- height: 0.8em;
- border:none;
-}
-tr.sv-space td { display: none; }
-
-/*
- Table pager (e.g. Special:Imagelist)
- - remove underlines from the navigation link
- - collapse borders
- - set the borders to outsets (similar to Special:Allmessages)
- - remove line wrapping for all td and th, set background color
- - restore line wrapping for the last two table cells (description and size)
-*/
-.TablePager { min-width: 80%; }
-.TablePager_nav a { text-decoration: none; }
-.TablePager { border-collapse: collapse; }
-.TablePager, .TablePager td, .TablePager th {
- border: 1px solid #aaaaaa;
- padding: 0 0.15em 0 0.15em;
-}
-.TablePager th { background-color: #eeeeff }
-.TablePager td { background-color: #ffffff }
-.TablePager tr:hover td { background-color: #eeeeff }
-
-.imagelist td, .imagelist th { white-space: nowrap }
-.imagelist .TablePager_col_links { background-color: #eeeeff }
-.imagelist .TablePager_col_img_description { white-space: normal }
-.imagelist th.TablePager_sort { background-color: #ccccff }
-
.templatesUsed { margin-top: 1.5em; }
.mw-summary-preview {
@@ -1537,24 +1297,12 @@ div.mw-lag-warn-high {
font-size: 90%;
}
-/** Special:Search stuff */
-div#mw-search-interwiki-caption {
- text-align: center;
- font-weight: bold;
- font-size: 95%;
-}
-
-.mw-search-interwiki-project {
- font-size: 97%;
- text-align: left;
- padding-left: 0.2em;
- padding-right: 0.15em;
- padding-bottom: 0.2em;
- padding-top: 0.15em;
- background: #cae8ff;
-}
-
/* God-damned hack for the crappy layout */
.os-suggest {
font-size: 127%;
}
+
+/* Sometimes people don't want personal tools to be lowercase! */
+.no-text-transform {
+ text-transform: none;
+}
diff --git a/skins/monobook/rtl.css b/skins/monobook/rtl.css
index 9b8e4f44..b9bf43c0 100644
--- a/skins/monobook/rtl.css
+++ b/skins/monobook/rtl.css
@@ -211,7 +211,6 @@ input#wpSave, input#wpDiff {
}
#userlogin {
- float: right;
margin: 0 0 1em 3em;
}
/* Convenience links to edit block, delete and protect reasons */
@@ -228,20 +227,25 @@ table.filehistory th {
text-align: right;
}
+/* Special:Allpages styling */
+td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
+ text-align: left;
+}
+
+/* Special:Prefixindex styling */
+td#mw-prefixindex-nav-form {
+ text-align: left;
+}
+
/**
* Lists:
* The following lines don't have a visible effect on non-Gecko browsers
* They fix a problem ith Gecko browsers rendering lists to the right of
* left-floated objects in an RTL layout.
*/
-html > body div#bodyContent ul {
+html > body div#article ul {
display: table;
}
html > body div#bodyContent ul#filetoc {
display: block;
}
-/* Special:Prefixindex styling */
-td#mw-prefixindex-nav-form {
- text-align: left;
-}
-
diff --git a/skins/monobook/user.gif b/skins/monobook/user.gif
index c9c9ab96..34b4839d 100644
--- a/skins/monobook/user.gif
+++ b/skins/monobook/user.gif
Binary files differ
diff --git a/skins/monobook/video.png b/skins/monobook/video.png
index 38103dac..fadc4c9b 100644
--- a/skins/monobook/video.png
+++ b/skins/monobook/video.png
Binary files differ
diff --git a/skins/monobook/wiki.png b/skins/monobook/wiki.png
index 69fce988..44389389 100644
--- a/skins/monobook/wiki.png
+++ b/skins/monobook/wiki.png
Binary files differ
diff --git a/skins/simple/discussionitem_icon.gif b/skins/simple/discussionitem_icon.gif
index baec471a..e3ca6d9e 100644
--- a/skins/simple/discussionitem_icon.gif
+++ b/skins/simple/discussionitem_icon.gif
Binary files differ
diff --git a/skins/simple/file_icon.gif b/skins/simple/file_icon.gif
index 847f6485..69dbeaf7 100644
--- a/skins/simple/file_icon.gif
+++ b/skins/simple/file_icon.gif
Binary files differ
diff --git a/skins/simple/link_icon.gif b/skins/simple/link_icon.gif
index 815ccb1b..168c1a2f 100644
--- a/skins/simple/link_icon.gif
+++ b/skins/simple/link_icon.gif
Binary files differ
diff --git a/skins/simple/lock_icon.gif b/skins/simple/lock_icon.gif
index 8a87e283..82844033 100644
--- a/skins/simple/lock_icon.gif
+++ b/skins/simple/lock_icon.gif
Binary files differ
diff --git a/skins/simple/mail_icon.gif b/skins/simple/mail_icon.gif
index 50a87a9a..cf5680d9 100644
--- a/skins/simple/mail_icon.gif
+++ b/skins/simple/mail_icon.gif
Binary files differ
diff --git a/skins/simple/main.css b/skins/simple/main.css
index 6ba47e0d..525c1473 100644
--- a/skins/simple/main.css
+++ b/skins/simple/main.css
@@ -281,13 +281,13 @@ div.thumb {
margin-bottom: 0.5em;
width: auto;
}
-div.thumb div {
+div.thumbinner {
padding: 3px !important;
text-align: center;
overflow: hidden;
}
-div.thumb div div.thumbcaption {
+html .thumbcaption {
border: none;
text-align: left;
line-height: 1.4;
@@ -365,12 +365,7 @@ div.printfooter {
#preftoc a:active {
display: block;
}
-#prefcontrol {
- clear: both;
- float: left;
- margin-top: 1em;
-}
-div.prefsectiontip {
+div.htmlform-tip {
font-size: 95%;
margin-top: 1em;
}
diff --git a/skins/simple/rtl.css b/skins/simple/rtl.css
index 53b3dc0c..a5a2b59f 100644
--- a/skins/simple/rtl.css
+++ b/skins/simple/rtl.css
@@ -148,7 +148,6 @@ input#wpSave, input#wpDiff {
}
#userlogin {
- float: right;
margin: 0 0 1em 3em;
}
/* Convenience links to edit block, delete and protect reasons */
@@ -174,6 +173,11 @@ table.filehistory th {
html > body div#bodyContent ul {
display: table;
}
+
+/* Special:Allpages styling */
+td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
+ text-align: left;
+
/* Special:Prefixindex styling */
td#mw-prefixindex-nav-form {
text-align: left;
diff --git a/skins/vector/Makefile b/skins/vector/Makefile
new file mode 100644
index 00000000..74e36c45
--- /dev/null
+++ b/skins/vector/Makefile
@@ -0,0 +1,18 @@
+#
+# Handy makefile to build the RTL variant with cssjanus
+#
+
+all: main-rtl.css
+
+main-rtl.css: main-ltr.css cssjanus/cssjanus.py
+ python cssjanus/cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
+
+# SVN version is broken; checking in our own.
+#cssjanus/cssjanus.py:
+# svn co http://cssjanus.googlecode.com/svn/trunk cssjanus
+
+#distclean: clean
+# rm -rf cssjanus
+
+clean:
+ rm -f main-rtl.css
diff --git a/skins/vector/csshover.htc b/skins/vector/csshover.htc
new file mode 100644
index 00000000..a88fa08d
--- /dev/null
+++ b/skins/vector/csshover.htc
@@ -0,0 +1,262 @@
+<public:attach event="ondocumentready" onevent="CSSHover()" />
+<script>
+// <![CDATA[
+/**
+ * Whatever:hover - V3.00.081222
+ * ------------------------------------------------------------
+ * Author - Peter Nederlof, http://www.xs4all.nl/~peterned
+ * License - http://creativecommons.org/licenses/LGPL/2.1
+ *
+ * Whatever:hover is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Whatever:hover 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
+ * Lesser General Public License for more details.
+ *
+ * howto: body { behavior:url("csshover3.htc"); }
+ * ------------------------------------------------------------
+ */
+
+window.CSSHover = (function(){
+
+ // regular expressions, used and explained later on.
+ var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i,
+ REG_AFFECTED = /(.*?)\:(hover|active|focus)/i,
+ REG_PSEUDO = /[^:]+:([a-z-]+).*/i,
+ REG_SELECT = /(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi,
+ REG_CLASS = /\.([a-z0-9_-]*on(hover|active|focus))/i,
+ REG_MSIE = /msie (5|6|7)/i,
+ REG_COMPAT = /backcompat/i;
+
+ // css prefix, a leading dash would be nice (spec), but IE6 doesn't like that.
+ var CSSHOVER_PREFIX = 'csh-';
+
+ /**
+ * Local CSSHover object
+ * --------------------------
+ */
+
+ var CSSHover = {
+
+ // array of CSSHoverElements, used to unload created events
+ elements: [],
+
+ // buffer used for checking on duplicate expressions
+ callbacks: {},
+
+ // init, called once ondomcontentready via the exposed window.CSSHover function
+ init:function() {
+ // don't run in IE8 standards; expressions don't work in standards mode anyway,
+ // and the stuff we're trying to fix should already work properly
+ if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) return;
+
+ // start parsing the existing stylesheets
+ var sheets = window.document.styleSheets, l = sheets.length;
+ for(var i=0; i<l; i++) {
+ this.parseStylesheet(sheets[i]);
+ }
+ },
+
+ // called from init, parses individual stylesheets
+ parseStylesheet:function(sheet) {
+ // check sheet imports and parse those recursively
+ if(sheet.imports) {
+ try {
+ var imports = sheet.imports, l = imports.length;
+ for(var i=0; i<l; i++) {
+ this.parseStylesheet(sheet.imports[i]);
+ }
+ } catch(securityException){
+ // trycatch for various possible errors,
+ // todo; might need to be placed inside the for loop, since an error
+ // on an import stops following imports from being processed.
+ }
+ }
+
+ // interate the sheet's rules and send them to the parser
+ try {
+ var rules = sheet.rules, l = rules.length;
+ for(var j=0; j<l; j++) {
+ this.parseCSSRule(rules[j], sheet);
+ }
+ } catch(securityException){
+ // trycatch for various errors, most likely accessing the sheet's rules,
+ // don't see how individual rules would throw errors, but you never know.
+ }
+ },
+
+ // magic starts here ...
+ parseCSSRule:function(rule, sheet) {
+
+ // The sheet is used to insert new rules into, this must be the same sheet the rule
+ // came from, to ensure that relative paths keep pointing to the right location.
+
+ // only parse a rule if it contains an interactive pseudo.
+ var select = rule.selectorText;
+ if(REG_INTERACTIVE.test(select)) {
+ var style = rule.style.cssText,
+
+ // affected elements are found by truncating the selector after the interactive pseudo,
+ // eg: "div li:hover" >> "div li"
+ affected = REG_AFFECTED.exec(select)[1],
+
+ // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
+ // eg: "li:hover" >> "onhover"
+ pseudo = select.replace(REG_PSEUDO, 'on$1'),
+
+ // the new selector is going to use that classname in a new css rule,
+ // since IE6 doesn't support multiple classnames, this is merged into one classname
+ // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover"
+ newSelect = select.replace(REG_SELECT, '.$2' + pseudo),
+
+ // the classname is needed for the events that are going to be set on affected nodes
+ // eg: "li.folder:hover" >> "folderonhover"
+ className = REG_CLASS.exec(newSelect)[1];
+
+ // no need to set the same callback more than once when the same selector uses the same classname
+ var hash = affected + className;
+ if(!this.callbacks[hash]) {
+
+ // affected elements are given an expression under a fake css property, the classname is used
+ // because a unique name (eg "behavior:") would be overruled (in IE6, not 7) by a following rule
+ // selecting the same element. The expression does a callback to CSSHover.patch, rerouted via the
+ // exposed window.CSSHover function.
+
+ // because the expression is added to the stylesheet, and styles are always applied to html that is
+ // dynamically added to the dom, the expression will also trigger for those new elements (provided
+ // they are selected by the affected selector).
+
+ sheet.addRule(affected, CSSHOVER_PREFIX + className + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'"))');
+
+ // hash it, so an identical selector/class combo does not duplicate the expression
+ this.callbacks[hash] = true;
+ }
+
+ // duplicate expressions need not be set, but the style could differ
+ sheet.addRule(newSelect, style);
+ }
+ },
+
+ // called via the expression, patches individual nodes
+ patch:function(node, type, className) {
+
+ // the patch's type is returned to the expression. That way the expression property
+ // can be found and removed, to stop it from calling patch over and over.
+ // The if will fail the first time, since the expression has not yet received a value.
+ var property = CSSHOVER_PREFIX + className;
+ if(node.style[property]) {
+ node.style[property] = null;
+ }
+
+ // just to make sure, also keep track of patched classnames locally on the node
+ if(!node.csshover) node.csshover = [];
+
+ // and check for it to prevent duplicate events with the same classname from being set
+ if(!node.csshover[className]) {
+ node.csshover[className] = true;
+
+ // create an instance for the given type and class
+ var element = new CSSHoverElement(node, type, className);
+
+ // and store that instance for unloading later on
+ this.elements.push(element);
+ }
+
+ // returns a dummy value to the expression
+ return type;
+ },
+
+ // unload stuff onbeforeunload
+ unload:function() {
+ try {
+
+ // remove events
+ var l = this.elements.length;
+ for(var i=0; i<l; i++) {
+ this.elements[i].unload();
+ }
+
+ // and set properties to null
+ this.elements = [];
+ this.callbacks = {};
+
+ } catch (e) {
+ }
+ }
+ };
+
+ // add the unload to the onbeforeunload event
+ window.attachEvent('onbeforeunload', function(){
+ CSSHover.unload();
+ });
+
+ /**
+ * CSSHoverElement
+ * --------------------------
+ */
+
+ // the event types associated with the interactive pseudos
+ var CSSEvents = {
+ onhover: { activator: 'onmouseenter', deactivator: 'onmouseleave' },
+ onactive: { activator: 'onmousedown', deactivator: 'onmouseup' },
+ onfocus: { activator: 'onfocus', deactivator: 'onblur' }
+ };
+
+ // CSSHoverElement constructor, called via CSSHover.patch
+ function CSSHoverElement(node, type, className) {
+
+ // the CSSHoverElement patches individual nodes by manually applying the events that should
+ // have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover.
+
+ this.node = node;
+ this.type = type;
+ var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');
+
+ // store event handlers for removal onunload
+ this.activator = function(){ node.className += ' ' + className; };
+ this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };
+
+ // add the events
+ node.attachEvent(CSSEvents[type].activator, this.activator);
+ node.attachEvent(CSSEvents[type].deactivator, this.deactivator);
+ }
+
+ CSSHoverElement.prototype = {
+ // onbeforeunload, called via CSSHover.unload
+ unload:function() {
+
+ // remove events
+ this.node.detachEvent(CSSEvents[this.type].activator, this.activator);
+ this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);
+
+ // and set properties to null
+ this.activator = null;
+ this.deactivator = null;
+ this.node = null;
+ this.type = null;
+ }
+ };
+
+ /**
+ * Public hook
+ * --------------------------
+ */
+
+ return function(node, type, className) {
+ if(node) {
+ // called via the css expression; patches individual nodes
+ return CSSHover.patch(node, type, className);
+ } else {
+ // called ondomcontentready via the public:attach node
+ CSSHover.init();
+ }
+ };
+
+})();
+
+// ]]>
+</script> \ No newline at end of file
diff --git a/skins/vector/cssjanus/COPYING b/skins/vector/cssjanus/COPYING
new file mode 100644
index 00000000..3f2c8953
--- /dev/null
+++ b/skins/vector/cssjanus/COPYING
@@ -0,0 +1,13 @@
+ Copyright 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/skins/vector/cssjanus/LICENSE b/skins/vector/cssjanus/LICENSE
new file mode 100644
index 00000000..d6456956
--- /dev/null
+++ b/skins/vector/cssjanus/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/skins/vector/cssjanus/README b/skins/vector/cssjanus/README
new file mode 100644
index 00000000..9b922156
--- /dev/null
+++ b/skins/vector/cssjanus/README
@@ -0,0 +1,91 @@
+=CSSJanus=
+
+_Flips CSS from LTR to an RTL orienation and vice-versa_
+
+Author: `Lindsey Simon <elsigh@google.com>`
+
+==Introduction==
+
+CSSJanus is CSS parser utility designed to aid the conversion of a website's
+layout from left-to-right(LTR) to right-to-left(RTL). The script was born out of
+a need to convert CSS for RTL languages when tables are not being used for layout (since tables will automatically reorder TD's in RTL).
+CSSJanus will change most of the obvious CSS property names and their values as
+well as some not-so-obvious ones (cursor, background-position %, etc...).
+The script is designed to offer flexibility to account for cases when you do
+not want to change certain rules which exist to account for bidirectional text
+display bugs, as well as situations where you may or may not want to flip annotations inside of the background url string.
+Note that you can disable CSSJanus from running on an entire class or any
+rule within a class by prepending a /* @noflip */ comment before the rule(s)
+you want CSSJanus to ignore.
+
+CSSJanus itself is not always enough to make a website that works in a LTR
+language context work in a RTL language all the way, but it is a start.
+
+==Getting the code==
+
+View the trunk at:
+
+ http://cssjanus.googlecode.com/svn/trunk/
+
+Check out the latest development version anonymously with:
+
+{{{
+ $ svn checkout http://cssjanus.googlecode.com/svn/trunk/ cssjanus
+}}}
+
+==Using==
+
+Usage:
+ ./cssjanus.py < file.css > file-rtl.css
+Flags:
+ --swap_left_right_in_url: Fixes "left"/"right" string within urls.
+ Ex: ./cssjanus.py --swap_left_right_in_url < file.css > file_rtl.css
+ --swap_ltr_rtl_in_url: Fixes "ltr"/"rtl" string within urls.
+ Ex: ./cssjanus.py --swap_ltr_rtl_in_url < file.css > file_rtl.css
+
+If you'd like to make use of the webapp version of cssjanus, you'll need to
+download the Google App Engine SDK
+ http://code.google.com/appengine/downloads.html
+and also drop a "django" directory into this directory, with the latest svn
+from django. You should be good to go with that setup. Please let me know
+otherwise.
+
+==Bugs, Patches==
+
+Patches and bug reports are welcome, just please keep the style
+consistent with the original source. If you find a bug, please include a diff
+of cssjanus_test.py with the bug included as a new unit test which fails. It
+will make understanding and fixing the bug easier.
+
+==Todo==
+
+* Include some helpers for some typical bidi text solutions?
+* Aural CSS (azimuth) swapping?
+
+==Contributors==
+
+Additional thanks to Mike Samuel for his work on csslex.py, Andy Perelson for
+his help coding and reviewing, Stephen Zabel for his help with i18n and my sanity,
+and to Eric Meyer for his thoughtful input.
+Thanks to Junyu Wang for the Chinese translation.
+Thanks to Masashi Kawashima for the Japanese translation.
+Thanks to Taaryk Taar and Tariq Al-Omaireeni for an updated Arabic translation.
+Thanks to Jens Meiert for the German translation.
+
+==License==
+
+{{{
+ Copyright 2008 Google Inc. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+}}}
diff --git a/skins/vector/cssjanus/cssjanus.py b/skins/vector/cssjanus/cssjanus.py
new file mode 100644
index 00000000..dd14bd58
--- /dev/null
+++ b/skins/vector/cssjanus/cssjanus.py
@@ -0,0 +1,574 @@
+#!/usr/bin/python
+#
+# Copyright 2008 Google Inc. All Rights Reserved.
+
+"""Converts a LeftToRight Cascading Style Sheet into a RightToLeft one.
+
+ This is a utility script for replacing "left" oriented things in a CSS file
+ like float, padding, margin with "right" oriented values.
+ It also does the opposite.
+ The goal is to be able to conditionally serve one large, cat'd, compiled CSS
+ file appropriate for LeftToRight oriented languages and RightToLeft ones.
+ This utility will hopefully help your structural layout done in CSS in
+ terms of its RTL compatibility. It will not help with some of the more
+ complicated bidirectional text issues.
+"""
+
+__author__ = 'elsigh@google.com (Lindsey Simon)'
+__version__ = '0.1'
+
+import logging
+import re
+import sys
+import getopt
+import os
+
+import csslex
+
+logging.getLogger().setLevel(logging.INFO)
+
+# Global for the command line flags.
+SWAP_LTR_RTL_IN_URL_DEFAULT = False
+SWAP_LEFT_RIGHT_IN_URL_DEFAULT = False
+FLAGS = {'swap_ltr_rtl_in_url': SWAP_LTR_RTL_IN_URL_DEFAULT,
+ 'swap_left_right_in_url': SWAP_LEFT_RIGHT_IN_URL_DEFAULT}
+
+# Generic token delimiter character.
+TOKEN_DELIMITER = '~'
+
+# This is a temporary match token we use when swapping strings.
+TMP_TOKEN = '%sTMP%s' % (TOKEN_DELIMITER, TOKEN_DELIMITER)
+
+# Token to be used for joining lines.
+TOKEN_LINES = '%sJ%s' % (TOKEN_DELIMITER, TOKEN_DELIMITER)
+
+# Global constant text strings for CSS value matches.
+LTR = 'ltr'
+RTL = 'rtl'
+LEFT = 'left'
+RIGHT = 'right'
+
+# This is a lookbehind match to ensure that we don't replace instances
+# of our string token (left, rtl, etc...) if there's a letter in front of it.
+# Specifically, this prevents replacements like 'background: url(bright.png)'.
+LOOKBEHIND_NOT_LETTER = r'(?<![a-zA-Z])'
+
+# This is a lookahead match to make sure we don't replace left and right
+# in actual classnames, so that we don't break the HTML/CSS dependencies.
+# Read literally, it says ignore cases where the word left, for instance, is
+# directly followed by valid classname characters and a curly brace.
+# ex: .column-left {float: left} will become .column-left {float: right}
+LOOKAHEAD_NOT_OPEN_BRACE = (r'(?!(?:%s|%s|%s|#|\:|\.|\,|\+|>)*?{)' %
+ (csslex.NMCHAR, TOKEN_LINES, csslex.SPACE))
+
+
+# These two lookaheads are to test whether or not we are within a
+# background: url(HERE) situation.
+# Ref: http://www.w3.org/TR/CSS21/syndata.html#uri
+VALID_AFTER_URI_CHARS = r'[\'\"]?%s' % csslex.WHITESPACE
+LOOKAHEAD_NOT_CLOSING_PAREN = r'(?!%s?%s\))' % (csslex.URL_CHARS,
+ VALID_AFTER_URI_CHARS)
+LOOKAHEAD_FOR_CLOSING_PAREN = r'(?=%s?%s\))' % (csslex.URL_CHARS,
+ VALID_AFTER_URI_CHARS)
+
+# Compile a regex to swap left and right values in 4 part notations.
+# We need to match negatives and decimal numeric values.
+# ex. 'margin: .25em -2px 3px 0' becomes 'margin: .25em 0 3px -2px'.
+POSSIBLY_NEGATIVE_QUANTITY = r'((?:-?%s)|(?:inherit|auto))' % csslex.QUANTITY
+POSSIBLY_NEGATIVE_QUANTITY_SPACE = r'%s%s%s' % (POSSIBLY_NEGATIVE_QUANTITY,
+ csslex.SPACE,
+ csslex.WHITESPACE)
+FOUR_NOTATION_QUANTITY_RE = re.compile(r'%s%s%s%s' %
+ (POSSIBLY_NEGATIVE_QUANTITY_SPACE,
+ POSSIBLY_NEGATIVE_QUANTITY_SPACE,
+ POSSIBLY_NEGATIVE_QUANTITY_SPACE,
+ POSSIBLY_NEGATIVE_QUANTITY),
+ re.I)
+COLOR = r'(%s|%s)' % (csslex.NAME, csslex.HASH)
+COLOR_SPACE = r'%s%s' % (COLOR, csslex.SPACE)
+FOUR_NOTATION_COLOR_RE = re.compile(r'(-color%s:%s)%s%s%s(%s)' %
+ (csslex.WHITESPACE,
+ csslex.WHITESPACE,
+ COLOR_SPACE,
+ COLOR_SPACE,
+ COLOR_SPACE,
+ COLOR),
+ re.I)
+
+# Compile the cursor resize regexes
+CURSOR_EAST_RE = re.compile(LOOKBEHIND_NOT_LETTER + '([ns]?)e-resize')
+CURSOR_WEST_RE = re.compile(LOOKBEHIND_NOT_LETTER + '([ns]?)w-resize')
+
+# Matches the condition where we need to replace the horizontal component
+# of a background-position value when expressed in horizontal percentage.
+# Had to make two regexes because in the case of position-x there is only
+# one quantity, and otherwise we don't want to match and change cases with only
+# one quantity.
+BG_HORIZONTAL_PERCENTAGE_RE = re.compile(r'background(-position)?(%s:%s)'
+ '([^%%]*?)(%s)%%'
+ '(%s(?:%s|%s))' % (csslex.WHITESPACE,
+ csslex.WHITESPACE,
+ csslex.NUM,
+ csslex.WHITESPACE,
+ csslex.QUANTITY,
+ csslex.IDENT))
+
+BG_HORIZONTAL_PERCENTAGE_X_RE = re.compile(r'background-position-x(%s:%s)'
+ '(%s)%%' % (csslex.WHITESPACE,
+ csslex.WHITESPACE,
+ csslex.NUM))
+
+# Matches the opening of a body selector.
+BODY_SELECTOR = r'body%s{%s' % (csslex.WHITESPACE, csslex.WHITESPACE)
+
+# Matches anything up until the closing of a selector.
+CHARS_WITHIN_SELECTOR = r'[^\}]*?'
+
+# Matches the direction property in a selector.
+DIRECTION_RE = r'direction%s:%s' % (csslex.WHITESPACE, csslex.WHITESPACE)
+
+# These allow us to swap "ltr" with "rtl" and vice versa ONLY within the
+# body selector and on the same line.
+BODY_DIRECTION_LTR_RE = re.compile(r'(%s)(%s)(%s)(ltr)' %
+ (BODY_SELECTOR, CHARS_WITHIN_SELECTOR,
+ DIRECTION_RE),
+ re.I)
+BODY_DIRECTION_RTL_RE = re.compile(r'(%s)(%s)(%s)(rtl)' %
+ (BODY_SELECTOR, CHARS_WITHIN_SELECTOR,
+ DIRECTION_RE),
+ re.I)
+
+
+# Allows us to swap "direction:ltr" with "direction:rtl" and
+# vice versa anywhere in a line.
+DIRECTION_LTR_RE = re.compile(r'%s(ltr)' % DIRECTION_RE)
+DIRECTION_RTL_RE = re.compile(r'%s(rtl)' % DIRECTION_RE)
+
+# We want to be able to switch left with right and vice versa anywhere
+# we encounter left/right strings, EXCEPT inside the background:url(). The next
+# two regexes are for that purpose. We have alternate IN_URL versions of the
+# regexes compiled in case the user passes the flag that they do
+# actually want to have left and right swapped inside of background:urls.
+LEFT_RE = re.compile('%s(%s)%s%s' % (LOOKBEHIND_NOT_LETTER,
+ LEFT,
+ LOOKAHEAD_NOT_CLOSING_PAREN,
+ LOOKAHEAD_NOT_OPEN_BRACE),
+ re.I)
+RIGHT_RE = re.compile('%s(%s)%s%s' % (LOOKBEHIND_NOT_LETTER,
+ RIGHT,
+ LOOKAHEAD_NOT_CLOSING_PAREN,
+ LOOKAHEAD_NOT_OPEN_BRACE),
+ re.I)
+LEFT_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
+ LEFT,
+ LOOKAHEAD_FOR_CLOSING_PAREN),
+ re.I)
+RIGHT_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
+ RIGHT,
+ LOOKAHEAD_FOR_CLOSING_PAREN),
+ re.I)
+LTR_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
+ LTR,
+ LOOKAHEAD_FOR_CLOSING_PAREN),
+ re.I)
+RTL_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
+ RTL,
+ LOOKAHEAD_FOR_CLOSING_PAREN),
+ re.I)
+
+COMMENT_RE = re.compile('(%s)' % csslex.COMMENT, re.I)
+
+NOFLIP_TOKEN = r'\@noflip'
+# The NOFLIP_TOKEN inside of a comment. For now, this requires that comments
+# be in the input, which means users of a css compiler would have to run
+# this script first if they want this functionality.
+NOFLIP_ANNOTATION = r'/\*%s%s%s\*/' % (csslex.WHITESPACE,
+ NOFLIP_TOKEN,
+ csslex. WHITESPACE)
+
+# After a NOFLIP_ANNOTATION, and within a class selector, we want to be able
+# to set aside a single rule not to be flipped. We can do this by matching
+# our NOFLIP annotation and then using a lookahead to make sure there is not
+# an opening brace before the match.
+NOFLIP_SINGLE_RE = re.compile(r'(%s%s[^;}]+;?)' % (NOFLIP_ANNOTATION,
+ LOOKAHEAD_NOT_OPEN_BRACE),
+ re.I)
+
+# After a NOFLIP_ANNOTATION, we want to grab anything up until the next } which
+# means the entire following class block. This will prevent all of its
+# declarations from being flipped.
+NOFLIP_CLASS_RE = re.compile(r'(%s%s})' % (NOFLIP_ANNOTATION,
+ CHARS_WITHIN_SELECTOR),
+ re.I)
+
+
+class Tokenizer:
+ """Replaces any CSS comments with string tokens and vice versa."""
+
+ def __init__(self, token_re, token_string):
+ """Constructor for the Tokenizer.
+
+ Args:
+ token_re: A regex for the string to be replace by a token.
+ token_string: The string to put between token delimiters when tokenizing.
+ """
+ logging.debug('Tokenizer::init token_string=%s' % token_string)
+ self.token_re = token_re
+ self.token_string = token_string
+ self.originals = []
+
+ def Tokenize(self, line):
+ """Replaces any string matching token_re in line with string tokens.
+
+ By passing a function as an argument to the re.sub line below, we bypass
+ the usual rule where re.sub will only replace the left-most occurrence of
+ a match by calling the passed in function for each occurrence.
+
+ Args:
+ line: A line to replace token_re matches in.
+
+ Returns:
+ line: A line with token_re matches tokenized.
+ """
+ line = self.token_re.sub(self.TokenizeMatches, line)
+ logging.debug('Tokenizer::Tokenize returns: %s' % line)
+ return line
+
+ def DeTokenize(self, line):
+ """Replaces tokens with the original string.
+
+ Args:
+ line: A line with tokens.
+
+ Returns:
+ line with any tokens replaced by the original string.
+ """
+
+ # Put all of the comments back in by their comment token.
+ for i, original in enumerate(self.originals):
+ token = '%s%s_%s%s' % (TOKEN_DELIMITER, self.token_string, i + 1,
+ TOKEN_DELIMITER)
+ line = line.replace(token, original)
+ logging.debug('Tokenizer::DeTokenize i:%s w/%s' % (i, token))
+ logging.debug('Tokenizer::DeTokenize returns: %s' % line)
+ return line
+
+ def TokenizeMatches(self, m):
+ """Replaces matches with tokens and stores the originals.
+
+ Args:
+ m: A match object.
+
+ Returns:
+ A string token which replaces the CSS comment.
+ """
+ logging.debug('Tokenizer::TokenizeMatches %s' % m.group(1))
+ self.originals.append(m.group(1))
+ return '%s%s_%s%s' % (TOKEN_DELIMITER,
+ self.token_string,
+ len(self.originals),
+ TOKEN_DELIMITER)
+
+
+def FixBodyDirectionLtrAndRtl(line):
+ """Replaces ltr with rtl and vice versa ONLY in the body direction.
+
+ Args:
+ line: A string to replace instances of ltr with rtl.
+ Returns:
+ line with direction: ltr and direction: rtl swapped only in body selector.
+ line = FixBodyDirectionLtrAndRtl('body { direction:ltr }')
+ line will now be 'body { direction:rtl }'.
+ """
+
+ line = BODY_DIRECTION_LTR_RE.sub('\\1\\2\\3%s' % TMP_TOKEN, line)
+ line = BODY_DIRECTION_RTL_RE.sub('\\1\\2\\3%s' % LTR, line)
+ line = line.replace(TMP_TOKEN, RTL)
+ logging.debug('FixBodyDirectionLtrAndRtl returns: %s' % line)
+ return line
+
+
+def FixLeftAndRight(line):
+ """Replaces left with right and vice versa in line.
+
+ Args:
+ line: A string in which to perform the replacement.
+
+ Returns:
+ line with left and right swapped. For example:
+ line = FixLeftAndRight('padding-left: 2px; margin-right: 1px;')
+ line will now be 'padding-right: 2px; margin-left: 1px;'.
+ """
+
+ line = LEFT_RE.sub(TMP_TOKEN, line)
+ line = RIGHT_RE.sub(LEFT, line)
+ line = line.replace(TMP_TOKEN, RIGHT)
+ logging.debug('FixLeftAndRight returns: %s' % line)
+ return line
+
+
+def FixLeftAndRightInUrl(line):
+ """Replaces left with right and vice versa ONLY within background urls.
+
+ Args:
+ line: A string in which to replace left with right and vice versa.
+
+ Returns:
+ line with left and right swapped in the url string. For example:
+ line = FixLeftAndRightInUrl('background:url(right.png)')
+ line will now be 'background:url(left.png)'.
+ """
+
+ line = LEFT_IN_URL_RE.sub(TMP_TOKEN, line)
+ line = RIGHT_IN_URL_RE.sub(LEFT, line)
+ line = line.replace(TMP_TOKEN, RIGHT)
+ logging.debug('FixLeftAndRightInUrl returns: %s' % line)
+ return line
+
+
+def FixLtrAndRtlInUrl(line):
+ """Replaces ltr with rtl and vice versa ONLY within background urls.
+
+ Args:
+ line: A string in which to replace ltr with rtl and vice versa.
+
+ Returns:
+ line with left and right swapped. For example:
+ line = FixLtrAndRtlInUrl('background:url(rtl.png)')
+ line will now be 'background:url(ltr.png)'.
+ """
+
+ line = LTR_IN_URL_RE.sub(TMP_TOKEN, line)
+ line = RTL_IN_URL_RE.sub(LTR, line)
+ line = line.replace(TMP_TOKEN, RTL)
+ logging.debug('FixLtrAndRtlInUrl returns: %s' % line)
+ return line
+
+
+def FixCursorProperties(line):
+ """Fixes directional CSS cursor properties.
+
+ Args:
+ line: A string to fix CSS cursor properties in.
+
+ Returns:
+ line reformatted with the cursor properties substituted. For example:
+ line = FixCursorProperties('cursor: ne-resize')
+ line will now be 'cursor: nw-resize'.
+ """
+
+ line = CURSOR_EAST_RE.sub('\\1' + TMP_TOKEN, line)
+ line = CURSOR_WEST_RE.sub('\\1e-resize', line)
+ line = line.replace(TMP_TOKEN, 'w-resize')
+ logging.debug('FixCursorProperties returns: %s' % line)
+ return line
+
+
+def FixFourPartNotation(line):
+ """Fixes the second and fourth positions in 4 part CSS notation.
+
+ Args:
+ line: A string to fix 4 part CSS notation in.
+
+ Returns:
+ line reformatted with the 4 part notations swapped. For example:
+ line = FixFourPartNotation('padding: 1px 2px 3px 4px')
+ line will now be 'padding: 1px 4px 3px 2px'.
+ """
+ line = FOUR_NOTATION_QUANTITY_RE.sub('\\1 \\4 \\3 \\2', line)
+ line = FOUR_NOTATION_COLOR_RE.sub('\\1\\2 \\5 \\4 \\3', line)
+ logging.debug('FixFourPartNotation returns: %s' % line)
+ return line
+
+
+def FixBackgroundPosition(line):
+ """Fixes horizontal background percentage values in line.
+
+ Args:
+ line: A string to fix horizontal background position values in.
+
+ Returns:
+ line reformatted with the 4 part notations swapped.
+ """
+ line = BG_HORIZONTAL_PERCENTAGE_RE.sub(CalculateNewBackgroundPosition, line)
+ line = BG_HORIZONTAL_PERCENTAGE_X_RE.sub(CalculateNewBackgroundPositionX,
+ line)
+ logging.debug('FixBackgroundPosition returns: %s' % line)
+ return line
+
+
+def CalculateNewBackgroundPosition(m):
+ """Fixes horizontal background-position percentages.
+
+ This function should be used as an argument to re.sub since it needs to
+ perform replacement specific calculations.
+
+ Args:
+ m: A match object.
+
+ Returns:
+ A string with the horizontal background position percentage fixed.
+ BG_HORIZONTAL_PERCENTAGE_RE.sub(FixBackgroundPosition,
+ 'background-position: 75% 50%')
+ will return 'background-position: 25% 50%'.
+ """
+
+ # The flipped value is the offset from 100%
+ new_x = str(100-int(m.group(4)))
+
+ # Since m.group(1) may very well be None type and we need a string..
+ if m.group(1):
+ position_string = m.group(1)
+ else:
+ position_string = ''
+
+ return 'background%s%s%s%s%%%s' % (position_string, m.group(2), m.group(3),
+ new_x, m.group(5))
+
+
+def CalculateNewBackgroundPositionX(m):
+ """Fixes percent based background-position-x.
+
+ This function should be used as an argument to re.sub since it needs to
+ perform replacement specific calculations.
+
+ Args:
+ m: A match object.
+
+ Returns:
+ A string with the background-position-x percentage fixed.
+ BG_HORIZONTAL_PERCENTAGE_X_RE.sub(CalculateNewBackgroundPosition,
+ 'background-position-x: 75%')
+ will return 'background-position-x: 25%'.
+ """
+
+ # The flipped value is the offset from 100%
+ new_x = str(100-int(m.group(2)))
+
+ return 'background-position-x%s%s%%' % (m.group(1), new_x)
+
+
+def ChangeLeftToRightToLeft(lines,
+ swap_ltr_rtl_in_url=None,
+ swap_left_right_in_url=None):
+ """Turns lines into a stream and runs the fixing functions against it.
+
+ Args:
+ lines: An list of CSS lines.
+ swap_ltr_rtl_in_url: Overrides this flag if param is set.
+ swap_left_right_in_url: Overrides this flag if param is set.
+
+ Returns:
+ The same lines, but with left and right fixes.
+ """
+
+ global FLAGS
+
+ # Possibly override flags with params.
+ logging.debug('ChangeLeftToRightToLeft swap_ltr_rtl_in_url=%s, '
+ 'swap_left_right_in_url=%s' % (swap_ltr_rtl_in_url,
+ swap_left_right_in_url))
+ if swap_ltr_rtl_in_url is None:
+ swap_ltr_rtl_in_url = FLAGS['swap_ltr_rtl_in_url']
+ if swap_left_right_in_url is None:
+ swap_left_right_in_url = FLAGS['swap_left_right_in_url']
+
+ # Turns the array of lines into a single line stream.
+ logging.debug('LINES COUNT: %s' % len(lines))
+ line = TOKEN_LINES.join(lines)
+
+ # Tokenize any single line rules with the /* noflip */ annotation.
+ noflip_single_tokenizer = Tokenizer(NOFLIP_SINGLE_RE, 'NOFLIP_SINGLE')
+ line = noflip_single_tokenizer.Tokenize(line)
+
+ # Tokenize any class rules with the /* noflip */ annotation.
+ noflip_class_tokenizer = Tokenizer(NOFLIP_CLASS_RE, 'NOFLIP_CLASS')
+ line = noflip_class_tokenizer.Tokenize(line)
+
+ # Tokenize the comments so we can preserve them through the changes.
+ comment_tokenizer = Tokenizer(COMMENT_RE, 'C')
+ line = comment_tokenizer.Tokenize(line)
+
+ # Here starteth the various left/right orientation fixes.
+ line = FixBodyDirectionLtrAndRtl(line)
+
+ if swap_left_right_in_url:
+ line = FixLeftAndRightInUrl(line)
+
+ if swap_ltr_rtl_in_url:
+ line = FixLtrAndRtlInUrl(line)
+
+ line = FixLeftAndRight(line)
+ line = FixCursorProperties(line)
+ line = FixFourPartNotation(line)
+ line = FixBackgroundPosition(line)
+
+ # DeTokenize the single line noflips.
+ line = noflip_single_tokenizer.DeTokenize(line)
+
+ # DeTokenize the class-level noflips.
+ line = noflip_class_tokenizer.DeTokenize(line)
+
+ # DeTokenize the comments.
+ line = comment_tokenizer.DeTokenize(line)
+
+ # Rejoin the lines back together.
+ lines = line.split(TOKEN_LINES)
+
+ return lines
+
+def usage():
+ """Prints out usage information."""
+
+ print 'Usage:'
+ print ' ./cssjanus.py < file.css > file-rtl.css'
+ print 'Flags:'
+ print ' --swap_left_right_in_url: Fixes "left"/"right" string within urls.'
+ print ' Ex: ./cssjanus.py --swap_left_right_in_url < file.css > file_rtl.css'
+ print ' --swap_ltr_rtl_in_url: Fixes "ltr"/"rtl" string within urls.'
+ print ' Ex: ./cssjanus --swap_ltr_rtl_in_url < file.css > file_rtl.css'
+
+def setflags(opts):
+ """Parse the passed in command line arguments and set the FLAGS global.
+
+ Args:
+ opts: getopt iterable intercepted from argv.
+ """
+
+ global FLAGS
+
+ # Parse the arguments.
+ for opt, arg in opts:
+ logging.debug('opt: %s, arg: %s' % (opt, arg))
+ if opt in ("-h", "--help"):
+ usage()
+ sys.exit()
+ elif opt in ("-d", "--debug"):
+ logging.getLogger().setLevel(logging.DEBUG)
+ elif opt == '--swap_ltr_rtl_in_url':
+ FLAGS['swap_ltr_rtl_in_url'] = True
+ elif opt == '--swap_left_right_in_url':
+ FLAGS['swap_left_right_in_url'] = True
+
+
+def main(argv):
+ """Sends stdin lines to ChangeLeftToRightToLeft and writes to stdout."""
+
+ # Define the flags.
+ try:
+ opts, args = getopt.getopt(argv, 'hd', ['help', 'debug',
+ 'swap_left_right_in_url',
+ 'swap_ltr_rtl_in_url'])
+ except getopt.GetoptError:
+ usage()
+ sys.exit(2)
+
+ # Parse and set the flags.
+ setflags(opts)
+
+ # Call the main routine with all our functionality.
+ fixed_lines = ChangeLeftToRightToLeft(sys.stdin.readlines())
+ sys.stdout.write(''.join(fixed_lines))
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/skins/vector/cssjanus/csslex.py b/skins/vector/cssjanus/csslex.py
new file mode 100644
index 00000000..1fc7304e
--- /dev/null
+++ b/skins/vector/cssjanus/csslex.py
@@ -0,0 +1,114 @@
+#!/usr/bin/python
+#
+# Copyright 2007 Google Inc. All Rights Reserved.
+
+"""CSS Lexical Grammar rules.
+
+CSS lexical grammar from http://www.w3.org/TR/CSS21/grammar.html
+"""
+
+__author__ = ['elsigh@google.com (Lindsey Simon)',
+ 'msamuel@google.com (Mike Samuel)']
+
+# public symbols
+__all__ = [ "NEWLINE", "HEX", "NON_ASCII", "UNICODE", "ESCAPE", "NMSTART", "NMCHAR", "STRING1", "STRING2", "IDENT", "NAME", "HASH", "NUM", "STRING", "URL", "SPACE", "WHITESPACE", "COMMENT", "QUANTITY", "PUNC" ]
+
+# The comments below are mostly copied verbatim from the grammar.
+
+# "@import" {return IMPORT_SYM;}
+# "@page" {return PAGE_SYM;}
+# "@media" {return MEDIA_SYM;}
+# "@charset" {return CHARSET_SYM;}
+KEYWORD = r'(?:\@(?:import|page|media|charset))'
+
+# nl \n|\r\n|\r|\f ; a newline
+NEWLINE = r'\n|\r\n|\r|\f'
+
+# h [0-9a-f] ; a hexadecimal digit
+HEX = r'[0-9a-f]'
+
+# nonascii [\200-\377]
+NON_ASCII = r'[\200-\377]'
+
+# unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?
+UNICODE = r'(?:(?:\\' + HEX + r'{1,6})(?:\r\n|[ \t\r\n\f])?)'
+
+# escape {unicode}|\\[^\r\n\f0-9a-f]
+ESCAPE = r'(?:' + UNICODE + r'|\\[^\r\n\f0-9a-f])'
+
+# nmstart [_a-z]|{nonascii}|{escape}
+NMSTART = r'(?:[_a-z]|' + NON_ASCII + r'|' + ESCAPE + r')'
+
+# nmchar [_a-z0-9-]|{nonascii}|{escape}
+NMCHAR = r'(?:[_a-z0-9-]|' + NON_ASCII + r'|' + ESCAPE + r')'
+
+# ident -?{nmstart}{nmchar}*
+IDENT = r'-?' + NMSTART + NMCHAR + '*'
+
+# name {nmchar}+
+NAME = NMCHAR + r'+'
+
+# hash
+HASH = r'#' + NAME
+
+# string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\" ; "string"
+STRING1 = r'"(?:[^\"\\]|\\.)*"'
+
+# string2 \'([^\n\r\f\\']|\\{nl}|{escape})*\' ; 'string'
+STRING2 = r"'(?:[^\'\\]|\\.)*'"
+
+# string {string1}|{string2}
+STRING = '(?:' + STRING1 + r'|' + STRING2 + ')'
+
+# num [0-9]+|[0-9]*"."[0-9]+
+NUM = r'(?:[0-9]*\.[0-9]+|[0-9]+)'
+
+# s [ \t\r\n\f]
+SPACE = r'[ \t\r\n\f]'
+
+# w {s}*
+WHITESPACE = '(?:' + SPACE + r'*)'
+
+# url special chars
+URL_SPECIAL_CHARS = r'[!#$%&*-~]'
+
+# url chars ({url_special_chars}|{nonascii}|{escape})*
+URL_CHARS = r'(?:%s|%s|%s)*' % (URL_SPECIAL_CHARS, NON_ASCII, ESCAPE)
+
+# url
+URL = r'url\(%s(%s|%s)%s\)' % (WHITESPACE, STRING, URL_CHARS, WHITESPACE)
+
+# comments
+# see http://www.w3.org/TR/CSS21/grammar.html
+COMMENT = r'/\*[^*]*\*+([^/*][^*]*\*+)*/'
+
+# {E}{M} {return EMS;}
+# {E}{X} {return EXS;}
+# {P}{X} {return LENGTH;}
+# {C}{M} {return LENGTH;}
+# {M}{M} {return LENGTH;}
+# {I}{N} {return LENGTH;}
+# {P}{T} {return LENGTH;}
+# {P}{C} {return LENGTH;}
+# {D}{E}{G} {return ANGLE;}
+# {R}{A}{D} {return ANGLE;}
+# {G}{R}{A}{D} {return ANGLE;}
+# {M}{S} {return TIME;}
+# {S} {return TIME;}
+# {H}{Z} {return FREQ;}
+# {K}{H}{Z} {return FREQ;}
+# % {return PERCENTAGE;}
+UNIT = r'(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)'
+
+# {num}{UNIT|IDENT} {return NUMBER;}
+QUANTITY = '%s(?:%s%s|%s)?' % (NUM, WHITESPACE, UNIT, IDENT)
+
+# "<!--" {return CDO;}
+# "-->" {return CDC;}
+# "~=" {return INCLUDES;}
+# "|=" {return DASHMATCH;}
+# {w}"{" {return LBRACE;}
+# {w}"+" {return PLUS;}
+# {w}">" {return GREATER;}
+# {w}"," {return COMMA;}
+PUNC = r'<!--|-->|~=|\|=|[\{\+>,:;]'
diff --git a/skins/vector/experiments/babaco-colors-a.css b/skins/vector/experiments/babaco-colors-a.css
new file mode 100644
index 00000000..ce6f67dd
--- /dev/null
+++ b/skins/vector/experiments/babaco-colors-a.css
@@ -0,0 +1,109 @@
+/* Babaco Color Scheme A */
+
+
+a:visited,
+a:visited div.vectorTabs li.selected a:visited span {
+ color: #260e9c;
+}
+
+html .thumbimage,
+#toc, .toc, .mw-warning, div.thumbinner {
+ border-color: #cccccc;
+ background-color: #f7f7f7;
+}
+
+/* Framework */
+#mw-page-base {
+ background-color: inherit !important;
+ background-image: none !important;
+}
+body {
+ background-color: #f9f9f9 !important;
+ background-image:url(images/page-base-updated.png);
+}
+
+/* Links */
+a {
+ color: #0066cc;
+}
+a:visited {
+ color: #004d99;
+}
+a:active {
+ color: #ff6600;
+}
+a.stub {
+ color: #56228b;
+}
+a.new, #p-personal a.new {
+ color: #a31205 !important;
+}
+a.new:visited, #p-personal a.new:visited {
+ color: #a31205;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ border-color:#999999;
+ font-family:georgia, times, serif;
+ font-weight:bold;
+}
+#firstHeading {
+ font-size:1.5em;
+}
+h2 .editsection,
+.portal h5{
+ font-family:sans-serif;
+ font-weight:normal;
+
+}
+#toc h2, .toc h2 {
+ font-family:sans-serif;
+ font-weight:normal;
+}
+body #mw-panel div.portal div.body {
+ background-image:url(images/new-portal-break-ltr.png);
+}
+body.rtl #mw-panel div.portal div.body {
+ background-image:url(images/new-portal-break-rtl.png);
+}
+body div.vectorTabs li a, div.vectorTabs li a span{
+ color:#4d4d4d;
+}
+body div.vectorTabs li.selected a,
+body div.vectorTabs li.selected a span,
+body div.vectorTabs li.selected a:visited
+body div.vectorTabs li.selected a:visited span {
+ color: #ff9900 !important;
+ font-weight:bold;
+}
+div.vectorTabs li.new a,
+div.vectorTabs li.new a span,
+div.vectorTabs li.new a:visited,
+div.vectorTabs li.new a:visited span {
+ color:#a31205;
+}
+#toc,
+.toc,
+.mw-warning,
+div.gallerybox div.thumb,
+table.gallery,
+#preferences fieldset.prefsection fieldset,
+#preferences,
+html .thumbimage,
+.usermessage,
+img.thumbborder,
+div.thumbinner{
+ border: 1px solid #cccccc;
+ background-color: #f7f7f7;
+}
+#mw-panel div.portal h5 {
+ font-weight:bold;
+ margin-bottom:0;
+ padding-bottom:0.05em;
+ color:#000000;
+}
diff --git a/skins/vector/experiments/babaco-colors-b.css b/skins/vector/experiments/babaco-colors-b.css
new file mode 100644
index 00000000..227e197c
--- /dev/null
+++ b/skins/vector/experiments/babaco-colors-b.css
@@ -0,0 +1,67 @@
+/* Babaco Color Scheme A */
+
+
+html .thumbimage,
+#toc, .toc, .mw-warning, div.thumbinner {
+ border-color: #cccccc;
+ background-color: #f7f7f7;
+}
+
+/* Framework */
+#mw-page-base {
+ background-color: inherit !important;
+ background-image: none !important;
+}
+body {
+ background-color: #f9f9f9 !important;
+ background-image:url(images/page-base-updated.png);
+}
+/* Links */
+a {
+ color: #003cb3;
+}
+a.stub {
+ color: #772233;
+}
+a.new, #p-personal a.new {
+ color: #a31205 !important;
+}
+{
+ color: #260e9c;
+}
+a:visited,
+a:visited div.vectorTabs li.selected a:visited span,
+a.new:visited,
+#p-personal a.new:visited {
+ color: #260e9c;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ border-color:#999999;
+}
+
+div.vectorTabs li.new a,
+div.vectorTabs li.new a span,
+div.vectorTabs li.new a:visited,
+div.vectorTabs li.new a:visited span {
+ color:#a31205;
+}
+
+#toc,
+.toc,
+.mw-warning,
+div.gallerybox div.thumb,
+table.gallery,
+#preferences fieldset.prefsection fieldset,
+#preferences,
+html .thumbimage,
+.usermessage,
+img.thumbborder,
+div.thumbinner{
+ border: 1px solid #cccccc;
+ background-color: #f7f7f7;
+}
diff --git a/skins/vector/experiments/babaco-colors-c.css b/skins/vector/experiments/babaco-colors-c.css
new file mode 100644
index 00000000..d2dabf7d
--- /dev/null
+++ b/skins/vector/experiments/babaco-colors-c.css
@@ -0,0 +1,91 @@
+/* Babaco Color Scheme C */
+
+/* ridding ourselves of the gradient */
+#mw-page-base {
+ background-color: inherit !important;
+ background-image: none !important;
+}
+
+a:visited,
+a:visited div.vectorTabs li.selected a:visited span {
+ color: #260e9c;
+}
+
+html .thumbimage,
+#toc, .toc, .mw-warning, div.thumbinner {
+ border-color: #cccccc;
+ background-color: #f7f7f7;
+}
+
+/* Framework */
+body {
+ background-color: #f9f9f9 !important;
+ background-image:url(images/page-base-updated.png);
+}
+
+/* Links */
+a {
+ color: #0066cc;
+}
+a:visited {
+ color: #004d99;
+}
+a:active {
+ color: #ff6600;
+}
+a.stub {
+ color: #56228b;
+}
+a.new, #p-personal a.new {
+ color: #a31205 !important;
+}
+a.new:visited, #p-personal a.new:visited {
+ color: #a31205;
+}
+
+#firstHeading {
+ font-size:1.5em;
+}
+h2 .editsection,
+.portal h5 {
+ font-weight:normal;
+}
+#toc h2, .toc h2 {
+ font-weight:normal;
+}
+body #mw-panel div.portal div.body {
+ background-image:url(images/new-portal-break-ltr.png);
+}
+
+div.vectorTabs li.new a,
+div.vectorTabs li.new a span,
+div.vectorTabs li.new a:visited,
+div.vectorTabs li.new a:visited span {
+ color:#a31205;
+}
+#toc,
+.toc,
+.mw-warning,
+div.gallerybox div.thumb,
+table.gallery,
+#preferences fieldset.prefsection fieldset,
+#preferences,
+html .thumbimage,
+.usermessage,
+img.thumbborder,
+div.thumbinner {
+ border: 1px solid #cccccc;
+ background-color: #f7f7f7;
+}
+#mw-panel div.portal h5 {
+ font-weight:bold;
+ margin-bottom:0;
+ padding-bottom:0.05em;
+ color:#000000;
+}
+div.vectorTabs li.selected a,
+div.vectorTabs li.selected a span,
+div.vectorTabs li.selected a:visited
+div.vectorTabs li.selected a:visited span {
+ color: #333333 !important;
+} \ No newline at end of file
diff --git a/skins/vector/experiments/images/new-border.png b/skins/vector/experiments/images/new-border.png
new file mode 100644
index 00000000..735324ef
--- /dev/null
+++ b/skins/vector/experiments/images/new-border.png
Binary files differ
diff --git a/skins/vector/experiments/images/new-portal-break-ltr.png b/skins/vector/experiments/images/new-portal-break-ltr.png
new file mode 100644
index 00000000..cd8f3b15
--- /dev/null
+++ b/skins/vector/experiments/images/new-portal-break-ltr.png
Binary files differ
diff --git a/skins/vector/experiments/images/new-portal-break-rtl.png b/skins/vector/experiments/images/new-portal-break-rtl.png
new file mode 100644
index 00000000..45c5b2f9
--- /dev/null
+++ b/skins/vector/experiments/images/new-portal-break-rtl.png
Binary files differ
diff --git a/skins/vector/experiments/images/page-base-fade.png b/skins/vector/experiments/images/page-base-fade.png
new file mode 100644
index 00000000..dc631823
--- /dev/null
+++ b/skins/vector/experiments/images/page-base-fade.png
Binary files differ
diff --git a/skins/vector/experiments/images/page-base-updated.png b/skins/vector/experiments/images/page-base-updated.png
new file mode 100644
index 00000000..54ffeb00
--- /dev/null
+++ b/skins/vector/experiments/images/page-base-updated.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-active-first.png b/skins/vector/experiments/images/tab-active-first.png
new file mode 100644
index 00000000..e4c39c42
--- /dev/null
+++ b/skins/vector/experiments/images/tab-active-first.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-active-last.png b/skins/vector/experiments/images/tab-active-last.png
new file mode 100644
index 00000000..a96f3916
--- /dev/null
+++ b/skins/vector/experiments/images/tab-active-last.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-fade.png b/skins/vector/experiments/images/tab-fade.png
new file mode 100644
index 00000000..1eb0e23b
--- /dev/null
+++ b/skins/vector/experiments/images/tab-fade.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-first.png b/skins/vector/experiments/images/tab-first.png
new file mode 100644
index 00000000..439b713f
--- /dev/null
+++ b/skins/vector/experiments/images/tab-first.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-last.png b/skins/vector/experiments/images/tab-last.png
new file mode 100644
index 00000000..08e283dd
--- /dev/null
+++ b/skins/vector/experiments/images/tab-last.png
Binary files differ
diff --git a/skins/vector/experiments/images/tab-new-fade.png b/skins/vector/experiments/images/tab-new-fade.png
new file mode 100644
index 00000000..44925505
--- /dev/null
+++ b/skins/vector/experiments/images/tab-new-fade.png
Binary files differ
diff --git a/skins/vector/experiments/new-tabs.css b/skins/vector/experiments/new-tabs.css
new file mode 100644
index 00000000..e3850e8e
--- /dev/null
+++ b/skins/vector/experiments/new-tabs.css
@@ -0,0 +1,322 @@
+/* new border color */
+#content {
+ background-image: url(images/new-border.png);
+}
+
+#footer {
+ background-image: url(images/new-border.png);
+}
+ body div#left-navigation,
+ body div#right-navigation {
+ top:3.2em;
+ }
+ body div#right-navigation {
+ margin-top:3.2em;
+ }
+ body #p-search form,
+ body #p-search input,
+ body #simpleSearch {
+ margin-top:0;
+ }
+ body div#p-cactions {
+ margin-top:0;
+ }
+ /* Namespaces and Views */
+ /* @noflip */
+ div.vectorTabs {
+ float: left;
+ }
+ body div.vectorTabs {
+ background-image: none;
+ padding-left: 0;
+ }
+ /* @noflip */
+ div.vectorTabs ul {
+ float: left;
+ }
+ div.vectorTabs ul {
+ height: 100%;
+ list-style: none;
+ background-image:none;
+ margin: 0;
+ padding: 0;
+ }
+ /* @noflip */
+ div.vectorTabs ul li {
+ float: left;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ body div.vectorTabs ul li {
+ line-height: 1em;
+ display: inline-block;
+ height: 2em;
+ margin: 0 1px 0 0;
+ padding: 0;
+ background:none;
+ overflow:hidden;
+ white-space:nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs ul > li {
+ display: block;
+ }
+ body div.vectorTabs li.selected {
+ background-image: none;
+ border:none;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ body div.vectorTabs li a {
+ border-top:1px solid #cccccc;
+ border-left:1px solid #cccccc;
+ border-right:1px solid #cccccc;
+ display: inline-block;
+ height: 1.7em;
+ padding-left: 0.6em;
+ padding-right: 0.6em;
+ background-image:url(images/tab-fade.png);
+ background-position:bottom left;
+ background-repeat:repeat-x;
+ background-color:#ffffff;
+ }
+ body div.vectorTabs li.new a{
+ background-image:url(images/tab-new-fade.png);
+
+ }
+ div.vectorTabs li a,
+ div.vectorTabs li a span {
+ cursor: pointer;
+ }
+ div.vectorTabs li a span {
+ font-size: 0.8em;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs li > a {
+ display: block;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ body div.vectorTabs a span {
+ display: inline-block;
+ padding-top: 0.5em;
+ }
+ /* IGNORED BY IE6 */
+ /* @noflip */
+ div.vectorTabs a > span {
+ float: left;
+ display: block;
+ }
+ body div.vectorTabs li.last {
+ background-image: url(images/tab-last.png);
+ background-repeat:no-repeat;
+ background-position:top right;
+ border:none;
+ }
+ body div.vectorTabs li.last a {
+ margin-right:7px;
+ padding-left:0.4em;
+ padding-right:0;
+ border-left:1px solid #cccccc;
+ border-top:1px solid #cccccc;
+ border-right:none;
+ background-image:url(images/tab-fade.png);
+ background-position:top left;
+ background-repeat:repeat-x;
+ }
+ body div.vectorTabs li.first {
+ background-image: url(images/tab-first.png);
+ background-repeat:no-repeat;
+ background-position:top left;
+ border:none;
+ }
+ body div.vectorTabs li.first a {
+ margin-left:7px;
+ padding-left:0em;
+ padding-right:0.4em;
+ border-right:1px solid #cccccc;
+ border-top:1px solid #cccccc;
+ background-image:url(images/tab-fade.png);
+ background-position:top left;
+ background-repeat:repeat-x;
+ }
+
+ div.vectorTabs li.selected a,
+ div.vectorTabs li.selected a span,
+ div.vectorTabs li.selected a:visited
+ div.vectorTabs li.selected a:visited span {
+ color: #be5900 !important;
+ text-decoration: none;
+ }
+
+ body div.vectorTabs li.selected a {
+ border-top:1px solid #6cc8f3;
+ border-right:1px solid #6cc8f3;
+ border-left:1px solid #6cc8f3;
+ background-color:#fff;
+ height:1.75em;
+ background-image:none;
+ }
+ body div.vectorTabs li.selected.first {
+ background-image: url(images/tab-active-first.png);
+ background-repeat:no-repeat;
+ background-position:top left;
+ }
+ body div.vectorTabs li.selected.first a {
+ margin-left:7px;
+ padding-right:0.6em;
+ padding-left:0.4em;
+ border-left:none;
+ }
+ body div.vectorTabs li.selected.last {
+ background-image: url(images/tab-active-last.png);
+ background-repeat:no-repeat;
+ background-position:top right;
+ }
+ body div.vectorTabs li.selected.last a {
+ margin-right:7px;
+ padding-left:0.6em;
+ padding-right:0.4em;
+ border-right:none;
+ }
+
+ /* Variants and Actions */
+ /* @noflip */
+ div.vectorMenu {
+ background-image:url(images/tab-fade.png);
+ background-position:bottom left;
+ background-repeat:repeat-x;
+ border-top:1px solid #cccccc;
+ border-left:1px solid #cccccc;
+ border-right:1px solid #cccccc;
+ }
+ body.rtl div.vectorMenu {
+ direction: rtl;
+ }
+ /* @noflip */
+ body #mw-head div.vectorMenu h5 {
+ background-image: url(../images/arrow-down-icon.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+ padding-left: 0;
+ margin-left: 0px;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ body div.vectorMenu h5 a {
+ display: inline-block;
+ width: 24px;
+ height:1.5em;
+ background-image: none !important;
+
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu h5 > a {
+ display: block;
+ }
+ div.vectorMenu div.menu {
+ position: relative;
+ left:1px;
+ display: none;
+ clear: both;
+ text-align: left;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ body.rtl div.vectorMenu div.menu {
+ margin-right: 24px;
+ }
+ /* IGNORED BY IE6 */
+ body.rtl div.vectorMenu > div.menu {
+ margin-right: auto;
+ }
+ /* Fixes old versions of FireFox */
+ body.rtl div.vectorMenu > div.menu,
+ x:-moz-any-link {
+ margin-right: 24px;
+ }
+ div.vectorMenu:hover div.menu {
+ display: block;
+ }
+ div.vectorMenu ul {
+ position: absolute;
+ background-color: white;
+ border: solid 1px silver;
+ border-top-width: 0;
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ margin-left: -1px;
+ text-align: left;
+ }
+ /* Fixes old versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link {
+ min-width: 5em;
+ }
+ /* Returns things back to normal in modern versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link,
+ x:default {
+ min-width: 0;
+ }
+ div.vectorMenu li {
+ padding: 0;
+ margin: 0;
+ text-align: left;
+ line-height: 1em;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorMenu li a {
+ display: inline-block;
+ padding: 0.5em;
+ white-space: nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu li > a {
+ display: block;
+ }
+ div.vectorMenu li a {
+ color: #0645ad;
+ cursor: pointer;
+ font-size: 0.8em;
+ }
+ div.vectorMenu li.selected a,
+ div.vectorMenu li.selected a:visited {
+ color: #333333;
+ text-decoration: none;
+ }
+#ca-unwatch.icon,
+#ca-watch.icon {
+ background-color:#ffffff;
+ height:1.75em !important;
+ background-image:url(images/tab-fade.png);
+ background-position:bottom left;
+ background-repeat:repeat-x;
+}
+#ca-unwatch.icon a,
+#ca-watch.icon a {
+ height: 1.7em !important;
+ border-bottom:none;
+ background-color:transparent;
+}
+#ca-watch.icon a,
+#ca-unwatch.icon a {
+ background-repeat:no-repeat;
+}
+.wikiEditor-ui-tabs {
+ border: none;
+ height: 2.15em;
+}
+.wikiEditor-ui-buttons {
+ height: 2.15em;
+}
+.wikiEditor-ui-tabs div {
+ border: 1px solid silver;
+ margin-right: 1px;
+ height: 2.15em;
+}
+.wikiEditor-ui-tabs div a {
+ line-height: 2.15em;
+ background: #FFFFFF url(images/tab-fade.png) repeat-x 0 100%;
+}
+.wikiEditor-ui-tabs div.current a {
+ background: #FFFFFF;
+}
diff --git a/skins/vector/images/arrow-down-icon.png b/skins/vector/images/arrow-down-icon.png
new file mode 100644
index 00000000..bf2d4fb4
--- /dev/null
+++ b/skins/vector/images/arrow-down-icon.png
Binary files differ
diff --git a/skins/vector/images/audio-icon.png b/skins/vector/images/audio-icon.png
new file mode 100644
index 00000000..0f59a2bb
--- /dev/null
+++ b/skins/vector/images/audio-icon.png
Binary files differ
diff --git a/skins/vector/images/border.png b/skins/vector/images/border.png
new file mode 100644
index 00000000..54b47922
--- /dev/null
+++ b/skins/vector/images/border.png
Binary files differ
diff --git a/skins/vector/images/bullet-icon.png b/skins/vector/images/bullet-icon.png
new file mode 100644
index 00000000..e304b267
--- /dev/null
+++ b/skins/vector/images/bullet-icon.png
Binary files differ
diff --git a/skins/vector/images/document-icon.png b/skins/vector/images/document-icon.png
new file mode 100644
index 00000000..91dc16f6
--- /dev/null
+++ b/skins/vector/images/document-icon.png
Binary files differ
diff --git a/skins/vector/images/edit-icon.png b/skins/vector/images/edit-icon.png
new file mode 100644
index 00000000..4a962767
--- /dev/null
+++ b/skins/vector/images/edit-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-ltr-icon.png b/skins/vector/images/external-link-ltr-icon.png
new file mode 100644
index 00000000..4b710b03
--- /dev/null
+++ b/skins/vector/images/external-link-ltr-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-rtl-icon.png b/skins/vector/images/external-link-rtl-icon.png
new file mode 100644
index 00000000..17df03a3
--- /dev/null
+++ b/skins/vector/images/external-link-rtl-icon.png
Binary files differ
diff --git a/skins/vector/images/file-icon.png b/skins/vector/images/file-icon.png
new file mode 100644
index 00000000..1261f00c
--- /dev/null
+++ b/skins/vector/images/file-icon.png
Binary files differ
diff --git a/skins/vector/images/link-icon.png b/skins/vector/images/link-icon.png
new file mode 100644
index 00000000..fc77e81d
--- /dev/null
+++ b/skins/vector/images/link-icon.png
Binary files differ
diff --git a/skins/vector/images/lock-icon.png b/skins/vector/images/lock-icon.png
new file mode 100644
index 00000000..9e63807a
--- /dev/null
+++ b/skins/vector/images/lock-icon.png
Binary files differ
diff --git a/skins/vector/images/magnify-clip.png b/skins/vector/images/magnify-clip.png
new file mode 100644
index 00000000..00a9cee1
--- /dev/null
+++ b/skins/vector/images/magnify-clip.png
Binary files differ
diff --git a/skins/vector/images/mail-icon.png b/skins/vector/images/mail-icon.png
new file mode 100644
index 00000000..50de0781
--- /dev/null
+++ b/skins/vector/images/mail-icon.png
Binary files differ
diff --git a/skins/vector/images/news-icon.png b/skins/vector/images/news-icon.png
new file mode 100644
index 00000000..8ab49957
--- /dev/null
+++ b/skins/vector/images/news-icon.png
Binary files differ
diff --git a/skins/vector/images/page-base.png b/skins/vector/images/page-base.png
new file mode 100644
index 00000000..17d02a74
--- /dev/null
+++ b/skins/vector/images/page-base.png
Binary files differ
diff --git a/skins/vector/images/page-fade.png b/skins/vector/images/page-fade.png
new file mode 100644
index 00000000..815a0486
--- /dev/null
+++ b/skins/vector/images/page-fade.png
Binary files differ
diff --git a/skins/vector/images/portal-break-ltr.png b/skins/vector/images/portal-break-ltr.png
new file mode 100644
index 00000000..c1823705
--- /dev/null
+++ b/skins/vector/images/portal-break-ltr.png
Binary files differ
diff --git a/skins/vector/images/portal-break-rtl.png b/skins/vector/images/portal-break-rtl.png
new file mode 100644
index 00000000..a45144c0
--- /dev/null
+++ b/skins/vector/images/portal-break-rtl.png
Binary files differ
diff --git a/skins/vector/images/portal-break.png b/skins/vector/images/portal-break.png
new file mode 100644
index 00000000..e81b5597
--- /dev/null
+++ b/skins/vector/images/portal-break.png
Binary files differ
diff --git a/skins/vector/images/preferences-base.png b/skins/vector/images/preferences-base.png
new file mode 100644
index 00000000..adfd70d7
--- /dev/null
+++ b/skins/vector/images/preferences-base.png
Binary files differ
diff --git a/skins/vector/images/preferences-break.png b/skins/vector/images/preferences-break.png
new file mode 100644
index 00000000..6c5c68c4
--- /dev/null
+++ b/skins/vector/images/preferences-break.png
Binary files differ
diff --git a/skins/vector/images/preferences-edge.png b/skins/vector/images/preferences-edge.png
new file mode 100644
index 00000000..3da0d099
--- /dev/null
+++ b/skins/vector/images/preferences-edge.png
Binary files differ
diff --git a/skins/vector/images/preferences-fade.png b/skins/vector/images/preferences-fade.png
new file mode 100644
index 00000000..b4773c5c
--- /dev/null
+++ b/skins/vector/images/preferences-fade.png
Binary files differ
diff --git a/skins/vector/images/search-fade.png b/skins/vector/images/search-fade.png
new file mode 100644
index 00000000..53461d6d
--- /dev/null
+++ b/skins/vector/images/search-fade.png
Binary files differ
diff --git a/skins/vector/images/search-ltr.png b/skins/vector/images/search-ltr.png
new file mode 100644
index 00000000..1db2eb24
--- /dev/null
+++ b/skins/vector/images/search-ltr.png
Binary files differ
diff --git a/skins/vector/images/search-rtl.png b/skins/vector/images/search-rtl.png
new file mode 100644
index 00000000..c26c8d07
--- /dev/null
+++ b/skins/vector/images/search-rtl.png
Binary files differ
diff --git a/skins/vector/images/tab-break.png b/skins/vector/images/tab-break.png
new file mode 100644
index 00000000..81155562
--- /dev/null
+++ b/skins/vector/images/tab-break.png
Binary files differ
diff --git a/skins/vector/images/tab-current-fade.png b/skins/vector/images/tab-current-fade.png
new file mode 100644
index 00000000..c6238d26
--- /dev/null
+++ b/skins/vector/images/tab-current-fade.png
Binary files differ
diff --git a/skins/vector/images/tab-normal-fade.png b/skins/vector/images/tab-normal-fade.png
new file mode 100644
index 00000000..4a5e3e4a
--- /dev/null
+++ b/skins/vector/images/tab-normal-fade.png
Binary files differ
diff --git a/skins/vector/images/talk-icon.png b/skins/vector/images/talk-icon.png
new file mode 100644
index 00000000..0b80ee91
--- /dev/null
+++ b/skins/vector/images/talk-icon.png
Binary files differ
diff --git a/skins/vector/images/user-icon.png b/skins/vector/images/user-icon.png
new file mode 100644
index 00000000..ac3d59d5
--- /dev/null
+++ b/skins/vector/images/user-icon.png
Binary files differ
diff --git a/skins/vector/images/video-icon.png b/skins/vector/images/video-icon.png
new file mode 100644
index 00000000..5e7f4af7
--- /dev/null
+++ b/skins/vector/images/video-icon.png
Binary files differ
diff --git a/skins/vector/images/watch-icon-loading.gif b/skins/vector/images/watch-icon-loading.gif
new file mode 100644
index 00000000..618c308e
--- /dev/null
+++ b/skins/vector/images/watch-icon-loading.gif
Binary files differ
diff --git a/skins/vector/images/watch-icons.png b/skins/vector/images/watch-icons.png
new file mode 100644
index 00000000..54b2c793
--- /dev/null
+++ b/skins/vector/images/watch-icons.png
Binary files differ
diff --git a/skins/vector/main-ltr.css b/skins/vector/main-ltr.css
new file mode 100644
index 00000000..78dd1e2b
--- /dev/null
+++ b/skins/vector/main-ltr.css
@@ -0,0 +1,1128 @@
+/*
+ * main-rtl.css is automatically generated using CSSJanus, a python script for
+ * creating RTL versions of otherwise LTR stylesheets.
+ *
+ * You may download the tool to rebuild this stylesheet
+ * http://code.google.com/p/cssjanus/
+ *
+ * An online version of this tool can be used at:
+ * http://cssjanus.commoner.com/
+ *
+ * The following command is used to generate the RTL version of this file
+ * ./cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
+ *
+ * Any rules which should not be flipped should be prepended with @noflip in
+ * a comment block.
+ */
+/* Framework */
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+body {
+ background-color: #f3f3f3;
+ background-image: url(images/page-base.png);
+}
+/* Content */
+#content {
+ margin-left: 10em;
+ padding: 1em;
+ background-image: url(images/border.png);
+ background-position: top left;
+ background-repeat: repeat-y;
+ background-color: white;
+}
+/* Head */
+#mw-page-base {
+ height: 5em;
+ background-color: white;
+ background-image: url(images/page-fade.png);
+ background-position: bottom left;
+ background-repeat: repeat-x;
+}
+#mw-head-base {
+ margin-top: -5em;
+ margin-left: 10em;
+ height: 5em;
+ background-image: url(images/border.png);
+ background-position: bottom left;
+ background-repeat: repeat-x;
+}
+#mw-head {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+}
+#mw-head h5 {
+ margin: 0;
+ padding: 0;
+}
+ /* Hide empty portlets */
+ div.emptyPortlet {
+ display: none;
+ }
+ /* Personal */
+ #p-personal {
+ position: absolute;
+ top: 0;
+ margin-left: 10em;
+ right: 0.75em;
+ }
+ #p-personal h5 {
+ display: none;
+ }
+ #p-personal ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ /* @noflip */
+ #p-personal li {
+ line-height: 1.125em;
+ float: left;
+ }
+ #p-personal li {
+ margin-left: 0.75em;
+ margin-top: 0.5em;
+ font-size: 0.75em;
+ }
+ /* Navigation Containers */
+ #left-navigation {
+ position: absolute;
+ left: 10em;
+ top: 2.5em;
+ }
+ #right-navigation {
+ float: right;
+ margin-top: 2.5em;
+ }
+ /* Navigation Labels */
+ div.vectorTabs h5,
+ div.vectorMenu h5 span {
+ display: none;
+ }
+ /* Namespaces and Views */
+ /* @noflip */
+ div.vectorTabs {
+ float: left;
+ }
+ div.vectorTabs {
+ background-image: url(images/tab-break.png);
+ background-position: bottom left;
+ background-repeat: no-repeat;
+ padding-left: 1px;
+ }
+ /* @noflip */
+ div.vectorTabs ul {
+ float: left;
+ }
+ div.vectorTabs ul {
+ height: 100%;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ /* @noflip */
+ div.vectorTabs ul li {
+ float: left;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs ul li {
+ line-height: 1.125em;
+ display: inline-block;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ background-color: #f3f3f3;
+ background-image: url(images/tab-normal-fade.png);
+ background-position: bottom left;
+ background-repeat: repeat-x;
+ white-space:nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs ul > li {
+ display: block;
+ }
+ div.vectorTabs li.selected {
+ background-image: url(images/tab-current-fade.png);
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs li a {
+ display: inline-block;
+ height: 2.5em;
+ padding-left: 0.4em;
+ padding-right: 0.4em;
+ background-image: url(images/tab-break.png);
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ }
+ div.vectorTabs li a,
+ div.vectorTabs li a span {
+ color: #0645ad;
+ cursor: pointer;
+ }
+ div.vectorTabs li a span {
+ font-size: 0.8em;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs li > a {
+ display: block;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs a span {
+ display: inline-block;
+ padding-top: 1.25em;
+ }
+ /* IGNORED BY IE6 */
+ /* @noflip */
+ div.vectorTabs a > span {
+ float: left;
+ display: block;
+ }
+ div.vectorTabs li.selected a,
+ div.vectorTabs li.selected a span,
+ div.vectorTabs li.selected a:visited
+ div.vectorTabs li.selected a:visited span {
+ color: #333333;
+ text-decoration: none;
+ }
+ div.vectorTabs li.new a,
+ div.vectorTabs li.new a span,
+ div.vectorTabs li.new a:visited,
+ div.vectorTabs li.new a:visited span {
+ color: #a55858;
+ }
+ /* Variants and Actions */
+ /* @noflip */
+ div.vectorMenu {
+ direction: ltr;
+ float: left;
+ background-image: url(images/arrow-down-icon.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+ /* @noflip */
+ body.rtl div.vectorMenu {
+ direction: rtl;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ #mw-head div.vectorMenu h5 {
+ float: left;
+ background-image: url(images/tab-break.png);
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #mw-head div.vectorMenu > h5 {
+ background-image: none;
+ }
+ #mw-head div.vectorMenu h5 {
+ background-position: bottom left;
+ margin-left: -1px;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ div.vectorMenu h5 a {
+ display: inline-block;
+ width: 24px;
+ height: 2.5em;
+ text-decoration: none;
+ background-image: url(images/tab-break.png);
+ background-repeat: no-repeat;
+ }
+ div.vectorMenu h5 a{
+ background-position: bottom right;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu h5 > a {
+ display: block;
+ }
+ div.vectorMenu div.menu {
+ position: relative;
+ display: none;
+ clear: both;
+ text-align: left;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ body.rtl div.vectorMenu div.menu {
+ margin-left: 24px;
+ }
+ /* IGNORED BY IE6 */
+ /* @noflip */
+ body.rtl div.vectorMenu > div.menu {
+ margin-left: auto;
+ }
+ /* Fixes old versions of FireFox */
+ /* @noflip */
+ body.rtl div.vectorMenu > div.menu,
+ x:-moz-any-link {
+ margin-left: 23px;
+ }
+ div.vectorMenu:hover div.menu {
+ display: block;
+ }
+ div.vectorMenu ul {
+ position: absolute;
+ background-color: white;
+ border: solid 1px silver;
+ border-top-width: 0;
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ margin-left: -1px;
+ text-align: left;
+ }
+ /* Fixes old versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link {
+ min-width: 5em;
+ }
+ /* Returns things back to normal in modern versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link,
+ x:default {
+ min-width: 0;
+ }
+ div.vectorMenu li {
+ padding: 0;
+ margin: 0;
+ text-align: left;
+ line-height: 1em;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorMenu li a {
+ display: inline-block;
+ padding: 0.5em;
+ white-space: nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu li > a {
+ display: block;
+ }
+ div.vectorMenu li a {
+ color: #0645ad;
+ cursor: pointer;
+ font-size: 0.8em;
+ }
+ div.vectorMenu li.selected a,
+ div.vectorMenu li.selected a:visited {
+ color: #333333;
+ text-decoration: none;
+ }
+ /* Search */
+ #p-search h5 {
+ display: none;
+ }
+ /* @noflip */
+ #p-search {
+ float: left;
+ }
+ #p-search {
+ margin-right: 0.5em;
+ margin-left: 0.5em;
+ }
+ #p-search form,
+ #p-search input {
+ margin: 0;
+ margin-top: 0.4em;
+ }
+ #simpleSearch {
+ margin-top: 0.5em;
+ position: relative;
+ border: solid 1px #AAAAAA;
+ background-color: white;
+ background-image: url(images/search-fade.png);
+ background-position: top left;
+ background-repeat: repeat-x;
+ }
+ #simpleSearch label {
+ font-size: 0.8em;
+ top: 0.25em;
+ }
+ #simpleSearch input#searchInput {
+ margin: 0;
+ border-width: 0;
+ padding: 0.25em;
+ line-height: 1em;
+ font-size: 0.8em;
+ width: 9em;
+ background-color: transparent;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ #simpleSearch button#searchButton {
+ margin: 0;
+ padding: 0;
+ width: 1.75em;
+ height: 1.5em;
+ border: none;
+ cursor: pointer;
+ background-color: transparent;
+ background-image: url(images/search-ltr.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #simpleSearch > button#searchButton {
+ height: 100%;
+ }
+ .suggestions-special .special-label {
+ font-size: 0.8em;
+ color: gray;
+ }
+ .suggestions-special .special-query {
+ color: black;
+ font-style: italic;
+ }
+ .suggestions-special .special-hover {
+ background-color: silver;
+ }
+/* Panel */
+#mw-panel {
+ position: absolute;
+ top: 160px;
+ padding-top: 1em;
+ width: 10em;
+ left: 0;
+}
+ #mw-panel div.portal {
+ padding-bottom: 1.5em;
+ }
+ #mw-panel div.portal h5 {
+ font-weight: normal;
+ color: #444444;
+ padding: 0.25em;
+ padding-top: 0;
+ padding-left: 1.75em;
+ cursor: default;
+ border: none;
+ font-size: 0.75em;
+ }
+ #mw-panel div.portal div.body {
+ margin: 0;
+ padding-top: 0.5em;
+ margin-left: 1.25em;
+ background-image: url(images/portal-break.png);
+ background-repeat: no-repeat;
+ background-position: top left;
+ }
+ #mw-panel div.portal div.body ul {
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ }
+ #mw-panel div.portal div.body ul li {
+ line-height: 1.125em;
+ padding: 0;
+ padding-bottom: 0.5em;
+ margin: 0;
+ overflow: hidden;
+ font-size: 0.75em;
+ }
+ #mw-panel div.portal div.body ul li a {
+ color: #0645ad;
+ }
+ #mw-panel div.portal div.body ul li a:visited {
+ color: #0b0080;
+ }
+/* Footer */
+#footer {
+ margin-left: 10em;
+ margin-top: 0;
+ padding: 0.75em;
+ background-image: url(images/border.png);
+ background-position: top left;
+ background-repeat: repeat-x;
+}
+#footer ul {
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+#footer ul li {
+ margin: 0;
+ padding: 0;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ color: #333333;
+ font-size: 0.7em;
+}
+#footer #footer-icons {
+ float: right;
+}
+/* @noflip */
+body.ltr #footer #footer-places {
+ float: left;
+}
+#footer #footer-info li {
+ line-height: 1.4em;
+}
+#footer #footer-icons li {
+ float: left;
+ margin-left: 0.5em;
+ line-height: 2em;
+}
+#footer #footer-places li {
+ float: left;
+ margin-right: 1em;
+ line-height: 2em;
+}
+/* Logo */
+#p-logo {
+ position: absolute;
+ top: -160px;
+ left: 0;
+ width: 10em;
+ height: 160px;
+}
+#p-logo a {
+ display: block;
+ width: 10em;
+ height: 160px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ text-decoration: none;
+}
+
+/*
+ *
+ * The following code is highly modified from monobook. It would be nice if the
+ * preftoc id was more human readable like preferences-toc for instance,
+ * howerver this would require backporting the other skins.
+ */
+
+/* Preferences */
+#preftoc {
+ /* Tabs */
+ width: 100%;
+ float: left;
+ clear: both;
+ margin: 0 !important;
+ padding: 0 !important;
+ background-image: url(images/preferences-break.png);
+ background-position: bottom left;
+ background-repeat: no-repeat;
+}
+ #preftoc li {
+ /* Tab */
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 1px;
+ height: 2.25em;
+ white-space: nowrap;
+ list-style-type: none;
+ list-style-image: none;
+ background-image: url(images/preferences-break.png);
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #preftoc li:first-child {
+ margin-left: 1px;
+ }
+ #preftoc a,
+ #preftoc a:active {
+ display: inline-block;
+ position: relative;
+ color: #0645ad;
+ padding: 0.5em;
+ text-decoration: none;
+ background-image: none;
+ font-size: 0.9em;
+ }
+ #preftoc a:hover {
+ text-decoration: underline;
+ }
+ #preftoc li.selected a {
+ background-image: url(images/preferences-fade.png);
+ background-position: bottom;
+ background-repeat: repeat-x;
+ color: #333333;
+ text-decoration: none;
+ }
+#preferences {
+ float: left;
+ width: 100%;
+ margin: 0;
+ margin-top: -2px;
+ clear: both;
+ border: solid 1px #cccccc;
+ background-color: #f9f9f9;
+ background-image: url(images/preferences-base.png);
+}
+#preferences fieldset.prefsection {
+ border: none;
+ padding: 0;
+ margin: 1em;
+}
+#preferences fieldset.prefsection fieldset {
+ border: none;
+ border-top: solid 1px #cccccc;
+}
+#preferences legend {
+ color: #666666;
+}
+#preferences fieldset.prefsection legend.mainLegend {
+ display: none;
+}
+#preferences td {
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+#preferences td.htmlform-tip {
+ font-size: x-small;
+ padding: .2em 2em;
+ color: #666666;
+}
+#preferences div.mw-prefs-buttons {
+ padding: 1em;
+}
+#preferences div.mw-prefs-buttons input {
+ margin-right: 0.25em;
+}
+
+/*
+ * Styles for the user login and create account forms
+ */
+#userlogin, #userloginForm {
+ border: solid 1px #cccccc;
+ padding: 1.2em;
+ margin: .5em;
+ float: left;
+}
+
+#userlogin {
+ min-width: 20em;
+ max-width: 90%;
+ width: 40em;
+}
+
+/*
+ *
+ * The following code is slightly modified from monobook
+ *
+ */
+#content {
+ line-height: 1.5em;
+}
+#bodyContent {
+ font-size: 0.8em;
+}
+/* Links */
+a {
+ text-decoration: none;
+ color: #0645ad;
+ background: none;
+}
+a:visited {
+ color: #0b0080;
+}
+a:active {
+ color: #faa700;
+}
+a:hover {
+ text-decoration: underline;
+}
+a.stub {
+ color: #772233;
+}
+a.new, #p-personal a.new {
+ color: #ba0000;
+}
+a.new:visited, #p-personal a.new:visited {
+ color: #a55858;
+}
+
+/* Inline Elements */
+img {
+ border: none;
+ vertical-align: middle;
+}
+hr {
+ height: 1px;
+ color: #aaa;
+ background-color: #aaa;
+ border: 0;
+ margin: .2em 0 .2em 0;
+}
+
+/* Structural Elements */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: black;
+ background: none;
+ font-weight: normal;
+ margin: 0;
+ padding-top: .5em;
+ padding-bottom: .17em;
+ border-bottom: 1px solid #aaa;
+ width: auto;
+}
+h1 { font-size: 188%; }
+h1 .editsection { font-size: 53%; }
+h2 { font-size: 150%; }
+h2 .editsection { font-size: 67%; }
+h3,
+h4,
+h5,
+h6 {
+ border-bottom: none;
+ font-weight: bold;
+}
+h3 { font-size: 132%; }
+h3 .editsection { font-size: 76%; font-weight: normal; }
+h4 { font-size: 116%; }
+h4 .editsection { font-size: 86%; font-weight: normal; }
+h5 { font-size: 100%; }
+h5 .editsection { font-weight: normal; }
+h6 { font-size: 80%; }
+h6 .editsection { font-size: 125%; font-weight: normal; }
+p {
+ margin: .4em 0 .5em 0;
+ line-height: 1.5em;
+}
+ p img {
+ margin: 0;
+ }
+abbr,
+acronym,
+.explain {
+ border-bottom: 1px dotted black;
+ color: black;
+ background: none;
+ cursor: help;
+}
+q {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}
+/* Disabled for now
+blockquote {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}*/
+code {
+ background-color: #f9f9f9;
+}
+pre {
+ padding: 1em;
+ border: 1px dashed #2f6fab;
+ color: black;
+ background-color: #f9f9f9;
+ line-height: 1.1em;
+}
+ul {
+ line-height: 1.5em;
+ list-style-type: square;
+ margin: .3em 0 0 1.5em;
+ padding: 0;
+ list-style-image: url(images/bullet-icon.png);
+}
+ol {
+ line-height: 1.5em;
+ margin: .3em 0 0 3.2em;
+ padding: 0;
+ list-style-image: none;
+}
+li {
+ margin-bottom: .1em;
+}
+dt {
+ font-weight: bold;
+ margin-bottom: .1em;
+}
+dl {
+ margin-top: .2em;
+ margin-bottom: .5em;
+}
+dd {
+ line-height: 1.5em;
+ margin-left: 2em;
+ margin-bottom: .1em;
+}
+/* Tables */
+table {
+ font-size: 100%;
+ color: black;
+ /* we don't want the bottom borders of <h2>s to be visible through
+ * floated tables */
+ background-color: white;
+}
+fieldset table {
+ /* but keep table layouts in forms clean... */
+ background: none;
+}
+/* Forms */
+fieldset {
+ border: 1px solid #2f6fab;
+ margin: 1em 0 1em 0;
+ padding: 0 1em 1em;
+ line-height: 1.5em;
+}
+ fieldset.nested {
+ margin: 0 0 0.5em 0;
+ padding: 0 0.5em 0.5em;
+ }
+legend {
+ padding: .5em;
+ font-size: 95%;
+}
+form {
+ border: none;
+ margin: 0;
+}
+textarea {
+ width: 100%;
+ padding: .1em;
+}
+select {
+ vertical-align: top;
+}
+/* Table of Contents */
+#toc,
+.toc,
+.mw-warning {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#toc h2,
+.toc h2 {
+ display: inline;
+ border: none;
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+ text-align: center;
+}
+#toc ul,
+.toc ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin-left: 0;
+ padding-left: 0;
+ text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+ margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+ font-size: 94%;
+}
+/* Images */
+div.floatright, table.floatright {
+ clear: right;
+ float: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+div.floatleft p { font-style: italic; }
+/* Thumbnails */
+div.thumb {
+ margin-bottom: .5em;
+ border-style: solid;
+ border-color: white;
+ width: auto;
+ background-color: transparent;
+}
+div.thumbinner {
+ border: 1px solid #ccc;
+ padding: 3px !important;
+ background-color: #f9f9f9;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border: 1px solid #ccc;
+}
+html .thumbcaption {
+ border: none;
+ text-align: left;
+ line-height: 1.4em;
+ padding: 3px !important;
+ font-size: 94%;
+}
+div.magnify {
+ float: right;
+ border: none !important;
+ background: none !important;
+}
+div.magnify a, div.magnify img {
+ display: block;
+ border: none !important;
+ background: none !important;
+}
+div.tright {
+ clear: right;
+ float: right;
+ border-width: .5em 0 .8em 1.4em;
+}
+div.tleft {
+ float: left;
+ clear: left;
+ margin-right: .5em;
+ border-width: .5em 1.4em .8em 0;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+.hiddenStructure {
+ display: none;
+}
+/* Warning */
+.mw-warning {
+ margin-left: 50px;
+ margin-right: 50px;
+ text-align: center;
+}
+/* User Message */
+.usermessage {
+ background-color: #ffce7b;
+ border: 1px solid #ffa500;
+ color: black;
+ font-weight: bold;
+ margin: 2em 0 1em;
+ padding: .5em 1em;
+ vertical-align: middle;
+}
+/* Site Notice */
+#siteNotice {
+ text-align: center;
+ font-size: 0.8em;
+ margin: 0;
+}
+ #siteNotice div,
+ #siteNotice p {
+ margin: 0;
+ padding: 0;
+ margin-bottom: 0.9em;
+ }
+/* Categories */
+.catlinks {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ margin-top: 1em;
+ clear: both;
+}
+/* Sub-navigation */
+#siteSub {
+ display: none;
+}
+#jump-to-nav {
+ display: none;
+}
+#contentSub, #contentSub2 {
+ font-size: 84%;
+ line-height: 1.2em;
+ margin: 0 0 1.4em 1em;
+ color: #7d7d7d;
+ width: auto;
+}
+span.subpages {
+ display: block;
+}
+/* Emulate Center */
+.center {
+ width: 100%;
+ text-align: center;
+}
+*.center * {
+ margin-left: auto;
+ margin-right: auto;
+}
+/* Small for tables and similar */
+.small, .small * {
+ font-size: 94%;
+}
+table.small {
+ font-size: 100%;
+}
+/* Edge Cases for Content */
+h1, h2 {
+ margin-bottom: .6em;
+}
+h3, h4, h5 {
+ margin-bottom: .3em;
+}
+#firstHeading {
+ padding-top: 0;
+ margin-top: 0;
+ padding-top: 0;
+ margin-bottom: 0.1em;
+ line-height: 1.2em;
+ font-size: 1.6em;
+ padding-bottom: 0;
+}
+#content a.external,
+#content a[href ^="gopher://"] {
+ background: url(images/external-link-ltr-icon.png) center right no-repeat;
+ padding: 0 13px 0 0;
+}
+#content a[href ^="https://"],
+.link-https {
+ background: url(images/lock-icon.png) center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a[href ^="mailto:"],
+.link-mailto {
+ background: url(images/mail-icon.png) center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a[href ^="news://"] {
+ background: url(images/news-icon.png) center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a[href ^="ftp://"],
+.link-ftp {
+ background: url(images/file-icon.png) center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a[href ^="irc://"],
+#content a.extiw[href ^="irc://"],
+.link-irc {
+ background: url(images/talk-icon.png) center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a.external[href $=".ogg"], #content a.external[href $=".OGG"],
+#content a.external[href $=".mid"], #content a.external[href $=".MID"],
+#content a.external[href $=".midi"], #content a.external[href $=".MIDI"],
+#content a.external[href $=".mp3"], #content a.external[href $=".MP3"],
+#content a.external[href $=".wav"], #content a.external[href $=".WAV"],
+#content a.external[href $=".wma"], #content a.external[href $=".WMA"],
+.link-audio {
+ background: url("images/audio-icon.png") center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a.external[href $=".ogm"], #content a.external[href $=".OGM"],
+#content a.external[href $=".avi"], #content a.external[href $=".AVI"],
+#content a.external[href $=".mpeg"], #content a.external[href $=".MPEG"],
+#content a.external[href $=".mpg"], #content a.external[href $=".MPG"],
+.link-video {
+ background: url("images/video-icon.png") center right no-repeat;
+ padding: 0 18px 0 0;
+}
+#content a.external[href $=".pdf"], #content a.external[href $=".PDF"],
+#content a.external[href *=".pdf#"], #content a.external[href *=".PDF#"],
+#content a.external[href *=".pdf?"], #content a.external[href *=".PDF?"],
+.link-document {
+ background: url("images/document-icon.png") center right no-repeat;
+ padding: 0 18px 0 0;
+}
+/* Interwiki Styling (Disabled) */
+#content a.extiw,
+#content a.extiw:active {
+ color: #36b;
+ background: none;
+ padding: 0;
+}
+#content a.external {
+ color: #36b;
+}
+#content .printfooter {
+ display: none;
+}
+/* Icon for Usernames */
+#pt-userpage,
+#pt-anonuserpage,
+#pt-login {
+ background: url(images/user-icon.png) left top no-repeat;
+ padding-left: 15px !important;
+ text-transform: none;
+}
+
+.toccolours {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#bodyContent {
+ position: relative;
+ width: 100%;
+}
+#mw-js-message {
+ font-size: 0.8em;
+}
+div#bodyContent {
+ line-height: 1.5em;
+}
+
+/* Watch/Unwatch Icon Styling */
+#ca-unwatch.icon,
+#ca-watch.icon {
+ margin-right:1px;
+}
+#ca-unwatch.icon a,
+#ca-watch.icon a {
+ margin: 0;
+ padding: 0;
+ outline: none;
+ display: block;
+ width: 26px;
+ height: 2.5em;
+}
+#ca-unwatch.icon a {
+ background-image: url(images/watch-icons.png);
+ background-position: -43px 60%;
+}
+#ca-watch.icon a {
+ background-image: url(images/watch-icons.png);
+ background-position: 5px 60%;
+}
+#ca-unwatch.icon a:hover {
+ background-image: url(images/watch-icons.png);
+ background-position: -67px 60%;
+}
+#ca-watch.icon a:hover {
+ background-image: url(images/watch-icons.png);
+ background-position: -19px 60%;
+}
+#ca-unwatch.icon a.loading,
+#ca-watch.icon a.loading {
+ background-image: url(images/watch-icon-loading.gif);
+ background-position: center 60%;
+}
+#ca-unwatch.icon a span,
+#ca-watch.icon a span {
+ display: none;
+}
+div.vectorTabs ul {
+ background-image:url(images/tab-break.png);
+ background-position:right bottom;
+ background-repeat:no-repeat;
+}
diff --git a/skins/vector/main-rtl.css b/skins/vector/main-rtl.css
new file mode 100644
index 00000000..5387289f
--- /dev/null
+++ b/skins/vector/main-rtl.css
@@ -0,0 +1,1128 @@
+/*
+ * main-rtl.css is automatically generated using CSSJanus, a python script for
+ * creating RTL versions of otherwise LTR stylesheets.
+ *
+ * You may download the tool to rebuild this stylesheet
+ * http://code.google.com/p/cssjanus/
+ *
+ * An online version of this tool can be used at:
+ * http://cssjanus.commoner.com/
+ *
+ * The following command is used to generate the RTL version of this file
+ * ./cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
+ *
+ * Any rules which should not be flipped should be prepended with @noflip in
+ * a comment block.
+ */
+/* Framework */
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+body {
+ background-color: #f3f3f3;
+ background-image: url(images/page-base.png);
+}
+/* Content */
+#content {
+ margin-right: 10em;
+ padding: 1em;
+ background-image: url(images/border.png);
+ background-position: top right;
+ background-repeat: repeat-y;
+ background-color: white;
+}
+/* Head */
+#mw-page-base {
+ height: 5em;
+ background-color: white;
+ background-image: url(images/page-fade.png);
+ background-position: bottom right;
+ background-repeat: repeat-x;
+}
+#mw-head-base {
+ margin-top: -5em;
+ margin-right: 10em;
+ height: 5em;
+ background-image: url(images/border.png);
+ background-position: bottom right;
+ background-repeat: repeat-x;
+}
+#mw-head {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+}
+#mw-head h5 {
+ margin: 0;
+ padding: 0;
+}
+ /* Hide empty portlets */
+ div.emptyPortlet {
+ display: none;
+ }
+ /* Personal */
+ #p-personal {
+ position: absolute;
+ top: 0;
+ margin-right: 10em;
+ left: 0.75em;
+ }
+ #p-personal h5 {
+ display: none;
+ }
+ #p-personal ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ /* @noflip */
+ #p-personal li {
+ line-height: 1.125em;
+ float: left;
+ }
+ #p-personal li {
+ margin-right: 0.75em;
+ margin-top: 0.5em;
+ font-size: 0.75em;
+ }
+ /* Navigation Containers */
+ #left-navigation {
+ position: absolute;
+ right: 10em;
+ top: 2.5em;
+ }
+ #right-navigation {
+ float: left;
+ margin-top: 2.5em;
+ }
+ /* Navigation Labels */
+ div.vectorTabs h5,
+ div.vectorMenu h5 span {
+ display: none;
+ }
+ /* Namespaces and Views */
+ /* @noflip */
+ div.vectorTabs {
+ float: left;
+ }
+ div.vectorTabs {
+ background-image: url(images/tab-break.png);
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ padding-right: 1px;
+ }
+ /* @noflip */
+ div.vectorTabs ul {
+ float: left;
+ }
+ div.vectorTabs ul {
+ height: 100%;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ /* @noflip */
+ div.vectorTabs ul li {
+ float: left;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs ul li {
+ line-height: 1.125em;
+ display: inline-block;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ background-color: #f3f3f3;
+ background-image: url(images/tab-normal-fade.png);
+ background-position: bottom right;
+ background-repeat: repeat-x;
+ white-space:nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs ul > li {
+ display: block;
+ }
+ div.vectorTabs li.selected {
+ background-image: url(images/tab-current-fade.png);
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs li a {
+ display: inline-block;
+ height: 2.5em;
+ padding-right: 0.4em;
+ padding-left: 0.4em;
+ background-image: url(images/tab-break.png);
+ background-position: bottom left;
+ background-repeat: no-repeat;
+ }
+ div.vectorTabs li a,
+ div.vectorTabs li a span {
+ color: #0645ad;
+ cursor: pointer;
+ }
+ div.vectorTabs li a span {
+ font-size: 0.8em;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorTabs li > a {
+ display: block;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorTabs a span {
+ display: inline-block;
+ padding-top: 1.25em;
+ }
+ /* IGNORED BY IE6 */
+ /* @noflip */
+ div.vectorTabs a > span {
+ float: left;
+ display: block;
+ }
+ div.vectorTabs li.selected a,
+ div.vectorTabs li.selected a span,
+ div.vectorTabs li.selected a:visited
+ div.vectorTabs li.selected a:visited span {
+ color: #333333;
+ text-decoration: none;
+ }
+ div.vectorTabs li.new a,
+ div.vectorTabs li.new a span,
+ div.vectorTabs li.new a:visited,
+ div.vectorTabs li.new a:visited span {
+ color: #a55858;
+ }
+ /* Variants and Actions */
+ /* @noflip */
+ div.vectorMenu {
+ direction: ltr;
+ float: left;
+ background-image: url(images/arrow-down-icon.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+ /* @noflip */
+ body.rtl div.vectorMenu {
+ direction: rtl;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ #mw-head div.vectorMenu h5 {
+ float: left;
+ background-image: url(images/tab-break.png);
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #mw-head div.vectorMenu > h5 {
+ background-image: none;
+ }
+ #mw-head div.vectorMenu h5 {
+ background-position: bottom right;
+ margin-right: -1px;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ div.vectorMenu h5 a {
+ display: inline-block;
+ width: 24px;
+ height: 2.5em;
+ text-decoration: none;
+ background-image: url(images/tab-break.png);
+ background-repeat: no-repeat;
+ }
+ div.vectorMenu h5 a{
+ background-position: bottom left;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu h5 > a {
+ display: block;
+ }
+ div.vectorMenu div.menu {
+ position: relative;
+ display: none;
+ clear: both;
+ text-align: right;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ /* @noflip */
+ body.rtl div.vectorMenu div.menu {
+ margin-left: 24px;
+ }
+ /* IGNORED BY IE6 */
+ /* @noflip */
+ body.rtl div.vectorMenu > div.menu {
+ margin-left: auto;
+ }
+ /* Fixes old versions of FireFox */
+ /* @noflip */
+ body.rtl div.vectorMenu > div.menu,
+ x:-moz-any-link {
+ margin-left: 23px;
+ }
+ div.vectorMenu:hover div.menu {
+ display: block;
+ }
+ div.vectorMenu ul {
+ position: absolute;
+ background-color: white;
+ border: solid 1px silver;
+ border-top-width: 0;
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ margin-right: -1px;
+ text-align: right;
+ }
+ /* Fixes old versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link {
+ min-width: 5em;
+ }
+ /* Returns things back to normal in modern versions of FireFox */
+ div.vectorMenu ul,
+ x:-moz-any-link,
+ x:default {
+ min-width: 0;
+ }
+ div.vectorMenu li {
+ padding: 0;
+ margin: 0;
+ text-align: right;
+ line-height: 1em;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div.vectorMenu li a {
+ display: inline-block;
+ padding: 0.5em;
+ white-space: nowrap;
+ }
+ /* IGNORED BY IE6 */
+ div.vectorMenu li > a {
+ display: block;
+ }
+ div.vectorMenu li a {
+ color: #0645ad;
+ cursor: pointer;
+ font-size: 0.8em;
+ }
+ div.vectorMenu li.selected a,
+ div.vectorMenu li.selected a:visited {
+ color: #333333;
+ text-decoration: none;
+ }
+ /* Search */
+ #p-search h5 {
+ display: none;
+ }
+ /* @noflip */
+ #p-search {
+ float: left;
+ }
+ #p-search {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ }
+ #p-search form,
+ #p-search input {
+ margin: 0;
+ margin-top: 0.4em;
+ }
+ #simpleSearch {
+ margin-top: 0.5em;
+ position: relative;
+ border: solid 1px #AAAAAA;
+ background-color: white;
+ background-image: url(images/search-fade.png);
+ background-position: top right;
+ background-repeat: repeat-x;
+ }
+ #simpleSearch label {
+ font-size: 0.8em;
+ top: 0.25em;
+ }
+ #simpleSearch input#searchInput {
+ margin: 0;
+ border-width: 0;
+ padding: 0.25em;
+ line-height: 1em;
+ font-size: 0.8em;
+ width: 9em;
+ background-color: transparent;
+ }
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ #simpleSearch button#searchButton {
+ margin: 0;
+ padding: 0;
+ width: 1.75em;
+ height: 1.5em;
+ border: none;
+ cursor: pointer;
+ background-color: transparent;
+ background-image: url(images/search-rtl.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #simpleSearch > button#searchButton {
+ height: 100%;
+ }
+ .suggestions-special .special-label {
+ font-size: 0.8em;
+ color: gray;
+ }
+ .suggestions-special .special-query {
+ color: black;
+ font-style: italic;
+ }
+ .suggestions-special .special-hover {
+ background-color: silver;
+ }
+/* Panel */
+#mw-panel {
+ position: absolute;
+ top: 160px;
+ padding-top: 1em;
+ width: 10em;
+ right: 0;
+}
+ #mw-panel div.portal {
+ padding-bottom: 1.5em;
+ }
+ #mw-panel div.portal h5 {
+ font-weight: normal;
+ color: #444444;
+ padding: 0.25em;
+ padding-top: 0;
+ padding-right: 1.75em;
+ cursor: default;
+ border: none;
+ font-size: 0.75em;
+ }
+ #mw-panel div.portal div.body {
+ margin: 0;
+ padding-top: 0.5em;
+ margin-right: 1.25em;
+ background-image: url(images/portal-break.png);
+ background-repeat: no-repeat;
+ background-position: top right;
+ }
+ #mw-panel div.portal div.body ul {
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ }
+ #mw-panel div.portal div.body ul li {
+ line-height: 1.125em;
+ padding: 0;
+ padding-bottom: 0.5em;
+ margin: 0;
+ overflow: hidden;
+ font-size: 0.75em;
+ }
+ #mw-panel div.portal div.body ul li a {
+ color: #0645ad;
+ }
+ #mw-panel div.portal div.body ul li a:visited {
+ color: #0b0080;
+ }
+/* Footer */
+#footer {
+ margin-right: 10em;
+ margin-top: 0;
+ padding: 0.75em;
+ background-image: url(images/border.png);
+ background-position: top right;
+ background-repeat: repeat-x;
+}
+#footer ul {
+ list-style: none;
+ list-style-image: none;
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+#footer ul li {
+ margin: 0;
+ padding: 0;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ color: #333333;
+ font-size: 0.7em;
+}
+#footer #footer-icons {
+ float: left;
+}
+/* @noflip */
+body.ltr #footer #footer-places {
+ float: left;
+}
+#footer #footer-info li {
+ line-height: 1.4em;
+}
+#footer #footer-icons li {
+ float: right;
+ margin-right: 0.5em;
+ line-height: 2em;
+}
+#footer #footer-places li {
+ float: right;
+ margin-left: 1em;
+ line-height: 2em;
+}
+/* Logo */
+#p-logo {
+ position: absolute;
+ top: -160px;
+ right: 0;
+ width: 10em;
+ height: 160px;
+}
+#p-logo a {
+ display: block;
+ width: 10em;
+ height: 160px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ text-decoration: none;
+}
+
+/*
+ *
+ * The following code is highly modified from monobook. It would be nice if the
+ * preftoc id was more human readable like preferences-toc for instance,
+ * howerver this would require backporting the other skins.
+ */
+
+/* Preferences */
+#preftoc {
+ /* Tabs */
+ width: 100%;
+ float: right;
+ clear: both;
+ margin: 0 !important;
+ padding: 0 !important;
+ background-image: url(images/preferences-break.png);
+ background-position: bottom right;
+ background-repeat: no-repeat;
+}
+ #preftoc li {
+ /* Tab */
+ float: right;
+ margin: 0;
+ padding: 0;
+ padding-left: 1px;
+ height: 2.25em;
+ white-space: nowrap;
+ list-style-type: none;
+ list-style-image: none;
+ background-image: url(images/preferences-break.png);
+ background-position: bottom left;
+ background-repeat: no-repeat;
+ }
+ /* IGNORED BY IE6 */
+ #preftoc li:first-child {
+ margin-right: 1px;
+ }
+ #preftoc a,
+ #preftoc a:active {
+ display: inline-block;
+ position: relative;
+ color: #0645ad;
+ padding: 0.5em;
+ text-decoration: none;
+ background-image: none;
+ font-size: 0.9em;
+ }
+ #preftoc a:hover {
+ text-decoration: underline;
+ }
+ #preftoc li.selected a {
+ background-image: url(images/preferences-fade.png);
+ background-position: bottom;
+ background-repeat: repeat-x;
+ color: #333333;
+ text-decoration: none;
+ }
+#preferences {
+ float: right;
+ width: 100%;
+ margin: 0;
+ margin-top: -2px;
+ clear: both;
+ border: solid 1px #cccccc;
+ background-color: #f9f9f9;
+ background-image: url(images/preferences-base.png);
+}
+#preferences fieldset.prefsection {
+ border: none;
+ padding: 0;
+ margin: 1em;
+}
+#preferences fieldset.prefsection fieldset {
+ border: none;
+ border-top: solid 1px #cccccc;
+}
+#preferences legend {
+ color: #666666;
+}
+#preferences fieldset.prefsection legend.mainLegend {
+ display: none;
+}
+#preferences td {
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+}
+#preferences td.htmlform-tip {
+ font-size: x-small;
+ padding: .2em 2em;
+ color: #666666;
+}
+#preferences div.mw-prefs-buttons {
+ padding: 1em;
+}
+#preferences div.mw-prefs-buttons input {
+ margin-left: 0.25em;
+}
+
+/*
+ * Styles for the user login and create account forms
+ */
+#userlogin, #userloginForm {
+ border: solid 1px #cccccc;
+ padding: 1.2em;
+ margin: .5em;
+ float: right;
+}
+
+#userlogin {
+ min-width: 20em;
+ max-width: 90%;
+ width: 40em;
+}
+
+/*
+ *
+ * The following code is slightly modified from monobook
+ *
+ */
+#content {
+ line-height: 1.5em;
+}
+#bodyContent {
+ font-size: 0.8em;
+}
+/* Links */
+a {
+ text-decoration: none;
+ color: #0645ad;
+ background: none;
+}
+a:visited {
+ color: #0b0080;
+}
+a:active {
+ color: #faa700;
+}
+a:hover {
+ text-decoration: underline;
+}
+a.stub {
+ color: #772233;
+}
+a.new, #p-personal a.new {
+ color: #ba0000;
+}
+a.new:visited, #p-personal a.new:visited {
+ color: #a55858;
+}
+
+/* Inline Elements */
+img {
+ border: none;
+ vertical-align: middle;
+}
+hr {
+ height: 1px;
+ color: #aaa;
+ background-color: #aaa;
+ border: 0;
+ margin: .2em 0 .2em 0;
+}
+
+/* Structural Elements */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: black;
+ background: none;
+ font-weight: normal;
+ margin: 0;
+ padding-top: .5em;
+ padding-bottom: .17em;
+ border-bottom: 1px solid #aaa;
+ width: auto;
+}
+h1 { font-size: 188%; }
+h1 .editsection { font-size: 53%; }
+h2 { font-size: 150%; }
+h2 .editsection { font-size: 67%; }
+h3,
+h4,
+h5,
+h6 {
+ border-bottom: none;
+ font-weight: bold;
+}
+h3 { font-size: 132%; }
+h3 .editsection { font-size: 76%; font-weight: normal; }
+h4 { font-size: 116%; }
+h4 .editsection { font-size: 86%; font-weight: normal; }
+h5 { font-size: 100%; }
+h5 .editsection { font-weight: normal; }
+h6 { font-size: 80%; }
+h6 .editsection { font-size: 125%; font-weight: normal; }
+p {
+ margin: .4em 0 .5em 0;
+ line-height: 1.5em;
+}
+ p img {
+ margin: 0;
+ }
+abbr,
+acronym,
+.explain {
+ border-bottom: 1px dotted black;
+ color: black;
+ background: none;
+ cursor: help;
+}
+q {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}
+/* Disabled for now
+blockquote {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}*/
+code {
+ background-color: #f9f9f9;
+}
+pre {
+ padding: 1em;
+ border: 1px dashed #2f6fab;
+ color: black;
+ background-color: #f9f9f9;
+ line-height: 1.1em;
+}
+ul {
+ line-height: 1.5em;
+ list-style-type: square;
+ margin: .3em 1.5em 0 0;
+ padding: 0;
+ list-style-image: url(images/bullet-icon.png);
+}
+ol {
+ line-height: 1.5em;
+ margin: .3em 3.2em 0 0;
+ padding: 0;
+ list-style-image: none;
+}
+li {
+ margin-bottom: .1em;
+}
+dt {
+ font-weight: bold;
+ margin-bottom: .1em;
+}
+dl {
+ margin-top: .2em;
+ margin-bottom: .5em;
+}
+dd {
+ line-height: 1.5em;
+ margin-right: 2em;
+ margin-bottom: .1em;
+}
+/* Tables */
+table {
+ font-size: 100%;
+ color: black;
+ /* we don't want the bottom borders of <h2>s to be visible through
+ * floated tables */
+ background-color: white;
+}
+fieldset table {
+ /* but keep table layouts in forms clean... */
+ background: none;
+}
+/* Forms */
+fieldset {
+ border: 1px solid #2f6fab;
+ margin: 1em 0 1em 0;
+ padding: 0 1em 1em;
+ line-height: 1.5em;
+}
+ fieldset.nested {
+ margin: 0 0 0.5em 0;
+ padding: 0 0.5em 0.5em;
+ }
+legend {
+ padding: .5em;
+ font-size: 95%;
+}
+form {
+ border: none;
+ margin: 0;
+}
+textarea {
+ width: 100%;
+ padding: .1em;
+}
+select {
+ vertical-align: top;
+}
+/* Table of Contents */
+#toc,
+.toc,
+.mw-warning {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#toc h2,
+.toc h2 {
+ display: inline;
+ border: none;
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+ text-align: center;
+}
+#toc ul,
+.toc ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin-right: 0;
+ padding-right: 0;
+ text-align: right;
+}
+#toc ul ul,
+.toc ul ul {
+ margin: 0 2em 0 0;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+ font-size: 94%;
+}
+/* Images */
+div.floatright, table.floatright {
+ clear: left;
+ float: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+div.floatleft p { font-style: italic; }
+/* Thumbnails */
+div.thumb {
+ margin-bottom: .5em;
+ border-style: solid;
+ border-color: white;
+ width: auto;
+ background-color: transparent;
+}
+div.thumbinner {
+ border: 1px solid #ccc;
+ padding: 3px !important;
+ background-color: #f9f9f9;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border: 1px solid #ccc;
+}
+html .thumbcaption {
+ border: none;
+ text-align: right;
+ line-height: 1.4em;
+ padding: 3px !important;
+ font-size: 94%;
+}
+div.magnify {
+ float: left;
+ border: none !important;
+ background: none !important;
+}
+div.magnify a, div.magnify img {
+ display: block;
+ border: none !important;
+ background: none !important;
+}
+div.tright {
+ clear: left;
+ float: left;
+ border-width: .5em 1.4em .8em 0;
+}
+div.tleft {
+ float: right;
+ clear: right;
+ margin-left: .5em;
+ border-width: .5em 0 .8em 1.4em;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+.hiddenStructure {
+ display: none;
+}
+/* Warning */
+.mw-warning {
+ margin-right: 50px;
+ margin-left: 50px;
+ text-align: center;
+}
+/* User Message */
+.usermessage {
+ background-color: #ffce7b;
+ border: 1px solid #ffa500;
+ color: black;
+ font-weight: bold;
+ margin: 2em 0 1em;
+ padding: .5em 1em;
+ vertical-align: middle;
+}
+/* Site Notice */
+#siteNotice {
+ text-align: center;
+ font-size: 0.8em;
+ margin: 0;
+}
+ #siteNotice div,
+ #siteNotice p {
+ margin: 0;
+ padding: 0;
+ margin-bottom: 0.9em;
+ }
+/* Categories */
+.catlinks {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ margin-top: 1em;
+ clear: both;
+}
+/* Sub-navigation */
+#siteSub {
+ display: none;
+}
+#jump-to-nav {
+ display: none;
+}
+#contentSub, #contentSub2 {
+ font-size: 84%;
+ line-height: 1.2em;
+ margin: 0 1em 1.4em 0;
+ color: #7d7d7d;
+ width: auto;
+}
+span.subpages {
+ display: block;
+}
+/* Emulate Center */
+.center {
+ width: 100%;
+ text-align: center;
+}
+*.center * {
+ margin-right: auto;
+ margin-left: auto;
+}
+/* Small for tables and similar */
+.small, .small * {
+ font-size: 94%;
+}
+table.small {
+ font-size: 100%;
+}
+/* Edge Cases for Content */
+h1, h2 {
+ margin-bottom: .6em;
+}
+h3, h4, h5 {
+ margin-bottom: .3em;
+}
+#firstHeading {
+ padding-top: 0;
+ margin-top: 0;
+ padding-top: 0;
+ margin-bottom: 0.1em;
+ line-height: 1.2em;
+ font-size: 1.6em;
+ padding-bottom: 0;
+}
+#content a.external,
+#content a[href ^="gopher://"] {
+ background: url(images/external-link-rtl-icon.png) center left no-repeat;
+ padding: 0 0 0 13px;
+}
+#content a[href ^="https://"],
+.link-https {
+ background: url(images/lock-icon.png) center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a[href ^="mailto:"],
+.link-mailto {
+ background: url(images/mail-icon.png) center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a[href ^="news://"] {
+ background: url(images/news-icon.png) center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a[href ^="ftp://"],
+.link-ftp {
+ background: url(images/file-icon.png) center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a[href ^="irc://"],
+#content a.extiw[href ^="irc://"],
+.link-irc {
+ background: url(images/talk-icon.png) center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a.external[href $=".ogg"], #content a.external[href $=".OGG"],
+#content a.external[href $=".mid"], #content a.external[href $=".MID"],
+#content a.external[href $=".midi"], #content a.external[href $=".MIDI"],
+#content a.external[href $=".mp3"], #content a.external[href $=".MP3"],
+#content a.external[href $=".wav"], #content a.external[href $=".WAV"],
+#content a.external[href $=".wma"], #content a.external[href $=".WMA"],
+.link-audio {
+ background: url("images/audio-icon.png") center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a.external[href $=".ogm"], #content a.external[href $=".OGM"],
+#content a.external[href $=".avi"], #content a.external[href $=".AVI"],
+#content a.external[href $=".mpeg"], #content a.external[href $=".MPEG"],
+#content a.external[href $=".mpg"], #content a.external[href $=".MPG"],
+.link-video {
+ background: url("images/video-icon.png") center left no-repeat;
+ padding: 0 0 0 18px;
+}
+#content a.external[href $=".pdf"], #content a.external[href $=".PDF"],
+#content a.external[href *=".pdf#"], #content a.external[href *=".PDF#"],
+#content a.external[href *=".pdf?"], #content a.external[href *=".PDF?"],
+.link-document {
+ background: url("images/document-icon.png") center left no-repeat;
+ padding: 0 0 0 18px;
+}
+/* Interwiki Styling (Disabled) */
+#content a.extiw,
+#content a.extiw:active {
+ color: #36b;
+ background: none;
+ padding: 0;
+}
+#content a.external {
+ color: #36b;
+}
+#content .printfooter {
+ display: none;
+}
+/* Icon for Usernames */
+#pt-userpage,
+#pt-anonuserpage,
+#pt-login {
+ background: url(images/user-icon.png) right top no-repeat;
+ padding-right: 15px !important;
+ text-transform: none;
+}
+
+.toccolours {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#bodyContent {
+ position: relative;
+ width: 100%;
+}
+#mw-js-message {
+ font-size: 0.8em;
+}
+div#bodyContent {
+ line-height: 1.5em;
+}
+
+/* Watch/Unwatch Icon Styling */
+#ca-unwatch.icon,
+#ca-watch.icon {
+ margin-left:1px;
+}
+#ca-unwatch.icon a,
+#ca-watch.icon a {
+ margin: 0;
+ padding: 0;
+ outline: none;
+ display: block;
+ width: 26px;
+ height: 2.5em;
+}
+#ca-unwatch.icon a {
+ background-image: url(images/watch-icons.png);
+ background-position: -43px 60%;
+}
+#ca-watch.icon a {
+ background-image: url(images/watch-icons.png);
+ background-position: 5px 60%;
+}
+#ca-unwatch.icon a:hover {
+ background-image: url(images/watch-icons.png);
+ background-position: -67px 60%;
+}
+#ca-watch.icon a:hover {
+ background-image: url(images/watch-icons.png);
+ background-position: -19px 60%;
+}
+#ca-unwatch.icon a.loading,
+#ca-watch.icon a.loading {
+ background-image: url(images/watch-icon-loading.gif);
+ background-position: center 60%;
+}
+#ca-unwatch.icon a span,
+#ca-watch.icon a span {
+ display: none;
+}
+div.vectorTabs ul {
+ background-image:url(images/tab-break.png);
+ background-position:left bottom;
+ background-repeat:no-repeat;
+}
diff --git a/skins/vector/wiki-indexed.png b/skins/vector/wiki-indexed.png
new file mode 100644
index 00000000..189a2ae3
--- /dev/null
+++ b/skins/vector/wiki-indexed.png
Binary files differ
diff --git a/skins/vector/wiki.png b/skins/vector/wiki.png
new file mode 100644
index 00000000..2463b521
--- /dev/null
+++ b/skins/vector/wiki.png
Binary files differ
diff --git a/t/00-test.t b/t/00-test.t
deleted file mode 100644
index b9ed2038..00000000
--- a/t/00-test.t
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env php
-<?php
-require 'Test.php';
-
-plan(1);
-
-ok(0 == 0);
-
-/* vim: set filetype=php: */
-?>
diff --git a/t/README b/t/README
deleted file mode 100644
index b3b9f420..00000000
--- a/t/README
+++ /dev/null
@@ -1,52 +0,0 @@
-=head1 NAME
-
-F<t> - MediaWiki test tree
-
-=head1 DESCRIPTION
-
-This is the MediaWiki test tree (well, one of them), tests in this
-directory are self-contained programs that produce TAP output via the
-F<Test.php> module (/trunk/phase3/t/Test.php) (see
-http://search.cpan.org/~petdance/TAP-1.00/TAP.pm#THE_TAP_FORMAT for
-information on the TAP format).
-
-=head1 Running the tests
-
-To run all tests, you can run
-
- make test
-
-Since the tests are self-contained PHP programs you can run them
-(Xml.t here) as:
-
- php t/inc/Xml.t
-
-That'll give you the raw TAP output, but what you probably want is to
-use a TAP formatter such as L<prove(1)>:
-
- prove t/inc/Xml.t # add -v for the verbose version
-
-or to run all the tests:
-
- prove -r t
-
-=head1 TODO
-
-=over
-
-=item *
-
-Rewrite the rest of the F<tests/> stuff to use L<Test.php> and move it
-here
-
-=item *
-
-Make the parsertests use TAP?
-
-=item *
-
-Write unit tests for the entire codebase:)
-
-=back
-
-=cut
diff --git a/t/Search.inc b/t/Search.inc
deleted file mode 100644
index 25229306..00000000
--- a/t/Search.inc
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-$wgCommandLineMode = true;
-$self = 'Search.t';
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-require 'includes/Defines.php';
-require 'includes/ProfilerStub.php';
-require 'LocalSettings.php';
-require 'AdminSettings.php';
-require 'includes/Setup.php';
-
-function buildTestDatabase( $tables ) {
- global $wgDBprefix, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname, $wgDBtype;
- $oldPrefix = $wgDBprefix;
- $wgDBprefix = 'parsertest';
-
- $db = wfGetDB ( DB_SLAVE );
-
- if( $db->isOpen() ) {
- if ( !( stristr( $db->getSoftwareLink(), 'MySQL') && version_compare( $db->getServerVersion(), '4.1', '<' ) ) ) {
- # Database that supports CREATE TABLE ... LIKE
- foreach ($tables as $tbl) {
- $newTableName = $db->tableName( $tbl );
- $tableName = $oldPrefix . $tbl;
- $db->query("CREATE TEMPORARY TABLE $newTableName (LIKE $tableName)");
- }
- } else {
- # Hack for MySQL versions < 4.1, which don't support
- # "CREATE TABLE ... LIKE". Note that
- # "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
- # would not create the indexes we need....
- foreach ($tables as $tbl) {
- $res = $db->query("SHOW CREATE TABLE $tbl");
- $row = $db->fetchRow($res);
- $create = $row[1];
- $create_tmp = preg_replace('/CREATE TABLE `(.*?)`/', 'CREATE TEMPORARY TABLE `'
- . $wgDBprefix . '\\1`', $create);
- if ($create === $create_tmp) {
- # Couldn't do replacement
- wfDie( "could not create temporary table $tbl" );
- }
- $db->query($create_tmp);
- }
-
- }
- return $db;
- } else {
- // Something amiss
- return null;
- }
-}
-
-class SearchEngineTest {
- var $db, $search;
-
- function __construct( SearchEngine $search ){
- $this->search = $search;
- $this->db = $this->search->db;
- }
-
- function insertSearchData() {
- $this->db->safeQuery( <<<END
- INSERT INTO ! (page_id,page_namespace,page_title,page_latest)
- VALUES (1, 0, 'Main_Page', 1),
- (2, 1, 'Main_Page', 2),
- (3, 0, 'Smithee', 3),
- (4, 1, 'Smithee', 4),
- (5, 0, 'Unrelated_page', 5),
- (6, 0, 'Another_page', 6),
- (7, 4, 'Help', 7),
- (8, 0, 'Thppt', 8),
- (9, 0, 'Alan_Smithee', 9),
- (10, 0, 'Pages', 10)
-END
- , $this->db->tableName( 'page' ) );
- $this->db->safeQuery( <<<END
- INSERT INTO ! (rev_id,rev_page)
- VALUES (1, 1),
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5),
- (6, 6),
- (7, 7),
- (8, 8),
- (9, 9),
- (10, 10)
-END
- , $this->db->tableName( 'revision' ) );
- $this->db->safeQuery( <<<END
- INSERT INTO ! (old_id,old_text)
- VALUES (1, 'This is a main page'),
- (2, 'This is a talk page to the main page, see [[smithee]]'),
- (3, 'A smithee is one who smiths. See also [[Alan Smithee]]'),
- (4, 'This article sucks.'),
- (5, 'Nothing in this page is about the S word.'),
- (6, 'This page also is unrelated.'),
- (7, 'Help me!'),
- (8, 'Blah blah'),
- (9, 'yum'),
- (10,'are food')
-END
- , $this->db->tableName( 'text' ) );
- $this->db->safeQuery( <<<END
- INSERT INTO ! (si_page,si_title,si_text)
- VALUES (1, 'main page', 'this is a main page'),
- (2, 'main page', 'this is a talk page to the main page, see smithee'),
- (3, 'smithee', 'a smithee is one who smiths see also alan smithee'),
- (4, 'smithee', 'this article sucks'),
- (5, 'unrelated page', 'nothing in this page is about the s word'),
- (6, 'another page', 'this page also is unrelated'),
- (7, 'help', 'help me'),
- (8, 'thppt', 'blah blah'),
- (9, 'alan smithee', 'yum'),
- (10, 'pages', 'are food')
-END
- , $this->db->tableName( 'searchindex' ) );
- }
-
- function fetchIds( $results ) {
- $matches = array();
- while( $row = $results->next() ) {
- $matches[] = $row->getTitle()->getPrefixedText();
- }
- $results->free();
- # Search is not guaranteed to return results in a certain order;
- # sort them numerically so we will compare simply that we received
- # the expected matches.
- sort( $matches );
- return $matches;
- }
-
- function run(){
- if( is_null( $this->db ) ){
- fail( "Can't find a database to test with." );
- return;
- }
-
- $this->insertSearchData();
- plan( 4 );
-
- $exp = array( 'Smithee' );
- $got = $this->fetchIds( $this->search->searchText( 'smithee' ) );
- is( $got, $exp, "Plain search" );
-
- $exp = array( 'Alan Smithee', 'Smithee' );
- $got = $this->fetchIds( $this->search->searchTitle( 'smithee' ) );
- is( $got, $exp, "Title search" );
-
- $this->search->setNamespaces( array( 0, 1, 4 ) );
-
- $exp = array( 'Smithee', 'Talk:Main Page', );
- $got = $this->fetchIds( $this->search->searchText( 'smithee' ) );
- is( $got, $exp, "Power search" );
-
- $exp = array( 'Alan Smithee', 'Smithee', 'Talk:Smithee', );
- $got = $this->fetchIds( $this->search->searchTitle( 'smithee' ) );
- is( $got, $exp, "Title power search" );
- }
-}
diff --git a/t/Test.php b/t/Test.php
deleted file mode 100644
index 7904f3ba..00000000
--- a/t/Test.php
+++ /dev/null
@@ -1,496 +0,0 @@
-<?php
-# See the end of this file for documentation
-
-# The latest release of this test framework can always be found on CPAN:
-# http://search.cpan.org/search?query=Test.php
-
-register_shutdown_function('_test_ends');
-
-$__Test = array(
- # How many tests are planned
- 'planned' => null,
-
- # How many tests we've run, if 'planned' is still null by the time we're
- # done we report the total count at the end
- 'run' => 0,
-
- # Are are we currently within todo_start()/todo_end() ?
- 'todo' => array(),
-);
-
-function plan($plan, $why = '')
-{
- global $__Test;
-
- $__Test['planned'] = true;
-
- switch ($plan)
- {
- case 'no_plan':
- $__Test['planned'] = false;
- break;
- case 'skip_all';
- printf("1..0%s\n", $why ? " # Skip $why" : '');
- exit;
- default:
- printf("1..%d\n", $plan);
- break;
- }
-}
-
-function pass($desc = '')
-{
- return _proclaim(true, $desc);
-}
-
-function fail($desc = '')
-{
- return _proclaim(false, $desc);
-}
-
-function ok($cond, $desc = '') {
- return _proclaim($cond, $desc);
-}
-
-function is($got, $expected, $desc = '') {
- $pass = $got == $expected;
- return _proclaim($pass, $desc, /* todo */ false, $got, $expected);
-}
-
-function isnt($got, $expected, $desc = '') {
- $pass = $got != $expected;
- return _proclaim($pass, $desc, /* todo */ false, $got, $expected, /* negated */ true);
-}
-
-function like($got, $expected, $desc = '') {
- $pass = preg_match($expected, $got);
- return _proclaim($pass, $desc, /* todo */ false, $got, $expected);
-}
-
-function unlike($got, $expected, $desc = '') {
- $pass = !preg_match($expected, $got);
- return _proclaim($pass, $desc, /* todo */ false, $got, $expected, /* negated */ true);
-}
-
-function cmp_ok($got, $op, $expected, $desc = '')
-{
- $pass = null;
-
- # See http://www.php.net/manual/en/language.operators.comparison.php
- switch ($op)
- {
- case '==':
- $pass = $got == $expected;
- break;
- case '===':
- $pass = $got === $expected;
- break;
- case '!=':
- case '<>':
- $pass = $got != $expected;
- break;
- case '!==':
- $pass = $got !== $expected;
- break;
- case '<':
- $pass = $got < $expected;
- break;
- case '>':
- $pass = $got > $expected;
- break;
- case '<=':
- $pass = $got <= $expected;
- break;
- case '>=':
- $pass = $got >= $expected;
- break;
- default:
- if (function_exists($op)) {
- $pass = $op($got, $expected);
- } else {
- die("No such operator or function $op\n");
- }
- }
-
- return _proclaim($pass, $desc, /* todo */ false, $got, "$got $op $expected");
-}
-
-function diag($message)
-{
- if (is_array($message))
- {
- $message = implode("\n", $message);
- }
-
- foreach (explode("\n", $message) as $line)
- {
- echo "# $line\n";
- }
-}
-
-function include_ok($file, $desc = '')
-{
- $pass = include $file;
- return _proclaim($pass, $desc == '' ? "include $file" : $desc);
-}
-
-function require_ok($file, $desc = '')
-{
- $pass = require $file;
- return _proclaim($pass, $desc == '' ? "require $file" : $desc);
-}
-
-function is_deeply($got, $expected, $desc = '')
-{
- $diff = _cmp_deeply($got, $expected);
- $pass = is_null($diff);
-
- if (!$pass) {
- $got = strlen($diff['gpath']) ? ($diff['gpath'] . ' = ' . $diff['got'])
- : _repl($got);
- $expected = strlen($diff['epath']) ? ($diff['epath'] . ' = ' . $diff['expected'])
- : _repl($expected);
- }
-
- _proclaim($pass, $desc, /* todo */ false, $got, $expected);
-}
-
-function isa_ok($obj, $expected, $desc = '')
-{
- $pass = is_a($obj, $expected);
- _proclaim($pass, $desc, /* todo */ false, $name, $expected);
-}
-
-function todo_start($why = '')
-{
- global $__Test;
-
- $__Test['todo'][] = $why;
-}
-
-function todo_end()
-{
- global $__Test;
-
- if (count($__Test['todo']) == 0) {
- die("todo_end() called without a matching todo_start() call");
- } else {
- array_pop($__Test['todo']);
- }
-}
-
-#
-# The code below consists of private utility functions for the above functions
-#
-
-function _proclaim(
- $cond, # bool
- $desc = '',
- $todo = false,
- $got = null,
- $expected = null,
- $negate = false) {
-
- global $__Test;
-
- $__Test['run'] += 1;
-
- # We're in a TODO block via todo_start()/todo_end(). TODO via specific
- # functions is currently unimplemented and will probably stay that way
- if (count($__Test['todo'])) {
- $todo = true;
- }
-
- # Everything after the first # is special, so escape user-supplied messages
- $desc = str_replace('#', '\\#', $desc);
- $desc = str_replace("\n", '\\n', $desc);
-
- $ok = $cond ? "ok" : "not ok";
- $directive = '';
-
- if ($todo) {
- $todo_idx = count($__Test['todo']) - 1;
- $directive .= ' # TODO ' . $__Test['todo'][$todo_idx];
- }
-
- printf("%s %d %s%s\n", $ok, $__Test['run'], $desc, $directive);
-
- # report a failure
- if (!$cond) {
- # Every public function in this file calls _proclaim so our culprit is
- # the second item in the stack
- $caller = debug_backtrace();
- $call = $caller['1'];
-
- diag(
- sprintf(" Failed%stest '%s'\n in %s at line %d\n got: %s\n expected: %s",
- $todo ? ' TODO ' : ' ',
- $desc,
- $call['file'],
- $call['line'],
- $got,
- $expected
- )
- );
- }
-
- return $cond;
-}
-
-function _test_ends()
-{
- global $__Test;
-
- if (count($__Test['todo']) != 0) {
- $todos = join("', '", $__Test['todo']);
- die("Missing todo_end() for '$todos'");
- }
-
- if (!$__Test['planned']) {
- printf("1..%d\n", $__Test['run']);
- }
-}
-
-#
-# All of the below is for is_deeply()
-#
-
-function _repl($obj, $deep = true) {
- if (is_string($obj)) {
- return "'" . $obj . "'";
- } else if (is_numeric($obj)) {
- return $obj;
- } else if (is_null($obj)) {
- return 'null';
- } else if (is_bool($obj)) {
- return $obj ? 'true' : 'false';
- } else if (is_array($obj)) {
- return _repl_array($obj, $deep);
- }else {
- return gettype($obj);
- }
-}
-
-function _diff($gpath, $got, $epath, $expected) {
- return array(
- 'gpath' => $gpath,
- 'got' => $got,
- 'epath' => $epath,
- 'expected' => $expected
- );
-}
-
-function _idx($obj, $path = '') {
- return $path . '[' . _repl($obj) . ']';
-}
-
-function _cmp_deeply($got, $exp, $path = '') {
- if (is_array($exp)) {
-
- if (!is_array($got)) {
- return _diff($path, _repl($got), $path, _repl($exp));
- }
-
- $gk = array_keys($got);
- $ek = array_keys($exp);
- $mc = max(count($gk), count($ek));
-
- for ($el = 0; $el < $mc; $el++) {
- # One array shorter than the other?
- if ($el >= count($ek)) {
- return _diff(_idx($gk[$el], $path), _repl($got[$gk[$el]]),
- 'missing', 'nothing');
- } else if ($el >= count($gk)) {
- return _diff('missing', 'nothing',
- _idx($ek[$el], $path), _repl($exp[$ek[$el]]));
- }
-
- # Keys differ?
- if ($gk[$el] != $ek[$el]) {
- return _diff(_idx($gk[$el], $path), _repl($got[$gk[$el]]),
- _idx($ek[$el], $path), _repl($exp[$ek[$el]]));
- }
-
- # Recurse
- $rc = _cmp_deeply($got[$gk[$el]], $exp[$ek[$el]], _idx($gk[$el], $path));
- if (!is_null($rc)) {
- return $rc;
- }
- }
- }
- else {
- # Default to serialize hack
- if (serialize($got) != serialize($exp)) {
- return _diff($path, _repl($got), $path, _repl($exp));
- }
- }
-
- return null;
-}
-
-function _plural($n, $singular, $plural = null) {
- if (is_null($plural)) {
- $plural = $singular . 's';
- }
- return $n == 1 ? "$n $singular" : "$n $plural";
-}
-
-function _repl_array($obj, $deep) {
- if ($deep) {
- $slice = array_slice($obj, 0, 3); # Increase from 3 to show more
- $repl = array();
- $next = 0;
- foreach ($slice as $idx => $el) {
- $elrep = _repl($el, false);
- if (is_numeric($idx) && $next == $idx) {
- // Numeric index
- $next++;
- } else {
- // Out of sequence or non-numeric
- $elrep = _repl($idx, false) . ' => ' . $elrep;
- }
- $repl[] = $elrep;
- }
- $more = count($obj) - count($slice);
- if ($more > 0) {
- $repl[] = '... ' . _plural($more, 'more element') . ' ...';
- }
- return 'array(' . join(', ', $repl) . ')';
- }
- else {
- return 'array(' . count($obj) . ')';
- }
-}
-
-/*
-
-=head1 NAME
-
-Test.php - TAP test framework for PHP with a L<Test::More>-like interface
-
-=head1 SYNOPSIS
-
- #!/usr/bin/env php
- <?php
- require 'Test.php';
-
- plan($num); # plan $num tests
- # or
- plan('no_plan'); # We don't know how many
- # or
- plan('skip_all'); # Skip all tests
- # or
- plan('skip_all', $reason); # Skip all tests with a reason
-
- diag('message in test output') # Trailing \n not required
-
- # $test_name is always optional and should be a short description of
- # the test, e.g. "some_function() returns an integer"
-
- # Various ways to say "ok"
- ok($got == $expected, $test_name);
-
- # Compare with == and !=
- is($got, $expected, $test_name);
- isnt($got, $expected, $test_name);
-
- # Run a preg regex match on some data
- like($got, $regex, $test_name);
- unlike($got, $regex, $test_name);
-
- # Compare something with a given comparison operator
- cmp_ok($got, '==', $expected, $test_name);
- # Compare something with a comparison function (should return bool)
- cmp_ok($got, $func, $expected, $test_name);
-
- # Recursively check datastructures for equalness
- is_deeply($got, $expected, $test_name);
-
- # Always pass or fail a test under an optional name
- pass($test_name);
- fail($test_name);
-
- # TODO tests, these are expected to fail but won't fail the test run,
- # unexpected success will be reported
- todo_start("integer arithmetic still working");
- ok(1 + 2 == 3);
- {
- # TODOs can be nested
- todo_start("string comparison still working")
- is("foo", "bar");
- todo_end();
- }
- todo_end();
- ?>
-
-=head1 DESCRIPTION
-
-F<Test.php> is an implementation of Perl's L<Test::More> for PHP. Like
-Test::More it produces language agnostic TAP output (see L<TAP>) which
-can then be gathered, formatted and summarized by a program that
-understands TAP such as prove(1).
-
-=head1 HOWTO
-
-First place the F<Test.php> in the project root or somewhere else in
-the include path where C<require> and C<include> will find it.
-
-Then make a place to put your tests in, it's customary to place TAP
-tests in a directory named F<t> under the root but they can be
-anywhere you like. Make a test in this directory or one of its subdirs
-and try running it with php(1):
-
- $ php t/pass.t
- 1..1
- ok 1 This dummy test passed
-
-The TAP output consists of very simple output, of course reading
-larger output is going to be harder which is where prove(1) comes
-in. prove is a harness program that reads test output and produces
-reports based on it:
-
- $ prove t/pass.t
- t/pass....ok
- All tests successful.
- Files=1, Tests=1, 0 wallclock secs ( 0.03 cusr + 0.02 csys = 0.05 CPU)
-
-To run all the tests in the F<t> directory recursively use C<prove -r
-t>. This can be put in a F<Makefile> under a I<test> target, for
-example:
-
- test: Test.php
- prove -r t
-
-For reference the example test file above looks like this, the shebang
-on the first line is needed so that prove(1) and other test harness
-programs know they're dealing with a PHP file.
-
- #!/usr/bin/env php
- <?php
-
- require 'Test.php';
-
- plan(1);
- pass('This dummy test passed');
- ?>
-
-=head1 SEE ALSO
-
-L<TAP> - The TAP protocol
-
-=head1 AUTHOR
-
-E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason <avar@cpan.org> and Andy Armstrong <andy@hexten.net>
-
-=head1 LICENSING
-
-The author or authors of this code dedicate any and all copyright
-interest in this code to the public domain. We make this dedication
-for the benefit of the public at large and to the detriment of our
-heirs and successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights this
-code under copyright law.
-
-=cut
-
-*/
diff --git a/t/inc/Database.t b/t/inc/Database.t
deleted file mode 100644
index 4367fcd1..00000000
--- a/t/inc/Database.t
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-
-require 'includes/Defines.php';
-require 'StartProfiler.php';
-require 'includes/AutoLoader.php';
-require 'LocalSettings.php';
-require 'includes/Setup.php';
-
-plan( 9 );
-
-$db = new Database( $wgDBserver, $wgDBuser, $wgDBpassword );
-
-cmp_ok( $db->addQuotes( NULL ), '==',
- 'NULL', 'Add quotes to NULL' );
-
-cmp_ok( $db->addQuotes( 1234 ), '==',
- "'1234'", 'Add quotes to int' );
-
-cmp_ok( $db->addQuotes( 1234.5678 ), '==',
- "'1234.5678'", 'Add quotes to float' );
-
-cmp_ok( $db->addQuotes( 'string' ), '==',
- "'string'", 'Add quotes to string' );
-
-cmp_ok( $db->addQuotes( "string's cause trouble" ), '==',
- "'string\'s cause trouble'", 'Add quotes to quoted string' );
-
-$sql = $db->fillPrepared(
- 'SELECT * FROM interwiki', array() );
-cmp_ok( $sql, '==',
- 'SELECT * FROM interwiki', 'FillPrepared empty' );
-
-$sql = $db->fillPrepared(
- 'SELECT * FROM cur WHERE cur_namespace=? AND cur_title=?',
- array( 4, "Snicker's_paradox" ) );
-cmp_ok( $sql, '==',
- "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker\'s_paradox'", 'FillPrepared question' );
-
-$sql = $db->fillPrepared(
- 'SELECT user_id FROM ! WHERE user_name=?',
- array( '"user"', "Slash's Dot" ) );
-cmp_ok( $sql, '==',
- "SELECT user_id FROM \"user\" WHERE user_name='Slash\'s Dot'", 'FillPrepared quoted' );
-
-$sql = $db->fillPrepared(
- "SELECT * FROM cur WHERE cur_title='This_\\&_that,_WTF\\?\\!'",
- array( '"user"', "Slash's Dot" ) );
-cmp_ok( $sql, '==',
- "SELECT * FROM cur WHERE cur_title='This_&_that,_WTF?!'", 'FillPrepared raw' );
diff --git a/t/inc/Global.t b/t/inc/Global.t
deleted file mode 100644
index 7b2994e6..00000000
--- a/t/inc/Global.t
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-
-require 'includes/Defines.php';
-require 'StartProfiler.php';
-require 'includes/AutoLoader.php';
-require 'LocalSettings.php';
-require 'includes/Setup.php';
-
-plan( 46 );
-
-$wgReadOnly = null;
-$wgReadOnlyFile = tempnam(wfTempDir(), "mwtest_readonly");
-unlink( $wgReadOnlyFile );
-
-isnt( wfRandom(), wfRandom(), "Two differents random" );
-
-is( wfUrlencode( "\xE7\x89\xB9\xE5\x88\xA5:Contributions/Foobar" ),
- "%E7%89%B9%E5%88%A5:Contributions/Foobar", 'Urlencode' );
-
-is( wfReadOnly(), false, 'Empty read only' );
-
-is( wfReadOnly(), false, 'Empty read only, second time' );
-
-$f = fopen( $wgReadOnlyFile, "wt" );
-fwrite( $f, 'Message' );
-fclose( $f );
-$wgReadOnly = null;
-
-is( wfReadOnly(), true, 'Read only file set' );
-
-is( wfReadOnly(), true, 'Read only file set, second time' );
-
-unlink( $wgReadOnlyFile );
-$wgReadOnly = null;
-
-is( wfReadOnly(), false, 'Read only reset' );
-
-is( wfReadOnly(), false, 'Read only reset, second time' );
-
-
-is( wfQuotedPrintable( "\xc4\x88u legebla?", "UTF-8" ),
- "=?UTF-8?Q?=C4=88u=20legebla=3F?=", 'Quoted printable' );
-
-$start = wfTime();
-is( gettype( $start ), 'float', 'Time (type)' );
-$end = wfTime();
-cmp_ok( $end, '>', $start, 'Time (compare)' );
-
-$arr = wfArrayToCGI(
- array( 'baz' => 'AT&T', 'ignore' => '' ),
- array( 'foo' => 'bar', 'baz' => 'overridden value' ) );
-is( $arr, "baz=AT%26T&foo=bar", 'Array to CGI' );
-
-$mime = mimeTypeMatch( 'text/html', array(
- 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.7,
- 'text/plain' => 0.3
-) );
-is( $mime, 'text/html', 'Mime (1)' );
-
-$mime = mimeTypeMatch( 'text/html', array(
- 'image/*' => 1.0,
- 'text/*' => 0.5
-) );
-is( $mime, 'text/*', 'Mime (2)' );
-
-$mime = mimeTypeMatch( 'text/html', array( '*/*' => 1.0 ) );
-is( $mime, '*/*', 'Mime (3)' );
-
-$mime = mimeTypeMatch( 'text/html', array(
- 'image/png' => 1.0,
- 'image/svg+xml' => 0.5
-) );
-is( $mime, null, 'Mime (4)' );
-
-$mime = wfNegotiateType(
- array( 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.7,
- 'text/plain' => 0.5,
- 'text/*' => 0.2 ),
- array( 'text/html' => 1.0 ) );
-is( $mime, 'text/html', 'Negotiate Mime (1)' );
-
-$mime = wfNegotiateType(
- array( 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.7,
- 'text/plain' => 0.5,
- 'text/*' => 0.2 ),
- array( 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.5 ) );
-is( $mime, 'application/xhtml+xml', 'Negotiate Mime (2)' );
-
-$mime = wfNegotiateType(
- array( 'text/html' => 1.0,
- 'text/plain' => 0.5,
- 'text/*' => 0.5,
- 'application/xhtml+xml' => 0.2 ),
- array( 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.5 ) );
-is( $mime, 'text/html', 'Negotiate Mime (3)' );
-
-$mime = wfNegotiateType(
- array( 'text/*' => 1.0,
- 'image/*' => 0.7,
- '*/*' => 0.3 ),
- array( 'application/xhtml+xml' => 1.0,
- 'text/html' => 0.5 ) );
-is( $mime, 'text/html', 'Negotiate Mime (4)' );
-
-$mime = wfNegotiateType(
- array( 'text/*' => 1.0 ),
- array( 'application/xhtml+xml' => 1.0 ) );
-is( $mime, null, 'Negotiate Mime (5)' );
-
-$t = gmmktime( 12, 34, 56, 1, 15, 2001 );
-is( wfTimestamp( TS_MW, $t ), '20010115123456', 'TS_UNIX to TS_MW' );
-is( wfTimestamp( TS_UNIX, $t ), 979562096, 'TS_UNIX to TS_UNIX' );
-is( wfTimestamp( TS_DB, $t ), '2001-01-15 12:34:56', 'TS_UNIX to TS_DB' );
-$t = '20010115123456';
-is( wfTimestamp( TS_MW, $t ), '20010115123456', 'TS_MW to TS_MW' );
-is( wfTimestamp( TS_UNIX, $t ), 979562096, 'TS_MW to TS_UNIX' );
-is( wfTimestamp( TS_DB, $t ), '2001-01-15 12:34:56', 'TS_MW to TS_DB' );
-$t = '2001-01-15 12:34:56';
-is( wfTimestamp( TS_MW, $t ), '20010115123456', 'TS_DB to TS_MW' );
-is( wfTimestamp( TS_UNIX, $t ), 979562096, 'TS_DB to TS_UNIX' );
-is( wfTimestamp( TS_DB, $t ), '2001-01-15 12:34:56', 'TS_DB to TS_DB' );
-
-$sets = array(
- '' => '',
- '/' => '',
- '\\' => '',
- '//' => '',
- '\\\\' => '',
- 'a' => 'a',
- 'aaaa' => 'aaaa',
- '/a' => 'a',
- '\\a' => 'a',
- '/aaaa' => 'aaaa',
- '\\aaaa' => 'aaaa',
- '/aaaa/' => 'aaaa',
- '\\aaaa\\' => 'aaaa',
- '\\aaaa\\' => 'aaaa',
- '/mnt/upload3/wikipedia/en/thumb/8/8b/Zork_Grand_Inquisitor_box_cover.jpg/93px-Zork_Grand_Inquisitor_box_cover.jpg' => '93px-Zork_Grand_Inquisitor_box_cover.jpg',
- 'C:\\Progra~1\\Wikime~1\\Wikipe~1\\VIEWER.EXE' => 'VIEWER.EXE',
- 'Östergötland_coat_of_arms.png' => 'Östergötland_coat_of_arms.png',
-);
-foreach( $sets as $from => $to ) {
- is( $to, wfBaseName( $from ),
- "wfBaseName('$from') => '$to'");
-} \ No newline at end of file
diff --git a/t/inc/IP.t b/t/inc/IP.t
deleted file mode 100644
index eb717252..00000000
--- a/t/inc/IP.t
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-
-plan( 1120 );
-
-require_ok( 'includes/IP.php' );
-
-# some of this test data was taken from Data::Validate::IP
-
-#
-# isValid()
-#
-
-foreach ( range( 0, 255 ) as $i ) {
- $a = sprintf( "%03d", $i );
- $b = sprintf( "%02d", $i );
- $c = sprintf( "%01d", $i );
- foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
- $ip = "$f.$f.$f.$f";
- ok( IP::isValid( $ip ), "$ip is a valid IPv4 address" );
- }
-}
-
-# A bit excessive perhaps? meh..
-foreach ( range( 256, 999 ) as $i ) {
- $a = sprintf( "%03d", $i );
- $b = sprintf( "%02d", $i );
- $c = sprintf( "%01d", $i );
- foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
- $ip = "$f.$f.$f.$f";
- ok( ! IP::isValid( $ip ), "$ip is not a valid IPv4 address" );
- }
-}
-
-$invalid = array(
- 'www.xn--var-xla.net',
- '216.17.184.G',
- '216.17.184.1.',
- '216.17.184',
- '216.17.184.',
- '256.17.184.1'
-);
-
-foreach ( $invalid as $i ) {
- ok( ! IP::isValid( $i ), "$i is an invalid IPv4 address" );
-}
-
-#
-# isPublic()
-#
-
-$private = array( '10.0.0.1', '172.16.0.1', '192.168.0.1' );
-
-foreach ( $private as $p ) {
- ok( ! IP::isPublic( $p ), "$p is not a public IP address" );
-}
-
-/* vim: set filetype=php: */
diff --git a/t/inc/ImageFunctions.t b/t/inc/ImageFunctions.t
deleted file mode 100644
index 3a69bf77..00000000
--- a/t/inc/ImageFunctions.t
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-
-require 'includes/Defines.php';
-
-$vals = array(
- array(
- 'width' => 50,
- 'height' => 50,
- 'tests' => array(
- 50 => 50,
- 17 => 17,
- 18 => 18 ) ),
- array(
- 'width' => 366,
- 'height' => 300,
- 'tests' => array(
- 50 => 61,
- 17 => 21,
- 18 => 22 ) ),
- array(
- 'width' => 300,
- 'height' => 366,
- 'tests' => array(
- 50 => 41,
- 17 => 14,
- 18 => 15 ) ),
- array(
- 'width' => 100,
- 'height' => 400,
- 'tests' => array(
- 50 => 12,
- 17 => 4,
- 18 => 4 ) )
-);
-
-plan( 3 + 3 * count( $vals ) );
-
-require_ok( 'includes/ProfilerStub.php' );
-require_ok( 'includes/GlobalFunctions.php' );
-require_ok( 'includes/ImageFunctions.php' );
-
-foreach( $vals as $row ) {
- extract( $row );
- foreach( $tests as $max => $expected ) {
- $y = round( $expected * $height / $width );
- $result = wfFitBoxWidth( $width, $height, $max );
- $y2 = round( $result * $height / $width );
- is( $result, $expected,
- "($width, $height, $max) wanted: {$expected}x{$y}, got: {$result}x{$y2}" );
- }
-}
-
diff --git a/t/inc/Language.t b/t/inc/Language.t
deleted file mode 100644
index 125d67c1..00000000
--- a/t/inc/Language.t
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-
-# Test offset usage for a given language::userAdjust
-function test_userAdjust( &$langObj, $date, $offset, $expected ) {
- global $wgLocalTZoffset;
- $wgLocalTZoffset = $offset;
-
- cmp_ok(
- strval( $langObj->userAdjust( $date, '' ) ),
- '==',
- strval( $expected ),
- "User adjust {$date} by {$offset} minutes should give {$expected}"
- );
-}
-
-# Collection of parameters for Language_t_Offset.
-# Format: date to be formatted, localTZoffset value, expected date
-$userAdjust_tests = array(
- array( 20061231235959, 0, 20061231235959 ),
- array( 20061231235959, 5, 20070101000459 ),
- array( 20061231235959, 15, 20070101001459 ),
- array( 20061231235959, 60, 20070101005959 ),
- array( 20061231235959, 90, 20070101012959 ),
- array( 20061231235959, 120, 20070101015959 ),
- array( 20061231235959, 540, 20070101085959 ),
- array( 20061231235959, -5, 20061231235459 ),
- array( 20061231235959, -30, 20061231232959 ),
- array( 20061231235959, -60, 20061231225959 ),
-);
-
-plan( count($userAdjust_tests) );
-define( 'MEDIAWIKI', 1 );
-
-# Don't use require_ok as these files need global variables
-
-require 'includes/Defines.php';
-require 'includes/ProfilerStub.php';
-
-require 'LocalSettings.php';
-require 'includes/DefaultSettings.php';
-
-require 'includes/Setup.php';
-
-# Create a language object
-$wgContLang = $en = Language::factory( 'en' );
-
-global $wgUser;
-$wgUser = new User();
-
-# Launch tests for language::userAdjust
-foreach( $userAdjust_tests as $data ) {
- test_userAdjust( $en, $data[0], $data[1], $data[2] );
-}
-
-/* vim: set filetype=php: */
diff --git a/t/inc/Licenses.t b/t/inc/Licenses.t
deleted file mode 100644
index 81e7abe9..00000000
--- a/t/inc/Licenses.t
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env php
-<?php
-require 't/Test.php';
-
-plan(3);
-
-error_reporting( E_ALL );
-
-define( 'MEDIAWIKI', 1 ); // Hack
-
-require_ok( 'languages/Language.php' );
-require_ok( 'includes/GlobalFunctions.php' );
-require_ok( 'includes/Licenses.php' );
-
-$str = "
-* Free licenses:
-** GFLD|Debian disagrees
-";
-
-#$lc = new Licenses ( $str );
-
-#isa_ok( $lc, 'Licenses' );
-
-#echo $lc->html;
-
-/* vim: set filetype=php: */
diff --git a/t/inc/LocalFile.t b/t/inc/LocalFile.t
deleted file mode 100644
index 09df9e19..00000000
--- a/t/inc/LocalFile.t
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-
-require 'includes/Defines.php';
-require 'includes/ProfilerStub.php';
-require 'LocalSettings.php';
-require 'includes/Setup.php';
-
-/**
- * These tests should work regardless of $wgCapitalLinks
- */
-
-$info = array(
- 'name' => 'test',
- 'directory' => '/testdir',
- 'url' => '/testurl',
- 'hashLevels' => 2,
- 'transformVia404' => false,
-);
-
-plan( 35 );
-
-$repo_hl0 = new LocalRepo( array( 'hashLevels' => 0 ) + $info );
-$repo_hl2 = new LocalRepo( array( 'hashLevels' => 2 ) + $info );
-$repo_lc = new LocalRepo( array( 'initialCapital' => false ) + $info );
-
-$file_hl0 = $repo_hl0->newFile( 'test!' );
-$file_hl2 = $repo_hl2->newFile( 'test!' );
-$file_lc = $repo_lc->newFile( 'test!' );
-
-is( $file_hl0->getHashPath(), '', 'Get hash path, hasLev 0' );
-is( $file_hl2->getHashPath(), 'a/a2/', 'Get hash path, hasLev 2' );
-is( $file_lc->getHashPath(), 'c/c4/', 'Get hash path, lc first' );
-
-is( $file_hl0->getRel(), 'Test!', 'Get rel path, hasLev 0' );
-is( $file_hl2->getRel(), 'a/a2/Test!', 'Get rel path, hasLev 2' );
-is( $file_lc->getRel(), 'c/c4/test!', 'Get rel path, lc first' );
-
-is( $file_hl0->getUrlRel(), 'Test%21', 'Get rel url, hasLev 0' );
-is( $file_hl2->getUrlRel(), 'a/a2/Test%21', 'Get rel url, hasLev 2' );
-is( $file_lc->getUrlRel(), 'c/c4/test%21', 'Get rel url, lc first' );
-
-is( $file_hl0->getArchivePath(), '/testdir/archive', 'Get archive path, hasLev 0' );
-is( $file_hl2->getArchivePath(), '/testdir/archive/a/a2', 'Get archive path, hasLev 2' );
-is( $file_hl0->getArchivePath( '!' ), '/testdir/archive/!', 'Get archive path, hasLev 0' );
-is( $file_hl2->getArchivePath( '!' ), '/testdir/archive/a/a2/!', 'Get archive path, hasLev 2' );
-
-is( $file_hl0->getThumbPath(), '/testdir/thumb/Test!', 'Get thumb path, hasLev 0' );
-is( $file_hl2->getThumbPath(), '/testdir/thumb/a/a2/Test!', 'Get thumb path, hasLev 2' );
-is( $file_hl0->getThumbPath( 'x' ), '/testdir/thumb/Test!/x', 'Get thumb path, hasLev 0' );
-is( $file_hl2->getThumbPath( 'x' ), '/testdir/thumb/a/a2/Test!/x', 'Get thumb path, hasLev 2' );
-
-is( $file_hl0->getArchiveUrl(), '/testurl/archive', 'Get archive url, hasLev 0' );
-is( $file_hl2->getArchiveUrl(), '/testurl/archive/a/a2', 'Get archive url, hasLev 2' );
-is( $file_hl0->getArchiveUrl( '!' ), '/testurl/archive/%21', 'Get archive url, hasLev 0' );
-is( $file_hl2->getArchiveUrl( '!' ), '/testurl/archive/a/a2/%21', 'Get archive url, hasLev 2' );
-
-is( $file_hl0->getThumbUrl(), '/testurl/thumb/Test%21', 'Get thumb url, hasLev 0' );
-is( $file_hl2->getThumbUrl(), '/testurl/thumb/a/a2/Test%21', 'Get thumb url, hasLev 2' );
-is( $file_hl0->getThumbUrl( 'x' ), '/testurl/thumb/Test%21/x', 'Get thumb url, hasLev 0' );
-is( $file_hl2->getThumbUrl( 'x' ), '/testurl/thumb/a/a2/Test%21/x', 'Get thumb url, hasLev 2' );
-
-is( $file_hl0->getArchiveVirtualUrl(), 'mwrepo://test/public/archive', 'Get archive virtual url, hasLev 0' );
-is( $file_hl2->getArchiveVirtualUrl(), 'mwrepo://test/public/archive/a/a2', 'Get archive virtual url, hasLev 2' );
-is( $file_hl0->getArchiveVirtualUrl( '!' ), 'mwrepo://test/public/archive/%21', 'Get archive virtual url, hasLev 0' );
-is( $file_hl2->getArchiveVirtualUrl( '!' ), 'mwrepo://test/public/archive/a/a2/%21', 'Get archive virtual url, hasLev 2' );
-
-is( $file_hl0->getThumbVirtualUrl(), 'mwrepo://test/public/thumb/Test%21', 'Get thumb virtual url, hasLev 0' );
-is( $file_hl2->getThumbVirtualUrl(), 'mwrepo://test/public/thumb/a/a2/Test%21', 'Get thumb virtual url, hasLev 2' );
-is( $file_hl0->getThumbVirtualUrl( '!' ), 'mwrepo://test/public/thumb/Test%21/%21', 'Get thumb virtual url, hasLev 0' );
-is( $file_hl2->getThumbVirtualUrl( '!' ), 'mwrepo://test/public/thumb/a/a2/Test%21/%21', 'Get thumb virtual url, hasLev 2' );
-
-is( $file_hl0->getUrl(), '/testurl/Test%21', 'Get url, hasLev 0' );
-is( $file_hl2->getUrl(), '/testurl/a/a2/Test%21', 'Get url, hasLev 2' );
diff --git a/t/inc/Parser.t b/t/inc/Parser.t
deleted file mode 100644
index 9df21d9a..00000000
--- a/t/inc/Parser.t
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-require 'maintenance/parserTests.inc';
-
-error_reporting( E_ALL ^ E_NOTICE );
-
-class ProveTestRecorder extends TestRecorder {
-
- function record( $name, $res ){}
- function report(){}
- function reportPercentage( $success, $total ){}
-}
-
-class ProveParserTest extends ParserTest {
-
- function showSuccess( $desc ){
- pass( $desc );
- }
-
- function showFailure( $desc, $exp, $got ){
- _proclaim( false, $desc, false, $got, $exp );
- }
-
- function showRunFile( $path ){}
-}
-
-$options = array( 'quick', 'quiet', 'compare' );
-$tester = new ProveParserTest();
-$tester->showProgress = false;
-$tester->showFailure = false;
-$tester->recorder = new ProveTestRecorder( $tester->term );
-
-// Do not output the number of tests, if will be done automatically at the end
-
-$tester->runTestsFromFiles( $wgParserTestFiles );
-
-/* vim: set filetype=php: */
diff --git a/t/inc/Revision.t b/t/inc/Revision.t
deleted file mode 100644
index a6f2849b..00000000
--- a/t/inc/Revision.t
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-define( 'MEDIAWIKI', true );
-require 't/Test.php';
-
-plan( 19 );
-
-require_ok( 'includes/Defines.php' );
-require_ok( 'includes/ProfilerStub.php' );
-require_ok( 'includes/GlobalFunctions.php' );
-require_ok( 'languages/Language.php' );
-require_ok( 'includes/Revision.php' );
-
-$wgContLang = Language::factory( 'en' );
-$wgLegacyEncoding = false;
-$wgCompressRevisions = false;
-$wgInputEncoding = 'utf-8';
-$wgOutputEncoding = 'utf-8';
-
-$row = new stdClass;
-$row->old_flags = '';
-$row->old_text = 'This is a bunch of revision text.';
-cmp_ok( Revision::getRevisionText( $row ), '==',
- 'This is a bunch of revision text.', 'Get revision text' );
-
-$row = new stdClass;
-$row->old_flags = 'gzip';
-$row->old_text = gzdeflate( 'This is a bunch of revision text.' );
-cmp_ok( Revision::getRevisionText( $row ), '==',
- 'This is a bunch of revision text.', 'Get revision text with gzip compression' );
-
-$wgLegacyEncoding = 'iso-8859-1';
-
-$row = new stdClass;
-$row->old_flags = 'utf-8';
-$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native' );
-
-$row = new stdClass;
-$row->old_flags = '';
-$row->old_text = "Wiki est l'\xe9cole superieur !";
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 legacy' );
-
-$row = new stdClass;
-$row->old_flags = 'gzip,utf-8';
-$row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native and gzip' );
-
-$row = new stdClass;
-$row->old_flags = 'gzip';
-$row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native and gzip' );
-
-$row = new stdClass;
-$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
-$row->old_flags = Revision::compressRevisionText( $row->old_text );
-like( $row->old_flags, '/utf-8/', "Flags should contain 'utf-8'" );
-unlike( $row->old_flags, '/gzip/', "Flags should not contain 'gzip'" );
-cmp_ok( $row->old_text, '==',
- "Wiki est l'\xc3\xa9cole superieur !", "Direct check" );
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", "getRevisionText" );
-
-$wgCompressRevisions = true;
-
-$row = new stdClass;
-$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
-$row->old_flags = Revision::compressRevisionText( $row->old_text );
-like( $row->old_flags, '/utf-8/', "Flags should contain 'utf-8'" );
-like( $row->old_flags, '/gzip/', "Flags should contain 'gzip'" );
-cmp_ok( gzinflate( $row->old_text ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", "Direct check" );
-cmp_ok( Revision::getRevisionText( $row ), '==',
- "Wiki est l'\xc3\xa9cole superieur !", "getRevisionText" );
diff --git a/t/inc/Sanitizer.t b/t/inc/Sanitizer.t
deleted file mode 100644
index ae2c9a23..00000000
--- a/t/inc/Sanitizer.t
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-
-plan( 13 );
-
-define( 'MEDIAWIKI', 1 );
-require_ok( 'includes/Defines.php' );
-require_ok( 'includes/GlobalFunctions.php' );
-require_ok( 'includes/Sanitizer.php' );
-require_ok( 'includes/normal/UtfNormal.php' );
-require_ok( 'includes/ProfilerStub.php' ); # For removeHTMLtags
-
-
-#
-# decodeCharReferences
-#
-
-cmp_ok(
- Sanitizer::decodeCharReferences( '&eacute;cole' ),
- '==',
- "\xc3\xa9cole",
- 'decode named entities'
-);
-
-cmp_ok(
- Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
- '==',
- "\xc4\x88io bonas dans l'\xc3\xa9cole!",
- 'decode numeric entities'
-);
-
-cmp_ok(
- Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
- '==',
- "\xc4\x88io bonas dans l'\xc3\xa9cole!",
- 'decode mixed numeric/named entities'
-);
-
-cmp_ok(
- Sanitizer::decodeCharReferences(
- "&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
- ),
- '==',
- "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
- 'decode mixed complex entities'
-);
-
-cmp_ok( Sanitizer::decodeCharReferences( 'a & b' ), '==', 'a & b', 'Invalid ampersand' );
-
-cmp_ok( Sanitizer::decodeCharReferences( '&foo;' ), '==', '&foo;', 'Invalid named entity' );
-
-cmp_ok( Sanitizer::decodeCharReferences( "&#88888888888888;" ), '==', UTF8_REPLACEMENT, 'Invalid numbered entity' );
-
-$wgUseTidy = false;
-cmp_ok(
- Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
- '==',
- '<div>Hello world</div>',
- 'Self-closing closing div'
-);
-
-/* vim: set filetype=php: */
diff --git a/t/inc/Search.t b/t/inc/Search.t
deleted file mode 100644
index 2f06dcd9..00000000
--- a/t/inc/Search.t
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Search.inc';
-
-$db = buildTestDatabase( array( 'page', 'revision', 'text', 'searchindex' ) );
-if( is_null( $db ) ){
- fail( 'no db' );
- exit();
-}
-$t = new SearchEngineTest( new SearchMySQL( $db ) );
-$t->run();
-
-/* vim: set filetype=php: */
diff --git a/t/inc/Title.t b/t/inc/Title.t
deleted file mode 100644
index 7373b9f2..00000000
--- a/t/inc/Title.t
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-
-plan( 2 + 255 );
-
-require_ok( 'includes/Defines.php' );
-
-# require_ok() doesn't work for these, find out why
-define( 'MEDIAWIKI', 1 );
-require 'LocalSettings.php';
-require 'includes/DefaultSettings.php';
-
-require_ok( 'includes/Title.php' );
-
-#
-# legalChars()
-#
-
-$titlechars = Title::legalChars();
-
-foreach ( range( 1, 255 ) as $num ) {
- $chr = chr( $num );
- if ( strpos( "#[]{}<>|", $chr ) !== false || preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
- unlike( $chr, "/[$titlechars]/", "chr($num) = $chr is not a valid titlechar" );
- } else {
- like( $chr, "/[$titlechars]/", "chr($num) = $chr is a valid titlechar" );
- }
-}
-
-/* vim: set filetype=php: */
diff --git a/t/inc/Xml.t b/t/inc/Xml.t
deleted file mode 100644
index b7cef881..00000000
--- a/t/inc/Xml.t
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require 't/Test.php';
-
-plan( 8 );
-
-require_ok( 'includes/Sanitizer.php' );
-require_ok( 'includes/Xml.php' );
-
-#
-# element
-#
-
-cmp_ok(
- Xml::element( 'element', null, null ),
- '==',
- '<element>',
- 'Opening element with no attributes'
-);
-
-cmp_ok(
- Xml::element( 'element', null, '' ),
- '==',
- '<element />',
- 'Terminated empty element'
-);
-
-cmp_ok(
- Xml::element( 'element', null, 'hello <there> you & you' ),
- '==',
- '<element>hello &lt;there&gt; you &amp; you</element>',
- 'Element with no attributes and content that needs escaping'
-);
-
-cmp_ok(
- Xml::element( 'element', array( 'key' => 'value', '<>' => '<>' ), null ),
- '==',
- '<element key="value" <>="&lt;&gt;">',
- 'Element attributes, keys are not escaped'
-);
-
-#
-# open/close element
-#
-
-cmp_ok(
- Xml::openElement( 'element', array( 'k' => 'v' ) ),
- '==',
- '<element k="v">',
- 'openElement() shortcut'
-);
-
-cmp_ok( Xml::closeElement( 'element' ), '==', '</element>', 'closeElement() shortcut' );
-
-/* vim: set filetype=php: */
diff --git a/t/maint/bom.t b/t/maint/bom.t
deleted file mode 100644
index b5e6ae98..00000000
--- a/t/maint/bom.t
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env perl
-#
-# This test detect Byte Order Mark (BOM). The char is sometime included at the
-# top of files by some text editors to mark them as being UTF-8 encoded.
-# They are not stripped by php 5.x and appear at the beginning of our content,
-# You want them removed!
-# See:
-# http://www.fileformat.info/info/unicode/char/feff/index.htm
-# http://bugzilla.wikimedia.org/show_bug.cgi?id=9954
-
-use strict;
-use warnings;
-
-use Test::More;
-
-use File::Find;
-
-# Files for wich we want to check the BOM char ( 0xFE 0XFF )
-my $ext = qr/(?:php|inc)/x ;
-
-my $bomchar = qr/\xef\xbb\xbf/ ;
-
-my @files;
-
-find( sub{ push @files, $File::Find::name if -f && /\.$ext$/ }, '.' );
-
-# Register our files with the test system
-plan tests => scalar @files ;
-
-for my $file (@files) {
- open my $fh, "<", $file or die "Couln't open $file: $!";
- my $line = <$fh>;
- if( $line =~ /$bomchar/ ) {
- fail "$file has a Byte Order Mark at line $.";
- } else {
- pass "$file has no Byte Order Mark!";
- }
-}
diff --git a/t/maint/eol-style.t b/t/maint/eol-style.t
deleted file mode 100644
index 2e281dc4..00000000
--- a/t/maint/eol-style.t
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env perl
-#
-# Based on php-tag.t
-#
-use strict;
-use warnings;
-
-use Test::More;
-use File::Find;
-use IPC::Open3;
-use File::Spec;
-use Symbol qw(gensym);
-
-my $ext = qr/(?: php | inc | txt | sql | t)/x;
-my @files;
-
-find( sub { push @files, $File::Find::name if -f && /\. $ext $/x }, '.' );
-
-plan tests => scalar @files ;
-
-for my $file (@files) {
- open NULL, '+>', File::Spec->devnull and \*NULL or die;
- my $pid = open3('<&NULL', \*P, '>&NULL', qw'svn propget svn:eol-style', $file);
- my $res = do { local $/; <P> . "" };
- chomp $res;
- waitpid $pid, 0;
-
- if ( $? != 0 ) {
- pass "svn propget failed, $file probably not under version control";
- } elsif ( $res eq 'native' ) {
- pass "$file svn:eol-style is 'native'";
- } else {
- fail "$file svn:eol-style is '$res', should be 'native'";
- }
-}
diff --git a/t/maint/php-lint.t b/t/maint/php-lint.t
deleted file mode 100644
index 6687a089..00000000
--- a/t/maint/php-lint.t
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env perl
-#
-# Based on php-tag.t and eol-style
-#
-use strict;
-use warnings;
-
-use Test::More;
-use File::Find;
-use IPC::Open3;
-use File::Spec;
-use Symbol qw(gensym);
-
-my $ext = qr/(?: php | inc )/x;
-my @files;
-
-find( sub { push @files, $File::Find::name if -f && /\. $ext $/x }, '.' );
-
-plan tests => scalar @files ;
-
-for my $file (@files) {
- open NULL, '+>', File::Spec->devnull and \*NULL or die;
- my $pid = open3('<&NULL', \*P, '>&NULL', qw'php -l', $file);
- my $res = do { local $/; <P> . "" };
- chomp $res;
- waitpid $pid, 0;
-
- if ( $? == 0 ) {
- pass($file);
- } else {
- fail("$file does not pass php -l. Error was: $res");
- }
-}
diff --git a/t/maint/php-tag.t b/t/maint/php-tag.t
deleted file mode 100644
index 5093ca7f..00000000
--- a/t/maint/php-tag.t
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env perl
-use strict;
-use warnings;
-
-use Test::More;;
-
-use File::Find;
-use File::Slurp qw< slurp >;
-
-my $ext = qr/(?: php | inc )/x;
-
-my @files;
-find( sub { push @files, $File::Find::name if -f && /\. $ext $/x }, '.' );
-
-plan tests => scalar @files;
-
-for my $file (@files) {
- my $cont = slurp $file;
- if ( $cont =~ m<<\?php .* \?>>xs ) {
- pass "$file has <?php ?>";
- } elsif ( $cont =~ m<<\? .* \?>>xs ) {
- fail "$file does not use <? ?>";
- } else {
- pass "$file has neither <?php ?> nor <? ?>, check it";
- }
-}
-
-
-
diff --git a/t/maint/unix-newlines.t b/t/maint/unix-newlines.t
deleted file mode 100644
index c47dd17c..00000000
--- a/t/maint/unix-newlines.t
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env perl
-use strict;
-use warnings;
-
-use Test::More;;
-
-use File::Find;
-use Socket '$CRLF';
-
-my $ext = qr/(?: t | pm | sql | js | php | inc | xml )/x;
-
-my @files;
-find( sub { push @files, $File::Find::name if -f && /\. $ext $/x }, '.' );
-
-plan 'no_plan';
-
-for my $file (@files) {
- open my $fh, "<", $file or die "Can't open $file: $!";
- binmode $fh;
-
- my $ok = 1;
- while (<$fh>) {
- if (/$CRLF/) {
- fail "$file has \\r\\n on line $.";
- $ok = 0;
- }
- }
-
- pass "$file has only unix newlines" if $ok;
-}
-
-
-
diff --git a/tests/.htaccess b/tests/.htaccess
deleted file mode 100644
index 3a428827..00000000
--- a/tests/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-Deny from all
diff --git a/tests/Makefile b/tests/Makefile
deleted file mode 100644
index 25ccda35..00000000
--- a/tests/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-.PHONY: help test
-all test:
- php run-test.php ArticleTest.php
- php run-test.php GlobalTest.php
- php run-test.php DatabaseTest.php
- php run-test.php ImageFunctionsTest.php
- php run-test.php SearchMySQL4Test.php
-install:
- cvs -z9 -d:pserver:cvsread:@cvs.php.net:/repository/ co -P pear/PHPUnit
- mv pear/PHPUnit .
- rm -rf pear
-clean:
- rm -rf PHPUnit pear
-help:
- # Options:
- # test (default) Run the unit tests
- # install Install PHPUnit from CVS
- # clean Remove local PHPUnit install
- # help You're looking at it!
diff --git a/tests/MediaWiki_TestCase.php b/tests/MediaWiki_TestCase.php
deleted file mode 100644
index 387fe011..00000000
--- a/tests/MediaWiki_TestCase.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-abstract class MediaWiki_TestCase extends PHPUnit_Framework_TestCase {
- /**
- * @param string $serverType
- * @param array $tables
- */
- protected function buildTestDatabase( $tables ) {
- global $testOptions, $wgDBprefix, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
- $wgDBprefix = 'parsertest_';
- $db = new Database(
- $wgDBserver,
- $wgDBadminuser,
- $wgDBadminpassword,
- $wgDBname );
- if( $db->isOpen() ) {
- if (!(strcmp($db->getServerVersion(), '4.1') < 0 and stristr($db->getSoftwareLink(), 'MySQL'))) {
- # Database that supports CREATE TABLE ... LIKE
- foreach ($tables as $tbl) {
- $newTableName = $db->tableName( $tbl );
- #$tableName = $this->oldTableNames[$tbl];
- $tableName = $tbl;
- $db->query("CREATE TEMPORARY TABLE $newTableName (LIKE $tableName)");
- }
- } else {
- # Hack for MySQL versions < 4.1, which don't support
- # "CREATE TABLE ... LIKE". Note that
- # "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
- # would not create the indexes we need....
- foreach ($tables as $tbl) {
- $res = $db->query("SHOW CREATE TABLE $tbl");
- $row = $db->fetchRow($res);
- $create = $row[1];
- $create_tmp = preg_replace('/CREATE TABLE `(.*?)`/', 'CREATE TEMPORARY TABLE `'
- . $wgDBprefix . '\\1`', $create);
- if ($create === $create_tmp) {
- # Couldn't do replacement
- wfDie( "could not create temporary table $tbl" );
- }
- $db->query($create_tmp);
- }
-
- }
- return $db;
- } else {
- // Something amiss
- return null;
- }
- }
-}
-
diff --git a/tests/README b/tests/README
deleted file mode 100644
index 3bbf9704..00000000
--- a/tests/README
+++ /dev/null
@@ -1,9 +0,0 @@
-Some quickie unit tests done with the PHPUnit testing framework. To run the
-test suite, run 'make test' in this dir or 'php RunTests.php'
-
-PHPUnit is no longer maintained by PEAR. To get the current version of
-PHPUnit, first uninstall any old version of PHPUnit or PHPUnit2 from PEAR,
-then install the current version from phpunit.de like this:
-
-# pear channel-discover pear.phpunit.de
-# pear install phpunit/PHPUnit
diff --git a/tests/run-test.php b/tests/run-test.php
deleted file mode 100644
index 37ca8519..00000000
--- a/tests/run-test.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-require_once( dirname(__FILE__) . '/../maintenance/commandLine.inc' );
-ini_set( 'include_path', get_include_path() . PATH_SEPARATOR . /*$_SERVER['PHP_PEAR_INSTALL_DIR']*/ 'C:\php\pear' );
-require( 'PHPUnit/TextUI/Command.php' );
-
-
diff --git a/wiki.phtml b/wiki.phtml
index 5f6b0199..435dff0e 100644
--- a/wiki.phtml
+++ b/wiki.phtml
@@ -1,4 +1,3 @@
<?php
// stub file for compatibility with older versions
include_once('./index.php');
-?> \ No newline at end of file